diff --git a/build/css/dark.css b/build/css/dark.css index 21aa1f1..d9f7178 100644 --- a/build/css/dark.css +++ b/build/css/dark.css @@ -1,3 +1,3 @@ -/* Numara Calculator 5.7.0 */ +/* Numara Calculator 5.7.1 */ html,body{background-color:#1f1f1f}::-webkit-scrollbar,::-webkit-scrollbar-track,::-webkit-scrollbar-corner{background-color:transparent}::-webkit-scrollbar-thumb{background-color:#333}::-webkit-scrollbar-thumb:hover{background-color:#444}.header-win-title,.header-mac-title{color:#e6e6e6}.min-btn-win:hover,.max-btn-win:hover,.unmax-btn-win:hover{background-color:#333}.min-btn-win{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTIgMTAiIGZpbGw9InJnYigyNTUsIDI1NSwgMjU1KSIgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xMSA0LjM5OVY1LjVIMFY0LjM5OWgxMXoiIC8+PC9zdmc+)}.max-btn-win{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTIgMTIiIGZpbGw9InJnYigyNTUsIDI1NSwgMjU1KSIgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xMSAwdjExSDBWMGgxMXpNOS44OTkgMS4xMDFIMS4xVjkuOWg4LjhWMS4xeiIgLz48L3N2Zz4=)}.unmax-btn-win{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTIgMTIiIGZpbGw9InJnYigyNTUsIDI1NSwgMjU1KSIgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xMSA4Ljc5OEg4Ljc5OFYxMUgwVjIuMjAyaDIuMjAyVjBIMTF2OC43OTh6bS0zLjI5OC01LjVoLTYuNnY2LjZoNi42di02LjZ6TTkuOSAxLjFIMy4yOTh2MS4xMDFoNS41djUuNWgxLjF2LTYuNnoiIC8+PC9zdmc+)}.close-btn-win{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTIgMTIiIGZpbGw9InJnYigyNTUsIDI1NSwgMjU1KSIgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik02LjI3OSA1LjVMMTEgMTAuMjIxbC0uNzc5Ljc3OUw1LjUgNi4yNzkuNzc5IDExIDAgMTAuMjIxIDQuNzIxIDUuNSAwIC43NzkuNzc5IDAgNS41IDQuNzIxIDEwLjIyMSAwIDExIC43NzkgNi4yNzkgNS41eiIgLz48L3N2Zz4=)}.lineNo{color:#616161}.activeLine>div{color:#bebebe}.input{color:#e6e6e6}.ruler{border-bottom:1px solid #303030}.errTitle{color:#d41111}.msgBox{color:#58a1c5}.divider:before{background-color:#3b3b3b!important}.divider:hover:before{background-color:#405062!important}.output>span::selection{background-color:#151515fa!important}.answer:hover{background:#0a0a0a}.action,.noAction,.noAction:hover{color:#7b9dc5}.actionDivider{border-right:1px solid #3b3b3b}.pageName{color:#627d9c}.pageListHeader{border-bottom:1px solid #181818}.pageListItem{border-bottom:1px solid #181818;background-color:#222;color:#e6e6e6}.pageListItemDrag{border:1px solid #181818;background-color:#222}.pageListItem:hover,.activePage{background-color:#333}.drop-parent-icon,.pageListSort{color:#7b9dc5}.drop-parent-icon:hover,.pageListSort:hover{color:#0f6ecd}.uk-dropdown{background:#000;color:inherit}.deletePageButton{color:#e6e6e6}.deletePageButton:hover{color:#d41111}.deleteAllPagesButton:hover{color:#d41111!important}.renamePageButton:hover,.dupPageButton:hover,.sortListItem:hover{color:#2196f3}.sortListDivider{border-top-color:#444!important}.dialog-about-title{color:#e6e6e6}.dialog-about-links{border-top:1px solid #333333}.dialog-about-updateStatus{color:#999}#dialog-settings h3{color:#a0d3ff}#dialog-settings .settingMod,#dialog-settings .settingModToggle{color:#dd9359}.precision,.expLower,.expUpper{border:1px solid #333333;color:#e6e6e6}.subSwitchIcon{color:#bbb}.textBox{border:1px solid #666666;color:#eaeaea}.slider:before{background-color:#222}.lastUpdated{color:#999}.origin{stroke:#f9f9f9}text{fill:#e6e6e6}line{opacity:.5}.domain{stroke:#333;opacity:1}.syntaxError{color:#d41111}.uk-text-secondary{color:#a0d3ff!important}.uk-modal{background-color:#000c}.uk-modal-dialog{background-color:#1f1f1f}.uk-modal-body{color:#e6e6e6}.uk-modal-title{color:#b2cfdd}.uk-select:not([multiple]):not([size]){border-color:#333;background-color:#1f1f1f;color:#e6e6e6}.uk-select:not([multiple]):not([size]) option{color:#e6e6e6}.uk-button-default{border-color:#333;background-color:#333}.uk-button-default:focus,.uk-button-default:hover{border-color:#393e44;background-color:#333}.uk-button-danger,.uk-button-danger:focus{border-color:#333;background-color:#333;color:#f0506e}.uk-button-danger:hover{border-color:#bd2e2e4d;background-color:#333;color:#ff7373}.uk-button-danger:disabled{border-color:#333}.uk-button-danger:disabled:hover{border-color:#333;background-color:transparent;color:#999}.uk-tab>*>a{color:#666}.uk-tab>*>a:hover{color:#777}.uk-tab>.uk-active>a{color:#b2cfdd}.uk-notification-message{border:1px solid #333333;background-color:#252525}.uk-notification-message-primary{color:#2196f3}.uk-tooltip{background-color:#000}.uk-offcanvas-bar{border-right:1px solid #181818}.uk-offcanvas-bar a{color:#7b9dc5}.uk-offcanvas-bar a:hover{color:#0f6ecd}.cm-s-numara{color:#e6e6e6!important}.CodeMirror-cursor:before{background:#e6e6e6}.cm-s-numara .CodeMirror-selected{background:#193552!important}.cm-s-numara .CodeMirror-linenumber,.cm-s-numara .CodeMirror-hscrollbar,.cm-s-numara .CodeMirror-scrollbar-filler,.cm-s-numara .CodeMirror-gutter-filler{background-color:#1f1f1f!important}.cm-s-numara .CodeMirror-dialog-top{border-color:#666;background-color:#1f1f1f!important;color:#e6e6e6!important}.cm-s-numara button{color:#e6e6e6!important}.cm-s-numara .CodeMirror-matchingbracket{color:#999!important}.CodeMirror-hints{border-color:#222!important;background-color:#333!important}.CodeMirror-hint:hover,li.CodeMirror-hint-active{background-color:#222!important}.CodeMirror-placeholder{color:#444!important}.CodeMirror-linenumber{color:#666}.CodeMirror.cm-s-material-darker,.clr-field button,.colorInput{border:1px solid #666666}.colorInput{color:#e6e6e6}.clr-picker,input.clr-color{background:#333;color:#e6e6e6}.clr-preview button{border:1px solid #ffffff} diff --git a/build/css/light.css b/build/css/light.css index 433bc6e..584cff6 100644 --- a/build/css/light.css +++ b/build/css/light.css @@ -1,3 +1,3 @@ -/* Numara Calculator 5.7.0 */ +/* Numara Calculator 5.7.1 */ html,body{background-color:#fff;color:#444}::-webkit-scrollbar,::-webkit-scrollbar-track,::-webkit-scrollbar-corner{background-color:transparent}::-webkit-scrollbar-thumb{background-color:#eaeaea}::-webkit-scrollbar-thumb:hover{background-color:#dadada}.header-win-title,.header-mac-title{color:#384859}.min-btn-win:hover,.max-btn-win:hover,.unmax-btn-win:hover{background-color:#eee}.min-btn-win{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTIgMTAiIGZpbGw9InJnYig2OCwgNjgsIDY4KSIgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xMSA0LjM5OVY1LjVIMFY0LjM5OWgxMXoiIC8+PC9zdmc+)}.max-btn-win{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTIgMTIiIGZpbGw9InJnYig2OCwgNjgsIDY4KSIgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xMSAwdjExSDBWMGgxMXpNOS44OTkgMS4xMDFIMS4xVjkuOWg4LjhWMS4xeiIgLz48L3N2Zz4=)}.unmax-btn-win{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTIgMTIiIGZpbGw9InJnYig2OCwgNjgsIDY4KSIgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xMSA4Ljc5OEg4Ljc5OFYxMUgwVjIuMjAyaDIuMjAyVjBIMTF2OC43OTh6bS0zLjI5OC01LjVoLTYuNnY2LjZoNi42di02LjZ6TTkuOSAxLjFIMy4yOTh2MS4xMDFoNS41djUuNWgxLjF2LTYuNnoiIC8+PC9zdmc+)}.close-btn-win{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTIgMTIiIGZpbGw9InJnYig2OCwgNjgsIDY4KSIgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik02LjI3OSA1LjVMMTEgMTAuMjIxbC0uNzc5Ljc3OUw1LjUgNi4yNzkuNzc5IDExIDAgMTAuMjIxIDQuNzIxIDUuNSAwIC43NzkuNzc5IDAgNS41IDQuNzIxIDEwLjIyMSAwIDExIC43NzkgNi4yNzkgNS41eiIgLz48L3N2Zz4=)}.lineNo{color:#c8c8c8}.activeLine>div{color:#7a7a7a}.input{color:#444}.ruler{border-bottom:1px solid #f1f1f1}.errTitle,.syntaxError{color:#b10e0e}.msgBox{color:#069}.divider:before{background-color:#eaeaea!important}.divider:hover:before{background-color:#b7d5e6!important}.output>span::selection{background-color:#e7f3fffa!important;color:inherit}.answer:hover{background:#f5f5f5}.action,.noAction,.noAction:hover{color:#607d8b}.actionDivider{border-right:1px solid #eaeaea}.pageName{color:#687e89}.pageListHeader,.pageListItem{border-bottom:1px solid #eaeaea;background-color:#fff}.pageListItemDrag{border:1px solid #eaeaea}.pageListItem:hover{background-color:#f9f9f9}.activePage{background-color:#f5f5f5}.drop-parent-icon,.pageListSort{color:#607d8b}.drop-parent-icon:hover,.pageListSort:hover{color:#4682b4}.deletePageButton{color:#666}.deletePageButton:hover{color:#b10e0e}.deleteAllPagesButton:hover{color:#b10e0e!important}.renamePageButton:hover,.dupPageButton:hover,.sortListItem:hover{color:#005cc5}.sortListDivider{border-top-color:#eaeaea!important}.dialog-about-title{color:#162e44}.dialog-about-links{border-top:1px solid #eaeaea}.dialog-about-updateStatus{color:#666}#dialog-settings h3{color:#1d3f5c}#dialog-settings .settingMod,#dialog-settings .settingModToggle{color:#dd9359}.precision,.expLower,.expUpper{border:1px solid #e5e5e5;color:#333}.subSwitchIcon{color:#999}.textBox{color:#666}.slider:before{background-color:#fff}.slider.round:before{background-color:#fff}.lastUpdated{color:#999}text{fill:#444}.uk-text-secondary{color:#1d3f5c!important}.uk-modal{background-color:#0009}.uk-button-default{border-color:#c9dcef}.uk-button-default:focus,.uk-button-default:hover{border-color:#8eb3d8}.uk-button-danger,.uk-button-danger:focus{border-color:#c9dcef;background-color:#fff;color:#bd2e2e}.uk-button-danger:hover{border-color:#bd2e2e;background-color:#fff;color:#bd2e2e}.uk-button-danger:active{background-color:#fff}.uk-button-danger:disabled:hover{border-color:#e5e5e5;background-color:transparent;color:#999}.uk-select{color:#444}.uk-notification-message{border:1px solid #efefef}.uk-notification-message-primary{color:#2196f3}.uk-tooltip{background-color:#eaeaea;color:#000}.uk-offcanvas-bar{border-right:1px solid #eaeaea;background:#fff;color:#333}.uk-offcanvas-bar a{color:#607d8b}.uk-offcanvas-bar a:hover{color:#0f6ecd}.uk-offcanvas-bar .uk-close{color:#333}.uk-offcanvas-bar .uk-close:hover{color:#4682b4}.CodeMirror-linenumber{color:#ccc}.CodeMirror-cursor:before{background:#000}.cm-s-numara .CodeMirror-selected{background:#c9e0f7!important}.cm-s-numara .CodeMirror-linenumber,.cm-s-numara .CodeMirror-hscrollbar,.cm-s-numara .CodeMirror-scrollbar-filler,.cm-s-numara .CodeMirror-gutter-filler,.cm-s-numara .CodeMirror-dialog-top{background-color:#fff!important}.cm-s-numara .CodeMirror-matchingbracket{color:#999!important}.CodeMirror-hint:hover{background-color:#eaeaea!important;color:#162e44!important}li.CodeMirror-hint-active{background-color:#eaeaea;color:initial!important}.CodeMirror-placeholder{color:#eaeaea!important}.dialog-udfu .CodeMirror{border:1px solid #eaeaea!important}.cm-s-default,.clr-field button,.colorInput{border:1px solid #eaeaea}.colorInput{color:#333} diff --git a/build/css/numara.css b/build/css/numara.css index 37221ec..fa69bda 100644 --- a/build/css/numara.css +++ b/build/css/numara.css @@ -1,8 +1,8 @@ -/* Numara Calculator 5.7.0 */ +/* Numara Calculator 5.7.1 */ -html{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-size:16px;font-weight:400;line-height:1.5;-webkit-text-size-adjust:100%;background:#fff;color:#666}body{margin:0}.uk-link,a{color:#1e87f0;text-decoration:none;cursor:pointer}.uk-link-toggle:hover .uk-link,.uk-link:hover,a:hover{color:#0f6ecd;text-decoration:underline}abbr[title]{text-decoration:underline dotted;-webkit-text-decoration-style:dotted}b,strong{font-weight:bolder}:not(pre)>code,:not(pre)>kbd,:not(pre)>samp{font-family:Consolas,monaco,monospace;font-size:.875rem;color:#f0506e;white-space:nowrap;padding:2px 6px;background:#f8f8f8}em{color:#f0506e}ins{background:#ffd;color:#666;text-decoration:none}mark{background:#ffd;color:#666}q{font-style:italic}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}audio,canvas,iframe,img,svg,video{vertical-align:middle}canvas,img,svg,video{max-width:100%;height:auto;box-sizing:border-box}img:not([src]){visibility:hidden;min-width:1px}iframe{border:0}address,dl,fieldset,figure,ol,p,pre,ul{margin:0 0 20px}*+address,*+dl,*+fieldset,*+figure,*+ol,*+p,*+pre,*+ul{margin-top:20px}.uk-h1,.uk-h2,.uk-h3,.uk-h4,.uk-h5,.uk-h6,.uk-heading-2xlarge,.uk-heading-3xlarge,.uk-heading-large,.uk-heading-medium,.uk-heading-small,.uk-heading-xlarge,h1,h2,h3,h4,h5,h6{margin:0 0 20px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-weight:400;color:#333;text-transform:none}*+.uk-h1,*+.uk-h2,*+.uk-h3,*+.uk-h4,*+.uk-h5,*+.uk-h6,*+.uk-heading-2xlarge,*+.uk-heading-3xlarge,*+.uk-heading-large,*+.uk-heading-medium,*+.uk-heading-small,*+.uk-heading-xlarge,*+h1,*+h2,*+h3,*+h4,*+h5,*+h6{margin-top:40px}.uk-h1,h1{font-size:2.23125rem;line-height:1.2}.uk-h2,h2{font-size:1.7rem;line-height:1.3}.uk-h3,h3{font-size:1.5rem;line-height:1.4}.uk-h4,h4{font-size:1.25rem;line-height:1.4}.uk-h5,h5{font-size:16px;line-height:1.4}.uk-h6,h6{font-size:.875rem;line-height:1.4}@media (min-width:960px){.uk-h1,h1{font-size:2.625rem}.uk-h2,h2{font-size:2rem}}ol,ul{padding-left:30px}ol>li>ol,ol>li>ul,ul>li>ol,ul>li>ul{margin:0}dt{font-weight:700}dd{margin-left:0}.uk-hr,hr{overflow:visible;text-align:inherit;margin:0 0 20px;border:0;border-top:1px solid #e5e5e5}*+.uk-hr,*+hr{margin-top:20px}address{font-style:normal}blockquote{margin:0 0 20px;font-size:1.25rem;line-height:1.5;font-style:italic;color:#333}*+blockquote{margin-top:20px}blockquote p:last-of-type{margin-bottom:0}blockquote footer{margin-top:10px;font-size:.875rem;line-height:1.5;color:#666}blockquote footer:before{content:"\2014 "}pre{font:.875rem/1.5 Consolas,monaco,monospace;color:#666;-moz-tab-size:4;tab-size:4;overflow:auto;padding:10px;border:1px solid #e5e5e5;border-radius:3px;background:#fff}pre code{font-family:Consolas,monaco,monospace}:focus{outline:0}:focus-visible{outline:2px dotted #333}::selection{background:#39f;color:#fff;text-shadow:none}details,main{display:block}summary{display:list-item}template{display:none}:root{--uk-breakpoint-s:640px;--uk-breakpoint-m:960px;--uk-breakpoint-l:1200px;--uk-breakpoint-xl:1600px}.uk-link-muted a,.uk-link-toggle .uk-link-muted,a.uk-link-muted{color:#999}.uk-link-muted a:hover,.uk-link-toggle:hover .uk-link-muted,a.uk-link-muted:hover{color:#666}.uk-link-text a,.uk-link-toggle .uk-link-text,a.uk-link-text{color:inherit}.uk-link-text a:hover,.uk-link-toggle:hover .uk-link-text,a.uk-link-text:hover{color:#999}.uk-link-heading a,.uk-link-toggle .uk-link-heading,a.uk-link-heading{color:inherit}.uk-link-heading a:hover,.uk-link-toggle:hover .uk-link-heading,a.uk-link-heading:hover{color:#1e87f0;text-decoration:none}.uk-link-reset a,a.uk-link-reset,.uk-link-toggle{color:inherit!important;text-decoration:none!important}.uk-heading-small{font-size:2.6rem;line-height:1.2}.uk-heading-medium{font-size:2.8875rem;line-height:1.1}.uk-heading-large{font-size:3.4rem;line-height:1.1}.uk-heading-xlarge{font-size:4rem;line-height:1}.uk-heading-2xlarge{font-size:6rem;line-height:1}.uk-heading-3xlarge{font-size:8rem;line-height:1}@media (min-width:960px){.uk-heading-small{font-size:3.25rem}.uk-heading-medium{font-size:3.5rem}.uk-heading-large{font-size:4rem}.uk-heading-xlarge{font-size:6rem}.uk-heading-2xlarge{font-size:8rem}.uk-heading-3xlarge{font-size:11rem}}@media (min-width:1200px){.uk-heading-medium{font-size:4rem}.uk-heading-large{font-size:6rem}.uk-heading-xlarge{font-size:8rem}.uk-heading-2xlarge{font-size:11rem}.uk-heading-3xlarge{font-size:15rem}}.uk-heading-divider{padding-bottom:calc(5px + .1em);border-bottom:calc(.2px + .05em) solid #e5e5e5}.uk-heading-bullet{position:relative}.uk-heading-bullet:before{content:"";display:inline-block;position:relative;top:-.1em;vertical-align:middle;height:calc(4px + .7em);margin-right:calc(5px + .2em);border-left:calc(5px + .1em) solid #e5e5e5}.uk-heading-line{overflow:hidden}.uk-heading-line>*{display:inline-block;position:relative}.uk-heading-line>:after,.uk-heading-line>:before{content:"";position:absolute;top:calc(50% - ((.2px + .05em)/2));width:2000px;border-bottom:calc(.2px + .05em) solid #e5e5e5}.uk-heading-line>:before{right:100%;margin-right:calc(5px + .3em)}.uk-heading-line>:after{left:100%;margin-left:calc(5px + .3em)}[class*=uk-divider]{border:none;margin-bottom:20px}*+[class*=uk-divider]{margin-top:20px}.uk-divider-icon{position:relative;height:20px;background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22none%22%20stroke%3D%22%23e5e5e5%22%20stroke-width%3D%222%22%20cx%3D%2210%22%20cy%3D%2210%22%20r%3D%227%22%20%2F%3E%0A%3C%2Fsvg%3E%0A);background-repeat:no-repeat;background-position:50% 50%}.uk-divider-icon:after,.uk-divider-icon:before{content:"";position:absolute;top:50%;max-width:calc(50% - 25px);border-bottom:1px solid #e5e5e5}.uk-divider-icon:before{right:calc(50% + 25px);width:100%}.uk-divider-icon:after{left:calc(50% + 25px);width:100%}.uk-divider-small{line-height:0}.uk-divider-small:after{content:"";display:inline-block;width:100px;max-width:100%;border-top:1px solid #e5e5e5;vertical-align:top}.uk-divider-vertical{width:max-content;height:100px;margin-left:auto;margin-right:auto;border-left:1px solid #e5e5e5}.uk-list{padding:0;list-style:none}.uk-list>*{break-inside:avoid-column}.uk-list>*>:last-child{margin-bottom:0}.uk-list>*>ul,.uk-list>:nth-child(n+2){margin-top:10px}.uk-list-circle>*,.uk-list-decimal>*,.uk-list-disc>*,.uk-list-hyphen>*,.uk-list-square>*{padding-left:30px}.uk-list-decimal{counter-reset:decimal}.uk-list-decimal>*{counter-increment:decimal}.uk-list-circle>:before,.uk-list-decimal>:before,.uk-list-disc>:before,.uk-list-hyphen>:before,.uk-list-square>:before{content:"";position:relative;left:-30px;width:30px;height:1.5em;margin-bottom:-1.5em;display:list-item;list-style-position:inside;text-align:right}.uk-list-disc>:before{list-style-type:disc}.uk-list-circle>:before{list-style-type:circle}.uk-list-square>:before{list-style-type:square}.uk-list-decimal>:before{content:counter(decimal,decimal) "\200a.\a0"}.uk-list-hyphen>:before{content:"\2013\a0\a0"}.uk-list-muted>:before{color:#999!important}.uk-list-emphasis>:before{color:#333!important}.uk-list-primary>:before{color:#1e87f0!important}.uk-list-secondary>:before{color:#222!important}.uk-list-bullet>*{padding-left:30px}.uk-list-bullet>:before{content:"";display:list-item;position:relative;left:-30px;width:30px;height:1.5em;margin-bottom:-1.5em;background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%226%22%20height%3D%226%22%20viewBox%3D%220%200%206%206%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22%23666%22%20cx%3D%223%22%20cy%3D%223%22%20r%3D%223%22%20%2F%3E%0A%3C%2Fsvg%3E);background-repeat:no-repeat;background-position:50% 50%}.uk-list-divider>:nth-child(n+2){margin-top:10px;padding-top:10px;border-top:1px solid #e5e5e5}.uk-list-striped>*{padding:10px}.uk-list-striped>:nth-of-type(odd){border-top:1px solid #e5e5e5;border-bottom:1px solid #e5e5e5}.uk-list-striped>:nth-of-type(odd){background:#f8f8f8}.uk-list-striped>:nth-child(n+2){margin-top:0}.uk-list-large>*>ul,.uk-list-large>:nth-child(n+2){margin-top:20px}.uk-list-collapse>*>ul,.uk-list-collapse>:nth-child(n+2){margin-top:0}.uk-list-large.uk-list-divider>:nth-child(n+2){margin-top:20px;padding-top:20px}.uk-list-collapse.uk-list-divider>:nth-child(n+2){margin-top:0;padding-top:0}.uk-list-large.uk-list-striped>*{padding:20px 10px}.uk-list-collapse.uk-list-striped>*{padding-top:0;padding-bottom:0}.uk-list-collapse.uk-list-striped>:nth-child(n+2),.uk-list-large.uk-list-striped>:nth-child(n+2){margin-top:0}.uk-description-list>dt{color:#333;font-size:.875rem;font-weight:400;text-transform:uppercase}.uk-description-list>dt:nth-child(n+2){margin-top:20px}.uk-description-list-divider>dt:nth-child(n+2){margin-top:20px;padding-top:20px;border-top:1px solid #e5e5e5}.uk-table{border-collapse:collapse;border-spacing:0;width:100%;margin-bottom:20px}*+.uk-table{margin-top:20px}.uk-table th{padding:16px 12px;text-align:left;vertical-align:bottom;font-size:.875rem;font-weight:400;color:#999;text-transform:uppercase}.uk-table td{padding:16px 12px;vertical-align:top}.uk-table td>:last-child{margin-bottom:0}.uk-table tfoot{font-size:.875rem}.uk-table caption{font-size:.875rem;text-align:left;color:#999}.uk-table-middle,.uk-table-middle td{vertical-align:middle!important}.uk-table-divider>:first-child>tr:not(:first-child),.uk-table-divider>:not(:first-child)>tr,.uk-table-divider>tr:not(:first-child){border-top:1px solid #e5e5e5}.uk-table-striped tbody tr:nth-of-type(odd),.uk-table-striped>tr:nth-of-type(odd){background:#f8f8f8;border-top:1px solid #e5e5e5;border-bottom:1px solid #e5e5e5}.uk-table-hover tbody tr:hover,.uk-table-hover>tr:hover{background:#ffd}.uk-table tbody tr.uk-active,.uk-table>tr.uk-active{background:#ffd}.uk-table-small td,.uk-table-small th{padding:10px 12px}.uk-table-large td,.uk-table-large th{padding:22px 12px}.uk-table-justify td:first-child,.uk-table-justify th:first-child{padding-left:0}.uk-table-justify td:last-child,.uk-table-justify th:last-child{padding-right:0}.uk-table-shrink{width:1px}.uk-table-expand{min-width:150px}.uk-table-link{padding:0!important}.uk-table-link>a{display:block;padding:16px 12px}.uk-table-small .uk-table-link>a{padding:10px 12px}@media (max-width:959px){.uk-table-responsive,.uk-table-responsive tbody,.uk-table-responsive td,.uk-table-responsive th,.uk-table-responsive tr{display:block}.uk-table-responsive thead{display:none}.uk-table-responsive td,.uk-table-responsive th{width:auto!important;max-width:none!important;min-width:0!important;overflow:visible!important;white-space:normal!important}.uk-table-responsive .uk-table-link:not(:first-child)>a,.uk-table-responsive td:not(:first-child):not(.uk-table-link),.uk-table-responsive th:not(:first-child):not(.uk-table-link){padding-top:5px!important}.uk-table-responsive .uk-table-link:not(:last-child)>a,.uk-table-responsive td:not(:last-child):not(.uk-table-link),.uk-table-responsive th:not(:last-child):not(.uk-table-link){padding-bottom:5px!important}.uk-table-justify.uk-table-responsive td,.uk-table-justify.uk-table-responsive th{padding-left:0;padding-right:0}}.uk-table tbody tr{transition:background-color .1s linear}.uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-table-striped>tr:nth-of-type(2n):last-child{border-bottom:1px solid #e5e5e5}.uk-icon{margin:0;border:none;border-radius:0;overflow:visible;font:inherit;color:inherit;text-transform:none;padding:0;background-color:transparent;display:inline-block;fill:currentcolor;line-height:0}button.uk-icon:not(:disabled){cursor:pointer}.uk-icon::-moz-focus-inner{border:0;padding:0}.uk-icon:not(.uk-preserve) [fill*="#"]:not(.uk-preserve){fill:currentcolor}.uk-icon:not(.uk-preserve) [stroke*="#"]:not(.uk-preserve){stroke:currentcolor}.uk-icon>*{transform:translate(0)}.uk-icon-image{width:20px;height:20px;background-position:50% 50%;background-repeat:no-repeat;background-size:contain;vertical-align:middle;object-fit:scale-down;max-width:none}.uk-icon-link{color:#999;text-decoration:none!important}.uk-icon-link:hover{color:#666}.uk-active>.uk-icon-link,.uk-icon-link:active{color:#595959}.uk-icon-button{box-sizing:border-box;width:36px;height:36px;border-radius:500px;background:#f8f8f8;color:#999;vertical-align:middle;display:inline-flex;justify-content:center;align-items:center;transition:.1s ease-in-out;transition-property:color,background-color}.uk-icon-button:hover{background-color:#ebebeb;color:#666}.uk-active>.uk-icon-button,.uk-icon-button:active{background-color:#dfdfdf;color:#666}.uk-range{-webkit-appearance:none;box-sizing:border-box;margin:0;vertical-align:middle;max-width:100%;width:100%;background:0 0}.uk-range:focus{outline:0}.uk-range::-moz-focus-outer{border:none}.uk-range:not(:disabled)::-webkit-slider-thumb{cursor:pointer}.uk-range:not(:disabled)::-moz-range-thumb{cursor:pointer}.uk-range::-webkit-slider-runnable-track{height:3px;background:#ebebeb;border-radius:500px}.uk-range:active::-webkit-slider-runnable-track,.uk-range:focus::-webkit-slider-runnable-track{background:#dedede}.uk-range::-moz-range-track{height:3px;background:#ebebeb;border-radius:500px}.uk-range:focus::-moz-range-track{background:#dedede}.uk-range::-webkit-slider-thumb{-webkit-appearance:none;margin-top:-7px;height:15px;width:15px;border-radius:500px;background:#fff;border:1px solid #ccc}.uk-range::-moz-range-thumb{border:none;height:15px;width:15px;margin-top:-7px;border-radius:500px;background:#fff;border:1px solid #ccc}.uk-checkbox,.uk-input,.uk-radio,.uk-select,.uk-textarea{box-sizing:border-box;margin:0;border-radius:0;font:inherit}.uk-input{overflow:visible}.uk-select{text-transform:none}.uk-select optgroup{font:inherit;font-weight:700}.uk-textarea{overflow:auto}.uk-input[type=search]::-webkit-search-cancel-button,.uk-input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.uk-input[type=number]::-webkit-inner-spin-button,.uk-input[type=number]::-webkit-outer-spin-button{height:auto}.uk-input::-moz-placeholder,.uk-textarea::-moz-placeholder{opacity:1}.uk-checkbox:not(:disabled),.uk-radio:not(:disabled){cursor:pointer}.uk-fieldset{border:none;margin:0;padding:0;min-width:0}.uk-input,.uk-textarea{-webkit-appearance:none}.uk-input,.uk-select,.uk-textarea{max-width:100%;width:100%;border:0 none;padding:0 10px;background:#fff;color:#666;border:1px solid #e5e5e5;transition:.2s ease-in-out;transition-property:color,background-color,border}.uk-input,.uk-select:not([multiple]):not([size]){height:40px;vertical-align:middle;display:inline-block}.uk-input:not(input),.uk-select:not(select){line-height:38px}.uk-select[multiple],.uk-select[size],.uk-textarea{padding-top:6px;padding-bottom:6px;vertical-align:top}.uk-select[multiple],.uk-select[size]{resize:vertical}.uk-input:focus,.uk-select:focus,.uk-textarea:focus{outline:0;background-color:#fff;color:#666;border-color:#1e87f0}.uk-input:disabled,.uk-select:disabled,.uk-textarea:disabled{background-color:#f8f8f8;color:#999;border-color:#e5e5e5}.uk-input::placeholder{color:#999}.uk-textarea::placeholder{color:#999}.uk-form-small{font-size:.875rem}.uk-form-small:not(textarea):not([multiple]):not([size]){height:30px;padding-left:8px;padding-right:8px}[multiple].uk-form-small,[size].uk-form-small,textarea.uk-form-small{padding:5px 8px}.uk-form-small:not(select):not(input):not(textarea){line-height:28px}.uk-form-large{font-size:1.25rem}.uk-form-large:not(textarea):not([multiple]):not([size]){height:55px;padding-left:12px;padding-right:12px}[multiple].uk-form-large,[size].uk-form-large,textarea.uk-form-large{padding:7px 12px}.uk-form-large:not(select):not(input):not(textarea){line-height:53px}.uk-form-danger,.uk-form-danger:focus{color:#f0506e;border-color:#f0506e}.uk-form-success,.uk-form-success:focus{color:#32d296;border-color:#32d296}.uk-form-blank{background:0 0;border-color:transparent}.uk-form-blank:focus{border-color:#e5e5e5;border-style:solid}input.uk-form-width-xsmall{width:50px}select.uk-form-width-xsmall{width:75px}.uk-form-width-small{width:130px}.uk-form-width-medium{width:200px}.uk-form-width-large{width:500px}.uk-select:not([multiple]):not([size]){-webkit-appearance:none;-moz-appearance:none;padding-right:20px;background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2224%22%20height%3D%2216%22%20viewBox%3D%220%200%2024%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22%23666%22%20points%3D%2212%201%209%206%2015%206%22%20%2F%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22%23666%22%20points%3D%2212%2013%209%208%2015%208%22%20%2F%3E%0A%3C%2Fsvg%3E%0A);background-repeat:no-repeat;background-position:100% 50%}.uk-select:not([multiple]):not([size]) option{color:#666}.uk-select:not([multiple]):not([size]):disabled{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2224%22%20height%3D%2216%22%20viewBox%3D%220%200%2024%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22%23999%22%20points%3D%2212%201%209%206%2015%206%22%20%2F%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22%23999%22%20points%3D%2212%2013%209%208%2015%208%22%20%2F%3E%0A%3C%2Fsvg%3E%0A)}.uk-input[list]{padding-right:20px;background-repeat:no-repeat;background-position:100% 50%}.uk-input[list]:focus,.uk-input[list]:hover{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2224%22%20height%3D%2216%22%20viewBox%3D%220%200%2024%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22%23666%22%20points%3D%2212%2012%208%206%2016%206%22%20%2F%3E%0A%3C%2Fsvg%3E%0A)}.uk-input[list]::-webkit-calendar-picker-indicator{display:none!important}.uk-checkbox,.uk-radio{display:inline-block;height:16px;width:16px;overflow:hidden;margin-top:-4px;vertical-align:middle;-webkit-appearance:none;-moz-appearance:none;background-color:transparent;background-repeat:no-repeat;background-position:50% 50%;border:1px solid #ccc;transition:.2s ease-in-out;transition-property:background-color,border}.uk-radio{border-radius:50%}.uk-checkbox:focus,.uk-radio:focus{background-color:#0000;outline:0;border-color:#1e87f0}.uk-checkbox:checked,.uk-checkbox:indeterminate,.uk-radio:checked{background-color:#1e87f0;border-color:transparent}.uk-checkbox:checked:focus,.uk-checkbox:indeterminate:focus,.uk-radio:checked:focus{background-color:#0e6dcd}.uk-radio:checked{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22%23fff%22%20cx%3D%228%22%20cy%3D%228%22%20r%3D%222%22%20%2F%3E%0A%3C%2Fsvg%3E)}.uk-checkbox:checked{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2214%22%20height%3D%2211%22%20viewBox%3D%220%200%2014%2011%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22%23fff%22%20points%3D%2212%201%205%207.5%202%205%201%205.5%205%2010%2013%201.5%22%20%2F%3E%0A%3C%2Fsvg%3E%0A)}.uk-checkbox:indeterminate{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22%23fff%22%20x%3D%223%22%20y%3D%228%22%20width%3D%2210%22%20height%3D%221%22%20%2F%3E%0A%3C%2Fsvg%3E)}.uk-checkbox:disabled,.uk-radio:disabled{background-color:#f8f8f8;border-color:#e5e5e5}.uk-radio:disabled:checked{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22%23999%22%20cx%3D%228%22%20cy%3D%228%22%20r%3D%222%22%20%2F%3E%0A%3C%2Fsvg%3E)}.uk-checkbox:disabled:checked{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2214%22%20height%3D%2211%22%20viewBox%3D%220%200%2014%2011%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22%23999%22%20points%3D%2212%201%205%207.5%202%205%201%205.5%205%2010%2013%201.5%22%20%2F%3E%0A%3C%2Fsvg%3E%0A)}.uk-checkbox:disabled:indeterminate{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22%23999%22%20x%3D%223%22%20y%3D%228%22%20width%3D%2210%22%20height%3D%221%22%20%2F%3E%0A%3C%2Fsvg%3E)}.uk-legend{width:100%;color:inherit;padding:0;font-size:1.5rem;line-height:1.4}.uk-form-custom{display:inline-block;position:relative;max-width:100%;vertical-align:middle}.uk-form-custom input[type=file],.uk-form-custom select{position:absolute;top:0;z-index:1;width:100%;height:100%;left:0;-webkit-appearance:none;opacity:0;cursor:pointer}.uk-form-custom input[type=file]{font-size:500px;overflow:hidden}.uk-form-label{color:#333;font-size:.875rem}.uk-form-stacked .uk-form-label{display:block;margin-bottom:5px}@media (max-width:959px){.uk-form-horizontal .uk-form-label{display:block;margin-bottom:5px}}@media (min-width:960px){.uk-form-horizontal .uk-form-label{width:200px;margin-top:7px;float:left}.uk-form-horizontal .uk-form-controls{margin-left:215px}.uk-form-horizontal .uk-form-controls-text{padding-top:7px}}.uk-form-icon{position:absolute;top:0;bottom:0;left:0;width:40px;display:inline-flex;justify-content:center;align-items:center;color:#999}.uk-form-icon:hover{color:#666}.uk-form-icon:not(a):not(button):not(input){pointer-events:none}.uk-form-icon:not(.uk-form-icon-flip)~.uk-input{padding-left:40px!important}.uk-form-icon-flip{right:0;left:auto}.uk-form-icon-flip~.uk-input{padding-right:40px!important}.uk-button{margin:0;border:none;overflow:visible;font:inherit;color:inherit;text-transform:none;-webkit-appearance:none;border-radius:0;display:inline-block;box-sizing:border-box;padding:0 30px;vertical-align:middle;font-size:.875rem;line-height:38px;text-align:center;text-decoration:none;text-transform:uppercase;transition:.1s ease-in-out;transition-property:color,background-color,border-color}.uk-button:not(:disabled){cursor:pointer}.uk-button::-moz-focus-inner{border:0;padding:0}.uk-button:hover{text-decoration:none}.uk-button-default{background-color:transparent;color:#333;border:1px solid #e5e5e5}.uk-button-default:hover{background-color:transparent;color:#333;border-color:#b2b2b2}.uk-button-default.uk-active,.uk-button-default:active{background-color:transparent;color:#333;border-color:#999}.uk-button-primary{background-color:#1e87f0;color:#fff;border:1px solid transparent}.uk-button-primary:hover{background-color:#0f7ae5;color:#fff}.uk-button-primary.uk-active,.uk-button-primary:active{background-color:#0e6dcd;color:#fff}.uk-button-secondary{background-color:#222;color:#fff;border:1px solid transparent}.uk-button-secondary:hover{background-color:#151515;color:#fff}.uk-button-secondary.uk-active,.uk-button-secondary:active{background-color:#080808;color:#fff}.uk-button-danger{background-color:#f0506e;color:#fff;border:1px solid transparent}.uk-button-danger:hover{background-color:#ee395b;color:#fff}.uk-button-danger.uk-active,.uk-button-danger:active{background-color:#ec2147;color:#fff}.uk-button-danger:disabled,.uk-button-default:disabled,.uk-button-primary:disabled,.uk-button-secondary:disabled{background-color:transparent;color:#999;border-color:#e5e5e5}.uk-button-small{padding:0 15px;line-height:28px;font-size:.875rem}.uk-button-large{padding:0 40px;line-height:53px;font-size:.875rem}.uk-button-text{padding:0;line-height:1.5;background:0 0;color:#333;position:relative}.uk-button-text:before{content:"";position:absolute;bottom:0;left:0;right:100%;border-bottom:1px solid currentColor;transition:right .3s ease-out}.uk-button-text:hover{color:#333}.uk-button-text:hover:before{right:0}.uk-button-text:disabled{color:#999}.uk-button-text:disabled:before{display:none}.uk-button-link{padding:0;line-height:1.5;background:0 0;color:#333}.uk-button-link:hover{color:#999;text-decoration:none}.uk-button-link:disabled{color:#999;text-decoration:none}.uk-button-group{display:inline-flex;vertical-align:middle;position:relative}.uk-button-group>.uk-button:nth-child(n+2),.uk-button-group>div:nth-child(n+2) .uk-button{margin-left:-1px}.uk-button-group .uk-button.uk-active,.uk-button-group .uk-button:active,.uk-button-group .uk-button:focus,.uk-button-group .uk-button:hover{position:relative;z-index:1}.uk-progress{vertical-align:baseline;display:block;width:100%;border:0;background-color:#f8f8f8;margin-bottom:20px;height:15px;border-radius:500px;overflow:hidden}*+.uk-progress{margin-top:20px}.uk-progress::-webkit-progress-bar{background-color:transparent}.uk-progress::-webkit-progress-value{background-color:#1e87f0;transition:width .6s ease}.uk-progress::-moz-progress-bar{background-color:#1e87f0;transition:width .6s ease}.uk-section{display:flow-root;box-sizing:border-box;padding-top:40px;padding-bottom:40px}@media (min-width:960px){.uk-section{padding-top:70px;padding-bottom:70px}}.uk-section>:last-child{margin-bottom:0}.uk-section-xsmall{padding-top:20px;padding-bottom:20px}.uk-section-small{padding-top:40px;padding-bottom:40px}.uk-section-large{padding-top:70px;padding-bottom:70px}@media (min-width:960px){.uk-section-large{padding-top:140px;padding-bottom:140px}}.uk-section-xlarge{padding-top:140px;padding-bottom:140px}@media (min-width:960px){.uk-section-xlarge{padding-top:210px;padding-bottom:210px}}.uk-section-default{--uk-inverse:dark;background:#fff}.uk-section-muted{--uk-inverse:dark;background:#f8f8f8}.uk-section-primary{--uk-inverse:light;background:#1e87f0}.uk-section-secondary{--uk-inverse:light;background:#222}.uk-container{display:flow-root;box-sizing:content-box;max-width:1200px;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px}@media (min-width:640px){.uk-container{padding-left:30px;padding-right:30px}}@media (min-width:960px){.uk-container{padding-left:40px;padding-right:40px}}.uk-container>:last-child{margin-bottom:0}.uk-container .uk-container{padding-left:0;padding-right:0}.uk-container-xsmall{max-width:750px}.uk-container-small{max-width:900px}.uk-container-large{max-width:1400px}.uk-container-xlarge{max-width:1600px}.uk-container-expand{max-width:none}.uk-container-expand-left{margin-left:0}.uk-container-expand-right{margin-right:0}@media (min-width:640px){.uk-container-expand-left.uk-container-xsmall,.uk-container-expand-right.uk-container-xsmall{max-width:calc(50% + 345px)}.uk-container-expand-left.uk-container-small,.uk-container-expand-right.uk-container-small{max-width:calc(50% + 420px)}}@media (min-width:960px){.uk-container-expand-left,.uk-container-expand-right{max-width:calc(50% + 560px)}.uk-container-expand-left.uk-container-xsmall,.uk-container-expand-right.uk-container-xsmall{max-width:calc(50% + 335px)}.uk-container-expand-left.uk-container-small,.uk-container-expand-right.uk-container-small{max-width:calc(50% + 410px)}.uk-container-expand-left.uk-container-large,.uk-container-expand-right.uk-container-large{max-width:calc(50% + 660px)}.uk-container-expand-left.uk-container-xlarge,.uk-container-expand-right.uk-container-xlarge{max-width:calc(50% + 760px)}}.uk-container-item-padding-remove-left,.uk-container-item-padding-remove-right{width:calc(100% + 15px)}.uk-container-item-padding-remove-left{margin-left:-15px}.uk-container-item-padding-remove-right{margin-right:-15px}@media (min-width:640px){.uk-container-item-padding-remove-left,.uk-container-item-padding-remove-right{width:calc(100% + 30px)}.uk-container-item-padding-remove-left{margin-left:-30px}.uk-container-item-padding-remove-right{margin-right:-30px}}@media (min-width:960px){.uk-container-item-padding-remove-left,.uk-container-item-padding-remove-right{width:calc(100% + 40px)}.uk-container-item-padding-remove-left{margin-left:-40px}.uk-container-item-padding-remove-right{margin-right:-40px}}.uk-tile{display:flow-root;position:relative;box-sizing:border-box;padding:40px 15px}@media (min-width:640px){.uk-tile{padding-left:30px;padding-right:30px}}@media (min-width:960px){.uk-tile{padding:70px 40px}}.uk-tile>:last-child{margin-bottom:0}.uk-tile-xsmall{padding-top:20px;padding-bottom:20px}.uk-tile-small{padding-top:40px;padding-bottom:40px}.uk-tile-large{padding-top:70px;padding-bottom:70px}@media (min-width:960px){.uk-tile-large{padding-top:140px;padding-bottom:140px}}.uk-tile-xlarge{padding-top:140px;padding-bottom:140px}@media (min-width:960px){.uk-tile-xlarge{padding-top:210px;padding-bottom:210px}}.uk-tile-default{--uk-inverse:dark;background-color:#fff}.uk-tile-muted{--uk-inverse:dark;background-color:#f8f8f8}.uk-tile-primary{--uk-inverse:light;background-color:#1e87f0}.uk-tile-secondary{--uk-inverse:light;background-color:#222}.uk-card{position:relative;box-sizing:border-box;transition:box-shadow .1s ease-in-out}.uk-card-body{display:flow-root;padding:30px}.uk-card-header,.uk-card-footer{display:flow-root;padding:15px 30px}@media (min-width:1200px){.uk-card-body{padding:40px}.uk-card-header,.uk-card-footer{padding:20px 40px}}.uk-card-body>:last-child,.uk-card-footer>:last-child,.uk-card-header>:last-child{margin-bottom:0}.uk-card-title{font-size:1.5rem;line-height:1.4}.uk-card-badge{position:absolute;top:15px;right:15px;z-index:1;height:22px;padding:0 10px;background:#1e87f0;color:#fff;font-size:.875rem;display:flex;justify-content:center;align-items:center;line-height:0;border-radius:2px;text-transform:uppercase}.uk-card-badge:first-child+*{margin-top:0}.uk-card-hover:not(.uk-card-default):not(.uk-card-primary):not(.uk-card-secondary):hover{background-color:#fff;box-shadow:0 14px 25px #00000029}.uk-card-default{--uk-inverse:dark;background-color:#fff;color:#666;box-shadow:0 5px 15px #00000014}.uk-card-default .uk-card-title{color:#333}.uk-card-default.uk-card-hover:hover{background-color:#fff;box-shadow:0 14px 25px #00000029}.uk-card-default .uk-card-header{border-bottom:1px solid #e5e5e5}.uk-card-default .uk-card-footer{border-top:1px solid #e5e5e5}.uk-card-primary{--uk-inverse:light;background-color:#1e87f0;color:#fff;box-shadow:0 5px 15px #00000014}.uk-card-primary .uk-card-title{color:#fff}.uk-card-primary.uk-card-hover:hover{background-color:#1e87f0;box-shadow:0 14px 25px #00000029}.uk-card-secondary{--uk-inverse:light;background-color:#222;color:#fff;box-shadow:0 5px 15px #00000014}.uk-card-secondary .uk-card-title{color:#fff}.uk-card-secondary.uk-card-hover:hover{background-color:#222;box-shadow:0 14px 25px #00000029}.uk-card-small .uk-card-body,.uk-card-small.uk-card-body{padding:20px}.uk-card-small .uk-card-header,.uk-card-small .uk-card-footer{padding:13px 20px}@media (min-width:1200px){.uk-card-large .uk-card-body,.uk-card-large.uk-card-body{padding:70px}.uk-card-large .uk-card-header,.uk-card-large .uk-card-footer{padding:35px 70px}}.uk-card-body>.uk-nav-default{margin-left:-30px;margin-right:-30px}.uk-card-body>.uk-nav-default:only-child{margin-top:-15px;margin-bottom:-15px}.uk-card-body>.uk-nav-default .uk-nav-divider,.uk-card-body>.uk-nav-default .uk-nav-header,.uk-card-body>.uk-nav-default>li>a{padding-left:30px;padding-right:30px}.uk-card-body>.uk-nav-default .uk-nav-sub{padding-left:45px}@media (min-width:1200px){.uk-card-body>.uk-nav-default{margin-left:-40px;margin-right:-40px}.uk-card-body>.uk-nav-default:only-child{margin-top:-25px;margin-bottom:-25px}.uk-card-body>.uk-nav-default .uk-nav-divider,.uk-card-body>.uk-nav-default .uk-nav-header,.uk-card-body>.uk-nav-default>li>a{padding-left:40px;padding-right:40px}.uk-card-body>.uk-nav-default .uk-nav-sub{padding-left:55px}}.uk-card-small>.uk-nav-default{margin-left:-20px;margin-right:-20px}.uk-card-small>.uk-nav-default:only-child{margin-top:-5px;margin-bottom:-5px}.uk-card-small>.uk-nav-default .uk-nav-divider,.uk-card-small>.uk-nav-default .uk-nav-header,.uk-card-small>.uk-nav-default>li>a{padding-left:20px;padding-right:20px}.uk-card-small>.uk-nav-default .uk-nav-sub{padding-left:35px}@media (min-width:1200px){.uk-card-large>.uk-nav-default{margin:0}.uk-card-large>.uk-nav-default:only-child{margin:0}.uk-card-large>.uk-nav-default .uk-nav-divider,.uk-card-large>.uk-nav-default .uk-nav-header,.uk-card-large>.uk-nav-default>li>a{padding-left:0;padding-right:0}.uk-card-large>.uk-nav-default .uk-nav-sub{padding-left:15px}}.uk-close{color:#999;transition:.1s ease-in-out;transition-property:color,opacity}.uk-close:hover{color:#666}.uk-spinner>*{animation:uk-spinner-rotate 1.4s linear infinite}@keyframes uk-spinner-rotate{0%{transform:rotate(0)}to{transform:rotate(270deg)}}.uk-spinner>*>*{stroke-dasharray:88px;stroke-dashoffset:0;transform-origin:center;animation:uk-spinner-dash 1.4s ease-in-out infinite;stroke-width:1;stroke-linecap:round}@keyframes uk-spinner-dash{0%{stroke-dashoffset:88px}50%{stroke-dashoffset:22px;transform:rotate(135deg)}to{stroke-dashoffset:88px;transform:rotate(450deg)}}.uk-totop{padding:5px;color:#999;transition:color .1s ease-in-out}.uk-totop:hover{color:#666}.uk-totop:active{color:#333}.uk-marker{padding:5px;background:#222;color:#fff;border-radius:500px}.uk-marker:hover{color:#fff}.uk-alert{position:relative;margin-bottom:20px;padding:15px 29px 15px 15px;background:#f8f8f8;color:#666}*+.uk-alert{margin-top:20px}.uk-alert>:last-child{margin-bottom:0}.uk-alert-close{position:absolute;top:20px;right:15px;color:inherit;opacity:.4}.uk-alert-close:first-child+*{margin-top:0}.uk-alert-close:hover{color:inherit;opacity:.8}.uk-alert-primary{background:#d8eafc;color:#1e87f0}.uk-alert-success{background:#edfbf6;color:#32d296}.uk-alert-warning{background:#fff6ee;color:#faa05a}.uk-alert-danger{background:#fef4f6;color:#f0506e}.uk-alert h1,.uk-alert h2,.uk-alert h3,.uk-alert h4,.uk-alert h5,.uk-alert h6{color:inherit}.uk-alert a:not([class]){color:inherit;text-decoration:underline}.uk-alert a:not([class]):hover{color:inherit;text-decoration:underline}.uk-placeholder{margin-bottom:20px;padding:30px;background:0 0;border:1px dashed #e5e5e5}*+.uk-placeholder{margin-top:20px}.uk-placeholder>:last-child{margin-bottom:0}.uk-badge{box-sizing:border-box;min-width:18px;height:18px;padding:0 5px;border-radius:500px;vertical-align:middle;background:#1e87f0;color:#fff!important;font-size:11px;display:inline-flex;justify-content:center;align-items:center;line-height:0}.uk-badge:hover{text-decoration:none}.uk-label{display:inline-block;padding:0 10px;background:#1e87f0;line-height:1.5;font-size:.875rem;color:#fff;vertical-align:middle;white-space:nowrap;border-radius:2px;text-transform:uppercase}.uk-label-success{background-color:#32d296;color:#fff}.uk-label-warning{background-color:#faa05a;color:#fff}.uk-label-danger{background-color:#f0506e;color:#fff}.uk-overlay{padding:30px}.uk-overlay>:last-child{margin-bottom:0}.uk-overlay-default{--uk-inverse:dark;background:#fffc}.uk-overlay-primary{--uk-inverse:light;background:#222c}.uk-article{display:flow-root}.uk-article>:last-child{margin-bottom:0}.uk-article+.uk-article{margin-top:70px}.uk-article-title{font-size:2.23125rem;line-height:1.2}@media (min-width:960px){.uk-article-title{font-size:2.625rem}}.uk-article-meta{font-size:.875rem;line-height:1.4;color:#999}.uk-article-meta a{color:#999}.uk-article-meta a:hover{color:#666;text-decoration:none}.uk-comment-body{display:flow-root;overflow-wrap:break-word;word-wrap:break-word}.uk-comment-header{display:flow-root;margin-bottom:20px}.uk-comment-body>:last-child,.uk-comment-header>:last-child{margin-bottom:0}.uk-comment-title{font-size:1.25rem;line-height:1.4}.uk-comment-meta{font-size:.875rem;line-height:1.4;color:#999}.uk-comment-list{padding:0;list-style:none}.uk-comment-list>:nth-child(n+2){margin-top:70px}.uk-comment-list .uk-comment~ul{margin:70px 0 0;padding-left:30px;list-style:none}@media (min-width:960px){.uk-comment-list .uk-comment~ul{padding-left:100px}}.uk-comment-list .uk-comment~ul>:nth-child(n+2){margin-top:70px}.uk-comment-primary{padding:30px;background-color:#f8f8f8}.uk-search{display:inline-block;position:relative;max-width:100%;margin:0}.uk-search-input::-webkit-search-cancel-button,.uk-search-input::-webkit-search-decoration{-webkit-appearance:none}.uk-search-input::-moz-placeholder{opacity:1}.uk-search-input{box-sizing:border-box;margin:0;border-radius:0;font:inherit;overflow:visible;-webkit-appearance:none;vertical-align:middle;width:100%;border:none;color:#666}.uk-search-input:focus{outline:0}.uk-search-input::placeholder{color:#999}.uk-search .uk-search-icon{position:absolute;top:0;bottom:0;left:0;display:inline-flex;justify-content:center;align-items:center;color:#999}.uk-search .uk-search-icon:hover{color:#999}.uk-search .uk-search-icon:not(a):not(button):not(input){pointer-events:none}.uk-search .uk-search-icon-flip{right:0;left:auto}.uk-search-default{width:240px}.uk-search-default .uk-search-input{height:40px;padding-left:10px;padding-right:10px;background:0 0;border:1px solid #e5e5e5}.uk-search-default .uk-search-input:focus{background-color:#0000;border-color:#1e87f0}.uk-search-default .uk-search-icon{width:40px}.uk-search-default:has(.uk-search-icon:not(.uk-search-icon-flip)) .uk-search-input{padding-left:40px}.uk-search-default:has(.uk-search-icon-flip) .uk-search-input{padding-right:40px}.uk-search-navbar{width:240px}.uk-search-navbar .uk-search-input{height:40px;padding-left:10px;padding-right:10px;background:#fff;border:1px solid #e5e5e5}.uk-search-navbar .uk-search-input:focus{background-color:#fff;border-color:#1e87f0}.uk-search-navbar .uk-search-icon{width:40px}.uk-search-navbar:has(.uk-search-icon:not(.uk-search-icon-flip)) .uk-search-input{padding-left:40px}.uk-search-navbar:has(.uk-search-icon-flip) .uk-search-input{padding-right:40px}.uk-search-medium{width:400px}.uk-search-medium .uk-search-input{height:40px;background:0 0;font-size:1.5rem}.uk-search-medium .uk-search-icon{width:24px}.uk-search-medium:has(.uk-search-icon:not(.uk-search-icon-flip)) .uk-search-input{padding-left:34px}.uk-search-medium:has(.uk-search-icon-flip) .uk-search-input{padding-right:34px}.uk-search-large{width:500px}.uk-search-large .uk-search-input{height:80px;background:0 0;font-size:2.625rem}.uk-search-large .uk-search-icon{width:40px}.uk-search-large:has(.uk-search-icon:not(.uk-search-icon-flip)) .uk-search-input{padding-left:60px}.uk-search-large:has(.uk-search-icon-flip) .uk-search-input{padding-right:60px}.uk-search-toggle{color:#999}.uk-search-toggle:hover{color:#666}.uk-accordion{padding:0;list-style:none}.uk-accordion>:nth-child(n+2){margin-top:20px}.uk-accordion-title{display:block;font-size:1.25rem;line-height:1.4;color:#333;overflow:hidden}.uk-accordion-title:before{content:"";width:1.4em;height:1.4em;margin-left:10px;float:right;background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22%23666%22%20width%3D%2213%22%20height%3D%221%22%20x%3D%220%22%20y%3D%226%22%20%2F%3E%0A%20%20%20%20%3Crect%20fill%3D%22%23666%22%20width%3D%221%22%20height%3D%2213%22%20x%3D%226%22%20y%3D%220%22%20%2F%3E%0A%3C%2Fsvg%3E);background-repeat:no-repeat;background-position:50% 50%}.uk-open>.uk-accordion-title:before{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22%23666%22%20width%3D%2213%22%20height%3D%221%22%20x%3D%220%22%20y%3D%226%22%20%2F%3E%0A%3C%2Fsvg%3E)}.uk-accordion-title:hover{color:#666;text-decoration:none}.uk-accordion-content{display:flow-root;margin-top:20px}.uk-accordion-content>:last-child{margin-bottom:0}.uk-drop{display:none;position:absolute;z-index:1020;--uk-position-offset:20px;--uk-position-viewport-offset:15px;box-sizing:border-box;width:300px}.uk-drop.uk-open{display:block}.uk-drop-stack .uk-drop-grid>*{width:100%!important}.uk-drop-parent-icon{margin-left:.25em;transition:transform .3s ease-out}[aria-expanded=true]>.uk-drop-parent-icon{transform:rotateX(180deg)}.uk-dropbar{--uk-position-offset:0;--uk-position-shift-offset:0;--uk-position-viewport-offset:0;--uk-inverse:dark;width:auto;padding:25px 15px;background:#fff;color:#666}.uk-dropbar>:last-child{margin-bottom:0}@media (min-width:640px){.uk-dropbar{padding-left:30px;padding-right:30px}}@media (min-width:960px){.uk-dropbar{padding-left:40px;padding-right:40px}}.uk-dropbar :focus-visible{outline-color:#333!important}.uk-dropbar-large{padding-top:40px;padding-bottom:40px}.uk-dropbar-top{box-shadow:0 12px 7px -6px #0000000d}.uk-dropbar-bottom{box-shadow:0 -12px 7px -6px #0000000d}.uk-dropbar-left{box-shadow:12px 0 7px -6px #0000000d}.uk-dropbar-right{box-shadow:-12px 0 7px -6px #0000000d}.uk-dropnav-dropbar{position:absolute;z-index:980;padding:0;left:0;right:0}.uk-modal{display:none;position:fixed;inset:0;z-index:1010;overflow-y:auto;padding:15px;background:#0009;opacity:0;transition:opacity .15s linear}@media (min-width:640px){.uk-modal{padding:50px 30px}}@media (min-width:960px){.uk-modal{padding-left:40px;padding-right:40px}}.uk-modal.uk-open{opacity:1}.uk-modal-page{overflow:hidden}.uk-modal-dialog{position:relative;box-sizing:border-box;margin:0 auto;width:600px;max-width:100%!important;background:#fff;opacity:0;transform:translateY(-100px);transition:.3s linear;transition-property:opacity,transform}.uk-open>.uk-modal-dialog{opacity:1;transform:translateY(0)}.uk-modal-container .uk-modal-dialog{width:1200px}.uk-modal-full{padding:0;background:0 0}.uk-modal-full .uk-modal-dialog{margin:0;width:100%;max-width:100%;transform:translateY(0)}.uk-modal-body{display:flow-root;padding:20px}.uk-modal-header{display:flow-root;padding:10px 20px;background:#fff;border-bottom:1px solid #e5e5e5}.uk-modal-footer{display:flow-root;padding:10px 20px;background:#fff;border-top:1px solid #e5e5e5}@media (min-width:640px){.uk-modal-body{padding:30px}.uk-modal-header,.uk-modal-footer{padding:15px 30px}}.uk-modal-body>:last-child,.uk-modal-footer>:last-child,.uk-modal-header>:last-child{margin-bottom:0}.uk-modal-title{font-size:2rem;line-height:1.3}[class*=uk-modal-close-]{position:absolute;z-index:1010;top:10px;right:10px;padding:5px}[class*=uk-modal-close-]:first-child+*{margin-top:0}.uk-modal-close-outside{top:0;right:-5px;transform:translateY(-100%);color:#fff}.uk-modal-close-outside:hover{color:#fff}@media (min-width:960px){.uk-modal-close-outside{right:0;transform:translate(100%,-100%)}}.uk-modal-close-full{top:0;right:0;padding:10px;background:#fff}@media (min-width:960px){.uk-modal-close-full{padding:20px}}.uk-slideshow{-webkit-tap-highlight-color:transparent}.uk-slideshow-items{position:relative;z-index:0;margin:0;padding:0;list-style:none;overflow:hidden;-webkit-touch-callout:none;touch-action:pan-y}.uk-slideshow-items>*{position:absolute;inset:0;overflow:hidden;will-change:transform,opacity}.uk-slideshow-items>:not(.uk-active){display:none}.uk-slider{-webkit-tap-highlight-color:transparent}.uk-slider-container{overflow:hidden;overflow:clip}.uk-slider-container-offset{margin:-11px -25px -39px;padding:11px 25px 39px}.uk-slider-items{will-change:transform;position:relative;touch-action:pan-y}.uk-slider-items:not(.uk-grid){display:flex;margin:0;padding:0;list-style:none;-webkit-touch-callout:none}.uk-slider-items.uk-grid{flex-wrap:nowrap}.uk-slider-items>*{flex:none!important;box-sizing:border-box;max-width:100%;position:relative}.uk-sticky{position:relative;z-index:980;box-sizing:border-box}.uk-sticky-fixed{margin:0!important;-webkit-backface-visibility:hidden;backface-visibility:hidden}.uk-sticky[class*=uk-animation-],.uk-sticky.uk-animation-reverse{animation-duration:.2s}.uk-sticky-placeholder{pointer-events:none}.uk-offcanvas{display:none;position:fixed;top:0;bottom:0;left:0;z-index:1000}.uk-offcanvas-flip .uk-offcanvas{right:0;left:auto}.uk-offcanvas-bar{--uk-inverse:light;position:absolute;top:0;bottom:0;left:-270px;box-sizing:border-box;width:270px;padding:20px;background:#222;overflow-y:auto}@media (min-width:640px){.uk-offcanvas-bar{left:-350px;width:350px;padding:30px}}.uk-offcanvas-flip .uk-offcanvas-bar{left:auto;right:-270px}@media (min-width:640px){.uk-offcanvas-flip .uk-offcanvas-bar{right:-350px}}.uk-open>.uk-offcanvas-bar{left:0}.uk-offcanvas-flip .uk-open>.uk-offcanvas-bar{left:auto;right:0}.uk-offcanvas-bar-animation{transition:left .3s ease-out}.uk-offcanvas-flip .uk-offcanvas-bar-animation{transition-property:right}.uk-offcanvas-reveal{position:absolute;top:0;bottom:0;left:0;width:0;overflow:hidden;transition:width .3s ease-out}.uk-offcanvas-reveal .uk-offcanvas-bar{left:0}.uk-offcanvas-flip .uk-offcanvas-reveal .uk-offcanvas-bar{left:auto;right:0}.uk-open>.uk-offcanvas-reveal{width:270px}@media (min-width:640px){.uk-open>.uk-offcanvas-reveal{width:350px}}.uk-offcanvas-flip .uk-offcanvas-reveal{right:0;left:auto}.uk-offcanvas-close{position:absolute;z-index:1000;top:5px;right:5px;padding:5px}@media (min-width:640px){.uk-offcanvas-close{top:10px;right:10px}}.uk-offcanvas-close:first-child+*{margin-top:0}.uk-offcanvas-overlay{width:100vw;touch-action:none}.uk-offcanvas-overlay:before{content:"";position:absolute;inset:0;background:#0000001a;opacity:0;transition:opacity .15s linear}.uk-offcanvas-overlay.uk-open:before{opacity:1}.uk-offcanvas-container,.uk-offcanvas-page{overflow-x:hidden;overflow-x:clip}.uk-offcanvas-container{position:relative;left:0;transition:left .3s ease-out;box-sizing:border-box;width:100%}:not(.uk-offcanvas-flip).uk-offcanvas-container-animation{left:270px}.uk-offcanvas-flip.uk-offcanvas-container-animation{left:-270px}@media (min-width:640px){:not(.uk-offcanvas-flip).uk-offcanvas-container-animation{left:350px}.uk-offcanvas-flip.uk-offcanvas-container-animation{left:-350px}}.uk-switcher{margin:0;padding:0;list-style:none}.uk-switcher>:not(.uk-active){display:none}.uk-switcher>*>:last-child{margin-bottom:0}.uk-leader{overflow:hidden}.uk-leader-fill:after{display:inline-block;margin-left:15px;width:0;content:attr(data-fill);white-space:nowrap}.uk-leader-fill.uk-leader-hide:after{display:none}:root{--uk-leader-fill-content:.}.uk-notification{position:fixed;top:10px;left:10px;z-index:1040;box-sizing:border-box;width:350px}.uk-notification-bottom-right,.uk-notification-top-right{left:auto;right:10px}.uk-notification-bottom-center,.uk-notification-top-center{left:50%;margin-left:-175px}.uk-notification-bottom-center,.uk-notification-bottom-left,.uk-notification-bottom-right{top:auto;bottom:10px}@media (max-width:639px){.uk-notification{left:10px;right:10px;width:auto;margin:0}}.uk-notification-message{position:relative;padding:15px;background:#f8f8f8;color:#666;font-size:1.25rem;line-height:1.4;cursor:pointer}*+.uk-notification-message{margin-top:10px}.uk-notification-close{display:none;position:absolute;top:20px;right:15px}.uk-notification-message:hover .uk-notification-close{display:block}.uk-notification-message-primary{color:#1e87f0}.uk-notification-message-success{color:#32d296}.uk-notification-message-warning{color:#faa05a}.uk-notification-message-danger{color:#f0506e}.uk-tooltip{display:none;position:absolute;z-index:1030;--uk-position-offset:10px;--uk-position-viewport-offset:10;top:0;box-sizing:border-box;max-width:200px;padding:3px 6px;background:#666;border-radius:2px;color:#fff;font-size:12px}.uk-tooltip.uk-active{display:block}.uk-sortable{position:relative}.uk-sortable>:last-child{margin-bottom:0}.uk-sortable-drag{position:fixed!important;z-index:1050!important;pointer-events:none}.uk-sortable-placeholder{opacity:0;pointer-events:none}.uk-sortable-empty{min-height:50px}.uk-sortable-handle:hover{cursor:move}.uk-countdown-number{font-variant-numeric:tabular-nums;font-size:2rem;line-height:.8}@media (min-width:640px){.uk-countdown-number{font-size:4rem}}@media (min-width:960px){.uk-countdown-number{font-size:6rem}}.uk-countdown-separator{font-size:1rem;line-height:1.6}@media (min-width:640px){.uk-countdown-separator{font-size:2rem}}@media (min-width:960px){.uk-countdown-separator{font-size:3rem}}.uk-thumbnav{display:flex;flex-wrap:wrap;padding:0;list-style:none;margin:0 0 0 -15px}.uk-thumbnav>*{padding-left:15px}.uk-thumbnav>*>*{display:inline-block;position:relative}.uk-thumbnav>*>:after{content:"";position:absolute;inset:0;background-image:linear-gradient(180deg,#fff0,#fff6);transition:opacity .1s ease-in-out}.uk-thumbnav>*>:hover:after{opacity:0}.uk-thumbnav>.uk-active>:after{opacity:0}.uk-thumbnav-vertical{flex-direction:column;margin-left:0;margin-top:-15px}.uk-thumbnav-vertical>*{padding-left:0;padding-top:15px}.uk-iconnav{display:flex;flex-wrap:wrap;padding:0;list-style:none;margin:0 0 0 -10px}.uk-iconnav>*{padding-left:10px}.uk-iconnav>*>a{display:flex;align-items:center;column-gap:.25em;line-height:0;color:#999;text-decoration:none;font-size:.875rem;transition:.1s ease-in-out;transition-property:color,background-color}.uk-iconnav>*>a:hover{color:#666}.uk-iconnav>.uk-active>a{color:#666}.uk-iconnav-vertical{flex-direction:column;margin-left:0;margin-top:-10px}.uk-iconnav-vertical>*{padding-left:0;padding-top:10px}.uk-grid{display:flex;flex-wrap:wrap;margin:0;padding:0;list-style:none}.uk-grid>*{margin:0}.uk-grid>*>:last-child{margin-bottom:0}.uk-grid{margin-left:-30px}.uk-grid>*{padding-left:30px}*+.uk-grid-margin,.uk-grid+.uk-grid,.uk-grid>.uk-grid-margin{margin-top:30px}@media (min-width:1200px){.uk-grid{margin-left:-40px}.uk-grid>*{padding-left:40px}*+.uk-grid-margin,.uk-grid+.uk-grid,.uk-grid>.uk-grid-margin{margin-top:40px}}.uk-grid-column-small,.uk-grid-small{margin-left:-15px}.uk-grid-column-small>*,.uk-grid-small>*{padding-left:15px}*+.uk-grid-margin-small,.uk-grid+.uk-grid-row-small,.uk-grid+.uk-grid-small,.uk-grid-row-small>.uk-grid-margin,.uk-grid-small>.uk-grid-margin{margin-top:15px}.uk-grid-column-medium,.uk-grid-medium{margin-left:-30px}.uk-grid-column-medium>*,.uk-grid-medium>*{padding-left:30px}*+.uk-grid-margin-medium,.uk-grid+.uk-grid-medium,.uk-grid+.uk-grid-row-medium,.uk-grid-medium>.uk-grid-margin,.uk-grid-row-medium>.uk-grid-margin{margin-top:30px}.uk-grid-column-large,.uk-grid-large{margin-left:-40px}.uk-grid-column-large>*,.uk-grid-large>*{padding-left:40px}*+.uk-grid-margin-large,.uk-grid+.uk-grid-large,.uk-grid+.uk-grid-row-large,.uk-grid-large>.uk-grid-margin,.uk-grid-row-large>.uk-grid-margin{margin-top:40px}@media (min-width:1200px){.uk-grid-column-large,.uk-grid-large{margin-left:-70px}.uk-grid-column-large>*,.uk-grid-large>*{padding-left:70px}*+.uk-grid-margin-large,.uk-grid+.uk-grid-large,.uk-grid+.uk-grid-row-large,.uk-grid-large>.uk-grid-margin,.uk-grid-row-large>.uk-grid-margin{margin-top:70px}}.uk-grid-collapse,.uk-grid-column-collapse{margin-left:0}.uk-grid-collapse>*,.uk-grid-column-collapse>*{padding-left:0}.uk-grid+.uk-grid-collapse,.uk-grid+.uk-grid-row-collapse,.uk-grid-collapse>.uk-grid-margin,.uk-grid-row-collapse>.uk-grid-margin{margin-top:0}.uk-grid-divider>*{position:relative}.uk-grid-divider>:not(.uk-first-column):before{content:"";position:absolute;top:0;bottom:0;border-left:1px solid #e5e5e5}.uk-grid-divider.uk-grid-stack>.uk-grid-margin:before{content:"";position:absolute;left:0;right:0;border-top:1px solid #e5e5e5}.uk-grid-divider{margin-left:-60px}.uk-grid-divider>*{padding-left:60px}.uk-grid-divider>:not(.uk-first-column):before{left:30px}.uk-grid-divider.uk-grid-stack>.uk-grid-margin{margin-top:60px}.uk-grid-divider.uk-grid-stack>.uk-grid-margin:before{top:-30px;left:60px}@media (min-width:1200px){.uk-grid-divider{margin-left:-80px}.uk-grid-divider>*{padding-left:80px}.uk-grid-divider>:not(.uk-first-column):before{left:40px}.uk-grid-divider.uk-grid-stack>.uk-grid-margin{margin-top:80px}.uk-grid-divider.uk-grid-stack>.uk-grid-margin:before{top:-40px;left:80px}}.uk-grid-divider.uk-grid-column-small,.uk-grid-divider.uk-grid-small{margin-left:-30px}.uk-grid-divider.uk-grid-column-small>*,.uk-grid-divider.uk-grid-small>*{padding-left:30px}.uk-grid-divider.uk-grid-column-small>:not(.uk-first-column):before,.uk-grid-divider.uk-grid-small>:not(.uk-first-column):before{left:15px}.uk-grid-divider.uk-grid-row-small.uk-grid-stack>.uk-grid-margin,.uk-grid-divider.uk-grid-small.uk-grid-stack>.uk-grid-margin{margin-top:30px}.uk-grid-divider.uk-grid-small.uk-grid-stack>.uk-grid-margin:before{top:-15px;left:30px}.uk-grid-divider.uk-grid-row-small.uk-grid-stack>.uk-grid-margin:before{top:-15px}.uk-grid-divider.uk-grid-column-small.uk-grid-stack>.uk-grid-margin:before{left:30px}.uk-grid-divider.uk-grid-column-medium,.uk-grid-divider.uk-grid-medium{margin-left:-60px}.uk-grid-divider.uk-grid-column-medium>*,.uk-grid-divider.uk-grid-medium>*{padding-left:60px}.uk-grid-divider.uk-grid-column-medium>:not(.uk-first-column):before,.uk-grid-divider.uk-grid-medium>:not(.uk-first-column):before{left:30px}.uk-grid-divider.uk-grid-medium.uk-grid-stack>.uk-grid-margin,.uk-grid-divider.uk-grid-row-medium.uk-grid-stack>.uk-grid-margin{margin-top:60px}.uk-grid-divider.uk-grid-medium.uk-grid-stack>.uk-grid-margin:before{top:-30px;left:60px}.uk-grid-divider.uk-grid-row-medium.uk-grid-stack>.uk-grid-margin:before{top:-30px}.uk-grid-divider.uk-grid-column-medium.uk-grid-stack>.uk-grid-margin:before{left:60px}.uk-grid-divider.uk-grid-column-large,.uk-grid-divider.uk-grid-large{margin-left:-80px}.uk-grid-divider.uk-grid-column-large>*,.uk-grid-divider.uk-grid-large>*{padding-left:80px}.uk-grid-divider.uk-grid-column-large>:not(.uk-first-column):before,.uk-grid-divider.uk-grid-large>:not(.uk-first-column):before{left:40px}.uk-grid-divider.uk-grid-large.uk-grid-stack>.uk-grid-margin,.uk-grid-divider.uk-grid-row-large.uk-grid-stack>.uk-grid-margin{margin-top:80px}.uk-grid-divider.uk-grid-large.uk-grid-stack>.uk-grid-margin:before{top:-40px;left:80px}.uk-grid-divider.uk-grid-row-large.uk-grid-stack>.uk-grid-margin:before{top:-40px}.uk-grid-divider.uk-grid-column-large.uk-grid-stack>.uk-grid-margin:before{left:80px}@media (min-width:1200px){.uk-grid-divider.uk-grid-column-large,.uk-grid-divider.uk-grid-large{margin-left:-140px}.uk-grid-divider.uk-grid-column-large>*,.uk-grid-divider.uk-grid-large>*{padding-left:140px}.uk-grid-divider.uk-grid-column-large>:not(.uk-first-column):before,.uk-grid-divider.uk-grid-large>:not(.uk-first-column):before{left:70px}.uk-grid-divider.uk-grid-large.uk-grid-stack>.uk-grid-margin,.uk-grid-divider.uk-grid-row-large.uk-grid-stack>.uk-grid-margin{margin-top:140px}.uk-grid-divider.uk-grid-large.uk-grid-stack>.uk-grid-margin:before{top:-70px;left:140px}.uk-grid-divider.uk-grid-row-large.uk-grid-stack>.uk-grid-margin:before{top:-70px}.uk-grid-divider.uk-grid-column-large.uk-grid-stack>.uk-grid-margin:before{left:140px}}.uk-grid-item-match,.uk-grid-match>*{display:flex;flex-wrap:wrap}.uk-grid-item-match>:not([class*=uk-width]),.uk-grid-match>*>:not([class*=uk-width]){box-sizing:border-box;width:100%;flex:auto}.uk-nav,.uk-nav ul{margin:0;padding:0;list-style:none}.uk-nav li>a{display:flex;align-items:center;column-gap:.25em;text-decoration:none}.uk-nav>li>a{padding:5px 0}ul.uk-nav-sub{padding:5px 0 5px 15px}.uk-nav-sub ul{padding-left:15px}.uk-nav-sub a{padding:2px 0}.uk-nav-parent-icon{margin-left:auto;transition:transform .3s ease-out}.uk-nav>li.uk-open>a .uk-nav-parent-icon{transform:rotateX(180deg)}.uk-nav-header{padding:5px 0;text-transform:uppercase;font-size:.875rem}.uk-nav-header:not(:first-child){margin-top:20px}.uk-nav .uk-nav-divider{margin:5px 0}.uk-nav-default{font-size:.875rem;line-height:1.5}.uk-nav-default>li>a{color:#999}.uk-nav-default>li>a:hover{color:#666}.uk-nav-default>li.uk-active>a{color:#333}.uk-nav-default .uk-nav-subtitle{font-size:12px}.uk-nav-default .uk-nav-header{color:#333}.uk-nav-default .uk-nav-divider{border-top:1px solid #e5e5e5}.uk-nav-default .uk-nav-sub{font-size:.875rem;line-height:1.5}.uk-nav-default .uk-nav-sub a{color:#999}.uk-nav-default .uk-nav-sub a:hover{color:#666}.uk-nav-default .uk-nav-sub li.uk-active>a{color:#333}.uk-nav-primary{font-size:1.5rem;line-height:1.5}.uk-nav-primary>li>a{color:#999}.uk-nav-primary>li>a:hover{color:#666}.uk-nav-primary>li.uk-active>a{color:#333}.uk-nav-primary .uk-nav-subtitle{font-size:1.25rem}.uk-nav-primary .uk-nav-header{color:#333}.uk-nav-primary .uk-nav-divider{border-top:1px solid #e5e5e5}.uk-nav-primary .uk-nav-sub{font-size:1.25rem;line-height:1.5}.uk-nav-primary .uk-nav-sub a{color:#999}.uk-nav-primary .uk-nav-sub a:hover{color:#666}.uk-nav-primary .uk-nav-sub li.uk-active>a{color:#333}.uk-nav-secondary{font-size:16px;line-height:1.5}.uk-nav-secondary>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider){margin-top:0}.uk-nav-secondary>li>a{color:#333;padding:10px}.uk-nav-secondary>li>a:hover{color:#333;background-color:#f8f8f8}.uk-nav-secondary>li.uk-active>a{color:#333;background-color:#f8f8f8}.uk-nav-secondary .uk-nav-subtitle{font-size:.875rem;color:#999}.uk-nav-secondary>li>a:hover .uk-nav-subtitle{color:#666}.uk-nav-secondary>li.uk-active>a .uk-nav-subtitle{color:#333}.uk-nav-secondary .uk-nav-header{color:#333}.uk-nav-secondary .uk-nav-divider{border-top:1px solid #e5e5e5}.uk-nav-secondary .uk-nav-sub{font-size:.875rem;line-height:1.5}.uk-nav-secondary .uk-nav-sub a{color:#999}.uk-nav-secondary .uk-nav-sub a:hover{color:#666}.uk-nav-secondary .uk-nav-sub li.uk-active>a{color:#333}.uk-nav-medium{font-size:2.8875rem;line-height:1}.uk-nav-large{font-size:3.4rem;line-height:1}.uk-nav-xlarge{font-size:4rem;line-height:1}@media (min-width:960px){.uk-nav-medium{font-size:3.5rem}.uk-nav-large{font-size:4rem}.uk-nav-xlarge{font-size:6rem}}@media (min-width:1200px){.uk-nav-medium{font-size:4rem}.uk-nav-large{font-size:6rem}.uk-nav-xlarge{font-size:8rem}}.uk-nav-center{text-align:center}.uk-nav-center li>a{justify-content:center}.uk-nav-center .uk-nav-sub,.uk-nav-center .uk-nav-sub ul{padding-left:0}.uk-nav-center .uk-nav-parent-icon{margin-left:.25em}.uk-nav.uk-nav-divider>:not(.uk-nav-header,.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider){margin-top:5px;padding-top:5px;border-top:1px solid #e5e5e5}.uk-navbar{display:flex;position:relative}.uk-navbar-container:not(.uk-navbar-transparent){background:#f8f8f8}.uk-navbar-left,.uk-navbar-right,[class*=uk-navbar-center]{display:flex;gap:15px;align-items:center}.uk-navbar-right{margin-left:auto}.uk-navbar-center:only-child{margin-left:auto;margin-right:auto;position:relative}.uk-navbar-center:not(:only-child){position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:max-content;box-sizing:border-box;z-index:990}.uk-navbar-center-left,.uk-navbar-center-right{position:absolute;top:0}.uk-navbar-center-left{right:calc(100% + 15px)}.uk-navbar-center-right{left:calc(100% + 15px)}[class*=uk-navbar-center-]{width:max-content;box-sizing:border-box}.uk-navbar-nav{display:flex;gap:15px;margin:0;padding:0;list-style:none}.uk-navbar-center:only-child,.uk-navbar-left,.uk-navbar-right{flex-wrap:wrap}.uk-navbar-item,.uk-navbar-nav>li>a,.uk-navbar-toggle{display:flex;justify-content:center;align-items:center;column-gap:.25em;box-sizing:border-box;min-height:80px;font-size:.875rem;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";text-decoration:none}.uk-navbar-nav>li>a{padding:0;color:#999;text-transform:uppercase;transition:.1s ease-in-out;transition-property:color,background-color}.uk-navbar-nav>li:hover>a,.uk-navbar-nav>li>a[aria-expanded=true]{color:#666}.uk-navbar-nav>li>a:active{color:#333}.uk-navbar-nav>li.uk-active>a{color:#333}.uk-navbar-parent-icon{margin-left:4px;transition:transform .3s ease-out}.uk-navbar-nav>li>a[aria-expanded=true] .uk-navbar-parent-icon{transform:rotateX(180deg)}.uk-navbar-item{padding:0;color:#666}.uk-navbar-item>:last-child{margin-bottom:0}.uk-navbar-toggle{padding:0;color:#999}.uk-navbar-toggle:hover,.uk-navbar-toggle[aria-expanded=true]{color:#666;text-decoration:none}.uk-navbar-subtitle{font-size:.875rem}.uk-navbar-justify .uk-navbar-item,.uk-navbar-justify .uk-navbar-left,.uk-navbar-justify .uk-navbar-nav,.uk-navbar-justify .uk-navbar-nav>li,.uk-navbar-justify .uk-navbar-right,.uk-navbar-justify .uk-navbar-toggle{flex-grow:1}.uk-navbar-dropdown{--uk-position-offset:15px;--uk-position-shift-offset:0;--uk-position-viewport-offset:15px;--uk-inverse:dark;width:200px;padding:25px;background:#fff;color:#666;box-shadow:0 5px 12px #00000026}.uk-navbar-dropdown>:last-child{margin-bottom:0}.uk-navbar-dropdown :focus-visible{outline-color:#333!important}.uk-navbar-dropdown .uk-drop-grid{margin-left:-30px}.uk-navbar-dropdown .uk-drop-grid>*{padding-left:30px}.uk-navbar-dropdown .uk-drop-grid>.uk-grid-margin{margin-top:30px}.uk-navbar-dropdown-width-2:not(.uk-drop-stack){width:400px}.uk-navbar-dropdown-width-3:not(.uk-drop-stack){width:600px}.uk-navbar-dropdown-width-4:not(.uk-drop-stack){width:800px}.uk-navbar-dropdown-width-5:not(.uk-drop-stack){width:1000px}.uk-navbar-dropdown-large{--uk-position-shift-offset:0;padding:40px}.uk-navbar-dropdown-dropbar{width:auto;background:0 0;padding:25px 0;--uk-position-offset:0;--uk-position-shift-offset:0;--uk-position-viewport-offset:15px;box-shadow:none}@media (min-width:640px){.uk-navbar-dropdown-dropbar{--uk-position-viewport-offset:30px}}@media (min-width:960px){.uk-navbar-dropdown-dropbar{--uk-position-viewport-offset:40px}}.uk-navbar-dropdown-dropbar-large{--uk-position-shift-offset:0;padding-top:40px;padding-bottom:40px}.uk-navbar-dropdown-nav{font-size:.875rem}.uk-navbar-dropdown-nav>li>a{color:#999}.uk-navbar-dropdown-nav>li>a:hover{color:#666}.uk-navbar-dropdown-nav>li.uk-active>a{color:#333}.uk-navbar-dropdown-nav .uk-nav-subtitle{font-size:12px}.uk-navbar-dropdown-nav .uk-nav-header{color:#333}.uk-navbar-dropdown-nav .uk-nav-divider{border-top:1px solid #e5e5e5}.uk-navbar-dropdown-nav .uk-nav-sub a{color:#999}.uk-navbar-dropdown-nav .uk-nav-sub a:hover{color:#666}.uk-navbar-dropdown-nav .uk-nav-sub li.uk-active>a{color:#333}.uk-navbar-container{transition:.1s ease-in-out;transition-property:background-color}@media (min-width:960px){.uk-navbar-left,.uk-navbar-right,[class*=uk-navbar-center]{gap:30px}.uk-navbar-center-left{right:calc(100% + 30px)}.uk-navbar-center-right{left:calc(100% + 30px)}}@media (min-width:960px){.uk-navbar-nav{gap:30px}}.uk-subnav{display:flex;flex-wrap:wrap;align-items:center;margin-left:-20px;padding:0;list-style:none}.uk-subnav>*{flex:none;padding-left:20px;position:relative}.uk-subnav>*>:first-child{display:flex;align-items:center;column-gap:.25em;color:#999;font-size:.875rem;text-transform:uppercase;transition:.1s ease-in-out;transition-property:color,background-color}.uk-subnav>*>a:hover{color:#666;text-decoration:none}.uk-subnav>.uk-active>a{color:#333}.uk-subnav-divider{margin-left:-41px}.uk-subnav-divider>*{display:flex;align-items:center}.uk-subnav-divider>:before{content:"";height:1.5em;margin-left:0;margin-right:20px;border-left:1px solid transparent}.uk-subnav-divider>:nth-child(n+2):not(.uk-first-column):before{border-left-color:#e5e5e5}.uk-subnav-pill>*>:first-child{padding:5px 10px;background:0 0;color:#999}.uk-subnav-pill>*>a:hover{background-color:#f8f8f8;color:#666}.uk-subnav-pill>*>a:active{background-color:#f8f8f8;color:#666}.uk-subnav-pill>.uk-active>a{background-color:#1e87f0;color:#fff}.uk-subnav>.uk-disabled>a{color:#999}.uk-breadcrumb{padding:0;list-style:none}.uk-breadcrumb>*{display:contents}.uk-breadcrumb>*>*{font-size:.875rem;color:#999}.uk-breadcrumb>*>:hover{color:#666;text-decoration:none}.uk-breadcrumb>:last-child>a:not([href]),.uk-breadcrumb>:last-child>span{color:#666}.uk-breadcrumb>:nth-child(n+2):not(.uk-first-column):before{content:"/";display:inline-block;margin:0 20px 0 16px;font-size:.875rem;color:#999}.uk-pagination{display:flex;flex-wrap:wrap;align-items:center;margin-left:0;padding:0;list-style:none}.uk-pagination>*{flex:none;padding-left:0;position:relative}.uk-pagination>*>*{display:flex;align-items:center;column-gap:.25em;padding:5px 10px;color:#999;transition:color .1s ease-in-out}.uk-pagination>*>:hover{color:#666;text-decoration:none}.uk-pagination>.uk-active>*{color:#666}.uk-pagination>.uk-disabled>*{color:#999}.uk-tab{display:flex;flex-wrap:wrap;margin-left:-20px;padding:0;list-style:none;position:relative}.uk-tab:before{content:"";position:absolute;bottom:0;left:20px;right:0;border-bottom:1px solid #e5e5e5}.uk-tab>*{flex:none;padding-left:20px;position:relative}.uk-tab>*>a{display:flex;align-items:center;column-gap:.25em;justify-content:center;padding:5px 10px;color:#999;border-bottom:1px solid transparent;font-size:.875rem;text-transform:uppercase;transition:color .1s ease-in-out}.uk-tab>*>a:hover{color:#666;text-decoration:none}.uk-tab>.uk-active>a{color:#333;border-color:#1e87f0}.uk-tab>.uk-disabled>a{color:#999}.uk-tab-bottom:before{top:0;bottom:auto}.uk-tab-bottom>*>a{border-top:1px solid transparent;border-bottom:none}.uk-tab-left,.uk-tab-right{flex-direction:column;margin-left:0}.uk-tab-left>*,.uk-tab-right>*{padding-left:0}.uk-tab-left:before{inset:0 0 0 auto;border-left:1px solid #e5e5e5;border-bottom:none}.uk-tab-right:before{inset:0 auto 0 0;border-left:1px solid #e5e5e5;border-bottom:none}.uk-tab-left>*>a{justify-content:left;border-right:1px solid transparent;border-bottom:none}.uk-tab-right>*>a{justify-content:left;border-left:1px solid transparent;border-bottom:none}.uk-tab .uk-dropdown{margin-left:30px}.uk-slidenav{padding:5px 10px;color:#66666680;transition:color .1s ease-in-out}.uk-slidenav:hover{color:#666666e6}.uk-slidenav:active{color:#66666680}.uk-slidenav-large{padding:10px}.uk-slidenav-container{display:flex}.uk-dotnav{display:flex;flex-wrap:wrap;padding:0;list-style:none;margin:0 0 0 -12px}.uk-dotnav>*{flex:none;padding-left:12px}.uk-dotnav>*>*{display:block;box-sizing:border-box;width:10px;height:10px;border-radius:50%;background:0 0;text-indent:100%;overflow:hidden;white-space:nowrap;border:1px solid rgba(102,102,102,.4);transition:.2s ease-in-out;transition-property:background-color,border-color}.uk-dotnav>*>:hover{background-color:#6669;border-color:transparent}.uk-dotnav>*>:active{background-color:#6663;border-color:transparent}.uk-dotnav>.uk-active>*{background-color:#6669;border-color:transparent}.uk-dotnav-vertical{flex-direction:column;margin-left:0;margin-top:-12px}.uk-dotnav-vertical>*{padding-left:0;padding-top:12px}.uk-dropdown{--uk-position-offset:10px;--uk-position-viewport-offset:15px;--uk-inverse:dark;width:auto;min-width:200px;padding:25px;background:#fff;color:#666;box-shadow:0 5px 12px #00000026}.uk-dropdown>:last-child{margin-bottom:0}.uk-dropdown :focus-visible{outline-color:#333!important}.uk-dropdown-large{padding:40px}.uk-dropdown-dropbar{width:auto;background:0 0;padding:5px 0 25px;--uk-position-viewport-offset:15px;box-shadow:none}@media (min-width:640px){.uk-dropdown-dropbar{--uk-position-viewport-offset:30px}}@media (min-width:960px){.uk-dropdown-dropbar{--uk-position-viewport-offset:40px}}.uk-dropdown-dropbar-large{padding-top:40px;padding-bottom:40px}.uk-dropdown-nav{font-size:.875rem}.uk-dropdown-nav>li>a{color:#999}.uk-dropdown-nav>li.uk-active>a,.uk-dropdown-nav>li>a:hover{color:#666}.uk-dropdown-nav .uk-nav-subtitle{font-size:12px}.uk-dropdown-nav .uk-nav-header{color:#333}.uk-dropdown-nav .uk-nav-divider{border-top:1px solid #e5e5e5}.uk-dropdown-nav .uk-nav-sub a{color:#999}.uk-dropdown-nav .uk-nav-sub a:hover,.uk-dropdown-nav .uk-nav-sub li.uk-active>a{color:#666}.uk-lightbox{display:none;position:fixed;inset:0;z-index:1010;background:#000;opacity:0;transition:opacity .15s linear;touch-action:pinch-zoom}.uk-lightbox.uk-open{display:block;opacity:1}.uk-lightbox :focus-visible{outline-color:#ffffffb3}.uk-lightbox-page{overflow:hidden}.uk-lightbox-items>*{position:absolute;inset:0;display:none;justify-content:center;align-items:center;color:#ffffffb3;will-change:transform,opacity}.uk-lightbox-items>*>*{max-width:100vw;max-height:100vh}.uk-lightbox-items>*>:not(iframe){width:auto;height:auto}.uk-lightbox-items>.uk-active{display:flex}.uk-lightbox-toolbar{padding:10px;background:#0000004d;color:#ffffffb3}.uk-lightbox-toolbar>*{color:#ffffffb3}.uk-lightbox-toolbar-icon{padding:5px;color:#ffffffb3}.uk-lightbox-toolbar-icon:hover{color:#fff}.uk-lightbox-button{box-sizing:border-box;width:50px;height:50px;background:#0000004d;color:#ffffffb3;display:inline-flex;justify-content:center;align-items:center}.uk-lightbox-button:hover{color:#fff}.uk-lightbox-caption:empty{display:none}.uk-lightbox-iframe{width:80%;height:80%}[class*=uk-animation-]{animation:.5s ease-out both}.uk-animation-fade{animation-name:uk-fade;animation-duration:.8s;animation-timing-function:linear}.uk-animation-scale-up{animation-name:uk-fade,uk-scale-up}.uk-animation-scale-down{animation-name:uk-fade,uk-scale-down}.uk-animation-slide-top{animation-name:uk-fade,uk-slide-top}.uk-animation-slide-bottom{animation-name:uk-fade,uk-slide-bottom}.uk-animation-slide-left{animation-name:uk-fade,uk-slide-left}.uk-animation-slide-right{animation-name:uk-fade,uk-slide-right}.uk-animation-slide-top-small{animation-name:uk-fade,uk-slide-top-small}.uk-animation-slide-bottom-small{animation-name:uk-fade,uk-slide-bottom-small}.uk-animation-slide-left-small{animation-name:uk-fade,uk-slide-left-small}.uk-animation-slide-right-small{animation-name:uk-fade,uk-slide-right-small}.uk-animation-slide-top-medium{animation-name:uk-fade,uk-slide-top-medium}.uk-animation-slide-bottom-medium{animation-name:uk-fade,uk-slide-bottom-medium}.uk-animation-slide-left-medium{animation-name:uk-fade,uk-slide-left-medium}.uk-animation-slide-right-medium{animation-name:uk-fade,uk-slide-right-medium}.uk-animation-kenburns{animation-name:uk-kenburns;animation-duration:15s}.uk-animation-shake{animation-name:uk-shake}.uk-animation-stroke{animation-name:uk-stroke;animation-duration:2s;stroke-dasharray:var(--uk-animation-stroke)}.uk-animation-reverse{animation-direction:reverse;animation-timing-function:ease-in}.uk-animation-fast{animation-duration:.1s}.uk-animation-toggle:not(:hover):not(:focus) [class*=uk-animation-]{animation-name:none}@keyframes uk-fade{0%{opacity:0}to{opacity:1}}@keyframes uk-scale-up{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes uk-scale-down{0%{transform:scale(1.1)}to{transform:scale(1)}}@keyframes uk-slide-top{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes uk-slide-bottom{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes uk-slide-left{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes uk-slide-right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes uk-slide-top-small{0%{transform:translateY(-10px)}to{transform:translateY(0)}}@keyframes uk-slide-bottom-small{0%{transform:translateY(10px)}to{transform:translateY(0)}}@keyframes uk-slide-left-small{0%{transform:translate(-10px)}to{transform:translate(0)}}@keyframes uk-slide-right-small{0%{transform:translate(10px)}to{transform:translate(0)}}@keyframes uk-slide-top-medium{0%{transform:translateY(-50px)}to{transform:translateY(0)}}@keyframes uk-slide-bottom-medium{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes uk-slide-left-medium{0%{transform:translate(-50px)}to{transform:translate(0)}}@keyframes uk-slide-right-medium{0%{transform:translate(50px)}to{transform:translate(0)}}@keyframes uk-kenburns{0%{transform:scale(1)}to{transform:scale(1.2)}}@keyframes uk-shake{0%,to{transform:translate(0)}10%{transform:translate(-9px)}20%{transform:translate(8px)}30%{transform:translate(-7px)}40%{transform:translate(6px)}50%{transform:translate(-5px)}60%{transform:translate(4px)}70%{transform:translate(-3px)}80%{transform:translate(2px)}90%{transform:translate(-1px)}}@keyframes uk-stroke{0%{stroke-dashoffset:var(--uk-animation-stroke)}to{stroke-dashoffset:0}}[class*=uk-child-width]>*{box-sizing:border-box;width:100%}.uk-child-width-1-2>*{width:50%}.uk-child-width-1-3>*{width:calc(100% / 3)}.uk-child-width-1-4>*{width:25%}.uk-child-width-1-5>*{width:20%}.uk-child-width-1-6>*{width:calc(100% / 6)}.uk-child-width-auto>*{width:auto}.uk-child-width-expand>:not([class*=uk-width]){flex:1;min-width:1px}@media (min-width:640px){.uk-child-width-1-1\@s>*{width:100%}.uk-child-width-1-2\@s>*{width:50%}.uk-child-width-1-3\@s>*{width:calc(100% / 3)}.uk-child-width-1-4\@s>*{width:25%}.uk-child-width-1-5\@s>*{width:20%}.uk-child-width-1-6\@s>*{width:calc(100% / 6)}.uk-child-width-auto\@s>*{width:auto}.uk-child-width-expand\@s>:not([class*=uk-width]){flex:1;min-width:1px}.uk-child-width-1-1\@s>:not([class*=uk-width]),.uk-child-width-1-2\@s>:not([class*=uk-width]),.uk-child-width-1-3\@s>:not([class*=uk-width]),.uk-child-width-1-4\@s>:not([class*=uk-width]),.uk-child-width-1-5\@s>:not([class*=uk-width]),.uk-child-width-1-6\@s>:not([class*=uk-width]),.uk-child-width-auto\@s>:not([class*=uk-width]){flex:initial}}@media (min-width:960px){.uk-child-width-1-1\@m>*{width:100%}.uk-child-width-1-2\@m>*{width:50%}.uk-child-width-1-3\@m>*{width:calc(100% / 3)}.uk-child-width-1-4\@m>*{width:25%}.uk-child-width-1-5\@m>*{width:20%}.uk-child-width-1-6\@m>*{width:calc(100% / 6)}.uk-child-width-auto\@m>*{width:auto}.uk-child-width-expand\@m>:not([class*=uk-width]){flex:1;min-width:1px}.uk-child-width-1-1\@m>:not([class*=uk-width]),.uk-child-width-1-2\@m>:not([class*=uk-width]),.uk-child-width-1-3\@m>:not([class*=uk-width]),.uk-child-width-1-4\@m>:not([class*=uk-width]),.uk-child-width-1-5\@m>:not([class*=uk-width]),.uk-child-width-1-6\@m>:not([class*=uk-width]),.uk-child-width-auto\@m>:not([class*=uk-width]){flex:initial}}@media (min-width:1200px){.uk-child-width-1-1\@l>*{width:100%}.uk-child-width-1-2\@l>*{width:50%}.uk-child-width-1-3\@l>*{width:calc(100% / 3)}.uk-child-width-1-4\@l>*{width:25%}.uk-child-width-1-5\@l>*{width:20%}.uk-child-width-1-6\@l>*{width:calc(100% / 6)}.uk-child-width-auto\@l>*{width:auto}.uk-child-width-expand\@l>:not([class*=uk-width]){flex:1;min-width:1px}.uk-child-width-1-1\@l>:not([class*=uk-width]),.uk-child-width-1-2\@l>:not([class*=uk-width]),.uk-child-width-1-3\@l>:not([class*=uk-width]),.uk-child-width-1-4\@l>:not([class*=uk-width]),.uk-child-width-1-5\@l>:not([class*=uk-width]),.uk-child-width-1-6\@l>:not([class*=uk-width]),.uk-child-width-auto\@l>:not([class*=uk-width]){flex:initial}}@media (min-width:1600px){.uk-child-width-1-1\@xl>*{width:100%}.uk-child-width-1-2\@xl>*{width:50%}.uk-child-width-1-3\@xl>*{width:calc(100% / 3)}.uk-child-width-1-4\@xl>*{width:25%}.uk-child-width-1-5\@xl>*{width:20%}.uk-child-width-1-6\@xl>*{width:calc(100% / 6)}.uk-child-width-auto\@xl>*{width:auto}.uk-child-width-expand\@xl>:not([class*=uk-width]){flex:1;min-width:1px}.uk-child-width-1-1\@xl>:not([class*=uk-width]),.uk-child-width-1-2\@xl>:not([class*=uk-width]),.uk-child-width-1-3\@xl>:not([class*=uk-width]),.uk-child-width-1-4\@xl>:not([class*=uk-width]),.uk-child-width-1-5\@xl>:not([class*=uk-width]),.uk-child-width-1-6\@xl>:not([class*=uk-width]),.uk-child-width-auto\@xl>:not([class*=uk-width]){flex:initial}}[class*=uk-width]{box-sizing:border-box;width:100%;max-width:100%}.uk-width-1-2{width:50%}.uk-width-1-3{width:calc(100% / 3)}.uk-width-2-3{width:calc(200% / 3)}.uk-width-1-4{width:25%}.uk-width-3-4{width:75%}.uk-width-1-5{width:20%}.uk-width-2-5{width:40%}.uk-width-3-5{width:60%}.uk-width-4-5{width:80%}.uk-width-1-6{width:calc(100% / 6)}.uk-width-5-6{width:calc(500% / 6)}.uk-width-small{width:150px}.uk-width-medium{width:300px}.uk-width-large{width:450px}.uk-width-xlarge{width:600px}.uk-width-2xlarge{width:750px}.uk-width-auto{width:auto}.uk-width-expand{flex:1;min-width:1px}@media (min-width:640px){.uk-width-1-1\@s{width:100%}.uk-width-1-2\@s{width:50%}.uk-width-1-3\@s{width:calc(100% / 3)}.uk-width-2-3\@s{width:calc(200% / 3)}.uk-width-1-4\@s{width:25%}.uk-width-3-4\@s{width:75%}.uk-width-1-5\@s{width:20%}.uk-width-2-5\@s{width:40%}.uk-width-3-5\@s{width:60%}.uk-width-4-5\@s{width:80%}.uk-width-1-6\@s{width:calc(100% / 6)}.uk-width-5-6\@s{width:calc(500% / 6)}.uk-width-small\@s{width:150px}.uk-width-medium\@s{width:300px}.uk-width-large\@s{width:450px}.uk-width-xlarge\@s{width:600px}.uk-width-2xlarge\@s{width:750px}.uk-width-auto\@s{width:auto}.uk-width-expand\@s{flex:1;min-width:1px}.uk-width-1-1\@s,.uk-width-1-2\@s,.uk-width-1-3\@s,.uk-width-1-4\@s,.uk-width-1-5\@s,.uk-width-1-6\@s,.uk-width-2-3\@s,.uk-width-2-5\@s,.uk-width-2xlarge\@s,.uk-width-3-4\@s,.uk-width-3-5\@s,.uk-width-4-5\@s,.uk-width-5-6\@s,.uk-width-auto\@s,.uk-width-large\@s,.uk-width-medium\@s,.uk-width-small\@s,.uk-width-xlarge\@s{flex:initial}}@media (min-width:960px){.uk-width-1-1\@m{width:100%}.uk-width-1-2\@m{width:50%}.uk-width-1-3\@m{width:calc(100% / 3)}.uk-width-2-3\@m{width:calc(200% / 3)}.uk-width-1-4\@m{width:25%}.uk-width-3-4\@m{width:75%}.uk-width-1-5\@m{width:20%}.uk-width-2-5\@m{width:40%}.uk-width-3-5\@m{width:60%}.uk-width-4-5\@m{width:80%}.uk-width-1-6\@m{width:calc(100% / 6)}.uk-width-5-6\@m{width:calc(500% / 6)}.uk-width-small\@m{width:150px}.uk-width-medium\@m{width:300px}.uk-width-large\@m{width:450px}.uk-width-xlarge\@m{width:600px}.uk-width-2xlarge\@m{width:750px}.uk-width-auto\@m{width:auto}.uk-width-expand\@m{flex:1;min-width:1px}.uk-width-1-1\@m,.uk-width-1-2\@m,.uk-width-1-3\@m,.uk-width-1-4\@m,.uk-width-1-5\@m,.uk-width-1-6\@m,.uk-width-2-3\@m,.uk-width-2-5\@m,.uk-width-2xlarge\@m,.uk-width-3-4\@m,.uk-width-3-5\@m,.uk-width-4-5\@m,.uk-width-5-6\@m,.uk-width-auto\@m,.uk-width-large\@m,.uk-width-medium\@m,.uk-width-small\@m,.uk-width-xlarge\@m{flex:initial}}@media (min-width:1200px){.uk-width-1-1\@l{width:100%}.uk-width-1-2\@l{width:50%}.uk-width-1-3\@l{width:calc(100% / 3)}.uk-width-2-3\@l{width:calc(200% / 3)}.uk-width-1-4\@l{width:25%}.uk-width-3-4\@l{width:75%}.uk-width-1-5\@l{width:20%}.uk-width-2-5\@l{width:40%}.uk-width-3-5\@l{width:60%}.uk-width-4-5\@l{width:80%}.uk-width-1-6\@l{width:calc(100% / 6)}.uk-width-5-6\@l{width:calc(500% / 6)}.uk-width-small\@l{width:150px}.uk-width-medium\@l{width:300px}.uk-width-large\@l{width:450px}.uk-width-xlarge\@l{width:600px}.uk-width-2xlarge\@l{width:750px}.uk-width-auto\@l{width:auto}.uk-width-expand\@l{flex:1;min-width:1px}.uk-width-1-1\@l,.uk-width-1-2\@l,.uk-width-1-3\@l,.uk-width-1-4\@l,.uk-width-1-5\@l,.uk-width-1-6\@l,.uk-width-2-3\@l,.uk-width-2-5\@l,.uk-width-2xlarge\@l,.uk-width-3-4\@l,.uk-width-3-5\@l,.uk-width-4-5\@l,.uk-width-5-6\@l,.uk-width-auto\@l,.uk-width-large\@l,.uk-width-medium\@l,.uk-width-small\@l,.uk-width-xlarge\@l{flex:initial}}@media (min-width:1600px){.uk-width-1-1\@xl{width:100%}.uk-width-1-2\@xl{width:50%}.uk-width-1-3\@xl{width:calc(100% / 3)}.uk-width-2-3\@xl{width:calc(200% / 3)}.uk-width-1-4\@xl{width:25%}.uk-width-3-4\@xl{width:75%}.uk-width-1-5\@xl{width:20%}.uk-width-2-5\@xl{width:40%}.uk-width-3-5\@xl{width:60%}.uk-width-4-5\@xl{width:80%}.uk-width-1-6\@xl{width:calc(100% / 6)}.uk-width-5-6\@xl{width:calc(500% / 6)}.uk-width-small\@xl{width:150px}.uk-width-medium\@xl{width:300px}.uk-width-large\@xl{width:450px}.uk-width-xlarge\@xl{width:600px}.uk-width-2xlarge\@xl{width:750px}.uk-width-auto\@xl{width:auto}.uk-width-expand\@xl{flex:1;min-width:1px}.uk-width-1-1\@xl,.uk-width-1-2\@xl,.uk-width-1-3\@xl,.uk-width-1-4\@xl,.uk-width-1-5\@xl,.uk-width-1-6\@xl,.uk-width-2-3\@xl,.uk-width-2-5\@xl,.uk-width-2xlarge\@xl,.uk-width-3-4\@xl,.uk-width-3-5\@xl,.uk-width-4-5\@xl,.uk-width-5-6\@xl,.uk-width-auto\@xl,.uk-width-large\@xl,.uk-width-medium\@xl,.uk-width-small\@xl,.uk-width-xlarge\@xl{flex:initial}}.uk-width-max-content{width:max-content}.uk-width-min-content{width:min-content}[class*=uk-height]{box-sizing:border-box}.uk-height-1-1{height:100%}.uk-height-viewport{min-height:100vh}.uk-height-viewport-2{min-height:200vh}.uk-height-viewport-3{min-height:300vh}.uk-height-viewport-4{min-height:400vh}.uk-height-small{height:150px}.uk-height-medium{height:300px}.uk-height-large{height:450px}.uk-height-max-small{max-height:150px}.uk-height-max-medium{max-height:300px}.uk-height-max-large{max-height:450px}.uk-text-lead{font-size:1.5rem;line-height:1.5;color:#333}.uk-text-meta{font-size:.875rem;line-height:1.4;color:#999}.uk-text-meta>a{color:#999}.uk-text-meta>a:hover{color:#666;text-decoration:none}.uk-text-small{font-size:.875rem;line-height:1.5}.uk-text-large{font-size:1.5rem;line-height:1.5}.uk-text-default{font-size:16px;line-height:1.5}.uk-text-light{font-weight:300}.uk-text-normal{font-weight:400}.uk-text-bold{font-weight:700}.uk-text-lighter{font-weight:lighter}.uk-text-bolder{font-weight:bolder}.uk-text-italic{font-style:italic}.uk-text-capitalize{text-transform:capitalize!important}.uk-text-uppercase{text-transform:uppercase!important}.uk-text-lowercase{text-transform:lowercase!important}.uk-text-decoration-none{text-decoration:none!important}.uk-text-muted{color:#999!important}.uk-text-emphasis{color:#333!important}.uk-text-primary{color:#1e87f0!important}.uk-text-secondary{color:#222!important}.uk-text-success{color:#32d296!important}.uk-text-warning{color:#faa05a!important}.uk-text-danger{color:#f0506e!important}.uk-text-background{-webkit-background-clip:text;color:transparent!important;display:inline-block;background-color:#1e87f0;background-image:linear-gradient(90deg,#1e87f0 0,#411ef0)}.uk-text-left{text-align:left!important}.uk-text-right{text-align:right!important}.uk-text-center{text-align:center!important}.uk-text-justify{text-align:justify!important}@media (min-width:640px){.uk-text-left\@s{text-align:left!important}.uk-text-right\@s{text-align:right!important}.uk-text-center\@s{text-align:center!important}}@media (min-width:960px){.uk-text-left\@m{text-align:left!important}.uk-text-right\@m{text-align:right!important}.uk-text-center\@m{text-align:center!important}}@media (min-width:1200px){.uk-text-left\@l{text-align:left!important}.uk-text-right\@l{text-align:right!important}.uk-text-center\@l{text-align:center!important}}@media (min-width:1600px){.uk-text-left\@xl{text-align:left!important}.uk-text-right\@xl{text-align:right!important}.uk-text-center\@xl{text-align:center!important}}.uk-text-top{vertical-align:top!important}.uk-text-middle{vertical-align:middle!important}.uk-text-bottom{vertical-align:bottom!important}.uk-text-baseline{vertical-align:baseline!important}.uk-text-nowrap{white-space:nowrap}.uk-text-truncate{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}td.uk-text-truncate,th.uk-text-truncate{max-width:0}.uk-text-break{overflow-wrap:break-word}td.uk-text-break,th.uk-text-break{word-break:break-word}[class*=uk-column-]{column-gap:30px}@media (min-width:1200px){[class*=uk-column-]{column-gap:40px}}[class*=uk-column-] img{transform:translateZ(0)}.uk-column-divider{column-rule:1px solid #e5e5e5;column-gap:60px}@media (min-width:1200px){.uk-column-divider{column-gap:80px}}.uk-column-1-2{column-count:2}.uk-column-1-3{column-count:3}.uk-column-1-4{column-count:4}.uk-column-1-5{column-count:5}.uk-column-1-6{column-count:6}@media (min-width:640px){.uk-column-1-2\@s{column-count:2}.uk-column-1-3\@s{column-count:3}.uk-column-1-4\@s{column-count:4}.uk-column-1-5\@s{column-count:5}.uk-column-1-6\@s{column-count:6}}@media (min-width:960px){.uk-column-1-2\@m{column-count:2}.uk-column-1-3\@m{column-count:3}.uk-column-1-4\@m{column-count:4}.uk-column-1-5\@m{column-count:5}.uk-column-1-6\@m{column-count:6}}@media (min-width:1200px){.uk-column-1-2\@l{column-count:2}.uk-column-1-3\@l{column-count:3}.uk-column-1-4\@l{column-count:4}.uk-column-1-5\@l{column-count:5}.uk-column-1-6\@l{column-count:6}}@media (min-width:1600px){.uk-column-1-2\@xl{column-count:2}.uk-column-1-3\@xl{column-count:3}.uk-column-1-4\@xl{column-count:4}.uk-column-1-5\@xl{column-count:5}.uk-column-1-6\@xl{column-count:6}}.uk-column-span{column-span:all}[data-uk-cover]:where(canvas,iframe,svg),[uk-cover]:where(canvas,iframe,svg){max-width:none;position:absolute;left:50%;top:50%;--uk-position-translate-x:-50%;--uk-position-translate-y:-50%;transform:translate(var(--uk-position-translate-x),var(--uk-position-translate-y))}iframe[data-uk-cover],iframe[uk-cover]{pointer-events:none}[data-uk-cover]:where(img,video),[uk-cover]:where(img,video){position:absolute;top:0;left:0;width:100%;height:100%;box-sizing:border-box;object-fit:cover;object-position:center}.uk-cover-container{overflow:hidden;position:relative}.uk-background-default{background-color:#fff}.uk-background-muted{background-color:#f8f8f8}.uk-background-primary{background-color:#1e87f0}.uk-background-secondary{background-color:#222}.uk-background-contain,.uk-background-cover,.uk-background-height-1-1,.uk-background-width-1-1{background-position:50% 50%;background-repeat:no-repeat}.uk-background-cover{background-size:cover}.uk-background-contain{background-size:contain}.uk-background-width-1-1{background-size:100%}.uk-background-height-1-1{background-size:auto 100%}.uk-background-top-left{background-position:0 0}.uk-background-top-center{background-position:50% 0}.uk-background-top-right{background-position:100% 0}.uk-background-center-left{background-position:0 50%}.uk-background-center-center{background-position:50% 50%}.uk-background-center-right{background-position:100% 50%}.uk-background-bottom-left{background-position:0 100%}.uk-background-bottom-center{background-position:50% 100%}.uk-background-bottom-right{background-position:100% 100%}.uk-background-norepeat{background-repeat:no-repeat}.uk-background-fixed{background-attachment:fixed;backface-visibility:hidden}@media (pointer:coarse){.uk-background-fixed{background-attachment:scroll}}@media (max-width:639px){.uk-background-image\@s{background-image:none!important}}@media (max-width:959px){.uk-background-image\@m{background-image:none!important}}@media (max-width:1199px){.uk-background-image\@l{background-image:none!important}}@media (max-width:1599px){.uk-background-image\@xl{background-image:none!important}}.uk-background-blend-multiply{background-blend-mode:multiply}.uk-background-blend-screen{background-blend-mode:screen}.uk-background-blend-overlay{background-blend-mode:overlay}.uk-background-blend-darken{background-blend-mode:darken}.uk-background-blend-lighten{background-blend-mode:lighten}.uk-background-blend-color-dodge{background-blend-mode:color-dodge}.uk-background-blend-color-burn{background-blend-mode:color-burn}.uk-background-blend-hard-light{background-blend-mode:hard-light}.uk-background-blend-soft-light{background-blend-mode:soft-light}.uk-background-blend-difference{background-blend-mode:difference}.uk-background-blend-exclusion{background-blend-mode:exclusion}.uk-background-blend-hue{background-blend-mode:hue}.uk-background-blend-saturation{background-blend-mode:saturation}.uk-background-blend-color{background-blend-mode:color}.uk-background-blend-luminosity{background-blend-mode:luminosity}[class*=uk-align]{display:block;margin-bottom:30px}*+[class*=uk-align]{margin-top:30px}.uk-align-center{margin-left:auto;margin-right:auto}.uk-align-left{margin-top:0;margin-right:30px;float:left}.uk-align-right{margin-top:0;margin-left:30px;float:right}@media (min-width:640px){.uk-align-left\@s{margin-top:0;margin-right:30px;float:left}.uk-align-right\@s{margin-top:0;margin-left:30px;float:right}}@media (min-width:960px){.uk-align-left\@m{margin-top:0;margin-right:30px;float:left}.uk-align-right\@m{margin-top:0;margin-left:30px;float:right}}@media (min-width:1200px){.uk-align-left\@l{margin-top:0;float:left}.uk-align-right\@l{margin-top:0;float:right}.uk-align-left,.uk-align-left\@l,.uk-align-left\@m,.uk-align-left\@s{margin-right:40px}.uk-align-right,.uk-align-right\@l,.uk-align-right\@m,.uk-align-right\@s{margin-left:40px}}@media (min-width:1600px){.uk-align-left\@xl{margin-top:0;margin-right:40px;float:left}.uk-align-right\@xl{margin-top:0;margin-left:40px;float:right}}.uk-svg,.uk-svg:not(.uk-preserve) [fill*="#"]:not(.uk-preserve){fill:currentcolor}.uk-svg:not(.uk-preserve) [stroke*="#"]:not(.uk-preserve){stroke:currentcolor}.uk-svg{transform:translate(0)}.uk-panel{display:flow-root;position:relative;box-sizing:border-box}.uk-panel>:last-child{margin-bottom:0}.uk-panel-scrollable{height:170px;padding:10px;border:1px solid #e5e5e5;overflow:auto;resize:both}.uk-clearfix:before{content:"";display:table-cell}.uk-clearfix:after{content:"";display:table;clear:both}.uk-float-left{float:left}.uk-float-right{float:right}[class*=uk-float-]{max-width:100%}.uk-overflow-hidden{overflow:hidden}.uk-overflow-auto{overflow:auto}.uk-overflow-auto>:last-child{margin-bottom:0}.uk-box-sizing-content{box-sizing:content-box}.uk-box-sizing-border{box-sizing:border-box}.uk-resize{resize:both}.uk-resize-horizontal{resize:horizontal}.uk-resize-vertical{resize:vertical}.uk-display-block{display:block!important}.uk-display-inline{display:inline!important}.uk-display-inline-block{display:inline-block!important}[class*=uk-inline]{display:inline-block;position:relative;max-width:100%;vertical-align:middle;-webkit-backface-visibility:hidden}.uk-inline-clip{overflow:hidden}.uk-preserve-width,.uk-preserve-width canvas,.uk-preserve-width img,.uk-preserve-width svg,.uk-preserve-width video{max-width:none}.uk-responsive-height,.uk-responsive-width{box-sizing:border-box}.uk-responsive-width{max-width:100%!important;height:auto}.uk-responsive-height{max-height:100%;width:auto;max-width:none}[data-uk-responsive],[uk-responsive]{max-width:100%}.uk-object-cover{object-fit:cover}.uk-object-contain{object-fit:contain}.uk-object-fill{object-fit:fill}.uk-object-none{object-fit:none}.uk-object-scale-down{object-fit:scale-down}.uk-object-top-left{object-position:0 0}.uk-object-top-center{object-position:50% 0}.uk-object-top-right{object-position:100% 0}.uk-object-center-left{object-position:0 50%}.uk-object-center-center{object-position:50% 50%}.uk-object-center-right{object-position:100% 50%}.uk-object-bottom-left{object-position:0 100%}.uk-object-bottom-center{object-position:50% 100%}.uk-object-bottom-right{object-position:100% 100%}.uk-border-circle{border-radius:50%}.uk-border-pill{border-radius:500px}.uk-border-rounded{border-radius:5px}.uk-inline-clip[class*=uk-border-]{-webkit-transform:translateZ(0)}.uk-box-shadow-small{box-shadow:0 2px 8px #00000014}.uk-box-shadow-medium{box-shadow:0 5px 15px #00000014}.uk-box-shadow-large{box-shadow:0 14px 25px #00000029}.uk-box-shadow-xlarge{box-shadow:0 28px 50px #00000029}[class*=uk-box-shadow-hover]{transition:box-shadow .1s ease-in-out}.uk-box-shadow-hover-small:hover{box-shadow:0 2px 8px #00000014}.uk-box-shadow-hover-medium:hover{box-shadow:0 5px 15px #00000014}.uk-box-shadow-hover-large:hover{box-shadow:0 14px 25px #00000029}.uk-box-shadow-hover-xlarge:hover{box-shadow:0 28px 50px #00000029}@supports (filter:blur(0)){.uk-box-shadow-bottom{display:inline-block;position:relative;z-index:0;max-width:100%;vertical-align:middle}.uk-box-shadow-bottom:after{content:"";position:absolute;bottom:-30px;left:0;right:0;z-index:-1;height:30px;border-radius:100%;background:#444;filter:blur(20px);will-change:filter}}.uk-dropcap:first-letter,.uk-dropcap>p:first-of-type:first-letter{display:block;margin-right:10px;float:left;font-size:4.5em;line-height:1;margin-bottom:-2px}@-moz-document url-prefix(){.uk-dropcap:first-letter,.uk-dropcap>p:first-of-type:first-letter{margin-top:1.1%}}.uk-logo{font-size:1.5rem;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";color:#333;text-decoration:none}:where(.uk-logo){display:inline-block;vertical-align:middle}.uk-logo:hover{color:#333;text-decoration:none}.uk-logo :where(img,svg,video){display:block}.uk-logo-inverse{display:none}.uk-disabled{pointer-events:none}.uk-drag,.uk-drag *{cursor:move}.uk-drag iframe{pointer-events:none}.uk-dragover{box-shadow:0 0 20px #6464644d}.uk-blend-multiply{mix-blend-mode:multiply}.uk-blend-screen{mix-blend-mode:screen}.uk-blend-overlay{mix-blend-mode:overlay}.uk-blend-darken{mix-blend-mode:darken}.uk-blend-lighten{mix-blend-mode:lighten}.uk-blend-color-dodge{mix-blend-mode:color-dodge}.uk-blend-color-burn{mix-blend-mode:color-burn}.uk-blend-hard-light{mix-blend-mode:hard-light}.uk-blend-soft-light{mix-blend-mode:soft-light}.uk-blend-difference{mix-blend-mode:difference}.uk-blend-exclusion{mix-blend-mode:exclusion}.uk-blend-hue{mix-blend-mode:hue}.uk-blend-saturation{mix-blend-mode:saturation}.uk-blend-color{mix-blend-mode:color}.uk-blend-luminosity{mix-blend-mode:luminosity}.uk-transform-center{transform:translate(-50%,-50%)}.uk-transform-origin-top-left{transform-origin:0 0}.uk-transform-origin-top-center{transform-origin:50% 0}.uk-transform-origin-top-right{transform-origin:100% 0}.uk-transform-origin-center-left{transform-origin:0 50%}.uk-transform-origin-center-right{transform-origin:100% 50%}.uk-transform-origin-bottom-left{transform-origin:0 100%}.uk-transform-origin-bottom-center{transform-origin:50% 100%}.uk-transform-origin-bottom-right{transform-origin:100% 100%}.uk-flex{display:flex}.uk-flex-inline{display:inline-flex}.uk-flex-left{justify-content:flex-start}.uk-flex-center{justify-content:center}.uk-flex-right{justify-content:flex-end}.uk-flex-between{justify-content:space-between}.uk-flex-around{justify-content:space-around}@media (min-width:640px){.uk-flex-left\@s{justify-content:flex-start}.uk-flex-center\@s{justify-content:center}.uk-flex-right\@s{justify-content:flex-end}.uk-flex-between\@s{justify-content:space-between}.uk-flex-around\@s{justify-content:space-around}}@media (min-width:960px){.uk-flex-left\@m{justify-content:flex-start}.uk-flex-center\@m{justify-content:center}.uk-flex-right\@m{justify-content:flex-end}.uk-flex-between\@m{justify-content:space-between}.uk-flex-around\@m{justify-content:space-around}}@media (min-width:1200px){.uk-flex-left\@l{justify-content:flex-start}.uk-flex-center\@l{justify-content:center}.uk-flex-right\@l{justify-content:flex-end}.uk-flex-between\@l{justify-content:space-between}.uk-flex-around\@l{justify-content:space-around}}@media (min-width:1600px){.uk-flex-left\@xl{justify-content:flex-start}.uk-flex-center\@xl{justify-content:center}.uk-flex-right\@xl{justify-content:flex-end}.uk-flex-between\@xl{justify-content:space-between}.uk-flex-around\@xl{justify-content:space-around}}.uk-flex-stretch{align-items:stretch}.uk-flex-top{align-items:flex-start}.uk-flex-middle{align-items:center}.uk-flex-bottom{align-items:flex-end}@media (min-width:640px){.uk-flex-stretch\@s{align-items:stretch}.uk-flex-top\@s{align-items:flex-start}.uk-flex-middle\@s{align-items:center}.uk-flex-bottom\@s{align-items:flex-end}}@media (min-width:960px){.uk-flex-stretch\@m{align-items:stretch}.uk-flex-top\@m{align-items:flex-start}.uk-flex-middle\@m{align-items:center}.uk-flex-bottom\@m{align-items:flex-end}}@media (min-width:1200px){.uk-flex-stretch\@l{align-items:stretch}.uk-flex-top\@l{align-items:flex-start}.uk-flex-middle\@l{align-items:center}.uk-flex-bottom\@l{align-items:flex-end}}@media (min-width:1600px){.uk-flex-stretch\@xl{align-items:stretch}.uk-flex-top\@xl{align-items:flex-start}.uk-flex-middle\@xl{align-items:center}.uk-flex-bottom\@xl{align-items:flex-end}}.uk-flex-row{flex-direction:row}.uk-flex-row-reverse{flex-direction:row-reverse}.uk-flex-column{flex-direction:column}.uk-flex-column-reverse{flex-direction:column-reverse}@media (min-width:640px){.uk-flex-row\@s{flex-direction:row}.uk-flex-column\@s{flex-direction:column}}@media (min-width:960px){.uk-flex-row\@m{flex-direction:row}.uk-flex-column\@m{flex-direction:column}}@media (min-width:1200px){.uk-flex-row\@l{flex-direction:row}.uk-flex-column\@l{flex-direction:column}}@media (min-width:1600px){.uk-flex-row\@xl{flex-direction:row}.uk-flex-column\@xl{flex-direction:column}}.uk-flex-nowrap{flex-wrap:nowrap}.uk-flex-wrap{flex-wrap:wrap}.uk-flex-wrap-reverse{flex-wrap:wrap-reverse}.uk-flex-wrap-stretch{align-content:stretch}.uk-flex-wrap-top{align-content:flex-start}.uk-flex-wrap-middle{align-content:center}.uk-flex-wrap-bottom{align-content:flex-end}.uk-flex-wrap-between{align-content:space-between}.uk-flex-wrap-around{align-content:space-around}.uk-flex-first{order:-1}.uk-flex-last{order:99}@media (min-width:640px){.uk-flex-first\@s{order:-1}.uk-flex-last\@s{order:99}}@media (min-width:960px){.uk-flex-first\@m{order:-1}.uk-flex-last\@m{order:99}}@media (min-width:1200px){.uk-flex-first\@l{order:-1}.uk-flex-last\@l{order:99}}@media (min-width:1600px){.uk-flex-first\@xl{order:-1}.uk-flex-last\@xl{order:99}}.uk-flex-initial{flex:initial}.uk-flex-none{flex:none}.uk-flex-auto{flex:auto}.uk-flex-1{flex:1}@media (min-width:640px){.uk-flex-initial\@s{flex:initial}.uk-flex-none\@s{flex:none}.uk-flex-1\@s{flex:1}}@media (min-width:960px){.uk-flex-initial\@m{flex:initial}.uk-flex-none\@m{flex:none}.uk-flex-1\@m{flex:1}}@media (min-width:1200px){.uk-flex-initial\@l{flex:initial}.uk-flex-none\@l{flex:none}.uk-flex-1\@l{flex:1}}@media (min-width:1600px){.uk-flex-initial\@xl{flex:initial}.uk-flex-none\@xl{flex:none}.uk-flex-1\@xl{flex:1}}.uk-margin{margin-bottom:20px}*+.uk-margin{margin-top:20px!important}.uk-margin-top{margin-top:20px!important}.uk-margin-bottom{margin-bottom:20px!important}.uk-margin-left{margin-left:20px!important}.uk-margin-right{margin-right:20px!important}.uk-margin-small{margin-bottom:10px}*+.uk-margin-small{margin-top:10px!important}.uk-margin-small-top{margin-top:10px!important}.uk-margin-small-bottom{margin-bottom:10px!important}.uk-margin-small-left{margin-left:10px!important}.uk-margin-small-right{margin-right:10px!important}.uk-margin-medium{margin-bottom:40px}*+.uk-margin-medium{margin-top:40px!important}.uk-margin-medium-top{margin-top:40px!important}.uk-margin-medium-bottom{margin-bottom:40px!important}.uk-margin-medium-left{margin-left:40px!important}.uk-margin-medium-right{margin-right:40px!important}.uk-margin-large{margin-bottom:40px}*+.uk-margin-large{margin-top:40px!important}.uk-margin-large-top{margin-top:40px!important}.uk-margin-large-bottom{margin-bottom:40px!important}.uk-margin-large-left{margin-left:40px!important}.uk-margin-large-right{margin-right:40px!important}@media (min-width:1200px){.uk-margin-large{margin-bottom:70px}*+.uk-margin-large{margin-top:70px!important}.uk-margin-large-top{margin-top:70px!important}.uk-margin-large-bottom{margin-bottom:70px!important}.uk-margin-large-left{margin-left:70px!important}.uk-margin-large-right{margin-right:70px!important}}.uk-margin-xlarge{margin-bottom:70px}*+.uk-margin-xlarge{margin-top:70px!important}.uk-margin-xlarge-top{margin-top:70px!important}.uk-margin-xlarge-bottom{margin-bottom:70px!important}.uk-margin-xlarge-left{margin-left:70px!important}.uk-margin-xlarge-right{margin-right:70px!important}@media (min-width:1200px){.uk-margin-xlarge{margin-bottom:140px}*+.uk-margin-xlarge{margin-top:140px!important}.uk-margin-xlarge-top{margin-top:140px!important}.uk-margin-xlarge-bottom{margin-bottom:140px!important}.uk-margin-xlarge-left{margin-left:140px!important}.uk-margin-xlarge-right{margin-right:140px!important}}.uk-margin-auto{margin-left:auto!important;margin-right:auto!important}.uk-margin-auto-top{margin-top:auto!important}.uk-margin-auto-bottom{margin-bottom:auto!important}.uk-margin-auto-left{margin-left:auto!important}.uk-margin-auto-right{margin-right:auto!important}.uk-margin-auto-vertical{margin-top:auto!important;margin-bottom:auto!important}@media (min-width:640px){.uk-margin-auto\@s{margin-left:auto!important;margin-right:auto!important}.uk-margin-auto-left\@s{margin-left:auto!important}.uk-margin-auto-right\@s{margin-right:auto!important}}@media (min-width:960px){.uk-margin-auto\@m{margin-left:auto!important;margin-right:auto!important}.uk-margin-auto-left\@m{margin-left:auto!important}.uk-margin-auto-right\@m{margin-right:auto!important}}@media (min-width:1200px){.uk-margin-auto\@l{margin-left:auto!important;margin-right:auto!important}.uk-margin-auto-left\@l{margin-left:auto!important}.uk-margin-auto-right\@l{margin-right:auto!important}}@media (min-width:1600px){.uk-margin-auto\@xl{margin-left:auto!important;margin-right:auto!important}.uk-margin-auto-left\@xl{margin-left:auto!important}.uk-margin-auto-right\@xl{margin-right:auto!important}}.uk-margin-remove{margin:0!important}.uk-margin-remove-top{margin-top:0!important}.uk-margin-remove-bottom{margin-bottom:0!important}.uk-margin-remove-left{margin-left:0!important}.uk-margin-remove-right{margin-right:0!important}.uk-margin-remove-vertical{margin-top:0!important;margin-bottom:0!important}.uk-margin-remove-adjacent+*,.uk-margin-remove-first-child>:first-child{margin-top:0!important}.uk-margin-remove-last-child>:last-child{margin-bottom:0!important}@media (min-width:640px){.uk-margin-remove-left\@s{margin-left:0!important}.uk-margin-remove-right\@s{margin-right:0!important}}@media (min-width:960px){.uk-margin-remove-left\@m{margin-left:0!important}.uk-margin-remove-right\@m{margin-right:0!important}}@media (min-width:1200px){.uk-margin-remove-left\@l{margin-left:0!important}.uk-margin-remove-right\@l{margin-right:0!important}}@media (min-width:1600px){.uk-margin-remove-left\@xl{margin-left:0!important}.uk-margin-remove-right\@xl{margin-right:0!important}}.uk-padding{padding:30px}@media (min-width:1200px){.uk-padding{padding:40px}}.uk-padding-small{padding:15px}.uk-padding-large{padding:40px}@media (min-width:1200px){.uk-padding-large{padding:70px}}.uk-padding-remove{padding:0!important}.uk-padding-remove-top{padding-top:0!important}.uk-padding-remove-bottom{padding-bottom:0!important}.uk-padding-remove-left{padding-left:0!important}.uk-padding-remove-right{padding-right:0!important}.uk-padding-remove-vertical{padding-top:0!important;padding-bottom:0!important}.uk-padding-remove-horizontal{padding-left:0!important;padding-right:0!important}:root{--uk-position-margin-offset:0px}[class*=uk-position-bottom],[class*=uk-position-center],[class*=uk-position-left],[class*=uk-position-right],[class*=uk-position-top]{position:absolute!important;max-width:calc(100% - (var(--uk-position-margin-offset) * 2));box-sizing:border-box}.uk-position-top{top:0;left:0;right:0}.uk-position-bottom{bottom:0;left:0;right:0}.uk-position-left{top:0;bottom:0;left:0}.uk-position-right{top:0;bottom:0;right:0}.uk-position-top-left{top:0;left:0}.uk-position-top-right{top:0;right:0}.uk-position-bottom-left{bottom:0;left:0}.uk-position-bottom-right{bottom:0;right:0}.uk-position-center{top:calc(50% - var(--uk-position-margin-offset));left:calc(50% - var(--uk-position-margin-offset));--uk-position-translate-x:-50%;--uk-position-translate-y:-50%;transform:translate(var(--uk-position-translate-x),var(--uk-position-translate-y));width:max-content}.uk-position-center-vertical,[class*=uk-position-center-left],[class*=uk-position-center-right]{top:calc(50% - var(--uk-position-margin-offset));--uk-position-translate-y:-50%;transform:translateY(var(--uk-position-translate-y))}.uk-position-center-left{left:0}.uk-position-center-right{right:0}.uk-position-center-vertical{left:0;right:0}.uk-position-center-left-out{right:100%;width:max-content}.uk-position-center-right-out{left:100%;width:max-content}.uk-position-bottom-center,.uk-position-center-horizontal,.uk-position-top-center{left:calc(50% - var(--uk-position-margin-offset));--uk-position-translate-x:-50%;transform:translate(var(--uk-position-translate-x));width:max-content}.uk-position-top-center{top:0}.uk-position-bottom-center{bottom:0}.uk-position-center-horizontal{top:0;bottom:0}.uk-position-cover{position:absolute;inset:0}.uk-position-small{margin:15px;--uk-position-margin-offset:15px}.uk-position-medium,.uk-position-large{margin:30px;--uk-position-margin-offset:30px}@media (min-width:1200px){.uk-position-large{margin:50px;--uk-position-margin-offset:50px}}.uk-position-relative{position:relative!important}.uk-position-absolute{position:absolute!important}.uk-position-fixed{position:fixed!important}.uk-position-sticky{position:sticky!important}.uk-position-z-index{z-index:1}.uk-position-z-index-zero{z-index:0}.uk-position-z-index-negative{z-index:-1}.uk-position-z-index-high{z-index:990}:where(.uk-transition-fade),:where([class*=uk-transition-scale]),:where([class*=uk-transition-slide]){--uk-position-translate-x:0;--uk-position-translate-y:0}.uk-transition-fade,[class*=uk-transition-scale],[class*=uk-transition-slide]{--uk-translate-x:0;--uk-translate-y:0;--uk-scale-x:1;--uk-scale-y:1;transform:translate(var(--uk-position-translate-x),var(--uk-position-translate-y)) translate(var(--uk-translate-x),var(--uk-translate-y)) scale(var(--uk-scale-x),var(--uk-scale-y));transition:.3s ease-out;transition-property:opacity,transform,filter;opacity:0}.uk-transition-active.uk-active .uk-transition-fade,.uk-transition-toggle .uk-transition-fade:focus-within,.uk-transition-toggle:focus .uk-transition-fade,.uk-transition-toggle:hover .uk-transition-fade{opacity:1}[class*=uk-transition-scale]{-webkit-backface-visibility:hidden}.uk-transition-scale-up{--uk-scale-x:1;--uk-scale-y:1}.uk-transition-scale-down{--uk-scale-x:1.03;--uk-scale-y:1.03}.uk-transition-active.uk-active .uk-transition-scale-up,.uk-transition-toggle .uk-transition-scale-up:focus-within,.uk-transition-toggle:focus .uk-transition-scale-up,.uk-transition-toggle:hover .uk-transition-scale-up{--uk-scale-x:1.03;--uk-scale-y:1.03;opacity:1}.uk-transition-active.uk-active .uk-transition-scale-down,.uk-transition-toggle .uk-transition-scale-down:focus-within,.uk-transition-toggle:focus .uk-transition-scale-down,.uk-transition-toggle:hover .uk-transition-scale-down{--uk-scale-x:1;--uk-scale-y:1;opacity:1}.uk-transition-slide-top{--uk-translate-y:-100%}.uk-transition-slide-bottom{--uk-translate-y:100%}.uk-transition-slide-left{--uk-translate-x:-100%}.uk-transition-slide-right{--uk-translate-x:100%}.uk-transition-slide-top-small{--uk-translate-y: -10px }.uk-transition-slide-bottom-small{--uk-translate-y:10px}.uk-transition-slide-left-small{--uk-translate-x: -10px }.uk-transition-slide-right-small{--uk-translate-x:10px}.uk-transition-slide-top-medium{--uk-translate-y: -50px }.uk-transition-slide-bottom-medium{--uk-translate-y:50px}.uk-transition-slide-left-medium{--uk-translate-x: -50px }.uk-transition-slide-right-medium{--uk-translate-x:50px}.uk-transition-active.uk-active [class*=uk-transition-slide],.uk-transition-toggle [class*=uk-transition-slide]:focus-within,.uk-transition-toggle:focus [class*=uk-transition-slide],.uk-transition-toggle:hover [class*=uk-transition-slide]{--uk-translate-x:0;--uk-translate-y:0;opacity:1}.uk-transition-opaque{opacity:1}.uk-transition-slow{transition-duration:.7s}.uk-transition-disable,.uk-transition-disable *{transition:none!important}.uk-hidden,[hidden]{display:none!important}@media (min-width:640px){.uk-hidden\@s{display:none!important}}@media (min-width:960px){.uk-hidden\@m{display:none!important}}@media (min-width:1200px){.uk-hidden\@l{display:none!important}}@media (min-width:1600px){.uk-hidden\@xl{display:none!important}}@media (max-width:639px){.uk-visible\@s{display:none!important}}@media (max-width:959px){.uk-visible\@m{display:none!important}}@media (max-width:1199px){.uk-visible\@l{display:none!important}}@media (max-width:1599px){.uk-visible\@xl{display:none!important}}.uk-invisible{visibility:hidden!important}.uk-hidden-visually:not(:focus):not(:active):not(:focus-within),.uk-visible-toggle:not(:hover):not(:focus) .uk-hidden-hover:not(:focus-within){position:absolute!important;width:0!important;height:0!important;padding:0!important;border:0!important;margin:0!important;overflow:hidden!important}.uk-visible-toggle:not(:hover):not(:focus) .uk-invisible-hover:not(:focus-within){opacity:0!important}@media (hover:none){.uk-hidden-touch{display:none!important}}@media (hover){.uk-hidden-notouch{display:none!important}}.uk-card-primary.uk-card-body,.uk-card-primary>:not([class*=uk-card-media]),.uk-card-secondary.uk-card-body,.uk-card-secondary>:not([class*=uk-card-media]),.uk-light,.uk-offcanvas-bar,.uk-overlay-primary,.uk-section-primary:not(.uk-preserve-color),.uk-section-secondary:not(.uk-preserve-color),.uk-tile-primary:not(.uk-preserve-color),.uk-tile-secondary:not(.uk-preserve-color){color:#ffffffb3}.uk-card-primary.uk-card-body .uk-link,.uk-card-primary.uk-card-body a,.uk-card-primary>:not([class*=uk-card-media]) .uk-link,.uk-card-primary>:not([class*=uk-card-media]) a,.uk-card-secondary.uk-card-body .uk-link,.uk-card-secondary.uk-card-body a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link,.uk-card-secondary>:not([class*=uk-card-media]) a,.uk-light .uk-link,.uk-light a,.uk-offcanvas-bar .uk-link,.uk-offcanvas-bar a,.uk-overlay-primary .uk-link,.uk-overlay-primary a,.uk-section-primary:not(.uk-preserve-color) .uk-link,.uk-section-primary:not(.uk-preserve-color) a,.uk-section-secondary:not(.uk-preserve-color) .uk-link,.uk-section-secondary:not(.uk-preserve-color) a,.uk-tile-primary:not(.uk-preserve-color) .uk-link,.uk-tile-primary:not(.uk-preserve-color) a,.uk-tile-secondary:not(.uk-preserve-color) .uk-link,.uk-tile-secondary:not(.uk-preserve-color) a{color:#fff}.uk-card-primary.uk-card-body .uk-link-toggle:hover .uk-link,.uk-card-primary.uk-card-body .uk-link:hover,.uk-card-primary.uk-card-body a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-link-toggle:hover .uk-link,.uk-card-primary>:not([class*=uk-card-media]) .uk-link:hover,.uk-card-primary>:not([class*=uk-card-media]) a:hover,.uk-card-secondary.uk-card-body .uk-link-toggle:hover .uk-link,.uk-card-secondary.uk-card-body .uk-link:hover,.uk-card-secondary.uk-card-body a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link-toggle:hover .uk-link,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link:hover,.uk-card-secondary>:not([class*=uk-card-media]) a:hover,.uk-light .uk-link-toggle:hover .uk-link,.uk-light .uk-link:hover,.uk-light a:hover,.uk-offcanvas-bar .uk-link-toggle:hover .uk-link,.uk-offcanvas-bar .uk-link:hover,.uk-offcanvas-bar a:hover,.uk-overlay-primary .uk-link-toggle:hover .uk-link,.uk-overlay-primary .uk-link:hover,.uk-overlay-primary a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link,.uk-section-primary:not(.uk-preserve-color) .uk-link:hover,.uk-section-primary:not(.uk-preserve-color) a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link,.uk-section-secondary:not(.uk-preserve-color) .uk-link:hover,.uk-section-secondary:not(.uk-preserve-color) a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link,.uk-tile-primary:not(.uk-preserve-color) .uk-link:hover,.uk-tile-primary:not(.uk-preserve-color) a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link,.uk-tile-secondary:not(.uk-preserve-color) .uk-link:hover,.uk-tile-secondary:not(.uk-preserve-color) a:hover{color:#fff}.uk-card-primary.uk-card-body :not(pre)>code,.uk-card-primary.uk-card-body :not(pre)>kbd,.uk-card-primary.uk-card-body :not(pre)>samp,.uk-card-primary>:not([class*=uk-card-media]) :not(pre)>code,.uk-card-primary>:not([class*=uk-card-media]) :not(pre)>kbd,.uk-card-primary>:not([class*=uk-card-media]) :not(pre)>samp,.uk-card-secondary.uk-card-body :not(pre)>code,.uk-card-secondary.uk-card-body :not(pre)>kbd,.uk-card-secondary.uk-card-body :not(pre)>samp,.uk-card-secondary>:not([class*=uk-card-media]) :not(pre)>code,.uk-card-secondary>:not([class*=uk-card-media]) :not(pre)>kbd,.uk-card-secondary>:not([class*=uk-card-media]) :not(pre)>samp,.uk-light :not(pre)>code,.uk-light :not(pre)>kbd,.uk-light :not(pre)>samp,.uk-offcanvas-bar :not(pre)>code,.uk-offcanvas-bar :not(pre)>kbd,.uk-offcanvas-bar :not(pre)>samp,.uk-overlay-primary :not(pre)>code,.uk-overlay-primary :not(pre)>kbd,.uk-overlay-primary :not(pre)>samp,.uk-section-primary:not(.uk-preserve-color) :not(pre)>code,.uk-section-primary:not(.uk-preserve-color) :not(pre)>kbd,.uk-section-primary:not(.uk-preserve-color) :not(pre)>samp,.uk-section-secondary:not(.uk-preserve-color) :not(pre)>code,.uk-section-secondary:not(.uk-preserve-color) :not(pre)>kbd,.uk-section-secondary:not(.uk-preserve-color) :not(pre)>samp,.uk-tile-primary:not(.uk-preserve-color) :not(pre)>code,.uk-tile-primary:not(.uk-preserve-color) :not(pre)>kbd,.uk-tile-primary:not(.uk-preserve-color) :not(pre)>samp,.uk-tile-secondary:not(.uk-preserve-color) :not(pre)>code,.uk-tile-secondary:not(.uk-preserve-color) :not(pre)>kbd,.uk-tile-secondary:not(.uk-preserve-color) :not(pre)>samp{color:#ffffffb3;background-color:#ffffff1a}.uk-card-primary.uk-card-body em,.uk-card-primary>:not([class*=uk-card-media]) em,.uk-card-secondary.uk-card-body em,.uk-card-secondary>:not([class*=uk-card-media]) em,.uk-light em,.uk-offcanvas-bar em,.uk-overlay-primary em,.uk-section-primary:not(.uk-preserve-color) em,.uk-section-secondary:not(.uk-preserve-color) em,.uk-tile-primary:not(.uk-preserve-color) em,.uk-tile-secondary:not(.uk-preserve-color) em{color:#fff}.uk-card-primary.uk-card-body .uk-h1,.uk-card-primary.uk-card-body .uk-h2,.uk-card-primary.uk-card-body .uk-h3,.uk-card-primary.uk-card-body .uk-h4,.uk-card-primary.uk-card-body .uk-h5,.uk-card-primary.uk-card-body .uk-h6,.uk-card-primary.uk-card-body .uk-heading-2xlarge,.uk-card-primary.uk-card-body .uk-heading-3xlarge,.uk-card-primary.uk-card-body .uk-heading-large,.uk-card-primary.uk-card-body .uk-heading-medium,.uk-card-primary.uk-card-body .uk-heading-small,.uk-card-primary.uk-card-body .uk-heading-xlarge,.uk-card-primary.uk-card-body h1,.uk-card-primary.uk-card-body h2,.uk-card-primary.uk-card-body h3,.uk-card-primary.uk-card-body h4,.uk-card-primary.uk-card-body h5,.uk-card-primary.uk-card-body h6,.uk-card-primary>:not([class*=uk-card-media]) .uk-h1,.uk-card-primary>:not([class*=uk-card-media]) .uk-h2,.uk-card-primary>:not([class*=uk-card-media]) .uk-h3,.uk-card-primary>:not([class*=uk-card-media]) .uk-h4,.uk-card-primary>:not([class*=uk-card-media]) .uk-h5,.uk-card-primary>:not([class*=uk-card-media]) .uk-h6,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-2xlarge,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-3xlarge,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-large,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-medium,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-small,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-xlarge,.uk-card-primary>:not([class*=uk-card-media]) h1,.uk-card-primary>:not([class*=uk-card-media]) h2,.uk-card-primary>:not([class*=uk-card-media]) h3,.uk-card-primary>:not([class*=uk-card-media]) h4,.uk-card-primary>:not([class*=uk-card-media]) h5,.uk-card-primary>:not([class*=uk-card-media]) h6,.uk-card-secondary.uk-card-body .uk-h1,.uk-card-secondary.uk-card-body .uk-h2,.uk-card-secondary.uk-card-body .uk-h3,.uk-card-secondary.uk-card-body .uk-h4,.uk-card-secondary.uk-card-body .uk-h5,.uk-card-secondary.uk-card-body .uk-h6,.uk-card-secondary.uk-card-body .uk-heading-2xlarge,.uk-card-secondary.uk-card-body .uk-heading-3xlarge,.uk-card-secondary.uk-card-body .uk-heading-large,.uk-card-secondary.uk-card-body .uk-heading-medium,.uk-card-secondary.uk-card-body .uk-heading-small,.uk-card-secondary.uk-card-body .uk-heading-xlarge,.uk-card-secondary.uk-card-body h1,.uk-card-secondary.uk-card-body h2,.uk-card-secondary.uk-card-body h3,.uk-card-secondary.uk-card-body h4,.uk-card-secondary.uk-card-body h5,.uk-card-secondary.uk-card-body h6,.uk-card-secondary>:not([class*=uk-card-media]) .uk-h1,.uk-card-secondary>:not([class*=uk-card-media]) .uk-h2,.uk-card-secondary>:not([class*=uk-card-media]) .uk-h3,.uk-card-secondary>:not([class*=uk-card-media]) .uk-h4,.uk-card-secondary>:not([class*=uk-card-media]) .uk-h5,.uk-card-secondary>:not([class*=uk-card-media]) .uk-h6,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-2xlarge,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-3xlarge,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-large,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-medium,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-small,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-xlarge,.uk-card-secondary>:not([class*=uk-card-media]) h1,.uk-card-secondary>:not([class*=uk-card-media]) h2,.uk-card-secondary>:not([class*=uk-card-media]) h3,.uk-card-secondary>:not([class*=uk-card-media]) h4,.uk-card-secondary>:not([class*=uk-card-media]) h5,.uk-card-secondary>:not([class*=uk-card-media]) h6,.uk-light .uk-h1,.uk-light .uk-h2,.uk-light .uk-h3,.uk-light .uk-h4,.uk-light .uk-h5,.uk-light .uk-h6,.uk-light .uk-heading-2xlarge,.uk-light .uk-heading-3xlarge,.uk-light .uk-heading-large,.uk-light .uk-heading-medium,.uk-light .uk-heading-small,.uk-light .uk-heading-xlarge,.uk-light h1,.uk-light h2,.uk-light h3,.uk-light h4,.uk-light h5,.uk-light h6,.uk-offcanvas-bar .uk-h1,.uk-offcanvas-bar .uk-h2,.uk-offcanvas-bar .uk-h3,.uk-offcanvas-bar .uk-h4,.uk-offcanvas-bar .uk-h5,.uk-offcanvas-bar .uk-h6,.uk-offcanvas-bar .uk-heading-2xlarge,.uk-offcanvas-bar .uk-heading-3xlarge,.uk-offcanvas-bar .uk-heading-large,.uk-offcanvas-bar .uk-heading-medium,.uk-offcanvas-bar .uk-heading-small,.uk-offcanvas-bar .uk-heading-xlarge,.uk-offcanvas-bar h1,.uk-offcanvas-bar h2,.uk-offcanvas-bar h3,.uk-offcanvas-bar h4,.uk-offcanvas-bar h5,.uk-offcanvas-bar h6,.uk-overlay-primary .uk-h1,.uk-overlay-primary .uk-h2,.uk-overlay-primary .uk-h3,.uk-overlay-primary .uk-h4,.uk-overlay-primary .uk-h5,.uk-overlay-primary .uk-h6,.uk-overlay-primary .uk-heading-2xlarge,.uk-overlay-primary .uk-heading-3xlarge,.uk-overlay-primary .uk-heading-large,.uk-overlay-primary .uk-heading-medium,.uk-overlay-primary .uk-heading-small,.uk-overlay-primary .uk-heading-xlarge,.uk-overlay-primary h1,.uk-overlay-primary h2,.uk-overlay-primary h3,.uk-overlay-primary h4,.uk-overlay-primary h5,.uk-overlay-primary h6,.uk-section-primary:not(.uk-preserve-color) .uk-h1,.uk-section-primary:not(.uk-preserve-color) .uk-h2,.uk-section-primary:not(.uk-preserve-color) .uk-h3,.uk-section-primary:not(.uk-preserve-color) .uk-h4,.uk-section-primary:not(.uk-preserve-color) .uk-h5,.uk-section-primary:not(.uk-preserve-color) .uk-h6,.uk-section-primary:not(.uk-preserve-color) .uk-heading-2xlarge,.uk-section-primary:not(.uk-preserve-color) .uk-heading-3xlarge,.uk-section-primary:not(.uk-preserve-color) .uk-heading-large,.uk-section-primary:not(.uk-preserve-color) .uk-heading-medium,.uk-section-primary:not(.uk-preserve-color) .uk-heading-small,.uk-section-primary:not(.uk-preserve-color) .uk-heading-xlarge,.uk-section-primary:not(.uk-preserve-color) h1,.uk-section-primary:not(.uk-preserve-color) h2,.uk-section-primary:not(.uk-preserve-color) h3,.uk-section-primary:not(.uk-preserve-color) h4,.uk-section-primary:not(.uk-preserve-color) h5,.uk-section-primary:not(.uk-preserve-color) h6,.uk-section-secondary:not(.uk-preserve-color) .uk-h1,.uk-section-secondary:not(.uk-preserve-color) .uk-h2,.uk-section-secondary:not(.uk-preserve-color) .uk-h3,.uk-section-secondary:not(.uk-preserve-color) .uk-h4,.uk-section-secondary:not(.uk-preserve-color) .uk-h5,.uk-section-secondary:not(.uk-preserve-color) .uk-h6,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-2xlarge,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-3xlarge,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-large,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-medium,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-small,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-xlarge,.uk-section-secondary:not(.uk-preserve-color) h1,.uk-section-secondary:not(.uk-preserve-color) h2,.uk-section-secondary:not(.uk-preserve-color) h3,.uk-section-secondary:not(.uk-preserve-color) h4,.uk-section-secondary:not(.uk-preserve-color) h5,.uk-section-secondary:not(.uk-preserve-color) h6,.uk-tile-primary:not(.uk-preserve-color) .uk-h1,.uk-tile-primary:not(.uk-preserve-color) .uk-h2,.uk-tile-primary:not(.uk-preserve-color) .uk-h3,.uk-tile-primary:not(.uk-preserve-color) .uk-h4,.uk-tile-primary:not(.uk-preserve-color) .uk-h5,.uk-tile-primary:not(.uk-preserve-color) .uk-h6,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-2xlarge,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-3xlarge,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-large,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-medium,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-small,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-xlarge,.uk-tile-primary:not(.uk-preserve-color) h1,.uk-tile-primary:not(.uk-preserve-color) h2,.uk-tile-primary:not(.uk-preserve-color) h3,.uk-tile-primary:not(.uk-preserve-color) h4,.uk-tile-primary:not(.uk-preserve-color) h5,.uk-tile-primary:not(.uk-preserve-color) h6,.uk-tile-secondary:not(.uk-preserve-color) .uk-h1,.uk-tile-secondary:not(.uk-preserve-color) .uk-h2,.uk-tile-secondary:not(.uk-preserve-color) .uk-h3,.uk-tile-secondary:not(.uk-preserve-color) .uk-h4,.uk-tile-secondary:not(.uk-preserve-color) .uk-h5,.uk-tile-secondary:not(.uk-preserve-color) .uk-h6,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-2xlarge,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-3xlarge,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-large,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-medium,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-small,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-xlarge,.uk-tile-secondary:not(.uk-preserve-color) h1,.uk-tile-secondary:not(.uk-preserve-color) h2,.uk-tile-secondary:not(.uk-preserve-color) h3,.uk-tile-secondary:not(.uk-preserve-color) h4,.uk-tile-secondary:not(.uk-preserve-color) h5,.uk-tile-secondary:not(.uk-preserve-color) h6{color:#fff}.uk-card-primary.uk-card-body blockquote,.uk-card-primary>:not([class*=uk-card-media]) blockquote,.uk-card-secondary.uk-card-body blockquote,.uk-card-secondary>:not([class*=uk-card-media]) blockquote,.uk-light blockquote,.uk-offcanvas-bar blockquote,.uk-overlay-primary blockquote,.uk-section-primary:not(.uk-preserve-color) blockquote,.uk-section-secondary:not(.uk-preserve-color) blockquote,.uk-tile-primary:not(.uk-preserve-color) blockquote,.uk-tile-secondary:not(.uk-preserve-color) blockquote{color:#fff}.uk-card-primary.uk-card-body blockquote footer,.uk-card-primary>:not([class*=uk-card-media]) blockquote footer,.uk-card-secondary.uk-card-body blockquote footer,.uk-card-secondary>:not([class*=uk-card-media]) blockquote footer,.uk-light blockquote footer,.uk-offcanvas-bar blockquote footer,.uk-overlay-primary blockquote footer,.uk-section-primary:not(.uk-preserve-color) blockquote footer,.uk-section-secondary:not(.uk-preserve-color) blockquote footer,.uk-tile-primary:not(.uk-preserve-color) blockquote footer,.uk-tile-secondary:not(.uk-preserve-color) blockquote footer{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-hr,.uk-card-primary.uk-card-body hr,.uk-card-primary>:not([class*=uk-card-media]) .uk-hr,.uk-card-primary>:not([class*=uk-card-media]) hr,.uk-card-secondary.uk-card-body .uk-hr,.uk-card-secondary.uk-card-body hr,.uk-card-secondary>:not([class*=uk-card-media]) .uk-hr,.uk-card-secondary>:not([class*=uk-card-media]) hr,.uk-light .uk-hr,.uk-light hr,.uk-offcanvas-bar .uk-hr,.uk-offcanvas-bar hr,.uk-overlay-primary .uk-hr,.uk-overlay-primary hr,.uk-section-primary:not(.uk-preserve-color) .uk-hr,.uk-section-primary:not(.uk-preserve-color) hr,.uk-section-secondary:not(.uk-preserve-color) .uk-hr,.uk-section-secondary:not(.uk-preserve-color) hr,.uk-tile-primary:not(.uk-preserve-color) .uk-hr,.uk-tile-primary:not(.uk-preserve-color) hr,.uk-tile-secondary:not(.uk-preserve-color) .uk-hr,.uk-tile-secondary:not(.uk-preserve-color) hr{border-top-color:#fff3}.uk-card-primary.uk-card-body :focus-visible,.uk-card-primary>:not([class*=uk-card-media]) :focus-visible,.uk-card-secondary.uk-card-body :focus-visible,.uk-card-secondary>:not([class*=uk-card-media]) :focus-visible,.uk-light :focus-visible,.uk-offcanvas-bar :focus-visible,.uk-overlay-primary :focus-visible,.uk-section-primary:not(.uk-preserve-color) :focus-visible,.uk-section-secondary:not(.uk-preserve-color) :focus-visible,.uk-tile-primary:not(.uk-preserve-color) :focus-visible,.uk-tile-secondary:not(.uk-preserve-color) :focus-visible{outline-color:#fff}.uk-card-primary.uk-card-body .uk-link-muted a,.uk-card-primary.uk-card-body a.uk-link-muted,.uk-card-primary>:not([class*=uk-card-media]) .uk-link-muted a,.uk-card-primary>:not([class*=uk-card-media]) a.uk-link-muted,.uk-card-secondary.uk-card-body .uk-link-muted a,.uk-card-secondary.uk-card-body a.uk-link-muted,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link-muted a,.uk-card-secondary>:not([class*=uk-card-media]) a.uk-link-muted,.uk-light .uk-link-muted a,.uk-light a.uk-link-muted,.uk-offcanvas-bar .uk-link-muted a,.uk-offcanvas-bar a.uk-link-muted,.uk-overlay-primary .uk-link-muted a,.uk-overlay-primary a.uk-link-muted,.uk-section-primary:not(.uk-preserve-color) .uk-link-muted a,.uk-section-primary:not(.uk-preserve-color) a.uk-link-muted,.uk-section-secondary:not(.uk-preserve-color) .uk-link-muted a,.uk-section-secondary:not(.uk-preserve-color) a.uk-link-muted,.uk-tile-primary:not(.uk-preserve-color) .uk-link-muted a,.uk-tile-primary:not(.uk-preserve-color) a.uk-link-muted,.uk-tile-secondary:not(.uk-preserve-color) .uk-link-muted a,.uk-tile-secondary:not(.uk-preserve-color) a.uk-link-muted{color:#ffffff80}.uk-card-primary.uk-card-body .uk-link-muted a:hover,.uk-card-primary.uk-card-body .uk-link-toggle:hover .uk-link-muted,.uk-card-primary.uk-card-body a.uk-link-muted:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-link-muted a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-link-toggle:hover .uk-link-muted,.uk-card-primary>:not([class*=uk-card-media]) a.uk-link-muted:hover,.uk-card-secondary.uk-card-body .uk-link-muted a:hover,.uk-card-secondary.uk-card-body .uk-link-toggle:hover .uk-link-muted,.uk-card-secondary.uk-card-body a.uk-link-muted:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link-muted a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link-toggle:hover .uk-link-muted,.uk-card-secondary>:not([class*=uk-card-media]) a.uk-link-muted:hover,.uk-light .uk-link-muted a:hover,.uk-light .uk-link-toggle:hover .uk-link-muted,.uk-light a.uk-link-muted:hover,.uk-offcanvas-bar .uk-link-muted a:hover,.uk-offcanvas-bar .uk-link-toggle:hover .uk-link-muted,.uk-offcanvas-bar a.uk-link-muted:hover,.uk-overlay-primary .uk-link-muted a:hover,.uk-overlay-primary .uk-link-toggle:hover .uk-link-muted,.uk-overlay-primary a.uk-link-muted:hover,.uk-section-primary:not(.uk-preserve-color) .uk-link-muted a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-muted,.uk-section-primary:not(.uk-preserve-color) a.uk-link-muted:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-link-muted a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-muted,.uk-section-secondary:not(.uk-preserve-color) a.uk-link-muted:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-link-muted a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-muted,.uk-tile-primary:not(.uk-preserve-color) a.uk-link-muted:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-link-muted a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-muted,.uk-tile-secondary:not(.uk-preserve-color) a.uk-link-muted:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-link-text a:hover,.uk-card-primary.uk-card-body .uk-link-toggle:hover .uk-link-text,.uk-card-primary.uk-card-body a.uk-link-text:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-link-text a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-link-toggle:hover .uk-link-text,.uk-card-primary>:not([class*=uk-card-media]) a.uk-link-text:hover,.uk-card-secondary.uk-card-body .uk-link-text a:hover,.uk-card-secondary.uk-card-body .uk-link-toggle:hover .uk-link-text,.uk-card-secondary.uk-card-body a.uk-link-text:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link-text a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link-toggle:hover .uk-link-text,.uk-card-secondary>:not([class*=uk-card-media]) a.uk-link-text:hover,.uk-light .uk-link-text a:hover,.uk-light .uk-link-toggle:hover .uk-link-text,.uk-light a.uk-link-text:hover,.uk-offcanvas-bar .uk-link-text a:hover,.uk-offcanvas-bar .uk-link-toggle:hover .uk-link-text,.uk-offcanvas-bar a.uk-link-text:hover,.uk-overlay-primary .uk-link-text a:hover,.uk-overlay-primary .uk-link-toggle:hover .uk-link-text,.uk-overlay-primary a.uk-link-text:hover,.uk-section-primary:not(.uk-preserve-color) .uk-link-text a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-text,.uk-section-primary:not(.uk-preserve-color) a.uk-link-text:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-link-text a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-text,.uk-section-secondary:not(.uk-preserve-color) a.uk-link-text:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-link-text a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-text,.uk-tile-primary:not(.uk-preserve-color) a.uk-link-text:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-link-text a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-text,.uk-tile-secondary:not(.uk-preserve-color) a.uk-link-text:hover{color:#ffffff80}.uk-card-primary.uk-card-body .uk-link-heading a:hover,.uk-card-primary.uk-card-body .uk-link-toggle:hover .uk-link-heading,.uk-card-primary.uk-card-body a.uk-link-heading:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-link-heading a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-link-toggle:hover .uk-link-heading,.uk-card-primary>:not([class*=uk-card-media]) a.uk-link-heading:hover,.uk-card-secondary.uk-card-body .uk-link-heading a:hover,.uk-card-secondary.uk-card-body .uk-link-toggle:hover .uk-link-heading,.uk-card-secondary.uk-card-body a.uk-link-heading:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link-heading a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link-toggle:hover .uk-link-heading,.uk-card-secondary>:not([class*=uk-card-media]) a.uk-link-heading:hover,.uk-light .uk-link-heading a:hover,.uk-light .uk-link-toggle:hover .uk-link-heading,.uk-light a.uk-link-heading:hover,.uk-offcanvas-bar .uk-link-heading a:hover,.uk-offcanvas-bar .uk-link-toggle:hover .uk-link-heading,.uk-offcanvas-bar a.uk-link-heading:hover,.uk-overlay-primary .uk-link-heading a:hover,.uk-overlay-primary .uk-link-toggle:hover .uk-link-heading,.uk-overlay-primary a.uk-link-heading:hover,.uk-section-primary:not(.uk-preserve-color) .uk-link-heading a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-heading,.uk-section-primary:not(.uk-preserve-color) a.uk-link-heading:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-link-heading a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-heading,.uk-section-secondary:not(.uk-preserve-color) a.uk-link-heading:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-link-heading a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-heading,.uk-tile-primary:not(.uk-preserve-color) a.uk-link-heading:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-link-heading a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-heading,.uk-tile-secondary:not(.uk-preserve-color) a.uk-link-heading:hover{color:#fff}.uk-card-primary.uk-card-body .uk-heading-divider,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-divider,.uk-card-secondary.uk-card-body .uk-heading-divider,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-divider,.uk-light .uk-heading-divider,.uk-offcanvas-bar .uk-heading-divider,.uk-overlay-primary .uk-heading-divider,.uk-section-primary:not(.uk-preserve-color) .uk-heading-divider,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-divider,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-divider,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-divider{border-bottom-color:#fff3}.uk-card-primary.uk-card-body .uk-heading-bullet:before,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-bullet:before,.uk-card-secondary.uk-card-body .uk-heading-bullet:before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-bullet:before,.uk-light .uk-heading-bullet:before,.uk-offcanvas-bar .uk-heading-bullet:before,.uk-overlay-primary .uk-heading-bullet:before,.uk-section-primary:not(.uk-preserve-color) .uk-heading-bullet:before,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-bullet:before,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-bullet:before,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-bullet:before{border-left-color:#fff3}.uk-card-primary.uk-card-body .uk-heading-line>:after,.uk-card-primary.uk-card-body .uk-heading-line>:before,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-line>:after,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-line>:before,.uk-card-secondary.uk-card-body .uk-heading-line>:after,.uk-card-secondary.uk-card-body .uk-heading-line>:before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-line>:after,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-line>:before,.uk-light .uk-heading-line>:after,.uk-light .uk-heading-line>:before,.uk-offcanvas-bar .uk-heading-line>:after,.uk-offcanvas-bar .uk-heading-line>:before,.uk-overlay-primary .uk-heading-line>:after,.uk-overlay-primary .uk-heading-line>:before,.uk-section-primary:not(.uk-preserve-color) .uk-heading-line>:after,.uk-section-primary:not(.uk-preserve-color) .uk-heading-line>:before,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-line>:after,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-line>:before,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-line>:after,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-line>:before,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-line>:after,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-line>:before{border-bottom-color:#fff3}.uk-card-primary.uk-card-body .uk-divider-icon,.uk-card-primary>:not([class*=uk-card-media]) .uk-divider-icon,.uk-card-secondary.uk-card-body .uk-divider-icon,.uk-card-secondary>:not([class*=uk-card-media]) .uk-divider-icon,.uk-light .uk-divider-icon,.uk-offcanvas-bar .uk-divider-icon,.uk-overlay-primary .uk-divider-icon,.uk-section-primary:not(.uk-preserve-color) .uk-divider-icon,.uk-section-secondary:not(.uk-preserve-color) .uk-divider-icon,.uk-tile-primary:not(.uk-preserve-color) .uk-divider-icon,.uk-tile-secondary:not(.uk-preserve-color) .uk-divider-icon{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22none%22%20stroke%3D%22rgba%28255,%20255,%20255,%200.2%29%22%20stroke-width%3D%222%22%20cx%3D%2210%22%20cy%3D%2210%22%20r%3D%227%22%20%2F%3E%0A%3C%2Fsvg%3E%0A)}.uk-card-primary.uk-card-body .uk-divider-icon:after,.uk-card-primary.uk-card-body .uk-divider-icon:before,.uk-card-primary>:not([class*=uk-card-media]) .uk-divider-icon:after,.uk-card-primary>:not([class*=uk-card-media]) .uk-divider-icon:before,.uk-card-secondary.uk-card-body .uk-divider-icon:after,.uk-card-secondary.uk-card-body .uk-divider-icon:before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-divider-icon:after,.uk-card-secondary>:not([class*=uk-card-media]) .uk-divider-icon:before,.uk-light .uk-divider-icon:after,.uk-light .uk-divider-icon:before,.uk-offcanvas-bar .uk-divider-icon:after,.uk-offcanvas-bar .uk-divider-icon:before,.uk-overlay-primary .uk-divider-icon:after,.uk-overlay-primary .uk-divider-icon:before,.uk-section-primary:not(.uk-preserve-color) .uk-divider-icon:after,.uk-section-primary:not(.uk-preserve-color) .uk-divider-icon:before,.uk-section-secondary:not(.uk-preserve-color) .uk-divider-icon:after,.uk-section-secondary:not(.uk-preserve-color) .uk-divider-icon:before,.uk-tile-primary:not(.uk-preserve-color) .uk-divider-icon:after,.uk-tile-primary:not(.uk-preserve-color) .uk-divider-icon:before,.uk-tile-secondary:not(.uk-preserve-color) .uk-divider-icon:after,.uk-tile-secondary:not(.uk-preserve-color) .uk-divider-icon:before{border-bottom-color:#fff3}.uk-card-primary.uk-card-body .uk-divider-small:after,.uk-card-primary>:not([class*=uk-card-media]) .uk-divider-small:after,.uk-card-secondary.uk-card-body .uk-divider-small:after,.uk-card-secondary>:not([class*=uk-card-media]) .uk-divider-small:after,.uk-light .uk-divider-small:after,.uk-offcanvas-bar .uk-divider-small:after,.uk-overlay-primary .uk-divider-small:after,.uk-section-primary:not(.uk-preserve-color) .uk-divider-small:after,.uk-section-secondary:not(.uk-preserve-color) .uk-divider-small:after,.uk-tile-primary:not(.uk-preserve-color) .uk-divider-small:after,.uk-tile-secondary:not(.uk-preserve-color) .uk-divider-small:after{border-top-color:#fff3}.uk-card-primary.uk-card-body .uk-divider-vertical,.uk-card-primary>:not([class*=uk-card-media]) .uk-divider-vertical,.uk-card-secondary.uk-card-body .uk-divider-vertical,.uk-card-secondary>:not([class*=uk-card-media]) .uk-divider-vertical,.uk-light .uk-divider-vertical,.uk-offcanvas-bar .uk-divider-vertical,.uk-overlay-primary .uk-divider-vertical,.uk-section-primary:not(.uk-preserve-color) .uk-divider-vertical,.uk-section-secondary:not(.uk-preserve-color) .uk-divider-vertical,.uk-tile-primary:not(.uk-preserve-color) .uk-divider-vertical,.uk-tile-secondary:not(.uk-preserve-color) .uk-divider-vertical{border-left-color:#fff3}.uk-card-primary.uk-card-body .uk-list-muted>:before,.uk-card-primary>:not([class*=uk-card-media]) .uk-list-muted>:before,.uk-card-secondary.uk-card-body .uk-list-muted>:before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-list-muted>:before,.uk-light .uk-list-muted>:before,.uk-offcanvas-bar .uk-list-muted>:before,.uk-overlay-primary .uk-list-muted>:before,.uk-section-primary:not(.uk-preserve-color) .uk-list-muted>:before,.uk-section-secondary:not(.uk-preserve-color) .uk-list-muted>:before,.uk-tile-primary:not(.uk-preserve-color) .uk-list-muted>:before,.uk-tile-secondary:not(.uk-preserve-color) .uk-list-muted>:before{color:#ffffff80!important}.uk-card-primary.uk-card-body .uk-list-emphasis>:before,.uk-card-primary>:not([class*=uk-card-media]) .uk-list-emphasis>:before,.uk-card-secondary.uk-card-body .uk-list-emphasis>:before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-list-emphasis>:before,.uk-light .uk-list-emphasis>:before,.uk-offcanvas-bar .uk-list-emphasis>:before,.uk-overlay-primary .uk-list-emphasis>:before,.uk-section-primary:not(.uk-preserve-color) .uk-list-emphasis>:before,.uk-section-secondary:not(.uk-preserve-color) .uk-list-emphasis>:before,.uk-tile-primary:not(.uk-preserve-color) .uk-list-emphasis>:before,.uk-tile-secondary:not(.uk-preserve-color) .uk-list-emphasis>:before{color:#fff!important}.uk-card-primary.uk-card-body .uk-list-primary>:before,.uk-card-primary>:not([class*=uk-card-media]) .uk-list-primary>:before,.uk-card-secondary.uk-card-body .uk-list-primary>:before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-list-primary>:before,.uk-light .uk-list-primary>:before,.uk-offcanvas-bar .uk-list-primary>:before,.uk-overlay-primary .uk-list-primary>:before,.uk-section-primary:not(.uk-preserve-color) .uk-list-primary>:before,.uk-section-secondary:not(.uk-preserve-color) .uk-list-primary>:before,.uk-tile-primary:not(.uk-preserve-color) .uk-list-primary>:before,.uk-tile-secondary:not(.uk-preserve-color) .uk-list-primary>:before{color:#fff!important}.uk-card-primary.uk-card-body .uk-list-secondary>:before,.uk-card-primary>:not([class*=uk-card-media]) .uk-list-secondary>:before,.uk-card-secondary.uk-card-body .uk-list-secondary>:before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-list-secondary>:before,.uk-light .uk-list-secondary>:before,.uk-offcanvas-bar .uk-list-secondary>:before,.uk-overlay-primary .uk-list-secondary>:before,.uk-section-primary:not(.uk-preserve-color) .uk-list-secondary>:before,.uk-section-secondary:not(.uk-preserve-color) .uk-list-secondary>:before,.uk-tile-primary:not(.uk-preserve-color) .uk-list-secondary>:before,.uk-tile-secondary:not(.uk-preserve-color) .uk-list-secondary>:before{color:#fff!important}.uk-card-primary.uk-card-body .uk-list-bullet>:before,.uk-card-primary>:not([class*=uk-card-media]) .uk-list-bullet>:before,.uk-card-secondary.uk-card-body .uk-list-bullet>:before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-list-bullet>:before,.uk-light .uk-list-bullet>:before,.uk-offcanvas-bar .uk-list-bullet>:before,.uk-overlay-primary .uk-list-bullet>:before,.uk-section-primary:not(.uk-preserve-color) .uk-list-bullet>:before,.uk-section-secondary:not(.uk-preserve-color) .uk-list-bullet>:before,.uk-tile-primary:not(.uk-preserve-color) .uk-list-bullet>:before,.uk-tile-secondary:not(.uk-preserve-color) .uk-list-bullet>:before{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%226%22%20height%3D%226%22%20viewBox%3D%220%200%206%206%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22rgba%28255,%20255,%20255,%200.7%29%22%20cx%3D%223%22%20cy%3D%223%22%20r%3D%223%22%20%2F%3E%0A%3C%2Fsvg%3E)}.uk-card-primary.uk-card-body .uk-list-divider>:nth-child(n+2),.uk-card-primary>:not([class*=uk-card-media]) .uk-list-divider>:nth-child(n+2),.uk-card-secondary.uk-card-body .uk-list-divider>:nth-child(n+2),.uk-card-secondary>:not([class*=uk-card-media]) .uk-list-divider>:nth-child(n+2),.uk-light .uk-list-divider>:nth-child(n+2),.uk-offcanvas-bar .uk-list-divider>:nth-child(n+2),.uk-overlay-primary .uk-list-divider>:nth-child(n+2),.uk-section-primary:not(.uk-preserve-color) .uk-list-divider>:nth-child(n+2),.uk-section-secondary:not(.uk-preserve-color) .uk-list-divider>:nth-child(n+2),.uk-tile-primary:not(.uk-preserve-color) .uk-list-divider>:nth-child(n+2),.uk-tile-secondary:not(.uk-preserve-color) .uk-list-divider>:nth-child(n+2){border-top-color:#fff3}.uk-card-primary.uk-card-body .uk-list-striped>:nth-of-type(odd),.uk-card-primary>:not([class*=uk-card-media]) .uk-list-striped>:nth-of-type(odd),.uk-card-secondary.uk-card-body .uk-list-striped>:nth-of-type(odd),.uk-card-secondary>:not([class*=uk-card-media]) .uk-list-striped>:nth-of-type(odd),.uk-light .uk-list-striped>:nth-of-type(odd),.uk-offcanvas-bar .uk-list-striped>:nth-of-type(odd),.uk-overlay-primary .uk-list-striped>:nth-of-type(odd),.uk-section-primary:not(.uk-preserve-color) .uk-list-striped>:nth-of-type(odd),.uk-section-secondary:not(.uk-preserve-color) .uk-list-striped>:nth-of-type(odd),.uk-tile-primary:not(.uk-preserve-color) .uk-list-striped>:nth-of-type(odd),.uk-tile-secondary:not(.uk-preserve-color) .uk-list-striped>:nth-of-type(odd){border-top-color:#fff3;border-bottom-color:#fff3}.uk-card-primary.uk-card-body .uk-list-striped>:nth-of-type(odd),.uk-card-primary>:not([class*=uk-card-media]) .uk-list-striped>:nth-of-type(odd),.uk-card-secondary.uk-card-body .uk-list-striped>:nth-of-type(odd),.uk-card-secondary>:not([class*=uk-card-media]) .uk-list-striped>:nth-of-type(odd),.uk-light .uk-list-striped>:nth-of-type(odd),.uk-offcanvas-bar .uk-list-striped>:nth-of-type(odd),.uk-overlay-primary .uk-list-striped>:nth-of-type(odd),.uk-section-primary:not(.uk-preserve-color) .uk-list-striped>:nth-of-type(odd),.uk-section-secondary:not(.uk-preserve-color) .uk-list-striped>:nth-of-type(odd),.uk-tile-primary:not(.uk-preserve-color) .uk-list-striped>:nth-of-type(odd),.uk-tile-secondary:not(.uk-preserve-color) .uk-list-striped>:nth-of-type(odd){background-color:#ffffff1a}.uk-card-primary.uk-card-body .uk-table th,.uk-card-primary>:not([class*=uk-card-media]) .uk-table th,.uk-card-secondary.uk-card-body .uk-table th,.uk-card-secondary>:not([class*=uk-card-media]) .uk-table th,.uk-light .uk-table th,.uk-offcanvas-bar .uk-table th,.uk-overlay-primary .uk-table th,.uk-section-primary:not(.uk-preserve-color) .uk-table th,.uk-section-secondary:not(.uk-preserve-color) .uk-table th,.uk-tile-primary:not(.uk-preserve-color) .uk-table th,.uk-tile-secondary:not(.uk-preserve-color) .uk-table th{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-table caption,.uk-card-primary>:not([class*=uk-card-media]) .uk-table caption,.uk-card-secondary.uk-card-body .uk-table caption,.uk-card-secondary>:not([class*=uk-card-media]) .uk-table caption,.uk-light .uk-table caption,.uk-offcanvas-bar .uk-table caption,.uk-overlay-primary .uk-table caption,.uk-section-primary:not(.uk-preserve-color) .uk-table caption,.uk-section-secondary:not(.uk-preserve-color) .uk-table caption,.uk-tile-primary:not(.uk-preserve-color) .uk-table caption,.uk-tile-secondary:not(.uk-preserve-color) .uk-table caption{color:#ffffff80}.uk-card-primary.uk-card-body .uk-table tbody tr.uk-active,.uk-card-primary.uk-card-body .uk-table>tr.uk-active,.uk-card-primary>:not([class*=uk-card-media]) .uk-table tbody tr.uk-active,.uk-card-primary>:not([class*=uk-card-media]) .uk-table>tr.uk-active,.uk-card-secondary.uk-card-body .uk-table tbody tr.uk-active,.uk-card-secondary.uk-card-body .uk-table>tr.uk-active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-table tbody tr.uk-active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-table>tr.uk-active,.uk-light .uk-table tbody tr.uk-active,.uk-light .uk-table>tr.uk-active,.uk-offcanvas-bar .uk-table tbody tr.uk-active,.uk-offcanvas-bar .uk-table>tr.uk-active,.uk-overlay-primary .uk-table tbody tr.uk-active,.uk-overlay-primary .uk-table>tr.uk-active,.uk-section-primary:not(.uk-preserve-color) .uk-table tbody tr.uk-active,.uk-section-primary:not(.uk-preserve-color) .uk-table>tr.uk-active,.uk-section-secondary:not(.uk-preserve-color) .uk-table tbody tr.uk-active,.uk-section-secondary:not(.uk-preserve-color) .uk-table>tr.uk-active,.uk-tile-primary:not(.uk-preserve-color) .uk-table tbody tr.uk-active,.uk-tile-primary:not(.uk-preserve-color) .uk-table>tr.uk-active,.uk-tile-secondary:not(.uk-preserve-color) .uk-table tbody tr.uk-active,.uk-tile-secondary:not(.uk-preserve-color) .uk-table>tr.uk-active{background:#ffffff14}.uk-card-primary.uk-card-body .uk-table-divider>:first-child>tr:not(:first-child),.uk-card-primary.uk-card-body .uk-table-divider>:not(:first-child)>tr,.uk-card-primary.uk-card-body .uk-table-divider>tr:not(:first-child),.uk-card-primary>:not([class*=uk-card-media]) .uk-table-divider>:first-child>tr:not(:first-child),.uk-card-primary>:not([class*=uk-card-media]) .uk-table-divider>:not(:first-child)>tr,.uk-card-primary>:not([class*=uk-card-media]) .uk-table-divider>tr:not(:first-child),.uk-card-secondary.uk-card-body .uk-table-divider>:first-child>tr:not(:first-child),.uk-card-secondary.uk-card-body .uk-table-divider>:not(:first-child)>tr,.uk-card-secondary.uk-card-body .uk-table-divider>tr:not(:first-child),.uk-card-secondary>:not([class*=uk-card-media]) .uk-table-divider>:first-child>tr:not(:first-child),.uk-card-secondary>:not([class*=uk-card-media]) .uk-table-divider>:not(:first-child)>tr,.uk-card-secondary>:not([class*=uk-card-media]) .uk-table-divider>tr:not(:first-child),.uk-light .uk-table-divider>:first-child>tr:not(:first-child),.uk-light .uk-table-divider>:not(:first-child)>tr,.uk-light .uk-table-divider>tr:not(:first-child),.uk-offcanvas-bar .uk-table-divider>:first-child>tr:not(:first-child),.uk-offcanvas-bar .uk-table-divider>:not(:first-child)>tr,.uk-offcanvas-bar .uk-table-divider>tr:not(:first-child),.uk-overlay-primary .uk-table-divider>:first-child>tr:not(:first-child),.uk-overlay-primary .uk-table-divider>:not(:first-child)>tr,.uk-overlay-primary .uk-table-divider>tr:not(:first-child),.uk-section-primary:not(.uk-preserve-color) .uk-table-divider>:first-child>tr:not(:first-child),.uk-section-primary:not(.uk-preserve-color) .uk-table-divider>:not(:first-child)>tr,.uk-section-primary:not(.uk-preserve-color) .uk-table-divider>tr:not(:first-child),.uk-section-secondary:not(.uk-preserve-color) .uk-table-divider>:first-child>tr:not(:first-child),.uk-section-secondary:not(.uk-preserve-color) .uk-table-divider>:not(:first-child)>tr,.uk-section-secondary:not(.uk-preserve-color) .uk-table-divider>tr:not(:first-child),.uk-tile-primary:not(.uk-preserve-color) .uk-table-divider>:first-child>tr:not(:first-child),.uk-tile-primary:not(.uk-preserve-color) .uk-table-divider>:not(:first-child)>tr,.uk-tile-primary:not(.uk-preserve-color) .uk-table-divider>tr:not(:first-child),.uk-tile-secondary:not(.uk-preserve-color) .uk-table-divider>:first-child>tr:not(:first-child),.uk-tile-secondary:not(.uk-preserve-color) .uk-table-divider>:not(:first-child)>tr,.uk-tile-secondary:not(.uk-preserve-color) .uk-table-divider>tr:not(:first-child){border-top-color:#fff3}.uk-card-primary.uk-card-body .uk-table-striped tbody tr:nth-of-type(odd),.uk-card-primary.uk-card-body .uk-table-striped>tr:nth-of-type(odd),.uk-card-primary>:not([class*=uk-card-media]) .uk-table-striped tbody tr:nth-of-type(odd),.uk-card-primary>:not([class*=uk-card-media]) .uk-table-striped>tr:nth-of-type(odd),.uk-card-secondary.uk-card-body .uk-table-striped tbody tr:nth-of-type(odd),.uk-card-secondary.uk-card-body .uk-table-striped>tr:nth-of-type(odd),.uk-card-secondary>:not([class*=uk-card-media]) .uk-table-striped tbody tr:nth-of-type(odd),.uk-card-secondary>:not([class*=uk-card-media]) .uk-table-striped>tr:nth-of-type(odd),.uk-light .uk-table-striped tbody tr:nth-of-type(odd),.uk-light .uk-table-striped>tr:nth-of-type(odd),.uk-offcanvas-bar .uk-table-striped tbody tr:nth-of-type(odd),.uk-offcanvas-bar .uk-table-striped>tr:nth-of-type(odd),.uk-overlay-primary .uk-table-striped tbody tr:nth-of-type(odd),.uk-overlay-primary .uk-table-striped>tr:nth-of-type(odd),.uk-section-primary:not(.uk-preserve-color) .uk-table-striped tbody tr:nth-of-type(odd),.uk-section-primary:not(.uk-preserve-color) .uk-table-striped>tr:nth-of-type(odd),.uk-section-secondary:not(.uk-preserve-color) .uk-table-striped tbody tr:nth-of-type(odd),.uk-section-secondary:not(.uk-preserve-color) .uk-table-striped>tr:nth-of-type(odd),.uk-tile-primary:not(.uk-preserve-color) .uk-table-striped tbody tr:nth-of-type(odd),.uk-tile-primary:not(.uk-preserve-color) .uk-table-striped>tr:nth-of-type(odd),.uk-tile-secondary:not(.uk-preserve-color) .uk-table-striped tbody tr:nth-of-type(odd),.uk-tile-secondary:not(.uk-preserve-color) .uk-table-striped>tr:nth-of-type(odd){background:#ffffff1a;border-top-color:#fff3;border-bottom-color:#fff3}.uk-card-primary.uk-card-body .uk-table-hover tbody tr:hover,.uk-card-primary.uk-card-body .uk-table-hover>tr:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-table-hover tbody tr:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-table-hover>tr:hover,.uk-card-secondary.uk-card-body .uk-table-hover tbody tr:hover,.uk-card-secondary.uk-card-body .uk-table-hover>tr:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-table-hover tbody tr:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-table-hover>tr:hover,.uk-light .uk-table-hover tbody tr:hover,.uk-light .uk-table-hover>tr:hover,.uk-offcanvas-bar .uk-table-hover tbody tr:hover,.uk-offcanvas-bar .uk-table-hover>tr:hover,.uk-overlay-primary .uk-table-hover tbody tr:hover,.uk-overlay-primary .uk-table-hover>tr:hover,.uk-section-primary:not(.uk-preserve-color) .uk-table-hover tbody tr:hover,.uk-section-primary:not(.uk-preserve-color) .uk-table-hover>tr:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-table-hover tbody tr:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-table-hover>tr:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-table-hover tbody tr:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-table-hover>tr:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-table-hover tbody tr:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-table-hover>tr:hover{background:#ffffff14}.uk-card-primary.uk-card-body .uk-icon-link,.uk-card-primary>:not([class*=uk-card-media]) .uk-icon-link,.uk-card-secondary.uk-card-body .uk-icon-link,.uk-card-secondary>:not([class*=uk-card-media]) .uk-icon-link,.uk-light .uk-icon-link,.uk-offcanvas-bar .uk-icon-link,.uk-overlay-primary .uk-icon-link,.uk-section-primary:not(.uk-preserve-color) .uk-icon-link,.uk-section-secondary:not(.uk-preserve-color) .uk-icon-link,.uk-tile-primary:not(.uk-preserve-color) .uk-icon-link,.uk-tile-secondary:not(.uk-preserve-color) .uk-icon-link{color:#ffffff80}.uk-card-primary.uk-card-body .uk-icon-link:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-icon-link:hover,.uk-card-secondary.uk-card-body .uk-icon-link:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-icon-link:hover,.uk-light .uk-icon-link:hover,.uk-offcanvas-bar .uk-icon-link:hover,.uk-overlay-primary .uk-icon-link:hover,.uk-section-primary:not(.uk-preserve-color) .uk-icon-link:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-icon-link:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-icon-link:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-icon-link:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-active>.uk-icon-link,.uk-card-primary.uk-card-body .uk-icon-link:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-active>.uk-icon-link,.uk-card-primary>:not([class*=uk-card-media]) .uk-icon-link:active,.uk-card-secondary.uk-card-body .uk-active>.uk-icon-link,.uk-card-secondary.uk-card-body .uk-icon-link:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-active>.uk-icon-link,.uk-card-secondary>:not([class*=uk-card-media]) .uk-icon-link:active,.uk-light .uk-active>.uk-icon-link,.uk-light .uk-icon-link:active,.uk-offcanvas-bar .uk-active>.uk-icon-link,.uk-offcanvas-bar .uk-icon-link:active,.uk-overlay-primary .uk-active>.uk-icon-link,.uk-overlay-primary .uk-icon-link:active,.uk-section-primary:not(.uk-preserve-color) .uk-active>.uk-icon-link,.uk-section-primary:not(.uk-preserve-color) .uk-icon-link:active,.uk-section-secondary:not(.uk-preserve-color) .uk-active>.uk-icon-link,.uk-section-secondary:not(.uk-preserve-color) .uk-icon-link:active,.uk-tile-primary:not(.uk-preserve-color) .uk-active>.uk-icon-link,.uk-tile-primary:not(.uk-preserve-color) .uk-icon-link:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-active>.uk-icon-link,.uk-tile-secondary:not(.uk-preserve-color) .uk-icon-link:active{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-icon-button,.uk-card-primary>:not([class*=uk-card-media]) .uk-icon-button,.uk-card-secondary.uk-card-body .uk-icon-button,.uk-card-secondary>:not([class*=uk-card-media]) .uk-icon-button,.uk-light .uk-icon-button,.uk-offcanvas-bar .uk-icon-button,.uk-overlay-primary .uk-icon-button,.uk-section-primary:not(.uk-preserve-color) .uk-icon-button,.uk-section-secondary:not(.uk-preserve-color) .uk-icon-button,.uk-tile-primary:not(.uk-preserve-color) .uk-icon-button,.uk-tile-secondary:not(.uk-preserve-color) .uk-icon-button{background-color:#ffffff1a;color:#ffffff80}.uk-card-primary.uk-card-body .uk-icon-button:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-icon-button:hover,.uk-card-secondary.uk-card-body .uk-icon-button:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-icon-button:hover,.uk-light .uk-icon-button:hover,.uk-offcanvas-bar .uk-icon-button:hover,.uk-overlay-primary .uk-icon-button:hover,.uk-section-primary:not(.uk-preserve-color) .uk-icon-button:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-icon-button:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-icon-button:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-icon-button:hover{background-color:#ffffff26;color:#ffffffb3}.uk-card-primary.uk-card-body .uk-icon-button:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-icon-button:active,.uk-card-secondary.uk-card-body .uk-icon-button:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-icon-button:active,.uk-light .uk-icon-button:active,.uk-offcanvas-bar .uk-icon-button:active,.uk-overlay-primary .uk-icon-button:active,.uk-section-primary:not(.uk-preserve-color) .uk-icon-button:active,.uk-section-secondary:not(.uk-preserve-color) .uk-icon-button:active,.uk-tile-primary:not(.uk-preserve-color) .uk-icon-button:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-icon-button:active{background-color:#fff3;color:#ffffffb3}.uk-card-primary.uk-card-body .uk-input,.uk-card-primary.uk-card-body .uk-select,.uk-card-primary.uk-card-body .uk-textarea,.uk-card-primary>:not([class*=uk-card-media]) .uk-input,.uk-card-primary>:not([class*=uk-card-media]) .uk-select,.uk-card-primary>:not([class*=uk-card-media]) .uk-textarea,.uk-card-secondary.uk-card-body .uk-input,.uk-card-secondary.uk-card-body .uk-select,.uk-card-secondary.uk-card-body .uk-textarea,.uk-card-secondary>:not([class*=uk-card-media]) .uk-input,.uk-card-secondary>:not([class*=uk-card-media]) .uk-select,.uk-card-secondary>:not([class*=uk-card-media]) .uk-textarea,.uk-light .uk-input,.uk-light .uk-select,.uk-light .uk-textarea,.uk-offcanvas-bar .uk-input,.uk-offcanvas-bar .uk-select,.uk-offcanvas-bar .uk-textarea,.uk-overlay-primary .uk-input,.uk-overlay-primary .uk-select,.uk-overlay-primary .uk-textarea,.uk-section-primary:not(.uk-preserve-color) .uk-input,.uk-section-primary:not(.uk-preserve-color) .uk-select,.uk-section-primary:not(.uk-preserve-color) .uk-textarea,.uk-section-secondary:not(.uk-preserve-color) .uk-input,.uk-section-secondary:not(.uk-preserve-color) .uk-select,.uk-section-secondary:not(.uk-preserve-color) .uk-textarea,.uk-tile-primary:not(.uk-preserve-color) .uk-input,.uk-tile-primary:not(.uk-preserve-color) .uk-select,.uk-tile-primary:not(.uk-preserve-color) .uk-textarea,.uk-tile-secondary:not(.uk-preserve-color) .uk-input,.uk-tile-secondary:not(.uk-preserve-color) .uk-select,.uk-tile-secondary:not(.uk-preserve-color) .uk-textarea{background-color:#ffffff1a;color:#ffffffb3;background-clip:padding-box;border-color:#fff3}.uk-card-primary.uk-card-body .uk-input:focus,.uk-card-primary.uk-card-body .uk-select:focus,.uk-card-primary.uk-card-body .uk-textarea:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-input:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-select:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-textarea:focus,.uk-card-secondary.uk-card-body .uk-input:focus,.uk-card-secondary.uk-card-body .uk-select:focus,.uk-card-secondary.uk-card-body .uk-textarea:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-input:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-select:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-textarea:focus,.uk-light .uk-input:focus,.uk-light .uk-select:focus,.uk-light .uk-textarea:focus,.uk-offcanvas-bar .uk-input:focus,.uk-offcanvas-bar .uk-select:focus,.uk-offcanvas-bar .uk-textarea:focus,.uk-overlay-primary .uk-input:focus,.uk-overlay-primary .uk-select:focus,.uk-overlay-primary .uk-textarea:focus,.uk-section-primary:not(.uk-preserve-color) .uk-input:focus,.uk-section-primary:not(.uk-preserve-color) .uk-select:focus,.uk-section-primary:not(.uk-preserve-color) .uk-textarea:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-input:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-select:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-textarea:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-input:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-select:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-textarea:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-input:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-select:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-textarea:focus{background-color:#ffffff26;color:#ffffffb3;border-color:#ffffffb3}.uk-card-primary.uk-card-body .uk-input::placeholder,.uk-card-primary>:not([class*=uk-card-media]) .uk-input::placeholder,.uk-card-secondary.uk-card-body .uk-input::placeholder,.uk-card-secondary>:not([class*=uk-card-media]) .uk-input::placeholder,.uk-light .uk-input::placeholder,.uk-offcanvas-bar .uk-input::placeholder,.uk-overlay-primary .uk-input::placeholder,.uk-section-primary:not(.uk-preserve-color) .uk-input::placeholder,.uk-section-secondary:not(.uk-preserve-color) .uk-input::placeholder,.uk-tile-primary:not(.uk-preserve-color) .uk-input::placeholder,.uk-tile-secondary:not(.uk-preserve-color) .uk-input::placeholder{color:#ffffff80}.uk-card-primary.uk-card-body .uk-textarea::placeholder,.uk-card-primary>:not([class*=uk-card-media]) .uk-textarea::placeholder,.uk-card-secondary.uk-card-body .uk-textarea::placeholder,.uk-card-secondary>:not([class*=uk-card-media]) .uk-textarea::placeholder,.uk-light .uk-textarea::placeholder,.uk-offcanvas-bar .uk-textarea::placeholder,.uk-overlay-primary .uk-textarea::placeholder,.uk-section-primary:not(.uk-preserve-color) .uk-textarea::placeholder,.uk-section-secondary:not(.uk-preserve-color) .uk-textarea::placeholder,.uk-tile-primary:not(.uk-preserve-color) .uk-textarea::placeholder,.uk-tile-secondary:not(.uk-preserve-color) .uk-textarea::placeholder{color:#ffffff80}.uk-card-primary.uk-card-body .uk-select:not([multiple]):not([size]),.uk-card-primary>:not([class*=uk-card-media]) .uk-select:not([multiple]):not([size]),.uk-card-secondary.uk-card-body .uk-select:not([multiple]):not([size]),.uk-card-secondary>:not([class*=uk-card-media]) .uk-select:not([multiple]):not([size]),.uk-light .uk-select:not([multiple]):not([size]),.uk-offcanvas-bar .uk-select:not([multiple]):not([size]),.uk-overlay-primary .uk-select:not([multiple]):not([size]),.uk-section-primary:not(.uk-preserve-color) .uk-select:not([multiple]):not([size]),.uk-section-secondary:not(.uk-preserve-color) .uk-select:not([multiple]):not([size]),.uk-tile-primary:not(.uk-preserve-color) .uk-select:not([multiple]):not([size]),.uk-tile-secondary:not(.uk-preserve-color) .uk-select:not([multiple]):not([size]){background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2224%22%20height%3D%2216%22%20viewBox%3D%220%200%2024%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22rgba%28255,%20255,%20255,%200.7%29%22%20points%3D%2212%201%209%206%2015%206%22%20%2F%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22rgba%28255,%20255,%20255,%200.7%29%22%20points%3D%2212%2013%209%208%2015%208%22%20%2F%3E%0A%3C%2Fsvg%3E%0A)}.uk-card-primary.uk-card-body .uk-input[list]:focus,.uk-card-primary.uk-card-body .uk-input[list]:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-input[list]:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-input[list]:hover,.uk-card-secondary.uk-card-body .uk-input[list]:focus,.uk-card-secondary.uk-card-body .uk-input[list]:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-input[list]:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-input[list]:hover,.uk-light .uk-input[list]:focus,.uk-light .uk-input[list]:hover,.uk-offcanvas-bar .uk-input[list]:focus,.uk-offcanvas-bar .uk-input[list]:hover,.uk-overlay-primary .uk-input[list]:focus,.uk-overlay-primary .uk-input[list]:hover,.uk-section-primary:not(.uk-preserve-color) .uk-input[list]:focus,.uk-section-primary:not(.uk-preserve-color) .uk-input[list]:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-input[list]:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-input[list]:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-input[list]:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-input[list]:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-input[list]:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-input[list]:hover{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2224%22%20height%3D%2216%22%20viewBox%3D%220%200%2024%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22rgba%28255,%20255,%20255,%200.7%29%22%20points%3D%2212%2012%208%206%2016%206%22%20%2F%3E%0A%3C%2Fsvg%3E%0A)}.uk-card-primary.uk-card-body .uk-checkbox,.uk-card-primary.uk-card-body .uk-radio,.uk-card-primary>:not([class*=uk-card-media]) .uk-checkbox,.uk-card-primary>:not([class*=uk-card-media]) .uk-radio,.uk-card-secondary.uk-card-body .uk-checkbox,.uk-card-secondary.uk-card-body .uk-radio,.uk-card-secondary>:not([class*=uk-card-media]) .uk-checkbox,.uk-card-secondary>:not([class*=uk-card-media]) .uk-radio,.uk-light .uk-checkbox,.uk-light .uk-radio,.uk-offcanvas-bar .uk-checkbox,.uk-offcanvas-bar .uk-radio,.uk-overlay-primary .uk-checkbox,.uk-overlay-primary .uk-radio,.uk-section-primary:not(.uk-preserve-color) .uk-checkbox,.uk-section-primary:not(.uk-preserve-color) .uk-radio,.uk-section-secondary:not(.uk-preserve-color) .uk-checkbox,.uk-section-secondary:not(.uk-preserve-color) .uk-radio,.uk-tile-primary:not(.uk-preserve-color) .uk-checkbox,.uk-tile-primary:not(.uk-preserve-color) .uk-radio,.uk-tile-secondary:not(.uk-preserve-color) .uk-checkbox,.uk-tile-secondary:not(.uk-preserve-color) .uk-radio{background-color:#ffffff1a;border-color:#fff3}.uk-card-primary.uk-card-body .uk-checkbox:focus,.uk-card-primary.uk-card-body .uk-radio:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-checkbox:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-radio:focus,.uk-card-secondary.uk-card-body .uk-checkbox:focus,.uk-card-secondary.uk-card-body .uk-radio:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-checkbox:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-radio:focus,.uk-light .uk-checkbox:focus,.uk-light .uk-radio:focus,.uk-offcanvas-bar .uk-checkbox:focus,.uk-offcanvas-bar .uk-radio:focus,.uk-overlay-primary .uk-checkbox:focus,.uk-overlay-primary .uk-radio:focus,.uk-section-primary:not(.uk-preserve-color) .uk-checkbox:focus,.uk-section-primary:not(.uk-preserve-color) .uk-radio:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-checkbox:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-radio:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-checkbox:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-radio:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-checkbox:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-radio:focus{background-color:#ffffff26;border-color:#ffffffb3}.uk-card-primary.uk-card-body .uk-checkbox:checked,.uk-card-primary.uk-card-body .uk-checkbox:indeterminate,.uk-card-primary.uk-card-body .uk-radio:checked,.uk-card-primary>:not([class*=uk-card-media]) .uk-checkbox:checked,.uk-card-primary>:not([class*=uk-card-media]) .uk-checkbox:indeterminate,.uk-card-primary>:not([class*=uk-card-media]) .uk-radio:checked,.uk-card-secondary.uk-card-body .uk-checkbox:checked,.uk-card-secondary.uk-card-body .uk-checkbox:indeterminate,.uk-card-secondary.uk-card-body .uk-radio:checked,.uk-card-secondary>:not([class*=uk-card-media]) .uk-checkbox:checked,.uk-card-secondary>:not([class*=uk-card-media]) .uk-checkbox:indeterminate,.uk-card-secondary>:not([class*=uk-card-media]) .uk-radio:checked,.uk-light .uk-checkbox:checked,.uk-light .uk-checkbox:indeterminate,.uk-light .uk-radio:checked,.uk-offcanvas-bar .uk-checkbox:checked,.uk-offcanvas-bar .uk-checkbox:indeterminate,.uk-offcanvas-bar .uk-radio:checked,.uk-overlay-primary .uk-checkbox:checked,.uk-overlay-primary .uk-checkbox:indeterminate,.uk-overlay-primary .uk-radio:checked,.uk-section-primary:not(.uk-preserve-color) .uk-checkbox:checked,.uk-section-primary:not(.uk-preserve-color) .uk-checkbox:indeterminate,.uk-section-primary:not(.uk-preserve-color) .uk-radio:checked,.uk-section-secondary:not(.uk-preserve-color) .uk-checkbox:checked,.uk-section-secondary:not(.uk-preserve-color) .uk-checkbox:indeterminate,.uk-section-secondary:not(.uk-preserve-color) .uk-radio:checked,.uk-tile-primary:not(.uk-preserve-color) .uk-checkbox:checked,.uk-tile-primary:not(.uk-preserve-color) .uk-checkbox:indeterminate,.uk-tile-primary:not(.uk-preserve-color) .uk-radio:checked,.uk-tile-secondary:not(.uk-preserve-color) .uk-checkbox:checked,.uk-tile-secondary:not(.uk-preserve-color) .uk-checkbox:indeterminate,.uk-tile-secondary:not(.uk-preserve-color) .uk-radio:checked{background-color:#fff;border-color:#fff}.uk-card-primary.uk-card-body .uk-checkbox:checked:focus,.uk-card-primary.uk-card-body .uk-checkbox:indeterminate:focus,.uk-card-primary.uk-card-body .uk-radio:checked:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-checkbox:checked:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-checkbox:indeterminate:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-radio:checked:focus,.uk-card-secondary.uk-card-body .uk-checkbox:checked:focus,.uk-card-secondary.uk-card-body .uk-checkbox:indeterminate:focus,.uk-card-secondary.uk-card-body .uk-radio:checked:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-checkbox:checked:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-checkbox:indeterminate:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-radio:checked:focus,.uk-light .uk-checkbox:checked:focus,.uk-light .uk-checkbox:indeterminate:focus,.uk-light .uk-radio:checked:focus,.uk-offcanvas-bar .uk-checkbox:checked:focus,.uk-offcanvas-bar .uk-checkbox:indeterminate:focus,.uk-offcanvas-bar .uk-radio:checked:focus,.uk-overlay-primary .uk-checkbox:checked:focus,.uk-overlay-primary .uk-checkbox:indeterminate:focus,.uk-overlay-primary .uk-radio:checked:focus,.uk-section-primary:not(.uk-preserve-color) .uk-checkbox:checked:focus,.uk-section-primary:not(.uk-preserve-color) .uk-checkbox:indeterminate:focus,.uk-section-primary:not(.uk-preserve-color) .uk-radio:checked:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-checkbox:checked:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-checkbox:indeterminate:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-radio:checked:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-checkbox:checked:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-checkbox:indeterminate:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-radio:checked:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-checkbox:checked:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-checkbox:indeterminate:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-radio:checked:focus{background-color:#fff}.uk-card-primary.uk-card-body .uk-radio:checked,.uk-card-primary>:not([class*=uk-card-media]) .uk-radio:checked,.uk-card-secondary.uk-card-body .uk-radio:checked,.uk-card-secondary>:not([class*=uk-card-media]) .uk-radio:checked,.uk-light .uk-radio:checked,.uk-offcanvas-bar .uk-radio:checked,.uk-overlay-primary .uk-radio:checked,.uk-section-primary:not(.uk-preserve-color) .uk-radio:checked,.uk-section-secondary:not(.uk-preserve-color) .uk-radio:checked,.uk-tile-primary:not(.uk-preserve-color) .uk-radio:checked,.uk-tile-secondary:not(.uk-preserve-color) .uk-radio:checked{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22%23666%22%20cx%3D%228%22%20cy%3D%228%22%20r%3D%222%22%20%2F%3E%0A%3C%2Fsvg%3E)}.uk-card-primary.uk-card-body .uk-checkbox:checked,.uk-card-primary>:not([class*=uk-card-media]) .uk-checkbox:checked,.uk-card-secondary.uk-card-body .uk-checkbox:checked,.uk-card-secondary>:not([class*=uk-card-media]) .uk-checkbox:checked,.uk-light .uk-checkbox:checked,.uk-offcanvas-bar .uk-checkbox:checked,.uk-overlay-primary .uk-checkbox:checked,.uk-section-primary:not(.uk-preserve-color) .uk-checkbox:checked,.uk-section-secondary:not(.uk-preserve-color) .uk-checkbox:checked,.uk-tile-primary:not(.uk-preserve-color) .uk-checkbox:checked,.uk-tile-secondary:not(.uk-preserve-color) .uk-checkbox:checked{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2214%22%20height%3D%2211%22%20viewBox%3D%220%200%2014%2011%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22%23666%22%20points%3D%2212%201%205%207.5%202%205%201%205.5%205%2010%2013%201.5%22%20%2F%3E%0A%3C%2Fsvg%3E%0A)}.uk-card-primary.uk-card-body .uk-checkbox:indeterminate,.uk-card-primary>:not([class*=uk-card-media]) .uk-checkbox:indeterminate,.uk-card-secondary.uk-card-body .uk-checkbox:indeterminate,.uk-card-secondary>:not([class*=uk-card-media]) .uk-checkbox:indeterminate,.uk-light .uk-checkbox:indeterminate,.uk-offcanvas-bar .uk-checkbox:indeterminate,.uk-overlay-primary .uk-checkbox:indeterminate,.uk-section-primary:not(.uk-preserve-color) .uk-checkbox:indeterminate,.uk-section-secondary:not(.uk-preserve-color) .uk-checkbox:indeterminate,.uk-tile-primary:not(.uk-preserve-color) .uk-checkbox:indeterminate,.uk-tile-secondary:not(.uk-preserve-color) .uk-checkbox:indeterminate{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22%23666%22%20x%3D%223%22%20y%3D%228%22%20width%3D%2210%22%20height%3D%221%22%20%2F%3E%0A%3C%2Fsvg%3E)}.uk-card-primary.uk-card-body .uk-form-label,.uk-card-primary>:not([class*=uk-card-media]) .uk-form-label,.uk-card-secondary.uk-card-body .uk-form-label,.uk-card-secondary>:not([class*=uk-card-media]) .uk-form-label,.uk-light .uk-form-label,.uk-offcanvas-bar .uk-form-label,.uk-overlay-primary .uk-form-label,.uk-section-primary:not(.uk-preserve-color) .uk-form-label,.uk-section-secondary:not(.uk-preserve-color) .uk-form-label,.uk-tile-primary:not(.uk-preserve-color) .uk-form-label,.uk-tile-secondary:not(.uk-preserve-color) .uk-form-label{color:#fff}.uk-card-primary.uk-card-body .uk-form-icon,.uk-card-primary>:not([class*=uk-card-media]) .uk-form-icon,.uk-card-secondary.uk-card-body .uk-form-icon,.uk-card-secondary>:not([class*=uk-card-media]) .uk-form-icon,.uk-light .uk-form-icon,.uk-offcanvas-bar .uk-form-icon,.uk-overlay-primary .uk-form-icon,.uk-section-primary:not(.uk-preserve-color) .uk-form-icon,.uk-section-secondary:not(.uk-preserve-color) .uk-form-icon,.uk-tile-primary:not(.uk-preserve-color) .uk-form-icon,.uk-tile-secondary:not(.uk-preserve-color) .uk-form-icon{color:#ffffff80}.uk-card-primary.uk-card-body .uk-form-icon:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-form-icon:hover,.uk-card-secondary.uk-card-body .uk-form-icon:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-form-icon:hover,.uk-light .uk-form-icon:hover,.uk-offcanvas-bar .uk-form-icon:hover,.uk-overlay-primary .uk-form-icon:hover,.uk-section-primary:not(.uk-preserve-color) .uk-form-icon:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-form-icon:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-form-icon:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-form-icon:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-button-default,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-default,.uk-card-secondary.uk-card-body .uk-button-default,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-default,.uk-light .uk-button-default,.uk-offcanvas-bar .uk-button-default,.uk-overlay-primary .uk-button-default,.uk-section-primary:not(.uk-preserve-color) .uk-button-default,.uk-section-secondary:not(.uk-preserve-color) .uk-button-default,.uk-tile-primary:not(.uk-preserve-color) .uk-button-default,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-default{background-color:transparent;color:#fff;border-color:#ffffffb3}.uk-card-primary.uk-card-body .uk-button-default:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-default:hover,.uk-card-secondary.uk-card-body .uk-button-default:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-default:hover,.uk-light .uk-button-default:hover,.uk-offcanvas-bar .uk-button-default:hover,.uk-overlay-primary .uk-button-default:hover,.uk-section-primary:not(.uk-preserve-color) .uk-button-default:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-button-default:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-button-default:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-default:hover{background-color:transparent;color:#fff;border-color:#fff}.uk-card-primary.uk-card-body .uk-button-default.uk-active,.uk-card-primary.uk-card-body .uk-button-default:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-default.uk-active,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-default:active,.uk-card-secondary.uk-card-body .uk-button-default.uk-active,.uk-card-secondary.uk-card-body .uk-button-default:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-default.uk-active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-default:active,.uk-light .uk-button-default.uk-active,.uk-light .uk-button-default:active,.uk-offcanvas-bar .uk-button-default.uk-active,.uk-offcanvas-bar .uk-button-default:active,.uk-overlay-primary .uk-button-default.uk-active,.uk-overlay-primary .uk-button-default:active,.uk-section-primary:not(.uk-preserve-color) .uk-button-default.uk-active,.uk-section-primary:not(.uk-preserve-color) .uk-button-default:active,.uk-section-secondary:not(.uk-preserve-color) .uk-button-default.uk-active,.uk-section-secondary:not(.uk-preserve-color) .uk-button-default:active,.uk-tile-primary:not(.uk-preserve-color) .uk-button-default.uk-active,.uk-tile-primary:not(.uk-preserve-color) .uk-button-default:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-default.uk-active,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-default:active{background-color:transparent;color:#fff;border-color:#fff}.uk-card-primary.uk-card-body .uk-button-primary,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-primary,.uk-card-secondary.uk-card-body .uk-button-primary,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-primary,.uk-light .uk-button-primary,.uk-offcanvas-bar .uk-button-primary,.uk-overlay-primary .uk-button-primary,.uk-section-primary:not(.uk-preserve-color) .uk-button-primary,.uk-section-secondary:not(.uk-preserve-color) .uk-button-primary,.uk-tile-primary:not(.uk-preserve-color) .uk-button-primary,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-primary{background-color:#fff;color:#666}.uk-card-primary.uk-card-body .uk-button-primary:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-primary:hover,.uk-card-secondary.uk-card-body .uk-button-primary:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-primary:hover,.uk-light .uk-button-primary:hover,.uk-offcanvas-bar .uk-button-primary:hover,.uk-overlay-primary .uk-button-primary:hover,.uk-section-primary:not(.uk-preserve-color) .uk-button-primary:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-button-primary:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-button-primary:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-primary:hover{background-color:#f2f2f2;color:#666}.uk-card-primary.uk-card-body .uk-button-primary.uk-active,.uk-card-primary.uk-card-body .uk-button-primary:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-primary.uk-active,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-primary:active,.uk-card-secondary.uk-card-body .uk-button-primary.uk-active,.uk-card-secondary.uk-card-body .uk-button-primary:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-primary.uk-active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-primary:active,.uk-light .uk-button-primary.uk-active,.uk-light .uk-button-primary:active,.uk-offcanvas-bar .uk-button-primary.uk-active,.uk-offcanvas-bar .uk-button-primary:active,.uk-overlay-primary .uk-button-primary.uk-active,.uk-overlay-primary .uk-button-primary:active,.uk-section-primary:not(.uk-preserve-color) .uk-button-primary.uk-active,.uk-section-primary:not(.uk-preserve-color) .uk-button-primary:active,.uk-section-secondary:not(.uk-preserve-color) .uk-button-primary.uk-active,.uk-section-secondary:not(.uk-preserve-color) .uk-button-primary:active,.uk-tile-primary:not(.uk-preserve-color) .uk-button-primary.uk-active,.uk-tile-primary:not(.uk-preserve-color) .uk-button-primary:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-primary.uk-active,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-primary:active{background-color:#e6e6e6;color:#666}.uk-card-primary.uk-card-body .uk-button-secondary,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-secondary,.uk-card-secondary.uk-card-body .uk-button-secondary,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-secondary,.uk-light .uk-button-secondary,.uk-offcanvas-bar .uk-button-secondary,.uk-overlay-primary .uk-button-secondary,.uk-section-primary:not(.uk-preserve-color) .uk-button-secondary,.uk-section-secondary:not(.uk-preserve-color) .uk-button-secondary,.uk-tile-primary:not(.uk-preserve-color) .uk-button-secondary,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-secondary{background-color:#fff;color:#666}.uk-card-primary.uk-card-body .uk-button-secondary:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-secondary:hover,.uk-card-secondary.uk-card-body .uk-button-secondary:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-secondary:hover,.uk-light .uk-button-secondary:hover,.uk-offcanvas-bar .uk-button-secondary:hover,.uk-overlay-primary .uk-button-secondary:hover,.uk-section-primary:not(.uk-preserve-color) .uk-button-secondary:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-button-secondary:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-button-secondary:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-secondary:hover{background-color:#f2f2f2;color:#666}.uk-card-primary.uk-card-body .uk-button-secondary.uk-active,.uk-card-primary.uk-card-body .uk-button-secondary:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-secondary.uk-active,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-secondary:active,.uk-card-secondary.uk-card-body .uk-button-secondary.uk-active,.uk-card-secondary.uk-card-body .uk-button-secondary:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-secondary.uk-active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-secondary:active,.uk-light .uk-button-secondary.uk-active,.uk-light .uk-button-secondary:active,.uk-offcanvas-bar .uk-button-secondary.uk-active,.uk-offcanvas-bar .uk-button-secondary:active,.uk-overlay-primary .uk-button-secondary.uk-active,.uk-overlay-primary .uk-button-secondary:active,.uk-section-primary:not(.uk-preserve-color) .uk-button-secondary.uk-active,.uk-section-primary:not(.uk-preserve-color) .uk-button-secondary:active,.uk-section-secondary:not(.uk-preserve-color) .uk-button-secondary.uk-active,.uk-section-secondary:not(.uk-preserve-color) .uk-button-secondary:active,.uk-tile-primary:not(.uk-preserve-color) .uk-button-secondary.uk-active,.uk-tile-primary:not(.uk-preserve-color) .uk-button-secondary:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-secondary.uk-active,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-secondary:active{background-color:#e6e6e6;color:#666}.uk-card-primary.uk-card-body .uk-button-text,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-text,.uk-card-secondary.uk-card-body .uk-button-text,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-text,.uk-light .uk-button-text,.uk-offcanvas-bar .uk-button-text,.uk-overlay-primary .uk-button-text,.uk-section-primary:not(.uk-preserve-color) .uk-button-text,.uk-section-secondary:not(.uk-preserve-color) .uk-button-text,.uk-tile-primary:not(.uk-preserve-color) .uk-button-text,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-text{color:#fff}.uk-card-primary.uk-card-body .uk-button-text:before,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-text:before,.uk-card-secondary.uk-card-body .uk-button-text:before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-text:before,.uk-light .uk-button-text:before,.uk-offcanvas-bar .uk-button-text:before,.uk-overlay-primary .uk-button-text:before,.uk-section-primary:not(.uk-preserve-color) .uk-button-text:before,.uk-section-secondary:not(.uk-preserve-color) .uk-button-text:before,.uk-tile-primary:not(.uk-preserve-color) .uk-button-text:before,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-text:before{border-bottom-color:#fff}.uk-card-primary.uk-card-body .uk-button-text:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-text:hover,.uk-card-secondary.uk-card-body .uk-button-text:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-text:hover,.uk-light .uk-button-text:hover,.uk-offcanvas-bar .uk-button-text:hover,.uk-overlay-primary .uk-button-text:hover,.uk-section-primary:not(.uk-preserve-color) .uk-button-text:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-button-text:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-button-text:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-text:hover{color:#fff}.uk-card-primary.uk-card-body .uk-button-text:disabled,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-text:disabled,.uk-card-secondary.uk-card-body .uk-button-text:disabled,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-text:disabled,.uk-light .uk-button-text:disabled,.uk-offcanvas-bar .uk-button-text:disabled,.uk-overlay-primary .uk-button-text:disabled,.uk-section-primary:not(.uk-preserve-color) .uk-button-text:disabled,.uk-section-secondary:not(.uk-preserve-color) .uk-button-text:disabled,.uk-tile-primary:not(.uk-preserve-color) .uk-button-text:disabled,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-text:disabled{color:#ffffff80}.uk-card-primary.uk-card-body .uk-button-link,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-link,.uk-card-secondary.uk-card-body .uk-button-link,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-link,.uk-light .uk-button-link,.uk-offcanvas-bar .uk-button-link,.uk-overlay-primary .uk-button-link,.uk-section-primary:not(.uk-preserve-color) .uk-button-link,.uk-section-secondary:not(.uk-preserve-color) .uk-button-link,.uk-tile-primary:not(.uk-preserve-color) .uk-button-link,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-link{color:#fff}.uk-card-primary.uk-card-body .uk-button-link:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-link:hover,.uk-card-secondary.uk-card-body .uk-button-link:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-link:hover,.uk-light .uk-button-link:hover,.uk-offcanvas-bar .uk-button-link:hover,.uk-overlay-primary .uk-button-link:hover,.uk-section-primary:not(.uk-preserve-color) .uk-button-link:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-button-link:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-button-link:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-link:hover{color:#ffffff80}.uk-card-primary.uk-card-body.uk-card-badge,.uk-card-primary>:not([class*=uk-card-media]).uk-card-badge,.uk-card-secondary.uk-card-body.uk-card-badge,.uk-card-secondary>:not([class*=uk-card-media]).uk-card-badge,.uk-light.uk-card-badge,.uk-offcanvas-bar.uk-card-badge,.uk-overlay-primary.uk-card-badge,.uk-section-primary:not(.uk-preserve-color).uk-card-badge,.uk-section-secondary:not(.uk-preserve-color).uk-card-badge,.uk-tile-primary:not(.uk-preserve-color).uk-card-badge,.uk-tile-secondary:not(.uk-preserve-color).uk-card-badge{background-color:#fff;color:#666}.uk-card-primary.uk-card-body .uk-close,.uk-card-primary>:not([class*=uk-card-media]) .uk-close,.uk-card-secondary.uk-card-body .uk-close,.uk-card-secondary>:not([class*=uk-card-media]) .uk-close,.uk-light .uk-close,.uk-offcanvas-bar .uk-close,.uk-overlay-primary .uk-close,.uk-section-primary:not(.uk-preserve-color) .uk-close,.uk-section-secondary:not(.uk-preserve-color) .uk-close,.uk-tile-primary:not(.uk-preserve-color) .uk-close,.uk-tile-secondary:not(.uk-preserve-color) .uk-close{color:#ffffff80}.uk-card-primary.uk-card-body .uk-close:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-close:hover,.uk-card-secondary.uk-card-body .uk-close:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-close:hover,.uk-light .uk-close:hover,.uk-offcanvas-bar .uk-close:hover,.uk-overlay-primary .uk-close:hover,.uk-section-primary:not(.uk-preserve-color) .uk-close:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-close:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-close:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-close:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-totop,.uk-card-primary>:not([class*=uk-card-media]) .uk-totop,.uk-card-secondary.uk-card-body .uk-totop,.uk-card-secondary>:not([class*=uk-card-media]) .uk-totop,.uk-light .uk-totop,.uk-offcanvas-bar .uk-totop,.uk-overlay-primary .uk-totop,.uk-section-primary:not(.uk-preserve-color) .uk-totop,.uk-section-secondary:not(.uk-preserve-color) .uk-totop,.uk-tile-primary:not(.uk-preserve-color) .uk-totop,.uk-tile-secondary:not(.uk-preserve-color) .uk-totop{color:#ffffff80}.uk-card-primary.uk-card-body .uk-totop:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-totop:hover,.uk-card-secondary.uk-card-body .uk-totop:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-totop:hover,.uk-light .uk-totop:hover,.uk-offcanvas-bar .uk-totop:hover,.uk-overlay-primary .uk-totop:hover,.uk-section-primary:not(.uk-preserve-color) .uk-totop:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-totop:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-totop:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-totop:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-totop:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-totop:active,.uk-card-secondary.uk-card-body .uk-totop:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-totop:active,.uk-light .uk-totop:active,.uk-offcanvas-bar .uk-totop:active,.uk-overlay-primary .uk-totop:active,.uk-section-primary:not(.uk-preserve-color) .uk-totop:active,.uk-section-secondary:not(.uk-preserve-color) .uk-totop:active,.uk-tile-primary:not(.uk-preserve-color) .uk-totop:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-totop:active{color:#fff}.uk-card-primary.uk-card-body .uk-marker,.uk-card-primary>:not([class*=uk-card-media]) .uk-marker,.uk-card-secondary.uk-card-body .uk-marker,.uk-card-secondary>:not([class*=uk-card-media]) .uk-marker,.uk-light .uk-marker,.uk-offcanvas-bar .uk-marker,.uk-overlay-primary .uk-marker,.uk-section-primary:not(.uk-preserve-color) .uk-marker,.uk-section-secondary:not(.uk-preserve-color) .uk-marker,.uk-tile-primary:not(.uk-preserve-color) .uk-marker,.uk-tile-secondary:not(.uk-preserve-color) .uk-marker{background:#f8f8f8;color:#666}.uk-card-primary.uk-card-body .uk-marker:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-marker:hover,.uk-card-secondary.uk-card-body .uk-marker:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-marker:hover,.uk-light .uk-marker:hover,.uk-offcanvas-bar .uk-marker:hover,.uk-overlay-primary .uk-marker:hover,.uk-section-primary:not(.uk-preserve-color) .uk-marker:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-marker:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-marker:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-marker:hover{color:#666}.uk-card-primary.uk-card-body .uk-badge,.uk-card-primary>:not([class*=uk-card-media]) .uk-badge,.uk-card-secondary.uk-card-body .uk-badge,.uk-card-secondary>:not([class*=uk-card-media]) .uk-badge,.uk-light .uk-badge,.uk-offcanvas-bar .uk-badge,.uk-overlay-primary .uk-badge,.uk-section-primary:not(.uk-preserve-color) .uk-badge,.uk-section-secondary:not(.uk-preserve-color) .uk-badge,.uk-tile-primary:not(.uk-preserve-color) .uk-badge,.uk-tile-secondary:not(.uk-preserve-color) .uk-badge{background-color:#fff;color:#666!important}.uk-card-primary.uk-card-body .uk-label,.uk-card-primary>:not([class*=uk-card-media]) .uk-label,.uk-card-secondary.uk-card-body .uk-label,.uk-card-secondary>:not([class*=uk-card-media]) .uk-label,.uk-light .uk-label,.uk-offcanvas-bar .uk-label,.uk-overlay-primary .uk-label,.uk-section-primary:not(.uk-preserve-color) .uk-label,.uk-section-secondary:not(.uk-preserve-color) .uk-label,.uk-tile-primary:not(.uk-preserve-color) .uk-label,.uk-tile-secondary:not(.uk-preserve-color) .uk-label{background-color:#fff;color:#666}.uk-card-primary.uk-card-body .uk-article-meta,.uk-card-primary>:not([class*=uk-card-media]) .uk-article-meta,.uk-card-secondary.uk-card-body .uk-article-meta,.uk-card-secondary>:not([class*=uk-card-media]) .uk-article-meta,.uk-light .uk-article-meta,.uk-offcanvas-bar .uk-article-meta,.uk-overlay-primary .uk-article-meta,.uk-section-primary:not(.uk-preserve-color) .uk-article-meta,.uk-section-secondary:not(.uk-preserve-color) .uk-article-meta,.uk-tile-primary:not(.uk-preserve-color) .uk-article-meta,.uk-tile-secondary:not(.uk-preserve-color) .uk-article-meta{color:#ffffff80}.uk-card-primary.uk-card-body .uk-search-input,.uk-card-primary>:not([class*=uk-card-media]) .uk-search-input,.uk-card-secondary.uk-card-body .uk-search-input,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search-input,.uk-light .uk-search-input,.uk-offcanvas-bar .uk-search-input,.uk-overlay-primary .uk-search-input,.uk-section-primary:not(.uk-preserve-color) .uk-search-input,.uk-section-secondary:not(.uk-preserve-color) .uk-search-input,.uk-tile-primary:not(.uk-preserve-color) .uk-search-input,.uk-tile-secondary:not(.uk-preserve-color) .uk-search-input{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-search-input::placeholder,.uk-card-primary>:not([class*=uk-card-media]) .uk-search-input::placeholder,.uk-card-secondary.uk-card-body .uk-search-input::placeholder,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search-input::placeholder,.uk-light .uk-search-input::placeholder,.uk-offcanvas-bar .uk-search-input::placeholder,.uk-overlay-primary .uk-search-input::placeholder,.uk-section-primary:not(.uk-preserve-color) .uk-search-input::placeholder,.uk-section-secondary:not(.uk-preserve-color) .uk-search-input::placeholder,.uk-tile-primary:not(.uk-preserve-color) .uk-search-input::placeholder,.uk-tile-secondary:not(.uk-preserve-color) .uk-search-input::placeholder{color:#ffffff80}.uk-card-primary.uk-card-body .uk-search .uk-search-icon,.uk-card-primary>:not([class*=uk-card-media]) .uk-search .uk-search-icon,.uk-card-secondary.uk-card-body .uk-search .uk-search-icon,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search .uk-search-icon,.uk-light .uk-search .uk-search-icon,.uk-offcanvas-bar .uk-search .uk-search-icon,.uk-overlay-primary .uk-search .uk-search-icon,.uk-section-primary:not(.uk-preserve-color) .uk-search .uk-search-icon,.uk-section-secondary:not(.uk-preserve-color) .uk-search .uk-search-icon,.uk-tile-primary:not(.uk-preserve-color) .uk-search .uk-search-icon,.uk-tile-secondary:not(.uk-preserve-color) .uk-search .uk-search-icon{color:#ffffff80}.uk-card-primary.uk-card-body .uk-search .uk-search-icon:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-search .uk-search-icon:hover,.uk-card-secondary.uk-card-body .uk-search .uk-search-icon:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search .uk-search-icon:hover,.uk-light .uk-search .uk-search-icon:hover,.uk-offcanvas-bar .uk-search .uk-search-icon:hover,.uk-overlay-primary .uk-search .uk-search-icon:hover,.uk-section-primary:not(.uk-preserve-color) .uk-search .uk-search-icon:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-search .uk-search-icon:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-search .uk-search-icon:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-search .uk-search-icon:hover{color:#ffffff80}.uk-card-primary.uk-card-body .uk-search-default .uk-search-input,.uk-card-primary>:not([class*=uk-card-media]) .uk-search-default .uk-search-input,.uk-card-secondary.uk-card-body .uk-search-default .uk-search-input,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search-default .uk-search-input,.uk-light .uk-search-default .uk-search-input,.uk-offcanvas-bar .uk-search-default .uk-search-input,.uk-overlay-primary .uk-search-default .uk-search-input,.uk-section-primary:not(.uk-preserve-color) .uk-search-default .uk-search-input,.uk-section-secondary:not(.uk-preserve-color) .uk-search-default .uk-search-input,.uk-tile-primary:not(.uk-preserve-color) .uk-search-default .uk-search-input,.uk-tile-secondary:not(.uk-preserve-color) .uk-search-default .uk-search-input{background-color:transparent;border-color:#fff3}.uk-card-primary.uk-card-body .uk-search-default .uk-search-input:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-search-default .uk-search-input:focus,.uk-card-secondary.uk-card-body .uk-search-default .uk-search-input:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search-default .uk-search-input:focus,.uk-light .uk-search-default .uk-search-input:focus,.uk-offcanvas-bar .uk-search-default .uk-search-input:focus,.uk-overlay-primary .uk-search-default .uk-search-input:focus,.uk-section-primary:not(.uk-preserve-color) .uk-search-default .uk-search-input:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-search-default .uk-search-input:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-search-default .uk-search-input:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-search-default .uk-search-input:focus{background-color:#0000000d}.uk-card-primary.uk-card-body .uk-search-navbar .uk-search-input,.uk-card-primary>:not([class*=uk-card-media]) .uk-search-navbar .uk-search-input,.uk-card-secondary.uk-card-body .uk-search-navbar .uk-search-input,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search-navbar .uk-search-input,.uk-light .uk-search-navbar .uk-search-input,.uk-offcanvas-bar .uk-search-navbar .uk-search-input,.uk-overlay-primary .uk-search-navbar .uk-search-input,.uk-section-primary:not(.uk-preserve-color) .uk-search-navbar .uk-search-input,.uk-section-secondary:not(.uk-preserve-color) .uk-search-navbar .uk-search-input,.uk-tile-primary:not(.uk-preserve-color) .uk-search-navbar .uk-search-input,.uk-tile-secondary:not(.uk-preserve-color) .uk-search-navbar .uk-search-input{background-color:transparent;border-color:#fff3}.uk-card-primary.uk-card-body .uk-search-navbar .uk-search-input:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-search-navbar .uk-search-input:focus,.uk-card-secondary.uk-card-body .uk-search-navbar .uk-search-input:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search-navbar .uk-search-input:focus,.uk-light .uk-search-navbar .uk-search-input:focus,.uk-offcanvas-bar .uk-search-navbar .uk-search-input:focus,.uk-overlay-primary .uk-search-navbar .uk-search-input:focus,.uk-section-primary:not(.uk-preserve-color) .uk-search-navbar .uk-search-input:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-search-navbar .uk-search-input:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-search-navbar .uk-search-input:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-search-navbar .uk-search-input:focus{background-color:#0000000d}.uk-card-primary.uk-card-body .uk-search-medium .uk-search-input,.uk-card-primary>:not([class*=uk-card-media]) .uk-search-medium .uk-search-input,.uk-card-secondary.uk-card-body .uk-search-medium .uk-search-input,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search-medium .uk-search-input,.uk-light .uk-search-medium .uk-search-input,.uk-offcanvas-bar .uk-search-medium .uk-search-input,.uk-overlay-primary .uk-search-medium .uk-search-input,.uk-section-primary:not(.uk-preserve-color) .uk-search-medium .uk-search-input,.uk-section-secondary:not(.uk-preserve-color) .uk-search-medium .uk-search-input,.uk-tile-primary:not(.uk-preserve-color) .uk-search-medium .uk-search-input,.uk-tile-secondary:not(.uk-preserve-color) .uk-search-medium .uk-search-input{background-color:transparent}.uk-card-primary.uk-card-body .uk-search-large .uk-search-input,.uk-card-primary>:not([class*=uk-card-media]) .uk-search-large .uk-search-input,.uk-card-secondary.uk-card-body .uk-search-large .uk-search-input,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search-large .uk-search-input,.uk-light .uk-search-large .uk-search-input,.uk-offcanvas-bar .uk-search-large .uk-search-input,.uk-overlay-primary .uk-search-large .uk-search-input,.uk-section-primary:not(.uk-preserve-color) .uk-search-large .uk-search-input,.uk-section-secondary:not(.uk-preserve-color) .uk-search-large .uk-search-input,.uk-tile-primary:not(.uk-preserve-color) .uk-search-large .uk-search-input,.uk-tile-secondary:not(.uk-preserve-color) .uk-search-large .uk-search-input{background-color:transparent}.uk-card-primary.uk-card-body .uk-search-toggle,.uk-card-primary>:not([class*=uk-card-media]) .uk-search-toggle,.uk-card-secondary.uk-card-body .uk-search-toggle,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search-toggle,.uk-light .uk-search-toggle,.uk-offcanvas-bar .uk-search-toggle,.uk-overlay-primary .uk-search-toggle,.uk-section-primary:not(.uk-preserve-color) .uk-search-toggle,.uk-section-secondary:not(.uk-preserve-color) .uk-search-toggle,.uk-tile-primary:not(.uk-preserve-color) .uk-search-toggle,.uk-tile-secondary:not(.uk-preserve-color) .uk-search-toggle{color:#ffffff80}.uk-card-primary.uk-card-body .uk-search-toggle:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-search-toggle:hover,.uk-card-secondary.uk-card-body .uk-search-toggle:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search-toggle:hover,.uk-light .uk-search-toggle:hover,.uk-offcanvas-bar .uk-search-toggle:hover,.uk-overlay-primary .uk-search-toggle:hover,.uk-section-primary:not(.uk-preserve-color) .uk-search-toggle:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-search-toggle:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-search-toggle:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-search-toggle:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-accordion-title,.uk-card-primary>:not([class*=uk-card-media]) .uk-accordion-title,.uk-card-secondary.uk-card-body .uk-accordion-title,.uk-card-secondary>:not([class*=uk-card-media]) .uk-accordion-title,.uk-light .uk-accordion-title,.uk-offcanvas-bar .uk-accordion-title,.uk-overlay-primary .uk-accordion-title,.uk-section-primary:not(.uk-preserve-color) .uk-accordion-title,.uk-section-secondary:not(.uk-preserve-color) .uk-accordion-title,.uk-tile-primary:not(.uk-preserve-color) .uk-accordion-title,.uk-tile-secondary:not(.uk-preserve-color) .uk-accordion-title{color:#fff}.uk-card-primary.uk-card-body .uk-accordion-title:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-accordion-title:hover,.uk-card-secondary.uk-card-body .uk-accordion-title:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-accordion-title:hover,.uk-light .uk-accordion-title:hover,.uk-offcanvas-bar .uk-accordion-title:hover,.uk-overlay-primary .uk-accordion-title:hover,.uk-section-primary:not(.uk-preserve-color) .uk-accordion-title:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-accordion-title:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-accordion-title:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-accordion-title:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-thumbnav>*>:after,.uk-card-primary>:not([class*=uk-card-media]) .uk-thumbnav>*>:after,.uk-card-secondary.uk-card-body .uk-thumbnav>*>:after,.uk-card-secondary>:not([class*=uk-card-media]) .uk-thumbnav>*>:after,.uk-light .uk-thumbnav>*>:after,.uk-offcanvas-bar .uk-thumbnav>*>:after,.uk-overlay-primary .uk-thumbnav>*>:after,.uk-section-primary:not(.uk-preserve-color) .uk-thumbnav>*>:after,.uk-section-secondary:not(.uk-preserve-color) .uk-thumbnav>*>:after,.uk-tile-primary:not(.uk-preserve-color) .uk-thumbnav>*>:after,.uk-tile-secondary:not(.uk-preserve-color) .uk-thumbnav>*>:after{background-image:linear-gradient(180deg,#0000,#0006)}.uk-card-primary.uk-card-body .uk-iconnav>*>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-iconnav>*>a,.uk-card-secondary.uk-card-body .uk-iconnav>*>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-iconnav>*>a,.uk-light .uk-iconnav>*>a,.uk-offcanvas-bar .uk-iconnav>*>a,.uk-overlay-primary .uk-iconnav>*>a,.uk-section-primary:not(.uk-preserve-color) .uk-iconnav>*>a,.uk-section-secondary:not(.uk-preserve-color) .uk-iconnav>*>a,.uk-tile-primary:not(.uk-preserve-color) .uk-iconnav>*>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-iconnav>*>a{color:#ffffff80}.uk-card-primary.uk-card-body .uk-iconnav>*>a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-iconnav>*>a:hover,.uk-card-secondary.uk-card-body .uk-iconnav>*>a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-iconnav>*>a:hover,.uk-light .uk-iconnav>*>a:hover,.uk-offcanvas-bar .uk-iconnav>*>a:hover,.uk-overlay-primary .uk-iconnav>*>a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-iconnav>*>a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-iconnav>*>a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-iconnav>*>a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-iconnav>*>a:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-iconnav>.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-iconnav>.uk-active>a,.uk-card-secondary.uk-card-body .uk-iconnav>.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-iconnav>.uk-active>a,.uk-light .uk-iconnav>.uk-active>a,.uk-offcanvas-bar .uk-iconnav>.uk-active>a,.uk-overlay-primary .uk-iconnav>.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-iconnav>.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-iconnav>.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-iconnav>.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-iconnav>.uk-active>a{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-grid-divider>:not(.uk-first-column):before,.uk-card-primary>:not([class*=uk-card-media]) .uk-grid-divider>:not(.uk-first-column):before,.uk-card-secondary.uk-card-body .uk-grid-divider>:not(.uk-first-column):before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-grid-divider>:not(.uk-first-column):before,.uk-light .uk-grid-divider>:not(.uk-first-column):before,.uk-offcanvas-bar .uk-grid-divider>:not(.uk-first-column):before,.uk-overlay-primary .uk-grid-divider>:not(.uk-first-column):before,.uk-section-primary:not(.uk-preserve-color) .uk-grid-divider>:not(.uk-first-column):before,.uk-section-secondary:not(.uk-preserve-color) .uk-grid-divider>:not(.uk-first-column):before,.uk-tile-primary:not(.uk-preserve-color) .uk-grid-divider>:not(.uk-first-column):before,.uk-tile-secondary:not(.uk-preserve-color) .uk-grid-divider>:not(.uk-first-column):before{border-left-color:#fff3}.uk-card-primary.uk-card-body .uk-grid-divider.uk-grid-stack>.uk-grid-margin:before,.uk-card-primary>:not([class*=uk-card-media]) .uk-grid-divider.uk-grid-stack>.uk-grid-margin:before,.uk-card-secondary.uk-card-body .uk-grid-divider.uk-grid-stack>.uk-grid-margin:before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-grid-divider.uk-grid-stack>.uk-grid-margin:before,.uk-light .uk-grid-divider.uk-grid-stack>.uk-grid-margin:before,.uk-offcanvas-bar .uk-grid-divider.uk-grid-stack>.uk-grid-margin:before,.uk-overlay-primary .uk-grid-divider.uk-grid-stack>.uk-grid-margin:before,.uk-section-primary:not(.uk-preserve-color) .uk-grid-divider.uk-grid-stack>.uk-grid-margin:before,.uk-section-secondary:not(.uk-preserve-color) .uk-grid-divider.uk-grid-stack>.uk-grid-margin:before,.uk-tile-primary:not(.uk-preserve-color) .uk-grid-divider.uk-grid-stack>.uk-grid-margin:before,.uk-tile-secondary:not(.uk-preserve-color) .uk-grid-divider.uk-grid-stack>.uk-grid-margin:before{border-top-color:#fff3}.uk-card-primary.uk-card-body .uk-nav-default>li>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-default>li>a,.uk-card-secondary.uk-card-body .uk-nav-default>li>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-default>li>a,.uk-light .uk-nav-default>li>a,.uk-offcanvas-bar .uk-nav-default>li>a,.uk-overlay-primary .uk-nav-default>li>a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-default>li>a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-default>li>a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-default>li>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-default>li>a{color:#ffffff80}.uk-card-primary.uk-card-body .uk-nav-default>li>a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-default>li>a:hover,.uk-card-secondary.uk-card-body .uk-nav-default>li>a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-default>li>a:hover,.uk-light .uk-nav-default>li>a:hover,.uk-offcanvas-bar .uk-nav-default>li>a:hover,.uk-overlay-primary .uk-nav-default>li>a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-nav-default>li>a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-default>li>a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-default>li>a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-default>li>a:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-nav-default>li.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-default>li.uk-active>a,.uk-card-secondary.uk-card-body .uk-nav-default>li.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-default>li.uk-active>a,.uk-light .uk-nav-default>li.uk-active>a,.uk-offcanvas-bar .uk-nav-default>li.uk-active>a,.uk-overlay-primary .uk-nav-default>li.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-default>li.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-default>li.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-default>li.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-default>li.uk-active>a{color:#fff}.uk-card-primary.uk-card-body .uk-nav-default .uk-nav-header,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-header,.uk-card-secondary.uk-card-body .uk-nav-default .uk-nav-header,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-header,.uk-light .uk-nav-default .uk-nav-header,.uk-offcanvas-bar .uk-nav-default .uk-nav-header,.uk-overlay-primary .uk-nav-default .uk-nav-header,.uk-section-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-header,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-header,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-header,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-header{color:#fff}.uk-card-primary.uk-card-body .uk-nav-default .uk-nav-divider,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-divider,.uk-card-secondary.uk-card-body .uk-nav-default .uk-nav-divider,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-divider,.uk-light .uk-nav-default .uk-nav-divider,.uk-offcanvas-bar .uk-nav-default .uk-nav-divider,.uk-overlay-primary .uk-nav-default .uk-nav-divider,.uk-section-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-divider,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-divider,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-divider,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-divider{border-top-color:#fff3}.uk-card-primary.uk-card-body .uk-nav-default .uk-nav-sub a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-sub a,.uk-card-secondary.uk-card-body .uk-nav-default .uk-nav-sub a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-sub a,.uk-light .uk-nav-default .uk-nav-sub a,.uk-offcanvas-bar .uk-nav-default .uk-nav-sub a,.uk-overlay-primary .uk-nav-default .uk-nav-sub a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub a{color:#ffffff80}.uk-card-primary.uk-card-body .uk-nav-default .uk-nav-sub a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-sub a:hover,.uk-card-secondary.uk-card-body .uk-nav-default .uk-nav-sub a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-sub a:hover,.uk-light .uk-nav-default .uk-nav-sub a:hover,.uk-offcanvas-bar .uk-nav-default .uk-nav-sub a:hover,.uk-overlay-primary .uk-nav-default .uk-nav-sub a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub a:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-card-secondary.uk-card-body .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-light .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-offcanvas-bar .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-overlay-primary .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub li.uk-active>a{color:#fff}.uk-card-primary.uk-card-body .uk-nav-primary>li>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-primary>li>a,.uk-card-secondary.uk-card-body .uk-nav-primary>li>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-primary>li>a,.uk-light .uk-nav-primary>li>a,.uk-offcanvas-bar .uk-nav-primary>li>a,.uk-overlay-primary .uk-nav-primary>li>a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-primary>li>a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-primary>li>a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-primary>li>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-primary>li>a{color:#ffffff80}.uk-card-primary.uk-card-body .uk-nav-primary>li>a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-primary>li>a:hover,.uk-card-secondary.uk-card-body .uk-nav-primary>li>a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-primary>li>a:hover,.uk-light .uk-nav-primary>li>a:hover,.uk-offcanvas-bar .uk-nav-primary>li>a:hover,.uk-overlay-primary .uk-nav-primary>li>a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-nav-primary>li>a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-primary>li>a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-primary>li>a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-primary>li>a:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-nav-primary>li.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-primary>li.uk-active>a,.uk-card-secondary.uk-card-body .uk-nav-primary>li.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-primary>li.uk-active>a,.uk-light .uk-nav-primary>li.uk-active>a,.uk-offcanvas-bar .uk-nav-primary>li.uk-active>a,.uk-overlay-primary .uk-nav-primary>li.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-primary>li.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-primary>li.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-primary>li.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-primary>li.uk-active>a{color:#fff}.uk-card-primary.uk-card-body .uk-nav-primary .uk-nav-header,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-header,.uk-card-secondary.uk-card-body .uk-nav-primary .uk-nav-header,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-header,.uk-light .uk-nav-primary .uk-nav-header,.uk-offcanvas-bar .uk-nav-primary .uk-nav-header,.uk-overlay-primary .uk-nav-primary .uk-nav-header,.uk-section-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-header,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-header,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-header,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-header{color:#fff}.uk-card-primary.uk-card-body .uk-nav-primary .uk-nav-divider,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-divider,.uk-card-secondary.uk-card-body .uk-nav-primary .uk-nav-divider,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-divider,.uk-light .uk-nav-primary .uk-nav-divider,.uk-offcanvas-bar .uk-nav-primary .uk-nav-divider,.uk-overlay-primary .uk-nav-primary .uk-nav-divider,.uk-section-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-divider,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-divider,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-divider,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-divider{border-top-color:#fff3}.uk-card-primary.uk-card-body .uk-nav-primary .uk-nav-sub a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-sub a,.uk-card-secondary.uk-card-body .uk-nav-primary .uk-nav-sub a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-sub a,.uk-light .uk-nav-primary .uk-nav-sub a,.uk-offcanvas-bar .uk-nav-primary .uk-nav-sub a,.uk-overlay-primary .uk-nav-primary .uk-nav-sub a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub a{color:#ffffff80}.uk-card-primary.uk-card-body .uk-nav-primary .uk-nav-sub a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-sub a:hover,.uk-card-secondary.uk-card-body .uk-nav-primary .uk-nav-sub a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-sub a:hover,.uk-light .uk-nav-primary .uk-nav-sub a:hover,.uk-offcanvas-bar .uk-nav-primary .uk-nav-sub a:hover,.uk-overlay-primary .uk-nav-primary .uk-nav-sub a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub a:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-card-secondary.uk-card-body .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-light .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-offcanvas-bar .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-overlay-primary .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub li.uk-active>a{color:#fff}.uk-card-primary.uk-card-body .uk-nav-secondary>li>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary>li>a,.uk-card-secondary.uk-card-body .uk-nav-secondary>li>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary>li>a,.uk-light .uk-nav-secondary>li>a,.uk-offcanvas-bar .uk-nav-secondary>li>a,.uk-overlay-primary .uk-nav-secondary>li>a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary>li>a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary>li>a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary>li>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary>li>a{color:#fff}.uk-card-primary.uk-card-body .uk-nav-secondary>li>a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary>li>a:hover,.uk-card-secondary.uk-card-body .uk-nav-secondary>li>a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary>li>a:hover,.uk-light .uk-nav-secondary>li>a:hover,.uk-offcanvas-bar .uk-nav-secondary>li>a:hover,.uk-overlay-primary .uk-nav-secondary>li>a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary>li>a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary>li>a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary>li>a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary>li>a:hover{color:#fff;background-color:#ffffff1a}.uk-card-primary.uk-card-body .uk-nav-secondary>li.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary>li.uk-active>a,.uk-card-secondary.uk-card-body .uk-nav-secondary>li.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary>li.uk-active>a,.uk-light .uk-nav-secondary>li.uk-active>a,.uk-offcanvas-bar .uk-nav-secondary>li.uk-active>a,.uk-overlay-primary .uk-nav-secondary>li.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary>li.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary>li.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary>li.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary>li.uk-active>a{color:#fff;background-color:#ffffff1a}.uk-card-primary.uk-card-body .uk-nav-secondary .uk-nav-subtitle,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-subtitle,.uk-card-secondary.uk-card-body .uk-nav-secondary .uk-nav-subtitle,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-subtitle,.uk-light .uk-nav-secondary .uk-nav-subtitle,.uk-offcanvas-bar .uk-nav-secondary .uk-nav-subtitle,.uk-overlay-primary .uk-nav-secondary .uk-nav-subtitle,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-subtitle,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-subtitle,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-subtitle,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-subtitle{color:#ffffff80}.uk-card-primary.uk-card-body .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-card-secondary.uk-card-body .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-light .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-offcanvas-bar .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-overlay-primary .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary>li>a:hover .uk-nav-subtitle{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-card-secondary.uk-card-body .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-light .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-offcanvas-bar .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-overlay-primary .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle{color:#fff}.uk-card-primary.uk-card-body .uk-nav-secondary .uk-nav-header,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-header,.uk-card-secondary.uk-card-body .uk-nav-secondary .uk-nav-header,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-header,.uk-light .uk-nav-secondary .uk-nav-header,.uk-offcanvas-bar .uk-nav-secondary .uk-nav-header,.uk-overlay-primary .uk-nav-secondary .uk-nav-header,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-header,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-header,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-header,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-header{color:#fff}.uk-card-primary.uk-card-body .uk-nav-secondary .uk-nav-divider,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-divider,.uk-card-secondary.uk-card-body .uk-nav-secondary .uk-nav-divider,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-divider,.uk-light .uk-nav-secondary .uk-nav-divider,.uk-offcanvas-bar .uk-nav-secondary .uk-nav-divider,.uk-overlay-primary .uk-nav-secondary .uk-nav-divider,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-divider,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-divider,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-divider,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-divider{border-top-color:#fff3}.uk-card-primary.uk-card-body .uk-nav-secondary .uk-nav-sub a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-sub a,.uk-card-secondary.uk-card-body .uk-nav-secondary .uk-nav-sub a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-sub a,.uk-light .uk-nav-secondary .uk-nav-sub a,.uk-offcanvas-bar .uk-nav-secondary .uk-nav-sub a,.uk-overlay-primary .uk-nav-secondary .uk-nav-sub a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub a{color:#ffffff80}.uk-card-primary.uk-card-body .uk-nav-secondary .uk-nav-sub a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-sub a:hover,.uk-card-secondary.uk-card-body .uk-nav-secondary .uk-nav-sub a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-sub a:hover,.uk-light .uk-nav-secondary .uk-nav-sub a:hover,.uk-offcanvas-bar .uk-nav-secondary .uk-nav-sub a:hover,.uk-overlay-primary .uk-nav-secondary .uk-nav-sub a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub a:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-card-secondary.uk-card-body .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-light .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-offcanvas-bar .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-overlay-primary .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub li.uk-active>a{color:#fff}.uk-card-primary.uk-card-body .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-card-primary>:not([class*=uk-card-media]) .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-card-secondary.uk-card-body .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-light .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-offcanvas-bar .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-overlay-primary .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-section-primary:not(.uk-preserve-color) .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-section-secondary:not(.uk-preserve-color) .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-tile-primary:not(.uk-preserve-color) .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-tile-secondary:not(.uk-preserve-color) .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider){border-top-color:#fff3}.uk-card-primary.uk-card-body .uk-navbar-nav>li>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-navbar-nav>li>a,.uk-card-secondary.uk-card-body .uk-navbar-nav>li>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-navbar-nav>li>a,.uk-light .uk-navbar-nav>li>a,.uk-offcanvas-bar .uk-navbar-nav>li>a,.uk-overlay-primary .uk-navbar-nav>li>a,.uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a,.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a,.uk-tile-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a{color:#ffffff80}.uk-card-primary.uk-card-body .uk-navbar-nav>li:hover>a,.uk-card-primary.uk-card-body .uk-navbar-nav>li>a[aria-expanded=true],.uk-card-primary>:not([class*=uk-card-media]) .uk-navbar-nav>li:hover>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-navbar-nav>li>a[aria-expanded=true],.uk-card-secondary.uk-card-body .uk-navbar-nav>li:hover>a,.uk-card-secondary.uk-card-body .uk-navbar-nav>li>a[aria-expanded=true],.uk-card-secondary>:not([class*=uk-card-media]) .uk-navbar-nav>li:hover>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-navbar-nav>li>a[aria-expanded=true],.uk-light .uk-navbar-nav>li:hover>a,.uk-light .uk-navbar-nav>li>a[aria-expanded=true],.uk-offcanvas-bar .uk-navbar-nav>li:hover>a,.uk-offcanvas-bar .uk-navbar-nav>li>a[aria-expanded=true],.uk-overlay-primary .uk-navbar-nav>li:hover>a,.uk-overlay-primary .uk-navbar-nav>li>a[aria-expanded=true],.uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li:hover>a,.uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a[aria-expanded=true],.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li:hover>a,.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a[aria-expanded=true],.uk-tile-primary:not(.uk-preserve-color) .uk-navbar-nav>li:hover>a,.uk-tile-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a[aria-expanded=true],.uk-tile-secondary:not(.uk-preserve-color) .uk-navbar-nav>li:hover>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a[aria-expanded=true]{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-navbar-nav>li>a:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-navbar-nav>li>a:active,.uk-card-secondary.uk-card-body .uk-navbar-nav>li>a:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-navbar-nav>li>a:active,.uk-light .uk-navbar-nav>li>a:active,.uk-offcanvas-bar .uk-navbar-nav>li>a:active,.uk-overlay-primary .uk-navbar-nav>li>a:active,.uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a:active,.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a:active,.uk-tile-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a:active{color:#fff}.uk-card-primary.uk-card-body .uk-navbar-nav>li.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-navbar-nav>li.uk-active>a,.uk-card-secondary.uk-card-body .uk-navbar-nav>li.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-navbar-nav>li.uk-active>a,.uk-light .uk-navbar-nav>li.uk-active>a,.uk-offcanvas-bar .uk-navbar-nav>li.uk-active>a,.uk-overlay-primary .uk-navbar-nav>li.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-navbar-nav>li.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-navbar-nav>li.uk-active>a{color:#fff}.uk-card-primary.uk-card-body .uk-navbar-item,.uk-card-primary>:not([class*=uk-card-media]) .uk-navbar-item,.uk-card-secondary.uk-card-body .uk-navbar-item,.uk-card-secondary>:not([class*=uk-card-media]) .uk-navbar-item,.uk-light .uk-navbar-item,.uk-offcanvas-bar .uk-navbar-item,.uk-overlay-primary .uk-navbar-item,.uk-section-primary:not(.uk-preserve-color) .uk-navbar-item,.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-item,.uk-tile-primary:not(.uk-preserve-color) .uk-navbar-item,.uk-tile-secondary:not(.uk-preserve-color) .uk-navbar-item{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-navbar-toggle,.uk-card-primary>:not([class*=uk-card-media]) .uk-navbar-toggle,.uk-card-secondary.uk-card-body .uk-navbar-toggle,.uk-card-secondary>:not([class*=uk-card-media]) .uk-navbar-toggle,.uk-light .uk-navbar-toggle,.uk-offcanvas-bar .uk-navbar-toggle,.uk-overlay-primary .uk-navbar-toggle,.uk-section-primary:not(.uk-preserve-color) .uk-navbar-toggle,.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-toggle,.uk-tile-primary:not(.uk-preserve-color) .uk-navbar-toggle,.uk-tile-secondary:not(.uk-preserve-color) .uk-navbar-toggle{color:#ffffff80}.uk-card-primary.uk-card-body .uk-navbar-toggle:hover,.uk-card-primary.uk-card-body .uk-navbar-toggle[aria-expanded=true],.uk-card-primary>:not([class*=uk-card-media]) .uk-navbar-toggle:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-navbar-toggle[aria-expanded=true],.uk-card-secondary.uk-card-body .uk-navbar-toggle:hover,.uk-card-secondary.uk-card-body .uk-navbar-toggle[aria-expanded=true],.uk-card-secondary>:not([class*=uk-card-media]) .uk-navbar-toggle:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-navbar-toggle[aria-expanded=true],.uk-light .uk-navbar-toggle:hover,.uk-light .uk-navbar-toggle[aria-expanded=true],.uk-offcanvas-bar .uk-navbar-toggle:hover,.uk-offcanvas-bar .uk-navbar-toggle[aria-expanded=true],.uk-overlay-primary .uk-navbar-toggle:hover,.uk-overlay-primary .uk-navbar-toggle[aria-expanded=true],.uk-section-primary:not(.uk-preserve-color) .uk-navbar-toggle:hover,.uk-section-primary:not(.uk-preserve-color) .uk-navbar-toggle[aria-expanded=true],.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-toggle:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-toggle[aria-expanded=true],.uk-tile-primary:not(.uk-preserve-color) .uk-navbar-toggle:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-navbar-toggle[aria-expanded=true],.uk-tile-secondary:not(.uk-preserve-color) .uk-navbar-toggle:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-navbar-toggle[aria-expanded=true]{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-subnav>*>:first-child,.uk-card-primary>:not([class*=uk-card-media]) .uk-subnav>*>:first-child,.uk-card-secondary.uk-card-body .uk-subnav>*>:first-child,.uk-card-secondary>:not([class*=uk-card-media]) .uk-subnav>*>:first-child,.uk-light .uk-subnav>*>:first-child,.uk-offcanvas-bar .uk-subnav>*>:first-child,.uk-overlay-primary .uk-subnav>*>:first-child,.uk-section-primary:not(.uk-preserve-color) .uk-subnav>*>:first-child,.uk-section-secondary:not(.uk-preserve-color) .uk-subnav>*>:first-child,.uk-tile-primary:not(.uk-preserve-color) .uk-subnav>*>:first-child,.uk-tile-secondary:not(.uk-preserve-color) .uk-subnav>*>:first-child{color:#ffffff80}.uk-card-primary.uk-card-body .uk-subnav>*>a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-subnav>*>a:hover,.uk-card-secondary.uk-card-body .uk-subnav>*>a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-subnav>*>a:hover,.uk-light .uk-subnav>*>a:hover,.uk-offcanvas-bar .uk-subnav>*>a:hover,.uk-overlay-primary .uk-subnav>*>a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-subnav>*>a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-subnav>*>a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-subnav>*>a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-subnav>*>a:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-subnav>.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-subnav>.uk-active>a,.uk-card-secondary.uk-card-body .uk-subnav>.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-subnav>.uk-active>a,.uk-light .uk-subnav>.uk-active>a,.uk-offcanvas-bar .uk-subnav>.uk-active>a,.uk-overlay-primary .uk-subnav>.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-subnav>.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-subnav>.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-subnav>.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-subnav>.uk-active>a{color:#fff}.uk-card-primary.uk-card-body .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column):before,.uk-card-primary>:not([class*=uk-card-media]) .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column):before,.uk-card-secondary.uk-card-body .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column):before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column):before,.uk-light .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column):before,.uk-offcanvas-bar .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column):before,.uk-overlay-primary .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column):before,.uk-section-primary:not(.uk-preserve-color) .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column):before,.uk-section-secondary:not(.uk-preserve-color) .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column):before,.uk-tile-primary:not(.uk-preserve-color) .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column):before,.uk-tile-secondary:not(.uk-preserve-color) .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column):before{border-left-color:#fff3}.uk-card-primary.uk-card-body .uk-subnav-pill>*>:first-child,.uk-card-primary>:not([class*=uk-card-media]) .uk-subnav-pill>*>:first-child,.uk-card-secondary.uk-card-body .uk-subnav-pill>*>:first-child,.uk-card-secondary>:not([class*=uk-card-media]) .uk-subnav-pill>*>:first-child,.uk-light .uk-subnav-pill>*>:first-child,.uk-offcanvas-bar .uk-subnav-pill>*>:first-child,.uk-overlay-primary .uk-subnav-pill>*>:first-child,.uk-section-primary:not(.uk-preserve-color) .uk-subnav-pill>*>:first-child,.uk-section-secondary:not(.uk-preserve-color) .uk-subnav-pill>*>:first-child,.uk-tile-primary:not(.uk-preserve-color) .uk-subnav-pill>*>:first-child,.uk-tile-secondary:not(.uk-preserve-color) .uk-subnav-pill>*>:first-child{background-color:transparent;color:#ffffff80}.uk-card-primary.uk-card-body .uk-subnav-pill>*>a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-subnav-pill>*>a:hover,.uk-card-secondary.uk-card-body .uk-subnav-pill>*>a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-subnav-pill>*>a:hover,.uk-light .uk-subnav-pill>*>a:hover,.uk-offcanvas-bar .uk-subnav-pill>*>a:hover,.uk-overlay-primary .uk-subnav-pill>*>a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-subnav-pill>*>a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-subnav-pill>*>a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-subnav-pill>*>a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-subnav-pill>*>a:hover{background-color:#ffffff1a;color:#ffffffb3}.uk-card-primary.uk-card-body .uk-subnav-pill>*>a:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-subnav-pill>*>a:active,.uk-card-secondary.uk-card-body .uk-subnav-pill>*>a:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-subnav-pill>*>a:active,.uk-light .uk-subnav-pill>*>a:active,.uk-offcanvas-bar .uk-subnav-pill>*>a:active,.uk-overlay-primary .uk-subnav-pill>*>a:active,.uk-section-primary:not(.uk-preserve-color) .uk-subnav-pill>*>a:active,.uk-section-secondary:not(.uk-preserve-color) .uk-subnav-pill>*>a:active,.uk-tile-primary:not(.uk-preserve-color) .uk-subnav-pill>*>a:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-subnav-pill>*>a:active{background-color:#ffffff1a;color:#ffffffb3}.uk-card-primary.uk-card-body .uk-subnav-pill>.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-subnav-pill>.uk-active>a,.uk-card-secondary.uk-card-body .uk-subnav-pill>.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-subnav-pill>.uk-active>a,.uk-light .uk-subnav-pill>.uk-active>a,.uk-offcanvas-bar .uk-subnav-pill>.uk-active>a,.uk-overlay-primary .uk-subnav-pill>.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-subnav-pill>.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-subnav-pill>.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-subnav-pill>.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-subnav-pill>.uk-active>a{background-color:#fff;color:#666}.uk-card-primary.uk-card-body .uk-subnav>.uk-disabled>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-subnav>.uk-disabled>a,.uk-card-secondary.uk-card-body .uk-subnav>.uk-disabled>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-subnav>.uk-disabled>a,.uk-light .uk-subnav>.uk-disabled>a,.uk-offcanvas-bar .uk-subnav>.uk-disabled>a,.uk-overlay-primary .uk-subnav>.uk-disabled>a,.uk-section-primary:not(.uk-preserve-color) .uk-subnav>.uk-disabled>a,.uk-section-secondary:not(.uk-preserve-color) .uk-subnav>.uk-disabled>a,.uk-tile-primary:not(.uk-preserve-color) .uk-subnav>.uk-disabled>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-subnav>.uk-disabled>a{color:#ffffff80}.uk-card-primary.uk-card-body .uk-breadcrumb>*>*,.uk-card-primary>:not([class*=uk-card-media]) .uk-breadcrumb>*>*,.uk-card-secondary.uk-card-body .uk-breadcrumb>*>*,.uk-card-secondary>:not([class*=uk-card-media]) .uk-breadcrumb>*>*,.uk-light .uk-breadcrumb>*>*,.uk-offcanvas-bar .uk-breadcrumb>*>*,.uk-overlay-primary .uk-breadcrumb>*>*,.uk-section-primary:not(.uk-preserve-color) .uk-breadcrumb>*>*,.uk-section-secondary:not(.uk-preserve-color) .uk-breadcrumb>*>*,.uk-tile-primary:not(.uk-preserve-color) .uk-breadcrumb>*>*,.uk-tile-secondary:not(.uk-preserve-color) .uk-breadcrumb>*>*{color:#ffffff80}.uk-card-primary.uk-card-body .uk-breadcrumb>*>:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-breadcrumb>*>:hover,.uk-card-secondary.uk-card-body .uk-breadcrumb>*>:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-breadcrumb>*>:hover,.uk-light .uk-breadcrumb>*>:hover,.uk-offcanvas-bar .uk-breadcrumb>*>:hover,.uk-overlay-primary .uk-breadcrumb>*>:hover,.uk-section-primary:not(.uk-preserve-color) .uk-breadcrumb>*>:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-breadcrumb>*>:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-breadcrumb>*>:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-breadcrumb>*>:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-breadcrumb>:last-child>*,.uk-card-primary>:not([class*=uk-card-media]) .uk-breadcrumb>:last-child>*,.uk-card-secondary.uk-card-body .uk-breadcrumb>:last-child>*,.uk-card-secondary>:not([class*=uk-card-media]) .uk-breadcrumb>:last-child>*,.uk-light .uk-breadcrumb>:last-child>*,.uk-offcanvas-bar .uk-breadcrumb>:last-child>*,.uk-overlay-primary .uk-breadcrumb>:last-child>*,.uk-section-primary:not(.uk-preserve-color) .uk-breadcrumb>:last-child>*,.uk-section-secondary:not(.uk-preserve-color) .uk-breadcrumb>:last-child>*,.uk-tile-primary:not(.uk-preserve-color) .uk-breadcrumb>:last-child>*,.uk-tile-secondary:not(.uk-preserve-color) .uk-breadcrumb>:last-child>*{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column):before,.uk-card-primary>:not([class*=uk-card-media]) .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column):before,.uk-card-secondary.uk-card-body .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column):before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column):before,.uk-light .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column):before,.uk-offcanvas-bar .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column):before,.uk-overlay-primary .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column):before,.uk-section-primary:not(.uk-preserve-color) .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column):before,.uk-section-secondary:not(.uk-preserve-color) .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column):before,.uk-tile-primary:not(.uk-preserve-color) .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column):before,.uk-tile-secondary:not(.uk-preserve-color) .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column):before{color:#ffffff80}.uk-card-primary.uk-card-body .uk-pagination>*>*,.uk-card-primary>:not([class*=uk-card-media]) .uk-pagination>*>*,.uk-card-secondary.uk-card-body .uk-pagination>*>*,.uk-card-secondary>:not([class*=uk-card-media]) .uk-pagination>*>*,.uk-light .uk-pagination>*>*,.uk-offcanvas-bar .uk-pagination>*>*,.uk-overlay-primary .uk-pagination>*>*,.uk-section-primary:not(.uk-preserve-color) .uk-pagination>*>*,.uk-section-secondary:not(.uk-preserve-color) .uk-pagination>*>*,.uk-tile-primary:not(.uk-preserve-color) .uk-pagination>*>*,.uk-tile-secondary:not(.uk-preserve-color) .uk-pagination>*>*{color:#ffffff80}.uk-card-primary.uk-card-body .uk-pagination>*>:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-pagination>*>:hover,.uk-card-secondary.uk-card-body .uk-pagination>*>:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-pagination>*>:hover,.uk-light .uk-pagination>*>:hover,.uk-offcanvas-bar .uk-pagination>*>:hover,.uk-overlay-primary .uk-pagination>*>:hover,.uk-section-primary:not(.uk-preserve-color) .uk-pagination>*>:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-pagination>*>:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-pagination>*>:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-pagination>*>:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-pagination>.uk-active>*,.uk-card-primary>:not([class*=uk-card-media]) .uk-pagination>.uk-active>*,.uk-card-secondary.uk-card-body .uk-pagination>.uk-active>*,.uk-card-secondary>:not([class*=uk-card-media]) .uk-pagination>.uk-active>*,.uk-light .uk-pagination>.uk-active>*,.uk-offcanvas-bar .uk-pagination>.uk-active>*,.uk-overlay-primary .uk-pagination>.uk-active>*,.uk-section-primary:not(.uk-preserve-color) .uk-pagination>.uk-active>*,.uk-section-secondary:not(.uk-preserve-color) .uk-pagination>.uk-active>*,.uk-tile-primary:not(.uk-preserve-color) .uk-pagination>.uk-active>*,.uk-tile-secondary:not(.uk-preserve-color) .uk-pagination>.uk-active>*{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-pagination>.uk-disabled>*,.uk-card-primary>:not([class*=uk-card-media]) .uk-pagination>.uk-disabled>*,.uk-card-secondary.uk-card-body .uk-pagination>.uk-disabled>*,.uk-card-secondary>:not([class*=uk-card-media]) .uk-pagination>.uk-disabled>*,.uk-light .uk-pagination>.uk-disabled>*,.uk-offcanvas-bar .uk-pagination>.uk-disabled>*,.uk-overlay-primary .uk-pagination>.uk-disabled>*,.uk-section-primary:not(.uk-preserve-color) .uk-pagination>.uk-disabled>*,.uk-section-secondary:not(.uk-preserve-color) .uk-pagination>.uk-disabled>*,.uk-tile-primary:not(.uk-preserve-color) .uk-pagination>.uk-disabled>*,.uk-tile-secondary:not(.uk-preserve-color) .uk-pagination>.uk-disabled>*{color:#ffffff80}.uk-card-primary.uk-card-body .uk-tab:before,.uk-card-primary>:not([class*=uk-card-media]) .uk-tab:before,.uk-card-secondary.uk-card-body .uk-tab:before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-tab:before,.uk-light .uk-tab:before,.uk-offcanvas-bar .uk-tab:before,.uk-overlay-primary .uk-tab:before,.uk-section-primary:not(.uk-preserve-color) .uk-tab:before,.uk-section-secondary:not(.uk-preserve-color) .uk-tab:before,.uk-tile-primary:not(.uk-preserve-color) .uk-tab:before,.uk-tile-secondary:not(.uk-preserve-color) .uk-tab:before{border-color:#fff3}.uk-card-primary.uk-card-body .uk-tab>*>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-tab>*>a,.uk-card-secondary.uk-card-body .uk-tab>*>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-tab>*>a,.uk-light .uk-tab>*>a,.uk-offcanvas-bar .uk-tab>*>a,.uk-overlay-primary .uk-tab>*>a,.uk-section-primary:not(.uk-preserve-color) .uk-tab>*>a,.uk-section-secondary:not(.uk-preserve-color) .uk-tab>*>a,.uk-tile-primary:not(.uk-preserve-color) .uk-tab>*>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-tab>*>a{color:#ffffff80}.uk-card-primary.uk-card-body .uk-tab>*>a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-tab>*>a:hover,.uk-card-secondary.uk-card-body .uk-tab>*>a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-tab>*>a:hover,.uk-light .uk-tab>*>a:hover,.uk-offcanvas-bar .uk-tab>*>a:hover,.uk-overlay-primary .uk-tab>*>a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-tab>*>a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-tab>*>a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-tab>*>a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-tab>*>a:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-tab>.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-tab>.uk-active>a,.uk-card-secondary.uk-card-body .uk-tab>.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-tab>.uk-active>a,.uk-light .uk-tab>.uk-active>a,.uk-offcanvas-bar .uk-tab>.uk-active>a,.uk-overlay-primary .uk-tab>.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-tab>.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-tab>.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-tab>.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-tab>.uk-active>a{color:#fff;border-color:#fff}.uk-card-primary.uk-card-body .uk-tab>.uk-disabled>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-tab>.uk-disabled>a,.uk-card-secondary.uk-card-body .uk-tab>.uk-disabled>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-tab>.uk-disabled>a,.uk-light .uk-tab>.uk-disabled>a,.uk-offcanvas-bar .uk-tab>.uk-disabled>a,.uk-overlay-primary .uk-tab>.uk-disabled>a,.uk-section-primary:not(.uk-preserve-color) .uk-tab>.uk-disabled>a,.uk-section-secondary:not(.uk-preserve-color) .uk-tab>.uk-disabled>a,.uk-tile-primary:not(.uk-preserve-color) .uk-tab>.uk-disabled>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-tab>.uk-disabled>a{color:#ffffff80}.uk-card-primary.uk-card-body .uk-slidenav,.uk-card-primary>:not([class*=uk-card-media]) .uk-slidenav,.uk-card-secondary.uk-card-body .uk-slidenav,.uk-card-secondary>:not([class*=uk-card-media]) .uk-slidenav,.uk-light .uk-slidenav,.uk-offcanvas-bar .uk-slidenav,.uk-overlay-primary .uk-slidenav,.uk-section-primary:not(.uk-preserve-color) .uk-slidenav,.uk-section-secondary:not(.uk-preserve-color) .uk-slidenav,.uk-tile-primary:not(.uk-preserve-color) .uk-slidenav,.uk-tile-secondary:not(.uk-preserve-color) .uk-slidenav{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-slidenav:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-slidenav:hover,.uk-card-secondary.uk-card-body .uk-slidenav:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-slidenav:hover,.uk-light .uk-slidenav:hover,.uk-offcanvas-bar .uk-slidenav:hover,.uk-overlay-primary .uk-slidenav:hover,.uk-section-primary:not(.uk-preserve-color) .uk-slidenav:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-slidenav:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-slidenav:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-slidenav:hover{color:#fffffff2}.uk-card-primary.uk-card-body .uk-slidenav:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-slidenav:active,.uk-card-secondary.uk-card-body .uk-slidenav:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-slidenav:active,.uk-light .uk-slidenav:active,.uk-offcanvas-bar .uk-slidenav:active,.uk-overlay-primary .uk-slidenav:active,.uk-section-primary:not(.uk-preserve-color) .uk-slidenav:active,.uk-section-secondary:not(.uk-preserve-color) .uk-slidenav:active,.uk-tile-primary:not(.uk-preserve-color) .uk-slidenav:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-slidenav:active{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-dotnav>*>*,.uk-card-primary>:not([class*=uk-card-media]) .uk-dotnav>*>*,.uk-card-secondary.uk-card-body .uk-dotnav>*>*,.uk-card-secondary>:not([class*=uk-card-media]) .uk-dotnav>*>*,.uk-light .uk-dotnav>*>*,.uk-offcanvas-bar .uk-dotnav>*>*,.uk-overlay-primary .uk-dotnav>*>*,.uk-section-primary:not(.uk-preserve-color) .uk-dotnav>*>*,.uk-section-secondary:not(.uk-preserve-color) .uk-dotnav>*>*,.uk-tile-primary:not(.uk-preserve-color) .uk-dotnav>*>*,.uk-tile-secondary:not(.uk-preserve-color) .uk-dotnav>*>*{background-color:transparent;border-color:#ffffffe6}.uk-card-primary.uk-card-body .uk-dotnav>*>:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-dotnav>*>:hover,.uk-card-secondary.uk-card-body .uk-dotnav>*>:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-dotnav>*>:hover,.uk-light .uk-dotnav>*>:hover,.uk-offcanvas-bar .uk-dotnav>*>:hover,.uk-overlay-primary .uk-dotnav>*>:hover,.uk-section-primary:not(.uk-preserve-color) .uk-dotnav>*>:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-dotnav>*>:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-dotnav>*>:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-dotnav>*>:hover{background-color:#ffffffe6;border-color:transparent}.uk-card-primary.uk-card-body .uk-dotnav>*>:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-dotnav>*>:active,.uk-card-secondary.uk-card-body .uk-dotnav>*>:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-dotnav>*>:active,.uk-light .uk-dotnav>*>:active,.uk-offcanvas-bar .uk-dotnav>*>:active,.uk-overlay-primary .uk-dotnav>*>:active,.uk-section-primary:not(.uk-preserve-color) .uk-dotnav>*>:active,.uk-section-secondary:not(.uk-preserve-color) .uk-dotnav>*>:active,.uk-tile-primary:not(.uk-preserve-color) .uk-dotnav>*>:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-dotnav>*>:active{background-color:#ffffff80;border-color:transparent}.uk-card-primary.uk-card-body .uk-dotnav>.uk-active>*,.uk-card-primary>:not([class*=uk-card-media]) .uk-dotnav>.uk-active>*,.uk-card-secondary.uk-card-body .uk-dotnav>.uk-active>*,.uk-card-secondary>:not([class*=uk-card-media]) .uk-dotnav>.uk-active>*,.uk-light .uk-dotnav>.uk-active>*,.uk-offcanvas-bar .uk-dotnav>.uk-active>*,.uk-overlay-primary .uk-dotnav>.uk-active>*,.uk-section-primary:not(.uk-preserve-color) .uk-dotnav>.uk-active>*,.uk-section-secondary:not(.uk-preserve-color) .uk-dotnav>.uk-active>*,.uk-tile-primary:not(.uk-preserve-color) .uk-dotnav>.uk-active>*,.uk-tile-secondary:not(.uk-preserve-color) .uk-dotnav>.uk-active>*{background-color:#ffffffe6;border-color:transparent}.uk-card-primary.uk-card-body .uk-text-lead,.uk-card-primary>:not([class*=uk-card-media]) .uk-text-lead,.uk-card-secondary.uk-card-body .uk-text-lead,.uk-card-secondary>:not([class*=uk-card-media]) .uk-text-lead,.uk-light .uk-text-lead,.uk-offcanvas-bar .uk-text-lead,.uk-overlay-primary .uk-text-lead,.uk-section-primary:not(.uk-preserve-color) .uk-text-lead,.uk-section-secondary:not(.uk-preserve-color) .uk-text-lead,.uk-tile-primary:not(.uk-preserve-color) .uk-text-lead,.uk-tile-secondary:not(.uk-preserve-color) .uk-text-lead{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-text-meta,.uk-card-primary>:not([class*=uk-card-media]) .uk-text-meta,.uk-card-secondary.uk-card-body .uk-text-meta,.uk-card-secondary>:not([class*=uk-card-media]) .uk-text-meta,.uk-light .uk-text-meta,.uk-offcanvas-bar .uk-text-meta,.uk-overlay-primary .uk-text-meta,.uk-section-primary:not(.uk-preserve-color) .uk-text-meta,.uk-section-secondary:not(.uk-preserve-color) .uk-text-meta,.uk-tile-primary:not(.uk-preserve-color) .uk-text-meta,.uk-tile-secondary:not(.uk-preserve-color) .uk-text-meta{color:#ffffff80}.uk-card-primary.uk-card-body .uk-text-muted,.uk-card-primary>:not([class*=uk-card-media]) .uk-text-muted,.uk-card-secondary.uk-card-body .uk-text-muted,.uk-card-secondary>:not([class*=uk-card-media]) .uk-text-muted,.uk-light .uk-text-muted,.uk-offcanvas-bar .uk-text-muted,.uk-overlay-primary .uk-text-muted,.uk-section-primary:not(.uk-preserve-color) .uk-text-muted,.uk-section-secondary:not(.uk-preserve-color) .uk-text-muted,.uk-tile-primary:not(.uk-preserve-color) .uk-text-muted,.uk-tile-secondary:not(.uk-preserve-color) .uk-text-muted{color:#ffffff80!important}.uk-card-primary.uk-card-body .uk-text-emphasis,.uk-card-primary>:not([class*=uk-card-media]) .uk-text-emphasis,.uk-card-secondary.uk-card-body .uk-text-emphasis,.uk-card-secondary>:not([class*=uk-card-media]) .uk-text-emphasis,.uk-light .uk-text-emphasis,.uk-offcanvas-bar .uk-text-emphasis,.uk-overlay-primary .uk-text-emphasis,.uk-section-primary:not(.uk-preserve-color) .uk-text-emphasis,.uk-section-secondary:not(.uk-preserve-color) .uk-text-emphasis,.uk-tile-primary:not(.uk-preserve-color) .uk-text-emphasis,.uk-tile-secondary:not(.uk-preserve-color) .uk-text-emphasis{color:#fff!important}.uk-card-primary.uk-card-body .uk-text-primary,.uk-card-primary>:not([class*=uk-card-media]) .uk-text-primary,.uk-card-secondary.uk-card-body .uk-text-primary,.uk-card-secondary>:not([class*=uk-card-media]) .uk-text-primary,.uk-light .uk-text-primary,.uk-offcanvas-bar .uk-text-primary,.uk-overlay-primary .uk-text-primary,.uk-section-primary:not(.uk-preserve-color) .uk-text-primary,.uk-section-secondary:not(.uk-preserve-color) .uk-text-primary,.uk-tile-primary:not(.uk-preserve-color) .uk-text-primary,.uk-tile-secondary:not(.uk-preserve-color) .uk-text-primary{color:#fff!important}.uk-card-primary.uk-card-body .uk-text-secondary,.uk-card-primary>:not([class*=uk-card-media]) .uk-text-secondary,.uk-card-secondary.uk-card-body .uk-text-secondary,.uk-card-secondary>:not([class*=uk-card-media]) .uk-text-secondary,.uk-light .uk-text-secondary,.uk-offcanvas-bar .uk-text-secondary,.uk-overlay-primary .uk-text-secondary,.uk-section-primary:not(.uk-preserve-color) .uk-text-secondary,.uk-section-secondary:not(.uk-preserve-color) .uk-text-secondary,.uk-tile-primary:not(.uk-preserve-color) .uk-text-secondary,.uk-tile-secondary:not(.uk-preserve-color) .uk-text-secondary{color:#fff!important}.uk-card-primary.uk-card-body .uk-column-divider,.uk-card-primary>:not([class*=uk-card-media]) .uk-column-divider,.uk-card-secondary.uk-card-body .uk-column-divider,.uk-card-secondary>:not([class*=uk-card-media]) .uk-column-divider,.uk-light .uk-column-divider,.uk-offcanvas-bar .uk-column-divider,.uk-overlay-primary .uk-column-divider,.uk-section-primary:not(.uk-preserve-color) .uk-column-divider,.uk-section-secondary:not(.uk-preserve-color) .uk-column-divider,.uk-tile-primary:not(.uk-preserve-color) .uk-column-divider,.uk-tile-secondary:not(.uk-preserve-color) .uk-column-divider{column-rule-color:#fff3}.uk-card-primary.uk-card-body .uk-logo,.uk-card-primary>:not([class*=uk-card-media]) .uk-logo,.uk-card-secondary.uk-card-body .uk-logo,.uk-card-secondary>:not([class*=uk-card-media]) .uk-logo,.uk-light .uk-logo,.uk-offcanvas-bar .uk-logo,.uk-overlay-primary .uk-logo,.uk-section-primary:not(.uk-preserve-color) .uk-logo,.uk-section-secondary:not(.uk-preserve-color) .uk-logo,.uk-tile-primary:not(.uk-preserve-color) .uk-logo,.uk-tile-secondary:not(.uk-preserve-color) .uk-logo{color:#fff}.uk-card-primary.uk-card-body .uk-logo:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-logo:hover,.uk-card-secondary.uk-card-body .uk-logo:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-logo:hover,.uk-light .uk-logo:hover,.uk-offcanvas-bar .uk-logo:hover,.uk-overlay-primary .uk-logo:hover,.uk-section-primary:not(.uk-preserve-color) .uk-logo:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-logo:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-logo:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-logo:hover{color:#fff}.uk-card-primary.uk-card-body .uk-logo:has(.uk-logo-inverse)>:not(picture:has(.uk-logo-inverse)):not(.uk-logo-inverse),.uk-card-primary>:not([class*=uk-card-media]) .uk-logo:has(.uk-logo-inverse)>:not(picture:has(.uk-logo-inverse)):not(.uk-logo-inverse),.uk-card-secondary.uk-card-body .uk-logo:has(.uk-logo-inverse)>:not(picture:has(.uk-logo-inverse)):not(.uk-logo-inverse),.uk-card-secondary>:not([class*=uk-card-media]) .uk-logo:has(.uk-logo-inverse)>:not(picture:has(.uk-logo-inverse)):not(.uk-logo-inverse),.uk-light .uk-logo:has(.uk-logo-inverse)>:not(picture:has(.uk-logo-inverse)):not(.uk-logo-inverse),.uk-offcanvas-bar .uk-logo:has(.uk-logo-inverse)>:not(picture:has(.uk-logo-inverse)):not(.uk-logo-inverse),.uk-overlay-primary .uk-logo:has(.uk-logo-inverse)>:not(picture:has(.uk-logo-inverse)):not(.uk-logo-inverse),.uk-section-primary:not(.uk-preserve-color) .uk-logo:has(.uk-logo-inverse)>:not(picture:has(.uk-logo-inverse)):not(.uk-logo-inverse),.uk-section-secondary:not(.uk-preserve-color) .uk-logo:has(.uk-logo-inverse)>:not(picture:has(.uk-logo-inverse)):not(.uk-logo-inverse),.uk-tile-primary:not(.uk-preserve-color) .uk-logo:has(.uk-logo-inverse)>:not(picture:has(.uk-logo-inverse)):not(.uk-logo-inverse),.uk-tile-secondary:not(.uk-preserve-color) .uk-logo:has(.uk-logo-inverse)>:not(picture:has(.uk-logo-inverse)):not(.uk-logo-inverse){display:none}.uk-card-primary.uk-card-body .uk-logo-inverse,.uk-card-primary>:not([class*=uk-card-media]) .uk-logo-inverse,.uk-card-secondary.uk-card-body .uk-logo-inverse,.uk-card-secondary>:not([class*=uk-card-media]) .uk-logo-inverse,.uk-light .uk-logo-inverse,.uk-offcanvas-bar .uk-logo-inverse,.uk-overlay-primary .uk-logo-inverse,.uk-section-primary:not(.uk-preserve-color) .uk-logo-inverse,.uk-section-secondary:not(.uk-preserve-color) .uk-logo-inverse,.uk-tile-primary:not(.uk-preserve-color) .uk-logo-inverse,.uk-tile-secondary:not(.uk-preserve-color) .uk-logo-inverse{display:block}.uk-card-primary.uk-card-body .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-card-primary.uk-card-body .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-card-primary>:not([class*=uk-card-media]) .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-card-primary>:not([class*=uk-card-media]) .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-card-secondary.uk-card-body .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-card-secondary.uk-card-body .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-card-secondary>:not([class*=uk-card-media]) .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-card-secondary>:not([class*=uk-card-media]) .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-light .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-light .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-offcanvas-bar .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-offcanvas-bar .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-overlay-primary .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-overlay-primary .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-section-primary:not(.uk-preserve-color) .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-section-primary:not(.uk-preserve-color) .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-section-secondary:not(.uk-preserve-color) .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-section-secondary:not(.uk-preserve-color) .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-tile-primary:not(.uk-preserve-color) .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-tile-primary:not(.uk-preserve-color) .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-tile-secondary:not(.uk-preserve-color) .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-tile-secondary:not(.uk-preserve-color) .uk-table-striped>tr:nth-of-type(2n):last-child{border-bottom-color:#fff3}.uk-card-primary.uk-card-body .uk-accordion-title:before,.uk-card-primary>:not([class*=uk-card-media]) .uk-accordion-title:before,.uk-card-secondary.uk-card-body .uk-accordion-title:before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-accordion-title:before,.uk-light .uk-accordion-title:before,.uk-offcanvas-bar .uk-accordion-title:before,.uk-overlay-primary .uk-accordion-title:before,.uk-section-primary:not(.uk-preserve-color) .uk-accordion-title:before,.uk-section-secondary:not(.uk-preserve-color) .uk-accordion-title:before,.uk-tile-primary:not(.uk-preserve-color) .uk-accordion-title:before,.uk-tile-secondary:not(.uk-preserve-color) .uk-accordion-title:before{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22rgba%28255,%20255,%20255,%200.7%29%22%20width%3D%2213%22%20height%3D%221%22%20x%3D%220%22%20y%3D%226%22%20%2F%3E%0A%20%20%20%20%3Crect%20fill%3D%22rgba%28255,%20255,%20255,%200.7%29%22%20width%3D%221%22%20height%3D%2213%22%20x%3D%226%22%20y%3D%220%22%20%2F%3E%0A%3C%2Fsvg%3E)}.uk-card-primary.uk-card-body .uk-open>.uk-accordion-title:before,.uk-card-primary>:not([class*=uk-card-media]) .uk-open>.uk-accordion-title:before,.uk-card-secondary.uk-card-body .uk-open>.uk-accordion-title:before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-open>.uk-accordion-title:before,.uk-light .uk-open>.uk-accordion-title:before,.uk-offcanvas-bar .uk-open>.uk-accordion-title:before,.uk-overlay-primary .uk-open>.uk-accordion-title:before,.uk-section-primary:not(.uk-preserve-color) .uk-open>.uk-accordion-title:before,.uk-section-secondary:not(.uk-preserve-color) .uk-open>.uk-accordion-title:before,.uk-tile-primary:not(.uk-preserve-color) .uk-open>.uk-accordion-title:before,.uk-tile-secondary:not(.uk-preserve-color) .uk-open>.uk-accordion-title:before{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22rgba%28255,%20255,%20255,%200.7%29%22%20width%3D%2213%22%20height%3D%221%22%20x%3D%220%22%20y%3D%226%22%20%2F%3E%0A%3C%2Fsvg%3E)}*{--uk-inverse:initial}.uk-card-primary.uk-card-body,.uk-card-primary>:not([class*=uk-card-media]),.uk-card-secondary.uk-card-body,.uk-card-secondary>:not([class*=uk-card-media]),.uk-light,.uk-offcanvas-bar,.uk-overlay-primary,.uk-section-primary:not(.uk-preserve-color),.uk-section-secondary:not(.uk-preserve-color),.uk-tile-primary:not(.uk-preserve-color),.uk-tile-secondary:not(.uk-preserve-color){--uk-inverse:light}.uk-card-default.uk-card-body,.uk-card-default>:not([class*=uk-card-media]),.uk-dark,.uk-dropbar,.uk-dropdown,.uk-navbar-container:not(.uk-navbar-transparent),.uk-navbar-dropdown,.uk-overlay-default,.uk-section-default:not(.uk-preserve-color),.uk-section-muted:not(.uk-preserve-color),.uk-tile-default:not(.uk-preserve-color),.uk-tile-muted:not(.uk-preserve-color){--uk-inverse:dark}.uk-inverse-light{--uk-inverse:light!important}.uk-inverse-dark{--uk-inverse:dark!important}@media print{*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}}.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid black;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:transparent}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:transparent}.cm-fat-cursor{caret-color:transparent}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;inset:-50px 0 0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3,.cm-s-default .cm-type{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error,.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:#ff96004d}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:none;position:relative;z-index:0}.CodeMirror-sizer{position:relative;border-right:50px solid transparent}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{position:absolute;z-index:6;display:none;outline:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;inset:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors,.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:#ff06}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none}.CodeMirror-dialog{position:absolute;left:0;right:0;background:inherit;z-index:15;padding:.1em .8em;overflow:hidden;color:inherit}.CodeMirror-dialog-top{border-bottom:1px solid #eee;top:0}.CodeMirror-dialog-bottom{border-top:1px solid #eee;bottom:0}.CodeMirror-dialog input{border:none;outline:none;background:transparent;width:20em;color:inherit;font-family:monospace}.CodeMirror-dialog button{font-size:70%}.CodeMirror-hints{position:absolute;z-index:10;overflow:hidden;list-style:none;margin:0;padding:2px;-webkit-box-shadow:2px 3px 5px rgba(0,0,0,.2);-moz-box-shadow:2px 3px 5px rgba(0,0,0,.2);box-shadow:2px 3px 5px #0003;border-radius:3px;border:1px solid silver;background:#fff;font-size:90%;font-family:monospace;max-height:20em;overflow-y:auto;box-sizing:border-box}.CodeMirror-hint{margin:0;padding:0 4px;border-radius:2px;white-space:pre;color:#000;cursor:pointer}li.CodeMirror-hint-active{background:#08f;color:#fff}.cm-s-material-darker.CodeMirror{background-color:#212121;color:#eff}.cm-s-material-darker .CodeMirror-gutters{background:#212121;color:#545454;border:none}.cm-s-material-darker .CodeMirror-guttermarker,.cm-s-material-darker .CodeMirror-guttermarker-subtle,.cm-s-material-darker .CodeMirror-linenumber{color:#545454}.cm-s-material-darker .CodeMirror-cursor{border-left:1px solid #FFCC00}.cm-s-material-darker div.CodeMirror-selected,.cm-s-material-darker.CodeMirror-focused div.CodeMirror-selected{background:#61616133}.cm-s-material-darker .CodeMirror-line::selection,.cm-s-material-darker .CodeMirror-line>span::selection,.cm-s-material-darker .CodeMirror-line>span>span::selection{background:#80cbc433}.cm-s-material-darker .CodeMirror-line::-moz-selection,.cm-s-material-darker .CodeMirror-line>span::-moz-selection,.cm-s-material-darker .CodeMirror-line>span>span::-moz-selection{background:#80cbc433}.cm-s-material-darker .CodeMirror-activeline-background{background:#00000080}.cm-s-material-darker .cm-keyword{color:#c792ea}.cm-s-material-darker .cm-operator{color:#89ddff}.cm-s-material-darker .cm-variable-2{color:#eff}.cm-s-material-darker .cm-variable-3,.cm-s-material-darker .cm-type{color:#f07178}.cm-s-material-darker .cm-builtin{color:#ffcb6b}.cm-s-material-darker .cm-atom{color:#f78c6c}.cm-s-material-darker .cm-number{color:#ff5370}.cm-s-material-darker .cm-def{color:#82aaff}.cm-s-material-darker .cm-string{color:#c3e88d}.cm-s-material-darker .cm-string-2{color:#f07178}.cm-s-material-darker .cm-comment{color:#545454}.cm-s-material-darker .cm-variable{color:#f07178}.cm-s-material-darker .cm-tag{color:#ff5370}.cm-s-material-darker .cm-meta{color:#ffcb6b}.cm-s-material-darker .cm-attribute,.cm-s-material-darker .cm-property{color:#c792ea}.cm-s-material-darker .cm-qualifier,.cm-s-material-darker .cm-variable-3,.cm-s-material-darker .cm-type{color:#decb6b}.cm-s-material-darker .cm-error{color:#fff;background-color:#ff5370}.cm-s-material-darker .CodeMirror-matchingbracket{text-decoration:underline;color:#fff!important}.clr-picker{display:none;flex-wrap:wrap;position:absolute;width:200px;z-index:1000;border-radius:10px;background-color:#fff;justify-content:flex-end;direction:ltr;box-shadow:0 0 5px #0000000d,0 5px 20px #0000001a;-moz-user-select:none;-webkit-user-select:none;user-select:none}.clr-picker.clr-open,.clr-picker[data-inline=true]{display:flex}.clr-picker[data-inline=true]{position:relative}.clr-gradient{position:relative;width:100%;height:100px;margin-bottom:15px;border-radius:3px 3px 0 0;background-image:linear-gradient(#0000,#000),linear-gradient(90deg,#fff,currentColor);cursor:pointer}.clr-marker{position:absolute;width:12px;height:12px;margin:-6px 0 0 -6px;border:1px solid #fff;border-radius:50%;background-color:currentColor;cursor:pointer}.clr-picker input[type=range]::-webkit-slider-runnable-track{width:100%;height:16px}.clr-picker input[type=range]::-webkit-slider-thumb{width:16px;height:16px;-webkit-appearance:none}.clr-picker input[type=range]::-moz-range-track{width:100%;height:16px;border:0}.clr-picker input[type=range]::-moz-range-thumb{width:16px;height:16px;border:0}.clr-hue{background-image:linear-gradient(to right,red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.clr-hue,.clr-alpha{position:relative;width:calc(100% - 40px);height:8px;margin:5px 20px;border-radius:4px}.clr-alpha span{display:block;height:100%;width:100%;border-radius:inherit;background-image:linear-gradient(90deg,rgba(0,0,0,0),currentColor)}.clr-hue input[type=range],.clr-alpha input[type=range]{position:absolute;width:calc(100% + 32px);height:16px;left:-16px;top:-4px;margin:0;background-color:transparent;opacity:0;cursor:pointer;appearance:none;-webkit-appearance:none}.clr-hue div,.clr-alpha div{position:absolute;width:16px;height:16px;left:0;top:50%;margin-left:-8px;transform:translateY(-50%);border:2px solid #fff;border-radius:50%;background-color:currentColor;box-shadow:0 0 1px #888;pointer-events:none}.clr-alpha div:before{content:"";position:absolute;height:100%;width:100%;left:0;top:0;border-radius:50%;background-color:currentColor}.clr-format{display:none;order:1;width:calc(100% - 40px);margin:0 20px 20px}.clr-segmented{display:flex;position:relative;width:100%;margin:0;padding:0;border:1px solid #ddd;border-radius:15px;box-sizing:border-box;color:#999;font-size:12px}.clr-segmented input,.clr-segmented legend{position:absolute;width:100%;height:100%;margin:0;padding:0;border:0;left:0;top:0;opacity:0;pointer-events:none}.clr-segmented label{flex-grow:1;margin:0;padding:4px 0;font-size:inherit;font-weight:400;line-height:initial;text-align:center;cursor:pointer}.clr-segmented label:first-of-type{border-radius:10px 0 0 10px}.clr-segmented label:last-of-type{border-radius:0 10px 10px 0}.clr-segmented input:checked+label{color:#fff;background-color:#666}.clr-swatches{order:2;width:calc(100% - 32px);margin:0 16px}.clr-swatches div{display:flex;flex-wrap:wrap;padding-bottom:12px;justify-content:center}.clr-swatches button{position:relative;width:20px;height:20px;margin:0 4px 6px;padding:0;border:0;border-radius:50%;color:inherit;text-indent:-1000px;white-space:nowrap;overflow:hidden;cursor:pointer}.clr-swatches button:after{content:"";display:block;position:absolute;width:100%;height:100%;left:0;top:0;border-radius:inherit;background-color:currentColor;box-shadow:inset 0 0 0 1px #0000001a}input.clr-color{order:1;width:calc(100% - 80px);height:32px;margin:15px 20px 20px auto;padding:0 10px;border:1px solid #ddd;border-radius:16px;color:#444;background-color:#fff;font-family:sans-serif;font-size:14px;text-align:center;box-shadow:none}input.clr-color:focus{outline:none;border:1px solid #1e90ff}.clr-close,.clr-clear{display:none;order:2;height:24px;margin:0 20px 20px;padding:0 20px;border:0;border-radius:12px;color:#fff;background-color:#666;font-family:inherit;font-size:12px;font-weight:400;cursor:pointer}.clr-close{display:block;margin:0 20px 20px auto}.clr-preview{position:relative;width:32px;height:32px;margin:15px 0 20px 20px;border-radius:50%;overflow:hidden}.clr-preview:before,.clr-preview:after{content:"";position:absolute;height:100%;width:100%;left:0;top:0;border:1px solid #fff;border-radius:50%}.clr-preview:after{border:0;background-color:currentColor;box-shadow:inset 0 0 0 1px #0000001a}.clr-preview button{position:absolute;width:100%;height:100%;z-index:1;margin:0;padding:0;border:0;border-radius:50%;outline-offset:-2px;background-color:transparent;text-indent:-9999px;cursor:pointer;overflow:hidden}.clr-marker,.clr-hue div,.clr-alpha div,.clr-color{box-sizing:border-box}.clr-field{display:inline-block;position:relative;color:transparent}.clr-field input{margin:0;direction:ltr}.clr-field.clr-rtl input{text-align:right}.clr-field button{position:absolute;width:30px;height:100%;right:0;top:50%;transform:translateY(-50%);margin:0;padding:0;border:0;color:inherit;text-indent:-1000px;white-space:nowrap;overflow:hidden;pointer-events:none}.clr-field.clr-rtl button{right:auto;left:0}.clr-field button:after{content:"";display:block;position:absolute;width:100%;height:100%;left:0;top:0;border-radius:inherit;background-color:currentColor;box-shadow:inset 0 0 1px #00000080}.clr-alpha,.clr-alpha div,.clr-swatches button,.clr-preview:before,.clr-field button{background-image:repeating-linear-gradient(45deg,#aaa 25%,transparent 25%,transparent 75%,#aaa 75%,#aaa),repeating-linear-gradient(45deg,#aaa 25%,#fff 25% 75%,#aaa 75%,#aaa);background-position:0 0,4px 4px;background-size:8px 8px}.clr-marker:focus{outline:none}.clr-keyboard-nav .clr-marker:focus,.clr-keyboard-nav .clr-hue input:focus+div,.clr-keyboard-nav .clr-alpha input:focus+div,.clr-keyboard-nav .clr-segmented input:focus+label{outline:none;box-shadow:0 0 0 2px #1e90ff,0 0 2px 2px #fff}.clr-picker[data-alpha=false] .clr-alpha{display:none}.clr-picker[data-minimal=true]{padding-top:16px}.clr-picker[data-minimal=true] .clr-gradient,.clr-picker[data-minimal=true] .clr-hue,.clr-picker[data-minimal=true] .clr-alpha,.clr-picker[data-minimal=true] .clr-color,.clr-picker[data-minimal=true] .clr-preview{display:none}.clr-dark{background-color:#444}.clr-dark .clr-segmented{border-color:#777}.clr-dark .clr-swatches button:after{box-shadow:inset 0 0 0 1px #ffffff4d}.clr-dark input.clr-color{color:#fff;border-color:#777;background-color:#555}.clr-dark input.clr-color:focus{border-color:#1e90ff}.clr-dark .clr-preview:after{box-shadow:inset 0 0 0 1px #ffffff80}.clr-dark .clr-alpha,.clr-dark .clr-alpha div,.clr-dark .clr-swatches button,.clr-dark .clr-preview:before{background-image:repeating-linear-gradient(45deg,#666 25%,transparent 25%,transparent 75%,#888 75%,#888),repeating-linear-gradient(45deg,#888 25%,#444 25% 75%,#888 75%,#888)}.clr-picker.clr-polaroid{border-radius:6px;box-shadow:0 0 5px #0000001a,0 5px 30px #0003}.clr-picker.clr-polaroid:before{content:"";display:block;position:absolute;width:16px;height:10px;left:20px;top:-10px;border:solid transparent;border-width:0 8px 10px 8px;border-bottom-color:currentColor;box-sizing:border-box;color:#fff;filter:drop-shadow(0 -4px 3px rgba(0,0,0,.1));pointer-events:none}.clr-picker.clr-polaroid.clr-dark:before{color:#444}.clr-picker.clr-polaroid.clr-left:before{left:auto;right:20px}.clr-picker.clr-polaroid.clr-top:before{top:auto;bottom:-10px;transform:rotate(180deg)}.clr-polaroid .clr-gradient{width:calc(100% - 20px);height:120px;margin:10px;border-radius:3px}.clr-polaroid .clr-hue,.clr-polaroid .clr-alpha{width:calc(100% - 30px);height:10px;margin:6px 15px;border-radius:5px}.clr-polaroid .clr-hue div,.clr-polaroid .clr-alpha div{box-shadow:0 0 5px #0003}.clr-polaroid .clr-format{width:calc(100% - 20px);margin:0 10px 15px}.clr-polaroid .clr-swatches{width:calc(100% - 12px);margin:0 6px}.clr-polaroid .clr-swatches div{padding-bottom:10px}.clr-polaroid .clr-swatches button{width:22px;height:22px}.clr-polaroid input.clr-color{width:calc(100% - 60px);margin:10px 10px 15px auto}.clr-polaroid .clr-clear{margin:0 10px 15px}.clr-polaroid .clr-close{margin:0 10px 15px auto}.clr-polaroid .clr-preview{margin:10px 0 15px 10px}.clr-picker.clr-large{width:275px}.clr-large .clr-gradient{height:150px}.clr-large .clr-swatches button{width:22px;height:22px}.clr-picker.clr-pill{width:380px;padding-left:180px;box-sizing:border-box}.clr-pill .clr-gradient{position:absolute;width:180px;height:100%;left:0;top:0;margin-bottom:0;border-radius:3px 0 0 3px}.clr-pill .clr-hue{margin-top:20px}*{-webkit-backface-visibility:hidden;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;backface-visibility:hidden;margin:0;outline:none;border:none;background:none;padding:0;resize:none;user-select:none}html,body{height:100%;font-size:12px;font-family:Open Sans,sans-serif}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{border-radius:8px}h2{margin:0 0 15px}input{font-size:inherit;font-family:inherit}input[type=range]::-webkit-slider-runnable-track{margin-top:2px;border:none;border-radius:3px;background-color:#999;width:300px;height:1px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;margin-top:-7px;border:none;border-radius:50%;background-color:#1e87f0;width:14px;height:14px}input[type=range]:focus::-webkit-slider-runnable-track{background-color:#999}pre{font:inherit!important}textarea{box-sizing:border-box;width:100%;tab-size:2}text{font-size:.9rem}.wrapper{position:fixed;inset:0}.header-win{-webkit-app-region:drag!important;display:none;position:fixed;top:5px;right:0;left:0;height:30px}.header-win-title{float:left;margin:5px 0 0 15px;font-weight:700;font-size:1.1em;font-family:Numara}.winButtons{position:fixed;top:0;right:0}.unmax{display:none}.min-btn-win,.max-btn-win,.unmax-btn-win,.close-btn-win{-webkit-app-region:no-drag;float:right;background-position:center;background-size:11px 11px;background-repeat:no-repeat;width:46px;height:30px}.close-btn-win:hover{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTIgMTIiIGZpbGw9InJnYigyNTUsIDI1NSwgMjU1KSIgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik02LjI3OSA1LjVMMTEgMTAuMjIxbC0uNzc5Ljc3OUw1LjUgNi4yNzkuNzc5IDExIDAgMTAuMjIxIDQuNzIxIDUuNSAwIC43NzkuNzc5IDAgNS41IDQuNzIxIDEwLjIyMSAwIDExIC43NzkgNi4yNzkgNS41eiIgLz48L3N2Zz4=);background-color:#e11}.header-mac{-webkit-app-region:drag!important;display:none;position:fixed;top:0;right:0;left:0;height:40px}.header-mac-title{padding-top:10px;font-size:1.1em;font-family:Numara;text-align:center}.panel{display:flex;position:fixed;inset:50px 8px 42px 20px;align-content:flex-start}.input{width:60%;min-width:120px}.inputArea{-webkit-user-select:text;user-select:text}.inputArea::-webkit-scrollbar{width:0px;height:8px}.divider{flex:0 0 auto;cursor:ew-resize;margin:0 8px;width:5px;height:calc(100% - 8px)}.divider:before{display:block;margin:0 auto;width:1px;height:100%;content:""}.output{flex:1;padding:0;min-width:120px;font-weight:400;white-space:nowrap}.inputArea,.output{display:block;height:100%;overflow:scroll}.output>div{-webkit-user-select:text;display:block;width:100%;height:27px;user-select:text}.panelFont{font-family:Roboto Mono,monospace}.answer{-webkit-user-select:text;cursor:default;margin:0 8px 0 0;border-radius:5px;padding:2px 5px;height:27px;user-select:text}.lineError,.plotButton{margin:0 12px 0 5px}.lineError:hover{text-decoration:underline}.errMsg{word-break:break-word}.noRuler{border-bottom:1px solid transparent}.gutterBlock{position:fixed;bottom:50px;left:0;z-index:5;height:8px}.actions{position:fixed;right:10px;bottom:10px;left:10px;height:25px}.action,.noAction{cursor:pointer}.noAction,.action[disabled=true]{opacity:.4;cursor:default;pointer-events:none}.actionDivider{margin:2px 5px 0;height:20px}.leftActions a,.centerActions a,.rightActions a{margin:0 5px}.leftActions a:hover,.sidePanelActions a:hover{text-decoration:none}.newPageButton svg,.newPageButtonSP svg{width:16px!important;height:16px!important}.pageName{position:relative;top:2px;opacity:.9;width:calc(100vw - 300px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.leftActions a svg,.centerActions a svg,.rightActions a svg,.sidePanelActions a svg{width:14px;height:14px;pointer-events:none;color:inherit!important}.notificationDot{display:none;position:fixed;right:10px;bottom:18px}.notificationDot>svg{fill:#1e87f0;stroke:#1e87f0;width:5px;height:5px}.uk-offcanvas-bar{padding:0;width:240px}.sidePanelActions{margin:15px 10px 11px}.closeSidePanelButton{-webkit-app-region:no-drag!important}.closeSidePanelButton svg{width:18px;height:18px}.uk-offcanvas-close{-webkit-app-region:no-drag;top:9px;right:8px}.uk-offcanvas-close svg{width:11px;height:11px}.uk-offcanvas-close svg line{stroke-width:1.5}.uk-dropdown{padding:0;min-width:auto}.pageListHeader{height:40px}.pageList{overflow-x:hidden;overflow-y:auto}.pageListFooter{height:47px}.pageListSort{-webkit-app-region:no-drag;cursor:pointer;margin:10px}.pageListSort svg{width:14px;height:14px}.sortListItem{-webkit-app-region:no-drag;cursor:pointer;padding:5px 10px}.sortListDivider{margin:5px 10px}.pageListItem{display:flex;position:relative;cursor:pointer}.pageListItem>div:first-child{padding:3px 0 3px 10px}.pageListItemTitle{padding:5px 5px 2px;width:180px;overflow:hidden;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.drop-parent-icon svg{width:16px;height:16px}.renamePageButton,.dupPageButton,.deletePageButton,.sortListItem{cursor:pointer;padding:5px 10px}.dialogs{display:none}.dialog-buttons{display:flex;align-items:center;margin-top:15px}.dialog-open-body{margin-right:-5px}.dialog-open-date{padding:0 5px 5px;color:#999;font-size:.9rem}.dialog-confirm{z-index:10010}.infoOK{margin-left:-20px!important}#dialog-settings .uk-width-medium{width:385px}.dialog-settings-body{margin-right:-8px;padding-right:10px;height:calc(100vh - 185px);max-height:600px;overflow:scroll}#dialog-settings .uk-overflow-auto{padding-right:10px}#dialog-settings h3{margin:25px 0 12px;font-weight:500;font-size:1rem}#dialog-settings h3:first-of-type{margin:0 0 12px}#dialog-settings .settingMod,#dialog-settings .settingModToggle{display:none;position:absolute;cursor:pointer;margin-top:-3px;margin-left:-20px;color:#dd9359}#dialog-settings .settingMod>svg,#dialog-settings .settingModToggle>svg{width:24px}#dialog-settings .range .settingMod{margin-left:-54px}.set1{padding-top:1px}.set3{padding-top:2px}.precision,.expLower,.expUpper{background-color:transparent;padding:1px 0 0;width:25px;text-align:center}.warn-icon{display:none;margin-left:5px}.warn-icon svg{stroke:#faa05a;margin-top:-3px;width:14px;height:14px;pointer-events:none}.lastUpdated{display:inline-block;vertical-align:middle;margin-right:3px;font-size:.9rem}#updateRatesLink[data-enabled=false]{opacity:.5;pointer-events:none}.customizeThemeButton>svg,.updateRatesLink>svg{width:20px;height:20px}.dialog-about{text-align:center}.dialog-about-header{display:inline-block;margin:0 auto;font-weight:600}.dialog-about-header img{width:128px}.dialog-about-title{vertical-align:middle;margin-left:5px}.dialog-about p{clear:both;margin-top:5px}.dialog-about-links{display:flex;flex:auto}.dialog-about-links>div{width:100%;line-height:30px}div:has(>#logsLink){display:none}.dialog-about-appVersion{display:block;margin-bottom:8px;text-align:center}.versionCtnr>div{margin:8px 3px 3px;text-align:center}.dialog-about-updateStatus{display:block;text-align:center}.notificationLink{margin-left:8px;color:#56b6c2}.updateButton{display:none;margin-top:10px;text-transform:capitalize}.dialog-about-copyright{display:block;margin:15px 0}.resetButtons svg{width:14px;pointer-events:none}.defSettingsButton{margin-right:10px}#resetSize>svg{margin:10px 10px 0 0;width:14px;height:14px}.resetSizeButton{float:left;margin-left:10px}.msg{opacity:0;transition:visibility .3s linear,opacity .3s linear}.pr-lh{line-height:22px}.pdt-lh{line-height:20px}.padTop1{padding-top:1px}.textBox{box-sizing:border-box;border:1px solid #cccccc;padding:5px;width:100%}.textBox::placeholder{color:#949ca099}.function-plot{height:calc(100vh - 180px)!important;max-height:800px}.top-right-legend{fill:#4682b4}.switch{display:inline-block;position:relative;margin-top:1px;width:28px;height:16px}.switch:disabled{opacity:.5}.switch input{opacity:0;width:0;height:0}.switchText{display:inline-block;vertical-align:text-bottom;margin:0 12px 0 2px;line-height:17px}.subSwitchIcon{margin:-5px 5px 0 0;width:14px}.plotTitle{margin:0 0 5px}.plotSwitches{margin:0}.slider{-webkit-transition:.2s;position:absolute;inset:0;transition:.2s;cursor:pointer;background-color:#ccc}.slider:before{-webkit-transition:.2s;position:absolute;bottom:2px;left:2px;transition:.2s;width:12px;height:12px;content:""}.slider.round{border-radius:16px}.slider.round:before{border-radius:50%}input:checked+.slider{background-color:#1e87f0}input:checked+.slider:before{-webkit-transform:translateX(12px);transform:translate(12px)}.scrollTop{display:none;position:fixed;right:2px;bottom:35px;cursor:pointer;width:10px}.uk-text-secondary{font-weight:600!important}:focus:not([tabindex^="-"]),:focus-visible{outline:none}.uk-offcanvas-bar-animation{transition:left .2s ease-out}.uk-modal{padding:0 30px!important}.uk-modal-full{padding-right:20px;padding-left:20px}.uk-modal-dialog{transition:0s linear;border-radius:3px}.uk-modal-body{padding:12px 15px}.uk-modal-title,.errTitle{font-weight:600;font-size:1rem}.uk-modal-footer{padding:15px}.uk-grid{margin-left:-30px!important}.uk-grid>*{padding-left:30px!important}.uk-grid+.uk-grid{margin-top:10px}.uk-grid-small{margin:0 25px 0 0}.uk-select{transition:0s ease-in-out}.uk-select:not([multiple]):not([size]){margin-top:1px;border-width:0 0 1px 0;height:auto}.uk-switcher{margin:0!important}.uk-tab{margin:0 -20px}.uk-tab>*{padding-left:0}.uk-tab>*:first-child{padding-left:20px}.uk-tab:before{border:none}.uk-tab>*>a{display:inline-block;margin-right:0;padding:0 15px 5px;font-weight:600;font-size:1rem;text-transform:none}.uk-button{transition:0s ease-in-out;margin-left:3px;border-radius:3px;padding:0 10px;line-height:28px}.uk-button:enabled:active{transform:scale(.98)}.uk-button-default,.uk-button-default:hover{cursor:pointer;color:inherit}.uk-input{height:24px}.uk-label{font-size:1rem}.uk-width-small{width:280px}.uk-width-medium{width:350px}#dialog-settings>.uk-width-medium{width:420px}.uk-width-large{width:600px}.uk-width-xlarge{width:800px}.uk-width-2xlarge{width:1200px}.uk-overflow-auto{min-height:175px;max-height:calc(100vh - 250px)}.uk-range{padding-top:2px;min-height:1.6em}.uk-tooltip{z-index:1000000;max-width:50vw!important;word-break:break-word}.uk-tooltip>*{width:100%!important}.uk-notification{margin-top:30px;margin-bottom:30px}.uk-notification-top-left,.uk-notification-bottom-left{left:25px}.uk-notification-top-right,.uk-notification-bottom-right{right:25px}.uk-notification-message{padding:8px 35px 8px 10px;font-size:1rem}.uk-notification-close{display:block;top:11px;right:10px}.uk-notification-close svg{width:10px;height:10px}@media (max-width: 639px){.uk-notification{right:25px;left:25px}}@media (min-width: 640px){.uk-notification{width:590px}.uk-notification-bottom-center,.uk-notification-top-center{margin-left:-295px}}.cm-s-numara{background:none!important;height:100%!important;font-family:Roboto Mono!important}.cm-s-numara .CodeMirror-gutters{border:none!important;background:none!important}.cm-s-numara .CodeMirror-lines{padding:0!important}.CodeMirror-cursor{border:none!important}.CodeMirror-cursor:before{position:absolute;top:calc(12% + 1px);width:1px;height:calc(76% - 1px);content:""}.cm-s-numara .CodeMirror-vscrollbar{display:none!important}.cm-s-numara .CodeMirror-hscrollbar,.cm-s-numara .CodeMirror-gutter-filler{display:block!important;width:auto;height:8px!important}.cm-s-numara .CodeMirror-hscrollbar{right:8px!important}.cm-s-numara .CodeMirror-linenumber{padding:0 10px 0 0!important}.cm-s-numara .CodeMirror-sizer{padding-right:0!important;padding-bottom:8px!important}.cm-s-numara .CodeMirror-search-hint{display:none!important}.cm-s-numara .CodeMirror-dialog input{font-family:inherit!important}.cm-s-numara button{color:#1e87f0!important;font-size:inherit!important}.cm-s-numara button:hover{cursor:pointer!important;color:#5286b9!important;font-size:inherit!important}.cm-searching{background-color:#fffa5280!important}.cm-s-numara .CodeMirror-search-label{font-size:1rem!important}#dialog-udfu .CodeMirror{padding:5px;height:calc(100vh - 220px);max-height:800px;font-size:1.1em}.CodeMirror-hints{font-family:Roboto Mono,monospace}.cm-operator:before{display:inline-block;width:0;content:" "}.colorPickerContainer{margin-right:-8px;padding-right:10px;height:calc(100vh - 225px);max-height:390px;overflow:scroll}.colorPickerContainer .uk-first-column{margin-top:2px}.colorInput{cursor:pointer;box-sizing:border-box;padding:2px 5px;width:80px;height:20px}.clr-picker{border-radius:3px;width:160px}.clr-gradient{margin-bottom:10px;height:80px}.clr-hue,.clr-alpha{margin:5px 15px;width:calc(100% - 30px)}.clr-preview{margin:10px auto 10px 10px;width:25px;height:25px}input.clr-color{margin:10px auto;height:25px;font-size:13px;font-family:inherit}.clr-field button{width:20px}.clr-field button:after{box-shadow:none}.clr-custom-reset{order:2;cursor:pointer;margin:auto 10px auto 5px}.clr-custom-reset>svg{width:16px;height:16px}.printArea{display:none}@media print{.wrapper,.uk-open,.uk-tooltip{display:none!important}.printArea{display:block}.printTitle{padding-bottom:10px;font-size:1.1em;font-family:Numara;text-align:center}.printPage{border-collapse:collapse;width:100%;font-family:Roboto Mono,monospace}.printPage tr td{vertical-align:top;padding-top:3px;padding-right:10px;padding-bottom:3px}.printLineNumCol{width:1px;color:#ccc!important}.printAnswerLeft{border-left:1px solid #eaeaea}.printAnswerRight{text-align:right}.printPagele tr td:nth-child(1){padding-right:10px}.printPage tr td:last-child{padding-left:10px}.printRulers tr td{border-bottom:1px solid #eaeaea}.scrollTop{display:none!important}}@page{margin:15mm 10mm} +html{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-size:16px;font-weight:400;line-height:1.5;-webkit-text-size-adjust:100%;background:#fff;color:#666}body{margin:0}.uk-link,a{color:#1e87f0;text-decoration:none;cursor:pointer}.uk-link-toggle:hover .uk-link,.uk-link:hover,a:hover{color:#0f6ecd;text-decoration:underline}abbr[title]{text-decoration:underline dotted;-webkit-text-decoration-style:dotted}b,strong{font-weight:bolder}:not(pre)>code,:not(pre)>kbd,:not(pre)>samp{font-family:Consolas,monaco,monospace;font-size:.875rem;color:#f0506e;white-space:nowrap;padding:2px 6px;background:#f8f8f8}em{color:#f0506e}ins{background:#ffd;color:#666;text-decoration:none}mark{background:#ffd;color:#666}q{font-style:italic}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}audio,canvas,iframe,img,svg,video{vertical-align:middle}canvas,img,svg,video{max-width:100%;height:auto;box-sizing:border-box}img:not([src]){visibility:hidden;min-width:1px}iframe{border:0}address,dl,fieldset,figure,ol,p,pre,ul{margin:0 0 20px}*+address,*+dl,*+fieldset,*+figure,*+ol,*+p,*+pre,*+ul{margin-top:20px}.uk-h1,.uk-h2,.uk-h3,.uk-h4,.uk-h5,.uk-h6,.uk-heading-2xlarge,.uk-heading-3xlarge,.uk-heading-large,.uk-heading-medium,.uk-heading-small,.uk-heading-xlarge,h1,h2,h3,h4,h5,h6{margin:0 0 20px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-weight:400;color:#333;text-transform:none}*+.uk-h1,*+.uk-h2,*+.uk-h3,*+.uk-h4,*+.uk-h5,*+.uk-h6,*+.uk-heading-2xlarge,*+.uk-heading-3xlarge,*+.uk-heading-large,*+.uk-heading-medium,*+.uk-heading-small,*+.uk-heading-xlarge,*+h1,*+h2,*+h3,*+h4,*+h5,*+h6{margin-top:40px}.uk-h1,h1{font-size:2.23125rem;line-height:1.2}.uk-h2,h2{font-size:1.7rem;line-height:1.3}.uk-h3,h3{font-size:1.5rem;line-height:1.4}.uk-h4,h4{font-size:1.25rem;line-height:1.4}.uk-h5,h5{font-size:16px;line-height:1.4}.uk-h6,h6{font-size:.875rem;line-height:1.4}@media (min-width:960px){.uk-h1,h1{font-size:2.625rem}.uk-h2,h2{font-size:2rem}}ol,ul{padding-left:30px}ol>li>ol,ol>li>ul,ul>li>ol,ul>li>ul{margin:0}dt{font-weight:700}dd{margin-left:0}.uk-hr,hr{overflow:visible;text-align:inherit;margin:0 0 20px;border:0;border-top:1px solid #e5e5e5}*+.uk-hr,*+hr{margin-top:20px}address{font-style:normal}blockquote{margin:0 0 20px;font-size:1.25rem;line-height:1.5;font-style:italic;color:#333}*+blockquote{margin-top:20px}blockquote p:last-of-type{margin-bottom:0}blockquote footer{margin-top:10px;font-size:.875rem;line-height:1.5;color:#666}blockquote footer:before{content:"\2014 "}pre{font:.875rem/1.5 Consolas,monaco,monospace;color:#666;-moz-tab-size:4;tab-size:4;overflow:auto;padding:10px;border:1px solid #e5e5e5;border-radius:3px;background:#fff}pre code{font-family:Consolas,monaco,monospace}:focus{outline:0}:focus-visible{outline:2px dotted #333}::selection{background:#39f;color:#fff;text-shadow:none}details,main{display:block}summary{display:list-item}template{display:none}:root{--uk-breakpoint-s:640px;--uk-breakpoint-m:960px;--uk-breakpoint-l:1200px;--uk-breakpoint-xl:1600px}.uk-link-muted a,.uk-link-toggle .uk-link-muted,a.uk-link-muted{color:#999}.uk-link-muted a:hover,.uk-link-toggle:hover .uk-link-muted,a.uk-link-muted:hover{color:#666}.uk-link-text a,.uk-link-toggle .uk-link-text,a.uk-link-text{color:inherit}.uk-link-text a:hover,.uk-link-toggle:hover .uk-link-text,a.uk-link-text:hover{color:#999}.uk-link-heading a,.uk-link-toggle .uk-link-heading,a.uk-link-heading{color:inherit}.uk-link-heading a:hover,.uk-link-toggle:hover .uk-link-heading,a.uk-link-heading:hover{color:#1e87f0;text-decoration:none}.uk-link-reset a,a.uk-link-reset,.uk-link-toggle{color:inherit!important;text-decoration:none!important}.uk-heading-small{font-size:2.6rem;line-height:1.2}.uk-heading-medium{font-size:2.8875rem;line-height:1.1}.uk-heading-large{font-size:3.4rem;line-height:1.1}.uk-heading-xlarge{font-size:4rem;line-height:1}.uk-heading-2xlarge{font-size:6rem;line-height:1}.uk-heading-3xlarge{font-size:8rem;line-height:1}@media (min-width:960px){.uk-heading-small{font-size:3.25rem}.uk-heading-medium{font-size:3.5rem}.uk-heading-large{font-size:4rem}.uk-heading-xlarge{font-size:6rem}.uk-heading-2xlarge{font-size:8rem}.uk-heading-3xlarge{font-size:11rem}}@media (min-width:1200px){.uk-heading-medium{font-size:4rem}.uk-heading-large{font-size:6rem}.uk-heading-xlarge{font-size:8rem}.uk-heading-2xlarge{font-size:11rem}.uk-heading-3xlarge{font-size:15rem}}.uk-heading-divider{padding-bottom:calc(5px + .1em);border-bottom:calc(.2px + .05em) solid #e5e5e5}.uk-heading-bullet{position:relative}.uk-heading-bullet:before{content:"";display:inline-block;position:relative;top:-.1em;vertical-align:middle;height:calc(4px + .7em);margin-right:calc(5px + .2em);border-left:calc(5px + .1em) solid #e5e5e5}.uk-heading-line{overflow:hidden}.uk-heading-line>*{display:inline-block;position:relative}.uk-heading-line>:after,.uk-heading-line>:before{content:"";position:absolute;top:calc(50% - ((.2px + .05em)/2));width:2000px;border-bottom:calc(.2px + .05em) solid #e5e5e5}.uk-heading-line>:before{right:100%;margin-right:calc(5px + .3em)}.uk-heading-line>:after{left:100%;margin-left:calc(5px + .3em)}[class*=uk-divider]{border:none;margin-bottom:20px}*+[class*=uk-divider]{margin-top:20px}.uk-divider-icon{position:relative;height:20px;background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22none%22%20stroke%3D%22%23e5e5e5%22%20stroke-width%3D%222%22%20cx%3D%2210%22%20cy%3D%2210%22%20r%3D%227%22%20%2F%3E%0A%3C%2Fsvg%3E%0A);background-repeat:no-repeat;background-position:50% 50%}.uk-divider-icon:after,.uk-divider-icon:before{content:"";position:absolute;top:50%;max-width:calc(50% - 25px);border-bottom:1px solid #e5e5e5}.uk-divider-icon:before{right:calc(50% + 25px);width:100%}.uk-divider-icon:after{left:calc(50% + 25px);width:100%}.uk-divider-small{line-height:0}.uk-divider-small:after{content:"";display:inline-block;width:100px;max-width:100%;border-top:1px solid #e5e5e5;vertical-align:top}.uk-divider-vertical{width:max-content;height:100px;margin-left:auto;margin-right:auto;border-left:1px solid #e5e5e5}.uk-list{padding:0;list-style:none}.uk-list>*{break-inside:avoid-column}.uk-list>*>:last-child{margin-bottom:0}.uk-list>*>ul,.uk-list>:nth-child(n+2){margin-top:10px}.uk-list-circle>*,.uk-list-decimal>*,.uk-list-disc>*,.uk-list-hyphen>*,.uk-list-square>*{padding-left:30px}.uk-list-decimal{counter-reset:decimal}.uk-list-decimal>*{counter-increment:decimal}.uk-list-circle>:before,.uk-list-decimal>:before,.uk-list-disc>:before,.uk-list-hyphen>:before,.uk-list-square>:before{content:"";position:relative;left:-30px;width:30px;height:1.5em;margin-bottom:-1.5em;display:list-item;list-style-position:inside;text-align:right}.uk-list-disc>:before{list-style-type:disc}.uk-list-circle>:before{list-style-type:circle}.uk-list-square>:before{list-style-type:square}.uk-list-decimal>:before{content:counter(decimal,decimal) "\200a.\a0"}.uk-list-hyphen>:before{content:"\2013\a0\a0"}.uk-list-muted>:before{color:#999!important}.uk-list-emphasis>:before{color:#333!important}.uk-list-primary>:before{color:#1e87f0!important}.uk-list-secondary>:before{color:#222!important}.uk-list-bullet>*{padding-left:30px}.uk-list-bullet>:before{content:"";display:list-item;position:relative;left:-30px;width:30px;height:1.5em;margin-bottom:-1.5em;background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%226%22%20height%3D%226%22%20viewBox%3D%220%200%206%206%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22%23666%22%20cx%3D%223%22%20cy%3D%223%22%20r%3D%223%22%20%2F%3E%0A%3C%2Fsvg%3E);background-repeat:no-repeat;background-position:50% 50%}.uk-list-divider>:nth-child(n+2){margin-top:10px;padding-top:10px;border-top:1px solid #e5e5e5}.uk-list-striped>*{padding:10px}.uk-list-striped>:nth-of-type(odd){border-top:1px solid #e5e5e5;border-bottom:1px solid #e5e5e5}.uk-list-striped>:nth-of-type(odd){background:#f8f8f8}.uk-list-striped>:nth-child(n+2){margin-top:0}.uk-list-large>*>ul,.uk-list-large>:nth-child(n+2){margin-top:20px}.uk-list-collapse>*>ul,.uk-list-collapse>:nth-child(n+2){margin-top:0}.uk-list-large.uk-list-divider>:nth-child(n+2){margin-top:20px;padding-top:20px}.uk-list-collapse.uk-list-divider>:nth-child(n+2){margin-top:0;padding-top:0}.uk-list-large.uk-list-striped>*{padding:20px 10px}.uk-list-collapse.uk-list-striped>*{padding-top:0;padding-bottom:0}.uk-list-collapse.uk-list-striped>:nth-child(n+2),.uk-list-large.uk-list-striped>:nth-child(n+2){margin-top:0}.uk-description-list>dt{color:#333;font-size:.875rem;font-weight:400;text-transform:uppercase}.uk-description-list>dt:nth-child(n+2){margin-top:20px}.uk-description-list-divider>dt:nth-child(n+2){margin-top:20px;padding-top:20px;border-top:1px solid #e5e5e5}.uk-table{border-collapse:collapse;border-spacing:0;width:100%;margin-bottom:20px}*+.uk-table{margin-top:20px}.uk-table th{padding:16px 12px;text-align:left;vertical-align:bottom;font-size:.875rem;font-weight:400;color:#999;text-transform:uppercase}.uk-table td{padding:16px 12px;vertical-align:top}.uk-table td>:last-child{margin-bottom:0}.uk-table tfoot{font-size:.875rem}.uk-table caption{font-size:.875rem;text-align:left;color:#999}.uk-table-middle,.uk-table-middle td{vertical-align:middle!important}.uk-table-divider>:first-child>tr:not(:first-child),.uk-table-divider>:not(:first-child)>tr,.uk-table-divider>tr:not(:first-child){border-top:1px solid #e5e5e5}.uk-table-striped tbody tr:nth-of-type(odd),.uk-table-striped>tr:nth-of-type(odd){background:#f8f8f8;border-top:1px solid #e5e5e5;border-bottom:1px solid #e5e5e5}.uk-table-hover tbody tr:hover,.uk-table-hover>tr:hover{background:#ffd}.uk-table tbody tr.uk-active,.uk-table>tr.uk-active{background:#ffd}.uk-table-small td,.uk-table-small th{padding:10px 12px}.uk-table-large td,.uk-table-large th{padding:22px 12px}.uk-table-justify td:first-child,.uk-table-justify th:first-child{padding-left:0}.uk-table-justify td:last-child,.uk-table-justify th:last-child{padding-right:0}.uk-table-shrink{width:1px}.uk-table-expand{min-width:150px}.uk-table-link{padding:0!important}.uk-table-link>a{display:block;padding:16px 12px}.uk-table-small .uk-table-link>a{padding:10px 12px}@media (max-width:959px){.uk-table-responsive,.uk-table-responsive tbody,.uk-table-responsive td,.uk-table-responsive th,.uk-table-responsive tr{display:block}.uk-table-responsive thead{display:none}.uk-table-responsive td,.uk-table-responsive th{width:auto!important;max-width:none!important;min-width:0!important;overflow:visible!important;white-space:normal!important}.uk-table-responsive .uk-table-link:not(:first-child)>a,.uk-table-responsive td:not(:first-child):not(.uk-table-link),.uk-table-responsive th:not(:first-child):not(.uk-table-link){padding-top:5px!important}.uk-table-responsive .uk-table-link:not(:last-child)>a,.uk-table-responsive td:not(:last-child):not(.uk-table-link),.uk-table-responsive th:not(:last-child):not(.uk-table-link){padding-bottom:5px!important}.uk-table-justify.uk-table-responsive td,.uk-table-justify.uk-table-responsive th{padding-left:0;padding-right:0}}.uk-table tbody tr{transition:background-color .1s linear}.uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-table-striped>tr:nth-of-type(2n):last-child{border-bottom:1px solid #e5e5e5}.uk-icon{margin:0;border:none;border-radius:0;overflow:visible;font:inherit;color:inherit;text-transform:none;padding:0;background-color:transparent;display:inline-block;fill:currentcolor;line-height:0}button.uk-icon:not(:disabled){cursor:pointer}.uk-icon::-moz-focus-inner{border:0;padding:0}.uk-icon:not(.uk-preserve) [fill*="#"]:not(.uk-preserve){fill:currentcolor}.uk-icon:not(.uk-preserve) [stroke*="#"]:not(.uk-preserve){stroke:currentcolor}.uk-icon>*{transform:translate(0)}.uk-icon-image{width:20px;height:20px;background-position:50% 50%;background-repeat:no-repeat;background-size:contain;vertical-align:middle;object-fit:scale-down;max-width:none}.uk-icon-link{color:#999;text-decoration:none!important}.uk-icon-link:hover{color:#666}.uk-active>.uk-icon-link,.uk-icon-link:active{color:#595959}.uk-icon-button{box-sizing:border-box;width:36px;height:36px;border-radius:500px;background:#f8f8f8;color:#999;vertical-align:middle;display:inline-flex;justify-content:center;align-items:center;transition:.1s ease-in-out;transition-property:color,background-color}.uk-icon-button:hover{background-color:#ebebeb;color:#666}.uk-active>.uk-icon-button,.uk-icon-button:active{background-color:#dfdfdf;color:#666}.uk-range{-webkit-appearance:none;box-sizing:border-box;margin:0;vertical-align:middle;max-width:100%;width:100%;background:0 0}.uk-range:focus{outline:0}.uk-range::-moz-focus-outer{border:none}.uk-range:not(:disabled)::-webkit-slider-thumb{cursor:pointer}.uk-range:not(:disabled)::-moz-range-thumb{cursor:pointer}.uk-range::-webkit-slider-runnable-track{height:3px;background:#ebebeb;border-radius:500px}.uk-range:active::-webkit-slider-runnable-track,.uk-range:focus::-webkit-slider-runnable-track{background:#dedede}.uk-range::-moz-range-track{height:3px;background:#ebebeb;border-radius:500px}.uk-range:focus::-moz-range-track{background:#dedede}.uk-range::-webkit-slider-thumb{-webkit-appearance:none;margin-top:-7px;height:15px;width:15px;border-radius:500px;background:#fff;border:1px solid #ccc}.uk-range::-moz-range-thumb{border:none;height:15px;width:15px;margin-top:-7px;border-radius:500px;background:#fff;border:1px solid #ccc}.uk-checkbox,.uk-input,.uk-radio,.uk-select,.uk-textarea{box-sizing:border-box;margin:0;border-radius:0;font:inherit}.uk-input{overflow:visible}.uk-select{text-transform:none}.uk-select optgroup{font:inherit;font-weight:700}.uk-textarea{overflow:auto}.uk-input[type=search]::-webkit-search-cancel-button,.uk-input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.uk-input[type=number]::-webkit-inner-spin-button,.uk-input[type=number]::-webkit-outer-spin-button{height:auto}.uk-input::-moz-placeholder,.uk-textarea::-moz-placeholder{opacity:1}.uk-checkbox:not(:disabled),.uk-radio:not(:disabled){cursor:pointer}.uk-fieldset{border:none;margin:0;padding:0;min-width:0}.uk-input,.uk-textarea{-webkit-appearance:none}.uk-input,.uk-select,.uk-textarea{max-width:100%;width:100%;border:0 none;padding:0 10px;background:#fff;color:#666;border:1px solid #e5e5e5;transition:.2s ease-in-out;transition-property:color,background-color,border}.uk-input,.uk-select:not([multiple]):not([size]){height:40px;vertical-align:middle;display:inline-block}.uk-input:not(input),.uk-select:not(select){line-height:38px}.uk-select[multiple],.uk-select[size],.uk-textarea{padding-top:6px;padding-bottom:6px;vertical-align:top}.uk-select[multiple],.uk-select[size]{resize:vertical}.uk-input:focus,.uk-select:focus,.uk-textarea:focus{outline:0;background-color:#fff;color:#666;border-color:#1e87f0}.uk-input:disabled,.uk-select:disabled,.uk-textarea:disabled{background-color:#f8f8f8;color:#999;border-color:#e5e5e5}.uk-input::placeholder{color:#999}.uk-textarea::placeholder{color:#999}.uk-form-small{font-size:.875rem}.uk-form-small:not(textarea):not([multiple]):not([size]){height:30px;padding-left:8px;padding-right:8px}[multiple].uk-form-small,[size].uk-form-small,textarea.uk-form-small{padding:5px 8px}.uk-form-small:not(select):not(input):not(textarea){line-height:28px}.uk-form-large{font-size:1.25rem}.uk-form-large:not(textarea):not([multiple]):not([size]){height:55px;padding-left:12px;padding-right:12px}[multiple].uk-form-large,[size].uk-form-large,textarea.uk-form-large{padding:7px 12px}.uk-form-large:not(select):not(input):not(textarea){line-height:53px}.uk-form-danger,.uk-form-danger:focus{color:#f0506e;border-color:#f0506e}.uk-form-success,.uk-form-success:focus{color:#32d296;border-color:#32d296}.uk-form-blank{background:0 0;border-color:transparent}.uk-form-blank:focus{border-color:#e5e5e5;border-style:solid}input.uk-form-width-xsmall{width:50px}select.uk-form-width-xsmall{width:75px}.uk-form-width-small{width:130px}.uk-form-width-medium{width:200px}.uk-form-width-large{width:500px}.uk-select:not([multiple]):not([size]){-webkit-appearance:none;-moz-appearance:none;padding-right:20px;background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2224%22%20height%3D%2216%22%20viewBox%3D%220%200%2024%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22%23666%22%20points%3D%2212%201%209%206%2015%206%22%20%2F%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22%23666%22%20points%3D%2212%2013%209%208%2015%208%22%20%2F%3E%0A%3C%2Fsvg%3E%0A);background-repeat:no-repeat;background-position:100% 50%}.uk-select:not([multiple]):not([size]) option{color:#666}.uk-select:not([multiple]):not([size]):disabled{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2224%22%20height%3D%2216%22%20viewBox%3D%220%200%2024%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22%23999%22%20points%3D%2212%201%209%206%2015%206%22%20%2F%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22%23999%22%20points%3D%2212%2013%209%208%2015%208%22%20%2F%3E%0A%3C%2Fsvg%3E%0A)}.uk-input[list]{padding-right:20px;background-repeat:no-repeat;background-position:100% 50%}.uk-input[list]:focus,.uk-input[list]:hover{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2224%22%20height%3D%2216%22%20viewBox%3D%220%200%2024%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22%23666%22%20points%3D%2212%2012%208%206%2016%206%22%20%2F%3E%0A%3C%2Fsvg%3E%0A)}.uk-input[list]::-webkit-calendar-picker-indicator{display:none!important}.uk-checkbox,.uk-radio{display:inline-block;height:16px;width:16px;overflow:hidden;margin-top:-4px;vertical-align:middle;-webkit-appearance:none;-moz-appearance:none;background-color:transparent;background-repeat:no-repeat;background-position:50% 50%;border:1px solid #ccc;transition:.2s ease-in-out;transition-property:background-color,border}.uk-radio{border-radius:50%}.uk-checkbox:focus,.uk-radio:focus{background-color:#0000;outline:0;border-color:#1e87f0}.uk-checkbox:checked,.uk-checkbox:indeterminate,.uk-radio:checked{background-color:#1e87f0;border-color:transparent}.uk-checkbox:checked:focus,.uk-checkbox:indeterminate:focus,.uk-radio:checked:focus{background-color:#0e6dcd}.uk-radio:checked{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22%23fff%22%20cx%3D%228%22%20cy%3D%228%22%20r%3D%222%22%20%2F%3E%0A%3C%2Fsvg%3E)}.uk-checkbox:checked{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2214%22%20height%3D%2211%22%20viewBox%3D%220%200%2014%2011%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22%23fff%22%20points%3D%2212%201%205%207.5%202%205%201%205.5%205%2010%2013%201.5%22%20%2F%3E%0A%3C%2Fsvg%3E%0A)}.uk-checkbox:indeterminate{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22%23fff%22%20x%3D%223%22%20y%3D%228%22%20width%3D%2210%22%20height%3D%221%22%20%2F%3E%0A%3C%2Fsvg%3E)}.uk-checkbox:disabled,.uk-radio:disabled{background-color:#f8f8f8;border-color:#e5e5e5}.uk-radio:disabled:checked{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22%23999%22%20cx%3D%228%22%20cy%3D%228%22%20r%3D%222%22%20%2F%3E%0A%3C%2Fsvg%3E)}.uk-checkbox:disabled:checked{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2214%22%20height%3D%2211%22%20viewBox%3D%220%200%2014%2011%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22%23999%22%20points%3D%2212%201%205%207.5%202%205%201%205.5%205%2010%2013%201.5%22%20%2F%3E%0A%3C%2Fsvg%3E%0A)}.uk-checkbox:disabled:indeterminate{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22%23999%22%20x%3D%223%22%20y%3D%228%22%20width%3D%2210%22%20height%3D%221%22%20%2F%3E%0A%3C%2Fsvg%3E)}.uk-legend{width:100%;color:inherit;padding:0;font-size:1.5rem;line-height:1.4}.uk-form-custom{display:inline-block;position:relative;max-width:100%;vertical-align:middle}.uk-form-custom input[type=file],.uk-form-custom select{position:absolute;top:0;z-index:1;width:100%;height:100%;left:0;-webkit-appearance:none;opacity:0;cursor:pointer}.uk-form-custom input[type=file]{font-size:500px;overflow:hidden}.uk-form-label{color:#333;font-size:.875rem}.uk-form-stacked .uk-form-label{display:block;margin-bottom:5px}@media (max-width:959px){.uk-form-horizontal .uk-form-label{display:block;margin-bottom:5px}}@media (min-width:960px){.uk-form-horizontal .uk-form-label{width:200px;margin-top:7px;float:left}.uk-form-horizontal .uk-form-controls{margin-left:215px}.uk-form-horizontal .uk-form-controls-text{padding-top:7px}}.uk-form-icon{position:absolute;top:0;bottom:0;left:0;width:40px;display:inline-flex;justify-content:center;align-items:center;color:#999}.uk-form-icon:hover{color:#666}.uk-form-icon:not(a):not(button):not(input){pointer-events:none}.uk-form-icon:not(.uk-form-icon-flip)~.uk-input{padding-left:40px!important}.uk-form-icon-flip{right:0;left:auto}.uk-form-icon-flip~.uk-input{padding-right:40px!important}.uk-button{margin:0;border:none;overflow:visible;font:inherit;color:inherit;text-transform:none;-webkit-appearance:none;border-radius:0;display:inline-block;box-sizing:border-box;padding:0 30px;vertical-align:middle;font-size:.875rem;line-height:38px;text-align:center;text-decoration:none;text-transform:uppercase;transition:.1s ease-in-out;transition-property:color,background-color,border-color}.uk-button:not(:disabled){cursor:pointer}.uk-button::-moz-focus-inner{border:0;padding:0}.uk-button:hover{text-decoration:none}.uk-button-default{background-color:transparent;color:#333;border:1px solid #e5e5e5}.uk-button-default:hover{background-color:transparent;color:#333;border-color:#b2b2b2}.uk-button-default.uk-active,.uk-button-default:active{background-color:transparent;color:#333;border-color:#999}.uk-button-primary{background-color:#1e87f0;color:#fff;border:1px solid transparent}.uk-button-primary:hover{background-color:#0f7ae5;color:#fff}.uk-button-primary.uk-active,.uk-button-primary:active{background-color:#0e6dcd;color:#fff}.uk-button-secondary{background-color:#222;color:#fff;border:1px solid transparent}.uk-button-secondary:hover{background-color:#151515;color:#fff}.uk-button-secondary.uk-active,.uk-button-secondary:active{background-color:#080808;color:#fff}.uk-button-danger{background-color:#f0506e;color:#fff;border:1px solid transparent}.uk-button-danger:hover{background-color:#ee395b;color:#fff}.uk-button-danger.uk-active,.uk-button-danger:active{background-color:#ec2147;color:#fff}.uk-button-danger:disabled,.uk-button-default:disabled,.uk-button-primary:disabled,.uk-button-secondary:disabled{background-color:transparent;color:#999;border-color:#e5e5e5}.uk-button-small{padding:0 15px;line-height:28px;font-size:.875rem}.uk-button-large{padding:0 40px;line-height:53px;font-size:.875rem}.uk-button-text{padding:0;line-height:1.5;background:0 0;color:#333;position:relative}.uk-button-text:before{content:"";position:absolute;bottom:0;left:0;right:100%;border-bottom:1px solid currentColor;transition:right .3s ease-out}.uk-button-text:hover{color:#333}.uk-button-text:hover:before{right:0}.uk-button-text:disabled{color:#999}.uk-button-text:disabled:before{display:none}.uk-button-link{padding:0;line-height:1.5;background:0 0;color:#333}.uk-button-link:hover{color:#999;text-decoration:none}.uk-button-link:disabled{color:#999;text-decoration:none}.uk-button-group{display:inline-flex;vertical-align:middle;position:relative}.uk-button-group>.uk-button:nth-child(n+2),.uk-button-group>div:nth-child(n+2) .uk-button{margin-left:-1px}.uk-button-group .uk-button.uk-active,.uk-button-group .uk-button:active,.uk-button-group .uk-button:focus,.uk-button-group .uk-button:hover{position:relative;z-index:1}.uk-progress{vertical-align:baseline;display:block;width:100%;border:0;background-color:#f8f8f8;margin-bottom:20px;height:15px;border-radius:500px;overflow:hidden}*+.uk-progress{margin-top:20px}.uk-progress::-webkit-progress-bar{background-color:transparent}.uk-progress::-webkit-progress-value{background-color:#1e87f0;transition:width .6s ease}.uk-progress::-moz-progress-bar{background-color:#1e87f0;transition:width .6s ease}.uk-section{display:flow-root;box-sizing:border-box;padding-top:40px;padding-bottom:40px}@media (min-width:960px){.uk-section{padding-top:70px;padding-bottom:70px}}.uk-section>:last-child{margin-bottom:0}.uk-section-xsmall{padding-top:20px;padding-bottom:20px}.uk-section-small{padding-top:40px;padding-bottom:40px}.uk-section-large{padding-top:70px;padding-bottom:70px}@media (min-width:960px){.uk-section-large{padding-top:140px;padding-bottom:140px}}.uk-section-xlarge{padding-top:140px;padding-bottom:140px}@media (min-width:960px){.uk-section-xlarge{padding-top:210px;padding-bottom:210px}}.uk-section-default{--uk-inverse:dark;background:#fff}.uk-section-muted{--uk-inverse:dark;background:#f8f8f8}.uk-section-primary{--uk-inverse:light;background:#1e87f0}.uk-section-secondary{--uk-inverse:light;background:#222}.uk-container{display:flow-root;box-sizing:content-box;max-width:1200px;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px}@media (min-width:640px){.uk-container{padding-left:30px;padding-right:30px}}@media (min-width:960px){.uk-container{padding-left:40px;padding-right:40px}}.uk-container>:last-child{margin-bottom:0}.uk-container .uk-container{padding-left:0;padding-right:0}.uk-container-xsmall{max-width:750px}.uk-container-small{max-width:900px}.uk-container-large{max-width:1400px}.uk-container-xlarge{max-width:1600px}.uk-container-expand{max-width:none}.uk-container-expand-left{margin-left:0}.uk-container-expand-right{margin-right:0}@media (min-width:640px){.uk-container-expand-left.uk-container-xsmall,.uk-container-expand-right.uk-container-xsmall{max-width:calc(50% + 345px)}.uk-container-expand-left.uk-container-small,.uk-container-expand-right.uk-container-small{max-width:calc(50% + 420px)}}@media (min-width:960px){.uk-container-expand-left,.uk-container-expand-right{max-width:calc(50% + 560px)}.uk-container-expand-left.uk-container-xsmall,.uk-container-expand-right.uk-container-xsmall{max-width:calc(50% + 335px)}.uk-container-expand-left.uk-container-small,.uk-container-expand-right.uk-container-small{max-width:calc(50% + 410px)}.uk-container-expand-left.uk-container-large,.uk-container-expand-right.uk-container-large{max-width:calc(50% + 660px)}.uk-container-expand-left.uk-container-xlarge,.uk-container-expand-right.uk-container-xlarge{max-width:calc(50% + 760px)}}.uk-container-item-padding-remove-left,.uk-container-item-padding-remove-right{width:calc(100% + 15px)}.uk-container-item-padding-remove-left{margin-left:-15px}.uk-container-item-padding-remove-right{margin-right:-15px}@media (min-width:640px){.uk-container-item-padding-remove-left,.uk-container-item-padding-remove-right{width:calc(100% + 30px)}.uk-container-item-padding-remove-left{margin-left:-30px}.uk-container-item-padding-remove-right{margin-right:-30px}}@media (min-width:960px){.uk-container-item-padding-remove-left,.uk-container-item-padding-remove-right{width:calc(100% + 40px)}.uk-container-item-padding-remove-left{margin-left:-40px}.uk-container-item-padding-remove-right{margin-right:-40px}}.uk-tile{display:flow-root;position:relative;box-sizing:border-box;padding:40px 15px}@media (min-width:640px){.uk-tile{padding-left:30px;padding-right:30px}}@media (min-width:960px){.uk-tile{padding:70px 40px}}.uk-tile>:last-child{margin-bottom:0}.uk-tile-xsmall{padding-top:20px;padding-bottom:20px}.uk-tile-small{padding-top:40px;padding-bottom:40px}.uk-tile-large{padding-top:70px;padding-bottom:70px}@media (min-width:960px){.uk-tile-large{padding-top:140px;padding-bottom:140px}}.uk-tile-xlarge{padding-top:140px;padding-bottom:140px}@media (min-width:960px){.uk-tile-xlarge{padding-top:210px;padding-bottom:210px}}.uk-tile-default{--uk-inverse:dark;background-color:#fff}.uk-tile-muted{--uk-inverse:dark;background-color:#f8f8f8}.uk-tile-primary{--uk-inverse:light;background-color:#1e87f0}.uk-tile-secondary{--uk-inverse:light;background-color:#222}.uk-card{position:relative;box-sizing:border-box;transition:box-shadow .1s ease-in-out}.uk-card-body{display:flow-root;padding:30px}.uk-card-header,.uk-card-footer{display:flow-root;padding:15px 30px}@media (min-width:1200px){.uk-card-body{padding:40px}.uk-card-header,.uk-card-footer{padding:20px 40px}}.uk-card-body>:last-child,.uk-card-footer>:last-child,.uk-card-header>:last-child{margin-bottom:0}.uk-card-title{font-size:1.5rem;line-height:1.4}.uk-card-badge{position:absolute;top:15px;right:15px;z-index:1;height:22px;padding:0 10px;background:#1e87f0;color:#fff;font-size:.875rem;display:flex;justify-content:center;align-items:center;line-height:0;border-radius:2px;text-transform:uppercase}.uk-card-badge:first-child+*{margin-top:0}.uk-card-hover:not(.uk-card-default):not(.uk-card-primary):not(.uk-card-secondary):hover{background-color:#fff;box-shadow:0 14px 25px #00000029}.uk-card-default{--uk-inverse:dark;background-color:#fff;color:#666;box-shadow:0 5px 15px #00000014}.uk-card-default .uk-card-title{color:#333}.uk-card-default.uk-card-hover:hover{background-color:#fff;box-shadow:0 14px 25px #00000029}.uk-card-default .uk-card-header{border-bottom:1px solid #e5e5e5}.uk-card-default .uk-card-footer{border-top:1px solid #e5e5e5}.uk-card-primary{--uk-inverse:light;background-color:#1e87f0;color:#fff;box-shadow:0 5px 15px #00000014}.uk-card-primary .uk-card-title{color:#fff}.uk-card-primary.uk-card-hover:hover{background-color:#1e87f0;box-shadow:0 14px 25px #00000029}.uk-card-secondary{--uk-inverse:light;background-color:#222;color:#fff;box-shadow:0 5px 15px #00000014}.uk-card-secondary .uk-card-title{color:#fff}.uk-card-secondary.uk-card-hover:hover{background-color:#222;box-shadow:0 14px 25px #00000029}.uk-card-small .uk-card-body,.uk-card-small.uk-card-body{padding:20px}.uk-card-small .uk-card-header,.uk-card-small .uk-card-footer{padding:13px 20px}@media (min-width:1200px){.uk-card-large .uk-card-body,.uk-card-large.uk-card-body{padding:70px}.uk-card-large .uk-card-header,.uk-card-large .uk-card-footer{padding:35px 70px}}.uk-card-body>.uk-nav-default{margin-left:-30px;margin-right:-30px}.uk-card-body>.uk-nav-default:only-child{margin-top:-15px;margin-bottom:-15px}.uk-card-body>.uk-nav-default .uk-nav-divider,.uk-card-body>.uk-nav-default .uk-nav-header,.uk-card-body>.uk-nav-default>li>a{padding-left:30px;padding-right:30px}.uk-card-body>.uk-nav-default .uk-nav-sub{padding-left:45px}@media (min-width:1200px){.uk-card-body>.uk-nav-default{margin-left:-40px;margin-right:-40px}.uk-card-body>.uk-nav-default:only-child{margin-top:-25px;margin-bottom:-25px}.uk-card-body>.uk-nav-default .uk-nav-divider,.uk-card-body>.uk-nav-default .uk-nav-header,.uk-card-body>.uk-nav-default>li>a{padding-left:40px;padding-right:40px}.uk-card-body>.uk-nav-default .uk-nav-sub{padding-left:55px}}.uk-card-small>.uk-nav-default{margin-left:-20px;margin-right:-20px}.uk-card-small>.uk-nav-default:only-child{margin-top:-5px;margin-bottom:-5px}.uk-card-small>.uk-nav-default .uk-nav-divider,.uk-card-small>.uk-nav-default .uk-nav-header,.uk-card-small>.uk-nav-default>li>a{padding-left:20px;padding-right:20px}.uk-card-small>.uk-nav-default .uk-nav-sub{padding-left:35px}@media (min-width:1200px){.uk-card-large>.uk-nav-default{margin:0}.uk-card-large>.uk-nav-default:only-child{margin:0}.uk-card-large>.uk-nav-default .uk-nav-divider,.uk-card-large>.uk-nav-default .uk-nav-header,.uk-card-large>.uk-nav-default>li>a{padding-left:0;padding-right:0}.uk-card-large>.uk-nav-default .uk-nav-sub{padding-left:15px}}.uk-close{color:#999;transition:.1s ease-in-out;transition-property:color,opacity}.uk-close:hover{color:#666}.uk-spinner>*{animation:uk-spinner-rotate 1.4s linear infinite}@keyframes uk-spinner-rotate{0%{transform:rotate(0)}to{transform:rotate(270deg)}}.uk-spinner>*>*{stroke-dasharray:88px;stroke-dashoffset:0;transform-origin:center;animation:uk-spinner-dash 1.4s ease-in-out infinite;stroke-width:1;stroke-linecap:round}@keyframes uk-spinner-dash{0%{stroke-dashoffset:88px}50%{stroke-dashoffset:22px;transform:rotate(135deg)}to{stroke-dashoffset:88px;transform:rotate(450deg)}}.uk-totop{padding:5px;color:#999;transition:color .1s ease-in-out}.uk-totop:hover{color:#666}.uk-totop:active{color:#333}.uk-marker{padding:5px;background:#222;color:#fff;border-radius:500px}.uk-marker:hover{color:#fff}.uk-alert{position:relative;margin-bottom:20px;padding:15px 29px 15px 15px;background:#f8f8f8;color:#666}*+.uk-alert{margin-top:20px}.uk-alert>:last-child{margin-bottom:0}.uk-alert-close{position:absolute;top:20px;right:15px;color:inherit;opacity:.4}.uk-alert-close:first-child+*{margin-top:0}.uk-alert-close:hover{color:inherit;opacity:.8}.uk-alert-primary{background:#d8eafc;color:#1e87f0}.uk-alert-success{background:#edfbf6;color:#32d296}.uk-alert-warning{background:#fff6ee;color:#faa05a}.uk-alert-danger{background:#fef4f6;color:#f0506e}.uk-alert h1,.uk-alert h2,.uk-alert h3,.uk-alert h4,.uk-alert h5,.uk-alert h6{color:inherit}.uk-alert a:not([class]){color:inherit;text-decoration:underline}.uk-alert a:not([class]):hover{color:inherit;text-decoration:underline}.uk-placeholder{margin-bottom:20px;padding:30px;background:0 0;border:1px dashed #e5e5e5}*+.uk-placeholder{margin-top:20px}.uk-placeholder>:last-child{margin-bottom:0}.uk-badge{box-sizing:border-box;min-width:18px;height:18px;padding:0 5px;border-radius:500px;vertical-align:middle;background:#1e87f0;color:#fff!important;font-size:11px;display:inline-flex;justify-content:center;align-items:center;line-height:0}.uk-badge:hover{text-decoration:none}.uk-label{display:inline-block;padding:0 10px;background:#1e87f0;line-height:1.5;font-size:.875rem;color:#fff;vertical-align:middle;white-space:nowrap;border-radius:2px;text-transform:uppercase}.uk-label-success{background-color:#32d296;color:#fff}.uk-label-warning{background-color:#faa05a;color:#fff}.uk-label-danger{background-color:#f0506e;color:#fff}.uk-overlay{padding:30px}.uk-overlay>:last-child{margin-bottom:0}.uk-overlay-default{--uk-inverse:dark;background:#fffc}.uk-overlay-primary{--uk-inverse:light;background:#222c}.uk-article{display:flow-root}.uk-article>:last-child{margin-bottom:0}.uk-article+.uk-article{margin-top:70px}.uk-article-title{font-size:2.23125rem;line-height:1.2}@media (min-width:960px){.uk-article-title{font-size:2.625rem}}.uk-article-meta{font-size:.875rem;line-height:1.4;color:#999}.uk-article-meta a{color:#999}.uk-article-meta a:hover{color:#666;text-decoration:none}.uk-comment-body{display:flow-root;overflow-wrap:break-word;word-wrap:break-word}.uk-comment-header{display:flow-root;margin-bottom:20px}.uk-comment-body>:last-child,.uk-comment-header>:last-child{margin-bottom:0}.uk-comment-title{font-size:1.25rem;line-height:1.4}.uk-comment-meta{font-size:.875rem;line-height:1.4;color:#999}.uk-comment-list{padding:0;list-style:none}.uk-comment-list>:nth-child(n+2){margin-top:70px}.uk-comment-list .uk-comment~ul{margin:70px 0 0;padding-left:30px;list-style:none}@media (min-width:960px){.uk-comment-list .uk-comment~ul{padding-left:100px}}.uk-comment-list .uk-comment~ul>:nth-child(n+2){margin-top:70px}.uk-comment-primary{padding:30px;background-color:#f8f8f8}.uk-search{display:inline-block;position:relative;max-width:100%;margin:0}.uk-search-input::-webkit-search-cancel-button,.uk-search-input::-webkit-search-decoration{-webkit-appearance:none}.uk-search-input::-moz-placeholder{opacity:1}.uk-search-input{box-sizing:border-box;margin:0;border-radius:0;font:inherit;overflow:visible;-webkit-appearance:none;vertical-align:middle;width:100%;border:none;color:#666}.uk-search-input:focus{outline:0}.uk-search-input::placeholder{color:#999}.uk-search .uk-search-icon{position:absolute;top:0;bottom:0;left:0;display:inline-flex;justify-content:center;align-items:center;color:#999}.uk-search .uk-search-icon:hover{color:#999}.uk-search .uk-search-icon:not(a):not(button):not(input){pointer-events:none}.uk-search .uk-search-icon-flip{right:0;left:auto}.uk-search-default{width:240px}.uk-search-default .uk-search-input{height:40px;padding-left:10px;padding-right:10px;background:0 0;border:1px solid #e5e5e5}.uk-search-default .uk-search-input:focus{background-color:#0000;border-color:#1e87f0}.uk-search-default .uk-search-icon{width:40px}.uk-search-default:has(.uk-search-icon:not(.uk-search-icon-flip)) .uk-search-input{padding-left:40px}.uk-search-default:has(.uk-search-icon-flip) .uk-search-input{padding-right:40px}.uk-search-navbar{width:240px}.uk-search-navbar .uk-search-input{height:40px;padding-left:10px;padding-right:10px;background:#fff;border:1px solid #e5e5e5}.uk-search-navbar .uk-search-input:focus{background-color:#fff;border-color:#1e87f0}.uk-search-navbar .uk-search-icon{width:40px}.uk-search-navbar:has(.uk-search-icon:not(.uk-search-icon-flip)) .uk-search-input{padding-left:40px}.uk-search-navbar:has(.uk-search-icon-flip) .uk-search-input{padding-right:40px}.uk-search-medium{width:400px}.uk-search-medium .uk-search-input{height:40px;background:0 0;font-size:1.5rem}.uk-search-medium .uk-search-icon{width:24px}.uk-search-medium:has(.uk-search-icon:not(.uk-search-icon-flip)) .uk-search-input{padding-left:34px}.uk-search-medium:has(.uk-search-icon-flip) .uk-search-input{padding-right:34px}.uk-search-large{width:500px}.uk-search-large .uk-search-input{height:80px;background:0 0;font-size:2.625rem}.uk-search-large .uk-search-icon{width:40px}.uk-search-large:has(.uk-search-icon:not(.uk-search-icon-flip)) .uk-search-input{padding-left:60px}.uk-search-large:has(.uk-search-icon-flip) .uk-search-input{padding-right:60px}.uk-search-toggle{color:#999}.uk-search-toggle:hover{color:#666}.uk-accordion{padding:0;list-style:none}.uk-accordion>:nth-child(n+2){margin-top:20px}.uk-accordion-title{display:block;font-size:1.25rem;line-height:1.4;color:#333;overflow:hidden}.uk-accordion-title:before{content:"";width:1.4em;height:1.4em;margin-left:10px;float:right;background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22%23666%22%20width%3D%2213%22%20height%3D%221%22%20x%3D%220%22%20y%3D%226%22%20%2F%3E%0A%20%20%20%20%3Crect%20fill%3D%22%23666%22%20width%3D%221%22%20height%3D%2213%22%20x%3D%226%22%20y%3D%220%22%20%2F%3E%0A%3C%2Fsvg%3E);background-repeat:no-repeat;background-position:50% 50%}.uk-open>.uk-accordion-title:before{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22%23666%22%20width%3D%2213%22%20height%3D%221%22%20x%3D%220%22%20y%3D%226%22%20%2F%3E%0A%3C%2Fsvg%3E)}.uk-accordion-title:hover{color:#666;text-decoration:none}.uk-accordion-content{display:flow-root;margin-top:20px}.uk-accordion-content>:last-child{margin-bottom:0}.uk-drop{display:none;position:absolute;z-index:1020;--uk-position-offset:20px;--uk-position-viewport-offset:15px;box-sizing:border-box;width:300px}.uk-drop.uk-open{display:block}.uk-drop-stack .uk-drop-grid>*{width:100%!important}.uk-drop-parent-icon{margin-left:.25em;transition:transform .3s ease-out}[aria-expanded=true]>.uk-drop-parent-icon{transform:rotateX(180deg)}.uk-dropbar{--uk-position-offset:0;--uk-position-shift-offset:0;--uk-position-viewport-offset:0;--uk-inverse:dark;width:auto;padding:25px 15px;background:#fff;color:#666}.uk-dropbar>:last-child{margin-bottom:0}@media (min-width:640px){.uk-dropbar{padding-left:30px;padding-right:30px}}@media (min-width:960px){.uk-dropbar{padding-left:40px;padding-right:40px}}.uk-dropbar :focus-visible{outline-color:#333!important}.uk-dropbar-large{padding-top:40px;padding-bottom:40px}.uk-dropbar-top{box-shadow:0 12px 7px -6px #0000000d}.uk-dropbar-bottom{box-shadow:0 -12px 7px -6px #0000000d}.uk-dropbar-left{box-shadow:12px 0 7px -6px #0000000d}.uk-dropbar-right{box-shadow:-12px 0 7px -6px #0000000d}.uk-dropnav-dropbar{position:absolute;z-index:980;padding:0;left:0;right:0}.uk-modal{display:none;position:fixed;inset:0;z-index:1010;overflow-y:auto;padding:15px;background:#0009;opacity:0;transition:opacity .15s linear}@media (min-width:640px){.uk-modal{padding:50px 30px}}@media (min-width:960px){.uk-modal{padding-left:40px;padding-right:40px}}.uk-modal.uk-open{opacity:1}.uk-modal-page{overflow:hidden}.uk-modal-dialog{position:relative;box-sizing:border-box;margin:0 auto;width:600px;max-width:100%!important;background:#fff;opacity:0;transform:translateY(-100px);transition:.3s linear;transition-property:opacity,transform}.uk-open>.uk-modal-dialog{opacity:1;transform:translateY(0)}.uk-modal-container .uk-modal-dialog{width:1200px}.uk-modal-full{padding:0;background:0 0}.uk-modal-full .uk-modal-dialog{margin:0;width:100%;max-width:100%;transform:translateY(0)}.uk-modal-body{display:flow-root;padding:20px}.uk-modal-header{display:flow-root;padding:10px 20px;background:#fff;border-bottom:1px solid #e5e5e5}.uk-modal-footer{display:flow-root;padding:10px 20px;background:#fff;border-top:1px solid #e5e5e5}@media (min-width:640px){.uk-modal-body{padding:30px}.uk-modal-header,.uk-modal-footer{padding:15px 30px}}.uk-modal-body>:last-child,.uk-modal-footer>:last-child,.uk-modal-header>:last-child{margin-bottom:0}.uk-modal-title{font-size:2rem;line-height:1.3}[class*=uk-modal-close-]{position:absolute;z-index:1010;top:10px;right:10px;padding:5px}[class*=uk-modal-close-]:first-child+*{margin-top:0}.uk-modal-close-outside{top:0;right:-5px;transform:translateY(-100%);color:#fff}.uk-modal-close-outside:hover{color:#fff}@media (min-width:960px){.uk-modal-close-outside{right:0;transform:translate(100%,-100%)}}.uk-modal-close-full{top:0;right:0;padding:10px;background:#fff}@media (min-width:960px){.uk-modal-close-full{padding:20px}}.uk-slideshow{-webkit-tap-highlight-color:transparent}.uk-slideshow-items{position:relative;z-index:0;margin:0;padding:0;list-style:none;overflow:hidden;-webkit-touch-callout:none;touch-action:pan-y}.uk-slideshow-items>*{position:absolute;inset:0;overflow:hidden;will-change:transform,opacity}.uk-slideshow-items>:not(.uk-active){display:none}.uk-slider{-webkit-tap-highlight-color:transparent}.uk-slider-container{overflow:hidden;overflow:clip}.uk-slider-container-offset{margin:-11px -25px -39px;padding:11px 25px 39px}.uk-slider-items{will-change:transform;position:relative;touch-action:pan-y}.uk-slider-items:not(.uk-grid){display:flex;margin:0;padding:0;list-style:none;-webkit-touch-callout:none}.uk-slider-items.uk-grid{flex-wrap:nowrap}.uk-slider-items>*{flex:none!important;box-sizing:border-box;max-width:100%;position:relative}.uk-sticky{position:relative;z-index:980;box-sizing:border-box}.uk-sticky-fixed{margin:0!important}.uk-sticky[class*=uk-animation-],.uk-sticky.uk-animation-reverse{animation-duration:.2s}.uk-sticky-placeholder{pointer-events:none}.uk-offcanvas{display:none;position:fixed;top:0;bottom:0;left:0;z-index:1000}.uk-offcanvas-flip .uk-offcanvas{right:0;left:auto}.uk-offcanvas-bar{--uk-inverse:light;position:absolute;top:0;bottom:0;left:-270px;box-sizing:border-box;width:270px;padding:20px;background:#222;overflow-y:auto}@media (min-width:640px){.uk-offcanvas-bar{left:-350px;width:350px;padding:30px}}.uk-offcanvas-flip .uk-offcanvas-bar{left:auto;right:-270px}@media (min-width:640px){.uk-offcanvas-flip .uk-offcanvas-bar{right:-350px}}.uk-open>.uk-offcanvas-bar{left:0}.uk-offcanvas-flip .uk-open>.uk-offcanvas-bar{left:auto;right:0}.uk-offcanvas-bar-animation{transition:left .3s ease-out}.uk-offcanvas-flip .uk-offcanvas-bar-animation{transition-property:right}.uk-offcanvas-reveal{position:absolute;top:0;bottom:0;left:0;width:0;overflow:hidden;transition:width .3s ease-out}.uk-offcanvas-reveal .uk-offcanvas-bar{left:0}.uk-offcanvas-flip .uk-offcanvas-reveal .uk-offcanvas-bar{left:auto;right:0}.uk-open>.uk-offcanvas-reveal{width:270px}@media (min-width:640px){.uk-open>.uk-offcanvas-reveal{width:350px}}.uk-offcanvas-flip .uk-offcanvas-reveal{right:0;left:auto}.uk-offcanvas-close{position:absolute;z-index:1000;top:5px;right:5px;padding:5px}@media (min-width:640px){.uk-offcanvas-close{top:10px;right:10px}}.uk-offcanvas-close:first-child+*{margin-top:0}.uk-offcanvas-overlay{width:100vw;touch-action:none}.uk-offcanvas-overlay:before{content:"";position:absolute;inset:0;background:#0000001a;opacity:0;transition:opacity .15s linear}.uk-offcanvas-overlay.uk-open:before{opacity:1}.uk-offcanvas-container,.uk-offcanvas-page{overflow-x:hidden;overflow-x:clip}.uk-offcanvas-container{position:relative;left:0;transition:left .3s ease-out;box-sizing:border-box;width:100%}:not(.uk-offcanvas-flip).uk-offcanvas-container-animation{left:270px}.uk-offcanvas-flip.uk-offcanvas-container-animation{left:-270px}@media (min-width:640px){:not(.uk-offcanvas-flip).uk-offcanvas-container-animation{left:350px}.uk-offcanvas-flip.uk-offcanvas-container-animation{left:-350px}}.uk-switcher{margin:0;padding:0;list-style:none}.uk-switcher>:not(.uk-active){display:none}.uk-switcher>*>:last-child{margin-bottom:0}.uk-leader{overflow:hidden}.uk-leader-fill:after{display:inline-block;margin-left:15px;width:0;content:attr(data-fill);white-space:nowrap}.uk-leader-fill.uk-leader-hide:after{display:none}:root{--uk-leader-fill-content:.}.uk-notification{position:fixed;top:10px;left:10px;z-index:1040;box-sizing:border-box;width:350px}.uk-notification-bottom-right,.uk-notification-top-right{left:auto;right:10px}.uk-notification-bottom-center,.uk-notification-top-center{left:50%;margin-left:-175px}.uk-notification-bottom-center,.uk-notification-bottom-left,.uk-notification-bottom-right{top:auto;bottom:10px}@media (max-width:639px){.uk-notification{left:10px;right:10px;width:auto;margin:0}}.uk-notification-message{position:relative;padding:15px;background:#f8f8f8;color:#666;font-size:1.25rem;line-height:1.4;cursor:pointer}*+.uk-notification-message{margin-top:10px}.uk-notification-close{display:none;position:absolute;top:20px;right:15px}.uk-notification-message:hover .uk-notification-close{display:block}.uk-notification-message-primary{color:#1e87f0}.uk-notification-message-success{color:#32d296}.uk-notification-message-warning{color:#faa05a}.uk-notification-message-danger{color:#f0506e}.uk-tooltip{display:none;position:absolute;z-index:1030;--uk-position-offset:10px;--uk-position-viewport-offset:10;top:0;box-sizing:border-box;max-width:200px;padding:3px 6px;background:#666;border-radius:2px;color:#fff;font-size:12px}.uk-tooltip.uk-active{display:block}.uk-sortable{position:relative}.uk-sortable>:last-child{margin-bottom:0}.uk-sortable-drag{position:fixed!important;z-index:1050!important;pointer-events:none}.uk-sortable-placeholder{opacity:0;pointer-events:none}.uk-sortable-empty{min-height:50px}.uk-sortable-handle:hover{cursor:move}.uk-countdown-number{font-variant-numeric:tabular-nums;font-size:2rem;line-height:.8}@media (min-width:640px){.uk-countdown-number{font-size:4rem}}@media (min-width:960px){.uk-countdown-number{font-size:6rem}}.uk-countdown-separator{font-size:1rem;line-height:1.6}@media (min-width:640px){.uk-countdown-separator{font-size:2rem}}@media (min-width:960px){.uk-countdown-separator{font-size:3rem}}.uk-thumbnav{display:flex;flex-wrap:wrap;padding:0;list-style:none;margin:0 0 0 -15px}.uk-thumbnav>*{padding-left:15px}.uk-thumbnav>*>*{display:inline-block;position:relative}.uk-thumbnav>*>:after{content:"";position:absolute;inset:0;background-image:linear-gradient(180deg,#fff0,#fff6);transition:opacity .1s ease-in-out}.uk-thumbnav>*>:hover:after{opacity:0}.uk-thumbnav>.uk-active>:after{opacity:0}.uk-thumbnav-vertical{flex-direction:column;margin-left:0;margin-top:-15px}.uk-thumbnav-vertical>*{padding-left:0;padding-top:15px}.uk-iconnav{display:flex;flex-wrap:wrap;padding:0;list-style:none;margin:0 0 0 -10px}.uk-iconnav>*{padding-left:10px}.uk-iconnav>*>a{display:flex;align-items:center;column-gap:.25em;line-height:0;color:#999;text-decoration:none;font-size:.875rem;transition:.1s ease-in-out;transition-property:color,background-color}.uk-iconnav>*>a:hover{color:#666}.uk-iconnav>.uk-active>a{color:#666}.uk-iconnav-vertical{flex-direction:column;margin-left:0;margin-top:-10px}.uk-iconnav-vertical>*{padding-left:0;padding-top:10px}.uk-grid{display:flex;flex-wrap:wrap;margin:0;padding:0;list-style:none}.uk-grid>*{margin:0}.uk-grid>*>:last-child{margin-bottom:0}.uk-grid{margin-left:-30px}.uk-grid>*{padding-left:30px}*+.uk-grid-margin,.uk-grid+.uk-grid,.uk-grid>.uk-grid-margin{margin-top:30px}@media (min-width:1200px){.uk-grid{margin-left:-40px}.uk-grid>*{padding-left:40px}*+.uk-grid-margin,.uk-grid+.uk-grid,.uk-grid>.uk-grid-margin{margin-top:40px}}.uk-grid-column-small,.uk-grid-small{margin-left:-15px}.uk-grid-column-small>*,.uk-grid-small>*{padding-left:15px}*+.uk-grid-margin-small,.uk-grid+.uk-grid-row-small,.uk-grid+.uk-grid-small,.uk-grid-row-small>.uk-grid-margin,.uk-grid-small>.uk-grid-margin{margin-top:15px}.uk-grid-column-medium,.uk-grid-medium{margin-left:-30px}.uk-grid-column-medium>*,.uk-grid-medium>*{padding-left:30px}*+.uk-grid-margin-medium,.uk-grid+.uk-grid-medium,.uk-grid+.uk-grid-row-medium,.uk-grid-medium>.uk-grid-margin,.uk-grid-row-medium>.uk-grid-margin{margin-top:30px}.uk-grid-column-large,.uk-grid-large{margin-left:-40px}.uk-grid-column-large>*,.uk-grid-large>*{padding-left:40px}*+.uk-grid-margin-large,.uk-grid+.uk-grid-large,.uk-grid+.uk-grid-row-large,.uk-grid-large>.uk-grid-margin,.uk-grid-row-large>.uk-grid-margin{margin-top:40px}@media (min-width:1200px){.uk-grid-column-large,.uk-grid-large{margin-left:-70px}.uk-grid-column-large>*,.uk-grid-large>*{padding-left:70px}*+.uk-grid-margin-large,.uk-grid+.uk-grid-large,.uk-grid+.uk-grid-row-large,.uk-grid-large>.uk-grid-margin,.uk-grid-row-large>.uk-grid-margin{margin-top:70px}}.uk-grid-collapse,.uk-grid-column-collapse{margin-left:0}.uk-grid-collapse>*,.uk-grid-column-collapse>*{padding-left:0}.uk-grid+.uk-grid-collapse,.uk-grid+.uk-grid-row-collapse,.uk-grid-collapse>.uk-grid-margin,.uk-grid-row-collapse>.uk-grid-margin{margin-top:0}.uk-grid-divider>*{position:relative}.uk-grid-divider>:not(.uk-first-column):before{content:"";position:absolute;top:0;bottom:0;border-left:1px solid #e5e5e5}.uk-grid-divider.uk-grid-stack>.uk-grid-margin:before{content:"";position:absolute;left:0;right:0;border-top:1px solid #e5e5e5}.uk-grid-divider{margin-left:-60px}.uk-grid-divider>*{padding-left:60px}.uk-grid-divider>:not(.uk-first-column):before{left:30px}.uk-grid-divider.uk-grid-stack>.uk-grid-margin{margin-top:60px}.uk-grid-divider.uk-grid-stack>.uk-grid-margin:before{top:-30px;left:60px}@media (min-width:1200px){.uk-grid-divider{margin-left:-80px}.uk-grid-divider>*{padding-left:80px}.uk-grid-divider>:not(.uk-first-column):before{left:40px}.uk-grid-divider.uk-grid-stack>.uk-grid-margin{margin-top:80px}.uk-grid-divider.uk-grid-stack>.uk-grid-margin:before{top:-40px;left:80px}}.uk-grid-divider.uk-grid-column-small,.uk-grid-divider.uk-grid-small{margin-left:-30px}.uk-grid-divider.uk-grid-column-small>*,.uk-grid-divider.uk-grid-small>*{padding-left:30px}.uk-grid-divider.uk-grid-column-small>:not(.uk-first-column):before,.uk-grid-divider.uk-grid-small>:not(.uk-first-column):before{left:15px}.uk-grid-divider.uk-grid-row-small.uk-grid-stack>.uk-grid-margin,.uk-grid-divider.uk-grid-small.uk-grid-stack>.uk-grid-margin{margin-top:30px}.uk-grid-divider.uk-grid-small.uk-grid-stack>.uk-grid-margin:before{top:-15px;left:30px}.uk-grid-divider.uk-grid-row-small.uk-grid-stack>.uk-grid-margin:before{top:-15px}.uk-grid-divider.uk-grid-column-small.uk-grid-stack>.uk-grid-margin:before{left:30px}.uk-grid-divider.uk-grid-column-medium,.uk-grid-divider.uk-grid-medium{margin-left:-60px}.uk-grid-divider.uk-grid-column-medium>*,.uk-grid-divider.uk-grid-medium>*{padding-left:60px}.uk-grid-divider.uk-grid-column-medium>:not(.uk-first-column):before,.uk-grid-divider.uk-grid-medium>:not(.uk-first-column):before{left:30px}.uk-grid-divider.uk-grid-medium.uk-grid-stack>.uk-grid-margin,.uk-grid-divider.uk-grid-row-medium.uk-grid-stack>.uk-grid-margin{margin-top:60px}.uk-grid-divider.uk-grid-medium.uk-grid-stack>.uk-grid-margin:before{top:-30px;left:60px}.uk-grid-divider.uk-grid-row-medium.uk-grid-stack>.uk-grid-margin:before{top:-30px}.uk-grid-divider.uk-grid-column-medium.uk-grid-stack>.uk-grid-margin:before{left:60px}.uk-grid-divider.uk-grid-column-large,.uk-grid-divider.uk-grid-large{margin-left:-80px}.uk-grid-divider.uk-grid-column-large>*,.uk-grid-divider.uk-grid-large>*{padding-left:80px}.uk-grid-divider.uk-grid-column-large>:not(.uk-first-column):before,.uk-grid-divider.uk-grid-large>:not(.uk-first-column):before{left:40px}.uk-grid-divider.uk-grid-large.uk-grid-stack>.uk-grid-margin,.uk-grid-divider.uk-grid-row-large.uk-grid-stack>.uk-grid-margin{margin-top:80px}.uk-grid-divider.uk-grid-large.uk-grid-stack>.uk-grid-margin:before{top:-40px;left:80px}.uk-grid-divider.uk-grid-row-large.uk-grid-stack>.uk-grid-margin:before{top:-40px}.uk-grid-divider.uk-grid-column-large.uk-grid-stack>.uk-grid-margin:before{left:80px}@media (min-width:1200px){.uk-grid-divider.uk-grid-column-large,.uk-grid-divider.uk-grid-large{margin-left:-140px}.uk-grid-divider.uk-grid-column-large>*,.uk-grid-divider.uk-grid-large>*{padding-left:140px}.uk-grid-divider.uk-grid-column-large>:not(.uk-first-column):before,.uk-grid-divider.uk-grid-large>:not(.uk-first-column):before{left:70px}.uk-grid-divider.uk-grid-large.uk-grid-stack>.uk-grid-margin,.uk-grid-divider.uk-grid-row-large.uk-grid-stack>.uk-grid-margin{margin-top:140px}.uk-grid-divider.uk-grid-large.uk-grid-stack>.uk-grid-margin:before{top:-70px;left:140px}.uk-grid-divider.uk-grid-row-large.uk-grid-stack>.uk-grid-margin:before{top:-70px}.uk-grid-divider.uk-grid-column-large.uk-grid-stack>.uk-grid-margin:before{left:140px}}.uk-grid-item-match,.uk-grid-match>*{display:flex;flex-wrap:wrap}.uk-grid-item-match>:not([class*=uk-width]),.uk-grid-match>*>:not([class*=uk-width]){box-sizing:border-box;width:100%;flex:auto}.uk-nav,.uk-nav ul{margin:0;padding:0;list-style:none}.uk-nav li>a{display:flex;align-items:center;column-gap:.25em;text-decoration:none}.uk-nav>li>a{padding:5px 0}ul.uk-nav-sub{padding:5px 0 5px 15px}.uk-nav-sub ul{padding-left:15px}.uk-nav-sub a{padding:2px 0}.uk-nav-parent-icon{margin-left:auto;transition:transform .3s ease-out}.uk-nav>li.uk-open>a .uk-nav-parent-icon{transform:rotateX(180deg)}.uk-nav-header{padding:5px 0;text-transform:uppercase;font-size:.875rem}.uk-nav-header:not(:first-child){margin-top:20px}.uk-nav .uk-nav-divider{margin:5px 0}.uk-nav-default{font-size:.875rem;line-height:1.5}.uk-nav-default>li>a{color:#999}.uk-nav-default>li>a:hover{color:#666}.uk-nav-default>li.uk-active>a{color:#333}.uk-nav-default .uk-nav-subtitle{font-size:12px}.uk-nav-default .uk-nav-header{color:#333}.uk-nav-default .uk-nav-divider{border-top:1px solid #e5e5e5}.uk-nav-default .uk-nav-sub{font-size:.875rem;line-height:1.5}.uk-nav-default .uk-nav-sub a{color:#999}.uk-nav-default .uk-nav-sub a:hover{color:#666}.uk-nav-default .uk-nav-sub li.uk-active>a{color:#333}.uk-nav-primary{font-size:1.5rem;line-height:1.5}.uk-nav-primary>li>a{color:#999}.uk-nav-primary>li>a:hover{color:#666}.uk-nav-primary>li.uk-active>a{color:#333}.uk-nav-primary .uk-nav-subtitle{font-size:1.25rem}.uk-nav-primary .uk-nav-header{color:#333}.uk-nav-primary .uk-nav-divider{border-top:1px solid #e5e5e5}.uk-nav-primary .uk-nav-sub{font-size:1.25rem;line-height:1.5}.uk-nav-primary .uk-nav-sub a{color:#999}.uk-nav-primary .uk-nav-sub a:hover{color:#666}.uk-nav-primary .uk-nav-sub li.uk-active>a{color:#333}.uk-nav-secondary{font-size:16px;line-height:1.5}.uk-nav-secondary>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider){margin-top:0}.uk-nav-secondary>li>a{color:#333;padding:10px}.uk-nav-secondary>li>a:hover{color:#333;background-color:#f8f8f8}.uk-nav-secondary>li.uk-active>a{color:#333;background-color:#f8f8f8}.uk-nav-secondary .uk-nav-subtitle{font-size:.875rem;color:#999}.uk-nav-secondary>li>a:hover .uk-nav-subtitle{color:#666}.uk-nav-secondary>li.uk-active>a .uk-nav-subtitle{color:#333}.uk-nav-secondary .uk-nav-header{color:#333}.uk-nav-secondary .uk-nav-divider{border-top:1px solid #e5e5e5}.uk-nav-secondary .uk-nav-sub{font-size:.875rem;line-height:1.5}.uk-nav-secondary .uk-nav-sub a{color:#999}.uk-nav-secondary .uk-nav-sub a:hover{color:#666}.uk-nav-secondary .uk-nav-sub li.uk-active>a{color:#333}.uk-nav-medium{font-size:2.8875rem;line-height:1}.uk-nav-large{font-size:3.4rem;line-height:1}.uk-nav-xlarge{font-size:4rem;line-height:1}@media (min-width:960px){.uk-nav-medium{font-size:3.5rem}.uk-nav-large{font-size:4rem}.uk-nav-xlarge{font-size:6rem}}@media (min-width:1200px){.uk-nav-medium{font-size:4rem}.uk-nav-large{font-size:6rem}.uk-nav-xlarge{font-size:8rem}}.uk-nav-center{text-align:center}.uk-nav-center li>a{justify-content:center}.uk-nav-center .uk-nav-sub,.uk-nav-center .uk-nav-sub ul{padding-left:0}.uk-nav-center .uk-nav-parent-icon{margin-left:.25em}.uk-nav.uk-nav-divider>:not(.uk-nav-header,.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider){margin-top:5px;padding-top:5px;border-top:1px solid #e5e5e5}.uk-navbar{display:flex;position:relative}.uk-navbar-container:not(.uk-navbar-transparent){background:#f8f8f8}.uk-navbar-left,.uk-navbar-right,[class*=uk-navbar-center]{display:flex;gap:15px;align-items:center}.uk-navbar-right{margin-left:auto}.uk-navbar-center:only-child{margin-left:auto;margin-right:auto;position:relative}.uk-navbar-center:not(:only-child){position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:max-content;box-sizing:border-box;z-index:990}.uk-navbar-center-left,.uk-navbar-center-right{position:absolute;top:0}.uk-navbar-center-left{right:calc(100% + 15px)}.uk-navbar-center-right{left:calc(100% + 15px)}[class*=uk-navbar-center-]{width:max-content;box-sizing:border-box}.uk-navbar-nav{display:flex;gap:15px;margin:0;padding:0;list-style:none}.uk-navbar-center:only-child,.uk-navbar-left,.uk-navbar-right{flex-wrap:wrap}.uk-navbar-item,.uk-navbar-nav>li>a,.uk-navbar-toggle{display:flex;justify-content:center;align-items:center;column-gap:.25em;box-sizing:border-box;min-height:80px;font-size:.875rem;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";text-decoration:none}.uk-navbar-nav>li>a{padding:0;color:#999;text-transform:uppercase;transition:.1s ease-in-out;transition-property:color,background-color}.uk-navbar-nav>li:hover>a,.uk-navbar-nav>li>a[aria-expanded=true]{color:#666}.uk-navbar-nav>li>a:active{color:#333}.uk-navbar-nav>li.uk-active>a{color:#333}.uk-navbar-parent-icon{margin-left:4px;transition:transform .3s ease-out}.uk-navbar-nav>li>a[aria-expanded=true] .uk-navbar-parent-icon{transform:rotateX(180deg)}.uk-navbar-item{padding:0;color:#666}.uk-navbar-item>:last-child{margin-bottom:0}.uk-navbar-toggle{padding:0;color:#999}.uk-navbar-toggle:hover,.uk-navbar-toggle[aria-expanded=true]{color:#666;text-decoration:none}.uk-navbar-subtitle{font-size:.875rem}.uk-navbar-justify .uk-navbar-item,.uk-navbar-justify .uk-navbar-left,.uk-navbar-justify .uk-navbar-nav,.uk-navbar-justify .uk-navbar-nav>li,.uk-navbar-justify .uk-navbar-right,.uk-navbar-justify .uk-navbar-toggle{flex-grow:1}.uk-navbar-dropdown{--uk-position-offset:15px;--uk-position-shift-offset:0;--uk-position-viewport-offset:15px;--uk-inverse:dark;width:200px;padding:25px;background:#fff;color:#666;box-shadow:0 5px 12px #00000026}.uk-navbar-dropdown>:last-child{margin-bottom:0}.uk-navbar-dropdown :focus-visible{outline-color:#333!important}.uk-navbar-dropdown .uk-drop-grid{margin-left:-30px}.uk-navbar-dropdown .uk-drop-grid>*{padding-left:30px}.uk-navbar-dropdown .uk-drop-grid>.uk-grid-margin{margin-top:30px}.uk-navbar-dropdown-width-2:not(.uk-drop-stack){width:400px}.uk-navbar-dropdown-width-3:not(.uk-drop-stack){width:600px}.uk-navbar-dropdown-width-4:not(.uk-drop-stack){width:800px}.uk-navbar-dropdown-width-5:not(.uk-drop-stack){width:1000px}.uk-navbar-dropdown-large{--uk-position-shift-offset:0;padding:40px}.uk-navbar-dropdown-dropbar{width:auto;background:0 0;padding:25px 0;--uk-position-offset:0;--uk-position-shift-offset:0;--uk-position-viewport-offset:15px;box-shadow:none}@media (min-width:640px){.uk-navbar-dropdown-dropbar{--uk-position-viewport-offset:30px}}@media (min-width:960px){.uk-navbar-dropdown-dropbar{--uk-position-viewport-offset:40px}}.uk-navbar-dropdown-dropbar-large{--uk-position-shift-offset:0;padding-top:40px;padding-bottom:40px}.uk-navbar-dropdown-nav{font-size:.875rem}.uk-navbar-dropdown-nav>li>a{color:#999}.uk-navbar-dropdown-nav>li>a:hover{color:#666}.uk-navbar-dropdown-nav>li.uk-active>a{color:#333}.uk-navbar-dropdown-nav .uk-nav-subtitle{font-size:12px}.uk-navbar-dropdown-nav .uk-nav-header{color:#333}.uk-navbar-dropdown-nav .uk-nav-divider{border-top:1px solid #e5e5e5}.uk-navbar-dropdown-nav .uk-nav-sub a{color:#999}.uk-navbar-dropdown-nav .uk-nav-sub a:hover{color:#666}.uk-navbar-dropdown-nav .uk-nav-sub li.uk-active>a{color:#333}.uk-navbar-container{transition:.1s ease-in-out;transition-property:background-color}@media (min-width:960px){.uk-navbar-left,.uk-navbar-right,[class*=uk-navbar-center]{gap:30px}.uk-navbar-center-left{right:calc(100% + 30px)}.uk-navbar-center-right{left:calc(100% + 30px)}}@media (min-width:960px){.uk-navbar-nav{gap:30px}}.uk-subnav{display:flex;flex-wrap:wrap;align-items:center;margin-left:-20px;padding:0;list-style:none}.uk-subnav>*{flex:none;padding-left:20px;position:relative}.uk-subnav>*>:first-child{display:flex;align-items:center;column-gap:.25em;color:#999;font-size:.875rem;text-transform:uppercase;transition:.1s ease-in-out;transition-property:color,background-color}.uk-subnav>*>a:hover{color:#666;text-decoration:none}.uk-subnav>.uk-active>a{color:#333}.uk-subnav-divider{margin-left:-41px}.uk-subnav-divider>*{display:flex;align-items:center}.uk-subnav-divider>:before{content:"";height:1.5em;margin-left:0;margin-right:20px;border-left:1px solid transparent}.uk-subnav-divider>:nth-child(n+2):not(.uk-first-column):before{border-left-color:#e5e5e5}.uk-subnav-pill>*>:first-child{padding:5px 10px;background:0 0;color:#999}.uk-subnav-pill>*>a:hover{background-color:#f8f8f8;color:#666}.uk-subnav-pill>*>a:active{background-color:#f8f8f8;color:#666}.uk-subnav-pill>.uk-active>a{background-color:#1e87f0;color:#fff}.uk-subnav>.uk-disabled>a{color:#999}.uk-breadcrumb{padding:0;list-style:none}.uk-breadcrumb>*{display:contents}.uk-breadcrumb>*>*{font-size:.875rem;color:#999}.uk-breadcrumb>*>:hover{color:#666;text-decoration:none}.uk-breadcrumb>:last-child>a:not([href]),.uk-breadcrumb>:last-child>span{color:#666}.uk-breadcrumb>:nth-child(n+2):not(.uk-first-column):before{content:"/";display:inline-block;margin:0 20px 0 16px;font-size:.875rem;color:#999}.uk-pagination{display:flex;flex-wrap:wrap;align-items:center;margin-left:0;padding:0;list-style:none}.uk-pagination>*{flex:none;padding-left:0;position:relative}.uk-pagination>*>*{display:flex;align-items:center;column-gap:.25em;padding:5px 10px;color:#999;transition:color .1s ease-in-out}.uk-pagination>*>:hover{color:#666;text-decoration:none}.uk-pagination>.uk-active>*{color:#666}.uk-pagination>.uk-disabled>*{color:#999}.uk-tab{display:flex;flex-wrap:wrap;margin-left:-20px;padding:0;list-style:none;position:relative}.uk-tab:before{content:"";position:absolute;bottom:0;left:20px;right:0;border-bottom:1px solid #e5e5e5}.uk-tab>*{flex:none;padding-left:20px;position:relative}.uk-tab>*>a{display:flex;align-items:center;column-gap:.25em;justify-content:center;padding:5px 10px;color:#999;border-bottom:1px solid transparent;font-size:.875rem;text-transform:uppercase;transition:color .1s ease-in-out}.uk-tab>*>a:hover{color:#666;text-decoration:none}.uk-tab>.uk-active>a{color:#333;border-color:#1e87f0}.uk-tab>.uk-disabled>a{color:#999}.uk-tab-bottom:before{top:0;bottom:auto}.uk-tab-bottom>*>a{border-top:1px solid transparent;border-bottom:none}.uk-tab-left,.uk-tab-right{flex-direction:column;margin-left:0}.uk-tab-left>*,.uk-tab-right>*{padding-left:0}.uk-tab-left:before{inset:0 0 0 auto;border-left:1px solid #e5e5e5;border-bottom:none}.uk-tab-right:before{inset:0 auto 0 0;border-left:1px solid #e5e5e5;border-bottom:none}.uk-tab-left>*>a{justify-content:left;border-right:1px solid transparent;border-bottom:none}.uk-tab-right>*>a{justify-content:left;border-left:1px solid transparent;border-bottom:none}.uk-tab .uk-dropdown{margin-left:30px}.uk-slidenav{padding:5px 10px;color:#66666680;transition:color .1s ease-in-out}.uk-slidenav:hover{color:#666666e6}.uk-slidenav:active{color:#66666680}.uk-slidenav-large{padding:10px}.uk-slidenav-container{display:flex}.uk-dotnav{display:flex;flex-wrap:wrap;padding:0;list-style:none;margin:0 0 0 -12px}.uk-dotnav>*{flex:none;padding-left:12px}.uk-dotnav>*>*{display:block;box-sizing:border-box;width:10px;height:10px;border-radius:50%;background:0 0;text-indent:100%;overflow:hidden;white-space:nowrap;border:1px solid rgba(102,102,102,.4);transition:.2s ease-in-out;transition-property:background-color,border-color}.uk-dotnav>*>:hover{background-color:#6669;border-color:transparent}.uk-dotnav>*>:active{background-color:#6663;border-color:transparent}.uk-dotnav>.uk-active>*{background-color:#6669;border-color:transparent}.uk-dotnav-vertical{flex-direction:column;margin-left:0;margin-top:-12px}.uk-dotnav-vertical>*{padding-left:0;padding-top:12px}.uk-dropdown{--uk-position-offset:10px;--uk-position-viewport-offset:15px;--uk-inverse:dark;width:auto;min-width:200px;padding:25px;background:#fff;color:#666;box-shadow:0 5px 12px #00000026}.uk-dropdown>:last-child{margin-bottom:0}.uk-dropdown :focus-visible{outline-color:#333!important}.uk-dropdown-large{padding:40px}.uk-dropdown-dropbar{width:auto;background:0 0;padding:5px 0 25px;--uk-position-viewport-offset:15px;box-shadow:none}@media (min-width:640px){.uk-dropdown-dropbar{--uk-position-viewport-offset:30px}}@media (min-width:960px){.uk-dropdown-dropbar{--uk-position-viewport-offset:40px}}.uk-dropdown-dropbar-large{padding-top:40px;padding-bottom:40px}.uk-dropdown-nav{font-size:.875rem}.uk-dropdown-nav>li>a{color:#999}.uk-dropdown-nav>li.uk-active>a,.uk-dropdown-nav>li>a:hover{color:#666}.uk-dropdown-nav .uk-nav-subtitle{font-size:12px}.uk-dropdown-nav .uk-nav-header{color:#333}.uk-dropdown-nav .uk-nav-divider{border-top:1px solid #e5e5e5}.uk-dropdown-nav .uk-nav-sub a{color:#999}.uk-dropdown-nav .uk-nav-sub a:hover,.uk-dropdown-nav .uk-nav-sub li.uk-active>a{color:#666}.uk-lightbox{display:none;position:fixed;inset:0;z-index:1010;background:#000;opacity:0;transition:opacity .15s linear;touch-action:pinch-zoom}.uk-lightbox.uk-open{display:block;opacity:1}.uk-lightbox :focus-visible{outline-color:#ffffffb3}.uk-lightbox-page{overflow:hidden}.uk-lightbox-items>*{position:absolute;inset:0;display:none;justify-content:center;align-items:center;color:#ffffffb3;will-change:transform,opacity}.uk-lightbox-items>*>*{max-width:100vw;max-height:100vh}.uk-lightbox-items>*>:not(iframe){width:auto;height:auto}.uk-lightbox-items>.uk-active{display:flex}.uk-lightbox-toolbar{padding:10px;background:#0000004d;color:#ffffffb3}.uk-lightbox-toolbar>*{color:#ffffffb3}.uk-lightbox-toolbar-icon{padding:5px;color:#ffffffb3}.uk-lightbox-toolbar-icon:hover{color:#fff}.uk-lightbox-button{box-sizing:border-box;width:50px;height:50px;background:#0000004d;color:#ffffffb3;display:inline-flex;justify-content:center;align-items:center}.uk-lightbox-button:hover{color:#fff}.uk-lightbox-caption:empty{display:none}.uk-lightbox-iframe{width:80%;height:80%}[class*=uk-animation-]{animation:.5s ease-out both}.uk-animation-fade{animation-name:uk-fade;animation-duration:.8s;animation-timing-function:linear}.uk-animation-scale-up{animation-name:uk-fade,uk-scale-up}.uk-animation-scale-down{animation-name:uk-fade,uk-scale-down}.uk-animation-slide-top{animation-name:uk-fade,uk-slide-top}.uk-animation-slide-bottom{animation-name:uk-fade,uk-slide-bottom}.uk-animation-slide-left{animation-name:uk-fade,uk-slide-left}.uk-animation-slide-right{animation-name:uk-fade,uk-slide-right}.uk-animation-slide-top-small{animation-name:uk-fade,uk-slide-top-small}.uk-animation-slide-bottom-small{animation-name:uk-fade,uk-slide-bottom-small}.uk-animation-slide-left-small{animation-name:uk-fade,uk-slide-left-small}.uk-animation-slide-right-small{animation-name:uk-fade,uk-slide-right-small}.uk-animation-slide-top-medium{animation-name:uk-fade,uk-slide-top-medium}.uk-animation-slide-bottom-medium{animation-name:uk-fade,uk-slide-bottom-medium}.uk-animation-slide-left-medium{animation-name:uk-fade,uk-slide-left-medium}.uk-animation-slide-right-medium{animation-name:uk-fade,uk-slide-right-medium}.uk-animation-kenburns{animation-name:uk-kenburns;animation-duration:15s}.uk-animation-shake{animation-name:uk-shake}.uk-animation-stroke{animation-name:uk-stroke;animation-duration:2s;stroke-dasharray:var(--uk-animation-stroke)}.uk-animation-reverse{animation-direction:reverse;animation-timing-function:ease-in}.uk-animation-fast{animation-duration:.1s}.uk-animation-toggle:not(:hover):not(:focus) [class*=uk-animation-]{animation-name:none}@keyframes uk-fade{0%{opacity:0}to{opacity:1}}@keyframes uk-scale-up{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes uk-scale-down{0%{transform:scale(1.1)}to{transform:scale(1)}}@keyframes uk-slide-top{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes uk-slide-bottom{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes uk-slide-left{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes uk-slide-right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes uk-slide-top-small{0%{transform:translateY(-10px)}to{transform:translateY(0)}}@keyframes uk-slide-bottom-small{0%{transform:translateY(10px)}to{transform:translateY(0)}}@keyframes uk-slide-left-small{0%{transform:translate(-10px)}to{transform:translate(0)}}@keyframes uk-slide-right-small{0%{transform:translate(10px)}to{transform:translate(0)}}@keyframes uk-slide-top-medium{0%{transform:translateY(-50px)}to{transform:translateY(0)}}@keyframes uk-slide-bottom-medium{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes uk-slide-left-medium{0%{transform:translate(-50px)}to{transform:translate(0)}}@keyframes uk-slide-right-medium{0%{transform:translate(50px)}to{transform:translate(0)}}@keyframes uk-kenburns{0%{transform:scale(1)}to{transform:scale(1.2)}}@keyframes uk-shake{0%,to{transform:translate(0)}10%{transform:translate(-9px)}20%{transform:translate(8px)}30%{transform:translate(-7px)}40%{transform:translate(6px)}50%{transform:translate(-5px)}60%{transform:translate(4px)}70%{transform:translate(-3px)}80%{transform:translate(2px)}90%{transform:translate(-1px)}}@keyframes uk-stroke{0%{stroke-dashoffset:var(--uk-animation-stroke)}to{stroke-dashoffset:0}}[class*=uk-child-width]>*{box-sizing:border-box;width:100%}.uk-child-width-1-2>*{width:50%}.uk-child-width-1-3>*{width:calc(100% / 3)}.uk-child-width-1-4>*{width:25%}.uk-child-width-1-5>*{width:20%}.uk-child-width-1-6>*{width:calc(100% / 6)}.uk-child-width-auto>*{width:auto}.uk-child-width-expand>:not([class*=uk-width]){flex:1;min-width:1px}@media (min-width:640px){.uk-child-width-1-1\@s>*{width:100%}.uk-child-width-1-2\@s>*{width:50%}.uk-child-width-1-3\@s>*{width:calc(100% / 3)}.uk-child-width-1-4\@s>*{width:25%}.uk-child-width-1-5\@s>*{width:20%}.uk-child-width-1-6\@s>*{width:calc(100% / 6)}.uk-child-width-auto\@s>*{width:auto}.uk-child-width-expand\@s>:not([class*=uk-width]){flex:1;min-width:1px}.uk-child-width-1-1\@s>:not([class*=uk-width]),.uk-child-width-1-2\@s>:not([class*=uk-width]),.uk-child-width-1-3\@s>:not([class*=uk-width]),.uk-child-width-1-4\@s>:not([class*=uk-width]),.uk-child-width-1-5\@s>:not([class*=uk-width]),.uk-child-width-1-6\@s>:not([class*=uk-width]),.uk-child-width-auto\@s>:not([class*=uk-width]){flex:initial}}@media (min-width:960px){.uk-child-width-1-1\@m>*{width:100%}.uk-child-width-1-2\@m>*{width:50%}.uk-child-width-1-3\@m>*{width:calc(100% / 3)}.uk-child-width-1-4\@m>*{width:25%}.uk-child-width-1-5\@m>*{width:20%}.uk-child-width-1-6\@m>*{width:calc(100% / 6)}.uk-child-width-auto\@m>*{width:auto}.uk-child-width-expand\@m>:not([class*=uk-width]){flex:1;min-width:1px}.uk-child-width-1-1\@m>:not([class*=uk-width]),.uk-child-width-1-2\@m>:not([class*=uk-width]),.uk-child-width-1-3\@m>:not([class*=uk-width]),.uk-child-width-1-4\@m>:not([class*=uk-width]),.uk-child-width-1-5\@m>:not([class*=uk-width]),.uk-child-width-1-6\@m>:not([class*=uk-width]),.uk-child-width-auto\@m>:not([class*=uk-width]){flex:initial}}@media (min-width:1200px){.uk-child-width-1-1\@l>*{width:100%}.uk-child-width-1-2\@l>*{width:50%}.uk-child-width-1-3\@l>*{width:calc(100% / 3)}.uk-child-width-1-4\@l>*{width:25%}.uk-child-width-1-5\@l>*{width:20%}.uk-child-width-1-6\@l>*{width:calc(100% / 6)}.uk-child-width-auto\@l>*{width:auto}.uk-child-width-expand\@l>:not([class*=uk-width]){flex:1;min-width:1px}.uk-child-width-1-1\@l>:not([class*=uk-width]),.uk-child-width-1-2\@l>:not([class*=uk-width]),.uk-child-width-1-3\@l>:not([class*=uk-width]),.uk-child-width-1-4\@l>:not([class*=uk-width]),.uk-child-width-1-5\@l>:not([class*=uk-width]),.uk-child-width-1-6\@l>:not([class*=uk-width]),.uk-child-width-auto\@l>:not([class*=uk-width]){flex:initial}}@media (min-width:1600px){.uk-child-width-1-1\@xl>*{width:100%}.uk-child-width-1-2\@xl>*{width:50%}.uk-child-width-1-3\@xl>*{width:calc(100% / 3)}.uk-child-width-1-4\@xl>*{width:25%}.uk-child-width-1-5\@xl>*{width:20%}.uk-child-width-1-6\@xl>*{width:calc(100% / 6)}.uk-child-width-auto\@xl>*{width:auto}.uk-child-width-expand\@xl>:not([class*=uk-width]){flex:1;min-width:1px}.uk-child-width-1-1\@xl>:not([class*=uk-width]),.uk-child-width-1-2\@xl>:not([class*=uk-width]),.uk-child-width-1-3\@xl>:not([class*=uk-width]),.uk-child-width-1-4\@xl>:not([class*=uk-width]),.uk-child-width-1-5\@xl>:not([class*=uk-width]),.uk-child-width-1-6\@xl>:not([class*=uk-width]),.uk-child-width-auto\@xl>:not([class*=uk-width]){flex:initial}}[class*=uk-width]{box-sizing:border-box;width:100%;max-width:100%}.uk-width-1-2{width:50%}.uk-width-1-3{width:calc(100% / 3)}.uk-width-2-3{width:calc(200% / 3)}.uk-width-1-4{width:25%}.uk-width-3-4{width:75%}.uk-width-1-5{width:20%}.uk-width-2-5{width:40%}.uk-width-3-5{width:60%}.uk-width-4-5{width:80%}.uk-width-1-6{width:calc(100% / 6)}.uk-width-5-6{width:calc(500% / 6)}.uk-width-small{width:150px}.uk-width-medium{width:300px}.uk-width-large{width:450px}.uk-width-xlarge{width:600px}.uk-width-2xlarge{width:750px}.uk-width-auto{width:auto}.uk-width-expand{flex:1;min-width:1px}@media (min-width:640px){.uk-width-1-1\@s{width:100%}.uk-width-1-2\@s{width:50%}.uk-width-1-3\@s{width:calc(100% / 3)}.uk-width-2-3\@s{width:calc(200% / 3)}.uk-width-1-4\@s{width:25%}.uk-width-3-4\@s{width:75%}.uk-width-1-5\@s{width:20%}.uk-width-2-5\@s{width:40%}.uk-width-3-5\@s{width:60%}.uk-width-4-5\@s{width:80%}.uk-width-1-6\@s{width:calc(100% / 6)}.uk-width-5-6\@s{width:calc(500% / 6)}.uk-width-small\@s{width:150px}.uk-width-medium\@s{width:300px}.uk-width-large\@s{width:450px}.uk-width-xlarge\@s{width:600px}.uk-width-2xlarge\@s{width:750px}.uk-width-auto\@s{width:auto}.uk-width-expand\@s{flex:1;min-width:1px}.uk-width-1-1\@s,.uk-width-1-2\@s,.uk-width-1-3\@s,.uk-width-1-4\@s,.uk-width-1-5\@s,.uk-width-1-6\@s,.uk-width-2-3\@s,.uk-width-2-5\@s,.uk-width-2xlarge\@s,.uk-width-3-4\@s,.uk-width-3-5\@s,.uk-width-4-5\@s,.uk-width-5-6\@s,.uk-width-auto\@s,.uk-width-large\@s,.uk-width-medium\@s,.uk-width-small\@s,.uk-width-xlarge\@s{flex:initial}}@media (min-width:960px){.uk-width-1-1\@m{width:100%}.uk-width-1-2\@m{width:50%}.uk-width-1-3\@m{width:calc(100% / 3)}.uk-width-2-3\@m{width:calc(200% / 3)}.uk-width-1-4\@m{width:25%}.uk-width-3-4\@m{width:75%}.uk-width-1-5\@m{width:20%}.uk-width-2-5\@m{width:40%}.uk-width-3-5\@m{width:60%}.uk-width-4-5\@m{width:80%}.uk-width-1-6\@m{width:calc(100% / 6)}.uk-width-5-6\@m{width:calc(500% / 6)}.uk-width-small\@m{width:150px}.uk-width-medium\@m{width:300px}.uk-width-large\@m{width:450px}.uk-width-xlarge\@m{width:600px}.uk-width-2xlarge\@m{width:750px}.uk-width-auto\@m{width:auto}.uk-width-expand\@m{flex:1;min-width:1px}.uk-width-1-1\@m,.uk-width-1-2\@m,.uk-width-1-3\@m,.uk-width-1-4\@m,.uk-width-1-5\@m,.uk-width-1-6\@m,.uk-width-2-3\@m,.uk-width-2-5\@m,.uk-width-2xlarge\@m,.uk-width-3-4\@m,.uk-width-3-5\@m,.uk-width-4-5\@m,.uk-width-5-6\@m,.uk-width-auto\@m,.uk-width-large\@m,.uk-width-medium\@m,.uk-width-small\@m,.uk-width-xlarge\@m{flex:initial}}@media (min-width:1200px){.uk-width-1-1\@l{width:100%}.uk-width-1-2\@l{width:50%}.uk-width-1-3\@l{width:calc(100% / 3)}.uk-width-2-3\@l{width:calc(200% / 3)}.uk-width-1-4\@l{width:25%}.uk-width-3-4\@l{width:75%}.uk-width-1-5\@l{width:20%}.uk-width-2-5\@l{width:40%}.uk-width-3-5\@l{width:60%}.uk-width-4-5\@l{width:80%}.uk-width-1-6\@l{width:calc(100% / 6)}.uk-width-5-6\@l{width:calc(500% / 6)}.uk-width-small\@l{width:150px}.uk-width-medium\@l{width:300px}.uk-width-large\@l{width:450px}.uk-width-xlarge\@l{width:600px}.uk-width-2xlarge\@l{width:750px}.uk-width-auto\@l{width:auto}.uk-width-expand\@l{flex:1;min-width:1px}.uk-width-1-1\@l,.uk-width-1-2\@l,.uk-width-1-3\@l,.uk-width-1-4\@l,.uk-width-1-5\@l,.uk-width-1-6\@l,.uk-width-2-3\@l,.uk-width-2-5\@l,.uk-width-2xlarge\@l,.uk-width-3-4\@l,.uk-width-3-5\@l,.uk-width-4-5\@l,.uk-width-5-6\@l,.uk-width-auto\@l,.uk-width-large\@l,.uk-width-medium\@l,.uk-width-small\@l,.uk-width-xlarge\@l{flex:initial}}@media (min-width:1600px){.uk-width-1-1\@xl{width:100%}.uk-width-1-2\@xl{width:50%}.uk-width-1-3\@xl{width:calc(100% / 3)}.uk-width-2-3\@xl{width:calc(200% / 3)}.uk-width-1-4\@xl{width:25%}.uk-width-3-4\@xl{width:75%}.uk-width-1-5\@xl{width:20%}.uk-width-2-5\@xl{width:40%}.uk-width-3-5\@xl{width:60%}.uk-width-4-5\@xl{width:80%}.uk-width-1-6\@xl{width:calc(100% / 6)}.uk-width-5-6\@xl{width:calc(500% / 6)}.uk-width-small\@xl{width:150px}.uk-width-medium\@xl{width:300px}.uk-width-large\@xl{width:450px}.uk-width-xlarge\@xl{width:600px}.uk-width-2xlarge\@xl{width:750px}.uk-width-auto\@xl{width:auto}.uk-width-expand\@xl{flex:1;min-width:1px}.uk-width-1-1\@xl,.uk-width-1-2\@xl,.uk-width-1-3\@xl,.uk-width-1-4\@xl,.uk-width-1-5\@xl,.uk-width-1-6\@xl,.uk-width-2-3\@xl,.uk-width-2-5\@xl,.uk-width-2xlarge\@xl,.uk-width-3-4\@xl,.uk-width-3-5\@xl,.uk-width-4-5\@xl,.uk-width-5-6\@xl,.uk-width-auto\@xl,.uk-width-large\@xl,.uk-width-medium\@xl,.uk-width-small\@xl,.uk-width-xlarge\@xl{flex:initial}}.uk-width-max-content{width:max-content}.uk-width-min-content{width:min-content}[class*=uk-height]{box-sizing:border-box}.uk-height-1-1{height:100%}.uk-height-viewport{min-height:100vh}.uk-height-viewport-2{min-height:200vh}.uk-height-viewport-3{min-height:300vh}.uk-height-viewport-4{min-height:400vh}.uk-height-small{height:150px}.uk-height-medium{height:300px}.uk-height-large{height:450px}.uk-height-max-small{max-height:150px}.uk-height-max-medium{max-height:300px}.uk-height-max-large{max-height:450px}.uk-text-lead{font-size:1.5rem;line-height:1.5;color:#333}.uk-text-meta{font-size:.875rem;line-height:1.4;color:#999}.uk-text-meta>a{color:#999}.uk-text-meta>a:hover{color:#666;text-decoration:none}.uk-text-small{font-size:.875rem;line-height:1.5}.uk-text-large{font-size:1.5rem;line-height:1.5}.uk-text-default{font-size:16px;line-height:1.5}.uk-text-light{font-weight:300}.uk-text-normal{font-weight:400}.uk-text-bold{font-weight:700}.uk-text-lighter{font-weight:lighter}.uk-text-bolder{font-weight:bolder}.uk-text-italic{font-style:italic}.uk-text-capitalize{text-transform:capitalize!important}.uk-text-uppercase{text-transform:uppercase!important}.uk-text-lowercase{text-transform:lowercase!important}.uk-text-decoration-none{text-decoration:none!important}.uk-text-muted{color:#999!important}.uk-text-emphasis{color:#333!important}.uk-text-primary{color:#1e87f0!important}.uk-text-secondary{color:#222!important}.uk-text-success{color:#32d296!important}.uk-text-warning{color:#faa05a!important}.uk-text-danger{color:#f0506e!important}.uk-text-background{-webkit-background-clip:text;color:transparent!important;display:inline-block;background-color:#1e87f0;background-image:linear-gradient(90deg,#1e87f0 0,#411ef0)}.uk-text-left{text-align:left!important}.uk-text-right{text-align:right!important}.uk-text-center{text-align:center!important}.uk-text-justify{text-align:justify!important}@media (min-width:640px){.uk-text-left\@s{text-align:left!important}.uk-text-right\@s{text-align:right!important}.uk-text-center\@s{text-align:center!important}}@media (min-width:960px){.uk-text-left\@m{text-align:left!important}.uk-text-right\@m{text-align:right!important}.uk-text-center\@m{text-align:center!important}}@media (min-width:1200px){.uk-text-left\@l{text-align:left!important}.uk-text-right\@l{text-align:right!important}.uk-text-center\@l{text-align:center!important}}@media (min-width:1600px){.uk-text-left\@xl{text-align:left!important}.uk-text-right\@xl{text-align:right!important}.uk-text-center\@xl{text-align:center!important}}.uk-text-top{vertical-align:top!important}.uk-text-middle{vertical-align:middle!important}.uk-text-bottom{vertical-align:bottom!important}.uk-text-baseline{vertical-align:baseline!important}.uk-text-nowrap{white-space:nowrap}.uk-text-truncate{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}td.uk-text-truncate,th.uk-text-truncate{max-width:0}.uk-text-break{overflow-wrap:break-word}td.uk-text-break,th.uk-text-break{word-break:break-word}[class*=uk-column-]{column-gap:30px}@media (min-width:1200px){[class*=uk-column-]{column-gap:40px}}[class*=uk-column-] img{transform:translateZ(0)}.uk-column-divider{column-rule:1px solid #e5e5e5;column-gap:60px}@media (min-width:1200px){.uk-column-divider{column-gap:80px}}.uk-column-1-2{column-count:2}.uk-column-1-3{column-count:3}.uk-column-1-4{column-count:4}.uk-column-1-5{column-count:5}.uk-column-1-6{column-count:6}@media (min-width:640px){.uk-column-1-2\@s{column-count:2}.uk-column-1-3\@s{column-count:3}.uk-column-1-4\@s{column-count:4}.uk-column-1-5\@s{column-count:5}.uk-column-1-6\@s{column-count:6}}@media (min-width:960px){.uk-column-1-2\@m{column-count:2}.uk-column-1-3\@m{column-count:3}.uk-column-1-4\@m{column-count:4}.uk-column-1-5\@m{column-count:5}.uk-column-1-6\@m{column-count:6}}@media (min-width:1200px){.uk-column-1-2\@l{column-count:2}.uk-column-1-3\@l{column-count:3}.uk-column-1-4\@l{column-count:4}.uk-column-1-5\@l{column-count:5}.uk-column-1-6\@l{column-count:6}}@media (min-width:1600px){.uk-column-1-2\@xl{column-count:2}.uk-column-1-3\@xl{column-count:3}.uk-column-1-4\@xl{column-count:4}.uk-column-1-5\@xl{column-count:5}.uk-column-1-6\@xl{column-count:6}}.uk-column-span{column-span:all}[data-uk-cover]:where(canvas,iframe,svg),[uk-cover]:where(canvas,iframe,svg){max-width:none;position:absolute;left:50%;top:50%;--uk-position-translate-x:-50%;--uk-position-translate-y:-50%;transform:translate(var(--uk-position-translate-x),var(--uk-position-translate-y))}iframe[data-uk-cover],iframe[uk-cover]{pointer-events:none}[data-uk-cover]:where(img,video),[uk-cover]:where(img,video){position:absolute;top:0;left:0;width:100%;height:100%;box-sizing:border-box;object-fit:cover;object-position:center}.uk-cover-container{overflow:hidden;position:relative}.uk-background-default{background-color:#fff}.uk-background-muted{background-color:#f8f8f8}.uk-background-primary{background-color:#1e87f0}.uk-background-secondary{background-color:#222}.uk-background-contain,.uk-background-cover,.uk-background-height-1-1,.uk-background-width-1-1{background-position:50% 50%;background-repeat:no-repeat}.uk-background-cover{background-size:cover}.uk-background-contain{background-size:contain}.uk-background-width-1-1{background-size:100%}.uk-background-height-1-1{background-size:auto 100%}.uk-background-top-left{background-position:0 0}.uk-background-top-center{background-position:50% 0}.uk-background-top-right{background-position:100% 0}.uk-background-center-left{background-position:0 50%}.uk-background-center-center{background-position:50% 50%}.uk-background-center-right{background-position:100% 50%}.uk-background-bottom-left{background-position:0 100%}.uk-background-bottom-center{background-position:50% 100%}.uk-background-bottom-right{background-position:100% 100%}.uk-background-norepeat{background-repeat:no-repeat}.uk-background-fixed{background-attachment:fixed}@media (pointer:coarse){.uk-background-fixed{background-attachment:scroll}}@media (max-width:639px){.uk-background-image\@s{background-image:none!important}}@media (max-width:959px){.uk-background-image\@m{background-image:none!important}}@media (max-width:1199px){.uk-background-image\@l{background-image:none!important}}@media (max-width:1599px){.uk-background-image\@xl{background-image:none!important}}.uk-background-blend-multiply{background-blend-mode:multiply}.uk-background-blend-screen{background-blend-mode:screen}.uk-background-blend-overlay{background-blend-mode:overlay}.uk-background-blend-darken{background-blend-mode:darken}.uk-background-blend-lighten{background-blend-mode:lighten}.uk-background-blend-color-dodge{background-blend-mode:color-dodge}.uk-background-blend-color-burn{background-blend-mode:color-burn}.uk-background-blend-hard-light{background-blend-mode:hard-light}.uk-background-blend-soft-light{background-blend-mode:soft-light}.uk-background-blend-difference{background-blend-mode:difference}.uk-background-blend-exclusion{background-blend-mode:exclusion}.uk-background-blend-hue{background-blend-mode:hue}.uk-background-blend-saturation{background-blend-mode:saturation}.uk-background-blend-color{background-blend-mode:color}.uk-background-blend-luminosity{background-blend-mode:luminosity}[class*=uk-align]{display:block;margin-bottom:30px}*+[class*=uk-align]{margin-top:30px}.uk-align-center{margin-left:auto;margin-right:auto}.uk-align-left{margin-top:0;margin-right:30px;float:left}.uk-align-right{margin-top:0;margin-left:30px;float:right}@media (min-width:640px){.uk-align-left\@s{margin-top:0;margin-right:30px;float:left}.uk-align-right\@s{margin-top:0;margin-left:30px;float:right}}@media (min-width:960px){.uk-align-left\@m{margin-top:0;margin-right:30px;float:left}.uk-align-right\@m{margin-top:0;margin-left:30px;float:right}}@media (min-width:1200px){.uk-align-left\@l{margin-top:0;float:left}.uk-align-right\@l{margin-top:0;float:right}.uk-align-left,.uk-align-left\@l,.uk-align-left\@m,.uk-align-left\@s{margin-right:40px}.uk-align-right,.uk-align-right\@l,.uk-align-right\@m,.uk-align-right\@s{margin-left:40px}}@media (min-width:1600px){.uk-align-left\@xl{margin-top:0;margin-right:40px;float:left}.uk-align-right\@xl{margin-top:0;margin-left:40px;float:right}}.uk-svg,.uk-svg:not(.uk-preserve) [fill*="#"]:not(.uk-preserve){fill:currentcolor}.uk-svg:not(.uk-preserve) [stroke*="#"]:not(.uk-preserve){stroke:currentcolor}.uk-svg{transform:translate(0)}.uk-panel{display:flow-root;position:relative;box-sizing:border-box}.uk-panel>:last-child{margin-bottom:0}.uk-panel-scrollable{height:170px;padding:10px;border:1px solid #e5e5e5;overflow:auto;resize:both}.uk-clearfix:before{content:"";display:table-cell}.uk-clearfix:after{content:"";display:table;clear:both}.uk-float-left{float:left}.uk-float-right{float:right}[class*=uk-float-]{max-width:100%}.uk-overflow-hidden{overflow:hidden}.uk-overflow-auto{overflow:auto}.uk-overflow-auto>:last-child{margin-bottom:0}.uk-box-sizing-content{box-sizing:content-box}.uk-box-sizing-border{box-sizing:border-box}.uk-resize{resize:both}.uk-resize-horizontal{resize:horizontal}.uk-resize-vertical{resize:vertical}.uk-display-block{display:block!important}.uk-display-inline{display:inline!important}.uk-display-inline-block{display:inline-block!important}[class*=uk-inline]{display:inline-block;position:relative;max-width:100%;vertical-align:middle;-webkit-backface-visibility:hidden}.uk-inline-clip{overflow:hidden}.uk-preserve-width,.uk-preserve-width canvas,.uk-preserve-width img,.uk-preserve-width svg,.uk-preserve-width video{max-width:none}.uk-responsive-height,.uk-responsive-width{box-sizing:border-box}.uk-responsive-width{max-width:100%!important;height:auto}.uk-responsive-height{max-height:100%;width:auto;max-width:none}[data-uk-responsive],[uk-responsive]{max-width:100%}.uk-object-cover{object-fit:cover}.uk-object-contain{object-fit:contain}.uk-object-fill{object-fit:fill}.uk-object-none{object-fit:none}.uk-object-scale-down{object-fit:scale-down}.uk-object-top-left{object-position:0 0}.uk-object-top-center{object-position:50% 0}.uk-object-top-right{object-position:100% 0}.uk-object-center-left{object-position:0 50%}.uk-object-center-center{object-position:50% 50%}.uk-object-center-right{object-position:100% 50%}.uk-object-bottom-left{object-position:0 100%}.uk-object-bottom-center{object-position:50% 100%}.uk-object-bottom-right{object-position:100% 100%}.uk-border-circle{border-radius:50%}.uk-border-pill{border-radius:500px}.uk-border-rounded{border-radius:5px}.uk-inline-clip[class*=uk-border-]{-webkit-transform:translateZ(0)}.uk-box-shadow-small{box-shadow:0 2px 8px #00000014}.uk-box-shadow-medium{box-shadow:0 5px 15px #00000014}.uk-box-shadow-large{box-shadow:0 14px 25px #00000029}.uk-box-shadow-xlarge{box-shadow:0 28px 50px #00000029}[class*=uk-box-shadow-hover]{transition:box-shadow .1s ease-in-out}.uk-box-shadow-hover-small:hover{box-shadow:0 2px 8px #00000014}.uk-box-shadow-hover-medium:hover{box-shadow:0 5px 15px #00000014}.uk-box-shadow-hover-large:hover{box-shadow:0 14px 25px #00000029}.uk-box-shadow-hover-xlarge:hover{box-shadow:0 28px 50px #00000029}@supports (filter:blur(0)){.uk-box-shadow-bottom{display:inline-block;position:relative;z-index:0;max-width:100%;vertical-align:middle}.uk-box-shadow-bottom:after{content:"";position:absolute;bottom:-30px;left:0;right:0;z-index:-1;height:30px;border-radius:100%;background:#444;filter:blur(20px);will-change:filter}}.uk-dropcap:first-letter,.uk-dropcap>p:first-of-type:first-letter{display:block;margin-right:10px;float:left;font-size:4.5em;line-height:1;margin-bottom:-2px}@-moz-document url-prefix(){.uk-dropcap:first-letter,.uk-dropcap>p:first-of-type:first-letter{margin-top:1.1%}}.uk-logo{font-size:1.5rem;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";color:#333;text-decoration:none}:where(.uk-logo){display:inline-block;vertical-align:middle}.uk-logo:hover{color:#333;text-decoration:none}.uk-logo :where(img,svg,video){display:block}.uk-logo-inverse{display:none}.uk-disabled{pointer-events:none}.uk-drag,.uk-drag *{cursor:move}.uk-drag iframe{pointer-events:none}.uk-dragover{box-shadow:0 0 20px #6464644d}.uk-blend-multiply{mix-blend-mode:multiply}.uk-blend-screen{mix-blend-mode:screen}.uk-blend-overlay{mix-blend-mode:overlay}.uk-blend-darken{mix-blend-mode:darken}.uk-blend-lighten{mix-blend-mode:lighten}.uk-blend-color-dodge{mix-blend-mode:color-dodge}.uk-blend-color-burn{mix-blend-mode:color-burn}.uk-blend-hard-light{mix-blend-mode:hard-light}.uk-blend-soft-light{mix-blend-mode:soft-light}.uk-blend-difference{mix-blend-mode:difference}.uk-blend-exclusion{mix-blend-mode:exclusion}.uk-blend-hue{mix-blend-mode:hue}.uk-blend-saturation{mix-blend-mode:saturation}.uk-blend-color{mix-blend-mode:color}.uk-blend-luminosity{mix-blend-mode:luminosity}.uk-transform-center{transform:translate(-50%,-50%)}.uk-transform-origin-top-left{transform-origin:0 0}.uk-transform-origin-top-center{transform-origin:50% 0}.uk-transform-origin-top-right{transform-origin:100% 0}.uk-transform-origin-center-left{transform-origin:0 50%}.uk-transform-origin-center-right{transform-origin:100% 50%}.uk-transform-origin-bottom-left{transform-origin:0 100%}.uk-transform-origin-bottom-center{transform-origin:50% 100%}.uk-transform-origin-bottom-right{transform-origin:100% 100%}.uk-flex{display:flex}.uk-flex-inline{display:inline-flex}.uk-flex-left{justify-content:flex-start}.uk-flex-center{justify-content:center}.uk-flex-right{justify-content:flex-end}.uk-flex-between{justify-content:space-between}.uk-flex-around{justify-content:space-around}@media (min-width:640px){.uk-flex-left\@s{justify-content:flex-start}.uk-flex-center\@s{justify-content:center}.uk-flex-right\@s{justify-content:flex-end}.uk-flex-between\@s{justify-content:space-between}.uk-flex-around\@s{justify-content:space-around}}@media (min-width:960px){.uk-flex-left\@m{justify-content:flex-start}.uk-flex-center\@m{justify-content:center}.uk-flex-right\@m{justify-content:flex-end}.uk-flex-between\@m{justify-content:space-between}.uk-flex-around\@m{justify-content:space-around}}@media (min-width:1200px){.uk-flex-left\@l{justify-content:flex-start}.uk-flex-center\@l{justify-content:center}.uk-flex-right\@l{justify-content:flex-end}.uk-flex-between\@l{justify-content:space-between}.uk-flex-around\@l{justify-content:space-around}}@media (min-width:1600px){.uk-flex-left\@xl{justify-content:flex-start}.uk-flex-center\@xl{justify-content:center}.uk-flex-right\@xl{justify-content:flex-end}.uk-flex-between\@xl{justify-content:space-between}.uk-flex-around\@xl{justify-content:space-around}}.uk-flex-stretch{align-items:stretch}.uk-flex-top{align-items:flex-start}.uk-flex-middle{align-items:center}.uk-flex-bottom{align-items:flex-end}@media (min-width:640px){.uk-flex-stretch\@s{align-items:stretch}.uk-flex-top\@s{align-items:flex-start}.uk-flex-middle\@s{align-items:center}.uk-flex-bottom\@s{align-items:flex-end}}@media (min-width:960px){.uk-flex-stretch\@m{align-items:stretch}.uk-flex-top\@m{align-items:flex-start}.uk-flex-middle\@m{align-items:center}.uk-flex-bottom\@m{align-items:flex-end}}@media (min-width:1200px){.uk-flex-stretch\@l{align-items:stretch}.uk-flex-top\@l{align-items:flex-start}.uk-flex-middle\@l{align-items:center}.uk-flex-bottom\@l{align-items:flex-end}}@media (min-width:1600px){.uk-flex-stretch\@xl{align-items:stretch}.uk-flex-top\@xl{align-items:flex-start}.uk-flex-middle\@xl{align-items:center}.uk-flex-bottom\@xl{align-items:flex-end}}.uk-flex-row{flex-direction:row}.uk-flex-row-reverse{flex-direction:row-reverse}.uk-flex-column{flex-direction:column}.uk-flex-column-reverse{flex-direction:column-reverse}@media (min-width:640px){.uk-flex-row\@s{flex-direction:row}.uk-flex-column\@s{flex-direction:column}}@media (min-width:960px){.uk-flex-row\@m{flex-direction:row}.uk-flex-column\@m{flex-direction:column}}@media (min-width:1200px){.uk-flex-row\@l{flex-direction:row}.uk-flex-column\@l{flex-direction:column}}@media (min-width:1600px){.uk-flex-row\@xl{flex-direction:row}.uk-flex-column\@xl{flex-direction:column}}.uk-flex-nowrap{flex-wrap:nowrap}.uk-flex-wrap{flex-wrap:wrap}.uk-flex-wrap-reverse{flex-wrap:wrap-reverse}.uk-flex-wrap-stretch{align-content:stretch}.uk-flex-wrap-top{align-content:flex-start}.uk-flex-wrap-middle{align-content:center}.uk-flex-wrap-bottom{align-content:flex-end}.uk-flex-wrap-between{align-content:space-between}.uk-flex-wrap-around{align-content:space-around}.uk-flex-first{order:-1}.uk-flex-last{order:99}@media (min-width:640px){.uk-flex-first\@s{order:-1}.uk-flex-last\@s{order:99}}@media (min-width:960px){.uk-flex-first\@m{order:-1}.uk-flex-last\@m{order:99}}@media (min-width:1200px){.uk-flex-first\@l{order:-1}.uk-flex-last\@l{order:99}}@media (min-width:1600px){.uk-flex-first\@xl{order:-1}.uk-flex-last\@xl{order:99}}.uk-flex-initial{flex:initial}.uk-flex-none{flex:none}.uk-flex-auto{flex:auto}.uk-flex-1{flex:1}@media (min-width:640px){.uk-flex-initial\@s{flex:initial}.uk-flex-none\@s{flex:none}.uk-flex-1\@s{flex:1}}@media (min-width:960px){.uk-flex-initial\@m{flex:initial}.uk-flex-none\@m{flex:none}.uk-flex-1\@m{flex:1}}@media (min-width:1200px){.uk-flex-initial\@l{flex:initial}.uk-flex-none\@l{flex:none}.uk-flex-1\@l{flex:1}}@media (min-width:1600px){.uk-flex-initial\@xl{flex:initial}.uk-flex-none\@xl{flex:none}.uk-flex-1\@xl{flex:1}}.uk-margin{margin-bottom:20px}*+.uk-margin{margin-top:20px!important}.uk-margin-top{margin-top:20px!important}.uk-margin-bottom{margin-bottom:20px!important}.uk-margin-left{margin-left:20px!important}.uk-margin-right{margin-right:20px!important}.uk-margin-small{margin-bottom:10px}*+.uk-margin-small{margin-top:10px!important}.uk-margin-small-top{margin-top:10px!important}.uk-margin-small-bottom{margin-bottom:10px!important}.uk-margin-small-left{margin-left:10px!important}.uk-margin-small-right{margin-right:10px!important}.uk-margin-medium{margin-bottom:40px}*+.uk-margin-medium{margin-top:40px!important}.uk-margin-medium-top{margin-top:40px!important}.uk-margin-medium-bottom{margin-bottom:40px!important}.uk-margin-medium-left{margin-left:40px!important}.uk-margin-medium-right{margin-right:40px!important}.uk-margin-large{margin-bottom:40px}*+.uk-margin-large{margin-top:40px!important}.uk-margin-large-top{margin-top:40px!important}.uk-margin-large-bottom{margin-bottom:40px!important}.uk-margin-large-left{margin-left:40px!important}.uk-margin-large-right{margin-right:40px!important}@media (min-width:1200px){.uk-margin-large{margin-bottom:70px}*+.uk-margin-large{margin-top:70px!important}.uk-margin-large-top{margin-top:70px!important}.uk-margin-large-bottom{margin-bottom:70px!important}.uk-margin-large-left{margin-left:70px!important}.uk-margin-large-right{margin-right:70px!important}}.uk-margin-xlarge{margin-bottom:70px}*+.uk-margin-xlarge{margin-top:70px!important}.uk-margin-xlarge-top{margin-top:70px!important}.uk-margin-xlarge-bottom{margin-bottom:70px!important}.uk-margin-xlarge-left{margin-left:70px!important}.uk-margin-xlarge-right{margin-right:70px!important}@media (min-width:1200px){.uk-margin-xlarge{margin-bottom:140px}*+.uk-margin-xlarge{margin-top:140px!important}.uk-margin-xlarge-top{margin-top:140px!important}.uk-margin-xlarge-bottom{margin-bottom:140px!important}.uk-margin-xlarge-left{margin-left:140px!important}.uk-margin-xlarge-right{margin-right:140px!important}}.uk-margin-auto{margin-left:auto!important;margin-right:auto!important}.uk-margin-auto-top{margin-top:auto!important}.uk-margin-auto-bottom{margin-bottom:auto!important}.uk-margin-auto-left{margin-left:auto!important}.uk-margin-auto-right{margin-right:auto!important}.uk-margin-auto-vertical{margin-top:auto!important;margin-bottom:auto!important}@media (min-width:640px){.uk-margin-auto\@s{margin-left:auto!important;margin-right:auto!important}.uk-margin-auto-left\@s{margin-left:auto!important}.uk-margin-auto-right\@s{margin-right:auto!important}}@media (min-width:960px){.uk-margin-auto\@m{margin-left:auto!important;margin-right:auto!important}.uk-margin-auto-left\@m{margin-left:auto!important}.uk-margin-auto-right\@m{margin-right:auto!important}}@media (min-width:1200px){.uk-margin-auto\@l{margin-left:auto!important;margin-right:auto!important}.uk-margin-auto-left\@l{margin-left:auto!important}.uk-margin-auto-right\@l{margin-right:auto!important}}@media (min-width:1600px){.uk-margin-auto\@xl{margin-left:auto!important;margin-right:auto!important}.uk-margin-auto-left\@xl{margin-left:auto!important}.uk-margin-auto-right\@xl{margin-right:auto!important}}.uk-margin-remove{margin:0!important}.uk-margin-remove-top{margin-top:0!important}.uk-margin-remove-bottom{margin-bottom:0!important}.uk-margin-remove-left{margin-left:0!important}.uk-margin-remove-right{margin-right:0!important}.uk-margin-remove-vertical{margin-top:0!important;margin-bottom:0!important}.uk-margin-remove-adjacent+*,.uk-margin-remove-first-child>:first-child{margin-top:0!important}.uk-margin-remove-last-child>:last-child{margin-bottom:0!important}@media (min-width:640px){.uk-margin-remove-left\@s{margin-left:0!important}.uk-margin-remove-right\@s{margin-right:0!important}}@media (min-width:960px){.uk-margin-remove-left\@m{margin-left:0!important}.uk-margin-remove-right\@m{margin-right:0!important}}@media (min-width:1200px){.uk-margin-remove-left\@l{margin-left:0!important}.uk-margin-remove-right\@l{margin-right:0!important}}@media (min-width:1600px){.uk-margin-remove-left\@xl{margin-left:0!important}.uk-margin-remove-right\@xl{margin-right:0!important}}.uk-padding{padding:30px}@media (min-width:1200px){.uk-padding{padding:40px}}.uk-padding-small{padding:15px}.uk-padding-large{padding:40px}@media (min-width:1200px){.uk-padding-large{padding:70px}}.uk-padding-remove{padding:0!important}.uk-padding-remove-top{padding-top:0!important}.uk-padding-remove-bottom{padding-bottom:0!important}.uk-padding-remove-left{padding-left:0!important}.uk-padding-remove-right{padding-right:0!important}.uk-padding-remove-vertical{padding-top:0!important;padding-bottom:0!important}.uk-padding-remove-horizontal{padding-left:0!important;padding-right:0!important}:root{--uk-position-margin-offset:0px}[class*=uk-position-bottom],[class*=uk-position-center],[class*=uk-position-left],[class*=uk-position-right],[class*=uk-position-top]{position:absolute!important;max-width:calc(100% - (var(--uk-position-margin-offset) * 2));box-sizing:border-box}.uk-position-top{top:0;left:0;right:0}.uk-position-bottom{bottom:0;left:0;right:0}.uk-position-left{top:0;bottom:0;left:0}.uk-position-right{top:0;bottom:0;right:0}.uk-position-top-left{top:0;left:0}.uk-position-top-right{top:0;right:0}.uk-position-bottom-left{bottom:0;left:0}.uk-position-bottom-right{bottom:0;right:0}.uk-position-center{top:calc(50% - var(--uk-position-margin-offset));left:calc(50% - var(--uk-position-margin-offset));--uk-position-translate-x:-50%;--uk-position-translate-y:-50%;transform:translate(var(--uk-position-translate-x),var(--uk-position-translate-y));width:max-content}.uk-position-center-vertical,[class*=uk-position-center-left],[class*=uk-position-center-right]{top:calc(50% - var(--uk-position-margin-offset));--uk-position-translate-y:-50%;transform:translateY(var(--uk-position-translate-y))}.uk-position-center-left{left:0}.uk-position-center-right{right:0}.uk-position-center-vertical{left:0;right:0}.uk-position-center-left-out{right:100%;width:max-content}.uk-position-center-right-out{left:100%;width:max-content}.uk-position-bottom-center,.uk-position-center-horizontal,.uk-position-top-center{left:calc(50% - var(--uk-position-margin-offset));--uk-position-translate-x:-50%;transform:translate(var(--uk-position-translate-x));width:max-content}.uk-position-top-center{top:0}.uk-position-bottom-center{bottom:0}.uk-position-center-horizontal{top:0;bottom:0}.uk-position-cover{position:absolute;inset:0}.uk-position-small{margin:15px;--uk-position-margin-offset:15px}.uk-position-medium,.uk-position-large{margin:30px;--uk-position-margin-offset:30px}@media (min-width:1200px){.uk-position-large{margin:50px;--uk-position-margin-offset:50px}}.uk-position-relative{position:relative!important}.uk-position-absolute{position:absolute!important}.uk-position-fixed{position:fixed!important}.uk-position-sticky{position:sticky!important}.uk-position-z-index{z-index:1}.uk-position-z-index-zero{z-index:0}.uk-position-z-index-negative{z-index:-1}.uk-position-z-index-high{z-index:990}:where(.uk-transition-fade),:where([class*=uk-transition-scale]),:where([class*=uk-transition-slide]){--uk-position-translate-x:0;--uk-position-translate-y:0}.uk-transition-fade,[class*=uk-transition-scale],[class*=uk-transition-slide]{--uk-translate-x:0;--uk-translate-y:0;--uk-scale-x:1;--uk-scale-y:1;transform:translate(var(--uk-position-translate-x),var(--uk-position-translate-y)) translate(var(--uk-translate-x),var(--uk-translate-y)) scale(var(--uk-scale-x),var(--uk-scale-y));transition:.3s ease-out;transition-property:opacity,transform,filter;opacity:0}.uk-transition-active.uk-active .uk-transition-fade,.uk-transition-toggle:focus .uk-transition-fade,.uk-transition-toggle:focus-within .uk-transition-fade,.uk-transition-toggle:hover .uk-transition-fade{opacity:1}[class*=uk-transition-scale]{-webkit-backface-visibility:hidden}.uk-transition-scale-up{--uk-scale-x:1;--uk-scale-y:1}.uk-transition-scale-down{--uk-scale-x:1.03;--uk-scale-y:1.03}.uk-transition-active.uk-active .uk-transition-scale-up,.uk-transition-toggle:focus .uk-transition-scale-up,.uk-transition-toggle:focus-within .uk-transition-scale-up,.uk-transition-toggle:hover .uk-transition-scale-up{--uk-scale-x:1.03;--uk-scale-y:1.03;opacity:1}.uk-transition-active.uk-active .uk-transition-scale-down,.uk-transition-toggle:focus .uk-transition-scale-down,.uk-transition-toggle:focus-within .uk-transition-scale-down,.uk-transition-toggle:hover .uk-transition-scale-down{--uk-scale-x:1;--uk-scale-y:1;opacity:1}.uk-transition-slide-top{--uk-translate-y:-100%}.uk-transition-slide-bottom{--uk-translate-y:100%}.uk-transition-slide-left{--uk-translate-x:-100%}.uk-transition-slide-right{--uk-translate-x:100%}.uk-transition-slide-top-small{--uk-translate-y: -10px }.uk-transition-slide-bottom-small{--uk-translate-y:10px}.uk-transition-slide-left-small{--uk-translate-x: -10px }.uk-transition-slide-right-small{--uk-translate-x:10px}.uk-transition-slide-top-medium{--uk-translate-y: -50px }.uk-transition-slide-bottom-medium{--uk-translate-y:50px}.uk-transition-slide-left-medium{--uk-translate-x: -50px }.uk-transition-slide-right-medium{--uk-translate-x:50px}.uk-transition-active.uk-active [class*=uk-transition-slide],.uk-transition-toggle:focus [class*=uk-transition-slide],.uk-transition-toggle:focus-within [class*=uk-transition-slide],.uk-transition-toggle:hover [class*=uk-transition-slide]{--uk-translate-x:0;--uk-translate-y:0;opacity:1}.uk-transition-opaque{opacity:1}.uk-transition-slow{transition-duration:.7s}.uk-transition-disable,.uk-transition-disable *{transition:none!important}.uk-hidden,[hidden]{display:none!important}@media (min-width:640px){.uk-hidden\@s{display:none!important}}@media (min-width:960px){.uk-hidden\@m{display:none!important}}@media (min-width:1200px){.uk-hidden\@l{display:none!important}}@media (min-width:1600px){.uk-hidden\@xl{display:none!important}}@media (max-width:639px){.uk-visible\@s{display:none!important}}@media (max-width:959px){.uk-visible\@m{display:none!important}}@media (max-width:1199px){.uk-visible\@l{display:none!important}}@media (max-width:1599px){.uk-visible\@xl{display:none!important}}.uk-invisible{visibility:hidden!important}.uk-hidden-visually:not(:focus):not(:active):not(:focus-within),.uk-visible-toggle:not(:hover):not(:focus) .uk-hidden-hover:not(:focus-visible):not(:has(:focus-visible)){position:absolute!important;width:0!important;height:0!important;padding:0!important;border:0!important;margin:0!important;overflow:hidden!important}.uk-visible-toggle:not(:hover):not(:focus) .uk-invisible-hover:not(:focus-within){opacity:0!important}@media (hover:none){.uk-hidden-touch{display:none!important}}@media (hover){.uk-hidden-notouch{display:none!important}}.uk-card-primary.uk-card-body,.uk-card-primary>:not([class*=uk-card-media]),.uk-card-secondary.uk-card-body,.uk-card-secondary>:not([class*=uk-card-media]),.uk-light,.uk-offcanvas-bar,.uk-overlay-primary,.uk-section-primary:not(.uk-preserve-color),.uk-section-secondary:not(.uk-preserve-color),.uk-tile-primary:not(.uk-preserve-color),.uk-tile-secondary:not(.uk-preserve-color){color:#ffffffb3}.uk-card-primary.uk-card-body .uk-link,.uk-card-primary.uk-card-body a,.uk-card-primary>:not([class*=uk-card-media]) .uk-link,.uk-card-primary>:not([class*=uk-card-media]) a,.uk-card-secondary.uk-card-body .uk-link,.uk-card-secondary.uk-card-body a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link,.uk-card-secondary>:not([class*=uk-card-media]) a,.uk-light .uk-link,.uk-light a,.uk-offcanvas-bar .uk-link,.uk-offcanvas-bar a,.uk-overlay-primary .uk-link,.uk-overlay-primary a,.uk-section-primary:not(.uk-preserve-color) .uk-link,.uk-section-primary:not(.uk-preserve-color) a,.uk-section-secondary:not(.uk-preserve-color) .uk-link,.uk-section-secondary:not(.uk-preserve-color) a,.uk-tile-primary:not(.uk-preserve-color) .uk-link,.uk-tile-primary:not(.uk-preserve-color) a,.uk-tile-secondary:not(.uk-preserve-color) .uk-link,.uk-tile-secondary:not(.uk-preserve-color) a{color:#fff}.uk-card-primary.uk-card-body .uk-link-toggle:hover .uk-link,.uk-card-primary.uk-card-body .uk-link:hover,.uk-card-primary.uk-card-body a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-link-toggle:hover .uk-link,.uk-card-primary>:not([class*=uk-card-media]) .uk-link:hover,.uk-card-primary>:not([class*=uk-card-media]) a:hover,.uk-card-secondary.uk-card-body .uk-link-toggle:hover .uk-link,.uk-card-secondary.uk-card-body .uk-link:hover,.uk-card-secondary.uk-card-body a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link-toggle:hover .uk-link,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link:hover,.uk-card-secondary>:not([class*=uk-card-media]) a:hover,.uk-light .uk-link-toggle:hover .uk-link,.uk-light .uk-link:hover,.uk-light a:hover,.uk-offcanvas-bar .uk-link-toggle:hover .uk-link,.uk-offcanvas-bar .uk-link:hover,.uk-offcanvas-bar a:hover,.uk-overlay-primary .uk-link-toggle:hover .uk-link,.uk-overlay-primary .uk-link:hover,.uk-overlay-primary a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link,.uk-section-primary:not(.uk-preserve-color) .uk-link:hover,.uk-section-primary:not(.uk-preserve-color) a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link,.uk-section-secondary:not(.uk-preserve-color) .uk-link:hover,.uk-section-secondary:not(.uk-preserve-color) a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link,.uk-tile-primary:not(.uk-preserve-color) .uk-link:hover,.uk-tile-primary:not(.uk-preserve-color) a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link,.uk-tile-secondary:not(.uk-preserve-color) .uk-link:hover,.uk-tile-secondary:not(.uk-preserve-color) a:hover{color:#fff}.uk-card-primary.uk-card-body :not(pre)>code,.uk-card-primary.uk-card-body :not(pre)>kbd,.uk-card-primary.uk-card-body :not(pre)>samp,.uk-card-primary>:not([class*=uk-card-media]) :not(pre)>code,.uk-card-primary>:not([class*=uk-card-media]) :not(pre)>kbd,.uk-card-primary>:not([class*=uk-card-media]) :not(pre)>samp,.uk-card-secondary.uk-card-body :not(pre)>code,.uk-card-secondary.uk-card-body :not(pre)>kbd,.uk-card-secondary.uk-card-body :not(pre)>samp,.uk-card-secondary>:not([class*=uk-card-media]) :not(pre)>code,.uk-card-secondary>:not([class*=uk-card-media]) :not(pre)>kbd,.uk-card-secondary>:not([class*=uk-card-media]) :not(pre)>samp,.uk-light :not(pre)>code,.uk-light :not(pre)>kbd,.uk-light :not(pre)>samp,.uk-offcanvas-bar :not(pre)>code,.uk-offcanvas-bar :not(pre)>kbd,.uk-offcanvas-bar :not(pre)>samp,.uk-overlay-primary :not(pre)>code,.uk-overlay-primary :not(pre)>kbd,.uk-overlay-primary :not(pre)>samp,.uk-section-primary:not(.uk-preserve-color) :not(pre)>code,.uk-section-primary:not(.uk-preserve-color) :not(pre)>kbd,.uk-section-primary:not(.uk-preserve-color) :not(pre)>samp,.uk-section-secondary:not(.uk-preserve-color) :not(pre)>code,.uk-section-secondary:not(.uk-preserve-color) :not(pre)>kbd,.uk-section-secondary:not(.uk-preserve-color) :not(pre)>samp,.uk-tile-primary:not(.uk-preserve-color) :not(pre)>code,.uk-tile-primary:not(.uk-preserve-color) :not(pre)>kbd,.uk-tile-primary:not(.uk-preserve-color) :not(pre)>samp,.uk-tile-secondary:not(.uk-preserve-color) :not(pre)>code,.uk-tile-secondary:not(.uk-preserve-color) :not(pre)>kbd,.uk-tile-secondary:not(.uk-preserve-color) :not(pre)>samp{color:#ffffffb3;background-color:#ffffff1a}.uk-card-primary.uk-card-body em,.uk-card-primary>:not([class*=uk-card-media]) em,.uk-card-secondary.uk-card-body em,.uk-card-secondary>:not([class*=uk-card-media]) em,.uk-light em,.uk-offcanvas-bar em,.uk-overlay-primary em,.uk-section-primary:not(.uk-preserve-color) em,.uk-section-secondary:not(.uk-preserve-color) em,.uk-tile-primary:not(.uk-preserve-color) em,.uk-tile-secondary:not(.uk-preserve-color) em{color:#fff}.uk-card-primary.uk-card-body .uk-h1,.uk-card-primary.uk-card-body .uk-h2,.uk-card-primary.uk-card-body .uk-h3,.uk-card-primary.uk-card-body .uk-h4,.uk-card-primary.uk-card-body .uk-h5,.uk-card-primary.uk-card-body .uk-h6,.uk-card-primary.uk-card-body .uk-heading-2xlarge,.uk-card-primary.uk-card-body .uk-heading-3xlarge,.uk-card-primary.uk-card-body .uk-heading-large,.uk-card-primary.uk-card-body .uk-heading-medium,.uk-card-primary.uk-card-body .uk-heading-small,.uk-card-primary.uk-card-body .uk-heading-xlarge,.uk-card-primary.uk-card-body h1,.uk-card-primary.uk-card-body h2,.uk-card-primary.uk-card-body h3,.uk-card-primary.uk-card-body h4,.uk-card-primary.uk-card-body h5,.uk-card-primary.uk-card-body h6,.uk-card-primary>:not([class*=uk-card-media]) .uk-h1,.uk-card-primary>:not([class*=uk-card-media]) .uk-h2,.uk-card-primary>:not([class*=uk-card-media]) .uk-h3,.uk-card-primary>:not([class*=uk-card-media]) .uk-h4,.uk-card-primary>:not([class*=uk-card-media]) .uk-h5,.uk-card-primary>:not([class*=uk-card-media]) .uk-h6,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-2xlarge,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-3xlarge,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-large,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-medium,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-small,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-xlarge,.uk-card-primary>:not([class*=uk-card-media]) h1,.uk-card-primary>:not([class*=uk-card-media]) h2,.uk-card-primary>:not([class*=uk-card-media]) h3,.uk-card-primary>:not([class*=uk-card-media]) h4,.uk-card-primary>:not([class*=uk-card-media]) h5,.uk-card-primary>:not([class*=uk-card-media]) h6,.uk-card-secondary.uk-card-body .uk-h1,.uk-card-secondary.uk-card-body .uk-h2,.uk-card-secondary.uk-card-body .uk-h3,.uk-card-secondary.uk-card-body .uk-h4,.uk-card-secondary.uk-card-body .uk-h5,.uk-card-secondary.uk-card-body .uk-h6,.uk-card-secondary.uk-card-body .uk-heading-2xlarge,.uk-card-secondary.uk-card-body .uk-heading-3xlarge,.uk-card-secondary.uk-card-body .uk-heading-large,.uk-card-secondary.uk-card-body .uk-heading-medium,.uk-card-secondary.uk-card-body .uk-heading-small,.uk-card-secondary.uk-card-body .uk-heading-xlarge,.uk-card-secondary.uk-card-body h1,.uk-card-secondary.uk-card-body h2,.uk-card-secondary.uk-card-body h3,.uk-card-secondary.uk-card-body h4,.uk-card-secondary.uk-card-body h5,.uk-card-secondary.uk-card-body h6,.uk-card-secondary>:not([class*=uk-card-media]) .uk-h1,.uk-card-secondary>:not([class*=uk-card-media]) .uk-h2,.uk-card-secondary>:not([class*=uk-card-media]) .uk-h3,.uk-card-secondary>:not([class*=uk-card-media]) .uk-h4,.uk-card-secondary>:not([class*=uk-card-media]) .uk-h5,.uk-card-secondary>:not([class*=uk-card-media]) .uk-h6,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-2xlarge,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-3xlarge,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-large,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-medium,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-small,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-xlarge,.uk-card-secondary>:not([class*=uk-card-media]) h1,.uk-card-secondary>:not([class*=uk-card-media]) h2,.uk-card-secondary>:not([class*=uk-card-media]) h3,.uk-card-secondary>:not([class*=uk-card-media]) h4,.uk-card-secondary>:not([class*=uk-card-media]) h5,.uk-card-secondary>:not([class*=uk-card-media]) h6,.uk-light .uk-h1,.uk-light .uk-h2,.uk-light .uk-h3,.uk-light .uk-h4,.uk-light .uk-h5,.uk-light .uk-h6,.uk-light .uk-heading-2xlarge,.uk-light .uk-heading-3xlarge,.uk-light .uk-heading-large,.uk-light .uk-heading-medium,.uk-light .uk-heading-small,.uk-light .uk-heading-xlarge,.uk-light h1,.uk-light h2,.uk-light h3,.uk-light h4,.uk-light h5,.uk-light h6,.uk-offcanvas-bar .uk-h1,.uk-offcanvas-bar .uk-h2,.uk-offcanvas-bar .uk-h3,.uk-offcanvas-bar .uk-h4,.uk-offcanvas-bar .uk-h5,.uk-offcanvas-bar .uk-h6,.uk-offcanvas-bar .uk-heading-2xlarge,.uk-offcanvas-bar .uk-heading-3xlarge,.uk-offcanvas-bar .uk-heading-large,.uk-offcanvas-bar .uk-heading-medium,.uk-offcanvas-bar .uk-heading-small,.uk-offcanvas-bar .uk-heading-xlarge,.uk-offcanvas-bar h1,.uk-offcanvas-bar h2,.uk-offcanvas-bar h3,.uk-offcanvas-bar h4,.uk-offcanvas-bar h5,.uk-offcanvas-bar h6,.uk-overlay-primary .uk-h1,.uk-overlay-primary .uk-h2,.uk-overlay-primary .uk-h3,.uk-overlay-primary .uk-h4,.uk-overlay-primary .uk-h5,.uk-overlay-primary .uk-h6,.uk-overlay-primary .uk-heading-2xlarge,.uk-overlay-primary .uk-heading-3xlarge,.uk-overlay-primary .uk-heading-large,.uk-overlay-primary .uk-heading-medium,.uk-overlay-primary .uk-heading-small,.uk-overlay-primary .uk-heading-xlarge,.uk-overlay-primary h1,.uk-overlay-primary h2,.uk-overlay-primary h3,.uk-overlay-primary h4,.uk-overlay-primary h5,.uk-overlay-primary h6,.uk-section-primary:not(.uk-preserve-color) .uk-h1,.uk-section-primary:not(.uk-preserve-color) .uk-h2,.uk-section-primary:not(.uk-preserve-color) .uk-h3,.uk-section-primary:not(.uk-preserve-color) .uk-h4,.uk-section-primary:not(.uk-preserve-color) .uk-h5,.uk-section-primary:not(.uk-preserve-color) .uk-h6,.uk-section-primary:not(.uk-preserve-color) .uk-heading-2xlarge,.uk-section-primary:not(.uk-preserve-color) .uk-heading-3xlarge,.uk-section-primary:not(.uk-preserve-color) .uk-heading-large,.uk-section-primary:not(.uk-preserve-color) .uk-heading-medium,.uk-section-primary:not(.uk-preserve-color) .uk-heading-small,.uk-section-primary:not(.uk-preserve-color) .uk-heading-xlarge,.uk-section-primary:not(.uk-preserve-color) h1,.uk-section-primary:not(.uk-preserve-color) h2,.uk-section-primary:not(.uk-preserve-color) h3,.uk-section-primary:not(.uk-preserve-color) h4,.uk-section-primary:not(.uk-preserve-color) h5,.uk-section-primary:not(.uk-preserve-color) h6,.uk-section-secondary:not(.uk-preserve-color) .uk-h1,.uk-section-secondary:not(.uk-preserve-color) .uk-h2,.uk-section-secondary:not(.uk-preserve-color) .uk-h3,.uk-section-secondary:not(.uk-preserve-color) .uk-h4,.uk-section-secondary:not(.uk-preserve-color) .uk-h5,.uk-section-secondary:not(.uk-preserve-color) .uk-h6,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-2xlarge,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-3xlarge,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-large,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-medium,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-small,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-xlarge,.uk-section-secondary:not(.uk-preserve-color) h1,.uk-section-secondary:not(.uk-preserve-color) h2,.uk-section-secondary:not(.uk-preserve-color) h3,.uk-section-secondary:not(.uk-preserve-color) h4,.uk-section-secondary:not(.uk-preserve-color) h5,.uk-section-secondary:not(.uk-preserve-color) h6,.uk-tile-primary:not(.uk-preserve-color) .uk-h1,.uk-tile-primary:not(.uk-preserve-color) .uk-h2,.uk-tile-primary:not(.uk-preserve-color) .uk-h3,.uk-tile-primary:not(.uk-preserve-color) .uk-h4,.uk-tile-primary:not(.uk-preserve-color) .uk-h5,.uk-tile-primary:not(.uk-preserve-color) .uk-h6,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-2xlarge,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-3xlarge,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-large,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-medium,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-small,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-xlarge,.uk-tile-primary:not(.uk-preserve-color) h1,.uk-tile-primary:not(.uk-preserve-color) h2,.uk-tile-primary:not(.uk-preserve-color) h3,.uk-tile-primary:not(.uk-preserve-color) h4,.uk-tile-primary:not(.uk-preserve-color) h5,.uk-tile-primary:not(.uk-preserve-color) h6,.uk-tile-secondary:not(.uk-preserve-color) .uk-h1,.uk-tile-secondary:not(.uk-preserve-color) .uk-h2,.uk-tile-secondary:not(.uk-preserve-color) .uk-h3,.uk-tile-secondary:not(.uk-preserve-color) .uk-h4,.uk-tile-secondary:not(.uk-preserve-color) .uk-h5,.uk-tile-secondary:not(.uk-preserve-color) .uk-h6,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-2xlarge,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-3xlarge,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-large,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-medium,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-small,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-xlarge,.uk-tile-secondary:not(.uk-preserve-color) h1,.uk-tile-secondary:not(.uk-preserve-color) h2,.uk-tile-secondary:not(.uk-preserve-color) h3,.uk-tile-secondary:not(.uk-preserve-color) h4,.uk-tile-secondary:not(.uk-preserve-color) h5,.uk-tile-secondary:not(.uk-preserve-color) h6{color:#fff}.uk-card-primary.uk-card-body blockquote,.uk-card-primary>:not([class*=uk-card-media]) blockquote,.uk-card-secondary.uk-card-body blockquote,.uk-card-secondary>:not([class*=uk-card-media]) blockquote,.uk-light blockquote,.uk-offcanvas-bar blockquote,.uk-overlay-primary blockquote,.uk-section-primary:not(.uk-preserve-color) blockquote,.uk-section-secondary:not(.uk-preserve-color) blockquote,.uk-tile-primary:not(.uk-preserve-color) blockquote,.uk-tile-secondary:not(.uk-preserve-color) blockquote{color:#fff}.uk-card-primary.uk-card-body blockquote footer,.uk-card-primary>:not([class*=uk-card-media]) blockquote footer,.uk-card-secondary.uk-card-body blockquote footer,.uk-card-secondary>:not([class*=uk-card-media]) blockquote footer,.uk-light blockquote footer,.uk-offcanvas-bar blockquote footer,.uk-overlay-primary blockquote footer,.uk-section-primary:not(.uk-preserve-color) blockquote footer,.uk-section-secondary:not(.uk-preserve-color) blockquote footer,.uk-tile-primary:not(.uk-preserve-color) blockquote footer,.uk-tile-secondary:not(.uk-preserve-color) blockquote footer{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-hr,.uk-card-primary.uk-card-body hr,.uk-card-primary>:not([class*=uk-card-media]) .uk-hr,.uk-card-primary>:not([class*=uk-card-media]) hr,.uk-card-secondary.uk-card-body .uk-hr,.uk-card-secondary.uk-card-body hr,.uk-card-secondary>:not([class*=uk-card-media]) .uk-hr,.uk-card-secondary>:not([class*=uk-card-media]) hr,.uk-light .uk-hr,.uk-light hr,.uk-offcanvas-bar .uk-hr,.uk-offcanvas-bar hr,.uk-overlay-primary .uk-hr,.uk-overlay-primary hr,.uk-section-primary:not(.uk-preserve-color) .uk-hr,.uk-section-primary:not(.uk-preserve-color) hr,.uk-section-secondary:not(.uk-preserve-color) .uk-hr,.uk-section-secondary:not(.uk-preserve-color) hr,.uk-tile-primary:not(.uk-preserve-color) .uk-hr,.uk-tile-primary:not(.uk-preserve-color) hr,.uk-tile-secondary:not(.uk-preserve-color) .uk-hr,.uk-tile-secondary:not(.uk-preserve-color) hr{border-top-color:#fff3}.uk-card-primary.uk-card-body :focus-visible,.uk-card-primary>:not([class*=uk-card-media]) :focus-visible,.uk-card-secondary.uk-card-body :focus-visible,.uk-card-secondary>:not([class*=uk-card-media]) :focus-visible,.uk-light :focus-visible,.uk-offcanvas-bar :focus-visible,.uk-overlay-primary :focus-visible,.uk-section-primary:not(.uk-preserve-color) :focus-visible,.uk-section-secondary:not(.uk-preserve-color) :focus-visible,.uk-tile-primary:not(.uk-preserve-color) :focus-visible,.uk-tile-secondary:not(.uk-preserve-color) :focus-visible{outline-color:#fff}.uk-card-primary.uk-card-body .uk-link-muted a,.uk-card-primary.uk-card-body a.uk-link-muted,.uk-card-primary>:not([class*=uk-card-media]) .uk-link-muted a,.uk-card-primary>:not([class*=uk-card-media]) a.uk-link-muted,.uk-card-secondary.uk-card-body .uk-link-muted a,.uk-card-secondary.uk-card-body a.uk-link-muted,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link-muted a,.uk-card-secondary>:not([class*=uk-card-media]) a.uk-link-muted,.uk-light .uk-link-muted a,.uk-light a.uk-link-muted,.uk-offcanvas-bar .uk-link-muted a,.uk-offcanvas-bar a.uk-link-muted,.uk-overlay-primary .uk-link-muted a,.uk-overlay-primary a.uk-link-muted,.uk-section-primary:not(.uk-preserve-color) .uk-link-muted a,.uk-section-primary:not(.uk-preserve-color) a.uk-link-muted,.uk-section-secondary:not(.uk-preserve-color) .uk-link-muted a,.uk-section-secondary:not(.uk-preserve-color) a.uk-link-muted,.uk-tile-primary:not(.uk-preserve-color) .uk-link-muted a,.uk-tile-primary:not(.uk-preserve-color) a.uk-link-muted,.uk-tile-secondary:not(.uk-preserve-color) .uk-link-muted a,.uk-tile-secondary:not(.uk-preserve-color) a.uk-link-muted{color:#ffffff80}.uk-card-primary.uk-card-body .uk-link-muted a:hover,.uk-card-primary.uk-card-body .uk-link-toggle:hover .uk-link-muted,.uk-card-primary.uk-card-body a.uk-link-muted:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-link-muted a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-link-toggle:hover .uk-link-muted,.uk-card-primary>:not([class*=uk-card-media]) a.uk-link-muted:hover,.uk-card-secondary.uk-card-body .uk-link-muted a:hover,.uk-card-secondary.uk-card-body .uk-link-toggle:hover .uk-link-muted,.uk-card-secondary.uk-card-body a.uk-link-muted:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link-muted a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link-toggle:hover .uk-link-muted,.uk-card-secondary>:not([class*=uk-card-media]) a.uk-link-muted:hover,.uk-light .uk-link-muted a:hover,.uk-light .uk-link-toggle:hover .uk-link-muted,.uk-light a.uk-link-muted:hover,.uk-offcanvas-bar .uk-link-muted a:hover,.uk-offcanvas-bar .uk-link-toggle:hover .uk-link-muted,.uk-offcanvas-bar a.uk-link-muted:hover,.uk-overlay-primary .uk-link-muted a:hover,.uk-overlay-primary .uk-link-toggle:hover .uk-link-muted,.uk-overlay-primary a.uk-link-muted:hover,.uk-section-primary:not(.uk-preserve-color) .uk-link-muted a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-muted,.uk-section-primary:not(.uk-preserve-color) a.uk-link-muted:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-link-muted a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-muted,.uk-section-secondary:not(.uk-preserve-color) a.uk-link-muted:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-link-muted a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-muted,.uk-tile-primary:not(.uk-preserve-color) a.uk-link-muted:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-link-muted a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-muted,.uk-tile-secondary:not(.uk-preserve-color) a.uk-link-muted:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-link-text a:hover,.uk-card-primary.uk-card-body .uk-link-toggle:hover .uk-link-text,.uk-card-primary.uk-card-body a.uk-link-text:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-link-text a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-link-toggle:hover .uk-link-text,.uk-card-primary>:not([class*=uk-card-media]) a.uk-link-text:hover,.uk-card-secondary.uk-card-body .uk-link-text a:hover,.uk-card-secondary.uk-card-body .uk-link-toggle:hover .uk-link-text,.uk-card-secondary.uk-card-body a.uk-link-text:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link-text a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link-toggle:hover .uk-link-text,.uk-card-secondary>:not([class*=uk-card-media]) a.uk-link-text:hover,.uk-light .uk-link-text a:hover,.uk-light .uk-link-toggle:hover .uk-link-text,.uk-light a.uk-link-text:hover,.uk-offcanvas-bar .uk-link-text a:hover,.uk-offcanvas-bar .uk-link-toggle:hover .uk-link-text,.uk-offcanvas-bar a.uk-link-text:hover,.uk-overlay-primary .uk-link-text a:hover,.uk-overlay-primary .uk-link-toggle:hover .uk-link-text,.uk-overlay-primary a.uk-link-text:hover,.uk-section-primary:not(.uk-preserve-color) .uk-link-text a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-text,.uk-section-primary:not(.uk-preserve-color) a.uk-link-text:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-link-text a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-text,.uk-section-secondary:not(.uk-preserve-color) a.uk-link-text:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-link-text a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-text,.uk-tile-primary:not(.uk-preserve-color) a.uk-link-text:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-link-text a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-text,.uk-tile-secondary:not(.uk-preserve-color) a.uk-link-text:hover{color:#ffffff80}.uk-card-primary.uk-card-body .uk-link-heading a:hover,.uk-card-primary.uk-card-body .uk-link-toggle:hover .uk-link-heading,.uk-card-primary.uk-card-body a.uk-link-heading:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-link-heading a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-link-toggle:hover .uk-link-heading,.uk-card-primary>:not([class*=uk-card-media]) a.uk-link-heading:hover,.uk-card-secondary.uk-card-body .uk-link-heading a:hover,.uk-card-secondary.uk-card-body .uk-link-toggle:hover .uk-link-heading,.uk-card-secondary.uk-card-body a.uk-link-heading:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link-heading a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link-toggle:hover .uk-link-heading,.uk-card-secondary>:not([class*=uk-card-media]) a.uk-link-heading:hover,.uk-light .uk-link-heading a:hover,.uk-light .uk-link-toggle:hover .uk-link-heading,.uk-light a.uk-link-heading:hover,.uk-offcanvas-bar .uk-link-heading a:hover,.uk-offcanvas-bar .uk-link-toggle:hover .uk-link-heading,.uk-offcanvas-bar a.uk-link-heading:hover,.uk-overlay-primary .uk-link-heading a:hover,.uk-overlay-primary .uk-link-toggle:hover .uk-link-heading,.uk-overlay-primary a.uk-link-heading:hover,.uk-section-primary:not(.uk-preserve-color) .uk-link-heading a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-heading,.uk-section-primary:not(.uk-preserve-color) a.uk-link-heading:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-link-heading a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-heading,.uk-section-secondary:not(.uk-preserve-color) a.uk-link-heading:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-link-heading a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-heading,.uk-tile-primary:not(.uk-preserve-color) a.uk-link-heading:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-link-heading a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-heading,.uk-tile-secondary:not(.uk-preserve-color) a.uk-link-heading:hover{color:#fff}.uk-card-primary.uk-card-body .uk-heading-divider,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-divider,.uk-card-secondary.uk-card-body .uk-heading-divider,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-divider,.uk-light .uk-heading-divider,.uk-offcanvas-bar .uk-heading-divider,.uk-overlay-primary .uk-heading-divider,.uk-section-primary:not(.uk-preserve-color) .uk-heading-divider,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-divider,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-divider,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-divider{border-bottom-color:#fff3}.uk-card-primary.uk-card-body .uk-heading-bullet:before,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-bullet:before,.uk-card-secondary.uk-card-body .uk-heading-bullet:before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-bullet:before,.uk-light .uk-heading-bullet:before,.uk-offcanvas-bar .uk-heading-bullet:before,.uk-overlay-primary .uk-heading-bullet:before,.uk-section-primary:not(.uk-preserve-color) .uk-heading-bullet:before,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-bullet:before,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-bullet:before,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-bullet:before{border-left-color:#fff3}.uk-card-primary.uk-card-body .uk-heading-line>:after,.uk-card-primary.uk-card-body .uk-heading-line>:before,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-line>:after,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-line>:before,.uk-card-secondary.uk-card-body .uk-heading-line>:after,.uk-card-secondary.uk-card-body .uk-heading-line>:before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-line>:after,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-line>:before,.uk-light .uk-heading-line>:after,.uk-light .uk-heading-line>:before,.uk-offcanvas-bar .uk-heading-line>:after,.uk-offcanvas-bar .uk-heading-line>:before,.uk-overlay-primary .uk-heading-line>:after,.uk-overlay-primary .uk-heading-line>:before,.uk-section-primary:not(.uk-preserve-color) .uk-heading-line>:after,.uk-section-primary:not(.uk-preserve-color) .uk-heading-line>:before,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-line>:after,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-line>:before,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-line>:after,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-line>:before,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-line>:after,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-line>:before{border-bottom-color:#fff3}.uk-card-primary.uk-card-body .uk-divider-icon,.uk-card-primary>:not([class*=uk-card-media]) .uk-divider-icon,.uk-card-secondary.uk-card-body .uk-divider-icon,.uk-card-secondary>:not([class*=uk-card-media]) .uk-divider-icon,.uk-light .uk-divider-icon,.uk-offcanvas-bar .uk-divider-icon,.uk-overlay-primary .uk-divider-icon,.uk-section-primary:not(.uk-preserve-color) .uk-divider-icon,.uk-section-secondary:not(.uk-preserve-color) .uk-divider-icon,.uk-tile-primary:not(.uk-preserve-color) .uk-divider-icon,.uk-tile-secondary:not(.uk-preserve-color) .uk-divider-icon{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22none%22%20stroke%3D%22rgba%28255,%20255,%20255,%200.2%29%22%20stroke-width%3D%222%22%20cx%3D%2210%22%20cy%3D%2210%22%20r%3D%227%22%20%2F%3E%0A%3C%2Fsvg%3E%0A)}.uk-card-primary.uk-card-body .uk-divider-icon:after,.uk-card-primary.uk-card-body .uk-divider-icon:before,.uk-card-primary>:not([class*=uk-card-media]) .uk-divider-icon:after,.uk-card-primary>:not([class*=uk-card-media]) .uk-divider-icon:before,.uk-card-secondary.uk-card-body .uk-divider-icon:after,.uk-card-secondary.uk-card-body .uk-divider-icon:before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-divider-icon:after,.uk-card-secondary>:not([class*=uk-card-media]) .uk-divider-icon:before,.uk-light .uk-divider-icon:after,.uk-light .uk-divider-icon:before,.uk-offcanvas-bar .uk-divider-icon:after,.uk-offcanvas-bar .uk-divider-icon:before,.uk-overlay-primary .uk-divider-icon:after,.uk-overlay-primary .uk-divider-icon:before,.uk-section-primary:not(.uk-preserve-color) .uk-divider-icon:after,.uk-section-primary:not(.uk-preserve-color) .uk-divider-icon:before,.uk-section-secondary:not(.uk-preserve-color) .uk-divider-icon:after,.uk-section-secondary:not(.uk-preserve-color) .uk-divider-icon:before,.uk-tile-primary:not(.uk-preserve-color) .uk-divider-icon:after,.uk-tile-primary:not(.uk-preserve-color) .uk-divider-icon:before,.uk-tile-secondary:not(.uk-preserve-color) .uk-divider-icon:after,.uk-tile-secondary:not(.uk-preserve-color) .uk-divider-icon:before{border-bottom-color:#fff3}.uk-card-primary.uk-card-body .uk-divider-small:after,.uk-card-primary>:not([class*=uk-card-media]) .uk-divider-small:after,.uk-card-secondary.uk-card-body .uk-divider-small:after,.uk-card-secondary>:not([class*=uk-card-media]) .uk-divider-small:after,.uk-light .uk-divider-small:after,.uk-offcanvas-bar .uk-divider-small:after,.uk-overlay-primary .uk-divider-small:after,.uk-section-primary:not(.uk-preserve-color) .uk-divider-small:after,.uk-section-secondary:not(.uk-preserve-color) .uk-divider-small:after,.uk-tile-primary:not(.uk-preserve-color) .uk-divider-small:after,.uk-tile-secondary:not(.uk-preserve-color) .uk-divider-small:after{border-top-color:#fff3}.uk-card-primary.uk-card-body .uk-divider-vertical,.uk-card-primary>:not([class*=uk-card-media]) .uk-divider-vertical,.uk-card-secondary.uk-card-body .uk-divider-vertical,.uk-card-secondary>:not([class*=uk-card-media]) .uk-divider-vertical,.uk-light .uk-divider-vertical,.uk-offcanvas-bar .uk-divider-vertical,.uk-overlay-primary .uk-divider-vertical,.uk-section-primary:not(.uk-preserve-color) .uk-divider-vertical,.uk-section-secondary:not(.uk-preserve-color) .uk-divider-vertical,.uk-tile-primary:not(.uk-preserve-color) .uk-divider-vertical,.uk-tile-secondary:not(.uk-preserve-color) .uk-divider-vertical{border-left-color:#fff3}.uk-card-primary.uk-card-body .uk-list-muted>:before,.uk-card-primary>:not([class*=uk-card-media]) .uk-list-muted>:before,.uk-card-secondary.uk-card-body .uk-list-muted>:before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-list-muted>:before,.uk-light .uk-list-muted>:before,.uk-offcanvas-bar .uk-list-muted>:before,.uk-overlay-primary .uk-list-muted>:before,.uk-section-primary:not(.uk-preserve-color) .uk-list-muted>:before,.uk-section-secondary:not(.uk-preserve-color) .uk-list-muted>:before,.uk-tile-primary:not(.uk-preserve-color) .uk-list-muted>:before,.uk-tile-secondary:not(.uk-preserve-color) .uk-list-muted>:before{color:#ffffff80!important}.uk-card-primary.uk-card-body .uk-list-emphasis>:before,.uk-card-primary>:not([class*=uk-card-media]) .uk-list-emphasis>:before,.uk-card-secondary.uk-card-body .uk-list-emphasis>:before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-list-emphasis>:before,.uk-light .uk-list-emphasis>:before,.uk-offcanvas-bar .uk-list-emphasis>:before,.uk-overlay-primary .uk-list-emphasis>:before,.uk-section-primary:not(.uk-preserve-color) .uk-list-emphasis>:before,.uk-section-secondary:not(.uk-preserve-color) .uk-list-emphasis>:before,.uk-tile-primary:not(.uk-preserve-color) .uk-list-emphasis>:before,.uk-tile-secondary:not(.uk-preserve-color) .uk-list-emphasis>:before{color:#fff!important}.uk-card-primary.uk-card-body .uk-list-primary>:before,.uk-card-primary>:not([class*=uk-card-media]) .uk-list-primary>:before,.uk-card-secondary.uk-card-body .uk-list-primary>:before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-list-primary>:before,.uk-light .uk-list-primary>:before,.uk-offcanvas-bar .uk-list-primary>:before,.uk-overlay-primary .uk-list-primary>:before,.uk-section-primary:not(.uk-preserve-color) .uk-list-primary>:before,.uk-section-secondary:not(.uk-preserve-color) .uk-list-primary>:before,.uk-tile-primary:not(.uk-preserve-color) .uk-list-primary>:before,.uk-tile-secondary:not(.uk-preserve-color) .uk-list-primary>:before{color:#fff!important}.uk-card-primary.uk-card-body .uk-list-secondary>:before,.uk-card-primary>:not([class*=uk-card-media]) .uk-list-secondary>:before,.uk-card-secondary.uk-card-body .uk-list-secondary>:before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-list-secondary>:before,.uk-light .uk-list-secondary>:before,.uk-offcanvas-bar .uk-list-secondary>:before,.uk-overlay-primary .uk-list-secondary>:before,.uk-section-primary:not(.uk-preserve-color) .uk-list-secondary>:before,.uk-section-secondary:not(.uk-preserve-color) .uk-list-secondary>:before,.uk-tile-primary:not(.uk-preserve-color) .uk-list-secondary>:before,.uk-tile-secondary:not(.uk-preserve-color) .uk-list-secondary>:before{color:#fff!important}.uk-card-primary.uk-card-body .uk-list-bullet>:before,.uk-card-primary>:not([class*=uk-card-media]) .uk-list-bullet>:before,.uk-card-secondary.uk-card-body .uk-list-bullet>:before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-list-bullet>:before,.uk-light .uk-list-bullet>:before,.uk-offcanvas-bar .uk-list-bullet>:before,.uk-overlay-primary .uk-list-bullet>:before,.uk-section-primary:not(.uk-preserve-color) .uk-list-bullet>:before,.uk-section-secondary:not(.uk-preserve-color) .uk-list-bullet>:before,.uk-tile-primary:not(.uk-preserve-color) .uk-list-bullet>:before,.uk-tile-secondary:not(.uk-preserve-color) .uk-list-bullet>:before{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%226%22%20height%3D%226%22%20viewBox%3D%220%200%206%206%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22rgba%28255,%20255,%20255,%200.7%29%22%20cx%3D%223%22%20cy%3D%223%22%20r%3D%223%22%20%2F%3E%0A%3C%2Fsvg%3E)}.uk-card-primary.uk-card-body .uk-list-divider>:nth-child(n+2),.uk-card-primary>:not([class*=uk-card-media]) .uk-list-divider>:nth-child(n+2),.uk-card-secondary.uk-card-body .uk-list-divider>:nth-child(n+2),.uk-card-secondary>:not([class*=uk-card-media]) .uk-list-divider>:nth-child(n+2),.uk-light .uk-list-divider>:nth-child(n+2),.uk-offcanvas-bar .uk-list-divider>:nth-child(n+2),.uk-overlay-primary .uk-list-divider>:nth-child(n+2),.uk-section-primary:not(.uk-preserve-color) .uk-list-divider>:nth-child(n+2),.uk-section-secondary:not(.uk-preserve-color) .uk-list-divider>:nth-child(n+2),.uk-tile-primary:not(.uk-preserve-color) .uk-list-divider>:nth-child(n+2),.uk-tile-secondary:not(.uk-preserve-color) .uk-list-divider>:nth-child(n+2){border-top-color:#fff3}.uk-card-primary.uk-card-body .uk-list-striped>:nth-of-type(odd),.uk-card-primary>:not([class*=uk-card-media]) .uk-list-striped>:nth-of-type(odd),.uk-card-secondary.uk-card-body .uk-list-striped>:nth-of-type(odd),.uk-card-secondary>:not([class*=uk-card-media]) .uk-list-striped>:nth-of-type(odd),.uk-light .uk-list-striped>:nth-of-type(odd),.uk-offcanvas-bar .uk-list-striped>:nth-of-type(odd),.uk-overlay-primary .uk-list-striped>:nth-of-type(odd),.uk-section-primary:not(.uk-preserve-color) .uk-list-striped>:nth-of-type(odd),.uk-section-secondary:not(.uk-preserve-color) .uk-list-striped>:nth-of-type(odd),.uk-tile-primary:not(.uk-preserve-color) .uk-list-striped>:nth-of-type(odd),.uk-tile-secondary:not(.uk-preserve-color) .uk-list-striped>:nth-of-type(odd){border-top-color:#fff3;border-bottom-color:#fff3}.uk-card-primary.uk-card-body .uk-list-striped>:nth-of-type(odd),.uk-card-primary>:not([class*=uk-card-media]) .uk-list-striped>:nth-of-type(odd),.uk-card-secondary.uk-card-body .uk-list-striped>:nth-of-type(odd),.uk-card-secondary>:not([class*=uk-card-media]) .uk-list-striped>:nth-of-type(odd),.uk-light .uk-list-striped>:nth-of-type(odd),.uk-offcanvas-bar .uk-list-striped>:nth-of-type(odd),.uk-overlay-primary .uk-list-striped>:nth-of-type(odd),.uk-section-primary:not(.uk-preserve-color) .uk-list-striped>:nth-of-type(odd),.uk-section-secondary:not(.uk-preserve-color) .uk-list-striped>:nth-of-type(odd),.uk-tile-primary:not(.uk-preserve-color) .uk-list-striped>:nth-of-type(odd),.uk-tile-secondary:not(.uk-preserve-color) .uk-list-striped>:nth-of-type(odd){background-color:#ffffff1a}.uk-card-primary.uk-card-body .uk-table th,.uk-card-primary>:not([class*=uk-card-media]) .uk-table th,.uk-card-secondary.uk-card-body .uk-table th,.uk-card-secondary>:not([class*=uk-card-media]) .uk-table th,.uk-light .uk-table th,.uk-offcanvas-bar .uk-table th,.uk-overlay-primary .uk-table th,.uk-section-primary:not(.uk-preserve-color) .uk-table th,.uk-section-secondary:not(.uk-preserve-color) .uk-table th,.uk-tile-primary:not(.uk-preserve-color) .uk-table th,.uk-tile-secondary:not(.uk-preserve-color) .uk-table th{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-table caption,.uk-card-primary>:not([class*=uk-card-media]) .uk-table caption,.uk-card-secondary.uk-card-body .uk-table caption,.uk-card-secondary>:not([class*=uk-card-media]) .uk-table caption,.uk-light .uk-table caption,.uk-offcanvas-bar .uk-table caption,.uk-overlay-primary .uk-table caption,.uk-section-primary:not(.uk-preserve-color) .uk-table caption,.uk-section-secondary:not(.uk-preserve-color) .uk-table caption,.uk-tile-primary:not(.uk-preserve-color) .uk-table caption,.uk-tile-secondary:not(.uk-preserve-color) .uk-table caption{color:#ffffff80}.uk-card-primary.uk-card-body .uk-table tbody tr.uk-active,.uk-card-primary.uk-card-body .uk-table>tr.uk-active,.uk-card-primary>:not([class*=uk-card-media]) .uk-table tbody tr.uk-active,.uk-card-primary>:not([class*=uk-card-media]) .uk-table>tr.uk-active,.uk-card-secondary.uk-card-body .uk-table tbody tr.uk-active,.uk-card-secondary.uk-card-body .uk-table>tr.uk-active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-table tbody tr.uk-active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-table>tr.uk-active,.uk-light .uk-table tbody tr.uk-active,.uk-light .uk-table>tr.uk-active,.uk-offcanvas-bar .uk-table tbody tr.uk-active,.uk-offcanvas-bar .uk-table>tr.uk-active,.uk-overlay-primary .uk-table tbody tr.uk-active,.uk-overlay-primary .uk-table>tr.uk-active,.uk-section-primary:not(.uk-preserve-color) .uk-table tbody tr.uk-active,.uk-section-primary:not(.uk-preserve-color) .uk-table>tr.uk-active,.uk-section-secondary:not(.uk-preserve-color) .uk-table tbody tr.uk-active,.uk-section-secondary:not(.uk-preserve-color) .uk-table>tr.uk-active,.uk-tile-primary:not(.uk-preserve-color) .uk-table tbody tr.uk-active,.uk-tile-primary:not(.uk-preserve-color) .uk-table>tr.uk-active,.uk-tile-secondary:not(.uk-preserve-color) .uk-table tbody tr.uk-active,.uk-tile-secondary:not(.uk-preserve-color) .uk-table>tr.uk-active{background:#ffffff14}.uk-card-primary.uk-card-body .uk-table-divider>:first-child>tr:not(:first-child),.uk-card-primary.uk-card-body .uk-table-divider>:not(:first-child)>tr,.uk-card-primary.uk-card-body .uk-table-divider>tr:not(:first-child),.uk-card-primary>:not([class*=uk-card-media]) .uk-table-divider>:first-child>tr:not(:first-child),.uk-card-primary>:not([class*=uk-card-media]) .uk-table-divider>:not(:first-child)>tr,.uk-card-primary>:not([class*=uk-card-media]) .uk-table-divider>tr:not(:first-child),.uk-card-secondary.uk-card-body .uk-table-divider>:first-child>tr:not(:first-child),.uk-card-secondary.uk-card-body .uk-table-divider>:not(:first-child)>tr,.uk-card-secondary.uk-card-body .uk-table-divider>tr:not(:first-child),.uk-card-secondary>:not([class*=uk-card-media]) .uk-table-divider>:first-child>tr:not(:first-child),.uk-card-secondary>:not([class*=uk-card-media]) .uk-table-divider>:not(:first-child)>tr,.uk-card-secondary>:not([class*=uk-card-media]) .uk-table-divider>tr:not(:first-child),.uk-light .uk-table-divider>:first-child>tr:not(:first-child),.uk-light .uk-table-divider>:not(:first-child)>tr,.uk-light .uk-table-divider>tr:not(:first-child),.uk-offcanvas-bar .uk-table-divider>:first-child>tr:not(:first-child),.uk-offcanvas-bar .uk-table-divider>:not(:first-child)>tr,.uk-offcanvas-bar .uk-table-divider>tr:not(:first-child),.uk-overlay-primary .uk-table-divider>:first-child>tr:not(:first-child),.uk-overlay-primary .uk-table-divider>:not(:first-child)>tr,.uk-overlay-primary .uk-table-divider>tr:not(:first-child),.uk-section-primary:not(.uk-preserve-color) .uk-table-divider>:first-child>tr:not(:first-child),.uk-section-primary:not(.uk-preserve-color) .uk-table-divider>:not(:first-child)>tr,.uk-section-primary:not(.uk-preserve-color) .uk-table-divider>tr:not(:first-child),.uk-section-secondary:not(.uk-preserve-color) .uk-table-divider>:first-child>tr:not(:first-child),.uk-section-secondary:not(.uk-preserve-color) .uk-table-divider>:not(:first-child)>tr,.uk-section-secondary:not(.uk-preserve-color) .uk-table-divider>tr:not(:first-child),.uk-tile-primary:not(.uk-preserve-color) .uk-table-divider>:first-child>tr:not(:first-child),.uk-tile-primary:not(.uk-preserve-color) .uk-table-divider>:not(:first-child)>tr,.uk-tile-primary:not(.uk-preserve-color) .uk-table-divider>tr:not(:first-child),.uk-tile-secondary:not(.uk-preserve-color) .uk-table-divider>:first-child>tr:not(:first-child),.uk-tile-secondary:not(.uk-preserve-color) .uk-table-divider>:not(:first-child)>tr,.uk-tile-secondary:not(.uk-preserve-color) .uk-table-divider>tr:not(:first-child){border-top-color:#fff3}.uk-card-primary.uk-card-body .uk-table-striped tbody tr:nth-of-type(odd),.uk-card-primary.uk-card-body .uk-table-striped>tr:nth-of-type(odd),.uk-card-primary>:not([class*=uk-card-media]) .uk-table-striped tbody tr:nth-of-type(odd),.uk-card-primary>:not([class*=uk-card-media]) .uk-table-striped>tr:nth-of-type(odd),.uk-card-secondary.uk-card-body .uk-table-striped tbody tr:nth-of-type(odd),.uk-card-secondary.uk-card-body .uk-table-striped>tr:nth-of-type(odd),.uk-card-secondary>:not([class*=uk-card-media]) .uk-table-striped tbody tr:nth-of-type(odd),.uk-card-secondary>:not([class*=uk-card-media]) .uk-table-striped>tr:nth-of-type(odd),.uk-light .uk-table-striped tbody tr:nth-of-type(odd),.uk-light .uk-table-striped>tr:nth-of-type(odd),.uk-offcanvas-bar .uk-table-striped tbody tr:nth-of-type(odd),.uk-offcanvas-bar .uk-table-striped>tr:nth-of-type(odd),.uk-overlay-primary .uk-table-striped tbody tr:nth-of-type(odd),.uk-overlay-primary .uk-table-striped>tr:nth-of-type(odd),.uk-section-primary:not(.uk-preserve-color) .uk-table-striped tbody tr:nth-of-type(odd),.uk-section-primary:not(.uk-preserve-color) .uk-table-striped>tr:nth-of-type(odd),.uk-section-secondary:not(.uk-preserve-color) .uk-table-striped tbody tr:nth-of-type(odd),.uk-section-secondary:not(.uk-preserve-color) .uk-table-striped>tr:nth-of-type(odd),.uk-tile-primary:not(.uk-preserve-color) .uk-table-striped tbody tr:nth-of-type(odd),.uk-tile-primary:not(.uk-preserve-color) .uk-table-striped>tr:nth-of-type(odd),.uk-tile-secondary:not(.uk-preserve-color) .uk-table-striped tbody tr:nth-of-type(odd),.uk-tile-secondary:not(.uk-preserve-color) .uk-table-striped>tr:nth-of-type(odd){background:#ffffff1a;border-top-color:#fff3;border-bottom-color:#fff3}.uk-card-primary.uk-card-body .uk-table-hover tbody tr:hover,.uk-card-primary.uk-card-body .uk-table-hover>tr:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-table-hover tbody tr:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-table-hover>tr:hover,.uk-card-secondary.uk-card-body .uk-table-hover tbody tr:hover,.uk-card-secondary.uk-card-body .uk-table-hover>tr:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-table-hover tbody tr:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-table-hover>tr:hover,.uk-light .uk-table-hover tbody tr:hover,.uk-light .uk-table-hover>tr:hover,.uk-offcanvas-bar .uk-table-hover tbody tr:hover,.uk-offcanvas-bar .uk-table-hover>tr:hover,.uk-overlay-primary .uk-table-hover tbody tr:hover,.uk-overlay-primary .uk-table-hover>tr:hover,.uk-section-primary:not(.uk-preserve-color) .uk-table-hover tbody tr:hover,.uk-section-primary:not(.uk-preserve-color) .uk-table-hover>tr:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-table-hover tbody tr:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-table-hover>tr:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-table-hover tbody tr:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-table-hover>tr:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-table-hover tbody tr:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-table-hover>tr:hover{background:#ffffff14}.uk-card-primary.uk-card-body .uk-icon-link,.uk-card-primary>:not([class*=uk-card-media]) .uk-icon-link,.uk-card-secondary.uk-card-body .uk-icon-link,.uk-card-secondary>:not([class*=uk-card-media]) .uk-icon-link,.uk-light .uk-icon-link,.uk-offcanvas-bar .uk-icon-link,.uk-overlay-primary .uk-icon-link,.uk-section-primary:not(.uk-preserve-color) .uk-icon-link,.uk-section-secondary:not(.uk-preserve-color) .uk-icon-link,.uk-tile-primary:not(.uk-preserve-color) .uk-icon-link,.uk-tile-secondary:not(.uk-preserve-color) .uk-icon-link{color:#ffffff80}.uk-card-primary.uk-card-body .uk-icon-link:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-icon-link:hover,.uk-card-secondary.uk-card-body .uk-icon-link:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-icon-link:hover,.uk-light .uk-icon-link:hover,.uk-offcanvas-bar .uk-icon-link:hover,.uk-overlay-primary .uk-icon-link:hover,.uk-section-primary:not(.uk-preserve-color) .uk-icon-link:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-icon-link:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-icon-link:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-icon-link:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-active>.uk-icon-link,.uk-card-primary.uk-card-body .uk-icon-link:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-active>.uk-icon-link,.uk-card-primary>:not([class*=uk-card-media]) .uk-icon-link:active,.uk-card-secondary.uk-card-body .uk-active>.uk-icon-link,.uk-card-secondary.uk-card-body .uk-icon-link:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-active>.uk-icon-link,.uk-card-secondary>:not([class*=uk-card-media]) .uk-icon-link:active,.uk-light .uk-active>.uk-icon-link,.uk-light .uk-icon-link:active,.uk-offcanvas-bar .uk-active>.uk-icon-link,.uk-offcanvas-bar .uk-icon-link:active,.uk-overlay-primary .uk-active>.uk-icon-link,.uk-overlay-primary .uk-icon-link:active,.uk-section-primary:not(.uk-preserve-color) .uk-active>.uk-icon-link,.uk-section-primary:not(.uk-preserve-color) .uk-icon-link:active,.uk-section-secondary:not(.uk-preserve-color) .uk-active>.uk-icon-link,.uk-section-secondary:not(.uk-preserve-color) .uk-icon-link:active,.uk-tile-primary:not(.uk-preserve-color) .uk-active>.uk-icon-link,.uk-tile-primary:not(.uk-preserve-color) .uk-icon-link:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-active>.uk-icon-link,.uk-tile-secondary:not(.uk-preserve-color) .uk-icon-link:active{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-icon-button,.uk-card-primary>:not([class*=uk-card-media]) .uk-icon-button,.uk-card-secondary.uk-card-body .uk-icon-button,.uk-card-secondary>:not([class*=uk-card-media]) .uk-icon-button,.uk-light .uk-icon-button,.uk-offcanvas-bar .uk-icon-button,.uk-overlay-primary .uk-icon-button,.uk-section-primary:not(.uk-preserve-color) .uk-icon-button,.uk-section-secondary:not(.uk-preserve-color) .uk-icon-button,.uk-tile-primary:not(.uk-preserve-color) .uk-icon-button,.uk-tile-secondary:not(.uk-preserve-color) .uk-icon-button{background-color:#ffffff1a;color:#ffffff80}.uk-card-primary.uk-card-body .uk-icon-button:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-icon-button:hover,.uk-card-secondary.uk-card-body .uk-icon-button:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-icon-button:hover,.uk-light .uk-icon-button:hover,.uk-offcanvas-bar .uk-icon-button:hover,.uk-overlay-primary .uk-icon-button:hover,.uk-section-primary:not(.uk-preserve-color) .uk-icon-button:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-icon-button:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-icon-button:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-icon-button:hover{background-color:#ffffff26;color:#ffffffb3}.uk-card-primary.uk-card-body .uk-icon-button:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-icon-button:active,.uk-card-secondary.uk-card-body .uk-icon-button:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-icon-button:active,.uk-light .uk-icon-button:active,.uk-offcanvas-bar .uk-icon-button:active,.uk-overlay-primary .uk-icon-button:active,.uk-section-primary:not(.uk-preserve-color) .uk-icon-button:active,.uk-section-secondary:not(.uk-preserve-color) .uk-icon-button:active,.uk-tile-primary:not(.uk-preserve-color) .uk-icon-button:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-icon-button:active{background-color:#fff3;color:#ffffffb3}.uk-card-primary.uk-card-body .uk-input,.uk-card-primary.uk-card-body .uk-select,.uk-card-primary.uk-card-body .uk-textarea,.uk-card-primary>:not([class*=uk-card-media]) .uk-input,.uk-card-primary>:not([class*=uk-card-media]) .uk-select,.uk-card-primary>:not([class*=uk-card-media]) .uk-textarea,.uk-card-secondary.uk-card-body .uk-input,.uk-card-secondary.uk-card-body .uk-select,.uk-card-secondary.uk-card-body .uk-textarea,.uk-card-secondary>:not([class*=uk-card-media]) .uk-input,.uk-card-secondary>:not([class*=uk-card-media]) .uk-select,.uk-card-secondary>:not([class*=uk-card-media]) .uk-textarea,.uk-light .uk-input,.uk-light .uk-select,.uk-light .uk-textarea,.uk-offcanvas-bar .uk-input,.uk-offcanvas-bar .uk-select,.uk-offcanvas-bar .uk-textarea,.uk-overlay-primary .uk-input,.uk-overlay-primary .uk-select,.uk-overlay-primary .uk-textarea,.uk-section-primary:not(.uk-preserve-color) .uk-input,.uk-section-primary:not(.uk-preserve-color) .uk-select,.uk-section-primary:not(.uk-preserve-color) .uk-textarea,.uk-section-secondary:not(.uk-preserve-color) .uk-input,.uk-section-secondary:not(.uk-preserve-color) .uk-select,.uk-section-secondary:not(.uk-preserve-color) .uk-textarea,.uk-tile-primary:not(.uk-preserve-color) .uk-input,.uk-tile-primary:not(.uk-preserve-color) .uk-select,.uk-tile-primary:not(.uk-preserve-color) .uk-textarea,.uk-tile-secondary:not(.uk-preserve-color) .uk-input,.uk-tile-secondary:not(.uk-preserve-color) .uk-select,.uk-tile-secondary:not(.uk-preserve-color) .uk-textarea{background-color:#ffffff1a;color:#ffffffb3;background-clip:padding-box;border-color:#fff3}.uk-card-primary.uk-card-body .uk-input:focus,.uk-card-primary.uk-card-body .uk-select:focus,.uk-card-primary.uk-card-body .uk-textarea:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-input:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-select:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-textarea:focus,.uk-card-secondary.uk-card-body .uk-input:focus,.uk-card-secondary.uk-card-body .uk-select:focus,.uk-card-secondary.uk-card-body .uk-textarea:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-input:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-select:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-textarea:focus,.uk-light .uk-input:focus,.uk-light .uk-select:focus,.uk-light .uk-textarea:focus,.uk-offcanvas-bar .uk-input:focus,.uk-offcanvas-bar .uk-select:focus,.uk-offcanvas-bar .uk-textarea:focus,.uk-overlay-primary .uk-input:focus,.uk-overlay-primary .uk-select:focus,.uk-overlay-primary .uk-textarea:focus,.uk-section-primary:not(.uk-preserve-color) .uk-input:focus,.uk-section-primary:not(.uk-preserve-color) .uk-select:focus,.uk-section-primary:not(.uk-preserve-color) .uk-textarea:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-input:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-select:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-textarea:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-input:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-select:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-textarea:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-input:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-select:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-textarea:focus{background-color:#ffffff26;color:#ffffffb3;border-color:#ffffffb3}.uk-card-primary.uk-card-body .uk-input::placeholder,.uk-card-primary>:not([class*=uk-card-media]) .uk-input::placeholder,.uk-card-secondary.uk-card-body .uk-input::placeholder,.uk-card-secondary>:not([class*=uk-card-media]) .uk-input::placeholder,.uk-light .uk-input::placeholder,.uk-offcanvas-bar .uk-input::placeholder,.uk-overlay-primary .uk-input::placeholder,.uk-section-primary:not(.uk-preserve-color) .uk-input::placeholder,.uk-section-secondary:not(.uk-preserve-color) .uk-input::placeholder,.uk-tile-primary:not(.uk-preserve-color) .uk-input::placeholder,.uk-tile-secondary:not(.uk-preserve-color) .uk-input::placeholder{color:#ffffff80}.uk-card-primary.uk-card-body .uk-textarea::placeholder,.uk-card-primary>:not([class*=uk-card-media]) .uk-textarea::placeholder,.uk-card-secondary.uk-card-body .uk-textarea::placeholder,.uk-card-secondary>:not([class*=uk-card-media]) .uk-textarea::placeholder,.uk-light .uk-textarea::placeholder,.uk-offcanvas-bar .uk-textarea::placeholder,.uk-overlay-primary .uk-textarea::placeholder,.uk-section-primary:not(.uk-preserve-color) .uk-textarea::placeholder,.uk-section-secondary:not(.uk-preserve-color) .uk-textarea::placeholder,.uk-tile-primary:not(.uk-preserve-color) .uk-textarea::placeholder,.uk-tile-secondary:not(.uk-preserve-color) .uk-textarea::placeholder{color:#ffffff80}.uk-card-primary.uk-card-body .uk-select:not([multiple]):not([size]),.uk-card-primary>:not([class*=uk-card-media]) .uk-select:not([multiple]):not([size]),.uk-card-secondary.uk-card-body .uk-select:not([multiple]):not([size]),.uk-card-secondary>:not([class*=uk-card-media]) .uk-select:not([multiple]):not([size]),.uk-light .uk-select:not([multiple]):not([size]),.uk-offcanvas-bar .uk-select:not([multiple]):not([size]),.uk-overlay-primary .uk-select:not([multiple]):not([size]),.uk-section-primary:not(.uk-preserve-color) .uk-select:not([multiple]):not([size]),.uk-section-secondary:not(.uk-preserve-color) .uk-select:not([multiple]):not([size]),.uk-tile-primary:not(.uk-preserve-color) .uk-select:not([multiple]):not([size]),.uk-tile-secondary:not(.uk-preserve-color) .uk-select:not([multiple]):not([size]){background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2224%22%20height%3D%2216%22%20viewBox%3D%220%200%2024%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22rgba%28255,%20255,%20255,%200.7%29%22%20points%3D%2212%201%209%206%2015%206%22%20%2F%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22rgba%28255,%20255,%20255,%200.7%29%22%20points%3D%2212%2013%209%208%2015%208%22%20%2F%3E%0A%3C%2Fsvg%3E%0A)}.uk-card-primary.uk-card-body .uk-input[list]:focus,.uk-card-primary.uk-card-body .uk-input[list]:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-input[list]:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-input[list]:hover,.uk-card-secondary.uk-card-body .uk-input[list]:focus,.uk-card-secondary.uk-card-body .uk-input[list]:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-input[list]:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-input[list]:hover,.uk-light .uk-input[list]:focus,.uk-light .uk-input[list]:hover,.uk-offcanvas-bar .uk-input[list]:focus,.uk-offcanvas-bar .uk-input[list]:hover,.uk-overlay-primary .uk-input[list]:focus,.uk-overlay-primary .uk-input[list]:hover,.uk-section-primary:not(.uk-preserve-color) .uk-input[list]:focus,.uk-section-primary:not(.uk-preserve-color) .uk-input[list]:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-input[list]:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-input[list]:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-input[list]:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-input[list]:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-input[list]:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-input[list]:hover{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2224%22%20height%3D%2216%22%20viewBox%3D%220%200%2024%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22rgba%28255,%20255,%20255,%200.7%29%22%20points%3D%2212%2012%208%206%2016%206%22%20%2F%3E%0A%3C%2Fsvg%3E%0A)}.uk-card-primary.uk-card-body .uk-checkbox,.uk-card-primary.uk-card-body .uk-radio,.uk-card-primary>:not([class*=uk-card-media]) .uk-checkbox,.uk-card-primary>:not([class*=uk-card-media]) .uk-radio,.uk-card-secondary.uk-card-body .uk-checkbox,.uk-card-secondary.uk-card-body .uk-radio,.uk-card-secondary>:not([class*=uk-card-media]) .uk-checkbox,.uk-card-secondary>:not([class*=uk-card-media]) .uk-radio,.uk-light .uk-checkbox,.uk-light .uk-radio,.uk-offcanvas-bar .uk-checkbox,.uk-offcanvas-bar .uk-radio,.uk-overlay-primary .uk-checkbox,.uk-overlay-primary .uk-radio,.uk-section-primary:not(.uk-preserve-color) .uk-checkbox,.uk-section-primary:not(.uk-preserve-color) .uk-radio,.uk-section-secondary:not(.uk-preserve-color) .uk-checkbox,.uk-section-secondary:not(.uk-preserve-color) .uk-radio,.uk-tile-primary:not(.uk-preserve-color) .uk-checkbox,.uk-tile-primary:not(.uk-preserve-color) .uk-radio,.uk-tile-secondary:not(.uk-preserve-color) .uk-checkbox,.uk-tile-secondary:not(.uk-preserve-color) .uk-radio{background-color:#ffffff1a;border-color:#fff3}.uk-card-primary.uk-card-body .uk-checkbox:focus,.uk-card-primary.uk-card-body .uk-radio:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-checkbox:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-radio:focus,.uk-card-secondary.uk-card-body .uk-checkbox:focus,.uk-card-secondary.uk-card-body .uk-radio:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-checkbox:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-radio:focus,.uk-light .uk-checkbox:focus,.uk-light .uk-radio:focus,.uk-offcanvas-bar .uk-checkbox:focus,.uk-offcanvas-bar .uk-radio:focus,.uk-overlay-primary .uk-checkbox:focus,.uk-overlay-primary .uk-radio:focus,.uk-section-primary:not(.uk-preserve-color) .uk-checkbox:focus,.uk-section-primary:not(.uk-preserve-color) .uk-radio:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-checkbox:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-radio:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-checkbox:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-radio:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-checkbox:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-radio:focus{background-color:#ffffff26;border-color:#ffffffb3}.uk-card-primary.uk-card-body .uk-checkbox:checked,.uk-card-primary.uk-card-body .uk-checkbox:indeterminate,.uk-card-primary.uk-card-body .uk-radio:checked,.uk-card-primary>:not([class*=uk-card-media]) .uk-checkbox:checked,.uk-card-primary>:not([class*=uk-card-media]) .uk-checkbox:indeterminate,.uk-card-primary>:not([class*=uk-card-media]) .uk-radio:checked,.uk-card-secondary.uk-card-body .uk-checkbox:checked,.uk-card-secondary.uk-card-body .uk-checkbox:indeterminate,.uk-card-secondary.uk-card-body .uk-radio:checked,.uk-card-secondary>:not([class*=uk-card-media]) .uk-checkbox:checked,.uk-card-secondary>:not([class*=uk-card-media]) .uk-checkbox:indeterminate,.uk-card-secondary>:not([class*=uk-card-media]) .uk-radio:checked,.uk-light .uk-checkbox:checked,.uk-light .uk-checkbox:indeterminate,.uk-light .uk-radio:checked,.uk-offcanvas-bar .uk-checkbox:checked,.uk-offcanvas-bar .uk-checkbox:indeterminate,.uk-offcanvas-bar .uk-radio:checked,.uk-overlay-primary .uk-checkbox:checked,.uk-overlay-primary .uk-checkbox:indeterminate,.uk-overlay-primary .uk-radio:checked,.uk-section-primary:not(.uk-preserve-color) .uk-checkbox:checked,.uk-section-primary:not(.uk-preserve-color) .uk-checkbox:indeterminate,.uk-section-primary:not(.uk-preserve-color) .uk-radio:checked,.uk-section-secondary:not(.uk-preserve-color) .uk-checkbox:checked,.uk-section-secondary:not(.uk-preserve-color) .uk-checkbox:indeterminate,.uk-section-secondary:not(.uk-preserve-color) .uk-radio:checked,.uk-tile-primary:not(.uk-preserve-color) .uk-checkbox:checked,.uk-tile-primary:not(.uk-preserve-color) .uk-checkbox:indeterminate,.uk-tile-primary:not(.uk-preserve-color) .uk-radio:checked,.uk-tile-secondary:not(.uk-preserve-color) .uk-checkbox:checked,.uk-tile-secondary:not(.uk-preserve-color) .uk-checkbox:indeterminate,.uk-tile-secondary:not(.uk-preserve-color) .uk-radio:checked{background-color:#fff;border-color:#fff}.uk-card-primary.uk-card-body .uk-checkbox:checked:focus,.uk-card-primary.uk-card-body .uk-checkbox:indeterminate:focus,.uk-card-primary.uk-card-body .uk-radio:checked:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-checkbox:checked:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-checkbox:indeterminate:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-radio:checked:focus,.uk-card-secondary.uk-card-body .uk-checkbox:checked:focus,.uk-card-secondary.uk-card-body .uk-checkbox:indeterminate:focus,.uk-card-secondary.uk-card-body .uk-radio:checked:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-checkbox:checked:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-checkbox:indeterminate:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-radio:checked:focus,.uk-light .uk-checkbox:checked:focus,.uk-light .uk-checkbox:indeterminate:focus,.uk-light .uk-radio:checked:focus,.uk-offcanvas-bar .uk-checkbox:checked:focus,.uk-offcanvas-bar .uk-checkbox:indeterminate:focus,.uk-offcanvas-bar .uk-radio:checked:focus,.uk-overlay-primary .uk-checkbox:checked:focus,.uk-overlay-primary .uk-checkbox:indeterminate:focus,.uk-overlay-primary .uk-radio:checked:focus,.uk-section-primary:not(.uk-preserve-color) .uk-checkbox:checked:focus,.uk-section-primary:not(.uk-preserve-color) .uk-checkbox:indeterminate:focus,.uk-section-primary:not(.uk-preserve-color) .uk-radio:checked:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-checkbox:checked:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-checkbox:indeterminate:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-radio:checked:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-checkbox:checked:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-checkbox:indeterminate:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-radio:checked:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-checkbox:checked:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-checkbox:indeterminate:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-radio:checked:focus{background-color:#fff}.uk-card-primary.uk-card-body .uk-radio:checked,.uk-card-primary>:not([class*=uk-card-media]) .uk-radio:checked,.uk-card-secondary.uk-card-body .uk-radio:checked,.uk-card-secondary>:not([class*=uk-card-media]) .uk-radio:checked,.uk-light .uk-radio:checked,.uk-offcanvas-bar .uk-radio:checked,.uk-overlay-primary .uk-radio:checked,.uk-section-primary:not(.uk-preserve-color) .uk-radio:checked,.uk-section-secondary:not(.uk-preserve-color) .uk-radio:checked,.uk-tile-primary:not(.uk-preserve-color) .uk-radio:checked,.uk-tile-secondary:not(.uk-preserve-color) .uk-radio:checked{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22%23666%22%20cx%3D%228%22%20cy%3D%228%22%20r%3D%222%22%20%2F%3E%0A%3C%2Fsvg%3E)}.uk-card-primary.uk-card-body .uk-checkbox:checked,.uk-card-primary>:not([class*=uk-card-media]) .uk-checkbox:checked,.uk-card-secondary.uk-card-body .uk-checkbox:checked,.uk-card-secondary>:not([class*=uk-card-media]) .uk-checkbox:checked,.uk-light .uk-checkbox:checked,.uk-offcanvas-bar .uk-checkbox:checked,.uk-overlay-primary .uk-checkbox:checked,.uk-section-primary:not(.uk-preserve-color) .uk-checkbox:checked,.uk-section-secondary:not(.uk-preserve-color) .uk-checkbox:checked,.uk-tile-primary:not(.uk-preserve-color) .uk-checkbox:checked,.uk-tile-secondary:not(.uk-preserve-color) .uk-checkbox:checked{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2214%22%20height%3D%2211%22%20viewBox%3D%220%200%2014%2011%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22%23666%22%20points%3D%2212%201%205%207.5%202%205%201%205.5%205%2010%2013%201.5%22%20%2F%3E%0A%3C%2Fsvg%3E%0A)}.uk-card-primary.uk-card-body .uk-checkbox:indeterminate,.uk-card-primary>:not([class*=uk-card-media]) .uk-checkbox:indeterminate,.uk-card-secondary.uk-card-body .uk-checkbox:indeterminate,.uk-card-secondary>:not([class*=uk-card-media]) .uk-checkbox:indeterminate,.uk-light .uk-checkbox:indeterminate,.uk-offcanvas-bar .uk-checkbox:indeterminate,.uk-overlay-primary .uk-checkbox:indeterminate,.uk-section-primary:not(.uk-preserve-color) .uk-checkbox:indeterminate,.uk-section-secondary:not(.uk-preserve-color) .uk-checkbox:indeterminate,.uk-tile-primary:not(.uk-preserve-color) .uk-checkbox:indeterminate,.uk-tile-secondary:not(.uk-preserve-color) .uk-checkbox:indeterminate{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22%23666%22%20x%3D%223%22%20y%3D%228%22%20width%3D%2210%22%20height%3D%221%22%20%2F%3E%0A%3C%2Fsvg%3E)}.uk-card-primary.uk-card-body .uk-form-label,.uk-card-primary>:not([class*=uk-card-media]) .uk-form-label,.uk-card-secondary.uk-card-body .uk-form-label,.uk-card-secondary>:not([class*=uk-card-media]) .uk-form-label,.uk-light .uk-form-label,.uk-offcanvas-bar .uk-form-label,.uk-overlay-primary .uk-form-label,.uk-section-primary:not(.uk-preserve-color) .uk-form-label,.uk-section-secondary:not(.uk-preserve-color) .uk-form-label,.uk-tile-primary:not(.uk-preserve-color) .uk-form-label,.uk-tile-secondary:not(.uk-preserve-color) .uk-form-label{color:#fff}.uk-card-primary.uk-card-body .uk-form-icon,.uk-card-primary>:not([class*=uk-card-media]) .uk-form-icon,.uk-card-secondary.uk-card-body .uk-form-icon,.uk-card-secondary>:not([class*=uk-card-media]) .uk-form-icon,.uk-light .uk-form-icon,.uk-offcanvas-bar .uk-form-icon,.uk-overlay-primary .uk-form-icon,.uk-section-primary:not(.uk-preserve-color) .uk-form-icon,.uk-section-secondary:not(.uk-preserve-color) .uk-form-icon,.uk-tile-primary:not(.uk-preserve-color) .uk-form-icon,.uk-tile-secondary:not(.uk-preserve-color) .uk-form-icon{color:#ffffff80}.uk-card-primary.uk-card-body .uk-form-icon:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-form-icon:hover,.uk-card-secondary.uk-card-body .uk-form-icon:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-form-icon:hover,.uk-light .uk-form-icon:hover,.uk-offcanvas-bar .uk-form-icon:hover,.uk-overlay-primary .uk-form-icon:hover,.uk-section-primary:not(.uk-preserve-color) .uk-form-icon:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-form-icon:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-form-icon:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-form-icon:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-button-default,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-default,.uk-card-secondary.uk-card-body .uk-button-default,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-default,.uk-light .uk-button-default,.uk-offcanvas-bar .uk-button-default,.uk-overlay-primary .uk-button-default,.uk-section-primary:not(.uk-preserve-color) .uk-button-default,.uk-section-secondary:not(.uk-preserve-color) .uk-button-default,.uk-tile-primary:not(.uk-preserve-color) .uk-button-default,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-default{background-color:transparent;color:#fff;border-color:#ffffffb3}.uk-card-primary.uk-card-body .uk-button-default:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-default:hover,.uk-card-secondary.uk-card-body .uk-button-default:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-default:hover,.uk-light .uk-button-default:hover,.uk-offcanvas-bar .uk-button-default:hover,.uk-overlay-primary .uk-button-default:hover,.uk-section-primary:not(.uk-preserve-color) .uk-button-default:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-button-default:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-button-default:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-default:hover{background-color:transparent;color:#fff;border-color:#fff}.uk-card-primary.uk-card-body .uk-button-default.uk-active,.uk-card-primary.uk-card-body .uk-button-default:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-default.uk-active,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-default:active,.uk-card-secondary.uk-card-body .uk-button-default.uk-active,.uk-card-secondary.uk-card-body .uk-button-default:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-default.uk-active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-default:active,.uk-light .uk-button-default.uk-active,.uk-light .uk-button-default:active,.uk-offcanvas-bar .uk-button-default.uk-active,.uk-offcanvas-bar .uk-button-default:active,.uk-overlay-primary .uk-button-default.uk-active,.uk-overlay-primary .uk-button-default:active,.uk-section-primary:not(.uk-preserve-color) .uk-button-default.uk-active,.uk-section-primary:not(.uk-preserve-color) .uk-button-default:active,.uk-section-secondary:not(.uk-preserve-color) .uk-button-default.uk-active,.uk-section-secondary:not(.uk-preserve-color) .uk-button-default:active,.uk-tile-primary:not(.uk-preserve-color) .uk-button-default.uk-active,.uk-tile-primary:not(.uk-preserve-color) .uk-button-default:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-default.uk-active,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-default:active{background-color:transparent;color:#fff;border-color:#fff}.uk-card-primary.uk-card-body .uk-button-primary,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-primary,.uk-card-secondary.uk-card-body .uk-button-primary,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-primary,.uk-light .uk-button-primary,.uk-offcanvas-bar .uk-button-primary,.uk-overlay-primary .uk-button-primary,.uk-section-primary:not(.uk-preserve-color) .uk-button-primary,.uk-section-secondary:not(.uk-preserve-color) .uk-button-primary,.uk-tile-primary:not(.uk-preserve-color) .uk-button-primary,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-primary{background-color:#fff;color:#666}.uk-card-primary.uk-card-body .uk-button-primary:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-primary:hover,.uk-card-secondary.uk-card-body .uk-button-primary:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-primary:hover,.uk-light .uk-button-primary:hover,.uk-offcanvas-bar .uk-button-primary:hover,.uk-overlay-primary .uk-button-primary:hover,.uk-section-primary:not(.uk-preserve-color) .uk-button-primary:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-button-primary:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-button-primary:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-primary:hover{background-color:#f2f2f2;color:#666}.uk-card-primary.uk-card-body .uk-button-primary.uk-active,.uk-card-primary.uk-card-body .uk-button-primary:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-primary.uk-active,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-primary:active,.uk-card-secondary.uk-card-body .uk-button-primary.uk-active,.uk-card-secondary.uk-card-body .uk-button-primary:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-primary.uk-active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-primary:active,.uk-light .uk-button-primary.uk-active,.uk-light .uk-button-primary:active,.uk-offcanvas-bar .uk-button-primary.uk-active,.uk-offcanvas-bar .uk-button-primary:active,.uk-overlay-primary .uk-button-primary.uk-active,.uk-overlay-primary .uk-button-primary:active,.uk-section-primary:not(.uk-preserve-color) .uk-button-primary.uk-active,.uk-section-primary:not(.uk-preserve-color) .uk-button-primary:active,.uk-section-secondary:not(.uk-preserve-color) .uk-button-primary.uk-active,.uk-section-secondary:not(.uk-preserve-color) .uk-button-primary:active,.uk-tile-primary:not(.uk-preserve-color) .uk-button-primary.uk-active,.uk-tile-primary:not(.uk-preserve-color) .uk-button-primary:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-primary.uk-active,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-primary:active{background-color:#e6e6e6;color:#666}.uk-card-primary.uk-card-body .uk-button-secondary,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-secondary,.uk-card-secondary.uk-card-body .uk-button-secondary,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-secondary,.uk-light .uk-button-secondary,.uk-offcanvas-bar .uk-button-secondary,.uk-overlay-primary .uk-button-secondary,.uk-section-primary:not(.uk-preserve-color) .uk-button-secondary,.uk-section-secondary:not(.uk-preserve-color) .uk-button-secondary,.uk-tile-primary:not(.uk-preserve-color) .uk-button-secondary,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-secondary{background-color:#fff;color:#666}.uk-card-primary.uk-card-body .uk-button-secondary:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-secondary:hover,.uk-card-secondary.uk-card-body .uk-button-secondary:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-secondary:hover,.uk-light .uk-button-secondary:hover,.uk-offcanvas-bar .uk-button-secondary:hover,.uk-overlay-primary .uk-button-secondary:hover,.uk-section-primary:not(.uk-preserve-color) .uk-button-secondary:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-button-secondary:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-button-secondary:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-secondary:hover{background-color:#f2f2f2;color:#666}.uk-card-primary.uk-card-body .uk-button-secondary.uk-active,.uk-card-primary.uk-card-body .uk-button-secondary:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-secondary.uk-active,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-secondary:active,.uk-card-secondary.uk-card-body .uk-button-secondary.uk-active,.uk-card-secondary.uk-card-body .uk-button-secondary:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-secondary.uk-active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-secondary:active,.uk-light .uk-button-secondary.uk-active,.uk-light .uk-button-secondary:active,.uk-offcanvas-bar .uk-button-secondary.uk-active,.uk-offcanvas-bar .uk-button-secondary:active,.uk-overlay-primary .uk-button-secondary.uk-active,.uk-overlay-primary .uk-button-secondary:active,.uk-section-primary:not(.uk-preserve-color) .uk-button-secondary.uk-active,.uk-section-primary:not(.uk-preserve-color) .uk-button-secondary:active,.uk-section-secondary:not(.uk-preserve-color) .uk-button-secondary.uk-active,.uk-section-secondary:not(.uk-preserve-color) .uk-button-secondary:active,.uk-tile-primary:not(.uk-preserve-color) .uk-button-secondary.uk-active,.uk-tile-primary:not(.uk-preserve-color) .uk-button-secondary:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-secondary.uk-active,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-secondary:active{background-color:#e6e6e6;color:#666}.uk-card-primary.uk-card-body .uk-button-text,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-text,.uk-card-secondary.uk-card-body .uk-button-text,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-text,.uk-light .uk-button-text,.uk-offcanvas-bar .uk-button-text,.uk-overlay-primary .uk-button-text,.uk-section-primary:not(.uk-preserve-color) .uk-button-text,.uk-section-secondary:not(.uk-preserve-color) .uk-button-text,.uk-tile-primary:not(.uk-preserve-color) .uk-button-text,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-text{color:#fff}.uk-card-primary.uk-card-body .uk-button-text:before,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-text:before,.uk-card-secondary.uk-card-body .uk-button-text:before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-text:before,.uk-light .uk-button-text:before,.uk-offcanvas-bar .uk-button-text:before,.uk-overlay-primary .uk-button-text:before,.uk-section-primary:not(.uk-preserve-color) .uk-button-text:before,.uk-section-secondary:not(.uk-preserve-color) .uk-button-text:before,.uk-tile-primary:not(.uk-preserve-color) .uk-button-text:before,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-text:before{border-bottom-color:#fff}.uk-card-primary.uk-card-body .uk-button-text:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-text:hover,.uk-card-secondary.uk-card-body .uk-button-text:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-text:hover,.uk-light .uk-button-text:hover,.uk-offcanvas-bar .uk-button-text:hover,.uk-overlay-primary .uk-button-text:hover,.uk-section-primary:not(.uk-preserve-color) .uk-button-text:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-button-text:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-button-text:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-text:hover{color:#fff}.uk-card-primary.uk-card-body .uk-button-text:disabled,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-text:disabled,.uk-card-secondary.uk-card-body .uk-button-text:disabled,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-text:disabled,.uk-light .uk-button-text:disabled,.uk-offcanvas-bar .uk-button-text:disabled,.uk-overlay-primary .uk-button-text:disabled,.uk-section-primary:not(.uk-preserve-color) .uk-button-text:disabled,.uk-section-secondary:not(.uk-preserve-color) .uk-button-text:disabled,.uk-tile-primary:not(.uk-preserve-color) .uk-button-text:disabled,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-text:disabled{color:#ffffff80}.uk-card-primary.uk-card-body .uk-button-link,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-link,.uk-card-secondary.uk-card-body .uk-button-link,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-link,.uk-light .uk-button-link,.uk-offcanvas-bar .uk-button-link,.uk-overlay-primary .uk-button-link,.uk-section-primary:not(.uk-preserve-color) .uk-button-link,.uk-section-secondary:not(.uk-preserve-color) .uk-button-link,.uk-tile-primary:not(.uk-preserve-color) .uk-button-link,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-link{color:#fff}.uk-card-primary.uk-card-body .uk-button-link:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-link:hover,.uk-card-secondary.uk-card-body .uk-button-link:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-link:hover,.uk-light .uk-button-link:hover,.uk-offcanvas-bar .uk-button-link:hover,.uk-overlay-primary .uk-button-link:hover,.uk-section-primary:not(.uk-preserve-color) .uk-button-link:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-button-link:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-button-link:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-link:hover{color:#ffffff80}.uk-card-primary.uk-card-body.uk-card-badge,.uk-card-primary>:not([class*=uk-card-media]).uk-card-badge,.uk-card-secondary.uk-card-body.uk-card-badge,.uk-card-secondary>:not([class*=uk-card-media]).uk-card-badge,.uk-light.uk-card-badge,.uk-offcanvas-bar.uk-card-badge,.uk-overlay-primary.uk-card-badge,.uk-section-primary:not(.uk-preserve-color).uk-card-badge,.uk-section-secondary:not(.uk-preserve-color).uk-card-badge,.uk-tile-primary:not(.uk-preserve-color).uk-card-badge,.uk-tile-secondary:not(.uk-preserve-color).uk-card-badge{background-color:#fff;color:#666}.uk-card-primary.uk-card-body .uk-close,.uk-card-primary>:not([class*=uk-card-media]) .uk-close,.uk-card-secondary.uk-card-body .uk-close,.uk-card-secondary>:not([class*=uk-card-media]) .uk-close,.uk-light .uk-close,.uk-offcanvas-bar .uk-close,.uk-overlay-primary .uk-close,.uk-section-primary:not(.uk-preserve-color) .uk-close,.uk-section-secondary:not(.uk-preserve-color) .uk-close,.uk-tile-primary:not(.uk-preserve-color) .uk-close,.uk-tile-secondary:not(.uk-preserve-color) .uk-close{color:#ffffff80}.uk-card-primary.uk-card-body .uk-close:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-close:hover,.uk-card-secondary.uk-card-body .uk-close:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-close:hover,.uk-light .uk-close:hover,.uk-offcanvas-bar .uk-close:hover,.uk-overlay-primary .uk-close:hover,.uk-section-primary:not(.uk-preserve-color) .uk-close:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-close:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-close:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-close:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-totop,.uk-card-primary>:not([class*=uk-card-media]) .uk-totop,.uk-card-secondary.uk-card-body .uk-totop,.uk-card-secondary>:not([class*=uk-card-media]) .uk-totop,.uk-light .uk-totop,.uk-offcanvas-bar .uk-totop,.uk-overlay-primary .uk-totop,.uk-section-primary:not(.uk-preserve-color) .uk-totop,.uk-section-secondary:not(.uk-preserve-color) .uk-totop,.uk-tile-primary:not(.uk-preserve-color) .uk-totop,.uk-tile-secondary:not(.uk-preserve-color) .uk-totop{color:#ffffff80}.uk-card-primary.uk-card-body .uk-totop:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-totop:hover,.uk-card-secondary.uk-card-body .uk-totop:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-totop:hover,.uk-light .uk-totop:hover,.uk-offcanvas-bar .uk-totop:hover,.uk-overlay-primary .uk-totop:hover,.uk-section-primary:not(.uk-preserve-color) .uk-totop:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-totop:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-totop:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-totop:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-totop:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-totop:active,.uk-card-secondary.uk-card-body .uk-totop:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-totop:active,.uk-light .uk-totop:active,.uk-offcanvas-bar .uk-totop:active,.uk-overlay-primary .uk-totop:active,.uk-section-primary:not(.uk-preserve-color) .uk-totop:active,.uk-section-secondary:not(.uk-preserve-color) .uk-totop:active,.uk-tile-primary:not(.uk-preserve-color) .uk-totop:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-totop:active{color:#fff}.uk-card-primary.uk-card-body .uk-marker,.uk-card-primary>:not([class*=uk-card-media]) .uk-marker,.uk-card-secondary.uk-card-body .uk-marker,.uk-card-secondary>:not([class*=uk-card-media]) .uk-marker,.uk-light .uk-marker,.uk-offcanvas-bar .uk-marker,.uk-overlay-primary .uk-marker,.uk-section-primary:not(.uk-preserve-color) .uk-marker,.uk-section-secondary:not(.uk-preserve-color) .uk-marker,.uk-tile-primary:not(.uk-preserve-color) .uk-marker,.uk-tile-secondary:not(.uk-preserve-color) .uk-marker{background:#f8f8f8;color:#666}.uk-card-primary.uk-card-body .uk-marker:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-marker:hover,.uk-card-secondary.uk-card-body .uk-marker:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-marker:hover,.uk-light .uk-marker:hover,.uk-offcanvas-bar .uk-marker:hover,.uk-overlay-primary .uk-marker:hover,.uk-section-primary:not(.uk-preserve-color) .uk-marker:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-marker:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-marker:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-marker:hover{color:#666}.uk-card-primary.uk-card-body .uk-badge,.uk-card-primary>:not([class*=uk-card-media]) .uk-badge,.uk-card-secondary.uk-card-body .uk-badge,.uk-card-secondary>:not([class*=uk-card-media]) .uk-badge,.uk-light .uk-badge,.uk-offcanvas-bar .uk-badge,.uk-overlay-primary .uk-badge,.uk-section-primary:not(.uk-preserve-color) .uk-badge,.uk-section-secondary:not(.uk-preserve-color) .uk-badge,.uk-tile-primary:not(.uk-preserve-color) .uk-badge,.uk-tile-secondary:not(.uk-preserve-color) .uk-badge{background-color:#fff;color:#666!important}.uk-card-primary.uk-card-body .uk-label,.uk-card-primary>:not([class*=uk-card-media]) .uk-label,.uk-card-secondary.uk-card-body .uk-label,.uk-card-secondary>:not([class*=uk-card-media]) .uk-label,.uk-light .uk-label,.uk-offcanvas-bar .uk-label,.uk-overlay-primary .uk-label,.uk-section-primary:not(.uk-preserve-color) .uk-label,.uk-section-secondary:not(.uk-preserve-color) .uk-label,.uk-tile-primary:not(.uk-preserve-color) .uk-label,.uk-tile-secondary:not(.uk-preserve-color) .uk-label{background-color:#fff;color:#666}.uk-card-primary.uk-card-body .uk-article-meta,.uk-card-primary>:not([class*=uk-card-media]) .uk-article-meta,.uk-card-secondary.uk-card-body .uk-article-meta,.uk-card-secondary>:not([class*=uk-card-media]) .uk-article-meta,.uk-light .uk-article-meta,.uk-offcanvas-bar .uk-article-meta,.uk-overlay-primary .uk-article-meta,.uk-section-primary:not(.uk-preserve-color) .uk-article-meta,.uk-section-secondary:not(.uk-preserve-color) .uk-article-meta,.uk-tile-primary:not(.uk-preserve-color) .uk-article-meta,.uk-tile-secondary:not(.uk-preserve-color) .uk-article-meta{color:#ffffff80}.uk-card-primary.uk-card-body .uk-search-input,.uk-card-primary>:not([class*=uk-card-media]) .uk-search-input,.uk-card-secondary.uk-card-body .uk-search-input,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search-input,.uk-light .uk-search-input,.uk-offcanvas-bar .uk-search-input,.uk-overlay-primary .uk-search-input,.uk-section-primary:not(.uk-preserve-color) .uk-search-input,.uk-section-secondary:not(.uk-preserve-color) .uk-search-input,.uk-tile-primary:not(.uk-preserve-color) .uk-search-input,.uk-tile-secondary:not(.uk-preserve-color) .uk-search-input{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-search-input::placeholder,.uk-card-primary>:not([class*=uk-card-media]) .uk-search-input::placeholder,.uk-card-secondary.uk-card-body .uk-search-input::placeholder,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search-input::placeholder,.uk-light .uk-search-input::placeholder,.uk-offcanvas-bar .uk-search-input::placeholder,.uk-overlay-primary .uk-search-input::placeholder,.uk-section-primary:not(.uk-preserve-color) .uk-search-input::placeholder,.uk-section-secondary:not(.uk-preserve-color) .uk-search-input::placeholder,.uk-tile-primary:not(.uk-preserve-color) .uk-search-input::placeholder,.uk-tile-secondary:not(.uk-preserve-color) .uk-search-input::placeholder{color:#ffffff80}.uk-card-primary.uk-card-body .uk-search .uk-search-icon,.uk-card-primary>:not([class*=uk-card-media]) .uk-search .uk-search-icon,.uk-card-secondary.uk-card-body .uk-search .uk-search-icon,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search .uk-search-icon,.uk-light .uk-search .uk-search-icon,.uk-offcanvas-bar .uk-search .uk-search-icon,.uk-overlay-primary .uk-search .uk-search-icon,.uk-section-primary:not(.uk-preserve-color) .uk-search .uk-search-icon,.uk-section-secondary:not(.uk-preserve-color) .uk-search .uk-search-icon,.uk-tile-primary:not(.uk-preserve-color) .uk-search .uk-search-icon,.uk-tile-secondary:not(.uk-preserve-color) .uk-search .uk-search-icon{color:#ffffff80}.uk-card-primary.uk-card-body .uk-search .uk-search-icon:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-search .uk-search-icon:hover,.uk-card-secondary.uk-card-body .uk-search .uk-search-icon:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search .uk-search-icon:hover,.uk-light .uk-search .uk-search-icon:hover,.uk-offcanvas-bar .uk-search .uk-search-icon:hover,.uk-overlay-primary .uk-search .uk-search-icon:hover,.uk-section-primary:not(.uk-preserve-color) .uk-search .uk-search-icon:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-search .uk-search-icon:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-search .uk-search-icon:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-search .uk-search-icon:hover{color:#ffffff80}.uk-card-primary.uk-card-body .uk-search-default .uk-search-input,.uk-card-primary>:not([class*=uk-card-media]) .uk-search-default .uk-search-input,.uk-card-secondary.uk-card-body .uk-search-default .uk-search-input,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search-default .uk-search-input,.uk-light .uk-search-default .uk-search-input,.uk-offcanvas-bar .uk-search-default .uk-search-input,.uk-overlay-primary .uk-search-default .uk-search-input,.uk-section-primary:not(.uk-preserve-color) .uk-search-default .uk-search-input,.uk-section-secondary:not(.uk-preserve-color) .uk-search-default .uk-search-input,.uk-tile-primary:not(.uk-preserve-color) .uk-search-default .uk-search-input,.uk-tile-secondary:not(.uk-preserve-color) .uk-search-default .uk-search-input{background-color:transparent;border-color:#fff3}.uk-card-primary.uk-card-body .uk-search-default .uk-search-input:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-search-default .uk-search-input:focus,.uk-card-secondary.uk-card-body .uk-search-default .uk-search-input:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search-default .uk-search-input:focus,.uk-light .uk-search-default .uk-search-input:focus,.uk-offcanvas-bar .uk-search-default .uk-search-input:focus,.uk-overlay-primary .uk-search-default .uk-search-input:focus,.uk-section-primary:not(.uk-preserve-color) .uk-search-default .uk-search-input:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-search-default .uk-search-input:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-search-default .uk-search-input:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-search-default .uk-search-input:focus{background-color:#0000000d}.uk-card-primary.uk-card-body .uk-search-navbar .uk-search-input,.uk-card-primary>:not([class*=uk-card-media]) .uk-search-navbar .uk-search-input,.uk-card-secondary.uk-card-body .uk-search-navbar .uk-search-input,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search-navbar .uk-search-input,.uk-light .uk-search-navbar .uk-search-input,.uk-offcanvas-bar .uk-search-navbar .uk-search-input,.uk-overlay-primary .uk-search-navbar .uk-search-input,.uk-section-primary:not(.uk-preserve-color) .uk-search-navbar .uk-search-input,.uk-section-secondary:not(.uk-preserve-color) .uk-search-navbar .uk-search-input,.uk-tile-primary:not(.uk-preserve-color) .uk-search-navbar .uk-search-input,.uk-tile-secondary:not(.uk-preserve-color) .uk-search-navbar .uk-search-input{background-color:transparent;border-color:#fff3}.uk-card-primary.uk-card-body .uk-search-navbar .uk-search-input:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-search-navbar .uk-search-input:focus,.uk-card-secondary.uk-card-body .uk-search-navbar .uk-search-input:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search-navbar .uk-search-input:focus,.uk-light .uk-search-navbar .uk-search-input:focus,.uk-offcanvas-bar .uk-search-navbar .uk-search-input:focus,.uk-overlay-primary .uk-search-navbar .uk-search-input:focus,.uk-section-primary:not(.uk-preserve-color) .uk-search-navbar .uk-search-input:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-search-navbar .uk-search-input:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-search-navbar .uk-search-input:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-search-navbar .uk-search-input:focus{background-color:#0000000d}.uk-card-primary.uk-card-body .uk-search-medium .uk-search-input,.uk-card-primary>:not([class*=uk-card-media]) .uk-search-medium .uk-search-input,.uk-card-secondary.uk-card-body .uk-search-medium .uk-search-input,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search-medium .uk-search-input,.uk-light .uk-search-medium .uk-search-input,.uk-offcanvas-bar .uk-search-medium .uk-search-input,.uk-overlay-primary .uk-search-medium .uk-search-input,.uk-section-primary:not(.uk-preserve-color) .uk-search-medium .uk-search-input,.uk-section-secondary:not(.uk-preserve-color) .uk-search-medium .uk-search-input,.uk-tile-primary:not(.uk-preserve-color) .uk-search-medium .uk-search-input,.uk-tile-secondary:not(.uk-preserve-color) .uk-search-medium .uk-search-input{background-color:transparent}.uk-card-primary.uk-card-body .uk-search-large .uk-search-input,.uk-card-primary>:not([class*=uk-card-media]) .uk-search-large .uk-search-input,.uk-card-secondary.uk-card-body .uk-search-large .uk-search-input,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search-large .uk-search-input,.uk-light .uk-search-large .uk-search-input,.uk-offcanvas-bar .uk-search-large .uk-search-input,.uk-overlay-primary .uk-search-large .uk-search-input,.uk-section-primary:not(.uk-preserve-color) .uk-search-large .uk-search-input,.uk-section-secondary:not(.uk-preserve-color) .uk-search-large .uk-search-input,.uk-tile-primary:not(.uk-preserve-color) .uk-search-large .uk-search-input,.uk-tile-secondary:not(.uk-preserve-color) .uk-search-large .uk-search-input{background-color:transparent}.uk-card-primary.uk-card-body .uk-search-toggle,.uk-card-primary>:not([class*=uk-card-media]) .uk-search-toggle,.uk-card-secondary.uk-card-body .uk-search-toggle,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search-toggle,.uk-light .uk-search-toggle,.uk-offcanvas-bar .uk-search-toggle,.uk-overlay-primary .uk-search-toggle,.uk-section-primary:not(.uk-preserve-color) .uk-search-toggle,.uk-section-secondary:not(.uk-preserve-color) .uk-search-toggle,.uk-tile-primary:not(.uk-preserve-color) .uk-search-toggle,.uk-tile-secondary:not(.uk-preserve-color) .uk-search-toggle{color:#ffffff80}.uk-card-primary.uk-card-body .uk-search-toggle:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-search-toggle:hover,.uk-card-secondary.uk-card-body .uk-search-toggle:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search-toggle:hover,.uk-light .uk-search-toggle:hover,.uk-offcanvas-bar .uk-search-toggle:hover,.uk-overlay-primary .uk-search-toggle:hover,.uk-section-primary:not(.uk-preserve-color) .uk-search-toggle:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-search-toggle:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-search-toggle:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-search-toggle:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-accordion-title,.uk-card-primary>:not([class*=uk-card-media]) .uk-accordion-title,.uk-card-secondary.uk-card-body .uk-accordion-title,.uk-card-secondary>:not([class*=uk-card-media]) .uk-accordion-title,.uk-light .uk-accordion-title,.uk-offcanvas-bar .uk-accordion-title,.uk-overlay-primary .uk-accordion-title,.uk-section-primary:not(.uk-preserve-color) .uk-accordion-title,.uk-section-secondary:not(.uk-preserve-color) .uk-accordion-title,.uk-tile-primary:not(.uk-preserve-color) .uk-accordion-title,.uk-tile-secondary:not(.uk-preserve-color) .uk-accordion-title{color:#fff}.uk-card-primary.uk-card-body .uk-accordion-title:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-accordion-title:hover,.uk-card-secondary.uk-card-body .uk-accordion-title:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-accordion-title:hover,.uk-light .uk-accordion-title:hover,.uk-offcanvas-bar .uk-accordion-title:hover,.uk-overlay-primary .uk-accordion-title:hover,.uk-section-primary:not(.uk-preserve-color) .uk-accordion-title:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-accordion-title:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-accordion-title:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-accordion-title:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-thumbnav>*>:after,.uk-card-primary>:not([class*=uk-card-media]) .uk-thumbnav>*>:after,.uk-card-secondary.uk-card-body .uk-thumbnav>*>:after,.uk-card-secondary>:not([class*=uk-card-media]) .uk-thumbnav>*>:after,.uk-light .uk-thumbnav>*>:after,.uk-offcanvas-bar .uk-thumbnav>*>:after,.uk-overlay-primary .uk-thumbnav>*>:after,.uk-section-primary:not(.uk-preserve-color) .uk-thumbnav>*>:after,.uk-section-secondary:not(.uk-preserve-color) .uk-thumbnav>*>:after,.uk-tile-primary:not(.uk-preserve-color) .uk-thumbnav>*>:after,.uk-tile-secondary:not(.uk-preserve-color) .uk-thumbnav>*>:after{background-image:linear-gradient(180deg,#0000,#0006)}.uk-card-primary.uk-card-body .uk-iconnav>*>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-iconnav>*>a,.uk-card-secondary.uk-card-body .uk-iconnav>*>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-iconnav>*>a,.uk-light .uk-iconnav>*>a,.uk-offcanvas-bar .uk-iconnav>*>a,.uk-overlay-primary .uk-iconnav>*>a,.uk-section-primary:not(.uk-preserve-color) .uk-iconnav>*>a,.uk-section-secondary:not(.uk-preserve-color) .uk-iconnav>*>a,.uk-tile-primary:not(.uk-preserve-color) .uk-iconnav>*>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-iconnav>*>a{color:#ffffff80}.uk-card-primary.uk-card-body .uk-iconnav>*>a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-iconnav>*>a:hover,.uk-card-secondary.uk-card-body .uk-iconnav>*>a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-iconnav>*>a:hover,.uk-light .uk-iconnav>*>a:hover,.uk-offcanvas-bar .uk-iconnav>*>a:hover,.uk-overlay-primary .uk-iconnav>*>a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-iconnav>*>a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-iconnav>*>a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-iconnav>*>a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-iconnav>*>a:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-iconnav>.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-iconnav>.uk-active>a,.uk-card-secondary.uk-card-body .uk-iconnav>.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-iconnav>.uk-active>a,.uk-light .uk-iconnav>.uk-active>a,.uk-offcanvas-bar .uk-iconnav>.uk-active>a,.uk-overlay-primary .uk-iconnav>.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-iconnav>.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-iconnav>.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-iconnav>.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-iconnav>.uk-active>a{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-grid-divider>:not(.uk-first-column):before,.uk-card-primary>:not([class*=uk-card-media]) .uk-grid-divider>:not(.uk-first-column):before,.uk-card-secondary.uk-card-body .uk-grid-divider>:not(.uk-first-column):before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-grid-divider>:not(.uk-first-column):before,.uk-light .uk-grid-divider>:not(.uk-first-column):before,.uk-offcanvas-bar .uk-grid-divider>:not(.uk-first-column):before,.uk-overlay-primary .uk-grid-divider>:not(.uk-first-column):before,.uk-section-primary:not(.uk-preserve-color) .uk-grid-divider>:not(.uk-first-column):before,.uk-section-secondary:not(.uk-preserve-color) .uk-grid-divider>:not(.uk-first-column):before,.uk-tile-primary:not(.uk-preserve-color) .uk-grid-divider>:not(.uk-first-column):before,.uk-tile-secondary:not(.uk-preserve-color) .uk-grid-divider>:not(.uk-first-column):before{border-left-color:#fff3}.uk-card-primary.uk-card-body .uk-grid-divider.uk-grid-stack>.uk-grid-margin:before,.uk-card-primary>:not([class*=uk-card-media]) .uk-grid-divider.uk-grid-stack>.uk-grid-margin:before,.uk-card-secondary.uk-card-body .uk-grid-divider.uk-grid-stack>.uk-grid-margin:before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-grid-divider.uk-grid-stack>.uk-grid-margin:before,.uk-light .uk-grid-divider.uk-grid-stack>.uk-grid-margin:before,.uk-offcanvas-bar .uk-grid-divider.uk-grid-stack>.uk-grid-margin:before,.uk-overlay-primary .uk-grid-divider.uk-grid-stack>.uk-grid-margin:before,.uk-section-primary:not(.uk-preserve-color) .uk-grid-divider.uk-grid-stack>.uk-grid-margin:before,.uk-section-secondary:not(.uk-preserve-color) .uk-grid-divider.uk-grid-stack>.uk-grid-margin:before,.uk-tile-primary:not(.uk-preserve-color) .uk-grid-divider.uk-grid-stack>.uk-grid-margin:before,.uk-tile-secondary:not(.uk-preserve-color) .uk-grid-divider.uk-grid-stack>.uk-grid-margin:before{border-top-color:#fff3}.uk-card-primary.uk-card-body .uk-nav-default>li>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-default>li>a,.uk-card-secondary.uk-card-body .uk-nav-default>li>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-default>li>a,.uk-light .uk-nav-default>li>a,.uk-offcanvas-bar .uk-nav-default>li>a,.uk-overlay-primary .uk-nav-default>li>a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-default>li>a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-default>li>a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-default>li>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-default>li>a{color:#ffffff80}.uk-card-primary.uk-card-body .uk-nav-default>li>a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-default>li>a:hover,.uk-card-secondary.uk-card-body .uk-nav-default>li>a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-default>li>a:hover,.uk-light .uk-nav-default>li>a:hover,.uk-offcanvas-bar .uk-nav-default>li>a:hover,.uk-overlay-primary .uk-nav-default>li>a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-nav-default>li>a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-default>li>a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-default>li>a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-default>li>a:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-nav-default>li.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-default>li.uk-active>a,.uk-card-secondary.uk-card-body .uk-nav-default>li.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-default>li.uk-active>a,.uk-light .uk-nav-default>li.uk-active>a,.uk-offcanvas-bar .uk-nav-default>li.uk-active>a,.uk-overlay-primary .uk-nav-default>li.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-default>li.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-default>li.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-default>li.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-default>li.uk-active>a{color:#fff}.uk-card-primary.uk-card-body .uk-nav-default .uk-nav-header,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-header,.uk-card-secondary.uk-card-body .uk-nav-default .uk-nav-header,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-header,.uk-light .uk-nav-default .uk-nav-header,.uk-offcanvas-bar .uk-nav-default .uk-nav-header,.uk-overlay-primary .uk-nav-default .uk-nav-header,.uk-section-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-header,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-header,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-header,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-header{color:#fff}.uk-card-primary.uk-card-body .uk-nav-default .uk-nav-divider,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-divider,.uk-card-secondary.uk-card-body .uk-nav-default .uk-nav-divider,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-divider,.uk-light .uk-nav-default .uk-nav-divider,.uk-offcanvas-bar .uk-nav-default .uk-nav-divider,.uk-overlay-primary .uk-nav-default .uk-nav-divider,.uk-section-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-divider,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-divider,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-divider,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-divider{border-top-color:#fff3}.uk-card-primary.uk-card-body .uk-nav-default .uk-nav-sub a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-sub a,.uk-card-secondary.uk-card-body .uk-nav-default .uk-nav-sub a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-sub a,.uk-light .uk-nav-default .uk-nav-sub a,.uk-offcanvas-bar .uk-nav-default .uk-nav-sub a,.uk-overlay-primary .uk-nav-default .uk-nav-sub a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub a{color:#ffffff80}.uk-card-primary.uk-card-body .uk-nav-default .uk-nav-sub a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-sub a:hover,.uk-card-secondary.uk-card-body .uk-nav-default .uk-nav-sub a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-sub a:hover,.uk-light .uk-nav-default .uk-nav-sub a:hover,.uk-offcanvas-bar .uk-nav-default .uk-nav-sub a:hover,.uk-overlay-primary .uk-nav-default .uk-nav-sub a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub a:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-card-secondary.uk-card-body .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-light .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-offcanvas-bar .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-overlay-primary .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub li.uk-active>a{color:#fff}.uk-card-primary.uk-card-body .uk-nav-primary>li>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-primary>li>a,.uk-card-secondary.uk-card-body .uk-nav-primary>li>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-primary>li>a,.uk-light .uk-nav-primary>li>a,.uk-offcanvas-bar .uk-nav-primary>li>a,.uk-overlay-primary .uk-nav-primary>li>a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-primary>li>a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-primary>li>a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-primary>li>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-primary>li>a{color:#ffffff80}.uk-card-primary.uk-card-body .uk-nav-primary>li>a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-primary>li>a:hover,.uk-card-secondary.uk-card-body .uk-nav-primary>li>a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-primary>li>a:hover,.uk-light .uk-nav-primary>li>a:hover,.uk-offcanvas-bar .uk-nav-primary>li>a:hover,.uk-overlay-primary .uk-nav-primary>li>a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-nav-primary>li>a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-primary>li>a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-primary>li>a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-primary>li>a:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-nav-primary>li.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-primary>li.uk-active>a,.uk-card-secondary.uk-card-body .uk-nav-primary>li.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-primary>li.uk-active>a,.uk-light .uk-nav-primary>li.uk-active>a,.uk-offcanvas-bar .uk-nav-primary>li.uk-active>a,.uk-overlay-primary .uk-nav-primary>li.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-primary>li.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-primary>li.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-primary>li.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-primary>li.uk-active>a{color:#fff}.uk-card-primary.uk-card-body .uk-nav-primary .uk-nav-header,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-header,.uk-card-secondary.uk-card-body .uk-nav-primary .uk-nav-header,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-header,.uk-light .uk-nav-primary .uk-nav-header,.uk-offcanvas-bar .uk-nav-primary .uk-nav-header,.uk-overlay-primary .uk-nav-primary .uk-nav-header,.uk-section-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-header,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-header,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-header,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-header{color:#fff}.uk-card-primary.uk-card-body .uk-nav-primary .uk-nav-divider,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-divider,.uk-card-secondary.uk-card-body .uk-nav-primary .uk-nav-divider,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-divider,.uk-light .uk-nav-primary .uk-nav-divider,.uk-offcanvas-bar .uk-nav-primary .uk-nav-divider,.uk-overlay-primary .uk-nav-primary .uk-nav-divider,.uk-section-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-divider,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-divider,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-divider,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-divider{border-top-color:#fff3}.uk-card-primary.uk-card-body .uk-nav-primary .uk-nav-sub a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-sub a,.uk-card-secondary.uk-card-body .uk-nav-primary .uk-nav-sub a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-sub a,.uk-light .uk-nav-primary .uk-nav-sub a,.uk-offcanvas-bar .uk-nav-primary .uk-nav-sub a,.uk-overlay-primary .uk-nav-primary .uk-nav-sub a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub a{color:#ffffff80}.uk-card-primary.uk-card-body .uk-nav-primary .uk-nav-sub a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-sub a:hover,.uk-card-secondary.uk-card-body .uk-nav-primary .uk-nav-sub a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-sub a:hover,.uk-light .uk-nav-primary .uk-nav-sub a:hover,.uk-offcanvas-bar .uk-nav-primary .uk-nav-sub a:hover,.uk-overlay-primary .uk-nav-primary .uk-nav-sub a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub a:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-card-secondary.uk-card-body .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-light .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-offcanvas-bar .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-overlay-primary .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub li.uk-active>a{color:#fff}.uk-card-primary.uk-card-body .uk-nav-secondary>li>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary>li>a,.uk-card-secondary.uk-card-body .uk-nav-secondary>li>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary>li>a,.uk-light .uk-nav-secondary>li>a,.uk-offcanvas-bar .uk-nav-secondary>li>a,.uk-overlay-primary .uk-nav-secondary>li>a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary>li>a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary>li>a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary>li>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary>li>a{color:#fff}.uk-card-primary.uk-card-body .uk-nav-secondary>li>a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary>li>a:hover,.uk-card-secondary.uk-card-body .uk-nav-secondary>li>a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary>li>a:hover,.uk-light .uk-nav-secondary>li>a:hover,.uk-offcanvas-bar .uk-nav-secondary>li>a:hover,.uk-overlay-primary .uk-nav-secondary>li>a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary>li>a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary>li>a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary>li>a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary>li>a:hover{color:#fff;background-color:#ffffff1a}.uk-card-primary.uk-card-body .uk-nav-secondary>li.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary>li.uk-active>a,.uk-card-secondary.uk-card-body .uk-nav-secondary>li.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary>li.uk-active>a,.uk-light .uk-nav-secondary>li.uk-active>a,.uk-offcanvas-bar .uk-nav-secondary>li.uk-active>a,.uk-overlay-primary .uk-nav-secondary>li.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary>li.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary>li.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary>li.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary>li.uk-active>a{color:#fff;background-color:#ffffff1a}.uk-card-primary.uk-card-body .uk-nav-secondary .uk-nav-subtitle,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-subtitle,.uk-card-secondary.uk-card-body .uk-nav-secondary .uk-nav-subtitle,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-subtitle,.uk-light .uk-nav-secondary .uk-nav-subtitle,.uk-offcanvas-bar .uk-nav-secondary .uk-nav-subtitle,.uk-overlay-primary .uk-nav-secondary .uk-nav-subtitle,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-subtitle,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-subtitle,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-subtitle,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-subtitle{color:#ffffff80}.uk-card-primary.uk-card-body .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-card-secondary.uk-card-body .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-light .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-offcanvas-bar .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-overlay-primary .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary>li>a:hover .uk-nav-subtitle{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-card-secondary.uk-card-body .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-light .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-offcanvas-bar .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-overlay-primary .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle{color:#fff}.uk-card-primary.uk-card-body .uk-nav-secondary .uk-nav-header,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-header,.uk-card-secondary.uk-card-body .uk-nav-secondary .uk-nav-header,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-header,.uk-light .uk-nav-secondary .uk-nav-header,.uk-offcanvas-bar .uk-nav-secondary .uk-nav-header,.uk-overlay-primary .uk-nav-secondary .uk-nav-header,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-header,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-header,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-header,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-header{color:#fff}.uk-card-primary.uk-card-body .uk-nav-secondary .uk-nav-divider,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-divider,.uk-card-secondary.uk-card-body .uk-nav-secondary .uk-nav-divider,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-divider,.uk-light .uk-nav-secondary .uk-nav-divider,.uk-offcanvas-bar .uk-nav-secondary .uk-nav-divider,.uk-overlay-primary .uk-nav-secondary .uk-nav-divider,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-divider,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-divider,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-divider,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-divider{border-top-color:#fff3}.uk-card-primary.uk-card-body .uk-nav-secondary .uk-nav-sub a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-sub a,.uk-card-secondary.uk-card-body .uk-nav-secondary .uk-nav-sub a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-sub a,.uk-light .uk-nav-secondary .uk-nav-sub a,.uk-offcanvas-bar .uk-nav-secondary .uk-nav-sub a,.uk-overlay-primary .uk-nav-secondary .uk-nav-sub a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub a{color:#ffffff80}.uk-card-primary.uk-card-body .uk-nav-secondary .uk-nav-sub a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-sub a:hover,.uk-card-secondary.uk-card-body .uk-nav-secondary .uk-nav-sub a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-sub a:hover,.uk-light .uk-nav-secondary .uk-nav-sub a:hover,.uk-offcanvas-bar .uk-nav-secondary .uk-nav-sub a:hover,.uk-overlay-primary .uk-nav-secondary .uk-nav-sub a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub a:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-card-secondary.uk-card-body .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-light .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-offcanvas-bar .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-overlay-primary .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub li.uk-active>a{color:#fff}.uk-card-primary.uk-card-body .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-card-primary>:not([class*=uk-card-media]) .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-card-secondary.uk-card-body .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-light .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-offcanvas-bar .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-overlay-primary .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-section-primary:not(.uk-preserve-color) .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-section-secondary:not(.uk-preserve-color) .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-tile-primary:not(.uk-preserve-color) .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-tile-secondary:not(.uk-preserve-color) .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider){border-top-color:#fff3}.uk-card-primary.uk-card-body .uk-navbar-nav>li>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-navbar-nav>li>a,.uk-card-secondary.uk-card-body .uk-navbar-nav>li>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-navbar-nav>li>a,.uk-light .uk-navbar-nav>li>a,.uk-offcanvas-bar .uk-navbar-nav>li>a,.uk-overlay-primary .uk-navbar-nav>li>a,.uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a,.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a,.uk-tile-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a{color:#ffffff80}.uk-card-primary.uk-card-body .uk-navbar-nav>li:hover>a,.uk-card-primary.uk-card-body .uk-navbar-nav>li>a[aria-expanded=true],.uk-card-primary>:not([class*=uk-card-media]) .uk-navbar-nav>li:hover>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-navbar-nav>li>a[aria-expanded=true],.uk-card-secondary.uk-card-body .uk-navbar-nav>li:hover>a,.uk-card-secondary.uk-card-body .uk-navbar-nav>li>a[aria-expanded=true],.uk-card-secondary>:not([class*=uk-card-media]) .uk-navbar-nav>li:hover>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-navbar-nav>li>a[aria-expanded=true],.uk-light .uk-navbar-nav>li:hover>a,.uk-light .uk-navbar-nav>li>a[aria-expanded=true],.uk-offcanvas-bar .uk-navbar-nav>li:hover>a,.uk-offcanvas-bar .uk-navbar-nav>li>a[aria-expanded=true],.uk-overlay-primary .uk-navbar-nav>li:hover>a,.uk-overlay-primary .uk-navbar-nav>li>a[aria-expanded=true],.uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li:hover>a,.uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a[aria-expanded=true],.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li:hover>a,.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a[aria-expanded=true],.uk-tile-primary:not(.uk-preserve-color) .uk-navbar-nav>li:hover>a,.uk-tile-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a[aria-expanded=true],.uk-tile-secondary:not(.uk-preserve-color) .uk-navbar-nav>li:hover>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a[aria-expanded=true]{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-navbar-nav>li>a:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-navbar-nav>li>a:active,.uk-card-secondary.uk-card-body .uk-navbar-nav>li>a:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-navbar-nav>li>a:active,.uk-light .uk-navbar-nav>li>a:active,.uk-offcanvas-bar .uk-navbar-nav>li>a:active,.uk-overlay-primary .uk-navbar-nav>li>a:active,.uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a:active,.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a:active,.uk-tile-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a:active{color:#fff}.uk-card-primary.uk-card-body .uk-navbar-nav>li.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-navbar-nav>li.uk-active>a,.uk-card-secondary.uk-card-body .uk-navbar-nav>li.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-navbar-nav>li.uk-active>a,.uk-light .uk-navbar-nav>li.uk-active>a,.uk-offcanvas-bar .uk-navbar-nav>li.uk-active>a,.uk-overlay-primary .uk-navbar-nav>li.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-navbar-nav>li.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-navbar-nav>li.uk-active>a{color:#fff}.uk-card-primary.uk-card-body .uk-navbar-item,.uk-card-primary>:not([class*=uk-card-media]) .uk-navbar-item,.uk-card-secondary.uk-card-body .uk-navbar-item,.uk-card-secondary>:not([class*=uk-card-media]) .uk-navbar-item,.uk-light .uk-navbar-item,.uk-offcanvas-bar .uk-navbar-item,.uk-overlay-primary .uk-navbar-item,.uk-section-primary:not(.uk-preserve-color) .uk-navbar-item,.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-item,.uk-tile-primary:not(.uk-preserve-color) .uk-navbar-item,.uk-tile-secondary:not(.uk-preserve-color) .uk-navbar-item{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-navbar-toggle,.uk-card-primary>:not([class*=uk-card-media]) .uk-navbar-toggle,.uk-card-secondary.uk-card-body .uk-navbar-toggle,.uk-card-secondary>:not([class*=uk-card-media]) .uk-navbar-toggle,.uk-light .uk-navbar-toggle,.uk-offcanvas-bar .uk-navbar-toggle,.uk-overlay-primary .uk-navbar-toggle,.uk-section-primary:not(.uk-preserve-color) .uk-navbar-toggle,.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-toggle,.uk-tile-primary:not(.uk-preserve-color) .uk-navbar-toggle,.uk-tile-secondary:not(.uk-preserve-color) .uk-navbar-toggle{color:#ffffff80}.uk-card-primary.uk-card-body .uk-navbar-toggle:hover,.uk-card-primary.uk-card-body .uk-navbar-toggle[aria-expanded=true],.uk-card-primary>:not([class*=uk-card-media]) .uk-navbar-toggle:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-navbar-toggle[aria-expanded=true],.uk-card-secondary.uk-card-body .uk-navbar-toggle:hover,.uk-card-secondary.uk-card-body .uk-navbar-toggle[aria-expanded=true],.uk-card-secondary>:not([class*=uk-card-media]) .uk-navbar-toggle:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-navbar-toggle[aria-expanded=true],.uk-light .uk-navbar-toggle:hover,.uk-light .uk-navbar-toggle[aria-expanded=true],.uk-offcanvas-bar .uk-navbar-toggle:hover,.uk-offcanvas-bar .uk-navbar-toggle[aria-expanded=true],.uk-overlay-primary .uk-navbar-toggle:hover,.uk-overlay-primary .uk-navbar-toggle[aria-expanded=true],.uk-section-primary:not(.uk-preserve-color) .uk-navbar-toggle:hover,.uk-section-primary:not(.uk-preserve-color) .uk-navbar-toggle[aria-expanded=true],.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-toggle:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-toggle[aria-expanded=true],.uk-tile-primary:not(.uk-preserve-color) .uk-navbar-toggle:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-navbar-toggle[aria-expanded=true],.uk-tile-secondary:not(.uk-preserve-color) .uk-navbar-toggle:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-navbar-toggle[aria-expanded=true]{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-subnav>*>:first-child,.uk-card-primary>:not([class*=uk-card-media]) .uk-subnav>*>:first-child,.uk-card-secondary.uk-card-body .uk-subnav>*>:first-child,.uk-card-secondary>:not([class*=uk-card-media]) .uk-subnav>*>:first-child,.uk-light .uk-subnav>*>:first-child,.uk-offcanvas-bar .uk-subnav>*>:first-child,.uk-overlay-primary .uk-subnav>*>:first-child,.uk-section-primary:not(.uk-preserve-color) .uk-subnav>*>:first-child,.uk-section-secondary:not(.uk-preserve-color) .uk-subnav>*>:first-child,.uk-tile-primary:not(.uk-preserve-color) .uk-subnav>*>:first-child,.uk-tile-secondary:not(.uk-preserve-color) .uk-subnav>*>:first-child{color:#ffffff80}.uk-card-primary.uk-card-body .uk-subnav>*>a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-subnav>*>a:hover,.uk-card-secondary.uk-card-body .uk-subnav>*>a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-subnav>*>a:hover,.uk-light .uk-subnav>*>a:hover,.uk-offcanvas-bar .uk-subnav>*>a:hover,.uk-overlay-primary .uk-subnav>*>a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-subnav>*>a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-subnav>*>a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-subnav>*>a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-subnav>*>a:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-subnav>.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-subnav>.uk-active>a,.uk-card-secondary.uk-card-body .uk-subnav>.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-subnav>.uk-active>a,.uk-light .uk-subnav>.uk-active>a,.uk-offcanvas-bar .uk-subnav>.uk-active>a,.uk-overlay-primary .uk-subnav>.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-subnav>.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-subnav>.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-subnav>.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-subnav>.uk-active>a{color:#fff}.uk-card-primary.uk-card-body .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column):before,.uk-card-primary>:not([class*=uk-card-media]) .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column):before,.uk-card-secondary.uk-card-body .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column):before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column):before,.uk-light .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column):before,.uk-offcanvas-bar .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column):before,.uk-overlay-primary .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column):before,.uk-section-primary:not(.uk-preserve-color) .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column):before,.uk-section-secondary:not(.uk-preserve-color) .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column):before,.uk-tile-primary:not(.uk-preserve-color) .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column):before,.uk-tile-secondary:not(.uk-preserve-color) .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column):before{border-left-color:#fff3}.uk-card-primary.uk-card-body .uk-subnav-pill>*>:first-child,.uk-card-primary>:not([class*=uk-card-media]) .uk-subnav-pill>*>:first-child,.uk-card-secondary.uk-card-body .uk-subnav-pill>*>:first-child,.uk-card-secondary>:not([class*=uk-card-media]) .uk-subnav-pill>*>:first-child,.uk-light .uk-subnav-pill>*>:first-child,.uk-offcanvas-bar .uk-subnav-pill>*>:first-child,.uk-overlay-primary .uk-subnav-pill>*>:first-child,.uk-section-primary:not(.uk-preserve-color) .uk-subnav-pill>*>:first-child,.uk-section-secondary:not(.uk-preserve-color) .uk-subnav-pill>*>:first-child,.uk-tile-primary:not(.uk-preserve-color) .uk-subnav-pill>*>:first-child,.uk-tile-secondary:not(.uk-preserve-color) .uk-subnav-pill>*>:first-child{background-color:transparent;color:#ffffff80}.uk-card-primary.uk-card-body .uk-subnav-pill>*>a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-subnav-pill>*>a:hover,.uk-card-secondary.uk-card-body .uk-subnav-pill>*>a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-subnav-pill>*>a:hover,.uk-light .uk-subnav-pill>*>a:hover,.uk-offcanvas-bar .uk-subnav-pill>*>a:hover,.uk-overlay-primary .uk-subnav-pill>*>a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-subnav-pill>*>a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-subnav-pill>*>a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-subnav-pill>*>a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-subnav-pill>*>a:hover{background-color:#ffffff1a;color:#ffffffb3}.uk-card-primary.uk-card-body .uk-subnav-pill>*>a:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-subnav-pill>*>a:active,.uk-card-secondary.uk-card-body .uk-subnav-pill>*>a:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-subnav-pill>*>a:active,.uk-light .uk-subnav-pill>*>a:active,.uk-offcanvas-bar .uk-subnav-pill>*>a:active,.uk-overlay-primary .uk-subnav-pill>*>a:active,.uk-section-primary:not(.uk-preserve-color) .uk-subnav-pill>*>a:active,.uk-section-secondary:not(.uk-preserve-color) .uk-subnav-pill>*>a:active,.uk-tile-primary:not(.uk-preserve-color) .uk-subnav-pill>*>a:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-subnav-pill>*>a:active{background-color:#ffffff1a;color:#ffffffb3}.uk-card-primary.uk-card-body .uk-subnav-pill>.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-subnav-pill>.uk-active>a,.uk-card-secondary.uk-card-body .uk-subnav-pill>.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-subnav-pill>.uk-active>a,.uk-light .uk-subnav-pill>.uk-active>a,.uk-offcanvas-bar .uk-subnav-pill>.uk-active>a,.uk-overlay-primary .uk-subnav-pill>.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-subnav-pill>.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-subnav-pill>.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-subnav-pill>.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-subnav-pill>.uk-active>a{background-color:#fff;color:#666}.uk-card-primary.uk-card-body .uk-subnav>.uk-disabled>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-subnav>.uk-disabled>a,.uk-card-secondary.uk-card-body .uk-subnav>.uk-disabled>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-subnav>.uk-disabled>a,.uk-light .uk-subnav>.uk-disabled>a,.uk-offcanvas-bar .uk-subnav>.uk-disabled>a,.uk-overlay-primary .uk-subnav>.uk-disabled>a,.uk-section-primary:not(.uk-preserve-color) .uk-subnav>.uk-disabled>a,.uk-section-secondary:not(.uk-preserve-color) .uk-subnav>.uk-disabled>a,.uk-tile-primary:not(.uk-preserve-color) .uk-subnav>.uk-disabled>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-subnav>.uk-disabled>a{color:#ffffff80}.uk-card-primary.uk-card-body .uk-breadcrumb>*>*,.uk-card-primary>:not([class*=uk-card-media]) .uk-breadcrumb>*>*,.uk-card-secondary.uk-card-body .uk-breadcrumb>*>*,.uk-card-secondary>:not([class*=uk-card-media]) .uk-breadcrumb>*>*,.uk-light .uk-breadcrumb>*>*,.uk-offcanvas-bar .uk-breadcrumb>*>*,.uk-overlay-primary .uk-breadcrumb>*>*,.uk-section-primary:not(.uk-preserve-color) .uk-breadcrumb>*>*,.uk-section-secondary:not(.uk-preserve-color) .uk-breadcrumb>*>*,.uk-tile-primary:not(.uk-preserve-color) .uk-breadcrumb>*>*,.uk-tile-secondary:not(.uk-preserve-color) .uk-breadcrumb>*>*{color:#ffffff80}.uk-card-primary.uk-card-body .uk-breadcrumb>*>:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-breadcrumb>*>:hover,.uk-card-secondary.uk-card-body .uk-breadcrumb>*>:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-breadcrumb>*>:hover,.uk-light .uk-breadcrumb>*>:hover,.uk-offcanvas-bar .uk-breadcrumb>*>:hover,.uk-overlay-primary .uk-breadcrumb>*>:hover,.uk-section-primary:not(.uk-preserve-color) .uk-breadcrumb>*>:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-breadcrumb>*>:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-breadcrumb>*>:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-breadcrumb>*>:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-breadcrumb>:last-child>*,.uk-card-primary>:not([class*=uk-card-media]) .uk-breadcrumb>:last-child>*,.uk-card-secondary.uk-card-body .uk-breadcrumb>:last-child>*,.uk-card-secondary>:not([class*=uk-card-media]) .uk-breadcrumb>:last-child>*,.uk-light .uk-breadcrumb>:last-child>*,.uk-offcanvas-bar .uk-breadcrumb>:last-child>*,.uk-overlay-primary .uk-breadcrumb>:last-child>*,.uk-section-primary:not(.uk-preserve-color) .uk-breadcrumb>:last-child>*,.uk-section-secondary:not(.uk-preserve-color) .uk-breadcrumb>:last-child>*,.uk-tile-primary:not(.uk-preserve-color) .uk-breadcrumb>:last-child>*,.uk-tile-secondary:not(.uk-preserve-color) .uk-breadcrumb>:last-child>*{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column):before,.uk-card-primary>:not([class*=uk-card-media]) .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column):before,.uk-card-secondary.uk-card-body .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column):before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column):before,.uk-light .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column):before,.uk-offcanvas-bar .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column):before,.uk-overlay-primary .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column):before,.uk-section-primary:not(.uk-preserve-color) .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column):before,.uk-section-secondary:not(.uk-preserve-color) .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column):before,.uk-tile-primary:not(.uk-preserve-color) .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column):before,.uk-tile-secondary:not(.uk-preserve-color) .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column):before{color:#ffffff80}.uk-card-primary.uk-card-body .uk-pagination>*>*,.uk-card-primary>:not([class*=uk-card-media]) .uk-pagination>*>*,.uk-card-secondary.uk-card-body .uk-pagination>*>*,.uk-card-secondary>:not([class*=uk-card-media]) .uk-pagination>*>*,.uk-light .uk-pagination>*>*,.uk-offcanvas-bar .uk-pagination>*>*,.uk-overlay-primary .uk-pagination>*>*,.uk-section-primary:not(.uk-preserve-color) .uk-pagination>*>*,.uk-section-secondary:not(.uk-preserve-color) .uk-pagination>*>*,.uk-tile-primary:not(.uk-preserve-color) .uk-pagination>*>*,.uk-tile-secondary:not(.uk-preserve-color) .uk-pagination>*>*{color:#ffffff80}.uk-card-primary.uk-card-body .uk-pagination>*>:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-pagination>*>:hover,.uk-card-secondary.uk-card-body .uk-pagination>*>:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-pagination>*>:hover,.uk-light .uk-pagination>*>:hover,.uk-offcanvas-bar .uk-pagination>*>:hover,.uk-overlay-primary .uk-pagination>*>:hover,.uk-section-primary:not(.uk-preserve-color) .uk-pagination>*>:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-pagination>*>:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-pagination>*>:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-pagination>*>:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-pagination>.uk-active>*,.uk-card-primary>:not([class*=uk-card-media]) .uk-pagination>.uk-active>*,.uk-card-secondary.uk-card-body .uk-pagination>.uk-active>*,.uk-card-secondary>:not([class*=uk-card-media]) .uk-pagination>.uk-active>*,.uk-light .uk-pagination>.uk-active>*,.uk-offcanvas-bar .uk-pagination>.uk-active>*,.uk-overlay-primary .uk-pagination>.uk-active>*,.uk-section-primary:not(.uk-preserve-color) .uk-pagination>.uk-active>*,.uk-section-secondary:not(.uk-preserve-color) .uk-pagination>.uk-active>*,.uk-tile-primary:not(.uk-preserve-color) .uk-pagination>.uk-active>*,.uk-tile-secondary:not(.uk-preserve-color) .uk-pagination>.uk-active>*{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-pagination>.uk-disabled>*,.uk-card-primary>:not([class*=uk-card-media]) .uk-pagination>.uk-disabled>*,.uk-card-secondary.uk-card-body .uk-pagination>.uk-disabled>*,.uk-card-secondary>:not([class*=uk-card-media]) .uk-pagination>.uk-disabled>*,.uk-light .uk-pagination>.uk-disabled>*,.uk-offcanvas-bar .uk-pagination>.uk-disabled>*,.uk-overlay-primary .uk-pagination>.uk-disabled>*,.uk-section-primary:not(.uk-preserve-color) .uk-pagination>.uk-disabled>*,.uk-section-secondary:not(.uk-preserve-color) .uk-pagination>.uk-disabled>*,.uk-tile-primary:not(.uk-preserve-color) .uk-pagination>.uk-disabled>*,.uk-tile-secondary:not(.uk-preserve-color) .uk-pagination>.uk-disabled>*{color:#ffffff80}.uk-card-primary.uk-card-body .uk-tab:before,.uk-card-primary>:not([class*=uk-card-media]) .uk-tab:before,.uk-card-secondary.uk-card-body .uk-tab:before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-tab:before,.uk-light .uk-tab:before,.uk-offcanvas-bar .uk-tab:before,.uk-overlay-primary .uk-tab:before,.uk-section-primary:not(.uk-preserve-color) .uk-tab:before,.uk-section-secondary:not(.uk-preserve-color) .uk-tab:before,.uk-tile-primary:not(.uk-preserve-color) .uk-tab:before,.uk-tile-secondary:not(.uk-preserve-color) .uk-tab:before{border-color:#fff3}.uk-card-primary.uk-card-body .uk-tab>*>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-tab>*>a,.uk-card-secondary.uk-card-body .uk-tab>*>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-tab>*>a,.uk-light .uk-tab>*>a,.uk-offcanvas-bar .uk-tab>*>a,.uk-overlay-primary .uk-tab>*>a,.uk-section-primary:not(.uk-preserve-color) .uk-tab>*>a,.uk-section-secondary:not(.uk-preserve-color) .uk-tab>*>a,.uk-tile-primary:not(.uk-preserve-color) .uk-tab>*>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-tab>*>a{color:#ffffff80}.uk-card-primary.uk-card-body .uk-tab>*>a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-tab>*>a:hover,.uk-card-secondary.uk-card-body .uk-tab>*>a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-tab>*>a:hover,.uk-light .uk-tab>*>a:hover,.uk-offcanvas-bar .uk-tab>*>a:hover,.uk-overlay-primary .uk-tab>*>a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-tab>*>a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-tab>*>a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-tab>*>a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-tab>*>a:hover{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-tab>.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-tab>.uk-active>a,.uk-card-secondary.uk-card-body .uk-tab>.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-tab>.uk-active>a,.uk-light .uk-tab>.uk-active>a,.uk-offcanvas-bar .uk-tab>.uk-active>a,.uk-overlay-primary .uk-tab>.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-tab>.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-tab>.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-tab>.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-tab>.uk-active>a{color:#fff;border-color:#fff}.uk-card-primary.uk-card-body .uk-tab>.uk-disabled>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-tab>.uk-disabled>a,.uk-card-secondary.uk-card-body .uk-tab>.uk-disabled>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-tab>.uk-disabled>a,.uk-light .uk-tab>.uk-disabled>a,.uk-offcanvas-bar .uk-tab>.uk-disabled>a,.uk-overlay-primary .uk-tab>.uk-disabled>a,.uk-section-primary:not(.uk-preserve-color) .uk-tab>.uk-disabled>a,.uk-section-secondary:not(.uk-preserve-color) .uk-tab>.uk-disabled>a,.uk-tile-primary:not(.uk-preserve-color) .uk-tab>.uk-disabled>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-tab>.uk-disabled>a{color:#ffffff80}.uk-card-primary.uk-card-body .uk-slidenav,.uk-card-primary>:not([class*=uk-card-media]) .uk-slidenav,.uk-card-secondary.uk-card-body .uk-slidenav,.uk-card-secondary>:not([class*=uk-card-media]) .uk-slidenav,.uk-light .uk-slidenav,.uk-offcanvas-bar .uk-slidenav,.uk-overlay-primary .uk-slidenav,.uk-section-primary:not(.uk-preserve-color) .uk-slidenav,.uk-section-secondary:not(.uk-preserve-color) .uk-slidenav,.uk-tile-primary:not(.uk-preserve-color) .uk-slidenav,.uk-tile-secondary:not(.uk-preserve-color) .uk-slidenav{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-slidenav:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-slidenav:hover,.uk-card-secondary.uk-card-body .uk-slidenav:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-slidenav:hover,.uk-light .uk-slidenav:hover,.uk-offcanvas-bar .uk-slidenav:hover,.uk-overlay-primary .uk-slidenav:hover,.uk-section-primary:not(.uk-preserve-color) .uk-slidenav:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-slidenav:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-slidenav:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-slidenav:hover{color:#fffffff2}.uk-card-primary.uk-card-body .uk-slidenav:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-slidenav:active,.uk-card-secondary.uk-card-body .uk-slidenav:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-slidenav:active,.uk-light .uk-slidenav:active,.uk-offcanvas-bar .uk-slidenav:active,.uk-overlay-primary .uk-slidenav:active,.uk-section-primary:not(.uk-preserve-color) .uk-slidenav:active,.uk-section-secondary:not(.uk-preserve-color) .uk-slidenav:active,.uk-tile-primary:not(.uk-preserve-color) .uk-slidenav:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-slidenav:active{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-dotnav>*>*,.uk-card-primary>:not([class*=uk-card-media]) .uk-dotnav>*>*,.uk-card-secondary.uk-card-body .uk-dotnav>*>*,.uk-card-secondary>:not([class*=uk-card-media]) .uk-dotnav>*>*,.uk-light .uk-dotnav>*>*,.uk-offcanvas-bar .uk-dotnav>*>*,.uk-overlay-primary .uk-dotnav>*>*,.uk-section-primary:not(.uk-preserve-color) .uk-dotnav>*>*,.uk-section-secondary:not(.uk-preserve-color) .uk-dotnav>*>*,.uk-tile-primary:not(.uk-preserve-color) .uk-dotnav>*>*,.uk-tile-secondary:not(.uk-preserve-color) .uk-dotnav>*>*{background-color:transparent;border-color:#ffffffe6}.uk-card-primary.uk-card-body .uk-dotnav>*>:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-dotnav>*>:hover,.uk-card-secondary.uk-card-body .uk-dotnav>*>:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-dotnav>*>:hover,.uk-light .uk-dotnav>*>:hover,.uk-offcanvas-bar .uk-dotnav>*>:hover,.uk-overlay-primary .uk-dotnav>*>:hover,.uk-section-primary:not(.uk-preserve-color) .uk-dotnav>*>:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-dotnav>*>:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-dotnav>*>:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-dotnav>*>:hover{background-color:#ffffffe6;border-color:transparent}.uk-card-primary.uk-card-body .uk-dotnav>*>:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-dotnav>*>:active,.uk-card-secondary.uk-card-body .uk-dotnav>*>:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-dotnav>*>:active,.uk-light .uk-dotnav>*>:active,.uk-offcanvas-bar .uk-dotnav>*>:active,.uk-overlay-primary .uk-dotnav>*>:active,.uk-section-primary:not(.uk-preserve-color) .uk-dotnav>*>:active,.uk-section-secondary:not(.uk-preserve-color) .uk-dotnav>*>:active,.uk-tile-primary:not(.uk-preserve-color) .uk-dotnav>*>:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-dotnav>*>:active{background-color:#ffffff80;border-color:transparent}.uk-card-primary.uk-card-body .uk-dotnav>.uk-active>*,.uk-card-primary>:not([class*=uk-card-media]) .uk-dotnav>.uk-active>*,.uk-card-secondary.uk-card-body .uk-dotnav>.uk-active>*,.uk-card-secondary>:not([class*=uk-card-media]) .uk-dotnav>.uk-active>*,.uk-light .uk-dotnav>.uk-active>*,.uk-offcanvas-bar .uk-dotnav>.uk-active>*,.uk-overlay-primary .uk-dotnav>.uk-active>*,.uk-section-primary:not(.uk-preserve-color) .uk-dotnav>.uk-active>*,.uk-section-secondary:not(.uk-preserve-color) .uk-dotnav>.uk-active>*,.uk-tile-primary:not(.uk-preserve-color) .uk-dotnav>.uk-active>*,.uk-tile-secondary:not(.uk-preserve-color) .uk-dotnav>.uk-active>*{background-color:#ffffffe6;border-color:transparent}.uk-card-primary.uk-card-body .uk-text-lead,.uk-card-primary>:not([class*=uk-card-media]) .uk-text-lead,.uk-card-secondary.uk-card-body .uk-text-lead,.uk-card-secondary>:not([class*=uk-card-media]) .uk-text-lead,.uk-light .uk-text-lead,.uk-offcanvas-bar .uk-text-lead,.uk-overlay-primary .uk-text-lead,.uk-section-primary:not(.uk-preserve-color) .uk-text-lead,.uk-section-secondary:not(.uk-preserve-color) .uk-text-lead,.uk-tile-primary:not(.uk-preserve-color) .uk-text-lead,.uk-tile-secondary:not(.uk-preserve-color) .uk-text-lead{color:#ffffffb3}.uk-card-primary.uk-card-body .uk-text-meta,.uk-card-primary>:not([class*=uk-card-media]) .uk-text-meta,.uk-card-secondary.uk-card-body .uk-text-meta,.uk-card-secondary>:not([class*=uk-card-media]) .uk-text-meta,.uk-light .uk-text-meta,.uk-offcanvas-bar .uk-text-meta,.uk-overlay-primary .uk-text-meta,.uk-section-primary:not(.uk-preserve-color) .uk-text-meta,.uk-section-secondary:not(.uk-preserve-color) .uk-text-meta,.uk-tile-primary:not(.uk-preserve-color) .uk-text-meta,.uk-tile-secondary:not(.uk-preserve-color) .uk-text-meta{color:#ffffff80}.uk-card-primary.uk-card-body .uk-text-muted,.uk-card-primary>:not([class*=uk-card-media]) .uk-text-muted,.uk-card-secondary.uk-card-body .uk-text-muted,.uk-card-secondary>:not([class*=uk-card-media]) .uk-text-muted,.uk-light .uk-text-muted,.uk-offcanvas-bar .uk-text-muted,.uk-overlay-primary .uk-text-muted,.uk-section-primary:not(.uk-preserve-color) .uk-text-muted,.uk-section-secondary:not(.uk-preserve-color) .uk-text-muted,.uk-tile-primary:not(.uk-preserve-color) .uk-text-muted,.uk-tile-secondary:not(.uk-preserve-color) .uk-text-muted{color:#ffffff80!important}.uk-card-primary.uk-card-body .uk-text-emphasis,.uk-card-primary>:not([class*=uk-card-media]) .uk-text-emphasis,.uk-card-secondary.uk-card-body .uk-text-emphasis,.uk-card-secondary>:not([class*=uk-card-media]) .uk-text-emphasis,.uk-light .uk-text-emphasis,.uk-offcanvas-bar .uk-text-emphasis,.uk-overlay-primary .uk-text-emphasis,.uk-section-primary:not(.uk-preserve-color) .uk-text-emphasis,.uk-section-secondary:not(.uk-preserve-color) .uk-text-emphasis,.uk-tile-primary:not(.uk-preserve-color) .uk-text-emphasis,.uk-tile-secondary:not(.uk-preserve-color) .uk-text-emphasis{color:#fff!important}.uk-card-primary.uk-card-body .uk-text-primary,.uk-card-primary>:not([class*=uk-card-media]) .uk-text-primary,.uk-card-secondary.uk-card-body .uk-text-primary,.uk-card-secondary>:not([class*=uk-card-media]) .uk-text-primary,.uk-light .uk-text-primary,.uk-offcanvas-bar .uk-text-primary,.uk-overlay-primary .uk-text-primary,.uk-section-primary:not(.uk-preserve-color) .uk-text-primary,.uk-section-secondary:not(.uk-preserve-color) .uk-text-primary,.uk-tile-primary:not(.uk-preserve-color) .uk-text-primary,.uk-tile-secondary:not(.uk-preserve-color) .uk-text-primary{color:#fff!important}.uk-card-primary.uk-card-body .uk-text-secondary,.uk-card-primary>:not([class*=uk-card-media]) .uk-text-secondary,.uk-card-secondary.uk-card-body .uk-text-secondary,.uk-card-secondary>:not([class*=uk-card-media]) .uk-text-secondary,.uk-light .uk-text-secondary,.uk-offcanvas-bar .uk-text-secondary,.uk-overlay-primary .uk-text-secondary,.uk-section-primary:not(.uk-preserve-color) .uk-text-secondary,.uk-section-secondary:not(.uk-preserve-color) .uk-text-secondary,.uk-tile-primary:not(.uk-preserve-color) .uk-text-secondary,.uk-tile-secondary:not(.uk-preserve-color) .uk-text-secondary{color:#fff!important}.uk-card-primary.uk-card-body .uk-column-divider,.uk-card-primary>:not([class*=uk-card-media]) .uk-column-divider,.uk-card-secondary.uk-card-body .uk-column-divider,.uk-card-secondary>:not([class*=uk-card-media]) .uk-column-divider,.uk-light .uk-column-divider,.uk-offcanvas-bar .uk-column-divider,.uk-overlay-primary .uk-column-divider,.uk-section-primary:not(.uk-preserve-color) .uk-column-divider,.uk-section-secondary:not(.uk-preserve-color) .uk-column-divider,.uk-tile-primary:not(.uk-preserve-color) .uk-column-divider,.uk-tile-secondary:not(.uk-preserve-color) .uk-column-divider{column-rule-color:#fff3}.uk-card-primary.uk-card-body .uk-logo,.uk-card-primary>:not([class*=uk-card-media]) .uk-logo,.uk-card-secondary.uk-card-body .uk-logo,.uk-card-secondary>:not([class*=uk-card-media]) .uk-logo,.uk-light .uk-logo,.uk-offcanvas-bar .uk-logo,.uk-overlay-primary .uk-logo,.uk-section-primary:not(.uk-preserve-color) .uk-logo,.uk-section-secondary:not(.uk-preserve-color) .uk-logo,.uk-tile-primary:not(.uk-preserve-color) .uk-logo,.uk-tile-secondary:not(.uk-preserve-color) .uk-logo{color:#fff}.uk-card-primary.uk-card-body .uk-logo:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-logo:hover,.uk-card-secondary.uk-card-body .uk-logo:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-logo:hover,.uk-light .uk-logo:hover,.uk-offcanvas-bar .uk-logo:hover,.uk-overlay-primary .uk-logo:hover,.uk-section-primary:not(.uk-preserve-color) .uk-logo:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-logo:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-logo:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-logo:hover{color:#fff}.uk-card-primary.uk-card-body .uk-logo:has(.uk-logo-inverse)>:not(picture:has(.uk-logo-inverse)):not(.uk-logo-inverse),.uk-card-primary>:not([class*=uk-card-media]) .uk-logo:has(.uk-logo-inverse)>:not(picture:has(.uk-logo-inverse)):not(.uk-logo-inverse),.uk-card-secondary.uk-card-body .uk-logo:has(.uk-logo-inverse)>:not(picture:has(.uk-logo-inverse)):not(.uk-logo-inverse),.uk-card-secondary>:not([class*=uk-card-media]) .uk-logo:has(.uk-logo-inverse)>:not(picture:has(.uk-logo-inverse)):not(.uk-logo-inverse),.uk-light .uk-logo:has(.uk-logo-inverse)>:not(picture:has(.uk-logo-inverse)):not(.uk-logo-inverse),.uk-offcanvas-bar .uk-logo:has(.uk-logo-inverse)>:not(picture:has(.uk-logo-inverse)):not(.uk-logo-inverse),.uk-overlay-primary .uk-logo:has(.uk-logo-inverse)>:not(picture:has(.uk-logo-inverse)):not(.uk-logo-inverse),.uk-section-primary:not(.uk-preserve-color) .uk-logo:has(.uk-logo-inverse)>:not(picture:has(.uk-logo-inverse)):not(.uk-logo-inverse),.uk-section-secondary:not(.uk-preserve-color) .uk-logo:has(.uk-logo-inverse)>:not(picture:has(.uk-logo-inverse)):not(.uk-logo-inverse),.uk-tile-primary:not(.uk-preserve-color) .uk-logo:has(.uk-logo-inverse)>:not(picture:has(.uk-logo-inverse)):not(.uk-logo-inverse),.uk-tile-secondary:not(.uk-preserve-color) .uk-logo:has(.uk-logo-inverse)>:not(picture:has(.uk-logo-inverse)):not(.uk-logo-inverse){display:none}.uk-card-primary.uk-card-body .uk-logo-inverse,.uk-card-primary>:not([class*=uk-card-media]) .uk-logo-inverse,.uk-card-secondary.uk-card-body .uk-logo-inverse,.uk-card-secondary>:not([class*=uk-card-media]) .uk-logo-inverse,.uk-light .uk-logo-inverse,.uk-offcanvas-bar .uk-logo-inverse,.uk-overlay-primary .uk-logo-inverse,.uk-section-primary:not(.uk-preserve-color) .uk-logo-inverse,.uk-section-secondary:not(.uk-preserve-color) .uk-logo-inverse,.uk-tile-primary:not(.uk-preserve-color) .uk-logo-inverse,.uk-tile-secondary:not(.uk-preserve-color) .uk-logo-inverse{display:block}.uk-card-primary.uk-card-body .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-card-primary.uk-card-body .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-card-primary>:not([class*=uk-card-media]) .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-card-primary>:not([class*=uk-card-media]) .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-card-secondary.uk-card-body .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-card-secondary.uk-card-body .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-card-secondary>:not([class*=uk-card-media]) .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-card-secondary>:not([class*=uk-card-media]) .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-light .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-light .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-offcanvas-bar .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-offcanvas-bar .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-overlay-primary .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-overlay-primary .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-section-primary:not(.uk-preserve-color) .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-section-primary:not(.uk-preserve-color) .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-section-secondary:not(.uk-preserve-color) .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-section-secondary:not(.uk-preserve-color) .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-tile-primary:not(.uk-preserve-color) .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-tile-primary:not(.uk-preserve-color) .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-tile-secondary:not(.uk-preserve-color) .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-tile-secondary:not(.uk-preserve-color) .uk-table-striped>tr:nth-of-type(2n):last-child{border-bottom-color:#fff3}.uk-card-primary.uk-card-body .uk-accordion-title:before,.uk-card-primary>:not([class*=uk-card-media]) .uk-accordion-title:before,.uk-card-secondary.uk-card-body .uk-accordion-title:before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-accordion-title:before,.uk-light .uk-accordion-title:before,.uk-offcanvas-bar .uk-accordion-title:before,.uk-overlay-primary .uk-accordion-title:before,.uk-section-primary:not(.uk-preserve-color) .uk-accordion-title:before,.uk-section-secondary:not(.uk-preserve-color) .uk-accordion-title:before,.uk-tile-primary:not(.uk-preserve-color) .uk-accordion-title:before,.uk-tile-secondary:not(.uk-preserve-color) .uk-accordion-title:before{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22rgba%28255,%20255,%20255,%200.7%29%22%20width%3D%2213%22%20height%3D%221%22%20x%3D%220%22%20y%3D%226%22%20%2F%3E%0A%20%20%20%20%3Crect%20fill%3D%22rgba%28255,%20255,%20255,%200.7%29%22%20width%3D%221%22%20height%3D%2213%22%20x%3D%226%22%20y%3D%220%22%20%2F%3E%0A%3C%2Fsvg%3E)}.uk-card-primary.uk-card-body .uk-open>.uk-accordion-title:before,.uk-card-primary>:not([class*=uk-card-media]) .uk-open>.uk-accordion-title:before,.uk-card-secondary.uk-card-body .uk-open>.uk-accordion-title:before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-open>.uk-accordion-title:before,.uk-light .uk-open>.uk-accordion-title:before,.uk-offcanvas-bar .uk-open>.uk-accordion-title:before,.uk-overlay-primary .uk-open>.uk-accordion-title:before,.uk-section-primary:not(.uk-preserve-color) .uk-open>.uk-accordion-title:before,.uk-section-secondary:not(.uk-preserve-color) .uk-open>.uk-accordion-title:before,.uk-tile-primary:not(.uk-preserve-color) .uk-open>.uk-accordion-title:before,.uk-tile-secondary:not(.uk-preserve-color) .uk-open>.uk-accordion-title:before{background-image:url(data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22rgba%28255,%20255,%20255,%200.7%29%22%20width%3D%2213%22%20height%3D%221%22%20x%3D%220%22%20y%3D%226%22%20%2F%3E%0A%3C%2Fsvg%3E)}*{--uk-inverse:initial}.uk-card-primary.uk-card-body,.uk-card-primary>:not([class*=uk-card-media]),.uk-card-secondary.uk-card-body,.uk-card-secondary>:not([class*=uk-card-media]),.uk-light,.uk-offcanvas-bar,.uk-overlay-primary,.uk-section-primary:not(.uk-preserve-color),.uk-section-secondary:not(.uk-preserve-color),.uk-tile-primary:not(.uk-preserve-color),.uk-tile-secondary:not(.uk-preserve-color){--uk-inverse:light}.uk-card-default.uk-card-body,.uk-card-default>:not([class*=uk-card-media]),.uk-dark,.uk-dropbar,.uk-dropdown,.uk-navbar-container:not(.uk-navbar-transparent),.uk-navbar-dropdown,.uk-overlay-default,.uk-section-default:not(.uk-preserve-color),.uk-section-muted:not(.uk-preserve-color),.uk-tile-default:not(.uk-preserve-color),.uk-tile-muted:not(.uk-preserve-color){--uk-inverse:dark}.uk-inverse-light{--uk-inverse:light!important}.uk-inverse-dark{--uk-inverse:dark!important}@media print{*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}}.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid black;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:transparent}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:transparent}.cm-fat-cursor{caret-color:transparent}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;inset:-50px 0 0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3,.cm-s-default .cm-type{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error,.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:#ff96004d}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:none;position:relative;z-index:0}.CodeMirror-sizer{position:relative;border-right:50px solid transparent}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{position:absolute;z-index:6;display:none;outline:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;inset:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors,.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:#ff06}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none}.CodeMirror-dialog{position:absolute;left:0;right:0;background:inherit;z-index:15;padding:.1em .8em;overflow:hidden;color:inherit}.CodeMirror-dialog-top{border-bottom:1px solid #eee;top:0}.CodeMirror-dialog-bottom{border-top:1px solid #eee;bottom:0}.CodeMirror-dialog input{border:none;outline:none;background:transparent;width:20em;color:inherit;font-family:monospace}.CodeMirror-dialog button{font-size:70%}.CodeMirror-hints{position:absolute;z-index:10;overflow:hidden;list-style:none;margin:0;padding:2px;-webkit-box-shadow:2px 3px 5px rgba(0,0,0,.2);-moz-box-shadow:2px 3px 5px rgba(0,0,0,.2);box-shadow:2px 3px 5px #0003;border-radius:3px;border:1px solid silver;background:#fff;font-size:90%;font-family:monospace;max-height:20em;overflow-y:auto;box-sizing:border-box}.CodeMirror-hint{margin:0;padding:0 4px;border-radius:2px;white-space:pre;color:#000;cursor:pointer}li.CodeMirror-hint-active{background:#08f;color:#fff}.cm-s-material-darker.CodeMirror{background-color:#212121;color:#eff}.cm-s-material-darker .CodeMirror-gutters{background:#212121;color:#545454;border:none}.cm-s-material-darker .CodeMirror-guttermarker,.cm-s-material-darker .CodeMirror-guttermarker-subtle,.cm-s-material-darker .CodeMirror-linenumber{color:#545454}.cm-s-material-darker .CodeMirror-cursor{border-left:1px solid #FFCC00}.cm-s-material-darker div.CodeMirror-selected,.cm-s-material-darker.CodeMirror-focused div.CodeMirror-selected{background:#61616133}.cm-s-material-darker .CodeMirror-line::selection,.cm-s-material-darker .CodeMirror-line>span::selection,.cm-s-material-darker .CodeMirror-line>span>span::selection{background:#80cbc433}.cm-s-material-darker .CodeMirror-line::-moz-selection,.cm-s-material-darker .CodeMirror-line>span::-moz-selection,.cm-s-material-darker .CodeMirror-line>span>span::-moz-selection{background:#80cbc433}.cm-s-material-darker .CodeMirror-activeline-background{background:#00000080}.cm-s-material-darker .cm-keyword{color:#c792ea}.cm-s-material-darker .cm-operator{color:#89ddff}.cm-s-material-darker .cm-variable-2{color:#eff}.cm-s-material-darker .cm-variable-3,.cm-s-material-darker .cm-type{color:#f07178}.cm-s-material-darker .cm-builtin{color:#ffcb6b}.cm-s-material-darker .cm-atom{color:#f78c6c}.cm-s-material-darker .cm-number{color:#ff5370}.cm-s-material-darker .cm-def{color:#82aaff}.cm-s-material-darker .cm-string{color:#c3e88d}.cm-s-material-darker .cm-string-2{color:#f07178}.cm-s-material-darker .cm-comment{color:#545454}.cm-s-material-darker .cm-variable{color:#f07178}.cm-s-material-darker .cm-tag{color:#ff5370}.cm-s-material-darker .cm-meta{color:#ffcb6b}.cm-s-material-darker .cm-attribute,.cm-s-material-darker .cm-property{color:#c792ea}.cm-s-material-darker .cm-qualifier,.cm-s-material-darker .cm-variable-3,.cm-s-material-darker .cm-type{color:#decb6b}.cm-s-material-darker .cm-error{color:#fff;background-color:#ff5370}.cm-s-material-darker .CodeMirror-matchingbracket{text-decoration:underline;color:#fff!important}.clr-picker{display:none;flex-wrap:wrap;position:absolute;width:200px;z-index:1000;border-radius:10px;background-color:#fff;justify-content:flex-end;direction:ltr;box-shadow:0 0 5px #0000000d,0 5px 20px #0000001a;-moz-user-select:none;-webkit-user-select:none;user-select:none}.clr-picker.clr-open,.clr-picker[data-inline=true]{display:flex}.clr-picker[data-inline=true]{position:relative}.clr-gradient{position:relative;width:100%;height:100px;margin-bottom:15px;border-radius:3px 3px 0 0;background-image:linear-gradient(#0000,#000),linear-gradient(90deg,#fff,currentColor);cursor:pointer}.clr-marker{position:absolute;width:12px;height:12px;margin:-6px 0 0 -6px;border:1px solid #fff;border-radius:50%;background-color:currentColor;cursor:pointer}.clr-picker input[type=range]::-webkit-slider-runnable-track{width:100%;height:16px}.clr-picker input[type=range]::-webkit-slider-thumb{width:16px;height:16px;-webkit-appearance:none}.clr-picker input[type=range]::-moz-range-track{width:100%;height:16px;border:0}.clr-picker input[type=range]::-moz-range-thumb{width:16px;height:16px;border:0}.clr-hue{background-image:linear-gradient(to right,red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.clr-hue,.clr-alpha{position:relative;width:calc(100% - 40px);height:8px;margin:5px 20px;border-radius:4px}.clr-alpha span{display:block;height:100%;width:100%;border-radius:inherit;background-image:linear-gradient(90deg,rgba(0,0,0,0),currentColor)}.clr-hue input[type=range],.clr-alpha input[type=range]{position:absolute;width:calc(100% + 32px);height:16px;left:-16px;top:-4px;margin:0;background-color:transparent;opacity:0;cursor:pointer;appearance:none;-webkit-appearance:none}.clr-hue div,.clr-alpha div{position:absolute;width:16px;height:16px;left:0;top:50%;margin-left:-8px;transform:translateY(-50%);border:2px solid #fff;border-radius:50%;background-color:currentColor;box-shadow:0 0 1px #888;pointer-events:none}.clr-alpha div:before{content:"";position:absolute;height:100%;width:100%;left:0;top:0;border-radius:50%;background-color:currentColor}.clr-format{display:none;order:1;width:calc(100% - 40px);margin:0 20px 20px}.clr-segmented{display:flex;position:relative;width:100%;margin:0;padding:0;border:1px solid #ddd;border-radius:15px;box-sizing:border-box;color:#999;font-size:12px}.clr-segmented input,.clr-segmented legend{position:absolute;width:100%;height:100%;margin:0;padding:0;border:0;left:0;top:0;opacity:0;pointer-events:none}.clr-segmented label{flex-grow:1;margin:0;padding:4px 0;font-size:inherit;font-weight:400;line-height:initial;text-align:center;cursor:pointer}.clr-segmented label:first-of-type{border-radius:10px 0 0 10px}.clr-segmented label:last-of-type{border-radius:0 10px 10px 0}.clr-segmented input:checked+label{color:#fff;background-color:#666}.clr-swatches{order:2;width:calc(100% - 32px);margin:0 16px}.clr-swatches div{display:flex;flex-wrap:wrap;padding-bottom:12px;justify-content:center}.clr-swatches button{position:relative;width:20px;height:20px;margin:0 4px 6px;padding:0;border:0;border-radius:50%;color:inherit;text-indent:-1000px;white-space:nowrap;overflow:hidden;cursor:pointer}.clr-swatches button:after{content:"";display:block;position:absolute;width:100%;height:100%;left:0;top:0;border-radius:inherit;background-color:currentColor;box-shadow:inset 0 0 0 1px #0000001a}input.clr-color{order:1;width:calc(100% - 80px);height:32px;margin:15px 20px 20px auto;padding:0 10px;border:1px solid #ddd;border-radius:16px;color:#444;background-color:#fff;font-family:sans-serif;font-size:14px;text-align:center;box-shadow:none}input.clr-color:focus{outline:none;border:1px solid #1e90ff}.clr-close,.clr-clear{display:none;order:2;height:24px;margin:0 20px 20px;padding:0 20px;border:0;border-radius:12px;color:#fff;background-color:#666;font-family:inherit;font-size:12px;font-weight:400;cursor:pointer}.clr-close{display:block;margin:0 20px 20px auto}.clr-preview{position:relative;width:32px;height:32px;margin:15px 0 20px 20px;border-radius:50%;overflow:hidden}.clr-preview:before,.clr-preview:after{content:"";position:absolute;height:100%;width:100%;left:0;top:0;border:1px solid #fff;border-radius:50%}.clr-preview:after{border:0;background-color:currentColor;box-shadow:inset 0 0 0 1px #0000001a}.clr-preview button{position:absolute;width:100%;height:100%;z-index:1;margin:0;padding:0;border:0;border-radius:50%;outline-offset:-2px;background-color:transparent;text-indent:-9999px;cursor:pointer;overflow:hidden}.clr-marker,.clr-hue div,.clr-alpha div,.clr-color{box-sizing:border-box}.clr-field{display:inline-block;position:relative;color:transparent}.clr-field input{margin:0;direction:ltr}.clr-field.clr-rtl input{text-align:right}.clr-field button{position:absolute;width:30px;height:100%;right:0;top:50%;transform:translateY(-50%);margin:0;padding:0;border:0;color:inherit;text-indent:-1000px;white-space:nowrap;overflow:hidden;pointer-events:none}.clr-field.clr-rtl button{right:auto;left:0}.clr-field button:after{content:"";display:block;position:absolute;width:100%;height:100%;left:0;top:0;border-radius:inherit;background-color:currentColor;box-shadow:inset 0 0 1px #00000080}.clr-alpha,.clr-alpha div,.clr-swatches button,.clr-preview:before,.clr-field button{background-image:repeating-linear-gradient(45deg,#aaa 25%,transparent 25%,transparent 75%,#aaa 75%,#aaa),repeating-linear-gradient(45deg,#aaa 25%,#fff 25% 75%,#aaa 75%,#aaa);background-position:0 0,4px 4px;background-size:8px 8px}.clr-marker:focus{outline:none}.clr-keyboard-nav .clr-marker:focus,.clr-keyboard-nav .clr-hue input:focus+div,.clr-keyboard-nav .clr-alpha input:focus+div,.clr-keyboard-nav .clr-segmented input:focus+label{outline:none;box-shadow:0 0 0 2px #1e90ff,0 0 2px 2px #fff}.clr-picker[data-alpha=false] .clr-alpha{display:none}.clr-picker[data-minimal=true]{padding-top:16px}.clr-picker[data-minimal=true] .clr-gradient,.clr-picker[data-minimal=true] .clr-hue,.clr-picker[data-minimal=true] .clr-alpha,.clr-picker[data-minimal=true] .clr-color,.clr-picker[data-minimal=true] .clr-preview{display:none}.clr-dark{background-color:#444}.clr-dark .clr-segmented{border-color:#777}.clr-dark .clr-swatches button:after{box-shadow:inset 0 0 0 1px #ffffff4d}.clr-dark input.clr-color{color:#fff;border-color:#777;background-color:#555}.clr-dark input.clr-color:focus{border-color:#1e90ff}.clr-dark .clr-preview:after{box-shadow:inset 0 0 0 1px #ffffff80}.clr-dark .clr-alpha,.clr-dark .clr-alpha div,.clr-dark .clr-swatches button,.clr-dark .clr-preview:before{background-image:repeating-linear-gradient(45deg,#666 25%,transparent 25%,transparent 75%,#888 75%,#888),repeating-linear-gradient(45deg,#888 25%,#444 25% 75%,#888 75%,#888)}.clr-picker.clr-polaroid{border-radius:6px;box-shadow:0 0 5px #0000001a,0 5px 30px #0003}.clr-picker.clr-polaroid:before{content:"";display:block;position:absolute;width:16px;height:10px;left:20px;top:-10px;border:solid transparent;border-width:0 8px 10px 8px;border-bottom-color:currentColor;box-sizing:border-box;color:#fff;filter:drop-shadow(0 -4px 3px rgba(0,0,0,.1));pointer-events:none}.clr-picker.clr-polaroid.clr-dark:before{color:#444}.clr-picker.clr-polaroid.clr-left:before{left:auto;right:20px}.clr-picker.clr-polaroid.clr-top:before{top:auto;bottom:-10px;transform:rotate(180deg)}.clr-polaroid .clr-gradient{width:calc(100% - 20px);height:120px;margin:10px;border-radius:3px}.clr-polaroid .clr-hue,.clr-polaroid .clr-alpha{width:calc(100% - 30px);height:10px;margin:6px 15px;border-radius:5px}.clr-polaroid .clr-hue div,.clr-polaroid .clr-alpha div{box-shadow:0 0 5px #0003}.clr-polaroid .clr-format{width:calc(100% - 20px);margin:0 10px 15px}.clr-polaroid .clr-swatches{width:calc(100% - 12px);margin:0 6px}.clr-polaroid .clr-swatches div{padding-bottom:10px}.clr-polaroid .clr-swatches button{width:22px;height:22px}.clr-polaroid input.clr-color{width:calc(100% - 60px);margin:10px 10px 15px auto}.clr-polaroid .clr-clear{margin:0 10px 15px}.clr-polaroid .clr-close{margin:0 10px 15px auto}.clr-polaroid .clr-preview{margin:10px 0 15px 10px}.clr-picker.clr-large{width:275px}.clr-large .clr-gradient{height:150px}.clr-large .clr-swatches button{width:22px;height:22px}.clr-picker.clr-pill{width:380px;padding-left:180px;box-sizing:border-box}.clr-pill .clr-gradient{position:absolute;width:180px;height:100%;left:0;top:0;margin-bottom:0;border-radius:3px 0 0 3px}.clr-pill .clr-hue{margin-top:20px}*{-webkit-backface-visibility:hidden;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;backface-visibility:hidden;margin:0;outline:none;border:none;background:none;padding:0;resize:none;user-select:none}html,body{height:100%;font-size:12px;font-family:Open Sans,sans-serif}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{border-radius:8px}h2{margin:0 0 15px}input{font-size:inherit;font-family:inherit}input[type=range]::-webkit-slider-runnable-track{margin-top:2px;border:none;border-radius:3px;background-color:#999;width:300px;height:1px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;margin-top:-7px;border:none;border-radius:50%;background-color:#1e87f0;width:14px;height:14px}input[type=range]:focus::-webkit-slider-runnable-track{background-color:#999}pre{font:inherit!important}textarea{box-sizing:border-box;width:100%;tab-size:2}text{font-size:.9rem}.wrapper{position:fixed;inset:0}.header-win{-webkit-app-region:drag!important;display:none;position:fixed;top:5px;right:0;left:0;height:30px}.header-win-title{float:left;margin:5px 0 0 15px;font-weight:700;font-size:1.1em;font-family:Numara}.winButtons{position:fixed;top:0;right:0}.unmax{display:none}.min-btn-win,.max-btn-win,.unmax-btn-win,.close-btn-win{-webkit-app-region:no-drag;float:right;background-position:center;background-size:11px 11px;background-repeat:no-repeat;width:46px;height:30px}.close-btn-win:hover{background-image:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTIgMTIiIGZpbGw9InJnYigyNTUsIDI1NSwgMjU1KSIgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik02LjI3OSA1LjVMMTEgMTAuMjIxbC0uNzc5Ljc3OUw1LjUgNi4yNzkuNzc5IDExIDAgMTAuMjIxIDQuNzIxIDUuNSAwIC43NzkuNzc5IDAgNS41IDQuNzIxIDEwLjIyMSAwIDExIC43NzkgNi4yNzkgNS41eiIgLz48L3N2Zz4=);background-color:#e11}.header-mac{-webkit-app-region:drag!important;display:none;position:fixed;top:0;right:0;left:0;height:40px}.header-mac-title{padding-top:10px;font-size:1.1em;font-family:Numara;text-align:center}.panel{display:flex;position:fixed;inset:50px 8px 42px 20px;align-content:flex-start}.input{width:60%;min-width:120px}.inputArea{-webkit-user-select:text;user-select:text}.inputArea::-webkit-scrollbar{width:0px;height:8px}.divider{flex:0 0 auto;cursor:ew-resize;margin:0 8px;width:5px;height:calc(100% - 8px)}.divider:before{display:block;margin:0 auto;width:1px;height:100%;content:""}.output{flex:1;padding:0;min-width:120px;font-weight:400;white-space:nowrap}.inputArea,.output{display:block;height:100%;overflow:scroll}.output>div{-webkit-user-select:text;display:block;width:100%;height:27px;user-select:text}.panelFont{font-family:Roboto Mono,monospace}.answer{-webkit-user-select:text;cursor:default;margin:0 8px 0 0;border-radius:5px;padding:2px 5px;height:27px;user-select:text}.lineError,.plotButton{margin:0 12px 0 5px}.lineError:hover{text-decoration:underline}.errMsg{word-break:break-word}.noRuler{border-bottom:1px solid transparent}.gutterBlock{position:fixed;bottom:50px;left:0;z-index:5;height:8px}.actions{position:fixed;right:10px;bottom:10px;left:10px;height:25px}.action,.noAction{cursor:pointer}.noAction,.action[disabled=true]{opacity:.4;cursor:default;pointer-events:none}.actionDivider{margin:2px 5px 0;height:20px}.leftActions a,.centerActions a,.rightActions a{margin:0 5px}.leftActions a:hover,.sidePanelActions a:hover{text-decoration:none}.newPageButton svg,.newPageButtonSP svg{width:16px!important;height:16px!important}.pageName{position:relative;top:2px;opacity:.9;width:calc(100vw - 300px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.leftActions a svg,.centerActions a svg,.rightActions a svg,.sidePanelActions a svg{width:14px;height:14px;pointer-events:none;color:inherit!important}.notificationDot{display:none;position:fixed;right:10px;bottom:18px}.notificationDot>svg{fill:#1e87f0;stroke:#1e87f0;width:5px;height:5px}.uk-offcanvas-bar{padding:0;width:240px}.sidePanelActions{margin:15px 10px 11px}.closeSidePanelButton{-webkit-app-region:no-drag!important}.closeSidePanelButton svg{width:18px;height:18px}.uk-offcanvas-close{-webkit-app-region:no-drag;top:9px;right:8px}.uk-offcanvas-close svg{width:11px;height:11px}.uk-offcanvas-close svg line{stroke-width:1.5}.uk-dropdown{padding:0;min-width:auto}.pageListHeader{height:40px}.pageList{overflow-x:hidden;overflow-y:auto}.pageListFooter{height:47px}.pageListSort{-webkit-app-region:no-drag;cursor:pointer;margin:10px}.pageListSort svg{width:14px;height:14px}.sortListItem{-webkit-app-region:no-drag;cursor:pointer;padding:5px 10px}.sortListDivider{margin:5px 10px}.pageListItem{display:flex;position:relative;cursor:pointer}.pageListItem>div:first-child{padding:3px 0 3px 10px}.pageListItemTitle{padding:5px 5px 2px;width:180px;overflow:hidden;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.drop-parent-icon svg{width:16px;height:16px}.renamePageButton,.dupPageButton,.deletePageButton,.sortListItem{cursor:pointer;padding:5px 10px}.dialogs{display:none}.dialog-buttons{display:flex;align-items:center;margin-top:15px}.dialog-open-body{margin-right:-5px}.dialog-open-date{padding:0 5px 5px;color:#999;font-size:.9rem}.dialog-confirm{z-index:10010}.infoOK{margin-left:-20px!important}#dialog-settings .uk-width-medium{width:385px}.dialog-settings-body{margin-right:-8px;padding-right:10px;height:calc(100vh - 185px);max-height:600px;overflow:scroll}#dialog-settings .uk-overflow-auto{padding-right:10px}#dialog-settings h3{margin:25px 0 12px;font-weight:500;font-size:1rem}#dialog-settings h3:first-of-type{margin:0 0 12px}#dialog-settings .settingMod,#dialog-settings .settingModToggle{display:none;position:absolute;cursor:pointer;margin-top:-3px;margin-left:-20px;color:#dd9359}#dialog-settings .settingMod>svg,#dialog-settings .settingModToggle>svg{width:24px}#dialog-settings .range .settingMod{margin-left:-54px}.set1{padding-top:1px}.set3{padding-top:2px}.precision,.expLower,.expUpper{background-color:transparent;padding:1px 0 0;width:25px;text-align:center}.warn-icon{display:none;margin-left:5px}.warn-icon svg{stroke:#faa05a;margin-top:-3px;width:14px;height:14px;pointer-events:none}.lastUpdated{display:inline-block;vertical-align:middle;margin-right:3px;font-size:.9rem}#updateRatesLink[data-enabled=false]{opacity:.5;pointer-events:none}.customizeThemeButton>svg,.updateRatesLink>svg{width:20px;height:20px}.dialog-about{text-align:center}.dialog-about-header{display:inline-block;margin:0 auto;font-weight:600}.dialog-about-header img{width:128px}.dialog-about-title{vertical-align:middle;margin-left:5px}.dialog-about p{clear:both;margin-top:5px}.dialog-about-links{display:flex;flex:auto}.dialog-about-links>div{width:100%;line-height:30px}div:has(>#logsLink){display:none}.dialog-about-appVersion{display:block;margin-bottom:8px;text-align:center}.versionCtnr>div{margin:8px 3px 3px;text-align:center}.dialog-about-updateStatus{display:block;text-align:center}.notificationLink{margin-left:8px;color:#56b6c2}.updateButton{display:none;margin-top:10px;text-transform:capitalize}.dialog-about-copyright{display:block;margin:15px 0}.resetButtons svg{width:14px;pointer-events:none}.defSettingsButton{margin-right:10px}#resetSize>svg{margin:10px 10px 0 0;width:14px;height:14px}.resetSizeButton{float:left;margin-left:10px}.msg{opacity:0;transition:visibility .3s linear,opacity .3s linear}.pr-lh{line-height:22px}.pdt-lh{line-height:20px}.padTop1{padding-top:1px}.textBox{box-sizing:border-box;border:1px solid #cccccc;padding:5px;width:100%}.textBox::placeholder{color:#949ca099}.function-plot{height:calc(100vh - 180px)!important;max-height:800px}.top-right-legend{fill:#4682b4}.switch{display:inline-block;position:relative;margin-top:1px;width:28px;height:16px}.switch:disabled{opacity:.5}.switch input{opacity:0;width:0;height:0}.switchText{display:inline-block;vertical-align:text-bottom;margin:0 12px 0 2px;line-height:17px}.subSwitchIcon{margin:-5px 5px 0 0;width:14px}.plotTitle{margin:0 0 5px}.plotSwitches{margin:0}.slider{-webkit-transition:.2s;position:absolute;inset:0;transition:.2s;cursor:pointer;background-color:#ccc}.slider:before{-webkit-transition:.2s;position:absolute;bottom:2px;left:2px;transition:.2s;width:12px;height:12px;content:""}.slider.round{border-radius:16px}.slider.round:before{border-radius:50%}input:checked+.slider{background-color:#1e87f0}input:checked+.slider:before{-webkit-transform:translateX(12px);transform:translate(12px)}.scrollTop{display:none;position:fixed;right:2px;bottom:35px;cursor:pointer;width:10px}.uk-text-secondary{font-weight:600!important}:focus:not([tabindex^="-"]),:focus-visible{outline:none}.uk-offcanvas-bar-animation{transition:left .2s ease-out}.uk-modal{padding:0 30px!important}.uk-modal-full{padding-right:20px;padding-left:20px}.uk-modal-dialog{transition:0s linear;border-radius:3px}.uk-modal-body{padding:12px 15px}.uk-modal-title,.errTitle{font-weight:600;font-size:1rem}.uk-modal-footer{padding:15px}.uk-grid{margin-left:-30px!important}.uk-grid>*{padding-left:30px!important}.uk-grid+.uk-grid{margin-top:10px}.uk-grid-small{margin:0 25px 0 0}.uk-select{transition:0s ease-in-out}.uk-select:not([multiple]):not([size]){margin-top:1px;border-width:0 0 1px 0;height:auto}.uk-switcher{margin:0!important}.uk-tab{margin:0 -20px}.uk-tab>*{padding-left:0}.uk-tab>*:first-child{padding-left:20px}.uk-tab:before{border:none}.uk-tab>*>a{display:inline-block;margin-right:0;padding:0 15px 5px;font-weight:600;font-size:1rem;text-transform:none}.uk-button{transition:0s ease-in-out;margin-left:3px;border-radius:3px;padding:0 10px;line-height:28px}.uk-button:enabled:active{transform:scale(.98)}.uk-button-default,.uk-button-default:hover{cursor:pointer;color:inherit}.uk-input{height:24px}.uk-label{font-size:1rem}.uk-width-small{width:280px}.uk-width-medium{width:350px}#dialog-settings>.uk-width-medium{width:420px}.uk-width-large{width:600px}.uk-width-xlarge{width:800px}.uk-width-2xlarge{width:1200px}.uk-overflow-auto{min-height:175px;max-height:calc(100vh - 250px)}.uk-range{padding-top:2px;min-height:1.6em}.uk-tooltip{z-index:1000000;max-width:50vw!important;word-break:break-word}.uk-tooltip>*{width:100%!important}.uk-notification{margin-top:30px;margin-bottom:30px}.uk-notification-top-left,.uk-notification-bottom-left{left:25px}.uk-notification-top-right,.uk-notification-bottom-right{right:25px}.uk-notification-message{padding:8px 35px 8px 10px;font-size:1rem}.uk-notification-close{display:block;top:11px;right:10px}.uk-notification-close svg{width:10px;height:10px}@media (max-width: 639px){.uk-notification{right:25px;left:25px}}@media (min-width: 640px){.uk-notification{width:590px}.uk-notification-bottom-center,.uk-notification-top-center{margin-left:-295px}}.cm-s-numara{background:none!important;height:100%!important;font-family:Roboto Mono!important}.cm-s-numara .CodeMirror-gutters{border:none!important;background:none!important}.cm-s-numara .CodeMirror-lines{padding:0!important}.CodeMirror-cursor{border:none!important}.CodeMirror-cursor:before{position:absolute;top:calc(12% + 1px);width:1px;height:calc(76% - 1px);content:""}.cm-s-numara .CodeMirror-vscrollbar{display:none!important}.cm-s-numara .CodeMirror-hscrollbar,.cm-s-numara .CodeMirror-gutter-filler{display:block!important;width:auto;height:8px!important}.cm-s-numara .CodeMirror-hscrollbar{right:8px!important}.cm-s-numara .CodeMirror-linenumber{padding:0 10px 0 0!important}.cm-s-numara .CodeMirror-sizer{padding-right:0!important;padding-bottom:8px!important}.cm-s-numara .CodeMirror-search-hint{display:none!important}.cm-s-numara .CodeMirror-dialog input{font-family:inherit!important}.cm-s-numara button{color:#1e87f0!important;font-size:inherit!important}.cm-s-numara button:hover{cursor:pointer!important;color:#5286b9!important;font-size:inherit!important}.cm-searching{background-color:#fffa5280!important}.cm-s-numara .CodeMirror-search-label{font-size:1rem!important}#dialog-udfu .CodeMirror{padding:5px;height:calc(100vh - 220px);max-height:800px;font-size:1.1em}.CodeMirror-hints{font-family:Roboto Mono,monospace}.cm-operator:before{display:inline-block;width:0;content:" "}.colorPickerContainer{margin-right:-8px;padding-right:10px;height:calc(100vh - 225px);max-height:390px;overflow:scroll}.colorPickerContainer .uk-first-column{margin-top:2px}.colorInput{cursor:pointer;box-sizing:border-box;padding:2px 5px;width:80px;height:20px}.clr-picker{border-radius:3px;width:160px}.clr-gradient{margin-bottom:10px;height:80px}.clr-hue,.clr-alpha{margin:5px 15px;width:calc(100% - 30px)}.clr-preview{margin:10px auto 10px 10px;width:25px;height:25px}input.clr-color{margin:10px auto;height:25px;font-size:13px;font-family:inherit}.clr-field button{width:20px}.clr-field button:after{box-shadow:none}.clr-custom-reset{order:2;cursor:pointer;margin:auto 10px auto 5px}.clr-custom-reset>svg{width:16px;height:16px}.printArea{display:none}@media print{.wrapper,.uk-open,.uk-tooltip{display:none!important}.printArea{display:block}.printTitle{padding-bottom:10px;font-size:1.1em;font-family:Numara;text-align:center}.printPage{border-collapse:collapse;width:100%;font-family:Roboto Mono,monospace}.printPage tr td{vertical-align:top;padding-top:3px;padding-right:10px;padding-bottom:3px}.printLineNumCol{width:1px;color:#ccc!important}.printAnswerLeft{border-left:1px solid #eaeaea}.printAnswerRight{text-align:right}.printPagele tr td:nth-child(1){padding-right:10px}.printPage tr td:last-child{padding-left:10px}.printRulers tr td{border-bottom:1px solid #eaeaea}.scrollTop{display:none!important}}@page{margin:15mm 10mm} /*! Bundled license information: uikit/dist/css/uikit.min.css: - (*! UIkit 3.21.13 | https://www.getuikit.com | (c) 2014 - 2024 YOOtheme | MIT License *) + (*! UIkit 3.21.14 | https://www.getuikit.com | (c) 2014 - 2024 YOOtheme | MIT License *) */ diff --git a/build/js/numara.js b/build/js/numara.js index 6e7318d..d3575dc 100644 --- a/build/js/numara.js +++ b/build/js/numara.js @@ -1,81 +1,81 @@ /** * Numara Calculator - * Version 5.7.0 + * Version 5.7.1 * Copyright ©️ 2024 Timur Atalay * * Licence : MIT - https://github.com/bornova/numara-calculator/blob/master/LICENSE * GitHub : https://github.com/bornova/numara-calculator * Website : https://numara.io */ -(()=>{var Wte=Object.create;var Xy=Object.defineProperty;var Vte=Object.getOwnPropertyDescriptor;var Gte=Object.getOwnPropertyNames;var Yte=Object.getPrototypeOf,Zte=Object.prototype.hasOwnProperty;var Se=(e,t)=>()=>(e&&(t=e(e=0)),t);var st=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),wu=(e,t)=>{for(var r in t)Xy(e,r,{get:t[r],enumerable:!0})},zO=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Gte(t))!Zte.call(e,i)&&i!==r&&Xy(e,i,{get:()=>t[i],enumerable:!(n=Vte(t,i))||n.enumerable});return e};var fn=(e,t,r)=>(r=e!=null?Wte(Yte(e)):{},zO(t||!e||!e.__esModule?Xy(r,"default",{value:e,enumerable:!0}):r,e)),Hn=e=>zO(Xy({},"__esModule",{value:!0}),e);var Yg=st((KN,JN)=>{(function(e,t){typeof KN=="object"&&typeof JN<"u"?JN.exports=t():typeof define=="function"&&define.amd?define("uikit",t):(e=typeof globalThis<"u"?globalThis:e||self,e.UIkit=t())})(KN,function(){"use strict";let{hasOwnProperty:e,toString:t}=Object.prototype;function r(m,y){return e.call(m,y)}let n=/\B([A-Z])/g,i=fe(m=>m.replace(n,"-$1").toLowerCase()),o=/-(\w)/g,l=fe(m=>(m.charAt(0).toLowerCase()+m.slice(1)).replace(o,(y,_)=>_.toUpperCase())),s=fe(m=>m.charAt(0).toUpperCase()+m.slice(1));function a(m,y){var _;return(_=m?.startsWith)==null?void 0:_.call(m,y)}function u(m,y){var _;return(_=m?.endsWith)==null?void 0:_.call(m,y)}function f(m,y){var _;return(_=m?.includes)==null?void 0:_.call(m,y)}function p(m,y){var _;return(_=m?.findIndex)==null?void 0:_.call(m,y)}let{isArray:h,from:g}=Array,{assign:x}=Object;function v(m){return typeof m=="function"}function S(m){return m!==null&&typeof m=="object"}function D(m){return t.call(m)==="[object Object]"}function C(m){return S(m)&&m===m.window}function E(m){return N(m)===9}function M(m){return N(m)>=1}function T(m){return N(m)===1}function N(m){return!C(m)&&S(m)&&m.nodeType}function O(m){return typeof m=="boolean"}function F(m){return typeof m=="string"}function I(m){return typeof m=="number"}function B(m){return I(m)||F(m)&&!isNaN(m-parseFloat(m))}function L(m){return!(h(m)?m.length:S(m)&&Object.keys(m).length)}function q(m){return m===void 0}function R(m){return O(m)?m:m==="true"||m==="1"||m===""?!0:m==="false"||m==="0"?!1:m}function V(m){let y=Number(m);return isNaN(y)?!1:y}function X(m){return parseFloat(m)||0}function U(m){return m&&H(m)[0]}function H(m){return M(m)?[m]:Array.from(m||[]).filter(M)}function ee(m){if(C(m))return m;m=U(m);let y=E(m)?m:m?.ownerDocument;return y?.defaultView||window}function Z(m,y){return m===y||S(m)&&S(y)&&Object.keys(m).length===Object.keys(y).length&&de(m,(_,P)=>_===y[P])}function ce(m,y,_){return m.replace(new RegExp(`${y}|${_}`,"g"),P=>P===y?_:y)}function be(m){return m[m.length-1]}function de(m,y){for(let _ in m)if(y(m[_],_)===!1)return!1;return!0}function ne(m,y){return m.slice().sort(({[y]:_=0},{[y]:P=0})=>_>P?1:P>_?-1:0)}function ve(m,y){return m.reduce((_,P)=>_+X(v(y)?y(P):P[y]),0)}function Te(m,y){let _=new Set;return m.filter(({[y]:P})=>_.has(P)?!1:_.add(P))}function De(m,y){return y.reduce((_,P)=>({..._,[P]:m[P]}),{})}function se(m,y=0,_=1){return Math.min(Math.max(V(m)||0,y),_)}function le(){}function oe(...m){return[["bottom","top"],["right","left"]].every(([y,_])=>Math.min(...m.map(({[y]:P})=>P))-Math.max(...m.map(({[_]:P})=>P))>0)}function we(m,y){return m.x<=y.right&&m.x>=y.left&&m.y<=y.bottom&&m.y>=y.top}function Ce(m,y,_){let P=y==="width"?"height":"width";return{[P]:m[y]?Math.round(_*m[P]/m[y]):m[P],[y]:_}}function he(m,y){m={...m};for(let _ in m)m=m[_]>y[_]?Ce(m,_,y[_]):m;return m}function Pe(m,y){m=he(m,y);for(let _ in m)m=m[_]y[_]||(y[_]=m(_,...P))}function Oe(m,...y){for(let _ of H(m)){let P=ct(y).filter(G=>!$e(_,G));P.length&&_.classList.add(...P)}}function Me(m,...y){for(let _ of H(m)){let P=ct(y).filter(G=>$e(_,G));P.length&&_.classList.remove(...P)}}function Je(m,y,_){_=ct(_),y=ct(y).filter(P=>!f(_,P)),Me(m,y),Oe(m,_)}function $e(m,y){return[y]=ct(y),H(m).some(_=>_.classList.contains(y))}function it(m,y,_){let P=ct(y);q(_)||(_=!!_);for(let G of H(m))for(let J of P)G.classList.toggle(J,_)}function ct(m){return m?h(m)?m.map(ct).flat():String(m).split(" ").filter(Boolean):[]}function rt(m,y,_){var P;if(S(y)){for(let G in y)rt(m,G,y[G]);return}if(q(_))return(P=U(m))==null?void 0:P.getAttribute(y);for(let G of H(m))v(_)&&(_=_.call(G,rt(G,y))),_===null?zt(G,y):G.setAttribute(y,_)}function At(m,y){return H(m).some(_=>_.hasAttribute(y))}function zt(m,y){H(m).forEach(_=>_.removeAttribute(y))}function mt(m,y){for(let _ of[y,`data-${y}`])if(At(m,_))return rt(m,_)}let fr=typeof window<"u",qt=fr&&document.dir==="rtl",xe=fr&&"ontouchstart"in window,te=fr&&window.PointerEvent,ge=te?"pointerdown":xe?"touchstart":"mousedown",_e=te?"pointermove":xe?"touchmove":"mousemove",Re=te?"pointerup":xe?"touchend":"mouseup",Ue=te?"pointerenter":xe?"":"mouseenter",ze=te?"pointerleave":xe?"":"mouseleave",je=te?"pointercancel":"touchcancel",W={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};function ae(m){return H(m).some(y=>W[y.tagName.toLowerCase()])}let Le=fr&&Element.prototype.checkVisibility||function(){return this.offsetWidth||this.offsetHeight||this.getClientRects().length};function He(m){return H(m).some(y=>Le.call(y))}let lt="input,select,textarea,button";function Tt(m){return H(m).some(y=>Kt(y,lt))}let nr=`${lt},a[href],[tabindex]`;function $r(m){return Kt(m,nr)}function $t(m){var y;return(y=U(m))==null?void 0:y.parentElement}function li(m,y){return H(m).filter(_=>Kt(_,y))}function Kt(m,y){return H(m).some(_=>_.matches(y))}function Qi(m,y){let _=[];for(;m=$t(m);)(!y||Kt(m,y))&&_.push(m);return _}function wr(m,y){m=U(m);let _=m?g(m.children):[];return y?li(_,y):_}function Mn(m,y){return y?H(m).indexOf(U(y)):wr($t(m)).indexOf(m)}function ka(m){return m=U(m),m&&["origin","pathname","search"].every(y=>m[y]===location[y])}function La(m){if(ka(m)){let{hash:y,ownerDocument:_}=U(m),P=decodeURIComponent(y).slice(1);return _.getElementById(P)||_.getElementsByName(P)[0]}}function Pn(m,y){return Bo(m,ia(m,y))}function na(m,y){return ti(m,ia(m,y))}function Bo(m,y){return U(eo(m,U(y),"querySelector"))}function ti(m,y){return H(eo(m,U(y),"querySelectorAll"))}function ia(m,y=document){return E(y)||Ql(m).isContextSelector?y:y.ownerDocument}let Jl=/([!>+~-])(?=\s+[!>+~-]|\s*$)/g,wo=/(\([^)]*\)|[^,])+/g,Ql=fe(m=>{let y=!1;if(!m||!F(m))return{};let _=[];for(let P of m.match(wo))P=P.trim().replace(Jl,"$1 *"),y||(y=["!","+","~","-",">"].includes(P[0])),_.push(P);return{selector:_.join(","),selectors:_,isContextSelector:y}}),iu=/(\([^)]*\)|\S)*/,ji=fe(m=>{m=m.slice(1).trim();let[y]=m.match(iu);return[y,m.slice(y.length+1)]});function eo(m,y=document,_){let P=Ql(m);if(!P.isContextSelector)return P.selector?oa(y,_,P.selector):m;m="";let G=P.selectors.length===1;for(let J of P.selectors){let re,pe=y;if(J[0]==="!"&&([re,J]=ji(J),pe=y.parentElement.closest(re),!J&&G)||pe&&J[0]==="-"&&([re,J]=ji(J),pe=pe.previousElementSibling,pe=Kt(pe,re)?pe:null,!J&&G))return pe;if(pe){if(G)return J[0]==="~"||J[0]==="+"?(J=`:scope > :nth-child(${Mn(pe)+1}) ${J}`,pe=pe.parentElement):J[0]===">"&&(J=`:scope ${J}`),oa(pe,_,J);m+=`${m?",":""}${ou(pe)} ${J}`}}return E(y)||(y=y.ownerDocument),oa(y,_,m)}function oa(m,y,_){try{return m[y](_)}catch{return null}}function ou(m){let y=[];for(;m.parentNode;){let _=rt(m,"id");if(_){y.unshift(`#${Ba(_)}`);break}else{let{tagName:P}=m;P!=="HTML"&&(P+=`:nth-child(${Mn(m)+1})`),y.unshift(P),m=m.parentNode}}return y.join(" > ")}function Ba(m){return F(m)?CSS.escape(m):""}function Yt(...m){let[y,_,P,G,J=!1]=Yr(m);G.length>1&&(G=aa(G)),J?.self&&(G=Gu(G)),P&&(G=kt(P,G));for(let re of _)for(let pe of y)pe.addEventListener(re,G,J);return()=>qi(y,_,G,J)}function qi(...m){let[y,_,,P,G=!1]=Yr(m);for(let J of _)for(let re of y)re.removeEventListener(J,P,G)}function Er(...m){let[y,_,P,G,J=!1,re]=Yr(m),pe=Yt(y,_,P,Ae=>{let We=!re||re(Ae);We&&(pe(),G(Ae,We))},J);return pe}function It(m,y,_){return ye(m).every(P=>P.dispatchEvent(bo(y,!0,!0,_)))}function bo(m,y=!0,_=!1,P){return F(m)&&(m=new CustomEvent(m,{bubbles:y,cancelable:_,detail:P})),m}function Yr(m){return m[0]=ye(m[0]),F(m[1])&&(m[1]=m[1].split(" ")),v(m[2])&&m.splice(2,0,!1),m}function kt(m,y){return _=>{let P=m[0]===">"?ti(m,_.currentTarget).reverse().find(G=>G.contains(_.target)):_.target.closest(m);P&&(_.current=P,y.call(this,_),delete _.current)}}function aa(m){return y=>h(y.detail)?m(y,...y.detail):m(y)}function Gu(m){return function(y){if(y.target===y.currentTarget||y.target===y.current)return m.call(null,y)}}function Rn(m){return m&&"addEventListener"in m}function j(m){return Rn(m)?m:U(m)}function ye(m){return h(m)?m.map(j).filter(Boolean):F(m)?ti(m):Rn(m)?[m]:H(m)}function Xe(m){return m.pointerType==="touch"||!!m.touches}function ot(m){var y,_;let{clientX:P,clientY:G}=((y=m.touches)==null?void 0:y[0])||((_=m.changedTouches)==null?void 0:_[0])||m;return{x:P,y:G}}let Ye={"animation-iteration-count":!0,"column-count":!0,"fill-opacity":!0,"flex-grow":!0,"flex-shrink":!0,"font-weight":!0,"line-height":!0,opacity:!0,order:!0,orphans:!0,"stroke-dasharray":!0,"stroke-dashoffset":!0,widows:!0,"z-index":!0,zoom:!0};function Ee(m,y,_,P){let G=H(m);for(let J of G)if(F(y)){if(y=Sr(y),q(_))return getComputedStyle(J).getPropertyValue(y);J.style.setProperty(y,B(_)&&!Ye[y]?`${_}px`:_||I(_)?_:"",P)}else if(h(y)){let re={};for(let pe of y)re[pe]=Ee(J,pe);return re}else if(S(y))for(let re in y)Ee(J,re,y[re],_);return G[0]}let Sr=fe(m=>{if(a(m,"--"))return m;m=i(m);let{style:y}=document.documentElement;if(m in y)return m;for(let _ of["webkit","moz"]){let P=`-${_}-${m}`;if(P in y)return P}}),Tn="uk-transition",fi="transitionend",au="transitioncanceled";function Ax(m,y,_=400,P="linear"){return _=Math.round(_),Promise.all(H(m).map(G=>new Promise((J,re)=>{for(let Ae in y)Ee(G,Ae);let pe=setTimeout(()=>It(G,fi),_);Er(G,[fi,au],({type:Ae})=>{clearTimeout(pe),Me(G,Tn),Ee(G,{transitionProperty:"",transitionDuration:"",transitionTimingFunction:""}),Ae===au?re():J(G)},{self:!0}),Oe(G,Tn),Ee(G,{transitionProperty:Object.keys(y).map(Sr).join(","),transitionDuration:`${_}ms`,transitionTimingFunction:P,...y})})))}let St={start:Ax,async stop(m){It(m,fi),await Promise.resolve()},async cancel(m){It(m,au),await Promise.resolve()},inProgress(m){return $e(m,Tn)}},hc="uk-animation",Gh="animationend",Yu="animationcanceled";function sa(m,y,_=200,P,G){return Promise.all(H(m).map(J=>new Promise((re,pe)=>{$e(J,hc)&&It(J,Yu);let Ae=[y,hc,`${hc}-${G?"leave":"enter"}`,P&&`uk-transform-origin-${P}`,G&&`${hc}-reverse`],We=setTimeout(()=>It(J,Gh),_);Er(J,[Gh,Yu],({type:Ve})=>{clearTimeout(We),Ve===Yu?pe():re(J),Ee(J,"animationDuration",""),Me(J,Ae)},{self:!0}),Ee(J,"animationDuration",`${_}ms`),Oe(J,Ae)})))}let gs={in:sa,out(m,y,_,P){return sa(m,y,_,P,!0)},inProgress(m){return $e(m,hc)},cancel(m){It(m,Yu)}};function Cx(m){if(document.readyState!=="loading"){m();return}Er(document,"DOMContentLoaded",m)}function Zr(m,...y){return y.some(_=>{var P;return((P=m?.tagName)==null?void 0:P.toLowerCase())===_.toLowerCase()})}function nm(m){return m=cr(m),m.innerHTML="",m}function vs(m,y){return q(y)?cr(m).innerHTML:bn(nm(m),y)}let Yh=xc("prepend"),bn=xc("append"),gc=xc("before"),vc=xc("after");function xc(m){return function(y,_){var P;let G=H(F(_)?Zu(_):_);return(P=cr(y))==null||P[m](...G),yc(G)}}function Do(m){H(m).forEach(y=>y.remove())}function im(m,y){for(y=U(gc(m,y));y.firstElementChild;)y=y.firstElementChild;return bn(y,m),y}function om(m,y){return H(H(m).map(_=>_.hasChildNodes()?im(g(_.childNodes),y):bn(_,y)))}function So(m){H(m).map($t).filter((y,_,P)=>P.indexOf(y)===_).forEach(y=>y.replaceWith(...y.childNodes))}let _S=/^<(\w+)\s*\/?>(?:<\/\1>)?$/;function Zu(m){let y=_S.exec(m);if(y)return document.createElement(y[1]);let _=document.createElement("template");return _.innerHTML=m.trim(),yc(_.content.childNodes)}function yc(m){return m.length>1?m:m[0]}function Po(m,y){if(T(m))for(y(m),m=m.firstElementChild;m;)Po(m,y),m=m.nextElementSibling}function cr(m,y){return Mx(m)?U(Zu(m)):Bo(m,y)}function Xr(m,y){return Mx(m)?H(Zu(m)):ti(m,y)}function Mx(m){return F(m)&&a(m.trim(),"<")}let Xu={width:["left","right"],height:["top","bottom"]};function Pt(m){let y=T(m)?U(m).getBoundingClientRect():{height:zi(m),width:Ku(m),top:0,left:0};return{height:y.height,width:y.width,top:y.top,left:y.left,bottom:y.top+y.height,right:y.left+y.width}}function xr(m,y){y&&Ee(m,{left:0,top:0});let _=Pt(m);if(m){let{scrollY:P,scrollX:G}=ee(m),J={height:P,width:G};for(let re in Xu)for(let pe of Xu[re])_[pe]+=J[re]}if(!y)return _;for(let P of["left","top"])Ee(m,P,y[P]-_[P])}function Zh(m){let{top:y,left:_}=xr(m),{ownerDocument:{body:P,documentElement:G},offsetParent:J}=U(m),re=J||G;for(;re&&(re===P||re===G)&&Ee(re,"position")==="static";)re=re.parentNode;if(T(re)){let pe=xr(re);y-=pe.top+X(Ee(re,"borderTopWidth")),_-=pe.left+X(Ee(re,"borderLeftWidth"))}return{top:y-X(Ee(m,"marginTop")),left:_-X(Ee(m,"marginLeft"))}}function jl(m){m=U(m);let y=[m.offsetTop,m.offsetLeft];for(;m=m.offsetParent;)if(y[0]+=m.offsetTop+X(Ee(m,"borderTopWidth")),y[1]+=m.offsetLeft+X(Ee(m,"borderLeftWidth")),Ee(m,"position")==="fixed"){let _=ee(m);return y[0]+=_.scrollY,y[1]+=_.scrollX,y}return y}let zi=wc("height"),Ku=wc("width");function wc(m){let y=s(m);return(_,P)=>{if(q(P)){if(C(_))return _[`inner${y}`];if(E(_)){let G=_.documentElement;return Math.max(G[`offset${y}`],G[`scroll${y}`])}return _=U(_),P=Ee(_,m),P=P==="auto"?_[`offset${y}`]:X(P)||0,P-su(_,m)}else return Ee(_,m,!P&&P!==0?"":+P+su(_,m)+"px")}}function su(m,y,_="border-box"){return Ee(m,"boxSizing")===_?ve(Xu[y],P=>X(Ee(m,`padding-${P}`))+X(Ee(m,`border-${P}-width`))):0}function bc(m){for(let y in Xu)for(let _ in Xu[y])if(Xu[y][_]===m)return Xu[y][1-_];return m}function Kn(m,y="width",_=window,P=!1){return F(m)?ve(OS(m),G=>{let J=ua(G);return J?FS(J==="vh"?_x():J==="vw"?Ku(ee(_)):P?_[`offset${s(y)}`]:Pt(_)[y],G):G}):X(m)}let am=/-?\d+(?:\.\d+)?(?:v[wh]|%|px)?/g,OS=fe(m=>m.toString().replace(/\s/g,"").match(am)||[]),Tx=/(?:v[hw]|%)$/,ua=fe(m=>(m.match(Tx)||[])[0]);function FS(m,y){return m*X(y)/100}let Dc,uu;function _x(){return Dc||(uu||(uu=cr("
"),Ee(uu,{height:"100vh",position:"fixed"}),Yt(window,"resize",()=>Dc=null)),bn(document.body,uu),Dc=uu.clientHeight,Do(uu),Dc)}let Ui={read:sm,write:Xh,clear:tf,flush:Ox},ef=[],Ro=[];function sm(m){return ef.push(m),Jh(),m}function Xh(m){return Ro.push(m),Jh(),m}function tf(m){Qh(ef,m),Qh(Ro,m)}let Kh=!1;function Ox(){Fx(ef),Fx(Ro.splice(0)),Kh=!1,(ef.length||Ro.length)&&Jh()}function Jh(){Kh||(Kh=!0,queueMicrotask(Ox))}function Fx(m){let y;for(;y=m.shift();)try{y()}catch(_){console.error(_)}}function Qh(m,y){let _=m.indexOf(y);return~_&&m.splice(_,1)}class jh{init(){this.positions=[];let y;this.unbind=Yt(document,"mousemove",_=>y=ot(_)),this.interval=setInterval(()=>{y&&(this.positions.push(y),this.positions.length>5&&this.positions.shift())},50)}cancel(){var y;(y=this.unbind)==null||y.call(this),clearInterval(this.interval)}movesTo(y){if(!this.positions||this.positions.length<2)return!1;let _=Pt(y),{left:P,right:G,top:J,bottom:re}=_,[pe]=this.positions,Ae=be(this.positions),We=[pe,Ae];return we(Ae,_)?!1:[[{x:P,y:J},{x:G,y:re}],[{x:P,y:re},{x:G,y:J}]].some(et=>{let vt=IS(We,et);return vt&&we(vt,_)})}}function IS([{x:m,y},{x:_,y:P}],[{x:G,y:J},{x:re,y:pe}]){let Ae=(pe-J)*(_-m)-(re-G)*(P-y);if(Ae===0)return!1;let We=((re-G)*(y-J)-(pe-J)*(m-G))/Ae;return We<0?!1:{x:m+We*(_-m),y:y+We*(P-y)}}function Ix(m,y,_={},{intersecting:P=!0}={}){let G=new IntersectionObserver(P?(J,re)=>{J.some(pe=>pe.isIntersecting)&&y(J,re)}:y,_);for(let J of H(m))G.observe(J);return G}let kS=fr&&window.ResizeObserver;function Sc(m,y,_={box:"border-box"}){if(kS)return tg(ResizeObserver,m,y,_);let P=[Yt(window,"load resize",y),Yt(document,"loadedmetadata load",y,!0)];return{disconnect:()=>P.map(G=>G())}}function um(m){return{disconnect:Yt([window,window.visualViewport],"resize",m)}}function eg(m,y,_){return tg(MutationObserver,m,y,_)}function tg(m,y,_,P){let G=new m(_);for(let J of H(y))G.observe(J,P);return G}function rf(m){lu(m)&&fm(m,{func:"playVideo",method:"play"}),lm(m)&&m.play().catch(le)}function xs(m){lu(m)&&fm(m,{func:"pauseVideo",method:"pause"}),lm(m)&&m.pause()}function kx(m){lu(m)&&fm(m,{func:"mute",method:"setVolume",value:0}),lm(m)&&(m.muted=!0)}function Lx(m){return lm(m)||lu(m)}function lm(m){return Zr(m,"video")}function lu(m){return Zr(m,"iframe")&&(qn(m)||Bx(m))}function qn(m){return!!m.src.match(/\/\/.*?youtube(-nocookie)?\.[a-z]+\/(watch\?v=[^&\s]+|embed)|youtu\.be\/.*/)}function Bx(m){return!!m.src.match(/vimeo\.com\/video\/.*/)}async function fm(m,y){await LS(m),nf(m,y)}function nf(m,y){m.contentWindow.postMessage(JSON.stringify({event:"command",...y}),"*")}let rg="_ukPlayer",Px=0;function LS(m){if(m[rg])return m[rg];let y=qn(m),_=Bx(m),P=++Px,G;return m[rg]=new Promise(J=>{y&&Er(m,"load",()=>{let re=()=>nf(m,{event:"listening",id:P});G=setInterval(re,100),re()}),Er(window,"message",J,!1,({data:re})=>{try{return re=JSON.parse(re),y&&re?.id===P&&re.event==="onReady"||_&&Number(re?.player_id)===P}catch{}}),m.src=`${m.src}${f(m.src,"?")?"&":"?"}${y?"enablejsapi=1":`api=1&player_id=${P}`}`}).then(()=>clearInterval(G))}function ng(m,y=0,_=0){return He(m)?oe(...fu(m).map(P=>{let{top:G,left:J,bottom:re,right:pe}=No(P);return{top:G-y,left:J-_,bottom:re+y,right:pe+_}}).concat(xr(m))):!1}function ig(m,{offset:y=0}={}){let _=He(m)?Ju(m,!1,["hidden"]):[];return _.reduce((re,pe,Ae)=>{let{scrollTop:We,scrollHeight:Ve,offsetHeight:et}=pe,vt=No(pe),Bt=Ve-vt.height,{height:rr,top:br}=_[Ae-1]?No(_[Ae-1]):xr(m),Fr=Math.ceil(br-vt.top-y+We);return y>0&&etBt?(y-=Fr-Bt,Fr=Bt):Fr<0&&(y-=Fr,Fr=0),()=>P(pe,Fr-We,m,Bt).then(re)},()=>Promise.resolve())();function P(re,pe,Ae,We){return new Promise(Ve=>{let et=re.scrollTop,vt=G(Math.abs(pe)),Bt=Date.now(),rr=Nc(re)===re,br=xr(Ae).top+(rr?0:et),Fr=0,xu=15;(function Um(){let Hm=J(se((Date.now()-Bt)/vt)),yu=0;_[0]===re&&et+peEe(re,"position")==="fixed");return~J&&(G=G.slice(J)),[P].concat(G.filter(re=>Ee(re,"overflow").split(" ").some(pe=>f(["auto","scroll",..._],pe))&&(!y||re.scrollHeight>No(re).height))).reverse()}function ys(...m){return Ju(...m)[0]}function fu(m){return Ju(m,!1,["hidden","clip"])}function No(m){let y=ee(m),_=Nc(m),P=!M(m)||m.contains(_);if(P&&y.visualViewport){let{height:Ae,width:We,scale:Ve,pageTop:et,pageLeft:vt}=y.visualViewport;return Ae=Math.round(Ae*Ve),We=Math.round(We*Ve),{height:Ae,width:We,top:et,left:vt,bottom:et+Ae,right:vt+We}}let G=xr(P?y:m);if(Ee(m,"display")==="inline")return G;let{body:J,documentElement:re}=y.document,pe=P?_===re||_.clientHeight!pe.contains(re)&&!of(pe,"static")))=vt[Ve])continue;Bt=qx(m,y,_,Ae)[Ve]-P[Ve];let br=Rx(m,y[Ae],J,Ae);if(!Eo(og(P,Bt,Ae),br,Ae)){if(Eo(P,br,Ae))continue;if(_.recursion)return!1;let Fr=zx(m,y,_);if(Fr&&Eo(Fr,br,1-Ae))return Fr;continue}}else if(re[Ae]==="shift"){let rr=xr(y[Ae]),{offset:br}=_;Bt=se(se(P[Ve],vt[Ve],vt[et]-P[We]),rr[Ve]-P[We]+br[Ae],rr[et]-br[Ae])-P[Ve]}pe=og(pe,Bt,Ae)}return pe}function pm(m,y,_){let{attach:P,offset:G}={attach:{element:["left","top"],target:["left","top"],..._.attach},offset:[0,0],..._},J=xr(m);for(let[re,[pe,,Ae,We]]of Object.entries(to)){let Ve=P.target[re]===P.element[re]?No(y[re]):xr(y[re]);J=og(J,Ve[Ae]-J[Ae]+ag(P.target[re],We,Ve[pe])-ag(P.element[re],We,J[pe])+ +G[re],re)}return J}function og(m,y,_){let[,P,G,J]=to[_],re={...m};return re[G]=m[P]=m[G]+y,re[J]+=y,re}function ag(m,y,_){return m==="center"?_/2:m===y?_:0}function BS(m,y,_,P,G){let J=ju(...mm(m,y).map(No));return _&&(J[to[G][2]]+=_,J[to[G][3]]-=_),P&&(J=ju(J,xr(h(P)?P[G]:P))),J}function Rx(m,y,_,P){let[G,J,re,pe]=to[P],[Ae]=mm(m,y),We=No(Ae);return["auto","scroll"].includes(Ee(Ae,`overflow-${J}`))&&(We[re]-=Ae[`scroll${s(re)}`],We[pe]=We[re]+Ae[`scroll${s(G)}`]),We[re]+=_,We[pe]-=_,We}function mm(m,y){return fu(y).filter(_=>_.contains(m))}function ju(...m){let y={};for(let _ of m)for(let[,,P,G]of to)y[P]=Math.max(y[P]||0,_[P]),y[G]=Math.min(...[y[G],_[G]].filter(Boolean));return y}function Eo(m,y,_){let[,,P,G]=to[_];return m[P]>=y[P]&&m[G]<=y[G]}function qx(m,y,{offset:_,attach:P},G){return pm(m,y,{attach:{element:Ux(P.element,G),target:Ux(P.target,G)},offset:PS(_,G)})}function zx(m,y,_){return cu(m,y,{..._,attach:{element:_.attach.element.map(Hx).reverse(),target:_.attach.target.map(Hx).reverse()},offset:_.offset.reverse(),placement:_.placement.reverse(),recursion:!0})}function Ux(m,y){let _=[...m],P=to[y].indexOf(m[y]);return~P&&(_[y]=to[y][1-P%2+2]),_}function Hx(m){for(let y=0;ydocument,handler(){document.hidden?this.stop():this.start()}},methods:{start(){this.stop(),this.update(),this.timer||(It(this.$el,"countdownstart"),this.timer=setInterval(this.update,1e3))},stop(){this.timer&&(clearInterval(this.timer),It(this.$el,"countdownstop"),this.timer=null)},update(){let m=Vx(this.date);m.total||(this.stop(),this.end||(It(this.$el,"countdownend"),this.end=!0));for(let y of Ec){let _=cr(this.clsWrapper.replace("%unit%",y),this.$el);if(!_)continue;let P=Math.trunc(m[y]).toString().padStart(2,"0");_.textContent!==P&&(P=P.split(""),P.length!==_.children.length&&vs(_,P.map(()=>"").join("")),P.forEach((G,J)=>_.children[J].textContent=G))}}}};function Vx(m){let y=Math.max(0,m-Date.now())/1e3;return{total:y,seconds:y%60,minutes:y/60%60,hours:y/60/60%24,days:y/60/60/24}}let _n={};_n.events=_n.watch=_n.observe=_n.created=_n.beforeConnect=_n.connected=_n.beforeDisconnect=_n.disconnected=_n.destroy=dm,_n.args=function(m,y){return y!==!1&&dm(y||m)},_n.update=function(m,y){return ne(dm(m,v(y)?{read:y}:y),"order")},_n.props=function(m,y){if(h(y)){let _={};for(let P of y)_[P]=String;y=_}return _n.methods(m,y)},_n.computed=_n.methods=function(m,y){return y?m?{...m,...y}:y:m},_n.i18n=_n.data=function(m,y,_){return _?Ac(m,y,_):y?m?function(P){return Ac(m,y,P)}:y:m};function Ac(m,y,_){return _n.computed(v(m)?m.call(_,_):m,v(y)?y.call(_,_):y)}function dm(m,y){return m=m&&!h(m)?[m]:m,y?m?m.concat(y):h(y)?y:[y]:m}function hm(m,y){return q(y)?m:y}function $i(m,y,_){let P={};if(v(y)&&(y=y.options),y.extends&&(m=$i(m,y.extends,_)),y.mixins)for(let J of y.mixins)m=$i(m,J,_);for(let J in m)G(J);for(let J in y)r(m,J)||G(J);function G(J){P[J]=(_n[J]||hm)(m[J],y[J],_)}return P}function el(m,y=[]){try{return m?a(m,"{")?JSON.parse(m):y.length&&!f(m,":")?{[y[0]]:m}:m.split(";").reduce((_,P)=>{let[G,J]=P.split(/:(.*)/);return G&&!q(J)&&(_[G.trim()]=J.trim()),_},{}):{}}catch{return{}}}function Cc(m,y){return m===Boolean?R(y):m===Number?V(y):m==="list"?Gx(y):m===Object&&F(y)?el(y):m?m(y):y}let sg=/,(?![^(]*\))/;function Gx(m){return h(m)?m:F(m)?m.split(sg).map(y=>B(y)?V(y):R(y.trim())):[m]}function Yx(m){m._data={},m._updates=[...m.$options.update||[]],m._disconnect.push(()=>m._updates=m._data=null)}function ug(m,y){m._updates.unshift(y)}function Mc(m,y="update"){m._connected&&m._updates.length&&(m._queued||(m._queued=new Set,Ui.read(()=>{m._connected&&RS(m,m._queued),m._queued=null})),m._queued.add(y.type||y))}function RS(m,y){for(let{read:_,write:P,events:G=[]}of m._updates){if(!y.has("update")&&!G.some(re=>y.has(re)))continue;let J;_&&(J=_.call(m,m._data,y),J&&D(J)&&x(m._data,J)),P&&J!==!1&&Ui.write(()=>{m._connected&&P.call(m,m._data,y)})}}function qo(m){return rl(Sc,m,"resize")}function zo(m){return rl(Ix,m)}function ws(m){return rl(eg,m)}function bs(m={}){return zo({handler:function(y,_){let{targets:P=this.$el,preload:G=5}=m;for(let J of H(v(P)?P(this):P))Xr('[loading="lazy"]',J).slice(0,G-1).forEach(re=>zt(re,"loading"));for(let J of y.filter(({isIntersecting:re})=>re).map(({target:re})=>re))_.unobserve(J)},...m})}function Tc(m){return rl((y,_)=>um(_),m,"resize")}function tl(m){return rl((y,_)=>({disconnect:Yt(il(y),"scroll",_,{passive:!0})}),m,"scroll")}function lg(m){return{observe(y,_){return{observe:le,unobserve:le,disconnect:Yt(y,ge,_,{passive:!0})}},handler(y){if(!Xe(y))return;let _=ot(y),P="tagName"in y.target?y.target:$t(y.target);Er(document,`${Re} ${je} scroll`,G=>{let{x:J,y:re}=ot(G);(G.type!=="scroll"&&P&&J&&Math.abs(_.x-J)>100||re&&Math.abs(_.y-re)>100)&&setTimeout(()=>{It(P,"swipe"),It(P,`swipe${nl(_.x,_.y,J,re)}`)})})},...m}}function rl(m,y,_){return{observe:m,handler(){Mc(this,_)},...y}}function nl(m,y,_,P){return Math.abs(m-_)>=Math.abs(y-P)?m-_>0?"Left":"Right":y-P>0?"Up":"Down"}function il(m){return H(m).map(y=>{let{ownerDocument:_}=y,P=ys(y,!0);return P===_.scrollingElement?_:P})}var Ci={props:{margin:String,firstColumn:Boolean},data:{margin:"uk-margin-small-top",firstColumn:"uk-first-column"},observe:[ws({options:{childList:!0}}),ws({options:{attributes:!0,attributeFilter:["style"]},target:({$el:m})=>[m,...wr(m)]}),qo({target:({$el:m})=>[m,...wr(m)]})],update:{read(){return{rows:Ra(wr(this.$el))}},write({rows:m}){for(let y of m)for(let _ of y)it(_,this.margin,m[0]!==y),it(_,this.firstColumn,y[qt?y.length-1:0]===_)},events:["resize"]}};function Ra(m){let y=[[]],_=m.some((P,G)=>G&&m[G-1].offsetParent!==P.offsetParent);for(let P of m){if(!He(P))continue;let G=qa(P,_);for(let J=y.length-1;J>=0;J--){let re=y[J];if(!re[0]){re.push(P);break}let pe=qa(re[0],_);if(G.top>=pe.bottom-1&&G.top!==pe.top){y.push([P]);break}if(G.bottom-1>pe.top||G.top===pe.top){let Ae=re.length-1;for(;Ae>=0;Ae--){let We=qa(re[Ae],_);if(G.left>=We.left)break}re.splice(Ae+1,0,P);break}if(J===0){y.unshift([P]);break}}}return y}function qa(m,y=!1){let{offsetTop:_,offsetLeft:P,offsetHeight:G,offsetWidth:J}=m;return y&&([_,P]=jl(m)),{top:_,left:P,bottom:_+G,right:P+J}}async function gm(m,y,_){await Oc();let P=wr(y),G=P.map(Bt=>Zx(Bt,!0)),J={...Ee(y,["height","padding"]),display:"block"},re=P.concat(y);await Promise.all(re.map(St.cancel)),Ee(re,"transitionProperty","none"),await m(),P=P.concat(wr(y).filter(Bt=>!f(P,Bt))),await Promise.resolve(),Ee(re,"transitionProperty","");let pe=rt(y,"style"),Ae=Ee(y,["height","padding"]),[We,Ve]=Xx(y,P,G),et=P.map(Bt=>({style:rt(Bt,"style")}));P.forEach((Bt,rr)=>Ve[rr]&&Ee(Bt,Ve[rr])),Ee(y,J),It(y,"scroll"),await Oc();let vt=P.map((Bt,rr)=>$t(Bt)===y&&St.start(Bt,We[rr],_,"ease")).concat(St.start(y,Ae,_,"ease"));try{await Promise.all(vt),P.forEach((Bt,rr)=>{rt(Bt,et[rr]),$t(Bt)===y&&Ee(Bt,"display",We[rr].opacity===0?"none":"")}),rt(y,"style",pe)}catch{rt(P,"style",""),_c(y,J)}}function Zx(m,y){let _=Ee(m,"zIndex");return He(m)?{display:"",opacity:y?Ee(m,"opacity"):"0",pointerEvents:"none",position:"absolute",zIndex:_==="auto"?Mn(m):_,...fg(m)}:!1}function Xx(m,y,_){let P=y.map((J,re)=>$t(J)&&re in _?_[re]?He(J)?fg(J):{opacity:0}:{opacity:He(J)?1:0}:!1),G=P.map((J,re)=>{let pe=$t(y[re])===m&&(_[re]||Zx(y[re]));if(!pe)return!1;if(!J)delete pe.opacity;else if(!("opacity"in J)){let{opacity:Ae}=pe;Ae%1?J.opacity=1:delete pe.opacity}return pe});return[P,G]}function _c(m,y){for(let _ in y)Ee(m,_,"")}function fg(m){let{height:y,width:_}=Pt(m);return{height:y,width:_,transform:"",...Zh(m),...Ee(m,["marginTop","marginLeft"])}}function Oc(){return new Promise(m=>requestAnimationFrame(m))}let af="uk-transition-leave",cg="uk-transition-enter";function vm(m,y,_,P=0){let G=Fc(y,!0),J={opacity:1},re={opacity:0},pe=Ve=>()=>G===Fc(y)?Ve():Promise.reject(),Ae=pe(async()=>{Oe(y,af),await Promise.all(ym(y).map((Ve,et)=>new Promise(vt=>setTimeout(()=>St.start(Ve,re,_/2,"ease").then(vt),et*P)))),Me(y,af)}),We=pe(async()=>{let Ve=zi(y);Oe(y,cg),m(),Ee(wr(y),{opacity:0}),await Oc();let et=wr(y),vt=zi(y);Ee(y,"alignContent","flex-start"),zi(y,Ve);let Bt=ym(y);Ee(et,re);let rr=Bt.map(async(br,Fr)=>{await sf(Fr*P),await St.start(br,J,_/2,"ease")});Ve!==vt&&rr.push(St.start(y,{height:vt},_/2+Bt.length*P,"ease")),await Promise.all(rr).then(()=>{Me(y,cg),G===Fc(y)&&(Ee(y,{height:"",alignContent:""}),Ee(et,{opacity:""}),delete y.dataset.transition)})});return $e(y,af)?xm(y).then(We):$e(y,cg)?xm(y).then(Ae).then(We):Ae().then(We)}function Fc(m,y){return y&&(m.dataset.transition=1+Fc(m)),V(m.dataset.transition)||0}function xm(m){return Promise.all(wr(m).filter(St.inProgress).map(y=>new Promise(_=>Er(y,"transitionend transitioncanceled",_))))}function ym(m){return Ra(wr(m)).flat().filter(He)}function sf(m){return new Promise(y=>setTimeout(y,m))}var Ic={props:{duration:Number,animation:Boolean},data:{duration:150,animation:"slide"},methods:{animate(m,y=this.$el){let _=this.animation;return(_==="fade"?vm:_==="delayed-fade"?(...G)=>vm(...G,40):_?gm:()=>(m(),Promise.resolve()))(m,y,this.duration).catch(le)}}};let _r={TAB:9,ESC:27,SPACE:32,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40};var wm={mixins:[Ic],args:"target",props:{target:String,selActive:Boolean},data:{target:"",selActive:!1,attrItem:"uk-filter-control",cls:"uk-active",duration:250},computed:{children:({target:m},y)=>Xr(`${m} > *`,y),toggles:({attrItem:m},y)=>Xr(`[${m}],[data-${m}]`,y)},watch:{toggles(m){this.updateState();let y=Xr(this.selActive,this.$el);for(let _ of m){this.selActive!==!1&&it(_,this.cls,f(y,_));let P=kc(_);Zr(P,"a")&&rt(P,"role","button")}},children(m,y){y&&this.updateState()}},events:{name:"click keydown",delegate:({attrItem:m})=>`[${m}],[data-${m}]`,handler(m){m.type==="keydown"&&m.keyCode!==_r.SPACE||m.target.closest("a,button")&&(m.preventDefault(),this.apply(m.current))}},methods:{apply(m){let y=this.getState(),_=bm(m,this.attrItem,this.getState());qS(y,_)||this.setState(_)},getState(){return this.toggles.filter(m=>$e(m,this.cls)).reduce((m,y)=>bm(y,this.attrItem,m),{filter:{"":""},sort:[]})},async setState(m,y=!0){m={filter:{"":""},sort:[],...m},It(this.$el,"beforeFilter",[this,m]);for(let _ of this.toggles)it(_,this.cls,pg(_,this.attrItem,m));await Promise.all(Xr(this.target,this.$el).map(_=>{let P=()=>zS(m,_,wr(_));return y?this.animate(P,_):P()})),It(this.$el,"afterFilter",[this])},updateState(){Ui.write(()=>this.setState(this.getState(),!1))}}};function Kx(m,y){return el(mt(m,y),["filter"])}function qS(m,y){return["filter","sort"].every(_=>Z(m[_],y[_]))}function zS(m,y,_){for(let J of _)Ee(J,"display",Object.values(m.filter).every(re=>!re||Kt(J,re))?"":"none");let[P,G]=m.sort;if(P){let J=uf(_,P,G);Z(J,_)||bn(y,J)}}function bm(m,y,_){let{filter:P,group:G,sort:J,order:re="asc"}=Kx(m,y);return(P||q(J))&&(G?P?(delete _.filter[""],_.filter[G]=P):(delete _.filter[G],(L(_.filter)||""in _.filter)&&(_.filter={"":P||""})):_.filter={"":P||""}),q(J)||(_.sort=[J,re]),_}function pg(m,y,{filter:_={"":""},sort:[P,G]}){let{filter:J="",group:re="",sort:pe,order:Ae="asc"}=Kx(m,y);return q(pe)?re in _&&J===_[re]||!J&&re&&!(re in _)&&!_[""]:P===pe&&G===Ae}function uf(m,y,_){return[...m].sort((P,G)=>mt(P,y).localeCompare(mt(G,y),void 0,{numeric:!0})*(_==="asc"||-1))}function kc(m){return cr("a,button",m)||m}let mg;function Lc(m){let y=Yt(m,"touchstart",P=>{if(P.targetTouches.length!==1||Kt(P.target,'input[type="range"'))return;let G=ot(P).y,J=Yt(m,"touchmove",re=>{let pe=ot(re).y;pe!==G&&(G=pe,Ju(re.target).some(Ae=>{if(!m.contains(Ae))return!1;let{scrollHeight:We,clientHeight:Ve}=Ae;return Ve{mg=!1,y(),Ee(_,{overflowY:"",touchAction:"",paddingRight:""})}}var lf={props:{container:Boolean},data:{container:!0},computed:{container({container:m}){return m===!0&&this.$container||m&&cr(m)}}},fa={props:{cls:Boolean,animation:"list",duration:Number,velocity:Number,origin:String,transition:String},data:{cls:!1,animation:[!1],duration:200,velocity:.2,origin:!1,transition:"ease",clsEnter:"uk-togglable-enter",clsLeave:"uk-togglable-leave"},computed:{hasAnimation:({animation:m})=>!!m[0],hasTransition:({animation:m})=>["slide","reveal"].some(y=>a(m[0],y))},methods:{async toggleElement(m,y,_){try{return await Promise.all(H(m).map(P=>{let G=O(y)?y:!this.isToggled(P);if(!It(P,`before${G?"show":"hide"}`,[this]))return Promise.reject();let J=(v(_)?_:_===!1||!this.hasAnimation?Jx:this.hasTransition?ol:Bc)(P,G,this),re=G?this.clsEnter:this.clsLeave;Oe(P,re),It(P,G?"show":"hide",[this]);let pe=()=>{Me(P,re),It(P,G?"shown":"hidden",[this])};return J?J.then(pe,()=>(Me(P,re),Promise.reject())):pe()})),!0}catch{return!1}},isToggled(m=this.$el){return m=U(m),$e(m,this.clsEnter)?!0:$e(m,this.clsLeave)?!1:this.cls?$e(m,this.cls.split(" ")[0]):He(m)},_toggle(m,y){if(!m)return;y=!!y;let _;this.cls?(_=f(this.cls," ")||y!==$e(m,this.cls),_&&it(m,this.cls,f(this.cls," ")?void 0:y)):(_=y===m.hidden,_&&(m.hidden=!y)),_&&It(m,"toggled",[y,this]),Xr("[autofocus]",m).some(P=>He(P)?P.focus()||!0:P.blur())}}};function Jx(m,y,{_toggle:_}){return gs.cancel(m),St.cancel(m),_(m,y)}async function ol(m,y,{animation:_,duration:P,velocity:G,transition:J,_toggle:re}){var pe;let[Ae="reveal",We="top"]=((pe=_[0])==null?void 0:pe.split("-"))||[],Ve=[["left","right"],["top","bottom"]],et=Ve[f(Ve[0],We)?0:1],vt=et[1]===We,rr=["width","height"][Ve.indexOf(et)],br=`margin-${et[0]}`,Fr=`margin-${We}`,xu=Pt(m)[rr],Um=St.inProgress(m);await St.cancel(m),y&&re(m,!0);let Hm=Object.fromEntries(["padding","border","width","height","minWidth","minHeight","overflowY","overflowX",br,Fr].map(qO=>[qO,m.style[qO]])),yu=Pt(m),_N=X(Ee(m,br)),BO=X(Ee(m,Fr)),jc=yu[rr]+BO;!Um&&!y&&(xu+=BO);let[Zy]=om(m,"
");Ee(Zy,{boxSizing:"border-box",height:yu.height,width:yu.width,...Ee(m,["overflow","padding","borderTop","borderRight","borderBottom","borderLeft","borderImage",Fr])}),Ee(m,{padding:0,border:0,minWidth:0,minHeight:0,[Fr]:0,width:yu.width,height:yu.height,overflow:"hidden",[rr]:xu});let PO=xu/jc;P=(G*jc+P)*(y?1-PO:PO);let RO={[rr]:y?jc:0};vt&&(Ee(m,br,jc-xu+_N),RO[br]=y?_N:jc+_N),!vt^Ae==="reveal"&&(Ee(Zy,br,-jc+xu),St.start(Zy,{[br]:y?0:-jc},P,J));try{await St.start(m,RO,P,J)}finally{Ee(m,Hm),So(Zy.firstChild),y||re(m,!1)}}function Bc(m,y,_){let{animation:P,duration:G,_toggle:J}=_;return y?(J(m,!0),gs.in(m,P[0],G,_.origin)):gs.out(m,P[1]||P[0],G,_.origin).then(()=>J(m,!1))}let zn=[];var al={mixins:[Hi,lf,fa],props:{selPanel:String,selClose:String,escClose:Boolean,bgClose:Boolean,stack:Boolean,role:String},data:{cls:"uk-open",escClose:!0,bgClose:!0,overlay:!0,stack:!1,role:"dialog"},computed:{panel:({selPanel:m},y)=>cr(m,y),transitionElement(){return this.panel},bgClose({bgClose:m}){return m&&this.panel}},connected(){rt(this.panel||this.$el,"role",this.role),this.overlay&&rt(this.panel||this.$el,"aria-modal",!0)},beforeDisconnect(){f(zn,this)&&this.toggleElement(this.$el,!1,!1)},events:[{name:"click",delegate:({selClose:m})=>`${m},a[href*="#"]`,handler(m){let{current:y,defaultPrevented:_}=m,{hash:P}=y;!_&&P&&ka(y)&&!this.$el.contains(cr(P))?this.hide():Kt(y,this.selClose)&&(m.preventDefault(),this.hide())}},{name:"toggle",self:!0,handler(m){m.defaultPrevented||(m.preventDefault(),this.isToggled()===f(zn,this)&&this.toggle())}},{name:"beforeshow",self:!0,handler(m){if(f(zn,this))return!1;!this.stack&&zn.length?(Promise.all(zn.map(y=>y.hide())).then(this.show),m.preventDefault()):zn.push(this)}},{name:"show",self:!0,handler(){this.stack&&Ee(this.$el,"zIndex",X(Ee(this.$el,"zIndex"))+zn.length);let m=[this.overlay&&jx(this),this.overlay&&Lc(this.$el),this.bgClose&&ey(this),this.escClose&&US(this)];Er(this.$el,"hidden",()=>m.forEach(y=>y&&y()),{self:!0}),Oe(document.documentElement,this.clsPage)}},{name:"shown",self:!0,handler(){$r(this.$el)||rt(this.$el,"tabindex","-1"),Kt(this.$el,":focus-within")||this.$el.focus()}},{name:"hidden",self:!0,handler(){f(zn,this)&&zn.splice(zn.indexOf(this),1),Ee(this.$el,"zIndex",""),zn.some(m=>m.clsPage===this.clsPage)||Me(document.documentElement,this.clsPage)}}],methods:{toggle(){return this.isToggled()?this.hide():this.show()},show(){return this.container&&$t(this.$el)!==this.container?(bn(this.container,this.$el),new Promise(m=>requestAnimationFrame(()=>this.show().then(m)))):this.toggleElement(this.$el,!0,sl)},hide(){return this.toggleElement(this.$el,!1,sl)}}};function sl(m,y,{transitionElement:_,_toggle:P}){return new Promise((G,J)=>Er(m,"show hide",()=>{var re;(re=m._reject)==null||re.call(m),m._reject=J,P(m,y);let pe=Er(_,"transitionstart",()=>{Er(_,"transitionend transitioncancel",G,{self:!0}),clearTimeout(Ae)},{self:!0}),Ae=setTimeout(()=>{pe(),G()},Qx(Ee(_,"transitionDuration")))})).then(()=>delete m._reject)}function Qx(m){return m?u(m,"ms")?X(m):X(m)*1e3:0}function jx(m){return Yt(document,"focusin",y=>{be(zn)===m&&!m.$el.contains(y.target)&&m.$el.focus()})}function ey(m){return Yt(document,ge,({target:y})=>{be(zn)!==m||m.overlay&&!m.$el.contains(y)||m.panel.contains(y)||Er(document,`${Re} ${je} scroll`,({defaultPrevented:_,type:P,target:G})=>{!_&&P===Re&&y===G&&m.hide()},!0)})}function US(m){return Yt(document,"keydown",y=>{y.keyCode===27&&be(zn)===m&&m.hide()})}var Ds={slide:{show(m){return[{transform:Dn(m*-100)},{transform:Dn()}]},percent(m){return ca(m)},translate(m,y){return[{transform:Dn(y*-100*m)},{transform:Dn(y*100*(1-m))}]}}};function ca(m){return Math.abs(new DOMMatrix(Ee(m,"transform")).m41/m.offsetWidth)}function Dn(m=0,y="%"){return m+=m?y:"",`translate3d(${m}, 0, 0)`}function ff(m){return`scale3d(${m}, ${m}, 1)`}function HS(m,y,_,{animation:P,easing:G}){let{percent:J,translate:re,show:pe=le}=P,Ae=pe(_),{promise:We,resolve:Ve}=ty();return{dir:_,show(et,vt=0,Bt){let rr=Bt?"linear":G;return et-=Math.round(et*se(vt,-1,1)),this.translate(vt),ul(y,"itemin",{percent:vt,duration:et,timing:rr,dir:_}),ul(m,"itemout",{percent:1-vt,duration:et,timing:rr,dir:_}),Promise.all([St.start(y,Ae[1],et,rr),St.start(m,Ae[0],et,rr)]).then(()=>{this.reset(),Ve()},le),We},cancel(){return St.cancel([y,m])},reset(){for(let et in Ae[0])Ee([y,m],et,"")},async forward(et,vt=this.percent()){return await this.cancel(),this.show(et,vt,!0)},translate(et){this.reset();let vt=re(et,_);Ee(y,vt[1]),Ee(m,vt[0]),ul(y,"itemtranslatein",{percent:et,dir:_}),ul(m,"itemtranslateout",{percent:1-et,dir:_})},percent(){return J(m||y,y,_)},getDistance(){return m?.offsetWidth}}}function ul(m,y,_){It(m,bo(y,!1,!1,_))}function ty(){let m;return{promise:new Promise(y=>m=y),resolve:m}}var Dm={props:{i18n:Object},data:{i18n:null},methods:{t(m,...y){var _,P,G;let J=0;return((G=((_=this.i18n)==null?void 0:_[m])||((P=this.$options.i18n)==null?void 0:P[m]))==null?void 0:G.replace(/%s/g,()=>y[J++]||""))||""}}},ro={props:{autoplay:Boolean,autoplayInterval:Number,pauseOnHover:Boolean},data:{autoplay:!1,autoplayInterval:7e3,pauseOnHover:!0},connected(){rt(this.list,"aria-live",this.autoplay?"off":"polite"),this.autoplay&&this.startAutoplay()},disconnected(){this.stopAutoplay()},update(){rt(this.slides,"tabindex","-1")},events:[{name:"visibilitychange",el:()=>document,filter:({autoplay:m})=>m,handler(){document.hidden?this.stopAutoplay():this.startAutoplay()}}],methods:{startAutoplay(){this.stopAutoplay(),this.interval=setInterval(()=>{this.stack.length||this.draggable&&Kt(this.$el,":focus-within")&&!Kt(this.$el,":focus")||this.pauseOnHover&&Kt(this.$el,":hover")||this.show("next")},this.autoplayInterval)},stopAutoplay(){clearInterval(this.interval)}}};let pn={passive:!1,capture:!0},ci={passive:!0,capture:!0},Jn="touchstart mousedown",ll="touchmove mousemove",ry="touchend touchcancel mouseup click input scroll",Pc=m=>m.preventDefault();var $S={props:{draggable:Boolean},data:{draggable:!0,threshold:10},created(){for(let m of["start","move","end"]){let y=this[m];this[m]=_=>{let P=ot(_).x*(qt?-1:1);this.prevPos=P===this.pos?this.prevPos:this.pos,this.pos=P,y(_)}}},events:[{name:Jn,passive:!0,delegate:({selList:m})=>`${m} > *`,handler(m){!this.draggable||this.parallax||!Xe(m)&&WS(m.target)||m.target.closest(lt)||m.button>0||this.length<2||this.start(m)}},{name:"dragstart",handler(m){m.preventDefault()}},{name:ll,el:({list:m})=>m,handler:le,...pn}],methods:{start(){this.drag=this.pos,this._transitioner?(this.percent=this._transitioner.percent(),this.drag+=this._transitioner.getDistance()*this.percent*this.dir,this._transitioner.cancel(),this._transitioner.translate(this.percent),this.dragging=!0,this.stack=[]):this.prevIndex=this.index,Yt(document,ll,this.move,pn),Yt(document,ry,this.end,ci),Ee(this.list,"userSelect","none")},move(m){let y=this.pos-this.drag;if(y===0||this.prevPos===this.pos||!this.dragging&&Math.abs(y)re;)this.drag-=re*this.dir,P=J,G-=re,J=this.getIndex(P+this.dir),re=ny.call(this,P,J);this.percent=G/re;let pe=_[P],Ae=_[J],We=this.index!==J,Ve=P===J,et;for(let vt of[this.index,this.prevIndex])f([J,P],vt)||(It(_[vt],"itemhidden",[this]),Ve&&(et=!0,this.prevIndex=P));(this.index===P&&this.prevIndex!==P||et)&&It(_[this.index],"itemshown",[this]),We&&(this.prevIndex=P,this.index=J,Ve||(It(pe,"beforeitemhide",[this]),It(pe,"itemhide",[this])),It(Ae,"beforeitemshow",[this]),It(Ae,"itemshow",[this])),this._transitioner=this._translate(Math.abs(this.percent),pe,!Ve&&Ae)},end(){if(qi(document,ll,this.move,pn),qi(document,ry,this.end,ci),this.dragging)if(this.dragging=null,this.index===this.prevIndex)this.percent=1-this.percent,this.dir*=-1,this._show(!1,this.index,!0),this._transitioner=null;else{let m=(qt?this.dir*(qt?1:-1):this.dir)<0==this.prevPos>this.pos;this.index=m?this.index:this.prevIndex,m&&(this.percent=1-this.percent),this.show(this.dir>0&&!m||this.dir<0&&m?"next":"previous",!0)}setTimeout(()=>qi(this.list,"click",Pc,pn)),Ee(this.list,{userSelect:""}),this.drag=this.percent=null}}};function ny(m,y){return this._getTransitioner(m,m!==y&&y).getDistance()||this.slides[m].offsetWidth}function WS(m){return Ee(m,"userSelect")!=="none"&&g(m.childNodes).some(y=>y.nodeType===3&&y.textContent.trim())}function dg(m){m._watches=[];for(let y of m.$options.watch||[])for(let[_,P]of Object.entries(y))hg(m,P,_);m._initial=!0}function hg(m,y,_){m._watches.push({name:_,...D(y)?y:{handler:y}})}function gg(m,y){for(let{name:_,handler:P,immediate:G=!0}of m._watches)(m._initial&&G||r(y,_)&&!Z(y[_],m[_]))&&P.call(m,m[_],y[_]);m._initial=!1}function VS(m){let{computed:y}=m.$options;if(m._computed={},y)for(let _ in y)Nm(m,_,y[_])}let Sm={subtree:!0,childList:!0};function Nm(m,y,_){m._hasComputed=!0,Object.defineProperty(m,y,{enumerable:!0,get(){let{_computed:P,$props:G,$el:J}=m;if(!r(P,y)&&(P[y]=(_.get||_).call(m,G,J),_.observe&&m._computedObserver)){let re=_.observe.call(m,G);m._computedObserver.observe(["~","+","-"].includes(re[0])?J.parentElement:J.getRootNode(),Sm)}return P[y]},set(P){let{_computed:G}=m;G[y]=_.set?_.set.call(m,P):P,q(G[y])&&delete G[y]}})}function iy(m){m._hasComputed&&(ug(m,{read:()=>gg(m,vg(m)),events:["resize","computed"]}),m._computedObserver=eg(m.$el,()=>Mc(m,"computed"),Sm),m._disconnect.push(()=>{m._computedObserver.disconnect(),m._computedObserver=null,vg(m)}))}function vg(m){let y={...m._computed};return m._computed={},y}function xg(m){for(let y of m.$options.events||[])if(r(y,"handler"))yg(m,y);else for(let _ in y)yg(m,y[_],_)}function yg(m,y,_){let{name:P,el:G,handler:J,capture:re,passive:pe,delegate:Ae,filter:We,self:Ve}=D(y)?y:{name:_,handler:y};G=v(G)?G.call(m,m):G||m.$el,!(!G||h(G)&&!G.length||We&&!We.call(m,m))&&m._disconnect.push(Yt(G,P,Ae?F(Ae)?Ae:Ae.call(m,m):null,F(J)?m[J]:J.bind(m),{passive:pe,capture:re,self:Ve}))}function Rc(m){for(let y of m.$options.observe||[])GS(m,y)}function GS(m,y){let{observe:_,target:P=m.$el,handler:G,options:J,filter:re,args:pe}=y;if(re&&!re.call(m,m))return;let Ae=`_observe${m._disconnect.length}`;v(P)&&!r(m,Ae)&&Nm(m,Ae,()=>{let et=P.call(m,m);return h(et)?H(et):et}),G=F(G)?m[G]:G.bind(m),v(J)&&(J=J.call(m,m));let We=r(m,Ae)?m[Ae]:P,Ve=_(We,G,J,pe);v(P)&&h(m[Ae])&&hg(m,{handler:Em(Ve,J),immediate:!1},Ae),m._disconnect.push(()=>Ve.disconnect())}function Em(m,y){return(_,P)=>{for(let G of P)f(_,G)||(m.unobserve?m.unobserve(G):m.observe&&m.disconnect());for(let G of _)(!f(P,G)||!m.unobserve)&&m.observe(G,y)}}function Ss(m){let{$options:y,$props:_}=m,P=wg(y);x(_,P);let{computed:G,methods:J}=y;for(let re in _)re in P&&(!G||!r(G,re))&&(!J||!r(J,re))&&(m[re]=_[re])}function wg(m){let y={},{args:_=[],props:P={},el:G,id:J}=m;if(!P)return y;for(let pe in P){let Ae=i(pe),We=mt(G,Ae);q(We)||(We=P[pe]===Boolean&&We===""?!0:Cc(P[pe],We),!(Ae==="target"&&a(We,"_"))&&(y[pe]=We))}let re=el(mt(G,J),_);for(let pe in re){let Ae=l(pe);q(P[Ae])||(y[Ae]=Cc(P[Ae],re[pe]))}return y}let YS=fe((m,y)=>{let _=Object.keys(y),P=_.concat(m).map(G=>[i(G),`data-${i(G)}`]).flat();return{attributes:_,filter:P}});function oy(m){let{$options:y,$props:_}=m,{id:P,props:G,el:J}=y;if(!G)return;let{attributes:re,filter:pe}=YS(P,G),Ae=new MutationObserver(We=>{let Ve=wg(y);We.some(({attributeName:et})=>{let vt=et.replace("data-","");return(vt===P?re:[l(vt),l(et)]).some(Bt=>!q(Ve[Bt])&&Ve[Bt]!==_[Bt])})&&m.$reset()});Ae.observe(J,{attributes:!0,attributeFilter:pe}),m._disconnect.push(()=>Ae.disconnect())}function ri(m,y){var _;(_=m.$options[y])==null||_.forEach(P=>P.call(m))}function Ar(m){m._connected||(Ss(m),ri(m,"beforeConnect"),m._connected=!0,m._disconnect=[],xg(m),Yx(m),dg(m),Rc(m),oy(m),iy(m),ri(m,"connected"),Mc(m))}function Ao(m){m._connected&&(ri(m,"beforeDisconnect"),m._disconnect.forEach(y=>y()),m._disconnect=null,ri(m,"disconnected"),m._connected=!1)}let pu=0;function Ns(m,y={}){y.data=sy(y,m.constructor.options),m.$options=$i(m.constructor.options,y,m),m.$props={},m._uid=pu++,ay(m),bg(m),VS(m),ri(m,"created"),y.el&&m.$mount(y.el)}function ay(m){let{data:y={}}=m.$options;for(let _ in y)m.$props[_]=m[_]=y[_]}function bg(m){let{methods:y}=m.$options;if(y)for(let _ in y)m[_]=y[_].bind(m)}function sy({data:m={}},{args:y=[],props:_={}}){h(m)&&(m=m.slice(0,y.length).reduce((P,G,J)=>(D(G)?x(P,G):P[y[J]]=G,P),{}));for(let P in m)q(m[P])?delete m[P]:_[P]&&(m[P]=Cc(_[P],m[P]));return m}let Co=function(m){Ns(this,m)};Co.util=$x,Co.options={},Co.version="3.21.13";let Dg="uk-",pa="__uikit__",fl={};function Am(m,y){var _,P;let G=Dg+i(m);if(!y)return fl[G].options||(fl[G]=Co.extend(fl[G])),fl[G];m=l(m),Co[m]=(re,pe)=>Uo(m,re,pe);let J=(_=y.options)!=null?_:{...y};return J.id=G,J.name=m,(P=J.install)==null||P.call(J,Co,J,m),Co._initialized&&!J.functional&&requestAnimationFrame(()=>Uo(m,`[${G}],[data-${G}]`)),fl[G]=J}function Uo(m,y,_,...P){let G=Am(m);return G.options.functional?new G({data:D(y)?y:[y,_,...P]}):y?Xr(y).map(J)[0]:J();function J(re){let pe=qc(re,m);if(pe)if(_)pe.$destroy();else return pe;return new G({el:re,data:_})}}function cf(m){return m?.[pa]||{}}function qc(m,y){return cf(m)[y]}function ZS(m,y){m[pa]||(m[pa]={}),m[pa][y.$options.name]=y}function Cm(m,y){var _;(_=m[pa])==null||delete _[y.$options.name],L(m[pa])&&delete m[pa]}function Sg(m){m.component=Am,m.getComponents=cf,m.getComponent=qc,m.update=Ng,m.use=function(_){if(!_.installed)return _.call(null,this),_.installed=!0,this},m.mixin=function(_,P){P=(F(P)?this.component(P):P)||this,P.options=$i(P.options,_)},m.extend=function(_){_||(_={});let P=this,G=function(re){Ns(this,re)};return G.prototype=Object.create(P.prototype),G.prototype.constructor=G,G.options=$i(P.options,_),G.super=P,G.extend=P.extend,G};let y;Object.defineProperty(m,"container",{get(){return y||document.body},set(_){y=cr(_)}})}function Ng(m,y){m=m?U(m):document.body;for(let _ of Qi(m).reverse())uy(_,y);Po(m,_=>uy(_,y))}function uy(m,y){let _=cf(m);for(let P in _)Mc(_[P],y)}function ly(m){m.prototype.$mount=function(y){let _=this;ZS(y,_),_.$options.el=y,document.contains(y)&&Ar(_)},m.prototype.$destroy=function(y=!1){let _=this,{el:P}=_.$options;P&&Ao(_),ri(_,"destroy"),Cm(P,_),y&&Do(_.$el)},m.prototype.$create=Uo,m.prototype.$emit=function(y){Mc(this,y)},m.prototype.$update=function(y=this.$el,_){Ng(y,_)},m.prototype.$reset=function(){Ao(this),Ar(this)},m.prototype.$getComponent=qc,Object.defineProperties(m.prototype,{$el:{get(){return this.$options.el}},$container:Object.getOwnPropertyDescriptor(m,"container")})}let XS=1;function cl(m,y=null){return y?.id||`${m.$options.id}-${XS++}`}var Mm={i18n:{next:"Next slide",previous:"Previous slide",slideX:"Slide %s",slideLabel:"%s of %s",role:"String"},data:{selNav:!1,role:"region"},computed:{nav:({selNav:m},y)=>cr(m,y),navChildren(){return wr(this.nav)},selNavItem:({attrItem:m})=>`[${m}],[data-${m}]`,navItems(m,y){return Xr(this.selNavItem,y)}},watch:{nav(m,y){rt(m,"role","tablist"),this.padNavitems(),y&&this.$emit()},list(m){Zr(m,"ul")&&rt(m,"role","presentation")},navChildren(m){rt(m,"role","presentation"),this.padNavitems(),this.updateNav()},navItems(m){for(let y of m){let _=mt(y,this.attrItem),P=cr("a,button",y)||y,G,J=null;if(B(_)){let re=V(_),pe=this.slides[re];pe&&(pe.id||(pe.id=cl(this,pe)),J=pe.id),G=this.t("slideX",X(_)+1),rt(P,"role","tab")}else this.list&&(this.list.id||(this.list.id=cl(this,this.list)),J=this.list.id),G=this.t(_);rt(P,{"aria-controls":J,"aria-label":rt(P,"aria-label")||G})}},slides(m){m.forEach((y,_)=>rt(y,{role:this.nav?"tabpanel":"group","aria-label":this.t("slideLabel",_+1,this.length),"aria-roledescription":this.nav?null:"slide"})),this.padNavitems()}},connected(){rt(this.$el,{role:this.role,"aria-roledescription":"carousel"})},update:[{write(){this.navItems.concat(this.nav).forEach(m=>m&&(m.hidden=!this.maxIndex)),this.updateNav()},events:["resize"]}],events:[{name:"click keydown",delegate:({selNavItem:m})=>m,filter:({parallax:m})=>!m,handler(m){m.target.closest("a,button")&&(m.type==="click"||m.keyCode===_r.SPACE)&&(m.preventDefault(),this.show(mt(m.current,this.attrItem)))}},{name:"itemshow",handler:"updateNav"},{name:"keydown",delegate:({selNavItem:m})=>m,filter:({parallax:m})=>!m,handler(m){let{current:y,keyCode:_}=m,P=mt(y,this.attrItem);if(!B(P))return;let G=_===_r.HOME?0:_===_r.END?"last":_===_r.LEFT?"previous":_===_r.RIGHT?"next":-1;~G&&(m.preventDefault(),this.show(G))}}],methods:{updateNav(){let m=this.getValidIndex();for(let y of this.navItems){let _=mt(y,this.attrItem),P=cr("a,button",y)||y;if(B(_)){let J=V(_)===m;it(y,this.clsActive,J),it(P,"uk-disabled",this.parallax),rt(P,{"aria-selected":J,tabindex:J&&!this.parallax?null:-1}),J&&P&&Kt($t(y),":focus-within")&&P.focus()}else it(y,"uk-invisible",this.finite&&(_==="previous"&&m===0||_==="next"&&m>=this.maxIndex))}},padNavitems(){if(!this.nav)return;let m=[];for(let y=0;yP.matches(`[${_}]`))||cr(`
  • `)}Z(m,this.navChildren)||vs(this.nav,m)}}};let fy="cubic-bezier(0.25, 0.46, 0.45, 0.94)",KS="cubic-bezier(0.165, 0.84, 0.44, 1)";var cy={mixins:[ro,$S,Mm,Dm],props:{clsActivated:String,easing:String,index:Number,finite:Boolean,velocity:Number},data:()=>({easing:"ease",finite:!1,velocity:1,index:0,prevIndex:-1,stack:[],percent:0,clsActive:"uk-active",clsActivated:"",clsEnter:"uk-slide-enter",clsLeave:"uk-slide-leave",clsSlideActive:"uk-slide-active",Transitioner:!1,transitionOptions:{}}),connected(){this.prevIndex=-1,this.index=this.getValidIndex(this.$props.index),this.stack=[]},disconnected(){Me(this.slides,this.clsActive)},computed:{duration:({velocity:m},y)=>pl(y.offsetWidth/m),list:({selList:m},y)=>cr(m,y),maxIndex(){return this.length-1},slides(){return wr(this.list)},length(){return this.slides.length}},watch:{slides(m,y){y&&this.$emit()}},events:{itemshow({target:m}){Oe(m,this.clsEnter,this.clsSlideActive)},itemshown({target:m}){Me(m,this.clsEnter)},itemhide({target:m}){Oe(m,this.clsLeave)},itemhidden({target:m}){Me(m,this.clsLeave,this.clsSlideActive)}},methods:{show(m,y=!1){var _;if(this.dragging||!this.length||this.parallax)return;let{stack:P}=this,G=y?0:P.length,J=()=>{P.splice(G,1),P.length&&this.show(P.shift(),!0)};if(P[y?"unshift":"push"](m),!y&&P.length>1){P.length===2&&((_=this._transitioner)==null||_.forward(Math.min(this.duration,200)));return}let re=this.getIndex(this.index),pe=$e(this.slides,this.clsActive)&&this.slides[re],Ae=this.getIndex(m,this.index),We=this.slides[Ae];if(pe===We){J();return}if(this.dir=py(m,re),this.prevIndex=re,this.index=Ae,pe&&!It(pe,"beforeitemhide",[this])||!It(We,"beforeitemshow",[this,pe])){this.index=this.prevIndex,J();return}let Ve=this._show(pe,We,y).then(()=>{pe&&It(pe,"itemhidden",[this]),It(We,"itemshown",[this]),P.shift(),this._transitioner=null,P.length&&requestAnimationFrame(()=>P.length&&this.show(P.shift(),!0))});return pe&&It(pe,"itemhide",[this]),It(We,"itemshow",[this]),Ve},getIndex(m=this.index,y=this.index){return se(ie(m,this.slides,y,this.finite),0,Math.max(0,this.maxIndex))},getValidIndex(m=this.index,y=this.prevIndex){return this.getIndex(m,y)},async _show(m,y,_){if(this._transitioner=this._getTransitioner(m,y,this.dir,{easing:_?y.offsetWidth<600?fy:KS:this.easing,...this.transitionOptions}),!_&&!m){this._translate(1);return}let{length:P}=this.stack;return this._transitioner[P>1?"forward":"show"](P>1?Math.min(this.duration,75+75/(P-1)):this.duration,this.percent)},_translate(m,y=this.prevIndex,_=this.index){let P=this._getTransitioner(y===_?!1:y,_);return P.translate(m),P},_getTransitioner(m=this.prevIndex,y=this.index,_=this.dir||1,P=this.transitionOptions){return new this.Transitioner(I(m)?this.slides[m]:m,I(y)?this.slides[y]:y,_*(qt?-1:1),P)}}};function py(m,y){return m==="next"?1:m==="previous"||m({preload:1,videoAutoplay:!1,delayControls:3e3,items:[],cls:"uk-open",clsPage:"uk-lightbox-page",selList:".uk-lightbox-items",attrItem:"uk-lightbox-item",selClose:".uk-close-large",selCaption:".uk-lightbox-caption",pauseOnHover:!1,velocity:2,Animations:zc,template:'
    '}),created(){let m=cr(this.template),y=cr(this.selList,m);this.items.forEach(()=>bn(y,"
    "));let _=cr("[uk-close]",m),P=this.t("close");_&&P&&(_.dataset.i18n=JSON.stringify({label:P})),this.$mount(bn(this.container,m))},events:[{name:`${_e} ${ge} keydown`,handler:"showControls"},{name:"click",self:!0,delegate:({selList:m})=>`${m} > *`,handler(m){m.defaultPrevented||this.hide()}},{name:"shown",self:!0,handler:"showControls"},{name:"hide",self:!0,handler(){this.hideControls(),Me(this.slides,this.clsActive),St.stop(this.slides)}},{name:"hidden",self:!0,handler(){this.$destroy(!0)}},{name:"keyup",el:()=>document,handler({keyCode:m}){if(!this.isToggled(this.$el)||!this.draggable)return;let y=-1;m===_r.LEFT?y="previous":m===_r.RIGHT?y="next":m===_r.HOME?y=0:m===_r.END&&(y="last"),~y&&this.show(y)}},{name:"beforeitemshow",handler(m){this.isToggled()||(this.draggable=!1,m.preventDefault(),this.toggleElement(this.$el,!0,!1),this.animation=zc.scale,Me(m.target,this.clsActive),this.stack.splice(1,0,this.index))}},{name:"itemshow",handler(){vs(cr(this.selCaption,this.$el),this.getItem().caption||"");for(let m=-this.preload;m<=this.preload;m++)this.loadItem(this.index+m)}},{name:"itemshown",handler(){this.draggable=this.$props.draggable}},{name:"itemload",async handler(m,y){let{source:_,type:P,alt:G="",poster:J,attrs:re={}}=y;if(this.setItem(y,""),!_)return;let pe,Ae={allowfullscreen:"",style:"max-width: 100%; box-sizing: border-box;","uk-responsive":"","uk-video":`${this.videoAutoplay}`};if(P==="image"||_.match(/\.(avif|jpe?g|jfif|a?png|gif|svg|webp)($|\?)/i)){let We=ml("img",{src:_,alt:G,...re});Yt(We,"load",()=>this.setItem(y,We)),Yt(We,"error",()=>this.setError(y))}else if(P==="video"||_.match(/\.(mp4|webm|ogv)($|\?)/i)){let We=ml("video",{src:_,poster:J,controls:"",playsinline:"","uk-video":`${this.videoAutoplay}`,...re});Yt(We,"loadedmetadata",()=>this.setItem(y,We)),Yt(We,"error",()=>this.setError(y))}else if(P==="iframe"||_.match(/\.(html|php)($|\?)/i))this.setItem(y,ml("iframe",{src:_,allowfullscreen:"",class:"uk-lightbox-iframe",...re}));else if(pe=_.match(/\/\/(?:.*?youtube(-nocookie)?\..*?(?:[?&]v=|\/shorts\/)|youtu\.be\/)([\w-]{11})[&?]?(.*)?/))this.setItem(y,ml("iframe",{src:`https://www.youtube${pe[1]||""}.com/embed/${pe[2]}${pe[3]?`?${pe[3]}`:""}`,width:1920,height:1080,...Ae,...re}));else if(pe=_.match(/\/\/.*?vimeo\.[a-z]+\/(\d+)[&?]?(.*)?/))try{let{height:We,width:Ve}=await(await fetch(`https://vimeo.com/api/oembed.json?maxwidth=1920&url=${encodeURI(_)}`,{credentials:"omit"})).json();this.setItem(y,ml("iframe",{src:`https://player.vimeo.com/video/${pe[1]}${pe[2]?`?${pe[2]}`:""}`,width:Ve,height:We,...Ae,...re}))}catch{this.setError(y)}}}],methods:{loadItem(m=this.index){let y=this.getItem(m);this.getSlide(y).childElementCount||It(this.$el,"itemload",[y])},getItem(m=this.index){return this.items[ie(m,this.slides)]},setItem(m,y){It(this.$el,"itemloaded",[this,vs(this.getSlide(m),y)])},getSlide(m){return this.slides[this.items.indexOf(m)]},setError(m){this.setItem(m,'')},showControls(){clearTimeout(this.controlsTimer),this.controlsTimer=setTimeout(this.hideControls,this.delayControls),Oe(this.$el,"uk-active","uk-transition-active")},hideControls(){Me(this.$el,"uk-active","uk-transition-active")}}};function ml(m,y){let _=Zu(`<${m}>`);return rt(_,y),_}var my={install:JS,props:{toggle:String},data:{toggle:"a"},computed:{toggles:({toggle:m},y)=>Xr(m,y)},watch:{toggles(m){this.hide();for(let y of m)Zr(y,"a")&&rt(y,"role","button")}},disconnected(){this.hide()},events:{name:"click",delegate:({toggle:m})=>`${m}:not(.uk-disabled)`,handler(m){m.defaultPrevented||(m.preventDefault(),this.show(m.current))}},methods:{show(m){let y=Te(this.toggles.map(Ag),"source");if(T(m)){let{source:_}=Ag(m);m=p(y,({source:P})=>_===P)}return this.panel=this.panel||this.$create("lightboxPanel",{...this.$props,items:y}),Yt(this.panel.$el,"hidden",()=>this.panel=null),this.panel.show(m)},hide(){var m;return(m=this.panel)==null?void 0:m.hide()}}};function JS(m,y){m.lightboxPanel||m.component("lightboxPanel",Eg),x(y.props,m.component("lightboxPanel").options.props)}function Ag(m){let y={};for(let _ of["href","caption","type","poster","alt","attrs"])y[_==="href"?"source":_]=mt(m,_);return y.attrs=el(y.attrs),y}var pi={mixins:[lf],functional:!0,args:["message","status"],data:{message:"",status:"",timeout:5e3,group:"",pos:"top-center",clsContainer:"uk-notification",clsClose:"uk-notification-close",clsMsg:"uk-notification-message"},install:_m,computed:{marginProp:({pos:m})=>`margin-${m.match(/[a-z]+(?=-)/)[0]}`,startProps(){return{opacity:0,[this.marginProp]:-this.$el.offsetHeight}}},created(){let m=`${this.clsContainer}-${this.pos}`,y=`data-${this.clsContainer}-container`,_=cr(`.${m}[${y}]`,this.container)||bn(this.container,`
    `);this.$mount(bn(_,``))},async connected(){let m=X(Ee(this.$el,this.marginProp));await St.start(Ee(this.$el,this.startProps),{opacity:1,[this.marginProp]:m}),this.timeout&&(this.timer=setTimeout(this.close,this.timeout))},events:{click(m){m.target.closest('a[href="#"],a[href=""]')&&m.preventDefault(),this.close()},[Ue](){this.timer&&clearTimeout(this.timer)},[ze](){this.timeout&&(this.timer=setTimeout(this.close,this.timeout))}},methods:{async close(m){let y=_=>{let P=$t(_);It(_,"close",[this]),Do(_),P?.hasChildNodes()||Do(P)};this.timer&&clearTimeout(this.timer),m||await St.start(this.$el,this.startProps),y(this.$el)}}};function _m(m){m.notification.closeAll=function(y,_){Po(document.body,P=>{let G=m.getComponent(P,"notification");G&&(!y||y===G.group)&&G.close(_)})}}var Uc={props:{media:Boolean},data:{media:!1},connected(){let m=dy(this.media,this.$el);if(this.matchMedia=!0,m){this.mediaObj=window.matchMedia(m);let y=()=>{this.matchMedia=this.mediaObj.matches,It(this.$el,bo("mediachange",!1,!0,[this.mediaObj]))};this.offMediaObj=Yt(this.mediaObj,"change",()=>{y(),this.$emit("resize")}),y()}},disconnected(){var m;(m=this.offMediaObj)==null||m.call(this)}};function dy(m,y){if(F(m)){if(a(m,"@"))m=X(Ee(y,`--uk-breakpoint-${m.slice(1)}`));else if(isNaN(m))return m}return m&&B(m)?`(min-width: ${m}px)`:""}function Cg(m){return He(m)?Math.ceil(Math.max(0,...Xr("[stroke]",m).map(y=>{var _;return((_=y.getTotalLength)==null?void 0:_.call(y))||0}))):0}let Es={x:$c,y:$c,rotate:$c,scale:$c,color:Om,backgroundColor:Om,borderColor:Om,blur:mu,hue:mu,fopacity:mu,grayscale:mu,invert:mu,saturate:mu,sepia:mu,opacity:Fm,stroke:hy,bgx:mf,bgy:mf},{keys:Hc}=Object;var Mg={mixins:[Uc],props:gl(Hc(Es),"list"),data:gl(Hc(Es),void 0),computed:{props(m,y){let _={};for(let G in m)G in Es&&!q(m[G])&&(_[G]=m[G].slice());let P={};for(let G in _)P[G]=Es[G](G,y,_[G],_);return P}},events:{load(){this.$emit()}},methods:{reset(){for(let m in this.getCss(0))Ee(this.$el,m,"")},getCss(m){let y={};for(let _ in this.props)this.props[_](y,se(m));return y.willChange=Object.keys(y).map(Sr).join(","),y}}};function $c(m,y,_){let P=Gc(_)||{x:"px",y:"px",rotate:"deg"}[m]||"",G;return m==="x"||m==="y"?(m=`translate${s(m)}`,G=J=>X(X(J).toFixed(P==="px"?0:6))):m==="scale"&&(P="",G=J=>{var re;return Gc([J])?Kn(J,"width",y,!0)/y[`offset${(re=J.endsWith)!=null&&re.call(J,"vh")?"Height":"Width"}`]:X(J)}),_.length===1&&_.unshift(m==="scale"?1:0),_=za(_,G),(J,re)=>{J.transform=`${J.transform||""} ${m}(${hf(_,re)}${P})`}}function Om(m,y,_){return _.length===1&&_.unshift(Ho(y,m,"")),_=za(_,P=>pf(y,P)),(P,G)=>{let[J,re,pe]=df(_,G),Ae=J.map((We,Ve)=>(We+=pe*(re[Ve]-We),Ve===3?X(We):parseInt(We,10))).join(",");P[m]=`rgba(${Ae})`}}function pf(m,y){return Ho(m,"color",y).split(/[(),]/g).slice(1,-1).concat(1).slice(0,4).map(X)}function mu(m,y,_){_.length===1&&_.unshift(0);let P=Gc(_)||{blur:"px",hue:"deg"}[m]||"%";return m={fopacity:"opacity",hue:"hue-rotate"}[m]||m,_=za(_),(G,J)=>{let re=hf(_,J);G.filter=`${G.filter||""} ${m}(${re+P})`}}function Fm(m,y,_){return _.length===1&&_.unshift(Ho(y,m,"")),_=za(_),(P,G)=>{P[m]=hf(_,G)}}function hy(m,y,_){_.length===1&&_.unshift(0);let P=Gc(_),G=Cg(y);return _=za(_.reverse(),J=>(J=X(J),P==="%"?J*G/100:J)),_.some(([J])=>J)?(Ee(y,"strokeDasharray",G),(J,re)=>{J.strokeDashoffset=hf(_,re)}):le}function mf(m,y,_,P){_.length===1&&_.unshift(0);let G=m==="bgy"?"height":"width";P[m]=za(_,pe=>Kn(pe,G,y));let J=["bgx","bgy"].filter(pe=>pe in P);if(J.length===2&&m==="bgx")return le;if(Ho(y,"backgroundSize","")==="cover")return QS(m,y,_,P);let re={};for(let pe of J)re[pe]=dl(y,pe);return Tg(J,re,P)}function QS(m,y,_,P){let G=Vc(y);if(!G.width)return le;let J={width:y.offsetWidth,height:y.offsetHeight},re=["bgx","bgy"].filter(Ve=>Ve in P),pe={};for(let Ve of re){let et=P[Ve].map(([Fr])=>Fr),vt=Math.min(...et),Bt=Math.max(...et),rr=et.indexOf(vt){We(Ve,et),Ve.backgroundSize=`${Ae.width}px ${Ae.height}px`,Ve.backgroundRepeat="no-repeat"}}function dl(m,y){return Ho(m,`background-position-${y.slice(-1)}`,"")}function Tg(m,y,_){return function(P,G){for(let J of m){let re=hf(_[J],G);P[`background-position-${J.slice(-1)}`]=`calc(${y[J]} + ${re}px)`}}}let _g={},Wc={};function Vc(m){let y=Ee(m,"backgroundImage").replace(/^none|url\(["']?(.+?)["']?\)$/,"$1");if(Wc[y])return Wc[y];let _=new Image;return y&&(_.src=y,!_.naturalWidth&&!_g[y])?(Er(_,"error load",()=>{Wc[y]=hl(_),It(m,bo("load",!1))}),_g[y]=!0,hl(_)):Wc[y]=hl(_)}function hl(m){return{width:m.naturalWidth,height:m.naturalHeight}}function za(m,y=X){let _=[],{length:P}=m,G=0;for(let J=0;J0;Ve--)_[J-Ve][1]=Ae+We*(G-Ve+1);G=0}}return _}function df(m,y){let _=p(m.slice(1),([,P])=>y<=P)+1;return[m[_-1][0],m[_][0],(y-m[_-1][1])/(m[_][1]-m[_-1][1])]}function hf(m,y){let[_,P,G]=df(m,y);return _+Math.abs(_-P)*G*(_(_[P]=y,_),{})}function gf(m,y){return y>=0?Math.pow(m,y+1):1-Math.pow(1-m,1-y)}var eN={mixins:[Mg],props:{target:String,viewport:Number,easing:Number,start:String,end:String},data:{target:!1,viewport:1,easing:1,start:0,end:0},computed:{target:({target:m},y)=>Og(m&&Pn(m,y)||y),start({start:m}){return Kn(m,"height",this.target,!0)},end({end:m,viewport:y}){return Kn(m||(y=(1-y)*100)&&`${y}vh+${y}%`,"height",this.target,!0)}},observe:[Tc(),tl({target:({target:m})=>m}),qo({target:({$el:m,target:y})=>[m,y,ys(y,!0)]})],update:{read({percent:m},y){if(y.has("scroll")||(m=!1),!He(this.$el))return!1;if(!this.matchMedia)return;let _=m;return m=gf(cm(this.target,this.start,this.end),this.easing),{percent:m,style:_===m?!1:this.getCss(m)}},write({style:m}){if(!this.matchMedia){this.reset();return}m&&Ee(this.$el,m)},events:["scroll","resize"]}};function Og(m){return m?"offsetTop"in m?m:Og($t(m)):document.documentElement}var gy={props:{parallax:Boolean,parallaxTarget:Boolean,parallaxStart:String,parallaxEnd:String,parallaxEasing:Number},data:{parallax:!1,parallaxTarget:!1,parallaxStart:0,parallaxEnd:0,parallaxEasing:0},observe:[qo({target:({$el:m,parallaxTarget:y})=>[m,y],filter:({parallax:m})=>m}),tl({filter:({parallax:m})=>m})],computed:{parallaxTarget({parallaxTarget:m},y){return m&&Pn(m,y)||this.list}},update:{read(){if(!this.parallax)return!1;let m=this.parallaxTarget;if(!m)return!1;let y=Kn(this.parallaxStart,"height",m,!0),_=Kn(this.parallaxEnd,"height",m,!0),P=gf(cm(m,y,_),this.parallaxEasing);return{parallax:this.getIndexAt(P)}},write({parallax:m}){let[y,_]=m,P=this.getValidIndex(y+Math.ceil(_)),G=this.slides[y],J=this.slides[P],{triggerShow:re,triggerShown:pe,triggerHide:Ae,triggerHidden:We}=tN(this);if(~this.prevIndex)for(let et of new Set([this.index,this.prevIndex]))f([P,y],et)||(Ae(this.slides[et]),We(this.slides[et]));let Ve=this.prevIndex!==y||this.index!==P;this.dir=1,this.prevIndex=y,this.index=P,G!==J&&Ae(G),re(J),Ve&&pe(G),this._translate(G===J?1:_,G,J)},events:["scroll","resize"]},methods:{getIndexAt(m){let y=m*(this.length-1);return[Math.floor(y),y%1]}}};function tN(m){let{clsSlideActive:y,clsEnter:_,clsLeave:P}=m;return{triggerShow:G,triggerShown:J,triggerHide:re,triggerHidden:pe};function G(Ae){$e(Ae,P)&&(re(Ae),pe(Ae)),$e(Ae,y)||(It(Ae,"beforeitemshow",[m]),It(Ae,"itemshow",[m]))}function J(Ae){$e(Ae,_)&&It(Ae,"itemshown",[m])}function re(Ae){$e(Ae,y)||G(Ae),$e(Ae,_)&&J(Ae),$e(Ae,P)||(It(Ae,"beforeitemhide",[m]),It(Ae,"itemhide",[m]))}function pe(Ae){$e(Ae,P)&&It(Ae,"itemhidden",[m])}}var vy={update:{write(){if(this.stack.length||this.dragging||this.parallax)return;let m=this.getValidIndex();!~this.prevIndex||this.index!==m?this.show(m):this._translate(1)},events:["resize"]}},Mi={observe:bs({target:({slides:m})=>m,targets:m=>m.getAdjacentSlides()}),methods:{getAdjacentSlides(){return[1,-1].map(m=>this.slides[this.getIndex(this.index+m)])}}};function xy(m,y,_,{center:P,easing:G,list:J}){let re=m?Yc(m,J,P):Yc(y,J,P)+Pt(y).width*_,pe=y?Yc(y,J,P):re+Pt(m).width*_*(qt?-1:1),{promise:Ae,resolve:We}=ty();return{dir:_,show(Ve,et=0,vt){let Bt=vt?"linear":G;return Ve-=Math.round(Ve*se(et,-1,1)),Ee(J,"transitionProperty","none"),this.translate(et),Ee(J,"transitionProperty",""),et=m?et:se(et,0,1),ul(this.getItemIn(),"itemin",{percent:et,duration:Ve,timing:Bt,dir:_}),m&&ul(this.getItemIn(!0),"itemout",{percent:1-et,duration:Ve,timing:Bt,dir:_}),St.start(J,{transform:Dn(-pe*(qt?-1:1),"px")},Ve,Bt).then(We,le),Ae},cancel(){return St.cancel(J)},reset(){Ee(J,"transform","")},async forward(Ve,et=this.percent()){return await this.cancel(),this.show(Ve,et,!0)},translate(Ve){if(Ve===this.percent())return;let et=this.getDistance()*_*(qt?-1:1);Ee(J,"transform",Dn(se(-pe+(et-et*Ve),-vf(J),Pt(J).width)*(qt?-1:1),"px"));let vt=this.getActives(),Bt=this.getItemIn(),rr=this.getItemIn(!0);Ve=m?se(Ve,-1,1):0;for(let br of wr(J)){let Fr=f(vt,br),xu=br===Bt,Um=br===rr,Hm=xu||!Um&&(Fr||_*(qt?-1:1)===-1^Zc(br,J)>Zc(m||y));ul(br,`itemtranslate${Hm?"in":"out"}`,{dir:_,percent:Um?1-Ve:xu?Ve:Fr?1:0})}},percent(){return Math.abs((new DOMMatrix(Ee(J,"transform")).m41*(qt?-1:1)+re)/(pe-re))},getDistance(){return Math.abs(pe-re)},getItemIn(Ve=!1){let et=this.getActives(),vt=Fg(J,Yc(y||m,J,P));if(Ve){let Bt=et;et=vt,vt=Bt}return vt[p(vt,Bt=>!f(et,Bt))]},getActives(){return Fg(J,Yc(m||y,J,P))}}}function Yc(m,y,_){let P=Zc(m,y);return _?P-wy(m,y):Math.min(P,yy(y))}function yy(m){return Math.max(0,vf(m)-Pt(m).width)}function vf(m,y){return ve(wr(m).slice(0,y),_=>Pt(_).width)}function wy(m,y){return Pt(y).width/2-Pt(m).width/2}function Zc(m,y){return m&&(Zh(m).left+(qt?Pt(m).width-Pt(y).width:0))*(qt?-1:1)||0}function Fg(m,y){y-=1;let _=Pt(m).width,P=y+_+2;return wr(m).filter(G=>{let J=Zc(G,m),re=J+Math.min(Pt(G).width,_);return J>=y&&re<=P})}var rN={mixins:[Hi,cy,vy,gy,Mi],props:{center:Boolean,sets:Boolean,active:String},data:{center:!1,sets:!1,attrItem:"uk-slider-item",selList:".uk-slider-items",selNav:".uk-slider-nav",clsContainer:"uk-slider-container",active:"all",Transitioner:xy},computed:{finite({finite:m}){return m||nN(this.list,this.center)},maxIndex(){if(!this.finite||this.center&&!this.sets)return this.length-1;if(this.center)return be(this.sets);let m=0,y=yy(this.list),_=p(this.slides,P=>{if(m>=y-.005)return!0;m+=Pt(P).width});return~_?_:this.length-1},sets({sets:m}){if(!m||this.parallax)return;let y=0,_=[],P=Pt(this.list).width;for(let G=0;GP&&(y=0),this.center?y

    P/2&&(_.push(G),y=P/2-J/2):y===0&&_.push(Math.min(G,this.maxIndex)),y+=J}if(_.length)return _},transitionOptions(){return{center:this.center,list:this.list}},slides(){return wr(this.list).filter(He)}},connected(){it(this.$el,this.clsContainer,!cr(`.${this.clsContainer}`,this.$el))},observe:qo({target:({slides:m,$el:y})=>[y,...m]}),update:{write(){for(let m of this.navItems){let y=V(mt(m,this.attrItem));y!==!1&&(m.hidden=!this.maxIndex||y>this.maxIndex||this.sets&&!f(this.sets,y))}this.reorder(),this.parallax||this._translate(1),this.updateActiveClasses()},events:["resize"]},events:{beforeitemshow(m){!this.dragging&&this.sets&&this.stack.length<2&&!f(this.sets,this.index)&&(this.index=this.getValidIndex());let y=Math.abs(this.index-this.prevIndex+(this.dir>0&&this.indexthis.prevIndex?(this.maxIndex+1)*this.dir:0));if(!this.dragging&&y>1){for(let G=0;G0?"next":"previous");m.preventDefault();return}let _=this.dir<0||!this.slides[this.prevIndex]?this.index:this.prevIndex,P=vf(this.list)/this.length;this.duration=pl(P/this.velocity)*(Pt(this.slides[_]).width/P),this.reorder()},itemshow(){~this.prevIndex&&Oe(this._getTransitioner().getItemIn(),this.clsActive),this.updateActiveClasses(this.prevIndex)},itemshown(){this.updateActiveClasses()}},methods:{reorder(){if(this.finite){Ee(this.slides,"order","");return}let m=this.dir>0&&this.slides[this.prevIndex]?this.prevIndex:this.index;if(this.slides.forEach((G,J)=>Ee(G,"order",this.dir>0&&J=this.index?-1:"")),!this.center||!this.length)return;let y=this.slides[m],_=Pt(this.list).width/2-Pt(y).width/2,P=0;for(;_>0;){let G=this.getIndex(--P+m,m),J=this.slides[G];Ee(J,"order",G>m?-2:-1),_-=Pt(J).width}},updateActiveClasses(m=this.index){let y=this._getTransitioner(m).getActives();this.active!=="all"&&(y=[this.slides[this.getValidIndex(m)]]);let _=[this.clsActive,!this.sets||f(this.sets,X(this.index))?this.clsActivated:""];for(let P of this.slides){let G=f(y,P);it(P,_,G),rt(P,"aria-hidden",!G);for(let J of Xr(nr,P))r(J,"_tabindex")||(J._tabindex=rt(J,"tabindex")),rt(J,"tabindex",G?J._tabindex:-1)}},getValidIndex(m=this.index,y=this.prevIndex){if(m=this.getIndex(m,y),!this.sets)return m;let _;do{if(f(this.sets,m))return m;_=m,m=this.getIndex(m+this.dir,y)}while(m!==_);return m},getAdjacentSlides(){let{width:m}=Pt(this.list),y=-m,_=m*2,P=Pt(this.slides[this.index]).width,G=this.center?m/2-P/2:0,J=new Set;for(let re of[-1,1]){let pe=G+(re>0?P:0),Ae=0;do{let We=this.slides[this.getIndex(this.index+re+Ae++*re)];pe+=Pt(We).width*re,J.add(We)}while(this.length>Ae&&pe>y&&pe<_)}return Array.from(J)},getIndexAt(m){let y=-1,_=this.center?vf(this.list)-(Pt(this.slides[0]).width/2+Pt(be(this.slides)).width/2):vf(this.list,this.maxIndex),P=m*_,G=0;do{let J=Pt(this.slides[++y]).width,re=this.center?J/2+Pt(this.slides[y+1]).width/2:J;G=P/re%1,P-=re}while(P>=0&&yve(P.filter(Ve=>!Ae.has(Ve)),Ve=>Pt(Ve).width))return!0}return!1}function iN(m){return Math.max(0,...wr(m).map(y=>Pt(y).width))}var As={mixins:[Mg],beforeConnect(){this.item=this.$el.closest(`.${this.$options.id.replace("parallax","items")} > *`)},disconnected(){this.item=null},events:[{name:"itemin itemout",self:!0,el:({item:m})=>m,handler({type:m,detail:{percent:y,duration:_,timing:P,dir:G}}){Ui.read(()=>{if(!this.matchMedia)return;let J=this.getCss(Xc(m,G,y)),re=this.getCss(xf(m)?.5:G>0?1:0);Ui.write(()=>{Ee(this.$el,J),St.start(this.$el,re,_,P).catch(le)})})}},{name:"transitioncanceled transitionend",self:!0,el:({item:m})=>m,handler(){St.cancel(this.$el)}},{name:"itemtranslatein itemtranslateout",self:!0,el:({item:m})=>m,handler({type:m,detail:{percent:y,dir:_}}){Ui.read(()=>{if(!this.matchMedia){this.reset();return}let P=this.getCss(Xc(m,_,y));Ui.write(()=>Ee(this.$el,P))})}}]};function xf(m){return u(m,"in")}function Xc(m,y,_){return _/=2,xf(m)^y<0?_:1-_}var Kc={...Ds,fade:{show(){return[{opacity:0,zIndex:0},{zIndex:-1}]},percent(m){return 1-Ee(m,"opacity")},translate(m){return[{opacity:1-m,zIndex:0},{zIndex:-1}]}},scale:{show(){return[{opacity:0,transform:ff(1+.5),zIndex:0},{zIndex:-1}]},percent(m){return 1-Ee(m,"opacity")},translate(m){return[{opacity:1-m,transform:ff(1+.5*m),zIndex:0},{zIndex:-1}]}},pull:{show(m){return m<0?[{transform:Dn(30),zIndex:-1},{transform:Dn(),zIndex:0}]:[{transform:Dn(-100),zIndex:0},{transform:Dn(),zIndex:-1}]},percent(m,y,_){return _<0?1-ca(y):ca(m)},translate(m,y){return y<0?[{transform:Dn(30*m),zIndex:-1},{transform:Dn(-100*(1-m)),zIndex:0}]:[{transform:Dn(-m*100),zIndex:0},{transform:Dn(30*(1-m)),zIndex:-1}]}},push:{show(m){return m<0?[{transform:Dn(100),zIndex:0},{transform:Dn(),zIndex:-1}]:[{transform:Dn(-30),zIndex:-1},{transform:Dn(),zIndex:0}]},percent(m,y,_){return _>0?1-ca(y):ca(m)},translate(m,y){return y<0?[{transform:Dn(m*100),zIndex:0},{transform:Dn(-30*(1-m)),zIndex:-1}]:[{transform:Dn(-30*m),zIndex:-1},{transform:Dn(100*(1-m)),zIndex:0}]}}},Cs={mixins:[Hi,Tm,vy,gy,Mi],props:{ratio:String,minHeight:String,maxHeight:String},data:{ratio:"16:9",minHeight:void 0,maxHeight:void 0,selList:".uk-slideshow-items",attrItem:"uk-slideshow-item",selNav:".uk-slideshow-nav",Animations:Kc},watch:{list(m){Ee(m,{aspectRatio:this.ratio?this.ratio.replace(":","/"):void 0,minHeight:this.minHeight,maxHeight:this.maxHeight,minWidth:"100%",maxWidth:"100%"})}},methods:{getAdjacentSlides(){return[1,-1].map(m=>this.slides[this.getIndex(this.index+m)])}}},oN={mixins:[Hi,Ic],props:{group:String,threshold:Number,clsItem:String,clsPlaceholder:String,clsDrag:String,clsDragState:String,clsBase:String,clsNoDrag:String,clsEmpty:String,clsCustom:String,handle:String},data:{group:!1,threshold:5,clsItem:"uk-sortable-item",clsPlaceholder:"uk-sortable-placeholder",clsDrag:"uk-sortable-drag",clsDragState:"uk-drag",clsBase:"uk-sortable",clsNoDrag:"uk-sortable-nodrag",clsEmpty:"uk-sortable-empty",clsCustom:"",handle:!1,pos:{}},events:{name:ge,passive:!1,handler:"init"},computed:{target:(m,y)=>(y.tBodies||[y])[0],items(){return wr(this.target)},isEmpty(){return!this.items.length},handles({handle:m},y){return m?Xr(m,y):this.items}},watch:{isEmpty(m){it(this.target,this.clsEmpty,m)},handles(m,y){Ee(y,{touchAction:"",userSelect:""}),Ee(m,{touchAction:"none",userSelect:"none"})}},update:{write(m){if(!this.drag||!$t(this.placeholder))return;let{pos:{x:y,y:_},origin:{offsetTop:P,offsetLeft:G},placeholder:J}=this;Ee(this.drag,{top:_-P,left:y-G});let re=this.getSortable(document.elementFromPoint(y,_));if(!re)return;let{items:pe}=re;if(pe.some(St.inProgress))return;let Ae=Ny(pe,{x:y,y:_});if(pe.length&&(!Ae||Ae===J))return;let We=this.getSortable(J),Ve=Im(re.target,Ae,J,y,_,re===We&&m.moved!==Ae);Ve!==!1&&(Ve&&J===Ve||(re!==We?(We.remove(J),m.moved=Ae):delete m.moved,re.insert(J,Ve),this.touched.add(re)))},events:["move"]},methods:{init(m){let{target:y,button:_,defaultPrevented:P}=m,[G]=this.items.filter(J=>J.contains(y));!G||P||_>0||Tt(y)||y.closest(`.${this.clsNoDrag}`)||this.handle&&!y.closest(this.handle)||(m.preventDefault(),this.pos=ot(m),this.touched=new Set([this]),this.placeholder=G,this.origin={target:y,index:Mn(G),...this.pos},Yt(document,_e,this.move),Yt(document,Re,this.end),this.threshold||this.start(m))},start(m){this.drag=Sy(this.$container,this.placeholder);let{left:y,top:_}=Pt(this.placeholder);x(this.origin,{offsetLeft:this.pos.x-y,offsetTop:this.pos.y-_}),Oe(this.drag,this.clsDrag,this.clsCustom),Oe(this.placeholder,this.clsPlaceholder),Oe(this.items,this.clsItem),Oe(document.documentElement,this.clsDragState),It(this.$el,"start",[this,this.placeholder]),yf(this.pos),this.move(m)},move:Ig(function(m){x(this.pos,ot(m)),!this.drag&&(Math.abs(this.pos.x-this.origin.x)>this.threshold||Math.abs(this.pos.y-this.origin.y)>this.threshold)&&this.start(m),this.$emit("move")}),end(){if(qi(document,_e,this.move),qi(document,Re,this.end),!this.drag)return;Dy();let m=this.getSortable(this.placeholder);this===m?this.origin.index!==Mn(this.placeholder)&&It(this.$el,"moved",[this,this.placeholder]):(It(m.$el,"added",[m,this.placeholder]),It(this.$el,"removed",[this,this.placeholder])),It(this.$el,"stop",[this,this.placeholder]),Do(this.drag),this.drag=null;for(let{clsPlaceholder:y,clsItem:_}of this.touched)for(let P of this.touched)Me(P.items,y,_);this.touched=null,Me(document.documentElement,this.clsDragState)},insert(m,y){Oe(this.items,this.clsItem),y&&y.previousElementSibling!==m?this.animate(()=>gc(y,m)):!y&&this.target.lastElementChild!==m&&this.animate(()=>bn(this.target,m))},remove(m){this.target.contains(m)&&this.animate(()=>Do(m))},getSortable(m){do{let y=this.$getComponent(m,"sortable");if(y&&(y===this||this.group!==!1&&y.group===this.group))return y}while(m=$t(m))}}};let by;function yf(m){let y=Date.now();by=setInterval(()=>{let{x:_,y:P}=m;P+=document.scrollingElement.scrollTop;let G=(Date.now()-y)*.3;y=Date.now(),Ju(document.elementFromPoint(_,m.y)).reverse().some(J=>{let{scrollTop:re,scrollHeight:pe}=J,{top:Ae,bottom:We,height:Ve}=No(J);if(AeP)re-=G;else if(We>P&&We-350&&re"),bn(_,y.cloneNode(!0).children);for(let P of y.getAttributeNames())rt(_,P,y.getAttribute(P))}else _=y.cloneNode(!0);return bn(m,_),Ee(_,"margin","0","important"),Ee(_,{boxSizing:"border-box",width:y.offsetWidth,height:y.offsetHeight,padding:Ee(y,"padding")}),zi(_.firstElementChild,zi(y.firstElementChild)),_}function Ny(m,y){return m[p(m,_=>we(y,Pt(_)))]}function Im(m,y,_,P,G,J){if(!wr(m).length)return;let re=Pt(y);if(!J)return wf(m,_)||Gre[vt]-Bt?!1:y}function wf(m,y){let _=wr(m).length===1;_&&bn(m,y);let P=wr(m),G=P.some((J,re)=>{let pe=Pt(J);return P.slice(re+1).some(Ae=>{let We=Pt(Ae);return!km([pe.left,pe.right],[We.left,We.right])})});return _&&Do(y),G}function km(m,y){return m[1]>y[0]&&y[1]>m[0]}function Ig(m){let y;return function(..._){y||(y=!0,m.call(this,..._),requestAnimationFrame(()=>y=!1))}}var Lm={props:{pos:String,offset:Boolean,flip:Boolean,shift:Boolean,inset:Boolean},data:{pos:`bottom-${qt?"right":"left"}`,offset:!1,flip:!0,shift:!0,inset:!1},connected(){this.pos=this.$props.pos.split("-").concat("center").slice(0,2),[this.dir,this.align]=this.pos,this.axis=f(["top","bottom"],this.dir)?"y":"x"},methods:{positionAt(m,y,_){let P=[this.getPositionOffset(m),this.getShiftOffset(m)],G=[this.flip&&"flip",this.shift&&"shift"],J={element:[this.inset?this.dir:bc(this.dir),this.align],target:[this.dir,this.align]};if(this.axis==="y"){for(let Ae in J)J[Ae].reverse();P.reverse(),G.reverse()}let re=Ey(m),pe=Pt(m);Ee(m,{top:-pe.height,left:-pe.width}),la(m,y,{attach:J,offset:P,boundary:_,placement:G,viewportOffset:this.getViewportOffset(m)}),re()},getPositionOffset(m=this.$el){return Kn(this.offset===!1?Ee(m,"--uk-position-offset"):this.offset,this.axis==="x"?"width":"height",m)*(f(["left","top"],this.dir)?-1:1)*(this.inset?-1:1)},getShiftOffset(m=this.$el){return this.align==="center"?0:Kn(Ee(m,"--uk-position-shift-offset"),this.axis==="y"?"width":"height",m)*(f(["left","top"],this.align)?1:-1)},getViewportOffset(m){return Kn(Ee(m,"--uk-position-viewport-offset"))}}};function Ey(m){let y=ys(m),{scrollTop:_}=y;return()=>{_!==y.scrollTop&&(y.scrollTop=_)}}var Jc={mixins:[lf,fa,Lm],data:{pos:"top",animation:["uk-animation-scale-up"],duration:100,cls:"uk-active"},connected(){Ay(this.$el)},disconnected(){this.hide()},methods:{show(){if(this.isToggled(this.tooltip||null))return;let{delay:m=0,title:y}=Cy(this.$options);if(!y)return;let _=rt(this.$el,"title"),P=Yt(this.$el,["blur",ze],J=>!Xe(J)&&this.hide());this.reset=()=>{rt(this.$el,{title:_,"aria-describedby":null}),P()};let G=cl(this);rt(this.$el,{title:null,"aria-describedby":G}),clearTimeout(this.showTimer),this.showTimer=setTimeout(()=>this._show(y,G),m)},async hide(){var m;Kt(this.$el,"input:focus")||(clearTimeout(this.showTimer),this.isToggled(this.tooltip||null)&&await this.toggleElement(this.tooltip,!1,!1),(m=this.reset)==null||m.call(this),Do(this.tooltip),this.tooltip=null)},async _show(m,y){this.tooltip=bn(this.container,`

    `),Yt(this.tooltip,"toggled",(_,P)=>{if(!P)return;let G=()=>this.positionAt(this.tooltip,this.$el);G();let[J,re]=aN(this.tooltip,this.$el,this.pos);this.origin=this.axis==="y"?`${bc(J)}-${re}`:`${re}-${bc(J)}`;let pe=[Er(document,`keydown ${ge}`,this.hide,!1,Ae=>Ae.type===ge&&!this.$el.contains(Ae.target)||Ae.type==="keydown"&&Ae.keyCode===_r.ESC),Yt([document,...fu(this.$el)],"scroll",G,{passive:!0})];Er(this.tooltip,"hide",()=>pe.forEach(Ae=>Ae()),{self:!0})}),await this.toggleElement(this.tooltip,!0)||this.hide()}},events:{[`focus ${Ue} ${ge}`](m){(!Xe(m)||m.type===ge)&&this.show()}}};function Ay(m){$r(m)||rt(m,"tabindex","0")}function aN(m,y,[_,P]){let G=xr(m),J=xr(y),re=[["left","right"],["top","bottom"]];for(let Ae of re){if(G[Ae[0]]>=J[Ae[1]]){_=Ae[1];break}if(G[Ae[1]]<=J[Ae[0]]){_=Ae[0];break}}return P=(f(re[0],_)?re[1]:re[0]).find(Ae=>G[Ae]===J[Ae])||"center",[_,P]}function Cy(m){let{el:y,id:_,data:P}=m;return["delay","title"].reduce((G,J)=>({[J]:mt(y,J),...G}),{...el(mt(y,_),["title"]),...P})}var Bm={mixins:[Dm],i18n:{invalidMime:"Invalid File Type: %s",invalidName:"Invalid File Name: %s",invalidSize:"Invalid File Size: %s Kilobytes Max"},props:{allow:String,clsDragover:String,concurrent:Number,maxSize:Number,method:String,mime:String,multiple:Boolean,name:String,params:Object,type:String,url:String},data:{allow:!1,clsDragover:"uk-dragover",concurrent:1,maxSize:0,method:"POST",mime:!1,multiple:!1,name:"files[]",params:{},type:"",url:"",abort:le,beforeAll:le,beforeSend:le,complete:le,completeAll:le,error:le,fail:le,load:le,loadEnd:le,loadStart:le,progress:le},events:{change(m){Kt(m.target,'input[type="file"]')&&(m.preventDefault(),m.target.files&&this.upload(m.target.files),m.target.value="")},drop(m){du(m);let y=m.dataTransfer;y?.files&&(Me(this.$el,this.clsDragover),this.upload(y.files))},dragenter(m){du(m)},dragover(m){du(m),Oe(this.$el,this.clsDragover)},dragleave(m){du(m),Me(this.$el,this.clsDragover)}},methods:{async upload(m){if(m=g(m),!m.length)return;It(this.$el,"upload",[m]);for(let P of m){if(this.maxSize&&this.maxSize*1e3{let G=new FormData;P.forEach(J=>G.append(this.name,J));for(let J in this.params)G.append(J,this.params[J]);try{let J=await Ty(this.url,{data:G,method:this.method,responseType:this.type,beforeSend:re=>{let{xhr:pe}=re;Yt(pe.upload,"progress",this.progress);for(let Ae of["loadStart","load","loadEnd","abort"])Yt(pe,Ae.toLowerCase(),this[Ae]);return this.beforeSend(re)}});this.complete(J),y.length?await _(y.shift()):this.completeAll(J)}catch(J){this.error(J)}};await _(y.shift())}}};function My(m,y){return y.match(new RegExp(`^${m.replace(/\//g,"\\/").replace(/\*\*/g,"(\\/[^\\/]+)*").replace(/\*/g,"[^\\/]+").replace(/((?!\\))\?/g,"$1.")}$`,"i"))}function sN(m,y){let _=[];for(let P=0;P{let{xhr:G}=y;for(let J in y)if(J in G)try{G[J]=y[J]}catch{}G.open(y.method.toUpperCase(),m);for(let J in y.headers)G.setRequestHeader(J,y.headers[J]);Yt(G,"load",()=>{G.status===0||G.status>=200&&G.status<300||G.status===304?_(G):P(x(Error(G.statusText),{xhr:G,status:G.status}))}),Yt(G,"error",()=>P(x(Error("Network Error"),{xhr:G}))),Yt(G,"timeout",()=>P(x(Error("Network Timeout"),{xhr:G}))),G.send(y.data)})}var uN=Object.freeze({__proto__:null,Countdown:Wx,Filter:wm,Lightbox:my,LightboxPanel:Eg,Notification:pi,Parallax:eN,Slider:rN,SliderParallax:As,Slideshow:Cs,SlideshowParallax:As,Sortable:oN,Tooltip:Jc,Upload:Bm});function kg(m){fr&&window.MutationObserver&&(document.body?requestAnimationFrame(()=>Lg(m)):new MutationObserver((y,_)=>{document.body&&(Lg(m),_.disconnect())}).observe(document.documentElement,{childList:!0}))}function Lg(m){It(document,"uikit:init",m),document.body&&Po(document.body,Bg),new MutationObserver(y=>y.forEach(lN)).observe(document,{subtree:!0,childList:!0}),new MutationObserver(y=>y.forEach(Oy)).observe(document,{subtree:!0,attributes:!0}),m._initialized=!0}function lN({addedNodes:m,removedNodes:y}){for(let _ of m)Po(_,Bg);for(let _ of y)Po(_,fN)}function Oy({target:m,attributeName:y}){var _;let P=Pm(y);P&&(At(m,y)?Uo(P,m):(_=qc(m,P))==null||_.$destroy())}function Bg(m){let y=cf(m);for(let _ in y)Ar(y[_]);for(let _ of m.getAttributeNames()){let P=Pm(_);P&&Uo(P,m)}}function fN(m){let y=cf(m);for(let _ in y)Ao(y[_])}function Pm(m){a(m,"data-")&&(m=m.slice(5));let y=fl[m];return y&&(y.options||y).name}Sg(Co),ly(Co);var bf={mixins:[Hi,fa],props:{animation:Boolean,targets:String,active:null,collapsible:Boolean,multiple:Boolean,toggle:String,content:String,offset:Number},data:{targets:"> *",active:!1,animation:!0,collapsible:!0,multiple:!1,clsOpen:"uk-open",toggle:"> .uk-accordion-title",content:"> .uk-accordion-content",offset:0},computed:{items:({targets:m},y)=>Xr(m,y),toggles({toggle:m}){return this.items.map(y=>cr(m,y))},contents({content:m}){return this.items.map(y=>{var _;return((_=y._wrapper)==null?void 0:_.firstElementChild)||cr(m,y)})}},watch:{items(m,y){if(y||$e(m,this.clsOpen))return;let _=this.active!==!1&&m[Number(this.active)]||!this.collapsible&&m[0];_&&this.toggle(_,!1)},toggles(){this.$emit()},contents(m){for(let y of m){let _=$e(this.items.find(P=>P.contains(y)),this.clsOpen);hu(y,!_)}this.$emit()}},observe:bs(),events:[{name:"click keydown",delegate:({targets:m,$props:y})=>`${m} ${y.toggle}`,async handler(m){var y;m.type==="keydown"&&m.keyCode!==_r.SPACE||(m.preventDefault(),(y=this._off)==null||y.call(this),this._off=Fy(m.target),await this.toggle(Mn(this.toggles,m.current)),this._off())}},{name:"shown hidden",self:!0,delegate:({targets:m})=>m,handler(){this.$emit()}}],update(){let m=li(this.items,`.${this.clsOpen}`);for(let y in this.items){let _=this.toggles[y],P=this.contents[y];if(!_||!P)continue;_.id=cl(this,_),P.id=cl(this,P);let G=f(m,this.items[y]);rt(_,{role:Zr(_,"a")?"button":null,"aria-controls":P.id,"aria-expanded":G,"aria-disabled":!this.collapsible&&m.length<2&&G}),rt(P,{role:"region","aria-labelledby":_.id}),Zr(P,"ul")&&rt(wr(P),"role","presentation")}},methods:{toggle(m,y){m=this.items[ie(m,this.items)];let _=[m],P=li(this.items,`.${this.clsOpen}`);if(!this.multiple&&!f(P,_[0])&&(_=_.concat(P)),!(!this.collapsible&&P.length<2&&f(P,m)))return Promise.all(_.map(G=>this.toggleElement(G,!f(P,G),(J,re)=>{if(it(J,this.clsOpen,re),y===!1||!this.animation){hu(cr(this.content,J),!re);return}return cN(J,re,this)})))}}};function hu(m,y){m&&(m.hidden=y)}async function cN(m,y,{content:_,duration:P,velocity:G,transition:J}){var re;_=((re=m._wrapper)==null?void 0:re.firstElementChild)||cr(_,m),m._wrapper||(m._wrapper=im(_,"
    "));let pe=m._wrapper;Ee(pe,"overflow","hidden");let Ae=X(Ee(pe,"height"));await St.cancel(pe),hu(_,!1);let We=ve(["marginTop","marginBottom"],et=>Ee(_,et))+Pt(_).height,Ve=Ae/We;P=(G*We+P)*(y?1-Ve:Ve),Ee(pe,"height",Ae),await St.start(pe,{height:y?We:0},P,J),So(_),delete m._wrapper,y||hu(_,!0)}function Fy(m){let y=ys(m,!0),_;return function P(){_=requestAnimationFrame(()=>{let{top:G}=Pt(m);G<0&&(y.scrollTop+=G),P()})}(),()=>requestAnimationFrame(()=>cancelAnimationFrame(_))}var pN={mixins:[Hi,fa],args:"animation",props:{animation:Boolean,close:String},data:{animation:!0,selClose:".uk-alert-close",duration:150},events:{name:"click",delegate:({selClose:m})=>m,handler(m){m.preventDefault(),this.close()}},methods:{async close(){await this.toggleElement(this.$el,!1,mN),this.$destroy(!0)}}};function mN(m,y,{duration:_,transition:P,velocity:G}){let J=X(Ee(m,"height"));return Ee(m,"height",J),St.start(m,{height:0,marginTop:0,marginBottom:0,paddingTop:0,paddingBottom:0,borderTop:0,borderBottom:0,opacity:0},G*J+_,P)}var Iy={args:"autoplay",props:{automute:Boolean,autoplay:Boolean},data:{automute:!1,autoplay:!0},beforeConnect(){this.autoplay==="inview"&&!At(this.$el,"preload")&&(this.$el.preload="none"),Zr(this.$el,"iframe")&&!At(this.$el,"allow")&&(this.$el.allow="autoplay"),this.autoplay==="hover"&&(Zr(this.$el,"video")?this.$el.tabindex=0:this.autoplay=!0),this.automute&&kx(this.$el)},events:[{name:`${Ue} focusin`,filter:({autoplay:m})=>f(m,"hover"),handler(m){!Xe(m)||!dN(this.$el)?rf(this.$el):xs(this.$el)}},{name:`${ze} focusout`,filter:({autoplay:m})=>f(m,"hover"),handler(m){Xe(m)||xs(this.$el)}}],observe:[zo({filter:({$el:m,autoplay:y})=>y!=="hover"&&Lx(m),handler([{isIntersecting:m}]){document.fullscreenElement||(m?this.autoplay&&rf(this.$el):xs(this.$el))},args:{intersecting:!1},options:({$el:m,autoplay:y})=>({root:y==="inview"?null:$t(m)})})]};function dN(m){return!m.paused&&!m.ended}var ky={mixins:[Iy],props:{width:Number,height:Number},data:{automute:!0},created(){this.useObjectFit=Zr(this.$el,"img","video")},observe:qo({target:({$el:m})=>Ly(m)||$t(m),filter:({useObjectFit:m})=>!m}),update:{read(){if(this.useObjectFit)return!1;let{ratio:m,cover:y}=Ze,{$el:_,width:P,height:G}=this,J={width:P,height:G};if(!P||!G){let We={width:_.naturalWidth||_.videoWidth||_.clientWidth,height:_.naturalHeight||_.videoHeight||_.clientHeight};P?J=m(We,"width",P):G?J=m(We,"height",G):J=We}let{offsetHeight:re,offsetWidth:pe}=Ly(_)||$t(_),Ae=y(J,{width:pe,height:re});return!Ae.width||!Ae.height?!1:Ae},write({height:m,width:y}){Ee(this.$el,{height:m,width:y})},events:["resize"]}};function Ly(m){for(;m=$t(m);)if(Ee(m,"position")!=="static")return m}let mi;var Pg={mixins:[lf,Lm,fa],args:"pos",props:{mode:"list",toggle:Boolean,boundary:Boolean,boundaryX:Boolean,boundaryY:Boolean,target:Boolean,targetX:Boolean,targetY:Boolean,stretch:Boolean,delayShow:Number,delayHide:Number,autoUpdate:Boolean,clsDrop:String,animateOut:Boolean,bgScroll:Boolean,closeOnScroll:Boolean},data:{mode:["click","hover"],toggle:"- *",boundary:!1,boundaryX:!1,boundaryY:!1,target:!1,targetX:!1,targetY:!1,stretch:!1,delayShow:0,delayHide:800,autoUpdate:!0,clsDrop:!1,animateOut:!1,bgScroll:!0,animation:["uk-animation-fade"],cls:"uk-open",container:!1,closeOnScroll:!1},computed:{boundary({boundary:m,boundaryX:y,boundaryY:_},P){return[Pn(y||m,P)||window,Pn(_||m,P)||window]},target({target:m,targetX:y,targetY:_},P){return y||(y=m||this.targetEl),_||(_=m||this.targetEl),[y===!0?window:Pn(y,P),_===!0?window:Pn(_,P)]}},created(){this.tracker=new jh},beforeConnect(){this.clsDrop=this.$props.clsDrop||this.$options.id},connected(){Oe(this.$el,"uk-drop",this.clsDrop),this.toggle&&!this.targetEl&&(this.targetEl=By(this)),this._style=De(this.$el.style,["width","height"])},disconnected(){this.isActive()&&(this.hide(!1),mi=null),Ee(this.$el,this._style)},events:[{name:"click",delegate:()=>".uk-drop-close",handler(m){m.preventDefault(),this.hide(!1)}},{name:"click",delegate:()=>'a[href*="#"]',handler({defaultPrevented:m,current:y}){let{hash:_}=y;!m&&_&&ka(y)&&!this.$el.contains(cr(_))&&this.hide(!1)}},{name:"beforescroll",handler(){this.hide(!1)}},{name:"toggle",self:!0,handler(m,y){m.preventDefault(),this.isToggled()?this.hide(!1):this.show(y?.$el,!1)}},{name:"toggleshow",self:!0,handler(m,y){m.preventDefault(),this.show(y?.$el)}},{name:"togglehide",self:!0,handler(m){m.preventDefault(),Kt(this.$el,":focus,:hover")||this.hide()}},{name:`${Ue} focusin`,filter:({mode:m})=>f(m,"hover"),handler(m){Xe(m)||this.clearTimers()}},{name:`${ze} focusout`,filter:({mode:m})=>f(m,"hover"),handler(m){!Xe(m)&&m.relatedTarget&&this.hide()}},{name:"toggled",self:!0,handler(m,y){y&&(this.clearTimers(),this.position())}},{name:"show",self:!0,handler(){mi=this,this.tracker.init(),rt(this.targetEl,"aria-expanded",!0);let m=[hN(this),Df(this),Rm(this),this.autoUpdate&&qg(this),this.closeOnScroll&&Py(this)];Er(this.$el,"hide",()=>m.forEach(y=>y&&y()),{self:!0}),this.bgScroll||Er(this.$el,"hidden",Lc(this.$el),{self:!0})}},{name:"beforehide",self:!0,handler:"clearTimers"},{name:"hide",handler({target:m}){if(this.$el!==m){mi=mi===null&&this.$el.contains(m)&&this.isToggled()?this:mi;return}mi=this.isActive()?null:mi,this.tracker.cancel(),rt(this.targetEl,"aria-expanded",null)}}],update:{write(){this.isToggled()&&!$e(this.$el,this.clsEnter)&&this.position()}},methods:{show(m=this.targetEl,y=!0){if(this.isToggled()&&m&&this.targetEl&&m!==this.targetEl&&this.hide(!1,!1),this.targetEl=m,this.clearTimers(),!this.isActive()){if(mi){if(y&&mi.isDelaying()){this.showTimer=setTimeout(()=>Kt(m,":hover")&&this.show(),10);return}let _;for(;mi&&_!==mi&&!mi.$el.contains(this.$el);)_=mi,mi.hide(!1,!1)}this.container&&$t(this.$el)!==this.container&&bn(this.container,this.$el),this.showTimer=setTimeout(()=>this.toggleElement(this.$el,!0),y&&this.delayShow||0)}},hide(m=!0,y=!0){let _=()=>this.toggleElement(this.$el,!1,this.animateOut&&y);this.clearTimers(),this.isDelayedHide=m,m&&this.isDelaying()?this.hideTimer=setTimeout(this.hide,50):m&&this.delayHide?this.hideTimer=setTimeout(_,this.delayHide):_()},clearTimers(){clearTimeout(this.showTimer),clearTimeout(this.hideTimer),this.showTimer=null,this.hideTimer=null},isActive(){return mi===this},isDelaying(){return[this.$el,...Xr(".uk-drop",this.$el)].some(m=>this.tracker.movesTo(m))},position(){let m=Ey(this.$el);Me(this.$el,"uk-drop-stack"),Ee(this.$el,this._style),this.$el.hidden=!0;let y=this.target.map(J=>Rg(this.$el,J)),_=this.getViewportOffset(this.$el),P=[[0,["x","width","left","right"]],[1,["y","height","top","bottom"]]];for(let[J,[re,pe]]of P)this.axis!==re&&f([re,!0],this.stretch)&&Ee(this.$el,{[pe]:Math.min(xr(this.boundary[J])[pe],y[J][pe]-2*_),[`overflow-${re}`]:"auto"});let G=y[0].width-2*_;this.$el.hidden=!1,Ee(this.$el,"maxWidth",""),this.$el.offsetWidth>G&&Oe(this.$el,"uk-drop-stack"),Ee(this.$el,"maxWidth",G),this.positionAt(this.$el,this.target,this.boundary);for(let[J,[re,pe,Ae,We]]of P)if(this.axis===re&&f([re,!0],this.stretch)){let Ve=Math.abs(this.getPositionOffset()),et=xr(this.target[J]),vt=xr(this.$el);Ee(this.$el,{[pe]:(et[Ae]>vt[Ae]?et[this.inset?We:Ae]-Math.max(xr(this.boundary[J])[Ae],y[J][Ae]+_):Math.min(xr(this.boundary[J])[We],y[J][We]-_)-et[this.inset?Ae:We])-Ve,[`overflow-${re}`]:"auto"}),this.positionAt(this.$el,this.target,this.boundary)}m()}}};function Rg(m,y){return No(fu(y).find(_=>_.contains(m)))}function By(m){let{$el:y}=m.$create("toggle",Pn(m.toggle,m.$el),{target:m.$el,mode:m.mode});return rt(y,"aria-haspopup",!0),y}function hN(m){let y=()=>m.$emit(),_=[um(y),Sc(fu(m.$el).concat(m.target),y)];return()=>_.map(P=>P.disconnect())}function qg(m,y=()=>m.$emit()){return Yt([document,...fu(m.$el)],"scroll",y,{passive:!0})}function Df(m){return Yt(document,"keydown",y=>{y.keyCode===_r.ESC&&m.hide(!1)})}function Py(m){return qg(m,()=>m.hide(!1))}function Rm(m){return Yt(document,ge,({target:y})=>{m.$el.contains(y)||Er(document,`${Re} ${je} scroll`,({defaultPrevented:_,type:P,target:G})=>{var J;!_&&P===Re&&y===G&&!((J=m.targetEl)!=null&&J.contains(y))&&m.hide(!1)},!0)})}var Ry={mixins:[Hi,lf],props:{align:String,clsDrop:String,boundary:Boolean,dropbar:Boolean,dropbarAnchor:Boolean,duration:Number,mode:Boolean,offset:Boolean,stretch:Boolean,delayShow:Boolean,delayHide:Boolean,target:Boolean,targetX:Boolean,targetY:Boolean,animation:Boolean,animateOut:Boolean,closeOnScroll:Boolean},data:{align:qt?"right":"left",clsDrop:"uk-dropdown",clsDropbar:"uk-dropnav-dropbar",boundary:!0,dropbar:!1,dropbarAnchor:!1,duration:200,container:!1,selNavItem:"> li > a, > ul > li > a"},computed:{dropbarAnchor:({dropbarAnchor:m},y)=>Pn(m,y)||y,dropbar({dropbar:m}){return m?(m=this._dropbar||Pn(m,this.$el)||cr(`+ .${this.clsDropbar}`,this.$el),m||(this._dropbar=cr("
    "))):null},dropContainer(m,y){return this.container||y},dropdowns({clsDrop:m},y){var _;let P=Xr(`.${m}`,y);if(this.dropContainer!==y)for(let G of Xr(`.${m}`,this.dropContainer)){let J=(_=this.getDropdown(G))==null?void 0:_.targetEl;!f(P,G)&&J&&this.$el.contains(J)&&P.push(G)}return P},items({selNavItem:m},y){return Xr(m,y)}},watch:{dropbar(m){Oe(m,"uk-dropbar","uk-dropbar-top",this.clsDropbar,`uk-${this.$options.name}-dropbar`)},dropdowns(){this.initializeDropdowns()}},connected(){this.initializeDropdowns()},disconnected(){Do(this._dropbar),delete this._dropbar},events:[{name:"mouseover focusin",delegate:({selNavItem:m})=>m,handler({current:m}){let y=this.getActive();y&&f(y.mode,"hover")&&y.targetEl&&!m.contains(y.targetEl)&&!y.isDelaying()&&y.hide(!1)}},{name:"keydown",self:!0,delegate:({selNavItem:m})=>m,handler(m){var y;let{current:_,keyCode:P}=m,G=this.getActive();P===_r.DOWN&&G?.targetEl===_&&(m.preventDefault(),(y=cr(nr,G.$el))==null||y.focus()),qy(m,this.items,G)}},{name:"keydown",el:({dropContainer:m})=>m,delegate:({clsDrop:m})=>`.${m}`,handler(m){var y;let{current:_,keyCode:P,target:G}=m;if(Tt(G)||!f(this.dropdowns,_))return;let J=this.getActive(),re=-1;if(P===_r.HOME?re=0:P===_r.END?re="last":P===_r.UP?re="previous":P===_r.DOWN?re="next":P===_r.ESC&&((y=J.targetEl)==null||y.focus()),~re){m.preventDefault();let pe=Xr(nr,_);pe[ie(re,pe,p(pe,Ae=>Kt(Ae,":focus")))].focus()}qy(m,this.items,J)}},{name:"mouseleave",el:({dropbar:m})=>m,filter:({dropbar:m})=>m,handler(){let m=this.getActive();m&&f(m.mode,"hover")&&!this.dropdowns.some(y=>Kt(y,":hover"))&&m.hide()}},{name:"beforeshow",el:({dropContainer:m})=>m,filter:({dropbar:m})=>m,handler({target:m}){this.isDropbarDrop(m)&&(this.dropbar.previousElementSibling!==this.dropbarAnchor&&vc(this.dropbarAnchor,this.dropbar),Oe(m,`${this.clsDrop}-dropbar`))}},{name:"show",el:({dropContainer:m})=>m,filter:({dropbar:m})=>m,handler({target:m}){if(!this.isDropbarDrop(m))return;let y=this.getDropdown(m),_=()=>{let P=Math.max(...Qi(m,`.${this.clsDrop}`).concat(m).map(G=>xr(G).bottom));xr(this.dropbar,{left:xr(this.dropbar).left,top:this.getDropbarOffset(y.getPositionOffset())}),this.transitionTo(P-xr(this.dropbar).top+X(Ee(m,"marginBottom")),m)};this._observer=Sc([y.$el,...y.target],_),_()}},{name:"beforehide",el:({dropContainer:m})=>m,filter:({dropbar:m})=>m,handler(m){let y=this.getActive();Kt(this.dropbar,":hover")&&y.$el===m.target&&this.isDropbarDrop(y.$el)&&f(y.mode,"hover")&&y.isDelayedHide&&!this.items.some(_=>y.targetEl!==_&&Kt(_,":focus"))&&m.preventDefault()}},{name:"hide",el:({dropContainer:m})=>m,filter:({dropbar:m})=>m,handler({target:m}){var y;if(!this.isDropbarDrop(m))return;(y=this._observer)==null||y.disconnect();let _=this.getActive();(!_||_.$el===m)&&this.transitionTo(0)}}],methods:{getActive(){var m;return f(this.dropdowns,(m=mi)==null?void 0:m.$el)&&mi},async transitionTo(m,y){let{dropbar:_}=this,P=zi(_);if(y=P0&&Ee(y,"transitionDelay",`${G/m*this.duration}ms`)}Ee(y,"clipPath",`polygon(0 0,100% 0,100% ${P}px,0 ${P}px)`),zi(_,P),await Promise.all([St.start(_,{height:m},this.duration),St.start(y,{clipPath:`polygon(0 0,100% 0,100% ${m}px,0 ${m}px)`},this.duration).finally(()=>Ee(y,{clipPath:"",transitionDelay:""}))]).catch(le)},getDropdown(m){return this.$getComponent(m,"drop")||this.$getComponent(m,"dropdown")},isDropbarDrop(m){return f(this.dropdowns,m)&&$e(m,this.clsDrop)},getDropbarOffset(m){let{$el:y,target:_,targetY:P}=this,{top:G,height:J}=xr(Pn(P||_||y,y));return G+J+m},initializeDropdowns(){this.$create("drop",this.dropdowns.filter(m=>!this.getDropdown(m)),{...this.$props,flip:!1,shift:!0,pos:`bottom-${this.align}`,boundary:this.boundary===!0?this.$el:this.boundary})}}};function qy(m,y,_){var P,G,J;let{current:re,keyCode:pe}=m,Ae=-1;pe===_r.HOME?Ae=0:pe===_r.END?Ae="last":pe===_r.LEFT?Ae="previous":pe===_r.RIGHT?Ae="next":pe===_r.TAB&&((P=_.targetEl)==null||P.focus(),(G=_.hide)==null||G.call(_,!1)),~Ae&&(m.preventDefault(),(J=_.hide)==null||J.call(_,!1),y[ie(Ae,y,y.indexOf(_.targetEl||re))].focus())}var gN={mixins:[Hi],args:"target",props:{target:Boolean},data:{target:!1},computed:{input:(m,y)=>cr(lt,y),state(){return this.input.nextElementSibling},target({target:m},y){return m&&(m===!0&&$t(this.input)===y&&this.input.nextElementSibling||cr(m,y))}},update(){var m;let{target:y,input:_}=this;if(!y)return;let P,G=Tt(y)?"value":"textContent",J=y[G],re=(m=_.files)!=null&&m[0]?_.files[0].name:Kt(_,"select")&&(P=Xr("option",_).filter(pe=>pe.selected)[0])?P.textContent:_.value;J!==re&&(y[G]=re)},events:[{name:"change",handler(){this.$emit()}},{name:"reset",el:({$el:m})=>m.closest("form"),handler(){this.$emit()}}]},rn={extends:Ci,mixins:[Hi],name:"grid",props:{masonry:Boolean,parallax:String,parallaxStart:String,parallaxEnd:String,parallaxJustify:Boolean},data:{margin:"uk-grid-margin",clsStack:"uk-grid-stack",masonry:!1,parallax:0,parallaxStart:0,parallaxEnd:0,parallaxJustify:!1},connected(){this.masonry&&Oe(this.$el,"uk-flex-top","uk-flex-wrap-top")},observe:tl({filter:({parallax:m,parallaxJustify:y})=>m||y}),update:[{write({rows:m}){it(this.$el,this.clsStack,!m.some(y=>y.length>1))},events:["resize"]},{read(m){let{rows:y}=m,{masonry:_,parallax:P,parallaxJustify:G,margin:J}=this;if(P=Math.max(0,Kn(P)),!(_||P||G)||zy(y)||y[0].some((rr,br)=>y.some(Fr=>Fr[br]&&Fr[br].offsetWidth!==rr.offsetWidth)))return m.translates=m.scrollColumns=!1;let re=Qc(y,J),pe,Ae;_?[pe,Ae]=zg(y,re,_==="next"):pe=ma(y);let We=pe.map(rr=>ve(rr,"offsetHeight")+re*(rr.length-1)),Ve=Math.max(0,...We),et,vt,Bt;return(P||G)&&(et=We.map((rr,br)=>G?Ve-rr+P:P/(br%2||8)),G||(P=Math.max(...We.map((rr,br)=>rr+et[br]-Ve))),vt=Kn(this.parallaxStart,"height",this.$el,!0),Bt=Kn(this.parallaxEnd,"height",this.$el,!0)),{columns:pe,translates:Ae,scrollColumns:et,parallaxStart:vt,parallaxEnd:Bt,padding:P,height:Ae?Ve:""}},write({height:m,padding:y}){Ee(this.$el,"paddingBottom",y||""),m!==!1&&Ee(this.$el,"height",m)},events:["resize"]},{read({rows:m,scrollColumns:y,parallaxStart:_,parallaxEnd:P}){return{scrolled:y&&!zy(m)?cm(this.$el,_,P):!1}},write({columns:m,scrolled:y,scrollColumns:_,translates:P}){!y&&!P||m.forEach((G,J)=>G.forEach((re,pe)=>{let[Ae,We]=P&&P[J][pe]||[0,0];y&&(We+=y*_[J]),Ee(re,"transform",`translate(${Ae}px, ${We}px)`)}))},events:["scroll","resize"]}]};function zy(m){return m.flat().some(y=>Ee(y,"position")==="absolute")}function zg(m,y,_){let P=[],G=[],J=Array(m[0].length).fill(0),re=0;for(let pe of m){qt&&(pe=pe.reverse());let Ae=0;for(let We in pe){let{offsetWidth:Ve,offsetHeight:et}=pe[We],vt=_?We:J.indexOf(Math.min(...J));Sf(P,vt,pe[We]),Sf(G,vt,[(vt-We)*Ve*(qt?-1:1),J[vt]-re]),J[vt]+=et+y,Ae=Math.max(Ae,et)}re+=Ae+y}return[P,G]}function Qc(m,y){let _=m.flat().find(P=>$e(P,y));return X(_?Ee(_,"marginTop"):Ee(m[0][0],"paddingLeft"))}function ma(m){let y=[];for(let _ of m)for(let P in _)Sf(y,P,_[P]);return y}function Sf(m,y,_){m[y]||(m[y]=[]),m[y].push(_)}var Ug={args:"target",props:{target:String,row:Boolean},data:{target:"> *",row:!0},computed:{elements:({target:m},y)=>Xr(m,y)},observe:qo({target:({$el:m,elements:y})=>y.reduce((_,P)=>_.concat(P,...P.children),[m])}),events:{name:"loadingdone",el:()=>document.fonts,handler(){this.$emit("resize")}},update:{read(){return{rows:(this.row?Ra(this.elements):[this.elements]).map(Uy)}},write({rows:m}){for(let{heights:y,elements:_}of m)_.forEach((P,G)=>Ee(P,"minHeight",y[G]))},events:["resize"]}};function Uy(m){if(m.length<2)return{heights:[""],elements:m};let y=m.map(Hy),_=Math.max(...y);return{heights:m.map((P,G)=>y[G].toFixed(2)===_.toFixed(2)?"":_),elements:m}}function Hy(m){let y=De(m.style,["display","minHeight"]);He(m)||Ee(m,"display","block","important"),Ee(m,"minHeight","");let _=Pt(m).height-su(m,"height","content-box");return Ee(m,y),_}var $y={args:"target",props:{target:String},data:{target:""},computed:{target:{get:({target:m},y)=>Pn(m,y),observe:({target:m})=>m}},observe:qo({target:({target:m})=>m}),update:{read(){return this.target?{height:this.target.offsetHeight}:!1},write({height:m}){Ee(this.$el,{minHeight:m})},events:["resize"]}},Hg={props:{expand:Boolean,offsetTop:Boolean,offsetBottom:Boolean,minHeight:Number},data:{expand:!1,offsetTop:!1,offsetBottom:!1,minHeight:0},observe:[Tc({filter:({expand:m})=>m}),qo({target:({$el:m})=>Ju(m)})],update:{read(){if(!He(this.$el))return!1;let m="",y=su(this.$el,"height","content-box"),{body:_,scrollingElement:P}=document,G=ys(this.$el),{height:J}=No(G===_?P:G),re=P===G||_===G;if(m=`calc(${re?"100vh":`${J}px`}`,this.expand){let pe=Pt(G).height-Pt(this.$el).height;m+=` - ${pe}px`}else{if(this.offsetTop)if(re){let pe=this.offsetTop===!0?this.$el:Pn(this.offsetTop,this.$el),{top:Ae}=xr(pe);m+=Ae>0&&Ae{if(!this._connected)return;let y=k(m,this.$el);return this.svgEl&&y!==this.svgEl&&Do(this.svgEl),Y.call(this,y,m),this.svgEl=y},le)},disconnected(){this.svg.then(m=>{this._connected||(ae(this.$el)&&(this.$el.hidden=!1),Do(m),this.svgEl=null)}),this.svg=null},methods:{async getSvg(){}}};function k(m,y){if(ae(y)||Zr(y,"canvas")){y.hidden=!0;let P=y.nextElementSibling;return z(m,P)?P:vc(y,m)}let _=y.lastElementChild;return z(m,_)?_:bn(y,m)}function z(m,y){return Zr(m,"svg")&&Zr(y,"svg")&&m.innerHTML===y.innerHTML}function Y(m,y){let _=["width","height"],P=_.map(J=>this[J]);P.some(J=>J)||(P=_.map(J=>rt(y,J)));let G=rt(y,"viewBox");G&&!P.some(J=>J)&&(P=G.split(" ").slice(2)),P.forEach((J,re)=>rt(m,_[re],X(J)*this.ratio||null))}var K={mixins:[A],args:"src",props:{src:String,icon:String,attributes:"list",strokeAnimation:Boolean},data:{strokeAnimation:!1},observe:[ws({async handler(){let m=await this.svg;m&&Q.call(this,m)},options:{attributes:!0,attributeFilter:["id","class","style"]}})],async connected(){f(this.src,"#")&&([this.src,this.icon]=this.src.split("#"));let m=await this.svg;m&&(Q.call(this,m),this.strokeAnimation&&Ke(m))},methods:{async getSvg(){return Zr(this.$el,"img")&&!this.$el.complete&&this.$el.loading==="lazy"&&await new Promise(m=>Er(this.$el,"load",m)),Ne(await me(this.src),this.icon)||Promise.reject("SVG not found.")}}};function Q(m){let{$el:y}=this;Oe(m,rt(y,"class"),"uk-svg");for(let _=0;_m?a(m,"data:")?decodeURIComponent(m.split(",")[1]):(await fetch(m)).text():Promise.reject());function Ne(m,y){return y&&f(m,"/g,Be=fe(function(m){let y={};qe.lastIndex=0;let _;for(;_=qe.exec(m);)y[_[3]]=``;return y});function Ke(m){let y=Cg(m);y&&Ee(m,"--uk-animation-stroke",y)}function nt(m){let y=document.createElement("template");return y.innerHTML=m,y.content.firstElementChild}let ft={spinner:b,totop:w,marker:Vy,"close-icon":Wy,"close-large":vN,"drop-parent-icon":$g,"nav-parent-icon":Gy,"nav-parent-icon-large":Lr,"navbar-parent-icon":xN,"navbar-toggle-icon":Nf,"overlay-icon":yN,"pagination-next":qm,"pagination-previous":wN,"search-icon":mn,"search-medium":DN,"search-large":bN,"search-toggle-icon":mn,"slidenav-next":zm,"slidenav-next-large":SN,"slidenav-previous":d,"slidenav-previous-large":c},pt={install:ii,mixins:[A],args:"icon",props:{icon:String},isIcon:!0,beforeConnect(){Oe(this.$el,"uk-icon")},methods:{async getSvg(){let m=Fn(this.icon);if(!m)throw"Icon not found.";return m}}},gt={args:!1,extends:pt,data:m=>({icon:i(m.constructor.options.name)}),beforeConnect(){Oe(this.$el,this.$options.id)}},dt={extends:gt,beforeConnect(){let m=this.$props.icon;this.icon=this.$el.closest(".uk-nav-primary")?`${m}-large`:m}},Ct={extends:gt,mixins:[Dm],i18n:{toggle:"Open Search",submit:"Submit Search"},beforeConnect(){let m=$e(this.$el,"uk-search-toggle")||$e(this.$el,"uk-navbar-toggle");if(this.icon=m?"search-toggle-icon":$e(this.$el,"uk-search-icon")&&this.$el.closest(".uk-search-large")?"search-large":this.$el.closest(".uk-search-medium")?"search-medium":this.$props.icon,!At(this.$el,"aria-label"))if(m){let y=this.t("toggle");rt(this.$el,"aria-label",y)}else{let y=this.$el.closest("a,button");if(y){let _=this.t("submit");rt(y,"aria-label",_)}}}},Vt={extends:gt,beforeConnect(){rt(this.$el,"role","status")},methods:{async getSvg(){let m=await pt.methods.getSvg.call(this);return this.ratio!==1&&Ee(cr("circle",m),"strokeWidth",1/this.ratio),m}}},Lt={extends:gt,mixins:[Dm],beforeConnect(){let m=this.$el.closest("a,button");rt(m,"role",this.role!==null&&Zr(m,"a")?"button":this.role);let y=this.t("label");y&&!At(m,"aria-label")&&rt(m,"aria-label",y)}},lr={extends:Lt,beforeConnect(){Oe(this.$el,"uk-slidenav");let m=this.$props.icon;this.icon=$e(this.$el,"uk-slidenav-large")?`${m}-large`:m}},Wr={extends:Lt,i18n:{label:"Open menu"}},Qn={extends:Lt,i18n:{label:"Close"},beforeConnect(){this.icon=`close-${$e(this.$el,"uk-close-large")?"large":"icon"}`}},ln={extends:Lt,i18n:{label:"Open"}},no={extends:Lt,i18n:{label:"Back to top"}},Wi={extends:Lt,i18n:{label:"Next page"},data:{role:null}},On={extends:Lt,i18n:{label:"Previous page"},data:{role:null}},ni={};function ii(m){m.icon.add=(y,_)=>{let P=F(y)?{[y]:_}:y;de(P,(G,J)=>{ft[J]=G,delete ni[J]}),m._initialized&&Po(document.body,G=>de(m.getComponents(G),J=>{J.$options.isIcon&&J.icon in P&&J.$reset()}))}}let Un={twitter:"x"};function Fn(m){return m=Un[m]||m,ft[m]?(ni[m]||(ni[m]=nt(ft[dn(m)]||ft[m])),ni[m].cloneNode(!0)):null}function dn(m){return qt?ce(ce(m,"left","right"),"previous","next"):m}var Vi={args:"dataSrc",props:{dataSrc:String,sources:String,margin:String,target:String,loading:String},data:{dataSrc:"",sources:!1,margin:"50%",target:!1,loading:"lazy"},connected(){this.loading!=="lazy"?this.load():da(this.$el)&&(this.$el.loading="lazy",gu(this.$el))},disconnected(){this.img&&(this.img.onload=""),delete this.img},observe:zo({handler(m,y){this.load(),y.disconnect()},options:({margin:m})=>({rootMargin:m}),filter:({loading:m})=>m==="lazy",target:({$el:m,$props:y})=>y.target?[m,...na(y.target,m)]:m}),methods:{load(){if(this.img)return this.img;let m=da(this.$el)?this.$el:Ua(this.$el,this.dataSrc,this.sources);return zt(m,"loading"),gu(this.$el,m.currentSrc),this.img=m}}};function gu(m,y){if(da(m)){let _=$t(m);(Zr(_,"picture")?wr(_):[m]).forEach(G=>oi(G,G))}else y&&!f(m.style.backgroundImage,y)&&(Ee(m,"backgroundImage",`url(${Ba(y)})`),It(m,bo("load",!1)))}let vu=["data-src","data-srcset","sizes"];function oi(m,y){for(let _ of vu){let P=mt(m,_);P&&rt(y,_.replace(/^(data-)+/,""),P)}}function Ua(m,y,_){let P=new Image;return jn(P,_),oi(m,P),P.onload=()=>{gu(m,P.currentSrc)},rt(P,"src",y),P}function jn(m,y){if(y=Wg(y),y.length){let _=Zu("");for(let P of y){let G=Zu("");rt(G,P),bn(_,G)}bn(_,m)}}function Wg(m){if(!m)return[];if(a(m,"["))try{m=JSON.parse(m)}catch{m=[]}else m=el(m);return h(m)||(m=[m]),m.filter(y=>!L(y))}function da(m){return Zr(m,"img")}var vl={props:{target:String,selActive:String},data:{target:!1,selActive:!1},computed:{target:({target:m},y)=>m?Xr(m,y):y},observe:[zo({handler(m){this.isIntersecting=m.some(({isIntersecting:y})=>y),this.$emit()},target:({target:m})=>m,args:{intersecting:!1}}),ws({target:({target:m})=>m,options:{attributes:!0,attributeFilter:["class"],attributeOldValue:!0}}),{target:({target:m})=>m,observe:(m,y)=>{let _=Sc([...H(m),document.documentElement],y),P=[Yt(document,"scroll itemshown itemhidden",y,{passive:!0,capture:!0}),Yt(document,"show hide transitionstart",G=>(y(),_.observe(G.target))),Yt(document,"shown hidden transitionend transitioncancel",G=>(y(),_.unobserve(G.target)))];return{observe:_.observe.bind(_),unobserve:_.unobserve.bind(_),disconnect(){_.disconnect(),P.map(G=>G())}}},handler(){this.$emit()}}],update:{read(){if(!this.isIntersecting)return!1;for(let m of H(this.target)){let y=!this.selActive||Kt(m,this.selActive)?xl(m):"";y!==!1&&Je(m,"uk-light uk-dark",y)}}}};function xl(m){let y=Pt(m),_=Pt(window);if(!oe(y,_))return!1;let{left:P,top:G,height:J,width:re}=y,pe;for(let Ae of[.25,.5,.75]){let We=m.ownerDocument.elementsFromPoint(Math.max(0,Math.min(P+re*Ae,_.width-1)),Math.max(0,Math.min(G+J/2,_.height-1)));for(let Ve of We){if(m.contains(Ve)||!Ti(Ve)||Ve.closest('[class*="-leave"]')&&We.some(vt=>Ve!==vt&&Kt(vt,'[class*="-enter"]')))continue;let et=Ee(Ve,"--uk-inverse");if(et){if(et===pe)return`uk-${et}`;pe=et;break}}}return pe?`uk-${pe}`:""}function Ti(m){if(Ee(m,"visibility")!=="visible")return!1;for(;m;){if(Ee(m,"opacity")==="0")return!1;m=$t(m)}return!0}var Ef={mixins:[Hi,Uc],props:{fill:String},data:{fill:"",clsWrapper:"uk-leader-fill",clsHide:"uk-leader-hide",attrFill:"data-fill"},computed:{fill:({fill:m},y)=>m||Ee(y,"--uk-leader-fill-content")},connected(){[this.wrapper]=om(this.$el,``)},disconnected(){So(this.wrapper.childNodes)},observe:qo(),update:{read(){return{width:Math.trunc(this.$el.offsetWidth/2),fill:this.fill,hide:!this.matchMedia}},write({width:m,fill:y,hide:_}){it(this.wrapper,this.clsHide,_),rt(this.wrapper,this.attrFill,new Array(m).join(y))},events:["resize"]}},Vg={install:Ete,mixins:[al],data:{clsPage:"uk-modal-page",selPanel:".uk-modal-dialog",selClose:'[class*="uk-modal-close"]'},events:[{name:"fullscreenchange webkitendfullscreen",capture:!0,handler(m){Zr(m.target,"video")&&this.isToggled()&&!document.fullscreenElement&&this.hide()}},{name:"show",self:!0,handler(){$e(this.panel,"uk-margin-auto-vertical")?Oe(this.$el,"uk-flex"):Ee(this.$el,"display","block"),zi(this.$el)}},{name:"hidden",self:!0,handler(){Ee(this.$el,"display",""),Me(this.$el,"uk-flex")}}]};function Ete({modal:m}){m.dialog=function(_,P){let G=m(cr(`
    ${_}
    `),{stack:!0,role:"alertdialog",...P});return G.show(),Yt(G.$el,"hidden",async()=>{await Promise.resolve(),G.$destroy(!0)},{self:!0}),G},m.alert=function(_,P){return y(({i18n:G})=>`
    ${F(_)?_:vs(_)}
    `,P)},m.confirm=function(_,P){return y(({i18n:G})=>`
    ${F(_)?_:vs(_)}
    `,P,()=>Promise.reject())},m.prompt=function(_,P,G){let J=y(({i18n:Ae})=>`
    `,G,()=>null,()=>pe.value),{$el:re}=J.dialog,pe=cr("input",re);return pe.value=P||"",Yt(re,"show",()=>pe.select()),J},m.i18n={ok:"Ok",cancel:"Cancel"};function y(_,P,G=le,J=le){P={bgClose:!1,escClose:!0,...P,i18n:{...m.i18n,...P?.i18n}};let re=m.dialog(_(P),P);return x(new Promise(pe=>{let Ae=Yt(re.$el,"hide",()=>pe(G()));Yt(re.$el,"submit","form",We=>{We.preventDefault(),pe(J(re)),Ae(),re.hide()})}),{dialog:re})}}var Ate={extends:bf,data:{targets:"> .uk-parent",toggle:"> a",content:"> ul"}};let NN="uk-navbar-transparent";var Cte={extends:Ry,props:{dropbarTransparentMode:Boolean},data:{clsDrop:"uk-navbar-dropdown",selNavItem:".uk-navbar-nav > li > a,a.uk-navbar-item,button.uk-navbar-item,.uk-navbar-item a,.uk-navbar-item button,.uk-navbar-toggle",dropbarTransparentMode:!1},computed:{navbarContainer:(m,y)=>y.closest(".uk-navbar-container")},watch:{items(){let m=$e(this.$el,"uk-navbar-justify"),y=Xr(".uk-navbar-nav, .uk-navbar-left, .uk-navbar-right",this.$el);for(let _ of y){let P=m?Xr(".uk-navbar-nav > li > a, .uk-navbar-item, .uk-navbar-toggle",_).length:"";Ee(_,"flexGrow",P)}}},events:[{name:"show",el:({dropContainer:m})=>m,handler({target:m}){this.getTransparentMode(m)==="remove"&&$e(this.navbarContainer,NN)&&(Me(this.navbarContainer,NN),this._transparent=!0)}},{name:"hide",el:({dropContainer:m})=>m,async handler(){await Mte(),!this.getActive()&&this._transparent&&(Oe(this.navbarContainer,NN),this._transparent=null)}}],methods:{getTransparentMode(m){if(!this.navbarContainer)return;if(this.dropbar&&this.isDropbarDrop(m))return this.dropbarTransparentMode;let y=this.getDropdown(m);if(y&&$e(m,"uk-dropbar"))return y.inset?"behind":"remove"},getDropbarOffset(m){let{top:y,height:_}=xr(this.navbarContainer);return y+(this.dropbarTransparentMode==="behind"?0:_+m)}}};function Mte(){return new Promise(m=>setTimeout(m))}var Tte={mixins:[al],args:"mode",props:{mode:String,flip:Boolean,overlay:Boolean,swiping:Boolean},data:{mode:"slide",flip:!1,overlay:!1,clsPage:"uk-offcanvas-page",clsContainer:"uk-offcanvas-container",selPanel:".uk-offcanvas-bar",clsFlip:"uk-offcanvas-flip",clsContainerAnimation:"uk-offcanvas-container-animation",clsSidebarAnimation:"uk-offcanvas-bar-animation",clsMode:"uk-offcanvas",clsOverlay:"uk-offcanvas-overlay",selClose:".uk-offcanvas-close",container:!1,swiping:!0},computed:{clsFlip:({flip:m,clsFlip:y})=>m?y:"",clsOverlay:({overlay:m,clsOverlay:y})=>m?y:"",clsMode:({mode:m,clsMode:y})=>`${y}-${m}`,clsSidebarAnimation:({mode:m,clsSidebarAnimation:y})=>m==="none"||m==="reveal"?"":y,clsContainerAnimation:({mode:m,clsContainerAnimation:y})=>m!=="push"&&m!=="reveal"?"":y,transitionElement({mode:m}){return m==="reveal"?$t(this.panel):this.panel}},observe:lg({filter:({swiping:m})=>m}),update:{read(){this.isToggled()&&!He(this.$el)&&this.hide()},events:["resize"]},events:[{name:"touchmove",self:!0,passive:!1,filter:({overlay:m})=>m,handler(m){m.cancelable&&m.preventDefault()}},{name:"show",self:!0,handler(){this.mode==="reveal"&&!$e($t(this.panel),this.clsMode)&&Oe(im(this.panel,"
    "),this.clsMode);let{body:m,scrollingElement:y}=document;Oe(m,this.clsContainer,this.clsFlip),Ee(m,"touchAction","pan-y pinch-zoom"),Ee(this.$el,"display","block"),Ee(this.panel,"maxWidth",y.clientWidth),Oe(this.$el,this.clsOverlay),Oe(this.panel,this.clsSidebarAnimation,this.mode==="reveal"?"":this.clsMode),zi(m),Oe(m,this.clsContainerAnimation),this.clsContainerAnimation&&_te()}},{name:"hide",self:!0,handler(){Me(document.body,this.clsContainerAnimation),Ee(document.body,"touchAction","")}},{name:"hidden",self:!0,handler(){this.clsContainerAnimation&&Ote(),this.mode==="reveal"&&$e($t(this.panel),this.clsMode)&&So(this.panel),Me(this.panel,this.clsSidebarAnimation,this.clsMode),Me(this.$el,this.clsOverlay),Ee(this.$el,"display",""),Ee(this.panel,"maxWidth",""),Me(document.body,this.clsContainer,this.clsFlip)}},{name:"swipeLeft swipeRight",handler(m){this.isToggled()&&u(m.type,"Left")^this.flip&&this.hide()}}]};function _te(){OO().content+=",user-scalable=0"}function Ote(){let m=OO();m.content=m.content.replace(/,user-scalable=0$/,"")}function OO(){return cr('meta[name="viewport"]',document.head)||bn(document.head,'')}var Fte={mixins:[Hi],props:{selContainer:String,selContent:String,minHeight:Number},data:{selContainer:".uk-modal",selContent:".uk-modal-dialog",minHeight:150},computed:{container:({selContainer:m},y)=>y.closest(m),content:({selContent:m},y)=>y.closest(m)},observe:qo({target:({container:m,content:y})=>[m,y]}),update:{read(){return!this.content||!this.container||!He(this.$el)?!1:{max:Math.max(this.minHeight,zi(this.container)-(Pt(this.content).height-zi(this.$el)))}},write({max:m}){Ee(this.$el,{minHeight:this.minHeight,maxHeight:m})},events:["resize"]}},Ite={props:["width","height"],connected(){Oe(this.$el,"uk-responsive-width"),Ee(this.$el,"aspectRatio",`${this.width}/${this.height}`)}},kte={props:{offset:Number},data:{offset:0},connected(){Lte(this)},disconnected(){Bte(this)},methods:{async scrollTo(m){m=m&&cr(m)||document.body,It(this.$el,"beforescroll",[this,m])&&(await ig(m,{offset:this.offset}),It(this.$el,"scrolled",[this,m]))}}};let Gg=new Set;function Lte(m){Gg.size||Yt(document,"click",FO),Gg.add(m)}function Bte(m){Gg.delete(m),Gg.size||qi(document,"click",FO)}function FO(m){if(!m.defaultPrevented)for(let y of Gg)y.$el.contains(m.target)&&ka(y.$el)&&(m.preventDefault(),window.location.href!==y.$el.href&&window.history.pushState({},"",y.$el.href),y.scrollTo(La(y.$el)))}let EN="uk-scrollspy-inview";var Pte={args:"cls",props:{cls:String,target:String,hidden:Boolean,margin:String,repeat:Boolean,delay:Number},data:()=>({cls:"",target:!1,hidden:!0,margin:"-1px",repeat:!1,delay:0}),computed:{elements:({target:m},y)=>m?Xr(m,y):[y]},watch:{elements(m){this.hidden&&Ee(li(m,`:not(.${EN})`),"opacity",0)}},connected(){this.elementData=new Map},disconnected(){for(let[m,y]of this.elementData.entries())Me(m,EN,y?.cls||"");delete this.elementData},observe:zo({target:({elements:m})=>m,handler(m){let y=this.elementData;for(let{target:_,isIntersecting:P}of m){y.has(_)||y.set(_,{cls:mt(_,"uk-scrollspy-class")||this.cls});let G=y.get(_);!this.repeat&&G.show||(G.show=P)}this.$emit()},options:({margin:m})=>({rootMargin:m}),args:{intersecting:!1}}),update:[{write(m){for(let[y,_]of this.elementData.entries())_.show&&!_.inview&&!_.queued?(_.queued=!0,m.promise=(m.promise||Promise.resolve()).then(()=>new Promise(P=>setTimeout(P,this.delay))).then(()=>{this.toggle(y,!0),setTimeout(()=>{_.queued=!1,this.$emit()},300)})):!_.show&&_.inview&&!_.queued&&this.repeat&&this.toggle(y,!1)}}],methods:{toggle(m,y){var _,P;let G=(_=this.elementData)==null?void 0:_.get(m);if(!G)return;(P=G.off)==null||P.call(G),Ee(m,"opacity",!y&&this.hidden?0:""),it(m,EN,y),it(m,G.cls);let J;if(J=G.cls.match(/\buk-animation-[\w-]+/g)){let re=()=>Me(m,J);y?G.off=Er(m,"animationcancel animationend",re,{self:!0}):re()}It(m,y?"inview":"outview"),G.inview=y}}},Rte={props:{cls:String,closest:Boolean,scroll:Boolean,target:String,offset:Number},data:{cls:"uk-active",closest:!1,scroll:!1,target:'a[href]:not([role="button"])',offset:0},computed:{links:({target:m},y)=>Xr(m,y).filter(_=>ka(_)),elements({closest:m}){return this.links.map(y=>y.closest(m||"*"))}},watch:{links(m){this.scroll&&this.$create("scroll",m,{offset:this.offset})}},observe:[zo(),tl()],update:[{read(){let m=this.links.map(Ae=>La(Ae)||Ae.ownerDocument),{length:y}=m;if(!y||!He(this.$el))return!1;let _=ys(m,!0),{scrollTop:P,scrollHeight:G}=_,J=No(_),re=G-J.height,pe=!1;if(P>=re)pe=y-1;else{let Ae=this.offset+Pt(Qu()).height+J.height*.1;for(let We=0;We0);We++)pe=+We}return{active:pe}},write({active:m}){let y=m!==!1&&!$e(this.elements[m],this.cls);this.links.forEach(_=>_.blur());for(let _=0;_m&&cr(m,y)||y},connected(){this.start=IO(this.start||this.top),this.end=IO(this.end||this.bottom),this.placeholder=cr("+ .uk-sticky-placeholder",this.$el)||cr('
    '),this.isFixed=!1,this.setActive(!1)},beforeDisconnect(){this.isFixed&&(this.hide(),Me(this.target,this.clsInactive)),kO(this.$el),Do(this.placeholder),this.placeholder=null},observe:[Tc(),tl({target:()=>document.scrollingElement}),qo({target:({$el:m})=>[m,Yy(m),document.scrollingElement],handler(m){this.$emit(this._data.resized&&m.some(({target:y})=>y===Yy(this.$el))?"update":"resize"),this._data.resized=!0}})],events:[{name:"load hashchange popstate",el:()=>window,filter:({targetOffset:m})=>m!==!1,handler(){let{scrollingElement:m}=document;!location.hash||m.scrollTop===0||setTimeout(()=>{let y=xr(cr(location.hash)),_=xr(this.$el);this.isFixed&&oe(y,_)&&(m.scrollTop=Math.ceil(y.top-_.height-Kn(this.targetOffset,"height",this.placeholder)-Kn(this.offset,"height",this.placeholder)))})}}],update:[{read({height:m,width:y,margin:_,sticky:P},G){if(this.inactive=!this.matchMedia||!He(this.$el)||!this.$el.offsetHeight,this.inactive)return;let J=zi(window),re=Math.max(0,document.scrollingElement.scrollHeight-J);if(!re){this.inactive=!0;return}let pe=this.isFixed&&G.has("update");pe&&(MN(this.target),this.hide()),this.active||({height:m,width:y}=Pt(this.$el),_=Ee(this.$el,"margin")),pe&&this.show();let Ae=Kn("100vh","height"),We=this.position;this.overflowFlip&&m>Ae&&(We=We==="top"?"bottom":"top");let Ve=this.isFixed?this.placeholder:this.$el,et=Kn(this.offset,"height",P?this.$el:Ve);We==="bottom"&&(mxr(vt).top+(Ae?Math.min(pe,re):pe),offsetParentTop:xr(vt.offsetParent).top,overflowScroll:se(P+se(Ve,G,J)-se(m,G,J),0,_)}},write(m,y){let _=y.has("scroll"),{initTimestamp:P=0,dir:G,prevDir:J,scroll:re,prevScroll:pe=0,top:Ae,start:We,below:Ve}=m;if(re<0||re===pe&&_||this.showOnUp&&!_&&!this.isFixed)return;let et=Date.now();if((et-P>300||G!==J)&&(m.initScroll=re,m.initTimestamp=et),!(this.showOnUp&&!this.isFixed&&Math.abs(m.initScroll-re)<=30&&Math.abs(pe-re)<=10))if(this.inactive||rere&&(gs.cancel(this.$el),this.hide());return}if(this.animation&&Ve){if($e(this.$el,"uk-animation-leave"))return;gs.out(this.$el,this.animation).then(()=>this.hide(),le)}else this.hide()}else this.isFixed?this.update():this.animation&&Ve?(this.show(),gs.in(this.$el,this.animation).catch(le)):(MN(this.target),this.show())},events:["resize","resizeViewport","scroll"]}],methods:{show(){this.isFixed=!0,this.update(),this.placeholder.hidden=!1},hide(){let{offset:m,sticky:y}=this._data;this.setActive(!1),Me(this.$el,this.clsFixed,this.clsBelow),y?Ee(this.$el,"top",m):Ee(this.$el,{position:"",top:"",width:"",marginTop:""}),this.placeholder.hidden=!0,this.isFixed=!1},update(){let{width:m,scroll:y=0,overflow:_,overflowScroll:P=0,start:G,end:J,offset:re,offsetParentTop:pe,sticky:Ae,below:We}=this._data,Ve=G!==0||y>G;if(!Ae){let et="fixed";y>J&&(re+=J-pe+P-_,et="absolute"),Ee(this.$el,{position:et,width:m,marginTop:0},"important")}Ee(this.$el,"top",re-P),this.setActive(Ve),it(this.$el,this.clsBelow,We),Oe(this.$el,this.clsFixed)},setActive(m){let y=this.active;this.active=m,m?(Je(this.target,this.clsInactive,this.clsActive),y!==m&&It(this.$el,"active")):(Je(this.target,this.clsActive,this.clsInactive),y!==m&&(MN(this.target),It(this.$el,"inactive")))}}};function AN(m,y,_,P){if(!m)return 0;if(B(m)||F(m)&&m.match(/^-?\d/))return _+Kn(m,"height",y,!0);{let G=m===!0?Yy(y):Pn(m,y);return xr(G).bottom-(P&&G?.contains(y)?X(Ee(G,"paddingBottom"))+X(Ee(G,"borderBottomWidth")):0)}}function IO(m){return m==="true"?!0:m==="false"?!1:m}function kO(m){Ee(m,{position:"",top:"",marginTop:"",width:""})}let CN="uk-transition-disable";function MN(m){$e(m,CN)||(Oe(m,CN),requestAnimationFrame(()=>Me(m,CN)))}function Yy(m){for(;m=$t(m);)if(He(m))return m}let TN=".uk-disabled *, .uk-disabled, [disabled]";var LO={mixins:[fa],args:"connect",props:{connect:String,toggle:String,itemNav:String,active:Number,followFocus:Boolean,swiping:Boolean},data:{connect:"~.uk-switcher",toggle:"> * > :first-child",itemNav:!1,active:0,cls:"uk-active",attrItem:"uk-switcher-item",selVertical:".uk-nav",followFocus:!1,swiping:!0},computed:{connects:{get:({connect:m},y)=>na(m,y),observe:({connect:m})=>m},connectChildren(){return this.connects.map(m=>wr(m)).flat()},toggles:({toggle:m},y)=>Xr(m,y),children(m,y){return wr(y).filter(_=>this.toggles.some(P=>_.contains(P)))}},watch:{connects(m){this.swiping&&Ee(m,"touchAction","pan-y pinch-zoom"),this.$emit()},connectChildren(){let m=Math.max(0,this.index());for(let y of this.connects)wr(y).forEach((_,P)=>it(_,this.cls,P===m));this.$emit()},toggles(m){this.$emit();let y=this.index();this.show(~y?y:m[this.active]||m[0])}},connected(){rt(this.$el,"role","tablist")},observe:[bs({targets:({connectChildren:m})=>m}),lg({target:({connects:m})=>m,filter:({swiping:m})=>m})],events:[{name:"click keydown",delegate:({toggle:m})=>m,handler(m){!Kt(m.current,TN)&&(m.type==="click"||m.keyCode===_r.SPACE)&&(m.preventDefault(),this.show(m.current))}},{name:"keydown",delegate:({toggle:m})=>m,handler(m){let{current:y,keyCode:_}=m,P=Kt(this.$el,this.selVertical),G=_===_r.HOME?0:_===_r.END?"last":_===_r.LEFT&&!P||_===_r.UP&&P?"previous":_===_r.RIGHT&&!P||_===_r.DOWN&&P?"next":-1;if(~G){m.preventDefault();let J=this.toggles.filter(pe=>!Kt(pe,TN)),re=J[ie(G,J,J.indexOf(y))];re.focus(),this.followFocus&&this.show(re)}}},{name:"click",el:({$el:m,connects:y,itemNav:_})=>y.concat(_?na(_,m):[]),delegate:({attrItem:m})=>`[${m}],[data-${m}]`,handler(m){m.target.closest("a,button")&&(m.preventDefault(),this.show(mt(m.current,this.attrItem)))}},{name:"swipeRight swipeLeft",filter:({swiping:m})=>m,el:({connects:m})=>m,handler({type:m}){this.show(u(m,"Left")?"next":"previous")}}],update(){var m;for(let y of this.connects)Zr(y,"ul")&&rt(y,"role","presentation");rt(wr(this.$el),"role","presentation");for(let y in this.toggles){let _=this.toggles[y],P=(m=this.connects[0])==null?void 0:m.children[y];rt(_,"role","tab"),P&&(_.id=cl(this,_),P.id=cl(this,P),rt(_,"aria-controls",P.id),rt(P,{role:"tabpanel","aria-labelledby":_.id}))}rt(this.$el,"aria-orientation",Kt(this.$el,this.selVertical)?"vertical":null)},methods:{index(){return p(this.children,m=>$e(m,this.cls))},show(m){let y=this.toggles.filter(re=>!Kt(re,TN)),_=this.index(),P=ie(!M(m)||f(y,m)?m:0,y,ie(this.toggles[_],y)),G=ie(y[P],this.toggles);this.children.forEach((re,pe)=>{it(re,this.cls,G===pe),rt(this.toggles[pe],{"aria-selected":G===pe,tabindex:G===pe?null:-1})});let J=_>=0&&_!==P;this.connects.forEach(async({children:re})=>{let pe=g(re).filter((Ae,We)=>We!==G&&$e(Ae,this.cls));await this.toggleElement(pe,!1,J)&&await this.toggleElement(re[G],!0,J)})}}},zte={mixins:[Hi],extends:LO,props:{media:Boolean},data:{media:960,attrItem:"uk-tab-item",selVertical:".uk-tab-left,.uk-tab-right"},connected(){let m=$e(this.$el,"uk-tab-left")?"uk-tab-left":$e(this.$el,"uk-tab-right")?"uk-tab-right":!1;m&&this.$create("toggle",this.$el,{cls:m,mode:"media",media:this.media})}};let Ute=32;var Hte={mixins:[Uc,fa],args:"target",props:{href:String,target:null,mode:"list",queued:Boolean},data:{href:!1,target:!1,mode:"click",queued:!0},computed:{target:{get:({target:m},y)=>(m=na(m||y.hash,y),m.length?m:[y]),observe:({target:m})=>m}},connected(){f(this.mode,"media")||($r(this.$el)||rt(this.$el,"tabindex","0"),!this.cls&&Zr(this.$el,"a")&&rt(this.$el,"role","button"))},observe:bs({targets:({target:m})=>m}),events:[{name:ge,filter:({mode:m})=>f(m,"hover"),handler(m){this._preventClick=null,!(!Xe(m)||O(this._showState)||this.$el.disabled)&&(It(this.$el,"focus"),Er(document,ge,()=>It(this.$el,"blur"),!0,y=>!this.$el.contains(y.target)),f(this.mode,"click")&&(this._preventClick=!0))}},{name:`mouseenter mouseleave ${Ue} ${ze} focus blur`,filter:({mode:m})=>f(m,"hover"),handler(m){if(Xe(m)||this.$el.disabled)return;let y=f(["mouseenter",Ue,"focus"],m.type),_=this.isToggled(this.target);if(!y&&(!O(this._showState)||m.type!=="blur"&&Kt(this.$el,":focus")||m.type==="blur"&&Kt(this.$el,":hover"))){_===this._showState&&(this._showState=null);return}y&&O(this._showState)&&_!==this._showState||(this._showState=y?_:null,this.toggle(`toggle${y?"show":"hide"}`))}},{name:"keydown",filter:({$el:m,mode:y})=>f(y,"click")&&!Zr(m,"input"),handler(m){m.keyCode===Ute&&(m.preventDefault(),this.$el.click())}},{name:"click",filter:({mode:m})=>["click","hover"].some(y=>f(m,y)),handler(m){let y;(this._preventClick||m.target.closest('a[href="#"], a[href=""]')||(y=m.target.closest("a[href]"))&&(!this.isToggled(this.target)||y.hash&&Kt(this.target,y.hash)))&&m.preventDefault(),!this._preventClick&&f(this.mode,"click")&&this.toggle()}},{name:"mediachange",filter:({mode:m})=>f(m,"media"),el:({target:m})=>m,handler(m,y){y.matches^this.isToggled(this.target)&&this.toggle()}}],methods:{async toggle(m){if(!It(this.target,m||"toggle",[this]))return;if(At(this.$el,"aria-expanded")&&rt(this.$el,"aria-expanded",!this.isToggled(this.target)),!this.queued)return this.toggleElement(this.target);let y=this.target.filter(P=>$e(P,this.clsLeave));if(y.length){for(let P of this.target){let G=f(y,P);this.toggleElement(P,G,G)}return}let _=this.target.filter(this.isToggled);await this.toggleElement(_,!1)&&await this.toggleElement(this.target.filter(P=>!f(_,P)),!0)}}},$te=Object.freeze({__proto__:null,Accordion:bf,Alert:pN,Close:Qn,Cover:ky,Drop:Pg,DropParentIcon:gt,Dropdown:Pg,Dropnav:Ry,FormCustom:gN,Grid:rn,HeightMatch:Ug,HeightPlaceholder:$y,HeightViewport:Hg,Icon:pt,Img:Vi,Inverse:vl,Leader:Ef,Margin:Ci,Marker:ln,Modal:Vg,Nav:Ate,NavParentIcon:dt,Navbar:Cte,NavbarParentIcon:gt,NavbarToggleIcon:Wr,Offcanvas:Tte,OverflowAuto:Fte,OverlayIcon:gt,PaginationNext:Wi,PaginationPrevious:On,Responsive:Ite,Scroll:kte,Scrollspy:Pte,ScrollspyNav:Rte,SearchIcon:Ct,SlidenavNext:lr,SlidenavPrevious:lr,Spinner:Vt,Sticky:qte,Svg:K,Switcher:LO,Tab:zte,Toggle:Hte,Totop:no,Video:Iy});return de($te,(m,y)=>Co.component(y,m)),kg(Co),de(uN,(m,y)=>Co.component(y,m)),Co})});var eE=st((jN,GO)=>{(function(e,t){var r=t(e);if(typeof define=="function"&&define.amd)define("DeepDiff",function(){return r});else if(typeof jN=="object"||typeof navigator=="object"&&navigator.product.match(/ReactNative/i))GO.exports=r;else{var n=e.DeepDiff;r.noConflict=function(){return e.DeepDiff===r&&(e.DeepDiff=n),r},e.DeepDiff=r}})(jN,function(e){var t=["N","E","A","D"];function r(N,O){N.super_=O,N.prototype=Object.create(O.prototype,{constructor:{value:N,enumerable:!1,writable:!0,configurable:!0}})}function n(N,O){Object.defineProperty(this,"kind",{value:N,enumerable:!0}),O&&O.length&&Object.defineProperty(this,"path",{value:O,enumerable:!0})}function i(N,O,F){i.super_.call(this,"E",N),Object.defineProperty(this,"lhs",{value:O,enumerable:!0}),Object.defineProperty(this,"rhs",{value:F,enumerable:!0})}r(i,n);function o(N,O){o.super_.call(this,"N",N),Object.defineProperty(this,"rhs",{value:O,enumerable:!0})}r(o,n);function l(N,O){l.super_.call(this,"D",N),Object.defineProperty(this,"lhs",{value:O,enumerable:!0})}r(l,n);function s(N,O,F){s.super_.call(this,"A",N),Object.defineProperty(this,"index",{value:O,enumerable:!0}),Object.defineProperty(this,"item",{value:F,enumerable:!0})}r(s,n);function a(N,O,F){var I=N.slice((F||O)+1||N.length);return N.length=O<0?N.length+O:O,N.push.apply(N,I),N}function u(N){var O=typeof N;return O!=="object"?O:N===Math?"math":N===null?"null":Array.isArray(N)?"array":Object.prototype.toString.call(N)==="[object Date]"?"date":typeof N.toString=="function"&&/^\/.*\//.test(N.toString())?"regexp":"object"}function f(N){var O=0;if(N.length===0)return O;for(var F=0;F0&&q[q.length-1].lhs&&Object.getOwnPropertyDescriptor(q[q.length-1].lhs,L),ne=H!=="undefined"||q&&q.length>0&&q[q.length-1].rhs&&Object.getOwnPropertyDescriptor(q[q.length-1].rhs,L);if(!de&&ne)F.push(new o(V,O));else if(!ne&&de)F.push(new l(V,N));else if(u(N)!==u(O))F.push(new i(V,N,O));else if(u(N)==="date"&&N-O!==0)F.push(new i(V,N,O));else if(U==="object"&&N!==null&&O!==null){for(ee=q.length-1;ee>-1;--ee)if(q[ee].lhs===N){be=!0;break}if(be)N!==O&&F.push(new i(V,N,O));else{if(q.push({lhs:N,rhs:O}),Array.isArray(N)){for(R&&(N.sort(function(De,se){return p(De)-p(se)}),O.sort(function(De,se){return p(De)-p(se)})),ee=O.length-1,Z=N.length-1;ee>Z;)F.push(new s(V,ee,new o(void 0,O[ee--])));for(;Z>ee;)F.push(new s(V,Z,new l(void 0,N[Z--])));for(;ee>=0;--ee)h(N[ee],O[ee],F,I,V,ee,q,R)}else{var ve=Object.keys(N),Te=Object.keys(O);for(ee=0;ee=0?(h(N[ce],O[ce],F,I,V,ce,q,R),Te[be]=null):h(N[ce],void 0,F,I,V,ce,q,R);for(ee=0;ee"u"&&O&&~t.indexOf(O.kind)&&(F=O),N&&F&&F.kind){for(var I=N,B=-1,L=F.path?F.path.length-1:0;++B"u"&&(I[F.path[B]]=typeof F.path[B+1]<"u"&&typeof F.path[B+1]=="number"?[]:{}),I=I[F.path[B]];switch(F.kind){case"A":F.path&&typeof I[F.path[B]]>"u"&&(I[F.path[B]]=[]),D(F.path?I[F.path[B]]:I,F.index,F.item);break;case"D":delete I[F.path[B]];break;case"E":case"N":I[F.path[B]]=F.rhs;break}}}function E(N,O,F){if(F.path&&F.path.length){var I=N[O],B,L=F.path.length-1;for(B=0;B"u"&&(I[F.path[B]]={}),I=I[F.path[B]];switch(F.kind){case"A":E(I[F.path[B]],F.index,F.item);break;case"D":I[F.path[B]]=F.lhs;break;case"E":I[F.path[B]]=F.lhs;break;case"N":delete I[F.path[B]];break}}}function T(N,O,F){if(N&&O){var I=function(B){(!F||F(N,O,B))&&C(N,O,B)};g(N,O,I)}}return Object.defineProperties(v,{diff:{value:v,enumerable:!0},orderIndependentDiff:{value:S,enumerable:!0},observableDiff:{value:g,enumerable:!0},orderIndependentObservableDiff:{value:x,enumerable:!0},orderIndepHash:{value:p,enumerable:!0},applyDiff:{value:T,enumerable:!0},applyChange:{value:C,enumerable:!0},revertChange:{value:M,enumerable:!0},isConflict:{value:function(){return typeof $conflict<"u"},enumerable:!0}}),v.DeepDiff=v,e&&(e.DeepDiff=v),v})});var q1=st((UE,HE)=>{(function(e,t){typeof UE=="object"&&typeof HE<"u"?HE.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self,e["'typed'"]=t())})(UE,function(){"use strict";function e(){return!0}function t(){return!1}function r(){}let n="Argument is not a typed-function.";function i(){function l(xe){return typeof xe=="object"&&xe!==null&&xe.constructor===Object}let s=[{name:"number",test:function(xe){return typeof xe=="number"}},{name:"string",test:function(xe){return typeof xe=="string"}},{name:"boolean",test:function(xe){return typeof xe=="boolean"}},{name:"Function",test:function(xe){return typeof xe=="function"}},{name:"Array",test:Array.isArray},{name:"Date",test:function(xe){return xe instanceof Date}},{name:"RegExp",test:function(xe){return xe instanceof RegExp}},{name:"Object",test:l},{name:"null",test:function(xe){return xe===null}},{name:"undefined",test:function(xe){return xe===void 0}}],a={name:"any",test:e,isAny:!0},u,f,p=0,h={createCount:0};function g(xe){let te=u.get(xe);if(te)return te;let ge='Unknown type "'+xe+'"',_e=xe.toLowerCase(),Re;for(Re of f)if(Re.toLowerCase()===_e){ge+='. Did you mean "'+Re+'" ?';break}throw new TypeError(ge)}function x(xe){let te=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"any",ge=te?g(te).index:f.length,_e=[];for(let Ue=0;Ue{let _e=u.get(ge);return!_e.isAny&&_e.test(xe)});return te.length?te:["any"]}function C(xe){return xe&&typeof xe=="function"&&"_typedFunctionData"in xe}function E(xe,te,ge){if(!C(xe))throw new TypeError(n);let _e=ge&&ge.exact,Re=Array.isArray(te)?te.join(","):te,Ue=B(Re),ze=N(Ue);if(!_e||ze in xe.signatures){let Le=xe._typedFunctionData.signatureMap.get(ze);if(Le)return Le}let je=Ue.length,W;if(_e){W=[];let Le;for(Le in xe.signatures)W.push(xe._typedFunctionData.signatureMap.get(Le))}else W=xe._typedFunctionData.signatures;for(let Le=0;Le!$r.has($t.name)))continue}lt.push(Tt)}}if(W=lt,W.length===0)break}let ae;for(ae of W)if(ae.params.length<=je)return ae;throw new TypeError("Signature not found (signature: "+(xe.name||"unnamed")+"("+N(Ue,", ")+"))")}function M(xe,te,ge){return E(xe,te,ge).implementation}function T(xe,te){let ge=g(te);if(ge.test(xe))return xe;let _e=ge.conversionsTo;if(_e.length===0)throw new Error("There are no conversions to "+te+" defined.");for(let Re=0;Re<_e.length;Re++)if(g(_e[Re].from).test(xe))return _e[Re].convert(xe);throw new Error("Cannot convert "+xe+" to "+te)}function N(xe){let te=arguments.length>1&&arguments[1]!==void 0?arguments[1]:",";return xe.map(ge=>ge.name).join(te)}function O(xe){let te=xe.indexOf("...")===0,_e=(te?xe.length>3?xe.slice(3):"any":xe).split("|").map(je=>g(je.trim())),Re=!1,Ue=te?"...":"";return{types:_e.map(function(je){return Re=je.isAny||Re,Ue+=je.name+"|",{name:je.name,typeIndex:je.index,test:je.test,isAny:je.isAny,conversion:null,conversionIndex:-1}}),name:Ue.slice(0,-1),hasAny:Re,hasConversion:!1,restParam:te}}function F(xe){let te=xe.types.map(ze=>ze.name),ge=ne(te),_e=xe.hasAny,Re=xe.name,Ue=ge.map(function(ze){let je=g(ze.from);return _e=je.isAny||_e,Re+="|"+ze.from,{name:ze.from,typeIndex:je.index,test:je.test,isAny:je.isAny,conversion:ze,conversionIndex:ze.index}});return{types:xe.types.concat(Ue),name:Re,hasAny:_e,hasConversion:Ue.length>0,restParam:xe.restParam}}function I(xe){return xe.typeSet||(xe.typeSet=new Set,xe.types.forEach(te=>xe.typeSet.add(te.name))),xe.typeSet}function B(xe){let te=[];if(typeof xe!="string")throw new TypeError("Signatures must be strings");let ge=xe.trim();if(ge==="")return te;let _e=ge.split(",");for(let Re=0;Re<_e.length;++Re){let Ue=O(_e[Re].trim());if(Ue.restParam&&Re!==_e.length-1)throw new SyntaxError('Unexpected rest parameter "'+_e[Re]+'": only allowed for the last parameter');if(Ue.types.length===0)return null;te.push(Ue)}return te}function L(xe){let te=ie(xe);return te?te.restParam:!1}function q(xe){if(!xe||xe.types.length===0)return e;if(xe.types.length===1)return g(xe.types[0].name).test;if(xe.types.length===2){let te=g(xe.types[0].name).test,ge=g(xe.types[1].name).test;return function(Re){return te(Re)||ge(Re)}}else{let te=xe.types.map(function(ge){return g(ge.name).test});return function(_e){for(let Re=0;Re=Re+1}}else return xe.length===0?function(Ue){return Ue.length===0}:xe.length===1?(ge=q(xe[0]),function(Ue){return ge(Ue[0])&&Ue.length===1}):xe.length===2?(ge=q(xe[0]),_e=q(xe[1]),function(Ue){return ge(Ue[0])&&_e(Ue[1])&&Ue.length===2}):(te=xe.map(q),function(Ue){for(let ze=0;ze{let Re=X(_e.params,te),Ue;for(Ue of Re)ge.add(Ue)}),ge.has("any")?["any"]:Array.from(ge)}function ee(xe,te,ge){let _e,Re,Ue=xe||"unnamed",ze=ge,je;for(je=0;je{let Tt=V(lt.params,je),nr=q(Tt);(je0){let lt=D(te[je]);return _e=new TypeError("Unexpected type of argument in function "+Ue+" (expected: "+Re.join(" or ")+", actual: "+lt.join(" | ")+", index: "+je+")"),_e.data={category:"wrongType",fn:Ue,index:je,actual:lt,expected:Re},_e}}else ze=He}let W=ze.map(function(He){return L(He.params)?1/0:He.params.length});if(te.lengthae)return _e=new TypeError("Too many arguments in function "+Ue+" (expected: "+ae+", actual: "+te.length+")"),_e.data={category:"tooManyArgs",fn:Ue,index:te.length,expectedLength:ae},_e;let Le=[];for(let He=0;He0)return 1;let _e=ce(xe)-ce(te);return _e<0?-1:_e>0?1:0}function de(xe,te){let ge=xe.params,_e=te.params,Re=ie(ge),Ue=ie(_e),ze=L(ge),je=L(_e);if(ze&&Re.hasAny){if(!je||!Ue.hasAny)return 1}else if(je&&Ue.hasAny)return-1;let W=0,ae=0,Le;for(Le of ge)Le.hasAny&&++W,Le.hasConversion&&++ae;let He=0,lt=0;for(Le of _e)Le.hasAny&&++He,Le.hasConversion&&++lt;if(W!==He)return W-He;if(ze&&Re.hasConversion){if(!je||!Ue.hasConversion)return 1}else if(je&&Ue.hasConversion)return-1;if(ae!==lt)return ae-lt;if(ze){if(!je)return 1}else if(je)return-1;let Tt=(ge.length-_e.length)*(ze?-1:1);if(Tt!==0)return Tt;let nr=[],$r=0;for(let li=0;li1&&te.sort((Re,Ue)=>Re.index-Ue.index);let ge=te[0].conversionsTo;if(xe.length===1)return ge;ge=ge.concat([]);let _e=new Set(xe);for(let Re=1;ReRe.hasConversion)){let Re=L(xe),Ue=xe.map(Te);ge=function(){let je=[],W=Re?arguments.length-1:arguments.length;for(let ae=0;aeW.name).join("|"),hasAny:je.some(W=>W.isAny),hasConversion:!1,restParam:!0}),ze.push(Ue)}else ze=Ue.types.map(function(je){return{types:[je],name:je.name,hasAny:je.isAny,hasConversion:je.conversion,restParam:!1}});return Me(ze,function(je){return te(ge,_e+1,Re.concat([je]))})}else return[Re]}return te(xe,0,[])}function se(xe,te){let ge=Math.max(xe.length,te.length);for(let je=0;je=_e:ze?_e>=Re:_e===Re}function le(xe){return xe.map(te=>rt(te)?it(te.referToSelf.callback):ct(te)?$e(te.referTo.references,te.referTo.callback):te)}function oe(xe,te,ge){let _e=[],Re;for(Re of xe){let Ue=ge[Re];if(typeof Ue!="number")throw new TypeError('No definition for referenced signature "'+Re+'"');if(Ue=te[Ue],typeof Ue!="function")return!1;_e.push(Ue)}return _e}function we(xe,te,ge){let _e=le(xe),Re=new Array(_e.length).fill(!1),Ue=!0;for(;Ue;){Ue=!1;let ze=!0;for(let je=0;je<_e.length;++je){if(Re[je])continue;let W=_e[je];if(rt(W))_e[je]=W.referToSelf.callback(ge),_e[je].referToSelf=W.referToSelf,Re[je]=!0,ze=!1;else if(ct(W)){let ae=oe(W.referTo.references,_e,te);ae?(_e[je]=W.referTo.callback.apply(this,ae),_e[je].referTo=W.referTo,Re[je]=!0,ze=!1):Ue=!0}}if(ze&&Ue)throw new SyntaxError("Circular reference detected in resolving typed.referTo")}return _e}function Ce(xe){let te=/\bthis(\(|\.signatures\b)/;Object.keys(xe).forEach(ge=>{let _e=xe[ge];if(te.test(_e.toString()))throw new SyntaxError("Using `this` to self-reference a function is deprecated since typed-function@3. Use typed.referTo and typed.referToSelf instead.")})}function he(xe,te){if(h.createCount++,Object.keys(te).length===0)throw new SyntaxError("No signatures provided");h.warnAgainstDeprecatedThis&&Ce(te);let ge=[],_e=[],Re={},Ue=[],ze;for(ze in te){if(!Object.prototype.hasOwnProperty.call(te,ze))continue;let j=B(ze);if(!j)continue;ge.forEach(function(Ye){if(se(Ye,j))throw new TypeError('Conflicting signatures "'+N(Ye)+'" and "'+N(j)+'".')}),ge.push(j);let ye=_e.length;_e.push(te[ze]);let Xe=j.map(F),ot;for(ot of De(Xe)){let Ye=N(ot);Ue.push({params:ot,name:Ye,fn:ye}),ot.every(Ee=>!Ee.hasConversion)&&(Re[Ye]=ye)}}Ue.sort(de);let je=we(_e,Re,Rn),W;for(W in Re)Object.prototype.hasOwnProperty.call(Re,W)&&(Re[W]=je[Re[W]]);let ae=[],Le=new Map;for(W of Ue)Le.has(W.name)||(W.fn=je[W.fn],ae.push(W),Le.set(W.name,W));let He=ae[0]&&ae[0].params.length<=2&&!L(ae[0].params),lt=ae[1]&&ae[1].params.length<=2&&!L(ae[1].params),Tt=ae[2]&&ae[2].params.length<=2&&!L(ae[2].params),nr=ae[3]&&ae[3].params.length<=2&&!L(ae[3].params),$r=ae[4]&&ae[4].params.length<=2&&!L(ae[4].params),$t=ae[5]&&ae[5].params.length<=2&&!L(ae[5].params),li=He&<&&Tt&&nr&&$r&&$t;for(let j=0;jj.test),aa=ae.map(j=>j.implementation),Gu=function(){for(let ye=bo;yeN(B(ge))),te=ie(arguments);if(typeof te!="function")throw new TypeError("Callback function expected as last argument");return $e(xe,te)}function $e(xe,te){return{referTo:{references:xe,callback:te}}}function it(xe){if(typeof xe!="function")throw new TypeError("Callback function expected as first argument");return{referToSelf:{callback:xe}}}function ct(xe){return xe&&typeof xe.referTo=="object"&&Array.isArray(xe.referTo.references)&&typeof xe.referTo.callback=="function"}function rt(xe){return xe&&typeof xe.referToSelf=="object"&&typeof xe.referToSelf.callback=="function"}function At(xe,te){if(!xe)return te;if(te&&te!==xe){let ge=new Error("Function names do not match (expected: "+xe+", actual: "+te+")");throw ge.data={actual:te,expected:xe},ge}return xe}function zt(xe){let te;for(let ge in xe)Object.prototype.hasOwnProperty.call(xe,ge)&&(C(xe[ge])||typeof xe[ge].signature=="string")&&(te=At(te,xe[ge].name));return te}function mt(xe,te){let ge;for(ge in te)if(Object.prototype.hasOwnProperty.call(te,ge)){if(ge in xe&&te[ge]!==xe[ge]){let _e=new Error('Signature "'+ge+'" is defined twice');throw _e.data={signature:ge,sourceFunction:te[ge],destFunction:xe[ge]},_e}xe[ge]=te[ge]}}let fr=h;h=function(xe){let te=typeof xe=="string",ge=te?1:0,_e=te?xe:"",Re={};for(let Ue=ge;Ue1&&arguments[1]!==void 0?arguments[1]:{override:!1};qt(xe);let ge=g(xe.to),_e=ge.conversionsTo.find(Re=>Re.from===xe.from);if(_e)if(te&&te.override)h.removeConversion({from:_e.from,to:xe.to,convert:_e.convert});else throw new Error('There is already a conversion from "'+xe.from+'" to "'+ge.name+'"');ge.conversionsTo.push({from:xe.from,convert:xe.convert,index:p++})},h.addConversions=function(xe,te){xe.forEach(ge=>h.addConversion(ge,te))},h.removeConversion=function(xe){qt(xe);let te=g(xe.to),ge=Oe(te.conversionsTo,Re=>Re.from===xe.from);if(!ge)throw new Error("Attempt to remove nonexistent conversion from "+xe.from+" to "+xe.to);if(ge.convert!==xe.convert)throw new Error("Conversion to remove does not match existing conversion");let _e=te.conversionsTo.indexOf(ge);te.conversionsTo.splice(_e,1)},h.resolve=function(xe,te){if(!C(xe))throw new TypeError(n);let ge=xe._typedFunctionData.signatures;for(let _e=0;_e{yL.exports=function e(t,r){"use strict";var n=/(^([+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi,i=/(^[ ]*|[ ]*$)/g,o=/(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,l=/^0x[0-9a-f]+$/i,s=/^0/,a=function(E){return e.insensitive&&(""+E).toLowerCase()||""+E},u=a(t).replace(i,"")||"",f=a(r).replace(i,"")||"",p=u.replace(n,"\0$1\0").replace(/\0$/,"").replace(/^\0/,"").split("\0"),h=f.replace(n,"\0$1\0").replace(/\0$/,"").replace(/^\0/,"").split("\0"),g=parseInt(u.match(l),16)||p.length!==1&&u.match(o)&&Date.parse(u),x=parseInt(f.match(l),16)||g&&f.match(o)&&Date.parse(f)||null,v,S;if(x){if(gx)return 1}for(var D=0,C=Math.max(p.length,h.length);DS)return 1}return 0}});var PP=st((dUe,BP)=>{"use strict";var pC=Object.assign||function(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:{},r=t.preserveFormatting,n=r===void 0?!1:r,i=t.escapeMapFn,o=i===void 0?Cfe:i,l=String(e),s="",a=o(pC({},Efe),n?pC({},Afe):{}),u=Object.keys(a),f=function(){var h=!1;u.forEach(function(g,x){h||l.length>=g.length&&l.slice(0,g.length)===g&&(s+=a[u[x]],l=l.slice(g.length,l.length),h=!0)}),h||(s+=l.slice(0,1),l=l.slice(1,l.length))};l;)f();return s}});var sz=st((az,wC)=>{(function(e,t,r){function n(s){var a=this,u=l();a.next=function(){var f=2091639*a.s0+a.c*23283064365386963e-26;return a.s0=a.s1,a.s1=a.s2,a.s2=f-(a.c=f|0)},a.c=1,a.s0=u(" "),a.s1=u(" "),a.s2=u(" "),a.s0-=u(s),a.s0<0&&(a.s0+=1),a.s1-=u(s),a.s1<0&&(a.s1+=1),a.s2-=u(s),a.s2<0&&(a.s2+=1),u=null}function i(s,a){return a.c=s.c,a.s0=s.s0,a.s1=s.s1,a.s2=s.s2,a}function o(s,a){var u=new n(s),f=a&&a.state,p=u.next;return p.int32=function(){return u.next()*4294967296|0},p.double=function(){return p()+(p()*2097152|0)*11102230246251565e-32},p.quick=p,f&&(typeof f=="object"&&i(f,u),p.state=function(){return i(u,{})}),p}function l(){var s=4022871197,a=function(u){u=String(u);for(var f=0;f>>0,p-=s,p*=s,s=p>>>0,p-=s,s+=p*4294967296}return(s>>>0)*23283064365386963e-26};return a}t&&t.exports?t.exports=o:r&&r.amd?r(function(){return o}):this.alea=o})(az,typeof wC=="object"&&wC,typeof define=="function"&&define)});var lz=st((uz,bC)=>{(function(e,t,r){function n(l){var s=this,a="";s.x=0,s.y=0,s.z=0,s.w=0,s.next=function(){var f=s.x^s.x<<11;return s.x=s.y,s.y=s.z,s.z=s.w,s.w^=s.w>>>19^f^f>>>8},l===(l|0)?s.x=l:a+=l;for(var u=0;u>>0)/4294967296};return f.double=function(){do var p=a.next()>>>11,h=(a.next()>>>0)/4294967296,g=(p+h)/(1<<21);while(g===0);return g},f.int32=a.next,f.quick=f,u&&(typeof u=="object"&&i(u,a),f.state=function(){return i(a,{})}),f}t&&t.exports?t.exports=o:r&&r.amd?r(function(){return o}):this.xor128=o})(uz,typeof bC=="object"&&bC,typeof define=="function"&&define)});var cz=st((fz,DC)=>{(function(e,t,r){function n(l){var s=this,a="";s.next=function(){var f=s.x^s.x>>>2;return s.x=s.y,s.y=s.z,s.z=s.w,s.w=s.v,(s.d=s.d+362437|0)+(s.v=s.v^s.v<<4^(f^f<<1))|0},s.x=0,s.y=0,s.z=0,s.w=0,s.v=0,l===(l|0)?s.x=l:a+=l;for(var u=0;u>>4),s.next()}function i(l,s){return s.x=l.x,s.y=l.y,s.z=l.z,s.w=l.w,s.v=l.v,s.d=l.d,s}function o(l,s){var a=new n(l),u=s&&s.state,f=function(){return(a.next()>>>0)/4294967296};return f.double=function(){do var p=a.next()>>>11,h=(a.next()>>>0)/4294967296,g=(p+h)/(1<<21);while(g===0);return g},f.int32=a.next,f.quick=f,u&&(typeof u=="object"&&i(u,a),f.state=function(){return i(a,{})}),f}t&&t.exports?t.exports=o:r&&r.amd?r(function(){return o}):this.xorwow=o})(fz,typeof DC=="object"&&DC,typeof define=="function"&&define)});var mz=st((pz,SC)=>{(function(e,t,r){function n(l){var s=this;s.next=function(){var u=s.x,f=s.i,p,h,g;return p=u[f],p^=p>>>7,h=p^p<<24,p=u[f+1&7],h^=p^p>>>10,p=u[f+3&7],h^=p^p>>>3,p=u[f+4&7],h^=p^p<<7,p=u[f+7&7],p=p^p<<13,h^=p^p<<9,u[f]=h,s.i=f+1&7,h};function a(u,f){var p,h,g=[];if(f===(f|0))h=g[0]=f;else for(f=""+f,p=0;p0;--p)u.next()}a(s,l)}function i(l,s){return s.x=l.x.slice(),s.i=l.i,s}function o(l,s){l==null&&(l=+new Date);var a=new n(l),u=s&&s.state,f=function(){return(a.next()>>>0)/4294967296};return f.double=function(){do var p=a.next()>>>11,h=(a.next()>>>0)/4294967296,g=(p+h)/(1<<21);while(g===0);return g},f.int32=a.next,f.quick=f,u&&(u.x&&i(u,a),f.state=function(){return i(a,{})}),f}t&&t.exports?t.exports=o:r&&r.amd?r(function(){return o}):this.xorshift7=o})(pz,typeof SC=="object"&&SC,typeof define=="function"&&define)});var hz=st((dz,NC)=>{(function(e,t,r){function n(l){var s=this;s.next=function(){var u=s.w,f=s.X,p=s.i,h,g;return s.w=u=u+1640531527|0,g=f[p+34&127],h=f[p=p+1&127],g^=g<<13,h^=h<<17,g^=g>>>15,h^=h>>>12,g=f[p]=g^h,s.i=p,g+(u^u>>>16)|0};function a(u,f){var p,h,g,x,v,S=[],D=128;for(f===(f|0)?(h=f,f=null):(f=f+"\0",h=0,D=Math.max(D,f.length)),g=0,x=-32;x>>15,h^=h<<4,h^=h>>>13,x>=0&&(v=v+1640531527|0,p=S[x&127]^=h+v,g=p==0?g+1:0);for(g>=128&&(S[(f&&f.length||0)&127]=-1),g=127,x=4*128;x>0;--x)h=S[g+34&127],p=S[g=g+1&127],h^=h<<13,p^=p<<17,h^=h>>>15,p^=p>>>12,S[g]=h^p;u.w=v,u.X=S,u.i=g}a(s,l)}function i(l,s){return s.i=l.i,s.w=l.w,s.X=l.X.slice(),s}function o(l,s){l==null&&(l=+new Date);var a=new n(l),u=s&&s.state,f=function(){return(a.next()>>>0)/4294967296};return f.double=function(){do var p=a.next()>>>11,h=(a.next()>>>0)/4294967296,g=(p+h)/(1<<21);while(g===0);return g},f.int32=a.next,f.quick=f,u&&(u.X&&i(u,a),f.state=function(){return i(a,{})}),f}t&&t.exports?t.exports=o:r&&r.amd?r(function(){return o}):this.xor4096=o})(dz,typeof NC=="object"&&NC,typeof define=="function"&&define)});var vz=st((gz,EC)=>{(function(e,t,r){function n(l){var s=this,a="";s.next=function(){var f=s.b,p=s.c,h=s.d,g=s.a;return f=f<<25^f>>>7^p,p=p-h|0,h=h<<24^h>>>8^g,g=g-f|0,s.b=f=f<<20^f>>>12^p,s.c=p=p-h|0,s.d=h<<16^p>>>16^g,s.a=g-f|0},s.a=0,s.b=0,s.c=-1640531527,s.d=1367130551,l===Math.floor(l)?(s.a=l/4294967296|0,s.b=l|0):a+=l;for(var u=0;u>>0)/4294967296};return f.double=function(){do var p=a.next()>>>11,h=(a.next()>>>0)/4294967296,g=(p+h)/(1<<21);while(g===0);return g},f.int32=a.next,f.quick=f,u&&(typeof u=="object"&&i(u,a),f.state=function(){return i(a,{})}),f}t&&t.exports?t.exports=o:r&&r.amd?r(function(){return o}):this.tychei=o})(gz,typeof EC=="object"&&EC,typeof define=="function"&&define)});var xz=st(()=>{});var wz=st((yz,xb)=>{(function(e,t,r){var n=256,i=6,o=52,l="random",s=r.pow(n,i),a=r.pow(2,o),u=a*2,f=n-1,p;function h(E,M,T){var N=[];M=M==!0?{entropy:!0}:M||{};var O=S(v(M.entropy?[E,C(t)]:E??D(),3),N),F=new g(N),I=function(){for(var B=F.g(i),L=s,q=0;B=u;)B/=2,L/=2,q>>>=1;return(B+q)/L};return I.int32=function(){return F.g(4)|0},I.quick=function(){return F.g(4)/4294967296},I.double=I,S(C(F.S),t),(M.pass||T||function(B,L,q,R){return R&&(R.S&&x(R,F),B.state=function(){return x(F,{})}),q?(r[l]=B,L):B})(I,O,"global"in M?M.global:this==r,M.state)}function g(E){var M,T=E.length,N=this,O=0,F=N.i=N.j=0,I=N.S=[];for(T||(E=[T++]);O{var Wce=sz(),Vce=lz(),Gce=cz(),Yce=mz(),Zce=hz(),Xce=vz(),xp=wz();xp.alea=Wce;xp.xor128=Vce;xp.xorwow=Gce;xp.xorshift7=Yce;xp.xor4096=Zce;xp.tychei=Xce;bz.exports=xp});var QH=st((act,FC)=>{function OC(){}OC.prototype={on:function(e,t,r){var n=this.e||(this.e={});return(n[e]||(n[e]=[])).push({fn:t,ctx:r}),this},once:function(e,t,r){var n=this;function i(){n.off(e,i),t.apply(r,arguments)}return i._=t,this.on(e,i,r)},emit:function(e){var t=[].slice.call(arguments,1),r=((this.e||(this.e={}))[e]||[]).slice(),n=0,i=r.length;for(n;n{(function(e,t){typeof IC=="object"?n$.exports=t():typeof define=="function"&&define.amd?define(t):e.jStat=t()})(IC,function(){var e=function(t,r){var n=Array.prototype.concat,i=Array.prototype.slice,o=Object.prototype.toString;function l(S,D){var C=S>D?S:D;return t.pow(10,17-~~(t.log(C>0?C:-C)*t.LOG10E))}var s=Array.isArray||function(D){return o.call(D)==="[object Array]"};function a(S){return o.call(S)==="[object Function]"}function u(S){return typeof S=="number"?S-S===0:!1}function f(S){return n.apply([],S)}function p(){return new p._init(arguments)}p.fn=p.prototype,p._init=function(D){if(s(D[0]))if(s(D[0][0])){a(D[1])&&(D[0]=p.map(D[0],D[1]));for(var C=0;C=0;C--,M++)E[M]=[D[M][C]];return E},p.transpose=function(D){var C=[],E,M,T,N,O;for(s(D[0])||(D=[D]),M=D.length,T=D[0].length,O=0;O0&&(O[M][0]=D[M][0]),F=1;FC&&E>0)return[];if(E>0)for(T=D;TC;T+=E)M.push(T);return M},p.slice=function(){function S(C,E,M,T){var N,O=[],F=C.length;if(E===r&&M===r&&T===r)return p.copy(C);if(E=E||0,M=M||C.length,E=E>=0?E:F+E,M=M>=0?M:F+M,T=T||1,E===M||T===0)return[];if(EM&&T>0)return[];if(T>0)for(N=E;NM;N+=T)O.push(C[N]);return O}function D(C,E){var M,T;if(E=E||{},u(E.row)){if(u(E.col))return C[E.row][E.col];var N=p.rowa(C,E.row);return M=E.col||{},S(N,M.start,M.end,M.step)}if(u(E.col)){var O=p.cola(C,E.col);return T=E.row||{},S(O,T.start,T.end,T.step)}T=E.row||{},M=E.col||{};var F=S(C,T.start,T.end,T.step);return F.map(function(I){return S(I,M.start,M.end,M.step)})}return D}(),p.sliceAssign=function(D,C,E){var M,T;if(u(C.row)){if(u(C.col))return D[C.row][C.col]=E;C.col=C.col||{},C.col.start=C.col.start||0,C.col.end=C.col.end||D[0].length,C.col.step=C.col.step||1,M=p.arange(C.col.start,t.min(D.length,C.col.end),C.col.step);var N=C.row;return M.forEach(function(F,I){D[N][F]=E[I]}),D}if(u(C.col)){C.row=C.row||{},C.row.start=C.row.start||0,C.row.end=C.row.end||D.length,C.row.step=C.row.step||1,T=p.arange(C.row.start,t.min(D[0].length,C.row.end),C.row.step);var O=C.col;return T.forEach(function(F,I){D[F][O]=E[I]}),D}return E[0].length===r&&(E=[E]),C.row.start=C.row.start||0,C.row.end=C.row.end||D.length,C.row.step=C.row.step||1,C.col.start=C.col.start||0,C.col.end=C.col.end||D[0].length,C.col.step=C.col.step||1,T=p.arange(C.row.start,t.min(D.length,C.row.end),C.row.step),M=p.arange(C.col.start,t.min(D[0].length,C.col.end),C.col.step),T.forEach(function(F,I){M.forEach(function(B,L){D[F][B]=E[I][L]})}),D},p.diagonal=function(D){var C=p.zeros(D.length,D.length);return D.forEach(function(E,M){C[M][M]=E}),C},p.copy=function(D){return D.map(function(C){return u(C)?C:C.map(function(E){return E})})};var v=p.prototype;return v.length=0,v.push=Array.prototype.push,v.sort=Array.prototype.sort,v.splice=Array.prototype.splice,v.slice=Array.prototype.slice,v.toArray=function(){return this.length>1?i.call(this):i.call(this)[0]},v.map=function(D,C){return p(p.map(this,D,C))},v.cumreduce=function(D,C){return p(p.cumreduce(this,D,C))},v.alter=function(D){return p.alter(this,D),this},function(S){for(var D=0;D=0;)u+=a[f];return u},t.sumsqrd=function(a){for(var u=0,f=a.length;--f>=0;)u+=a[f]*a[f];return u},t.sumsqerr=function(a){for(var u=t.mean(a),f=0,p=a.length,h;--p>=0;)h=a[p]-u,f+=h*h;return f},t.sumrow=function(a){for(var u=0,f=a.length;--f>=0;)u+=a[f];return u},t.product=function(a){for(var u=1,f=a.length;--f>=0;)u*=a[f];return u},t.min=function(a){for(var u=a[0],f=0;++fu&&(u=a[f]);return u},t.unique=function(a){for(var u={},f=[],p=0;ph?(x=[f[v]],h=p,g=0):p===h&&(x.push(f[v]),g++),p=1);return g===0?x[0]:x},t.range=function(a){return t.max(a)-t.min(a)},t.variance=function(a,u){return t.sumsqerr(a)/(a.length-(u?1:0))},t.pooledvariance=function(a){var u=a.reduce(function(p,h){return p+t.sumsqerr(h)},0),f=a.reduce(function(p,h){return p+h.length},0);return u/(f-a.length)},t.deviation=function(s){for(var a=t.mean(s),u=s.length,f=new Array(u),p=0;p=0;p--)f.push(r.abs(a[p]-u));return t.mean(f)},t.meddev=function(a){for(var u=t.median(a),f=[],p=a.length-1;p>=0;p--)f.push(r.abs(a[p]-u));return t.median(f)},t.coeffvar=function(a){return t.stdev(a)/t.mean(a)},t.quartiles=function(a){var u=a.length,f=a.slice().sort(i);return[f[r.round(u/4)-1],f[r.round(u/2)-1],f[r.round(u*3/4)-1]]},t.quantiles=function(a,u,f,p){var h=a.slice().sort(i),g=[u.length],x=a.length,v,S,D,C,E,M;for(typeof f>"u"&&(f=3/8),typeof p>"u"&&(p=3/8),v=0;v1){for(x=f===!0?this:this.transpose();g1){for(u!=="sumrow"&&(x=f===!0?this:this.transpose());g1){for(h=h.transpose();p=0;f--)u*=l,u+=h[f];if(a=u/o+.5*r.log(s)+(o-.5)*r.log(o)-o,i<=7)for(f=1;f<=p;f++)a-=r.log(o-1),o-=1;return a},t.gammafn=function(i){var o=[-1.716185138865495,24.76565080557592,-379.80425647094563,629.3311553128184,866.9662027904133,-31451.272968848367,-36144.413418691176,66456.14382024054],l=[-30.8402300119739,315.35062697960416,-1015.1563674902192,-3107.771671572311,22538.11842098015,4755.846277527881,-134659.9598649693,-115132.2596755535],s=!1,a=0,u=0,f=0,p=i,h,g,x,v;if(i>171.6243769536076)return 1/0;if(p<=0)if(v=p%1+36e-17,v)s=(p&1?-1:1)*r.PI/r.sin(r.PI*v),p=1-p;else return 1/0;for(x=p,p<1?g=p++:g=(p-=a=(p|0)-1)-1,h=0;h<8;++h)f=(f+o[h])*g,u=u*g+l[h];if(v=f/u+1,xp)for(h=0;h=1?i:1/i)*8.5+i*.4+17),S;if(o<0||i<=0)return NaN;if(o170||o>170?r.exp(t.combinationln(i,o)):t.factorial(i)/t.factorial(o)/t.factorial(i-o)},t.combinationln=function(i,o){return t.factorialln(i)-t.factorialln(o)-t.factorialln(i-o)},t.permutation=function(i,o){return t.factorial(i)/t.factorial(i-o)},t.betafn=function(i,o){if(!(i<=0||o<=0))return i+o>170?r.exp(t.betaln(i,o)):t.gammafn(i)*t.gammafn(o)/t.gammafn(i+o)},t.betaln=function(i,o){return t.gammaln(i)+t.gammaln(o)-t.gammaln(i+o)},t.betacf=function(i,o,l){var s=1e-30,a=1,u=o+l,f=o+1,p=o-1,h=1,g=1-u*i/f,x,v,S,D;for(r.abs(g)=1)return r.max(100,o+100*r.sqrt(o));if(i<=0)return 0;for(o>1?(v=r.log(s),S=r.exp(s*(v-1)-u),x=i<.5?i:1-i,h=r.sqrt(-2*r.log(x)),f=(2.30753+h*.27061)/(1+h*(.99229+h*.04481))-h,i<.5&&(f=-f),f=r.max(.001,o*r.pow(1-1/(9*o)-f/(3*r.sqrt(o)),3))):(h=1-o*(.253+o*.12),i1?h=S*r.exp(-(f-s)+s*(r.log(f)-v)):h=r.exp(-f+s*r.log(f)-u),g=p/h,f-=h=g/(1-.5*r.min(1,g*((o-1)/f-1))),f<=0&&(f=.5*(f+h)),r.abs(h)0;l--)h=a,a=p*a-u+o[l],u=h;return g=f*r.exp(-i*i+.5*(o[0]+p*a)-u),s?g-1:1-g},t.erfc=function(i){return 1-t.erf(i)},t.erfcinv=function(i){var o=0,l,s,a,u;if(i>=2)return-100;if(i<=0)return 100;for(u=i<1?i:2-i,a=r.sqrt(-2*r.log(u/2)),l=-.70711*((2.30753+a*.27061)/(1+a*(.99229+a*.04481))-a);o<2;o++)s=t.erfc(l)-u,l+=s/(1.1283791670955126*r.exp(-l*l)-l*s);return i<1?l:-l},t.ibetainv=function(i,o,l){var s=1e-8,a=o-1,u=l-1,f=0,p,h,g,x,v,S,D,C,E,M,T;if(i<=0)return 0;if(i>=1)return 1;for(o>=1&&l>=1?(g=i<.5?i:1-i,x=r.sqrt(-2*r.log(g)),D=(2.30753+x*.27061)/(1+x*(.99229+x*.04481))-x,i<.5&&(D=-D),C=(D*D-3)/6,E=2/(1/(2*o-1)+1/(2*l-1)),M=D*r.sqrt(C+E)/E-(1/(2*l-1)-1/(2*o-1))*(C+5/6-2/(3*E)),D=o/(o+l*r.exp(2*M))):(p=r.log(o/(o+l)),h=r.log(l/(o+l)),x=r.exp(o*p)/o,v=r.exp(l*h)/l,M=x+v,i=1&&(D=.5*(D+x+1)),r.abs(x)0)break}return D},t.ibeta=function(i,o,l){var s=i===0||i===1?0:r.exp(t.gammaln(o+l)-t.gammaln(o)-t.gammaln(l)+o*r.log(i)+l*r.log(1-i));return i<0||i>1?!1:i<(o+1)/(o+l+2)?s*t.betacf(i,o,l)/o:1-s*t.betacf(1-i,l,o)/l},t.randn=function(i,o){var l,s,a,u,f;if(o||(o=i),i)return t.create(i,o,function(){return t.randn()});do l=t._random_fn(),s=1.7156*(t._random_fn()-.5),a=l-.449871,u=r.abs(s)+.386595,f=a*a+u*(.196*u-.25472*a);while(f>.27597&&(f>.27846||s*s>-4*r.log(l)*l*l));return s/l},t.randg=function(i,o,l){var s=i,a,u,f,p,h,g;if(l||(l=o),i||(i=1),o)return g=t.zeros(o,l),g.alter(function(){return t.randg(i)}),g;i<1&&(i+=1),a=i-1/3,u=1/r.sqrt(9*a);do{do h=t.randn(),p=1+u*h;while(p<=0);p=p*p*p,f=t._random_fn()}while(f>1-.331*r.pow(h,4)&&r.log(f)>.5*h*h+a*(1-p+r.log(p)));if(i==s)return a*p;do f=t._random_fn();while(f===0);return r.pow(f,1/s)*a*p},function(n){for(var i=0;i1||a<0?0:u==1&&f==1?1:u<512&&f<512?r.pow(a,u-1)*r.pow(1-a,f-1)/t.betafn(u,f):r.exp((u-1)*r.log(a)+(f-1)*r.log(1-a)-t.betaln(u,f))},cdf:function(a,u,f){return a>1||a<0?(a>1)*1:t.ibeta(a,u,f)},inv:function(a,u,f){return t.ibetainv(a,u,f)},mean:function(a,u){return a/(a+u)},median:function(a,u){return t.ibetainv(.5,a,u)},mode:function(a,u){return(a-1)/(a+u-2)},sample:function(a,u){var f=t.randg(a);return f/(f+t.randg(u))},variance:function(a,u){return a*u/(r.pow(a+u,2)*(a+u+1))}}),t.extend(t.centralF,{pdf:function(a,u,f){var p,h,g;return a<0?0:u<=2?a===0&&u<2?1/0:a===0&&u===2?1:1/t.betafn(u/2,f/2)*r.pow(u/f,u/2)*r.pow(a,u/2-1)*r.pow(1+u/f*a,-(u+f)/2):(p=u*a/(f+a*u),h=f/(f+a*u),g=u*h/2,g*t.binomial.pdf((u-2)/2,(u+f-2)/2,p))},cdf:function(a,u,f){return a<0?0:t.ibeta(u*a/(u*a+f),u/2,f/2)},inv:function(a,u,f){return f/(u*(1/t.ibetainv(a,u/2,f/2)-1))},mean:function(a,u){return u>2?u/(u-2):void 0},mode:function(a,u){return a>2?u*(a-2)/(a*(u+2)):void 0},sample:function(a,u){var f=t.randg(a/2)*2,p=t.randg(u/2)*2;return f/a/(p/u)},variance:function(a,u){if(!(u<=4))return 2*u*u*(a+u-2)/(a*(u-2)*(u-2)*(u-4))}}),t.extend(t.cauchy,{pdf:function(a,u,f){return f<0?0:f/(r.pow(a-u,2)+r.pow(f,2))/r.PI},cdf:function(a,u,f){return r.atan((a-u)/f)/r.PI+.5},inv:function(s,a,u){return a+u*r.tan(r.PI*(s-.5))},median:function(a){return a},mode:function(a){return a},sample:function(a,u){return t.randn()*r.sqrt(1/(2*t.randg(.5)))*u+a}}),t.extend(t.chisquare,{pdf:function(a,u){return a<0?0:a===0&&u===2?.5:r.exp((u/2-1)*r.log(a)-a/2-u/2*r.log(2)-t.gammaln(u/2))},cdf:function(a,u){return a<0?0:t.lowRegGamma(u/2,a/2)},inv:function(s,a){return 2*t.gammapinv(s,.5*a)},mean:function(s){return s},median:function(a){return a*r.pow(1-2/(9*a),3)},mode:function(a){return a-2>0?a-2:0},sample:function(a){return t.randg(a/2)*2},variance:function(a){return 2*a}}),t.extend(t.exponential,{pdf:function(a,u){return a<0?0:u*r.exp(-u*a)},cdf:function(a,u){return a<0?0:1-r.exp(-u*a)},inv:function(s,a){return-r.log(1-s)/a},mean:function(s){return 1/s},median:function(s){return 1/s*r.log(2)},mode:function(){return 0},sample:function(a){return-1/a*r.log(t._random_fn())},variance:function(s){return r.pow(s,-2)}}),t.extend(t.gamma,{pdf:function(a,u,f){return a<0?0:a===0&&u===1?1/f:r.exp((u-1)*r.log(a)-a/f-t.gammaln(u)-u*r.log(f))},cdf:function(a,u,f){return a<0?0:t.lowRegGamma(u,a/f)},inv:function(s,a,u){return t.gammapinv(s,a)*u},mean:function(s,a){return s*a},mode:function(a,u){if(a>1)return(a-1)*u},sample:function(a,u){return t.randg(a)*u},variance:function(a,u){return a*u*u}}),t.extend(t.invgamma,{pdf:function(a,u,f){return a<=0?0:r.exp(-(u+1)*r.log(a)-f/a-t.gammaln(u)+u*r.log(f))},cdf:function(a,u,f){return a<=0?0:1-t.lowRegGamma(u,f/a)},inv:function(s,a,u){return u/t.gammapinv(1-s,a)},mean:function(s,a){return s>1?a/(s-1):void 0},mode:function(a,u){return u/(a+1)},sample:function(a,u){return u/t.randg(a)},variance:function(a,u){if(!(a<=2))return u*u/((a-1)*(a-1)*(a-2))}}),t.extend(t.kumaraswamy,{pdf:function(a,u,f){return a===0&&u===1?f:a===1&&f===1?u:r.exp(r.log(u)+r.log(f)+(u-1)*r.log(a)+(f-1)*r.log(1-r.pow(a,u)))},cdf:function(a,u,f){return a<0?0:a>1?1:1-r.pow(1-r.pow(a,u),f)},inv:function(a,u,f){return r.pow(1-r.pow(1-a,1/f),1/u)},mean:function(s,a){return a*t.gammafn(1+1/s)*t.gammafn(a)/t.gammafn(1+1/s+a)},median:function(a,u){return r.pow(1-r.pow(2,-1/u),1/a)},mode:function(a,u){if(a>=1&&u>=1&&a!==1&&u!==1)return r.pow((a-1)/(a*u-1),1/a)},variance:function(){throw new Error("variance not yet implemented")}}),t.extend(t.lognormal,{pdf:function(a,u,f){return a<=0?0:r.exp(-r.log(a)-.5*r.log(2*r.PI)-r.log(f)-r.pow(r.log(a)-u,2)/(2*f*f))},cdf:function(a,u,f){return a<0?0:.5+.5*t.erf((r.log(a)-u)/r.sqrt(2*f*f))},inv:function(s,a,u){return r.exp(-1.4142135623730951*u*t.erfcinv(2*s)+a)},mean:function(a,u){return r.exp(a+u*u/2)},median:function(a){return r.exp(a)},mode:function(a,u){return r.exp(a-u*u)},sample:function(a,u){return r.exp(t.randn()*u+a)},variance:function(a,u){return(r.exp(u*u)-1)*r.exp(2*a+u*u)}}),t.extend(t.noncentralt,{pdf:function(a,u,f){var p=1e-14;return r.abs(f)p||v>p;)S=v,C>0&&(E*=f*f/(2*C),M*=f*f/(2*(C+1/2))),v=E*t.beta.cdf(D,C+.5,u/2)+M*t.beta.cdf(D,C+1,u/2),x+=.5*v,C++;return g?1-x:x}}),t.extend(t.normal,{pdf:function(a,u,f){return r.exp(-.5*r.log(2*r.PI)-r.log(f)-r.pow(a-u,2)/(2*f*f))},cdf:function(a,u,f){return .5*(1+t.erf((a-u)/r.sqrt(2*f*f)))},inv:function(s,a,u){return-1.4142135623730951*u*t.erfcinv(2*s)+a},mean:function(s){return s},median:function(a){return a},mode:function(s){return s},sample:function(a,u){return t.randn()*u+a},variance:function(s,a){return a*a}}),t.extend(t.pareto,{pdf:function(a,u,f){return a1e100?1e100:u,1/(r.sqrt(u)*t.betafn(.5,u/2))*r.pow(1+a*a/u,-((u+1)/2))},cdf:function(a,u){var f=u/2;return t.ibeta((a+r.sqrt(a*a+u))/(2*r.sqrt(a*a+u)),f,f)},inv:function(s,a){var u=t.ibetainv(2*r.min(s,1-s),.5*a,.5);return u=r.sqrt(a*(1-u)/u),s>.5?u:-u},mean:function(a){return a>1?0:void 0},median:function(){return 0},mode:function(){return 0},sample:function(a){return t.randn()*r.sqrt(a/(2*t.randg(a/2)))},variance:function(a){return a>2?a/(a-2):a>1?1/0:void 0}}),t.extend(t.weibull,{pdf:function(a,u,f){return a<0||u<0||f<0?0:f/u*r.pow(a/u,f-1)*r.exp(-r.pow(a/u,f))},cdf:function(a,u,f){return a<0?0:1-r.exp(-r.pow(a/u,f))},inv:function(s,a,u){return a*r.pow(-r.log(1-s),1/u)},mean:function(s,a){return s*t.gammafn(1+1/a)},median:function(a,u){return a*r.pow(r.log(2),1/u)},mode:function(a,u){return u<=1?0:a*r.pow((u-1)/u,1/u)},sample:function(a,u){return a*r.pow(-r.log(t._random_fn()),1/u)},variance:function(a,u){return a*a*t.gammafn(1+2/u)-r.pow(t.weibull.mean(a,u),2)}}),t.extend(t.uniform,{pdf:function(a,u,f){return af?0:1/(f-u)},cdf:function(a,u,f){return af;)S=g,D=-(a+v)*(a+u+v)*s/(a+2*v)/(a+2*v+1),p=g+D*p,h=x+D*h,v=v+1,D=v*(u-v)*s/(a+2*v-1)/(a+2*v),g=p+D*g,x=h+D*x,p=p/x,h=h/x,g=g/x,x=1;return g/a}t.extend(t.binomial,{pdf:function(a,u,f){return f===0||f===1?u*f===a?1:0:t.combination(u,a)*r.pow(f,a)*r.pow(1-f,u-a)},cdf:function(a,u,f){var p,h=1e-10;if(a<0)return 0;if(a>=u)return 1;if(f<0||f>1||u<=0)return NaN;a=r.floor(a);var g=f,x=a+1,v=u-a,S=x+v,D=r.exp(t.gammaln(S)-t.gammaln(v)-t.gammaln(x)+x*r.log(g)+v*r.log(1-g));return g<(x+1)/(S+2)?p=D*n(g,x,v,h):p=1-D*n(1-g,v,x,h),r.round((1-p)*(1/h))/(1/h)}}),t.extend(t.negbin,{pdf:function(a,u,f){return a!==a>>>0?!1:a<0?0:t.combination(a+u-1,u-1)*r.pow(1-f,a)*r.pow(f,u)},cdf:function(a,u,f){var p=0,h=0;if(a<0)return 0;for(;h<=a;h++)p+=t.negbin.pdf(h,u,f);return p}}),t.extend(t.hypgeom,{pdf:function(a,u,f,p){if(a!==a|0)return!1;if(a<0||ap||a>f)return 0;if(f*2>u)return p*2>u?t.hypgeom.pdf(u-f-p+a,u,u-f,u-p):t.hypgeom.pdf(p-a,u,u-f,p);if(p*2>u)return t.hypgeom.pdf(f-a,u,f,u-p);if(f1&&g=p||a>=f)return 1;if(f*2>u)return p*2>u?t.hypgeom.cdf(u-f-p+a,u,u-f,u-p):1-t.hypgeom.cdf(p-a-1,u,u-f,p);if(p*2>u)return 1-t.hypgeom.cdf(f-a-1,u,f,u-p);if(f1&&xp);return f-1},sampleLarge:function(a){var u=a,f,p,h,g,x,v,S,D,C,E;for(g=r.sqrt(u),x=r.log(u),S=.931+2.53*g,v=-.059+.02483*S,D=1.1239+1.1328/(S-3.4),C=.9277-3.6224/(S-2);;){if(p=r.random()-.5,h=r.random(),E=.5-r.abs(p),f=r.floor((2*v/E+S)*p+u+.43),E>=.07&&h<=C)return f;if(!(f<0||E<.013&&h>E)&&r.log(h)+r.log(D)-r.log(v/(E*E)+S)<=-u+f*x-t.loggam(f+1))return f}},sample:function(a){return a<10?this.sampleSmall(a):this.sampleLarge(a)}}),t.extend(t.triangular,{pdf:function(a,u,f,p){return f<=u||pf?NaN:af?0:af?NaN:a<=u?0:a>=f?1:a<=p?r.pow(a-u,2)/((f-u)*(p-u)):1-r.pow(f-a,2)/((f-u)*(f-p))},inv:function(a,u,f,p){return f<=u||pf?NaN:a<=(p-u)/(f-u)?u+(f-u)*r.sqrt(a*((p-u)/(f-u))):u+(f-u)*(1-r.sqrt((1-a)*(1-(p-u)/(f-u))))},mean:function(a,u,f){return(a+u+f)/3},median:function(a,u,f){if(f<=(a+u)/2)return u-r.sqrt((u-a)*(u-f))/r.sqrt(2);if(f>(a+u)/2)return a+r.sqrt((u-a)*(f-a))/r.sqrt(2)},mode:function(a,u,f){return f},sample:function(a,u,f){var p=t._random_fn();return p<(f-a)/(u-a)?a+r.sqrt(p*(u-a)*(f-a)):u-r.sqrt((1-p)*(u-a)*(u-f))},variance:function(a,u,f){return(a*a+u*u+f*f-a*u-a*f-u*f)/18}}),t.extend(t.arcsine,{pdf:function(a,u,f){return f<=u?NaN:a<=u||a>=f?0:2/r.PI*r.pow(r.pow(f-u,2)-r.pow(2*a-u-f,2),-.5)},cdf:function(a,u,f){return a=v)return 1;var N=2*t.normal.cdf(T,0,1,1,0)-1;N>=r.exp(g/u)?N=r.pow(N,u):N=0;var O;s>S?O=D:O=C;for(var F=T,I=(v-T)/O,B=F+I,L=0,q=u-1,R=1;R<=O;R++){for(var V=0,X=.5*(B+F),U=.5*(B-F),H=1;H<=f;H++){var ee,Z;px)break;var ne=2*t.normal.cdf(be,0,1,1,0),ve=2*t.normal.cdf(be,s,1,1,0),Te=ne*.5-ve*.5;Te>=r.exp(h/q)&&(Te=M[ee-1]*r.exp(-(.5*de))*r.pow(Te,q),V+=Te)}V*=2*U*u/r.sqrt(2*r.PI),L+=V,F=B,B+=I}return N+=L,N<=r.exp(h/a)?0:(N=r.pow(N,a),N>=1?1:N)}function l(s,a,u){var f=.322232421088,p=.099348462606,h=-1,g=.588581570495,x=-.342242088547,v=.531103462366,S=-.204231210125,D=.10353775285,C=-453642210148e-16,E=.0038560700634,M=.8832,T=.2368,N=1.214,O=1.208,F=1.4142,I=120,B=.5-.5*s,L=r.sqrt(r.log(1/(B*B))),q=L+((((L*C+S)*L+x)*L+h)*L+f)/((((L*E+D)*L+v)*L+g)*L+p);uM)return o(a,p,h);var L=f*.5,q=L*r.log(f)-f*r.log(2)-t.gammaln(L),R=L-1,V=f*.25,X;f<=D?X=T:f<=C?X=N:f<=E?X=O:X=F,q+=r.log(X);for(var U=0,H=1;H<=50;H++){for(var ee=0,Z=(2*H-1)*X,ce=1;ce<=g;ce++){var be,de;x=v){x=1&&ee<=S)break;U+=ee}if(ee>S)throw new Error("tukey.cdf failed to converge");return U>1&&(U=1),U},inv:function(s,a,u){var f=1,p=a,h=1e-4,g=50;if(u<2||f<1||p<2)return NaN;if(s<0||s>1)return NaN;if(s===0)return 0;if(s===1)return 1/0;var x=l(s,p,u),v=t.tukey.cdf(x,a,u)-s,S;v>0?S=r.max(0,x-1):S=x+1;for(var D=t.tukey.cdf(S,a,u)-s,C,E=1;Eu&&(f[p-1][h-1]=s[p][h])}var g=u%2?-1:1;a+=l(f)*s[0][u]*g}return a},gauss_elimination:function(s,a){var u=0,f=0,p=s.length,h=s[0].length,g=1,x=0,v=[],S,D,C,E;for(s=t.aug(s,a),S=s[0].length,u=0;u=0;u--){for(x=0,f=u+1;f<=p-1;f++)x=x+v[f]*s[u][f];v[u]=(s[u][S-1]-x)/s[u][u]}return v},gauss_jordan:function(s,a){var u=t.aug(s,a),f=u.length,p=u[0].length,h=0,g,x,v;for(x=0;xr.abs(u[S][x])&&(S=v);var D=u[x];for(u[x]=u[S],u[S]=D,v=x+1;v=0;x--){for(h=u[x][x],v=0;vx-1;g--)u[v][g]-=u[x][g]*u[v][x]/h;for(u[x][x]/=h,g=f;gh?(x[p][h]=s[p][h],v[p][h]=S[p][h]=0):pf;)D=M,M=t.add(t.multiply(E,D),C),p++;return M},gauss_seidel:function(s,a,u,f){for(var p=0,h=s.length,g=[],x=[],v=[],S,D,C,E,M;pS?(g[p][S]=s[p][S],x[p][S]=v[p][S]=0):pf;)D=M,M=t.add(t.multiply(E,D),C),p=p+1;return M},SOR:function(s,a,u,f,p){for(var h=0,g=s.length,x=[],v=[],S=[],D,C,E,M,T;hD?(x[h][D]=s[h][D],v[h][D]=S[h][D]=0):hf;)C=T,T=t.add(t.multiply(M,C),E),h++;return T},householder:function(s){for(var a=s.length,u=s[0].length,f=0,p=[],h=[],g,x,v,S,D;f0?-1:1,g=D*r.sqrt(g),x=r.sqrt((g*g-s[f+1][f]*g)/2),p=t.zeros(a,1),p[f+1][0]=(s[f+1][f]-g)/(2*x),v=f+2;v0?r.PI/4:-r.PI/4:C=r.atan(2*s[v][S]/(s[v][v]-s[S][S]))/2,E=t.identity(u,u),E[v][v]=r.cos(C),E[v][S]=-r.sin(C),E[S][v]=r.sin(C),E[S][S]=r.cos(C),f=t.multiply(f,E),h=t.multiply(t.multiply(t.inv(E),s),E),s=h,a=0,g=1;g.001&&(a=1)}for(g=0;g=h;)S=p(s,u+f),D=p(s,u),x[g]=(a[S]-2*a[D]+a[2*D-S])/(f*f),f/=2,g++;for(E=x.length,C=1;E!=1;){for(M=0;Mu);h++);return h-=1,a[h]+(u-s[h])*C[h]+t.sq(u-s[h])*S[h]+(u-s[h])*t.sq(u-s[h])*E[h]},gauss_quadrature:function(){throw new Error("gauss_quadrature not yet implemented")},PCA:function(s){var a=s.length,u=s[0].length,f=0,p,h,g=[],x=[],v=[],S=[],D=[],C=[],E=[],M=[],T=[],N=[];for(f=0;f2?(u=t.zscore(a[0],a[1],a[2]),a[3]===1?t.normal.cdf(-r.abs(u),0,1):t.normal.cdf(-r.abs(u),0,1)*2):(u=a[0],a[1]===1?t.normal.cdf(-r.abs(u),0,1):t.normal.cdf(-r.abs(u),0,1)*2)}}),t.extend(t.fn,{zscore:function(a,u){return(a-this.mean())/this.stdev(u)},ztest:function(a,u,f){var p=r.abs(this.zscore(a,f));return u===1?t.normal.cdf(-p,0,1):t.normal.cdf(-p,0,1)*2}}),t.extend({tscore:function(){var a=n.call(arguments);return a.length===4?(a[0]-a[1])/(a[2]/r.sqrt(a[3])):(a[0]-t.mean(a[1]))/(t.stdev(a[1],!0)/r.sqrt(a[1].length))},ttest:function(){var a=n.call(arguments),u;return a.length===5?(u=r.abs(t.tscore(a[0],a[1],a[2],a[3])),a[4]===1?t.studentt.cdf(-u,a[3]-1):t.studentt.cdf(-u,a[3]-1)*2):i(a[1])?(u=r.abs(a[0]),a[2]==1?t.studentt.cdf(-u,a[1]-1):t.studentt.cdf(-u,a[1]-1)*2):(u=r.abs(t.tscore(a[0],a[1])),a[2]==1?t.studentt.cdf(-u,a[1].length-1):t.studentt.cdf(-u,a[1].length-1)*2)}}),t.extend(t.fn,{tscore:function(a){return(a-this.mean())/(this.stdev(!0)/r.sqrt(this.cols()))},ttest:function(a,u){return u===1?1-t.studentt.cdf(r.abs(this.tscore(a)),this.cols()-1):t.studentt.cdf(-r.abs(this.tscore(a)),this.cols()-1)*2}}),t.extend({anovafscore:function(){var a=n.call(arguments),u,f,p,h,g,x,v,S;if(a.length===1){for(g=new Array(a[0].length),v=0;v1||u>1||s<=0||u<=0)throw new Error("Proportions should be greater than 0 and less than 1");var p=(s*a+u*f)/(a+f),h=r.sqrt(p*(1-p)*(1/a+1/f));return(s-u)/h}t.extend(t.fn,{oneSidedDifferenceOfProportions:function(a,u,f,p){var h=l(a,u,f,p);return t.ztest(h,1)},twoSidedDifferenceOfProportions:function(a,u,f,p){var h=l(a,u,f,p);return t.ztest(h,2)}})}(e,Math),e.models=function(){function t(l){var s=l[0].length,a=e.arange(s).map(function(u){var f=e.arange(s).filter(function(p){return p!==u});return r(e.col(l,u).map(function(p){return p[0]}),e.col(l,f))});return a}function r(l,s){var a=l.length,u=s[0].length-1,f=a-u-1,p=e.lstsq(s,l),h=e.multiply(s,p.map(function(E){return[E]})).map(function(E){return E[0]}),g=e.subtract(l,h),x=e.mean(l),v=e.sum(h.map(function(E){return Math.pow(E-x,2)})),S=e.sum(l.map(function(E,M){return Math.pow(E-h[M],2)})),D=v+S,C=v/D;return{exog:s,endog:l,nobs:a,df_model:u,df_resid:f,coef:p,predict:h,resid:g,ybar:x,SST:D,SSE:v,SSR:S,R2:C}}function n(l){var s=t(l.exog),a=Math.sqrt(l.SSR/l.df_resid),u=s.map(function(x){var v=x.SST,S=x.R2;return a/Math.sqrt(v*(1-S))}),f=l.coef.map(function(x,v){return(x-0)/u[v]}),p=f.map(function(x){var v=e.studentt.cdf(x,l.df_resid);return(v>.5?1-v:v)*2}),h=e.studentt.inv(.975,l.df_resid),g=l.coef.map(function(x,v){var S=h*u[v];return[x-S,x+S]});return{se:u,t:f,p,sigmaHat:a,interval95:g}}function i(l){var s=l.R2/l.df_model/((1-l.R2)/l.df_resid),a=function(f,p,h){return e.beta.cdf(f/(h/p+f),p/2,h/2)},u=1-a(s,l.df_model,l.df_resid);return{F_statistic:s,pvalue:u}}function o(l,s){var a=r(l,s),u=n(a),f=i(a),p=1-(1-a.R2)*((a.nobs-1)/a.df_resid);return a.t=u,a.f=f,a.adjust_R2=p,a}return{ols:o}}(),e.extend({buildxmatrix:function(){for(var r=new Array(arguments.length),n=0;n1){for(s=[],i=0;i{var o$;(function(e){typeof DO_NOT_EXPORT_BESSEL>"u"?typeof kC=="object"?e(kC):typeof define=="function"&&define.amd?define(function(){var t={};return e(t),t}):e(o$={}):e(o$={})})(function(e){e.version="1.0.2";var t=Math;function r(u,f){for(var p=0,h=0;pN)O=n(T,N,x(T),E(T),-1);else{for(var F=2*t.floor((N+t.floor(t.sqrt(40*N)))/2),I=!1,B=0,L=0,q=1,R=0,V=2/T,X=F;X>0;X--)R=X*V*q-B,B=q,q=R,t.abs(q)>1e10&&(q*=1e-10,B*=1e-10,O*=1e-10,L*=1e-10),I&&(L+=q),I=!I,X==N&&(O=B);L=2*L-q,O/=L}return O}}(),l=function(){var u=.636619772,f=[-2957821389,7062834065,-5123598036e-1,1087988129e-2,-86327.92757,228.4622733].reverse(),p=[40076544269,7452499648e-1,7189466438e-3,47447.2647,226.1030244,1].reverse(),h=[1,-.001098628627,2734510407e-14,-2073370639e-15,2093887211e-16].reverse(),g=[-.01562499995,.0001430488765,-6911147651e-15,7621095161e-16,-934945152e-16].reverse();function x(M){var T=0,N=0,O=0,F=M*M,I=M-.785398164;return M<8?(N=r(f,F),O=r(p,F),T=N/O+u*o(M,0)*t.log(M)):(F=64/F,N=r(h,F),O=r(g,F),T=t.sqrt(u/M)*(t.sin(I)*N+t.cos(I)*O*8/M)),T}var v=[-4900604943e3,127527439e4,-51534381390,7349264551e-1,-4237922726e-3,8511.937935].reverse(),S=[249958057e5,424441966400,3733650367,2245904002e-2,102042.605,354.9632885,1].reverse(),D=[1,.00183105,-3516396496e-14,2457520174e-15,-240337019e-15].reverse(),C=[.04687499995,-.0002002690873,8449199096e-15,-88228987e-14,105787412e-15].reverse();function E(M){var T=0,N=0,O=0,F=M*M,I=M-2.356194491;return M<8?(N=M*r(v,F),O=r(S,F),T=N/O+u*(o(M,1)*t.log(M)-1/M)):(F=64/F,N=r(D,F),O=r(C,F),T=t.sqrt(u/M)*(t.sin(I)*N+t.cos(I)*O*8/M)),T}return i(x,E,"BESSELY",1,-1)}(),s=function(){var u=[1,3.5156229,3.0899424,1.2067492,.2659732,.0360768,.0045813].reverse(),f=[.39894228,.01328592,.00225319,-.00157565,.00916281,-.02057706,.02635537,-.01647633,.00392377].reverse();function p(v){return v<=3.75?r(u,v*v/(3.75*3.75)):t.exp(t.abs(v))/t.sqrt(t.abs(v))*r(f,3.75/t.abs(v))}var h=[.5,.87890594,.51498869,.15084934,.02658733,.00301532,32411e-8].reverse(),g=[.39894228,-.03988024,-.00362018,.00163801,-.01031555,.02282967,-.02895312,.01787654,-.00420059].reverse();function x(v){return v<3.75?v*r(h,v*v/(3.75*3.75)):(v<0?-1:1)*t.exp(t.abs(v))/t.sqrt(t.abs(v))*r(g,3.75/t.abs(v))}return function v(S,D){if(D=Math.round(D),D===0)return p(S);if(D===1)return x(S);if(D<0)return NaN;if(t.abs(S)===0)return 0;if(S==1/0)return 1/0;var C=0,E,M=2/t.abs(S),T=0,N=1,O=0,F=2*t.round((D+t.round(t.sqrt(40*D)))/2);for(E=F;E>0;E--)O=E*M*N+T,T=N,N=O,t.abs(N)>1e10&&(N*=1e-10,T*=1e-10,C*=1e-10),E==D&&(C=T);return C*=v(S,0)/N,S<0&&D%2?-C:C}}(),a=function(){var u=[-.57721566,.4227842,.23069756,.0348859,.00262698,1075e-7,74e-7].reverse(),f=[1.25331414,-.07832358,.02189568,-.01062446,.00587872,-.0025154,53208e-8].reverse();function p(v){return v<=2?-t.log(v/2)*s(v,0)+r(u,v*v/4):t.exp(-v)/t.sqrt(v)*r(f,2/v)}var h=[1,.15443144,-.67278579,-.18156897,-.01919402,-.00110404,-4686e-8].reverse(),g=[1.25331414,.23498619,-.0365562,.01504268,-.00780353,.00325614,-68245e-8].reverse();function x(v){return v<=2?t.log(v/2)*s(v,1)+1/v*r(h,v*v/4):t.exp(-v)/t.sqrt(v)*r(g,2/v)}return i(p,x,"BESSELK",2,1)}();e.besselj=o,e.bessely=l,e.besseli=s,e.besselk=a})});var $s=st((mM,dM)=>{(function(e,t){typeof mM=="object"&&typeof dM<"u"?dM.exports=t():typeof define=="function"&&define.amd?define(t):(e=e||self,e.CodeMirror=t())})(mM,function(){"use strict";var e=navigator.userAgent,t=navigator.platform,r=/gecko\/\d/i.test(e),n=/MSIE \d/.test(e),i=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(e),o=/Edge\/(\d+)/.exec(e),l=n||i||o,s=l&&(n?document.documentMode||6:+(o||i)[1]),a=!o&&/WebKit\//.test(e),u=a&&/Qt\/\d+\.\d+/.test(e),f=!o&&/Chrome\/(\d+)/.exec(e),p=f&&+f[1],h=/Opera\//.test(e),g=/Apple Computer/.test(navigator.vendor),x=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(e),v=/PhantomJS/.test(e),S=g&&(/Mobile\/\w+/.test(e)||navigator.maxTouchPoints>2),D=/Android/.test(e),C=S||D||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(e),E=S||/Mac/.test(t),M=/\bCrOS\b/.test(e),T=/win/i.test(t),N=h&&e.match(/Version\/(\d*\.\d*)/);N&&(N=Number(N[1])),N&&N>=15&&(h=!1,a=!0);var O=E&&(u||h&&(N==null||N<12.11)),F=r||l&&s>=9;function I(c){return new RegExp("(^|\\s)"+c+"(?:$|\\s)\\s*")}var B=function(c,d){var b=c.className,w=I(d).exec(b);if(w){var A=b.slice(w.index+w[0].length);c.className=b.slice(0,w.index)+(A?w[1]+A:"")}};function L(c){for(var d=c.childNodes.length;d>0;--d)c.removeChild(c.firstChild);return c}function q(c,d){return L(c).appendChild(d)}function R(c,d,b,w){var A=document.createElement(c);if(b&&(A.className=b),w&&(A.style.cssText=w),typeof d=="string")A.appendChild(document.createTextNode(d));else if(d)for(var k=0;k=d)return z+(d-k);z+=Y-k,z+=b-z%b,k=Y+1}}var le=function(){this.id=null,this.f=null,this.time=0,this.handler=Te(this.onTimeout,this)};le.prototype.onTimeout=function(c){c.id=0,c.time<=+new Date?c.f():setTimeout(c.handler,c.time-+new Date)},le.prototype.set=function(c,d){this.f=d;var b=+new Date+c;(!this.id||b=d)return w+Math.min(z,d-A);if(A+=k-w,A+=b-A%b,w=k+1,A>=d)return w}}var fe=[""];function Oe(c){for(;fe.length<=c;)fe.push(Me(fe)+" ");return fe[c]}function Me(c){return c[c.length-1]}function Je(c,d){for(var b=[],w=0;w"\x80"&&(c.toUpperCase()!=c.toLowerCase()||rt.test(c))}function zt(c,d){return d?d.source.indexOf("\\w")>-1&&At(c)?!0:d.test(c):At(c)}function mt(c){for(var d in c)if(c.hasOwnProperty(d)&&c[d])return!1;return!0}var fr=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function qt(c){return c.charCodeAt(0)>=768&&fr.test(c)}function xe(c,d,b){for(;(b<0?d>0:db?-1:1;;){if(d==b)return d;var A=(d+b)/2,k=w<0?Math.ceil(A):Math.floor(A);if(k==d)return c(k)?d:b;c(k)?b=k:d=k+w}}function ge(c,d,b,w){if(!c)return w(d,b,"ltr",0);for(var A=!1,k=0;kd||d==b&&z.to==d)&&(w(Math.max(z.from,d),Math.min(z.to,b),z.level==1?"rtl":"ltr",k),A=!0)}A||w(d,b,"ltr")}var _e=null;function Re(c,d,b){var w;_e=null;for(var A=0;Ad)return A;k.to==d&&(k.from!=k.to&&b=="before"?w=A:_e=A),k.from==d&&(k.from!=k.to&&b!="before"?w=A:_e=A)}return w??_e}var Ue=function(){var c="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",d="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111";function b(Q){return Q<=247?c.charAt(Q):1424<=Q&&Q<=1524?"R":1536<=Q&&Q<=1785?d.charAt(Q-1536):1774<=Q&&Q<=2220?"r":8192<=Q&&Q<=8203?"w":Q==8204?"b":"L"}var w=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,A=/[stwN]/,k=/[LRr]/,z=/[Lb1n]/,Y=/[1n]/;function K(Q,me,Ne){this.level=Q,this.from=me,this.to=Ne}return function(Q,me){var Ne=me=="ltr"?"L":"R";if(Q.length==0||me=="ltr"&&!w.test(Q))return!1;for(var qe=Q.length,Be=[],Ke=0;Ke-1&&(w[d]=A.slice(0,k).concat(A.slice(k+1)))}}}function He(c,d){var b=ae(c,d);if(b.length)for(var w=Array.prototype.slice.call(arguments,2),A=0;A0}function $r(c){c.prototype.on=function(d,b){W(this,d,b)},c.prototype.off=function(d,b){Le(this,d,b)}}function $t(c){c.preventDefault?c.preventDefault():c.returnValue=!1}function li(c){c.stopPropagation?c.stopPropagation():c.cancelBubble=!0}function Kt(c){return c.defaultPrevented!=null?c.defaultPrevented:c.returnValue==!1}function Qi(c){$t(c),li(c)}function wr(c){return c.target||c.srcElement}function Mn(c){var d=c.which;return d==null&&(c.button&1?d=1:c.button&2?d=3:c.button&4&&(d=2)),E&&c.ctrlKey&&d==1&&(d=3),d}var ka=function(){if(l&&s<9)return!1;var c=R("div");return"draggable"in c||"dragDrop"in c}(),La;function Pn(c){if(La==null){var d=R("span","\u200B");q(c,R("span",[d,document.createTextNode("x")])),c.firstChild.offsetHeight!=0&&(La=d.offsetWidth<=1&&d.offsetHeight>2&&!(l&&s<8))}var b=La?R("span","\u200B"):R("span","\xA0",null,"display: inline-block; width: 1px; margin-right: -1px");return b.setAttribute("cm-text",""),b}var na;function Bo(c){if(na!=null)return na;var d=q(c,document.createTextNode("A\u062EA")),b=X(d,0,1).getBoundingClientRect(),w=X(d,1,2).getBoundingClientRect();return L(c),!b||b.left==b.right?!1:na=w.right-b.right<3}var ti=` +(()=>{var Zte=Object.create;var Jy=Object.defineProperty;var Xte=Object.getOwnPropertyDescriptor;var Kte=Object.getOwnPropertyNames;var Jte=Object.getPrototypeOf,Qte=Object.prototype.hasOwnProperty;var Se=(e,t)=>()=>(e&&(t=e(e=0)),t);var st=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Cu=(e,t)=>{for(var r in t)Jy(e,r,{get:t[r],enumerable:!0})},YO=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Kte(t))!Qte.call(e,i)&&i!==r&&Jy(e,i,{get:()=>t[i],enumerable:!(n=Xte(t,i))||n.enumerable});return e};var mn=(e,t,r)=>(r=e!=null?Zte(Jte(e)):{},YO(t||!e||!e.__esModule?Jy(r,"default",{value:e,enumerable:!0}):r,e)),Wn=e=>YO(Jy({},"__esModule",{value:!0}),e);var Xg=st((tE,rE)=>{(function(e,t){typeof tE=="object"&&typeof rE<"u"?rE.exports=t():typeof define=="function"&&define.amd?define("uikit",t):(e=typeof globalThis<"u"?globalThis:e||self,e.UIkit=t())})(tE,function(){"use strict";let{hasOwnProperty:e,toString:t}=Object.prototype;function r(m,y){return e.call(m,y)}let n=/\B([A-Z])/g,i=ue(m=>m.replace(n,"-$1").toLowerCase()),o=/-(\w)/g,l=ue(m=>(m.charAt(0).toLowerCase()+m.slice(1)).replace(o,(y,_)=>_.toUpperCase())),s=ue(m=>m.charAt(0).toUpperCase()+m.slice(1));function a(m,y){var _;return(_=m?.startsWith)==null?void 0:_.call(m,y)}function u(m,y){var _;return(_=m?.endsWith)==null?void 0:_.call(m,y)}function f(m,y){var _;return(_=m?.includes)==null?void 0:_.call(m,y)}function p(m,y){var _;return(_=m?.findIndex)==null?void 0:_.call(m,y)}let{isArray:h,from:g}=Array,{assign:x}=Object;function v(m){return typeof m=="function"}function S(m){return m!==null&&typeof m=="object"}function D(m){return t.call(m)==="[object Object]"}function C(m){return S(m)&&m===m.window}function E(m){return N(m)===9}function M(m){return N(m)>=1}function T(m){return N(m)===1}function N(m){return!C(m)&&S(m)&&m.nodeType}function O(m){return typeof m=="boolean"}function F(m){return typeof m=="string"}function I(m){return typeof m=="number"}function B(m){return I(m)||F(m)&&!isNaN(m-parseFloat(m))}function L(m){return!(h(m)?m.length:S(m)&&Object.keys(m).length)}function q(m){return m===void 0}function R(m){return O(m)?m:m==="true"||m==="1"||m===""?!0:m==="false"||m==="0"?!1:m}function V(m){let y=Number(m);return isNaN(y)?!1:y}function X(m){return parseFloat(m)||0}function U(m){return m&&H(m)[0]}function H(m){return M(m)?[m]:Array.from(m||[]).filter(M)}function ee(m){if(C(m))return m;m=U(m);let y=E(m)?m:m?.ownerDocument;return y?.defaultView||window}function Z(m,y){return m===y||S(m)&&S(y)&&Object.keys(m).length===Object.keys(y).length&&he(m,(_,P)=>_===y[P])}function pe(m,y,_){return m.replace(new RegExp(`${y}|${_}`,"g"),P=>P===y?_:y)}function we(m){return m[m.length-1]}function he(m,y){for(let _ in m)if(y(m[_],_)===!1)return!1;return!0}function oe(m,y){return m.slice().sort(({[y]:_=0},{[y]:P=0})=>_>P?1:P>_?-1:0)}function ve(m,y){return m.reduce((_,P)=>_+X(v(y)?y(P):P[y]),0)}function Oe(m,y){let _=new Set;return m.filter(({[y]:P})=>_.has(P)?!1:_.add(P))}function De(m,y){return y.reduce((_,P)=>({..._,[P]:m[P]}),{})}function Me(m,y=0,_=1){return Math.min(Math.max(V(m)||0,y),_)}function le(){}function ne(...m){return[["bottom","top"],["right","left"]].every(([y,_])=>Math.min(...m.map(({[y]:P})=>P))-Math.max(...m.map(({[_]:P})=>P))>0)}function fe(m,y){return m.x<=y.right&&m.x>=y.left&&m.y<=y.bottom&&m.y>=y.top}function Fe(m,y,_){let P=y==="width"?"height":"width";return{[P]:m[y]?Math.round(_*m[P]/m[y]):m[P],[y]:_}}function me(m,y){m={...m};for(let _ in m)m=m[_]>y[_]?Fe(m,_,y[_]):m;return m}function Ue(m,y){m=me(m,y);for(let _ in m)m=m[_]y[_]||(y[_]=m(_,...P))}function Te(m,...y){for(let _ of H(m)){let P=ct(y).filter(G=>!He(_,G));P.length&&_.classList.add(...P)}}function Ce(m,...y){for(let _ of H(m)){let P=ct(y).filter(G=>He(_,G));P.length&&_.classList.remove(...P)}}function Je(m,y,_){_=ct(_),y=ct(y).filter(P=>!f(_,P)),Ce(m,y),Te(m,_)}function He(m,y){return[y]=ct(y),H(m).some(_=>_.classList.contains(y))}function it(m,y,_){let P=ct(y);q(_)||(_=!!_);for(let G of H(m))for(let J of P)G.classList.toggle(J,_)}function ct(m){return m?h(m)?m.map(ct).flat():String(m).split(" ").filter(Boolean):[]}function rt(m,y,_){var P;if(S(y)){for(let G in y)rt(m,G,y[G]);return}if(q(_))return(P=U(m))==null?void 0:P.getAttribute(y);for(let G of H(m))v(_)&&(_=_.call(G,rt(G,y))),_===null?Rt(G,y):G.setAttribute(y,_)}function At(m,y){return H(m).some(_=>_.hasAttribute(y))}function Rt(m,y){H(m).forEach(_=>_.removeAttribute(y))}function vt(m,y){for(let _ of[y,`data-${y}`])if(At(m,_))return rt(m,_)}let nr=typeof window<"u",qt=nr&&document.dir==="rtl",xe=nr&&"ontouchstart"in window,te=nr&&window.PointerEvent,ge=te?"pointerdown":xe?"touchstart":"mousedown",_e=te?"pointermove":xe?"touchmove":"mousemove",ze=te?"pointerup":xe?"touchend":"mouseup",Pe=te?"pointerenter":xe?"":"mouseenter",$e=te?"pointerleave":xe?"":"mouseleave",W=te?"pointercancel":"touchcancel",ae={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};function be(m){return H(m).some(y=>ae[y.tagName.toLowerCase()])}let Ve=nr&&Element.prototype.checkVisibility||function(){return this.offsetWidth||this.offsetHeight||this.getClientRects().length};function tt(m){return H(m).some(y=>Ve.call(y))}let ft="input,select,textarea,button";function or(m){return H(m).some(y=>Kt(y,ft))}let br=`${ft},a[href],[tabindex]`;function jr(m){return Kt(m,br)}function Ut(m){var y;return(y=U(m))==null?void 0:y.parentElement}function fi(m,y){return H(m).filter(_=>Kt(_,y))}function Kt(m,y){return H(m).some(_=>_.matches(y))}function no(m,y){let _=[];for(;m=Ut(m);)(!y||Kt(m,y))&&_.push(m);return _}function Dr(m,y){m=U(m);let _=m?g(m.children):[];return y?fi(_,y):_}function On(m,y){return y?H(m).indexOf(U(y)):Dr(Ut(m)).indexOf(m)}function Ia(m){return m=U(m),m&&["origin","pathname","search"].every(y=>m[y]===location[y])}function ka(m){if(Ia(m)){let{hash:y,ownerDocument:_}=U(m),P=decodeURIComponent(y).slice(1);return P?_.getElementById(P)||_.getElementsByName(P)[0]:_}}function qn(m,y){return Bo(m,ia(m,y))}function na(m,y){return ri(m,ia(m,y))}function Bo(m,y){return U(oo(m,U(y),"querySelector"))}function ri(m,y){return H(oo(m,U(y),"querySelectorAll"))}function ia(m,y=document){return E(y)||rf(m).isContextSelector?y:y.ownerDocument}let tf=/([!>+~-])(?=\s+[!>+~-]|\s*$)/g,No=/(\([^)]*\)|[^,])+/g,rf=ue(m=>{let y=!1;if(!m||!F(m))return{};let _=[];for(let P of m.match(No))P=P.trim().replace(tf,"$1 *"),y||(y=["!","+","~","-",">"].includes(P[0])),_.push(P);return{selector:_.join(","),selectors:_,isContextSelector:y}}),iu=/(\([^)]*\)|\S)*/,io=ue(m=>{m=m.slice(1).trim();let[y]=m.match(iu);return[y,m.slice(y.length+1)]});function oo(m,y=document,_){let P=rf(m);if(!P.isContextSelector)return P.selector?oa(y,_,P.selector):m;m="";let G=P.selectors.length===1;for(let J of P.selectors){let re,ce=y;if(J[0]==="!"&&([re,J]=io(J),ce=y.parentElement.closest(re),!J&&G)||ce&&J[0]==="-"&&([re,J]=io(J),ce=ce.previousElementSibling,ce=Kt(ce,re)?ce:null,!J&&G))return ce;if(ce){if(G)return J[0]==="~"||J[0]==="+"?(J=`:scope > :nth-child(${On(ce)+1}) ${J}`,ce=ce.parentElement):J[0]===">"&&(J=`:scope ${J}`),oa(ce,_,J);m+=`${m?",":""}${ou(ce)} ${J}`}}return E(y)||(y=y.ownerDocument),oa(y,_,m)}function oa(m,y,_){try{return m[y](_)}catch{return null}}function ou(m){let y=[];for(;m.parentNode;){let _=rt(m,"id");if(_){y.unshift(`#${La(_)}`);break}else{let{tagName:P}=m;P!=="HTML"&&(P+=`:nth-child(${On(m)+1})`),y.unshift(P),m=m.parentNode}}return y.join(" > ")}function La(m){return F(m)?CSS.escape(m):""}function Gt(...m){let[y,_,P,G,J=!1]=Xr(m);G.length>1&&(G=aa(G)),J?.self&&(G=ju(G)),P&&(G=kt(P,G));for(let re of _)for(let ce of y)ce.addEventListener(re,G,J);return()=>Ui(y,_,G,J)}function Ui(...m){let[y,_,,P,G=!1]=Xr(m);for(let J of _)for(let re of y)re.removeEventListener(J,P,G)}function Cr(...m){let[y,_,P,G,J=!1,re]=Xr(m),ce=Gt(y,_,P,Ae=>{let We=!re||re(Ae);We&&(ce(),G(Ae,We))},J);return ce}function It(m,y,_){return ye(m).every(P=>P.dispatchEvent(Eo(y,!0,!0,_)))}function Eo(m,y=!0,_=!1,P){return F(m)&&(m=new CustomEvent(m,{bubbles:y,cancelable:_,detail:P})),m}function Xr(m){return m[0]=ye(m[0]),F(m[1])&&(m[1]=m[1].split(" ")),v(m[2])&&m.splice(2,0,!1),m}function kt(m,y){return _=>{let P=m[0]===">"?ri(m,_.currentTarget).reverse().find(G=>G.contains(_.target)):_.target.closest(m);P&&(_.current=P,y.call(this,_),delete _.current)}}function aa(m){return y=>h(y.detail)?m(y,...y.detail):m(y)}function ju(m){return function(y){if(y.target===y.currentTarget||y.target===y.current)return m.call(null,y)}}function zn(m){return m&&"addEventListener"in m}function j(m){return zn(m)?m:U(m)}function ye(m){return h(m)?m.map(j).filter(Boolean):F(m)?ri(m):zn(m)?[m]:H(m)}function Xe(m){return m.pointerType==="touch"||!!m.touches}function ot(m){var y,_;let{clientX:P,clientY:G}=((y=m.touches)==null?void 0:y[0])||((_=m.changedTouches)==null?void 0:_[0])||m;return{x:P,y:G}}let Ye={"animation-iteration-count":!0,"column-count":!0,"fill-opacity":!0,"flex-grow":!0,"flex-shrink":!0,"font-weight":!0,"line-height":!0,opacity:!0,order:!0,orphans:!0,"stroke-dasharray":!0,"stroke-dashoffset":!0,widows:!0,"z-index":!0,zoom:!0};function Ee(m,y,_,P){let G=H(m);for(let J of G)if(F(y)){if(y=Er(y),q(_))return getComputedStyle(J).getPropertyValue(y);J.style.setProperty(y,B(_)&&!Ye[y]?`${_}px`:_||I(_)?_:"",P)}else if(h(y)){let re={};for(let ce of y)re[ce]=Ee(J,ce);return re}else if(S(y))for(let re in y)Ee(J,re,y[re],_);return G[0]}let Er=ue(m=>{if(a(m,"--"))return m;m=i(m);let{style:y}=document.documentElement;if(m in y)return m;for(let _ of["webkit","moz"]){let P=`-${_}-${m}`;if(P in y)return P}}),Fn="uk-transition",ci="transitionend",au="transitioncanceled";function Tx(m,y,_=400,P="linear"){return _=Math.round(_),Promise.all(H(m).map(G=>new Promise((J,re)=>{for(let Ae in y)Ee(G,Ae);let ce=setTimeout(()=>It(G,ci),_);Cr(G,[ci,au],({type:Ae})=>{clearTimeout(ce),Ce(G,Fn),Ee(G,{transitionProperty:"",transitionDuration:"",transitionTimingFunction:""}),Ae===au?re():J(G)},{self:!0}),Te(G,Fn),Ee(G,{transitionProperty:Object.keys(y).map(Er).join(","),transitionDuration:`${_}ms`,transitionTimingFunction:P,...y})})))}let St={start:Tx,async stop(m){It(m,ci),await Promise.resolve()},async cancel(m){It(m,au),await Promise.resolve()},inProgress(m){return He(m,Fn)}},Cc="uk-animation",Jh="animationend",el="animationcanceled";function sa(m,y,_=200,P,G){return Promise.all(H(m).map(J=>new Promise((re,ce)=>{He(J,Cc)&&It(J,el);let Ae=[y,Cc,`${Cc}-${G?"leave":"enter"}`,P&&`uk-transform-origin-${P}`,G&&`${Cc}-reverse`],We=setTimeout(()=>It(J,Jh),_);Cr(J,[Jh,el],({type:Ze})=>{clearTimeout(We),Ze===el?ce():re(J),Ee(J,"animationDuration",""),Ce(J,Ae)},{self:!0}),Ee(J,"animationDuration",`${_}ms`),Te(J,Ae)})))}let hs={in:sa,out(m,y,_,P){return sa(m,y,_,P,!0)},inProgress(m){return He(m,Cc)},cancel(m){It(m,el)}};function _x(m){if(document.readyState!=="loading"){m();return}Cr(document,"DOMContentLoaded",m)}function Kr(m,...y){return y.some(_=>{var P;return((P=m?.tagName)==null?void 0:P.toLowerCase())===_.toLowerCase()})}function vm(m){return m=fr(m),m.innerHTML="",m}function gs(m,y){return q(y)?fr(m).innerHTML:Dn(vm(m),y)}let Qh=_c("prepend"),Dn=_c("append"),Mc=_c("before"),Tc=_c("after");function _c(m){return function(y,_){var P;let G=H(F(_)?vs(_):_);return(P=fr(y))==null||P[m](...G),Oc(G)}}function Ao(m){H(m).forEach(y=>y.remove())}function xm(m,y){for(y=U(Mc(m,y));y.firstElementChild;)y=y.firstElementChild;return Dn(y,m),y}function ym(m,y){return H(H(m).map(_=>_.hasChildNodes()?xm(g(_.childNodes),y):Dn(_,y)))}function Co(m){H(m).map(Ut).filter((y,_,P)=>P.indexOf(y)===_).forEach(y=>y.replaceWith(...y.childNodes))}let OS=/^<(\w+)\s*\/?>(?:<\/\1>)?$/;function vs(m){let y=OS.exec(m);if(y)return document.createElement(y[1]);let _=document.createElement("template");return _.innerHTML=m.trim(),Oc(_.content.childNodes)}function Oc(m){return m.length>1?m:m[0]}function Po(m,y){if(T(m))for(y(m),m=m.firstElementChild;m;)Po(m,y),m=m.nextElementSibling}function fr(m,y){return Ox(m)?U(vs(m)):Bo(m,y)}function Jr(m,y){return Ox(m)?H(vs(m)):ri(m,y)}function Ox(m){return F(m)&&a(m.trim(),"<")}let tl={width:["left","right"],height:["top","bottom"]};function Bt(m){let y=T(m)?U(m).getBoundingClientRect():{height:Hi(m),width:rl(m),top:0,left:0};return{height:y.height,width:y.width,top:y.top,left:y.left,bottom:y.top+y.height,right:y.left+y.width}}function yr(m,y){y&&Ee(m,{left:0,top:0});let _=Bt(m);if(m){let{scrollY:P,scrollX:G}=ee(m),J={height:P,width:G};for(let re in tl)for(let ce of tl[re])_[ce]+=J[re]}if(!y)return _;for(let P of["left","top"])Ee(m,P,y[P]-_[P])}function jh(m){let{top:y,left:_}=yr(m),{ownerDocument:{body:P,documentElement:G},offsetParent:J}=U(m),re=J||G;for(;re&&(re===P||re===G)&&Ee(re,"position")==="static";)re=re.parentNode;if(T(re)){let ce=yr(re);y-=ce.top+X(Ee(re,"borderTopWidth")),_-=ce.left+X(Ee(re,"borderLeftWidth"))}return{top:y-X(Ee(m,"marginTop")),left:_-X(Ee(m,"marginLeft"))}}function nf(m){m=U(m);let y=[m.offsetTop,m.offsetLeft];for(;m=m.offsetParent;)if(y[0]+=m.offsetTop+X(Ee(m,"borderTopWidth")),y[1]+=m.offsetLeft+X(Ee(m,"borderLeftWidth")),Ee(m,"position")==="fixed"){let _=ee(m);return y[0]+=_.scrollY,y[1]+=_.scrollX,y}return y}let Hi=Fc("height"),rl=Fc("width");function Fc(m){let y=s(m);return(_,P)=>{if(q(P)){if(C(_))return _[`inner${y}`];if(E(_)){let G=_.documentElement;return Math.max(G[`offset${y}`],G[`scroll${y}`])}return _=U(_),P=Ee(_,m),P=P==="auto"?_[`offset${y}`]:X(P)||0,P-su(_,m)}else return Ee(_,m,!P&&P!==0?"":+P+su(_,m)+"px")}}function su(m,y,_="border-box"){return Ee(m,"boxSizing")===_?ve(tl[y],P=>X(Ee(m,`padding-${P}`))+X(Ee(m,`border-${P}-width`))):0}function Ic(m){for(let y in tl)for(let _ in tl[y])if(tl[y][_]===m)return tl[y][1-_];return m}function Qn(m,y="width",_=window,P=!1){return F(m)?ve(FS(m),G=>{let J=ua(G);return J?IS(J==="vh"?Ix():J==="vw"?rl(ee(_)):P?_[`offset${s(y)}`]:Bt(_)[y],G):G}):X(m)}let wm=/-?\d+(?:\.\d+)?(?:v[wh]|%|px)?/g,FS=ue(m=>m.toString().replace(/\s/g,"").match(wm)||[]),Fx=/(?:v[hw]|%)$/,ua=ue(m=>(m.match(Fx)||[])[0]);function IS(m,y){return m*X(y)/100}let kc,uu;function Ix(){return kc||(uu||(uu=fr("
    "),Ee(uu,{height:"100vh",position:"fixed"}),Gt(window,"resize",()=>kc=null)),Dn(document.body,uu),kc=uu.clientHeight,Ao(uu),kc)}let $i={read:bm,write:eg,clear:af,flush:kx},of=[],Ro=[];function bm(m){return of.push(m),rg(),m}function eg(m){return Ro.push(m),rg(),m}function af(m){ng(of,m),ng(Ro,m)}let tg=!1;function kx(){Lx(of),Lx(Ro.splice(0)),tg=!1,(of.length||Ro.length)&&rg()}function rg(){tg||(tg=!0,queueMicrotask(kx))}function Lx(m){let y;for(;y=m.shift();)try{y()}catch(_){console.error(_)}}function ng(m,y){let _=m.indexOf(y);return~_&&m.splice(_,1)}class ig{init(){this.positions=[];let y;this.unbind=Gt(document,"mousemove",_=>y=ot(_)),this.interval=setInterval(()=>{y&&(this.positions.push(y),this.positions.length>5&&this.positions.shift())},50)}cancel(){var y;(y=this.unbind)==null||y.call(this),clearInterval(this.interval)}movesTo(y){if(!this.positions||this.positions.length<2)return!1;let _=Bt(y),{left:P,right:G,top:J,bottom:re}=_,[ce]=this.positions,Ae=we(this.positions),We=[ce,Ae];return fe(Ae,_)?!1:[[{x:P,y:J},{x:G,y:re}],[{x:P,y:re},{x:G,y:J}]].some(je=>{let ht=kS(We,je);return ht&&fe(ht,_)})}}function kS([{x:m,y},{x:_,y:P}],[{x:G,y:J},{x:re,y:ce}]){let Ae=(ce-J)*(_-m)-(re-G)*(P-y);if(Ae===0)return!1;let We=((re-G)*(y-J)-(ce-J)*(m-G))/Ae;return We<0?!1:{x:m+We*(_-m),y:y+We*(P-y)}}function Bx(m,y,_={},{intersecting:P=!0}={}){let G=new IntersectionObserver(P?(J,re)=>{J.some(ce=>ce.isIntersecting)&&y(J,re)}:y,_);for(let J of H(m))G.observe(J);return G}let LS=nr&&window.ResizeObserver;function Lc(m,y,_={box:"border-box"}){if(LS)return ag(ResizeObserver,m,y,_);let P=[Gt(window,"load resize",y),Gt(document,"loadedmetadata load",y,!0)];return{disconnect:()=>P.map(G=>G())}}function Dm(m){return{disconnect:Gt([window,window.visualViewport],"resize",m)}}function og(m,y,_){return ag(MutationObserver,m,y,_)}function ag(m,y,_,P){let G=new m(_);for(let J of H(y))G.observe(J,P);return G}function sf(m){ug(m)&&lg(m,{func:"playVideo",method:"play"}),sg(m)&&m.play().catch(le)}function xs(m){ug(m)&&lg(m,{func:"pauseVideo",method:"pause"}),sg(m)&&m.pause()}function Px(m){ug(m)&&lg(m,{func:"mute",method:"setVolume",value:0}),sg(m)&&(m.muted=!0)}function sg(m){return Kr(m,"video")}function ug(m){return Kr(m,"iframe")&&(uf(m)||Un(m))}function uf(m){return!!m.src.match(/\/\/.*?youtube(-nocookie)?\.[a-z]+\/(watch\?v=[^&\s]+|embed)|youtu\.be\/.*/)}function Un(m){return!!m.src.match(/vimeo\.com\/video\/.*/)}async function lg(m,y){await Rx(m),fg(m,y)}function fg(m,y){m.contentWindow.postMessage(JSON.stringify({event:"command",...y}),"*")}let nl="_ukPlayer",BS=0;function Rx(m){if(m[nl])return m[nl];let y=uf(m),_=Un(m),P=++BS,G;return m[nl]=new Promise(J=>{y&&Cr(m,"load",()=>{let re=()=>fg(m,{event:"listening",id:P});G=setInterval(re,100),re()}),Cr(window,"message",J,!1,({data:re})=>{try{return re=JSON.parse(re),y&&re?.id===P&&re.event==="onReady"||_&&Number(re?.player_id)===P}catch{}}),m.src=`${m.src}${f(m.src,"?")?"&":"?"}${y?"enablejsapi=1":`api=1&player_id=${P}`}`}).then(()=>clearInterval(G))}function PS(m,y=0,_=0){return tt(m)?ne(...fu(m).map(P=>{let{top:G,left:J,bottom:re,right:ce}=ao(P);return{top:G-y,left:J-_,bottom:re+y,right:ce+_}}).concat(yr(m))):!1}function Sm(m,{offset:y=0}={}){let _=tt(m)?il(m,!1,["hidden"]):[];return _.reduce((re,ce,Ae)=>{let{scrollTop:We,scrollHeight:Ze,offsetHeight:je}=ce,ht=ao(ce),Lt=Ze-ht.height,{height:rr,top:Sr}=_[Ae-1]?ao(_[Ae-1]):yr(m),kr=Math.ceil(Sr-ht.top-y+We);return y>0&&jeLt?(y-=kr-Lt,kr=Lt):kr<0&&(y-=kr,kr=0),()=>P(ce,kr-We,m,Lt).then(re)},()=>Promise.resolve())();function P(re,ce,Ae,We){return new Promise(Ze=>{let je=re.scrollTop,ht=G(Math.abs(ce)),Lt=Date.now(),rr=ff(re)===re,Sr=yr(Ae).top+(rr?0:je),kr=0,Eu=15;(function Gm(){let Ym=J(Me((Date.now()-Lt)/ht)),Au=0;_[0]===re&&je+ceEe(re,"position")==="fixed");return~J&&(G=G.slice(J)),[P].concat(G.filter(re=>Ee(re,"overflow").split(" ").some(ce=>f(["auto","scroll",..._],ce))&&(!y||re.scrollHeight>ao(re).height))).reverse()}function lu(...m){return il(...m)[0]}function fu(m){return il(m,!1,["hidden","clip"])}function ao(m){let y=ee(m),_=ff(m),P=!M(m)||m.contains(_);if(P&&y.visualViewport){let{height:Ae,width:We,scale:Ze,pageTop:je,pageLeft:ht}=y.visualViewport;return Ae=Math.round(Ae*Ze),We=Math.round(We*Ze),{height:Ae,width:We,top:je,left:ht,bottom:je+Ae,right:ht+We}}let G=yr(P?y:m);if(Ee(m,"display")==="inline")return G;let{body:J,documentElement:re}=y.document,ce=P?_===re||_.clientHeight!ce.contains(re)&&!la(ce,"static")))=ht[Ze])continue;Lt=Ba(m,y,_,Ae)[Ze]-P[Ze];let Sr=RS(m,y[Ae],J,Ae);if(!ys(Pc(P,Lt,Ae),Sr,Ae)){if(ys(P,Sr,Ae))continue;if(_.recursion)return!1;let kr=Ux(m,y,_);if(kr&&ys(kr,Sr,1-Ae))return kr;continue}}else if(re[Ae]==="shift"){let rr=yr(y[Ae]),{offset:Sr}=_;Lt=Me(Me(P[Ze],ht[Ze],ht[je]-P[We]),rr[Ze]-P[We]+Sr[Ae],rr[je]-Sr[Ae])-P[Ze]}ce=Pc(ce,Lt,Ae)}return ce}function cu(m,y,_){let{attach:P,offset:G}={attach:{element:["left","top"],target:["left","top"],..._.attach},offset:[0,0],..._},J=yr(m);for(let[re,[ce,,Ae,We]]of Object.entries(Wi)){let Ze=P.target[re]===P.element[re]?ao(y[re]):yr(y[re]);J=Pc(J,Ze[Ae]-J[Ae]+qx(P.target[re],We,Ze[ce])-qx(P.element[re],We,J[ce])+ +G[re],re)}return J}function Pc(m,y,_){let[,P,G,J]=Wi[_],re={...m};return re[G]=m[P]=m[G]+y,re[J]+=y,re}function qx(m,y,_){return m==="center"?_/2:m===y?_:0}function zx(m,y,_,P,G){let J=Nm(...mg(m,y).map(ao));return _&&(J[Wi[G][2]]+=_,J[Wi[G][3]]-=_),P&&(J=Nm(J,yr(h(P)?P[G]:P))),J}function RS(m,y,_,P){let[G,J,re,ce]=Wi[P],[Ae]=mg(m,y),We=ao(Ae);return["auto","scroll"].includes(Ee(Ae,`overflow-${J}`))&&(We[re]-=Ae[`scroll${s(re)}`],We[ce]=We[re]+Ae[`scroll${s(G)}`]),We[re]+=_,We[ce]-=_,We}function mg(m,y){return fu(y).filter(_=>_.contains(m))}function Nm(...m){let y={};for(let _ of m)for(let[,,P,G]of Wi)y[P]=Math.max(y[P]||0,_[P]),y[G]=Math.min(...[y[G],_[G]].filter(Boolean));return y}function ys(m,y,_){let[,,P,G]=Wi[_];return m[P]>=y[P]&&m[G]<=y[G]}function Ba(m,y,{offset:_,attach:P},G){return cu(m,y,{attach:{element:dg(P.element,G),target:dg(P.target,G)},offset:qS(_,G)})}function Ux(m,y,_){return fa(m,y,{..._,attach:{element:_.attach.element.map(Hx).reverse(),target:_.attach.target.map(Hx).reverse()},offset:_.offset.reverse(),placement:_.placement.reverse(),recursion:!0})}function dg(m,y){let _=[...m],P=Wi[y].indexOf(m[y]);return~P&&(_[y]=Wi[y][1-P%2+2]),_}function Hx(m){for(let y=0;ydocument,handler(){document.hidden?this.stop():this.start()}},methods:{start(){this.stop(),this.update(),this.timer||(It(this.$el,"countdownstart"),this.timer=setInterval(this.update,1e3))},stop(){this.timer&&(clearInterval(this.timer),It(this.$el,"countdownstop"),this.timer=null)},update(){let m=Wx(this.date);m.total||(this.stop(),this.end||(It(this.$el,"countdownend"),this.end=!0));for(let y of $x){let _=fr(this.clsWrapper.replace("%unit%",y),this.$el);if(!_)continue;let P=Math.trunc(m[y]).toString().padStart(2,"0");_.textContent!==P&&(P=P.split(""),P.length!==_.children.length&&gs(_,P.map(()=>"").join("")),P.forEach((G,J)=>_.children[J].textContent=G))}}}};function Wx(m){let y=Math.max(0,m-Date.now())/1e3;return{total:y,seconds:y%60,minutes:y/60%60,hours:y/60/60%24,days:y/60/60/24}}let Hn={};Hn.events=Hn.watch=Hn.observe=Hn.created=Hn.beforeConnect=Hn.connected=Hn.beforeDisconnect=Hn.disconnected=Hn.destroy=cf,Hn.args=function(m,y){return y!==!1&&cf(y||m)},Hn.update=function(m,y){return oe(cf(m,v(y)?{read:y}:y),"order")},Hn.props=function(m,y){if(h(y)){let _={};for(let P of y)_[P]=String;y=_}return Hn.methods(m,y)},Hn.computed=Hn.methods=function(m,y){return y?m?{...m,...y}:y:m},Hn.i18n=Hn.data=function(m,y,_){return _?Em(m,y,_):y?m?function(P){return Em(m,y,P)}:y:m};function Em(m,y,_){return Hn.computed(v(m)?m.call(_,_):m,v(y)?y.call(_,_):y)}function cf(m,y){return m=m&&!h(m)?[m]:m,y?m?m.concat(y):h(y)?y:[y]:m}function Vx(m,y){return q(y)?m:y}function pu(m,y,_){let P={};if(v(y)&&(y=y.options),y.extends&&(m=pu(m,y.extends,_)),y.mixins)for(let J of y.mixins)m=pu(m,J,_);for(let J in m)G(J);for(let J in y)r(m,J)||G(J);function G(J){P[J]=(Hn[J]||Vx)(m[J],y[J],_)}return P}function Mi(m,y=[]){try{return m?a(m,"{")?JSON.parse(m):y.length&&!f(m,":")?{[y[0]]:m}:m.split(";").reduce((_,P)=>{let[G,J]=P.split(/:(.*)/);return G&&!q(J)&&(_[G.trim()]=J.trim()),_},{}):{}}catch{return{}}}function Am(m,y){return m===Boolean?R(y):m===Number?V(y):m==="list"?gg(y):m===Object&&F(y)?Mi(y):m?m(y):y}let hg=/,(?![^(]*\))/;function gg(m){return h(m)?m:F(m)?m.split(hg).map(y=>B(y)?V(y):R(y.trim())):[m]}function Gx(m){m._data={},m._updates=[...m.$options.update||[]],m._disconnect.push(()=>m._updates=m._data=null)}function Yx(m,y){m._updates.unshift(y)}function ol(m,y="update"){m._connected&&m._updates.length&&(m._queued||(m._queued=new Set,$i.read(()=>{m._connected&&US(m,m._queued),m._queued=null})),m._queued.add(y.type||y))}function US(m,y){for(let{read:_,write:P,events:G=[]}of m._updates){if(!y.has("update")&&!G.some(re=>y.has(re)))continue;let J;_&&(J=_.call(m,m._data,y),J&&D(J)&&x(m._data,J)),P&&J!==!1&&$i.write(()=>{m._connected&&P.call(m,m._data,y)})}}function qo(m){return mf(Lc,m,"resize")}function pf(m){return mf(Bx,m)}function Pa(m){return mf(og,m)}function ws(m={}){return pf({handler:function(y,_){let{targets:P=this.$el,preload:G=5}=m;for(let J of H(v(P)?P(this):P))Jr('[loading="lazy"]',J).slice(0,G-1).forEach(re=>Rt(re,"loading"));for(let J of y.filter(({isIntersecting:re})=>re).map(({target:re})=>re))_.unobserve(J)},...m})}function mu(m){return mf((y,_)=>Dm(_),m,"resize")}function al(m){return mf((y,_)=>({disconnect:Gt(sl(y),"scroll",_,{passive:!0})}),m,"scroll")}function Cm(m){return{observe(y,_){return{observe:le,unobserve:le,disconnect:Gt(y,ge,_,{passive:!0})}},handler(y){if(!Xe(y))return;let _=ot(y),P="tagName"in y.target?y.target:Ut(y.target);Cr(document,`${ze} ${W} scroll`,G=>{let{x:J,y:re}=ot(G);(G.type!=="scroll"&&P&&J&&Math.abs(_.x-J)>100||re&&Math.abs(_.y-re)>100)&&setTimeout(()=>{It(P,"swipe"),It(P,`swipe${vg(_.x,_.y,J,re)}`)})})},...m}}function mf(m,y,_){return{observe:m,handler(){ol(this,_)},...y}}function vg(m,y,_,P){return Math.abs(m-_)>=Math.abs(y-P)?m-_>0?"Left":"Right":y-P>0?"Up":"Down"}function sl(m){return H(m).map(y=>{let{ownerDocument:_}=y,P=lu(y,!0);return P===_.scrollingElement?_:P})}var du={props:{margin:String,firstColumn:Boolean},data:{margin:"uk-margin-small-top",firstColumn:"uk-first-column"},observe:[Pa({options:{childList:!0}}),Pa({options:{attributes:!0,attributeFilter:["style"]},target:({$el:m})=>[m,...Dr(m)]}),qo({target:({$el:m})=>[m,...Dr(m)]})],update:{read(){return{rows:pi(Dr(this.$el))}},write({rows:m}){for(let y of m)for(let _ of y)it(_,this.margin,m[0]!==y),it(_,this.firstColumn,y[qt?y.length-1:0]===_)},events:["resize"]}};function pi(m){let y=[[]],_=m.some((P,G)=>G&&m[G-1].offsetParent!==P.offsetParent);for(let P of m){if(!tt(P))continue;let G=Ra(P,_);for(let J=y.length-1;J>=0;J--){let re=y[J];if(!re[0]){re.push(P);break}let ce=Ra(re[0],_);if(G.top>=ce.bottom-1&&G.top!==ce.top){y.push([P]);break}if(G.bottom-1>ce.top||G.top===ce.top){let Ae=re.length-1;for(;Ae>=0;Ae--){let We=Ra(re[Ae],_);if(G.left>=We.left)break}re.splice(Ae+1,0,P);break}if(J===0){y.unshift([P]);break}}}return y}function Ra(m,y=!1){let{offsetTop:_,offsetLeft:P,offsetHeight:G,offsetWidth:J}=m;return y&&([_,P]=nf(m)),{top:_,left:P,bottom:_+G,right:P+J}}async function hu(m,y,_){await Mm();let P=Dr(y),G=P.map(Lt=>qc(Lt,!0)),J={...Ee(y,["height","padding"]),display:"block"},re=P.concat(y);await Promise.all(re.map(St.cancel)),Ee(re,"transitionProperty","none"),await m(),P=P.concat(Dr(y).filter(Lt=>!f(P,Lt))),await Promise.resolve(),Ee(re,"transitionProperty","");let ce=rt(y,"style"),Ae=Ee(y,["height","padding"]),[We,Ze]=HS(y,P,G),je=P.map(Lt=>({style:rt(Lt,"style")}));P.forEach((Lt,rr)=>Ze[rr]&&Ee(Lt,Ze[rr])),Ee(y,J),It(y,"scroll"),await Mm();let ht=P.map((Lt,rr)=>Ut(Lt)===y&&St.start(Lt,We[rr],_,"ease")).concat(St.start(y,Ae,_,"ease"));try{await Promise.all(ht),P.forEach((Lt,rr)=>{rt(Lt,je[rr]),Ut(Lt)===y&&Ee(Lt,"display",We[rr].opacity===0?"none":"")}),rt(y,"style",ce)}catch{rt(P,"style",""),Zx(y,J)}}function qc(m,y){let _=Ee(m,"zIndex");return tt(m)?{display:"",opacity:y?Ee(m,"opacity"):"0",pointerEvents:"none",position:"absolute",zIndex:_==="auto"?On(m):_,...df(m)}:!1}function HS(m,y,_){let P=y.map((J,re)=>Ut(J)&&re in _?_[re]?tt(J)?df(J):{opacity:0}:{opacity:tt(J)?1:0}:!1),G=P.map((J,re)=>{let ce=Ut(y[re])===m&&(_[re]||qc(y[re]));if(!ce)return!1;if(!J)delete ce.opacity;else if(!("opacity"in J)){let{opacity:Ae}=ce;Ae%1?J.opacity=1:delete ce.opacity}return ce});return[P,G]}function Zx(m,y){for(let _ in y)Ee(m,_,"")}function df(m){let{height:y,width:_}=Bt(m);return{height:y,width:_,transform:"",...jh(m),...Ee(m,["marginTop","marginLeft"])}}function Mm(){return new Promise(m=>requestAnimationFrame(m))}let zc="uk-transition-leave",hf="uk-transition-enter";function Xx(m,y,_,P=0){let G=gf(y,!0),J={opacity:1},re={opacity:0},ce=Ze=>()=>G===gf(y)?Ze():Promise.reject(),Ae=ce(async()=>{Te(y,zc),await Promise.all(Tm(y).map((Ze,je)=>new Promise(ht=>setTimeout(()=>St.start(Ze,re,_/2,"ease").then(ht),je*P)))),Ce(y,zc)}),We=ce(async()=>{let Ze=Hi(y);Te(y,hf),m(),Ee(Dr(y),{opacity:0}),await Mm();let je=Dr(y),ht=Hi(y);Ee(y,"alignContent","flex-start"),Hi(y,Ze);let Lt=Tm(y);Ee(je,re);let rr=Lt.map(async(Sr,kr)=>{await yg(kr*P),await St.start(Sr,J,_/2,"ease")});Ze!==ht&&rr.push(St.start(y,{height:ht},_/2+Lt.length*P,"ease")),await Promise.all(rr).then(()=>{Ce(y,hf),G===gf(y)&&(Ee(y,{height:"",alignContent:""}),Ee(je,{opacity:""}),delete y.dataset.transition)})});return He(y,zc)?xg(y).then(We):He(y,hf)?xg(y).then(Ae).then(We):Ae().then(We)}function gf(m,y){return y&&(m.dataset.transition=1+gf(m)),V(m.dataset.transition)||0}function xg(m){return Promise.all(Dr(m).filter(St.inProgress).map(y=>new Promise(_=>Cr(y,"transitionend transitioncanceled",_))))}function Tm(m){return pi(Dr(m)).flat().filter(tt)}function yg(m){return new Promise(y=>setTimeout(y,m))}var ul={props:{duration:Number,animation:Boolean},data:{duration:150,animation:"slide"},methods:{animate(m,y=this.$el){let _=this.animation;return(_==="fade"?Xx:_==="delayed-fade"?(...G)=>Xx(...G,40):_?hu:()=>(m(),Promise.resolve()))(m,y,this.duration).catch(le)}}};let Mr={TAB:9,ESC:27,SPACE:32,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40};var Kx={mixins:[ul],args:"target",props:{target:String,selActive:Boolean},data:{target:"",selActive:!1,attrItem:"uk-filter-control",cls:"uk-active",duration:250},computed:{children:({target:m},y)=>Jr(`${m} > *`,y),toggles:({attrItem:m},y)=>Jr(`[${m}],[data-${m}]`,y)},watch:{toggles(m){this.updateState();let y=Jr(this.selActive,this.$el);for(let _ of m){this.selActive!==!1&&it(_,this.cls,f(y,_));let P=vf(_);Kr(P,"a")&&rt(P,"role","button")}},children(m,y){y&&this.updateState()}},events:{name:"click keydown",delegate:({attrItem:m})=>`[${m}],[data-${m}]`,handler(m){m.type==="keydown"&&m.keyCode!==Mr.SPACE||m.target.closest("a,button")&&(m.preventDefault(),this.apply(m.current))}},methods:{apply(m){let y=this.getState(),_=Jx(m,this.attrItem,this.getState());$S(y,_)||this.setState(_)},getState(){return this.toggles.filter(m=>He(m,this.cls)).reduce((m,y)=>Jx(y,this.attrItem,m),{filter:{"":""},sort:[]})},async setState(m,y=!0){m={filter:{"":""},sort:[],...m},It(this.$el,"beforeFilter",[this,m]);for(let _ of this.toggles)it(_,this.cls,wg(_,this.attrItem,m));await Promise.all(Jr(this.target,this.$el).map(_=>{let P=()=>WS(m,_,Dr(_));return y?this.animate(P,_):P()})),It(this.$el,"afterFilter",[this])},updateState(){$i.write(()=>this.setState(this.getState(),!1))}}};function Uc(m,y){return Mi(vt(m,y),["filter"])}function $S(m,y){return["filter","sort"].every(_=>Z(m[_],y[_]))}function WS(m,y,_){for(let J of _)Ee(J,"display",Object.values(m.filter).every(re=>!re||Kt(J,re))?"":"none");let[P,G]=m.sort;if(P){let J=bg(_,P,G);Z(J,_)||Dn(y,J)}}function Jx(m,y,_){let{filter:P,group:G,sort:J,order:re="asc"}=Uc(m,y);return(P||q(J))&&(G?P?(delete _.filter[""],_.filter[G]=P):(delete _.filter[G],(L(_.filter)||""in _.filter)&&(_.filter={"":P||""})):_.filter={"":P||""}),q(J)||(_.sort=[J,re]),_}function wg(m,y,{filter:_={"":""},sort:[P,G]}){let{filter:J="",group:re="",sort:ce,order:Ae="asc"}=Uc(m,y);return q(ce)?re in _&&J===_[re]||!J&&re&&!(re in _)&&!_[""]:P===ce&&G===Ae}function bg(m,y,_){return[...m].sort((P,G)=>vt(P,y).localeCompare(vt(G,y),void 0,{numeric:!0})*(_==="asc"||-1))}function vf(m){return fr("a,button",m)||m}let ll;function Qx(m){let y=Gt(m,"touchstart",P=>{if(P.targetTouches.length!==1||Kt(P.target,'input[type="range"'))return;let G=ot(P).y,J=Gt(m,"touchmove",re=>{let ce=ot(re).y;ce!==G&&(G=ce,il(re.target).some(Ae=>{if(!m.contains(Ae))return!1;let{scrollHeight:We,clientHeight:Ze}=Ae;return Ze{ll=!1,y(),Ee(_,{overflowY:"",touchAction:"",paddingRight:""})}}var gu={props:{container:Boolean},data:{container:!0},computed:{container({container:m}){return m===!0&&this.$container||m&&fr(m)}}},vu={props:{cls:Boolean,animation:"list",duration:Number,velocity:Number,origin:String,transition:String},data:{cls:!1,animation:[!1],duration:200,velocity:.2,origin:!1,transition:"ease",clsEnter:"uk-togglable-enter",clsLeave:"uk-togglable-leave"},computed:{hasAnimation:({animation:m})=>!!m[0],hasTransition:({animation:m})=>["slide","reveal"].some(y=>a(m[0],y))},methods:{async toggleElement(m,y,_){try{return await Promise.all(H(m).map(P=>{let G=O(y)?y:!this.isToggled(P);if(!It(P,`before${G?"show":"hide"}`,[this]))return Promise.reject();let J=(v(_)?_:_===!1||!this.hasAnimation?Hc:this.hasTransition?jx:fl)(P,G,this),re=G?this.clsEnter:this.clsLeave;Te(P,re),It(P,G?"show":"hide",[this]);let ce=()=>{Ce(P,re),It(P,G?"shown":"hidden",[this])};return J?J.then(ce,()=>(Ce(P,re),Promise.reject())):ce()})),!0}catch{return!1}},isToggled(m=this.$el){return m=U(m),He(m,this.clsEnter)?!0:He(m,this.clsLeave)?!1:this.cls?He(m,this.cls.split(" ")[0]):tt(m)},_toggle(m,y){if(!m)return;y=!!y;let _;this.cls?(_=f(this.cls," ")||y!==He(m,this.cls),_&&it(m,this.cls,f(this.cls," ")?void 0:y)):(_=y===m.hidden,_&&(m.hidden=!y)),_&&It(m,"toggled",[y,this]),Jr("[autofocus]",m).some(P=>tt(P)?P.focus()||!0:P.blur())}}};function Hc(m,y,{_toggle:_}){return hs.cancel(m),St.cancel(m),_(m,y)}async function jx(m,y,{animation:_,duration:P,velocity:G,transition:J,_toggle:re}){var ce;let[Ae="reveal",We="top"]=((ce=_[0])==null?void 0:ce.split("-"))||[],Ze=[["left","right"],["top","bottom"]],je=Ze[f(Ze[0],We)?0:1],ht=je[1]===We,rr=["width","height"][Ze.indexOf(je)],Sr=`margin-${je[0]}`,kr=`margin-${We}`,Eu=Bt(m)[rr],Gm=St.inProgress(m);await St.cancel(m),y&&re(m,!0);let Ym=Object.fromEntries(["padding","border","width","height","minWidth","minHeight","overflowY","overflowX",Sr,kr].map(GO=>[GO,m.style[GO]])),Au=Bt(m),LN=X(Ee(m,Sr)),$O=X(Ee(m,kr)),pp=Au[rr]+$O;!Gm&&!y&&(Eu+=$O);let[Ky]=ym(m,"
    ");Ee(Ky,{boxSizing:"border-box",height:Au.height,width:Au.width,...Ee(m,["overflow","padding","borderTop","borderRight","borderBottom","borderLeft","borderImage",kr])}),Ee(m,{padding:0,border:0,minWidth:0,minHeight:0,[kr]:0,width:Au.width,height:Au.height,overflow:"hidden",[rr]:Eu});let WO=Eu/pp;P=(G*pp+P)*(y?1-WO:WO);let VO={[rr]:y?pp:0};ht&&(Ee(m,Sr,pp-Eu+LN),VO[Sr]=y?LN:pp+LN),!ht^Ae==="reveal"&&(Ee(Ky,Sr,-pp+Eu),St.start(Ky,{[Sr]:y?0:-pp},P,J));try{await St.start(m,VO,P,J)}finally{Ee(m,Ym),Co(Ky.firstChild),y||re(m,!1)}}function fl(m,y,_){let{animation:P,duration:G,_toggle:J}=_;return y?(J(m,!0),hs.in(m,P[0],G,_.origin)):hs.out(m,P[1]||P[0],G,_.origin).then(()=>J(m,!1))}let ni=[];var bs={mixins:[Vi,gu,vu],props:{selPanel:String,selClose:String,escClose:Boolean,bgClose:Boolean,stack:Boolean,role:String},data:{cls:"uk-open",escClose:!0,bgClose:!0,overlay:!0,stack:!1,role:"dialog"},computed:{panel:({selPanel:m},y)=>fr(m,y),transitionElement(){return this.panel},bgClose({bgClose:m}){return m&&this.panel}},connected(){rt(this.panel||this.$el,"role",this.role),this.overlay&&rt(this.panel||this.$el,"aria-modal",!0)},beforeDisconnect(){f(ni,this)&&this.toggleElement(this.$el,!1,!1)},events:[{name:"click",delegate:({selClose:m})=>`${m},a[href*="#"]`,handler(m){let{current:y,defaultPrevented:_}=m,{hash:P}=y;!_&&P&&Ia(y)&&!this.$el.contains(fr(P))?this.hide():Kt(y,this.selClose)&&(m.preventDefault(),this.hide())}},{name:"toggle",self:!0,handler(m){m.defaultPrevented||(m.preventDefault(),this.isToggled()===f(ni,this)&&this.toggle())}},{name:"beforeshow",self:!0,handler(m){if(f(ni,this))return!1;!this.stack&&ni.length?(Promise.all(ni.map(y=>y.hide())).then(this.show),m.preventDefault()):ni.push(this)}},{name:"show",self:!0,handler(){this.stack&&Ee(this.$el,"zIndex",X(Ee(this.$el,"zIndex"))+ni.length);let m=[this.overlay&&ey(this),this.overlay&&Qx(this.$el),this.bgClose&&ty(this),this.escClose&&ry(this)];Cr(this.$el,"hidden",()=>m.forEach(y=>y&&y()),{self:!0}),Te(document.documentElement,this.clsPage)}},{name:"shown",self:!0,handler(){jr(this.$el)||rt(this.$el,"tabindex","-1"),Kt(this.$el,":focus-within")||this.$el.focus()}},{name:"hidden",self:!0,handler(){f(ni,this)&&ni.splice(ni.indexOf(this),1),Ee(this.$el,"zIndex",""),ni.some(m=>m.clsPage===this.clsPage)||Ce(document.documentElement,this.clsPage)}}],methods:{toggle(){return this.isToggled()?this.hide():this.show()},show(){return this.container&&Ut(this.$el)!==this.container?(Dn(this.container,this.$el),new Promise(m=>requestAnimationFrame(()=>this.show().then(m)))):this.toggleElement(this.$el,!0,xf)},hide(){return this.toggleElement(this.$el,!1,xf)}}};function xf(m,y,{transitionElement:_,_toggle:P}){return new Promise((G,J)=>Cr(m,"show hide",()=>{var re;(re=m._reject)==null||re.call(m),m._reject=J,P(m,y);let ce=Cr(_,"transitionstart",()=>{Cr(_,"transitionend transitioncancel",G,{self:!0}),clearTimeout(Ae)},{self:!0}),Ae=setTimeout(()=>{ce(),G()},yf(Ee(_,"transitionDuration")))})).then(()=>delete m._reject)}function yf(m){return m?u(m,"ms")?X(m):X(m)*1e3:0}function ey(m){return Gt(document,"focusin",y=>{we(ni)===m&&!m.$el.contains(y.target)&&m.$el.focus()})}function ty(m){return Gt(document,ge,({target:y})=>{we(ni)!==m||m.overlay&&!m.$el.contains(y)||m.panel.contains(y)||Cr(document,`${ze} ${W} scroll`,({defaultPrevented:_,type:P,target:G})=>{!_&&P===ze&&y===G&&m.hide()},!0)})}function ry(m){return Gt(document,"keydown",y=>{y.keyCode===27&&we(ni)===m&&m.hide()})}var Dg={slide:{show(m){return[{transform:Vr(m*-100)},{transform:Vr()}]},percent(m){return ca(m)},translate(m,y){return[{transform:Vr(y*-100*m)},{transform:Vr(y*100*(1-m))}]}}};function ca(m){return Math.abs(new DOMMatrix(Ee(m,"transform")).m41/m.offsetWidth)}function Vr(m=0,y="%"){return m?`translate3d(${m+y}, 0, 0)`:""}function VS(m,y,_,{animation:P,easing:G}){let{percent:J,translate:re,show:ce=le}=P,Ae=ce(_),{promise:We,resolve:Ze}=ny();return{dir:_,show(je,ht=0,Lt){let rr=Lt?"linear":G;return je-=Math.round(je*Me(ht,-1,1)),this.translate(ht),cl(y,"itemin",{percent:ht,duration:je,timing:rr,dir:_}),cl(m,"itemout",{percent:1-ht,duration:je,timing:rr,dir:_}),Promise.all([St.start(y,Ae[1],je,rr),St.start(m,Ae[0],je,rr)]).then(()=>{this.reset(),Ze()},le),We},cancel(){return St.cancel([y,m])},reset(){for(let je in Ae[0])Ee([y,m],je,"")},async forward(je,ht=this.percent()){return await this.cancel(),this.show(je,ht,!0)},translate(je){this.reset();let ht=re(je,_);Ee(y,ht[1]),Ee(m,ht[0]),cl(y,"itemtranslatein",{percent:je,dir:_}),cl(m,"itemtranslateout",{percent:1-je,dir:_})},percent(){return J(m||y,y,_)},getDistance(){return m?.offsetWidth}}}function cl(m,y,_){It(m,Eo(y,!1,!1,_))}function ny(){let m;return{promise:new Promise(y=>m=y),resolve:m}}var _m={props:{i18n:Object},data:{i18n:null},methods:{t(m,...y){var _,P,G;let J=0;return((G=((_=this.i18n)==null?void 0:_[m])||((P=this.$options.i18n)==null?void 0:P[m]))==null?void 0:G.replace(/%s/g,()=>y[J++]||""))||""}}},GS={props:{autoplay:Boolean,autoplayInterval:Number,pauseOnHover:Boolean},data:{autoplay:!1,autoplayInterval:7e3,pauseOnHover:!0},connected(){rt(this.list,"aria-live",this.autoplay?"off":"polite"),this.autoplay&&this.startAutoplay()},disconnected(){this.stopAutoplay()},update(){rt(this.slides,"tabindex","-1")},events:[{name:"visibilitychange",el:()=>document,filter:({autoplay:m})=>m,handler(){document.hidden?this.stopAutoplay():this.startAutoplay()}}],methods:{startAutoplay(){this.stopAutoplay(),this.interval=setInterval(()=>{this.stack.length||this.draggable&&Kt(this.$el,":focus-within")&&!Kt(this.$el,":focus")||this.pauseOnHover&&Kt(this.$el,":hover")||this.show("next")},this.autoplayInterval)},stopAutoplay(){clearInterval(this.interval)}}};let $c={passive:!1,capture:!0},Gi={passive:!0,capture:!0},jn="touchstart mousedown",ii="touchmove mousemove",$n="touchend touchcancel mouseup click input scroll",wf=m=>m.preventDefault();var YS={props:{draggable:Boolean},data:{draggable:!0,threshold:10},created(){for(let m of["start","move","end"]){let y=this[m];this[m]=_=>{let P=ot(_).x*(qt?-1:1);this.prevPos=P===this.pos?this.prevPos:this.pos,this.pos=P,y(_)}}},events:[{name:jn,passive:!0,delegate:({selList:m})=>`${m} > *`,handler(m){!this.draggable||this.parallax||!Xe(m)&&ZS(m.target)||m.target.closest(ft)||m.button>0||this.length<2||this.start(m)}},{name:"dragstart",handler(m){m.preventDefault()}},{name:ii,el:({list:m})=>m,handler:le,...$c}],methods:{start(){this.drag=this.pos,this._transitioner?(this.percent=this._transitioner.percent(),this.drag+=this._transitioner.getDistance()*this.percent*this.dir,this._transitioner.cancel(),this._transitioner.translate(this.percent),this.dragging=!0,this.stack=[]):this.prevIndex=this.index,Gt(document,ii,this.move,$c),Gt(document,$n,this.end,Gi),Ee(this.list,"userSelect","none")},move(m){let y=this.pos-this.drag;if(y===0||this.prevPos===this.pos||!this.dragging&&Math.abs(y)re;)this.drag-=re*this.dir,P=J,G-=re,J=this.getIndex(P+this.dir),re=Wc.call(this,P,J);this.percent=G/re;let ce=_[P],Ae=_[J],We=this.index!==J,Ze=P===J,je;for(let ht of[this.index,this.prevIndex])f([J,P],ht)||(It(_[ht],"itemhidden",[this]),Ze&&(je=!0,this.prevIndex=P));(this.index===P&&this.prevIndex!==P||je)&&It(_[this.index],"itemshown",[this]),We&&(this.prevIndex=P,this.index=J,Ze||(It(ce,"beforeitemhide",[this]),It(ce,"itemhide",[this])),It(Ae,"beforeitemshow",[this]),It(Ae,"itemshow",[this])),this._transitioner=this._translate(Math.abs(this.percent),ce,!Ze&&Ae)},end(){if(Ui(document,ii,this.move,$c),Ui(document,$n,this.end,Gi),this.dragging)if(this.dragging=null,this.index===this.prevIndex)this.percent=1-this.percent,this.dir*=-1,this._show(!1,this.index,!0),this._transitioner=null;else{let m=(qt?this.dir*(qt?1:-1):this.dir)<0==this.prevPos>this.pos;this.index=m?this.index:this.prevIndex,m&&(It(this.slides[this.prevIndex],"itemhidden",[this]),It(this.slides[this.index],"itemshown",[this]),this.percent=1-this.percent),this.show(this.dir>0&&!m||this.dir<0&&m?"next":"previous",!0)}setTimeout(()=>Ui(this.list,"click",wf,$c)),Ee(this.list,{userSelect:""}),this.drag=this.percent=null}}};function Wc(m,y){return this._getTransitioner(m,m!==y&&y).getDistance()||this.slides[m].offsetWidth}function ZS(m){return Ee(m,"userSelect")!=="none"&&g(m.childNodes).some(y=>y.nodeType===3&&y.textContent.trim())}function XS(m){m._watches=[];for(let y of m.$options.watch||[])for(let[_,P]of Object.entries(y))iy(m,P,_);m._initial=!0}function iy(m,y,_){m._watches.push({name:_,...D(y)?y:{handler:y}})}function Sg(m,y){for(let{name:_,handler:P,immediate:G=!0}of m._watches)(m._initial&&G||r(y,_)&&!Z(y[_],m[_]))&&P.call(m,m[_],y[_]);m._initial=!1}function oy(m){let{computed:y}=m.$options;if(m._computed={},y)for(let _ in y)ay(m,_,y[_])}let Om={subtree:!0,childList:!0};function ay(m,y,_){m._hasComputed=!0,Object.defineProperty(m,y,{enumerable:!0,get(){let{_computed:P,$props:G,$el:J}=m;if(!r(P,y)&&(P[y]=(_.get||_).call(m,G,J),_.observe&&m._computedObserver)){let re=_.observe.call(m,G);m._computedObserver.observe(["~","+","-"].includes(re[0])?J.parentElement:J.getRootNode(),Om)}return P[y]},set(P){let{_computed:G}=m;G[y]=_.set?_.set.call(m,P):P,q(G[y])&&delete G[y]}})}function Ng(m){m._hasComputed&&(Yx(m,{read:()=>Sg(m,Fm(m)),events:["resize","computed"]}),m._computedObserver=og(m.$el,()=>ol(m,"computed"),Om),m._disconnect.push(()=>{m._computedObserver.disconnect(),m._computedObserver=null,Fm(m)}))}function Fm(m){let y={...m._computed};return m._computed={},y}function sy(m){for(let y of m.$options.events||[])if(r(y,"handler"))Eg(m,y);else for(let _ in y)Eg(m,{name:_,handler:y[_]})}function Eg(m,{name:y,el:_,handler:P,capture:G,passive:J,delegate:re,filter:ce,self:Ae}){ce&&!ce.call(m,m)||m._disconnect.push(Gt(_?_.call(m,m):m.$el,y,re?.call(m,m),P.bind(m),{passive:J,capture:G,self:Ae}))}function Ag(m){for(let y of m.$options.observe||[])uy(m,y)}function uy(m,y){let{observe:_,target:P=m.$el,handler:G,options:J,filter:re,args:ce}=y;if(re&&!re.call(m,m))return;let Ae=`_observe${m._disconnect.length}`;v(P)&&!r(m,Ae)&&ay(m,Ae,()=>{let je=P.call(m,m);return h(je)?H(je):je}),G=F(G)?m[G]:G.bind(m),v(J)&&(J=J.call(m,m));let We=r(m,Ae)?m[Ae]:P,Ze=_(We,G,J,ce);v(P)&&h(m[Ae])&&iy(m,{handler:Vc(Ze,J),immediate:!1},Ae),m._disconnect.push(()=>Ze.disconnect())}function Vc(m,y){return(_,P)=>{for(let G of P)f(_,G)||(m.unobserve?m.unobserve(G):m.observe&&m.disconnect());for(let G of _)(!f(P,G)||!m.unobserve)&&m.observe(G,y)}}function KS(m){let{$options:y,$props:_}=m,P=Gc(y);x(_,P);let{computed:G,methods:J}=y;for(let re in _)re in P&&(!G||!r(G,re))&&(!J||!r(J,re))&&(m[re]=_[re])}function Gc(m){let y={},{args:_=[],props:P={},el:G,id:J}=m;if(!P)return y;for(let ce in P){let Ae=i(ce),We=vt(G,Ae);q(We)||(We=P[ce]===Boolean&&We===""?!0:Am(P[ce],We),!(Ae==="target"&&a(We,"_"))&&(y[ce]=We))}let re=Mi(vt(G,J),_);for(let ce in re){let Ae=l(ce);q(P[Ae])||(y[Ae]=Am(P[Ae],re[ce]))}return y}let Ds=ue((m,y)=>{let _=Object.keys(y),P=_.concat(m).map(G=>[i(G),`data-${i(G)}`]).flat();return{attributes:_,filter:P}});function ly(m){let{$options:y,$props:_}=m,{id:P,props:G,el:J}=y;if(!G)return;let{attributes:re,filter:ce}=Ds(P,G),Ae=new MutationObserver(We=>{let Ze=Gc(y);We.some(({attributeName:je})=>{let ht=je.replace("data-","");return(ht===P?re:[l(ht),l(je)]).some(Lt=>!q(Ze[Lt])&&Ze[Lt]!==_[Lt])})&&m.$reset()});Ae.observe(J,{attributes:!0,attributeFilter:ce}),m._disconnect.push(()=>Ae.disconnect())}function bf(m,y){var _;(_=m.$options[y])==null||_.forEach(P=>P.call(m))}function Im(m){m._connected||(KS(m),bf(m,"beforeConnect"),m._connected=!0,m._disconnect=[],sy(m),Gx(m),XS(m),Ag(m),ly(m),Ng(m),bf(m,"connected"),ol(m))}function Yi(m){m._connected&&(bf(m,"beforeDisconnect"),m._disconnect.forEach(y=>y()),m._disconnect=null,bf(m,"disconnected"),m._connected=!1)}let Fr=0;function zo(m,y={}){y.data=fy(y,m.constructor.options),m.$options=pu(m.constructor.options,y,m),m.$props={},m._uid=Fr++,xu(m),yu(m),oy(m),bf(m,"created"),y.el&&m.$mount(y.el)}function xu(m){let{data:y={}}=m.$options;for(let _ in y)m.$props[_]=m[_]=y[_]}function yu(m){let{methods:y}=m.$options;if(y)for(let _ in y)m[_]=y[_].bind(m)}function fy({data:m={}},{args:y=[],props:_={}}){h(m)&&(m=m.slice(0,y.length).reduce((P,G,J)=>(D(G)?x(P,G):P[y[J]]=G,P),{}));for(let P in m)q(m[P])?delete m[P]:_[P]&&(m[P]=Am(_[P],m[P]));return m}let Zi=function(m){zo(this,m)};Zi.util=zS,Zi.options={},Zi.version="3.21.14";let cy="uk-",pl="__uikit__",wu={};function Df(m,y){var _,P;let G=cy+i(m);if(!y)return wu[G].options||(wu[G]=Zi.extend(wu[G])),wu[G];m=l(m),Zi[m]=(re,ce)=>Sf(m,re,ce);let J=(_=y.options)!=null?_:{...y};return J.id=G,J.name=m,(P=J.install)==null||P.call(J,Zi,J,m),Zi._initialized&&!J.functional&&requestAnimationFrame(()=>Sf(m,`[${G}],[data-${G}]`)),wu[G]=J}function Sf(m,y,_,...P){let G=Df(m);return G.options.functional?new G({data:D(y)?y:[y,_,...P]}):y?Jr(y).map(J)[0]:J();function J(re){let ce=pa(re,m);if(ce)if(_)ce.$destroy();else return ce;return new G({el:re,data:_})}}function ml(m){return m?.[pl]||{}}function pa(m,y){return ml(m)[y]}function py(m,y){m[pl]||(m[pl]={}),m[pl][y.$options.name]=y}function my(m,y){var _;(_=m[pl])==null||delete _[y.$options.name],L(m[pl])&&delete m[pl]}function JS(m){m.component=Df,m.getComponents=ml,m.getComponent=pa,m.update=Yc,m.use=function(_){if(!_.installed)return _.call(null,this),_.installed=!0,this},m.mixin=function(_,P){P=(F(P)?this.component(P):P)||this,P.options=pu(P.options,_)},m.extend=function(_){_||(_={});let P=this,G=function(re){zo(this,re)};return G.prototype=Object.create(P.prototype),G.prototype.constructor=G,G.options=pu(P.options,_),G.super=P,G.extend=P.extend,G};let y;Object.defineProperty(m,"container",{get(){return y||document.body},set(_){y=fr(_)}})}function Yc(m,y){m=m?U(m):document.body;for(let _ of no(m).reverse())km(_,y);Po(m,_=>km(_,y))}function km(m,y){let _=ml(m);for(let P in _)ol(_[P],y)}function dy(m){m.prototype.$mount=function(y){let _=this;py(y,_),_.$options.el=y,y.isConnected&&Im(_)},m.prototype.$destroy=function(y=!1){let _=this,{el:P}=_.$options;P&&Yi(_),bf(_,"destroy"),my(P,_),y&&Ao(_.$el)},m.prototype.$create=Sf,m.prototype.$emit=function(y){ol(this,y)},m.prototype.$update=function(y=this.$el,_){Yc(y,_)},m.prototype.$reset=function(){Yi(this),Im(this)},m.prototype.$getComponent=pa,Object.defineProperties(m.prototype,{$el:{get(){return this.$options.el}},$container:Object.getOwnPropertyDescriptor(m,"container")})}let QS=1;function bu(m,y=null){return y?.id||`${m.$options.id}-${QS++}`}var jS={i18n:{next:"Next slide",previous:"Previous slide",slideX:"Slide %s",slideLabel:"%s of %s",role:"String"},data:{selNav:!1,role:"region"},computed:{nav:({selNav:m},y)=>fr(m,y),navChildren(){return Dr(this.nav)},selNavItem:({attrItem:m})=>`[${m}],[data-${m}]`,navItems(m,y){return Jr(this.selNavItem,y)}},watch:{nav(m,y){rt(m,"role","tablist"),this.padNavitems(),y&&this.$emit()},list(m){Kr(m,"ul")&&rt(m,"role","presentation")},navChildren(m){rt(m,"role","presentation"),this.padNavitems(),this.updateNav()},navItems(m){for(let y of m){let _=vt(y,this.attrItem),P=fr("a,button",y)||y,G,J=null;if(B(_)){let re=V(_),ce=this.slides[re];ce&&(ce.id||(ce.id=bu(this,ce)),J=ce.id),G=this.t("slideX",X(_)+1),rt(P,"role","tab")}else this.list&&(this.list.id||(this.list.id=bu(this,this.list)),J=this.list.id),G=this.t(_);rt(P,{"aria-controls":J,"aria-label":rt(P,"aria-label")||G})}},slides(m){m.forEach((y,_)=>rt(y,{role:this.nav?"tabpanel":"group","aria-label":this.t("slideLabel",_+1,this.length),"aria-roledescription":this.nav?null:"slide"})),this.padNavitems()}},connected(){rt(this.$el,{role:this.role,"aria-roledescription":"carousel"})},update:[{write(){this.navItems.concat(this.nav).forEach(m=>m&&(m.hidden=!this.maxIndex)),this.updateNav()},events:["resize"]}],events:[{name:"click keydown",delegate:({selNavItem:m})=>m,filter:({parallax:m})=>!m,handler(m){m.target.closest("a,button")&&(m.type==="click"||m.keyCode===Mr.SPACE)&&(m.preventDefault(),this.show(vt(m.current,this.attrItem)))}},{name:"itemshow",handler(){this.updateNav()}},{name:"keydown",delegate:({selNavItem:m})=>m,filter:({parallax:m})=>!m,handler(m){let{current:y,keyCode:_}=m,P=vt(y,this.attrItem);if(!B(P))return;let G=_===Mr.HOME?0:_===Mr.END?"last":_===Mr.LEFT?"previous":_===Mr.RIGHT?"next":-1;~G&&(m.preventDefault(),this.show(G))}}],methods:{updateNav(){let m=this.getValidIndex();for(let y of this.navItems){let _=vt(y,this.attrItem),P=fr("a,button",y)||y;if(B(_)){let J=V(_)===m;it(y,this.clsActive,J),it(P,"uk-disabled",this.parallax),rt(P,{"aria-selected":J,tabindex:J&&!this.parallax?null:-1}),J&&P&&Kt(Ut(y),":focus-within")&&P.focus()}else it(y,"uk-invisible",this.finite&&(_==="previous"&&m===0||_==="next"&&m>=this.maxIndex))}},padNavitems(){if(!this.nav)return;let m=[];for(let y=0;yP.matches(`[${_}]`))||fr(`
  • `)}Z(m,this.navChildren)||gs(this.nav,m)}}};let eN="cubic-bezier(0.25, 0.46, 0.45, 0.94)",Lm="cubic-bezier(0.165, 0.84, 0.44, 1)";var Cg={mixins:[GS,YS,jS,_m],props:{clsActivated:String,easing:String,index:Number,finite:Boolean,velocity:Number},data:()=>({easing:"ease",finite:!1,velocity:1,index:0,prevIndex:-1,stack:[],percent:0,clsActive:"uk-active",clsActivated:"",clsEnter:"uk-slide-enter",clsLeave:"uk-slide-leave",clsSlideActive:"uk-slide-active",Transitioner:!1,transitionOptions:{}}),connected(){this.prevIndex=-1,this.index=this.getValidIndex(this.$props.index),this.stack=[]},disconnected(){Ce(this.slides,this.clsActive)},computed:{duration:({velocity:m},y)=>hy(y.offsetWidth/m),list:({selList:m},y)=>fr(m,y),maxIndex(){return this.length-1},slides(){return Dr(this.list)},length(){return this.slides.length}},watch:{slides(m,y){y&&this.$emit()}},events:{itemshow({target:m}){Te(m,this.clsEnter,this.clsSlideActive)},itemshown({target:m}){Ce(m,this.clsEnter)},itemhide({target:m}){Te(m,this.clsLeave)},itemhidden({target:m}){Ce(m,this.clsLeave,this.clsSlideActive)}},methods:{async show(m,y=!1){var _;if(this.dragging||!this.length||this.parallax)return;let{stack:P}=this,G=y?0:P.length,J=()=>{P.splice(G,1),P.length&&this.show(P.shift(),!0)};if(P[y?"unshift":"push"](m),!y&&P.length>1){P.length===2&&((_=this._transitioner)==null||_.forward(Math.min(this.duration,200)));return}let re=this.getIndex(this.index),ce=He(this.slides,this.clsActive)&&this.slides[re],Ae=this.getIndex(m,this.index),We=this.slides[Ae];if(ce===We){J();return}if(this.dir=tN(m,re),this.prevIndex=re,this.index=Ae,ce&&!It(ce,"beforeitemhide",[this])||!It(We,"beforeitemshow",[this,ce])){this.index=this.prevIndex,J();return}ce&&It(ce,"itemhide",[this]),It(We,"itemshow",[this]),await this._show(ce,We,y),ce&&It(ce,"itemhidden",[this]),It(We,"itemshown",[this]),P.shift(),this._transitioner=null,P.length&&requestAnimationFrame(()=>P.length&&this.show(P.shift(),!0))},getIndex(m=this.index,y=this.index){return Me(ie(m,this.slides,y,this.finite),0,Math.max(0,this.maxIndex))},getValidIndex(m=this.index,y=this.prevIndex){return this.getIndex(m,y)},async _show(m,y,_){if(this._transitioner=this._getTransitioner(m,y,this.dir,{easing:_?y.offsetWidth<600?eN:Lm:this.easing,...this.transitionOptions}),!_&&!m){this._translate(1);return}let{length:P}=this.stack;return this._transitioner[P>1?"forward":"show"](P>1?Math.min(this.duration,75+75/(P-1)):this.duration,this.percent)},_translate(m,y=this.prevIndex,_=this.index){let P=this._getTransitioner(y===_?!1:y,_);return P.translate(m),P},_getTransitioner(m=this.prevIndex,y=this.index,_=this.dir||1,P=this.transitionOptions){return new this.Transitioner(I(m)?this.slides[m]:m,I(y)?this.slides[y]:y,_*(qt?-1:1),P)}}};function tN(m,y){return m==="next"?1:m==="previous"||m0?1-ca(y):ca(m)},translate(m,y){return y<0?[{transform:Vr(m*100),zIndex:0},{transform:Vr(-30*(1-m)),zIndex:-1}]:[{transform:Vr(-30*m),zIndex:-1},{transform:Vr(100*(1-m)),zIndex:0}]}}};function Du(m){return`scale3d(${m}, ${m}, 1)`}var Zc={...Dg,fade:{show(){return[{opacity:0},{opacity:1}]},percent(m){return 1-Ee(m,"opacity")},translate(m){return[{opacity:1-m},{opacity:m}]}},scale:{show(){return[{opacity:0,transform:Du(1-.2)},{opacity:1,transform:Du(1)}]},percent(m){return 1-Ee(m,"opacity")},translate(m){return[{opacity:1-m,transform:Du(1-.2*m)},{opacity:m,transform:Du(1-.2+.2*m)}]}}},Tg={mixins:[bs,Mg],functional:!0,props:{delayControls:Number,preload:Number,videoAutoplay:Boolean,template:String},data:()=>({preload:1,videoAutoplay:!1,delayControls:3e3,items:[],cls:"uk-open",clsPage:"uk-lightbox-page",selList:".uk-lightbox-items",attrItem:"uk-lightbox-item",selClose:".uk-close-large",selCaption:".uk-lightbox-caption",pauseOnHover:!1,velocity:2,Animations:Zc,template:'
    '}),created(){let m=fr(this.template),y=fr(this.selList,m);this.items.forEach(()=>Dn(y,"
    "));let _=fr("[uk-close]",m),P=this.t("close");_&&P&&(_.dataset.i18n=JSON.stringify({label:P})),this.$mount(Dn(this.container,m))},events:[{name:`${_e} ${ge} keydown`,handler(){this.showControls()}},{name:"click",self:!0,delegate:({selList:m})=>`${m} > *`,handler(m){m.defaultPrevented||this.hide()}},{name:"shown",self:!0,handler(){this.showControls()}},{name:"hide",self:!0,handler(){this.hideControls(),Ce(this.slides,this.clsActive),St.stop(this.slides)}},{name:"hidden",self:!0,handler(){this.$destroy(!0)}},{name:"keyup",el:()=>document,handler({keyCode:m}){if(!this.isToggled(this.$el)||!this.draggable)return;let y=-1;m===Mr.LEFT?y="previous":m===Mr.RIGHT?y="next":m===Mr.HOME?y=0:m===Mr.END&&(y="last"),~y&&this.show(y)}},{name:"beforeitemshow",handler(m){this.isToggled()||(this.draggable=!1,m.preventDefault(),this.toggleElement(this.$el,!0,!1),this.animation=Zc.scale,Ce(m.target,this.clsActive),this.stack.splice(1,0,this.index))}},{name:"itemshow",handler(){gs(fr(this.selCaption,this.$el),this.getItem().caption||"");for(let m=-this.preload;m<=this.preload;m++)this.loadItem(this.index+m)}},{name:"itemshown",handler(){this.draggable=this.$props.draggable}},{name:"itemload",async handler(m,y){let{source:_,type:P,alt:G="",poster:J,attrs:re={}}=y;if(this.setItem(y,""),!_)return;let ce,Ae={allowfullscreen:"",style:"max-width: 100%; box-sizing: border-box;","uk-responsive":"","uk-video":`${this.videoAutoplay}`};if(P==="image"||_.match(/\.(avif|jpe?g|jfif|a?png|gif|svg|webp)($|\?)/i)){let We=dl("img",{src:_,alt:G,...re});Gt(We,"load",()=>this.setItem(y,We)),Gt(We,"error",()=>this.setError(y))}else if(P==="video"||_.match(/\.(mp4|webm|ogv)($|\?)/i)){let We=dl("video",{src:_,poster:J,controls:"",playsinline:"","uk-video":`${this.videoAutoplay}`,...re});Gt(We,"loadedmetadata",()=>this.setItem(y,We)),Gt(We,"error",()=>this.setError(y))}else if(P==="iframe"||_.match(/\.(html|php)($|\?)/i))this.setItem(y,dl("iframe",{src:_,allowfullscreen:"",class:"uk-lightbox-iframe",...re}));else if(ce=_.match(/\/\/(?:.*?youtube(-nocookie)?\..*?(?:[?&]v=|\/shorts\/)|youtu\.be\/)([\w-]{11})[&?]?(.*)?/))this.setItem(y,dl("iframe",{src:`https://www.youtube${ce[1]||""}.com/embed/${ce[2]}${ce[3]?`?${ce[3]}`:""}`,width:1920,height:1080,...Ae,...re}));else if(ce=_.match(/\/\/.*?vimeo\.[a-z]+\/(\d+)[&?]?(.*)?/))try{let{height:We,width:Ze}=await(await fetch(`https://vimeo.com/api/oembed.json?maxwidth=1920&url=${encodeURI(_)}`,{credentials:"omit"})).json();this.setItem(y,dl("iframe",{src:`https://player.vimeo.com/video/${ce[1]}${ce[2]?`?${ce[2]}`:""}`,width:Ze,height:We,...Ae,...re}))}catch{this.setError(y)}}}],methods:{loadItem(m=this.index){let y=this.getItem(m);this.getSlide(y).childElementCount||It(this.$el,"itemload",[y])},getItem(m=this.index){return this.items[ie(m,this.slides)]},setItem(m,y){It(this.$el,"itemloaded",[this,gs(this.getSlide(m),y)])},getSlide(m){return this.slides[this.items.indexOf(m)]},setError(m){this.setItem(m,'')},showControls(){clearTimeout(this.controlsTimer),this.controlsTimer=setTimeout(this.hideControls,this.delayControls),Te(this.$el,"uk-active","uk-transition-active")},hideControls(){Ce(this.$el,"uk-active","uk-transition-active")}}};function dl(m,y){let _=vs(`<${m}>`);return rt(_,y),_}var gy={install:rN,props:{toggle:String},data:{toggle:"a"},computed:{toggles:({toggle:m},y)=>Jr(m,y)},watch:{toggles(m){this.hide();for(let y of m)Kr(y,"a")&&rt(y,"role","button")}},disconnected(){this.hide()},events:{name:"click",delegate:({toggle:m})=>`${m}:not(.uk-disabled)`,handler(m){m.defaultPrevented||(m.preventDefault(),this.show(m.current))}},methods:{show(m){let y=Oe(this.toggles.map(_g),"source");if(T(m)){let{source:_}=_g(m);m=p(y,({source:P})=>_===P)}return this.panel=this.panel||this.$create("lightboxPanel",{...this.$props,items:y}),Gt(this.panel.$el,"hidden",()=>this.panel=null),this.panel.show(m)},hide(){var m;return(m=this.panel)==null?void 0:m.hide()}}};function rN(m,y){m.lightboxPanel||m.component("lightboxPanel",Tg),x(y.props,m.component("lightboxPanel").options.props)}function _g(m){let y={};for(let _ of["href","caption","type","poster","alt","attrs"])y[_==="href"?"source":_]=vt(m,_);return y.attrs=Mi(y.attrs),y}var mi={mixins:[gu],functional:!0,args:["message","status"],data:{message:"",status:"",timeout:5e3,group:"",pos:"top-center",clsContainer:"uk-notification",clsClose:"uk-notification-close",clsMsg:"uk-notification-message"},install:Bm,computed:{marginProp:({pos:m})=>`margin-${m.match(/[a-z]+(?=-)/)[0]}`,startProps(){return{opacity:0,[this.marginProp]:-this.$el.offsetHeight}}},created(){let m=`${this.clsContainer}-${this.pos}`,y=`data-${this.clsContainer}-container`,_=fr(`.${m}[${y}]`,this.container)||Dn(this.container,`
    `);this.$mount(Dn(_,``))},async connected(){let m=X(Ee(this.$el,this.marginProp));await St.start(Ee(this.$el,this.startProps),{opacity:1,[this.marginProp]:m}),this.timeout&&(this.timer=setTimeout(this.close,this.timeout))},events:{click(m){m.target.closest('a[href="#"],a[href=""]')&&m.preventDefault(),this.close()},[Pe](){this.timer&&clearTimeout(this.timer)},[$e](){this.timeout&&(this.timer=setTimeout(this.close,this.timeout))}},methods:{async close(m){let y=_=>{let P=Ut(_);It(_,"close",[this]),Ao(_),P?.hasChildNodes()||Ao(P)};this.timer&&clearTimeout(this.timer),m||await St.start(this.$el,this.startProps),y(this.$el)}}};function Bm(m){m.notification.closeAll=function(y,_){Po(document.body,P=>{let G=m.getComponent(P,"notification");G&&(!y||y===G.group)&&G.close(_)})}}var Xc={props:{media:Boolean},data:{media:!1},connected(){let m=vy(this.media,this.$el);if(this.matchMedia=!0,m){this.mediaObj=window.matchMedia(m);let y=()=>{this.matchMedia=this.mediaObj.matches,It(this.$el,Eo("mediachange",!1,!0,[this.mediaObj]))};this.offMediaObj=Gt(this.mediaObj,"change",()=>{y(),this.$emit("resize")}),y()}},disconnected(){var m;(m=this.offMediaObj)==null||m.call(this)}};function vy(m,y){if(F(m)){if(a(m,"@"))m=X(Ee(y,`--uk-breakpoint-${m.slice(1)}`));else if(isNaN(m))return m}return m&&B(m)?`(min-width: ${m}px)`:""}function Og(m){return tt(m)?Math.ceil(Math.max(0,...Jr("[stroke]",m).map(y=>{var _;return((_=y.getTotalLength)==null?void 0:_.call(y))||0}))):0}let Ss={x:Jc,y:Jc,rotate:Jc,scale:Jc,color:Pm,backgroundColor:Pm,borderColor:Pm,blur:Su,hue:Su,fopacity:Su,grayscale:Su,invert:Su,saturate:Su,sepia:Su,opacity:Rm,stroke:xy,bgx:Af,bgy:Af},{keys:Kc}=Object;var Fg={mixins:[Xc],props:vl(Kc(Ss),"list"),data:vl(Kc(Ss),void 0),computed:{props(m,y){let _={};for(let G in m)G in Ss&&!q(m[G])&&(_[G]=m[G].slice());let P={};for(let G in _)P[G]=Ss[G](G,y,_[G],_);return P}},events:{load(){this.$emit()}},methods:{reset(){for(let m in this.getCss(0))Ee(this.$el,m,"")},getCss(m){let y={};for(let _ in this.props)this.props[_](y,Me(m));return y.willChange=Object.keys(y).map(Er).join(","),y}}};function Jc(m,y,_){let P=ep(_)||{x:"px",y:"px",rotate:"deg"}[m]||"",G;return m==="x"||m==="y"?(m=`translate${s(m)}`,G=J=>X(X(J).toFixed(P==="px"?0:6))):m==="scale"&&(P="",G=J=>{var re;return ep([J])?Qn(J,"width",y,!0)/y[`offset${(re=J.endsWith)!=null&&re.call(J,"vh")?"Height":"Width"}`]:X(J)}),_.length===1&&_.unshift(m==="scale"?1:0),_=qa(_,G),(J,re)=>{J.transform=`${J.transform||""} ${m}(${Mf(_,re)}${P})`}}function Pm(m,y,_){return _.length===1&&_.unshift(Uo(y,m,"")),_=qa(_,P=>Ef(y,P)),(P,G)=>{let[J,re,ce]=Cf(_,G),Ae=J.map((We,Ze)=>(We+=ce*(re[Ze]-We),Ze===3?X(We):parseInt(We,10))).join(",");P[m]=`rgba(${Ae})`}}function Ef(m,y){return Uo(m,"color",y).split(/[(),]/g).slice(1,-1).concat(1).slice(0,4).map(X)}function Su(m,y,_){_.length===1&&_.unshift(0);let P=ep(_)||{blur:"px",hue:"deg"}[m]||"%";return m={fopacity:"opacity",hue:"hue-rotate"}[m]||m,_=qa(_),(G,J)=>{let re=Mf(_,J);G.filter=`${G.filter||""} ${m}(${re+P})`}}function Rm(m,y,_){return _.length===1&&_.unshift(Uo(y,m,"")),_=qa(_),(P,G)=>{P[m]=Mf(_,G)}}function xy(m,y,_){_.length===1&&_.unshift(0);let P=ep(_),G=Og(y);return _=qa(_.reverse(),J=>(J=X(J),P==="%"?J*G/100:J)),_.some(([J])=>J)?(Ee(y,"strokeDasharray",G),(J,re)=>{J.strokeDashoffset=Mf(_,re)}):le}function Af(m,y,_,P){_.length===1&&_.unshift(0);let G=m==="bgy"?"height":"width";P[m]=qa(_,ce=>Qn(ce,G,y));let J=["bgx","bgy"].filter(ce=>ce in P);if(J.length===2&&m==="bgx")return le;if(Uo(y,"backgroundSize","")==="cover")return nN(m,y,_,P);let re={};for(let ce of J)re[ce]=hl(y,ce);return Ig(J,re,P)}function nN(m,y,_,P){let G=jc(y);if(!G.width)return le;let J={width:y.offsetWidth,height:y.offsetHeight},re=["bgx","bgy"].filter(Ze=>Ze in P),ce={};for(let Ze of re){let je=P[Ze].map(([kr])=>kr),ht=Math.min(...je),Lt=Math.max(...je),rr=je.indexOf(ht){We(Ze,je),Ze.backgroundSize=`${Ae.width}px ${Ae.height}px`,Ze.backgroundRepeat="no-repeat"}}function hl(m,y){return Uo(m,`background-position-${y.slice(-1)}`,"")}function Ig(m,y,_){return function(P,G){for(let J of m){let re=Mf(_[J],G);P[`background-position-${J.slice(-1)}`]=`calc(${y[J]} + ${re}px)`}}}let kg={},Qc={};function jc(m){let y=Ee(m,"backgroundImage").replace(/^none|url\(["']?(.+?)["']?\)$/,"$1");if(Qc[y])return Qc[y];let _=new Image;return y&&(_.src=y,!_.naturalWidth&&!kg[y])?(Cr(_,"error load",()=>{Qc[y]=gl(_),It(m,Eo("load",!1))}),kg[y]=!0,gl(_)):Qc[y]=gl(_)}function gl(m){return{width:m.naturalWidth,height:m.naturalHeight}}function qa(m,y=X){let _=[],{length:P}=m,G=0;for(let J=0;J0;Ze--)_[J-Ze][1]=Ae+We*(G-Ze+1);G=0}}return _}function Cf(m,y){let _=p(m.slice(1),([,P])=>y<=P)+1;return[m[_-1][0],m[_][0],(y-m[_-1][1])/(m[_][1]-m[_-1][1])]}function Mf(m,y){let[_,P,G]=Cf(m,y);return _+Math.abs(_-P)*G*(_(_[P]=y,_),{})}function Tf(m,y){return y>=0?Math.pow(m,y+1):1-Math.pow(1-m,1-y)}var oN={mixins:[Fg],props:{target:String,viewport:Number,easing:Number,start:String,end:String},data:{target:!1,viewport:1,easing:1,start:0,end:0},computed:{target:({target:m},y)=>Lg(m&&qn(m,y)||y),start({start:m}){return Qn(m,"height",this.target,!0)},end({end:m,viewport:y}){return Qn(m||(y=(1-y)*100)&&`${y}vh+${y}%`,"height",this.target,!0)}},observe:[mu(),al({target:({target:m})=>m}),qo({target:({$el:m,target:y})=>[m,y,lu(y,!0)]})],update:{read({percent:m},y){if(y.has("scroll")||(m=!1),!tt(this.$el))return!1;if(!this.matchMedia)return;let _=m;return m=Tf(Bc(this.target,this.start,this.end),this.easing),{percent:m,style:_===m?!1:this.getCss(m)}},write({style:m}){if(!this.matchMedia){this.reset();return}m&&Ee(this.$el,m)},events:["scroll","resize"]}};function Lg(m){return m?"offsetTop"in m?m:Lg(Ut(m)):document.documentElement}var yy={props:{parallax:Boolean,parallaxTarget:Boolean,parallaxStart:String,parallaxEnd:String,parallaxEasing:Number},data:{parallax:!1,parallaxTarget:!1,parallaxStart:0,parallaxEnd:0,parallaxEasing:0},observe:[qo({target:({$el:m,parallaxTarget:y})=>[m,y],filter:({parallax:m})=>m}),al({filter:({parallax:m})=>m})],computed:{parallaxTarget({parallaxTarget:m},y){return m&&qn(m,y)||this.list}},update:{read(){if(!this.parallax)return!1;let m=this.parallaxTarget;if(!m)return!1;let y=Qn(this.parallaxStart,"height",m,!0),_=Qn(this.parallaxEnd,"height",m,!0),P=Tf(Bc(m,y,_),this.parallaxEasing);return{parallax:this.getIndexAt(P)}},write({parallax:m}){let[y,_]=m,P=this.getValidIndex(y+Math.ceil(_)),G=this.slides[y],J=this.slides[P],{triggerShow:re,triggerShown:ce,triggerHide:Ae,triggerHidden:We}=aN(this);if(~this.prevIndex)for(let je of new Set([this.index,this.prevIndex]))f([P,y],je)||(Ae(this.slides[je]),We(this.slides[je]));let Ze=this.prevIndex!==y||this.index!==P;this.dir=1,this.prevIndex=y,this.index=P,G!==J&&Ae(G),re(J),Ze&&ce(G),this._translate(G===J?1:_,G,J)},events:["scroll","resize"]},methods:{getIndexAt(m){let y=m*(this.length-1);return[Math.floor(y),y%1]}}};function aN(m){let{clsSlideActive:y,clsEnter:_,clsLeave:P}=m;return{triggerShow:G,triggerShown:J,triggerHide:re,triggerHidden:ce};function G(Ae){He(Ae,P)&&(re(Ae),ce(Ae)),He(Ae,y)||(It(Ae,"beforeitemshow",[m]),It(Ae,"itemshow",[m]))}function J(Ae){He(Ae,_)&&It(Ae,"itemshown",[m])}function re(Ae){He(Ae,y)||G(Ae),He(Ae,_)&&J(Ae),He(Ae,P)||(It(Ae,"beforeitemhide",[m]),It(Ae,"itemhide",[m]))}function ce(Ae){He(Ae,P)&&It(Ae,"itemhidden",[m])}}var wy={update:{write(){if(this.stack.length||this.dragging||this.parallax)return;let m=this.getValidIndex();!~this.prevIndex||this.index!==m?this.show(m):this._translate(1)},events:["resize"]}},Ti={observe:ws({target:({slides:m})=>m,targets:m=>m.getAdjacentSlides()}),methods:{getAdjacentSlides(){return[1,-1].map(m=>this.slides[this.getIndex(this.index+m)])}}};function by(m,y,_,{center:P,easing:G,list:J}){let re=m?tp(m,J,P):tp(y,J,P)+Bt(y).width*_,ce=y?tp(y,J,P):re+Bt(m).width*_*(qt?-1:1),{promise:Ae,resolve:We}=ny();return{dir:_,show(Ze,je=0,ht){let Lt=ht?"linear":G;return Ze-=Math.round(Ze*Me(je,-1,1)),Ee(J,"transitionProperty","none"),this.translate(je),Ee(J,"transitionProperty",""),je=m?je:Me(je,0,1),cl(this.getItemIn(),"itemin",{percent:je,duration:Ze,timing:Lt,dir:_}),m&&cl(this.getItemIn(!0),"itemout",{percent:1-je,duration:Ze,timing:Lt,dir:_}),St.start(J,{transform:Vr(-ce*(qt?-1:1),"px")},Ze,Lt).then(We,le),Ae},cancel(){return St.cancel(J)},reset(){Ee(J,"transform","")},async forward(Ze,je=this.percent()){return await this.cancel(),this.show(Ze,je,!0)},translate(Ze){if(Ze===this.percent())return;let je=this.getDistance()*_*(qt?-1:1);Ee(J,"transform",Vr(Me(-ce+(je-je*Ze),-_f(J),Bt(J).width)*(qt?-1:1),"px"));let ht=this.getActives(),Lt=this.getItemIn(),rr=this.getItemIn(!0);Ze=m?Me(Ze,-1,1):0;for(let Sr of Dr(J)){let kr=f(ht,Sr),Eu=Sr===Lt,Gm=Sr===rr,Ym=Eu||!Gm&&(kr||_*(qt?-1:1)===-1^rp(Sr,J)>rp(m||y));cl(Sr,`itemtranslate${Ym?"in":"out"}`,{dir:_,percent:Gm?1-Ze:Eu?Ze:kr?1:0})}},percent(){return Math.abs((new DOMMatrix(Ee(J,"transform")).m41*(qt?-1:1)+re)/(ce-re))},getDistance(){return Math.abs(ce-re)},getItemIn(Ze=!1){let je=this.getActives(),ht=Bg(J,tp(y||m,J,P));if(Ze){let Lt=je;je=ht,ht=Lt}return ht[p(ht,Lt=>!f(je,Lt))]},getActives(){return Bg(J,tp(m||y,J,P))}}}function tp(m,y,_){let P=rp(m,y);return _?P-Sy(m,y):Math.min(P,Dy(y))}function Dy(m){return Math.max(0,_f(m)-Bt(m).width)}function _f(m,y){return ve(Dr(m).slice(0,y),_=>Bt(_).width)}function Sy(m,y){return Bt(y).width/2-Bt(m).width/2}function rp(m,y){return m&&(jh(m).left+(qt?Bt(m).width-Bt(y).width:0))*(qt?-1:1)||0}function Bg(m,y){y-=1;let _=Bt(m).width,P=y+_+2;return Dr(m).filter(G=>{let J=rp(G,m),re=J+Math.min(Bt(G).width,_);return J>=y&&re<=P})}var sN={mixins:[Vi,Cg,wy,yy,Ti],props:{center:Boolean,sets:Boolean,active:String},data:{center:!1,sets:!1,attrItem:"uk-slider-item",selList:".uk-slider-items",selNav:".uk-slider-nav",clsContainer:"uk-slider-container",active:"all",Transitioner:by},computed:{finite({finite:m}){return m||uN(this.list,this.center)},maxIndex(){if(!this.finite||this.center&&!this.sets)return this.length-1;if(this.center)return we(this.sets);let m=0,y=Dy(this.list),_=p(this.slides,P=>{if(m>=y-.005)return!0;m+=Bt(P).width});return~_?_:this.length-1},sets({sets:m}){if(!m||this.parallax)return;let y=0,_=[],P=Bt(this.list).width;for(let G=0;GP&&(y=0),this.center?y

    P/2&&(_.push(G),y=P/2-J/2):y===0&&_.push(Math.min(G,this.maxIndex)),y+=J}if(_.length)return _},transitionOptions(){return{center:this.center,list:this.list}},slides(){return Dr(this.list).filter(tt)}},connected(){it(this.$el,this.clsContainer,!fr(`.${this.clsContainer}`,this.$el))},observe:qo({target:({slides:m,$el:y})=>[y,...m]}),update:{write(){for(let m of this.navItems){let y=V(vt(m,this.attrItem));y!==!1&&(m.hidden=!this.maxIndex||y>this.maxIndex||this.sets&&!f(this.sets,y))}this.reorder(),this.parallax||this._translate(1),this.updateActiveClasses()},events:["resize"]},events:{beforeitemshow(m){!this.dragging&&this.sets&&this.stack.length<2&&!f(this.sets,this.index)&&(this.index=this.getValidIndex());let y=Math.abs(this.index-this.prevIndex+(this.dir>0&&this.indexthis.prevIndex?(this.maxIndex+1)*this.dir:0));if(!this.dragging&&y>1){for(let G=0;G0?"next":"previous");m.preventDefault();return}let _=this.dir<0||!this.slides[this.prevIndex]?this.index:this.prevIndex,P=_f(this.list)/this.length;this.duration=hy(P/this.velocity)*(Bt(this.slides[_]).width/P),this.reorder()},itemshow(){~this.prevIndex&&Te(this._getTransitioner().getItemIn(),this.clsActive),this.updateActiveClasses(this.prevIndex)},itemshown(){this.updateActiveClasses()}},methods:{reorder(){if(this.finite){Ee(this.slides,"order","");return}let m=this.dir>0&&this.slides[this.prevIndex]?this.prevIndex:this.index;if(this.slides.forEach((G,J)=>Ee(G,"order",this.dir>0&&J=this.index?-1:"")),!this.center||!this.length)return;let y=this.slides[m],_=Bt(this.list).width/2-Bt(y).width/2,P=0;for(;_>0;){let G=this.getIndex(--P+m,m),J=this.slides[G];Ee(J,"order",G>m?-2:-1),_-=Bt(J).width}},updateActiveClasses(m=this.index){let y=this._getTransitioner(m).getActives();this.active!=="all"&&(y=[this.slides[this.getValidIndex(m)]]);let _=[this.clsActive,!this.sets||f(this.sets,X(this.index))?this.clsActivated:""];for(let P of this.slides){let G=f(y,P);it(P,_,G),rt(P,"aria-hidden",!G);for(let J of Jr(br,P))r(J,"_tabindex")||(J._tabindex=rt(J,"tabindex")),rt(J,"tabindex",G?J._tabindex:-1)}},getValidIndex(m=this.index,y=this.prevIndex){if(m=this.getIndex(m,y),!this.sets)return m;let _;do{if(f(this.sets,m))return m;_=m,m=this.getIndex(m+this.dir,y)}while(m!==_);return m},getAdjacentSlides(){let{width:m}=Bt(this.list),y=-m,_=m*2,P=Bt(this.slides[this.index]).width,G=this.center?m/2-P/2:0,J=new Set;for(let re of[-1,1]){let ce=G+(re>0?P:0),Ae=0;do{let We=this.slides[this.getIndex(this.index+re+Ae++*re)];ce+=Bt(We).width*re,J.add(We)}while(this.length>Ae&&ce>y&&ce<_)}return Array.from(J)},getIndexAt(m){let y=-1,_=this.center?_f(this.list)-(Bt(this.slides[0]).width/2+Bt(we(this.slides)).width/2):_f(this.list,this.maxIndex),P=m*_,G=0;do{let J=Bt(this.slides[++y]).width,re=this.center?J/2+Bt(this.slides[y+1]).width/2:J;G=P/re%1,P-=re}while(P>=0&&yve(P.filter(Ze=>!Ae.has(Ze)),Ze=>Bt(Ze).width))return!0}return!1}function lN(m){return Math.max(0,...Dr(m).map(y=>Bt(y).width))}var Ns={mixins:[Fg],beforeConnect(){this.item=this.$el.closest(`.${this.$options.id.replace("parallax","items")} > *`)},disconnected(){this.item=null},events:[{name:"itemin itemout",self:!0,el:({item:m})=>m,handler({type:m,detail:{percent:y,duration:_,timing:P,dir:G}}){$i.read(()=>{if(!this.matchMedia)return;let J=this.getCss(np(m,G,y)),re=this.getCss(Of(m)?.5:G>0?1:0);$i.write(()=>{Ee(this.$el,J),St.start(this.$el,re,_,P).catch(le)})})}},{name:"transitioncanceled transitionend",self:!0,el:({item:m})=>m,handler(){St.cancel(this.$el)}},{name:"itemtranslatein itemtranslateout",self:!0,el:({item:m})=>m,handler({type:m,detail:{percent:y,dir:_}}){$i.read(()=>{if(!this.matchMedia){this.reset();return}let P=this.getCss(np(m,_,y));$i.write(()=>Ee(this.$el,P))})}}]};function Of(m){return u(m,"in")}function np(m,y,_){return _/=2,Of(m)^y<0?_:1-_}var ip={mixins:[Vi,Mg,wy,yy,Ti],props:{ratio:String,minHeight:String,maxHeight:String},data:{ratio:"16:9",minHeight:void 0,maxHeight:void 0,selList:".uk-slideshow-items",attrItem:"uk-slideshow-item",selNav:".uk-slideshow-nav",Animations:Nf},watch:{list(m){Ee(m,{aspectRatio:this.ratio?this.ratio.replace(":","/"):void 0,minHeight:this.minHeight,maxHeight:this.maxHeight,width:"100%"})}},methods:{getAdjacentSlides(){return[1,-1].map(m=>this.slides[this.getIndex(this.index+m)])}}},Es={mixins:[Vi,ul],props:{group:String,threshold:Number,clsItem:String,clsPlaceholder:String,clsDrag:String,clsDragState:String,clsBase:String,clsNoDrag:String,clsEmpty:String,clsCustom:String,handle:String},data:{group:!1,threshold:5,clsItem:"uk-sortable-item",clsPlaceholder:"uk-sortable-placeholder",clsDrag:"uk-sortable-drag",clsDragState:"uk-drag",clsBase:"uk-sortable",clsNoDrag:"uk-sortable-nodrag",clsEmpty:"uk-sortable-empty",clsCustom:"",handle:!1,pos:{}},events:{name:ge,passive:!1,handler(m){this.init(m)}},computed:{target:(m,y)=>(y.tBodies||[y])[0],items(){return Dr(this.target)},isEmpty(){return!this.items.length},handles({handle:m},y){return m?Jr(m,y):this.items}},watch:{isEmpty(m){it(this.target,this.clsEmpty,m)},handles(m,y){Ee(y,{touchAction:"",userSelect:""}),Ee(m,{touchAction:"none",userSelect:"none"})}},update:{write(m){if(!this.drag||!Ut(this.placeholder))return;let{pos:{x:y,y:_},origin:{offsetTop:P,offsetLeft:G},placeholder:J}=this;Ee(this.drag,{top:_-P,left:y-G});let re=this.getSortable(document.elementFromPoint(y,_));if(!re)return;let{items:ce}=re;if(ce.some(St.inProgress))return;let Ae=Ay(ce,{x:y,y:_});if(ce.length&&(!Ae||Ae===J))return;let We=this.getSortable(J),Ze=Cy(re.target,Ae,J,y,_,re===We&&m.moved!==Ae);Ze!==!1&&(Ze&&J===Ze||(re!==We?(We.remove(J),m.moved=Ae):delete m.moved,re.insert(J,Ze),this.touched.add(re)))},events:["move"]},methods:{init(m){let{target:y,button:_,defaultPrevented:P}=m,[G]=this.items.filter(J=>J.contains(y));!G||P||_>0||or(y)||y.closest(`.${this.clsNoDrag}`)||this.handle&&!y.closest(this.handle)||(m.preventDefault(),this.pos=ot(m),this.touched=new Set([this]),this.placeholder=G,this.origin={target:y,index:On(G),...this.pos},Gt(document,_e,this.move),Gt(document,ze,this.end),this.threshold||this.start(m))},start(m){this.drag=Ey(this.$container,this.placeholder);let{left:y,top:_}=Bt(this.placeholder);x(this.origin,{offsetLeft:this.pos.x-y,offsetTop:this.pos.y-_}),Te(this.drag,this.clsDrag,this.clsCustom),Te(this.placeholder,this.clsPlaceholder),Te(this.items,this.clsItem),Te(document.documentElement,this.clsDragState),It(this.$el,"start",[this,this.placeholder]),fN(this.pos),this.move(m)},move:Pg(function(m){x(this.pos,ot(m)),!this.drag&&(Math.abs(this.pos.x-this.origin.x)>this.threshold||Math.abs(this.pos.y-this.origin.y)>this.threshold)&&this.start(m),this.$emit("move")}),end(){if(Ui(document,_e,this.move),Ui(document,ze,this.end),!this.drag)return;Ff();let m=this.getSortable(this.placeholder);this===m?this.origin.index!==On(this.placeholder)&&It(this.$el,"moved",[this,this.placeholder]):(It(m.$el,"added",[m,this.placeholder]),It(this.$el,"removed",[this,this.placeholder])),It(this.$el,"stop",[this,this.placeholder]),Ao(this.drag),this.drag=null;for(let{clsPlaceholder:y,clsItem:_}of this.touched)for(let P of this.touched)Ce(P.items,y,_);this.touched=null,Ce(document.documentElement,this.clsDragState)},insert(m,y){Te(this.items,this.clsItem),y&&y.previousElementSibling!==m?this.animate(()=>Mc(y,m)):!y&&this.target.lastElementChild!==m&&this.animate(()=>Dn(this.target,m))},remove(m){this.target.contains(m)&&this.animate(()=>Ao(m))},getSortable(m){do{let y=this.$getComponent(m,"sortable");if(y&&(y===this||this.group!==!1&&y.group===this.group))return y}while(m=Ut(m))}}};let Ny;function fN(m){let y=Date.now();Ny=setInterval(()=>{let{x:_,y:P}=m;P+=document.scrollingElement.scrollTop;let G=(Date.now()-y)*.3;y=Date.now(),il(document.elementFromPoint(_,m.y)).reverse().some(J=>{let{scrollTop:re,scrollHeight:ce}=J,{top:Ae,bottom:We,height:Ze}=ao(J);if(AeP)re-=G;else if(We>P&&We-350&&re"),Dn(_,y.cloneNode(!0).children);for(let P of y.getAttributeNames())rt(_,P,y.getAttribute(P))}else _=y.cloneNode(!0);return Dn(m,_),Ee(_,"margin","0","important"),Ee(_,{boxSizing:"border-box",width:y.offsetWidth,height:y.offsetHeight,padding:Ee(y,"padding")}),Hi(_.firstElementChild,Hi(y.firstElementChild)),_}function Ay(m,y){return m[p(m,_=>fe(y,Bt(_)))]}function Cy(m,y,_,P,G,J){if(!Dr(m).length)return;let re=Bt(y);if(!J)return qm(m,_)||Gre[ht]-Lt?!1:y}function qm(m,y){let _=Dr(m).length===1;_&&Dn(m,y);let P=Dr(m),G=P.some((J,re)=>{let ce=Bt(J);return P.slice(re+1).some(Ae=>{let We=Bt(Ae);return!xl([ce.left,ce.right],[We.left,We.right])})});return _&&Ao(y),G}function xl(m,y){return m[1]>y[0]&&y[1]>m[0]}function Pg(m){let y;return function(..._){y||(y=!0,m.call(this,..._),requestAnimationFrame(()=>y=!1))}}var zm={props:{pos:String,offset:Boolean,flip:Boolean,shift:Boolean,inset:Boolean},data:{pos:`bottom-${qt?"right":"left"}`,offset:!1,flip:!0,shift:!0,inset:!1},connected(){this.pos=this.$props.pos.split("-").concat("center").slice(0,2),[this.dir,this.align]=this.pos,this.axis=f(["top","bottom"],this.dir)?"y":"x"},methods:{positionAt(m,y,_){let P=[this.getPositionOffset(m),this.getShiftOffset(m)],G=[this.flip&&"flip",this.shift&&"shift"],J={element:[this.inset?this.dir:Ic(this.dir),this.align],target:[this.dir,this.align]};if(this.axis==="y"){for(let Ae in J)J[Ae].reverse();P.reverse(),G.reverse()}let re=Um(m),ce=Bt(m);Ee(m,{top:-ce.height,left:-ce.width}),pg(m,y,{attach:J,offset:P,boundary:_,placement:G,viewportOffset:this.getViewportOffset(m)}),re()},getPositionOffset(m=this.$el){return Qn(this.offset===!1?Ee(m,"--uk-position-offset"):this.offset,this.axis==="x"?"width":"height",m)*(f(["left","top"],this.dir)?-1:1)*(this.inset?-1:1)},getShiftOffset(m=this.$el){return this.align==="center"?0:Qn(Ee(m,"--uk-position-shift-offset"),this.axis==="y"?"width":"height",m)*(f(["left","top"],this.align)?1:-1)},getViewportOffset(m){return Qn(Ee(m,"--uk-position-viewport-offset"))}}};function Um(m){let y=lu(m),{scrollTop:_}=y;return()=>{_!==y.scrollTop&&(y.scrollTop=_)}}var cN={mixins:[gu,vu,zm],data:{pos:"top",animation:["uk-animation-scale-up"],duration:100,cls:"uk-active"},connected(){op(this.$el)},disconnected(){this.hide()},methods:{show(){if(this.isToggled(this.tooltip||null))return;let{delay:m=0,title:y}=pN(this.$options);if(!y)return;let _=rt(this.$el,"title"),P=Gt(this.$el,["blur",$e],J=>!Xe(J)&&this.hide());this.reset=()=>{rt(this.$el,{title:_,"aria-describedby":null}),P()};let G=bu(this);rt(this.$el,{title:null,"aria-describedby":G}),clearTimeout(this.showTimer),this.showTimer=setTimeout(()=>this._show(y,G),m)},async hide(){var m;Kt(this.$el,"input:focus")||(clearTimeout(this.showTimer),this.isToggled(this.tooltip||null)&&await this.toggleElement(this.tooltip,!1,!1),(m=this.reset)==null||m.call(this),Ao(this.tooltip),this.tooltip=null)},async _show(m,y){this.tooltip=Dn(this.container,`

    `),Gt(this.tooltip,"toggled",(_,P)=>{if(!P)return;let G=()=>this.positionAt(this.tooltip,this.$el);G();let[J,re]=My(this.tooltip,this.$el,this.pos);this.origin=this.axis==="y"?`${Ic(J)}-${re}`:`${re}-${Ic(J)}`;let ce=[Cr(document,`keydown ${ge}`,this.hide,!1,Ae=>Ae.type===ge&&!this.$el.contains(Ae.target)||Ae.type==="keydown"&&Ae.keyCode===Mr.ESC),Gt([document,...fu(this.$el)],"scroll",G,{passive:!0})];Cr(this.tooltip,"hide",()=>ce.forEach(Ae=>Ae()),{self:!0})}),await this.toggleElement(this.tooltip,!0)||this.hide()}},events:{[`focus ${Pe} ${ge}`](m){(!Xe(m)||m.type===ge)&&document.readyState!=="loading"&&this.show()}}};function op(m){jr(m)||rt(m,"tabindex","0")}function My(m,y,[_,P]){let G=yr(m),J=yr(y),re=[["left","right"],["top","bottom"]];for(let Ae of re){if(G[Ae[0]]>=J[Ae[1]]){_=Ae[1];break}if(G[Ae[1]]<=J[Ae[0]]){_=Ae[0];break}}return P=(f(re[0],_)?re[1]:re[0]).find(Ae=>G[Ae]===J[Ae])||"center",[_,P]}function pN(m){let{el:y,id:_,data:P}=m;return["delay","title"].reduce((G,J)=>({[J]:vt(y,J),...G}),{...Mi(vt(y,_),["title"]),...P})}var Ty={mixins:[_m],i18n:{invalidMime:"Invalid File Type: %s",invalidName:"Invalid File Name: %s",invalidSize:"Invalid File Size: %s Kilobytes Max"},props:{allow:String,clsDragover:String,concurrent:Number,maxSize:Number,method:String,mime:String,multiple:Boolean,name:String,params:Object,type:String,url:String},data:{allow:!1,clsDragover:"uk-dragover",concurrent:1,maxSize:0,method:"POST",mime:!1,multiple:!1,name:"files[]",params:{},type:"",url:"",abort:le,beforeAll:le,beforeSend:le,complete:le,completeAll:le,error:le,fail:le,load:le,loadEnd:le,loadStart:le,progress:le},events:{change(m){Kt(m.target,'input[type="file"]')&&(m.preventDefault(),m.target.files&&this.upload(m.target.files),m.target.value="")},drop(m){Hm(m);let y=m.dataTransfer;y?.files&&(Ce(this.$el,this.clsDragover),this.upload(y.files))},dragenter(m){Hm(m)},dragover(m){Hm(m),Te(this.$el,this.clsDragover)},dragleave(m){Hm(m),Ce(this.$el,this.clsDragover)}},methods:{async upload(m){if(m=g(m),!m.length)return;It(this.$el,"upload",[m]);for(let P of m){if(this.maxSize&&this.maxSize*1e3{let G=new FormData;P.forEach(J=>G.append(this.name,J));for(let J in this.params)G.append(J,this.params[J]);try{let J=await sp(this.url,{data:G,method:this.method,responseType:this.type,beforeSend:re=>{let{xhr:ce}=re;Gt(ce.upload,"progress",this.progress);for(let Ae of["loadStart","load","loadEnd","abort"])Gt(ce,Ae.toLowerCase(),this[Ae]);return this.beforeSend(re)}});this.complete(J),y.length?await _(y.shift()):this.completeAll(J)}catch(J){this.error(J)}};await _(y.shift())}}};function ap(m,y){return y.match(new RegExp(`^${m.replace(/\//g,"\\/").replace(/\*\*/g,"(\\/[^\\/]+)*").replace(/\*/g,"[^\\/]+").replace(/((?!\\))\?/g,"$1.")}$`,"i"))}function mN(m,y){let _=[];for(let P=0;P{let{xhr:G}=y;for(let J in y)if(J in G)try{G[J]=y[J]}catch{}G.open(y.method.toUpperCase(),m);for(let J in y.headers)G.setRequestHeader(J,y.headers[J]);Gt(G,"load",()=>{G.status===0||G.status>=200&&G.status<300||G.status===304?_(G):P(x(Error(G.statusText),{xhr:G,status:G.status}))}),Gt(G,"error",()=>P(x(Error("Network Error"),{xhr:G}))),Gt(G,"timeout",()=>P(x(Error("Network Timeout"),{xhr:G}))),G.send(y.data)})}var Oy=Object.freeze({__proto__:null,Countdown:Rc,Filter:Kx,Lightbox:gy,LightboxPanel:Tg,Notification:mi,Parallax:oN,Slider:sN,SliderParallax:Ns,Slideshow:ip,SlideshowParallax:Ns,Sortable:Es,Tooltip:cN,Upload:Ty});function dN(m){nr&&window.MutationObserver&&(document.body?requestAnimationFrame(()=>$m(m)):new MutationObserver((y,_)=>{document.body&&($m(m),_.disconnect())}).observe(document.documentElement,{childList:!0}))}function $m(m){It(document,"uikit:init",m),document.body&&Po(document.body,Iy),new MutationObserver(Fy).observe(document,{subtree:!0,childList:!0,attributes:!0}),m._initialized=!0}function Fy(m){var y;for(let{addedNodes:_,removedNodes:P,target:G,attributeName:J}of m){for(let ce of _)Po(ce,Iy);for(let ce of P)Po(ce,ky);let re=J&&Rg(J);re&&(At(G,J)?Sf(re,G):(y=pa(G,re))==null||y.$destroy())}}function Iy(m){let y=ml(m);for(let _ in y)Im(y[_]);for(let _ of m.getAttributeNames()){let P=Rg(_);P&&Sf(P,m)}}function ky(m){let y=ml(m);for(let _ in y)Yi(y[_])}function Rg(m){a(m,"data-")&&(m=m.slice(5));let y=wu[m];return y&&(y.options||y).name}JS(Zi),dy(Zi);var Ly={mixins:[Vi,vu],props:{animation:Boolean,targets:String,active:null,collapsible:Boolean,multiple:Boolean,toggle:String,content:String,offset:Number},data:{targets:"> *",active:!1,animation:!0,collapsible:!0,multiple:!1,clsOpen:"uk-open",toggle:"> .uk-accordion-title",content:"> .uk-accordion-content",offset:0},computed:{items:({targets:m},y)=>Jr(m,y),toggles({toggle:m}){return this.items.map(y=>fr(m,y))},contents({content:m}){return this.items.map(y=>{var _;return((_=y._wrapper)==null?void 0:_.firstElementChild)||fr(m,y)})}},watch:{items(m,y){if(y||He(m,this.clsOpen))return;let _=this.active!==!1&&m[Number(this.active)]||!this.collapsible&&m[0];_&&this.toggle(_,!1)},toggles(){this.$emit()},contents(m){for(let y of m){let _=He(this.items.find(P=>P.contains(y)),this.clsOpen);If(y,!_)}this.$emit()}},observe:ws(),events:[{name:"click keydown",delegate:({targets:m,$props:y})=>`${m} ${y.toggle}`,async handler(m){var y;m.type==="keydown"&&m.keyCode!==Mr.SPACE||(m.preventDefault(),(y=this._off)==null||y.call(this),this._off=lp(m.target),await this.toggle(On(this.toggles,m.current)),this._off())}},{name:"shown hidden",self:!0,delegate:({targets:m})=>m,handler(){this.$emit()}}],update(){let m=fi(this.items,`.${this.clsOpen}`);for(let y in this.items){let _=this.toggles[y],P=this.contents[y];if(!_||!P)continue;_.id=bu(this,_),P.id=bu(this,P);let G=f(m,this.items[y]);rt(_,{role:Kr(_,"a")?"button":null,"aria-controls":P.id,"aria-expanded":G,"aria-disabled":!this.collapsible&&m.length<2&&G}),rt(P,{role:"region","aria-labelledby":_.id}),Kr(P,"ul")&&rt(Dr(P),"role","presentation")}},methods:{toggle(m,y){m=this.items[ie(m,this.items)];let _=[m],P=fi(this.items,`.${this.clsOpen}`);if(!this.multiple&&!f(P,_[0])&&(_=_.concat(P)),!(!this.collapsible&&P.length<2&&f(P,m)))return Promise.all(_.map(G=>this.toggleElement(G,!f(P,G),(J,re)=>{if(it(J,this.clsOpen,re),y===!1||!this.animation){If(fr(this.content,J),!re);return}return up(J,re,this)})))}}};function If(m,y){m&&(m.hidden=y)}async function up(m,y,{content:_,duration:P,velocity:G,transition:J}){var re;_=((re=m._wrapper)==null?void 0:re.firstElementChild)||fr(_,m),m._wrapper||(m._wrapper=xm(_,"
    "));let ce=m._wrapper;Ee(ce,"overflow","hidden");let Ae=X(Ee(ce,"height"));await St.cancel(ce),If(_,!1);let We=ve(["marginTop","marginBottom"],je=>Ee(_,je))+Bt(_).height,Ze=Ae/We;P=(G*We+P)*(y?1-Ze:Ze),Ee(ce,"height",Ae),await St.start(ce,{height:y?We:0},P,J),Co(_),delete m._wrapper,y||If(_,!0)}function lp(m){let y=lu(m,!0),_;return function P(){_=requestAnimationFrame(()=>{let{top:G}=Bt(m);G<0&&(y.scrollTop+=G),P()})}(),()=>requestAnimationFrame(()=>cancelAnimationFrame(_))}var hN={mixins:[Vi,vu],args:"animation",props:{animation:Boolean,close:String},data:{animation:!0,selClose:".uk-alert-close",duration:150},events:{name:"click",delegate:({selClose:m})=>m,handler(m){m.preventDefault(),this.close()}},methods:{async close(){await this.toggleElement(this.$el,!1,By),this.$destroy(!0)}}};function By(m,y,{duration:_,transition:P,velocity:G}){let J=X(Ee(m,"height"));return Ee(m,"height",J),St.start(m,{height:0,marginTop:0,marginBottom:0,paddingTop:0,paddingBottom:0,borderTop:0,borderBottom:0,opacity:0},G*J+_,P)}var Py={args:"autoplay",props:{automute:Boolean,autoplay:Boolean},data:{automute:!1,autoplay:!0},beforeConnect(){this.autoplay==="inview"&&!At(this.$el,"preload")&&(this.$el.preload="none"),Kr(this.$el,"iframe")&&!At(this.$el,"allow")&&(this.$el.allow="autoplay"),this.autoplay==="hover"&&(Kr(this.$el,"video")?this.$el.tabindex=0:this.autoplay=!0),this.automute&&Px(this.$el)},events:[{name:`${Pe} focusin`,filter:({autoplay:m})=>f(m,"hover"),handler(m){!Xe(m)||!gN(this.$el)?sf(this.$el):xs(this.$el)}},{name:`${$e} focusout`,filter:({autoplay:m})=>f(m,"hover"),handler(m){Xe(m)||xs(this.$el)}}],observe:[pf({filter:({autoplay:m})=>m!=="hover",handler([{isIntersecting:m}]){document.fullscreenElement||(m?this.autoplay&&sf(this.$el):xs(this.$el))},args:{intersecting:!1},options:({$el:m,autoplay:y})=>({root:y==="inview"?null:Ut(m).closest(":not(a)")})})]};function gN(m){return!m.paused&&!m.ended}var vN={mixins:[Py],props:{width:Number,height:Number},data:{automute:!0},created(){this.useObjectFit=Kr(this.$el,"img","video")},observe:qo({target:({$el:m})=>Ry(m)||Ut(m),filter:({useObjectFit:m})=>!m}),update:{read(){if(this.useObjectFit)return!1;let{ratio:m,cover:y}=Re,{$el:_,width:P,height:G}=this,J={width:P,height:G};if(!P||!G){let We={width:_.naturalWidth||_.videoWidth||_.clientWidth,height:_.naturalHeight||_.videoHeight||_.clientHeight};P?J=m(We,"width",P):G?J=m(We,"height",G):J=We}let{offsetHeight:re,offsetWidth:ce}=Ry(_)||Ut(_),Ae=y(J,{width:ce,height:re});return!Ae.width||!Ae.height?!1:Ae},write({height:m,width:y}){Ee(this.$el,{height:m,width:y})},events:["resize"]}};function Ry(m){for(;m=Ut(m);)if(Ee(m,"position")!=="static")return m}let oi;var qy={mixins:[gu,zm,vu],args:"pos",props:{mode:"list",toggle:Boolean,boundary:Boolean,boundaryX:Boolean,boundaryY:Boolean,target:Boolean,targetX:Boolean,targetY:Boolean,stretch:Boolean,delayShow:Number,delayHide:Number,autoUpdate:Boolean,clsDrop:String,animateOut:Boolean,bgScroll:Boolean,closeOnScroll:Boolean},data:{mode:["click","hover"],toggle:"- *",boundary:!1,boundaryX:!1,boundaryY:!1,target:!1,targetX:!1,targetY:!1,stretch:!1,delayShow:0,delayHide:800,autoUpdate:!0,clsDrop:!1,animateOut:!1,bgScroll:!0,animation:["uk-animation-fade"],cls:"uk-open",container:!1,closeOnScroll:!1},computed:{boundary({boundary:m,boundaryX:y,boundaryY:_},P){return[qn(y||m,P)||window,qn(_||m,P)||window]},target({target:m,targetX:y,targetY:_},P){return y||(y=m||this.targetEl),_||(_=m||this.targetEl),[y===!0?window:qn(y,P),_===!0?window:qn(_,P)]}},created(){this.tracker=new ig},beforeConnect(){this.clsDrop=this.$props.clsDrop||this.$options.id},connected(){Te(this.$el,"uk-drop",this.clsDrop),this.toggle&&!this.targetEl&&(this.targetEl=zy(this)),this._style=De(this.$el.style,["width","height"])},disconnected(){this.isActive()&&(this.hide(!1),oi=null),Ee(this.$el,this._style)},events:[{name:"click",delegate:()=>".uk-drop-close",handler(m){m.preventDefault(),this.hide(!1)}},{name:"click",delegate:()=>'a[href*="#"]',handler({defaultPrevented:m,current:y}){let{hash:_}=y;!m&&_&&Ia(y)&&!this.$el.contains(fr(_))&&this.hide(!1)}},{name:"beforescroll",handler(){this.hide(!1)}},{name:"toggle",self:!0,handler(m,y){m.preventDefault(),this.isToggled()?this.hide(!1):this.show(y?.$el,!1)}},{name:"toggleshow",self:!0,handler(m,y){m.preventDefault(),this.show(y?.$el)}},{name:"togglehide",self:!0,handler(m){m.preventDefault(),Kt(this.$el,":focus,:hover")||this.hide()}},{name:`${Pe} focusin`,filter:({mode:m})=>f(m,"hover"),handler(m){Xe(m)||this.clearTimers()}},{name:`${$e} focusout`,filter:({mode:m})=>f(m,"hover"),handler(m){!Xe(m)&&m.relatedTarget&&this.hide()}},{name:"toggled",self:!0,handler(m,y){y&&(this.clearTimers(),this.position())}},{name:"show",self:!0,handler(){oi=this,this.tracker.init(),rt(this.targetEl,"aria-expanded",!0);let m=[qg(this),yN(this),kf(this),this.autoUpdate&&zg(this),this.closeOnScroll&&Uy(this)];Cr(this.$el,"hide",()=>m.forEach(y=>y&&y()),{self:!0}),this.bgScroll||Cr(this.$el,"hidden",Qx(this.$el),{self:!0})}},{name:"beforehide",self:!0,handler(){this.clearTimers()}},{name:"hide",handler({target:m}){if(this.$el!==m){oi=oi===null&&this.$el.contains(m)&&this.isToggled()?this:oi;return}oi=this.isActive()?null:oi,this.tracker.cancel(),rt(this.targetEl,"aria-expanded",null)}}],update:{write(){this.isToggled()&&!He(this.$el,this.clsEnter)&&this.position()}},methods:{show(m=this.targetEl,y=!0){if(this.isToggled()&&m&&this.targetEl&&m!==this.targetEl&&this.hide(!1,!1),this.targetEl=m,this.clearTimers(),!this.isActive()){if(oi){if(y&&oi.isDelaying()){this.showTimer=setTimeout(()=>Kt(m,":hover")&&this.show(),10);return}let _;for(;oi&&_!==oi&&!oi.$el.contains(this.$el);)_=oi,oi.hide(!1,!1)}this.container&&Ut(this.$el)!==this.container&&Dn(this.container,this.$el),this.showTimer=setTimeout(()=>this.toggleElement(this.$el,!0),y&&this.delayShow||0)}},hide(m=!0,y=!0){let _=()=>this.toggleElement(this.$el,!1,this.animateOut&&y);this.clearTimers(),this.isDelayedHide=m,m&&this.isDelaying()?this.hideTimer=setTimeout(this.hide,50):m&&this.delayHide?this.hideTimer=setTimeout(_,this.delayHide):_()},clearTimers(){clearTimeout(this.showTimer),clearTimeout(this.hideTimer),this.showTimer=null,this.hideTimer=null},isActive(){return oi===this},isDelaying(){return[this.$el,...Jr(".uk-drop",this.$el)].some(m=>this.tracker.movesTo(m))},position(){let m=Um(this.$el);Ce(this.$el,"uk-drop-stack"),Ee(this.$el,this._style),this.$el.hidden=!0;let y=this.target.map(J=>xN(this.$el,J)),_=this.getViewportOffset(this.$el),P=[[0,["x","width","left","right"]],[1,["y","height","top","bottom"]]];for(let[J,[re,ce]]of P)this.axis!==re&&f([re,!0],this.stretch)&&Ee(this.$el,{[ce]:Math.min(yr(this.boundary[J])[ce],y[J][ce]-2*_),[`overflow-${re}`]:"auto"});let G=y[0].width-2*_;this.$el.hidden=!1,Ee(this.$el,"maxWidth",""),this.$el.offsetWidth>G&&Te(this.$el,"uk-drop-stack"),Ee(this.$el,"maxWidth",G),this.positionAt(this.$el,this.target,this.boundary);for(let[J,[re,ce,Ae,We]]of P)if(this.axis===re&&f([re,!0],this.stretch)){let Ze=Math.abs(this.getPositionOffset()),je=yr(this.target[J]),ht=yr(this.$el);Ee(this.$el,{[ce]:(je[Ae]>ht[Ae]?je[this.inset?We:Ae]-Math.max(yr(this.boundary[J])[Ae],y[J][Ae]+_):Math.min(yr(this.boundary[J])[We],y[J][We]-_)-je[this.inset?Ae:We])-Ze,[`overflow-${re}`]:"auto"}),this.positionAt(this.$el,this.target,this.boundary)}m()}}};function xN(m,y){return ao(fu(y).find(_=>_.contains(m)))}function zy(m){let{$el:y}=m.$create("toggle",qn(m.toggle,m.$el),{target:m.$el,mode:m.mode});return rt(y,"aria-haspopup",!0),y}function qg(m){let y=()=>m.$emit(),_=[Dm(y),Lc(fu(m.$el).concat(m.target),y)];return()=>_.map(P=>P.disconnect())}function zg(m,y=()=>m.$emit()){return Gt([document,...fu(m.$el)],"scroll",y,{passive:!0})}function yN(m){return Gt(document,"keydown",y=>{y.keyCode===Mr.ESC&&m.hide(!1)})}function Uy(m){return zg(m,()=>m.hide(!1))}function kf(m){return Gt(document,ge,({target:y})=>{m.$el.contains(y)||Cr(document,`${ze} ${W} scroll`,({defaultPrevented:_,type:P,target:G})=>{var J;!_&&P===ze&&y===G&&!((J=m.targetEl)!=null&&J.contains(y))&&m.hide(!1)},!0)})}var Ug={mixins:[Vi,gu],props:{align:String,clsDrop:String,boundary:Boolean,dropbar:Boolean,dropbarAnchor:Boolean,duration:Number,mode:Boolean,offset:Boolean,stretch:Boolean,delayShow:Boolean,delayHide:Boolean,target:Boolean,targetX:Boolean,targetY:Boolean,animation:Boolean,animateOut:Boolean,closeOnScroll:Boolean},data:{align:qt?"right":"left",clsDrop:"uk-dropdown",clsDropbar:"uk-dropnav-dropbar",boundary:!0,dropbar:!1,dropbarAnchor:!1,duration:200,container:!1,selNavItem:"> li > a, > ul > li > a"},computed:{dropbarAnchor:({dropbarAnchor:m},y)=>qn(m,y)||y,dropbar({dropbar:m}){return m?(m=this._dropbar||qn(m,this.$el)||fr(`+ .${this.clsDropbar}`,this.$el),m||(this._dropbar=fr("
    "))):null},dropContainer(m,y){return this.container||y},dropdowns({clsDrop:m},y){var _;let P=Jr(`.${m}`,y);if(this.dropContainer!==y)for(let G of Jr(`.${m}`,this.dropContainer)){let J=(_=this.getDropdown(G))==null?void 0:_.targetEl;!f(P,G)&&J&&this.$el.contains(J)&&P.push(G)}return P},items({selNavItem:m},y){return Jr(m,y)}},watch:{dropbar(m){Te(m,"uk-dropbar","uk-dropbar-top",this.clsDropbar,`uk-${this.$options.name}-dropbar`)},dropdowns(){this.initializeDropdowns()}},connected(){this.initializeDropdowns()},disconnected(){Ao(this._dropbar),delete this._dropbar},events:[{name:"mouseover focusin",delegate:({selNavItem:m})=>m,handler({current:m}){let y=this.getActive();y&&f(y.mode,"hover")&&y.targetEl&&!m.contains(y.targetEl)&&!y.isDelaying()&&y.hide(!1)}},{name:"keydown",self:!0,delegate:({selNavItem:m})=>m,handler(m){var y;let{current:_,keyCode:P}=m,G=this.getActive();P===Mr.DOWN&&G?.targetEl===_&&(m.preventDefault(),(y=fr(br,G.$el))==null||y.focus()),fp(m,this.items,G)}},{name:"keydown",el:({dropContainer:m})=>m,delegate:({clsDrop:m})=>`.${m}`,handler(m){var y;let{current:_,keyCode:P,target:G}=m;if(or(G)||!f(this.dropdowns,_))return;let J=this.getActive(),re=-1;if(P===Mr.HOME?re=0:P===Mr.END?re="last":P===Mr.UP?re="previous":P===Mr.DOWN?re="next":P===Mr.ESC&&((y=J.targetEl)==null||y.focus()),~re){m.preventDefault();let ce=Jr(br,_);ce[ie(re,ce,p(ce,Ae=>Kt(Ae,":focus")))].focus()}fp(m,this.items,J)}},{name:"mouseleave",el:({dropbar:m})=>m,filter:({dropbar:m})=>m,handler(){let m=this.getActive();m&&f(m.mode,"hover")&&!this.dropdowns.some(y=>Kt(y,":hover"))&&m.hide()}},{name:"beforeshow",el:({dropContainer:m})=>m,filter:({dropbar:m})=>m,handler({target:m}){this.isDropbarDrop(m)&&(this.dropbar.previousElementSibling!==this.dropbarAnchor&&Tc(this.dropbarAnchor,this.dropbar),Te(m,`${this.clsDrop}-dropbar`))}},{name:"show",el:({dropContainer:m})=>m,filter:({dropbar:m})=>m,handler({target:m}){if(!this.isDropbarDrop(m))return;let y=this.getDropdown(m),_=()=>{let P=Math.max(...no(m,`.${this.clsDrop}`).concat(m).map(G=>yr(G).bottom));yr(this.dropbar,{left:yr(this.dropbar).left,top:this.getDropbarOffset(y.getPositionOffset())}),this.transitionTo(P-yr(this.dropbar).top+X(Ee(m,"marginBottom")),m)};this._observer=Lc([y.$el,...y.target],_),_()}},{name:"beforehide",el:({dropContainer:m})=>m,filter:({dropbar:m})=>m,handler(m){let y=this.getActive();Kt(this.dropbar,":hover")&&y.$el===m.target&&this.isDropbarDrop(y.$el)&&f(y.mode,"hover")&&y.isDelayedHide&&!this.items.some(_=>y.targetEl!==_&&Kt(_,":focus"))&&m.preventDefault()}},{name:"hide",el:({dropContainer:m})=>m,filter:({dropbar:m})=>m,handler({target:m}){var y;if(!this.isDropbarDrop(m))return;(y=this._observer)==null||y.disconnect();let _=this.getActive();(!_||_.$el===m)&&this.transitionTo(0)}}],methods:{getActive(){var m;return f(this.dropdowns,(m=oi)==null?void 0:m.$el)&&oi},async transitionTo(m,y){let{dropbar:_}=this,P=Hi(_);if(y=P0&&Ee(y,"transitionDelay",`${G/m*this.duration}ms`)}Ee(y,"clipPath",`polygon(0 0,100% 0,100% ${P}px,0 ${P}px)`),Hi(_,P),await Promise.all([St.start(_,{height:m},this.duration),St.start(y,{clipPath:`polygon(0 0,100% 0,100% ${m}px,0 ${m}px)`},this.duration).finally(()=>Ee(y,{clipPath:"",transitionDelay:""}))]).catch(le)},getDropdown(m){return this.$getComponent(m,"drop")||this.$getComponent(m,"dropdown")},isDropbarDrop(m){return f(this.dropdowns,m)&&He(m,this.clsDrop)},getDropbarOffset(m){let{$el:y,target:_,targetY:P}=this,{top:G,height:J}=yr(qn(P||_||y,y));return G+J+m},initializeDropdowns(){this.$create("drop",this.dropdowns.filter(m=>!this.getDropdown(m)),{...this.$props,flip:!1,shift:!0,pos:`bottom-${this.align}`,boundary:this.boundary===!0?this.$el:this.boundary})}}};function fp(m,y,_){var P,G,J;let{current:re,keyCode:ce}=m,Ae=-1;ce===Mr.HOME?Ae=0:ce===Mr.END?Ae="last":ce===Mr.LEFT?Ae="previous":ce===Mr.RIGHT?Ae="next":ce===Mr.TAB&&((P=_.targetEl)==null||P.focus(),(G=_.hide)==null||G.call(_,!1)),~Ae&&(m.preventDefault(),(J=_.hide)==null||J.call(_,!1),y[ie(Ae,y,y.indexOf(_.targetEl||re))].focus())}var wN={mixins:[Vi],args:"target",props:{target:Boolean},data:{target:!1},computed:{input:(m,y)=>fr(ft,y),state(){return this.input.nextElementSibling},target({target:m},y){return m&&(m===!0&&Ut(this.input)===y&&this.input.nextElementSibling||fr(m,y))}},update(){var m;let{target:y,input:_}=this;if(!y)return;let P,G=or(y)?"value":"textContent",J=y[G],re=(m=_.files)!=null&&m[0]?_.files[0].name:Kt(_,"select")&&(P=Jr("option",_).filter(ce=>ce.selected)[0])?P.textContent:_.value;J!==re&&(y[G]=re)},events:[{name:"change",handler(){this.$emit()}},{name:"reset",el:({$el:m})=>m.closest("form"),handler(){this.$emit()}}]},bN={extends:du,mixins:[Vi],name:"grid",props:{masonry:Boolean,parallax:String,parallaxStart:String,parallaxEnd:String,parallaxJustify:Boolean},data:{margin:"uk-grid-margin",clsStack:"uk-grid-stack",masonry:!1,parallax:0,parallaxStart:0,parallaxEnd:0,parallaxJustify:!1},connected(){this.masonry&&Te(this.$el,"uk-flex-top","uk-flex-wrap-top")},observe:al({filter:({parallax:m,parallaxJustify:y})=>m||y}),update:[{write({rows:m}){it(this.$el,this.clsStack,!m.some(y=>y.length>1))},events:["resize"]},{read(m){let{rows:y}=m,{masonry:_,parallax:P,parallaxJustify:G,margin:J}=this;if(P=Math.max(0,Qn(P)),!(_||P||G)||Hy(y)||y[0].some((rr,Sr)=>y.some(kr=>kr[Sr]&&kr[Sr].offsetWidth!==rr.offsetWidth)))return m.translates=m.scrollColumns=!1;let re=DN(y,J),ce,Ae;_?[ce,Ae]=sn(y,re,_==="next"):ce=Hg(y);let We=ce.map(rr=>ve(rr,"offsetHeight")+re*(rr.length-1)),Ze=Math.max(0,...We),je,ht,Lt;return(P||G)&&(je=We.map((rr,Sr)=>G?Ze-rr+P:P/(Sr%2||8)),G||(P=Math.max(...We.map((rr,Sr)=>rr+je[Sr]-Ze))),ht=Qn(this.parallaxStart,"height",this.$el,!0),Lt=Qn(this.parallaxEnd,"height",this.$el,!0)),{columns:ce,translates:Ae,scrollColumns:je,parallaxStart:ht,parallaxEnd:Lt,padding:P,height:Ae?Ze:""}},write({height:m,padding:y}){Ee(this.$el,"paddingBottom",y||""),m!==!1&&Ee(this.$el,"height",m)},events:["resize"]},{read({rows:m,scrollColumns:y,parallaxStart:_,parallaxEnd:P}){return{scrolled:y&&!Hy(m)?Bc(this.$el,_,P):!1}},write({columns:m,scrolled:y,scrollColumns:_,translates:P}){!y&&!P||m.forEach((G,J)=>G.forEach((re,ce)=>{let[Ae,We]=P&&P[J][ce]||[0,0];y&&(We+=y*_[J]),Ee(re,"transform",`translate(${Ae}px, ${We}px)`)}))},events:["scroll","resize"]}]};function Hy(m){return m.flat().some(y=>Ee(y,"position")==="absolute")}function sn(m,y,_){let P=[],G=[],J=Array(m[0].length).fill(0),re=0;for(let ce of m){qt&&ce.reverse();let Ae=0;for(let We in ce){let{offsetWidth:Ze,offsetHeight:je}=ce[We],ht=_?We:J.indexOf(Math.min(...J));yl(P,ht,ce[We]),yl(G,ht,[(ht-We)*Ze*(qt?-1:1),J[ht]-re]),J[ht]+=je+y,Ae=Math.max(Ae,je)}re+=Ae+y}return[P,G]}function DN(m,y){let _=m.flat().find(P=>He(P,y));return X(_?Ee(_,"marginTop"):Ee(m[0][0],"paddingLeft"))}function Hg(m){let y=[];for(let _ of m)for(let P in _)yl(y,P,_[P]);return y}function yl(m,y,_){m[y]||(m[y]=[]),m[y].push(_)}var ma={args:"target",props:{target:String,row:Boolean},data:{target:"> *",row:!0},computed:{elements:({target:m},y)=>Jr(m,y)},observe:qo({target:({$el:m,elements:y})=>y.reduce((_,P)=>_.concat(P,...P.children),[m])}),events:{name:"loadingdone",el:()=>document.fonts,handler(){this.$emit("resize")}},update:{read(){return{rows:(this.row?pi(this.elements):[this.elements]).map(Wm)}},write({rows:m}){for(let{heights:y,elements:_}of m)_.forEach((P,G)=>Ee(P,"minHeight",y[G]))},events:["resize"]}};function Wm(m){if(m.length<2)return{heights:[""],elements:m};let y=m.map($g),_=Math.max(...y);return{heights:m.map((P,G)=>y[G].toFixed(2)===_.toFixed(2)?"":_),elements:m}}function $g(m){let y=De(m.style,["display","minHeight"]);tt(m)||Ee(m,"display","block","important"),Ee(m,"minHeight","");let _=Bt(m).height-su(m,"height","content-box");return Ee(m,y),_}var $y={args:"target",props:{target:String},data:{target:""},computed:{target:{get:({target:m},y)=>qn(m,y),observe:({target:m})=>m}},observe:qo({target:({target:m})=>m}),update:{read(){return this.target?{height:this.target.offsetHeight}:!1},write({height:m}){Ee(this.$el,{minHeight:m})},events:["resize"]}},Wy={props:{expand:Boolean,offsetTop:Boolean,offsetBottom:Boolean,minHeight:Number},data:{expand:!1,offsetTop:!1,offsetBottom:!1,minHeight:0},observe:[mu({filter:({expand:m})=>m}),qo({target:({$el:m})=>il(m)})],update:{read(){if(!tt(this.$el))return!1;let m="",y=su(this.$el,"height","content-box"),{body:_,scrollingElement:P}=document,G=lu(this.$el),{height:J}=ao(G===_?P:G),re=P===G||_===G;if(m=`calc(${re?"100vh":`${J}px`}`,this.expand){let ce=Bt(G).height-Bt(this.$el).height;m+=` - ${ce}px`}else{if(this.offsetTop)if(re){let ce=this.offsetTop===!0?this.$el:qn(this.offsetTop,this.$el),{top:Ae}=yr(ce);m+=Ae>0&&Ae{if(!this._connected)return;let y=w(m,this.$el);return this.svgEl&&y!==this.svgEl&&Ao(this.svgEl),k.call(this,y,m),this.svgEl=y},le)},disconnected(){this.svg.then(m=>{this._connected||(be(this.$el)&&(this.$el.hidden=!1),Ao(m),this.svgEl=null)}),this.svg=null},methods:{async getSvg(){}}};function w(m,y){if(be(y)||Kr(y,"canvas")){y.hidden=!0;let P=y.nextElementSibling;return A(m,P)?P:Tc(y,m)}let _=y.lastElementChild;return A(m,_)?_:Dn(y,m)}function A(m,y){return Kr(m,"svg")&&Kr(y,"svg")&&m.innerHTML===y.innerHTML}function k(m,y){let _=["width","height"],P=_.map(J=>this[J]);P.some(J=>J)||(P=_.map(J=>rt(y,J)));let G=rt(y,"viewBox");G&&!P.some(J=>J)&&(P=G.split(" ").slice(2)),P.forEach((J,re)=>rt(m,_[re],X(J)*this.ratio||null))}let z={spinner:c,totop:d,marker:SN,"close-icon":Vy,"close-large":Wg,"drop-parent-icon":Gy,"nav-parent-icon":Yy,"nav-parent-icon-large":Vg,"navbar-parent-icon":Pr,"navbar-toggle-icon":Zy,"overlay-icon":NN,"pagination-next":Lf,"pagination-previous":EN,"search-icon":cp,"search-medium":Sn,"search-large":AN,"search-toggle-icon":cp,"slidenav-next":MN,"slidenav-next-large":CN,"slidenav-previous":Vm,"slidenav-previous-large":TN},Y={install:Wt,mixins:[b],args:"icon",props:{icon:String},isIcon:!0,beforeConnect(){Te(this.$el,"uk-icon")},methods:{async getSvg(){let m=cr(this.icon);if(!m)throw"Icon not found.";return m}}},K={args:!1,extends:Y,data:m=>({icon:i(m.constructor.options.name)}),beforeConnect(){Te(this.$el,this.$options.id)}},Q={extends:K,beforeConnect(){let m=this.$props.icon;this.icon=this.$el.closest(".uk-nav-primary")?`${m}-large`:m}},de={extends:K,mixins:[_m],i18n:{toggle:"Open Search",submit:"Submit Search"},beforeConnect(){let m=He(this.$el,"uk-search-toggle")||He(this.$el,"uk-navbar-toggle");if(this.icon=m?"search-toggle-icon":He(this.$el,"uk-search-icon")&&this.$el.closest(".uk-search-large")?"search-large":this.$el.closest(".uk-search-medium")?"search-medium":this.$props.icon,!At(this.$el,"aria-label"))if(m){let y=this.t("toggle");rt(this.$el,"aria-label",y)}else{let y=this.$el.closest("a,button");if(y){let _=this.t("submit");rt(y,"aria-label",_)}}}},Ne={extends:K,beforeConnect(){rt(this.$el,"role","status")},methods:{async getSvg(){let m=await Y.methods.getSvg.call(this);return this.ratio!==1&&Ee(fr("circle",m),"strokeWidth",1/this.ratio),m}}},qe={extends:K,mixins:[_m],beforeConnect(){let m=this.$el.closest("a,button");rt(m,"role",this.role!==null&&Kr(m,"a")?"button":this.role);let y=this.t("label");y&&!At(m,"aria-label")&&rt(m,"aria-label",y)}},Be={extends:qe,beforeConnect(){Te(this.$el,"uk-slidenav");let m=this.$props.icon;this.icon=He(this.$el,"uk-slidenav-large")?`${m}-large`:m}},Ke={extends:qe,i18n:{label:"Open menu"}},nt={extends:qe,i18n:{label:"Close"},beforeConnect(){this.icon=`close-${He(this.$el,"uk-close-large")?"large":"icon"}`}},lt={extends:qe,i18n:{label:"Open"}},pt={extends:qe,i18n:{label:"Back to top"}},wt={extends:qe,i18n:{label:"Next page"},data:{role:null}},mt={extends:qe,i18n:{label:"Previous page"},data:{role:null}},Nt={};function Wt(m){m.icon.add=(y,_)=>{let P=F(y)?{[y]:_}:y;he(P,(G,J)=>{z[J]=G,delete Nt[J]}),m._initialized&&Po(document.body,G=>he(m.getComponents(G),J=>{J.$options.isIcon&&J.icon in P&&J.$reset()}))}}let zt={twitter:"x"};function cr(m){return m=zt[m]||m,z[m]?(Nt[m]||(Nt[m]=vs(z[Gr(m)]||z[m])),Nt[m].cloneNode(!0)):null}function Gr(m){return qt?pe(pe(m,"left","right"),"previous","next"):m}var ei={args:"dataSrc",props:{dataSrc:String,sources:String,margin:String,target:String,loading:String},data:{dataSrc:"",sources:!1,margin:"50%",target:!1,loading:"lazy"},connected(){this.loading!=="lazy"?this.load():Nn(this.$el)&&(this.$el.loading="lazy",en(this.$el))},disconnected(){this.img&&(this.img.onload=""),delete this.img},observe:pf({handler(m,y){this.load(),y.disconnect()},options:({margin:m})=>({rootMargin:m}),filter:({loading:m})=>m==="lazy",target:({$el:m,$props:y})=>y.target?[m,...na(y.target,m)]:m}),methods:{load(){if(this.img)return this.img;let m=Nn(this.$el)?this.$el:In(this.$el,this.dataSrc,this.sources);return Rt(m,"loading"),en(this.$el,m.currentSrc),this.img=m}}};function en(m,y){if(Nn(m)){let _=Ut(m);(Kr(_,"picture")?Dr(_):[m]).forEach(G=>_i(G,G))}else y&&!f(m.style.backgroundImage,y)&&(Ee(m,"backgroundImage",`url(${La(y)})`),It(m,Eo("load",!1)))}let so=["data-src","data-srcset","sizes"];function _i(m,y){for(let _ of so){let P=vt(m,_);P&&rt(y,_.replace(/^(data-)+/,""),P)}}function In(m,y,_){let P=new Image;return Xi(P,_),_i(m,P),P.onload=()=>{en(m,P.currentSrc)},rt(P,"src",y),P}function Xi(m,y){if(y=ai(y),y.length){let _=vs("");for(let P of y){let G=vs("");rt(G,P),Dn(_,G)}Dn(_,m)}}function ai(m){if(!m)return[];if(a(m,"["))try{m=JSON.parse(m)}catch{m=[]}else m=Mi(m);return h(m)||(m=[m]),m.filter(y=>!L(y))}function Nn(m){return Kr(m,"img")}var kn={props:{target:String,selActive:String},data:{target:!1,selActive:!1},computed:{target:({target:m},y)=>m?Jr(m,y):y},observe:[pf({handler(m){this.isIntersecting=m.some(({isIntersecting:y})=>y),this.$emit()},target:({target:m})=>m,args:{intersecting:!1}}),Pa({target:({target:m})=>m,options:{attributes:!0,attributeFilter:["class"],attributeOldValue:!0}}),{target:({target:m})=>m,observe:(m,y)=>{let _=Lc([...H(m),document.documentElement],y),P=[Gt(document,"scroll itemshown itemhidden",y,{passive:!0,capture:!0}),Gt(document,"show hide transitionstart",G=>(y(),_.observe(G.target))),Gt(document,"shown hidden transitionend transitioncancel",G=>(y(),_.unobserve(G.target)))];return{observe:_.observe.bind(_),unobserve:_.unobserve.bind(_),disconnect(){_.disconnect(),P.map(G=>G())}}},handler(){this.$emit()}}],update:{read(){if(!this.isIntersecting)return!1;for(let m of H(this.target)){let y=!this.selActive||Kt(m,this.selActive)?hn(m):"";y!==!1&&Je(m,"uk-light uk-dark",y)}}}};function hn(m){let y=Bt(m),_=Bt(window);if(!ne(y,_))return!1;let{left:P,top:G,height:J,width:re}=y,ce;for(let Ae of[.25,.5,.75]){let We=m.ownerDocument.elementsFromPoint(Math.max(0,Math.min(P+re*Ae,_.width-1)),Math.max(0,Math.min(G+J/2,_.height-1)));for(let Ze of We){if(m.contains(Ze)||!Ki(Ze)||Ze.closest('[class*="-leave"]')&&We.some(ht=>Ze!==ht&&Kt(ht,'[class*="-enter"]')))continue;let je=Ee(Ze,"--uk-inverse");if(je){if(je===ce)return`uk-${je}`;ce=je;break}}}return ce?`uk-${ce}`:""}function Ki(m){if(Ee(m,"visibility")!=="visible")return!1;for(;m;){if(Ee(m,"opacity")==="0")return!1;m=Ut(m)}return!0}var Bf={mixins:[Vi,Xc],props:{fill:String},data:{fill:"",clsWrapper:"uk-leader-fill",clsHide:"uk-leader-hide",attrFill:"data-fill"},computed:{fill:({fill:m},y)=>m||Ee(y,"--uk-leader-fill-content")},connected(){[this.wrapper]=ym(this.$el,``)},disconnected(){Co(this.wrapper.childNodes)},observe:qo(),update:{read(){return{width:Math.trunc(this.$el.offsetWidth/2),fill:this.fill,hide:!this.matchMedia}},write({width:m,fill:y,hide:_}){it(this.wrapper,this.clsHide,_),rt(this.wrapper,this.attrFill,new Array(m).join(y))},events:["resize"]}},Nu={install:di,mixins:[bs],data:{clsPage:"uk-modal-page",selPanel:".uk-modal-dialog",selClose:'[class*="uk-modal-close"]'},events:[{name:"fullscreenchange webkitendfullscreen",capture:!0,handler(m){Kr(m.target,"video")&&this.isToggled()&&!document.fullscreenElement&&this.hide()}},{name:"show",self:!0,handler(){He(this.panel,"uk-margin-auto-vertical")?Te(this.$el,"uk-flex"):Ee(this.$el,"display","block"),Hi(this.$el)}},{name:"hidden",self:!0,handler(){Ee(this.$el,"display",""),Ce(this.$el,"uk-flex")}}]};function di({modal:m}){m.dialog=function(_,P){let G=m(fr(`
    ${_}
    `),{stack:!0,role:"alertdialog",...P});return G.show(),Gt(G.$el,"hidden",async()=>{await Promise.resolve(),G.$destroy(!0)},{self:!0}),G},m.alert=function(_,P){return y(({i18n:G})=>`
    ${F(_)?_:gs(_)}
    `,P)},m.confirm=function(_,P){return y(({i18n:G})=>`
    ${F(_)?_:gs(_)}
    `,P,()=>Promise.reject())},m.prompt=function(_,P,G){let J=y(({i18n:Ae})=>`
    `,G,()=>null,()=>ce.value),{$el:re}=J.dialog,ce=fr("input",re);return ce.value=P||"",Gt(re,"show",()=>ce.select()),J},m.i18n={ok:"Ok",cancel:"Cancel"};function y(_,P,G=le,J=le){P={bgClose:!1,escClose:!0,...P,i18n:{...m.i18n,...P?.i18n}};let re=m.dialog(_(P),P);return x(new Promise(ce=>{let Ae=Gt(re.$el,"hide",()=>ce(G()));Gt(re.$el,"submit","form",We=>{We.preventDefault(),ce(J(re)),Ae(),re.hide()})}),{dialog:re})}}var za={extends:Ly,data:{targets:"> .uk-parent",toggle:"> a",content:"> ul"}};let Ln="uk-navbar-transparent";var Gg={extends:Ug,props:{dropbarTransparentMode:Boolean},data:{clsDrop:"uk-navbar-dropdown",selNavItem:".uk-navbar-nav > li > a,a.uk-navbar-item,button.uk-navbar-item,.uk-navbar-item a,.uk-navbar-item button,.uk-navbar-toggle",dropbarTransparentMode:!1},computed:{navbarContainer:(m,y)=>y.closest(".uk-navbar-container")},watch:{items(){let m=He(this.$el,"uk-navbar-justify"),y=Jr(".uk-navbar-nav, .uk-navbar-left, .uk-navbar-right",this.$el);for(let _ of y){let P=m?Jr(".uk-navbar-nav > li > a, .uk-navbar-item, .uk-navbar-toggle",_).length:"";Ee(_,"flexGrow",P)}}},events:[{name:"show",el:({dropContainer:m})=>m,handler({target:m}){this.getTransparentMode(m)==="remove"&&He(this.navbarContainer,Ln)&&(Ce(this.navbarContainer,Ln),this._transparent=!0)}},{name:"hide",el:({dropContainer:m})=>m,async handler(m){Ut(m.target)===this.dropContainer&&(await As(),!this.getActive()&&this._transparent&&(Te(this.navbarContainer,Ln),this._transparent=null))}}],methods:{getTransparentMode(m){if(!this.navbarContainer)return;if(this.dropbar&&this.isDropbarDrop(m))return this.dropbarTransparentMode;let y=this.getDropdown(m);if(y&&He(m,"uk-dropbar"))return y.inset?"behind":"remove"},getDropbarOffset(m){let{top:y,height:_}=yr(this.navbarContainer);return y+(this.dropbarTransparentMode==="behind"?0:_+m)}}};function As(){return new Promise(m=>setTimeout(m))}var wl={mixins:[bs],args:"mode",props:{mode:String,flip:Boolean,overlay:Boolean,swiping:Boolean},data:{mode:"slide",flip:!1,overlay:!1,clsPage:"uk-offcanvas-page",clsContainer:"uk-offcanvas-container",selPanel:".uk-offcanvas-bar",clsFlip:"uk-offcanvas-flip",clsContainerAnimation:"uk-offcanvas-container-animation",clsSidebarAnimation:"uk-offcanvas-bar-animation",clsMode:"uk-offcanvas",clsOverlay:"uk-offcanvas-overlay",selClose:".uk-offcanvas-close",container:!1,swiping:!0},computed:{clsFlip:({flip:m,clsFlip:y})=>m?y:"",clsOverlay:({overlay:m,clsOverlay:y})=>m?y:"",clsMode:({mode:m,clsMode:y})=>`${y}-${m}`,clsSidebarAnimation:({mode:m,clsSidebarAnimation:y})=>m==="none"||m==="reveal"?"":y,clsContainerAnimation:({mode:m,clsContainerAnimation:y})=>m!=="push"&&m!=="reveal"?"":y,transitionElement({mode:m}){return m==="reveal"?Ut(this.panel):this.panel}},observe:Cm({filter:({swiping:m})=>m}),update:{read(){this.isToggled()&&!tt(this.$el)&&this.hide()},events:["resize"]},events:[{name:"touchmove",self:!0,passive:!1,filter:({overlay:m})=>m,handler(m){m.cancelable&&m.preventDefault()}},{name:"show",self:!0,handler(){this.mode==="reveal"&&!He(Ut(this.panel),this.clsMode)&&Te(xm(this.panel,"
    "),this.clsMode);let{body:m,scrollingElement:y}=document;Te(m,this.clsContainer,this.clsFlip),Ee(m,"touchAction","pan-y pinch-zoom"),Ee(this.$el,"display","block"),Ee(this.panel,"maxWidth",y.clientWidth),Te(this.$el,this.clsOverlay),Te(this.panel,this.clsSidebarAnimation,this.mode==="reveal"?"":this.clsMode),Hi(m),Te(m,this.clsContainerAnimation),this.clsContainerAnimation&&bl()}},{name:"hide",self:!0,handler(){Ce(document.body,this.clsContainerAnimation),Ee(document.body,"touchAction","")}},{name:"hidden",self:!0,handler(){this.clsContainerAnimation&&Oi(),this.mode==="reveal"&&He(Ut(this.panel),this.clsMode)&&Co(this.panel),Ce(this.panel,this.clsSidebarAnimation,this.clsMode),Ce(this.$el,this.clsOverlay),Ee(this.$el,"display",""),Ee(this.panel,"maxWidth",""),Ce(document.body,this.clsContainer,this.clsFlip)}},{name:"swipeLeft swipeRight",handler(m){this.isToggled()&&u(m.type,"Left")^this.flip&&this.hide()}}]};function bl(){Dl().content+=",user-scalable=0"}function Oi(){let m=Dl();m.content=m.content.replace(/,user-scalable=0$/,"")}function Dl(){return fr('meta[name="viewport"]',document.head)||Dn(document.head,'')}var Yg={mixins:[Vi],props:{selContainer:String,selContent:String,minHeight:Number},data:{selContainer:".uk-modal",selContent:".uk-modal-dialog",minHeight:150},computed:{container:({selContainer:m},y)=>y.closest(m),content:({selContent:m},y)=>y.closest(m)},observe:qo({target:({container:m,content:y})=>[m,y]}),update:{read(){return!this.content||!this.container||!tt(this.$el)?!1:{max:Math.max(this.minHeight,Hi(this.container)-(Bt(this.content).height-Hi(this.$el)))}},write({max:m}){Ee(this.$el,{minHeight:this.minHeight,maxHeight:m})},events:["resize"]}},Fte={props:["width","height"],connected(){Te(this.$el,"uk-responsive-width"),Ee(this.$el,"aspectRatio",`${this.width}/${this.height}`)}},Ite={props:{offset:Number},data:{offset:0},connected(){kte(this)},disconnected(){Lte(this)},methods:{async scrollTo(m){m=m&&fr(m)||document.body,It(this.$el,"beforescroll",[this,m])&&(await Sm(m,{offset:this.offset}),It(this.$el,"scrolled",[this,m]))}}};let Zg=new Set;function kte(m){Zg.size||Gt(document,"click",PO),Zg.add(m)}function Lte(m){Zg.delete(m),Zg.size||Ui(document,"click",PO)}function PO(m){if(!m.defaultPrevented)for(let y of Zg)y.$el.contains(m.target)&&Ia(y.$el)&&(m.preventDefault(),window.location.href!==y.$el.href&&window.history.pushState({},"",y.$el.href),y.scrollTo(ka(y.$el)))}let _N="uk-scrollspy-inview";var Bte={args:"cls",props:{cls:String,target:String,hidden:Boolean,margin:String,repeat:Boolean,delay:Number},data:()=>({cls:"",target:!1,hidden:!0,margin:"-1px",repeat:!1,delay:0}),computed:{elements:({target:m},y)=>m?Jr(m,y):[y]},watch:{elements(m){this.hidden&&Ee(fi(m,`:not(.${_N})`),"opacity",0)}},connected(){this.elementData=new Map},disconnected(){for(let[m,y]of this.elementData.entries())Ce(m,_N,y?.cls||"");delete this.elementData},observe:pf({target:({elements:m})=>m,handler(m){let y=this.elementData;for(let{target:_,isIntersecting:P}of m){y.has(_)||y.set(_,{cls:vt(_,"uk-scrollspy-class")||this.cls});let G=y.get(_);!this.repeat&&G.show||(G.show=P)}this.$emit()},options:({margin:m})=>({rootMargin:m}),args:{intersecting:!1}}),update:[{write(m){for(let[y,_]of this.elementData.entries())_.show&&!_.inview&&!_.queued?(_.queued=!0,m.promise=(m.promise||Promise.resolve()).then(()=>new Promise(P=>setTimeout(P,this.delay))).then(()=>{this.toggle(y,!0),setTimeout(()=>{_.queued=!1,this.$emit()},300)})):!_.show&&_.inview&&!_.queued&&this.repeat&&this.toggle(y,!1)}}],methods:{toggle(m,y){var _,P;let G=(_=this.elementData)==null?void 0:_.get(m);if(!G)return;(P=G.off)==null||P.call(G),Ee(m,"opacity",!y&&this.hidden?0:""),it(m,_N,y),it(m,G.cls);let J;if(J=G.cls.match(/\buk-animation-[\w-]+/g)){let re=()=>Ce(m,J);y?G.off=Cr(m,"animationcancel animationend",re,{self:!0}):re()}It(m,y?"inview":"outview"),G.inview=y}}},Pte={props:{cls:String,closest:Boolean,scroll:Boolean,target:String,offset:Number},data:{cls:"uk-active",closest:!1,scroll:!1,target:'a[href]:not([role="button"])',offset:0},computed:{links:({target:m},y)=>Jr(m,y).filter(_=>Ia(_)),elements({closest:m}){return this.links.map(y=>y.closest(m||"*"))}},watch:{links(m){this.scroll&&this.$create("scroll",m,{offset:this.offset})}},observe:[pf(),al()],update:[{read(){let m=this.links.map(Ae=>ka(Ae)).filter(Boolean),{length:y}=m;if(!y||!tt(this.$el))return!1;let _=lu(m,!0),{scrollTop:P,scrollHeight:G}=_,J=ao(_),re=G-J.height,ce=!1;if(P>=re)ce=y-1;else{let Ae=this.offset+Bt(cg()).height+J.height*.1;for(let We=0;We0);We++)ce=+We}return{active:ce}},write({active:m}){let y=m!==!1&&!He(this.elements[m],this.cls);this.links.forEach(_=>_.blur());for(let _=0;_m&&fr(m,y)||y},connected(){this.start=RO(this.start||this.top),this.end=RO(this.end||this.bottom),this.placeholder=fr("+ .uk-sticky-placeholder",this.$el)||fr('
    '),this.isFixed=!1,this.setActive(!1)},beforeDisconnect(){this.isFixed&&(this.hide(),Ce(this.target,this.clsInactive)),qO(this.$el),Ao(this.placeholder),this.placeholder=null},observe:[mu(),al({target:()=>document.scrollingElement}),qo({target:({$el:m})=>[m,Xy(m),document.scrollingElement],handler(m){this.$emit(this._data.resized&&m.some(({target:y})=>y===Xy(this.$el))?"update":"resize"),this._data.resized=!0}})],events:[{name:"load hashchange popstate",el:()=>window,filter:({targetOffset:m})=>m!==!1,handler(){let{scrollingElement:m}=document;!location.hash||m.scrollTop===0||setTimeout(()=>{let y=yr(fr(location.hash)),_=yr(this.$el);this.isFixed&&ne(y,_)&&(m.scrollTop=Math.ceil(y.top-_.height-Qn(this.targetOffset,"height",this.placeholder)-Qn(this.offset,"height",this.placeholder)))})}}],update:[{read({height:m,width:y,margin:_,sticky:P},G){if(this.inactive=!this.matchMedia||!tt(this.$el)||!this.$el.offsetHeight,this.inactive)return;let J=Hi(window),re=Math.max(0,document.scrollingElement.scrollHeight-J);if(!re){this.inactive=!0;return}let ce=this.isFixed&&G.has("update");ce&&(IN(this.target),this.hide()),this.active||({height:m,width:y}=Bt(this.$el),_=Ee(this.$el,"margin")),ce&&this.show();let Ae=Qn("100vh","height"),We=this.position;this.overflowFlip&&m>Ae&&(We=We==="top"?"bottom":"top");let Ze=this.isFixed?this.placeholder:this.$el,je=Qn(this.offset,"height",P?this.$el:Ze);We==="bottom"&&(myr(ht).top+(Ae?Math.min(ce,re):ce),offsetParentTop:yr(ht.offsetParent).top,overflowScroll:Me(P+Me(Ze,G,J)-Me(m,G,J),0,_)}},write(m,y){let _=y.has("scroll"),{initTimestamp:P=0,dir:G,prevDir:J,scroll:re,prevScroll:ce=0,top:Ae,start:We,below:Ze}=m;if(re<0||re===ce&&_||this.showOnUp&&!_&&!this.isFixed)return;let je=Date.now();if((je-P>300||G!==J)&&(m.initScroll=re,m.initTimestamp=je),!(this.showOnUp&&!this.isFixed&&Math.abs(m.initScroll-re)<=30&&Math.abs(ce-re)<=10))if(this.inactive||rere&&(hs.cancel(this.$el),this.hide());return}if(this.animation&&Ze){if(He(this.$el,"uk-animation-leave"))return;hs.out(this.$el,this.animation).then(()=>this.hide(),le)}else this.hide()}else this.isFixed?this.update():this.animation&&Ze?(this.show(),hs.in(this.$el,this.animation).catch(le)):(IN(this.target),this.show())},events:["resize","resizeViewport","scroll"]}],methods:{show(){this.isFixed=!0,this.update(),this.placeholder.hidden=!1},hide(){let{offset:m,sticky:y}=this._data;this.setActive(!1),Ce(this.$el,this.clsFixed,this.clsBelow),y?Ee(this.$el,"top",m):Ee(this.$el,{position:"",top:"",width:"",marginTop:""}),this.placeholder.hidden=!0,this.isFixed=!1},update(){let{width:m,scroll:y=0,overflow:_,overflowScroll:P=0,start:G,end:J,offset:re,offsetParentTop:ce,sticky:Ae,below:We}=this._data,Ze=G!==0||y>G;if(!Ae){let je="fixed";y>J&&(re+=J-ce+P-_,je="absolute"),Ee(this.$el,{position:je,width:m,marginTop:0},"important")}Ee(this.$el,"top",re-P),this.setActive(Ze),it(this.$el,this.clsBelow,We),Te(this.$el,this.clsFixed)},setActive(m){let y=this.active;this.active=m,m?(Je(this.target,this.clsInactive,this.clsActive),y!==m&&It(this.$el,"active")):(Je(this.target,this.clsActive,this.clsInactive),y!==m&&(IN(this.target),It(this.$el,"inactive")))}}};function ON(m,y,_,P){if(!m)return 0;if(B(m)||F(m)&&m.match(/^-?\d/))return _+Qn(m,"height",y,!0);{let G=m===!0?Xy(y):qn(m,y);return yr(G).bottom-(P&&G?.contains(y)?X(Ee(G,"paddingBottom"))+X(Ee(G,"borderBottomWidth")):0)}}function RO(m){return m==="true"?!0:m==="false"?!1:m}function qO(m){Ee(m,{position:"",top:"",marginTop:"",width:""})}let FN="uk-transition-disable";function IN(m){He(m,FN)||(Te(m,FN),requestAnimationFrame(()=>Ce(m,FN)))}function Xy(m){for(;m=Ut(m);)if(tt(m))return m}var qte={mixins:[b],args:"src",props:{src:String,icon:String,attributes:"list",strokeAnimation:Boolean},data:{strokeAnimation:!1},observe:[Pa({async handler(){let m=await this.svg;m&&zO.call(this,m)},options:{attributes:!0,attributeFilter:["id","class","style"]}})],async connected(){f(this.src,"#")&&([this.src,this.icon]=this.src.split("#"));let m=await this.svg;m&&(zO.call(this,m),this.strokeAnimation&&$te(m))},methods:{async getSvg(){return Kr(this.$el,"img")&&!this.$el.complete&&this.$el.loading==="lazy"&&await new Promise(m=>Cr(this.$el,"load",m)),Ute(await zte(this.src),this.icon)||Promise.reject("SVG not found.")}}};function zO(m){let{$el:y}=this;Te(m,rt(y,"class"),"uk-svg");for(let _=0;_{if(m){if(a(m,"data:"))return decodeURIComponent(m.split(",")[1]);{let y=await fetch(m);if(y.headers.get("Content-Type")==="image/svg+xml")return y.text()}}return Promise.reject()});function Ute(m,y){return y&&f(m,"/g,Hte=ue(function(m){let y={};UO.lastIndex=0;let _;for(;_=UO.exec(m);)y[_[3]]=``;return y});function $te(m){let y=Og(m);y&&Ee(m,"--uk-animation-stroke",y)}let kN=".uk-disabled *, .uk-disabled, [disabled]";var HO={mixins:[vu],args:"connect",props:{connect:String,toggle:String,itemNav:String,active:Number,followFocus:Boolean,swiping:Boolean},data:{connect:"~.uk-switcher",toggle:"> * > :first-child",itemNav:!1,active:0,cls:"uk-active",attrItem:"uk-switcher-item",selVertical:".uk-nav",followFocus:!1,swiping:!0},computed:{connects:{get:({connect:m},y)=>na(m,y),observe:({connect:m})=>m},connectChildren(){return this.connects.map(m=>Dr(m)).flat()},toggles:({toggle:m},y)=>Jr(m,y),children(m,y){return Dr(y).filter(_=>this.toggles.some(P=>_.contains(P)))}},watch:{connects(m){this.swiping&&Ee(m,"touchAction","pan-y pinch-zoom"),this.$emit()},connectChildren(){let m=Math.max(0,this.index());for(let y of this.connects)Dr(y).forEach((_,P)=>it(_,this.cls,P===m));this.$emit()},toggles(m){this.$emit();let y=this.index();this.show(~y?y:m[this.active]||m[0])}},connected(){rt(this.$el,"role","tablist")},observe:[ws({targets:({connectChildren:m})=>m}),Cm({target:({connects:m})=>m,filter:({swiping:m})=>m})],events:[{name:"click keydown",delegate:({toggle:m})=>m,handler(m){!Kt(m.current,kN)&&(m.type==="click"||m.keyCode===Mr.SPACE)&&(m.preventDefault(),this.show(m.current))}},{name:"keydown",delegate:({toggle:m})=>m,handler(m){let{current:y,keyCode:_}=m,P=Kt(this.$el,this.selVertical),G=_===Mr.HOME?0:_===Mr.END?"last":_===Mr.LEFT&&!P||_===Mr.UP&&P?"previous":_===Mr.RIGHT&&!P||_===Mr.DOWN&&P?"next":-1;if(~G){m.preventDefault();let J=this.toggles.filter(ce=>!Kt(ce,kN)),re=J[ie(G,J,J.indexOf(y))];re.focus(),this.followFocus&&this.show(re)}}},{name:"click",el:({$el:m,connects:y,itemNav:_})=>y.concat(_?na(_,m):[]),delegate:({attrItem:m})=>`[${m}],[data-${m}]`,handler(m){m.target.closest("a,button")&&(m.preventDefault(),this.show(vt(m.current,this.attrItem)))}},{name:"swipeRight swipeLeft",filter:({swiping:m})=>m,el:({connects:m})=>m,handler({type:m}){this.show(u(m,"Left")?"next":"previous")}}],update(){var m;for(let y of this.connects)Kr(y,"ul")&&rt(y,"role","presentation");rt(Dr(this.$el),"role","presentation");for(let y in this.toggles){let _=this.toggles[y],P=(m=this.connects[0])==null?void 0:m.children[y];rt(_,"role","tab"),P&&(_.id=bu(this,_),P.id=bu(this,P),rt(_,"aria-controls",P.id),rt(P,{role:"tabpanel","aria-labelledby":_.id}))}rt(this.$el,"aria-orientation",Kt(this.$el,this.selVertical)?"vertical":null)},methods:{index(){return p(this.children,m=>He(m,this.cls))},show(m){let y=this.toggles.filter(re=>!Kt(re,kN)),_=this.index(),P=ie(!M(m)||f(y,m)?m:0,y,ie(this.toggles[_],y)),G=ie(y[P],this.toggles);this.children.forEach((re,ce)=>{it(re,this.cls,G===ce),rt(this.toggles[ce],{"aria-selected":G===ce,tabindex:G===ce?null:-1})});let J=_>=0&&_!==P;this.connects.forEach(async({children:re})=>{let ce=g(re).filter((Ae,We)=>We!==G&&He(Ae,this.cls));await this.toggleElement(ce,!1,J)&&await this.toggleElement(re[G],!0,J)})}}},Wte={mixins:[Vi],extends:HO,props:{media:Boolean},data:{media:960,attrItem:"uk-tab-item",selVertical:".uk-tab-left,.uk-tab-right"},connected(){let m=He(this.$el,"uk-tab-left")?"uk-tab-left":He(this.$el,"uk-tab-right")?"uk-tab-right":!1;m&&this.$create("toggle",this.$el,{cls:m,mode:"media",media:this.media})}};let Vte=32;var Gte={mixins:[Xc,vu],args:"target",props:{href:String,target:null,mode:"list",queued:Boolean},data:{href:!1,target:!1,mode:"click",queued:!0},computed:{target:{get:({target:m},y)=>(m=na(m||y.hash,y),m.length?m:[y]),observe:({target:m})=>m}},connected(){f(this.mode,"media")||(jr(this.$el)||rt(this.$el,"tabindex","0"),!this.cls&&Kr(this.$el,"a")&&rt(this.$el,"role","button"))},observe:ws({targets:({target:m})=>m}),events:[{name:ge,filter:({mode:m})=>f(m,"hover"),handler(m){this._preventClick=null,!(!Xe(m)||O(this._showState)||this.$el.disabled)&&(It(this.$el,"focus"),Cr(document,ge,()=>It(this.$el,"blur"),!0,y=>!this.$el.contains(y.target)),f(this.mode,"click")&&(this._preventClick=!0))}},{name:`mouseenter mouseleave ${Pe} ${$e} focus blur`,filter:({mode:m})=>f(m,"hover"),handler(m){if(Xe(m)||this.$el.disabled||document.readyState==="loading")return;let y=f(["mouseenter",Pe,"focus"],m.type),_=this.isToggled(this.target);if(!y&&(!O(this._showState)||m.type!=="blur"&&Kt(this.$el,":focus")||m.type==="blur"&&Kt(this.$el,":hover"))){_===this._showState&&(this._showState=null);return}y&&O(this._showState)&&_!==this._showState||(this._showState=y?_:null,this.toggle(`toggle${y?"show":"hide"}`))}},{name:"keydown",filter:({$el:m,mode:y})=>f(y,"click")&&!Kr(m,"input"),handler(m){m.keyCode===Vte&&(m.preventDefault(),this.$el.click())}},{name:"click",filter:({mode:m})=>["click","hover"].some(y=>f(m,y)),handler(m){let y;(this._preventClick||m.target.closest('a[href="#"], a[href=""]')||(y=m.target.closest("a[href]"))&&(!this.isToggled(this.target)||y.hash&&Kt(this.target,y.hash)))&&m.preventDefault(),!this._preventClick&&f(this.mode,"click")&&this.toggle()}},{name:"mediachange",filter:({mode:m})=>f(m,"media"),el:({target:m})=>m,handler(m,y){y.matches^this.isToggled(this.target)&&this.toggle()}}],methods:{async toggle(m){if(!It(this.target,m||"toggle",[this]))return;if(At(this.$el,"aria-expanded")&&rt(this.$el,"aria-expanded",!this.isToggled(this.target)),!this.queued)return this.toggleElement(this.target);let y=this.target.filter(P=>He(P,this.clsLeave));if(y.length){for(let P of this.target){let G=f(y,P);this.toggleElement(P,G,G)}return}let _=this.target.filter(this.isToggled);await this.toggleElement(_,!1)&&await this.toggleElement(this.target.filter(P=>!f(_,P)),!0)}}},Yte=Object.freeze({__proto__:null,Accordion:Ly,Alert:hN,Close:nt,Cover:vN,Drop:qy,DropParentIcon:K,Dropdown:qy,Dropnav:Ug,FormCustom:wN,Grid:bN,HeightMatch:ma,HeightPlaceholder:$y,HeightViewport:Wy,Icon:Y,Img:ei,Inverse:kn,Leader:Bf,Margin:du,Marker:lt,Modal:Nu,Nav:za,NavParentIcon:Q,Navbar:Gg,NavbarParentIcon:K,NavbarToggleIcon:Ke,Offcanvas:wl,OverflowAuto:Yg,OverlayIcon:K,PaginationNext:wt,PaginationPrevious:mt,Responsive:Fte,Scroll:Ite,Scrollspy:Bte,ScrollspyNav:Pte,SearchIcon:de,SlidenavNext:Be,SlidenavPrevious:Be,Spinner:Ne,Sticky:Rte,Svg:qte,Switcher:HO,Tab:Wte,Toggle:Gte,Totop:pt,Video:Py});return he(Yte,(m,y)=>Zi.component(y,m)),dN(Zi),he(Oy,(m,y)=>Zi.component(y,m)),Zi})});var oE=st((iE,jO)=>{(function(e,t){var r=t(e);if(typeof define=="function"&&define.amd)define("DeepDiff",function(){return r});else if(typeof iE=="object"||typeof navigator=="object"&&navigator.product.match(/ReactNative/i))jO.exports=r;else{var n=e.DeepDiff;r.noConflict=function(){return e.DeepDiff===r&&(e.DeepDiff=n),r},e.DeepDiff=r}})(iE,function(e){var t=["N","E","A","D"];function r(N,O){N.super_=O,N.prototype=Object.create(O.prototype,{constructor:{value:N,enumerable:!1,writable:!0,configurable:!0}})}function n(N,O){Object.defineProperty(this,"kind",{value:N,enumerable:!0}),O&&O.length&&Object.defineProperty(this,"path",{value:O,enumerable:!0})}function i(N,O,F){i.super_.call(this,"E",N),Object.defineProperty(this,"lhs",{value:O,enumerable:!0}),Object.defineProperty(this,"rhs",{value:F,enumerable:!0})}r(i,n);function o(N,O){o.super_.call(this,"N",N),Object.defineProperty(this,"rhs",{value:O,enumerable:!0})}r(o,n);function l(N,O){l.super_.call(this,"D",N),Object.defineProperty(this,"lhs",{value:O,enumerable:!0})}r(l,n);function s(N,O,F){s.super_.call(this,"A",N),Object.defineProperty(this,"index",{value:O,enumerable:!0}),Object.defineProperty(this,"item",{value:F,enumerable:!0})}r(s,n);function a(N,O,F){var I=N.slice((F||O)+1||N.length);return N.length=O<0?N.length+O:O,N.push.apply(N,I),N}function u(N){var O=typeof N;return O!=="object"?O:N===Math?"math":N===null?"null":Array.isArray(N)?"array":Object.prototype.toString.call(N)==="[object Date]"?"date":typeof N.toString=="function"&&/^\/.*\//.test(N.toString())?"regexp":"object"}function f(N){var O=0;if(N.length===0)return O;for(var F=0;F0&&q[q.length-1].lhs&&Object.getOwnPropertyDescriptor(q[q.length-1].lhs,L),oe=H!=="undefined"||q&&q.length>0&&q[q.length-1].rhs&&Object.getOwnPropertyDescriptor(q[q.length-1].rhs,L);if(!he&&oe)F.push(new o(V,O));else if(!oe&&he)F.push(new l(V,N));else if(u(N)!==u(O))F.push(new i(V,N,O));else if(u(N)==="date"&&N-O!==0)F.push(new i(V,N,O));else if(U==="object"&&N!==null&&O!==null){for(ee=q.length-1;ee>-1;--ee)if(q[ee].lhs===N){we=!0;break}if(we)N!==O&&F.push(new i(V,N,O));else{if(q.push({lhs:N,rhs:O}),Array.isArray(N)){for(R&&(N.sort(function(De,Me){return p(De)-p(Me)}),O.sort(function(De,Me){return p(De)-p(Me)})),ee=O.length-1,Z=N.length-1;ee>Z;)F.push(new s(V,ee,new o(void 0,O[ee--])));for(;Z>ee;)F.push(new s(V,Z,new l(void 0,N[Z--])));for(;ee>=0;--ee)h(N[ee],O[ee],F,I,V,ee,q,R)}else{var ve=Object.keys(N),Oe=Object.keys(O);for(ee=0;ee=0?(h(N[pe],O[pe],F,I,V,pe,q,R),Oe[we]=null):h(N[pe],void 0,F,I,V,pe,q,R);for(ee=0;ee"u"&&O&&~t.indexOf(O.kind)&&(F=O),N&&F&&F.kind){for(var I=N,B=-1,L=F.path?F.path.length-1:0;++B"u"&&(I[F.path[B]]=typeof F.path[B+1]<"u"&&typeof F.path[B+1]=="number"?[]:{}),I=I[F.path[B]];switch(F.kind){case"A":F.path&&typeof I[F.path[B]]>"u"&&(I[F.path[B]]=[]),D(F.path?I[F.path[B]]:I,F.index,F.item);break;case"D":delete I[F.path[B]];break;case"E":case"N":I[F.path[B]]=F.rhs;break}}}function E(N,O,F){if(F.path&&F.path.length){var I=N[O],B,L=F.path.length-1;for(B=0;B"u"&&(I[F.path[B]]={}),I=I[F.path[B]];switch(F.kind){case"A":E(I[F.path[B]],F.index,F.item);break;case"D":I[F.path[B]]=F.lhs;break;case"E":I[F.path[B]]=F.lhs;break;case"N":delete I[F.path[B]];break}}}function T(N,O,F){if(N&&O){var I=function(B){(!F||F(N,O,B))&&C(N,O,B)};g(N,O,I)}}return Object.defineProperties(v,{diff:{value:v,enumerable:!0},orderIndependentDiff:{value:S,enumerable:!0},observableDiff:{value:g,enumerable:!0},orderIndependentObservableDiff:{value:x,enumerable:!0},orderIndepHash:{value:p,enumerable:!0},applyDiff:{value:T,enumerable:!0},applyChange:{value:C,enumerable:!0},revertChange:{value:M,enumerable:!0},isConflict:{value:function(){return typeof $conflict<"u"},enumerable:!0}}),v.DeepDiff=v,e&&(e.DeepDiff=v),v})});var U1=st((GE,YE)=>{(function(e,t){typeof GE=="object"&&typeof YE<"u"?YE.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self,e["'typed'"]=t())})(GE,function(){"use strict";function e(){return!0}function t(){return!1}function r(){}let n="Argument is not a typed-function.";function i(){function l(xe){return typeof xe=="object"&&xe!==null&&xe.constructor===Object}let s=[{name:"number",test:function(xe){return typeof xe=="number"}},{name:"string",test:function(xe){return typeof xe=="string"}},{name:"boolean",test:function(xe){return typeof xe=="boolean"}},{name:"Function",test:function(xe){return typeof xe=="function"}},{name:"Array",test:Array.isArray},{name:"Date",test:function(xe){return xe instanceof Date}},{name:"RegExp",test:function(xe){return xe instanceof RegExp}},{name:"Object",test:l},{name:"null",test:function(xe){return xe===null}},{name:"undefined",test:function(xe){return xe===void 0}}],a={name:"any",test:e,isAny:!0},u,f,p=0,h={createCount:0};function g(xe){let te=u.get(xe);if(te)return te;let ge='Unknown type "'+xe+'"',_e=xe.toLowerCase(),ze;for(ze of f)if(ze.toLowerCase()===_e){ge+='. Did you mean "'+ze+'" ?';break}throw new TypeError(ge)}function x(xe){let te=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"any",ge=te?g(te).index:f.length,_e=[];for(let Pe=0;Pe{let _e=u.get(ge);return!_e.isAny&&_e.test(xe)});return te.length?te:["any"]}function C(xe){return xe&&typeof xe=="function"&&"_typedFunctionData"in xe}function E(xe,te,ge){if(!C(xe))throw new TypeError(n);let _e=ge&&ge.exact,ze=Array.isArray(te)?te.join(","):te,Pe=B(ze),$e=N(Pe);if(!_e||$e in xe.signatures){let Ve=xe._typedFunctionData.signatureMap.get($e);if(Ve)return Ve}let W=Pe.length,ae;if(_e){ae=[];let Ve;for(Ve in xe.signatures)ae.push(xe._typedFunctionData.signatureMap.get(Ve))}else ae=xe._typedFunctionData.signatures;for(let Ve=0;Ve!jr.has(Ut.name)))continue}ft.push(or)}}if(ae=ft,ae.length===0)break}let be;for(be of ae)if(be.params.length<=W)return be;throw new TypeError("Signature not found (signature: "+(xe.name||"unnamed")+"("+N(Pe,", ")+"))")}function M(xe,te,ge){return E(xe,te,ge).implementation}function T(xe,te){let ge=g(te);if(ge.test(xe))return xe;let _e=ge.conversionsTo;if(_e.length===0)throw new Error("There are no conversions to "+te+" defined.");for(let ze=0;ze<_e.length;ze++)if(g(_e[ze].from).test(xe))return _e[ze].convert(xe);throw new Error("Cannot convert "+xe+" to "+te)}function N(xe){let te=arguments.length>1&&arguments[1]!==void 0?arguments[1]:",";return xe.map(ge=>ge.name).join(te)}function O(xe){let te=xe.indexOf("...")===0,_e=(te?xe.length>3?xe.slice(3):"any":xe).split("|").map(W=>g(W.trim())),ze=!1,Pe=te?"...":"";return{types:_e.map(function(W){return ze=W.isAny||ze,Pe+=W.name+"|",{name:W.name,typeIndex:W.index,test:W.test,isAny:W.isAny,conversion:null,conversionIndex:-1}}),name:Pe.slice(0,-1),hasAny:ze,hasConversion:!1,restParam:te}}function F(xe){let te=xe.types.map($e=>$e.name),ge=oe(te),_e=xe.hasAny,ze=xe.name,Pe=ge.map(function($e){let W=g($e.from);return _e=W.isAny||_e,ze+="|"+$e.from,{name:$e.from,typeIndex:W.index,test:W.test,isAny:W.isAny,conversion:$e,conversionIndex:$e.index}});return{types:xe.types.concat(Pe),name:ze,hasAny:_e,hasConversion:Pe.length>0,restParam:xe.restParam}}function I(xe){return xe.typeSet||(xe.typeSet=new Set,xe.types.forEach(te=>xe.typeSet.add(te.name))),xe.typeSet}function B(xe){let te=[];if(typeof xe!="string")throw new TypeError("Signatures must be strings");let ge=xe.trim();if(ge==="")return te;let _e=ge.split(",");for(let ze=0;ze<_e.length;++ze){let Pe=O(_e[ze].trim());if(Pe.restParam&&ze!==_e.length-1)throw new SyntaxError('Unexpected rest parameter "'+_e[ze]+'": only allowed for the last parameter');if(Pe.types.length===0)return null;te.push(Pe)}return te}function L(xe){let te=ie(xe);return te?te.restParam:!1}function q(xe){if(!xe||xe.types.length===0)return e;if(xe.types.length===1)return g(xe.types[0].name).test;if(xe.types.length===2){let te=g(xe.types[0].name).test,ge=g(xe.types[1].name).test;return function(ze){return te(ze)||ge(ze)}}else{let te=xe.types.map(function(ge){return g(ge.name).test});return function(_e){for(let ze=0;ze=ze+1}}else return xe.length===0?function(Pe){return Pe.length===0}:xe.length===1?(ge=q(xe[0]),function(Pe){return ge(Pe[0])&&Pe.length===1}):xe.length===2?(ge=q(xe[0]),_e=q(xe[1]),function(Pe){return ge(Pe[0])&&_e(Pe[1])&&Pe.length===2}):(te=xe.map(q),function(Pe){for(let $e=0;$e{let ze=X(_e.params,te),Pe;for(Pe of ze)ge.add(Pe)}),ge.has("any")?["any"]:Array.from(ge)}function ee(xe,te,ge){let _e,ze,Pe=xe||"unnamed",$e=ge,W;for(W=0;W{let or=V(ft.params,W),br=q(or);(W0){let ft=D(te[W]);return _e=new TypeError("Unexpected type of argument in function "+Pe+" (expected: "+ze.join(" or ")+", actual: "+ft.join(" | ")+", index: "+W+")"),_e.data={category:"wrongType",fn:Pe,index:W,actual:ft,expected:ze},_e}}else $e=tt}let ae=$e.map(function(tt){return L(tt.params)?1/0:tt.params.length});if(te.lengthbe)return _e=new TypeError("Too many arguments in function "+Pe+" (expected: "+be+", actual: "+te.length+")"),_e.data={category:"tooManyArgs",fn:Pe,index:te.length,expectedLength:be},_e;let Ve=[];for(let tt=0;tt0)return 1;let _e=pe(xe)-pe(te);return _e<0?-1:_e>0?1:0}function he(xe,te){let ge=xe.params,_e=te.params,ze=ie(ge),Pe=ie(_e),$e=L(ge),W=L(_e);if($e&&ze.hasAny){if(!W||!Pe.hasAny)return 1}else if(W&&Pe.hasAny)return-1;let ae=0,be=0,Ve;for(Ve of ge)Ve.hasAny&&++ae,Ve.hasConversion&&++be;let tt=0,ft=0;for(Ve of _e)Ve.hasAny&&++tt,Ve.hasConversion&&++ft;if(ae!==tt)return ae-tt;if($e&&ze.hasConversion){if(!W||!Pe.hasConversion)return 1}else if(W&&Pe.hasConversion)return-1;if(be!==ft)return be-ft;if($e){if(!W)return 1}else if(W)return-1;let or=(ge.length-_e.length)*($e?-1:1);if(or!==0)return or;let br=[],jr=0;for(let fi=0;fi1&&te.sort((ze,Pe)=>ze.index-Pe.index);let ge=te[0].conversionsTo;if(xe.length===1)return ge;ge=ge.concat([]);let _e=new Set(xe);for(let ze=1;zeze.hasConversion)){let ze=L(xe),Pe=xe.map(Oe);ge=function(){let W=[],ae=ze?arguments.length-1:arguments.length;for(let be=0;beae.name).join("|"),hasAny:W.some(ae=>ae.isAny),hasConversion:!1,restParam:!0}),$e.push(Pe)}else $e=Pe.types.map(function(W){return{types:[W],name:W.name,hasAny:W.isAny,hasConversion:W.conversion,restParam:!1}});return Ce($e,function(W){return te(ge,_e+1,ze.concat([W]))})}else return[ze]}return te(xe,0,[])}function Me(xe,te){let ge=Math.max(xe.length,te.length);for(let W=0;W=_e:$e?_e>=ze:_e===ze}function le(xe){return xe.map(te=>rt(te)?it(te.referToSelf.callback):ct(te)?He(te.referTo.references,te.referTo.callback):te)}function ne(xe,te,ge){let _e=[],ze;for(ze of xe){let Pe=ge[ze];if(typeof Pe!="number")throw new TypeError('No definition for referenced signature "'+ze+'"');if(Pe=te[Pe],typeof Pe!="function")return!1;_e.push(Pe)}return _e}function fe(xe,te,ge){let _e=le(xe),ze=new Array(_e.length).fill(!1),Pe=!0;for(;Pe;){Pe=!1;let $e=!0;for(let W=0;W<_e.length;++W){if(ze[W])continue;let ae=_e[W];if(rt(ae))_e[W]=ae.referToSelf.callback(ge),_e[W].referToSelf=ae.referToSelf,ze[W]=!0,$e=!1;else if(ct(ae)){let be=ne(ae.referTo.references,_e,te);be?(_e[W]=ae.referTo.callback.apply(this,be),_e[W].referTo=ae.referTo,ze[W]=!0,$e=!1):Pe=!0}}if($e&&Pe)throw new SyntaxError("Circular reference detected in resolving typed.referTo")}return _e}function Fe(xe){let te=/\bthis(\(|\.signatures\b)/;Object.keys(xe).forEach(ge=>{let _e=xe[ge];if(te.test(_e.toString()))throw new SyntaxError("Using `this` to self-reference a function is deprecated since typed-function@3. Use typed.referTo and typed.referToSelf instead.")})}function me(xe,te){if(h.createCount++,Object.keys(te).length===0)throw new SyntaxError("No signatures provided");h.warnAgainstDeprecatedThis&&Fe(te);let ge=[],_e=[],ze={},Pe=[],$e;for($e in te){if(!Object.prototype.hasOwnProperty.call(te,$e))continue;let j=B($e);if(!j)continue;ge.forEach(function(Ye){if(Me(Ye,j))throw new TypeError('Conflicting signatures "'+N(Ye)+'" and "'+N(j)+'".')}),ge.push(j);let ye=_e.length;_e.push(te[$e]);let Xe=j.map(F),ot;for(ot of De(Xe)){let Ye=N(ot);Pe.push({params:ot,name:Ye,fn:ye}),ot.every(Ee=>!Ee.hasConversion)&&(ze[Ye]=ye)}}Pe.sort(he);let W=fe(_e,ze,zn),ae;for(ae in ze)Object.prototype.hasOwnProperty.call(ze,ae)&&(ze[ae]=W[ze[ae]]);let be=[],Ve=new Map;for(ae of Pe)Ve.has(ae.name)||(ae.fn=W[ae.fn],be.push(ae),Ve.set(ae.name,ae));let tt=be[0]&&be[0].params.length<=2&&!L(be[0].params),ft=be[1]&&be[1].params.length<=2&&!L(be[1].params),or=be[2]&&be[2].params.length<=2&&!L(be[2].params),br=be[3]&&be[3].params.length<=2&&!L(be[3].params),jr=be[4]&&be[4].params.length<=2&&!L(be[4].params),Ut=be[5]&&be[5].params.length<=2&&!L(be[5].params),fi=tt&&ft&&or&&br&&jr&&Ut;for(let j=0;jj.test),aa=be.map(j=>j.implementation),ju=function(){for(let ye=Eo;yeN(B(ge))),te=ie(arguments);if(typeof te!="function")throw new TypeError("Callback function expected as last argument");return He(xe,te)}function He(xe,te){return{referTo:{references:xe,callback:te}}}function it(xe){if(typeof xe!="function")throw new TypeError("Callback function expected as first argument");return{referToSelf:{callback:xe}}}function ct(xe){return xe&&typeof xe.referTo=="object"&&Array.isArray(xe.referTo.references)&&typeof xe.referTo.callback=="function"}function rt(xe){return xe&&typeof xe.referToSelf=="object"&&typeof xe.referToSelf.callback=="function"}function At(xe,te){if(!xe)return te;if(te&&te!==xe){let ge=new Error("Function names do not match (expected: "+xe+", actual: "+te+")");throw ge.data={actual:te,expected:xe},ge}return xe}function Rt(xe){let te;for(let ge in xe)Object.prototype.hasOwnProperty.call(xe,ge)&&(C(xe[ge])||typeof xe[ge].signature=="string")&&(te=At(te,xe[ge].name));return te}function vt(xe,te){let ge;for(ge in te)if(Object.prototype.hasOwnProperty.call(te,ge)){if(ge in xe&&te[ge]!==xe[ge]){let _e=new Error('Signature "'+ge+'" is defined twice');throw _e.data={signature:ge,sourceFunction:te[ge],destFunction:xe[ge]},_e}xe[ge]=te[ge]}}let nr=h;h=function(xe){let te=typeof xe=="string",ge=te?1:0,_e=te?xe:"",ze={};for(let Pe=ge;Pe1&&arguments[1]!==void 0?arguments[1]:{override:!1};qt(xe);let ge=g(xe.to),_e=ge.conversionsTo.find(ze=>ze.from===xe.from);if(_e)if(te&&te.override)h.removeConversion({from:_e.from,to:xe.to,convert:_e.convert});else throw new Error('There is already a conversion from "'+xe.from+'" to "'+ge.name+'"');ge.conversionsTo.push({from:xe.from,convert:xe.convert,index:p++})},h.addConversions=function(xe,te){xe.forEach(ge=>h.addConversion(ge,te))},h.removeConversion=function(xe){qt(xe);let te=g(xe.to),ge=Te(te.conversionsTo,ze=>ze.from===xe.from);if(!ge)throw new Error("Attempt to remove nonexistent conversion from "+xe.from+" to "+xe.to);if(ge.convert!==xe.convert)throw new Error("Conversion to remove does not match existing conversion");let _e=te.conversionsTo.indexOf(ge);te.conversionsTo.splice(_e,1)},h.resolve=function(xe,te){if(!C(xe))throw new TypeError(n);let ge=xe._typedFunctionData.signatures;for(let _e=0;_e{AL.exports=function e(t,r){"use strict";var n=/(^([+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi,i=/(^[ ]*|[ ]*$)/g,o=/(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,l=/^0x[0-9a-f]+$/i,s=/^0/,a=function(E){return e.insensitive&&(""+E).toLowerCase()||""+E},u=a(t).replace(i,"")||"",f=a(r).replace(i,"")||"",p=u.replace(n,"\0$1\0").replace(/\0$/,"").replace(/^\0/,"").split("\0"),h=f.replace(n,"\0$1\0").replace(/\0$/,"").replace(/^\0/,"").split("\0"),g=parseInt(u.match(l),16)||p.length!==1&&u.match(o)&&Date.parse(u),x=parseInt(f.match(l),16)||g&&f.match(o)&&Date.parse(f)||null,v,S;if(x){if(gx)return 1}for(var D=0,C=Math.max(p.length,h.length);DS)return 1}return 0}});var WP=st((vUe,$P)=>{"use strict";var xC=Object.assign||function(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:{},r=t.preserveFormatting,n=r===void 0?!1:r,i=t.escapeMapFn,o=i===void 0?_fe:i,l=String(e),s="",a=o(xC({},Mfe),n?xC({},Tfe):{}),u=Object.keys(a),f=function(){var h=!1;u.forEach(function(g,x){h||l.length>=g.length&&l.slice(0,g.length)===g&&(s+=a[u[x]],l=l.slice(g.length,l.length),h=!0)}),h||(s+=l.slice(0,1),l=l.slice(1,l.length))};l;)f();return s}});var dz=st((mz,AC)=>{(function(e,t,r){function n(s){var a=this,u=l();a.next=function(){var f=2091639*a.s0+a.c*23283064365386963e-26;return a.s0=a.s1,a.s1=a.s2,a.s2=f-(a.c=f|0)},a.c=1,a.s0=u(" "),a.s1=u(" "),a.s2=u(" "),a.s0-=u(s),a.s0<0&&(a.s0+=1),a.s1-=u(s),a.s1<0&&(a.s1+=1),a.s2-=u(s),a.s2<0&&(a.s2+=1),u=null}function i(s,a){return a.c=s.c,a.s0=s.s0,a.s1=s.s1,a.s2=s.s2,a}function o(s,a){var u=new n(s),f=a&&a.state,p=u.next;return p.int32=function(){return u.next()*4294967296|0},p.double=function(){return p()+(p()*2097152|0)*11102230246251565e-32},p.quick=p,f&&(typeof f=="object"&&i(f,u),p.state=function(){return i(u,{})}),p}function l(){var s=4022871197,a=function(u){u=String(u);for(var f=0;f>>0,p-=s,p*=s,s=p>>>0,p-=s,s+=p*4294967296}return(s>>>0)*23283064365386963e-26};return a}t&&t.exports?t.exports=o:r&&r.amd?r(function(){return o}):this.alea=o})(mz,typeof AC=="object"&&AC,typeof define=="function"&&define)});var gz=st((hz,CC)=>{(function(e,t,r){function n(l){var s=this,a="";s.x=0,s.y=0,s.z=0,s.w=0,s.next=function(){var f=s.x^s.x<<11;return s.x=s.y,s.y=s.z,s.z=s.w,s.w^=s.w>>>19^f^f>>>8},l===(l|0)?s.x=l:a+=l;for(var u=0;u>>0)/4294967296};return f.double=function(){do var p=a.next()>>>11,h=(a.next()>>>0)/4294967296,g=(p+h)/(1<<21);while(g===0);return g},f.int32=a.next,f.quick=f,u&&(typeof u=="object"&&i(u,a),f.state=function(){return i(a,{})}),f}t&&t.exports?t.exports=o:r&&r.amd?r(function(){return o}):this.xor128=o})(hz,typeof CC=="object"&&CC,typeof define=="function"&&define)});var xz=st((vz,MC)=>{(function(e,t,r){function n(l){var s=this,a="";s.next=function(){var f=s.x^s.x>>>2;return s.x=s.y,s.y=s.z,s.z=s.w,s.w=s.v,(s.d=s.d+362437|0)+(s.v=s.v^s.v<<4^(f^f<<1))|0},s.x=0,s.y=0,s.z=0,s.w=0,s.v=0,l===(l|0)?s.x=l:a+=l;for(var u=0;u>>4),s.next()}function i(l,s){return s.x=l.x,s.y=l.y,s.z=l.z,s.w=l.w,s.v=l.v,s.d=l.d,s}function o(l,s){var a=new n(l),u=s&&s.state,f=function(){return(a.next()>>>0)/4294967296};return f.double=function(){do var p=a.next()>>>11,h=(a.next()>>>0)/4294967296,g=(p+h)/(1<<21);while(g===0);return g},f.int32=a.next,f.quick=f,u&&(typeof u=="object"&&i(u,a),f.state=function(){return i(a,{})}),f}t&&t.exports?t.exports=o:r&&r.amd?r(function(){return o}):this.xorwow=o})(vz,typeof MC=="object"&&MC,typeof define=="function"&&define)});var wz=st((yz,TC)=>{(function(e,t,r){function n(l){var s=this;s.next=function(){var u=s.x,f=s.i,p,h,g;return p=u[f],p^=p>>>7,h=p^p<<24,p=u[f+1&7],h^=p^p>>>10,p=u[f+3&7],h^=p^p>>>3,p=u[f+4&7],h^=p^p<<7,p=u[f+7&7],p=p^p<<13,h^=p^p<<9,u[f]=h,s.i=f+1&7,h};function a(u,f){var p,h,g=[];if(f===(f|0))h=g[0]=f;else for(f=""+f,p=0;p0;--p)u.next()}a(s,l)}function i(l,s){return s.x=l.x.slice(),s.i=l.i,s}function o(l,s){l==null&&(l=+new Date);var a=new n(l),u=s&&s.state,f=function(){return(a.next()>>>0)/4294967296};return f.double=function(){do var p=a.next()>>>11,h=(a.next()>>>0)/4294967296,g=(p+h)/(1<<21);while(g===0);return g},f.int32=a.next,f.quick=f,u&&(u.x&&i(u,a),f.state=function(){return i(a,{})}),f}t&&t.exports?t.exports=o:r&&r.amd?r(function(){return o}):this.xorshift7=o})(yz,typeof TC=="object"&&TC,typeof define=="function"&&define)});var Dz=st((bz,_C)=>{(function(e,t,r){function n(l){var s=this;s.next=function(){var u=s.w,f=s.X,p=s.i,h,g;return s.w=u=u+1640531527|0,g=f[p+34&127],h=f[p=p+1&127],g^=g<<13,h^=h<<17,g^=g>>>15,h^=h>>>12,g=f[p]=g^h,s.i=p,g+(u^u>>>16)|0};function a(u,f){var p,h,g,x,v,S=[],D=128;for(f===(f|0)?(h=f,f=null):(f=f+"\0",h=0,D=Math.max(D,f.length)),g=0,x=-32;x>>15,h^=h<<4,h^=h>>>13,x>=0&&(v=v+1640531527|0,p=S[x&127]^=h+v,g=p==0?g+1:0);for(g>=128&&(S[(f&&f.length||0)&127]=-1),g=127,x=4*128;x>0;--x)h=S[g+34&127],p=S[g=g+1&127],h^=h<<13,p^=p<<17,h^=h>>>15,p^=p>>>12,S[g]=h^p;u.w=v,u.X=S,u.i=g}a(s,l)}function i(l,s){return s.i=l.i,s.w=l.w,s.X=l.X.slice(),s}function o(l,s){l==null&&(l=+new Date);var a=new n(l),u=s&&s.state,f=function(){return(a.next()>>>0)/4294967296};return f.double=function(){do var p=a.next()>>>11,h=(a.next()>>>0)/4294967296,g=(p+h)/(1<<21);while(g===0);return g},f.int32=a.next,f.quick=f,u&&(u.X&&i(u,a),f.state=function(){return i(a,{})}),f}t&&t.exports?t.exports=o:r&&r.amd?r(function(){return o}):this.xor4096=o})(bz,typeof _C=="object"&&_C,typeof define=="function"&&define)});var Nz=st((Sz,OC)=>{(function(e,t,r){function n(l){var s=this,a="";s.next=function(){var f=s.b,p=s.c,h=s.d,g=s.a;return f=f<<25^f>>>7^p,p=p-h|0,h=h<<24^h>>>8^g,g=g-f|0,s.b=f=f<<20^f>>>12^p,s.c=p=p-h|0,s.d=h<<16^p>>>16^g,s.a=g-f|0},s.a=0,s.b=0,s.c=-1640531527,s.d=1367130551,l===Math.floor(l)?(s.a=l/4294967296|0,s.b=l|0):a+=l;for(var u=0;u>>0)/4294967296};return f.double=function(){do var p=a.next()>>>11,h=(a.next()>>>0)/4294967296,g=(p+h)/(1<<21);while(g===0);return g},f.int32=a.next,f.quick=f,u&&(typeof u=="object"&&i(u,a),f.state=function(){return i(a,{})}),f}t&&t.exports?t.exports=o:r&&r.amd?r(function(){return o}):this.tychei=o})(Sz,typeof OC=="object"&&OC,typeof define=="function"&&define)});var Ez=st(()=>{});var Cz=st((Az,yb)=>{(function(e,t,r){var n=256,i=6,o=52,l="random",s=r.pow(n,i),a=r.pow(2,o),u=a*2,f=n-1,p;function h(E,M,T){var N=[];M=M==!0?{entropy:!0}:M||{};var O=S(v(M.entropy?[E,C(t)]:E??D(),3),N),F=new g(N),I=function(){for(var B=F.g(i),L=s,q=0;B=u;)B/=2,L/=2,q>>>=1;return(B+q)/L};return I.int32=function(){return F.g(4)|0},I.quick=function(){return F.g(4)/4294967296},I.double=I,S(C(F.S),t),(M.pass||T||function(B,L,q,R){return R&&(R.S&&x(R,F),B.state=function(){return x(F,{})}),q?(r[l]=B,L):B})(I,O,"global"in M?M.global:this==r,M.state)}function g(E){var M,T=E.length,N=this,O=0,F=N.i=N.j=0,I=N.S=[];for(T||(E=[T++]);O{var Yce=dz(),Zce=gz(),Xce=xz(),Kce=wz(),Jce=Dz(),Qce=Nz(),Fp=Cz();Fp.alea=Yce;Fp.xor128=Zce;Fp.xorwow=Xce;Fp.xorshift7=Kce;Fp.xor4096=Jce;Fp.tychei=Qce;Mz.exports=Fp});var o$=st((lct,RC)=>{function PC(){}PC.prototype={on:function(e,t,r){var n=this.e||(this.e={});return(n[e]||(n[e]=[])).push({fn:t,ctx:r}),this},once:function(e,t,r){var n=this;function i(){n.off(e,i),t.apply(r,arguments)}return i._=t,this.on(e,i,r)},emit:function(e){var t=[].slice.call(arguments,1),r=((this.e||(this.e={}))[e]||[]).slice(),n=0,i=r.length;for(n;n{(function(e,t){typeof qC=="object"?f$.exports=t():typeof define=="function"&&define.amd?define(t):e.jStat=t()})(qC,function(){var e=function(t,r){var n=Array.prototype.concat,i=Array.prototype.slice,o=Object.prototype.toString;function l(S,D){var C=S>D?S:D;return t.pow(10,17-~~(t.log(C>0?C:-C)*t.LOG10E))}var s=Array.isArray||function(D){return o.call(D)==="[object Array]"};function a(S){return o.call(S)==="[object Function]"}function u(S){return typeof S=="number"?S-S===0:!1}function f(S){return n.apply([],S)}function p(){return new p._init(arguments)}p.fn=p.prototype,p._init=function(D){if(s(D[0]))if(s(D[0][0])){a(D[1])&&(D[0]=p.map(D[0],D[1]));for(var C=0;C=0;C--,M++)E[M]=[D[M][C]];return E},p.transpose=function(D){var C=[],E,M,T,N,O;for(s(D[0])||(D=[D]),M=D.length,T=D[0].length,O=0;O0&&(O[M][0]=D[M][0]),F=1;FC&&E>0)return[];if(E>0)for(T=D;TC;T+=E)M.push(T);return M},p.slice=function(){function S(C,E,M,T){var N,O=[],F=C.length;if(E===r&&M===r&&T===r)return p.copy(C);if(E=E||0,M=M||C.length,E=E>=0?E:F+E,M=M>=0?M:F+M,T=T||1,E===M||T===0)return[];if(EM&&T>0)return[];if(T>0)for(N=E;NM;N+=T)O.push(C[N]);return O}function D(C,E){var M,T;if(E=E||{},u(E.row)){if(u(E.col))return C[E.row][E.col];var N=p.rowa(C,E.row);return M=E.col||{},S(N,M.start,M.end,M.step)}if(u(E.col)){var O=p.cola(C,E.col);return T=E.row||{},S(O,T.start,T.end,T.step)}T=E.row||{},M=E.col||{};var F=S(C,T.start,T.end,T.step);return F.map(function(I){return S(I,M.start,M.end,M.step)})}return D}(),p.sliceAssign=function(D,C,E){var M,T;if(u(C.row)){if(u(C.col))return D[C.row][C.col]=E;C.col=C.col||{},C.col.start=C.col.start||0,C.col.end=C.col.end||D[0].length,C.col.step=C.col.step||1,M=p.arange(C.col.start,t.min(D.length,C.col.end),C.col.step);var N=C.row;return M.forEach(function(F,I){D[N][F]=E[I]}),D}if(u(C.col)){C.row=C.row||{},C.row.start=C.row.start||0,C.row.end=C.row.end||D.length,C.row.step=C.row.step||1,T=p.arange(C.row.start,t.min(D[0].length,C.row.end),C.row.step);var O=C.col;return T.forEach(function(F,I){D[F][O]=E[I]}),D}return E[0].length===r&&(E=[E]),C.row.start=C.row.start||0,C.row.end=C.row.end||D.length,C.row.step=C.row.step||1,C.col.start=C.col.start||0,C.col.end=C.col.end||D[0].length,C.col.step=C.col.step||1,T=p.arange(C.row.start,t.min(D.length,C.row.end),C.row.step),M=p.arange(C.col.start,t.min(D[0].length,C.col.end),C.col.step),T.forEach(function(F,I){M.forEach(function(B,L){D[F][B]=E[I][L]})}),D},p.diagonal=function(D){var C=p.zeros(D.length,D.length);return D.forEach(function(E,M){C[M][M]=E}),C},p.copy=function(D){return D.map(function(C){return u(C)?C:C.map(function(E){return E})})};var v=p.prototype;return v.length=0,v.push=Array.prototype.push,v.sort=Array.prototype.sort,v.splice=Array.prototype.splice,v.slice=Array.prototype.slice,v.toArray=function(){return this.length>1?i.call(this):i.call(this)[0]},v.map=function(D,C){return p(p.map(this,D,C))},v.cumreduce=function(D,C){return p(p.cumreduce(this,D,C))},v.alter=function(D){return p.alter(this,D),this},function(S){for(var D=0;D=0;)u+=a[f];return u},t.sumsqrd=function(a){for(var u=0,f=a.length;--f>=0;)u+=a[f]*a[f];return u},t.sumsqerr=function(a){for(var u=t.mean(a),f=0,p=a.length,h;--p>=0;)h=a[p]-u,f+=h*h;return f},t.sumrow=function(a){for(var u=0,f=a.length;--f>=0;)u+=a[f];return u},t.product=function(a){for(var u=1,f=a.length;--f>=0;)u*=a[f];return u},t.min=function(a){for(var u=a[0],f=0;++fu&&(u=a[f]);return u},t.unique=function(a){for(var u={},f=[],p=0;ph?(x=[f[v]],h=p,g=0):p===h&&(x.push(f[v]),g++),p=1);return g===0?x[0]:x},t.range=function(a){return t.max(a)-t.min(a)},t.variance=function(a,u){return t.sumsqerr(a)/(a.length-(u?1:0))},t.pooledvariance=function(a){var u=a.reduce(function(p,h){return p+t.sumsqerr(h)},0),f=a.reduce(function(p,h){return p+h.length},0);return u/(f-a.length)},t.deviation=function(s){for(var a=t.mean(s),u=s.length,f=new Array(u),p=0;p=0;p--)f.push(r.abs(a[p]-u));return t.mean(f)},t.meddev=function(a){for(var u=t.median(a),f=[],p=a.length-1;p>=0;p--)f.push(r.abs(a[p]-u));return t.median(f)},t.coeffvar=function(a){return t.stdev(a)/t.mean(a)},t.quartiles=function(a){var u=a.length,f=a.slice().sort(i);return[f[r.round(u/4)-1],f[r.round(u/2)-1],f[r.round(u*3/4)-1]]},t.quantiles=function(a,u,f,p){var h=a.slice().sort(i),g=[u.length],x=a.length,v,S,D,C,E,M;for(typeof f>"u"&&(f=3/8),typeof p>"u"&&(p=3/8),v=0;v1){for(x=f===!0?this:this.transpose();g1){for(u!=="sumrow"&&(x=f===!0?this:this.transpose());g1){for(h=h.transpose();p=0;f--)u*=l,u+=h[f];if(a=u/o+.5*r.log(s)+(o-.5)*r.log(o)-o,i<=7)for(f=1;f<=p;f++)a-=r.log(o-1),o-=1;return a},t.gammafn=function(i){var o=[-1.716185138865495,24.76565080557592,-379.80425647094563,629.3311553128184,866.9662027904133,-31451.272968848367,-36144.413418691176,66456.14382024054],l=[-30.8402300119739,315.35062697960416,-1015.1563674902192,-3107.771671572311,22538.11842098015,4755.846277527881,-134659.9598649693,-115132.2596755535],s=!1,a=0,u=0,f=0,p=i,h,g,x,v;if(i>171.6243769536076)return 1/0;if(p<=0)if(v=p%1+36e-17,v)s=(p&1?-1:1)*r.PI/r.sin(r.PI*v),p=1-p;else return 1/0;for(x=p,p<1?g=p++:g=(p-=a=(p|0)-1)-1,h=0;h<8;++h)f=(f+o[h])*g,u=u*g+l[h];if(v=f/u+1,xp)for(h=0;h=1?i:1/i)*8.5+i*.4+17),S;if(o<0||i<=0)return NaN;if(o170||o>170?r.exp(t.combinationln(i,o)):t.factorial(i)/t.factorial(o)/t.factorial(i-o)},t.combinationln=function(i,o){return t.factorialln(i)-t.factorialln(o)-t.factorialln(i-o)},t.permutation=function(i,o){return t.factorial(i)/t.factorial(i-o)},t.betafn=function(i,o){if(!(i<=0||o<=0))return i+o>170?r.exp(t.betaln(i,o)):t.gammafn(i)*t.gammafn(o)/t.gammafn(i+o)},t.betaln=function(i,o){return t.gammaln(i)+t.gammaln(o)-t.gammaln(i+o)},t.betacf=function(i,o,l){var s=1e-30,a=1,u=o+l,f=o+1,p=o-1,h=1,g=1-u*i/f,x,v,S,D;for(r.abs(g)=1)return r.max(100,o+100*r.sqrt(o));if(i<=0)return 0;for(o>1?(v=r.log(s),S=r.exp(s*(v-1)-u),x=i<.5?i:1-i,h=r.sqrt(-2*r.log(x)),f=(2.30753+h*.27061)/(1+h*(.99229+h*.04481))-h,i<.5&&(f=-f),f=r.max(.001,o*r.pow(1-1/(9*o)-f/(3*r.sqrt(o)),3))):(h=1-o*(.253+o*.12),i1?h=S*r.exp(-(f-s)+s*(r.log(f)-v)):h=r.exp(-f+s*r.log(f)-u),g=p/h,f-=h=g/(1-.5*r.min(1,g*((o-1)/f-1))),f<=0&&(f=.5*(f+h)),r.abs(h)0;l--)h=a,a=p*a-u+o[l],u=h;return g=f*r.exp(-i*i+.5*(o[0]+p*a)-u),s?g-1:1-g},t.erfc=function(i){return 1-t.erf(i)},t.erfcinv=function(i){var o=0,l,s,a,u;if(i>=2)return-100;if(i<=0)return 100;for(u=i<1?i:2-i,a=r.sqrt(-2*r.log(u/2)),l=-.70711*((2.30753+a*.27061)/(1+a*(.99229+a*.04481))-a);o<2;o++)s=t.erfc(l)-u,l+=s/(1.1283791670955126*r.exp(-l*l)-l*s);return i<1?l:-l},t.ibetainv=function(i,o,l){var s=1e-8,a=o-1,u=l-1,f=0,p,h,g,x,v,S,D,C,E,M,T;if(i<=0)return 0;if(i>=1)return 1;for(o>=1&&l>=1?(g=i<.5?i:1-i,x=r.sqrt(-2*r.log(g)),D=(2.30753+x*.27061)/(1+x*(.99229+x*.04481))-x,i<.5&&(D=-D),C=(D*D-3)/6,E=2/(1/(2*o-1)+1/(2*l-1)),M=D*r.sqrt(C+E)/E-(1/(2*l-1)-1/(2*o-1))*(C+5/6-2/(3*E)),D=o/(o+l*r.exp(2*M))):(p=r.log(o/(o+l)),h=r.log(l/(o+l)),x=r.exp(o*p)/o,v=r.exp(l*h)/l,M=x+v,i=1&&(D=.5*(D+x+1)),r.abs(x)0)break}return D},t.ibeta=function(i,o,l){var s=i===0||i===1?0:r.exp(t.gammaln(o+l)-t.gammaln(o)-t.gammaln(l)+o*r.log(i)+l*r.log(1-i));return i<0||i>1?!1:i<(o+1)/(o+l+2)?s*t.betacf(i,o,l)/o:1-s*t.betacf(1-i,l,o)/l},t.randn=function(i,o){var l,s,a,u,f;if(o||(o=i),i)return t.create(i,o,function(){return t.randn()});do l=t._random_fn(),s=1.7156*(t._random_fn()-.5),a=l-.449871,u=r.abs(s)+.386595,f=a*a+u*(.196*u-.25472*a);while(f>.27597&&(f>.27846||s*s>-4*r.log(l)*l*l));return s/l},t.randg=function(i,o,l){var s=i,a,u,f,p,h,g;if(l||(l=o),i||(i=1),o)return g=t.zeros(o,l),g.alter(function(){return t.randg(i)}),g;i<1&&(i+=1),a=i-1/3,u=1/r.sqrt(9*a);do{do h=t.randn(),p=1+u*h;while(p<=0);p=p*p*p,f=t._random_fn()}while(f>1-.331*r.pow(h,4)&&r.log(f)>.5*h*h+a*(1-p+r.log(p)));if(i==s)return a*p;do f=t._random_fn();while(f===0);return r.pow(f,1/s)*a*p},function(n){for(var i=0;i1||a<0?0:u==1&&f==1?1:u<512&&f<512?r.pow(a,u-1)*r.pow(1-a,f-1)/t.betafn(u,f):r.exp((u-1)*r.log(a)+(f-1)*r.log(1-a)-t.betaln(u,f))},cdf:function(a,u,f){return a>1||a<0?(a>1)*1:t.ibeta(a,u,f)},inv:function(a,u,f){return t.ibetainv(a,u,f)},mean:function(a,u){return a/(a+u)},median:function(a,u){return t.ibetainv(.5,a,u)},mode:function(a,u){return(a-1)/(a+u-2)},sample:function(a,u){var f=t.randg(a);return f/(f+t.randg(u))},variance:function(a,u){return a*u/(r.pow(a+u,2)*(a+u+1))}}),t.extend(t.centralF,{pdf:function(a,u,f){var p,h,g;return a<0?0:u<=2?a===0&&u<2?1/0:a===0&&u===2?1:1/t.betafn(u/2,f/2)*r.pow(u/f,u/2)*r.pow(a,u/2-1)*r.pow(1+u/f*a,-(u+f)/2):(p=u*a/(f+a*u),h=f/(f+a*u),g=u*h/2,g*t.binomial.pdf((u-2)/2,(u+f-2)/2,p))},cdf:function(a,u,f){return a<0?0:t.ibeta(u*a/(u*a+f),u/2,f/2)},inv:function(a,u,f){return f/(u*(1/t.ibetainv(a,u/2,f/2)-1))},mean:function(a,u){return u>2?u/(u-2):void 0},mode:function(a,u){return a>2?u*(a-2)/(a*(u+2)):void 0},sample:function(a,u){var f=t.randg(a/2)*2,p=t.randg(u/2)*2;return f/a/(p/u)},variance:function(a,u){if(!(u<=4))return 2*u*u*(a+u-2)/(a*(u-2)*(u-2)*(u-4))}}),t.extend(t.cauchy,{pdf:function(a,u,f){return f<0?0:f/(r.pow(a-u,2)+r.pow(f,2))/r.PI},cdf:function(a,u,f){return r.atan((a-u)/f)/r.PI+.5},inv:function(s,a,u){return a+u*r.tan(r.PI*(s-.5))},median:function(a){return a},mode:function(a){return a},sample:function(a,u){return t.randn()*r.sqrt(1/(2*t.randg(.5)))*u+a}}),t.extend(t.chisquare,{pdf:function(a,u){return a<0?0:a===0&&u===2?.5:r.exp((u/2-1)*r.log(a)-a/2-u/2*r.log(2)-t.gammaln(u/2))},cdf:function(a,u){return a<0?0:t.lowRegGamma(u/2,a/2)},inv:function(s,a){return 2*t.gammapinv(s,.5*a)},mean:function(s){return s},median:function(a){return a*r.pow(1-2/(9*a),3)},mode:function(a){return a-2>0?a-2:0},sample:function(a){return t.randg(a/2)*2},variance:function(a){return 2*a}}),t.extend(t.exponential,{pdf:function(a,u){return a<0?0:u*r.exp(-u*a)},cdf:function(a,u){return a<0?0:1-r.exp(-u*a)},inv:function(s,a){return-r.log(1-s)/a},mean:function(s){return 1/s},median:function(s){return 1/s*r.log(2)},mode:function(){return 0},sample:function(a){return-1/a*r.log(t._random_fn())},variance:function(s){return r.pow(s,-2)}}),t.extend(t.gamma,{pdf:function(a,u,f){return a<0?0:a===0&&u===1?1/f:r.exp((u-1)*r.log(a)-a/f-t.gammaln(u)-u*r.log(f))},cdf:function(a,u,f){return a<0?0:t.lowRegGamma(u,a/f)},inv:function(s,a,u){return t.gammapinv(s,a)*u},mean:function(s,a){return s*a},mode:function(a,u){if(a>1)return(a-1)*u},sample:function(a,u){return t.randg(a)*u},variance:function(a,u){return a*u*u}}),t.extend(t.invgamma,{pdf:function(a,u,f){return a<=0?0:r.exp(-(u+1)*r.log(a)-f/a-t.gammaln(u)+u*r.log(f))},cdf:function(a,u,f){return a<=0?0:1-t.lowRegGamma(u,f/a)},inv:function(s,a,u){return u/t.gammapinv(1-s,a)},mean:function(s,a){return s>1?a/(s-1):void 0},mode:function(a,u){return u/(a+1)},sample:function(a,u){return u/t.randg(a)},variance:function(a,u){if(!(a<=2))return u*u/((a-1)*(a-1)*(a-2))}}),t.extend(t.kumaraswamy,{pdf:function(a,u,f){return a===0&&u===1?f:a===1&&f===1?u:r.exp(r.log(u)+r.log(f)+(u-1)*r.log(a)+(f-1)*r.log(1-r.pow(a,u)))},cdf:function(a,u,f){return a<0?0:a>1?1:1-r.pow(1-r.pow(a,u),f)},inv:function(a,u,f){return r.pow(1-r.pow(1-a,1/f),1/u)},mean:function(s,a){return a*t.gammafn(1+1/s)*t.gammafn(a)/t.gammafn(1+1/s+a)},median:function(a,u){return r.pow(1-r.pow(2,-1/u),1/a)},mode:function(a,u){if(a>=1&&u>=1&&a!==1&&u!==1)return r.pow((a-1)/(a*u-1),1/a)},variance:function(){throw new Error("variance not yet implemented")}}),t.extend(t.lognormal,{pdf:function(a,u,f){return a<=0?0:r.exp(-r.log(a)-.5*r.log(2*r.PI)-r.log(f)-r.pow(r.log(a)-u,2)/(2*f*f))},cdf:function(a,u,f){return a<0?0:.5+.5*t.erf((r.log(a)-u)/r.sqrt(2*f*f))},inv:function(s,a,u){return r.exp(-1.4142135623730951*u*t.erfcinv(2*s)+a)},mean:function(a,u){return r.exp(a+u*u/2)},median:function(a){return r.exp(a)},mode:function(a,u){return r.exp(a-u*u)},sample:function(a,u){return r.exp(t.randn()*u+a)},variance:function(a,u){return(r.exp(u*u)-1)*r.exp(2*a+u*u)}}),t.extend(t.noncentralt,{pdf:function(a,u,f){var p=1e-14;return r.abs(f)p||v>p;)S=v,C>0&&(E*=f*f/(2*C),M*=f*f/(2*(C+1/2))),v=E*t.beta.cdf(D,C+.5,u/2)+M*t.beta.cdf(D,C+1,u/2),x+=.5*v,C++;return g?1-x:x}}),t.extend(t.normal,{pdf:function(a,u,f){return r.exp(-.5*r.log(2*r.PI)-r.log(f)-r.pow(a-u,2)/(2*f*f))},cdf:function(a,u,f){return .5*(1+t.erf((a-u)/r.sqrt(2*f*f)))},inv:function(s,a,u){return-1.4142135623730951*u*t.erfcinv(2*s)+a},mean:function(s){return s},median:function(a){return a},mode:function(s){return s},sample:function(a,u){return t.randn()*u+a},variance:function(s,a){return a*a}}),t.extend(t.pareto,{pdf:function(a,u,f){return a1e100?1e100:u,1/(r.sqrt(u)*t.betafn(.5,u/2))*r.pow(1+a*a/u,-((u+1)/2))},cdf:function(a,u){var f=u/2;return t.ibeta((a+r.sqrt(a*a+u))/(2*r.sqrt(a*a+u)),f,f)},inv:function(s,a){var u=t.ibetainv(2*r.min(s,1-s),.5*a,.5);return u=r.sqrt(a*(1-u)/u),s>.5?u:-u},mean:function(a){return a>1?0:void 0},median:function(){return 0},mode:function(){return 0},sample:function(a){return t.randn()*r.sqrt(a/(2*t.randg(a/2)))},variance:function(a){return a>2?a/(a-2):a>1?1/0:void 0}}),t.extend(t.weibull,{pdf:function(a,u,f){return a<0||u<0||f<0?0:f/u*r.pow(a/u,f-1)*r.exp(-r.pow(a/u,f))},cdf:function(a,u,f){return a<0?0:1-r.exp(-r.pow(a/u,f))},inv:function(s,a,u){return a*r.pow(-r.log(1-s),1/u)},mean:function(s,a){return s*t.gammafn(1+1/a)},median:function(a,u){return a*r.pow(r.log(2),1/u)},mode:function(a,u){return u<=1?0:a*r.pow((u-1)/u,1/u)},sample:function(a,u){return a*r.pow(-r.log(t._random_fn()),1/u)},variance:function(a,u){return a*a*t.gammafn(1+2/u)-r.pow(t.weibull.mean(a,u),2)}}),t.extend(t.uniform,{pdf:function(a,u,f){return af?0:1/(f-u)},cdf:function(a,u,f){return af;)S=g,D=-(a+v)*(a+u+v)*s/(a+2*v)/(a+2*v+1),p=g+D*p,h=x+D*h,v=v+1,D=v*(u-v)*s/(a+2*v-1)/(a+2*v),g=p+D*g,x=h+D*x,p=p/x,h=h/x,g=g/x,x=1;return g/a}t.extend(t.binomial,{pdf:function(a,u,f){return f===0||f===1?u*f===a?1:0:t.combination(u,a)*r.pow(f,a)*r.pow(1-f,u-a)},cdf:function(a,u,f){var p,h=1e-10;if(a<0)return 0;if(a>=u)return 1;if(f<0||f>1||u<=0)return NaN;a=r.floor(a);var g=f,x=a+1,v=u-a,S=x+v,D=r.exp(t.gammaln(S)-t.gammaln(v)-t.gammaln(x)+x*r.log(g)+v*r.log(1-g));return g<(x+1)/(S+2)?p=D*n(g,x,v,h):p=1-D*n(1-g,v,x,h),r.round((1-p)*(1/h))/(1/h)}}),t.extend(t.negbin,{pdf:function(a,u,f){return a!==a>>>0?!1:a<0?0:t.combination(a+u-1,u-1)*r.pow(1-f,a)*r.pow(f,u)},cdf:function(a,u,f){var p=0,h=0;if(a<0)return 0;for(;h<=a;h++)p+=t.negbin.pdf(h,u,f);return p}}),t.extend(t.hypgeom,{pdf:function(a,u,f,p){if(a!==a|0)return!1;if(a<0||ap||a>f)return 0;if(f*2>u)return p*2>u?t.hypgeom.pdf(u-f-p+a,u,u-f,u-p):t.hypgeom.pdf(p-a,u,u-f,p);if(p*2>u)return t.hypgeom.pdf(f-a,u,f,u-p);if(f1&&g=p||a>=f)return 1;if(f*2>u)return p*2>u?t.hypgeom.cdf(u-f-p+a,u,u-f,u-p):1-t.hypgeom.cdf(p-a-1,u,u-f,p);if(p*2>u)return 1-t.hypgeom.cdf(f-a-1,u,f,u-p);if(f1&&xp);return f-1},sampleLarge:function(a){var u=a,f,p,h,g,x,v,S,D,C,E;for(g=r.sqrt(u),x=r.log(u),S=.931+2.53*g,v=-.059+.02483*S,D=1.1239+1.1328/(S-3.4),C=.9277-3.6224/(S-2);;){if(p=r.random()-.5,h=r.random(),E=.5-r.abs(p),f=r.floor((2*v/E+S)*p+u+.43),E>=.07&&h<=C)return f;if(!(f<0||E<.013&&h>E)&&r.log(h)+r.log(D)-r.log(v/(E*E)+S)<=-u+f*x-t.loggam(f+1))return f}},sample:function(a){return a<10?this.sampleSmall(a):this.sampleLarge(a)}}),t.extend(t.triangular,{pdf:function(a,u,f,p){return f<=u||pf?NaN:af?0:af?NaN:a<=u?0:a>=f?1:a<=p?r.pow(a-u,2)/((f-u)*(p-u)):1-r.pow(f-a,2)/((f-u)*(f-p))},inv:function(a,u,f,p){return f<=u||pf?NaN:a<=(p-u)/(f-u)?u+(f-u)*r.sqrt(a*((p-u)/(f-u))):u+(f-u)*(1-r.sqrt((1-a)*(1-(p-u)/(f-u))))},mean:function(a,u,f){return(a+u+f)/3},median:function(a,u,f){if(f<=(a+u)/2)return u-r.sqrt((u-a)*(u-f))/r.sqrt(2);if(f>(a+u)/2)return a+r.sqrt((u-a)*(f-a))/r.sqrt(2)},mode:function(a,u,f){return f},sample:function(a,u,f){var p=t._random_fn();return p<(f-a)/(u-a)?a+r.sqrt(p*(u-a)*(f-a)):u-r.sqrt((1-p)*(u-a)*(u-f))},variance:function(a,u,f){return(a*a+u*u+f*f-a*u-a*f-u*f)/18}}),t.extend(t.arcsine,{pdf:function(a,u,f){return f<=u?NaN:a<=u||a>=f?0:2/r.PI*r.pow(r.pow(f-u,2)-r.pow(2*a-u-f,2),-.5)},cdf:function(a,u,f){return a=v)return 1;var N=2*t.normal.cdf(T,0,1,1,0)-1;N>=r.exp(g/u)?N=r.pow(N,u):N=0;var O;s>S?O=D:O=C;for(var F=T,I=(v-T)/O,B=F+I,L=0,q=u-1,R=1;R<=O;R++){for(var V=0,X=.5*(B+F),U=.5*(B-F),H=1;H<=f;H++){var ee,Z;px)break;var oe=2*t.normal.cdf(we,0,1,1,0),ve=2*t.normal.cdf(we,s,1,1,0),Oe=oe*.5-ve*.5;Oe>=r.exp(h/q)&&(Oe=M[ee-1]*r.exp(-(.5*he))*r.pow(Oe,q),V+=Oe)}V*=2*U*u/r.sqrt(2*r.PI),L+=V,F=B,B+=I}return N+=L,N<=r.exp(h/a)?0:(N=r.pow(N,a),N>=1?1:N)}function l(s,a,u){var f=.322232421088,p=.099348462606,h=-1,g=.588581570495,x=-.342242088547,v=.531103462366,S=-.204231210125,D=.10353775285,C=-453642210148e-16,E=.0038560700634,M=.8832,T=.2368,N=1.214,O=1.208,F=1.4142,I=120,B=.5-.5*s,L=r.sqrt(r.log(1/(B*B))),q=L+((((L*C+S)*L+x)*L+h)*L+f)/((((L*E+D)*L+v)*L+g)*L+p);uM)return o(a,p,h);var L=f*.5,q=L*r.log(f)-f*r.log(2)-t.gammaln(L),R=L-1,V=f*.25,X;f<=D?X=T:f<=C?X=N:f<=E?X=O:X=F,q+=r.log(X);for(var U=0,H=1;H<=50;H++){for(var ee=0,Z=(2*H-1)*X,pe=1;pe<=g;pe++){var we,he;x=v){x=1&&ee<=S)break;U+=ee}if(ee>S)throw new Error("tukey.cdf failed to converge");return U>1&&(U=1),U},inv:function(s,a,u){var f=1,p=a,h=1e-4,g=50;if(u<2||f<1||p<2)return NaN;if(s<0||s>1)return NaN;if(s===0)return 0;if(s===1)return 1/0;var x=l(s,p,u),v=t.tukey.cdf(x,a,u)-s,S;v>0?S=r.max(0,x-1):S=x+1;for(var D=t.tukey.cdf(S,a,u)-s,C,E=1;Eu&&(f[p-1][h-1]=s[p][h])}var g=u%2?-1:1;a+=l(f)*s[0][u]*g}return a},gauss_elimination:function(s,a){var u=0,f=0,p=s.length,h=s[0].length,g=1,x=0,v=[],S,D,C,E;for(s=t.aug(s,a),S=s[0].length,u=0;u=0;u--){for(x=0,f=u+1;f<=p-1;f++)x=x+v[f]*s[u][f];v[u]=(s[u][S-1]-x)/s[u][u]}return v},gauss_jordan:function(s,a){var u=t.aug(s,a),f=u.length,p=u[0].length,h=0,g,x,v;for(x=0;xr.abs(u[S][x])&&(S=v);var D=u[x];for(u[x]=u[S],u[S]=D,v=x+1;v=0;x--){for(h=u[x][x],v=0;vx-1;g--)u[v][g]-=u[x][g]*u[v][x]/h;for(u[x][x]/=h,g=f;gh?(x[p][h]=s[p][h],v[p][h]=S[p][h]=0):pf;)D=M,M=t.add(t.multiply(E,D),C),p++;return M},gauss_seidel:function(s,a,u,f){for(var p=0,h=s.length,g=[],x=[],v=[],S,D,C,E,M;pS?(g[p][S]=s[p][S],x[p][S]=v[p][S]=0):pf;)D=M,M=t.add(t.multiply(E,D),C),p=p+1;return M},SOR:function(s,a,u,f,p){for(var h=0,g=s.length,x=[],v=[],S=[],D,C,E,M,T;hD?(x[h][D]=s[h][D],v[h][D]=S[h][D]=0):hf;)C=T,T=t.add(t.multiply(M,C),E),h++;return T},householder:function(s){for(var a=s.length,u=s[0].length,f=0,p=[],h=[],g,x,v,S,D;f0?-1:1,g=D*r.sqrt(g),x=r.sqrt((g*g-s[f+1][f]*g)/2),p=t.zeros(a,1),p[f+1][0]=(s[f+1][f]-g)/(2*x),v=f+2;v0?r.PI/4:-r.PI/4:C=r.atan(2*s[v][S]/(s[v][v]-s[S][S]))/2,E=t.identity(u,u),E[v][v]=r.cos(C),E[v][S]=-r.sin(C),E[S][v]=r.sin(C),E[S][S]=r.cos(C),f=t.multiply(f,E),h=t.multiply(t.multiply(t.inv(E),s),E),s=h,a=0,g=1;g.001&&(a=1)}for(g=0;g=h;)S=p(s,u+f),D=p(s,u),x[g]=(a[S]-2*a[D]+a[2*D-S])/(f*f),f/=2,g++;for(E=x.length,C=1;E!=1;){for(M=0;Mu);h++);return h-=1,a[h]+(u-s[h])*C[h]+t.sq(u-s[h])*S[h]+(u-s[h])*t.sq(u-s[h])*E[h]},gauss_quadrature:function(){throw new Error("gauss_quadrature not yet implemented")},PCA:function(s){var a=s.length,u=s[0].length,f=0,p,h,g=[],x=[],v=[],S=[],D=[],C=[],E=[],M=[],T=[],N=[];for(f=0;f2?(u=t.zscore(a[0],a[1],a[2]),a[3]===1?t.normal.cdf(-r.abs(u),0,1):t.normal.cdf(-r.abs(u),0,1)*2):(u=a[0],a[1]===1?t.normal.cdf(-r.abs(u),0,1):t.normal.cdf(-r.abs(u),0,1)*2)}}),t.extend(t.fn,{zscore:function(a,u){return(a-this.mean())/this.stdev(u)},ztest:function(a,u,f){var p=r.abs(this.zscore(a,f));return u===1?t.normal.cdf(-p,0,1):t.normal.cdf(-p,0,1)*2}}),t.extend({tscore:function(){var a=n.call(arguments);return a.length===4?(a[0]-a[1])/(a[2]/r.sqrt(a[3])):(a[0]-t.mean(a[1]))/(t.stdev(a[1],!0)/r.sqrt(a[1].length))},ttest:function(){var a=n.call(arguments),u;return a.length===5?(u=r.abs(t.tscore(a[0],a[1],a[2],a[3])),a[4]===1?t.studentt.cdf(-u,a[3]-1):t.studentt.cdf(-u,a[3]-1)*2):i(a[1])?(u=r.abs(a[0]),a[2]==1?t.studentt.cdf(-u,a[1]-1):t.studentt.cdf(-u,a[1]-1)*2):(u=r.abs(t.tscore(a[0],a[1])),a[2]==1?t.studentt.cdf(-u,a[1].length-1):t.studentt.cdf(-u,a[1].length-1)*2)}}),t.extend(t.fn,{tscore:function(a){return(a-this.mean())/(this.stdev(!0)/r.sqrt(this.cols()))},ttest:function(a,u){return u===1?1-t.studentt.cdf(r.abs(this.tscore(a)),this.cols()-1):t.studentt.cdf(-r.abs(this.tscore(a)),this.cols()-1)*2}}),t.extend({anovafscore:function(){var a=n.call(arguments),u,f,p,h,g,x,v,S;if(a.length===1){for(g=new Array(a[0].length),v=0;v1||u>1||s<=0||u<=0)throw new Error("Proportions should be greater than 0 and less than 1");var p=(s*a+u*f)/(a+f),h=r.sqrt(p*(1-p)*(1/a+1/f));return(s-u)/h}t.extend(t.fn,{oneSidedDifferenceOfProportions:function(a,u,f,p){var h=l(a,u,f,p);return t.ztest(h,1)},twoSidedDifferenceOfProportions:function(a,u,f,p){var h=l(a,u,f,p);return t.ztest(h,2)}})}(e,Math),e.models=function(){function t(l){var s=l[0].length,a=e.arange(s).map(function(u){var f=e.arange(s).filter(function(p){return p!==u});return r(e.col(l,u).map(function(p){return p[0]}),e.col(l,f))});return a}function r(l,s){var a=l.length,u=s[0].length-1,f=a-u-1,p=e.lstsq(s,l),h=e.multiply(s,p.map(function(E){return[E]})).map(function(E){return E[0]}),g=e.subtract(l,h),x=e.mean(l),v=e.sum(h.map(function(E){return Math.pow(E-x,2)})),S=e.sum(l.map(function(E,M){return Math.pow(E-h[M],2)})),D=v+S,C=v/D;return{exog:s,endog:l,nobs:a,df_model:u,df_resid:f,coef:p,predict:h,resid:g,ybar:x,SST:D,SSE:v,SSR:S,R2:C}}function n(l){var s=t(l.exog),a=Math.sqrt(l.SSR/l.df_resid),u=s.map(function(x){var v=x.SST,S=x.R2;return a/Math.sqrt(v*(1-S))}),f=l.coef.map(function(x,v){return(x-0)/u[v]}),p=f.map(function(x){var v=e.studentt.cdf(x,l.df_resid);return(v>.5?1-v:v)*2}),h=e.studentt.inv(.975,l.df_resid),g=l.coef.map(function(x,v){var S=h*u[v];return[x-S,x+S]});return{se:u,t:f,p,sigmaHat:a,interval95:g}}function i(l){var s=l.R2/l.df_model/((1-l.R2)/l.df_resid),a=function(f,p,h){return e.beta.cdf(f/(h/p+f),p/2,h/2)},u=1-a(s,l.df_model,l.df_resid);return{F_statistic:s,pvalue:u}}function o(l,s){var a=r(l,s),u=n(a),f=i(a),p=1-(1-a.R2)*((a.nobs-1)/a.df_resid);return a.t=u,a.f=f,a.adjust_R2=p,a}return{ols:o}}(),e.extend({buildxmatrix:function(){for(var r=new Array(arguments.length),n=0;n1){for(s=[],i=0;i{var p$;(function(e){typeof DO_NOT_EXPORT_BESSEL>"u"?typeof zC=="object"?e(zC):typeof define=="function"&&define.amd?define(function(){var t={};return e(t),t}):e(p$={}):e(p$={})})(function(e){e.version="1.0.2";var t=Math;function r(u,f){for(var p=0,h=0;pN)O=n(T,N,x(T),E(T),-1);else{for(var F=2*t.floor((N+t.floor(t.sqrt(40*N)))/2),I=!1,B=0,L=0,q=1,R=0,V=2/T,X=F;X>0;X--)R=X*V*q-B,B=q,q=R,t.abs(q)>1e10&&(q*=1e-10,B*=1e-10,O*=1e-10,L*=1e-10),I&&(L+=q),I=!I,X==N&&(O=B);L=2*L-q,O/=L}return O}}(),l=function(){var u=.636619772,f=[-2957821389,7062834065,-5123598036e-1,1087988129e-2,-86327.92757,228.4622733].reverse(),p=[40076544269,7452499648e-1,7189466438e-3,47447.2647,226.1030244,1].reverse(),h=[1,-.001098628627,2734510407e-14,-2073370639e-15,2093887211e-16].reverse(),g=[-.01562499995,.0001430488765,-6911147651e-15,7621095161e-16,-934945152e-16].reverse();function x(M){var T=0,N=0,O=0,F=M*M,I=M-.785398164;return M<8?(N=r(f,F),O=r(p,F),T=N/O+u*o(M,0)*t.log(M)):(F=64/F,N=r(h,F),O=r(g,F),T=t.sqrt(u/M)*(t.sin(I)*N+t.cos(I)*O*8/M)),T}var v=[-4900604943e3,127527439e4,-51534381390,7349264551e-1,-4237922726e-3,8511.937935].reverse(),S=[249958057e5,424441966400,3733650367,2245904002e-2,102042.605,354.9632885,1].reverse(),D=[1,.00183105,-3516396496e-14,2457520174e-15,-240337019e-15].reverse(),C=[.04687499995,-.0002002690873,8449199096e-15,-88228987e-14,105787412e-15].reverse();function E(M){var T=0,N=0,O=0,F=M*M,I=M-2.356194491;return M<8?(N=M*r(v,F),O=r(S,F),T=N/O+u*(o(M,1)*t.log(M)-1/M)):(F=64/F,N=r(D,F),O=r(C,F),T=t.sqrt(u/M)*(t.sin(I)*N+t.cos(I)*O*8/M)),T}return i(x,E,"BESSELY",1,-1)}(),s=function(){var u=[1,3.5156229,3.0899424,1.2067492,.2659732,.0360768,.0045813].reverse(),f=[.39894228,.01328592,.00225319,-.00157565,.00916281,-.02057706,.02635537,-.01647633,.00392377].reverse();function p(v){return v<=3.75?r(u,v*v/(3.75*3.75)):t.exp(t.abs(v))/t.sqrt(t.abs(v))*r(f,3.75/t.abs(v))}var h=[.5,.87890594,.51498869,.15084934,.02658733,.00301532,32411e-8].reverse(),g=[.39894228,-.03988024,-.00362018,.00163801,-.01031555,.02282967,-.02895312,.01787654,-.00420059].reverse();function x(v){return v<3.75?v*r(h,v*v/(3.75*3.75)):(v<0?-1:1)*t.exp(t.abs(v))/t.sqrt(t.abs(v))*r(g,3.75/t.abs(v))}return function v(S,D){if(D=Math.round(D),D===0)return p(S);if(D===1)return x(S);if(D<0)return NaN;if(t.abs(S)===0)return 0;if(S==1/0)return 1/0;var C=0,E,M=2/t.abs(S),T=0,N=1,O=0,F=2*t.round((D+t.round(t.sqrt(40*D)))/2);for(E=F;E>0;E--)O=E*M*N+T,T=N,N=O,t.abs(N)>1e10&&(N*=1e-10,T*=1e-10,C*=1e-10),E==D&&(C=T);return C*=v(S,0)/N,S<0&&D%2?-C:C}}(),a=function(){var u=[-.57721566,.4227842,.23069756,.0348859,.00262698,1075e-7,74e-7].reverse(),f=[1.25331414,-.07832358,.02189568,-.01062446,.00587872,-.0025154,53208e-8].reverse();function p(v){return v<=2?-t.log(v/2)*s(v,0)+r(u,v*v/4):t.exp(-v)/t.sqrt(v)*r(f,2/v)}var h=[1,.15443144,-.67278579,-.18156897,-.01919402,-.00110404,-4686e-8].reverse(),g=[1.25331414,.23498619,-.0365562,.01504268,-.00780353,.00325614,-68245e-8].reverse();function x(v){return v<=2?t.log(v/2)*s(v,1)+1/v*r(h,v*v/4):t.exp(-v)/t.sqrt(v)*r(g,2/v)}return i(p,x,"BESSELK",2,1)}();e.besselj=o,e.bessely=l,e.besseli=s,e.besselk=a})});var $s=st((yM,wM)=>{(function(e,t){typeof yM=="object"&&typeof wM<"u"?wM.exports=t():typeof define=="function"&&define.amd?define(t):(e=e||self,e.CodeMirror=t())})(yM,function(){"use strict";var e=navigator.userAgent,t=navigator.platform,r=/gecko\/\d/i.test(e),n=/MSIE \d/.test(e),i=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(e),o=/Edge\/(\d+)/.exec(e),l=n||i||o,s=l&&(n?document.documentMode||6:+(o||i)[1]),a=!o&&/WebKit\//.test(e),u=a&&/Qt\/\d+\.\d+/.test(e),f=!o&&/Chrome\/(\d+)/.exec(e),p=f&&+f[1],h=/Opera\//.test(e),g=/Apple Computer/.test(navigator.vendor),x=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(e),v=/PhantomJS/.test(e),S=g&&(/Mobile\/\w+/.test(e)||navigator.maxTouchPoints>2),D=/Android/.test(e),C=S||D||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(e),E=S||/Mac/.test(t),M=/\bCrOS\b/.test(e),T=/win/i.test(t),N=h&&e.match(/Version\/(\d*\.\d*)/);N&&(N=Number(N[1])),N&&N>=15&&(h=!1,a=!0);var O=E&&(u||h&&(N==null||N<12.11)),F=r||l&&s>=9;function I(c){return new RegExp("(^|\\s)"+c+"(?:$|\\s)\\s*")}var B=function(c,d){var b=c.className,w=I(d).exec(b);if(w){var A=b.slice(w.index+w[0].length);c.className=b.slice(0,w.index)+(A?w[1]+A:"")}};function L(c){for(var d=c.childNodes.length;d>0;--d)c.removeChild(c.firstChild);return c}function q(c,d){return L(c).appendChild(d)}function R(c,d,b,w){var A=document.createElement(c);if(b&&(A.className=b),w&&(A.style.cssText=w),typeof d=="string")A.appendChild(document.createTextNode(d));else if(d)for(var k=0;k=d)return z+(d-k);z+=Y-k,z+=b-z%b,k=Y+1}}var le=function(){this.id=null,this.f=null,this.time=0,this.handler=Oe(this.onTimeout,this)};le.prototype.onTimeout=function(c){c.id=0,c.time<=+new Date?c.f():setTimeout(c.handler,c.time-+new Date)},le.prototype.set=function(c,d){this.f=d;var b=+new Date+c;(!this.id||b=d)return w+Math.min(z,d-A);if(A+=k-w,A+=b-A%b,w=k+1,A>=d)return w}}var ue=[""];function Te(c){for(;ue.length<=c;)ue.push(Ce(ue)+" ");return ue[c]}function Ce(c){return c[c.length-1]}function Je(c,d){for(var b=[],w=0;w"\x80"&&(c.toUpperCase()!=c.toLowerCase()||rt.test(c))}function Rt(c,d){return d?d.source.indexOf("\\w")>-1&&At(c)?!0:d.test(c):At(c)}function vt(c){for(var d in c)if(c.hasOwnProperty(d)&&c[d])return!1;return!0}var nr=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function qt(c){return c.charCodeAt(0)>=768&&nr.test(c)}function xe(c,d,b){for(;(b<0?d>0:db?-1:1;;){if(d==b)return d;var A=(d+b)/2,k=w<0?Math.ceil(A):Math.floor(A);if(k==d)return c(k)?d:b;c(k)?b=k:d=k+w}}function ge(c,d,b,w){if(!c)return w(d,b,"ltr",0);for(var A=!1,k=0;kd||d==b&&z.to==d)&&(w(Math.max(z.from,d),Math.min(z.to,b),z.level==1?"rtl":"ltr",k),A=!0)}A||w(d,b,"ltr")}var _e=null;function ze(c,d,b){var w;_e=null;for(var A=0;Ad)return A;k.to==d&&(k.from!=k.to&&b=="before"?w=A:_e=A),k.from==d&&(k.from!=k.to&&b!="before"?w=A:_e=A)}return w??_e}var Pe=function(){var c="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",d="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111";function b(Q){return Q<=247?c.charAt(Q):1424<=Q&&Q<=1524?"R":1536<=Q&&Q<=1785?d.charAt(Q-1536):1774<=Q&&Q<=2220?"r":8192<=Q&&Q<=8203?"w":Q==8204?"b":"L"}var w=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,A=/[stwN]/,k=/[LRr]/,z=/[Lb1n]/,Y=/[1n]/;function K(Q,de,Ne){this.level=Q,this.from=de,this.to=Ne}return function(Q,de){var Ne=de=="ltr"?"L":"R";if(Q.length==0||de=="ltr"&&!w.test(Q))return!1;for(var qe=Q.length,Be=[],Ke=0;Ke-1&&(w[d]=A.slice(0,k).concat(A.slice(k+1)))}}}function tt(c,d){var b=be(c,d);if(b.length)for(var w=Array.prototype.slice.call(arguments,2),A=0;A0}function jr(c){c.prototype.on=function(d,b){ae(this,d,b)},c.prototype.off=function(d,b){Ve(this,d,b)}}function Ut(c){c.preventDefault?c.preventDefault():c.returnValue=!1}function fi(c){c.stopPropagation?c.stopPropagation():c.cancelBubble=!0}function Kt(c){return c.defaultPrevented!=null?c.defaultPrevented:c.returnValue==!1}function no(c){Ut(c),fi(c)}function Dr(c){return c.target||c.srcElement}function On(c){var d=c.which;return d==null&&(c.button&1?d=1:c.button&2?d=3:c.button&4&&(d=2)),E&&c.ctrlKey&&d==1&&(d=3),d}var Ia=function(){if(l&&s<9)return!1;var c=R("div");return"draggable"in c||"dragDrop"in c}(),ka;function qn(c){if(ka==null){var d=R("span","\u200B");q(c,R("span",[d,document.createTextNode("x")])),c.firstChild.offsetHeight!=0&&(ka=d.offsetWidth<=1&&d.offsetHeight>2&&!(l&&s<8))}var b=ka?R("span","\u200B"):R("span","\xA0",null,"display: inline-block; width: 1px; margin-right: -1px");return b.setAttribute("cm-text",""),b}var na;function Bo(c){if(na!=null)return na;var d=q(c,document.createTextNode("A\u062EA")),b=X(d,0,1).getBoundingClientRect(),w=X(d,1,2).getBoundingClientRect();return L(c),!b||b.left==b.right?!1:na=w.right-b.right<3}var ri=` b`.split(/\n/).length!=3?function(c){for(var d=0,b=[],w=c.length;d<=w;){var A=c.indexOf(` -`,d);A==-1&&(A=c.length);var k=c.slice(d,c.charAt(A-1)=="\r"?A-1:A),z=k.indexOf("\r");z!=-1?(b.push(k.slice(0,z)),d+=z+1):(b.push(k),d=A+1)}return b}:function(c){return c.split(/\r\n?|\n/)},ia=window.getSelection?function(c){try{return c.selectionStart!=c.selectionEnd}catch{return!1}}:function(c){var d;try{d=c.ownerDocument.selection.createRange()}catch{}return!d||d.parentElement()!=c?!1:d.compareEndPoints("StartToEnd",d)!=0},Jl=function(){var c=R("div");return"oncopy"in c?!0:(c.setAttribute("oncopy","return;"),typeof c.oncopy=="function")}(),wo=null;function Ql(c){if(wo!=null)return wo;var d=q(c,R("span","x")),b=d.getBoundingClientRect(),w=X(d,0,1).getBoundingClientRect();return wo=Math.abs(b.left-w.left)>1}var iu={},ji={};function eo(c,d){arguments.length>2&&(d.dependencies=Array.prototype.slice.call(arguments,2)),iu[c]=d}function oa(c,d){ji[c]=d}function ou(c){if(typeof c=="string"&&ji.hasOwnProperty(c))c=ji[c];else if(c&&typeof c.name=="string"&&ji.hasOwnProperty(c.name)){var d=ji[c.name];typeof d=="string"&&(d={name:d}),c=ct(d,c),c.name=d.name}else{if(typeof c=="string"&&/^[\w\-]+\/[\w\-]+\+xml$/.test(c))return ou("application/xml");if(typeof c=="string"&&/^[\w\-]+\/[\w\-]+\+json$/.test(c))return ou("application/json")}return typeof c=="string"?{name:c}:c||{name:"null"}}function Ba(c,d){d=ou(d);var b=iu[d.name];if(!b)return Ba(c,"text/plain");var w=b(c,d);if(Yt.hasOwnProperty(d.name)){var A=Yt[d.name];for(var k in A)A.hasOwnProperty(k)&&(w.hasOwnProperty(k)&&(w["_"+k]=w[k]),w[k]=A[k])}if(w.name=d.name,d.helperType&&(w.helperType=d.helperType),d.modeProps)for(var z in d.modeProps)w[z]=d.modeProps[z];return w}var Yt={};function qi(c,d){var b=Yt.hasOwnProperty(c)?Yt[c]:Yt[c]={};De(d,b)}function Er(c,d){if(d===!0)return d;if(c.copyState)return c.copyState(d);var b={};for(var w in d){var A=d[w];A instanceof Array&&(A=A.concat([])),b[w]=A}return b}function It(c,d){for(var b;c.innerMode&&(b=c.innerMode(d),!(!b||b.mode==c));)d=b.state,c=b.mode;return b||{mode:c,state:d}}function bo(c,d,b){return c.startState?c.startState(d,b):!0}var Yr=function(c,d,b){this.pos=this.start=0,this.string=c,this.tabSize=d||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=b};Yr.prototype.eol=function(){return this.pos>=this.string.length},Yr.prototype.sol=function(){return this.pos==this.lineStart},Yr.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},Yr.prototype.next=function(){if(this.posd},Yr.prototype.eatSpace=function(){for(var c=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>c},Yr.prototype.skipToEnd=function(){this.pos=this.string.length},Yr.prototype.skipTo=function(c){var d=this.string.indexOf(c,this.pos);if(d>-1)return this.pos=d,!0},Yr.prototype.backUp=function(c){this.pos-=c},Yr.prototype.column=function(){return this.lastColumnPos0?null:(k&&d!==!1&&(this.pos+=k[0].length),k)}},Yr.prototype.current=function(){return this.string.slice(this.start,this.pos)},Yr.prototype.hideFirstChars=function(c,d){this.lineStart+=c;try{return d()}finally{this.lineStart-=c}},Yr.prototype.lookAhead=function(c){var d=this.lineOracle;return d&&d.lookAhead(c)},Yr.prototype.baseToken=function(){var c=this.lineOracle;return c&&c.baseToken(this.pos)};function kt(c,d){if(d-=c.first,d<0||d>=c.size)throw new Error("There is no line "+(d+c.first)+" in the document.");for(var b=c;!b.lines;)for(var w=0;;++w){var A=b.children[w],k=A.chunkSize();if(d=c.first&&db?Ye(b,kt(c,b).text.length):hc(d,kt(c,d.line).text.length)}function hc(c,d){var b=c.ch;return b==null||b>d?Ye(c.line,d):b<0?Ye(c.line,0):c}function Gh(c,d){for(var b=[],w=0;wthis.maxLookAhead&&(this.maxLookAhead=c),d},sa.prototype.baseToken=function(c){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=c;)this.baseTokenPos+=2;var d=this.baseTokens[this.baseTokenPos+1];return{type:d&&d.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-c}},sa.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},sa.fromSaved=function(c,d,b){return d instanceof Yu?new sa(c,Er(c.mode,d.state),b,d.lookAhead):new sa(c,Er(c.mode,d),b)},sa.prototype.save=function(c){var d=c!==!1?Er(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new Yu(d,this.maxLookAhead):d};function gs(c,d,b,w){var A=[c.state.modeGen],k={};xc(c,d.text,c.doc.mode,b,function(Q,me){return A.push(Q,me)},k,w);for(var z=b.state,Y=function(Q){b.baseTokens=A;var me=c.state.overlays[Q],Ne=1,qe=0;b.state=!0,xc(c,d.text,me.mode,b,function(Be,Ke){for(var nt=Ne;qeBe&&A.splice(Ne,1,Be,A[Ne+1],ft),Ne+=2,qe=Math.min(Be,ft)}if(Ke)if(me.opaque)A.splice(nt,Ne-nt,Be,"overlay "+Ke),Ne=nt+2;else for(;ntc.options.maxHighlightLength&&Er(c.doc.mode,w.state),k=gs(c,d,w);A&&(w.state=A),d.stateAfter=w.save(!A),d.styles=k.styles,k.classes?d.styleClasses=k.classes:d.styleClasses&&(d.styleClasses=null),b===c.doc.highlightFrontier&&(c.doc.modeFrontier=Math.max(c.doc.modeFrontier,++c.doc.highlightFrontier))}return d.styles}function Zr(c,d,b){var w=c.doc,A=c.display;if(!w.mode.startState)return new sa(w,!0,d);var k=Do(c,d,b),z=k>w.first&&kt(w,k-1).stateAfter,Y=z?sa.fromSaved(w,z,k):new sa(w,bo(w.mode),k);return w.iter(k,d,function(K){nm(c,K.text,Y);var Q=Y.line;K.stateAfter=Q==d-1||Q%5==0||Q>=A.viewFrom&&Qd.start)return k}throw new Error("Mode "+c.name+" failed to advance stream.")}var bn=function(c,d,b){this.start=c.start,this.end=c.pos,this.string=c.current(),this.type=d||null,this.state=b};function gc(c,d,b,w){var A=c.doc,k=A.mode,z;d=St(A,d);var Y=kt(A,d.line),K=Zr(c,d.line,b),Q=new Yr(Y.text,c.options.tabSize,K),me;for(w&&(me=[]);(w||Q.posc.options.maxHighlightLength?(Y=!1,z&&nm(c,d,w,me.pos),me.pos=d.length,Ne=null):Ne=vc(Yh(b,me,w.state,qe),k),qe){var Be=qe[0].name;Be&&(Ne="m-"+(Ne?Be+" "+Ne:Be))}if(!Y||Q!=Ne){for(;Kz;--Y){if(Y<=k.first)return k.first;var K=kt(k,Y-1),Q=K.stateAfter;if(Q&&(!b||Y+(Q instanceof Yu?Q.lookAhead:0)<=k.modeFrontier))return Y;var me=se(K.text,null,c.options.tabSize);(A==null||w>me)&&(A=Y-1,w=me)}return A}function im(c,d){if(c.modeFrontier=Math.min(c.modeFrontier,d),!(c.highlightFrontierb;w--){var A=kt(c,w).stateAfter;if(A&&(!(A instanceof Yu)||w+A.lookAhead=d:k.to>d);(w||(w=[])).push(new yc(z,k.from,K?null:k.to))}}return w}function Xu(c,d,b){var w;if(c)for(var A=0;A=d:k.to>d);if(Y||k.from==d&&z.type=="bookmark"&&(!b||k.marker.insertLeft)){var K=k.from==null||(z.inclusiveLeft?k.from<=d:k.from0&&Y)for(var Ct=0;Ct0)){var me=[K,1],Ne=Ee(Q.from,Y.from),qe=Ee(Q.to,Y.to);(Ne<0||!z.inclusiveLeft&&!Ne)&&me.push({from:Q.from,to:Y.from}),(qe>0||!z.inclusiveRight&&!qe)&&me.push({from:Y.to,to:Q.to}),A.splice.apply(A,me),K+=me.length-3}}return A}function jl(c){var d=c.markedSpans;if(d){for(var b=0;bd)&&(!w||su(w,k.marker)<0)&&(w=k.marker)}return w}function Tx(c,d,b,w,A){var k=kt(c,d),z=So&&k.markedSpans;if(z)for(var Y=0;Y=0&&Ne<=0||me<=0&&Ne>=0)&&(me<=0&&(K.marker.inclusiveRight&&A.inclusiveLeft?Ee(Q.to,b)>=0:Ee(Q.to,b)>0)||me>=0&&(K.marker.inclusiveRight&&A.inclusiveLeft?Ee(Q.from,w)<=0:Ee(Q.from,w)<0)))return!0}}}function ua(c){for(var d;d=Kn(c);)c=d.find(-1,!0).line;return c}function FS(c){for(var d;d=am(c);)c=d.find(1,!0).line;return c}function Dc(c){for(var d,b;d=am(c);)c=d.find(1,!0).line,(b||(b=[])).push(c);return b}function uu(c,d){var b=kt(c,d),w=ua(b);return b==w?d:j(w)}function _x(c,d){if(d>c.lastLine())return d;var b=kt(c,d),w;if(!Ui(c,b))return d;for(;w=am(b);)b=w.find(1,!0).line;return j(b)+1}function Ui(c,d){var b=So&&d.markedSpans;if(b){for(var w=void 0,A=0;Ad.maxLineLength&&(d.maxLineLength=A,d.maxLine=w)})}var tf=function(c,d,b){this.text=c,zi(this,d),this.height=b?b(this):1};tf.prototype.lineNo=function(){return j(this)},$r(tf);function Kh(c,d,b,w){c.text=d,c.stateAfter&&(c.stateAfter=null),c.styles&&(c.styles=null),c.order!=null&&(c.order=null),jl(c),zi(c,b);var A=w?w(c):1;A!=c.height&&Rn(c,A)}function Ox(c){c.parent=null,jl(c)}var Jh={},Fx={};function Qh(c,d){if(!c||/^\s*$/.test(c))return null;var b=d.addModeClass?Fx:Jh;return b[c]||(b[c]=c.replace(/\S+/g,"cm-$&"))}function jh(c,d){var b=V("span",null,null,a?"padding-right: .1px":null),w={pre:V("pre",[b],"CodeMirror-line"),content:b,col:0,pos:0,cm:c,trailingSpace:!1,splitSpaces:c.getOption("lineWrapping")};d.measure={};for(var A=0;A<=(d.rest?d.rest.length:0);A++){var k=A?d.rest[A-1]:d.line,z=void 0;w.pos=0,w.addToken=Ix,Bo(c.display.measure)&&(z=ze(k,c.doc.direction))&&(w.addToken=Sc(w.addToken,z)),w.map=[];var Y=d!=c.display.externalMeasured&&j(k);eg(k,w,Cx(c,k,Y)),k.styleClasses&&(k.styleClasses.bgClass&&(w.bgClass=Z(k.styleClasses.bgClass,w.bgClass||"")),k.styleClasses.textClass&&(w.textClass=Z(k.styleClasses.textClass,w.textClass||""))),w.map.length==0&&w.map.push(0,0,w.content.appendChild(Pn(c.display.measure))),A==0?(d.measure.map=w.map,d.measure.cache={}):((d.measure.maps||(d.measure.maps=[])).push(w.map),(d.measure.caches||(d.measure.caches=[])).push({}))}if(a){var K=w.content.lastChild;(/\bcm-tab\b/.test(K.className)||K.querySelector&&K.querySelector(".cm-tab"))&&(w.content.className="cm-tab-wrap-hack")}return He(c,"renderLine",c,d.line,w.pre),w.pre.className&&(w.textClass=Z(w.pre.className,w.textClass||"")),w}function IS(c){var d=R("span","\u2022","cm-invalidchar");return d.title="\\u"+c.charCodeAt(0).toString(16),d.setAttribute("aria-label",d.title),d}function Ix(c,d,b,w,A,k,z){if(d){var Y=c.splitSpaces?kS(d,c.trailingSpace):d,K=c.cm.state.specialChars,Q=!1,me;if(!K.test(d))c.col+=d.length,me=document.createTextNode(Y),c.map.push(c.pos,c.pos+d.length,me),l&&s<9&&(Q=!0),c.pos+=d.length;else{me=document.createDocumentFragment();for(var Ne=0;;){K.lastIndex=Ne;var qe=K.exec(d),Be=qe?qe.index-Ne:d.length-Ne;if(Be){var Ke=document.createTextNode(Y.slice(Ne,Ne+Be));l&&s<9?me.appendChild(R("span",[Ke])):me.appendChild(Ke),c.map.push(c.pos,c.pos+Be,Ke),c.col+=Be,c.pos+=Be}if(!qe)break;Ne+=Be+1;var nt=void 0;if(qe[0]==" "){var ft=c.cm.options.tabSize,pt=ft-c.col%ft;nt=me.appendChild(R("span",Oe(pt),"cm-tab")),nt.setAttribute("role","presentation"),nt.setAttribute("cm-text"," "),c.col+=pt}else qe[0]=="\r"||qe[0]==` -`?(nt=me.appendChild(R("span",qe[0]=="\r"?"\u240D":"\u2424","cm-invalidchar")),nt.setAttribute("cm-text",qe[0]),c.col+=1):(nt=c.cm.options.specialCharPlaceholder(qe[0]),nt.setAttribute("cm-text",qe[0]),l&&s<9?me.appendChild(R("span",[nt])):me.appendChild(nt),c.col+=1);c.map.push(c.pos,c.pos+1,nt),c.pos++}}if(c.trailingSpace=Y.charCodeAt(d.length-1)==32,b||w||A||Q||k||z){var gt=b||"";w&&(gt+=w),A&&(gt+=A);var dt=R("span",[me],gt,k);if(z)for(var Ct in z)z.hasOwnProperty(Ct)&&Ct!="style"&&Ct!="class"&&dt.setAttribute(Ct,z[Ct]);return c.content.appendChild(dt)}c.content.appendChild(me)}}function kS(c,d){if(c.length>1&&!/ /.test(c))return c;for(var b=d,w="",A=0;AQ&&Ne.from<=Q));qe++);if(Ne.to>=me)return c(b,w,A,k,z,Y,K);c(b,w.slice(0,Ne.to-Q),A,k,null,Y,K),k=null,w=w.slice(Ne.to-Q),Q=Ne.to}}}function um(c,d,b,w){var A=!w&&b.widgetNode;A&&c.map.push(c.pos,c.pos+d,A),!w&&c.cm.display.input.needsContentAttribute&&(A||(A=c.content.appendChild(document.createElement("span"))),A.setAttribute("cm-marker",b.id)),A&&(c.cm.display.input.setUneditable(A),c.content.appendChild(A)),c.pos+=d,c.trailingSpace=!1}function eg(c,d,b){var w=c.markedSpans,A=c.text,k=0;if(!w){for(var z=1;zK||lr.collapsed&&Lt.to==K&&Lt.from==K)){if(Lt.to!=null&&Lt.to!=K&&Be>Lt.to&&(Be=Lt.to,nt=""),lr.className&&(Ke+=" "+lr.className),lr.css&&(qe=(qe?qe+";":"")+lr.css),lr.startStyle&&Lt.from==K&&(ft+=" "+lr.startStyle),lr.endStyle&&Lt.to==Be&&(Ct||(Ct=[])).push(lr.endStyle,Lt.to),lr.title&&((gt||(gt={})).title=lr.title),lr.attributes)for(var Wr in lr.attributes)(gt||(gt={}))[Wr]=lr.attributes[Wr];lr.collapsed&&(!pt||su(pt.marker,lr)<0)&&(pt=Lt)}else Lt.from>K&&Be>Lt.from&&(Be=Lt.from)}if(Ct)for(var Qn=0;Qn=Y)break;for(var no=Math.min(Y,Be);;){if(me){var Wi=K+me.length;if(!pt){var On=Wi>no?me.slice(0,no-K):me;d.addToken(d,On,Ne?Ne+Ke:Ke,ft,K+On.length==Be?nt:"",qe,gt)}if(Wi>=no){me=me.slice(no-K),K=no;break}K=Wi,ft=""}me=A.slice(k,k=b[Q++]),Ne=Qh(b[Q++],d.cm.options)}}}function tg(c,d,b){this.line=d,this.rest=Dc(d),this.size=this.rest?j(Me(this.rest))-b+1:1,this.node=this.text=null,this.hidden=Ui(c,d)}function rf(c,d,b){for(var w=[],A,k=d;k2&&k.push((K.bottom+Q.top)/2-b.top)}}k.push(b.bottom-b.top)}}function ag(c,d,b){if(c.line==d)return{map:c.measure.map,cache:c.measure.cache};if(c.rest){for(var w=0;wb)return{map:c.measure.maps[A],cache:c.measure.caches[A],before:!0}}}function BS(c,d){d=ua(d);var b=j(d),w=c.display.externalMeasured=new tg(c.doc,d,b);w.lineN=b;var A=w.built=jh(c,w);return w.text=A.pre,q(c.display.lineMeasure,A.pre),w}function Rx(c,d,b,w){return Eo(c,ju(c,d),b,w)}function mm(c,d){if(d>=c.display.viewFrom&&d=b.lineN&&dd)&&(k=K-Y,A=k-1,d>=K&&(z="right")),A!=null){if(w=c[Q+2],Y==K&&b==(w.insertLeft?"left":"right")&&(z=b),b=="left"&&A==0)for(;Q&&c[Q-2]==c[Q-3]&&c[Q-1].insertLeft;)w=c[(Q-=3)+2],z="left";if(b=="right"&&A==K-Y)for(;Q=0&&(b=c[A]).left==b.right;A--);return b}function Hx(c,d,b,w){var A=zx(d.map,b,w),k=A.node,z=A.start,Y=A.end,K=A.collapse,Q;if(k.nodeType==3){for(var me=0;me<4;me++){for(;z&&qt(d.line.text.charAt(A.coverStart+z));)--z;for(;A.coverStart+Y0&&(K=w="right");var Ne;c.options.lineWrapping&&(Ne=k.getClientRects()).length>1?Q=Ne[w=="right"?Ne.length-1:0]:Q=k.getBoundingClientRect()}if(l&&s<9&&!z&&(!Q||!Q.left&&!Q.right)){var qe=k.parentNode.getClientRects()[0];qe?Q={left:qe.left,right:qe.left+bs(c.display),top:qe.top,bottom:qe.bottom}:Q=qx}for(var Be=Q.top-d.rect.top,Ke=Q.bottom-d.rect.top,nt=(Be+Ke)/2,ft=d.view.measure.heights,pt=0;pt=w.text.length?(K=w.text.length,Q="before"):K<=0&&(K=0,Q="after"),!Y)return z(Q=="before"?K-1:K,Q=="before");function me(Ke,nt,ft){var pt=Y[nt],gt=pt.level==1;return z(ft?Ke-1:Ke,gt!=ft)}var Ne=Re(Y,K,Q),qe=_e,Be=me(K,Ne,Q=="before");return qe!=null&&(Be.other=me(K,qe,Q!="before")),Be}function el(c,d){var b=0;d=St(c.doc,d),c.options.lineWrapping||(b=bs(c.display)*d.ch);var w=kt(c.doc,d.line),A=Ro(w)+of(c.display);return{left:b,right:b,top:A,bottom:A+w.height}}function Cc(c,d,b,w,A){var k=Ye(c,d,b);return k.xRel=A,w&&(k.outside=w),k}function sg(c,d,b){var w=c.doc;if(b+=c.display.viewOffset,b<0)return Cc(w.first,0,null,-1,-1);var A=ye(w,b),k=w.first+w.size-1;if(A>k)return Cc(w.first+w.size-1,kt(w,k).text.length,null,1,1);d<0&&(d=0);for(var z=kt(w,A);;){var Y=Mc(c,z,A,d,b),K=OS(z,Y.ch+(Y.xRel>0||Y.outside>0?1:0));if(!K)return Y;var Q=K.find(1);if(Q.line==A)return Q;z=kt(w,A=Q.line)}}function Gx(c,d,b,w){w-=_n(d);var A=d.text.length,k=te(function(z){return Eo(c,b,z-1).bottom<=w},A,0);return A=te(function(z){return Eo(c,b,z).top>w},k,A),{begin:k,end:A}}function Yx(c,d,b,w){b||(b=ju(c,d));var A=Ac(c,d,Eo(c,b,w),"line").top;return Gx(c,d,b,A)}function ug(c,d,b,w){return c.bottom<=b?!1:c.top>b?!0:(w?c.left:c.right)>d}function Mc(c,d,b,w,A){A-=Ro(d);var k=ju(c,d),z=_n(d),Y=0,K=d.text.length,Q=!0,me=ze(d,c.doc.direction);if(me){var Ne=(c.options.lineWrapping?qo:RS)(c,d,b,k,me,w,A);Q=Ne.level!=1,Y=Q?Ne.from:Ne.to-1,K=Q?Ne.to:Ne.from-1}var qe=null,Be=null,Ke=te(function(Vt){var Lt=Eo(c,k,Vt);return Lt.top+=z,Lt.bottom+=z,ug(Lt,w,A,!1)?(Lt.top<=A&&Lt.left<=w&&(qe=Vt,Be=Lt),!0):!1},Y,K),nt,ft,pt=!1;if(Be){var gt=w-Be.left=Ct.bottom?1:0}return Ke=xe(d.text,Ke,1),Cc(b,Ke,ft,pt,w-nt)}function RS(c,d,b,w,A,k,z){var Y=te(function(Ne){var qe=A[Ne],Be=qe.level!=1;return ug($i(c,Ye(b,Be?qe.to:qe.from,Be?"before":"after"),"line",d,w),k,z,!0)},0,A.length-1),K=A[Y];if(Y>0){var Q=K.level!=1,me=$i(c,Ye(b,Q?K.from:K.to,Q?"after":"before"),"line",d,w);ug(me,k,z,!0)&&me.top>z&&(K=A[Y-1])}return K}function qo(c,d,b,w,A,k,z){var Y=Gx(c,d,w,z),K=Y.begin,Q=Y.end;/\s/.test(d.text.charAt(Q-1))&&Q--;for(var me=null,Ne=null,qe=0;qe=Q||Be.to<=K)){var Ke=Be.level!=1,nt=Eo(c,w,Ke?Math.min(Q,Be.to)-1:Math.max(K,Be.from)).right,ft=ntft)&&(me=Be,Ne=ft)}}return me||(me=A[A.length-1]),me.fromQ&&(me={from:me.from,to:Q,level:me.level}),me}var zo;function ws(c){if(c.cachedTextHeight!=null)return c.cachedTextHeight;if(zo==null){zo=R("pre",null,"CodeMirror-line-like");for(var d=0;d<49;++d)zo.appendChild(document.createTextNode("x")),zo.appendChild(R("br"));zo.appendChild(document.createTextNode("x"))}q(c.measure,zo);var b=zo.offsetHeight/50;return b>3&&(c.cachedTextHeight=b),L(c.measure),b||1}function bs(c){if(c.cachedCharWidth!=null)return c.cachedCharWidth;var d=R("span","xxxxxxxxxx"),b=R("pre",[d],"CodeMirror-line-like");q(c.measure,b);var w=d.getBoundingClientRect(),A=(w.right-w.left)/10;return A>2&&(c.cachedCharWidth=A),A||10}function Tc(c){for(var d=c.display,b={},w={},A=d.gutters.clientLeft,k=d.gutters.firstChild,z=0;k;k=k.nextSibling,++z){var Y=c.display.gutterSpecs[z].className;b[Y]=k.offsetLeft+k.clientLeft+A,w[Y]=k.clientWidth}return{fixedPos:tl(d),gutterTotalWidth:d.gutters.offsetWidth,gutterLeft:b,gutterWidth:w,wrapperWidth:d.wrapper.clientWidth}}function tl(c){return c.scroller.getBoundingClientRect().left-c.sizer.getBoundingClientRect().left}function lg(c){var d=ws(c.display),b=c.options.lineWrapping,w=b&&Math.max(5,c.display.scroller.clientWidth/bs(c.display)-3);return function(A){if(Ui(c.doc,A))return 0;var k=0;if(A.widgets)for(var z=0;z0&&(Q=kt(c.doc,K.line).text).length==K.ch){var me=se(Q,Q.length,c.options.tabSize)-Q.length;K=Ye(K.line,Math.max(0,Math.round((k-to(c.display).left)/bs(c.display))-me))}return K}function il(c,d){if(d>=c.display.viewTo||(d-=c.display.viewFrom,d<0))return null;for(var b=c.display.view,w=0;wd)&&(A.updateLineNumbers=d),c.curOp.viewChanged=!0,d>=A.viewTo)So&&uu(c.doc,d)A.viewFrom?qa(c):(A.viewFrom+=w,A.viewTo+=w);else if(d<=A.viewFrom&&b>=A.viewTo)qa(c);else if(d<=A.viewFrom){var k=gm(c,b,b+w,1);k?(A.view=A.view.slice(k.index),A.viewFrom=k.lineN,A.viewTo+=w):qa(c)}else if(b>=A.viewTo){var z=gm(c,d,d,-1);z?(A.view=A.view.slice(0,z.index),A.viewTo=z.lineN):qa(c)}else{var Y=gm(c,d,d,-1),K=gm(c,b,b+w,1);Y&&K?(A.view=A.view.slice(0,Y.index).concat(rf(c,Y.lineN,K.lineN)).concat(A.view.slice(K.index)),A.viewTo+=w):qa(c)}var Q=A.externalMeasured;Q&&(b=A.lineN&&d=w.viewTo)){var k=w.view[il(c,d)];if(k.node!=null){var z=k.changes||(k.changes=[]);oe(z,b)==-1&&z.push(b)}}}function qa(c){c.display.viewFrom=c.display.viewTo=c.doc.first,c.display.view=[],c.display.viewOffset=0}function gm(c,d,b,w){var A=il(c,d),k,z=c.display.view;if(!So||b==c.doc.first+c.doc.size)return{index:A,lineN:b};for(var Y=c.display.viewFrom,K=0;K0){if(A==z.length-1)return null;k=Y+z[A].size-d,A++}else k=Y-d;d+=k,b+=k}for(;uu(c.doc,b)!=b;){if(A==(w<0?0:z.length-1))return null;b+=w*z[A-(w<0?1:0)].size,A+=w}return{index:A,lineN:b}}function Zx(c,d,b){var w=c.display,A=w.view;A.length==0||d>=w.viewTo||b<=w.viewFrom?(w.view=rf(c,d,b),w.viewFrom=d):(w.viewFrom>d?w.view=rf(c,d,w.viewFrom).concat(w.view):w.viewFromb&&(w.view=w.view.slice(0,il(c,b)))),w.viewTo=b}function Xx(c){for(var d=c.display.view,b=0,w=0;w=c.display.viewTo||K.to().line0?z:c.defaultCharWidth())+"px"}if(w.other){var Y=b.appendChild(R("div","\xA0","CodeMirror-cursor CodeMirror-secondarycursor"));Y.style.display="",Y.style.left=w.other.left+"px",Y.style.top=w.other.top+"px",Y.style.height=(w.other.bottom-w.other.top)*.85+"px"}}function af(c,d){return c.top-d.top||c.left-d.left}function cg(c,d,b){var w=c.display,A=c.doc,k=document.createDocumentFragment(),z=to(c.display),Y=z.left,K=Math.max(w.sizerWidth,cu(c)-w.sizer.offsetLeft)-z.right,Q=A.direction=="ltr";function me(dt,Ct,Vt,Lt){Ct<0&&(Ct=0),Ct=Math.round(Ct),Lt=Math.round(Lt),k.appendChild(R("div",null,"CodeMirror-selected","position: absolute; left: "+dt+`px; - top: `+Ct+"px; width: "+(Vt??K-dt)+`px; - height: `+(Lt-Ct)+"px"))}function Ne(dt,Ct,Vt){var Lt=kt(A,dt),lr=Lt.text.length,Wr,Qn;function ln(On,ni){return hm(c,Ye(dt,On),"div",Lt,ni)}function no(On,ni,ii){var Un=Yx(c,Lt,null,On),Fn=ni=="ltr"==(ii=="after")?"left":"right",dn=ii=="after"?Un.begin:Un.end-(/\s/.test(Lt.text.charAt(Un.end-1))?2:1);return ln(dn,Fn)[Fn]}var Wi=ze(Lt,A.direction);return ge(Wi,Ct||0,Vt??lr,function(On,ni,ii,Un){var Fn=ii=="ltr",dn=ln(On,Fn?"left":"right"),Vi=ln(ni-1,Fn?"right":"left"),gu=Ct==null&&On==0,vu=Vt==null&&ni==lr,oi=Un==0,Ua=!Wi||Un==Wi.length-1;if(Vi.top-dn.top<=3){var jn=(Q?gu:vu)&&oi,Wg=(Q?vu:gu)&&Ua,da=jn?Y:(Fn?dn:Vi).left,vl=Wg?K:(Fn?Vi:dn).right;me(da,dn.top,vl-da,dn.bottom)}else{var xl,Ti,Ef,Vg;Fn?(xl=Q&&gu&&oi?Y:dn.left,Ti=Q?K:no(On,ii,"before"),Ef=Q?Y:no(ni,ii,"after"),Vg=Q&&vu&&Ua?K:Vi.right):(xl=Q?no(On,ii,"before"):Y,Ti=!Q&&gu&&oi?K:dn.right,Ef=!Q&&vu&&Ua?Y:Vi.left,Vg=Q?no(ni,ii,"after"):K),me(xl,dn.top,Ti-xl,dn.bottom),dn.bottom0?d.blinker=setInterval(function(){c.hasFocus()||sf(c),d.cursorDiv.style.visibility=(b=!b)?"":"hidden"},c.options.cursorBlinkRate):c.options.cursorBlinkRate<0&&(d.cursorDiv.style.visibility="hidden")}}function Fc(c){c.hasFocus()||(c.display.input.focus(),c.state.focused||ym(c))}function xm(c){c.state.delayingBlurEvent=!0,setTimeout(function(){c.state.delayingBlurEvent&&(c.state.delayingBlurEvent=!1,c.state.focused&&sf(c))},100)}function ym(c,d){c.state.delayingBlurEvent&&!c.state.draggingText&&(c.state.delayingBlurEvent=!1),c.options.readOnly!="nocursor"&&(c.state.focused||(He(c,"focus",c,d),c.state.focused=!0,ee(c.display.wrapper,"CodeMirror-focused"),!c.curOp&&c.display.selForContextMenu!=c.doc.sel&&(c.display.input.reset(),a&&setTimeout(function(){return c.display.input.reset(!0)},20)),c.display.input.receivedFocus()),vm(c))}function sf(c,d){c.state.delayingBlurEvent||(c.state.focused&&(He(c,"blur",c,d),c.state.focused=!1,B(c.display.wrapper,"CodeMirror-focused")),clearInterval(c.display.blinker),setTimeout(function(){c.state.focused||(c.display.shift=!1)},150))}function Ic(c){for(var d=c.display,b=d.lineDiv.offsetTop,w=Math.max(0,d.scroller.getBoundingClientRect().top),A=d.lineDiv.getBoundingClientRect().top,k=0,z=0;z.005||Be<-.005)&&(Ac.display.sizerWidth){var nt=Math.ceil(me/bs(c.display));nt>c.display.maxLineLength&&(c.display.maxLineLength=nt,c.display.maxLine=Y.line,c.display.maxLineChanged=!0)}}}Math.abs(k)>2&&(d.scroller.scrollTop+=k)}function _r(c){if(c.widgets)for(var d=0;d=z&&(k=ye(d,Ro(kt(d,K))-c.wrapper.clientHeight),z=K)}return{from:k,to:Math.max(z,k+1)}}function Kx(c,d){if(!lt(c,"scrollCursorIntoView")){var b=c.display,w=b.sizer.getBoundingClientRect(),A=null,k=b.wrapper.ownerDocument;if(d.top+w.top<0?A=!0:d.bottom+w.top>(k.defaultView.innerHeight||k.documentElement.clientHeight)&&(A=!1),A!=null&&!v){var z=R("div","\u200B",null,`position: absolute; - top: `+(d.top-b.viewOffset-of(c.display))+`px; - height: `+(d.bottom-d.top+la(c)+b.barHeight)+`px; - left: `+d.left+"px; width: "+Math.max(2,d.right-d.left)+"px;");c.display.lineSpace.appendChild(z),z.scrollIntoView(A),c.display.lineSpace.removeChild(z)}}}function qS(c,d,b,w){w==null&&(w=0);var A;!c.options.lineWrapping&&d==b&&(b=d.sticky=="before"?Ye(d.line,d.ch+1,"before"):d,d=d.ch?Ye(d.line,d.sticky=="before"?d.ch-1:d.ch,"after"):d);for(var k=0;k<5;k++){var z=!1,Y=$i(c,d),K=!b||b==d?Y:$i(c,b);A={left:Math.min(Y.left,K.left),top:Math.min(Y.top,K.top)-w,right:Math.max(Y.left,K.left),bottom:Math.max(Y.bottom,K.bottom)+w};var Q=bm(c,A),me=c.doc.scrollTop,Ne=c.doc.scrollLeft;if(Q.scrollTop!=null&&(fa(c,Q.scrollTop),Math.abs(c.doc.scrollTop-me)>1&&(z=!0)),Q.scrollLeft!=null&&(ol(c,Q.scrollLeft),Math.abs(c.doc.scrollLeft-Ne)>1&&(z=!0)),!z)break}return A}function zS(c,d){var b=bm(c,d);b.scrollTop!=null&&fa(c,b.scrollTop),b.scrollLeft!=null&&ol(c,b.scrollLeft)}function bm(c,d){var b=c.display,w=ws(c.display);d.top<0&&(d.top=0);var A=c.curOp&&c.curOp.scrollTop!=null?c.curOp.scrollTop:b.scroller.scrollTop,k=pm(c),z={};d.bottom-d.top>k&&(d.bottom=d.top+k);var Y=c.doc.height+Nc(b),K=d.topY-w;if(d.topA+k){var me=Math.min(d.top,(Q?Y:d.bottom)-k);me!=A&&(z.scrollTop=me)}var Ne=c.options.fixedGutter?0:b.gutters.offsetWidth,qe=c.curOp&&c.curOp.scrollLeft!=null?c.curOp.scrollLeft:b.scroller.scrollLeft-Ne,Be=cu(c)-b.gutters.offsetWidth,Ke=d.right-d.left>Be;return Ke&&(d.right=d.left+Be),d.left<10?z.scrollLeft=0:d.leftBe+qe-3&&(z.scrollLeft=d.right+(Ke?0:10)-Be),z}function pg(c,d){d!=null&&(Lc(c),c.curOp.scrollTop=(c.curOp.scrollTop==null?c.doc.scrollTop:c.curOp.scrollTop)+d)}function uf(c){Lc(c);var d=c.getCursor();c.curOp.scrollToPos={from:d,to:d,margin:c.options.cursorScrollMargin}}function kc(c,d,b){(d!=null||b!=null)&&Lc(c),d!=null&&(c.curOp.scrollLeft=d),b!=null&&(c.curOp.scrollTop=b)}function mg(c,d){Lc(c),c.curOp.scrollToPos=d}function Lc(c){var d=c.curOp.scrollToPos;if(d){c.curOp.scrollToPos=null;var b=el(c,d.from),w=el(c,d.to);lf(c,b,w,d.margin)}}function lf(c,d,b,w){var A=bm(c,{left:Math.min(d.left,b.left),top:Math.min(d.top,b.top)-w,right:Math.max(d.right,b.right),bottom:Math.max(d.bottom,b.bottom)+w});kc(c,A.scrollLeft,A.scrollTop)}function fa(c,d){Math.abs(c.doc.scrollTop-d)<2||(r||gg(c,{top:d}),Jx(c,d,!0),r&&gg(c),ll(c,100))}function Jx(c,d,b){d=Math.max(0,Math.min(c.display.scroller.scrollHeight-c.display.scroller.clientHeight,d)),!(c.display.scroller.scrollTop==d&&!b)&&(c.doc.scrollTop=d,c.display.scrollbars.setScrollTop(d),c.display.scroller.scrollTop!=d&&(c.display.scroller.scrollTop=d))}function ol(c,d,b,w){d=Math.max(0,Math.min(d,c.display.scroller.scrollWidth-c.display.scroller.clientWidth)),!((b?d==c.doc.scrollLeft:Math.abs(c.doc.scrollLeft-d)<2)&&!w)&&(c.doc.scrollLeft=d,iy(c),c.display.scroller.scrollLeft!=d&&(c.display.scroller.scrollLeft=d),c.display.scrollbars.setScrollLeft(d))}function Bc(c){var d=c.display,b=d.gutters.offsetWidth,w=Math.round(c.doc.height+Nc(c.display));return{clientHeight:d.scroller.clientHeight,viewHeight:d.wrapper.clientHeight,scrollWidth:d.scroller.scrollWidth,clientWidth:d.scroller.clientWidth,viewWidth:d.wrapper.clientWidth,barLeft:c.options.fixedGutter?b:0,docHeight:w,scrollHeight:w+la(c)+d.barHeight,nativeBarWidth:d.nativeBarWidth,gutterWidth:b}}var zn=function(c,d,b){this.cm=b;var w=this.vert=R("div",[R("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),A=this.horiz=R("div",[R("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");w.tabIndex=A.tabIndex=-1,c(w),c(A),W(w,"scroll",function(){w.clientHeight&&d(w.scrollTop,"vertical")}),W(A,"scroll",function(){A.clientWidth&&d(A.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,l&&s<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};zn.prototype.update=function(c){var d=c.scrollWidth>c.clientWidth+1,b=c.scrollHeight>c.clientHeight+1,w=c.nativeBarWidth;if(b){this.vert.style.display="block",this.vert.style.bottom=d?w+"px":"0";var A=c.viewHeight-(d?w:0);this.vert.firstChild.style.height=Math.max(0,c.scrollHeight-c.clientHeight+A)+"px"}else this.vert.scrollTop=0,this.vert.style.display="",this.vert.firstChild.style.height="0";if(d){this.horiz.style.display="block",this.horiz.style.right=b?w+"px":"0",this.horiz.style.left=c.barLeft+"px";var k=c.viewWidth-c.barLeft-(b?w:0);this.horiz.firstChild.style.width=Math.max(0,c.scrollWidth-c.clientWidth+k)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&c.clientHeight>0&&(w==0&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:b?w:0,bottom:d?w:0}},zn.prototype.setScrollLeft=function(c){this.horiz.scrollLeft!=c&&(this.horiz.scrollLeft=c),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},zn.prototype.setScrollTop=function(c){this.vert.scrollTop!=c&&(this.vert.scrollTop=c),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},zn.prototype.zeroWidthHack=function(){var c=E&&!x?"12px":"18px";this.horiz.style.height=this.vert.style.width=c,this.horiz.style.visibility=this.vert.style.visibility="hidden",this.disableHoriz=new le,this.disableVert=new le},zn.prototype.enableZeroWidthBar=function(c,d,b){c.style.visibility="";function w(){var A=c.getBoundingClientRect(),k=b=="vert"?document.elementFromPoint(A.right-1,(A.top+A.bottom)/2):document.elementFromPoint((A.right+A.left)/2,A.bottom-1);k!=c?c.style.visibility="hidden":d.set(1e3,w)}d.set(1e3,w)},zn.prototype.clear=function(){var c=this.horiz.parentNode;c.removeChild(this.horiz),c.removeChild(this.vert)};var al=function(){};al.prototype.update=function(){return{bottom:0,right:0}},al.prototype.setScrollLeft=function(){},al.prototype.setScrollTop=function(){},al.prototype.clear=function(){};function sl(c,d){d||(d=Bc(c));var b=c.display.barWidth,w=c.display.barHeight;Qx(c,d);for(var A=0;A<4&&b!=c.display.barWidth||w!=c.display.barHeight;A++)b!=c.display.barWidth&&c.options.lineWrapping&&Ic(c),Qx(c,Bc(c)),b=c.display.barWidth,w=c.display.barHeight}function Qx(c,d){var b=c.display,w=b.scrollbars.update(d);b.sizer.style.paddingRight=(b.barWidth=w.right)+"px",b.sizer.style.paddingBottom=(b.barHeight=w.bottom)+"px",b.heightForcer.style.borderBottom=w.bottom+"px solid transparent",w.right&&w.bottom?(b.scrollbarFiller.style.display="block",b.scrollbarFiller.style.height=w.bottom+"px",b.scrollbarFiller.style.width=w.right+"px"):b.scrollbarFiller.style.display="",w.bottom&&c.options.coverGutterNextToScrollbar&&c.options.fixedGutter?(b.gutterFiller.style.display="block",b.gutterFiller.style.height=w.bottom+"px",b.gutterFiller.style.width=d.gutterWidth+"px"):b.gutterFiller.style.display=""}var jx={native:zn,null:al};function ey(c){c.display.scrollbars&&(c.display.scrollbars.clear(),c.display.scrollbars.addClass&&B(c.display.wrapper,c.display.scrollbars.addClass)),c.display.scrollbars=new jx[c.options.scrollbarStyle](function(d){c.display.wrapper.insertBefore(d,c.display.scrollbarFiller),W(d,"mousedown",function(){c.state.focused&&setTimeout(function(){return c.display.input.focus()},0)}),d.setAttribute("cm-not-content","true")},function(d,b){b=="horizontal"?ol(c,d):fa(c,d)},c),c.display.scrollbars.addClass&&ee(c.display.wrapper,c.display.scrollbars.addClass)}var US=0;function Ds(c){c.curOp={cm:c,viewChanged:!1,startHeight:c.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++US,markArrays:null},kx(c.curOp)}function ca(c){var d=c.curOp;d&&lm(d,function(b){for(var w=0;w=b.viewTo)||b.maxLineChanged&&d.options.lineWrapping,c.update=c.mustUpdate&&new Pc(d,c.mustUpdate&&{top:c.scrollTop,ensure:c.scrollToPos},c.forceUpdate)}function HS(c){c.updatedDisplay=c.mustUpdate&&dg(c.cm,c.update)}function ul(c){var d=c.cm,b=d.display;c.updatedDisplay&&Ic(d),c.barMeasure=Bc(d),b.maxLineChanged&&!d.options.lineWrapping&&(c.adjustWidthTo=Rx(d,b.maxLine,b.maxLine.text.length).left+3,d.display.sizerWidth=c.adjustWidthTo,c.barMeasure.scrollWidth=Math.max(b.scroller.clientWidth,b.sizer.offsetLeft+c.adjustWidthTo+la(d)+d.display.barWidth),c.maxScrollLeft=Math.max(0,b.sizer.offsetLeft+c.adjustWidthTo-cu(d))),(c.updatedDisplay||c.selectionChanged)&&(c.preparedSelection=b.input.prepareSelection())}function ty(c){var d=c.cm;c.adjustWidthTo!=null&&(d.display.sizer.style.minWidth=c.adjustWidthTo+"px",c.maxScrollLeft=c.display.viewTo)){var b=+new Date+c.options.workTime,w=Zr(c,d.highlightFrontier),A=[];d.iter(w.line,Math.min(d.first+d.size,c.display.viewTo+500),function(k){if(w.line>=c.display.viewFrom){var z=k.styles,Y=k.text.length>c.options.maxHighlightLength?Er(d.mode,w.state):null,K=gs(c,k,w,!0);Y&&(w.state=Y),k.styles=K.styles;var Q=k.styleClasses,me=K.classes;me?k.styleClasses=me:Q&&(k.styleClasses=null);for(var Ne=!z||z.length!=k.styles.length||Q!=me&&(!Q||!me||Q.bgClass!=me.bgClass||Q.textClass!=me.textClass),qe=0;!Ne&&qeb)return ll(c,c.options.workDelay),!0}),d.highlightFrontier=w.line,d.modeFrontier=Math.max(d.modeFrontier,w.line),A.length&&ro(c,function(){for(var k=0;k=b.viewFrom&&d.visible.to<=b.viewTo&&(b.updateLineNumbers==null||b.updateLineNumbers>=b.viewTo)&&b.renderedView==b.view&&Xx(c)==0)return!1;vg(c)&&(qa(c),d.dims=Tc(c));var A=w.first+w.size,k=Math.max(d.visible.from-c.options.viewportMargin,w.first),z=Math.min(A,d.visible.to+c.options.viewportMargin);b.viewFromz&&b.viewTo-z<20&&(z=Math.min(A,b.viewTo)),So&&(k=uu(c.doc,k),z=_x(c.doc,z));var Y=k!=b.viewFrom||z!=b.viewTo||b.lastWrapHeight!=d.wrapperHeight||b.lastWrapWidth!=d.wrapperWidth;Zx(c,k,z),b.viewOffset=Ro(kt(c.doc,b.viewFrom)),c.display.mover.style.top=b.viewOffset+"px";var K=Xx(c);if(!Y&&K==0&&!d.force&&b.renderedView==b.view&&(b.updateLineNumbers==null||b.updateLineNumbers>=b.viewTo))return!1;var Q=ny(c);return K>4&&(b.lineDiv.style.display="none"),VS(c,b.updateLineNumbers,d.dims),K>4&&(b.lineDiv.style.display=""),b.renderedView=b.view,WS(Q),L(b.cursorDiv),L(b.selectionDiv),b.gutters.style.height=b.sizer.style.minHeight=0,Y&&(b.lastWrapHeight=d.wrapperHeight,b.lastWrapWidth=d.wrapperWidth,ll(c,400)),b.updateLineNumbers=null,!0}function hg(c,d){for(var b=d.viewport,w=!0;;w=!1){if(!w||!c.options.lineWrapping||d.oldDisplayWidth==cu(c)){if(b&&b.top!=null&&(b={top:Math.min(c.doc.height+Nc(c.display)-pm(c),b.top)}),d.visible=wm(c.display,c.doc,b),d.visible.from>=c.display.viewFrom&&d.visible.to<=c.display.viewTo)break}else w&&(d.visible=wm(c.display,c.doc,b));if(!dg(c,d))break;Ic(c);var A=Bc(c);_c(c),sl(c,A),Nm(c,A),d.force=!1}d.signal(c,"update",c),(c.display.viewFrom!=c.display.reportedViewFrom||c.display.viewTo!=c.display.reportedViewTo)&&(d.signal(c,"viewportChange",c,c.display.viewFrom,c.display.viewTo),c.display.reportedViewFrom=c.display.viewFrom,c.display.reportedViewTo=c.display.viewTo)}function gg(c,d){var b=new Pc(c,d);if(dg(c,b)){Ic(c),hg(c,b);var w=Bc(c);_c(c),sl(c,w),Nm(c,w),b.finish()}}function VS(c,d,b){var w=c.display,A=c.options.lineNumbers,k=w.lineDiv,z=k.firstChild;function Y(Ke){var nt=Ke.nextSibling;return a&&E&&c.display.currentWheelTarget==Ke?Ke.style.display="none":Ke.parentNode.removeChild(Ke),nt}for(var K=w.view,Q=w.viewFrom,me=0;me-1&&(Be=!1),fm(c,Ne,Q,b)),Be&&(L(Ne.lineNumber),Ne.lineNumber.appendChild(document.createTextNode(ot(c.options,Q)))),z=Ne.node.nextSibling}Q+=Ne.size}for(;z;)z=Y(z)}function Sm(c){var d=c.gutters.offsetWidth;c.sizer.style.marginLeft=d+"px",qn(c,"gutterChanged",c)}function Nm(c,d){c.display.sizer.style.minHeight=d.docHeight+"px",c.display.heightForcer.style.top=d.docHeight+"px",c.display.gutters.style.height=d.docHeight+c.display.barHeight+la(c)+"px"}function iy(c){var d=c.display,b=d.view;if(!(!d.alignWidgets&&(!d.gutters.firstChild||!c.options.fixedGutter))){for(var w=tl(d)-d.scroller.scrollLeft+c.doc.scrollLeft,A=d.gutters.offsetWidth,k=w+"px",z=0;z=105&&(A.wrapper.style.clipPath="inset(0px)"),A.wrapper.setAttribute("translate","no"),l&&s<8&&(A.gutters.style.zIndex=-1,A.scroller.style.paddingRight=0),!a&&!(r&&C)&&(A.scroller.draggable=!0),c&&(c.appendChild?c.appendChild(A.wrapper):c(A.wrapper)),A.viewFrom=A.viewTo=d.first,A.reportedViewFrom=A.reportedViewTo=d.first,A.view=[],A.renderedView=null,A.externalMeasured=null,A.viewOffset=0,A.lastWrapHeight=A.lastWrapWidth=0,A.updateLineNumbers=null,A.nativeBarWidth=A.barHeight=A.barWidth=0,A.scrollbarsClipped=!1,A.lineNumWidth=A.lineNumInnerWidth=A.lineNumChars=null,A.alignWidgets=!1,A.cachedCharWidth=A.cachedTextHeight=A.cachedPaddingH=null,A.maxLine=null,A.maxLineLength=0,A.maxLineChanged=!1,A.wheelDX=A.wheelDY=A.wheelStartX=A.wheelStartY=null,A.shift=!1,A.selForContextMenu=null,A.activeTouch=null,A.gutterSpecs=xg(w.gutters,w.lineNumbers),yg(A),b.init(A)}var Em=0,Ss=null;l?Ss=-.53:r?Ss=15:f?Ss=-.7:g&&(Ss=-1/3);function wg(c){var d=c.wheelDeltaX,b=c.wheelDeltaY;return d==null&&c.detail&&c.axis==c.HORIZONTAL_AXIS&&(d=c.detail),b==null&&c.detail&&c.axis==c.VERTICAL_AXIS?b=c.detail:b==null&&(b=c.wheelDelta),{x:d,y:b}}function YS(c){var d=wg(c);return d.x*=Ss,d.y*=Ss,d}function oy(c,d){f&&p==102&&(c.display.chromeScrollHack==null?c.display.sizer.style.pointerEvents="none":clearTimeout(c.display.chromeScrollHack),c.display.chromeScrollHack=setTimeout(function(){c.display.chromeScrollHack=null,c.display.sizer.style.pointerEvents=""},100));var b=wg(d),w=b.x,A=b.y,k=Ss;d.deltaMode===0&&(w=d.deltaX,A=d.deltaY,k=1);var z=c.display,Y=z.scroller,K=Y.scrollWidth>Y.clientWidth,Q=Y.scrollHeight>Y.clientHeight;if(w&&K||A&&Q){if(A&&E&&a){e:for(var me=d.target,Ne=z.view;me!=Y;me=me.parentNode)for(var qe=0;qe=0&&Ee(c,w.to())<=0)return b}return-1};var Ar=function(c,d){this.anchor=c,this.head=d};Ar.prototype.from=function(){return au(this.anchor,this.head)},Ar.prototype.to=function(){return fi(this.anchor,this.head)},Ar.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch};function Ao(c,d,b){var w=c&&c.options.selectionsMayTouch,A=d[b];d.sort(function(qe,Be){return Ee(qe.from(),Be.from())}),b=oe(d,A);for(var k=1;k0:K>=0){var Q=au(Y.from(),z.from()),me=fi(Y.to(),z.to()),Ne=Y.empty()?z.from()==z.head:Y.from()==Y.head;k<=b&&--b,d.splice(--k,2,new Ar(Ne?me:Q,Ne?Q:me))}}return new ri(d,b)}function pu(c,d){return new ri([new Ar(c,d||c)],0)}function Ns(c){return c.text?Ye(c.from.line+c.text.length-1,Me(c.text).length+(c.text.length==1?c.from.ch:0)):c.to}function ay(c,d){if(Ee(c,d.from)<0)return c;if(Ee(c,d.to)<=0)return Ns(d);var b=c.line+d.text.length-(d.to.line-d.from.line)-1,w=c.ch;return c.line==d.to.line&&(w+=Ns(d).ch-d.to.ch),Ye(b,w)}function bg(c,d){for(var b=[],w=0;w1&&c.remove(Y.line+1,Ke-1),c.insert(Y.line+1,pt)}qn(c,"change",c,d)}function Uo(c,d,b){function w(A,k,z){if(A.linked)for(var Y=0;Y1&&!c.done[c.done.length-2].ranges)return c.done.pop(),Me(c.done)}function ly(c,d,b,w){var A=c.history;A.undone.length=0;var k=+new Date,z,Y;if((A.lastOp==w||A.lastOrigin==d.origin&&d.origin&&(d.origin.charAt(0)=="+"&&A.lastModTime>k-(c.cm?c.cm.options.historyEventDelay:500)||d.origin.charAt(0)=="*"))&&(z=uy(A,A.lastOp==w)))Y=Me(z.changes),Ee(d.from,d.to)==0&&Ee(d.from,Y.to)==0?Y.to=Ns(d):z.changes.push(Sg(c,d));else{var K=Me(A.done);for((!K||!K.ranges)&&Mm(c.sel,A.done),z={changes:[Sg(c,d)],generation:A.generation},A.done.push(z);A.done.length>A.undoDepth;)A.done.shift(),A.done[0].ranges||A.done.shift()}A.done.push(b),A.generation=++A.maxGeneration,A.lastModTime=A.lastSelTime=k,A.lastOp=A.lastSelOp=w,A.lastOrigin=A.lastSelOrigin=d.origin,Y||He(c,"historyAdded")}function XS(c,d,b,w){var A=d.charAt(0);return A=="*"||A=="+"&&b.ranges.length==w.ranges.length&&b.somethingSelected()==w.somethingSelected()&&new Date-c.history.lastSelTime<=(c.cm?c.cm.options.historyEventDelay:500)}function cl(c,d,b,w){var A=c.history,k=w&&w.origin;b==A.lastSelOp||k&&A.lastSelOrigin==k&&(A.lastModTime==A.lastSelTime&&A.lastOrigin==k||XS(c,k,Me(A.done),d))?A.done[A.done.length-1]=d:Mm(d,A.done),A.lastSelTime=+new Date,A.lastSelOrigin=k,A.lastSelOp=b,w&&w.clearRedo!==!1&&Ng(A.undone)}function Mm(c,d){var b=Me(d);b&&b.ranges&&b.equals(c)||d.push(c)}function fy(c,d,b,w){var A=d["spans_"+c.id],k=0;c.iter(Math.max(c.first,b),Math.min(c.first+c.size,w),function(z){z.markedSpans&&((A||(A=d["spans_"+c.id]={}))[k]=z.markedSpans),++k})}function KS(c){if(!c)return null;for(var d,b=0;b-1&&(Me(Y)[Ne]=Q[Ne],delete Q[Ne])}}return w}function Tm(c,d,b,w){if(w){var A=c.anchor;if(b){var k=Ee(d,A)<0;k!=Ee(b,A)<0?(A=d,d=b):k!=Ee(d,b)<0&&(d=b)}return new Ar(A,d)}else return new Ar(b||d,d)}function zc(c,d,b,w,A){A==null&&(A=c.cm&&(c.cm.display.shift||c.extend)),pi(c,new ri([Tm(c.sel.primary(),d,b,A)],0),w)}function Eg(c,d,b){for(var w=[],A=c.cm&&(c.cm.display.shift||c.extend),k=0;k=d.ch:Y.to>d.ch))){if(A&&(He(K,"beforeCursorEnter"),K.explicitlyCleared))if(k.markedSpans){--z;continue}else break;if(!K.atomic)continue;if(b){var Ne=K.find(w<0?1:-1),qe=void 0;if((w<0?me:Q)&&(Ne=Mg(c,Ne,-w,Ne&&Ne.line==d.line?k:null)),Ne&&Ne.line==d.line&&(qe=Ee(Ne,b))&&(w<0?qe<0:qe>0))return Es(c,Ne,d,w,A)}var Be=K.find(w<0?-1:1);return(w<0?Q:me)&&(Be=Mg(c,Be,w,Be.line==d.line?k:null)),Be?Es(c,Be,d,w,A):null}}return d}function Hc(c,d,b,w,A){var k=w||1,z=Es(c,d,b,k,A)||!A&&Es(c,d,b,k,!0)||Es(c,d,b,-k,A)||!A&&Es(c,d,b,-k,!0);return z||(c.cantEdit=!0,Ye(c.first,0))}function Mg(c,d,b,w){return b<0&&d.ch==0?d.line>c.first?St(c,Ye(d.line-1)):null:b>0&&d.ch==(w||kt(c,d.line)).text.length?d.line=0;--A)mu(c,{from:w[A].from,to:w[A].to,text:A?[""]:d.text,origin:d.origin});else mu(c,d)}}function mu(c,d){if(!(d.text.length==1&&d.text[0]==""&&Ee(d.from,d.to)==0)){var b=bg(c,d);ly(c,d,b,c.cm?c.cm.curOp.id:NaN),mf(c,d,b,Pt(c,d));var w=[];Uo(c,function(A,k){!k&&oe(w,A.history)==-1&&(Wc(A.history,d),w.push(A.history)),mf(A,d,null,Pt(A,d))})}}function Fm(c,d,b){var w=c.cm&&c.cm.state.suppressEdits;if(!(w&&!b)){for(var A=c.history,k,z=c.sel,Y=d=="undo"?A.done:A.undone,K=d=="undo"?A.undone:A.done,Q=0;Q=0;--Be){var Ke=qe(Be);if(Ke)return Ke.v}}}}function hy(c,d){if(d!=0&&(c.first+=d,c.sel=new ri(Je(c.sel.ranges,function(A){return new Ar(Ye(A.anchor.line+d,A.anchor.ch),Ye(A.head.line+d,A.head.ch))}),c.sel.primIndex),c.cm)){Ci(c.cm,c.first,c.first-d,d);for(var b=c.cm.display,w=b.viewFrom;wc.lastLine())){if(d.from.linek&&(d={from:d.from,to:Ye(k,kt(c,k).text.length),text:[d.text[0]],origin:d.origin}),d.removed=aa(c,d.from,d.to),b||(b=bg(c,d)),c.cm?QS(c.cm,d,w):Am(c,d,w),_m(c,b,he),c.cantEdit&&Hc(c,Ye(c.firstLine(),0))&&(c.cantEdit=!1)}}function QS(c,d,b){var w=c.doc,A=c.display,k=d.from,z=d.to,Y=!1,K=k.line;c.options.lineWrapping||(K=j(ua(kt(w,k.line))),w.iter(K,z.line+1,function(Be){if(Be==A.maxLine)return Y=!0,!0})),w.sel.contains(d.from,d.to)>-1&&Tt(c),Am(w,d,b,lg(c)),c.options.lineWrapping||(w.iter(K,k.line+d.text.length,function(Be){var Ke=sm(Be);Ke>A.maxLineLength&&(A.maxLine=Be,A.maxLineLength=Ke,A.maxLineChanged=!0,Y=!1)}),Y&&(c.curOp.updateMaxLine=!0)),im(w,k.line),ll(c,400);var Q=d.text.length-(z.line-k.line)-1;d.full?Ci(c):k.line==z.line&&d.text.length==1&&!fl(c.doc,d)?Ra(c,k.line,"text"):Ci(c,k.line,z.line+1,Q);var me=nr(c,"changes"),Ne=nr(c,"change");if(Ne||me){var qe={from:k,to:z,text:d.text,removed:d.removed,origin:d.origin};Ne&&qn(c,"change",c,qe),me&&(c.curOp.changeObjs||(c.curOp.changeObjs=[])).push(qe)}c.display.selForContextMenu=null}function dl(c,d,b,w,A){var k;w||(w=b),Ee(w,b)<0&&(k=[w,b],b=k[0],w=k[1]),typeof d=="string"&&(d=c.splitLines(d)),pf(c,{from:b,to:w,text:d,origin:A})}function Tg(c,d,b,w){b1||!(this.children[0]instanceof hl))){var Y=[];this.collapse(Y),this.children=[new hl(Y)],this.children[0].parent=this}},collapse:function(c){for(var d=0;d50){for(var z=A.lines.length%25+25,Y=z;Y10);c.parent.maybeSpill()}},iterN:function(c,d,b){for(var w=0;wc.display.maxLineLength&&(c.display.maxLine=Q,c.display.maxLineLength=me,c.display.maxLineChanged=!0)}w!=null&&c&&this.collapsed&&Ci(c,w,A+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,c&&dy(c.doc)),c&&qn(c,"markerCleared",c,this,w,A),d&&ca(c),this.parent&&this.parent.clear()}},Ho.prototype.find=function(c,d){c==null&&this.type=="bookmark"&&(c=1);for(var b,w,A=0;A0||z==0&&k.clearWhenEmpty!==!1)return k;if(k.replacedWith&&(k.collapsed=!0,k.widgetNode=V("span",[k.replacedWith],"CodeMirror-widget"),w.handleMouseEvents||k.widgetNode.setAttribute("cm-ignore-events","true"),w.insertLeft&&(k.widgetNode.insertLeft=!0)),k.collapsed){if(Tx(c,d.line,d,b,k)||d.line!=b.line&&Tx(c,b.line,d,b,k))throw new Error("Inserting collapsed marker partially overlapping an existing one");Zu()}k.addToHistory&&ly(c,{from:d,to:b,origin:"markText"},c.sel,NaN);var Y=d.line,K=c.cm,Q;if(c.iter(Y,b.line+1,function(Ne){K&&k.collapsed&&!K.options.lineWrapping&&ua(Ne)==K.display.maxLine&&(Q=!0),k.collapsed&&Y!=d.line&&Rn(Ne,0),Xr(Ne,new yc(k,Y==d.line?d.ch:null,Y==b.line?b.ch:null),c.cm&&c.cm.curOp),++Y}),k.collapsed&&c.iter(d.line,b.line+1,function(Ne){Ui(c,Ne)&&Rn(Ne,0)}),k.clearOnEnter&&W(k,"beforeCursorEnter",function(){return k.clear()}),k.readOnly&&(_S(),(c.history.done.length||c.history.undone.length)&&c.clearHistory()),k.collapsed&&(k.id=++Gc,k.atomic=!0),K){if(Q&&(K.curOp.updateMaxLine=!0),k.collapsed)Ci(K,d.line,b.line+1);else if(k.className||k.startStyle||k.endStyle||k.css||k.attributes||k.title)for(var me=d.line;me<=b.line;me++)Ra(K,me,"text");k.atomic&&dy(K.doc),qn(K,"markerAdded",K,k)}return k}var gf=function(c,d){this.markers=c,this.primary=d;for(var b=0;b=0;K--)pf(this,w[K]);Y?Ag(this,Y):this.cm&&uf(this.cm)}),undo:Jn(function(){Fm(this,"undo")}),redo:Jn(function(){Fm(this,"redo")}),undoSelection:Jn(function(){Fm(this,"undo",!0)}),redoSelection:Jn(function(){Fm(this,"redo",!0)}),setExtending:function(c){this.extend=c},getExtending:function(){return this.extend},historySize:function(){for(var c=this.history,d=0,b=0,w=0;w=c.ch)&&d.push(A.marker.parent||A.marker)}return d},findMarks:function(c,d,b){c=St(this,c),d=St(this,d);var w=[],A=c.line;return this.iter(c.line,d.line+1,function(k){var z=k.markedSpans;if(z)for(var Y=0;Y=K.to||K.from==null&&A!=c.line||K.from!=null&&A==d.line&&K.from>=d.ch)&&(!b||b(K.marker))&&w.push(K.marker.parent||K.marker)}++A}),w},getAllMarks:function(){var c=[];return this.iter(function(d){var b=d.markedSpans;if(b)for(var w=0;wc)return d=c,!0;c-=k,++b}),St(this,Ye(b,d))},indexFromPos:function(c){c=St(this,c);var d=c.ch;if(c.lined&&(d=c.from),c.to!=null&&c.to-1){d.state.draggingText(c),setTimeout(function(){return d.display.input.focus()},20);return}try{var me=c.dataTransfer.getData("Text");if(me){var Ne;if(d.state.draggingText&&!d.state.draggingText.copy&&(Ne=d.listSelections()),_m(d.doc,pu(b,b)),Ne)for(var qe=0;qe=0;Y--)dl(c.doc,"",w[Y].from,w[Y].to,"+delete");uf(c)})}function km(c,d,b){var w=xe(c.text,d+b,b);return w<0||w>c.text.length?null:w}function Ig(c,d,b){var w=km(c,d.ch,b);return w==null?null:new Ye(d.line,w,b<0?"after":"before")}function Lm(c,d,b,w,A){if(c){d.doc.direction=="rtl"&&(A=-A);var k=ze(b,d.doc.direction);if(k){var z=A<0?Me(k):k[0],Y=A<0==(z.level==1),K=Y?"after":"before",Q;if(z.level>0||d.doc.direction=="rtl"){var me=ju(d,b);Q=A<0?b.text.length-1:0;var Ne=Eo(d,me,Q).top;Q=te(function(qe){return Eo(d,me,qe).top==Ne},A<0==(z.level==1)?z.from:z.to-1,Q),K=="before"&&(Q=km(b,Q,1))}else Q=A<0?z.to:z.from;return new Ye(w,Q,K)}}return new Ye(w,A<0?b.text.length:0,A<0?"before":"after")}function Ey(c,d,b,w){var A=ze(d,c.doc.direction);if(!A)return Ig(d,b,w);b.ch>=d.text.length?(b.ch=d.text.length,b.sticky="before"):b.ch<=0&&(b.ch=0,b.sticky="after");var k=Re(A,b.ch,b.sticky),z=A[k];if(c.doc.direction=="ltr"&&z.level%2==0&&(w>0?z.to>b.ch:z.from=z.from&&qe>=me.begin)){var Be=Ne?"before":"after";return new Ye(b.line,qe,Be)}}var Ke=function(pt,gt,dt){for(var Ct=function(Wr,Qn){return Qn?new Ye(b.line,Y(Wr,1),"before"):new Ye(b.line,Wr,"after")};pt>=0&&pt0==(Vt.level!=1),lr=Lt?dt.begin:Y(dt.end,-1);if(Vt.from<=lr&&lr0?me.end:Y(me.begin,-1);return ft!=null&&!(w>0&&ft==d.text.length)&&(nt=Ke(w>0?0:A.length-1,w,Q(ft)),nt)?nt:null}var Jc={selectAll:$c,singleSelection:function(c){return c.setSelection(c.getCursor("anchor"),c.getCursor("head"),he)},killLine:function(c){return wf(c,function(d){if(d.empty()){var b=kt(c.doc,d.head.line).text.length;return d.head.ch==b&&d.head.line0)A=new Ye(A.line,A.ch+1),c.replaceRange(k.charAt(A.ch-1)+k.charAt(A.ch-2),Ye(A.line,A.ch-2),A,"+transpose");else if(A.line>c.doc.first){var z=kt(c.doc,A.line-1).text;z&&(A=new Ye(A.line,1),c.replaceRange(k.charAt(0)+c.doc.lineSeparator()+z.charAt(z.length-1),Ye(A.line-1,z.length-1),A,"+transpose"))}}b.push(new Ar(A,A))}c.setSelections(b)})},newlineAndIndent:function(c){return ro(c,function(){for(var d=c.listSelections(),b=d.length-1;b>=0;b--)c.replaceRange(c.doc.lineSeparator(),d[b].anchor,d[b].head,"+input");d=c.listSelections();for(var w=0;wc&&Ee(d,this.pos)==0&&b==this.button};var bf,hu;function cN(c,d){var b=+new Date;return hu&&hu.compare(b,c,d)?(bf=hu=null,"triple"):bf&&bf.compare(b,c,d)?(hu=new Pm(b,c,d),bf=null,"double"):(bf=new Pm(b,c,d),hu=null,"single")}function Fy(c){var d=this,b=d.display;if(!(lt(d,c)||b.activeTouch&&b.input.supportsTouch())){if(b.input.ensurePolled(),b.shift=c.shiftKey,Pa(b,c)){a||(b.scroller.draggable=!1,setTimeout(function(){return b.scroller.draggable=!0},100));return}if(!Rg(d,c)){var w=nl(d,c),A=Mn(c),k=w?cN(w,A):"single";ve(d).focus(),A==1&&d.state.selectingText&&d.state.selectingText(c),!(w&&pN(d,A,w,k,c))&&(A==1?w?Iy(d,w,k,c):wr(c)==b.scroller&&$t(c):A==2?(w&&zc(d.doc,w),setTimeout(function(){return b.input.focus()},20)):A==3&&(F?d.display.input.onContextMenu(c):xm(d)))}}}function pN(c,d,b,w,A){var k="Click";return w=="double"?k="Double"+k:w=="triple"&&(k="Triple"+k),k=(d==1?"Left":d==2?"Middle":"Right")+k,du(c,Sy(k,A),A,function(z){if(typeof z=="string"&&(z=Jc[z]),!z)return!1;var Y=!1;try{c.isReadOnly()&&(c.state.suppressEdits=!0),Y=z(c,b)!=Ce}finally{c.state.suppressEdits=!1}return Y})}function mN(c,d,b){var w=c.getOption("configureMouse"),A=w?w(c,d,b):{};if(A.unit==null){var k=M?b.shiftKey&&b.metaKey:b.altKey;A.unit=k?"rectangle":d=="single"?"char":d=="double"?"word":"line"}return(A.extend==null||c.doc.extend)&&(A.extend=c.doc.extend||b.shiftKey),A.addNew==null&&(A.addNew=E?b.metaKey:b.ctrlKey),A.moveOnDrag==null&&(A.moveOnDrag=!(E?b.altKey:b.ctrlKey)),A}function Iy(c,d,b,w){l?setTimeout(Te(Fc,c),0):c.curOp.focus=H(de(c));var A=mN(c,b,w),k=c.doc.sel,z;c.options.dragDrop&&ka&&!c.isReadOnly()&&b=="single"&&(z=k.contains(d))>-1&&(Ee((z=k.ranges[z]).from(),d)<0||d.xRel>0)&&(Ee(z.to(),d)>0||d.xRel<0)?dN(c,w,d,A):Ly(c,w,d,A)}function dN(c,d,b,w){var A=c.display,k=!1,z=pn(c,function(Q){a&&(A.scroller.draggable=!1),c.state.draggingText=!1,c.state.delayingBlurEvent&&(c.hasFocus()?c.state.delayingBlurEvent=!1:xm(c)),Le(A.wrapper.ownerDocument,"mouseup",z),Le(A.wrapper.ownerDocument,"mousemove",Y),Le(A.scroller,"dragstart",K),Le(A.scroller,"drop",z),k||($t(Q),w.addNew||zc(c.doc,b,null,null,w.extend),a&&!g||l&&s==9?setTimeout(function(){A.wrapper.ownerDocument.body.focus({preventScroll:!0}),A.input.focus()},20):A.input.focus())}),Y=function(Q){k=k||Math.abs(d.clientX-Q.clientX)+Math.abs(d.clientY-Q.clientY)>=10},K=function(){return k=!0};a&&(A.scroller.draggable=!0),c.state.draggingText=z,z.copy=!w.moveOnDrag,W(A.wrapper.ownerDocument,"mouseup",z),W(A.wrapper.ownerDocument,"mousemove",Y),W(A.scroller,"dragstart",K),W(A.scroller,"drop",z),c.state.delayingBlurEvent=!0,setTimeout(function(){return A.input.focus()},20),A.scroller.dragDrop&&A.scroller.dragDrop()}function ky(c,d,b){if(b=="char")return new Ar(d,d);if(b=="word")return c.findWordAt(d);if(b=="line")return new Ar(Ye(d.line,0),St(c.doc,Ye(d.line+1,0)));var w=b(c,d);return new Ar(w.from,w.to)}function Ly(c,d,b,w){l&&xm(c);var A=c.display,k=c.doc;$t(d);var z,Y,K=k.sel,Q=K.ranges;if(w.addNew&&!w.extend?(Y=k.sel.contains(b),Y>-1?z=Q[Y]:z=new Ar(b,b)):(z=k.sel.primary(),Y=k.sel.primIndex),w.unit=="rectangle")w.addNew||(z=new Ar(b,b)),b=nl(c,d,!0,!0),Y=-1;else{var me=ky(c,b,w.unit);w.extend?z=Tm(z,me.anchor,me.head,w.extend):z=me}w.addNew?Y==-1?(Y=Q.length,pi(k,Ao(c,Q.concat([z]),Y),{scroll:!1,origin:"*mouse"})):Q.length>1&&Q[Y].empty()&&w.unit=="char"&&!w.extend?(pi(k,Ao(c,Q.slice(0,Y).concat(Q.slice(Y+1)),0),{scroll:!1,origin:"*mouse"}),K=k.sel):ml(k,Y,z,Pe):(Y=0,pi(k,new ri([z],0),Pe),K=k.sel);var Ne=b;function qe(dt){if(Ee(Ne,dt)!=0)if(Ne=dt,w.unit=="rectangle"){for(var Ct=[],Vt=c.options.tabSize,Lt=se(kt(k,b.line).text,b.ch,Vt),lr=se(kt(k,dt.line).text,dt.ch,Vt),Wr=Math.min(Lt,lr),Qn=Math.max(Lt,lr),ln=Math.min(b.line,dt.line),no=Math.min(c.lastLine(),Math.max(b.line,dt.line));ln<=no;ln++){var Wi=kt(k,ln).text,On=ie(Wi,Wr,Vt);Wr==Qn?Ct.push(new Ar(Ye(ln,On),Ye(ln,On))):Wi.length>On&&Ct.push(new Ar(Ye(ln,On),Ye(ln,ie(Wi,Qn,Vt))))}Ct.length||Ct.push(new Ar(b,b)),pi(k,Ao(c,K.ranges.slice(0,Y).concat(Ct),Y),{origin:"*mouse",scroll:!1}),c.scrollIntoView(dt)}else{var ni=z,ii=ky(c,dt,w.unit),Un=ni.anchor,Fn;Ee(ii.anchor,Un)>0?(Fn=ii.head,Un=au(ni.from(),ii.anchor)):(Fn=ii.anchor,Un=fi(ni.to(),ii.head));var dn=K.ranges.slice(0);dn[Y]=mi(c,new Ar(St(k,Un),Fn)),pi(k,Ao(c,dn,Y),Pe)}}var Be=A.wrapper.getBoundingClientRect(),Ke=0;function nt(dt){var Ct=++Ke,Vt=nl(c,dt,!0,w.unit=="rectangle");if(Vt)if(Ee(Vt,Ne)!=0){c.curOp.focus=H(de(c)),qe(Vt);var Lt=wm(A,k);(Vt.line>=Lt.to||Vt.lineBe.bottom?20:0;lr&&setTimeout(pn(c,function(){Ke==Ct&&(A.scroller.scrollTop+=lr,nt(dt))}),50)}}function ft(dt){c.state.selectingText=!1,Ke=1/0,dt&&($t(dt),A.input.focus()),Le(A.wrapper.ownerDocument,"mousemove",pt),Le(A.wrapper.ownerDocument,"mouseup",gt),k.history.lastSelOrigin=null}var pt=pn(c,function(dt){dt.buttons===0||!Mn(dt)?ft(dt):nt(dt)}),gt=pn(c,ft);c.state.selectingText=gt,W(A.wrapper.ownerDocument,"mousemove",pt),W(A.wrapper.ownerDocument,"mouseup",gt)}function mi(c,d){var b=d.anchor,w=d.head,A=kt(c.doc,b.line);if(Ee(b,w)==0&&b.sticky==w.sticky)return d;var k=ze(A);if(!k)return d;var z=Re(k,b.ch,b.sticky),Y=k[z];if(Y.from!=b.ch&&Y.to!=b.ch)return d;var K=z+(Y.from==b.ch==(Y.level!=1)?0:1);if(K==0||K==k.length)return d;var Q;if(w.line!=b.line)Q=(w.line-b.line)*(c.doc.direction=="ltr"?1:-1)>0;else{var me=Re(k,w.ch,w.sticky),Ne=me-z||(w.ch-b.ch)*(Y.level==1?-1:1);me==K-1||me==K?Q=Ne<0:Q=Ne>0}var qe=k[K+(Q?-1:0)],Be=Q==(qe.level==1),Ke=Be?qe.from:qe.to,nt=Be?"after":"before";return b.ch==Ke&&b.sticky==nt?d:new Ar(new Ye(b.line,Ke,nt),w)}function Pg(c,d,b,w){var A,k;if(d.touches)A=d.touches[0].clientX,k=d.touches[0].clientY;else try{A=d.clientX,k=d.clientY}catch{return!1}if(A>=Math.floor(c.display.gutters.getBoundingClientRect().right))return!1;w&&$t(d);var z=c.display,Y=z.lineDiv.getBoundingClientRect();if(k>Y.bottom||!nr(c,b))return Kt(d);k-=Y.top-z.viewOffset;for(var K=0;K=A){var me=ye(c.doc,k),Ne=c.display.gutterSpecs[K];return He(c,b,c,me,Ne.className,d),Kt(d)}}}function Rg(c,d){return Pg(c,d,"gutterClick",!0)}function By(c,d){Pa(c.display,d)||hN(c,d)||lt(c,d,"contextmenu")||F||c.display.input.onContextMenu(d)}function hN(c,d){return nr(c,"gutterContextMenu")?Pg(c,d,"gutterContextMenu",!1):!1}function qg(c){c.display.wrapper.className=c.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+c.options.theme.replace(/(^|\s)\s*/g," cm-s-"),Ec(c)}var Df={toString:function(){return"CodeMirror.Init"}},Py={},Rm={};function Ry(c){var d=c.optionHandlers;function b(w,A,k,z){c.defaults[w]=A,k&&(d[w]=z?function(Y,K,Q){Q!=Df&&k(Y,K,Q)}:k)}c.defineOption=b,c.Init=Df,b("value","",function(w,A){return w.setValue(A)},!0),b("mode",null,function(w,A){w.doc.modeOption=A,Dg(w)},!0),b("indentUnit",2,Dg,!0),b("indentWithTabs",!1),b("smartIndent",!0),b("tabSize",4,function(w){pa(w),Ec(w),Ci(w)},!0),b("lineSeparator",null,function(w,A){if(w.doc.lineSep=A,!!A){var k=[],z=w.doc.first;w.doc.iter(function(K){for(var Q=0;;){var me=K.text.indexOf(A,Q);if(me==-1)break;Q=me+A.length,k.push(Ye(z,me))}z++});for(var Y=k.length-1;Y>=0;Y--)dl(w.doc,A,k[Y],Ye(k[Y].line,k[Y].ch+A.length))}}),b("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\u202d\u202e\u2066\u2067\u2069\ufeff\ufff9-\ufffc]/g,function(w,A,k){w.state.specialChars=new RegExp(A.source+(A.test(" ")?"":"| "),"g"),k!=Df&&w.refresh()}),b("specialCharPlaceholder",IS,function(w){return w.refresh()},!0),b("electricChars",!0),b("inputStyle",C?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),b("spellcheck",!1,function(w,A){return w.getInputField().spellcheck=A},!0),b("autocorrect",!1,function(w,A){return w.getInputField().autocorrect=A},!0),b("autocapitalize",!1,function(w,A){return w.getInputField().autocapitalize=A},!0),b("rtlMoveVisually",!T),b("wholeLineUpdateBefore",!0),b("theme","default",function(w){qg(w),Rc(w)},!0),b("keyMap","default",function(w,A,k){var z=Im(A),Y=k!=Df&&Im(k);Y&&Y.detach&&Y.detach(w,z),z.attach&&z.attach(w,Y||null)}),b("extraKeys",null),b("configureMouse",null),b("lineWrapping",!1,gN,!0),b("gutters",[],function(w,A){w.display.gutterSpecs=xg(A,w.options.lineNumbers),Rc(w)},!0),b("fixedGutter",!0,function(w,A){w.display.gutters.style.left=A?tl(w.display)+"px":"0",w.refresh()},!0),b("coverGutterNextToScrollbar",!1,function(w){return sl(w)},!0),b("scrollbarStyle","native",function(w){ey(w),sl(w),w.display.scrollbars.setScrollTop(w.doc.scrollTop),w.display.scrollbars.setScrollLeft(w.doc.scrollLeft)},!0),b("lineNumbers",!1,function(w,A){w.display.gutterSpecs=xg(w.options.gutters,A),Rc(w)},!0),b("firstLineNumber",1,Rc,!0),b("lineNumberFormatter",function(w){return w},Rc,!0),b("showCursorWhenSelecting",!1,_c,!0),b("resetSelectionOnContextMenu",!0),b("lineWiseCopyCut",!0),b("pasteLinesPerSelection",!0),b("selectionsMayTouch",!1),b("readOnly",!1,function(w,A){A=="nocursor"&&(sf(w),w.display.input.blur()),w.display.input.readOnlyChanged(A)}),b("screenReaderLabel",null,function(w,A){A=A===""?null:A,w.display.input.screenReaderLabelChanged(A)}),b("disableInput",!1,function(w,A){A||w.display.input.reset()},!0),b("dragDrop",!0,qy),b("allowDropFileTypes",null),b("cursorBlinkRate",530),b("cursorScrollMargin",0),b("cursorHeight",1,_c,!0),b("singleCursorHeightPerLine",!0,_c,!0),b("workTime",100),b("workDelay",100),b("flattenSpans",!0,pa,!0),b("addModeClass",!1,pa,!0),b("pollInterval",100),b("undoDepth",200,function(w,A){return w.doc.history.undoDepth=A}),b("historyEventDelay",1250),b("viewportMargin",10,function(w){return w.refresh()},!0),b("maxHighlightLength",1e4,pa,!0),b("moveInputWithCursor",!0,function(w,A){A||w.display.input.resetPosition()}),b("tabindex",null,function(w,A){return w.display.input.getField().tabIndex=A||""}),b("autofocus",null),b("direction","ltr",function(w,A){return w.doc.setDirection(A)},!0),b("phrases",null)}function qy(c,d,b){var w=b&&b!=Df;if(!d!=!w){var A=c.display.dragFunctions,k=d?W:Le;k(c.display.scroller,"dragstart",A.start),k(c.display.scroller,"dragenter",A.enter),k(c.display.scroller,"dragover",A.over),k(c.display.scroller,"dragleave",A.leave),k(c.display.scroller,"drop",A.drop)}}function gN(c){c.options.lineWrapping?(ee(c.display.wrapper,"CodeMirror-wrap"),c.display.sizer.style.minWidth="",c.display.sizerWidth=null):(B(c.display.wrapper,"CodeMirror-wrap"),Xh(c)),rl(c),Ci(c),Ec(c),setTimeout(function(){return sl(c)},100)}function rn(c,d){var b=this;if(!(this instanceof rn))return new rn(c,d);this.options=d=d?De(d):{},De(Py,d,!1);var w=d.value;typeof w=="string"?w=new Mi(w,d.mode,null,d.lineSeparator,d.direction):d.mode&&(w.modeOption=d.mode),this.doc=w;var A=new rn.inputStyles[d.inputStyle](this),k=this.display=new GS(c,w,A,d);k.wrapper.CodeMirror=this,qg(this),d.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),ey(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new le,keySeq:null,specialChars:null},d.autofocus&&!C&&k.input.focus(),l&&s<11&&setTimeout(function(){return b.display.input.reset(!0)},20),zy(this),rN(),Ds(this),this.curOp.forceUpdate=!0,cf(this,w),d.autofocus&&!C||this.hasFocus()?setTimeout(function(){b.hasFocus()&&!b.state.focused&&ym(b)},20):sf(this);for(var z in Rm)Rm.hasOwnProperty(z)&&Rm[z](this,d[z],Df);vg(this),d.finishInit&&d.finishInit(this);for(var Y=0;Y20*20}W(d.scroller,"touchstart",function(K){if(!lt(c,K)&&!k(K)&&!Rg(c,K)){d.input.ensurePolled(),clearTimeout(b);var Q=+new Date;d.activeTouch={start:Q,moved:!1,prev:Q-w.end<=300?w:null},K.touches.length==1&&(d.activeTouch.left=K.touches[0].pageX,d.activeTouch.top=K.touches[0].pageY)}}),W(d.scroller,"touchmove",function(){d.activeTouch&&(d.activeTouch.moved=!0)}),W(d.scroller,"touchend",function(K){var Q=d.activeTouch;if(Q&&!Pa(d,K)&&Q.left!=null&&!Q.moved&&new Date-Q.start<300){var me=c.coordsChar(d.activeTouch,"page"),Ne;!Q.prev||z(Q,Q.prev)?Ne=new Ar(me,me):!Q.prev.prev||z(Q,Q.prev.prev)?Ne=c.findWordAt(me):Ne=new Ar(Ye(me.line,0),St(c.doc,Ye(me.line+1,0))),c.setSelection(Ne.anchor,Ne.head),c.focus(),$t(K)}A()}),W(d.scroller,"touchcancel",A),W(d.scroller,"scroll",function(){d.scroller.clientHeight&&(fa(c,d.scroller.scrollTop),ol(c,d.scroller.scrollLeft,!0),He(c,"scroll",c))}),W(d.scroller,"mousewheel",function(K){return oy(c,K)}),W(d.scroller,"DOMMouseScroll",function(K){return oy(c,K)}),W(d.wrapper,"scroll",function(){return d.wrapper.scrollTop=d.wrapper.scrollLeft=0}),d.dragFunctions={enter:function(K){lt(c,K)||Qi(K)},over:function(K){lt(c,K)||(vf(c,K),Qi(K))},start:function(K){return yy(c,K)},drop:pn(c,Yc),leave:function(K){lt(c,K)||wy(c)}};var Y=d.input.getField();W(Y,"keyup",function(K){return Oy.call(c,K)}),W(Y,"keydown",pn(c,Lg)),W(Y,"keypress",pn(c,Bg)),W(Y,"focus",function(K){return ym(c,K)}),W(Y,"blur",function(K){return sf(c,K)})}var zg=[];rn.defineInitHook=function(c){return zg.push(c)};function Qc(c,d,b,w){var A=c.doc,k;b==null&&(b="add"),b=="smart"&&(A.mode.indent?k=Zr(c,d).state:b="prev");var z=c.options.tabSize,Y=kt(A,d),K=se(Y.text,null,z);Y.stateAfter&&(Y.stateAfter=null);var Q=Y.text.match(/^\s*/)[0],me;if(!w&&!/\S/.test(Y.text))me=0,b="not";else if(b=="smart"&&(me=A.mode.indent(k,Y.text.slice(Q.length),Y.text),me==Ce||me>150)){if(!w)return;b="prev"}b=="prev"?d>A.first?me=se(kt(A,d-1).text,null,z):me=0:b=="add"?me=K+c.options.indentUnit:b=="subtract"?me=K-c.options.indentUnit:typeof b=="number"&&(me=K+b),me=Math.max(0,me);var Ne="",qe=0;if(c.options.indentWithTabs)for(var Be=Math.floor(me/z);Be;--Be)qe+=z,Ne+=" ";if(qez,K=ti(d),Q=null;if(Y&&w.ranges.length>1)if(ma&&ma.text.join(` -`)==d){if(w.ranges.length%ma.text.length==0){Q=[];for(var me=0;me=0;qe--){var Be=w.ranges[qe],Ke=Be.from(),nt=Be.to();Be.empty()&&(b&&b>0?Ke=Ye(Ke.line,Ke.ch-b):c.state.overwrite&&!Y?nt=Ye(nt.line,Math.min(kt(k,nt.line).text.length,nt.ch+Me(K).length)):Y&&ma&&ma.lineWise&&ma.text.join(` +`,d);A==-1&&(A=c.length);var k=c.slice(d,c.charAt(A-1)=="\r"?A-1:A),z=k.indexOf("\r");z!=-1?(b.push(k.slice(0,z)),d+=z+1):(b.push(k),d=A+1)}return b}:function(c){return c.split(/\r\n?|\n/)},ia=window.getSelection?function(c){try{return c.selectionStart!=c.selectionEnd}catch{return!1}}:function(c){var d;try{d=c.ownerDocument.selection.createRange()}catch{}return!d||d.parentElement()!=c?!1:d.compareEndPoints("StartToEnd",d)!=0},tf=function(){var c=R("div");return"oncopy"in c?!0:(c.setAttribute("oncopy","return;"),typeof c.oncopy=="function")}(),No=null;function rf(c){if(No!=null)return No;var d=q(c,R("span","x")),b=d.getBoundingClientRect(),w=X(d,0,1).getBoundingClientRect();return No=Math.abs(b.left-w.left)>1}var iu={},io={};function oo(c,d){arguments.length>2&&(d.dependencies=Array.prototype.slice.call(arguments,2)),iu[c]=d}function oa(c,d){io[c]=d}function ou(c){if(typeof c=="string"&&io.hasOwnProperty(c))c=io[c];else if(c&&typeof c.name=="string"&&io.hasOwnProperty(c.name)){var d=io[c.name];typeof d=="string"&&(d={name:d}),c=ct(d,c),c.name=d.name}else{if(typeof c=="string"&&/^[\w\-]+\/[\w\-]+\+xml$/.test(c))return ou("application/xml");if(typeof c=="string"&&/^[\w\-]+\/[\w\-]+\+json$/.test(c))return ou("application/json")}return typeof c=="string"?{name:c}:c||{name:"null"}}function La(c,d){d=ou(d);var b=iu[d.name];if(!b)return La(c,"text/plain");var w=b(c,d);if(Gt.hasOwnProperty(d.name)){var A=Gt[d.name];for(var k in A)A.hasOwnProperty(k)&&(w.hasOwnProperty(k)&&(w["_"+k]=w[k]),w[k]=A[k])}if(w.name=d.name,d.helperType&&(w.helperType=d.helperType),d.modeProps)for(var z in d.modeProps)w[z]=d.modeProps[z];return w}var Gt={};function Ui(c,d){var b=Gt.hasOwnProperty(c)?Gt[c]:Gt[c]={};De(d,b)}function Cr(c,d){if(d===!0)return d;if(c.copyState)return c.copyState(d);var b={};for(var w in d){var A=d[w];A instanceof Array&&(A=A.concat([])),b[w]=A}return b}function It(c,d){for(var b;c.innerMode&&(b=c.innerMode(d),!(!b||b.mode==c));)d=b.state,c=b.mode;return b||{mode:c,state:d}}function Eo(c,d,b){return c.startState?c.startState(d,b):!0}var Xr=function(c,d,b){this.pos=this.start=0,this.string=c,this.tabSize=d||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=b};Xr.prototype.eol=function(){return this.pos>=this.string.length},Xr.prototype.sol=function(){return this.pos==this.lineStart},Xr.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},Xr.prototype.next=function(){if(this.posd},Xr.prototype.eatSpace=function(){for(var c=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>c},Xr.prototype.skipToEnd=function(){this.pos=this.string.length},Xr.prototype.skipTo=function(c){var d=this.string.indexOf(c,this.pos);if(d>-1)return this.pos=d,!0},Xr.prototype.backUp=function(c){this.pos-=c},Xr.prototype.column=function(){return this.lastColumnPos0?null:(k&&d!==!1&&(this.pos+=k[0].length),k)}},Xr.prototype.current=function(){return this.string.slice(this.start,this.pos)},Xr.prototype.hideFirstChars=function(c,d){this.lineStart+=c;try{return d()}finally{this.lineStart-=c}},Xr.prototype.lookAhead=function(c){var d=this.lineOracle;return d&&d.lookAhead(c)},Xr.prototype.baseToken=function(){var c=this.lineOracle;return c&&c.baseToken(this.pos)};function kt(c,d){if(d-=c.first,d<0||d>=c.size)throw new Error("There is no line "+(d+c.first)+" in the document.");for(var b=c;!b.lines;)for(var w=0;;++w){var A=b.children[w],k=A.chunkSize();if(d=c.first&&db?Ye(b,kt(c,b).text.length):Cc(d,kt(c,d.line).text.length)}function Cc(c,d){var b=c.ch;return b==null||b>d?Ye(c.line,d):b<0?Ye(c.line,0):c}function Jh(c,d){for(var b=[],w=0;wthis.maxLookAhead&&(this.maxLookAhead=c),d},sa.prototype.baseToken=function(c){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=c;)this.baseTokenPos+=2;var d=this.baseTokens[this.baseTokenPos+1];return{type:d&&d.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-c}},sa.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},sa.fromSaved=function(c,d,b){return d instanceof el?new sa(c,Cr(c.mode,d.state),b,d.lookAhead):new sa(c,Cr(c.mode,d),b)},sa.prototype.save=function(c){var d=c!==!1?Cr(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new el(d,this.maxLookAhead):d};function hs(c,d,b,w){var A=[c.state.modeGen],k={};_c(c,d.text,c.doc.mode,b,function(Q,de){return A.push(Q,de)},k,w);for(var z=b.state,Y=function(Q){b.baseTokens=A;var de=c.state.overlays[Q],Ne=1,qe=0;b.state=!0,_c(c,d.text,de.mode,b,function(Be,Ke){for(var nt=Ne;qeBe&&A.splice(Ne,1,Be,A[Ne+1],lt),Ne+=2,qe=Math.min(Be,lt)}if(Ke)if(de.opaque)A.splice(nt,Ne-nt,Be,"overlay "+Ke),Ne=nt+2;else for(;ntc.options.maxHighlightLength&&Cr(c.doc.mode,w.state),k=hs(c,d,w);A&&(w.state=A),d.stateAfter=w.save(!A),d.styles=k.styles,k.classes?d.styleClasses=k.classes:d.styleClasses&&(d.styleClasses=null),b===c.doc.highlightFrontier&&(c.doc.modeFrontier=Math.max(c.doc.modeFrontier,++c.doc.highlightFrontier))}return d.styles}function Kr(c,d,b){var w=c.doc,A=c.display;if(!w.mode.startState)return new sa(w,!0,d);var k=Ao(c,d,b),z=k>w.first&&kt(w,k-1).stateAfter,Y=z?sa.fromSaved(w,z,k):new sa(w,Eo(w.mode),k);return w.iter(k,d,function(K){vm(c,K.text,Y);var Q=Y.line;K.stateAfter=Q==d-1||Q%5==0||Q>=A.viewFrom&&Qd.start)return k}throw new Error("Mode "+c.name+" failed to advance stream.")}var Dn=function(c,d,b){this.start=c.start,this.end=c.pos,this.string=c.current(),this.type=d||null,this.state=b};function Mc(c,d,b,w){var A=c.doc,k=A.mode,z;d=St(A,d);var Y=kt(A,d.line),K=Kr(c,d.line,b),Q=new Xr(Y.text,c.options.tabSize,K),de;for(w&&(de=[]);(w||Q.posc.options.maxHighlightLength?(Y=!1,z&&vm(c,d,w,de.pos),de.pos=d.length,Ne=null):Ne=Tc(Qh(b,de,w.state,qe),k),qe){var Be=qe[0].name;Be&&(Ne="m-"+(Ne?Be+" "+Ne:Be))}if(!Y||Q!=Ne){for(;Kz;--Y){if(Y<=k.first)return k.first;var K=kt(k,Y-1),Q=K.stateAfter;if(Q&&(!b||Y+(Q instanceof el?Q.lookAhead:0)<=k.modeFrontier))return Y;var de=Me(K.text,null,c.options.tabSize);(A==null||w>de)&&(A=Y-1,w=de)}return A}function xm(c,d){if(c.modeFrontier=Math.min(c.modeFrontier,d),!(c.highlightFrontierb;w--){var A=kt(c,w).stateAfter;if(A&&(!(A instanceof el)||w+A.lookAhead=d:k.to>d);(w||(w=[])).push(new Oc(z,k.from,K?null:k.to))}}return w}function tl(c,d,b){var w;if(c)for(var A=0;A=d:k.to>d);if(Y||k.from==d&&z.type=="bookmark"&&(!b||k.marker.insertLeft)){var K=k.from==null||(z.inclusiveLeft?k.from<=d:k.from0&&Y)for(var Nt=0;Nt0)){var de=[K,1],Ne=Ee(Q.from,Y.from),qe=Ee(Q.to,Y.to);(Ne<0||!z.inclusiveLeft&&!Ne)&&de.push({from:Q.from,to:Y.from}),(qe>0||!z.inclusiveRight&&!qe)&&de.push({from:Y.to,to:Q.to}),A.splice.apply(A,de),K+=de.length-3}}return A}function nf(c){var d=c.markedSpans;if(d){for(var b=0;bd)&&(!w||su(w,k.marker)<0)&&(w=k.marker)}return w}function Fx(c,d,b,w,A){var k=kt(c,d),z=Co&&k.markedSpans;if(z)for(var Y=0;Y=0&&Ne<=0||de<=0&&Ne>=0)&&(de<=0&&(K.marker.inclusiveRight&&A.inclusiveLeft?Ee(Q.to,b)>=0:Ee(Q.to,b)>0)||de>=0&&(K.marker.inclusiveRight&&A.inclusiveLeft?Ee(Q.from,w)<=0:Ee(Q.from,w)<0)))return!0}}}function ua(c){for(var d;d=Qn(c);)c=d.find(-1,!0).line;return c}function IS(c){for(var d;d=wm(c);)c=d.find(1,!0).line;return c}function kc(c){for(var d,b;d=wm(c);)c=d.find(1,!0).line,(b||(b=[])).push(c);return b}function uu(c,d){var b=kt(c,d),w=ua(b);return b==w?d:j(w)}function Ix(c,d){if(d>c.lastLine())return d;var b=kt(c,d),w;if(!$i(c,b))return d;for(;w=wm(b);)b=w.find(1,!0).line;return j(b)+1}function $i(c,d){var b=Co&&d.markedSpans;if(b){for(var w=void 0,A=0;Ad.maxLineLength&&(d.maxLineLength=A,d.maxLine=w)})}var af=function(c,d,b){this.text=c,Hi(this,d),this.height=b?b(this):1};af.prototype.lineNo=function(){return j(this)},jr(af);function tg(c,d,b,w){c.text=d,c.stateAfter&&(c.stateAfter=null),c.styles&&(c.styles=null),c.order!=null&&(c.order=null),nf(c),Hi(c,b);var A=w?w(c):1;A!=c.height&&zn(c,A)}function kx(c){c.parent=null,nf(c)}var rg={},Lx={};function ng(c,d){if(!c||/^\s*$/.test(c))return null;var b=d.addModeClass?Lx:rg;return b[c]||(b[c]=c.replace(/\S+/g,"cm-$&"))}function ig(c,d){var b=V("span",null,null,a?"padding-right: .1px":null),w={pre:V("pre",[b],"CodeMirror-line"),content:b,col:0,pos:0,cm:c,trailingSpace:!1,splitSpaces:c.getOption("lineWrapping")};d.measure={};for(var A=0;A<=(d.rest?d.rest.length:0);A++){var k=A?d.rest[A-1]:d.line,z=void 0;w.pos=0,w.addToken=Bx,Bo(c.display.measure)&&(z=$e(k,c.doc.direction))&&(w.addToken=Lc(w.addToken,z)),w.map=[];var Y=d!=c.display.externalMeasured&&j(k);og(k,w,_x(c,k,Y)),k.styleClasses&&(k.styleClasses.bgClass&&(w.bgClass=Z(k.styleClasses.bgClass,w.bgClass||"")),k.styleClasses.textClass&&(w.textClass=Z(k.styleClasses.textClass,w.textClass||""))),w.map.length==0&&w.map.push(0,0,w.content.appendChild(qn(c.display.measure))),A==0?(d.measure.map=w.map,d.measure.cache={}):((d.measure.maps||(d.measure.maps=[])).push(w.map),(d.measure.caches||(d.measure.caches=[])).push({}))}if(a){var K=w.content.lastChild;(/\bcm-tab\b/.test(K.className)||K.querySelector&&K.querySelector(".cm-tab"))&&(w.content.className="cm-tab-wrap-hack")}return tt(c,"renderLine",c,d.line,w.pre),w.pre.className&&(w.textClass=Z(w.pre.className,w.textClass||"")),w}function kS(c){var d=R("span","\u2022","cm-invalidchar");return d.title="\\u"+c.charCodeAt(0).toString(16),d.setAttribute("aria-label",d.title),d}function Bx(c,d,b,w,A,k,z){if(d){var Y=c.splitSpaces?LS(d,c.trailingSpace):d,K=c.cm.state.specialChars,Q=!1,de;if(!K.test(d))c.col+=d.length,de=document.createTextNode(Y),c.map.push(c.pos,c.pos+d.length,de),l&&s<9&&(Q=!0),c.pos+=d.length;else{de=document.createDocumentFragment();for(var Ne=0;;){K.lastIndex=Ne;var qe=K.exec(d),Be=qe?qe.index-Ne:d.length-Ne;if(Be){var Ke=document.createTextNode(Y.slice(Ne,Ne+Be));l&&s<9?de.appendChild(R("span",[Ke])):de.appendChild(Ke),c.map.push(c.pos,c.pos+Be,Ke),c.col+=Be,c.pos+=Be}if(!qe)break;Ne+=Be+1;var nt=void 0;if(qe[0]==" "){var lt=c.cm.options.tabSize,pt=lt-c.col%lt;nt=de.appendChild(R("span",Te(pt),"cm-tab")),nt.setAttribute("role","presentation"),nt.setAttribute("cm-text"," "),c.col+=pt}else qe[0]=="\r"||qe[0]==` +`?(nt=de.appendChild(R("span",qe[0]=="\r"?"\u240D":"\u2424","cm-invalidchar")),nt.setAttribute("cm-text",qe[0]),c.col+=1):(nt=c.cm.options.specialCharPlaceholder(qe[0]),nt.setAttribute("cm-text",qe[0]),l&&s<9?de.appendChild(R("span",[nt])):de.appendChild(nt),c.col+=1);c.map.push(c.pos,c.pos+1,nt),c.pos++}}if(c.trailingSpace=Y.charCodeAt(d.length-1)==32,b||w||A||Q||k||z){var wt=b||"";w&&(wt+=w),A&&(wt+=A);var mt=R("span",[de],wt,k);if(z)for(var Nt in z)z.hasOwnProperty(Nt)&&Nt!="style"&&Nt!="class"&&mt.setAttribute(Nt,z[Nt]);return c.content.appendChild(mt)}c.content.appendChild(de)}}function LS(c,d){if(c.length>1&&!/ /.test(c))return c;for(var b=d,w="",A=0;AQ&&Ne.from<=Q));qe++);if(Ne.to>=de)return c(b,w,A,k,z,Y,K);c(b,w.slice(0,Ne.to-Q),A,k,null,Y,K),k=null,w=w.slice(Ne.to-Q),Q=Ne.to}}}function Dm(c,d,b,w){var A=!w&&b.widgetNode;A&&c.map.push(c.pos,c.pos+d,A),!w&&c.cm.display.input.needsContentAttribute&&(A||(A=c.content.appendChild(document.createElement("span"))),A.setAttribute("cm-marker",b.id)),A&&(c.cm.display.input.setUneditable(A),c.content.appendChild(A)),c.pos+=d,c.trailingSpace=!1}function og(c,d,b){var w=c.markedSpans,A=c.text,k=0;if(!w){for(var z=1;zK||cr.collapsed&&zt.to==K&&zt.from==K)){if(zt.to!=null&&zt.to!=K&&Be>zt.to&&(Be=zt.to,nt=""),cr.className&&(Ke+=" "+cr.className),cr.css&&(qe=(qe?qe+";":"")+cr.css),cr.startStyle&&zt.from==K&&(lt+=" "+cr.startStyle),cr.endStyle&&zt.to==Be&&(Nt||(Nt=[])).push(cr.endStyle,zt.to),cr.title&&((wt||(wt={})).title=cr.title),cr.attributes)for(var Gr in cr.attributes)(wt||(wt={}))[Gr]=cr.attributes[Gr];cr.collapsed&&(!pt||su(pt.marker,cr)<0)&&(pt=zt)}else zt.from>K&&Be>zt.from&&(Be=zt.from)}if(Nt)for(var ei=0;ei=Y)break;for(var so=Math.min(Y,Be);;){if(de){var _i=K+de.length;if(!pt){var In=_i>so?de.slice(0,so-K):de;d.addToken(d,In,Ne?Ne+Ke:Ke,lt,K+In.length==Be?nt:"",qe,wt)}if(_i>=so){de=de.slice(so-K),K=so;break}K=_i,lt=""}de=A.slice(k,k=b[Q++]),Ne=ng(b[Q++],d.cm.options)}}}function ag(c,d,b){this.line=d,this.rest=kc(d),this.size=this.rest?j(Ce(this.rest))-b+1:1,this.node=this.text=null,this.hidden=$i(c,d)}function sf(c,d,b){for(var w=[],A,k=d;k2&&k.push((K.bottom+Q.top)/2-b.top)}}k.push(b.bottom-b.top)}}function zx(c,d,b){if(c.line==d)return{map:c.measure.map,cache:c.measure.cache};if(c.rest){for(var w=0;wb)return{map:c.measure.maps[A],cache:c.measure.caches[A],before:!0}}}function RS(c,d){d=ua(d);var b=j(d),w=c.display.externalMeasured=new ag(c.doc,d,b);w.lineN=b;var A=w.built=ig(c,w);return w.text=A.pre,q(c.display.lineMeasure,A.pre),w}function mg(c,d,b,w){return Ba(c,ys(c,d),b,w)}function Nm(c,d){if(d>=c.display.viewFrom&&d=b.lineN&&dd)&&(k=K-Y,A=k-1,d>=K&&(z="right")),A!=null){if(w=c[Q+2],Y==K&&b==(w.insertLeft?"left":"right")&&(z=b),b=="left"&&A==0)for(;Q&&c[Q-2]==c[Q-3]&&c[Q-1].insertLeft;)w=c[(Q-=3)+2],z="left";if(b=="right"&&A==K-Y)for(;Q=0&&(b=c[A]).left==b.right;A--);return b}function qS(c,d,b,w){var A=dg(d.map,b,w),k=A.node,z=A.start,Y=A.end,K=A.collapse,Q;if(k.nodeType==3){for(var de=0;de<4;de++){for(;z&&qt(d.line.text.charAt(A.coverStart+z));)--z;for(;A.coverStart+Y0&&(K=w="right");var Ne;c.options.lineWrapping&&(Ne=k.getClientRects()).length>1?Q=Ne[w=="right"?Ne.length-1:0]:Q=k.getBoundingClientRect()}if(l&&s<9&&!z&&(!Q||!Q.left&&!Q.right)){var qe=k.parentNode.getClientRects()[0];qe?Q={left:qe.left,right:qe.left+mu(c.display),top:qe.top,bottom:qe.bottom}:Q=Ux}for(var Be=Q.top-d.rect.top,Ke=Q.bottom-d.rect.top,nt=(Be+Ke)/2,lt=d.view.measure.heights,pt=0;pt=w.text.length?(K=w.text.length,Q="before"):K<=0&&(K=0,Q="after"),!Y)return z(Q=="before"?K-1:K,Q=="before");function de(Ke,nt,lt){var pt=Y[nt],wt=pt.level==1;return z(lt?Ke-1:Ke,wt!=lt)}var Ne=ze(Y,K,Q),qe=_e,Be=de(K,Ne,Q=="before");return qe!=null&&(Be.other=de(K,qe,Q!="before")),Be}function Am(c,d){var b=0;d=St(c.doc,d),c.options.lineWrapping||(b=mu(c.display)*d.ch);var w=kt(c.doc,d.line),A=Ro(w)+ff(c.display);return{left:b,right:b,top:A,bottom:A+w.height}}function hg(c,d,b,w,A){var k=Ye(c,d,b);return k.xRel=A,w&&(k.outside=w),k}function gg(c,d,b){var w=c.doc;if(b+=c.display.viewOffset,b<0)return hg(w.first,0,null,-1,-1);var A=ye(w,b),k=w.first+w.size-1;if(A>k)return hg(w.first+w.size-1,kt(w,k).text.length,null,1,1);d<0&&(d=0);for(var z=kt(w,A);;){var Y=US(c,z,A,d,b),K=FS(z,Y.ch+(Y.xRel>0||Y.outside>0?1:0));if(!K)return Y;var Q=K.find(1);if(Q.line==A)return Q;z=kt(w,A=Q.line)}}function Gx(c,d,b,w){w-=Em(d);var A=d.text.length,k=te(function(z){return Ba(c,b,z-1).bottom<=w},A,0);return A=te(function(z){return Ba(c,b,z).top>w},k,A),{begin:k,end:A}}function Yx(c,d,b,w){b||(b=ys(c,d));var A=cf(c,d,Ba(c,b,w),"line").top;return Gx(c,d,b,A)}function ol(c,d,b,w){return c.bottom<=b?!1:c.top>b?!0:(w?c.left:c.right)>d}function US(c,d,b,w,A){A-=Ro(d);var k=ys(c,d),z=Em(d),Y=0,K=d.text.length,Q=!0,de=$e(d,c.doc.direction);if(de){var Ne=(c.options.lineWrapping?pf:qo)(c,d,b,k,de,w,A);Q=Ne.level!=1,Y=Q?Ne.from:Ne.to-1,K=Q?Ne.to:Ne.from-1}var qe=null,Be=null,Ke=te(function(Wt){var zt=Ba(c,k,Wt);return zt.top+=z,zt.bottom+=z,ol(zt,w,A,!1)?(zt.top<=A&&zt.left<=w&&(qe=Wt,Be=zt),!0):!1},Y,K),nt,lt,pt=!1;if(Be){var wt=w-Be.left=Nt.bottom?1:0}return Ke=xe(d.text,Ke,1),hg(b,Ke,lt,pt,w-nt)}function qo(c,d,b,w,A,k,z){var Y=te(function(Ne){var qe=A[Ne],Be=qe.level!=1;return ol(Mi(c,Ye(b,Be?qe.to:qe.from,Be?"before":"after"),"line",d,w),k,z,!0)},0,A.length-1),K=A[Y];if(Y>0){var Q=K.level!=1,de=Mi(c,Ye(b,Q?K.from:K.to,Q?"after":"before"),"line",d,w);ol(de,k,z,!0)&&de.top>z&&(K=A[Y-1])}return K}function pf(c,d,b,w,A,k,z){var Y=Gx(c,d,w,z),K=Y.begin,Q=Y.end;/\s/.test(d.text.charAt(Q-1))&&Q--;for(var de=null,Ne=null,qe=0;qe=Q||Be.to<=K)){var Ke=Be.level!=1,nt=Ba(c,w,Ke?Math.min(Q,Be.to)-1:Math.max(K,Be.from)).right,lt=ntlt)&&(de=Be,Ne=lt)}}return de||(de=A[A.length-1]),de.fromQ&&(de={from:de.from,to:Q,level:de.level}),de}var Pa;function ws(c){if(c.cachedTextHeight!=null)return c.cachedTextHeight;if(Pa==null){Pa=R("pre",null,"CodeMirror-line-like");for(var d=0;d<49;++d)Pa.appendChild(document.createTextNode("x")),Pa.appendChild(R("br"));Pa.appendChild(document.createTextNode("x"))}q(c.measure,Pa);var b=Pa.offsetHeight/50;return b>3&&(c.cachedTextHeight=b),L(c.measure),b||1}function mu(c){if(c.cachedCharWidth!=null)return c.cachedCharWidth;var d=R("span","xxxxxxxxxx"),b=R("pre",[d],"CodeMirror-line-like");q(c.measure,b);var w=d.getBoundingClientRect(),A=(w.right-w.left)/10;return A>2&&(c.cachedCharWidth=A),A||10}function al(c){for(var d=c.display,b={},w={},A=d.gutters.clientLeft,k=d.gutters.firstChild,z=0;k;k=k.nextSibling,++z){var Y=c.display.gutterSpecs[z].className;b[Y]=k.offsetLeft+k.clientLeft+A,w[Y]=k.clientWidth}return{fixedPos:Cm(d),gutterTotalWidth:d.gutters.offsetWidth,gutterLeft:b,gutterWidth:w,wrapperWidth:d.wrapper.clientWidth}}function Cm(c){return c.scroller.getBoundingClientRect().left-c.sizer.getBoundingClientRect().left}function mf(c){var d=ws(c.display),b=c.options.lineWrapping,w=b&&Math.max(5,c.display.scroller.clientWidth/mu(c.display)-3);return function(A){if($i(c.doc,A))return 0;var k=0;if(A.widgets)for(var z=0;z0&&(Q=kt(c.doc,K.line).text).length==K.ch){var de=Me(Q,Q.length,c.options.tabSize)-Q.length;K=Ye(K.line,Math.max(0,Math.round((k-pg(c.display).left)/mu(c.display))-de))}return K}function du(c,d){if(d>=c.display.viewTo||(d-=c.display.viewFrom,d<0))return null;for(var b=c.display.view,w=0;wd)&&(A.updateLineNumbers=d),c.curOp.viewChanged=!0,d>=A.viewTo)Co&&uu(c.doc,d)A.viewFrom?hu(c):(A.viewFrom+=w,A.viewTo+=w);else if(d<=A.viewFrom&&b>=A.viewTo)hu(c);else if(d<=A.viewFrom){var k=qc(c,b,b+w,1);k?(A.view=A.view.slice(k.index),A.viewFrom=k.lineN,A.viewTo+=w):hu(c)}else if(b>=A.viewTo){var z=qc(c,d,d,-1);z?(A.view=A.view.slice(0,z.index),A.viewTo=z.lineN):hu(c)}else{var Y=qc(c,d,d,-1),K=qc(c,b,b+w,1);Y&&K?(A.view=A.view.slice(0,Y.index).concat(sf(c,Y.lineN,K.lineN)).concat(A.view.slice(K.index)),A.viewTo+=w):hu(c)}var Q=A.externalMeasured;Q&&(b=A.lineN&&d=w.viewTo)){var k=w.view[du(c,d)];if(k.node!=null){var z=k.changes||(k.changes=[]);ne(z,b)==-1&&z.push(b)}}}function hu(c){c.display.viewFrom=c.display.viewTo=c.doc.first,c.display.view=[],c.display.viewOffset=0}function qc(c,d,b,w){var A=du(c,d),k,z=c.display.view;if(!Co||b==c.doc.first+c.doc.size)return{index:A,lineN:b};for(var Y=c.display.viewFrom,K=0;K0){if(A==z.length-1)return null;k=Y+z[A].size-d,A++}else k=Y-d;d+=k,b+=k}for(;uu(c.doc,b)!=b;){if(A==(w<0?0:z.length-1))return null;b+=w*z[A-(w<0?1:0)].size,A+=w}return{index:A,lineN:b}}function HS(c,d,b){var w=c.display,A=w.view;A.length==0||d>=w.viewTo||b<=w.viewFrom?(w.view=sf(c,d,b),w.viewFrom=d):(w.viewFrom>d?w.view=sf(c,d,w.viewFrom).concat(w.view):w.viewFromb&&(w.view=w.view.slice(0,du(c,b)))),w.viewTo=b}function Zx(c){for(var d=c.display.view,b=0,w=0;w=c.display.viewTo||K.to().line0?z:c.defaultCharWidth())+"px"}if(w.other){var Y=b.appendChild(R("div","\xA0","CodeMirror-cursor CodeMirror-secondarycursor"));Y.style.display="",Y.style.left=w.other.left+"px",Y.style.top=w.other.top+"px",Y.style.height=(w.other.bottom-w.other.top)*.85+"px"}}function hf(c,d){return c.top-d.top||c.left-d.left}function Xx(c,d,b){var w=c.display,A=c.doc,k=document.createDocumentFragment(),z=pg(c.display),Y=z.left,K=Math.max(w.sizerWidth,cu(c)-w.sizer.offsetLeft)-z.right,Q=A.direction=="ltr";function de(mt,Nt,Wt,zt){Nt<0&&(Nt=0),Nt=Math.round(Nt),zt=Math.round(zt),k.appendChild(R("div",null,"CodeMirror-selected","position: absolute; left: "+mt+`px; + top: `+Nt+"px; width: "+(Wt??K-mt)+`px; + height: `+(zt-Nt)+"px"))}function Ne(mt,Nt,Wt){var zt=kt(A,mt),cr=zt.text.length,Gr,ei;function en(In,Xi){return pu(c,Ye(mt,In),"div",zt,Xi)}function so(In,Xi,ai){var Nn=Yx(c,zt,null,In),kn=Xi=="ltr"==(ai=="after")?"left":"right",hn=ai=="after"?Nn.begin:Nn.end-(/\s/.test(zt.text.charAt(Nn.end-1))?2:1);return en(hn,kn)[kn]}var _i=$e(zt,A.direction);return ge(_i,Nt||0,Wt??cr,function(In,Xi,ai,Nn){var kn=ai=="ltr",hn=en(In,kn?"left":"right"),Ki=en(Xi-1,kn?"right":"left"),Bf=Nt==null&&In==0,Nu=Wt==null&&Xi==cr,di=Nn==0,za=!_i||Nn==_i.length-1;if(Ki.top-hn.top<=3){var Ln=(Q?Bf:Nu)&&di,Gg=(Q?Nu:Bf)&&za,As=Ln?Y:(kn?hn:Ki).left,wl=Gg?K:(kn?Ki:hn).right;de(As,hn.top,wl-As,hn.bottom)}else{var bl,Oi,Dl,Yg;kn?(bl=Q&&Bf&&di?Y:hn.left,Oi=Q?K:so(In,ai,"before"),Dl=Q?Y:so(Xi,ai,"after"),Yg=Q&&Nu&&za?K:Ki.right):(bl=Q?so(In,ai,"before"):Y,Oi=!Q&&Bf&&di?K:hn.right,Dl=!Q&&Nu&&za?Y:Ki.left,Yg=Q?so(Xi,ai,"after"):K),de(bl,hn.top,Oi-bl,hn.bottom),hn.bottom0?d.blinker=setInterval(function(){c.hasFocus()||ul(c),d.cursorDiv.style.visibility=(b=!b)?"":"hidden"},c.options.cursorBlinkRate):c.options.cursorBlinkRate<0&&(d.cursorDiv.style.visibility="hidden")}}function xg(c){c.hasFocus()||(c.display.input.focus(),c.state.focused||yg(c))}function Tm(c){c.state.delayingBlurEvent=!0,setTimeout(function(){c.state.delayingBlurEvent&&(c.state.delayingBlurEvent=!1,c.state.focused&&ul(c))},100)}function yg(c,d){c.state.delayingBlurEvent&&!c.state.draggingText&&(c.state.delayingBlurEvent=!1),c.options.readOnly!="nocursor"&&(c.state.focused||(tt(c,"focus",c,d),c.state.focused=!0,ee(c.display.wrapper,"CodeMirror-focused"),!c.curOp&&c.display.selForContextMenu!=c.doc.sel&&(c.display.input.reset(),a&&setTimeout(function(){return c.display.input.reset(!0)},20)),c.display.input.receivedFocus()),gf(c))}function ul(c,d){c.state.delayingBlurEvent||(c.state.focused&&(tt(c,"blur",c,d),c.state.focused=!1,B(c.display.wrapper,"CodeMirror-focused")),clearInterval(c.display.blinker),setTimeout(function(){c.state.focused||(c.display.shift=!1)},150))}function Mr(c){for(var d=c.display,b=d.lineDiv.offsetTop,w=Math.max(0,d.scroller.getBoundingClientRect().top),A=d.lineDiv.getBoundingClientRect().top,k=0,z=0;z.005||Be<-.005)&&(Ac.display.sizerWidth){var nt=Math.ceil(de/mu(c.display));nt>c.display.maxLineLength&&(c.display.maxLineLength=nt,c.display.maxLine=Y.line,c.display.maxLineChanged=!0)}}}Math.abs(k)>2&&(d.scroller.scrollTop+=k)}function Kx(c){if(c.widgets)for(var d=0;d=z&&(k=ye(d,Ro(kt(d,K))-c.wrapper.clientHeight),z=K)}return{from:k,to:Math.max(z,k+1)}}function $S(c,d){if(!ft(c,"scrollCursorIntoView")){var b=c.display,w=b.sizer.getBoundingClientRect(),A=null,k=b.wrapper.ownerDocument;if(d.top+w.top<0?A=!0:d.bottom+w.top>(k.defaultView.innerHeight||k.documentElement.clientHeight)&&(A=!1),A!=null&&!v){var z=R("div","\u200B",null,`position: absolute; + top: `+(d.top-b.viewOffset-ff(c.display))+`px; + height: `+(d.bottom-d.top+fa(c)+b.barHeight)+`px; + left: `+d.left+"px; width: "+Math.max(2,d.right-d.left)+"px;");c.display.lineSpace.appendChild(z),z.scrollIntoView(A),c.display.lineSpace.removeChild(z)}}}function WS(c,d,b,w){w==null&&(w=0);var A;!c.options.lineWrapping&&d==b&&(b=d.sticky=="before"?Ye(d.line,d.ch+1,"before"):d,d=d.ch?Ye(d.line,d.sticky=="before"?d.ch-1:d.ch,"after"):d);for(var k=0;k<5;k++){var z=!1,Y=Mi(c,d),K=!b||b==d?Y:Mi(c,b);A={left:Math.min(Y.left,K.left),top:Math.min(Y.top,K.top)-w,right:Math.max(Y.left,K.left),bottom:Math.max(Y.bottom,K.bottom)+w};var Q=wg(c,A),de=c.doc.scrollTop,Ne=c.doc.scrollLeft;if(Q.scrollTop!=null&&(Hc(c,Q.scrollTop),Math.abs(c.doc.scrollTop-de)>1&&(z=!0)),Q.scrollLeft!=null&&(fl(c,Q.scrollLeft),Math.abs(c.doc.scrollLeft-Ne)>1&&(z=!0)),!z)break}return A}function Jx(c,d){var b=wg(c,d);b.scrollTop!=null&&Hc(c,b.scrollTop),b.scrollLeft!=null&&fl(c,b.scrollLeft)}function wg(c,d){var b=c.display,w=ws(c.display);d.top<0&&(d.top=0);var A=c.curOp&&c.curOp.scrollTop!=null?c.curOp.scrollTop:b.scroller.scrollTop,k=Pc(c),z={};d.bottom-d.top>k&&(d.bottom=d.top+k);var Y=c.doc.height+Wi(b),K=d.topY-w;if(d.topA+k){var de=Math.min(d.top,(Q?Y:d.bottom)-k);de!=A&&(z.scrollTop=de)}var Ne=c.options.fixedGutter?0:b.gutters.offsetWidth,qe=c.curOp&&c.curOp.scrollLeft!=null?c.curOp.scrollLeft:b.scroller.scrollLeft-Ne,Be=cu(c)-b.gutters.offsetWidth,Ke=d.right-d.left>Be;return Ke&&(d.right=d.left+Be),d.left<10?z.scrollLeft=0:d.leftBe+qe-3&&(z.scrollLeft=d.right+(Ke?0:10)-Be),z}function bg(c,d){d!=null&&(gu(c),c.curOp.scrollTop=(c.curOp.scrollTop==null?c.doc.scrollTop:c.curOp.scrollTop)+d)}function vf(c){gu(c);var d=c.getCursor();c.curOp.scrollToPos={from:d,to:d,margin:c.options.cursorScrollMargin}}function ll(c,d,b){(d!=null||b!=null)&&gu(c),d!=null&&(c.curOp.scrollLeft=d),b!=null&&(c.curOp.scrollTop=b)}function Qx(c,d){gu(c),c.curOp.scrollToPos=d}function gu(c){var d=c.curOp.scrollToPos;if(d){c.curOp.scrollToPos=null;var b=Am(c,d.from),w=Am(c,d.to);vu(c,b,w,d.margin)}}function vu(c,d,b,w){var A=wg(c,{left:Math.min(d.left,b.left),top:Math.min(d.top,b.top)-w,right:Math.max(d.right,b.right),bottom:Math.max(d.bottom,b.bottom)+w});ll(c,A.scrollLeft,A.scrollTop)}function Hc(c,d){Math.abs(c.doc.scrollTop-d)<2||(r||Om(c,{top:d}),jx(c,d,!0),r&&Om(c),wf(c,100))}function jx(c,d,b){d=Math.max(0,Math.min(c.display.scroller.scrollHeight-c.display.scroller.clientHeight,d)),!(c.display.scroller.scrollTop==d&&!b)&&(c.doc.scrollTop=d,c.display.scrollbars.setScrollTop(d),c.display.scroller.scrollTop!=d&&(c.display.scroller.scrollTop=d))}function fl(c,d,b,w){d=Math.max(0,Math.min(d,c.display.scroller.scrollWidth-c.display.scroller.clientWidth)),!((b?d==c.doc.scrollLeft:Math.abs(c.doc.scrollLeft-d)<2)&&!w)&&(c.doc.scrollLeft=d,sy(c),c.display.scroller.scrollLeft!=d&&(c.display.scroller.scrollLeft=d),c.display.scrollbars.setScrollLeft(d))}function ni(c){var d=c.display,b=d.gutters.offsetWidth,w=Math.round(c.doc.height+Wi(c.display));return{clientHeight:d.scroller.clientHeight,viewHeight:d.wrapper.clientHeight,scrollWidth:d.scroller.scrollWidth,clientWidth:d.scroller.clientWidth,viewWidth:d.wrapper.clientWidth,barLeft:c.options.fixedGutter?b:0,docHeight:w,scrollHeight:w+fa(c)+d.barHeight,nativeBarWidth:d.nativeBarWidth,gutterWidth:b}}var bs=function(c,d,b){this.cm=b;var w=this.vert=R("div",[R("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),A=this.horiz=R("div",[R("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");w.tabIndex=A.tabIndex=-1,c(w),c(A),ae(w,"scroll",function(){w.clientHeight&&d(w.scrollTop,"vertical")}),ae(A,"scroll",function(){A.clientWidth&&d(A.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,l&&s<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};bs.prototype.update=function(c){var d=c.scrollWidth>c.clientWidth+1,b=c.scrollHeight>c.clientHeight+1,w=c.nativeBarWidth;if(b){this.vert.style.display="block",this.vert.style.bottom=d?w+"px":"0";var A=c.viewHeight-(d?w:0);this.vert.firstChild.style.height=Math.max(0,c.scrollHeight-c.clientHeight+A)+"px"}else this.vert.scrollTop=0,this.vert.style.display="",this.vert.firstChild.style.height="0";if(d){this.horiz.style.display="block",this.horiz.style.right=b?w+"px":"0",this.horiz.style.left=c.barLeft+"px";var k=c.viewWidth-c.barLeft-(b?w:0);this.horiz.firstChild.style.width=Math.max(0,c.scrollWidth-c.clientWidth+k)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&c.clientHeight>0&&(w==0&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:b?w:0,bottom:d?w:0}},bs.prototype.setScrollLeft=function(c){this.horiz.scrollLeft!=c&&(this.horiz.scrollLeft=c),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},bs.prototype.setScrollTop=function(c){this.vert.scrollTop!=c&&(this.vert.scrollTop=c),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},bs.prototype.zeroWidthHack=function(){var c=E&&!x?"12px":"18px";this.horiz.style.height=this.vert.style.width=c,this.horiz.style.visibility=this.vert.style.visibility="hidden",this.disableHoriz=new le,this.disableVert=new le},bs.prototype.enableZeroWidthBar=function(c,d,b){c.style.visibility="";function w(){var A=c.getBoundingClientRect(),k=b=="vert"?document.elementFromPoint(A.right-1,(A.top+A.bottom)/2):document.elementFromPoint((A.right+A.left)/2,A.bottom-1);k!=c?c.style.visibility="hidden":d.set(1e3,w)}d.set(1e3,w)},bs.prototype.clear=function(){var c=this.horiz.parentNode;c.removeChild(this.horiz),c.removeChild(this.vert)};var xf=function(){};xf.prototype.update=function(){return{bottom:0,right:0}},xf.prototype.setScrollLeft=function(){},xf.prototype.setScrollTop=function(){},xf.prototype.clear=function(){};function yf(c,d){d||(d=ni(c));var b=c.display.barWidth,w=c.display.barHeight;ey(c,d);for(var A=0;A<4&&b!=c.display.barWidth||w!=c.display.barHeight;A++)b!=c.display.barWidth&&c.options.lineWrapping&&Mr(c),ey(c,ni(c)),b=c.display.barWidth,w=c.display.barHeight}function ey(c,d){var b=c.display,w=b.scrollbars.update(d);b.sizer.style.paddingRight=(b.barWidth=w.right)+"px",b.sizer.style.paddingBottom=(b.barHeight=w.bottom)+"px",b.heightForcer.style.borderBottom=w.bottom+"px solid transparent",w.right&&w.bottom?(b.scrollbarFiller.style.display="block",b.scrollbarFiller.style.height=w.bottom+"px",b.scrollbarFiller.style.width=w.right+"px"):b.scrollbarFiller.style.display="",w.bottom&&c.options.coverGutterNextToScrollbar&&c.options.fixedGutter?(b.gutterFiller.style.display="block",b.gutterFiller.style.height=w.bottom+"px",b.gutterFiller.style.width=d.gutterWidth+"px"):b.gutterFiller.style.display=""}var ty={native:bs,null:xf};function ry(c){c.display.scrollbars&&(c.display.scrollbars.clear(),c.display.scrollbars.addClass&&B(c.display.wrapper,c.display.scrollbars.addClass)),c.display.scrollbars=new ty[c.options.scrollbarStyle](function(d){c.display.wrapper.insertBefore(d,c.display.scrollbarFiller),ae(d,"mousedown",function(){c.state.focused&&setTimeout(function(){return c.display.input.focus()},0)}),d.setAttribute("cm-not-content","true")},function(d,b){b=="horizontal"?fl(c,d):Hc(c,d)},c),c.display.scrollbars.addClass&&ee(c.display.wrapper,c.display.scrollbars.addClass)}var Dg=0;function ca(c){c.curOp={cm:c,viewChanged:!1,startHeight:c.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++Dg,markArrays:null},Px(c.curOp)}function Vr(c){var d=c.curOp;d&&ug(d,function(b){for(var w=0;w=b.viewTo)||b.maxLineChanged&&d.options.lineWrapping,c.update=c.mustUpdate&&new Wc(d,c.mustUpdate&&{top:c.scrollTop,ensure:c.scrollToPos},c.forceUpdate)}function ny(c){c.updatedDisplay=c.mustUpdate&&Sg(c.cm,c.update)}function _m(c){var d=c.cm,b=d.display;c.updatedDisplay&&Mr(d),c.barMeasure=ni(d),b.maxLineChanged&&!d.options.lineWrapping&&(c.adjustWidthTo=mg(d,b.maxLine,b.maxLine.text.length).left+3,d.display.sizerWidth=c.adjustWidthTo,c.barMeasure.scrollWidth=Math.max(b.scroller.clientWidth,b.sizer.offsetLeft+c.adjustWidthTo+fa(d)+d.display.barWidth),c.maxScrollLeft=Math.max(0,b.sizer.offsetLeft+c.adjustWidthTo-cu(d))),(c.updatedDisplay||c.selectionChanged)&&(c.preparedSelection=b.input.prepareSelection())}function GS(c){var d=c.cm;c.adjustWidthTo!=null&&(d.display.sizer.style.minWidth=c.adjustWidthTo+"px",c.maxScrollLeft=c.display.viewTo)){var b=+new Date+c.options.workTime,w=Kr(c,d.highlightFrontier),A=[];d.iter(w.line,Math.min(d.first+d.size,c.display.viewTo+500),function(k){if(w.line>=c.display.viewFrom){var z=k.styles,Y=k.text.length>c.options.maxHighlightLength?Cr(d.mode,w.state):null,K=hs(c,k,w,!0);Y&&(w.state=Y),k.styles=K.styles;var Q=k.styleClasses,de=K.classes;de?k.styleClasses=de:Q&&(k.styleClasses=null);for(var Ne=!z||z.length!=k.styles.length||Q!=de&&(!Q||!de||Q.bgClass!=de.bgClass||Q.textClass!=de.textClass),qe=0;!Ne&&qeb)return wf(c,c.options.workDelay),!0}),d.highlightFrontier=w.line,d.modeFrontier=Math.max(d.modeFrontier,w.line),A.length&&Gi(c,function(){for(var k=0;k=b.viewFrom&&d.visible.to<=b.viewTo&&(b.updateLineNumbers==null||b.updateLineNumbers>=b.viewTo)&&b.renderedView==b.view&&Zx(c)==0)return!1;Eg(c)&&(hu(c),d.dims=al(c));var A=w.first+w.size,k=Math.max(d.visible.from-c.options.viewportMargin,w.first),z=Math.min(A,d.visible.to+c.options.viewportMargin);b.viewFromz&&b.viewTo-z<20&&(z=Math.min(A,b.viewTo)),Co&&(k=uu(c.doc,k),z=Ix(c.doc,z));var Y=k!=b.viewFrom||z!=b.viewTo||b.lastWrapHeight!=d.wrapperHeight||b.lastWrapWidth!=d.wrapperWidth;HS(c,k,z),b.viewOffset=Ro(kt(c.doc,b.viewFrom)),c.display.mover.style.top=b.viewOffset+"px";var K=Zx(c);if(!Y&&K==0&&!d.force&&b.renderedView==b.view&&(b.updateLineNumbers==null||b.updateLineNumbers>=b.viewTo))return!1;var Q=XS(c);return K>4&&(b.lineDiv.style.display="none"),ay(c,b.updateLineNumbers,d.dims),K>4&&(b.lineDiv.style.display=""),b.renderedView=b.view,iy(Q),L(b.cursorDiv),L(b.selectionDiv),b.gutters.style.height=b.sizer.style.minHeight=0,Y&&(b.lastWrapHeight=d.wrapperHeight,b.lastWrapWidth=d.wrapperWidth,wf(c,400)),b.updateLineNumbers=null,!0}function oy(c,d){for(var b=d.viewport,w=!0;;w=!1){if(!w||!c.options.lineWrapping||d.oldDisplayWidth==cu(c)){if(b&&b.top!=null&&(b={top:Math.min(c.doc.height+Wi(c.display)-Pc(c),b.top)}),d.visible=Uc(c.display,c.doc,b),d.visible.from>=c.display.viewFrom&&d.visible.to<=c.display.viewTo)break}else w&&(d.visible=Uc(c.display,c.doc,b));if(!Sg(c,d))break;Mr(c);var A=ni(c);df(c),yf(c,A),Fm(c,A),d.force=!1}d.signal(c,"update",c),(c.display.viewFrom!=c.display.reportedViewFrom||c.display.viewTo!=c.display.reportedViewTo)&&(d.signal(c,"viewportChange",c,c.display.viewFrom,c.display.viewTo),c.display.reportedViewFrom=c.display.viewFrom,c.display.reportedViewTo=c.display.viewTo)}function Om(c,d){var b=new Wc(c,d);if(Sg(c,b)){Mr(c),oy(c,b);var w=ni(c);df(c),yf(c,w),Fm(c,w),b.finish()}}function ay(c,d,b){var w=c.display,A=c.options.lineNumbers,k=w.lineDiv,z=k.firstChild;function Y(Ke){var nt=Ke.nextSibling;return a&&E&&c.display.currentWheelTarget==Ke?Ke.style.display="none":Ke.parentNode.removeChild(Ke),nt}for(var K=w.view,Q=w.viewFrom,de=0;de-1&&(Be=!1),fg(c,Ne,Q,b)),Be&&(L(Ne.lineNumber),Ne.lineNumber.appendChild(document.createTextNode(ot(c.options,Q)))),z=Ne.node.nextSibling}Q+=Ne.size}for(;z;)z=Y(z)}function Ng(c){var d=c.gutters.offsetWidth;c.sizer.style.marginLeft=d+"px",Un(c,"gutterChanged",c)}function Fm(c,d){c.display.sizer.style.minHeight=d.docHeight+"px",c.display.heightForcer.style.top=d.docHeight+"px",c.display.gutters.style.height=d.docHeight+c.display.barHeight+fa(c)+"px"}function sy(c){var d=c.display,b=d.view;if(!(!d.alignWidgets&&(!d.gutters.firstChild||!c.options.fixedGutter))){for(var w=Cm(d)-d.scroller.scrollLeft+c.doc.scrollLeft,A=d.gutters.offsetWidth,k=w+"px",z=0;z=105&&(A.wrapper.style.clipPath="inset(0px)"),A.wrapper.setAttribute("translate","no"),l&&s<8&&(A.gutters.style.zIndex=-1,A.scroller.style.paddingRight=0),!a&&!(r&&C)&&(A.scroller.draggable=!0),c&&(c.appendChild?c.appendChild(A.wrapper):c(A.wrapper)),A.viewFrom=A.viewTo=d.first,A.reportedViewFrom=A.reportedViewTo=d.first,A.view=[],A.renderedView=null,A.externalMeasured=null,A.viewOffset=0,A.lastWrapHeight=A.lastWrapWidth=0,A.updateLineNumbers=null,A.nativeBarWidth=A.barHeight=A.barWidth=0,A.scrollbarsClipped=!1,A.lineNumWidth=A.lineNumInnerWidth=A.lineNumChars=null,A.alignWidgets=!1,A.cachedCharWidth=A.cachedTextHeight=A.cachedPaddingH=null,A.maxLine=null,A.maxLineLength=0,A.maxLineChanged=!1,A.wheelDX=A.wheelDY=A.wheelStartX=A.wheelStartY=null,A.shift=!1,A.selForContextMenu=null,A.activeTouch=null,A.gutterSpecs=Ag(w.gutters,w.lineNumbers),uy(A),b.init(A)}var Gc=0,Ds=null;l?Ds=-.53:r?Ds=15:f?Ds=-.7:g&&(Ds=-1/3);function ly(c){var d=c.wheelDeltaX,b=c.wheelDeltaY;return d==null&&c.detail&&c.axis==c.HORIZONTAL_AXIS&&(d=c.detail),b==null&&c.detail&&c.axis==c.VERTICAL_AXIS?b=c.detail:b==null&&(b=c.wheelDelta),{x:d,y:b}}function bf(c){var d=ly(c);return d.x*=Ds,d.y*=Ds,d}function Im(c,d){f&&p==102&&(c.display.chromeScrollHack==null?c.display.sizer.style.pointerEvents="none":clearTimeout(c.display.chromeScrollHack),c.display.chromeScrollHack=setTimeout(function(){c.display.chromeScrollHack=null,c.display.sizer.style.pointerEvents=""},100));var b=ly(d),w=b.x,A=b.y,k=Ds;d.deltaMode===0&&(w=d.deltaX,A=d.deltaY,k=1);var z=c.display,Y=z.scroller,K=Y.scrollWidth>Y.clientWidth,Q=Y.scrollHeight>Y.clientHeight;if(w&&K||A&&Q){if(A&&E&&a){e:for(var de=d.target,Ne=z.view;de!=Y;de=de.parentNode)for(var qe=0;qe=0&&Ee(c,w.to())<=0)return b}return-1};var Fr=function(c,d){this.anchor=c,this.head=d};Fr.prototype.from=function(){return au(this.anchor,this.head)},Fr.prototype.to=function(){return ci(this.anchor,this.head)},Fr.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch};function zo(c,d,b){var w=c&&c.options.selectionsMayTouch,A=d[b];d.sort(function(qe,Be){return Ee(qe.from(),Be.from())}),b=ne(d,A);for(var k=1;k0:K>=0){var Q=au(Y.from(),z.from()),de=ci(Y.to(),z.to()),Ne=Y.empty()?z.from()==z.head:Y.from()==Y.head;k<=b&&--b,d.splice(--k,2,new Fr(Ne?de:Q,Ne?Q:de))}}return new Yi(d,b)}function xu(c,d){return new Yi([new Fr(c,d||c)],0)}function yu(c){return c.text?Ye(c.from.line+c.text.length-1,Ce(c.text).length+(c.text.length==1?c.from.ch:0)):c.to}function fy(c,d){if(Ee(c,d.from)<0)return c;if(Ee(c,d.to)<=0)return yu(d);var b=c.line+d.text.length-(d.to.line-d.from.line)-1,w=c.ch;return c.line==d.to.line&&(w+=yu(d).ch-d.to.ch),Ye(b,w)}function Zi(c,d){for(var b=[],w=0;w1&&c.remove(Y.line+1,Ke-1),c.insert(Y.line+1,pt)}Un(c,"change",c,d)}function pa(c,d,b){function w(A,k,z){if(A.linked)for(var Y=0;Y1&&!c.done[c.done.length-2].ranges)return c.done.pop(),Ce(c.done)}function bu(c,d,b,w){var A=c.history;A.undone.length=0;var k=+new Date,z,Y;if((A.lastOp==w||A.lastOrigin==d.origin&&d.origin&&(d.origin.charAt(0)=="+"&&A.lastModTime>k-(c.cm?c.cm.options.historyEventDelay:500)||d.origin.charAt(0)=="*"))&&(z=QS(A,A.lastOp==w)))Y=Ce(z.changes),Ee(d.from,d.to)==0&&Ee(d.from,Y.to)==0?Y.to=yu(d):z.changes.push(km(c,d));else{var K=Ce(A.done);for((!K||!K.ranges)&&Lm(c.sel,A.done),z={changes:[km(c,d)],generation:A.generation},A.done.push(z);A.done.length>A.undoDepth;)A.done.shift(),A.done[0].ranges||A.done.shift()}A.done.push(b),A.generation=++A.maxGeneration,A.lastModTime=A.lastSelTime=k,A.lastOp=A.lastSelOp=w,A.lastOrigin=A.lastSelOrigin=d.origin,Y||tt(c,"historyAdded")}function jS(c,d,b,w){var A=d.charAt(0);return A=="*"||A=="+"&&b.ranges.length==w.ranges.length&&b.somethingSelected()==w.somethingSelected()&&new Date-c.history.lastSelTime<=(c.cm?c.cm.options.historyEventDelay:500)}function eN(c,d,b,w){var A=c.history,k=w&&w.origin;b==A.lastSelOp||k&&A.lastSelOrigin==k&&(A.lastModTime==A.lastSelTime&&A.lastOrigin==k||jS(c,k,Ce(A.done),d))?A.done[A.done.length-1]=d:Lm(d,A.done),A.lastSelTime=+new Date,A.lastSelOrigin=k,A.lastSelOp=b,w&&w.clearRedo!==!1&&dy(A.undone)}function Lm(c,d){var b=Ce(d);b&&b.ranges&&b.equals(c)||d.push(c)}function Cg(c,d,b,w){var A=d["spans_"+c.id],k=0;c.iter(Math.max(c.first,b),Math.min(c.first+c.size,w),function(z){z.markedSpans&&((A||(A=d["spans_"+c.id]={}))[k]=z.markedSpans),++k})}function tN(c){if(!c)return null;for(var d,b=0;b-1&&(Ce(Y)[Ne]=Q[Ne],delete Q[Ne])}}return w}function Du(c,d,b,w){if(w){var A=c.anchor;if(b){var k=Ee(d,A)<0;k!=Ee(b,A)<0?(A=d,d=b):k!=Ee(d,b)<0&&(d=b)}return new Fr(A,d)}else return new Fr(b||d,d)}function Zc(c,d,b,w,A){A==null&&(A=c.cm&&(c.cm.display.shift||c.extend)),mi(c,new Yi([Du(c.sel.primary(),d,b,A)],0),w)}function Tg(c,d,b){for(var w=[],A=c.cm&&(c.cm.display.shift||c.extend),k=0;k=d.ch:Y.to>d.ch))){if(A&&(tt(K,"beforeCursorEnter"),K.explicitlyCleared))if(k.markedSpans){--z;continue}else break;if(!K.atomic)continue;if(b){var Ne=K.find(w<0?1:-1),qe=void 0;if((w<0?de:Q)&&(Ne=Fg(c,Ne,-w,Ne&&Ne.line==d.line?k:null)),Ne&&Ne.line==d.line&&(qe=Ee(Ne,b))&&(w<0?qe<0:qe>0))return Ss(c,Ne,d,w,A)}var Be=K.find(w<0?-1:1);return(w<0?Q:de)&&(Be=Fg(c,Be,w,Be.line==d.line?k:null)),Be?Ss(c,Be,d,w,A):null}}return d}function Kc(c,d,b,w,A){var k=w||1,z=Ss(c,d,b,k,A)||!A&&Ss(c,d,b,k,!0)||Ss(c,d,b,-k,A)||!A&&Ss(c,d,b,-k,!0);return z||(c.cantEdit=!0,Ye(c.first,0))}function Fg(c,d,b,w){return b<0&&d.ch==0?d.line>c.first?St(c,Ye(d.line-1)):null:b>0&&d.ch==(w||kt(c,d.line)).text.length?d.line=0;--A)Su(c,{from:w[A].from,to:w[A].to,text:A?[""]:d.text,origin:d.origin});else Su(c,d)}}function Su(c,d){if(!(d.text.length==1&&d.text[0]==""&&Ee(d.from,d.to)==0)){var b=Zi(c,d);bu(c,d,b,c.cm?c.cm.curOp.id:NaN),Af(c,d,b,Bt(c,d));var w=[];pa(c,function(A,k){!k&&ne(w,A.history)==-1&&(Qc(A.history,d),w.push(A.history)),Af(A,d,null,Bt(A,d))})}}function Rm(c,d,b){var w=c.cm&&c.cm.state.suppressEdits;if(!(w&&!b)){for(var A=c.history,k,z=c.sel,Y=d=="undo"?A.done:A.undone,K=d=="undo"?A.undone:A.done,Q=0;Q=0;--Be){var Ke=qe(Be);if(Ke)return Ke.v}}}}function xy(c,d){if(d!=0&&(c.first+=d,c.sel=new Yi(Je(c.sel.ranges,function(A){return new Fr(Ye(A.anchor.line+d,A.anchor.ch),Ye(A.head.line+d,A.head.ch))}),c.sel.primIndex),c.cm)){pi(c.cm,c.first,c.first-d,d);for(var b=c.cm.display,w=b.viewFrom;wc.lastLine())){if(d.from.linek&&(d={from:d.from,to:Ye(k,kt(c,k).text.length),text:[d.text[0]],origin:d.origin}),d.removed=aa(c,d.from,d.to),b||(b=Zi(c,d)),c.cm?nN(c.cm,d,w):ml(c,d,w),Bm(c,b,me),c.cantEdit&&Kc(c,Ye(c.firstLine(),0))&&(c.cantEdit=!1)}}function nN(c,d,b){var w=c.doc,A=c.display,k=d.from,z=d.to,Y=!1,K=k.line;c.options.lineWrapping||(K=j(ua(kt(w,k.line))),w.iter(K,z.line+1,function(Be){if(Be==A.maxLine)return Y=!0,!0})),w.sel.contains(d.from,d.to)>-1&&or(c),ml(w,d,b,mf(c)),c.options.lineWrapping||(w.iter(K,k.line+d.text.length,function(Be){var Ke=bm(Be);Ke>A.maxLineLength&&(A.maxLine=Be,A.maxLineLength=Ke,A.maxLineChanged=!0,Y=!1)}),Y&&(c.curOp.updateMaxLine=!0)),xm(w,k.line),wf(c,400);var Q=d.text.length-(z.line-k.line)-1;d.full?pi(c):k.line==z.line&&d.text.length==1&&!Sf(c.doc,d)?Ra(c,k.line,"text"):pi(c,k.line,z.line+1,Q);var de=br(c,"changes"),Ne=br(c,"change");if(Ne||de){var qe={from:k,to:z,text:d.text,removed:d.removed,origin:d.origin};Ne&&Un(c,"change",c,qe),de&&(c.curOp.changeObjs||(c.curOp.changeObjs=[])).push(qe)}c.display.selForContextMenu=null}function hl(c,d,b,w,A){var k;w||(w=b),Ee(w,b)<0&&(k=[w,b],b=k[0],w=k[1]),typeof d=="string"&&(d=c.splitLines(d)),Ef(c,{from:b,to:w,text:d,origin:A})}function Ig(c,d,b,w){b1||!(this.children[0]instanceof gl))){var Y=[];this.collapse(Y),this.children=[new gl(Y)],this.children[0].parent=this}},collapse:function(c){for(var d=0;d50){for(var z=A.lines.length%25+25,Y=z;Y10);c.parent.maybeSpill()}},iterN:function(c,d,b){for(var w=0;wc.display.maxLineLength&&(c.display.maxLine=Q,c.display.maxLineLength=de,c.display.maxLineChanged=!0)}w!=null&&c&&this.collapsed&&pi(c,w,A+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,c&&vy(c.doc)),c&&Un(c,"markerCleared",c,this,w,A),d&&Vr(c),this.parent&&this.parent.clear()}},Uo.prototype.find=function(c,d){c==null&&this.type=="bookmark"&&(c=1);for(var b,w,A=0;A0||z==0&&k.clearWhenEmpty!==!1)return k;if(k.replacedWith&&(k.collapsed=!0,k.widgetNode=V("span",[k.replacedWith],"CodeMirror-widget"),w.handleMouseEvents||k.widgetNode.setAttribute("cm-ignore-events","true"),w.insertLeft&&(k.widgetNode.insertLeft=!0)),k.collapsed){if(Fx(c,d.line,d,b,k)||d.line!=b.line&&Fx(c,b.line,d,b,k))throw new Error("Inserting collapsed marker partially overlapping an existing one");vs()}k.addToHistory&&bu(c,{from:d,to:b,origin:"markText"},c.sel,NaN);var Y=d.line,K=c.cm,Q;if(c.iter(Y,b.line+1,function(Ne){K&&k.collapsed&&!K.options.lineWrapping&&ua(Ne)==K.display.maxLine&&(Q=!0),k.collapsed&&Y!=d.line&&zn(Ne,0),Jr(Ne,new Oc(k,Y==d.line?d.ch:null,Y==b.line?b.ch:null),c.cm&&c.cm.curOp),++Y}),k.collapsed&&c.iter(d.line,b.line+1,function(Ne){$i(c,Ne)&&zn(Ne,0)}),k.clearOnEnter&&ae(k,"beforeCursorEnter",function(){return k.clear()}),k.readOnly&&(OS(),(c.history.done.length||c.history.undone.length)&&c.clearHistory()),k.collapsed&&(k.id=++ep,k.atomic=!0),K){if(Q&&(K.curOp.updateMaxLine=!0),k.collapsed)pi(K,d.line,b.line+1);else if(k.className||k.startStyle||k.endStyle||k.css||k.attributes||k.title)for(var de=d.line;de<=b.line;de++)Ra(K,de,"text");k.atomic&&vy(K.doc),Un(K,"markerAdded",K,k)}return k}var Tf=function(c,d){this.markers=c,this.primary=d;for(var b=0;b=0;K--)Ef(this,w[K]);Y?_g(this,Y):this.cm&&vf(this.cm)}),undo:$n(function(){Rm(this,"undo")}),redo:$n(function(){Rm(this,"redo")}),undoSelection:$n(function(){Rm(this,"undo",!0)}),redoSelection:$n(function(){Rm(this,"redo",!0)}),setExtending:function(c){this.extend=c},getExtending:function(){return this.extend},historySize:function(){for(var c=this.history,d=0,b=0,w=0;w=c.ch)&&d.push(A.marker.parent||A.marker)}return d},findMarks:function(c,d,b){c=St(this,c),d=St(this,d);var w=[],A=c.line;return this.iter(c.line,d.line+1,function(k){var z=k.markedSpans;if(z)for(var Y=0;Y=K.to||K.from==null&&A!=c.line||K.from!=null&&A==d.line&&K.from>=d.ch)&&(!b||b(K.marker))&&w.push(K.marker.parent||K.marker)}++A}),w},getAllMarks:function(){var c=[];return this.iter(function(d){var b=d.markedSpans;if(b)for(var w=0;wc)return d=c,!0;c-=k,++b}),St(this,Ye(b,d))},indexFromPos:function(c){c=St(this,c);var d=c.ch;if(c.lined&&(d=c.from),c.to!=null&&c.to-1){d.state.draggingText(c),setTimeout(function(){return d.display.input.focus()},20);return}try{var de=c.dataTransfer.getData("Text");if(de){var Ne;if(d.state.draggingText&&!d.state.draggingText.copy&&(Ne=d.listSelections()),Bm(d.doc,xu(b,b)),Ne)for(var qe=0;qe=0;Y--)hl(c.doc,"",w[Y].from,w[Y].to,"+delete");vf(c)})}function Pg(c,d,b){var w=xe(c.text,d+b,b);return w<0||w>c.text.length?null:w}function zm(c,d,b){var w=Pg(c,d.ch,b);return w==null?null:new Ye(d.line,w,b<0?"after":"before")}function Um(c,d,b,w,A){if(c){d.doc.direction=="rtl"&&(A=-A);var k=$e(b,d.doc.direction);if(k){var z=A<0?Ce(k):k[0],Y=A<0==(z.level==1),K=Y?"after":"before",Q;if(z.level>0||d.doc.direction=="rtl"){var de=ys(d,b);Q=A<0?b.text.length-1:0;var Ne=Ba(d,de,Q).top;Q=te(function(qe){return Ba(d,de,qe).top==Ne},A<0==(z.level==1)?z.from:z.to-1,Q),K=="before"&&(Q=Pg(b,Q,1))}else Q=A<0?z.to:z.from;return new Ye(w,Q,K)}}return new Ye(w,A<0?b.text.length:0,A<0?"before":"after")}function cN(c,d,b,w){var A=$e(d,c.doc.direction);if(!A)return zm(d,b,w);b.ch>=d.text.length?(b.ch=d.text.length,b.sticky="before"):b.ch<=0&&(b.ch=0,b.sticky="after");var k=ze(A,b.ch,b.sticky),z=A[k];if(c.doc.direction=="ltr"&&z.level%2==0&&(w>0?z.to>b.ch:z.from=z.from&&qe>=de.begin)){var Be=Ne?"before":"after";return new Ye(b.line,qe,Be)}}var Ke=function(pt,wt,mt){for(var Nt=function(Gr,ei){return ei?new Ye(b.line,Y(Gr,1),"before"):new Ye(b.line,Gr,"after")};pt>=0&&pt0==(Wt.level!=1),cr=zt?mt.begin:Y(mt.end,-1);if(Wt.from<=cr&&cr0?de.end:Y(de.begin,-1);return lt!=null&&!(w>0&<==d.text.length)&&(nt=Ke(w>0?0:A.length-1,w,Q(lt)),nt)?nt:null}var op={selectAll:Jc,singleSelection:function(c){return c.setSelection(c.getCursor("anchor"),c.getCursor("head"),me)},killLine:function(c){return xl(c,function(d){if(d.empty()){var b=kt(c.doc,d.head.line).text.length;return d.head.ch==b&&d.head.line0)A=new Ye(A.line,A.ch+1),c.replaceRange(k.charAt(A.ch-1)+k.charAt(A.ch-2),Ye(A.line,A.ch-2),A,"+transpose");else if(A.line>c.doc.first){var z=kt(c.doc,A.line-1).text;z&&(A=new Ye(A.line,1),c.replaceRange(k.charAt(0)+c.doc.lineSeparator()+z.charAt(z.length-1),Ye(A.line-1,z.length-1),A,"+transpose"))}}b.push(new Fr(A,A))}c.setSelections(b)})},newlineAndIndent:function(c){return Gi(c,function(){for(var d=c.listSelections(),b=d.length-1;b>=0;b--)c.replaceRange(c.doc.lineSeparator(),d[b].anchor,d[b].head,"+input");d=c.listSelections();for(var w=0;wc&&Ee(d,this.pos)==0&&b==this.button};var up,lp;function hN(c,d){var b=+new Date;return lp&&lp.compare(b,c,d)?(up=lp=null,"triple"):up&&up.compare(b,c,d)?(lp=new If(b,c,d),up=null,"double"):(up=new If(b,c,d),lp=null,"single")}function By(c){var d=this,b=d.display;if(!(ft(d,c)||b.activeTouch&&b.input.supportsTouch())){if(b.input.ensurePolled(),b.shift=c.shiftKey,la(b,c)){a||(b.scroller.draggable=!1,setTimeout(function(){return b.scroller.draggable=!0},100));return}if(!qg(d,c)){var w=sl(d,c),A=On(c),k=w?hN(w,A):"single";ve(d).focus(),A==1&&d.state.selectingText&&d.state.selectingText(c),!(w&&Py(d,A,w,k,c))&&(A==1?w?vN(d,w,k,c):Dr(c)==b.scroller&&Ut(c):A==2?(w&&Zc(d.doc,w),setTimeout(function(){return b.input.focus()},20)):A==3&&(F?d.display.input.onContextMenu(c):Tm(d)))}}}function Py(c,d,b,w,A){var k="Click";return w=="double"?k="Double"+k:w=="triple"&&(k="Triple"+k),k=(d==1?"Left":d==2?"Middle":"Right")+k,sp(c,Ay(k,A),A,function(z){if(typeof z=="string"&&(z=op[z]),!z)return!1;var Y=!1;try{c.isReadOnly()&&(c.state.suppressEdits=!0),Y=z(c,b)!=Fe}finally{c.state.suppressEdits=!1}return Y})}function gN(c,d,b){var w=c.getOption("configureMouse"),A=w?w(c,d,b):{};if(A.unit==null){var k=M?b.shiftKey&&b.metaKey:b.altKey;A.unit=k?"rectangle":d=="single"?"char":d=="double"?"word":"line"}return(A.extend==null||c.doc.extend)&&(A.extend=c.doc.extend||b.shiftKey),A.addNew==null&&(A.addNew=E?b.metaKey:b.ctrlKey),A.moveOnDrag==null&&(A.moveOnDrag=!(E?b.altKey:b.ctrlKey)),A}function vN(c,d,b,w){l?setTimeout(Oe(xg,c),0):c.curOp.focus=H(he(c));var A=gN(c,b,w),k=c.doc.sel,z;c.options.dragDrop&&Ia&&!c.isReadOnly()&&b=="single"&&(z=k.contains(d))>-1&&(Ee((z=k.ranges[z]).from(),d)<0||d.xRel>0)&&(Ee(z.to(),d)>0||d.xRel<0)?Ry(c,w,d,A):qy(c,w,d,A)}function Ry(c,d,b,w){var A=c.display,k=!1,z=jn(c,function(Q){a&&(A.scroller.draggable=!1),c.state.draggingText=!1,c.state.delayingBlurEvent&&(c.hasFocus()?c.state.delayingBlurEvent=!1:Tm(c)),Ve(A.wrapper.ownerDocument,"mouseup",z),Ve(A.wrapper.ownerDocument,"mousemove",Y),Ve(A.scroller,"dragstart",K),Ve(A.scroller,"drop",z),k||(Ut(Q),w.addNew||Zc(c.doc,b,null,null,w.extend),a&&!g||l&&s==9?setTimeout(function(){A.wrapper.ownerDocument.body.focus({preventScroll:!0}),A.input.focus()},20):A.input.focus())}),Y=function(Q){k=k||Math.abs(d.clientX-Q.clientX)+Math.abs(d.clientY-Q.clientY)>=10},K=function(){return k=!0};a&&(A.scroller.draggable=!0),c.state.draggingText=z,z.copy=!w.moveOnDrag,ae(A.wrapper.ownerDocument,"mouseup",z),ae(A.wrapper.ownerDocument,"mousemove",Y),ae(A.scroller,"dragstart",K),ae(A.scroller,"drop",z),c.state.delayingBlurEvent=!0,setTimeout(function(){return A.input.focus()},20),A.scroller.dragDrop&&A.scroller.dragDrop()}function oi(c,d,b){if(b=="char")return new Fr(d,d);if(b=="word")return c.findWordAt(d);if(b=="line")return new Fr(Ye(d.line,0),St(c.doc,Ye(d.line+1,0)));var w=b(c,d);return new Fr(w.from,w.to)}function qy(c,d,b,w){l&&Tm(c);var A=c.display,k=c.doc;Ut(d);var z,Y,K=k.sel,Q=K.ranges;if(w.addNew&&!w.extend?(Y=k.sel.contains(b),Y>-1?z=Q[Y]:z=new Fr(b,b)):(z=k.sel.primary(),Y=k.sel.primIndex),w.unit=="rectangle")w.addNew||(z=new Fr(b,b)),b=sl(c,d,!0,!0),Y=-1;else{var de=oi(c,b,w.unit);w.extend?z=Du(z,de.anchor,de.head,w.extend):z=de}w.addNew?Y==-1?(Y=Q.length,mi(k,zo(c,Q.concat([z]),Y),{scroll:!1,origin:"*mouse"})):Q.length>1&&Q[Y].empty()&&w.unit=="char"&&!w.extend?(mi(k,zo(c,Q.slice(0,Y).concat(Q.slice(Y+1)),0),{scroll:!1,origin:"*mouse"}),K=k.sel):dl(k,Y,z,Ue):(Y=0,mi(k,new Yi([z],0),Ue),K=k.sel);var Ne=b;function qe(mt){if(Ee(Ne,mt)!=0)if(Ne=mt,w.unit=="rectangle"){for(var Nt=[],Wt=c.options.tabSize,zt=Me(kt(k,b.line).text,b.ch,Wt),cr=Me(kt(k,mt.line).text,mt.ch,Wt),Gr=Math.min(zt,cr),ei=Math.max(zt,cr),en=Math.min(b.line,mt.line),so=Math.min(c.lastLine(),Math.max(b.line,mt.line));en<=so;en++){var _i=kt(k,en).text,In=ie(_i,Gr,Wt);Gr==ei?Nt.push(new Fr(Ye(en,In),Ye(en,In))):_i.length>In&&Nt.push(new Fr(Ye(en,In),Ye(en,ie(_i,ei,Wt))))}Nt.length||Nt.push(new Fr(b,b)),mi(k,zo(c,K.ranges.slice(0,Y).concat(Nt),Y),{origin:"*mouse",scroll:!1}),c.scrollIntoView(mt)}else{var Xi=z,ai=oi(c,mt,w.unit),Nn=Xi.anchor,kn;Ee(ai.anchor,Nn)>0?(kn=ai.head,Nn=au(Xi.from(),ai.anchor)):(kn=ai.anchor,Nn=ci(Xi.to(),ai.head));var hn=K.ranges.slice(0);hn[Y]=xN(c,new Fr(St(k,Nn),kn)),mi(k,zo(c,hn,Y),Ue)}}var Be=A.wrapper.getBoundingClientRect(),Ke=0;function nt(mt){var Nt=++Ke,Wt=sl(c,mt,!0,w.unit=="rectangle");if(Wt)if(Ee(Wt,Ne)!=0){c.curOp.focus=H(he(c)),qe(Wt);var zt=Uc(A,k);(Wt.line>=zt.to||Wt.lineBe.bottom?20:0;cr&&setTimeout(jn(c,function(){Ke==Nt&&(A.scroller.scrollTop+=cr,nt(mt))}),50)}}function lt(mt){c.state.selectingText=!1,Ke=1/0,mt&&(Ut(mt),A.input.focus()),Ve(A.wrapper.ownerDocument,"mousemove",pt),Ve(A.wrapper.ownerDocument,"mouseup",wt),k.history.lastSelOrigin=null}var pt=jn(c,function(mt){mt.buttons===0||!On(mt)?lt(mt):nt(mt)}),wt=jn(c,lt);c.state.selectingText=wt,ae(A.wrapper.ownerDocument,"mousemove",pt),ae(A.wrapper.ownerDocument,"mouseup",wt)}function xN(c,d){var b=d.anchor,w=d.head,A=kt(c.doc,b.line);if(Ee(b,w)==0&&b.sticky==w.sticky)return d;var k=$e(A);if(!k)return d;var z=ze(k,b.ch,b.sticky),Y=k[z];if(Y.from!=b.ch&&Y.to!=b.ch)return d;var K=z+(Y.from==b.ch==(Y.level!=1)?0:1);if(K==0||K==k.length)return d;var Q;if(w.line!=b.line)Q=(w.line-b.line)*(c.doc.direction=="ltr"?1:-1)>0;else{var de=ze(k,w.ch,w.sticky),Ne=de-z||(w.ch-b.ch)*(Y.level==1?-1:1);de==K-1||de==K?Q=Ne<0:Q=Ne>0}var qe=k[K+(Q?-1:0)],Be=Q==(qe.level==1),Ke=Be?qe.from:qe.to,nt=Be?"after":"before";return b.ch==Ke&&b.sticky==nt?d:new Fr(new Ye(b.line,Ke,nt),w)}function zy(c,d,b,w){var A,k;if(d.touches)A=d.touches[0].clientX,k=d.touches[0].clientY;else try{A=d.clientX,k=d.clientY}catch{return!1}if(A>=Math.floor(c.display.gutters.getBoundingClientRect().right))return!1;w&&Ut(d);var z=c.display,Y=z.lineDiv.getBoundingClientRect();if(k>Y.bottom||!br(c,b))return Kt(d);k-=Y.top-z.viewOffset;for(var K=0;K=A){var de=ye(c.doc,k),Ne=c.display.gutterSpecs[K];return tt(c,b,c,de,Ne.className,d),Kt(d)}}}function qg(c,d){return zy(c,d,"gutterClick",!0)}function zg(c,d){la(c.display,d)||yN(c,d)||ft(c,d,"contextmenu")||F||c.display.input.onContextMenu(d)}function yN(c,d){return br(c,"gutterContextMenu")?zy(c,d,"gutterContextMenu",!1):!1}function Uy(c){c.display.wrapper.className=c.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+c.options.theme.replace(/(^|\s)\s*/g," cm-s-"),Rc(c)}var kf={toString:function(){return"CodeMirror.Init"}},Ug={},fp={};function wN(c){var d=c.optionHandlers;function b(w,A,k,z){c.defaults[w]=A,k&&(d[w]=z?function(Y,K,Q){Q!=kf&&k(Y,K,Q)}:k)}c.defineOption=b,c.Init=kf,b("value","",function(w,A){return w.setValue(A)},!0),b("mode",null,function(w,A){w.doc.modeOption=A,wu(w)},!0),b("indentUnit",2,wu,!0),b("indentWithTabs",!1),b("smartIndent",!0),b("tabSize",4,function(w){Df(w),Rc(w),pi(w)},!0),b("lineSeparator",null,function(w,A){if(w.doc.lineSep=A,!!A){var k=[],z=w.doc.first;w.doc.iter(function(K){for(var Q=0;;){var de=K.text.indexOf(A,Q);if(de==-1)break;Q=de+A.length,k.push(Ye(z,de))}z++});for(var Y=k.length-1;Y>=0;Y--)hl(w.doc,A,k[Y],Ye(k[Y].line,k[Y].ch+A.length))}}),b("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\u202d\u202e\u2066\u2067\u2069\ufeff\ufff9-\ufffc]/g,function(w,A,k){w.state.specialChars=new RegExp(A.source+(A.test(" ")?"":"| "),"g"),k!=kf&&w.refresh()}),b("specialCharPlaceholder",kS,function(w){return w.refresh()},!0),b("electricChars",!0),b("inputStyle",C?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),b("spellcheck",!1,function(w,A){return w.getInputField().spellcheck=A},!0),b("autocorrect",!1,function(w,A){return w.getInputField().autocorrect=A},!0),b("autocapitalize",!1,function(w,A){return w.getInputField().autocapitalize=A},!0),b("rtlMoveVisually",!T),b("wholeLineUpdateBefore",!0),b("theme","default",function(w){Uy(w),Vc(w)},!0),b("keyMap","default",function(w,A,k){var z=qm(A),Y=k!=kf&&qm(k);Y&&Y.detach&&Y.detach(w,z),z.attach&&z.attach(w,Y||null)}),b("extraKeys",null),b("configureMouse",null),b("lineWrapping",!1,Hy,!0),b("gutters",[],function(w,A){w.display.gutterSpecs=Ag(A,w.options.lineNumbers),Vc(w)},!0),b("fixedGutter",!0,function(w,A){w.display.gutters.style.left=A?Cm(w.display)+"px":"0",w.refresh()},!0),b("coverGutterNextToScrollbar",!1,function(w){return yf(w)},!0),b("scrollbarStyle","native",function(w){ry(w),yf(w),w.display.scrollbars.setScrollTop(w.doc.scrollTop),w.display.scrollbars.setScrollLeft(w.doc.scrollLeft)},!0),b("lineNumbers",!1,function(w,A){w.display.gutterSpecs=Ag(w.options.gutters,A),Vc(w)},!0),b("firstLineNumber",1,Vc,!0),b("lineNumberFormatter",function(w){return w},Vc,!0),b("showCursorWhenSelecting",!1,df,!0),b("resetSelectionOnContextMenu",!0),b("lineWiseCopyCut",!0),b("pasteLinesPerSelection",!0),b("selectionsMayTouch",!1),b("readOnly",!1,function(w,A){A=="nocursor"&&(ul(w),w.display.input.blur()),w.display.input.readOnlyChanged(A)}),b("screenReaderLabel",null,function(w,A){A=A===""?null:A,w.display.input.screenReaderLabelChanged(A)}),b("disableInput",!1,function(w,A){A||w.display.input.reset()},!0),b("dragDrop",!0,bN),b("allowDropFileTypes",null),b("cursorBlinkRate",530),b("cursorScrollMargin",0),b("cursorHeight",1,df,!0),b("singleCursorHeightPerLine",!0,df,!0),b("workTime",100),b("workDelay",100),b("flattenSpans",!0,Df,!0),b("addModeClass",!1,Df,!0),b("pollInterval",100),b("undoDepth",200,function(w,A){return w.doc.history.undoDepth=A}),b("historyEventDelay",1250),b("viewportMargin",10,function(w){return w.refresh()},!0),b("maxHighlightLength",1e4,Df,!0),b("moveInputWithCursor",!0,function(w,A){A||w.display.input.resetPosition()}),b("tabindex",null,function(w,A){return w.display.input.getField().tabIndex=A||""}),b("autofocus",null),b("direction","ltr",function(w,A){return w.doc.setDirection(A)},!0),b("phrases",null)}function bN(c,d,b){var w=b&&b!=kf;if(!d!=!w){var A=c.display.dragFunctions,k=d?ae:Ve;k(c.display.scroller,"dragstart",A.start),k(c.display.scroller,"dragenter",A.enter),k(c.display.scroller,"dragover",A.over),k(c.display.scroller,"dragleave",A.leave),k(c.display.scroller,"drop",A.drop)}}function Hy(c){c.options.lineWrapping?(ee(c.display.wrapper,"CodeMirror-wrap"),c.display.sizer.style.minWidth="",c.display.sizerWidth=null):(B(c.display.wrapper,"CodeMirror-wrap"),eg(c)),vg(c),pi(c),Rc(c),setTimeout(function(){return yf(c)},100)}function sn(c,d){var b=this;if(!(this instanceof sn))return new sn(c,d);this.options=d=d?De(d):{},De(Ug,d,!1);var w=d.value;typeof w=="string"?w=new Ti(w,d.mode,null,d.lineSeparator,d.direction):d.mode&&(w.modeOption=d.mode),this.doc=w;var A=new sn.inputStyles[d.inputStyle](this),k=this.display=new KS(c,w,A,d);k.wrapper.CodeMirror=this,Uy(this),d.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),ry(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new le,keySeq:null,specialChars:null},d.autofocus&&!C&&k.input.focus(),l&&s<11&&setTimeout(function(){return b.display.input.reset(!0)},20),DN(this),sN(),ca(this),this.curOp.forceUpdate=!0,py(this,w),d.autofocus&&!C||this.hasFocus()?setTimeout(function(){b.hasFocus()&&!b.state.focused&&yg(b)},20):ul(this);for(var z in fp)fp.hasOwnProperty(z)&&fp[z](this,d[z],kf);Eg(this),d.finishInit&&d.finishInit(this);for(var Y=0;Y20*20}ae(d.scroller,"touchstart",function(K){if(!ft(c,K)&&!k(K)&&!qg(c,K)){d.input.ensurePolled(),clearTimeout(b);var Q=+new Date;d.activeTouch={start:Q,moved:!1,prev:Q-w.end<=300?w:null},K.touches.length==1&&(d.activeTouch.left=K.touches[0].pageX,d.activeTouch.top=K.touches[0].pageY)}}),ae(d.scroller,"touchmove",function(){d.activeTouch&&(d.activeTouch.moved=!0)}),ae(d.scroller,"touchend",function(K){var Q=d.activeTouch;if(Q&&!la(d,K)&&Q.left!=null&&!Q.moved&&new Date-Q.start<300){var de=c.coordsChar(d.activeTouch,"page"),Ne;!Q.prev||z(Q,Q.prev)?Ne=new Fr(de,de):!Q.prev.prev||z(Q,Q.prev.prev)?Ne=c.findWordAt(de):Ne=new Fr(Ye(de.line,0),St(c.doc,Ye(de.line+1,0))),c.setSelection(Ne.anchor,Ne.head),c.focus(),Ut(K)}A()}),ae(d.scroller,"touchcancel",A),ae(d.scroller,"scroll",function(){d.scroller.clientHeight&&(Hc(c,d.scroller.scrollTop),fl(c,d.scroller.scrollLeft,!0),tt(c,"scroll",c))}),ae(d.scroller,"mousewheel",function(K){return Im(c,K)}),ae(d.scroller,"DOMMouseScroll",function(K){return Im(c,K)}),ae(d.wrapper,"scroll",function(){return d.wrapper.scrollTop=d.wrapper.scrollLeft=0}),d.dragFunctions={enter:function(K){ft(c,K)||no(K)},over:function(K){ft(c,K)||(_f(c,K),no(K))},start:function(K){return Dy(c,K)},drop:jn(c,tp),leave:function(K){ft(c,K)||Sy(c)}};var Y=d.input.getField();ae(Y,"keyup",function(K){return ky.call(c,K)}),ae(Y,"keydown",jn(c,Fy)),ae(Y,"keypress",jn(c,Rg)),ae(Y,"focus",function(K){return yg(c,K)}),ae(Y,"blur",function(K){return ul(c,K)})}var Hg=[];sn.defineInitHook=function(c){return Hg.push(c)};function yl(c,d,b,w){var A=c.doc,k;b==null&&(b="add"),b=="smart"&&(A.mode.indent?k=Kr(c,d).state:b="prev");var z=c.options.tabSize,Y=kt(A,d),K=Me(Y.text,null,z);Y.stateAfter&&(Y.stateAfter=null);var Q=Y.text.match(/^\s*/)[0],de;if(!w&&!/\S/.test(Y.text))de=0,b="not";else if(b=="smart"&&(de=A.mode.indent(k,Y.text.slice(Q.length),Y.text),de==Fe||de>150)){if(!w)return;b="prev"}b=="prev"?d>A.first?de=Me(kt(A,d-1).text,null,z):de=0:b=="add"?de=K+c.options.indentUnit:b=="subtract"?de=K-c.options.indentUnit:typeof b=="number"&&(de=K+b),de=Math.max(0,de);var Ne="",qe=0;if(c.options.indentWithTabs)for(var Be=Math.floor(de/z);Be;--Be)qe+=z,Ne+=" ";if(qez,K=ri(d),Q=null;if(Y&&w.ranges.length>1)if(ma&&ma.text.join(` +`)==d){if(w.ranges.length%ma.text.length==0){Q=[];for(var de=0;de=0;qe--){var Be=w.ranges[qe],Ke=Be.from(),nt=Be.to();Be.empty()&&(b&&b>0?Ke=Ye(Ke.line,Ke.ch-b):c.state.overwrite&&!Y?nt=Ye(nt.line,Math.min(kt(k,nt.line).text.length,nt.ch+Ce(K).length)):Y&&ma&&ma.lineWise&&ma.text.join(` `)==K.join(` -`)&&(Ke=nt=Ye(Ke.line,0)));var ft={from:Ke,to:nt,text:Q?Q[qe%Q.length]:K,origin:A||(Y?"paste":c.state.cutIncoming>z?"cut":"+input")};pf(c.doc,ft),qn(c,"inputRead",c,ft)}d&&!Y&&Hy(c,d),uf(c),c.curOp.updateInput<2&&(c.curOp.updateInput=Ne),c.curOp.typing=!0,c.state.pasteIncoming=c.state.cutIncoming=-1}function Uy(c,d){var b=c.clipboardData&&c.clipboardData.getData("Text");if(b)return c.preventDefault(),!d.isReadOnly()&&!d.options.disableInput&&d.hasFocus()&&ro(d,function(){return Ug(d,b,0,null,"paste")}),!0}function Hy(c,d){if(!(!c.options.electricChars||!c.options.smartIndent))for(var b=c.doc.sel,w=b.ranges.length-1;w>=0;w--){var A=b.ranges[w];if(!(A.head.ch>100||w&&b.ranges[w-1].head.line==A.head.line)){var k=c.getModeAt(A.head),z=!1;if(k.electricChars){for(var Y=0;Y-1){z=Qc(c,A.head.line,"smart");break}}else k.electricInput&&k.electricInput.test(kt(c.doc,A.head.line).text.slice(0,A.head.ch))&&(z=Qc(c,A.head.line,"smart"));z&&qn(c,"electricInput",c,A.head.line)}}}function $y(c){for(var d=[],b=[],w=0;wk&&(Qc(this,Y.head.line,w,!0),k=Y.head.line,z==this.doc.sel.primIndex&&uf(this));else{var K=Y.from(),Q=Y.to(),me=Math.max(k,K.line);k=Math.min(this.lastLine(),Q.line-(Q.ch?0:1))+1;for(var Ne=me;Ne0&&ml(this.doc,z,new Ar(K,qe[z].to()),he)}}}),getTokenAt:function(w,A){return gc(this,w,A)},getLineTokens:function(w,A){return gc(this,Ye(w),A,!0)},getTokenTypeAt:function(w){w=St(this.doc,w);var A=Cx(this,kt(this.doc,w.line)),k=0,z=(A.length-1)/2,Y=w.ch,K;if(Y==0)K=A[2];else for(;;){var Q=k+z>>1;if((Q?A[Q*2-1]:0)>=Y)z=Q;else if(A[Q*2+1]K&&(w=K,z=!0),Y=kt(this.doc,w)}else Y=w;return Ac(this,Y,{top:0,left:0},A||"page",k||z).top+(z?this.doc.height-Ro(Y):0)},defaultTextHeight:function(){return ws(this.display)},defaultCharWidth:function(){return bs(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(w,A,k,z,Y){var K=this.display;w=$i(this,St(this.doc,w));var Q=w.bottom,me=w.left;if(A.style.position="absolute",A.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(A),K.sizer.appendChild(A),z=="over")Q=w.top;else if(z=="above"||z=="near"){var Ne=Math.max(K.wrapper.clientHeight,this.doc.height),qe=Math.max(K.sizer.clientWidth,K.lineSpace.clientWidth);(z=="above"||w.bottom+A.offsetHeight>Ne)&&w.top>A.offsetHeight?Q=w.top-A.offsetHeight:w.bottom+A.offsetHeight<=Ne&&(Q=w.bottom),me+A.offsetWidth>qe&&(me=qe-A.offsetWidth)}A.style.top=Q+"px",A.style.left=A.style.right="",Y=="right"?(me=K.sizer.clientWidth-A.offsetWidth,A.style.right="0px"):(Y=="left"?me=0:Y=="middle"&&(me=(K.sizer.clientWidth-A.offsetWidth)/2),A.style.left=me+"px"),k&&zS(this,{left:me,top:Q,right:me+A.offsetWidth,bottom:Q+A.offsetHeight})},triggerOnKeyDown:ci(Lg),triggerOnKeyPress:ci(Bg),triggerOnKeyUp:Oy,triggerOnMouseDown:ci(Fy),execCommand:function(w){if(Jc.hasOwnProperty(w))return Jc[w].call(null,this)},triggerElectric:ci(function(w){Hy(this,w)}),findPosH:function(w,A,k,z){var Y=1;A<0&&(Y=-1,A=-A);for(var K=St(this.doc,w),Q=0;Q0&&me(k.charAt(z-1));)--z;for(;Y.5||this.options.lineWrapping)&&rl(this),He(this,"refresh",this)}),swapDoc:ci(function(w){var A=this.doc;return A.cm=null,this.state.selectingText&&this.state.selectingText(),cf(this,w),Ec(this),this.display.input.reset(),kc(this,w.scrollLeft,w.scrollTop),this.curOp.forceScroll=!0,qn(this,"swapDoc",this,A),A}),phrase:function(w){var A=this.options.phrases;return A&&Object.prototype.hasOwnProperty.call(A,w)?A[w]:w},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},$r(c),c.registerHelper=function(w,A,k){b.hasOwnProperty(w)||(b[w]=c[w]={_global:[]}),b[w][A]=k},c.registerGlobalHelper=function(w,A,k,z){c.registerHelper(w,A,z),b[w]._global.push({pred:k,val:z})}}function $g(c,d,b,w,A){var k=d,z=b,Y=kt(c,d.line),K=A&&c.direction=="rtl"?-b:b;function Q(){var gt=d.line+K;return gt=c.first+c.size?!1:(d=new Ye(gt,d.ch,d.sticky),Y=kt(c,gt))}function me(gt){var dt;if(w=="codepoint"){var Ct=Y.text.charCodeAt(d.ch+(b>0?0:-1));if(isNaN(Ct))dt=null;else{var Vt=b>0?Ct>=55296&&Ct<56320:Ct>=56320&&Ct<57343;dt=new Ye(d.line,Math.max(0,Math.min(Y.text.length,d.ch+b*(Vt?2:1))),-b)}}else A?dt=Ey(c.cm,Y,d,b):dt=Ig(Y,d,b);if(dt==null)if(!gt&&Q())d=Lm(A,c.cm,Y,d.line,K);else return!1;else d=dt;return!0}if(w=="char"||w=="codepoint")me();else if(w=="column")me(!0);else if(w=="word"||w=="group")for(var Ne=null,qe=w=="group",Be=c.cm&&c.cm.getHelper(d,"wordChars"),Ke=!0;!(b<0&&!me(!Ke));Ke=!1){var nt=Y.text.charAt(d.ch)||` -`,ft=zt(nt,Be)?"w":qe&&nt==` -`?"n":!qe||/\s/.test(nt)?null:"p";if(qe&&!Ke&&!ft&&(ft="s"),Ne&&Ne!=ft){b<0&&(b=1,me(),d.sticky="after");break}if(ft&&(Ne=ft),b>0&&!me(!Ke))break}var pt=Hc(c,d,k,z,!0);return Sr(k,pt)&&(pt.hitSide=!0),pt}function Vy(c,d,b,w){var A=c.doc,k=d.left,z;if(w=="page"){var Y=Math.min(c.display.wrapper.clientHeight,ve(c).innerHeight||A(c).documentElement.clientHeight),K=Math.max(Y-.5*ws(c.display),3);z=(b>0?d.bottom:d.top)+b*K}else w=="line"&&(z=b>0?d.bottom+3:d.top-3);for(var Q;Q=sg(c,k,z),!!Q.outside;){if(b<0?z<=0:z>=A.height){Q.hitSide=!0;break}z+=b*5}return Q}var Lr=function(c){this.cm=c,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new le,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};Lr.prototype.init=function(c){var d=this,b=this,w=b.cm,A=b.div=c.lineDiv;A.contentEditable=!0,Hg(A,w.options.spellcheck,w.options.autocorrect,w.options.autocapitalize);function k(Y){for(var K=Y.target;K;K=K.parentNode){if(K==A)return!0;if(/\bCodeMirror-(?:line)?widget\b/.test(K.className))break}return!1}W(A,"paste",function(Y){!k(Y)||lt(w,Y)||Uy(Y,w)||s<=11&&setTimeout(pn(w,function(){return d.updateFromDOM()}),20)}),W(A,"compositionstart",function(Y){d.composing={data:Y.data,done:!1}}),W(A,"compositionupdate",function(Y){d.composing||(d.composing={data:Y.data,done:!1})}),W(A,"compositionend",function(Y){d.composing&&(Y.data!=d.composing.data&&d.readFromDOMSoon(),d.composing.done=!0)}),W(A,"touchstart",function(){return b.forceCompositionEnd()}),W(A,"input",function(){d.composing||d.readFromDOMSoon()});function z(Y){if(!(!k(Y)||lt(w,Y))){if(w.somethingSelected())Sf({lineWise:!1,text:w.getSelections()}),Y.type=="cut"&&w.replaceSelection("",null,"cut");else if(w.options.lineWiseCopyCut){var K=$y(w);Sf({lineWise:!0,text:K.text}),Y.type=="cut"&&w.operation(function(){w.setSelections(K.ranges,0,he),w.replaceSelection("",null,"cut")})}else return;if(Y.clipboardData){Y.clipboardData.clearData();var Q=ma.text.join(` -`);if(Y.clipboardData.setData("Text",Q),Y.clipboardData.getData("Text")==Q){Y.preventDefault();return}}var me=Wy(),Ne=me.firstChild;Hg(Ne),w.display.lineSpace.insertBefore(me,w.display.lineSpace.firstChild),Ne.value=ma.text.join(` -`);var qe=H(ne(A));ce(Ne),setTimeout(function(){w.display.lineSpace.removeChild(me),qe.focus(),qe==A&&b.showPrimarySelection()},50)}}W(A,"copy",z),W(A,"cut",z)},Lr.prototype.screenReaderLabelChanged=function(c){c?this.div.setAttribute("aria-label",c):this.div.removeAttribute("aria-label")},Lr.prototype.prepareSelection=function(){var c=fg(this.cm,!1);return c.focus=H(ne(this.div))==this.div,c},Lr.prototype.showSelection=function(c,d){!c||!this.cm.display.view.length||((c.focus||d)&&this.showPrimarySelection(),this.showMultipleSelections(c))},Lr.prototype.getSelection=function(){return this.cm.display.wrapper.ownerDocument.getSelection()},Lr.prototype.showPrimarySelection=function(){var c=this.getSelection(),d=this.cm,b=d.doc.sel.primary(),w=b.from(),A=b.to();if(d.display.viewTo==d.display.viewFrom||w.line>=d.display.viewTo||A.line=d.display.viewFrom&&Gy(d,w)||{node:Y[0].measure.map[2],offset:0},Q=A.linec.firstLine()&&(w=Ye(w.line-1,kt(c.doc,w.line-1).length)),A.ch==kt(c.doc,A.line).text.length&&A.lined.viewTo-1)return!1;var k,z,Y;w.line==d.viewFrom||(k=il(c,w.line))==0?(z=j(d.view[0].line),Y=d.view[0].node):(z=j(d.view[k].line),Y=d.view[k-1].node.nextSibling);var K=il(c,A.line),Q,me;if(K==d.view.length-1?(Q=d.viewTo-1,me=d.lineDiv.lastChild):(Q=j(d.view[K+1].line)-1,me=d.view[K+1].node.previousSibling),!Y)return!1;for(var Ne=c.doc.splitLines(yN(c,Y,me,z,Q)),qe=aa(c.doc,Ye(z,0),Ye(Q,kt(c.doc,Q).text.length));Ne.length>1&&qe.length>1;)if(Me(Ne)==Me(qe))Ne.pop(),qe.pop(),Q--;else if(Ne[0]==qe[0])Ne.shift(),qe.shift(),z++;else break;for(var Be=0,Ke=0,nt=Ne[0],ft=qe[0],pt=Math.min(nt.length,ft.length);Bew.ch&>.charCodeAt(gt.length-Ke-1)==dt.charCodeAt(dt.length-Ke-1);)Be--,Ke++;Ne[Ne.length-1]=gt.slice(0,gt.length-Ke).replace(/^\u200b+/,""),Ne[0]=Ne[0].slice(Be).replace(/\u200b+$/,"");var Vt=Ye(z,Be),Lt=Ye(Q,qe.length?Me(qe).length-Ke:0);if(Ne.length>1||Ne[0]||Ee(Vt,Lt))return dl(c.doc,Ne,Vt,Lt,"+input"),!0},Lr.prototype.ensurePolled=function(){this.forceCompositionEnd()},Lr.prototype.reset=function(){this.forceCompositionEnd()},Lr.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Lr.prototype.readFromDOMSoon=function(){var c=this;this.readDOMTimeout==null&&(this.readDOMTimeout=setTimeout(function(){if(c.readDOMTimeout=null,c.composing)if(c.composing.done)c.composing=null;else return;c.updateFromDOM()},80))},Lr.prototype.updateFromDOM=function(){var c=this;(this.cm.isReadOnly()||!this.pollContent())&&ro(this.cm,function(){return Ci(c.cm)})},Lr.prototype.setUneditable=function(c){c.contentEditable="false"},Lr.prototype.onKeyPress=function(c){c.charCode==0||this.composing||(c.preventDefault(),this.cm.isReadOnly()||pn(this.cm,Ug)(this.cm,String.fromCharCode(c.charCode==null?c.keyCode:c.charCode),0))},Lr.prototype.readOnlyChanged=function(c){this.div.contentEditable=String(c!="nocursor")},Lr.prototype.onContextMenu=function(){},Lr.prototype.resetPosition=function(){},Lr.prototype.needsContentAttribute=!0;function Gy(c,d){var b=mm(c,d.line);if(!b||b.hidden)return null;var w=kt(c.doc,d.line),A=ag(b,w,d.line),k=ze(w,c.doc.direction),z="left";if(k){var Y=Re(k,d.ch);z=Y%2?"right":"left"}var K=zx(A.map,d.ch,z);return K.offset=K.collapse=="right"?K.end:K.start,K}function xN(c){for(var d=c;d;d=d.parentNode)if(/CodeMirror-gutter-wrapper/.test(d.className))return!0;return!1}function Nf(c,d){return d&&(c.bad=!0),c}function yN(c,d,b,w,A){var k="",z=!1,Y=c.doc.lineSeparator(),K=!1;function Q(Be){return function(Ke){return Ke.id==Be}}function me(){z&&(k+=Y,K&&(k+=Y),z=K=!1)}function Ne(Be){Be&&(me(),k+=Be)}function qe(Be){if(Be.nodeType==1){var Ke=Be.getAttribute("cm-text");if(Ke){Ne(Ke);return}var nt=Be.getAttribute("cm-marker"),ft;if(nt){var pt=c.findMarks(Ye(w,0),Ye(A+1,0),Q(+nt));pt.length&&(ft=pt[0].find(0))&&Ne(aa(c.doc,ft.from,ft.to).join(Y));return}if(Be.getAttribute("contenteditable")=="false")return;var gt=/^(pre|div|p|li|table|br)$/i.test(Be.nodeName);if(!/^br$/i.test(Be.nodeName)&&Be.textContent.length==0)return;gt&&me();for(var dt=0;dt=9&&d.hasSelection&&(d.hasSelection=null),b.poll()}),W(A,"paste",function(z){lt(w,z)||Uy(z,w)||(w.state.pasteIncoming=+new Date,b.fastPoll())});function k(z){if(!lt(w,z)){if(w.somethingSelected())Sf({lineWise:!1,text:w.getSelections()});else if(w.options.lineWiseCopyCut){var Y=$y(w);Sf({lineWise:!0,text:Y.text}),z.type=="cut"?w.setSelections(Y.ranges,null,he):(b.prevInput="",A.value=Y.text.join(` -`),ce(A))}else return;z.type=="cut"&&(w.state.cutIncoming=+new Date)}}W(A,"cut",k),W(A,"copy",k),W(c.scroller,"paste",function(z){if(!(Pa(c,z)||lt(w,z))){if(!A.dispatchEvent){w.state.pasteIncoming=+new Date,b.focus();return}var Y=new Event("paste");Y.clipboardData=z.clipboardData,A.dispatchEvent(Y)}}),W(c.lineSpace,"selectstart",function(z){Pa(c,z)||$t(z)}),W(A,"compositionstart",function(){var z=w.getCursor("from");b.composing&&b.composing.range.clear(),b.composing={start:z,range:w.markText(z,w.getCursor("to"),{className:"CodeMirror-composing"})}}),W(A,"compositionend",function(){b.composing&&(b.poll(),b.composing.range.clear(),b.composing=null)})},mn.prototype.createField=function(c){this.wrapper=Wy(),this.textarea=this.wrapper.firstChild;var d=this.cm.options;Hg(this.textarea,d.spellcheck,d.autocorrect,d.autocapitalize)},mn.prototype.screenReaderLabelChanged=function(c){c?this.textarea.setAttribute("aria-label",c):this.textarea.removeAttribute("aria-label")},mn.prototype.prepareSelection=function(){var c=this.cm,d=c.display,b=c.doc,w=fg(c);if(c.options.moveInputWithCursor){var A=$i(c,b.sel.primary().head,"div"),k=d.wrapper.getBoundingClientRect(),z=d.lineDiv.getBoundingClientRect();w.teTop=Math.max(0,Math.min(d.wrapper.clientHeight-10,A.top+z.top-k.top)),w.teLeft=Math.max(0,Math.min(d.wrapper.clientWidth-10,A.left+z.left-k.left))}return w},mn.prototype.showSelection=function(c){var d=this.cm,b=d.display;q(b.cursorDiv,c.cursors),q(b.selectionDiv,c.selection),c.teTop!=null&&(this.wrapper.style.top=c.teTop+"px",this.wrapper.style.left=c.teLeft+"px")},mn.prototype.reset=function(c){if(!(this.contextMenuPending||this.composing&&c)){var d=this.cm;if(this.resetting=!0,d.somethingSelected()){this.prevInput="";var b=d.getSelection();this.textarea.value=b,d.state.focused&&ce(this.textarea),l&&s>=9&&(this.hasSelection=b)}else c||(this.prevInput=this.textarea.value="",l&&s>=9&&(this.hasSelection=null));this.resetting=!1}},mn.prototype.getField=function(){return this.textarea},mn.prototype.supportsTouch=function(){return!1},mn.prototype.focus=function(){if(this.cm.options.readOnly!="nocursor"&&(!C||H(ne(this.textarea))!=this.textarea))try{this.textarea.focus()}catch{}},mn.prototype.blur=function(){this.textarea.blur()},mn.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},mn.prototype.receivedFocus=function(){this.slowPoll()},mn.prototype.slowPoll=function(){var c=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){c.poll(),c.cm.state.focused&&c.slowPoll()})},mn.prototype.fastPoll=function(){var c=!1,d=this;d.pollingFast=!0;function b(){var w=d.poll();!w&&!c?(c=!0,d.polling.set(60,b)):(d.pollingFast=!1,d.slowPoll())}d.polling.set(20,b)},mn.prototype.poll=function(){var c=this,d=this.cm,b=this.textarea,w=this.prevInput;if(this.contextMenuPending||this.resetting||!d.state.focused||ia(b)&&!w&&!this.composing||d.isReadOnly()||d.options.disableInput||d.state.keySeq)return!1;var A=b.value;if(A==w&&!d.somethingSelected())return!1;if(l&&s>=9&&this.hasSelection===A||E&&/[\uf700-\uf7ff]/.test(A))return d.display.input.reset(),!1;if(d.doc.sel==d.display.selForContextMenu){var k=A.charCodeAt(0);if(k==8203&&!w&&(w="\u200B"),k==8666)return this.reset(),this.cm.execCommand("undo")}for(var z=0,Y=Math.min(w.length,A.length);z1e3||A.indexOf(` -`)>-1?b.value=c.prevInput="":c.prevInput=A,c.composing&&(c.composing.range.clear(),c.composing.range=d.markText(c.composing.start,d.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},mn.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},mn.prototype.onKeyPress=function(){l&&s>=9&&(this.hasSelection=null),this.fastPoll()},mn.prototype.onContextMenu=function(c){var d=this,b=d.cm,w=b.display,A=d.textarea;d.contextMenuPending&&d.contextMenuPending();var k=nl(b,c),z=w.scroller.scrollTop;if(!k||h)return;var Y=b.options.resetSelectionOnContextMenu;Y&&b.doc.sel.contains(k)==-1&&pn(b,pi)(b.doc,pu(k),he);var K=A.style.cssText,Q=d.wrapper.style.cssText,me=d.wrapper.offsetParent.getBoundingClientRect();d.wrapper.style.cssText="position: static",A.style.cssText=`position: absolute; width: 30px; height: 30px; - top: `+(c.clientY-me.top-5)+"px; left: "+(c.clientX-me.left-5)+`px; +`)&&(Ke=nt=Ye(Ke.line,0)));var lt={from:Ke,to:nt,text:Q?Q[qe%Q.length]:K,origin:A||(Y?"paste":c.state.cutIncoming>z?"cut":"+input")};Ef(c.doc,lt),Un(c,"inputRead",c,lt)}d&&!Y&&Wy(c,d),vf(c),c.curOp.updateInput<2&&(c.curOp.updateInput=Ne),c.curOp.typing=!0,c.state.pasteIncoming=c.state.cutIncoming=-1}function $y(c,d){var b=c.clipboardData&&c.clipboardData.getData("Text");if(b)return c.preventDefault(),!d.isReadOnly()&&!d.options.disableInput&&d.hasFocus()&&Gi(d,function(){return $g(d,b,0,null,"paste")}),!0}function Wy(c,d){if(!(!c.options.electricChars||!c.options.smartIndent))for(var b=c.doc.sel,w=b.ranges.length-1;w>=0;w--){var A=b.ranges[w];if(!(A.head.ch>100||w&&b.ranges[w-1].head.line==A.head.line)){var k=c.getModeAt(A.head),z=!1;if(k.electricChars){for(var Y=0;Y-1){z=yl(c,A.head.line,"smart");break}}else k.electricInput&&k.electricInput.test(kt(c.doc,A.head.line).text.slice(0,A.head.ch))&&(z=yl(c,A.head.line,"smart"));z&&Un(c,"electricInput",c,A.head.line)}}}function Vy(c){for(var d=[],b=[],w=0;wk&&(yl(this,Y.head.line,w,!0),k=Y.head.line,z==this.doc.sel.primIndex&&vf(this));else{var K=Y.from(),Q=Y.to(),de=Math.max(k,K.line);k=Math.min(this.lastLine(),Q.line-(Q.ch?0:1))+1;for(var Ne=de;Ne0&&dl(this.doc,z,new Fr(K,qe[z].to()),me)}}}),getTokenAt:function(w,A){return Mc(this,w,A)},getLineTokens:function(w,A){return Mc(this,Ye(w),A,!0)},getTokenTypeAt:function(w){w=St(this.doc,w);var A=_x(this,kt(this.doc,w.line)),k=0,z=(A.length-1)/2,Y=w.ch,K;if(Y==0)K=A[2];else for(;;){var Q=k+z>>1;if((Q?A[Q*2-1]:0)>=Y)z=Q;else if(A[Q*2+1]K&&(w=K,z=!0),Y=kt(this.doc,w)}else Y=w;return cf(this,Y,{top:0,left:0},A||"page",k||z).top+(z?this.doc.height-Ro(Y):0)},defaultTextHeight:function(){return ws(this.display)},defaultCharWidth:function(){return mu(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(w,A,k,z,Y){var K=this.display;w=Mi(this,St(this.doc,w));var Q=w.bottom,de=w.left;if(A.style.position="absolute",A.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(A),K.sizer.appendChild(A),z=="over")Q=w.top;else if(z=="above"||z=="near"){var Ne=Math.max(K.wrapper.clientHeight,this.doc.height),qe=Math.max(K.sizer.clientWidth,K.lineSpace.clientWidth);(z=="above"||w.bottom+A.offsetHeight>Ne)&&w.top>A.offsetHeight?Q=w.top-A.offsetHeight:w.bottom+A.offsetHeight<=Ne&&(Q=w.bottom),de+A.offsetWidth>qe&&(de=qe-A.offsetWidth)}A.style.top=Q+"px",A.style.left=A.style.right="",Y=="right"?(de=K.sizer.clientWidth-A.offsetWidth,A.style.right="0px"):(Y=="left"?de=0:Y=="middle"&&(de=(K.sizer.clientWidth-A.offsetWidth)/2),A.style.left=de+"px"),k&&Jx(this,{left:de,top:Q,right:de+A.offsetWidth,bottom:Q+A.offsetHeight})},triggerOnKeyDown:ii(Fy),triggerOnKeyPress:ii(Rg),triggerOnKeyUp:ky,triggerOnMouseDown:ii(By),execCommand:function(w){if(op.hasOwnProperty(w))return op[w].call(null,this)},triggerElectric:ii(function(w){Wy(this,w)}),findPosH:function(w,A,k,z){var Y=1;A<0&&(Y=-1,A=-A);for(var K=St(this.doc,w),Q=0;Q0&&de(k.charAt(z-1));)--z;for(;Y.5||this.options.lineWrapping)&&vg(this),tt(this,"refresh",this)}),swapDoc:ii(function(w){var A=this.doc;return A.cm=null,this.state.selectingText&&this.state.selectingText(),py(this,w),Rc(this),this.display.input.reset(),ll(this,w.scrollLeft,w.scrollTop),this.curOp.forceScroll=!0,Un(this,"swapDoc",this,A),A}),phrase:function(w){var A=this.options.phrases;return A&&Object.prototype.hasOwnProperty.call(A,w)?A[w]:w},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},jr(c),c.registerHelper=function(w,A,k){b.hasOwnProperty(w)||(b[w]=c[w]={_global:[]}),b[w][A]=k},c.registerGlobalHelper=function(w,A,k,z){c.registerHelper(w,A,z),b[w]._global.push({pred:k,val:z})}}function Vg(c,d,b,w,A){var k=d,z=b,Y=kt(c,d.line),K=A&&c.direction=="rtl"?-b:b;function Q(){var wt=d.line+K;return wt=c.first+c.size?!1:(d=new Ye(wt,d.ch,d.sticky),Y=kt(c,wt))}function de(wt){var mt;if(w=="codepoint"){var Nt=Y.text.charCodeAt(d.ch+(b>0?0:-1));if(isNaN(Nt))mt=null;else{var Wt=b>0?Nt>=55296&&Nt<56320:Nt>=56320&&Nt<57343;mt=new Ye(d.line,Math.max(0,Math.min(Y.text.length,d.ch+b*(Wt?2:1))),-b)}}else A?mt=cN(c.cm,Y,d,b):mt=zm(Y,d,b);if(mt==null)if(!wt&&Q())d=Um(A,c.cm,Y,d.line,K);else return!1;else d=mt;return!0}if(w=="char"||w=="codepoint")de();else if(w=="column")de(!0);else if(w=="word"||w=="group")for(var Ne=null,qe=w=="group",Be=c.cm&&c.cm.getHelper(d,"wordChars"),Ke=!0;!(b<0&&!de(!Ke));Ke=!1){var nt=Y.text.charAt(d.ch)||` +`,lt=Rt(nt,Be)?"w":qe&&nt==` +`?"n":!qe||/\s/.test(nt)?null:"p";if(qe&&!Ke&&!lt&&(lt="s"),Ne&&Ne!=lt){b<0&&(b=1,de(),d.sticky="after");break}if(lt&&(Ne=lt),b>0&&!de(!Ke))break}var pt=Kc(c,d,k,z,!0);return Er(k,pt)&&(pt.hitSide=!0),pt}function Yy(c,d,b,w){var A=c.doc,k=d.left,z;if(w=="page"){var Y=Math.min(c.display.wrapper.clientHeight,ve(c).innerHeight||A(c).documentElement.clientHeight),K=Math.max(Y-.5*ws(c.display),3);z=(b>0?d.bottom:d.top)+b*K}else w=="line"&&(z=b>0?d.bottom+3:d.top-3);for(var Q;Q=gg(c,k,z),!!Q.outside;){if(b<0?z<=0:z>=A.height){Q.hitSide=!0;break}z+=b*5}return Q}var Pr=function(c){this.cm=c,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new le,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};Pr.prototype.init=function(c){var d=this,b=this,w=b.cm,A=b.div=c.lineDiv;A.contentEditable=!0,Wg(A,w.options.spellcheck,w.options.autocorrect,w.options.autocapitalize);function k(Y){for(var K=Y.target;K;K=K.parentNode){if(K==A)return!0;if(/\bCodeMirror-(?:line)?widget\b/.test(K.className))break}return!1}ae(A,"paste",function(Y){!k(Y)||ft(w,Y)||$y(Y,w)||s<=11&&setTimeout(jn(w,function(){return d.updateFromDOM()}),20)}),ae(A,"compositionstart",function(Y){d.composing={data:Y.data,done:!1}}),ae(A,"compositionupdate",function(Y){d.composing||(d.composing={data:Y.data,done:!1})}),ae(A,"compositionend",function(Y){d.composing&&(Y.data!=d.composing.data&&d.readFromDOMSoon(),d.composing.done=!0)}),ae(A,"touchstart",function(){return b.forceCompositionEnd()}),ae(A,"input",function(){d.composing||d.readFromDOMSoon()});function z(Y){if(!(!k(Y)||ft(w,Y))){if(w.somethingSelected())Wm({lineWise:!1,text:w.getSelections()}),Y.type=="cut"&&w.replaceSelection("",null,"cut");else if(w.options.lineWiseCopyCut){var K=Vy(w);Wm({lineWise:!0,text:K.text}),Y.type=="cut"&&w.operation(function(){w.setSelections(K.ranges,0,me),w.replaceSelection("",null,"cut")})}else return;if(Y.clipboardData){Y.clipboardData.clearData();var Q=ma.text.join(` +`);if(Y.clipboardData.setData("Text",Q),Y.clipboardData.getData("Text")==Q){Y.preventDefault();return}}var de=Gy(),Ne=de.firstChild;Wg(Ne),w.display.lineSpace.insertBefore(de,w.display.lineSpace.firstChild),Ne.value=ma.text.join(` +`);var qe=H(oe(A));pe(Ne),setTimeout(function(){w.display.lineSpace.removeChild(de),qe.focus(),qe==A&&b.showPrimarySelection()},50)}}ae(A,"copy",z),ae(A,"cut",z)},Pr.prototype.screenReaderLabelChanged=function(c){c?this.div.setAttribute("aria-label",c):this.div.removeAttribute("aria-label")},Pr.prototype.prepareSelection=function(){var c=Mm(this.cm,!1);return c.focus=H(oe(this.div))==this.div,c},Pr.prototype.showSelection=function(c,d){!c||!this.cm.display.view.length||((c.focus||d)&&this.showPrimarySelection(),this.showMultipleSelections(c))},Pr.prototype.getSelection=function(){return this.cm.display.wrapper.ownerDocument.getSelection()},Pr.prototype.showPrimarySelection=function(){var c=this.getSelection(),d=this.cm,b=d.doc.sel.primary(),w=b.from(),A=b.to();if(d.display.viewTo==d.display.viewFrom||w.line>=d.display.viewTo||A.line=d.display.viewFrom&&Zy(d,w)||{node:Y[0].measure.map[2],offset:0},Q=A.linec.firstLine()&&(w=Ye(w.line-1,kt(c.doc,w.line-1).length)),A.ch==kt(c.doc,A.line).text.length&&A.lined.viewTo-1)return!1;var k,z,Y;w.line==d.viewFrom||(k=du(c,w.line))==0?(z=j(d.view[0].line),Y=d.view[0].node):(z=j(d.view[k].line),Y=d.view[k-1].node.nextSibling);var K=du(c,A.line),Q,de;if(K==d.view.length-1?(Q=d.viewTo-1,de=d.lineDiv.lastChild):(Q=j(d.view[K+1].line)-1,de=d.view[K+1].node.previousSibling),!Y)return!1;for(var Ne=c.doc.splitLines(EN(c,Y,de,z,Q)),qe=aa(c.doc,Ye(z,0),Ye(Q,kt(c.doc,Q).text.length));Ne.length>1&&qe.length>1;)if(Ce(Ne)==Ce(qe))Ne.pop(),qe.pop(),Q--;else if(Ne[0]==qe[0])Ne.shift(),qe.shift(),z++;else break;for(var Be=0,Ke=0,nt=Ne[0],lt=qe[0],pt=Math.min(nt.length,lt.length);Bew.ch&&wt.charCodeAt(wt.length-Ke-1)==mt.charCodeAt(mt.length-Ke-1);)Be--,Ke++;Ne[Ne.length-1]=wt.slice(0,wt.length-Ke).replace(/^\u200b+/,""),Ne[0]=Ne[0].slice(Be).replace(/\u200b+$/,"");var Wt=Ye(z,Be),zt=Ye(Q,qe.length?Ce(qe).length-Ke:0);if(Ne.length>1||Ne[0]||Ee(Wt,zt))return hl(c.doc,Ne,Wt,zt,"+input"),!0},Pr.prototype.ensurePolled=function(){this.forceCompositionEnd()},Pr.prototype.reset=function(){this.forceCompositionEnd()},Pr.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Pr.prototype.readFromDOMSoon=function(){var c=this;this.readDOMTimeout==null&&(this.readDOMTimeout=setTimeout(function(){if(c.readDOMTimeout=null,c.composing)if(c.composing.done)c.composing=null;else return;c.updateFromDOM()},80))},Pr.prototype.updateFromDOM=function(){var c=this;(this.cm.isReadOnly()||!this.pollContent())&&Gi(this.cm,function(){return pi(c.cm)})},Pr.prototype.setUneditable=function(c){c.contentEditable="false"},Pr.prototype.onKeyPress=function(c){c.charCode==0||this.composing||(c.preventDefault(),this.cm.isReadOnly()||jn(this.cm,$g)(this.cm,String.fromCharCode(c.charCode==null?c.keyCode:c.charCode),0))},Pr.prototype.readOnlyChanged=function(c){this.div.contentEditable=String(c!="nocursor")},Pr.prototype.onContextMenu=function(){},Pr.prototype.resetPosition=function(){},Pr.prototype.needsContentAttribute=!0;function Zy(c,d){var b=Nm(c,d.line);if(!b||b.hidden)return null;var w=kt(c.doc,d.line),A=zx(b,w,d.line),k=$e(w,c.doc.direction),z="left";if(k){var Y=ze(k,d.ch);z=Y%2?"right":"left"}var K=dg(A.map,d.ch,z);return K.offset=K.collapse=="right"?K.end:K.start,K}function NN(c){for(var d=c;d;d=d.parentNode)if(/CodeMirror-gutter-wrapper/.test(d.className))return!0;return!1}function Lf(c,d){return d&&(c.bad=!0),c}function EN(c,d,b,w,A){var k="",z=!1,Y=c.doc.lineSeparator(),K=!1;function Q(Be){return function(Ke){return Ke.id==Be}}function de(){z&&(k+=Y,K&&(k+=Y),z=K=!1)}function Ne(Be){Be&&(de(),k+=Be)}function qe(Be){if(Be.nodeType==1){var Ke=Be.getAttribute("cm-text");if(Ke){Ne(Ke);return}var nt=Be.getAttribute("cm-marker"),lt;if(nt){var pt=c.findMarks(Ye(w,0),Ye(A+1,0),Q(+nt));pt.length&&(lt=pt[0].find(0))&&Ne(aa(c.doc,lt.from,lt.to).join(Y));return}if(Be.getAttribute("contenteditable")=="false")return;var wt=/^(pre|div|p|li|table|br)$/i.test(Be.nodeName);if(!/^br$/i.test(Be.nodeName)&&Be.textContent.length==0)return;wt&&de();for(var mt=0;mt=9&&d.hasSelection&&(d.hasSelection=null),b.poll()}),ae(A,"paste",function(z){ft(w,z)||$y(z,w)||(w.state.pasteIncoming=+new Date,b.fastPoll())});function k(z){if(!ft(w,z)){if(w.somethingSelected())Wm({lineWise:!1,text:w.getSelections()});else if(w.options.lineWiseCopyCut){var Y=Vy(w);Wm({lineWise:!0,text:Y.text}),z.type=="cut"?w.setSelections(Y.ranges,null,me):(b.prevInput="",A.value=Y.text.join(` +`),pe(A))}else return;z.type=="cut"&&(w.state.cutIncoming=+new Date)}}ae(A,"cut",k),ae(A,"copy",k),ae(c.scroller,"paste",function(z){if(!(la(c,z)||ft(w,z))){if(!A.dispatchEvent){w.state.pasteIncoming=+new Date,b.focus();return}var Y=new Event("paste");Y.clipboardData=z.clipboardData,A.dispatchEvent(Y)}}),ae(c.lineSpace,"selectstart",function(z){la(c,z)||Ut(z)}),ae(A,"compositionstart",function(){var z=w.getCursor("from");b.composing&&b.composing.range.clear(),b.composing={start:z,range:w.markText(z,w.getCursor("to"),{className:"CodeMirror-composing"})}}),ae(A,"compositionend",function(){b.composing&&(b.poll(),b.composing.range.clear(),b.composing=null)})},Sn.prototype.createField=function(c){this.wrapper=Gy(),this.textarea=this.wrapper.firstChild;var d=this.cm.options;Wg(this.textarea,d.spellcheck,d.autocorrect,d.autocapitalize)},Sn.prototype.screenReaderLabelChanged=function(c){c?this.textarea.setAttribute("aria-label",c):this.textarea.removeAttribute("aria-label")},Sn.prototype.prepareSelection=function(){var c=this.cm,d=c.display,b=c.doc,w=Mm(c);if(c.options.moveInputWithCursor){var A=Mi(c,b.sel.primary().head,"div"),k=d.wrapper.getBoundingClientRect(),z=d.lineDiv.getBoundingClientRect();w.teTop=Math.max(0,Math.min(d.wrapper.clientHeight-10,A.top+z.top-k.top)),w.teLeft=Math.max(0,Math.min(d.wrapper.clientWidth-10,A.left+z.left-k.left))}return w},Sn.prototype.showSelection=function(c){var d=this.cm,b=d.display;q(b.cursorDiv,c.cursors),q(b.selectionDiv,c.selection),c.teTop!=null&&(this.wrapper.style.top=c.teTop+"px",this.wrapper.style.left=c.teLeft+"px")},Sn.prototype.reset=function(c){if(!(this.contextMenuPending||this.composing&&c)){var d=this.cm;if(this.resetting=!0,d.somethingSelected()){this.prevInput="";var b=d.getSelection();this.textarea.value=b,d.state.focused&&pe(this.textarea),l&&s>=9&&(this.hasSelection=b)}else c||(this.prevInput=this.textarea.value="",l&&s>=9&&(this.hasSelection=null));this.resetting=!1}},Sn.prototype.getField=function(){return this.textarea},Sn.prototype.supportsTouch=function(){return!1},Sn.prototype.focus=function(){if(this.cm.options.readOnly!="nocursor"&&(!C||H(oe(this.textarea))!=this.textarea))try{this.textarea.focus()}catch{}},Sn.prototype.blur=function(){this.textarea.blur()},Sn.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},Sn.prototype.receivedFocus=function(){this.slowPoll()},Sn.prototype.slowPoll=function(){var c=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){c.poll(),c.cm.state.focused&&c.slowPoll()})},Sn.prototype.fastPoll=function(){var c=!1,d=this;d.pollingFast=!0;function b(){var w=d.poll();!w&&!c?(c=!0,d.polling.set(60,b)):(d.pollingFast=!1,d.slowPoll())}d.polling.set(20,b)},Sn.prototype.poll=function(){var c=this,d=this.cm,b=this.textarea,w=this.prevInput;if(this.contextMenuPending||this.resetting||!d.state.focused||ia(b)&&!w&&!this.composing||d.isReadOnly()||d.options.disableInput||d.state.keySeq)return!1;var A=b.value;if(A==w&&!d.somethingSelected())return!1;if(l&&s>=9&&this.hasSelection===A||E&&/[\uf700-\uf7ff]/.test(A))return d.display.input.reset(),!1;if(d.doc.sel==d.display.selForContextMenu){var k=A.charCodeAt(0);if(k==8203&&!w&&(w="\u200B"),k==8666)return this.reset(),this.cm.execCommand("undo")}for(var z=0,Y=Math.min(w.length,A.length);z1e3||A.indexOf(` +`)>-1?b.value=c.prevInput="":c.prevInput=A,c.composing&&(c.composing.range.clear(),c.composing.range=d.markText(c.composing.start,d.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},Sn.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},Sn.prototype.onKeyPress=function(){l&&s>=9&&(this.hasSelection=null),this.fastPoll()},Sn.prototype.onContextMenu=function(c){var d=this,b=d.cm,w=b.display,A=d.textarea;d.contextMenuPending&&d.contextMenuPending();var k=sl(b,c),z=w.scroller.scrollTop;if(!k||h)return;var Y=b.options.resetSelectionOnContextMenu;Y&&b.doc.sel.contains(k)==-1&&jn(b,mi)(b.doc,xu(k),me);var K=A.style.cssText,Q=d.wrapper.style.cssText,de=d.wrapper.offsetParent.getBoundingClientRect();d.wrapper.style.cssText="position: static",A.style.cssText=`position: absolute; width: 30px; height: 30px; + top: `+(c.clientY-de.top-5)+"px; left: "+(c.clientX-de.left-5)+`px; z-index: 1000; background: `+(l?"rgba(255, 255, 255, .05)":"transparent")+`; - outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);`;var Ne;a&&(Ne=A.ownerDocument.defaultView.scrollY),w.input.focus(),a&&A.ownerDocument.defaultView.scrollTo(null,Ne),w.input.reset(),b.somethingSelected()||(A.value=d.prevInput=" "),d.contextMenuPending=Be,w.selForContextMenu=b.doc.sel,clearTimeout(w.detectingSelectAll);function qe(){if(A.selectionStart!=null){var nt=b.somethingSelected(),ft="\u200B"+(nt?A.value:"");A.value="\u21DA",A.value=ft,d.prevInput=nt?"":"\u200B",A.selectionStart=1,A.selectionEnd=ft.length,w.selForContextMenu=b.doc.sel}}function Be(){if(d.contextMenuPending==Be&&(d.contextMenuPending=!1,d.wrapper.style.cssText=Q,A.style.cssText=K,l&&s<9&&w.scrollbars.setScrollTop(w.scroller.scrollTop=z),A.selectionStart!=null)){(!l||l&&s<9)&&qe();var nt=0,ft=function(){w.selForContextMenu==b.doc.sel&&A.selectionStart==0&&A.selectionEnd>0&&d.prevInput=="\u200B"?pn(b,$c)(b):nt++<10?w.detectingSelectAll=setTimeout(ft,500):(w.selForContextMenu=null,w.input.reset())};w.detectingSelectAll=setTimeout(ft,200)}}if(l&&s>=9&&qe(),F){Qi(c);var Ke=function(){Le(window,"mouseup",Ke),setTimeout(Be,20)};W(window,"mouseup",Ke)}else setTimeout(Be,50)},mn.prototype.readOnlyChanged=function(c){c||this.reset(),this.textarea.disabled=c=="nocursor",this.textarea.readOnly=!!c},mn.prototype.setUneditable=function(){},mn.prototype.needsContentAttribute=!1;function bN(c,d){if(d=d?De(d):{},d.value=c.value,!d.tabindex&&c.tabIndex&&(d.tabindex=c.tabIndex),!d.placeholder&&c.placeholder&&(d.placeholder=c.placeholder),d.autofocus==null){var b=H(ne(c));d.autofocus=b==c||c.getAttribute("autofocus")!=null&&b==document.body}function w(){c.value=Y.getValue()}var A;if(c.form&&(W(c.form,"submit",w),!d.leaveSubmitMethodAlone)){var k=c.form;A=k.submit;try{var z=k.submit=function(){w(),k.submit=A,k.submit(),k.submit=z}}catch{}}d.finishInit=function(K){K.save=w,K.getTextArea=function(){return c},K.toTextArea=function(){K.toTextArea=isNaN,w(),c.parentNode.removeChild(K.getWrapperElement()),c.style.display="",c.form&&(Le(c.form,"submit",w),!d.leaveSubmitMethodAlone&&typeof c.form.submit=="function"&&(c.form.submit=A))}},c.style.display="none";var Y=rn(function(K){return c.parentNode.insertBefore(K,c.nextSibling)},d);return Y}function DN(c){c.off=Le,c.on=W,c.wheelEventPixels=YS,c.Doc=Mi,c.splitLines=ti,c.countColumn=se,c.findColumn=ie,c.isWordChar=At,c.Pass=Ce,c.signal=He,c.Line=tf,c.changeEnd=Ns,c.scrollbarModel=jx,c.Pos=Ye,c.cmpPos=Ee,c.modes=iu,c.mimeModes=ji,c.resolveMode=ou,c.getMode=Ba,c.modeExtensions=Yt,c.extendMode=qi,c.copyState=Er,c.startState=bo,c.innerMode=It,c.commands=Jc,c.keyMap=Cs,c.keyName=Ny,c.isModifierKey=Dy,c.lookupKey=yf,c.normalizeKeyMap=by,c.StringStream=Yr,c.SharedTextMarker=gf,c.TextMarker=Ho,c.LineWidget=df,c.e_preventDefault=$t,c.e_stopPropagation=li,c.e_stop=Qi,c.addClass=ee,c.contains=U,c.rmClass=B,c.keyNames=As}Ry(rn),vN(rn);var SN="iter insert remove copy getEditor constructor".split(" ");for(var zm in Mi.prototype)Mi.prototype.hasOwnProperty(zm)&&oe(SN,zm)<0&&(rn.prototype[zm]=function(c){return function(){return c.apply(this.doc,arguments)}}(Mi.prototype[zm]));return $r(Mi),rn.inputStyles={textarea:mn,contenteditable:Lr},rn.defineMode=function(c){!rn.defaults.mode&&c!="null"&&(rn.defaults.mode=c),eo.apply(this,arguments)},rn.defineMIME=oa,rn.defineMode("null",function(){return{token:function(c){return c.skipToEnd()}}}),rn.defineMIME("text/plain","null"),rn.defineExtension=function(c,d){rn.prototype[c]=d},rn.defineDocExtension=function(c,d){Mi.prototype[c]=d},rn.fromTextArea=bN,DN(rn),rn.version="5.65.18",rn})});var H$=st((z$,U$)=>{(function(e){typeof z$=="object"&&typeof U$=="object"?e($s()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){"use strict";e.defineMode("javascript",function(t,r){var n=t.indentUnit,i=r.statementIndent,o=r.jsonld,l=r.json||o,s=r.trackScope!==!1,a=r.typescript,u=r.wordCharacters||/[\w$\xa1-\uffff]/,f=function(){function j(Tn){return{type:Tn,style:"keyword"}}var ye=j("keyword a"),Xe=j("keyword b"),ot=j("keyword c"),Ye=j("keyword d"),Ee=j("operator"),Sr={type:"atom",style:"atom"};return{if:j("if"),while:ye,with:ye,else:Xe,do:Xe,try:Xe,finally:Xe,return:Ye,break:Ye,continue:Ye,new:j("new"),delete:ot,void:ot,throw:ot,debugger:j("debugger"),var:j("var"),const:j("var"),let:j("var"),function:j("function"),catch:j("catch"),for:j("for"),switch:j("switch"),case:j("case"),default:j("default"),in:Ee,typeof:Ee,instanceof:Ee,true:Sr,false:Sr,null:Sr,undefined:Sr,NaN:Sr,Infinity:Sr,this:j("this"),class:j("class"),super:j("atom"),yield:ot,export:j("export"),import:j("import"),extends:ot,await:ot}}(),p=/[+\-*&%=<>!?|~^@]/,h=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function g(j){for(var ye=!1,Xe,ot=!1;(Xe=j.next())!=null;){if(!ye){if(Xe=="/"&&!ot)return;Xe=="["?ot=!0:ot&&Xe=="]"&&(ot=!1)}ye=!ye&&Xe=="\\"}}var x,v;function S(j,ye,Xe){return x=j,v=Xe,ye}function D(j,ye){var Xe=j.next();if(Xe=='"'||Xe=="'")return ye.tokenize=C(Xe),ye.tokenize(j,ye);if(Xe=="."&&j.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return S("number","number");if(Xe=="."&&j.match(".."))return S("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(Xe))return S(Xe);if(Xe=="="&&j.eat(">"))return S("=>","operator");if(Xe=="0"&&j.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return S("number","number");if(/\d/.test(Xe))return j.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),S("number","number");if(Xe=="/")return j.eat("*")?(ye.tokenize=E,E(j,ye)):j.eat("/")?(j.skipToEnd(),S("comment","comment")):Rn(j,ye,1)?(g(j),j.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),S("regexp","string-2")):(j.eat("="),S("operator","operator",j.current()));if(Xe=="`")return ye.tokenize=M,M(j,ye);if(Xe=="#"&&j.peek()=="!")return j.skipToEnd(),S("meta","meta");if(Xe=="#"&&j.eatWhile(u))return S("variable","property");if(Xe=="<"&&j.match("!--")||Xe=="-"&&j.match("->")&&!/\S/.test(j.string.slice(0,j.start)))return j.skipToEnd(),S("comment","comment");if(p.test(Xe))return(Xe!=">"||!ye.lexical||ye.lexical.type!=">")&&(j.eat("=")?(Xe=="!"||Xe=="=")&&j.eat("="):/[<>*+\-|&?]/.test(Xe)&&(j.eat(Xe),Xe==">"&&j.eat(Xe))),Xe=="?"&&j.eat(".")?S("."):S("operator","operator",j.current());if(u.test(Xe)){j.eatWhile(u);var ot=j.current();if(ye.lastType!="."){if(f.propertyIsEnumerable(ot)){var Ye=f[ot];return S(Ye.type,Ye.style,ot)}if(ot=="async"&&j.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return S("async","keyword",ot)}return S("variable","variable",ot)}}function C(j){return function(ye,Xe){var ot=!1,Ye;if(o&&ye.peek()=="@"&&ye.match(h))return Xe.tokenize=D,S("jsonld-keyword","meta");for(;(Ye=ye.next())!=null&&!(Ye==j&&!ot);)ot=!ot&&Ye=="\\";return ot||(Xe.tokenize=D),S("string","string")}}function E(j,ye){for(var Xe=!1,ot;ot=j.next();){if(ot=="/"&&Xe){ye.tokenize=D;break}Xe=ot=="*"}return S("comment","comment")}function M(j,ye){for(var Xe=!1,ot;(ot=j.next())!=null;){if(!Xe&&(ot=="`"||ot=="$"&&j.eat("{"))){ye.tokenize=D;break}Xe=!Xe&&ot=="\\"}return S("quasi","string-2",j.current())}var T="([{}])";function N(j,ye){ye.fatArrowAt&&(ye.fatArrowAt=null);var Xe=j.string.indexOf("=>",j.start);if(!(Xe<0)){if(a){var ot=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(j.string.slice(j.start,Xe));ot&&(Xe=ot.index)}for(var Ye=0,Ee=!1,Sr=Xe-1;Sr>=0;--Sr){var Tn=j.string.charAt(Sr),fi=T.indexOf(Tn);if(fi>=0&&fi<3){if(!Ye){++Sr;break}if(--Ye==0){Tn=="("&&(Ee=!0);break}}else if(fi>=3&&fi<6)++Ye;else if(u.test(Tn))Ee=!0;else if(/["'\/`]/.test(Tn))for(;;--Sr){if(Sr==0)return;var au=j.string.charAt(Sr-1);if(au==Tn&&j.string.charAt(Sr-2)!="\\"){Sr--;break}}else if(Ee&&!Ye){++Sr;break}}Ee&&!Ye&&(ye.fatArrowAt=Sr)}}var O={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function F(j,ye,Xe,ot,Ye,Ee){this.indented=j,this.column=ye,this.type=Xe,this.prev=Ye,this.info=Ee,ot!=null&&(this.align=ot)}function I(j,ye){if(!s)return!1;for(var Xe=j.localVars;Xe;Xe=Xe.next)if(Xe.name==ye)return!0;for(var ot=j.context;ot;ot=ot.prev)for(var Xe=ot.vars;Xe;Xe=Xe.next)if(Xe.name==ye)return!0}function B(j,ye,Xe,ot,Ye){var Ee=j.cc;for(L.state=j,L.stream=Ye,L.marked=null,L.cc=Ee,L.style=ye,j.lexical.hasOwnProperty("align")||(j.lexical.align=!0);;){var Sr=Ee.length?Ee.pop():l?oe:se;if(Sr(Xe,ot)){for(;Ee.length&&Ee[Ee.length-1].lex;)Ee.pop()();return L.marked?L.marked:Xe=="variable"&&I(j,ot)?"variable-2":ye}}}var L={state:null,column:null,marked:null,cc:null};function q(){for(var j=arguments.length-1;j>=0;j--)L.cc.push(arguments[j])}function R(){return q.apply(null,arguments),!0}function V(j,ye){for(var Xe=ye;Xe;Xe=Xe.next)if(Xe.name==j)return!0;return!1}function X(j){var ye=L.state;if(L.marked="def",!!s){if(ye.context){if(ye.lexical.info=="var"&&ye.context&&ye.context.block){var Xe=U(j,ye.context);if(Xe!=null){ye.context=Xe;return}}else if(!V(j,ye.localVars)){ye.localVars=new Z(j,ye.localVars);return}}r.globalVars&&!V(j,ye.globalVars)&&(ye.globalVars=new Z(j,ye.globalVars))}}function U(j,ye){if(ye)if(ye.block){var Xe=U(j,ye.prev);return Xe?Xe==ye.prev?ye:new ee(Xe,ye.vars,!0):null}else return V(j,ye.vars)?ye:new ee(ye.prev,new Z(j,ye.vars),!1);else return null}function H(j){return j=="public"||j=="private"||j=="protected"||j=="abstract"||j=="readonly"}function ee(j,ye,Xe){this.prev=j,this.vars=ye,this.block=Xe}function Z(j,ye){this.name=j,this.next=ye}var ce=new Z("this",new Z("arguments",null));function be(){L.state.context=new ee(L.state.context,L.state.localVars,!1),L.state.localVars=ce}function de(){L.state.context=new ee(L.state.context,L.state.localVars,!0),L.state.localVars=null}be.lex=de.lex=!0;function ne(){L.state.localVars=L.state.context.vars,L.state.context=L.state.context.prev}ne.lex=!0;function ve(j,ye){var Xe=function(){var ot=L.state,Ye=ot.indented;if(ot.lexical.type=="stat")Ye=ot.lexical.indented;else for(var Ee=ot.lexical;Ee&&Ee.type==")"&&Ee.align;Ee=Ee.prev)Ye=Ee.indented;ot.lexical=new F(Ye,L.stream.column(),j,null,ot.lexical,ye)};return Xe.lex=!0,Xe}function Te(){var j=L.state;j.lexical.prev&&(j.lexical.type==")"&&(j.indented=j.lexical.indented),j.lexical=j.lexical.prev)}Te.lex=!0;function De(j){function ye(Xe){return Xe==j?R():j==";"||Xe=="}"||Xe==")"||Xe=="]"?q():R(ye)}return ye}function se(j,ye){return j=="var"?R(ve("vardef",ye),li,De(";"),Te):j=="keyword a"?R(ve("form"),Ce,se,Te):j=="keyword b"?R(ve("form"),se,Te):j=="keyword d"?L.stream.match(/^\s*$/,!1)?R():R(ve("stat"),Pe,De(";"),Te):j=="debugger"?R(De(";")):j=="{"?R(ve("}"),de,te,Te,ne):j==";"?R():j=="if"?(L.state.lexical.info=="else"&&L.state.cc[L.state.cc.length-1]==Te&&L.state.cc.pop()(),R(ve("form"),Ce,se,Te,La)):j=="function"?R(ti):j=="for"?R(ve("form"),de,Pn,se,ne,Te):j=="class"||a&&ye=="interface"?(L.marked="keyword",R(ve("form",j=="class"?j:ye),iu,Te)):j=="variable"?a&&ye=="declare"?(L.marked="keyword",R(se)):a&&(ye=="module"||ye=="enum"||ye=="type")&&L.stream.match(/^\s*\w/,!1)?(L.marked="keyword",ye=="enum"?R(kt):ye=="type"?R(Jl,De("operator"),ze,De(";")):R(ve("form"),Kt,De("{"),ve("}"),te,Te,Te)):a&&ye=="namespace"?(L.marked="keyword",R(ve("form"),oe,se,Te)):a&&ye=="abstract"?(L.marked="keyword",R(se)):R(ve("stat"),rt):j=="switch"?R(ve("form"),Ce,De("{"),ve("}","switch"),de,te,Te,Te,ne):j=="case"?R(oe,De(":")):j=="default"?R(De(":")):j=="catch"?R(ve("form"),be,le,se,Te,ne):j=="export"?R(ve("stat"),ou,Te):j=="import"?R(ve("stat"),Yt,Te):j=="async"?R(se):ye=="@"?R(oe,se):q(ve("stat"),oe,De(";"),Te)}function le(j){if(j=="(")return R(wo,De(")"))}function oe(j,ye){return he(j,ye,!1)}function we(j,ye){return he(j,ye,!0)}function Ce(j){return j!="("?q():R(ve(")"),Pe,De(")"),Te)}function he(j,ye,Xe){if(L.state.fatArrowAt==L.stream.start){var ot=Xe?Je:Me;if(j=="(")return R(be,ve(")"),qt(wo,")"),Te,De("=>"),ot,ne);if(j=="variable")return q(be,Kt,De("=>"),ot,ne)}var Ye=Xe?ie:Ze;return O.hasOwnProperty(j)?R(Ye):j=="function"?R(ti,Ye):j=="class"||a&&ye=="interface"?(L.marked="keyword",R(ve("form"),Ql,Te)):j=="keyword c"||j=="async"?R(Xe?we:oe):j=="("?R(ve(")"),Pe,De(")"),Te,Ye):j=="operator"||j=="spread"?R(Xe?we:oe):j=="["?R(ve("]"),Yr,Te,Ye):j=="{"?xe(zt,"}",null,Ye):j=="quasi"?q(fe,Ye):j=="new"?R($e(Xe)):R()}function Pe(j){return j.match(/[;\}\)\],]/)?q():q(oe)}function Ze(j,ye){return j==","?R(Pe):ie(j,ye,!1)}function ie(j,ye,Xe){var ot=Xe==!1?Ze:ie,Ye=Xe==!1?oe:we;if(j=="=>")return R(be,Xe?Je:Me,ne);if(j=="operator")return/\+\+|--/.test(ye)||a&&ye=="!"?R(ot):a&&ye=="<"&&L.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?R(ve(">"),qt(ze,">"),Te,ot):ye=="?"?R(oe,De(":"),Ye):R(Ye);if(j=="quasi")return q(fe,ot);if(j!=";"){if(j=="(")return xe(we,")","call",ot);if(j==".")return R(At,ot);if(j=="[")return R(ve("]"),Pe,De("]"),Te,ot);if(a&&ye=="as")return L.marked="keyword",R(ze,ot);if(j=="regexp")return L.state.lastType=L.marked="operator",L.stream.backUp(L.stream.pos-L.stream.start-1),R(Ye)}}function fe(j,ye){return j!="quasi"?q():ye.slice(ye.length-2)!="${"?R(fe):R(Pe,Oe)}function Oe(j){if(j=="}")return L.marked="string-2",L.state.tokenize=M,R(fe)}function Me(j){return N(L.stream,L.state),q(j=="{"?se:oe)}function Je(j){return N(L.stream,L.state),q(j=="{"?se:we)}function $e(j){return function(ye){return ye=="."?R(j?ct:it):ye=="variable"&&a?R(nr,j?ie:Ze):q(j?we:oe)}}function it(j,ye){if(ye=="target")return L.marked="keyword",R(Ze)}function ct(j,ye){if(ye=="target")return L.marked="keyword",R(ie)}function rt(j){return j==":"?R(Te,se):q(Ze,De(";"),Te)}function At(j){if(j=="variable")return L.marked="property",R()}function zt(j,ye){if(j=="async")return L.marked="property",R(zt);if(j=="variable"||L.style=="keyword"){if(L.marked="property",ye=="get"||ye=="set")return R(mt);var Xe;return a&&L.state.fatArrowAt==L.stream.start&&(Xe=L.stream.match(/^\s*:\s*/,!1))&&(L.state.fatArrowAt=L.stream.pos+Xe[0].length),R(fr)}else{if(j=="number"||j=="string")return L.marked=o?"property":L.style+" property",R(fr);if(j=="jsonld-keyword")return R(fr);if(a&&H(ye))return L.marked="keyword",R(zt);if(j=="[")return R(oe,ge,De("]"),fr);if(j=="spread")return R(we,fr);if(ye=="*")return L.marked="keyword",R(zt);if(j==":")return q(fr)}}function mt(j){return j!="variable"?q(fr):(L.marked="property",R(ti))}function fr(j){if(j==":")return R(we);if(j=="(")return q(ti)}function qt(j,ye,Xe){function ot(Ye,Ee){if(Xe?Xe.indexOf(Ye)>-1:Ye==","){var Sr=L.state.lexical;return Sr.info=="call"&&(Sr.pos=(Sr.pos||0)+1),R(function(Tn,fi){return Tn==ye||fi==ye?q():q(j)},ot)}return Ye==ye||Ee==ye?R():Xe&&Xe.indexOf(";")>-1?q(j):R(De(ye))}return function(Ye,Ee){return Ye==ye||Ee==ye?R():q(j,ot)}}function xe(j,ye,Xe){for(var ot=3;ot"),ze);if(j=="quasi")return q(Le,Tt)}function je(j){if(j=="=>")return R(ze)}function W(j){return j.match(/[\}\)\]]/)?R():j==","||j==";"?R(W):q(ae,W)}function ae(j,ye){if(j=="variable"||L.style=="keyword")return L.marked="property",R(ae);if(ye=="?"||j=="number"||j=="string")return R(ae);if(j==":")return R(ze);if(j=="[")return R(De("variable"),_e,De("]"),ae);if(j=="(")return q(ia,ae);if(!j.match(/[;\}\)\],]/))return R()}function Le(j,ye){return j!="quasi"?q():ye.slice(ye.length-2)!="${"?R(Le):R(ze,He)}function He(j){if(j=="}")return L.marked="string-2",L.state.tokenize=M,R(Le)}function lt(j,ye){return j=="variable"&&L.stream.match(/^\s*[?:]/,!1)||ye=="?"?R(lt):j==":"?R(ze):j=="spread"?R(lt):q(ze)}function Tt(j,ye){if(ye=="<")return R(ve(">"),qt(ze,">"),Te,Tt);if(ye=="|"||j=="."||ye=="&")return R(ze);if(j=="[")return R(ze,De("]"),Tt);if(ye=="extends"||ye=="implements")return L.marked="keyword",R(ze);if(ye=="?")return R(ze,De(":"),ze)}function nr(j,ye){if(ye=="<")return R(ve(">"),qt(ze,">"),Te,Tt)}function $r(){return q(ze,$t)}function $t(j,ye){if(ye=="=")return R(ze)}function li(j,ye){return ye=="enum"?(L.marked="keyword",R(kt)):q(Kt,ge,Mn,ka)}function Kt(j,ye){if(a&&H(ye))return L.marked="keyword",R(Kt);if(j=="variable")return X(ye),R();if(j=="spread")return R(Kt);if(j=="[")return xe(wr,"]");if(j=="{")return xe(Qi,"}")}function Qi(j,ye){return j=="variable"&&!L.stream.match(/^\s*:/,!1)?(X(ye),R(Mn)):(j=="variable"&&(L.marked="property"),j=="spread"?R(Kt):j=="}"?q():j=="["?R(oe,De("]"),De(":"),Qi):R(De(":"),Kt,Mn))}function wr(){return q(Kt,Mn)}function Mn(j,ye){if(ye=="=")return R(we)}function ka(j){if(j==",")return R(li)}function La(j,ye){if(j=="keyword b"&&ye=="else")return R(ve("form","else"),se,Te)}function Pn(j,ye){if(ye=="await")return R(Pn);if(j=="(")return R(ve(")"),na,Te)}function na(j){return j=="var"?R(li,Bo):j=="variable"?R(Bo):q(Bo)}function Bo(j,ye){return j==")"?R():j==";"?R(Bo):ye=="in"||ye=="of"?(L.marked="keyword",R(oe,Bo)):q(oe,Bo)}function ti(j,ye){if(ye=="*")return L.marked="keyword",R(ti);if(j=="variable")return X(ye),R(ti);if(j=="(")return R(be,ve(")"),qt(wo,")"),Te,Re,se,ne);if(a&&ye=="<")return R(ve(">"),qt($r,">"),Te,ti)}function ia(j,ye){if(ye=="*")return L.marked="keyword",R(ia);if(j=="variable")return X(ye),R(ia);if(j=="(")return R(be,ve(")"),qt(wo,")"),Te,Re,ne);if(a&&ye=="<")return R(ve(">"),qt($r,">"),Te,ia)}function Jl(j,ye){if(j=="keyword"||j=="variable")return L.marked="type",R(Jl);if(ye=="<")return R(ve(">"),qt($r,">"),Te)}function wo(j,ye){return ye=="@"&&R(oe,wo),j=="spread"?R(wo):a&&H(ye)?(L.marked="keyword",R(wo)):a&&j=="this"?R(ge,Mn):q(Kt,ge,Mn)}function Ql(j,ye){return j=="variable"?iu(j,ye):ji(j,ye)}function iu(j,ye){if(j=="variable")return X(ye),R(ji)}function ji(j,ye){if(ye=="<")return R(ve(">"),qt($r,">"),Te,ji);if(ye=="extends"||ye=="implements"||a&&j==",")return ye=="implements"&&(L.marked="keyword"),R(a?ze:oe,ji);if(j=="{")return R(ve("}"),eo,Te)}function eo(j,ye){if(j=="async"||j=="variable"&&(ye=="static"||ye=="get"||ye=="set"||a&&H(ye))&&L.stream.match(/^\s+#?[\w$\xa1-\uffff]/,!1))return L.marked="keyword",R(eo);if(j=="variable"||L.style=="keyword")return L.marked="property",R(oa,eo);if(j=="number"||j=="string")return R(oa,eo);if(j=="[")return R(oe,ge,De("]"),oa,eo);if(ye=="*")return L.marked="keyword",R(eo);if(a&&j=="(")return q(ia,eo);if(j==";"||j==",")return R(eo);if(j=="}")return R();if(ye=="@")return R(oe,eo)}function oa(j,ye){if(ye=="!"||ye=="?")return R(oa);if(j==":")return R(ze,Mn);if(ye=="=")return R(we);var Xe=L.state.lexical.prev,ot=Xe&&Xe.info=="interface";return q(ot?ia:ti)}function ou(j,ye){return ye=="*"?(L.marked="keyword",R(bo,De(";"))):ye=="default"?(L.marked="keyword",R(oe,De(";"))):j=="{"?R(qt(Ba,"}"),bo,De(";")):q(se)}function Ba(j,ye){if(ye=="as")return L.marked="keyword",R(De("variable"));if(j=="variable")return q(we,Ba)}function Yt(j){return j=="string"?R():j=="("?q(oe):j=="."?q(Ze):q(qi,Er,bo)}function qi(j,ye){return j=="{"?xe(qi,"}"):(j=="variable"&&X(ye),ye=="*"&&(L.marked="keyword"),R(It))}function Er(j){if(j==",")return R(qi,Er)}function It(j,ye){if(ye=="as")return L.marked="keyword",R(qi)}function bo(j,ye){if(ye=="from")return L.marked="keyword",R(oe)}function Yr(j){return j=="]"?R():q(qt(we,"]"))}function kt(){return q(ve("form"),Kt,De("{"),ve("}"),qt(aa,"}"),Te,Te)}function aa(){return q(Kt,Mn)}function Gu(j,ye){return j.lastType=="operator"||j.lastType==","||p.test(ye.charAt(0))||/[,.]/.test(ye.charAt(0))}function Rn(j,ye,Xe){return ye.tokenize==D&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(ye.lastType)||ye.lastType=="quasi"&&/\{\s*$/.test(j.string.slice(0,j.pos-(Xe||0)))}return{startState:function(j){var ye={tokenize:D,lastType:"sof",cc:[],lexical:new F((j||0)-n,0,"block",!1),localVars:r.localVars,context:r.localVars&&new ee(null,null,!1),indented:j||0};return r.globalVars&&typeof r.globalVars=="object"&&(ye.globalVars=r.globalVars),ye},token:function(j,ye){if(j.sol()&&(ye.lexical.hasOwnProperty("align")||(ye.lexical.align=!1),ye.indented=j.indentation(),N(j,ye)),ye.tokenize!=E&&j.eatSpace())return null;var Xe=ye.tokenize(j,ye);return x=="comment"?Xe:(ye.lastType=x=="operator"&&(v=="++"||v=="--")?"incdec":x,B(ye,Xe,x,v,j))},indent:function(j,ye){if(j.tokenize==E||j.tokenize==M)return e.Pass;if(j.tokenize!=D)return 0;var Xe=ye&&ye.charAt(0),ot=j.lexical,Ye;if(!/^\s*else\b/.test(ye))for(var Ee=j.cc.length-1;Ee>=0;--Ee){var Sr=j.cc[Ee];if(Sr==Te)ot=ot.prev;else if(Sr!=La&&Sr!=ne)break}for(;(ot.type=="stat"||ot.type=="form")&&(Xe=="}"||(Ye=j.cc[j.cc.length-1])&&(Ye==Ze||Ye==ie)&&!/^[,\.=+\-*:?[\(]/.test(ye));)ot=ot.prev;i&&ot.type==")"&&ot.prev.type=="stat"&&(ot=ot.prev);var Tn=ot.type,fi=Xe==Tn;return Tn=="vardef"?ot.indented+(j.lastType=="operator"||j.lastType==","?ot.info.length+1:0):Tn=="form"&&Xe=="{"?ot.indented:Tn=="form"?ot.indented+n:Tn=="stat"?ot.indented+(Gu(j,ye)?i||n:0):ot.info=="switch"&&!fi&&r.doubleIndentSwitch!=!1?ot.indented+(/^(?:case|default)\b/.test(ye)?n:2*n):ot.align?ot.column+(fi?0:1):ot.indented+(fi?0:n)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:l?null:"/*",blockCommentEnd:l?null:"*/",blockCommentContinue:l?null:" * ",lineComment:l?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:l?"json":"javascript",jsonldMode:o,jsonMode:l,expressionAllowed:Rn,skipExpression:function(j){B(j,"atom","atom","true",new e.StringStream("",2,null))}}}),e.registerHelper("wordChars","javascript",/[\w$]/),e.defineMIME("text/javascript","javascript"),e.defineMIME("text/ecmascript","javascript"),e.defineMIME("application/javascript","javascript"),e.defineMIME("application/x-javascript","javascript"),e.defineMIME("application/ecmascript","javascript"),e.defineMIME("application/json",{name:"javascript",json:!0}),e.defineMIME("application/x-json",{name:"javascript",json:!0}),e.defineMIME("application/manifest+json",{name:"javascript",json:!0}),e.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),e.defineMIME("text/typescript",{name:"javascript",typescript:!0}),e.defineMIME("application/typescript",{name:"javascript",typescript:!0})})});var Ub=st(($$,W$)=>{(function(e){typeof $$=="object"&&typeof W$=="object"?e($s()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){function t(n,i,o){var l=n.getWrapperElement(),s;return s=l.appendChild(document.createElement("div")),o?s.className="CodeMirror-dialog CodeMirror-dialog-bottom":s.className="CodeMirror-dialog CodeMirror-dialog-top",typeof i=="string"?s.innerHTML=i:s.appendChild(i),e.addClass(l,"dialog-opened"),s}function r(n,i){n.state.currentNotificationClose&&n.state.currentNotificationClose(),n.state.currentNotificationClose=i}e.defineExtension("openDialog",function(n,i,o){o||(o={}),r(this,null);var l=t(this,n,o.bottom),s=!1,a=this;function u(h){if(typeof h=="string")f.value=h;else{if(s)return;s=!0,e.rmClass(l.parentNode,"dialog-opened"),l.parentNode.removeChild(l),a.focus(),o.onClose&&o.onClose(l)}}var f=l.getElementsByTagName("input")[0],p;return f?(f.focus(),o.value&&(f.value=o.value,o.selectValueOnOpen!==!1&&f.select()),o.onInput&&e.on(f,"input",function(h){o.onInput(h,f.value,u)}),o.onKeyUp&&e.on(f,"keyup",function(h){o.onKeyUp(h,f.value,u)}),e.on(f,"keydown",function(h){o&&o.onKeyDown&&o.onKeyDown(h,f.value,u)||((h.keyCode==27||o.closeOnEnter!==!1&&h.keyCode==13)&&(f.blur(),e.e_stop(h),u()),h.keyCode==13&&i(f.value,h))}),o.closeOnBlur!==!1&&e.on(l,"focusout",function(h){h.relatedTarget!==null&&u()})):(p=l.getElementsByTagName("button")[0])&&(e.on(p,"click",function(){u(),a.focus()}),o.closeOnBlur!==!1&&e.on(p,"blur",u),p.focus()),u}),e.defineExtension("openConfirm",function(n,i,o){r(this,null);var l=t(this,n,o&&o.bottom),s=l.getElementsByTagName("button"),a=!1,u=this,f=1;function p(){a||(a=!0,e.rmClass(l.parentNode,"dialog-opened"),l.parentNode.removeChild(l),u.focus())}s[0].focus();for(var h=0;h{(function(e){typeof V$=="object"&&typeof G$=="object"?e($s()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){e.defineOption("placeholder","",function(s,a,u){var f=u&&u!=e.Init;if(a&&!f)s.on("blur",i),s.on("change",o),s.on("swapDoc",o),e.on(s.getInputField(),"compositionupdate",s.state.placeholderCompose=function(){n(s)}),o(s);else if(!a&&f){s.off("blur",i),s.off("change",o),s.off("swapDoc",o),e.off(s.getInputField(),"compositionupdate",s.state.placeholderCompose),t(s);var p=s.getWrapperElement();p.className=p.className.replace(" CodeMirror-empty","")}a&&!s.hasFocus()&&i(s)});function t(s){s.state.placeholder&&(s.state.placeholder.parentNode.removeChild(s.state.placeholder),s.state.placeholder=null)}function r(s){t(s);var a=s.state.placeholder=document.createElement("pre");a.style.cssText="height: 0; overflow: visible",a.style.direction=s.getOption("direction"),a.className="CodeMirror-placeholder CodeMirror-line-like";var u=s.getOption("placeholder");typeof u=="string"&&(u=document.createTextNode(u)),a.appendChild(u),s.display.lineSpace.insertBefore(a,s.display.lineSpace.firstChild)}function n(s){setTimeout(function(){var a=!1;if(s.lineCount()==1){var u=s.getInputField();a=u.nodeName=="TEXTAREA"?!s.getLine(0).length:!/[^\u200b]/.test(u.querySelector(".CodeMirror-line").textContent)}a?r(s):t(s)},20)}function i(s){l(s)&&r(s)}function o(s){var a=s.getWrapperElement(),u=l(s);a.className=a.className.replace(" CodeMirror-empty","")+(u?" CodeMirror-empty":""),u?r(s):t(s)}function l(s){return s.lineCount()===1&&s.getLine(0)===""}})});var K$=st((Z$,X$)=>{(function(e){typeof Z$=="object"&&typeof X$=="object"?e($s()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){var t={pairs:`()[]{}''""`,closeBefore:`)]}'":;>`,triples:"",explode:"[]{}"},r=e.Pos;e.defineOption("autoCloseBrackets",!1,function(v,S,D){D&&D!=e.Init&&(v.removeKeyMap(i),v.state.closeBrackets=null),S&&(o(n(S,"pairs")),v.state.closeBrackets=S,v.addKeyMap(i))});function n(v,S){return S=="pairs"&&typeof v=="string"?v:typeof v=="object"&&v[S]!=null?v[S]:t[S]}var i={Backspace:a,Enter:u};function o(v){for(var S=0;S=0;E--){var T=C[E].head;v.replaceRange("",r(T.line,T.ch-1),r(T.line,T.ch+1),"+delete")}}function u(v){var S=s(v),D=S&&n(S,"explode");if(!D||v.getOption("disableInput"))return e.Pass;for(var C=v.listSelections(),E=0;E0?{line:T.head.line,ch:T.head.ch+S}:{line:T.head.line-1};D.push({anchor:N,head:N})}v.setSelections(D,E)}function p(v){var S=e.cmpPos(v.anchor,v.head)>0;return{anchor:new r(v.anchor.line,v.anchor.ch+(S?-1:1)),head:new r(v.head.line,v.head.ch+(S?1:-1))}}function h(v,S){var D=s(v);if(!D||v.getOption("disableInput"))return e.Pass;var C=n(D,"pairs"),E=C.indexOf(S);if(E==-1)return e.Pass;for(var M=n(D,"closeBefore"),T=n(D,"triples"),N=C.charAt(E+1)==S,O=v.listSelections(),F=E%2==0,I,B=0;B=0&&v.getRange(q,r(q.line,q.ch+3))==S+S+S?R="skipThree":R="skip";else if(N&&q.ch>1&&T.indexOf(S)>=0&&v.getRange(r(q.line,q.ch-2),q)==S+S){if(q.ch>2&&/\bstring/.test(v.getTokenTypeAt(r(q.line,q.ch-2))))return e.Pass;R="addFour"}else if(N){var X=q.ch==0?" ":v.getRange(r(q.line,q.ch-1),q);if(!e.isWordChar(V)&&X!=S&&!e.isWordChar(X))R="both";else return e.Pass}else if(F&&(V.length===0||/\s/.test(V)||M.indexOf(V)>-1))R="both";else return e.Pass;if(!I)I=R;else if(I!=R)return e.Pass}var U=E%2?C.charAt(E-1):S,H=E%2?S:C.charAt(E+1);v.operation(function(){if(I=="skip")f(v,1);else if(I=="skipThree")f(v,3);else if(I=="surround"){for(var ee=v.getSelections(),Z=0;Z{(function(e){typeof J$=="object"&&typeof Q$=="object"?e($s()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){var t=/MSIE \d/.test(navigator.userAgent)&&(document.documentMode==null||document.documentMode<8),r=e.Pos,n={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<","<":">>",">":"<<"};function i(f){return f&&f.bracketRegex||/[(){}[\]]/}function o(f,p,h){var g=f.getLineHandle(p.line),x=p.ch-1,v=h&&h.afterCursor;v==null&&(v=/(^| )cm-fat-cursor($| )/.test(f.getWrapperElement().className));var S=i(h),D=!v&&x>=0&&S.test(g.text.charAt(x))&&n[g.text.charAt(x)]||S.test(g.text.charAt(x+1))&&n[g.text.charAt(++x)];if(!D)return null;var C=D.charAt(1)==">"?1:-1;if(h&&h.strict&&C>0!=(x==p.ch))return null;var E=f.getTokenTypeAt(r(p.line,x+1)),M=l(f,r(p.line,x+(C>0?1:0)),C,E,h);return M==null?null:{from:r(p.line,x),to:M&&M.pos,match:M&&M.ch==D.charAt(0),forward:C>0}}function l(f,p,h,g,x){for(var v=x&&x.maxScanLineLength||1e4,S=x&&x.maxScanLines||1e3,D=[],C=i(x),E=h>0?Math.min(p.line+S,f.lastLine()+1):Math.max(f.firstLine()-1,p.line-S),M=p.line;M!=E;M+=h){var T=f.getLine(M);if(T){var N=h>0?0:T.length-1,O=h>0?T.length:-1;if(!(T.length>v))for(M==p.line&&(N=p.ch-(h<0?1:0));N!=O;N+=h){var F=T.charAt(N);if(C.test(F)&&(g===void 0||(f.getTokenTypeAt(r(M,N+1))||"")==(g||""))){var I=n[F];if(I&&I.charAt(1)==">"==h>0)D.push(F);else if(D.length)D.pop();else return{pos:r(M,N),ch:F}}}}}return M-h==(h>0?f.lastLine():f.firstLine())?!1:null}function s(f,p,h){for(var g=f.state.matchBrackets.maxHighlightLineLength||1e3,x=h&&h.highlightNonMatching,v=[],S=f.listSelections(),D=0;D{(function(e){typeof eW=="object"&&typeof tW=="object"?e($s()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){"use strict";var t="CodeMirror-hint",r="CodeMirror-hint-active";e.showHint=function(v,S,D){if(!S)return v.showHint(D);D&&D.async&&(S.async=!0);var C={hint:S};if(D)for(var E in D)C[E]=D[E];return v.showHint(C)},e.defineExtension("showHint",function(v){v=l(this,this.getCursor("start"),v);var S=this.listSelections();if(!(S.length>1)){if(this.somethingSelected()){if(!v.hint.supportsSelection)return;for(var D=0;DT.clientHeight+1:!1,se;setTimeout(function(){se=C.getScrollInfo()});var le=Te.bottom-ve;if(le>0){var oe=Te.bottom-Te.top,we=Te.top-(R.bottom-R.top)-2;ve-Te.topwe&&(T.style.height=(oe=we)+"px"),T.style.top=(X=R.top-oe)+ee+"px",U=!1):T.style.height=ve-Te.top-2+"px"}var Ce=Te.right-ne;if(De&&(Ce+=C.display.nativeBarWidth),Ce>0&&(Te.right-Te.left>ne&&(T.style.width=ne-5+"px",Ce-=Te.right-Te.left-ne),T.style.left=(V=Math.max(R.left-Ce-H,0))+"px"),De)for(var he=T.firstChild;he;he=he.nextSibling)he.style.paddingRight=C.display.nativeBarWidth+"px";if(C.addKeyMap(this.keyMap=a(v,{moveFocus:function(ie,fe){D.changeActive(D.selectedHint+ie,fe)},setFocus:function(ie){D.changeActive(ie)},menuSize:function(){return D.screenAmount()},length:O.length,close:function(){v.close()},pick:function(){D.pick()},data:S})),v.options.closeOnUnfocus){var Pe;C.on("blur",this.onBlur=function(){Pe=setTimeout(function(){v.close()},100)}),C.on("focus",this.onFocus=function(){clearTimeout(Pe)})}C.on("scroll",this.onScroll=function(){var ie=C.getScrollInfo(),fe=C.getWrapperElement().getBoundingClientRect();se||(se=C.getScrollInfo());var Oe=X+se.top-ie.top,Me=Oe-(M.pageYOffset||(E.documentElement||E.body).scrollTop);if(U||(Me+=T.offsetHeight),Me<=fe.top||Me>=fe.bottom)return v.close();T.style.top=Oe+"px",T.style.left=V+se.left-ie.left+"px"}),e.on(T,"dblclick",function(ie){var fe=u(T,ie.target||ie.srcElement);fe&&fe.hintId!=null&&(D.changeActive(fe.hintId),D.pick())}),e.on(T,"click",function(ie){var fe=u(T,ie.target||ie.srcElement);fe&&fe.hintId!=null&&(D.changeActive(fe.hintId),v.options.completeOnSingleClick&&D.pick())}),e.on(T,"mousedown",function(){setTimeout(function(){C.focus()},20)});var Ze=this.getSelectedHintRange();return(Ze.from!==0||Ze.to!==0)&&this.scrollToActive(),e.signal(S,"select",O[this.selectedHint],T.childNodes[this.selectedHint]),!0}f.prototype={close:function(){if(this.completion.widget==this){this.completion.widget=null,this.hints.parentNode&&this.hints.parentNode.removeChild(this.hints),this.completion.cm.removeKeyMap(this.keyMap);var v=this.completion.cm.getInputField();v.removeAttribute("aria-activedescendant"),v.removeAttribute("aria-owns");var S=this.completion.cm;this.completion.options.closeOnUnfocus&&(S.off("blur",this.onBlur),S.off("focus",this.onFocus)),S.off("scroll",this.onScroll)}},disable:function(){this.completion.cm.removeKeyMap(this.keyMap);var v=this;this.keyMap={Enter:function(){v.picked=!0}},this.completion.cm.addKeyMap(this.keyMap)},pick:function(){this.completion.pick(this.data,this.selectedHint)},changeActive:function(v,S){if(v>=this.data.list.length?v=S?this.data.list.length-1:0:v<0&&(v=S?0:this.data.list.length-1),this.selectedHint!=v){var D=this.hints.childNodes[this.selectedHint];D&&(D.className=D.className.replace(" "+r,""),D.removeAttribute("aria-selected")),D=this.hints.childNodes[this.selectedHint=v],D.className+=" "+r,D.setAttribute("aria-selected","true"),this.completion.cm.getInputField().setAttribute("aria-activedescendant",D.id),this.scrollToActive(),e.signal(this.data,"select",this.data.list[this.selectedHint],D)}},scrollToActive:function(){var v=this.getSelectedHintRange(),S=this.hints.childNodes[v.from],D=this.hints.childNodes[v.to],C=this.hints.firstChild;S.offsetTopthis.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=D.offsetTop+D.offsetHeight-this.hints.clientHeight+C.offsetTop)},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1},getSelectedHintRange:function(){var v=this.completion.options.scrollMargin||0;return{from:Math.max(0,this.selectedHint-v),to:Math.min(this.data.list.length-1,this.selectedHint+v)}}};function p(v,S){if(!v.somethingSelected())return S;for(var D=[],C=0;C0?T(B):F(I+1)})}F(0)};return E.async=!0,E.supportsSelection=!0,E}else return(C=v.getHelper(v.getCursor(),"hintWords"))?function(M){return e.hint.fromList(M,{words:C})}:e.hint.anyword?function(M,T){return e.hint.anyword(M,T)}:function(){}}e.registerHelper("hint","auto",{resolve:g}),e.registerHelper("hint","fromList",function(v,S){var D=v.getCursor(),C=v.getTokenAt(D),E,M=e.Pos(D.line,C.start),T=D;C.start,]/,closeOnPick:!0,closeOnUnfocus:!0,updateOnCursorActivity:!0,completeOnSingleClick:!0,container:null,customKeys:null,extraKeys:null,paddingForScrollbar:!0,moveOnOverlap:!0};e.defineOption("hintOptions",null)})});var oW=st((nW,iW)=>{(function(e){typeof nW=="object"&&typeof iW=="object"?e($s(),Ub()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../dialog/dialog"],e):e(CodeMirror)})(function(e){"use strict";e.defineOption("search",{bottom:!1});function t(i,o,l,s,a){i.openDialog?i.openDialog(o,a,{value:s,selectValueOnOpen:!0,bottom:i.options.search.bottom}):a(prompt(l,s))}function r(i){return i.phrase("Jump to line:")+' '+i.phrase("(Use line:column or scroll% syntax)")+""}function n(i,o){var l=Number(o);return/^[-+]/.test(o)?i.getCursor().line+l:l-1}e.commands.jumpToLine=function(i){var o=i.getCursor();t(i,r(i),i.phrase("Jump to line:"),o.line+1+":"+o.ch,function(l){if(l){var s;if(s=/^\s*([\+\-]?\d+)\s*\:\s*(\d+)\s*$/.exec(l))i.setCursor(n(i,s[1]),Number(s[2]));else if(s=/^\s*([\+\-]?\d+(\.\d+)?)\%\s*/.exec(l)){var a=Math.round(i.lineCount()*Number(s[1])/100);/^[-+]/.test(s[1])&&(a=o.line+a+1),i.setCursor(a-1,o.ch)}else(s=/^\s*\:?\s*([\+\-]?\d+)\s*/.exec(l))&&i.setCursor(n(i,s[1]),o.ch)}})},e.keyMap.default["Alt-G"]="jumpToLine"})});var hM=st((aW,sW)=>{(function(e){typeof aW=="object"&&typeof sW=="object"?e($s()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){"use strict";var t=e.Pos;function r(S){var D=S.flags;return D??(S.ignoreCase?"i":"")+(S.global?"g":"")+(S.multiline?"m":"")}function n(S,D){for(var C=r(S),E=C,M=0;MN);O++){var F=S.getLine(T++);E=E==null?F:E+` + outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);`;var Ne;a&&(Ne=A.ownerDocument.defaultView.scrollY),w.input.focus(),a&&A.ownerDocument.defaultView.scrollTo(null,Ne),w.input.reset(),b.somethingSelected()||(A.value=d.prevInput=" "),d.contextMenuPending=Be,w.selForContextMenu=b.doc.sel,clearTimeout(w.detectingSelectAll);function qe(){if(A.selectionStart!=null){var nt=b.somethingSelected(),lt="\u200B"+(nt?A.value:"");A.value="\u21DA",A.value=lt,d.prevInput=nt?"":"\u200B",A.selectionStart=1,A.selectionEnd=lt.length,w.selForContextMenu=b.doc.sel}}function Be(){if(d.contextMenuPending==Be&&(d.contextMenuPending=!1,d.wrapper.style.cssText=Q,A.style.cssText=K,l&&s<9&&w.scrollbars.setScrollTop(w.scroller.scrollTop=z),A.selectionStart!=null)){(!l||l&&s<9)&&qe();var nt=0,lt=function(){w.selForContextMenu==b.doc.sel&&A.selectionStart==0&&A.selectionEnd>0&&d.prevInput=="\u200B"?jn(b,Jc)(b):nt++<10?w.detectingSelectAll=setTimeout(lt,500):(w.selForContextMenu=null,w.input.reset())};w.detectingSelectAll=setTimeout(lt,200)}}if(l&&s>=9&&qe(),F){no(c);var Ke=function(){Ve(window,"mouseup",Ke),setTimeout(Be,20)};ae(window,"mouseup",Ke)}else setTimeout(Be,50)},Sn.prototype.readOnlyChanged=function(c){c||this.reset(),this.textarea.disabled=c=="nocursor",this.textarea.readOnly=!!c},Sn.prototype.setUneditable=function(){},Sn.prototype.needsContentAttribute=!1;function CN(c,d){if(d=d?De(d):{},d.value=c.value,!d.tabindex&&c.tabIndex&&(d.tabindex=c.tabIndex),!d.placeholder&&c.placeholder&&(d.placeholder=c.placeholder),d.autofocus==null){var b=H(oe(c));d.autofocus=b==c||c.getAttribute("autofocus")!=null&&b==document.body}function w(){c.value=Y.getValue()}var A;if(c.form&&(ae(c.form,"submit",w),!d.leaveSubmitMethodAlone)){var k=c.form;A=k.submit;try{var z=k.submit=function(){w(),k.submit=A,k.submit(),k.submit=z}}catch{}}d.finishInit=function(K){K.save=w,K.getTextArea=function(){return c},K.toTextArea=function(){K.toTextArea=isNaN,w(),c.parentNode.removeChild(K.getWrapperElement()),c.style.display="",c.form&&(Ve(c.form,"submit",w),!d.leaveSubmitMethodAlone&&typeof c.form.submit=="function"&&(c.form.submit=A))}},c.style.display="none";var Y=sn(function(K){return c.parentNode.insertBefore(K,c.nextSibling)},d);return Y}function MN(c){c.off=Ve,c.on=ae,c.wheelEventPixels=bf,c.Doc=Ti,c.splitLines=ri,c.countColumn=Me,c.findColumn=ie,c.isWordChar=At,c.Pass=Fe,c.signal=tt,c.Line=af,c.changeEnd=yu,c.scrollbarModel=ty,c.Pos=Ye,c.cmpPos=Ee,c.modes=iu,c.mimeModes=io,c.resolveMode=ou,c.getMode=La,c.modeExtensions=Gt,c.extendMode=Ui,c.copyState=Cr,c.startState=Eo,c.innerMode=It,c.commands=op,c.keyMap=Es,c.keyName=Cy,c.isModifierKey=Ey,c.lookupKey=Ff,c.normalizeKeyMap=fN,c.StringStream=Xr,c.SharedTextMarker=Tf,c.TextMarker=Uo,c.LineWidget=Cf,c.e_preventDefault=Ut,c.e_stopPropagation=fi,c.e_stop=no,c.addClass=ee,c.contains=U,c.rmClass=B,c.keyNames=Ns}wN(sn),SN(sn);var TN="iter insert remove copy getEditor constructor".split(" ");for(var Vm in Ti.prototype)Ti.prototype.hasOwnProperty(Vm)&&ne(TN,Vm)<0&&(sn.prototype[Vm]=function(c){return function(){return c.apply(this.doc,arguments)}}(Ti.prototype[Vm]));return jr(Ti),sn.inputStyles={textarea:Sn,contenteditable:Pr},sn.defineMode=function(c){!sn.defaults.mode&&c!="null"&&(sn.defaults.mode=c),oo.apply(this,arguments)},sn.defineMIME=oa,sn.defineMode("null",function(){return{token:function(c){return c.skipToEnd()}}}),sn.defineMIME("text/plain","null"),sn.defineExtension=function(c,d){sn.prototype[c]=d},sn.defineDocExtension=function(c,d){Ti.prototype[c]=d},sn.fromTextArea=CN,MN(sn),sn.version="5.65.18",sn})});var X$=st((Y$,Z$)=>{(function(e){typeof Y$=="object"&&typeof Z$=="object"?e($s()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){"use strict";e.defineMode("javascript",function(t,r){var n=t.indentUnit,i=r.statementIndent,o=r.jsonld,l=r.json||o,s=r.trackScope!==!1,a=r.typescript,u=r.wordCharacters||/[\w$\xa1-\uffff]/,f=function(){function j(Fn){return{type:Fn,style:"keyword"}}var ye=j("keyword a"),Xe=j("keyword b"),ot=j("keyword c"),Ye=j("keyword d"),Ee=j("operator"),Er={type:"atom",style:"atom"};return{if:j("if"),while:ye,with:ye,else:Xe,do:Xe,try:Xe,finally:Xe,return:Ye,break:Ye,continue:Ye,new:j("new"),delete:ot,void:ot,throw:ot,debugger:j("debugger"),var:j("var"),const:j("var"),let:j("var"),function:j("function"),catch:j("catch"),for:j("for"),switch:j("switch"),case:j("case"),default:j("default"),in:Ee,typeof:Ee,instanceof:Ee,true:Er,false:Er,null:Er,undefined:Er,NaN:Er,Infinity:Er,this:j("this"),class:j("class"),super:j("atom"),yield:ot,export:j("export"),import:j("import"),extends:ot,await:ot}}(),p=/[+\-*&%=<>!?|~^@]/,h=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function g(j){for(var ye=!1,Xe,ot=!1;(Xe=j.next())!=null;){if(!ye){if(Xe=="/"&&!ot)return;Xe=="["?ot=!0:ot&&Xe=="]"&&(ot=!1)}ye=!ye&&Xe=="\\"}}var x,v;function S(j,ye,Xe){return x=j,v=Xe,ye}function D(j,ye){var Xe=j.next();if(Xe=='"'||Xe=="'")return ye.tokenize=C(Xe),ye.tokenize(j,ye);if(Xe=="."&&j.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return S("number","number");if(Xe=="."&&j.match(".."))return S("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(Xe))return S(Xe);if(Xe=="="&&j.eat(">"))return S("=>","operator");if(Xe=="0"&&j.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return S("number","number");if(/\d/.test(Xe))return j.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),S("number","number");if(Xe=="/")return j.eat("*")?(ye.tokenize=E,E(j,ye)):j.eat("/")?(j.skipToEnd(),S("comment","comment")):zn(j,ye,1)?(g(j),j.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),S("regexp","string-2")):(j.eat("="),S("operator","operator",j.current()));if(Xe=="`")return ye.tokenize=M,M(j,ye);if(Xe=="#"&&j.peek()=="!")return j.skipToEnd(),S("meta","meta");if(Xe=="#"&&j.eatWhile(u))return S("variable","property");if(Xe=="<"&&j.match("!--")||Xe=="-"&&j.match("->")&&!/\S/.test(j.string.slice(0,j.start)))return j.skipToEnd(),S("comment","comment");if(p.test(Xe))return(Xe!=">"||!ye.lexical||ye.lexical.type!=">")&&(j.eat("=")?(Xe=="!"||Xe=="=")&&j.eat("="):/[<>*+\-|&?]/.test(Xe)&&(j.eat(Xe),Xe==">"&&j.eat(Xe))),Xe=="?"&&j.eat(".")?S("."):S("operator","operator",j.current());if(u.test(Xe)){j.eatWhile(u);var ot=j.current();if(ye.lastType!="."){if(f.propertyIsEnumerable(ot)){var Ye=f[ot];return S(Ye.type,Ye.style,ot)}if(ot=="async"&&j.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return S("async","keyword",ot)}return S("variable","variable",ot)}}function C(j){return function(ye,Xe){var ot=!1,Ye;if(o&&ye.peek()=="@"&&ye.match(h))return Xe.tokenize=D,S("jsonld-keyword","meta");for(;(Ye=ye.next())!=null&&!(Ye==j&&!ot);)ot=!ot&&Ye=="\\";return ot||(Xe.tokenize=D),S("string","string")}}function E(j,ye){for(var Xe=!1,ot;ot=j.next();){if(ot=="/"&&Xe){ye.tokenize=D;break}Xe=ot=="*"}return S("comment","comment")}function M(j,ye){for(var Xe=!1,ot;(ot=j.next())!=null;){if(!Xe&&(ot=="`"||ot=="$"&&j.eat("{"))){ye.tokenize=D;break}Xe=!Xe&&ot=="\\"}return S("quasi","string-2",j.current())}var T="([{}])";function N(j,ye){ye.fatArrowAt&&(ye.fatArrowAt=null);var Xe=j.string.indexOf("=>",j.start);if(!(Xe<0)){if(a){var ot=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(j.string.slice(j.start,Xe));ot&&(Xe=ot.index)}for(var Ye=0,Ee=!1,Er=Xe-1;Er>=0;--Er){var Fn=j.string.charAt(Er),ci=T.indexOf(Fn);if(ci>=0&&ci<3){if(!Ye){++Er;break}if(--Ye==0){Fn=="("&&(Ee=!0);break}}else if(ci>=3&&ci<6)++Ye;else if(u.test(Fn))Ee=!0;else if(/["'\/`]/.test(Fn))for(;;--Er){if(Er==0)return;var au=j.string.charAt(Er-1);if(au==Fn&&j.string.charAt(Er-2)!="\\"){Er--;break}}else if(Ee&&!Ye){++Er;break}}Ee&&!Ye&&(ye.fatArrowAt=Er)}}var O={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function F(j,ye,Xe,ot,Ye,Ee){this.indented=j,this.column=ye,this.type=Xe,this.prev=Ye,this.info=Ee,ot!=null&&(this.align=ot)}function I(j,ye){if(!s)return!1;for(var Xe=j.localVars;Xe;Xe=Xe.next)if(Xe.name==ye)return!0;for(var ot=j.context;ot;ot=ot.prev)for(var Xe=ot.vars;Xe;Xe=Xe.next)if(Xe.name==ye)return!0}function B(j,ye,Xe,ot,Ye){var Ee=j.cc;for(L.state=j,L.stream=Ye,L.marked=null,L.cc=Ee,L.style=ye,j.lexical.hasOwnProperty("align")||(j.lexical.align=!0);;){var Er=Ee.length?Ee.pop():l?ne:Me;if(Er(Xe,ot)){for(;Ee.length&&Ee[Ee.length-1].lex;)Ee.pop()();return L.marked?L.marked:Xe=="variable"&&I(j,ot)?"variable-2":ye}}}var L={state:null,column:null,marked:null,cc:null};function q(){for(var j=arguments.length-1;j>=0;j--)L.cc.push(arguments[j])}function R(){return q.apply(null,arguments),!0}function V(j,ye){for(var Xe=ye;Xe;Xe=Xe.next)if(Xe.name==j)return!0;return!1}function X(j){var ye=L.state;if(L.marked="def",!!s){if(ye.context){if(ye.lexical.info=="var"&&ye.context&&ye.context.block){var Xe=U(j,ye.context);if(Xe!=null){ye.context=Xe;return}}else if(!V(j,ye.localVars)){ye.localVars=new Z(j,ye.localVars);return}}r.globalVars&&!V(j,ye.globalVars)&&(ye.globalVars=new Z(j,ye.globalVars))}}function U(j,ye){if(ye)if(ye.block){var Xe=U(j,ye.prev);return Xe?Xe==ye.prev?ye:new ee(Xe,ye.vars,!0):null}else return V(j,ye.vars)?ye:new ee(ye.prev,new Z(j,ye.vars),!1);else return null}function H(j){return j=="public"||j=="private"||j=="protected"||j=="abstract"||j=="readonly"}function ee(j,ye,Xe){this.prev=j,this.vars=ye,this.block=Xe}function Z(j,ye){this.name=j,this.next=ye}var pe=new Z("this",new Z("arguments",null));function we(){L.state.context=new ee(L.state.context,L.state.localVars,!1),L.state.localVars=pe}function he(){L.state.context=new ee(L.state.context,L.state.localVars,!0),L.state.localVars=null}we.lex=he.lex=!0;function oe(){L.state.localVars=L.state.context.vars,L.state.context=L.state.context.prev}oe.lex=!0;function ve(j,ye){var Xe=function(){var ot=L.state,Ye=ot.indented;if(ot.lexical.type=="stat")Ye=ot.lexical.indented;else for(var Ee=ot.lexical;Ee&&Ee.type==")"&&Ee.align;Ee=Ee.prev)Ye=Ee.indented;ot.lexical=new F(Ye,L.stream.column(),j,null,ot.lexical,ye)};return Xe.lex=!0,Xe}function Oe(){var j=L.state;j.lexical.prev&&(j.lexical.type==")"&&(j.indented=j.lexical.indented),j.lexical=j.lexical.prev)}Oe.lex=!0;function De(j){function ye(Xe){return Xe==j?R():j==";"||Xe=="}"||Xe==")"||Xe=="]"?q():R(ye)}return ye}function Me(j,ye){return j=="var"?R(ve("vardef",ye),fi,De(";"),Oe):j=="keyword a"?R(ve("form"),Fe,Me,Oe):j=="keyword b"?R(ve("form"),Me,Oe):j=="keyword d"?L.stream.match(/^\s*$/,!1)?R():R(ve("stat"),Ue,De(";"),Oe):j=="debugger"?R(De(";")):j=="{"?R(ve("}"),he,te,Oe,oe):j==";"?R():j=="if"?(L.state.lexical.info=="else"&&L.state.cc[L.state.cc.length-1]==Oe&&L.state.cc.pop()(),R(ve("form"),Fe,Me,Oe,ka)):j=="function"?R(ri):j=="for"?R(ve("form"),he,qn,Me,oe,Oe):j=="class"||a&&ye=="interface"?(L.marked="keyword",R(ve("form",j=="class"?j:ye),iu,Oe)):j=="variable"?a&&ye=="declare"?(L.marked="keyword",R(Me)):a&&(ye=="module"||ye=="enum"||ye=="type")&&L.stream.match(/^\s*\w/,!1)?(L.marked="keyword",ye=="enum"?R(kt):ye=="type"?R(tf,De("operator"),$e,De(";")):R(ve("form"),Kt,De("{"),ve("}"),te,Oe,Oe)):a&&ye=="namespace"?(L.marked="keyword",R(ve("form"),ne,Me,Oe)):a&&ye=="abstract"?(L.marked="keyword",R(Me)):R(ve("stat"),rt):j=="switch"?R(ve("form"),Fe,De("{"),ve("}","switch"),he,te,Oe,Oe,oe):j=="case"?R(ne,De(":")):j=="default"?R(De(":")):j=="catch"?R(ve("form"),we,le,Me,Oe,oe):j=="export"?R(ve("stat"),ou,Oe):j=="import"?R(ve("stat"),Gt,Oe):j=="async"?R(Me):ye=="@"?R(ne,Me):q(ve("stat"),ne,De(";"),Oe)}function le(j){if(j=="(")return R(No,De(")"))}function ne(j,ye){return me(j,ye,!1)}function fe(j,ye){return me(j,ye,!0)}function Fe(j){return j!="("?q():R(ve(")"),Ue,De(")"),Oe)}function me(j,ye,Xe){if(L.state.fatArrowAt==L.stream.start){var ot=Xe?Je:Ce;if(j=="(")return R(we,ve(")"),qt(No,")"),Oe,De("=>"),ot,oe);if(j=="variable")return q(we,Kt,De("=>"),ot,oe)}var Ye=Xe?ie:Re;return O.hasOwnProperty(j)?R(Ye):j=="function"?R(ri,Ye):j=="class"||a&&ye=="interface"?(L.marked="keyword",R(ve("form"),rf,Oe)):j=="keyword c"||j=="async"?R(Xe?fe:ne):j=="("?R(ve(")"),Ue,De(")"),Oe,Ye):j=="operator"||j=="spread"?R(Xe?fe:ne):j=="["?R(ve("]"),Xr,Oe,Ye):j=="{"?xe(Rt,"}",null,Ye):j=="quasi"?q(ue,Ye):j=="new"?R(He(Xe)):R()}function Ue(j){return j.match(/[;\}\)\],]/)?q():q(ne)}function Re(j,ye){return j==","?R(Ue):ie(j,ye,!1)}function ie(j,ye,Xe){var ot=Xe==!1?Re:ie,Ye=Xe==!1?ne:fe;if(j=="=>")return R(we,Xe?Je:Ce,oe);if(j=="operator")return/\+\+|--/.test(ye)||a&&ye=="!"?R(ot):a&&ye=="<"&&L.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?R(ve(">"),qt($e,">"),Oe,ot):ye=="?"?R(ne,De(":"),Ye):R(Ye);if(j=="quasi")return q(ue,ot);if(j!=";"){if(j=="(")return xe(fe,")","call",ot);if(j==".")return R(At,ot);if(j=="[")return R(ve("]"),Ue,De("]"),Oe,ot);if(a&&ye=="as")return L.marked="keyword",R($e,ot);if(j=="regexp")return L.state.lastType=L.marked="operator",L.stream.backUp(L.stream.pos-L.stream.start-1),R(Ye)}}function ue(j,ye){return j!="quasi"?q():ye.slice(ye.length-2)!="${"?R(ue):R(Ue,Te)}function Te(j){if(j=="}")return L.marked="string-2",L.state.tokenize=M,R(ue)}function Ce(j){return N(L.stream,L.state),q(j=="{"?Me:ne)}function Je(j){return N(L.stream,L.state),q(j=="{"?Me:fe)}function He(j){return function(ye){return ye=="."?R(j?ct:it):ye=="variable"&&a?R(br,j?ie:Re):q(j?fe:ne)}}function it(j,ye){if(ye=="target")return L.marked="keyword",R(Re)}function ct(j,ye){if(ye=="target")return L.marked="keyword",R(ie)}function rt(j){return j==":"?R(Oe,Me):q(Re,De(";"),Oe)}function At(j){if(j=="variable")return L.marked="property",R()}function Rt(j,ye){if(j=="async")return L.marked="property",R(Rt);if(j=="variable"||L.style=="keyword"){if(L.marked="property",ye=="get"||ye=="set")return R(vt);var Xe;return a&&L.state.fatArrowAt==L.stream.start&&(Xe=L.stream.match(/^\s*:\s*/,!1))&&(L.state.fatArrowAt=L.stream.pos+Xe[0].length),R(nr)}else{if(j=="number"||j=="string")return L.marked=o?"property":L.style+" property",R(nr);if(j=="jsonld-keyword")return R(nr);if(a&&H(ye))return L.marked="keyword",R(Rt);if(j=="[")return R(ne,ge,De("]"),nr);if(j=="spread")return R(fe,nr);if(ye=="*")return L.marked="keyword",R(Rt);if(j==":")return q(nr)}}function vt(j){return j!="variable"?q(nr):(L.marked="property",R(ri))}function nr(j){if(j==":")return R(fe);if(j=="(")return q(ri)}function qt(j,ye,Xe){function ot(Ye,Ee){if(Xe?Xe.indexOf(Ye)>-1:Ye==","){var Er=L.state.lexical;return Er.info=="call"&&(Er.pos=(Er.pos||0)+1),R(function(Fn,ci){return Fn==ye||ci==ye?q():q(j)},ot)}return Ye==ye||Ee==ye?R():Xe&&Xe.indexOf(";")>-1?q(j):R(De(ye))}return function(Ye,Ee){return Ye==ye||Ee==ye?R():q(j,ot)}}function xe(j,ye,Xe){for(var ot=3;ot"),$e);if(j=="quasi")return q(Ve,or)}function W(j){if(j=="=>")return R($e)}function ae(j){return j.match(/[\}\)\]]/)?R():j==","||j==";"?R(ae):q(be,ae)}function be(j,ye){if(j=="variable"||L.style=="keyword")return L.marked="property",R(be);if(ye=="?"||j=="number"||j=="string")return R(be);if(j==":")return R($e);if(j=="[")return R(De("variable"),_e,De("]"),be);if(j=="(")return q(ia,be);if(!j.match(/[;\}\)\],]/))return R()}function Ve(j,ye){return j!="quasi"?q():ye.slice(ye.length-2)!="${"?R(Ve):R($e,tt)}function tt(j){if(j=="}")return L.marked="string-2",L.state.tokenize=M,R(Ve)}function ft(j,ye){return j=="variable"&&L.stream.match(/^\s*[?:]/,!1)||ye=="?"?R(ft):j==":"?R($e):j=="spread"?R(ft):q($e)}function or(j,ye){if(ye=="<")return R(ve(">"),qt($e,">"),Oe,or);if(ye=="|"||j=="."||ye=="&")return R($e);if(j=="[")return R($e,De("]"),or);if(ye=="extends"||ye=="implements")return L.marked="keyword",R($e);if(ye=="?")return R($e,De(":"),$e)}function br(j,ye){if(ye=="<")return R(ve(">"),qt($e,">"),Oe,or)}function jr(){return q($e,Ut)}function Ut(j,ye){if(ye=="=")return R($e)}function fi(j,ye){return ye=="enum"?(L.marked="keyword",R(kt)):q(Kt,ge,On,Ia)}function Kt(j,ye){if(a&&H(ye))return L.marked="keyword",R(Kt);if(j=="variable")return X(ye),R();if(j=="spread")return R(Kt);if(j=="[")return xe(Dr,"]");if(j=="{")return xe(no,"}")}function no(j,ye){return j=="variable"&&!L.stream.match(/^\s*:/,!1)?(X(ye),R(On)):(j=="variable"&&(L.marked="property"),j=="spread"?R(Kt):j=="}"?q():j=="["?R(ne,De("]"),De(":"),no):R(De(":"),Kt,On))}function Dr(){return q(Kt,On)}function On(j,ye){if(ye=="=")return R(fe)}function Ia(j){if(j==",")return R(fi)}function ka(j,ye){if(j=="keyword b"&&ye=="else")return R(ve("form","else"),Me,Oe)}function qn(j,ye){if(ye=="await")return R(qn);if(j=="(")return R(ve(")"),na,Oe)}function na(j){return j=="var"?R(fi,Bo):j=="variable"?R(Bo):q(Bo)}function Bo(j,ye){return j==")"?R():j==";"?R(Bo):ye=="in"||ye=="of"?(L.marked="keyword",R(ne,Bo)):q(ne,Bo)}function ri(j,ye){if(ye=="*")return L.marked="keyword",R(ri);if(j=="variable")return X(ye),R(ri);if(j=="(")return R(we,ve(")"),qt(No,")"),Oe,ze,Me,oe);if(a&&ye=="<")return R(ve(">"),qt(jr,">"),Oe,ri)}function ia(j,ye){if(ye=="*")return L.marked="keyword",R(ia);if(j=="variable")return X(ye),R(ia);if(j=="(")return R(we,ve(")"),qt(No,")"),Oe,ze,oe);if(a&&ye=="<")return R(ve(">"),qt(jr,">"),Oe,ia)}function tf(j,ye){if(j=="keyword"||j=="variable")return L.marked="type",R(tf);if(ye=="<")return R(ve(">"),qt(jr,">"),Oe)}function No(j,ye){return ye=="@"&&R(ne,No),j=="spread"?R(No):a&&H(ye)?(L.marked="keyword",R(No)):a&&j=="this"?R(ge,On):q(Kt,ge,On)}function rf(j,ye){return j=="variable"?iu(j,ye):io(j,ye)}function iu(j,ye){if(j=="variable")return X(ye),R(io)}function io(j,ye){if(ye=="<")return R(ve(">"),qt(jr,">"),Oe,io);if(ye=="extends"||ye=="implements"||a&&j==",")return ye=="implements"&&(L.marked="keyword"),R(a?$e:ne,io);if(j=="{")return R(ve("}"),oo,Oe)}function oo(j,ye){if(j=="async"||j=="variable"&&(ye=="static"||ye=="get"||ye=="set"||a&&H(ye))&&L.stream.match(/^\s+#?[\w$\xa1-\uffff]/,!1))return L.marked="keyword",R(oo);if(j=="variable"||L.style=="keyword")return L.marked="property",R(oa,oo);if(j=="number"||j=="string")return R(oa,oo);if(j=="[")return R(ne,ge,De("]"),oa,oo);if(ye=="*")return L.marked="keyword",R(oo);if(a&&j=="(")return q(ia,oo);if(j==";"||j==",")return R(oo);if(j=="}")return R();if(ye=="@")return R(ne,oo)}function oa(j,ye){if(ye=="!"||ye=="?")return R(oa);if(j==":")return R($e,On);if(ye=="=")return R(fe);var Xe=L.state.lexical.prev,ot=Xe&&Xe.info=="interface";return q(ot?ia:ri)}function ou(j,ye){return ye=="*"?(L.marked="keyword",R(Eo,De(";"))):ye=="default"?(L.marked="keyword",R(ne,De(";"))):j=="{"?R(qt(La,"}"),Eo,De(";")):q(Me)}function La(j,ye){if(ye=="as")return L.marked="keyword",R(De("variable"));if(j=="variable")return q(fe,La)}function Gt(j){return j=="string"?R():j=="("?q(ne):j=="."?q(Re):q(Ui,Cr,Eo)}function Ui(j,ye){return j=="{"?xe(Ui,"}"):(j=="variable"&&X(ye),ye=="*"&&(L.marked="keyword"),R(It))}function Cr(j){if(j==",")return R(Ui,Cr)}function It(j,ye){if(ye=="as")return L.marked="keyword",R(Ui)}function Eo(j,ye){if(ye=="from")return L.marked="keyword",R(ne)}function Xr(j){return j=="]"?R():q(qt(fe,"]"))}function kt(){return q(ve("form"),Kt,De("{"),ve("}"),qt(aa,"}"),Oe,Oe)}function aa(){return q(Kt,On)}function ju(j,ye){return j.lastType=="operator"||j.lastType==","||p.test(ye.charAt(0))||/[,.]/.test(ye.charAt(0))}function zn(j,ye,Xe){return ye.tokenize==D&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(ye.lastType)||ye.lastType=="quasi"&&/\{\s*$/.test(j.string.slice(0,j.pos-(Xe||0)))}return{startState:function(j){var ye={tokenize:D,lastType:"sof",cc:[],lexical:new F((j||0)-n,0,"block",!1),localVars:r.localVars,context:r.localVars&&new ee(null,null,!1),indented:j||0};return r.globalVars&&typeof r.globalVars=="object"&&(ye.globalVars=r.globalVars),ye},token:function(j,ye){if(j.sol()&&(ye.lexical.hasOwnProperty("align")||(ye.lexical.align=!1),ye.indented=j.indentation(),N(j,ye)),ye.tokenize!=E&&j.eatSpace())return null;var Xe=ye.tokenize(j,ye);return x=="comment"?Xe:(ye.lastType=x=="operator"&&(v=="++"||v=="--")?"incdec":x,B(ye,Xe,x,v,j))},indent:function(j,ye){if(j.tokenize==E||j.tokenize==M)return e.Pass;if(j.tokenize!=D)return 0;var Xe=ye&&ye.charAt(0),ot=j.lexical,Ye;if(!/^\s*else\b/.test(ye))for(var Ee=j.cc.length-1;Ee>=0;--Ee){var Er=j.cc[Ee];if(Er==Oe)ot=ot.prev;else if(Er!=ka&&Er!=oe)break}for(;(ot.type=="stat"||ot.type=="form")&&(Xe=="}"||(Ye=j.cc[j.cc.length-1])&&(Ye==Re||Ye==ie)&&!/^[,\.=+\-*:?[\(]/.test(ye));)ot=ot.prev;i&&ot.type==")"&&ot.prev.type=="stat"&&(ot=ot.prev);var Fn=ot.type,ci=Xe==Fn;return Fn=="vardef"?ot.indented+(j.lastType=="operator"||j.lastType==","?ot.info.length+1:0):Fn=="form"&&Xe=="{"?ot.indented:Fn=="form"?ot.indented+n:Fn=="stat"?ot.indented+(ju(j,ye)?i||n:0):ot.info=="switch"&&!ci&&r.doubleIndentSwitch!=!1?ot.indented+(/^(?:case|default)\b/.test(ye)?n:2*n):ot.align?ot.column+(ci?0:1):ot.indented+(ci?0:n)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:l?null:"/*",blockCommentEnd:l?null:"*/",blockCommentContinue:l?null:" * ",lineComment:l?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:l?"json":"javascript",jsonldMode:o,jsonMode:l,expressionAllowed:zn,skipExpression:function(j){B(j,"atom","atom","true",new e.StringStream("",2,null))}}}),e.registerHelper("wordChars","javascript",/[\w$]/),e.defineMIME("text/javascript","javascript"),e.defineMIME("text/ecmascript","javascript"),e.defineMIME("application/javascript","javascript"),e.defineMIME("application/x-javascript","javascript"),e.defineMIME("application/ecmascript","javascript"),e.defineMIME("application/json",{name:"javascript",json:!0}),e.defineMIME("application/x-json",{name:"javascript",json:!0}),e.defineMIME("application/manifest+json",{name:"javascript",json:!0}),e.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),e.defineMIME("text/typescript",{name:"javascript",typescript:!0}),e.defineMIME("application/typescript",{name:"javascript",typescript:!0})})});var Hb=st((K$,J$)=>{(function(e){typeof K$=="object"&&typeof J$=="object"?e($s()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){function t(n,i,o){var l=n.getWrapperElement(),s;return s=l.appendChild(document.createElement("div")),o?s.className="CodeMirror-dialog CodeMirror-dialog-bottom":s.className="CodeMirror-dialog CodeMirror-dialog-top",typeof i=="string"?s.innerHTML=i:s.appendChild(i),e.addClass(l,"dialog-opened"),s}function r(n,i){n.state.currentNotificationClose&&n.state.currentNotificationClose(),n.state.currentNotificationClose=i}e.defineExtension("openDialog",function(n,i,o){o||(o={}),r(this,null);var l=t(this,n,o.bottom),s=!1,a=this;function u(h){if(typeof h=="string")f.value=h;else{if(s)return;s=!0,e.rmClass(l.parentNode,"dialog-opened"),l.parentNode.removeChild(l),a.focus(),o.onClose&&o.onClose(l)}}var f=l.getElementsByTagName("input")[0],p;return f?(f.focus(),o.value&&(f.value=o.value,o.selectValueOnOpen!==!1&&f.select()),o.onInput&&e.on(f,"input",function(h){o.onInput(h,f.value,u)}),o.onKeyUp&&e.on(f,"keyup",function(h){o.onKeyUp(h,f.value,u)}),e.on(f,"keydown",function(h){o&&o.onKeyDown&&o.onKeyDown(h,f.value,u)||((h.keyCode==27||o.closeOnEnter!==!1&&h.keyCode==13)&&(f.blur(),e.e_stop(h),u()),h.keyCode==13&&i(f.value,h))}),o.closeOnBlur!==!1&&e.on(l,"focusout",function(h){h.relatedTarget!==null&&u()})):(p=l.getElementsByTagName("button")[0])&&(e.on(p,"click",function(){u(),a.focus()}),o.closeOnBlur!==!1&&e.on(p,"blur",u),p.focus()),u}),e.defineExtension("openConfirm",function(n,i,o){r(this,null);var l=t(this,n,o&&o.bottom),s=l.getElementsByTagName("button"),a=!1,u=this,f=1;function p(){a||(a=!0,e.rmClass(l.parentNode,"dialog-opened"),l.parentNode.removeChild(l),u.focus())}s[0].focus();for(var h=0;h{(function(e){typeof Q$=="object"&&typeof j$=="object"?e($s()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){e.defineOption("placeholder","",function(s,a,u){var f=u&&u!=e.Init;if(a&&!f)s.on("blur",i),s.on("change",o),s.on("swapDoc",o),e.on(s.getInputField(),"compositionupdate",s.state.placeholderCompose=function(){n(s)}),o(s);else if(!a&&f){s.off("blur",i),s.off("change",o),s.off("swapDoc",o),e.off(s.getInputField(),"compositionupdate",s.state.placeholderCompose),t(s);var p=s.getWrapperElement();p.className=p.className.replace(" CodeMirror-empty","")}a&&!s.hasFocus()&&i(s)});function t(s){s.state.placeholder&&(s.state.placeholder.parentNode.removeChild(s.state.placeholder),s.state.placeholder=null)}function r(s){t(s);var a=s.state.placeholder=document.createElement("pre");a.style.cssText="height: 0; overflow: visible",a.style.direction=s.getOption("direction"),a.className="CodeMirror-placeholder CodeMirror-line-like";var u=s.getOption("placeholder");typeof u=="string"&&(u=document.createTextNode(u)),a.appendChild(u),s.display.lineSpace.insertBefore(a,s.display.lineSpace.firstChild)}function n(s){setTimeout(function(){var a=!1;if(s.lineCount()==1){var u=s.getInputField();a=u.nodeName=="TEXTAREA"?!s.getLine(0).length:!/[^\u200b]/.test(u.querySelector(".CodeMirror-line").textContent)}a?r(s):t(s)},20)}function i(s){l(s)&&r(s)}function o(s){var a=s.getWrapperElement(),u=l(s);a.className=a.className.replace(" CodeMirror-empty","")+(u?" CodeMirror-empty":""),u?r(s):t(s)}function l(s){return s.lineCount()===1&&s.getLine(0)===""}})});var nW=st((tW,rW)=>{(function(e){typeof tW=="object"&&typeof rW=="object"?e($s()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){var t={pairs:`()[]{}''""`,closeBefore:`)]}'":;>`,triples:"",explode:"[]{}"},r=e.Pos;e.defineOption("autoCloseBrackets",!1,function(v,S,D){D&&D!=e.Init&&(v.removeKeyMap(i),v.state.closeBrackets=null),S&&(o(n(S,"pairs")),v.state.closeBrackets=S,v.addKeyMap(i))});function n(v,S){return S=="pairs"&&typeof v=="string"?v:typeof v=="object"&&v[S]!=null?v[S]:t[S]}var i={Backspace:a,Enter:u};function o(v){for(var S=0;S=0;E--){var T=C[E].head;v.replaceRange("",r(T.line,T.ch-1),r(T.line,T.ch+1),"+delete")}}function u(v){var S=s(v),D=S&&n(S,"explode");if(!D||v.getOption("disableInput"))return e.Pass;for(var C=v.listSelections(),E=0;E0?{line:T.head.line,ch:T.head.ch+S}:{line:T.head.line-1};D.push({anchor:N,head:N})}v.setSelections(D,E)}function p(v){var S=e.cmpPos(v.anchor,v.head)>0;return{anchor:new r(v.anchor.line,v.anchor.ch+(S?-1:1)),head:new r(v.head.line,v.head.ch+(S?1:-1))}}function h(v,S){var D=s(v);if(!D||v.getOption("disableInput"))return e.Pass;var C=n(D,"pairs"),E=C.indexOf(S);if(E==-1)return e.Pass;for(var M=n(D,"closeBefore"),T=n(D,"triples"),N=C.charAt(E+1)==S,O=v.listSelections(),F=E%2==0,I,B=0;B=0&&v.getRange(q,r(q.line,q.ch+3))==S+S+S?R="skipThree":R="skip";else if(N&&q.ch>1&&T.indexOf(S)>=0&&v.getRange(r(q.line,q.ch-2),q)==S+S){if(q.ch>2&&/\bstring/.test(v.getTokenTypeAt(r(q.line,q.ch-2))))return e.Pass;R="addFour"}else if(N){var X=q.ch==0?" ":v.getRange(r(q.line,q.ch-1),q);if(!e.isWordChar(V)&&X!=S&&!e.isWordChar(X))R="both";else return e.Pass}else if(F&&(V.length===0||/\s/.test(V)||M.indexOf(V)>-1))R="both";else return e.Pass;if(!I)I=R;else if(I!=R)return e.Pass}var U=E%2?C.charAt(E-1):S,H=E%2?S:C.charAt(E+1);v.operation(function(){if(I=="skip")f(v,1);else if(I=="skipThree")f(v,3);else if(I=="surround"){for(var ee=v.getSelections(),Z=0;Z{(function(e){typeof iW=="object"&&typeof oW=="object"?e($s()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){var t=/MSIE \d/.test(navigator.userAgent)&&(document.documentMode==null||document.documentMode<8),r=e.Pos,n={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<","<":">>",">":"<<"};function i(f){return f&&f.bracketRegex||/[(){}[\]]/}function o(f,p,h){var g=f.getLineHandle(p.line),x=p.ch-1,v=h&&h.afterCursor;v==null&&(v=/(^| )cm-fat-cursor($| )/.test(f.getWrapperElement().className));var S=i(h),D=!v&&x>=0&&S.test(g.text.charAt(x))&&n[g.text.charAt(x)]||S.test(g.text.charAt(x+1))&&n[g.text.charAt(++x)];if(!D)return null;var C=D.charAt(1)==">"?1:-1;if(h&&h.strict&&C>0!=(x==p.ch))return null;var E=f.getTokenTypeAt(r(p.line,x+1)),M=l(f,r(p.line,x+(C>0?1:0)),C,E,h);return M==null?null:{from:r(p.line,x),to:M&&M.pos,match:M&&M.ch==D.charAt(0),forward:C>0}}function l(f,p,h,g,x){for(var v=x&&x.maxScanLineLength||1e4,S=x&&x.maxScanLines||1e3,D=[],C=i(x),E=h>0?Math.min(p.line+S,f.lastLine()+1):Math.max(f.firstLine()-1,p.line-S),M=p.line;M!=E;M+=h){var T=f.getLine(M);if(T){var N=h>0?0:T.length-1,O=h>0?T.length:-1;if(!(T.length>v))for(M==p.line&&(N=p.ch-(h<0?1:0));N!=O;N+=h){var F=T.charAt(N);if(C.test(F)&&(g===void 0||(f.getTokenTypeAt(r(M,N+1))||"")==(g||""))){var I=n[F];if(I&&I.charAt(1)==">"==h>0)D.push(F);else if(D.length)D.pop();else return{pos:r(M,N),ch:F}}}}}return M-h==(h>0?f.lastLine():f.firstLine())?!1:null}function s(f,p,h){for(var g=f.state.matchBrackets.maxHighlightLineLength||1e3,x=h&&h.highlightNonMatching,v=[],S=f.listSelections(),D=0;D{(function(e){typeof sW=="object"&&typeof uW=="object"?e($s()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){"use strict";var t="CodeMirror-hint",r="CodeMirror-hint-active";e.showHint=function(v,S,D){if(!S)return v.showHint(D);D&&D.async&&(S.async=!0);var C={hint:S};if(D)for(var E in D)C[E]=D[E];return v.showHint(C)},e.defineExtension("showHint",function(v){v=l(this,this.getCursor("start"),v);var S=this.listSelections();if(!(S.length>1)){if(this.somethingSelected()){if(!v.hint.supportsSelection)return;for(var D=0;DT.clientHeight+1:!1,Me;setTimeout(function(){Me=C.getScrollInfo()});var le=Oe.bottom-ve;if(le>0){var ne=Oe.bottom-Oe.top,fe=Oe.top-(R.bottom-R.top)-2;ve-Oe.topfe&&(T.style.height=(ne=fe)+"px"),T.style.top=(X=R.top-ne)+ee+"px",U=!1):T.style.height=ve-Oe.top-2+"px"}var Fe=Oe.right-oe;if(De&&(Fe+=C.display.nativeBarWidth),Fe>0&&(Oe.right-Oe.left>oe&&(T.style.width=oe-5+"px",Fe-=Oe.right-Oe.left-oe),T.style.left=(V=Math.max(R.left-Fe-H,0))+"px"),De)for(var me=T.firstChild;me;me=me.nextSibling)me.style.paddingRight=C.display.nativeBarWidth+"px";if(C.addKeyMap(this.keyMap=a(v,{moveFocus:function(ie,ue){D.changeActive(D.selectedHint+ie,ue)},setFocus:function(ie){D.changeActive(ie)},menuSize:function(){return D.screenAmount()},length:O.length,close:function(){v.close()},pick:function(){D.pick()},data:S})),v.options.closeOnUnfocus){var Ue;C.on("blur",this.onBlur=function(){Ue=setTimeout(function(){v.close()},100)}),C.on("focus",this.onFocus=function(){clearTimeout(Ue)})}C.on("scroll",this.onScroll=function(){var ie=C.getScrollInfo(),ue=C.getWrapperElement().getBoundingClientRect();Me||(Me=C.getScrollInfo());var Te=X+Me.top-ie.top,Ce=Te-(M.pageYOffset||(E.documentElement||E.body).scrollTop);if(U||(Ce+=T.offsetHeight),Ce<=ue.top||Ce>=ue.bottom)return v.close();T.style.top=Te+"px",T.style.left=V+Me.left-ie.left+"px"}),e.on(T,"dblclick",function(ie){var ue=u(T,ie.target||ie.srcElement);ue&&ue.hintId!=null&&(D.changeActive(ue.hintId),D.pick())}),e.on(T,"click",function(ie){var ue=u(T,ie.target||ie.srcElement);ue&&ue.hintId!=null&&(D.changeActive(ue.hintId),v.options.completeOnSingleClick&&D.pick())}),e.on(T,"mousedown",function(){setTimeout(function(){C.focus()},20)});var Re=this.getSelectedHintRange();return(Re.from!==0||Re.to!==0)&&this.scrollToActive(),e.signal(S,"select",O[this.selectedHint],T.childNodes[this.selectedHint]),!0}f.prototype={close:function(){if(this.completion.widget==this){this.completion.widget=null,this.hints.parentNode&&this.hints.parentNode.removeChild(this.hints),this.completion.cm.removeKeyMap(this.keyMap);var v=this.completion.cm.getInputField();v.removeAttribute("aria-activedescendant"),v.removeAttribute("aria-owns");var S=this.completion.cm;this.completion.options.closeOnUnfocus&&(S.off("blur",this.onBlur),S.off("focus",this.onFocus)),S.off("scroll",this.onScroll)}},disable:function(){this.completion.cm.removeKeyMap(this.keyMap);var v=this;this.keyMap={Enter:function(){v.picked=!0}},this.completion.cm.addKeyMap(this.keyMap)},pick:function(){this.completion.pick(this.data,this.selectedHint)},changeActive:function(v,S){if(v>=this.data.list.length?v=S?this.data.list.length-1:0:v<0&&(v=S?0:this.data.list.length-1),this.selectedHint!=v){var D=this.hints.childNodes[this.selectedHint];D&&(D.className=D.className.replace(" "+r,""),D.removeAttribute("aria-selected")),D=this.hints.childNodes[this.selectedHint=v],D.className+=" "+r,D.setAttribute("aria-selected","true"),this.completion.cm.getInputField().setAttribute("aria-activedescendant",D.id),this.scrollToActive(),e.signal(this.data,"select",this.data.list[this.selectedHint],D)}},scrollToActive:function(){var v=this.getSelectedHintRange(),S=this.hints.childNodes[v.from],D=this.hints.childNodes[v.to],C=this.hints.firstChild;S.offsetTopthis.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=D.offsetTop+D.offsetHeight-this.hints.clientHeight+C.offsetTop)},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1},getSelectedHintRange:function(){var v=this.completion.options.scrollMargin||0;return{from:Math.max(0,this.selectedHint-v),to:Math.min(this.data.list.length-1,this.selectedHint+v)}}};function p(v,S){if(!v.somethingSelected())return S;for(var D=[],C=0;C0?T(B):F(I+1)})}F(0)};return E.async=!0,E.supportsSelection=!0,E}else return(C=v.getHelper(v.getCursor(),"hintWords"))?function(M){return e.hint.fromList(M,{words:C})}:e.hint.anyword?function(M,T){return e.hint.anyword(M,T)}:function(){}}e.registerHelper("hint","auto",{resolve:g}),e.registerHelper("hint","fromList",function(v,S){var D=v.getCursor(),C=v.getTokenAt(D),E,M=e.Pos(D.line,C.start),T=D;C.start,]/,closeOnPick:!0,closeOnUnfocus:!0,updateOnCursorActivity:!0,completeOnSingleClick:!0,container:null,customKeys:null,extraKeys:null,paddingForScrollbar:!0,moveOnOverlap:!0};e.defineOption("hintOptions",null)})});var pW=st((fW,cW)=>{(function(e){typeof fW=="object"&&typeof cW=="object"?e($s(),Hb()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../dialog/dialog"],e):e(CodeMirror)})(function(e){"use strict";e.defineOption("search",{bottom:!1});function t(i,o,l,s,a){i.openDialog?i.openDialog(o,a,{value:s,selectValueOnOpen:!0,bottom:i.options.search.bottom}):a(prompt(l,s))}function r(i){return i.phrase("Jump to line:")+' '+i.phrase("(Use line:column or scroll% syntax)")+""}function n(i,o){var l=Number(o);return/^[-+]/.test(o)?i.getCursor().line+l:l-1}e.commands.jumpToLine=function(i){var o=i.getCursor();t(i,r(i),i.phrase("Jump to line:"),o.line+1+":"+o.ch,function(l){if(l){var s;if(s=/^\s*([\+\-]?\d+)\s*\:\s*(\d+)\s*$/.exec(l))i.setCursor(n(i,s[1]),Number(s[2]));else if(s=/^\s*([\+\-]?\d+(\.\d+)?)\%\s*/.exec(l)){var a=Math.round(i.lineCount()*Number(s[1])/100);/^[-+]/.test(s[1])&&(a=o.line+a+1),i.setCursor(a-1,o.ch)}else(s=/^\s*\:?\s*([\+\-]?\d+)\s*/.exec(l))&&i.setCursor(n(i,s[1]),o.ch)}})},e.keyMap.default["Alt-G"]="jumpToLine"})});var bM=st((mW,dW)=>{(function(e){typeof mW=="object"&&typeof dW=="object"?e($s()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){"use strict";var t=e.Pos;function r(S){var D=S.flags;return D??(S.ignoreCase?"i":"")+(S.global?"g":"")+(S.multiline?"m":"")}function n(S,D){for(var C=r(S),E=C,M=0;MN);O++){var F=S.getLine(T++);E=E==null?F:E+` `+F}M=M*2,D.lastIndex=C.ch;var I=D.exec(E);if(I){var B=E.slice(0,I.index).split(` `),L=I[0].split(` `),q=C.line+B.length-1,R=B[B.length-1].length;return{from:t(q,R),to:t(q+L.length-1,L.length==1?R+L[0].length:L[L.length-1].length),match:I}}}}function s(S,D,C){for(var E,M=0;M<=S.length;){D.lastIndex=M;var T=D.exec(S);if(!T)break;var N=T.index+T[0].length;if(N>S.length-C)break;(!E||N>E.index+E[0].length)&&(E=T),M=T.index+1}return E}function a(S,D,C){D=n(D,"g");for(var E=C.line,M=C.ch,T=S.firstLine();E>=T;E--,M=-1){var N=S.getLine(E),O=s(N,D,M<0?0:N.length-M);if(O)return{from:t(E,O.index),to:t(E,O.index+O[0].length),match:O}}}function u(S,D,C){if(!i(D))return a(S,D,C);D=n(D,"gm");for(var E,M=1,T=S.getLine(C.line).length-C.ch,N=C.line,O=S.firstLine();N>=O;){for(var F=0;F=O;F++){var I=S.getLine(N--);E=E==null?I:I+` `+E}M*=2;var B=s(E,D,T);if(B){var L=E.slice(0,B.index).split(` `),q=B[0].split(` -`),R=N+L.length,V=L[L.length-1].length;return{from:t(R,V),to:t(R+q.length-1,q.length==1?V+q[0].length:q[q.length-1].length),match:B}}}}var f,p;String.prototype.normalize?(f=function(S){return S.normalize("NFD").toLowerCase()},p=function(S){return S.normalize("NFD")}):(f=function(S){return S.toLowerCase()},p=function(S){return S});function h(S,D,C,E){if(S.length==D.length)return C;for(var M=0,T=C+Math.max(0,S.length-D.length);;){if(M==T)return M;var N=M+T>>1,O=E(S.slice(0,N)).length;if(O==C)return N;O>C?T=N:M=N+1}}function g(S,D,C,E){if(!D.length)return null;var M=E?f:p,T=M(D).split(/\r|\n\r?/);e:for(var N=C.line,O=C.ch,F=S.lastLine()+1-T.length;N<=F;N++,O=0){var I=S.getLine(N).slice(O),B=M(I);if(T.length==1){var L=B.indexOf(T[0]);if(L==-1)continue e;var C=h(I,B,L,M)+O;return{from:t(N,h(I,B,L,M)+O),to:t(N,h(I,B,L+T[0].length,M)+O)}}else{var q=B.length-T[0].length;if(B.slice(q)!=T[0])continue e;for(var R=1;R=F;N--,O=-1){var I=S.getLine(N);O>-1&&(I=I.slice(0,O));var B=M(I);if(T.length==1){var L=B.lastIndexOf(T[0]);if(L==-1)continue e;return{from:t(N,h(I,B,L,M)),to:t(N,h(I,B,L+T[0].length,M))}}else{var q=T[T.length-1];if(B.slice(0,q.length)!=q)continue e;for(var R=1,C=N-T.length+1;R(this.doc.getLine(D.line)||"").length&&(D.ch=0,D.line++)),e.cmpPos(D,this.doc.clipPos(D))!=0))return this.atOccurrence=!1;var C=this.matches(S,D);if(this.afterEmptyMatch=C&&e.cmpPos(C.from,C.to)==0,C)return this.pos=C,this.atOccurrence=!0,this.pos.match||!0;var E=t(S?this.doc.firstLine():this.doc.lastLine()+1,0);return this.pos={from:E,to:E},this.atOccurrence=!1},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(S,D){if(this.atOccurrence){var C=e.splitLines(S);this.doc.replaceRange(C,this.pos.from,this.pos.to,D),this.pos.to=t(this.pos.from.line+C.length-1,C[C.length-1].length+(C.length==1?this.pos.from.ch:0))}}},e.defineExtension("getSearchCursor",function(S,D,C){return new v(this.doc,S,D,C)}),e.defineDocExtension("getSearchCursor",function(S,D,C){return new v(this,S,D,C)}),e.defineExtension("selectMatches",function(S,D){for(var C=[],E=this.getSearchCursor(S,this.getCursor("from"),D);E.findNext()&&!(e.cmpPos(E.to(),this.getCursor("to"))>0);)C.push({anchor:E.from(),head:E.to()});C.length&&this.setSelections(C,0)})})});var fW=st((uW,lW)=>{(function(e){typeof uW=="object"&&typeof lW=="object"?e($s(),hM(),Ub()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","./searchcursor","../dialog/dialog"],e):e(CodeMirror)})(function(e){"use strict";e.defineOption("search",{bottom:!1});function t(N,O){return typeof N=="string"?N=new RegExp(N.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),O?"gi":"g"):N.global||(N=new RegExp(N.source,N.ignoreCase?"gi":"g")),{token:function(F){N.lastIndex=F.pos;var I=N.exec(F.string);if(I&&I.index==F.pos)return F.pos+=I[0].length||1,"searching";I?F.pos=I.index:F.skipToEnd()}}}function r(){this.posFrom=this.posTo=this.lastQuery=this.query=null,this.overlay=null}function n(N){return N.state.search||(N.state.search=new r)}function i(N){return typeof N=="string"&&N==N.toLowerCase()}function o(N,O,F){return N.getSearchCursor(O,F,{caseFold:i(O),multiline:!0})}function l(N,O,F,I,B){N.openDialog(O,I,{value:F,selectValueOnOpen:!0,closeOnEnter:!1,onClose:function(){x(N)},onKeyDown:B,bottom:N.options.search.bottom})}function s(N,O,F,I,B){N.openDialog?N.openDialog(O,B,{value:I,selectValueOnOpen:!0,bottom:N.options.search.bottom}):B(prompt(F,I))}function a(N,O,F,I){N.openConfirm?N.openConfirm(O,I):confirm(F)&&I[0]()}function u(N){return N.replace(/\\([nrt\\])/g,function(O,F){return F=="n"?` -`:F=="r"?"\r":F=="t"?" ":F=="\\"?"\\":O})}function f(N){var O=N.match(/^\/(.*)\/([a-z]*)$/);if(O)try{N=new RegExp(O[1],O[2].indexOf("i")==-1?"":"i")}catch{}else N=u(N);return(typeof N=="string"?N=="":N.test(""))&&(N=/x^/),N}function p(N,O,F){O.queryText=F,O.query=f(F),N.removeOverlay(O.overlay,i(O.query)),O.overlay=t(O.query,i(O.query)),N.addOverlay(O.overlay),N.showMatchesOnScrollbar&&(O.annotate&&(O.annotate.clear(),O.annotate=null),O.annotate=N.showMatchesOnScrollbar(O.query,i(O.query)))}function h(N,O,F,I){var B=n(N);if(B.query)return g(N,O);var L=N.getSelection()||B.lastQuery;if(L instanceof RegExp&&L.source=="x^"&&(L=null),F&&N.openDialog){var q=null,R=function(V,X){e.e_stop(X),V&&(V!=B.queryText&&(p(N,B,V),B.posFrom=B.posTo=N.getCursor()),q&&(q.style.opacity=1),g(N,X.shiftKey,function(U,H){var ee;H.line<3&&document.querySelector&&(ee=N.display.wrapper.querySelector(".CodeMirror-dialog"))&&ee.getBoundingClientRect().bottom-4>N.cursorCoords(H,"window").top&&((q=ee).style.opacity=.4)}))};l(N,S(N),L,R,function(V,X){var U=e.keyName(V),H=N.getOption("extraKeys"),ee=H&&H[U]||e.keyMap[N.getOption("keyMap")][U];ee=="findNext"||ee=="findPrev"||ee=="findPersistentNext"||ee=="findPersistentPrev"?(e.e_stop(V),p(N,n(N),X),N.execCommand(ee)):(ee=="find"||ee=="findPersistent")&&(e.e_stop(V),R(X,V))}),I&&L&&(p(N,B,L),g(N,O))}else s(N,S(N),"Search for:",L,function(V){V&&!B.query&&N.operation(function(){p(N,B,V),B.posFrom=B.posTo=N.getCursor(),g(N,O)})})}function g(N,O,F){N.operation(function(){var I=n(N),B=o(N,I.query,O?I.posFrom:I.posTo);!B.find(O)&&(B=o(N,I.query,O?e.Pos(N.lastLine()):e.Pos(N.firstLine(),0)),!B.find(O))||(N.setSelection(B.from(),B.to()),N.scrollIntoView({from:B.from(),to:B.to()},20),I.posFrom=B.from(),I.posTo=B.to(),F&&F(B.from(),B.to()))})}function x(N){N.operation(function(){var O=n(N);O.lastQuery=O.query,O.query&&(O.query=O.queryText=null,N.removeOverlay(O.overlay),O.annotate&&(O.annotate.clear(),O.annotate=null))})}function v(N,O){var F=N?document.createElement(N):document.createDocumentFragment();for(var I in O)F[I]=O[I];for(var B=2;B{typeof window<"u"&&function(e,t){try{e.querySelector(":scope body")}catch{["querySelector","querySelectorAll"].forEach(function(n){let i=t[n];t[n]=function(o){if(/(^|,)\s*:scope/.test(o)){let l=this.id;this.id="ID_"+Date.now(),o=o.replace(/((^|,)\s*):scope/g,"$1#"+this.id);let s=e[n](o);return this.id=l,s}else return i.call(this,o)}})}}(window.document,Element.prototype)});function tr(e){return function(){return e}}var Zf=Se(()=>{});function xW(e){return e>1?0:e<-1?Vs:Math.acos(e)}function bM(e){return e>=1?Kv:e<=-1?-Kv:Math.asin(e)}var wM,Zi,Ws,vW,Iu,go,yr,ki,Vs,Kv,rs,Xi=Se(()=>{wM=Math.abs,Zi=Math.atan2,Ws=Math.cos,vW=Math.max,Iu=Math.min,go=Math.sin,yr=Math.sqrt,ki=1e-12,Vs=Math.PI,Kv=Vs/2,rs=2*Vs});function yW(e){this._+=e[0];for(let t=1,r=e.length;t=0))throw new Error(`invalid digits: ${e}`);if(t>15)return yW;let r=10**t;return function(n){this._+=n[0];for(let i=1,o=n.length;i{DM=Math.PI,SM=2*DM,Ap=1e-6,dye=SM-Ap;Cp=class{constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=t==null?yW:hye(t)}moveTo(t,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,r){this._append`L${this._x1=+t},${this._y1=+r}`}quadraticCurveTo(t,r,n,i){this._append`Q${+t},${+r},${this._x1=+n},${this._y1=+i}`}bezierCurveTo(t,r,n,i,o,l){this._append`C${+t},${+r},${+n},${+i},${this._x1=+o},${this._y1=+l}`}arcTo(t,r,n,i,o){if(t=+t,r=+r,n=+n,i=+i,o=+o,o<0)throw new Error(`negative radius: ${o}`);let l=this._x1,s=this._y1,a=n-t,u=i-r,f=l-t,p=s-r,h=f*f+p*p;if(this._x1===null)this._append`M${this._x1=t},${this._y1=r}`;else if(h>Ap)if(!(Math.abs(p*a-u*f)>Ap)||!o)this._append`L${this._x1=t},${this._y1=r}`;else{let g=n-l,x=i-s,v=a*a+u*u,S=g*g+x*x,D=Math.sqrt(v),C=Math.sqrt(h),E=o*Math.tan((DM-Math.acos((v+h-S)/(2*D*C)))/2),M=E/C,T=E/D;Math.abs(M-1)>Ap&&this._append`L${t+M*f},${r+M*p}`,this._append`A${o},${o},0,0,${+(p*g>f*x)},${this._x1=t+T*a},${this._y1=r+T*u}`}}arc(t,r,n,i,o,l){if(t=+t,r=+r,n=+n,l=!!l,n<0)throw new Error(`negative radius: ${n}`);let s=n*Math.cos(i),a=n*Math.sin(i),u=t+s,f=r+a,p=1^l,h=l?i-o:o-i;this._x1===null?this._append`M${u},${f}`:(Math.abs(this._x1-u)>Ap||Math.abs(this._y1-f)>Ap)&&this._append`L${u},${f}`,n&&(h<0&&(h=h%SM+SM),h>dye?this._append`A${n},${n},0,1,${p},${t-s},${r-a}A${n},${n},0,1,${p},${this._x1=u},${this._y1=f}`:h>Ap&&this._append`A${n},${n},0,${+(h>=DM)},${p},${this._x1=t+n*Math.cos(o)},${this._y1=r+n*Math.sin(o)}`)}rect(t,r,n,i){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}h${n=+n}v${+i}h${-n}Z`}toString(){return this._}};wW.prototype=Cp.prototype});var DW=Se(()=>{bW()});function ku(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(r==null)t=null;else{let n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);t=n}return e},()=>new Cp(t)}var Wd=Se(()=>{DW()});function gye(e){return e.innerRadius}function vye(e){return e.outerRadius}function xye(e){return e.startAngle}function yye(e){return e.endAngle}function wye(e){return e&&e.padAngle}function bye(e,t,r,n,i,o,l,s){var a=r-e,u=n-t,f=l-i,p=s-o,h=p*a-f*u;if(!(h*hV*V+X*X&&(F=B,I=L),{cx:F,cy:I,x01:-f,y01:-p,x11:F*(i/T-1),y11:I*(i/T-1)}}function SW(){var e=gye,t=vye,r=tr(0),n=null,i=xye,o=yye,l=wye,s=null,a=ku(u);function u(){var f,p,h=+e.apply(this,arguments),g=+t.apply(this,arguments),x=i.apply(this,arguments)-Kv,v=o.apply(this,arguments)-Kv,S=wM(v-x),D=v>x;if(s||(s=f=a()),gki))s.moveTo(0,0);else if(S>rs-ki)s.moveTo(g*Ws(x),g*go(x)),s.arc(0,0,g,x,v,!D),h>ki&&(s.moveTo(h*Ws(v),h*go(v)),s.arc(0,0,h,v,x,D));else{var C=x,E=v,M=x,T=v,N=S,O=S,F=l.apply(this,arguments)/2,I=F>ki&&(n?+n.apply(this,arguments):yr(h*h+g*g)),B=Iu(wM(g-h)/2,+r.apply(this,arguments)),L=B,q=B,R,V;if(I>ki){var X=bM(I/h*go(F)),U=bM(I/g*go(F));(N-=X*2)>ki?(X*=D?1:-1,M+=X,T-=X):(N=0,M=T=(x+v)/2),(O-=U*2)>ki?(U*=D?1:-1,C+=U,E-=U):(O=0,C=E=(x+v)/2)}var H=g*Ws(C),ee=g*go(C),Z=h*Ws(T),ce=h*go(T);if(B>ki){var be=g*Ws(E),de=g*go(E),ne=h*Ws(M),ve=h*go(M),Te;if(Ski?q>ki?(R=Vb(ne,ve,H,ee,g,q,D),V=Vb(be,de,Z,ce,g,q,D),s.moveTo(R.cx+R.x01,R.cy+R.y01),qki)||!(N>ki)?s.lineTo(Z,ce):L>ki?(R=Vb(Z,ce,be,de,h,-L,D),V=Vb(H,ee,ne,ve,h,-L,D),s.lineTo(R.cx+R.x01,R.cy+R.y01),L{Zf();Xi();Wd()});function Xf(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}var EW,Vd=Se(()=>{EW=Array.prototype.slice});function AW(e){this._context=e}function Kf(e){return new AW(e)}var Jv=Se(()=>{AW.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}}});function Gd(e){return e[0]}function Yd(e){return e[1]}var Gb=Se(()=>{});function Zd(e,t){var r=tr(!0),n=null,i=Kf,o=null,l=ku(s);e=typeof e=="function"?e:e===void 0?Gd:tr(e),t=typeof t=="function"?t:t===void 0?Yd:tr(t);function s(a){var u,f=(a=Xf(a)).length,p,h=!1,g;for(n==null&&(o=i(g=l())),u=0;u<=f;++u)!(u{Vd();Zf();Jv();Wd();Gb()});function Zb(e,t,r){var n=null,i=tr(!0),o=null,l=Kf,s=null,a=ku(u);e=typeof e=="function"?e:e===void 0?Gd:tr(+e),t=typeof t=="function"?t:t===void 0?tr(0):tr(+t),r=typeof r=="function"?r:r===void 0?Yd:tr(+r);function u(p){var h,g,x,v=(p=Xf(p)).length,S,D=!1,C,E=new Array(v),M=new Array(v);for(o==null&&(s=l(C=a())),h=0;h<=v;++h){if(!(h=g;--x)s.point(E[x],M[x]);s.lineEnd(),s.areaEnd()}D&&(E[h]=+e(S,h,p),M[h]=+t(S,h,p),s.point(n?+n(S,h,p):E[h],r?+r(S,h,p):M[h]))}if(C)return s=null,C+""||null}function f(){return Zd().defined(i).curve(l).context(o)}return u.x=function(p){return arguments.length?(e=typeof p=="function"?p:tr(+p),n=null,u):e},u.x0=function(p){return arguments.length?(e=typeof p=="function"?p:tr(+p),u):e},u.x1=function(p){return arguments.length?(n=p==null?null:typeof p=="function"?p:tr(+p),u):n},u.y=function(p){return arguments.length?(t=typeof p=="function"?p:tr(+p),r=null,u):t},u.y0=function(p){return arguments.length?(t=typeof p=="function"?p:tr(+p),u):t},u.y1=function(p){return arguments.length?(r=p==null?null:typeof p=="function"?p:tr(+p),u):r},u.lineX0=u.lineY0=function(){return f().x(e).y(t)},u.lineY1=function(){return f().x(e).y(r)},u.lineX1=function(){return f().x(n).y(t)},u.defined=function(p){return arguments.length?(i=typeof p=="function"?p:tr(!!p),u):i},u.curve=function(p){return arguments.length?(l=p,o!=null&&(s=l(o)),u):l},u.context=function(p){return arguments.length?(p==null?o=s=null:s=l(o=p),u):o},u}var NM=Se(()=>{Vd();Zf();Jv();Yb();Wd();Gb()});function CW(e,t){return te?1:t>=e?0:NaN}var MW=Se(()=>{});function TW(e){return e}var _W=Se(()=>{});function OW(){var e=TW,t=CW,r=null,n=tr(0),i=tr(rs),o=tr(0);function l(s){var a,u=(s=Xf(s)).length,f,p,h=0,g=new Array(u),x=new Array(u),v=+n.apply(this,arguments),S=Math.min(rs,Math.max(-rs,i.apply(this,arguments)-v)),D,C=Math.min(Math.abs(S)/u,o.apply(this,arguments)),E=C*(S<0?-1:1),M;for(a=0;a0&&(h+=M);for(t!=null?g.sort(function(T,N){return t(x[T],x[N])}):r!=null&&g.sort(function(T,N){return r(s[T],s[N])}),a=0,p=h?(S-u*E)/h:0;a0?M*p:0)+E,x[f]={data:s[f],index:a,value:M,startAngle:v,endAngle:D,padAngle:C};return x}return l.value=function(s){return arguments.length?(e=typeof s=="function"?s:tr(+s),l):e},l.sortValues=function(s){return arguments.length?(t=s,r=null,l):t},l.sort=function(s){return arguments.length?(r=s,t=null,l):r},l.startAngle=function(s){return arguments.length?(n=typeof s=="function"?s:tr(+s),l):n},l.endAngle=function(s){return arguments.length?(i=typeof s=="function"?s:tr(+s),l):i},l.padAngle=function(s){return arguments.length?(o=typeof s=="function"?s:tr(+s),l):o},l}var FW=Se(()=>{Vd();Zf();MW();_W();Xi()});function IW(e){this._curve=e}function Xd(e){function t(r){return new IW(e(r))}return t._curve=e,t}var Xb,EM=Se(()=>{Jv();Xb=Xd(Kf);IW.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(e,t){this._curve.point(t*Math.sin(e),t*-Math.cos(e))}}});function Kd(e){var t=e.curve;return e.angle=e.x,delete e.x,e.radius=e.y,delete e.y,e.curve=function(r){return arguments.length?t(Xd(r)):t()._curve},e}function AM(){return Kd(Zd().curve(Xb))}var CM=Se(()=>{EM();Yb()});function MM(){var e=Zb().curve(Xb),t=e.curve,r=e.lineX0,n=e.lineX1,i=e.lineY0,o=e.lineY1;return e.angle=e.x,delete e.x,e.startAngle=e.x0,delete e.x0,e.endAngle=e.x1,delete e.x1,e.radius=e.y,delete e.y,e.innerRadius=e.y0,delete e.y0,e.outerRadius=e.y1,delete e.y1,e.lineStartAngle=function(){return Kd(r())},delete e.lineX0,e.lineEndAngle=function(){return Kd(n())},delete e.lineX1,e.lineInnerRadius=function(){return Kd(i())},delete e.lineY0,e.lineOuterRadius=function(){return Kd(o())},delete e.lineY1,e.curve=function(l){return arguments.length?t(Xd(l)):t()._curve},e}var kW=Se(()=>{EM();NM();CM()});function Mp(e,t){return[(t=+t)*Math.cos(e-=Math.PI/2),t*Math.sin(e)]}var TM=Se(()=>{});function Jb(e){return new Kb(e,!0)}function Qb(e){return new Kb(e,!1)}function LW(e){return new _M(e)}var Kb,_M,OM=Se(()=>{TM();Kb=class{constructor(t,r){this._context=t,this._x=r}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(t,r){switch(t=+t,r=+r,this._point){case 0:{this._point=1,this._line?this._context.lineTo(t,r):this._context.moveTo(t,r);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,r,t,r):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+r)/2,t,this._y0,t,r);break}}this._x0=t,this._y0=r}},_M=class{constructor(t){this._context=t}lineStart(){this._point=0}lineEnd(){}point(t,r){if(t=+t,r=+r,this._point===0)this._point=1;else{let n=Mp(this._x0,this._y0),i=Mp(this._x0,this._y0=(this._y0+r)/2),o=Mp(t,this._y0),l=Mp(t,r);this._context.moveTo(...n),this._context.bezierCurveTo(...i,...o,...l)}this._x0=t,this._y0=r}}});function Dye(e){return e.source}function Sye(e){return e.target}function Qv(e){let t=Dye,r=Sye,n=Gd,i=Yd,o=null,l=null,s=ku(a);function a(){let u,f=EW.call(arguments),p=t.apply(this,f),h=r.apply(this,f);if(o==null&&(l=e(u=s())),l.lineStart(),f[0]=p,l.point(+n.apply(this,f),+i.apply(this,f)),f[0]=h,l.point(+n.apply(this,f),+i.apply(this,f)),l.lineEnd(),u)return l=null,u+""||null}return a.source=function(u){return arguments.length?(t=u,a):t},a.target=function(u){return arguments.length?(r=u,a):r},a.x=function(u){return arguments.length?(n=typeof u=="function"?u:tr(+u),a):n},a.y=function(u){return arguments.length?(i=typeof u=="function"?u:tr(+u),a):i},a.context=function(u){return arguments.length?(u==null?o=l=null:l=e(o=u),a):o},a}function BW(){return Qv(Jb)}function PW(){return Qv(Qb)}function RW(){let e=Qv(LW);return e.angle=e.x,delete e.x,e.radius=e.y,delete e.y,e}var qW=Se(()=>{Vd();Zf();OM();Wd();Gb()});var Nye,jb,FM=Se(()=>{Xi();Nye=yr(3),jb={draw(e,t){let r=yr(t+Iu(t/28,.75))*.59436,n=r/2,i=n*Nye;e.moveTo(0,r),e.lineTo(0,-r),e.moveTo(-i,-n),e.lineTo(i,n),e.moveTo(-i,n),e.lineTo(i,-n)}}});var Jd,IM=Se(()=>{Xi();Jd={draw(e,t){let r=yr(t/Vs);e.moveTo(r,0),e.arc(0,0,r,0,rs)}}});var eD,kM=Se(()=>{Xi();eD={draw(e,t){let r=yr(t/5)/2;e.moveTo(-3*r,-r),e.lineTo(-r,-r),e.lineTo(-r,-3*r),e.lineTo(r,-3*r),e.lineTo(r,-r),e.lineTo(3*r,-r),e.lineTo(3*r,r),e.lineTo(r,r),e.lineTo(r,3*r),e.lineTo(-r,3*r),e.lineTo(-r,r),e.lineTo(-3*r,r),e.closePath()}}});var zW,Eye,tD,LM=Se(()=>{Xi();zW=yr(1/3),Eye=zW*2,tD={draw(e,t){let r=yr(t/Eye),n=r*zW;e.moveTo(0,-r),e.lineTo(n,0),e.lineTo(0,r),e.lineTo(-n,0),e.closePath()}}});var rD,BM=Se(()=>{Xi();rD={draw(e,t){let r=yr(t)*.62625;e.moveTo(0,-r),e.lineTo(r,0),e.lineTo(0,r),e.lineTo(-r,0),e.closePath()}}});var nD,PM=Se(()=>{Xi();nD={draw(e,t){let r=yr(t-Iu(t/7,2))*.87559;e.moveTo(-r,0),e.lineTo(r,0),e.moveTo(0,r),e.lineTo(0,-r)}}});var iD,RM=Se(()=>{Xi();iD={draw(e,t){let r=yr(t),n=-r/2;e.rect(n,n,r,r)}}});var oD,qM=Se(()=>{Xi();oD={draw(e,t){let r=yr(t)*.4431;e.moveTo(r,r),e.lineTo(r,-r),e.lineTo(-r,-r),e.lineTo(-r,r),e.closePath()}}});var Aye,UW,Cye,Mye,aD,zM=Se(()=>{Xi();Aye=.8908130915292852,UW=go(Vs/10)/go(7*Vs/10),Cye=go(rs/10)*UW,Mye=-Ws(rs/10)*UW,aD={draw(e,t){let r=yr(t*Aye),n=Cye*r,i=Mye*r;e.moveTo(0,-r),e.lineTo(n,i);for(let o=1;o<5;++o){let l=rs*o/5,s=Ws(l),a=go(l);e.lineTo(a*r,-s*r),e.lineTo(s*n-a*i,a*n+s*i)}e.closePath()}}});var UM,sD,HM=Se(()=>{Xi();UM=yr(3),sD={draw(e,t){let r=-yr(t/(UM*3));e.moveTo(0,r*2),e.lineTo(-UM*r,-r),e.lineTo(UM*r,-r),e.closePath()}}});var Tye,uD,$M=Se(()=>{Xi();Tye=yr(3),uD={draw(e,t){let r=yr(t)*.6824,n=r/2,i=r*Tye/2;e.moveTo(0,-r),e.lineTo(i,n),e.lineTo(-i,n),e.closePath()}}});var ns,is,WM,_ye,lD,VM=Se(()=>{Xi();ns=-.5,is=yr(3)/2,WM=1/yr(12),_ye=(WM/2+1)*3,lD={draw(e,t){let r=yr(t/_ye),n=r/2,i=r*WM,o=n,l=r*WM+r,s=-o,a=l;e.moveTo(n,i),e.lineTo(o,l),e.lineTo(s,a),e.lineTo(ns*n-is*i,is*n+ns*i),e.lineTo(ns*o-is*l,is*o+ns*l),e.lineTo(ns*s-is*a,is*s+ns*a),e.lineTo(ns*n+is*i,ns*i-is*n),e.lineTo(ns*o+is*l,ns*l-is*o),e.lineTo(ns*s+is*a,ns*a-is*s),e.closePath()}}});var jv,GM=Se(()=>{Xi();jv={draw(e,t){let r=yr(t-Iu(t/6,1.7))*.6189;e.moveTo(-r,-r),e.lineTo(r,r),e.moveTo(-r,r),e.lineTo(r,-r)}}});function ZM(e,t){let r=null,n=ku(i);e=typeof e=="function"?e:tr(e||Jd),t=typeof t=="function"?t:tr(t===void 0?64:+t);function i(){let o;if(r||(r=o=n()),e.apply(this,arguments).draw(r,+t.apply(this,arguments)),o)return r=null,o+""||null}return i.type=function(o){return arguments.length?(e=typeof o=="function"?o:tr(o),i):e},i.size=function(o){return arguments.length?(t=typeof o=="function"?o:tr(+o),i):t},i.context=function(o){return arguments.length?(r=o??null,i):r},i}var YM,HW,$W=Se(()=>{Zf();Wd();FM();IM();kM();LM();BM();PM();RM();qM();zM();HM();$M();VM();GM();YM=[Jd,eD,tD,iD,aD,sD,lD],HW=[Jd,nD,jv,uD,jb,oD,rD]});function os(){}var e0=Se(()=>{});function Qd(e,t,r){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+r)/6)}function t0(e){this._context=e}function WW(e){return new t0(e)}var r0=Se(()=>{t0.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Qd(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Qd(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}}});function VW(e){this._context=e}function GW(e){return new VW(e)}var YW=Se(()=>{e0();r0();VW.prototype={areaStart:os,areaEnd:os,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:Qd(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}}});function ZW(e){this._context=e}function XW(e){return new ZW(e)}var KW=Se(()=>{r0();ZW.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+e)/6,n=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:Qd(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}}});function JW(e,t){this._basis=new t0(e),this._beta=t}var QW,jW=Se(()=>{r0();JW.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var e=this._x,t=this._y,r=e.length-1;if(r>0)for(var n=e[0],i=t[0],o=e[r]-n,l=t[r]-i,s=-1,a;++s<=r;)a=s/r,this._basis.point(this._beta*e[s]+(1-this._beta)*(n+a*o),this._beta*t[s]+(1-this._beta)*(i+a*l));this._x=this._y=null,this._basis.lineEnd()},point:function(e,t){this._x.push(+e),this._y.push(+t)}};QW=function e(t){function r(n){return t===1?new t0(n):new JW(n,t)}return r.beta=function(n){return e(+n)},r}(.85)});function jd(e,t,r){e._context.bezierCurveTo(e._x1+e._k*(e._x2-e._x0),e._y1+e._k*(e._y2-e._y0),e._x2+e._k*(e._x1-t),e._y2+e._k*(e._y1-r),e._x2,e._y2)}function fD(e,t){this._context=e,this._k=(1-t)/6}var eV,n0=Se(()=>{fD.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:jd(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2,this._x1=e,this._y1=t;break;case 2:this._point=3;default:jd(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};eV=function e(t){function r(n){return new fD(n,t)}return r.tension=function(n){return e(+n)},r}(0)});function cD(e,t){this._context=e,this._k=(1-t)/6}var tV,XM=Se(()=>{e0();n0();cD.prototype={areaStart:os,areaEnd:os,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:jd(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};tV=function e(t){function r(n){return new cD(n,t)}return r.tension=function(n){return e(+n)},r}(0)});function pD(e,t){this._context=e,this._k=(1-t)/6}var rV,KM=Se(()=>{n0();pD.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:jd(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};rV=function e(t){function r(n){return new pD(n,t)}return r.tension=function(n){return e(+n)},r}(0)});function i0(e,t,r){var n=e._x1,i=e._y1,o=e._x2,l=e._y2;if(e._l01_a>ki){var s=2*e._l01_2a+3*e._l01_a*e._l12_a+e._l12_2a,a=3*e._l01_a*(e._l01_a+e._l12_a);n=(n*s-e._x0*e._l12_2a+e._x2*e._l01_2a)/a,i=(i*s-e._y0*e._l12_2a+e._y2*e._l01_2a)/a}if(e._l23_a>ki){var u=2*e._l23_2a+3*e._l23_a*e._l12_a+e._l12_2a,f=3*e._l23_a*(e._l23_a+e._l12_a);o=(o*u+e._x1*e._l23_2a-t*e._l12_2a)/f,l=(l*u+e._y1*e._l23_2a-r*e._l12_2a)/f}e._context.bezierCurveTo(n,i,o,l,e._x2,e._y2)}function nV(e,t){this._context=e,this._alpha=t}var iV,mD=Se(()=>{Xi();n0();nV.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3;default:i0(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};iV=function e(t){function r(n){return t?new nV(n,t):new fD(n,0)}return r.alpha=function(n){return e(+n)},r}(.5)});function oV(e,t){this._context=e,this._alpha=t}var aV,sV=Se(()=>{XM();e0();mD();oV.prototype={areaStart:os,areaEnd:os,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:i0(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};aV=function e(t){function r(n){return t?new oV(n,t):new cD(n,0)}return r.alpha=function(n){return e(+n)},r}(.5)});function uV(e,t){this._context=e,this._alpha=t}var lV,fV=Se(()=>{KM();mD();uV.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:i0(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};lV=function e(t){function r(n){return t?new uV(n,t):new pD(n,0)}return r.alpha=function(n){return e(+n)},r}(.5)});function cV(e){this._context=e}function pV(e){return new cV(e)}var mV=Se(()=>{e0();cV.prototype={areaStart:os,areaEnd:os,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}}});function dV(e){return e<0?-1:1}function hV(e,t,r){var n=e._x1-e._x0,i=t-e._x1,o=(e._y1-e._y0)/(n||i<0&&-0),l=(r-e._y1)/(i||n<0&&-0),s=(o*i+l*n)/(n+i);return(dV(o)+dV(l))*Math.min(Math.abs(o),Math.abs(l),.5*Math.abs(s))||0}function gV(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function JM(e,t,r){var n=e._x0,i=e._y0,o=e._x1,l=e._y1,s=(o-n)/3;e._context.bezierCurveTo(n+s,i+s*t,o-s,l-s*r,o,l)}function dD(e){this._context=e}function vV(e){this._context=new xV(e)}function xV(e){this._context=e}function yV(e){return new dD(e)}function wV(e){return new vV(e)}var bV=Se(()=>{dD.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:JM(this,this._t0,gV(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var r=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,JM(this,gV(this,r=hV(this,e,t)),r);break;default:JM(this,this._t0,r=hV(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}};(vV.prototype=Object.create(dD.prototype)).point=function(e,t){dD.prototype.point.call(this,t,e)};xV.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,r,n,i,o){this._context.bezierCurveTo(t,e,n,r,o,i)}}});function SV(e){this._context=e}function DV(e){var t,r=e.length-1,n,i=new Array(r),o=new Array(r),l=new Array(r);for(i[0]=0,o[0]=2,l[0]=e[0]+2*e[1],t=1;t=0;--t)i[t]=(l[t]-i[t+1])/o[t];for(o[r-1]=(e[r]+i[r-1])/2,t=0;t{SV.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,r=e.length;if(r)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),r===2)this._context.lineTo(e[1],t[1]);else for(var n=DV(e),i=DV(t),o=0,l=1;l{hD.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var r=this._x*(1-this._t)+e*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,t)}break}}this._x=e,this._y=t}}});function Gs(e,t){if((l=e.length)>1)for(var r=1,n,i,o=e[t[0]],l,s=o.length;r{});function Ys(e){for(var t=e.length,r=new Array(t);--t>=0;)r[t]=t;return r}var th=Se(()=>{});function Oye(e,t){return e[t]}function Fye(e){let t=[];return t.key=e,t}function _V(){var e=tr([]),t=Ys,r=Gs,n=Oye;function i(o){var l=Array.from(e.apply(this,arguments),Fye),s,a=l.length,u=-1,f;for(let p of o)for(s=0,++u;s{Vd();Zf();eh();th()});function FV(e,t){if((n=e.length)>0){for(var r,n,i=0,o=e[0].length,l;i{eh()});function kV(e,t){if((a=e.length)>0)for(var r,n=0,i,o,l,s,a,u=e[t[0]].length;n0?(i[0]=l,i[1]=l+=o):o<0?(i[1]=s,i[0]=s+=o):(i[0]=0,i[1]=o)}var LV=Se(()=>{});function BV(e,t){if((i=e.length)>0){for(var r=0,n=e[t[0]],i,o=n.length;r{eh()});function RV(e,t){if(!(!((l=e.length)>0)||!((o=(i=e[t[0]]).length)>0))){for(var r=0,n=1,i,o,l;n{eh()});function gD(e){var t=e.map(Iye);return Ys(e).sort(function(r,n){return t[r]-t[n]})}function Iye(e){for(var t=-1,r=0,n=e.length,i,o=-1/0;++to&&(o=i,r=t);return r}var QM=Se(()=>{th()});function vD(e){var t=e.map(jM);return Ys(e).sort(function(r,n){return t[r]-t[n]})}function jM(e){for(var t=0,r=-1,n=e.length,i;++r{th()});function zV(e){return vD(e).reverse()}var UV=Se(()=>{xD()});function HV(e){var t=e.length,r,n,i=e.map(jM),o=gD(e),l=0,s=0,a=[],u=[];for(r=0;r{QM();xD()});function WV(e){return Ys(e).reverse()}var VV=Se(()=>{th()});var o0={};wu(o0,{arc:()=>SW,area:()=>Zb,areaRadial:()=>MM,curveBasis:()=>WW,curveBasisClosed:()=>GW,curveBasisOpen:()=>XW,curveBumpX:()=>Jb,curveBumpY:()=>Qb,curveBundle:()=>QW,curveCardinal:()=>eV,curveCardinalClosed:()=>tV,curveCardinalOpen:()=>rV,curveCatmullRom:()=>iV,curveCatmullRomClosed:()=>aV,curveCatmullRomOpen:()=>lV,curveLinear:()=>Kf,curveLinearClosed:()=>pV,curveMonotoneX:()=>yV,curveMonotoneY:()=>wV,curveNatural:()=>NV,curveStep:()=>AV,curveStepAfter:()=>MV,curveStepBefore:()=>CV,line:()=>Zd,lineRadial:()=>AM,link:()=>Qv,linkHorizontal:()=>BW,linkRadial:()=>RW,linkVertical:()=>PW,pie:()=>OW,pointRadial:()=>Mp,radialArea:()=>MM,radialLine:()=>AM,stack:()=>_V,stackOffsetDiverging:()=>kV,stackOffsetExpand:()=>FV,stackOffsetNone:()=>Gs,stackOffsetSilhouette:()=>BV,stackOffsetWiggle:()=>RV,stackOrderAppearance:()=>gD,stackOrderAscending:()=>vD,stackOrderDescending:()=>zV,stackOrderInsideOut:()=>HV,stackOrderNone:()=>Ys,stackOrderReverse:()=>WV,symbol:()=>ZM,symbolAsterisk:()=>jb,symbolCircle:()=>Jd,symbolCross:()=>eD,symbolDiamond:()=>tD,symbolDiamond2:()=>rD,symbolPlus:()=>nD,symbolSquare:()=>iD,symbolSquare2:()=>oD,symbolStar:()=>aD,symbolTimes:()=>jv,symbolTriangle:()=>sD,symbolTriangle2:()=>uD,symbolWye:()=>lD,symbolX:()=>jv,symbols:()=>YM,symbolsFill:()=>YM,symbolsStroke:()=>HW});var a0=Se(()=>{NW();NM();Yb();FW();kW();CM();TM();qW();$W();FM();IM();kM();LM();BM();PM();RM();qM();zM();HM();$M();VM();GM();YW();KW();r0();OM();jW();XM();KM();n0();sV();fV();mD();mV();Jv();bV();EV();TV();OV();IV();LV();eh();PV();qV();QM();xD();UV();$V();th();VV()});function GV(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function Tp(e,t){if((r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var r,n=e.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+e.slice(r+1)]}var s0=Se(()=>{});function Lu(e){return e=Tp(Math.abs(e)),e?e[1]:NaN}var u0=Se(()=>{s0()});function YV(e,t){return function(r,n){for(var i=r.length,o=[],l=0,s=e[0],a=0;i>0&&s>0&&(a+s+1>n&&(s=Math.max(1,n-a)),o.push(r.substring(i-=s,i+s)),!((a+=s+1)>n));)s=e[l=(l+1)%e.length];return o.reverse().join(t)}}var ZV=Se(()=>{});function XV(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}var KV=Se(()=>{});function Zs(e){if(!(t=kye.exec(e)))throw new Error("invalid format: "+e);var t;return new l0({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}function l0(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}var kye,eT=Se(()=>{kye=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;Zs.prototype=l0.prototype;l0.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type}});function JV(e){e:for(var t=e.length,r=1,n=-1,i;r0&&(n=0);break}return n>0?e.slice(0,n)+e.slice(i+1):e}var QV=Se(()=>{});function jV(e,t){var r=Tp(e,t);if(!r)return e+"";var n=r[0],i=r[1],o=i-(tT=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,l=n.length;return o===l?n:o>l?n+new Array(o-l+1).join("0"):o>0?n.slice(0,o)+"."+n.slice(o):"0."+new Array(1-o).join("0")+Tp(e,Math.max(0,t+o-1))[0]}var tT,rT=Se(()=>{s0()});function nT(e,t){var r=Tp(e,t);if(!r)return e+"";var n=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+n:n.length>i+1?n.slice(0,i+1)+"."+n.slice(i+1):n+new Array(i-n.length+2).join("0")}var eG=Se(()=>{s0()});var iT,tG=Se(()=>{s0();rT();eG();iT={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:GV,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>nT(e*100,t),r:nT,s:jV,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)}});function oT(e){return e}var rG=Se(()=>{});function yD(e){var t=e.grouping===void 0||e.thousands===void 0?oT:YV(nG.call(e.grouping,Number),e.thousands+""),r=e.currency===void 0?"":e.currency[0]+"",n=e.currency===void 0?"":e.currency[1]+"",i=e.decimal===void 0?".":e.decimal+"",o=e.numerals===void 0?oT:XV(nG.call(e.numerals,String)),l=e.percent===void 0?"%":e.percent+"",s=e.minus===void 0?"\u2212":e.minus+"",a=e.nan===void 0?"NaN":e.nan+"";function u(p){p=Zs(p);var h=p.fill,g=p.align,x=p.sign,v=p.symbol,S=p.zero,D=p.width,C=p.comma,E=p.precision,M=p.trim,T=p.type;T==="n"?(C=!0,T="g"):iT[T]||(E===void 0&&(E=12),M=!0,T="g"),(S||h==="0"&&g==="=")&&(S=!0,h="0",g="=");var N=v==="$"?r:v==="#"&&/[boxX]/.test(T)?"0"+T.toLowerCase():"",O=v==="$"?n:/[%p]/.test(T)?l:"",F=iT[T],I=/[defgprs%]/.test(T);E=E===void 0?6:/[gprs]/.test(T)?Math.max(1,Math.min(21,E)):Math.max(0,Math.min(20,E));function B(L){var q=N,R=O,V,X,U;if(T==="c")R=F(L)+R,L="";else{L=+L;var H=L<0||1/L<0;if(L=isNaN(L)?a:F(Math.abs(L),E),M&&(L=JV(L)),H&&+L==0&&x!=="+"&&(H=!1),q=(H?x==="("?x:s:x==="-"||x==="("?"":x)+q,R=(T==="s"?iG[8+tT/3]:"")+R+(H&&x==="("?")":""),I){for(V=-1,X=L.length;++VU||U>57){R=(U===46?i+L.slice(V+1):L.slice(V))+R,L=L.slice(0,V);break}}}C&&!S&&(L=t(L,1/0));var ee=q.length+L.length+R.length,Z=ee>1)+q+L+R+Z.slice(ee);break;default:L=Z+q+L+R;break}return o(L)}return B.toString=function(){return p+""},B}function f(p,h){var g=u((p=Zs(p),p.type="f",p)),x=Math.max(-8,Math.min(8,Math.floor(Lu(h)/3)))*3,v=Math.pow(10,-x),S=iG[8+x/3];return function(D){return g(v*D)+S}}return{format:u,formatPrefix:f}}var nG,iG,aT=Se(()=>{u0();ZV();KV();eT();QV();tG();rT();rG();nG=Array.prototype.map,iG=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"]});function bD(e){return wD=yD(e),_p=wD.format,f0=wD.formatPrefix,wD}var wD,_p,f0,oG=Se(()=>{aT();bD({thousands:",",grouping:[3],currency:["$",""]})});function DD(e){return Math.max(0,-Lu(Math.abs(e)))}var aG=Se(()=>{u0()});function SD(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Lu(t)/3)))*3-Lu(Math.abs(e)))}var sG=Se(()=>{u0()});function ND(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Lu(t)-Lu(e))+1}var uG=Se(()=>{u0()});var lG={};wu(lG,{FormatSpecifier:()=>l0,format:()=>_p,formatDefaultLocale:()=>bD,formatLocale:()=>yD,formatPrefix:()=>f0,formatSpecifier:()=>Zs,precisionFixed:()=>DD,precisionPrefix:()=>SD,precisionRound:()=>ND});var ED=Se(()=>{oG();aT();eT();aG();sG();uG()});function Oo(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}var c0=Se(()=>{});function sT(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}var fG=Se(()=>{});function Op(e){let t,r,n;e.length!==2?(t=Oo,r=(s,a)=>Oo(e(s),a),n=(s,a)=>e(s)-a):(t=e===Oo||e===sT?e:Lye,r=e,n=e);function i(s,a,u=0,f=s.length){if(u>>1;r(s[p],a)<0?u=p+1:f=p}while(u>>1;r(s[p],a)<=0?u=p+1:f=p}while(uu&&n(s[p-1],a)>-n(s[p],a)?p-1:p}return{left:i,center:l,right:o}}function Lye(){return 0}var uT=Se(()=>{c0();fG()});function p0(e){return e===null?NaN:+e}function*cG(e,t){if(t===void 0)for(let r of e)r!=null&&(r=+r)>=r&&(yield r);else{let r=-1;for(let n of e)(n=t(n,++r,e))!=null&&(n=+n)>=n&&(yield n)}}var lT=Se(()=>{});var pG,mG,Bye,Pye,Xs,dG=Se(()=>{c0();uT();lT();pG=Op(Oo),mG=pG.right,Bye=pG.left,Pye=Op(p0).center,Xs=mG});function hG({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):r}function Rye({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function qye({_intern:e,_key:t},r){let n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function zye(e){return e!==null&&typeof e=="object"?e.valueOf():e}var rh,gG=Se(()=>{rh=class extends Map{constructor(t,r=zye){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),t!=null)for(let[n,i]of t)this.set(n,i)}get(t){return super.get(hG(this,t))}has(t){return super.has(hG(this,t))}set(t,r){return super.set(Rye(this,t),r)}delete(t){return super.delete(qye(this,t))}}});function vG(e=Oo){if(e===Oo)return fT;if(typeof e!="function")throw new TypeError("compare is not a function");return(t,r)=>{let n=e(t,r);return n||n===0?n:(e(r,r)===0)-(e(t,t)===0)}}function fT(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(et?1:0)}var xG=Se(()=>{c0()});function AD(e,t,r){let n=(t-e)/Math.max(0,r),i=Math.floor(Math.log10(n)),o=n/Math.pow(10,i),l=o>=Uye?10:o>=Hye?5:o>=$ye?2:1,s,a,u;return i<0?(u=Math.pow(10,-i)/l,s=Math.round(e*u),a=Math.round(t*u),s/ut&&--a,u=-u):(u=Math.pow(10,i)*l,s=Math.round(e/u),a=Math.round(t/u),s*ut&&--a),a0))return[];if(e===t)return[e];let n=t=i))return[];let s=o-i+1,a=new Array(s);if(n)if(l<0)for(let u=0;u{Uye=Math.sqrt(50),Hye=Math.sqrt(10),$ye=Math.sqrt(2)});function CD(e,t){let r;if(t===void 0)for(let n of e)n!=null&&(r=n)&&(r=n);else{let n=-1;for(let i of e)(i=t(i,++n,e))!=null&&(r=i)&&(r=i)}return r}var wG=Se(()=>{});function MD(e,t){let r;if(t===void 0)for(let n of e)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of e)(i=t(i,++n,e))!=null&&(r>i||r===void 0&&i>=i)&&(r=i)}return r}var bG=Se(()=>{});function TD(e,t,r=0,n=1/0,i){if(t=Math.floor(t),r=Math.floor(Math.max(0,r)),n=Math.floor(Math.min(e.length-1,n)),!(r<=t&&t<=n))return e;for(i=i===void 0?fT:vG(i);n>r;){if(n-r>600){let a=n-r+1,u=t-r+1,f=Math.log(a),p=.5*Math.exp(2*f/3),h=.5*Math.sqrt(f*p*(a-p)/a)*(u-a/2<0?-1:1),g=Math.max(r,Math.floor(t-u*p/a+h)),x=Math.min(n,Math.floor(t+(a-u)*p/a+h));TD(e,t,g,x,i)}let o=e[t],l=r,s=n;for(d0(e,r,t),i(e[n],o)>0&&d0(e,r,n);l0;)--s}i(e[r],o)===0?d0(e,r,s):(++s,d0(e,s,n)),s<=t&&(r=s+1),t<=s&&(n=s-1)}return e}function d0(e,t,r){let n=e[t];e[t]=e[r],e[r]=n}var DG=Se(()=>{xG()});function _D(e,t,r){if(e=Float64Array.from(cG(e,r)),!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return MD(e);if(t>=1)return CD(e);var n,i=(n-1)*t,o=Math.floor(i),l=CD(TD(e,o).subarray(0,o+1)),s=MD(e.subarray(o+1));return l+(s-l)*(i-o)}}function cT(e,t,r=p0){if(!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return+r(e[0],0,e);if(t>=1)return+r(e[n-1],n-1,e);var n,i=(n-1)*t,o=Math.floor(i),l=+r(e[o],o,e),s=+r(e[o+1],o+1,e);return l+(s-l)*(i-o)}}var SG=Se(()=>{wG();bG();DG();lT()});function OD(e,t,r){e=+e,t=+t,r=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+r;for(var n=-1,i=Math.max(0,Math.ceil((t-e)/r))|0,o=new Array(i);++n{});var as=Se(()=>{dG();c0();uT();SG();NG();yG();gG()});function En(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}function ss(e,t){switch(arguments.length){case 0:break;case 1:{typeof e=="function"?this.interpolator(e):this.range(e);break}default:{this.domain(e),typeof t=="function"?this.interpolator(t):this.range(t);break}}return this}var vo=Se(()=>{});function ih(){var e=new rh,t=[],r=[],n=FD;function i(o){let l=e.get(o);if(l===void 0){if(n!==FD)return n;e.set(o,l=t.push(o)-1)}return r[l%r.length]}return i.domain=function(o){if(!arguments.length)return t.slice();t=[],e=new rh;for(let l of o)e.has(l)||e.set(l,t.push(l)-1);return i},i.range=function(o){return arguments.length?(r=Array.from(o),i):r.slice()},i.unknown=function(o){return arguments.length?(n=o,i):n},i.copy=function(){return ih(t,r).unknown(n)},En.apply(i,arguments),i}var FD,pT=Se(()=>{as();vo();FD=Symbol("implicit")});function h0(){var e=ih().unknown(void 0),t=e.domain,r=e.range,n=0,i=1,o,l,s=!1,a=0,u=0,f=.5;delete e.unknown;function p(){var h=t().length,g=i{as();vo();pT()});function Pl(e,t,r){e.prototype=t.prototype=r,r.constructor=e}function Jf(e,t){var r=Object.create(e.prototype);for(var n in t)r[n]=t[n];return r}var ID=Se(()=>{});function Pu(){}function TG(){return this.rgb().formatHex()}function Jye(){return this.rgb().formatHex8()}function Qye(){return BG(this).formatHsl()}function _G(){return this.rgb().formatRgb()}function us(e){var t,r;return e=(e+"").trim().toLowerCase(),(t=Wye.exec(e))?(r=t[1].length,t=parseInt(t[1],16),r===6?OG(t):r===3?new si(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?kD(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?kD(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=Vye.exec(e))?new si(t[1],t[2],t[3],1):(t=Gye.exec(e))?new si(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Yye.exec(e))?kD(t[1],t[2],t[3],t[4]):(t=Zye.exec(e))?kD(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Xye.exec(e))?kG(t[1],t[2]/100,t[3]/100,1):(t=Kye.exec(e))?kG(t[1],t[2]/100,t[3]/100,t[4]):MG.hasOwnProperty(e)?OG(MG[e]):e==="transparent"?new si(NaN,NaN,NaN,0):null}function OG(e){return new si(e>>16&255,e>>8&255,e&255,1)}function kD(e,t,r,n){return n<=0&&(e=t=r=NaN),new si(e,t,r,n)}function v0(e){return e instanceof Pu||(e=us(e)),e?(e=e.rgb(),new si(e.r,e.g,e.b,e.opacity)):new si}function Bp(e,t,r,n){return arguments.length===1?v0(e):new si(e,t,r,n??1)}function si(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}function FG(){return`#${Ip(this.r)}${Ip(this.g)}${Ip(this.b)}`}function jye(){return`#${Ip(this.r)}${Ip(this.g)}${Ip(this.b)}${Ip((isNaN(this.opacity)?1:this.opacity)*255)}`}function IG(){let e=BD(this.opacity);return`${e===1?"rgb(":"rgba("}${kp(this.r)}, ${kp(this.g)}, ${kp(this.b)}${e===1?")":`, ${e})`}`}function BD(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function kp(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Ip(e){return e=kp(e),(e<16?"0":"")+e.toString(16)}function kG(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new Ks(e,t,r,n)}function BG(e){if(e instanceof Ks)return new Ks(e.h,e.s,e.l,e.opacity);if(e instanceof Pu||(e=us(e)),!e)return new Ks;if(e instanceof Ks)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,i=Math.min(t,r,n),o=Math.max(t,r,n),l=NaN,s=o-i,a=(o+i)/2;return s?(t===o?l=(r-n)/s+(r0&&a<1?0:l,new Ks(l,s,a,e.opacity)}function ah(e,t,r,n){return arguments.length===1?BG(e):new Ks(e,t,r,n??1)}function Ks(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}function LG(e){return e=(e||0)%360,e<0?e+360:e}function LD(e){return Math.max(0,Math.min(1,e||0))}function mT(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}var Qf,Lp,oh,g0,Bu,Wye,Vye,Gye,Yye,Zye,Xye,Kye,MG,PD=Se(()=>{ID();Qf=.7,Lp=1/Qf,oh="\\s*([+-]?\\d+)\\s*",g0="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Bu="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Wye=/^#([0-9a-f]{3,8})$/,Vye=new RegExp(`^rgb\\(${oh},${oh},${oh}\\)$`),Gye=new RegExp(`^rgb\\(${Bu},${Bu},${Bu}\\)$`),Yye=new RegExp(`^rgba\\(${oh},${oh},${oh},${g0}\\)$`),Zye=new RegExp(`^rgba\\(${Bu},${Bu},${Bu},${g0}\\)$`),Xye=new RegExp(`^hsl\\(${g0},${Bu},${Bu}\\)$`),Kye=new RegExp(`^hsla\\(${g0},${Bu},${Bu},${g0}\\)$`),MG={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Pl(Pu,us,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:TG,formatHex:TG,formatHex8:Jye,formatHsl:Qye,formatRgb:_G,toString:_G});Pl(si,Bp,Jf(Pu,{brighter(e){return e=e==null?Lp:Math.pow(Lp,e),new si(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Qf:Math.pow(Qf,e),new si(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new si(kp(this.r),kp(this.g),kp(this.b),BD(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:FG,formatHex:FG,formatHex8:jye,formatRgb:IG,toString:IG}));Pl(Ks,ah,Jf(Pu,{brighter(e){return e=e==null?Lp:Math.pow(Lp,e),new Ks(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Qf:Math.pow(Qf,e),new Ks(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,i=2*r-n;return new si(mT(e>=240?e-240:e+120,i,n),mT(e,i,n),mT(e<120?e+240:e-120,i,n),this.opacity)},clamp(){return new Ks(LG(this.h),LD(this.s),LD(this.l),BD(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=BD(this.opacity);return`${e===1?"hsl(":"hsla("}${LG(this.h)}, ${LD(this.s)*100}%, ${LD(this.l)*100}%${e===1?")":`, ${e})`}`}}))});var RD,qD,dT=Se(()=>{RD=Math.PI/180,qD=180/Math.PI});function HG(e){if(e instanceof Js)return new Js(e.l,e.a,e.b,e.opacity);if(e instanceof Ru)return GG(e);e instanceof si||(e=v0(e));var t=xT(e.r),r=xT(e.g),n=xT(e.b),i=hT((.2225045*t+.7168786*r+.0606169*n)/RG),o,l;return t===r&&r===n?o=l=i:(o=hT((.4360747*t+.3850649*r+.1430804*n)/PG),l=hT((.0139322*t+.0971045*r+.7141733*n)/qG)),new Js(116*i-16,500*(o-i),200*(i-l),e.opacity)}function $G(e,t){return new Js(e,0,0,t??1)}function Pp(e,t,r,n){return arguments.length===1?HG(e):new Js(e,t,r,n??1)}function Js(e,t,r,n){this.l=+e,this.a=+t,this.b=+r,this.opacity=+n}function hT(e){return e>e1e?Math.pow(e,1/3):e/UG+zG}function gT(e){return e>sh?e*e*e:UG*(e-zG)}function vT(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function xT(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function WG(e){if(e instanceof Ru)return new Ru(e.h,e.c,e.l,e.opacity);if(e instanceof Js||(e=HG(e)),e.a===0&&e.b===0)return new Ru(NaN,0{ID();PD();dT();zD=18,PG=.96422,RG=1,qG=.82521,zG=4/29,sh=6/29,UG=3*sh*sh,e1e=sh*sh*sh;Pl(Js,Pp,Jf(Pu,{brighter(e){return new Js(this.l+zD*(e??1),this.a,this.b,this.opacity)},darker(e){return new Js(this.l-zD*(e??1),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,r=isNaN(this.b)?e:e-this.b/200;return t=PG*gT(t),e=RG*gT(e),r=qG*gT(r),new si(vT(3.1338561*t-1.6168667*e-.4906146*r),vT(-.9787684*t+1.9161415*e+.033454*r),vT(.0719453*t-.2289914*e+1.4052427*r),this.opacity)}}));Pl(Ru,uh,Jf(Pu,{brighter(e){return new Ru(this.h,this.c,this.l+zD*(e??1),this.opacity)},darker(e){return new Ru(this.h,this.c,this.l-zD*(e??1),this.opacity)},rgb(){return GG(this).rgb()}}))});function t1e(e){if(e instanceof Rp)return new Rp(e.h,e.s,e.l,e.opacity);e instanceof si||(e=v0(e));var t=e.r/255,r=e.g/255,n=e.b/255,i=(KG*n+ZG*t-XG*r)/(KG+ZG-XG),o=n-i,l=(x0*(r-i)-wT*o)/UD,s=Math.sqrt(l*l+o*o)/(x0*i*(1-i)),a=s?Math.atan2(l,o)*qD-120:NaN;return new Rp(a<0?a+360:a,s,i,e.opacity)}function qp(e,t,r,n){return arguments.length===1?t1e(e):new Rp(e,t,r,n??1)}function Rp(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}var JG,yT,wT,UD,x0,ZG,XG,KG,QG=Se(()=>{ID();PD();dT();JG=-.14861,yT=1.78277,wT=-.29227,UD=-.90649,x0=1.97294,ZG=x0*UD,XG=x0*yT,KG=yT*wT-UD*JG;Pl(Rp,qp,Jf(Pu,{brighter(e){return e=e==null?Lp:Math.pow(Lp,e),new Rp(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Qf:Math.pow(Qf,e),new Rp(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=isNaN(this.h)?0:(this.h+120)*RD,t=+this.l,r=isNaN(this.s)?0:this.s*t*(1-t),n=Math.cos(e),i=Math.sin(e);return new si(255*(t+r*(JG*n+yT*i)),255*(t+r*(wT*n+UD*i)),255*(t+r*(x0*n)),this.opacity)}}))});var HD={};wu(HD,{color:()=>us,cubehelix:()=>qp,gray:()=>$G,hcl:()=>uh,hsl:()=>ah,lab:()=>Pp,lch:()=>VG,rgb:()=>Bp});var Qs=Se(()=>{PD();YG();QG()});function bT(e,t,r,n,i){var o=e*e,l=o*e;return((1-3*e+3*o-l)*t+(4-6*o+3*l)*r+(1+3*e+3*o-3*l)*n+l*i)/6}function $D(e){var t=e.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,t-1):Math.floor(r*t),i=e[n],o=e[n+1],l=n>0?e[n-1]:2*i-o,s=n{});function VD(e){var t=e.length;return function(r){var n=Math.floor(((r%=1)<0?++r:r)*t),i=e[(n+t-1)%t],o=e[n%t],l=e[(n+1)%t],s=e[(n+2)%t];return bT((r-n/t)*t,i,o,l,s)}}var DT=Se(()=>{WD()});var lh,ST=Se(()=>{lh=e=>()=>e});function jG(e,t){return function(r){return e+r*t}}function r1e(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function jf(e,t){var r=t-e;return r?jG(e,r>180||r<-180?r-360*Math.round(r/360):r):lh(isNaN(e)?t:e)}function eY(e){return(e=+e)==1?An:function(t,r){return r-t?r1e(t,r,e):lh(isNaN(t)?r:t)}}function An(e,t){var r=t-e;return r?jG(e,r):lh(isNaN(e)?t:e)}var zp=Se(()=>{ST()});function tY(e){return function(t){var r=t.length,n=new Array(r),i=new Array(r),o=new Array(r),l,s;for(l=0;l{Qs();WD();DT();zp();ec=function e(t){var r=eY(t);function n(i,o){var l=r((i=Bp(i)).r,(o=Bp(o)).r),s=r(i.g,o.g),a=r(i.b,o.b),u=An(i.opacity,o.opacity);return function(f){return i.r=l(f),i.g=s(f),i.b=a(f),i.opacity=u(f),i+""}}return n.gamma=e,n}(1);rY=tY($D),nY=tY(VD)});function fh(e,t){t||(t=[]);var r=e?Math.min(t.length,e.length):0,n=t.slice(),i;return function(o){for(i=0;i{});function iY(e,t){return(GD(t)?fh:ET)(e,t)}function ET(e,t){var r=t?t.length:0,n=e?Math.min(r,e.length):0,i=new Array(n),o=new Array(r),l;for(l=0;l{y0();YD()});function ZD(e,t){var r=new Date;return e=+e,t=+t,function(n){return r.setTime(e*(1-n)+t*n),r}}var CT=Se(()=>{});function Li(e,t){return e=+e,t=+t,function(r){return e*(1-r)+t*r}}var w0=Se(()=>{});function XD(e,t){var r={},n={},i;(e===null||typeof e!="object")&&(e={}),(t===null||typeof t!="object")&&(t={});for(i in t)i in e?r[i]=Qo(e[i],t[i]):n[i]=t[i];return function(o){for(i in r)n[i]=r[i](o);return n}}var MT=Se(()=>{y0()});function n1e(e){return function(){return e}}function i1e(e){return function(t){return e(t)+""}}function ch(e,t){var r=_T.lastIndex=TT.lastIndex=0,n,i,o,l=-1,s=[],a=[];for(e=e+"",t=t+"";(n=_T.exec(e))&&(i=TT.exec(t));)(o=i.index)>r&&(o=t.slice(r,o),s[l]?s[l]+=o:s[++l]=o),(n=n[0])===(i=i[0])?s[l]?s[l]+=i:s[++l]=i:(s[++l]=null,a.push({i:l,x:Li(n,i)})),r=TT.lastIndex;return r{w0();_T=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,TT=new RegExp(_T.source,"g")});function Qo(e,t){var r=typeof t,n;return t==null||r==="boolean"?lh(t):(r==="number"?Li:r==="string"?(n=us(t))?(t=n,ec):ch:t instanceof us?ec:t instanceof Date?ZD:GD(t)?fh:Array.isArray(t)?ET:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?XD:Li)(e,t)}var y0=Se(()=>{Qs();NT();AT();CT();w0();MT();OT();ST();YD()});function oY(e){var t=e.length;return function(r){return e[Math.max(0,Math.min(t-1,Math.floor(r*t)))]}}var aY=Se(()=>{});function sY(e,t){var r=jf(+e,+t);return function(n){var i=r(n);return i-360*Math.floor(i/360)}}var uY=Se(()=>{zp()});function tc(e,t){return e=+e,t=+t,function(r){return Math.round(e*(1-r)+t*r)}}var lY=Se(()=>{});function FT(e,t,r,n,i,o){var l,s,a;return(l=Math.sqrt(e*e+t*t))&&(e/=l,t/=l),(a=e*r+t*n)&&(r-=e*a,n-=t*a),(s=Math.sqrt(r*r+n*n))&&(r/=s,n/=s,a/=s),e*n{fY=180/Math.PI,KD={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1}});function pY(e){let t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(e+"");return t.isIdentity?KD:FT(t.a,t.b,t.c,t.d,t.e,t.f)}function mY(e){return e==null?KD:(JD||(JD=document.createElementNS("http://www.w3.org/2000/svg","g")),JD.setAttribute("transform",e),(e=JD.transform.baseVal.consolidate())?(e=e.matrix,FT(e.a,e.b,e.c,e.d,e.e,e.f)):KD)}var JD,dY=Se(()=>{cY()});function hY(e,t,r,n){function i(u){return u.length?u.pop()+" ":""}function o(u,f,p,h,g,x){if(u!==p||f!==h){var v=g.push("translate(",null,t,null,r);x.push({i:v-4,x:Li(u,p)},{i:v-2,x:Li(f,h)})}else(p||h)&&g.push("translate("+p+t+h+r)}function l(u,f,p,h){u!==f?(u-f>180?f+=360:f-u>180&&(u+=360),h.push({i:p.push(i(p)+"rotate(",null,n)-2,x:Li(u,f)})):f&&p.push(i(p)+"rotate("+f+n)}function s(u,f,p,h){u!==f?h.push({i:p.push(i(p)+"skewX(",null,n)-2,x:Li(u,f)}):f&&p.push(i(p)+"skewX("+f+n)}function a(u,f,p,h,g,x){if(u!==p||f!==h){var v=g.push(i(g)+"scale(",null,",",null,")");x.push({i:v-4,x:Li(u,p)},{i:v-2,x:Li(f,h)})}else(p!==1||h!==1)&&g.push(i(g)+"scale("+p+","+h+")")}return function(u,f){var p=[],h=[];return u=e(u),f=e(f),o(u.translateX,u.translateY,f.translateX,f.translateY,p,h),l(u.rotate,f.rotate,p,h),s(u.skewX,f.skewX,p,h),a(u.scaleX,u.scaleY,f.scaleX,f.scaleY,p,h),u=f=null,function(g){for(var x=-1,v=h.length,S;++x{w0();dY();QD=hY(pY,"px, ","px)","deg)"),jD=hY(mY,", ",")",")")});function vY(e){return((e=Math.exp(e))+1/e)/2}function a1e(e){return((e=Math.exp(e))-1/e)/2}function s1e(e){return((e=Math.exp(2*e))-1)/(e+1)}var o1e,e2,xY=Se(()=>{o1e=1e-12;e2=function e(t,r,n){function i(o,l){var s=o[0],a=o[1],u=o[2],f=l[0],p=l[1],h=l[2],g=f-s,x=p-a,v=g*g+x*x,S,D;if(v{Qs();zp();wY=yY(jf),bY=yY(An)});function IT(e,t){var r=An((e=Pp(e)).l,(t=Pp(t)).l),n=An(e.a,t.a),i=An(e.b,t.b),o=An(e.opacity,t.opacity);return function(l){return e.l=r(l),e.a=n(l),e.b=i(l),e.opacity=o(l),e+""}}var SY=Se(()=>{Qs();zp()});function NY(e){return function(t,r){var n=e((t=uh(t)).h,(r=uh(r)).h),i=An(t.c,r.c),o=An(t.l,r.l),l=An(t.opacity,r.opacity);return function(s){return t.h=n(s),t.c=i(s),t.l=o(s),t.opacity=l(s),t+""}}}var EY,AY,CY=Se(()=>{Qs();zp();EY=NY(jf),AY=NY(An)});function MY(e){return function t(r){r=+r;function n(i,o){var l=e((i=qp(i)).h,(o=qp(o)).h),s=An(i.s,o.s),a=An(i.l,o.l),u=An(i.opacity,o.opacity);return function(f){return i.h=l(f),i.s=s(f),i.l=a(Math.pow(f,r)),i.opacity=u(f),i+""}}return n.gamma=t,n}(1)}var TY,_Y,OY=Se(()=>{Qs();zp();TY=MY(jf),_Y=MY(An)});function b0(e,t){t===void 0&&(t=e,e=Qo);for(var r=0,n=t.length-1,i=t[0],o=new Array(n<0?0:n);r{y0()});function IY(e,t){for(var r=new Array(t),n=0;n{});var LY={};wu(LY,{interpolate:()=>Qo,interpolateArray:()=>iY,interpolateBasis:()=>$D,interpolateBasisClosed:()=>VD,interpolateCubehelix:()=>TY,interpolateCubehelixLong:()=>_Y,interpolateDate:()=>ZD,interpolateDiscrete:()=>oY,interpolateHcl:()=>EY,interpolateHclLong:()=>AY,interpolateHsl:()=>wY,interpolateHslLong:()=>bY,interpolateHue:()=>sY,interpolateLab:()=>IT,interpolateNumber:()=>Li,interpolateNumberArray:()=>fh,interpolateObject:()=>XD,interpolateRgb:()=>ec,interpolateRgbBasis:()=>rY,interpolateRgbBasisClosed:()=>nY,interpolateRound:()=>tc,interpolateString:()=>ch,interpolateTransformCss:()=>QD,interpolateTransformSvg:()=>jD,interpolateZoom:()=>e2,piecewise:()=>b0,quantize:()=>IY});var Rl=Se(()=>{y0();AT();WD();DT();CT();aY();uY();w0();YD();MT();lY();OT();gY();xY();NT();DY();SY();CY();OY();FY();kY()});function kT(e){return function(){return e}}var BY=Se(()=>{});function rc(e){return+e}var t2=Se(()=>{});function Si(e){return e}function LT(e,t){return(t-=e=+e)?function(r){return(r-e)/t}:kT(isNaN(t)?NaN:.5)}function u1e(e,t){var r;return e>t&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function l1e(e,t,r){var n=e[0],i=e[1],o=t[0],l=t[1];return i2?f1e:l1e,a=u=null,p}function p(h){return h==null||isNaN(h=+h)?o:(a||(a=s(e.map(n),t,r)))(n(l(h)))}return p.invert=function(h){return l(i((u||(u=s(t,e.map(n),Li)))(h)))},p.domain=function(h){return arguments.length?(e=Array.from(h,rc),f()):e.slice()},p.range=function(h){return arguments.length?(t=Array.from(h),f()):t.slice()},p.rangeRound=function(h){return t=Array.from(h),r=tc,f()},p.clamp=function(h){return arguments.length?(l=h?!0:Si,f()):l!==Si},p.interpolate=function(h){return arguments.length?(r=h,f()):r},p.unknown=function(h){return arguments.length?(o=h,p):o},function(h,g){return n=h,i=g,f()}}function Hp(){return Up()(Si,Si)}var PY,zu=Se(()=>{as();Rl();BY();t2();PY=[0,1]});function D0(e,t,r,n){var i=nh(e,t,r),o;switch(n=Zs(n??",f"),n.type){case"s":{var l=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(o=SD(i,l))&&(n.precision=o),f0(n,l)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(o=ND(i,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=o-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(o=DD(i))&&(n.precision=o-(n.type==="%")*2);break}}return _p(n)}var BT=Se(()=>{as();ED()});function Fo(e){var t=e.domain;return e.ticks=function(r){var n=t();return Fp(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var i=t();return D0(i[0],i[i.length-1],r??10,n)},e.nice=function(r){r==null&&(r=10);var n=t(),i=0,o=n.length-1,l=n[i],s=n[o],a,u,f=10;for(s0;){if(u=m0(l,s,r),u===a)return n[i]=l,n[o]=s,t(n);if(u>0)l=Math.floor(l/u)*u,s=Math.ceil(s/u)*u;else if(u<0)l=Math.ceil(l*u)/u,s=Math.floor(s*u)/u;else break;a=u}return e},e}function r2(){var e=Hp();return e.copy=function(){return qu(e,r2())},En.apply(e,arguments),Fo(e)}var ql=Se(()=>{as();zu();vo();BT()});function n2(e){var t;function r(n){return n==null||isNaN(n=+n)?t:n}return r.invert=r,r.domain=r.range=function(n){return arguments.length?(e=Array.from(n,rc),r):e.slice()},r.unknown=function(n){return arguments.length?(t=n,r):t},r.copy=function(){return n2(e).unknown(t)},e=arguments.length?Array.from(e,rc):[0,1],Fo(r)}var RY=Se(()=>{ql();t2()});function S0(e,t){e=e.slice();var r=0,n=e.length-1,i=e[r],o=e[n],l;return o{});function qY(e){return Math.log(e)}function zY(e){return Math.exp(e)}function c1e(e){return-Math.log(-e)}function p1e(e){return-Math.exp(-e)}function m1e(e){return isFinite(e)?+("1e"+e):e<0?0:e}function d1e(e){return e===10?m1e:e===Math.E?Math.exp:t=>Math.pow(e,t)}function h1e(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function UY(e){return(t,r)=>-e(-t,r)}function N0(e){let t=e(qY,zY),r=t.domain,n=10,i,o;function l(){return i=h1e(n),o=d1e(n),r()[0]<0?(i=UY(i),o=UY(o),e(c1e,p1e)):e(qY,zY),t}return t.base=function(s){return arguments.length?(n=+s,l()):n},t.domain=function(s){return arguments.length?(r(s),l()):r()},t.ticks=s=>{let a=r(),u=a[0],f=a[a.length-1],p=f0){for(;h<=g;++h)for(x=1;xf)break;D.push(v)}}else for(;h<=g;++h)for(x=n-1;x>=1;--x)if(v=h>0?x/o(-h):x*o(h),!(vf)break;D.push(v)}D.length*2{if(s==null&&(s=10),a==null&&(a=n===10?"s":","),typeof a!="function"&&(!(n%1)&&(a=Zs(a)).precision==null&&(a.trim=!0),a=_p(a)),s===1/0)return a;let u=Math.max(1,n*s/t.ticks().length);return f=>{let p=f/o(Math.round(i(f)));return p*nr(S0(r(),{floor:s=>o(Math.floor(i(s))),ceil:s=>o(Math.ceil(i(s)))})),t}function i2(){let e=N0(Up()).domain([1,10]);return e.copy=()=>qu(e,i2()).base(e.base()),En.apply(e,arguments),e}var o2=Se(()=>{as();ED();PT();zu();vo()});function HY(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function $Y(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function E0(e){var t=1,r=e(HY(t),$Y(t));return r.constant=function(n){return arguments.length?e(HY(t=+n),$Y(t)):t},Fo(r)}function a2(){var e=E0(Up());return e.copy=function(){return qu(e,a2()).constant(e.constant())},En.apply(e,arguments)}var s2=Se(()=>{ql();zu();vo()});function WY(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function g1e(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function v1e(e){return e<0?-e*e:e*e}function A0(e){var t=e(Si,Si),r=1;function n(){return r===1?e(Si,Si):r===.5?e(g1e,v1e):e(WY(r),WY(1/r))}return t.exponent=function(i){return arguments.length?(r=+i,n()):r},Fo(t)}function C0(){var e=A0(Up());return e.copy=function(){return qu(e,C0()).exponent(e.exponent())},En.apply(e,arguments),e}function VY(){return C0.apply(null,arguments).exponent(.5)}var u2=Se(()=>{ql();zu();vo()});function GY(e){return Math.sign(e)*e*e}function x1e(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}function l2(){var e=Hp(),t=[0,1],r=!1,n;function i(o){var l=x1e(e(o));return isNaN(l)?n:r?Math.round(l):l}return i.invert=function(o){return e.invert(GY(o))},i.domain=function(o){return arguments.length?(e.domain(o),i):e.domain()},i.range=function(o){return arguments.length?(e.range((t=Array.from(o,rc)).map(GY)),i):t.slice()},i.rangeRound=function(o){return i.range(o).round(!0)},i.round=function(o){return arguments.length?(r=!!o,i):r},i.clamp=function(o){return arguments.length?(e.clamp(o),i):e.clamp()},i.unknown=function(o){return arguments.length?(n=o,i):n},i.copy=function(){return l2(e.domain(),t).round(r).clamp(e.clamp()).unknown(n)},En.apply(i,arguments),Fo(i)}var YY=Se(()=>{zu();vo();ql();t2()});function f2(){var e=[],t=[],r=[],n;function i(){var l=0,s=Math.max(1,t.length);for(r=new Array(s-1);++l0?r[s-1]:e[0],s{as();vo()});function c2(){var e=0,t=1,r=1,n=[.5],i=[0,1],o;function l(a){return a!=null&&a<=a?i[Xs(n,a,0,r)]:o}function s(){var a=-1;for(n=new Array(r);++a=r?[n[r-1],t]:[n[u-1],n[u]]},l.unknown=function(a){return arguments.length&&(o=a),l},l.thresholds=function(){return n.slice()},l.copy=function(){return c2().domain([e,t]).range(i).unknown(o)},En.apply(Fo(l),arguments)}var XY=Se(()=>{as();ql();vo()});function p2(){var e=[.5],t=[0,1],r,n=1;function i(o){return o!=null&&o<=o?t[Xs(e,o,0,n)]:r}return i.domain=function(o){return arguments.length?(e=Array.from(o),n=Math.min(e.length,t.length-1),i):e.slice()},i.range=function(o){return arguments.length?(t=Array.from(o),n=Math.min(e.length,t.length-1),i):t.slice()},i.invertExtent=function(o){var l=t.indexOf(o);return[e[l-1],e[l]]},i.unknown=function(o){return arguments.length?(r=o,i):r},i.copy=function(){return p2().domain(e).range(t).unknown(r)},En.apply(i,arguments)}var KY=Se(()=>{as();vo()});function an(e,t,r,n){function i(o){return e(o=arguments.length===0?new Date:new Date(+o)),o}return i.floor=o=>(e(o=new Date(+o)),o),i.ceil=o=>(e(o=new Date(o-1)),t(o,1),e(o),o),i.round=o=>{let l=i(o),s=i.ceil(o);return o-l(t(o=new Date(+o),l==null?1:Math.floor(l)),o),i.range=(o,l,s)=>{let a=[];if(o=i.ceil(o),s=s==null?1:Math.floor(s),!(o0))return a;let u;do a.push(u=new Date(+o)),t(o,s),e(o);while(uan(l=>{if(l>=l)for(;e(l),!o(l);)l.setTime(l-1)},(l,s)=>{if(l>=l)if(s<0)for(;++s<=0;)for(;t(l,-1),!o(l););else for(;--s>=0;)for(;t(l,1),!o(l););}),r&&(i.count=(o,l)=>(RT.setTime(+o),qT.setTime(+l),e(RT),e(qT),Math.floor(r(RT,qT))),i.every=o=>(o=Math.floor(o),!isFinite(o)||!(o>0)?null:o>1?i.filter(n?l=>n(l)%o===0:l=>i.count(0,l)%o===0):i)),i}var RT,qT,zl=Se(()=>{RT=new Date,qT=new Date});var M0,Jxt,JY=Se(()=>{zl();M0=an(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);M0.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?an(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):M0);Jxt=M0.range});var ls,QY,zT=Se(()=>{zl();ls=an(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*1e3)},(e,t)=>(t-e)/1e3,e=>e.getUTCSeconds()),QY=ls.range});var ph,y1e,mh,w1e,UT=Se(()=>{zl();ph=an(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getMinutes()),y1e=ph.range,mh=an(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getUTCMinutes()),w1e=mh.range});var dh,b1e,hh,D1e,HT=Se(()=>{zl();dh=an(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3-e.getMinutes()*6e4)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getHours()),b1e=dh.range,hh=an(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getUTCHours()),D1e=hh.range});var Ul,S1e,Vp,N1e,m2,E1e,$T=Se(()=>{zl();Ul=an(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/864e5,e=>e.getDate()-1),S1e=Ul.range,Vp=an(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>e.getUTCDate()-1),N1e=Vp.range,m2=an(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>Math.floor(e/864e5)),E1e=m2.range});function Gp(e){return an(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(t,r)=>{t.setDate(t.getDate()+r*7)},(t,r)=>(r-t-(r.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/6048e5)}function Yp(e){return an(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCDate(t.getUTCDate()+r*7)},(t,r)=>(r-t)/6048e5)}var Hl,gh,eZ,tZ,nc,rZ,nZ,iZ,A1e,C1e,M1e,T1e,_1e,O1e,$l,vh,oZ,aZ,ic,sZ,uZ,lZ,F1e,I1e,k1e,L1e,B1e,P1e,WT=Se(()=>{zl();Hl=Gp(0),gh=Gp(1),eZ=Gp(2),tZ=Gp(3),nc=Gp(4),rZ=Gp(5),nZ=Gp(6),iZ=Hl.range,A1e=gh.range,C1e=eZ.range,M1e=tZ.range,T1e=nc.range,_1e=rZ.range,O1e=nZ.range;$l=Yp(0),vh=Yp(1),oZ=Yp(2),aZ=Yp(3),ic=Yp(4),sZ=Yp(5),uZ=Yp(6),lZ=$l.range,F1e=vh.range,I1e=oZ.range,k1e=aZ.range,L1e=ic.range,B1e=sZ.range,P1e=uZ.range});var xh,R1e,yh,q1e,VT=Se(()=>{zl();xh=an(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth()),R1e=xh.range,yh=an(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth()),q1e=yh.range});var Ma,z1e,Ta,U1e,GT=Se(()=>{zl();Ma=an(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());Ma.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:an(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,r)=>{t.setFullYear(t.getFullYear()+r*e)});z1e=Ma.range,Ta=an(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());Ta.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:an(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)});U1e=Ta.range});function cZ(e,t,r,n,i,o){let l=[[ls,1,1e3],[ls,5,5*1e3],[ls,15,15*1e3],[ls,30,30*1e3],[o,1,6e4],[o,5,5*6e4],[o,15,15*6e4],[o,30,30*6e4],[i,1,36e5],[i,3,3*36e5],[i,6,6*36e5],[i,12,12*36e5],[n,1,864e5],[n,2,2*864e5],[r,1,6048e5],[t,1,2592e6],[t,3,3*2592e6],[e,1,31536e6]];function s(u,f,p){let h=fS).right(l,h);if(g===l.length)return e.every(nh(u/31536e6,f/31536e6,p));if(g===0)return M0.every(Math.max(nh(u,f,p),1));let[x,v]=l[h/l[g-1][2]{as();JY();zT();UT();HT();$T();WT();VT();GT();[YT,ZT]=cZ(Ta,yh,$l,m2,hh,mh),[XT,KT]=cZ(Ma,xh,Hl,Ul,dh,ph)});var d2=Se(()=>{zT();UT();HT();$T();WT();VT();GT();pZ()});function JT(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function QT(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function _0(e,t,r){return{y:e,m:t,d:r,H:0,M:0,S:0,L:0}}function jT(e){var t=e.dateTime,r=e.date,n=e.time,i=e.periods,o=e.days,l=e.shortDays,s=e.months,a=e.shortMonths,u=O0(i),f=F0(i),p=O0(o),h=F0(o),g=O0(l),x=F0(l),v=O0(s),S=F0(s),D=O0(a),C=F0(a),E={a:H,A:ee,b:Z,B:ce,c:null,d:xZ,e:xZ,f:cwe,g:bwe,G:Swe,H:uwe,I:lwe,j:fwe,L:SZ,m:pwe,M:mwe,p:be,q:de,Q:bZ,s:DZ,S:dwe,u:hwe,U:gwe,V:vwe,w:xwe,W:ywe,x:null,X:null,y:wwe,Y:Dwe,Z:Nwe,"%":wZ},M={a:ne,A:ve,b:Te,B:De,c:null,d:yZ,e:yZ,f:Mwe,g:Rwe,G:zwe,H:Ewe,I:Awe,j:Cwe,L:EZ,m:Twe,M:_we,p:se,q:le,Q:bZ,s:DZ,S:Owe,u:Fwe,U:Iwe,V:kwe,w:Lwe,W:Bwe,x:null,X:null,y:Pwe,Y:qwe,Z:Uwe,"%":wZ},T={a:B,A:L,b:q,B:R,c:V,d:gZ,e:gZ,f:iwe,g:hZ,G:dZ,H:vZ,I:vZ,j:ewe,L:nwe,m:j1e,M:twe,p:I,q:Q1e,Q:awe,s:swe,S:rwe,u:Y1e,U:Z1e,V:X1e,w:G1e,W:K1e,x:X,X:U,y:hZ,Y:dZ,Z:J1e,"%":owe};E.x=N(r,E),E.X=N(n,E),E.c=N(t,E),M.x=N(r,M),M.X=N(n,M),M.c=N(t,M);function N(oe,we){return function(Ce){var he=[],Pe=-1,Ze=0,ie=oe.length,fe,Oe,Me;for(Ce instanceof Date||(Ce=new Date(+Ce));++Pe53)return null;"w"in he||(he.w=1),"Z"in he?(Ze=QT(_0(he.y,0,1)),ie=Ze.getUTCDay(),Ze=ie>4||ie===0?vh.ceil(Ze):vh(Ze),Ze=Vp.offset(Ze,(he.V-1)*7),he.y=Ze.getUTCFullYear(),he.m=Ze.getUTCMonth(),he.d=Ze.getUTCDate()+(he.w+6)%7):(Ze=JT(_0(he.y,0,1)),ie=Ze.getDay(),Ze=ie>4||ie===0?gh.ceil(Ze):gh(Ze),Ze=Ul.offset(Ze,(he.V-1)*7),he.y=Ze.getFullYear(),he.m=Ze.getMonth(),he.d=Ze.getDate()+(he.w+6)%7)}else("W"in he||"U"in he)&&("w"in he||(he.w="u"in he?he.u%7:"W"in he?1:0),ie="Z"in he?QT(_0(he.y,0,1)).getUTCDay():JT(_0(he.y,0,1)).getDay(),he.m=0,he.d="W"in he?(he.w+6)%7+he.W*7-(ie+5)%7:he.w+he.U*7-(ie+6)%7);return"Z"in he?(he.H+=he.Z/100|0,he.M+=he.Z%100,QT(he)):JT(he)}}function F(oe,we,Ce,he){for(var Pe=0,Ze=we.length,ie=Ce.length,fe,Oe;Pe=ie)return-1;if(fe=we.charCodeAt(Pe++),fe===37){if(fe=we.charAt(Pe++),Oe=T[fe in mZ?we.charAt(Pe++):fe],!Oe||(he=Oe(oe,Ce,he))<0)return-1}else if(fe!=Ce.charCodeAt(he++))return-1}return he}function I(oe,we,Ce){var he=u.exec(we.slice(Ce));return he?(oe.p=f.get(he[0].toLowerCase()),Ce+he[0].length):-1}function B(oe,we,Ce){var he=g.exec(we.slice(Ce));return he?(oe.w=x.get(he[0].toLowerCase()),Ce+he[0].length):-1}function L(oe,we,Ce){var he=p.exec(we.slice(Ce));return he?(oe.w=h.get(he[0].toLowerCase()),Ce+he[0].length):-1}function q(oe,we,Ce){var he=D.exec(we.slice(Ce));return he?(oe.m=C.get(he[0].toLowerCase()),Ce+he[0].length):-1}function R(oe,we,Ce){var he=v.exec(we.slice(Ce));return he?(oe.m=S.get(he[0].toLowerCase()),Ce+he[0].length):-1}function V(oe,we,Ce){return F(oe,t,we,Ce)}function X(oe,we,Ce){return F(oe,r,we,Ce)}function U(oe,we,Ce){return F(oe,n,we,Ce)}function H(oe){return l[oe.getDay()]}function ee(oe){return o[oe.getDay()]}function Z(oe){return a[oe.getMonth()]}function ce(oe){return s[oe.getMonth()]}function be(oe){return i[+(oe.getHours()>=12)]}function de(oe){return 1+~~(oe.getMonth()/3)}function ne(oe){return l[oe.getUTCDay()]}function ve(oe){return o[oe.getUTCDay()]}function Te(oe){return a[oe.getUTCMonth()]}function De(oe){return s[oe.getUTCMonth()]}function se(oe){return i[+(oe.getUTCHours()>=12)]}function le(oe){return 1+~~(oe.getUTCMonth()/3)}return{format:function(oe){var we=N(oe+="",E);return we.toString=function(){return oe},we},parse:function(oe){var we=O(oe+="",!1);return we.toString=function(){return oe},we},utcFormat:function(oe){var we=N(oe+="",M);return we.toString=function(){return oe},we},utcParse:function(oe){var we=O(oe+="",!0);return we.toString=function(){return oe},we}}}function Rr(e,t,r){var n=e<0?"-":"",i=(n?-e:e)+"",o=i.length;return n+(o[t.toLowerCase(),r]))}function G1e(e,t,r){var n=Bi.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function Y1e(e,t,r){var n=Bi.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function Z1e(e,t,r){var n=Bi.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function X1e(e,t,r){var n=Bi.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function K1e(e,t,r){var n=Bi.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function dZ(e,t,r){var n=Bi.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function hZ(e,t,r){var n=Bi.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function J1e(e,t,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return n?(e.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function Q1e(e,t,r){var n=Bi.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function j1e(e,t,r){var n=Bi.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function gZ(e,t,r){var n=Bi.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function ewe(e,t,r){var n=Bi.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function vZ(e,t,r){var n=Bi.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function twe(e,t,r){var n=Bi.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function rwe(e,t,r){var n=Bi.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function nwe(e,t,r){var n=Bi.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function iwe(e,t,r){var n=Bi.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function owe(e,t,r){var n=$1e.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function awe(e,t,r){var n=Bi.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function swe(e,t,r){var n=Bi.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function xZ(e,t){return Rr(e.getDate(),t,2)}function uwe(e,t){return Rr(e.getHours(),t,2)}function lwe(e,t){return Rr(e.getHours()%12||12,t,2)}function fwe(e,t){return Rr(1+Ul.count(Ma(e),e),t,3)}function SZ(e,t){return Rr(e.getMilliseconds(),t,3)}function cwe(e,t){return SZ(e,t)+"000"}function pwe(e,t){return Rr(e.getMonth()+1,t,2)}function mwe(e,t){return Rr(e.getMinutes(),t,2)}function dwe(e,t){return Rr(e.getSeconds(),t,2)}function hwe(e){var t=e.getDay();return t===0?7:t}function gwe(e,t){return Rr(Hl.count(Ma(e)-1,e),t,2)}function NZ(e){var t=e.getDay();return t>=4||t===0?nc(e):nc.ceil(e)}function vwe(e,t){return e=NZ(e),Rr(nc.count(Ma(e),e)+(Ma(e).getDay()===4),t,2)}function xwe(e){return e.getDay()}function ywe(e,t){return Rr(gh.count(Ma(e)-1,e),t,2)}function wwe(e,t){return Rr(e.getFullYear()%100,t,2)}function bwe(e,t){return e=NZ(e),Rr(e.getFullYear()%100,t,2)}function Dwe(e,t){return Rr(e.getFullYear()%1e4,t,4)}function Swe(e,t){var r=e.getDay();return e=r>=4||r===0?nc(e):nc.ceil(e),Rr(e.getFullYear()%1e4,t,4)}function Nwe(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+Rr(t/60|0,"0",2)+Rr(t%60,"0",2)}function yZ(e,t){return Rr(e.getUTCDate(),t,2)}function Ewe(e,t){return Rr(e.getUTCHours(),t,2)}function Awe(e,t){return Rr(e.getUTCHours()%12||12,t,2)}function Cwe(e,t){return Rr(1+Vp.count(Ta(e),e),t,3)}function EZ(e,t){return Rr(e.getUTCMilliseconds(),t,3)}function Mwe(e,t){return EZ(e,t)+"000"}function Twe(e,t){return Rr(e.getUTCMonth()+1,t,2)}function _we(e,t){return Rr(e.getUTCMinutes(),t,2)}function Owe(e,t){return Rr(e.getUTCSeconds(),t,2)}function Fwe(e){var t=e.getUTCDay();return t===0?7:t}function Iwe(e,t){return Rr($l.count(Ta(e)-1,e),t,2)}function AZ(e){var t=e.getUTCDay();return t>=4||t===0?ic(e):ic.ceil(e)}function kwe(e,t){return e=AZ(e),Rr(ic.count(Ta(e),e)+(Ta(e).getUTCDay()===4),t,2)}function Lwe(e){return e.getUTCDay()}function Bwe(e,t){return Rr(vh.count(Ta(e)-1,e),t,2)}function Pwe(e,t){return Rr(e.getUTCFullYear()%100,t,2)}function Rwe(e,t){return e=AZ(e),Rr(e.getUTCFullYear()%100,t,2)}function qwe(e,t){return Rr(e.getUTCFullYear()%1e4,t,4)}function zwe(e,t){var r=e.getUTCDay();return e=r>=4||r===0?ic(e):ic.ceil(e),Rr(e.getUTCFullYear()%1e4,t,4)}function Uwe(){return"+0000"}function wZ(){return"%"}function bZ(e){return+e}function DZ(e){return Math.floor(+e/1e3)}var mZ,Bi,$1e,W1e,CZ=Se(()=>{d2();mZ={"-":"",_:" ",0:"0"},Bi=/^\s*\d+/,$1e=/^%/,W1e=/[\\^$*+?|[\]().{}]/g});function e_(e){return wh=jT(e),h2=wh.format,MZ=wh.parse,g2=wh.utcFormat,TZ=wh.utcParse,wh}var wh,h2,MZ,g2,TZ,_Z=Se(()=>{CZ();e_({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]})});var t_=Se(()=>{_Z()});function Hwe(e){return new Date(e)}function $we(e){return e instanceof Date?+e:+new Date(+e)}function v2(e,t,r,n,i,o,l,s,a,u){var f=Hp(),p=f.invert,h=f.domain,g=u(".%L"),x=u(":%S"),v=u("%I:%M"),S=u("%I %p"),D=u("%a %d"),C=u("%b %d"),E=u("%B"),M=u("%Y");function T(N){return(a(N){d2();t_();zu();vo();PT()});function i_(){return En.apply(v2(YT,ZT,Ta,yh,$l,Vp,hh,mh,ls,g2).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}var OZ=Se(()=>{d2();t_();n_();vo()});function x2(){var e=0,t=1,r,n,i,o,l=Si,s=!1,a;function u(p){return p==null||isNaN(p=+p)?a:l(i===0?.5:(p=(o(p)-r)*i,s?Math.max(0,Math.min(1,p)):p))}u.domain=function(p){return arguments.length?([e,t]=p,r=o(e=+e),n=o(t=+t),i=r===n?0:1/(n-r),u):[e,t]},u.clamp=function(p){return arguments.length?(s=!!p,u):s},u.interpolator=function(p){return arguments.length?(l=p,u):l};function f(p){return function(h){var g,x;return arguments.length?([g,x]=h,l=p(g,x),u):[l(0),l(1)]}}return u.range=f(Qo),u.rangeRound=f(tc),u.unknown=function(p){return arguments.length?(a=p,u):a},function(p){return o=p,r=p(e),n=p(t),i=r===n?0:1/(n-r),u}}function Wl(e,t){return t.domain(e.domain()).interpolator(e.interpolator()).clamp(e.clamp()).unknown(e.unknown())}function y2(){var e=Fo(x2()(Si));return e.copy=function(){return Wl(e,y2())},ss.apply(e,arguments)}function o_(){var e=N0(x2()).domain([1,10]);return e.copy=function(){return Wl(e,o_()).base(e.base())},ss.apply(e,arguments)}function a_(){var e=E0(x2());return e.copy=function(){return Wl(e,a_()).constant(e.constant())},ss.apply(e,arguments)}function w2(){var e=A0(x2());return e.copy=function(){return Wl(e,w2()).exponent(e.exponent())},ss.apply(e,arguments)}function FZ(){return w2.apply(null,arguments).exponent(.5)}var s_=Se(()=>{Rl();zu();vo();ql();o2();s2();u2()});function b2(){var e=[],t=Si;function r(n){if(n!=null&&!isNaN(n=+n))return t((Xs(e,n,1)-1)/(e.length-1))}return r.domain=function(n){if(!arguments.length)return e.slice();e=[];for(let i of n)i!=null&&!isNaN(i=+i)&&e.push(i);return e.sort(Oo),r},r.interpolator=function(n){return arguments.length?(t=n,r):t},r.range=function(){return e.map((n,i)=>t(i/(e.length-1)))},r.quantiles=function(n){return Array.from({length:n+1},(i,o)=>_D(e,o/n))},r.copy=function(){return b2(t).domain(e)},ss.apply(r,arguments)}var IZ=Se(()=>{as();zu();vo()});function D2(){var e=0,t=.5,r=1,n=1,i,o,l,s,a,u=Si,f,p=!1,h;function g(v){return isNaN(v=+v)?h:(v=.5+((v=+f(v))-o)*(n*v{Rl();zu();vo();ql();o2();s_();s2();u2()});var BZ={};wu(BZ,{scaleBand:()=>h0,scaleDiverging:()=>S2,scaleDivergingLog:()=>u_,scaleDivergingPow:()=>N2,scaleDivergingSqrt:()=>kZ,scaleDivergingSymlog:()=>l_,scaleIdentity:()=>n2,scaleImplicit:()=>FD,scaleLinear:()=>r2,scaleLog:()=>i2,scaleOrdinal:()=>ih,scalePoint:()=>AG,scalePow:()=>C0,scaleQuantile:()=>f2,scaleQuantize:()=>c2,scaleRadial:()=>l2,scaleSequential:()=>y2,scaleSequentialLog:()=>o_,scaleSequentialPow:()=>w2,scaleSequentialQuantile:()=>b2,scaleSequentialSqrt:()=>FZ,scaleSequentialSymlog:()=>a_,scaleSqrt:()=>VY,scaleSymlog:()=>a2,scaleThreshold:()=>p2,scaleTime:()=>r_,scaleUtc:()=>i_,tickFormat:()=>D0});var PZ=Se(()=>{CG();RY();ql();o2();s2();pT();u2();YY();ZY();XY();KY();n_();OZ();s_();IZ();LZ();BT()});function RZ(e){return e}var qZ=Se(()=>{});function Wwe(e){return"translate("+e+",0)"}function Vwe(e){return"translate(0,"+e+")"}function Gwe(e){return t=>+e(t)}function Ywe(e,t){return t=Math.max(0,e.bandwidth()-t*2)/2,e.round()&&(t=Math.round(t)),r=>+e(r)+t}function Zwe(){return!this.__axis}function C2(e,t){var r=[],n=null,i=null,o=6,l=6,s=3,a=typeof window<"u"&&window.devicePixelRatio>1?0:.5,u=e===E2||e===I0?-1:1,f=e===I0||e===A2?"x":"y",p=e===E2||e===f_?Wwe:Vwe;function h(g){var x=n??(t.ticks?t.ticks.apply(t,r):t.domain()),v=i??(t.tickFormat?t.tickFormat.apply(t,r):RZ),S=Math.max(o,0)+s,D=t.range(),C=+D[0]+a,E=+D[D.length-1]+a,M=(t.bandwidth?Ywe:Gwe)(t.copy(),a),T=g.selection?g.selection():g,N=T.selectAll(".domain").data([null]),O=T.selectAll(".tick").data(x,t).order(),F=O.exit(),I=O.enter().append("g").attr("class","tick"),B=O.select("line"),L=O.select("text");N=N.merge(N.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),O=O.merge(I),B=B.merge(I.append("line").attr("stroke","currentColor").attr(f+"2",u*o)),L=L.merge(I.append("text").attr("fill","currentColor").attr(f,u*S).attr("dy",e===E2?"0em":e===f_?"0.71em":"0.32em")),g!==T&&(N=N.transition(g),O=O.transition(g),B=B.transition(g),L=L.transition(g),F=F.transition(g).attr("opacity",zZ).attr("transform",function(q){return isFinite(q=M(q))?p(q+a):this.getAttribute("transform")}),I.attr("opacity",zZ).attr("transform",function(q){var R=this.parentNode.__axis;return p((R&&isFinite(R=R(q))?R:M(q))+a)})),F.remove(),N.attr("d",e===I0||e===A2?l?"M"+u*l+","+C+"H"+a+"V"+E+"H"+u*l:"M"+a+","+C+"V"+E:l?"M"+C+","+u*l+"V"+a+"H"+E+"V"+u*l:"M"+C+","+a+"H"+E),O.attr("opacity",1).attr("transform",function(q){return p(M(q)+a)}),B.attr(f+"2",u*o),L.attr(f,u*S).text(v),T.filter(Zwe).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",e===A2?"start":e===I0?"end":"middle"),T.each(function(){this.__axis=M})}return h.scale=function(g){return arguments.length?(t=g,h):t},h.ticks=function(){return r=Array.from(arguments),h},h.tickArguments=function(g){return arguments.length?(r=g==null?[]:Array.from(g),h):r.slice()},h.tickValues=function(g){return arguments.length?(n=g==null?null:Array.from(g),h):n&&n.slice()},h.tickFormat=function(g){return arguments.length?(i=g,h):i},h.tickSize=function(g){return arguments.length?(o=l=+g,h):o},h.tickSizeInner=function(g){return arguments.length?(o=+g,h):o},h.tickSizeOuter=function(g){return arguments.length?(l=+g,h):l},h.tickPadding=function(g){return arguments.length?(s=+g,h):s},h.offset=function(g){return arguments.length?(a=+g,h):a},h}function UZ(e){return C2(E2,e)}function HZ(e){return C2(A2,e)}function $Z(e){return C2(f_,e)}function WZ(e){return C2(I0,e)}var E2,A2,f_,I0,zZ,VZ=Se(()=>{qZ();E2=1,A2=2,f_=3,I0=4,zZ=1e-6});var GZ={};wu(GZ,{axisBottom:()=>$Z,axisLeft:()=>WZ,axisRight:()=>HZ,axisTop:()=>UZ});var YZ=Se(()=>{VZ()});function XZ(){for(var e=0,t=arguments.length,r={},n;e=0&&(n=r.slice(i+1),r=r.slice(0,i)),r&&!t.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:n}})}function Jwe(e,t){for(var r=0,n=e.length,i;r{Xwe={value:()=>{}};M2.prototype=XZ.prototype={constructor:M2,on:function(e,t){var r=this._,n=Kwe(e+"",r),i,o=-1,l=n.length;if(arguments.length<2){for(;++o0)for(var r=new Array(i),n=0,i,o;n{KZ()});var T2,L0,_2=Se(()=>{T2="http://www.w3.org/1999/xhtml",L0={svg:"http://www.w3.org/2000/svg",xhtml:T2,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"}});function Hu(e){var t=e+="",r=t.indexOf(":");return r>=0&&(t=e.slice(0,r))!=="xmlns"&&(e=e.slice(r+1)),L0.hasOwnProperty(t)?{space:L0[t],local:e}:e}var O2=Se(()=>{_2()});function Qwe(e){return function(){var t=this.ownerDocument,r=this.namespaceURI;return r===T2&&t.documentElement.namespaceURI===T2?t.createElement(e):t.createElementNS(r,e)}}function jwe(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function oc(e){var t=Hu(e);return(t.local?jwe:Qwe)(t)}var B0=Se(()=>{O2();_2()});function ebe(){}function ac(e){return e==null?ebe:function(){return this.querySelector(e)}}var F2=Se(()=>{});function JZ(e){typeof e!="function"&&(e=ac(e));for(var t=this._groups,r=t.length,n=new Array(r),i=0;i{fs();F2()});function P0(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}var p_=Se(()=>{});function tbe(){return[]}function bh(e){return e==null?tbe:function(){return this.querySelectorAll(e)}}var m_=Se(()=>{});function rbe(e){return function(){return P0(e.apply(this,arguments))}}function jZ(e){typeof e=="function"?e=rbe(e):e=bh(e);for(var t=this._groups,r=t.length,n=[],i=[],o=0;o{fs();p_();m_()});function Dh(e){return function(){return this.matches(e)}}function I2(e){return function(t){return t.matches(e)}}var R0=Se(()=>{});function ibe(e){return function(){return nbe.call(this.children,e)}}function obe(){return this.firstElementChild}function tX(e){return this.select(e==null?obe:ibe(typeof e=="function"?e:I2(e)))}var nbe,rX=Se(()=>{R0();nbe=Array.prototype.find});function sbe(){return Array.from(this.children)}function ube(e){return function(){return abe.call(this.children,e)}}function nX(e){return this.selectAll(e==null?sbe:ube(typeof e=="function"?e:I2(e)))}var abe,iX=Se(()=>{R0();abe=Array.prototype.filter});function oX(e){typeof e!="function"&&(e=Dh(e));for(var t=this._groups,r=t.length,n=new Array(r),i=0;i{fs();R0()});function k2(e){return new Array(e.length)}var d_=Se(()=>{});function sX(){return new xn(this._enter||this._groups.map(k2),this._parents)}function q0(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}var h_=Se(()=>{d_();fs();q0.prototype={constructor:q0,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}}});function uX(e){return function(){return e}}var lX=Se(()=>{});function lbe(e,t,r,n,i,o){for(var l=0,s,a=t.length,u=o.length;l=E&&(E=C+1);!(T=S[E])&&++E{fs();h_();lX()});function pX(){return new xn(this._exit||this._groups.map(k2),this._parents)}var mX=Se(()=>{d_();fs()});function dX(e,t,r){var n=this.enter(),i=this,o=this.exit();return typeof e=="function"?(n=e(n),n&&(n=n.selection())):n=n.append(e+""),t!=null&&(i=t(i),i&&(i=i.selection())),r==null?o.remove():r(o),n&&i?n.merge(i).order():i}var hX=Se(()=>{});function gX(e){for(var t=e.selection?e.selection():e,r=this._groups,n=t._groups,i=r.length,o=n.length,l=Math.min(i,o),s=new Array(i),a=0;a{fs()});function xX(){for(var e=this._groups,t=-1,r=e.length;++t=0;)(l=n[i])&&(o&&l.compareDocumentPosition(o)^4&&o.parentNode.insertBefore(l,o),o=l);return this}var yX=Se(()=>{});function wX(e){e||(e=mbe);function t(p,h){return p&&h?e(p.__data__,h.__data__):!p-!h}for(var r=this._groups,n=r.length,i=new Array(n),o=0;ot?1:e>=t?0:NaN}var bX=Se(()=>{fs()});function DX(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}var SX=Se(()=>{});function NX(){return Array.from(this)}var EX=Se(()=>{});function AX(){for(var e=this._groups,t=0,r=e.length;t{});function MX(){let e=0;for(let t of this)++e;return e}var TX=Se(()=>{});function _X(){return!this.node()}var OX=Se(()=>{});function FX(e){for(var t=this._groups,r=0,n=t.length;r{});function dbe(e){return function(){this.removeAttribute(e)}}function hbe(e){return function(){this.removeAttributeNS(e.space,e.local)}}function gbe(e,t){return function(){this.setAttribute(e,t)}}function vbe(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function xbe(e,t){return function(){var r=t.apply(this,arguments);r==null?this.removeAttribute(e):this.setAttribute(e,r)}}function ybe(e,t){return function(){var r=t.apply(this,arguments);r==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,r)}}function kX(e,t){var r=Hu(e);if(arguments.length<2){var n=this.node();return r.local?n.getAttributeNS(r.space,r.local):n.getAttribute(r)}return this.each((t==null?r.local?hbe:dbe:typeof t=="function"?r.local?ybe:xbe:r.local?vbe:gbe)(r,t))}var LX=Se(()=>{O2()});function Sh(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}var L2=Se(()=>{});function wbe(e){return function(){this.style.removeProperty(e)}}function bbe(e,t,r){return function(){this.style.setProperty(e,t,r)}}function Dbe(e,t,r){return function(){var n=t.apply(this,arguments);n==null?this.style.removeProperty(e):this.style.setProperty(e,n,r)}}function BX(e,t,r){return arguments.length>1?this.each((t==null?wbe:typeof t=="function"?Dbe:bbe)(e,t,r??"")):Vl(this.node(),e)}function Vl(e,t){return e.style.getPropertyValue(t)||Sh(e).getComputedStyle(e,null).getPropertyValue(t)}var g_=Se(()=>{L2()});function Sbe(e){return function(){delete this[e]}}function Nbe(e,t){return function(){this[e]=t}}function Ebe(e,t){return function(){var r=t.apply(this,arguments);r==null?delete this[e]:this[e]=r}}function PX(e,t){return arguments.length>1?this.each((t==null?Sbe:typeof t=="function"?Ebe:Nbe)(e,t)):this.node()[e]}var RX=Se(()=>{});function qX(e){return e.trim().split(/^|\s+/)}function v_(e){return e.classList||new zX(e)}function zX(e){this._node=e,this._names=qX(e.getAttribute("class")||"")}function UX(e,t){for(var r=v_(e),n=-1,i=t.length;++n{zX.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}}});function Tbe(){this.textContent=""}function _be(e){return function(){this.textContent=e}}function Obe(e){return function(){var t=e.apply(this,arguments);this.textContent=t??""}}function VX(e){return arguments.length?this.each(e==null?Tbe:(typeof e=="function"?Obe:_be)(e)):this.node().textContent}var GX=Se(()=>{});function Fbe(){this.innerHTML=""}function Ibe(e){return function(){this.innerHTML=e}}function kbe(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??""}}function YX(e){return arguments.length?this.each(e==null?Fbe:(typeof e=="function"?kbe:Ibe)(e)):this.node().innerHTML}var ZX=Se(()=>{});function Lbe(){this.nextSibling&&this.parentNode.appendChild(this)}function XX(){return this.each(Lbe)}var KX=Se(()=>{});function Bbe(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function JX(){return this.each(Bbe)}var QX=Se(()=>{});function jX(e){var t=typeof e=="function"?e:oc(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}var eK=Se(()=>{B0()});function Pbe(){return null}function tK(e,t){var r=typeof e=="function"?e:oc(e),n=t==null?Pbe:typeof t=="function"?t:ac(t);return this.select(function(){return this.insertBefore(r.apply(this,arguments),n.apply(this,arguments)||null)})}var rK=Se(()=>{B0();F2()});function Rbe(){var e=this.parentNode;e&&e.removeChild(this)}function nK(){return this.each(Rbe)}var iK=Se(()=>{});function qbe(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function zbe(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function oK(e){return this.select(e?zbe:qbe)}var aK=Se(()=>{});function sK(e){return arguments.length?this.property("__data__",e):this.node().__data__}var uK=Se(()=>{});function Ube(e){return function(t){e.call(this,t,this.__data__)}}function Hbe(e){return e.trim().split(/^|\s+/).map(function(t){var r="",n=t.indexOf(".");return n>=0&&(r=t.slice(n+1),t=t.slice(0,n)),{type:t,name:r}})}function $be(e){return function(){var t=this.__on;if(t){for(var r=0,n=-1,i=t.length,o;r{});function cK(e,t,r){var n=Sh(e),i=n.CustomEvent;typeof i=="function"?i=new i(t,r):(i=n.document.createEvent("Event"),r?(i.initEvent(t,r.bubbles,r.cancelable),i.detail=r.detail):i.initEvent(t,!1,!1)),e.dispatchEvent(i)}function Vbe(e,t){return function(){return cK(this,e,t)}}function Gbe(e,t){return function(){return cK(this,e,t.apply(this,arguments))}}function pK(e,t){return this.each((typeof t=="function"?Gbe:Vbe)(e,t))}var mK=Se(()=>{L2()});function*dK(){for(var e=this._groups,t=0,r=e.length;t{});function xn(e,t){this._groups=e,this._parents=t}function gK(){return new xn([[document.documentElement]],z0)}function Ybe(){return this}var z0,$u,fs=Se(()=>{QZ();eX();rX();iX();aX();cX();h_();mX();hX();vX();yX();bX();SX();EX();CX();TX();OX();IX();LX();g_();RX();WX();GX();ZX();KX();QX();eK();rK();iK();aK();uK();fK();mK();hK();z0=[null];xn.prototype=gK.prototype={constructor:xn,select:JZ,selectAll:jZ,selectChild:tX,selectChildren:nX,filter:oX,data:fX,enter:sX,exit:pX,join:dX,merge:gX,selection:Ybe,order:xX,sort:wX,call:DX,nodes:NX,node:AX,size:MX,empty:_X,each:FX,attr:kX,style:BX,property:PX,classed:$X,text:VX,html:YX,raise:XX,lower:JX,append:jX,insert:tK,remove:nK,clone:oK,datum:sK,on:lK,dispatch:pK,[Symbol.iterator]:dK};$u=gK});function _a(e){return typeof e=="string"?new xn([[document.querySelector(e)]],[document.documentElement]):new xn([[e]],z0)}var x_=Se(()=>{fs()});function vK(e){return _a(oc(e).call(document.documentElement))}var xK=Se(()=>{B0();x_()});function B2(){return new y_}function y_(){this._="@"+(++Zbe).toString(36)}var Zbe,yK=Se(()=>{Zbe=0;y_.prototype=B2.prototype={constructor:y_,get:function(e){for(var t=this._;!(t in e);)if(!(e=e.parentNode))return;return e[t]},set:function(e,t){return e[this._]=t},remove:function(e){return this._ in e&&delete e[this._]},toString:function(){return this._}}});function P2(e){let t;for(;t=e.sourceEvent;)e=t;return e}var w_=Se(()=>{});function cs(e,t){if(e=P2(e),t===void 0&&(t=e.currentTarget),t){var r=t.ownerSVGElement||t;if(r.createSVGPoint){var n=r.createSVGPoint();return n.x=e.clientX,n.y=e.clientY,n=n.matrixTransform(t.getScreenCTM().inverse()),[n.x,n.y]}if(t.getBoundingClientRect){var i=t.getBoundingClientRect();return[e.clientX-i.left-t.clientLeft,e.clientY-i.top-t.clientTop]}}return[e.pageX,e.pageY]}var b_=Se(()=>{w_()});function wK(e,t){return e.target&&(e=P2(e),t===void 0&&(t=e.currentTarget),e=e.touches||[e]),Array.from(e,r=>cs(r,t))}var bK=Se(()=>{b_();w_()});function DK(e){return typeof e=="string"?new xn([document.querySelectorAll(e)],[document.documentElement]):new xn([P0(e)],z0)}var SK=Se(()=>{p_();fs()});var js={};wu(js,{create:()=>vK,creator:()=>oc,local:()=>B2,matcher:()=>Dh,namespace:()=>Hu,namespaces:()=>L0,pointer:()=>cs,pointers:()=>wK,select:()=>_a,selectAll:()=>DK,selection:()=>$u,selector:()=>ac,selectorAll:()=>bh,style:()=>Vl,window:()=>Sh});var Zn=Se(()=>{xK();B0();yK();R0();O2();_2();b_();bK();x_();SK();fs();F2();m_();g_();L2()});function q2(e){e.preventDefault(),e.stopImmediatePropagation()}var R2,NK=Se(()=>{R2={capture:!0,passive:!1}});function D_(e){var t=e.document.documentElement,r=_a(e).on("dragstart.drag",q2,R2);"onselectstart"in t?r.on("selectstart.drag",q2,R2):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect="none")}function S_(e,t){var r=e.document.documentElement,n=_a(e).on("dragstart.drag",null);t&&(n.on("click.drag",q2,R2),setTimeout(function(){n.on("click.drag",null)},0)),"onselectstart"in r?n.on("selectstart.drag",null):(r.style.MozUserSelect=r.__noselect,delete r.__noselect)}var EK=Se(()=>{Zn();NK()});var AK=Se(()=>{EK()});function G0(){return Zp||(TK(Xbe),Zp=W0.now()+H2)}function Xbe(){Zp=0}function V0(){this._call=this._time=this._next=null}function $2(e,t,r){var n=new V0;return n.restart(e,t,r),n}function _K(){G0(),++Nh;for(var e=z2,t;e;)(t=Zp-e._time)>=0&&e._call.call(void 0,t),e=e._next;--Nh}function CK(){Zp=(U2=W0.now())+H2,Nh=H0=0;try{_K()}finally{Nh=0,Jbe(),Zp=0}}function Kbe(){var e=W0.now(),t=e-U2;t>MK&&(H2-=t,U2=e)}function Jbe(){for(var e,t=z2,r,n=1/0;t;)t._call?(n>t._time&&(n=t._time),e=t,t=t._next):(r=t._next,t._next=null,t=e?e._next=r:z2=r);$0=e,N_(n)}function N_(e){if(!Nh){H0&&(H0=clearTimeout(H0));var t=e-Zp;t>24?(e<1/0&&(H0=setTimeout(CK,e-W0.now()-H2)),U0&&(U0=clearInterval(U0))):(U0||(U2=W0.now(),U0=setInterval(Kbe,MK)),Nh=1,TK(CK))}}var Nh,H0,U0,MK,z2,$0,U2,Zp,H2,W0,TK,E_=Se(()=>{Nh=0,H0=0,U0=0,MK=1e3,U2=0,Zp=0,H2=0,W0=typeof performance=="object"&&performance.now?performance:Date,TK=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};V0.prototype=$2.prototype={constructor:V0,restart:function(e,t,r){if(typeof e!="function")throw new TypeError("callback is not a function");r=(r==null?G0():+r)+(t==null?0:+t),!this._next&&$0!==this&&($0?$0._next=this:z2=this,$0=this),this._call=e,this._time=r,N_()},stop:function(){this._call&&(this._call=null,this._time=1/0,N_())}}});function W2(e,t,r){var n=new V0;return t=t==null?0:+t,n.restart(i=>{n.stop(),e(i+t)},t,r),n}var OK=Se(()=>{E_()});var A_=Se(()=>{E_();OK()});function sc(e,t,r,n,i,o){var l=e.__transition;if(!l)e.__transition={};else if(r in l)return;eDe(e,r,{name:t,index:n,group:i,on:Qbe,tween:jbe,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:kK})}function Z0(e,t){var r=Ni(e,t);if(r.state>kK)throw new Error("too late; already scheduled");return r}function Ki(e,t){var r=Ni(e,t);if(r.state>V2)throw new Error("too late; already running");return r}function Ni(e,t){var r=e.__transition;if(!r||!(r=r[t]))throw new Error("transition not found");return r}function eDe(e,t,r){var n=e.__transition,i;n[t]=r,r.timer=$2(o,0,r.time);function o(u){r.state=FK,r.timer.restart(l,r.delay,r.time),r.delay<=u&&l(u-r.delay)}function l(u){var f,p,h,g;if(r.state!==FK)return a();for(f in n)if(g=n[f],g.name===r.name){if(g.state===V2)return W2(l);g.state===IK?(g.state=Y0,g.timer.stop(),g.on.call("interrupt",e,e.__data__,g.index,g.group),delete n[f]):+f{c_();A_();Qbe=k0("start","end","cancel","interrupt"),jbe=[],kK=0,FK=1,G2=2,V2=3,IK=4,Y2=5,Y0=6});function Xp(e,t){var r=e.__transition,n,i,o=!0,l;if(r){t=t==null?null:t+"";for(l in r){if((n=r[l]).name!==t){o=!1;continue}i=n.state>G2&&n.state{jo()});function LK(e){return this.each(function(){Xp(this,e)})}var BK=Se(()=>{C_()});function tDe(e,t){var r,n;return function(){var i=Ki(this,e),o=i.tween;if(o!==r){n=r=o;for(var l=0,s=n.length;l{jo()});function Z2(e,t){var r;return(typeof t=="number"?Li:t instanceof us?ec:(r=us(t))?(t=r,ec):ch)(e,t)}var M_=Se(()=>{Qs();Rl()});function nDe(e){return function(){this.removeAttribute(e)}}function iDe(e){return function(){this.removeAttributeNS(e.space,e.local)}}function oDe(e,t,r){var n,i=r+"",o;return function(){var l=this.getAttribute(e);return l===i?null:l===n?o:o=t(n=l,r)}}function aDe(e,t,r){var n,i=r+"",o;return function(){var l=this.getAttributeNS(e.space,e.local);return l===i?null:l===n?o:o=t(n=l,r)}}function sDe(e,t,r){var n,i,o;return function(){var l,s=r(this),a;return s==null?void this.removeAttribute(e):(l=this.getAttribute(e),a=s+"",l===a?null:l===n&&a===i?o:(i=a,o=t(n=l,s)))}}function uDe(e,t,r){var n,i,o;return function(){var l,s=r(this),a;return s==null?void this.removeAttributeNS(e.space,e.local):(l=this.getAttributeNS(e.space,e.local),a=s+"",l===a?null:l===n&&a===i?o:(i=a,o=t(n=l,s)))}}function RK(e,t){var r=Hu(e),n=r==="transform"?jD:Z2;return this.attrTween(e,typeof t=="function"?(r.local?uDe:sDe)(r,n,Eh(this,"attr."+e,t)):t==null?(r.local?iDe:nDe)(r):(r.local?aDe:oDe)(r,n,t))}var qK=Se(()=>{Rl();Zn();X0();M_()});function lDe(e,t){return function(r){this.setAttribute(e,t.call(this,r))}}function fDe(e,t){return function(r){this.setAttributeNS(e.space,e.local,t.call(this,r))}}function cDe(e,t){var r,n;function i(){var o=t.apply(this,arguments);return o!==n&&(r=(n=o)&&fDe(e,o)),r}return i._value=t,i}function pDe(e,t){var r,n;function i(){var o=t.apply(this,arguments);return o!==n&&(r=(n=o)&&lDe(e,o)),r}return i._value=t,i}function zK(e,t){var r="attr."+e;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(t==null)return this.tween(r,null);if(typeof t!="function")throw new Error;var n=Hu(e);return this.tween(r,(n.local?cDe:pDe)(n,t))}var UK=Se(()=>{Zn()});function mDe(e,t){return function(){Z0(this,e).delay=+t.apply(this,arguments)}}function dDe(e,t){return t=+t,function(){Z0(this,e).delay=t}}function HK(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?mDe:dDe)(t,e)):Ni(this.node(),t).delay}var $K=Se(()=>{jo()});function hDe(e,t){return function(){Ki(this,e).duration=+t.apply(this,arguments)}}function gDe(e,t){return t=+t,function(){Ki(this,e).duration=t}}function WK(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?hDe:gDe)(t,e)):Ni(this.node(),t).duration}var VK=Se(()=>{jo()});function vDe(e,t){if(typeof t!="function")throw new Error;return function(){Ki(this,e).ease=t}}function GK(e){var t=this._id;return arguments.length?this.each(vDe(t,e)):Ni(this.node(),t).ease}var YK=Se(()=>{jo()});function xDe(e,t){return function(){var r=t.apply(this,arguments);if(typeof r!="function")throw new Error;Ki(this,e).ease=r}}function ZK(e){if(typeof e!="function")throw new Error;return this.each(xDe(this._id,e))}var XK=Se(()=>{jo()});function KK(e){typeof e!="function"&&(e=Dh(e));for(var t=this._groups,r=t.length,n=new Array(r),i=0;i{Zn();Kp()});function QK(e){if(e._id!==this._id)throw new Error;for(var t=this._groups,r=e._groups,n=t.length,i=r.length,o=Math.min(n,i),l=new Array(n),s=0;s{Kp()});function yDe(e){return(e+"").trim().split(/^|\s+/).every(function(t){var r=t.indexOf(".");return r>=0&&(t=t.slice(0,r)),!t||t==="start"})}function wDe(e,t,r){var n,i,o=yDe(t)?Z0:Ki;return function(){var l=o(this,e),s=l.on;s!==n&&(i=(n=s).copy()).on(t,r),l.on=i}}function eJ(e,t){var r=this._id;return arguments.length<2?Ni(this.node(),r).on.on(e):this.each(wDe(r,e,t))}var tJ=Se(()=>{jo()});function bDe(e){return function(){var t=this.parentNode;for(var r in this.__transition)if(+r!==e)return;t&&t.removeChild(this)}}function rJ(){return this.on("end.remove",bDe(this._id))}var nJ=Se(()=>{});function iJ(e){var t=this._name,r=this._id;typeof e!="function"&&(e=ac(e));for(var n=this._groups,i=n.length,o=new Array(i),l=0;l{Zn();Kp();jo()});function aJ(e){var t=this._name,r=this._id;typeof e!="function"&&(e=bh(e));for(var n=this._groups,i=n.length,o=[],l=[],s=0;s{Zn();Kp();jo()});function uJ(){return new DDe(this._groups,this._parents)}var DDe,lJ=Se(()=>{Zn();DDe=$u.prototype.constructor});function SDe(e,t){var r,n,i;return function(){var o=Vl(this,e),l=(this.style.removeProperty(e),Vl(this,e));return o===l?null:o===r&&l===n?i:i=t(r=o,n=l)}}function fJ(e){return function(){this.style.removeProperty(e)}}function NDe(e,t,r){var n,i=r+"",o;return function(){var l=Vl(this,e);return l===i?null:l===n?o:o=t(n=l,r)}}function EDe(e,t,r){var n,i,o;return function(){var l=Vl(this,e),s=r(this),a=s+"";return s==null&&(a=s=(this.style.removeProperty(e),Vl(this,e))),l===a?null:l===n&&a===i?o:(i=a,o=t(n=l,s))}}function ADe(e,t){var r,n,i,o="style."+t,l="end."+o,s;return function(){var a=Ki(this,e),u=a.on,f=a.value[o]==null?s||(s=fJ(t)):void 0;(u!==r||i!==f)&&(n=(r=u).copy()).on(l,i=f),a.on=n}}function cJ(e,t,r){var n=(e+="")=="transform"?QD:Z2;return t==null?this.styleTween(e,SDe(e,n)).on("end.style."+e,fJ(e)):typeof t=="function"?this.styleTween(e,EDe(e,n,Eh(this,"style."+e,t))).each(ADe(this._id,e)):this.styleTween(e,NDe(e,n,t),r).on("end.style."+e,null)}var pJ=Se(()=>{Rl();Zn();jo();X0();M_()});function CDe(e,t,r){return function(n){this.style.setProperty(e,t.call(this,n),r)}}function MDe(e,t,r){var n,i;function o(){var l=t.apply(this,arguments);return l!==i&&(n=(i=l)&&CDe(e,l,r)),n}return o._value=t,o}function mJ(e,t,r){var n="style."+(e+="");if(arguments.length<2)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!="function")throw new Error;return this.tween(n,MDe(e,t,r??""))}var dJ=Se(()=>{});function TDe(e){return function(){this.textContent=e}}function _De(e){return function(){var t=e(this);this.textContent=t??""}}function hJ(e){return this.tween("text",typeof e=="function"?_De(Eh(this,"text",e)):TDe(e==null?"":e+""))}var gJ=Se(()=>{X0()});function ODe(e){return function(t){this.textContent=e.call(this,t)}}function FDe(e){var t,r;function n(){var i=e.apply(this,arguments);return i!==r&&(t=(r=i)&&ODe(i)),t}return n._value=e,n}function vJ(e){var t="text";if(arguments.length<1)return(t=this.tween(t))&&t._value;if(e==null)return this.tween(t,null);if(typeof e!="function")throw new Error;return this.tween(t,FDe(e))}var xJ=Se(()=>{});function yJ(){for(var e=this._name,t=this._id,r=X2(),n=this._groups,i=n.length,o=0;o{Kp();jo()});function bJ(){var e,t,r=this,n=r._id,i=r.size();return new Promise(function(o,l){var s={value:l},a={value:function(){--i===0&&o()}};r.each(function(){var u=Ki(this,n),f=u.on;f!==e&&(t=(e=f).copy(),t._.cancel.push(s),t._.interrupt.push(s),t._.end.push(a)),u.on=t}),i===0&&o()})}var DJ=Se(()=>{jo()});function Io(e,t,r,n){this._groups=e,this._parents=t,this._name=r,this._id=n}function SJ(e){return $u().transition(e)}function X2(){return++IDe}var IDe,Gl,Kp=Se(()=>{Zn();qK();UK();$K();VK();YK();XK();JK();jK();tJ();nJ();oJ();sJ();lJ();pJ();dJ();gJ();xJ();wJ();X0();DJ();IDe=0;Gl=$u.prototype;Io.prototype=SJ.prototype={constructor:Io,select:iJ,selectAll:aJ,selectChild:Gl.selectChild,selectChildren:Gl.selectChildren,filter:KK,merge:QK,selection:uJ,transition:yJ,call:Gl.call,nodes:Gl.nodes,node:Gl.node,size:Gl.size,empty:Gl.empty,each:Gl.each,on:eJ,attr:RK,attrTween:zK,style:cJ,styleTween:mJ,text:hJ,textTween:vJ,remove:rJ,tween:PK,delay:HK,duration:WK,ease:GK,easeVarying:ZK,end:bJ,[Symbol.iterator]:Gl[Symbol.iterator]}});function K2(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var NJ=Se(()=>{});var EJ=Se(()=>{NJ()});function LDe(e,t){for(var r;!(r=e.__transition)||!(r=r[t]);)if(!(e=e.parentNode))throw new Error(`transition ${t} not found`);return r}function AJ(e){var t,r;e instanceof Io?(t=e._id,e=e._name):(t=X2(),(r=kDe).time=G0(),e=e==null?null:e+"");for(var n=this._groups,i=n.length,o=0;o{Kp();jo();EJ();A_();kDe={time:null,delay:0,duration:250,ease:K2}});var MJ=Se(()=>{Zn();BK();CJ();$u.prototype.interrupt=LK;$u.prototype.transition=AJ});var TJ=Se(()=>{MJ();C_()});var K0,_J=Se(()=>{K0=e=>()=>e});function T_(e,{sourceEvent:t,target:r,transform:n,dispatch:i}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},transform:{value:n,enumerable:!0,configurable:!0},_:{value:i}})}var OJ=Se(()=>{});function ps(e,t,r){this.k=e,this.x=t,this.y=r}function J2(e){for(;!e.__zoom;)if(!(e=e.parentNode))return Ah;return e.__zoom}var Ah,__=Se(()=>{ps.prototype={constructor:ps,scale:function(e){return e===1?this:new ps(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new ps(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};Ah=new ps(1,0,0);J2.prototype=ps.prototype});function Q2(e){e.stopImmediatePropagation()}function Ch(e){e.preventDefault(),e.stopImmediatePropagation()}var FJ=Se(()=>{});function BDe(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function PDe(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute("viewBox")?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function IJ(){return this.__zoom||Ah}function RDe(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function qDe(){return navigator.maxTouchPoints||"ontouchstart"in this}function zDe(e,t,r){var n=e.invertX(t[0][0])-r[0][0],i=e.invertX(t[1][0])-r[1][0],o=e.invertY(t[0][1])-r[0][1],l=e.invertY(t[1][1])-r[1][1];return e.translate(i>n?(n+i)/2:Math.min(0,n)||Math.max(0,i),l>o?(o+l)/2:Math.min(0,o)||Math.max(0,l))}function kJ(){var e=BDe,t=PDe,r=zDe,n=RDe,i=qDe,o=[0,1/0],l=[[-1/0,-1/0],[1/0,1/0]],s=250,a=e2,u=k0("start","zoom","end"),f,p,h,g=500,x=150,v=0,S=10;function D(V){V.property("__zoom",IJ).on("wheel.zoom",F,{passive:!1}).on("mousedown.zoom",I).on("dblclick.zoom",B).filter(i).on("touchstart.zoom",L).on("touchmove.zoom",q).on("touchend.zoom touchcancel.zoom",R).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}D.transform=function(V,X,U,H){var ee=V.selection?V.selection():V;ee.property("__zoom",IJ),V!==ee?T(V,X,U,H):ee.interrupt().each(function(){N(this,arguments).event(H).start().zoom(null,typeof X=="function"?X.apply(this,arguments):X).end()})},D.scaleBy=function(V,X,U,H){D.scaleTo(V,function(){var ee=this.__zoom.k,Z=typeof X=="function"?X.apply(this,arguments):X;return ee*Z},U,H)},D.scaleTo=function(V,X,U,H){D.transform(V,function(){var ee=t.apply(this,arguments),Z=this.__zoom,ce=U==null?M(ee):typeof U=="function"?U.apply(this,arguments):U,be=Z.invert(ce),de=typeof X=="function"?X.apply(this,arguments):X;return r(E(C(Z,de),ce,be),ee,l)},U,H)},D.translateBy=function(V,X,U,H){D.transform(V,function(){return r(this.__zoom.translate(typeof X=="function"?X.apply(this,arguments):X,typeof U=="function"?U.apply(this,arguments):U),t.apply(this,arguments),l)},null,H)},D.translateTo=function(V,X,U,H,ee){D.transform(V,function(){var Z=t.apply(this,arguments),ce=this.__zoom,be=H==null?M(Z):typeof H=="function"?H.apply(this,arguments):H;return r(Ah.translate(be[0],be[1]).scale(ce.k).translate(typeof X=="function"?-X.apply(this,arguments):-X,typeof U=="function"?-U.apply(this,arguments):-U),Z,l)},H,ee)};function C(V,X){return X=Math.max(o[0],Math.min(o[1],X)),X===V.k?V:new ps(X,V.x,V.y)}function E(V,X,U){var H=X[0]-U[0]*V.k,ee=X[1]-U[1]*V.k;return H===V.x&&ee===V.y?V:new ps(V.k,H,ee)}function M(V){return[(+V[0][0]+ +V[1][0])/2,(+V[0][1]+ +V[1][1])/2]}function T(V,X,U,H){V.on("start.zoom",function(){N(this,arguments).event(H).start()}).on("interrupt.zoom end.zoom",function(){N(this,arguments).event(H).end()}).tween("zoom",function(){var ee=this,Z=arguments,ce=N(ee,Z).event(H),be=t.apply(ee,Z),de=U==null?M(be):typeof U=="function"?U.apply(ee,Z):U,ne=Math.max(be[1][0]-be[0][0],be[1][1]-be[0][1]),ve=ee.__zoom,Te=typeof X=="function"?X.apply(ee,Z):X,De=a(ve.invert(de).concat(ne/ve.k),Te.invert(de).concat(ne/Te.k));return function(se){if(se===1)se=Te;else{var le=De(se),oe=ne/le[2];se=new ps(oe,de[0]-le[0]*oe,de[1]-le[1]*oe)}ce.zoom(null,se)}})}function N(V,X,U){return!U&&V.__zooming||new O(V,X)}function O(V,X){this.that=V,this.args=X,this.active=0,this.sourceEvent=null,this.extent=t.apply(V,X),this.taps=0}O.prototype={event:function(V){return V&&(this.sourceEvent=V),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(V,X){return this.mouse&&V!=="mouse"&&(this.mouse[1]=X.invert(this.mouse[0])),this.touch0&&V!=="touch"&&(this.touch0[1]=X.invert(this.touch0[0])),this.touch1&&V!=="touch"&&(this.touch1[1]=X.invert(this.touch1[0])),this.that.__zoom=X,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(V){var X=_a(this.that).datum();u.call(V,this.that,new T_(V,{sourceEvent:this.sourceEvent,target:D,type:V,transform:this.that.__zoom,dispatch:u}),X)}};function F(V,...X){if(!e.apply(this,arguments))return;var U=N(this,X).event(V),H=this.__zoom,ee=Math.max(o[0],Math.min(o[1],H.k*Math.pow(2,n.apply(this,arguments)))),Z=cs(V);if(U.wheel)(U.mouse[0][0]!==Z[0]||U.mouse[0][1]!==Z[1])&&(U.mouse[1]=H.invert(U.mouse[0]=Z)),clearTimeout(U.wheel);else{if(H.k===ee)return;U.mouse=[Z,H.invert(Z)],Xp(this),U.start()}Ch(V),U.wheel=setTimeout(ce,x),U.zoom("mouse",r(E(C(H,ee),U.mouse[0],U.mouse[1]),U.extent,l));function ce(){U.wheel=null,U.end()}}function I(V,...X){if(h||!e.apply(this,arguments))return;var U=V.currentTarget,H=N(this,X,!0).event(V),ee=_a(V.view).on("mousemove.zoom",de,!0).on("mouseup.zoom",ne,!0),Z=cs(V,U),ce=V.clientX,be=V.clientY;D_(V.view),Q2(V),H.mouse=[Z,this.__zoom.invert(Z)],Xp(this),H.start();function de(ve){if(Ch(ve),!H.moved){var Te=ve.clientX-ce,De=ve.clientY-be;H.moved=Te*Te+De*De>v}H.event(ve).zoom("mouse",r(E(H.that.__zoom,H.mouse[0]=cs(ve,U),H.mouse[1]),H.extent,l))}function ne(ve){ee.on("mousemove.zoom mouseup.zoom",null),S_(ve.view,H.moved),Ch(ve),H.event(ve).end()}}function B(V,...X){if(e.apply(this,arguments)){var U=this.__zoom,H=cs(V.changedTouches?V.changedTouches[0]:V,this),ee=U.invert(H),Z=U.k*(V.shiftKey?.5:2),ce=r(E(C(U,Z),H,ee),t.apply(this,X),l);Ch(V),s>0?_a(this).transition().duration(s).call(T,ce,H,V):_a(this).call(D.transform,ce,H,V)}}function L(V,...X){if(e.apply(this,arguments)){var U=V.touches,H=U.length,ee=N(this,X,V.changedTouches.length===H).event(V),Z,ce,be,de;for(Q2(V),ce=0;ce{c_();AK();Rl();Zn();TJ();_J();OJ();__();FJ()});var BJ={};wu(BJ,{ZoomTransform:()=>ps,zoom:()=>kJ,zoomIdentity:()=>Ah,zoomTransform:()=>J2});var PJ=Se(()=>{LJ();__()});var ZJ=st((FSt,O_)=>{"use strict";var Mh=typeof Reflect=="object"?Reflect:null,RJ=Mh&&typeof Mh.apply=="function"?Mh.apply:function(t,r,n){return Function.prototype.apply.call(t,r,n)},j2;Mh&&typeof Mh.ownKeys=="function"?j2=Mh.ownKeys:Object.getOwnPropertySymbols?j2=function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:j2=function(t){return Object.getOwnPropertyNames(t)};function UDe(e){console&&console.warn&&console.warn(e)}var zJ=Number.isNaN||function(t){return t!==t};function jr(){jr.init.call(this)}O_.exports=jr;O_.exports.once=VDe;jr.EventEmitter=jr;jr.prototype._events=void 0;jr.prototype._eventsCount=0;jr.prototype._maxListeners=void 0;var qJ=10;function eS(e){if(typeof e!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}Object.defineProperty(jr,"defaultMaxListeners",{enumerable:!0,get:function(){return qJ},set:function(e){if(typeof e!="number"||e<0||zJ(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");qJ=e}});jr.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};jr.prototype.setMaxListeners=function(t){if(typeof t!="number"||t<0||zJ(t))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+t+".");return this._maxListeners=t,this};function UJ(e){return e._maxListeners===void 0?jr.defaultMaxListeners:e._maxListeners}jr.prototype.getMaxListeners=function(){return UJ(this)};jr.prototype.emit=function(t){for(var r=[],n=1;n0&&(l=r[0]),l instanceof Error)throw l;var s=new Error("Unhandled error."+(l?" ("+l.message+")":""));throw s.context=l,s}var a=o[t];if(a===void 0)return!1;if(typeof a=="function")RJ(a,this,r);else for(var u=a.length,f=GJ(a,u),n=0;n0&&l.length>i&&!l.warned){l.warned=!0;var s=new Error("Possible EventEmitter memory leak detected. "+l.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");s.name="MaxListenersExceededWarning",s.emitter=e,s.type=t,s.count=l.length,UDe(s)}return e}jr.prototype.addListener=function(t,r){return HJ(this,t,r,!1)};jr.prototype.on=jr.prototype.addListener;jr.prototype.prependListener=function(t,r){return HJ(this,t,r,!0)};function HDe(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function $J(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},i=HDe.bind(n);return i.listener=r,n.wrapFn=i,i}jr.prototype.once=function(t,r){return eS(r),this.on(t,$J(this,t,r)),this};jr.prototype.prependOnceListener=function(t,r){return eS(r),this.prependListener(t,$J(this,t,r)),this};jr.prototype.removeListener=function(t,r){var n,i,o,l,s;if(eS(r),i=this._events,i===void 0)return this;if(n=i[t],n===void 0)return this;if(n===r||n.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete i[t],i.removeListener&&this.emit("removeListener",t,n.listener||r));else if(typeof n!="function"){for(o=-1,l=n.length-1;l>=0;l--)if(n[l]===r||n[l].listener===r){s=n[l].listener,o=l;break}if(o<0)return this;o===0?n.shift():$De(n,o),n.length===1&&(i[t]=n[0]),i.removeListener!==void 0&&this.emit("removeListener",t,s||r)}return this};jr.prototype.off=jr.prototype.removeListener;jr.prototype.removeAllListeners=function(t){var r,n,i;if(n=this._events,n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[t]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[t]),this;if(arguments.length===0){var o=Object.keys(n),l;for(i=0;i=0;i--)this.removeListener(t,r[i]);return this};function WJ(e,t,r){var n=e._events;if(n===void 0)return[];var i=n[t];return i===void 0?[]:typeof i=="function"?r?[i.listener||i]:[i]:r?WDe(i):GJ(i,i.length)}jr.prototype.listeners=function(t){return WJ(this,t,!0)};jr.prototype.rawListeners=function(t){return WJ(this,t,!1)};jr.listenerCount=function(e,t){return typeof e.listenerCount=="function"?e.listenerCount(t):VJ.call(e,t)};jr.prototype.listenerCount=VJ;function VJ(e){var t=this._events;if(t!==void 0){var r=t[e];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}jr.prototype.eventNames=function(){return this._eventsCount>0?j2(this._events):[]};function GJ(e,t){for(var r=new Array(t),n=0;n{"use strict";Object.defineProperty(F_,"__esModule",{value:!0});var YDe=(a0(),Hn(o0)),ZDe=(Zn(),Hn(js));function XDe(e){let t=e.owner.meta.xScale,r=e.owner.meta.yScale,n=(0,YDe.line)().x(function(i){return i[0]}).y(function(i){return i[1]});return function(i){i.each(function(){let l=(0,ZDe.select)(this).selectAll("g.annotations").data(function(x){return x.annotations||[]}),s=l.enter().append("g").attr("class","annotations"),a=r.range(),u=t.range(),f=l.merge(s).selectAll("path").data(function(x){return"x"in x?[[[0,a[0]],[0,a[1]]]]:[[[u[0],0],[u[1],0]]]}),p=f.enter().append("path");f.merge(p).attr("stroke","#eee").attr("d",n),f.exit().remove();let h=l.merge(s).selectAll("text").data(function(x){return[{text:x.text||"",hasX:"x"in x}]}),g=h.enter().append("text");h.merge(g).text(function(x){return x.text}).attr("y",function(x){return x.hasX?3:0}).attr("x",function(x){return x.hasX?0:3}).attr("dy",function(x){return x.hasX?5:-5}).attr("text-anchor",function(x){return x.hasX?"end":""}).attr("transform",function(x){return x.hasX?"rotate(-90)":""}),h.exit().remove(),l.merge(s).attr("transform",function(x){return"x"in x?"translate("+t(x.x)+", 0)":"translate(0, "+r(x.y)+")"}),l.exit().remove()})}}F_.default=XDe});var Th=st(Q0=>{"use strict";Object.defineProperty(Q0,"__esModule",{value:!0});Q0.registerGraphType=void 0;var KDe=(Qs(),Hn(HD)),J0={COLORS:["steelblue","red","#05b378","orange","#4040e8","yellow","brown","magenta","cyan"].map(function(e){return(0,KDe.hsl)(e)}),DEFAULT_WIDTH:550,DEFAULT_HEIGHT:350,DEFAULT_ITERATIONS:null,TIP_X_EPS:1,MAX_ITERATIONS:0,graphTypes:{}};J0.MAX_ITERATIONS=J0.DEFAULT_WIDTH*10;function JDe(e,t){if(Object.hasOwn(J0.graphTypes,e))throw new Error(`registerGraphType: graphType ${e} is already registered.`);J0.graphTypes[e]=t}Q0.registerGraphType=JDe;Q0.default=J0});var Wu=st(j0=>{"use strict";var QDe=j0&&j0.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(j0,"__esModule",{value:!0});var KJ=QDe(Th()),jDe={linspace:function(e,t,r){let n=(t-e)/(r-1);return Array.from({length:r},(i,o)=>e+n*o)},logspace:function(e,t,r){return this.linspace(e,t,r).map(n=>Math.pow(10,n))},isValidNumber:function(e){return typeof e=="number"&&!isNaN(e)},space:function(e,t,r){let n=t[0],i=t[1];return e.type==="log"?this.logspace(Math.log10(n),Math.log10(i),r):this.linspace(n,i,r)},getterSetter:function(e,t){let r=this;this[t]=function(n){return arguments.length?(e[t]=n,r):e[t]}},sgn:function(e){return e<0?-1:e>0?1:0},clamp:function(e,t,r){return er?r:e},color:function(e,t){let r=t%KJ.default.COLORS.length;return e.color||KJ.default.COLORS[r].hex()},infinity:function(){return 9007199254740991}};j0.default=jDe});var I_=st((BSt,JJ)=>{JJ.exports={EOF:0,DELIMITER:1,NUMBER:2,STRING:3,SYMBOL:4}});var L_=st((PSt,jJ)=>{var Jp=I_(),e2e={n:` -`,f:"\f",r:"\r",t:" ",v:"\v","'":"'",'"':'"'},t2e={",":!0,"(":!0,")":!0,"[":!0,"]":!0,";":!0,"~":!0,"!":!0,"+":!0,"-":!0,"*":!0,"/":!0,"%":!0,"^":!0,"**":!0,"|":!0,"&":!0,"^|":!0,"=":!0,":":!0,"?":!0,"||":!0,"&&":!0,xor:!0,"==":!0,"!=":!0,"===":!0,"!==":!0,"<":!0,">":!0,">=":!0,"<=":!0,">>>":!0,"<<":!0,">>":!0};function Yl(e){return e>="0"&&e<="9"}function QJ(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"||e==="$"||e==="_"}function r2e(e){return e===" "||e==="\r"||e===" "||e===` -`||e==="\v"||e==="\xA0"}function k_(e){return t2e[e]}function n2e(e){return e==="'"||e==='"'}function uc(){}uc.prototype.throwError=function(e,t){t=typeof t>"u"?this.index:t;var r=new Error(e+" at index "+t);throw r.index=t,r.description=e,r};uc.prototype.lex=function(e){for(this.text=e,this.index=0,this.tokens=[];this.index=this.text.length))return this.text.charAt(this.index+e)};uc.prototype.consume=function(){var e=this.peek();return this.index+=1,e};uc.prototype.readNumber=function(){var e="";if(this.peek()===".")e+=this.consume(),Yl(this.peek())||this.throwError("number expected");else{for(;Yl(this.peek());)e+=this.consume();this.peek()==="."&&(e+=this.consume())}for(;Yl(this.peek());)e+=this.consume();if(this.peek()==="e"||this.peek()==="E")for(e+=this.consume(),Yl(this.peek())||this.peek()==="+"||this.peek()==="-"||this.throwError(),(this.peek()==="+"||this.peek()==="-")&&(e+=this.consume()),Yl(this.peek())||this.throwError("number expected");Yl(this.peek());)e+=this.consume();return e};uc.prototype.readIdentifier=function(){for(var e="";QJ(this.peek())||Yl(this.peek());)e+=this.consume();return e};uc.prototype.readString=function(){for(var e=this.consume(),t="",r;;){var n=this.consume();if(n||this.throwError("string is not closed"),r){if(n==="u"){var i=this.text.substring(this.index+1,this.index+5);i.match(/[\da-f]{4}/i)||this.throwError("invalid unicode escape"),this.index+=4,t+=String.fromCharCode(parseInt(i,16))}else{var o=e2e[n];o?t+=o:t+=n}r=!1}else{if(n===e)break;n==="\\"?r=!0:t+=n}}return t};jJ.exports=uc});var eu=st((RSt,tQ)=>{function eQ(){}eQ.prototype.type="Node";tQ.exports=eQ});var P_=st((qSt,rQ)=>{var i2e=eu(),o2e={number:!0,string:!0,boolean:!0,undefined:!0,null:!0};function B_(e,t){if(!o2e[t])throw Error("unsupported type '"+t+"'");this.value=e,this.valueType=t}B_.prototype=Object.create(i2e.prototype);B_.prototype.type="ConstantNode";rQ.exports=B_});var q_=st((zSt,nQ)=>{var a2e=eu();function R_(e,t){this.op=e,this.args=t||[]}R_.prototype=Object.create(a2e.prototype);R_.prototype.type="OperatorNode";nQ.exports=R_});var U_=st((USt,iQ)=>{var s2e=eu();function z_(e,t){this.op=e,this.argument=t}z_.prototype=Object.create(s2e.prototype);z_.prototype.type="UnaryNode";iQ.exports=z_});var $_=st((HSt,oQ)=>{var u2e=eu();function H_(e){this.name=e}H_.prototype=Object.create(u2e.prototype);H_.prototype.type="SymbolNode";oQ.exports=H_});var V_=st(($St,aQ)=>{var l2e=eu();function W_(e,t){this.name=e,this.args=t}W_.prototype=Object.create(l2e.prototype);W_.prototype.type="FunctionNode";aQ.exports=W_});var Y_=st((WSt,sQ)=>{var f2e=eu();function G_(e){this.nodes=e}G_.prototype=Object.create(f2e.prototype);G_.prototype.type="ArrayNode";sQ.exports=G_});var X_=st((VSt,uQ)=>{var c2e=eu();function Z_(e,t,r){this.condition=e,this.trueExpr=t,this.falseExpr=r}Z_.prototype=Object.create(c2e.prototype);Z_.prototype.type="ConditionalNode";uQ.exports=Z_});var J_=st((GSt,lQ)=>{var p2e=eu();function K_(e,t){this.name=e,this.expr=t}K_.prototype=Object.create(p2e.prototype);K_.prototype.type="AssignmentNode";lQ.exports=K_});var j_=st((YSt,fQ)=>{var m2e=eu();function Q_(e){this.blocks=e}Q_.prototype=Object.create(m2e.prototype);Q_.prototype.type="BlockNode";fQ.exports=Q_});var mQ=st((ZSt,pQ)=>{var Qp=I_(),d2e=L_(),eO=P_(),Oa=q_(),h2e=U_(),cQ=$_(),g2e=V_(),v2e=Y_(),x2e=X_(),y2e=J_(),w2e=j_();function Hr(){this.lexer=new d2e,this.tokens=null}Hr.prototype.current=function(){return this.tokens[0]};Hr.prototype.next=function(){return this.tokens[1]};Hr.prototype.peek=function(){if(this.tokens.length){for(var e=this.tokens[0],t=0;t=","<=",">","<")){var t=this.consume(),r=this.shift();return new Oa(t.value,[e,r])}return e};Hr.prototype.shift=function(){var e=this.additive();if(this.peek(">>","<<",">>>")){var t=this.consume(),r=this.shift();return new Oa(t.value,[e,r])}return e};Hr.prototype.additive=function(){for(var e=this.multiplicative();this.peek("+","-");){var t=this.consume();e=new Oa(t.value,[e,this.multiplicative()])}return e};Hr.prototype.multiplicative=function(){for(var e,t,r=this.unary();this.peek("*","/","%");)e=this.consume(),r=new Oa(e.value,[r,this.unary()]);return this.current().type===Qp.SYMBOL||this.peek("(")||!(r.type instanceof eO)&&this.current().type===Qp.NUMBER?(t=this.multiplicative(),new Oa("*",[r,t])):r};Hr.prototype.unary=function(){if(this.peek("-","+","~")){var e=this.consume(),t=this.unary();return new h2e(e.value,t)}return this.pow()};Hr.prototype.pow=function(){var e=this.factorial();if(this.peek("^","**")){var t=this.consume(),r=this.unary();return new Oa(t.value,[e,r])}return e};Hr.prototype.factorial=function(){var e=this.symbol();if(this.peek("!")){var t=this.consume();return new Oa(t.value,[e])}return e};Hr.prototype.symbol=function(){var e=this.current();if(e.type===Qp.SYMBOL){var t=this.consume(),r=this.functionCall(t);return r}return this.string()};Hr.prototype.functionCall=function(e){var t=e.value;if(this.peek("(")){this.consume();for(var r=[];!this.peek(")")&&!this.isEOF();)r.push(this.assignment()),this.peek(",")&&this.consume();return this.expect(")"),new g2e(t,r)}return new cQ(t)};Hr.prototype.string=function(){return this.current().type===Qp.STRING?new eO(this.consume().value,"string"):this.array()};Hr.prototype.array=function(){if(this.peek("[")){this.consume();for(var e=[];!this.peek("]")&&!this.isEOF();)e.push(this.assignment()),this.peek(",")&&this.consume();return this.expect("]"),new v2e(e)}return this.number()};Hr.prototype.number=function(){var e=this.current();return e.type===Qp.NUMBER?new eO(this.consume().value,"number"):this.parentheses()};Hr.prototype.parentheses=function(){var e=this.current();if(e.value==="("){this.consume();var t=this.assignment();return this.expect(")"),t}return this.end()};Hr.prototype.end=function(){var e=this.current();if(e.type!==Qp.EOF)throw Error("unexpected end of expression")};pQ.exports=Hr});var hQ=st((XSt,dQ)=>{dQ.exports={ArrayNode:Y_(),AssignmentNode:J_(),BlockNode:j_(),ConditionalNode:X_(),ConstantNode:P_(),FunctionNode:V_(),Node:eu(),OperatorNode:q_(),SymbolNode:$_(),UnaryNode:U_()}});var ex=st((KSt,tS)=>{"use strict";tS.exports.Lexer=L_();tS.exports.Parser=mQ();tS.exports.nodeTypes=hQ()});var tx=st((JSt,SQ)=>{"use strict";var rS=Object.prototype.hasOwnProperty,DQ=Object.prototype.toString,gQ=Object.defineProperty,vQ=Object.getOwnPropertyDescriptor,xQ=function(t){return typeof Array.isArray=="function"?Array.isArray(t):DQ.call(t)==="[object Array]"},yQ=function(t){if(!t||DQ.call(t)!=="[object Object]")return!1;var r=rS.call(t,"constructor"),n=t.constructor&&t.constructor.prototype&&rS.call(t.constructor.prototype,"isPrototypeOf");if(t.constructor&&!r&&!n)return!1;var i;for(i in t);return typeof i>"u"||rS.call(t,i)},wQ=function(t,r){gQ&&r.name==="__proto__"?gQ(t,r.name,{enumerable:!0,configurable:!0,value:r.newValue,writable:!0}):t[r.name]=r.newValue},bQ=function(t,r){if(r==="__proto__")if(rS.call(t,r)){if(vQ)return vQ(t,r).value}else return;return t[r]};SQ.exports=function e(){var t,r,n,i,o,l,s=arguments[0],a=1,u=arguments.length,f=!1;for(typeof s=="boolean"&&(f=s,s=arguments[1]||{},a=2),(s==null||typeof s!="object"&&typeof s!="function")&&(s={});a{"use strict";NQ.exports=function(e){var t=this,r=[];this.rawify(this.options.rawArrayExpressionElements,function(){r=e.nodes.map(function(i){return t.next(i)})});var n="["+r.join(",")+"]";return this.options.raw?n:this.options.factory+"("+n+")"}});var CQ=st((jSt,AQ)=>{"use strict";AQ.exports=function(e){return'scope["'+e.name+'"] = '+this.next(e.expr)}});var TQ=st((eNt,MQ)=>{"use strict";MQ.exports=function(e){var t="!!("+this.next(e.condition)+")",r=this.next(e.trueExpr),n=this.next(e.falseExpr);return"("+t+" ? ("+r+") : ("+n+") )"}});var OQ=st((tNt,_Q)=>{"use strict";_Q.exports=function(e){return this.options.raw?e.value:this.options.factory+"("+e.value+")"}});var IQ=st((rNt,tO)=>{"use strict";var b2e=ex().nodeTypes.SymbolNode,FQ=function(e){return"$$mathCodegen.functionProxy("+this.next(new b2e(e.name))+', "'+e.name+'")'};tO.exports=function(e){var t=this,r=FQ.call(this,e),n=[];return this.rawify(this.options.rawCallExpressionElements,function(){n=e.args.map(function(i){return t.next(i)})}),r+"("+n.join(", ")+")"};tO.exports.functionProxy=FQ});var LQ=st((nNt,kQ)=>{"use strict";kQ.exports={"+":"add","-":"sub","*":"mul","/":"div","^":"pow","%":"mod","!":"factorial","|":"bitwiseOR","^|":"bitwiseXOR","&":"bitwiseAND","||":"logicalOR",xor:"logicalXOR","&&":"logicalAND","<":"lessThan",">":"greaterThan","<=":"lessEqualThan",">=":"greaterEqualThan","===":"strictlyEqual","==":"equal","!==":"strictlyNotEqual","!=":"notEqual",">>":"shiftRight","<<":"shiftLeft",">>>":"unsignedRightShift"}});var PQ=st((iNt,BQ)=>{"use strict";var D2e=LQ();BQ.exports=function(e){if(this.options.raw)return["("+this.next(e.args[0]),e.op,this.next(e.args[1])+")"].join(" ");var t=D2e[e.op];if(!t)throw TypeError("unidentified operator");return this.FunctionNode({name:t,args:e.args})}});var qQ=st((oNt,RQ)=>{"use strict";RQ.exports=function(e){var t=e.name;return'$$mathCodegen.getProperty("'+t+'", scope, ns)'}});var UQ=st((aNt,zQ)=>{"use strict";zQ.exports={"+":"positive","-":"negative","~":"oneComplement"}});var WQ=st((sNt,$Q)=>{"use strict";var HQ=UQ();$Q.exports=function(e){if(this.options.raw)return e.op+this.next(e.argument);if(!(e.op in HQ))throw new SyntaxError(e.op+" not implemented");var t=HQ[e.op];return this.FunctionNode({name:t,args:[e.argument]})}});var YQ=st((uNt,GQ)=>{"use strict";var VQ=tx(),S2e={ArrayNode:EQ(),AssignmentNode:CQ(),ConditionalNode:TQ(),ConstantNode:OQ(),FunctionNode:IQ(),OperatorNode:PQ(),SymbolNode:qQ(),UnaryNode:WQ()},nS=function(e,t){this.owner=e,this.options=VQ({factory:"ns.factory",raw:!1,rawArrayExpressionElements:!0,rawCallExpressionElements:!1},t)};VQ(nS.prototype,S2e);nS.prototype.next=function(e){if(!(e.type in this))throw new TypeError("the node type "+e.type+" is not implemented");return this[e.type](e)};nS.prototype.rawify=function(e,t){var r=this.options.raw;e&&(this.options.raw=!0),t(),e&&(this.options.raw=r)};GQ.exports=nS});var XQ=st((lNt,ZQ)=>{"use strict";var N2e=ex().Parser,E2e=YQ(),A2e=tx();function iS(e,t){this.statements=[],this.defs=t||{},this.interpreter=new E2e(this,e)}iS.prototype.setDefs=function(e){return this.defs=A2e(this.defs,e),this};iS.prototype.compile=function(e){if(!e||!(typeof e=="object"||typeof e=="function"))throw TypeError("namespace must be an object");if(typeof e.factory!="function")throw TypeError("namespace.factory must be a function");this.defs.ns=e,this.defs.$$mathCodegen={getProperty:function(o,l,s){if(o in l)return l[o];if(o in s)return s[o];throw SyntaxError('symbol "'+o+'" is undefined')},functionProxy:function(o,l){if(typeof o!="function")throw SyntaxError('symbol "'+l+'" must be a function');return o}},this.defs.$$processScope=this.defs.$$processScope||function(){};var t=Object.keys(this.defs).map(function(o){return"var "+o+' = defs["'+o+'"]'});if(!this.statements.length)throw Error("there are no statements saved in this generator, make sure you parse an expression before compiling it");this.statements[this.statements.length-1]="return "+this.statements[this.statements.length-1];var r=this.statements.join(";"),n=t.join(` +`),R=N+L.length,V=L[L.length-1].length;return{from:t(R,V),to:t(R+q.length-1,q.length==1?V+q[0].length:q[q.length-1].length),match:B}}}}var f,p;String.prototype.normalize?(f=function(S){return S.normalize("NFD").toLowerCase()},p=function(S){return S.normalize("NFD")}):(f=function(S){return S.toLowerCase()},p=function(S){return S});function h(S,D,C,E){if(S.length==D.length)return C;for(var M=0,T=C+Math.max(0,S.length-D.length);;){if(M==T)return M;var N=M+T>>1,O=E(S.slice(0,N)).length;if(O==C)return N;O>C?T=N:M=N+1}}function g(S,D,C,E){if(!D.length)return null;var M=E?f:p,T=M(D).split(/\r|\n\r?/);e:for(var N=C.line,O=C.ch,F=S.lastLine()+1-T.length;N<=F;N++,O=0){var I=S.getLine(N).slice(O),B=M(I);if(T.length==1){var L=B.indexOf(T[0]);if(L==-1)continue e;var C=h(I,B,L,M)+O;return{from:t(N,h(I,B,L,M)+O),to:t(N,h(I,B,L+T[0].length,M)+O)}}else{var q=B.length-T[0].length;if(B.slice(q)!=T[0])continue e;for(var R=1;R=F;N--,O=-1){var I=S.getLine(N);O>-1&&(I=I.slice(0,O));var B=M(I);if(T.length==1){var L=B.lastIndexOf(T[0]);if(L==-1)continue e;return{from:t(N,h(I,B,L,M)),to:t(N,h(I,B,L+T[0].length,M))}}else{var q=T[T.length-1];if(B.slice(0,q.length)!=q)continue e;for(var R=1,C=N-T.length+1;R(this.doc.getLine(D.line)||"").length&&(D.ch=0,D.line++)),e.cmpPos(D,this.doc.clipPos(D))!=0))return this.atOccurrence=!1;var C=this.matches(S,D);if(this.afterEmptyMatch=C&&e.cmpPos(C.from,C.to)==0,C)return this.pos=C,this.atOccurrence=!0,this.pos.match||!0;var E=t(S?this.doc.firstLine():this.doc.lastLine()+1,0);return this.pos={from:E,to:E},this.atOccurrence=!1},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(S,D){if(this.atOccurrence){var C=e.splitLines(S);this.doc.replaceRange(C,this.pos.from,this.pos.to,D),this.pos.to=t(this.pos.from.line+C.length-1,C[C.length-1].length+(C.length==1?this.pos.from.ch:0))}}},e.defineExtension("getSearchCursor",function(S,D,C){return new v(this.doc,S,D,C)}),e.defineDocExtension("getSearchCursor",function(S,D,C){return new v(this,S,D,C)}),e.defineExtension("selectMatches",function(S,D){for(var C=[],E=this.getSearchCursor(S,this.getCursor("from"),D);E.findNext()&&!(e.cmpPos(E.to(),this.getCursor("to"))>0);)C.push({anchor:E.from(),head:E.to()});C.length&&this.setSelections(C,0)})})});var vW=st((hW,gW)=>{(function(e){typeof hW=="object"&&typeof gW=="object"?e($s(),bM(),Hb()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","./searchcursor","../dialog/dialog"],e):e(CodeMirror)})(function(e){"use strict";e.defineOption("search",{bottom:!1});function t(N,O){return typeof N=="string"?N=new RegExp(N.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),O?"gi":"g"):N.global||(N=new RegExp(N.source,N.ignoreCase?"gi":"g")),{token:function(F){N.lastIndex=F.pos;var I=N.exec(F.string);if(I&&I.index==F.pos)return F.pos+=I[0].length||1,"searching";I?F.pos=I.index:F.skipToEnd()}}}function r(){this.posFrom=this.posTo=this.lastQuery=this.query=null,this.overlay=null}function n(N){return N.state.search||(N.state.search=new r)}function i(N){return typeof N=="string"&&N==N.toLowerCase()}function o(N,O,F){return N.getSearchCursor(O,F,{caseFold:i(O),multiline:!0})}function l(N,O,F,I,B){N.openDialog(O,I,{value:F,selectValueOnOpen:!0,closeOnEnter:!1,onClose:function(){x(N)},onKeyDown:B,bottom:N.options.search.bottom})}function s(N,O,F,I,B){N.openDialog?N.openDialog(O,B,{value:I,selectValueOnOpen:!0,bottom:N.options.search.bottom}):B(prompt(F,I))}function a(N,O,F,I){N.openConfirm?N.openConfirm(O,I):confirm(F)&&I[0]()}function u(N){return N.replace(/\\([nrt\\])/g,function(O,F){return F=="n"?` +`:F=="r"?"\r":F=="t"?" ":F=="\\"?"\\":O})}function f(N){var O=N.match(/^\/(.*)\/([a-z]*)$/);if(O)try{N=new RegExp(O[1],O[2].indexOf("i")==-1?"":"i")}catch{}else N=u(N);return(typeof N=="string"?N=="":N.test(""))&&(N=/x^/),N}function p(N,O,F){O.queryText=F,O.query=f(F),N.removeOverlay(O.overlay,i(O.query)),O.overlay=t(O.query,i(O.query)),N.addOverlay(O.overlay),N.showMatchesOnScrollbar&&(O.annotate&&(O.annotate.clear(),O.annotate=null),O.annotate=N.showMatchesOnScrollbar(O.query,i(O.query)))}function h(N,O,F,I){var B=n(N);if(B.query)return g(N,O);var L=N.getSelection()||B.lastQuery;if(L instanceof RegExp&&L.source=="x^"&&(L=null),F&&N.openDialog){var q=null,R=function(V,X){e.e_stop(X),V&&(V!=B.queryText&&(p(N,B,V),B.posFrom=B.posTo=N.getCursor()),q&&(q.style.opacity=1),g(N,X.shiftKey,function(U,H){var ee;H.line<3&&document.querySelector&&(ee=N.display.wrapper.querySelector(".CodeMirror-dialog"))&&ee.getBoundingClientRect().bottom-4>N.cursorCoords(H,"window").top&&((q=ee).style.opacity=.4)}))};l(N,S(N),L,R,function(V,X){var U=e.keyName(V),H=N.getOption("extraKeys"),ee=H&&H[U]||e.keyMap[N.getOption("keyMap")][U];ee=="findNext"||ee=="findPrev"||ee=="findPersistentNext"||ee=="findPersistentPrev"?(e.e_stop(V),p(N,n(N),X),N.execCommand(ee)):(ee=="find"||ee=="findPersistent")&&(e.e_stop(V),R(X,V))}),I&&L&&(p(N,B,L),g(N,O))}else s(N,S(N),"Search for:",L,function(V){V&&!B.query&&N.operation(function(){p(N,B,V),B.posFrom=B.posTo=N.getCursor(),g(N,O)})})}function g(N,O,F){N.operation(function(){var I=n(N),B=o(N,I.query,O?I.posFrom:I.posTo);!B.find(O)&&(B=o(N,I.query,O?e.Pos(N.lastLine()):e.Pos(N.firstLine(),0)),!B.find(O))||(N.setSelection(B.from(),B.to()),N.scrollIntoView({from:B.from(),to:B.to()},20),I.posFrom=B.from(),I.posTo=B.to(),F&&F(B.from(),B.to()))})}function x(N){N.operation(function(){var O=n(N);O.lastQuery=O.query,O.query&&(O.query=O.queryText=null,N.removeOverlay(O.overlay),O.annotate&&(O.annotate.clear(),O.annotate=null))})}function v(N,O){var F=N?document.createElement(N):document.createDocumentFragment();for(var I in O)F[I]=O[I];for(var B=2;B{typeof window<"u"&&function(e,t){try{e.querySelector(":scope body")}catch{["querySelector","querySelectorAll"].forEach(function(n){let i=t[n];t[n]=function(o){if(/(^|,)\s*:scope/.test(o)){let l=this.id;this.id="ID_"+Date.now(),o=o.replace(/((^|,)\s*):scope/g,"$1#"+this.id);let s=e[n](o);return this.id=l,s}else return i.call(this,o)}})}}(window.document,Element.prototype)});function tr(e){return function(){return e}}var ac=Se(()=>{});function EW(e){return e>1?0:e<-1?Vs:Math.acos(e)}function CM(e){return e>=1?jv:e<=-1?-jv:Math.asin(e)}var AM,ji,Ws,NW,zu,wo,wr,Bi,Vs,jv,ts,eo=Se(()=>{AM=Math.abs,ji=Math.atan2,Ws=Math.cos,NW=Math.max,zu=Math.min,wo=Math.sin,wr=Math.sqrt,Bi=1e-12,Vs=Math.PI,jv=Vs/2,ts=2*Vs});function AW(e){this._+=e[0];for(let t=1,r=e.length;t=0))throw new Error(`invalid digits: ${e}`);if(t>15)return AW;let r=10**t;return function(n){this._+=n[0];for(let i=1,o=n.length;i{MM=Math.PI,TM=2*MM,zp=1e-6,vye=TM-zp;Up=class{constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=t==null?AW:xye(t)}moveTo(t,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,r){this._append`L${this._x1=+t},${this._y1=+r}`}quadraticCurveTo(t,r,n,i){this._append`Q${+t},${+r},${this._x1=+n},${this._y1=+i}`}bezierCurveTo(t,r,n,i,o,l){this._append`C${+t},${+r},${+n},${+i},${this._x1=+o},${this._y1=+l}`}arcTo(t,r,n,i,o){if(t=+t,r=+r,n=+n,i=+i,o=+o,o<0)throw new Error(`negative radius: ${o}`);let l=this._x1,s=this._y1,a=n-t,u=i-r,f=l-t,p=s-r,h=f*f+p*p;if(this._x1===null)this._append`M${this._x1=t},${this._y1=r}`;else if(h>zp)if(!(Math.abs(p*a-u*f)>zp)||!o)this._append`L${this._x1=t},${this._y1=r}`;else{let g=n-l,x=i-s,v=a*a+u*u,S=g*g+x*x,D=Math.sqrt(v),C=Math.sqrt(h),E=o*Math.tan((MM-Math.acos((v+h-S)/(2*D*C)))/2),M=E/C,T=E/D;Math.abs(M-1)>zp&&this._append`L${t+M*f},${r+M*p}`,this._append`A${o},${o},0,0,${+(p*g>f*x)},${this._x1=t+T*a},${this._y1=r+T*u}`}}arc(t,r,n,i,o,l){if(t=+t,r=+r,n=+n,l=!!l,n<0)throw new Error(`negative radius: ${n}`);let s=n*Math.cos(i),a=n*Math.sin(i),u=t+s,f=r+a,p=1^l,h=l?i-o:o-i;this._x1===null?this._append`M${u},${f}`:(Math.abs(this._x1-u)>zp||Math.abs(this._y1-f)>zp)&&this._append`L${u},${f}`,n&&(h<0&&(h=h%TM+TM),h>vye?this._append`A${n},${n},0,1,${p},${t-s},${r-a}A${n},${n},0,1,${p},${this._x1=u},${this._y1=f}`:h>zp&&this._append`A${n},${n},0,${+(h>=MM)},${p},${this._x1=t+n*Math.cos(o)},${this._y1=r+n*Math.sin(o)}`)}rect(t,r,n,i){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}h${n=+n}v${+i}h${-n}Z`}toString(){return this._}};CW.prototype=Up.prototype});var TW=Se(()=>{MW()});function Uu(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(r==null)t=null;else{let n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);t=n}return e},()=>new Up(t)}var Xd=Se(()=>{TW()});function yye(e){return e.innerRadius}function wye(e){return e.outerRadius}function bye(e){return e.startAngle}function Dye(e){return e.endAngle}function Sye(e){return e&&e.padAngle}function Nye(e,t,r,n,i,o,l,s){var a=r-e,u=n-t,f=l-i,p=s-o,h=p*a-f*u;if(!(h*hV*V+X*X&&(F=B,I=L),{cx:F,cy:I,x01:-f,y01:-p,x11:F*(i/T-1),y11:I*(i/T-1)}}function _W(){var e=yye,t=wye,r=tr(0),n=null,i=bye,o=Dye,l=Sye,s=null,a=Uu(u);function u(){var f,p,h=+e.apply(this,arguments),g=+t.apply(this,arguments),x=i.apply(this,arguments)-jv,v=o.apply(this,arguments)-jv,S=AM(v-x),D=v>x;if(s||(s=f=a()),gBi))s.moveTo(0,0);else if(S>ts-Bi)s.moveTo(g*Ws(x),g*wo(x)),s.arc(0,0,g,x,v,!D),h>Bi&&(s.moveTo(h*Ws(v),h*wo(v)),s.arc(0,0,h,v,x,D));else{var C=x,E=v,M=x,T=v,N=S,O=S,F=l.apply(this,arguments)/2,I=F>Bi&&(n?+n.apply(this,arguments):wr(h*h+g*g)),B=zu(AM(g-h)/2,+r.apply(this,arguments)),L=B,q=B,R,V;if(I>Bi){var X=CM(I/h*wo(F)),U=CM(I/g*wo(F));(N-=X*2)>Bi?(X*=D?1:-1,M+=X,T-=X):(N=0,M=T=(x+v)/2),(O-=U*2)>Bi?(U*=D?1:-1,C+=U,E-=U):(O=0,C=E=(x+v)/2)}var H=g*Ws(C),ee=g*wo(C),Z=h*Ws(T),pe=h*wo(T);if(B>Bi){var we=g*Ws(E),he=g*wo(E),oe=h*Ws(M),ve=h*wo(M),Oe;if(SBi?q>Bi?(R=Gb(oe,ve,H,ee,g,q,D),V=Gb(we,he,Z,pe,g,q,D),s.moveTo(R.cx+R.x01,R.cy+R.y01),qBi)||!(N>Bi)?s.lineTo(Z,pe):L>Bi?(R=Gb(Z,pe,we,he,h,-L,D),V=Gb(H,ee,oe,ve,h,-L,D),s.lineTo(R.cx+R.x01,R.cy+R.y01),L{ac();eo();Xd()});function sc(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}var FW,Kd=Se(()=>{FW=Array.prototype.slice});function IW(e){this._context=e}function uc(e){return new IW(e)}var e0=Se(()=>{IW.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}}});function Jd(e){return e[0]}function Qd(e){return e[1]}var Yb=Se(()=>{});function jd(e,t){var r=tr(!0),n=null,i=uc,o=null,l=Uu(s);e=typeof e=="function"?e:e===void 0?Jd:tr(e),t=typeof t=="function"?t:t===void 0?Qd:tr(t);function s(a){var u,f=(a=sc(a)).length,p,h=!1,g;for(n==null&&(o=i(g=l())),u=0;u<=f;++u)!(u{Kd();ac();e0();Xd();Yb()});function Xb(e,t,r){var n=null,i=tr(!0),o=null,l=uc,s=null,a=Uu(u);e=typeof e=="function"?e:e===void 0?Jd:tr(+e),t=typeof t=="function"?t:t===void 0?tr(0):tr(+t),r=typeof r=="function"?r:r===void 0?Qd:tr(+r);function u(p){var h,g,x,v=(p=sc(p)).length,S,D=!1,C,E=new Array(v),M=new Array(v);for(o==null&&(s=l(C=a())),h=0;h<=v;++h){if(!(h=g;--x)s.point(E[x],M[x]);s.lineEnd(),s.areaEnd()}D&&(E[h]=+e(S,h,p),M[h]=+t(S,h,p),s.point(n?+n(S,h,p):E[h],r?+r(S,h,p):M[h]))}if(C)return s=null,C+""||null}function f(){return jd().defined(i).curve(l).context(o)}return u.x=function(p){return arguments.length?(e=typeof p=="function"?p:tr(+p),n=null,u):e},u.x0=function(p){return arguments.length?(e=typeof p=="function"?p:tr(+p),u):e},u.x1=function(p){return arguments.length?(n=p==null?null:typeof p=="function"?p:tr(+p),u):n},u.y=function(p){return arguments.length?(t=typeof p=="function"?p:tr(+p),r=null,u):t},u.y0=function(p){return arguments.length?(t=typeof p=="function"?p:tr(+p),u):t},u.y1=function(p){return arguments.length?(r=p==null?null:typeof p=="function"?p:tr(+p),u):r},u.lineX0=u.lineY0=function(){return f().x(e).y(t)},u.lineY1=function(){return f().x(e).y(r)},u.lineX1=function(){return f().x(n).y(t)},u.defined=function(p){return arguments.length?(i=typeof p=="function"?p:tr(!!p),u):i},u.curve=function(p){return arguments.length?(l=p,o!=null&&(s=l(o)),u):l},u.context=function(p){return arguments.length?(p==null?o=s=null:s=l(o=p),u):o},u}var _M=Se(()=>{Kd();ac();e0();Zb();Xd();Yb()});function kW(e,t){return te?1:t>=e?0:NaN}var LW=Se(()=>{});function BW(e){return e}var PW=Se(()=>{});function RW(){var e=BW,t=kW,r=null,n=tr(0),i=tr(ts),o=tr(0);function l(s){var a,u=(s=sc(s)).length,f,p,h=0,g=new Array(u),x=new Array(u),v=+n.apply(this,arguments),S=Math.min(ts,Math.max(-ts,i.apply(this,arguments)-v)),D,C=Math.min(Math.abs(S)/u,o.apply(this,arguments)),E=C*(S<0?-1:1),M;for(a=0;a0&&(h+=M);for(t!=null?g.sort(function(T,N){return t(x[T],x[N])}):r!=null&&g.sort(function(T,N){return r(s[T],s[N])}),a=0,p=h?(S-u*E)/h:0;a0?M*p:0)+E,x[f]={data:s[f],index:a,value:M,startAngle:v,endAngle:D,padAngle:C};return x}return l.value=function(s){return arguments.length?(e=typeof s=="function"?s:tr(+s),l):e},l.sortValues=function(s){return arguments.length?(t=s,r=null,l):t},l.sort=function(s){return arguments.length?(r=s,t=null,l):r},l.startAngle=function(s){return arguments.length?(n=typeof s=="function"?s:tr(+s),l):n},l.endAngle=function(s){return arguments.length?(i=typeof s=="function"?s:tr(+s),l):i},l.padAngle=function(s){return arguments.length?(o=typeof s=="function"?s:tr(+s),l):o},l}var qW=Se(()=>{Kd();ac();LW();PW();eo()});function zW(e){this._curve=e}function eh(e){function t(r){return new zW(e(r))}return t._curve=e,t}var Kb,OM=Se(()=>{e0();Kb=eh(uc);zW.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(e,t){this._curve.point(t*Math.sin(e),t*-Math.cos(e))}}});function th(e){var t=e.curve;return e.angle=e.x,delete e.x,e.radius=e.y,delete e.y,e.curve=function(r){return arguments.length?t(eh(r)):t()._curve},e}function FM(){return th(jd().curve(Kb))}var IM=Se(()=>{OM();Zb()});function kM(){var e=Xb().curve(Kb),t=e.curve,r=e.lineX0,n=e.lineX1,i=e.lineY0,o=e.lineY1;return e.angle=e.x,delete e.x,e.startAngle=e.x0,delete e.x0,e.endAngle=e.x1,delete e.x1,e.radius=e.y,delete e.y,e.innerRadius=e.y0,delete e.y0,e.outerRadius=e.y1,delete e.y1,e.lineStartAngle=function(){return th(r())},delete e.lineX0,e.lineEndAngle=function(){return th(n())},delete e.lineX1,e.lineInnerRadius=function(){return th(i())},delete e.lineY0,e.lineOuterRadius=function(){return th(o())},delete e.lineY1,e.curve=function(l){return arguments.length?t(eh(l)):t()._curve},e}var UW=Se(()=>{OM();_M();IM()});function Hp(e,t){return[(t=+t)*Math.cos(e-=Math.PI/2),t*Math.sin(e)]}var LM=Se(()=>{});function Qb(e){return new Jb(e,!0)}function jb(e){return new Jb(e,!1)}function HW(e){return new BM(e)}var Jb,BM,PM=Se(()=>{LM();Jb=class{constructor(t,r){this._context=t,this._x=r}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(t,r){switch(t=+t,r=+r,this._point){case 0:{this._point=1,this._line?this._context.lineTo(t,r):this._context.moveTo(t,r);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,r,t,r):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+r)/2,t,this._y0,t,r);break}}this._x0=t,this._y0=r}},BM=class{constructor(t){this._context=t}lineStart(){this._point=0}lineEnd(){}point(t,r){if(t=+t,r=+r,this._point===0)this._point=1;else{let n=Hp(this._x0,this._y0),i=Hp(this._x0,this._y0=(this._y0+r)/2),o=Hp(t,this._y0),l=Hp(t,r);this._context.moveTo(...n),this._context.bezierCurveTo(...i,...o,...l)}this._x0=t,this._y0=r}}});function Eye(e){return e.source}function Aye(e){return e.target}function t0(e){let t=Eye,r=Aye,n=Jd,i=Qd,o=null,l=null,s=Uu(a);function a(){let u,f=FW.call(arguments),p=t.apply(this,f),h=r.apply(this,f);if(o==null&&(l=e(u=s())),l.lineStart(),f[0]=p,l.point(+n.apply(this,f),+i.apply(this,f)),f[0]=h,l.point(+n.apply(this,f),+i.apply(this,f)),l.lineEnd(),u)return l=null,u+""||null}return a.source=function(u){return arguments.length?(t=u,a):t},a.target=function(u){return arguments.length?(r=u,a):r},a.x=function(u){return arguments.length?(n=typeof u=="function"?u:tr(+u),a):n},a.y=function(u){return arguments.length?(i=typeof u=="function"?u:tr(+u),a):i},a.context=function(u){return arguments.length?(u==null?o=l=null:l=e(o=u),a):o},a}function $W(){return t0(Qb)}function WW(){return t0(jb)}function VW(){let e=t0(HW);return e.angle=e.x,delete e.x,e.radius=e.y,delete e.y,e}var GW=Se(()=>{Kd();ac();PM();Xd();Yb()});var Cye,eD,RM=Se(()=>{eo();Cye=wr(3),eD={draw(e,t){let r=wr(t+zu(t/28,.75))*.59436,n=r/2,i=n*Cye;e.moveTo(0,r),e.lineTo(0,-r),e.moveTo(-i,-n),e.lineTo(i,n),e.moveTo(-i,n),e.lineTo(i,-n)}}});var rh,qM=Se(()=>{eo();rh={draw(e,t){let r=wr(t/Vs);e.moveTo(r,0),e.arc(0,0,r,0,ts)}}});var tD,zM=Se(()=>{eo();tD={draw(e,t){let r=wr(t/5)/2;e.moveTo(-3*r,-r),e.lineTo(-r,-r),e.lineTo(-r,-3*r),e.lineTo(r,-3*r),e.lineTo(r,-r),e.lineTo(3*r,-r),e.lineTo(3*r,r),e.lineTo(r,r),e.lineTo(r,3*r),e.lineTo(-r,3*r),e.lineTo(-r,r),e.lineTo(-3*r,r),e.closePath()}}});var YW,Mye,rD,UM=Se(()=>{eo();YW=wr(1/3),Mye=YW*2,rD={draw(e,t){let r=wr(t/Mye),n=r*YW;e.moveTo(0,-r),e.lineTo(n,0),e.lineTo(0,r),e.lineTo(-n,0),e.closePath()}}});var nD,HM=Se(()=>{eo();nD={draw(e,t){let r=wr(t)*.62625;e.moveTo(0,-r),e.lineTo(r,0),e.lineTo(0,r),e.lineTo(-r,0),e.closePath()}}});var iD,$M=Se(()=>{eo();iD={draw(e,t){let r=wr(t-zu(t/7,2))*.87559;e.moveTo(-r,0),e.lineTo(r,0),e.moveTo(0,r),e.lineTo(0,-r)}}});var oD,WM=Se(()=>{eo();oD={draw(e,t){let r=wr(t),n=-r/2;e.rect(n,n,r,r)}}});var aD,VM=Se(()=>{eo();aD={draw(e,t){let r=wr(t)*.4431;e.moveTo(r,r),e.lineTo(r,-r),e.lineTo(-r,-r),e.lineTo(-r,r),e.closePath()}}});var Tye,ZW,_ye,Oye,sD,GM=Se(()=>{eo();Tye=.8908130915292852,ZW=wo(Vs/10)/wo(7*Vs/10),_ye=wo(ts/10)*ZW,Oye=-Ws(ts/10)*ZW,sD={draw(e,t){let r=wr(t*Tye),n=_ye*r,i=Oye*r;e.moveTo(0,-r),e.lineTo(n,i);for(let o=1;o<5;++o){let l=ts*o/5,s=Ws(l),a=wo(l);e.lineTo(a*r,-s*r),e.lineTo(s*n-a*i,a*n+s*i)}e.closePath()}}});var YM,uD,ZM=Se(()=>{eo();YM=wr(3),uD={draw(e,t){let r=-wr(t/(YM*3));e.moveTo(0,r*2),e.lineTo(-YM*r,-r),e.lineTo(YM*r,-r),e.closePath()}}});var Fye,lD,XM=Se(()=>{eo();Fye=wr(3),lD={draw(e,t){let r=wr(t)*.6824,n=r/2,i=r*Fye/2;e.moveTo(0,-r),e.lineTo(i,n),e.lineTo(-i,n),e.closePath()}}});var rs,ns,KM,Iye,fD,JM=Se(()=>{eo();rs=-.5,ns=wr(3)/2,KM=1/wr(12),Iye=(KM/2+1)*3,fD={draw(e,t){let r=wr(t/Iye),n=r/2,i=r*KM,o=n,l=r*KM+r,s=-o,a=l;e.moveTo(n,i),e.lineTo(o,l),e.lineTo(s,a),e.lineTo(rs*n-ns*i,ns*n+rs*i),e.lineTo(rs*o-ns*l,ns*o+rs*l),e.lineTo(rs*s-ns*a,ns*s+rs*a),e.lineTo(rs*n+ns*i,rs*i-ns*n),e.lineTo(rs*o+ns*l,rs*l-ns*o),e.lineTo(rs*s+ns*a,rs*a-ns*s),e.closePath()}}});var r0,QM=Se(()=>{eo();r0={draw(e,t){let r=wr(t-zu(t/6,1.7))*.6189;e.moveTo(-r,-r),e.lineTo(r,r),e.moveTo(-r,r),e.lineTo(r,-r)}}});function eT(e,t){let r=null,n=Uu(i);e=typeof e=="function"?e:tr(e||rh),t=typeof t=="function"?t:tr(t===void 0?64:+t);function i(){let o;if(r||(r=o=n()),e.apply(this,arguments).draw(r,+t.apply(this,arguments)),o)return r=null,o+""||null}return i.type=function(o){return arguments.length?(e=typeof o=="function"?o:tr(o),i):e},i.size=function(o){return arguments.length?(t=typeof o=="function"?o:tr(+o),i):t},i.context=function(o){return arguments.length?(r=o??null,i):r},i}var jM,XW,KW=Se(()=>{ac();Xd();RM();qM();zM();UM();HM();$M();WM();VM();GM();ZM();XM();JM();QM();jM=[rh,tD,rD,oD,sD,uD,fD],XW=[rh,iD,r0,lD,eD,aD,nD]});function is(){}var n0=Se(()=>{});function nh(e,t,r){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+r)/6)}function i0(e){this._context=e}function JW(e){return new i0(e)}var o0=Se(()=>{i0.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:nh(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:nh(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}}});function QW(e){this._context=e}function jW(e){return new QW(e)}var eV=Se(()=>{n0();o0();QW.prototype={areaStart:is,areaEnd:is,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:nh(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}}});function tV(e){this._context=e}function rV(e){return new tV(e)}var nV=Se(()=>{o0();tV.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+e)/6,n=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:nh(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}}});function iV(e,t){this._basis=new i0(e),this._beta=t}var oV,aV=Se(()=>{o0();iV.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var e=this._x,t=this._y,r=e.length-1;if(r>0)for(var n=e[0],i=t[0],o=e[r]-n,l=t[r]-i,s=-1,a;++s<=r;)a=s/r,this._basis.point(this._beta*e[s]+(1-this._beta)*(n+a*o),this._beta*t[s]+(1-this._beta)*(i+a*l));this._x=this._y=null,this._basis.lineEnd()},point:function(e,t){this._x.push(+e),this._y.push(+t)}};oV=function e(t){function r(n){return t===1?new i0(n):new iV(n,t)}return r.beta=function(n){return e(+n)},r}(.85)});function ih(e,t,r){e._context.bezierCurveTo(e._x1+e._k*(e._x2-e._x0),e._y1+e._k*(e._y2-e._y0),e._x2+e._k*(e._x1-t),e._y2+e._k*(e._y1-r),e._x2,e._y2)}function cD(e,t){this._context=e,this._k=(1-t)/6}var sV,a0=Se(()=>{cD.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:ih(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2,this._x1=e,this._y1=t;break;case 2:this._point=3;default:ih(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};sV=function e(t){function r(n){return new cD(n,t)}return r.tension=function(n){return e(+n)},r}(0)});function pD(e,t){this._context=e,this._k=(1-t)/6}var uV,tT=Se(()=>{n0();a0();pD.prototype={areaStart:is,areaEnd:is,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:ih(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};uV=function e(t){function r(n){return new pD(n,t)}return r.tension=function(n){return e(+n)},r}(0)});function mD(e,t){this._context=e,this._k=(1-t)/6}var lV,rT=Se(()=>{a0();mD.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:ih(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};lV=function e(t){function r(n){return new mD(n,t)}return r.tension=function(n){return e(+n)},r}(0)});function s0(e,t,r){var n=e._x1,i=e._y1,o=e._x2,l=e._y2;if(e._l01_a>Bi){var s=2*e._l01_2a+3*e._l01_a*e._l12_a+e._l12_2a,a=3*e._l01_a*(e._l01_a+e._l12_a);n=(n*s-e._x0*e._l12_2a+e._x2*e._l01_2a)/a,i=(i*s-e._y0*e._l12_2a+e._y2*e._l01_2a)/a}if(e._l23_a>Bi){var u=2*e._l23_2a+3*e._l23_a*e._l12_a+e._l12_2a,f=3*e._l23_a*(e._l23_a+e._l12_a);o=(o*u+e._x1*e._l23_2a-t*e._l12_2a)/f,l=(l*u+e._y1*e._l23_2a-r*e._l12_2a)/f}e._context.bezierCurveTo(n,i,o,l,e._x2,e._y2)}function fV(e,t){this._context=e,this._alpha=t}var cV,dD=Se(()=>{eo();a0();fV.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3;default:s0(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};cV=function e(t){function r(n){return t?new fV(n,t):new cD(n,0)}return r.alpha=function(n){return e(+n)},r}(.5)});function pV(e,t){this._context=e,this._alpha=t}var mV,dV=Se(()=>{tT();n0();dD();pV.prototype={areaStart:is,areaEnd:is,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:s0(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};mV=function e(t){function r(n){return t?new pV(n,t):new pD(n,0)}return r.alpha=function(n){return e(+n)},r}(.5)});function hV(e,t){this._context=e,this._alpha=t}var gV,vV=Se(()=>{rT();dD();hV.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:s0(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};gV=function e(t){function r(n){return t?new hV(n,t):new mD(n,0)}return r.alpha=function(n){return e(+n)},r}(.5)});function xV(e){this._context=e}function yV(e){return new xV(e)}var wV=Se(()=>{n0();xV.prototype={areaStart:is,areaEnd:is,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}}});function bV(e){return e<0?-1:1}function DV(e,t,r){var n=e._x1-e._x0,i=t-e._x1,o=(e._y1-e._y0)/(n||i<0&&-0),l=(r-e._y1)/(i||n<0&&-0),s=(o*i+l*n)/(n+i);return(bV(o)+bV(l))*Math.min(Math.abs(o),Math.abs(l),.5*Math.abs(s))||0}function SV(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function nT(e,t,r){var n=e._x0,i=e._y0,o=e._x1,l=e._y1,s=(o-n)/3;e._context.bezierCurveTo(n+s,i+s*t,o-s,l-s*r,o,l)}function hD(e){this._context=e}function NV(e){this._context=new EV(e)}function EV(e){this._context=e}function AV(e){return new hD(e)}function CV(e){return new NV(e)}var MV=Se(()=>{hD.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:nT(this,this._t0,SV(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var r=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,nT(this,SV(this,r=DV(this,e,t)),r);break;default:nT(this,this._t0,r=DV(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}};(NV.prototype=Object.create(hD.prototype)).point=function(e,t){hD.prototype.point.call(this,t,e)};EV.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,r,n,i,o){this._context.bezierCurveTo(t,e,n,r,o,i)}}});function _V(e){this._context=e}function TV(e){var t,r=e.length-1,n,i=new Array(r),o=new Array(r),l=new Array(r);for(i[0]=0,o[0]=2,l[0]=e[0]+2*e[1],t=1;t=0;--t)i[t]=(l[t]-i[t+1])/o[t];for(o[r-1]=(e[r]+i[r-1])/2,t=0;t{_V.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,r=e.length;if(r)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),r===2)this._context.lineTo(e[1],t[1]);else for(var n=TV(e),i=TV(t),o=0,l=1;l{gD.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var r=this._x*(1-this._t)+e*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,t)}break}}this._x=e,this._y=t}}});function Gs(e,t){if((l=e.length)>1)for(var r=1,n,i,o=e[t[0]],l,s=o.length;r{});function Ys(e){for(var t=e.length,r=new Array(t);--t>=0;)r[t]=t;return r}var ah=Se(()=>{});function kye(e,t){return e[t]}function Lye(e){let t=[];return t.key=e,t}function PV(){var e=tr([]),t=Ys,r=Gs,n=kye;function i(o){var l=Array.from(e.apply(this,arguments),Lye),s,a=l.length,u=-1,f;for(let p of o)for(s=0,++u;s{Kd();ac();oh();ah()});function qV(e,t){if((n=e.length)>0){for(var r,n,i=0,o=e[0].length,l;i{oh()});function UV(e,t){if((a=e.length)>0)for(var r,n=0,i,o,l,s,a,u=e[t[0]].length;n0?(i[0]=l,i[1]=l+=o):o<0?(i[1]=s,i[0]=s+=o):(i[0]=0,i[1]=o)}var HV=Se(()=>{});function $V(e,t){if((i=e.length)>0){for(var r=0,n=e[t[0]],i,o=n.length;r{oh()});function VV(e,t){if(!(!((l=e.length)>0)||!((o=(i=e[t[0]]).length)>0))){for(var r=0,n=1,i,o,l;n{oh()});function vD(e){var t=e.map(Bye);return Ys(e).sort(function(r,n){return t[r]-t[n]})}function Bye(e){for(var t=-1,r=0,n=e.length,i,o=-1/0;++to&&(o=i,r=t);return r}var iT=Se(()=>{ah()});function xD(e){var t=e.map(oT);return Ys(e).sort(function(r,n){return t[r]-t[n]})}function oT(e){for(var t=0,r=-1,n=e.length,i;++r{ah()});function YV(e){return xD(e).reverse()}var ZV=Se(()=>{yD()});function XV(e){var t=e.length,r,n,i=e.map(oT),o=vD(e),l=0,s=0,a=[],u=[];for(r=0;r{iT();yD()});function JV(e){return Ys(e).reverse()}var QV=Se(()=>{ah()});var u0={};Cu(u0,{arc:()=>_W,area:()=>Xb,areaRadial:()=>kM,curveBasis:()=>JW,curveBasisClosed:()=>jW,curveBasisOpen:()=>rV,curveBumpX:()=>Qb,curveBumpY:()=>jb,curveBundle:()=>oV,curveCardinal:()=>sV,curveCardinalClosed:()=>uV,curveCardinalOpen:()=>lV,curveCatmullRom:()=>cV,curveCatmullRomClosed:()=>mV,curveCatmullRomOpen:()=>gV,curveLinear:()=>uc,curveLinearClosed:()=>yV,curveMonotoneX:()=>AV,curveMonotoneY:()=>CV,curveNatural:()=>OV,curveStep:()=>IV,curveStepAfter:()=>LV,curveStepBefore:()=>kV,line:()=>jd,lineRadial:()=>FM,link:()=>t0,linkHorizontal:()=>$W,linkRadial:()=>VW,linkVertical:()=>WW,pie:()=>RW,pointRadial:()=>Hp,radialArea:()=>kM,radialLine:()=>FM,stack:()=>PV,stackOffsetDiverging:()=>UV,stackOffsetExpand:()=>qV,stackOffsetNone:()=>Gs,stackOffsetSilhouette:()=>$V,stackOffsetWiggle:()=>VV,stackOrderAppearance:()=>vD,stackOrderAscending:()=>xD,stackOrderDescending:()=>YV,stackOrderInsideOut:()=>XV,stackOrderNone:()=>Ys,stackOrderReverse:()=>JV,symbol:()=>eT,symbolAsterisk:()=>eD,symbolCircle:()=>rh,symbolCross:()=>tD,symbolDiamond:()=>rD,symbolDiamond2:()=>nD,symbolPlus:()=>iD,symbolSquare:()=>oD,symbolSquare2:()=>aD,symbolStar:()=>sD,symbolTimes:()=>r0,symbolTriangle:()=>uD,symbolTriangle2:()=>lD,symbolWye:()=>fD,symbolX:()=>r0,symbols:()=>jM,symbolsFill:()=>jM,symbolsStroke:()=>XW});var l0=Se(()=>{OW();_M();Zb();qW();UW();IM();LM();GW();KW();RM();qM();zM();UM();HM();$M();WM();VM();GM();ZM();XM();JM();QM();eV();nV();o0();PM();aV();tT();rT();a0();dV();vV();dD();wV();e0();MV();FV();BV();RV();zV();HV();oh();WV();GV();iT();yD();ZV();KV();ah();QV()});function jV(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function $p(e,t){if((r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var r,n=e.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+e.slice(r+1)]}var f0=Se(()=>{});function Hu(e){return e=$p(Math.abs(e)),e?e[1]:NaN}var c0=Se(()=>{f0()});function eG(e,t){return function(r,n){for(var i=r.length,o=[],l=0,s=e[0],a=0;i>0&&s>0&&(a+s+1>n&&(s=Math.max(1,n-a)),o.push(r.substring(i-=s,i+s)),!((a+=s+1)>n));)s=e[l=(l+1)%e.length];return o.reverse().join(t)}}var tG=Se(()=>{});function rG(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}var nG=Se(()=>{});function Zs(e){if(!(t=Pye.exec(e)))throw new Error("invalid format: "+e);var t;return new p0({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}function p0(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}var Pye,aT=Se(()=>{Pye=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;Zs.prototype=p0.prototype;p0.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type}});function iG(e){e:for(var t=e.length,r=1,n=-1,i;r0&&(n=0);break}return n>0?e.slice(0,n)+e.slice(i+1):e}var oG=Se(()=>{});function aG(e,t){var r=$p(e,t);if(!r)return e+"";var n=r[0],i=r[1],o=i-(sT=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,l=n.length;return o===l?n:o>l?n+new Array(o-l+1).join("0"):o>0?n.slice(0,o)+"."+n.slice(o):"0."+new Array(1-o).join("0")+$p(e,Math.max(0,t+o-1))[0]}var sT,uT=Se(()=>{f0()});function lT(e,t){var r=$p(e,t);if(!r)return e+"";var n=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+n:n.length>i+1?n.slice(0,i+1)+"."+n.slice(i+1):n+new Array(i-n.length+2).join("0")}var sG=Se(()=>{f0()});var fT,uG=Se(()=>{f0();uT();sG();fT={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:jV,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>lT(e*100,t),r:lT,s:aG,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)}});function cT(e){return e}var lG=Se(()=>{});function wD(e){var t=e.grouping===void 0||e.thousands===void 0?cT:eG(fG.call(e.grouping,Number),e.thousands+""),r=e.currency===void 0?"":e.currency[0]+"",n=e.currency===void 0?"":e.currency[1]+"",i=e.decimal===void 0?".":e.decimal+"",o=e.numerals===void 0?cT:rG(fG.call(e.numerals,String)),l=e.percent===void 0?"%":e.percent+"",s=e.minus===void 0?"\u2212":e.minus+"",a=e.nan===void 0?"NaN":e.nan+"";function u(p){p=Zs(p);var h=p.fill,g=p.align,x=p.sign,v=p.symbol,S=p.zero,D=p.width,C=p.comma,E=p.precision,M=p.trim,T=p.type;T==="n"?(C=!0,T="g"):fT[T]||(E===void 0&&(E=12),M=!0,T="g"),(S||h==="0"&&g==="=")&&(S=!0,h="0",g="=");var N=v==="$"?r:v==="#"&&/[boxX]/.test(T)?"0"+T.toLowerCase():"",O=v==="$"?n:/[%p]/.test(T)?l:"",F=fT[T],I=/[defgprs%]/.test(T);E=E===void 0?6:/[gprs]/.test(T)?Math.max(1,Math.min(21,E)):Math.max(0,Math.min(20,E));function B(L){var q=N,R=O,V,X,U;if(T==="c")R=F(L)+R,L="";else{L=+L;var H=L<0||1/L<0;if(L=isNaN(L)?a:F(Math.abs(L),E),M&&(L=iG(L)),H&&+L==0&&x!=="+"&&(H=!1),q=(H?x==="("?x:s:x==="-"||x==="("?"":x)+q,R=(T==="s"?cG[8+sT/3]:"")+R+(H&&x==="("?")":""),I){for(V=-1,X=L.length;++VU||U>57){R=(U===46?i+L.slice(V+1):L.slice(V))+R,L=L.slice(0,V);break}}}C&&!S&&(L=t(L,1/0));var ee=q.length+L.length+R.length,Z=ee>1)+q+L+R+Z.slice(ee);break;default:L=Z+q+L+R;break}return o(L)}return B.toString=function(){return p+""},B}function f(p,h){var g=u((p=Zs(p),p.type="f",p)),x=Math.max(-8,Math.min(8,Math.floor(Hu(h)/3)))*3,v=Math.pow(10,-x),S=cG[8+x/3];return function(D){return g(v*D)+S}}return{format:u,formatPrefix:f}}var fG,cG,pT=Se(()=>{c0();tG();nG();aT();oG();uG();uT();lG();fG=Array.prototype.map,cG=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"]});function DD(e){return bD=wD(e),Wp=bD.format,m0=bD.formatPrefix,bD}var bD,Wp,m0,pG=Se(()=>{pT();DD({thousands:",",grouping:[3],currency:["$",""]})});function SD(e){return Math.max(0,-Hu(Math.abs(e)))}var mG=Se(()=>{c0()});function ND(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Hu(t)/3)))*3-Hu(Math.abs(e)))}var dG=Se(()=>{c0()});function ED(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Hu(t)-Hu(e))+1}var hG=Se(()=>{c0()});var gG={};Cu(gG,{FormatSpecifier:()=>p0,format:()=>Wp,formatDefaultLocale:()=>DD,formatLocale:()=>wD,formatPrefix:()=>m0,formatSpecifier:()=>Zs,precisionFixed:()=>SD,precisionPrefix:()=>ND,precisionRound:()=>ED});var AD=Se(()=>{pG();pT();aT();mG();dG();hG()});function Oo(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}var d0=Se(()=>{});function mT(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}var vG=Se(()=>{});function Vp(e){let t,r,n;e.length!==2?(t=Oo,r=(s,a)=>Oo(e(s),a),n=(s,a)=>e(s)-a):(t=e===Oo||e===mT?e:Rye,r=e,n=e);function i(s,a,u=0,f=s.length){if(u>>1;r(s[p],a)<0?u=p+1:f=p}while(u>>1;r(s[p],a)<=0?u=p+1:f=p}while(uu&&n(s[p-1],a)>-n(s[p],a)?p-1:p}return{left:i,center:l,right:o}}function Rye(){return 0}var dT=Se(()=>{d0();vG()});function h0(e){return e===null?NaN:+e}function*xG(e,t){if(t===void 0)for(let r of e)r!=null&&(r=+r)>=r&&(yield r);else{let r=-1;for(let n of e)(n=t(n,++r,e))!=null&&(n=+n)>=n&&(yield n)}}var hT=Se(()=>{});var yG,wG,qye,zye,Xs,bG=Se(()=>{d0();dT();hT();yG=Vp(Oo),wG=yG.right,qye=yG.left,zye=Vp(h0).center,Xs=wG});function DG({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):r}function Uye({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function Hye({_intern:e,_key:t},r){let n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function $ye(e){return e!==null&&typeof e=="object"?e.valueOf():e}var sh,SG=Se(()=>{sh=class extends Map{constructor(t,r=$ye){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),t!=null)for(let[n,i]of t)this.set(n,i)}get(t){return super.get(DG(this,t))}has(t){return super.has(DG(this,t))}set(t,r){return super.set(Uye(this,t),r)}delete(t){return super.delete(Hye(this,t))}}});function NG(e=Oo){if(e===Oo)return gT;if(typeof e!="function")throw new TypeError("compare is not a function");return(t,r)=>{let n=e(t,r);return n||n===0?n:(e(r,r)===0)-(e(t,t)===0)}}function gT(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(et?1:0)}var EG=Se(()=>{d0()});function CD(e,t,r){let n=(t-e)/Math.max(0,r),i=Math.floor(Math.log10(n)),o=n/Math.pow(10,i),l=o>=Wye?10:o>=Vye?5:o>=Gye?2:1,s,a,u;return i<0?(u=Math.pow(10,-i)/l,s=Math.round(e*u),a=Math.round(t*u),s/ut&&--a,u=-u):(u=Math.pow(10,i)*l,s=Math.round(e/u),a=Math.round(t/u),s*ut&&--a),a0))return[];if(e===t)return[e];let n=t=i))return[];let s=o-i+1,a=new Array(s);if(n)if(l<0)for(let u=0;u{Wye=Math.sqrt(50),Vye=Math.sqrt(10),Gye=Math.sqrt(2)});function MD(e,t){let r;if(t===void 0)for(let n of e)n!=null&&(r=n)&&(r=n);else{let n=-1;for(let i of e)(i=t(i,++n,e))!=null&&(r=i)&&(r=i)}return r}var CG=Se(()=>{});function TD(e,t){let r;if(t===void 0)for(let n of e)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of e)(i=t(i,++n,e))!=null&&(r>i||r===void 0&&i>=i)&&(r=i)}return r}var MG=Se(()=>{});function _D(e,t,r=0,n=1/0,i){if(t=Math.floor(t),r=Math.floor(Math.max(0,r)),n=Math.floor(Math.min(e.length-1,n)),!(r<=t&&t<=n))return e;for(i=i===void 0?gT:NG(i);n>r;){if(n-r>600){let a=n-r+1,u=t-r+1,f=Math.log(a),p=.5*Math.exp(2*f/3),h=.5*Math.sqrt(f*p*(a-p)/a)*(u-a/2<0?-1:1),g=Math.max(r,Math.floor(t-u*p/a+h)),x=Math.min(n,Math.floor(t+(a-u)*p/a+h));_D(e,t,g,x,i)}let o=e[t],l=r,s=n;for(v0(e,r,t),i(e[n],o)>0&&v0(e,r,n);l0;)--s}i(e[r],o)===0?v0(e,r,s):(++s,v0(e,s,n)),s<=t&&(r=s+1),t<=s&&(n=s-1)}return e}function v0(e,t,r){let n=e[t];e[t]=e[r],e[r]=n}var TG=Se(()=>{EG()});function OD(e,t,r){if(e=Float64Array.from(xG(e,r)),!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return TD(e);if(t>=1)return MD(e);var n,i=(n-1)*t,o=Math.floor(i),l=MD(_D(e,o).subarray(0,o+1)),s=TD(e.subarray(o+1));return l+(s-l)*(i-o)}}function vT(e,t,r=h0){if(!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return+r(e[0],0,e);if(t>=1)return+r(e[n-1],n-1,e);var n,i=(n-1)*t,o=Math.floor(i),l=+r(e[o],o,e),s=+r(e[o+1],o+1,e);return l+(s-l)*(i-o)}}var _G=Se(()=>{CG();MG();TG();hT()});function FD(e,t,r){e=+e,t=+t,r=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+r;for(var n=-1,i=Math.max(0,Math.ceil((t-e)/r))|0,o=new Array(i);++n{});var os=Se(()=>{bG();d0();dT();_G();OG();AG();SG()});function Mn(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}function as(e,t){switch(arguments.length){case 0:break;case 1:{typeof e=="function"?this.interpolator(e):this.range(e);break}default:{this.domain(e),typeof t=="function"?this.interpolator(t):this.range(t);break}}return this}var bo=Se(()=>{});function lh(){var e=new sh,t=[],r=[],n=ID;function i(o){let l=e.get(o);if(l===void 0){if(n!==ID)return n;e.set(o,l=t.push(o)-1)}return r[l%r.length]}return i.domain=function(o){if(!arguments.length)return t.slice();t=[],e=new sh;for(let l of o)e.has(l)||e.set(l,t.push(l)-1);return i},i.range=function(o){return arguments.length?(r=Array.from(o),i):r.slice()},i.unknown=function(o){return arguments.length?(n=o,i):n},i.copy=function(){return lh(t,r).unknown(n)},Mn.apply(i,arguments),i}var ID,xT=Se(()=>{os();bo();ID=Symbol("implicit")});function x0(){var e=lh().unknown(void 0),t=e.domain,r=e.range,n=0,i=1,o,l,s=!1,a=0,u=0,f=.5;delete e.unknown;function p(){var h=t().length,g=i{os();bo();xT()});function Ul(e,t,r){e.prototype=t.prototype=r,r.constructor=e}function lc(e,t){var r=Object.create(e.prototype);for(var n in t)r[n]=t[n];return r}var kD=Se(()=>{});function Wu(){}function BG(){return this.rgb().formatHex()}function e1e(){return this.rgb().formatHex8()}function t1e(){return $G(this).formatHsl()}function PG(){return this.rgb().formatRgb()}function ss(e){var t,r;return e=(e+"").trim().toLowerCase(),(t=Yye.exec(e))?(r=t[1].length,t=parseInt(t[1],16),r===6?RG(t):r===3?new ui(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?LD(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?LD(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=Zye.exec(e))?new ui(t[1],t[2],t[3],1):(t=Xye.exec(e))?new ui(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Kye.exec(e))?LD(t[1],t[2],t[3],t[4]):(t=Jye.exec(e))?LD(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Qye.exec(e))?UG(t[1],t[2]/100,t[3]/100,1):(t=jye.exec(e))?UG(t[1],t[2]/100,t[3]/100,t[4]):LG.hasOwnProperty(e)?RG(LG[e]):e==="transparent"?new ui(NaN,NaN,NaN,0):null}function RG(e){return new ui(e>>16&255,e>>8&255,e&255,1)}function LD(e,t,r,n){return n<=0&&(e=t=r=NaN),new ui(e,t,r,n)}function w0(e){return e instanceof Wu||(e=ss(e)),e?(e=e.rgb(),new ui(e.r,e.g,e.b,e.opacity)):new ui}function Kp(e,t,r,n){return arguments.length===1?w0(e):new ui(e,t,r,n??1)}function ui(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}function qG(){return`#${Yp(this.r)}${Yp(this.g)}${Yp(this.b)}`}function r1e(){return`#${Yp(this.r)}${Yp(this.g)}${Yp(this.b)}${Yp((isNaN(this.opacity)?1:this.opacity)*255)}`}function zG(){let e=PD(this.opacity);return`${e===1?"rgb(":"rgba("}${Zp(this.r)}, ${Zp(this.g)}, ${Zp(this.b)}${e===1?")":`, ${e})`}`}function PD(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Zp(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Yp(e){return e=Zp(e),(e<16?"0":"")+e.toString(16)}function UG(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new Ks(e,t,r,n)}function $G(e){if(e instanceof Ks)return new Ks(e.h,e.s,e.l,e.opacity);if(e instanceof Wu||(e=ss(e)),!e)return new Ks;if(e instanceof Ks)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,i=Math.min(t,r,n),o=Math.max(t,r,n),l=NaN,s=o-i,a=(o+i)/2;return s?(t===o?l=(r-n)/s+(r0&&a<1?0:l,new Ks(l,s,a,e.opacity)}function ch(e,t,r,n){return arguments.length===1?$G(e):new Ks(e,t,r,n??1)}function Ks(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}function HG(e){return e=(e||0)%360,e<0?e+360:e}function BD(e){return Math.max(0,Math.min(1,e||0))}function yT(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}var fc,Xp,fh,y0,$u,Yye,Zye,Xye,Kye,Jye,Qye,jye,LG,RD=Se(()=>{kD();fc=.7,Xp=1/fc,fh="\\s*([+-]?\\d+)\\s*",y0="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",$u="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Yye=/^#([0-9a-f]{3,8})$/,Zye=new RegExp(`^rgb\\(${fh},${fh},${fh}\\)$`),Xye=new RegExp(`^rgb\\(${$u},${$u},${$u}\\)$`),Kye=new RegExp(`^rgba\\(${fh},${fh},${fh},${y0}\\)$`),Jye=new RegExp(`^rgba\\(${$u},${$u},${$u},${y0}\\)$`),Qye=new RegExp(`^hsl\\(${y0},${$u},${$u}\\)$`),jye=new RegExp(`^hsla\\(${y0},${$u},${$u},${y0}\\)$`),LG={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Ul(Wu,ss,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:BG,formatHex:BG,formatHex8:e1e,formatHsl:t1e,formatRgb:PG,toString:PG});Ul(ui,Kp,lc(Wu,{brighter(e){return e=e==null?Xp:Math.pow(Xp,e),new ui(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?fc:Math.pow(fc,e),new ui(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new ui(Zp(this.r),Zp(this.g),Zp(this.b),PD(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:qG,formatHex:qG,formatHex8:r1e,formatRgb:zG,toString:zG}));Ul(Ks,ch,lc(Wu,{brighter(e){return e=e==null?Xp:Math.pow(Xp,e),new Ks(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?fc:Math.pow(fc,e),new Ks(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,i=2*r-n;return new ui(yT(e>=240?e-240:e+120,i,n),yT(e,i,n),yT(e<120?e+240:e-120,i,n),this.opacity)},clamp(){return new Ks(HG(this.h),BD(this.s),BD(this.l),PD(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=PD(this.opacity);return`${e===1?"hsl(":"hsla("}${HG(this.h)}, ${BD(this.s)*100}%, ${BD(this.l)*100}%${e===1?")":`, ${e})`}`}}))});var qD,zD,wT=Se(()=>{qD=Math.PI/180,zD=180/Math.PI});function XG(e){if(e instanceof Js)return new Js(e.l,e.a,e.b,e.opacity);if(e instanceof Vu)return jG(e);e instanceof ui||(e=w0(e));var t=NT(e.r),r=NT(e.g),n=NT(e.b),i=bT((.2225045*t+.7168786*r+.0606169*n)/VG),o,l;return t===r&&r===n?o=l=i:(o=bT((.4360747*t+.3850649*r+.1430804*n)/WG),l=bT((.0139322*t+.0971045*r+.7141733*n)/GG)),new Js(116*i-16,500*(o-i),200*(i-l),e.opacity)}function KG(e,t){return new Js(e,0,0,t??1)}function Jp(e,t,r,n){return arguments.length===1?XG(e):new Js(e,t,r,n??1)}function Js(e,t,r,n){this.l=+e,this.a=+t,this.b=+r,this.opacity=+n}function bT(e){return e>n1e?Math.pow(e,1/3):e/ZG+YG}function DT(e){return e>ph?e*e*e:ZG*(e-YG)}function ST(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function NT(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function JG(e){if(e instanceof Vu)return new Vu(e.h,e.c,e.l,e.opacity);if(e instanceof Js||(e=XG(e)),e.a===0&&e.b===0)return new Vu(NaN,0{kD();RD();wT();UD=18,WG=.96422,VG=1,GG=.82521,YG=4/29,ph=6/29,ZG=3*ph*ph,n1e=ph*ph*ph;Ul(Js,Jp,lc(Wu,{brighter(e){return new Js(this.l+UD*(e??1),this.a,this.b,this.opacity)},darker(e){return new Js(this.l-UD*(e??1),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,r=isNaN(this.b)?e:e-this.b/200;return t=WG*DT(t),e=VG*DT(e),r=GG*DT(r),new ui(ST(3.1338561*t-1.6168667*e-.4906146*r),ST(-.9787684*t+1.9161415*e+.033454*r),ST(.0719453*t-.2289914*e+1.4052427*r),this.opacity)}}));Ul(Vu,mh,lc(Wu,{brighter(e){return new Vu(this.h,this.c,this.l+UD*(e??1),this.opacity)},darker(e){return new Vu(this.h,this.c,this.l-UD*(e??1),this.opacity)},rgb(){return jG(this).rgb()}}))});function i1e(e){if(e instanceof Qp)return new Qp(e.h,e.s,e.l,e.opacity);e instanceof ui||(e=w0(e));var t=e.r/255,r=e.g/255,n=e.b/255,i=(nY*n+tY*t-rY*r)/(nY+tY-rY),o=n-i,l=(b0*(r-i)-AT*o)/HD,s=Math.sqrt(l*l+o*o)/(b0*i*(1-i)),a=s?Math.atan2(l,o)*zD-120:NaN;return new Qp(a<0?a+360:a,s,i,e.opacity)}function jp(e,t,r,n){return arguments.length===1?i1e(e):new Qp(e,t,r,n??1)}function Qp(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}var iY,ET,AT,HD,b0,tY,rY,nY,oY=Se(()=>{kD();RD();wT();iY=-.14861,ET=1.78277,AT=-.29227,HD=-.90649,b0=1.97294,tY=b0*HD,rY=b0*ET,nY=ET*AT-HD*iY;Ul(Qp,jp,lc(Wu,{brighter(e){return e=e==null?Xp:Math.pow(Xp,e),new Qp(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?fc:Math.pow(fc,e),new Qp(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=isNaN(this.h)?0:(this.h+120)*qD,t=+this.l,r=isNaN(this.s)?0:this.s*t*(1-t),n=Math.cos(e),i=Math.sin(e);return new ui(255*(t+r*(iY*n+ET*i)),255*(t+r*(AT*n+HD*i)),255*(t+r*(b0*n)),this.opacity)}}))});var $D={};Cu($D,{color:()=>ss,cubehelix:()=>jp,gray:()=>KG,hcl:()=>mh,hsl:()=>ch,lab:()=>Jp,lch:()=>QG,rgb:()=>Kp});var Qs=Se(()=>{RD();eY();oY()});function CT(e,t,r,n,i){var o=e*e,l=o*e;return((1-3*e+3*o-l)*t+(4-6*o+3*l)*r+(1+3*e+3*o-3*l)*n+l*i)/6}function WD(e){var t=e.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,t-1):Math.floor(r*t),i=e[n],o=e[n+1],l=n>0?e[n-1]:2*i-o,s=n{});function GD(e){var t=e.length;return function(r){var n=Math.floor(((r%=1)<0?++r:r)*t),i=e[(n+t-1)%t],o=e[n%t],l=e[(n+1)%t],s=e[(n+2)%t];return CT((r-n/t)*t,i,o,l,s)}}var MT=Se(()=>{VD()});var dh,TT=Se(()=>{dh=e=>()=>e});function aY(e,t){return function(r){return e+r*t}}function o1e(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function cc(e,t){var r=t-e;return r?aY(e,r>180||r<-180?r-360*Math.round(r/360):r):dh(isNaN(e)?t:e)}function sY(e){return(e=+e)==1?Tn:function(t,r){return r-t?o1e(t,r,e):dh(isNaN(t)?r:t)}}function Tn(e,t){var r=t-e;return r?aY(e,r):dh(isNaN(e)?t:e)}var em=Se(()=>{TT()});function uY(e){return function(t){var r=t.length,n=new Array(r),i=new Array(r),o=new Array(r),l,s;for(l=0;l{Qs();VD();MT();em();pc=function e(t){var r=sY(t);function n(i,o){var l=r((i=Kp(i)).r,(o=Kp(o)).r),s=r(i.g,o.g),a=r(i.b,o.b),u=Tn(i.opacity,o.opacity);return function(f){return i.r=l(f),i.g=s(f),i.b=a(f),i.opacity=u(f),i+""}}return n.gamma=e,n}(1);lY=uY(WD),fY=uY(GD)});function hh(e,t){t||(t=[]);var r=e?Math.min(t.length,e.length):0,n=t.slice(),i;return function(o){for(i=0;i{});function cY(e,t){return(YD(t)?hh:OT)(e,t)}function OT(e,t){var r=t?t.length:0,n=e?Math.min(r,e.length):0,i=new Array(n),o=new Array(r),l;for(l=0;l{D0();ZD()});function XD(e,t){var r=new Date;return e=+e,t=+t,function(n){return r.setTime(e*(1-n)+t*n),r}}var IT=Se(()=>{});function Pi(e,t){return e=+e,t=+t,function(r){return e*(1-r)+t*r}}var S0=Se(()=>{});function KD(e,t){var r={},n={},i;(e===null||typeof e!="object")&&(e={}),(t===null||typeof t!="object")&&(t={});for(i in t)i in e?r[i]=Qo(e[i],t[i]):n[i]=t[i];return function(o){for(i in r)n[i]=r[i](o);return n}}var kT=Se(()=>{D0()});function a1e(e){return function(){return e}}function s1e(e){return function(t){return e(t)+""}}function gh(e,t){var r=BT.lastIndex=LT.lastIndex=0,n,i,o,l=-1,s=[],a=[];for(e=e+"",t=t+"";(n=BT.exec(e))&&(i=LT.exec(t));)(o=i.index)>r&&(o=t.slice(r,o),s[l]?s[l]+=o:s[++l]=o),(n=n[0])===(i=i[0])?s[l]?s[l]+=i:s[++l]=i:(s[++l]=null,a.push({i:l,x:Pi(n,i)})),r=LT.lastIndex;return r{S0();BT=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,LT=new RegExp(BT.source,"g")});function Qo(e,t){var r=typeof t,n;return t==null||r==="boolean"?dh(t):(r==="number"?Pi:r==="string"?(n=ss(t))?(t=n,pc):gh:t instanceof ss?pc:t instanceof Date?XD:YD(t)?hh:Array.isArray(t)?OT:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?KD:Pi)(e,t)}var D0=Se(()=>{Qs();_T();FT();IT();S0();kT();PT();TT();ZD()});function pY(e){var t=e.length;return function(r){return e[Math.max(0,Math.min(t-1,Math.floor(r*t)))]}}var mY=Se(()=>{});function dY(e,t){var r=cc(+e,+t);return function(n){var i=r(n);return i-360*Math.floor(i/360)}}var hY=Se(()=>{em()});function mc(e,t){return e=+e,t=+t,function(r){return Math.round(e*(1-r)+t*r)}}var gY=Se(()=>{});function RT(e,t,r,n,i,o){var l,s,a;return(l=Math.sqrt(e*e+t*t))&&(e/=l,t/=l),(a=e*r+t*n)&&(r-=e*a,n-=t*a),(s=Math.sqrt(r*r+n*n))&&(r/=s,n/=s,a/=s),e*n{vY=180/Math.PI,JD={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1}});function yY(e){let t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(e+"");return t.isIdentity?JD:RT(t.a,t.b,t.c,t.d,t.e,t.f)}function wY(e){return e==null?JD:(QD||(QD=document.createElementNS("http://www.w3.org/2000/svg","g")),QD.setAttribute("transform",e),(e=QD.transform.baseVal.consolidate())?(e=e.matrix,RT(e.a,e.b,e.c,e.d,e.e,e.f)):JD)}var QD,bY=Se(()=>{xY()});function DY(e,t,r,n){function i(u){return u.length?u.pop()+" ":""}function o(u,f,p,h,g,x){if(u!==p||f!==h){var v=g.push("translate(",null,t,null,r);x.push({i:v-4,x:Pi(u,p)},{i:v-2,x:Pi(f,h)})}else(p||h)&&g.push("translate("+p+t+h+r)}function l(u,f,p,h){u!==f?(u-f>180?f+=360:f-u>180&&(u+=360),h.push({i:p.push(i(p)+"rotate(",null,n)-2,x:Pi(u,f)})):f&&p.push(i(p)+"rotate("+f+n)}function s(u,f,p,h){u!==f?h.push({i:p.push(i(p)+"skewX(",null,n)-2,x:Pi(u,f)}):f&&p.push(i(p)+"skewX("+f+n)}function a(u,f,p,h,g,x){if(u!==p||f!==h){var v=g.push(i(g)+"scale(",null,",",null,")");x.push({i:v-4,x:Pi(u,p)},{i:v-2,x:Pi(f,h)})}else(p!==1||h!==1)&&g.push(i(g)+"scale("+p+","+h+")")}return function(u,f){var p=[],h=[];return u=e(u),f=e(f),o(u.translateX,u.translateY,f.translateX,f.translateY,p,h),l(u.rotate,f.rotate,p,h),s(u.skewX,f.skewX,p,h),a(u.scaleX,u.scaleY,f.scaleX,f.scaleY,p,h),u=f=null,function(g){for(var x=-1,v=h.length,S;++x{S0();bY();jD=DY(yY,"px, ","px)","deg)"),e2=DY(wY,", ",")",")")});function NY(e){return((e=Math.exp(e))+1/e)/2}function l1e(e){return((e=Math.exp(e))-1/e)/2}function f1e(e){return((e=Math.exp(2*e))-1)/(e+1)}var u1e,t2,EY=Se(()=>{u1e=1e-12;t2=function e(t,r,n){function i(o,l){var s=o[0],a=o[1],u=o[2],f=l[0],p=l[1],h=l[2],g=f-s,x=p-a,v=g*g+x*x,S,D;if(v{Qs();em();CY=AY(cc),MY=AY(Tn)});function qT(e,t){var r=Tn((e=Jp(e)).l,(t=Jp(t)).l),n=Tn(e.a,t.a),i=Tn(e.b,t.b),o=Tn(e.opacity,t.opacity);return function(l){return e.l=r(l),e.a=n(l),e.b=i(l),e.opacity=o(l),e+""}}var _Y=Se(()=>{Qs();em()});function OY(e){return function(t,r){var n=e((t=mh(t)).h,(r=mh(r)).h),i=Tn(t.c,r.c),o=Tn(t.l,r.l),l=Tn(t.opacity,r.opacity);return function(s){return t.h=n(s),t.c=i(s),t.l=o(s),t.opacity=l(s),t+""}}}var FY,IY,kY=Se(()=>{Qs();em();FY=OY(cc),IY=OY(Tn)});function LY(e){return function t(r){r=+r;function n(i,o){var l=e((i=jp(i)).h,(o=jp(o)).h),s=Tn(i.s,o.s),a=Tn(i.l,o.l),u=Tn(i.opacity,o.opacity);return function(f){return i.h=l(f),i.s=s(f),i.l=a(Math.pow(f,r)),i.opacity=u(f),i+""}}return n.gamma=t,n}(1)}var BY,PY,RY=Se(()=>{Qs();em();BY=LY(cc),PY=LY(Tn)});function N0(e,t){t===void 0&&(t=e,e=Qo);for(var r=0,n=t.length-1,i=t[0],o=new Array(n<0?0:n);r{D0()});function zY(e,t){for(var r=new Array(t),n=0;n{});var HY={};Cu(HY,{interpolate:()=>Qo,interpolateArray:()=>cY,interpolateBasis:()=>WD,interpolateBasisClosed:()=>GD,interpolateCubehelix:()=>BY,interpolateCubehelixLong:()=>PY,interpolateDate:()=>XD,interpolateDiscrete:()=>pY,interpolateHcl:()=>FY,interpolateHclLong:()=>IY,interpolateHsl:()=>CY,interpolateHslLong:()=>MY,interpolateHue:()=>dY,interpolateLab:()=>qT,interpolateNumber:()=>Pi,interpolateNumberArray:()=>hh,interpolateObject:()=>KD,interpolateRgb:()=>pc,interpolateRgbBasis:()=>lY,interpolateRgbBasisClosed:()=>fY,interpolateRound:()=>mc,interpolateString:()=>gh,interpolateTransformCss:()=>jD,interpolateTransformSvg:()=>e2,interpolateZoom:()=>t2,piecewise:()=>N0,quantize:()=>zY});var Hl=Se(()=>{D0();FT();VD();MT();IT();mY();hY();S0();ZD();kT();gY();PT();SY();EY();_T();TY();_Y();kY();RY();qY();UY()});function zT(e){return function(){return e}}var $Y=Se(()=>{});function dc(e){return+e}var r2=Se(()=>{});function Ni(e){return e}function UT(e,t){return(t-=e=+e)?function(r){return(r-e)/t}:zT(isNaN(t)?NaN:.5)}function c1e(e,t){var r;return e>t&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function p1e(e,t,r){var n=e[0],i=e[1],o=t[0],l=t[1];return i2?m1e:p1e,a=u=null,p}function p(h){return h==null||isNaN(h=+h)?o:(a||(a=s(e.map(n),t,r)))(n(l(h)))}return p.invert=function(h){return l(i((u||(u=s(t,e.map(n),Pi)))(h)))},p.domain=function(h){return arguments.length?(e=Array.from(h,dc),f()):e.slice()},p.range=function(h){return arguments.length?(t=Array.from(h),f()):t.slice()},p.rangeRound=function(h){return t=Array.from(h),r=mc,f()},p.clamp=function(h){return arguments.length?(l=h?!0:Ni,f()):l!==Ni},p.interpolate=function(h){return arguments.length?(r=h,f()):r},p.unknown=function(h){return arguments.length?(o=h,p):o},function(h,g){return n=h,i=g,f()}}function rm(){return tm()(Ni,Ni)}var WY,Yu=Se(()=>{os();Hl();$Y();r2();WY=[0,1]});function E0(e,t,r,n){var i=uh(e,t,r),o;switch(n=Zs(n??",f"),n.type){case"s":{var l=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(o=ND(i,l))&&(n.precision=o),m0(n,l)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(o=ED(i,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=o-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(o=SD(i))&&(n.precision=o-(n.type==="%")*2);break}}return Wp(n)}var HT=Se(()=>{os();AD()});function Fo(e){var t=e.domain;return e.ticks=function(r){var n=t();return Gp(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var i=t();return E0(i[0],i[i.length-1],r??10,n)},e.nice=function(r){r==null&&(r=10);var n=t(),i=0,o=n.length-1,l=n[i],s=n[o],a,u,f=10;for(s0;){if(u=g0(l,s,r),u===a)return n[i]=l,n[o]=s,t(n);if(u>0)l=Math.floor(l/u)*u,s=Math.ceil(s/u)*u;else if(u<0)l=Math.ceil(l*u)/u,s=Math.floor(s*u)/u;else break;a=u}return e},e}function n2(){var e=rm();return e.copy=function(){return Gu(e,n2())},Mn.apply(e,arguments),Fo(e)}var $l=Se(()=>{os();Yu();bo();HT()});function i2(e){var t;function r(n){return n==null||isNaN(n=+n)?t:n}return r.invert=r,r.domain=r.range=function(n){return arguments.length?(e=Array.from(n,dc),r):e.slice()},r.unknown=function(n){return arguments.length?(t=n,r):t},r.copy=function(){return i2(e).unknown(t)},e=arguments.length?Array.from(e,dc):[0,1],Fo(r)}var VY=Se(()=>{$l();r2()});function A0(e,t){e=e.slice();var r=0,n=e.length-1,i=e[r],o=e[n],l;return o{});function GY(e){return Math.log(e)}function YY(e){return Math.exp(e)}function d1e(e){return-Math.log(-e)}function h1e(e){return-Math.exp(-e)}function g1e(e){return isFinite(e)?+("1e"+e):e<0?0:e}function v1e(e){return e===10?g1e:e===Math.E?Math.exp:t=>Math.pow(e,t)}function x1e(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function ZY(e){return(t,r)=>-e(-t,r)}function C0(e){let t=e(GY,YY),r=t.domain,n=10,i,o;function l(){return i=x1e(n),o=v1e(n),r()[0]<0?(i=ZY(i),o=ZY(o),e(d1e,h1e)):e(GY,YY),t}return t.base=function(s){return arguments.length?(n=+s,l()):n},t.domain=function(s){return arguments.length?(r(s),l()):r()},t.ticks=s=>{let a=r(),u=a[0],f=a[a.length-1],p=f0){for(;h<=g;++h)for(x=1;xf)break;D.push(v)}}else for(;h<=g;++h)for(x=n-1;x>=1;--x)if(v=h>0?x/o(-h):x*o(h),!(vf)break;D.push(v)}D.length*2{if(s==null&&(s=10),a==null&&(a=n===10?"s":","),typeof a!="function"&&(!(n%1)&&(a=Zs(a)).precision==null&&(a.trim=!0),a=Wp(a)),s===1/0)return a;let u=Math.max(1,n*s/t.ticks().length);return f=>{let p=f/o(Math.round(i(f)));return p*nr(A0(r(),{floor:s=>o(Math.floor(i(s))),ceil:s=>o(Math.ceil(i(s)))})),t}function o2(){let e=C0(tm()).domain([1,10]);return e.copy=()=>Gu(e,o2()).base(e.base()),Mn.apply(e,arguments),e}var a2=Se(()=>{os();AD();$T();Yu();bo()});function XY(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function KY(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function M0(e){var t=1,r=e(XY(t),KY(t));return r.constant=function(n){return arguments.length?e(XY(t=+n),KY(t)):t},Fo(r)}function s2(){var e=M0(tm());return e.copy=function(){return Gu(e,s2()).constant(e.constant())},Mn.apply(e,arguments)}var u2=Se(()=>{$l();Yu();bo()});function JY(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function y1e(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function w1e(e){return e<0?-e*e:e*e}function T0(e){var t=e(Ni,Ni),r=1;function n(){return r===1?e(Ni,Ni):r===.5?e(y1e,w1e):e(JY(r),JY(1/r))}return t.exponent=function(i){return arguments.length?(r=+i,n()):r},Fo(t)}function _0(){var e=T0(tm());return e.copy=function(){return Gu(e,_0()).exponent(e.exponent())},Mn.apply(e,arguments),e}function QY(){return _0.apply(null,arguments).exponent(.5)}var l2=Se(()=>{$l();Yu();bo()});function jY(e){return Math.sign(e)*e*e}function b1e(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}function f2(){var e=rm(),t=[0,1],r=!1,n;function i(o){var l=b1e(e(o));return isNaN(l)?n:r?Math.round(l):l}return i.invert=function(o){return e.invert(jY(o))},i.domain=function(o){return arguments.length?(e.domain(o),i):e.domain()},i.range=function(o){return arguments.length?(e.range((t=Array.from(o,dc)).map(jY)),i):t.slice()},i.rangeRound=function(o){return i.range(o).round(!0)},i.round=function(o){return arguments.length?(r=!!o,i):r},i.clamp=function(o){return arguments.length?(e.clamp(o),i):e.clamp()},i.unknown=function(o){return arguments.length?(n=o,i):n},i.copy=function(){return f2(e.domain(),t).round(r).clamp(e.clamp()).unknown(n)},Mn.apply(i,arguments),Fo(i)}var eZ=Se(()=>{Yu();bo();$l();r2()});function c2(){var e=[],t=[],r=[],n;function i(){var l=0,s=Math.max(1,t.length);for(r=new Array(s-1);++l0?r[s-1]:e[0],s{os();bo()});function p2(){var e=0,t=1,r=1,n=[.5],i=[0,1],o;function l(a){return a!=null&&a<=a?i[Xs(n,a,0,r)]:o}function s(){var a=-1;for(n=new Array(r);++a=r?[n[r-1],t]:[n[u-1],n[u]]},l.unknown=function(a){return arguments.length&&(o=a),l},l.thresholds=function(){return n.slice()},l.copy=function(){return p2().domain([e,t]).range(i).unknown(o)},Mn.apply(Fo(l),arguments)}var rZ=Se(()=>{os();$l();bo()});function m2(){var e=[.5],t=[0,1],r,n=1;function i(o){return o!=null&&o<=o?t[Xs(e,o,0,n)]:r}return i.domain=function(o){return arguments.length?(e=Array.from(o),n=Math.min(e.length,t.length-1),i):e.slice()},i.range=function(o){return arguments.length?(t=Array.from(o),n=Math.min(e.length,t.length-1),i):t.slice()},i.invertExtent=function(o){var l=t.indexOf(o);return[e[l-1],e[l]]},i.unknown=function(o){return arguments.length?(r=o,i):r},i.copy=function(){return m2().domain(e).range(t).unknown(r)},Mn.apply(i,arguments)}var nZ=Se(()=>{os();bo()});function fn(e,t,r,n){function i(o){return e(o=arguments.length===0?new Date:new Date(+o)),o}return i.floor=o=>(e(o=new Date(+o)),o),i.ceil=o=>(e(o=new Date(o-1)),t(o,1),e(o),o),i.round=o=>{let l=i(o),s=i.ceil(o);return o-l(t(o=new Date(+o),l==null?1:Math.floor(l)),o),i.range=(o,l,s)=>{let a=[];if(o=i.ceil(o),s=s==null?1:Math.floor(s),!(o0))return a;let u;do a.push(u=new Date(+o)),t(o,s),e(o);while(ufn(l=>{if(l>=l)for(;e(l),!o(l);)l.setTime(l-1)},(l,s)=>{if(l>=l)if(s<0)for(;++s<=0;)for(;t(l,-1),!o(l););else for(;--s>=0;)for(;t(l,1),!o(l););}),r&&(i.count=(o,l)=>(WT.setTime(+o),VT.setTime(+l),e(WT),e(VT),Math.floor(r(WT,VT))),i.every=o=>(o=Math.floor(o),!isFinite(o)||!(o>0)?null:o>1?i.filter(n?l=>n(l)%o===0:l=>i.count(0,l)%o===0):i)),i}var WT,VT,Wl=Se(()=>{WT=new Date,VT=new Date});var O0,eyt,iZ=Se(()=>{Wl();O0=fn(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);O0.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?fn(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):O0);eyt=O0.range});var us,oZ,GT=Se(()=>{Wl();us=fn(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*1e3)},(e,t)=>(t-e)/1e3,e=>e.getUTCSeconds()),oZ=us.range});var vh,D1e,xh,S1e,YT=Se(()=>{Wl();vh=fn(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getMinutes()),D1e=vh.range,xh=fn(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getUTCMinutes()),S1e=xh.range});var yh,N1e,wh,E1e,ZT=Se(()=>{Wl();yh=fn(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3-e.getMinutes()*6e4)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getHours()),N1e=yh.range,wh=fn(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getUTCHours()),E1e=wh.range});var Vl,A1e,om,C1e,d2,M1e,XT=Se(()=>{Wl();Vl=fn(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/864e5,e=>e.getDate()-1),A1e=Vl.range,om=fn(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>e.getUTCDate()-1),C1e=om.range,d2=fn(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>Math.floor(e/864e5)),M1e=d2.range});function am(e){return fn(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(t,r)=>{t.setDate(t.getDate()+r*7)},(t,r)=>(r-t-(r.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/6048e5)}function sm(e){return fn(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCDate(t.getUTCDate()+r*7)},(t,r)=>(r-t)/6048e5)}var Gl,bh,sZ,uZ,hc,lZ,fZ,cZ,T1e,_1e,O1e,F1e,I1e,k1e,Yl,Dh,pZ,mZ,gc,dZ,hZ,gZ,L1e,B1e,P1e,R1e,q1e,z1e,KT=Se(()=>{Wl();Gl=am(0),bh=am(1),sZ=am(2),uZ=am(3),hc=am(4),lZ=am(5),fZ=am(6),cZ=Gl.range,T1e=bh.range,_1e=sZ.range,O1e=uZ.range,F1e=hc.range,I1e=lZ.range,k1e=fZ.range;Yl=sm(0),Dh=sm(1),pZ=sm(2),mZ=sm(3),gc=sm(4),dZ=sm(5),hZ=sm(6),gZ=Yl.range,L1e=Dh.range,B1e=pZ.range,P1e=mZ.range,R1e=gc.range,q1e=dZ.range,z1e=hZ.range});var Sh,U1e,Nh,H1e,JT=Se(()=>{Wl();Sh=fn(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth()),U1e=Sh.range,Nh=fn(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth()),H1e=Nh.range});var Ca,$1e,Ma,W1e,QT=Se(()=>{Wl();Ca=fn(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());Ca.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:fn(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,r)=>{t.setFullYear(t.getFullYear()+r*e)});$1e=Ca.range,Ma=fn(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());Ma.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:fn(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)});W1e=Ma.range});function xZ(e,t,r,n,i,o){let l=[[us,1,1e3],[us,5,5*1e3],[us,15,15*1e3],[us,30,30*1e3],[o,1,6e4],[o,5,5*6e4],[o,15,15*6e4],[o,30,30*6e4],[i,1,36e5],[i,3,3*36e5],[i,6,6*36e5],[i,12,12*36e5],[n,1,864e5],[n,2,2*864e5],[r,1,6048e5],[t,1,2592e6],[t,3,3*2592e6],[e,1,31536e6]];function s(u,f,p){let h=fS).right(l,h);if(g===l.length)return e.every(uh(u/31536e6,f/31536e6,p));if(g===0)return O0.every(Math.max(uh(u,f,p),1));let[x,v]=l[h/l[g-1][2]{os();iZ();GT();YT();ZT();XT();KT();JT();QT();[jT,e_]=xZ(Ma,Nh,Yl,d2,wh,xh),[t_,r_]=xZ(Ca,Sh,Gl,Vl,yh,vh)});var h2=Se(()=>{GT();YT();ZT();XT();KT();JT();QT();yZ()});function n_(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function i_(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function I0(e,t,r){return{y:e,m:t,d:r,H:0,M:0,S:0,L:0}}function o_(e){var t=e.dateTime,r=e.date,n=e.time,i=e.periods,o=e.days,l=e.shortDays,s=e.months,a=e.shortMonths,u=k0(i),f=L0(i),p=k0(o),h=L0(o),g=k0(l),x=L0(l),v=k0(s),S=L0(s),D=k0(a),C=L0(a),E={a:H,A:ee,b:Z,B:pe,c:null,d:EZ,e:EZ,f:dwe,g:Nwe,G:Awe,H:cwe,I:pwe,j:mwe,L:_Z,m:hwe,M:gwe,p:we,q:he,Q:MZ,s:TZ,S:vwe,u:xwe,U:ywe,V:wwe,w:bwe,W:Dwe,x:null,X:null,y:Swe,Y:Ewe,Z:Cwe,"%":CZ},M={a:oe,A:ve,b:Oe,B:De,c:null,d:AZ,e:AZ,f:Owe,g:Uwe,G:$we,H:Mwe,I:Twe,j:_we,L:FZ,m:Fwe,M:Iwe,p:Me,q:le,Q:MZ,s:TZ,S:kwe,u:Lwe,U:Bwe,V:Pwe,w:Rwe,W:qwe,x:null,X:null,y:zwe,Y:Hwe,Z:Wwe,"%":CZ},T={a:B,A:L,b:q,B:R,c:V,d:SZ,e:SZ,f:swe,g:DZ,G:bZ,H:NZ,I:NZ,j:nwe,L:awe,m:rwe,M:iwe,p:I,q:twe,Q:lwe,s:fwe,S:owe,u:K1e,U:J1e,V:Q1e,w:X1e,W:j1e,x:X,X:U,y:DZ,Y:bZ,Z:ewe,"%":uwe};E.x=N(r,E),E.X=N(n,E),E.c=N(t,E),M.x=N(r,M),M.X=N(n,M),M.c=N(t,M);function N(ne,fe){return function(Fe){var me=[],Ue=-1,Re=0,ie=ne.length,ue,Te,Ce;for(Fe instanceof Date||(Fe=new Date(+Fe));++Ue53)return null;"w"in me||(me.w=1),"Z"in me?(Re=i_(I0(me.y,0,1)),ie=Re.getUTCDay(),Re=ie>4||ie===0?Dh.ceil(Re):Dh(Re),Re=om.offset(Re,(me.V-1)*7),me.y=Re.getUTCFullYear(),me.m=Re.getUTCMonth(),me.d=Re.getUTCDate()+(me.w+6)%7):(Re=n_(I0(me.y,0,1)),ie=Re.getDay(),Re=ie>4||ie===0?bh.ceil(Re):bh(Re),Re=Vl.offset(Re,(me.V-1)*7),me.y=Re.getFullYear(),me.m=Re.getMonth(),me.d=Re.getDate()+(me.w+6)%7)}else("W"in me||"U"in me)&&("w"in me||(me.w="u"in me?me.u%7:"W"in me?1:0),ie="Z"in me?i_(I0(me.y,0,1)).getUTCDay():n_(I0(me.y,0,1)).getDay(),me.m=0,me.d="W"in me?(me.w+6)%7+me.W*7-(ie+5)%7:me.w+me.U*7-(ie+6)%7);return"Z"in me?(me.H+=me.Z/100|0,me.M+=me.Z%100,i_(me)):n_(me)}}function F(ne,fe,Fe,me){for(var Ue=0,Re=fe.length,ie=Fe.length,ue,Te;Ue=ie)return-1;if(ue=fe.charCodeAt(Ue++),ue===37){if(ue=fe.charAt(Ue++),Te=T[ue in wZ?fe.charAt(Ue++):ue],!Te||(me=Te(ne,Fe,me))<0)return-1}else if(ue!=Fe.charCodeAt(me++))return-1}return me}function I(ne,fe,Fe){var me=u.exec(fe.slice(Fe));return me?(ne.p=f.get(me[0].toLowerCase()),Fe+me[0].length):-1}function B(ne,fe,Fe){var me=g.exec(fe.slice(Fe));return me?(ne.w=x.get(me[0].toLowerCase()),Fe+me[0].length):-1}function L(ne,fe,Fe){var me=p.exec(fe.slice(Fe));return me?(ne.w=h.get(me[0].toLowerCase()),Fe+me[0].length):-1}function q(ne,fe,Fe){var me=D.exec(fe.slice(Fe));return me?(ne.m=C.get(me[0].toLowerCase()),Fe+me[0].length):-1}function R(ne,fe,Fe){var me=v.exec(fe.slice(Fe));return me?(ne.m=S.get(me[0].toLowerCase()),Fe+me[0].length):-1}function V(ne,fe,Fe){return F(ne,t,fe,Fe)}function X(ne,fe,Fe){return F(ne,r,fe,Fe)}function U(ne,fe,Fe){return F(ne,n,fe,Fe)}function H(ne){return l[ne.getDay()]}function ee(ne){return o[ne.getDay()]}function Z(ne){return a[ne.getMonth()]}function pe(ne){return s[ne.getMonth()]}function we(ne){return i[+(ne.getHours()>=12)]}function he(ne){return 1+~~(ne.getMonth()/3)}function oe(ne){return l[ne.getUTCDay()]}function ve(ne){return o[ne.getUTCDay()]}function Oe(ne){return a[ne.getUTCMonth()]}function De(ne){return s[ne.getUTCMonth()]}function Me(ne){return i[+(ne.getUTCHours()>=12)]}function le(ne){return 1+~~(ne.getUTCMonth()/3)}return{format:function(ne){var fe=N(ne+="",E);return fe.toString=function(){return ne},fe},parse:function(ne){var fe=O(ne+="",!1);return fe.toString=function(){return ne},fe},utcFormat:function(ne){var fe=N(ne+="",M);return fe.toString=function(){return ne},fe},utcParse:function(ne){var fe=O(ne+="",!0);return fe.toString=function(){return ne},fe}}}function zr(e,t,r){var n=e<0?"-":"",i=(n?-e:e)+"",o=i.length;return n+(o[t.toLowerCase(),r]))}function X1e(e,t,r){var n=Ri.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function K1e(e,t,r){var n=Ri.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function J1e(e,t,r){var n=Ri.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function Q1e(e,t,r){var n=Ri.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function j1e(e,t,r){var n=Ri.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function bZ(e,t,r){var n=Ri.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function DZ(e,t,r){var n=Ri.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function ewe(e,t,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return n?(e.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function twe(e,t,r){var n=Ri.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function rwe(e,t,r){var n=Ri.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function SZ(e,t,r){var n=Ri.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function nwe(e,t,r){var n=Ri.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function NZ(e,t,r){var n=Ri.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function iwe(e,t,r){var n=Ri.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function owe(e,t,r){var n=Ri.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function awe(e,t,r){var n=Ri.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function swe(e,t,r){var n=Ri.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function uwe(e,t,r){var n=G1e.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function lwe(e,t,r){var n=Ri.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function fwe(e,t,r){var n=Ri.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function EZ(e,t){return zr(e.getDate(),t,2)}function cwe(e,t){return zr(e.getHours(),t,2)}function pwe(e,t){return zr(e.getHours()%12||12,t,2)}function mwe(e,t){return zr(1+Vl.count(Ca(e),e),t,3)}function _Z(e,t){return zr(e.getMilliseconds(),t,3)}function dwe(e,t){return _Z(e,t)+"000"}function hwe(e,t){return zr(e.getMonth()+1,t,2)}function gwe(e,t){return zr(e.getMinutes(),t,2)}function vwe(e,t){return zr(e.getSeconds(),t,2)}function xwe(e){var t=e.getDay();return t===0?7:t}function ywe(e,t){return zr(Gl.count(Ca(e)-1,e),t,2)}function OZ(e){var t=e.getDay();return t>=4||t===0?hc(e):hc.ceil(e)}function wwe(e,t){return e=OZ(e),zr(hc.count(Ca(e),e)+(Ca(e).getDay()===4),t,2)}function bwe(e){return e.getDay()}function Dwe(e,t){return zr(bh.count(Ca(e)-1,e),t,2)}function Swe(e,t){return zr(e.getFullYear()%100,t,2)}function Nwe(e,t){return e=OZ(e),zr(e.getFullYear()%100,t,2)}function Ewe(e,t){return zr(e.getFullYear()%1e4,t,4)}function Awe(e,t){var r=e.getDay();return e=r>=4||r===0?hc(e):hc.ceil(e),zr(e.getFullYear()%1e4,t,4)}function Cwe(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+zr(t/60|0,"0",2)+zr(t%60,"0",2)}function AZ(e,t){return zr(e.getUTCDate(),t,2)}function Mwe(e,t){return zr(e.getUTCHours(),t,2)}function Twe(e,t){return zr(e.getUTCHours()%12||12,t,2)}function _we(e,t){return zr(1+om.count(Ma(e),e),t,3)}function FZ(e,t){return zr(e.getUTCMilliseconds(),t,3)}function Owe(e,t){return FZ(e,t)+"000"}function Fwe(e,t){return zr(e.getUTCMonth()+1,t,2)}function Iwe(e,t){return zr(e.getUTCMinutes(),t,2)}function kwe(e,t){return zr(e.getUTCSeconds(),t,2)}function Lwe(e){var t=e.getUTCDay();return t===0?7:t}function Bwe(e,t){return zr(Yl.count(Ma(e)-1,e),t,2)}function IZ(e){var t=e.getUTCDay();return t>=4||t===0?gc(e):gc.ceil(e)}function Pwe(e,t){return e=IZ(e),zr(gc.count(Ma(e),e)+(Ma(e).getUTCDay()===4),t,2)}function Rwe(e){return e.getUTCDay()}function qwe(e,t){return zr(Dh.count(Ma(e)-1,e),t,2)}function zwe(e,t){return zr(e.getUTCFullYear()%100,t,2)}function Uwe(e,t){return e=IZ(e),zr(e.getUTCFullYear()%100,t,2)}function Hwe(e,t){return zr(e.getUTCFullYear()%1e4,t,4)}function $we(e,t){var r=e.getUTCDay();return e=r>=4||r===0?gc(e):gc.ceil(e),zr(e.getUTCFullYear()%1e4,t,4)}function Wwe(){return"+0000"}function CZ(){return"%"}function MZ(e){return+e}function TZ(e){return Math.floor(+e/1e3)}var wZ,Ri,G1e,Y1e,kZ=Se(()=>{h2();wZ={"-":"",_:" ",0:"0"},Ri=/^\s*\d+/,G1e=/^%/,Y1e=/[\\^$*+?|[\]().{}]/g});function a_(e){return Eh=o_(e),g2=Eh.format,LZ=Eh.parse,v2=Eh.utcFormat,BZ=Eh.utcParse,Eh}var Eh,g2,LZ,v2,BZ,PZ=Se(()=>{kZ();a_({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]})});var s_=Se(()=>{PZ()});function Vwe(e){return new Date(e)}function Gwe(e){return e instanceof Date?+e:+new Date(+e)}function x2(e,t,r,n,i,o,l,s,a,u){var f=rm(),p=f.invert,h=f.domain,g=u(".%L"),x=u(":%S"),v=u("%I:%M"),S=u("%I %p"),D=u("%a %d"),C=u("%b %d"),E=u("%B"),M=u("%Y");function T(N){return(a(N){h2();s_();Yu();bo();$T()});function f_(){return Mn.apply(x2(jT,e_,Ma,Nh,Yl,om,wh,xh,us,v2).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}var RZ=Se(()=>{h2();s_();l_();bo()});function y2(){var e=0,t=1,r,n,i,o,l=Ni,s=!1,a;function u(p){return p==null||isNaN(p=+p)?a:l(i===0?.5:(p=(o(p)-r)*i,s?Math.max(0,Math.min(1,p)):p))}u.domain=function(p){return arguments.length?([e,t]=p,r=o(e=+e),n=o(t=+t),i=r===n?0:1/(n-r),u):[e,t]},u.clamp=function(p){return arguments.length?(s=!!p,u):s},u.interpolator=function(p){return arguments.length?(l=p,u):l};function f(p){return function(h){var g,x;return arguments.length?([g,x]=h,l=p(g,x),u):[l(0),l(1)]}}return u.range=f(Qo),u.rangeRound=f(mc),u.unknown=function(p){return arguments.length?(a=p,u):a},function(p){return o=p,r=p(e),n=p(t),i=r===n?0:1/(n-r),u}}function Zl(e,t){return t.domain(e.domain()).interpolator(e.interpolator()).clamp(e.clamp()).unknown(e.unknown())}function w2(){var e=Fo(y2()(Ni));return e.copy=function(){return Zl(e,w2())},as.apply(e,arguments)}function c_(){var e=C0(y2()).domain([1,10]);return e.copy=function(){return Zl(e,c_()).base(e.base())},as.apply(e,arguments)}function p_(){var e=M0(y2());return e.copy=function(){return Zl(e,p_()).constant(e.constant())},as.apply(e,arguments)}function b2(){var e=T0(y2());return e.copy=function(){return Zl(e,b2()).exponent(e.exponent())},as.apply(e,arguments)}function qZ(){return b2.apply(null,arguments).exponent(.5)}var m_=Se(()=>{Hl();Yu();bo();$l();a2();u2();l2()});function D2(){var e=[],t=Ni;function r(n){if(n!=null&&!isNaN(n=+n))return t((Xs(e,n,1)-1)/(e.length-1))}return r.domain=function(n){if(!arguments.length)return e.slice();e=[];for(let i of n)i!=null&&!isNaN(i=+i)&&e.push(i);return e.sort(Oo),r},r.interpolator=function(n){return arguments.length?(t=n,r):t},r.range=function(){return e.map((n,i)=>t(i/(e.length-1)))},r.quantiles=function(n){return Array.from({length:n+1},(i,o)=>OD(e,o/n))},r.copy=function(){return D2(t).domain(e)},as.apply(r,arguments)}var zZ=Se(()=>{os();Yu();bo()});function S2(){var e=0,t=.5,r=1,n=1,i,o,l,s,a,u=Ni,f,p=!1,h;function g(v){return isNaN(v=+v)?h:(v=.5+((v=+f(v))-o)*(n*v{Hl();Yu();bo();$l();a2();m_();u2();l2()});var $Z={};Cu($Z,{scaleBand:()=>x0,scaleDiverging:()=>N2,scaleDivergingLog:()=>d_,scaleDivergingPow:()=>E2,scaleDivergingSqrt:()=>UZ,scaleDivergingSymlog:()=>h_,scaleIdentity:()=>i2,scaleImplicit:()=>ID,scaleLinear:()=>n2,scaleLog:()=>o2,scaleOrdinal:()=>lh,scalePoint:()=>IG,scalePow:()=>_0,scaleQuantile:()=>c2,scaleQuantize:()=>p2,scaleRadial:()=>f2,scaleSequential:()=>w2,scaleSequentialLog:()=>c_,scaleSequentialPow:()=>b2,scaleSequentialQuantile:()=>D2,scaleSequentialSqrt:()=>qZ,scaleSequentialSymlog:()=>p_,scaleSqrt:()=>QY,scaleSymlog:()=>s2,scaleThreshold:()=>m2,scaleTime:()=>u_,scaleUtc:()=>f_,tickFormat:()=>E0});var WZ=Se(()=>{kG();VY();$l();a2();u2();xT();l2();eZ();tZ();rZ();nZ();l_();RZ();m_();zZ();HZ();HT()});function VZ(e){return e}var GZ=Se(()=>{});function Ywe(e){return"translate("+e+",0)"}function Zwe(e){return"translate(0,"+e+")"}function Xwe(e){return t=>+e(t)}function Kwe(e,t){return t=Math.max(0,e.bandwidth()-t*2)/2,e.round()&&(t=Math.round(t)),r=>+e(r)+t}function Jwe(){return!this.__axis}function M2(e,t){var r=[],n=null,i=null,o=6,l=6,s=3,a=typeof window<"u"&&window.devicePixelRatio>1?0:.5,u=e===A2||e===B0?-1:1,f=e===B0||e===C2?"x":"y",p=e===A2||e===g_?Ywe:Zwe;function h(g){var x=n??(t.ticks?t.ticks.apply(t,r):t.domain()),v=i??(t.tickFormat?t.tickFormat.apply(t,r):VZ),S=Math.max(o,0)+s,D=t.range(),C=+D[0]+a,E=+D[D.length-1]+a,M=(t.bandwidth?Kwe:Xwe)(t.copy(),a),T=g.selection?g.selection():g,N=T.selectAll(".domain").data([null]),O=T.selectAll(".tick").data(x,t).order(),F=O.exit(),I=O.enter().append("g").attr("class","tick"),B=O.select("line"),L=O.select("text");N=N.merge(N.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),O=O.merge(I),B=B.merge(I.append("line").attr("stroke","currentColor").attr(f+"2",u*o)),L=L.merge(I.append("text").attr("fill","currentColor").attr(f,u*S).attr("dy",e===A2?"0em":e===g_?"0.71em":"0.32em")),g!==T&&(N=N.transition(g),O=O.transition(g),B=B.transition(g),L=L.transition(g),F=F.transition(g).attr("opacity",YZ).attr("transform",function(q){return isFinite(q=M(q))?p(q+a):this.getAttribute("transform")}),I.attr("opacity",YZ).attr("transform",function(q){var R=this.parentNode.__axis;return p((R&&isFinite(R=R(q))?R:M(q))+a)})),F.remove(),N.attr("d",e===B0||e===C2?l?"M"+u*l+","+C+"H"+a+"V"+E+"H"+u*l:"M"+a+","+C+"V"+E:l?"M"+C+","+u*l+"V"+a+"H"+E+"V"+u*l:"M"+C+","+a+"H"+E),O.attr("opacity",1).attr("transform",function(q){return p(M(q)+a)}),B.attr(f+"2",u*o),L.attr(f,u*S).text(v),T.filter(Jwe).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",e===C2?"start":e===B0?"end":"middle"),T.each(function(){this.__axis=M})}return h.scale=function(g){return arguments.length?(t=g,h):t},h.ticks=function(){return r=Array.from(arguments),h},h.tickArguments=function(g){return arguments.length?(r=g==null?[]:Array.from(g),h):r.slice()},h.tickValues=function(g){return arguments.length?(n=g==null?null:Array.from(g),h):n&&n.slice()},h.tickFormat=function(g){return arguments.length?(i=g,h):i},h.tickSize=function(g){return arguments.length?(o=l=+g,h):o},h.tickSizeInner=function(g){return arguments.length?(o=+g,h):o},h.tickSizeOuter=function(g){return arguments.length?(l=+g,h):l},h.tickPadding=function(g){return arguments.length?(s=+g,h):s},h.offset=function(g){return arguments.length?(a=+g,h):a},h}function ZZ(e){return M2(A2,e)}function XZ(e){return M2(C2,e)}function KZ(e){return M2(g_,e)}function JZ(e){return M2(B0,e)}var A2,C2,g_,B0,YZ,QZ=Se(()=>{GZ();A2=1,C2=2,g_=3,B0=4,YZ=1e-6});var jZ={};Cu(jZ,{axisBottom:()=>KZ,axisLeft:()=>JZ,axisRight:()=>XZ,axisTop:()=>ZZ});var eX=Se(()=>{QZ()});function rX(){for(var e=0,t=arguments.length,r={},n;e=0&&(n=r.slice(i+1),r=r.slice(0,i)),r&&!t.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:n}})}function ebe(e,t){for(var r=0,n=e.length,i;r{Qwe={value:()=>{}};T2.prototype=rX.prototype={constructor:T2,on:function(e,t){var r=this._,n=jwe(e+"",r),i,o=-1,l=n.length;if(arguments.length<2){for(;++o0)for(var r=new Array(i),n=0,i,o;n{nX()});var _2,R0,O2=Se(()=>{_2="http://www.w3.org/1999/xhtml",R0={svg:"http://www.w3.org/2000/svg",xhtml:_2,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"}});function Xu(e){var t=e+="",r=t.indexOf(":");return r>=0&&(t=e.slice(0,r))!=="xmlns"&&(e=e.slice(r+1)),R0.hasOwnProperty(t)?{space:R0[t],local:e}:e}var F2=Se(()=>{O2()});function tbe(e){return function(){var t=this.ownerDocument,r=this.namespaceURI;return r===_2&&t.documentElement.namespaceURI===_2?t.createElement(e):t.createElementNS(r,e)}}function rbe(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function vc(e){var t=Xu(e);return(t.local?rbe:tbe)(t)}var q0=Se(()=>{F2();O2()});function nbe(){}function xc(e){return e==null?nbe:function(){return this.querySelector(e)}}var I2=Se(()=>{});function iX(e){typeof e!="function"&&(e=xc(e));for(var t=this._groups,r=t.length,n=new Array(r),i=0;i{ls();I2()});function z0(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}var x_=Se(()=>{});function ibe(){return[]}function Ah(e){return e==null?ibe:function(){return this.querySelectorAll(e)}}var y_=Se(()=>{});function obe(e){return function(){return z0(e.apply(this,arguments))}}function aX(e){typeof e=="function"?e=obe(e):e=Ah(e);for(var t=this._groups,r=t.length,n=[],i=[],o=0;o{ls();x_();y_()});function Ch(e){return function(){return this.matches(e)}}function k2(e){return function(t){return t.matches(e)}}var U0=Se(()=>{});function sbe(e){return function(){return abe.call(this.children,e)}}function ube(){return this.firstElementChild}function uX(e){return this.select(e==null?ube:sbe(typeof e=="function"?e:k2(e)))}var abe,lX=Se(()=>{U0();abe=Array.prototype.find});function fbe(){return Array.from(this.children)}function cbe(e){return function(){return lbe.call(this.children,e)}}function fX(e){return this.selectAll(e==null?fbe:cbe(typeof e=="function"?e:k2(e)))}var lbe,cX=Se(()=>{U0();lbe=Array.prototype.filter});function pX(e){typeof e!="function"&&(e=Ch(e));for(var t=this._groups,r=t.length,n=new Array(r),i=0;i{ls();U0()});function L2(e){return new Array(e.length)}var w_=Se(()=>{});function dX(){return new yn(this._enter||this._groups.map(L2),this._parents)}function H0(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}var b_=Se(()=>{w_();ls();H0.prototype={constructor:H0,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}}});function hX(e){return function(){return e}}var gX=Se(()=>{});function pbe(e,t,r,n,i,o){for(var l=0,s,a=t.length,u=o.length;l=E&&(E=C+1);!(T=S[E])&&++E{ls();b_();gX()});function yX(){return new yn(this._exit||this._groups.map(L2),this._parents)}var wX=Se(()=>{w_();ls()});function bX(e,t,r){var n=this.enter(),i=this,o=this.exit();return typeof e=="function"?(n=e(n),n&&(n=n.selection())):n=n.append(e+""),t!=null&&(i=t(i),i&&(i=i.selection())),r==null?o.remove():r(o),n&&i?n.merge(i).order():i}var DX=Se(()=>{});function SX(e){for(var t=e.selection?e.selection():e,r=this._groups,n=t._groups,i=r.length,o=n.length,l=Math.min(i,o),s=new Array(i),a=0;a{ls()});function EX(){for(var e=this._groups,t=-1,r=e.length;++t=0;)(l=n[i])&&(o&&l.compareDocumentPosition(o)^4&&o.parentNode.insertBefore(l,o),o=l);return this}var AX=Se(()=>{});function CX(e){e||(e=gbe);function t(p,h){return p&&h?e(p.__data__,h.__data__):!p-!h}for(var r=this._groups,n=r.length,i=new Array(n),o=0;ot?1:e>=t?0:NaN}var MX=Se(()=>{ls()});function TX(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}var _X=Se(()=>{});function OX(){return Array.from(this)}var FX=Se(()=>{});function IX(){for(var e=this._groups,t=0,r=e.length;t{});function LX(){let e=0;for(let t of this)++e;return e}var BX=Se(()=>{});function PX(){return!this.node()}var RX=Se(()=>{});function qX(e){for(var t=this._groups,r=0,n=t.length;r{});function vbe(e){return function(){this.removeAttribute(e)}}function xbe(e){return function(){this.removeAttributeNS(e.space,e.local)}}function ybe(e,t){return function(){this.setAttribute(e,t)}}function wbe(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function bbe(e,t){return function(){var r=t.apply(this,arguments);r==null?this.removeAttribute(e):this.setAttribute(e,r)}}function Dbe(e,t){return function(){var r=t.apply(this,arguments);r==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,r)}}function UX(e,t){var r=Xu(e);if(arguments.length<2){var n=this.node();return r.local?n.getAttributeNS(r.space,r.local):n.getAttribute(r)}return this.each((t==null?r.local?xbe:vbe:typeof t=="function"?r.local?Dbe:bbe:r.local?wbe:ybe)(r,t))}var HX=Se(()=>{F2()});function Mh(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}var B2=Se(()=>{});function Sbe(e){return function(){this.style.removeProperty(e)}}function Nbe(e,t,r){return function(){this.style.setProperty(e,t,r)}}function Ebe(e,t,r){return function(){var n=t.apply(this,arguments);n==null?this.style.removeProperty(e):this.style.setProperty(e,n,r)}}function $X(e,t,r){return arguments.length>1?this.each((t==null?Sbe:typeof t=="function"?Ebe:Nbe)(e,t,r??"")):Xl(this.node(),e)}function Xl(e,t){return e.style.getPropertyValue(t)||Mh(e).getComputedStyle(e,null).getPropertyValue(t)}var D_=Se(()=>{B2()});function Abe(e){return function(){delete this[e]}}function Cbe(e,t){return function(){this[e]=t}}function Mbe(e,t){return function(){var r=t.apply(this,arguments);r==null?delete this[e]:this[e]=r}}function WX(e,t){return arguments.length>1?this.each((t==null?Abe:typeof t=="function"?Mbe:Cbe)(e,t)):this.node()[e]}var VX=Se(()=>{});function GX(e){return e.trim().split(/^|\s+/)}function S_(e){return e.classList||new YX(e)}function YX(e){this._node=e,this._names=GX(e.getAttribute("class")||"")}function ZX(e,t){for(var r=S_(e),n=-1,i=t.length;++n{YX.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}}});function Fbe(){this.textContent=""}function Ibe(e){return function(){this.textContent=e}}function kbe(e){return function(){var t=e.apply(this,arguments);this.textContent=t??""}}function QX(e){return arguments.length?this.each(e==null?Fbe:(typeof e=="function"?kbe:Ibe)(e)):this.node().textContent}var jX=Se(()=>{});function Lbe(){this.innerHTML=""}function Bbe(e){return function(){this.innerHTML=e}}function Pbe(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??""}}function eK(e){return arguments.length?this.each(e==null?Lbe:(typeof e=="function"?Pbe:Bbe)(e)):this.node().innerHTML}var tK=Se(()=>{});function Rbe(){this.nextSibling&&this.parentNode.appendChild(this)}function rK(){return this.each(Rbe)}var nK=Se(()=>{});function qbe(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function iK(){return this.each(qbe)}var oK=Se(()=>{});function aK(e){var t=typeof e=="function"?e:vc(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}var sK=Se(()=>{q0()});function zbe(){return null}function uK(e,t){var r=typeof e=="function"?e:vc(e),n=t==null?zbe:typeof t=="function"?t:xc(t);return this.select(function(){return this.insertBefore(r.apply(this,arguments),n.apply(this,arguments)||null)})}var lK=Se(()=>{q0();I2()});function Ube(){var e=this.parentNode;e&&e.removeChild(this)}function fK(){return this.each(Ube)}var cK=Se(()=>{});function Hbe(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function $be(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function pK(e){return this.select(e?$be:Hbe)}var mK=Se(()=>{});function dK(e){return arguments.length?this.property("__data__",e):this.node().__data__}var hK=Se(()=>{});function Wbe(e){return function(t){e.call(this,t,this.__data__)}}function Vbe(e){return e.trim().split(/^|\s+/).map(function(t){var r="",n=t.indexOf(".");return n>=0&&(r=t.slice(n+1),t=t.slice(0,n)),{type:t,name:r}})}function Gbe(e){return function(){var t=this.__on;if(t){for(var r=0,n=-1,i=t.length,o;r{});function xK(e,t,r){var n=Mh(e),i=n.CustomEvent;typeof i=="function"?i=new i(t,r):(i=n.document.createEvent("Event"),r?(i.initEvent(t,r.bubbles,r.cancelable),i.detail=r.detail):i.initEvent(t,!1,!1)),e.dispatchEvent(i)}function Zbe(e,t){return function(){return xK(this,e,t)}}function Xbe(e,t){return function(){return xK(this,e,t.apply(this,arguments))}}function yK(e,t){return this.each((typeof t=="function"?Xbe:Zbe)(e,t))}var wK=Se(()=>{B2()});function*bK(){for(var e=this._groups,t=0,r=e.length;t{});function yn(e,t){this._groups=e,this._parents=t}function SK(){return new yn([[document.documentElement]],$0)}function Kbe(){return this}var $0,Ku,ls=Se(()=>{oX();sX();lX();cX();mX();xX();b_();wX();DX();NX();AX();MX();_X();FX();kX();BX();RX();zX();HX();D_();VX();JX();jX();tK();nK();oK();sK();lK();cK();mK();hK();vK();wK();DK();$0=[null];yn.prototype=SK.prototype={constructor:yn,select:iX,selectAll:aX,selectChild:uX,selectChildren:fX,filter:pX,data:vX,enter:dX,exit:yX,join:bX,merge:SX,selection:Kbe,order:EX,sort:CX,call:TX,nodes:OX,node:IX,size:LX,empty:PX,each:qX,attr:UX,style:$X,property:WX,classed:KX,text:QX,html:eK,raise:rK,lower:iK,append:aK,insert:uK,remove:fK,clone:pK,datum:dK,on:gK,dispatch:yK,[Symbol.iterator]:bK};Ku=SK});function Ta(e){return typeof e=="string"?new yn([[document.querySelector(e)]],[document.documentElement]):new yn([[e]],$0)}var N_=Se(()=>{ls()});function NK(e){return Ta(vc(e).call(document.documentElement))}var EK=Se(()=>{q0();N_()});function P2(){return new E_}function E_(){this._="@"+(++Jbe).toString(36)}var Jbe,AK=Se(()=>{Jbe=0;E_.prototype=P2.prototype={constructor:E_,get:function(e){for(var t=this._;!(t in e);)if(!(e=e.parentNode))return;return e[t]},set:function(e,t){return e[this._]=t},remove:function(e){return this._ in e&&delete e[this._]},toString:function(){return this._}}});function R2(e){let t;for(;t=e.sourceEvent;)e=t;return e}var A_=Se(()=>{});function fs(e,t){if(e=R2(e),t===void 0&&(t=e.currentTarget),t){var r=t.ownerSVGElement||t;if(r.createSVGPoint){var n=r.createSVGPoint();return n.x=e.clientX,n.y=e.clientY,n=n.matrixTransform(t.getScreenCTM().inverse()),[n.x,n.y]}if(t.getBoundingClientRect){var i=t.getBoundingClientRect();return[e.clientX-i.left-t.clientLeft,e.clientY-i.top-t.clientTop]}}return[e.pageX,e.pageY]}var C_=Se(()=>{A_()});function CK(e,t){return e.target&&(e=R2(e),t===void 0&&(t=e.currentTarget),e=e.touches||[e]),Array.from(e,r=>fs(r,t))}var MK=Se(()=>{C_();A_()});function TK(e){return typeof e=="string"?new yn([document.querySelectorAll(e)],[document.documentElement]):new yn([z0(e)],$0)}var _K=Se(()=>{x_();ls()});var js={};Cu(js,{create:()=>NK,creator:()=>vc,local:()=>P2,matcher:()=>Ch,namespace:()=>Xu,namespaces:()=>R0,pointer:()=>fs,pointers:()=>CK,select:()=>Ta,selectAll:()=>TK,selection:()=>Ku,selector:()=>xc,selectorAll:()=>Ah,style:()=>Xl,window:()=>Mh});var Kn=Se(()=>{EK();q0();AK();U0();F2();O2();C_();MK();N_();_K();ls();I2();y_();D_();B2()});function z2(e){e.preventDefault(),e.stopImmediatePropagation()}var q2,OK=Se(()=>{q2={capture:!0,passive:!1}});function M_(e){var t=e.document.documentElement,r=Ta(e).on("dragstart.drag",z2,q2);"onselectstart"in t?r.on("selectstart.drag",z2,q2):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect="none")}function T_(e,t){var r=e.document.documentElement,n=Ta(e).on("dragstart.drag",null);t&&(n.on("click.drag",z2,q2),setTimeout(function(){n.on("click.drag",null)},0)),"onselectstart"in r?n.on("selectstart.drag",null):(r.style.MozUserSelect=r.__noselect,delete r.__noselect)}var FK=Se(()=>{Kn();OK()});var IK=Se(()=>{FK()});function X0(){return um||(BK(Qbe),um=Y0.now()+$2)}function Qbe(){um=0}function Z0(){this._call=this._time=this._next=null}function W2(e,t,r){var n=new Z0;return n.restart(e,t,r),n}function PK(){X0(),++Th;for(var e=U2,t;e;)(t=um-e._time)>=0&&e._call.call(void 0,t),e=e._next;--Th}function kK(){um=(H2=Y0.now())+$2,Th=V0=0;try{PK()}finally{Th=0,eDe(),um=0}}function jbe(){var e=Y0.now(),t=e-H2;t>LK&&($2-=t,H2=e)}function eDe(){for(var e,t=U2,r,n=1/0;t;)t._call?(n>t._time&&(n=t._time),e=t,t=t._next):(r=t._next,t._next=null,t=e?e._next=r:U2=r);G0=e,__(n)}function __(e){if(!Th){V0&&(V0=clearTimeout(V0));var t=e-um;t>24?(e<1/0&&(V0=setTimeout(kK,e-Y0.now()-$2)),W0&&(W0=clearInterval(W0))):(W0||(H2=Y0.now(),W0=setInterval(jbe,LK)),Th=1,BK(kK))}}var Th,V0,W0,LK,U2,G0,H2,um,$2,Y0,BK,O_=Se(()=>{Th=0,V0=0,W0=0,LK=1e3,H2=0,um=0,$2=0,Y0=typeof performance=="object"&&performance.now?performance:Date,BK=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};Z0.prototype=W2.prototype={constructor:Z0,restart:function(e,t,r){if(typeof e!="function")throw new TypeError("callback is not a function");r=(r==null?X0():+r)+(t==null?0:+t),!this._next&&G0!==this&&(G0?G0._next=this:U2=this,G0=this),this._call=e,this._time=r,__()},stop:function(){this._call&&(this._call=null,this._time=1/0,__())}}});function V2(e,t,r){var n=new Z0;return t=t==null?0:+t,n.restart(i=>{n.stop(),e(i+t)},t,r),n}var RK=Se(()=>{O_()});var F_=Se(()=>{O_();RK()});function yc(e,t,r,n,i,o){var l=e.__transition;if(!l)e.__transition={};else if(r in l)return;nDe(e,r,{name:t,index:n,group:i,on:tDe,tween:rDe,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:UK})}function J0(e,t){var r=Ei(e,t);if(r.state>UK)throw new Error("too late; already scheduled");return r}function to(e,t){var r=Ei(e,t);if(r.state>G2)throw new Error("too late; already running");return r}function Ei(e,t){var r=e.__transition;if(!r||!(r=r[t]))throw new Error("transition not found");return r}function nDe(e,t,r){var n=e.__transition,i;n[t]=r,r.timer=W2(o,0,r.time);function o(u){r.state=qK,r.timer.restart(l,r.delay,r.time),r.delay<=u&&l(u-r.delay)}function l(u){var f,p,h,g;if(r.state!==qK)return a();for(f in n)if(g=n[f],g.name===r.name){if(g.state===G2)return V2(l);g.state===zK?(g.state=K0,g.timer.stop(),g.on.call("interrupt",e,e.__data__,g.index,g.group),delete n[f]):+f{v_();F_();tDe=P0("start","end","cancel","interrupt"),rDe=[],UK=0,qK=1,Y2=2,G2=3,zK=4,Z2=5,K0=6});function lm(e,t){var r=e.__transition,n,i,o=!0,l;if(r){t=t==null?null:t+"";for(l in r){if((n=r[l]).name!==t){o=!1;continue}i=n.state>Y2&&n.state{jo()});function HK(e){return this.each(function(){lm(this,e)})}var $K=Se(()=>{I_()});function iDe(e,t){var r,n;return function(){var i=to(this,e),o=i.tween;if(o!==r){n=r=o;for(var l=0,s=n.length;l{jo()});function X2(e,t){var r;return(typeof t=="number"?Pi:t instanceof ss?pc:(r=ss(t))?(t=r,pc):gh)(e,t)}var k_=Se(()=>{Qs();Hl()});function aDe(e){return function(){this.removeAttribute(e)}}function sDe(e){return function(){this.removeAttributeNS(e.space,e.local)}}function uDe(e,t,r){var n,i=r+"",o;return function(){var l=this.getAttribute(e);return l===i?null:l===n?o:o=t(n=l,r)}}function lDe(e,t,r){var n,i=r+"",o;return function(){var l=this.getAttributeNS(e.space,e.local);return l===i?null:l===n?o:o=t(n=l,r)}}function fDe(e,t,r){var n,i,o;return function(){var l,s=r(this),a;return s==null?void this.removeAttribute(e):(l=this.getAttribute(e),a=s+"",l===a?null:l===n&&a===i?o:(i=a,o=t(n=l,s)))}}function cDe(e,t,r){var n,i,o;return function(){var l,s=r(this),a;return s==null?void this.removeAttributeNS(e.space,e.local):(l=this.getAttributeNS(e.space,e.local),a=s+"",l===a?null:l===n&&a===i?o:(i=a,o=t(n=l,s)))}}function VK(e,t){var r=Xu(e),n=r==="transform"?e2:X2;return this.attrTween(e,typeof t=="function"?(r.local?cDe:fDe)(r,n,_h(this,"attr."+e,t)):t==null?(r.local?sDe:aDe)(r):(r.local?lDe:uDe)(r,n,t))}var GK=Se(()=>{Hl();Kn();Q0();k_()});function pDe(e,t){return function(r){this.setAttribute(e,t.call(this,r))}}function mDe(e,t){return function(r){this.setAttributeNS(e.space,e.local,t.call(this,r))}}function dDe(e,t){var r,n;function i(){var o=t.apply(this,arguments);return o!==n&&(r=(n=o)&&mDe(e,o)),r}return i._value=t,i}function hDe(e,t){var r,n;function i(){var o=t.apply(this,arguments);return o!==n&&(r=(n=o)&&pDe(e,o)),r}return i._value=t,i}function YK(e,t){var r="attr."+e;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(t==null)return this.tween(r,null);if(typeof t!="function")throw new Error;var n=Xu(e);return this.tween(r,(n.local?dDe:hDe)(n,t))}var ZK=Se(()=>{Kn()});function gDe(e,t){return function(){J0(this,e).delay=+t.apply(this,arguments)}}function vDe(e,t){return t=+t,function(){J0(this,e).delay=t}}function XK(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?gDe:vDe)(t,e)):Ei(this.node(),t).delay}var KK=Se(()=>{jo()});function xDe(e,t){return function(){to(this,e).duration=+t.apply(this,arguments)}}function yDe(e,t){return t=+t,function(){to(this,e).duration=t}}function JK(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?xDe:yDe)(t,e)):Ei(this.node(),t).duration}var QK=Se(()=>{jo()});function wDe(e,t){if(typeof t!="function")throw new Error;return function(){to(this,e).ease=t}}function jK(e){var t=this._id;return arguments.length?this.each(wDe(t,e)):Ei(this.node(),t).ease}var eJ=Se(()=>{jo()});function bDe(e,t){return function(){var r=t.apply(this,arguments);if(typeof r!="function")throw new Error;to(this,e).ease=r}}function tJ(e){if(typeof e!="function")throw new Error;return this.each(bDe(this._id,e))}var rJ=Se(()=>{jo()});function nJ(e){typeof e!="function"&&(e=Ch(e));for(var t=this._groups,r=t.length,n=new Array(r),i=0;i{Kn();fm()});function oJ(e){if(e._id!==this._id)throw new Error;for(var t=this._groups,r=e._groups,n=t.length,i=r.length,o=Math.min(n,i),l=new Array(n),s=0;s{fm()});function DDe(e){return(e+"").trim().split(/^|\s+/).every(function(t){var r=t.indexOf(".");return r>=0&&(t=t.slice(0,r)),!t||t==="start"})}function SDe(e,t,r){var n,i,o=DDe(t)?J0:to;return function(){var l=o(this,e),s=l.on;s!==n&&(i=(n=s).copy()).on(t,r),l.on=i}}function sJ(e,t){var r=this._id;return arguments.length<2?Ei(this.node(),r).on.on(e):this.each(SDe(r,e,t))}var uJ=Se(()=>{jo()});function NDe(e){return function(){var t=this.parentNode;for(var r in this.__transition)if(+r!==e)return;t&&t.removeChild(this)}}function lJ(){return this.on("end.remove",NDe(this._id))}var fJ=Se(()=>{});function cJ(e){var t=this._name,r=this._id;typeof e!="function"&&(e=xc(e));for(var n=this._groups,i=n.length,o=new Array(i),l=0;l{Kn();fm();jo()});function mJ(e){var t=this._name,r=this._id;typeof e!="function"&&(e=Ah(e));for(var n=this._groups,i=n.length,o=[],l=[],s=0;s{Kn();fm();jo()});function hJ(){return new EDe(this._groups,this._parents)}var EDe,gJ=Se(()=>{Kn();EDe=Ku.prototype.constructor});function ADe(e,t){var r,n,i;return function(){var o=Xl(this,e),l=(this.style.removeProperty(e),Xl(this,e));return o===l?null:o===r&&l===n?i:i=t(r=o,n=l)}}function vJ(e){return function(){this.style.removeProperty(e)}}function CDe(e,t,r){var n,i=r+"",o;return function(){var l=Xl(this,e);return l===i?null:l===n?o:o=t(n=l,r)}}function MDe(e,t,r){var n,i,o;return function(){var l=Xl(this,e),s=r(this),a=s+"";return s==null&&(a=s=(this.style.removeProperty(e),Xl(this,e))),l===a?null:l===n&&a===i?o:(i=a,o=t(n=l,s))}}function TDe(e,t){var r,n,i,o="style."+t,l="end."+o,s;return function(){var a=to(this,e),u=a.on,f=a.value[o]==null?s||(s=vJ(t)):void 0;(u!==r||i!==f)&&(n=(r=u).copy()).on(l,i=f),a.on=n}}function xJ(e,t,r){var n=(e+="")=="transform"?jD:X2;return t==null?this.styleTween(e,ADe(e,n)).on("end.style."+e,vJ(e)):typeof t=="function"?this.styleTween(e,MDe(e,n,_h(this,"style."+e,t))).each(TDe(this._id,e)):this.styleTween(e,CDe(e,n,t),r).on("end.style."+e,null)}var yJ=Se(()=>{Hl();Kn();jo();Q0();k_()});function _De(e,t,r){return function(n){this.style.setProperty(e,t.call(this,n),r)}}function ODe(e,t,r){var n,i;function o(){var l=t.apply(this,arguments);return l!==i&&(n=(i=l)&&_De(e,l,r)),n}return o._value=t,o}function wJ(e,t,r){var n="style."+(e+="");if(arguments.length<2)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!="function")throw new Error;return this.tween(n,ODe(e,t,r??""))}var bJ=Se(()=>{});function FDe(e){return function(){this.textContent=e}}function IDe(e){return function(){var t=e(this);this.textContent=t??""}}function DJ(e){return this.tween("text",typeof e=="function"?IDe(_h(this,"text",e)):FDe(e==null?"":e+""))}var SJ=Se(()=>{Q0()});function kDe(e){return function(t){this.textContent=e.call(this,t)}}function LDe(e){var t,r;function n(){var i=e.apply(this,arguments);return i!==r&&(t=(r=i)&&kDe(i)),t}return n._value=e,n}function NJ(e){var t="text";if(arguments.length<1)return(t=this.tween(t))&&t._value;if(e==null)return this.tween(t,null);if(typeof e!="function")throw new Error;return this.tween(t,LDe(e))}var EJ=Se(()=>{});function AJ(){for(var e=this._name,t=this._id,r=K2(),n=this._groups,i=n.length,o=0;o{fm();jo()});function MJ(){var e,t,r=this,n=r._id,i=r.size();return new Promise(function(o,l){var s={value:l},a={value:function(){--i===0&&o()}};r.each(function(){var u=to(this,n),f=u.on;f!==e&&(t=(e=f).copy(),t._.cancel.push(s),t._.interrupt.push(s),t._.end.push(a)),u.on=t}),i===0&&o()})}var TJ=Se(()=>{jo()});function Io(e,t,r,n){this._groups=e,this._parents=t,this._name=r,this._id=n}function _J(e){return Ku().transition(e)}function K2(){return++BDe}var BDe,Kl,fm=Se(()=>{Kn();GK();ZK();KK();QK();eJ();rJ();iJ();aJ();uJ();fJ();pJ();dJ();gJ();yJ();bJ();SJ();EJ();CJ();Q0();TJ();BDe=0;Kl=Ku.prototype;Io.prototype=_J.prototype={constructor:Io,select:cJ,selectAll:mJ,selectChild:Kl.selectChild,selectChildren:Kl.selectChildren,filter:nJ,merge:oJ,selection:hJ,transition:AJ,call:Kl.call,nodes:Kl.nodes,node:Kl.node,size:Kl.size,empty:Kl.empty,each:Kl.each,on:sJ,attr:VK,attrTween:YK,style:xJ,styleTween:wJ,text:DJ,textTween:NJ,remove:lJ,tween:WK,delay:XK,duration:JK,ease:jK,easeVarying:tJ,end:MJ,[Symbol.iterator]:Kl[Symbol.iterator]}});function J2(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var OJ=Se(()=>{});var FJ=Se(()=>{OJ()});function RDe(e,t){for(var r;!(r=e.__transition)||!(r=r[t]);)if(!(e=e.parentNode))throw new Error(`transition ${t} not found`);return r}function IJ(e){var t,r;e instanceof Io?(t=e._id,e=e._name):(t=K2(),(r=PDe).time=X0(),e=e==null?null:e+"");for(var n=this._groups,i=n.length,o=0;o{fm();jo();FJ();F_();PDe={time:null,delay:0,duration:250,ease:J2}});var LJ=Se(()=>{Kn();$K();kJ();Ku.prototype.interrupt=HK;Ku.prototype.transition=IJ});var BJ=Se(()=>{LJ();I_()});var j0,PJ=Se(()=>{j0=e=>()=>e});function L_(e,{sourceEvent:t,target:r,transform:n,dispatch:i}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},transform:{value:n,enumerable:!0,configurable:!0},_:{value:i}})}var RJ=Se(()=>{});function cs(e,t,r){this.k=e,this.x=t,this.y=r}function Q2(e){for(;!e.__zoom;)if(!(e=e.parentNode))return Oh;return e.__zoom}var Oh,B_=Se(()=>{cs.prototype={constructor:cs,scale:function(e){return e===1?this:new cs(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new cs(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};Oh=new cs(1,0,0);Q2.prototype=cs.prototype});function j2(e){e.stopImmediatePropagation()}function Fh(e){e.preventDefault(),e.stopImmediatePropagation()}var qJ=Se(()=>{});function qDe(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function zDe(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute("viewBox")?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function zJ(){return this.__zoom||Oh}function UDe(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function HDe(){return navigator.maxTouchPoints||"ontouchstart"in this}function $De(e,t,r){var n=e.invertX(t[0][0])-r[0][0],i=e.invertX(t[1][0])-r[1][0],o=e.invertY(t[0][1])-r[0][1],l=e.invertY(t[1][1])-r[1][1];return e.translate(i>n?(n+i)/2:Math.min(0,n)||Math.max(0,i),l>o?(o+l)/2:Math.min(0,o)||Math.max(0,l))}function UJ(){var e=qDe,t=zDe,r=$De,n=UDe,i=HDe,o=[0,1/0],l=[[-1/0,-1/0],[1/0,1/0]],s=250,a=t2,u=P0("start","zoom","end"),f,p,h,g=500,x=150,v=0,S=10;function D(V){V.property("__zoom",zJ).on("wheel.zoom",F,{passive:!1}).on("mousedown.zoom",I).on("dblclick.zoom",B).filter(i).on("touchstart.zoom",L).on("touchmove.zoom",q).on("touchend.zoom touchcancel.zoom",R).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}D.transform=function(V,X,U,H){var ee=V.selection?V.selection():V;ee.property("__zoom",zJ),V!==ee?T(V,X,U,H):ee.interrupt().each(function(){N(this,arguments).event(H).start().zoom(null,typeof X=="function"?X.apply(this,arguments):X).end()})},D.scaleBy=function(V,X,U,H){D.scaleTo(V,function(){var ee=this.__zoom.k,Z=typeof X=="function"?X.apply(this,arguments):X;return ee*Z},U,H)},D.scaleTo=function(V,X,U,H){D.transform(V,function(){var ee=t.apply(this,arguments),Z=this.__zoom,pe=U==null?M(ee):typeof U=="function"?U.apply(this,arguments):U,we=Z.invert(pe),he=typeof X=="function"?X.apply(this,arguments):X;return r(E(C(Z,he),pe,we),ee,l)},U,H)},D.translateBy=function(V,X,U,H){D.transform(V,function(){return r(this.__zoom.translate(typeof X=="function"?X.apply(this,arguments):X,typeof U=="function"?U.apply(this,arguments):U),t.apply(this,arguments),l)},null,H)},D.translateTo=function(V,X,U,H,ee){D.transform(V,function(){var Z=t.apply(this,arguments),pe=this.__zoom,we=H==null?M(Z):typeof H=="function"?H.apply(this,arguments):H;return r(Oh.translate(we[0],we[1]).scale(pe.k).translate(typeof X=="function"?-X.apply(this,arguments):-X,typeof U=="function"?-U.apply(this,arguments):-U),Z,l)},H,ee)};function C(V,X){return X=Math.max(o[0],Math.min(o[1],X)),X===V.k?V:new cs(X,V.x,V.y)}function E(V,X,U){var H=X[0]-U[0]*V.k,ee=X[1]-U[1]*V.k;return H===V.x&&ee===V.y?V:new cs(V.k,H,ee)}function M(V){return[(+V[0][0]+ +V[1][0])/2,(+V[0][1]+ +V[1][1])/2]}function T(V,X,U,H){V.on("start.zoom",function(){N(this,arguments).event(H).start()}).on("interrupt.zoom end.zoom",function(){N(this,arguments).event(H).end()}).tween("zoom",function(){var ee=this,Z=arguments,pe=N(ee,Z).event(H),we=t.apply(ee,Z),he=U==null?M(we):typeof U=="function"?U.apply(ee,Z):U,oe=Math.max(we[1][0]-we[0][0],we[1][1]-we[0][1]),ve=ee.__zoom,Oe=typeof X=="function"?X.apply(ee,Z):X,De=a(ve.invert(he).concat(oe/ve.k),Oe.invert(he).concat(oe/Oe.k));return function(Me){if(Me===1)Me=Oe;else{var le=De(Me),ne=oe/le[2];Me=new cs(ne,he[0]-le[0]*ne,he[1]-le[1]*ne)}pe.zoom(null,Me)}})}function N(V,X,U){return!U&&V.__zooming||new O(V,X)}function O(V,X){this.that=V,this.args=X,this.active=0,this.sourceEvent=null,this.extent=t.apply(V,X),this.taps=0}O.prototype={event:function(V){return V&&(this.sourceEvent=V),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(V,X){return this.mouse&&V!=="mouse"&&(this.mouse[1]=X.invert(this.mouse[0])),this.touch0&&V!=="touch"&&(this.touch0[1]=X.invert(this.touch0[0])),this.touch1&&V!=="touch"&&(this.touch1[1]=X.invert(this.touch1[0])),this.that.__zoom=X,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(V){var X=Ta(this.that).datum();u.call(V,this.that,new L_(V,{sourceEvent:this.sourceEvent,target:D,type:V,transform:this.that.__zoom,dispatch:u}),X)}};function F(V,...X){if(!e.apply(this,arguments))return;var U=N(this,X).event(V),H=this.__zoom,ee=Math.max(o[0],Math.min(o[1],H.k*Math.pow(2,n.apply(this,arguments)))),Z=fs(V);if(U.wheel)(U.mouse[0][0]!==Z[0]||U.mouse[0][1]!==Z[1])&&(U.mouse[1]=H.invert(U.mouse[0]=Z)),clearTimeout(U.wheel);else{if(H.k===ee)return;U.mouse=[Z,H.invert(Z)],lm(this),U.start()}Fh(V),U.wheel=setTimeout(pe,x),U.zoom("mouse",r(E(C(H,ee),U.mouse[0],U.mouse[1]),U.extent,l));function pe(){U.wheel=null,U.end()}}function I(V,...X){if(h||!e.apply(this,arguments))return;var U=V.currentTarget,H=N(this,X,!0).event(V),ee=Ta(V.view).on("mousemove.zoom",he,!0).on("mouseup.zoom",oe,!0),Z=fs(V,U),pe=V.clientX,we=V.clientY;M_(V.view),j2(V),H.mouse=[Z,this.__zoom.invert(Z)],lm(this),H.start();function he(ve){if(Fh(ve),!H.moved){var Oe=ve.clientX-pe,De=ve.clientY-we;H.moved=Oe*Oe+De*De>v}H.event(ve).zoom("mouse",r(E(H.that.__zoom,H.mouse[0]=fs(ve,U),H.mouse[1]),H.extent,l))}function oe(ve){ee.on("mousemove.zoom mouseup.zoom",null),T_(ve.view,H.moved),Fh(ve),H.event(ve).end()}}function B(V,...X){if(e.apply(this,arguments)){var U=this.__zoom,H=fs(V.changedTouches?V.changedTouches[0]:V,this),ee=U.invert(H),Z=U.k*(V.shiftKey?.5:2),pe=r(E(C(U,Z),H,ee),t.apply(this,X),l);Fh(V),s>0?Ta(this).transition().duration(s).call(T,pe,H,V):Ta(this).call(D.transform,pe,H,V)}}function L(V,...X){if(e.apply(this,arguments)){var U=V.touches,H=U.length,ee=N(this,X,V.changedTouches.length===H).event(V),Z,pe,we,he;for(j2(V),pe=0;pe{v_();IK();Hl();Kn();BJ();PJ();RJ();B_();qJ()});var $J={};Cu($J,{ZoomTransform:()=>cs,zoom:()=>UJ,zoomIdentity:()=>Oh,zoomTransform:()=>Q2});var WJ=Se(()=>{HJ();B_()});var tQ=st((LSt,P_)=>{"use strict";var Ih=typeof Reflect=="object"?Reflect:null,VJ=Ih&&typeof Ih.apply=="function"?Ih.apply:function(t,r,n){return Function.prototype.apply.call(t,r,n)},eS;Ih&&typeof Ih.ownKeys=="function"?eS=Ih.ownKeys:Object.getOwnPropertySymbols?eS=function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:eS=function(t){return Object.getOwnPropertyNames(t)};function WDe(e){console&&console.warn&&console.warn(e)}var YJ=Number.isNaN||function(t){return t!==t};function nn(){nn.init.call(this)}P_.exports=nn;P_.exports.once=ZDe;nn.EventEmitter=nn;nn.prototype._events=void 0;nn.prototype._eventsCount=0;nn.prototype._maxListeners=void 0;var GJ=10;function tS(e){if(typeof e!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}Object.defineProperty(nn,"defaultMaxListeners",{enumerable:!0,get:function(){return GJ},set:function(e){if(typeof e!="number"||e<0||YJ(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");GJ=e}});nn.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};nn.prototype.setMaxListeners=function(t){if(typeof t!="number"||t<0||YJ(t))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+t+".");return this._maxListeners=t,this};function ZJ(e){return e._maxListeners===void 0?nn.defaultMaxListeners:e._maxListeners}nn.prototype.getMaxListeners=function(){return ZJ(this)};nn.prototype.emit=function(t){for(var r=[],n=1;n0&&(l=r[0]),l instanceof Error)throw l;var s=new Error("Unhandled error."+(l?" ("+l.message+")":""));throw s.context=l,s}var a=o[t];if(a===void 0)return!1;if(typeof a=="function")VJ(a,this,r);else for(var u=a.length,f=jJ(a,u),n=0;n0&&l.length>i&&!l.warned){l.warned=!0;var s=new Error("Possible EventEmitter memory leak detected. "+l.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");s.name="MaxListenersExceededWarning",s.emitter=e,s.type=t,s.count=l.length,WDe(s)}return e}nn.prototype.addListener=function(t,r){return XJ(this,t,r,!1)};nn.prototype.on=nn.prototype.addListener;nn.prototype.prependListener=function(t,r){return XJ(this,t,r,!0)};function VDe(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function KJ(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},i=VDe.bind(n);return i.listener=r,n.wrapFn=i,i}nn.prototype.once=function(t,r){return tS(r),this.on(t,KJ(this,t,r)),this};nn.prototype.prependOnceListener=function(t,r){return tS(r),this.prependListener(t,KJ(this,t,r)),this};nn.prototype.removeListener=function(t,r){var n,i,o,l,s;if(tS(r),i=this._events,i===void 0)return this;if(n=i[t],n===void 0)return this;if(n===r||n.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete i[t],i.removeListener&&this.emit("removeListener",t,n.listener||r));else if(typeof n!="function"){for(o=-1,l=n.length-1;l>=0;l--)if(n[l]===r||n[l].listener===r){s=n[l].listener,o=l;break}if(o<0)return this;o===0?n.shift():GDe(n,o),n.length===1&&(i[t]=n[0]),i.removeListener!==void 0&&this.emit("removeListener",t,s||r)}return this};nn.prototype.off=nn.prototype.removeListener;nn.prototype.removeAllListeners=function(t){var r,n,i;if(n=this._events,n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[t]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[t]),this;if(arguments.length===0){var o=Object.keys(n),l;for(i=0;i=0;i--)this.removeListener(t,r[i]);return this};function JJ(e,t,r){var n=e._events;if(n===void 0)return[];var i=n[t];return i===void 0?[]:typeof i=="function"?r?[i.listener||i]:[i]:r?YDe(i):jJ(i,i.length)}nn.prototype.listeners=function(t){return JJ(this,t,!0)};nn.prototype.rawListeners=function(t){return JJ(this,t,!1)};nn.listenerCount=function(e,t){return typeof e.listenerCount=="function"?e.listenerCount(t):QJ.call(e,t)};nn.prototype.listenerCount=QJ;function QJ(e){var t=this._events;if(t!==void 0){var r=t[e];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}nn.prototype.eventNames=function(){return this._eventsCount>0?eS(this._events):[]};function jJ(e,t){for(var r=new Array(t),n=0;n{"use strict";Object.defineProperty(R_,"__esModule",{value:!0});var KDe=(l0(),Wn(u0)),JDe=(Kn(),Wn(js));function QDe(e){let t=e.owner.meta.xScale,r=e.owner.meta.yScale,n=(0,KDe.line)().x(function(i){return i[0]}).y(function(i){return i[1]});return function(i){i.each(function(){let l=(0,JDe.select)(this).selectAll("g.annotations").data(function(x){return x.annotations||[]}),s=l.enter().append("g").attr("class","annotations"),a=r.range(),u=t.range(),f=l.merge(s).selectAll("path").data(function(x){return"x"in x?[[[0,a[0]],[0,a[1]]]]:[[[u[0],0],[u[1],0]]]}),p=f.enter().append("path");f.merge(p).attr("stroke","#eee").attr("d",n),f.exit().remove();let h=l.merge(s).selectAll("text").data(function(x){return[{text:x.text||"",hasX:"x"in x}]}),g=h.enter().append("text");h.merge(g).text(function(x){return x.text}).attr("y",function(x){return x.hasX?3:0}).attr("x",function(x){return x.hasX?0:3}).attr("dy",function(x){return x.hasX?5:-5}).attr("text-anchor",function(x){return x.hasX?"end":""}).attr("transform",function(x){return x.hasX?"rotate(-90)":""}),h.exit().remove(),l.merge(s).attr("transform",function(x){return"x"in x?"translate("+t(x.x)+", 0)":"translate(0, "+r(x.y)+")"}),l.exit().remove()})}}R_.default=QDe});var kh=st(tx=>{"use strict";Object.defineProperty(tx,"__esModule",{value:!0});tx.registerGraphType=void 0;var jDe=(Qs(),Wn($D)),ex={COLORS:["steelblue","red","#05b378","orange","#4040e8","yellow","brown","magenta","cyan"].map(function(e){return(0,jDe.hsl)(e)}),DEFAULT_WIDTH:550,DEFAULT_HEIGHT:350,DEFAULT_ITERATIONS:null,TIP_X_EPS:1,MAX_ITERATIONS:0,graphTypes:{}};ex.MAX_ITERATIONS=ex.DEFAULT_WIDTH*10;function e2e(e,t){if(Object.hasOwn(ex.graphTypes,e))throw new Error(`registerGraphType: graphType ${e} is already registered.`);ex.graphTypes[e]=t}tx.registerGraphType=e2e;tx.default=ex});var Ju=st(rx=>{"use strict";var t2e=rx&&rx.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(rx,"__esModule",{value:!0});var nQ=t2e(kh()),r2e={linspace:function(e,t,r){let n=(t-e)/(r-1);return Array.from({length:r},(i,o)=>e+n*o)},logspace:function(e,t,r){return this.linspace(e,t,r).map(n=>Math.pow(10,n))},isValidNumber:function(e){return typeof e=="number"&&!isNaN(e)},space:function(e,t,r){let n=t[0],i=t[1];return e.type==="log"?this.logspace(Math.log10(n),Math.log10(i),r):this.linspace(n,i,r)},getterSetter:function(e,t){let r=this;this[t]=function(n){return arguments.length?(e[t]=n,r):e[t]}},sgn:function(e){return e<0?-1:e>0?1:0},clamp:function(e,t,r){return er?r:e},color:function(e,t){let r=t%nQ.default.COLORS.length;return e.color||nQ.default.COLORS[r].hex()},infinity:function(){return 9007199254740991}};rx.default=r2e});var q_=st((qSt,iQ)=>{iQ.exports={EOF:0,DELIMITER:1,NUMBER:2,STRING:3,SYMBOL:4}});var U_=st((zSt,aQ)=>{var cm=q_(),n2e={n:` +`,f:"\f",r:"\r",t:" ",v:"\v","'":"'",'"':'"'},i2e={",":!0,"(":!0,")":!0,"[":!0,"]":!0,";":!0,"~":!0,"!":!0,"+":!0,"-":!0,"*":!0,"/":!0,"%":!0,"^":!0,"**":!0,"|":!0,"&":!0,"^|":!0,"=":!0,":":!0,"?":!0,"||":!0,"&&":!0,xor:!0,"==":!0,"!=":!0,"===":!0,"!==":!0,"<":!0,">":!0,">=":!0,"<=":!0,">>>":!0,"<<":!0,">>":!0};function Jl(e){return e>="0"&&e<="9"}function oQ(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"||e==="$"||e==="_"}function o2e(e){return e===" "||e==="\r"||e===" "||e===` +`||e==="\v"||e==="\xA0"}function z_(e){return i2e[e]}function a2e(e){return e==="'"||e==='"'}function wc(){}wc.prototype.throwError=function(e,t){t=typeof t>"u"?this.index:t;var r=new Error(e+" at index "+t);throw r.index=t,r.description=e,r};wc.prototype.lex=function(e){for(this.text=e,this.index=0,this.tokens=[];this.index=this.text.length))return this.text.charAt(this.index+e)};wc.prototype.consume=function(){var e=this.peek();return this.index+=1,e};wc.prototype.readNumber=function(){var e="";if(this.peek()===".")e+=this.consume(),Jl(this.peek())||this.throwError("number expected");else{for(;Jl(this.peek());)e+=this.consume();this.peek()==="."&&(e+=this.consume())}for(;Jl(this.peek());)e+=this.consume();if(this.peek()==="e"||this.peek()==="E")for(e+=this.consume(),Jl(this.peek())||this.peek()==="+"||this.peek()==="-"||this.throwError(),(this.peek()==="+"||this.peek()==="-")&&(e+=this.consume()),Jl(this.peek())||this.throwError("number expected");Jl(this.peek());)e+=this.consume();return e};wc.prototype.readIdentifier=function(){for(var e="";oQ(this.peek())||Jl(this.peek());)e+=this.consume();return e};wc.prototype.readString=function(){for(var e=this.consume(),t="",r;;){var n=this.consume();if(n||this.throwError("string is not closed"),r){if(n==="u"){var i=this.text.substring(this.index+1,this.index+5);i.match(/[\da-f]{4}/i)||this.throwError("invalid unicode escape"),this.index+=4,t+=String.fromCharCode(parseInt(i,16))}else{var o=n2e[n];o?t+=o:t+=n}r=!1}else{if(n===e)break;n==="\\"?r=!0:t+=n}}return t};aQ.exports=wc});var eu=st((USt,uQ)=>{function sQ(){}sQ.prototype.type="Node";uQ.exports=sQ});var $_=st((HSt,lQ)=>{var s2e=eu(),u2e={number:!0,string:!0,boolean:!0,undefined:!0,null:!0};function H_(e,t){if(!u2e[t])throw Error("unsupported type '"+t+"'");this.value=e,this.valueType=t}H_.prototype=Object.create(s2e.prototype);H_.prototype.type="ConstantNode";lQ.exports=H_});var V_=st(($St,fQ)=>{var l2e=eu();function W_(e,t){this.op=e,this.args=t||[]}W_.prototype=Object.create(l2e.prototype);W_.prototype.type="OperatorNode";fQ.exports=W_});var Y_=st((WSt,cQ)=>{var f2e=eu();function G_(e,t){this.op=e,this.argument=t}G_.prototype=Object.create(f2e.prototype);G_.prototype.type="UnaryNode";cQ.exports=G_});var X_=st((VSt,pQ)=>{var c2e=eu();function Z_(e){this.name=e}Z_.prototype=Object.create(c2e.prototype);Z_.prototype.type="SymbolNode";pQ.exports=Z_});var J_=st((GSt,mQ)=>{var p2e=eu();function K_(e,t){this.name=e,this.args=t}K_.prototype=Object.create(p2e.prototype);K_.prototype.type="FunctionNode";mQ.exports=K_});var j_=st((YSt,dQ)=>{var m2e=eu();function Q_(e){this.nodes=e}Q_.prototype=Object.create(m2e.prototype);Q_.prototype.type="ArrayNode";dQ.exports=Q_});var tO=st((ZSt,hQ)=>{var d2e=eu();function eO(e,t,r){this.condition=e,this.trueExpr=t,this.falseExpr=r}eO.prototype=Object.create(d2e.prototype);eO.prototype.type="ConditionalNode";hQ.exports=eO});var nO=st((XSt,gQ)=>{var h2e=eu();function rO(e,t){this.name=e,this.expr=t}rO.prototype=Object.create(h2e.prototype);rO.prototype.type="AssignmentNode";gQ.exports=rO});var oO=st((KSt,vQ)=>{var g2e=eu();function iO(e){this.blocks=e}iO.prototype=Object.create(g2e.prototype);iO.prototype.type="BlockNode";vQ.exports=iO});var wQ=st((JSt,yQ)=>{var pm=q_(),v2e=U_(),aO=$_(),_a=V_(),x2e=Y_(),xQ=X_(),y2e=J_(),w2e=j_(),b2e=tO(),D2e=nO(),S2e=oO();function Wr(){this.lexer=new v2e,this.tokens=null}Wr.prototype.current=function(){return this.tokens[0]};Wr.prototype.next=function(){return this.tokens[1]};Wr.prototype.peek=function(){if(this.tokens.length){for(var e=this.tokens[0],t=0;t=","<=",">","<")){var t=this.consume(),r=this.shift();return new _a(t.value,[e,r])}return e};Wr.prototype.shift=function(){var e=this.additive();if(this.peek(">>","<<",">>>")){var t=this.consume(),r=this.shift();return new _a(t.value,[e,r])}return e};Wr.prototype.additive=function(){for(var e=this.multiplicative();this.peek("+","-");){var t=this.consume();e=new _a(t.value,[e,this.multiplicative()])}return e};Wr.prototype.multiplicative=function(){for(var e,t,r=this.unary();this.peek("*","/","%");)e=this.consume(),r=new _a(e.value,[r,this.unary()]);return this.current().type===pm.SYMBOL||this.peek("(")||!(r.type instanceof aO)&&this.current().type===pm.NUMBER?(t=this.multiplicative(),new _a("*",[r,t])):r};Wr.prototype.unary=function(){if(this.peek("-","+","~")){var e=this.consume(),t=this.unary();return new x2e(e.value,t)}return this.pow()};Wr.prototype.pow=function(){var e=this.factorial();if(this.peek("^","**")){var t=this.consume(),r=this.unary();return new _a(t.value,[e,r])}return e};Wr.prototype.factorial=function(){var e=this.symbol();if(this.peek("!")){var t=this.consume();return new _a(t.value,[e])}return e};Wr.prototype.symbol=function(){var e=this.current();if(e.type===pm.SYMBOL){var t=this.consume(),r=this.functionCall(t);return r}return this.string()};Wr.prototype.functionCall=function(e){var t=e.value;if(this.peek("(")){this.consume();for(var r=[];!this.peek(")")&&!this.isEOF();)r.push(this.assignment()),this.peek(",")&&this.consume();return this.expect(")"),new y2e(t,r)}return new xQ(t)};Wr.prototype.string=function(){return this.current().type===pm.STRING?new aO(this.consume().value,"string"):this.array()};Wr.prototype.array=function(){if(this.peek("[")){this.consume();for(var e=[];!this.peek("]")&&!this.isEOF();)e.push(this.assignment()),this.peek(",")&&this.consume();return this.expect("]"),new w2e(e)}return this.number()};Wr.prototype.number=function(){var e=this.current();return e.type===pm.NUMBER?new aO(this.consume().value,"number"):this.parentheses()};Wr.prototype.parentheses=function(){var e=this.current();if(e.value==="("){this.consume();var t=this.assignment();return this.expect(")"),t}return this.end()};Wr.prototype.end=function(){var e=this.current();if(e.type!==pm.EOF)throw Error("unexpected end of expression")};yQ.exports=Wr});var DQ=st((QSt,bQ)=>{bQ.exports={ArrayNode:j_(),AssignmentNode:nO(),BlockNode:oO(),ConditionalNode:tO(),ConstantNode:$_(),FunctionNode:J_(),Node:eu(),OperatorNode:V_(),SymbolNode:X_(),UnaryNode:Y_()}});var nx=st((jSt,rS)=>{"use strict";rS.exports.Lexer=U_();rS.exports.Parser=wQ();rS.exports.nodeTypes=DQ()});var ix=st((eNt,_Q)=>{"use strict";var nS=Object.prototype.hasOwnProperty,TQ=Object.prototype.toString,SQ=Object.defineProperty,NQ=Object.getOwnPropertyDescriptor,EQ=function(t){return typeof Array.isArray=="function"?Array.isArray(t):TQ.call(t)==="[object Array]"},AQ=function(t){if(!t||TQ.call(t)!=="[object Object]")return!1;var r=nS.call(t,"constructor"),n=t.constructor&&t.constructor.prototype&&nS.call(t.constructor.prototype,"isPrototypeOf");if(t.constructor&&!r&&!n)return!1;var i;for(i in t);return typeof i>"u"||nS.call(t,i)},CQ=function(t,r){SQ&&r.name==="__proto__"?SQ(t,r.name,{enumerable:!0,configurable:!0,value:r.newValue,writable:!0}):t[r.name]=r.newValue},MQ=function(t,r){if(r==="__proto__")if(nS.call(t,r)){if(NQ)return NQ(t,r).value}else return;return t[r]};_Q.exports=function e(){var t,r,n,i,o,l,s=arguments[0],a=1,u=arguments.length,f=!1;for(typeof s=="boolean"&&(f=s,s=arguments[1]||{},a=2),(s==null||typeof s!="object"&&typeof s!="function")&&(s={});a{"use strict";OQ.exports=function(e){var t=this,r=[];this.rawify(this.options.rawArrayExpressionElements,function(){r=e.nodes.map(function(i){return t.next(i)})});var n="["+r.join(",")+"]";return this.options.raw?n:this.options.factory+"("+n+")"}});var kQ=st((rNt,IQ)=>{"use strict";IQ.exports=function(e){return'scope["'+e.name+'"] = '+this.next(e.expr)}});var BQ=st((nNt,LQ)=>{"use strict";LQ.exports=function(e){var t="!!("+this.next(e.condition)+")",r=this.next(e.trueExpr),n=this.next(e.falseExpr);return"("+t+" ? ("+r+") : ("+n+") )"}});var RQ=st((iNt,PQ)=>{"use strict";PQ.exports=function(e){return this.options.raw?e.value:this.options.factory+"("+e.value+")"}});var zQ=st((oNt,sO)=>{"use strict";var N2e=nx().nodeTypes.SymbolNode,qQ=function(e){return"$$mathCodegen.functionProxy("+this.next(new N2e(e.name))+', "'+e.name+'")'};sO.exports=function(e){var t=this,r=qQ.call(this,e),n=[];return this.rawify(this.options.rawCallExpressionElements,function(){n=e.args.map(function(i){return t.next(i)})}),r+"("+n.join(", ")+")"};sO.exports.functionProxy=qQ});var HQ=st((aNt,UQ)=>{"use strict";UQ.exports={"+":"add","-":"sub","*":"mul","/":"div","^":"pow","%":"mod","!":"factorial","|":"bitwiseOR","^|":"bitwiseXOR","&":"bitwiseAND","||":"logicalOR",xor:"logicalXOR","&&":"logicalAND","<":"lessThan",">":"greaterThan","<=":"lessEqualThan",">=":"greaterEqualThan","===":"strictlyEqual","==":"equal","!==":"strictlyNotEqual","!=":"notEqual",">>":"shiftRight","<<":"shiftLeft",">>>":"unsignedRightShift"}});var WQ=st((sNt,$Q)=>{"use strict";var E2e=HQ();$Q.exports=function(e){if(this.options.raw)return["("+this.next(e.args[0]),e.op,this.next(e.args[1])+")"].join(" ");var t=E2e[e.op];if(!t)throw TypeError("unidentified operator");return this.FunctionNode({name:t,args:e.args})}});var GQ=st((uNt,VQ)=>{"use strict";VQ.exports=function(e){var t=e.name;return'$$mathCodegen.getProperty("'+t+'", scope, ns)'}});var ZQ=st((lNt,YQ)=>{"use strict";YQ.exports={"+":"positive","-":"negative","~":"oneComplement"}});var JQ=st((fNt,KQ)=>{"use strict";var XQ=ZQ();KQ.exports=function(e){if(this.options.raw)return e.op+this.next(e.argument);if(!(e.op in XQ))throw new SyntaxError(e.op+" not implemented");var t=XQ[e.op];return this.FunctionNode({name:t,args:[e.argument]})}});var ej=st((cNt,jQ)=>{"use strict";var QQ=ix(),A2e={ArrayNode:FQ(),AssignmentNode:kQ(),ConditionalNode:BQ(),ConstantNode:RQ(),FunctionNode:zQ(),OperatorNode:WQ(),SymbolNode:GQ(),UnaryNode:JQ()},iS=function(e,t){this.owner=e,this.options=QQ({factory:"ns.factory",raw:!1,rawArrayExpressionElements:!0,rawCallExpressionElements:!1},t)};QQ(iS.prototype,A2e);iS.prototype.next=function(e){if(!(e.type in this))throw new TypeError("the node type "+e.type+" is not implemented");return this[e.type](e)};iS.prototype.rawify=function(e,t){var r=this.options.raw;e&&(this.options.raw=!0),t(),e&&(this.options.raw=r)};jQ.exports=iS});var rj=st((pNt,tj)=>{"use strict";var C2e=nx().Parser,M2e=ej(),T2e=ix();function oS(e,t){this.statements=[],this.defs=t||{},this.interpreter=new M2e(this,e)}oS.prototype.setDefs=function(e){return this.defs=T2e(this.defs,e),this};oS.prototype.compile=function(e){if(!e||!(typeof e=="object"||typeof e=="function"))throw TypeError("namespace must be an object");if(typeof e.factory!="function")throw TypeError("namespace.factory must be a function");this.defs.ns=e,this.defs.$$mathCodegen={getProperty:function(o,l,s){if(o in l)return l[o];if(o in s)return s[o];throw SyntaxError('symbol "'+o+'" is undefined')},functionProxy:function(o,l){if(typeof o!="function")throw SyntaxError('symbol "'+l+'" must be a function');return o}},this.defs.$$processScope=this.defs.$$processScope||function(){};var t=Object.keys(this.defs).map(function(o){return"var "+o+' = defs["'+o+'"]'});if(!this.statements.length)throw Error("there are no statements saved in this generator, make sure you parse an expression before compiling it");this.statements[this.statements.length-1]="return "+this.statements[this.statements.length-1];var r=this.statements.join(";"),n=t.join(` `)+` `+["return {"," eval: function (scope) {"," scope = scope || {}"," $$processScope(scope)"," "+r," },"," code: '"+r+"'","}"].join(` -`),i=new Function("defs",n);return i(this.defs)};iS.prototype.parse=function(e){var t=this,r=new N2e().parse(e);return this.statements=r.blocks.map(function(n){return t.interpreter.next(n)}),this};ZQ.exports=iS});var JQ=st((fNt,KQ)=>{"use strict";KQ.exports=XQ()});var jQ=st((cNt,QQ)=>{"use strict";QQ.exports=function(){var e=Object.create(Math);return e.factory=function(t){if(typeof t!="number")throw new TypeError("built-in math factory only accepts numbers");return Number(t)},e.add=function(t,r){return t+r},e.sub=function(t,r){return t-r},e.mul=function(t,r){return t*r},e.div=function(t,r){return t/r},e.mod=function(t,r){return t%r},e.factorial=function(t){for(var r=1,n=2;n<=t;n+=1)r*=n;return r},e.nthRoot=function(t,r){var n=r<0;if(n&&(r=-r),r===0)throw new Error("Root must be non-zero");if(t<0&&Math.abs(r)%2!==1)throw new Error("Root must be odd when a is negative.");if(t===0)return 0;if(!isFinite(t))return n?0:t;var i=Math.pow(Math.abs(t),1/r);return i=t<0?-i:i,n?1/i:i},e.logicalOR=function(t,r){return t||r},e.logicalXOR=function(t,r){return t!=r},e.logicalAND=function(t,r){return t&&r},e.bitwiseOR=function(t,r){return t|r},e.bitwiseXOR=function(t,r){return t^r},e.bitwiseAND=function(t,r){return t&r},e.lessThan=function(t,r){return tr},e.greaterEqualThan=function(t,r){return t>=r},e.equal=function(t,r){return t==r},e.strictlyEqual=function(t,r){return t===r},e.notEqual=function(t,r){return t!=r},e.strictlyNotEqual=function(t,r){return t!==r},e.shiftRight=function(t,r){return t>>r},e.shiftLeft=function(t,r){return t<>>r},e.negative=function(t){return-t},e.positive=function(t){return t},e}});var ej=st((pNt,nO)=>{"use strict";var C2e=JQ(),rO=jQ()();function M2e(e){Object.keys(e).forEach(function(t){var r=e[t];e[t]=rO.factory(r)})}nO.exports=function(e){return new C2e().setDefs({$$processScope:M2e}).parse(e).compile(rO)};nO.exports.math=rO});var rj=st((mNt,tj)=>{"use strict";tj.exports=ej()});var ij=st((dNt,nj)=>{"use strict";nj.exports=function(e){var t=this,r=[];this.rawify(this.options.rawArrayExpressionElements,function(){r=e.nodes.map(function(i){return t.next(i)})});var n="["+r.join(",")+"]";return this.options.raw?n:this.options.factory+"("+n+")"}});var aj=st((hNt,oj)=>{"use strict";oj.exports=function(e){return'scope["'+e.name+'"] = '+this.next(e.expr)}});var uj=st((gNt,sj)=>{"use strict";sj.exports=function(e){var t="!!("+this.next(e.condition)+")",r=this.next(e.trueExpr),n=this.next(e.falseExpr);return"("+t+" ? ("+r+") : ("+n+") )"}});var fj=st((vNt,lj)=>{"use strict";lj.exports=function(e){return this.options.raw?e.value:this.options.factory+"("+e.value+")"}});var pj=st((xNt,iO)=>{"use strict";var T2e=ex().nodeTypes.SymbolNode,cj=function(e){return"$$mathCodegen.functionProxy("+this.next(new T2e(e.name))+', "'+e.name+'")'};iO.exports=function(e){var t=this,r=cj.call(this,e),n=[];return this.rawify(this.options.rawCallExpressionElements,function(){n=e.args.map(function(i){return t.next(i)})}),r+"("+n.join(", ")+")"};iO.exports.functionProxy=cj});var dj=st((yNt,mj)=>{"use strict";mj.exports={"+":"add","-":"sub","*":"mul","/":"div","^":"pow","%":"mod","!":"factorial","|":"bitwiseOR","^|":"bitwiseXOR","&":"bitwiseAND","||":"logicalOR",xor:"logicalXOR","&&":"logicalAND","<":"lessThan",">":"greaterThan","<=":"lessEqualThan",">=":"greaterEqualThan","===":"strictlyEqual","==":"equal","!==":"strictlyNotEqual","!=":"notEqual",">>":"shiftRight","<<":"shiftLeft",">>>":"unsignedRightShift"}});var gj=st((wNt,hj)=>{"use strict";var _2e=dj();hj.exports=function(e){if(this.options.raw)return["("+this.next(e.args[0]),e.op,this.next(e.args[1])+")"].join(" ");var t=_2e[e.op];if(!t)throw TypeError("unidentified operator");return this.FunctionNode({name:t,args:e.args})}});var xj=st((bNt,vj)=>{"use strict";vj.exports=function(e){var t=e.name;return'$$mathCodegen.getProperty("'+t+'", scope, ns)'}});var wj=st((DNt,yj)=>{"use strict";yj.exports={"+":"positive","-":"negative","~":"oneComplement"}});var Sj=st((SNt,Dj)=>{"use strict";var bj=wj();Dj.exports=function(e){if(this.options.raw)return e.op+this.next(e.argument);if(!(e.op in bj))throw new SyntaxError(e.op+" not implemented");var t=bj[e.op];return this.FunctionNode({name:t,args:[e.argument]})}});var Aj=st((NNt,Ej)=>{"use strict";var Nj=tx(),O2e={ArrayNode:ij(),AssignmentNode:aj(),ConditionalNode:uj(),ConstantNode:fj(),FunctionNode:pj(),OperatorNode:gj(),SymbolNode:xj(),UnaryNode:Sj()},oS=function(e,t){this.owner=e,this.options=Nj({factory:"ns.factory",raw:!1,rawArrayExpressionElements:!0,rawCallExpressionElements:!1,applyFactoryToScope:!1},t)};Nj(oS.prototype,O2e);oS.prototype.next=function(e){if(!(e.type in this))throw new TypeError("the node type "+e.type+" is not implemented");return this[e.type](e)};oS.prototype.rawify=function(e,t){var r=this.options.raw;e&&(this.options.raw=!0),t(),e&&(this.options.raw=r)};Ej.exports=oS});var Mj=st((ENt,Cj)=>{"use strict";var F2e=ex().Parser,I2e=Aj(),k2e=tx();function aS(e,t){this.statements=[],this.defs=t||{},this.interpreter=new I2e(this,e)}aS.prototype.setDefs=function(e){return this.defs=k2e(this.defs,e),this};aS.prototype.compile=function(e){var t=this;if(!e||!(typeof e=="object"||typeof e=="function"))throw TypeError("namespace must be an object");if(typeof e.factory!="function")throw TypeError("namespace.factory must be a function");this.defs.ns=e,this.defs.$$mathCodegen={getProperty:function(l,s,a){function u(f){return t.interpreter.options.applyFactoryToScope&&typeof f!="function"?a.factory(f):f}if(l in s)return u(s[l]);if(l in a)return u(a[l]);throw SyntaxError('symbol "'+l+'" is undefined')},functionProxy:function(l,s){if(typeof l!="function")throw SyntaxError('symbol "'+s+'" must be a function');return l}},this.defs.$$processScope=this.defs.$$processScope||function(){};var r=Object.keys(this.defs).map(function(l){return"var "+l+' = defs["'+l+'"]'});if(!this.statements.length)throw Error("there are no statements saved in this generator, make sure you parse an expression before compiling it");this.statements[this.statements.length-1]="return "+this.statements[this.statements.length-1];var n=this.statements.join(";"),i=r.join(` +`),i=new Function("defs",n);return i(this.defs)};oS.prototype.parse=function(e){var t=this,r=new C2e().parse(e);return this.statements=r.blocks.map(function(n){return t.interpreter.next(n)}),this};tj.exports=oS});var ij=st((mNt,nj)=>{"use strict";nj.exports=rj()});var aj=st((dNt,oj)=>{"use strict";oj.exports=function(){var e=Object.create(Math);return e.factory=function(t){if(typeof t!="number")throw new TypeError("built-in math factory only accepts numbers");return Number(t)},e.add=function(t,r){return t+r},e.sub=function(t,r){return t-r},e.mul=function(t,r){return t*r},e.div=function(t,r){return t/r},e.mod=function(t,r){return t%r},e.factorial=function(t){for(var r=1,n=2;n<=t;n+=1)r*=n;return r},e.nthRoot=function(t,r){var n=r<0;if(n&&(r=-r),r===0)throw new Error("Root must be non-zero");if(t<0&&Math.abs(r)%2!==1)throw new Error("Root must be odd when a is negative.");if(t===0)return 0;if(!isFinite(t))return n?0:t;var i=Math.pow(Math.abs(t),1/r);return i=t<0?-i:i,n?1/i:i},e.logicalOR=function(t,r){return t||r},e.logicalXOR=function(t,r){return t!=r},e.logicalAND=function(t,r){return t&&r},e.bitwiseOR=function(t,r){return t|r},e.bitwiseXOR=function(t,r){return t^r},e.bitwiseAND=function(t,r){return t&r},e.lessThan=function(t,r){return tr},e.greaterEqualThan=function(t,r){return t>=r},e.equal=function(t,r){return t==r},e.strictlyEqual=function(t,r){return t===r},e.notEqual=function(t,r){return t!=r},e.strictlyNotEqual=function(t,r){return t!==r},e.shiftRight=function(t,r){return t>>r},e.shiftLeft=function(t,r){return t<>>r},e.negative=function(t){return-t},e.positive=function(t){return t},e}});var sj=st((hNt,lO)=>{"use strict";var _2e=ij(),uO=aj()();function O2e(e){Object.keys(e).forEach(function(t){var r=e[t];e[t]=uO.factory(r)})}lO.exports=function(e){return new _2e().setDefs({$$processScope:O2e}).parse(e).compile(uO)};lO.exports.math=uO});var lj=st((gNt,uj)=>{"use strict";uj.exports=sj()});var cj=st((vNt,fj)=>{"use strict";fj.exports=function(e){var t=this,r=[];this.rawify(this.options.rawArrayExpressionElements,function(){r=e.nodes.map(function(i){return t.next(i)})});var n="["+r.join(",")+"]";return this.options.raw?n:this.options.factory+"("+n+")"}});var mj=st((xNt,pj)=>{"use strict";pj.exports=function(e){return'scope["'+e.name+'"] = '+this.next(e.expr)}});var hj=st((yNt,dj)=>{"use strict";dj.exports=function(e){var t="!!("+this.next(e.condition)+")",r=this.next(e.trueExpr),n=this.next(e.falseExpr);return"("+t+" ? ("+r+") : ("+n+") )"}});var vj=st((wNt,gj)=>{"use strict";gj.exports=function(e){return this.options.raw?e.value:this.options.factory+"("+e.value+")"}});var yj=st((bNt,fO)=>{"use strict";var F2e=nx().nodeTypes.SymbolNode,xj=function(e){return"$$mathCodegen.functionProxy("+this.next(new F2e(e.name))+', "'+e.name+'")'};fO.exports=function(e){var t=this,r=xj.call(this,e),n=[];return this.rawify(this.options.rawCallExpressionElements,function(){n=e.args.map(function(i){return t.next(i)})}),r+"("+n.join(", ")+")"};fO.exports.functionProxy=xj});var bj=st((DNt,wj)=>{"use strict";wj.exports={"+":"add","-":"sub","*":"mul","/":"div","^":"pow","%":"mod","!":"factorial","|":"bitwiseOR","^|":"bitwiseXOR","&":"bitwiseAND","||":"logicalOR",xor:"logicalXOR","&&":"logicalAND","<":"lessThan",">":"greaterThan","<=":"lessEqualThan",">=":"greaterEqualThan","===":"strictlyEqual","==":"equal","!==":"strictlyNotEqual","!=":"notEqual",">>":"shiftRight","<<":"shiftLeft",">>>":"unsignedRightShift"}});var Sj=st((SNt,Dj)=>{"use strict";var I2e=bj();Dj.exports=function(e){if(this.options.raw)return["("+this.next(e.args[0]),e.op,this.next(e.args[1])+")"].join(" ");var t=I2e[e.op];if(!t)throw TypeError("unidentified operator");return this.FunctionNode({name:t,args:e.args})}});var Ej=st((NNt,Nj)=>{"use strict";Nj.exports=function(e){var t=e.name;return'$$mathCodegen.getProperty("'+t+'", scope, ns)'}});var Cj=st((ENt,Aj)=>{"use strict";Aj.exports={"+":"positive","-":"negative","~":"oneComplement"}});var _j=st((ANt,Tj)=>{"use strict";var Mj=Cj();Tj.exports=function(e){if(this.options.raw)return e.op+this.next(e.argument);if(!(e.op in Mj))throw new SyntaxError(e.op+" not implemented");var t=Mj[e.op];return this.FunctionNode({name:t,args:[e.argument]})}});var Ij=st((CNt,Fj)=>{"use strict";var Oj=ix(),k2e={ArrayNode:cj(),AssignmentNode:mj(),ConditionalNode:hj(),ConstantNode:vj(),FunctionNode:yj(),OperatorNode:Sj(),SymbolNode:Ej(),UnaryNode:_j()},aS=function(e,t){this.owner=e,this.options=Oj({factory:"ns.factory",raw:!1,rawArrayExpressionElements:!0,rawCallExpressionElements:!1,applyFactoryToScope:!1},t)};Oj(aS.prototype,k2e);aS.prototype.next=function(e){if(!(e.type in this))throw new TypeError("the node type "+e.type+" is not implemented");return this[e.type](e)};aS.prototype.rawify=function(e,t){var r=this.options.raw;e&&(this.options.raw=!0),t(),e&&(this.options.raw=r)};Fj.exports=aS});var Lj=st((MNt,kj)=>{"use strict";var L2e=nx().Parser,B2e=Ij(),P2e=ix();function sS(e,t){this.statements=[],this.defs=t||{},this.interpreter=new B2e(this,e)}sS.prototype.setDefs=function(e){return this.defs=P2e(this.defs,e),this};sS.prototype.compile=function(e){var t=this;if(!e||!(typeof e=="object"||typeof e=="function"))throw TypeError("namespace must be an object");if(typeof e.factory!="function")throw TypeError("namespace.factory must be a function");this.defs.ns=e,this.defs.$$mathCodegen={getProperty:function(l,s,a){function u(f){return t.interpreter.options.applyFactoryToScope&&typeof f!="function"?a.factory(f):f}if(l in s)return u(s[l]);if(l in a)return u(a[l]);throw SyntaxError('symbol "'+l+'" is undefined')},functionProxy:function(l,s){if(typeof l!="function")throw SyntaxError('symbol "'+s+'" must be a function');return l}},this.defs.$$processScope=this.defs.$$processScope||function(){};var r=Object.keys(this.defs).map(function(l){return"var "+l+' = defs["'+l+'"]'});if(!this.statements.length)throw Error("there are no statements saved in this generator, make sure you parse an expression before compiling it");this.statements[this.statements.length-1]="return "+this.statements[this.statements.length-1];var n=this.statements.join(";"),i=r.join(` `)+` `+["return {"," eval: function (scope) {"," scope = scope || {}"," $$processScope(scope)"," "+n," },"," code: '"+n+"'","}"].join(` -`),o=new Function("defs",i);return o(this.defs)};aS.prototype.parse=function(e){var t=this,r=new F2e().parse(e);return this.statements=r.blocks.map(function(n){return t.interpreter.next(n)}),this};Cj.exports=aS});var _j=st((ANt,Tj)=>{"use strict";Tj.exports=Mj()});var Vu=st(Pi=>{"use strict";Object.defineProperty(Pi,"__esModule",{value:!0});Pi.intervalsOverlap=Pi.hasInterval=Pi.hasValue=Pi.zeroIn=Pi.isSingleton=Pi.isWhole=Pi.isEmpty=Pi.isInterval=void 0;function L2e(e){return typeof e=="object"&&typeof e.lo=="number"&&typeof e.hi=="number"}Pi.isInterval=L2e;function _h(e){return e.lo>e.hi}Pi.isEmpty=_h;function B2e(e){return e.lo===-1/0&&e.hi===1/0}Pi.isWhole=B2e;function P2e(e){return e.lo===e.hi}Pi.isSingleton=P2e;function R2e(e){return Oj(e,0)}Pi.zeroIn=R2e;function Oj(e,t){return _h(e)?!1:e.lo<=t&&t<=e.hi}Pi.hasValue=Oj;function q2e(e,t){return _h(e)?!0:!_h(t)&&t.lo<=e.lo&&e.hi<=t.hi}Pi.hasInterval=q2e;function z2e(e,t){return _h(e)||_h(t)?!1:e.lo<=t.lo&&t.lo<=e.hi||t.lo<=e.lo&&e.lo<=t.hi}Pi.intervalsOverlap=z2e});var Fj=st((MNt,Xn)=>{var oO=!1;if(typeof Float64Array<"u")if(tu=new Float64Array(1),ko=new Uint32Array(tu.buffer),tu[0]=1,oO=!0,ko[1]===1072693248){let e=function(n,i){return ko[0]=n,ko[1]=i,tu[0]},t=function(n){return tu[0]=n,ko[0]},r=function(n){return tu[0]=n,ko[1]};U2e=e,H2e=t,$2e=r,Xn.exports=function(i){return tu[0]=i,[ko[0],ko[1]]},Xn.exports.pack=e,Xn.exports.lo=t,Xn.exports.hi=r}else if(ko[0]===1072693248){let e=function(n,i){return ko[1]=n,ko[0]=i,tu[0]},t=function(n){return tu[0]=n,ko[1]},r=function(n){return tu[0]=n,ko[0]};W2e=e,V2e=t,G2e=r,Xn.exports=function(i){return tu[0]=i,[ko[1],ko[0]]},Xn.exports.pack=e,Xn.exports.lo=t,Xn.exports.hi=r}else oO=!1;var tu,ko,U2e,H2e,$2e,W2e,V2e,G2e;if(!oO){let e=function(n,i){return ru.writeUInt32LE(n,0,!0),ru.writeUInt32LE(i,4,!0),ru.readDoubleLE(0,!0)},t=function(n){return ru.writeDoubleLE(n,0,!0),ru.readUInt32LE(0,!0)},r=function(n){return ru.writeDoubleLE(n,0,!0),ru.readUInt32LE(4,!0)};Y2e=e,Z2e=t,X2e=r,ru=new Buffer(8),Xn.exports=function(i){return ru.writeDoubleLE(i,0,!0),[ru.readUInt32LE(0,!0),ru.readUInt32LE(4,!0)]},Xn.exports.pack=e,Xn.exports.lo=t,Xn.exports.hi=r}var ru,Y2e,Z2e,X2e;Xn.exports.sign=function(e){return Xn.exports.hi(e)>>>31};Xn.exports.exponent=function(e){var t=Xn.exports.hi(e);return(t<<1>>>21)-1023};Xn.exports.fraction=function(e){var t=Xn.exports.lo(e),r=Xn.exports.hi(e),n=r&(1<<20)-1;return r&2146435072&&(n+=1<<20),[t,n]};Xn.exports.denormalized=function(e){var t=Xn.exports.hi(e);return!(t&2146435072)}});var Bj=st((TNt,Lj)=>{"use strict";var aO=Fj(),Ij=Math.pow(2,-1074),kj=-1>>>0;Lj.exports=K2e;function K2e(e,t){if(isNaN(e)||isNaN(t))return NaN;if(e===t)return e;if(e===0)return t<0?-Ij:Ij;var r=aO.hi(e),n=aO.lo(e);return t>e==e>0?n===kj?(r+=1,n=0):n+=1:n===0?(n=kj,r-=1):n-=1,aO.pack(n,r)}});var Zl=st(rx=>{"use strict";var J2e=rx&&rx.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(rx,"__esModule",{value:!0});var Rj=J2e(Bj());function Q2e(e){return e}function sO(e){return e===1/0?e:(0,Rj.default)(e,-1/0)}function uO(e){return e===-1/0?e:(0,Rj.default)(e,1/0)}function Pj(e){return e<0?Math.ceil(e):Math.floor(e)}var Oh={prev:sO,next:uO},hr={safePrev:sO,safeNext:uO,prev(e){return Oh.prev(e)},next(e){return Oh.next(e)},addLo(e,t){return hr.prev(e+t)},addHi(e,t){return hr.next(e+t)},subLo(e,t){return hr.prev(e-t)},subHi(e,t){return hr.next(e-t)},mulLo(e,t){return hr.prev(e*t)},mulHi(e,t){return hr.next(e*t)},divLo(e,t){return hr.prev(e/t)},divHi(e,t){return hr.next(e/t)},intLo(e){return Pj(hr.prev(e))},intHi(e){return Pj(hr.next(e))},logLo(e){return hr.prev(Math.log(e))},logHi(e){return hr.next(Math.log(e))},expLo(e){return hr.prev(Math.exp(e))},expHi(e){return hr.next(Math.exp(e))},sinLo(e){return hr.prev(Math.sin(e))},sinHi(e){return hr.next(Math.sin(e))},cosLo(e){return hr.prev(Math.cos(e))},cosHi(e){return hr.next(Math.cos(e))},tanLo(e){return hr.prev(Math.tan(e))},tanHi(e){return hr.next(Math.tan(e))},asinLo(e){return hr.prev(Math.asin(e))},asinHi(e){return hr.next(Math.asin(e))},acosLo(e){return hr.prev(Math.acos(e))},acosHi(e){return hr.next(Math.acos(e))},atanLo(e){return hr.prev(Math.atan(e))},atanHi(e){return hr.next(Math.atan(e))},sinhLo(e){return hr.prev(Math.sinh(e))},sinhHi(e){return hr.next(Math.sinh(e))},coshLo(e){return hr.prev(Math.cosh(e))},coshHi(e){return hr.next(Math.cosh(e))},tanhLo(e){return hr.prev(Math.tanh(e))},tanhHi(e){return hr.next(Math.tanh(e))},powLo(e,t){if(t%1!==0)return hr.prev(Math.pow(e,t));let r=(t&1)===1?e:1;for(t>>=1;t>0;)e=hr.mulLo(e,e),(t&1)===1&&(r=hr.mulLo(e,r)),t>>=1;return r},powHi(e,t){if(t%1!==0)return hr.next(Math.pow(e,t));let r=(t&1)===1?e:1;for(t>>=1;t>0;)e=hr.mulHi(e,e),(t&1)===1&&(r=hr.mulHi(e,r)),t>>=1;return r},sqrtLo(e){return hr.prev(Math.sqrt(e))},sqrtHi(e){return hr.next(Math.sqrt(e))},disable(){Oh.next=Oh.prev=Q2e},enable(){Oh.next=uO,Oh.prev=sO}};rx.default=hr});var lc=st(ea=>{"use strict";var j2e=ea&&ea.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),eSe=ea&&ea.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),tSe=ea&&ea.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&j2e(t,e,r);return eSe(t,e),t},rSe=ea&&ea.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ea,"__esModule",{value:!0});ea.Interval=ea._Interval=void 0;var sS=tSe(Vu()),Fh=rSe(Zl()),uS=class e{constructor(t,r){if(this.lo=0,this.hi=0,!(this instanceof e))return console.log("calling with new"),console.log(t,r),new e(t,r);if(typeof t<"u"&&typeof r<"u"){if(sS.isInterval(t)){if(!sS.isSingleton(t))throw new TypeError("Interval: interval `lo` must be a singleton");t=t.lo}if(sS.isInterval(r)){if(!sS.isSingleton(r))throw TypeError("Interval: interval `hi` must be a singleton");r=r.hi}}else{if(typeof t<"u")return Array.isArray(t)?new Ih(t[0],t[1]):new Ih(t,t);t=r=0}this.assign(t,r)}singleton(t){return this.set(t,t)}bounded(t,r){return this.set(Fh.default.prev(t),Fh.default.next(r))}boundedSingleton(t){return this.bounded(t,t)}set(t,r){return this.lo=t,this.hi=r,this}assign(t,r){if(typeof t!="number"||typeof r!="number")throw TypeError("Interval#assign: arguments must be numbers");return isNaN(t)||isNaN(r)||t>r?this.setEmpty():this.set(t,r)}setEmpty(){return this.set(Number.POSITIVE_INFINITY,Number.NEGATIVE_INFINITY)}setWhole(){return this.set(Number.NEGATIVE_INFINITY,Number.POSITIVE_INFINITY)}open(t,r){return this.assign(Fh.default.safeNext(t),Fh.default.safePrev(r))}halfOpenLeft(t,r){return this.assign(Fh.default.safeNext(t),r)}halfOpenRight(t,r){return this.assign(t,Fh.default.safePrev(r))}toArray(){return[this.lo,this.hi]}clone(){return new Ih().set(this.lo,this.hi)}};ea._Interval=uS;function nSe(e){function t(){for(var r=arguments.length,n=Array(r),i=0;i{"use strict";var iSe=ix&&ix.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ix,"__esModule",{value:!0});var fc=lc(),qj=iSe(Zl()),lS=(3373259426+273688/(1<<21))/(1<<30),fS=(3373259426+273689/(1<<21))/(1<<30),nx={PI_LOW:lS,PI_HIGH:fS,PI_HALF_LOW:lS/2,PI_HALF_HIGH:fS/2,PI_TWICE_LOW:lS*2,PI_TWICE_HIGH:fS*2,get E(){return new fc.Interval(qj.default.prev(Math.E),qj.default.next(Math.E))},get PI(){return new fc.Interval(lS,fS)},get PI_HALF(){return new fc.Interval(nx.PI_HALF_LOW,nx.PI_HALF_HIGH)},get PI_TWICE(){return new fc.Interval(nx.PI_TWICE_LOW,nx.PI_TWICE_HIGH)},get ZERO(){return new fc.Interval(0)},get ONE(){return new fc.Interval(1)},get WHOLE(){return new fc.Interval().setWhole()},get EMPTY(){return new fc.Interval().setEmpty()}};ix.default=nx});var lO=st(qr=>{"use strict";var oSe=qr&&qr.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),aSe=qr&&qr.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),sSe=qr&&qr.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&oSe(t,e,r);return aSe(t,e),t};Object.defineProperty(qr,"__esModule",{value:!0});qr.geq=qr.greaterEqualThan=qr.leq=qr.lessEqualThan=qr.gt=qr.greaterThan=qr.lt=qr.lessThan=qr.notEqual=qr.assertIncludes=qr.almostEqual=qr.equal=void 0;var ta=sSe(Vu());function uSe(e,t){return ta.isEmpty(e)?ta.isEmpty(t):!ta.isEmpty(t)&&e.lo===t.lo&&e.hi===t.hi}qr.equal=uSe;var lSe=1e-7;function cS(e,t){if(!e)throw new Error(t||"assertion failed")}function zj(e,t){if(!isFinite(e))return cS(e===t,`[Infinity] expected ${e} to be ${t}`);cS(Math.abs(e-t)t.hi}qr.notEqual=cSe;function Hj(e,t){return ta.isEmpty(e)||ta.isEmpty(t)?!1:e.hit.hi}qr.greaterThan=$j;qr.gt=$j;function Wj(e,t){return ta.isEmpty(e)||ta.isEmpty(t)?!1:e.hi<=t.lo}qr.lessEqualThan=Wj;qr.leq=Wj;function Vj(e,t){return ta.isEmpty(e)||ta.isEmpty(t)?!1:e.lo>=t.hi}qr.greaterEqualThan=Vj;qr.geq=Vj});var Zj=st(Ri=>{"use strict";var pSe=Ri&&Ri.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),mSe=Ri&&Ri.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),dSe=Ri&&Ri.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&pSe(t,e,r);return mSe(t,e),t},Gj=Ri&&Ri.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ri,"__esModule",{value:!0});Ri.zero=Ri.negative=Ri.positive=Ri.nonZero=void 0;var ox=lc(),xo=Gj(Zl()),Yj=dSe(Vu()),fO=Gj(jp());function hSe(e,t){let r=e.lo,n=e.hi,i=t.lo,o=t.hi,l=new ox.Interval;return n<0?o<0?(l.lo=xo.default.divLo(n,i),l.hi=xo.default.divHi(r,o)):(l.lo=xo.default.divLo(r,i),l.hi=xo.default.divHi(n,o)):r<0?o<0?(l.lo=xo.default.divLo(n,o),l.hi=xo.default.divHi(r,o)):(l.lo=xo.default.divLo(r,i),l.hi=xo.default.divHi(n,i)):o<0?(l.lo=xo.default.divLo(n,o),l.hi=xo.default.divHi(r,i)):(l.lo=xo.default.divLo(r,o),l.hi=xo.default.divHi(n,i)),l}Ri.nonZero=hSe;function gSe(e,t){return e.lo===0&&e.hi===0?e:Yj.zeroIn(e)?fO.default.WHOLE:e.hi<0?new ox.Interval(Number.NEGATIVE_INFINITY,xo.default.divHi(e.hi,t)):new ox.Interval(xo.default.divLo(e.lo,t),Number.POSITIVE_INFINITY)}Ri.positive=gSe;function vSe(e,t){return e.lo===0&&e.hi===0?e:Yj.zeroIn(e)?fO.default.WHOLE:e.hi<0?new ox.Interval(xo.default.divLo(e.hi,t),Number.POSITIVE_INFINITY):new ox.Interval(Number.NEGATIVE_INFINITY,xo.default.divHi(e.lo,t))}Ri.negative=vSe;function xSe(e){return e.lo===0&&e.hi===0?e:fO.default.WHOLE}Ri.zero=xSe});var kh=st(en=>{"use strict";var ySe=en&&en.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),wSe=en&&en.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Xj=en&&en.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&ySe(t,e,r);return wSe(t,e),t},Kj=en&&en.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(en,"__esModule",{value:!0});en.negative=en.positive=en.div=en.divide=en.mul=en.multiply=en.sub=en.subtract=en.add=void 0;var sx=lc(),Cn=Kj(Zl()),cO=Kj(jp()),ax=Xj(Vu()),pS=Xj(Zj());function bSe(e,t){return new sx.Interval(Cn.default.addLo(e.lo,t.lo),Cn.default.addHi(e.hi,t.hi))}en.add=bSe;function Jj(e,t){return new sx.Interval(Cn.default.subLo(e.lo,t.hi),Cn.default.subHi(e.hi,t.lo))}en.subtract=Jj;en.sub=Jj;function Qj(e,t){if(ax.isEmpty(e)||ax.isEmpty(t))return cO.default.EMPTY;let r=e.lo,n=e.hi,i=t.lo,o=t.hi,l=new sx.Interval;return r<0?n>0?i<0?o>0?(l.lo=Math.min(Cn.default.mulLo(r,o),Cn.default.mulLo(n,i)),l.hi=Math.max(Cn.default.mulHi(r,i),Cn.default.mulHi(n,o))):(l.lo=Cn.default.mulLo(n,i),l.hi=Cn.default.mulHi(r,i)):o>0?(l.lo=Cn.default.mulLo(r,o),l.hi=Cn.default.mulHi(n,o)):(l.lo=0,l.hi=0):i<0?o>0?(l.lo=Cn.default.mulLo(r,o),l.hi=Cn.default.mulHi(r,i)):(l.lo=Cn.default.mulLo(n,o),l.hi=Cn.default.mulHi(r,i)):o>0?(l.lo=Cn.default.mulLo(r,o),l.hi=Cn.default.mulHi(n,i)):(l.lo=0,l.hi=0):n>0?i<0?o>0?(l.lo=Cn.default.mulLo(n,i),l.hi=Cn.default.mulHi(n,o)):(l.lo=Cn.default.mulLo(n,i),l.hi=Cn.default.mulHi(r,o)):o>0?(l.lo=Cn.default.mulLo(r,i),l.hi=Cn.default.mulHi(n,o)):(l.lo=0,l.hi=0):(l.lo=0,l.hi=0),l}en.multiply=Qj;en.mul=Qj;function jj(e,t){return ax.isEmpty(e)||ax.isEmpty(t)?cO.default.EMPTY:ax.zeroIn(t)?t.lo!==0?t.hi!==0?pS.zero(e):pS.negative(e,t.lo):t.hi!==0?pS.positive(e,t.hi):cO.default.EMPTY:pS.nonZero(e,t)}en.divide=jj;en.div=jj;function DSe(e){return new sx.Interval(e.lo,e.hi)}en.positive=DSe;function SSe(e){return new sx.Interval(-e.hi,-e.lo)}en.negative=SSe});var mS=st(ui=>{"use strict";var NSe=ui&&ui.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),ESe=ui&&ui.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),tee=ui&&ui.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&NSe(t,e,r);return ESe(t,e),t},ree=ui&&ui.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ui,"__esModule",{value:!0});ui.nthRoot=ui.sqrt=ui.pow=ui.multiplicativeInverse=ui.fmod=void 0;var Fa=lc(),Ji=ree(Zl()),ms=ree(jp()),cc=tee(Vu()),eee=tee(kh());function ASe(e,t){if(cc.isEmpty(e)||cc.isEmpty(t))return ms.default.EMPTY;let r=e.lo<0?t.lo:t.hi,n=e.lo/r;return n<0?n=Math.ceil(n):n=Math.floor(n),eee.sub(e,eee.mul(t,new Fa.Interval(n)))}ui.fmod=ASe;function nee(e){return cc.isEmpty(e)?ms.default.EMPTY:cc.zeroIn(e)?e.lo!==0?e.hi!==0?ms.default.WHOLE:new Fa.Interval(Number.NEGATIVE_INFINITY,Ji.default.divHi(1,e.lo)):e.hi!==0?new Fa.Interval(Ji.default.divLo(1,e.hi),Number.POSITIVE_INFINITY):ms.default.EMPTY:new Fa.Interval(Ji.default.divLo(1,e.hi),Ji.default.divHi(1,e.lo))}ui.multiplicativeInverse=nee;function iee(e,t){if(cc.isEmpty(e))return ms.default.EMPTY;if(typeof t=="object"){if(!cc.isSingleton(t))return ms.default.EMPTY;t=t.lo}if(t===0)return e.lo===0&&e.hi===0?ms.default.EMPTY:ms.default.ONE;if(t<0)return iee(nee(e),-t);if(Number.isSafeInteger(t))if(e.hi<0){let r=Ji.default.powLo(-e.hi,t),n=Ji.default.powHi(-e.lo,t);return(t&1)===1?new Fa.Interval(-n,-r):new Fa.Interval(r,n)}else return e.lo<0?(t&1)===1?new Fa.Interval(-Ji.default.powLo(-e.lo,t),Ji.default.powHi(e.hi,t)):new Fa.Interval(0,Ji.default.powHi(Math.max(-e.lo,e.hi),t)):new Fa.Interval(Ji.default.powLo(e.lo,t),Ji.default.powHi(e.hi,t));else return console.warn("power is not an integer, you should use nth-root instead, returning an empty interval"),ms.default.EMPTY}ui.pow=iee;function CSe(e){return oee(e,2)}ui.sqrt=CSe;function oee(e,t){if(cc.isEmpty(e)||t<0)return ms.default.EMPTY;if(typeof t=="object"){if(!cc.isSingleton(t))return ms.default.EMPTY;t=t.lo}let r=1/t;if(e.hi<0){if(Number.isSafeInteger(t)&&(t&1)===1){let n=Ji.default.powHi(-e.lo,r),i=Ji.default.powLo(-e.hi,r);return new Fa.Interval(-n,-i)}return ms.default.EMPTY}else if(e.lo<0){let n=Ji.default.powHi(e.hi,r);if(Number.isSafeInteger(t)&&(t&1)===1){let i=-Ji.default.powHi(-e.lo,r);return new Fa.Interval(i,n)}return new Fa.Interval(0,n)}else return new Fa.Interval(Ji.default.powLo(e.lo,r),Ji.default.powHi(e.hi,r))}ui.nthRoot=oee});var dS=st(ur=>{"use strict";var MSe=ur&&ur.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),TSe=ur&&ur.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),aee=ur&&ur.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&MSe(t,e,r);return TSe(t,e),t},see=ur&&ur.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ur,"__esModule",{value:!0});ur.clone=ur.min=ur.max=ur.abs=ur.wid=ur.width=ur.difference=ur.union=ur.intersection=ur.hull=ur.log2=ur.LOG_EXP_2=ur.log10=ur.LOG_EXP_10=ur.ln=ur.log=ur.exp=void 0;var Ia=lc(),ux=see(Zl()),ds=see(jp()),Ei=aee(Vu()),pO=aee(kh());function _Se(e){return Ei.isEmpty(e)?ds.default.EMPTY:new Ia.Interval(ux.default.expLo(e.lo),ux.default.expHi(e.hi))}ur.exp=_Se;function Lh(e){if(Ei.isEmpty(e))return ds.default.EMPTY;let t=e.lo<=0?Number.NEGATIVE_INFINITY:ux.default.logLo(e.lo);return new Ia.Interval(t,ux.default.logHi(e.hi))}ur.log=Lh;ur.ln=Lh;ur.LOG_EXP_10=Lh(new Ia.Interval(10,10));function OSe(e){return Ei.isEmpty(e)?ds.default.EMPTY:pO.div(Lh(e),ur.LOG_EXP_10)}ur.log10=OSe;ur.LOG_EXP_2=Lh(new Ia.Interval(2,2));function FSe(e){return Ei.isEmpty(e)?ds.default.EMPTY:pO.div(Lh(e),ur.LOG_EXP_2)}ur.log2=FSe;function ISe(e,t){let r=Ei.isEmpty(e),n=Ei.isEmpty(t);return r&&n?ds.default.EMPTY:r?t.clone():n?e.clone():new Ia.Interval(Math.min(e.lo,t.lo),Math.max(e.hi,t.hi))}ur.hull=ISe;function kSe(e,t){if(Ei.isEmpty(e)||Ei.isEmpty(t))return ds.default.EMPTY;let r=Math.max(e.lo,t.lo),n=Math.min(e.hi,t.hi);return r<=n?new Ia.Interval(r,n):ds.default.EMPTY}ur.intersection=kSe;function LSe(e,t){if(!Ei.intervalsOverlap(e,t))throw Error("Interval#union: intervals do not overlap");return new Ia.Interval(Math.min(e.lo,t.lo),Math.max(e.hi,t.hi))}ur.union=LSe;function BSe(e,t){if(Ei.isEmpty(e)||Ei.isWhole(t))return ds.default.EMPTY;if(Ei.intervalsOverlap(e,t)){if(e.lo=e.hi&&t.lo===-1/0?ds.default.EMPTY:t.lo<=e.lo?new Ia.Interval().halfOpenLeft(t.hi,e.hi):new Ia.Interval().halfOpenRight(e.lo,t.lo)}return e.clone()}ur.difference=BSe;function uee(e){return Ei.isEmpty(e)?0:ux.default.subHi(e.hi,e.lo)}ur.width=uee;ur.wid=uee;function PSe(e){return Ei.isEmpty(e)||Ei.isWhole(e)?ds.default.EMPTY:e.lo>=0?e.clone():e.hi<=0?pO.negative(e):new Ia.Interval(0,Math.max(-e.lo,e.hi))}ur.abs=PSe;function RSe(e,t){let r=Ei.isEmpty(e),n=Ei.isEmpty(t);return r&&n?ds.default.EMPTY:r?t.clone():n?e.clone():new Ia.Interval(Math.max(e.lo,t.lo),Math.max(e.hi,t.hi))}ur.max=RSe;function qSe(e,t){let r=Ei.isEmpty(e),n=Ei.isEmpty(t);return r&&n?ds.default.EMPTY:r?t.clone():n?e.clone():new Ia.Interval(Math.min(e.lo,t.lo),Math.min(e.hi,t.hi))}ur.min=qSe;function zSe(e){return new Ia.Interval().set(e.lo,e.hi)}ur.clone=zSe});var hO=st(tn=>{"use strict";var USe=tn&&tn.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),HSe=tn&&tn.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),gS=tn&&tn.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&USe(t,e,r);return HSe(t,e),t},lee=tn&&tn.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(tn,"__esModule",{value:!0});tn.tanh=tn.cosh=tn.sinh=tn.atan=tn.acos=tn.asin=tn.tan=tn.sin=tn.cos=void 0;var Lo=lc(),Ai=lee(Zl()),yn=lee(jp()),Xl=gS(Vu()),hS=gS(kh()),fee=gS(mS()),$Se=gS(dS());function mO(e){return!isFinite(e.lo)&&e.lo===e.hi}function cee(e){if(e.lo<0)if(e.lo===-1/0)e.lo=0,e.hi=1/0;else{let t=Math.ceil(-e.lo/yn.default.PI_TWICE_LOW);e.lo+=yn.default.PI_TWICE_LOW*t,e.hi+=yn.default.PI_TWICE_LOW*t}return e}function dO(e){if(Xl.isEmpty(e)||mO(e))return yn.default.EMPTY;let t=new Lo.Interval().set(e.lo,e.hi);cee(t);let r=yn.default.PI_TWICE,n=fee.fmod(t,r);if($Se.width(n)>=r.lo)return new Lo.Interval(-1,1);if(n.lo>=yn.default.PI_HIGH){let a=dO(hS.sub(n,yn.default.PI));return hS.negative(a)}let i=n.lo,o=n.hi,l=Ai.default.cosLo(o),s=Ai.default.cosHi(i);return o<=yn.default.PI_LOW?new Lo.Interval(l,s):o<=r.lo?new Lo.Interval(-1,Math.max(l,s)):new Lo.Interval(-1,1)}tn.cos=dO;function WSe(e){return Xl.isEmpty(e)||mO(e)?yn.default.EMPTY:dO(hS.sub(e,yn.default.PI_HALF))}tn.sin=WSe;function VSe(e){if(Xl.isEmpty(e)||mO(e))return yn.default.EMPTY;let t=new Lo.Interval().set(e.lo,e.hi);cee(t);let r=yn.default.PI,n=fee.fmod(t,r);return n.lo>=yn.default.PI_HALF_LOW&&(n=hS.sub(n,r)),n.lo<=-yn.default.PI_HALF_LOW||n.hi>=yn.default.PI_HALF_LOW?yn.default.WHOLE:new Lo.Interval(Ai.default.tanLo(n.lo),Ai.default.tanHi(n.hi))}tn.tan=VSe;function GSe(e){if(Xl.isEmpty(e)||e.hi<-1||e.lo>1)return yn.default.EMPTY;let t=e.lo<=-1?-yn.default.PI_HALF_HIGH:Ai.default.asinLo(e.lo),r=e.hi>=1?yn.default.PI_HALF_HIGH:Ai.default.asinHi(e.hi);return new Lo.Interval(t,r)}tn.asin=GSe;function YSe(e){if(Xl.isEmpty(e)||e.hi<-1||e.lo>1)return yn.default.EMPTY;let t=e.hi>=1?0:Ai.default.acosLo(e.hi),r=e.lo<=-1?yn.default.PI_HIGH:Ai.default.acosHi(e.lo);return new Lo.Interval(t,r)}tn.acos=YSe;function ZSe(e){return Xl.isEmpty(e)?yn.default.EMPTY:new Lo.Interval(Ai.default.atanLo(e.lo),Ai.default.atanHi(e.hi))}tn.atan=ZSe;function XSe(e){return Xl.isEmpty(e)?yn.default.EMPTY:new Lo.Interval(Ai.default.sinhLo(e.lo),Ai.default.sinhHi(e.hi))}tn.sinh=XSe;function KSe(e){return Xl.isEmpty(e)?yn.default.EMPTY:e.hi<0?new Lo.Interval(Ai.default.coshLo(e.hi),Ai.default.coshHi(e.lo)):e.lo>=0?new Lo.Interval(Ai.default.coshLo(e.lo),Ai.default.coshHi(e.hi)):new Lo.Interval(1,Ai.default.coshHi(-e.lo>e.hi?e.lo:e.hi))}tn.cosh=KSe;function JSe(e){return Xl.isEmpty(e)?yn.default.EMPTY:new Lo.Interval(Ai.default.tanhLo(e.lo),Ai.default.tanhHi(e.hi))}tn.tanh=JSe});var gee=st(wn=>{"use strict";var pee=wn&&wn.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),QSe=wn&&wn.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Bh=wn&&wn.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&pee(t,e,r);return QSe(t,e),t},Ph=wn&&wn.__exportStar||function(e,t){for(var r in e)r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r)&&pee(t,e,r)},mee=wn&&wn.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(wn,"__esModule",{value:!0});wn.constants=wn.round=wn.Interval=void 0;var dee=lc();Object.defineProperty(wn,"Interval",{enumerable:!0,get:function(){return dee._Interval}});var gO=mee(Zl());wn.round=gO.default;var hee=mee(jp());wn.constants=hee.default;var jSe=Bh(lO()),eNe=Bh(kh()),tNe=Bh(mS()),rNe=Bh(hO()),nNe=Bh(dS()),iNe=Bh(Vu()),oNe=Object.assign(dee.Interval,hee.default,gO.default,nNe,iNe,jSe,eNe,tNe,rNe,{round:gO.default});wn.default=oNe;Ph(lO(),wn);Ph(kh(),wn);Ph(mS(),wn);Ph(hO(),wn);Ph(dS(),wn);Ph(Vu(),wn)});var xee=st((zNt,vee)=>{"use strict";vee.exports=function(e){e.mod=e.fmod,e.lessThan=e.lt,e.lessEqualThan=e.leq,e.greaterThan=e.gt,e.greaterEqualThan=e.geq,e.strictlyEqual=e.equal,e.strictlyNotEqual=e.notEqual,e.logicalAND=function(t,r){return t&&r},e.logicalXOR=function(t,r){return t^r},e.logicalOR=function(t,r){return t||r}}});var wee=st((UNt,yee)=>{"use strict";yee.exports=function(e){return{disableRounding:function(){e.round.disable()},enableRounding:function(){e.round.enable()}}}});var bee=st((HNt,vS)=>{"use strict";var aNe=_j(),Rh=gee().default;xee()(Rh);function sNe(e){Object.keys(e).forEach(function(t){let r=e[t];typeof r=="number"||Array.isArray(r)?e[t]=Rh.factory(r):typeof r=="object"&&"lo"in r&&"hi"in r&&(e[t]=Rh.factory(r.lo,r.hi))})}vS.exports=function(e){return new aNe().setDefs({$$processScope:sNe}).parse(e).compile(Rh)};vS.exports.policies=wee()(Rh);vS.exports.Interval=Rh});var vO=st(($Nt,Dee)=>{"use strict";Dee.exports=bee()});var mc=st(pc=>{"use strict";var See=pc&&pc.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(pc,"__esModule",{value:!0});pc.interval=pc.builtIn=void 0;var uNe=See(rj()),lNe=See(vO()),Nee={interval:lNe.default,builtIn:uNe.default};function fNe(){return typeof global=="object"&&"math"in global?global.math:typeof window=="object"&&"math"in window?window.math:null}var xO=fNe();xO&&(Nee.builtIn=xO.compile);function Eee(e){function t(o){if(typeof o=="string"){let l=Nee[e](o);return xO&&e==="builtIn"?{eval:l.evaluate||l.eval}:l}else{if(typeof o=="function")return{eval:o};throw Error("expression must be a string or a function")}}function r(o,l){let s=o[l],a=e+"_Expression_"+l,u=e+"_Compiled_"+l;s!==o[a]&&(o[a]=s,o[u]=t(s))}function n(o,l){return o[e+"_Compiled_"+l]}function i(o,l,s){return r(o,l),n(o,l).eval(Object.assign({},o.scope||{},s))}return i}var cNe=Eee("builtIn");pc.builtIn=cNe;var pNe=Eee("interval");pc.interval=pNe});var Tee=st(lx=>{"use strict";var Mee=lx&&lx.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(lx,"__esModule",{value:!0});var mNe=(a0(),Hn(o0)),dNe=(Zn(),Hn(js)),em=Mee(Wu()),Aee=Mee(Th()),Cee=mc();function hNe(e){e=Object.assign({xLine:!1,yLine:!1,renderer:function(s,a){return"("+s.toFixed(3)+", "+a.toFixed(3)+")"},owner:null},e);let t=20,r=(0,mNe.line)().x(function(s){return s[0]}).y(function(s){return s[1]});function n(s,a){return s.append("path").datum(a).attr("stroke","grey").attr("stroke-dasharray","5,5").attr("opacity",.5).attr("d",r)}let i,o;function l(s){let a=s.selectAll("g.tip").data(function(f){return[f]}),u=a.enter().append("g").attr("class","tip").attr("clip-path","url(#function-plot-clip-"+e.owner.id+")");i=a.merge(u).selectAll("g.inner-tip").data(function(f){return[f]}),o=i.enter().append("g").attr("class","inner-tip").style("display","none").each(function(){let f=(0,dNe.select)(this);n(f,[[0,-e.owner.meta.height-t],[0,e.owner.meta.height+t]]).attr("class","tip-x-line").style("display","none"),n(f,[[-e.owner.meta.width-t,0],[e.owner.meta.width+t,0]]).attr("class","tip-y-line").style("display","none"),f.append("circle").attr("r",3),f.append("text").attr("transform","translate(5,-5)")}),i.merge(o).selectAll(".tip-x-line").style("display",e.xLine?null:"none"),i.merge(o).selectAll(".tip-y-line").style("display",e.yLine?null:"none")}return l.move=function(s){let a,u=1/0,f=-1,p,h,g=i.merge(o),x=e.owner.meta,v=g.datum().data,S=x.xScale,D=x.yScale,C=x.width,E=x.height,M=s.x,T=s.y;for(a=0;aN[0]-Aee.default.TIP_X_EPS&&M{"use strict";var gNe=nu&&nu.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),vNe=nu&&nu.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),xNe=nu&&nu.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&gNe(t,e,r);return vNe(t,e),t},yNe=nu&&nu.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(nu,"__esModule",{value:!0});var tm=xNe(vO()),_ee=mc(),wNe=yNe(Wu());tm.default.policies.disableRounding();function bNe(e){let t=wNe.default.space(e.xAxis,e.range,e.nSamples),r=e.xScale,n=e.yScale,i=n.domain()[0],o=n.domain()[1],l=[],s;for(s=0;su[1].hi&&(a[1].hi=Math.max(o,a[1].hi),u[1].lo=Math.min(i,u[1].lo)),a[1].hi{"use strict";var ENe=px&&px.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(px,"__esModule",{value:!0});var yo=ENe(Wu()),cx=mc();function Iee(e,t,r,n,i){if(!i)return{asymptote:!0,d0:e,d1:t};let o=10,l=e[0],s=t[0],a=yo.default.linspace(l,s,o),u,f;for(let p=0;p=2&&n!==g&&Math.abs(h/u)>1){let x=Iee(t[a-1],t[a],e,g,3);x.asymptote?(t[a-1][0]=x.d0[0],t[a-1][1]=yo.default.clamp(x.d0[1],o,l),i.push(s),t[a][0]=x.d1[0],t[a][1]=yo.default.clamp(x.d1[1],o,l),s=[t[a]]):s.push(t[a])}else s.push(t[a]);s.length>1&&(u=s[s.length-1][0]-s[s.length-2][0],n=g),++a}return s.length&&i.push(s),i}function CNe(e){let t=yo.default.space(e.xAxis,e.range,e.nSamples),r=e.yScale.domain(),n=r[0]-yo.default.infinity(),i=r[1]+yo.default.infinity(),o=[];for(let s=0;s{"use strict";var yO=mx&&mx.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(mx,"__esModule",{value:!0});var Lee=yO(Th()),INe=yO(Fee()),kNe=yO(kee());function LNe(e,t){let r=t.range||[-1/0,1/0],n=Math.max(e.domain()[0],r[0]),i=Math.min(e.domain()[1],r[1]);return[n,i]}function BNe(e,t){let r=LNe(e.meta.xScale,t),n;if(t.sampler==="builtIn")n=kNe.default;else if(t.sampler==="interval")n=INe.default;else throw new Error(`Invalid sampler function ${t.sampler}`);let i=t.nSamples||Math.min(Lee.default.MAX_ITERATIONS,Lee.default.DEFAULT_ITERATIONS||e.meta.width*2),o=n({d:t,range:r,xScale:e.meta.xScale,yScale:e.meta.yScale,xAxis:e.options.xAxis,yAxis:e.options.yAxis,nSamples:i});return e.emit("eval",o,t.index,t.isHelper),o}mx.default=BNe});var Ree=st(dx=>{"use strict";var Pee=dx&&dx.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(dx,"__esModule",{value:!0});var Bee=(Zn(),Hn(js)),wO=(a0(),Hn(o0)),yS=Pee(Wu()),PNe=Pee(xS());function RNe(e){function t(r){r.each(function(n){let i=t.el=(0,Bee.select)(this),o=n.index,l=(0,PNe.default)(e,n),s=yS.default.color(n,o),a=i.selectAll(":scope > path.line").data(l),u=e.meta.yScale.range(),f=u[0],p=u[1],h=f-p;f+=h*1e6,p-=h*1e6,n.skipBoundsCheck&&(f=yS.default.infinity(),p=-yS.default.infinity());function g(C){return yS.default.clamp(e.meta.yScale(C[1]),p,f)}let x=(0,wO.line)().curve(wO.curveLinear).x(function(C){return e.meta.xScale(C[0])}).y(g),v=(0,wO.area)().x(function(C){return e.meta.xScale(C[0])}).y0(e.meta.yScale(0)).y1(g),S=`line line-${o}`,D=a.enter().append("path").attr("class",S).attr("stroke-width",1).attr("stroke-linecap","round");a.merge(D).each(function(){let C=(0,Bee.select)(this),E;if(n.closed?(C.attr("fill",s),C.attr("fill-opacity",.3),E=v):(C.attr("fill","none"),E=x),C.attr("stroke",s).attr("marker-end",function(){return n.fnType==="vector"?"url(#"+e.markerId+")":null}).attr("d",E),n.attr)for(let M in n.attr){let T=n.attr[M];M==="class"&&(T=`${S} ${n.attr[M]}`),C.attr(M,T)}}),a.exit().remove()})}return t}dx.default=RNe});var zee=st(hx=>{"use strict";var qee=hx&&hx.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(hx,"__esModule",{value:!0});var qNe=(Zn(),Hn(js)),zNe=qee(xS()),UNe=qee(Wu());function HNe(e){let t,r=e.meta.xScale,n=e.meta.yScale;function i(s,a,u,f){if(u>f){let g=u;u=f,f=g}let p=Math.min(a,f),h=Math.max(s,u);return h>p?[-t,0]:[h,p]}let o=function(s,a){let u="",f=n.range(),p=Math.min.apply(Math,f),h=Math.max.apply(Math,f);for(let g=0,x=s.length;g path.line").data(h);t=Math.max(h[0].scaledDx,1);let x=`line line-${f}`,v=g.enter().append("path").attr("class",x).attr("fill","none"),S=g.merge(v).attr("stroke-width",t).attr("stroke",UNe.default.color(a,f)).attr("opacity",p?.5:1).attr("d",function(D){return o(D,p)});if(a.attr)for(let D in a.attr){let C=a.attr[D];D==="class"&&(C=`${x} ${a.attr[D]}`),S.attr(D,C)}g.exit().remove()})}return l}hx.default=HNe});var Hee=st(gx=>{"use strict";var Uee=gx&&gx.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(gx,"__esModule",{value:!0});var $Ne=(Zn(),Hn(js)),WNe=(Qs(),Hn(HD)),VNe=Uee(Wu()),GNe=Uee(xS());function YNe(e){let t=e.meta.xScale,r=e.meta.yScale;function n(i){i.each(function(o){let l,s,a=o.index,u=VNe.default.color(o,a),f=(0,GNe.default)(e,o),p=[];for(l=0;l circle.scatter").data(p),g=`scatter scatter-${a}`,x=h.enter().append("circle").attr("class",g),v=h.merge(x).attr("fill",(0,WNe.hsl)(u.toString()).brighter(1.5).formatHex()).attr("stroke",u).attr("opacity",.7).attr("r",1).attr("cx",function(S){return t(S[0])}).attr("cy",function(S){return r(S[1])});if(o.attr)for(let S in o.attr){let D=o.attr[S];S==="class"&&(D=`${g} ${o.attr[S]}`),v.attr(S,D)}h.exit().remove()})}return n}gx.default=YNe});var $ee=st(vx=>{"use strict";var ZNe=vx&&vx.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(vx,"__esModule",{value:!0});var XNe=(Zn(),Hn(js)),KNe=(Qs(),Hn(HD)),JNe=ZNe(Wu());function QNe(e){let t=e.meta.xScale,r=e.meta.yScale;function n(i){i.each(function(o){o.sampler="builtIn",o.fnType="vector";let l=(0,XNe.select)(this).selectAll(":scope > text.fn-text").data([o.location]),s=l.enter().append("text").attr("class",`fn-text fn-text-${o.index}`),a=JNe.default.color(o,o.index),u=l.merge(s).attr("fill",(0,KNe.hsl)(a.toString()).brighter(1.5).formatHex()).attr("x",f=>t(f[0])).attr("y",f=>r(f[1])).text(()=>o.text);if(o.attr)for(let f in o.attr)u.attr(f,o.attr[f]);l.exit().remove()})}return n}vx.default=QNe});var xx=st(hs=>{"use strict";var wS=hs&&hs.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(hs,"__esModule",{value:!0});hs.text=hs.scatter=hs.interval=hs.polyline=void 0;var jNe=wS(Ree());hs.polyline=jNe.default;var eEe=wS(zee());hs.interval=eEe.default;var tEe=wS(Hee());hs.scatter=tEe.default;var rEe=wS($ee());hs.text=rEe.default});var bS=st(bO=>{"use strict";Object.defineProperty(bO,"__esModule",{value:!0});function nEe(e){return"graphType"in e||(e.graphType="interval"),"sampler"in e||(e.sampler=e.graphType!=="interval"?"builtIn":"interval"),"fnType"in e||(e.fnType="linear"),e}bO.default=nEe});var Gee=st(yx=>{"use strict";var Vee=yx&&yx.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(yx,"__esModule",{value:!0});var iEe=(Zn(),Hn(js)),oEe=xx(),Wee=mc(),aEe=Vee(bS()),sEe=Vee(Wu());function uEe(e){let t=(0,aEe.default)({isHelper:!0,skipTip:!0,skipBoundsCheck:!0,nSamples:2,graphType:"polyline"});function r(o){if(!o.derivative)return[];let l=typeof o.derivative.x0=="number"?o.derivative.x0:sEe.default.infinity();return t.index=o.index,t.scope={m:(0,Wee.builtIn)(o.derivative,"fn",{x:l}),x0:l,y0:(0,Wee.builtIn)(o,"fn",{x:l})},t.fn="m * (x - x0) + y0",[t]}function n(o){let l=this;o.derivative&&o.derivative.updateOnMouseMove&&!o.derivative.$$mouseListener&&(o.derivative.$$mouseListener=function({x:s}){o.derivative&&(o.derivative.x0=s),i(l)},e.on("tip:update",o.derivative.$$mouseListener))}let i=function(o){o.each(function(l){let s=(0,iEe.select)(this),a=r.call(o,l);n.call(o,l);let u=s.selectAll("g.derivative").data(a),f=u.enter().append("g").attr("class","derivative");u.merge(f).call((0,oEe.polyline)(e)),u.merge(f).selectAll("path").attr("opacity",.5),u.exit().remove()})};return i}yx.default=uEe});var Xee=st(wx=>{"use strict";var Zee=wx&&wx.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(wx,"__esModule",{value:!0});var lEe=(Zn(),Hn(js)),Yee=mc(),fEe=Zee(bS()),cEe=xx(),pEe=Zee(Wu());function mEe(e){let t=(0,fEe.default)({isHelper:!0,skipTip:!0,skipBoundsCheck:!0,nSamples:2,graphType:"polyline"});function r(a){a.m=(a.y1-a.y0)/(a.x1-a.x0)}function n(a,u){if(!("x0"in u))throw Error("secant must have the property `x0` defined");u.scope=u.scope||{};let f=u.x0,p=typeof u.x1=="number"?u.x1:pEe.default.infinity();Object.assign(u.scope,{x0:f,x1:p,y0:(0,Yee.builtIn)(a,"fn",{x:f}),y1:(0,Yee.builtIn)(a,"fn",{x:p})}),r(u.scope)}function i(a,u){n(a,u),u.fn="m * (x - x0) + y0"}function o(a,u){let f=this;u.updateOnMouseMove&&!u.$$mouseListener&&(u.$$mouseListener=function({x:p}){u.x1=p,n(a,u),s(f)},e.on("tip:update",u.$$mouseListener))}function l(a){let u=this,f=[];a.secants=a.secants||[];for(let p=0;p{"use strict";var Kee=bx&&bx.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(bx,"__esModule",{value:!0});var dEe=(Zn(),Hn(js)),hEe=Kee(Gee()),gEe=Kee(Xee());function vEe(e){function t(r){r.each(function(){let n=(0,dEe.select)(this);n.call((0,hEe.default)(e)),n.call((0,gEe.default)(e))})}return t}bx.default=vEe});var tte=st(qh=>{"use strict";var zh=qh&&qh.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(qh,"__esModule",{value:!0});qh.Chart=void 0;var xEe=(a0(),Hn(o0)),yEe=(ED(),Hn(lG)),Jee=(PZ(),Hn(BZ)),Qee=(YZ(),Hn(GZ)),wEe=(PJ(),Hn(BJ)),DS=(Zn(),Hn(js)),jee=(Rl(),Hn(LY)),bEe=zh(ZJ()),DEe=zh(XJ()),SEe=zh(Tee()),NEe=zh(DO()),EEe=zh(bS()),SS=zh(Th());function ete(e){return e==="linear"?Jee.scaleLinear:Jee.scaleLog}var NS=class e extends bEe.default.EventEmitter{constructor(t){super();let r=Math.random(),n=String.fromCharCode(Math.floor(r*26)+97);this.options=t,this.id=n+r.toString(16).substr(2),this.options.id=this.id,this.markerId=this.id+"-marker",e.cache[this.id]=this,this.linkedGraphs=[this],this.meta={},this.setUpEventListeners()}build(){return this.internalVars(),this.drawGraphWrapper(),this}getDraggableNode(){return(0,DS.select)(this.options.target).select(".zoom-and-drag").node()}getEmitInstance(){let t=this,r=this.getDraggableNode();return r&&(t=r.instance),t}internalVars(){let t=this.meta.margin={left:40,right:20,top:20,bottom:20};this.options.title&&(this.meta.margin.top=40),this.meta.width=(this.options.width||SS.default.DEFAULT_WIDTH)-t.left-t.right,this.meta.height=(this.options.height||SS.default.DEFAULT_HEIGHT)-t.top-t.bottom,this.initializeAxes()}initializeAxes(){let t=this,r=(0,yEe.format)("~s");function n(s){return Math.abs(s)-Math.floor(Math.abs(s))>0?s.toString():r(s)}function i(s){let a=s[1]-s[0];return t.meta.height*a/t.meta.width}this.options.xAxis=this.options.xAxis||{},this.options.xAxis.type=this.options.xAxis.type||"linear",this.options.yAxis=this.options.yAxis||{},this.options.yAxis.type=this.options.yAxis.type||"linear";let o=this.meta.xDomain=function(s){if(s.domain)return s.domain;if(s.type==="linear")return[-12/2,12/2];if(s.type==="log")return[1,10];throw Error("axis type "+s.type+" unsupported")}(this.options.xAxis),l=this.meta.yDomain=function(s){if(s.domain)return s.domain;let a=i(o);if(s.type==="linear")return[-a/2,a/2];if(s.type==="log")return[1,10];throw Error("axis type "+s.type+" unsupported")}(this.options.yAxis);this.meta.xScale||(this.meta.xScale=ete(this.options.xAxis.type)()),this.meta.xScale.domain(o).range(this.options.xAxis.invert?[this.meta.width,0]:[0,this.meta.width]),this.meta.yScale||(this.meta.yScale=ete(this.options.yAxis.type)()),this.meta.yScale.domain(l).range(this.options.yAxis.invert?[0,this.meta.height]:[this.meta.height,0]),this.meta.xAxis||(this.meta.xAxis=(0,Qee.axisBottom)(this.meta.xScale)),this.meta.xAxis.tickSize(this.options.grid?-this.meta.height:0).tickFormat(n),this.meta.yAxis||(this.meta.yAxis=(0,Qee.axisLeft)(this.meta.yScale)),this.meta.yAxis.tickSize(this.options.grid?-this.meta.width:0).tickFormat(n),this.line=(0,xEe.line)().x(function(s){return t.meta.xScale(s[0])}).y(function(s){return t.meta.yScale(s[1])})}drawGraphWrapper(){let t=this.root=(0,DS.select)(this.options.target).selectAll("svg").data([this.options]);this.root.enter=t.enter().append("svg").attr("class","function-plot").attr("font-size",this.getFontSize()),t.merge(this.root.enter).attr("width",this.meta.width+this.meta.margin.left+this.meta.margin.right).attr("height",this.meta.height+this.meta.margin.top+this.meta.margin.bottom),this.buildTitle(),this.buildLegend(),this.buildCanvas(),this.buildClip(),this.buildAxis(),this.buildAxisLabel();let r=this.tip=(0,SEe.default)(Object.assign(this.options.tip||{},{owner:this}));this.canvas.merge(this.canvas.enter).call(r),this.setUpPlugins(),this.draw(),this.buildZoomHelper()}buildTitle(){let t=this.root.merge(this.root.enter).selectAll("text.title").data(function(n){return[n.title].filter(Boolean)});t.enter().append("text").merge(t).attr("class","title").attr("y",this.meta.margin.top/2).attr("x",this.meta.margin.left+this.meta.width/2).attr("font-size",25).attr("text-anchor","middle").attr("alignment-baseline","middle").text(this.options.title),t.exit().remove()}buildLegend(){this.root.enter.append("text").attr("class","top-right-legend").attr("text-anchor","end"),this.root.merge(this.root.enter).select(".top-right-legend").attr("y",this.meta.margin.top/2).attr("x",this.meta.width+this.meta.margin.left)}buildCanvas(){let t=this.canvas=this.root.merge(this.root.enter).selectAll(".canvas").data(function(r){return[r]});this.canvas.enter=t.enter().append("g").attr("class","canvas")}buildClip(){let t=this.id,r=this.canvas.enter.append("defs");r.append("clipPath").attr("id","function-plot-clip-"+t).append("rect").attr("class","clip static-clip"),this.canvas.merge(this.canvas.enter).selectAll(".clip").attr("width",this.meta.width).attr("height",this.meta.height),r.append("clipPath").append("marker").attr("id",this.markerId).attr("viewBox","0 -5 10 10").attr("refX",10).attr("markerWidth",5).attr("markerHeight",5).attr("orient","auto").append("svg:path").attr("d","M0,-5L10,0L0,5L0,0").attr("stroke-width","0px").attr("fill-opacity",1).attr("fill","#777")}buildAxis(){let t=this.canvas.enter;t.append("g").attr("class","x axis"),t.append("g").attr("class","y axis"),this.canvas.merge(this.canvas.enter).select(".x.axis").attr("transform","translate(0,"+this.meta.height+")").call(this.meta.xAxis),this.canvas.merge(this.canvas.enter).select(".y.axis").call(this.meta.yAxis)}buildAxisLabel(){let t=this.canvas,r=t.merge(t.enter).selectAll("text.x.axis-label").data(function(l){return[l.xAxis.label].filter(Boolean)}),n=r.enter().append("text").attr("class","x axis-label").attr("text-anchor","end");r.merge(n).attr("x",this.meta.width).attr("y",this.meta.height-6).text(function(l){return l}),r.exit().remove();let i=t.merge(t.enter).selectAll("text.y.axis-label").data(function(l){return[l.yAxis.label].filter(Boolean)}),o=i.enter().append("text").attr("class","y axis-label").attr("y",6).attr("dy",".75em").attr("text-anchor","end").attr("transform","rotate(-90)");i.merge(o).text(function(l){return l}),i.exit().remove()}buildContent(){let t=this,r=this.canvas;r.merge(r.enter).attr("transform","translate("+this.meta.margin.left+","+this.meta.margin.top+")");let n=this.content=r.merge(r.enter).selectAll(":scope > g.content").data(function(s){return[s]}),i=n.enter().append("g").attr("clip-path","url(#function-plot-clip-"+this.id+")").attr("class","content");if(this.options.xAxis.type==="linear"){let s=n.merge(i).selectAll(":scope > path.y.origin").data([[[0,this.meta.yScale.domain()[0]],[0,this.meta.yScale.domain()[1]]]]),a=s.enter().append("path").attr("class","y origin").attr("stroke","black").attr("opacity",.2);s.merge(a).attr("d",this.line)}if(this.options.yAxis.type==="linear"){let s=n.merge(i).selectAll(":scope > path.x.origin").data([[[this.meta.xScale.domain()[0],0],[this.meta.xScale.domain()[1],0]]]),a=s.enter().append("path").attr("class","x origin").attr("stroke","black").attr("opacity",.2);s.merge(a).attr("d",this.line)}n.merge(i).call((0,DEe.default)({owner:t}));let o=n.merge(i).selectAll(":scope > g.graph").data(s=>s.data.map(EEe.default),s=>s.fn||s.r||s.x||s.text);o.exit().remove();let l=o.enter().append("g").attr("class","graph");o.merge(l).each(function(s,a){s.index=a;let u=(0,DS.select)(this);u.call(SS.default.graphTypes[s.graphType](t)),u.call((0,NEe.default)(t))})}buildZoomHelper(){let t=this;this.meta.zoomBehavior||(this.meta.zoomBehavior=(0,wEe.zoom)().on("zoom",function(n){t.getEmitInstance().emit("all:zoom",n)}),t.meta.zoomBehavior.xScale=t.meta.xScale.copy(),t.meta.zoomBehavior.yScale=t.meta.yScale.copy()),t.meta.zoomBehavior.xScale.range(t.meta.xScale.range()),t.meta.zoomBehavior.yScale.range(t.meta.yScale.range()),this.canvas.enter.append("rect").call(this.meta.zoomBehavior).attr("class","zoom-and-drag").style("fill","none").style("pointer-events","all").on("mouseover",function(r){t.getEmitInstance().emit("all:mouseover",r)}).on("mouseout",function(r){t.getEmitInstance().emit("all:mouseout",r)}).on("mousemove",function(r){t.getEmitInstance().emit("all:mousemove",r)}),this.draggable=this.canvas.merge(this.canvas.enter).select(".zoom-and-drag").call(r=>{r.node()&&(r.node().instance=t)}).attr("width",this.meta.width).attr("height",this.meta.height)}setUpPlugins(){let t=this.options.plugins||[],r=this;t.forEach(function(n){n(r)})}addLink(){for(let t=0;tthis.meta.height?this.meta.height:s,r.select(".x.axis").attr("transform","translate(0,"+s+")"),r.selectAll(".x.axis path, .x.axis line").attr("transform","translate(0,"+(this.meta.height/2-s+this.meta.height/2)+")")}if(r.select(".y.axis").call(t.meta.yAxis),this.options.yAxis.position==="sticky"){let n=this.meta.xScale.domain()[0],i=this.meta.xScale.domain()[1],o=(i+n)/2,s=this.meta.width/(n-i)*o+this.meta.width/2;s=s<0?0:s,s=s>this.meta.width?this.meta.width:s,r.select(".y.axis").attr("transform","translate("+s+",0)"),r.selectAll(".y.axis path, .y.axis line").attr("transform","translate("+-s+",0)")}r.selectAll(".axis path, .axis line").attr("fill","none").attr("stroke","black").attr("shape-rendering","crispedges").attr("opacity",.1)}syncOptions(){this.options.xAxis.domain=this.meta.xScale.domain(),this.options.yAxis.domain=this.meta.yScale.domain()}getFontSize(){return Math.max(Math.max(this.meta.width,this.meta.height)/50,8)}draw(){let t=this;t.emit("before:draw"),t.syncOptions(),t.updateAxes(),t.buildContent(),t.emit("after:draw")}setUpEventListeners(){let t=this,r=this.getEmitInstance();r&&r.removeAllListeners();let n={mousemove:function(o){t.tip.move(o)},mouseover:function(){t.tip.show()},mouseout:function(){t.tip.hide()},zoom:function({transform:l}){if(t.options.disableZoom)return;let s=l.rescaleX(t.meta.zoomBehavior.xScale).interpolate(jee.interpolateRound),a=l.rescaleY(t.meta.zoomBehavior.yScale).interpolate(jee.interpolateRound);t.meta.xScale.domain(s.domain()).range(s.range()),t.meta.yScale.domain(a.domain()).range(a.range())},"tip:update":function({x:o,y:l,index:s}){let a=t.root.merge(t.root.enter).datum().data[s],u=a.title||"",f=a.renderer||function(h,g){return h.toFixed(3)+", "+g.toFixed(3)},p=[];u&&p.push(u),p.push(f(o,l)),t.root.select(".top-right-legend").attr("fill",SS.default.COLORS[s]).text(p.join(" "))}},i={mousemove:function(o){let l=(0,DS.pointer)(o,t.draggable.node()),s={x:t.meta.xScale.invert(l[0]),y:t.meta.yScale.invert(l[1])};t.linkedGraphs.forEach(function(a){a.emit("before:mousemove",s),a.emit("mousemove",s)})},zoom:function(o){t.linkedGraphs.forEach(function(l){l.draggable.node().__zoom=t.draggable.node().__zoom,l.emit("zoom",o),l.draw()}),t.emit("all:mousemove",o)}};Object.keys(n).forEach(function(o){!i[o]&&t.on("all:"+o,function(){let l=Array.prototype.slice.call(arguments);t.linkedGraphs.forEach(function(s){let a=l.slice();a.unshift(o),s.emit.apply(s,a)})}),t.on(o,n[o])}),Object.keys(i).forEach(function(o){t.on("all:"+o,i[o])})}};qh.Chart=NS;NS.cache={}});var nte=st(rte=>{"use strict";Object.defineProperty(rte,"__esModule",{value:!0})});var ute=st(sn=>{"use strict";var ite=sn&&sn.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),AEe=sn&&sn.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ote=sn&&sn.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&ite(t,e,r);return AEe(t,e),t},ate=sn&&sn.__exportStar||function(e,t){for(var r in e)r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r)&&ite(t,e,r)};Object.defineProperty(sn,"__esModule",{value:!0});sn.GraphTypeScatter=sn.GraphTypePolyline=sn.GraphTypeInterval=sn.EvalInterval=sn.EvalBuiltIn=sn.registerGraphType=sn.Chart=void 0;gW();var SO=tte();Object.defineProperty(sn,"Chart",{enumerable:!0,get:function(){return SO.Chart}});var Uh=ote(Th());Object.defineProperty(sn,"registerGraphType",{enumerable:!0,get:function(){return Uh.registerGraphType}});var rm=xx(),CEe=ote(mc());(0,Uh.registerGraphType)("polyline",rm.polyline);(0,Uh.registerGraphType)("interval",rm.interval);(0,Uh.registerGraphType)("scatter",rm.scatter);(0,Uh.registerGraphType)("text",rm.text);function ES(e){e.data=e.data||[];let t=SO.Chart.cache[e.id];return t||(t=new SO.Chart(e)),t.build()}sn.default=ES;ES.globals=Uh.default;ES.$eval=CEe;ES.graphTypes={interval:rm.interval,polyline:rm.polyline,scatter:rm.scatter};ate(nte(),sn);var ste=mc();Object.defineProperty(sn,"EvalBuiltIn",{enumerable:!0,get:function(){return ste.builtIn}});Object.defineProperty(sn,"EvalInterval",{enumerable:!0,get:function(){return ste.interval}});var NO=xx();Object.defineProperty(sn,"GraphTypeInterval",{enumerable:!0,get:function(){return NO.interval}});Object.defineProperty(sn,"GraphTypePolyline",{enumerable:!0,get:function(){return NO.polyline}});Object.defineProperty(sn,"GraphTypeScatter",{enumerable:!0,get:function(){return NO.scatter}});ate(DO(),sn)});var ke=e=>document.querySelector(e),io=e=>document.querySelectorAll(e),bt={get:e=>JSON.parse(localStorage.getItem(e)),set:(e,t)=>{localStorage.setItem(e,JSON.stringify(t))}},Ie={activePlot:null,activePage:null,colors:null,currencyRates:{},mathScope:{},plotFunction:null,refreshCM:!0,settings:null,udfList:[],uduList:[]};var UO=(e,t,r=[])=>{let n=document.createElementNS("http://www.w3.org/2000/svg",e);return Object.keys(t).forEach(i=>{n.setAttribute(i,String(t[i]))}),r.length&&r.forEach(i=>{let o=UO(...i);n.appendChild(o)}),n},HO=([e,t,r])=>UO(e,t,r);var Xte=e=>Array.from(e.attributes).reduce((t,r)=>(t[r.name]=r.value,t),{}),Kte=e=>typeof e=="string"?e:!e||!e.class?"":e.class&&typeof e.class=="string"?e.class.split(" "):e.class&&Array.isArray(e.class)?e.class:"",Jte=e=>e.flatMap(Kte).map(r=>r.trim()).filter(Boolean).filter((r,n,i)=>i.indexOf(r)===n).join(" "),Qte=e=>e.replace(/(\w)(\w*)(_|-|\s*)/g,(t,r,n)=>r.toUpperCase()+n.toLowerCase()),ON=(e,{nameAttr:t,icons:r,attrs:n})=>{let i=e.getAttribute(t);if(i==null)return;let o=Qte(i),l=r[o];if(!l)return console.warn(`${e.outerHTML} icon name was not found in the provided icons object.`);let s=Xte(e),[a,u,f]=l,p={...u,"data-lucide":i,...n,...s},h=Jte(["lucide",`lucide-${i}`,s,n]);h&&Object.assign(p,{class:h});let g=HO([a,p,f]);return e.parentNode?.replaceChild(g,e)};var or={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};var FN=["svg",or,[["path",{d:"m21 16-4 4-4-4"}],["path",{d:"M17 20V4"}],["path",{d:"m3 8 4-4 4 4"}],["path",{d:"M7 4v16"}]]];var Ky=["svg",or,[["path",{d:"M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1"}],["path",{d:"M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1"}]]];var Jy=["svg",or,[["circle",{cx:"12",cy:"12",r:"10"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16"}]]];var IN=["svg",or,[["circle",{cx:"12",cy:"12",r:"10"}]]];var kN=["svg",or,[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"}]]];var LN=["svg",or,[["polyline",{points:"15 10 20 15 15 20"}],["path",{d:"M4 4v7a4 4 0 0 0 4 4h12"}]]];var BN=["svg",or,[["circle",{cx:"12.1",cy:"12.1",r:"1"}]]];var PN=["svg",or,[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}],["polyline",{points:"7 10 12 15 17 10"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3"}]]];var Qy=["svg",or,[["circle",{cx:"12",cy:"12",r:"1"}],["circle",{cx:"12",cy:"5",r:"1"}],["circle",{cx:"12",cy:"19",r:"1"}]]];var RN=["svg",or,[["path",{d:"m7 21-4.3-4.3c-1-1-1-2.5 0-3.4l9.6-9.6c1-1 2.5-1 3.4 0l5.6 5.6c1 1 1 2.5 0 3.4L13 21"}],["path",{d:"M22 21H7"}],["path",{d:"m5 11 9 9"}]]];var qN=["svg",or,[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"M12 16v-4"}],["path",{d:"M12 8h.01"}]]];var zN=["svg",or,[["path",{d:"M21 6H3"}],["path",{d:"M7 12H3"}],["path",{d:"M7 18H3"}],["path",{d:"M12 18a5 5 0 0 0 9-3 4.5 4.5 0 0 0-4.5-4.5c-1.33 0-2.54.54-3.41 1.41L11 14"}],["path",{d:"M11 10v4h4"}]]];var UN=["svg",or,[["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor"}],["path",{d:"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z"}]]];var jy=["svg",or,[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}],["path",{d:"M9 3v18"}],["path",{d:"m16 15-3-3 3-3"}]]];var e1=["svg",or,[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}],["path",{d:"M9 3v18"}]]];var HN=["svg",or,[["path",{d:"M5 12h14"}],["path",{d:"M12 5v14"}]]];var $N=["svg",or,[["path",{d:"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2"}],["path",{d:"M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6"}],["rect",{x:"6",y:"14",width:"12",height:"8",rx:"1"}]]];var WN=["svg",or,[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"}],["path",{d:"M3 3v5h5"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16"}],["path",{d:"M16 16h5v5"}]]];var VN=["svg",or,[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"}],["path",{d:"M3 3v5h5"}]]];var GN=["svg",or,[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}],["path",{d:"M14 15H9v-5"}],["path",{d:"M16 3h5v5"}],["path",{d:"M21 3 9 15"}]]];var YN=["svg",or,[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"}],["circle",{cx:"12",cy:"12",r:"3"}]]];var ZN=["svg",or,[["path",{d:"M3 6h18"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"}]]];var XN=["svg",or,[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}],["polyline",{points:"17 8 12 3 7 8"}],["line",{x1:"12",x2:"12",y1:"3",y2:"15"}]]];var $O=({icons:e={},nameAttr:t="data-lucide",attrs:r={}}={})=>{if(!Object.values(e).length)throw new Error(`Please provide an icons object. +`),o=new Function("defs",i);return o(this.defs)};sS.prototype.parse=function(e){var t=this,r=new L2e().parse(e);return this.statements=r.blocks.map(function(n){return t.interpreter.next(n)}),this};kj.exports=sS});var Pj=st((TNt,Bj)=>{"use strict";Bj.exports=Lj()});var Qu=st(qi=>{"use strict";Object.defineProperty(qi,"__esModule",{value:!0});qi.intervalsOverlap=qi.hasInterval=qi.hasValue=qi.zeroIn=qi.isSingleton=qi.isWhole=qi.isEmpty=qi.isInterval=void 0;function R2e(e){return typeof e=="object"&&typeof e.lo=="number"&&typeof e.hi=="number"}qi.isInterval=R2e;function Lh(e){return e.lo>e.hi}qi.isEmpty=Lh;function q2e(e){return e.lo===-1/0&&e.hi===1/0}qi.isWhole=q2e;function z2e(e){return e.lo===e.hi}qi.isSingleton=z2e;function U2e(e){return Rj(e,0)}qi.zeroIn=U2e;function Rj(e,t){return Lh(e)?!1:e.lo<=t&&t<=e.hi}qi.hasValue=Rj;function H2e(e,t){return Lh(e)?!0:!Lh(t)&&t.lo<=e.lo&&e.hi<=t.hi}qi.hasInterval=H2e;function $2e(e,t){return Lh(e)||Lh(t)?!1:e.lo<=t.lo&&t.lo<=e.hi||t.lo<=e.lo&&e.lo<=t.hi}qi.intervalsOverlap=$2e});var qj=st((ONt,Jn)=>{var cO=!1;if(typeof Float64Array<"u")if(tu=new Float64Array(1),ko=new Uint32Array(tu.buffer),tu[0]=1,cO=!0,ko[1]===1072693248){let e=function(n,i){return ko[0]=n,ko[1]=i,tu[0]},t=function(n){return tu[0]=n,ko[0]},r=function(n){return tu[0]=n,ko[1]};W2e=e,V2e=t,G2e=r,Jn.exports=function(i){return tu[0]=i,[ko[0],ko[1]]},Jn.exports.pack=e,Jn.exports.lo=t,Jn.exports.hi=r}else if(ko[0]===1072693248){let e=function(n,i){return ko[1]=n,ko[0]=i,tu[0]},t=function(n){return tu[0]=n,ko[1]},r=function(n){return tu[0]=n,ko[0]};Y2e=e,Z2e=t,X2e=r,Jn.exports=function(i){return tu[0]=i,[ko[1],ko[0]]},Jn.exports.pack=e,Jn.exports.lo=t,Jn.exports.hi=r}else cO=!1;var tu,ko,W2e,V2e,G2e,Y2e,Z2e,X2e;if(!cO){let e=function(n,i){return ru.writeUInt32LE(n,0,!0),ru.writeUInt32LE(i,4,!0),ru.readDoubleLE(0,!0)},t=function(n){return ru.writeDoubleLE(n,0,!0),ru.readUInt32LE(0,!0)},r=function(n){return ru.writeDoubleLE(n,0,!0),ru.readUInt32LE(4,!0)};K2e=e,J2e=t,Q2e=r,ru=new Buffer(8),Jn.exports=function(i){return ru.writeDoubleLE(i,0,!0),[ru.readUInt32LE(0,!0),ru.readUInt32LE(4,!0)]},Jn.exports.pack=e,Jn.exports.lo=t,Jn.exports.hi=r}var ru,K2e,J2e,Q2e;Jn.exports.sign=function(e){return Jn.exports.hi(e)>>>31};Jn.exports.exponent=function(e){var t=Jn.exports.hi(e);return(t<<1>>>21)-1023};Jn.exports.fraction=function(e){var t=Jn.exports.lo(e),r=Jn.exports.hi(e),n=r&(1<<20)-1;return r&2146435072&&(n+=1<<20),[t,n]};Jn.exports.denormalized=function(e){var t=Jn.exports.hi(e);return!(t&2146435072)}});var $j=st((FNt,Hj)=>{"use strict";var pO=qj(),zj=Math.pow(2,-1074),Uj=-1>>>0;Hj.exports=j2e;function j2e(e,t){if(isNaN(e)||isNaN(t))return NaN;if(e===t)return e;if(e===0)return t<0?-zj:zj;var r=pO.hi(e),n=pO.lo(e);return t>e==e>0?n===Uj?(r+=1,n=0):n+=1:n===0?(n=Uj,r-=1):n-=1,pO.pack(n,r)}});var Ql=st(ox=>{"use strict";var eSe=ox&&ox.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ox,"__esModule",{value:!0});var Vj=eSe($j());function tSe(e){return e}function mO(e){return e===1/0?e:(0,Vj.default)(e,-1/0)}function dO(e){return e===-1/0?e:(0,Vj.default)(e,1/0)}function Wj(e){return e<0?Math.ceil(e):Math.floor(e)}var Bh={prev:mO,next:dO},gr={safePrev:mO,safeNext:dO,prev(e){return Bh.prev(e)},next(e){return Bh.next(e)},addLo(e,t){return gr.prev(e+t)},addHi(e,t){return gr.next(e+t)},subLo(e,t){return gr.prev(e-t)},subHi(e,t){return gr.next(e-t)},mulLo(e,t){return gr.prev(e*t)},mulHi(e,t){return gr.next(e*t)},divLo(e,t){return gr.prev(e/t)},divHi(e,t){return gr.next(e/t)},intLo(e){return Wj(gr.prev(e))},intHi(e){return Wj(gr.next(e))},logLo(e){return gr.prev(Math.log(e))},logHi(e){return gr.next(Math.log(e))},expLo(e){return gr.prev(Math.exp(e))},expHi(e){return gr.next(Math.exp(e))},sinLo(e){return gr.prev(Math.sin(e))},sinHi(e){return gr.next(Math.sin(e))},cosLo(e){return gr.prev(Math.cos(e))},cosHi(e){return gr.next(Math.cos(e))},tanLo(e){return gr.prev(Math.tan(e))},tanHi(e){return gr.next(Math.tan(e))},asinLo(e){return gr.prev(Math.asin(e))},asinHi(e){return gr.next(Math.asin(e))},acosLo(e){return gr.prev(Math.acos(e))},acosHi(e){return gr.next(Math.acos(e))},atanLo(e){return gr.prev(Math.atan(e))},atanHi(e){return gr.next(Math.atan(e))},sinhLo(e){return gr.prev(Math.sinh(e))},sinhHi(e){return gr.next(Math.sinh(e))},coshLo(e){return gr.prev(Math.cosh(e))},coshHi(e){return gr.next(Math.cosh(e))},tanhLo(e){return gr.prev(Math.tanh(e))},tanhHi(e){return gr.next(Math.tanh(e))},powLo(e,t){if(t%1!==0)return gr.prev(Math.pow(e,t));let r=(t&1)===1?e:1;for(t>>=1;t>0;)e=gr.mulLo(e,e),(t&1)===1&&(r=gr.mulLo(e,r)),t>>=1;return r},powHi(e,t){if(t%1!==0)return gr.next(Math.pow(e,t));let r=(t&1)===1?e:1;for(t>>=1;t>0;)e=gr.mulHi(e,e),(t&1)===1&&(r=gr.mulHi(e,r)),t>>=1;return r},sqrtLo(e){return gr.prev(Math.sqrt(e))},sqrtHi(e){return gr.next(Math.sqrt(e))},disable(){Bh.next=Bh.prev=tSe},enable(){Bh.next=dO,Bh.prev=mO}};ox.default=gr});var bc=st(ea=>{"use strict";var rSe=ea&&ea.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),nSe=ea&&ea.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),iSe=ea&&ea.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&rSe(t,e,r);return nSe(t,e),t},oSe=ea&&ea.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ea,"__esModule",{value:!0});ea.Interval=ea._Interval=void 0;var uS=iSe(Qu()),Ph=oSe(Ql()),lS=class e{constructor(t,r){if(this.lo=0,this.hi=0,!(this instanceof e))return console.log("calling with new"),console.log(t,r),new e(t,r);if(typeof t<"u"&&typeof r<"u"){if(uS.isInterval(t)){if(!uS.isSingleton(t))throw new TypeError("Interval: interval `lo` must be a singleton");t=t.lo}if(uS.isInterval(r)){if(!uS.isSingleton(r))throw TypeError("Interval: interval `hi` must be a singleton");r=r.hi}}else{if(typeof t<"u")return Array.isArray(t)?new Rh(t[0],t[1]):new Rh(t,t);t=r=0}this.assign(t,r)}singleton(t){return this.set(t,t)}bounded(t,r){return this.set(Ph.default.prev(t),Ph.default.next(r))}boundedSingleton(t){return this.bounded(t,t)}set(t,r){return this.lo=t,this.hi=r,this}assign(t,r){if(typeof t!="number"||typeof r!="number")throw TypeError("Interval#assign: arguments must be numbers");return isNaN(t)||isNaN(r)||t>r?this.setEmpty():this.set(t,r)}setEmpty(){return this.set(Number.POSITIVE_INFINITY,Number.NEGATIVE_INFINITY)}setWhole(){return this.set(Number.NEGATIVE_INFINITY,Number.POSITIVE_INFINITY)}open(t,r){return this.assign(Ph.default.safeNext(t),Ph.default.safePrev(r))}halfOpenLeft(t,r){return this.assign(Ph.default.safeNext(t),r)}halfOpenRight(t,r){return this.assign(t,Ph.default.safePrev(r))}toArray(){return[this.lo,this.hi]}clone(){return new Rh().set(this.lo,this.hi)}};ea._Interval=lS;function aSe(e){function t(){for(var r=arguments.length,n=Array(r),i=0;i{"use strict";var sSe=sx&&sx.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(sx,"__esModule",{value:!0});var Dc=bc(),Gj=sSe(Ql()),fS=(3373259426+273688/(1<<21))/(1<<30),cS=(3373259426+273689/(1<<21))/(1<<30),ax={PI_LOW:fS,PI_HIGH:cS,PI_HALF_LOW:fS/2,PI_HALF_HIGH:cS/2,PI_TWICE_LOW:fS*2,PI_TWICE_HIGH:cS*2,get E(){return new Dc.Interval(Gj.default.prev(Math.E),Gj.default.next(Math.E))},get PI(){return new Dc.Interval(fS,cS)},get PI_HALF(){return new Dc.Interval(ax.PI_HALF_LOW,ax.PI_HALF_HIGH)},get PI_TWICE(){return new Dc.Interval(ax.PI_TWICE_LOW,ax.PI_TWICE_HIGH)},get ZERO(){return new Dc.Interval(0)},get ONE(){return new Dc.Interval(1)},get WHOLE(){return new Dc.Interval().setWhole()},get EMPTY(){return new Dc.Interval().setEmpty()}};sx.default=ax});var hO=st(Ur=>{"use strict";var uSe=Ur&&Ur.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),lSe=Ur&&Ur.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),fSe=Ur&&Ur.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&uSe(t,e,r);return lSe(t,e),t};Object.defineProperty(Ur,"__esModule",{value:!0});Ur.geq=Ur.greaterEqualThan=Ur.leq=Ur.lessEqualThan=Ur.gt=Ur.greaterThan=Ur.lt=Ur.lessThan=Ur.notEqual=Ur.assertIncludes=Ur.almostEqual=Ur.equal=void 0;var ta=fSe(Qu());function cSe(e,t){return ta.isEmpty(e)?ta.isEmpty(t):!ta.isEmpty(t)&&e.lo===t.lo&&e.hi===t.hi}Ur.equal=cSe;var pSe=1e-7;function pS(e,t){if(!e)throw new Error(t||"assertion failed")}function Yj(e,t){if(!isFinite(e))return pS(e===t,`[Infinity] expected ${e} to be ${t}`);pS(Math.abs(e-t)t.hi}Ur.notEqual=dSe;function Xj(e,t){return ta.isEmpty(e)||ta.isEmpty(t)?!1:e.hit.hi}Ur.greaterThan=Kj;Ur.gt=Kj;function Jj(e,t){return ta.isEmpty(e)||ta.isEmpty(t)?!1:e.hi<=t.lo}Ur.lessEqualThan=Jj;Ur.leq=Jj;function Qj(e,t){return ta.isEmpty(e)||ta.isEmpty(t)?!1:e.lo>=t.hi}Ur.greaterEqualThan=Qj;Ur.geq=Qj});var tee=st(zi=>{"use strict";var hSe=zi&&zi.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),gSe=zi&&zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),vSe=zi&&zi.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&hSe(t,e,r);return gSe(t,e),t},jj=zi&&zi.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(zi,"__esModule",{value:!0});zi.zero=zi.negative=zi.positive=zi.nonZero=void 0;var ux=bc(),Do=jj(Ql()),eee=vSe(Qu()),gO=jj(mm());function xSe(e,t){let r=e.lo,n=e.hi,i=t.lo,o=t.hi,l=new ux.Interval;return n<0?o<0?(l.lo=Do.default.divLo(n,i),l.hi=Do.default.divHi(r,o)):(l.lo=Do.default.divLo(r,i),l.hi=Do.default.divHi(n,o)):r<0?o<0?(l.lo=Do.default.divLo(n,o),l.hi=Do.default.divHi(r,o)):(l.lo=Do.default.divLo(r,i),l.hi=Do.default.divHi(n,i)):o<0?(l.lo=Do.default.divLo(n,o),l.hi=Do.default.divHi(r,i)):(l.lo=Do.default.divLo(r,o),l.hi=Do.default.divHi(n,i)),l}zi.nonZero=xSe;function ySe(e,t){return e.lo===0&&e.hi===0?e:eee.zeroIn(e)?gO.default.WHOLE:e.hi<0?new ux.Interval(Number.NEGATIVE_INFINITY,Do.default.divHi(e.hi,t)):new ux.Interval(Do.default.divLo(e.lo,t),Number.POSITIVE_INFINITY)}zi.positive=ySe;function wSe(e,t){return e.lo===0&&e.hi===0?e:eee.zeroIn(e)?gO.default.WHOLE:e.hi<0?new ux.Interval(Do.default.divLo(e.hi,t),Number.POSITIVE_INFINITY):new ux.Interval(Number.NEGATIVE_INFINITY,Do.default.divHi(e.lo,t))}zi.negative=wSe;function bSe(e){return e.lo===0&&e.hi===0?e:gO.default.WHOLE}zi.zero=bSe});var qh=st(on=>{"use strict";var DSe=on&&on.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),SSe=on&&on.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ree=on&&on.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&DSe(t,e,r);return SSe(t,e),t},nee=on&&on.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(on,"__esModule",{value:!0});on.negative=on.positive=on.div=on.divide=on.mul=on.multiply=on.sub=on.subtract=on.add=void 0;var fx=bc(),_n=nee(Ql()),vO=nee(mm()),lx=ree(Qu()),mS=ree(tee());function NSe(e,t){return new fx.Interval(_n.default.addLo(e.lo,t.lo),_n.default.addHi(e.hi,t.hi))}on.add=NSe;function iee(e,t){return new fx.Interval(_n.default.subLo(e.lo,t.hi),_n.default.subHi(e.hi,t.lo))}on.subtract=iee;on.sub=iee;function oee(e,t){if(lx.isEmpty(e)||lx.isEmpty(t))return vO.default.EMPTY;let r=e.lo,n=e.hi,i=t.lo,o=t.hi,l=new fx.Interval;return r<0?n>0?i<0?o>0?(l.lo=Math.min(_n.default.mulLo(r,o),_n.default.mulLo(n,i)),l.hi=Math.max(_n.default.mulHi(r,i),_n.default.mulHi(n,o))):(l.lo=_n.default.mulLo(n,i),l.hi=_n.default.mulHi(r,i)):o>0?(l.lo=_n.default.mulLo(r,o),l.hi=_n.default.mulHi(n,o)):(l.lo=0,l.hi=0):i<0?o>0?(l.lo=_n.default.mulLo(r,o),l.hi=_n.default.mulHi(r,i)):(l.lo=_n.default.mulLo(n,o),l.hi=_n.default.mulHi(r,i)):o>0?(l.lo=_n.default.mulLo(r,o),l.hi=_n.default.mulHi(n,i)):(l.lo=0,l.hi=0):n>0?i<0?o>0?(l.lo=_n.default.mulLo(n,i),l.hi=_n.default.mulHi(n,o)):(l.lo=_n.default.mulLo(n,i),l.hi=_n.default.mulHi(r,o)):o>0?(l.lo=_n.default.mulLo(r,i),l.hi=_n.default.mulHi(n,o)):(l.lo=0,l.hi=0):(l.lo=0,l.hi=0),l}on.multiply=oee;on.mul=oee;function aee(e,t){return lx.isEmpty(e)||lx.isEmpty(t)?vO.default.EMPTY:lx.zeroIn(t)?t.lo!==0?t.hi!==0?mS.zero(e):mS.negative(e,t.lo):t.hi!==0?mS.positive(e,t.hi):vO.default.EMPTY:mS.nonZero(e,t)}on.divide=aee;on.div=aee;function ESe(e){return new fx.Interval(e.lo,e.hi)}on.positive=ESe;function ASe(e){return new fx.Interval(-e.hi,-e.lo)}on.negative=ASe});var dS=st(li=>{"use strict";var CSe=li&&li.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),MSe=li&&li.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),uee=li&&li.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&CSe(t,e,r);return MSe(t,e),t},lee=li&&li.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(li,"__esModule",{value:!0});li.nthRoot=li.sqrt=li.pow=li.multiplicativeInverse=li.fmod=void 0;var Oa=bc(),ro=lee(Ql()),ps=lee(mm()),Sc=uee(Qu()),see=uee(qh());function TSe(e,t){if(Sc.isEmpty(e)||Sc.isEmpty(t))return ps.default.EMPTY;let r=e.lo<0?t.lo:t.hi,n=e.lo/r;return n<0?n=Math.ceil(n):n=Math.floor(n),see.sub(e,see.mul(t,new Oa.Interval(n)))}li.fmod=TSe;function fee(e){return Sc.isEmpty(e)?ps.default.EMPTY:Sc.zeroIn(e)?e.lo!==0?e.hi!==0?ps.default.WHOLE:new Oa.Interval(Number.NEGATIVE_INFINITY,ro.default.divHi(1,e.lo)):e.hi!==0?new Oa.Interval(ro.default.divLo(1,e.hi),Number.POSITIVE_INFINITY):ps.default.EMPTY:new Oa.Interval(ro.default.divLo(1,e.hi),ro.default.divHi(1,e.lo))}li.multiplicativeInverse=fee;function cee(e,t){if(Sc.isEmpty(e))return ps.default.EMPTY;if(typeof t=="object"){if(!Sc.isSingleton(t))return ps.default.EMPTY;t=t.lo}if(t===0)return e.lo===0&&e.hi===0?ps.default.EMPTY:ps.default.ONE;if(t<0)return cee(fee(e),-t);if(Number.isSafeInteger(t))if(e.hi<0){let r=ro.default.powLo(-e.hi,t),n=ro.default.powHi(-e.lo,t);return(t&1)===1?new Oa.Interval(-n,-r):new Oa.Interval(r,n)}else return e.lo<0?(t&1)===1?new Oa.Interval(-ro.default.powLo(-e.lo,t),ro.default.powHi(e.hi,t)):new Oa.Interval(0,ro.default.powHi(Math.max(-e.lo,e.hi),t)):new Oa.Interval(ro.default.powLo(e.lo,t),ro.default.powHi(e.hi,t));else return console.warn("power is not an integer, you should use nth-root instead, returning an empty interval"),ps.default.EMPTY}li.pow=cee;function _Se(e){return pee(e,2)}li.sqrt=_Se;function pee(e,t){if(Sc.isEmpty(e)||t<0)return ps.default.EMPTY;if(typeof t=="object"){if(!Sc.isSingleton(t))return ps.default.EMPTY;t=t.lo}let r=1/t;if(e.hi<0){if(Number.isSafeInteger(t)&&(t&1)===1){let n=ro.default.powHi(-e.lo,r),i=ro.default.powLo(-e.hi,r);return new Oa.Interval(-n,-i)}return ps.default.EMPTY}else if(e.lo<0){let n=ro.default.powHi(e.hi,r);if(Number.isSafeInteger(t)&&(t&1)===1){let i=-ro.default.powHi(-e.lo,r);return new Oa.Interval(i,n)}return new Oa.Interval(0,n)}else return new Oa.Interval(ro.default.powLo(e.lo,r),ro.default.powHi(e.hi,r))}li.nthRoot=pee});var hS=st(lr=>{"use strict";var OSe=lr&&lr.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),FSe=lr&&lr.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),mee=lr&&lr.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&OSe(t,e,r);return FSe(t,e),t},dee=lr&&lr.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(lr,"__esModule",{value:!0});lr.clone=lr.min=lr.max=lr.abs=lr.wid=lr.width=lr.difference=lr.union=lr.intersection=lr.hull=lr.log2=lr.LOG_EXP_2=lr.log10=lr.LOG_EXP_10=lr.ln=lr.log=lr.exp=void 0;var Fa=bc(),cx=dee(Ql()),ms=dee(mm()),Ai=mee(Qu()),xO=mee(qh());function ISe(e){return Ai.isEmpty(e)?ms.default.EMPTY:new Fa.Interval(cx.default.expLo(e.lo),cx.default.expHi(e.hi))}lr.exp=ISe;function zh(e){if(Ai.isEmpty(e))return ms.default.EMPTY;let t=e.lo<=0?Number.NEGATIVE_INFINITY:cx.default.logLo(e.lo);return new Fa.Interval(t,cx.default.logHi(e.hi))}lr.log=zh;lr.ln=zh;lr.LOG_EXP_10=zh(new Fa.Interval(10,10));function kSe(e){return Ai.isEmpty(e)?ms.default.EMPTY:xO.div(zh(e),lr.LOG_EXP_10)}lr.log10=kSe;lr.LOG_EXP_2=zh(new Fa.Interval(2,2));function LSe(e){return Ai.isEmpty(e)?ms.default.EMPTY:xO.div(zh(e),lr.LOG_EXP_2)}lr.log2=LSe;function BSe(e,t){let r=Ai.isEmpty(e),n=Ai.isEmpty(t);return r&&n?ms.default.EMPTY:r?t.clone():n?e.clone():new Fa.Interval(Math.min(e.lo,t.lo),Math.max(e.hi,t.hi))}lr.hull=BSe;function PSe(e,t){if(Ai.isEmpty(e)||Ai.isEmpty(t))return ms.default.EMPTY;let r=Math.max(e.lo,t.lo),n=Math.min(e.hi,t.hi);return r<=n?new Fa.Interval(r,n):ms.default.EMPTY}lr.intersection=PSe;function RSe(e,t){if(!Ai.intervalsOverlap(e,t))throw Error("Interval#union: intervals do not overlap");return new Fa.Interval(Math.min(e.lo,t.lo),Math.max(e.hi,t.hi))}lr.union=RSe;function qSe(e,t){if(Ai.isEmpty(e)||Ai.isWhole(t))return ms.default.EMPTY;if(Ai.intervalsOverlap(e,t)){if(e.lo=e.hi&&t.lo===-1/0?ms.default.EMPTY:t.lo<=e.lo?new Fa.Interval().halfOpenLeft(t.hi,e.hi):new Fa.Interval().halfOpenRight(e.lo,t.lo)}return e.clone()}lr.difference=qSe;function hee(e){return Ai.isEmpty(e)?0:cx.default.subHi(e.hi,e.lo)}lr.width=hee;lr.wid=hee;function zSe(e){return Ai.isEmpty(e)||Ai.isWhole(e)?ms.default.EMPTY:e.lo>=0?e.clone():e.hi<=0?xO.negative(e):new Fa.Interval(0,Math.max(-e.lo,e.hi))}lr.abs=zSe;function USe(e,t){let r=Ai.isEmpty(e),n=Ai.isEmpty(t);return r&&n?ms.default.EMPTY:r?t.clone():n?e.clone():new Fa.Interval(Math.max(e.lo,t.lo),Math.max(e.hi,t.hi))}lr.max=USe;function HSe(e,t){let r=Ai.isEmpty(e),n=Ai.isEmpty(t);return r&&n?ms.default.EMPTY:r?t.clone():n?e.clone():new Fa.Interval(Math.min(e.lo,t.lo),Math.min(e.hi,t.hi))}lr.min=HSe;function $Se(e){return new Fa.Interval().set(e.lo,e.hi)}lr.clone=$Se});var bO=st(an=>{"use strict";var WSe=an&&an.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),VSe=an&&an.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),vS=an&&an.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&WSe(t,e,r);return VSe(t,e),t},gee=an&&an.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(an,"__esModule",{value:!0});an.tanh=an.cosh=an.sinh=an.atan=an.acos=an.asin=an.tan=an.sin=an.cos=void 0;var Lo=bc(),Ci=gee(Ql()),wn=gee(mm()),jl=vS(Qu()),gS=vS(qh()),vee=vS(dS()),GSe=vS(hS());function yO(e){return!isFinite(e.lo)&&e.lo===e.hi}function xee(e){if(e.lo<0)if(e.lo===-1/0)e.lo=0,e.hi=1/0;else{let t=Math.ceil(-e.lo/wn.default.PI_TWICE_LOW);e.lo+=wn.default.PI_TWICE_LOW*t,e.hi+=wn.default.PI_TWICE_LOW*t}return e}function wO(e){if(jl.isEmpty(e)||yO(e))return wn.default.EMPTY;let t=new Lo.Interval().set(e.lo,e.hi);xee(t);let r=wn.default.PI_TWICE,n=vee.fmod(t,r);if(GSe.width(n)>=r.lo)return new Lo.Interval(-1,1);if(n.lo>=wn.default.PI_HIGH){let a=wO(gS.sub(n,wn.default.PI));return gS.negative(a)}let i=n.lo,o=n.hi,l=Ci.default.cosLo(o),s=Ci.default.cosHi(i);return o<=wn.default.PI_LOW?new Lo.Interval(l,s):o<=r.lo?new Lo.Interval(-1,Math.max(l,s)):new Lo.Interval(-1,1)}an.cos=wO;function YSe(e){return jl.isEmpty(e)||yO(e)?wn.default.EMPTY:wO(gS.sub(e,wn.default.PI_HALF))}an.sin=YSe;function ZSe(e){if(jl.isEmpty(e)||yO(e))return wn.default.EMPTY;let t=new Lo.Interval().set(e.lo,e.hi);xee(t);let r=wn.default.PI,n=vee.fmod(t,r);return n.lo>=wn.default.PI_HALF_LOW&&(n=gS.sub(n,r)),n.lo<=-wn.default.PI_HALF_LOW||n.hi>=wn.default.PI_HALF_LOW?wn.default.WHOLE:new Lo.Interval(Ci.default.tanLo(n.lo),Ci.default.tanHi(n.hi))}an.tan=ZSe;function XSe(e){if(jl.isEmpty(e)||e.hi<-1||e.lo>1)return wn.default.EMPTY;let t=e.lo<=-1?-wn.default.PI_HALF_HIGH:Ci.default.asinLo(e.lo),r=e.hi>=1?wn.default.PI_HALF_HIGH:Ci.default.asinHi(e.hi);return new Lo.Interval(t,r)}an.asin=XSe;function KSe(e){if(jl.isEmpty(e)||e.hi<-1||e.lo>1)return wn.default.EMPTY;let t=e.hi>=1?0:Ci.default.acosLo(e.hi),r=e.lo<=-1?wn.default.PI_HIGH:Ci.default.acosHi(e.lo);return new Lo.Interval(t,r)}an.acos=KSe;function JSe(e){return jl.isEmpty(e)?wn.default.EMPTY:new Lo.Interval(Ci.default.atanLo(e.lo),Ci.default.atanHi(e.hi))}an.atan=JSe;function QSe(e){return jl.isEmpty(e)?wn.default.EMPTY:new Lo.Interval(Ci.default.sinhLo(e.lo),Ci.default.sinhHi(e.hi))}an.sinh=QSe;function jSe(e){return jl.isEmpty(e)?wn.default.EMPTY:e.hi<0?new Lo.Interval(Ci.default.coshLo(e.hi),Ci.default.coshHi(e.lo)):e.lo>=0?new Lo.Interval(Ci.default.coshLo(e.lo),Ci.default.coshHi(e.hi)):new Lo.Interval(1,Ci.default.coshHi(-e.lo>e.hi?e.lo:e.hi))}an.cosh=jSe;function eNe(e){return jl.isEmpty(e)?wn.default.EMPTY:new Lo.Interval(Ci.default.tanhLo(e.lo),Ci.default.tanhHi(e.hi))}an.tanh=eNe});var See=st(bn=>{"use strict";var yee=bn&&bn.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),tNe=bn&&bn.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Uh=bn&&bn.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&yee(t,e,r);return tNe(t,e),t},Hh=bn&&bn.__exportStar||function(e,t){for(var r in e)r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r)&&yee(t,e,r)},wee=bn&&bn.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(bn,"__esModule",{value:!0});bn.constants=bn.round=bn.Interval=void 0;var bee=bc();Object.defineProperty(bn,"Interval",{enumerable:!0,get:function(){return bee._Interval}});var DO=wee(Ql());bn.round=DO.default;var Dee=wee(mm());bn.constants=Dee.default;var rNe=Uh(hO()),nNe=Uh(qh()),iNe=Uh(dS()),oNe=Uh(bO()),aNe=Uh(hS()),sNe=Uh(Qu()),uNe=Object.assign(bee.Interval,Dee.default,DO.default,aNe,sNe,rNe,nNe,iNe,oNe,{round:DO.default});bn.default=uNe;Hh(hO(),bn);Hh(qh(),bn);Hh(dS(),bn);Hh(bO(),bn);Hh(hS(),bn);Hh(Qu(),bn)});var Eee=st(($Nt,Nee)=>{"use strict";Nee.exports=function(e){e.mod=e.fmod,e.lessThan=e.lt,e.lessEqualThan=e.leq,e.greaterThan=e.gt,e.greaterEqualThan=e.geq,e.strictlyEqual=e.equal,e.strictlyNotEqual=e.notEqual,e.logicalAND=function(t,r){return t&&r},e.logicalXOR=function(t,r){return t^r},e.logicalOR=function(t,r){return t||r}}});var Cee=st((WNt,Aee)=>{"use strict";Aee.exports=function(e){return{disableRounding:function(){e.round.disable()},enableRounding:function(){e.round.enable()}}}});var Mee=st((VNt,xS)=>{"use strict";var lNe=Pj(),$h=See().default;Eee()($h);function fNe(e){Object.keys(e).forEach(function(t){let r=e[t];typeof r=="number"||Array.isArray(r)?e[t]=$h.factory(r):typeof r=="object"&&"lo"in r&&"hi"in r&&(e[t]=$h.factory(r.lo,r.hi))})}xS.exports=function(e){return new lNe().setDefs({$$processScope:fNe}).parse(e).compile($h)};xS.exports.policies=Cee()($h);xS.exports.Interval=$h});var SO=st((GNt,Tee)=>{"use strict";Tee.exports=Mee()});var Ec=st(Nc=>{"use strict";var _ee=Nc&&Nc.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Nc,"__esModule",{value:!0});Nc.interval=Nc.builtIn=void 0;var cNe=_ee(lj()),pNe=_ee(SO()),Oee={interval:pNe.default,builtIn:cNe.default};function mNe(){return typeof global=="object"&&"math"in global?global.math:typeof window=="object"&&"math"in window?window.math:null}var NO=mNe();NO&&(Oee.builtIn=NO.compile);function Fee(e){function t(o){if(typeof o=="string"){let l=Oee[e](o);return NO&&e==="builtIn"?{eval:l.evaluate||l.eval}:l}else{if(typeof o=="function")return{eval:o};throw Error("expression must be a string or a function")}}function r(o,l){let s=o[l],a=e+"_Expression_"+l,u=e+"_Compiled_"+l;s!==o[a]&&(o[a]=s,o[u]=t(s))}function n(o,l){return o[e+"_Compiled_"+l]}function i(o,l,s){return r(o,l),n(o,l).eval(Object.assign({},o.scope||{},s))}return i}var dNe=Fee("builtIn");Nc.builtIn=dNe;var hNe=Fee("interval");Nc.interval=hNe});var Bee=st(px=>{"use strict";var Lee=px&&px.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(px,"__esModule",{value:!0});var gNe=(l0(),Wn(u0)),vNe=(Kn(),Wn(js)),dm=Lee(Ju()),Iee=Lee(kh()),kee=Ec();function xNe(e){e=Object.assign({xLine:!1,yLine:!1,renderer:function(s,a){return"("+s.toFixed(3)+", "+a.toFixed(3)+")"},owner:null},e);let t=20,r=(0,gNe.line)().x(function(s){return s[0]}).y(function(s){return s[1]});function n(s,a){return s.append("path").datum(a).attr("stroke","grey").attr("stroke-dasharray","5,5").attr("opacity",.5).attr("d",r)}let i,o;function l(s){let a=s.selectAll("g.tip").data(function(f){return[f]}),u=a.enter().append("g").attr("class","tip").attr("clip-path","url(#function-plot-clip-"+e.owner.id+")");i=a.merge(u).selectAll("g.inner-tip").data(function(f){return[f]}),o=i.enter().append("g").attr("class","inner-tip").style("display","none").each(function(){let f=(0,vNe.select)(this);n(f,[[0,-e.owner.meta.height-t],[0,e.owner.meta.height+t]]).attr("class","tip-x-line").style("display","none"),n(f,[[-e.owner.meta.width-t,0],[e.owner.meta.width+t,0]]).attr("class","tip-y-line").style("display","none"),f.append("circle").attr("r",3),f.append("text").attr("transform","translate(5,-5)")}),i.merge(o).selectAll(".tip-x-line").style("display",e.xLine?null:"none"),i.merge(o).selectAll(".tip-y-line").style("display",e.yLine?null:"none")}return l.move=function(s){let a,u=1/0,f=-1,p,h,g=i.merge(o),x=e.owner.meta,v=g.datum().data,S=x.xScale,D=x.yScale,C=x.width,E=x.height,M=s.x,T=s.y;for(a=0;aN[0]-Iee.default.TIP_X_EPS&&M{"use strict";var yNe=nu&&nu.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),wNe=nu&&nu.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),bNe=nu&&nu.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&yNe(t,e,r);return wNe(t,e),t},DNe=nu&&nu.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(nu,"__esModule",{value:!0});var hm=bNe(SO()),Pee=Ec(),SNe=DNe(Ju());hm.default.policies.disableRounding();function NNe(e){let t=SNe.default.space(e.xAxis,e.range,e.nSamples),r=e.xScale,n=e.yScale,i=n.domain()[0],o=n.domain()[1],l=[],s;for(s=0;su[1].hi&&(a[1].hi=Math.max(o,a[1].hi),u[1].lo=Math.min(i,u[1].lo)),a[1].hi{"use strict";var MNe=hx&&hx.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(hx,"__esModule",{value:!0});var So=MNe(Ju()),dx=Ec();function zee(e,t,r,n,i){if(!i)return{asymptote:!0,d0:e,d1:t};let o=10,l=e[0],s=t[0],a=So.default.linspace(l,s,o),u,f;for(let p=0;p=2&&n!==g&&Math.abs(h/u)>1){let x=zee(t[a-1],t[a],e,g,3);x.asymptote?(t[a-1][0]=x.d0[0],t[a-1][1]=So.default.clamp(x.d0[1],o,l),i.push(s),t[a][0]=x.d1[0],t[a][1]=So.default.clamp(x.d1[1],o,l),s=[t[a]]):s.push(t[a])}else s.push(t[a]);s.length>1&&(u=s[s.length-1][0]-s[s.length-2][0],n=g),++a}return s.length&&i.push(s),i}function _Ne(e){let t=So.default.space(e.xAxis,e.range,e.nSamples),r=e.yScale.domain(),n=r[0]-So.default.infinity(),i=r[1]+So.default.infinity(),o=[];for(let s=0;s{"use strict";var EO=gx&&gx.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(gx,"__esModule",{value:!0});var Hee=EO(kh()),BNe=EO(qee()),PNe=EO(Uee());function RNe(e,t){let r=t.range||[-1/0,1/0],n=Math.max(e.domain()[0],r[0]),i=Math.min(e.domain()[1],r[1]);return[n,i]}function qNe(e,t){let r=RNe(e.meta.xScale,t),n;if(t.sampler==="builtIn")n=PNe.default;else if(t.sampler==="interval")n=BNe.default;else throw new Error(`Invalid sampler function ${t.sampler}`);let i=t.nSamples||Math.min(Hee.default.MAX_ITERATIONS,Hee.default.DEFAULT_ITERATIONS||e.meta.width*2),o=n({d:t,range:r,xScale:e.meta.xScale,yScale:e.meta.yScale,xAxis:e.options.xAxis,yAxis:e.options.yAxis,nSamples:i});return e.emit("eval",o,t.index,t.isHelper),o}gx.default=qNe});var Vee=st(vx=>{"use strict";var Wee=vx&&vx.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(vx,"__esModule",{value:!0});var $ee=(Kn(),Wn(js)),AO=(l0(),Wn(u0)),wS=Wee(Ju()),zNe=Wee(yS());function UNe(e){function t(r){r.each(function(n){let i=t.el=(0,$ee.select)(this),o=n.index,l=(0,zNe.default)(e,n),s=wS.default.color(n,o),a=i.selectAll(":scope > path.line").data(l),u=e.meta.yScale.range(),f=u[0],p=u[1],h=f-p;f+=h*1e6,p-=h*1e6,n.skipBoundsCheck&&(f=wS.default.infinity(),p=-wS.default.infinity());function g(C){return wS.default.clamp(e.meta.yScale(C[1]),p,f)}let x=(0,AO.line)().curve(AO.curveLinear).x(function(C){return e.meta.xScale(C[0])}).y(g),v=(0,AO.area)().x(function(C){return e.meta.xScale(C[0])}).y0(e.meta.yScale(0)).y1(g),S=`line line-${o}`,D=a.enter().append("path").attr("class",S).attr("stroke-width",1).attr("stroke-linecap","round");a.merge(D).each(function(){let C=(0,$ee.select)(this),E;if(n.closed?(C.attr("fill",s),C.attr("fill-opacity",.3),E=v):(C.attr("fill","none"),E=x),C.attr("stroke",s).attr("marker-end",function(){return n.fnType==="vector"?"url(#"+e.markerId+")":null}).attr("d",E),n.attr)for(let M in n.attr){let T=n.attr[M];M==="class"&&(T=`${S} ${n.attr[M]}`),C.attr(M,T)}}),a.exit().remove()})}return t}vx.default=UNe});var Yee=st(xx=>{"use strict";var Gee=xx&&xx.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(xx,"__esModule",{value:!0});var HNe=(Kn(),Wn(js)),$Ne=Gee(yS()),WNe=Gee(Ju());function VNe(e){let t,r=e.meta.xScale,n=e.meta.yScale;function i(s,a,u,f){if(u>f){let g=u;u=f,f=g}let p=Math.min(a,f),h=Math.max(s,u);return h>p?[-t,0]:[h,p]}let o=function(s,a){let u="",f=n.range(),p=Math.min.apply(Math,f),h=Math.max.apply(Math,f);for(let g=0,x=s.length;g path.line").data(h);t=Math.max(h[0].scaledDx,1);let x=`line line-${f}`,v=g.enter().append("path").attr("class",x).attr("fill","none"),S=g.merge(v).attr("stroke-width",t).attr("stroke",WNe.default.color(a,f)).attr("opacity",p?.5:1).attr("d",function(D){return o(D,p)});if(a.attr)for(let D in a.attr){let C=a.attr[D];D==="class"&&(C=`${x} ${a.attr[D]}`),S.attr(D,C)}g.exit().remove()})}return l}xx.default=VNe});var Xee=st(yx=>{"use strict";var Zee=yx&&yx.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(yx,"__esModule",{value:!0});var GNe=(Kn(),Wn(js)),YNe=(Qs(),Wn($D)),ZNe=Zee(Ju()),XNe=Zee(yS());function KNe(e){let t=e.meta.xScale,r=e.meta.yScale;function n(i){i.each(function(o){let l,s,a=o.index,u=ZNe.default.color(o,a),f=(0,XNe.default)(e,o),p=[];for(l=0;l circle.scatter").data(p),g=`scatter scatter-${a}`,x=h.enter().append("circle").attr("class",g),v=h.merge(x).attr("fill",(0,YNe.hsl)(u.toString()).brighter(1.5).formatHex()).attr("stroke",u).attr("opacity",.7).attr("r",1).attr("cx",function(S){return t(S[0])}).attr("cy",function(S){return r(S[1])});if(o.attr)for(let S in o.attr){let D=o.attr[S];S==="class"&&(D=`${g} ${o.attr[S]}`),v.attr(S,D)}h.exit().remove()})}return n}yx.default=KNe});var Kee=st(wx=>{"use strict";var JNe=wx&&wx.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(wx,"__esModule",{value:!0});var QNe=(Kn(),Wn(js)),jNe=(Qs(),Wn($D)),eEe=JNe(Ju());function tEe(e){let t=e.meta.xScale,r=e.meta.yScale;function n(i){i.each(function(o){o.sampler="builtIn",o.fnType="vector";let l=(0,QNe.select)(this).selectAll(":scope > text.fn-text").data([o.location]),s=l.enter().append("text").attr("class",`fn-text fn-text-${o.index}`),a=eEe.default.color(o,o.index),u=l.merge(s).attr("fill",(0,jNe.hsl)(a.toString()).brighter(1.5).formatHex()).attr("x",f=>t(f[0])).attr("y",f=>r(f[1])).text(()=>o.text);if(o.attr)for(let f in o.attr)u.attr(f,o.attr[f]);l.exit().remove()})}return n}wx.default=tEe});var bx=st(ds=>{"use strict";var bS=ds&&ds.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ds,"__esModule",{value:!0});ds.text=ds.scatter=ds.interval=ds.polyline=void 0;var rEe=bS(Vee());ds.polyline=rEe.default;var nEe=bS(Yee());ds.interval=nEe.default;var iEe=bS(Xee());ds.scatter=iEe.default;var oEe=bS(Kee());ds.text=oEe.default});var DS=st(CO=>{"use strict";Object.defineProperty(CO,"__esModule",{value:!0});function aEe(e){return"graphType"in e||(e.graphType="interval"),"sampler"in e||(e.sampler=e.graphType!=="interval"?"builtIn":"interval"),"fnType"in e||(e.fnType="linear"),e}CO.default=aEe});var jee=st(Dx=>{"use strict";var Qee=Dx&&Dx.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Dx,"__esModule",{value:!0});var sEe=(Kn(),Wn(js)),uEe=bx(),Jee=Ec(),lEe=Qee(DS()),fEe=Qee(Ju());function cEe(e){let t=(0,lEe.default)({isHelper:!0,skipTip:!0,skipBoundsCheck:!0,nSamples:2,graphType:"polyline"});function r(o){if(!o.derivative)return[];let l=typeof o.derivative.x0=="number"?o.derivative.x0:fEe.default.infinity();return t.index=o.index,t.scope={m:(0,Jee.builtIn)(o.derivative,"fn",{x:l}),x0:l,y0:(0,Jee.builtIn)(o,"fn",{x:l})},t.fn="m * (x - x0) + y0",[t]}function n(o){let l=this;o.derivative&&o.derivative.updateOnMouseMove&&!o.derivative.$$mouseListener&&(o.derivative.$$mouseListener=function({x:s}){o.derivative&&(o.derivative.x0=s),i(l)},e.on("tip:update",o.derivative.$$mouseListener))}let i=function(o){o.each(function(l){let s=(0,sEe.select)(this),a=r.call(o,l);n.call(o,l);let u=s.selectAll("g.derivative").data(a),f=u.enter().append("g").attr("class","derivative");u.merge(f).call((0,uEe.polyline)(e)),u.merge(f).selectAll("path").attr("opacity",.5),u.exit().remove()})};return i}Dx.default=cEe});var rte=st(Sx=>{"use strict";var tte=Sx&&Sx.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Sx,"__esModule",{value:!0});var pEe=(Kn(),Wn(js)),ete=Ec(),mEe=tte(DS()),dEe=bx(),hEe=tte(Ju());function gEe(e){let t=(0,mEe.default)({isHelper:!0,skipTip:!0,skipBoundsCheck:!0,nSamples:2,graphType:"polyline"});function r(a){a.m=(a.y1-a.y0)/(a.x1-a.x0)}function n(a,u){if(!("x0"in u))throw Error("secant must have the property `x0` defined");u.scope=u.scope||{};let f=u.x0,p=typeof u.x1=="number"?u.x1:hEe.default.infinity();Object.assign(u.scope,{x0:f,x1:p,y0:(0,ete.builtIn)(a,"fn",{x:f}),y1:(0,ete.builtIn)(a,"fn",{x:p})}),r(u.scope)}function i(a,u){n(a,u),u.fn="m * (x - x0) + y0"}function o(a,u){let f=this;u.updateOnMouseMove&&!u.$$mouseListener&&(u.$$mouseListener=function({x:p}){u.x1=p,n(a,u),s(f)},e.on("tip:update",u.$$mouseListener))}function l(a){let u=this,f=[];a.secants=a.secants||[];for(let p=0;p{"use strict";var nte=Nx&&Nx.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Nx,"__esModule",{value:!0});var vEe=(Kn(),Wn(js)),xEe=nte(jee()),yEe=nte(rte());function wEe(e){function t(r){r.each(function(){let n=(0,vEe.select)(this);n.call((0,xEe.default)(e)),n.call((0,yEe.default)(e))})}return t}Nx.default=wEe});var ute=st(Wh=>{"use strict";var Vh=Wh&&Wh.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Wh,"__esModule",{value:!0});Wh.Chart=void 0;var bEe=(l0(),Wn(u0)),DEe=(AD(),Wn(gG)),ite=(WZ(),Wn($Z)),ote=(eX(),Wn(jZ)),SEe=(WJ(),Wn($J)),SS=(Kn(),Wn(js)),ate=(Hl(),Wn(HY)),NEe=Vh(tQ()),EEe=Vh(rQ()),AEe=Vh(Bee()),CEe=Vh(MO()),MEe=Vh(DS()),NS=Vh(kh());function ste(e){return e==="linear"?ite.scaleLinear:ite.scaleLog}var ES=class e extends NEe.default.EventEmitter{constructor(t){super();let r=Math.random(),n=String.fromCharCode(Math.floor(r*26)+97);this.options=t,this.id=n+r.toString(16).substr(2),this.options.id=this.id,this.markerId=this.id+"-marker",e.cache[this.id]=this,this.linkedGraphs=[this],this.meta={},this.setUpEventListeners()}build(){return this.internalVars(),this.drawGraphWrapper(),this}getDraggableNode(){return(0,SS.select)(this.options.target).select(".zoom-and-drag").node()}getEmitInstance(){let t=this,r=this.getDraggableNode();return r&&(t=r.instance),t}internalVars(){let t=this.meta.margin={left:40,right:20,top:20,bottom:20};this.options.title&&(this.meta.margin.top=40),this.meta.width=(this.options.width||NS.default.DEFAULT_WIDTH)-t.left-t.right,this.meta.height=(this.options.height||NS.default.DEFAULT_HEIGHT)-t.top-t.bottom,this.initializeAxes()}initializeAxes(){let t=this,r=(0,DEe.format)("~s");function n(s){return Math.abs(s)-Math.floor(Math.abs(s))>0?s.toString():r(s)}function i(s){let a=s[1]-s[0];return t.meta.height*a/t.meta.width}this.options.xAxis=this.options.xAxis||{},this.options.xAxis.type=this.options.xAxis.type||"linear",this.options.yAxis=this.options.yAxis||{},this.options.yAxis.type=this.options.yAxis.type||"linear";let o=this.meta.xDomain=function(s){if(s.domain)return s.domain;if(s.type==="linear")return[-12/2,12/2];if(s.type==="log")return[1,10];throw Error("axis type "+s.type+" unsupported")}(this.options.xAxis),l=this.meta.yDomain=function(s){if(s.domain)return s.domain;let a=i(o);if(s.type==="linear")return[-a/2,a/2];if(s.type==="log")return[1,10];throw Error("axis type "+s.type+" unsupported")}(this.options.yAxis);this.meta.xScale||(this.meta.xScale=ste(this.options.xAxis.type)()),this.meta.xScale.domain(o).range(this.options.xAxis.invert?[this.meta.width,0]:[0,this.meta.width]),this.meta.yScale||(this.meta.yScale=ste(this.options.yAxis.type)()),this.meta.yScale.domain(l).range(this.options.yAxis.invert?[0,this.meta.height]:[this.meta.height,0]),this.meta.xAxis||(this.meta.xAxis=(0,ote.axisBottom)(this.meta.xScale)),this.meta.xAxis.tickSize(this.options.grid?-this.meta.height:0).tickFormat(n),this.meta.yAxis||(this.meta.yAxis=(0,ote.axisLeft)(this.meta.yScale)),this.meta.yAxis.tickSize(this.options.grid?-this.meta.width:0).tickFormat(n),this.line=(0,bEe.line)().x(function(s){return t.meta.xScale(s[0])}).y(function(s){return t.meta.yScale(s[1])})}drawGraphWrapper(){let t=this.root=(0,SS.select)(this.options.target).selectAll("svg").data([this.options]);this.root.enter=t.enter().append("svg").attr("class","function-plot").attr("font-size",this.getFontSize()),t.merge(this.root.enter).attr("width",this.meta.width+this.meta.margin.left+this.meta.margin.right).attr("height",this.meta.height+this.meta.margin.top+this.meta.margin.bottom),this.buildTitle(),this.buildLegend(),this.buildCanvas(),this.buildClip(),this.buildAxis(),this.buildAxisLabel();let r=this.tip=(0,AEe.default)(Object.assign(this.options.tip||{},{owner:this}));this.canvas.merge(this.canvas.enter).call(r),this.setUpPlugins(),this.draw(),this.buildZoomHelper()}buildTitle(){let t=this.root.merge(this.root.enter).selectAll("text.title").data(function(n){return[n.title].filter(Boolean)});t.enter().append("text").merge(t).attr("class","title").attr("y",this.meta.margin.top/2).attr("x",this.meta.margin.left+this.meta.width/2).attr("font-size",25).attr("text-anchor","middle").attr("alignment-baseline","middle").text(this.options.title),t.exit().remove()}buildLegend(){this.root.enter.append("text").attr("class","top-right-legend").attr("text-anchor","end"),this.root.merge(this.root.enter).select(".top-right-legend").attr("y",this.meta.margin.top/2).attr("x",this.meta.width+this.meta.margin.left)}buildCanvas(){let t=this.canvas=this.root.merge(this.root.enter).selectAll(".canvas").data(function(r){return[r]});this.canvas.enter=t.enter().append("g").attr("class","canvas")}buildClip(){let t=this.id,r=this.canvas.enter.append("defs");r.append("clipPath").attr("id","function-plot-clip-"+t).append("rect").attr("class","clip static-clip"),this.canvas.merge(this.canvas.enter).selectAll(".clip").attr("width",this.meta.width).attr("height",this.meta.height),r.append("clipPath").append("marker").attr("id",this.markerId).attr("viewBox","0 -5 10 10").attr("refX",10).attr("markerWidth",5).attr("markerHeight",5).attr("orient","auto").append("svg:path").attr("d","M0,-5L10,0L0,5L0,0").attr("stroke-width","0px").attr("fill-opacity",1).attr("fill","#777")}buildAxis(){let t=this.canvas.enter;t.append("g").attr("class","x axis"),t.append("g").attr("class","y axis"),this.canvas.merge(this.canvas.enter).select(".x.axis").attr("transform","translate(0,"+this.meta.height+")").call(this.meta.xAxis),this.canvas.merge(this.canvas.enter).select(".y.axis").call(this.meta.yAxis)}buildAxisLabel(){let t=this.canvas,r=t.merge(t.enter).selectAll("text.x.axis-label").data(function(l){return[l.xAxis.label].filter(Boolean)}),n=r.enter().append("text").attr("class","x axis-label").attr("text-anchor","end");r.merge(n).attr("x",this.meta.width).attr("y",this.meta.height-6).text(function(l){return l}),r.exit().remove();let i=t.merge(t.enter).selectAll("text.y.axis-label").data(function(l){return[l.yAxis.label].filter(Boolean)}),o=i.enter().append("text").attr("class","y axis-label").attr("y",6).attr("dy",".75em").attr("text-anchor","end").attr("transform","rotate(-90)");i.merge(o).text(function(l){return l}),i.exit().remove()}buildContent(){let t=this,r=this.canvas;r.merge(r.enter).attr("transform","translate("+this.meta.margin.left+","+this.meta.margin.top+")");let n=this.content=r.merge(r.enter).selectAll(":scope > g.content").data(function(s){return[s]}),i=n.enter().append("g").attr("clip-path","url(#function-plot-clip-"+this.id+")").attr("class","content");if(this.options.xAxis.type==="linear"){let s=n.merge(i).selectAll(":scope > path.y.origin").data([[[0,this.meta.yScale.domain()[0]],[0,this.meta.yScale.domain()[1]]]]),a=s.enter().append("path").attr("class","y origin").attr("stroke","black").attr("opacity",.2);s.merge(a).attr("d",this.line)}if(this.options.yAxis.type==="linear"){let s=n.merge(i).selectAll(":scope > path.x.origin").data([[[this.meta.xScale.domain()[0],0],[this.meta.xScale.domain()[1],0]]]),a=s.enter().append("path").attr("class","x origin").attr("stroke","black").attr("opacity",.2);s.merge(a).attr("d",this.line)}n.merge(i).call((0,EEe.default)({owner:t}));let o=n.merge(i).selectAll(":scope > g.graph").data(s=>s.data.map(MEe.default),s=>s.fn||s.r||s.x||s.text);o.exit().remove();let l=o.enter().append("g").attr("class","graph");o.merge(l).each(function(s,a){s.index=a;let u=(0,SS.select)(this);u.call(NS.default.graphTypes[s.graphType](t)),u.call((0,CEe.default)(t))})}buildZoomHelper(){let t=this;this.meta.zoomBehavior||(this.meta.zoomBehavior=(0,SEe.zoom)().on("zoom",function(n){t.getEmitInstance().emit("all:zoom",n)}),t.meta.zoomBehavior.xScale=t.meta.xScale.copy(),t.meta.zoomBehavior.yScale=t.meta.yScale.copy()),t.meta.zoomBehavior.xScale.range(t.meta.xScale.range()),t.meta.zoomBehavior.yScale.range(t.meta.yScale.range()),this.canvas.enter.append("rect").call(this.meta.zoomBehavior).attr("class","zoom-and-drag").style("fill","none").style("pointer-events","all").on("mouseover",function(r){t.getEmitInstance().emit("all:mouseover",r)}).on("mouseout",function(r){t.getEmitInstance().emit("all:mouseout",r)}).on("mousemove",function(r){t.getEmitInstance().emit("all:mousemove",r)}),this.draggable=this.canvas.merge(this.canvas.enter).select(".zoom-and-drag").call(r=>{r.node()&&(r.node().instance=t)}).attr("width",this.meta.width).attr("height",this.meta.height)}setUpPlugins(){let t=this.options.plugins||[],r=this;t.forEach(function(n){n(r)})}addLink(){for(let t=0;tthis.meta.height?this.meta.height:s,r.select(".x.axis").attr("transform","translate(0,"+s+")"),r.selectAll(".x.axis path, .x.axis line").attr("transform","translate(0,"+(this.meta.height/2-s+this.meta.height/2)+")")}if(r.select(".y.axis").call(t.meta.yAxis),this.options.yAxis.position==="sticky"){let n=this.meta.xScale.domain()[0],i=this.meta.xScale.domain()[1],o=(i+n)/2,s=this.meta.width/(n-i)*o+this.meta.width/2;s=s<0?0:s,s=s>this.meta.width?this.meta.width:s,r.select(".y.axis").attr("transform","translate("+s+",0)"),r.selectAll(".y.axis path, .y.axis line").attr("transform","translate("+-s+",0)")}r.selectAll(".axis path, .axis line").attr("fill","none").attr("stroke","black").attr("shape-rendering","crispedges").attr("opacity",.1)}syncOptions(){this.options.xAxis.domain=this.meta.xScale.domain(),this.options.yAxis.domain=this.meta.yScale.domain()}getFontSize(){return Math.max(Math.max(this.meta.width,this.meta.height)/50,8)}draw(){let t=this;t.emit("before:draw"),t.syncOptions(),t.updateAxes(),t.buildContent(),t.emit("after:draw")}setUpEventListeners(){let t=this,r=this.getEmitInstance();r&&r.removeAllListeners();let n={mousemove:function(o){t.tip.move(o)},mouseover:function(){t.tip.show()},mouseout:function(){t.tip.hide()},zoom:function({transform:l}){if(t.options.disableZoom)return;let s=l.rescaleX(t.meta.zoomBehavior.xScale).interpolate(ate.interpolateRound),a=l.rescaleY(t.meta.zoomBehavior.yScale).interpolate(ate.interpolateRound);t.meta.xScale.domain(s.domain()).range(s.range()),t.meta.yScale.domain(a.domain()).range(a.range())},"tip:update":function({x:o,y:l,index:s}){let a=t.root.merge(t.root.enter).datum().data[s],u=a.title||"",f=a.renderer||function(h,g){return h.toFixed(3)+", "+g.toFixed(3)},p=[];u&&p.push(u),p.push(f(o,l)),t.root.select(".top-right-legend").attr("fill",NS.default.COLORS[s]).text(p.join(" "))}},i={mousemove:function(o){let l=(0,SS.pointer)(o,t.draggable.node()),s={x:t.meta.xScale.invert(l[0]),y:t.meta.yScale.invert(l[1])};t.linkedGraphs.forEach(function(a){a.emit("before:mousemove",s),a.emit("mousemove",s)})},zoom:function(o){t.linkedGraphs.forEach(function(l){l.draggable.node().__zoom=t.draggable.node().__zoom,l.emit("zoom",o),l.draw()}),t.emit("all:mousemove",o)}};Object.keys(n).forEach(function(o){!i[o]&&t.on("all:"+o,function(){let l=Array.prototype.slice.call(arguments);t.linkedGraphs.forEach(function(s){let a=l.slice();a.unshift(o),s.emit.apply(s,a)})}),t.on(o,n[o])}),Object.keys(i).forEach(function(o){t.on("all:"+o,i[o])})}};Wh.Chart=ES;ES.cache={}});var fte=st(lte=>{"use strict";Object.defineProperty(lte,"__esModule",{value:!0})});var hte=st(cn=>{"use strict";var cte=cn&&cn.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),TEe=cn&&cn.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),pte=cn&&cn.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&cte(t,e,r);return TEe(t,e),t},mte=cn&&cn.__exportStar||function(e,t){for(var r in e)r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r)&&cte(t,e,r)};Object.defineProperty(cn,"__esModule",{value:!0});cn.GraphTypeScatter=cn.GraphTypePolyline=cn.GraphTypeInterval=cn.EvalInterval=cn.EvalBuiltIn=cn.registerGraphType=cn.Chart=void 0;SW();var TO=ute();Object.defineProperty(cn,"Chart",{enumerable:!0,get:function(){return TO.Chart}});var Gh=pte(kh());Object.defineProperty(cn,"registerGraphType",{enumerable:!0,get:function(){return Gh.registerGraphType}});var gm=bx(),_Ee=pte(Ec());(0,Gh.registerGraphType)("polyline",gm.polyline);(0,Gh.registerGraphType)("interval",gm.interval);(0,Gh.registerGraphType)("scatter",gm.scatter);(0,Gh.registerGraphType)("text",gm.text);function AS(e){e.data=e.data||[];let t=TO.Chart.cache[e.id];return t||(t=new TO.Chart(e)),t.build()}cn.default=AS;AS.globals=Gh.default;AS.$eval=_Ee;AS.graphTypes={interval:gm.interval,polyline:gm.polyline,scatter:gm.scatter};mte(fte(),cn);var dte=Ec();Object.defineProperty(cn,"EvalBuiltIn",{enumerable:!0,get:function(){return dte.builtIn}});Object.defineProperty(cn,"EvalInterval",{enumerable:!0,get:function(){return dte.interval}});var _O=bx();Object.defineProperty(cn,"GraphTypeInterval",{enumerable:!0,get:function(){return _O.interval}});Object.defineProperty(cn,"GraphTypePolyline",{enumerable:!0,get:function(){return _O.polyline}});Object.defineProperty(cn,"GraphTypeScatter",{enumerable:!0,get:function(){return _O.scatter}});mte(MO(),cn)});var Le=e=>document.querySelector(e),uo=e=>document.querySelectorAll(e),bt={get:e=>JSON.parse(localStorage.getItem(e)),set:(e,t)=>{localStorage.setItem(e,JSON.stringify(t))}},ke={activePlot:null,activePage:null,colors:null,currencyRates:{},mathScope:{},plotFunction:null,refreshCM:!0,settings:null,udfList:[],uduList:[]};var ZO=(e,t,r=[])=>{let n=document.createElementNS("http://www.w3.org/2000/svg",e);return Object.keys(t).forEach(i=>{n.setAttribute(i,String(t[i]))}),r.length&&r.forEach(i=>{let o=ZO(...i);n.appendChild(o)}),n},XO=([e,t,r])=>ZO(e,t,r);var jte=e=>Array.from(e.attributes).reduce((t,r)=>(t[r.name]=r.value,t),{}),ere=e=>typeof e=="string"?e:!e||!e.class?"":e.class&&typeof e.class=="string"?e.class.split(" "):e.class&&Array.isArray(e.class)?e.class:"",tre=e=>e.flatMap(ere).map(r=>r.trim()).filter(Boolean).filter((r,n,i)=>i.indexOf(r)===n).join(" "),rre=e=>e.replace(/(\w)(\w*)(_|-|\s*)/g,(t,r,n)=>r.toUpperCase()+n.toLowerCase()),BN=(e,{nameAttr:t,icons:r,attrs:n})=>{let i=e.getAttribute(t);if(i==null)return;let o=rre(i),l=r[o];if(!l)return console.warn(`${e.outerHTML} icon name was not found in the provided icons object.`);let s=jte(e),[a,u,f]=l,p={...u,"data-lucide":i,...n,...s},h=tre(["lucide",`lucide-${i}`,s,n]);h&&Object.assign(p,{class:h});let g=XO([a,p,f]);return e.parentNode?.replaceChild(g,e)};var ar={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};var PN=["svg",ar,[["path",{d:"m21 16-4 4-4-4"}],["path",{d:"M17 20V4"}],["path",{d:"m3 8 4-4 4 4"}],["path",{d:"M7 4v16"}]]];var Qy=["svg",ar,[["path",{d:"M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1"}],["path",{d:"M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1"}]]];var jy=["svg",ar,[["circle",{cx:"12",cy:"12",r:"10"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16"}]]];var RN=["svg",ar,[["circle",{cx:"12",cy:"12",r:"10"}]]];var qN=["svg",ar,[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"}]]];var zN=["svg",ar,[["polyline",{points:"15 10 20 15 15 20"}],["path",{d:"M4 4v7a4 4 0 0 0 4 4h12"}]]];var UN=["svg",ar,[["circle",{cx:"12.1",cy:"12.1",r:"1"}]]];var HN=["svg",ar,[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}],["polyline",{points:"7 10 12 15 17 10"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3"}]]];var e1=["svg",ar,[["circle",{cx:"12",cy:"12",r:"1"}],["circle",{cx:"12",cy:"5",r:"1"}],["circle",{cx:"12",cy:"19",r:"1"}]]];var $N=["svg",ar,[["path",{d:"m7 21-4.3-4.3c-1-1-1-2.5 0-3.4l9.6-9.6c1-1 2.5-1 3.4 0l5.6 5.6c1 1 1 2.5 0 3.4L13 21"}],["path",{d:"M22 21H7"}],["path",{d:"m5 11 9 9"}]]];var WN=["svg",ar,[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"M12 16v-4"}],["path",{d:"M12 8h.01"}]]];var VN=["svg",ar,[["path",{d:"M21 6H3"}],["path",{d:"M7 12H3"}],["path",{d:"M7 18H3"}],["path",{d:"M12 18a5 5 0 0 0 9-3 4.5 4.5 0 0 0-4.5-4.5c-1.33 0-2.54.54-3.41 1.41L11 14"}],["path",{d:"M11 10v4h4"}]]];var GN=["svg",ar,[["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor"}],["path",{d:"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z"}]]];var t1=["svg",ar,[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}],["path",{d:"M9 3v18"}],["path",{d:"m16 15-3-3 3-3"}]]];var r1=["svg",ar,[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}],["path",{d:"M9 3v18"}]]];var YN=["svg",ar,[["path",{d:"M5 12h14"}],["path",{d:"M12 5v14"}]]];var ZN=["svg",ar,[["path",{d:"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2"}],["path",{d:"M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6"}],["rect",{x:"6",y:"14",width:"12",height:"8",rx:"1"}]]];var XN=["svg",ar,[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"}],["path",{d:"M3 3v5h5"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16"}],["path",{d:"M16 16h5v5"}]]];var KN=["svg",ar,[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"}],["path",{d:"M3 3v5h5"}]]];var JN=["svg",ar,[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}],["path",{d:"M14 15H9v-5"}],["path",{d:"M16 3h5v5"}],["path",{d:"M21 3 9 15"}]]];var QN=["svg",ar,[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"}],["circle",{cx:"12",cy:"12",r:"3"}]]];var jN=["svg",ar,[["path",{d:"M3 6h18"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"}]]];var eE=["svg",ar,[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}],["polyline",{points:"17 8 12 3 7 8"}],["line",{x1:"12",x2:"12",y1:"3",y2:"15"}]]];var KO=({icons:e={},nameAttr:t="data-lucide",attrs:r={}}={})=>{if(!Object.values(e).length)throw new Error(`Please provide an icons object. If you want to use all the icons you can import it like: \`import { createIcons, icons } from 'lucide'; -lucide.createIcons({icons});\``);if(typeof document>"u")throw new Error("`createIcons()` only works in a browser environment.");let n=document.querySelectorAll(`[${t}]`);if(Array.from(n).forEach(i=>ON(i,{nameAttr:t,icons:e,attrs:r})),t==="data-lucide"){let i=document.querySelectorAll("[icon-name]");i.length>0&&(console.warn("[Lucide] Some icons were found with the now deprecated icon-name attribute. These will still be replaced for backwards compatibility, but will no longer be supported in v1.0 and you should switch to data-lucide"),Array.from(i).forEach(o=>ON(o,{nameAttr:"icon-name",icons:e,attrs:r})))}};var jte={AlertCircle:Jy,ArrowUpDown:FN,Braces:Ky,Circle:IN,Copy:kN,CornerDownRight:LN,Dot:BN,Download:PN,EllipsisVertical:Qy,Eraser:RN,Info:qN,ListRestart:zN,Palette:UN,PanelLeft:e1,PanelLeftClose:jy,Plus:HN,Printer:$N,RefreshCcw:WN,RotateCcw:VN,Scaling:GN,Settings:YN,Trash:ZN,Upload:XN},Af=()=>{$O({icons:jte})};var ep=fn(Yg(),1),$o={show:e=>{ep.default.modal(e,{bgClose:!1,stack:!0}).show()},hide:e=>{ep.default.modal(e).hide()}};function bu(e,t){ep.default.util.on("#dialog-error","beforeshow",()=>{ke("#errTitle").innerHTML=e,ke("#errMsg").innerHTML=t}),$o.show("#dialog-error")}function In(e,t){ep.default.notification({message:e,pos:Ie.settings.notifyLocation,status:t||"primary",timeout:+Ie.settings.notifyDuration})}function Cf(e,t){ke("#confirmMsg").innerHTML=e,$o.show("#dialog-confirm");let r=n=>{t(),n.stopPropagation(),ep.default.modal("#dialog-confirm").hide(),ke("#confirm-yes").removeEventListener("click",r)};ke("#confirm-yes").addEventListener("click",r),ep.default.util.on("#dialog-confirm","hidden",()=>{ke("#confirm-yes").removeEventListener("click",r)})}var WO=navigator.userAgent.toLowerCase().includes("mac"),di=navigator.userAgent.toLowerCase().includes("electron");function Zg(){return Ie.settings=bt.get("settings"),Ie.settings?.theme==="system"?di&&numara.isDark()?"dark":"light":Ie.settings?.theme==="dark"?"dark":"light"}function t1(){let e=Ie.settings.locale==="system"?navigator.languages&&navigator.languages.length?navigator.languages[0]:navigator.language:Ie.settings.locale;return 1.11.toLocaleString(e).match(/[,]/)}function r1(){ke("#resetSizeButton").style.display=di&&numara.isResized()&&!numara.isMaximized()?"block":"none"}function QN(){numara.isMaximized()?numara.unmaximize():numara.maximize()}function VO(){di&&(numara.checkUpdate(),numara.notifyUpdate(()=>{In('Downloading latest version... View status'),ke("#notificationDot").style.display="block"}),numara.updateStatus((e,t)=>{t==="ready"?(ke("#dialog-about-updateStatus").innerHTML="New version is ready to be installed.",ke("#updateButton").style.display="inline-block",ke("#dialog-about").classList.contains("uk-open")||In('New version is ready to be installed. Install Now')):ke("#dialog-about-updateStatus").innerHTML=t}))}var yl=(()=>{return((e,t,r,n)=>{let i=t.createElement("canvas").getContext("2d"),o={r:0,g:0,b:0,h:0,s:0,v:0,a:1},l,s,a,u,f,p,h,g,x,v,S,D,C,E,M,T,N={},O={el:"[data-coloris]",parent:"body",theme:"default",themeMode:"light",rtl:!1,wrap:!0,margin:2,format:"hex",formatToggle:!1,swatches:[],swatchesOnly:!1,alpha:!0,forceAlpha:!1,focusInput:!0,selectInput:!1,inline:!1,defaultColor:"#000000",clearButton:!1,clearLabel:"Clear",closeButton:!1,closeLabel:"Close",onChange:()=>n,a11y:{open:"Open color picker",close:"Close color picker",clear:"Clear the selected color",marker:"Saturation: {s}. Brightness: {v}.",hueSlider:"Hue slider",alphaSlider:"Opacity slider",input:"Color value field",format:"Color format",swatch:"Color swatch",instruction:"Saturation and brightness selector. Use up, down, left and right arrow keys to select."}},F={},I="",B={},L=!1;function q(te){if(typeof te=="object")for(let ge in te)switch(ge){case"el":H(te.el),te.wrap!==!1&&ce(te.el);break;case"parent":l=te.parent instanceof HTMLElement?te.parent:t.querySelector(te.parent),l&&(l.appendChild(s),O.parent=te.parent,l===t.body&&(l=n));break;case"themeMode":O.themeMode=te.themeMode,te.themeMode==="auto"&&e.matchMedia&&e.matchMedia("(prefers-color-scheme: dark)").matches&&(O.themeMode="dark");case"theme":te.theme&&(O.theme=te.theme),s.className="clr-picker clr-"+O.theme+" clr-"+O.themeMode,O.inline&&Z();break;case"rtl":O.rtl=!!te.rtl,Array.from(t.getElementsByClassName("clr-field")).forEach(Ue=>Ue.classList.toggle("clr-rtl",O.rtl));break;case"margin":te.margin*=1,O.margin=isNaN(te.margin)?O.margin:te.margin;break;case"wrap":te.el&&te.wrap&&ce(te.el);break;case"formatToggle":O.formatToggle=!!te.formatToggle,zt("clr-format").style.display=O.formatToggle?"block":"none",O.formatToggle&&(O.format="auto");break;case"swatches":if(Array.isArray(te.swatches)){let Ue=zt("clr-swatches"),ze=t.createElement("div");Ue.textContent="",te.swatches.forEach((je,W)=>{let ae=t.createElement("button");ae.setAttribute("type","button"),ae.setAttribute("id","clr-swatch-"+W),ae.setAttribute("aria-labelledby","clr-swatch-label clr-swatch-"+W),ae.style.color=je,ae.textContent=je,ze.appendChild(ae)}),te.swatches.length&&Ue.appendChild(ze),O.swatches=te.swatches.slice()}break;case"swatchesOnly":O.swatchesOnly=!!te.swatchesOnly,s.setAttribute("data-minimal",O.swatchesOnly);break;case"alpha":O.alpha=!!te.alpha,s.setAttribute("data-alpha",O.alpha);break;case"inline":if(O.inline=!!te.inline,s.setAttribute("data-inline",O.inline),O.inline){let Ue=te.defaultColor||O.defaultColor;E=Te(Ue),Z(),ve(Ue)}break;case"clearButton":typeof te.clearButton=="object"&&(te.clearButton.label&&(O.clearLabel=te.clearButton.label,h.innerHTML=O.clearLabel),te.clearButton=te.clearButton.show),O.clearButton=!!te.clearButton,h.style.display=O.clearButton?"block":"none";break;case"clearLabel":O.clearLabel=te.clearLabel,h.innerHTML=O.clearLabel;break;case"closeButton":O.closeButton=!!te.closeButton,O.closeButton?s.insertBefore(g,f):f.appendChild(g);break;case"closeLabel":O.closeLabel=te.closeLabel,g.innerHTML=O.closeLabel;break;case"a11y":let _e=te.a11y,Re=!1;if(typeof _e=="object")for(let Ue in _e)_e[Ue]&&O.a11y[Ue]&&(O.a11y[Ue]=_e[Ue],Re=!0);if(Re){let Ue=zt("clr-open-label"),ze=zt("clr-swatch-label");Ue.innerHTML=O.a11y.open,ze.innerHTML=O.a11y.swatch,g.setAttribute("aria-label",O.a11y.close),h.setAttribute("aria-label",O.a11y.clear),x.setAttribute("aria-label",O.a11y.hueSlider),S.setAttribute("aria-label",O.a11y.alphaSlider),p.setAttribute("aria-label",O.a11y.input),a.setAttribute("aria-label",O.a11y.instruction)}break;default:O[ge]=te[ge]}}function R(te,ge){typeof te=="string"&&typeof ge=="object"&&(F[te]=ge,L=!0)}function V(te){delete F[te],Object.keys(F).length===0&&(L=!1,te===I&&U())}function X(te){if(L){let ge=["el","wrap","rtl","inline","defaultColor","a11y"];for(let _e in F){let Re=F[_e];if(te.matches(_e)){I=_e,B={},ge.forEach(Ue=>delete Re[Ue]);for(let Ue in Re)B[Ue]=Array.isArray(O[Ue])?O[Ue].slice():O[Ue];q(Re);break}}}}function U(){Object.keys(B).length>0&&(q(B),I="",B={})}function H(te){te instanceof HTMLElement&&(te=[te]),Array.isArray(te)?te.forEach(ge=>{mt(ge,"click",ee),mt(ge,"input",de)}):(mt(t,"click",te,ee),mt(t,"input",te,de))}function ee(te){O.inline||(X(te.target),C=te.target,M=C.value,E=Te(M),s.classList.add("clr-open"),Z(),ve(M),(O.focusInput||O.selectInput)&&(p.focus({preventScroll:!0}),p.setSelectionRange(C.selectionStart,C.selectionEnd)),O.selectInput&&p.select(),(T||O.swatchesOnly)&&At().shift().focus(),C.dispatchEvent(new Event("open",{bubbles:!0})))}function Z(){if(!s||!C&&!O.inline)return;let te=l,ge=e.scrollY,_e=s.offsetWidth,Re=s.offsetHeight,Ue={left:!1,top:!1},ze,je,W,ae={x:0,y:0};if(te&&(ze=e.getComputedStyle(te),je=parseFloat(ze.marginTop),W=parseFloat(ze.borderTopWidth),ae=te.getBoundingClientRect(),ae.y+=W+ge),!O.inline){let Le=C.getBoundingClientRect(),He=Le.x,lt=ge+Le.y+Le.height+O.margin;te?(He-=ae.x,lt-=ae.y,He+_e>te.clientWidth&&(He+=Le.width-_e,Ue.left=!0),lt+Re>te.clientHeight-je&&Re+O.margin<=Le.top-(ae.y-ge)&&(lt-=Le.height+Re+O.margin*2,Ue.top=!0),lt+=te.scrollTop):(He+_e>t.documentElement.clientWidth&&(He+=Le.width-_e,Ue.left=!0),lt+Re-ge>t.documentElement.clientHeight&&Re+O.margin<=Le.top&&(lt=ge+Le.y-Re-O.margin,Ue.top=!0)),s.classList.toggle("clr-left",Ue.left),s.classList.toggle("clr-top",Ue.top),s.style.left=He+"px",s.style.top=lt+"px",ae.x+=s.offsetLeft,ae.y+=s.offsetTop}N={width:a.offsetWidth,height:a.offsetHeight,x:a.offsetLeft+ae.x,y:a.offsetTop+ae.y}}function ce(te){te instanceof HTMLElement?be(te):Array.isArray(te)?te.forEach(be):t.querySelectorAll(te).forEach(be)}function be(te){let ge=te.parentNode;if(!ge.classList.contains("clr-field")){let _e=t.createElement("div"),Re="clr-field";(O.rtl||te.classList.contains("clr-rtl"))&&(Re+=" clr-rtl"),_e.innerHTML='',ge.insertBefore(_e,te),_e.className=Re,_e.style.color=te.value,_e.appendChild(te)}}function de(te){let ge=te.target.parentNode;ge.classList.contains("clr-field")&&(ge.style.color=te.target.value)}function ne(te){if(C&&!O.inline){let ge=C;te&&(C=n,M!==ge.value&&(ge.value=M,ge.dispatchEvent(new Event("input",{bubbles:!0})))),setTimeout(()=>{M!==ge.value&&ge.dispatchEvent(new Event("change",{bubbles:!0}))}),s.classList.remove("clr-open"),L&&U(),ge.dispatchEvent(new Event("close",{bubbles:!0})),O.focusInput&&ge.focus({preventScroll:!0}),C=n}}function ve(te){let ge=Je(te),_e=Me(ge);le(_e.s,_e.v),Pe(ge,_e),x.value=_e.h,s.style.color="hsl("+_e.h+", 100%, 50%)",v.style.left=_e.h/360*100+"%",u.style.left=N.width*_e.s/100+"px",u.style.top=N.height-N.height*_e.v/100+"px",S.value=_e.a*100,D.style.left=_e.a*100+"%"}function Te(te){let ge=te.substring(0,3).toLowerCase();return ge==="rgb"||ge==="hsl"?ge:"hex"}function De(te){te=te!==n?te:p.value,C&&(C.value=te,C.dispatchEvent(new Event("input",{bubbles:!0}))),O.onChange&&O.onChange.call(e,te,C),t.dispatchEvent(new CustomEvent("coloris:pick",{detail:{color:te,currentEl:C}}))}function se(te,ge){let _e={h:x.value*1,s:te/N.width*100,v:100-ge/N.height*100,a:S.value/100},Re=fe(_e);le(_e.s,_e.v),Pe(Re,_e),De()}function le(te,ge){let _e=O.a11y.marker;te=te.toFixed(1)*1,ge=ge.toFixed(1)*1,_e=_e.replace("{s}",te),_e=_e.replace("{v}",ge),u.setAttribute("aria-label",_e)}function oe(te){return{pageX:te.changedTouches?te.changedTouches[0].pageX:te.pageX,pageY:te.changedTouches?te.changedTouches[0].pageY:te.pageY}}function we(te){let ge=oe(te),_e=ge.pageX-N.x,Re=ge.pageY-N.y;l&&(Re+=l.scrollTop),he(_e,Re),te.preventDefault(),te.stopPropagation()}function Ce(te,ge){let _e=u.style.left.replace("px","")*1+te,Re=u.style.top.replace("px","")*1+ge;he(_e,Re)}function he(te,ge){te=te<0?0:te>N.width?N.width:te,ge=ge<0?0:ge>N.height?N.height:ge,u.style.left=te+"px",u.style.top=ge+"px",se(te,ge),u.focus()}function Pe(te,ge){te===void 0&&(te={}),ge===void 0&&(ge={});let _e=O.format;for(let ze in te)o[ze]=te[ze];for(let ze in ge)o[ze]=ge[ze];let Re=$e(o),Ue=Re.substring(0,7);switch(u.style.color=Ue,D.parentNode.style.color=Ue,D.style.color=Re,f.style.color=Re,a.style.display="none",a.offsetHeight,a.style.display="",D.nextElementSibling.style.display="none",D.nextElementSibling.offsetHeight,D.nextElementSibling.style.display="",_e==="mixed"?_e=o.a===1?"hex":"rgb":_e==="auto"&&(_e=E),_e){case"hex":p.value=Re;break;case"rgb":p.value=it(o);break;case"hsl":p.value=ct(Oe(o));break}t.querySelector('.clr-format [value="'+_e+'"]').checked=!0}function Ze(){let te=x.value*1,ge=u.style.left.replace("px","")*1,_e=u.style.top.replace("px","")*1;s.style.color="hsl("+te+", 100%, 50%)",v.style.left=te/360*100+"%",se(ge,_e)}function ie(){let te=S.value/100;D.style.left=te*100+"%",Pe({a:te}),De()}function fe(te){let ge=te.s/100,_e=te.v/100,Re=ge*_e,Ue=te.h/60,ze=Re*(1-r.abs(Ue%2-1)),je=_e-Re;Re=Re+je,ze=ze+je;let W=r.floor(Ue)%6,ae=[Re,ze,je,je,ze,Re][W],Le=[ze,Re,Re,ze,je,je][W],He=[je,je,ze,Re,Re,ze][W];return{r:r.round(ae*255),g:r.round(Le*255),b:r.round(He*255),a:te.a}}function Oe(te){let ge=te.v/100,_e=ge*(1-te.s/100/2),Re;return _e>0&&_e<1&&(Re=r.round((ge-_e)/r.min(_e,1-_e)*100)),{h:te.h,s:Re||0,l:r.round(_e*100),a:te.a}}function Me(te){let ge=te.r/255,_e=te.g/255,Re=te.b/255,Ue=r.max(ge,_e,Re),ze=r.min(ge,_e,Re),je=Ue-ze,W=Ue,ae=0,Le=0;return je&&(Ue===ge&&(ae=(_e-Re)/je),Ue===_e&&(ae=2+(Re-ge)/je),Ue===Re&&(ae=4+(ge-_e)/je),Ue&&(Le=je/Ue)),ae=r.floor(ae*60),{h:ae<0?ae+360:ae,s:r.round(Le*100),v:r.round(W*100),a:te.a}}function Je(te){let ge=/^((rgba)|rgb)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i,_e,Re;return i.fillStyle="#000",i.fillStyle=te,_e=ge.exec(i.fillStyle),_e?Re={r:_e[3]*1,g:_e[4]*1,b:_e[5]*1,a:_e[6]*1}:(_e=i.fillStyle.replace("#","").match(/.{2}/g).map(Ue=>parseInt(Ue,16)),Re={r:_e[0],g:_e[1],b:_e[2],a:1}),Re}function $e(te){let ge=te.r.toString(16),_e=te.g.toString(16),Re=te.b.toString(16),Ue="";if(te.r<16&&(ge="0"+ge),te.g<16&&(_e="0"+_e),te.b<16&&(Re="0"+Re),O.alpha&&(te.a<1||O.forceAlpha)){let ze=te.a*255|0;Ue=ze.toString(16),ze<16&&(Ue="0"+Ue)}return"#"+ge+_e+Re+Ue}function it(te){return!O.alpha||te.a===1&&!O.forceAlpha?"rgb("+te.r+", "+te.g+", "+te.b+")":"rgba("+te.r+", "+te.g+", "+te.b+", "+te.a+")"}function ct(te){return!O.alpha||te.a===1&&!O.forceAlpha?"hsl("+te.h+", "+te.s+"%, "+te.l+"%)":"hsla("+te.h+", "+te.s+"%, "+te.l+"%, "+te.a+")"}function rt(){t.getElementById("clr-picker")||(l=n,s=t.createElement("div"),s.setAttribute("id","clr-picker"),s.className="clr-picker",s.innerHTML=''+('
    ')+'
    '+('')+'
    '+('')+'
    '+(""+O.a11y.format+"")+'
    '+('")+'
    '+('")+"
    "+('")+('"),t.body.appendChild(s),a=zt("clr-color-area"),u=zt("clr-color-marker"),h=zt("clr-clear"),g=zt("clr-close"),f=zt("clr-color-preview"),p=zt("clr-color-value"),x=zt("clr-hue-slider"),v=zt("clr-hue-marker"),S=zt("clr-alpha-slider"),D=zt("clr-alpha-marker"),H(O.el),ce(O.el),mt(s,"mousedown",te=>{s.classList.remove("clr-keyboard-nav"),te.stopPropagation()}),mt(a,"mousedown",te=>{mt(t,"mousemove",we)}),mt(a,"contextmenu",te=>{te.preventDefault()}),mt(a,"touchstart",te=>{t.addEventListener("touchmove",we,{passive:!1})}),mt(u,"mousedown",te=>{mt(t,"mousemove",we)}),mt(u,"touchstart",te=>{t.addEventListener("touchmove",we,{passive:!1})}),mt(p,"change",te=>{let ge=p.value;if(C||O.inline){let _e=ge===""?ge:ve(ge);De(_e)}}),mt(h,"click",te=>{De(""),ne()}),mt(g,"click",te=>{De(),ne()}),mt(zt("clr-format"),"click",".clr-format input",te=>{E=te.target.value,Pe(),De()}),mt(s,"click",".clr-swatches button",te=>{ve(te.target.textContent),De(),O.swatchesOnly&&ne()}),mt(t,"mouseup",te=>{t.removeEventListener("mousemove",we)}),mt(t,"touchend",te=>{t.removeEventListener("touchmove",we)}),mt(t,"mousedown",te=>{T=!1,s.classList.remove("clr-keyboard-nav"),ne()}),mt(t,"keydown",te=>{let ge=te.key,_e=te.target,Re=te.shiftKey;if(ge==="Escape"?ne(!0):["Tab","ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(ge)&&(T=!0,s.classList.add("clr-keyboard-nav")),ge==="Tab"&&_e.matches(".clr-picker *")){let ze=At(),je=ze.shift(),W=ze.pop();Re&&_e===je?(W.focus(),te.preventDefault()):!Re&&_e===W&&(je.focus(),te.preventDefault())}}),mt(t,"click",".clr-field button",te=>{L&&U(),te.target.nextElementSibling.dispatchEvent(new Event("click",{bubbles:!0}))}),mt(u,"keydown",te=>{let ge={ArrowUp:[0,-1],ArrowDown:[0,1],ArrowLeft:[-1,0],ArrowRight:[1,0]};Object.keys(ge).includes(te.key)&&(Ce(...ge[te.key]),te.preventDefault())}),mt(a,"click",we),mt(x,"input",Ze),mt(S,"input",ie))}function At(){return Array.from(s.querySelectorAll("input, button")).filter(_e=>!!_e.offsetWidth)}function zt(te){return t.getElementById(te)}function mt(te,ge,_e,Re){let Ue=Element.prototype.matches||Element.prototype.msMatchesSelector;typeof _e=="string"?te.addEventListener(ge,ze=>{Ue.call(ze.target,_e)&&Re.call(ze.target,ze)}):(Re=_e,te.addEventListener(ge,Re))}function fr(te,ge){ge=ge!==n?ge:[],t.readyState!=="loading"?te(...ge):t.addEventListener("DOMContentLoaded",()=>{te(...ge)})}NodeList!==n&&NodeList.prototype&&!NodeList.prototype.forEach&&(NodeList.prototype.forEach=Array.prototype.forEach);function qt(te,ge){C=ge,M=C.value,X(ge),E=Te(te),Z(),ve(te),De(),M!==te&&C.dispatchEvent(new Event("change",{bubbles:!0}))}let xe=(()=>{let te={init:rt,set:q,wrap:ce,close:ne,setInstance:R,setColor:qt,removeInstance:V,updatePosition:Z,ready:fr};function ge(_e){fr(()=>{_e&&(typeof _e=="string"?H(_e):q(_e))})}for(let _e in te)ge[_e]=function(){for(var Re=arguments.length,Ue=new Array(Re),ze=0;ze{e.addEventListener("resize",_e=>{ge.updatePosition()}),e.addEventListener("scroll",_e=>{ge.updatePosition()})}),ge})();return xe.coloris=xe,xe})(window,document,Math)})(),gCe=yl.coloris,vCe=yl.init,xCe=yl.set,yCe=yl.wrap,wCe=yl.close,bCe=yl.setInstance,DCe=yl.removeInstance,SCe=yl.updatePosition,n1=yl;var tE=fn(eE(),1);function ere(){Ie.colors=bt.get("colors"),tE.default.observableDiff(Ie.colors,hi.defaults,e=>{e.kind!=="E"&&(tE.default.applyChange(Ie.colors,hi.defaults,e),bt.set("colors",Ie.colors))})}function $m(){io(".colorInput").forEach(t=>{let r=t.value===hi.defaults[t.dataset.class][t.dataset.theme];t.style.borderLeft=r?Zg()==="light"?"1px solid #eaeaea":"1px solid #666666":"2px solid #dd9359"})}var tp,hi={defaults:{answer:{title:"Answers",class:".output",dark:"#1eb5f0",light:"#17586b"},comment:{title:"Comments",class:".cm-comment",dark:"#5a5a5a",light:"#bebebe"},constant:{title:"Constants",class:".cm-constant",dark:"#eaa1f6",light:"#9c27b0"},currency:{title:"Currencies",class:".cm-currency",dark:"#009688",light:"#009688"},error:{title:"Errors",class:".lineError, .lineError:hover, .lineError > div, .lineNoError > div",dark:"#d41111",light:"#b10e0e"},excel:{title:"Excel",class:".cm-excel",dark:"#3cc383",light:"#197b43"},function:{title:"Functions",class:".cm-formulajs, .cm-function, .cm-udf",dark:"#cb82f5",light:"#6f42c1"},keyword:{title:"Keywords",class:".cm-keyword, .cm-lineNo",dark:"#be6317",light:"#be6317"},number:{title:"Numbers",class:".cm-number",dark:"#e6e6e6",light:"#333333"},operator:{title:"Operators",class:".cm-operator",dark:"#bbbbbb",light:"#888888"},text:{title:"Text",class:".cm-text",dark:"#e6e6e6",light:"#333333"},unit:{title:"Units",class:".cm-unit, .cm-udu",dark:"#4d87c9",light:"#005cc5"},variable:{title:"Variables",class:".cm-variable",dark:"#96b4c4",light:"#57707c"}},initialize:()=>{bt.get("colors")?ere():bt.set("colors",hi.defaults),Ie.colors=bt.get("colors"),io(".colorInput").forEach(t=>{t.value=Ie.colors[t.dataset.class][t.dataset.theme],t.addEventListener("click",r=>{tp=r.target,$m()})}),n1.init(),n1({el:".colorInput",parent:"#dialog-theme",alpha:!1,onChange:()=>{$m(),hi.save()}}),n1.ready(()=>{let t=document.getElementById("clr-color-value"),r=document.createElement("a");t.after(r),r.setAttribute("title","Reset color"),r.classList.add("clr-custom-reset"),r.innerHTML='',r.addEventListener("click",()=>{tp.value=hi.defaults[tp.dataset.class][tp.dataset.theme],tp.dispatchEvent(new Event("input",{bubbles:!0})),ke("#clr-color-value").value=hi.defaults[tp.dataset.class][tp.dataset.theme],ke("#clr-color-value").dispatchEvent(new Event("change")),$m(),hi.save()}),Af()})},apply:()=>{let e=Zg(),t="";Ie.colors=bt.get("colors"),Object.values(Ie.colors).forEach(r=>{t+=r.class+" { color: "+r[e]+`; } -`}),ke("#colorSheet").innerHTML=t},save:()=>{io(".colorInput").forEach(t=>{Ie.colors[t.dataset.class][t.dataset.theme]=t.value}),bt.set("colors",Ie.colors),hi.apply()},reset:()=>{bt.set("colors",hi.defaults),Ie.colors=bt.get("colors"),io(".colorInput").forEach(t=>{t.value=hi.defaults[t.dataset.class][t.dataset.theme],t.dispatchEvent(new Event("input",{bubbles:!0}))}),$m(),hi.apply()}};ke("#customizeThemeButton").addEventListener("click",()=>{$o.show("#dialog-theme")});ke("#resetColorsButton").addEventListener("click",()=>{Cf("This will reset all colors to their default values",()=>{hi.reset()})});var wl=class extends Error{},i1=class extends wl{constructor(t){super(`Invalid DateTime: ${t.toMessage()}`)}},o1=class extends wl{constructor(t){super(`Invalid Interval: ${t.toMessage()}`)}},a1=class extends wl{constructor(t){super(`Invalid Duration: ${t.toMessage()}`)}},Ms=class extends wl{},Wm=class extends wl{constructor(t){super(`Invalid unit ${t}`)}},$n=class extends wl{},Ts=class extends wl{constructor(){super("Zone is an abstract class")}};var Mt="numeric",_s="short",ha="long",Mf={year:Mt,month:Mt,day:Mt},Xg={year:Mt,month:_s,day:Mt},rE={year:Mt,month:_s,day:Mt,weekday:_s},Kg={year:Mt,month:ha,day:Mt},Jg={year:Mt,month:ha,day:Mt,weekday:ha},Qg={hour:Mt,minute:Mt},jg={hour:Mt,minute:Mt,second:Mt},ev={hour:Mt,minute:Mt,second:Mt,timeZoneName:_s},tv={hour:Mt,minute:Mt,second:Mt,timeZoneName:ha},rv={hour:Mt,minute:Mt,hourCycle:"h23"},nv={hour:Mt,minute:Mt,second:Mt,hourCycle:"h23"},iv={hour:Mt,minute:Mt,second:Mt,hourCycle:"h23",timeZoneName:_s},ov={hour:Mt,minute:Mt,second:Mt,hourCycle:"h23",timeZoneName:ha},av={year:Mt,month:Mt,day:Mt,hour:Mt,minute:Mt},sv={year:Mt,month:Mt,day:Mt,hour:Mt,minute:Mt,second:Mt},uv={year:Mt,month:_s,day:Mt,hour:Mt,minute:Mt},lv={year:Mt,month:_s,day:Mt,hour:Mt,minute:Mt,second:Mt},nE={year:Mt,month:_s,day:Mt,weekday:_s,hour:Mt,minute:Mt},fv={year:Mt,month:ha,day:Mt,hour:Mt,minute:Mt,timeZoneName:_s},cv={year:Mt,month:ha,day:Mt,hour:Mt,minute:Mt,second:Mt,timeZoneName:_s},pv={year:Mt,month:ha,day:Mt,weekday:ha,hour:Mt,minute:Mt,timeZoneName:ha},mv={year:Mt,month:ha,day:Mt,weekday:ha,hour:Mt,minute:Mt,second:Mt,timeZoneName:ha};var Wo=class{get type(){throw new Ts}get name(){throw new Ts}get ianaName(){return this.name}get isUniversal(){throw new Ts}offsetName(t,r){throw new Ts}formatOffset(t,r){throw new Ts}offset(t){throw new Ts}equals(t){throw new Ts}get isValid(){throw new Ts}};var iE=null,Tf=class e extends Wo{static get instance(){return iE===null&&(iE=new e),iE}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(t,{format:r,locale:n}){return u1(t,r,n)}formatOffset(t,r){return _f(this.offset(t),r)}offset(t){return-new Date(t).getTimezoneOffset()}equals(t){return t.type==="system"}get isValid(){return!0}};var f1={};function tre(e){return f1[e]||(f1[e]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:e,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),f1[e]}var rre={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function nre(e,t){let r=e.format(t).replace(/\u200E/g,""),n=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(r),[,i,o,l,s,a,u,f]=n;return[l,i,o,s,a,u,f]}function ire(e,t){let r=e.formatToParts(t),n=[];for(let i=0;i=0?x:1e3+x,(h-g)/(60*1e3)}equals(t){return t.type==="iana"&&t.name===this.name}get isValid(){return this.valid}};var YO={};function ore(e,t={}){let r=JSON.stringify([e,t]),n=YO[r];return n||(n=new Intl.ListFormat(e,t),YO[r]=n),n}var oE={};function aE(e,t={}){let r=JSON.stringify([e,t]),n=oE[r];return n||(n=new Intl.DateTimeFormat(e,t),oE[r]=n),n}var sE={};function are(e,t={}){let r=JSON.stringify([e,t]),n=sE[r];return n||(n=new Intl.NumberFormat(e,t),sE[r]=n),n}var uE={};function sre(e,t={}){let{base:r,...n}=t,i=JSON.stringify([e,n]),o=uE[i];return o||(o=new Intl.RelativeTimeFormat(e,t),uE[i]=o),o}var dv=null;function ure(){return dv||(dv=new Intl.DateTimeFormat().resolvedOptions().locale,dv)}var ZO={};function lre(e){let t=ZO[e];if(!t){let r=new Intl.Locale(e);t="getWeekInfo"in r?r.getWeekInfo():r.weekInfo,ZO[e]=t}return t}function fre(e){let t=e.indexOf("-x-");t!==-1&&(e=e.substring(0,t));let r=e.indexOf("-u-");if(r===-1)return[e];{let n,i;try{n=aE(e).resolvedOptions(),i=e}catch{let a=e.substring(0,r);n=aE(a).resolvedOptions(),i=a}let{numberingSystem:o,calendar:l}=n;return[i,o,l]}}function cre(e,t,r){return(r||t)&&(e.includes("-u-")||(e+="-u"),r&&(e+=`-ca-${r}`),t&&(e+=`-nu-${t}`)),e}function pre(e){let t=[];for(let r=1;r<=12;r++){let n=gr.utc(2009,r,1);t.push(e(n))}return t}function mre(e){let t=[];for(let r=1;r<=7;r++){let n=gr.utc(2016,11,13+r);t.push(e(n))}return t}function c1(e,t,r,n){let i=e.listingMode();return i==="error"?null:i==="en"?r(t):n(t)}function dre(e){return e.numberingSystem&&e.numberingSystem!=="latn"?!1:e.numberingSystem==="latn"||!e.locale||e.locale.startsWith("en")||new Intl.DateTimeFormat(e.intl).resolvedOptions().numberingSystem==="latn"}var lE=class{constructor(t,r,n){this.padTo=n.padTo||0,this.floor=n.floor||!1;let{padTo:i,floor:o,...l}=n;if(!r||Object.keys(l).length>0){let s={useGrouping:!1,...n};n.padTo>0&&(s.minimumIntegerDigits=n.padTo),this.inf=are(t,s)}}format(t){if(this.inf){let r=this.floor?Math.floor(t):t;return this.inf.format(r)}else{let r=this.floor?Math.floor(t):Gm(t,3);return kn(r,this.padTo)}}},fE=class{constructor(t,r,n){this.opts=n,this.originalZone=void 0;let i;if(this.opts.timeZone)this.dt=t;else if(t.zone.type==="fixed"){let l=-1*(t.offset/60),s=l>=0?`Etc/GMT+${l}`:`Etc/GMT${l}`;t.offset!==0&&oo.create(s).valid?(i=s,this.dt=t):(i="UTC",this.dt=t.offset===0?t:t.setZone("UTC").plus({minutes:t.offset}),this.originalZone=t.zone)}else t.zone.type==="system"?this.dt=t:t.zone.type==="iana"?(this.dt=t,i=t.zone.name):(i="UTC",this.dt=t.setZone("UTC").plus({minutes:t.offset}),this.originalZone=t.zone);let o={...this.opts};o.timeZone=o.timeZone||i,this.dtf=aE(r,o)}format(){return this.originalZone?this.formatToParts().map(({value:t})=>t).join(""):this.dtf.format(this.dt.toJSDate())}formatToParts(){let t=this.dtf.formatToParts(this.dt.toJSDate());return this.originalZone?t.map(r=>{if(r.type==="timeZoneName"){let n=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...r,value:n}}else return r}):t}resolvedOptions(){return this.dtf.resolvedOptions()}},cE=class{constructor(t,r,n){this.opts={style:"long",...n},!r&&p1()&&(this.rtf=sre(t,n))}format(t,r){return this.rtf?this.rtf.format(t,r):XO(r,t,this.opts.numeric,this.opts.style!=="long")}formatToParts(t,r){return this.rtf?this.rtf.formatToParts(t,r):[]}},hre={firstDay:1,minimalDays:4,weekend:[6,7]},Pr=class e{static fromOpts(t){return e.create(t.locale,t.numberingSystem,t.outputCalendar,t.weekSettings,t.defaultToEN)}static create(t,r,n,i,o=!1){let l=t||Br.defaultLocale,s=l||(o?"en-US":ure()),a=r||Br.defaultNumberingSystem,u=n||Br.defaultOutputCalendar,f=hv(i)||Br.defaultWeekSettings;return new e(s,a,u,f,l)}static resetCache(){dv=null,oE={},sE={},uE={}}static fromObject({locale:t,numberingSystem:r,outputCalendar:n,weekSettings:i}={}){return e.create(t,r,n,i)}constructor(t,r,n,i,o){let[l,s,a]=fre(t);this.locale=l,this.numberingSystem=r||s||null,this.outputCalendar=n||a||null,this.weekSettings=i,this.intl=cre(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=o,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached==null&&(this.fastNumbersCached=dre(this)),this.fastNumbersCached}listingMode(){let t=this.isEnglish(),r=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return t&&r?"en":"intl"}clone(t){return!t||Object.getOwnPropertyNames(t).length===0?this:e.create(t.locale||this.specifiedLocale,t.numberingSystem||this.numberingSystem,t.outputCalendar||this.outputCalendar,hv(t.weekSettings)||this.weekSettings,t.defaultToEN||!1)}redefaultToEN(t={}){return this.clone({...t,defaultToEN:!0})}redefaultToSystem(t={}){return this.clone({...t,defaultToEN:!1})}months(t,r=!1){return c1(this,t,pE,()=>{let n=r?{month:t,day:"numeric"}:{month:t},i=r?"format":"standalone";return this.monthsCache[i][t]||(this.monthsCache[i][t]=pre(o=>this.extract(o,n,"month"))),this.monthsCache[i][t]})}weekdays(t,r=!1){return c1(this,t,mE,()=>{let n=r?{weekday:t,year:"numeric",month:"long",day:"numeric"}:{weekday:t},i=r?"format":"standalone";return this.weekdaysCache[i][t]||(this.weekdaysCache[i][t]=mre(o=>this.extract(o,n,"weekday"))),this.weekdaysCache[i][t]})}meridiems(){return c1(this,void 0,()=>dE,()=>{if(!this.meridiemCache){let t={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[gr.utc(2016,11,13,9),gr.utc(2016,11,13,19)].map(r=>this.extract(r,t,"dayperiod"))}return this.meridiemCache})}eras(t){return c1(this,t,hE,()=>{let r={era:t};return this.eraCache[t]||(this.eraCache[t]=[gr.utc(-40,1,1),gr.utc(2017,1,1)].map(n=>this.extract(n,r,"era"))),this.eraCache[t]})}extract(t,r,n){let i=this.dtFormatter(t,r),o=i.formatToParts(),l=o.find(s=>s.type.toLowerCase()===n);return l?l.value:null}numberFormatter(t={}){return new lE(this.intl,t.forceSimple||this.fastNumbers,t)}dtFormatter(t,r={}){return new fE(t,this.intl,r)}relFormatter(t={}){return new cE(this.intl,this.isEnglish(),t)}listFormatter(t={}){return ore(this.intl,t)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}getWeekSettings(){return this.weekSettings?this.weekSettings:m1()?lre(this.locale):hre}getStartOfWeek(){return this.getWeekSettings().firstDay}getMinDaysInFirstWeek(){return this.getWeekSettings().minimalDays}getWeekendDays(){return this.getWeekSettings().weekend}equals(t){return this.locale===t.locale&&this.numberingSystem===t.numberingSystem&&this.outputCalendar===t.outputCalendar}toString(){return`Locale(${this.locale}, ${this.numberingSystem}, ${this.outputCalendar})`}};var vE=null,_i=class e extends Wo{static get utcInstance(){return vE===null&&(vE=new e(0)),vE}static instance(t){return t===0?e.utcInstance:new e(t)}static parseSpecifier(t){if(t){let r=t.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(r)return new e(rp(r[1],r[2]))}return null}constructor(t){super(),this.fixed=t}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${_f(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${_f(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(t,r){return _f(this.fixed,r)}get isUniversal(){return!0}offset(){return this.fixed}equals(t){return t.type==="fixed"&&t.fixed===this.fixed}get isValid(){return!0}};var Ym=class extends Wo{constructor(t){super(),this.zoneName=t}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}};function Os(e,t){let r;if(Jt(e)||e===null)return t;if(e instanceof Wo)return e;if(KO(e)){let n=e.toLowerCase();return n==="default"?t:n==="local"||n==="system"?Tf.instance:n==="utc"||n==="gmt"?_i.utcInstance:_i.parseSpecifier(n)||oo.create(e)}else return Fs(e)?_i.instance(e):typeof e=="object"&&"offset"in e&&typeof e.offset=="function"?e:new Ym(e)}var xE={arab:"[\u0660-\u0669]",arabext:"[\u06F0-\u06F9]",bali:"[\u1B50-\u1B59]",beng:"[\u09E6-\u09EF]",deva:"[\u0966-\u096F]",fullwide:"[\uFF10-\uFF19]",gujr:"[\u0AE6-\u0AEF]",hanidec:"[\u3007|\u4E00|\u4E8C|\u4E09|\u56DB|\u4E94|\u516D|\u4E03|\u516B|\u4E5D]",khmr:"[\u17E0-\u17E9]",knda:"[\u0CE6-\u0CEF]",laoo:"[\u0ED0-\u0ED9]",limb:"[\u1946-\u194F]",mlym:"[\u0D66-\u0D6F]",mong:"[\u1810-\u1819]",mymr:"[\u1040-\u1049]",orya:"[\u0B66-\u0B6F]",tamldec:"[\u0BE6-\u0BEF]",telu:"[\u0C66-\u0C6F]",thai:"[\u0E50-\u0E59]",tibt:"[\u0F20-\u0F29]",latn:"\\d"},JO={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},gre=xE.hanidec.replace(/[\[|\]]/g,"").split("");function QO(e){let t=parseInt(e,10);if(isNaN(t)){t="";for(let r=0;r=o&&n<=l&&(t+=n-o)}}return parseInt(t,10)}else return t}var Zm={};function jO(){Zm={}}function Ha({numberingSystem:e},t=""){let r=e||"latn";return Zm[r]||(Zm[r]={}),Zm[r][t]||(Zm[r][t]=new RegExp(`${xE[r]}${t}`)),Zm[r][t]}var e3=()=>Date.now(),t3="system",r3=null,n3=null,i3=null,o3=60,a3,s3=null,Br=class{static get now(){return e3}static set now(t){e3=t}static set defaultZone(t){t3=t}static get defaultZone(){return Os(t3,Tf.instance)}static get defaultLocale(){return r3}static set defaultLocale(t){r3=t}static get defaultNumberingSystem(){return n3}static set defaultNumberingSystem(t){n3=t}static get defaultOutputCalendar(){return i3}static set defaultOutputCalendar(t){i3=t}static get defaultWeekSettings(){return s3}static set defaultWeekSettings(t){s3=hv(t)}static get twoDigitCutoffYear(){return o3}static set twoDigitCutoffYear(t){o3=t%100}static get throwOnInvalid(){return a3}static set throwOnInvalid(t){a3=t}static resetCaches(){Pr.resetCache(),oo.resetCache(),gr.resetCache(),jO()}};var Oi=class{constructor(t,r){this.reason=t,this.explanation=r}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}};var u3=[0,31,59,90,120,151,181,212,243,273,304,334],l3=[0,31,60,91,121,152,182,213,244,274,305,335];function $a(e,t){return new Oi("unit out of range",`you specified ${t} (of type ${typeof t}) as a ${e}, which is invalid`)}function d1(e,t,r){let n=new Date(Date.UTC(e,t-1,r));e<100&&e>=0&&n.setUTCFullYear(n.getUTCFullYear()-1900);let i=n.getUTCDay();return i===0?7:i}function f3(e,t,r){return r+(ip(e)?l3:u3)[t-1]}function c3(e,t){let r=ip(e)?l3:u3,n=r.findIndex(o=>onp(n,t,r)?(u=n+1,a=1):u=n,{weekYear:u,weekNumber:a,weekday:s,...xv(e)}}function yE(e,t=4,r=1){let{weekYear:n,weekNumber:i,weekday:o}=e,l=h1(d1(n,1,t),r),s=Of(n),a=i*7+o-l-7+t,u;a<1?(u=n-1,a+=Of(u)):a>s?(u=n+1,a-=Of(n)):u=n;let{month:f,day:p}=c3(u,a);return{year:u,month:f,day:p,...xv(e)}}function g1(e){let{year:t,month:r,day:n}=e,i=f3(t,r,n);return{year:t,ordinal:i,...xv(e)}}function wE(e){let{year:t,ordinal:r}=e,{month:n,day:i}=c3(t,r);return{year:t,month:n,day:i,...xv(e)}}function bE(e,t){if(!Jt(e.localWeekday)||!Jt(e.localWeekNumber)||!Jt(e.localWeekYear)){if(!Jt(e.weekday)||!Jt(e.weekNumber)||!Jt(e.weekYear))throw new Ms("Cannot mix locale-based week fields with ISO-based week fields");return Jt(e.localWeekday)||(e.weekday=e.localWeekday),Jt(e.localWeekNumber)||(e.weekNumber=e.localWeekNumber),Jt(e.localWeekYear)||(e.weekYear=e.localWeekYear),delete e.localWeekday,delete e.localWeekNumber,delete e.localWeekYear,{minDaysInFirstWeek:t.getMinDaysInFirstWeek(),startOfWeek:t.getStartOfWeek()}}else return{minDaysInFirstWeek:4,startOfWeek:1}}function p3(e,t=4,r=1){let n=vv(e.weekYear),i=ga(e.weekNumber,1,np(e.weekYear,t,r)),o=ga(e.weekday,1,7);return n?i?o?!1:$a("weekday",e.weekday):$a("week",e.weekNumber):$a("weekYear",e.weekYear)}function m3(e){let t=vv(e.year),r=ga(e.ordinal,1,Of(e.year));return t?r?!1:$a("ordinal",e.ordinal):$a("year",e.year)}function DE(e){let t=vv(e.year),r=ga(e.month,1,12),n=ga(e.day,1,Xm(e.year,e.month));return t?r?n?!1:$a("day",e.day):$a("month",e.month):$a("year",e.year)}function SE(e){let{hour:t,minute:r,second:n,millisecond:i}=e,o=ga(t,0,23)||t===24&&r===0&&n===0&&i===0,l=ga(r,0,59),s=ga(n,0,59),a=ga(i,0,999);return o?l?s?a?!1:$a("millisecond",i):$a("second",n):$a("minute",r):$a("hour",t)}function Jt(e){return typeof e>"u"}function Fs(e){return typeof e=="number"}function vv(e){return typeof e=="number"&&e%1===0}function KO(e){return typeof e=="string"}function h3(e){return Object.prototype.toString.call(e)==="[object Date]"}function p1(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function m1(){try{return typeof Intl<"u"&&!!Intl.Locale&&("weekInfo"in Intl.Locale.prototype||"getWeekInfo"in Intl.Locale.prototype)}catch{return!1}}function g3(e){return Array.isArray(e)?e:[e]}function NE(e,t,r){if(e.length!==0)return e.reduce((n,i)=>{let o=[t(i),i];return n&&r(n[0],o[0])===n[0]?n:o},null)[1]}function v3(e,t){return t.reduce((r,n)=>(r[n]=e[n],r),{})}function Ff(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function hv(e){if(e==null)return null;if(typeof e!="object")throw new $n("Week settings must be an object");if(!ga(e.firstDay,1,7)||!ga(e.minimalDays,1,7)||!Array.isArray(e.weekend)||e.weekend.some(t=>!ga(t,1,7)))throw new $n("Invalid week settings");return{firstDay:e.firstDay,minimalDays:e.minimalDays,weekend:Array.from(e.weekend)}}function ga(e,t,r){return vv(e)&&e>=t&&e<=r}function vre(e,t){return e-t*Math.floor(e/t)}function kn(e,t=2){let r=e<0,n;return r?n="-"+(""+-e).padStart(t,"0"):n=(""+e).padStart(t,"0"),n}function bl(e){if(!(Jt(e)||e===null||e===""))return parseInt(e,10)}function If(e){if(!(Jt(e)||e===null||e===""))return parseFloat(e)}function yv(e){if(!(Jt(e)||e===null||e==="")){let t=parseFloat("0."+e)*1e3;return Math.floor(t)}}function Gm(e,t,r=!1){let n=10**t;return(r?Math.trunc:Math.round)(e*n)/n}function ip(e){return e%4===0&&(e%100!==0||e%400===0)}function Of(e){return ip(e)?366:365}function Xm(e,t){let r=vre(t-1,12)+1,n=e+(t-r)/12;return r===2?ip(n)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][r-1]}function Vm(e){let t=Date.UTC(e.year,e.month-1,e.day,e.hour,e.minute,e.second,e.millisecond);return e.year<100&&e.year>=0&&(t=new Date(t),t.setUTCFullYear(e.year,e.month-1,e.day)),+t}function d3(e,t,r){return-h1(d1(e,1,t),r)+t-1}function np(e,t=4,r=1){let n=d3(e,t,r),i=d3(e+1,t,r);return(Of(e)-n+i)/7}function wv(e){return e>99?e:e>Br.twoDigitCutoffYear?1900+e:2e3+e}function u1(e,t,r,n=null){let i=new Date(e),o={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};n&&(o.timeZone=n);let l={timeZoneName:t,...o},s=new Intl.DateTimeFormat(r,l).formatToParts(i).find(a=>a.type.toLowerCase()==="timezonename");return s?s.value:null}function rp(e,t){let r=parseInt(e,10);Number.isNaN(r)&&(r=0);let n=parseInt(t,10)||0,i=r<0||Object.is(r,-0)?-n:n;return r*60+i}function EE(e){let t=Number(e);if(typeof e=="boolean"||e===""||Number.isNaN(t))throw new $n(`Invalid unit value ${e}`);return t}function Km(e,t){let r={};for(let n in e)if(Ff(e,n)){let i=e[n];if(i==null)continue;r[t(n)]=EE(i)}return r}function _f(e,t){let r=Math.trunc(Math.abs(e/60)),n=Math.trunc(Math.abs(e%60)),i=e>=0?"+":"-";switch(t){case"short":return`${i}${kn(r,2)}:${kn(n,2)}`;case"narrow":return`${i}${r}${n>0?`:${n}`:""}`;case"techie":return`${i}${kn(r,2)}${kn(n,2)}`;default:throw new RangeError(`Value format ${t} is out of range for property format`)}}function xv(e){return v3(e,["hour","minute","second","millisecond"])}var xre=["January","February","March","April","May","June","July","August","September","October","November","December"],AE=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],yre=["J","F","M","A","M","J","J","A","S","O","N","D"];function pE(e){switch(e){case"narrow":return[...yre];case"short":return[...AE];case"long":return[...xre];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}var CE=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],ME=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],wre=["M","T","W","T","F","S","S"];function mE(e){switch(e){case"narrow":return[...wre];case"short":return[...ME];case"long":return[...CE];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}var dE=["AM","PM"],bre=["Before Christ","Anno Domini"],Dre=["BC","AD"],Sre=["B","A"];function hE(e){switch(e){case"narrow":return[...Sre];case"short":return[...Dre];case"long":return[...bre];default:return null}}function x3(e){return dE[e.hour<12?0:1]}function y3(e,t){return mE(t)[e.weekday-1]}function w3(e,t){return pE(t)[e.month-1]}function b3(e,t){return hE(t)[e.year<0?0:1]}function XO(e,t,r="always",n=!1){let i={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},o=["hours","minutes","seconds"].indexOf(e)===-1;if(r==="auto"&&o){let p=e==="days";switch(t){case 1:return p?"tomorrow":`next ${i[e][0]}`;case-1:return p?"yesterday":`last ${i[e][0]}`;case 0:return p?"today":`this ${i[e][0]}`;default:}}let l=Object.is(t,-0)||t<0,s=Math.abs(t),a=s===1,u=i[e],f=n?a?u[1]:u[2]||u[1]:a?i[e][0]:e;return l?`${s} ${f} ago`:`in ${s} ${f}`}function D3(e,t){let r="";for(let n of e)n.literal?r+=n.val:r+=t(n.val);return r}var Nre={D:Mf,DD:Xg,DDD:Kg,DDDD:Jg,t:Qg,tt:jg,ttt:ev,tttt:tv,T:rv,TT:nv,TTT:iv,TTTT:ov,f:av,ff:uv,fff:fv,ffff:pv,F:sv,FF:lv,FFF:cv,FFFF:mv},Fi=class e{static create(t,r={}){return new e(t,r)}static parseFormat(t){let r=null,n="",i=!1,o=[];for(let l=0;l0&&o.push({literal:i||/^\s+$/.test(n),val:n}),r=null,n="",i=!i):i||s===r?n+=s:(n.length>0&&o.push({literal:/^\s+$/.test(n),val:n}),n=s,r=s)}return n.length>0&&o.push({literal:i||/^\s+$/.test(n),val:n}),o}static macroTokenToFormatOpts(t){return Nre[t]}constructor(t,r){this.opts=r,this.loc=t,this.systemLoc=null}formatWithSystemDefault(t,r){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(t,{...this.opts,...r}).format()}dtFormatter(t,r={}){return this.loc.dtFormatter(t,{...this.opts,...r})}formatDateTime(t,r){return this.dtFormatter(t,r).format()}formatDateTimeParts(t,r){return this.dtFormatter(t,r).formatToParts()}formatInterval(t,r){return this.dtFormatter(t.start,r).dtf.formatRange(t.start.toJSDate(),t.end.toJSDate())}resolvedOptions(t,r){return this.dtFormatter(t,r).resolvedOptions()}num(t,r=0){if(this.opts.forceSimple)return kn(t,r);let n={...this.opts};return r>0&&(n.padTo=r),this.loc.numberFormatter(n).format(t)}formatDateTimeFromString(t,r){let n=this.loc.listingMode()==="en",i=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",o=(g,x)=>this.loc.extract(t,g,x),l=g=>t.isOffsetFixed&&t.offset===0&&g.allowZ?"Z":t.isValid?t.zone.formatOffset(t.ts,g.format):"",s=()=>n?x3(t):o({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(g,x)=>n?w3(t,g):o(x?{month:g}:{month:g,day:"numeric"},"month"),u=(g,x)=>n?y3(t,g):o(x?{weekday:g}:{weekday:g,month:"long",day:"numeric"},"weekday"),f=g=>{let x=e.macroTokenToFormatOpts(g);return x?this.formatWithSystemDefault(t,x):g},p=g=>n?b3(t,g):o({era:g},"era"),h=g=>{switch(g){case"S":return this.num(t.millisecond);case"u":case"SSS":return this.num(t.millisecond,3);case"s":return this.num(t.second);case"ss":return this.num(t.second,2);case"uu":return this.num(Math.floor(t.millisecond/10),2);case"uuu":return this.num(Math.floor(t.millisecond/100));case"m":return this.num(t.minute);case"mm":return this.num(t.minute,2);case"h":return this.num(t.hour%12===0?12:t.hour%12);case"hh":return this.num(t.hour%12===0?12:t.hour%12,2);case"H":return this.num(t.hour);case"HH":return this.num(t.hour,2);case"Z":return l({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return l({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return l({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return t.zone.offsetName(t.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return t.zone.offsetName(t.ts,{format:"long",locale:this.loc.locale});case"z":return t.zoneName;case"a":return s();case"d":return i?o({day:"numeric"},"day"):this.num(t.day);case"dd":return i?o({day:"2-digit"},"day"):this.num(t.day,2);case"c":return this.num(t.weekday);case"ccc":return u("short",!0);case"cccc":return u("long",!0);case"ccccc":return u("narrow",!0);case"E":return this.num(t.weekday);case"EEE":return u("short",!1);case"EEEE":return u("long",!1);case"EEEEE":return u("narrow",!1);case"L":return i?o({month:"numeric",day:"numeric"},"month"):this.num(t.month);case"LL":return i?o({month:"2-digit",day:"numeric"},"month"):this.num(t.month,2);case"LLL":return a("short",!0);case"LLLL":return a("long",!0);case"LLLLL":return a("narrow",!0);case"M":return i?o({month:"numeric"},"month"):this.num(t.month);case"MM":return i?o({month:"2-digit"},"month"):this.num(t.month,2);case"MMM":return a("short",!1);case"MMMM":return a("long",!1);case"MMMMM":return a("narrow",!1);case"y":return i?o({year:"numeric"},"year"):this.num(t.year);case"yy":return i?o({year:"2-digit"},"year"):this.num(t.year.toString().slice(-2),2);case"yyyy":return i?o({year:"numeric"},"year"):this.num(t.year,4);case"yyyyyy":return i?o({year:"numeric"},"year"):this.num(t.year,6);case"G":return p("short");case"GG":return p("long");case"GGGGG":return p("narrow");case"kk":return this.num(t.weekYear.toString().slice(-2),2);case"kkkk":return this.num(t.weekYear,4);case"W":return this.num(t.weekNumber);case"WW":return this.num(t.weekNumber,2);case"n":return this.num(t.localWeekNumber);case"nn":return this.num(t.localWeekNumber,2);case"ii":return this.num(t.localWeekYear.toString().slice(-2),2);case"iiii":return this.num(t.localWeekYear,4);case"o":return this.num(t.ordinal);case"ooo":return this.num(t.ordinal,3);case"q":return this.num(t.quarter);case"qq":return this.num(t.quarter,2);case"X":return this.num(Math.floor(t.ts/1e3));case"x":return this.num(t.ts);default:return f(g)}};return D3(e.parseFormat(r),h)}formatDurationFromString(t,r){let n=a=>{switch(a[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},i=a=>u=>{let f=n(u);return f?this.num(a.get(f),u.length):u},o=e.parseFormat(r),l=o.reduce((a,{literal:u,val:f})=>u?a:a.concat(f),[]),s=t.shiftTo(...l.map(n).filter(a=>a));return D3(o,i(s))}};var N3=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function Qm(...e){let t=e.reduce((r,n)=>r+n.source,"");return RegExp(`^${t}$`)}function jm(...e){return t=>e.reduce(([r,n,i],o)=>{let[l,s,a]=o(t,i);return[{...r,...l},s||n,a]},[{},null,1]).slice(0,2)}function ed(e,...t){if(e==null)return[null,null];for(let[r,n]of t){let i=r.exec(e);if(i)return n(i)}return[null,null]}function E3(...e){return(t,r)=>{let n={},i;for(i=0;ig!==void 0&&(x||g&&f)?-g:g;return[{years:h(If(r)),months:h(If(n)),weeks:h(If(i)),days:h(If(o)),hours:h(If(l)),minutes:h(If(s)),seconds:h(If(a),a==="-0"),milliseconds:h(yv(u),p)}]}var Pre={GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function OE(e,t,r,n,i,o,l){let s={year:t.length===2?wv(bl(t)):bl(t),month:AE.indexOf(r)+1,day:bl(n),hour:bl(i),minute:bl(o)};return l&&(s.second=bl(l)),e&&(s.weekday=e.length>3?CE.indexOf(e)+1:ME.indexOf(e)+1),s}var Rre=/^(?:(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\d)(\d\d)))$/;function qre(e){let[,t,r,n,i,o,l,s,a,u,f,p]=e,h=OE(t,i,n,r,o,l,s),g;return a?g=Pre[a]:u?g=0:g=rp(f,p),[h,new _i(g)]}function zre(e){return e.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}var Ure=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,Hre=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,$re=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function S3(e){let[,t,r,n,i,o,l,s]=e;return[OE(t,i,n,r,o,l,s),_i.utcInstance]}function Wre(e){let[,t,r,n,i,o,l,s]=e;return[OE(t,s,r,n,i,o,l),_i.utcInstance]}var Vre=Qm(Are,_E),Gre=Qm(Cre,_E),Yre=Qm(Mre,_E),Zre=Qm(C3),T3=jm(Ire,td,bv,Dv),Xre=jm(Tre,td,bv,Dv),Kre=jm(_re,td,bv,Dv),Jre=jm(td,bv,Dv);function _3(e){return ed(e,[Vre,T3],[Gre,Xre],[Yre,Kre],[Zre,Jre])}function O3(e){return ed(zre(e),[Rre,qre])}function F3(e){return ed(e,[Ure,S3],[Hre,S3],[$re,Wre])}function I3(e){return ed(e,[Lre,Bre])}var Qre=jm(td);function k3(e){return ed(e,[kre,Qre])}var jre=Qm(Ore,Fre),ene=Qm(M3),tne=jm(td,bv,Dv);function L3(e){return ed(e,[jre,T3],[ene,tne])}var B3="Invalid Duration",R3={weeks:{days:7,hours:7*24,minutes:7*24*60,seconds:7*24*60*60,milliseconds:7*24*60*60*1e3},days:{hours:24,minutes:24*60,seconds:24*60*60,milliseconds:24*60*60*1e3},hours:{minutes:60,seconds:60*60,milliseconds:60*60*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},rne={years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:91*24,minutes:91*24*60,seconds:91*24*60*60,milliseconds:91*24*60*60*1e3},months:{weeks:4,days:30,hours:30*24,minutes:30*24*60,seconds:30*24*60*60,milliseconds:30*24*60*60*1e3},...R3},Wa=146097/400,rd=146097/4800,nne={years:{quarters:4,months:12,weeks:Wa/7,days:Wa,hours:Wa*24,minutes:Wa*24*60,seconds:Wa*24*60*60,milliseconds:Wa*24*60*60*1e3},quarters:{months:3,weeks:Wa/28,days:Wa/4,hours:Wa*24/4,minutes:Wa*24*60/4,seconds:Wa*24*60*60/4,milliseconds:Wa*24*60*60*1e3/4},months:{weeks:rd/7,days:rd,hours:rd*24,minutes:rd*24*60,seconds:rd*24*60*60,milliseconds:rd*24*60*60*1e3},...R3},op=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],ine=op.slice(0).reverse();function kf(e,t,r=!1){let n={values:r?t.values:{...e.values,...t.values||{}},loc:e.loc.clone(t.loc),conversionAccuracy:t.conversionAccuracy||e.conversionAccuracy,matrix:t.matrix||e.matrix};return new Ln(n)}function q3(e,t){let r=t.milliseconds??0;for(let n of ine.slice(1))t[n]&&(r+=t[n]*e[n].milliseconds);return r}function P3(e,t){let r=q3(e,t)<0?-1:1;op.reduceRight((n,i)=>{if(Jt(t[i]))return n;if(n){let o=t[n]*r,l=e[i][n],s=Math.floor(o/l);t[i]+=s*r,t[n]-=s*l*r}return i},null),op.reduce((n,i)=>{if(Jt(t[i]))return n;if(n){let o=t[n]%1;t[n]-=o,t[i]+=o*e[n][i]}return i},null)}function one(e){let t={};for(let[r,n]of Object.entries(e))n!==0&&(t[r]=n);return t}var Ln=class e{constructor(t){let r=t.conversionAccuracy==="longterm"||!1,n=r?nne:rne;t.matrix&&(n=t.matrix),this.values=t.values,this.loc=t.loc||Pr.create(),this.conversionAccuracy=r?"longterm":"casual",this.invalid=t.invalid||null,this.matrix=n,this.isLuxonDuration=!0}static fromMillis(t,r){return e.fromObject({milliseconds:t},r)}static fromObject(t,r={}){if(t==null||typeof t!="object")throw new $n(`Duration.fromObject: argument expected to be an object, got ${t===null?"null":typeof t}`);return new e({values:Km(t,e.normalizeUnit),loc:Pr.fromObject(r),conversionAccuracy:r.conversionAccuracy,matrix:r.matrix})}static fromDurationLike(t){if(Fs(t))return e.fromMillis(t);if(e.isDuration(t))return t;if(typeof t=="object")return e.fromObject(t);throw new $n(`Unknown duration argument ${t} of type ${typeof t}`)}static fromISO(t,r){let[n]=I3(t);return n?e.fromObject(n,r):e.invalid("unparsable",`the input "${t}" can't be parsed as ISO 8601`)}static fromISOTime(t,r){let[n]=k3(t);return n?e.fromObject(n,r):e.invalid("unparsable",`the input "${t}" can't be parsed as ISO 8601`)}static invalid(t,r=null){if(!t)throw new $n("need to specify a reason the Duration is invalid");let n=t instanceof Oi?t:new Oi(t,r);if(Br.throwOnInvalid)throw new a1(n);return new e({invalid:n})}static normalizeUnit(t){let r={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[t&&t.toLowerCase()];if(!r)throw new Wm(t);return r}static isDuration(t){return t&&t.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(t,r={}){let n={...r,floor:r.round!==!1&&r.floor!==!1};return this.isValid?Fi.create(this.loc,n).formatDurationFromString(this,t):B3}toHuman(t={}){if(!this.isValid)return B3;let r=op.map(n=>{let i=this.values[n];return Jt(i)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...t,unit:n.slice(0,-1)}).format(i)}).filter(n=>n);return this.loc.listFormatter({type:"conjunction",style:t.listStyle||"narrow",...t}).format(r)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let t="P";return this.years!==0&&(t+=this.years+"Y"),(this.months!==0||this.quarters!==0)&&(t+=this.months+this.quarters*3+"M"),this.weeks!==0&&(t+=this.weeks+"W"),this.days!==0&&(t+=this.days+"D"),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(t+="T"),this.hours!==0&&(t+=this.hours+"H"),this.minutes!==0&&(t+=this.minutes+"M"),(this.seconds!==0||this.milliseconds!==0)&&(t+=Gm(this.seconds+this.milliseconds/1e3,3)+"S"),t==="P"&&(t+="T0S"),t}toISOTime(t={}){if(!this.isValid)return null;let r=this.toMillis();return r<0||r>=864e5?null:(t={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...t,includeOffset:!1},gr.fromMillis(r,{zone:"UTC"}).toISOTime(t))}toJSON(){return this.toISO()}toString(){return this.toISO()}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Duration { values: ${JSON.stringify(this.values)} }`:`Duration { Invalid, reason: ${this.invalidReason} }`}toMillis(){return this.isValid?q3(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(t){if(!this.isValid)return this;let r=e.fromDurationLike(t),n={};for(let i of op)(Ff(r.values,i)||Ff(this.values,i))&&(n[i]=r.get(i)+this.get(i));return kf(this,{values:n},!0)}minus(t){if(!this.isValid)return this;let r=e.fromDurationLike(t);return this.plus(r.negate())}mapUnits(t){if(!this.isValid)return this;let r={};for(let n of Object.keys(this.values))r[n]=EE(t(this.values[n],n));return kf(this,{values:r},!0)}get(t){return this[e.normalizeUnit(t)]}set(t){if(!this.isValid)return this;let r={...this.values,...Km(t,e.normalizeUnit)};return kf(this,{values:r})}reconfigure({locale:t,numberingSystem:r,conversionAccuracy:n,matrix:i}={}){let l={loc:this.loc.clone({locale:t,numberingSystem:r}),matrix:i,conversionAccuracy:n};return kf(this,l)}as(t){return this.isValid?this.shiftTo(t).get(t):NaN}normalize(){if(!this.isValid)return this;let t=this.toObject();return P3(this.matrix,t),kf(this,{values:t},!0)}rescale(){if(!this.isValid)return this;let t=one(this.normalize().shiftToAll().toObject());return kf(this,{values:t},!0)}shiftTo(...t){if(!this.isValid)return this;if(t.length===0)return this;t=t.map(l=>e.normalizeUnit(l));let r={},n={},i=this.toObject(),o;for(let l of op)if(t.indexOf(l)>=0){o=l;let s=0;for(let u in n)s+=this.matrix[u][l]*n[u],n[u]=0;Fs(i[l])&&(s+=i[l]);let a=Math.trunc(s);r[l]=a,n[l]=(s*1e3-a*1e3)/1e3}else Fs(i[l])&&(n[l]=i[l]);for(let l in n)n[l]!==0&&(r[o]+=l===o?n[l]:n[l]/this.matrix[o][l]);return P3(this.matrix,r),kf(this,{values:r},!0)}shiftToAll(){return this.isValid?this.shiftTo("years","months","weeks","days","hours","minutes","seconds","milliseconds"):this}negate(){if(!this.isValid)return this;let t={};for(let r of Object.keys(this.values))t[r]=this.values[r]===0?0:-this.values[r];return kf(this,{values:t},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(t){if(!this.isValid||!t.isValid||!this.loc.equals(t.loc))return!1;function r(n,i){return n===void 0||n===0?i===void 0||i===0:n===i}for(let n of op)if(!r(this.values[n],t.values[n]))return!1;return!0}};var nd="Invalid Interval";function ane(e,t){return!e||!e.isValid?Dl.invalid("missing or invalid start"):!t||!t.isValid?Dl.invalid("missing or invalid end"):tt:!1}isBefore(t){return this.isValid?this.e<=t:!1}contains(t){return this.isValid?this.s<=t&&this.e>t:!1}set({start:t,end:r}={}){return this.isValid?e.fromDateTimes(t||this.s,r||this.e):this}splitAt(...t){if(!this.isValid)return[];let r=t.map(id).filter(l=>this.contains(l)).sort((l,s)=>l.toMillis()-s.toMillis()),n=[],{s:i}=this,o=0;for(;i+this.e?this.e:l;n.push(e.fromDateTimes(i,s)),i=s,o+=1}return n}splitBy(t){let r=Ln.fromDurationLike(t);if(!this.isValid||!r.isValid||r.as("milliseconds")===0)return[];let{s:n}=this,i=1,o,l=[];for(;na*i));o=+s>+this.e?this.e:s,l.push(e.fromDateTimes(n,o)),n=o,i+=1}return l}divideEqually(t){return this.isValid?this.splitBy(this.length()/t).slice(0,t):[]}overlaps(t){return this.e>t.s&&this.s=t.e:!1}equals(t){return!this.isValid||!t.isValid?!1:this.s.equals(t.s)&&this.e.equals(t.e)}intersection(t){if(!this.isValid)return this;let r=this.s>t.s?this.s:t.s,n=this.e=n?null:e.fromDateTimes(r,n)}union(t){if(!this.isValid)return this;let r=this.st.e?this.e:t.e;return e.fromDateTimes(r,n)}static merge(t){let[r,n]=t.sort((i,o)=>i.s-o.s).reduce(([i,o],l)=>o?o.overlaps(l)||o.abutsStart(l)?[i,o.union(l)]:[i.concat([o]),l]:[i,l],[[],null]);return n&&r.push(n),r}static xor(t){let r=null,n=0,i=[],o=t.map(a=>[{time:a.s,type:"s"},{time:a.e,type:"e"}]),l=Array.prototype.concat(...o),s=l.sort((a,u)=>a.time-u.time);for(let a of s)n+=a.type==="s"?1:-1,n===1?r=a.time:(r&&+r!=+a.time&&i.push(e.fromDateTimes(r,a.time)),r=null);return e.merge(i)}difference(...t){return e.xor([this].concat(t)).map(r=>this.intersection(r)).filter(r=>r&&!r.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} \u2013 ${this.e.toISO()})`:nd}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`:`Interval { Invalid, reason: ${this.invalidReason} }`}toLocaleString(t=Mf,r={}){return this.isValid?Fi.create(this.s.loc.clone(r),t).formatInterval(this):nd}toISO(t){return this.isValid?`${this.s.toISO(t)}/${this.e.toISO(t)}`:nd}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:nd}toISOTime(t){return this.isValid?`${this.s.toISOTime(t)}/${this.e.toISOTime(t)}`:nd}toFormat(t,{separator:r=" \u2013 "}={}){return this.isValid?`${this.s.toFormat(t)}${r}${this.e.toFormat(t)}`:nd}toDuration(t,r){return this.isValid?this.e.diff(this.s,t,r):Ln.invalid(this.invalidReason)}mapEndpoints(t){return e.fromDateTimes(t(this.s),t(this.e))}};var Sl=class{static hasDST(t=Br.defaultZone){let r=gr.now().setZone(t).set({month:12});return!t.isUniversal&&r.offset!==r.set({month:6}).offset}static isValidIANAZone(t){return oo.isValidZone(t)}static normalizeZone(t){return Os(t,Br.defaultZone)}static getStartOfWeek({locale:t=null,locObj:r=null}={}){return(r||Pr.create(t)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:t=null,locObj:r=null}={}){return(r||Pr.create(t)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:t=null,locObj:r=null}={}){return(r||Pr.create(t)).getWeekendDays().slice()}static months(t="long",{locale:r=null,numberingSystem:n=null,locObj:i=null,outputCalendar:o="gregory"}={}){return(i||Pr.create(r,n,o)).months(t)}static monthsFormat(t="long",{locale:r=null,numberingSystem:n=null,locObj:i=null,outputCalendar:o="gregory"}={}){return(i||Pr.create(r,n,o)).months(t,!0)}static weekdays(t="long",{locale:r=null,numberingSystem:n=null,locObj:i=null}={}){return(i||Pr.create(r,n,null)).weekdays(t)}static weekdaysFormat(t="long",{locale:r=null,numberingSystem:n=null,locObj:i=null}={}){return(i||Pr.create(r,n,null)).weekdays(t,!0)}static meridiems({locale:t=null}={}){return Pr.create(t).meridiems()}static eras(t="short",{locale:r=null}={}){return Pr.create(r,null,"gregory").eras(t)}static features(){return{relative:p1(),localeWeek:m1()}}};function z3(e,t){let r=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),n=r(t)-r(e);return Math.floor(Ln.fromMillis(n).as("days"))}function sne(e,t,r){let n=[["years",(a,u)=>u.year-a.year],["quarters",(a,u)=>u.quarter-a.quarter+(u.year-a.year)*4],["months",(a,u)=>u.month-a.month+(u.year-a.year)*12],["weeks",(a,u)=>{let f=z3(a,u);return(f-f%7)/7}],["days",z3]],i={},o=e,l,s;for(let[a,u]of n)r.indexOf(a)>=0&&(l=a,i[a]=u(e,t),s=o.plus(i),s>t?(i[a]--,e=o.plus(i),e>t&&(s=e,i[a]--,e=o.plus(i))):e=s);return[e,i,s,l]}function U3(e,t,r,n){let[i,o,l,s]=sne(e,t,r),a=t-i,u=r.filter(p=>["hours","minutes","seconds","milliseconds"].indexOf(p)>=0);u.length===0&&(l0?Ln.fromMillis(a,n).shiftTo(...u).plus(f):f}var une="missing Intl.DateTimeFormat.formatToParts support";function zr(e,t=r=>r){return{regex:e,deser:([r])=>t(QO(r))}}var lne="\xA0",W3=`[ ${lne}]`,V3=new RegExp(W3,"g");function fne(e){return e.replace(/\./g,"\\.?").replace(V3,W3)}function H3(e){return e.replace(/\./g,"").replace(V3," ").toLowerCase()}function Is(e,t){return e===null?null:{regex:RegExp(e.map(fne).join("|")),deser:([r])=>e.findIndex(n=>H3(r)===H3(n))+t}}function $3(e,t){return{regex:e,deser:([,r,n])=>rp(r,n),groups:t}}function v1(e){return{regex:e,deser:([t])=>t}}function cne(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function pne(e,t){let r=Ha(t),n=Ha(t,"{2}"),i=Ha(t,"{3}"),o=Ha(t,"{4}"),l=Ha(t,"{6}"),s=Ha(t,"{1,2}"),a=Ha(t,"{1,3}"),u=Ha(t,"{1,6}"),f=Ha(t,"{1,9}"),p=Ha(t,"{2,4}"),h=Ha(t,"{4,6}"),g=S=>({regex:RegExp(cne(S.val)),deser:([D])=>D,literal:!0}),v=(S=>{if(e.literal)return g(S);switch(S.val){case"G":return Is(t.eras("short"),0);case"GG":return Is(t.eras("long"),0);case"y":return zr(u);case"yy":return zr(p,wv);case"yyyy":return zr(o);case"yyyyy":return zr(h);case"yyyyyy":return zr(l);case"M":return zr(s);case"MM":return zr(n);case"MMM":return Is(t.months("short",!0),1);case"MMMM":return Is(t.months("long",!0),1);case"L":return zr(s);case"LL":return zr(n);case"LLL":return Is(t.months("short",!1),1);case"LLLL":return Is(t.months("long",!1),1);case"d":return zr(s);case"dd":return zr(n);case"o":return zr(a);case"ooo":return zr(i);case"HH":return zr(n);case"H":return zr(s);case"hh":return zr(n);case"h":return zr(s);case"mm":return zr(n);case"m":return zr(s);case"q":return zr(s);case"qq":return zr(n);case"s":return zr(s);case"ss":return zr(n);case"S":return zr(a);case"SSS":return zr(i);case"u":return v1(f);case"uu":return v1(s);case"uuu":return zr(r);case"a":return Is(t.meridiems(),0);case"kkkk":return zr(o);case"kk":return zr(p,wv);case"W":return zr(s);case"WW":return zr(n);case"E":case"c":return zr(r);case"EEE":return Is(t.weekdays("short",!1),1);case"EEEE":return Is(t.weekdays("long",!1),1);case"ccc":return Is(t.weekdays("short",!0),1);case"cccc":return Is(t.weekdays("long",!0),1);case"Z":case"ZZ":return $3(new RegExp(`([+-]${s.source})(?::(${n.source}))?`),2);case"ZZZ":return $3(new RegExp(`([+-]${s.source})(${n.source})?`),2);case"z":return v1(/[a-z_+-/]{1,256}?/i);case" ":return v1(/[^\S\n\r]/);default:return g(S)}})(e)||{invalidReason:une};return v.token=e,v}var mne={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour12:{numeric:"h","2-digit":"hh"},hour24:{numeric:"H","2-digit":"HH"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"},timeZoneName:{long:"ZZZZZ",short:"ZZZ"}};function dne(e,t,r){let{type:n,value:i}=e;if(n==="literal"){let a=/^\s+$/.test(i);return{literal:!a,val:a?" ":i}}let o=t[n],l=n;n==="hour"&&(t.hour12!=null?l=t.hour12?"hour12":"hour24":t.hourCycle!=null?t.hourCycle==="h11"||t.hourCycle==="h12"?l="hour12":l="hour24":l=r.hour12?"hour12":"hour24");let s=mne[l];if(typeof s=="object"&&(s=s[o]),s)return{literal:!1,val:s}}function hne(e){return[`^${e.map(r=>r.regex).reduce((r,n)=>`${r}(${n.source})`,"")}$`,e]}function gne(e,t,r){let n=e.match(t);if(n){let i={},o=1;for(let l in r)if(Ff(r,l)){let s=r[l],a=s.groups?s.groups+1:1;!s.literal&&s.token&&(i[s.token.val[0]]=s.deser(n.slice(o,o+a))),o+=a}return[n,i]}else return[n,{}]}function vne(e){let t=o=>{switch(o){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}},r=null,n;return Jt(e.z)||(r=oo.create(e.z)),Jt(e.Z)||(r||(r=new _i(e.Z)),n=e.Z),Jt(e.q)||(e.M=(e.q-1)*3+1),Jt(e.h)||(e.h<12&&e.a===1?e.h+=12:e.h===12&&e.a===0&&(e.h=0)),e.G===0&&e.y&&(e.y=-e.y),Jt(e.u)||(e.S=yv(e.u)),[Object.keys(e).reduce((o,l)=>{let s=t(l);return s&&(o[s]=e[l]),o},{}),r,n]}var FE=null;function xne(){return FE||(FE=gr.fromMillis(1555555555555)),FE}function yne(e,t){if(e.literal)return e;let r=Fi.macroTokenToFormatOpts(e.val),n=LE(r,t);return n==null||n.includes(void 0)?e:n}function IE(e,t){return Array.prototype.concat(...e.map(r=>yne(r,t)))}var Sv=class{constructor(t,r){if(this.locale=t,this.format=r,this.tokens=IE(Fi.parseFormat(r),t),this.units=this.tokens.map(n=>pne(n,t)),this.disqualifyingUnit=this.units.find(n=>n.invalidReason),!this.disqualifyingUnit){let[n,i]=hne(this.units);this.regex=RegExp(n,"i"),this.handlers=i}}explainFromTokens(t){if(this.isValid){let[r,n]=gne(t,this.regex,this.handlers),[i,o,l]=n?vne(n):[null,null,void 0];if(Ff(n,"a")&&Ff(n,"H"))throw new Ms("Can't include meridiem when specifying 24-hour format");return{input:t,tokens:this.tokens,regex:this.regex,rawMatches:r,matches:n,result:i,zone:o,specificOffset:l}}else return{input:t,tokens:this.tokens,invalidReason:this.invalidReason}}get isValid(){return!this.disqualifyingUnit}get invalidReason(){return this.disqualifyingUnit?this.disqualifyingUnit.invalidReason:null}};function kE(e,t,r){return new Sv(e,r).explainFromTokens(t)}function G3(e,t,r){let{result:n,zone:i,specificOffset:o,invalidReason:l}=kE(e,t,r);return[n,i,o,l]}function LE(e,t){if(!e)return null;let n=Fi.create(t,e).dtFormatter(xne()),i=n.formatToParts(),o=n.resolvedOptions();return i.map(l=>dne(l,e,o))}var BE="Invalid DateTime",Y3=864e13;function Nv(e){return new Oi("unsupported zone",`the zone "${e.name}" is not supported`)}function PE(e){return e.weekData===null&&(e.weekData=gv(e.c)),e.weekData}function RE(e){return e.localWeekData===null&&(e.localWeekData=gv(e.c,e.loc.getMinDaysInFirstWeek(),e.loc.getStartOfWeek())),e.localWeekData}function ap(e,t){let r={ts:e.ts,zone:e.zone,c:e.c,o:e.o,loc:e.loc,invalid:e.invalid};return new gr({...r,...t,old:r})}function eF(e,t,r){let n=e-t*60*1e3,i=r.offset(n);if(t===i)return[n,t];n-=(i-t)*60*1e3;let o=r.offset(n);return i===o?[n,i]:[e-Math.min(i,o)*60*1e3,Math.max(i,o)]}function x1(e,t){e+=t*60*1e3;let r=new Date(e);return{year:r.getUTCFullYear(),month:r.getUTCMonth()+1,day:r.getUTCDate(),hour:r.getUTCHours(),minute:r.getUTCMinutes(),second:r.getUTCSeconds(),millisecond:r.getUTCMilliseconds()}}function w1(e,t,r){return eF(Vm(e),t,r)}function Z3(e,t){let r=e.o,n=e.c.year+Math.trunc(t.years),i=e.c.month+Math.trunc(t.months)+Math.trunc(t.quarters)*3,o={...e.c,year:n,month:i,day:Math.min(e.c.day,Xm(n,i))+Math.trunc(t.days)+Math.trunc(t.weeks)*7},l=Ln.fromObject({years:t.years-Math.trunc(t.years),quarters:t.quarters-Math.trunc(t.quarters),months:t.months-Math.trunc(t.months),weeks:t.weeks-Math.trunc(t.weeks),days:t.days-Math.trunc(t.days),hours:t.hours,minutes:t.minutes,seconds:t.seconds,milliseconds:t.milliseconds}).as("milliseconds"),s=Vm(o),[a,u]=eF(s,r,e.zone);return l!==0&&(a+=l,u=e.zone.offset(a)),{ts:a,o:u}}function od(e,t,r,n,i,o){let{setZone:l,zone:s}=r;if(e&&Object.keys(e).length!==0||t){let a=t||s,u=gr.fromObject(e,{...r,zone:a,specificOffset:o});return l?u:u.setZone(s)}else return gr.invalid(new Oi("unparsable",`the input "${i}" can't be parsed as ${n}`))}function y1(e,t,r=!0){return e.isValid?Fi.create(Pr.create("en-US"),{allowZ:r,forceSimple:!0}).formatDateTimeFromString(e,t):null}function qE(e,t){let r=e.c.year>9999||e.c.year<0,n="";return r&&e.c.year>=0&&(n+="+"),n+=kn(e.c.year,r?6:4),t?(n+="-",n+=kn(e.c.month),n+="-",n+=kn(e.c.day)):(n+=kn(e.c.month),n+=kn(e.c.day)),n}function X3(e,t,r,n,i,o){let l=kn(e.c.hour);return t?(l+=":",l+=kn(e.c.minute),(e.c.millisecond!==0||e.c.second!==0||!r)&&(l+=":")):l+=kn(e.c.minute),(e.c.millisecond!==0||e.c.second!==0||!r)&&(l+=kn(e.c.second),(e.c.millisecond!==0||!n)&&(l+=".",l+=kn(e.c.millisecond,3))),i&&(e.isOffsetFixed&&e.offset===0&&!o?l+="Z":e.o<0?(l+="-",l+=kn(Math.trunc(-e.o/60)),l+=":",l+=kn(Math.trunc(-e.o%60))):(l+="+",l+=kn(Math.trunc(e.o/60)),l+=":",l+=kn(Math.trunc(e.o%60)))),o&&(l+="["+e.zone.ianaName+"]"),l}var tF={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},wne={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},bne={ordinal:1,hour:0,minute:0,second:0,millisecond:0},rF=["year","month","day","hour","minute","second","millisecond"],Dne=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],Sne=["year","ordinal","hour","minute","second","millisecond"];function Nne(e){let t={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[e.toLowerCase()];if(!t)throw new Wm(e);return t}function K3(e){switch(e.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return Nne(e)}}function Ene(e){return D1[e]||(b1===void 0&&(b1=Br.now()),D1[e]=e.offset(b1)),D1[e]}function J3(e,t){let r=Os(t.zone,Br.defaultZone);if(!r.isValid)return gr.invalid(Nv(r));let n=Pr.fromObject(t),i,o;if(Jt(e.year))i=Br.now();else{for(let a of rF)Jt(e[a])&&(e[a]=tF[a]);let l=DE(e)||SE(e);if(l)return gr.invalid(l);let s=Ene(r);[i,o]=w1(e,s,r)}return new gr({ts:i,zone:r,loc:n,o})}function Q3(e,t,r){let n=Jt(r.round)?!0:r.round,i=(l,s)=>(l=Gm(l,n||r.calendary?0:2,!0),t.loc.clone(r).relFormatter(r).format(l,s)),o=l=>r.calendary?t.hasSame(e,l)?0:t.startOf(l).diff(e.startOf(l),l).get(l):t.diff(e,l).get(l);if(r.unit)return i(o(r.unit),r.unit);for(let l of r.units){let s=o(l);if(Math.abs(s)>=1)return i(s,l)}return i(e>t?-0:0,r.units[r.units.length-1])}function j3(e){let t={},r;return e.length>0&&typeof e[e.length-1]=="object"?(t=e[e.length-1],r=Array.from(e).slice(0,e.length-1)):r=Array.from(e),[t,r]}var b1,D1={},gr=class e{constructor(t){let r=t.zone||Br.defaultZone,n=t.invalid||(Number.isNaN(t.ts)?new Oi("invalid input"):null)||(r.isValid?null:Nv(r));this.ts=Jt(t.ts)?Br.now():t.ts;let i=null,o=null;if(!n)if(t.old&&t.old.ts===this.ts&&t.old.zone.equals(r))[i,o]=[t.old.c,t.old.o];else{let s=Fs(t.o)&&!t.old?t.o:r.offset(this.ts);i=x1(this.ts,s),n=Number.isNaN(i.year)?new Oi("invalid input"):null,i=n?null:i,o=n?null:s}this._zone=r,this.loc=t.loc||Pr.create(),this.invalid=n,this.weekData=null,this.localWeekData=null,this.c=i,this.o=o,this.isLuxonDateTime=!0}static now(){return new e({})}static local(){let[t,r]=j3(arguments),[n,i,o,l,s,a,u]=r;return J3({year:n,month:i,day:o,hour:l,minute:s,second:a,millisecond:u},t)}static utc(){let[t,r]=j3(arguments),[n,i,o,l,s,a,u]=r;return t.zone=_i.utcInstance,J3({year:n,month:i,day:o,hour:l,minute:s,second:a,millisecond:u},t)}static fromJSDate(t,r={}){let n=h3(t)?t.valueOf():NaN;if(Number.isNaN(n))return e.invalid("invalid input");let i=Os(r.zone,Br.defaultZone);return i.isValid?new e({ts:n,zone:i,loc:Pr.fromObject(r)}):e.invalid(Nv(i))}static fromMillis(t,r={}){if(Fs(t))return t<-Y3||t>Y3?e.invalid("Timestamp out of range"):new e({ts:t,zone:Os(r.zone,Br.defaultZone),loc:Pr.fromObject(r)});throw new $n(`fromMillis requires a numerical input, but received a ${typeof t} with value ${t}`)}static fromSeconds(t,r={}){if(Fs(t))return new e({ts:t*1e3,zone:Os(r.zone,Br.defaultZone),loc:Pr.fromObject(r)});throw new $n("fromSeconds requires a numerical input")}static fromObject(t,r={}){t=t||{};let n=Os(r.zone,Br.defaultZone);if(!n.isValid)return e.invalid(Nv(n));let i=Pr.fromObject(r),o=Km(t,K3),{minDaysInFirstWeek:l,startOfWeek:s}=bE(o,i),a=Br.now(),u=Jt(r.specificOffset)?n.offset(a):r.specificOffset,f=!Jt(o.ordinal),p=!Jt(o.year),h=!Jt(o.month)||!Jt(o.day),g=p||h,x=o.weekYear||o.weekNumber;if((g||f)&&x)throw new Ms("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(h&&f)throw new Ms("Can't mix ordinal dates with month/day");let v=x||o.weekday&&!g,S,D,C=x1(a,u);v?(S=Dne,D=wne,C=gv(C,l,s)):f?(S=Sne,D=bne,C=g1(C)):(S=rF,D=tF);let E=!1;for(let B of S){let L=o[B];Jt(L)?E?o[B]=D[B]:o[B]=C[B]:E=!0}let M=v?p3(o,l,s):f?m3(o):DE(o),T=M||SE(o);if(T)return e.invalid(T);let N=v?yE(o,l,s):f?wE(o):o,[O,F]=w1(N,u,n),I=new e({ts:O,zone:n,o:F,loc:i});return o.weekday&&g&&t.weekday!==I.weekday?e.invalid("mismatched weekday",`you can't specify both a weekday of ${o.weekday} and a date of ${I.toISO()}`):I.isValid?I:e.invalid(I.invalid)}static fromISO(t,r={}){let[n,i]=_3(t);return od(n,i,r,"ISO 8601",t)}static fromRFC2822(t,r={}){let[n,i]=O3(t);return od(n,i,r,"RFC 2822",t)}static fromHTTP(t,r={}){let[n,i]=F3(t);return od(n,i,r,"HTTP",r)}static fromFormat(t,r,n={}){if(Jt(t)||Jt(r))throw new $n("fromFormat requires an input string and a format");let{locale:i=null,numberingSystem:o=null}=n,l=Pr.fromOpts({locale:i,numberingSystem:o,defaultToEN:!0}),[s,a,u,f]=G3(l,t,r);return f?e.invalid(f):od(s,a,n,`format ${r}`,t,u)}static fromString(t,r,n={}){return e.fromFormat(t,r,n)}static fromSQL(t,r={}){let[n,i]=L3(t);return od(n,i,r,"SQL",t)}static invalid(t,r=null){if(!t)throw new $n("need to specify a reason the DateTime is invalid");let n=t instanceof Oi?t:new Oi(t,r);if(Br.throwOnInvalid)throw new i1(n);return new e({invalid:n})}static isDateTime(t){return t&&t.isLuxonDateTime||!1}static parseFormatForOpts(t,r={}){let n=LE(t,Pr.fromObject(r));return n?n.map(i=>i?i.val:null).join(""):null}static expandFormat(t,r={}){return IE(Fi.parseFormat(t),Pr.fromObject(r)).map(i=>i.val).join("")}static resetCache(){b1=void 0,D1={}}get(t){return this[t]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?PE(this).weekYear:NaN}get weekNumber(){return this.isValid?PE(this).weekNumber:NaN}get weekday(){return this.isValid?PE(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?RE(this).weekday:NaN}get localWeekNumber(){return this.isValid?RE(this).weekNumber:NaN}get localWeekYear(){return this.isValid?RE(this).weekYear:NaN}get ordinal(){return this.isValid?g1(this.c).ordinal:NaN}get monthShort(){return this.isValid?Sl.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Sl.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Sl.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Sl.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}getPossibleOffsets(){if(!this.isValid||this.isOffsetFixed)return[this];let t=864e5,r=6e4,n=Vm(this.c),i=this.zone.offset(n-t),o=this.zone.offset(n+t),l=this.zone.offset(n-i*r),s=this.zone.offset(n-o*r);if(l===s)return[this];let a=n-l*r,u=n-s*r,f=x1(a,l),p=x1(u,s);return f.hour===p.hour&&f.minute===p.minute&&f.second===p.second&&f.millisecond===p.millisecond?[ap(this,{ts:a}),ap(this,{ts:u})]:[this]}get isInLeapYear(){return ip(this.year)}get daysInMonth(){return Xm(this.year,this.month)}get daysInYear(){return this.isValid?Of(this.year):NaN}get weeksInWeekYear(){return this.isValid?np(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?np(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(t={}){let{locale:r,numberingSystem:n,calendar:i}=Fi.create(this.loc.clone(t),t).resolvedOptions(this);return{locale:r,numberingSystem:n,outputCalendar:i}}toUTC(t=0,r={}){return this.setZone(_i.instance(t),r)}toLocal(){return this.setZone(Br.defaultZone)}setZone(t,{keepLocalTime:r=!1,keepCalendarTime:n=!1}={}){if(t=Os(t,Br.defaultZone),t.equals(this.zone))return this;if(t.isValid){let i=this.ts;if(r||n){let o=t.offset(this.ts),l=this.toObject();[i]=w1(l,o,t)}return ap(this,{ts:i,zone:t})}else return e.invalid(Nv(t))}reconfigure({locale:t,numberingSystem:r,outputCalendar:n}={}){let i=this.loc.clone({locale:t,numberingSystem:r,outputCalendar:n});return ap(this,{loc:i})}setLocale(t){return this.reconfigure({locale:t})}set(t){if(!this.isValid)return this;let r=Km(t,K3),{minDaysInFirstWeek:n,startOfWeek:i}=bE(r,this.loc),o=!Jt(r.weekYear)||!Jt(r.weekNumber)||!Jt(r.weekday),l=!Jt(r.ordinal),s=!Jt(r.year),a=!Jt(r.month)||!Jt(r.day),u=s||a,f=r.weekYear||r.weekNumber;if((u||l)&&f)throw new Ms("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(a&&l)throw new Ms("Can't mix ordinal dates with month/day");let p;o?p=yE({...gv(this.c,n,i),...r},n,i):Jt(r.ordinal)?(p={...this.toObject(),...r},Jt(r.day)&&(p.day=Math.min(Xm(p.year,p.month),p.day))):p=wE({...g1(this.c),...r});let[h,g]=w1(p,this.o,this.zone);return ap(this,{ts:h,o:g})}plus(t){if(!this.isValid)return this;let r=Ln.fromDurationLike(t);return ap(this,Z3(this,r))}minus(t){if(!this.isValid)return this;let r=Ln.fromDurationLike(t).negate();return ap(this,Z3(this,r))}startOf(t,{useLocaleWeeks:r=!1}={}){if(!this.isValid)return this;let n={},i=Ln.normalizeUnit(t);switch(i){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0;break;case"milliseconds":break}if(i==="weeks")if(r){let o=this.loc.getStartOfWeek(),{weekday:l}=this;lthis.valueOf(),s=l?this:t,a=l?t:this,u=U3(s,a,o,i);return l?u.negate():u}diffNow(t="milliseconds",r={}){return this.diff(e.now(),t,r)}until(t){return this.isValid?Dl.fromDateTimes(this,t):this}hasSame(t,r,n){if(!this.isValid)return!1;let i=t.valueOf(),o=this.setZone(t.zone,{keepLocalTime:!0});return o.startOf(r,n)<=i&&i<=o.endOf(r,n)}equals(t){return this.isValid&&t.isValid&&this.valueOf()===t.valueOf()&&this.zone.equals(t.zone)&&this.loc.equals(t.loc)}toRelative(t={}){if(!this.isValid)return null;let r=t.base||e.fromObject({},{zone:this.zone}),n=t.padding?thisr.valueOf(),Math.min)}static max(...t){if(!t.every(e.isDateTime))throw new $n("max requires all arguments be DateTimes");return NE(t,r=>r.valueOf(),Math.max)}static fromFormatExplain(t,r,n={}){let{locale:i=null,numberingSystem:o=null}=n,l=Pr.fromOpts({locale:i,numberingSystem:o,defaultToEN:!0});return kE(l,t,r)}static fromStringExplain(t,r,n={}){return e.fromFormatExplain(t,r,n)}static buildFormatParser(t,r={}){let{locale:n=null,numberingSystem:i=null}=r,o=Pr.fromOpts({locale:n,numberingSystem:i,defaultToEN:!0});return new Sv(o,t)}static fromFormatParser(t,r,n={}){if(Jt(t)||Jt(r))throw new $n("fromFormatParser requires an input string and a format parser");let{locale:i=null,numberingSystem:o=null}=n,l=Pr.fromOpts({locale:i,numberingSystem:o,defaultToEN:!0});if(!l.equals(r.locale))throw new $n(`fromFormatParser called with a locale of ${l}, but the format parser was created for ${r.locale}`);let{result:s,zone:a,specificOffset:u,invalidReason:f}=r.explainFromTokens(t);return f?e.invalid(f):od(s,a,n,`format ${r.format}`,t,u)}static get DATE_SHORT(){return Mf}static get DATE_MED(){return Xg}static get DATE_MED_WITH_WEEKDAY(){return rE}static get DATE_FULL(){return Kg}static get DATE_HUGE(){return Jg}static get TIME_SIMPLE(){return Qg}static get TIME_WITH_SECONDS(){return jg}static get TIME_WITH_SHORT_OFFSET(){return ev}static get TIME_WITH_LONG_OFFSET(){return tv}static get TIME_24_SIMPLE(){return rv}static get TIME_24_WITH_SECONDS(){return nv}static get TIME_24_WITH_SHORT_OFFSET(){return iv}static get TIME_24_WITH_LONG_OFFSET(){return ov}static get DATETIME_SHORT(){return av}static get DATETIME_SHORT_WITH_SECONDS(){return sv}static get DATETIME_MED(){return uv}static get DATETIME_MED_WITH_SECONDS(){return lv}static get DATETIME_MED_WITH_WEEKDAY(){return nE}static get DATETIME_FULL(){return fv}static get DATETIME_FULL_WITH_SECONDS(){return cv}static get DATETIME_HUGE(){return pv}static get DATETIME_HUGE_WITH_SECONDS(){return mv}};function id(e){if(gr.isDateTime(e))return e;if(e&&e.valueOf&&Fs(e.valueOf()))return gr.fromJSDate(e);if(e&&typeof e=="object")return gr.fromObject(e);throw new $n(`Unknown datetime argument: ${e}, of type ${typeof e}`)}function Wn(){return Wn=Object.assign?Object.assign.bind():function(e){for(var t=1;tthis.has(t)).values()}get(t){return nn(this.wrappedObject,t)}set(t,r){return Du(this.wrappedObject,t,r),this}has(t){return Ev(this.wrappedObject,t)&&t in this.wrappedObject}entries(){return iF(this.keys(),t=>[t,this.get(t)])}forEach(t){for(var r of this.keys())t(this.get(r),r,this)}delete(t){Ev(this.wrappedObject,t)&&delete this.wrappedObject[t]}clear(){for(var t of this.keys())this.delete(t)}get size(){return Object.keys(this.wrappedObject).length}},ad=class{constructor(t,r,n){this.a=t,this.b=r,this.bKeys=n,this[Symbol.iterator]=this.entries}get(t){return this.bKeys.has(t)?this.b.get(t):this.a.get(t)}set(t,r){return this.bKeys.has(t)?this.b.set(t,r):this.a.set(t,r),this}has(t){return this.b.has(t)||this.a.has(t)}keys(){return new Set([...this.a.keys(),...this.b.keys()])[Symbol.iterator]()}entries(){return iF(this.keys(),t=>[t,this.get(t)])}forEach(t){for(var r of this.keys())t(this.get(r),r,this)}delete(t){return this.bKeys.has(t)?this.b.delete(t):this.a.delete(t)}clear(){this.a.clear(),this.b.clear()}get size(){return[...this.keys()].length}};function iF(e,t){return{next:()=>{var r=e.next();return r.done?r:{value:t(r.value),done:!1}}}}function Bf(){return new Map}function Nl(e){if(!e)return Bf();if(Su(e))return e;if(ks(e))return new Lf(e);throw new Error("createMap can create maps from objects or Maps")}function oF(e){if(e instanceof Lf)return e.wrappedObject;var t={};for(var r of e.keys()){var n=e.get(r);Du(t,r,n)}return t}function Rt(e){return typeof e=="number"}function Nt(e){return!e||typeof e!="object"||typeof e.constructor!="function"?!1:e.isBigNumber===!0&&typeof e.constructor.prototype=="object"&&e.constructor.prototype.isBigNumber===!0||typeof e.constructor.isDecimal=="function"&&e.constructor.isDecimal(e)===!0}function E1(e){return typeof e=="bigint"}function gi(e){return e&&typeof e=="object"&&Object.getPrototypeOf(e).isComplex===!0||!1}function va(e){return e&&typeof e=="object"&&Object.getPrototypeOf(e).isFraction===!0||!1}function ei(e){return e&&e.constructor.prototype.isUnit===!0||!1}function cn(e){return typeof e=="string"}var dr=Array.isArray;function yt(e){return e&&e.constructor.prototype.isMatrix===!0||!1}function hn(e){return Array.isArray(e)||yt(e)}function El(e){return e&&e.isDenseMatrix&&e.constructor.prototype.isMatrix===!0||!1}function xa(e){return e&&e.isSparseMatrix&&e.constructor.prototype.isMatrix===!0||!1}function Pf(e){return e&&e.constructor.prototype.isRange===!0||!1}function Nu(e){return e&&e.constructor.prototype.isIndex===!0||!1}function A1(e){return typeof e=="boolean"}function C1(e){return e&&e.constructor.prototype.isResultSet===!0||!1}function sd(e){return e&&e.constructor.prototype.isHelp===!0||!1}function M1(e){return typeof e=="function"}function T1(e){return e instanceof Date}function _1(e){return e instanceof RegExp}function ks(e){return!!(e&&typeof e=="object"&&e.constructor===Object&&!gi(e)&&!va(e))}function Su(e){return e?e instanceof Map||e instanceof Lf||typeof e.set=="function"&&typeof e.get=="function"&&typeof e.keys=="function"&&typeof e.has=="function":!1}function aF(e){return Su(e)&&Su(e.a)&&Su(e.b)}function sF(e){return Su(e)&&ks(e.wrappedObject)}function O1(e){return e===null}function F1(e){return e===void 0}function Mo(e){return e&&e.isAccessorNode===!0&&e.constructor.prototype.isNode===!0||!1}function vi(e){return e&&e.isArrayNode===!0&&e.constructor.prototype.isNode===!0||!1}function I1(e){return e&&e.isAssignmentNode===!0&&e.constructor.prototype.isNode===!0||!1}function k1(e){return e&&e.isBlockNode===!0&&e.constructor.prototype.isNode===!0||!1}function L1(e){return e&&e.isConditionalNode===!0&&e.constructor.prototype.isNode===!0||!1}function Qt(e){return e&&e.isConstantNode===!0&&e.constructor.prototype.isNode===!0||!1}function Av(e){return Qt(e)||Ur(e)&&e.args.length===1&&Qt(e.args[0])&&"-+~".includes(e.op)}function Va(e){return e&&e.isFunctionAssignmentNode===!0&&e.constructor.prototype.isNode===!0||!1}function Gi(e){return e&&e.isFunctionNode===!0&&e.constructor.prototype.isNode===!0||!1}function Vo(e){return e&&e.isIndexNode===!0&&e.constructor.prototype.isNode===!0||!1}function ir(e){return e&&e.isNode===!0&&e.constructor.prototype.isNode===!0||!1}function Eu(e){return e&&e.isObjectNode===!0&&e.constructor.prototype.isNode===!0||!1}function Ur(e){return e&&e.isOperatorNode===!0&&e.constructor.prototype.isNode===!0||!1}function xi(e){return e&&e.isParenthesisNode===!0&&e.constructor.prototype.isNode===!0||!1}function B1(e){return e&&e.isRangeNode===!0&&e.constructor.prototype.isNode===!0||!1}function P1(e){return e&&e.isRelationalNode===!0&&e.constructor.prototype.isNode===!0||!1}function Ir(e){return e&&e.isSymbolNode===!0&&e.constructor.prototype.isNode===!0||!1}function ud(e){return e&&e.constructor.prototype.isChain===!0||!1}function pr(e){var t=typeof e;return t==="object"?e===null?"null":Nt(e)?"BigNumber":e.constructor&&e.constructor.name?e.constructor.name:"Object":t}function _t(e){var t=typeof e;if(t==="number"||t==="bigint"||t==="string"||t==="boolean"||e===null||e===void 0)return e;if(typeof e.clone=="function")return e.clone();if(Array.isArray(e))return e.map(function(r){return _t(r)});if(e instanceof Date)return new Date(e.valueOf());if(Nt(e))return e;if(ks(e))return Tne(e,_t);throw new TypeError("Cannot clone: unknown type of value (value: ".concat(e,")"))}function Tne(e,t){var r={};for(var n in e)xt(e,n)&&(r[n]=t(e[n]));return r}function R1(e,t){for(var r in t)xt(t,r)&&(e[r]=t[r]);return e}function zE(e,t){if(Array.isArray(t))throw new TypeError("Arrays are not supported by deepExtend");for(var r in t)if(xt(t,r)&&!(r in Object.prototype)&&!(r in Function.prototype))if(t[r]&&t[r].constructor===Object)e[r]===void 0&&(e[r]={}),e[r]&&e[r].constructor===Object?zE(e[r],t[r]):e[r]=t[r];else{if(Array.isArray(t[r]))throw new TypeError("Arrays are not supported by deepExtend");e[r]=t[r]}return e}function Go(e,t){var r,n,i;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(n=0,i=e.length;n{Object.defineProperty(r,n,{get:()=>e[n],enumerable:!0,configurable:!0})}),r}function dF(e,t,r){e[t]!==void 0&&!r.includes(e[t])&&console.warn('Warning: Unknown value "'+e[t]+'" for configuration option "'+t+'". Available options: '+r.map(n=>JSON.stringify(n)).join(", ")+".")}var TC={};wu(TC,{createAbs:()=>fk,createAccessorNode:()=>TP,createAcos:()=>oB,createAcosh:()=>sB,createAcot:()=>lB,createAcoth:()=>cB,createAcsc:()=>mB,createAcsch:()=>hB,createAdd:()=>xP,createAddScalar:()=>mk,createAnd:()=>Fw,createAndTransform:()=>ZH,createApply:()=>Dd,createApplyTransform:()=>yH,createArg:()=>m5,createArrayNode:()=>_P,createAsec:()=>vB,createAsech:()=>yB,createAsin:()=>bB,createAsinh:()=>DB,createAssignmentNode:()=>IP,createAtan:()=>SB,createAtan2:()=>EB,createAtanh:()=>CB,createAtomicMass:()=>QU,createAvogadro:()=>jU,createBellNumbers:()=>Fz,createBigNumberClass:()=>GF,createBigint:()=>UI,createBignumber:()=>GI,createBin:()=>T4,createBitAnd:()=>gw,createBitAndTransform:()=>KH,createBitNot:()=>u5,createBitOr:()=>vw,createBitOrTransform:()=>JH,createBitXor:()=>c5,createBlockNode:()=>kP,createBohrMagneton:()=>FU,createBohrRadius:()=>RU,createBoltzmann:()=>eH,createBoolean:()=>VI,createCatalan:()=>kz,createCbrt:()=>vk,createCeil:()=>xk,createChain:()=>aq,createChainClass:()=>T6,createClassicalElectronRadius:()=>qU,createClone:()=>dI,createColumn:()=>ww,createColumnTransform:()=>wH,createCombinations:()=>$q,createCombinationsWithRep:()=>Gq,createCompare:()=>xL,createCompareNatural:()=>DL,createCompareText:()=>NL,createCompile:()=>e6,createComplex:()=>YI,createComplexClass:()=>YF,createComposition:()=>Bz,createConcat:()=>yw,createConcatTransform:()=>LH,createConditionalNode:()=>LP,createConductanceQuantum:()=>IU,createConj:()=>h5,createConstantNode:()=>UP,createCorr:()=>zq,createCos:()=>TB,createCosh:()=>OB,createCot:()=>IB,createCoth:()=>LB,createCoulomb:()=>_U,createCount:()=>M5,createCreateUnit:()=>nB,createCross:()=>_5,createCsc:()=>PB,createCsch:()=>qB,createCtranspose:()=>u4,createCube:()=>wk,createCumSum:()=>mb,createCumSumTransform:()=>$H,createDeepEqual:()=>IL,createDenseMatrixClass:()=>pI,createDerivative:()=>Zz,createDet:()=>uq,createDeuteronMass:()=>VU,createDiag:()=>F5,createDiff:()=>Nw,createDiffTransform:()=>PH,createDistance:()=>Mq,createDivide:()=>Aq,createDivideScalar:()=>H4,createDot:()=>NP,createDotDivide:()=>rL,createDotMultiply:()=>e5,createDotPow:()=>eL,createE:()=>cU,createEfimovFactor:()=>JU,createEigs:()=>hq,createElectricConstant:()=>MU,createElectronMass:()=>zU,createElementaryCharge:()=>OU,createEqual:()=>EL,createEqualScalar:()=>RI,createEqualText:()=>CL,createErf:()=>y4,createEvaluate:()=>r6,createExp:()=>Dk,createExpm:()=>vq,createExpm1:()=>Nk,createFactorial:()=>Qq,createFalse:()=>oU,createFaraday:()=>tH,createFermiCoupling:()=>UU,createFft:()=>p4,createFibonacciHeapClass:()=>WL,createFilter:()=>bw,createFilterTransform:()=>SH,createFineStructure:()=>HU,createFirstRadiation:()=>rH,createFix:()=>Ek,createFlatten:()=>L5,createFloor:()=>pw,createForEach:()=>Dw,createForEachTransform:()=>NH,createFormat:()=>C4,createFraction:()=>ZI,createFractionClass:()=>XF,createFreqz:()=>eU,createFunctionAssignmentNode:()=>HP,createFunctionNode:()=>KP,createGamma:()=>Zq,createGasConstant:()=>iH,createGcd:()=>_k,createGetMatrixDataType:()=>P5,createGravitationConstant:()=>NU,createGravity:()=>mH,createHartreeEnergy:()=>$U,createHasNumericValue:()=>MI,createHelp:()=>iq,createHelpClass:()=>M6,createHex:()=>I4,createHypot:()=>wP,createI:()=>yU,createIdentity:()=>q5,createIfft:()=>d4,createIm:()=>v5,createImmutableDenseMatrixClass:()=>UL,createIndex:()=>CP,createIndexClass:()=>$L,createIndexNode:()=>$P,createIndexTransform:()=>EH,createInfinity:()=>sU,createIntersect:()=>Tq,createInv:()=>fq,createInverseConductanceQuantum:()=>kU,createInvmod:()=>Qk,createIsInteger:()=>gI,createIsNaN:()=>kI,createIsNegative:()=>NI,createIsNumeric:()=>AI,createIsPositive:()=>_I,createIsPrime:()=>q4,createIsZero:()=>FI,createKldivergence:()=>ez,createKlitzing:()=>PU,createKron:()=>U5,createLN10:()=>dU,createLN2:()=>mU,createLOG10E:()=>gU,createLOG2E:()=>hU,createLarger:()=>_L,createLargerEq:()=>OL,createLcm:()=>Fk,createLeafCount:()=>Rz,createLeftShift:()=>pL,createLgamma:()=>Kq,createLog:()=>Z4,createLog10:()=>kk,createLog1p:()=>K4,createLog2:()=>Bk,createLoschmidt:()=>nH,createLsolve:()=>iL,createLsolveAll:()=>uL,createLup:()=>s6,createLusolve:()=>E6,createLyap:()=>Eq,createMad:()=>Lq,createMagneticConstant:()=>CU,createMagneticFluxQuantum:()=>LU,createMap:()=>Sw,createMapTransform:()=>AH,createMatrix:()=>KI,createMatrixClass:()=>JF,createMatrixFromColumns:()=>rk,createMatrixFromFunction:()=>QI,createMatrixFromRows:()=>ek,createMax:()=>zw,createMaxTransform:()=>TH,createMean:()=>db,createMeanTransform:()=>_H,createMedian:()=>Iq,createMin:()=>Uw,createMinTransform:()=>OH,createMod:()=>mw,createMode:()=>S4,createMolarMass:()=>cH,createMolarMassC12:()=>pH,createMolarPlanckConstant:()=>oH,createMolarVolume:()=>aH,createMultinomial:()=>rz,createMultiply:()=>qk,createMultiplyScalar:()=>Pk,createNaN:()=>uU,createNeutronMass:()=>GU,createNode:()=>MP,createNorm:()=>DP,createNot:()=>b5,createNthRoot:()=>Uk,createNthRoots:()=>Q4,createNuclearMagneton:()=>BU,createNull:()=>aU,createNumber:()=>zI,createNumeric:()=>z4,createObjectNode:()=>WP,createOct:()=>O4,createOnes:()=>$5,createOperatorNode:()=>VP,createOr:()=>xw,createOrTransform:()=>XH,createParenthesisNode:()=>GP,createParse:()=>QP,createParser:()=>o6,createParserClass:()=>n6,createPartitionSelect:()=>BL,createPermutations:()=>oz,createPhi:()=>pU,createPi:()=>lU,createPickRandom:()=>Nz,createPinv:()=>pq,createPlanckCharge:()=>vH,createPlanckConstant:()=>EU,createPlanckLength:()=>dH,createPlanckMass:()=>hH,createPlanckTemperature:()=>xH,createPlanckTime:()=>gH,createPolynomialRoot:()=>C6,createPow:()=>W4,createPrint:()=>Ow,createPrintTransform:()=>YH,createProd:()=>E4,createProtonMass:()=>WU,createQr:()=>l6,createQuantileSeq:()=>gb,createQuantileSeqTransform:()=>UH,createQuantumOfCirculation:()=>YU,createRandom:()=>Az,createRandomInt:()=>Mz,createRange:()=>Cw,createRangeClass:()=>KF,createRangeNode:()=>YP,createRangeTransform:()=>FH,createRationalize:()=>Kz,createRe:()=>y5,createReducedPlanckConstant:()=>AU,createRelationalNode:()=>ZP,createReplacer:()=>rU,createReshape:()=>G5,createResize:()=>Y5,createResolve:()=>Wz,createResultSet:()=>OF,createReviver:()=>tU,createRightArithShift:()=>dL,createRightLogShift:()=>gL,createRotate:()=>X5,createRotationMatrix:()=>J5,createRound:()=>G4,createRow:()=>Mw,createRowTransform:()=>IH,createRydberg:()=>ZU,createSQRT1_2:()=>vU,createSQRT2:()=>xU,createSackurTetrode:()=>sH,createSchur:()=>Sq,createSec:()=>UB,createSech:()=>$B,createSecondRadiation:()=>uH,createSetCartesian:()=>QB,createSetDifference:()=>eP,createSetDistinct:()=>rP,createSetIntersect:()=>iP,createSetIsSubset:()=>aP,createSetMultiplicity:()=>uP,createSetPowerset:()=>fP,createSetSize:()=>pP,createSetSymDifference:()=>dP,createSetUnion:()=>gP,createSign:()=>$k,createSimplify:()=>zz,createSimplifyConstant:()=>Uz,createSimplifyCore:()=>$z,createSin:()=>VB,createSinh:()=>YB,createSize:()=>e4,createSlu:()=>S6,createSmaller:()=>ML,createSmallerEq:()=>TL,createSolveODE:()=>x4,createSort:()=>RL,createSpaClass:()=>VL,createSparse:()=>tB,createSparseMatrixClass:()=>qI,createSpeedOfLight:()=>SU,createSplitUnit:()=>ik,createSqrt:()=>Wk,createSqrtm:()=>yq,createSquare:()=>Gk,createSqueeze:()=>r4,createStd:()=>vb,createStdTransform:()=>RH,createStefanBoltzmann:()=>lH,createStirlingS2:()=>_z,createString:()=>$I,createSubset:()=>Tw,createSubsetTransform:()=>kH,createSubtract:()=>Zk,createSubtractScalar:()=>hk,createSum:()=>cb,createSumTransform:()=>zH,createSylvester:()=>bq,createSymbolNode:()=>XP,createSymbolicEqual:()=>Gz,createTan:()=>XB,createTanh:()=>KB,createTau:()=>fU,createThomsonCrossSection:()=>XU,createTo:()=>P4,createTrace:()=>EP,createTranspose:()=>a4,createTrue:()=>iU,createTypeOf:()=>BI,createTyped:()=>_F,createUnaryMinus:()=>ak,createUnaryPlus:()=>uk,createUnequal:()=>kL,createUnitClass:()=>JL,createUnitFunction:()=>jL,createUppercaseE:()=>bU,createUppercasePi:()=>wU,createUsolve:()=>aL,createUsolveAll:()=>fL,createVacuumImpedance:()=>TU,createVariance:()=>hb,createVarianceTransform:()=>VH,createVersion:()=>DU,createWeakMixingAngle:()=>KU,createWienDisplacement:()=>fH,createXgcd:()=>Kk,createXor:()=>N5,createZeros:()=>f4,createZeta:()=>b4,createZpk2tf:()=>Qz});var YE=fn(q1(),1);function $(e,t,r,n){function i(o){var l=cF(o,t.map($E));return _ne(e,t,o),r(l)}return i.isFactory=!0,i.fn=e,i.dependencies=t.slice().sort(),n&&(i.meta=n),i}function sp(e){return typeof e=="function"&&typeof e.fn=="string"&&Array.isArray(e.dependencies)}function _ne(e,t,r){var n=t.filter(o=>!One(o)).every(o=>r[o]!==void 0);if(!n){var i=t.filter(o=>r[o]===void 0);throw new Error('Cannot create function "'.concat(e,'", ')+"some dependencies are missing: ".concat(i.map(o=>'"'.concat(o,'"')).join(", "),"."))}}function One(e){return e&&e[0]==="?"}function $E(e){return e&&e[0]==="?"?e.slice(1):e}function ht(e){return typeof e=="boolean"?!0:isFinite(e)?e===Math.round(e):!1}function Fne(e){return/^-?\d+$/.test(e)}function ao(e,t){return t.number==="bigint"&&!Fne(e)?t.numberFallback:t.number}var Ga=Math.sign||function(e){return e>0?1:e<0?-1:0},xF=Math.log2||function(t){return Math.log(t)/Math.LN2},yF=Math.log10||function(t){return Math.log(t)/Math.LN10},z1=Math.log1p||function(e){return Math.log(e+1)},wF=Math.cbrt||function(t){if(t===0)return t;var r=t<0,n;return r&&(t=-t),isFinite(t)?(n=Math.exp(Math.log(t)/3),n=(t/(n*n)+2*n)/3):n=t,r?-n:n},bF=Math.expm1||function(t){return t>=2e-4||t<=-2e-4?Math.exp(t)-1:t+t*t/2+t*t*t/6};function WE(e,t,r){var n={2:"0b",8:"0o",16:"0x"},i=n[t],o="";if(r){if(r<1)throw new Error("size must be in greater than 0");if(!ht(r))throw new Error("size must be an integer");if(e>2**(r-1)-1||e<-(2**(r-1)))throw new Error("Value must be in range [-2^".concat(r-1,", 2^").concat(r-1,"-1]"));if(!ht(e))throw new Error("Value must be an integer");e<0&&(e=e+2**r),o="i".concat(r)}var l="";return e<0&&(e=-e,l="-"),"".concat(l).concat(i).concat(e.toString(t)).concat(o)}function Ls(e,t){if(typeof t=="function")return t(e);if(e===1/0)return"Infinity";if(e===-1/0)return"-Infinity";if(isNaN(e))return"NaN";var{notation:r,precision:n,wordSize:i}=VE(t);switch(r){case"fixed":return GE(e,n);case"exponential":return DF(e,n);case"engineering":return Ine(e,n);case"bin":return WE(e,2,i);case"oct":return WE(e,8,i);case"hex":return WE(e,16,i);case"auto":return kne(e,n,t).replace(/((\.\d*?)(0+))($|e)/,function(){var o=arguments[2],l=arguments[4];return o!=="."?o+l:l});default:throw new Error('Unknown notation "'+r+'". Choose "auto", "exponential", "fixed", "bin", "oct", or "hex.')}}function VE(e){var t="auto",r,n;if(e!==void 0)if(Rt(e))r=e;else if(Nt(e))r=e.toNumber();else if(ks(e))e.precision!==void 0&&(r=gF(e.precision,()=>{throw new Error('Option "precision" must be a number or BigNumber')})),e.wordSize!==void 0&&(n=gF(e.wordSize,()=>{throw new Error('Option "wordSize" must be a number or BigNumber')})),e.notation&&(t=e.notation);else throw new Error("Unsupported type of options, number, BigNumber, or object expected");return{notation:t,precision:r,wordSize:n}}function cd(e){var t=String(e).toLowerCase().match(/^(-?)(\d+\.?\d*)(e([+-]?\d+))?$/);if(!t)throw new SyntaxError("Invalid number "+e);var r=t[1],n=t[2],i=parseFloat(t[4]||"0"),o=n.indexOf(".");i+=o!==-1?o-1:n.length-1;var l=n.replace(".","").replace(/^0*/,function(s){return i-=s.length,""}).replace(/0*$/,"").split("").map(function(s){return parseInt(s)});return l.length===0&&(l.push(0),i++),{sign:r,coefficients:l,exponent:i}}function Ine(e,t){if(isNaN(e)||!isFinite(e))return String(e);var r=cd(e),n=U1(r,t),i=n.exponent,o=n.coefficients,l=i%3===0?i:i<0?i-3-i%3:i-i%3;if(Rt(t))for(;t>o.length||i-l+1>o.length;)o.push(0);else for(var s=Math.abs(i-l)-(o.length-1),a=0;a0;)f++,u--;var p=o.slice(f).join(""),h=Rt(t)&&p.length||p.match(/[1-9]/)?"."+p:"",g=o.slice(0,f).join("")+h+"e"+(i>=0?"+":"")+l.toString();return n.sign+g}function GE(e,t){if(isNaN(e)||!isFinite(e))return String(e);var r=cd(e),n=typeof t=="number"?U1(r,r.exponent+1+t):r,i=n.coefficients,o=n.exponent+1,l=o+(t||0);return i.length0?"."+i.join(""):"")+"e"+(o>=0?"+":"")+o}function kne(e,t,r){if(isNaN(e)||!isFinite(e))return String(e);var n=vF(r?.lowerExp,-3),i=vF(r?.upperExp,5),o=cd(e),l=t?U1(o,t):o;if(l.exponent=i)return DF(e,t);var s=l.coefficients,a=l.exponent;s.length0?a:0;return ut){var i=n.splice(t,n.length-t);if(i[0]>=5){var o=t-1;for(n[o]++;n[o]===10;)n.pop(),o===0&&(n.unshift(0),r.exponent++,o++),o--,n[o]++}}return r}function fd(e){for(var t=[],r=0;r2&&arguments[2]!==void 0?arguments[2]:1e-8,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;if(r<=0)throw new Error("Relative tolerance must be greater than 0");if(n<0)throw new Error("Absolute tolerance must be at least 0");return isNaN(e)||isNaN(t)?!1:!isFinite(e)||!isFinite(t)?e===t:e===t?!0:Math.abs(e-t)<=Math.max(r*Math.max(Math.abs(e),Math.abs(t)),n)}var NF=Math.acosh||function(e){return Math.log(Math.sqrt(e*e-1)+e)},EF=Math.asinh||function(e){return Math.log(Math.sqrt(e*e+1)+e)},AF=Math.atanh||function(e){return Math.log((1+e)/(1-e))/2},H1=Math.cosh||function(e){return(Math.exp(e)+Math.exp(-e))/2},CF=Math.sinh||function(e){return(Math.exp(e)-Math.exp(-e))/2},$1=Math.tanh||function(e){var t=Math.exp(2*e);return(t-1)/(t+1)};function MF(e,t){var r=e>0?!0:e<0?!1:1/e===1/0,n=t>0?!0:t<0?!1:1/t===1/0;return r^n?-e:e}function gF(e,t){if(Rt(e))return e;if(Nt(e))return e.toNumber();t()}function vF(e,t){return Rt(e)?e:Nt(e)?e.toNumber():t}var TF=function(){return TF=YE.default.create,YE.default},Lne=["?BigNumber","?Complex","?DenseMatrix","?Fraction"],_F=$("typed",Lne,function(t){var{BigNumber:r,Complex:n,DenseMatrix:i,Fraction:o}=t,l=TF();return l.clear(),l.addTypes([{name:"number",test:Rt},{name:"Complex",test:gi},{name:"BigNumber",test:Nt},{name:"bigint",test:E1},{name:"Fraction",test:va},{name:"Unit",test:ei},{name:"identifier",test:s=>cn&&/^(?:[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CD\uA7D0\uA7D1\uA7D3\uA7D5-\uA7DC\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDDC0-\uDDF3\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDD4A-\uDD65\uDD6F-\uDD85\uDE80-\uDEA9\uDEB0\uDEB1\uDEC2-\uDEC4\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61\uDF80-\uDF89\uDF8B\uDF8E\uDF90-\uDFB5\uDFB7\uDFD1\uDFD3]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8\uDFC0-\uDFE0]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD80E\uD80F\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46\uDC60-\uDFFF]|\uD810[\uDC00-\uDFFA]|\uD811[\uDC00-\uDE46]|\uD818[\uDD00-\uDD1D]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDD40-\uDD6C\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDDD0-\uDDED\uDDF0\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])(?:[0-9A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CD\uA7D0\uA7D1\uA7D3\uA7D5-\uA7DC\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDDC0-\uDDF3\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDD4A-\uDD65\uDD6F-\uDD85\uDE80-\uDEA9\uDEB0\uDEB1\uDEC2-\uDEC4\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61\uDF80-\uDF89\uDF8B\uDF8E\uDF90-\uDFB5\uDFB7\uDFD1\uDFD3]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8\uDFC0-\uDFE0]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD80E\uD80F\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46\uDC60-\uDFFF]|\uD810[\uDC00-\uDFFA]|\uD811[\uDC00-\uDE46]|\uD818[\uDD00-\uDD1D]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDD40-\uDD6C\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDDD0-\uDDED\uDDF0\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])*$/.test(s)},{name:"string",test:cn},{name:"Chain",test:ud},{name:"Array",test:dr},{name:"Matrix",test:yt},{name:"DenseMatrix",test:El},{name:"SparseMatrix",test:xa},{name:"Range",test:Pf},{name:"Index",test:Nu},{name:"boolean",test:A1},{name:"ResultSet",test:C1},{name:"Help",test:sd},{name:"function",test:M1},{name:"Date",test:T1},{name:"RegExp",test:_1},{name:"null",test:O1},{name:"undefined",test:F1},{name:"AccessorNode",test:Mo},{name:"ArrayNode",test:vi},{name:"AssignmentNode",test:I1},{name:"BlockNode",test:k1},{name:"ConditionalNode",test:L1},{name:"ConstantNode",test:Qt},{name:"FunctionNode",test:Gi},{name:"FunctionAssignmentNode",test:Va},{name:"IndexNode",test:Vo},{name:"Node",test:ir},{name:"ObjectNode",test:Eu},{name:"OperatorNode",test:Ur},{name:"ParenthesisNode",test:xi},{name:"RangeNode",test:B1},{name:"RelationalNode",test:P1},{name:"SymbolNode",test:Ir},{name:"Map",test:Su},{name:"Object",test:ks}]),l.addConversions([{from:"number",to:"BigNumber",convert:function(a){if(r||W1(a),SF(a)>15)throw new TypeError("Cannot implicitly convert a number with >15 significant digits to BigNumber (value: "+a+"). Use function bignumber(x) to convert to BigNumber.");return new r(a)}},{from:"number",to:"Complex",convert:function(a){return n||V1(a),new n(a,0)}},{from:"BigNumber",to:"Complex",convert:function(a){return n||V1(a),new n(a.toNumber(),0)}},{from:"bigint",to:"number",convert:function(a){if(a>Number.MAX_SAFE_INTEGER)throw new TypeError("Cannot implicitly convert bigint to number: value exceeds the max safe integer value (value: "+a+")");return Number(a)}},{from:"bigint",to:"BigNumber",convert:function(a){return r||W1(a),new r(a.toString())}},{from:"bigint",to:"Fraction",convert:function(a){return o||G1(a),new o(a.toString())}},{from:"Fraction",to:"BigNumber",convert:function(a){throw new TypeError("Cannot implicitly convert a Fraction to BigNumber or vice versa. Use function bignumber(x) to convert to BigNumber or fraction(x) to convert to Fraction.")}},{from:"Fraction",to:"Complex",convert:function(a){return n||V1(a),new n(a.valueOf(),0)}},{from:"number",to:"Fraction",convert:function(a){o||G1(a);var u=new o(a);if(u.valueOf()!==a)throw new TypeError("Cannot implicitly convert a number to a Fraction when there will be a loss of precision (value: "+a+"). Use function fraction(x) to convert to Fraction.");return u}},{from:"string",to:"number",convert:function(a){var u=Number(a);if(isNaN(u))throw new Error('Cannot convert "'+a+'" to a number');return u}},{from:"string",to:"BigNumber",convert:function(a){r||W1(a);try{return new r(a)}catch{throw new Error('Cannot convert "'+a+'" to BigNumber')}}},{from:"string",to:"bigint",convert:function(a){try{return BigInt(a)}catch{throw new Error('Cannot convert "'+a+'" to BigInt')}}},{from:"string",to:"Fraction",convert:function(a){o||G1(a);try{return new o(a)}catch{throw new Error('Cannot convert "'+a+'" to Fraction')}}},{from:"string",to:"Complex",convert:function(a){n||V1(a);try{return new n(a)}catch{throw new Error('Cannot convert "'+a+'" to Complex')}}},{from:"boolean",to:"number",convert:function(a){return+a}},{from:"boolean",to:"BigNumber",convert:function(a){return r||W1(a),new r(+a)}},{from:"boolean",to:"bigint",convert:function(a){return BigInt(+a)}},{from:"boolean",to:"Fraction",convert:function(a){return o||G1(a),new o(+a)}},{from:"boolean",to:"string",convert:function(a){return String(a)}},{from:"Array",to:"Matrix",convert:function(a){return i||Bne(),new i(a)}},{from:"Matrix",to:"Array",convert:function(a){return a.valueOf()}}]),l.onMismatch=(s,a,u)=>{var f=l.createError(s,a,u);if(["wrongType","mismatch"].includes(f.data.category)&&a.length===1&&hn(a[0])&&u.some(h=>!h.params.includes(","))){var p=new TypeError("Function '".concat(s,"' doesn't apply to matrices. To call it ")+"elementwise on a matrix 'M', try 'map(M, ".concat(s,")'."));throw p.data=f.data,p}throw f},l.onMismatch=(s,a,u)=>{var f=l.createError(s,a,u);if(["wrongType","mismatch"].includes(f.data.category)&&a.length===1&&hn(a[0])&&u.some(h=>!h.params.includes(","))){var p=new TypeError("Function '".concat(s,"' doesn't apply to matrices. To call it ")+"elementwise on a matrix 'M', try 'map(M, ".concat(s,")'."));throw p.data=f.data,p}throw f},l});function W1(e){throw new Error("Cannot convert value ".concat(e," into a BigNumber: no class 'BigNumber' provided"))}function V1(e){throw new Error("Cannot convert value ".concat(e," into a Complex number: no class 'Complex' provided"))}function Bne(){throw new Error("Cannot convert array into a Matrix: no class 'DenseMatrix' provided")}function G1(e){throw new Error("Cannot convert value ".concat(e," into a Fraction, no class 'Fraction' provided."))}var Pne="ResultSet",Rne=[],OF=$(Pne,Rne,()=>{function e(t){if(!(this instanceof e))throw new SyntaxError("Constructor must be called with the new operator");this.entries=t||[]}return e.prototype.type="ResultSet",e.prototype.isResultSet=!0,e.prototype.valueOf=function(){return this.entries},e.prototype.toString=function(){return"["+this.entries.map(String).join(", ")+"]"},e.prototype.toJSON=function(){return{mathjs:"ResultSet",entries:this.entries}},e.fromJSON=function(t){return new e(t.entries)},e},{isClass:!0});var pd=9e15,Uf=1e9,ZE="0123456789abcdef",Z1="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",X1="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",XE={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-pd,maxE:pd,crypto:!1},LF,Al,ar=!0,J1="[DecimalError] ",zf=J1+"Invalid argument: ",BF=J1+"Precision limit exceeded",PF=J1+"crypto unavailable",RF="[object Decimal]",so=Math.floor,yi=Math.pow,qne=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,zne=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Une=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,qF=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Ps=1e7,er=7,Hne=9007199254740991,$ne=Z1.length-1,KE=X1.length-1,ut={toStringTag:RF};ut.absoluteValue=ut.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),Zt(e)};ut.ceil=function(){return Zt(new this.constructor(this),this.e+1,2)};ut.clampedTo=ut.clamp=function(e,t){var r,n=this,i=n.constructor;if(e=new i(e),t=new i(t),!e.s||!t.s)return new i(NaN);if(e.gt(t))throw Error(zf+t);return r=n.cmp(e),r<0?e:n.cmp(t)>0?t:new i(n)};ut.comparedTo=ut.cmp=function(e){var t,r,n,i,o=this,l=o.d,s=(e=new o.constructor(e)).d,a=o.s,u=e.s;if(!l||!s)return!a||!u?NaN:a!==u?a:l===s?0:!l^a<0?1:-1;if(!l[0]||!s[0])return l[0]?a:s[0]?-u:0;if(a!==u)return a;if(o.e!==e.e)return o.e>e.e^a<0?1:-1;for(n=l.length,i=s.length,t=0,r=ns[t]^a<0?1:-1;return n===i?0:n>i^a<0?1:-1};ut.cosine=ut.cos=function(){var e,t,r=this,n=r.constructor;return r.d?r.d[0]?(e=n.precision,t=n.rounding,n.precision=e+Math.max(r.e,r.sd())+er,n.rounding=1,r=Wne(n,WF(n,r)),n.precision=e,n.rounding=t,Zt(Al==2||Al==3?r.neg():r,e,t,!0)):new n(1):new n(NaN)};ut.cubeRoot=ut.cbrt=function(){var e,t,r,n,i,o,l,s,a,u,f=this,p=f.constructor;if(!f.isFinite()||f.isZero())return new p(f);for(ar=!1,o=f.s*yi(f.s*f,1/3),!o||Math.abs(o)==1/0?(r=Yi(f.d),e=f.e,(o=(e-r.length+1)%3)&&(r+=o==1||o==-2?"0":"00"),o=yi(r,1/3),e=so((e+1)/3)-(e%3==(e<0?-1:2)),o==1/0?r="5e"+e:(r=o.toExponential(),r=r.slice(0,r.indexOf("e")+1)+e),n=new p(r),n.s=f.s):n=new p(o.toString()),l=(e=p.precision)+3;;)if(s=n,a=s.times(s).times(s),u=a.plus(f),n=on(u.plus(f).times(s),u.plus(a),l+2,1),Yi(s.d).slice(0,l)===(r=Yi(n.d)).slice(0,l))if(r=r.slice(l-3,l+1),r=="9999"||!i&&r=="4999"){if(!i&&(Zt(s,e+1,0),s.times(s).times(s).eq(f))){n=s;break}l+=4,i=1}else{(!+r||!+r.slice(1)&&r.charAt(0)=="5")&&(Zt(n,e+1,1),t=!n.times(n).times(n).eq(f));break}return ar=!0,Zt(n,e,p.rounding,t)};ut.decimalPlaces=ut.dp=function(){var e,t=this.d,r=NaN;if(t){if(e=t.length-1,r=(e-so(this.e/er))*er,e=t[e],e)for(;e%10==0;e/=10)r--;r<0&&(r=0)}return r};ut.dividedBy=ut.div=function(e){return on(this,new this.constructor(e))};ut.dividedToIntegerBy=ut.divToInt=function(e){var t=this,r=t.constructor;return Zt(on(t,new r(e),0,1,1),r.precision,r.rounding)};ut.equals=ut.eq=function(e){return this.cmp(e)===0};ut.floor=function(){return Zt(new this.constructor(this),this.e+1,3)};ut.greaterThan=ut.gt=function(e){return this.cmp(e)>0};ut.greaterThanOrEqualTo=ut.gte=function(e){var t=this.cmp(e);return t==1||t===0};ut.hyperbolicCosine=ut.cosh=function(){var e,t,r,n,i,o=this,l=o.constructor,s=new l(1);if(!o.isFinite())return new l(o.s?1/0:NaN);if(o.isZero())return s;r=l.precision,n=l.rounding,l.precision=r+Math.max(o.e,o.sd())+4,l.rounding=1,i=o.d.length,i<32?(e=Math.ceil(i/3),t=(1/j1(4,e)).toString()):(e=16,t="2.3283064365386962890625e-10"),o=md(l,1,o.times(t),new l(1),!0);for(var a,u=e,f=new l(8);u--;)a=o.times(o),o=s.minus(a.times(f.minus(a.times(f))));return Zt(o,l.precision=r,l.rounding=n,!0)};ut.hyperbolicSine=ut.sinh=function(){var e,t,r,n,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(t=o.precision,r=o.rounding,o.precision=t+Math.max(i.e,i.sd())+4,o.rounding=1,n=i.d.length,n<3)i=md(o,2,i,i,!0);else{e=1.4*Math.sqrt(n),e=e>16?16:e|0,i=i.times(1/j1(5,e)),i=md(o,2,i,i,!0);for(var l,s=new o(5),a=new o(16),u=new o(20);e--;)l=i.times(i),i=i.times(s.plus(l.times(a.times(l).plus(u))))}return o.precision=t,o.rounding=r,Zt(i,t,r,!0)};ut.hyperbolicTangent=ut.tanh=function(){var e,t,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+7,n.rounding=1,on(r.sinh(),r.cosh(),n.precision=e,n.rounding=t)):new n(r.s)};ut.inverseCosine=ut.acos=function(){var e,t=this,r=t.constructor,n=t.abs().cmp(1),i=r.precision,o=r.rounding;return n!==-1?n===0?t.isNeg()?Bs(r,i,o):new r(0):new r(NaN):t.isZero()?Bs(r,i+4,o).times(.5):(r.precision=i+6,r.rounding=1,t=t.asin(),e=Bs(r,i+4,o).times(.5),r.precision=i,r.rounding=o,e.minus(t))};ut.inverseHyperbolicCosine=ut.acosh=function(){var e,t,r=this,n=r.constructor;return r.lte(1)?new n(r.eq(1)?0:NaN):r.isFinite()?(e=n.precision,t=n.rounding,n.precision=e+Math.max(Math.abs(r.e),r.sd())+4,n.rounding=1,ar=!1,r=r.times(r).minus(1).sqrt().plus(r),ar=!0,n.precision=e,n.rounding=t,r.ln()):new n(r)};ut.inverseHyperbolicSine=ut.asinh=function(){var e,t,r=this,n=r.constructor;return!r.isFinite()||r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+2*Math.max(Math.abs(r.e),r.sd())+6,n.rounding=1,ar=!1,r=r.times(r).plus(1).sqrt().plus(r),ar=!0,n.precision=e,n.rounding=t,r.ln())};ut.inverseHyperbolicTangent=ut.atanh=function(){var e,t,r,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(e=o.precision,t=o.rounding,n=i.sd(),Math.max(n,e)<2*-i.e-1?Zt(new o(i),e,t,!0):(o.precision=r=n-i.e,i=on(i.plus(1),new o(1).minus(i),r+e,1),o.precision=e+4,o.rounding=1,i=i.ln(),o.precision=e,o.rounding=t,i.times(.5))):new o(NaN)};ut.inverseSine=ut.asin=function(){var e,t,r,n,i=this,o=i.constructor;return i.isZero()?new o(i):(t=i.abs().cmp(1),r=o.precision,n=o.rounding,t!==-1?t===0?(e=Bs(o,r+4,n).times(.5),e.s=i.s,e):new o(NaN):(o.precision=r+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=r,o.rounding=n,i.times(2)))};ut.inverseTangent=ut.atan=function(){var e,t,r,n,i,o,l,s,a,u=this,f=u.constructor,p=f.precision,h=f.rounding;if(u.isFinite()){if(u.isZero())return new f(u);if(u.abs().eq(1)&&p+4<=KE)return l=Bs(f,p+4,h).times(.25),l.s=u.s,l}else{if(!u.s)return new f(NaN);if(p+4<=KE)return l=Bs(f,p+4,h).times(.5),l.s=u.s,l}for(f.precision=s=p+10,f.rounding=1,r=Math.min(28,s/er+2|0),e=r;e;--e)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(ar=!1,t=Math.ceil(s/er),n=1,a=u.times(u),l=new f(u),i=u;e!==-1;)if(i=i.times(a),o=l.minus(i.div(n+=2)),i=i.times(a),l=o.plus(i.div(n+=2)),l.d[t]!==void 0)for(e=t;l.d[e]===o.d[e]&&e--;);return r&&(l=l.times(2<this.d.length-2};ut.isNaN=function(){return!this.s};ut.isNegative=ut.isNeg=function(){return this.s<0};ut.isPositive=ut.isPos=function(){return this.s>0};ut.isZero=function(){return!!this.d&&this.d[0]===0};ut.lessThan=ut.lt=function(e){return this.cmp(e)<0};ut.lessThanOrEqualTo=ut.lte=function(e){return this.cmp(e)<1};ut.logarithm=ut.log=function(e){var t,r,n,i,o,l,s,a,u=this,f=u.constructor,p=f.precision,h=f.rounding,g=5;if(e==null)e=new f(10),t=!0;else{if(e=new f(e),r=e.d,e.s<0||!r||!r[0]||e.eq(1))return new f(NaN);t=e.eq(10)}if(r=u.d,u.s<0||!r||!r[0]||u.eq(1))return new f(r&&!r[0]?-1/0:u.s!=1?NaN:r?0:1/0);if(t)if(r.length>1)o=!0;else{for(i=r[0];i%10===0;)i/=10;o=i!==1}if(ar=!1,s=p+g,l=qf(u,s),n=t?K1(f,s+10):qf(e,s),a=on(l,n,s,1),Cv(a.d,i=p,h))do if(s+=10,l=qf(u,s),n=t?K1(f,s+10):qf(e,s),a=on(l,n,s,1),!o){+Yi(a.d).slice(i+1,i+15)+1==1e14&&(a=Zt(a,p+1,0));break}while(Cv(a.d,i+=10,h));return ar=!0,Zt(a,p,h)};ut.minus=ut.sub=function(e){var t,r,n,i,o,l,s,a,u,f,p,h,g=this,x=g.constructor;if(e=new x(e),!g.d||!e.d)return!g.s||!e.s?e=new x(NaN):g.d?e.s=-e.s:e=new x(e.d||g.s!==e.s?g:NaN),e;if(g.s!=e.s)return e.s=-e.s,g.plus(e);if(u=g.d,h=e.d,s=x.precision,a=x.rounding,!u[0]||!h[0]){if(h[0])e.s=-e.s;else if(u[0])e=new x(g);else return new x(a===3?-0:0);return ar?Zt(e,s,a):e}if(r=so(e.e/er),f=so(g.e/er),u=u.slice(),o=f-r,o){for(p=o<0,p?(t=u,o=-o,l=h.length):(t=h,r=f,l=u.length),n=Math.max(Math.ceil(s/er),l)+2,o>n&&(o=n,t.length=1),t.reverse(),n=o;n--;)t.push(0);t.reverse()}else{for(n=u.length,l=h.length,p=n0;--n)u[l++]=0;for(n=h.length;n>o;){if(u[--n]l?o+1:l+1,i>l&&(i=l,r.length=1),r.reverse();i--;)r.push(0);r.reverse()}for(l=u.length,i=f.length,l-i<0&&(i=l,r=f,f=u,u=r),t=0;i;)t=(u[--i]=u[i]+f[i]+t)/Ps|0,u[i]%=Ps;for(t&&(u.unshift(t),++n),l=u.length;u[--l]==0;)u.pop();return e.d=u,e.e=Q1(u,n),ar?Zt(e,s,a):e};ut.precision=ut.sd=function(e){var t,r=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(zf+e);return r.d?(t=zF(r.d),e&&r.e+1>t&&(t=r.e+1)):t=NaN,t};ut.round=function(){var e=this,t=e.constructor;return Zt(new t(e),e.e+1,t.rounding)};ut.sine=ut.sin=function(){var e,t,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+Math.max(r.e,r.sd())+er,n.rounding=1,r=Gne(n,WF(n,r)),n.precision=e,n.rounding=t,Zt(Al>2?r.neg():r,e,t,!0)):new n(NaN)};ut.squareRoot=ut.sqrt=function(){var e,t,r,n,i,o,l=this,s=l.d,a=l.e,u=l.s,f=l.constructor;if(u!==1||!s||!s[0])return new f(!u||u<0&&(!s||s[0])?NaN:s?l:1/0);for(ar=!1,u=Math.sqrt(+l),u==0||u==1/0?(t=Yi(s),(t.length+a)%2==0&&(t+="0"),u=Math.sqrt(t),a=so((a+1)/2)-(a<0||a%2),u==1/0?t="5e"+a:(t=u.toExponential(),t=t.slice(0,t.indexOf("e")+1)+a),n=new f(t)):n=new f(u.toString()),r=(a=f.precision)+3;;)if(o=n,n=o.plus(on(l,o,r+2,1)).times(.5),Yi(o.d).slice(0,r)===(t=Yi(n.d)).slice(0,r))if(t=t.slice(r-3,r+1),t=="9999"||!i&&t=="4999"){if(!i&&(Zt(o,a+1,0),o.times(o).eq(l))){n=o;break}r+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(Zt(n,a+1,1),e=!n.times(n).eq(l));break}return ar=!0,Zt(n,a,f.rounding,e)};ut.tangent=ut.tan=function(){var e,t,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+10,n.rounding=1,r=r.sin(),r.s=1,r=on(r,new n(1).minus(r.times(r)).sqrt(),e+10,0),n.precision=e,n.rounding=t,Zt(Al==2||Al==4?r.neg():r,e,t,!0)):new n(NaN)};ut.times=ut.mul=function(e){var t,r,n,i,o,l,s,a,u,f=this,p=f.constructor,h=f.d,g=(e=new p(e)).d;if(e.s*=f.s,!h||!h[0]||!g||!g[0])return new p(!e.s||h&&!h[0]&&!g||g&&!g[0]&&!h?NaN:!h||!g?e.s/0:e.s*0);for(r=so(f.e/er)+so(e.e/er),a=h.length,u=g.length,a=0;){for(t=0,i=a+n;i>n;)s=o[i]+g[n]*h[i-n-1]+t,o[i--]=s%Ps|0,t=s/Ps|0;o[i]=(o[i]+t)%Ps|0}for(;!o[--l];)o.pop();return t?++r:o.shift(),e.d=o,e.e=Q1(o,r),ar?Zt(e,p.precision,p.rounding):e};ut.toBinary=function(e,t){return jE(this,2,e,t)};ut.toDecimalPlaces=ut.toDP=function(e,t){var r=this,n=r.constructor;return r=new n(r),e===void 0?r:(Yo(e,0,Uf),t===void 0?t=n.rounding:Yo(t,0,8),Zt(r,e+r.e+1,t))};ut.toExponential=function(e,t){var r,n=this,i=n.constructor;return e===void 0?r=Au(n,!0):(Yo(e,0,Uf),t===void 0?t=i.rounding:Yo(t,0,8),n=Zt(new i(n),e+1,t),r=Au(n,!0,e+1)),n.isNeg()&&!n.isZero()?"-"+r:r};ut.toFixed=function(e,t){var r,n,i=this,o=i.constructor;return e===void 0?r=Au(i):(Yo(e,0,Uf),t===void 0?t=o.rounding:Yo(t,0,8),n=Zt(new o(i),e+i.e+1,t),r=Au(n,!1,e+n.e+1)),i.isNeg()&&!i.isZero()?"-"+r:r};ut.toFraction=function(e){var t,r,n,i,o,l,s,a,u,f,p,h,g=this,x=g.d,v=g.constructor;if(!x)return new v(g);if(u=r=new v(1),n=a=new v(0),t=new v(n),o=t.e=zF(x)-g.e-1,l=o%er,t.d[0]=yi(10,l<0?er+l:l),e==null)e=o>0?t:u;else{if(s=new v(e),!s.isInt()||s.lt(u))throw Error(zf+s);e=s.gt(t)?o>0?t:u:s}for(ar=!1,s=new v(Yi(x)),f=v.precision,v.precision=o=x.length*er*2;p=on(s,t,0,1,1),i=r.plus(p.times(n)),i.cmp(e)!=1;)r=n,n=i,i=u,u=a.plus(p.times(i)),a=i,i=t,t=s.minus(p.times(i)),s=i;return i=on(e.minus(r),n,0,1,1),a=a.plus(i.times(u)),r=r.plus(i.times(n)),a.s=u.s=g.s,h=on(u,n,o,1).minus(g).abs().cmp(on(a,r,o,1).minus(g).abs())<1?[u,n]:[a,r],v.precision=f,ar=!0,h};ut.toHexadecimal=ut.toHex=function(e,t){return jE(this,16,e,t)};ut.toNearest=function(e,t){var r=this,n=r.constructor;if(r=new n(r),e==null){if(!r.d)return r;e=new n(1),t=n.rounding}else{if(e=new n(e),t===void 0?t=n.rounding:Yo(t,0,8),!r.d)return e.s?r:e;if(!e.d)return e.s&&(e.s=r.s),e}return e.d[0]?(ar=!1,r=on(r,e,0,t,1).times(e),ar=!0,Zt(r)):(e.s=r.s,r=e),r};ut.toNumber=function(){return+this};ut.toOctal=function(e,t){return jE(this,8,e,t)};ut.toPower=ut.pow=function(e){var t,r,n,i,o,l,s=this,a=s.constructor,u=+(e=new a(e));if(!s.d||!e.d||!s.d[0]||!e.d[0])return new a(yi(+s,u));if(s=new a(s),s.eq(1))return s;if(n=a.precision,o=a.rounding,e.eq(1))return Zt(s,n,o);if(t=so(e.e/er),t>=e.d.length-1&&(r=u<0?-u:u)<=Hne)return i=UF(a,s,r,n),e.s<0?new a(1).div(i):Zt(i,n,o);if(l=s.s,l<0){if(ta.maxE+1||t0?l/0:0):(ar=!1,a.rounding=s.s=1,r=Math.min(12,(t+"").length),i=JE(e.times(qf(s,n+r)),n),i.d&&(i=Zt(i,n+5,1),Cv(i.d,n,o)&&(t=n+10,i=Zt(JE(e.times(qf(s,t+r)),t),t+5,1),+Yi(i.d).slice(n+1,n+15)+1==1e14&&(i=Zt(i,n+1,0)))),i.s=l,ar=!0,a.rounding=o,Zt(i,n,o))};ut.toPrecision=function(e,t){var r,n=this,i=n.constructor;return e===void 0?r=Au(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(Yo(e,1,Uf),t===void 0?t=i.rounding:Yo(t,0,8),n=Zt(new i(n),e,t),r=Au(n,e<=n.e||n.e<=i.toExpNeg,e)),n.isNeg()&&!n.isZero()?"-"+r:r};ut.toSignificantDigits=ut.toSD=function(e,t){var r=this,n=r.constructor;return e===void 0?(e=n.precision,t=n.rounding):(Yo(e,1,Uf),t===void 0?t=n.rounding:Yo(t,0,8)),Zt(new n(r),e,t)};ut.toString=function(){var e=this,t=e.constructor,r=Au(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()&&!e.isZero()?"-"+r:r};ut.truncated=ut.trunc=function(){return Zt(new this.constructor(this),this.e+1,1)};ut.valueOf=ut.toJSON=function(){var e=this,t=e.constructor,r=Au(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()?"-"+r:r};function Yi(e){var t,r,n,i=e.length-1,o="",l=e[0];if(i>0){for(o+=l,t=1;tr)throw Error(zf+e)}function Cv(e,t,r,n){var i,o,l,s;for(o=e[0];o>=10;o/=10)--t;return--t<0?(t+=er,i=0):(i=Math.ceil((t+1)/er),t%=er),o=yi(10,er-t),s=e[i]%o|0,n==null?t<3?(t==0?s=s/100|0:t==1&&(s=s/10|0),l=r<4&&s==99999||r>3&&s==49999||s==5e4||s==0):l=(r<4&&s+1==o||r>3&&s+1==o/2)&&(e[i+1]/o/100|0)==yi(10,t-2)-1||(s==o/2||s==0)&&(e[i+1]/o/100|0)==0:t<4?(t==0?s=s/1e3|0:t==1?s=s/100|0:t==2&&(s=s/10|0),l=(n||r<4)&&s==9999||!n&&r>3&&s==4999):l=((n||r<4)&&s+1==o||!n&&r>3&&s+1==o/2)&&(e[i+1]/o/1e3|0)==yi(10,t-3)-1,l}function Y1(e,t,r){for(var n,i=[0],o,l=0,s=e.length;lr-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/r|0,i[n]%=r)}return i.reverse()}function Wne(e,t){var r,n,i;if(t.isZero())return t;n=t.d.length,n<32?(r=Math.ceil(n/3),i=(1/j1(4,r)).toString()):(r=16,i="2.3283064365386962890625e-10"),e.precision+=r,t=md(e,1,t.times(i),new e(1));for(var o=r;o--;){var l=t.times(t);t=l.times(l).minus(l).times(8).plus(1)}return e.precision-=r,t}var on=function(){function e(n,i,o){var l,s=0,a=n.length;for(n=n.slice();a--;)l=n[a]*i+s,n[a]=l%o|0,s=l/o|0;return s&&n.unshift(s),n}function t(n,i,o,l){var s,a;if(o!=l)a=o>l?1:-1;else for(s=a=0;si[s]?1:-1;break}return a}function r(n,i,o,l){for(var s=0;o--;)n[o]-=s,s=n[o]1;)n.shift()}return function(n,i,o,l,s,a){var u,f,p,h,g,x,v,S,D,C,E,M,T,N,O,F,I,B,L,q,R=n.constructor,V=n.s==i.s?1:-1,X=n.d,U=i.d;if(!X||!X[0]||!U||!U[0])return new R(!n.s||!i.s||(X?U&&X[0]==U[0]:!U)?NaN:X&&X[0]==0||!U?V*0:V/0);for(a?(g=1,f=n.e-i.e):(a=Ps,g=er,f=so(n.e/g)-so(i.e/g)),L=U.length,I=X.length,D=new R(V),C=D.d=[],p=0;U[p]==(X[p]||0);p++);if(U[p]>(X[p]||0)&&f--,o==null?(N=o=R.precision,l=R.rounding):s?N=o+(n.e-i.e)+1:N=o,N<0)C.push(1),x=!0;else{if(N=N/g+2|0,p=0,L==1){for(h=0,U=U[0],N++;(p1&&(U=e(U,h,a),X=e(X,h,a),L=U.length,I=X.length),F=L,E=X.slice(0,L),M=E.length;M=a/2&&++B;do h=0,u=t(U,E,L,M),u<0?(T=E[0],L!=M&&(T=T*a+(E[1]||0)),h=T/B|0,h>1?(h>=a&&(h=a-1),v=e(U,h,a),S=v.length,M=E.length,u=t(v,E,S,M),u==1&&(h--,r(v,L=10;h/=10)p++;D.e=p+f*g-1,Zt(D,s?o+D.e+1:o,l,x)}return D}}();function Zt(e,t,r,n){var i,o,l,s,a,u,f,p,h,g=e.constructor;e:if(t!=null){if(p=e.d,!p)return e;for(i=1,s=p[0];s>=10;s/=10)i++;if(o=t-i,o<0)o+=er,l=t,f=p[h=0],a=f/yi(10,i-l-1)%10|0;else if(h=Math.ceil((o+1)/er),s=p.length,h>=s)if(n){for(;s++<=h;)p.push(0);f=a=0,i=1,o%=er,l=o-er+1}else break e;else{for(f=s=p[h],i=1;s>=10;s/=10)i++;o%=er,l=o-er+i,a=l<0?0:f/yi(10,i-l-1)%10|0}if(n=n||t<0||p[h+1]!==void 0||(l<0?f:f%yi(10,i-l-1)),u=r<4?(a||n)&&(r==0||r==(e.s<0?3:2)):a>5||a==5&&(r==4||n||r==6&&(o>0?l>0?f/yi(10,i-l):0:p[h-1])%10&1||r==(e.s<0?8:7)),t<1||!p[0])return p.length=0,u?(t-=e.e+1,p[0]=yi(10,(er-t%er)%er),e.e=-t||0):p[0]=e.e=0,e;if(o==0?(p.length=h,s=1,h--):(p.length=h+1,s=yi(10,er-o),p[h]=l>0?(f/yi(10,i-l)%yi(10,l)|0)*s:0),u)for(;;)if(h==0){for(o=1,l=p[0];l>=10;l/=10)o++;for(l=p[0]+=s,s=1;l>=10;l/=10)s++;o!=s&&(e.e++,p[0]==Ps&&(p[0]=1));break}else{if(p[h]+=s,p[h]!=Ps)break;p[h--]=0,s=1}for(o=p.length;p[--o]===0;)p.pop()}return ar&&(e.e>g.maxE?(e.d=null,e.e=NaN):e.e0?o=o.charAt(0)+"."+o.slice(1)+Rf(n):l>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(e.e<0?"e":"e+")+e.e):i<0?(o="0."+Rf(-i-1)+o,r&&(n=r-l)>0&&(o+=Rf(n))):i>=l?(o+=Rf(i+1-l),r&&(n=r-i-1)>0&&(o=o+"."+Rf(n))):((n=i+1)0&&(i+1===l&&(o+="."),o+=Rf(n))),o}function Q1(e,t){var r=e[0];for(t*=er;r>=10;r/=10)t++;return t}function K1(e,t,r){if(t>$ne)throw ar=!0,r&&(e.precision=r),Error(BF);return Zt(new e(Z1),t,1,!0)}function Bs(e,t,r){if(t>KE)throw Error(BF);return Zt(new e(X1),t,r,!0)}function zF(e){var t=e.length-1,r=t*er+1;if(t=e[t],t){for(;t%10==0;t/=10)r--;for(t=e[0];t>=10;t/=10)r++}return r}function Rf(e){for(var t="";e--;)t+="0";return t}function UF(e,t,r,n){var i,o=new e(1),l=Math.ceil(n/er+4);for(ar=!1;;){if(r%2&&(o=o.times(t),IF(o.d,l)&&(i=!0)),r=so(r/2),r===0){r=o.d.length-1,i&&o.d[r]===0&&++o.d[r];break}t=t.times(t),IF(t.d,l)}return ar=!0,o}function FF(e){return e.d[e.d.length-1]&1}function HF(e,t,r){for(var n,i=new e(t[0]),o=0;++o17)return new h(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:NaN);for(t==null?(ar=!1,a=x):a=t,s=new h(.03125);e.e>-2;)e=e.times(s),p+=5;for(n=Math.log(yi(2,p))/Math.LN10*2+5|0,a+=n,r=o=l=new h(1),h.precision=a;;){if(o=Zt(o.times(e),a,1),r=r.times(++f),s=l.plus(on(o,r,a,1)),Yi(s.d).slice(0,a)===Yi(l.d).slice(0,a)){for(i=p;i--;)l=Zt(l.times(l),a,1);if(t==null)if(u<3&&Cv(l.d,a-n,g,u))h.precision=a+=10,r=o=s=new h(1),f=0,u++;else return Zt(l,h.precision=x,g,ar=!0);else return h.precision=x,l}l=s}}function qf(e,t){var r,n,i,o,l,s,a,u,f,p,h,g=1,x=10,v=e,S=v.d,D=v.constructor,C=D.rounding,E=D.precision;if(v.s<0||!S||!S[0]||!v.e&&S[0]==1&&S.length==1)return new D(S&&!S[0]?-1/0:v.s!=1?NaN:S?0:v);if(t==null?(ar=!1,f=E):f=t,D.precision=f+=x,r=Yi(S),n=r.charAt(0),Math.abs(o=v.e)<15e14){for(;n<7&&n!=1||n==1&&r.charAt(1)>3;)v=v.times(e),r=Yi(v.d),n=r.charAt(0),g++;o=v.e,n>1?(v=new D("0."+r),o++):v=new D(n+"."+r.slice(1))}else return u=K1(D,f+2,E).times(o+""),v=qf(new D(n+"."+r.slice(1)),f-x).plus(u),D.precision=E,t==null?Zt(v,E,C,ar=!0):v;for(p=v,a=l=v=on(v.minus(1),v.plus(1),f,1),h=Zt(v.times(v),f,1),i=3;;){if(l=Zt(l.times(h),f,1),u=a.plus(on(l,new D(i),f,1)),Yi(u.d).slice(0,f)===Yi(a.d).slice(0,f))if(a=a.times(2),o!==0&&(a=a.plus(K1(D,f+2,E).times(o+""))),a=on(a,new D(g),f,1),t==null)if(Cv(a.d,f-x,C,s))D.precision=f+=x,u=l=v=on(p.minus(1),p.plus(1),f,1),h=Zt(v.times(v),f,1),i=s=1;else return Zt(a,D.precision=E,C,ar=!0);else return D.precision=E,a;a=u,i+=2}}function $F(e){return String(e.s*e.s/0)}function QE(e,t){var r,n,i;for((r=t.indexOf("."))>-1&&(t=t.replace(".","")),(n=t.search(/e/i))>0?(r<0&&(r=n),r+=+t.slice(n+1),t=t.substring(0,n)):r<0&&(r=t.length),n=0;t.charCodeAt(n)===48;n++);for(i=t.length;t.charCodeAt(i-1)===48;--i);if(t=t.slice(n,i),t){if(i-=n,e.e=r=r-n-1,e.d=[],n=(r+1)%er,r<0&&(n+=er),ne.constructor.maxE?(e.d=null,e.e=NaN):e.e-1){if(t=t.replace(/(\d)_(?=\d)/g,"$1"),qF.test(t))return QE(e,t)}else if(t==="Infinity"||t==="NaN")return+t||(e.s=NaN),e.e=NaN,e.d=null,e;if(zne.test(t))r=16,t=t.toLowerCase();else if(qne.test(t))r=2;else if(Une.test(t))r=8;else throw Error(zf+t);for(o=t.search(/p/i),o>0?(a=+t.slice(o+1),t=t.substring(2,o)):t=t.slice(2),o=t.indexOf("."),l=o>=0,n=e.constructor,l&&(t=t.replace(".",""),s=t.length,o=s-o,i=UF(n,new n(r),o,o*2)),u=Y1(t,r,Ps),f=u.length-1,o=f;u[o]===0;--o)u.pop();return o<0?new n(e.s*0):(e.e=Q1(u,f),e.d=u,ar=!1,l&&(e=on(e,i,s*4)),a&&(e=e.times(Math.abs(a)<54?yi(2,a):Mv.pow(2,a))),ar=!0,e)}function Gne(e,t){var r,n=t.d.length;if(n<3)return t.isZero()?t:md(e,2,t,t);r=1.4*Math.sqrt(n),r=r>16?16:r|0,t=t.times(1/j1(5,r)),t=md(e,2,t,t);for(var i,o=new e(5),l=new e(16),s=new e(20);r--;)i=t.times(t),t=t.times(o.plus(i.times(l.times(i).minus(s))));return t}function md(e,t,r,n,i){var o,l,s,a,u=1,f=e.precision,p=Math.ceil(f/er);for(ar=!1,a=r.times(r),s=new e(n);;){if(l=on(s.times(a),new e(t++*t++),f,1),s=i?n.plus(l):n.minus(l),n=on(l.times(a),new e(t++*t++),f,1),l=s.plus(n),l.d[p]!==void 0){for(o=p;l.d[o]===s.d[o]&&o--;);if(o==-1)break}o=s,s=n,n=l,l=o,u++}return ar=!0,l.d.length=p+1,l}function j1(e,t){for(var r=e;--t;)r*=e;return r}function WF(e,t){var r,n=t.s<0,i=Bs(e,e.precision,1),o=i.times(.5);if(t=t.abs(),t.lte(o))return Al=n?4:1,t;if(r=t.divToInt(i),r.isZero())Al=n?3:2;else{if(t=t.minus(r.times(i)),t.lte(o))return Al=FF(r)?n?2:3:n?4:1,t;Al=FF(r)?n?1:4:n?3:2}return t.minus(i).abs()}function jE(e,t,r,n){var i,o,l,s,a,u,f,p,h,g=e.constructor,x=r!==void 0;if(x?(Yo(r,1,Uf),n===void 0?n=g.rounding:Yo(n,0,8)):(r=g.precision,n=g.rounding),!e.isFinite())f=$F(e);else{for(f=Au(e),l=f.indexOf("."),x?(i=2,t==16?r=r*4-3:t==8&&(r=r*3-2)):i=t,l>=0&&(f=f.replace(".",""),h=new g(1),h.e=f.length-l,h.d=Y1(Au(h),10,i),h.e=h.d.length),p=Y1(f,10,i),o=a=p.length;p[--a]==0;)p.pop();if(!p[0])f=x?"0p+0":"0";else{if(l<0?o--:(e=new g(e),e.d=p,e.e=o,e=on(e,h,r,n,0,i),p=e.d,o=e.e,u=LF),l=p[r],s=i/2,u=u||p[r+1]!==void 0,u=n<4?(l!==void 0||u)&&(n===0||n===(e.s<0?3:2)):l>s||l===s&&(n===4||u||n===6&&p[r-1]&1||n===(e.s<0?8:7)),p.length=r,u)for(;++p[--r]>i-1;)p[r]=0,r||(++o,p.unshift(1));for(a=p.length;!p[a-1];--a);for(l=0,f="";l1)if(t==16||t==8){for(l=t==16?4:3,--a;a%l;a++)f+="0";for(p=Y1(f,i,t),a=p.length;!p[a-1];--a);for(l=1,f="1.";la)for(o-=a;o--;)f+="0";else ot)return e.length=t,!0}function Yne(e){return new this(e).abs()}function Zne(e){return new this(e).acos()}function Xne(e){return new this(e).acosh()}function Kne(e,t){return new this(e).plus(t)}function Jne(e){return new this(e).asin()}function Qne(e){return new this(e).asinh()}function jne(e){return new this(e).atan()}function eie(e){return new this(e).atanh()}function tie(e,t){e=new this(e),t=new this(t);var r,n=this.precision,i=this.rounding,o=n+4;return!e.s||!t.s?r=new this(NaN):!e.d&&!t.d?(r=Bs(this,o,1).times(t.s>0?.25:.75),r.s=e.s):!t.d||e.isZero()?(r=t.s<0?Bs(this,n,i):new this(0),r.s=e.s):!e.d||t.isZero()?(r=Bs(this,o,1).times(.5),r.s=e.s):t.s<0?(this.precision=o,this.rounding=1,r=this.atan(on(e,t,o,1)),t=Bs(this,o,1),this.precision=n,this.rounding=i,r=e.s<0?r.minus(t):r.plus(t)):r=this.atan(on(e,t,o,1)),r}function rie(e){return new this(e).cbrt()}function nie(e){return Zt(e=new this(e),e.e+1,2)}function iie(e,t,r){return new this(e).clamp(t,r)}function oie(e){if(!e||typeof e!="object")throw Error(J1+"Object expected");var t,r,n,i=e.defaults===!0,o=["precision",1,Uf,"rounding",0,8,"toExpNeg",-pd,0,"toExpPos",0,pd,"maxE",0,pd,"minE",-pd,0,"modulo",0,9];for(t=0;t=o[t+1]&&n<=o[t+2])this[r]=n;else throw Error(zf+r+": "+n);if(r="crypto",i&&(this[r]=XE[r]),(n=e[r])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[r]=!0;else throw Error(PF);else this[r]=!1;else throw Error(zf+r+": "+n);return this}function aie(e){return new this(e).cos()}function sie(e){return new this(e).cosh()}function VF(e){var t,r,n;function i(o){var l,s,a,u=this;if(!(u instanceof i))return new i(o);if(u.constructor=i,kF(o)){u.s=o.s,ar?!o.d||o.e>i.maxE?(u.e=NaN,u.d=null):o.e=10;s/=10)l++;ar?l>i.maxE?(u.e=NaN,u.d=null):l=429e7?t[o]=crypto.getRandomValues(new Uint32Array(1))[0]:s[o++]=i%1e7;else if(crypto.randomBytes){for(t=crypto.randomBytes(n*=4);o=214e7?crypto.randomBytes(4).copy(t,o):(s.push(i%1e7),o+=4);o=n/4}else throw Error(PF);else for(;o=10;i/=10)n++;n{var{on:t,config:r}=e,n=up.clone({precision:r.precision,modulo:up.EUCLID});return n.prototype=Object.create(n.prototype),n.prototype.type="BigNumber",n.prototype.isBigNumber=!0,n.prototype.toJSON=function(){return{mathjs:"BigNumber",value:this.toString()}},n.fromJSON=function(i){return new n(i.value)},t&&t("config",function(i,o){i.precision!==o.precision&&n.config({precision:i.precision})}),n},{isClass:!0});var uo=Math.cosh||function(e){return Math.abs(e)<1e-9?1-e:(Math.exp(e)+Math.exp(-e))*.5},Ya=Math.sinh||function(e){return Math.abs(e)<1e-9?e:(Math.exp(e)-Math.exp(-e))*.5},kie=function(e){let t=Math.PI/4;if(-t>e||e>t)return Math.cos(e)-1;let r=e*e;return r*(r*(r*(r*(r*(r*(r*(r/20922789888e3-1/87178291200)+1/479001600)-1/3628800)+1/40320)-1/720)+1/24)-1/2)},eA=function(e,t){return e=Math.abs(e),t=Math.abs(t),e0&&dd();break;case"number":r.im=0,r.re=e;break;default:dd()}return isNaN(r.re)||isNaN(r.im),r};function tt(e,t){if(!(this instanceof tt))return new tt(e,t);let r=lp(e,t);this.re=r.re,this.im=r.im}tt.prototype={re:0,im:0,sign:function(){let e=eA(this.re,this.im);return new tt(this.re/e,this.im/e)},add:function(e,t){let r=lp(e,t),n=this.isInfinite(),i=!(isFinite(r.re)&&isFinite(r.im));return n||i?n&&i?tt.NAN:tt.INFINITY:new tt(this.re+r.re,this.im+r.im)},sub:function(e,t){let r=lp(e,t),n=this.isInfinite(),i=!(isFinite(r.re)&&isFinite(r.im));return n||i?n&&i?tt.NAN:tt.INFINITY:new tt(this.re-r.re,this.im-r.im)},mul:function(e,t){let r=lp(e,t),n=this.isInfinite(),i=!(isFinite(r.re)&&isFinite(r.im)),o=this.re===0&&this.im===0,l=r.re===0&&r.im===0;return n&&l||i&&o?tt.NAN:n||i?tt.INFINITY:r.im===0&&this.im===0?new tt(this.re*r.re,0):new tt(this.re*r.re-this.im*r.im,this.re*r.im+this.im*r.re)},div:function(e,t){let r=lp(e,t),n=this.isInfinite(),i=!(isFinite(r.re)&&isFinite(r.im)),o=this.re===0&&this.im===0,l=r.re===0&&r.im===0;if(o&&l||n&&i)return tt.NAN;if(l||n)return tt.INFINITY;if(o||i)return tt.ZERO;if(r.im===0)return new tt(this.re/r.re,this.im/r.re);if(Math.abs(r.re)0)return new tt(Math.pow(this.re,r.re),0);if(this.re===0)switch((r.re%4+4)%4){case 0:return new tt(Math.pow(this.im,r.re),0);case 1:return new tt(0,Math.pow(this.im,r.re));case 2:return new tt(-Math.pow(this.im,r.re),0);case 3:return new tt(0,-Math.pow(this.im,r.re))}}if(n&&r.re>0)return tt.ZERO;let o=Math.atan2(this.im,this.re),l=tA(this.re,this.im),s=Math.exp(r.re*l-r.im*o),a=r.im*l+r.re*o;return new tt(s*Math.cos(a),s*Math.sin(a))},sqrt:function(){let e=this.re,t=this.im;if(t===0)return e>=0?new tt(Math.sqrt(e),0):new tt(0,Math.sqrt(-e));let r=eA(e,t),n=Math.sqrt(.5*(r+Math.abs(e))),i=Math.abs(t)/(2*n);return e>=0?new tt(n,t<0?-i:i):new tt(i,t<0?-n:n)},exp:function(){let e=Math.exp(this.re);return this.im===0?new tt(e,0):new tt(e*Math.cos(this.im),e*Math.sin(this.im))},expm1:function(){let e=this.re,t=this.im;return new tt(Math.expm1(e)*Math.cos(t)+kie(t),Math.exp(e)*Math.sin(t))},log:function(){let e=this.re,t=this.im;return t===0&&e>0?new tt(Math.log(e),0):new tt(tA(e,t),Math.atan2(t,e))},abs:function(){return eA(this.re,this.im)},arg:function(){return Math.atan2(this.im,this.re)},sin:function(){let e=this.re,t=this.im;return new tt(Math.sin(e)*uo(t),Math.cos(e)*Ya(t))},cos:function(){let e=this.re,t=this.im;return new tt(Math.cos(e)*uo(t),-Math.sin(e)*Ya(t))},tan:function(){let e=2*this.re,t=2*this.im,r=Math.cos(e)+uo(t);return new tt(Math.sin(e)/r,Ya(t)/r)},cot:function(){let e=2*this.re,t=2*this.im,r=Math.cos(e)-uo(t);return new tt(-Math.sin(e)/r,Ya(t)/r)},sec:function(){let e=this.re,t=this.im,r=.5*uo(2*t)+.5*Math.cos(2*e);return new tt(Math.cos(e)*uo(t)/r,Math.sin(e)*Ya(t)/r)},csc:function(){let e=this.re,t=this.im,r=.5*uo(2*t)-.5*Math.cos(2*e);return new tt(Math.sin(e)*uo(t)/r,-Math.cos(e)*Ya(t)/r)},asin:function(){let e=this.re,t=this.im,r=new tt(t*t-e*e+1,-2*e*t).sqrt(),n=new tt(r.re-t,r.im+e).log();return new tt(n.im,-n.re)},acos:function(){let e=this.re,t=this.im,r=new tt(t*t-e*e+1,-2*e*t).sqrt(),n=new tt(r.re-t,r.im+e).log();return new tt(Math.PI/2-n.im,n.re)},atan:function(){let e=this.re,t=this.im;if(e===0){if(t===1)return new tt(0,1/0);if(t===-1)return new tt(0,-1/0)}let r=e*e+(1-t)*(1-t),n=new tt((1-t*t-e*e)/r,-2*e/r).log();return new tt(-.5*n.im,.5*n.re)},acot:function(){let e=this.re,t=this.im;if(t===0)return new tt(Math.atan2(1,e),0);let r=e*e+t*t;return r!==0?new tt(e/r,-t/r).atan():new tt(e!==0?e/0:0,t!==0?-t/0:0).atan()},asec:function(){let e=this.re,t=this.im;if(e===0&&t===0)return new tt(0,1/0);let r=e*e+t*t;return r!==0?new tt(e/r,-t/r).acos():new tt(e!==0?e/0:0,t!==0?-t/0:0).acos()},acsc:function(){let e=this.re,t=this.im;if(e===0&&t===0)return new tt(Math.PI/2,1/0);let r=e*e+t*t;return r!==0?new tt(e/r,-t/r).asin():new tt(e!==0?e/0:0,t!==0?-t/0:0).asin()},sinh:function(){let e=this.re,t=this.im;return new tt(Ya(e)*Math.cos(t),uo(e)*Math.sin(t))},cosh:function(){let e=this.re,t=this.im;return new tt(uo(e)*Math.cos(t),Ya(e)*Math.sin(t))},tanh:function(){let e=2*this.re,t=2*this.im,r=uo(e)+Math.cos(t);return new tt(Ya(e)/r,Math.sin(t)/r)},coth:function(){let e=2*this.re,t=2*this.im,r=uo(e)-Math.cos(t);return new tt(Ya(e)/r,-Math.sin(t)/r)},csch:function(){let e=this.re,t=this.im,r=Math.cos(2*t)-uo(2*e);return new tt(-2*Ya(e)*Math.cos(t)/r,2*uo(e)*Math.sin(t)/r)},sech:function(){let e=this.re,t=this.im,r=Math.cos(2*t)+uo(2*e);return new tt(2*uo(e)*Math.cos(t)/r,-2*Ya(e)*Math.sin(t)/r)},asinh:function(){let e=this.im;this.im=-this.re,this.re=e;let t=this.asin();return this.re=-this.im,this.im=e,e=t.re,t.re=-t.im,t.im=e,t},acosh:function(){let e=this.acos();if(e.im<=0){let t=e.re;e.re=-e.im,e.im=t}else{let t=e.im;e.im=-e.re,e.re=t}return e},atanh:function(){let e=this.re,t=this.im,r=e>1&&t===0,n=1-e,i=1+e,o=n*n+t*t,l=o!==0?new tt((i*n-t*t)/o,(t*n+i*t)/o):new tt(e!==-1?e/0:0,t!==0?t/0:0),s=l.re;return l.re=tA(l.re,l.im)/2,l.im=Math.atan2(l.im,s)/2,r&&(l.im=-l.im),l},acoth:function(){let e=this.re,t=this.im;if(e===0&&t===0)return new tt(0,Math.PI/2);let r=e*e+t*t;return r!==0?new tt(e/r,-t/r).atanh():new tt(e!==0?e/0:0,t!==0?-t/0:0).atanh()},acsch:function(){let e=this.re,t=this.im;if(t===0)return new tt(e!==0?Math.log(e+Math.sqrt(e*e+1)):1/0,0);let r=e*e+t*t;return r!==0?new tt(e/r,-t/r).asinh():new tt(e!==0?e/0:0,t!==0?-t/0:0).asinh()},asech:function(){let e=this.re,t=this.im;if(this.isZero())return tt.INFINITY;let r=e*e+t*t;return r!==0?new tt(e/r,-t/r).acosh():new tt(e!==0?e/0:0,t!==0?-t/0:0).acosh()},inverse:function(){if(this.isZero())return tt.INFINITY;if(this.isInfinite())return tt.ZERO;let e=this.re,t=this.im,r=e*e+t*t;return new tt(e/r,-t/r)},conjugate:function(){return new tt(this.re,-this.im)},neg:function(){return new tt(-this.re,-this.im)},ceil:function(e){return e=Math.pow(10,e||0),new tt(Math.ceil(this.re*e)/e,Math.ceil(this.im*e)/e)},floor:function(e){return e=Math.pow(10,e||0),new tt(Math.floor(this.re*e)/e,Math.floor(this.im*e)/e)},round:function(e){return e=Math.pow(10,e||0),new tt(Math.round(this.re*e)/e,Math.round(this.im*e)/e)},equals:function(e,t){let r=lp(e,t);return Math.abs(r.re-this.re)<=tt.EPSILON&&Math.abs(r.im-this.im)<=tt.EPSILON},clone:function(){return new tt(this.re,this.im)},toString:function(){let e=this.re,t=this.im,r="";return this.isNaN()?"NaN":this.isInfinite()?"Infinity":(Math.abs(e)(Object.defineProperty(tt,"name",{value:"Complex"}),tt.prototype.constructor=tt,tt.prototype.type="Complex",tt.prototype.isComplex=!0,tt.prototype.toJSON=function(){return{mathjs:"Complex",re:this.re,im:this.im}},tt.prototype.toPolar=function(){return{r:this.abs(),phi:this.arg()}},tt.prototype.format=function(e){var t="",r=this.im,n=this.re,i=Ls(this.re,e),o=Ls(this.im,e),l=Rt(e)?e:e?e.precision:null;if(l!==null){var s=Math.pow(10,-l);Math.abs(n/r)t.re?1:e.ret.im?1:e.im1&&(t[r]=(t[r]||0)+1):t[e]=(t[e]||0)+1,t}var ya=function(e,t){var r=0,n=1,i=1,o=0,l=0,s=0,a=1,u=1,f=0,p=1,h=1,g=1,x=1e7,v;if(e!=null)if(t!==void 0){if(r=e,n=t,i=r*n,r%1!==0||n%1!==0)throw Hie()}else switch(typeof e){case"object":{if("d"in e&&"n"in e)r=e.n,n=e.d,"s"in e&&(r*=e.s);else if(0 in e)r=e[0],1 in e&&(n=e[1]);else throw ew();i=r*n;break}case"number":{if(e<0&&(i=e,e=-e),e%1===0)r=e;else if(e>0){for(e>=1&&(u=Math.pow(10,Math.floor(1+Math.log(e)/Math.LN10)),e/=u);p<=x&&g<=x;)if(v=(f+h)/(p+g),e===v){p+g<=x?(r=f+h,n=p+g):g>p?(r=h,n=g):(r=f,n=p);break}else e>v?(f+=h,p+=g):(h+=f,g+=p),p>x?(r=h,n=g):(r=f,n=p);r*=u}else(isNaN(e)||isNaN(t))&&(n=r=NaN);break}case"string":{if(p=e.match(/\d+|./g),p===null)throw ew();if(p[f]==="-"?(i=-1,f++):p[f]==="+"&&f++,p.length===f+1?l=Cl(p[f++],i):p[f+1]==="."||p[f]==="."?(p[f]!=="."&&(o=Cl(p[f++],i)),f++,(f+1===p.length||p[f+1]==="("&&p[f+3]===")"||p[f+1]==="'"&&p[f+3]==="'")&&(l=Cl(p[f],i),a=Math.pow(10,p[f].length),f++),(p[f]==="("&&p[f+2]===")"||p[f]==="'"&&p[f+2]==="'")&&(s=Cl(p[f+1],i),u=Math.pow(10,p[f+1].length)-1,f+=3)):p[f+1]==="/"||p[f+1]===":"?(l=Cl(p[f],i),a=Cl(p[f+2],1),f+=3):p[f+3]==="/"&&p[f+1]===" "&&(o=Cl(p[f],i),l=Cl(p[f+2],i),a=Cl(p[f+4],1),f+=5),p.length<=f){n=a*u,i=r=s+n*o+u*l;break}}default:throw ew()}if(n===0)throw rA();Ut.s=i<0?-1:1,Ut.n=Math.abs(r),Ut.d=Math.abs(n)};function qie(e,t,r){for(var n=1;t>0;e=e*e%r,t>>=1)t&1&&(n=n*e%r);return n}function zie(e,t){for(;t%2===0;t/=2);for(;t%5===0;t/=5);if(t===1)return 0;for(var r=10%t,n=1;r!==1;n++)if(r=r*10%t,n>Rie)return 0;return n}function Uie(e,t,r){for(var n=1,i=qie(10,r,t),o=0;o<300;o++){if(n===i)return o;n=n*10%t,i=i*10%t}return 0}function hd(e,t){if(!e)return t;if(!t)return e;for(;;){if(e%=t,!e)return t;if(t%=e,!t)return e}}function Ii(e,t){if(ya(e,t),this instanceof Ii)e=hd(Ut.d,Ut.n),this.s=Ut.s,this.n=Ut.n/e,this.d=Ut.d/e;else return Bn(Ut.s*Ut.n,Ut.d)}var rA=function(){return new Error("Division by Zero")},ew=function(){return new Error("Invalid argument")},Hie=function(){return new Error("Parameters must be integer")};Ii.prototype={s:1,n:0,d:1,abs:function(){return Bn(this.n,this.d)},neg:function(){return Bn(-this.s*this.n,this.d)},add:function(e,t){return ya(e,t),Bn(this.s*this.n*Ut.d+Ut.s*this.d*Ut.n,this.d*Ut.d)},sub:function(e,t){return ya(e,t),Bn(this.s*this.n*Ut.d-Ut.s*this.d*Ut.n,this.d*Ut.d)},mul:function(e,t){return ya(e,t),Bn(this.s*Ut.s*this.n*Ut.n,this.d*Ut.d)},div:function(e,t){return ya(e,t),Bn(this.s*Ut.s*this.n*Ut.d,this.d*Ut.n)},clone:function(){return Bn(this.s*this.n,this.d)},mod:function(e,t){if(isNaN(this.n)||isNaN(this.d))return new Ii(NaN);if(e===void 0)return Bn(this.s*this.n%this.d,1);if(ya(e,t),Ut.n===0&&this.d===0)throw rA();return Bn(this.s*(Ut.d*this.n)%(Ut.n*this.d),Ut.d*this.d)},gcd:function(e,t){return ya(e,t),Bn(hd(Ut.n,this.n)*hd(Ut.d,this.d),Ut.d*this.d)},lcm:function(e,t){return ya(e,t),Ut.n===0&&this.n===0?Bn(0,1):Bn(Ut.n*this.n,hd(Ut.n,this.n)*hd(Ut.d,this.d))},ceil:function(e){return e=Math.pow(10,e||0),isNaN(this.n)||isNaN(this.d)?new Ii(NaN):Bn(Math.ceil(e*this.s*this.n/this.d),e)},floor:function(e){return e=Math.pow(10,e||0),isNaN(this.n)||isNaN(this.d)?new Ii(NaN):Bn(Math.floor(e*this.s*this.n/this.d),e)},round:function(e){return e=Math.pow(10,e||0),isNaN(this.n)||isNaN(this.d)?new Ii(NaN):Bn(Math.round(e*this.s*this.n/this.d),e)},roundTo:function(e,t){return ya(e,t),Bn(this.s*Math.round(this.n*Ut.d/(this.d*Ut.n))*Ut.n,Ut.d)},inverse:function(){return Bn(this.s*this.d,this.n)},pow:function(e,t){if(ya(e,t),Ut.d===1)return Ut.s<0?Bn(Math.pow(this.s*this.d,Ut.n),Math.pow(this.n,Ut.n)):Bn(Math.pow(this.s*this.n,Ut.n),Math.pow(this.d,Ut.n));if(this.s<0)return null;var r=ZF(this.n),n=ZF(this.d),i=1,o=1;for(var l in r)if(l!=="1"){if(l==="0"){i=0;break}if(r[l]*=Ut.n,r[l]%Ut.d===0)r[l]/=Ut.d;else return null;i*=Math.pow(l,r[l])}for(var l in n)if(l!=="1"){if(n[l]*=Ut.n,n[l]%Ut.d===0)n[l]/=Ut.d;else return null;o*=Math.pow(l,n[l])}return Ut.s<0?Bn(o,i):Bn(i,o)},equals:function(e,t){return ya(e,t),this.s*this.n*Ut.d===Ut.s*Ut.n*this.d},compare:function(e,t){ya(e,t);var r=this.s*this.n*Ut.d-Ut.s*Ut.n*this.d;return(0=0;o--)i=i.inverse().add(r[o]);if(Math.abs(i.sub(t).valueOf())0&&(r+=t,r+=" ",n%=i),r+=n,r+="/",r+=i),r},toLatex:function(e){var t,r="",n=this.n,i=this.d;return this.s<0&&(r+="-"),i===1?r+=n:(e&&(t=Math.floor(n/i))>0&&(r+=t,n%=i),r+="\\frac{",r+=n,r+="}{",r+=i,r+="}"),r},toContinued:function(){var e,t=this.n,r=this.d,n=[];if(isNaN(t)||isNaN(r))return n;do n.push(Math.floor(t/r)),e=t%r,t=r,r=e;while(t!==1);return n},toString:function(e){var t=this.n,r=this.d;if(isNaN(t)||isNaN(r))return"NaN";e=e||15;var n=zie(t,r),i=Uie(t,r,n),o=this.s<0?"-":"";if(o+=t/r|0,t%=r,t*=10,t&&(o+="."),n){for(var l=i;l--;)o+=t/r|0,t%=r,t*=10;o+="(";for(var l=n;l--;)o+=t/r|0,t%=r,t*=10;o+=")"}else for(var l=e;t&&l--;)o+=t/r|0,t%=r,t*=10;return o}};var $ie="Fraction",Wie=[],XF=$($ie,Wie,()=>(Object.defineProperty(Ii,"name",{value:"Fraction"}),Ii.prototype.constructor=Ii,Ii.prototype.type="Fraction",Ii.prototype.isFraction=!0,Ii.prototype.toJSON=function(){return{mathjs:"Fraction",n:this.s*this.n,d:this.d}},Ii.fromJSON=function(e){return new Ii(e)},Ii),{isClass:!0});var Vie="Range",Gie=[],KF=$(Vie,Gie,()=>{function e(t,r,n){if(!(this instanceof e))throw new SyntaxError("Constructor must be called with the new operator");var i=t!=null,o=r!=null,l=n!=null;if(i){if(Nt(t))t=t.toNumber();else if(typeof t!="number")throw new TypeError("Parameter start must be a number")}if(o){if(Nt(r))r=r.toNumber();else if(typeof r!="number")throw new TypeError("Parameter end must be a number")}if(l){if(Nt(n))n=n.toNumber();else if(typeof n!="number")throw new TypeError("Parameter step must be a number")}this.start=i?parseFloat(t):0,this.end=o?parseFloat(r):0,this.step=l?parseFloat(n):1}return e.prototype.type="Range",e.prototype.isRange=!0,e.parse=function(t){if(typeof t!="string")return null;var r=t.split(":"),n=r.map(function(o){return parseFloat(o)}),i=n.some(function(o){return isNaN(o)});if(i)return null;switch(n.length){case 2:return new e(n[0],n[1]);case 3:return new e(n[0],n[2],n[1]);default:return null}},e.prototype.clone=function(){return new e(this.start,this.end,this.step)},e.prototype.size=function(){var t=0,r=this.start,n=this.step,i=this.end,o=i-r;return Ga(n)===Ga(o)?t=Math.ceil(o/n):o===0&&(t=0),isNaN(t)&&(t=0),[t]},e.prototype.min=function(){var t=this.size()[0];if(t>0)return this.step>0?this.start:this.start+(t-1)*this.step},e.prototype.max=function(){var t=this.size()[0];if(t>0)return this.step>0?this.start+(t-1)*this.step:this.start},e.prototype.forEach=function(t){var r=this.start,n=this.step,i=this.end,o=0;if(n>0)for(;ri;)t(r,[o],this),r+=n,o++},e.prototype.map=function(t){var r=[];return this.forEach(function(n,i,o){r[i[0]]=t(n,i,o)}),r},e.prototype.toArray=function(){var t=[];return this.forEach(function(r,n){t[n[0]]=r}),t},e.prototype.valueOf=function(){return this.toArray()},e.prototype.format=function(t){var r=Ls(this.start,t);return this.step!==1&&(r+=":"+Ls(this.step,t)),r+=":"+Ls(this.end,t),r},e.prototype.toString=function(){return this.format()},e.prototype.toJSON=function(){return{mathjs:"Range",start:this.start,end:this.end,step:this.step}},e.fromJSON=function(t){return new e(t.start,t.end,t.step)},e},{isClass:!0});var Yie="Matrix",Zie=[],JF=$(Yie,Zie,()=>{function e(){if(!(this instanceof e))throw new SyntaxError("Constructor must be called with the new operator")}return e.prototype.type="Matrix",e.prototype.isMatrix=!0,e.prototype.storage=function(){throw new Error("Cannot invoke storage on a Matrix interface")},e.prototype.datatype=function(){throw new Error("Cannot invoke datatype on a Matrix interface")},e.prototype.create=function(t,r){throw new Error("Cannot invoke create on a Matrix interface")},e.prototype.subset=function(t,r,n){throw new Error("Cannot invoke subset on a Matrix interface")},e.prototype.get=function(t){throw new Error("Cannot invoke get on a Matrix interface")},e.prototype.set=function(t,r,n){throw new Error("Cannot invoke set on a Matrix interface")},e.prototype.resize=function(t,r){throw new Error("Cannot invoke resize on a Matrix interface")},e.prototype.reshape=function(t,r){throw new Error("Cannot invoke reshape on a Matrix interface")},e.prototype.clone=function(){throw new Error("Cannot invoke clone on a Matrix interface")},e.prototype.size=function(){throw new Error("Cannot invoke size on a Matrix interface")},e.prototype.map=function(t,r){throw new Error("Cannot invoke map on a Matrix interface")},e.prototype.forEach=function(t){throw new Error("Cannot invoke forEach on a Matrix interface")},e.prototype[Symbol.iterator]=function(){throw new Error("Cannot iterate a Matrix interface")},e.prototype.toArray=function(){throw new Error("Cannot invoke toArray on a Matrix interface")},e.prototype.valueOf=function(){throw new Error("Cannot invoke valueOf on a Matrix interface")},e.prototype.format=function(t){throw new Error("Cannot invoke format on a Matrix interface")},e.prototype.toString=function(){throw new Error("Cannot invoke toString on a Matrix interface")},e},{isClass:!0});function nA(e,t,r){var n=e.constructor,i=new n(2),o="";if(r){if(r<1)throw new Error("size must be in greater than 0");if(!ht(r))throw new Error("size must be an integer");if(e.greaterThan(i.pow(r-1).sub(1))||e.lessThan(i.pow(r-1).mul(-1)))throw new Error("Value must be in range [-2^".concat(r-1,", 2^").concat(r-1,"-1]"));if(!e.isInteger())throw new Error("Value must be an integer");e.lessThan(0)&&(e=e.add(i.pow(r))),o="i".concat(r)}switch(t){case 2:return"".concat(e.toBinary()).concat(o);case 8:return"".concat(e.toOctal()).concat(o);case 16:return"".concat(e.toHexadecimal()).concat(o);default:throw new Error("Base ".concat(t," not supported "))}}function eI(e,t){if(typeof t=="function")return t(e);if(!e.isFinite())return e.isNaN()?"NaN":e.gt(0)?"Infinity":"-Infinity";var{notation:r,precision:n,wordSize:i}=VE(t);switch(r){case"fixed":return Kie(e,n);case"exponential":return QF(e,n);case"engineering":return Xie(e,n);case"bin":return nA(e,2,i);case"oct":return nA(e,8,i);case"hex":return nA(e,16,i);case"auto":{var o=jF(t?.lowerExp,-3),l=jF(t?.upperExp,5);if(e.isZero())return"0";var s,a=e.toSignificantDigits(n),u=a.e;return u>=o&&u=0?"+":"")+n.toString()}function QF(e,t){return t!==void 0?e.toExponential(t-1):e.toExponential()}function Kie(e,t){return e.toFixed(t)}function jF(e,t){return Rt(e)?e:Nt(e)?e.toNumber():t}function rI(e,t){var r=e.length-t.length,n=e.length;return e.substring(r,n)===t}function Ht(e,t){var r=Jie(e,t);return t&&typeof t=="object"&&"truncate"in t&&r.length>t.truncate?r.substring(0,t.truncate-3)+"...":r}function Jie(e,t){if(typeof e=="number")return Ls(e,t);if(Nt(e))return eI(e,t);if(Qie(e))return!t||t.fraction!=="decimal"?e.s*e.n+"/"+e.d:e.toString();if(Array.isArray(e))return nI(e,t);if(cn(e))return fp(e);if(typeof e=="function")return e.syntax?String(e.syntax):"function";if(e&&typeof e=="object"){if(typeof e.format=="function")return e.format(t);if(e&&e.toString(t)!=={}.toString())return e.toString(t);var r=Object.keys(e).map(n=>fp(n)+": "+Ht(e[n],t));return"{"+r.join(", ")+"}"}return String(e)}function fp(e){for(var t=String(e),r="",n=0;n/g,">"),t}function nI(e,t){if(Array.isArray(e)){for(var r="[",n=e.length,i=0;it?1:-1}function Wt(e,t,r){if(!(this instanceof Wt))throw new SyntaxError("Constructor must be called with the new operator");this.actual=e,this.expected=t,this.relation=r,this.message="Dimension mismatch ("+(Array.isArray(e)?"["+e.join(", ")+"]":e)+" "+(this.relation||"!=")+" "+(Array.isArray(t)?"["+t.join(", ")+"]":t)+")",this.stack=new Error().stack}Wt.prototype=new RangeError;Wt.prototype.constructor=RangeError;Wt.prototype.name="DimensionError";Wt.prototype.isDimensionError=!0;function bi(e,t,r){if(!(this instanceof bi))throw new SyntaxError("Constructor must be called with the new operator");this.index=e,arguments.length<3?(this.min=0,this.max=t):(this.min=t,this.max=r),this.min!==void 0&&this.index=this.max?this.message="Index out of range ("+this.index+" > "+(this.max-1)+")":this.message="Index out of range ("+this.index+")",this.stack=new Error().stack}bi.prototype=new RangeError;bi.prototype.constructor=RangeError;bi.prototype.name="IndexError";bi.prototype.isIndexError=!0;function Ft(e){for(var t=[];Array.isArray(e);)t.push(e.length),e=e[0];return t}function iI(e,t,r){var n,i=e.length;if(i!==t[r])throw new Wt(i,t[r]);if(r")}function oA(e,t){var r=t.length===0;if(r){if(Array.isArray(e))throw new Wt(e.length,0)}else iI(e,t,0)}function Tv(e,t){var r=e.isMatrix?e._size:Ft(e),n=t._sourceSize;n.forEach((i,o)=>{if(i!==null&&i!==r[o])throw new Wt(i,r[o])})}function kr(e,t){if(e!==void 0){if(!Rt(e)||!ht(e))throw new TypeError("Index must be an integer (value: "+e+")");if(e<0||typeof t=="number"&&e>=t)throw new bi(e,t)}}function cp(e){for(var t=0;t=0,a=t%r===0;if(s)if(a)n[o]=-t/r;else throw new Error("Could not replace wildcard, since "+t+" is no multiple of "+-r);return n}function oI(e){return e.reduce((t,r)=>t*r,1)}function jie(e,t){for(var r=e,n,i=t.length-1;i>0;i--){var o=t[i];n=[];for(var l=r.length/o,s=0;st.test(r))}function sA(e,t){return Array.prototype.join.call(e,t)}function Ml(e){if(!Array.isArray(e))throw new TypeError("Array input expected");if(e.length===0)return e;var t=[],r=0;t[0]={value:e[0],identifier:0};for(var n=1;n1)return e.slice(1).reduce(function(r,n){return lI(r,n,t,0)},e[0]);throw new Error("Wrong number of arguments in function concat")}function Fv(){for(var e=arguments.length,t=new Array(e),r=0;rh.length),i=Math.max(...n),o=new Array(i).fill(null),l=0;lo[f]&&(o[f]=s[u])}for(var p=0;p1||e[i]>t[o])throw new Error("shape missmatch: missmatch is found in arg with shape (".concat(e,") not possible to broadcast dimension ").concat(n," with size ").concat(e[i]," to size ").concat(t[o]))}}function Cu(e,t){var r=Ft(e);if(Go(r,t))return e;fI(r,t);var n=Fv(r,t),i=n.length,o=[...Array(i-r.length).fill(1),...r],l=toe(e);r.lengthi[o],e)}function Iv(e,t,r,n){return Array.isArray(e)?e.map(function(i,o){return Iv(i,t.concat(o),r,n)}):n(e,t,r)}function toe(e){return Wn([],e)}var lA=fn(q1(),1);function Xa(e,t,r){if(lA.default.isTypedFunction(e)){var n=(t.isMatrix?t.size():Ft(t)).map(()=>0),i=t.isMatrix?t.get(n):xd(t,n),o=Object.keys(e.signatures).length===1,l=roe(e,i,n,t),s=o?Object.values(e.signatures)[0]:e;return l>=1&&l<=3?function(){for(var a=arguments.length,u=new Array(a),f=0;f0;o--){var l=i.slice(0,o);if(lA.default.resolve(e,l)!==null)return o}}function cI(e,t,r,n){try{return e(...t)}catch(i){noe(i,t,r,n)}}function noe(e,t,r,n){var i;if(e instanceof TypeError&&((i=e.data)===null||i===void 0?void 0:i.category)==="wrongType"){var o=[];throw o.push("value: ".concat(pr(t[0]))),t.length>=2&&o.push("index: ".concat(pr(t[1]))),t.length>=3&&o.push("array: ".concat(pr(t[2]))),new TypeError("Function ".concat(r," cannot apply callback arguments ")+"".concat(n,"(").concat(o.join(", "),") at index ").concat(JSON.stringify(t[1])))}else throw new TypeError("Function ".concat(r," cannot apply callback arguments ")+"to function ".concat(n,": ").concat(e.message))}var ioe="DenseMatrix",ooe=["Matrix"],pI=$(ioe,ooe,e=>{var{Matrix:t}=e;function r(f,p){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");if(p&&!cn(p))throw new Error("Invalid datatype: "+p);if(yt(f))f.type==="DenseMatrix"?(this._data=_t(f._data),this._size=_t(f._size),this._datatype=p||f._datatype):(this._data=f.toArray(),this._size=f.size(),this._datatype=p||f._datatype);else if(f&&dr(f.data)&&dr(f.size))this._data=f.data,this._size=f.size,oA(this._data,this._size),this._datatype=p||f.datatype;else if(dr(f))this._data=u(f),this._size=Ft(this._data),oA(this._data,this._size),this._datatype=p;else{if(f)throw new TypeError("Unsupported type of data ("+pr(f)+")");this._data=[],this._size=[0],this._datatype=p}}r.prototype=new t,r.prototype.createDenseMatrix=function(f,p){return new r(f,p)},Object.defineProperty(r,"name",{value:"DenseMatrix"}),r.prototype.constructor=r,r.prototype.type="DenseMatrix",r.prototype.isDenseMatrix=!0,r.prototype.getDataType=function(){return pp(this._data,pr)},r.prototype.storage=function(){return"dense"},r.prototype.datatype=function(){return this._datatype},r.prototype.create=function(f,p){return new r(f,p)},r.prototype.subset=function(f,p,h){switch(arguments.length){case 1:return n(this,f);case 2:case 3:return o(this,f,p,h);default:throw new SyntaxError("Wrong number of arguments")}},r.prototype.get=function(f){return xd(this._data,f)},r.prototype.set=function(f,p,h){if(!dr(f))throw new TypeError("Array expected");if(f.length");var E=p.max().map(function(N){return N+1});a(f,E,g);var M=x.length,T=0;l(f._data,p,h,M,T)}return f}function l(f,p,h,g,x){var v=x===g-1,S=p.dimension(x);v?S.forEach(function(D,C){kr(D),f[D]=h[C[0]]}):S.forEach(function(D,C){kr(D),l(f[D],p,h[C[0]],g,x+1)})}r.prototype.resize=function(f,p,h){if(!hn(f))throw new TypeError("Array or Matrix expected");var g=f.valueOf().map(v=>Array.isArray(v)&&v.length===1?v[0]:v),x=h?this.clone():this;return s(x,g,p)};function s(f,p,h){if(p.length===0){for(var g=f._data;dr(g);)g=g[0];return g}return f._size=p.slice(0),f._data=Rs(f._data,f._size,h),f}r.prototype.reshape=function(f,p){var h=p?this.clone():this;h._data=_v(h._data,f);var g=h._size.reduce((x,v)=>x*v);return h._size=Ov(f,g),h};function a(f,p,h){for(var g=f._size.slice(0),x=!1;g.lengthg[v]&&(g[v]=p[v],x=!0);x&&s(f,g,h)}r.prototype.clone=function(){var f=new r({data:_t(this._data),size:_t(this._size),datatype:this._datatype});return f},r.prototype.size=function(){return this._size.slice(0)},r.prototype._forEach=function(f){var p=this,h=p.size();if(h.length===1){for(var g=0;g=0;C--){if(x[C]++,x[C]===h[C]){x[C]=0;continue}v[C]=C===0?p._data[x[C]]:v[C-1][x[C]];for(var E=C;E[E[D]]);p.push(new r(C,f._datatype))},v=0;v0?f:0,h=f<0?-f:0,g=this._size[0],x=this._size[1],v=Math.min(g-h,x-p),S=[],D=0;D0?h:0,v=h<0?-h:0,S=f[0],D=f[1],C=Math.min(S-v,D-x),E;if(dr(p)){if(p.length!==C)throw new Error("Invalid value array length");E=function(F){return p[F]}}else if(yt(p)){var M=p.size();if(M.length!==1||M[0]!==C)throw new Error("Invalid matrix length");E=function(F){return p.get([F])}}else E=function(){return p};g||(g=Nt(E(0))?E(0).mul(0):0);var T=[];if(f.length>0){T=Rs(T,f,g);for(var N=0;N{var{typed:t}=e;return t(mI,{any:_t})});function iw(e){var t=e.length,r=e[0].length,n,i,o=[];for(i=0;i=n.length)throw new bi(t,n.length);return yt(e)?e.create(ow(e.valueOf(),t,r),e.datatype()):ow(e,t,r)}function ow(e,t,r){var n,i,o,l;if(t<=0)if(Array.isArray(e[0])){for(l=iw(e),i=[],n=0;n{var{typed:t}=e;return t(hI,{number:ht,BigNumber:function(n){return n.isInt()},bigint:function(n){return!0},Fraction:function(n){return n.d===1&&isFinite(n.n)},"Array | Matrix":t.referToSelf(r=>n=>wt(n,r))})});var Zo="number",Tl="number, number";function cA(e){return Math.abs(e)}cA.signature=Zo;function pA(e,t){return e+t}pA.signature=Tl;function mA(e,t){return e-t}mA.signature=Tl;function dA(e,t){return e*t}dA.signature=Tl;function uoe(e,t){return e/t}uoe.signature=Tl;function hA(e){return-e}hA.signature=Zo;function gA(e){return e}gA.signature=Zo;function yd(e){return wF(e)}yd.signature=Zo;function vA(e){return e*e*e}vA.signature=Zo;function xA(e){return Math.exp(e)}xA.signature=Zo;function yA(e){return bF(e)}yA.signature=Zo;function loe(e,t){if(!ht(e)||!ht(t))throw new Error("Parameters in function gcd must be integer numbers");for(var r;t!==0;)r=e%t,e=t,t=r;return e<0?-e:e}loe.signature=Tl;function wA(e,t){if(!ht(e)||!ht(t))throw new Error("Parameters in function lcm must be integer numbers");if(e===0||t===0)return 0;for(var r,n=e*t;t!==0;)r=t,t=e%r,e=r;return Math.abs(n/e)}wA.signature=Tl;function vI(e,t){return t?Math.log(e)/Math.log(t):Math.log(e)}function bA(e){return yF(e)}bA.signature=Zo;function DA(e){return xF(e)}DA.signature=Zo;function foe(e){return z1(e)}foe.signature=Zo;function coe(e,t){return t===0?e:e-t*Math.floor(e/t)}coe.signature=Tl;function SA(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2,r=t<0;if(r&&(t=-t),t===0)throw new Error("Root must be non-zero");if(e<0&&Math.abs(t)%2!==1)throw new Error("Root must be odd when a is negative.");if(e===0)return r?1/0:0;if(!isFinite(e))return r?0:e;var n=Math.pow(Math.abs(e),1/t);return n=e<0?-n:n,r?1/n:n}function aw(e){return Ga(e)}aw.signature=Zo;function poe(e){return Math.sqrt(e)}poe.signature=Zo;function NA(e){return e*e}NA.signature=Zo;function EA(e,t){var r,n,i,o=0,l=1,s=1,a=0;if(!ht(e)||!ht(t))throw new Error("Parameters in function xgcd must be integer numbers");for(;t;)n=Math.floor(e/t),i=e-n*t,r=o,o=l-n*o,l=r,r=s,s=a-n*s,a=r,e=t,t=i;var u;return e<0?u=[-e,-l,-a]:u=[e,e?l:0,a],u}EA.signature=Tl;function AA(e,t){return e*e<1&&t===1/0||e*e>1&&t===-1/0?0:Math.pow(e,t)}AA.signature=Tl;function wd(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!ht(t)||t<0||t>15)throw new Error("Number of decimals in function round must be an integer from 0 to 15 inclusive");return parseFloat(GE(e,t))}function moe(e){return Math.abs(e)}moe.signature=Zo;var doe="number",bd="number, number";function CA(e,t){if(!ht(e)||!ht(t))throw new Error("Integers expected in function bitAnd");return e&t}CA.signature=bd;function MA(e){if(!ht(e))throw new Error("Integer expected in function bitNot");return~e}MA.signature=doe;function TA(e,t){if(!ht(e)||!ht(t))throw new Error("Integers expected in function bitOr");return e|t}TA.signature=bd;function _A(e,t){if(!ht(e)||!ht(t))throw new Error("Integers expected in function bitXor");return e^t}_A.signature=bd;function OA(e,t){if(!ht(e)||!ht(t))throw new Error("Integers expected in function leftShift");return e<>t}FA.signature=bd;function IA(e,t){if(!ht(e)||!ht(t))throw new Error("Integers expected in function rightLogShift");return e>>>t}IA.signature=bd;function wa(e,t){if(t>1;return wa(e,r)*wa(r+1,t)}function kA(e,t){if(!ht(e)||e<0)throw new TypeError("Positive integer value expected in function combinations");if(!ht(t)||t<0)throw new TypeError("Positive integer value expected in function combinations");if(t>e)throw new TypeError("k must be less than or equal to n");for(var r=e-t,n=1,i=t171?1/0:wa(1,e-1);if(e<.5)return Math.PI/(Math.sin(Math.PI*e)*kv(1-e));if(e>=171.35)return 1/0;if(e>85){var r=e*e,n=r*e,i=n*e,o=i*e;return Math.sqrt(2*Math.PI/e)*Math.pow(e/Math.E,e)*(1+1/(12*e)+1/(288*r)-139/(51840*n)-571/(2488320*i)+163879/(209018880*o)+5246819/(75246796800*o*e))}--e,t=mp[0];for(var l=1;l=1;n--)r+=DI[n]/(e+n);return RA+(e+.5)*Math.log(t)-t+Math.log(r)}Lv.signature="number";var Sn="number",xoe="number, number";function yoe(e){return Math.acos(e)}yoe.signature=Sn;function qA(e){return NF(e)}qA.signature=Sn;function zA(e){return Math.atan(1/e)}zA.signature=Sn;function UA(e){return isFinite(e)?(Math.log((e+1)/e)+Math.log(e/(e-1)))/2:0}UA.signature=Sn;function HA(e){return Math.asin(1/e)}HA.signature=Sn;function $A(e){var t=1/e;return Math.log(t+Math.sqrt(t*t+1))}$A.signature=Sn;function WA(e){return Math.acos(1/e)}WA.signature=Sn;function VA(e){var t=1/e,r=Math.sqrt(t*t-1);return Math.log(r+t)}VA.signature=Sn;function woe(e){return Math.asin(e)}woe.signature=Sn;function GA(e){return EF(e)}GA.signature=Sn;function boe(e){return Math.atan(e)}boe.signature=Sn;function Doe(e,t){return Math.atan2(e,t)}Doe.signature=xoe;function YA(e){return AF(e)}YA.signature=Sn;function Soe(e){return Math.cos(e)}Soe.signature=Sn;function Noe(e){return H1(e)}Noe.signature=Sn;function ZA(e){return 1/Math.tan(e)}ZA.signature=Sn;function XA(e){var t=Math.exp(2*e);return(t+1)/(t-1)}XA.signature=Sn;function KA(e){return 1/Math.sin(e)}KA.signature=Sn;function JA(e){return e===0?Number.POSITIVE_INFINITY:Math.abs(2/(Math.exp(e)-Math.exp(-e)))*Ga(e)}JA.signature=Sn;function QA(e){return 1/Math.cos(e)}QA.signature=Sn;function jA(e){return 2/(Math.exp(e)+Math.exp(-e))}jA.signature=Sn;function Eoe(e){return Math.sin(e)}Eoe.signature=Sn;function eC(e){return CF(e)}eC.signature=Sn;function Aoe(e){return Math.tan(e)}Aoe.signature=Sn;function Coe(e){return $1(e)}Coe.signature=Sn;var Bv="number";function Moe(e){return ht(e)}Moe.signature=Bv;function tC(e){return e<0}tC.signature=Bv;function rC(e){return e>0}rC.signature=Bv;function Toe(e){return e===0}Toe.signature=Bv;function nC(e){return Number.isNaN(e)}nC.signature=Bv;function gn(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1e-9,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;if(r<=0)throw new Error("Relative tolerance must be greater than 0");if(n<0)throw new Error("Absolute tolerance must be at least 0");return e.isNaN()||t.isNaN()?!1:!e.isFinite()||!t.isFinite()?e.eq(t):e.eq(t)?!0:e.minus(t).abs().lte(e.constructor.max(e.constructor.max(e.abs(),t.abs()).mul(r),n))}var SI="isNegative",_oe=["typed","config"],NI=$(SI,_oe,e=>{var{typed:t,config:r}=e;return t(SI,{number:n=>Kr(n,0,r.relTol,r.absTol)?!1:tC(n),BigNumber:n=>gn(n,new n.constructor(0),r.relTol,r.absTol)?!1:n.isNeg()&&!n.isZero()&&!n.isNaN(),bigint:n=>n<0n,Fraction:n=>n.s<0,Unit:t.referToSelf(n=>i=>t.find(n,i.valueType())(i.value)),"Array | Matrix":t.referToSelf(n=>i=>wt(i,n))})});var EI="isNumeric",Ooe=["typed"],AI=$(EI,Ooe,e=>{var{typed:t}=e;return t(EI,{"number | BigNumber | bigint | Fraction | boolean":()=>!0,"Complex | Unit | string | null | undefined | Node":()=>!1,"Array | Matrix":t.referToSelf(r=>n=>wt(n,r))})});var CI="hasNumericValue",Foe=["typed","isNumeric"],MI=$(CI,Foe,e=>{var{typed:t,isNumeric:r}=e;return t(CI,{boolean:()=>!0,string:function(i){return i.trim().length>0&&!isNaN(Number(i))},any:function(i){return r(i)}})});var TI="isPositive",Ioe=["typed","config"],_I=$(TI,Ioe,e=>{var{typed:t,config:r}=e;return t(TI,{number:n=>Kr(n,0,r.relTol,r.absTol)?!1:rC(n),BigNumber:n=>gn(n,new n.constructor(0),r.relTol,r.absTol)?!1:!n.isNeg()&&!n.isZero()&&!n.isNaN(),bigint:n=>n>0n,Fraction:n=>n.s>0&&n.n>0,Unit:t.referToSelf(n=>i=>t.find(n,i.valueType())(i.value)),"Array | Matrix":t.referToSelf(n=>i=>wt(i,n))})});var OI="isZero",koe=["typed","equalScalar"],FI=$(OI,koe,e=>{var{typed:t,equalScalar:r}=e;return t(OI,{"number | BigNumber | Complex | Fraction":n=>r(n,0),bigint:n=>n===0n,Unit:t.referToSelf(n=>i=>t.find(n,i.valueType())(i.value)),"Array | Matrix":t.referToSelf(n=>i=>wt(i,n))})});var II="isNaN",Loe=["typed"],kI=$(II,Loe,e=>{var{typed:t}=e;return t(II,{number:nC,BigNumber:function(n){return n.isNaN()},bigint:function(n){return!1},Fraction:function(n){return!1},Complex:function(n){return n.isNaN()},Unit:function(n){return Number.isNaN(n.value)},"Array | Matrix":t.referToSelf(r=>n=>wt(n,r))})});var LI="typeOf",Boe=["typed"],BI=$(LI,Boe,e=>{var{typed:t}=e;return t(LI,{any:pr})});function PI(e,t,r,n){return Kr(e.re,t.re,r,n)&&Kr(e.im,t.im,r,n)}var Ja=$("compareUnits",["typed"],e=>{var{typed:t}=e;return{"Unit, Unit":t.referToSelf(r=>(n,i)=>{if(!n.equalBase(i))throw new Error("Cannot compare units with different base");return t.find(r,[n.valueType(),i.valueType()])(n.value,i.value)})}});var fw="equalScalar",Poe=["typed","config"],RI=$(fw,Poe,e=>{var{typed:t,config:r}=e,n=Ja({typed:t});return t(fw,{"boolean, boolean":function(o,l){return o===l},"number, number":function(o,l){return Kr(o,l,r.relTol,r.absTol)},"BigNumber, BigNumber":function(o,l){return o.eq(l)||gn(o,l,r.relTol,r.absTol)},"bigint, bigint":function(o,l){return o===l},"Fraction, Fraction":function(o,l){return o.equals(l)},"Complex, Complex":function(o,l){return PI(o,l,r.relTol,r.absTol)}},n)}),d3e=$(fw,["typed","config"],e=>{var{typed:t,config:r}=e;return t(fw,{"number, number":function(i,o){return Kr(i,o,r.relTol,r.absTol)}})});var Roe="SparseMatrix",qoe=["typed","equalScalar","Matrix"],qI=$(Roe,qoe,e=>{var{typed:t,equalScalar:r,Matrix:n}=e;function i(v,S){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator");if(S&&!cn(S))throw new Error("Invalid datatype: "+S);if(yt(v))o(this,v,S);else if(v&&dr(v.index)&&dr(v.ptr)&&dr(v.size))this._values=v.values,this._index=v.index,this._ptr=v.ptr,this._size=v.size,this._datatype=S||v.datatype;else if(dr(v))l(this,v,S);else{if(v)throw new TypeError("Unsupported type of data ("+pr(v)+")");this._values=[],this._index=[],this._ptr=[0],this._size=[0,0],this._datatype=S}}function o(v,S,D){S.type==="SparseMatrix"?(v._values=S._values?_t(S._values):void 0,v._index=_t(S._index),v._ptr=_t(S._ptr),v._size=_t(S._size),v._datatype=D||S._datatype):l(v,S.valueOf(),D||S._datatype)}function l(v,S,D){v._values=[],v._index=[],v._ptr=[],v._datatype=D;var C=S.length,E=0,M=r,T=0;if(cn(D)&&(M=t.find(r,[D,D])||r,T=t.convert(0,D)),C>0){var N=0;do{v._ptr.push(v._index.length);for(var O=0;O");if(E.length===1){var F=S.dimension(0);F.forEach(function(L,q){kr(L),v.set([L,0],D[q[0]],C)})}else{var I=S.dimension(0),B=S.dimension(1);I.forEach(function(L,q){kr(L),B.forEach(function(R,V){kr(R),v.set([L,R],D[q[0]][V[0]],C)})})}}return v}i.prototype.get=function(v){if(!dr(v))throw new TypeError("Array expected");if(v.length!==this._size.length)throw new Wt(v.length,this._size.length);if(!this._values)throw new Error("Cannot invoke get on a Pattern only matrix");var S=v[0],D=v[1];kr(S,this._size[0]),kr(D,this._size[1]);var C=u(S,this._ptr[D],this._ptr[D+1],this._index);return CM-1||E>T-1)&&(h(this,Math.max(C+1,M),Math.max(E+1,T),D),M=this._size[0],T=this._size[1]),kr(C,M),kr(E,T);var F=u(C,this._ptr[E],this._ptr[E+1],this._index);return FArray.isArray(M)&&M.length===1?M[0]:M);if(C.length!==2)throw new Error("Only two dimensions matrix are supported");C.forEach(function(M){if(!Rt(M)||!ht(M)||M<0)throw new TypeError("Invalid size, must contain positive integers (size: "+Ht(C)+")")});var E=D?this.clone():this;return h(E,C[0],C[1],S)};function h(v,S,D,C){var E=C||0,M=r,T=0;cn(v._datatype)&&(M=t.find(r,[v._datatype,v._datatype])||r,T=t.convert(0,v._datatype),E=t.convert(E,v._datatype));var N=!M(E,T),O=v._size[0],F=v._size[1],I,B,L;if(D>F){for(B=F;BO){if(N){var q=0;for(B=0;BS-1&&(v._values.splice(L,1),v._index.splice(L,1),V++)}v._ptr[B]=v._values.length}return v._size[0]=S,v._size[1]=D,v}i.prototype.reshape=function(v,S){if(!dr(v))throw new TypeError("Array expected");if(v.length!==2)throw new Error("Sparse matrices can only be reshaped in two dimensions");v.forEach(function(Z){if(!Rt(Z)||!ht(Z)||Z<=-2||Z===0)throw new TypeError("Invalid size, must contain positive integers or -1 (size: "+Ht(v)+")")});var D=this._size[0]*this._size[1];v=Ov(v,D);var C=v[0]*v[1];if(D!==C)throw new Error("Reshaping sparse matrix will result in the wrong number of elements");var E=S?this.clone():this;if(this._size[0]===v[0]&&this._size[1]===v[1])return E;for(var M=[],T=0;T=S&&U<=D&&L(v._values[X],U-S,q-C)}else{for(var H={},ee=R;ee"u")throw new Error("`createIcons()` only works in a browser environment.");let n=document.querySelectorAll(`[${t}]`);if(Array.from(n).forEach(i=>BN(i,{nameAttr:t,icons:e,attrs:r})),t==="data-lucide"){let i=document.querySelectorAll("[icon-name]");i.length>0&&(console.warn("[Lucide] Some icons were found with the now deprecated icon-name attribute. These will still be replaced for backwards compatibility, but will no longer be supported in v1.0 and you should switch to data-lucide"),Array.from(i).forEach(o=>BN(o,{nameAttr:"icon-name",icons:e,attrs:r})))}};var nre={AlertCircle:jy,ArrowUpDown:PN,Braces:Qy,Circle:RN,Copy:qN,CornerDownRight:zN,Dot:UN,Download:HN,EllipsisVertical:e1,Eraser:$N,Info:WN,ListRestart:VN,Palette:GN,PanelLeft:r1,PanelLeftClose:t1,Plus:YN,Printer:ZN,RefreshCcw:XN,RotateCcw:KN,Scaling:JN,Settings:QN,Trash:jN,Upload:eE},Pf=()=>{KO({icons:nre})};var mp=mn(Xg(),1),Ho={show:e=>{mp.default.modal(e,{bgClose:!1,stack:!0}).show()},hide:e=>{mp.default.modal(e).hide()}};function Mu(e,t){mp.default.util.on("#dialog-error","beforeshow",()=>{Le("#errTitle").innerHTML=e,Le("#errMsg").innerHTML=t}),Ho.show("#dialog-error")}function Bn(e,t){mp.default.notification({message:e,pos:ke.settings.notifyLocation,status:t||"primary",timeout:+ke.settings.notifyDuration})}function Rf(e,t){Le("#confirmMsg").innerHTML=e,Ho.show("#dialog-confirm");let r=n=>{t(),n.stopPropagation(),mp.default.modal("#dialog-confirm").hide(),Le("#confirm-yes").removeEventListener("click",r)};Le("#confirm-yes").addEventListener("click",r),mp.default.util.on("#dialog-confirm","hidden",()=>{Le("#confirm-yes").removeEventListener("click",r)})}var JO=navigator.userAgent.toLowerCase().includes("mac"),hi=navigator.userAgent.toLowerCase().includes("electron");function Kg(){return ke.settings=bt.get("settings"),ke.settings?.theme==="system"?hi&&numara.isDark()?"dark":"light":ke.settings?.theme==="dark"?"dark":"light"}function n1(){let e=ke.settings.locale==="system"?navigator.languages&&navigator.languages.length?navigator.languages[0]:navigator.language:ke.settings.locale;return 1.11.toLocaleString(e).match(/[,]/)}function i1(){Le("#resetSizeButton").style.display=hi&&numara.isResized()&&!numara.isMaximized()?"block":"none"}function nE(){numara.isMaximized()?numara.unmaximize():numara.maximize()}function QO(){hi&&(numara.checkUpdate(),numara.notifyUpdate(()=>{Bn('Downloading latest version... View status'),Le("#notificationDot").style.display="block"}),numara.updateStatus((e,t)=>{t==="ready"?(Le("#dialog-about-updateStatus").innerHTML="New version is ready to be installed.",Le("#updateButton").style.display="inline-block",Le("#dialog-about").classList.contains("uk-open")||Bn('New version is ready to be installed. Install Now')):Le("#dialog-about-updateStatus").innerHTML=t}))}var Sl=(()=>{return((e,t,r,n)=>{let i=t.createElement("canvas").getContext("2d"),o={r:0,g:0,b:0,h:0,s:0,v:0,a:1},l,s,a,u,f,p,h,g,x,v,S,D,C,E,M,T,N={},O={el:"[data-coloris]",parent:"body",theme:"default",themeMode:"light",rtl:!1,wrap:!0,margin:2,format:"hex",formatToggle:!1,swatches:[],swatchesOnly:!1,alpha:!0,forceAlpha:!1,focusInput:!0,selectInput:!1,inline:!1,defaultColor:"#000000",clearButton:!1,clearLabel:"Clear",closeButton:!1,closeLabel:"Close",onChange:()=>n,a11y:{open:"Open color picker",close:"Close color picker",clear:"Clear the selected color",marker:"Saturation: {s}. Brightness: {v}.",hueSlider:"Hue slider",alphaSlider:"Opacity slider",input:"Color value field",format:"Color format",swatch:"Color swatch",instruction:"Saturation and brightness selector. Use up, down, left and right arrow keys to select."}},F={},I="",B={},L=!1;function q(te){if(typeof te=="object")for(let ge in te)switch(ge){case"el":H(te.el),te.wrap!==!1&&pe(te.el);break;case"parent":l=te.parent instanceof HTMLElement?te.parent:t.querySelector(te.parent),l&&(l.appendChild(s),O.parent=te.parent,l===t.body&&(l=n));break;case"themeMode":O.themeMode=te.themeMode,te.themeMode==="auto"&&e.matchMedia&&e.matchMedia("(prefers-color-scheme: dark)").matches&&(O.themeMode="dark");case"theme":te.theme&&(O.theme=te.theme),s.className="clr-picker clr-"+O.theme+" clr-"+O.themeMode,O.inline&&Z();break;case"rtl":O.rtl=!!te.rtl,Array.from(t.getElementsByClassName("clr-field")).forEach(Pe=>Pe.classList.toggle("clr-rtl",O.rtl));break;case"margin":te.margin*=1,O.margin=isNaN(te.margin)?O.margin:te.margin;break;case"wrap":te.el&&te.wrap&&pe(te.el);break;case"formatToggle":O.formatToggle=!!te.formatToggle,Rt("clr-format").style.display=O.formatToggle?"block":"none",O.formatToggle&&(O.format="auto");break;case"swatches":if(Array.isArray(te.swatches)){let Pe=Rt("clr-swatches"),$e=t.createElement("div");Pe.textContent="",te.swatches.forEach((W,ae)=>{let be=t.createElement("button");be.setAttribute("type","button"),be.setAttribute("id","clr-swatch-"+ae),be.setAttribute("aria-labelledby","clr-swatch-label clr-swatch-"+ae),be.style.color=W,be.textContent=W,$e.appendChild(be)}),te.swatches.length&&Pe.appendChild($e),O.swatches=te.swatches.slice()}break;case"swatchesOnly":O.swatchesOnly=!!te.swatchesOnly,s.setAttribute("data-minimal",O.swatchesOnly);break;case"alpha":O.alpha=!!te.alpha,s.setAttribute("data-alpha",O.alpha);break;case"inline":if(O.inline=!!te.inline,s.setAttribute("data-inline",O.inline),O.inline){let Pe=te.defaultColor||O.defaultColor;E=Oe(Pe),Z(),ve(Pe)}break;case"clearButton":typeof te.clearButton=="object"&&(te.clearButton.label&&(O.clearLabel=te.clearButton.label,h.innerHTML=O.clearLabel),te.clearButton=te.clearButton.show),O.clearButton=!!te.clearButton,h.style.display=O.clearButton?"block":"none";break;case"clearLabel":O.clearLabel=te.clearLabel,h.innerHTML=O.clearLabel;break;case"closeButton":O.closeButton=!!te.closeButton,O.closeButton?s.insertBefore(g,f):f.appendChild(g);break;case"closeLabel":O.closeLabel=te.closeLabel,g.innerHTML=O.closeLabel;break;case"a11y":let _e=te.a11y,ze=!1;if(typeof _e=="object")for(let Pe in _e)_e[Pe]&&O.a11y[Pe]&&(O.a11y[Pe]=_e[Pe],ze=!0);if(ze){let Pe=Rt("clr-open-label"),$e=Rt("clr-swatch-label");Pe.innerHTML=O.a11y.open,$e.innerHTML=O.a11y.swatch,g.setAttribute("aria-label",O.a11y.close),h.setAttribute("aria-label",O.a11y.clear),x.setAttribute("aria-label",O.a11y.hueSlider),S.setAttribute("aria-label",O.a11y.alphaSlider),p.setAttribute("aria-label",O.a11y.input),a.setAttribute("aria-label",O.a11y.instruction)}break;default:O[ge]=te[ge]}}function R(te,ge){typeof te=="string"&&typeof ge=="object"&&(F[te]=ge,L=!0)}function V(te){delete F[te],Object.keys(F).length===0&&(L=!1,te===I&&U())}function X(te){if(L){let ge=["el","wrap","rtl","inline","defaultColor","a11y"];for(let _e in F){let ze=F[_e];if(te.matches(_e)){I=_e,B={},ge.forEach(Pe=>delete ze[Pe]);for(let Pe in ze)B[Pe]=Array.isArray(O[Pe])?O[Pe].slice():O[Pe];q(ze);break}}}}function U(){Object.keys(B).length>0&&(q(B),I="",B={})}function H(te){te instanceof HTMLElement&&(te=[te]),Array.isArray(te)?te.forEach(ge=>{vt(ge,"click",ee),vt(ge,"input",he)}):(vt(t,"click",te,ee),vt(t,"input",te,he))}function ee(te){O.inline||(X(te.target),C=te.target,M=C.value,E=Oe(M),s.classList.add("clr-open"),Z(),ve(M),(O.focusInput||O.selectInput)&&(p.focus({preventScroll:!0}),p.setSelectionRange(C.selectionStart,C.selectionEnd)),O.selectInput&&p.select(),(T||O.swatchesOnly)&&At().shift().focus(),C.dispatchEvent(new Event("open",{bubbles:!0})))}function Z(){if(!s||!C&&!O.inline)return;let te=l,ge=e.scrollY,_e=s.offsetWidth,ze=s.offsetHeight,Pe={left:!1,top:!1},$e,W,ae,be={x:0,y:0};if(te&&($e=e.getComputedStyle(te),W=parseFloat($e.marginTop),ae=parseFloat($e.borderTopWidth),be=te.getBoundingClientRect(),be.y+=ae+ge),!O.inline){let Ve=C.getBoundingClientRect(),tt=Ve.x,ft=ge+Ve.y+Ve.height+O.margin;te?(tt-=be.x,ft-=be.y,tt+_e>te.clientWidth&&(tt+=Ve.width-_e,Pe.left=!0),ft+ze>te.clientHeight-W&&ze+O.margin<=Ve.top-(be.y-ge)&&(ft-=Ve.height+ze+O.margin*2,Pe.top=!0),ft+=te.scrollTop):(tt+_e>t.documentElement.clientWidth&&(tt+=Ve.width-_e,Pe.left=!0),ft+ze-ge>t.documentElement.clientHeight&&ze+O.margin<=Ve.top&&(ft=ge+Ve.y-ze-O.margin,Pe.top=!0)),s.classList.toggle("clr-left",Pe.left),s.classList.toggle("clr-top",Pe.top),s.style.left=tt+"px",s.style.top=ft+"px",be.x+=s.offsetLeft,be.y+=s.offsetTop}N={width:a.offsetWidth,height:a.offsetHeight,x:a.offsetLeft+be.x,y:a.offsetTop+be.y}}function pe(te){te instanceof HTMLElement?we(te):Array.isArray(te)?te.forEach(we):t.querySelectorAll(te).forEach(we)}function we(te){let ge=te.parentNode;if(!ge.classList.contains("clr-field")){let _e=t.createElement("div"),ze="clr-field";(O.rtl||te.classList.contains("clr-rtl"))&&(ze+=" clr-rtl"),_e.innerHTML='',ge.insertBefore(_e,te),_e.className=ze,_e.style.color=te.value,_e.appendChild(te)}}function he(te){let ge=te.target.parentNode;ge.classList.contains("clr-field")&&(ge.style.color=te.target.value)}function oe(te){if(C&&!O.inline){let ge=C;te&&(C=n,M!==ge.value&&(ge.value=M,ge.dispatchEvent(new Event("input",{bubbles:!0})))),setTimeout(()=>{M!==ge.value&&ge.dispatchEvent(new Event("change",{bubbles:!0}))}),s.classList.remove("clr-open"),L&&U(),ge.dispatchEvent(new Event("close",{bubbles:!0})),O.focusInput&&ge.focus({preventScroll:!0}),C=n}}function ve(te){let ge=Je(te),_e=Ce(ge);le(_e.s,_e.v),Ue(ge,_e),x.value=_e.h,s.style.color="hsl("+_e.h+", 100%, 50%)",v.style.left=_e.h/360*100+"%",u.style.left=N.width*_e.s/100+"px",u.style.top=N.height-N.height*_e.v/100+"px",S.value=_e.a*100,D.style.left=_e.a*100+"%"}function Oe(te){let ge=te.substring(0,3).toLowerCase();return ge==="rgb"||ge==="hsl"?ge:"hex"}function De(te){te=te!==n?te:p.value,C&&(C.value=te,C.dispatchEvent(new Event("input",{bubbles:!0}))),O.onChange&&O.onChange.call(e,te,C),t.dispatchEvent(new CustomEvent("coloris:pick",{detail:{color:te,currentEl:C}}))}function Me(te,ge){let _e={h:x.value*1,s:te/N.width*100,v:100-ge/N.height*100,a:S.value/100},ze=ue(_e);le(_e.s,_e.v),Ue(ze,_e),De()}function le(te,ge){let _e=O.a11y.marker;te=te.toFixed(1)*1,ge=ge.toFixed(1)*1,_e=_e.replace("{s}",te),_e=_e.replace("{v}",ge),u.setAttribute("aria-label",_e)}function ne(te){return{pageX:te.changedTouches?te.changedTouches[0].pageX:te.pageX,pageY:te.changedTouches?te.changedTouches[0].pageY:te.pageY}}function fe(te){let ge=ne(te),_e=ge.pageX-N.x,ze=ge.pageY-N.y;l&&(ze+=l.scrollTop),me(_e,ze),te.preventDefault(),te.stopPropagation()}function Fe(te,ge){let _e=u.style.left.replace("px","")*1+te,ze=u.style.top.replace("px","")*1+ge;me(_e,ze)}function me(te,ge){te=te<0?0:te>N.width?N.width:te,ge=ge<0?0:ge>N.height?N.height:ge,u.style.left=te+"px",u.style.top=ge+"px",Me(te,ge),u.focus()}function Ue(te,ge){te===void 0&&(te={}),ge===void 0&&(ge={});let _e=O.format;for(let $e in te)o[$e]=te[$e];for(let $e in ge)o[$e]=ge[$e];let ze=He(o),Pe=ze.substring(0,7);switch(u.style.color=Pe,D.parentNode.style.color=Pe,D.style.color=ze,f.style.color=ze,a.style.display="none",a.offsetHeight,a.style.display="",D.nextElementSibling.style.display="none",D.nextElementSibling.offsetHeight,D.nextElementSibling.style.display="",_e==="mixed"?_e=o.a===1?"hex":"rgb":_e==="auto"&&(_e=E),_e){case"hex":p.value=ze;break;case"rgb":p.value=it(o);break;case"hsl":p.value=ct(Te(o));break}t.querySelector('.clr-format [value="'+_e+'"]').checked=!0}function Re(){let te=x.value*1,ge=u.style.left.replace("px","")*1,_e=u.style.top.replace("px","")*1;s.style.color="hsl("+te+", 100%, 50%)",v.style.left=te/360*100+"%",Me(ge,_e)}function ie(){let te=S.value/100;D.style.left=te*100+"%",Ue({a:te}),De()}function ue(te){let ge=te.s/100,_e=te.v/100,ze=ge*_e,Pe=te.h/60,$e=ze*(1-r.abs(Pe%2-1)),W=_e-ze;ze=ze+W,$e=$e+W;let ae=r.floor(Pe)%6,be=[ze,$e,W,W,$e,ze][ae],Ve=[$e,ze,ze,$e,W,W][ae],tt=[W,W,$e,ze,ze,$e][ae];return{r:r.round(be*255),g:r.round(Ve*255),b:r.round(tt*255),a:te.a}}function Te(te){let ge=te.v/100,_e=ge*(1-te.s/100/2),ze;return _e>0&&_e<1&&(ze=r.round((ge-_e)/r.min(_e,1-_e)*100)),{h:te.h,s:ze||0,l:r.round(_e*100),a:te.a}}function Ce(te){let ge=te.r/255,_e=te.g/255,ze=te.b/255,Pe=r.max(ge,_e,ze),$e=r.min(ge,_e,ze),W=Pe-$e,ae=Pe,be=0,Ve=0;return W&&(Pe===ge&&(be=(_e-ze)/W),Pe===_e&&(be=2+(ze-ge)/W),Pe===ze&&(be=4+(ge-_e)/W),Pe&&(Ve=W/Pe)),be=r.floor(be*60),{h:be<0?be+360:be,s:r.round(Ve*100),v:r.round(ae*100),a:te.a}}function Je(te){let ge=/^((rgba)|rgb)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i,_e,ze;return i.fillStyle="#000",i.fillStyle=te,_e=ge.exec(i.fillStyle),_e?ze={r:_e[3]*1,g:_e[4]*1,b:_e[5]*1,a:_e[6]*1}:(_e=i.fillStyle.replace("#","").match(/.{2}/g).map(Pe=>parseInt(Pe,16)),ze={r:_e[0],g:_e[1],b:_e[2],a:1}),ze}function He(te){let ge=te.r.toString(16),_e=te.g.toString(16),ze=te.b.toString(16),Pe="";if(te.r<16&&(ge="0"+ge),te.g<16&&(_e="0"+_e),te.b<16&&(ze="0"+ze),O.alpha&&(te.a<1||O.forceAlpha)){let $e=te.a*255|0;Pe=$e.toString(16),$e<16&&(Pe="0"+Pe)}return"#"+ge+_e+ze+Pe}function it(te){return!O.alpha||te.a===1&&!O.forceAlpha?"rgb("+te.r+", "+te.g+", "+te.b+")":"rgba("+te.r+", "+te.g+", "+te.b+", "+te.a+")"}function ct(te){return!O.alpha||te.a===1&&!O.forceAlpha?"hsl("+te.h+", "+te.s+"%, "+te.l+"%)":"hsla("+te.h+", "+te.s+"%, "+te.l+"%, "+te.a+")"}function rt(){t.getElementById("clr-picker")||(l=n,s=t.createElement("div"),s.setAttribute("id","clr-picker"),s.className="clr-picker",s.innerHTML=''+('
    ')+'
    '+('')+'
    '+('')+'
    '+(""+O.a11y.format+"")+'
    '+('")+'
    '+('")+"
    "+('")+('"),t.body.appendChild(s),a=Rt("clr-color-area"),u=Rt("clr-color-marker"),h=Rt("clr-clear"),g=Rt("clr-close"),f=Rt("clr-color-preview"),p=Rt("clr-color-value"),x=Rt("clr-hue-slider"),v=Rt("clr-hue-marker"),S=Rt("clr-alpha-slider"),D=Rt("clr-alpha-marker"),H(O.el),pe(O.el),vt(s,"mousedown",te=>{s.classList.remove("clr-keyboard-nav"),te.stopPropagation()}),vt(a,"mousedown",te=>{vt(t,"mousemove",fe)}),vt(a,"contextmenu",te=>{te.preventDefault()}),vt(a,"touchstart",te=>{t.addEventListener("touchmove",fe,{passive:!1})}),vt(u,"mousedown",te=>{vt(t,"mousemove",fe)}),vt(u,"touchstart",te=>{t.addEventListener("touchmove",fe,{passive:!1})}),vt(p,"change",te=>{let ge=p.value;if(C||O.inline){let _e=ge===""?ge:ve(ge);De(_e)}}),vt(h,"click",te=>{De(""),oe()}),vt(g,"click",te=>{De(),oe()}),vt(Rt("clr-format"),"click",".clr-format input",te=>{E=te.target.value,Ue(),De()}),vt(s,"click",".clr-swatches button",te=>{ve(te.target.textContent),De(),O.swatchesOnly&&oe()}),vt(t,"mouseup",te=>{t.removeEventListener("mousemove",fe)}),vt(t,"touchend",te=>{t.removeEventListener("touchmove",fe)}),vt(t,"mousedown",te=>{T=!1,s.classList.remove("clr-keyboard-nav"),oe()}),vt(t,"keydown",te=>{let ge=te.key,_e=te.target,ze=te.shiftKey;if(ge==="Escape"?oe(!0):["Tab","ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(ge)&&(T=!0,s.classList.add("clr-keyboard-nav")),ge==="Tab"&&_e.matches(".clr-picker *")){let $e=At(),W=$e.shift(),ae=$e.pop();ze&&_e===W?(ae.focus(),te.preventDefault()):!ze&&_e===ae&&(W.focus(),te.preventDefault())}}),vt(t,"click",".clr-field button",te=>{L&&U(),te.target.nextElementSibling.dispatchEvent(new Event("click",{bubbles:!0}))}),vt(u,"keydown",te=>{let ge={ArrowUp:[0,-1],ArrowDown:[0,1],ArrowLeft:[-1,0],ArrowRight:[1,0]};Object.keys(ge).includes(te.key)&&(Fe(...ge[te.key]),te.preventDefault())}),vt(a,"click",fe),vt(x,"input",Re),vt(S,"input",ie))}function At(){return Array.from(s.querySelectorAll("input, button")).filter(_e=>!!_e.offsetWidth)}function Rt(te){return t.getElementById(te)}function vt(te,ge,_e,ze){let Pe=Element.prototype.matches||Element.prototype.msMatchesSelector;typeof _e=="string"?te.addEventListener(ge,$e=>{Pe.call($e.target,_e)&&ze.call($e.target,$e)}):(ze=_e,te.addEventListener(ge,ze))}function nr(te,ge){ge=ge!==n?ge:[],t.readyState!=="loading"?te(...ge):t.addEventListener("DOMContentLoaded",()=>{te(...ge)})}NodeList!==n&&NodeList.prototype&&!NodeList.prototype.forEach&&(NodeList.prototype.forEach=Array.prototype.forEach);function qt(te,ge){C=ge,M=C.value,X(ge),E=Oe(te),Z(),ve(te),De(),M!==te&&C.dispatchEvent(new Event("change",{bubbles:!0}))}let xe=(()=>{let te={init:rt,set:q,wrap:pe,close:oe,setInstance:R,setColor:qt,removeInstance:V,updatePosition:Z,ready:nr};function ge(_e){nr(()=>{_e&&(typeof _e=="string"?H(_e):q(_e))})}for(let _e in te)ge[_e]=function(){for(var ze=arguments.length,Pe=new Array(ze),$e=0;$e{e.addEventListener("resize",_e=>{ge.updatePosition()}),e.addEventListener("scroll",_e=>{ge.updatePosition()})}),ge})();return xe.coloris=xe,xe})(window,document,Math)})(),yCe=Sl.coloris,wCe=Sl.init,bCe=Sl.set,DCe=Sl.wrap,SCe=Sl.close,NCe=Sl.setInstance,ECe=Sl.removeInstance,ACe=Sl.updatePosition,o1=Sl;var aE=mn(oE(),1);function ire(){ke.colors=bt.get("colors"),aE.default.observableDiff(ke.colors,gi.defaults,e=>{e.kind!=="E"&&(aE.default.applyChange(ke.colors,gi.defaults,e),bt.set("colors",ke.colors))})}function Zm(){uo(".colorInput").forEach(t=>{let r=t.value===gi.defaults[t.dataset.class][t.dataset.theme];t.style.borderLeft=r?Kg()==="light"?"1px solid #eaeaea":"1px solid #666666":"2px solid #dd9359"})}var dp,gi={defaults:{answer:{title:"Answers",class:".output",dark:"#1eb5f0",light:"#17586b"},comment:{title:"Comments",class:".cm-comment",dark:"#5a5a5a",light:"#bebebe"},constant:{title:"Constants",class:".cm-constant",dark:"#eaa1f6",light:"#9c27b0"},currency:{title:"Currencies",class:".cm-currency",dark:"#009688",light:"#009688"},error:{title:"Errors",class:".lineError, .lineError:hover, .lineError > div, .lineNoError > div",dark:"#d41111",light:"#b10e0e"},excel:{title:"Excel",class:".cm-excel",dark:"#3cc383",light:"#197b43"},function:{title:"Functions",class:".cm-formulajs, .cm-function, .cm-udf",dark:"#cb82f5",light:"#6f42c1"},keyword:{title:"Keywords",class:".cm-keyword, .cm-lineNo",dark:"#be6317",light:"#be6317"},number:{title:"Numbers",class:".cm-number",dark:"#e6e6e6",light:"#333333"},operator:{title:"Operators",class:".cm-operator",dark:"#bbbbbb",light:"#888888"},text:{title:"Text",class:".cm-text",dark:"#e6e6e6",light:"#333333"},unit:{title:"Units",class:".cm-unit, .cm-udu",dark:"#4d87c9",light:"#005cc5"},variable:{title:"Variables",class:".cm-variable",dark:"#96b4c4",light:"#57707c"}},initialize:()=>{bt.get("colors")?ire():bt.set("colors",gi.defaults),ke.colors=bt.get("colors"),uo(".colorInput").forEach(t=>{t.value=ke.colors[t.dataset.class][t.dataset.theme],t.addEventListener("click",r=>{dp=r.target,Zm()})}),o1.init(),o1({el:".colorInput",parent:"#dialog-theme",alpha:!1,onChange:()=>{Zm(),gi.save()}}),o1.ready(()=>{let t=document.getElementById("clr-color-value"),r=document.createElement("a");t.after(r),r.setAttribute("title","Reset color"),r.classList.add("clr-custom-reset"),r.innerHTML='',r.addEventListener("click",()=>{dp.value=gi.defaults[dp.dataset.class][dp.dataset.theme],dp.dispatchEvent(new Event("input",{bubbles:!0})),Le("#clr-color-value").value=gi.defaults[dp.dataset.class][dp.dataset.theme],Le("#clr-color-value").dispatchEvent(new Event("change")),Zm(),gi.save()}),Pf()})},apply:()=>{let e=Kg(),t="";ke.colors=bt.get("colors"),Object.values(ke.colors).forEach(r=>{t+=r.class+" { color: "+r[e]+`; } +`}),Le("#colorSheet").innerHTML=t},save:()=>{uo(".colorInput").forEach(t=>{ke.colors[t.dataset.class][t.dataset.theme]=t.value}),bt.set("colors",ke.colors),gi.apply()},reset:()=>{bt.set("colors",gi.defaults),ke.colors=bt.get("colors"),uo(".colorInput").forEach(t=>{t.value=gi.defaults[t.dataset.class][t.dataset.theme],t.dispatchEvent(new Event("input",{bubbles:!0}))}),Zm(),gi.apply()}};Le("#customizeThemeButton").addEventListener("click",()=>{Ho.show("#dialog-theme")});Le("#resetColorsButton").addEventListener("click",()=>{Rf("This will reset all colors to their default values",()=>{gi.reset()})});var Nl=class extends Error{},a1=class extends Nl{constructor(t){super(`Invalid DateTime: ${t.toMessage()}`)}},s1=class extends Nl{constructor(t){super(`Invalid Interval: ${t.toMessage()}`)}},u1=class extends Nl{constructor(t){super(`Invalid Duration: ${t.toMessage()}`)}},Cs=class extends Nl{},Xm=class extends Nl{constructor(t){super(`Invalid unit ${t}`)}},Vn=class extends Nl{},Ms=class extends Nl{constructor(){super("Zone is an abstract class")}};var Tt="numeric",Ts="short",da="long",qf={year:Tt,month:Tt,day:Tt},Jg={year:Tt,month:Ts,day:Tt},sE={year:Tt,month:Ts,day:Tt,weekday:Ts},Qg={year:Tt,month:da,day:Tt},jg={year:Tt,month:da,day:Tt,weekday:da},ev={hour:Tt,minute:Tt},tv={hour:Tt,minute:Tt,second:Tt},rv={hour:Tt,minute:Tt,second:Tt,timeZoneName:Ts},nv={hour:Tt,minute:Tt,second:Tt,timeZoneName:da},iv={hour:Tt,minute:Tt,hourCycle:"h23"},ov={hour:Tt,minute:Tt,second:Tt,hourCycle:"h23"},av={hour:Tt,minute:Tt,second:Tt,hourCycle:"h23",timeZoneName:Ts},sv={hour:Tt,minute:Tt,second:Tt,hourCycle:"h23",timeZoneName:da},uv={year:Tt,month:Tt,day:Tt,hour:Tt,minute:Tt},lv={year:Tt,month:Tt,day:Tt,hour:Tt,minute:Tt,second:Tt},fv={year:Tt,month:Ts,day:Tt,hour:Tt,minute:Tt},cv={year:Tt,month:Ts,day:Tt,hour:Tt,minute:Tt,second:Tt},uE={year:Tt,month:Ts,day:Tt,weekday:Ts,hour:Tt,minute:Tt},pv={year:Tt,month:da,day:Tt,hour:Tt,minute:Tt,timeZoneName:Ts},mv={year:Tt,month:da,day:Tt,hour:Tt,minute:Tt,second:Tt,timeZoneName:Ts},dv={year:Tt,month:da,day:Tt,weekday:da,hour:Tt,minute:Tt,timeZoneName:da},hv={year:Tt,month:da,day:Tt,weekday:da,hour:Tt,minute:Tt,second:Tt,timeZoneName:da};var $o=class{get type(){throw new Ms}get name(){throw new Ms}get ianaName(){return this.name}get isUniversal(){throw new Ms}offsetName(t,r){throw new Ms}formatOffset(t,r){throw new Ms}offset(t){throw new Ms}equals(t){throw new Ms}get isValid(){throw new Ms}};var lE=null,zf=class e extends $o{static get instance(){return lE===null&&(lE=new e),lE}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(t,{format:r,locale:n}){return f1(t,r,n)}formatOffset(t,r){return Uf(this.offset(t),r)}offset(t){return-new Date(t).getTimezoneOffset()}equals(t){return t.type==="system"}get isValid(){return!0}};var p1={};function ore(e){return p1[e]||(p1[e]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:e,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),p1[e]}var are={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function sre(e,t){let r=e.format(t).replace(/\u200E/g,""),n=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(r),[,i,o,l,s,a,u,f]=n;return[l,i,o,s,a,u,f]}function ure(e,t){let r=e.formatToParts(t),n=[];for(let i=0;i=0?x:1e3+x,(h-g)/(60*1e3)}equals(t){return t.type==="iana"&&t.name===this.name}get isValid(){return this.valid}};var e3={};function lre(e,t={}){let r=JSON.stringify([e,t]),n=e3[r];return n||(n=new Intl.ListFormat(e,t),e3[r]=n),n}var fE={};function cE(e,t={}){let r=JSON.stringify([e,t]),n=fE[r];return n||(n=new Intl.DateTimeFormat(e,t),fE[r]=n),n}var pE={};function fre(e,t={}){let r=JSON.stringify([e,t]),n=pE[r];return n||(n=new Intl.NumberFormat(e,t),pE[r]=n),n}var mE={};function cre(e,t={}){let{base:r,...n}=t,i=JSON.stringify([e,n]),o=mE[i];return o||(o=new Intl.RelativeTimeFormat(e,t),mE[i]=o),o}var gv=null;function pre(){return gv||(gv=new Intl.DateTimeFormat().resolvedOptions().locale,gv)}var t3={};function mre(e){let t=t3[e];if(!t){let r=new Intl.Locale(e);t="getWeekInfo"in r?r.getWeekInfo():r.weekInfo,t3[e]=t}return t}function dre(e){let t=e.indexOf("-x-");t!==-1&&(e=e.substring(0,t));let r=e.indexOf("-u-");if(r===-1)return[e];{let n,i;try{n=cE(e).resolvedOptions(),i=e}catch{let a=e.substring(0,r);n=cE(a).resolvedOptions(),i=a}let{numberingSystem:o,calendar:l}=n;return[i,o,l]}}function hre(e,t,r){return(r||t)&&(e.includes("-u-")||(e+="-u"),r&&(e+=`-ca-${r}`),t&&(e+=`-nu-${t}`)),e}function gre(e){let t=[];for(let r=1;r<=12;r++){let n=vr.utc(2009,r,1);t.push(e(n))}return t}function vre(e){let t=[];for(let r=1;r<=7;r++){let n=vr.utc(2016,11,13+r);t.push(e(n))}return t}function m1(e,t,r,n){let i=e.listingMode();return i==="error"?null:i==="en"?r(t):n(t)}function xre(e){return e.numberingSystem&&e.numberingSystem!=="latn"?!1:e.numberingSystem==="latn"||!e.locale||e.locale.startsWith("en")||new Intl.DateTimeFormat(e.intl).resolvedOptions().numberingSystem==="latn"}var dE=class{constructor(t,r,n){this.padTo=n.padTo||0,this.floor=n.floor||!1;let{padTo:i,floor:o,...l}=n;if(!r||Object.keys(l).length>0){let s={useGrouping:!1,...n};n.padTo>0&&(s.minimumIntegerDigits=n.padTo),this.inf=fre(t,s)}}format(t){if(this.inf){let r=this.floor?Math.floor(t):t;return this.inf.format(r)}else{let r=this.floor?Math.floor(t):Jm(t,3);return Pn(r,this.padTo)}}},hE=class{constructor(t,r,n){this.opts=n,this.originalZone=void 0;let i;if(this.opts.timeZone)this.dt=t;else if(t.zone.type==="fixed"){let l=-1*(t.offset/60),s=l>=0?`Etc/GMT+${l}`:`Etc/GMT${l}`;t.offset!==0&&lo.create(s).valid?(i=s,this.dt=t):(i="UTC",this.dt=t.offset===0?t:t.setZone("UTC").plus({minutes:t.offset}),this.originalZone=t.zone)}else t.zone.type==="system"?this.dt=t:t.zone.type==="iana"?(this.dt=t,i=t.zone.name):(i="UTC",this.dt=t.setZone("UTC").plus({minutes:t.offset}),this.originalZone=t.zone);let o={...this.opts};o.timeZone=o.timeZone||i,this.dtf=cE(r,o)}format(){return this.originalZone?this.formatToParts().map(({value:t})=>t).join(""):this.dtf.format(this.dt.toJSDate())}formatToParts(){let t=this.dtf.formatToParts(this.dt.toJSDate());return this.originalZone?t.map(r=>{if(r.type==="timeZoneName"){let n=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...r,value:n}}else return r}):t}resolvedOptions(){return this.dtf.resolvedOptions()}},gE=class{constructor(t,r,n){this.opts={style:"long",...n},!r&&d1()&&(this.rtf=cre(t,n))}format(t,r){return this.rtf?this.rtf.format(t,r):r3(r,t,this.opts.numeric,this.opts.style!=="long")}formatToParts(t,r){return this.rtf?this.rtf.formatToParts(t,r):[]}},yre={firstDay:1,minimalDays:4,weekend:[6,7]},qr=class e{static fromOpts(t){return e.create(t.locale,t.numberingSystem,t.outputCalendar,t.weekSettings,t.defaultToEN)}static create(t,r,n,i,o=!1){let l=t||Rr.defaultLocale,s=l||(o?"en-US":pre()),a=r||Rr.defaultNumberingSystem,u=n||Rr.defaultOutputCalendar,f=vv(i)||Rr.defaultWeekSettings;return new e(s,a,u,f,l)}static resetCache(){gv=null,fE={},pE={},mE={}}static fromObject({locale:t,numberingSystem:r,outputCalendar:n,weekSettings:i}={}){return e.create(t,r,n,i)}constructor(t,r,n,i,o){let[l,s,a]=dre(t);this.locale=l,this.numberingSystem=r||s||null,this.outputCalendar=n||a||null,this.weekSettings=i,this.intl=hre(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=o,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached==null&&(this.fastNumbersCached=xre(this)),this.fastNumbersCached}listingMode(){let t=this.isEnglish(),r=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return t&&r?"en":"intl"}clone(t){return!t||Object.getOwnPropertyNames(t).length===0?this:e.create(t.locale||this.specifiedLocale,t.numberingSystem||this.numberingSystem,t.outputCalendar||this.outputCalendar,vv(t.weekSettings)||this.weekSettings,t.defaultToEN||!1)}redefaultToEN(t={}){return this.clone({...t,defaultToEN:!0})}redefaultToSystem(t={}){return this.clone({...t,defaultToEN:!1})}months(t,r=!1){return m1(this,t,vE,()=>{let n=r?{month:t,day:"numeric"}:{month:t},i=r?"format":"standalone";return this.monthsCache[i][t]||(this.monthsCache[i][t]=gre(o=>this.extract(o,n,"month"))),this.monthsCache[i][t]})}weekdays(t,r=!1){return m1(this,t,xE,()=>{let n=r?{weekday:t,year:"numeric",month:"long",day:"numeric"}:{weekday:t},i=r?"format":"standalone";return this.weekdaysCache[i][t]||(this.weekdaysCache[i][t]=vre(o=>this.extract(o,n,"weekday"))),this.weekdaysCache[i][t]})}meridiems(){return m1(this,void 0,()=>yE,()=>{if(!this.meridiemCache){let t={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[vr.utc(2016,11,13,9),vr.utc(2016,11,13,19)].map(r=>this.extract(r,t,"dayperiod"))}return this.meridiemCache})}eras(t){return m1(this,t,wE,()=>{let r={era:t};return this.eraCache[t]||(this.eraCache[t]=[vr.utc(-40,1,1),vr.utc(2017,1,1)].map(n=>this.extract(n,r,"era"))),this.eraCache[t]})}extract(t,r,n){let i=this.dtFormatter(t,r),o=i.formatToParts(),l=o.find(s=>s.type.toLowerCase()===n);return l?l.value:null}numberFormatter(t={}){return new dE(this.intl,t.forceSimple||this.fastNumbers,t)}dtFormatter(t,r={}){return new hE(t,this.intl,r)}relFormatter(t={}){return new gE(this.intl,this.isEnglish(),t)}listFormatter(t={}){return lre(this.intl,t)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}getWeekSettings(){return this.weekSettings?this.weekSettings:h1()?mre(this.locale):yre}getStartOfWeek(){return this.getWeekSettings().firstDay}getMinDaysInFirstWeek(){return this.getWeekSettings().minimalDays}getWeekendDays(){return this.getWeekSettings().weekend}equals(t){return this.locale===t.locale&&this.numberingSystem===t.numberingSystem&&this.outputCalendar===t.outputCalendar}toString(){return`Locale(${this.locale}, ${this.numberingSystem}, ${this.outputCalendar})`}};var DE=null,Fi=class e extends $o{static get utcInstance(){return DE===null&&(DE=new e(0)),DE}static instance(t){return t===0?e.utcInstance:new e(t)}static parseSpecifier(t){if(t){let r=t.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(r)return new e(hp(r[1],r[2]))}return null}constructor(t){super(),this.fixed=t}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${Uf(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${Uf(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(t,r){return Uf(this.fixed,r)}get isUniversal(){return!0}offset(){return this.fixed}equals(t){return t.type==="fixed"&&t.fixed===this.fixed}get isValid(){return!0}};var Qm=class extends $o{constructor(t){super(),this.zoneName=t}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}};function _s(e,t){let r;if(Jt(e)||e===null)return t;if(e instanceof $o)return e;if(n3(e)){let n=e.toLowerCase();return n==="default"?t:n==="local"||n==="system"?zf.instance:n==="utc"||n==="gmt"?Fi.utcInstance:Fi.parseSpecifier(n)||lo.create(e)}else return Os(e)?Fi.instance(e):typeof e=="object"&&"offset"in e&&typeof e.offset=="function"?e:new Qm(e)}var SE={arab:"[\u0660-\u0669]",arabext:"[\u06F0-\u06F9]",bali:"[\u1B50-\u1B59]",beng:"[\u09E6-\u09EF]",deva:"[\u0966-\u096F]",fullwide:"[\uFF10-\uFF19]",gujr:"[\u0AE6-\u0AEF]",hanidec:"[\u3007|\u4E00|\u4E8C|\u4E09|\u56DB|\u4E94|\u516D|\u4E03|\u516B|\u4E5D]",khmr:"[\u17E0-\u17E9]",knda:"[\u0CE6-\u0CEF]",laoo:"[\u0ED0-\u0ED9]",limb:"[\u1946-\u194F]",mlym:"[\u0D66-\u0D6F]",mong:"[\u1810-\u1819]",mymr:"[\u1040-\u1049]",orya:"[\u0B66-\u0B6F]",tamldec:"[\u0BE6-\u0BEF]",telu:"[\u0C66-\u0C6F]",thai:"[\u0E50-\u0E59]",tibt:"[\u0F20-\u0F29]",latn:"\\d"},i3={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},wre=SE.hanidec.replace(/[\[|\]]/g,"").split("");function o3(e){let t=parseInt(e,10);if(isNaN(t)){t="";for(let r=0;r=o&&n<=l&&(t+=n-o)}}return parseInt(t,10)}else return t}var jm={};function a3(){jm={}}function Ua({numberingSystem:e},t=""){let r=e||"latn";return jm[r]||(jm[r]={}),jm[r][t]||(jm[r][t]=new RegExp(`${SE[r]}${t}`)),jm[r][t]}var s3=()=>Date.now(),u3="system",l3=null,f3=null,c3=null,p3=60,m3,d3=null,Rr=class{static get now(){return s3}static set now(t){s3=t}static set defaultZone(t){u3=t}static get defaultZone(){return _s(u3,zf.instance)}static get defaultLocale(){return l3}static set defaultLocale(t){l3=t}static get defaultNumberingSystem(){return f3}static set defaultNumberingSystem(t){f3=t}static get defaultOutputCalendar(){return c3}static set defaultOutputCalendar(t){c3=t}static get defaultWeekSettings(){return d3}static set defaultWeekSettings(t){d3=vv(t)}static get twoDigitCutoffYear(){return p3}static set twoDigitCutoffYear(t){p3=t%100}static get throwOnInvalid(){return m3}static set throwOnInvalid(t){m3=t}static resetCaches(){qr.resetCache(),lo.resetCache(),vr.resetCache(),a3()}};var Ii=class{constructor(t,r){this.reason=t,this.explanation=r}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}};var h3=[0,31,59,90,120,151,181,212,243,273,304,334],g3=[0,31,60,91,121,152,182,213,244,274,305,335];function Ha(e,t){return new Ii("unit out of range",`you specified ${t} (of type ${typeof t}) as a ${e}, which is invalid`)}function g1(e,t,r){let n=new Date(Date.UTC(e,t-1,r));e<100&&e>=0&&n.setUTCFullYear(n.getUTCFullYear()-1900);let i=n.getUTCDay();return i===0?7:i}function v3(e,t,r){return r+(vp(e)?g3:h3)[t-1]}function x3(e,t){let r=vp(e)?g3:h3,n=r.findIndex(o=>ogp(n,t,r)?(u=n+1,a=1):u=n,{weekYear:u,weekNumber:a,weekday:s,...wv(e)}}function NE(e,t=4,r=1){let{weekYear:n,weekNumber:i,weekday:o}=e,l=v1(g1(n,1,t),r),s=Hf(n),a=i*7+o-l-7+t,u;a<1?(u=n-1,a+=Hf(u)):a>s?(u=n+1,a-=Hf(n)):u=n;let{month:f,day:p}=x3(u,a);return{year:u,month:f,day:p,...wv(e)}}function x1(e){let{year:t,month:r,day:n}=e,i=v3(t,r,n);return{year:t,ordinal:i,...wv(e)}}function EE(e){let{year:t,ordinal:r}=e,{month:n,day:i}=x3(t,r);return{year:t,month:n,day:i,...wv(e)}}function AE(e,t){if(!Jt(e.localWeekday)||!Jt(e.localWeekNumber)||!Jt(e.localWeekYear)){if(!Jt(e.weekday)||!Jt(e.weekNumber)||!Jt(e.weekYear))throw new Cs("Cannot mix locale-based week fields with ISO-based week fields");return Jt(e.localWeekday)||(e.weekday=e.localWeekday),Jt(e.localWeekNumber)||(e.weekNumber=e.localWeekNumber),Jt(e.localWeekYear)||(e.weekYear=e.localWeekYear),delete e.localWeekday,delete e.localWeekNumber,delete e.localWeekYear,{minDaysInFirstWeek:t.getMinDaysInFirstWeek(),startOfWeek:t.getStartOfWeek()}}else return{minDaysInFirstWeek:4,startOfWeek:1}}function y3(e,t=4,r=1){let n=yv(e.weekYear),i=ha(e.weekNumber,1,gp(e.weekYear,t,r)),o=ha(e.weekday,1,7);return n?i?o?!1:Ha("weekday",e.weekday):Ha("week",e.weekNumber):Ha("weekYear",e.weekYear)}function w3(e){let t=yv(e.year),r=ha(e.ordinal,1,Hf(e.year));return t?r?!1:Ha("ordinal",e.ordinal):Ha("year",e.year)}function CE(e){let t=yv(e.year),r=ha(e.month,1,12),n=ha(e.day,1,ed(e.year,e.month));return t?r?n?!1:Ha("day",e.day):Ha("month",e.month):Ha("year",e.year)}function ME(e){let{hour:t,minute:r,second:n,millisecond:i}=e,o=ha(t,0,23)||t===24&&r===0&&n===0&&i===0,l=ha(r,0,59),s=ha(n,0,59),a=ha(i,0,999);return o?l?s?a?!1:Ha("millisecond",i):Ha("second",n):Ha("minute",r):Ha("hour",t)}function Jt(e){return typeof e>"u"}function Os(e){return typeof e=="number"}function yv(e){return typeof e=="number"&&e%1===0}function n3(e){return typeof e=="string"}function D3(e){return Object.prototype.toString.call(e)==="[object Date]"}function d1(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function h1(){try{return typeof Intl<"u"&&!!Intl.Locale&&("weekInfo"in Intl.Locale.prototype||"getWeekInfo"in Intl.Locale.prototype)}catch{return!1}}function S3(e){return Array.isArray(e)?e:[e]}function TE(e,t,r){if(e.length!==0)return e.reduce((n,i)=>{let o=[t(i),i];return n&&r(n[0],o[0])===n[0]?n:o},null)[1]}function N3(e,t){return t.reduce((r,n)=>(r[n]=e[n],r),{})}function $f(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function vv(e){if(e==null)return null;if(typeof e!="object")throw new Vn("Week settings must be an object");if(!ha(e.firstDay,1,7)||!ha(e.minimalDays,1,7)||!Array.isArray(e.weekend)||e.weekend.some(t=>!ha(t,1,7)))throw new Vn("Invalid week settings");return{firstDay:e.firstDay,minimalDays:e.minimalDays,weekend:Array.from(e.weekend)}}function ha(e,t,r){return yv(e)&&e>=t&&e<=r}function bre(e,t){return e-t*Math.floor(e/t)}function Pn(e,t=2){let r=e<0,n;return r?n="-"+(""+-e).padStart(t,"0"):n=(""+e).padStart(t,"0"),n}function El(e){if(!(Jt(e)||e===null||e===""))return parseInt(e,10)}function Wf(e){if(!(Jt(e)||e===null||e===""))return parseFloat(e)}function bv(e){if(!(Jt(e)||e===null||e==="")){let t=parseFloat("0."+e)*1e3;return Math.floor(t)}}function Jm(e,t,r=!1){let n=10**t;return(r?Math.trunc:Math.round)(e*n)/n}function vp(e){return e%4===0&&(e%100!==0||e%400===0)}function Hf(e){return vp(e)?366:365}function ed(e,t){let r=bre(t-1,12)+1,n=e+(t-r)/12;return r===2?vp(n)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][r-1]}function Km(e){let t=Date.UTC(e.year,e.month-1,e.day,e.hour,e.minute,e.second,e.millisecond);return e.year<100&&e.year>=0&&(t=new Date(t),t.setUTCFullYear(e.year,e.month-1,e.day)),+t}function b3(e,t,r){return-v1(g1(e,1,t),r)+t-1}function gp(e,t=4,r=1){let n=b3(e,t,r),i=b3(e+1,t,r);return(Hf(e)-n+i)/7}function Dv(e){return e>99?e:e>Rr.twoDigitCutoffYear?1900+e:2e3+e}function f1(e,t,r,n=null){let i=new Date(e),o={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};n&&(o.timeZone=n);let l={timeZoneName:t,...o},s=new Intl.DateTimeFormat(r,l).formatToParts(i).find(a=>a.type.toLowerCase()==="timezonename");return s?s.value:null}function hp(e,t){let r=parseInt(e,10);Number.isNaN(r)&&(r=0);let n=parseInt(t,10)||0,i=r<0||Object.is(r,-0)?-n:n;return r*60+i}function _E(e){let t=Number(e);if(typeof e=="boolean"||e===""||Number.isNaN(t))throw new Vn(`Invalid unit value ${e}`);return t}function td(e,t){let r={};for(let n in e)if($f(e,n)){let i=e[n];if(i==null)continue;r[t(n)]=_E(i)}return r}function Uf(e,t){let r=Math.trunc(Math.abs(e/60)),n=Math.trunc(Math.abs(e%60)),i=e>=0?"+":"-";switch(t){case"short":return`${i}${Pn(r,2)}:${Pn(n,2)}`;case"narrow":return`${i}${r}${n>0?`:${n}`:""}`;case"techie":return`${i}${Pn(r,2)}${Pn(n,2)}`;default:throw new RangeError(`Value format ${t} is out of range for property format`)}}function wv(e){return N3(e,["hour","minute","second","millisecond"])}var Dre=["January","February","March","April","May","June","July","August","September","October","November","December"],OE=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Sre=["J","F","M","A","M","J","J","A","S","O","N","D"];function vE(e){switch(e){case"narrow":return[...Sre];case"short":return[...OE];case"long":return[...Dre];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}var FE=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],IE=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],Nre=["M","T","W","T","F","S","S"];function xE(e){switch(e){case"narrow":return[...Nre];case"short":return[...IE];case"long":return[...FE];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}var yE=["AM","PM"],Ere=["Before Christ","Anno Domini"],Are=["BC","AD"],Cre=["B","A"];function wE(e){switch(e){case"narrow":return[...Cre];case"short":return[...Are];case"long":return[...Ere];default:return null}}function E3(e){return yE[e.hour<12?0:1]}function A3(e,t){return xE(t)[e.weekday-1]}function C3(e,t){return vE(t)[e.month-1]}function M3(e,t){return wE(t)[e.year<0?0:1]}function r3(e,t,r="always",n=!1){let i={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},o=["hours","minutes","seconds"].indexOf(e)===-1;if(r==="auto"&&o){let p=e==="days";switch(t){case 1:return p?"tomorrow":`next ${i[e][0]}`;case-1:return p?"yesterday":`last ${i[e][0]}`;case 0:return p?"today":`this ${i[e][0]}`;default:}}let l=Object.is(t,-0)||t<0,s=Math.abs(t),a=s===1,u=i[e],f=n?a?u[1]:u[2]||u[1]:a?i[e][0]:e;return l?`${s} ${f} ago`:`in ${s} ${f}`}function T3(e,t){let r="";for(let n of e)n.literal?r+=n.val:r+=t(n.val);return r}var Mre={D:qf,DD:Jg,DDD:Qg,DDDD:jg,t:ev,tt:tv,ttt:rv,tttt:nv,T:iv,TT:ov,TTT:av,TTTT:sv,f:uv,ff:fv,fff:pv,ffff:dv,F:lv,FF:cv,FFF:mv,FFFF:hv},ki=class e{static create(t,r={}){return new e(t,r)}static parseFormat(t){let r=null,n="",i=!1,o=[];for(let l=0;l0&&o.push({literal:i||/^\s+$/.test(n),val:n}),r=null,n="",i=!i):i||s===r?n+=s:(n.length>0&&o.push({literal:/^\s+$/.test(n),val:n}),n=s,r=s)}return n.length>0&&o.push({literal:i||/^\s+$/.test(n),val:n}),o}static macroTokenToFormatOpts(t){return Mre[t]}constructor(t,r){this.opts=r,this.loc=t,this.systemLoc=null}formatWithSystemDefault(t,r){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(t,{...this.opts,...r}).format()}dtFormatter(t,r={}){return this.loc.dtFormatter(t,{...this.opts,...r})}formatDateTime(t,r){return this.dtFormatter(t,r).format()}formatDateTimeParts(t,r){return this.dtFormatter(t,r).formatToParts()}formatInterval(t,r){return this.dtFormatter(t.start,r).dtf.formatRange(t.start.toJSDate(),t.end.toJSDate())}resolvedOptions(t,r){return this.dtFormatter(t,r).resolvedOptions()}num(t,r=0){if(this.opts.forceSimple)return Pn(t,r);let n={...this.opts};return r>0&&(n.padTo=r),this.loc.numberFormatter(n).format(t)}formatDateTimeFromString(t,r){let n=this.loc.listingMode()==="en",i=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",o=(g,x)=>this.loc.extract(t,g,x),l=g=>t.isOffsetFixed&&t.offset===0&&g.allowZ?"Z":t.isValid?t.zone.formatOffset(t.ts,g.format):"",s=()=>n?E3(t):o({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(g,x)=>n?C3(t,g):o(x?{month:g}:{month:g,day:"numeric"},"month"),u=(g,x)=>n?A3(t,g):o(x?{weekday:g}:{weekday:g,month:"long",day:"numeric"},"weekday"),f=g=>{let x=e.macroTokenToFormatOpts(g);return x?this.formatWithSystemDefault(t,x):g},p=g=>n?M3(t,g):o({era:g},"era"),h=g=>{switch(g){case"S":return this.num(t.millisecond);case"u":case"SSS":return this.num(t.millisecond,3);case"s":return this.num(t.second);case"ss":return this.num(t.second,2);case"uu":return this.num(Math.floor(t.millisecond/10),2);case"uuu":return this.num(Math.floor(t.millisecond/100));case"m":return this.num(t.minute);case"mm":return this.num(t.minute,2);case"h":return this.num(t.hour%12===0?12:t.hour%12);case"hh":return this.num(t.hour%12===0?12:t.hour%12,2);case"H":return this.num(t.hour);case"HH":return this.num(t.hour,2);case"Z":return l({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return l({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return l({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return t.zone.offsetName(t.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return t.zone.offsetName(t.ts,{format:"long",locale:this.loc.locale});case"z":return t.zoneName;case"a":return s();case"d":return i?o({day:"numeric"},"day"):this.num(t.day);case"dd":return i?o({day:"2-digit"},"day"):this.num(t.day,2);case"c":return this.num(t.weekday);case"ccc":return u("short",!0);case"cccc":return u("long",!0);case"ccccc":return u("narrow",!0);case"E":return this.num(t.weekday);case"EEE":return u("short",!1);case"EEEE":return u("long",!1);case"EEEEE":return u("narrow",!1);case"L":return i?o({month:"numeric",day:"numeric"},"month"):this.num(t.month);case"LL":return i?o({month:"2-digit",day:"numeric"},"month"):this.num(t.month,2);case"LLL":return a("short",!0);case"LLLL":return a("long",!0);case"LLLLL":return a("narrow",!0);case"M":return i?o({month:"numeric"},"month"):this.num(t.month);case"MM":return i?o({month:"2-digit"},"month"):this.num(t.month,2);case"MMM":return a("short",!1);case"MMMM":return a("long",!1);case"MMMMM":return a("narrow",!1);case"y":return i?o({year:"numeric"},"year"):this.num(t.year);case"yy":return i?o({year:"2-digit"},"year"):this.num(t.year.toString().slice(-2),2);case"yyyy":return i?o({year:"numeric"},"year"):this.num(t.year,4);case"yyyyyy":return i?o({year:"numeric"},"year"):this.num(t.year,6);case"G":return p("short");case"GG":return p("long");case"GGGGG":return p("narrow");case"kk":return this.num(t.weekYear.toString().slice(-2),2);case"kkkk":return this.num(t.weekYear,4);case"W":return this.num(t.weekNumber);case"WW":return this.num(t.weekNumber,2);case"n":return this.num(t.localWeekNumber);case"nn":return this.num(t.localWeekNumber,2);case"ii":return this.num(t.localWeekYear.toString().slice(-2),2);case"iiii":return this.num(t.localWeekYear,4);case"o":return this.num(t.ordinal);case"ooo":return this.num(t.ordinal,3);case"q":return this.num(t.quarter);case"qq":return this.num(t.quarter,2);case"X":return this.num(Math.floor(t.ts/1e3));case"x":return this.num(t.ts);default:return f(g)}};return T3(e.parseFormat(r),h)}formatDurationFromString(t,r){let n=a=>{switch(a[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},i=a=>u=>{let f=n(u);return f?this.num(a.get(f),u.length):u},o=e.parseFormat(r),l=o.reduce((a,{literal:u,val:f})=>u?a:a.concat(f),[]),s=t.shiftTo(...l.map(n).filter(a=>a));return T3(o,i(s))}};var O3=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function nd(...e){let t=e.reduce((r,n)=>r+n.source,"");return RegExp(`^${t}$`)}function id(...e){return t=>e.reduce(([r,n,i],o)=>{let[l,s,a]=o(t,i);return[{...r,...l},s||n,a]},[{},null,1]).slice(0,2)}function od(e,...t){if(e==null)return[null,null];for(let[r,n]of t){let i=r.exec(e);if(i)return n(i)}return[null,null]}function F3(...e){return(t,r)=>{let n={},i;for(i=0;ig!==void 0&&(x||g&&f)?-g:g;return[{years:h(Wf(r)),months:h(Wf(n)),weeks:h(Wf(i)),days:h(Wf(o)),hours:h(Wf(l)),minutes:h(Wf(s)),seconds:h(Wf(a),a==="-0"),milliseconds:h(bv(u),p)}]}var Ure={GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function BE(e,t,r,n,i,o,l){let s={year:t.length===2?Dv(El(t)):El(t),month:OE.indexOf(r)+1,day:El(n),hour:El(i),minute:El(o)};return l&&(s.second=El(l)),e&&(s.weekday=e.length>3?FE.indexOf(e)+1:IE.indexOf(e)+1),s}var Hre=/^(?:(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\d)(\d\d)))$/;function $re(e){let[,t,r,n,i,o,l,s,a,u,f,p]=e,h=BE(t,i,n,r,o,l,s),g;return a?g=Ure[a]:u?g=0:g=hp(f,p),[h,new Fi(g)]}function Wre(e){return e.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}var Vre=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,Gre=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,Yre=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function _3(e){let[,t,r,n,i,o,l,s]=e;return[BE(t,i,n,r,o,l,s),Fi.utcInstance]}function Zre(e){let[,t,r,n,i,o,l,s]=e;return[BE(t,s,r,n,i,o,l),Fi.utcInstance]}var Xre=nd(_re,LE),Kre=nd(Ore,LE),Jre=nd(Fre,LE),Qre=nd(k3),B3=id(Pre,ad,Sv,Nv),jre=id(Ire,ad,Sv,Nv),ene=id(kre,ad,Sv,Nv),tne=id(ad,Sv,Nv);function P3(e){return od(e,[Xre,B3],[Kre,jre],[Jre,ene],[Qre,tne])}function R3(e){return od(Wre(e),[Hre,$re])}function q3(e){return od(e,[Vre,_3],[Gre,_3],[Yre,Zre])}function z3(e){return od(e,[qre,zre])}var rne=id(ad);function U3(e){return od(e,[Rre,rne])}var nne=nd(Lre,Bre),ine=nd(L3),one=id(ad,Sv,Nv);function H3(e){return od(e,[nne,B3],[ine,one])}var $3="Invalid Duration",V3={weeks:{days:7,hours:7*24,minutes:7*24*60,seconds:7*24*60*60,milliseconds:7*24*60*60*1e3},days:{hours:24,minutes:24*60,seconds:24*60*60,milliseconds:24*60*60*1e3},hours:{minutes:60,seconds:60*60,milliseconds:60*60*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},ane={years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:91*24,minutes:91*24*60,seconds:91*24*60*60,milliseconds:91*24*60*60*1e3},months:{weeks:4,days:30,hours:30*24,minutes:30*24*60,seconds:30*24*60*60,milliseconds:30*24*60*60*1e3},...V3},$a=146097/400,sd=146097/4800,sne={years:{quarters:4,months:12,weeks:$a/7,days:$a,hours:$a*24,minutes:$a*24*60,seconds:$a*24*60*60,milliseconds:$a*24*60*60*1e3},quarters:{months:3,weeks:$a/28,days:$a/4,hours:$a*24/4,minutes:$a*24*60/4,seconds:$a*24*60*60/4,milliseconds:$a*24*60*60*1e3/4},months:{weeks:sd/7,days:sd,hours:sd*24,minutes:sd*24*60,seconds:sd*24*60*60,milliseconds:sd*24*60*60*1e3},...V3},xp=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],une=xp.slice(0).reverse();function Vf(e,t,r=!1){let n={values:r?t.values:{...e.values,...t.values||{}},loc:e.loc.clone(t.loc),conversionAccuracy:t.conversionAccuracy||e.conversionAccuracy,matrix:t.matrix||e.matrix};return new Rn(n)}function G3(e,t){let r=t.milliseconds??0;for(let n of une.slice(1))t[n]&&(r+=t[n]*e[n].milliseconds);return r}function W3(e,t){let r=G3(e,t)<0?-1:1;xp.reduceRight((n,i)=>{if(Jt(t[i]))return n;if(n){let o=t[n]*r,l=e[i][n],s=Math.floor(o/l);t[i]+=s*r,t[n]-=s*l*r}return i},null),xp.reduce((n,i)=>{if(Jt(t[i]))return n;if(n){let o=t[n]%1;t[n]-=o,t[i]+=o*e[n][i]}return i},null)}function lne(e){let t={};for(let[r,n]of Object.entries(e))n!==0&&(t[r]=n);return t}var Rn=class e{constructor(t){let r=t.conversionAccuracy==="longterm"||!1,n=r?sne:ane;t.matrix&&(n=t.matrix),this.values=t.values,this.loc=t.loc||qr.create(),this.conversionAccuracy=r?"longterm":"casual",this.invalid=t.invalid||null,this.matrix=n,this.isLuxonDuration=!0}static fromMillis(t,r){return e.fromObject({milliseconds:t},r)}static fromObject(t,r={}){if(t==null||typeof t!="object")throw new Vn(`Duration.fromObject: argument expected to be an object, got ${t===null?"null":typeof t}`);return new e({values:td(t,e.normalizeUnit),loc:qr.fromObject(r),conversionAccuracy:r.conversionAccuracy,matrix:r.matrix})}static fromDurationLike(t){if(Os(t))return e.fromMillis(t);if(e.isDuration(t))return t;if(typeof t=="object")return e.fromObject(t);throw new Vn(`Unknown duration argument ${t} of type ${typeof t}`)}static fromISO(t,r){let[n]=z3(t);return n?e.fromObject(n,r):e.invalid("unparsable",`the input "${t}" can't be parsed as ISO 8601`)}static fromISOTime(t,r){let[n]=U3(t);return n?e.fromObject(n,r):e.invalid("unparsable",`the input "${t}" can't be parsed as ISO 8601`)}static invalid(t,r=null){if(!t)throw new Vn("need to specify a reason the Duration is invalid");let n=t instanceof Ii?t:new Ii(t,r);if(Rr.throwOnInvalid)throw new u1(n);return new e({invalid:n})}static normalizeUnit(t){let r={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[t&&t.toLowerCase()];if(!r)throw new Xm(t);return r}static isDuration(t){return t&&t.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(t,r={}){let n={...r,floor:r.round!==!1&&r.floor!==!1};return this.isValid?ki.create(this.loc,n).formatDurationFromString(this,t):$3}toHuman(t={}){if(!this.isValid)return $3;let r=xp.map(n=>{let i=this.values[n];return Jt(i)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...t,unit:n.slice(0,-1)}).format(i)}).filter(n=>n);return this.loc.listFormatter({type:"conjunction",style:t.listStyle||"narrow",...t}).format(r)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let t="P";return this.years!==0&&(t+=this.years+"Y"),(this.months!==0||this.quarters!==0)&&(t+=this.months+this.quarters*3+"M"),this.weeks!==0&&(t+=this.weeks+"W"),this.days!==0&&(t+=this.days+"D"),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(t+="T"),this.hours!==0&&(t+=this.hours+"H"),this.minutes!==0&&(t+=this.minutes+"M"),(this.seconds!==0||this.milliseconds!==0)&&(t+=Jm(this.seconds+this.milliseconds/1e3,3)+"S"),t==="P"&&(t+="T0S"),t}toISOTime(t={}){if(!this.isValid)return null;let r=this.toMillis();return r<0||r>=864e5?null:(t={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...t,includeOffset:!1},vr.fromMillis(r,{zone:"UTC"}).toISOTime(t))}toJSON(){return this.toISO()}toString(){return this.toISO()}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Duration { values: ${JSON.stringify(this.values)} }`:`Duration { Invalid, reason: ${this.invalidReason} }`}toMillis(){return this.isValid?G3(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(t){if(!this.isValid)return this;let r=e.fromDurationLike(t),n={};for(let i of xp)($f(r.values,i)||$f(this.values,i))&&(n[i]=r.get(i)+this.get(i));return Vf(this,{values:n},!0)}minus(t){if(!this.isValid)return this;let r=e.fromDurationLike(t);return this.plus(r.negate())}mapUnits(t){if(!this.isValid)return this;let r={};for(let n of Object.keys(this.values))r[n]=_E(t(this.values[n],n));return Vf(this,{values:r},!0)}get(t){return this[e.normalizeUnit(t)]}set(t){if(!this.isValid)return this;let r={...this.values,...td(t,e.normalizeUnit)};return Vf(this,{values:r})}reconfigure({locale:t,numberingSystem:r,conversionAccuracy:n,matrix:i}={}){let l={loc:this.loc.clone({locale:t,numberingSystem:r}),matrix:i,conversionAccuracy:n};return Vf(this,l)}as(t){return this.isValid?this.shiftTo(t).get(t):NaN}normalize(){if(!this.isValid)return this;let t=this.toObject();return W3(this.matrix,t),Vf(this,{values:t},!0)}rescale(){if(!this.isValid)return this;let t=lne(this.normalize().shiftToAll().toObject());return Vf(this,{values:t},!0)}shiftTo(...t){if(!this.isValid)return this;if(t.length===0)return this;t=t.map(l=>e.normalizeUnit(l));let r={},n={},i=this.toObject(),o;for(let l of xp)if(t.indexOf(l)>=0){o=l;let s=0;for(let u in n)s+=this.matrix[u][l]*n[u],n[u]=0;Os(i[l])&&(s+=i[l]);let a=Math.trunc(s);r[l]=a,n[l]=(s*1e3-a*1e3)/1e3}else Os(i[l])&&(n[l]=i[l]);for(let l in n)n[l]!==0&&(r[o]+=l===o?n[l]:n[l]/this.matrix[o][l]);return W3(this.matrix,r),Vf(this,{values:r},!0)}shiftToAll(){return this.isValid?this.shiftTo("years","months","weeks","days","hours","minutes","seconds","milliseconds"):this}negate(){if(!this.isValid)return this;let t={};for(let r of Object.keys(this.values))t[r]=this.values[r]===0?0:-this.values[r];return Vf(this,{values:t},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(t){if(!this.isValid||!t.isValid||!this.loc.equals(t.loc))return!1;function r(n,i){return n===void 0||n===0?i===void 0||i===0:n===i}for(let n of xp)if(!r(this.values[n],t.values[n]))return!1;return!0}};var ud="Invalid Interval";function fne(e,t){return!e||!e.isValid?Al.invalid("missing or invalid start"):!t||!t.isValid?Al.invalid("missing or invalid end"):tt:!1}isBefore(t){return this.isValid?this.e<=t:!1}contains(t){return this.isValid?this.s<=t&&this.e>t:!1}set({start:t,end:r}={}){return this.isValid?e.fromDateTimes(t||this.s,r||this.e):this}splitAt(...t){if(!this.isValid)return[];let r=t.map(ld).filter(l=>this.contains(l)).sort((l,s)=>l.toMillis()-s.toMillis()),n=[],{s:i}=this,o=0;for(;i+this.e?this.e:l;n.push(e.fromDateTimes(i,s)),i=s,o+=1}return n}splitBy(t){let r=Rn.fromDurationLike(t);if(!this.isValid||!r.isValid||r.as("milliseconds")===0)return[];let{s:n}=this,i=1,o,l=[];for(;na*i));o=+s>+this.e?this.e:s,l.push(e.fromDateTimes(n,o)),n=o,i+=1}return l}divideEqually(t){return this.isValid?this.splitBy(this.length()/t).slice(0,t):[]}overlaps(t){return this.e>t.s&&this.s=t.e:!1}equals(t){return!this.isValid||!t.isValid?!1:this.s.equals(t.s)&&this.e.equals(t.e)}intersection(t){if(!this.isValid)return this;let r=this.s>t.s?this.s:t.s,n=this.e=n?null:e.fromDateTimes(r,n)}union(t){if(!this.isValid)return this;let r=this.st.e?this.e:t.e;return e.fromDateTimes(r,n)}static merge(t){let[r,n]=t.sort((i,o)=>i.s-o.s).reduce(([i,o],l)=>o?o.overlaps(l)||o.abutsStart(l)?[i,o.union(l)]:[i.concat([o]),l]:[i,l],[[],null]);return n&&r.push(n),r}static xor(t){let r=null,n=0,i=[],o=t.map(a=>[{time:a.s,type:"s"},{time:a.e,type:"e"}]),l=Array.prototype.concat(...o),s=l.sort((a,u)=>a.time-u.time);for(let a of s)n+=a.type==="s"?1:-1,n===1?r=a.time:(r&&+r!=+a.time&&i.push(e.fromDateTimes(r,a.time)),r=null);return e.merge(i)}difference(...t){return e.xor([this].concat(t)).map(r=>this.intersection(r)).filter(r=>r&&!r.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} \u2013 ${this.e.toISO()})`:ud}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`:`Interval { Invalid, reason: ${this.invalidReason} }`}toLocaleString(t=qf,r={}){return this.isValid?ki.create(this.s.loc.clone(r),t).formatInterval(this):ud}toISO(t){return this.isValid?`${this.s.toISO(t)}/${this.e.toISO(t)}`:ud}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:ud}toISOTime(t){return this.isValid?`${this.s.toISOTime(t)}/${this.e.toISOTime(t)}`:ud}toFormat(t,{separator:r=" \u2013 "}={}){return this.isValid?`${this.s.toFormat(t)}${r}${this.e.toFormat(t)}`:ud}toDuration(t,r){return this.isValid?this.e.diff(this.s,t,r):Rn.invalid(this.invalidReason)}mapEndpoints(t){return e.fromDateTimes(t(this.s),t(this.e))}};var Cl=class{static hasDST(t=Rr.defaultZone){let r=vr.now().setZone(t).set({month:12});return!t.isUniversal&&r.offset!==r.set({month:6}).offset}static isValidIANAZone(t){return lo.isValidZone(t)}static normalizeZone(t){return _s(t,Rr.defaultZone)}static getStartOfWeek({locale:t=null,locObj:r=null}={}){return(r||qr.create(t)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:t=null,locObj:r=null}={}){return(r||qr.create(t)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:t=null,locObj:r=null}={}){return(r||qr.create(t)).getWeekendDays().slice()}static months(t="long",{locale:r=null,numberingSystem:n=null,locObj:i=null,outputCalendar:o="gregory"}={}){return(i||qr.create(r,n,o)).months(t)}static monthsFormat(t="long",{locale:r=null,numberingSystem:n=null,locObj:i=null,outputCalendar:o="gregory"}={}){return(i||qr.create(r,n,o)).months(t,!0)}static weekdays(t="long",{locale:r=null,numberingSystem:n=null,locObj:i=null}={}){return(i||qr.create(r,n,null)).weekdays(t)}static weekdaysFormat(t="long",{locale:r=null,numberingSystem:n=null,locObj:i=null}={}){return(i||qr.create(r,n,null)).weekdays(t,!0)}static meridiems({locale:t=null}={}){return qr.create(t).meridiems()}static eras(t="short",{locale:r=null}={}){return qr.create(r,null,"gregory").eras(t)}static features(){return{relative:d1(),localeWeek:h1()}}};function Y3(e,t){let r=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),n=r(t)-r(e);return Math.floor(Rn.fromMillis(n).as("days"))}function cne(e,t,r){let n=[["years",(a,u)=>u.year-a.year],["quarters",(a,u)=>u.quarter-a.quarter+(u.year-a.year)*4],["months",(a,u)=>u.month-a.month+(u.year-a.year)*12],["weeks",(a,u)=>{let f=Y3(a,u);return(f-f%7)/7}],["days",Y3]],i={},o=e,l,s;for(let[a,u]of n)r.indexOf(a)>=0&&(l=a,i[a]=u(e,t),s=o.plus(i),s>t?(i[a]--,e=o.plus(i),e>t&&(s=e,i[a]--,e=o.plus(i))):e=s);return[e,i,s,l]}function Z3(e,t,r,n){let[i,o,l,s]=cne(e,t,r),a=t-i,u=r.filter(p=>["hours","minutes","seconds","milliseconds"].indexOf(p)>=0);u.length===0&&(l0?Rn.fromMillis(a,n).shiftTo(...u).plus(f):f}var pne="missing Intl.DateTimeFormat.formatToParts support";function Hr(e,t=r=>r){return{regex:e,deser:([r])=>t(o3(r))}}var mne="\xA0",J3=`[ ${mne}]`,Q3=new RegExp(J3,"g");function dne(e){return e.replace(/\./g,"\\.?").replace(Q3,J3)}function X3(e){return e.replace(/\./g,"").replace(Q3," ").toLowerCase()}function Fs(e,t){return e===null?null:{regex:RegExp(e.map(dne).join("|")),deser:([r])=>e.findIndex(n=>X3(r)===X3(n))+t}}function K3(e,t){return{regex:e,deser:([,r,n])=>hp(r,n),groups:t}}function y1(e){return{regex:e,deser:([t])=>t}}function hne(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function gne(e,t){let r=Ua(t),n=Ua(t,"{2}"),i=Ua(t,"{3}"),o=Ua(t,"{4}"),l=Ua(t,"{6}"),s=Ua(t,"{1,2}"),a=Ua(t,"{1,3}"),u=Ua(t,"{1,6}"),f=Ua(t,"{1,9}"),p=Ua(t,"{2,4}"),h=Ua(t,"{4,6}"),g=S=>({regex:RegExp(hne(S.val)),deser:([D])=>D,literal:!0}),v=(S=>{if(e.literal)return g(S);switch(S.val){case"G":return Fs(t.eras("short"),0);case"GG":return Fs(t.eras("long"),0);case"y":return Hr(u);case"yy":return Hr(p,Dv);case"yyyy":return Hr(o);case"yyyyy":return Hr(h);case"yyyyyy":return Hr(l);case"M":return Hr(s);case"MM":return Hr(n);case"MMM":return Fs(t.months("short",!0),1);case"MMMM":return Fs(t.months("long",!0),1);case"L":return Hr(s);case"LL":return Hr(n);case"LLL":return Fs(t.months("short",!1),1);case"LLLL":return Fs(t.months("long",!1),1);case"d":return Hr(s);case"dd":return Hr(n);case"o":return Hr(a);case"ooo":return Hr(i);case"HH":return Hr(n);case"H":return Hr(s);case"hh":return Hr(n);case"h":return Hr(s);case"mm":return Hr(n);case"m":return Hr(s);case"q":return Hr(s);case"qq":return Hr(n);case"s":return Hr(s);case"ss":return Hr(n);case"S":return Hr(a);case"SSS":return Hr(i);case"u":return y1(f);case"uu":return y1(s);case"uuu":return Hr(r);case"a":return Fs(t.meridiems(),0);case"kkkk":return Hr(o);case"kk":return Hr(p,Dv);case"W":return Hr(s);case"WW":return Hr(n);case"E":case"c":return Hr(r);case"EEE":return Fs(t.weekdays("short",!1),1);case"EEEE":return Fs(t.weekdays("long",!1),1);case"ccc":return Fs(t.weekdays("short",!0),1);case"cccc":return Fs(t.weekdays("long",!0),1);case"Z":case"ZZ":return K3(new RegExp(`([+-]${s.source})(?::(${n.source}))?`),2);case"ZZZ":return K3(new RegExp(`([+-]${s.source})(${n.source})?`),2);case"z":return y1(/[a-z_+-/]{1,256}?/i);case" ":return y1(/[^\S\n\r]/);default:return g(S)}})(e)||{invalidReason:pne};return v.token=e,v}var vne={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour12:{numeric:"h","2-digit":"hh"},hour24:{numeric:"H","2-digit":"HH"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"},timeZoneName:{long:"ZZZZZ",short:"ZZZ"}};function xne(e,t,r){let{type:n,value:i}=e;if(n==="literal"){let a=/^\s+$/.test(i);return{literal:!a,val:a?" ":i}}let o=t[n],l=n;n==="hour"&&(t.hour12!=null?l=t.hour12?"hour12":"hour24":t.hourCycle!=null?t.hourCycle==="h11"||t.hourCycle==="h12"?l="hour12":l="hour24":l=r.hour12?"hour12":"hour24");let s=vne[l];if(typeof s=="object"&&(s=s[o]),s)return{literal:!1,val:s}}function yne(e){return[`^${e.map(r=>r.regex).reduce((r,n)=>`${r}(${n.source})`,"")}$`,e]}function wne(e,t,r){let n=e.match(t);if(n){let i={},o=1;for(let l in r)if($f(r,l)){let s=r[l],a=s.groups?s.groups+1:1;!s.literal&&s.token&&(i[s.token.val[0]]=s.deser(n.slice(o,o+a))),o+=a}return[n,i]}else return[n,{}]}function bne(e){let t=o=>{switch(o){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}},r=null,n;return Jt(e.z)||(r=lo.create(e.z)),Jt(e.Z)||(r||(r=new Fi(e.Z)),n=e.Z),Jt(e.q)||(e.M=(e.q-1)*3+1),Jt(e.h)||(e.h<12&&e.a===1?e.h+=12:e.h===12&&e.a===0&&(e.h=0)),e.G===0&&e.y&&(e.y=-e.y),Jt(e.u)||(e.S=bv(e.u)),[Object.keys(e).reduce((o,l)=>{let s=t(l);return s&&(o[s]=e[l]),o},{}),r,n]}var PE=null;function Dne(){return PE||(PE=vr.fromMillis(1555555555555)),PE}function Sne(e,t){if(e.literal)return e;let r=ki.macroTokenToFormatOpts(e.val),n=zE(r,t);return n==null||n.includes(void 0)?e:n}function RE(e,t){return Array.prototype.concat(...e.map(r=>Sne(r,t)))}var Ev=class{constructor(t,r){if(this.locale=t,this.format=r,this.tokens=RE(ki.parseFormat(r),t),this.units=this.tokens.map(n=>gne(n,t)),this.disqualifyingUnit=this.units.find(n=>n.invalidReason),!this.disqualifyingUnit){let[n,i]=yne(this.units);this.regex=RegExp(n,"i"),this.handlers=i}}explainFromTokens(t){if(this.isValid){let[r,n]=wne(t,this.regex,this.handlers),[i,o,l]=n?bne(n):[null,null,void 0];if($f(n,"a")&&$f(n,"H"))throw new Cs("Can't include meridiem when specifying 24-hour format");return{input:t,tokens:this.tokens,regex:this.regex,rawMatches:r,matches:n,result:i,zone:o,specificOffset:l}}else return{input:t,tokens:this.tokens,invalidReason:this.invalidReason}}get isValid(){return!this.disqualifyingUnit}get invalidReason(){return this.disqualifyingUnit?this.disqualifyingUnit.invalidReason:null}};function qE(e,t,r){return new Ev(e,r).explainFromTokens(t)}function j3(e,t,r){let{result:n,zone:i,specificOffset:o,invalidReason:l}=qE(e,t,r);return[n,i,o,l]}function zE(e,t){if(!e)return null;let n=ki.create(t,e).dtFormatter(Dne()),i=n.formatToParts(),o=n.resolvedOptions();return i.map(l=>xne(l,e,o))}var UE="Invalid DateTime",eF=864e13;function Av(e){return new Ii("unsupported zone",`the zone "${e.name}" is not supported`)}function HE(e){return e.weekData===null&&(e.weekData=xv(e.c)),e.weekData}function $E(e){return e.localWeekData===null&&(e.localWeekData=xv(e.c,e.loc.getMinDaysInFirstWeek(),e.loc.getStartOfWeek())),e.localWeekData}function yp(e,t){let r={ts:e.ts,zone:e.zone,c:e.c,o:e.o,loc:e.loc,invalid:e.invalid};return new vr({...r,...t,old:r})}function sF(e,t,r){let n=e-t*60*1e3,i=r.offset(n);if(t===i)return[n,t];n-=(i-t)*60*1e3;let o=r.offset(n);return i===o?[n,i]:[e-Math.min(i,o)*60*1e3,Math.max(i,o)]}function w1(e,t){e+=t*60*1e3;let r=new Date(e);return{year:r.getUTCFullYear(),month:r.getUTCMonth()+1,day:r.getUTCDate(),hour:r.getUTCHours(),minute:r.getUTCMinutes(),second:r.getUTCSeconds(),millisecond:r.getUTCMilliseconds()}}function D1(e,t,r){return sF(Km(e),t,r)}function tF(e,t){let r=e.o,n=e.c.year+Math.trunc(t.years),i=e.c.month+Math.trunc(t.months)+Math.trunc(t.quarters)*3,o={...e.c,year:n,month:i,day:Math.min(e.c.day,ed(n,i))+Math.trunc(t.days)+Math.trunc(t.weeks)*7},l=Rn.fromObject({years:t.years-Math.trunc(t.years),quarters:t.quarters-Math.trunc(t.quarters),months:t.months-Math.trunc(t.months),weeks:t.weeks-Math.trunc(t.weeks),days:t.days-Math.trunc(t.days),hours:t.hours,minutes:t.minutes,seconds:t.seconds,milliseconds:t.milliseconds}).as("milliseconds"),s=Km(o),[a,u]=sF(s,r,e.zone);return l!==0&&(a+=l,u=e.zone.offset(a)),{ts:a,o:u}}function fd(e,t,r,n,i,o){let{setZone:l,zone:s}=r;if(e&&Object.keys(e).length!==0||t){let a=t||s,u=vr.fromObject(e,{...r,zone:a,specificOffset:o});return l?u:u.setZone(s)}else return vr.invalid(new Ii("unparsable",`the input "${i}" can't be parsed as ${n}`))}function b1(e,t,r=!0){return e.isValid?ki.create(qr.create("en-US"),{allowZ:r,forceSimple:!0}).formatDateTimeFromString(e,t):null}function WE(e,t){let r=e.c.year>9999||e.c.year<0,n="";return r&&e.c.year>=0&&(n+="+"),n+=Pn(e.c.year,r?6:4),t?(n+="-",n+=Pn(e.c.month),n+="-",n+=Pn(e.c.day)):(n+=Pn(e.c.month),n+=Pn(e.c.day)),n}function rF(e,t,r,n,i,o){let l=Pn(e.c.hour);return t?(l+=":",l+=Pn(e.c.minute),(e.c.millisecond!==0||e.c.second!==0||!r)&&(l+=":")):l+=Pn(e.c.minute),(e.c.millisecond!==0||e.c.second!==0||!r)&&(l+=Pn(e.c.second),(e.c.millisecond!==0||!n)&&(l+=".",l+=Pn(e.c.millisecond,3))),i&&(e.isOffsetFixed&&e.offset===0&&!o?l+="Z":e.o<0?(l+="-",l+=Pn(Math.trunc(-e.o/60)),l+=":",l+=Pn(Math.trunc(-e.o%60))):(l+="+",l+=Pn(Math.trunc(e.o/60)),l+=":",l+=Pn(Math.trunc(e.o%60)))),o&&(l+="["+e.zone.ianaName+"]"),l}var uF={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},Nne={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},Ene={ordinal:1,hour:0,minute:0,second:0,millisecond:0},lF=["year","month","day","hour","minute","second","millisecond"],Ane=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],Cne=["year","ordinal","hour","minute","second","millisecond"];function Mne(e){let t={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[e.toLowerCase()];if(!t)throw new Xm(e);return t}function nF(e){switch(e.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return Mne(e)}}function Tne(e){return N1[e]||(S1===void 0&&(S1=Rr.now()),N1[e]=e.offset(S1)),N1[e]}function iF(e,t){let r=_s(t.zone,Rr.defaultZone);if(!r.isValid)return vr.invalid(Av(r));let n=qr.fromObject(t),i,o;if(Jt(e.year))i=Rr.now();else{for(let a of lF)Jt(e[a])&&(e[a]=uF[a]);let l=CE(e)||ME(e);if(l)return vr.invalid(l);let s=Tne(r);[i,o]=D1(e,s,r)}return new vr({ts:i,zone:r,loc:n,o})}function oF(e,t,r){let n=Jt(r.round)?!0:r.round,i=(l,s)=>(l=Jm(l,n||r.calendary?0:2,!0),t.loc.clone(r).relFormatter(r).format(l,s)),o=l=>r.calendary?t.hasSame(e,l)?0:t.startOf(l).diff(e.startOf(l),l).get(l):t.diff(e,l).get(l);if(r.unit)return i(o(r.unit),r.unit);for(let l of r.units){let s=o(l);if(Math.abs(s)>=1)return i(s,l)}return i(e>t?-0:0,r.units[r.units.length-1])}function aF(e){let t={},r;return e.length>0&&typeof e[e.length-1]=="object"?(t=e[e.length-1],r=Array.from(e).slice(0,e.length-1)):r=Array.from(e),[t,r]}var S1,N1={},vr=class e{constructor(t){let r=t.zone||Rr.defaultZone,n=t.invalid||(Number.isNaN(t.ts)?new Ii("invalid input"):null)||(r.isValid?null:Av(r));this.ts=Jt(t.ts)?Rr.now():t.ts;let i=null,o=null;if(!n)if(t.old&&t.old.ts===this.ts&&t.old.zone.equals(r))[i,o]=[t.old.c,t.old.o];else{let s=Os(t.o)&&!t.old?t.o:r.offset(this.ts);i=w1(this.ts,s),n=Number.isNaN(i.year)?new Ii("invalid input"):null,i=n?null:i,o=n?null:s}this._zone=r,this.loc=t.loc||qr.create(),this.invalid=n,this.weekData=null,this.localWeekData=null,this.c=i,this.o=o,this.isLuxonDateTime=!0}static now(){return new e({})}static local(){let[t,r]=aF(arguments),[n,i,o,l,s,a,u]=r;return iF({year:n,month:i,day:o,hour:l,minute:s,second:a,millisecond:u},t)}static utc(){let[t,r]=aF(arguments),[n,i,o,l,s,a,u]=r;return t.zone=Fi.utcInstance,iF({year:n,month:i,day:o,hour:l,minute:s,second:a,millisecond:u},t)}static fromJSDate(t,r={}){let n=D3(t)?t.valueOf():NaN;if(Number.isNaN(n))return e.invalid("invalid input");let i=_s(r.zone,Rr.defaultZone);return i.isValid?new e({ts:n,zone:i,loc:qr.fromObject(r)}):e.invalid(Av(i))}static fromMillis(t,r={}){if(Os(t))return t<-eF||t>eF?e.invalid("Timestamp out of range"):new e({ts:t,zone:_s(r.zone,Rr.defaultZone),loc:qr.fromObject(r)});throw new Vn(`fromMillis requires a numerical input, but received a ${typeof t} with value ${t}`)}static fromSeconds(t,r={}){if(Os(t))return new e({ts:t*1e3,zone:_s(r.zone,Rr.defaultZone),loc:qr.fromObject(r)});throw new Vn("fromSeconds requires a numerical input")}static fromObject(t,r={}){t=t||{};let n=_s(r.zone,Rr.defaultZone);if(!n.isValid)return e.invalid(Av(n));let i=qr.fromObject(r),o=td(t,nF),{minDaysInFirstWeek:l,startOfWeek:s}=AE(o,i),a=Rr.now(),u=Jt(r.specificOffset)?n.offset(a):r.specificOffset,f=!Jt(o.ordinal),p=!Jt(o.year),h=!Jt(o.month)||!Jt(o.day),g=p||h,x=o.weekYear||o.weekNumber;if((g||f)&&x)throw new Cs("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(h&&f)throw new Cs("Can't mix ordinal dates with month/day");let v=x||o.weekday&&!g,S,D,C=w1(a,u);v?(S=Ane,D=Nne,C=xv(C,l,s)):f?(S=Cne,D=Ene,C=x1(C)):(S=lF,D=uF);let E=!1;for(let B of S){let L=o[B];Jt(L)?E?o[B]=D[B]:o[B]=C[B]:E=!0}let M=v?y3(o,l,s):f?w3(o):CE(o),T=M||ME(o);if(T)return e.invalid(T);let N=v?NE(o,l,s):f?EE(o):o,[O,F]=D1(N,u,n),I=new e({ts:O,zone:n,o:F,loc:i});return o.weekday&&g&&t.weekday!==I.weekday?e.invalid("mismatched weekday",`you can't specify both a weekday of ${o.weekday} and a date of ${I.toISO()}`):I.isValid?I:e.invalid(I.invalid)}static fromISO(t,r={}){let[n,i]=P3(t);return fd(n,i,r,"ISO 8601",t)}static fromRFC2822(t,r={}){let[n,i]=R3(t);return fd(n,i,r,"RFC 2822",t)}static fromHTTP(t,r={}){let[n,i]=q3(t);return fd(n,i,r,"HTTP",r)}static fromFormat(t,r,n={}){if(Jt(t)||Jt(r))throw new Vn("fromFormat requires an input string and a format");let{locale:i=null,numberingSystem:o=null}=n,l=qr.fromOpts({locale:i,numberingSystem:o,defaultToEN:!0}),[s,a,u,f]=j3(l,t,r);return f?e.invalid(f):fd(s,a,n,`format ${r}`,t,u)}static fromString(t,r,n={}){return e.fromFormat(t,r,n)}static fromSQL(t,r={}){let[n,i]=H3(t);return fd(n,i,r,"SQL",t)}static invalid(t,r=null){if(!t)throw new Vn("need to specify a reason the DateTime is invalid");let n=t instanceof Ii?t:new Ii(t,r);if(Rr.throwOnInvalid)throw new a1(n);return new e({invalid:n})}static isDateTime(t){return t&&t.isLuxonDateTime||!1}static parseFormatForOpts(t,r={}){let n=zE(t,qr.fromObject(r));return n?n.map(i=>i?i.val:null).join(""):null}static expandFormat(t,r={}){return RE(ki.parseFormat(t),qr.fromObject(r)).map(i=>i.val).join("")}static resetCache(){S1=void 0,N1={}}get(t){return this[t]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?HE(this).weekYear:NaN}get weekNumber(){return this.isValid?HE(this).weekNumber:NaN}get weekday(){return this.isValid?HE(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?$E(this).weekday:NaN}get localWeekNumber(){return this.isValid?$E(this).weekNumber:NaN}get localWeekYear(){return this.isValid?$E(this).weekYear:NaN}get ordinal(){return this.isValid?x1(this.c).ordinal:NaN}get monthShort(){return this.isValid?Cl.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Cl.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Cl.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Cl.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}getPossibleOffsets(){if(!this.isValid||this.isOffsetFixed)return[this];let t=864e5,r=6e4,n=Km(this.c),i=this.zone.offset(n-t),o=this.zone.offset(n+t),l=this.zone.offset(n-i*r),s=this.zone.offset(n-o*r);if(l===s)return[this];let a=n-l*r,u=n-s*r,f=w1(a,l),p=w1(u,s);return f.hour===p.hour&&f.minute===p.minute&&f.second===p.second&&f.millisecond===p.millisecond?[yp(this,{ts:a}),yp(this,{ts:u})]:[this]}get isInLeapYear(){return vp(this.year)}get daysInMonth(){return ed(this.year,this.month)}get daysInYear(){return this.isValid?Hf(this.year):NaN}get weeksInWeekYear(){return this.isValid?gp(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?gp(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(t={}){let{locale:r,numberingSystem:n,calendar:i}=ki.create(this.loc.clone(t),t).resolvedOptions(this);return{locale:r,numberingSystem:n,outputCalendar:i}}toUTC(t=0,r={}){return this.setZone(Fi.instance(t),r)}toLocal(){return this.setZone(Rr.defaultZone)}setZone(t,{keepLocalTime:r=!1,keepCalendarTime:n=!1}={}){if(t=_s(t,Rr.defaultZone),t.equals(this.zone))return this;if(t.isValid){let i=this.ts;if(r||n){let o=t.offset(this.ts),l=this.toObject();[i]=D1(l,o,t)}return yp(this,{ts:i,zone:t})}else return e.invalid(Av(t))}reconfigure({locale:t,numberingSystem:r,outputCalendar:n}={}){let i=this.loc.clone({locale:t,numberingSystem:r,outputCalendar:n});return yp(this,{loc:i})}setLocale(t){return this.reconfigure({locale:t})}set(t){if(!this.isValid)return this;let r=td(t,nF),{minDaysInFirstWeek:n,startOfWeek:i}=AE(r,this.loc),o=!Jt(r.weekYear)||!Jt(r.weekNumber)||!Jt(r.weekday),l=!Jt(r.ordinal),s=!Jt(r.year),a=!Jt(r.month)||!Jt(r.day),u=s||a,f=r.weekYear||r.weekNumber;if((u||l)&&f)throw new Cs("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(a&&l)throw new Cs("Can't mix ordinal dates with month/day");let p;o?p=NE({...xv(this.c,n,i),...r},n,i):Jt(r.ordinal)?(p={...this.toObject(),...r},Jt(r.day)&&(p.day=Math.min(ed(p.year,p.month),p.day))):p=EE({...x1(this.c),...r});let[h,g]=D1(p,this.o,this.zone);return yp(this,{ts:h,o:g})}plus(t){if(!this.isValid)return this;let r=Rn.fromDurationLike(t);return yp(this,tF(this,r))}minus(t){if(!this.isValid)return this;let r=Rn.fromDurationLike(t).negate();return yp(this,tF(this,r))}startOf(t,{useLocaleWeeks:r=!1}={}){if(!this.isValid)return this;let n={},i=Rn.normalizeUnit(t);switch(i){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0;break;case"milliseconds":break}if(i==="weeks")if(r){let o=this.loc.getStartOfWeek(),{weekday:l}=this;lthis.valueOf(),s=l?this:t,a=l?t:this,u=Z3(s,a,o,i);return l?u.negate():u}diffNow(t="milliseconds",r={}){return this.diff(e.now(),t,r)}until(t){return this.isValid?Al.fromDateTimes(this,t):this}hasSame(t,r,n){if(!this.isValid)return!1;let i=t.valueOf(),o=this.setZone(t.zone,{keepLocalTime:!0});return o.startOf(r,n)<=i&&i<=o.endOf(r,n)}equals(t){return this.isValid&&t.isValid&&this.valueOf()===t.valueOf()&&this.zone.equals(t.zone)&&this.loc.equals(t.loc)}toRelative(t={}){if(!this.isValid)return null;let r=t.base||e.fromObject({},{zone:this.zone}),n=t.padding?thisr.valueOf(),Math.min)}static max(...t){if(!t.every(e.isDateTime))throw new Vn("max requires all arguments be DateTimes");return TE(t,r=>r.valueOf(),Math.max)}static fromFormatExplain(t,r,n={}){let{locale:i=null,numberingSystem:o=null}=n,l=qr.fromOpts({locale:i,numberingSystem:o,defaultToEN:!0});return qE(l,t,r)}static fromStringExplain(t,r,n={}){return e.fromFormatExplain(t,r,n)}static buildFormatParser(t,r={}){let{locale:n=null,numberingSystem:i=null}=r,o=qr.fromOpts({locale:n,numberingSystem:i,defaultToEN:!0});return new Ev(o,t)}static fromFormatParser(t,r,n={}){if(Jt(t)||Jt(r))throw new Vn("fromFormatParser requires an input string and a format parser");let{locale:i=null,numberingSystem:o=null}=n,l=qr.fromOpts({locale:i,numberingSystem:o,defaultToEN:!0});if(!l.equals(r.locale))throw new Vn(`fromFormatParser called with a locale of ${l}, but the format parser was created for ${r.locale}`);let{result:s,zone:a,specificOffset:u,invalidReason:f}=r.explainFromTokens(t);return f?e.invalid(f):fd(s,a,n,`format ${r.format}`,t,u)}static get DATE_SHORT(){return qf}static get DATE_MED(){return Jg}static get DATE_MED_WITH_WEEKDAY(){return sE}static get DATE_FULL(){return Qg}static get DATE_HUGE(){return jg}static get TIME_SIMPLE(){return ev}static get TIME_WITH_SECONDS(){return tv}static get TIME_WITH_SHORT_OFFSET(){return rv}static get TIME_WITH_LONG_OFFSET(){return nv}static get TIME_24_SIMPLE(){return iv}static get TIME_24_WITH_SECONDS(){return ov}static get TIME_24_WITH_SHORT_OFFSET(){return av}static get TIME_24_WITH_LONG_OFFSET(){return sv}static get DATETIME_SHORT(){return uv}static get DATETIME_SHORT_WITH_SECONDS(){return lv}static get DATETIME_MED(){return fv}static get DATETIME_MED_WITH_SECONDS(){return cv}static get DATETIME_MED_WITH_WEEKDAY(){return uE}static get DATETIME_FULL(){return pv}static get DATETIME_FULL_WITH_SECONDS(){return mv}static get DATETIME_HUGE(){return dv}static get DATETIME_HUGE_WITH_SECONDS(){return hv}};function ld(e){if(vr.isDateTime(e))return e;if(e&&e.valueOf&&Os(e.valueOf()))return vr.fromJSDate(e);if(e&&typeof e=="object")return vr.fromObject(e);throw new Vn(`Unknown datetime argument: ${e}, of type ${typeof e}`)}function Gn(){return Gn=Object.assign?Object.assign.bind():function(e){for(var t=1;tthis.has(t)).values()}get(t){return un(this.wrappedObject,t)}set(t,r){return Tu(this.wrappedObject,t,r),this}has(t){return Cv(this.wrappedObject,t)&&t in this.wrappedObject}entries(){return cF(this.keys(),t=>[t,this.get(t)])}forEach(t){for(var r of this.keys())t(this.get(r),r,this)}delete(t){Cv(this.wrappedObject,t)&&delete this.wrappedObject[t]}clear(){for(var t of this.keys())this.delete(t)}get size(){return Object.keys(this.wrappedObject).length}},cd=class{constructor(t,r,n){this.a=t,this.b=r,this.bKeys=n,this[Symbol.iterator]=this.entries}get(t){return this.bKeys.has(t)?this.b.get(t):this.a.get(t)}set(t,r){return this.bKeys.has(t)?this.b.set(t,r):this.a.set(t,r),this}has(t){return this.b.has(t)||this.a.has(t)}keys(){return new Set([...this.a.keys(),...this.b.keys()])[Symbol.iterator]()}entries(){return cF(this.keys(),t=>[t,this.get(t)])}forEach(t){for(var r of this.keys())t(this.get(r),r,this)}delete(t){return this.bKeys.has(t)?this.b.delete(t):this.a.delete(t)}clear(){this.a.clear(),this.b.clear()}get size(){return[...this.keys()].length}};function cF(e,t){return{next:()=>{var r=e.next();return r.done?r:{value:t(r.value),done:!1}}}}function Yf(){return new Map}function Ml(e){if(!e)return Yf();if(_u(e))return e;if(Is(e))return new Gf(e);throw new Error("createMap can create maps from objects or Maps")}function pF(e){if(e instanceof Gf)return e.wrappedObject;var t={};for(var r of e.keys()){var n=e.get(r);Tu(t,r,n)}return t}function Pt(e){return typeof e=="number"}function Ct(e){return!e||typeof e!="object"||typeof e.constructor!="function"?!1:e.isBigNumber===!0&&typeof e.constructor.prototype=="object"&&e.constructor.prototype.isBigNumber===!0||typeof e.constructor.isDecimal=="function"&&e.constructor.isDecimal(e)===!0}function C1(e){return typeof e=="bigint"}function vi(e){return e&&typeof e=="object"&&Object.getPrototypeOf(e).isComplex===!0||!1}function ga(e){return e&&typeof e=="object"&&Object.getPrototypeOf(e).isFraction===!0||!1}function ti(e){return e&&e.constructor.prototype.isUnit===!0||!1}function dn(e){return typeof e=="string"}var dr=Array.isArray;function gt(e){return e&&e.constructor.prototype.isMatrix===!0||!1}function gn(e){return Array.isArray(e)||gt(e)}function Tl(e){return e&&e.isDenseMatrix&&e.constructor.prototype.isMatrix===!0||!1}function va(e){return e&&e.isSparseMatrix&&e.constructor.prototype.isMatrix===!0||!1}function Zf(e){return e&&e.constructor.prototype.isRange===!0||!1}function Ou(e){return e&&e.constructor.prototype.isIndex===!0||!1}function M1(e){return typeof e=="boolean"}function T1(e){return e&&e.constructor.prototype.isResultSet===!0||!1}function pd(e){return e&&e.constructor.prototype.isHelp===!0||!1}function _1(e){return typeof e=="function"}function O1(e){return e instanceof Date}function F1(e){return e instanceof RegExp}function Is(e){return!!(e&&typeof e=="object"&&e.constructor===Object&&!vi(e)&&!ga(e))}function _u(e){return e?e instanceof Map||e instanceof Gf||typeof e.set=="function"&&typeof e.get=="function"&&typeof e.keys=="function"&&typeof e.has=="function":!1}function mF(e){return _u(e)&&_u(e.a)&&_u(e.b)}function dF(e){return _u(e)&&Is(e.wrappedObject)}function I1(e){return e===null}function k1(e){return e===void 0}function Mo(e){return e&&e.isAccessorNode===!0&&e.constructor.prototype.isNode===!0||!1}function xi(e){return e&&e.isArrayNode===!0&&e.constructor.prototype.isNode===!0||!1}function L1(e){return e&&e.isAssignmentNode===!0&&e.constructor.prototype.isNode===!0||!1}function B1(e){return e&&e.isBlockNode===!0&&e.constructor.prototype.isNode===!0||!1}function P1(e){return e&&e.isConditionalNode===!0&&e.constructor.prototype.isNode===!0||!1}function Qt(e){return e&&e.isConstantNode===!0&&e.constructor.prototype.isNode===!0||!1}function Mv(e){return Qt(e)||$r(e)&&e.args.length===1&&Qt(e.args[0])&&"-+~".includes(e.op)}function Wa(e){return e&&e.isFunctionAssignmentNode===!0&&e.constructor.prototype.isNode===!0||!1}function Ji(e){return e&&e.isFunctionNode===!0&&e.constructor.prototype.isNode===!0||!1}function Wo(e){return e&&e.isIndexNode===!0&&e.constructor.prototype.isNode===!0||!1}function ir(e){return e&&e.isNode===!0&&e.constructor.prototype.isNode===!0||!1}function Fu(e){return e&&e.isObjectNode===!0&&e.constructor.prototype.isNode===!0||!1}function $r(e){return e&&e.isOperatorNode===!0&&e.constructor.prototype.isNode===!0||!1}function yi(e){return e&&e.isParenthesisNode===!0&&e.constructor.prototype.isNode===!0||!1}function R1(e){return e&&e.isRangeNode===!0&&e.constructor.prototype.isNode===!0||!1}function q1(e){return e&&e.isRelationalNode===!0&&e.constructor.prototype.isNode===!0||!1}function Lr(e){return e&&e.isSymbolNode===!0&&e.constructor.prototype.isNode===!0||!1}function md(e){return e&&e.constructor.prototype.isChain===!0||!1}function pr(e){var t=typeof e;return t==="object"?e===null?"null":Ct(e)?"BigNumber":e.constructor&&e.constructor.name?e.constructor.name:"Object":t}function _t(e){var t=typeof e;if(t==="number"||t==="bigint"||t==="string"||t==="boolean"||e===null||e===void 0)return e;if(typeof e.clone=="function")return e.clone();if(Array.isArray(e))return e.map(function(r){return _t(r)});if(e instanceof Date)return new Date(e.valueOf());if(Ct(e))return e;if(Is(e))return Ine(e,_t);if(t==="function")return e;throw new TypeError("Cannot clone: unknown type of value (value: ".concat(e,")"))}function Ine(e,t){var r={};for(var n in e)xt(e,n)&&(r[n]=t(e[n]));return r}function z1(e,t){for(var r in t)xt(t,r)&&(e[r]=t[r]);return e}function VE(e,t){if(Array.isArray(t))throw new TypeError("Arrays are not supported by deepExtend");for(var r in t)if(xt(t,r)&&!(r in Object.prototype)&&!(r in Function.prototype))if(t[r]&&t[r].constructor===Object)e[r]===void 0&&(e[r]={}),e[r]&&e[r].constructor===Object?VE(e[r],t[r]):e[r]=t[r];else{if(Array.isArray(t[r]))throw new TypeError("Arrays are not supported by deepExtend");e[r]=t[r]}return e}function Vo(e,t){var r,n,i;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(n=0,i=e.length;n{Object.defineProperty(r,n,{get:()=>e[n],enumerable:!0,configurable:!0})}),r}function bF(e,t,r){e[t]!==void 0&&!r.includes(e[t])&&console.warn('Warning: Unknown value "'+e[t]+'" for configuration option "'+t+'". Available options: '+r.map(n=>JSON.stringify(n)).join(", ")+".")}var LC={};Cu(LC,{createAbs:()=>vk,createAccessorNode:()=>BP,createAcos:()=>pB,createAcosh:()=>dB,createAcot:()=>gB,createAcoth:()=>xB,createAcsc:()=>wB,createAcsch:()=>DB,createAdd:()=>EP,createAddScalar:()=>wk,createAnd:()=>Iw,createAndTransform:()=>t$,createApply:()=>Cd,createApplyTransform:()=>AH,createArg:()=>w5,createArrayNode:()=>PP,createAsec:()=>NB,createAsech:()=>AB,createAsin:()=>MB,createAsinh:()=>TB,createAssignmentNode:()=>zP,createAtan:()=>_B,createAtan2:()=>FB,createAtanh:()=>kB,createAtomicMass:()=>oH,createAvogadro:()=>aH,createBellNumbers:()=>qz,createBigNumberClass:()=>jF,createBigint:()=>ZI,createBignumber:()=>jI,createBin:()=>B4,createBitAnd:()=>vw,createBitAndTransform:()=>n$,createBitNot:()=>h5,createBitOr:()=>xw,createBitOrTransform:()=>i$,createBitXor:()=>x5,createBlockNode:()=>UP,createBohrMagneton:()=>qU,createBohrRadius:()=>VU,createBoltzmann:()=>sH,createBoolean:()=>QI,createCatalan:()=>Uz,createCbrt:()=>Nk,createCeil:()=>Ek,createChain:()=>mq,createChainClass:()=>B6,createClassicalElectronRadius:()=>GU,createClone:()=>bI,createColumn:()=>bw,createColumnTransform:()=>CH,createCombinations:()=>Kq,createCombinationsWithRep:()=>jq,createCompare:()=>EL,createCompareNatural:()=>TL,createCompareText:()=>OL,createCompile:()=>s6,createComplex:()=>ek,createComplexClass:()=>eI,createComposition:()=>$z,createConcat:()=>ww,createConcatTransform:()=>HH,createConditionalNode:()=>HP,createConductanceQuantum:()=>zU,createConj:()=>D5,createConstantNode:()=>ZP,createCorr:()=>Yq,createCos:()=>BB,createCosh:()=>RB,createCot:()=>zB,createCoth:()=>HB,createCoulomb:()=>PU,createCount:()=>L5,createCreateUnit:()=>fB,createCross:()=>P5,createCsc:()=>WB,createCsch:()=>GB,createCtranspose:()=>h4,createCube:()=>Ck,createCumSum:()=>db,createCumSumTransform:()=>KH,createDeepEqual:()=>zL,createDenseMatrixClass:()=>yI,createDerivative:()=>tU,createDet:()=>hq,createDeuteronMass:()=>QU,createDiag:()=>q5,createDiff:()=>Ew,createDiffTransform:()=>WH,createDistance:()=>Lq,createDivide:()=>Iq,createDivideScalar:()=>X4,createDot:()=>OP,createDotDivide:()=>lL,createDotMultiply:()=>s5,createDotPow:()=>sL,createE:()=>xU,createEfimovFactor:()=>iH,createEigs:()=>Dq,createElectricConstant:()=>LU,createElectronMass:()=>YU,createElementaryCharge:()=>RU,createEqual:()=>FL,createEqualScalar:()=>VI,createEqualText:()=>kL,createErf:()=>A4,createEvaluate:()=>l6,createExp:()=>Tk,createExpm:()=>Nq,createExpm1:()=>Ok,createFactorial:()=>oz,createFalse:()=>pU,createFaraday:()=>uH,createFermiCoupling:()=>ZU,createFft:()=>y4,createFibonacciHeapClass:()=>JL,createFilter:()=>Dw,createFilterTransform:()=>_H,createFineStructure:()=>XU,createFirstRadiation:()=>lH,createFix:()=>Fk,createFlatten:()=>H5,createFloor:()=>mw,createForEach:()=>Sw,createForEachTransform:()=>OH,createFormat:()=>k4,createFraction:()=>tk,createFractionClass:()=>rI,createFreqz:()=>sU,createFunctionAssignmentNode:()=>XP,createFunctionNode:()=>n6,createGamma:()=>tz,createGasConstant:()=>cH,createGcd:()=>Pk,createGetMatrixDataType:()=>W5,createGravitationConstant:()=>OU,createGravity:()=>wH,createHartreeEnergy:()=>KU,createHasNumericValue:()=>LI,createHelp:()=>cq,createHelpClass:()=>L6,createHex:()=>z4,createHypot:()=>CP,createI:()=>AU,createIdentity:()=>G5,createIfft:()=>b4,createIm:()=>N5,createImmutableDenseMatrixClass:()=>ZL,createIndex:()=>kP,createIndexClass:()=>KL,createIndexNode:()=>KP,createIndexTransform:()=>FH,createInfinity:()=>dU,createIntersect:()=>Bq,createInv:()=>vq,createInverseConductanceQuantum:()=>UU,createInvmod:()=>o5,createIsInteger:()=>SI,createIsNaN:()=>UI,createIsNegative:()=>OI,createIsNumeric:()=>II,createIsPositive:()=>PI,createIsPrime:()=>G4,createIsZero:()=>qI,createKldivergence:()=>sz,createKlitzing:()=>WU,createKron:()=>Z5,createLN10:()=>bU,createLN2:()=>wU,createLOG10E:()=>SU,createLOG2E:()=>DU,createLarger:()=>PL,createLargerEq:()=>RL,createLcm:()=>qk,createLeafCount:()=>Vz,createLeftShift:()=>yL,createLgamma:()=>nz,createLog:()=>tL,createLog10:()=>Uk,createLog1p:()=>nL,createLog2:()=>$k,createLoschmidt:()=>fH,createLsolve:()=>cL,createLsolveAll:()=>hL,createLup:()=>d6,createLusolve:()=>F6,createLyap:()=>Fq,createMad:()=>Hq,createMagneticConstant:()=>kU,createMagneticFluxQuantum:()=>HU,createMap:()=>Nw,createMapTransform:()=>IH,createMatrix:()=>nk,createMatrixClass:()=>iI,createMatrixFromColumns:()=>lk,createMatrixFromFunction:()=>ok,createMatrixFromRows:()=>sk,createMax:()=>Uw,createMaxTransform:()=>BH,createMean:()=>hb,createMeanTransform:()=>PH,createMedian:()=>zq,createMin:()=>Hw,createMinTransform:()=>RH,createMod:()=>dw,createMode:()=>_4,createMolarMass:()=>xH,createMolarMassC12:()=>yH,createMolarPlanckConstant:()=>pH,createMolarVolume:()=>mH,createMultinomial:()=>lz,createMultiply:()=>Gk,createMultiplyScalar:()=>Wk,createNaN:()=>hU,createNeutronMass:()=>jU,createNode:()=>LP,createNorm:()=>TP,createNot:()=>M5,createNthRoot:()=>Zk,createNthRoots:()=>oL,createNuclearMagneton:()=>$U,createNull:()=>mU,createNumber:()=>YI,createNumeric:()=>Y4,createObjectNode:()=>JP,createOct:()=>R4,createOnes:()=>K5,createOperatorNode:()=>QP,createOr:()=>yw,createOrTransform:()=>r$,createParenthesisNode:()=>jP,createParse:()=>o6,createParser:()=>p6,createParserClass:()=>f6,createPartitionSelect:()=>$L,createPermutations:()=>pz,createPhi:()=>yU,createPi:()=>gU,createPickRandom:()=>Oz,createPinv:()=>yq,createPlanckCharge:()=>NH,createPlanckConstant:()=>FU,createPlanckLength:()=>bH,createPlanckMass:()=>DH,createPlanckTemperature:()=>EH,createPlanckTime:()=>SH,createPolynomialRoot:()=>k6,createPow:()=>J4,createPrint:()=>Fw,createPrintTransform:()=>e$,createProd:()=>F4,createProtonMass:()=>JU,createQr:()=>g6,createQuantileSeq:()=>vb,createQuantileSeqTransform:()=>ZH,createQuantumOfCirculation:()=>eH,createRandom:()=>Iz,createRandomInt:()=>Lz,createRange:()=>Mw,createRangeClass:()=>nI,createRangeNode:()=>e6,createRangeTransform:()=>qH,createRationalize:()=>nU,createRe:()=>A5,createReducedPlanckConstant:()=>IU,createRelationalNode:()=>t6,createReplacer:()=>lU,createReshape:()=>j5,createResize:()=>e4,createResolve:()=>Jz,createResultSet:()=>RF,createReviver:()=>uU,createRightArithShift:()=>bL,createRightLogShift:()=>SL,createRotate:()=>r4,createRotationMatrix:()=>i4,createRound:()=>j4,createRow:()=>Tw,createRowTransform:()=>zH,createRydberg:()=>tH,createSQRT1_2:()=>NU,createSQRT2:()=>EU,createSackurTetrode:()=>dH,createSchur:()=>_q,createSec:()=>ZB,createSech:()=>KB,createSecondRadiation:()=>hH,createSetCartesian:()=>oP,createSetDifference:()=>sP,createSetDistinct:()=>lP,createSetIntersect:()=>cP,createSetIsSubset:()=>mP,createSetMultiplicity:()=>hP,createSetPowerset:()=>vP,createSetSize:()=>yP,createSetSymDifference:()=>bP,createSetUnion:()=>SP,createSign:()=>Kk,createSimplify:()=>Yz,createSimplifyConstant:()=>Zz,createSimplifyCore:()=>Kz,createSin:()=>QB,createSinh:()=>eP,createSize:()=>s4,createSlu:()=>_6,createSmaller:()=>LL,createSmallerEq:()=>BL,createSolveODE:()=>E4,createSort:()=>VL,createSpaClass:()=>QL,createSparse:()=>uB,createSparseMatrixClass:()=>GI,createSpeedOfLight:()=>_U,createSplitUnit:()=>ck,createSqrt:()=>Jk,createSqrtm:()=>Aq,createSquare:()=>jk,createSqueeze:()=>l4,createStd:()=>xb,createStdTransform:()=>VH,createStefanBoltzmann:()=>gH,createStirlingS2:()=>Pz,createString:()=>KI,createSubset:()=>_w,createSubsetTransform:()=>UH,createSubtract:()=>t5,createSubtractScalar:()=>Dk,createSum:()=>pb,createSumTransform:()=>YH,createSylvester:()=>Mq,createSymbolNode:()=>r6,createSymbolicEqual:()=>jz,createTan:()=>rP,createTanh:()=>nP,createTau:()=>vU,createThomsonCrossSection:()=>rH,createTo:()=>W4,createTrace:()=>FP,createTranspose:()=>m4,createTrue:()=>cU,createTypeOf:()=>$I,createTyped:()=>PF,createUnaryMinus:()=>mk,createUnaryPlus:()=>hk,createUnequal:()=>UL,createUnitClass:()=>iB,createUnitFunction:()=>aB,createUppercaseE:()=>MU,createUppercasePi:()=>CU,createUsolve:()=>mL,createUsolveAll:()=>vL,createVacuumImpedance:()=>BU,createVariance:()=>gb,createVarianceTransform:()=>QH,createVersion:()=>TU,createWeakMixingAngle:()=>nH,createWienDisplacement:()=>vH,createXgcd:()=>n5,createXor:()=>O5,createZeros:()=>v4,createZeta:()=>M4,createZpk2tf:()=>oU});var QE=mn(U1(),1);function $(e,t,r,n){function i(o){var l=xF(o,t.map(ZE));return kne(e,t,o),r(l)}return i.isFactory=!0,i.fn=e,i.dependencies=t.slice().sort(),n&&(i.meta=n),i}function wp(e){return typeof e=="function"&&typeof e.fn=="string"&&Array.isArray(e.dependencies)}function kne(e,t,r){var n=t.filter(o=>!Lne(o)).every(o=>r[o]!==void 0);if(!n){var i=t.filter(o=>r[o]===void 0);throw new Error('Cannot create function "'.concat(e,'", ')+"some dependencies are missing: ".concat(i.map(o=>'"'.concat(o,'"')).join(", "),"."))}}function Lne(e){return e&&e[0]==="?"}function ZE(e){return e&&e[0]==="?"?e.slice(1):e}function dt(e){return typeof e=="boolean"?!0:isFinite(e)?e===Math.round(e):!1}function Bne(e){return/^-?\d+$/.test(e)}function fo(e,t){return t.number==="bigint"&&!Bne(e)?t.numberFallback:t.number}var Va=Math.sign||function(e){return e>0?1:e<0?-1:0},EF=Math.log2||function(t){return Math.log(t)/Math.LN2},AF=Math.log10||function(t){return Math.log(t)/Math.LN10},H1=Math.log1p||function(e){return Math.log(e+1)},CF=Math.cbrt||function(t){if(t===0)return t;var r=t<0,n;return r&&(t=-t),isFinite(t)?(n=Math.exp(Math.log(t)/3),n=(t/(n*n)+2*n)/3):n=t,r?-n:n},MF=Math.expm1||function(t){return t>=2e-4||t<=-2e-4?Math.exp(t)-1:t+t*t/2+t*t*t/6};function XE(e,t,r){var n={2:"0b",8:"0o",16:"0x"},i=n[t],o="";if(r){if(r<1)throw new Error("size must be in greater than 0");if(!dt(r))throw new Error("size must be an integer");if(e>2**(r-1)-1||e<-(2**(r-1)))throw new Error("Value must be in range [-2^".concat(r-1,", 2^").concat(r-1,"-1]"));if(!dt(e))throw new Error("Value must be an integer");e<0&&(e=e+2**r),o="i".concat(r)}var l="";return e<0&&(e=-e,l="-"),"".concat(l).concat(i).concat(e.toString(t)).concat(o)}function ks(e,t){if(typeof t=="function")return t(e);if(e===1/0)return"Infinity";if(e===-1/0)return"-Infinity";if(isNaN(e))return"NaN";var{notation:r,precision:n,wordSize:i}=KE(t);switch(r){case"fixed":return JE(e,n);case"exponential":return TF(e,n);case"engineering":return Pne(e,n);case"bin":return XE(e,2,i);case"oct":return XE(e,8,i);case"hex":return XE(e,16,i);case"auto":return Rne(e,n,t).replace(/((\.\d*?)(0+))($|e)/,function(){var o=arguments[2],l=arguments[4];return o!=="."?o+l:l});default:throw new Error('Unknown notation "'+r+'". Choose "auto", "exponential", "fixed", "bin", "oct", or "hex.')}}function KE(e){var t="auto",r,n;if(e!==void 0)if(Pt(e))r=e;else if(Ct(e))r=e.toNumber();else if(Is(e))e.precision!==void 0&&(r=SF(e.precision,()=>{throw new Error('Option "precision" must be a number or BigNumber')})),e.wordSize!==void 0&&(n=SF(e.wordSize,()=>{throw new Error('Option "wordSize" must be a number or BigNumber')})),e.notation&&(t=e.notation);else throw new Error("Unsupported type of options, number, BigNumber, or object expected");return{notation:t,precision:r,wordSize:n}}function gd(e){var t=String(e).toLowerCase().match(/^(-?)(\d+\.?\d*)(e([+-]?\d+))?$/);if(!t)throw new SyntaxError("Invalid number "+e);var r=t[1],n=t[2],i=parseFloat(t[4]||"0"),o=n.indexOf(".");i+=o!==-1?o-1:n.length-1;var l=n.replace(".","").replace(/^0*/,function(s){return i-=s.length,""}).replace(/0*$/,"").split("").map(function(s){return parseInt(s)});return l.length===0&&(l.push(0),i++),{sign:r,coefficients:l,exponent:i}}function Pne(e,t){if(isNaN(e)||!isFinite(e))return String(e);var r=gd(e),n=$1(r,t),i=n.exponent,o=n.coefficients,l=i%3===0?i:i<0?i-3-i%3:i-i%3;if(Pt(t))for(;t>o.length||i-l+1>o.length;)o.push(0);else for(var s=Math.abs(i-l)-(o.length-1),a=0;a0;)f++,u--;var p=o.slice(f).join(""),h=Pt(t)&&p.length||p.match(/[1-9]/)?"."+p:"",g=o.slice(0,f).join("")+h+"e"+(i>=0?"+":"")+l.toString();return n.sign+g}function JE(e,t){if(isNaN(e)||!isFinite(e))return String(e);var r=gd(e),n=typeof t=="number"?$1(r,r.exponent+1+t):r,i=n.coefficients,o=n.exponent+1,l=o+(t||0);return i.length0?"."+i.join(""):"")+"e"+(o>=0?"+":"")+o}function Rne(e,t,r){if(isNaN(e)||!isFinite(e))return String(e);var n=NF(r?.lowerExp,-3),i=NF(r?.upperExp,5),o=gd(e),l=t?$1(o,t):o;if(l.exponent=i)return TF(e,t);var s=l.coefficients,a=l.exponent;s.length0?a:0;return ut){var i=n.splice(t,n.length-t);if(i[0]>=5){var o=t-1;for(n[o]++;n[o]===10;)n.pop(),o===0&&(n.unshift(0),r.exponent++,o++),o--,n[o]++}}return r}function hd(e){for(var t=[],r=0;r2&&arguments[2]!==void 0?arguments[2]:1e-8,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;if(r<=0)throw new Error("Relative tolerance must be greater than 0");if(n<0)throw new Error("Absolute tolerance must be at least 0");return isNaN(e)||isNaN(t)?!1:!isFinite(e)||!isFinite(t)?e===t:e===t?!0:Math.abs(e-t)<=Math.max(r*Math.max(Math.abs(e),Math.abs(t)),n)}var OF=Math.acosh||function(e){return Math.log(Math.sqrt(e*e-1)+e)},FF=Math.asinh||function(e){return Math.log(Math.sqrt(e*e+1)+e)},IF=Math.atanh||function(e){return Math.log((1+e)/(1-e))/2},W1=Math.cosh||function(e){return(Math.exp(e)+Math.exp(-e))/2},kF=Math.sinh||function(e){return(Math.exp(e)-Math.exp(-e))/2},V1=Math.tanh||function(e){var t=Math.exp(2*e);return(t-1)/(t+1)};function LF(e,t){var r=e>0?!0:e<0?!1:1/e===1/0,n=t>0?!0:t<0?!1:1/t===1/0;return r^n?-e:e}function SF(e,t){if(Pt(e))return e;if(Ct(e))return e.toNumber();t()}function NF(e,t){return Pt(e)?e:Ct(e)?e.toNumber():t}var BF=function(){return BF=QE.default.create,QE.default},qne=["?BigNumber","?Complex","?DenseMatrix","?Fraction"],PF=$("typed",qne,function(t){var{BigNumber:r,Complex:n,DenseMatrix:i,Fraction:o}=t,l=BF();return l.clear(),l.addTypes([{name:"number",test:Pt},{name:"Complex",test:vi},{name:"BigNumber",test:Ct},{name:"bigint",test:C1},{name:"Fraction",test:ga},{name:"Unit",test:ti},{name:"identifier",test:s=>dn&&/^(?:[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CD\uA7D0\uA7D1\uA7D3\uA7D5-\uA7DC\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDDC0-\uDDF3\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDD4A-\uDD65\uDD6F-\uDD85\uDE80-\uDEA9\uDEB0\uDEB1\uDEC2-\uDEC4\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61\uDF80-\uDF89\uDF8B\uDF8E\uDF90-\uDFB5\uDFB7\uDFD1\uDFD3]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8\uDFC0-\uDFE0]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD80E\uD80F\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46\uDC60-\uDFFF]|\uD810[\uDC00-\uDFFA]|\uD811[\uDC00-\uDE46]|\uD818[\uDD00-\uDD1D]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDD40-\uDD6C\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDDD0-\uDDED\uDDF0\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])(?:[0-9A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CD\uA7D0\uA7D1\uA7D3\uA7D5-\uA7DC\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDDC0-\uDDF3\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDD4A-\uDD65\uDD6F-\uDD85\uDE80-\uDEA9\uDEB0\uDEB1\uDEC2-\uDEC4\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61\uDF80-\uDF89\uDF8B\uDF8E\uDF90-\uDFB5\uDFB7\uDFD1\uDFD3]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8\uDFC0-\uDFE0]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD80E\uD80F\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46\uDC60-\uDFFF]|\uD810[\uDC00-\uDFFA]|\uD811[\uDC00-\uDE46]|\uD818[\uDD00-\uDD1D]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDD40-\uDD6C\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDDD0-\uDDED\uDDF0\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])*$/.test(s)},{name:"string",test:dn},{name:"Chain",test:md},{name:"Array",test:dr},{name:"Matrix",test:gt},{name:"DenseMatrix",test:Tl},{name:"SparseMatrix",test:va},{name:"Range",test:Zf},{name:"Index",test:Ou},{name:"boolean",test:M1},{name:"ResultSet",test:T1},{name:"Help",test:pd},{name:"function",test:_1},{name:"Date",test:O1},{name:"RegExp",test:F1},{name:"null",test:I1},{name:"undefined",test:k1},{name:"AccessorNode",test:Mo},{name:"ArrayNode",test:xi},{name:"AssignmentNode",test:L1},{name:"BlockNode",test:B1},{name:"ConditionalNode",test:P1},{name:"ConstantNode",test:Qt},{name:"FunctionNode",test:Ji},{name:"FunctionAssignmentNode",test:Wa},{name:"IndexNode",test:Wo},{name:"Node",test:ir},{name:"ObjectNode",test:Fu},{name:"OperatorNode",test:$r},{name:"ParenthesisNode",test:yi},{name:"RangeNode",test:R1},{name:"RelationalNode",test:q1},{name:"SymbolNode",test:Lr},{name:"Map",test:_u},{name:"Object",test:Is}]),l.addConversions([{from:"number",to:"BigNumber",convert:function(a){if(r||G1(a),_F(a)>15)throw new TypeError("Cannot implicitly convert a number with >15 significant digits to BigNumber (value: "+a+"). Use function bignumber(x) to convert to BigNumber.");return new r(a)}},{from:"number",to:"Complex",convert:function(a){return n||Y1(a),new n(a,0)}},{from:"BigNumber",to:"Complex",convert:function(a){return n||Y1(a),new n(a.toNumber(),0)}},{from:"bigint",to:"number",convert:function(a){if(a>Number.MAX_SAFE_INTEGER)throw new TypeError("Cannot implicitly convert bigint to number: value exceeds the max safe integer value (value: "+a+")");return Number(a)}},{from:"bigint",to:"BigNumber",convert:function(a){return r||G1(a),new r(a.toString())}},{from:"bigint",to:"Fraction",convert:function(a){return o||Z1(a),new o(a)}},{from:"Fraction",to:"BigNumber",convert:function(a){throw new TypeError("Cannot implicitly convert a Fraction to BigNumber or vice versa. Use function bignumber(x) to convert to BigNumber or fraction(x) to convert to Fraction.")}},{from:"Fraction",to:"Complex",convert:function(a){return n||Y1(a),new n(a.valueOf(),0)}},{from:"number",to:"Fraction",convert:function(a){o||Z1(a);var u=new o(a);if(u.valueOf()!==a)throw new TypeError("Cannot implicitly convert a number to a Fraction when there will be a loss of precision (value: "+a+"). Use function fraction(x) to convert to Fraction.");return u}},{from:"string",to:"number",convert:function(a){var u=Number(a);if(isNaN(u))throw new Error('Cannot convert "'+a+'" to a number');return u}},{from:"string",to:"BigNumber",convert:function(a){r||G1(a);try{return new r(a)}catch{throw new Error('Cannot convert "'+a+'" to BigNumber')}}},{from:"string",to:"bigint",convert:function(a){try{return BigInt(a)}catch{throw new Error('Cannot convert "'+a+'" to BigInt')}}},{from:"string",to:"Fraction",convert:function(a){o||Z1(a);try{return new o(a)}catch{throw new Error('Cannot convert "'+a+'" to Fraction')}}},{from:"string",to:"Complex",convert:function(a){n||Y1(a);try{return new n(a)}catch{throw new Error('Cannot convert "'+a+'" to Complex')}}},{from:"boolean",to:"number",convert:function(a){return+a}},{from:"boolean",to:"BigNumber",convert:function(a){return r||G1(a),new r(+a)}},{from:"boolean",to:"bigint",convert:function(a){return BigInt(+a)}},{from:"boolean",to:"Fraction",convert:function(a){return o||Z1(a),new o(+a)}},{from:"boolean",to:"string",convert:function(a){return String(a)}},{from:"Array",to:"Matrix",convert:function(a){return i||zne(),new i(a)}},{from:"Matrix",to:"Array",convert:function(a){return a.valueOf()}}]),l.onMismatch=(s,a,u)=>{var f=l.createError(s,a,u);if(["wrongType","mismatch"].includes(f.data.category)&&a.length===1&&gn(a[0])&&u.some(h=>!h.params.includes(","))){var p=new TypeError("Function '".concat(s,"' doesn't apply to matrices. To call it ")+"elementwise on a matrix 'M', try 'map(M, ".concat(s,")'."));throw p.data=f.data,p}throw f},l.onMismatch=(s,a,u)=>{var f=l.createError(s,a,u);if(["wrongType","mismatch"].includes(f.data.category)&&a.length===1&&gn(a[0])&&u.some(h=>!h.params.includes(","))){var p=new TypeError("Function '".concat(s,"' doesn't apply to matrices. To call it ")+"elementwise on a matrix 'M', try 'map(M, ".concat(s,")'."));throw p.data=f.data,p}throw f},l});function G1(e){throw new Error("Cannot convert value ".concat(e," into a BigNumber: no class 'BigNumber' provided"))}function Y1(e){throw new Error("Cannot convert value ".concat(e," into a Complex number: no class 'Complex' provided"))}function zne(){throw new Error("Cannot convert array into a Matrix: no class 'DenseMatrix' provided")}function Z1(e){throw new Error("Cannot convert value ".concat(e," into a Fraction, no class 'Fraction' provided."))}var Une="ResultSet",Hne=[],RF=$(Une,Hne,()=>{function e(t){if(!(this instanceof e))throw new SyntaxError("Constructor must be called with the new operator");this.entries=t||[]}return e.prototype.type="ResultSet",e.prototype.isResultSet=!0,e.prototype.valueOf=function(){return this.entries},e.prototype.toString=function(){return"["+this.entries.map(String).join(", ")+"]"},e.prototype.toJSON=function(){return{mathjs:"ResultSet",entries:this.entries}},e.fromJSON=function(t){return new e(t.entries)},e},{isClass:!0});var vd=9e15,Qf=1e9,jE="0123456789abcdef",K1="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",J1="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",eA={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-vd,maxE:vd,crypto:!1},HF,_l,sr=!0,j1="[DecimalError] ",Jf=j1+"Invalid argument: ",$F=j1+"Precision limit exceeded",WF=j1+"crypto unavailable",VF="[object Decimal]",co=Math.floor,wi=Math.pow,$ne=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Wne=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Vne=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,GF=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Bs=1e7,er=7,Gne=9007199254740991,Yne=K1.length-1,tA=J1.length-1,ut={toStringTag:VF};ut.absoluteValue=ut.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),Yt(e)};ut.ceil=function(){return Yt(new this.constructor(this),this.e+1,2)};ut.clampedTo=ut.clamp=function(e,t){var r,n=this,i=n.constructor;if(e=new i(e),t=new i(t),!e.s||!t.s)return new i(NaN);if(e.gt(t))throw Error(Jf+t);return r=n.cmp(e),r<0?e:n.cmp(t)>0?t:new i(n)};ut.comparedTo=ut.cmp=function(e){var t,r,n,i,o=this,l=o.d,s=(e=new o.constructor(e)).d,a=o.s,u=e.s;if(!l||!s)return!a||!u?NaN:a!==u?a:l===s?0:!l^a<0?1:-1;if(!l[0]||!s[0])return l[0]?a:s[0]?-u:0;if(a!==u)return a;if(o.e!==e.e)return o.e>e.e^a<0?1:-1;for(n=l.length,i=s.length,t=0,r=ns[t]^a<0?1:-1;return n===i?0:n>i^a<0?1:-1};ut.cosine=ut.cos=function(){var e,t,r=this,n=r.constructor;return r.d?r.d[0]?(e=n.precision,t=n.rounding,n.precision=e+Math.max(r.e,r.sd())+er,n.rounding=1,r=Zne(n,JF(n,r)),n.precision=e,n.rounding=t,Yt(_l==2||_l==3?r.neg():r,e,t,!0)):new n(1):new n(NaN)};ut.cubeRoot=ut.cbrt=function(){var e,t,r,n,i,o,l,s,a,u,f=this,p=f.constructor;if(!f.isFinite()||f.isZero())return new p(f);for(sr=!1,o=f.s*wi(f.s*f,1/3),!o||Math.abs(o)==1/0?(r=Qi(f.d),e=f.e,(o=(e-r.length+1)%3)&&(r+=o==1||o==-2?"0":"00"),o=wi(r,1/3),e=co((e+1)/3)-(e%3==(e<0?-1:2)),o==1/0?r="5e"+e:(r=o.toExponential(),r=r.slice(0,r.indexOf("e")+1)+e),n=new p(r),n.s=f.s):n=new p(o.toString()),l=(e=p.precision)+3;;)if(s=n,a=s.times(s).times(s),u=a.plus(f),n=ln(u.plus(f).times(s),u.plus(a),l+2,1),Qi(s.d).slice(0,l)===(r=Qi(n.d)).slice(0,l))if(r=r.slice(l-3,l+1),r=="9999"||!i&&r=="4999"){if(!i&&(Yt(s,e+1,0),s.times(s).times(s).eq(f))){n=s;break}l+=4,i=1}else{(!+r||!+r.slice(1)&&r.charAt(0)=="5")&&(Yt(n,e+1,1),t=!n.times(n).times(n).eq(f));break}return sr=!0,Yt(n,e,p.rounding,t)};ut.decimalPlaces=ut.dp=function(){var e,t=this.d,r=NaN;if(t){if(e=t.length-1,r=(e-co(this.e/er))*er,e=t[e],e)for(;e%10==0;e/=10)r--;r<0&&(r=0)}return r};ut.dividedBy=ut.div=function(e){return ln(this,new this.constructor(e))};ut.dividedToIntegerBy=ut.divToInt=function(e){var t=this,r=t.constructor;return Yt(ln(t,new r(e),0,1,1),r.precision,r.rounding)};ut.equals=ut.eq=function(e){return this.cmp(e)===0};ut.floor=function(){return Yt(new this.constructor(this),this.e+1,3)};ut.greaterThan=ut.gt=function(e){return this.cmp(e)>0};ut.greaterThanOrEqualTo=ut.gte=function(e){var t=this.cmp(e);return t==1||t===0};ut.hyperbolicCosine=ut.cosh=function(){var e,t,r,n,i,o=this,l=o.constructor,s=new l(1);if(!o.isFinite())return new l(o.s?1/0:NaN);if(o.isZero())return s;r=l.precision,n=l.rounding,l.precision=r+Math.max(o.e,o.sd())+4,l.rounding=1,i=o.d.length,i<32?(e=Math.ceil(i/3),t=(1/tw(4,e)).toString()):(e=16,t="2.3283064365386962890625e-10"),o=xd(l,1,o.times(t),new l(1),!0);for(var a,u=e,f=new l(8);u--;)a=o.times(o),o=s.minus(a.times(f.minus(a.times(f))));return Yt(o,l.precision=r,l.rounding=n,!0)};ut.hyperbolicSine=ut.sinh=function(){var e,t,r,n,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(t=o.precision,r=o.rounding,o.precision=t+Math.max(i.e,i.sd())+4,o.rounding=1,n=i.d.length,n<3)i=xd(o,2,i,i,!0);else{e=1.4*Math.sqrt(n),e=e>16?16:e|0,i=i.times(1/tw(5,e)),i=xd(o,2,i,i,!0);for(var l,s=new o(5),a=new o(16),u=new o(20);e--;)l=i.times(i),i=i.times(s.plus(l.times(a.times(l).plus(u))))}return o.precision=t,o.rounding=r,Yt(i,t,r,!0)};ut.hyperbolicTangent=ut.tanh=function(){var e,t,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+7,n.rounding=1,ln(r.sinh(),r.cosh(),n.precision=e,n.rounding=t)):new n(r.s)};ut.inverseCosine=ut.acos=function(){var e,t=this,r=t.constructor,n=t.abs().cmp(1),i=r.precision,o=r.rounding;return n!==-1?n===0?t.isNeg()?Ls(r,i,o):new r(0):new r(NaN):t.isZero()?Ls(r,i+4,o).times(.5):(r.precision=i+6,r.rounding=1,t=t.asin(),e=Ls(r,i+4,o).times(.5),r.precision=i,r.rounding=o,e.minus(t))};ut.inverseHyperbolicCosine=ut.acosh=function(){var e,t,r=this,n=r.constructor;return r.lte(1)?new n(r.eq(1)?0:NaN):r.isFinite()?(e=n.precision,t=n.rounding,n.precision=e+Math.max(Math.abs(r.e),r.sd())+4,n.rounding=1,sr=!1,r=r.times(r).minus(1).sqrt().plus(r),sr=!0,n.precision=e,n.rounding=t,r.ln()):new n(r)};ut.inverseHyperbolicSine=ut.asinh=function(){var e,t,r=this,n=r.constructor;return!r.isFinite()||r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+2*Math.max(Math.abs(r.e),r.sd())+6,n.rounding=1,sr=!1,r=r.times(r).plus(1).sqrt().plus(r),sr=!0,n.precision=e,n.rounding=t,r.ln())};ut.inverseHyperbolicTangent=ut.atanh=function(){var e,t,r,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(e=o.precision,t=o.rounding,n=i.sd(),Math.max(n,e)<2*-i.e-1?Yt(new o(i),e,t,!0):(o.precision=r=n-i.e,i=ln(i.plus(1),new o(1).minus(i),r+e,1),o.precision=e+4,o.rounding=1,i=i.ln(),o.precision=e,o.rounding=t,i.times(.5))):new o(NaN)};ut.inverseSine=ut.asin=function(){var e,t,r,n,i=this,o=i.constructor;return i.isZero()?new o(i):(t=i.abs().cmp(1),r=o.precision,n=o.rounding,t!==-1?t===0?(e=Ls(o,r+4,n).times(.5),e.s=i.s,e):new o(NaN):(o.precision=r+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=r,o.rounding=n,i.times(2)))};ut.inverseTangent=ut.atan=function(){var e,t,r,n,i,o,l,s,a,u=this,f=u.constructor,p=f.precision,h=f.rounding;if(u.isFinite()){if(u.isZero())return new f(u);if(u.abs().eq(1)&&p+4<=tA)return l=Ls(f,p+4,h).times(.25),l.s=u.s,l}else{if(!u.s)return new f(NaN);if(p+4<=tA)return l=Ls(f,p+4,h).times(.5),l.s=u.s,l}for(f.precision=s=p+10,f.rounding=1,r=Math.min(28,s/er+2|0),e=r;e;--e)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(sr=!1,t=Math.ceil(s/er),n=1,a=u.times(u),l=new f(u),i=u;e!==-1;)if(i=i.times(a),o=l.minus(i.div(n+=2)),i=i.times(a),l=o.plus(i.div(n+=2)),l.d[t]!==void 0)for(e=t;l.d[e]===o.d[e]&&e--;);return r&&(l=l.times(2<this.d.length-2};ut.isNaN=function(){return!this.s};ut.isNegative=ut.isNeg=function(){return this.s<0};ut.isPositive=ut.isPos=function(){return this.s>0};ut.isZero=function(){return!!this.d&&this.d[0]===0};ut.lessThan=ut.lt=function(e){return this.cmp(e)<0};ut.lessThanOrEqualTo=ut.lte=function(e){return this.cmp(e)<1};ut.logarithm=ut.log=function(e){var t,r,n,i,o,l,s,a,u=this,f=u.constructor,p=f.precision,h=f.rounding,g=5;if(e==null)e=new f(10),t=!0;else{if(e=new f(e),r=e.d,e.s<0||!r||!r[0]||e.eq(1))return new f(NaN);t=e.eq(10)}if(r=u.d,u.s<0||!r||!r[0]||u.eq(1))return new f(r&&!r[0]?-1/0:u.s!=1?NaN:r?0:1/0);if(t)if(r.length>1)o=!0;else{for(i=r[0];i%10===0;)i/=10;o=i!==1}if(sr=!1,s=p+g,l=Kf(u,s),n=t?Q1(f,s+10):Kf(e,s),a=ln(l,n,s,1),Tv(a.d,i=p,h))do if(s+=10,l=Kf(u,s),n=t?Q1(f,s+10):Kf(e,s),a=ln(l,n,s,1),!o){+Qi(a.d).slice(i+1,i+15)+1==1e14&&(a=Yt(a,p+1,0));break}while(Tv(a.d,i+=10,h));return sr=!0,Yt(a,p,h)};ut.minus=ut.sub=function(e){var t,r,n,i,o,l,s,a,u,f,p,h,g=this,x=g.constructor;if(e=new x(e),!g.d||!e.d)return!g.s||!e.s?e=new x(NaN):g.d?e.s=-e.s:e=new x(e.d||g.s!==e.s?g:NaN),e;if(g.s!=e.s)return e.s=-e.s,g.plus(e);if(u=g.d,h=e.d,s=x.precision,a=x.rounding,!u[0]||!h[0]){if(h[0])e.s=-e.s;else if(u[0])e=new x(g);else return new x(a===3?-0:0);return sr?Yt(e,s,a):e}if(r=co(e.e/er),f=co(g.e/er),u=u.slice(),o=f-r,o){for(p=o<0,p?(t=u,o=-o,l=h.length):(t=h,r=f,l=u.length),n=Math.max(Math.ceil(s/er),l)+2,o>n&&(o=n,t.length=1),t.reverse(),n=o;n--;)t.push(0);t.reverse()}else{for(n=u.length,l=h.length,p=n0;--n)u[l++]=0;for(n=h.length;n>o;){if(u[--n]l?o+1:l+1,i>l&&(i=l,r.length=1),r.reverse();i--;)r.push(0);r.reverse()}for(l=u.length,i=f.length,l-i<0&&(i=l,r=f,f=u,u=r),t=0;i;)t=(u[--i]=u[i]+f[i]+t)/Bs|0,u[i]%=Bs;for(t&&(u.unshift(t),++n),l=u.length;u[--l]==0;)u.pop();return e.d=u,e.e=ew(u,n),sr?Yt(e,s,a):e};ut.precision=ut.sd=function(e){var t,r=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(Jf+e);return r.d?(t=YF(r.d),e&&r.e+1>t&&(t=r.e+1)):t=NaN,t};ut.round=function(){var e=this,t=e.constructor;return Yt(new t(e),e.e+1,t.rounding)};ut.sine=ut.sin=function(){var e,t,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+Math.max(r.e,r.sd())+er,n.rounding=1,r=Kne(n,JF(n,r)),n.precision=e,n.rounding=t,Yt(_l>2?r.neg():r,e,t,!0)):new n(NaN)};ut.squareRoot=ut.sqrt=function(){var e,t,r,n,i,o,l=this,s=l.d,a=l.e,u=l.s,f=l.constructor;if(u!==1||!s||!s[0])return new f(!u||u<0&&(!s||s[0])?NaN:s?l:1/0);for(sr=!1,u=Math.sqrt(+l),u==0||u==1/0?(t=Qi(s),(t.length+a)%2==0&&(t+="0"),u=Math.sqrt(t),a=co((a+1)/2)-(a<0||a%2),u==1/0?t="5e"+a:(t=u.toExponential(),t=t.slice(0,t.indexOf("e")+1)+a),n=new f(t)):n=new f(u.toString()),r=(a=f.precision)+3;;)if(o=n,n=o.plus(ln(l,o,r+2,1)).times(.5),Qi(o.d).slice(0,r)===(t=Qi(n.d)).slice(0,r))if(t=t.slice(r-3,r+1),t=="9999"||!i&&t=="4999"){if(!i&&(Yt(o,a+1,0),o.times(o).eq(l))){n=o;break}r+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(Yt(n,a+1,1),e=!n.times(n).eq(l));break}return sr=!0,Yt(n,a,f.rounding,e)};ut.tangent=ut.tan=function(){var e,t,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+10,n.rounding=1,r=r.sin(),r.s=1,r=ln(r,new n(1).minus(r.times(r)).sqrt(),e+10,0),n.precision=e,n.rounding=t,Yt(_l==2||_l==4?r.neg():r,e,t,!0)):new n(NaN)};ut.times=ut.mul=function(e){var t,r,n,i,o,l,s,a,u,f=this,p=f.constructor,h=f.d,g=(e=new p(e)).d;if(e.s*=f.s,!h||!h[0]||!g||!g[0])return new p(!e.s||h&&!h[0]&&!g||g&&!g[0]&&!h?NaN:!h||!g?e.s/0:e.s*0);for(r=co(f.e/er)+co(e.e/er),a=h.length,u=g.length,a=0;){for(t=0,i=a+n;i>n;)s=o[i]+g[n]*h[i-n-1]+t,o[i--]=s%Bs|0,t=s/Bs|0;o[i]=(o[i]+t)%Bs|0}for(;!o[--l];)o.pop();return t?++r:o.shift(),e.d=o,e.e=ew(o,r),sr?Yt(e,p.precision,p.rounding):e};ut.toBinary=function(e,t){return iA(this,2,e,t)};ut.toDecimalPlaces=ut.toDP=function(e,t){var r=this,n=r.constructor;return r=new n(r),e===void 0?r:(Go(e,0,Qf),t===void 0?t=n.rounding:Go(t,0,8),Yt(r,e+r.e+1,t))};ut.toExponential=function(e,t){var r,n=this,i=n.constructor;return e===void 0?r=Iu(n,!0):(Go(e,0,Qf),t===void 0?t=i.rounding:Go(t,0,8),n=Yt(new i(n),e+1,t),r=Iu(n,!0,e+1)),n.isNeg()&&!n.isZero()?"-"+r:r};ut.toFixed=function(e,t){var r,n,i=this,o=i.constructor;return e===void 0?r=Iu(i):(Go(e,0,Qf),t===void 0?t=o.rounding:Go(t,0,8),n=Yt(new o(i),e+i.e+1,t),r=Iu(n,!1,e+n.e+1)),i.isNeg()&&!i.isZero()?"-"+r:r};ut.toFraction=function(e){var t,r,n,i,o,l,s,a,u,f,p,h,g=this,x=g.d,v=g.constructor;if(!x)return new v(g);if(u=r=new v(1),n=a=new v(0),t=new v(n),o=t.e=YF(x)-g.e-1,l=o%er,t.d[0]=wi(10,l<0?er+l:l),e==null)e=o>0?t:u;else{if(s=new v(e),!s.isInt()||s.lt(u))throw Error(Jf+s);e=s.gt(t)?o>0?t:u:s}for(sr=!1,s=new v(Qi(x)),f=v.precision,v.precision=o=x.length*er*2;p=ln(s,t,0,1,1),i=r.plus(p.times(n)),i.cmp(e)!=1;)r=n,n=i,i=u,u=a.plus(p.times(i)),a=i,i=t,t=s.minus(p.times(i)),s=i;return i=ln(e.minus(r),n,0,1,1),a=a.plus(i.times(u)),r=r.plus(i.times(n)),a.s=u.s=g.s,h=ln(u,n,o,1).minus(g).abs().cmp(ln(a,r,o,1).minus(g).abs())<1?[u,n]:[a,r],v.precision=f,sr=!0,h};ut.toHexadecimal=ut.toHex=function(e,t){return iA(this,16,e,t)};ut.toNearest=function(e,t){var r=this,n=r.constructor;if(r=new n(r),e==null){if(!r.d)return r;e=new n(1),t=n.rounding}else{if(e=new n(e),t===void 0?t=n.rounding:Go(t,0,8),!r.d)return e.s?r:e;if(!e.d)return e.s&&(e.s=r.s),e}return e.d[0]?(sr=!1,r=ln(r,e,0,t,1).times(e),sr=!0,Yt(r)):(e.s=r.s,r=e),r};ut.toNumber=function(){return+this};ut.toOctal=function(e,t){return iA(this,8,e,t)};ut.toPower=ut.pow=function(e){var t,r,n,i,o,l,s=this,a=s.constructor,u=+(e=new a(e));if(!s.d||!e.d||!s.d[0]||!e.d[0])return new a(wi(+s,u));if(s=new a(s),s.eq(1))return s;if(n=a.precision,o=a.rounding,e.eq(1))return Yt(s,n,o);if(t=co(e.e/er),t>=e.d.length-1&&(r=u<0?-u:u)<=Gne)return i=ZF(a,s,r,n),e.s<0?new a(1).div(i):Yt(i,n,o);if(l=s.s,l<0){if(ta.maxE+1||t0?l/0:0):(sr=!1,a.rounding=s.s=1,r=Math.min(12,(t+"").length),i=rA(e.times(Kf(s,n+r)),n),i.d&&(i=Yt(i,n+5,1),Tv(i.d,n,o)&&(t=n+10,i=Yt(rA(e.times(Kf(s,t+r)),t),t+5,1),+Qi(i.d).slice(n+1,n+15)+1==1e14&&(i=Yt(i,n+1,0)))),i.s=l,sr=!0,a.rounding=o,Yt(i,n,o))};ut.toPrecision=function(e,t){var r,n=this,i=n.constructor;return e===void 0?r=Iu(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(Go(e,1,Qf),t===void 0?t=i.rounding:Go(t,0,8),n=Yt(new i(n),e,t),r=Iu(n,e<=n.e||n.e<=i.toExpNeg,e)),n.isNeg()&&!n.isZero()?"-"+r:r};ut.toSignificantDigits=ut.toSD=function(e,t){var r=this,n=r.constructor;return e===void 0?(e=n.precision,t=n.rounding):(Go(e,1,Qf),t===void 0?t=n.rounding:Go(t,0,8)),Yt(new n(r),e,t)};ut.toString=function(){var e=this,t=e.constructor,r=Iu(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()&&!e.isZero()?"-"+r:r};ut.truncated=ut.trunc=function(){return Yt(new this.constructor(this),this.e+1,1)};ut.valueOf=ut.toJSON=function(){var e=this,t=e.constructor,r=Iu(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()?"-"+r:r};function Qi(e){var t,r,n,i=e.length-1,o="",l=e[0];if(i>0){for(o+=l,t=1;tr)throw Error(Jf+e)}function Tv(e,t,r,n){var i,o,l,s;for(o=e[0];o>=10;o/=10)--t;return--t<0?(t+=er,i=0):(i=Math.ceil((t+1)/er),t%=er),o=wi(10,er-t),s=e[i]%o|0,n==null?t<3?(t==0?s=s/100|0:t==1&&(s=s/10|0),l=r<4&&s==99999||r>3&&s==49999||s==5e4||s==0):l=(r<4&&s+1==o||r>3&&s+1==o/2)&&(e[i+1]/o/100|0)==wi(10,t-2)-1||(s==o/2||s==0)&&(e[i+1]/o/100|0)==0:t<4?(t==0?s=s/1e3|0:t==1?s=s/100|0:t==2&&(s=s/10|0),l=(n||r<4)&&s==9999||!n&&r>3&&s==4999):l=((n||r<4)&&s+1==o||!n&&r>3&&s+1==o/2)&&(e[i+1]/o/1e3|0)==wi(10,t-3)-1,l}function X1(e,t,r){for(var n,i=[0],o,l=0,s=e.length;lr-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/r|0,i[n]%=r)}return i.reverse()}function Zne(e,t){var r,n,i;if(t.isZero())return t;n=t.d.length,n<32?(r=Math.ceil(n/3),i=(1/tw(4,r)).toString()):(r=16,i="2.3283064365386962890625e-10"),e.precision+=r,t=xd(e,1,t.times(i),new e(1));for(var o=r;o--;){var l=t.times(t);t=l.times(l).minus(l).times(8).plus(1)}return e.precision-=r,t}var ln=function(){function e(n,i,o){var l,s=0,a=n.length;for(n=n.slice();a--;)l=n[a]*i+s,n[a]=l%o|0,s=l/o|0;return s&&n.unshift(s),n}function t(n,i,o,l){var s,a;if(o!=l)a=o>l?1:-1;else for(s=a=0;si[s]?1:-1;break}return a}function r(n,i,o,l){for(var s=0;o--;)n[o]-=s,s=n[o]1;)n.shift()}return function(n,i,o,l,s,a){var u,f,p,h,g,x,v,S,D,C,E,M,T,N,O,F,I,B,L,q,R=n.constructor,V=n.s==i.s?1:-1,X=n.d,U=i.d;if(!X||!X[0]||!U||!U[0])return new R(!n.s||!i.s||(X?U&&X[0]==U[0]:!U)?NaN:X&&X[0]==0||!U?V*0:V/0);for(a?(g=1,f=n.e-i.e):(a=Bs,g=er,f=co(n.e/g)-co(i.e/g)),L=U.length,I=X.length,D=new R(V),C=D.d=[],p=0;U[p]==(X[p]||0);p++);if(U[p]>(X[p]||0)&&f--,o==null?(N=o=R.precision,l=R.rounding):s?N=o+(n.e-i.e)+1:N=o,N<0)C.push(1),x=!0;else{if(N=N/g+2|0,p=0,L==1){for(h=0,U=U[0],N++;(p1&&(U=e(U,h,a),X=e(X,h,a),L=U.length,I=X.length),F=L,E=X.slice(0,L),M=E.length;M=a/2&&++B;do h=0,u=t(U,E,L,M),u<0?(T=E[0],L!=M&&(T=T*a+(E[1]||0)),h=T/B|0,h>1?(h>=a&&(h=a-1),v=e(U,h,a),S=v.length,M=E.length,u=t(v,E,S,M),u==1&&(h--,r(v,L=10;h/=10)p++;D.e=p+f*g-1,Yt(D,s?o+D.e+1:o,l,x)}return D}}();function Yt(e,t,r,n){var i,o,l,s,a,u,f,p,h,g=e.constructor;e:if(t!=null){if(p=e.d,!p)return e;for(i=1,s=p[0];s>=10;s/=10)i++;if(o=t-i,o<0)o+=er,l=t,f=p[h=0],a=f/wi(10,i-l-1)%10|0;else if(h=Math.ceil((o+1)/er),s=p.length,h>=s)if(n){for(;s++<=h;)p.push(0);f=a=0,i=1,o%=er,l=o-er+1}else break e;else{for(f=s=p[h],i=1;s>=10;s/=10)i++;o%=er,l=o-er+i,a=l<0?0:f/wi(10,i-l-1)%10|0}if(n=n||t<0||p[h+1]!==void 0||(l<0?f:f%wi(10,i-l-1)),u=r<4?(a||n)&&(r==0||r==(e.s<0?3:2)):a>5||a==5&&(r==4||n||r==6&&(o>0?l>0?f/wi(10,i-l):0:p[h-1])%10&1||r==(e.s<0?8:7)),t<1||!p[0])return p.length=0,u?(t-=e.e+1,p[0]=wi(10,(er-t%er)%er),e.e=-t||0):p[0]=e.e=0,e;if(o==0?(p.length=h,s=1,h--):(p.length=h+1,s=wi(10,er-o),p[h]=l>0?(f/wi(10,i-l)%wi(10,l)|0)*s:0),u)for(;;)if(h==0){for(o=1,l=p[0];l>=10;l/=10)o++;for(l=p[0]+=s,s=1;l>=10;l/=10)s++;o!=s&&(e.e++,p[0]==Bs&&(p[0]=1));break}else{if(p[h]+=s,p[h]!=Bs)break;p[h--]=0,s=1}for(o=p.length;p[--o]===0;)p.pop()}return sr&&(e.e>g.maxE?(e.d=null,e.e=NaN):e.e0?o=o.charAt(0)+"."+o.slice(1)+Xf(n):l>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(e.e<0?"e":"e+")+e.e):i<0?(o="0."+Xf(-i-1)+o,r&&(n=r-l)>0&&(o+=Xf(n))):i>=l?(o+=Xf(i+1-l),r&&(n=r-i-1)>0&&(o=o+"."+Xf(n))):((n=i+1)0&&(i+1===l&&(o+="."),o+=Xf(n))),o}function ew(e,t){var r=e[0];for(t*=er;r>=10;r/=10)t++;return t}function Q1(e,t,r){if(t>Yne)throw sr=!0,r&&(e.precision=r),Error($F);return Yt(new e(K1),t,1,!0)}function Ls(e,t,r){if(t>tA)throw Error($F);return Yt(new e(J1),t,r,!0)}function YF(e){var t=e.length-1,r=t*er+1;if(t=e[t],t){for(;t%10==0;t/=10)r--;for(t=e[0];t>=10;t/=10)r++}return r}function Xf(e){for(var t="";e--;)t+="0";return t}function ZF(e,t,r,n){var i,o=new e(1),l=Math.ceil(n/er+4);for(sr=!1;;){if(r%2&&(o=o.times(t),zF(o.d,l)&&(i=!0)),r=co(r/2),r===0){r=o.d.length-1,i&&o.d[r]===0&&++o.d[r];break}t=t.times(t),zF(t.d,l)}return sr=!0,o}function qF(e){return e.d[e.d.length-1]&1}function XF(e,t,r){for(var n,i=new e(t[0]),o=0;++o17)return new h(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:NaN);for(t==null?(sr=!1,a=x):a=t,s=new h(.03125);e.e>-2;)e=e.times(s),p+=5;for(n=Math.log(wi(2,p))/Math.LN10*2+5|0,a+=n,r=o=l=new h(1),h.precision=a;;){if(o=Yt(o.times(e),a,1),r=r.times(++f),s=l.plus(ln(o,r,a,1)),Qi(s.d).slice(0,a)===Qi(l.d).slice(0,a)){for(i=p;i--;)l=Yt(l.times(l),a,1);if(t==null)if(u<3&&Tv(l.d,a-n,g,u))h.precision=a+=10,r=o=s=new h(1),f=0,u++;else return Yt(l,h.precision=x,g,sr=!0);else return h.precision=x,l}l=s}}function Kf(e,t){var r,n,i,o,l,s,a,u,f,p,h,g=1,x=10,v=e,S=v.d,D=v.constructor,C=D.rounding,E=D.precision;if(v.s<0||!S||!S[0]||!v.e&&S[0]==1&&S.length==1)return new D(S&&!S[0]?-1/0:v.s!=1?NaN:S?0:v);if(t==null?(sr=!1,f=E):f=t,D.precision=f+=x,r=Qi(S),n=r.charAt(0),Math.abs(o=v.e)<15e14){for(;n<7&&n!=1||n==1&&r.charAt(1)>3;)v=v.times(e),r=Qi(v.d),n=r.charAt(0),g++;o=v.e,n>1?(v=new D("0."+r),o++):v=new D(n+"."+r.slice(1))}else return u=Q1(D,f+2,E).times(o+""),v=Kf(new D(n+"."+r.slice(1)),f-x).plus(u),D.precision=E,t==null?Yt(v,E,C,sr=!0):v;for(p=v,a=l=v=ln(v.minus(1),v.plus(1),f,1),h=Yt(v.times(v),f,1),i=3;;){if(l=Yt(l.times(h),f,1),u=a.plus(ln(l,new D(i),f,1)),Qi(u.d).slice(0,f)===Qi(a.d).slice(0,f))if(a=a.times(2),o!==0&&(a=a.plus(Q1(D,f+2,E).times(o+""))),a=ln(a,new D(g),f,1),t==null)if(Tv(a.d,f-x,C,s))D.precision=f+=x,u=l=v=ln(p.minus(1),p.plus(1),f,1),h=Yt(v.times(v),f,1),i=s=1;else return Yt(a,D.precision=E,C,sr=!0);else return D.precision=E,a;a=u,i+=2}}function KF(e){return String(e.s*e.s/0)}function nA(e,t){var r,n,i;for((r=t.indexOf("."))>-1&&(t=t.replace(".","")),(n=t.search(/e/i))>0?(r<0&&(r=n),r+=+t.slice(n+1),t=t.substring(0,n)):r<0&&(r=t.length),n=0;t.charCodeAt(n)===48;n++);for(i=t.length;t.charCodeAt(i-1)===48;--i);if(t=t.slice(n,i),t){if(i-=n,e.e=r=r-n-1,e.d=[],n=(r+1)%er,r<0&&(n+=er),ne.constructor.maxE?(e.d=null,e.e=NaN):e.e-1){if(t=t.replace(/(\d)_(?=\d)/g,"$1"),GF.test(t))return nA(e,t)}else if(t==="Infinity"||t==="NaN")return+t||(e.s=NaN),e.e=NaN,e.d=null,e;if(Wne.test(t))r=16,t=t.toLowerCase();else if($ne.test(t))r=2;else if(Vne.test(t))r=8;else throw Error(Jf+t);for(o=t.search(/p/i),o>0?(a=+t.slice(o+1),t=t.substring(2,o)):t=t.slice(2),o=t.indexOf("."),l=o>=0,n=e.constructor,l&&(t=t.replace(".",""),s=t.length,o=s-o,i=ZF(n,new n(r),o,o*2)),u=X1(t,r,Bs),f=u.length-1,o=f;u[o]===0;--o)u.pop();return o<0?new n(e.s*0):(e.e=ew(u,f),e.d=u,sr=!1,l&&(e=ln(e,i,s*4)),a&&(e=e.times(Math.abs(a)<54?wi(2,a):_v.pow(2,a))),sr=!0,e)}function Kne(e,t){var r,n=t.d.length;if(n<3)return t.isZero()?t:xd(e,2,t,t);r=1.4*Math.sqrt(n),r=r>16?16:r|0,t=t.times(1/tw(5,r)),t=xd(e,2,t,t);for(var i,o=new e(5),l=new e(16),s=new e(20);r--;)i=t.times(t),t=t.times(o.plus(i.times(l.times(i).minus(s))));return t}function xd(e,t,r,n,i){var o,l,s,a,u=1,f=e.precision,p=Math.ceil(f/er);for(sr=!1,a=r.times(r),s=new e(n);;){if(l=ln(s.times(a),new e(t++*t++),f,1),s=i?n.plus(l):n.minus(l),n=ln(l.times(a),new e(t++*t++),f,1),l=s.plus(n),l.d[p]!==void 0){for(o=p;l.d[o]===s.d[o]&&o--;);if(o==-1)break}o=s,s=n,n=l,l=o,u++}return sr=!0,l.d.length=p+1,l}function tw(e,t){for(var r=e;--t;)r*=e;return r}function JF(e,t){var r,n=t.s<0,i=Ls(e,e.precision,1),o=i.times(.5);if(t=t.abs(),t.lte(o))return _l=n?4:1,t;if(r=t.divToInt(i),r.isZero())_l=n?3:2;else{if(t=t.minus(r.times(i)),t.lte(o))return _l=qF(r)?n?2:3:n?4:1,t;_l=qF(r)?n?1:4:n?3:2}return t.minus(i).abs()}function iA(e,t,r,n){var i,o,l,s,a,u,f,p,h,g=e.constructor,x=r!==void 0;if(x?(Go(r,1,Qf),n===void 0?n=g.rounding:Go(n,0,8)):(r=g.precision,n=g.rounding),!e.isFinite())f=KF(e);else{for(f=Iu(e),l=f.indexOf("."),x?(i=2,t==16?r=r*4-3:t==8&&(r=r*3-2)):i=t,l>=0&&(f=f.replace(".",""),h=new g(1),h.e=f.length-l,h.d=X1(Iu(h),10,i),h.e=h.d.length),p=X1(f,10,i),o=a=p.length;p[--a]==0;)p.pop();if(!p[0])f=x?"0p+0":"0";else{if(l<0?o--:(e=new g(e),e.d=p,e.e=o,e=ln(e,h,r,n,0,i),p=e.d,o=e.e,u=HF),l=p[r],s=i/2,u=u||p[r+1]!==void 0,u=n<4?(l!==void 0||u)&&(n===0||n===(e.s<0?3:2)):l>s||l===s&&(n===4||u||n===6&&p[r-1]&1||n===(e.s<0?8:7)),p.length=r,u)for(;++p[--r]>i-1;)p[r]=0,r||(++o,p.unshift(1));for(a=p.length;!p[a-1];--a);for(l=0,f="";l1)if(t==16||t==8){for(l=t==16?4:3,--a;a%l;a++)f+="0";for(p=X1(f,i,t),a=p.length;!p[a-1];--a);for(l=1,f="1.";la)for(o-=a;o--;)f+="0";else ot)return e.length=t,!0}function Jne(e){return new this(e).abs()}function Qne(e){return new this(e).acos()}function jne(e){return new this(e).acosh()}function eie(e,t){return new this(e).plus(t)}function tie(e){return new this(e).asin()}function rie(e){return new this(e).asinh()}function nie(e){return new this(e).atan()}function iie(e){return new this(e).atanh()}function oie(e,t){e=new this(e),t=new this(t);var r,n=this.precision,i=this.rounding,o=n+4;return!e.s||!t.s?r=new this(NaN):!e.d&&!t.d?(r=Ls(this,o,1).times(t.s>0?.25:.75),r.s=e.s):!t.d||e.isZero()?(r=t.s<0?Ls(this,n,i):new this(0),r.s=e.s):!e.d||t.isZero()?(r=Ls(this,o,1).times(.5),r.s=e.s):t.s<0?(this.precision=o,this.rounding=1,r=this.atan(ln(e,t,o,1)),t=Ls(this,o,1),this.precision=n,this.rounding=i,r=e.s<0?r.minus(t):r.plus(t)):r=this.atan(ln(e,t,o,1)),r}function aie(e){return new this(e).cbrt()}function sie(e){return Yt(e=new this(e),e.e+1,2)}function uie(e,t,r){return new this(e).clamp(t,r)}function lie(e){if(!e||typeof e!="object")throw Error(j1+"Object expected");var t,r,n,i=e.defaults===!0,o=["precision",1,Qf,"rounding",0,8,"toExpNeg",-vd,0,"toExpPos",0,vd,"maxE",0,vd,"minE",-vd,0,"modulo",0,9];for(t=0;t=o[t+1]&&n<=o[t+2])this[r]=n;else throw Error(Jf+r+": "+n);if(r="crypto",i&&(this[r]=eA[r]),(n=e[r])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[r]=!0;else throw Error(WF);else this[r]=!1;else throw Error(Jf+r+": "+n);return this}function fie(e){return new this(e).cos()}function cie(e){return new this(e).cosh()}function QF(e){var t,r,n;function i(o){var l,s,a,u=this;if(!(u instanceof i))return new i(o);if(u.constructor=i,UF(o)){u.s=o.s,sr?!o.d||o.e>i.maxE?(u.e=NaN,u.d=null):o.e=10;s/=10)l++;sr?l>i.maxE?(u.e=NaN,u.d=null):l=429e7?t[o]=crypto.getRandomValues(new Uint32Array(1))[0]:s[o++]=i%1e7;else if(crypto.randomBytes){for(t=crypto.randomBytes(n*=4);o=214e7?crypto.randomBytes(4).copy(t,o):(s.push(i%1e7),o+=4);o=n/4}else throw Error(WF);else for(;o=10;i/=10)n++;n{var{on:t,config:r}=e,n=bp.clone({precision:r.precision,modulo:bp.EUCLID});return n.prototype=Object.create(n.prototype),n.prototype.type="BigNumber",n.prototype.isBigNumber=!0,n.prototype.toJSON=function(){return{mathjs:"BigNumber",value:this.toString()}},n.fromJSON=function(i){return new n(i.value)},t&&t("config",function(i,o){i.precision!==o.precision&&n.config({precision:i.precision})}),n},{isClass:!0});var po=Math.cosh||function(e){return Math.abs(e)<1e-9?1-e:(Math.exp(e)+Math.exp(-e))*.5},Ga=Math.sinh||function(e){return Math.abs(e)<1e-9?e:(Math.exp(e)-Math.exp(-e))*.5},Rie=function(e){let t=Math.PI/4;if(-t>e||e>t)return Math.cos(e)-1;let r=e*e;return r*(r*(r*(r*(r*(r*(r*(r/20922789888e3-1/87178291200)+1/479001600)-1/3628800)+1/40320)-1/720)+1/24)-1/2)},oA=function(e,t){return e=Math.abs(e),t=Math.abs(t),e0&&yd();break;case"number":r.im=0,r.re=e;break;default:yd()}return isNaN(r.re)||isNaN(r.im),r};function et(e,t){if(!(this instanceof et))return new et(e,t);let r=Dp(e,t);this.re=r.re,this.im=r.im}et.prototype={re:0,im:0,sign:function(){let e=oA(this.re,this.im);return new et(this.re/e,this.im/e)},add:function(e,t){let r=Dp(e,t),n=this.isInfinite(),i=!(isFinite(r.re)&&isFinite(r.im));return n||i?n&&i?et.NAN:et.INFINITY:new et(this.re+r.re,this.im+r.im)},sub:function(e,t){let r=Dp(e,t),n=this.isInfinite(),i=!(isFinite(r.re)&&isFinite(r.im));return n||i?n&&i?et.NAN:et.INFINITY:new et(this.re-r.re,this.im-r.im)},mul:function(e,t){let r=Dp(e,t),n=this.isInfinite(),i=!(isFinite(r.re)&&isFinite(r.im)),o=this.re===0&&this.im===0,l=r.re===0&&r.im===0;return n&&l||i&&o?et.NAN:n||i?et.INFINITY:r.im===0&&this.im===0?new et(this.re*r.re,0):new et(this.re*r.re-this.im*r.im,this.re*r.im+this.im*r.re)},div:function(e,t){let r=Dp(e,t),n=this.isInfinite(),i=!(isFinite(r.re)&&isFinite(r.im)),o=this.re===0&&this.im===0,l=r.re===0&&r.im===0;if(o&&l||n&&i)return et.NAN;if(l||n)return et.INFINITY;if(o||i)return et.ZERO;if(r.im===0)return new et(this.re/r.re,this.im/r.re);if(Math.abs(r.re)0)return new et(Math.pow(this.re,r.re),0);if(this.re===0)switch((r.re%4+4)%4){case 0:return new et(Math.pow(this.im,r.re),0);case 1:return new et(0,Math.pow(this.im,r.re));case 2:return new et(-Math.pow(this.im,r.re),0);case 3:return new et(0,-Math.pow(this.im,r.re))}}if(n&&r.re>0)return et.ZERO;let o=Math.atan2(this.im,this.re),l=aA(this.re,this.im),s=Math.exp(r.re*l-r.im*o),a=r.im*l+r.re*o;return new et(s*Math.cos(a),s*Math.sin(a))},sqrt:function(){let e=this.re,t=this.im;if(t===0)return e>=0?new et(Math.sqrt(e),0):new et(0,Math.sqrt(-e));let r=oA(e,t),n=Math.sqrt(.5*(r+Math.abs(e))),i=Math.abs(t)/(2*n);return e>=0?new et(n,t<0?-i:i):new et(i,t<0?-n:n)},exp:function(){let e=Math.exp(this.re);return this.im===0?new et(e,0):new et(e*Math.cos(this.im),e*Math.sin(this.im))},expm1:function(){let e=this.re,t=this.im;return new et(Math.expm1(e)*Math.cos(t)+Rie(t),Math.exp(e)*Math.sin(t))},log:function(){let e=this.re,t=this.im;return t===0&&e>0?new et(Math.log(e),0):new et(aA(e,t),Math.atan2(t,e))},abs:function(){return oA(this.re,this.im)},arg:function(){return Math.atan2(this.im,this.re)},sin:function(){let e=this.re,t=this.im;return new et(Math.sin(e)*po(t),Math.cos(e)*Ga(t))},cos:function(){let e=this.re,t=this.im;return new et(Math.cos(e)*po(t),-Math.sin(e)*Ga(t))},tan:function(){let e=2*this.re,t=2*this.im,r=Math.cos(e)+po(t);return new et(Math.sin(e)/r,Ga(t)/r)},cot:function(){let e=2*this.re,t=2*this.im,r=Math.cos(e)-po(t);return new et(-Math.sin(e)/r,Ga(t)/r)},sec:function(){let e=this.re,t=this.im,r=.5*po(2*t)+.5*Math.cos(2*e);return new et(Math.cos(e)*po(t)/r,Math.sin(e)*Ga(t)/r)},csc:function(){let e=this.re,t=this.im,r=.5*po(2*t)-.5*Math.cos(2*e);return new et(Math.sin(e)*po(t)/r,-Math.cos(e)*Ga(t)/r)},asin:function(){let e=this.re,t=this.im,r=new et(t*t-e*e+1,-2*e*t).sqrt(),n=new et(r.re-t,r.im+e).log();return new et(n.im,-n.re)},acos:function(){let e=this.re,t=this.im,r=new et(t*t-e*e+1,-2*e*t).sqrt(),n=new et(r.re-t,r.im+e).log();return new et(Math.PI/2-n.im,n.re)},atan:function(){let e=this.re,t=this.im;if(e===0){if(t===1)return new et(0,1/0);if(t===-1)return new et(0,-1/0)}let r=e*e+(1-t)*(1-t),n=new et((1-t*t-e*e)/r,-2*e/r).log();return new et(-.5*n.im,.5*n.re)},acot:function(){let e=this.re,t=this.im;if(t===0)return new et(Math.atan2(1,e),0);let r=e*e+t*t;return r!==0?new et(e/r,-t/r).atan():new et(e!==0?e/0:0,t!==0?-t/0:0).atan()},asec:function(){let e=this.re,t=this.im;if(e===0&&t===0)return new et(0,1/0);let r=e*e+t*t;return r!==0?new et(e/r,-t/r).acos():new et(e!==0?e/0:0,t!==0?-t/0:0).acos()},acsc:function(){let e=this.re,t=this.im;if(e===0&&t===0)return new et(Math.PI/2,1/0);let r=e*e+t*t;return r!==0?new et(e/r,-t/r).asin():new et(e!==0?e/0:0,t!==0?-t/0:0).asin()},sinh:function(){let e=this.re,t=this.im;return new et(Ga(e)*Math.cos(t),po(e)*Math.sin(t))},cosh:function(){let e=this.re,t=this.im;return new et(po(e)*Math.cos(t),Ga(e)*Math.sin(t))},tanh:function(){let e=2*this.re,t=2*this.im,r=po(e)+Math.cos(t);return new et(Ga(e)/r,Math.sin(t)/r)},coth:function(){let e=2*this.re,t=2*this.im,r=po(e)-Math.cos(t);return new et(Ga(e)/r,-Math.sin(t)/r)},csch:function(){let e=this.re,t=this.im,r=Math.cos(2*t)-po(2*e);return new et(-2*Ga(e)*Math.cos(t)/r,2*po(e)*Math.sin(t)/r)},sech:function(){let e=this.re,t=this.im,r=Math.cos(2*t)+po(2*e);return new et(2*po(e)*Math.cos(t)/r,-2*Ga(e)*Math.sin(t)/r)},asinh:function(){let e=this.im;this.im=-this.re,this.re=e;let t=this.asin();return this.re=-this.im,this.im=e,e=t.re,t.re=-t.im,t.im=e,t},acosh:function(){let e=this.acos();if(e.im<=0){let t=e.re;e.re=-e.im,e.im=t}else{let t=e.im;e.im=-e.re,e.re=t}return e},atanh:function(){let e=this.re,t=this.im,r=e>1&&t===0,n=1-e,i=1+e,o=n*n+t*t,l=o!==0?new et((i*n-t*t)/o,(t*n+i*t)/o):new et(e!==-1?e/0:0,t!==0?t/0:0),s=l.re;return l.re=aA(l.re,l.im)/2,l.im=Math.atan2(l.im,s)/2,r&&(l.im=-l.im),l},acoth:function(){let e=this.re,t=this.im;if(e===0&&t===0)return new et(0,Math.PI/2);let r=e*e+t*t;return r!==0?new et(e/r,-t/r).atanh():new et(e!==0?e/0:0,t!==0?-t/0:0).atanh()},acsch:function(){let e=this.re,t=this.im;if(t===0)return new et(e!==0?Math.log(e+Math.sqrt(e*e+1)):1/0,0);let r=e*e+t*t;return r!==0?new et(e/r,-t/r).asinh():new et(e!==0?e/0:0,t!==0?-t/0:0).asinh()},asech:function(){let e=this.re,t=this.im;if(this.isZero())return et.INFINITY;let r=e*e+t*t;return r!==0?new et(e/r,-t/r).acosh():new et(e!==0?e/0:0,t!==0?-t/0:0).acosh()},inverse:function(){if(this.isZero())return et.INFINITY;if(this.isInfinite())return et.ZERO;let e=this.re,t=this.im,r=e*e+t*t;return new et(e/r,-t/r)},conjugate:function(){return new et(this.re,-this.im)},neg:function(){return new et(-this.re,-this.im)},ceil:function(e){return e=Math.pow(10,e||0),new et(Math.ceil(this.re*e)/e,Math.ceil(this.im*e)/e)},floor:function(e){return e=Math.pow(10,e||0),new et(Math.floor(this.re*e)/e,Math.floor(this.im*e)/e)},round:function(e){return e=Math.pow(10,e||0),new et(Math.round(this.re*e)/e,Math.round(this.im*e)/e)},equals:function(e,t){let r=Dp(e,t);return Math.abs(r.re-this.re)<=et.EPSILON&&Math.abs(r.im-this.im)<=et.EPSILON},clone:function(){return new et(this.re,this.im)},toString:function(){let e=this.re,t=this.im,r="";return this.isNaN()?"NaN":this.isInfinite()?"Infinity":(Math.abs(e)(Object.defineProperty(et,"name",{value:"Complex"}),et.prototype.constructor=et,et.prototype.type="Complex",et.prototype.isComplex=!0,et.prototype.toJSON=function(){return{mathjs:"Complex",re:this.re,im:this.im}},et.prototype.toPolar=function(){return{r:this.abs(),phi:this.arg()}},et.prototype.format=function(e){var t="",r=this.im,n=this.re,i=ks(this.re,e),o=ks(this.im,e),l=Pt(e)?e:e?e.precision:null;if(l!==null){var s=Math.pow(10,-l);Math.abs(n/r)t.re?1:e.ret.im?1:e.im"u"&&(BigInt=function(e){if(isNaN(e))throw new Error("");return e});var Zt=BigInt(0),hr=BigInt(1),Ov=BigInt(2),sA=BigInt(5),Yo=BigInt(10),Hie=2e3,Et={s:hr,n:Zt,d:hr};function Ol(e,t){try{e=BigInt(e)}catch{throw jf()}return e*t}function Ps(e){return typeof e=="bigint"?e:Math.floor(e)}function En(e,t){if(t===Zt)throw uA();let r=Object.create(xa.prototype);r.s=e1&&(t[r]=(t[r]||Zt)+hr):t[e]=(t[e]||Zt)+hr,t}var Li=function(e,t){let r=Zt,n=hr,i=hr;if(e!=null)if(t!==void 0){if(typeof e=="bigint")r=e;else{if(isNaN(e))throw jf();if(e%1!==0)throw tI();r=BigInt(e)}if(typeof t=="bigint")n=t;else{if(isNaN(t))throw jf();if(t%1!==0)throw tI();n=BigInt(t)}i=r*n}else if(typeof e=="object"){if("d"in e&&"n"in e)r=BigInt(e.n),n=BigInt(e.d),"s"in e&&(r*=BigInt(e.s));else if(0 in e)r=BigInt(e[0]),1 in e&&(n=BigInt(e[1]));else if(typeof e=="bigint")r=e;else throw jf();i=r*n}else if(typeof e=="number"){if(isNaN(e))throw jf();if(e<0&&(i=-hr,e=-e),e%1===0)r=BigInt(e);else if(e>0){let o=1,l=0,s=1,a=1,u=1,f=1e7;for(e>=1&&(o=10**Math.floor(1+Math.log10(e)),e/=o);s<=f&&u<=f;){let p=(l+a)/(s+u);if(e===p){s+u<=f?(r=l+a,n=s+u):u>s?(r=a,n=u):(r=l,n=s);break}else e>p?(l+=a,s+=u):(a+=l,u+=s),s>f?(r=a,n=u):(r=l,n=s)}r=BigInt(r)*BigInt(o),n=BigInt(n)}}else if(typeof e=="string"){let o=0,l=Zt,s=Zt,a=Zt,u=hr,f=hr,p=e.replace(/_/g,"").match(/\d+|./g);if(p===null)throw jf();if(p[o]==="-"?(i=-hr,o++):p[o]==="+"&&o++,p.length===o+1?s=Ol(p[o++],i):p[o+1]==="."||p[o]==="."?(p[o]!=="."&&(l=Ol(p[o++],i)),o++,(o+1===p.length||p[o+1]==="("&&p[o+3]===")"||p[o+1]==="'"&&p[o+3]==="'")&&(s=Ol(p[o],i),u=Yo**BigInt(p[o].length),o++),(p[o]==="("&&p[o+2]===")"||p[o]==="'"&&p[o+2]==="'")&&(a=Ol(p[o+1],i),f=Yo**BigInt(p[o+1].length)-hr,o+=3)):p[o+1]==="/"||p[o+1]===":"?(s=Ol(p[o],i),u=Ol(p[o+2],hr),o+=3):p[o+3]==="/"&&p[o+1]===" "&&(l=Ol(p[o],i),s=Ol(p[o+2],i),u=Ol(p[o+4],hr),o+=5),p.length<=o)n=u*f,i=r=a+n*l+f*s;else throw jf()}else if(typeof e=="bigint")r=e,i=e,n=hr;else throw jf();if(n===Zt)throw uA();Et.s=iZt;e=e*e%r,t>>=hr)t&hr&&(n=n*e%r);return n}function Wie(e,t){for(;t%Ov===Zt;t/=Ov);for(;t%sA===Zt;t/=sA);if(t===hr)return Zt;let r=Yo%t,n=1;for(;r!==hr;n++)if(r=r*Yo%t,n>Hie)return Zt;return BigInt(n)}function Vie(e,t,r){let n=hr,i=$ie(Yo,r,t);for(let o=0;o<300;o++){if(n===i)return BigInt(o);n=n*Yo%t,i=i*Yo%t}return 0}function Sp(e,t){if(!e)return t;if(!t)return e;for(;;){if(e%=t,!e)return t;if(t%=e,!t)return e}}function xa(e,t){if(Li(e,t),this instanceof xa)e=Sp(Et.d,Et.n),this.s=Et.s,this.n=Et.n/e,this.d=Et.d/e;else return En(Et.s*Et.n,Et.d)}var uA=function(){return new Error("Division by Zero")},jf=function(){return new Error("Invalid argument")},tI=function(){return new Error("Parameters must be integer")};xa.prototype={s:hr,n:Zt,d:hr,abs:function(){return En(this.n,this.d)},neg:function(){return En(-this.s*this.n,this.d)},add:function(e,t){return Li(e,t),En(this.s*this.n*Et.d+Et.s*this.d*Et.n,this.d*Et.d)},sub:function(e,t){return Li(e,t),En(this.s*this.n*Et.d-Et.s*this.d*Et.n,this.d*Et.d)},mul:function(e,t){return Li(e,t),En(this.s*Et.s*this.n*Et.n,this.d*Et.d)},div:function(e,t){return Li(e,t),En(this.s*Et.s*this.n*Et.d,this.d*Et.n)},clone:function(){return En(this.s*this.n,this.d)},mod:function(e,t){if(e===void 0)return En(this.s*this.n%this.d,hr);if(Li(e,t),Zt===Et.n*this.d)throw uA();return En(this.s*(Et.d*this.n)%(Et.n*this.d),Et.d*this.d)},gcd:function(e,t){return Li(e,t),En(Sp(Et.n,this.n)*Sp(Et.d,this.d),Et.d*this.d)},lcm:function(e,t){return Li(e,t),Et.n===Zt&&this.n===Zt?En(Zt,hr):En(Et.n*this.n,Sp(Et.n,this.n)*Sp(Et.d,this.d))},inverse:function(){return En(this.s*this.d,this.n)},pow:function(e,t){if(Li(e,t),Et.d===hr)return Et.sEt.s*Et.n*this.d},gte:function(e,t){return Li(e,t),this.s*this.n*Et.d>=Et.s*Et.n*this.d},compare:function(e,t){Li(e,t);let r=this.s*this.n*Et.d-Et.s*Et.n*this.d;return(ZtZt&&this.s>=Zt?hr:Zt),e)},floor:function(e){return e=Yo**BigInt(e||0),En(Ps(this.s*e*this.n/this.d)-(e*this.n%this.d>Zt&&this.s=Zt?hr:Zt)+Ov*(e*this.n%this.d)>this.d?hr:Zt),e)},roundTo:function(e,t){Li(e,t);let r=this.n*Et.d,n=this.d*Et.n,i=r%n,o=Ps(r/n);return i+i>=n&&o++,En(this.s*o*Et.n,Et.d)},divisible:function(e,t){return Li(e,t),!(!(Et.n*this.d)||this.n*Et.d%(Et.n*this.d))},valueOf:function(){return Number(this.s*this.n)/Number(this.d)},toString:function(e){let t=this.n,r=this.d;e=e||15;let n=Wie(t,r),i=Vie(t,r,n),o=this.sZt&&(n+=i,n+=" ",t%=r),n+=t,n+="/",n+=r}return n},toLatex:function(e){let t=this.n,r=this.d,n=this.sZt&&(n+=i,t%=r),n+="\\frac{",n+=t,n+="}{",n+=r,n+="}"}return n},toContinued:function(){let e=this.n,t=this.d,r=[];do{r.push(Ps(e/t));let n=e%t;e=t,t=n}while(e!==hr);return r},simplify:function(e){let t=BigInt(1/(e||.001)|0),r=this.abs(),n=r.toContinued();for(let i=1;i=0;s--)o=o.inverse().add(n[s]);let l=o.sub(r);if(l.n*t(Object.defineProperty(xa,"name",{value:"Fraction"}),xa.prototype.constructor=xa,xa.prototype.type="Fraction",xa.prototype.isFraction=!0,xa.prototype.toJSON=function(){return{mathjs:"Fraction",n:String(this.s*this.n),d:String(this.d)}},xa.fromJSON=function(e){return new xa(e)},xa),{isClass:!0});var Zie="Range",Xie=[],nI=$(Zie,Xie,()=>{function e(t,r,n){if(!(this instanceof e))throw new SyntaxError("Constructor must be called with the new operator");var i=t!=null,o=r!=null,l=n!=null;if(i){if(Ct(t))t=t.toNumber();else if(typeof t!="number")throw new TypeError("Parameter start must be a number")}if(o){if(Ct(r))r=r.toNumber();else if(typeof r!="number")throw new TypeError("Parameter end must be a number")}if(l){if(Ct(n))n=n.toNumber();else if(typeof n!="number")throw new TypeError("Parameter step must be a number")}this.start=i?parseFloat(t):0,this.end=o?parseFloat(r):0,this.step=l?parseFloat(n):1}return e.prototype.type="Range",e.prototype.isRange=!0,e.parse=function(t){if(typeof t!="string")return null;var r=t.split(":"),n=r.map(function(o){return parseFloat(o)}),i=n.some(function(o){return isNaN(o)});if(i)return null;switch(n.length){case 2:return new e(n[0],n[1]);case 3:return new e(n[0],n[2],n[1]);default:return null}},e.prototype.clone=function(){return new e(this.start,this.end,this.step)},e.prototype.size=function(){var t=0,r=this.start,n=this.step,i=this.end,o=i-r;return Va(n)===Va(o)?t=Math.ceil(o/n):o===0&&(t=0),isNaN(t)&&(t=0),[t]},e.prototype.min=function(){var t=this.size()[0];if(t>0)return this.step>0?this.start:this.start+(t-1)*this.step},e.prototype.max=function(){var t=this.size()[0];if(t>0)return this.step>0?this.start+(t-1)*this.step:this.start},e.prototype.forEach=function(t){var r=this.start,n=this.step,i=this.end,o=0;if(n>0)for(;ri;)t(r,[o],this),r+=n,o++},e.prototype.map=function(t){var r=[];return this.forEach(function(n,i,o){r[i[0]]=t(n,i,o)}),r},e.prototype.toArray=function(){var t=[];return this.forEach(function(r,n){t[n[0]]=r}),t},e.prototype.valueOf=function(){return this.toArray()},e.prototype.format=function(t){var r=ks(this.start,t);return this.step!==1&&(r+=":"+ks(this.step,t)),r+=":"+ks(this.end,t),r},e.prototype.toString=function(){return this.format()},e.prototype.toJSON=function(){return{mathjs:"Range",start:this.start,end:this.end,step:this.step}},e.fromJSON=function(t){return new e(t.start,t.end,t.step)},e},{isClass:!0});var Kie="Matrix",Jie=[],iI=$(Kie,Jie,()=>{function e(){if(!(this instanceof e))throw new SyntaxError("Constructor must be called with the new operator")}return e.prototype.type="Matrix",e.prototype.isMatrix=!0,e.prototype.storage=function(){throw new Error("Cannot invoke storage on a Matrix interface")},e.prototype.datatype=function(){throw new Error("Cannot invoke datatype on a Matrix interface")},e.prototype.create=function(t,r){throw new Error("Cannot invoke create on a Matrix interface")},e.prototype.subset=function(t,r,n){throw new Error("Cannot invoke subset on a Matrix interface")},e.prototype.get=function(t){throw new Error("Cannot invoke get on a Matrix interface")},e.prototype.set=function(t,r,n){throw new Error("Cannot invoke set on a Matrix interface")},e.prototype.resize=function(t,r){throw new Error("Cannot invoke resize on a Matrix interface")},e.prototype.reshape=function(t,r){throw new Error("Cannot invoke reshape on a Matrix interface")},e.prototype.clone=function(){throw new Error("Cannot invoke clone on a Matrix interface")},e.prototype.size=function(){throw new Error("Cannot invoke size on a Matrix interface")},e.prototype.map=function(t,r){throw new Error("Cannot invoke map on a Matrix interface")},e.prototype.forEach=function(t){throw new Error("Cannot invoke forEach on a Matrix interface")},e.prototype[Symbol.iterator]=function(){throw new Error("Cannot iterate a Matrix interface")},e.prototype.toArray=function(){throw new Error("Cannot invoke toArray on a Matrix interface")},e.prototype.valueOf=function(){throw new Error("Cannot invoke valueOf on a Matrix interface")},e.prototype.format=function(t){throw new Error("Cannot invoke format on a Matrix interface")},e.prototype.toString=function(){throw new Error("Cannot invoke toString on a Matrix interface")},e},{isClass:!0});function lA(e,t,r){var n=e.constructor,i=new n(2),o="";if(r){if(r<1)throw new Error("size must be in greater than 0");if(!dt(r))throw new Error("size must be an integer");if(e.greaterThan(i.pow(r-1).sub(1))||e.lessThan(i.pow(r-1).mul(-1)))throw new Error("Value must be in range [-2^".concat(r-1,", 2^").concat(r-1,"-1]"));if(!e.isInteger())throw new Error("Value must be an integer");e.lessThan(0)&&(e=e.add(i.pow(r))),o="i".concat(r)}switch(t){case 2:return"".concat(e.toBinary()).concat(o);case 8:return"".concat(e.toOctal()).concat(o);case 16:return"".concat(e.toHexadecimal()).concat(o);default:throw new Error("Base ".concat(t," not supported "))}}function sI(e,t){if(typeof t=="function")return t(e);if(!e.isFinite())return e.isNaN()?"NaN":e.gt(0)?"Infinity":"-Infinity";var{notation:r,precision:n,wordSize:i}=KE(t);switch(r){case"fixed":return jie(e,n);case"exponential":return oI(e,n);case"engineering":return Qie(e,n);case"bin":return lA(e,2,i);case"oct":return lA(e,8,i);case"hex":return lA(e,16,i);case"auto":{var o=aI(t?.lowerExp,-3),l=aI(t?.upperExp,5);if(e.isZero())return"0";var s,a=e.toSignificantDigits(n),u=a.e;return u>=o&&u=0?"+":"")+n.toString()}function oI(e,t){return t!==void 0?e.toExponential(t-1):e.toExponential()}function jie(e,t){return e.toFixed(t)}function aI(e,t){return Pt(e)?e:Ct(e)?e.toNumber():t}function lI(e,t){var r=e.length-t.length,n=e.length;return e.substring(r,n)===t}function Ht(e,t){var r=eoe(e,t);return t&&typeof t=="object"&&"truncate"in t&&r.length>t.truncate?r.substring(0,t.truncate-3)+"...":r}function eoe(e,t){if(typeof e=="number")return ks(e,t);if(Ct(e))return sI(e,t);if(toe(e))return!t||t.fraction!=="decimal"?"".concat(e.s*e.n,"/").concat(e.d):e.toString();if(Array.isArray(e))return fI(e,t);if(dn(e))return Np(e);if(typeof e=="function")return e.syntax?String(e.syntax):"function";if(e&&typeof e=="object"){if(typeof e.format=="function")return e.format(t);if(e&&e.toString(t)!=={}.toString())return e.toString(t);var r=Object.keys(e).map(n=>Np(n)+": "+Ht(e[n],t));return"{"+r.join(", ")+"}"}return String(e)}function Np(e){for(var t=String(e),r="",n=0;n/g,">"),t}function fI(e,t){if(Array.isArray(e)){for(var r="[",n=e.length,i=0;it?1:-1}function $t(e,t,r){if(!(this instanceof $t))throw new SyntaxError("Constructor must be called with the new operator");this.actual=e,this.expected=t,this.relation=r,this.message="Dimension mismatch ("+(Array.isArray(e)?"["+e.join(", ")+"]":e)+" "+(this.relation||"!=")+" "+(Array.isArray(t)?"["+t.join(", ")+"]":t)+")",this.stack=new Error().stack}$t.prototype=new RangeError;$t.prototype.constructor=RangeError;$t.prototype.name="DimensionError";$t.prototype.isDimensionError=!0;function Di(e,t,r){if(!(this instanceof Di))throw new SyntaxError("Constructor must be called with the new operator");this.index=e,arguments.length<3?(this.min=0,this.max=t):(this.min=t,this.max=r),this.min!==void 0&&this.index=this.max?this.message="Index out of range ("+this.index+" > "+(this.max-1)+")":this.message="Index out of range ("+this.index+")",this.stack=new Error().stack}Di.prototype=new RangeError;Di.prototype.constructor=RangeError;Di.prototype.name="IndexError";Di.prototype.isIndexError=!0;function Ft(e){for(var t=[];Array.isArray(e);)t.push(e.length),e=e[0];return t}function cI(e,t,r){var n,i=e.length;if(i!==t[r])throw new $t(i,t[r]);if(r")}function cA(e,t){var r=t.length===0;if(r){if(Array.isArray(e))throw new $t(e.length,0)}else cI(e,t,0)}function Fv(e,t){var r=e.isMatrix?e._size:Ft(e),n=t._sourceSize;n.forEach((i,o)=>{if(i!==null&&i!==r[o])throw new $t(i,r[o])})}function Br(e,t){if(e!==void 0){if(!Pt(e)||!dt(e))throw new TypeError("Index must be an integer (value: "+e+")");if(e<0||typeof t=="number"&&e>=t)throw new Di(e,t)}}function Ep(e){for(var t=0;t=0,a=t%r===0;if(s)if(a)n[o]=-t/r;else throw new Error("Could not replace wildcard, since "+t+" is no multiple of "+-r);return n}function pI(e){return e.reduce((t,r)=>t*r,1)}function roe(e,t){for(var r=e,n,i=t.length-1;i>0;i--){var o=t[i];n=[];for(var l=r.length/o,s=0;st.test(r))}function mA(e,t){return Array.prototype.join.call(e,t)}function Fl(e){if(!Array.isArray(e))throw new TypeError("Array input expected");if(e.length===0)return e;var t=[],r=0;t[0]={value:e[0],identifier:0};for(var n=1;n1)return e.slice(1).reduce(function(r,n){return gI(r,n,t,0)},e[0]);throw new Error("Wrong number of arguments in function concat")}function Lv(){for(var e=arguments.length,t=new Array(e),r=0;rh.length),i=Math.max(...n),o=new Array(i).fill(null),l=0;lo[f]&&(o[f]=s[u])}for(var p=0;p1||e[i]>t[o])throw new Error("shape missmatch: missmatch is found in arg with shape (".concat(e,") not possible to broadcast dimension ").concat(n," with size ").concat(e[i]," to size ").concat(t[o]))}}function ku(e,t){var r=Ft(e);if(Vo(r,t))return e;vI(r,t);var n=Lv(r,t),i=n.length,o=[...Array(i-r.length).fill(1),...r],l=ioe(e);r.lengthi[o],e)}function Bv(e,t,r,n){return Array.isArray(e)?e.map(function(i,o){return Bv(i,t.concat(o),r,n)}):n(e,t,r)}function ioe(e){return Gn([],e)}var hA=mn(U1(),1);function Za(e,t,r){if(hA.default.isTypedFunction(e)){var n=(t.isMatrix?t.size():Ft(t)).map(()=>0),i=t.isMatrix?t.get(n):Sd(t,n),o=Object.keys(e.signatures).length===1,l=ooe(e,i,n,t),s=o?Object.values(e.signatures)[0]:e;return l>=1&&l<=3?function(){for(var a=arguments.length,u=new Array(a),f=0;f0;o--){var l=i.slice(0,o);if(hA.default.resolve(e,l)!==null)return o}}function xI(e,t,r,n){try{return e(...t)}catch(i){aoe(i,t,r,n)}}function aoe(e,t,r,n){var i;if(e instanceof TypeError&&((i=e.data)===null||i===void 0?void 0:i.category)==="wrongType"){var o=[];throw o.push("value: ".concat(pr(t[0]))),t.length>=2&&o.push("index: ".concat(pr(t[1]))),t.length>=3&&o.push("array: ".concat(pr(t[2]))),new TypeError("Function ".concat(r," cannot apply callback arguments ")+"".concat(n,"(").concat(o.join(", "),") at index ").concat(JSON.stringify(t[1])))}else throw new TypeError("Function ".concat(r," cannot apply callback arguments ")+"to function ".concat(n,": ").concat(e.message))}var soe="DenseMatrix",uoe=["Matrix"],yI=$(soe,uoe,e=>{var{Matrix:t}=e;function r(f,p){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");if(p&&!dn(p))throw new Error("Invalid datatype: "+p);if(gt(f))f.type==="DenseMatrix"?(this._data=_t(f._data),this._size=_t(f._size),this._datatype=p||f._datatype):(this._data=f.toArray(),this._size=f.size(),this._datatype=p||f._datatype);else if(f&&dr(f.data)&&dr(f.size))this._data=f.data,this._size=f.size,cA(this._data,this._size),this._datatype=p||f.datatype;else if(dr(f))this._data=u(f),this._size=Ft(this._data),cA(this._data,this._size),this._datatype=p;else{if(f)throw new TypeError("Unsupported type of data ("+pr(f)+")");this._data=[],this._size=[0],this._datatype=p}}r.prototype=new t,r.prototype.createDenseMatrix=function(f,p){return new r(f,p)},Object.defineProperty(r,"name",{value:"DenseMatrix"}),r.prototype.constructor=r,r.prototype.type="DenseMatrix",r.prototype.isDenseMatrix=!0,r.prototype.getDataType=function(){return Ap(this._data,pr)},r.prototype.storage=function(){return"dense"},r.prototype.datatype=function(){return this._datatype},r.prototype.create=function(f,p){return new r(f,p)},r.prototype.subset=function(f,p,h){switch(arguments.length){case 1:return n(this,f);case 2:case 3:return o(this,f,p,h);default:throw new SyntaxError("Wrong number of arguments")}},r.prototype.get=function(f){return Sd(this._data,f)},r.prototype.set=function(f,p,h){if(!dr(f))throw new TypeError("Array expected");if(f.length");var E=p.max().map(function(N){return N+1});a(f,E,g);var M=x.length,T=0;l(f._data,p,h,M,T)}return f}function l(f,p,h,g,x){var v=x===g-1,S=p.dimension(x);v?S.forEach(function(D,C){Br(D),f[D]=h[C[0]]}):S.forEach(function(D,C){Br(D),l(f[D],p,h[C[0]],g,x+1)})}r.prototype.resize=function(f,p,h){if(!gn(f))throw new TypeError("Array or Matrix expected");var g=f.valueOf().map(v=>Array.isArray(v)&&v.length===1?v[0]:v),x=h?this.clone():this;return s(x,g,p)};function s(f,p,h){if(p.length===0){for(var g=f._data;dr(g);)g=g[0];return g}return f._size=p.slice(0),f._data=Rs(f._data,f._size,h),f}r.prototype.reshape=function(f,p){var h=p?this.clone():this;h._data=Iv(h._data,f);var g=h._size.reduce((x,v)=>x*v);return h._size=kv(f,g),h};function a(f,p,h){for(var g=f._size.slice(0),x=!1;g.lengthg[v]&&(g[v]=p[v],x=!0);x&&s(f,g,h)}r.prototype.clone=function(){var f=new r({data:_t(this._data),size:_t(this._size),datatype:this._datatype});return f},r.prototype.size=function(){return this._size.slice(0)},r.prototype._forEach=function(f){var p=this,h=p.size();if(h.length===1){for(var g=0;g=0;C--){if(x[C]++,x[C]===h[C]){x[C]=0;continue}v[C]=C===0?p._data[x[C]]:v[C-1][x[C]];for(var E=C;E[E[D]]);p.push(new r(C,f._datatype))},v=0;v0?f:0,h=f<0?-f:0,g=this._size[0],x=this._size[1],v=Math.min(g-h,x-p),S=[],D=0;D0?h:0,v=h<0?-h:0,S=f[0],D=f[1],C=Math.min(S-v,D-x),E;if(dr(p)){if(p.length!==C)throw new Error("Invalid value array length");E=function(F){return p[F]}}else if(gt(p)){var M=p.size();if(M.length!==1||M[0]!==C)throw new Error("Invalid matrix length");E=function(F){return p.get([F])}}else E=function(){return p};g||(g=Ct(E(0))?E(0).mul(0):0);var T=[];if(f.length>0){T=Rs(T,f,g);for(var N=0;N{var{typed:t}=e;return t(wI,{any:_t})});function ow(e){var t=e.length,r=e[0].length,n,i,o=[];for(i=0;i=n.length)throw new Di(t,n.length);return gt(e)?e.create(aw(e.valueOf(),t,r),e.datatype()):aw(e,t,r)}function aw(e,t,r){var n,i,o,l;if(t<=0)if(Array.isArray(e[0])){for(l=ow(e),i=[],n=0;n{var{typed:t}=e;return t(DI,{number:dt,BigNumber:function(n){return n.isInt()},bigint:function(n){return!0},Fraction:function(n){return n.d===1n},"Array | Matrix":t.referToSelf(r=>n=>yt(n,r))})});var Zo="number",Il="number, number";function vA(e){return Math.abs(e)}vA.signature=Zo;function xA(e,t){return e+t}xA.signature=Il;function yA(e,t){return e-t}yA.signature=Il;function wA(e,t){return e*t}wA.signature=Il;function coe(e,t){return e/t}coe.signature=Il;function bA(e){return-e}bA.signature=Zo;function DA(e){return e}DA.signature=Zo;function Nd(e){return CF(e)}Nd.signature=Zo;function SA(e){return e*e*e}SA.signature=Zo;function NA(e){return Math.exp(e)}NA.signature=Zo;function EA(e){return MF(e)}EA.signature=Zo;function poe(e,t){if(!dt(e)||!dt(t))throw new Error("Parameters in function gcd must be integer numbers");for(var r;t!==0;)r=e%t,e=t,t=r;return e<0?-e:e}poe.signature=Il;function AA(e,t){if(!dt(e)||!dt(t))throw new Error("Parameters in function lcm must be integer numbers");if(e===0||t===0)return 0;for(var r,n=e*t;t!==0;)r=t,t=e%r,e=r;return Math.abs(n/e)}AA.signature=Il;function NI(e,t){return t?Math.log(e)/Math.log(t):Math.log(e)}function CA(e){return AF(e)}CA.signature=Zo;function MA(e){return EF(e)}MA.signature=Zo;function moe(e){return H1(e)}moe.signature=Zo;function doe(e,t){return t===0?e:e-t*Math.floor(e/t)}doe.signature=Il;function TA(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2,r=t<0;if(r&&(t=-t),t===0)throw new Error("Root must be non-zero");if(e<0&&Math.abs(t)%2!==1)throw new Error("Root must be odd when a is negative.");if(e===0)return r?1/0:0;if(!isFinite(e))return r?0:e;var n=Math.pow(Math.abs(e),1/t);return n=e<0?-n:n,r?1/n:n}function sw(e){return Va(e)}sw.signature=Zo;function hoe(e){return Math.sqrt(e)}hoe.signature=Zo;function _A(e){return e*e}_A.signature=Zo;function OA(e,t){var r,n,i,o=0,l=1,s=1,a=0;if(!dt(e)||!dt(t))throw new Error("Parameters in function xgcd must be integer numbers");for(;t;)n=Math.floor(e/t),i=e-n*t,r=o,o=l-n*o,l=r,r=s,s=a-n*s,a=r,e=t,t=i;var u;return e<0?u=[-e,-l,-a]:u=[e,e?l:0,a],u}OA.signature=Il;function FA(e,t){return e*e<1&&t===1/0||e*e>1&&t===-1/0?0:Math.pow(e,t)}FA.signature=Il;function Ed(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!dt(t)||t<0||t>15)throw new Error("Number of decimals in function round must be an integer from 0 to 15 inclusive");return parseFloat(JE(e,t))}function goe(e){return Math.abs(e)}goe.signature=Zo;var voe="number",Ad="number, number";function IA(e,t){if(!dt(e)||!dt(t))throw new Error("Integers expected in function bitAnd");return e&t}IA.signature=Ad;function kA(e){if(!dt(e))throw new Error("Integer expected in function bitNot");return~e}kA.signature=voe;function LA(e,t){if(!dt(e)||!dt(t))throw new Error("Integers expected in function bitOr");return e|t}LA.signature=Ad;function BA(e,t){if(!dt(e)||!dt(t))throw new Error("Integers expected in function bitXor");return e^t}BA.signature=Ad;function PA(e,t){if(!dt(e)||!dt(t))throw new Error("Integers expected in function leftShift");return e<>t}RA.signature=Ad;function qA(e,t){if(!dt(e)||!dt(t))throw new Error("Integers expected in function rightLogShift");return e>>>t}qA.signature=Ad;function ya(e,t){if(t>1;return ya(e,r)*ya(r+1,t)}function zA(e,t){if(!dt(e)||e<0)throw new TypeError("Positive integer value expected in function combinations");if(!dt(t)||t<0)throw new TypeError("Positive integer value expected in function combinations");if(t>e)throw new TypeError("k must be less than or equal to n");for(var r=e-t,n=1,i=t171?1/0:ya(1,e-1);if(e<.5)return Math.PI/(Math.sin(Math.PI*e)*Pv(1-e));if(e>=171.35)return 1/0;if(e>85){var r=e*e,n=r*e,i=n*e,o=i*e;return Math.sqrt(2*Math.PI/e)*Math.pow(e/Math.E,e)*(1+1/(12*e)+1/(288*r)-139/(51840*n)-571/(2488320*i)+163879/(209018880*o)+5246819/(75246796800*o*e))}--e,t=Cp[0];for(var l=1;l=1;n--)r+=TI[n]/(e+n);return WA+(e+.5)*Math.log(t)-t+Math.log(r)}Rv.signature="number";var An="number",boe="number, number";function Doe(e){return Math.acos(e)}Doe.signature=An;function VA(e){return OF(e)}VA.signature=An;function GA(e){return Math.atan(1/e)}GA.signature=An;function YA(e){return isFinite(e)?(Math.log((e+1)/e)+Math.log(e/(e-1)))/2:0}YA.signature=An;function ZA(e){return Math.asin(1/e)}ZA.signature=An;function XA(e){var t=1/e;return Math.log(t+Math.sqrt(t*t+1))}XA.signature=An;function KA(e){return Math.acos(1/e)}KA.signature=An;function JA(e){var t=1/e,r=Math.sqrt(t*t-1);return Math.log(r+t)}JA.signature=An;function Soe(e){return Math.asin(e)}Soe.signature=An;function QA(e){return FF(e)}QA.signature=An;function Noe(e){return Math.atan(e)}Noe.signature=An;function Eoe(e,t){return Math.atan2(e,t)}Eoe.signature=boe;function jA(e){return IF(e)}jA.signature=An;function Aoe(e){return Math.cos(e)}Aoe.signature=An;function Coe(e){return W1(e)}Coe.signature=An;function eC(e){return 1/Math.tan(e)}eC.signature=An;function tC(e){var t=Math.exp(2*e);return(t+1)/(t-1)}tC.signature=An;function rC(e){return 1/Math.sin(e)}rC.signature=An;function nC(e){return e===0?Number.POSITIVE_INFINITY:Math.abs(2/(Math.exp(e)-Math.exp(-e)))*Va(e)}nC.signature=An;function iC(e){return 1/Math.cos(e)}iC.signature=An;function oC(e){return 2/(Math.exp(e)+Math.exp(-e))}oC.signature=An;function Moe(e){return Math.sin(e)}Moe.signature=An;function aC(e){return kF(e)}aC.signature=An;function Toe(e){return Math.tan(e)}Toe.signature=An;function _oe(e){return V1(e)}_oe.signature=An;var qv="number";function Ooe(e){return dt(e)}Ooe.signature=qv;function sC(e){return e<0}sC.signature=qv;function uC(e){return e>0}uC.signature=qv;function Foe(e){return e===0}Foe.signature=qv;function lC(e){return Number.isNaN(e)}lC.signature=qv;function vn(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1e-9,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;if(r<=0)throw new Error("Relative tolerance must be greater than 0");if(n<0)throw new Error("Absolute tolerance must be at least 0");return e.isNaN()||t.isNaN()?!1:!e.isFinite()||!t.isFinite()?e.eq(t):e.eq(t)?!0:e.minus(t).abs().lte(e.constructor.max(e.constructor.max(e.abs(),t.abs()).mul(r),n))}var _I="isNegative",Ioe=["typed","config"],OI=$(_I,Ioe,e=>{var{typed:t,config:r}=e;return t(_I,{number:n=>Qr(n,0,r.relTol,r.absTol)?!1:sC(n),BigNumber:n=>vn(n,new n.constructor(0),r.relTol,r.absTol)?!1:n.isNeg()&&!n.isZero()&&!n.isNaN(),bigint:n=>n<0n,Fraction:n=>n.s<0n,Unit:t.referToSelf(n=>i=>t.find(n,i.valueType())(i.value)),"Array | Matrix":t.referToSelf(n=>i=>yt(i,n))})});var FI="isNumeric",koe=["typed"],II=$(FI,koe,e=>{var{typed:t}=e;return t(FI,{"number | BigNumber | bigint | Fraction | boolean":()=>!0,"Complex | Unit | string | null | undefined | Node":()=>!1,"Array | Matrix":t.referToSelf(r=>n=>yt(n,r))})});var kI="hasNumericValue",Loe=["typed","isNumeric"],LI=$(kI,Loe,e=>{var{typed:t,isNumeric:r}=e;return t(kI,{boolean:()=>!0,string:function(i){return i.trim().length>0&&!isNaN(Number(i))},any:function(i){return r(i)}})});var BI="isPositive",Boe=["typed","config"],PI=$(BI,Boe,e=>{var{typed:t,config:r}=e;return t(BI,{number:n=>Qr(n,0,r.relTol,r.absTol)?!1:uC(n),BigNumber:n=>vn(n,new n.constructor(0),r.relTol,r.absTol)?!1:!n.isNeg()&&!n.isZero()&&!n.isNaN(),bigint:n=>n>0n,Fraction:n=>n.s>0n&&n.n>0n,Unit:t.referToSelf(n=>i=>t.find(n,i.valueType())(i.value)),"Array | Matrix":t.referToSelf(n=>i=>yt(i,n))})});var RI="isZero",Poe=["typed","equalScalar"],qI=$(RI,Poe,e=>{var{typed:t,equalScalar:r}=e;return t(RI,{"number | BigNumber | Complex | Fraction":n=>r(n,0),bigint:n=>n===0n,Unit:t.referToSelf(n=>i=>t.find(n,i.valueType())(i.value)),"Array | Matrix":t.referToSelf(n=>i=>yt(i,n))})});var zI="isNaN",Roe=["typed"],UI=$(zI,Roe,e=>{var{typed:t}=e;return t(zI,{number:lC,BigNumber:function(n){return n.isNaN()},bigint:function(n){return!1},Fraction:function(n){return!1},Complex:function(n){return n.isNaN()},Unit:function(n){return Number.isNaN(n.value)},"Array | Matrix":t.referToSelf(r=>n=>yt(n,r))})});var HI="typeOf",qoe=["typed"],$I=$(HI,qoe,e=>{var{typed:t}=e;return t(HI,{any:pr})});function WI(e,t,r,n){return Qr(e.re,t.re,r,n)&&Qr(e.im,t.im,r,n)}var Ka=$("compareUnits",["typed"],e=>{var{typed:t}=e;return{"Unit, Unit":t.referToSelf(r=>(n,i)=>{if(!n.equalBase(i))throw new Error("Cannot compare units with different base");return t.find(r,[n.valueType(),i.valueType()])(n.value,i.value)})}});var cw="equalScalar",zoe=["typed","config"],VI=$(cw,zoe,e=>{var{typed:t,config:r}=e,n=Ka({typed:t});return t(cw,{"boolean, boolean":function(o,l){return o===l},"number, number":function(o,l){return Qr(o,l,r.relTol,r.absTol)},"BigNumber, BigNumber":function(o,l){return o.eq(l)||vn(o,l,r.relTol,r.absTol)},"bigint, bigint":function(o,l){return o===l},"Fraction, Fraction":function(o,l){return o.equals(l)},"Complex, Complex":function(o,l){return WI(o,l,r.relTol,r.absTol)}},n)}),v3e=$(cw,["typed","config"],e=>{var{typed:t,config:r}=e;return t(cw,{"number, number":function(i,o){return Qr(i,o,r.relTol,r.absTol)}})});var Uoe="SparseMatrix",Hoe=["typed","equalScalar","Matrix"],GI=$(Uoe,Hoe,e=>{var{typed:t,equalScalar:r,Matrix:n}=e;function i(v,S){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator");if(S&&!dn(S))throw new Error("Invalid datatype: "+S);if(gt(v))o(this,v,S);else if(v&&dr(v.index)&&dr(v.ptr)&&dr(v.size))this._values=v.values,this._index=v.index,this._ptr=v.ptr,this._size=v.size,this._datatype=S||v.datatype;else if(dr(v))l(this,v,S);else{if(v)throw new TypeError("Unsupported type of data ("+pr(v)+")");this._values=[],this._index=[],this._ptr=[0],this._size=[0,0],this._datatype=S}}function o(v,S,D){S.type==="SparseMatrix"?(v._values=S._values?_t(S._values):void 0,v._index=_t(S._index),v._ptr=_t(S._ptr),v._size=_t(S._size),v._datatype=D||S._datatype):l(v,S.valueOf(),D||S._datatype)}function l(v,S,D){v._values=[],v._index=[],v._ptr=[],v._datatype=D;var C=S.length,E=0,M=r,T=0;if(dn(D)&&(M=t.find(r,[D,D])||r,T=t.convert(0,D)),C>0){var N=0;do{v._ptr.push(v._index.length);for(var O=0;O");if(E.length===1){var F=S.dimension(0);F.forEach(function(L,q){Br(L),v.set([L,0],D[q[0]],C)})}else{var I=S.dimension(0),B=S.dimension(1);I.forEach(function(L,q){Br(L),B.forEach(function(R,V){Br(R),v.set([L,R],D[q[0]][V[0]],C)})})}}return v}i.prototype.get=function(v){if(!dr(v))throw new TypeError("Array expected");if(v.length!==this._size.length)throw new $t(v.length,this._size.length);if(!this._values)throw new Error("Cannot invoke get on a Pattern only matrix");var S=v[0],D=v[1];Br(S,this._size[0]),Br(D,this._size[1]);var C=u(S,this._ptr[D],this._ptr[D+1],this._index);return CM-1||E>T-1)&&(h(this,Math.max(C+1,M),Math.max(E+1,T),D),M=this._size[0],T=this._size[1]),Br(C,M),Br(E,T);var F=u(C,this._ptr[E],this._ptr[E+1],this._index);return FArray.isArray(M)&&M.length===1?M[0]:M);if(C.length!==2)throw new Error("Only two dimensions matrix are supported");C.forEach(function(M){if(!Pt(M)||!dt(M)||M<0)throw new TypeError("Invalid size, must contain positive integers (size: "+Ht(C)+")")});var E=D?this.clone():this;return h(E,C[0],C[1],S)};function h(v,S,D,C){var E=C||0,M=r,T=0;dn(v._datatype)&&(M=t.find(r,[v._datatype,v._datatype])||r,T=t.convert(0,v._datatype),E=t.convert(E,v._datatype));var N=!M(E,T),O=v._size[0],F=v._size[1],I,B,L;if(D>F){for(B=F;BO){if(N){var q=0;for(B=0;BS-1&&(v._values.splice(L,1),v._index.splice(L,1),V++)}v._ptr[B]=v._values.length}return v._size[0]=S,v._size[1]=D,v}i.prototype.reshape=function(v,S){if(!dr(v))throw new TypeError("Array expected");if(v.length!==2)throw new Error("Sparse matrices can only be reshaped in two dimensions");v.forEach(function(Z){if(!Pt(Z)||!dt(Z)||Z<=-2||Z===0)throw new TypeError("Invalid size, must contain positive integers or -1 (size: "+Ht(v)+")")});var D=this._size[0]*this._size[1];v=kv(v,D);var C=v[0]*v[1];if(D!==C)throw new Error("Reshaping sparse matrix will result in the wrong number of elements");var E=S?this.clone():this;if(this._size[0]===v[0]&&this._size[1]===v[1])return E;for(var M=[],T=0;T=S&&U<=D&&L(v._values[X],U-S,q-C)}else{for(var H={},ee=R;ee "+(this._values?Ht(this._values[O],v):"X")}return E},i.prototype.toString=function(){return Ht(this.toArray())},i.prototype.toJSON=function(){return{mathjs:"SparseMatrix",values:this._values,index:this._index,ptr:this._ptr,size:this._size,datatype:this._datatype}},i.prototype.diagonal=function(v){if(v){if(Nt(v)&&(v=v.toNumber()),!Rt(v)||!ht(v))throw new TypeError("The parameter k must be an integer number")}else v=0;var S=v>0?v:0,D=v<0?-v:0,C=this._size[0],E=this._size[1],M=Math.min(C-D,E-S),T=[],N=[],O=[];O[0]=0;for(var F=S;F0?D:0,O=D<0?-D:0,F=v[0],I=v[1],B=Math.min(F-O,I-N),L;if(dr(S)){if(S.length!==B)throw new Error("Invalid value array length");L=function(ce){return S[ce]}}else if(yt(S)){var q=S.size();if(q.length!==1||q[0]!==B)throw new Error("Invalid matrix length");L=function(ce){return S.get([ce])}}else L=function(){return S};for(var R=[],V=[],X=[],U=0;U=0&&H=O||E[I]!==S)){var L=C?C[F]:void 0;E.splice(I,0,S),C&&C.splice(I,0,L),E.splice(I<=F?F+1:F,1),C&&C.splice(I<=F?F+1:F,1);continue}if(I=O||E[F]!==v)){var q=C?C[I]:void 0;E.splice(F,0,v),C&&C.splice(F,0,q),E.splice(F<=I?I+1:I,1),C&&C.splice(F<=I?I+1:I,1)}}},i},{isClass:!0});var zoe="number",Uoe=["typed"];function Hoe(e){var t=e.match(/(0[box])([0-9a-fA-F]*)\.([0-9a-fA-F]*)/);if(t){var r={"0b":2,"0o":8,"0x":16}[t[1]],n=t[2],i=t[3];return{input:e,radix:r,integerPart:n,fractionalPart:i}}else return null}function $oe(e){for(var t=parseInt(e.integerPart,e.radix),r=0,n=0;n{var{typed:t}=e,r=t("number",{"":function(){return 0},number:function(i){return i},string:function(i){if(i==="NaN")return NaN;var o=Hoe(i);if(o)return $oe(o);var l=0,s=i.match(/(0[box][0-9a-fA-F]*)i([0-9]*)/);s&&(l=Number(s[2]),i=s[1]);var a=Number(i);if(isNaN(a))throw new SyntaxError('String "'+i+'" is not a valid number');if(s){if(a>2**l-1)throw new SyntaxError('String "'.concat(i,'" is out of range'));a>=2**(l-1)&&(a=a-2**l)}return a},BigNumber:function(i){return i.toNumber()},bigint:function(i){return Number(i)},Fraction:function(i){return i.valueOf()},Unit:t.referToSelf(n=>i=>{var o=i.clone();return o.value=n(i.value),o}),null:function(i){return 0},"Unit, string | Unit":function(i,o){return i.toNumber(o)},"Array | Matrix":t.referToSelf(n=>i=>wt(i,n))});return r.fromJSON=function(n){return parseFloat(n.value)},r});var Woe="bigint",Voe=["typed"],UI=$(Woe,Voe,e=>{var{typed:t}=e,r=t("bigint",{"":function(){return 0n},bigint:function(i){return i},number:function(i){return BigInt(i.toFixed())},BigNumber:function(i){return BigInt(i.round().toString())},Fraction:function(i){return BigInt(i.valueOf().toFixed())},"string | boolean":function(i){return BigInt(i)},null:function(i){return 0n},"Array | Matrix":t.referToSelf(n=>i=>wt(i,n))});return r.fromJSON=function(n){return BigInt(n.value)},r});var HI="string",Goe=["typed"],$I=$(HI,Goe,e=>{var{typed:t}=e;return t(HI,{"":function(){return""},number:Ls,null:function(n){return"null"},boolean:function(n){return n+""},string:function(n){return n},"Array | Matrix":t.referToSelf(r=>n=>wt(n,r)),any:function(n){return String(n)}})});var WI="boolean",Yoe=["typed"],VI=$(WI,Yoe,e=>{var{typed:t}=e;return t(WI,{"":function(){return!1},boolean:function(n){return n},number:function(n){return!!n},null:function(n){return!1},BigNumber:function(n){return!n.isZero()},string:function(n){var i=n.toLowerCase();if(i==="true")return!0;if(i==="false")return!1;var o=Number(n);if(n!==""&&!isNaN(o))return!!o;throw new Error('Cannot convert "'+n+'" to a boolean')},"Array | Matrix":t.referToSelf(r=>n=>wt(n,r))})});var Zoe="bignumber",Xoe=["typed","BigNumber"],GI=$(Zoe,Xoe,e=>{var{typed:t,BigNumber:r}=e;return t("bignumber",{"":function(){return new r(0)},number:function(i){return new r(i+"")},string:function(i){var o=i.match(/(0[box][0-9a-fA-F]*)i([0-9]*)/);if(o){var l=o[2],s=r(o[1]),a=new r(2).pow(Number(l));if(s.gt(a.sub(1)))throw new SyntaxError('String "'.concat(i,'" is out of range'));var u=new r(2).pow(Number(l)-1);return s.gte(u)?s.sub(a):s}return new r(i)},BigNumber:function(i){return i},bigint:function(i){return new r(i.toString())},Unit:t.referToSelf(n=>i=>{var o=i.clone();return o.value=n(i.value),o}),Fraction:function(i){return new r(i.n).div(i.d).times(i.s)},null:function(i){return new r(0)},"Array | Matrix":t.referToSelf(n=>i=>wt(i,n))})});var Koe="complex",Joe=["typed","Complex"],YI=$(Koe,Joe,e=>{var{typed:t,Complex:r}=e;return t("complex",{"":function(){return r.ZERO},number:function(i){return new r(i,0)},"number, number":function(i,o){return new r(i,o)},"BigNumber, BigNumber":function(i,o){return new r(i.toNumber(),o.toNumber())},Fraction:function(i){return new r(i.valueOf(),0)},Complex:function(i){return i.clone()},string:function(i){return r(i)},null:function(i){return r(0)},Object:function(i){if("re"in i&&"im"in i)return new r(i.re,i.im);if("r"in i&&"phi"in i||"abs"in i&&"arg"in i)return new r(i);throw new Error("Expected object with properties (re and im) or (r and phi) or (abs and arg)")},"Array | Matrix":t.referToSelf(n=>i=>wt(i,n))})});var Qoe="fraction",joe=["typed","Fraction"],ZI=$(Qoe,joe,e=>{var{typed:t,Fraction:r}=e;return t("fraction",{number:function(i){if(!isFinite(i)||isNaN(i))throw new Error(i+" cannot be represented as a fraction");return new r(i)},string:function(i){return new r(i)},"number, number":function(i,o){return new r(i,o)},null:function(i){return new r(0)},BigNumber:function(i){return new r(i.toString())},bigint:function(i){return new r(i.toString())},Fraction:function(i){return i},Unit:t.referToSelf(n=>i=>{var o=i.clone();return o.value=n(i.value),o}),Object:function(i){return new r(i)},"Array | Matrix":t.referToSelf(n=>i=>wt(i,n))})});var XI="matrix",eae=["typed","Matrix","DenseMatrix","SparseMatrix"],KI=$(XI,eae,e=>{var{typed:t,Matrix:r,DenseMatrix:n,SparseMatrix:i}=e;return t(XI,{"":function(){return o([])},string:function(s){return o([],s)},"string, string":function(s,a){return o([],s,a)},Array:function(s){return o(s)},Matrix:function(s){return o(s,s.storage())},"Array | Matrix, string":o,"Array | Matrix, string, string":o});function o(l,s,a){if(s==="dense"||s==="default"||s===void 0)return new n(l,a);if(s==="sparse")return new i(l,a);throw new TypeError("Unknown matrix type "+JSON.stringify(s)+".")}});var JI="matrixFromFunction",tae=["typed","matrix","isZero"],QI=$(JI,tae,e=>{var{typed:t,matrix:r,isZero:n}=e;return t(JI,{"Array | Matrix, function, string, string":function(l,s,a,u){return i(l,s,a,u)},"Array | Matrix, function, string":function(l,s,a){return i(l,s,a)},"Matrix, function":function(l,s){return i(l,s,"dense")},"Array, function":function(l,s){return i(l,s,"dense").toArray()},"Array | Matrix, string, function":function(l,s,a){return i(l,a,s)},"Array | Matrix, string, string, function":function(l,s,a,u){return i(l,u,s,a)}});function i(o,l,s,a){var u;return a!==void 0?u=r(s,a):u=r(s),u.resize(o),u.forEach(function(f,p){var h=l(p);n(h)||u.set(p,h)}),u}});var jI="matrixFromRows",rae=["typed","matrix","flatten","size"],ek=$(jI,rae,e=>{var{typed:t,matrix:r,flatten:n,size:i}=e;return t(jI,{"...Array":function(a){return o(a)},"...Matrix":function(a){return r(o(a.map(u=>u.toArray())))}});function o(s){if(s.length===0)throw new TypeError("At least one row is needed to construct a matrix.");var a=l(s[0]),u=[];for(var f of s){var p=l(f);if(p!==a)throw new TypeError("The vectors had different length: "+(a|0)+" \u2260 "+(p|0));u.push(n(f))}return u}function l(s){var a=i(s);if(a.length===1)return a[0];if(a.length===2){if(a[0]===1)return a[1];if(a[1]===1)return a[0];throw new TypeError("At least one of the arguments is not a vector.")}else throw new TypeError("Only one- or two-dimensional vectors are supported.")}});var tk="matrixFromColumns",nae=["typed","matrix","flatten","size"],rk=$(tk,nae,e=>{var{typed:t,matrix:r,flatten:n,size:i}=e;return t(tk,{"...Array":function(a){return o(a)},"...Matrix":function(a){return r(o(a.map(u=>u.toArray())))}});function o(s){if(s.length===0)throw new TypeError("At least one column is needed to construct a matrix.");for(var a=l(s[0]),u=[],f=0;f{var{typed:t}=e;return t(nk,{"Unit, Array":function(n,i){return n.splitUnit(i)}})});var ok="unaryMinus",oae=["typed"],ak=$(ok,oae,e=>{var{typed:t}=e;return t(ok,{number:hA,"Complex | BigNumber | Fraction":r=>r.neg(),bigint:r=>-r,Unit:t.referToSelf(r=>n=>{var i=n.clone();return i.value=t.find(r,i.valueType())(n.value),i}),"Array | Matrix":t.referToSelf(r=>n=>wt(n,r,!0))})});var sk="unaryPlus",aae=["typed","config","numeric"],uk=$(sk,aae,e=>{var{typed:t,config:r,numeric:n}=e;return t(sk,{number:gA,Complex:function(o){return o},BigNumber:function(o){return o},bigint:function(o){return o},Fraction:function(o){return o},Unit:function(o){return o.clone()},"Array | Matrix":t.referToSelf(i=>o=>wt(o,i,!0)),boolean:function(o){return n(o?1:0,r.number)},string:function(o){return n(o,ao(o,r))}})});var lk="abs",sae=["typed"],fk=$(lk,sae,e=>{var{typed:t}=e;return t(lk,{number:cA,"Complex | BigNumber | Fraction | Unit":r=>r.abs(),bigint:r=>r<0n?-r:r,"Array | Matrix":t.referToSelf(r=>n=>wt(n,r,!0))})});var ck="apply",uae=["typed","isInteger"],Dd=$(ck,uae,e=>{var{typed:t,isInteger:r}=e;return t(ck,{"Array | Matrix, number | BigNumber, function":function(i,o,l){if(!r(o))throw new TypeError("Integer number expected for dimension");var s=Array.isArray(i)?Ft(i):i.size();if(o<0||o>=s.length)throw new bi(o,s.length);return yt(i)?i.create(cw(i.valueOf(),o,l),i.datatype()):cw(i,o,l)}})});function cw(e,t,r){var n,i,o;if(t<=0)if(Array.isArray(e[0])){for(o=lae(e),i=[],n=0;n{var{typed:t}=e;return t(pk,{"number, number":pA,"Complex, Complex":function(n,i){return n.add(i)},"BigNumber, BigNumber":function(n,i){return n.plus(i)},"bigint, bigint":function(n,i){return n+i},"Fraction, Fraction":function(n,i){return n.add(i)},"Unit, Unit":t.referToSelf(r=>(n,i)=>{if(n.value===null||n.value===void 0)throw new Error("Parameter x contains a unit with undefined value");if(i.value===null||i.value===void 0)throw new Error("Parameter y contains a unit with undefined value");if(!n.equalBase(i))throw new Error("Units do not match");var o=n.clone();return o.value=t.find(r,[o.valueType(),i.valueType()])(o.value,i.value),o.fixPrefix=!1,o})})});var dk="subtractScalar",cae=["typed"],hk=$(dk,cae,e=>{var{typed:t}=e;return t(dk,{"number, number":mA,"Complex, Complex":function(n,i){return n.sub(i)},"BigNumber, BigNumber":function(n,i){return n.minus(i)},"bigint, bigint":function(n,i){return n-i},"Fraction, Fraction":function(n,i){return n.sub(i)},"Unit, Unit":t.referToSelf(r=>(n,i)=>{if(n.value===null||n.value===void 0)throw new Error("Parameter x contains a unit with undefined value");if(i.value===null||i.value===void 0)throw new Error("Parameter y contains a unit with undefined value");if(!n.equalBase(i))throw new Error("Units do not match");var o=n.clone();return o.value=t.find(r,[o.valueType(),i.valueType()])(o.value,i.value),o.fixPrefix=!1,o})})});var gk="cbrt",pae=["config","typed","isNegative","unaryMinus","matrix","Complex","BigNumber","Fraction"],vk=$(gk,pae,e=>{var{config:t,typed:r,isNegative:n,unaryMinus:i,matrix:o,Complex:l,BigNumber:s,Fraction:a}=e;return r(gk,{number:yd,Complex:u,"Complex, boolean":u,BigNumber:function(h){return h.cbrt()},Unit:f});function u(p,h){var g=p.arg()/3,x=p.abs(),v=new l(yd(x),0).mul(new l(0,g).exp());if(h){var S=[v,new l(yd(x),0).mul(new l(0,g+Math.PI*2/3).exp()),new l(yd(x),0).mul(new l(0,g-Math.PI*2/3).exp())];return t.matrix==="Array"?S:o(S)}else return v}function f(p){if(p.value&&gi(p.value)){var h=p.clone();return h.value=1,h=h.pow(1/3),h.value=u(p.value),h}else{var g=n(p.value);g&&(p.value=i(p.value));var x;Nt(p.value)?x=new s(1).div(3):va(p.value)?x=new a(1,3):x=1/3;var v=p.pow(x);return g&&(v.value=i(v.value)),v}}});var mae="matAlgo11xS0s",dae=["typed","equalScalar"],Or=$(mae,dae,e=>{var{typed:t,equalScalar:r}=e;return function(i,o,l,s){var a=i._values,u=i._index,f=i._ptr,p=i._size,h=i._datatype;if(!a)throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");var g=p[0],x=p[1],v,S=r,D=0,C=l;typeof h=="string"&&(v=h,S=t.find(r,[v,v]),D=t.convert(0,v),o=t.convert(o,v),C=t.find(l,[v,v]));for(var E=[],M=[],T=[],N=0;N{var{typed:t,DenseMatrix:r}=e;return function(i,o,l,s){var a=i._values,u=i._index,f=i._ptr,p=i._size,h=i._datatype;if(!a)throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");var g=p[0],x=p[1],v,S=l;typeof h=="string"&&(v=h,o=t.convert(o,v),S=t.find(l,[v,v]));for(var D=[],C=[],E=[],M=0;M{var{typed:t}=e;return function(i,o,l,s){var a=i._data,u=i._size,f=i._datatype,p,h=l;typeof f=="string"&&(p=f,o=t.convert(o,p),h=t.find(l,[p,p]));var g=u.length>0?r(h,0,u,u[0],a,o,s):[];return i.createDenseMatrix({data:g,size:_t(u),datatype:p})};function r(n,i,o,l,s,a,u){var f=[];if(i===o.length-1)for(var p=0;p{var{typed:t,config:r,round:n}=e;return t(iC,{number:function(o){return Kr(o,n(o),r.relTol,r.absTol)?n(o):Math.ceil(o)},"number, number":function(o,l){if(Kr(o,n(o,l),r.relTol,r.absTol))return n(o,l);var[s,a]="".concat(o,"e").split("e"),u=Math.ceil(Number("".concat(s,"e").concat(Number(a)+l)));return[s,a]="".concat(u,"e").split("e"),Number("".concat(s,"e").concat(Number(a)-l))}})}),xk=$(iC,yae,e=>{var{typed:t,config:r,round:n,matrix:i,equalScalar:o,zeros:l,DenseMatrix:s}=e,a=Or({typed:t,equalScalar:o}),u=Dr({typed:t,DenseMatrix:s}),f=Vn({typed:t}),p=wae({typed:t,config:r,round:n});return t("ceil",{number:p.signatures.number,"number,number":p.signatures["number,number"],Complex:function(g){return g.ceil()},"Complex, number":function(g,x){return g.ceil(x)},"Complex, BigNumber":function(g,x){return g.ceil(x.toNumber())},BigNumber:function(g){return gn(g,n(g),r.relTol,r.absTol)?n(g):g.ceil()},"BigNumber, BigNumber":function(g,x){return gn(g,n(g,x),r.relTol,r.absTol)?n(g,x):g.toDecimalPlaces(x.toNumber(),up.ROUND_CEIL)},Fraction:function(g){return g.ceil()},"Fraction, number":function(g,x){return g.ceil(x)},"Fraction, BigNumber":function(g,x){return g.ceil(x.toNumber())},"Array | Matrix":t.referToSelf(h=>g=>wt(g,h,!0)),"Array, number | BigNumber":t.referToSelf(h=>(g,x)=>wt(g,v=>h(v,x),!0)),"SparseMatrix, number | BigNumber":t.referToSelf(h=>(g,x)=>a(g,x,h,!1)),"DenseMatrix, number | BigNumber":t.referToSelf(h=>(g,x)=>f(g,x,h,!1)),"number | Complex | Fraction | BigNumber, Array":t.referToSelf(h=>(g,x)=>f(i(x),g,h,!0).valueOf()),"number | Complex | Fraction | BigNumber, Matrix":t.referToSelf(h=>(g,x)=>o(g,0)?l(x.size(),x.storage()):x.storage()==="dense"?f(x,g,h,!0):u(x,g,h,!0))})});var yk="cube",bae=["typed"],wk=$(yk,bae,e=>{var{typed:t}=e;return t(yk,{number:vA,Complex:function(n){return n.mul(n).mul(n)},BigNumber:function(n){return n.times(n).times(n)},bigint:function(n){return n*n*n},Fraction:function(n){return n.pow(3)},Unit:function(n){return n.pow(3)}})});var bk="exp",Dae=["typed"],Dk=$(bk,Dae,e=>{var{typed:t}=e;return t(bk,{number:xA,Complex:function(n){return n.exp()},BigNumber:function(n){return n.exp()}})});var Sk="expm1",Sae=["typed","Complex"],Nk=$(Sk,Sae,e=>{var{typed:t,Complex:r}=e;return t(Sk,{number:yA,Complex:function(i){var o=Math.exp(i.re);return new r(o*Math.cos(i.im)-1,o*Math.sin(i.im))},BigNumber:function(i){return i.exp().minus(1)}})});var oC="fix",Nae=["typed","Complex","matrix","ceil","floor","equalScalar","zeros","DenseMatrix"],Eae=$(oC,["typed","ceil","floor"],e=>{var{typed:t,ceil:r,floor:n}=e;return t(oC,{number:function(o){return o>0?n(o):r(o)},"number, number":function(o,l){return o>0?n(o,l):r(o,l)}})}),Ek=$(oC,Nae,e=>{var{typed:t,Complex:r,matrix:n,ceil:i,floor:o,equalScalar:l,zeros:s,DenseMatrix:a}=e,u=Dr({typed:t,DenseMatrix:a}),f=Vn({typed:t}),p=Eae({typed:t,ceil:i,floor:o});return t("fix",{number:p.signatures.number,"number, number | BigNumber":p.signatures["number,number"],Complex:function(g){return new r(g.re>0?Math.floor(g.re):Math.ceil(g.re),g.im>0?Math.floor(g.im):Math.ceil(g.im))},"Complex, number":function(g,x){return new r(g.re>0?o(g.re,x):i(g.re,x),g.im>0?o(g.im,x):i(g.im,x))},"Complex, BigNumber":function(g,x){var v=x.toNumber();return new r(g.re>0?o(g.re,v):i(g.re,v),g.im>0?o(g.im,v):i(g.im,v))},BigNumber:function(g){return g.isNegative()?i(g):o(g)},"BigNumber, number | BigNumber":function(g,x){return g.isNegative()?i(g,x):o(g,x)},Fraction:function(g){return g.s<0?g.ceil():g.floor()},"Fraction, number | BigNumber":function(g,x){return g.s<0?i(g,x):o(g,x)},"Array | Matrix":t.referToSelf(h=>g=>wt(g,h,!0)),"Array | Matrix, number | BigNumber":t.referToSelf(h=>(g,x)=>wt(g,v=>h(v,x),!0)),"number | Complex | Fraction | BigNumber, Array":t.referToSelf(h=>(g,x)=>f(n(x),g,h,!0).valueOf()),"number | Complex | Fraction | BigNumber, Matrix":t.referToSelf(h=>(g,x)=>l(g,0)?s(x.size(),x.storage()):x.storage()==="dense"?f(x,g,h,!0):u(x,g,h,!0))})});var aC="floor",Aae=["typed","config","round","matrix","equalScalar","zeros","DenseMatrix"],Cae=$(aC,["typed","config","round"],e=>{var{typed:t,config:r,round:n}=e;return t(aC,{number:function(o){return Kr(o,n(o),r.relTol,r.absTol)?n(o):Math.floor(o)},"number, number":function(o,l){if(Kr(o,n(o,l),r.relTol,r.absTol))return n(o,l);var[s,a]="".concat(o,"e").split("e"),u=Math.floor(Number("".concat(s,"e").concat(Number(a)+l)));return[s,a]="".concat(u,"e").split("e"),Number("".concat(s,"e").concat(Number(a)-l))}})}),pw=$(aC,Aae,e=>{var{typed:t,config:r,round:n,matrix:i,equalScalar:o,zeros:l,DenseMatrix:s}=e,a=Or({typed:t,equalScalar:o}),u=Dr({typed:t,DenseMatrix:s}),f=Vn({typed:t}),p=Cae({typed:t,config:r,round:n});return t("floor",{number:p.signatures.number,"number,number":p.signatures["number,number"],Complex:function(g){return g.floor()},"Complex, number":function(g,x){return g.floor(x)},"Complex, BigNumber":function(g,x){return g.floor(x.toNumber())},BigNumber:function(g){return gn(g,n(g),r.relTol,r.absTol)?n(g):g.floor()},"BigNumber, BigNumber":function(g,x){return gn(g,n(g,x),r.relTol,r.absTol)?n(g,x):g.toDecimalPlaces(x.toNumber(),up.ROUND_FLOOR)},Fraction:function(g){return g.floor()},"Fraction, number":function(g,x){return g.floor(x)},"Fraction, BigNumber":function(g,x){return g.floor(x.toNumber())},"Array | Matrix":t.referToSelf(h=>g=>wt(g,h,!0)),"Array, number | BigNumber":t.referToSelf(h=>(g,x)=>wt(g,v=>h(v,x),!0)),"SparseMatrix, number | BigNumber":t.referToSelf(h=>(g,x)=>a(g,x,h,!1)),"DenseMatrix, number | BigNumber":t.referToSelf(h=>(g,x)=>f(g,x,h,!1)),"number | Complex | Fraction | BigNumber, Array":t.referToSelf(h=>(g,x)=>f(i(x),g,h,!0).valueOf()),"number | Complex | Fraction | BigNumber, Matrix":t.referToSelf(h=>(g,x)=>o(g,0)?l(x.size(),x.storage()):x.storage()==="dense"?f(x,g,h,!0):u(x,g,h,!0))})});var Mae="matAlgo02xDS0",Tae=["typed","equalScalar"],Gn=$(Mae,Tae,e=>{var{typed:t,equalScalar:r}=e;return function(i,o,l,s){var a=i._data,u=i._size,f=i._datatype||i.getDataType(),p=o._values,h=o._index,g=o._ptr,x=o._size,v=o._datatype||o._data===void 0?o._datatype:o.getDataType();if(u.length!==x.length)throw new Wt(u.length,x.length);if(u[0]!==x[0]||u[1]!==x[1])throw new RangeError("Dimension mismatch. Matrix A ("+u+") must match Matrix B ("+x+")");if(!p)throw new Error("Cannot perform operation on Dense Matrix and Pattern Sparse Matrix");var S=u[0],D=u[1],C,E=r,M=0,T=l;typeof f=="string"&&f===v&&f!=="mixed"&&(C=f,E=t.find(r,[C,C]),M=t.convert(0,C),T=t.find(l,[C,C]));for(var N=[],O=[],F=[],I=0;I{var{typed:t}=e;return function(n,i,o,l){var s=n._data,a=n._size,u=n._datatype||n.getDataType(),f=i._values,p=i._index,h=i._ptr,g=i._size,x=i._datatype||i._data===void 0?i._datatype:i.getDataType();if(a.length!==g.length)throw new Wt(a.length,g.length);if(a[0]!==g[0]||a[1]!==g[1])throw new RangeError("Dimension mismatch. Matrix A ("+a+") must match Matrix B ("+g+")");if(!f)throw new Error("Cannot perform operation on Dense Matrix and Pattern Sparse Matrix");var v=a[0],S=a[1],D,C=0,E=o;typeof u=="string"&&u===x&&u!=="mixed"&&(D=u,C=t.convert(0,D),E=t.find(o,[D,D]));for(var M=[],T=0;T{var{typed:t,equalScalar:r}=e;return function(i,o,l){var s=i._values,a=i._index,u=i._ptr,f=i._size,p=i._datatype||i._data===void 0?i._datatype:i.getDataType(),h=o._values,g=o._index,x=o._ptr,v=o._size,S=o._datatype||o._data===void 0?o._datatype:o.getDataType();if(f.length!==v.length)throw new Wt(f.length,v.length);if(f[0]!==v[0]||f[1]!==v[1])throw new RangeError("Dimension mismatch. Matrix A ("+f+") must match Matrix B ("+v+")");var D=f[0],C=f[1],E,M=r,T=0,N=l;typeof p=="string"&&p===S&&p!=="mixed"&&(E=p,M=t.find(r,[E,E]),T=t.convert(0,E),N=t.find(l,[E,E]));var O=s&&h?[]:void 0,F=[],I=[],B=O?[]:void 0,L=O?[]:void 0,q=[],R=[],V,X,U,H;for(X=0;X{var{typed:t}=e;return function(i,o,l){var s=i._data,a=i._size,u=i._datatype,f=o._data,p=o._size,h=o._datatype,g=[];if(a.length!==p.length)throw new Wt(a.length,p.length);for(var x=0;x0?r(S,0,g,g[0],s,f):[];return i.createDenseMatrix({data:D,size:g,datatype:v})};function r(n,i,o,l,s,a){var u=[];if(i===o.length-1)for(var f=0;fBae(n,r))}function Bae(e,t){return Go(e.size(),t)?e:e.create(Cu(e.valueOf(),t),e.datatype())}var Pae="matrixAlgorithmSuite",Rae=["typed","matrix"],Xt=$(Pae,Rae,e=>{var{typed:t,matrix:r}=e,n=Ak({typed:t}),i=Vn({typed:t});return function(l){var s=l.elop,a=l.SD||l.DS,u;s?(u={"DenseMatrix, DenseMatrix":(g,x)=>n(...Di(g,x),s),"Array, Array":(g,x)=>n(...Di(r(g),r(x)),s).valueOf(),"Array, DenseMatrix":(g,x)=>n(...Di(r(g),x),s),"DenseMatrix, Array":(g,x)=>n(...Di(g,r(x)),s)},l.SS&&(u["SparseMatrix, SparseMatrix"]=(g,x)=>l.SS(...Di(g,x),s,!1)),l.DS&&(u["DenseMatrix, SparseMatrix"]=(g,x)=>l.DS(...Di(g,x),s,!1),u["Array, SparseMatrix"]=(g,x)=>l.DS(...Di(r(g),x),s,!1)),a&&(u["SparseMatrix, DenseMatrix"]=(g,x)=>a(...Di(x,g),s,!0),u["SparseMatrix, Array"]=(g,x)=>a(...Di(r(x),g),s,!0))):(u={"DenseMatrix, DenseMatrix":t.referToSelf(g=>(x,v)=>n(...Di(x,v),g)),"Array, Array":t.referToSelf(g=>(x,v)=>n(...Di(r(x),r(v)),g).valueOf()),"Array, DenseMatrix":t.referToSelf(g=>(x,v)=>n(...Di(r(x),v),g)),"DenseMatrix, Array":t.referToSelf(g=>(x,v)=>n(...Di(x,r(v)),g))},l.SS&&(u["SparseMatrix, SparseMatrix"]=t.referToSelf(g=>(x,v)=>l.SS(...Di(x,v),g,!1))),l.DS&&(u["DenseMatrix, SparseMatrix"]=t.referToSelf(g=>(x,v)=>l.DS(...Di(x,v),g,!1)),u["Array, SparseMatrix"]=t.referToSelf(g=>(x,v)=>l.DS(...Di(r(x),v),g,!1))),a&&(u["SparseMatrix, DenseMatrix"]=t.referToSelf(g=>(x,v)=>a(...Di(v,x),g,!0)),u["SparseMatrix, Array"]=t.referToSelf(g=>(x,v)=>a(...Di(r(v),x),g,!0))));var f=l.scalar||"any",p=l.Ds||l.Ss;p&&(s?(u["DenseMatrix,"+f]=(g,x)=>i(g,x,s,!1),u[f+", DenseMatrix"]=(g,x)=>i(x,g,s,!0),u["Array,"+f]=(g,x)=>i(r(g),x,s,!1).valueOf(),u[f+", Array"]=(g,x)=>i(r(x),g,s,!0).valueOf()):(u["DenseMatrix,"+f]=t.referToSelf(g=>(x,v)=>i(x,v,g,!1)),u[f+", DenseMatrix"]=t.referToSelf(g=>(x,v)=>i(v,x,g,!0)),u["Array,"+f]=t.referToSelf(g=>(x,v)=>i(r(x),v,g,!1).valueOf()),u[f+", Array"]=t.referToSelf(g=>(x,v)=>i(r(v),x,g,!0).valueOf())));var h=l.sS!==void 0?l.sS:l.Ss;return s?(l.Ss&&(u["SparseMatrix,"+f]=(g,x)=>l.Ss(g,x,s,!1)),h&&(u[f+", SparseMatrix"]=(g,x)=>h(x,g,s,!0))):(l.Ss&&(u["SparseMatrix,"+f]=t.referToSelf(g=>(x,v)=>l.Ss(x,v,g,!1))),h&&(u[f+", SparseMatrix"]=t.referToSelf(g=>(x,v)=>h(v,x,g,!0)))),s&&s.signatures&&R1(u,s.signatures),u}});var Ck="mod",qae=["typed","config","round","matrix","equalScalar","zeros","DenseMatrix","concat"],mw=$(Ck,qae,e=>{var{typed:t,config:r,round:n,matrix:i,equalScalar:o,zeros:l,DenseMatrix:s,concat:a}=e,u=pw({typed:t,config:r,round:n,matrix:i,equalScalar:o,zeros:l,DenseMatrix:s}),f=Gn({typed:t,equalScalar:o}),p=Vr({typed:t}),h=$f({typed:t,equalScalar:o}),g=Or({typed:t,equalScalar:o}),x=Dr({typed:t,DenseMatrix:s}),v=Xt({typed:t,matrix:i,concat:a});return t(Ck,{"number, number":S,"BigNumber, BigNumber":function(C,E){return E.isZero()?C:C.sub(E.mul(u(C.div(E))))},"bigint, bigint":function(C,E){if(E===0n)return C;if(C<0){var M=C%E;return M===0n?M:M+E}return C%E},"Fraction, Fraction":function(C,E){return E.equals(0)?C:C.sub(E.mul(u(C.div(E))))}},v({SS:h,DS:p,SD:f,Ss:g,sS:x}));function S(D,C){return C===0?D:D-C*u(D/C)}});var zae="matAlgo01xDSid",Uae=["typed"],fo=$(zae,Uae,e=>{var{typed:t}=e;return function(n,i,o,l){var s=n._data,a=n._size,u=n._datatype||n.getDataType(),f=i._values,p=i._index,h=i._ptr,g=i._size,x=i._datatype||i._data===void 0?i._datatype:i.getDataType();if(a.length!==g.length)throw new Wt(a.length,g.length);if(a[0]!==g[0]||a[1]!==g[1])throw new RangeError("Dimension mismatch. Matrix A ("+a+") must match Matrix B ("+g+")");if(!f)throw new Error("Cannot perform operation on Dense Matrix and Pattern Sparse Matrix");var v=a[0],S=a[1],D=typeof u=="string"&&u!=="mixed"&&u===x?u:void 0,C=D?t.find(o,[D,D]):o,E,M,T=[];for(E=0;E{var{typed:t,equalScalar:r}=e;return function(i,o,l){var s=i._values,a=i._index,u=i._ptr,f=i._size,p=i._datatype||i._data===void 0?i._datatype:i.getDataType(),h=o._values,g=o._index,x=o._ptr,v=o._size,S=o._datatype||o._data===void 0?o._datatype:o.getDataType();if(f.length!==v.length)throw new Wt(f.length,v.length);if(f[0]!==v[0]||f[1]!==v[1])throw new RangeError("Dimension mismatch. Matrix A ("+f+") must match Matrix B ("+v+")");var D=f[0],C=f[1],E,M=r,T=0,N=l;typeof p=="string"&&p===S&&p!=="mixed"&&(E=p,M=t.find(r,[E,E]),T=t.convert(0,E),N=t.find(l,[E,E]));var O=s&&h?[]:void 0,F=[],I=[],B=s&&h?[]:void 0,L=s&&h?[]:void 0,q=[],R=[],V,X,U,H,ee;for(X=0;X{var{typed:t,DenseMatrix:r}=e;return function(i,o,l,s){var a=i._values,u=i._index,f=i._ptr,p=i._size,h=i._datatype;if(!a)throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");var g=p[0],x=p[1],v,S=l;typeof h=="string"&&(v=h,o=t.convert(o,v),S=t.find(l,[v,v]));for(var D=[],C=[],E=[],M=0;MArray.isArray(t))}var _k=$(Mk,Gae,e=>{var{typed:t,matrix:r,config:n,round:i,equalScalar:o,zeros:l,BigNumber:s,DenseMatrix:a,concat:u}=e,f=mw({typed:t,config:n,round:i,matrix:r,equalScalar:o,zeros:l,DenseMatrix:a,concat:u}),p=fo({typed:t}),h=Sd({typed:t,equalScalar:o}),g=Xo({typed:t,DenseMatrix:a}),x=Xt({typed:t,matrix:r,concat:u});return t(Mk,{"number, number":v,"BigNumber, BigNumber":S,"Fraction, Fraction":(D,C)=>D.gcd(C)},x({SS:h,DS:p,Ss:g}),{[Yae]:t.referToSelf(D=>(C,E,M)=>{for(var T=D(C,E),N=0;NC=>{if(C.length===1&&Array.isArray(C[0])&&Tk(C[0]))return D(...C[0]);if(Tk(C))return D(...C);throw new ba("gcd() supports only 1d matrices!")}),Matrix:t.referToSelf(D=>C=>D(C.toArray()))});function v(D,C){if(!ht(D)||!ht(C))throw new Error("Parameters in function gcd must be integer numbers");for(var E;C!==0;)E=f(D,C),D=C,C=E;return D<0?-D:D}function S(D,C){if(!D.isInt()||!C.isInt())throw new Error("Parameters in function gcd must be integer numbers");for(var E=new s(0);!C.isZero();){var M=f(D,C);D=C,C=M}return D.lt(E)?D.neg():D}});var Zae="matAlgo06xS0S0",Xae=["typed","equalScalar"],Wf=$(Zae,Xae,e=>{var{typed:t,equalScalar:r}=e;return function(i,o,l){var s=i._values,a=i._size,u=i._datatype||i._data===void 0?i._datatype:i.getDataType(),f=o._values,p=o._size,h=o._datatype||o._data===void 0?o._datatype:o.getDataType();if(a.length!==p.length)throw new Wt(a.length,p.length);if(a[0]!==p[0]||a[1]!==p[1])throw new RangeError("Dimension mismatch. Matrix A ("+a+") must match Matrix B ("+p+")");var g=a[0],x=a[1],v,S=r,D=0,C=l;typeof u=="string"&&u===h&&u!=="mixed"&&(v=u,S=t.find(r,[v,v]),D=t.convert(0,v),C=t.find(l,[v,v]));for(var E=s&&f?[]:void 0,M=[],T=[],N=E?[]:void 0,O=[],F=[],I=0;I{var{typed:t,matrix:r,equalScalar:n,concat:i}=e,o=Gn({typed:t,equalScalar:n}),l=Wf({typed:t,equalScalar:n}),s=Or({typed:t,equalScalar:n}),a=Xt({typed:t,matrix:r,concat:i}),u="number | BigNumber | Fraction | Matrix | Array",f={};return f["".concat(u,", ").concat(u,", ...").concat(u)]=t.referToSelf(h=>(g,x,v)=>{for(var S=h(g,x),D=0;Dh.lcm(g)},a({SS:l,DS:o,Ss:s}),f);function p(h,g){if(!h.isInt()||!g.isInt())throw new Error("Parameters in function lcm must be integer numbers");if(h.isZero())return h;if(g.isZero())return g;for(var x=h.times(g);!g.isZero();){var v=g;g=h.mod(v),h=v}return x.div(h).abs()}});var Ik="log10",Jae=["typed","config","Complex"],kk=$(Ik,Jae,e=>{var{typed:t,config:r,Complex:n}=e;return t(Ik,{number:function(o){return o>=0||r.predictable?bA(o):new n(o,0).log().div(Math.LN10)},Complex:function(o){return new n(o).log().div(Math.LN10)},BigNumber:function(o){return!o.isNegative()||r.predictable?o.log():new n(o.toNumber(),0).log().div(Math.LN10)},"Array | Matrix":t.referToSelf(i=>o=>wt(o,i))})});var Lk="log2",Qae=["typed","config","Complex"],Bk=$(Lk,Qae,e=>{var{typed:t,config:r,Complex:n}=e;return t(Lk,{number:function(l){return l>=0||r.predictable?DA(l):i(new n(l,0))},Complex:i,BigNumber:function(l){return!l.isNegative()||r.predictable?l.log(2):i(new n(l.toNumber(),0))},"Array | Matrix":t.referToSelf(o=>l=>wt(l,o))});function i(o){var l=Math.sqrt(o.re*o.re+o.im*o.im);return new n(Math.log2?Math.log2(l):Math.log(l)/Math.LN2,Math.atan2(o.im,o.re)/Math.LN2)}});var jae="multiplyScalar",ese=["typed"],Pk=$(jae,ese,e=>{var{typed:t}=e;return t("multiplyScalar",{"number, number":dA,"Complex, Complex":function(n,i){return n.mul(i)},"BigNumber, BigNumber":function(n,i){return n.times(i)},"bigint, bigint":function(n,i){return n*i},"Fraction, Fraction":function(n,i){return n.mul(i)},"number | Fraction | BigNumber | Complex, Unit":(r,n)=>n.multiply(r),"Unit, number | Fraction | BigNumber | Complex | Unit":(r,n)=>r.multiply(n)})});var Rk="multiply",tse=["typed","matrix","addScalar","multiplyScalar","equalScalar","dot"],qk=$(Rk,tse,e=>{var{typed:t,matrix:r,addScalar:n,multiplyScalar:i,equalScalar:o,dot:l}=e,s=Or({typed:t,equalScalar:o}),a=Vn({typed:t});function u(T,N){switch(T.length){case 1:switch(N.length){case 1:if(T[0]!==N[0])throw new RangeError("Dimension mismatch in multiplication. Vectors must have the same length");break;case 2:if(T[0]!==N[0])throw new RangeError("Dimension mismatch in multiplication. Vector length ("+T[0]+") must match Matrix rows ("+N[0]+")");break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix B has "+N.length+" dimensions)")}break;case 2:switch(N.length){case 1:if(T[1]!==N[0])throw new RangeError("Dimension mismatch in multiplication. Matrix columns ("+T[1]+") must match Vector length ("+N[0]+")");break;case 2:if(T[1]!==N[0])throw new RangeError("Dimension mismatch in multiplication. Matrix A columns ("+T[1]+") must match Matrix B rows ("+N[0]+")");break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix B has "+N.length+" dimensions)")}break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix A has "+T.length+" dimensions)")}}function f(T,N,O){if(O===0)throw new Error("Cannot multiply two empty vectors");return l(T,N)}function p(T,N){if(N.storage()!=="dense")throw new Error("Support for SparseMatrix not implemented");return h(T,N)}function h(T,N){var O=T._data,F=T._size,I=T._datatype||T.getDataType(),B=N._data,L=N._size,q=N._datatype||N.getDataType(),R=F[0],V=L[1],X,U=n,H=i;I&&q&&I===q&&typeof I=="string"&&I!=="mixed"&&(X=I,U=t.find(n,[X,X]),H=t.find(i,[X,X]));for(var ee=[],Z=0;Zse)for(var oe=0,we=0;we(N,O)=>{u(Ft(N),Ft(O));var F=T(r(N),r(O));return yt(F)?F.valueOf():F}),"Matrix, Matrix":function(N,O){var F=N.size(),I=O.size();return u(F,I),F.length===1?I.length===1?f(N,O,F[0]):p(N,O):I.length===1?g(N,O):x(N,O)},"Matrix, Array":t.referTo("Matrix,Matrix",T=>(N,O)=>T(N,r(O))),"Array, Matrix":t.referToSelf(T=>(N,O)=>T(r(N,O.storage()),O)),"SparseMatrix, any":function(N,O){return s(N,O,i,!1)},"DenseMatrix, any":function(N,O){return a(N,O,i,!1)},"any, SparseMatrix":function(N,O){return s(O,N,i,!0)},"any, DenseMatrix":function(N,O){return a(O,N,i,!0)},"Array, any":function(N,O){return a(r(N),O,i,!1).valueOf()},"any, Array":function(N,O){return a(r(O),N,i,!0).valueOf()},"any, any":i,"any, any, ...any":t.referToSelf(T=>(N,O,F)=>{for(var I=T(N,O),B=0;B{var{typed:t,matrix:r,equalScalar:n,BigNumber:i,concat:o}=e,l=fo({typed:t}),s=Gn({typed:t,equalScalar:n}),a=Wf({typed:t,equalScalar:n}),u=Or({typed:t,equalScalar:n}),f=Xt({typed:t,matrix:r,concat:o});function p(){throw new Error("Complex number not supported in function nthRoot. Use nthRoots instead.")}return t(zk,{number:SA,"number, number":SA,BigNumber:g=>h(g,new i(2)),"BigNumber, BigNumber":h,Complex:p,"Complex, number":p,Array:t.referTo("DenseMatrix,number",g=>x=>g(r(x),2).valueOf()),DenseMatrix:t.referTo("DenseMatrix,number",g=>x=>g(x,2)),SparseMatrix:t.referTo("SparseMatrix,number",g=>x=>g(x,2)),"SparseMatrix, SparseMatrix":t.referToSelf(g=>(x,v)=>{if(v.density()===1)return a(x,v,g);throw new Error("Root must be non-zero")}),"DenseMatrix, SparseMatrix":t.referToSelf(g=>(x,v)=>{if(v.density()===1)return l(x,v,g,!1);throw new Error("Root must be non-zero")}),"Array, SparseMatrix":t.referTo("DenseMatrix,SparseMatrix",g=>(x,v)=>g(r(x),v)),"number | BigNumber, SparseMatrix":t.referToSelf(g=>(x,v)=>{if(v.density()===1)return u(v,x,g,!0);throw new Error("Root must be non-zero")})},f({scalar:"number | BigNumber",SD:s,Ss:u,sS:!1}));function h(g,x){var v=i.precision,S=i.clone({precision:v+2}),D=new i(0),C=new S(1),E=x.isNegative();if(E&&(x=x.neg()),x.isZero())throw new Error("Root must be non-zero");if(g.isNegative()&&!x.abs().mod(2).equals(1))throw new Error("Root must be odd when a is negative.");if(g.isZero())return E?new S(1/0):0;if(!g.isFinite())return E?D:g;var M=g.abs().pow(C.div(x));return M=g.isNeg()?M.neg():M,new i((E?C.div(M):M).toPrecision(v))}});var Hk="sign",nse=["typed","BigNumber","Fraction","complex"],$k=$(Hk,nse,e=>{var{typed:t,BigNumber:r,complex:n,Fraction:i}=e;return t(Hk,{number:aw,Complex:function(l){return l.im===0?n(aw(l.re)):l.sign()},BigNumber:function(l){return new r(l.cmp(0))},bigint:function(l){return l>0n?1n:l<0n?-1n:0n},Fraction:function(l){return new i(l.s,1)},"Array | Matrix":t.referToSelf(o=>l=>wt(l,o,!0)),Unit:t.referToSelf(o=>l=>{if(!l._isDerived()&&l.units[0].unit.offset!==0)throw new TypeError("sign is ambiguous for units with offset");return t.find(o,l.valueType())(l.value)})})});var ise="sqrt",ose=["config","typed","Complex"],Wk=$(ise,ose,e=>{var{config:t,typed:r,Complex:n}=e;return r("sqrt",{number:i,Complex:function(l){return l.sqrt()},BigNumber:function(l){return!l.isNegative()||t.predictable?l.sqrt():i(l.toNumber())},Unit:function(l){return l.pow(.5)}});function i(o){return isNaN(o)?NaN:o>=0||t.predictable?Math.sqrt(o):new n(o,0).sqrt()}});var Vk="square",ase=["typed"],Gk=$(Vk,ase,e=>{var{typed:t}=e;return t(Vk,{number:NA,Complex:function(n){return n.mul(n)},BigNumber:function(n){return n.times(n)},bigint:function(n){return n*n},Fraction:function(n){return n.mul(n)},Unit:function(n){return n.pow(2)}})});var Yk="subtract",sse=["typed","matrix","equalScalar","subtractScalar","unaryMinus","DenseMatrix","concat"],Zk=$(Yk,sse,e=>{var{typed:t,matrix:r,equalScalar:n,subtractScalar:i,unaryMinus:o,DenseMatrix:l,concat:s}=e,a=fo({typed:t}),u=Vr({typed:t}),f=$f({typed:t,equalScalar:n}),p=Xo({typed:t,DenseMatrix:l}),h=Dr({typed:t,DenseMatrix:l}),g=Xt({typed:t,matrix:r,concat:s});return t(Yk,{"any, any":i},g({elop:i,SS:f,DS:a,SD:u,Ss:h,sS:p}))});var Xk="xgcd",use=["typed","config","matrix","BigNumber"],Kk=$(Xk,use,e=>{var{typed:t,config:r,matrix:n,BigNumber:i}=e;return t(Xk,{"number, number":function(s,a){var u=EA(s,a);return r.matrix==="Array"?u:n(u)},"BigNumber, BigNumber":o});function o(l,s){var a,u,f,p=new i(0),h=new i(1),g=p,x=h,v=h,S=p;if(!l.isInt()||!s.isInt())throw new Error("Parameters in function xgcd must be integer numbers");for(;!s.isZero();)u=l.div(s).floor(),f=l.mod(s),a=g,g=x.minus(u.times(g)),x=a,a=v,v=S.minus(u.times(v)),S=a,l=s,s=f;var D;return l.lt(p)?D=[l.neg(),x.neg(),S.neg()]:D=[l,l.isZero()?0:x,S],r.matrix==="Array"?D:n(D)}});var Jk="invmod",lse=["typed","config","BigNumber","xgcd","equal","smaller","mod","add","isInteger"],Qk=$(Jk,lse,e=>{var{typed:t,config:r,BigNumber:n,xgcd:i,equal:o,smaller:l,mod:s,add:a,isInteger:u}=e;return t(Jk,{"number, number":f,"BigNumber, BigNumber":f});function f(p,h){if(!u(p)||!u(h))throw new Error("Parameters in function invmod must be integer numbers");if(p=s(p,h),o(h,0))throw new Error("Divisor must be non zero");var g=i(p,h);g=g.valueOf();var[x,v]=g;return o(x,n(1))?(v=s(v,h),l(v,n(0))&&(v=a(v,h)),v):NaN}});var fse="matAlgo09xS0Sf",cse=["typed","equalScalar"],dw=$(fse,cse,e=>{var{typed:t,equalScalar:r}=e;return function(i,o,l){var s=i._values,a=i._index,u=i._ptr,f=i._size,p=i._datatype||i._data===void 0?i._datatype:i.getDataType(),h=o._values,g=o._index,x=o._ptr,v=o._size,S=o._datatype||o._data===void 0?o._datatype:o.getDataType();if(f.length!==v.length)throw new Wt(f.length,v.length);if(f[0]!==v[0]||f[1]!==v[1])throw new RangeError("Dimension mismatch. Matrix A ("+f+") must match Matrix B ("+v+")");var D=f[0],C=f[1],E,M=r,T=0,N=l;typeof p=="string"&&p===S&&p!=="mixed"&&(E=p,M=t.find(r,[E,E]),T=t.convert(0,E),N=t.find(l,[E,E]));var O=s&&h?[]:void 0,F=[],I=[],B=O?[]:void 0,L=[],q,R,V,X,U;for(R=0;R{var{typed:t,matrix:r,equalScalar:n,multiplyScalar:i,concat:o}=e,l=Gn({typed:t,equalScalar:n}),s=dw({typed:t,equalScalar:n}),a=Or({typed:t,equalScalar:n}),u=Xt({typed:t,matrix:r,concat:o});return t(jk,u({elop:i,SS:s,DS:l,Ss:a}))});function t5(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error("Integers expected in function bitAnd");var r=e.constructor;if(e.isNaN()||t.isNaN())return new r(NaN);if(e.isZero()||t.eq(-1)||e.eq(t))return e;if(t.isZero()||e.eq(-1))return t;if(!e.isFinite()||!t.isFinite()){if(!e.isFinite()&&!t.isFinite())return e.isNegative()===t.isNegative()?e:new r(0);if(!e.isFinite())return t.isNegative()?e:e.isNegative()?new r(0):t;if(!t.isFinite())return e.isNegative()?t:t.isNegative()?new r(0):e}return uC(e,t,function(n,i){return n&i})}function Nd(e){if(e.isFinite()&&!e.isInteger())throw new Error("Integer expected in function bitNot");var t=e.constructor,r=t.precision;t.config({precision:1e9});var n=e.plus(new t(1));return n.s=-n.s||null,t.config({precision:r}),n}function r5(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error("Integers expected in function bitOr");var r=e.constructor;if(e.isNaN()||t.isNaN())return new r(NaN);var n=new r(-1);return e.isZero()||t.eq(n)||e.eq(t)?t:t.isZero()||e.eq(n)?e:!e.isFinite()||!t.isFinite()?!e.isFinite()&&!e.isNegative()&&t.isNegative()||e.isNegative()&&!t.isNegative()&&!t.isFinite()?n:e.isNegative()&&t.isNegative()?e.isFinite()?e:t:e.isFinite()?t:e:uC(e,t,function(i,o){return i|o})}function uC(e,t,r){var n=e.constructor,i,o,l=+(e.s<0),s=+(t.s<0);if(l){i=hw(Nd(e));for(var a=0;a0;)r(f[--g],p[--x])===v&&(S=S.plus(D)),D=D.times(C);for(;x>0;)r(h,p[--x])===v&&(S=S.plus(D)),D=D.times(C);return n.config({precision:E}),v===0&&(S.s=-S.s),S}function hw(e){for(var t=e.d,r=t[0]+"",n=1;n0)if(++s>u)for(s-=u;s--;)a+="0";else s1&&((f[g+1]===null||f[g+1]===void 0)&&(f[g+1]=0),f[g+1]+=f[g]>>1,f[g]&=1)}return f.reverse()}function n5(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error("Integers expected in function bitXor");var r=e.constructor;if(e.isNaN()||t.isNaN())return new r(NaN);if(e.isZero())return t;if(t.isZero())return e;if(e.eq(t))return new r(0);var n=new r(-1);return e.eq(n)?Nd(t):t.eq(n)?Nd(e):!e.isFinite()||!t.isFinite()?!e.isFinite()&&!t.isFinite()?n:new r(e.isNegative()===t.isNegative()?1/0:-1/0):uC(e,t,function(i,o){return i^o})}function i5(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error("Integers expected in function leftShift");var r=e.constructor;return e.isNaN()||t.isNaN()||t.isNegative()&&!t.isZero()?new r(NaN):e.isZero()||t.isZero()?e:!e.isFinite()&&!t.isFinite()?new r(NaN):t.lt(55)?e.times(Math.pow(2,t.toNumber())+""):e.times(new r(2).pow(t))}function o5(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error("Integers expected in function rightArithShift");var r=e.constructor;return e.isNaN()||t.isNaN()||t.isNegative()&&!t.isZero()?new r(NaN):e.isZero()||t.isZero()?e:t.isFinite()?t.lt(55)?e.div(Math.pow(2,t.toNumber())+"").floor():e.div(new r(2).pow(t)).floor():e.isNegative()?new r(-1):e.isFinite()?new r(0):new r(NaN)}var a5="bitAnd",mse=["typed","matrix","equalScalar","concat"],gw=$(a5,mse,e=>{var{typed:t,matrix:r,equalScalar:n,concat:i}=e,o=Gn({typed:t,equalScalar:n}),l=Wf({typed:t,equalScalar:n}),s=Or({typed:t,equalScalar:n}),a=Xt({typed:t,matrix:r,concat:i});return t(a5,{"number, number":CA,"BigNumber, BigNumber":t5,"bigint, bigint":(u,f)=>u&f},a({SS:l,DS:o,Ss:s}))});var s5="bitNot",dse=["typed"],u5=$(s5,dse,e=>{var{typed:t}=e;return t(s5,{number:MA,BigNumber:Nd,bigint:r=>~r,"Array | Matrix":t.referToSelf(r=>n=>wt(n,r))})});var l5="bitOr",hse=["typed","matrix","equalScalar","DenseMatrix","concat"],vw=$(l5,hse,e=>{var{typed:t,matrix:r,equalScalar:n,DenseMatrix:i,concat:o}=e,l=fo({typed:t}),s=Sd({typed:t,equalScalar:n}),a=Xo({typed:t,DenseMatrix:i}),u=Xt({typed:t,matrix:r,concat:o});return t(l5,{"number, number":TA,"BigNumber, BigNumber":r5,"bigint, bigint":(f,p)=>f|p},u({SS:s,DS:l,Ss:a}))});var gse="matAlgo07xSSf",vse=["typed","DenseMatrix"],ai=$(gse,vse,e=>{var{typed:t,DenseMatrix:r}=e;return function(o,l,s){var a=o._size,u=o._datatype||o._data===void 0?o._datatype:o.getDataType(),f=l._size,p=l._datatype||l._data===void 0?l._datatype:l.getDataType();if(a.length!==f.length)throw new Wt(a.length,f.length);if(a[0]!==f[0]||a[1]!==f[1])throw new RangeError("Dimension mismatch. Matrix A ("+a+") must match Matrix B ("+f+")");var h=a[0],g=a[1],x,v=0,S=s;typeof u=="string"&&u===p&&u!=="mixed"&&(x=u,v=t.convert(0,x),S=t.find(s,[x,x]));var D,C,E=[];for(D=0;D{var{typed:t,matrix:r,DenseMatrix:n,concat:i}=e,o=Vr({typed:t}),l=ai({typed:t,DenseMatrix:n}),s=Dr({typed:t,DenseMatrix:n}),a=Xt({typed:t,matrix:r,concat:i});return t(f5,{"number, number":_A,"BigNumber, BigNumber":n5,"bigint, bigint":(u,f)=>u^f},a({SS:l,DS:o,Ss:s}))});var p5="arg",yse=["typed"],m5=$(p5,yse,e=>{var{typed:t}=e;return t(p5,{number:function(n){return Math.atan2(0,n)},BigNumber:function(n){return n.constructor.atan2(0,n)},Complex:function(n){return n.arg()},"Array | Matrix":t.referToSelf(r=>n=>wt(n,r))})});var d5="conj",wse=["typed"],h5=$(d5,wse,e=>{var{typed:t}=e;return t(d5,{"number | BigNumber | Fraction":r=>r,Complex:r=>r.conjugate(),"Array | Matrix":t.referToSelf(r=>n=>wt(n,r))})});var g5="im",bse=["typed"],v5=$(g5,bse,e=>{var{typed:t}=e;return t(g5,{number:()=>0,"BigNumber | Fraction":r=>r.mul(0),Complex:r=>r.im,"Array | Matrix":t.referToSelf(r=>n=>wt(n,r))})});var x5="re",Dse=["typed"],y5=$(x5,Dse,e=>{var{typed:t}=e;return t(x5,{"number | BigNumber | Fraction":r=>r,Complex:r=>r.re,"Array | Matrix":t.referToSelf(r=>n=>wt(n,r))})});var w5="not",Sse=["typed"],b5=$(w5,Sse,e=>{var{typed:t}=e;return t(w5,{"null | undefined":()=>!0,number:BA,Complex:function(n){return n.re===0&&n.im===0},BigNumber:function(n){return n.isZero()||n.isNaN()},bigint:r=>!r,Unit:t.referToSelf(r=>n=>t.find(r,n.valueType())(n.value)),"Array | Matrix":t.referToSelf(r=>n=>wt(n,r))})});var D5="or",Nse=["typed","matrix","equalScalar","DenseMatrix","concat"],xw=$(D5,Nse,e=>{var{typed:t,matrix:r,equalScalar:n,DenseMatrix:i,concat:o}=e,l=Vr({typed:t}),s=$f({typed:t,equalScalar:n}),a=Dr({typed:t,DenseMatrix:i}),u=Xt({typed:t,matrix:r,concat:o});return t(D5,{"number, number":sw,"Complex, Complex":function(p,h){return p.re!==0||p.im!==0||h.re!==0||h.im!==0},"BigNumber, BigNumber":function(p,h){return!p.isZero()&&!p.isNaN()||!h.isZero()&&!h.isNaN()},"bigint, bigint":sw,"Unit, Unit":t.referToSelf(f=>(p,h)=>f(p.value||0,h.value||0))},u({SS:s,DS:l,Ss:a}))});var S5="xor",Ese=["typed","matrix","DenseMatrix","concat"],N5=$(S5,Ese,e=>{var{typed:t,matrix:r,DenseMatrix:n,concat:i}=e,o=Vr({typed:t}),l=ai({typed:t,DenseMatrix:n}),s=Dr({typed:t,DenseMatrix:n}),a=Xt({typed:t,matrix:r,concat:i});return t(S5,{"number, number":uw,"Complex, Complex":function(f,p){return(f.re!==0||f.im!==0)!=(p.re!==0||p.im!==0)},"bigint, bigint":uw,"BigNumber, BigNumber":function(f,p){return(!f.isZero()&&!f.isNaN())!=(!p.isZero()&&!p.isNaN())},"Unit, Unit":t.referToSelf(u=>(f,p)=>u(f.value||0,p.value||0))},a({SS:l,DS:o,Ss:s}))});var E5="concat",Ase=["typed","matrix","isInteger"],yw=$(E5,Ase,e=>{var{typed:t,matrix:r,isInteger:n}=e;return t(E5,{"...Array | Matrix | number | BigNumber":function(o){var l,s=o.length,a=-1,u,f=!1,p=[];for(l=0;l0&&a>u)throw new bi(a,u+1)}else{var g=_t(h).valueOf(),x=Ft(g);if(p[l]=g,u=a,a=x.length-1,l>0&&a!==u)throw new Wt(u+1,a+1)}}if(p.length===0)throw new SyntaxError("At least one matrix expected");for(var v=p.shift();p.length;)v=uA(v,p.shift(),a);return f?r(v):v},"...string":function(o){return o.join("")}})});var A5="column",Cse=["typed","Index","matrix","range"],ww=$(A5,Cse,e=>{var{typed:t,Index:r,matrix:n,range:i}=e;return t(A5,{"Matrix, number":o,"Array, number":function(s,a){return o(n(_t(s)),a).valueOf()}});function o(l,s){if(l.size().length!==2)throw new Error("Only two dimensional matrix is supported");kr(s,l.size()[1]);var a=i(0,l.size()[0]),u=new r(a,s),f=l.subset(u);return yt(f)?f:n([[f]])}});var C5="count",Mse=["typed","size","prod"],M5=$(C5,Mse,e=>{var{typed:t,size:r,prod:n}=e;return t(C5,{string:function(o){return o.length},"Matrix | Array":function(o){return n(r(o))}})});var T5="cross",Tse=["typed","matrix","subtract","multiply"],_5=$(T5,Tse,e=>{var{typed:t,matrix:r,subtract:n,multiply:i}=e;return t(T5,{"Matrix, Matrix":function(s,a){return r(o(s.toArray(),a.toArray()))},"Matrix, Array":function(s,a){return r(o(s.toArray(),a))},"Array, Matrix":function(s,a){return r(o(s,a.toArray()))},"Array, Array":o});function o(l,s){var a=Math.max(Ft(l).length,Ft(s).length);l=gd(l),s=gd(s);var u=Ft(l),f=Ft(s);if(u.length!==1||f.length!==1||u[0]!==3||f[0]!==3)throw new RangeError("Vectors with length 3 expected (Size A = ["+u.join(", ")+"], B = ["+f.join(", ")+"])");var p=[n(i(l[1],s[2]),i(l[2],s[1])),n(i(l[2],s[0]),i(l[0],s[2])),n(i(l[0],s[1]),i(l[1],s[0]))];return a>1?[p]:p}});var O5="diag",_se=["typed","matrix","DenseMatrix","SparseMatrix"],F5=$(O5,_se,e=>{var{typed:t,matrix:r,DenseMatrix:n,SparseMatrix:i}=e;return t(O5,{Array:function(u){return o(u,0,Ft(u),null)},"Array, number":function(u,f){return o(u,f,Ft(u),null)},"Array, BigNumber":function(u,f){return o(u,f.toNumber(),Ft(u),null)},"Array, string":function(u,f){return o(u,0,Ft(u),f)},"Array, number, string":function(u,f,p){return o(u,f,Ft(u),p)},"Array, BigNumber, string":function(u,f,p){return o(u,f.toNumber(),Ft(u),p)},Matrix:function(u){return o(u,0,u.size(),u.storage())},"Matrix, number":function(u,f){return o(u,f,u.size(),u.storage())},"Matrix, BigNumber":function(u,f){return o(u,f.toNumber(),u.size(),u.storage())},"Matrix, string":function(u,f){return o(u,0,u.size(),f)},"Matrix, number, string":function(u,f,p){return o(u,f,u.size(),p)},"Matrix, BigNumber, string":function(u,f,p){return o(u,f.toNumber(),u.size(),p)}});function o(a,u,f,p){if(!ht(u))throw new TypeError("Second parameter in function diag must be an integer");var h=u>0?u:0,g=u<0?-u:0;switch(f.length){case 1:return l(a,u,p,f[0],g,h);case 2:return s(a,u,p,f,g,h)}throw new RangeError("Matrix for function diag must be 2 dimensional")}function l(a,u,f,p,h,g){var x=[p+h,p+g];if(f&&f!=="sparse"&&f!=="dense")throw new TypeError("Unknown matrix type ".concat(f,'"'));var v=f==="sparse"?i.diagonal(x,a,u):n.diagonal(x,a,u);return f!==null?v:v.valueOf()}function s(a,u,f,p,h,g){if(yt(a)){var x=a.diagonal(u);return f!==null?f!==x.storage()?r(x,f):x:x.valueOf()}for(var v=Math.min(p[0]-h,p[1]-g),S=[],D=0;D{var{typed:t}=e;return t("filter",{"Array, function":I5,"Matrix, function":function(n,i){return n.create(I5(n.valueOf(),i),n.datatype())},"Array, RegExp":aA,"Matrix, RegExp":function(n,i){return n.create(aA(n.valueOf(),i),n.datatype())}})});function I5(e,t){var r=Xa(t,e,"filter");return uI(e,function(n,i,o){return r(n,[i],o)})}var k5="flatten",Ise=["typed"],L5=$(k5,Ise,e=>{var{typed:t}=e;return t(k5,{Array:function(n){return jt(n)},Matrix:function(n){return n.create(jt(n.toArray()),n.datatype())}})});var lC="forEach",kse=["typed"],Dw=$(lC,kse,e=>{var{typed:t}=e;return t(lC,{"Array, function":Lse,"Matrix, function":function(n,i){n.forEach(i)}})});function Lse(e,t){Iv(e,[],e,Xa(t,e,lC))}var B5="getMatrixDataType",Bse=["typed"],P5=$(B5,Bse,e=>{var{typed:t}=e;return t(B5,{Array:function(n){return pp(n,pr)},Matrix:function(n){return n.getDataType()}})});var R5="identity",Pse=["typed","config","matrix","BigNumber","DenseMatrix","SparseMatrix"],q5=$(R5,Pse,e=>{var{typed:t,config:r,matrix:n,BigNumber:i,DenseMatrix:o,SparseMatrix:l}=e;return t(R5,{"":function(){return r.matrix==="Matrix"?n([]):[]},string:function(f){return n(f)},"number | BigNumber":function(f){return a(f,f,r.matrix==="Matrix"?"dense":void 0)},"number | BigNumber, string":function(f,p){return a(f,f,p)},"number | BigNumber, number | BigNumber":function(f,p){return a(f,p,r.matrix==="Matrix"?"dense":void 0)},"number | BigNumber, number | BigNumber, string":function(f,p,h){return a(f,p,h)},Array:function(f){return s(f)},"Array, string":function(f,p){return s(f,p)},Matrix:function(f){return s(f.valueOf(),f.storage())},"Matrix, string":function(f,p){return s(f.valueOf(),p)}});function s(u,f){switch(u.length){case 0:return f?n(f):[];case 1:return a(u[0],u[0],f);case 2:return a(u[0],u[1],f);default:throw new Error("Vector containing two values expected")}}function a(u,f,p){var h=Nt(u)||Nt(f)?i:null;if(Nt(u)&&(u=u.toNumber()),Nt(f)&&(f=f.toNumber()),!ht(u)||u<1)throw new Error("Parameters in function identity must be positive integers");if(!ht(f)||f<1)throw new Error("Parameters in function identity must be positive integers");var g=h?new i(1):1,x=h?new h(0):0,v=[u,f];if(p){if(p==="sparse")return l.diagonal(v,g,0,x);if(p==="dense")return o.diagonal(v,g,0,x);throw new TypeError('Unknown matrix type "'.concat(p,'"'))}for(var S=Rs([],v,x),D=u{var{typed:t,matrix:r,multiplyScalar:n}=e;return t(z5,{"Matrix, Matrix":function(l,s){return r(i(l.toArray(),s.toArray()))},"Matrix, Array":function(l,s){return r(i(l.toArray(),s))},"Array, Matrix":function(l,s){return r(i(l,s.toArray()))},"Array, Array":i});function i(o,l){if(Ft(o).length===1&&(o=[o]),Ft(l).length===1&&(l=[l]),Ft(o).length>2||Ft(l).length>2)throw new RangeError("Vectors with dimensions greater then 2 are not supported expected (Size x = "+JSON.stringify(o.length)+", y = "+JSON.stringify(l.length)+")");var s=[],a=[];return o.map(function(u){return l.map(function(f){return a=[],s.push(a),u.map(function(p){return f.map(function(h){return a.push(n(p,h))})})})})&&s}});var fC="map",qse=["typed"],Sw=$(fC,qse,e=>{var{typed:t}=e;return t(fC,{"Array, function":n,"Matrix, function":function(o,l){return o.map(l)},"Array|Matrix, Array|Matrix, ...Array|Matrix|function":(i,o,l)=>r([i,o,...l.slice(0,l.length-1)],l[l.length-1])});function r(i,o){if(typeof o!="function")throw new Error("Last argument must be a callback function");var l=i[0].isMatrix,s=Fv(...i.map(M=>M.isMatrix?M.size():Ft(M))),a=l?(M,T)=>M.get(T):xd,u=l?i.map(M=>M.isMatrix?M.create(Cu(M.toArray(),s),M.datatype()):i[0].create(Cu(M.valueOf(),s))):i.map(M=>M.isMatrix?Cu(M.toArray(),s):Cu(M,s)),f;if(t.isTypedFunction(o)){var p=s.map(()=>0),h=u.map(M=>a(M,p)),g=E(o,h,p,u);f=D(g)}else{var x=i.length,v=C(o,x);f=D(v)}var S=(M,T)=>f([M,...u.slice(1).map(N=>a(N,T))],T);if(l)return u[0].map(S);return n(u[0],S);function D(M){switch(M){case 0:return T=>o(...T);case 1:return(T,N)=>o(...T,N);case 2:return(T,N)=>o(...T,N,...u)}}function C(M,T){return M.length>T+1?2:M.length===T+1?1:0}function E(M,T,N,O){return t.resolve(M,[...T,N,...O])!==null?2:t.resolve(M,[...T,N])!==null?1:(t.resolve(M,T)!==null,0)}}function n(i,o){return Iv(i,[],i,Xa(o,i,fC))}});var H5="diff",zse=["typed","matrix","subtract","number"],Nw=$(H5,zse,e=>{var{typed:t,matrix:r,subtract:n,number:i}=e;return t(H5,{"Array | Matrix":function(f){return yt(f)?r(l(f.toArray())):l(f)},"Array | Matrix, number":function(f,p){if(!ht(p))throw new RangeError("Dimension must be a whole number");return yt(f)?r(o(f.toArray(),p)):o(f,p)},"Array, BigNumber":t.referTo("Array,number",u=>(f,p)=>u(f,i(p))),"Matrix, BigNumber":t.referTo("Matrix,number",u=>(f,p)=>u(f,i(p)))});function o(u,f){if(yt(u)&&(u=u.toArray()),!Array.isArray(u))throw RangeError("Array/Matrix does not have that many dimensions");if(f>0){var p=[];return u.forEach(h=>{p.push(o(h,f-1))}),p}else{if(f===0)return l(u);throw RangeError("Cannot have negative dimension")}}function l(u){for(var f=[],p=u.length,h=1;h{var{typed:t,config:r,matrix:n,BigNumber:i}=e;return t("ones",{"":function(){return r.matrix==="Array"?o([]):o([],"default")},"...number | BigNumber | string":function(u){var f=u[u.length-1];if(typeof f=="string"){var p=u.pop();return o(u,p)}else return r.matrix==="Array"?o(u):o(u,"default")},Array:o,Matrix:function(u){var f=u.storage();return o(u.valueOf(),f)},"Array | Matrix, string":function(u,f){return o(u.valueOf(),f)}});function o(a,u){var f=l(a),p=f?new i(1):1;if(s(a),u){var h=n(u);return a.length>0?h.resize(a,p):h}else{var g=[];return a.length>0?Rs(g,a,p):g}}function l(a){var u=!1;return a.forEach(function(f,p,h){Nt(f)&&(u=!0,h[p]=f.toNumber())}),u}function s(a){a.forEach(function(u){if(typeof u!="number"||!ht(u)||u<0)throw new Error("Parameters in function ones must be positive integers")})}});function Ed(){throw new Error('No "bignumber" implementation available')}function Ew(){throw new Error('No "fraction" implementation available')}function Aw(){throw new Error('No "matrix" implementation available')}var W5="range",$se=["typed","config","?matrix","?bignumber","smaller","smallerEq","larger","largerEq","add","isPositive"],Cw=$(W5,$se,e=>{var{typed:t,config:r,matrix:n,bignumber:i,smaller:o,smallerEq:l,larger:s,largerEq:a,add:u,isPositive:f}=e;return t(W5,{string:h,"string, boolean":h,"number, number":function(S,D){return p(g(S,D,1,!1))},"number, number, number":function(S,D,C){return p(g(S,D,C,!1))},"number, number, boolean":function(S,D,C){return p(g(S,D,1,C))},"number, number, number, boolean":function(S,D,C,E){return p(g(S,D,C,E))},"BigNumber, BigNumber":function(S,D){var C=S.constructor;return p(g(S,D,new C(1),!1))},"BigNumber, BigNumber, BigNumber":function(S,D,C){return p(g(S,D,C,!1))},"BigNumber, BigNumber, boolean":function(S,D,C){var E=S.constructor;return p(g(S,D,new E(1),C))},"BigNumber, BigNumber, BigNumber, boolean":function(S,D,C,E){return p(g(S,D,C,E))},"Unit, Unit, Unit":function(S,D,C){return p(g(S,D,C,!1))},"Unit, Unit, Unit, boolean":function(S,D,C,E){return p(g(S,D,C,E))}});function p(v){return r.matrix==="Matrix"?n?n(v):Aw():v}function h(v,S){var D=x(v);if(!D)throw new SyntaxError('String "'+v+'" is no valid range');return r.number==="BigNumber"?(i===void 0&&Ed(),p(g(i(D.start),i(D.end),i(D.step)),S)):p(g(D.start,D.end,D.step,S))}function g(v,S,D,C){for(var E=[],M=f(D)?C?l:o:C?a:s,T=v;M(T,S);)E.push(T),T=u(T,D);return E}function x(v){var S=v.split(":"),D=S.map(function(E){return Number(E)}),C=D.some(function(E){return isNaN(E)});if(C)return null;switch(D.length){case 2:return{start:D[0],end:D[1],step:1};case 3:return{start:D[0],end:D[2],step:D[1]};default:return null}}});var V5="reshape",Wse=["typed","isInteger","matrix"],G5=$(V5,Wse,e=>{var{typed:t,isInteger:r}=e;return t(V5,{"Matrix, Array":function(i,o){return i.reshape(o,!0)},"Array, Array":function(i,o){return o.forEach(function(l){if(!r(l))throw new TypeError("Invalid size for dimension: "+l)}),_v(i,o)}})});var Vse="resize",Gse=["config","matrix"],Y5=$(Vse,Gse,e=>{var{config:t,matrix:r}=e;return function(o,l,s){if(arguments.length!==2&&arguments.length!==3)throw new ba("resize",arguments.length,2,3);if(yt(l)&&(l=l.valueOf()),Nt(l[0])&&(l=l.map(function(f){return Nt(f)?f.toNumber():f})),yt(o))return o.resize(l,s,!0);if(typeof o=="string")return n(o,l,s);var a=Array.isArray(o)?!1:t.matrix!=="Array";if(l.length===0){for(;Array.isArray(o);)o=o[0];return _t(o)}else{Array.isArray(o)||(o=[o]),o=_t(o);var u=Rs(o,l,s);return a?r(u):u}};function n(i,o,l){if(l!==void 0){if(typeof l!="string"||l.length!==1)throw new TypeError("Single character expected as defaultValue")}else l=" ";if(o.length!==1)throw new Wt(o.length,1);var s=o[0];if(typeof s!="number"||!ht(s))throw new TypeError("Invalid size, must contain positive integers (size: "+Ht(o)+")");if(i.length>s)return i.substring(0,s);if(i.length{var{typed:t,multiply:r,rotationMatrix:n}=e;return t(Z5,{"Array , number | BigNumber | Complex | Unit":function(l,s){i(l,2);var a=r(n(s),l);return a.toArray()},"Matrix , number | BigNumber | Complex | Unit":function(l,s){return i(l,2),r(n(s),l)},"Array, number | BigNumber | Complex | Unit, Array | Matrix":function(l,s,a){i(l,3);var u=r(n(s,a),l);return u},"Matrix, number | BigNumber | Complex | Unit, Array | Matrix":function(l,s,a){return i(l,3),r(n(s,a),l)}});function i(o,l){var s=Array.isArray(o)?Ft(o):o.size();if(s.length>2)throw new RangeError("Vector must be of dimensions 1x".concat(l));if(s.length===2&&s[1]!==1)throw new RangeError("Vector must be of dimensions 1x".concat(l));if(s[0]!==l)throw new RangeError("Vector must be of dimensions 1x".concat(l))}});var K5="rotationMatrix",Zse=["typed","config","multiplyScalar","addScalar","unaryMinus","norm","matrix","BigNumber","DenseMatrix","SparseMatrix","cos","sin"],J5=$(K5,Zse,e=>{var{typed:t,config:r,multiplyScalar:n,addScalar:i,unaryMinus:o,norm:l,BigNumber:s,matrix:a,DenseMatrix:u,SparseMatrix:f,cos:p,sin:h}=e;return t(K5,{"":function(){return r.matrix==="Matrix"?a([]):[]},string:function(E){return a(E)},"number | BigNumber | Complex | Unit":function(E){return g(E,r.matrix==="Matrix"?"dense":void 0)},"number | BigNumber | Complex | Unit, string":function(E,M){return g(E,M)},"number | BigNumber | Complex | Unit, Array":function(E,M){var T=a(M);return x(T),D(E,T,void 0)},"number | BigNumber | Complex | Unit, Matrix":function(E,M){x(M);var T=M.storage()||(r.matrix==="Matrix"?"dense":void 0);return D(E,M,T)},"number | BigNumber | Complex | Unit, Array, string":function(E,M,T){var N=a(M);return x(N),D(E,N,T)},"number | BigNumber | Complex | Unit, Matrix, string":function(E,M,T){return x(M),D(E,M,T)}});function g(C,E){var M=Nt(C),T=M?new s(-1):-1,N=p(C),O=h(C),F=[[N,n(T,O)],[O,N]];return S(F,E)}function x(C){var E=C.size();if(E.length<1||E[0]!==3)throw new RangeError("Vector must be of dimensions 1x3")}function v(C){return C.reduce((E,M)=>n(E,M))}function S(C,E){if(E){if(E==="sparse")return new f(C);if(E==="dense")return new u(C);throw new TypeError('Unknown matrix type "'.concat(E,'"'))}return C}function D(C,E,M){var T=l(E);if(T===0)throw new RangeError("Rotation around zero vector");var N=Nt(C)?s:null,O=N?new N(1):1,F=N?new N(-1):-1,I=N?new N(E.get([0])/T):E.get([0])/T,B=N?new N(E.get([1])/T):E.get([1])/T,L=N?new N(E.get([2])/T):E.get([2])/T,q=p(C),R=i(O,o(q)),V=h(C),X=i(q,v([I,I,R])),U=i(v([I,B,R]),v([F,L,V])),H=i(v([I,L,R]),v([B,V])),ee=i(v([I,B,R]),v([L,V])),Z=i(q,v([B,B,R])),ce=i(v([B,L,R]),v([F,I,V])),be=i(v([I,L,R]),v([F,B,V])),de=i(v([B,L,R]),v([I,V])),ne=i(q,v([L,L,R])),ve=[[X,U,H],[ee,Z,ce],[be,de,ne]];return S(ve,M)}});var Q5="row",Xse=["typed","Index","matrix","range"],Mw=$(Q5,Xse,e=>{var{typed:t,Index:r,matrix:n,range:i}=e;return t(Q5,{"Matrix, number":o,"Array, number":function(s,a){return o(n(_t(s)),a).valueOf()}});function o(l,s){if(l.size().length!==2)throw new Error("Only two dimensional matrix is supported");kr(s,l.size()[0]);var a=i(0,l.size()[1]),u=new r(s,a),f=l.subset(u);return yt(f)?f:n([[f]])}});var j5="size",Kse=["typed","config","?matrix"],e4=$(j5,Kse,e=>{var{typed:t,config:r,matrix:n}=e;return t(j5,{Matrix:function(o){return o.create(o.size(),"number")},Array:Ft,string:function(o){return r.matrix==="Array"?[o.length]:n([o.length],"dense","number")},"number | Complex | BigNumber | Unit | boolean | null":function(o){return r.matrix==="Array"?[]:n?n([],"dense","number"):Aw()}})});var t4="squeeze",Jse=["typed"],r4=$(t4,Jse,e=>{var{typed:t}=e;return t(t4,{Array:function(n){return gd(_t(n))},Matrix:function(n){var i=gd(n.toArray());return Array.isArray(i)?n.create(i,n.datatype()):i},any:function(n){return _t(n)}})});var n4="subset",Qse=["typed","matrix","zeros","add"],Tw=$(n4,Qse,e=>{var{typed:t,matrix:r,zeros:n,add:i}=e;return t(n4,{"Matrix, Index":function(s,a){return cp(a)?r():(Tv(s,a),s.subset(a))},"Array, Index":t.referTo("Matrix, Index",function(l){return function(s,a){var u=l(r(s),a);return a.isScalar()?u:u.valueOf()}}),"Object, Index":eue,"string, Index":jse,"Matrix, Index, any, any":function(s,a,u,f){return cp(a)?s:(Tv(s,a),s.clone().subset(a,o(u,a),f))},"Array, Index, any, any":t.referTo("Matrix, Index, any, any",function(l){return function(s,a,u,f){var p=l(r(s),a,u,f);return p.isMatrix?p.valueOf():p}}),"Array, Index, any":t.referTo("Matrix, Index, any, any",function(l){return function(s,a,u){return l(r(s),a,u,void 0).valueOf()}}),"Matrix, Index, any":t.referTo("Matrix, Index, any, any",function(l){return function(s,a,u){return l(s,a,u,void 0)}}),"string, Index, string":i4,"string, Index, string, string":i4,"Object, Index, any":tue});function o(l,s){if(typeof l=="string")throw new Error("can't boradcast a string");if(s._isScalar)return l;var a=s.size();if(a.every(u=>u>0))try{return i(l,n(a))}catch{return l}else return l}});function jse(e,t){if(!Nu(t))throw new TypeError("Index expected");if(cp(t))return"";if(Tv(Array.from(e),t),t.size().length!==1)throw new Wt(t.size().length,1);var r=e.length;kr(t.min()[0],r),kr(t.max()[0],r);var n=t.dimension(0),i="";return n.forEach(function(o){i+=e.charAt(o)}),i}function i4(e,t,r,n){if(!t||t.isIndex!==!0)throw new TypeError("Index expected");if(cp(t))return e;if(Tv(Array.from(e),t),t.size().length!==1)throw new Wt(t.size().length,1);if(n!==void 0){if(typeof n!="string"||n.length!==1)throw new TypeError("Single character expected as defaultValue")}else n=" ";var i=t.dimension(0),o=i.size()[0];if(o!==r.length)throw new Wt(i.size()[0],r.length);var l=e.length;kr(t.min()[0]),kr(t.max()[0]);for(var s=[],a=0;al)for(var u=l-1,f=s.length;u{var{typed:t,matrix:r}=e;return t(o4,{Array:l=>n(r(l)).valueOf(),Matrix:n,any:_t});function n(l){var s=l.size(),a;switch(s.length){case 1:a=l.clone();break;case 2:{var u=s[0],f=s[1];if(f===0)throw new RangeError("Cannot transpose a 2D matrix with no columns (size: "+Ht(s)+")");switch(l.storage()){case"dense":a=i(l,u,f);break;case"sparse":a=o(l,u,f);break}}break;default:throw new RangeError("Matrix must be a vector or two dimensional (size: "+Ht(s)+")")}return a}function i(l,s,a){for(var u=l._data,f=[],p,h=0;h{var{typed:t,transpose:r,conj:n}=e;return t(s4,{any:function(o){return n(r(o))}})});var l4="zeros",iue=["typed","config","matrix","BigNumber"],f4=$(l4,iue,e=>{var{typed:t,config:r,matrix:n,BigNumber:i}=e;return t(l4,{"":function(){return r.matrix==="Array"?o([]):o([],"default")},"...number | BigNumber | string":function(u){var f=u[u.length-1];if(typeof f=="string"){var p=u.pop();return o(u,p)}else return r.matrix==="Array"?o(u):o(u,"default")},Array:o,Matrix:function(u){var f=u.storage();return o(u.valueOf(),f)},"Array | Matrix, string":function(u,f){return o(u.valueOf(),f)}});function o(a,u){var f=l(a),p=f?new i(0):0;if(s(a),u){var h=n(u);return a.length>0?h.resize(a,p):h}else{var g=[];return a.length>0?Rs(g,a,p):g}}function l(a){var u=!1;return a.forEach(function(f,p,h){Nt(f)&&(u=!0,h[p]=f.toNumber())}),u}function s(a){a.forEach(function(u){if(typeof u!="number"||!ht(u)||u<0)throw new Error("Parameters in function zeros must be positive integers")})}});var c4="fft",oue=["typed","matrix","addScalar","multiplyScalar","divideScalar","exp","tau","i","dotDivide","conj","pow","ceil","log2"],p4=$(c4,oue,e=>{var{typed:t,matrix:r,addScalar:n,multiplyScalar:i,divideScalar:o,exp:l,tau:s,i:a,dotDivide:u,conj:f,pow:p,ceil:h,log2:g}=e;return t(c4,{Array:x,Matrix:function(E){return E.create(x(E.valueOf()),E.datatype())}});function x(C){var E=Ft(C);return E.length===1?D(C,E[0]):v(C.map(M=>x(M,E.slice(1))),0)}function v(C,E){var M=Ft(C);if(E!==0)return new Array(M[0]).fill(0).map((N,O)=>v(C[O],E-1));if(M.length===1)return D(C);function T(N){var O=Ft(N);return new Array(O[1]).fill(0).map((F,I)=>new Array(O[0]).fill(0).map((B,L)=>N[L][I]))}return T(v(T(C),1))}function S(C){for(var E=C.length,M=l(o(i(-1,i(a,s)),E)),T=[],N=1-E;Ni(C[H],T[E-1+H])),...new Array(O-E).fill(0)],I=[...new Array(E+E-1).fill(0).map((U,H)=>o(1,T[H])),...new Array(O-(E+E-1)).fill(0)],B=D(F),L=D(I),q=new Array(O).fill(0).map((U,H)=>i(B[H],L[H])),R=u(f(x(f(q))),O),V=[],X=E-1;XI%2===0),E/2),...D(C.filter((F,I)=>I%2===1),E/2)],T=0;T{var{typed:t,fft:r,dotDivide:n,conj:i}=e;return t(m4,{"Array | Matrix":function(l){var s=yt(l)?l.size():Ft(l);return n(i(r(i(l))),s.reduce((a,u)=>a*u,1))}})});function dp(e){"@babel/helpers - typeof";return dp=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},dp(e)}function h4(e,t){if(dp(e)!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t||"default");if(dp(n)!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function g4(e){var t=h4(e,"string");return dp(t)=="symbol"?t:t+""}function Cr(e,t,r){return(t=g4(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function v4(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function sue(e){for(var t=1;t{var{typed:t,add:r,subtract:n,multiply:i,divide:o,max:l,map:s,abs:a,isPositive:u,isNegative:f,larger:p,smaller:h,matrix:g,bignumber:x,unaryMinus:v}=e;function S(F){return function(I,B,L,q){var R=!(B.length===2&&(B.every(N)||B.every(ei)));if(R)throw new Error('"tspan" must be an Array of two numeric values or two units [tStart, tEnd]');var V=B[0],X=B[1],U=p(X,V),H=q.firstStep;if(H!==void 0&&!u(H))throw new Error('"firstStep" must be positive');var ee=q.maxStep;if(ee!==void 0&&!u(ee))throw new Error('"maxStep" must be positive');var Z=q.minStep;if(Z&&f(Z))throw new Error('"minStep" must be positive or zero');var ce=[V,X,H,Z,ee].filter(rt=>rt!==void 0);if(!(ce.every(N)||ce.every(ei)))throw new Error('Inconsistent type of "t" dependant variables');for(var be=1,de=q.tol?q.tol:1e-4,ne=q.minDelta?q.minDelta:.2,ve=q.maxDelta?q.maxDelta:5,Te=q.maxIter?q.maxIter:1e4,De=[V,X,...L,ee,Z].some(Nt),[se,le,oe,we]=De?[x(F.a),x(F.c),x(F.b),x(F.bp)]:[F.a,F.c,F.b,F.bp],Ce=H?U?H:v(H):o(n(X,V),be),he=[V],Pe=[L],Ze=n(oe,we),ie=0,fe=0,Oe=M(U),Me=T(U);Oe(he[ie],X);){var Je=[];Ce=Me(he[ie],X,Ce),Je.push(I(he[ie],Pe[ie]));for(var $e=1;$eei(rt)?rt.value:rt)));it1/4&&(he.push(r(he[ie],Ce)),Pe.push(r(Pe[ie],i(Ce,oe,Je))),ie++);var ct=.84*(de/it)**(1/5);if(h(ct,ne)?ct=ne:p(ct,ve)&&(ct=ve),ct=De?x(ct):ct,Ce=i(Ce,ct),ee&&p(a(Ce),ee)?Ce=U?ee:v(ee):Z&&h(a(Ce),Z)&&(Ce=U?Z:v(Z)),fe++,fe>Te)throw new Error("Maximum number of iterations reached, try changing options")}return{t:he,y:Pe}}}function D(F,I,B,L){var q=[[],[.5],[0,.75],[.2222222222222222,.3333333333333333,.4444444444444444]],R=[null,1/2,3/4,1],V=[2/9,1/3,4/9,0],X=[7/24,1/4,1/3,1/8],U={a:q,c:R,b:V,bp:X};return S(U)(F,I,B,L)}function C(F,I,B,L){var q=[[],[.2],[.075,.225],[.9777777777777777,-3.7333333333333334,3.5555555555555554],[2.9525986892242035,-11.595793324188385,9.822892851699436,-.2908093278463649],[2.8462752525252526,-10.757575757575758,8.906422717743473,.2784090909090909,-.2735313036020583],[.09114583333333333,0,.44923629829290207,.6510416666666666,-.322376179245283,.13095238095238096]],R=[null,1/5,3/10,4/5,8/9,1,1],V=[35/384,0,500/1113,125/192,-2187/6784,11/84,0],X=[5179/57600,0,7571/16695,393/640,-92097/339200,187/2100,1/40],U={a:q,c:R,b:V,bp:X};return S(U)(F,I,B,L)}function E(F,I,B,L){var q=L.method?L.method:"RK45",R={RK23:D,RK45:C};if(q.toUpperCase()in R){var V=sue({},L);return delete V.method,R[q.toUpperCase()](F,I,B,V)}else{var X=Object.keys(R).map(H=>'"'.concat(H,'"')),U="".concat(X.slice(0,-1).join(", ")," and ").concat(X.slice(-1));throw new Error('Unavailable method "'.concat(q,'". Available methods are ').concat(U))}}function M(F){return F?h:p}function T(F){var I=F?p:h;return function(B,L,q){var R=r(B,q);return I(R,L)?n(L,B):q}}function N(F){return Nt(F)||Rt(F)}function O(F,I,B,L){var q=E(F,I.toArray(),B.toArray(),L);return{t:g(q.t),y:g(q.y)}}return t("solveODE",{"function, Array, Array, Object":E,"function, Matrix, Matrix, Object":O,"function, Array, Array":(F,I,B)=>E(F,I,B,{}),"function, Matrix, Matrix":(F,I,B)=>O(F,I,B,{}),"function, Array, number | BigNumber | Unit":(F,I,B)=>{var L=E(F,I,[B],{});return{t:L.t,y:L.y.map(q=>q[0])}},"function, Matrix, number | BigNumber | Unit":(F,I,B)=>{var L=E(F,I.toArray(),[B],{});return{t:g(L.t),y:g(L.y.map(q=>q[0]))}},"function, Array, number | BigNumber | Unit, Object":(F,I,B,L)=>{var q=E(F,I,[B],L);return{t:q.t,y:q.y.map(R=>R[0])}},"function, Matrix, number | BigNumber | Unit, Object":(F,I,B,L)=>{var q=E(F,I.toArray(),[B],L);return{t:g(q.t),y:g(q.y.map(R=>R[0]))}}})});var fue="erf",cue=["typed"],y4=$(fue,cue,e=>{var{typed:t}=e;return t("name",{number:function(l){var s=Math.abs(l);return s>=due?Ga(l):s<=pue?Ga(l)*r(s):s<=4?Ga(l)*(1-n(s)):Ga(l)*(1-i(s))},"Array | Matrix":t.referToSelf(o=>l=>wt(l,o))});function r(o){var l=o*o,s=_l[0][4]*l,a=l,u;for(u=0;u<3;u+=1)s=(s+_l[0][u])*l,a=(a+Ad[0][u])*l;return o*(s+_l[0][3])/(a+Ad[0][3])}function n(o){var l=_l[1][8]*o,s=o,a;for(a=0;a<7;a+=1)l=(l+_l[1][a])*o,s=(s+Ad[1][a])*o;var u=(l+_l[1][7])/(s+Ad[1][7]),f=parseInt(o*16)/16,p=(o-f)*(o+f);return Math.exp(-f*f)*Math.exp(-p)*u}function i(o){var l=1/(o*o),s=_l[2][5]*l,a=l,u;for(u=0;u<4;u+=1)s=(s+_l[2][u])*l,a=(a+Ad[2][u])*l;var f=l*(s+_l[2][4])/(a+Ad[2][4]);f=(mue-f)/o,l=parseInt(o*16)/16;var p=(o-l)*(o+l);return Math.exp(-l*l)*Math.exp(-p)*f}}),pue=.46875,mue=.5641895835477563,_l=[[3.1611237438705655,113.86415415105016,377.485237685302,3209.3775891384694,.18577770618460315],[.5641884969886701,8.883149794388377,66.11919063714163,298.6351381974001,881.952221241769,1712.0476126340707,2051.0783778260716,1230.3393547979972,21531153547440383e-24],[.30532663496123236,.36034489994980445,.12578172611122926,.016083785148742275,.0006587491615298378,.016315387137302097]],Ad=[[23.601290952344122,244.02463793444417,1282.6165260773723,2844.236833439171],[15.744926110709835,117.6939508913125,537.1811018620099,1621.3895745666903,3290.7992357334597,4362.619090143247,3439.3676741437216,1230.3393548037495],[2.568520192289822,1.8729528499234604,.5279051029514285,.06051834131244132,.0023352049762686918]],due=Math.pow(2,53);var w4="zeta",hue=["typed","config","multiply","pow","divide","factorial","equal","smallerEq","isNegative","gamma","sin","subtract","add","?Complex","?BigNumber","pi"],b4=$(w4,hue,e=>{var{typed:t,config:r,multiply:n,pow:i,divide:o,factorial:l,equal:s,smallerEq:a,isNegative:u,gamma:f,sin:p,subtract:h,add:g,Complex:x,BigNumber:v,pi:S}=e;return t(w4,{number:N=>D(N,O=>O,()=>20),BigNumber:N=>D(N,O=>new v(O),()=>Math.abs(Math.log10(r.relTol))),Complex:C});function D(N,O,F){return s(N,0)?O(-.5):s(N,1)?O(NaN):isFinite(N)?E(N,O,F,I=>I):u(N)?O(NaN):O(1)}function C(N){return N.re===0&&N.im===0?new x(-.5):N.re===1?new x(NaN,NaN):N.re===1/0&&N.im===0?new x(1):N.im===1/0||N.re===-1/0?new x(NaN,NaN):E(N,O=>O,O=>Math.round(1.3*15+.9*Math.abs(O.im)),O=>O.re)}function E(N,O,F,I){var B=F(N);if(I(N)>-(B-1)/2)return T(N,O(B),O);var L=n(i(2,N),i(O(S),h(N,1)));return L=n(L,p(n(o(O(S),2),N))),L=n(L,f(h(1,N))),n(L,E(h(1,N),O,F,I))}function M(N,O){for(var F=N,I=N;a(I,O);I=g(I,1)){var B=o(n(l(g(O,h(I,1))),i(4,I)),n(l(h(O,I)),l(n(2,I))));F=g(F,B)}return n(O,F)}function T(N,O,F){for(var I=o(1,n(M(F(0),O),h(1,i(2,h(1,N))))),B=F(0),L=F(1);a(L,O);L=g(L,1))B=g(B,o(n((-1)**(L-1),M(L,O)),i(L,N)));return n(I,B)}});var D4="mode",gue=["typed","isNaN","isNumeric"],S4=$(D4,gue,e=>{var{typed:t,isNaN:r,isNumeric:n}=e;return t(D4,{"Array | Matrix":i,"...":function(l){return i(l)}});function i(o){o=jt(o.valueOf());var l=o.length;if(l===0)throw new Error("Cannot calculate mode of an empty array");for(var s={},a=[],u=0,f=0;fu&&(u=s[p],a=[p])}return a}});function Nn(e,t,r){var n;return String(e).includes("Unexpected type")?(n=arguments.length>2?" (type: "+pr(r)+", value: "+JSON.stringify(r)+")":" (type: "+e.data.actual+")",new TypeError("Cannot calculate "+t+", unexpected type of argument"+n)):String(e).includes("complex numbers")?(n=arguments.length>2?" (type: "+pr(r)+", value: "+JSON.stringify(r)+")":"",new TypeError("Cannot calculate "+t+", no ordering relation is defined for complex numbers"+n)):e}var N4="prod",vue=["typed","config","multiplyScalar","numeric"],E4=$(N4,vue,e=>{var{typed:t,config:r,multiplyScalar:n,numeric:i}=e;return t(N4,{"Array | Matrix":o,"Array | Matrix, number | BigNumber":function(s,a){throw new Error("prod(A, dim) is not yet supported")},"...":function(s){return o(s)}});function o(l){var s;if(lo(l,function(a){try{s=s===void 0?a:n(s,a)}catch(u){throw Nn(u,"prod",a)}}),typeof s=="string"&&(s=i(s,ao(s,r))),s===void 0)throw new Error("Cannot calculate prod of an empty array");return s}});var A4="format",xue=["typed"],C4=$(A4,xue,e=>{var{typed:t}=e;return t(A4,{any:Ht,"any, Object | function | number | BigNumber":Ht})});var M4="bin",yue=["typed","format"],T4=$(M4,yue,e=>{var{typed:t,format:r}=e;return t(M4,{"number | BigNumber":function(i){return r(i,{notation:"bin"})},"number | BigNumber, number | BigNumber":function(i,o){return r(i,{notation:"bin",wordSize:o})}})});var _4="oct",wue=["typed","format"],O4=$(_4,wue,e=>{var{typed:t,format:r}=e;return t(_4,{"number | BigNumber":function(i){return r(i,{notation:"oct"})},"number | BigNumber, number | BigNumber":function(i,o){return r(i,{notation:"oct",wordSize:o})}})});var F4="hex",bue=["typed","format"],I4=$(F4,bue,e=>{var{typed:t,format:r}=e;return t(F4,{"number | BigNumber":function(i){return r(i,{notation:"hex"})},"number | BigNumber, number | BigNumber":function(i,o){return r(i,{notation:"hex",wordSize:o})}})});var _w=/\$([\w.]+)/g;var k4="print",Due=["typed"],Ow=$(k4,Due,e=>{var{typed:t}=e;return t(k4,{"string, Object | Array":L4,"string, Object | Array, number | Object":L4})});function L4(e,t,r){return e.replace(_w,function(n,i){var o=i.split("."),l=t[o.shift()];for(l!==void 0&&l.isMatrix&&(l=l.toArray());o.length&&l!==void 0;){var s=o.shift();l=s?l[s]:l+"."}return l!==void 0?cn(l)?l:Ht(l,r):n})}var B4="to",Sue=["typed","matrix","concat"],P4=$(B4,Sue,e=>{var{typed:t,matrix:r,concat:n}=e,i=Xt({typed:t,matrix:r,concat:n});return t(B4,{"Unit, Unit | string":(o,l)=>o.to(l)},i({Ds:!0}))});var R4="isPrime",Nue=["typed"],q4=$(R4,Nue,e=>{var{typed:t}=e;return t(R4,{number:function(n){if(n<=3)return n>1;if(n%2===0||n%3===0)return!1;for(var i=5;i*i<=n;i+=6)if(n%i===0||n%(i+2)===0)return!1;return!0},bigint:function(n){if(n<=3n)return n>1n;if(n%2n===0n||n%3n===0n)return!1;for(var i=5n;i*i<=n;i+=6n)if(n%i===0n||n%(i+2n)===0n)return!1;return!0},BigNumber:function(n){if(n.lte(3))return n.gt(1);if(n.mod(2).eq(0)||n.mod(3).eq(0))return!1;if(n.lt(Math.pow(2,32))){for(var i=n.toNumber(),o=5;o*o<=i;o+=6)if(i%o===0||i%(o+2)===0)return!1;return!0}function l(C,E,M){for(var T=1;!E.eq(0);)E.mod(2).eq(0)?(E=E.div(2),C=C.mul(C).mod(M)):(E=E.sub(1),T=C.mul(T).mod(M));return T}var s=n.constructor.clone({precision:n.toFixed(0).length*2});n=new s(n);for(var a=0,u=n.sub(1);u.mod(2).eq(0);)u=u.div(2),a+=1;var f=null;if(n.lt("3317044064679887385961981"))f=[2,3,5,7,11,13,17,19,23,29,31,37,41].filter(C=>Cn=>wt(n,r))})});var Eue="numeric",Aue=["number","?bignumber","?fraction"],z4=$(Eue,Aue,e=>{var{number:t,bignumber:r,fraction:n}=e,i={string:!0,number:!0,BigNumber:!0,Fraction:!0},o={number:l=>t(l),BigNumber:r?l=>r(l):Ed,bigint:l=>BigInt(l),Fraction:n?l=>n(l):Ew};return function(s){var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"number",u=arguments.length>2?arguments[2]:void 0;if(u!==void 0)throw new SyntaxError("numeric() takes one or two arguments");var f=pr(s);if(!(f in i))throw new TypeError("Cannot convert "+s+' of type "'+f+'"; valid input types are '+Object.keys(i).join(", "));if(!(a in o))throw new TypeError("Cannot convert "+s+' to type "'+a+'"; valid output types are '+Object.keys(o).join(", "));return a===f?s:o[a](s)}});var U4="divideScalar",Cue=["typed","numeric"],H4=$(U4,Cue,e=>{var{typed:t,numeric:r}=e;return t(U4,{"number, number":function(i,o){return i/o},"Complex, Complex":function(i,o){return i.div(o)},"BigNumber, BigNumber":function(i,o){return i.div(o)},"bigint, bigint":function(i,o){return i/o},"Fraction, Fraction":function(i,o){return i.div(o)},"Unit, number | Complex | Fraction | BigNumber | Unit":(n,i)=>n.divide(i),"number | Fraction | Complex | BigNumber, Unit":(n,i)=>i.divideInto(n)})});var $4="pow",Mue=["typed","config","identity","multiply","matrix","inv","fraction","number","Complex"],W4=$($4,Mue,e=>{var{typed:t,config:r,identity:n,multiply:i,matrix:o,inv:l,number:s,fraction:a,Complex:u}=e;return t($4,{"number, number":f,"Complex, Complex":function(x,v){return x.pow(v)},"BigNumber, BigNumber":function(x,v){return v.isInteger()||x>=0||r.predictable?x.pow(v):new u(x.toNumber(),0).pow(v.toNumber(),0)},"bigint, bigint":(g,x)=>g**x,"Fraction, Fraction":function(x,v){var S=x.pow(v);if(S!=null)return S;if(r.predictable)throw new Error("Result of pow is non-rational and cannot be expressed as a fraction");return f(x.valueOf(),v.valueOf())},"Array, number":p,"Array, BigNumber":function(x,v){return p(x,v.toNumber())},"Matrix, number":h,"Matrix, BigNumber":function(x,v){return h(x,v.toNumber())},"Unit, number | BigNumber":function(x,v){return x.pow(v)}});function f(g,x){if(r.predictable&&!ht(x)&&g<0)try{var v=a(x),S=s(v);if((x===S||Math.abs((x-S)/x)<1e-14)&&v.d%2===1)return(v.n%2===0?1:-1)*Math.pow(-g,x)}catch{}return r.predictable&&(g<-1&&x===1/0||g>-1&&g<0&&x===-1/0)?NaN:ht(x)||g>=0||r.predictable?AA(g,x):g*g<1&&x===1/0||g*g>1&&x===-1/0?0:new u(g,0).pow(x,0)}function p(g,x){if(!ht(x))throw new TypeError("For A^b, b must be an integer (value is "+x+")");var v=Ft(g);if(v.length!==2)throw new Error("For A^b, A must be 2 dimensional (A has "+v.length+" dimensions)");if(v[0]!==v[1])throw new Error("For A^b, A must be square (size is "+v[0]+"x"+v[1]+")");if(x<0)try{return p(l(g),-x)}catch(C){throw C.message==="Cannot calculate inverse, determinant is zero"?new TypeError("For A^b, when A is not invertible, b must be a positive integer (value is "+x+")"):C}for(var S=n(v[0]).valueOf(),D=g;x>=1;)(x&1)===1&&(S=i(D,S)),x>>=1,D=i(D,D);return S}function h(g,x){return o(p(g.valueOf(),x))}});var Cd="Number of decimals in function round must be an integer",V4="round",Tue=["typed","config","matrix","equalScalar","zeros","BigNumber","DenseMatrix"],G4=$(V4,Tue,e=>{var{typed:t,config:r,matrix:n,equalScalar:i,zeros:o,BigNumber:l,DenseMatrix:s}=e,a=Or({typed:t,equalScalar:i}),u=Dr({typed:t,DenseMatrix:s}),f=Vn({typed:t});function p(h){return Math.abs(cd(h).exponent)}return t(V4,{number:function(g){var x=wd(g,p(r.relTol)),v=Kr(g,x,r.relTol,r.absTol)?x:g;return wd(v)},"number, number":function(g,x){var v=p(r.relTol);if(x>=v)return wd(g,x);var S=wd(g,v),D=Kr(g,S,r.relTol,r.absTol)?S:g;return wd(D,x)},"number, BigNumber":function(g,x){if(!x.isInteger())throw new TypeError(Cd);return new l(g).toDecimalPlaces(x.toNumber())},Complex:function(g){return g.round()},"Complex, number":function(g,x){if(x%1)throw new TypeError(Cd);return g.round(x)},"Complex, BigNumber":function(g,x){if(!x.isInteger())throw new TypeError(Cd);var v=x.toNumber();return g.round(v)},BigNumber:function(g){var x=new l(g).toDecimalPlaces(p(r.relTol)),v=gn(g,x,r.relTol,r.absTol)?x:g;return v.toDecimalPlaces(0)},"BigNumber, BigNumber":function(g,x){if(!x.isInteger())throw new TypeError(Cd);var v=p(r.relTol);if(x>=v)return g.toDecimalPlaces(x.toNumber());var S=g.toDecimalPlaces(v),D=gn(g,S,r.relTol,r.absTol)?S:g;return D.toDecimalPlaces(x.toNumber())},Fraction:function(g){return g.round()},"Fraction, number":function(g,x){if(x%1)throw new TypeError(Cd);return g.round(x)},"Fraction, BigNumber":function(g,x){if(!x.isInteger())throw new TypeError(Cd);return g.round(x.toNumber())},"Unit, number, Unit":t.referToSelf(h=>function(g,x,v){var S=g.toNumeric(v);return v.multiply(h(S,x))}),"Unit, BigNumber, Unit":t.referToSelf(h=>(g,x,v)=>h(g,x.toNumber(),v)),"Unit, Unit":t.referToSelf(h=>(g,x)=>h(g,0,x)),"Array | Matrix, number, Unit":t.referToSelf(h=>(g,x,v)=>wt(g,S=>h(S,x,v),!0)),"Array | Matrix, BigNumber, Unit":t.referToSelf(h=>(g,x,v)=>h(g,x.toNumber(),v)),"Array | Matrix, Unit":t.referToSelf(h=>(g,x)=>h(g,0,x)),"Array | Matrix":t.referToSelf(h=>g=>wt(g,h,!0)),"SparseMatrix, number | BigNumber":t.referToSelf(h=>(g,x)=>a(g,x,h,!1)),"DenseMatrix, number | BigNumber":t.referToSelf(h=>(g,x)=>f(g,x,h,!1)),"Array, number | BigNumber":t.referToSelf(h=>(g,x)=>f(n(g),x,h,!1).valueOf()),"number | Complex | BigNumber | Fraction, SparseMatrix":t.referToSelf(h=>(g,x)=>i(g,0)?o(x.size(),x.storage()):u(x,g,h,!0)),"number | Complex | BigNumber | Fraction, DenseMatrix":t.referToSelf(h=>(g,x)=>i(g,0)?o(x.size(),x.storage()):f(x,g,h,!0)),"number | Complex | BigNumber | Fraction, Array":t.referToSelf(h=>(g,x)=>f(n(x),g,h,!0).valueOf())})});var Y4="log",_ue=["config","typed","divideScalar","Complex"],Z4=$(Y4,_ue,e=>{var{typed:t,config:r,divideScalar:n,Complex:i}=e;return t(Y4,{number:function(l){return l>=0||r.predictable?vI(l):new i(l,0).log()},Complex:function(l){return l.log()},BigNumber:function(l){return!l.isNegative()||r.predictable?l.ln():new i(l.toNumber(),0).log()},"any, any":t.referToSelf(o=>(l,s)=>n(o(l),o(s)))})});var X4="log1p",Oue=["typed","config","divideScalar","log","Complex"],K4=$(X4,Oue,e=>{var{typed:t,config:r,divideScalar:n,log:i,Complex:o}=e;return t(X4,{number:function(a){return a>=-1||r.predictable?z1(a):l(new o(a,0))},Complex:l,BigNumber:function(a){var u=a.plus(1);return!u.isNegative()||r.predictable?u.ln():l(new o(a.toNumber(),0))},"Array | Matrix":t.referToSelf(s=>a=>wt(a,s)),"any, any":t.referToSelf(s=>(a,u)=>n(s(a),i(u)))});function l(s){var a=s.re+1;return new o(Math.log(Math.sqrt(a*a+s.im*s.im)),Math.atan2(s.im,a))}});var J4="nthRoots",Fue=["config","typed","divideScalar","Complex"],Q4=$(J4,Fue,e=>{var{typed:t,config:r,divideScalar:n,Complex:i}=e,o=[function(a){return new i(a,0)},function(a){return new i(0,a)},function(a){return new i(-a,0)},function(a){return new i(0,-a)}];function l(s,a){if(a<0)throw new Error("Root must be greater than zero");if(a===0)throw new Error("Root must be non-zero");if(a%1!==0)throw new Error("Root must be an integer");if(s===0||s.abs()===0)return[new i(0,0)];var u=typeof s=="number",f;(u||s.re===0||s.im===0)&&(u?f=2*+(s<0):s.im===0?f=2*+(s.re<0):f=2*+(s.im<0)+1);for(var p=s.arg(),h=s.abs(),g=[],x=Math.pow(h,1/a),v=0;v{var{typed:t,equalScalar:r,matrix:n,pow:i,DenseMatrix:o,concat:l}=e,s=Vr({typed:t}),a=ai({typed:t,DenseMatrix:o}),u=Or({typed:t,equalScalar:r}),f=Dr({typed:t,DenseMatrix:o}),p=Xt({typed:t,matrix:n,concat:l}),h={};for(var g in i.signatures)Object.prototype.hasOwnProperty.call(i.signatures,g)&&!g.includes("Matrix")&&!g.includes("Array")&&(h[g]=i.signatures[g]);var x=t(h);return t(j4,p({elop:x,SS:a,DS:s,Ss:u,sS:f}))});var tL="dotDivide",kue=["typed","matrix","equalScalar","divideScalar","DenseMatrix","concat"],rL=$(tL,kue,e=>{var{typed:t,matrix:r,equalScalar:n,divideScalar:i,DenseMatrix:o,concat:l}=e,s=Gn({typed:t,equalScalar:n}),a=Vr({typed:t}),u=ai({typed:t,DenseMatrix:o}),f=Or({typed:t,equalScalar:n}),p=Dr({typed:t,DenseMatrix:o}),h=Xt({typed:t,matrix:r,concat:l});return t(tL,h({elop:i,SS:u,DS:a,SD:s,Ss:f,sS:p}))});function Mu(e){var{DenseMatrix:t}=e;return function(n,i,o){var l=n.size();if(l.length!==2)throw new RangeError("Matrix must be two dimensional (size: "+Ht(l)+")");var s=l[0],a=l[1];if(s!==a)throw new RangeError("Matrix must be square (size: "+Ht(l)+")");var u=[];if(yt(i)){var f=i.size(),p=i._data;if(f.length===1){if(f[0]!==s)throw new RangeError("Dimension mismatch. Matrix columns must match vector length.");for(var h=0;h{var{typed:t,matrix:r,divideScalar:n,multiplyScalar:i,subtractScalar:o,equalScalar:l,DenseMatrix:s}=e,a=Mu({DenseMatrix:s});return t(nL,{"SparseMatrix, Array | Matrix":function(h,g){return f(h,g)},"DenseMatrix, Array | Matrix":function(h,g){return u(h,g)},"Array, Array | Matrix":function(h,g){var x=r(h),v=u(x,g);return v.valueOf()}});function u(p,h){h=a(p,h,!0);for(var g=h._data,x=p._size[0],v=p._size[1],S=[],D=p._data,C=0;CM&&(O.push(S[L]),F.push(q))}if(l(N,0))throw new Error("Linear system cannot be solved since matrix is singular");for(var R=n(T,N),V=0,X=F.length;V{var{typed:t,matrix:r,divideScalar:n,multiplyScalar:i,subtractScalar:o,equalScalar:l,DenseMatrix:s}=e,a=Mu({DenseMatrix:s});return t(oL,{"SparseMatrix, Array | Matrix":function(h,g){return f(h,g)},"DenseMatrix, Array | Matrix":function(h,g){return u(h,g)},"Array, Array | Matrix":function(h,g){var x=r(h),v=u(x,g);return v.valueOf()}});function u(p,h){h=a(p,h,!0);for(var g=h._data,x=p._size[0],v=p._size[1],S=[],D=p._data,C=v-1;C>=0;C--){var E=g[C][0]||0,M=void 0;if(l(E,0))M=0;else{var T=D[C][C];if(l(T,0))throw new Error("Linear system cannot be solved since matrix is singular");M=n(E,T);for(var N=C-1;N>=0;N--)g[N]=[o(g[N][0]||0,i(M,D[N][C]))]}S[C]=[M]}return new s({data:S,size:[x,1]})}function f(p,h){h=a(p,h,!0);for(var g=h._data,x=p._size[0],v=p._size[1],S=p._values,D=p._index,C=p._ptr,E=[],M=v-1;M>=0;M--){var T=g[M][0]||0;if(l(T,0))E[M]=[0];else{for(var N=0,O=[],F=[],I=C[M],B=C[M+1],L=B-1;L>=I;L--){var q=D[L];q===M?N=S[L]:q{var{typed:t,matrix:r,divideScalar:n,multiplyScalar:i,subtractScalar:o,equalScalar:l,DenseMatrix:s}=e,a=Mu({DenseMatrix:s});return t(sL,{"SparseMatrix, Array | Matrix":function(h,g){return f(h,g)},"DenseMatrix, Array | Matrix":function(h,g){return u(h,g)},"Array, Array | Matrix":function(h,g){var x=r(h),v=u(x,g);return v.map(S=>S.valueOf())}});function u(p,h){for(var g=[a(p,h,!0)._data.map(F=>F[0])],x=p._data,v=p._size[0],S=p._size[1],D=0;Dnew s({data:F.map(I=>[I]),size:[v,1]}))}function f(p,h){for(var g=[a(p,h,!0)._data.map(be=>be[0])],x=p._size[0],v=p._size[1],S=p._values,D=p._index,C=p._ptr,E=0;EE&&(O.push(S[q]),F.push(R))}if(l(L,0))if(l(N[E],0)){if(T===0){var H=[...N];H[E]=1;for(var ee=0,Z=F.length;eenew s({data:be.map(de=>[de]),size:[x,1]}))}});var lL="usolveAll",Rue=["typed","matrix","divideScalar","multiplyScalar","subtractScalar","equalScalar","DenseMatrix"],fL=$(lL,Rue,e=>{var{typed:t,matrix:r,divideScalar:n,multiplyScalar:i,subtractScalar:o,equalScalar:l,DenseMatrix:s}=e,a=Mu({DenseMatrix:s});return t(lL,{"SparseMatrix, Array | Matrix":function(h,g){return f(h,g)},"DenseMatrix, Array | Matrix":function(h,g){return u(h,g)},"Array, Array | Matrix":function(h,g){var x=r(h),v=u(x,g);return v.map(S=>S.valueOf())}});function u(p,h){for(var g=[a(p,h,!0)._data.map(F=>F[0])],x=p._data,v=p._size[0],S=p._size[1],D=S-1;D>=0;D--)for(var C=g.length,E=0;E=0;O--)N[O]=o(N[O],x[O][D]);g.push(N)}}else{if(E===0)return[];g.splice(E,1),E-=1,C-=1}else{M[D]=n(M[D],x[D][D]);for(var T=D-1;T>=0;T--)M[T]=o(M[T],i(M[D],x[T][D]))}}return g.map(F=>new s({data:F.map(I=>[I]),size:[v,1]}))}function f(p,h){for(var g=[a(p,h,!0)._data.map(be=>be[0])],x=p._size[0],v=p._size[1],S=p._values,D=p._index,C=p._ptr,E=v-1;E>=0;E--)for(var M=g.length,T=0;T=I;q--){var R=D[q];R===E?L=S[q]:Rnew s({data:be.map(de=>[de]),size:[x,1]}))}});var que="matAlgo08xS0Sid",zue=["typed","equalScalar"],Md=$(que,zue,e=>{var{typed:t,equalScalar:r}=e;return function(i,o,l){var s=i._values,a=i._index,u=i._ptr,f=i._size,p=i._datatype||i._data===void 0?i._datatype:i.getDataType(),h=o._values,g=o._index,x=o._ptr,v=o._size,S=o._datatype||o._data===void 0?o._datatype:o.getDataType();if(f.length!==v.length)throw new Wt(f.length,v.length);if(f[0]!==v[0]||f[1]!==v[1])throw new RangeError("Dimension mismatch. Matrix A ("+f+") must match Matrix B ("+v+")");if(!s||!h)throw new Error("Cannot perform operation on Pattern Sparse Matrices");var D=f[0],C=f[1],E,M=r,T=0,N=l;typeof p=="string"&&p===S&&p!=="mixed"&&(E=p,M=t.find(r,[E,E]),T=t.convert(0,E),N=t.find(l,[E,E]));for(var O=[],F=[],I=[],B=[],L=[],q,R,V,X,U=0;U{var{typed:t,matrix:r}=e;return{"Array, number":t.referTo("DenseMatrix, number",n=>(i,o)=>n(r(i),o).valueOf()),"Array, BigNumber":t.referTo("DenseMatrix, BigNumber",n=>(i,o)=>n(r(i),o).valueOf()),"number, Array":t.referTo("number, DenseMatrix",n=>(i,o)=>n(i,r(o)).valueOf()),"BigNumber, Array":t.referTo("BigNumber, DenseMatrix",n=>(i,o)=>n(i,r(o)).valueOf())}});var cL="leftShift",Uue=["typed","matrix","equalScalar","zeros","DenseMatrix","concat"],pL=$(cL,Uue,e=>{var{typed:t,matrix:r,equalScalar:n,zeros:i,DenseMatrix:o,concat:l}=e,s=fo({typed:t}),a=Gn({typed:t,equalScalar:n}),u=Md({typed:t,equalScalar:n}),f=Xo({typed:t,DenseMatrix:o}),p=Or({typed:t,equalScalar:n}),h=Vn({typed:t}),g=Xt({typed:t,matrix:r,concat:l}),x=Td({typed:t,matrix:r});return t(cL,{"number, number":OA,"BigNumber, BigNumber":i5,"bigint, bigint":(v,S)=>v<(S,D)=>n(D,0)?S.clone():p(S,D,v,!1)),"DenseMatrix, number | BigNumber":t.referToSelf(v=>(S,D)=>n(D,0)?S.clone():h(S,D,v,!1)),"number | BigNumber, SparseMatrix":t.referToSelf(v=>(S,D)=>n(S,0)?i(D.size(),D.storage()):f(D,S,v,!0)),"number | BigNumber, DenseMatrix":t.referToSelf(v=>(S,D)=>n(S,0)?i(D.size(),D.storage()):h(D,S,v,!0))},x,g({SS:u,DS:s,SD:a}))});var mL="rightArithShift",Hue=["typed","matrix","equalScalar","zeros","DenseMatrix","concat"],dL=$(mL,Hue,e=>{var{typed:t,matrix:r,equalScalar:n,zeros:i,DenseMatrix:o,concat:l}=e,s=fo({typed:t}),a=Gn({typed:t,equalScalar:n}),u=Md({typed:t,equalScalar:n}),f=Xo({typed:t,DenseMatrix:o}),p=Or({typed:t,equalScalar:n}),h=Vn({typed:t}),g=Xt({typed:t,matrix:r,concat:l}),x=Td({typed:t,matrix:r});return t(mL,{"number, number":FA,"BigNumber, BigNumber":o5,"bigint, bigint":(v,S)=>v>>S,"SparseMatrix, number | BigNumber":t.referToSelf(v=>(S,D)=>n(D,0)?S.clone():p(S,D,v,!1)),"DenseMatrix, number | BigNumber":t.referToSelf(v=>(S,D)=>n(D,0)?S.clone():h(S,D,v,!1)),"number | BigNumber, SparseMatrix":t.referToSelf(v=>(S,D)=>n(S,0)?i(D.size(),D.storage()):f(D,S,v,!0)),"number | BigNumber, DenseMatrix":t.referToSelf(v=>(S,D)=>n(S,0)?i(D.size(),D.storage()):h(D,S,v,!0))},x,g({SS:u,DS:s,SD:a}))});var hL="rightLogShift",$ue=["typed","matrix","equalScalar","zeros","DenseMatrix","concat"],gL=$(hL,$ue,e=>{var{typed:t,matrix:r,equalScalar:n,zeros:i,DenseMatrix:o,concat:l}=e,s=fo({typed:t}),a=Gn({typed:t,equalScalar:n}),u=Md({typed:t,equalScalar:n}),f=Xo({typed:t,DenseMatrix:o}),p=Or({typed:t,equalScalar:n}),h=Vn({typed:t}),g=Xt({typed:t,matrix:r,concat:l}),x=Td({typed:t,matrix:r});return t(hL,{"number, number":IA,"SparseMatrix, number | BigNumber":t.referToSelf(v=>(S,D)=>n(D,0)?S.clone():p(S,D,v,!1)),"DenseMatrix, number | BigNumber":t.referToSelf(v=>(S,D)=>n(D,0)?S.clone():h(S,D,v,!1)),"number | BigNumber, SparseMatrix":t.referToSelf(v=>(S,D)=>n(S,0)?i(D.size(),D.storage()):f(D,S,v,!0)),"number | BigNumber, DenseMatrix":t.referToSelf(v=>(S,D)=>n(S,0)?i(D.size(),D.storage()):h(D,S,v,!0))},x,g({SS:u,DS:s,SD:a}))});var vL="and",Wue=["typed","matrix","equalScalar","zeros","not","concat"],Fw=$(vL,Wue,e=>{var{typed:t,matrix:r,equalScalar:n,zeros:i,not:o,concat:l}=e,s=Gn({typed:t,equalScalar:n}),a=Wf({typed:t,equalScalar:n}),u=Or({typed:t,equalScalar:n}),f=Vn({typed:t}),p=Xt({typed:t,matrix:r,concat:l});return t(vL,{"number, number":lw,"Complex, Complex":function(g,x){return(g.re!==0||g.im!==0)&&(x.re!==0||x.im!==0)},"BigNumber, BigNumber":function(g,x){return!g.isZero()&&!x.isZero()&&!g.isNaN()&&!x.isNaN()},"bigint, bigint":lw,"Unit, Unit":t.referToSelf(h=>(g,x)=>h(g.value||0,x.value||0)),"SparseMatrix, any":t.referToSelf(h=>(g,x)=>o(x)?i(g.size(),g.storage()):u(g,x,h,!1)),"DenseMatrix, any":t.referToSelf(h=>(g,x)=>o(x)?i(g.size(),g.storage()):f(g,x,h,!1)),"any, SparseMatrix":t.referToSelf(h=>(g,x)=>o(g)?i(g.size(),g.storage()):u(x,g,h,!0)),"any, DenseMatrix":t.referToSelf(h=>(g,x)=>o(g)?i(g.size(),g.storage()):f(x,g,h,!0)),"Array, any":t.referToSelf(h=>(g,x)=>h(r(g),x).valueOf()),"any, Array":t.referToSelf(h=>(g,x)=>h(g,r(x)).valueOf())},p({SS:a,DS:s}))});var Iw="compare",Vue=["typed","config","matrix","equalScalar","BigNumber","Fraction","DenseMatrix","concat"],xL=$(Iw,Vue,e=>{var{typed:t,config:r,equalScalar:n,matrix:i,BigNumber:o,Fraction:l,DenseMatrix:s,concat:a}=e,u=Vr({typed:t}),f=$f({typed:t,equalScalar:n}),p=Dr({typed:t,DenseMatrix:s}),h=Xt({typed:t,matrix:i,concat:a}),g=Ja({typed:t});return t(Iw,Gue({typed:t,config:r}),{"boolean, boolean":function(v,S){return v===S?0:v>S?1:-1},"BigNumber, BigNumber":function(v,S){return gn(v,S,r.relTol,r.absTol)?new o(0):new o(v.cmp(S))},"bigint, bigint":function(v,S){return v===S?0n:v>S?1n:-1n},"Fraction, Fraction":function(v,S){return new l(v.compare(S))},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")}},g,h({SS:f,DS:u,Ss:p}))}),Gue=$(Iw,["typed","config"],e=>{var{typed:t,config:r}=e;return t(Iw,{"number, number":function(i,o){return Kr(i,o,r.relTol,r.absTol)?0:i>o?1:-1}})});var hp=fn(wL(),1);var bL="compareNatural",Yue=["typed","compare"],DL=$(bL,Yue,e=>{var{typed:t,compare:r}=e,n=r.signatures["boolean,boolean"];return t(bL,{"any, any":i});function i(a,u){var f=pr(a),p=pr(u),h;if((f==="number"||f==="BigNumber"||f==="Fraction")&&(p==="number"||p==="BigNumber"||p==="Fraction"))return h=r(a,u),h.toString()!=="0"?h>0?1:-1:(0,hp.default)(f,p);var g=["Array","DenseMatrix","SparseMatrix"];if(g.includes(f)||g.includes(p))return h=o(i,a,u),h!==0?h:(0,hp.default)(f,p);if(f!==p)return(0,hp.default)(f,p);if(f==="Complex")return Zue(a,u);if(f==="Unit")return a.equalBase(u)?i(a.value,u.value):l(i,a.formatUnits(),u.formatUnits());if(f==="boolean")return n(a,u);if(f==="string")return(0,hp.default)(a,u);if(f==="Object")return s(i,a,u);if(f==="null"||f==="undefined")return 0;throw new TypeError('Unsupported type of value "'+f+'"')}function o(a,u,f){return xa(u)&&xa(f)?l(a,u.toJSON().values,f.toJSON().values):xa(u)?o(a,u.toArray(),f):xa(f)?o(a,u,f.toArray()):El(u)?o(a,u.toJSON().data,f):El(f)?o(a,u,f.toJSON().data):Array.isArray(u)?Array.isArray(f)?l(a,u,f):o(a,u,[f]):o(a,[u],f)}function l(a,u,f){for(var p=0,h=Math.min(u.length,f.length);pf.length?1:u.lengtht.re?1:e.ret.im?1:e.im{var{typed:t,matrix:r,concat:n}=e,i=Xt({typed:t,matrix:r,concat:n});return t(SL,tw,i({elop:tw,Ds:!0}))});var kw="equal",Kue=["typed","matrix","equalScalar","DenseMatrix","concat"],EL=$(kw,Kue,e=>{var{typed:t,matrix:r,equalScalar:n,DenseMatrix:i,concat:o}=e,l=Vr({typed:t}),s=ai({typed:t,DenseMatrix:i}),a=Dr({typed:t,DenseMatrix:i}),u=Xt({typed:t,matrix:r,concat:o});return t(kw,Jue({typed:t,equalScalar:n}),u({elop:n,SS:s,DS:l,Ss:a}))}),Jue=$(kw,["typed","equalScalar"],e=>{var{typed:t,equalScalar:r}=e;return t(kw,{"any, any":function(i,o){return i===null?o===null:o===null?i===null:i===void 0?o===void 0:o===void 0?i===void 0:r(i,o)}})});var AL="equalText",Que=["typed","compareText","isZero"],CL=$(AL,Que,e=>{var{typed:t,compareText:r,isZero:n}=e;return t(AL,{"any, any":function(o,l){return n(r(o,l))}})});var Lw="smaller",jue=["typed","config","matrix","DenseMatrix","concat"],ML=$(Lw,jue,e=>{var{typed:t,config:r,matrix:n,DenseMatrix:i,concat:o}=e,l=Vr({typed:t}),s=ai({typed:t,DenseMatrix:i}),a=Dr({typed:t,DenseMatrix:i}),u=Xt({typed:t,matrix:n,concat:o}),f=Ja({typed:t});return t(Lw,ele({typed:t,config:r}),{"boolean, boolean":(p,h)=>ppp.compare(h)===-1,"Complex, Complex":function(h,g){throw new TypeError("No ordering relation is defined for complex numbers")}},f,u({SS:s,DS:l,Ss:a}))}),ele=$(Lw,["typed","config"],e=>{var{typed:t,config:r}=e;return t(Lw,{"number, number":function(i,o){return i{var{typed:t,config:r,matrix:n,DenseMatrix:i,concat:o}=e,l=Vr({typed:t}),s=ai({typed:t,DenseMatrix:i}),a=Dr({typed:t,DenseMatrix:i}),u=Xt({typed:t,matrix:n,concat:o}),f=Ja({typed:t});return t(Bw,rle({typed:t,config:r}),{"boolean, boolean":(p,h)=>p<=h,"BigNumber, BigNumber":function(h,g){return h.lte(g)||gn(h,g,r.relTol,r.absTol)},"bigint, bigint":(p,h)=>p<=h,"Fraction, Fraction":(p,h)=>p.compare(h)!==1,"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")}},f,u({SS:s,DS:l,Ss:a}))}),rle=$(Bw,["typed","config"],e=>{var{typed:t,config:r}=e;return t(Bw,{"number, number":function(i,o){return i<=o||Kr(i,o,r.relTol,r.absTol)}})});var Pw="larger",nle=["typed","config","matrix","DenseMatrix","concat"],_L=$(Pw,nle,e=>{var{typed:t,config:r,matrix:n,DenseMatrix:i,concat:o}=e,l=Vr({typed:t}),s=ai({typed:t,DenseMatrix:i}),a=Dr({typed:t,DenseMatrix:i}),u=Xt({typed:t,matrix:n,concat:o}),f=Ja({typed:t});return t(Pw,ile({typed:t,config:r}),{"boolean, boolean":(p,h)=>p>h,"BigNumber, BigNumber":function(h,g){return h.gt(g)&&!gn(h,g,r.relTol,r.absTol)},"bigint, bigint":(p,h)=>p>h,"Fraction, Fraction":(p,h)=>p.compare(h)===1,"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")}},f,u({SS:s,DS:l,Ss:a}))}),ile=$(Pw,["typed","config"],e=>{var{typed:t,config:r}=e;return t(Pw,{"number, number":function(i,o){return i>o&&!Kr(i,o,r.relTol,r.absTol)}})});var Rw="largerEq",ole=["typed","config","matrix","DenseMatrix","concat"],OL=$(Rw,ole,e=>{var{typed:t,config:r,matrix:n,DenseMatrix:i,concat:o}=e,l=Vr({typed:t}),s=ai({typed:t,DenseMatrix:i}),a=Dr({typed:t,DenseMatrix:i}),u=Xt({typed:t,matrix:n,concat:o}),f=Ja({typed:t});return t(Rw,ale({typed:t,config:r}),{"boolean, boolean":(p,h)=>p>=h,"BigNumber, BigNumber":function(h,g){return h.gte(g)||gn(h,g,r.relTol,r.absTol)},"bigint, bigint":function(h,g){return h>=g},"Fraction, Fraction":(p,h)=>p.compare(h)!==-1,"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")}},f,u({SS:s,DS:l,Ss:a}))}),ale=$(Rw,["typed","config"],e=>{var{typed:t,config:r}=e;return t(Rw,{"number, number":function(i,o){return i>=o||Kr(i,o,r.relTol,r.absTol)}})});var FL="deepEqual",sle=["typed","equal"],IL=$(FL,sle,e=>{var{typed:t,equal:r}=e;return t(FL,{"any, any":function(o,l){return n(o.valueOf(),l.valueOf())}});function n(i,o){if(Array.isArray(i))if(Array.isArray(o)){var l=i.length;if(l!==o.length)return!1;for(var s=0;s{var{typed:t,config:r,equalScalar:n,matrix:i,DenseMatrix:o,concat:l}=e,s=Vr({typed:t}),a=ai({typed:t,DenseMatrix:o}),u=Dr({typed:t,DenseMatrix:o}),f=Xt({typed:t,matrix:i,concat:l});return t(qw,lle({typed:t,equalScalar:n}),f({elop:p,SS:a,DS:s,Ss:u}));function p(h,g){return!n(h,g)}}),lle=$(qw,["typed","equalScalar"],e=>{var{typed:t,equalScalar:r}=e;return t(qw,{"any, any":function(i,o){return i===null?o!==null:o===null?i!==null:i===void 0?o!==void 0:o===void 0?i!==void 0:!r(i,o)}})});var LL="partitionSelect",fle=["typed","isNumeric","isNaN","compare"],BL=$(LL,fle,e=>{var{typed:t,isNumeric:r,isNaN:n,compare:i}=e,o=i,l=(u,f)=>-i(u,f);return t(LL,{"Array | Matrix, number":function(f,p){return s(f,p,o)},"Array | Matrix, number, string":function(f,p,h){if(h==="asc")return s(f,p,o);if(h==="desc")return s(f,p,l);throw new Error('Compare string must be "asc" or "desc"')},"Array | Matrix, number, function":s});function s(u,f,p){if(!ht(f)||f<0)throw new Error("k must be a non-negative integer");if(yt(u)){var h=u.size();if(h.length>1)throw new Error("Only one dimensional matrices supported");return a(u.valueOf(),f,p)}if(Array.isArray(u))return a(u,f,p)}function a(u,f,p){if(f>=u.length)throw new Error("k out of bounds");for(var h=0;h=0){var C=u[S];u[S]=u[v],u[v]=C,--S}else++v;p(u[v],D)>0&&--v,f<=v?x=v:g=v+1}return u[f]}});var PL="sort",cle=["typed","matrix","compare","compareNatural"],RL=$(PL,cle,e=>{var{typed:t,matrix:r,compare:n,compareNatural:i}=e,o=n,l=(f,p)=>-n(f,p);return t(PL,{Array:function(p){return a(p),p.sort(o)},Matrix:function(p){return u(p),r(p.toArray().sort(o),p.storage())},"Array, function":function(p,h){return a(p),p.sort(h)},"Matrix, function":function(p,h){return u(p),r(p.toArray().sort(h),p.storage())},"Array, string":function(p,h){return a(p),p.sort(s(h))},"Matrix, string":function(p,h){return u(p),r(p.toArray().sort(s(h)),p.storage())}});function s(f){if(f==="asc")return o;if(f==="desc")return l;if(f==="natural")return i;throw new Error('String "asc", "desc", or "natural" expected')}function a(f){if(Ft(f).length!==1)throw new Error("One dimensional array expected")}function u(f){if(f.size().length!==1)throw new Error("One dimensional matrix expected")}});var qL="max",ple=["typed","config","numeric","larger"],zw=$(qL,ple,e=>{var{typed:t,config:r,numeric:n,larger:i}=e;return t(qL,{"Array | Matrix":l,"Array | Matrix, number | BigNumber":function(a,u){return Hf(a,u.valueOf(),o)},"...":function(a){if(Ka(a))throw new TypeError("Scalar values expected in function max");return l(a)}});function o(s,a){try{return i(s,a)?s:a}catch(u){throw Nn(u,"max",a)}}function l(s){var a;if(lo(s,function(u){try{isNaN(u)&&typeof u=="number"?a=NaN:(a===void 0||i(u,a))&&(a=u)}catch(f){throw Nn(f,"max",u)}}),a===void 0)throw new Error("Cannot calculate max of an empty array");return typeof a=="string"&&(a=n(a,ao(a,r))),a}});var zL="min",mle=["typed","config","numeric","smaller"],Uw=$(zL,mle,e=>{var{typed:t,config:r,numeric:n,smaller:i}=e;return t(zL,{"Array | Matrix":l,"Array | Matrix, number | BigNumber":function(a,u){return Hf(a,u.valueOf(),o)},"...":function(a){if(Ka(a))throw new TypeError("Scalar values expected in function min");return l(a)}});function o(s,a){try{return i(s,a)?s:a}catch(u){throw Nn(u,"min",a)}}function l(s){var a;if(lo(s,function(u){try{isNaN(u)&&typeof u=="number"?a=NaN:(a===void 0||i(u,a))&&(a=u)}catch(f){throw Nn(f,"min",u)}}),a===void 0)throw new Error("Cannot calculate min of an empty array");return typeof a=="string"&&(a=n(a,ao(a,r))),a}});var dle="ImmutableDenseMatrix",hle=["smaller","DenseMatrix"],UL=$(dle,hle,e=>{var{smaller:t,DenseMatrix:r}=e;function n(i,o){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(o&&!cn(o))throw new Error("Invalid datatype: "+o);if(yt(i)||dr(i)){var l=new r(i,o);this._data=l._data,this._size=l._size,this._datatype=l._datatype,this._min=null,this._max=null}else if(i&&dr(i.data)&&dr(i.size))this._data=i.data,this._size=i.size,this._datatype=i.datatype,this._min=typeof i.min<"u"?i.min:null,this._max=typeof i.max<"u"?i.max:null;else{if(i)throw new TypeError("Unsupported type of data ("+pr(i)+")");this._data=[],this._size=[0],this._datatype=o,this._min=null,this._max=null}}return n.prototype=new r,n.prototype.type="ImmutableDenseMatrix",n.prototype.isImmutableDenseMatrix=!0,n.prototype.subset=function(i){switch(arguments.length){case 1:{var o=r.prototype.subset.call(this,i);return yt(o)?new n({data:o._data,size:o._size,datatype:o._datatype}):o}case 2:case 3:throw new Error("Cannot invoke set subset on an Immutable Matrix instance");default:throw new SyntaxError("Wrong number of arguments")}},n.prototype.set=function(){throw new Error("Cannot invoke set on an Immutable Matrix instance")},n.prototype.resize=function(){throw new Error("Cannot invoke resize on an Immutable Matrix instance")},n.prototype.reshape=function(){throw new Error("Cannot invoke reshape on an Immutable Matrix instance")},n.prototype.clone=function(){return new n({data:_t(this._data),size:_t(this._size),datatype:this._datatype})},n.prototype.toJSON=function(){return{mathjs:"ImmutableDenseMatrix",data:this._data,size:this._size,datatype:this._datatype}},n.fromJSON=function(i){return new n(i)},n.prototype.swapRows=function(){throw new Error("Cannot invoke swapRows on an Immutable Matrix instance")},n.prototype.min=function(){if(this._min===null){var i=null;this.forEach(function(o){(i===null||t(o,i))&&(i=o)}),this._min=i!==null?i:void 0}return this._min},n.prototype.max=function(){if(this._max===null){var i=null;this.forEach(function(o){(i===null||t(i,o))&&(i=o)}),this._max=i!==null?i:void 0}return this._max},n},{isClass:!0});var gle="Index",vle=["ImmutableDenseMatrix","getMatrixDataType"],$L=$(gle,vle,e=>{var{ImmutableDenseMatrix:t,getMatrixDataType:r}=e;function n(o){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this._dimensions=[],this._sourceSize=[],this._isScalar=!0;for(var l=0,s=arguments.length;l{r&&t.push(n)}),t}var xle="FibonacciHeap",yle=["smaller","larger"],WL=$(xle,yle,e=>{var{smaller:t,larger:r}=e,n=1/Math.log((1+Math.sqrt(5))/2);function i(){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator");this._minimum=null,this._size=0}i.prototype.type="FibonacciHeap",i.prototype.isFibonacciHeap=!0,i.prototype.insert=function(f,p){var h={key:f,value:p,degree:0};if(this._minimum){var g=this._minimum;h.left=g,h.right=g.right,g.right=h,h.right.left=h,t(f,g.key)&&(this._minimum=h)}else h.left=h,h.right=h,this._minimum=h;return this._size++,h},i.prototype.size=function(){return this._size},i.prototype.clear=function(){this._minimum=null,this._size=0},i.prototype.isEmpty=function(){return this._size===0},i.prototype.extractMinimum=function(){var f=this._minimum;if(f===null)return f;for(var p=this._minimum,h=f.degree,g=f.child;h>0;){var x=g.right;g.left.right=g.right,g.right.left=g.left,g.left=p,g.right=p.right,p.right=g,g.right.left=g,g.parent=null,g=x,h--}return f.left.right=f.right,f.right.left=f.left,f===f.right?p=null:(p=f.right,p=u(p,this._size)),this._size--,this._minimum=p,f},i.prototype.remove=function(f){this._minimum=o(this._minimum,f,-1),this.extractMinimum()};function o(f,p,h){p.key=h;var g=p.parent;return g&&t(p.key,g.key)&&(l(f,p,g),s(f,g)),t(p.key,f.key)&&(f=p),f}function l(f,p,h){p.left.right=p.right,p.right.left=p.left,h.degree--,h.child===p&&(h.child=p.right),h.degree===0&&(h.child=null),p.left=f,p.right=f.right,f.right=p,p.right.left=p,p.parent=null,p.mark=!1}function s(f,p){var h=p.parent;h&&(p.mark?(l(f,p,h),s(h)):p.mark=!0)}var a=function(p,h){p.left.right=p.right,p.right.left=p.left,p.parent=h,h.child?(p.left=h.child,p.right=h.child.right,h.child.right=p,p.right.left=p):(h.child=p,p.right=p,p.left=p),h.degree++,p.mark=!1};function u(f,p){var h=Math.floor(Math.log(p)*n)+1,g=new Array(h),x=0,v=f;if(v)for(x++,v=v.right;v!==f;)x++,v=v.right;for(var S;x>0;){for(var D=v.degree,C=v.right;S=g[D],!!S;){if(r(v.key,S.key)){var E=S;S=v,v=E}a(S,v),g[D]=null,D++}g[D]=v,v=C,x--}f=null;for(var M=0;M{var{addScalar:t,equalScalar:r,FibonacciHeap:n}=e;function i(){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator");this._values=[],this._heap=new n}return i.prototype.type="Spa",i.prototype.isSpa=!0,i.prototype.set=function(o,l){if(this._values[o])this._values[o].value=l;else{var s=this._heap.insert(o,l);this._values[o]=s}},i.prototype.get=function(o){var l=this._values[o];return l?l.value:0},i.prototype.accumulate=function(o,l){var s=this._values[o];s?s.value=t(s.value,l):(s=this._heap.insert(o,l),this._values[o]=s)},i.prototype.forEach=function(o,l,s){var a=this._heap,u=this._values,f=[],p=a.extractMinimum();for(p&&f.push(p);p&&p.key<=l;)p.key>=o&&(r(p.value,0)||s(p.key,p.value,this)),p=a.extractMinimum(),p&&f.push(p);for(var h=0;h1&&arguments[1]!==void 0?arguments[1]:{};return r=r??Number.POSITIVE_INFINITY,t=t??JSON.stringify,function n(){typeof n.cache!="object"&&(n.cache={values:new Map,lru:GL(r||Number.POSITIVE_INFINITY)});for(var i=[],o=0;o{var{on:t,config:r,addScalar:n,subtractScalar:i,multiplyScalar:o,divideScalar:l,pow:s,abs:a,fix:u,round:f,equal:p,isNumeric:h,format:g,number:x,Complex:v,BigNumber:S,Fraction:D}=e,C=x;function E(ie,fe){if(!(this instanceof E))throw new Error("Constructor must be called with the new operator");if(!(ie==null||h(ie)||gi(ie)))throw new TypeError("First parameter in Unit constructor must be number, BigNumber, Fraction, Complex, or undefined");if(this.fixPrefix=!1,this.skipAutomaticSimplification=!0,fe===void 0)this.units=[],this.dimensions=ee.map(Me=>0);else if(typeof fe=="string"){var Oe=E.parse(fe);this.units=Oe.units,this.dimensions=Oe.dimensions}else if(ei(fe)&&fe.value===null)this.fixPrefix=fe.fixPrefix,this.skipAutomaticSimplification=fe.skipAutomaticSimplification,this.dimensions=fe.dimensions.slice(0),this.units=fe.units.map(Me=>Wn({},Me));else throw new TypeError("Second parameter in Unit constructor must be a string or valueless Unit");this.value=this._normalize(ie)}Object.defineProperty(E,"name",{value:"Unit"}),E.prototype.constructor=E,E.prototype.type="Unit",E.prototype.isUnit=!0;var M,T,N;function O(){for(;N===" "||N===" ";)B()}function F(ie){return ie>="0"&&ie<="9"||ie==="."}function I(ie){return ie>="0"&&ie<="9"}function B(){T++,N=M.charAt(T)}function L(ie){T=ie,N=M.charAt(T)}function q(){var ie="",fe=T;if(N==="+"?B():N==="-"&&(ie+=N,B()),!F(N))return L(fe),null;if(N==="."){if(ie+=N,B(),!I(N))return L(fe),null}else{for(;I(N);)ie+=N,B();N==="."&&(ie+=N,B())}for(;I(N);)ie+=N,B();if(N==="E"||N==="e"){var Oe="",Me=T;if(Oe+=N,B(),(N==="+"||N==="-")&&(Oe+=N,B()),!I(N))return L(Me),ie;for(ie=ie+Oe;I(N);)ie+=N,B()}return ie}function R(){for(var ie="";I(N)||E.isValidAlpha(N);)ie+=N,B();var fe=ie.charAt(0);return E.isValidAlpha(fe)?ie:null}function V(ie){return N===ie?(B(),ie):null}E.parse=function(ie,fe){if(fe=fe||{},M=ie,T=-1,N="",typeof M!="string")throw new TypeError("Invalid argument in Unit.parse, string expected");var Oe=new E;Oe.units=[];var Me=1,Je=!1;B(),O();var $e=q(),it=null;if($e){if(r.number==="BigNumber")it=new S($e);else if(r.number==="Fraction")try{it=new D($e)}catch{it=parseFloat($e)}else it=parseFloat($e);O(),V("*")?(Me=1,Je=!0):V("/")&&(Me=-1,Je=!0)}for(var ct=[],rt=1;;){for(O();N==="(";)ct.push(Me),rt*=Me,Me=1,B(),O();var At=void 0;if(N){var zt=N;if(At=R(),At===null)throw new SyntaxError('Unexpected "'+zt+'" in "'+M+'" at index '+T.toString())}else break;var mt=X(At);if(mt===null)throw new SyntaxError('Unit "'+At+'" not found.');var fr=Me*rt;if(O(),V("^")){O();var qt=q();if(qt===null)throw new SyntaxError('In "'+ie+'", "^" must be followed by a floating-point number');fr*=qt}Oe.units.push({unit:mt.unit,prefix:mt.prefix,power:fr});for(var xe=0;xe1||Math.abs(this.units[0].power-1)>1e-15},E.prototype._normalize=function(ie){if(ie==null||this.units.length===0)return ie;for(var fe=ie,Oe=E._getNumberConverter(pr(ie)),Me=0;Me{if(xt(ne,ie)){var fe=ne[ie],Oe=fe.prefixes[""];return{unit:fe,prefix:Oe}}for(var Me in ne)if(xt(ne,Me)&&rI(ie,Me)){var Je=ne[Me],$e=ie.length-Me.length,it=ie.substring(0,$e),ct=xt(Je.prefixes,it)?Je.prefixes[it]:void 0;if(ct!==void 0)return{unit:Je,prefix:ct}}return null},{hasher:ie=>ie[0],limit:100});E.isValuelessUnit=function(ie){return X(ie)!==null},E.prototype.hasBase=function(ie){if(typeof ie=="string"&&(ie=Z[ie]),!ie)return!1;for(var fe=0;fe1e-12)return!1;return!0},E.prototype.equalBase=function(ie){for(var fe=0;fe1e-12)return!1;return!0},E.prototype.equals=function(ie){return this.equalBase(ie)&&p(this.value,ie.value)},E.prototype.multiply=function(ie){for(var fe=this.clone(),Oe=ei(ie)?ie:new E(ie),Me=0;Me0?this.formatUnits():null,fixPrefix:this.fixPrefix}},E.fromJSON=function(ie){var fe,Oe=new E(ie.value,(fe=ie.unit)!==null&&fe!==void 0?fe:void 0);return Oe.fixPrefix=ie.fixPrefix||!1,Oe},E.prototype.valueOf=E.prototype.toString,E.prototype.simplify=function(){var ie=this.clone(),fe=[],Oe;for(var Me in se)if(xt(se,Me)&&ie.hasBase(Z[Me])){Oe=Me;break}if(Oe==="NONE")ie.units=[];else{var Je;if(Oe&&xt(se,Oe)&&(Je=se[Oe]),Je)ie.units=[{unit:Je.unit,prefix:Je.prefix,power:1}];else{for(var $e=!1,it=0;it1e-12&&(xt(se,ct)?fe.push({unit:se[ct].unit,prefix:se[ct].prefix,power:ie.dimensions[it]||0}):$e=!0)}fe.length1e-12)if(xt(De.si,Me))fe.push({unit:De.si[Me].unit,prefix:De.si[Me].prefix,power:ie.dimensions[Oe]||0});else throw new Error("Cannot express custom unit "+Me+" in SI units")}return ie.units=fe,ie.fixPrefix=!0,ie.skipAutomaticSimplification=!0,this.value!==null?(ie.value=null,this.to(ie)):ie},E.prototype.formatUnits=function(){for(var ie="",fe="",Oe=0,Me=0,Je=0;Je0?(Oe++,ie+=" "+this.units[Je].prefix.name+this.units[Je].unit.name,Math.abs(this.units[Je].power-1)>1e-15&&(ie+="^"+this.units[Je].power)):this.units[Je].power<0&&Me++;if(Me>0)for(var $e=0;$e0?(fe+=" "+this.units[$e].prefix.name+this.units[$e].unit.name,Math.abs(this.units[$e].power+1)>1e-15&&(fe+="^"+-this.units[$e].power)):(fe+=" "+this.units[$e].prefix.name+this.units[$e].unit.name,fe+="^"+this.units[$e].power));ie=ie.substr(1),fe=fe.substr(1),Oe>1&&Me>0&&(ie="("+ie+")"),Me>1&&Oe>0&&(fe="("+fe+")");var it=ie;return Oe>0&&Me>0&&(it+=" / "),it+=fe,it},E.prototype.format=function(ie){var fe=this.skipAutomaticSimplification||this.value===null?this.clone():this.simplify(),Oe=!1;typeof fe.value<"u"&&fe.value!==null&&gi(fe.value)&&(Oe=Math.abs(fe.value.re)<1e-14);for(var Me in fe.units)xt(fe.units,Me)&&fe.units[Me].unit&&(fe.units[Me].unit.name==="VA"&&Oe?fe.units[Me].unit=ne.VAR:fe.units[Me].unit.name==="VAR"&&!Oe&&(fe.units[Me].unit=ne.VA));fe.units.length===1&&!fe.fixPrefix&&Math.abs(fe.units[0].power-Math.round(fe.units[0].power))<1e-14&&(fe.units[0].prefix=fe._bestPrefix());var Je=fe._denormalize(fe.value),$e=fe.value!==null?g(Je,ie||{}):"",it=fe.formatUnits();return fe.value&&gi(fe.value)&&($e="("+$e+")"),it.length>0&&$e.length>0&&($e+=" "),$e+=it,$e},E.prototype._bestPrefix=function(){if(this.units.length!==1)throw new Error("Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!");if(Math.abs(this.units[0].power-Math.round(this.units[0].power))>=1e-14)throw new Error("Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!");var ie=this.value!==null?a(this.value):0,fe=a(this.units[0].unit.value),Oe=this.units[0].prefix;if(ie===0)return Oe;var Me=this.units[0].power,Je=Math.log(ie/Math.pow(Oe.value*fe,Me))/Math.LN10-1.2;if(Je>-2.200001&&Je<1.800001)return Oe;Je=Math.abs(Je);var $e=this.units[0].unit.prefixes;for(var it in $e)if(xt($e,it)){var ct=$e[it];if(ct.scientific){var rt=Math.abs(Math.log(ie/Math.pow(ct.value*fe,Me))/Math.LN10-1.2);(rt0)},ne={meter:{name:"meter",base:Z.LENGTH,prefixes:H.LONG,value:1,offset:0},inch:{name:"inch",base:Z.LENGTH,prefixes:H.NONE,value:.0254,offset:0},foot:{name:"foot",base:Z.LENGTH,prefixes:H.NONE,value:.3048,offset:0},yard:{name:"yard",base:Z.LENGTH,prefixes:H.NONE,value:.9144,offset:0},mile:{name:"mile",base:Z.LENGTH,prefixes:H.NONE,value:1609.344,offset:0},link:{name:"link",base:Z.LENGTH,prefixes:H.NONE,value:.201168,offset:0},rod:{name:"rod",base:Z.LENGTH,prefixes:H.NONE,value:5.0292,offset:0},chain:{name:"chain",base:Z.LENGTH,prefixes:H.NONE,value:20.1168,offset:0},angstrom:{name:"angstrom",base:Z.LENGTH,prefixes:H.NONE,value:1e-10,offset:0},m:{name:"m",base:Z.LENGTH,prefixes:H.SHORT,value:1,offset:0},in:{name:"in",base:Z.LENGTH,prefixes:H.NONE,value:.0254,offset:0},ft:{name:"ft",base:Z.LENGTH,prefixes:H.NONE,value:.3048,offset:0},yd:{name:"yd",base:Z.LENGTH,prefixes:H.NONE,value:.9144,offset:0},mi:{name:"mi",base:Z.LENGTH,prefixes:H.NONE,value:1609.344,offset:0},li:{name:"li",base:Z.LENGTH,prefixes:H.NONE,value:.201168,offset:0},rd:{name:"rd",base:Z.LENGTH,prefixes:H.NONE,value:5.02921,offset:0},ch:{name:"ch",base:Z.LENGTH,prefixes:H.NONE,value:20.1168,offset:0},mil:{name:"mil",base:Z.LENGTH,prefixes:H.NONE,value:254e-7,offset:0},m2:{name:"m2",base:Z.SURFACE,prefixes:H.SQUARED,value:1,offset:0},sqin:{name:"sqin",base:Z.SURFACE,prefixes:H.NONE,value:64516e-8,offset:0},sqft:{name:"sqft",base:Z.SURFACE,prefixes:H.NONE,value:.09290304,offset:0},sqyd:{name:"sqyd",base:Z.SURFACE,prefixes:H.NONE,value:.83612736,offset:0},sqmi:{name:"sqmi",base:Z.SURFACE,prefixes:H.NONE,value:2589988110336e-6,offset:0},sqrd:{name:"sqrd",base:Z.SURFACE,prefixes:H.NONE,value:25.29295,offset:0},sqch:{name:"sqch",base:Z.SURFACE,prefixes:H.NONE,value:404.6873,offset:0},sqmil:{name:"sqmil",base:Z.SURFACE,prefixes:H.NONE,value:64516e-14,offset:0},acre:{name:"acre",base:Z.SURFACE,prefixes:H.NONE,value:4046.86,offset:0},hectare:{name:"hectare",base:Z.SURFACE,prefixes:H.NONE,value:1e4,offset:0},m3:{name:"m3",base:Z.VOLUME,prefixes:H.CUBIC,value:1,offset:0},L:{name:"L",base:Z.VOLUME,prefixes:H.SHORT,value:.001,offset:0},l:{name:"l",base:Z.VOLUME,prefixes:H.SHORT,value:.001,offset:0},litre:{name:"litre",base:Z.VOLUME,prefixes:H.LONG,value:.001,offset:0},cuin:{name:"cuin",base:Z.VOLUME,prefixes:H.NONE,value:16387064e-12,offset:0},cuft:{name:"cuft",base:Z.VOLUME,prefixes:H.NONE,value:.028316846592,offset:0},cuyd:{name:"cuyd",base:Z.VOLUME,prefixes:H.NONE,value:.764554857984,offset:0},teaspoon:{name:"teaspoon",base:Z.VOLUME,prefixes:H.NONE,value:5e-6,offset:0},tablespoon:{name:"tablespoon",base:Z.VOLUME,prefixes:H.NONE,value:15e-6,offset:0},drop:{name:"drop",base:Z.VOLUME,prefixes:H.NONE,value:5e-8,offset:0},gtt:{name:"gtt",base:Z.VOLUME,prefixes:H.NONE,value:5e-8,offset:0},minim:{name:"minim",base:Z.VOLUME,prefixes:H.NONE,value:61611519921875e-21,offset:0},fluiddram:{name:"fluiddram",base:Z.VOLUME,prefixes:H.NONE,value:36966911953125e-19,offset:0},fluidounce:{name:"fluidounce",base:Z.VOLUME,prefixes:H.NONE,value:295735295625e-16,offset:0},gill:{name:"gill",base:Z.VOLUME,prefixes:H.NONE,value:.00011829411825,offset:0},cc:{name:"cc",base:Z.VOLUME,prefixes:H.NONE,value:1e-6,offset:0},cup:{name:"cup",base:Z.VOLUME,prefixes:H.NONE,value:.0002365882365,offset:0},pint:{name:"pint",base:Z.VOLUME,prefixes:H.NONE,value:.000473176473,offset:0},quart:{name:"quart",base:Z.VOLUME,prefixes:H.NONE,value:.000946352946,offset:0},gallon:{name:"gallon",base:Z.VOLUME,prefixes:H.NONE,value:.003785411784,offset:0},beerbarrel:{name:"beerbarrel",base:Z.VOLUME,prefixes:H.NONE,value:.117347765304,offset:0},oilbarrel:{name:"oilbarrel",base:Z.VOLUME,prefixes:H.NONE,value:.158987294928,offset:0},hogshead:{name:"hogshead",base:Z.VOLUME,prefixes:H.NONE,value:.238480942392,offset:0},g:{name:"g",base:Z.MASS,prefixes:H.SHORT,value:.001,offset:0},gram:{name:"gram",base:Z.MASS,prefixes:H.LONG,value:.001,offset:0},ton:{name:"ton",base:Z.MASS,prefixes:H.SHORT,value:907.18474,offset:0},t:{name:"t",base:Z.MASS,prefixes:H.SHORT,value:1e3,offset:0},tonne:{name:"tonne",base:Z.MASS,prefixes:H.LONG,value:1e3,offset:0},grain:{name:"grain",base:Z.MASS,prefixes:H.NONE,value:6479891e-11,offset:0},dram:{name:"dram",base:Z.MASS,prefixes:H.NONE,value:.0017718451953125,offset:0},ounce:{name:"ounce",base:Z.MASS,prefixes:H.NONE,value:.028349523125,offset:0},poundmass:{name:"poundmass",base:Z.MASS,prefixes:H.NONE,value:.45359237,offset:0},hundredweight:{name:"hundredweight",base:Z.MASS,prefixes:H.NONE,value:45.359237,offset:0},stick:{name:"stick",base:Z.MASS,prefixes:H.NONE,value:.115,offset:0},stone:{name:"stone",base:Z.MASS,prefixes:H.NONE,value:6.35029318,offset:0},gr:{name:"gr",base:Z.MASS,prefixes:H.NONE,value:6479891e-11,offset:0},dr:{name:"dr",base:Z.MASS,prefixes:H.NONE,value:.0017718451953125,offset:0},oz:{name:"oz",base:Z.MASS,prefixes:H.NONE,value:.028349523125,offset:0},lbm:{name:"lbm",base:Z.MASS,prefixes:H.NONE,value:.45359237,offset:0},cwt:{name:"cwt",base:Z.MASS,prefixes:H.NONE,value:45.359237,offset:0},s:{name:"s",base:Z.TIME,prefixes:H.SHORT,value:1,offset:0},min:{name:"min",base:Z.TIME,prefixes:H.NONE,value:60,offset:0},h:{name:"h",base:Z.TIME,prefixes:H.NONE,value:3600,offset:0},second:{name:"second",base:Z.TIME,prefixes:H.LONG,value:1,offset:0},sec:{name:"sec",base:Z.TIME,prefixes:H.LONG,value:1,offset:0},minute:{name:"minute",base:Z.TIME,prefixes:H.NONE,value:60,offset:0},hour:{name:"hour",base:Z.TIME,prefixes:H.NONE,value:3600,offset:0},day:{name:"day",base:Z.TIME,prefixes:H.NONE,value:86400,offset:0},week:{name:"week",base:Z.TIME,prefixes:H.NONE,value:7*86400,offset:0},month:{name:"month",base:Z.TIME,prefixes:H.NONE,value:2629800,offset:0},year:{name:"year",base:Z.TIME,prefixes:H.NONE,value:31557600,offset:0},decade:{name:"decade",base:Z.TIME,prefixes:H.NONE,value:315576e3,offset:0},century:{name:"century",base:Z.TIME,prefixes:H.NONE,value:315576e4,offset:0},millennium:{name:"millennium",base:Z.TIME,prefixes:H.NONE,value:315576e5,offset:0},hertz:{name:"Hertz",base:Z.FREQUENCY,prefixes:H.LONG,value:1,offset:0,reciprocal:!0},Hz:{name:"Hz",base:Z.FREQUENCY,prefixes:H.SHORT,value:1,offset:0,reciprocal:!0},rad:{name:"rad",base:Z.ANGLE,prefixes:H.SHORT,value:1,offset:0},radian:{name:"radian",base:Z.ANGLE,prefixes:H.LONG,value:1,offset:0},deg:{name:"deg",base:Z.ANGLE,prefixes:H.SHORT,value:null,offset:0},degree:{name:"degree",base:Z.ANGLE,prefixes:H.LONG,value:null,offset:0},grad:{name:"grad",base:Z.ANGLE,prefixes:H.SHORT,value:null,offset:0},gradian:{name:"gradian",base:Z.ANGLE,prefixes:H.LONG,value:null,offset:0},cycle:{name:"cycle",base:Z.ANGLE,prefixes:H.NONE,value:null,offset:0},arcsec:{name:"arcsec",base:Z.ANGLE,prefixes:H.NONE,value:null,offset:0},arcmin:{name:"arcmin",base:Z.ANGLE,prefixes:H.NONE,value:null,offset:0},A:{name:"A",base:Z.CURRENT,prefixes:H.SHORT,value:1,offset:0},ampere:{name:"ampere",base:Z.CURRENT,prefixes:H.LONG,value:1,offset:0},K:{name:"K",base:Z.TEMPERATURE,prefixes:H.SHORT,value:1,offset:0},degC:{name:"degC",base:Z.TEMPERATURE,prefixes:H.SHORT,value:1,offset:273.15},degF:{name:"degF",base:Z.TEMPERATURE,prefixes:H.SHORT,value:new D(5,9),offset:459.67},degR:{name:"degR",base:Z.TEMPERATURE,prefixes:H.SHORT,value:new D(5,9),offset:0},kelvin:{name:"kelvin",base:Z.TEMPERATURE,prefixes:H.LONG,value:1,offset:0},celsius:{name:"celsius",base:Z.TEMPERATURE,prefixes:H.LONG,value:1,offset:273.15},fahrenheit:{name:"fahrenheit",base:Z.TEMPERATURE,prefixes:H.LONG,value:new D(5,9),offset:459.67},rankine:{name:"rankine",base:Z.TEMPERATURE,prefixes:H.LONG,value:new D(5,9),offset:0},mol:{name:"mol",base:Z.AMOUNT_OF_SUBSTANCE,prefixes:H.SHORT,value:1,offset:0},mole:{name:"mole",base:Z.AMOUNT_OF_SUBSTANCE,prefixes:H.LONG,value:1,offset:0},cd:{name:"cd",base:Z.LUMINOUS_INTENSITY,prefixes:H.SHORT,value:1,offset:0},candela:{name:"candela",base:Z.LUMINOUS_INTENSITY,prefixes:H.LONG,value:1,offset:0},N:{name:"N",base:Z.FORCE,prefixes:H.SHORT,value:1,offset:0},newton:{name:"newton",base:Z.FORCE,prefixes:H.LONG,value:1,offset:0},dyn:{name:"dyn",base:Z.FORCE,prefixes:H.SHORT,value:1e-5,offset:0},dyne:{name:"dyne",base:Z.FORCE,prefixes:H.LONG,value:1e-5,offset:0},lbf:{name:"lbf",base:Z.FORCE,prefixes:H.NONE,value:4.4482216152605,offset:0},poundforce:{name:"poundforce",base:Z.FORCE,prefixes:H.NONE,value:4.4482216152605,offset:0},kip:{name:"kip",base:Z.FORCE,prefixes:H.LONG,value:4448.2216,offset:0},kilogramforce:{name:"kilogramforce",base:Z.FORCE,prefixes:H.NONE,value:9.80665,offset:0},J:{name:"J",base:Z.ENERGY,prefixes:H.SHORT,value:1,offset:0},joule:{name:"joule",base:Z.ENERGY,prefixes:H.LONG,value:1,offset:0},erg:{name:"erg",base:Z.ENERGY,prefixes:H.SHORTLONG,value:1e-7,offset:0},Wh:{name:"Wh",base:Z.ENERGY,prefixes:H.SHORT,value:3600,offset:0},BTU:{name:"BTU",base:Z.ENERGY,prefixes:H.BTU,value:1055.05585262,offset:0},eV:{name:"eV",base:Z.ENERGY,prefixes:H.SHORT,value:1602176565e-28,offset:0},electronvolt:{name:"electronvolt",base:Z.ENERGY,prefixes:H.LONG,value:1602176565e-28,offset:0},W:{name:"W",base:Z.POWER,prefixes:H.SHORT,value:1,offset:0},watt:{name:"watt",base:Z.POWER,prefixes:H.LONG,value:1,offset:0},hp:{name:"hp",base:Z.POWER,prefixes:H.NONE,value:745.6998715386,offset:0},VAR:{name:"VAR",base:Z.POWER,prefixes:H.SHORT,value:v.I,offset:0},VA:{name:"VA",base:Z.POWER,prefixes:H.SHORT,value:1,offset:0},Pa:{name:"Pa",base:Z.PRESSURE,prefixes:H.SHORT,value:1,offset:0},psi:{name:"psi",base:Z.PRESSURE,prefixes:H.NONE,value:6894.75729276459,offset:0},atm:{name:"atm",base:Z.PRESSURE,prefixes:H.NONE,value:101325,offset:0},bar:{name:"bar",base:Z.PRESSURE,prefixes:H.SHORTLONG,value:1e5,offset:0},torr:{name:"torr",base:Z.PRESSURE,prefixes:H.NONE,value:133.322,offset:0},mmHg:{name:"mmHg",base:Z.PRESSURE,prefixes:H.NONE,value:133.322,offset:0},mmH2O:{name:"mmH2O",base:Z.PRESSURE,prefixes:H.NONE,value:9.80665,offset:0},cmH2O:{name:"cmH2O",base:Z.PRESSURE,prefixes:H.NONE,value:98.0665,offset:0},coulomb:{name:"coulomb",base:Z.ELECTRIC_CHARGE,prefixes:H.LONG,value:1,offset:0},C:{name:"C",base:Z.ELECTRIC_CHARGE,prefixes:H.SHORT,value:1,offset:0},farad:{name:"farad",base:Z.ELECTRIC_CAPACITANCE,prefixes:H.LONG,value:1,offset:0},F:{name:"F",base:Z.ELECTRIC_CAPACITANCE,prefixes:H.SHORT,value:1,offset:0},volt:{name:"volt",base:Z.ELECTRIC_POTENTIAL,prefixes:H.LONG,value:1,offset:0},V:{name:"V",base:Z.ELECTRIC_POTENTIAL,prefixes:H.SHORT,value:1,offset:0},ohm:{name:"ohm",base:Z.ELECTRIC_RESISTANCE,prefixes:H.SHORTLONG,value:1,offset:0},henry:{name:"henry",base:Z.ELECTRIC_INDUCTANCE,prefixes:H.LONG,value:1,offset:0},H:{name:"H",base:Z.ELECTRIC_INDUCTANCE,prefixes:H.SHORT,value:1,offset:0},siemens:{name:"siemens",base:Z.ELECTRIC_CONDUCTANCE,prefixes:H.LONG,value:1,offset:0},S:{name:"S",base:Z.ELECTRIC_CONDUCTANCE,prefixes:H.SHORT,value:1,offset:0},weber:{name:"weber",base:Z.MAGNETIC_FLUX,prefixes:H.LONG,value:1,offset:0},Wb:{name:"Wb",base:Z.MAGNETIC_FLUX,prefixes:H.SHORT,value:1,offset:0},tesla:{name:"tesla",base:Z.MAGNETIC_FLUX_DENSITY,prefixes:H.LONG,value:1,offset:0},T:{name:"T",base:Z.MAGNETIC_FLUX_DENSITY,prefixes:H.SHORT,value:1,offset:0},b:{name:"b",base:Z.BIT,prefixes:H.BINARY_SHORT,value:1,offset:0},bits:{name:"bits",base:Z.BIT,prefixes:H.BINARY_LONG,value:1,offset:0},B:{name:"B",base:Z.BIT,prefixes:H.BINARY_SHORT,value:8,offset:0},bytes:{name:"bytes",base:Z.BIT,prefixes:H.BINARY_LONG,value:8,offset:0}},ve={meters:"meter",inches:"inch",feet:"foot",yards:"yard",miles:"mile",links:"link",rods:"rod",chains:"chain",angstroms:"angstrom",lt:"l",litres:"litre",liter:"litre",liters:"litre",teaspoons:"teaspoon",tablespoons:"tablespoon",minims:"minim",fldr:"fluiddram",fluiddrams:"fluiddram",floz:"fluidounce",fluidounces:"fluidounce",gi:"gill",gills:"gill",cp:"cup",cups:"cup",pt:"pint",pints:"pint",qt:"quart",quarts:"quart",gal:"gallon",gallons:"gallon",bbl:"beerbarrel",beerbarrels:"beerbarrel",obl:"oilbarrel",oilbarrels:"oilbarrel",hogsheads:"hogshead",gtts:"gtt",grams:"gram",tons:"ton",tonnes:"tonne",grains:"grain",drams:"dram",ounces:"ounce",poundmasses:"poundmass",hundredweights:"hundredweight",sticks:"stick",lb:"lbm",lbs:"lbm",kips:"kip",kgf:"kilogramforce",acres:"acre",hectares:"hectare",sqfeet:"sqft",sqyard:"sqyd",sqmile:"sqmi",sqmiles:"sqmi",mmhg:"mmHg",mmh2o:"mmH2O",cmh2o:"cmH2O",seconds:"second",secs:"second",minutes:"minute",mins:"minute",hours:"hour",hr:"hour",hrs:"hour",days:"day",weeks:"week",months:"month",years:"year",decades:"decade",centuries:"century",millennia:"millennium",hertz:"hertz",radians:"radian",degrees:"degree",gradians:"gradian",cycles:"cycle",arcsecond:"arcsec",arcseconds:"arcsec",arcminute:"arcmin",arcminutes:"arcmin",BTUs:"BTU",watts:"watt",joules:"joule",amperes:"ampere",amps:"ampere",amp:"ampere",coulombs:"coulomb",volts:"volt",ohms:"ohm",farads:"farad",webers:"weber",teslas:"tesla",electronvolts:"electronvolt",moles:"mole",bit:"bits",byte:"bytes"};function Te(ie){if(ie.number==="BigNumber"){var fe=Pv(S);ne.rad.value=new S(1),ne.deg.value=fe.div(180),ne.grad.value=fe.div(200),ne.cycle.value=fe.times(2),ne.arcsec.value=fe.div(648e3),ne.arcmin.value=fe.div(10800)}else ne.rad.value=1,ne.deg.value=Math.PI/180,ne.grad.value=Math.PI/200,ne.cycle.value=Math.PI*2,ne.arcsec.value=Math.PI/648e3,ne.arcmin.value=Math.PI/10800;ne.radian.value=ne.rad.value,ne.degree.value=ne.deg.value,ne.gradian.value=ne.grad.value}Te(r),t&&t("config",function(ie,fe){ie.number!==fe.number&&Te(ie)});var De={si:{NONE:{unit:de,prefix:H.NONE[""]},LENGTH:{unit:ne.m,prefix:H.SHORT[""]},MASS:{unit:ne.g,prefix:H.SHORT.k},TIME:{unit:ne.s,prefix:H.SHORT[""]},CURRENT:{unit:ne.A,prefix:H.SHORT[""]},TEMPERATURE:{unit:ne.K,prefix:H.SHORT[""]},LUMINOUS_INTENSITY:{unit:ne.cd,prefix:H.SHORT[""]},AMOUNT_OF_SUBSTANCE:{unit:ne.mol,prefix:H.SHORT[""]},ANGLE:{unit:ne.rad,prefix:H.SHORT[""]},BIT:{unit:ne.bits,prefix:H.SHORT[""]},FORCE:{unit:ne.N,prefix:H.SHORT[""]},ENERGY:{unit:ne.J,prefix:H.SHORT[""]},POWER:{unit:ne.W,prefix:H.SHORT[""]},PRESSURE:{unit:ne.Pa,prefix:H.SHORT[""]},ELECTRIC_CHARGE:{unit:ne.C,prefix:H.SHORT[""]},ELECTRIC_CAPACITANCE:{unit:ne.F,prefix:H.SHORT[""]},ELECTRIC_POTENTIAL:{unit:ne.V,prefix:H.SHORT[""]},ELECTRIC_RESISTANCE:{unit:ne.ohm,prefix:H.SHORT[""]},ELECTRIC_INDUCTANCE:{unit:ne.H,prefix:H.SHORT[""]},ELECTRIC_CONDUCTANCE:{unit:ne.S,prefix:H.SHORT[""]},MAGNETIC_FLUX:{unit:ne.Wb,prefix:H.SHORT[""]},MAGNETIC_FLUX_DENSITY:{unit:ne.T,prefix:H.SHORT[""]},FREQUENCY:{unit:ne.Hz,prefix:H.SHORT[""]}}};De.cgs=JSON.parse(JSON.stringify(De.si)),De.cgs.LENGTH={unit:ne.m,prefix:H.SHORT.c},De.cgs.MASS={unit:ne.g,prefix:H.SHORT[""]},De.cgs.FORCE={unit:ne.dyn,prefix:H.SHORT[""]},De.cgs.ENERGY={unit:ne.erg,prefix:H.NONE[""]},De.us=JSON.parse(JSON.stringify(De.si)),De.us.LENGTH={unit:ne.ft,prefix:H.NONE[""]},De.us.MASS={unit:ne.lbm,prefix:H.NONE[""]},De.us.TEMPERATURE={unit:ne.degF,prefix:H.NONE[""]},De.us.FORCE={unit:ne.lbf,prefix:H.NONE[""]},De.us.ENERGY={unit:ne.BTU,prefix:H.BTU[""]},De.us.POWER={unit:ne.hp,prefix:H.NONE[""]},De.us.PRESSURE={unit:ne.psi,prefix:H.NONE[""]},De.auto=JSON.parse(JSON.stringify(De.si));var se=De.auto;E.setUnitSystem=function(ie){if(xt(De,ie))se=De[ie];else throw new Error("Unit system "+ie+" does not exist. Choices are: "+Object.keys(De).join(", "))},E.getUnitSystem=function(){for(var ie in De)if(xt(De,ie)&&De[ie]===se)return ie},E.typeConverters={BigNumber:function(fe){return fe!=null&&fe.isFraction?new S(fe.n).div(fe.d).times(fe.s):new S(fe+"")},Fraction:function(fe){return new D(fe)},Complex:function(fe){return fe},number:function(fe){return fe!=null&&fe.isFraction?x(fe):fe}},E.prototype._numberConverter=function(){var ie=E.typeConverters[this.valueType()];if(ie)return ie;throw new TypeError('Unsupported Unit value type "'+this.valueType()+'"')},E._getNumberConverter=function(ie){if(!E.typeConverters[ie])throw new TypeError('Unsupported type "'+ie+'"');return E.typeConverters[ie]};for(var le in ne)if(xt(ne,le)){var oe=ne[le];oe.dimensions=oe.base.dimensions}for(var we in ve)if(xt(ve,we)){var Ce=ne[ve[we]],he={};for(var Pe in Ce)xt(Ce,Pe)&&(he[Pe]=Ce[Pe]);he.name=we,ne[we]=he}E.isValidAlpha=function(fe){return/^[a-zA-Z]$/.test(fe)};function Ze(ie){for(var fe=0;fe0&&!(E.isValidAlpha(N)||I(N)))throw new Error('Invalid unit name (only alphanumeric characters are allowed): "'+ie+'"')}}return E.createUnit=function(ie,fe){if(typeof ie!="object")throw new TypeError("createUnit expects first parameter to be of type 'Object'");if(fe&&fe.override){for(var Oe in ie)if(xt(ie,Oe)&&E.deleteUnit(Oe),ie[Oe].aliases)for(var Me=0;Me"u"||fe===null)&&(fe={}),typeof ie!="string")throw new TypeError("createUnitSingle expects first parameter to be of type 'string'");if(xt(ne,ie))throw new Error('Cannot create unit "'+ie+'": a unit with that name already exists');Ze(ie);var Oe=null,Me=[],Je=0,$e,it,ct;if(fe&&fe.type==="Unit")Oe=fe.clone();else if(typeof fe=="string")fe!==""&&($e=fe);else if(typeof fe=="object")$e=fe.definition,it=fe.prefixes,Je=fe.offset,ct=fe.baseName,fe.aliases&&(Me=fe.aliases.valueOf());else throw new TypeError('Cannot create unit "'+ie+'" from "'+fe.toString()+'": expecting "string" or "Unit" or "Object"');if(Me){for(var rt=0;rt1e-12){te=!1;break}if(te){qt=!0,At.base=Z[xe];break}}if(!qt){ct=ct||ie+"_STUFF";var _e={dimensions:Oe.dimensions.slice(0)};_e.key=ct,Z[ct]=_e,se[ct]={unit:At,prefix:H.NONE[""]},At.base=Z[ct]}}else{if(ct=ct||ie+"_STUFF",ee.indexOf(ct)>=0)throw new Error('Cannot create new base unit "'+ie+'": a base unit with that name already exists (and cannot be overridden)');ee.push(ct);for(var zt in Z)xt(Z,zt)&&(Z[zt].dimensions[ee.length-1]=0);for(var mt={dimensions:[]},fr=0;fr{var{typed:t,Unit:r}=e;return t(QL,{Unit:function(i){return i.clone()},string:function(i){return r.isValuelessUnit(i)?new r(null,i):r.parse(i,{allowNoUnits:!0})},"number | BigNumber | Fraction | Complex, string | Unit":function(i,o){return new r(i,o)},"number | BigNumber | Fraction":function(i){return new r(i)},"Array | Matrix":t.referToSelf(n=>i=>wt(i,n))})});var eB="sparse",Ele=["typed","SparseMatrix"],tB=$(eB,Ele,e=>{var{typed:t,SparseMatrix:r}=e;return t(eB,{"":function(){return new r([])},string:function(i){return new r([],i)},"Array | Matrix":function(i){return new r(i)},"Array | Matrix, string":function(i,o){return new r(i,o)}})});var rB="createUnit",Ale=["typed","Unit"],nB=$(rB,Ale,e=>{var{typed:t,Unit:r}=e;return t(rB,{"Object, Object":function(i,o){return r.createUnit(i,o)},Object:function(i){return r.createUnit(i,{})},"string, Unit | string | Object, Object":function(i,o,l){var s={};return s[i]=o,r.createUnit(s,l)},"string, Unit | string | Object":function(i,o){var l={};return l[i]=o,r.createUnit(l,{})},string:function(i){var o={};return o[i]={},r.createUnit(o,{})}})});var iB="acos",Cle=["typed","config","Complex"],oB=$(iB,Cle,e=>{var{typed:t,config:r,Complex:n}=e;return t(iB,{number:function(o){return o>=-1&&o<=1||r.predictable?Math.acos(o):new n(o,0).acos()},Complex:function(o){return o.acos()},BigNumber:function(o){return o.acos()}})});var aB="acosh",Mle=["typed","config","Complex"],sB=$(aB,Mle,e=>{var{typed:t,config:r,Complex:n}=e;return t(aB,{number:function(o){return o>=1||r.predictable?qA(o):o<=-1?new n(Math.log(Math.sqrt(o*o-1)-o),Math.PI):new n(o,0).acosh()},Complex:function(o){return o.acosh()},BigNumber:function(o){return o.acosh()}})});var uB="acot",Tle=["typed","BigNumber"],lB=$(uB,Tle,e=>{var{typed:t,BigNumber:r}=e;return t(uB,{number:zA,Complex:function(i){return i.acot()},BigNumber:function(i){return new r(1).div(i).atan()}})});var fB="acoth",_le=["typed","config","Complex","BigNumber"],cB=$(fB,_le,e=>{var{typed:t,config:r,Complex:n,BigNumber:i}=e;return t(fB,{number:function(l){return l>=1||l<=-1||r.predictable?UA(l):new n(l,0).acoth()},Complex:function(l){return l.acoth()},BigNumber:function(l){return new i(1).div(l).atanh()}})});var pB="acsc",Ole=["typed","config","Complex","BigNumber"],mB=$(pB,Ole,e=>{var{typed:t,config:r,Complex:n,BigNumber:i}=e;return t(pB,{number:function(l){return l<=-1||l>=1||r.predictable?HA(l):new n(l,0).acsc()},Complex:function(l){return l.acsc()},BigNumber:function(l){return new i(1).div(l).asin()}})});var dB="acsch",Fle=["typed","BigNumber"],hB=$(dB,Fle,e=>{var{typed:t,BigNumber:r}=e;return t(dB,{number:$A,Complex:function(i){return i.acsch()},BigNumber:function(i){return new r(1).div(i).asinh()}})});var gB="asec",Ile=["typed","config","Complex","BigNumber"],vB=$(gB,Ile,e=>{var{typed:t,config:r,Complex:n,BigNumber:i}=e;return t(gB,{number:function(l){return l<=-1||l>=1||r.predictable?WA(l):new n(l,0).asec()},Complex:function(l){return l.asec()},BigNumber:function(l){return new i(1).div(l).acos()}})});var xB="asech",kle=["typed","config","Complex","BigNumber"],yB=$(xB,kle,e=>{var{typed:t,config:r,Complex:n,BigNumber:i}=e;return t(xB,{number:function(l){if(l<=1&&l>=-1||r.predictable){var s=1/l;if(s>0||r.predictable)return VA(l);var a=Math.sqrt(s*s-1);return new n(Math.log(a-s),Math.PI)}return new n(l,0).asech()},Complex:function(l){return l.asech()},BigNumber:function(l){return new i(1).div(l).acosh()}})});var wB="asin",Lle=["typed","config","Complex"],bB=$(wB,Lle,e=>{var{typed:t,config:r,Complex:n}=e;return t(wB,{number:function(o){return o>=-1&&o<=1||r.predictable?Math.asin(o):new n(o,0).asin()},Complex:function(o){return o.asin()},BigNumber:function(o){return o.asin()}})});var Ble="asinh",Ple=["typed"],DB=$(Ble,Ple,e=>{var{typed:t}=e;return t("asinh",{number:GA,Complex:function(n){return n.asinh()},BigNumber:function(n){return n.asinh()}})});var Rle="atan",qle=["typed"],SB=$(Rle,qle,e=>{var{typed:t}=e;return t("atan",{number:function(n){return Math.atan(n)},Complex:function(n){return n.atan()},BigNumber:function(n){return n.atan()}})});var NB="atan2",zle=["typed","matrix","equalScalar","BigNumber","DenseMatrix","concat"],EB=$(NB,zle,e=>{var{typed:t,matrix:r,equalScalar:n,BigNumber:i,DenseMatrix:o,concat:l}=e,s=Gn({typed:t,equalScalar:n}),a=Vr({typed:t}),u=dw({typed:t,equalScalar:n}),f=Or({typed:t,equalScalar:n}),p=Dr({typed:t,DenseMatrix:o}),h=Xt({typed:t,matrix:r,concat:l});return t(NB,{"number, number":Math.atan2,"BigNumber, BigNumber":(g,x)=>i.atan2(g,x)},h({scalar:"number | BigNumber",SS:u,DS:a,SD:s,Ss:f,sS:p}))});var AB="atanh",Ule=["typed","config","Complex"],CB=$(AB,Ule,e=>{var{typed:t,config:r,Complex:n}=e;return t(AB,{number:function(o){return o<=1&&o>=-1||r.predictable?YA(o):new n(o,0).atanh()},Complex:function(o){return o.atanh()},BigNumber:function(o){return o.atanh()}})});var Qa=$("trigUnit",["typed"],e=>{var{typed:t}=e;return{Unit:t.referToSelf(r=>n=>{if(!n.hasBase(n.constructor.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cot is no angle");return t.find(r,n.valueType())(n.value)})}});var MB="cos",Hle=["typed"],TB=$(MB,Hle,e=>{var{typed:t}=e,r=Qa({typed:t});return t(MB,{number:Math.cos,"Complex | BigNumber":n=>n.cos()},r)});var _B="cosh",$le=["typed"],OB=$(_B,$le,e=>{var{typed:t}=e;return t(_B,{number:H1,"Complex | BigNumber":r=>r.cosh()})});var FB="cot",Wle=["typed","BigNumber"],IB=$(FB,Wle,e=>{var{typed:t,BigNumber:r}=e,n=Qa({typed:t});return t(FB,{number:ZA,Complex:i=>i.cot(),BigNumber:i=>new r(1).div(i.tan())},n)});var kB="coth",Vle=["typed","BigNumber"],LB=$(kB,Vle,e=>{var{typed:t,BigNumber:r}=e;return t(kB,{number:XA,Complex:n=>n.coth(),BigNumber:n=>new r(1).div(n.tanh())})});var BB="csc",Gle=["typed","BigNumber"],PB=$(BB,Gle,e=>{var{typed:t,BigNumber:r}=e,n=Qa({typed:t});return t(BB,{number:KA,Complex:i=>i.csc(),BigNumber:i=>new r(1).div(i.sin())},n)});var RB="csch",Yle=["typed","BigNumber"],qB=$(RB,Yle,e=>{var{typed:t,BigNumber:r}=e;return t(RB,{number:JA,Complex:n=>n.csch(),BigNumber:n=>new r(1).div(n.sinh())})});var zB="sec",Zle=["typed","BigNumber"],UB=$(zB,Zle,e=>{var{typed:t,BigNumber:r}=e,n=Qa({typed:t});return t(zB,{number:QA,Complex:i=>i.sec(),BigNumber:i=>new r(1).div(i.cos())},n)});var HB="sech",Xle=["typed","BigNumber"],$B=$(HB,Xle,e=>{var{typed:t,BigNumber:r}=e;return t(HB,{number:jA,Complex:n=>n.sech(),BigNumber:n=>new r(1).div(n.cosh())})});var WB="sin",Kle=["typed"],VB=$(WB,Kle,e=>{var{typed:t}=e,r=Qa({typed:t});return t(WB,{number:Math.sin,"Complex | BigNumber":n=>n.sin()},r)});var GB="sinh",Jle=["typed"],YB=$(GB,Jle,e=>{var{typed:t}=e;return t(GB,{number:eC,"Complex | BigNumber":r=>r.sinh()})});var ZB="tan",Qle=["typed"],XB=$(ZB,Qle,e=>{var{typed:t}=e,r=Qa({typed:t});return t(ZB,{number:Math.tan,"Complex | BigNumber":n=>n.tan()},r)});var jle="tanh",efe=["typed"],KB=$(jle,efe,e=>{var{typed:t}=e;return t("tanh",{number:$1,"Complex | BigNumber":r=>r.tanh()})});var JB="setCartesian",tfe=["typed","size","subset","compareNatural","Index","DenseMatrix"],QB=$(JB,tfe,e=>{var{typed:t,size:r,subset:n,compareNatural:i,Index:o,DenseMatrix:l}=e;return t(JB,{"Array | Matrix, Array | Matrix":function(a,u){var f=[];if(n(r(a),new o(0))!==0&&n(r(u),new o(0))!==0){var p=jt(Array.isArray(a)?a:a.toArray()).sort(i),h=jt(Array.isArray(u)?u:u.toArray()).sort(i);f=[];for(var g=0;g{var{typed:t,size:r,subset:n,compareNatural:i,Index:o,DenseMatrix:l}=e;return t(jB,{"Array | Matrix, Array | Matrix":function(a,u){var f;if(n(r(a),new o(0))===0)f=[];else{if(n(r(u),new o(0))===0)return jt(a.toArray());var p=Ml(jt(Array.isArray(a)?a:a.toArray()).sort(i)),h=Ml(jt(Array.isArray(u)?u:u.toArray()).sort(i));f=[];for(var g,x=0;x{var{typed:t,size:r,subset:n,compareNatural:i,Index:o,DenseMatrix:l}=e;return t(tP,{"Array | Matrix":function(a){var u;if(n(r(a),new o(0))===0)u=[];else{var f=jt(Array.isArray(a)?a:a.toArray()).sort(i);u=[],u.push(f[0]);for(var p=1;p{var{typed:t,size:r,subset:n,compareNatural:i,Index:o,DenseMatrix:l}=e;return t(nP,{"Array | Matrix, Array | Matrix":function(a,u){var f;if(n(r(a),new o(0))===0||n(r(u),new o(0))===0)f=[];else{var p=Ml(jt(Array.isArray(a)?a:a.toArray()).sort(i)),h=Ml(jt(Array.isArray(u)?u:u.toArray()).sort(i));f=[];for(var g=0;g{var{typed:t,size:r,subset:n,compareNatural:i,Index:o}=e;return t(oP,{"Array | Matrix, Array | Matrix":function(s,a){if(n(r(s),new o(0))===0)return!0;if(n(r(a),new o(0))===0)return!1;for(var u=Ml(jt(Array.isArray(s)?s:s.toArray()).sort(i)),f=Ml(jt(Array.isArray(a)?a:a.toArray()).sort(i)),p,h=0;h{var{typed:t,size:r,subset:n,compareNatural:i,Index:o}=e;return t(sP,{"number | BigNumber | Fraction | Complex, Array | Matrix":function(s,a){if(n(r(a),new o(0))===0)return 0;for(var u=jt(Array.isArray(a)?a:a.toArray()),f=0,p=0;p{var{typed:t,size:r,subset:n,compareNatural:i,Index:o}=e;return t(lP,{"Array | Matrix":function(u){if(n(r(u),new o(0))===0)return[];for(var f=jt(Array.isArray(u)?u:u.toArray()).sort(i),p=[],h=0;h.toString(2).length<=f.length;)p.push(l(f,h.toString(2).split("").reverse())),h++;return s(p)}});function l(a,u){for(var f=[],p=0;p0;f--)for(var p=0;pa[p+1].length&&(u=a[p],a[p]=a[p+1],a[p+1]=u);return a}});var cP="setSize",ufe=["typed","compareNatural"],pP=$(cP,ufe,e=>{var{typed:t,compareNatural:r}=e;return t(cP,{"Array | Matrix":function(i){return Array.isArray(i)?jt(i).length:jt(i.toArray()).length},"Array | Matrix, boolean":function(i,o){if(o===!1||i.length===0)return Array.isArray(i)?jt(i).length:jt(i.toArray()).length;for(var l=jt(Array.isArray(i)?i:i.toArray()).sort(r),s=1,a=1;a{var{typed:t,size:r,concat:n,subset:i,setDifference:o,Index:l}=e;return t(mP,{"Array | Matrix, Array | Matrix":function(a,u){if(i(r(a),new l(0))===0)return jt(u);if(i(r(u),new l(0))===0)return jt(a);var f=jt(a),p=jt(u);return n(o(f,p),o(p,f))}})});var hP="setUnion",ffe=["typed","size","concat","subset","setIntersect","setSymDifference","Index"],gP=$(hP,ffe,e=>{var{typed:t,size:r,concat:n,subset:i,setIntersect:o,setSymDifference:l,Index:s}=e;return t(hP,{"Array | Matrix, Array | Matrix":function(u,f){if(i(r(u),new s(0))===0)return jt(f);if(i(r(f),new s(0))===0)return jt(u);var p=jt(u),h=jt(f);return n(l(p,h),o(p,h))}})});var vP="add",cfe=["typed","matrix","addScalar","equalScalar","DenseMatrix","SparseMatrix","concat"],xP=$(vP,cfe,e=>{var{typed:t,matrix:r,addScalar:n,equalScalar:i,DenseMatrix:o,SparseMatrix:l,concat:s}=e,a=fo({typed:t}),u=Sd({typed:t,equalScalar:i}),f=Xo({typed:t,DenseMatrix:o}),p=Xt({typed:t,matrix:r,concat:s});return t(vP,{"any, any":n,"any, any, ...any":t.referToSelf(h=>(g,x,v)=>{for(var S=h(g,x),D=0;D{var{typed:t,abs:r,addScalar:n,divideScalar:i,multiplyScalar:o,sqrt:l,smaller:s,isPositive:a}=e;return t(yP,{"... number | BigNumber":u,Array:u,Matrix:f=>u(jt(f.toArray()))});function u(f){for(var p=0,h=0,g=0;g{var{typed:t,abs:r,add:n,pow:i,conj:o,sqrt:l,multiply:s,equalScalar:a,larger:u,smaller:f,matrix:p,ctranspose:h,eigs:g}=e;return t(bP,{number:Math.abs,Complex:function(F){return F.abs()},BigNumber:function(F){return F.abs()},boolean:function(F){return Math.abs(F)},Array:function(F){return N(p(F),2)},Matrix:function(F){return N(F,2)},"Array, number | BigNumber | string":function(F,I){return N(p(F),I)},"Matrix, number | BigNumber | string":function(F,I){return N(F,I)}});function x(O){var F=0;return O.forEach(function(I){var B=r(I);u(B,F)&&(F=B)},!0),F}function v(O){var F;return O.forEach(function(I){var B=r(I);(!F||f(B,F))&&(F=B)},!0),F||0}function S(O,F){if(F===Number.POSITIVE_INFINITY||F==="inf")return x(O);if(F===Number.NEGATIVE_INFINITY||F==="-inf")return v(O);if(F==="fro")return N(O,2);if(typeof F=="number"&&!isNaN(F)){if(!a(F,0)){var I=0;return O.forEach(function(B){I=n(i(r(B),F),I)},!0),i(I,1/F)}return Number.POSITIVE_INFINITY}throw new Error("Unsupported parameter value")}function D(O){var F=0;return O.forEach(function(I,B){F=n(F,s(I,o(I)))}),r(l(F))}function C(O){var F=[],I=0;return O.forEach(function(B,L){var q=L[1],R=n(F[q]||0,r(B));u(R,I)&&(I=R),F[q]=R},!0),I}function E(O){var F=O.size();if(F[0]!==F[1])throw new RangeError("Invalid matrix dimensions");var I=h(O),B=s(I,O),L=g(B).values.toArray(),q=L[L.length-1];return r(l(q))}function M(O){var F=[],I=0;return O.forEach(function(B,L){var q=L[0],R=n(F[q]||0,r(B));u(R,I)&&(I=R),F[q]=R},!0),I}function T(O,F){if(F===1)return C(O);if(F===Number.POSITIVE_INFINITY||F==="inf")return M(O);if(F==="fro")return D(O);if(F===2)return E(O);throw new Error("Unsupported parameter value "+F)}function N(O,F){var I=O.size();if(I.length===1)return S(O,F);if(I.length===2){if(I[0]&&I[1])return T(O,F);throw new RangeError("Invalid matrix dimensions")}}});var SP="dot",dfe=["typed","addScalar","multiplyScalar","conj","size"],NP=$(SP,dfe,e=>{var{typed:t,addScalar:r,multiplyScalar:n,conj:i,size:o}=e;return t(SP,{"Array | DenseMatrix, Array | DenseMatrix":s,"SparseMatrix, SparseMatrix":a});function l(f,p){var h=u(f),g=u(p),x,v;if(h.length===1)x=h[0];else if(h.length===2&&h[1]===1)x=h[0];else throw new RangeError("Expected a column vector, instead got a matrix of size ("+h.join(", ")+")");if(g.length===1)v=g[0];else if(g.length===2&&g[1]===1)v=g[0];else throw new RangeError("Expected a column vector, instead got a matrix of size ("+g.join(", ")+")");if(x!==v)throw new RangeError("Vectors must have equal length ("+x+" != "+v+")");if(x===0)throw new RangeError("Cannot calculate the dot product of empty vectors");return x}function s(f,p){var h=l(f,p),g=yt(f)?f._data:f,x=yt(f)?f._datatype||f.getDataType():void 0,v=yt(p)?p._data:p,S=yt(p)?p._datatype||p.getDataType():void 0,D=u(f).length===2,C=u(p).length===2,E=r,M=n;if(x&&S&&x===S&&typeof x=="string"&&x!=="mixed"){var T=x;E=t.find(r,[T,T]),M=t.find(n,[T,T])}if(!D&&!C){for(var N=M(i(g[0]),v[0]),O=1;ON){M++;continue}T===N&&(S=D(S,C(g[E],v[M])),E++,M++)}return S}function u(f){return yt(f)?f.size():o(f)}});var hfe="trace",gfe=["typed","matrix","add"],EP=$(hfe,gfe,e=>{var{typed:t,matrix:r,add:n}=e;return t("trace",{Array:function(s){return i(r(s))},SparseMatrix:o,DenseMatrix:i,any:_t});function i(l){var s=l._size,a=l._data;switch(s.length){case 1:if(s[0]===1)return _t(a[0]);throw new RangeError("Matrix must be square (size: "+Ht(s)+")");case 2:{var u=s[0],f=s[1];if(u===f){for(var p=0,h=0;h0)for(var x=0;xx)break}return g}throw new RangeError("Matrix must be square (size: "+Ht(f)+")")}});var AP="index",vfe=["typed","Index"],CP=$(AP,vfe,e=>{var{typed:t,Index:r}=e;return t(AP,{"...number | string | BigNumber | Range | Array | Matrix":function(i){var o=i.map(function(s){return Nt(s)?s.toNumber():dr(s)||yt(s)?s.map(function(a){return Nt(a)?a.toNumber():a}):s}),l=new r;return r.apply(l,o),l}})});var $w=new Set(["end"]);var xfe="Node",yfe=["mathWithTransform"],MP=$(xfe,yfe,e=>{var{mathWithTransform:t}=e;function r(i){for(var o of[...$w])if(i.has(o))throw new Error('Scope contains an illegal symbol, "'+o+'" is a reserved keyword')}class n{get type(){return"Node"}get isNode(){return!0}evaluate(o){return this.compile().evaluate(o)}compile(){var o=this._compile(t,{}),l={},s=null;function a(u){var f=Nl(u);return r(f),o(f,l,s)}return{evaluate:a}}_compile(o,l){throw new Error("Method _compile must be implemented by type "+this.type)}forEach(o){throw new Error("Cannot run forEach on a Node interface")}map(o){throw new Error("Cannot run map on a Node interface")}_ifNode(o){if(!ir(o))throw new TypeError("Callback function must return a Node");return o}traverse(o){o(this,null,null);function l(s,a){s.forEach(function(u,f,p){a(u,f,p),l(u,a)})}l(this,o)}transform(o){function l(s,a,u){var f=o(s,a,u);return f!==s?f:s.map(l)}return l(this,null,null)}filter(o){var l=[];return this.traverse(function(s,a,u){o(s,a,u)&&l.push(s)}),l}clone(){throw new Error("Cannot clone a Node interface")}cloneDeep(){return this.map(function(o){return o.cloneDeep()})}equals(o){return o?this.type===o.type&&Go(this,o):!1}toString(o){var l=this._getCustomString(o);return typeof l<"u"?l:this._toString(o)}_toString(){throw new Error("_toString not implemented for "+this.type)}toJSON(){throw new Error("Cannot serialize object: toJSON not implemented by "+this.type)}toHTML(o){var l=this._getCustomString(o);return typeof l<"u"?l:this._toHTML(o)}_toHTML(){throw new Error("_toHTML not implemented for "+this.type)}toTex(o){var l=this._getCustomString(o);return typeof l<"u"?l:this._toTex(o)}_toTex(o){throw new Error("_toTex not implemented for "+this.type)}_getCustomString(o){if(o&&typeof o=="object")switch(typeof o.handler){case"object":case"undefined":return;case"function":return o.handler(this,o);default:throw new TypeError("Object or function expected as callback")}}getIdentifier(){return this.type}getContent(){return this}}return n},{isClass:!0,isNode:!0});function Gr(e){return e&&e.isIndexError?new bi(e.index+1,e.min+1,e.max!==void 0?e.max+1:void 0):e}function Ww(e){var{subset:t}=e;return function(n,i){try{if(Array.isArray(n))return t(n,i);if(n&&typeof n.subset=="function")return n.subset(i);if(typeof n=="string")return t(n,i);if(typeof n=="object"){if(!i.isObjectProperty())throw new TypeError("Cannot apply a numeric index as object property");return nn(n,i.getObjectProperty())}else throw new TypeError("Cannot apply index: unsupported type of object")}catch(o){throw Gr(o)}}}var Vw="AccessorNode",wfe=["subset","Node"],TP=$(Vw,wfe,e=>{var{subset:t,Node:r}=e,n=Ww({subset:t});function i(l){return!(Mo(l)||vi(l)||Qt(l)||Gi(l)||Eu(l)||xi(l)||Ir(l))}class o extends r{constructor(s,a){if(super(),!ir(s))throw new TypeError('Node expected for parameter "object"');if(!Vo(a))throw new TypeError('IndexNode expected for parameter "index"');this.object=s,this.index=a}get name(){return this.index?this.index.isObjectProperty()?this.index.getObjectProperty():"":this.object.name||""}get type(){return Vw}get isAccessorNode(){return!0}_compile(s,a){var u=this.object._compile(s,a),f=this.index._compile(s,a);if(this.index.isObjectProperty()){var p=this.index.getObjectProperty();return function(g,x,v){return nn(u(g,x,v),p)}}else return function(g,x,v){var S=u(g,x,v),D=f(g,x,S);return n(S,D)}}forEach(s){s(this.object,"object",this),s(this.index,"index",this)}map(s){return new o(this._ifNode(s(this.object,"object",this)),this._ifNode(s(this.index,"index",this)))}clone(){return new o(this.object,this.index)}_toString(s){var a=this.object.toString(s);return i(this.object)&&(a="("+a+")"),a+this.index.toString(s)}_toHTML(s){var a=this.object.toHTML(s);return i(this.object)&&(a='('+a+')'),a+this.index.toHTML(s)}_toTex(s){var a=this.object.toTex(s);return i(this.object)&&(a="\\left(' + object + '\\right)"),a+this.index.toTex(s)}toJSON(){return{mathjs:Vw,object:this.object,index:this.index}}static fromJSON(s){return new o(s.object,s.index)}}return Cr(o,"name",Vw),o},{isClass:!0,isNode:!0});var Gw="ArrayNode",bfe=["Node"],_P=$(Gw,bfe,e=>{var{Node:t}=e;class r extends t{constructor(i){if(super(),this.items=i||[],!Array.isArray(this.items)||!this.items.every(ir))throw new TypeError("Array containing Nodes expected")}get type(){return Gw}get isArrayNode(){return!0}_compile(i,o){var l=Za(this.items,function(u){return u._compile(i,o)}),s=i.config.matrix!=="Array";if(s){var a=i.matrix;return function(f,p,h){return a(Za(l,function(g){return g(f,p,h)}))}}else return function(f,p,h){return Za(l,function(g){return g(f,p,h)})}}forEach(i){for(var o=0;o['+o.join(',')+']'}_toTex(i){function o(l,s){var a=l.some(vi)&&!l.every(vi),u=s||a,f=u?"&":"\\\\",p=l.map(function(h){return h.items?o(h.items,!s):h.toTex(i)}).join(f);return a||!u||u&&!s?"\\begin{bmatrix}"+p+"\\end{bmatrix}":p}return o(this.items,!1)}}return Cr(r,"name",Gw),r},{isClass:!0,isNode:!0});function OP(e){var{subset:t,matrix:r}=e;return function(i,o,l){try{if(Array.isArray(i)){var s=r(i).subset(o,l).valueOf();return s.forEach((a,u)=>{i[u]=a}),i}else{if(i&&typeof i.subset=="function")return i.subset(o,l);if(typeof i=="string")return t(i,o,l);if(typeof i=="object"){if(!o.isObjectProperty())throw TypeError("Cannot apply a numeric index as object property");return Du(i,o.getObjectProperty(),l),i}else throw new TypeError("Cannot apply index: unsupported type of object")}}catch(a){throw Gr(a)}}}var ja=[{AssignmentNode:{},FunctionAssignmentNode:{}},{ConditionalNode:{latexLeftParens:!1,latexRightParens:!1,latexParens:!1}},{"OperatorNode:or":{op:"or",associativity:"left",associativeWith:[]}},{"OperatorNode:xor":{op:"xor",associativity:"left",associativeWith:[]}},{"OperatorNode:and":{op:"and",associativity:"left",associativeWith:[]}},{"OperatorNode:bitOr":{op:"|",associativity:"left",associativeWith:[]}},{"OperatorNode:bitXor":{op:"^|",associativity:"left",associativeWith:[]}},{"OperatorNode:bitAnd":{op:"&",associativity:"left",associativeWith:[]}},{"OperatorNode:equal":{op:"==",associativity:"left",associativeWith:[]},"OperatorNode:unequal":{op:"!=",associativity:"left",associativeWith:[]},"OperatorNode:smaller":{op:"<",associativity:"left",associativeWith:[]},"OperatorNode:larger":{op:">",associativity:"left",associativeWith:[]},"OperatorNode:smallerEq":{op:"<=",associativity:"left",associativeWith:[]},"OperatorNode:largerEq":{op:">=",associativity:"left",associativeWith:[]},RelationalNode:{associativity:"left",associativeWith:[]}},{"OperatorNode:leftShift":{op:"<<",associativity:"left",associativeWith:[]},"OperatorNode:rightArithShift":{op:">>",associativity:"left",associativeWith:[]},"OperatorNode:rightLogShift":{op:">>>",associativity:"left",associativeWith:[]}},{"OperatorNode:to":{op:"to",associativity:"left",associativeWith:[]}},{RangeNode:{}},{"OperatorNode:add":{op:"+",associativity:"left",associativeWith:["OperatorNode:add","OperatorNode:subtract"]},"OperatorNode:subtract":{op:"-",associativity:"left",associativeWith:[]}},{"OperatorNode:multiply":{op:"*",associativity:"left",associativeWith:["OperatorNode:multiply","OperatorNode:divide","Operator:dotMultiply","Operator:dotDivide"]},"OperatorNode:divide":{op:"/",associativity:"left",associativeWith:[],latexLeftParens:!1,latexRightParens:!1,latexParens:!1},"OperatorNode:dotMultiply":{op:".*",associativity:"left",associativeWith:["OperatorNode:multiply","OperatorNode:divide","OperatorNode:dotMultiply","OperatorNode:doDivide"]},"OperatorNode:dotDivide":{op:"./",associativity:"left",associativeWith:[]},"OperatorNode:mod":{op:"mod",associativity:"left",associativeWith:[]}},{"OperatorNode:multiply":{associativity:"left",associativeWith:["OperatorNode:multiply","OperatorNode:divide","Operator:dotMultiply","Operator:dotDivide"]}},{"OperatorNode:unaryPlus":{op:"+",associativity:"right"},"OperatorNode:unaryMinus":{op:"-",associativity:"right"},"OperatorNode:bitNot":{op:"~",associativity:"right"},"OperatorNode:not":{op:"not",associativity:"right"}},{"OperatorNode:pow":{op:"^",associativity:"right",associativeWith:[],latexRightParens:!1},"OperatorNode:dotPow":{op:".^",associativity:"right",associativeWith:[]}},{"OperatorNode:factorial":{op:"!",associativity:"left"}},{"OperatorNode:ctranspose":{op:"'",associativity:"left"}}];function Yw(e,t){if(!t||t!=="auto")return e;for(var r=e;xi(r);)r=r.content;return r}function Tr(e,t,r,n){var i=e;t!=="keep"&&(i=e.getContent());for(var o=i.getIdentifier(),l=null,s=0;s{var{subset:t,matrix:r,Node:n}=e,i=Ww({subset:t}),o=OP({subset:t,matrix:r});function l(a,u,f){u||(u="keep");var p=Tr(a,u,f),h=Tr(a.value,u,f);return u==="all"||h!==null&&h<=p}class s extends n{constructor(u,f,p){if(super(),this.object=u,this.index=p?f:null,this.value=p||f,!Ir(u)&&!Mo(u))throw new TypeError('SymbolNode or AccessorNode expected as "object"');if(Ir(u)&&u.name==="end")throw new Error('Cannot assign to symbol "end"');if(this.index&&!Vo(this.index))throw new TypeError('IndexNode expected as "index"');if(!ir(this.value))throw new TypeError('Node expected as "value"')}get name(){return this.index?this.index.isObjectProperty()?this.index.getObjectProperty():"":this.object.name||""}get type(){return Xw}get isAssignmentNode(){return!0}_compile(u,f){var p=this.object._compile(u,f),h=this.index?this.index._compile(u,f):null,g=this.value._compile(u,f),x=this.object.name;if(this.index)if(this.index.isObjectProperty()){var v=this.index.getObjectProperty();return function(M,T,N){var O=p(M,T,N),F=g(M,T,N);return Du(O,v,F),F}}else{if(Ir(this.object))return function(M,T,N){var O=p(M,T,N),F=g(M,T,N),I=h(M,T,O);return M.set(x,o(O,I,F)),F};var S=this.object.object._compile(u,f);if(this.object.index.isObjectProperty()){var D=this.object.index.getObjectProperty();return function(M,T,N){var O=S(M,T,N),F=nn(O,D),I=h(M,T,F),B=g(M,T,N);return Du(O,D,o(F,I,B)),B}}else{var C=this.object.index._compile(u,f);return function(M,T,N){var O=S(M,T,N),F=C(M,T,O),I=i(O,F),B=h(M,T,I),L=g(M,T,N);return o(O,F,o(I,B,L)),L}}}else{if(!Ir(this.object))throw new TypeError("SymbolNode expected as object");return function(M,T,N){var O=g(M,T,N);return M.set(x,O),O}}}forEach(u){u(this.object,"object",this),this.index&&u(this.index,"index",this),u(this.value,"value",this)}map(u){var f=this._ifNode(u(this.object,"object",this)),p=this.index?this._ifNode(u(this.index,"index",this)):null,h=this._ifNode(u(this.value,"value",this));return new s(f,p,h)}clone(){return new s(this.object,this.index,this.value)}_toString(u){var f=this.object.toString(u),p=this.index?this.index.toString(u):"",h=this.value.toString(u);return l(this,u&&u.parenthesis,u&&u.implicit)&&(h="("+h+")"),f+p+" = "+h}toJSON(){return{mathjs:Xw,object:this.object,index:this.index,value:this.value}}static fromJSON(u){return new s(u.object,u.index,u.value)}_toHTML(u){var f=this.object.toHTML(u),p=this.index?this.index.toHTML(u):"",h=this.value.toHTML(u);return l(this,u&&u.parenthesis,u&&u.implicit)&&(h='('+h+')'),f+p+'='+h}_toTex(u){var f=this.object.toTex(u),p=this.index?this.index.toTex(u):"",h=this.value.toTex(u);return l(this,u&&u.parenthesis,u&&u.implicit)&&(h="\\left(".concat(h,"\\right)")),f+p+"="+h}}return Cr(s,"name",Xw),s},{isClass:!0,isNode:!0});var Kw="BlockNode",Sfe=["ResultSet","Node"],kP=$(Kw,Sfe,e=>{var{ResultSet:t,Node:r}=e;class n extends r{constructor(o){if(super(),!Array.isArray(o))throw new Error("Array expected");this.blocks=o.map(function(l){var s=l&&l.node,a=l&&l.visible!==void 0?l.visible:!0;if(!ir(s))throw new TypeError('Property "node" must be a Node');if(typeof a!="boolean")throw new TypeError('Property "visible" must be a boolean');return{node:s,visible:a}})}get type(){return Kw}get isBlockNode(){return!0}_compile(o,l){var s=Za(this.blocks,function(a){return{evaluate:a.node._compile(o,l),visible:a.visible}});return function(u,f,p){var h=[];return nw(s,function(x){var v=x.evaluate(u,f,p);x.visible&&h.push(v)}),new t(h)}}forEach(o){for(var l=0;l;')}).join('
    ')}_toTex(o){return this.blocks.map(function(l){return l.node.toTex(o)+(l.visible?"":";")}).join(`\\;\\; -`)}}return Cr(n,"name",Kw),n},{isClass:!0,isNode:!0});var Jw="ConditionalNode",Nfe=["Node"],LP=$(Jw,Nfe,e=>{var{Node:t}=e;function r(i){if(typeof i=="number"||typeof i=="boolean"||typeof i=="string")return!!i;if(i){if(Nt(i))return!i.isZero();if(gi(i))return!!(i.re||i.im);if(ei(i))return!!i.value}if(i==null)return!1;throw new TypeError('Unsupported type of condition "'+pr(i)+'"')}class n extends t{constructor(o,l,s){if(super(),!ir(o))throw new TypeError("Parameter condition must be a Node");if(!ir(l))throw new TypeError("Parameter trueExpr must be a Node");if(!ir(s))throw new TypeError("Parameter falseExpr must be a Node");this.condition=o,this.trueExpr=l,this.falseExpr=s}get type(){return Jw}get isConditionalNode(){return!0}_compile(o,l){var s=this.condition._compile(o,l),a=this.trueExpr._compile(o,l),u=this.falseExpr._compile(o,l);return function(p,h,g){return r(s(p,h,g))?a(p,h,g):u(p,h,g)}}forEach(o){o(this.condition,"condition",this),o(this.trueExpr,"trueExpr",this),o(this.falseExpr,"falseExpr",this)}map(o){return new n(this._ifNode(o(this.condition,"condition",this)),this._ifNode(o(this.trueExpr,"trueExpr",this)),this._ifNode(o(this.falseExpr,"falseExpr",this)))}clone(){return new n(this.condition,this.trueExpr,this.falseExpr)}_toString(o){var l=o&&o.parenthesis?o.parenthesis:"keep",s=Tr(this,l,o&&o.implicit),a=this.condition.toString(o),u=Tr(this.condition,l,o&&o.implicit);(l==="all"||this.condition.type==="OperatorNode"||u!==null&&u<=s)&&(a="("+a+")");var f=this.trueExpr.toString(o),p=Tr(this.trueExpr,l,o&&o.implicit);(l==="all"||this.trueExpr.type==="OperatorNode"||p!==null&&p<=s)&&(f="("+f+")");var h=this.falseExpr.toString(o),g=Tr(this.falseExpr,l,o&&o.implicit);return(l==="all"||this.falseExpr.type==="OperatorNode"||g!==null&&g<=s)&&(h="("+h+")"),a+" ? "+f+" : "+h}toJSON(){return{mathjs:Jw,condition:this.condition,trueExpr:this.trueExpr,falseExpr:this.falseExpr}}static fromJSON(o){return new n(o.condition,o.trueExpr,o.falseExpr)}_toHTML(o){var l=o&&o.parenthesis?o.parenthesis:"keep",s=Tr(this,l,o&&o.implicit),a=this.condition.toHTML(o),u=Tr(this.condition,l,o&&o.implicit);(l==="all"||this.condition.type==="OperatorNode"||u!==null&&u<=s)&&(a='('+a+')');var f=this.trueExpr.toHTML(o),p=Tr(this.trueExpr,l,o&&o.implicit);(l==="all"||this.trueExpr.type==="OperatorNode"||p!==null&&p<=s)&&(f='('+f+')');var h=this.falseExpr.toHTML(o),g=Tr(this.falseExpr,l,o&&o.implicit);return(l==="all"||this.falseExpr.type==="OperatorNode"||g!==null&&g<=s)&&(h='('+h+')'),a+'?'+f+':'+h}_toTex(o){return"\\begin{cases} {"+this.trueExpr.toTex(o)+"}, &\\quad{\\text{if }\\;"+this.condition.toTex(o)+"}\\\\{"+this.falseExpr.toTex(o)+"}, &\\quad{\\text{otherwise}}\\end{cases}"}}return Cr(n,"name",Jw),n},{isClass:!0,isNode:!0});var qP=fn(PP(),1);var mC={Alpha:"A",alpha:"\\alpha",Beta:"B",beta:"\\beta",Gamma:"\\Gamma",gamma:"\\gamma",Delta:"\\Delta",delta:"\\delta",Epsilon:"E",epsilon:"\\epsilon",varepsilon:"\\varepsilon",Zeta:"Z",zeta:"\\zeta",Eta:"H",eta:"\\eta",Theta:"\\Theta",theta:"\\theta",vartheta:"\\vartheta",Iota:"I",iota:"\\iota",Kappa:"K",kappa:"\\kappa",varkappa:"\\varkappa",Lambda:"\\Lambda",lambda:"\\lambda",Mu:"M",mu:"\\mu",Nu:"N",nu:"\\nu",Xi:"\\Xi",xi:"\\xi",Omicron:"O",omicron:"o",Pi:"\\Pi",pi:"\\pi",varpi:"\\varpi",Rho:"P",rho:"\\rho",varrho:"\\varrho",Sigma:"\\Sigma",sigma:"\\sigma",varsigma:"\\varsigma",Tau:"T",tau:"\\tau",Upsilon:"\\Upsilon",upsilon:"\\upsilon",Phi:"\\Phi",phi:"\\phi",varphi:"\\varphi",Chi:"X",chi:"\\chi",Psi:"\\Psi",psi:"\\psi",Omega:"\\Omega",omega:"\\omega",true:"\\mathrm{True}",false:"\\mathrm{False}",i:"i",inf:"\\infty",Inf:"\\infty",infinity:"\\infty",Infinity:"\\infty",oo:"\\infty",lim:"\\lim",undefined:"\\mathbf{?}"},Nr={transpose:"^\\top",ctranspose:"^H",factorial:"!",pow:"^",dotPow:".^\\wedge",unaryPlus:"+",unaryMinus:"-",bitNot:"\\~",not:"\\neg",multiply:"\\cdot",divide:"\\frac",dotMultiply:".\\cdot",dotDivide:".:",mod:"\\mod",add:"+",subtract:"-",to:"\\rightarrow",leftShift:"<<",rightArithShift:">>",rightLogShift:">>>",equal:"=",unequal:"\\neq",smaller:"<",larger:">",smallerEq:"\\leq",largerEq:"\\geq",bitAnd:"\\&",bitXor:"\\underline{|}",bitOr:"|",and:"\\wedge",xor:"\\veebar",or:"\\vee"},dC={abs:{1:"\\left|${args[0]}\\right|"},add:{2:"\\left(${args[0]}".concat(Nr.add,"${args[1]}\\right)")},cbrt:{1:"\\sqrt[3]{${args[0]}}"},ceil:{1:"\\left\\lceil${args[0]}\\right\\rceil"},cube:{1:"\\left(${args[0]}\\right)^3"},divide:{2:"\\frac{${args[0]}}{${args[1]}}"},dotDivide:{2:"\\left(${args[0]}".concat(Nr.dotDivide,"${args[1]}\\right)")},dotMultiply:{2:"\\left(${args[0]}".concat(Nr.dotMultiply,"${args[1]}\\right)")},dotPow:{2:"\\left(${args[0]}".concat(Nr.dotPow,"${args[1]}\\right)")},exp:{1:"\\exp\\left(${args[0]}\\right)"},expm1:"\\left(e".concat(Nr.pow,"{${args[0]}}-1\\right)"),fix:{1:"\\mathrm{${name}}\\left(${args[0]}\\right)"},floor:{1:"\\left\\lfloor${args[0]}\\right\\rfloor"},gcd:"\\gcd\\left(${args}\\right)",hypot:"\\hypot\\left(${args}\\right)",log:{1:"\\ln\\left(${args[0]}\\right)",2:"\\log_{${args[1]}}\\left(${args[0]}\\right)"},log10:{1:"\\log_{10}\\left(${args[0]}\\right)"},log1p:{1:"\\ln\\left(${args[0]}+1\\right)",2:"\\log_{${args[1]}}\\left(${args[0]}+1\\right)"},log2:"\\log_{2}\\left(${args[0]}\\right)",mod:{2:"\\left(${args[0]}".concat(Nr.mod,"${args[1]}\\right)")},multiply:{2:"\\left(${args[0]}".concat(Nr.multiply,"${args[1]}\\right)")},norm:{1:"\\left\\|${args[0]}\\right\\|",2:void 0},nthRoot:{2:"\\sqrt[${args[1]}]{${args[0]}}"},nthRoots:{2:"\\{y : $y^{args[1]} = {${args[0]}}\\}"},pow:{2:"\\left(${args[0]}\\right)".concat(Nr.pow,"{${args[1]}}")},round:{1:"\\left\\lfloor${args[0]}\\right\\rceil",2:void 0},sign:{1:"\\mathrm{${name}}\\left(${args[0]}\\right)"},sqrt:{1:"\\sqrt{${args[0]}}"},square:{1:"\\left(${args[0]}\\right)^2"},subtract:{2:"\\left(${args[0]}".concat(Nr.subtract,"${args[1]}\\right)")},unaryMinus:{1:"".concat(Nr.unaryMinus,"\\left(${args[0]}\\right)")},unaryPlus:{1:"".concat(Nr.unaryPlus,"\\left(${args[0]}\\right)")},bitAnd:{2:"\\left(${args[0]}".concat(Nr.bitAnd,"${args[1]}\\right)")},bitNot:{1:Nr.bitNot+"\\left(${args[0]}\\right)"},bitOr:{2:"\\left(${args[0]}".concat(Nr.bitOr,"${args[1]}\\right)")},bitXor:{2:"\\left(${args[0]}".concat(Nr.bitXor,"${args[1]}\\right)")},leftShift:{2:"\\left(${args[0]}".concat(Nr.leftShift,"${args[1]}\\right)")},rightArithShift:{2:"\\left(${args[0]}".concat(Nr.rightArithShift,"${args[1]}\\right)")},rightLogShift:{2:"\\left(${args[0]}".concat(Nr.rightLogShift,"${args[1]}\\right)")},bellNumbers:{1:"\\mathrm{B}_{${args[0]}}"},catalan:{1:"\\mathrm{C}_{${args[0]}}"},stirlingS2:{2:"\\mathrm{S}\\left(${args}\\right)"},arg:{1:"\\arg\\left(${args[0]}\\right)"},conj:{1:"\\left(${args[0]}\\right)^*"},im:{1:"\\Im\\left\\lbrace${args[0]}\\right\\rbrace"},re:{1:"\\Re\\left\\lbrace${args[0]}\\right\\rbrace"},and:{2:"\\left(${args[0]}".concat(Nr.and,"${args[1]}\\right)")},not:{1:Nr.not+"\\left(${args[0]}\\right)"},or:{2:"\\left(${args[0]}".concat(Nr.or,"${args[1]}\\right)")},xor:{2:"\\left(${args[0]}".concat(Nr.xor,"${args[1]}\\right)")},cross:{2:"\\left(${args[0]}\\right)\\times\\left(${args[1]}\\right)"},ctranspose:{1:"\\left(${args[0]}\\right)".concat(Nr.ctranspose)},det:{1:"\\det\\left(${args[0]}\\right)"},dot:{2:"\\left(${args[0]}\\cdot${args[1]}\\right)"},expm:{1:"\\exp\\left(${args[0]}\\right)"},inv:{1:"\\left(${args[0]}\\right)^{-1}"},pinv:{1:"\\left(${args[0]}\\right)^{+}"},sqrtm:{1:"{${args[0]}}".concat(Nr.pow,"{\\frac{1}{2}}")},trace:{1:"\\mathrm{tr}\\left(${args[0]}\\right)"},transpose:{1:"\\left(${args[0]}\\right)".concat(Nr.transpose)},combinations:{2:"\\binom{${args[0]}}{${args[1]}}"},combinationsWithRep:{2:"\\left(\\!\\!{\\binom{${args[0]}}{${args[1]}}}\\!\\!\\right)"},factorial:{1:"\\left(${args[0]}\\right)".concat(Nr.factorial)},gamma:{1:"\\Gamma\\left(${args[0]}\\right)"},lgamma:{1:"\\ln\\Gamma\\left(${args[0]}\\right)"},equal:{2:"\\left(${args[0]}".concat(Nr.equal,"${args[1]}\\right)")},larger:{2:"\\left(${args[0]}".concat(Nr.larger,"${args[1]}\\right)")},largerEq:{2:"\\left(${args[0]}".concat(Nr.largerEq,"${args[1]}\\right)")},smaller:{2:"\\left(${args[0]}".concat(Nr.smaller,"${args[1]}\\right)")},smallerEq:{2:"\\left(${args[0]}".concat(Nr.smallerEq,"${args[1]}\\right)")},unequal:{2:"\\left(${args[0]}".concat(Nr.unequal,"${args[1]}\\right)")},erf:{1:"erf\\left(${args[0]}\\right)"},max:"\\max\\left(${args}\\right)",min:"\\min\\left(${args}\\right)",variance:"\\mathrm{Var}\\left(${args}\\right)",acos:{1:"\\cos^{-1}\\left(${args[0]}\\right)"},acosh:{1:"\\cosh^{-1}\\left(${args[0]}\\right)"},acot:{1:"\\cot^{-1}\\left(${args[0]}\\right)"},acoth:{1:"\\coth^{-1}\\left(${args[0]}\\right)"},acsc:{1:"\\csc^{-1}\\left(${args[0]}\\right)"},acsch:{1:"\\mathrm{csch}^{-1}\\left(${args[0]}\\right)"},asec:{1:"\\sec^{-1}\\left(${args[0]}\\right)"},asech:{1:"\\mathrm{sech}^{-1}\\left(${args[0]}\\right)"},asin:{1:"\\sin^{-1}\\left(${args[0]}\\right)"},asinh:{1:"\\sinh^{-1}\\left(${args[0]}\\right)"},atan:{1:"\\tan^{-1}\\left(${args[0]}\\right)"},atan2:{2:"\\mathrm{atan2}\\left(${args}\\right)"},atanh:{1:"\\tanh^{-1}\\left(${args[0]}\\right)"},cos:{1:"\\cos\\left(${args[0]}\\right)"},cosh:{1:"\\cosh\\left(${args[0]}\\right)"},cot:{1:"\\cot\\left(${args[0]}\\right)"},coth:{1:"\\coth\\left(${args[0]}\\right)"},csc:{1:"\\csc\\left(${args[0]}\\right)"},csch:{1:"\\mathrm{csch}\\left(${args[0]}\\right)"},sec:{1:"\\sec\\left(${args[0]}\\right)"},sech:{1:"\\mathrm{sech}\\left(${args[0]}\\right)"},sin:{1:"\\sin\\left(${args[0]}\\right)"},sinh:{1:"\\sinh\\left(${args[0]}\\right)"},tan:{1:"\\tan\\left(${args[0]}\\right)"},tanh:{1:"\\tanh\\left(${args[0]}\\right)"},to:{2:"\\left(${args[0]}".concat(Nr.to,"${args[1]}\\right)")},numeric:function(t,r){return t.args[0].toTex()},number:{0:"0",1:"\\left(${args[0]}\\right)",2:"\\left(\\left(${args[0]}\\right)${args[1]}\\right)"},string:{0:'\\mathtt{""}',1:"\\mathrm{string}\\left(${args[0]}\\right)"},bignumber:{0:"0",1:"\\left(${args[0]}\\right)"},bigint:{0:"0",1:"\\left(${args[0]}\\right)"},complex:{0:"0",1:"\\left(${args[0]}\\right)",2:"\\left(\\left(${args[0]}\\right)+".concat(mC.i,"\\cdot\\left(${args[1]}\\right)\\right)")},matrix:{0:"\\begin{bmatrix}\\end{bmatrix}",1:"\\left(${args[0]}\\right)",2:"\\left(${args[0]}\\right)"},sparse:{0:"\\begin{bsparse}\\end{bsparse}",1:"\\left(${args[0]}\\right)"},unit:{1:"\\left(${args[0]}\\right)",2:"\\left(\\left(${args[0]}\\right)${args[1]}\\right)"}},zP="\\mathrm{${name}}\\left(${args}\\right)",RP={deg:"^\\circ"};function Qw(e){return(0,qP.default)(e,{preserveFormatting:!0})}function jw(e,t){return t=typeof t>"u"?!1:t,t?xt(RP,e)?RP[e]:"\\mathrm{"+Qw(e)+"}":xt(mC,e)?mC[e]:Qw(e)}var eb="ConstantNode",Mfe=["Node"],UP=$(eb,Mfe,e=>{var{Node:t}=e;class r extends t{constructor(i){super(),this.value=i}get type(){return eb}get isConstantNode(){return!0}_compile(i,o){var l=this.value;return function(){return l}}forEach(i){}map(i){return this.clone()}clone(){return new r(this.value)}_toString(i){return Ht(this.value,i)}_toHTML(i){var o=this._toString(i);switch(pr(this.value)){case"number":case"bigint":case"BigNumber":case"Fraction":return''+o+"";case"string":return''+o+"";case"boolean":return''+o+"";case"null":return''+o+"";case"undefined":return''+o+"";default:return''+o+""}}toJSON(){return{mathjs:eb,value:this.value}}static fromJSON(i){return new r(i.value)}_toTex(i){var o=this._toString(i),l=pr(this.value);switch(l){case"string":return"\\mathtt{"+Qw(o)+"}";case"number":case"BigNumber":{var s=l==="BigNumber"?this.value.isFinite():isFinite(this.value);if(!s)return this.value.valueOf()<0?"-\\infty":"\\infty";var a=o.toLowerCase().indexOf("e");return a!==-1?o.substring(0,a)+"\\cdot10^{"+o.substring(a+1)+"}":o}case"bigint":return o.toString();case"Fraction":return this.value.toLatex();default:return o}}}return Cr(r,"name",eb),r},{isClass:!0,isNode:!0});var tb="FunctionAssignmentNode",Tfe=["typed","Node"],HP=$(tb,Tfe,e=>{var{typed:t,Node:r}=e;function n(o,l,s){var a=Tr(o,l,s),u=Tr(o.expr,l,s);return l==="all"||u!==null&&u<=a}class i extends r{constructor(l,s,a){if(super(),typeof l!="string")throw new TypeError('String expected for parameter "name"');if(!Array.isArray(s))throw new TypeError('Array containing strings or objects expected for parameter "params"');if(!ir(a))throw new TypeError('Node expected for parameter "expr"');if($w.has(l))throw new Error('Illegal function name, "'+l+'" is a reserved keyword');var u=new Set;for(var f of s){var p=typeof f=="string"?f:f.name;if(u.has(p))throw new Error('Duplicate parameter name "'.concat(p,'"'));u.add(p)}this.name=l,this.params=s.map(function(h){return h&&h.name||h}),this.types=s.map(function(h){return h&&h.type||"any"}),this.expr=a}get type(){return tb}get isFunctionAssignmentNode(){return!0}_compile(l,s){var a=Object.create(s);nw(this.params,function(x){a[x]=!0});var u=this.expr._compile(l,a),f=this.name,p=this.params,h=sA(this.types,","),g=f+"("+sA(this.params,", ")+")";return function(v,S,D){var C={};C[h]=function(){for(var M=Object.create(S),T=0;T'+wi(this.params[u])+"");var f=this.expr.toHTML(l);return n(this,s,l&&l.implicit)&&(f='('+f+')'),''+wi(this.name)+'('+a.join(',')+')='+f}_toTex(l){var s=l&&l.parenthesis?l.parenthesis:"keep",a=this.expr.toTex(l);return n(this,s,l&&l.implicit)&&(a="\\left(".concat(a,"\\right)")),"\\mathrm{"+this.name+"}\\left("+this.params.map(jw).join(",")+"\\right)="+a}}return Cr(i,"name",tb),i},{isClass:!0,isNode:!0});var rb="IndexNode",_fe=["Node","size"],$P=$(rb,_fe,e=>{var{Node:t,size:r}=e;class n extends t{constructor(o,l){if(super(),this.dimensions=o,this.dotNotation=l||!1,!Array.isArray(o)||!o.every(ir))throw new TypeError('Array containing Nodes expected for parameter "dimensions"');if(this.dotNotation&&!this.isObjectProperty())throw new Error("dotNotation only applicable for object properties")}get type(){return rb}get isIndexNode(){return!0}_compile(o,l){var s=Za(this.dimensions,function(u,f){var p=u.filter(x=>x.isSymbolNode&&x.name==="end").length>0;if(p){var h=Object.create(l);h.end=!0;var g=u._compile(o,h);return function(v,S,D){if(!yt(D)&&!dr(D)&&!cn(D))throw new TypeError('Cannot resolve "end": context must be a Matrix, Array, or string but is '+pr(D));var C=r(D).valueOf(),E=Object.create(S);return E.end=C[f],g(v,E,D)}}else return u._compile(o,l)}),a=nn(o,"index");return function(f,p,h){var g=Za(s,function(x){return x(f,p,h)});return a(...g)}}forEach(o){for(var l=0;l.'+wi(this.getObjectProperty())+"":'['+l.join(',')+']'}_toTex(o){var l=this.dimensions.map(function(s){return s.toTex(o)});return this.dotNotation?"."+this.getObjectProperty():"_{"+l.join(",")+"}"}}return Cr(n,"name",rb),n},{isClass:!0,isNode:!0});var nb="ObjectNode",Ofe=["Node"],WP=$(nb,Ofe,e=>{var{Node:t}=e;class r extends t{constructor(i){if(super(),this.properties=i||{},i&&(typeof i!="object"||!Object.keys(i).every(function(o){return ir(i[o])})))throw new TypeError("Object containing Nodes expected")}get type(){return nb}get isObjectNode(){return!0}_compile(i,o){var l={};for(var s in this.properties)if(xt(this.properties,s)){var a=fp(s),u=JSON.parse(a),f=nn(this.properties,s);l[u]=f._compile(i,o)}return function(h,g,x){var v={};for(var S in l)xt(l,S)&&(v[S]=l[S](h,g,x));return v}}forEach(i){for(var o in this.properties)xt(this.properties,o)&&i(this.properties[o],"properties["+fp(o)+"]",this)}map(i){var o={};for(var l in this.properties)xt(this.properties,l)&&(o[l]=this._ifNode(i(this.properties[l],"properties["+fp(l)+"]",this)));return new r(o)}clone(){var i={};for(var o in this.properties)xt(this.properties,o)&&(i[o]=this.properties[o]);return new r(i)}_toString(i){var o=[];for(var l in this.properties)xt(this.properties,l)&&o.push(fp(l)+": "+this.properties[l].toString(i));return"{"+o.join(", ")+"}"}toJSON(){return{mathjs:nb,properties:this.properties}}static fromJSON(i){return new r(i.properties)}_toHTML(i){var o=[];for(var l in this.properties)xt(this.properties,l)&&o.push(''+wi(l)+':'+this.properties[l].toHTML(i));return'{'+o.join(',')+'}'}_toTex(i){var o=[];for(var l in this.properties)xt(this.properties,l)&&o.push("\\mathbf{"+l+":} & "+this.properties[l].toTex(i)+"\\\\");var s="\\left\\{\\begin{array}{ll}"+o.join(` -`)+"\\end{array}\\right\\}";return s}}return Cr(r,"name",nb),r},{isClass:!0,isNode:!0});function vp(e,t){return new ad(e,new Lf(t),new Set(Object.keys(t)))}var ib="OperatorNode",Ffe=["Node"],VP=$(ib,Ffe,e=>{var{Node:t}=e;function r(o,l){var s=o;if(l==="auto")for(;xi(s);)s=s.content;return Qt(s)?!0:Ur(s)?r(s.args[0],l):!1}function n(o,l,s,a,u){var f=Tr(o,l,s),p=_d(o,l);if(l==="all"||a.length>2&&o.getIdentifier()!=="OperatorNode:add"&&o.getIdentifier()!=="OperatorNode:multiply")return a.map(function(B){switch(B.getContent().type){case"ArrayNode":case"ConstantNode":case"SymbolNode":case"ParenthesisNode":return!1;default:return!0}});var h;switch(a.length){case 0:h=[];break;case 1:{var g=Tr(a[0],l,s,o);if(u&&g!==null){var x,v;if(l==="keep"?(x=a[0].getIdentifier(),v=o.getIdentifier()):(x=a[0].getContent().getIdentifier(),v=o.getContent().getIdentifier()),ja[f][v].latexLeftParens===!1){h=[!1];break}if(ja[g][x].latexParens===!1){h=[!1];break}}if(g===null){h=[!1];break}if(g<=f){h=[!0];break}h=[!1]}break;case 2:{var S,D=Tr(a[0],l,s,o),C=Zw(o,a[0],l);D===null?S=!1:D===f&&p==="right"&&!C||D=2&&o.getIdentifier()==="OperatorNode:multiply"&&o.implicit&&l!=="all"&&s==="hide")for(var I=1;I2&&(this.getIdentifier()==="OperatorNode:add"||this.getIdentifier()==="OperatorNode:multiply")){var S=u.map(function(D,C){return D=D.toString(l),f[C]&&(D="("+D+")"),D});return this.implicit&&this.getIdentifier()==="OperatorNode:multiply"&&a==="hide"?S.join(" "):S.join(" "+this.op+" ")}else return this.fn+"("+this.args.join(", ")+")"}toJSON(){return{mathjs:ib,op:this.op,fn:this.fn,args:this.args,implicit:this.implicit,isPercentage:this.isPercentage}}static fromJSON(l){return new i(l.op,l.fn,l.args,l.implicit,l.isPercentage)}_toHTML(l){var s=l&&l.parenthesis?l.parenthesis:"keep",a=l&&l.implicit?l.implicit:"hide",u=this.args,f=n(this,s,a,u,!1);if(u.length===1){var p=_d(this,s),h=u[0].toHTML(l);return f[0]&&(h='('+h+')'),p==="right"?''+wi(this.op)+""+h:h+''+wi(this.op)+""}else if(u.length===2){var g=u[0].toHTML(l),x=u[1].toHTML(l);return f[0]&&(g='('+g+')'),f[1]&&(x='('+x+')'),this.implicit&&this.getIdentifier()==="OperatorNode:multiply"&&a==="hide"?g+''+x:g+''+wi(this.op)+""+x}else{var v=u.map(function(S,D){return S=S.toHTML(l),f[D]&&(S='('+S+')'),S});return u.length>2&&(this.getIdentifier()==="OperatorNode:add"||this.getIdentifier()==="OperatorNode:multiply")?this.implicit&&this.getIdentifier()==="OperatorNode:multiply"&&a==="hide"?v.join(''):v.join(''+wi(this.op)+""):''+wi(this.fn)+'('+v.join(',')+')'}}_toTex(l){var s=l&&l.parenthesis?l.parenthesis:"keep",a=l&&l.implicit?l.implicit:"hide",u=this.args,f=n(this,s,a,u,!0),p=Nr[this.fn];if(p=typeof p>"u"?this.op:p,u.length===1){var h=_d(this,s),g=u[0].toTex(l);return f[0]&&(g="\\left(".concat(g,"\\right)")),h==="right"?p+g:g+p}else if(u.length===2){var x=u[0],v=x.toTex(l);f[0]&&(v="\\left(".concat(v,"\\right)"));var S=u[1],D=S.toTex(l);f[1]&&(D="\\left(".concat(D,"\\right)"));var C;switch(s==="keep"?C=x.getIdentifier():C=x.getContent().getIdentifier(),this.getIdentifier()){case"OperatorNode:divide":return p+"{"+v+"}{"+D+"}";case"OperatorNode:pow":switch(v="{"+v+"}",D="{"+D+"}",C){case"ConditionalNode":case"OperatorNode:divide":v="\\left(".concat(v,"\\right)")}break;case"OperatorNode:multiply":if(this.implicit&&a==="hide")return v+"~"+D}return v+p+D}else if(u.length>2&&(this.getIdentifier()==="OperatorNode:add"||this.getIdentifier()==="OperatorNode:multiply")){var E=u.map(function(M,T){return M=M.toTex(l),f[T]&&(M="\\left(".concat(M,"\\right)")),M});return this.getIdentifier()==="OperatorNode:multiply"&&this.implicit&&a==="hide"?E.join("~"):E.join(p)}else return"\\mathrm{"+this.fn+"}\\left("+u.map(function(M){return M.toTex(l)}).join(",")+"\\right)"}getIdentifier(){return this.type+":"+this.fn}}return Cr(i,"name",ib),i},{isClass:!0,isNode:!0});var ob="ParenthesisNode",Ife=["Node"],GP=$(ob,Ife,e=>{var{Node:t}=e;class r extends t{constructor(i){if(super(),!ir(i))throw new TypeError('Node expected for parameter "content"');this.content=i}get type(){return ob}get isParenthesisNode(){return!0}_compile(i,o){return this.content._compile(i,o)}getContent(){return this.content.getContent()}forEach(i){i(this.content,"content",this)}map(i){var o=i(this.content,"content",this);return new r(o)}clone(){return new r(this.content)}_toString(i){return!i||i&&!i.parenthesis||i&&i.parenthesis==="keep"?"("+this.content.toString(i)+")":this.content.toString(i)}toJSON(){return{mathjs:ob,content:this.content}}static fromJSON(i){return new r(i.content)}_toHTML(i){return!i||i&&!i.parenthesis||i&&i.parenthesis==="keep"?'('+this.content.toHTML(i)+')':this.content.toHTML(i)}_toTex(i){return!i||i&&!i.parenthesis||i&&i.parenthesis==="keep"?"\\left(".concat(this.content.toTex(i),"\\right)"):this.content.toTex(i)}}return Cr(r,"name",ob),r},{isClass:!0,isNode:!0});var ab="RangeNode",kfe=["Node"],YP=$(ab,kfe,e=>{var{Node:t}=e;function r(i,o,l){var s=Tr(i,o,l),a={},u=Tr(i.start,o,l);if(a.start=u!==null&&u<=s||o==="all",i.step){var f=Tr(i.step,o,l);a.step=f!==null&&f<=s||o==="all"}var p=Tr(i.end,o,l);return a.end=p!==null&&p<=s||o==="all",a}class n extends t{constructor(o,l,s){if(super(),!ir(o))throw new TypeError("Node expected");if(!ir(l))throw new TypeError("Node expected");if(s&&!ir(s))throw new TypeError("Node expected");if(arguments.length>3)throw new Error("Too many arguments");this.start=o,this.end=l,this.step=s||null}get type(){return ab}get isRangeNode(){return!0}needsEnd(){var o=this.filter(function(l){return Ir(l)&&l.name==="end"});return o.length>0}_compile(o,l){var s=o.range,a=this.start._compile(o,l),u=this.end._compile(o,l);if(this.step){var f=this.step._compile(o,l);return function(h,g,x){return s(a(h,g,x),u(h,g,x),f(h,g,x))}}else return function(h,g,x){return s(a(h,g,x),u(h,g,x))}}forEach(o){o(this.start,"start",this),o(this.end,"end",this),this.step&&o(this.step,"step",this)}map(o){return new n(this._ifNode(o(this.start,"start",this)),this._ifNode(o(this.end,"end",this)),this.step&&this._ifNode(o(this.step,"step",this)))}clone(){return new n(this.start,this.end,this.step&&this.step)}_toString(o){var l=o&&o.parenthesis?o.parenthesis:"keep",s=r(this,l,o&&o.implicit),a,u=this.start.toString(o);if(s.start&&(u="("+u+")"),a=u,this.step){var f=this.step.toString(o);s.step&&(f="("+f+")"),a+=":"+f}var p=this.end.toString(o);return s.end&&(p="("+p+")"),a+=":"+p,a}toJSON(){return{mathjs:ab,start:this.start,end:this.end,step:this.step}}static fromJSON(o){return new n(o.start,o.end,o.step)}_toHTML(o){var l=o&&o.parenthesis?o.parenthesis:"keep",s=r(this,l,o&&o.implicit),a,u=this.start.toHTML(o);if(s.start&&(u='('+u+')'),a=u,this.step){var f=this.step.toHTML(o);s.step&&(f='('+f+')'),a+=':'+f}var p=this.end.toHTML(o);return s.end&&(p='('+p+')'),a+=':'+p,a}_toTex(o){var l=o&&o.parenthesis?o.parenthesis:"keep",s=r(this,l,o&&o.implicit),a=this.start.toTex(o);if(s.start&&(a="\\left(".concat(a,"\\right)")),this.step){var u=this.step.toTex(o);s.step&&(u="\\left(".concat(u,"\\right)")),a+=":"+u}var f=this.end.toTex(o);return s.end&&(f="\\left(".concat(f,"\\right)")),a+=":"+f,a}}return Cr(n,"name",ab),n},{isClass:!0,isNode:!0});var sb="RelationalNode",Lfe=["Node"],ZP=$(sb,Lfe,e=>{var{Node:t}=e,r={equal:"==",unequal:"!=",smaller:"<",larger:">",smallerEq:"<=",largerEq:">="};class n extends t{constructor(o,l){if(super(),!Array.isArray(o))throw new TypeError("Parameter conditionals must be an array");if(!Array.isArray(l))throw new TypeError("Parameter params must be an array");if(o.length!==l.length-1)throw new TypeError("Parameter params must contain exactly one more element than parameter conditionals");this.conditionals=o,this.params=l}get type(){return sb}get isRelationalNode(){return!0}_compile(o,l){var s=this,a=this.params.map(u=>u._compile(o,l));return function(f,p,h){for(var g,x=a[0](f,p,h),v=0;vo(l,"params["+s+"]",this),this)}map(o){return new n(this.conditionals.slice(),this.params.map((l,s)=>this._ifNode(o(l,"params["+s+"]",this)),this))}clone(){return new n(this.conditionals,this.params)}_toString(o){for(var l=o&&o.parenthesis?o.parenthesis:"keep",s=Tr(this,l,o&&o.implicit),a=this.params.map(function(p,h){var g=Tr(p,l,o&&o.implicit);return l==="all"||g!==null&&g<=s?"("+p.toString(o)+")":p.toString(o)}),u=a[0],f=0;f('+p.toHTML(o)+')':p.toHTML(o)}),u=a[0],f=0;f'+wi(r[this.conditionals[f]])+""+a[f+1];return u}_toTex(o){for(var l=o&&o.parenthesis?o.parenthesis:"keep",s=Tr(this,l,o&&o.implicit),a=this.params.map(function(p,h){var g=Tr(p,l,o&&o.implicit);return l==="all"||g!==null&&g<=s?"\\left("+p.toTex(o)+"\right)":p.toTex(o)}),u=a[0],f=0;f{var{math:t,Unit:r,Node:n}=e;function i(l){return r?r.isValuelessUnit(l):!1}class o extends n{constructor(s){if(super(),typeof s!="string")throw new TypeError('String expected for parameter "name"');this.name=s}get type(){return"SymbolNode"}get isSymbolNode(){return!0}_compile(s,a){var u=this.name;if(a[u]===!0)return function(p,h,g){return nn(h,u)};if(u in s)return function(p,h,g){return p.has(u)?p.get(u):nn(s,u)};var f=i(u);return function(p,h,g){return p.has(u)?p.get(u):f?new r(null,u):o.onUndefinedSymbol(u)}}forEach(s){}map(s){return this.clone()}static onUndefinedSymbol(s){throw new Error("Undefined symbol "+s)}clone(){return new o(this.name)}_toString(s){return this.name}_toHTML(s){var a=wi(this.name);return a==="true"||a==="false"?''+a+"":a==="i"?''+a+"":a==="Infinity"?''+a+"":a==="NaN"?''+a+"":a==="null"?''+a+"":a==="undefined"?''+a+"":''+a+""}toJSON(){return{mathjs:"SymbolNode",name:this.name}}static fromJSON(s){return new o(s.name)}_toTex(s){var a=!1;typeof t[this.name]>"u"&&i(this.name)&&(a=!0);var u=jw(this.name,a);return u[0]==="\\"?u:" "+u}}return o},{isClass:!0,isNode:!0});var ub="FunctionNode",Rfe=["math","Node","SymbolNode"],KP=$(ub,Rfe,e=>{var t,{math:r,Node:n,SymbolNode:i}=e,o=a=>Ht(a,{truncate:78});function l(a,u,f){for(var p="",h=/\$(?:\{([a-z_][a-z_0-9]*)(?:\[([0-9]+)\])?\}|\$)/gi,g=0,x;(x=h.exec(a))!==null;)if(p+=a.substring(g,x.index),g=x.index,x[0]==="$$")p+="$",g++;else{g+=x[0].length;var v=u[x[1]];if(!v)throw new ReferenceError("Template: Property "+x[1]+" does not exist.");if(x[2]===void 0)switch(typeof v){case"string":p+=v;break;case"object":if(ir(v))p+=v.toTex(f);else if(Array.isArray(v))p+=v.map(function(S,D){if(ir(S))return S.toTex(f);throw new TypeError("Template: "+x[1]+"["+D+"] is not a Node.")}).join(",");else throw new TypeError("Template: "+x[1]+" has to be a Node, String or array of Nodes");break;default:throw new TypeError("Template: "+x[1]+" has to be a Node, String or array of Nodes")}else if(ir(v[x[2]]&&v[x[2]]))p+=v[x[2]].toTex(f);else throw new TypeError("Template: "+x[1]+"["+x[2]+"] is not a Node.")}return p+=a.slice(g),p}class s extends n{constructor(u,f){if(super(),typeof u=="string"&&(u=new i(u)),!ir(u))throw new TypeError('Node expected as parameter "fn"');if(!Array.isArray(f)||!f.every(ir))throw new TypeError('Array containing Nodes expected for parameter "args"');this.fn=u,this.args=f||[]}get name(){return this.fn.name||""}get type(){return ub}get isFunctionNode(){return!0}_compile(u,f){var p=this.args.map(F=>F._compile(u,f));if(Ir(this.fn)){var h=this.fn.name;if(f[h]){var D=this.args;return function(I,B,L){var q=nn(B,h);if(typeof q!="function")throw new TypeError("Argument '".concat(h,"' was not a function; received: ").concat(o(q)));if(q.rawArgs)return q(D,u,vp(I,B));var R=p.map(V=>V(I,B,L));return q.apply(q,R)}}else{var g=h in u?nn(u,h):void 0,x=typeof g=="function"&&g.rawArgs===!0,v=F=>{var I;if(F.has(h))I=F.get(h);else if(h in u)I=nn(u,h);else return s.onUndefinedFunction(h);if(typeof I=="function")return I;throw new TypeError("'".concat(h,`' is not a function; its value is: - `).concat(o(I)))};if(x){var S=this.args;return function(I,B,L){var q=v(I);if(q.rawArgs===!0)return q(S,u,vp(I,B));var R=p.map(V=>V(I,B,L));return q(...R)}}else switch(p.length){case 0:return function(I,B,L){var q=v(I);return q()};case 1:return function(I,B,L){var q=v(I),R=p[0];return q(R(I,B,L))};case 2:return function(I,B,L){var q=v(I),R=p[0],V=p[1];return q(R(I,B,L),V(I,B,L))};default:return function(I,B,L){var q=v(I),R=p.map(V=>V(I,B,L));return q(...R)}}}}else if(Mo(this.fn)&&Vo(this.fn.index)&&this.fn.index.isObjectProperty()){var C=this.fn.object._compile(u,f),E=this.fn.index.getObjectProperty(),M=this.args;return function(I,B,L){var q=C(I,B,L),R=nF(q,E);if(R!=null&&R.rawArgs)return R(M,u,vp(I,B));var V=p.map(X=>X(I,B,L));return R.apply(q,V)}}else{var T=this.fn.toString(),N=this.fn._compile(u,f),O=this.args;return function(I,B,L){var q=N(I,B,L);if(typeof q!="function")throw new TypeError("Expression '".concat(T,"' did not evaluate to a function; value is:")+` - `.concat(o(q)));if(q.rawArgs)return q(O,u,vp(I,B));var R=p.map(V=>V(I,B,L));return q.apply(q,R)}}}forEach(u){u(this.fn,"fn",this);for(var f=0;f'+wi(this.fn)+'('+f.join(',')+')'}toTex(u){var f;return u&&typeof u.handler=="object"&&xt(u.handler,this.name)&&(f=u.handler[this.name](this,u)),typeof f<"u"?f:super.toTex(u)}_toTex(u){var f=this.args.map(function(g){return g.toTex(u)}),p;dC[this.name]&&(p=dC[this.name]),r[this.name]&&(typeof r[this.name].toTex=="function"||typeof r[this.name].toTex=="object"||typeof r[this.name].toTex=="string")&&(p=r[this.name].toTex);var h;switch(typeof p){case"function":h=p(this,u);break;case"string":h=l(p,this,u);break;case"object":switch(typeof p[f.length]){case"function":h=p[f.length](this,u);break;case"string":h=l(p[f.length],this,u);break}}return typeof h<"u"?h:l(zP,this,u)}getIdentifier(){return this.type+":"+this.name}}return t=s,Cr(s,"name",ub),Cr(s,"onUndefinedFunction",function(a){throw new Error("Undefined function "+a)}),Cr(s,"fromJSON",function(a){return new t(a.fn,a.args)}),s},{isClass:!0,isNode:!0});var JP="parse",qfe=["typed","numeric","config","AccessorNode","ArrayNode","AssignmentNode","BlockNode","ConditionalNode","ConstantNode","FunctionAssignmentNode","FunctionNode","IndexNode","ObjectNode","OperatorNode","ParenthesisNode","RangeNode","RelationalNode","SymbolNode"],QP=$(JP,qfe,e=>{var{typed:t,numeric:r,config:n,AccessorNode:i,ArrayNode:o,AssignmentNode:l,BlockNode:s,ConditionalNode:a,ConstantNode:u,FunctionAssignmentNode:f,FunctionNode:p,IndexNode:h,ObjectNode:g,OperatorNode:x,ParenthesisNode:v,RangeNode:S,RelationalNode:D,SymbolNode:C}=e,E=t(JP,{string:function(ae){return be(ae,{})},"Array | Matrix":function(ae){return M(ae,{})},"string, Object":function(ae,Le){var He=Le.nodes!==void 0?Le.nodes:{};return be(ae,He)},"Array | Matrix, Object":M});function M(W){var ae=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},Le=ae.nodes!==void 0?ae.nodes:{};return wt(W,function(He){if(typeof He!="string")throw new TypeError("String expected");return be(He,Le)})}var T={NULL:0,DELIMITER:1,NUMBER:2,SYMBOL:3,UNKNOWN:4},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,">>":!0,">>>":!0},O={mod:!0,to:!0,in:!0,and:!0,xor:!0,or:!0,not:!0},F={true:!0,false:!1,null:null,undefined:void 0},I=["NaN","Infinity"],B={'"':'"',"'":"'","\\":"\\","/":"/",b:"\b",f:"\f",n:` + (`+Ht(F,v)+", "+Ht(M,v)+") ==> "+(this._values?Ht(this._values[O],v):"X")}return E},i.prototype.toString=function(){return Ht(this.toArray())},i.prototype.toJSON=function(){return{mathjs:"SparseMatrix",values:this._values,index:this._index,ptr:this._ptr,size:this._size,datatype:this._datatype}},i.prototype.diagonal=function(v){if(v){if(Ct(v)&&(v=v.toNumber()),!Pt(v)||!dt(v))throw new TypeError("The parameter k must be an integer number")}else v=0;var S=v>0?v:0,D=v<0?-v:0,C=this._size[0],E=this._size[1],M=Math.min(C-D,E-S),T=[],N=[],O=[];O[0]=0;for(var F=S;F0?D:0,O=D<0?-D:0,F=v[0],I=v[1],B=Math.min(F-O,I-N),L;if(dr(S)){if(S.length!==B)throw new Error("Invalid value array length");L=function(pe){return S[pe]}}else if(gt(S)){var q=S.size();if(q.length!==1||q[0]!==B)throw new Error("Invalid matrix length");L=function(pe){return S.get([pe])}}else L=function(){return S};for(var R=[],V=[],X=[],U=0;U=0&&H=O||E[I]!==S)){var L=C?C[F]:void 0;E.splice(I,0,S),C&&C.splice(I,0,L),E.splice(I<=F?F+1:F,1),C&&C.splice(I<=F?F+1:F,1);continue}if(I=O||E[F]!==v)){var q=C?C[I]:void 0;E.splice(F,0,v),C&&C.splice(F,0,q),E.splice(F<=I?I+1:I,1),C&&C.splice(F<=I?I+1:I,1)}}},i},{isClass:!0});var $oe="number",Woe=["typed"];function Voe(e){var t=e.match(/(0[box])([0-9a-fA-F]*)\.([0-9a-fA-F]*)/);if(t){var r={"0b":2,"0o":8,"0x":16}[t[1]],n=t[2],i=t[3];return{input:e,radix:r,integerPart:n,fractionalPart:i}}else return null}function Goe(e){for(var t=parseInt(e.integerPart,e.radix),r=0,n=0;n{var{typed:t}=e,r=t("number",{"":function(){return 0},number:function(i){return i},string:function(i){if(i==="NaN")return NaN;var o=Voe(i);if(o)return Goe(o);var l=0,s=i.match(/(0[box][0-9a-fA-F]*)i([0-9]*)/);s&&(l=Number(s[2]),i=s[1]);var a=Number(i);if(isNaN(a))throw new SyntaxError('String "'+i+'" is not a valid number');if(s){if(a>2**l-1)throw new SyntaxError('String "'.concat(i,'" is out of range'));a>=2**(l-1)&&(a=a-2**l)}return a},BigNumber:function(i){return i.toNumber()},bigint:function(i){return Number(i)},Fraction:function(i){return i.valueOf()},Unit:t.referToSelf(n=>i=>{var o=i.clone();return o.value=n(i.value),o}),null:function(i){return 0},"Unit, string | Unit":function(i,o){return i.toNumber(o)},"Array | Matrix":t.referToSelf(n=>i=>yt(i,n))});return r.fromJSON=function(n){return parseFloat(n.value)},r});var Yoe="bigint",Zoe=["typed"],ZI=$(Yoe,Zoe,e=>{var{typed:t}=e,r=t("bigint",{"":function(){return 0n},bigint:function(i){return i},number:function(i){return BigInt(i.toFixed())},BigNumber:function(i){return BigInt(i.round().toString())},Fraction:function(i){return BigInt(i.valueOf().toFixed())},"string | boolean":function(i){return BigInt(i)},null:function(i){return 0n},"Array | Matrix":t.referToSelf(n=>i=>yt(i,n))});return r.fromJSON=function(n){return BigInt(n.value)},r});var XI="string",Xoe=["typed"],KI=$(XI,Xoe,e=>{var{typed:t}=e;return t(XI,{"":function(){return""},number:ks,null:function(n){return"null"},boolean:function(n){return n+""},string:function(n){return n},"Array | Matrix":t.referToSelf(r=>n=>yt(n,r)),any:function(n){return String(n)}})});var JI="boolean",Koe=["typed"],QI=$(JI,Koe,e=>{var{typed:t}=e;return t(JI,{"":function(){return!1},boolean:function(n){return n},number:function(n){return!!n},null:function(n){return!1},BigNumber:function(n){return!n.isZero()},string:function(n){var i=n.toLowerCase();if(i==="true")return!0;if(i==="false")return!1;var o=Number(n);if(n!==""&&!isNaN(o))return!!o;throw new Error('Cannot convert "'+n+'" to a boolean')},"Array | Matrix":t.referToSelf(r=>n=>yt(n,r))})});var Joe="bignumber",Qoe=["typed","BigNumber"],jI=$(Joe,Qoe,e=>{var{typed:t,BigNumber:r}=e;return t("bignumber",{"":function(){return new r(0)},number:function(i){return new r(i+"")},string:function(i){var o=i.match(/(0[box][0-9a-fA-F]*)i([0-9]*)/);if(o){var l=o[2],s=r(o[1]),a=new r(2).pow(Number(l));if(s.gt(a.sub(1)))throw new SyntaxError('String "'.concat(i,'" is out of range'));var u=new r(2).pow(Number(l)-1);return s.gte(u)?s.sub(a):s}return new r(i)},BigNumber:function(i){return i},bigint:function(i){return new r(i.toString())},Unit:t.referToSelf(n=>i=>{var o=i.clone();return o.value=n(i.value),o}),Fraction:function(i){return new r(String(i.n)).div(String(i.d)).times(String(i.s))},null:function(i){return new r(0)},"Array | Matrix":t.referToSelf(n=>i=>yt(i,n))})});var joe="complex",eae=["typed","Complex"],ek=$(joe,eae,e=>{var{typed:t,Complex:r}=e;return t("complex",{"":function(){return r.ZERO},number:function(i){return new r(i,0)},"number, number":function(i,o){return new r(i,o)},"BigNumber, BigNumber":function(i,o){return new r(i.toNumber(),o.toNumber())},Fraction:function(i){return new r(i.valueOf(),0)},Complex:function(i){return i.clone()},string:function(i){return r(i)},null:function(i){return r(0)},Object:function(i){if("re"in i&&"im"in i)return new r(i.re,i.im);if("r"in i&&"phi"in i||"abs"in i&&"arg"in i)return new r(i);throw new Error("Expected object with properties (re and im) or (r and phi) or (abs and arg)")},"Array | Matrix":t.referToSelf(n=>i=>yt(i,n))})});var tae="fraction",rae=["typed","Fraction"],tk=$(tae,rae,e=>{var{typed:t,Fraction:r}=e;return t("fraction",{number:function(i){if(!isFinite(i)||isNaN(i))throw new Error(i+" cannot be represented as a fraction");return new r(i)},string:function(i){return new r(i)},"number, number":function(i,o){return new r(i,o)},"bigint, bigint":function(i,o){return new r(i,o)},null:function(i){return new r(0)},BigNumber:function(i){return new r(i.toString())},bigint:function(i){return new r(i.toString())},Fraction:function(i){return i},Unit:t.referToSelf(n=>i=>{var o=i.clone();return o.value=n(i.value),o}),Object:function(i){return new r(i)},"Array | Matrix":t.referToSelf(n=>i=>yt(i,n))})});var rk="matrix",nae=["typed","Matrix","DenseMatrix","SparseMatrix"],nk=$(rk,nae,e=>{var{typed:t,Matrix:r,DenseMatrix:n,SparseMatrix:i}=e;return t(rk,{"":function(){return o([])},string:function(s){return o([],s)},"string, string":function(s,a){return o([],s,a)},Array:function(s){return o(s)},Matrix:function(s){return o(s,s.storage())},"Array | Matrix, string":o,"Array | Matrix, string, string":o});function o(l,s,a){if(s==="dense"||s==="default"||s===void 0)return new n(l,a);if(s==="sparse")return new i(l,a);throw new TypeError("Unknown matrix type "+JSON.stringify(s)+".")}});var ik="matrixFromFunction",iae=["typed","matrix","isZero"],ok=$(ik,iae,e=>{var{typed:t,matrix:r,isZero:n}=e;return t(ik,{"Array | Matrix, function, string, string":function(l,s,a,u){return i(l,s,a,u)},"Array | Matrix, function, string":function(l,s,a){return i(l,s,a)},"Matrix, function":function(l,s){return i(l,s,"dense")},"Array, function":function(l,s){return i(l,s,"dense").toArray()},"Array | Matrix, string, function":function(l,s,a){return i(l,a,s)},"Array | Matrix, string, string, function":function(l,s,a,u){return i(l,u,s,a)}});function i(o,l,s,a){var u;return a!==void 0?u=r(s,a):u=r(s),u.resize(o),u.forEach(function(f,p){var h=l(p);n(h)||u.set(p,h)}),u}});var ak="matrixFromRows",oae=["typed","matrix","flatten","size"],sk=$(ak,oae,e=>{var{typed:t,matrix:r,flatten:n,size:i}=e;return t(ak,{"...Array":function(a){return o(a)},"...Matrix":function(a){return r(o(a.map(u=>u.toArray())))}});function o(s){if(s.length===0)throw new TypeError("At least one row is needed to construct a matrix.");var a=l(s[0]),u=[];for(var f of s){var p=l(f);if(p!==a)throw new TypeError("The vectors had different length: "+(a|0)+" \u2260 "+(p|0));u.push(n(f))}return u}function l(s){var a=i(s);if(a.length===1)return a[0];if(a.length===2){if(a[0]===1)return a[1];if(a[1]===1)return a[0];throw new TypeError("At least one of the arguments is not a vector.")}else throw new TypeError("Only one- or two-dimensional vectors are supported.")}});var uk="matrixFromColumns",aae=["typed","matrix","flatten","size"],lk=$(uk,aae,e=>{var{typed:t,matrix:r,flatten:n,size:i}=e;return t(uk,{"...Array":function(a){return o(a)},"...Matrix":function(a){return r(o(a.map(u=>u.toArray())))}});function o(s){if(s.length===0)throw new TypeError("At least one column is needed to construct a matrix.");for(var a=l(s[0]),u=[],f=0;f{var{typed:t}=e;return t(fk,{"Unit, Array":function(n,i){return n.splitUnit(i)}})});var pk="unaryMinus",uae=["typed"],mk=$(pk,uae,e=>{var{typed:t}=e;return t(pk,{number:bA,"Complex | BigNumber | Fraction":r=>r.neg(),bigint:r=>-r,Unit:t.referToSelf(r=>n=>{var i=n.clone();return i.value=t.find(r,i.valueType())(n.value),i}),"Array | Matrix":t.referToSelf(r=>n=>yt(n,r,!0))})});var dk="unaryPlus",lae=["typed","config","numeric"],hk=$(dk,lae,e=>{var{typed:t,config:r,numeric:n}=e;return t(dk,{number:DA,Complex:function(o){return o},BigNumber:function(o){return o},bigint:function(o){return o},Fraction:function(o){return o},Unit:function(o){return o.clone()},"Array | Matrix":t.referToSelf(i=>o=>yt(o,i,!0)),boolean:function(o){return n(o?1:0,r.number)},string:function(o){return n(o,fo(o,r))}})});var gk="abs",fae=["typed"],vk=$(gk,fae,e=>{var{typed:t}=e;return t(gk,{number:vA,"Complex | BigNumber | Fraction | Unit":r=>r.abs(),bigint:r=>r<0n?-r:r,"Array | Matrix":t.referToSelf(r=>n=>yt(n,r,!0))})});var xk="apply",cae=["typed","isInteger"],Cd=$(xk,cae,e=>{var{typed:t,isInteger:r}=e;return t(xk,{"Array | Matrix, number | BigNumber, function":function(i,o,l){if(!r(o))throw new TypeError("Integer number expected for dimension");var s=Array.isArray(i)?Ft(i):i.size();if(o<0||o>=s.length)throw new Di(o,s.length);return gt(i)?i.create(pw(i.valueOf(),o,l),i.datatype()):pw(i,o,l)}})});function pw(e,t,r){var n,i,o;if(t<=0)if(Array.isArray(e[0])){for(o=pae(e),i=[],n=0;n{var{typed:t}=e;return t(yk,{"number, number":xA,"Complex, Complex":function(n,i){return n.add(i)},"BigNumber, BigNumber":function(n,i){return n.plus(i)},"bigint, bigint":function(n,i){return n+i},"Fraction, Fraction":function(n,i){return n.add(i)},"Unit, Unit":t.referToSelf(r=>(n,i)=>{if(n.value===null||n.value===void 0)throw new Error("Parameter x contains a unit with undefined value");if(i.value===null||i.value===void 0)throw new Error("Parameter y contains a unit with undefined value");if(!n.equalBase(i))throw new Error("Units do not match");var o=n.clone();return o.value=t.find(r,[o.valueType(),i.valueType()])(o.value,i.value),o.fixPrefix=!1,o})})});var bk="subtractScalar",dae=["typed"],Dk=$(bk,dae,e=>{var{typed:t}=e;return t(bk,{"number, number":yA,"Complex, Complex":function(n,i){return n.sub(i)},"BigNumber, BigNumber":function(n,i){return n.minus(i)},"bigint, bigint":function(n,i){return n-i},"Fraction, Fraction":function(n,i){return n.sub(i)},"Unit, Unit":t.referToSelf(r=>(n,i)=>{if(n.value===null||n.value===void 0)throw new Error("Parameter x contains a unit with undefined value");if(i.value===null||i.value===void 0)throw new Error("Parameter y contains a unit with undefined value");if(!n.equalBase(i))throw new Error("Units do not match");var o=n.clone();return o.value=t.find(r,[o.valueType(),i.valueType()])(o.value,i.value),o.fixPrefix=!1,o})})});var Sk="cbrt",hae=["config","typed","isNegative","unaryMinus","matrix","Complex","BigNumber","Fraction"],Nk=$(Sk,hae,e=>{var{config:t,typed:r,isNegative:n,unaryMinus:i,matrix:o,Complex:l,BigNumber:s,Fraction:a}=e;return r(Sk,{number:Nd,Complex:u,"Complex, boolean":u,BigNumber:function(h){return h.cbrt()},Unit:f});function u(p,h){var g=p.arg()/3,x=p.abs(),v=new l(Nd(x),0).mul(new l(0,g).exp());if(h){var S=[v,new l(Nd(x),0).mul(new l(0,g+Math.PI*2/3).exp()),new l(Nd(x),0).mul(new l(0,g-Math.PI*2/3).exp())];return t.matrix==="Array"?S:o(S)}else return v}function f(p){if(p.value&&vi(p.value)){var h=p.clone();return h.value=1,h=h.pow(1/3),h.value=u(p.value),h}else{var g=n(p.value);g&&(p.value=i(p.value));var x;Ct(p.value)?x=new s(1).div(3):ga(p.value)?x=new a(1,3):x=1/3;var v=p.pow(x);return g&&(v.value=i(v.value)),v}}});var gae="matAlgo11xS0s",vae=["typed","equalScalar"],Ir=$(gae,vae,e=>{var{typed:t,equalScalar:r}=e;return function(i,o,l,s){var a=i._values,u=i._index,f=i._ptr,p=i._size,h=i._datatype;if(!a)throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");var g=p[0],x=p[1],v,S=r,D=0,C=l;typeof h=="string"&&(v=h,S=t.find(r,[v,v]),D=t.convert(0,v),o=t.convert(o,v),C=t.find(l,[v,v]));for(var E=[],M=[],T=[],N=0;N{var{typed:t,DenseMatrix:r}=e;return function(i,o,l,s){var a=i._values,u=i._index,f=i._ptr,p=i._size,h=i._datatype;if(!a)throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");var g=p[0],x=p[1],v,S=l;typeof h=="string"&&(v=h,o=t.convert(o,v),S=t.find(l,[v,v]));for(var D=[],C=[],E=[],M=0;M{var{typed:t}=e;return function(i,o,l,s){var a=i._data,u=i._size,f=i._datatype,p,h=l;typeof f=="string"&&(p=f,o=t.convert(o,p),h=t.find(l,[p,p]));var g=u.length>0?r(h,0,u,u[0],a,o,s):[];return i.createDenseMatrix({data:g,size:_t(u),datatype:p})};function r(n,i,o,l,s,a,u){var f=[];if(i===o.length-1)for(var p=0;p{var{typed:t,config:r,round:n}=e;return t(fC,{number:function(o){return Qr(o,n(o),r.relTol,r.absTol)?n(o):Math.ceil(o)},"number, number":function(o,l){if(Qr(o,n(o,l),r.relTol,r.absTol))return n(o,l);var[s,a]="".concat(o,"e").split("e"),u=Math.ceil(Number("".concat(s,"e").concat(Number(a)+l)));return[s,a]="".concat(u,"e").split("e"),Number("".concat(s,"e").concat(Number(a)-l))}})}),Ek=$(fC,Dae,e=>{var{typed:t,config:r,round:n,matrix:i,equalScalar:o,zeros:l,DenseMatrix:s}=e,a=Ir({typed:t,equalScalar:o}),u=Nr({typed:t,DenseMatrix:s}),f=Yn({typed:t}),p=Sae({typed:t,config:r,round:n});return t("ceil",{number:p.signatures.number,"number,number":p.signatures["number,number"],Complex:function(g){return g.ceil()},"Complex, number":function(g,x){return g.ceil(x)},"Complex, BigNumber":function(g,x){return g.ceil(x.toNumber())},BigNumber:function(g){return vn(g,n(g),r.relTol,r.absTol)?n(g):g.ceil()},"BigNumber, BigNumber":function(g,x){return vn(g,n(g,x),r.relTol,r.absTol)?n(g,x):g.toDecimalPlaces(x.toNumber(),bp.ROUND_CEIL)},Fraction:function(g){return g.ceil()},"Fraction, number":function(g,x){return g.ceil(x)},"Fraction, BigNumber":function(g,x){return g.ceil(x.toNumber())},"Unit, number, Unit":t.referToSelf(h=>function(g,x,v){var S=g.toNumeric(v);return v.multiply(h(S,x))}),"Unit, BigNumber, Unit":t.referToSelf(h=>(g,x,v)=>h(g,x.toNumber(),v)),"Array | Matrix, number | BigNumber, Unit":t.referToSelf(h=>(g,x,v)=>yt(g,S=>h(S,x,v),!0)),"Array | Matrix | Unit, Unit":t.referToSelf(h=>(g,x)=>h(g,0,x)),"Array | Matrix":t.referToSelf(h=>g=>yt(g,h,!0)),"Array, number | BigNumber":t.referToSelf(h=>(g,x)=>yt(g,v=>h(v,x),!0)),"SparseMatrix, number | BigNumber":t.referToSelf(h=>(g,x)=>a(g,x,h,!1)),"DenseMatrix, number | BigNumber":t.referToSelf(h=>(g,x)=>f(g,x,h,!1)),"number | Complex | Fraction | BigNumber, Array":t.referToSelf(h=>(g,x)=>f(i(x),g,h,!0).valueOf()),"number | Complex | Fraction | BigNumber, Matrix":t.referToSelf(h=>(g,x)=>o(g,0)?l(x.size(),x.storage()):x.storage()==="dense"?f(x,g,h,!0):u(x,g,h,!0))})});var Ak="cube",Nae=["typed"],Ck=$(Ak,Nae,e=>{var{typed:t}=e;return t(Ak,{number:SA,Complex:function(n){return n.mul(n).mul(n)},BigNumber:function(n){return n.times(n).times(n)},bigint:function(n){return n*n*n},Fraction:function(n){return n.pow(3)},Unit:function(n){return n.pow(3)}})});var Mk="exp",Eae=["typed"],Tk=$(Mk,Eae,e=>{var{typed:t}=e;return t(Mk,{number:NA,Complex:function(n){return n.exp()},BigNumber:function(n){return n.exp()}})});var _k="expm1",Aae=["typed","Complex"],Ok=$(_k,Aae,e=>{var{typed:t,Complex:r}=e;return t(_k,{number:EA,Complex:function(i){var o=Math.exp(i.re);return new r(o*Math.cos(i.im)-1,o*Math.sin(i.im))},BigNumber:function(i){return i.exp().minus(1)}})});var cC="fix",Cae=["typed","Complex","matrix","ceil","floor","equalScalar","zeros","DenseMatrix"],Mae=$(cC,["typed","ceil","floor"],e=>{var{typed:t,ceil:r,floor:n}=e;return t(cC,{number:function(o){return o>0?n(o):r(o)},"number, number":function(o,l){return o>0?n(o,l):r(o,l)}})}),Fk=$(cC,Cae,e=>{var{typed:t,Complex:r,matrix:n,ceil:i,floor:o,equalScalar:l,zeros:s,DenseMatrix:a}=e,u=Nr({typed:t,DenseMatrix:a}),f=Yn({typed:t}),p=Mae({typed:t,ceil:i,floor:o});return t("fix",{number:p.signatures.number,"number, number | BigNumber":p.signatures["number,number"],Complex:function(g){return new r(g.re>0?Math.floor(g.re):Math.ceil(g.re),g.im>0?Math.floor(g.im):Math.ceil(g.im))},"Complex, number":function(g,x){return new r(g.re>0?o(g.re,x):i(g.re,x),g.im>0?o(g.im,x):i(g.im,x))},"Complex, BigNumber":function(g,x){var v=x.toNumber();return new r(g.re>0?o(g.re,v):i(g.re,v),g.im>0?o(g.im,v):i(g.im,v))},BigNumber:function(g){return g.isNegative()?i(g):o(g)},"BigNumber, number | BigNumber":function(g,x){return g.isNegative()?i(g,x):o(g,x)},Fraction:function(g){return g.s<0n?g.ceil():g.floor()},"Fraction, number | BigNumber":function(g,x){return g.s<0n?i(g,x):o(g,x)},"Unit, number, Unit":t.referToSelf(h=>function(g,x,v){var S=g.toNumeric(v);return v.multiply(h(S,x))}),"Unit, BigNumber, Unit":t.referToSelf(h=>(g,x,v)=>h(g,x.toNumber(),v)),"Array | Matrix, number | BigNumber, Unit":t.referToSelf(h=>(g,x,v)=>yt(g,S=>h(S,x,v),!0)),"Array | Matrix | Unit, Unit":t.referToSelf(h=>(g,x)=>h(g,0,x)),"Array | Matrix":t.referToSelf(h=>g=>yt(g,h,!0)),"Array | Matrix, number | BigNumber":t.referToSelf(h=>(g,x)=>yt(g,v=>h(v,x),!0)),"number | Complex | Fraction | BigNumber, Array":t.referToSelf(h=>(g,x)=>f(n(x),g,h,!0).valueOf()),"number | Complex | Fraction | BigNumber, Matrix":t.referToSelf(h=>(g,x)=>l(g,0)?s(x.size(),x.storage()):x.storage()==="dense"?f(x,g,h,!0):u(x,g,h,!0))})});var pC="floor",Tae=["typed","config","round","matrix","equalScalar","zeros","DenseMatrix"],_ae=$(pC,["typed","config","round"],e=>{var{typed:t,config:r,round:n}=e;return t(pC,{number:function(o){return Qr(o,n(o),r.relTol,r.absTol)?n(o):Math.floor(o)},"number, number":function(o,l){if(Qr(o,n(o,l),r.relTol,r.absTol))return n(o,l);var[s,a]="".concat(o,"e").split("e"),u=Math.floor(Number("".concat(s,"e").concat(Number(a)+l)));return[s,a]="".concat(u,"e").split("e"),Number("".concat(s,"e").concat(Number(a)-l))}})}),mw=$(pC,Tae,e=>{var{typed:t,config:r,round:n,matrix:i,equalScalar:o,zeros:l,DenseMatrix:s}=e,a=Ir({typed:t,equalScalar:o}),u=Nr({typed:t,DenseMatrix:s}),f=Yn({typed:t}),p=_ae({typed:t,config:r,round:n});return t("floor",{number:p.signatures.number,"number,number":p.signatures["number,number"],Complex:function(g){return g.floor()},"Complex, number":function(g,x){return g.floor(x)},"Complex, BigNumber":function(g,x){return g.floor(x.toNumber())},BigNumber:function(g){return vn(g,n(g),r.relTol,r.absTol)?n(g):g.floor()},"BigNumber, BigNumber":function(g,x){return vn(g,n(g,x),r.relTol,r.absTol)?n(g,x):g.toDecimalPlaces(x.toNumber(),bp.ROUND_FLOOR)},Fraction:function(g){return g.floor()},"Fraction, number":function(g,x){return g.floor(x)},"Fraction, BigNumber":function(g,x){return g.floor(x.toNumber())},"Unit, number, Unit":t.referToSelf(h=>function(g,x,v){var S=g.toNumeric(v);return v.multiply(h(S,x))}),"Unit, BigNumber, Unit":t.referToSelf(h=>(g,x,v)=>h(g,x.toNumber(),v)),"Array | Matrix, number | BigNumber, Unit":t.referToSelf(h=>(g,x,v)=>yt(g,S=>h(S,x,v),!0)),"Array | Matrix | Unit, Unit":t.referToSelf(h=>(g,x)=>h(g,0,x)),"Array | Matrix":t.referToSelf(h=>g=>yt(g,h,!0)),"Array, number | BigNumber":t.referToSelf(h=>(g,x)=>yt(g,v=>h(v,x),!0)),"SparseMatrix, number | BigNumber":t.referToSelf(h=>(g,x)=>a(g,x,h,!1)),"DenseMatrix, number | BigNumber":t.referToSelf(h=>(g,x)=>f(g,x,h,!1)),"number | Complex | Fraction | BigNumber, Array":t.referToSelf(h=>(g,x)=>f(i(x),g,h,!0).valueOf()),"number | Complex | Fraction | BigNumber, Matrix":t.referToSelf(h=>(g,x)=>o(g,0)?l(x.size(),x.storage()):x.storage()==="dense"?f(x,g,h,!0):u(x,g,h,!0))})});var Oae="matAlgo02xDS0",Fae=["typed","equalScalar"],Zn=$(Oae,Fae,e=>{var{typed:t,equalScalar:r}=e;return function(i,o,l,s){var a=i._data,u=i._size,f=i._datatype||i.getDataType(),p=o._values,h=o._index,g=o._ptr,x=o._size,v=o._datatype||o._data===void 0?o._datatype:o.getDataType();if(u.length!==x.length)throw new $t(u.length,x.length);if(u[0]!==x[0]||u[1]!==x[1])throw new RangeError("Dimension mismatch. Matrix A ("+u+") must match Matrix B ("+x+")");if(!p)throw new Error("Cannot perform operation on Dense Matrix and Pattern Sparse Matrix");var S=u[0],D=u[1],C,E=r,M=0,T=l;typeof f=="string"&&f===v&&f!=="mixed"&&(C=f,E=t.find(r,[C,C]),M=t.convert(0,C),T=t.find(l,[C,C]));for(var N=[],O=[],F=[],I=0;I{var{typed:t}=e;return function(n,i,o,l){var s=n._data,a=n._size,u=n._datatype||n.getDataType(),f=i._values,p=i._index,h=i._ptr,g=i._size,x=i._datatype||i._data===void 0?i._datatype:i.getDataType();if(a.length!==g.length)throw new $t(a.length,g.length);if(a[0]!==g[0]||a[1]!==g[1])throw new RangeError("Dimension mismatch. Matrix A ("+a+") must match Matrix B ("+g+")");if(!f)throw new Error("Cannot perform operation on Dense Matrix and Pattern Sparse Matrix");var v=a[0],S=a[1],D,C=0,E=o;typeof u=="string"&&u===x&&u!=="mixed"&&(D=u,C=t.convert(0,D),E=t.find(o,[D,D]));for(var M=[],T=0;T{var{typed:t,equalScalar:r}=e;return function(i,o,l){var s=i._values,a=i._index,u=i._ptr,f=i._size,p=i._datatype||i._data===void 0?i._datatype:i.getDataType(),h=o._values,g=o._index,x=o._ptr,v=o._size,S=o._datatype||o._data===void 0?o._datatype:o.getDataType();if(f.length!==v.length)throw new $t(f.length,v.length);if(f[0]!==v[0]||f[1]!==v[1])throw new RangeError("Dimension mismatch. Matrix A ("+f+") must match Matrix B ("+v+")");var D=f[0],C=f[1],E,M=r,T=0,N=l;typeof p=="string"&&p===S&&p!=="mixed"&&(E=p,M=t.find(r,[E,E]),T=t.convert(0,E),N=t.find(l,[E,E]));var O=s&&h?[]:void 0,F=[],I=[],B=O?[]:void 0,L=O?[]:void 0,q=[],R=[],V,X,U,H;for(X=0;X{var{typed:t}=e;return function(i,o,l){var s=i._data,a=i._size,u=i._datatype,f=o._data,p=o._size,h=o._datatype,g=[];if(a.length!==p.length)throw new $t(a.length,p.length);for(var x=0;x0?r(S,0,g,g[0],s,f):[];return i.createDenseMatrix({data:D,size:g,datatype:v})};function r(n,i,o,l,s,a){var u=[];if(i===o.length-1)for(var f=0;fqae(n,r))}function qae(e,t){return Vo(e.size(),t)?e:e.create(ku(e.valueOf(),t),e.datatype())}var zae="matrixAlgorithmSuite",Uae=["typed","matrix"],Xt=$(zae,Uae,e=>{var{typed:t,matrix:r}=e,n=Ik({typed:t}),i=Yn({typed:t});return function(l){var s=l.elop,a=l.SD||l.DS,u;s?(u={"DenseMatrix, DenseMatrix":(g,x)=>n(...Si(g,x),s),"Array, Array":(g,x)=>n(...Si(r(g),r(x)),s).valueOf(),"Array, DenseMatrix":(g,x)=>n(...Si(r(g),x),s),"DenseMatrix, Array":(g,x)=>n(...Si(g,r(x)),s)},l.SS&&(u["SparseMatrix, SparseMatrix"]=(g,x)=>l.SS(...Si(g,x),s,!1)),l.DS&&(u["DenseMatrix, SparseMatrix"]=(g,x)=>l.DS(...Si(g,x),s,!1),u["Array, SparseMatrix"]=(g,x)=>l.DS(...Si(r(g),x),s,!1)),a&&(u["SparseMatrix, DenseMatrix"]=(g,x)=>a(...Si(x,g),s,!0),u["SparseMatrix, Array"]=(g,x)=>a(...Si(r(x),g),s,!0))):(u={"DenseMatrix, DenseMatrix":t.referToSelf(g=>(x,v)=>n(...Si(x,v),g)),"Array, Array":t.referToSelf(g=>(x,v)=>n(...Si(r(x),r(v)),g).valueOf()),"Array, DenseMatrix":t.referToSelf(g=>(x,v)=>n(...Si(r(x),v),g)),"DenseMatrix, Array":t.referToSelf(g=>(x,v)=>n(...Si(x,r(v)),g))},l.SS&&(u["SparseMatrix, SparseMatrix"]=t.referToSelf(g=>(x,v)=>l.SS(...Si(x,v),g,!1))),l.DS&&(u["DenseMatrix, SparseMatrix"]=t.referToSelf(g=>(x,v)=>l.DS(...Si(x,v),g,!1)),u["Array, SparseMatrix"]=t.referToSelf(g=>(x,v)=>l.DS(...Si(r(x),v),g,!1))),a&&(u["SparseMatrix, DenseMatrix"]=t.referToSelf(g=>(x,v)=>a(...Si(v,x),g,!0)),u["SparseMatrix, Array"]=t.referToSelf(g=>(x,v)=>a(...Si(r(v),x),g,!0))));var f=l.scalar||"any",p=l.Ds||l.Ss;p&&(s?(u["DenseMatrix,"+f]=(g,x)=>i(g,x,s,!1),u[f+", DenseMatrix"]=(g,x)=>i(x,g,s,!0),u["Array,"+f]=(g,x)=>i(r(g),x,s,!1).valueOf(),u[f+", Array"]=(g,x)=>i(r(x),g,s,!0).valueOf()):(u["DenseMatrix,"+f]=t.referToSelf(g=>(x,v)=>i(x,v,g,!1)),u[f+", DenseMatrix"]=t.referToSelf(g=>(x,v)=>i(v,x,g,!0)),u["Array,"+f]=t.referToSelf(g=>(x,v)=>i(r(x),v,g,!1).valueOf()),u[f+", Array"]=t.referToSelf(g=>(x,v)=>i(r(v),x,g,!0).valueOf())));var h=l.sS!==void 0?l.sS:l.Ss;return s?(l.Ss&&(u["SparseMatrix,"+f]=(g,x)=>l.Ss(g,x,s,!1)),h&&(u[f+", SparseMatrix"]=(g,x)=>h(x,g,s,!0))):(l.Ss&&(u["SparseMatrix,"+f]=t.referToSelf(g=>(x,v)=>l.Ss(x,v,g,!1))),h&&(u[f+", SparseMatrix"]=t.referToSelf(g=>(x,v)=>h(v,x,g,!0)))),s&&s.signatures&&z1(u,s.signatures),u}});var kk="mod",Hae=["typed","config","round","matrix","equalScalar","zeros","DenseMatrix","concat"],dw=$(kk,Hae,e=>{var{typed:t,config:r,round:n,matrix:i,equalScalar:o,zeros:l,DenseMatrix:s,concat:a}=e,u=mw({typed:t,config:r,round:n,matrix:i,equalScalar:o,zeros:l,DenseMatrix:s}),f=Zn({typed:t,equalScalar:o}),p=Yr({typed:t}),h=tc({typed:t,equalScalar:o}),g=Ir({typed:t,equalScalar:o}),x=Nr({typed:t,DenseMatrix:s}),v=Xt({typed:t,matrix:i,concat:a});return t(kk,{"number, number":S,"BigNumber, BigNumber":function(C,E){return E.isZero()?C:C.sub(E.mul(u(C.div(E))))},"bigint, bigint":function(C,E){if(E===0n)return C;if(C<0){var M=C%E;return M===0n?M:M+E}return C%E},"Fraction, Fraction":function(C,E){return E.equals(0)?C:C.sub(E.mul(u(C.div(E))))}},v({SS:h,DS:p,SD:f,Ss:g,sS:x}));function S(D,C){return C===0?D:D-C*u(D/C)}});var $ae="matAlgo01xDSid",Wae=["typed"],ho=$($ae,Wae,e=>{var{typed:t}=e;return function(n,i,o,l){var s=n._data,a=n._size,u=n._datatype||n.getDataType(),f=i._values,p=i._index,h=i._ptr,g=i._size,x=i._datatype||i._data===void 0?i._datatype:i.getDataType();if(a.length!==g.length)throw new $t(a.length,g.length);if(a[0]!==g[0]||a[1]!==g[1])throw new RangeError("Dimension mismatch. Matrix A ("+a+") must match Matrix B ("+g+")");if(!f)throw new Error("Cannot perform operation on Dense Matrix and Pattern Sparse Matrix");var v=a[0],S=a[1],D=typeof u=="string"&&u!=="mixed"&&u===x?u:void 0,C=D?t.find(o,[D,D]):o,E,M,T=[];for(E=0;E{var{typed:t,equalScalar:r}=e;return function(i,o,l){var s=i._values,a=i._index,u=i._ptr,f=i._size,p=i._datatype||i._data===void 0?i._datatype:i.getDataType(),h=o._values,g=o._index,x=o._ptr,v=o._size,S=o._datatype||o._data===void 0?o._datatype:o.getDataType();if(f.length!==v.length)throw new $t(f.length,v.length);if(f[0]!==v[0]||f[1]!==v[1])throw new RangeError("Dimension mismatch. Matrix A ("+f+") must match Matrix B ("+v+")");var D=f[0],C=f[1],E,M=r,T=0,N=l;typeof p=="string"&&p===S&&p!=="mixed"&&(E=p,M=t.find(r,[E,E]),T=t.convert(0,E),N=t.find(l,[E,E]));var O=s&&h?[]:void 0,F=[],I=[],B=s&&h?[]:void 0,L=s&&h?[]:void 0,q=[],R=[],V,X,U,H,ee;for(X=0;X{var{typed:t,DenseMatrix:r}=e;return function(i,o,l,s){var a=i._values,u=i._index,f=i._ptr,p=i._size,h=i._datatype;if(!a)throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");var g=p[0],x=p[1],v,S=l;typeof h=="string"&&(v=h,o=t.convert(o,v),S=t.find(l,[v,v]));for(var D=[],C=[],E=[],M=0;MArray.isArray(t))}var Pk=$(Lk,Xae,e=>{var{typed:t,matrix:r,config:n,round:i,equalScalar:o,zeros:l,BigNumber:s,DenseMatrix:a,concat:u}=e,f=dw({typed:t,config:n,round:i,matrix:r,equalScalar:o,zeros:l,DenseMatrix:a,concat:u}),p=ho({typed:t}),h=Md({typed:t,equalScalar:o}),g=Xo({typed:t,DenseMatrix:a}),x=Xt({typed:t,matrix:r,concat:u});return t(Lk,{"number, number":v,"BigNumber, BigNumber":S,"Fraction, Fraction":(D,C)=>D.gcd(C)},x({SS:h,DS:p,Ss:g}),{[Kae]:t.referToSelf(D=>(C,E,M)=>{for(var T=D(C,E),N=0;NC=>{if(C.length===1&&Array.isArray(C[0])&&Bk(C[0]))return D(...C[0]);if(Bk(C))return D(...C);throw new wa("gcd() supports only 1d matrices!")}),Matrix:t.referToSelf(D=>C=>D(C.toArray()))});function v(D,C){if(!dt(D)||!dt(C))throw new Error("Parameters in function gcd must be integer numbers");for(var E;C!==0;)E=f(D,C),D=C,C=E;return D<0?-D:D}function S(D,C){if(!D.isInt()||!C.isInt())throw new Error("Parameters in function gcd must be integer numbers");for(var E=new s(0);!C.isZero();){var M=f(D,C);D=C,C=M}return D.lt(E)?D.neg():D}});var Jae="matAlgo06xS0S0",Qae=["typed","equalScalar"],rc=$(Jae,Qae,e=>{var{typed:t,equalScalar:r}=e;return function(i,o,l){var s=i._values,a=i._size,u=i._datatype||i._data===void 0?i._datatype:i.getDataType(),f=o._values,p=o._size,h=o._datatype||o._data===void 0?o._datatype:o.getDataType();if(a.length!==p.length)throw new $t(a.length,p.length);if(a[0]!==p[0]||a[1]!==p[1])throw new RangeError("Dimension mismatch. Matrix A ("+a+") must match Matrix B ("+p+")");var g=a[0],x=a[1],v,S=r,D=0,C=l;typeof u=="string"&&u===h&&u!=="mixed"&&(v=u,S=t.find(r,[v,v]),D=t.convert(0,v),C=t.find(l,[v,v]));for(var E=s&&f?[]:void 0,M=[],T=[],N=E?[]:void 0,O=[],F=[],I=0;I{var{typed:t,matrix:r,equalScalar:n,concat:i}=e,o=Zn({typed:t,equalScalar:n}),l=rc({typed:t,equalScalar:n}),s=Ir({typed:t,equalScalar:n}),a=Xt({typed:t,matrix:r,concat:i}),u="number | BigNumber | Fraction | Matrix | Array",f={};return f["".concat(u,", ").concat(u,", ...").concat(u)]=t.referToSelf(h=>(g,x,v)=>{for(var S=h(g,x),D=0;Dh.lcm(g)},a({SS:l,DS:o,Ss:s}),f);function p(h,g){if(!h.isInt()||!g.isInt())throw new Error("Parameters in function lcm must be integer numbers");if(h.isZero())return h;if(g.isZero())return g;for(var x=h.times(g);!g.isZero();){var v=g;g=h.mod(v),h=v}return x.div(h).abs()}});var zk="log10",ese=["typed","config","Complex"],Uk=$(zk,ese,e=>{var{typed:t,config:r,Complex:n}=e;return t(zk,{number:function(o){return o>=0||r.predictable?CA(o):new n(o,0).log().div(Math.LN10)},Complex:function(o){return new n(o).log().div(Math.LN10)},BigNumber:function(o){return!o.isNegative()||r.predictable?o.log():new n(o.toNumber(),0).log().div(Math.LN10)},"Array | Matrix":t.referToSelf(i=>o=>yt(o,i))})});var Hk="log2",tse=["typed","config","Complex"],$k=$(Hk,tse,e=>{var{typed:t,config:r,Complex:n}=e;return t(Hk,{number:function(l){return l>=0||r.predictable?MA(l):i(new n(l,0))},Complex:i,BigNumber:function(l){return!l.isNegative()||r.predictable?l.log(2):i(new n(l.toNumber(),0))},"Array | Matrix":t.referToSelf(o=>l=>yt(l,o))});function i(o){var l=Math.sqrt(o.re*o.re+o.im*o.im);return new n(Math.log2?Math.log2(l):Math.log(l)/Math.LN2,Math.atan2(o.im,o.re)/Math.LN2)}});var rse="multiplyScalar",nse=["typed"],Wk=$(rse,nse,e=>{var{typed:t}=e;return t("multiplyScalar",{"number, number":wA,"Complex, Complex":function(n,i){return n.mul(i)},"BigNumber, BigNumber":function(n,i){return n.times(i)},"bigint, bigint":function(n,i){return n*i},"Fraction, Fraction":function(n,i){return n.mul(i)},"number | Fraction | BigNumber | Complex, Unit":(r,n)=>n.multiply(r),"Unit, number | Fraction | BigNumber | Complex | Unit":(r,n)=>r.multiply(n)})});var Vk="multiply",ise=["typed","matrix","addScalar","multiplyScalar","equalScalar","dot"],Gk=$(Vk,ise,e=>{var{typed:t,matrix:r,addScalar:n,multiplyScalar:i,equalScalar:o,dot:l}=e,s=Ir({typed:t,equalScalar:o}),a=Yn({typed:t});function u(T,N){switch(T.length){case 1:switch(N.length){case 1:if(T[0]!==N[0])throw new RangeError("Dimension mismatch in multiplication. Vectors must have the same length");break;case 2:if(T[0]!==N[0])throw new RangeError("Dimension mismatch in multiplication. Vector length ("+T[0]+") must match Matrix rows ("+N[0]+")");break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix B has "+N.length+" dimensions)")}break;case 2:switch(N.length){case 1:if(T[1]!==N[0])throw new RangeError("Dimension mismatch in multiplication. Matrix columns ("+T[1]+") must match Vector length ("+N[0]+")");break;case 2:if(T[1]!==N[0])throw new RangeError("Dimension mismatch in multiplication. Matrix A columns ("+T[1]+") must match Matrix B rows ("+N[0]+")");break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix B has "+N.length+" dimensions)")}break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix A has "+T.length+" dimensions)")}}function f(T,N,O){if(O===0)throw new Error("Cannot multiply two empty vectors");return l(T,N)}function p(T,N){if(N.storage()!=="dense")throw new Error("Support for SparseMatrix not implemented");return h(T,N)}function h(T,N){var O=T._data,F=T._size,I=T._datatype||T.getDataType(),B=N._data,L=N._size,q=N._datatype||N.getDataType(),R=F[0],V=L[1],X,U=n,H=i;I&&q&&I===q&&typeof I=="string"&&I!=="mixed"&&(X=I,U=t.find(n,[X,X]),H=t.find(i,[X,X]));for(var ee=[],Z=0;ZMe)for(var ne=0,fe=0;fe(N,O)=>{u(Ft(N),Ft(O));var F=T(r(N),r(O));return gt(F)?F.valueOf():F}),"Matrix, Matrix":function(N,O){var F=N.size(),I=O.size();return u(F,I),F.length===1?I.length===1?f(N,O,F[0]):p(N,O):I.length===1?g(N,O):x(N,O)},"Matrix, Array":t.referTo("Matrix,Matrix",T=>(N,O)=>T(N,r(O))),"Array, Matrix":t.referToSelf(T=>(N,O)=>T(r(N,O.storage()),O)),"SparseMatrix, any":function(N,O){return s(N,O,i,!1)},"DenseMatrix, any":function(N,O){return a(N,O,i,!1)},"any, SparseMatrix":function(N,O){return s(O,N,i,!0)},"any, DenseMatrix":function(N,O){return a(O,N,i,!0)},"Array, any":function(N,O){return a(r(N),O,i,!1).valueOf()},"any, Array":function(N,O){return a(r(O),N,i,!0).valueOf()},"any, any":i,"any, any, ...any":t.referToSelf(T=>(N,O,F)=>{for(var I=T(N,O),B=0;B{var{typed:t,matrix:r,equalScalar:n,BigNumber:i,concat:o}=e,l=ho({typed:t}),s=Zn({typed:t,equalScalar:n}),a=rc({typed:t,equalScalar:n}),u=Ir({typed:t,equalScalar:n}),f=Xt({typed:t,matrix:r,concat:o});function p(){throw new Error("Complex number not supported in function nthRoot. Use nthRoots instead.")}return t(Yk,{number:TA,"number, number":TA,BigNumber:g=>h(g,new i(2)),"BigNumber, BigNumber":h,Complex:p,"Complex, number":p,Array:t.referTo("DenseMatrix,number",g=>x=>g(r(x),2).valueOf()),DenseMatrix:t.referTo("DenseMatrix,number",g=>x=>g(x,2)),SparseMatrix:t.referTo("SparseMatrix,number",g=>x=>g(x,2)),"SparseMatrix, SparseMatrix":t.referToSelf(g=>(x,v)=>{if(v.density()===1)return a(x,v,g);throw new Error("Root must be non-zero")}),"DenseMatrix, SparseMatrix":t.referToSelf(g=>(x,v)=>{if(v.density()===1)return l(x,v,g,!1);throw new Error("Root must be non-zero")}),"Array, SparseMatrix":t.referTo("DenseMatrix,SparseMatrix",g=>(x,v)=>g(r(x),v)),"number | BigNumber, SparseMatrix":t.referToSelf(g=>(x,v)=>{if(v.density()===1)return u(v,x,g,!0);throw new Error("Root must be non-zero")})},f({scalar:"number | BigNumber",SD:s,Ss:u,sS:!1}));function h(g,x){var v=i.precision,S=i.clone({precision:v+2}),D=new i(0),C=new S(1),E=x.isNegative();if(E&&(x=x.neg()),x.isZero())throw new Error("Root must be non-zero");if(g.isNegative()&&!x.abs().mod(2).equals(1))throw new Error("Root must be odd when a is negative.");if(g.isZero())return E?new S(1/0):0;if(!g.isFinite())return E?D:g;var M=g.abs().pow(C.div(x));return M=g.isNeg()?M.neg():M,new i((E?C.div(M):M).toPrecision(v))}});var Xk="sign",ase=["typed","BigNumber","Fraction","complex"],Kk=$(Xk,ase,e=>{var{typed:t,BigNumber:r,complex:n,Fraction:i}=e;return t(Xk,{number:sw,Complex:function(l){return l.im===0?n(sw(l.re)):l.sign()},BigNumber:function(l){return new r(l.cmp(0))},bigint:function(l){return l>0n?1n:l<0n?-1n:0n},Fraction:function(l){return new i(l.s)},"Array | Matrix":t.referToSelf(o=>l=>yt(l,o,!0)),Unit:t.referToSelf(o=>l=>{if(!l._isDerived()&&l.units[0].unit.offset!==0)throw new TypeError("sign is ambiguous for units with offset");return t.find(o,l.valueType())(l.value)})})});var sse="sqrt",use=["config","typed","Complex"],Jk=$(sse,use,e=>{var{config:t,typed:r,Complex:n}=e;return r("sqrt",{number:i,Complex:function(l){return l.sqrt()},BigNumber:function(l){return!l.isNegative()||t.predictable?l.sqrt():i(l.toNumber())},Unit:function(l){return l.pow(.5)}});function i(o){return isNaN(o)?NaN:o>=0||t.predictable?Math.sqrt(o):new n(o,0).sqrt()}});var Qk="square",lse=["typed"],jk=$(Qk,lse,e=>{var{typed:t}=e;return t(Qk,{number:_A,Complex:function(n){return n.mul(n)},BigNumber:function(n){return n.times(n)},bigint:function(n){return n*n},Fraction:function(n){return n.mul(n)},Unit:function(n){return n.pow(2)}})});var e5="subtract",fse=["typed","matrix","equalScalar","subtractScalar","unaryMinus","DenseMatrix","concat"],t5=$(e5,fse,e=>{var{typed:t,matrix:r,equalScalar:n,subtractScalar:i,unaryMinus:o,DenseMatrix:l,concat:s}=e,a=ho({typed:t}),u=Yr({typed:t}),f=tc({typed:t,equalScalar:n}),p=Xo({typed:t,DenseMatrix:l}),h=Nr({typed:t,DenseMatrix:l}),g=Xt({typed:t,matrix:r,concat:s});return t(e5,{"any, any":i},g({elop:i,SS:f,DS:a,SD:u,Ss:h,sS:p}))});var r5="xgcd",cse=["typed","config","matrix","BigNumber"],n5=$(r5,cse,e=>{var{typed:t,config:r,matrix:n,BigNumber:i}=e;return t(r5,{"number, number":function(s,a){var u=OA(s,a);return r.matrix==="Array"?u:n(u)},"BigNumber, BigNumber":o});function o(l,s){var a,u,f,p=new i(0),h=new i(1),g=p,x=h,v=h,S=p;if(!l.isInt()||!s.isInt())throw new Error("Parameters in function xgcd must be integer numbers");for(;!s.isZero();)u=l.div(s).floor(),f=l.mod(s),a=g,g=x.minus(u.times(g)),x=a,a=v,v=S.minus(u.times(v)),S=a,l=s,s=f;var D;return l.lt(p)?D=[l.neg(),x.neg(),S.neg()]:D=[l,l.isZero()?0:x,S],r.matrix==="Array"?D:n(D)}});var i5="invmod",pse=["typed","config","BigNumber","xgcd","equal","smaller","mod","add","isInteger"],o5=$(i5,pse,e=>{var{typed:t,config:r,BigNumber:n,xgcd:i,equal:o,smaller:l,mod:s,add:a,isInteger:u}=e;return t(i5,{"number, number":f,"BigNumber, BigNumber":f});function f(p,h){if(!u(p)||!u(h))throw new Error("Parameters in function invmod must be integer numbers");if(p=s(p,h),o(h,0))throw new Error("Divisor must be non zero");var g=i(p,h);g=g.valueOf();var[x,v]=g;return o(x,n(1))?(v=s(v,h),l(v,n(0))&&(v=a(v,h)),v):NaN}});var mse="matAlgo09xS0Sf",dse=["typed","equalScalar"],hw=$(mse,dse,e=>{var{typed:t,equalScalar:r}=e;return function(i,o,l){var s=i._values,a=i._index,u=i._ptr,f=i._size,p=i._datatype||i._data===void 0?i._datatype:i.getDataType(),h=o._values,g=o._index,x=o._ptr,v=o._size,S=o._datatype||o._data===void 0?o._datatype:o.getDataType();if(f.length!==v.length)throw new $t(f.length,v.length);if(f[0]!==v[0]||f[1]!==v[1])throw new RangeError("Dimension mismatch. Matrix A ("+f+") must match Matrix B ("+v+")");var D=f[0],C=f[1],E,M=r,T=0,N=l;typeof p=="string"&&p===S&&p!=="mixed"&&(E=p,M=t.find(r,[E,E]),T=t.convert(0,E),N=t.find(l,[E,E]));var O=s&&h?[]:void 0,F=[],I=[],B=O?[]:void 0,L=[],q,R,V,X,U;for(R=0;R{var{typed:t,matrix:r,equalScalar:n,multiplyScalar:i,concat:o}=e,l=Zn({typed:t,equalScalar:n}),s=hw({typed:t,equalScalar:n}),a=Ir({typed:t,equalScalar:n}),u=Xt({typed:t,matrix:r,concat:o});return t(a5,u({elop:i,SS:s,DS:l,Ss:a}))});function u5(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error("Integers expected in function bitAnd");var r=e.constructor;if(e.isNaN()||t.isNaN())return new r(NaN);if(e.isZero()||t.eq(-1)||e.eq(t))return e;if(t.isZero()||e.eq(-1))return t;if(!e.isFinite()||!t.isFinite()){if(!e.isFinite()&&!t.isFinite())return e.isNegative()===t.isNegative()?e:new r(0);if(!e.isFinite())return t.isNegative()?e:e.isNegative()?new r(0):t;if(!t.isFinite())return e.isNegative()?t:t.isNegative()?new r(0):e}return dC(e,t,function(n,i){return n&i})}function Td(e){if(e.isFinite()&&!e.isInteger())throw new Error("Integer expected in function bitNot");var t=e.constructor,r=t.precision;t.config({precision:1e9});var n=e.plus(new t(1));return n.s=-n.s||null,t.config({precision:r}),n}function l5(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error("Integers expected in function bitOr");var r=e.constructor;if(e.isNaN()||t.isNaN())return new r(NaN);var n=new r(-1);return e.isZero()||t.eq(n)||e.eq(t)?t:t.isZero()||e.eq(n)?e:!e.isFinite()||!t.isFinite()?!e.isFinite()&&!e.isNegative()&&t.isNegative()||e.isNegative()&&!t.isNegative()&&!t.isFinite()?n:e.isNegative()&&t.isNegative()?e.isFinite()?e:t:e.isFinite()?t:e:dC(e,t,function(i,o){return i|o})}function dC(e,t,r){var n=e.constructor,i,o,l=+(e.s<0),s=+(t.s<0);if(l){i=gw(Td(e));for(var a=0;a0;)r(f[--g],p[--x])===v&&(S=S.plus(D)),D=D.times(C);for(;x>0;)r(h,p[--x])===v&&(S=S.plus(D)),D=D.times(C);return n.config({precision:E}),v===0&&(S.s=-S.s),S}function gw(e){for(var t=e.d,r=t[0]+"",n=1;n0)if(++s>u)for(s-=u;s--;)a+="0";else s1&&((f[g+1]===null||f[g+1]===void 0)&&(f[g+1]=0),f[g+1]+=f[g]>>1,f[g]&=1)}return f.reverse()}function f5(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error("Integers expected in function bitXor");var r=e.constructor;if(e.isNaN()||t.isNaN())return new r(NaN);if(e.isZero())return t;if(t.isZero())return e;if(e.eq(t))return new r(0);var n=new r(-1);return e.eq(n)?Td(t):t.eq(n)?Td(e):!e.isFinite()||!t.isFinite()?!e.isFinite()&&!t.isFinite()?n:new r(e.isNegative()===t.isNegative()?1/0:-1/0):dC(e,t,function(i,o){return i^o})}function c5(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error("Integers expected in function leftShift");var r=e.constructor;return e.isNaN()||t.isNaN()||t.isNegative()&&!t.isZero()?new r(NaN):e.isZero()||t.isZero()?e:!e.isFinite()&&!t.isFinite()?new r(NaN):t.lt(55)?e.times(Math.pow(2,t.toNumber())+""):e.times(new r(2).pow(t))}function p5(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error("Integers expected in function rightArithShift");var r=e.constructor;return e.isNaN()||t.isNaN()||t.isNegative()&&!t.isZero()?new r(NaN):e.isZero()||t.isZero()?e:t.isFinite()?t.lt(55)?e.div(Math.pow(2,t.toNumber())+"").floor():e.div(new r(2).pow(t)).floor():e.isNegative()?new r(-1):e.isFinite()?new r(0):new r(NaN)}var m5="bitAnd",gse=["typed","matrix","equalScalar","concat"],vw=$(m5,gse,e=>{var{typed:t,matrix:r,equalScalar:n,concat:i}=e,o=Zn({typed:t,equalScalar:n}),l=rc({typed:t,equalScalar:n}),s=Ir({typed:t,equalScalar:n}),a=Xt({typed:t,matrix:r,concat:i});return t(m5,{"number, number":IA,"BigNumber, BigNumber":u5,"bigint, bigint":(u,f)=>u&f},a({SS:l,DS:o,Ss:s}))});var d5="bitNot",vse=["typed"],h5=$(d5,vse,e=>{var{typed:t}=e;return t(d5,{number:kA,BigNumber:Td,bigint:r=>~r,"Array | Matrix":t.referToSelf(r=>n=>yt(n,r))})});var g5="bitOr",xse=["typed","matrix","equalScalar","DenseMatrix","concat"],xw=$(g5,xse,e=>{var{typed:t,matrix:r,equalScalar:n,DenseMatrix:i,concat:o}=e,l=ho({typed:t}),s=Md({typed:t,equalScalar:n}),a=Xo({typed:t,DenseMatrix:i}),u=Xt({typed:t,matrix:r,concat:o});return t(g5,{"number, number":LA,"BigNumber, BigNumber":l5,"bigint, bigint":(f,p)=>f|p},u({SS:s,DS:l,Ss:a}))});var yse="matAlgo07xSSf",wse=["typed","SparseMatrix"],si=$(yse,wse,e=>{var{typed:t,SparseMatrix:r}=e;return function(o,l,s){var a=o._size,u=o._datatype||o._data===void 0?o._datatype:o.getDataType(),f=l._size,p=l._datatype||l._data===void 0?l._datatype:l.getDataType();if(a.length!==f.length)throw new $t(a.length,f.length);if(a[0]!==f[0]||a[1]!==f[1])throw new RangeError("Dimension mismatch. Matrix A ("+a+") must match Matrix B ("+f+")");var h=a[0],g=a[1],x,v=0,S=s;typeof u=="string"&&u===p&&u!=="mixed"&&(x=u,v=t.convert(0,x),S=t.find(s,[x,x]));for(var D=[],C=[],E=new Array(g+1).fill(0),M=[],T=[],N=[],O=[],F=0;F{var{typed:t,matrix:r,DenseMatrix:n,concat:i,SparseMatrix:o}=e,l=Yr({typed:t}),s=si({typed:t,SparseMatrix:o}),a=Nr({typed:t,DenseMatrix:n}),u=Xt({typed:t,matrix:r,concat:i});return t(v5,{"number, number":BA,"BigNumber, BigNumber":f5,"bigint, bigint":(f,p)=>f^p},u({SS:s,DS:l,Ss:a}))});var y5="arg",Dse=["typed"],w5=$(y5,Dse,e=>{var{typed:t}=e;return t(y5,{number:function(n){return Math.atan2(0,n)},BigNumber:function(n){return n.constructor.atan2(0,n)},Complex:function(n){return n.arg()},"Array | Matrix":t.referToSelf(r=>n=>yt(n,r))})});var b5="conj",Sse=["typed"],D5=$(b5,Sse,e=>{var{typed:t}=e;return t(b5,{"number | BigNumber | Fraction":r=>r,Complex:r=>r.conjugate(),"Array | Matrix":t.referToSelf(r=>n=>yt(n,r))})});var S5="im",Nse=["typed"],N5=$(S5,Nse,e=>{var{typed:t}=e;return t(S5,{number:()=>0,"BigNumber | Fraction":r=>r.mul(0),Complex:r=>r.im,"Array | Matrix":t.referToSelf(r=>n=>yt(n,r))})});var E5="re",Ese=["typed"],A5=$(E5,Ese,e=>{var{typed:t}=e;return t(E5,{"number | BigNumber | Fraction":r=>r,Complex:r=>r.re,"Array | Matrix":t.referToSelf(r=>n=>yt(n,r))})});var C5="not",Ase=["typed"],M5=$(C5,Ase,e=>{var{typed:t}=e;return t(C5,{"null | undefined":()=>!0,number:HA,Complex:function(n){return n.re===0&&n.im===0},BigNumber:function(n){return n.isZero()||n.isNaN()},bigint:r=>!r,Unit:t.referToSelf(r=>n=>t.find(r,n.valueType())(n.value)),"Array | Matrix":t.referToSelf(r=>n=>yt(n,r))})});var T5="or",Cse=["typed","matrix","equalScalar","DenseMatrix","concat"],yw=$(T5,Cse,e=>{var{typed:t,matrix:r,equalScalar:n,DenseMatrix:i,concat:o}=e,l=Yr({typed:t}),s=tc({typed:t,equalScalar:n}),a=Nr({typed:t,DenseMatrix:i}),u=Xt({typed:t,matrix:r,concat:o});return t(T5,{"number, number":uw,"Complex, Complex":function(p,h){return p.re!==0||p.im!==0||h.re!==0||h.im!==0},"BigNumber, BigNumber":function(p,h){return!p.isZero()&&!p.isNaN()||!h.isZero()&&!h.isNaN()},"bigint, bigint":uw,"Unit, Unit":t.referToSelf(f=>(p,h)=>f(p.value||0,h.value||0))},u({SS:s,DS:l,Ss:a}))});var _5="xor",Mse=["typed","matrix","DenseMatrix","concat","SparseMatrix"],O5=$(_5,Mse,e=>{var{typed:t,matrix:r,DenseMatrix:n,concat:i,SparseMatrix:o}=e,l=Yr({typed:t}),s=si({typed:t,SparseMatrix:o}),a=Nr({typed:t,DenseMatrix:n}),u=Xt({typed:t,matrix:r,concat:i});return t(_5,{"number, number":lw,"Complex, Complex":function(p,h){return(p.re!==0||p.im!==0)!=(h.re!==0||h.im!==0)},"bigint, bigint":lw,"BigNumber, BigNumber":function(p,h){return(!p.isZero()&&!p.isNaN())!=(!h.isZero()&&!h.isNaN())},"Unit, Unit":t.referToSelf(f=>(p,h)=>f(p.value||0,h.value||0))},u({SS:s,DS:l,Ss:a}))});var F5="concat",Tse=["typed","matrix","isInteger"],ww=$(F5,Tse,e=>{var{typed:t,matrix:r,isInteger:n}=e;return t(F5,{"...Array | Matrix | number | BigNumber":function(o){var l,s=o.length,a=-1,u,f=!1,p=[];for(l=0;l0&&a>u)throw new Di(a,u+1)}else{var g=_t(h).valueOf(),x=Ft(g);if(p[l]=g,u=a,a=x.length-1,l>0&&a!==u)throw new $t(u+1,a+1)}}if(p.length===0)throw new SyntaxError("At least one matrix expected");for(var v=p.shift();p.length;)v=dA(v,p.shift(),a);return f?r(v):v},"...string":function(o){return o.join("")}})});var I5="column",_se=["typed","Index","matrix","range"],bw=$(I5,_se,e=>{var{typed:t,Index:r,matrix:n,range:i}=e;return t(I5,{"Matrix, number":o,"Array, number":function(s,a){return o(n(_t(s)),a).valueOf()}});function o(l,s){if(l.size().length!==2)throw new Error("Only two dimensional matrix is supported");Br(s,l.size()[1]);var a=i(0,l.size()[0]),u=new r(a,s),f=l.subset(u);return gt(f)?f:n([[f]])}});var k5="count",Ose=["typed","size","prod"],L5=$(k5,Ose,e=>{var{typed:t,size:r,prod:n}=e;return t(k5,{string:function(o){return o.length},"Matrix | Array":function(o){return n(r(o))}})});var B5="cross",Fse=["typed","matrix","subtract","multiply"],P5=$(B5,Fse,e=>{var{typed:t,matrix:r,subtract:n,multiply:i}=e;return t(B5,{"Matrix, Matrix":function(s,a){return r(o(s.toArray(),a.toArray()))},"Matrix, Array":function(s,a){return r(o(s.toArray(),a))},"Array, Matrix":function(s,a){return r(o(s,a.toArray()))},"Array, Array":o});function o(l,s){var a=Math.max(Ft(l).length,Ft(s).length);l=bd(l),s=bd(s);var u=Ft(l),f=Ft(s);if(u.length!==1||f.length!==1||u[0]!==3||f[0]!==3)throw new RangeError("Vectors with length 3 expected (Size A = ["+u.join(", ")+"], B = ["+f.join(", ")+"])");var p=[n(i(l[1],s[2]),i(l[2],s[1])),n(i(l[2],s[0]),i(l[0],s[2])),n(i(l[0],s[1]),i(l[1],s[0]))];return a>1?[p]:p}});var R5="diag",Ise=["typed","matrix","DenseMatrix","SparseMatrix"],q5=$(R5,Ise,e=>{var{typed:t,matrix:r,DenseMatrix:n,SparseMatrix:i}=e;return t(R5,{Array:function(u){return o(u,0,Ft(u),null)},"Array, number":function(u,f){return o(u,f,Ft(u),null)},"Array, BigNumber":function(u,f){return o(u,f.toNumber(),Ft(u),null)},"Array, string":function(u,f){return o(u,0,Ft(u),f)},"Array, number, string":function(u,f,p){return o(u,f,Ft(u),p)},"Array, BigNumber, string":function(u,f,p){return o(u,f.toNumber(),Ft(u),p)},Matrix:function(u){return o(u,0,u.size(),u.storage())},"Matrix, number":function(u,f){return o(u,f,u.size(),u.storage())},"Matrix, BigNumber":function(u,f){return o(u,f.toNumber(),u.size(),u.storage())},"Matrix, string":function(u,f){return o(u,0,u.size(),f)},"Matrix, number, string":function(u,f,p){return o(u,f,u.size(),p)},"Matrix, BigNumber, string":function(u,f,p){return o(u,f.toNumber(),u.size(),p)}});function o(a,u,f,p){if(!dt(u))throw new TypeError("Second parameter in function diag must be an integer");var h=u>0?u:0,g=u<0?-u:0;switch(f.length){case 1:return l(a,u,p,f[0],g,h);case 2:return s(a,u,p,f,g,h)}throw new RangeError("Matrix for function diag must be 2 dimensional")}function l(a,u,f,p,h,g){var x=[p+h,p+g];if(f&&f!=="sparse"&&f!=="dense")throw new TypeError("Unknown matrix type ".concat(f,'"'));var v=f==="sparse"?i.diagonal(x,a,u):n.diagonal(x,a,u);return f!==null?v:v.valueOf()}function s(a,u,f,p,h,g){if(gt(a)){var x=a.diagonal(u);return f!==null?f!==x.storage()?r(x,f):x:x.valueOf()}for(var v=Math.min(p[0]-h,p[1]-g),S=[],D=0;D{var{typed:t}=e;return t("filter",{"Array, function":z5,"Matrix, function":function(n,i){return n.create(z5(n.valueOf(),i),n.datatype())},"Array, RegExp":pA,"Matrix, RegExp":function(n,i){return n.create(pA(n.valueOf(),i),n.datatype())}})});function z5(e,t){var r=Za(t,e,"filter");return hI(e,function(n,i,o){return r(n,[i],o)})}var U5="flatten",Bse=["typed"],H5=$(U5,Bse,e=>{var{typed:t}=e;return t(U5,{Array:function(n){return jt(n)},Matrix:function(n){return n.create(jt(n.toArray()),n.datatype())}})});var hC="forEach",Pse=["typed"],Sw=$(hC,Pse,e=>{var{typed:t}=e;return t(hC,{"Array, function":Rse,"Matrix, function":function(n,i){n.forEach(i)}})});function Rse(e,t){Bv(e,[],e,Za(t,e,hC))}var $5="getMatrixDataType",qse=["typed"],W5=$($5,qse,e=>{var{typed:t}=e;return t($5,{Array:function(n){return Ap(n,pr)},Matrix:function(n){return n.getDataType()}})});var V5="identity",zse=["typed","config","matrix","BigNumber","DenseMatrix","SparseMatrix"],G5=$(V5,zse,e=>{var{typed:t,config:r,matrix:n,BigNumber:i,DenseMatrix:o,SparseMatrix:l}=e;return t(V5,{"":function(){return r.matrix==="Matrix"?n([]):[]},string:function(f){return n(f)},"number | BigNumber":function(f){return a(f,f,r.matrix==="Matrix"?"dense":void 0)},"number | BigNumber, string":function(f,p){return a(f,f,p)},"number | BigNumber, number | BigNumber":function(f,p){return a(f,p,r.matrix==="Matrix"?"dense":void 0)},"number | BigNumber, number | BigNumber, string":function(f,p,h){return a(f,p,h)},Array:function(f){return s(f)},"Array, string":function(f,p){return s(f,p)},Matrix:function(f){return s(f.valueOf(),f.storage())},"Matrix, string":function(f,p){return s(f.valueOf(),p)}});function s(u,f){switch(u.length){case 0:return f?n(f):[];case 1:return a(u[0],u[0],f);case 2:return a(u[0],u[1],f);default:throw new Error("Vector containing two values expected")}}function a(u,f,p){var h=Ct(u)||Ct(f)?i:null;if(Ct(u)&&(u=u.toNumber()),Ct(f)&&(f=f.toNumber()),!dt(u)||u<1)throw new Error("Parameters in function identity must be positive integers");if(!dt(f)||f<1)throw new Error("Parameters in function identity must be positive integers");var g=h?new i(1):1,x=h?new h(0):0,v=[u,f];if(p){if(p==="sparse")return l.diagonal(v,g,0,x);if(p==="dense")return o.diagonal(v,g,0,x);throw new TypeError('Unknown matrix type "'.concat(p,'"'))}for(var S=Rs([],v,x),D=u{var{typed:t,matrix:r,multiplyScalar:n}=e;return t(Y5,{"Matrix, Matrix":function(l,s){return r(i(l.toArray(),s.toArray()))},"Matrix, Array":function(l,s){return r(i(l.toArray(),s))},"Array, Matrix":function(l,s){return r(i(l,s.toArray()))},"Array, Array":i});function i(o,l){if(Ft(o).length===1&&(o=[o]),Ft(l).length===1&&(l=[l]),Ft(o).length>2||Ft(l).length>2)throw new RangeError("Vectors with dimensions greater then 2 are not supported expected (Size x = "+JSON.stringify(o.length)+", y = "+JSON.stringify(l.length)+")");var s=[],a=[];return o.map(function(u){return l.map(function(f){return a=[],s.push(a),u.map(function(p){return f.map(function(h){return a.push(n(p,h))})})})})&&s}});var gC="map",Hse=["typed"],Nw=$(gC,Hse,e=>{var{typed:t}=e;return t(gC,{"Array, function":n,"Matrix, function":function(o,l){return o.map(l)},"Array|Matrix, Array|Matrix, ...Array|Matrix|function":(i,o,l)=>r([i,o,...l.slice(0,l.length-1)],l[l.length-1])});function r(i,o){if(typeof o!="function")throw new Error("Last argument must be a callback function");var l=i[0].isMatrix,s=Lv(...i.map(M=>M.isMatrix?M.size():Ft(M))),a=l?(M,T)=>M.get(T):Sd,u=l?i.map(M=>M.isMatrix?M.create(ku(M.toArray(),s),M.datatype()):i[0].create(ku(M.valueOf(),s))):i.map(M=>M.isMatrix?ku(M.toArray(),s):ku(M,s)),f;if(t.isTypedFunction(o)){var p=s.map(()=>0),h=u.map(M=>a(M,p)),g=E(o,h,p,u);f=D(g)}else{var x=i.length,v=C(o,x);f=D(v)}var S=(M,T)=>f([M,...u.slice(1).map(N=>a(N,T))],T);if(l)return u[0].map(S);return n(u[0],S);function D(M){switch(M){case 0:return T=>o(...T);case 1:return(T,N)=>o(...T,N);case 2:return(T,N)=>o(...T,N,...u)}}function C(M,T){return M.length>T+1?2:M.length===T+1?1:0}function E(M,T,N,O){return t.resolve(M,[...T,N,...O])!==null?2:t.resolve(M,[...T,N])!==null?1:(t.resolve(M,T)!==null,0)}}function n(i,o){return Bv(i,[],i,Za(o,i,gC))}});var X5="diff",$se=["typed","matrix","subtract","number"],Ew=$(X5,$se,e=>{var{typed:t,matrix:r,subtract:n,number:i}=e;return t(X5,{"Array | Matrix":function(f){return gt(f)?r(l(f.toArray())):l(f)},"Array | Matrix, number":function(f,p){if(!dt(p))throw new RangeError("Dimension must be a whole number");return gt(f)?r(o(f.toArray(),p)):o(f,p)},"Array, BigNumber":t.referTo("Array,number",u=>(f,p)=>u(f,i(p))),"Matrix, BigNumber":t.referTo("Matrix,number",u=>(f,p)=>u(f,i(p)))});function o(u,f){if(gt(u)&&(u=u.toArray()),!Array.isArray(u))throw RangeError("Array/Matrix does not have that many dimensions");if(f>0){var p=[];return u.forEach(h=>{p.push(o(h,f-1))}),p}else{if(f===0)return l(u);throw RangeError("Cannot have negative dimension")}}function l(u){for(var f=[],p=u.length,h=1;h{var{typed:t,config:r,matrix:n,BigNumber:i}=e;return t("ones",{"":function(){return r.matrix==="Array"?o([]):o([],"default")},"...number | BigNumber | string":function(u){var f=u[u.length-1];if(typeof f=="string"){var p=u.pop();return o(u,p)}else return r.matrix==="Array"?o(u):o(u,"default")},Array:o,Matrix:function(u){var f=u.storage();return o(u.valueOf(),f)},"Array | Matrix, string":function(u,f){return o(u.valueOf(),f)}});function o(a,u){var f=l(a),p=f?new i(1):1;if(s(a),u){var h=n(u);return a.length>0?h.resize(a,p):h}else{var g=[];return a.length>0?Rs(g,a,p):g}}function l(a){var u=!1;return a.forEach(function(f,p,h){Ct(f)&&(u=!0,h[p]=f.toNumber())}),u}function s(a){a.forEach(function(u){if(typeof u!="number"||!dt(u)||u<0)throw new Error("Parameters in function ones must be positive integers")})}});function _d(){throw new Error('No "bignumber" implementation available')}function Aw(){throw new Error('No "fraction" implementation available')}function Cw(){throw new Error('No "matrix" implementation available')}var J5="range",Gse=["typed","config","?matrix","?bignumber","smaller","smallerEq","larger","largerEq","add","isPositive"],Mw=$(J5,Gse,e=>{var{typed:t,config:r,matrix:n,bignumber:i,smaller:o,smallerEq:l,larger:s,largerEq:a,add:u,isPositive:f}=e;return t(J5,{string:h,"string, boolean":h,"number, number":function(S,D){return p(g(S,D,1,!1))},"number, number, number":function(S,D,C){return p(g(S,D,C,!1))},"number, number, boolean":function(S,D,C){return p(g(S,D,1,C))},"number, number, number, boolean":function(S,D,C,E){return p(g(S,D,C,E))},"BigNumber, BigNumber":function(S,D){var C=S.constructor;return p(g(S,D,new C(1),!1))},"BigNumber, BigNumber, BigNumber":function(S,D,C){return p(g(S,D,C,!1))},"BigNumber, BigNumber, boolean":function(S,D,C){var E=S.constructor;return p(g(S,D,new E(1),C))},"BigNumber, BigNumber, BigNumber, boolean":function(S,D,C,E){return p(g(S,D,C,E))},"Unit, Unit, Unit":function(S,D,C){return p(g(S,D,C,!1))},"Unit, Unit, Unit, boolean":function(S,D,C,E){return p(g(S,D,C,E))}});function p(v){return r.matrix==="Matrix"?n?n(v):Cw():v}function h(v,S){var D=x(v);if(!D)throw new SyntaxError('String "'+v+'" is no valid range');return r.number==="BigNumber"?(i===void 0&&_d(),p(g(i(D.start),i(D.end),i(D.step)),S)):p(g(D.start,D.end,D.step,S))}function g(v,S,D,C){for(var E=[],M=f(D)?C?l:o:C?a:s,T=v;M(T,S);)E.push(T),T=u(T,D);return E}function x(v){var S=v.split(":"),D=S.map(function(E){return Number(E)}),C=D.some(function(E){return isNaN(E)});if(C)return null;switch(D.length){case 2:return{start:D[0],end:D[1],step:1};case 3:return{start:D[0],end:D[2],step:D[1]};default:return null}}});var Q5="reshape",Yse=["typed","isInteger","matrix"],j5=$(Q5,Yse,e=>{var{typed:t,isInteger:r}=e;return t(Q5,{"Matrix, Array":function(i,o){return i.reshape(o,!0)},"Array, Array":function(i,o){return o.forEach(function(l){if(!r(l))throw new TypeError("Invalid size for dimension: "+l)}),Iv(i,o)}})});var Zse="resize",Xse=["config","matrix"],e4=$(Zse,Xse,e=>{var{config:t,matrix:r}=e;return function(o,l,s){if(arguments.length!==2&&arguments.length!==3)throw new wa("resize",arguments.length,2,3);if(gt(l)&&(l=l.valueOf()),Ct(l[0])&&(l=l.map(function(f){return Ct(f)?f.toNumber():f})),gt(o))return o.resize(l,s,!0);if(typeof o=="string")return n(o,l,s);var a=Array.isArray(o)?!1:t.matrix!=="Array";if(l.length===0){for(;Array.isArray(o);)o=o[0];return _t(o)}else{Array.isArray(o)||(o=[o]),o=_t(o);var u=Rs(o,l,s);return a?r(u):u}};function n(i,o,l){if(l!==void 0){if(typeof l!="string"||l.length!==1)throw new TypeError("Single character expected as defaultValue")}else l=" ";if(o.length!==1)throw new $t(o.length,1);var s=o[0];if(typeof s!="number"||!dt(s))throw new TypeError("Invalid size, must contain positive integers (size: "+Ht(o)+")");if(i.length>s)return i.substring(0,s);if(i.length{var{typed:t,multiply:r,rotationMatrix:n}=e;return t(t4,{"Array , number | BigNumber | Complex | Unit":function(l,s){i(l,2);var a=r(n(s),l);return a.toArray()},"Matrix , number | BigNumber | Complex | Unit":function(l,s){return i(l,2),r(n(s),l)},"Array, number | BigNumber | Complex | Unit, Array | Matrix":function(l,s,a){i(l,3);var u=r(n(s,a),l);return u},"Matrix, number | BigNumber | Complex | Unit, Array | Matrix":function(l,s,a){return i(l,3),r(n(s,a),l)}});function i(o,l){var s=Array.isArray(o)?Ft(o):o.size();if(s.length>2)throw new RangeError("Vector must be of dimensions 1x".concat(l));if(s.length===2&&s[1]!==1)throw new RangeError("Vector must be of dimensions 1x".concat(l));if(s[0]!==l)throw new RangeError("Vector must be of dimensions 1x".concat(l))}});var n4="rotationMatrix",Jse=["typed","config","multiplyScalar","addScalar","unaryMinus","norm","matrix","BigNumber","DenseMatrix","SparseMatrix","cos","sin"],i4=$(n4,Jse,e=>{var{typed:t,config:r,multiplyScalar:n,addScalar:i,unaryMinus:o,norm:l,BigNumber:s,matrix:a,DenseMatrix:u,SparseMatrix:f,cos:p,sin:h}=e;return t(n4,{"":function(){return r.matrix==="Matrix"?a([]):[]},string:function(E){return a(E)},"number | BigNumber | Complex | Unit":function(E){return g(E,r.matrix==="Matrix"?"dense":void 0)},"number | BigNumber | Complex | Unit, string":function(E,M){return g(E,M)},"number | BigNumber | Complex | Unit, Array":function(E,M){var T=a(M);return x(T),D(E,T,void 0)},"number | BigNumber | Complex | Unit, Matrix":function(E,M){x(M);var T=M.storage()||(r.matrix==="Matrix"?"dense":void 0);return D(E,M,T)},"number | BigNumber | Complex | Unit, Array, string":function(E,M,T){var N=a(M);return x(N),D(E,N,T)},"number | BigNumber | Complex | Unit, Matrix, string":function(E,M,T){return x(M),D(E,M,T)}});function g(C,E){var M=Ct(C),T=M?new s(-1):-1,N=p(C),O=h(C),F=[[N,n(T,O)],[O,N]];return S(F,E)}function x(C){var E=C.size();if(E.length<1||E[0]!==3)throw new RangeError("Vector must be of dimensions 1x3")}function v(C){return C.reduce((E,M)=>n(E,M))}function S(C,E){if(E){if(E==="sparse")return new f(C);if(E==="dense")return new u(C);throw new TypeError('Unknown matrix type "'.concat(E,'"'))}return C}function D(C,E,M){var T=l(E);if(T===0)throw new RangeError("Rotation around zero vector");var N=Ct(C)?s:null,O=N?new N(1):1,F=N?new N(-1):-1,I=N?new N(E.get([0])/T):E.get([0])/T,B=N?new N(E.get([1])/T):E.get([1])/T,L=N?new N(E.get([2])/T):E.get([2])/T,q=p(C),R=i(O,o(q)),V=h(C),X=i(q,v([I,I,R])),U=i(v([I,B,R]),v([F,L,V])),H=i(v([I,L,R]),v([B,V])),ee=i(v([I,B,R]),v([L,V])),Z=i(q,v([B,B,R])),pe=i(v([B,L,R]),v([F,I,V])),we=i(v([I,L,R]),v([F,B,V])),he=i(v([B,L,R]),v([I,V])),oe=i(q,v([L,L,R])),ve=[[X,U,H],[ee,Z,pe],[we,he,oe]];return S(ve,M)}});var o4="row",Qse=["typed","Index","matrix","range"],Tw=$(o4,Qse,e=>{var{typed:t,Index:r,matrix:n,range:i}=e;return t(o4,{"Matrix, number":o,"Array, number":function(s,a){return o(n(_t(s)),a).valueOf()}});function o(l,s){if(l.size().length!==2)throw new Error("Only two dimensional matrix is supported");Br(s,l.size()[0]);var a=i(0,l.size()[1]),u=new r(s,a),f=l.subset(u);return gt(f)?f:n([[f]])}});var a4="size",jse=["typed","config","?matrix"],s4=$(a4,jse,e=>{var{typed:t,config:r,matrix:n}=e;return t(a4,{Matrix:function(o){return o.create(o.size(),"number")},Array:Ft,string:function(o){return r.matrix==="Array"?[o.length]:n([o.length],"dense","number")},"number | Complex | BigNumber | Unit | boolean | null":function(o){return r.matrix==="Array"?[]:n?n([],"dense","number"):Cw()}})});var u4="squeeze",eue=["typed"],l4=$(u4,eue,e=>{var{typed:t}=e;return t(u4,{Array:function(n){return bd(_t(n))},Matrix:function(n){var i=bd(n.toArray());return Array.isArray(i)?n.create(i,n.datatype()):i},any:function(n){return _t(n)}})});var f4="subset",tue=["typed","matrix","zeros","add"],_w=$(f4,tue,e=>{var{typed:t,matrix:r,zeros:n,add:i}=e;return t(f4,{"Matrix, Index":function(s,a){return Ep(a)?r():(Fv(s,a),s.subset(a))},"Array, Index":t.referTo("Matrix, Index",function(l){return function(s,a){var u=l(r(s),a);return a.isScalar()?u:u.valueOf()}}),"Object, Index":nue,"string, Index":rue,"Matrix, Index, any, any":function(s,a,u,f){return Ep(a)?s:(Fv(s,a),s.clone().subset(a,o(u,a),f))},"Array, Index, any, any":t.referTo("Matrix, Index, any, any",function(l){return function(s,a,u,f){var p=l(r(s),a,u,f);return p.isMatrix?p.valueOf():p}}),"Array, Index, any":t.referTo("Matrix, Index, any, any",function(l){return function(s,a,u){return l(r(s),a,u,void 0).valueOf()}}),"Matrix, Index, any":t.referTo("Matrix, Index, any, any",function(l){return function(s,a,u){return l(s,a,u,void 0)}}),"string, Index, string":c4,"string, Index, string, string":c4,"Object, Index, any":iue});function o(l,s){if(typeof l=="string")throw new Error("can't boradcast a string");if(s._isScalar)return l;var a=s.size();if(a.every(u=>u>0))try{return i(l,n(a))}catch{return l}else return l}});function rue(e,t){if(!Ou(t))throw new TypeError("Index expected");if(Ep(t))return"";if(Fv(Array.from(e),t),t.size().length!==1)throw new $t(t.size().length,1);var r=e.length;Br(t.min()[0],r),Br(t.max()[0],r);var n=t.dimension(0),i="";return n.forEach(function(o){i+=e.charAt(o)}),i}function c4(e,t,r,n){if(!t||t.isIndex!==!0)throw new TypeError("Index expected");if(Ep(t))return e;if(Fv(Array.from(e),t),t.size().length!==1)throw new $t(t.size().length,1);if(n!==void 0){if(typeof n!="string"||n.length!==1)throw new TypeError("Single character expected as defaultValue")}else n=" ";var i=t.dimension(0),o=i.size()[0];if(o!==r.length)throw new $t(i.size()[0],r.length);var l=e.length;Br(t.min()[0]),Br(t.max()[0]);for(var s=[],a=0;al)for(var u=l-1,f=s.length;u{var{typed:t,matrix:r}=e;return t(p4,{Array:l=>n(r(l)).valueOf(),Matrix:n,any:_t});function n(l){var s=l.size(),a;switch(s.length){case 1:a=l.clone();break;case 2:{var u=s[0],f=s[1];if(f===0)throw new RangeError("Cannot transpose a 2D matrix with no columns (size: "+Ht(s)+")");switch(l.storage()){case"dense":a=i(l,u,f);break;case"sparse":a=o(l,u,f);break}}break;default:throw new RangeError("Matrix must be a vector or two dimensional (size: "+Ht(s)+")")}return a}function i(l,s,a){for(var u=l._data,f=[],p,h=0;h{var{typed:t,transpose:r,conj:n}=e;return t(d4,{any:function(o){return n(r(o))}})});var g4="zeros",sue=["typed","config","matrix","BigNumber"],v4=$(g4,sue,e=>{var{typed:t,config:r,matrix:n,BigNumber:i}=e;return t(g4,{"":function(){return r.matrix==="Array"?o([]):o([],"default")},"...number | BigNumber | string":function(u){var f=u[u.length-1];if(typeof f=="string"){var p=u.pop();return o(u,p)}else return r.matrix==="Array"?o(u):o(u,"default")},Array:o,Matrix:function(u){var f=u.storage();return o(u.valueOf(),f)},"Array | Matrix, string":function(u,f){return o(u.valueOf(),f)}});function o(a,u){var f=l(a),p=f?new i(0):0;if(s(a),u){var h=n(u);return a.length>0?h.resize(a,p):h}else{var g=[];return a.length>0?Rs(g,a,p):g}}function l(a){var u=!1;return a.forEach(function(f,p,h){Ct(f)&&(u=!0,h[p]=f.toNumber())}),u}function s(a){a.forEach(function(u){if(typeof u!="number"||!dt(u)||u<0)throw new Error("Parameters in function zeros must be positive integers")})}});var x4="fft",uue=["typed","matrix","addScalar","multiplyScalar","divideScalar","exp","tau","i","dotDivide","conj","pow","ceil","log2"],y4=$(x4,uue,e=>{var{typed:t,matrix:r,addScalar:n,multiplyScalar:i,divideScalar:o,exp:l,tau:s,i:a,dotDivide:u,conj:f,pow:p,ceil:h,log2:g}=e;return t(x4,{Array:x,Matrix:function(E){return E.create(x(E.valueOf()),E.datatype())}});function x(C){var E=Ft(C);return E.length===1?D(C,E[0]):v(C.map(M=>x(M,E.slice(1))),0)}function v(C,E){var M=Ft(C);if(E!==0)return new Array(M[0]).fill(0).map((N,O)=>v(C[O],E-1));if(M.length===1)return D(C);function T(N){var O=Ft(N);return new Array(O[1]).fill(0).map((F,I)=>new Array(O[0]).fill(0).map((B,L)=>N[L][I]))}return T(v(T(C),1))}function S(C){for(var E=C.length,M=l(o(i(-1,i(a,s)),E)),T=[],N=1-E;Ni(C[H],T[E-1+H])),...new Array(O-E).fill(0)],I=[...new Array(E+E-1).fill(0).map((U,H)=>o(1,T[H])),...new Array(O-(E+E-1)).fill(0)],B=D(F),L=D(I),q=new Array(O).fill(0).map((U,H)=>i(B[H],L[H])),R=u(f(x(f(q))),O),V=[],X=E-1;XI%2===0),E/2),...D(C.filter((F,I)=>I%2===1),E/2)],T=0;T{var{typed:t,fft:r,dotDivide:n,conj:i}=e;return t(w4,{"Array | Matrix":function(l){var s=gt(l)?l.size():Ft(l);return n(i(r(i(l))),s.reduce((a,u)=>a*u,1))}})});function Mp(e){"@babel/helpers - typeof";return Mp=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Mp(e)}function D4(e,t){if(Mp(e)!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t||"default");if(Mp(n)!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function S4(e){var t=D4(e,"string");return Mp(t)=="symbol"?t:t+""}function Tr(e,t,r){return(t=S4(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function N4(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function fue(e){for(var t=1;t{var{typed:t,add:r,subtract:n,multiply:i,divide:o,max:l,map:s,abs:a,isPositive:u,isNegative:f,larger:p,smaller:h,matrix:g,bignumber:x,unaryMinus:v}=e;function S(F){return function(I,B,L,q){var R=!(B.length===2&&(B.every(N)||B.every(ti)));if(R)throw new Error('"tspan" must be an Array of two numeric values or two units [tStart, tEnd]');var V=B[0],X=B[1],U=p(X,V),H=q.firstStep;if(H!==void 0&&!u(H))throw new Error('"firstStep" must be positive');var ee=q.maxStep;if(ee!==void 0&&!u(ee))throw new Error('"maxStep" must be positive');var Z=q.minStep;if(Z&&f(Z))throw new Error('"minStep" must be positive or zero');var pe=[V,X,H,Z,ee].filter(rt=>rt!==void 0);if(!(pe.every(N)||pe.every(ti)))throw new Error('Inconsistent type of "t" dependant variables');for(var we=1,he=q.tol?q.tol:1e-4,oe=q.minDelta?q.minDelta:.2,ve=q.maxDelta?q.maxDelta:5,Oe=q.maxIter?q.maxIter:1e4,De=[V,X,...L,ee,Z].some(Ct),[Me,le,ne,fe]=De?[x(F.a),x(F.c),x(F.b),x(F.bp)]:[F.a,F.c,F.b,F.bp],Fe=H?U?H:v(H):o(n(X,V),we),me=[V],Ue=[L],Re=n(ne,fe),ie=0,ue=0,Te=M(U),Ce=T(U);Te(me[ie],X);){var Je=[];Fe=Ce(me[ie],X,Fe),Je.push(I(me[ie],Ue[ie]));for(var He=1;Heti(rt)?rt.value:rt)));it1/4&&(me.push(r(me[ie],Fe)),Ue.push(r(Ue[ie],i(Fe,ne,Je))),ie++);var ct=.84*(he/it)**(1/5);if(h(ct,oe)?ct=oe:p(ct,ve)&&(ct=ve),ct=De?x(ct):ct,Fe=i(Fe,ct),ee&&p(a(Fe),ee)?Fe=U?ee:v(ee):Z&&h(a(Fe),Z)&&(Fe=U?Z:v(Z)),ue++,ue>Oe)throw new Error("Maximum number of iterations reached, try changing options")}return{t:me,y:Ue}}}function D(F,I,B,L){var q=[[],[.5],[0,.75],[.2222222222222222,.3333333333333333,.4444444444444444]],R=[null,1/2,3/4,1],V=[2/9,1/3,4/9,0],X=[7/24,1/4,1/3,1/8],U={a:q,c:R,b:V,bp:X};return S(U)(F,I,B,L)}function C(F,I,B,L){var q=[[],[.2],[.075,.225],[.9777777777777777,-3.7333333333333334,3.5555555555555554],[2.9525986892242035,-11.595793324188385,9.822892851699436,-.2908093278463649],[2.8462752525252526,-10.757575757575758,8.906422717743473,.2784090909090909,-.2735313036020583],[.09114583333333333,0,.44923629829290207,.6510416666666666,-.322376179245283,.13095238095238096]],R=[null,1/5,3/10,4/5,8/9,1,1],V=[35/384,0,500/1113,125/192,-2187/6784,11/84,0],X=[5179/57600,0,7571/16695,393/640,-92097/339200,187/2100,1/40],U={a:q,c:R,b:V,bp:X};return S(U)(F,I,B,L)}function E(F,I,B,L){var q=L.method?L.method:"RK45",R={RK23:D,RK45:C};if(q.toUpperCase()in R){var V=fue({},L);return delete V.method,R[q.toUpperCase()](F,I,B,V)}else{var X=Object.keys(R).map(H=>'"'.concat(H,'"')),U="".concat(X.slice(0,-1).join(", ")," and ").concat(X.slice(-1));throw new Error('Unavailable method "'.concat(q,'". Available methods are ').concat(U))}}function M(F){return F?h:p}function T(F){var I=F?p:h;return function(B,L,q){var R=r(B,q);return I(R,L)?n(L,B):q}}function N(F){return Ct(F)||Pt(F)}function O(F,I,B,L){var q=E(F,I.toArray(),B.toArray(),L);return{t:g(q.t),y:g(q.y)}}return t("solveODE",{"function, Array, Array, Object":E,"function, Matrix, Matrix, Object":O,"function, Array, Array":(F,I,B)=>E(F,I,B,{}),"function, Matrix, Matrix":(F,I,B)=>O(F,I,B,{}),"function, Array, number | BigNumber | Unit":(F,I,B)=>{var L=E(F,I,[B],{});return{t:L.t,y:L.y.map(q=>q[0])}},"function, Matrix, number | BigNumber | Unit":(F,I,B)=>{var L=E(F,I.toArray(),[B],{});return{t:g(L.t),y:g(L.y.map(q=>q[0]))}},"function, Array, number | BigNumber | Unit, Object":(F,I,B,L)=>{var q=E(F,I,[B],L);return{t:q.t,y:q.y.map(R=>R[0])}},"function, Matrix, number | BigNumber | Unit, Object":(F,I,B,L)=>{var q=E(F,I.toArray(),[B],L);return{t:g(q.t),y:g(q.y.map(R=>R[0]))}}})});var mue="erf",due=["typed"],A4=$(mue,due,e=>{var{typed:t}=e;return t("name",{number:function(l){var s=Math.abs(l);return s>=vue?Va(l):s<=hue?Va(l)*r(s):s<=4?Va(l)*(1-n(s)):Va(l)*(1-i(s))},"Array | Matrix":t.referToSelf(o=>l=>yt(l,o))});function r(o){var l=o*o,s=kl[0][4]*l,a=l,u;for(u=0;u<3;u+=1)s=(s+kl[0][u])*l,a=(a+Od[0][u])*l;return o*(s+kl[0][3])/(a+Od[0][3])}function n(o){var l=kl[1][8]*o,s=o,a;for(a=0;a<7;a+=1)l=(l+kl[1][a])*o,s=(s+Od[1][a])*o;var u=(l+kl[1][7])/(s+Od[1][7]),f=parseInt(o*16)/16,p=(o-f)*(o+f);return Math.exp(-f*f)*Math.exp(-p)*u}function i(o){var l=1/(o*o),s=kl[2][5]*l,a=l,u;for(u=0;u<4;u+=1)s=(s+kl[2][u])*l,a=(a+Od[2][u])*l;var f=l*(s+kl[2][4])/(a+Od[2][4]);f=(gue-f)/o,l=parseInt(o*16)/16;var p=(o-l)*(o+l);return Math.exp(-l*l)*Math.exp(-p)*f}}),hue=.46875,gue=.5641895835477563,kl=[[3.1611237438705655,113.86415415105016,377.485237685302,3209.3775891384694,.18577770618460315],[.5641884969886701,8.883149794388377,66.11919063714163,298.6351381974001,881.952221241769,1712.0476126340707,2051.0783778260716,1230.3393547979972,21531153547440383e-24],[.30532663496123236,.36034489994980445,.12578172611122926,.016083785148742275,.0006587491615298378,.016315387137302097]],Od=[[23.601290952344122,244.02463793444417,1282.6165260773723,2844.236833439171],[15.744926110709835,117.6939508913125,537.1811018620099,1621.3895745666903,3290.7992357334597,4362.619090143247,3439.3676741437216,1230.3393548037495],[2.568520192289822,1.8729528499234604,.5279051029514285,.06051834131244132,.0023352049762686918]],vue=Math.pow(2,53);var C4="zeta",xue=["typed","config","multiply","pow","divide","factorial","equal","smallerEq","isNegative","gamma","sin","subtract","add","?Complex","?BigNumber","pi"],M4=$(C4,xue,e=>{var{typed:t,config:r,multiply:n,pow:i,divide:o,factorial:l,equal:s,smallerEq:a,isNegative:u,gamma:f,sin:p,subtract:h,add:g,Complex:x,BigNumber:v,pi:S}=e;return t(C4,{number:N=>D(N,O=>O,()=>20),BigNumber:N=>D(N,O=>new v(O),()=>Math.abs(Math.log10(r.relTol))),Complex:C});function D(N,O,F){return s(N,0)?O(-.5):s(N,1)?O(NaN):isFinite(N)?E(N,O,F,I=>I):u(N)?O(NaN):O(1)}function C(N){return N.re===0&&N.im===0?new x(-.5):N.re===1?new x(NaN,NaN):N.re===1/0&&N.im===0?new x(1):N.im===1/0||N.re===-1/0?new x(NaN,NaN):E(N,O=>O,O=>Math.round(1.3*15+.9*Math.abs(O.im)),O=>O.re)}function E(N,O,F,I){var B=F(N);if(I(N)>-(B-1)/2)return T(N,O(B),O);var L=n(i(2,N),i(O(S),h(N,1)));return L=n(L,p(n(o(O(S),2),N))),L=n(L,f(h(1,N))),n(L,E(h(1,N),O,F,I))}function M(N,O){for(var F=N,I=N;a(I,O);I=g(I,1)){var B=o(n(l(g(O,h(I,1))),i(4,I)),n(l(h(O,I)),l(n(2,I))));F=g(F,B)}return n(O,F)}function T(N,O,F){for(var I=o(1,n(M(F(0),O),h(1,i(2,h(1,N))))),B=F(0),L=F(1);a(L,O);L=g(L,1))B=g(B,o(n((-1)**(L-1),M(L,O)),i(L,N)));return n(I,B)}});var T4="mode",yue=["typed","isNaN","isNumeric"],_4=$(T4,yue,e=>{var{typed:t,isNaN:r,isNumeric:n}=e;return t(T4,{"Array | Matrix":i,"...":function(l){return i(l)}});function i(o){o=jt(o.valueOf());var l=o.length;if(l===0)throw new Error("Cannot calculate mode of an empty array");for(var s={},a=[],u=0,f=0;fu&&(u=s[p],a=[p])}return a}});function Cn(e,t,r){var n;return String(e).includes("Unexpected type")?(n=arguments.length>2?" (type: "+pr(r)+", value: "+JSON.stringify(r)+")":" (type: "+e.data.actual+")",new TypeError("Cannot calculate "+t+", unexpected type of argument"+n)):String(e).includes("complex numbers")?(n=arguments.length>2?" (type: "+pr(r)+", value: "+JSON.stringify(r)+")":"",new TypeError("Cannot calculate "+t+", no ordering relation is defined for complex numbers"+n)):e}var O4="prod",wue=["typed","config","multiplyScalar","numeric"],F4=$(O4,wue,e=>{var{typed:t,config:r,multiplyScalar:n,numeric:i}=e;return t(O4,{"Array | Matrix":o,"Array | Matrix, number | BigNumber":function(s,a){throw new Error("prod(A, dim) is not yet supported")},"...":function(s){return o(s)}});function o(l){var s;if(mo(l,function(a){try{s=s===void 0?a:n(s,a)}catch(u){throw Cn(u,"prod",a)}}),typeof s=="string"&&(s=i(s,fo(s,r))),s===void 0)throw new Error("Cannot calculate prod of an empty array");return s}});var I4="format",bue=["typed"],k4=$(I4,bue,e=>{var{typed:t}=e;return t(I4,{any:Ht,"any, Object | function | number | BigNumber":Ht})});var L4="bin",Due=["typed","format"],B4=$(L4,Due,e=>{var{typed:t,format:r}=e;return t(L4,{"number | BigNumber":function(i){return r(i,{notation:"bin"})},"number | BigNumber, number | BigNumber":function(i,o){return r(i,{notation:"bin",wordSize:o})}})});var P4="oct",Sue=["typed","format"],R4=$(P4,Sue,e=>{var{typed:t,format:r}=e;return t(P4,{"number | BigNumber":function(i){return r(i,{notation:"oct"})},"number | BigNumber, number | BigNumber":function(i,o){return r(i,{notation:"oct",wordSize:o})}})});var q4="hex",Nue=["typed","format"],z4=$(q4,Nue,e=>{var{typed:t,format:r}=e;return t(q4,{"number | BigNumber":function(i){return r(i,{notation:"hex"})},"number | BigNumber, number | BigNumber":function(i,o){return r(i,{notation:"hex",wordSize:o})}})});var Ow=/\$([\w.]+)/g;var U4="print",Eue=["typed"],Fw=$(U4,Eue,e=>{var{typed:t}=e;return t(U4,{"string, Object | Array":H4,"string, Object | Array, number | Object":H4})});function H4(e,t,r){return e.replace(Ow,function(n,i){var o=i.split("."),l=t[o.shift()];for(l!==void 0&&l.isMatrix&&(l=l.toArray());o.length&&l!==void 0;){var s=o.shift();l=s?l[s]:l+"."}return l!==void 0?dn(l)?l:Ht(l,r):n})}var $4="to",Aue=["typed","matrix","concat"],W4=$($4,Aue,e=>{var{typed:t,matrix:r,concat:n}=e,i=Xt({typed:t,matrix:r,concat:n});return t($4,{"Unit, Unit | string":(o,l)=>o.to(l)},i({Ds:!0}))});var V4="isPrime",Cue=["typed"],G4=$(V4,Cue,e=>{var{typed:t}=e;return t(V4,{number:function(n){if(n<=3)return n>1;if(n%2===0||n%3===0)return!1;for(var i=5;i*i<=n;i+=6)if(n%i===0||n%(i+2)===0)return!1;return!0},bigint:function(n){if(n<=3n)return n>1n;if(n%2n===0n||n%3n===0n)return!1;for(var i=5n;i*i<=n;i+=6n)if(n%i===0n||n%(i+2n)===0n)return!1;return!0},BigNumber:function(n){if(n.lte(3))return n.gt(1);if(n.mod(2).eq(0)||n.mod(3).eq(0))return!1;if(n.lt(Math.pow(2,32))){for(var i=n.toNumber(),o=5;o*o<=i;o+=6)if(i%o===0||i%(o+2)===0)return!1;return!0}function l(C,E,M){for(var T=1;!E.eq(0);)E.mod(2).eq(0)?(E=E.div(2),C=C.mul(C).mod(M)):(E=E.sub(1),T=C.mul(T).mod(M));return T}var s=n.constructor.clone({precision:n.toFixed(0).length*2});n=new s(n);for(var a=0,u=n.sub(1);u.mod(2).eq(0);)u=u.div(2),a+=1;var f=null;if(n.lt("3317044064679887385961981"))f=[2,3,5,7,11,13,17,19,23,29,31,37,41].filter(C=>Cn=>yt(n,r))})});var Mue="numeric",Tue=["number","?bignumber","?fraction"],Y4=$(Mue,Tue,e=>{var{number:t,bignumber:r,fraction:n}=e,i={string:!0,number:!0,BigNumber:!0,Fraction:!0},o={number:l=>t(l),BigNumber:r?l=>r(l):_d,bigint:l=>BigInt(l),Fraction:n?l=>n(l):Aw};return function(s){var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"number",u=arguments.length>2?arguments[2]:void 0;if(u!==void 0)throw new SyntaxError("numeric() takes one or two arguments");var f=pr(s);if(!(f in i))throw new TypeError("Cannot convert "+s+' of type "'+f+'"; valid input types are '+Object.keys(i).join(", "));if(!(a in o))throw new TypeError("Cannot convert "+s+' to type "'+a+'"; valid output types are '+Object.keys(o).join(", "));return a===f?s:o[a](s)}});var Z4="divideScalar",_ue=["typed","numeric"],X4=$(Z4,_ue,e=>{var{typed:t,numeric:r}=e;return t(Z4,{"number, number":function(i,o){return i/o},"Complex, Complex":function(i,o){return i.div(o)},"BigNumber, BigNumber":function(i,o){return i.div(o)},"bigint, bigint":function(i,o){return i/o},"Fraction, Fraction":function(i,o){return i.div(o)},"Unit, number | Complex | Fraction | BigNumber | Unit":(n,i)=>n.divide(i),"number | Fraction | Complex | BigNumber, Unit":(n,i)=>i.divideInto(n)})});var K4="pow",Oue=["typed","config","identity","multiply","matrix","inv","fraction","number","Complex"],J4=$(K4,Oue,e=>{var{typed:t,config:r,identity:n,multiply:i,matrix:o,inv:l,number:s,fraction:a,Complex:u}=e;return t(K4,{"number, number":f,"Complex, Complex":function(x,v){return x.pow(v)},"BigNumber, BigNumber":function(x,v){return v.isInteger()||x>=0||r.predictable?x.pow(v):new u(x.toNumber(),0).pow(v.toNumber(),0)},"bigint, bigint":(g,x)=>g**x,"Fraction, Fraction":function(x,v){var S=x.pow(v);if(S!=null)return S;if(r.predictable)throw new Error("Result of pow is non-rational and cannot be expressed as a fraction");return f(x.valueOf(),v.valueOf())},"Array, number":p,"Array, BigNumber":function(x,v){return p(x,v.toNumber())},"Matrix, number":h,"Matrix, BigNumber":function(x,v){return h(x,v.toNumber())},"Unit, number | BigNumber":function(x,v){return x.pow(v)}});function f(g,x){if(r.predictable&&!dt(x)&&g<0)try{var v=a(x),S=s(v);if((x===S||Math.abs((x-S)/x)<1e-14)&&v.d%2n===1n)return(v.n%2n===0n?1:-1)*Math.pow(-g,x)}catch{}return r.predictable&&(g<-1&&x===1/0||g>-1&&g<0&&x===-1/0)?NaN:dt(x)||g>=0||r.predictable?FA(g,x):g*g<1&&x===1/0||g*g>1&&x===-1/0?0:new u(g,0).pow(x,0)}function p(g,x){if(!dt(x))throw new TypeError("For A^b, b must be an integer (value is "+x+")");var v=Ft(g);if(v.length!==2)throw new Error("For A^b, A must be 2 dimensional (A has "+v.length+" dimensions)");if(v[0]!==v[1])throw new Error("For A^b, A must be square (size is "+v[0]+"x"+v[1]+")");if(x<0)try{return p(l(g),-x)}catch(C){throw C.message==="Cannot calculate inverse, determinant is zero"?new TypeError("For A^b, when A is not invertible, b must be a positive integer (value is "+x+")"):C}for(var S=n(v[0]).valueOf(),D=g;x>=1;)(x&1)===1&&(S=i(D,S)),x>>=1,D=i(D,D);return S}function h(g,x){return o(p(g.valueOf(),x))}});var Fd="Number of decimals in function round must be an integer",Q4="round",Fue=["typed","config","matrix","equalScalar","zeros","BigNumber","DenseMatrix"],j4=$(Q4,Fue,e=>{var{typed:t,config:r,matrix:n,equalScalar:i,zeros:o,BigNumber:l,DenseMatrix:s}=e,a=Ir({typed:t,equalScalar:i}),u=Nr({typed:t,DenseMatrix:s}),f=Yn({typed:t});function p(h){return Math.abs(gd(h).exponent)}return t(Q4,{number:function(g){var x=Ed(g,p(r.relTol)),v=Qr(g,x,r.relTol,r.absTol)?x:g;return Ed(v)},"number, number":function(g,x){var v=p(r.relTol);if(x>=v)return Ed(g,x);var S=Ed(g,v),D=Qr(g,S,r.relTol,r.absTol)?S:g;return Ed(D,x)},"number, BigNumber":function(g,x){if(!x.isInteger())throw new TypeError(Fd);return new l(g).toDecimalPlaces(x.toNumber())},Complex:function(g){return g.round()},"Complex, number":function(g,x){if(x%1)throw new TypeError(Fd);return g.round(x)},"Complex, BigNumber":function(g,x){if(!x.isInteger())throw new TypeError(Fd);var v=x.toNumber();return g.round(v)},BigNumber:function(g){var x=new l(g).toDecimalPlaces(p(r.relTol)),v=vn(g,x,r.relTol,r.absTol)?x:g;return v.toDecimalPlaces(0)},"BigNumber, BigNumber":function(g,x){if(!x.isInteger())throw new TypeError(Fd);var v=p(r.relTol);if(x>=v)return g.toDecimalPlaces(x.toNumber());var S=g.toDecimalPlaces(v),D=vn(g,S,r.relTol,r.absTol)?S:g;return D.toDecimalPlaces(x.toNumber())},Fraction:function(g){return g.round()},"Fraction, number":function(g,x){if(x%1)throw new TypeError(Fd);return g.round(x)},"Fraction, BigNumber":function(g,x){if(!x.isInteger())throw new TypeError(Fd);return g.round(x.toNumber())},"Unit, number, Unit":t.referToSelf(h=>function(g,x,v){var S=g.toNumeric(v);return v.multiply(h(S,x))}),"Unit, BigNumber, Unit":t.referToSelf(h=>(g,x,v)=>h(g,x.toNumber(),v)),"Array | Matrix, number | BigNumber, Unit":t.referToSelf(h=>(g,x,v)=>yt(g,S=>h(S,x,v),!0)),"Array | Matrix | Unit, Unit":t.referToSelf(h=>(g,x)=>h(g,0,x)),"Array | Matrix":t.referToSelf(h=>g=>yt(g,h,!0)),"SparseMatrix, number | BigNumber":t.referToSelf(h=>(g,x)=>a(g,x,h,!1)),"DenseMatrix, number | BigNumber":t.referToSelf(h=>(g,x)=>f(g,x,h,!1)),"Array, number | BigNumber":t.referToSelf(h=>(g,x)=>f(n(g),x,h,!1).valueOf()),"number | Complex | BigNumber | Fraction, SparseMatrix":t.referToSelf(h=>(g,x)=>i(g,0)?o(x.size(),x.storage()):u(x,g,h,!0)),"number | Complex | BigNumber | Fraction, DenseMatrix":t.referToSelf(h=>(g,x)=>i(g,0)?o(x.size(),x.storage()):f(x,g,h,!0)),"number | Complex | BigNumber | Fraction, Array":t.referToSelf(h=>(g,x)=>f(n(x),g,h,!0).valueOf())})});var eL="log",Iue=["config","typed","typeOf","divideScalar","Complex"],tL=$(eL,Iue,e=>{var{typed:t,typeOf:r,config:n,divideScalar:i,Complex:o}=e;return t(eL,{number:function(s){return s>=0||n.predictable?NI(s):new o(s,0).log()},Complex:function(s){return s.log()},BigNumber:function(s){return!s.isNegative()||n.predictable?s.ln():new o(s.toNumber(),0).log()},"any, any":t.referToSelf(l=>(s,a)=>{if(r(s)==="Fraction"&&r(a)==="Fraction"){var u=s.log(a);if(u!==null)return u}return i(l(s),l(a))})})});var rL="log1p",kue=["typed","config","divideScalar","log","Complex"],nL=$(rL,kue,e=>{var{typed:t,config:r,divideScalar:n,log:i,Complex:o}=e;return t(rL,{number:function(a){return a>=-1||r.predictable?H1(a):l(new o(a,0))},Complex:l,BigNumber:function(a){var u=a.plus(1);return!u.isNegative()||r.predictable?u.ln():l(new o(a.toNumber(),0))},"Array | Matrix":t.referToSelf(s=>a=>yt(a,s)),"any, any":t.referToSelf(s=>(a,u)=>n(s(a),i(u)))});function l(s){var a=s.re+1;return new o(Math.log(Math.sqrt(a*a+s.im*s.im)),Math.atan2(s.im,a))}});var iL="nthRoots",Lue=["config","typed","divideScalar","Complex"],oL=$(iL,Lue,e=>{var{typed:t,config:r,divideScalar:n,Complex:i}=e,o=[function(a){return new i(a,0)},function(a){return new i(0,a)},function(a){return new i(-a,0)},function(a){return new i(0,-a)}];function l(s,a){if(a<0)throw new Error("Root must be greater than zero");if(a===0)throw new Error("Root must be non-zero");if(a%1!==0)throw new Error("Root must be an integer");if(s===0||s.abs()===0)return[new i(0,0)];var u=typeof s=="number",f;(u||s.re===0||s.im===0)&&(u?f=2*+(s<0):s.im===0?f=2*+(s.re<0):f=2*+(s.im<0)+1);for(var p=s.arg(),h=s.abs(),g=[],x=Math.pow(h,1/a),v=0;v{var{typed:t,equalScalar:r,matrix:n,pow:i,DenseMatrix:o,concat:l,SparseMatrix:s}=e,a=Yr({typed:t}),u=si({typed:t,SparseMatrix:s}),f=Ir({typed:t,equalScalar:r}),p=Nr({typed:t,DenseMatrix:o}),h=Xt({typed:t,matrix:n,concat:l}),g={};for(var x in i.signatures)Object.prototype.hasOwnProperty.call(i.signatures,x)&&!x.includes("Matrix")&&!x.includes("Array")&&(g[x]=i.signatures[x]);var v=t(g);return t(aL,h({elop:v,SS:u,DS:a,Ss:f,sS:p}))});var uL="dotDivide",Pue=["typed","matrix","equalScalar","divideScalar","DenseMatrix","concat","SparseMatrix"],lL=$(uL,Pue,e=>{var{typed:t,matrix:r,equalScalar:n,divideScalar:i,DenseMatrix:o,concat:l,SparseMatrix:s}=e,a=Zn({typed:t,equalScalar:n}),u=Yr({typed:t}),f=si({typed:t,SparseMatrix:s}),p=Ir({typed:t,equalScalar:n}),h=Nr({typed:t,DenseMatrix:o}),g=Xt({typed:t,matrix:r,concat:l});return t(uL,g({elop:i,SS:f,DS:u,SD:a,Ss:p,sS:h}))});function Lu(e){var{DenseMatrix:t}=e;return function(n,i,o){var l=n.size();if(l.length!==2)throw new RangeError("Matrix must be two dimensional (size: "+Ht(l)+")");var s=l[0],a=l[1];if(s!==a)throw new RangeError("Matrix must be square (size: "+Ht(l)+")");var u=[];if(gt(i)){var f=i.size(),p=i._data;if(f.length===1){if(f[0]!==s)throw new RangeError("Dimension mismatch. Matrix columns must match vector length.");for(var h=0;h{var{typed:t,matrix:r,divideScalar:n,multiplyScalar:i,subtractScalar:o,equalScalar:l,DenseMatrix:s}=e,a=Lu({DenseMatrix:s});return t(fL,{"SparseMatrix, Array | Matrix":function(h,g){return f(h,g)},"DenseMatrix, Array | Matrix":function(h,g){return u(h,g)},"Array, Array | Matrix":function(h,g){var x=r(h),v=u(x,g);return v.valueOf()}});function u(p,h){h=a(p,h,!0);for(var g=h._data,x=p._size[0],v=p._size[1],S=[],D=p._data,C=0;CM&&(O.push(S[L]),F.push(q))}if(l(N,0))throw new Error("Linear system cannot be solved since matrix is singular");for(var R=n(T,N),V=0,X=F.length;V{var{typed:t,matrix:r,divideScalar:n,multiplyScalar:i,subtractScalar:o,equalScalar:l,DenseMatrix:s}=e,a=Lu({DenseMatrix:s});return t(pL,{"SparseMatrix, Array | Matrix":function(h,g){return f(h,g)},"DenseMatrix, Array | Matrix":function(h,g){return u(h,g)},"Array, Array | Matrix":function(h,g){var x=r(h),v=u(x,g);return v.valueOf()}});function u(p,h){h=a(p,h,!0);for(var g=h._data,x=p._size[0],v=p._size[1],S=[],D=p._data,C=v-1;C>=0;C--){var E=g[C][0]||0,M=void 0;if(l(E,0))M=0;else{var T=D[C][C];if(l(T,0))throw new Error("Linear system cannot be solved since matrix is singular");M=n(E,T);for(var N=C-1;N>=0;N--)g[N]=[o(g[N][0]||0,i(M,D[N][C]))]}S[C]=[M]}return new s({data:S,size:[x,1]})}function f(p,h){h=a(p,h,!0);for(var g=h._data,x=p._size[0],v=p._size[1],S=p._values,D=p._index,C=p._ptr,E=[],M=v-1;M>=0;M--){var T=g[M][0]||0;if(l(T,0))E[M]=[0];else{for(var N=0,O=[],F=[],I=C[M],B=C[M+1],L=B-1;L>=I;L--){var q=D[L];q===M?N=S[L]:q{var{typed:t,matrix:r,divideScalar:n,multiplyScalar:i,subtractScalar:o,equalScalar:l,DenseMatrix:s}=e,a=Lu({DenseMatrix:s});return t(dL,{"SparseMatrix, Array | Matrix":function(h,g){return f(h,g)},"DenseMatrix, Array | Matrix":function(h,g){return u(h,g)},"Array, Array | Matrix":function(h,g){var x=r(h),v=u(x,g);return v.map(S=>S.valueOf())}});function u(p,h){for(var g=[a(p,h,!0)._data.map(F=>F[0])],x=p._data,v=p._size[0],S=p._size[1],D=0;Dnew s({data:F.map(I=>[I]),size:[v,1]}))}function f(p,h){for(var g=[a(p,h,!0)._data.map(we=>we[0])],x=p._size[0],v=p._size[1],S=p._values,D=p._index,C=p._ptr,E=0;EE&&(O.push(S[q]),F.push(R))}if(l(L,0))if(l(N[E],0)){if(T===0){var H=[...N];H[E]=1;for(var ee=0,Z=F.length;eenew s({data:we.map(he=>[he]),size:[x,1]}))}});var gL="usolveAll",Uue=["typed","matrix","divideScalar","multiplyScalar","subtractScalar","equalScalar","DenseMatrix"],vL=$(gL,Uue,e=>{var{typed:t,matrix:r,divideScalar:n,multiplyScalar:i,subtractScalar:o,equalScalar:l,DenseMatrix:s}=e,a=Lu({DenseMatrix:s});return t(gL,{"SparseMatrix, Array | Matrix":function(h,g){return f(h,g)},"DenseMatrix, Array | Matrix":function(h,g){return u(h,g)},"Array, Array | Matrix":function(h,g){var x=r(h),v=u(x,g);return v.map(S=>S.valueOf())}});function u(p,h){for(var g=[a(p,h,!0)._data.map(F=>F[0])],x=p._data,v=p._size[0],S=p._size[1],D=S-1;D>=0;D--)for(var C=g.length,E=0;E=0;O--)N[O]=o(N[O],x[O][D]);g.push(N)}}else{if(E===0)return[];g.splice(E,1),E-=1,C-=1}else{M[D]=n(M[D],x[D][D]);for(var T=D-1;T>=0;T--)M[T]=o(M[T],i(M[D],x[T][D]))}}return g.map(F=>new s({data:F.map(I=>[I]),size:[v,1]}))}function f(p,h){for(var g=[a(p,h,!0)._data.map(we=>we[0])],x=p._size[0],v=p._size[1],S=p._values,D=p._index,C=p._ptr,E=v-1;E>=0;E--)for(var M=g.length,T=0;T=I;q--){var R=D[q];R===E?L=S[q]:Rnew s({data:we.map(he=>[he]),size:[x,1]}))}});var Hue="matAlgo08xS0Sid",$ue=["typed","equalScalar"],Id=$(Hue,$ue,e=>{var{typed:t,equalScalar:r}=e;return function(i,o,l){var s=i._values,a=i._index,u=i._ptr,f=i._size,p=i._datatype||i._data===void 0?i._datatype:i.getDataType(),h=o._values,g=o._index,x=o._ptr,v=o._size,S=o._datatype||o._data===void 0?o._datatype:o.getDataType();if(f.length!==v.length)throw new $t(f.length,v.length);if(f[0]!==v[0]||f[1]!==v[1])throw new RangeError("Dimension mismatch. Matrix A ("+f+") must match Matrix B ("+v+")");if(!s||!h)throw new Error("Cannot perform operation on Pattern Sparse Matrices");var D=f[0],C=f[1],E,M=r,T=0,N=l;typeof p=="string"&&p===S&&p!=="mixed"&&(E=p,M=t.find(r,[E,E]),T=t.convert(0,E),N=t.find(l,[E,E]));for(var O=[],F=[],I=[],B=[],L=[],q,R,V,X,U=0;U{var{typed:t,matrix:r}=e;return{"Array, number":t.referTo("DenseMatrix, number",n=>(i,o)=>n(r(i),o).valueOf()),"Array, BigNumber":t.referTo("DenseMatrix, BigNumber",n=>(i,o)=>n(r(i),o).valueOf()),"number, Array":t.referTo("number, DenseMatrix",n=>(i,o)=>n(i,r(o)).valueOf()),"BigNumber, Array":t.referTo("BigNumber, DenseMatrix",n=>(i,o)=>n(i,r(o)).valueOf())}});var xL="leftShift",Wue=["typed","matrix","equalScalar","zeros","DenseMatrix","concat"],yL=$(xL,Wue,e=>{var{typed:t,matrix:r,equalScalar:n,zeros:i,DenseMatrix:o,concat:l}=e,s=ho({typed:t}),a=Zn({typed:t,equalScalar:n}),u=Id({typed:t,equalScalar:n}),f=Xo({typed:t,DenseMatrix:o}),p=Ir({typed:t,equalScalar:n}),h=Yn({typed:t}),g=Xt({typed:t,matrix:r,concat:l}),x=kd({typed:t,matrix:r});return t(xL,{"number, number":PA,"BigNumber, BigNumber":c5,"bigint, bigint":(v,S)=>v<(S,D)=>n(D,0)?S.clone():p(S,D,v,!1)),"DenseMatrix, number | BigNumber":t.referToSelf(v=>(S,D)=>n(D,0)?S.clone():h(S,D,v,!1)),"number | BigNumber, SparseMatrix":t.referToSelf(v=>(S,D)=>n(S,0)?i(D.size(),D.storage()):f(D,S,v,!0)),"number | BigNumber, DenseMatrix":t.referToSelf(v=>(S,D)=>n(S,0)?i(D.size(),D.storage()):h(D,S,v,!0))},x,g({SS:u,DS:s,SD:a}))});var wL="rightArithShift",Vue=["typed","matrix","equalScalar","zeros","DenseMatrix","concat"],bL=$(wL,Vue,e=>{var{typed:t,matrix:r,equalScalar:n,zeros:i,DenseMatrix:o,concat:l}=e,s=ho({typed:t}),a=Zn({typed:t,equalScalar:n}),u=Id({typed:t,equalScalar:n}),f=Xo({typed:t,DenseMatrix:o}),p=Ir({typed:t,equalScalar:n}),h=Yn({typed:t}),g=Xt({typed:t,matrix:r,concat:l}),x=kd({typed:t,matrix:r});return t(wL,{"number, number":RA,"BigNumber, BigNumber":p5,"bigint, bigint":(v,S)=>v>>S,"SparseMatrix, number | BigNumber":t.referToSelf(v=>(S,D)=>n(D,0)?S.clone():p(S,D,v,!1)),"DenseMatrix, number | BigNumber":t.referToSelf(v=>(S,D)=>n(D,0)?S.clone():h(S,D,v,!1)),"number | BigNumber, SparseMatrix":t.referToSelf(v=>(S,D)=>n(S,0)?i(D.size(),D.storage()):f(D,S,v,!0)),"number | BigNumber, DenseMatrix":t.referToSelf(v=>(S,D)=>n(S,0)?i(D.size(),D.storage()):h(D,S,v,!0))},x,g({SS:u,DS:s,SD:a}))});var DL="rightLogShift",Gue=["typed","matrix","equalScalar","zeros","DenseMatrix","concat"],SL=$(DL,Gue,e=>{var{typed:t,matrix:r,equalScalar:n,zeros:i,DenseMatrix:o,concat:l}=e,s=ho({typed:t}),a=Zn({typed:t,equalScalar:n}),u=Id({typed:t,equalScalar:n}),f=Xo({typed:t,DenseMatrix:o}),p=Ir({typed:t,equalScalar:n}),h=Yn({typed:t}),g=Xt({typed:t,matrix:r,concat:l}),x=kd({typed:t,matrix:r});return t(DL,{"number, number":qA,"SparseMatrix, number | BigNumber":t.referToSelf(v=>(S,D)=>n(D,0)?S.clone():p(S,D,v,!1)),"DenseMatrix, number | BigNumber":t.referToSelf(v=>(S,D)=>n(D,0)?S.clone():h(S,D,v,!1)),"number | BigNumber, SparseMatrix":t.referToSelf(v=>(S,D)=>n(S,0)?i(D.size(),D.storage()):f(D,S,v,!0)),"number | BigNumber, DenseMatrix":t.referToSelf(v=>(S,D)=>n(S,0)?i(D.size(),D.storage()):h(D,S,v,!0))},x,g({SS:u,DS:s,SD:a}))});var NL="and",Yue=["typed","matrix","equalScalar","zeros","not","concat"],Iw=$(NL,Yue,e=>{var{typed:t,matrix:r,equalScalar:n,zeros:i,not:o,concat:l}=e,s=Zn({typed:t,equalScalar:n}),a=rc({typed:t,equalScalar:n}),u=Ir({typed:t,equalScalar:n}),f=Yn({typed:t}),p=Xt({typed:t,matrix:r,concat:l});return t(NL,{"number, number":fw,"Complex, Complex":function(g,x){return(g.re!==0||g.im!==0)&&(x.re!==0||x.im!==0)},"BigNumber, BigNumber":function(g,x){return!g.isZero()&&!x.isZero()&&!g.isNaN()&&!x.isNaN()},"bigint, bigint":fw,"Unit, Unit":t.referToSelf(h=>(g,x)=>h(g.value||0,x.value||0)),"SparseMatrix, any":t.referToSelf(h=>(g,x)=>o(x)?i(g.size(),g.storage()):u(g,x,h,!1)),"DenseMatrix, any":t.referToSelf(h=>(g,x)=>o(x)?i(g.size(),g.storage()):f(g,x,h,!1)),"any, SparseMatrix":t.referToSelf(h=>(g,x)=>o(g)?i(g.size(),g.storage()):u(x,g,h,!0)),"any, DenseMatrix":t.referToSelf(h=>(g,x)=>o(g)?i(g.size(),g.storage()):f(x,g,h,!0)),"Array, any":t.referToSelf(h=>(g,x)=>h(r(g),x).valueOf()),"any, Array":t.referToSelf(h=>(g,x)=>h(g,r(x)).valueOf())},p({SS:a,DS:s}))});var kw="compare",Zue=["typed","config","matrix","equalScalar","BigNumber","Fraction","DenseMatrix","concat"],EL=$(kw,Zue,e=>{var{typed:t,config:r,equalScalar:n,matrix:i,BigNumber:o,Fraction:l,DenseMatrix:s,concat:a}=e,u=Yr({typed:t}),f=tc({typed:t,equalScalar:n}),p=Nr({typed:t,DenseMatrix:s}),h=Xt({typed:t,matrix:i,concat:a}),g=Ka({typed:t});return t(kw,Xue({typed:t,config:r}),{"boolean, boolean":function(v,S){return v===S?0:v>S?1:-1},"BigNumber, BigNumber":function(v,S){return vn(v,S,r.relTol,r.absTol)?new o(0):new o(v.cmp(S))},"bigint, bigint":function(v,S){return v===S?0n:v>S?1n:-1n},"Fraction, Fraction":function(v,S){return new l(v.compare(S))},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")}},g,h({SS:f,DS:u,Ss:p}))}),Xue=$(kw,["typed","config"],e=>{var{typed:t,config:r}=e;return t(kw,{"number, number":function(i,o){return Qr(i,o,r.relTol,r.absTol)?0:i>o?1:-1}})});var Tp=mn(CL(),1);var ML="compareNatural",Kue=["typed","compare"],TL=$(ML,Kue,e=>{var{typed:t,compare:r}=e,n=r.signatures["boolean,boolean"];return t(ML,{"any, any":i});function i(a,u){var f=pr(a),p=pr(u),h;if((f==="number"||f==="BigNumber"||f==="Fraction")&&(p==="number"||p==="BigNumber"||p==="Fraction"))return h=r(a,u),h.toString()!=="0"?h>0?1:-1:(0,Tp.default)(f,p);var g=["Array","DenseMatrix","SparseMatrix"];if(g.includes(f)||g.includes(p))return h=o(i,a,u),h!==0?h:(0,Tp.default)(f,p);if(f!==p)return(0,Tp.default)(f,p);if(f==="Complex")return Jue(a,u);if(f==="Unit")return a.equalBase(u)?i(a.value,u.value):l(i,a.formatUnits(),u.formatUnits());if(f==="boolean")return n(a,u);if(f==="string")return(0,Tp.default)(a,u);if(f==="Object")return s(i,a,u);if(f==="null"||f==="undefined")return 0;throw new TypeError('Unsupported type of value "'+f+'"')}function o(a,u,f){return va(u)&&va(f)?l(a,u.toJSON().values,f.toJSON().values):va(u)?o(a,u.toArray(),f):va(f)?o(a,u,f.toArray()):Tl(u)?o(a,u.toJSON().data,f):Tl(f)?o(a,u,f.toJSON().data):Array.isArray(u)?Array.isArray(f)?l(a,u,f):o(a,u,[f]):o(a,[u],f)}function l(a,u,f){for(var p=0,h=Math.min(u.length,f.length);pf.length?1:u.lengtht.re?1:e.ret.im?1:e.im{var{typed:t,matrix:r,concat:n}=e,i=Xt({typed:t,matrix:r,concat:n});return t(_L,rw,i({elop:rw,Ds:!0}))});var Lw="equal",jue=["typed","matrix","equalScalar","DenseMatrix","concat","SparseMatrix"],FL=$(Lw,jue,e=>{var{typed:t,matrix:r,equalScalar:n,DenseMatrix:i,concat:o,SparseMatrix:l}=e,s=Yr({typed:t}),a=si({typed:t,SparseMatrix:l}),u=Nr({typed:t,DenseMatrix:i}),f=Xt({typed:t,matrix:r,concat:o});return t(Lw,ele({typed:t,equalScalar:n}),f({elop:n,SS:a,DS:s,Ss:u}))}),ele=$(Lw,["typed","equalScalar"],e=>{var{typed:t,equalScalar:r}=e;return t(Lw,{"any, any":function(i,o){return i===null?o===null:o===null?i===null:i===void 0?o===void 0:o===void 0?i===void 0:r(i,o)}})});var IL="equalText",tle=["typed","compareText","isZero"],kL=$(IL,tle,e=>{var{typed:t,compareText:r,isZero:n}=e;return t(IL,{"any, any":function(o,l){return n(r(o,l))}})});var Bw="smaller",rle=["typed","config","matrix","DenseMatrix","concat","SparseMatrix"],LL=$(Bw,rle,e=>{var{typed:t,config:r,matrix:n,DenseMatrix:i,concat:o,SparseMatrix:l}=e,s=Yr({typed:t}),a=si({typed:t,SparseMatrix:l}),u=Nr({typed:t,DenseMatrix:i}),f=Xt({typed:t,matrix:n,concat:o}),p=Ka({typed:t});return t(Bw,nle({typed:t,config:r}),{"boolean, boolean":(h,g)=>hhh.compare(g)===-1,"Complex, Complex":function(g,x){throw new TypeError("No ordering relation is defined for complex numbers")}},p,f({SS:a,DS:s,Ss:u}))}),nle=$(Bw,["typed","config"],e=>{var{typed:t,config:r}=e;return t(Bw,{"number, number":function(i,o){return i{var{typed:t,config:r,matrix:n,DenseMatrix:i,concat:o,SparseMatrix:l}=e,s=Yr({typed:t}),a=si({typed:t,SparseMatrix:l}),u=Nr({typed:t,DenseMatrix:i}),f=Xt({typed:t,matrix:n,concat:o}),p=Ka({typed:t});return t(Pw,ole({typed:t,config:r}),{"boolean, boolean":(h,g)=>h<=g,"BigNumber, BigNumber":function(g,x){return g.lte(x)||vn(g,x,r.relTol,r.absTol)},"bigint, bigint":(h,g)=>h<=g,"Fraction, Fraction":(h,g)=>h.compare(g)!==1,"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")}},p,f({SS:a,DS:s,Ss:u}))}),ole=$(Pw,["typed","config"],e=>{var{typed:t,config:r}=e;return t(Pw,{"number, number":function(i,o){return i<=o||Qr(i,o,r.relTol,r.absTol)}})});var Rw="larger",ale=["typed","config","matrix","DenseMatrix","concat","SparseMatrix"],PL=$(Rw,ale,e=>{var{typed:t,config:r,matrix:n,DenseMatrix:i,concat:o,SparseMatrix:l}=e,s=Yr({typed:t}),a=si({typed:t,SparseMatrix:l}),u=Nr({typed:t,DenseMatrix:i}),f=Xt({typed:t,matrix:n,concat:o}),p=Ka({typed:t});return t(Rw,sle({typed:t,config:r}),{"boolean, boolean":(h,g)=>h>g,"BigNumber, BigNumber":function(g,x){return g.gt(x)&&!vn(g,x,r.relTol,r.absTol)},"bigint, bigint":(h,g)=>h>g,"Fraction, Fraction":(h,g)=>h.compare(g)===1,"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")}},p,f({SS:a,DS:s,Ss:u}))}),sle=$(Rw,["typed","config"],e=>{var{typed:t,config:r}=e;return t(Rw,{"number, number":function(i,o){return i>o&&!Qr(i,o,r.relTol,r.absTol)}})});var qw="largerEq",ule=["typed","config","matrix","DenseMatrix","concat","SparseMatrix"],RL=$(qw,ule,e=>{var{typed:t,config:r,matrix:n,DenseMatrix:i,concat:o,SparseMatrix:l}=e,s=Yr({typed:t}),a=si({typed:t,SparseMatrix:l}),u=Nr({typed:t,DenseMatrix:i}),f=Xt({typed:t,matrix:n,concat:o}),p=Ka({typed:t});return t(qw,lle({typed:t,config:r}),{"boolean, boolean":(h,g)=>h>=g,"BigNumber, BigNumber":function(g,x){return g.gte(x)||vn(g,x,r.relTol,r.absTol)},"bigint, bigint":function(g,x){return g>=x},"Fraction, Fraction":(h,g)=>h.compare(g)!==-1,"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")}},p,f({SS:a,DS:s,Ss:u}))}),lle=$(qw,["typed","config"],e=>{var{typed:t,config:r}=e;return t(qw,{"number, number":function(i,o){return i>=o||Qr(i,o,r.relTol,r.absTol)}})});var qL="deepEqual",fle=["typed","equal"],zL=$(qL,fle,e=>{var{typed:t,equal:r}=e;return t(qL,{"any, any":function(o,l){return n(o.valueOf(),l.valueOf())}});function n(i,o){if(Array.isArray(i))if(Array.isArray(o)){var l=i.length;if(l!==o.length)return!1;for(var s=0;s{var{typed:t,config:r,equalScalar:n,matrix:i,DenseMatrix:o,concat:l,SparseMatrix:s}=e,a=Yr({typed:t}),u=si({typed:t,SparseMatrix:s}),f=Nr({typed:t,DenseMatrix:o}),p=Xt({typed:t,matrix:i,concat:l});return t(zw,ple({typed:t,equalScalar:n}),p({elop:h,SS:u,DS:a,Ss:f}));function h(g,x){return!n(g,x)}}),ple=$(zw,["typed","equalScalar"],e=>{var{typed:t,equalScalar:r}=e;return t(zw,{"any, any":function(i,o){return i===null?o!==null:o===null?i!==null:i===void 0?o!==void 0:o===void 0?i!==void 0:!r(i,o)}})});var HL="partitionSelect",mle=["typed","isNumeric","isNaN","compare"],$L=$(HL,mle,e=>{var{typed:t,isNumeric:r,isNaN:n,compare:i}=e,o=i,l=(u,f)=>-i(u,f);return t(HL,{"Array | Matrix, number":function(f,p){return s(f,p,o)},"Array | Matrix, number, string":function(f,p,h){if(h==="asc")return s(f,p,o);if(h==="desc")return s(f,p,l);throw new Error('Compare string must be "asc" or "desc"')},"Array | Matrix, number, function":s});function s(u,f,p){if(!dt(f)||f<0)throw new Error("k must be a non-negative integer");if(gt(u)){var h=u.size();if(h.length>1)throw new Error("Only one dimensional matrices supported");return a(u.valueOf(),f,p)}if(Array.isArray(u))return a(u,f,p)}function a(u,f,p){if(f>=u.length)throw new Error("k out of bounds");for(var h=0;h=0){var C=u[S];u[S]=u[v],u[v]=C,--S}else++v;p(u[v],D)>0&&--v,f<=v?x=v:g=v+1}return u[f]}});var WL="sort",dle=["typed","matrix","compare","compareNatural"],VL=$(WL,dle,e=>{var{typed:t,matrix:r,compare:n,compareNatural:i}=e,o=n,l=(f,p)=>-n(f,p);return t(WL,{Array:function(p){return a(p),p.sort(o)},Matrix:function(p){return u(p),r(p.toArray().sort(o),p.storage())},"Array, function":function(p,h){return a(p),p.sort(h)},"Matrix, function":function(p,h){return u(p),r(p.toArray().sort(h),p.storage())},"Array, string":function(p,h){return a(p),p.sort(s(h))},"Matrix, string":function(p,h){return u(p),r(p.toArray().sort(s(h)),p.storage())}});function s(f){if(f==="asc")return o;if(f==="desc")return l;if(f==="natural")return i;throw new Error('String "asc", "desc", or "natural" expected')}function a(f){if(Ft(f).length!==1)throw new Error("One dimensional array expected")}function u(f){if(f.size().length!==1)throw new Error("One dimensional matrix expected")}});var GL="max",hle=["typed","config","numeric","larger"],Uw=$(GL,hle,e=>{var{typed:t,config:r,numeric:n,larger:i}=e;return t(GL,{"Array | Matrix":l,"Array | Matrix, number | BigNumber":function(a,u){return ec(a,u.valueOf(),o)},"...":function(a){if(Xa(a))throw new TypeError("Scalar values expected in function max");return l(a)}});function o(s,a){try{return i(s,a)?s:a}catch(u){throw Cn(u,"max",a)}}function l(s){var a;if(mo(s,function(u){try{isNaN(u)&&typeof u=="number"?a=NaN:(a===void 0||i(u,a))&&(a=u)}catch(f){throw Cn(f,"max",u)}}),a===void 0)throw new Error("Cannot calculate max of an empty array");return typeof a=="string"&&(a=n(a,fo(a,r))),a}});var YL="min",gle=["typed","config","numeric","smaller"],Hw=$(YL,gle,e=>{var{typed:t,config:r,numeric:n,smaller:i}=e;return t(YL,{"Array | Matrix":l,"Array | Matrix, number | BigNumber":function(a,u){return ec(a,u.valueOf(),o)},"...":function(a){if(Xa(a))throw new TypeError("Scalar values expected in function min");return l(a)}});function o(s,a){try{return i(s,a)?s:a}catch(u){throw Cn(u,"min",a)}}function l(s){var a;if(mo(s,function(u){try{isNaN(u)&&typeof u=="number"?a=NaN:(a===void 0||i(u,a))&&(a=u)}catch(f){throw Cn(f,"min",u)}}),a===void 0)throw new Error("Cannot calculate min of an empty array");return typeof a=="string"&&(a=n(a,fo(a,r))),a}});var vle="ImmutableDenseMatrix",xle=["smaller","DenseMatrix"],ZL=$(vle,xle,e=>{var{smaller:t,DenseMatrix:r}=e;function n(i,o){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(o&&!dn(o))throw new Error("Invalid datatype: "+o);if(gt(i)||dr(i)){var l=new r(i,o);this._data=l._data,this._size=l._size,this._datatype=l._datatype,this._min=null,this._max=null}else if(i&&dr(i.data)&&dr(i.size))this._data=i.data,this._size=i.size,this._datatype=i.datatype,this._min=typeof i.min<"u"?i.min:null,this._max=typeof i.max<"u"?i.max:null;else{if(i)throw new TypeError("Unsupported type of data ("+pr(i)+")");this._data=[],this._size=[0],this._datatype=o,this._min=null,this._max=null}}return n.prototype=new r,n.prototype.type="ImmutableDenseMatrix",n.prototype.isImmutableDenseMatrix=!0,n.prototype.subset=function(i){switch(arguments.length){case 1:{var o=r.prototype.subset.call(this,i);return gt(o)?new n({data:o._data,size:o._size,datatype:o._datatype}):o}case 2:case 3:throw new Error("Cannot invoke set subset on an Immutable Matrix instance");default:throw new SyntaxError("Wrong number of arguments")}},n.prototype.set=function(){throw new Error("Cannot invoke set on an Immutable Matrix instance")},n.prototype.resize=function(){throw new Error("Cannot invoke resize on an Immutable Matrix instance")},n.prototype.reshape=function(){throw new Error("Cannot invoke reshape on an Immutable Matrix instance")},n.prototype.clone=function(){return new n({data:_t(this._data),size:_t(this._size),datatype:this._datatype})},n.prototype.toJSON=function(){return{mathjs:"ImmutableDenseMatrix",data:this._data,size:this._size,datatype:this._datatype}},n.fromJSON=function(i){return new n(i)},n.prototype.swapRows=function(){throw new Error("Cannot invoke swapRows on an Immutable Matrix instance")},n.prototype.min=function(){if(this._min===null){var i=null;this.forEach(function(o){(i===null||t(o,i))&&(i=o)}),this._min=i!==null?i:void 0}return this._min},n.prototype.max=function(){if(this._max===null){var i=null;this.forEach(function(o){(i===null||t(i,o))&&(i=o)}),this._max=i!==null?i:void 0}return this._max},n},{isClass:!0});var yle="Index",wle=["ImmutableDenseMatrix","getMatrixDataType"],KL=$(yle,wle,e=>{var{ImmutableDenseMatrix:t,getMatrixDataType:r}=e;function n(o){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this._dimensions=[],this._sourceSize=[],this._isScalar=!0;for(var l=0,s=arguments.length;l{r&&t.push(n)}),t}var ble="FibonacciHeap",Dle=["smaller","larger"],JL=$(ble,Dle,e=>{var{smaller:t,larger:r}=e,n=1/Math.log((1+Math.sqrt(5))/2);function i(){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator");this._minimum=null,this._size=0}i.prototype.type="FibonacciHeap",i.prototype.isFibonacciHeap=!0,i.prototype.insert=function(f,p){var h={key:f,value:p,degree:0};if(this._minimum){var g=this._minimum;h.left=g,h.right=g.right,g.right=h,h.right.left=h,t(f,g.key)&&(this._minimum=h)}else h.left=h,h.right=h,this._minimum=h;return this._size++,h},i.prototype.size=function(){return this._size},i.prototype.clear=function(){this._minimum=null,this._size=0},i.prototype.isEmpty=function(){return this._size===0},i.prototype.extractMinimum=function(){var f=this._minimum;if(f===null)return f;for(var p=this._minimum,h=f.degree,g=f.child;h>0;){var x=g.right;g.left.right=g.right,g.right.left=g.left,g.left=p,g.right=p.right,p.right=g,g.right.left=g,g.parent=null,g=x,h--}return f.left.right=f.right,f.right.left=f.left,f===f.right?p=null:(p=f.right,p=u(p,this._size)),this._size--,this._minimum=p,f},i.prototype.remove=function(f){this._minimum=o(this._minimum,f,-1),this.extractMinimum()};function o(f,p,h){p.key=h;var g=p.parent;return g&&t(p.key,g.key)&&(l(f,p,g),s(f,g)),t(p.key,f.key)&&(f=p),f}function l(f,p,h){p.left.right=p.right,p.right.left=p.left,h.degree--,h.child===p&&(h.child=p.right),h.degree===0&&(h.child=null),p.left=f,p.right=f.right,f.right=p,p.right.left=p,p.parent=null,p.mark=!1}function s(f,p){var h=p.parent;h&&(p.mark?(l(f,p,h),s(h)):p.mark=!0)}var a=function(p,h){p.left.right=p.right,p.right.left=p.left,p.parent=h,h.child?(p.left=h.child,p.right=h.child.right,h.child.right=p,p.right.left=p):(h.child=p,p.right=p,p.left=p),h.degree++,p.mark=!1};function u(f,p){var h=Math.floor(Math.log(p)*n)+1,g=new Array(h),x=0,v=f;if(v)for(x++,v=v.right;v!==f;)x++,v=v.right;for(var S;x>0;){for(var D=v.degree,C=v.right;S=g[D],!!S;){if(r(v.key,S.key)){var E=S;S=v,v=E}a(S,v),g[D]=null,D++}g[D]=v,v=C,x--}f=null;for(var M=0;M{var{addScalar:t,equalScalar:r,FibonacciHeap:n}=e;function i(){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator");this._values=[],this._heap=new n}return i.prototype.type="Spa",i.prototype.isSpa=!0,i.prototype.set=function(o,l){if(this._values[o])this._values[o].value=l;else{var s=this._heap.insert(o,l);this._values[o]=s}},i.prototype.get=function(o){var l=this._values[o];return l?l.value:0},i.prototype.accumulate=function(o,l){var s=this._values[o];s?s.value=t(s.value,l):(s=this._heap.insert(o,l),this._values[o]=s)},i.prototype.forEach=function(o,l,s){var a=this._heap,u=this._values,f=[],p=a.extractMinimum();for(p&&f.push(p);p&&p.key<=l;)p.key>=o&&(r(p.value,0)||s(p.key,p.value,this)),p=a.extractMinimum(),p&&f.push(p);for(var h=0;h1&&arguments[1]!==void 0?arguments[1]:{};return r=r??Number.POSITIVE_INFINITY,t=t??JSON.stringify,function n(){typeof n.cache!="object"&&(n.cache={values:new Map,lru:jL(r||Number.POSITIVE_INFINITY)});for(var i=[],o=0;o{var{on:t,config:r,addScalar:n,subtractScalar:i,multiplyScalar:o,divideScalar:l,pow:s,abs:a,fix:u,round:f,equal:p,isNumeric:h,format:g,number:x,Complex:v,BigNumber:S,Fraction:D}=e,C=x;function E(ie,ue){if(!(this instanceof E))throw new Error("Constructor must be called with the new operator");if(!(ie==null||h(ie)||vi(ie)))throw new TypeError("First parameter in Unit constructor must be number, BigNumber, Fraction, Complex, or undefined");if(this.fixPrefix=!1,this.skipAutomaticSimplification=!0,ue===void 0)this.units=[],this.dimensions=ee.map(Ce=>0);else if(typeof ue=="string"){var Te=E.parse(ue);this.units=Te.units,this.dimensions=Te.dimensions}else if(ti(ue)&&ue.value===null)this.fixPrefix=ue.fixPrefix,this.skipAutomaticSimplification=ue.skipAutomaticSimplification,this.dimensions=ue.dimensions.slice(0),this.units=ue.units.map(Ce=>Gn({},Ce));else throw new TypeError("Second parameter in Unit constructor must be a string or valueless Unit");this.value=this._normalize(ie)}Object.defineProperty(E,"name",{value:"Unit"}),E.prototype.constructor=E,E.prototype.type="Unit",E.prototype.isUnit=!0;var M,T,N;function O(){for(;N===" "||N===" ";)B()}function F(ie){return ie>="0"&&ie<="9"||ie==="."}function I(ie){return ie>="0"&&ie<="9"}function B(){T++,N=M.charAt(T)}function L(ie){T=ie,N=M.charAt(T)}function q(){var ie="",ue=T;if(N==="+"?B():N==="-"&&(ie+=N,B()),!F(N))return L(ue),null;if(N==="."){if(ie+=N,B(),!I(N))return L(ue),null}else{for(;I(N);)ie+=N,B();N==="."&&(ie+=N,B())}for(;I(N);)ie+=N,B();if(N==="E"||N==="e"){var Te="",Ce=T;if(Te+=N,B(),(N==="+"||N==="-")&&(Te+=N,B()),!I(N))return L(Ce),ie;for(ie=ie+Te;I(N);)ie+=N,B()}return ie}function R(){for(var ie="";I(N)||E.isValidAlpha(N);)ie+=N,B();var ue=ie.charAt(0);return E.isValidAlpha(ue)?ie:null}function V(ie){return N===ie?(B(),ie):null}E.parse=function(ie,ue){if(ue=ue||{},M=ie,T=-1,N="",typeof M!="string")throw new TypeError("Invalid argument in Unit.parse, string expected");var Te=new E;Te.units=[];var Ce=1,Je=!1;B(),O();var He=q(),it=null;if(He){if(r.number==="BigNumber")it=new S(He);else if(r.number==="Fraction")try{it=new D(He)}catch{it=parseFloat(He)}else it=parseFloat(He);O(),V("*")?(Ce=1,Je=!0):V("/")&&(Ce=-1,Je=!0)}for(var ct=[],rt=1;;){for(O();N==="(";)ct.push(Ce),rt*=Ce,Ce=1,B(),O();var At=void 0;if(N){var Rt=N;if(At=R(),At===null)throw new SyntaxError('Unexpected "'+Rt+'" in "'+M+'" at index '+T.toString())}else break;var vt=X(At);if(vt===null)throw new SyntaxError('Unit "'+At+'" not found.');var nr=Ce*rt;if(O(),V("^")){O();var qt=q();if(qt===null)throw new SyntaxError('In "'+ie+'", "^" must be followed by a floating-point number');nr*=qt}Te.units.push({unit:vt.unit,prefix:vt.prefix,power:nr});for(var xe=0;xe1||Math.abs(this.units[0].power-1)>1e-15},E.prototype._normalize=function(ie){if(ie==null||this.units.length===0)return ie;for(var ue=ie,Te=E._getNumberConverter(pr(ie)),Ce=0;Ce{if(xt(oe,ie)){var ue=oe[ie],Te=ue.prefixes[""];return{unit:ue,prefix:Te}}for(var Ce in oe)if(xt(oe,Ce)&&lI(ie,Ce)){var Je=oe[Ce],He=ie.length-Ce.length,it=ie.substring(0,He),ct=xt(Je.prefixes,it)?Je.prefixes[it]:void 0;if(ct!==void 0)return{unit:Je,prefix:ct}}return null},{hasher:ie=>ie[0],limit:100});E.isValuelessUnit=function(ie){return X(ie)!==null},E.prototype.hasBase=function(ie){if(typeof ie=="string"&&(ie=Z[ie]),!ie)return!1;for(var ue=0;ue1e-12)return!1;return!0},E.prototype.equalBase=function(ie){for(var ue=0;ue1e-12)return!1;return!0},E.prototype.equals=function(ie){return this.equalBase(ie)&&p(this.value,ie.value)},E.prototype.multiply=function(ie){for(var ue=this.clone(),Te=ti(ie)?ie:new E(ie),Ce=0;Ce0?this.formatUnits():null,fixPrefix:this.fixPrefix}},E.fromJSON=function(ie){var ue,Te=new E(ie.value,(ue=ie.unit)!==null&&ue!==void 0?ue:void 0);return Te.fixPrefix=ie.fixPrefix||!1,Te},E.prototype.valueOf=E.prototype.toString,E.prototype.simplify=function(){var ie=this.clone(),ue=[],Te;for(var Ce in Me)if(xt(Me,Ce)&&ie.hasBase(Z[Ce])){Te=Ce;break}if(Te==="NONE")ie.units=[];else{var Je;if(Te&&xt(Me,Te)&&(Je=Me[Te]),Je)ie.units=[{unit:Je.unit,prefix:Je.prefix,power:1}];else{for(var He=!1,it=0;it1e-12&&(xt(Me,ct)?ue.push({unit:Me[ct].unit,prefix:Me[ct].prefix,power:ie.dimensions[it]||0}):He=!0)}ue.length1e-12)if(xt(De.si,Ce))ue.push({unit:De.si[Ce].unit,prefix:De.si[Ce].prefix,power:ie.dimensions[Te]||0});else throw new Error("Cannot express custom unit "+Ce+" in SI units")}return ie.units=ue,ie.fixPrefix=!0,ie.skipAutomaticSimplification=!0,this.value!==null?(ie.value=null,this.to(ie)):ie},E.prototype.formatUnits=function(){for(var ie="",ue="",Te=0,Ce=0,Je=0;Je0?(Te++,ie+=" "+this.units[Je].prefix.name+this.units[Je].unit.name,Math.abs(this.units[Je].power-1)>1e-15&&(ie+="^"+this.units[Je].power)):this.units[Je].power<0&&Ce++;if(Ce>0)for(var He=0;He0?(ue+=" "+this.units[He].prefix.name+this.units[He].unit.name,Math.abs(this.units[He].power+1)>1e-15&&(ue+="^"+-this.units[He].power)):(ue+=" "+this.units[He].prefix.name+this.units[He].unit.name,ue+="^"+this.units[He].power));ie=ie.substr(1),ue=ue.substr(1),Te>1&&Ce>0&&(ie="("+ie+")"),Ce>1&&Te>0&&(ue="("+ue+")");var it=ie;return Te>0&&Ce>0&&(it+=" / "),it+=ue,it},E.prototype.format=function(ie){var ue=this.skipAutomaticSimplification||this.value===null?this.clone():this.simplify(),Te=!1;typeof ue.value<"u"&&ue.value!==null&&vi(ue.value)&&(Te=Math.abs(ue.value.re)<1e-14);for(var Ce in ue.units)xt(ue.units,Ce)&&ue.units[Ce].unit&&(ue.units[Ce].unit.name==="VA"&&Te?ue.units[Ce].unit=oe.VAR:ue.units[Ce].unit.name==="VAR"&&!Te&&(ue.units[Ce].unit=oe.VA));ue.units.length===1&&!ue.fixPrefix&&Math.abs(ue.units[0].power-Math.round(ue.units[0].power))<1e-14&&(ue.units[0].prefix=ue._bestPrefix());var Je=ue._denormalize(ue.value),He=ue.value!==null?g(Je,ie||{}):"",it=ue.formatUnits();return ue.value&&vi(ue.value)&&(He="("+He+")"),it.length>0&&He.length>0&&(He+=" "),He+=it,He},E.prototype._bestPrefix=function(){if(this.units.length!==1)throw new Error("Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!");if(Math.abs(this.units[0].power-Math.round(this.units[0].power))>=1e-14)throw new Error("Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!");var ie=this.value!==null?a(this.value):0,ue=a(this.units[0].unit.value),Te=this.units[0].prefix;if(ie===0)return Te;var Ce=this.units[0].power,Je=Math.log(ie/Math.pow(Te.value*ue,Ce))/Math.LN10-1.2;if(Je>-2.200001&&Je<1.800001)return Te;Je=Math.abs(Je);var He=this.units[0].unit.prefixes;for(var it in He)if(xt(He,it)){var ct=He[it];if(ct.scientific){var rt=Math.abs(Math.log(ie/Math.pow(ct.value*ue,Ce))/Math.LN10-1.2);(rt0)},oe={meter:{name:"meter",base:Z.LENGTH,prefixes:H.LONG,value:1,offset:0},inch:{name:"inch",base:Z.LENGTH,prefixes:H.NONE,value:.0254,offset:0},foot:{name:"foot",base:Z.LENGTH,prefixes:H.NONE,value:.3048,offset:0},yard:{name:"yard",base:Z.LENGTH,prefixes:H.NONE,value:.9144,offset:0},mile:{name:"mile",base:Z.LENGTH,prefixes:H.NONE,value:1609.344,offset:0},link:{name:"link",base:Z.LENGTH,prefixes:H.NONE,value:.201168,offset:0},rod:{name:"rod",base:Z.LENGTH,prefixes:H.NONE,value:5.0292,offset:0},chain:{name:"chain",base:Z.LENGTH,prefixes:H.NONE,value:20.1168,offset:0},angstrom:{name:"angstrom",base:Z.LENGTH,prefixes:H.NONE,value:1e-10,offset:0},m:{name:"m",base:Z.LENGTH,prefixes:H.SHORT,value:1,offset:0},in:{name:"in",base:Z.LENGTH,prefixes:H.NONE,value:.0254,offset:0},ft:{name:"ft",base:Z.LENGTH,prefixes:H.NONE,value:.3048,offset:0},yd:{name:"yd",base:Z.LENGTH,prefixes:H.NONE,value:.9144,offset:0},mi:{name:"mi",base:Z.LENGTH,prefixes:H.NONE,value:1609.344,offset:0},li:{name:"li",base:Z.LENGTH,prefixes:H.NONE,value:.201168,offset:0},rd:{name:"rd",base:Z.LENGTH,prefixes:H.NONE,value:5.02921,offset:0},ch:{name:"ch",base:Z.LENGTH,prefixes:H.NONE,value:20.1168,offset:0},mil:{name:"mil",base:Z.LENGTH,prefixes:H.NONE,value:254e-7,offset:0},m2:{name:"m2",base:Z.SURFACE,prefixes:H.SQUARED,value:1,offset:0},sqin:{name:"sqin",base:Z.SURFACE,prefixes:H.NONE,value:64516e-8,offset:0},sqft:{name:"sqft",base:Z.SURFACE,prefixes:H.NONE,value:.09290304,offset:0},sqyd:{name:"sqyd",base:Z.SURFACE,prefixes:H.NONE,value:.83612736,offset:0},sqmi:{name:"sqmi",base:Z.SURFACE,prefixes:H.NONE,value:2589988110336e-6,offset:0},sqrd:{name:"sqrd",base:Z.SURFACE,prefixes:H.NONE,value:25.29295,offset:0},sqch:{name:"sqch",base:Z.SURFACE,prefixes:H.NONE,value:404.6873,offset:0},sqmil:{name:"sqmil",base:Z.SURFACE,prefixes:H.NONE,value:64516e-14,offset:0},acre:{name:"acre",base:Z.SURFACE,prefixes:H.NONE,value:4046.86,offset:0},hectare:{name:"hectare",base:Z.SURFACE,prefixes:H.NONE,value:1e4,offset:0},m3:{name:"m3",base:Z.VOLUME,prefixes:H.CUBIC,value:1,offset:0},L:{name:"L",base:Z.VOLUME,prefixes:H.SHORT,value:.001,offset:0},l:{name:"l",base:Z.VOLUME,prefixes:H.SHORT,value:.001,offset:0},litre:{name:"litre",base:Z.VOLUME,prefixes:H.LONG,value:.001,offset:0},cuin:{name:"cuin",base:Z.VOLUME,prefixes:H.NONE,value:16387064e-12,offset:0},cuft:{name:"cuft",base:Z.VOLUME,prefixes:H.NONE,value:.028316846592,offset:0},cuyd:{name:"cuyd",base:Z.VOLUME,prefixes:H.NONE,value:.764554857984,offset:0},teaspoon:{name:"teaspoon",base:Z.VOLUME,prefixes:H.NONE,value:5e-6,offset:0},tablespoon:{name:"tablespoon",base:Z.VOLUME,prefixes:H.NONE,value:15e-6,offset:0},drop:{name:"drop",base:Z.VOLUME,prefixes:H.NONE,value:5e-8,offset:0},gtt:{name:"gtt",base:Z.VOLUME,prefixes:H.NONE,value:5e-8,offset:0},minim:{name:"minim",base:Z.VOLUME,prefixes:H.NONE,value:61611519921875e-21,offset:0},fluiddram:{name:"fluiddram",base:Z.VOLUME,prefixes:H.NONE,value:36966911953125e-19,offset:0},fluidounce:{name:"fluidounce",base:Z.VOLUME,prefixes:H.NONE,value:295735295625e-16,offset:0},gill:{name:"gill",base:Z.VOLUME,prefixes:H.NONE,value:.00011829411825,offset:0},cc:{name:"cc",base:Z.VOLUME,prefixes:H.NONE,value:1e-6,offset:0},cup:{name:"cup",base:Z.VOLUME,prefixes:H.NONE,value:.0002365882365,offset:0},pint:{name:"pint",base:Z.VOLUME,prefixes:H.NONE,value:.000473176473,offset:0},quart:{name:"quart",base:Z.VOLUME,prefixes:H.NONE,value:.000946352946,offset:0},gallon:{name:"gallon",base:Z.VOLUME,prefixes:H.NONE,value:.003785411784,offset:0},beerbarrel:{name:"beerbarrel",base:Z.VOLUME,prefixes:H.NONE,value:.117347765304,offset:0},oilbarrel:{name:"oilbarrel",base:Z.VOLUME,prefixes:H.NONE,value:.158987294928,offset:0},hogshead:{name:"hogshead",base:Z.VOLUME,prefixes:H.NONE,value:.238480942392,offset:0},g:{name:"g",base:Z.MASS,prefixes:H.SHORT,value:.001,offset:0},gram:{name:"gram",base:Z.MASS,prefixes:H.LONG,value:.001,offset:0},ton:{name:"ton",base:Z.MASS,prefixes:H.SHORT,value:907.18474,offset:0},t:{name:"t",base:Z.MASS,prefixes:H.SHORT,value:1e3,offset:0},tonne:{name:"tonne",base:Z.MASS,prefixes:H.LONG,value:1e3,offset:0},grain:{name:"grain",base:Z.MASS,prefixes:H.NONE,value:6479891e-11,offset:0},dram:{name:"dram",base:Z.MASS,prefixes:H.NONE,value:.0017718451953125,offset:0},ounce:{name:"ounce",base:Z.MASS,prefixes:H.NONE,value:.028349523125,offset:0},poundmass:{name:"poundmass",base:Z.MASS,prefixes:H.NONE,value:.45359237,offset:0},hundredweight:{name:"hundredweight",base:Z.MASS,prefixes:H.NONE,value:45.359237,offset:0},stick:{name:"stick",base:Z.MASS,prefixes:H.NONE,value:.115,offset:0},stone:{name:"stone",base:Z.MASS,prefixes:H.NONE,value:6.35029318,offset:0},gr:{name:"gr",base:Z.MASS,prefixes:H.NONE,value:6479891e-11,offset:0},dr:{name:"dr",base:Z.MASS,prefixes:H.NONE,value:.0017718451953125,offset:0},oz:{name:"oz",base:Z.MASS,prefixes:H.NONE,value:.028349523125,offset:0},lbm:{name:"lbm",base:Z.MASS,prefixes:H.NONE,value:.45359237,offset:0},cwt:{name:"cwt",base:Z.MASS,prefixes:H.NONE,value:45.359237,offset:0},s:{name:"s",base:Z.TIME,prefixes:H.SHORT,value:1,offset:0},min:{name:"min",base:Z.TIME,prefixes:H.NONE,value:60,offset:0},h:{name:"h",base:Z.TIME,prefixes:H.NONE,value:3600,offset:0},second:{name:"second",base:Z.TIME,prefixes:H.LONG,value:1,offset:0},sec:{name:"sec",base:Z.TIME,prefixes:H.LONG,value:1,offset:0},minute:{name:"minute",base:Z.TIME,prefixes:H.NONE,value:60,offset:0},hour:{name:"hour",base:Z.TIME,prefixes:H.NONE,value:3600,offset:0},day:{name:"day",base:Z.TIME,prefixes:H.NONE,value:86400,offset:0},week:{name:"week",base:Z.TIME,prefixes:H.NONE,value:7*86400,offset:0},month:{name:"month",base:Z.TIME,prefixes:H.NONE,value:2629800,offset:0},year:{name:"year",base:Z.TIME,prefixes:H.NONE,value:31557600,offset:0},decade:{name:"decade",base:Z.TIME,prefixes:H.NONE,value:315576e3,offset:0},century:{name:"century",base:Z.TIME,prefixes:H.NONE,value:315576e4,offset:0},millennium:{name:"millennium",base:Z.TIME,prefixes:H.NONE,value:315576e5,offset:0},hertz:{name:"Hertz",base:Z.FREQUENCY,prefixes:H.LONG,value:1,offset:0,reciprocal:!0},Hz:{name:"Hz",base:Z.FREQUENCY,prefixes:H.SHORT,value:1,offset:0,reciprocal:!0},rad:{name:"rad",base:Z.ANGLE,prefixes:H.SHORT,value:1,offset:0},radian:{name:"radian",base:Z.ANGLE,prefixes:H.LONG,value:1,offset:0},deg:{name:"deg",base:Z.ANGLE,prefixes:H.SHORT,value:null,offset:0},degree:{name:"degree",base:Z.ANGLE,prefixes:H.LONG,value:null,offset:0},grad:{name:"grad",base:Z.ANGLE,prefixes:H.SHORT,value:null,offset:0},gradian:{name:"gradian",base:Z.ANGLE,prefixes:H.LONG,value:null,offset:0},cycle:{name:"cycle",base:Z.ANGLE,prefixes:H.NONE,value:null,offset:0},arcsec:{name:"arcsec",base:Z.ANGLE,prefixes:H.NONE,value:null,offset:0},arcmin:{name:"arcmin",base:Z.ANGLE,prefixes:H.NONE,value:null,offset:0},A:{name:"A",base:Z.CURRENT,prefixes:H.SHORT,value:1,offset:0},ampere:{name:"ampere",base:Z.CURRENT,prefixes:H.LONG,value:1,offset:0},K:{name:"K",base:Z.TEMPERATURE,prefixes:H.SHORT,value:1,offset:0},degC:{name:"degC",base:Z.TEMPERATURE,prefixes:H.SHORT,value:1,offset:273.15},degF:{name:"degF",base:Z.TEMPERATURE,prefixes:H.SHORT,value:new D(5,9),offset:459.67},degR:{name:"degR",base:Z.TEMPERATURE,prefixes:H.SHORT,value:new D(5,9),offset:0},kelvin:{name:"kelvin",base:Z.TEMPERATURE,prefixes:H.LONG,value:1,offset:0},celsius:{name:"celsius",base:Z.TEMPERATURE,prefixes:H.LONG,value:1,offset:273.15},fahrenheit:{name:"fahrenheit",base:Z.TEMPERATURE,prefixes:H.LONG,value:new D(5,9),offset:459.67},rankine:{name:"rankine",base:Z.TEMPERATURE,prefixes:H.LONG,value:new D(5,9),offset:0},mol:{name:"mol",base:Z.AMOUNT_OF_SUBSTANCE,prefixes:H.SHORT,value:1,offset:0},mole:{name:"mole",base:Z.AMOUNT_OF_SUBSTANCE,prefixes:H.LONG,value:1,offset:0},cd:{name:"cd",base:Z.LUMINOUS_INTENSITY,prefixes:H.SHORT,value:1,offset:0},candela:{name:"candela",base:Z.LUMINOUS_INTENSITY,prefixes:H.LONG,value:1,offset:0},N:{name:"N",base:Z.FORCE,prefixes:H.SHORT,value:1,offset:0},newton:{name:"newton",base:Z.FORCE,prefixes:H.LONG,value:1,offset:0},dyn:{name:"dyn",base:Z.FORCE,prefixes:H.SHORT,value:1e-5,offset:0},dyne:{name:"dyne",base:Z.FORCE,prefixes:H.LONG,value:1e-5,offset:0},lbf:{name:"lbf",base:Z.FORCE,prefixes:H.NONE,value:4.4482216152605,offset:0},poundforce:{name:"poundforce",base:Z.FORCE,prefixes:H.NONE,value:4.4482216152605,offset:0},kip:{name:"kip",base:Z.FORCE,prefixes:H.LONG,value:4448.2216,offset:0},kilogramforce:{name:"kilogramforce",base:Z.FORCE,prefixes:H.NONE,value:9.80665,offset:0},J:{name:"J",base:Z.ENERGY,prefixes:H.SHORT,value:1,offset:0},joule:{name:"joule",base:Z.ENERGY,prefixes:H.LONG,value:1,offset:0},erg:{name:"erg",base:Z.ENERGY,prefixes:H.SHORTLONG,value:1e-7,offset:0},Wh:{name:"Wh",base:Z.ENERGY,prefixes:H.SHORT,value:3600,offset:0},BTU:{name:"BTU",base:Z.ENERGY,prefixes:H.BTU,value:1055.05585262,offset:0},eV:{name:"eV",base:Z.ENERGY,prefixes:H.SHORT,value:1602176565e-28,offset:0},electronvolt:{name:"electronvolt",base:Z.ENERGY,prefixes:H.LONG,value:1602176565e-28,offset:0},W:{name:"W",base:Z.POWER,prefixes:H.SHORT,value:1,offset:0},watt:{name:"watt",base:Z.POWER,prefixes:H.LONG,value:1,offset:0},hp:{name:"hp",base:Z.POWER,prefixes:H.NONE,value:745.6998715386,offset:0},VAR:{name:"VAR",base:Z.POWER,prefixes:H.SHORT,value:v.I,offset:0},VA:{name:"VA",base:Z.POWER,prefixes:H.SHORT,value:1,offset:0},Pa:{name:"Pa",base:Z.PRESSURE,prefixes:H.SHORT,value:1,offset:0},psi:{name:"psi",base:Z.PRESSURE,prefixes:H.NONE,value:6894.75729276459,offset:0},atm:{name:"atm",base:Z.PRESSURE,prefixes:H.NONE,value:101325,offset:0},bar:{name:"bar",base:Z.PRESSURE,prefixes:H.SHORTLONG,value:1e5,offset:0},torr:{name:"torr",base:Z.PRESSURE,prefixes:H.NONE,value:133.322,offset:0},mmHg:{name:"mmHg",base:Z.PRESSURE,prefixes:H.NONE,value:133.322,offset:0},mmH2O:{name:"mmH2O",base:Z.PRESSURE,prefixes:H.NONE,value:9.80665,offset:0},cmH2O:{name:"cmH2O",base:Z.PRESSURE,prefixes:H.NONE,value:98.0665,offset:0},coulomb:{name:"coulomb",base:Z.ELECTRIC_CHARGE,prefixes:H.LONG,value:1,offset:0},C:{name:"C",base:Z.ELECTRIC_CHARGE,prefixes:H.SHORT,value:1,offset:0},farad:{name:"farad",base:Z.ELECTRIC_CAPACITANCE,prefixes:H.LONG,value:1,offset:0},F:{name:"F",base:Z.ELECTRIC_CAPACITANCE,prefixes:H.SHORT,value:1,offset:0},volt:{name:"volt",base:Z.ELECTRIC_POTENTIAL,prefixes:H.LONG,value:1,offset:0},V:{name:"V",base:Z.ELECTRIC_POTENTIAL,prefixes:H.SHORT,value:1,offset:0},ohm:{name:"ohm",base:Z.ELECTRIC_RESISTANCE,prefixes:H.SHORTLONG,value:1,offset:0},henry:{name:"henry",base:Z.ELECTRIC_INDUCTANCE,prefixes:H.LONG,value:1,offset:0},H:{name:"H",base:Z.ELECTRIC_INDUCTANCE,prefixes:H.SHORT,value:1,offset:0},siemens:{name:"siemens",base:Z.ELECTRIC_CONDUCTANCE,prefixes:H.LONG,value:1,offset:0},S:{name:"S",base:Z.ELECTRIC_CONDUCTANCE,prefixes:H.SHORT,value:1,offset:0},weber:{name:"weber",base:Z.MAGNETIC_FLUX,prefixes:H.LONG,value:1,offset:0},Wb:{name:"Wb",base:Z.MAGNETIC_FLUX,prefixes:H.SHORT,value:1,offset:0},tesla:{name:"tesla",base:Z.MAGNETIC_FLUX_DENSITY,prefixes:H.LONG,value:1,offset:0},T:{name:"T",base:Z.MAGNETIC_FLUX_DENSITY,prefixes:H.SHORT,value:1,offset:0},b:{name:"b",base:Z.BIT,prefixes:H.BINARY_SHORT,value:1,offset:0},bits:{name:"bits",base:Z.BIT,prefixes:H.BINARY_LONG,value:1,offset:0},B:{name:"B",base:Z.BIT,prefixes:H.BINARY_SHORT,value:8,offset:0},bytes:{name:"bytes",base:Z.BIT,prefixes:H.BINARY_LONG,value:8,offset:0}},ve={meters:"meter",inches:"inch",feet:"foot",yards:"yard",miles:"mile",links:"link",rods:"rod",chains:"chain",angstroms:"angstrom",lt:"l",litres:"litre",liter:"litre",liters:"litre",teaspoons:"teaspoon",tablespoons:"tablespoon",minims:"minim",fldr:"fluiddram",fluiddrams:"fluiddram",floz:"fluidounce",fluidounces:"fluidounce",gi:"gill",gills:"gill",cp:"cup",cups:"cup",pt:"pint",pints:"pint",qt:"quart",quarts:"quart",gal:"gallon",gallons:"gallon",bbl:"beerbarrel",beerbarrels:"beerbarrel",obl:"oilbarrel",oilbarrels:"oilbarrel",hogsheads:"hogshead",gtts:"gtt",grams:"gram",tons:"ton",tonnes:"tonne",grains:"grain",drams:"dram",ounces:"ounce",poundmasses:"poundmass",hundredweights:"hundredweight",sticks:"stick",lb:"lbm",lbs:"lbm",kips:"kip",kgf:"kilogramforce",acres:"acre",hectares:"hectare",sqfeet:"sqft",sqyard:"sqyd",sqmile:"sqmi",sqmiles:"sqmi",mmhg:"mmHg",mmh2o:"mmH2O",cmh2o:"cmH2O",seconds:"second",secs:"second",minutes:"minute",mins:"minute",hours:"hour",hr:"hour",hrs:"hour",days:"day",weeks:"week",months:"month",years:"year",decades:"decade",centuries:"century",millennia:"millennium",hertz:"hertz",radians:"radian",degrees:"degree",gradians:"gradian",cycles:"cycle",arcsecond:"arcsec",arcseconds:"arcsec",arcminute:"arcmin",arcminutes:"arcmin",BTUs:"BTU",watts:"watt",joules:"joule",amperes:"ampere",amps:"ampere",amp:"ampere",coulombs:"coulomb",volts:"volt",ohms:"ohm",farads:"farad",webers:"weber",teslas:"tesla",electronvolts:"electronvolt",moles:"mole",bit:"bits",byte:"bytes"};function Oe(ie){if(ie.number==="BigNumber"){var ue=zv(S);oe.rad.value=new S(1),oe.deg.value=ue.div(180),oe.grad.value=ue.div(200),oe.cycle.value=ue.times(2),oe.arcsec.value=ue.div(648e3),oe.arcmin.value=ue.div(10800)}else oe.rad.value=1,oe.deg.value=Math.PI/180,oe.grad.value=Math.PI/200,oe.cycle.value=Math.PI*2,oe.arcsec.value=Math.PI/648e3,oe.arcmin.value=Math.PI/10800;oe.radian.value=oe.rad.value,oe.degree.value=oe.deg.value,oe.gradian.value=oe.grad.value}Oe(r),t&&t("config",function(ie,ue){ie.number!==ue.number&&Oe(ie)});var De={si:{NONE:{unit:he,prefix:H.NONE[""]},LENGTH:{unit:oe.m,prefix:H.SHORT[""]},MASS:{unit:oe.g,prefix:H.SHORT.k},TIME:{unit:oe.s,prefix:H.SHORT[""]},CURRENT:{unit:oe.A,prefix:H.SHORT[""]},TEMPERATURE:{unit:oe.K,prefix:H.SHORT[""]},LUMINOUS_INTENSITY:{unit:oe.cd,prefix:H.SHORT[""]},AMOUNT_OF_SUBSTANCE:{unit:oe.mol,prefix:H.SHORT[""]},ANGLE:{unit:oe.rad,prefix:H.SHORT[""]},BIT:{unit:oe.bits,prefix:H.SHORT[""]},FORCE:{unit:oe.N,prefix:H.SHORT[""]},ENERGY:{unit:oe.J,prefix:H.SHORT[""]},POWER:{unit:oe.W,prefix:H.SHORT[""]},PRESSURE:{unit:oe.Pa,prefix:H.SHORT[""]},ELECTRIC_CHARGE:{unit:oe.C,prefix:H.SHORT[""]},ELECTRIC_CAPACITANCE:{unit:oe.F,prefix:H.SHORT[""]},ELECTRIC_POTENTIAL:{unit:oe.V,prefix:H.SHORT[""]},ELECTRIC_RESISTANCE:{unit:oe.ohm,prefix:H.SHORT[""]},ELECTRIC_INDUCTANCE:{unit:oe.H,prefix:H.SHORT[""]},ELECTRIC_CONDUCTANCE:{unit:oe.S,prefix:H.SHORT[""]},MAGNETIC_FLUX:{unit:oe.Wb,prefix:H.SHORT[""]},MAGNETIC_FLUX_DENSITY:{unit:oe.T,prefix:H.SHORT[""]},FREQUENCY:{unit:oe.Hz,prefix:H.SHORT[""]}}};De.cgs=JSON.parse(JSON.stringify(De.si)),De.cgs.LENGTH={unit:oe.m,prefix:H.SHORT.c},De.cgs.MASS={unit:oe.g,prefix:H.SHORT[""]},De.cgs.FORCE={unit:oe.dyn,prefix:H.SHORT[""]},De.cgs.ENERGY={unit:oe.erg,prefix:H.NONE[""]},De.us=JSON.parse(JSON.stringify(De.si)),De.us.LENGTH={unit:oe.ft,prefix:H.NONE[""]},De.us.MASS={unit:oe.lbm,prefix:H.NONE[""]},De.us.TEMPERATURE={unit:oe.degF,prefix:H.NONE[""]},De.us.FORCE={unit:oe.lbf,prefix:H.NONE[""]},De.us.ENERGY={unit:oe.BTU,prefix:H.BTU[""]},De.us.POWER={unit:oe.hp,prefix:H.NONE[""]},De.us.PRESSURE={unit:oe.psi,prefix:H.NONE[""]},De.auto=JSON.parse(JSON.stringify(De.si));var Me=De.auto;E.setUnitSystem=function(ie){if(xt(De,ie))Me=De[ie];else throw new Error("Unit system "+ie+" does not exist. Choices are: "+Object.keys(De).join(", "))},E.getUnitSystem=function(){for(var ie in De)if(xt(De,ie)&&De[ie]===Me)return ie},E.typeConverters={BigNumber:function(ue){return ue!=null&&ue.isFraction?new S(String(ue.n)).div(String(ue.d)).times(String(ue.s)):new S(ue+"")},Fraction:function(ue){return new D(ue)},Complex:function(ue){return ue},number:function(ue){return ue!=null&&ue.isFraction?x(ue):ue}},E.prototype._numberConverter=function(){var ie=E.typeConverters[this.valueType()];if(ie)return ie;throw new TypeError('Unsupported Unit value type "'+this.valueType()+'"')},E._getNumberConverter=function(ie){if(!E.typeConverters[ie])throw new TypeError('Unsupported type "'+ie+'"');return E.typeConverters[ie]};for(var le in oe)if(xt(oe,le)){var ne=oe[le];ne.dimensions=ne.base.dimensions}for(var fe in ve)if(xt(ve,fe)){var Fe=oe[ve[fe]],me={};for(var Ue in Fe)xt(Fe,Ue)&&(me[Ue]=Fe[Ue]);me.name=fe,oe[fe]=me}E.isValidAlpha=function(ue){return/^[a-zA-Z]$/.test(ue)};function Re(ie){for(var ue=0;ue0&&!(E.isValidAlpha(N)||I(N)))throw new Error('Invalid unit name (only alphanumeric characters are allowed): "'+ie+'"')}}return E.createUnit=function(ie,ue){if(typeof ie!="object")throw new TypeError("createUnit expects first parameter to be of type 'Object'");if(ue&&ue.override){for(var Te in ie)if(xt(ie,Te)&&E.deleteUnit(Te),ie[Te].aliases)for(var Ce=0;Ce"u"||ue===null)&&(ue={}),typeof ie!="string")throw new TypeError("createUnitSingle expects first parameter to be of type 'string'");if(xt(oe,ie))throw new Error('Cannot create unit "'+ie+'": a unit with that name already exists');Re(ie);var Te=null,Ce=[],Je=0,He,it,ct;if(ue&&ue.type==="Unit")Te=ue.clone();else if(typeof ue=="string")ue!==""&&(He=ue);else if(typeof ue=="object")He=ue.definition,it=ue.prefixes,Je=ue.offset,ct=ue.baseName,ue.aliases&&(Ce=ue.aliases.valueOf());else throw new TypeError('Cannot create unit "'+ie+'" from "'+ue.toString()+'": expecting "string" or "Unit" or "Object"');if(Ce){for(var rt=0;rt1e-12){te=!1;break}if(te){qt=!0,At.base=Z[xe];break}}if(!qt){ct=ct||ie+"_STUFF";var _e={dimensions:Te.dimensions.slice(0)};_e.key=ct,Z[ct]=_e,Me[ct]={unit:At,prefix:H.NONE[""]},At.base=Z[ct]}}else{if(ct=ct||ie+"_STUFF",ee.indexOf(ct)>=0)throw new Error('Cannot create new base unit "'+ie+'": a base unit with that name already exists (and cannot be overridden)');ee.push(ct);for(var Rt in Z)xt(Z,Rt)&&(Z[Rt].dimensions[ee.length-1]=0);for(var vt={dimensions:[]},nr=0;nr{var{typed:t,Unit:r}=e;return t(oB,{Unit:function(i){return i.clone()},string:function(i){return r.isValuelessUnit(i)?new r(null,i):r.parse(i,{allowNoUnits:!0})},"number | BigNumber | Fraction | Complex, string | Unit":function(i,o){return new r(i,o)},"number | BigNumber | Fraction":function(i){return new r(i)},"Array | Matrix":t.referToSelf(n=>i=>yt(i,n))})});var sB="sparse",Mle=["typed","SparseMatrix"],uB=$(sB,Mle,e=>{var{typed:t,SparseMatrix:r}=e;return t(sB,{"":function(){return new r([])},string:function(i){return new r([],i)},"Array | Matrix":function(i){return new r(i)},"Array | Matrix, string":function(i,o){return new r(i,o)}})});var lB="createUnit",Tle=["typed","Unit"],fB=$(lB,Tle,e=>{var{typed:t,Unit:r}=e;return t(lB,{"Object, Object":function(i,o){return r.createUnit(i,o)},Object:function(i){return r.createUnit(i,{})},"string, Unit | string | Object, Object":function(i,o,l){var s={};return s[i]=o,r.createUnit(s,l)},"string, Unit | string | Object":function(i,o){var l={};return l[i]=o,r.createUnit(l,{})},string:function(i){var o={};return o[i]={},r.createUnit(o,{})}})});var cB="acos",_le=["typed","config","Complex"],pB=$(cB,_le,e=>{var{typed:t,config:r,Complex:n}=e;return t(cB,{number:function(o){return o>=-1&&o<=1||r.predictable?Math.acos(o):new n(o,0).acos()},Complex:function(o){return o.acos()},BigNumber:function(o){return o.acos()}})});var mB="acosh",Ole=["typed","config","Complex"],dB=$(mB,Ole,e=>{var{typed:t,config:r,Complex:n}=e;return t(mB,{number:function(o){return o>=1||r.predictable?VA(o):o<=-1?new n(Math.log(Math.sqrt(o*o-1)-o),Math.PI):new n(o,0).acosh()},Complex:function(o){return o.acosh()},BigNumber:function(o){return o.acosh()}})});var hB="acot",Fle=["typed","BigNumber"],gB=$(hB,Fle,e=>{var{typed:t,BigNumber:r}=e;return t(hB,{number:GA,Complex:function(i){return i.acot()},BigNumber:function(i){return new r(1).div(i).atan()}})});var vB="acoth",Ile=["typed","config","Complex","BigNumber"],xB=$(vB,Ile,e=>{var{typed:t,config:r,Complex:n,BigNumber:i}=e;return t(vB,{number:function(l){return l>=1||l<=-1||r.predictable?YA(l):new n(l,0).acoth()},Complex:function(l){return l.acoth()},BigNumber:function(l){return new i(1).div(l).atanh()}})});var yB="acsc",kle=["typed","config","Complex","BigNumber"],wB=$(yB,kle,e=>{var{typed:t,config:r,Complex:n,BigNumber:i}=e;return t(yB,{number:function(l){return l<=-1||l>=1||r.predictable?ZA(l):new n(l,0).acsc()},Complex:function(l){return l.acsc()},BigNumber:function(l){return new i(1).div(l).asin()}})});var bB="acsch",Lle=["typed","BigNumber"],DB=$(bB,Lle,e=>{var{typed:t,BigNumber:r}=e;return t(bB,{number:XA,Complex:function(i){return i.acsch()},BigNumber:function(i){return new r(1).div(i).asinh()}})});var SB="asec",Ble=["typed","config","Complex","BigNumber"],NB=$(SB,Ble,e=>{var{typed:t,config:r,Complex:n,BigNumber:i}=e;return t(SB,{number:function(l){return l<=-1||l>=1||r.predictable?KA(l):new n(l,0).asec()},Complex:function(l){return l.asec()},BigNumber:function(l){return new i(1).div(l).acos()}})});var EB="asech",Ple=["typed","config","Complex","BigNumber"],AB=$(EB,Ple,e=>{var{typed:t,config:r,Complex:n,BigNumber:i}=e;return t(EB,{number:function(l){if(l<=1&&l>=-1||r.predictable){var s=1/l;if(s>0||r.predictable)return JA(l);var a=Math.sqrt(s*s-1);return new n(Math.log(a-s),Math.PI)}return new n(l,0).asech()},Complex:function(l){return l.asech()},BigNumber:function(l){return new i(1).div(l).acosh()}})});var CB="asin",Rle=["typed","config","Complex"],MB=$(CB,Rle,e=>{var{typed:t,config:r,Complex:n}=e;return t(CB,{number:function(o){return o>=-1&&o<=1||r.predictable?Math.asin(o):new n(o,0).asin()},Complex:function(o){return o.asin()},BigNumber:function(o){return o.asin()}})});var qle="asinh",zle=["typed"],TB=$(qle,zle,e=>{var{typed:t}=e;return t("asinh",{number:QA,Complex:function(n){return n.asinh()},BigNumber:function(n){return n.asinh()}})});var Ule="atan",Hle=["typed"],_B=$(Ule,Hle,e=>{var{typed:t}=e;return t("atan",{number:function(n){return Math.atan(n)},Complex:function(n){return n.atan()},BigNumber:function(n){return n.atan()}})});var OB="atan2",$le=["typed","matrix","equalScalar","BigNumber","DenseMatrix","concat"],FB=$(OB,$le,e=>{var{typed:t,matrix:r,equalScalar:n,BigNumber:i,DenseMatrix:o,concat:l}=e,s=Zn({typed:t,equalScalar:n}),a=Yr({typed:t}),u=hw({typed:t,equalScalar:n}),f=Ir({typed:t,equalScalar:n}),p=Nr({typed:t,DenseMatrix:o}),h=Xt({typed:t,matrix:r,concat:l});return t(OB,{"number, number":Math.atan2,"BigNumber, BigNumber":(g,x)=>i.atan2(g,x)},h({scalar:"number | BigNumber",SS:u,DS:a,SD:s,Ss:f,sS:p}))});var IB="atanh",Wle=["typed","config","Complex"],kB=$(IB,Wle,e=>{var{typed:t,config:r,Complex:n}=e;return t(IB,{number:function(o){return o<=1&&o>=-1||r.predictable?jA(o):new n(o,0).atanh()},Complex:function(o){return o.atanh()},BigNumber:function(o){return o.atanh()}})});var Ja=$("trigUnit",["typed"],e=>{var{typed:t}=e;return{Unit:t.referToSelf(r=>n=>{if(!n.hasBase(n.constructor.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cot is no angle");return t.find(r,n.valueType())(n.value)})}});var LB="cos",Vle=["typed"],BB=$(LB,Vle,e=>{var{typed:t}=e,r=Ja({typed:t});return t(LB,{number:Math.cos,"Complex | BigNumber":n=>n.cos()},r)});var PB="cosh",Gle=["typed"],RB=$(PB,Gle,e=>{var{typed:t}=e;return t(PB,{number:W1,"Complex | BigNumber":r=>r.cosh()})});var qB="cot",Yle=["typed","BigNumber"],zB=$(qB,Yle,e=>{var{typed:t,BigNumber:r}=e,n=Ja({typed:t});return t(qB,{number:eC,Complex:i=>i.cot(),BigNumber:i=>new r(1).div(i.tan())},n)});var UB="coth",Zle=["typed","BigNumber"],HB=$(UB,Zle,e=>{var{typed:t,BigNumber:r}=e;return t(UB,{number:tC,Complex:n=>n.coth(),BigNumber:n=>new r(1).div(n.tanh())})});var $B="csc",Xle=["typed","BigNumber"],WB=$($B,Xle,e=>{var{typed:t,BigNumber:r}=e,n=Ja({typed:t});return t($B,{number:rC,Complex:i=>i.csc(),BigNumber:i=>new r(1).div(i.sin())},n)});var VB="csch",Kle=["typed","BigNumber"],GB=$(VB,Kle,e=>{var{typed:t,BigNumber:r}=e;return t(VB,{number:nC,Complex:n=>n.csch(),BigNumber:n=>new r(1).div(n.sinh())})});var YB="sec",Jle=["typed","BigNumber"],ZB=$(YB,Jle,e=>{var{typed:t,BigNumber:r}=e,n=Ja({typed:t});return t(YB,{number:iC,Complex:i=>i.sec(),BigNumber:i=>new r(1).div(i.cos())},n)});var XB="sech",Qle=["typed","BigNumber"],KB=$(XB,Qle,e=>{var{typed:t,BigNumber:r}=e;return t(XB,{number:oC,Complex:n=>n.sech(),BigNumber:n=>new r(1).div(n.cosh())})});var JB="sin",jle=["typed"],QB=$(JB,jle,e=>{var{typed:t}=e,r=Ja({typed:t});return t(JB,{number:Math.sin,"Complex | BigNumber":n=>n.sin()},r)});var jB="sinh",efe=["typed"],eP=$(jB,efe,e=>{var{typed:t}=e;return t(jB,{number:aC,"Complex | BigNumber":r=>r.sinh()})});var tP="tan",tfe=["typed"],rP=$(tP,tfe,e=>{var{typed:t}=e,r=Ja({typed:t});return t(tP,{number:Math.tan,"Complex | BigNumber":n=>n.tan()},r)});var rfe="tanh",nfe=["typed"],nP=$(rfe,nfe,e=>{var{typed:t}=e;return t("tanh",{number:V1,"Complex | BigNumber":r=>r.tanh()})});var iP="setCartesian",ife=["typed","size","subset","compareNatural","Index","DenseMatrix"],oP=$(iP,ife,e=>{var{typed:t,size:r,subset:n,compareNatural:i,Index:o,DenseMatrix:l}=e;return t(iP,{"Array | Matrix, Array | Matrix":function(a,u){var f=[];if(n(r(a),new o(0))!==0&&n(r(u),new o(0))!==0){var p=jt(Array.isArray(a)?a:a.toArray()).sort(i),h=jt(Array.isArray(u)?u:u.toArray()).sort(i);f=[];for(var g=0;g{var{typed:t,size:r,subset:n,compareNatural:i,Index:o,DenseMatrix:l}=e;return t(aP,{"Array | Matrix, Array | Matrix":function(a,u){var f;if(n(r(a),new o(0))===0)f=[];else{if(n(r(u),new o(0))===0)return jt(a.toArray());var p=Fl(jt(Array.isArray(a)?a:a.toArray()).sort(i)),h=Fl(jt(Array.isArray(u)?u:u.toArray()).sort(i));f=[];for(var g,x=0;x{var{typed:t,size:r,subset:n,compareNatural:i,Index:o,DenseMatrix:l}=e;return t(uP,{"Array | Matrix":function(a){var u;if(n(r(a),new o(0))===0)u=[];else{var f=jt(Array.isArray(a)?a:a.toArray()).sort(i);u=[],u.push(f[0]);for(var p=1;p{var{typed:t,size:r,subset:n,compareNatural:i,Index:o,DenseMatrix:l}=e;return t(fP,{"Array | Matrix, Array | Matrix":function(a,u){var f;if(n(r(a),new o(0))===0||n(r(u),new o(0))===0)f=[];else{var p=Fl(jt(Array.isArray(a)?a:a.toArray()).sort(i)),h=Fl(jt(Array.isArray(u)?u:u.toArray()).sort(i));f=[];for(var g=0;g{var{typed:t,size:r,subset:n,compareNatural:i,Index:o}=e;return t(pP,{"Array | Matrix, Array | Matrix":function(s,a){if(n(r(s),new o(0))===0)return!0;if(n(r(a),new o(0))===0)return!1;for(var u=Fl(jt(Array.isArray(s)?s:s.toArray()).sort(i)),f=Fl(jt(Array.isArray(a)?a:a.toArray()).sort(i)),p,h=0;h{var{typed:t,size:r,subset:n,compareNatural:i,Index:o}=e;return t(dP,{"number | BigNumber | Fraction | Complex, Array | Matrix":function(s,a){if(n(r(a),new o(0))===0)return 0;for(var u=jt(Array.isArray(a)?a:a.toArray()),f=0,p=0;p{var{typed:t,size:r,subset:n,compareNatural:i,Index:o}=e;return t(gP,{"Array | Matrix":function(u){if(n(r(u),new o(0))===0)return[];for(var f=jt(Array.isArray(u)?u:u.toArray()).sort(i),p=[],h=0;h.toString(2).length<=f.length;)p.push(l(f,h.toString(2).split("").reverse())),h++;return s(p)}});function l(a,u){for(var f=[],p=0;p0;f--)for(var p=0;pa[p+1].length&&(u=a[p],a[p]=a[p+1],a[p+1]=u);return a}});var xP="setSize",cfe=["typed","compareNatural"],yP=$(xP,cfe,e=>{var{typed:t,compareNatural:r}=e;return t(xP,{"Array | Matrix":function(i){return Array.isArray(i)?jt(i).length:jt(i.toArray()).length},"Array | Matrix, boolean":function(i,o){if(o===!1||i.length===0)return Array.isArray(i)?jt(i).length:jt(i.toArray()).length;for(var l=jt(Array.isArray(i)?i:i.toArray()).sort(r),s=1,a=1;a{var{typed:t,size:r,concat:n,subset:i,setDifference:o,Index:l}=e;return t(wP,{"Array | Matrix, Array | Matrix":function(a,u){if(i(r(a),new l(0))===0)return jt(u);if(i(r(u),new l(0))===0)return jt(a);var f=jt(a),p=jt(u);return n(o(f,p),o(p,f))}})});var DP="setUnion",mfe=["typed","size","concat","subset","setIntersect","setSymDifference","Index"],SP=$(DP,mfe,e=>{var{typed:t,size:r,concat:n,subset:i,setIntersect:o,setSymDifference:l,Index:s}=e;return t(DP,{"Array | Matrix, Array | Matrix":function(u,f){if(i(r(u),new s(0))===0)return jt(f);if(i(r(f),new s(0))===0)return jt(u);var p=jt(u),h=jt(f);return n(l(p,h),o(p,h))}})});var NP="add",dfe=["typed","matrix","addScalar","equalScalar","DenseMatrix","SparseMatrix","concat"],EP=$(NP,dfe,e=>{var{typed:t,matrix:r,addScalar:n,equalScalar:i,DenseMatrix:o,SparseMatrix:l,concat:s}=e,a=ho({typed:t}),u=Md({typed:t,equalScalar:i}),f=Xo({typed:t,DenseMatrix:o}),p=Xt({typed:t,matrix:r,concat:s});return t(NP,{"any, any":n,"any, any, ...any":t.referToSelf(h=>(g,x,v)=>{for(var S=h(g,x),D=0;D{var{typed:t,abs:r,addScalar:n,divideScalar:i,multiplyScalar:o,sqrt:l,smaller:s,isPositive:a}=e;return t(AP,{"... number | BigNumber":u,Array:u,Matrix:f=>u(jt(f.toArray()))});function u(f){for(var p=0,h=0,g=0;g{var{typed:t,abs:r,add:n,pow:i,conj:o,sqrt:l,multiply:s,equalScalar:a,larger:u,smaller:f,matrix:p,ctranspose:h,eigs:g}=e;return t(MP,{number:Math.abs,Complex:function(F){return F.abs()},BigNumber:function(F){return F.abs()},boolean:function(F){return Math.abs(F)},Array:function(F){return N(p(F),2)},Matrix:function(F){return N(F,2)},"Array, number | BigNumber | string":function(F,I){return N(p(F),I)},"Matrix, number | BigNumber | string":function(F,I){return N(F,I)}});function x(O){var F=0;return O.forEach(function(I){var B=r(I);u(B,F)&&(F=B)},!0),F}function v(O){var F;return O.forEach(function(I){var B=r(I);(!F||f(B,F))&&(F=B)},!0),F||0}function S(O,F){if(F===Number.POSITIVE_INFINITY||F==="inf")return x(O);if(F===Number.NEGATIVE_INFINITY||F==="-inf")return v(O);if(F==="fro")return N(O,2);if(typeof F=="number"&&!isNaN(F)){if(!a(F,0)){var I=0;return O.forEach(function(B){I=n(i(r(B),F),I)},!0),i(I,1/F)}return Number.POSITIVE_INFINITY}throw new Error("Unsupported parameter value")}function D(O){var F=0;return O.forEach(function(I,B){F=n(F,s(I,o(I)))}),r(l(F))}function C(O){var F=[],I=0;return O.forEach(function(B,L){var q=L[1],R=n(F[q]||0,r(B));u(R,I)&&(I=R),F[q]=R},!0),I}function E(O){var F=O.size();if(F[0]!==F[1])throw new RangeError("Invalid matrix dimensions");var I=h(O),B=s(I,O),L=g(B).values.toArray(),q=L[L.length-1];return r(l(q))}function M(O){var F=[],I=0;return O.forEach(function(B,L){var q=L[0],R=n(F[q]||0,r(B));u(R,I)&&(I=R),F[q]=R},!0),I}function T(O,F){if(F===1)return C(O);if(F===Number.POSITIVE_INFINITY||F==="inf")return M(O);if(F==="fro")return D(O);if(F===2)return E(O);throw new Error("Unsupported parameter value "+F)}function N(O,F){var I=O.size();if(I.length===1)return S(O,F);if(I.length===2){if(I[0]&&I[1])return T(O,F);throw new RangeError("Invalid matrix dimensions")}}});var _P="dot",vfe=["typed","addScalar","multiplyScalar","conj","size"],OP=$(_P,vfe,e=>{var{typed:t,addScalar:r,multiplyScalar:n,conj:i,size:o}=e;return t(_P,{"Array | DenseMatrix, Array | DenseMatrix":s,"SparseMatrix, SparseMatrix":a});function l(f,p){var h=u(f),g=u(p),x,v;if(h.length===1)x=h[0];else if(h.length===2&&h[1]===1)x=h[0];else throw new RangeError("Expected a column vector, instead got a matrix of size ("+h.join(", ")+")");if(g.length===1)v=g[0];else if(g.length===2&&g[1]===1)v=g[0];else throw new RangeError("Expected a column vector, instead got a matrix of size ("+g.join(", ")+")");if(x!==v)throw new RangeError("Vectors must have equal length ("+x+" != "+v+")");if(x===0)throw new RangeError("Cannot calculate the dot product of empty vectors");return x}function s(f,p){var h=l(f,p),g=gt(f)?f._data:f,x=gt(f)?f._datatype||f.getDataType():void 0,v=gt(p)?p._data:p,S=gt(p)?p._datatype||p.getDataType():void 0,D=u(f).length===2,C=u(p).length===2,E=r,M=n;if(x&&S&&x===S&&typeof x=="string"&&x!=="mixed"){var T=x;E=t.find(r,[T,T]),M=t.find(n,[T,T])}if(!D&&!C){for(var N=M(i(g[0]),v[0]),O=1;ON){M++;continue}T===N&&(S=D(S,C(g[E],v[M])),E++,M++)}return S}function u(f){return gt(f)?f.size():o(f)}});var xfe="trace",yfe=["typed","matrix","add"],FP=$(xfe,yfe,e=>{var{typed:t,matrix:r,add:n}=e;return t("trace",{Array:function(s){return i(r(s))},SparseMatrix:o,DenseMatrix:i,any:_t});function i(l){var s=l._size,a=l._data;switch(s.length){case 1:if(s[0]===1)return _t(a[0]);throw new RangeError("Matrix must be square (size: "+Ht(s)+")");case 2:{var u=s[0],f=s[1];if(u===f){for(var p=0,h=0;h0)for(var x=0;xx)break}return g}throw new RangeError("Matrix must be square (size: "+Ht(f)+")")}});var IP="index",wfe=["typed","Index"],kP=$(IP,wfe,e=>{var{typed:t,Index:r}=e;return t(IP,{"...number | string | BigNumber | Range | Array | Matrix":function(i){var o=i.map(function(s){return Ct(s)?s.toNumber():dr(s)||gt(s)?s.map(function(a){return Ct(a)?a.toNumber():a}):s}),l=new r;return r.apply(l,o),l}})});var Ww=new Set(["end"]);var bfe="Node",Dfe=["mathWithTransform"],LP=$(bfe,Dfe,e=>{var{mathWithTransform:t}=e;function r(i){for(var o of[...Ww])if(i.has(o))throw new Error('Scope contains an illegal symbol, "'+o+'" is a reserved keyword')}class n{get type(){return"Node"}get isNode(){return!0}evaluate(o){return this.compile().evaluate(o)}compile(){var o=this._compile(t,{}),l={},s=null;function a(u){var f=Ml(u);return r(f),o(f,l,s)}return{evaluate:a}}_compile(o,l){throw new Error("Method _compile must be implemented by type "+this.type)}forEach(o){throw new Error("Cannot run forEach on a Node interface")}map(o){throw new Error("Cannot run map on a Node interface")}_ifNode(o){if(!ir(o))throw new TypeError("Callback function must return a Node");return o}traverse(o){o(this,null,null);function l(s,a){s.forEach(function(u,f,p){a(u,f,p),l(u,a)})}l(this,o)}transform(o){function l(s,a,u){var f=o(s,a,u);return f!==s?f:s.map(l)}return l(this,null,null)}filter(o){var l=[];return this.traverse(function(s,a,u){o(s,a,u)&&l.push(s)}),l}clone(){throw new Error("Cannot clone a Node interface")}cloneDeep(){return this.map(function(o){return o.cloneDeep()})}equals(o){return o?this.type===o.type&&Vo(this,o):!1}toString(o){var l=this._getCustomString(o);return typeof l<"u"?l:this._toString(o)}_toString(){throw new Error("_toString not implemented for "+this.type)}toJSON(){throw new Error("Cannot serialize object: toJSON not implemented by "+this.type)}toHTML(o){var l=this._getCustomString(o);return typeof l<"u"?l:this._toHTML(o)}_toHTML(){throw new Error("_toHTML not implemented for "+this.type)}toTex(o){var l=this._getCustomString(o);return typeof l<"u"?l:this._toTex(o)}_toTex(o){throw new Error("_toTex not implemented for "+this.type)}_getCustomString(o){if(o&&typeof o=="object")switch(typeof o.handler){case"object":case"undefined":return;case"function":return o.handler(this,o);default:throw new TypeError("Object or function expected as callback")}}getIdentifier(){return this.type}getContent(){return this}}return n},{isClass:!0,isNode:!0});function Zr(e){return e&&e.isIndexError?new Di(e.index+1,e.min+1,e.max!==void 0?e.max+1:void 0):e}function Vw(e){var{subset:t}=e;return function(n,i){try{if(Array.isArray(n))return t(n,i);if(n&&typeof n.subset=="function")return n.subset(i);if(typeof n=="string")return t(n,i);if(typeof n=="object"){if(!i.isObjectProperty())throw new TypeError("Cannot apply a numeric index as object property");return un(n,i.getObjectProperty())}else throw new TypeError("Cannot apply index: unsupported type of object")}catch(o){throw Zr(o)}}}var Gw="AccessorNode",Sfe=["subset","Node"],BP=$(Gw,Sfe,e=>{var{subset:t,Node:r}=e,n=Vw({subset:t});function i(l){return!(Mo(l)||xi(l)||Qt(l)||Ji(l)||Fu(l)||yi(l)||Lr(l))}class o extends r{constructor(s,a){if(super(),!ir(s))throw new TypeError('Node expected for parameter "object"');if(!Wo(a))throw new TypeError('IndexNode expected for parameter "index"');this.object=s,this.index=a}get name(){return this.index?this.index.isObjectProperty()?this.index.getObjectProperty():"":this.object.name||""}get type(){return Gw}get isAccessorNode(){return!0}_compile(s,a){var u=this.object._compile(s,a),f=this.index._compile(s,a);if(this.index.isObjectProperty()){var p=this.index.getObjectProperty();return function(g,x,v){return un(u(g,x,v),p)}}else return function(g,x,v){var S=u(g,x,v),D=f(g,x,S);return n(S,D)}}forEach(s){s(this.object,"object",this),s(this.index,"index",this)}map(s){return new o(this._ifNode(s(this.object,"object",this)),this._ifNode(s(this.index,"index",this)))}clone(){return new o(this.object,this.index)}_toString(s){var a=this.object.toString(s);return i(this.object)&&(a="("+a+")"),a+this.index.toString(s)}_toHTML(s){var a=this.object.toHTML(s);return i(this.object)&&(a='('+a+')'),a+this.index.toHTML(s)}_toTex(s){var a=this.object.toTex(s);return i(this.object)&&(a="\\left(' + object + '\\right)"),a+this.index.toTex(s)}toJSON(){return{mathjs:Gw,object:this.object,index:this.index}}static fromJSON(s){return new o(s.object,s.index)}}return Tr(o,"name",Gw),o},{isClass:!0,isNode:!0});var Yw="ArrayNode",Nfe=["Node"],PP=$(Yw,Nfe,e=>{var{Node:t}=e;class r extends t{constructor(i){if(super(),this.items=i||[],!Array.isArray(this.items)||!this.items.every(ir))throw new TypeError("Array containing Nodes expected")}get type(){return Yw}get isArrayNode(){return!0}_compile(i,o){var l=Ya(this.items,function(u){return u._compile(i,o)}),s=i.config.matrix!=="Array";if(s){var a=i.matrix;return function(f,p,h){return a(Ya(l,function(g){return g(f,p,h)}))}}else return function(f,p,h){return Ya(l,function(g){return g(f,p,h)})}}forEach(i){for(var o=0;o['+o.join(',')+']'}_toTex(i){function o(l,s){var a=l.some(xi)&&!l.every(xi),u=s||a,f=u?"&":"\\\\",p=l.map(function(h){return h.items?o(h.items,!s):h.toTex(i)}).join(f);return a||!u||u&&!s?"\\begin{bmatrix}"+p+"\\end{bmatrix}":p}return o(this.items,!1)}}return Tr(r,"name",Yw),r},{isClass:!0,isNode:!0});function RP(e){var{subset:t,matrix:r}=e;return function(i,o,l){try{if(Array.isArray(i)){var s=r(i).subset(o,l).valueOf();return s.forEach((a,u)=>{i[u]=a}),i}else{if(i&&typeof i.subset=="function")return i.subset(o,l);if(typeof i=="string")return t(i,o,l);if(typeof i=="object"){if(!o.isObjectProperty())throw TypeError("Cannot apply a numeric index as object property");return Tu(i,o.getObjectProperty(),l),i}else throw new TypeError("Cannot apply index: unsupported type of object")}}catch(a){throw Zr(a)}}}var Qa=[{AssignmentNode:{},FunctionAssignmentNode:{}},{ConditionalNode:{latexLeftParens:!1,latexRightParens:!1,latexParens:!1}},{"OperatorNode:or":{op:"or",associativity:"left",associativeWith:[]}},{"OperatorNode:xor":{op:"xor",associativity:"left",associativeWith:[]}},{"OperatorNode:and":{op:"and",associativity:"left",associativeWith:[]}},{"OperatorNode:bitOr":{op:"|",associativity:"left",associativeWith:[]}},{"OperatorNode:bitXor":{op:"^|",associativity:"left",associativeWith:[]}},{"OperatorNode:bitAnd":{op:"&",associativity:"left",associativeWith:[]}},{"OperatorNode:equal":{op:"==",associativity:"left",associativeWith:[]},"OperatorNode:unequal":{op:"!=",associativity:"left",associativeWith:[]},"OperatorNode:smaller":{op:"<",associativity:"left",associativeWith:[]},"OperatorNode:larger":{op:">",associativity:"left",associativeWith:[]},"OperatorNode:smallerEq":{op:"<=",associativity:"left",associativeWith:[]},"OperatorNode:largerEq":{op:">=",associativity:"left",associativeWith:[]},RelationalNode:{associativity:"left",associativeWith:[]}},{"OperatorNode:leftShift":{op:"<<",associativity:"left",associativeWith:[]},"OperatorNode:rightArithShift":{op:">>",associativity:"left",associativeWith:[]},"OperatorNode:rightLogShift":{op:">>>",associativity:"left",associativeWith:[]}},{"OperatorNode:to":{op:"to",associativity:"left",associativeWith:[]}},{RangeNode:{}},{"OperatorNode:add":{op:"+",associativity:"left",associativeWith:["OperatorNode:add","OperatorNode:subtract"]},"OperatorNode:subtract":{op:"-",associativity:"left",associativeWith:[]}},{"OperatorNode:multiply":{op:"*",associativity:"left",associativeWith:["OperatorNode:multiply","OperatorNode:divide","Operator:dotMultiply","Operator:dotDivide"]},"OperatorNode:divide":{op:"/",associativity:"left",associativeWith:[],latexLeftParens:!1,latexRightParens:!1,latexParens:!1},"OperatorNode:dotMultiply":{op:".*",associativity:"left",associativeWith:["OperatorNode:multiply","OperatorNode:divide","OperatorNode:dotMultiply","OperatorNode:doDivide"]},"OperatorNode:dotDivide":{op:"./",associativity:"left",associativeWith:[]},"OperatorNode:mod":{op:"mod",associativity:"left",associativeWith:[]}},{"OperatorNode:multiply":{associativity:"left",associativeWith:["OperatorNode:multiply","OperatorNode:divide","Operator:dotMultiply","Operator:dotDivide"]}},{"OperatorNode:unaryPlus":{op:"+",associativity:"right"},"OperatorNode:unaryMinus":{op:"-",associativity:"right"},"OperatorNode:bitNot":{op:"~",associativity:"right"},"OperatorNode:not":{op:"not",associativity:"right"}},{"OperatorNode:pow":{op:"^",associativity:"right",associativeWith:[],latexRightParens:!1},"OperatorNode:dotPow":{op:".^",associativity:"right",associativeWith:[]}},{"OperatorNode:factorial":{op:"!",associativity:"left"}},{"OperatorNode:ctranspose":{op:"'",associativity:"left"}}];function Zw(e,t){if(!t||t!=="auto")return e;for(var r=e;yi(r);)r=r.content;return r}function Or(e,t,r,n){var i=e;t!=="keep"&&(i=e.getContent());for(var o=i.getIdentifier(),l=null,s=0;s{var{subset:t,matrix:r,Node:n}=e,i=Vw({subset:t}),o=RP({subset:t,matrix:r});function l(a,u,f){u||(u="keep");var p=Or(a,u,f),h=Or(a.value,u,f);return u==="all"||h!==null&&h<=p}class s extends n{constructor(u,f,p){if(super(),this.object=u,this.index=p?f:null,this.value=p||f,!Lr(u)&&!Mo(u))throw new TypeError('SymbolNode or AccessorNode expected as "object"');if(Lr(u)&&u.name==="end")throw new Error('Cannot assign to symbol "end"');if(this.index&&!Wo(this.index))throw new TypeError('IndexNode expected as "index"');if(!ir(this.value))throw new TypeError('Node expected as "value"')}get name(){return this.index?this.index.isObjectProperty()?this.index.getObjectProperty():"":this.object.name||""}get type(){return Kw}get isAssignmentNode(){return!0}_compile(u,f){var p=this.object._compile(u,f),h=this.index?this.index._compile(u,f):null,g=this.value._compile(u,f),x=this.object.name;if(this.index)if(this.index.isObjectProperty()){var v=this.index.getObjectProperty();return function(M,T,N){var O=p(M,T,N),F=g(M,T,N);return Tu(O,v,F),F}}else{if(Lr(this.object))return function(M,T,N){var O=p(M,T,N),F=g(M,T,N),I=h(M,T,O);return M.set(x,o(O,I,F)),F};var S=this.object.object._compile(u,f);if(this.object.index.isObjectProperty()){var D=this.object.index.getObjectProperty();return function(M,T,N){var O=S(M,T,N),F=un(O,D),I=h(M,T,F),B=g(M,T,N);return Tu(O,D,o(F,I,B)),B}}else{var C=this.object.index._compile(u,f);return function(M,T,N){var O=S(M,T,N),F=C(M,T,O),I=i(O,F),B=h(M,T,I),L=g(M,T,N);return o(O,F,o(I,B,L)),L}}}else{if(!Lr(this.object))throw new TypeError("SymbolNode expected as object");return function(M,T,N){var O=g(M,T,N);return M.set(x,O),O}}}forEach(u){u(this.object,"object",this),this.index&&u(this.index,"index",this),u(this.value,"value",this)}map(u){var f=this._ifNode(u(this.object,"object",this)),p=this.index?this._ifNode(u(this.index,"index",this)):null,h=this._ifNode(u(this.value,"value",this));return new s(f,p,h)}clone(){return new s(this.object,this.index,this.value)}_toString(u){var f=this.object.toString(u),p=this.index?this.index.toString(u):"",h=this.value.toString(u);return l(this,u&&u.parenthesis,u&&u.implicit)&&(h="("+h+")"),f+p+" = "+h}toJSON(){return{mathjs:Kw,object:this.object,index:this.index,value:this.value}}static fromJSON(u){return new s(u.object,u.index,u.value)}_toHTML(u){var f=this.object.toHTML(u),p=this.index?this.index.toHTML(u):"",h=this.value.toHTML(u);return l(this,u&&u.parenthesis,u&&u.implicit)&&(h='('+h+')'),f+p+'='+h}_toTex(u){var f=this.object.toTex(u),p=this.index?this.index.toTex(u):"",h=this.value.toTex(u);return l(this,u&&u.parenthesis,u&&u.implicit)&&(h="\\left(".concat(h,"\\right)")),f+p+"="+h}}return Tr(s,"name",Kw),s},{isClass:!0,isNode:!0});var Jw="BlockNode",Afe=["ResultSet","Node"],UP=$(Jw,Afe,e=>{var{ResultSet:t,Node:r}=e;class n extends r{constructor(o){if(super(),!Array.isArray(o))throw new Error("Array expected");this.blocks=o.map(function(l){var s=l&&l.node,a=l&&l.visible!==void 0?l.visible:!0;if(!ir(s))throw new TypeError('Property "node" must be a Node');if(typeof a!="boolean")throw new TypeError('Property "visible" must be a boolean');return{node:s,visible:a}})}get type(){return Jw}get isBlockNode(){return!0}_compile(o,l){var s=Ya(this.blocks,function(a){return{evaluate:a.node._compile(o,l),visible:a.visible}});return function(u,f,p){var h=[];return iw(s,function(x){var v=x.evaluate(u,f,p);x.visible&&h.push(v)}),new t(h)}}forEach(o){for(var l=0;l;')}).join('
    ')}_toTex(o){return this.blocks.map(function(l){return l.node.toTex(o)+(l.visible?"":";")}).join(`\\;\\; +`)}}return Tr(n,"name",Jw),n},{isClass:!0,isNode:!0});var Qw="ConditionalNode",Cfe=["Node"],HP=$(Qw,Cfe,e=>{var{Node:t}=e;function r(i){if(typeof i=="number"||typeof i=="boolean"||typeof i=="string")return!!i;if(i){if(Ct(i))return!i.isZero();if(vi(i))return!!(i.re||i.im);if(ti(i))return!!i.value}if(i==null)return!1;throw new TypeError('Unsupported type of condition "'+pr(i)+'"')}class n extends t{constructor(o,l,s){if(super(),!ir(o))throw new TypeError("Parameter condition must be a Node");if(!ir(l))throw new TypeError("Parameter trueExpr must be a Node");if(!ir(s))throw new TypeError("Parameter falseExpr must be a Node");this.condition=o,this.trueExpr=l,this.falseExpr=s}get type(){return Qw}get isConditionalNode(){return!0}_compile(o,l){var s=this.condition._compile(o,l),a=this.trueExpr._compile(o,l),u=this.falseExpr._compile(o,l);return function(p,h,g){return r(s(p,h,g))?a(p,h,g):u(p,h,g)}}forEach(o){o(this.condition,"condition",this),o(this.trueExpr,"trueExpr",this),o(this.falseExpr,"falseExpr",this)}map(o){return new n(this._ifNode(o(this.condition,"condition",this)),this._ifNode(o(this.trueExpr,"trueExpr",this)),this._ifNode(o(this.falseExpr,"falseExpr",this)))}clone(){return new n(this.condition,this.trueExpr,this.falseExpr)}_toString(o){var l=o&&o.parenthesis?o.parenthesis:"keep",s=Or(this,l,o&&o.implicit),a=this.condition.toString(o),u=Or(this.condition,l,o&&o.implicit);(l==="all"||this.condition.type==="OperatorNode"||u!==null&&u<=s)&&(a="("+a+")");var f=this.trueExpr.toString(o),p=Or(this.trueExpr,l,o&&o.implicit);(l==="all"||this.trueExpr.type==="OperatorNode"||p!==null&&p<=s)&&(f="("+f+")");var h=this.falseExpr.toString(o),g=Or(this.falseExpr,l,o&&o.implicit);return(l==="all"||this.falseExpr.type==="OperatorNode"||g!==null&&g<=s)&&(h="("+h+")"),a+" ? "+f+" : "+h}toJSON(){return{mathjs:Qw,condition:this.condition,trueExpr:this.trueExpr,falseExpr:this.falseExpr}}static fromJSON(o){return new n(o.condition,o.trueExpr,o.falseExpr)}_toHTML(o){var l=o&&o.parenthesis?o.parenthesis:"keep",s=Or(this,l,o&&o.implicit),a=this.condition.toHTML(o),u=Or(this.condition,l,o&&o.implicit);(l==="all"||this.condition.type==="OperatorNode"||u!==null&&u<=s)&&(a='('+a+')');var f=this.trueExpr.toHTML(o),p=Or(this.trueExpr,l,o&&o.implicit);(l==="all"||this.trueExpr.type==="OperatorNode"||p!==null&&p<=s)&&(f='('+f+')');var h=this.falseExpr.toHTML(o),g=Or(this.falseExpr,l,o&&o.implicit);return(l==="all"||this.falseExpr.type==="OperatorNode"||g!==null&&g<=s)&&(h='('+h+')'),a+'?'+f+':'+h}_toTex(o){return"\\begin{cases} {"+this.trueExpr.toTex(o)+"}, &\\quad{\\text{if }\\;"+this.condition.toTex(o)+"}\\\\{"+this.falseExpr.toTex(o)+"}, &\\quad{\\text{otherwise}}\\end{cases}"}}return Tr(n,"name",Qw),n},{isClass:!0,isNode:!0});var GP=mn(WP(),1);var yC={Alpha:"A",alpha:"\\alpha",Beta:"B",beta:"\\beta",Gamma:"\\Gamma",gamma:"\\gamma",Delta:"\\Delta",delta:"\\delta",Epsilon:"E",epsilon:"\\epsilon",varepsilon:"\\varepsilon",Zeta:"Z",zeta:"\\zeta",Eta:"H",eta:"\\eta",Theta:"\\Theta",theta:"\\theta",vartheta:"\\vartheta",Iota:"I",iota:"\\iota",Kappa:"K",kappa:"\\kappa",varkappa:"\\varkappa",Lambda:"\\Lambda",lambda:"\\lambda",Mu:"M",mu:"\\mu",Nu:"N",nu:"\\nu",Xi:"\\Xi",xi:"\\xi",Omicron:"O",omicron:"o",Pi:"\\Pi",pi:"\\pi",varpi:"\\varpi",Rho:"P",rho:"\\rho",varrho:"\\varrho",Sigma:"\\Sigma",sigma:"\\sigma",varsigma:"\\varsigma",Tau:"T",tau:"\\tau",Upsilon:"\\Upsilon",upsilon:"\\upsilon",Phi:"\\Phi",phi:"\\phi",varphi:"\\varphi",Chi:"X",chi:"\\chi",Psi:"\\Psi",psi:"\\psi",Omega:"\\Omega",omega:"\\omega",true:"\\mathrm{True}",false:"\\mathrm{False}",i:"i",inf:"\\infty",Inf:"\\infty",infinity:"\\infty",Infinity:"\\infty",oo:"\\infty",lim:"\\lim",undefined:"\\mathbf{?}"},Ar={transpose:"^\\top",ctranspose:"^H",factorial:"!",pow:"^",dotPow:".^\\wedge",unaryPlus:"+",unaryMinus:"-",bitNot:"\\~",not:"\\neg",multiply:"\\cdot",divide:"\\frac",dotMultiply:".\\cdot",dotDivide:".:",mod:"\\mod",add:"+",subtract:"-",to:"\\rightarrow",leftShift:"<<",rightArithShift:">>",rightLogShift:">>>",equal:"=",unequal:"\\neq",smaller:"<",larger:">",smallerEq:"\\leq",largerEq:"\\geq",bitAnd:"\\&",bitXor:"\\underline{|}",bitOr:"|",and:"\\wedge",xor:"\\veebar",or:"\\vee"},wC={abs:{1:"\\left|${args[0]}\\right|"},add:{2:"\\left(${args[0]}".concat(Ar.add,"${args[1]}\\right)")},cbrt:{1:"\\sqrt[3]{${args[0]}}"},ceil:{1:"\\left\\lceil${args[0]}\\right\\rceil"},cube:{1:"\\left(${args[0]}\\right)^3"},divide:{2:"\\frac{${args[0]}}{${args[1]}}"},dotDivide:{2:"\\left(${args[0]}".concat(Ar.dotDivide,"${args[1]}\\right)")},dotMultiply:{2:"\\left(${args[0]}".concat(Ar.dotMultiply,"${args[1]}\\right)")},dotPow:{2:"\\left(${args[0]}".concat(Ar.dotPow,"${args[1]}\\right)")},exp:{1:"\\exp\\left(${args[0]}\\right)"},expm1:"\\left(e".concat(Ar.pow,"{${args[0]}}-1\\right)"),fix:{1:"\\mathrm{${name}}\\left(${args[0]}\\right)"},floor:{1:"\\left\\lfloor${args[0]}\\right\\rfloor"},gcd:"\\gcd\\left(${args}\\right)",hypot:"\\hypot\\left(${args}\\right)",log:{1:"\\ln\\left(${args[0]}\\right)",2:"\\log_{${args[1]}}\\left(${args[0]}\\right)"},log10:{1:"\\log_{10}\\left(${args[0]}\\right)"},log1p:{1:"\\ln\\left(${args[0]}+1\\right)",2:"\\log_{${args[1]}}\\left(${args[0]}+1\\right)"},log2:"\\log_{2}\\left(${args[0]}\\right)",mod:{2:"\\left(${args[0]}".concat(Ar.mod,"${args[1]}\\right)")},multiply:{2:"\\left(${args[0]}".concat(Ar.multiply,"${args[1]}\\right)")},norm:{1:"\\left\\|${args[0]}\\right\\|",2:void 0},nthRoot:{2:"\\sqrt[${args[1]}]{${args[0]}}"},nthRoots:{2:"\\{y : $y^{args[1]} = {${args[0]}}\\}"},pow:{2:"\\left(${args[0]}\\right)".concat(Ar.pow,"{${args[1]}}")},round:{1:"\\left\\lfloor${args[0]}\\right\\rceil",2:void 0},sign:{1:"\\mathrm{${name}}\\left(${args[0]}\\right)"},sqrt:{1:"\\sqrt{${args[0]}}"},square:{1:"\\left(${args[0]}\\right)^2"},subtract:{2:"\\left(${args[0]}".concat(Ar.subtract,"${args[1]}\\right)")},unaryMinus:{1:"".concat(Ar.unaryMinus,"\\left(${args[0]}\\right)")},unaryPlus:{1:"".concat(Ar.unaryPlus,"\\left(${args[0]}\\right)")},bitAnd:{2:"\\left(${args[0]}".concat(Ar.bitAnd,"${args[1]}\\right)")},bitNot:{1:Ar.bitNot+"\\left(${args[0]}\\right)"},bitOr:{2:"\\left(${args[0]}".concat(Ar.bitOr,"${args[1]}\\right)")},bitXor:{2:"\\left(${args[0]}".concat(Ar.bitXor,"${args[1]}\\right)")},leftShift:{2:"\\left(${args[0]}".concat(Ar.leftShift,"${args[1]}\\right)")},rightArithShift:{2:"\\left(${args[0]}".concat(Ar.rightArithShift,"${args[1]}\\right)")},rightLogShift:{2:"\\left(${args[0]}".concat(Ar.rightLogShift,"${args[1]}\\right)")},bellNumbers:{1:"\\mathrm{B}_{${args[0]}}"},catalan:{1:"\\mathrm{C}_{${args[0]}}"},stirlingS2:{2:"\\mathrm{S}\\left(${args}\\right)"},arg:{1:"\\arg\\left(${args[0]}\\right)"},conj:{1:"\\left(${args[0]}\\right)^*"},im:{1:"\\Im\\left\\lbrace${args[0]}\\right\\rbrace"},re:{1:"\\Re\\left\\lbrace${args[0]}\\right\\rbrace"},and:{2:"\\left(${args[0]}".concat(Ar.and,"${args[1]}\\right)")},not:{1:Ar.not+"\\left(${args[0]}\\right)"},or:{2:"\\left(${args[0]}".concat(Ar.or,"${args[1]}\\right)")},xor:{2:"\\left(${args[0]}".concat(Ar.xor,"${args[1]}\\right)")},cross:{2:"\\left(${args[0]}\\right)\\times\\left(${args[1]}\\right)"},ctranspose:{1:"\\left(${args[0]}\\right)".concat(Ar.ctranspose)},det:{1:"\\det\\left(${args[0]}\\right)"},dot:{2:"\\left(${args[0]}\\cdot${args[1]}\\right)"},expm:{1:"\\exp\\left(${args[0]}\\right)"},inv:{1:"\\left(${args[0]}\\right)^{-1}"},pinv:{1:"\\left(${args[0]}\\right)^{+}"},sqrtm:{1:"{${args[0]}}".concat(Ar.pow,"{\\frac{1}{2}}")},trace:{1:"\\mathrm{tr}\\left(${args[0]}\\right)"},transpose:{1:"\\left(${args[0]}\\right)".concat(Ar.transpose)},combinations:{2:"\\binom{${args[0]}}{${args[1]}}"},combinationsWithRep:{2:"\\left(\\!\\!{\\binom{${args[0]}}{${args[1]}}}\\!\\!\\right)"},factorial:{1:"\\left(${args[0]}\\right)".concat(Ar.factorial)},gamma:{1:"\\Gamma\\left(${args[0]}\\right)"},lgamma:{1:"\\ln\\Gamma\\left(${args[0]}\\right)"},equal:{2:"\\left(${args[0]}".concat(Ar.equal,"${args[1]}\\right)")},larger:{2:"\\left(${args[0]}".concat(Ar.larger,"${args[1]}\\right)")},largerEq:{2:"\\left(${args[0]}".concat(Ar.largerEq,"${args[1]}\\right)")},smaller:{2:"\\left(${args[0]}".concat(Ar.smaller,"${args[1]}\\right)")},smallerEq:{2:"\\left(${args[0]}".concat(Ar.smallerEq,"${args[1]}\\right)")},unequal:{2:"\\left(${args[0]}".concat(Ar.unequal,"${args[1]}\\right)")},erf:{1:"erf\\left(${args[0]}\\right)"},max:"\\max\\left(${args}\\right)",min:"\\min\\left(${args}\\right)",variance:"\\mathrm{Var}\\left(${args}\\right)",acos:{1:"\\cos^{-1}\\left(${args[0]}\\right)"},acosh:{1:"\\cosh^{-1}\\left(${args[0]}\\right)"},acot:{1:"\\cot^{-1}\\left(${args[0]}\\right)"},acoth:{1:"\\coth^{-1}\\left(${args[0]}\\right)"},acsc:{1:"\\csc^{-1}\\left(${args[0]}\\right)"},acsch:{1:"\\mathrm{csch}^{-1}\\left(${args[0]}\\right)"},asec:{1:"\\sec^{-1}\\left(${args[0]}\\right)"},asech:{1:"\\mathrm{sech}^{-1}\\left(${args[0]}\\right)"},asin:{1:"\\sin^{-1}\\left(${args[0]}\\right)"},asinh:{1:"\\sinh^{-1}\\left(${args[0]}\\right)"},atan:{1:"\\tan^{-1}\\left(${args[0]}\\right)"},atan2:{2:"\\mathrm{atan2}\\left(${args}\\right)"},atanh:{1:"\\tanh^{-1}\\left(${args[0]}\\right)"},cos:{1:"\\cos\\left(${args[0]}\\right)"},cosh:{1:"\\cosh\\left(${args[0]}\\right)"},cot:{1:"\\cot\\left(${args[0]}\\right)"},coth:{1:"\\coth\\left(${args[0]}\\right)"},csc:{1:"\\csc\\left(${args[0]}\\right)"},csch:{1:"\\mathrm{csch}\\left(${args[0]}\\right)"},sec:{1:"\\sec\\left(${args[0]}\\right)"},sech:{1:"\\mathrm{sech}\\left(${args[0]}\\right)"},sin:{1:"\\sin\\left(${args[0]}\\right)"},sinh:{1:"\\sinh\\left(${args[0]}\\right)"},tan:{1:"\\tan\\left(${args[0]}\\right)"},tanh:{1:"\\tanh\\left(${args[0]}\\right)"},to:{2:"\\left(${args[0]}".concat(Ar.to,"${args[1]}\\right)")},numeric:function(t,r){return t.args[0].toTex()},number:{0:"0",1:"\\left(${args[0]}\\right)",2:"\\left(\\left(${args[0]}\\right)${args[1]}\\right)"},string:{0:'\\mathtt{""}',1:"\\mathrm{string}\\left(${args[0]}\\right)"},bignumber:{0:"0",1:"\\left(${args[0]}\\right)"},bigint:{0:"0",1:"\\left(${args[0]}\\right)"},complex:{0:"0",1:"\\left(${args[0]}\\right)",2:"\\left(\\left(${args[0]}\\right)+".concat(yC.i,"\\cdot\\left(${args[1]}\\right)\\right)")},matrix:{0:"\\begin{bmatrix}\\end{bmatrix}",1:"\\left(${args[0]}\\right)",2:"\\left(${args[0]}\\right)"},sparse:{0:"\\begin{bsparse}\\end{bsparse}",1:"\\left(${args[0]}\\right)"},unit:{1:"\\left(${args[0]}\\right)",2:"\\left(\\left(${args[0]}\\right)${args[1]}\\right)"}},YP="\\mathrm{${name}}\\left(${args}\\right)",VP={deg:"^\\circ"};function jw(e){return(0,GP.default)(e,{preserveFormatting:!0})}function eb(e,t){return t=typeof t>"u"?!1:t,t?xt(VP,e)?VP[e]:"\\mathrm{"+jw(e)+"}":xt(yC,e)?yC[e]:jw(e)}var tb="ConstantNode",Ofe=["Node"],ZP=$(tb,Ofe,e=>{var{Node:t}=e;class r extends t{constructor(i){super(),this.value=i}get type(){return tb}get isConstantNode(){return!0}_compile(i,o){var l=this.value;return function(){return l}}forEach(i){}map(i){return this.clone()}clone(){return new r(this.value)}_toString(i){return Ht(this.value,i)}_toHTML(i){var o=this._toString(i);switch(pr(this.value)){case"number":case"bigint":case"BigNumber":case"Fraction":return''+o+"";case"string":return''+o+"";case"boolean":return''+o+"";case"null":return''+o+"";case"undefined":return''+o+"";default:return''+o+""}}toJSON(){return{mathjs:tb,value:this.value}}static fromJSON(i){return new r(i.value)}_toTex(i){var o=this._toString(i),l=pr(this.value);switch(l){case"string":return"\\mathtt{"+jw(o)+"}";case"number":case"BigNumber":{var s=l==="BigNumber"?this.value.isFinite():isFinite(this.value);if(!s)return this.value.valueOf()<0?"-\\infty":"\\infty";var a=o.toLowerCase().indexOf("e");return a!==-1?o.substring(0,a)+"\\cdot10^{"+o.substring(a+1)+"}":o}case"bigint":return o.toString();case"Fraction":return this.value.toLatex();default:return o}}}return Tr(r,"name",tb),r},{isClass:!0,isNode:!0});var rb="FunctionAssignmentNode",Ffe=["typed","Node"],XP=$(rb,Ffe,e=>{var{typed:t,Node:r}=e;function n(o,l,s){var a=Or(o,l,s),u=Or(o.expr,l,s);return l==="all"||u!==null&&u<=a}class i extends r{constructor(l,s,a){if(super(),typeof l!="string")throw new TypeError('String expected for parameter "name"');if(!Array.isArray(s))throw new TypeError('Array containing strings or objects expected for parameter "params"');if(!ir(a))throw new TypeError('Node expected for parameter "expr"');if(Ww.has(l))throw new Error('Illegal function name, "'+l+'" is a reserved keyword');var u=new Set;for(var f of s){var p=typeof f=="string"?f:f.name;if(u.has(p))throw new Error('Duplicate parameter name "'.concat(p,'"'));u.add(p)}this.name=l,this.params=s.map(function(h){return h&&h.name||h}),this.types=s.map(function(h){return h&&h.type||"any"}),this.expr=a}get type(){return rb}get isFunctionAssignmentNode(){return!0}_compile(l,s){var a=Object.create(s);iw(this.params,function(x){a[x]=!0});var u=this.expr._compile(l,a),f=this.name,p=this.params,h=mA(this.types,","),g=f+"("+mA(this.params,", ")+")";return function(v,S,D){var C={};C[h]=function(){for(var M=Object.create(S),T=0;T'+bi(this.params[u])+"");var f=this.expr.toHTML(l);return n(this,s,l&&l.implicit)&&(f='('+f+')'),''+bi(this.name)+'('+a.join(',')+')='+f}_toTex(l){var s=l&&l.parenthesis?l.parenthesis:"keep",a=this.expr.toTex(l);return n(this,s,l&&l.implicit)&&(a="\\left(".concat(a,"\\right)")),"\\mathrm{"+this.name+"}\\left("+this.params.map(eb).join(",")+"\\right)="+a}}return Tr(i,"name",rb),i},{isClass:!0,isNode:!0});var nb="IndexNode",Ife=["Node","size"],KP=$(nb,Ife,e=>{var{Node:t,size:r}=e;class n extends t{constructor(o,l){if(super(),this.dimensions=o,this.dotNotation=l||!1,!Array.isArray(o)||!o.every(ir))throw new TypeError('Array containing Nodes expected for parameter "dimensions"');if(this.dotNotation&&!this.isObjectProperty())throw new Error("dotNotation only applicable for object properties")}get type(){return nb}get isIndexNode(){return!0}_compile(o,l){var s=Ya(this.dimensions,function(u,f){var p=u.filter(x=>x.isSymbolNode&&x.name==="end").length>0;if(p){var h=Object.create(l);h.end=!0;var g=u._compile(o,h);return function(v,S,D){if(!gt(D)&&!dr(D)&&!dn(D))throw new TypeError('Cannot resolve "end": context must be a Matrix, Array, or string but is '+pr(D));var C=r(D).valueOf(),E=Object.create(S);return E.end=C[f],g(v,E,D)}}else return u._compile(o,l)}),a=un(o,"index");return function(f,p,h){var g=Ya(s,function(x){return x(f,p,h)});return a(...g)}}forEach(o){for(var l=0;l.'+bi(this.getObjectProperty())+"":'['+l.join(',')+']'}_toTex(o){var l=this.dimensions.map(function(s){return s.toTex(o)});return this.dotNotation?"."+this.getObjectProperty():"_{"+l.join(",")+"}"}}return Tr(n,"name",nb),n},{isClass:!0,isNode:!0});var ib="ObjectNode",kfe=["Node"],JP=$(ib,kfe,e=>{var{Node:t}=e;class r extends t{constructor(i){if(super(),this.properties=i||{},i&&(typeof i!="object"||!Object.keys(i).every(function(o){return ir(i[o])})))throw new TypeError("Object containing Nodes expected")}get type(){return ib}get isObjectNode(){return!0}_compile(i,o){var l={};for(var s in this.properties)if(xt(this.properties,s)){var a=Np(s),u=JSON.parse(a),f=un(this.properties,s);l[u]=f._compile(i,o)}return function(h,g,x){var v={};for(var S in l)xt(l,S)&&(v[S]=l[S](h,g,x));return v}}forEach(i){for(var o in this.properties)xt(this.properties,o)&&i(this.properties[o],"properties["+Np(o)+"]",this)}map(i){var o={};for(var l in this.properties)xt(this.properties,l)&&(o[l]=this._ifNode(i(this.properties[l],"properties["+Np(l)+"]",this)));return new r(o)}clone(){var i={};for(var o in this.properties)xt(this.properties,o)&&(i[o]=this.properties[o]);return new r(i)}_toString(i){var o=[];for(var l in this.properties)xt(this.properties,l)&&o.push(Np(l)+": "+this.properties[l].toString(i));return"{"+o.join(", ")+"}"}toJSON(){return{mathjs:ib,properties:this.properties}}static fromJSON(i){return new r(i.properties)}_toHTML(i){var o=[];for(var l in this.properties)xt(this.properties,l)&&o.push(''+bi(l)+':'+this.properties[l].toHTML(i));return'{'+o.join(',')+'}'}_toTex(i){var o=[];for(var l in this.properties)xt(this.properties,l)&&o.push("\\mathbf{"+l+":} & "+this.properties[l].toTex(i)+"\\\\");var s="\\left\\{\\begin{array}{ll}"+o.join(` +`)+"\\end{array}\\right\\}";return s}}return Tr(r,"name",ib),r},{isClass:!0,isNode:!0});function Op(e,t){return new cd(e,new Gf(t),new Set(Object.keys(t)))}var ob="OperatorNode",Lfe=["Node"],QP=$(ob,Lfe,e=>{var{Node:t}=e;function r(o,l){var s=o;if(l==="auto")for(;yi(s);)s=s.content;return Qt(s)?!0:$r(s)?r(s.args[0],l):!1}function n(o,l,s,a,u){var f=Or(o,l,s),p=Ld(o,l);if(l==="all"||a.length>2&&o.getIdentifier()!=="OperatorNode:add"&&o.getIdentifier()!=="OperatorNode:multiply")return a.map(function(B){switch(B.getContent().type){case"ArrayNode":case"ConstantNode":case"SymbolNode":case"ParenthesisNode":return!1;default:return!0}});var h;switch(a.length){case 0:h=[];break;case 1:{var g=Or(a[0],l,s,o);if(u&&g!==null){var x,v;if(l==="keep"?(x=a[0].getIdentifier(),v=o.getIdentifier()):(x=a[0].getContent().getIdentifier(),v=o.getContent().getIdentifier()),Qa[f][v].latexLeftParens===!1){h=[!1];break}if(Qa[g][x].latexParens===!1){h=[!1];break}}if(g===null){h=[!1];break}if(g<=f){h=[!0];break}h=[!1]}break;case 2:{var S,D=Or(a[0],l,s,o),C=Xw(o,a[0],l);D===null?S=!1:D===f&&p==="right"&&!C||D=2&&o.getIdentifier()==="OperatorNode:multiply"&&o.implicit&&l!=="all"&&s==="hide")for(var I=1;I2&&(this.getIdentifier()==="OperatorNode:add"||this.getIdentifier()==="OperatorNode:multiply")){var S=u.map(function(D,C){return D=D.toString(l),f[C]&&(D="("+D+")"),D});return this.implicit&&this.getIdentifier()==="OperatorNode:multiply"&&a==="hide"?S.join(" "):S.join(" "+this.op+" ")}else return this.fn+"("+this.args.join(", ")+")"}toJSON(){return{mathjs:ob,op:this.op,fn:this.fn,args:this.args,implicit:this.implicit,isPercentage:this.isPercentage}}static fromJSON(l){return new i(l.op,l.fn,l.args,l.implicit,l.isPercentage)}_toHTML(l){var s=l&&l.parenthesis?l.parenthesis:"keep",a=l&&l.implicit?l.implicit:"hide",u=this.args,f=n(this,s,a,u,!1);if(u.length===1){var p=Ld(this,s),h=u[0].toHTML(l);return f[0]&&(h='('+h+')'),p==="right"?''+bi(this.op)+""+h:h+''+bi(this.op)+""}else if(u.length===2){var g=u[0].toHTML(l),x=u[1].toHTML(l);return f[0]&&(g='('+g+')'),f[1]&&(x='('+x+')'),this.implicit&&this.getIdentifier()==="OperatorNode:multiply"&&a==="hide"?g+''+x:g+''+bi(this.op)+""+x}else{var v=u.map(function(S,D){return S=S.toHTML(l),f[D]&&(S='('+S+')'),S});return u.length>2&&(this.getIdentifier()==="OperatorNode:add"||this.getIdentifier()==="OperatorNode:multiply")?this.implicit&&this.getIdentifier()==="OperatorNode:multiply"&&a==="hide"?v.join(''):v.join(''+bi(this.op)+""):''+bi(this.fn)+'('+v.join(',')+')'}}_toTex(l){var s=l&&l.parenthesis?l.parenthesis:"keep",a=l&&l.implicit?l.implicit:"hide",u=this.args,f=n(this,s,a,u,!0),p=Ar[this.fn];if(p=typeof p>"u"?this.op:p,u.length===1){var h=Ld(this,s),g=u[0].toTex(l);return f[0]&&(g="\\left(".concat(g,"\\right)")),h==="right"?p+g:g+p}else if(u.length===2){var x=u[0],v=x.toTex(l);f[0]&&(v="\\left(".concat(v,"\\right)"));var S=u[1],D=S.toTex(l);f[1]&&(D="\\left(".concat(D,"\\right)"));var C;switch(s==="keep"?C=x.getIdentifier():C=x.getContent().getIdentifier(),this.getIdentifier()){case"OperatorNode:divide":return p+"{"+v+"}{"+D+"}";case"OperatorNode:pow":switch(v="{"+v+"}",D="{"+D+"}",C){case"ConditionalNode":case"OperatorNode:divide":v="\\left(".concat(v,"\\right)")}break;case"OperatorNode:multiply":if(this.implicit&&a==="hide")return v+"~"+D}return v+p+D}else if(u.length>2&&(this.getIdentifier()==="OperatorNode:add"||this.getIdentifier()==="OperatorNode:multiply")){var E=u.map(function(M,T){return M=M.toTex(l),f[T]&&(M="\\left(".concat(M,"\\right)")),M});return this.getIdentifier()==="OperatorNode:multiply"&&this.implicit&&a==="hide"?E.join("~"):E.join(p)}else return"\\mathrm{"+this.fn+"}\\left("+u.map(function(M){return M.toTex(l)}).join(",")+"\\right)"}getIdentifier(){return this.type+":"+this.fn}}return Tr(i,"name",ob),i},{isClass:!0,isNode:!0});var ab="ParenthesisNode",Bfe=["Node"],jP=$(ab,Bfe,e=>{var{Node:t}=e;class r extends t{constructor(i){if(super(),!ir(i))throw new TypeError('Node expected for parameter "content"');this.content=i}get type(){return ab}get isParenthesisNode(){return!0}_compile(i,o){return this.content._compile(i,o)}getContent(){return this.content.getContent()}forEach(i){i(this.content,"content",this)}map(i){var o=i(this.content,"content",this);return new r(o)}clone(){return new r(this.content)}_toString(i){return!i||i&&!i.parenthesis||i&&i.parenthesis==="keep"?"("+this.content.toString(i)+")":this.content.toString(i)}toJSON(){return{mathjs:ab,content:this.content}}static fromJSON(i){return new r(i.content)}_toHTML(i){return!i||i&&!i.parenthesis||i&&i.parenthesis==="keep"?'('+this.content.toHTML(i)+')':this.content.toHTML(i)}_toTex(i){return!i||i&&!i.parenthesis||i&&i.parenthesis==="keep"?"\\left(".concat(this.content.toTex(i),"\\right)"):this.content.toTex(i)}}return Tr(r,"name",ab),r},{isClass:!0,isNode:!0});var sb="RangeNode",Pfe=["Node"],e6=$(sb,Pfe,e=>{var{Node:t}=e;function r(i,o,l){var s=Or(i,o,l),a={},u=Or(i.start,o,l);if(a.start=u!==null&&u<=s||o==="all",i.step){var f=Or(i.step,o,l);a.step=f!==null&&f<=s||o==="all"}var p=Or(i.end,o,l);return a.end=p!==null&&p<=s||o==="all",a}class n extends t{constructor(o,l,s){if(super(),!ir(o))throw new TypeError("Node expected");if(!ir(l))throw new TypeError("Node expected");if(s&&!ir(s))throw new TypeError("Node expected");if(arguments.length>3)throw new Error("Too many arguments");this.start=o,this.end=l,this.step=s||null}get type(){return sb}get isRangeNode(){return!0}needsEnd(){var o=this.filter(function(l){return Lr(l)&&l.name==="end"});return o.length>0}_compile(o,l){var s=o.range,a=this.start._compile(o,l),u=this.end._compile(o,l);if(this.step){var f=this.step._compile(o,l);return function(h,g,x){return s(a(h,g,x),u(h,g,x),f(h,g,x))}}else return function(h,g,x){return s(a(h,g,x),u(h,g,x))}}forEach(o){o(this.start,"start",this),o(this.end,"end",this),this.step&&o(this.step,"step",this)}map(o){return new n(this._ifNode(o(this.start,"start",this)),this._ifNode(o(this.end,"end",this)),this.step&&this._ifNode(o(this.step,"step",this)))}clone(){return new n(this.start,this.end,this.step&&this.step)}_toString(o){var l=o&&o.parenthesis?o.parenthesis:"keep",s=r(this,l,o&&o.implicit),a,u=this.start.toString(o);if(s.start&&(u="("+u+")"),a=u,this.step){var f=this.step.toString(o);s.step&&(f="("+f+")"),a+=":"+f}var p=this.end.toString(o);return s.end&&(p="("+p+")"),a+=":"+p,a}toJSON(){return{mathjs:sb,start:this.start,end:this.end,step:this.step}}static fromJSON(o){return new n(o.start,o.end,o.step)}_toHTML(o){var l=o&&o.parenthesis?o.parenthesis:"keep",s=r(this,l,o&&o.implicit),a,u=this.start.toHTML(o);if(s.start&&(u='('+u+')'),a=u,this.step){var f=this.step.toHTML(o);s.step&&(f='('+f+')'),a+=':'+f}var p=this.end.toHTML(o);return s.end&&(p='('+p+')'),a+=':'+p,a}_toTex(o){var l=o&&o.parenthesis?o.parenthesis:"keep",s=r(this,l,o&&o.implicit),a=this.start.toTex(o);if(s.start&&(a="\\left(".concat(a,"\\right)")),this.step){var u=this.step.toTex(o);s.step&&(u="\\left(".concat(u,"\\right)")),a+=":"+u}var f=this.end.toTex(o);return s.end&&(f="\\left(".concat(f,"\\right)")),a+=":"+f,a}}return Tr(n,"name",sb),n},{isClass:!0,isNode:!0});var ub="RelationalNode",Rfe=["Node"],t6=$(ub,Rfe,e=>{var{Node:t}=e,r={equal:"==",unequal:"!=",smaller:"<",larger:">",smallerEq:"<=",largerEq:">="};class n extends t{constructor(o,l){if(super(),!Array.isArray(o))throw new TypeError("Parameter conditionals must be an array");if(!Array.isArray(l))throw new TypeError("Parameter params must be an array");if(o.length!==l.length-1)throw new TypeError("Parameter params must contain exactly one more element than parameter conditionals");this.conditionals=o,this.params=l}get type(){return ub}get isRelationalNode(){return!0}_compile(o,l){var s=this,a=this.params.map(u=>u._compile(o,l));return function(f,p,h){for(var g,x=a[0](f,p,h),v=0;vo(l,"params["+s+"]",this),this)}map(o){return new n(this.conditionals.slice(),this.params.map((l,s)=>this._ifNode(o(l,"params["+s+"]",this)),this))}clone(){return new n(this.conditionals,this.params)}_toString(o){for(var l=o&&o.parenthesis?o.parenthesis:"keep",s=Or(this,l,o&&o.implicit),a=this.params.map(function(p,h){var g=Or(p,l,o&&o.implicit);return l==="all"||g!==null&&g<=s?"("+p.toString(o)+")":p.toString(o)}),u=a[0],f=0;f('+p.toHTML(o)+')':p.toHTML(o)}),u=a[0],f=0;f'+bi(r[this.conditionals[f]])+""+a[f+1];return u}_toTex(o){for(var l=o&&o.parenthesis?o.parenthesis:"keep",s=Or(this,l,o&&o.implicit),a=this.params.map(function(p,h){var g=Or(p,l,o&&o.implicit);return l==="all"||g!==null&&g<=s?"\\left("+p.toTex(o)+"\right)":p.toTex(o)}),u=a[0],f=0;f{var{math:t,Unit:r,Node:n}=e;function i(l){return r?r.isValuelessUnit(l):!1}class o extends n{constructor(s){if(super(),typeof s!="string")throw new TypeError('String expected for parameter "name"');this.name=s}get type(){return"SymbolNode"}get isSymbolNode(){return!0}_compile(s,a){var u=this.name;if(a[u]===!0)return function(p,h,g){return un(h,u)};if(u in s)return function(p,h,g){return p.has(u)?p.get(u):un(s,u)};var f=i(u);return function(p,h,g){return p.has(u)?p.get(u):f?new r(null,u):o.onUndefinedSymbol(u)}}forEach(s){}map(s){return this.clone()}static onUndefinedSymbol(s){throw new Error("Undefined symbol "+s)}clone(){return new o(this.name)}_toString(s){return this.name}_toHTML(s){var a=bi(this.name);return a==="true"||a==="false"?''+a+"":a==="i"?''+a+"":a==="Infinity"?''+a+"":a==="NaN"?''+a+"":a==="null"?''+a+"":a==="undefined"?''+a+"":''+a+""}toJSON(){return{mathjs:"SymbolNode",name:this.name}}static fromJSON(s){return new o(s.name)}_toTex(s){var a=!1;typeof t[this.name]>"u"&&i(this.name)&&(a=!0);var u=eb(this.name,a);return u[0]==="\\"?u:" "+u}}return o},{isClass:!0,isNode:!0});var lb="FunctionNode",Ufe=["math","Node","SymbolNode"],n6=$(lb,Ufe,e=>{var t,{math:r,Node:n,SymbolNode:i}=e,o=a=>Ht(a,{truncate:78});function l(a,u,f){for(var p="",h=/\$(?:\{([a-z_][a-z_0-9]*)(?:\[([0-9]+)\])?\}|\$)/gi,g=0,x;(x=h.exec(a))!==null;)if(p+=a.substring(g,x.index),g=x.index,x[0]==="$$")p+="$",g++;else{g+=x[0].length;var v=u[x[1]];if(!v)throw new ReferenceError("Template: Property "+x[1]+" does not exist.");if(x[2]===void 0)switch(typeof v){case"string":p+=v;break;case"object":if(ir(v))p+=v.toTex(f);else if(Array.isArray(v))p+=v.map(function(S,D){if(ir(S))return S.toTex(f);throw new TypeError("Template: "+x[1]+"["+D+"] is not a Node.")}).join(",");else throw new TypeError("Template: "+x[1]+" has to be a Node, String or array of Nodes");break;default:throw new TypeError("Template: "+x[1]+" has to be a Node, String or array of Nodes")}else if(ir(v[x[2]]&&v[x[2]]))p+=v[x[2]].toTex(f);else throw new TypeError("Template: "+x[1]+"["+x[2]+"] is not a Node.")}return p+=a.slice(g),p}class s extends n{constructor(u,f){if(super(),typeof u=="string"&&(u=new i(u)),!ir(u))throw new TypeError('Node expected as parameter "fn"');if(!Array.isArray(f)||!f.every(ir))throw new TypeError('Array containing Nodes expected for parameter "args"');this.fn=u,this.args=f||[]}get name(){return this.fn.name||""}get type(){return lb}get isFunctionNode(){return!0}_compile(u,f){var p=this.args.map(F=>F._compile(u,f));if(Lr(this.fn)){var h=this.fn.name;if(f[h]){var D=this.args;return function(I,B,L){var q=un(B,h);if(typeof q!="function")throw new TypeError("Argument '".concat(h,"' was not a function; received: ").concat(o(q)));if(q.rawArgs)return q(D,u,Op(I,B));var R=p.map(V=>V(I,B,L));return q.apply(q,R)}}else{var g=h in u?un(u,h):void 0,x=typeof g=="function"&&g.rawArgs===!0,v=F=>{var I;if(F.has(h))I=F.get(h);else if(h in u)I=un(u,h);else return s.onUndefinedFunction(h);if(typeof I=="function")return I;throw new TypeError("'".concat(h,`' is not a function; its value is: + `).concat(o(I)))};if(x){var S=this.args;return function(I,B,L){var q=v(I);if(q.rawArgs===!0)return q(S,u,Op(I,B));var R=p.map(V=>V(I,B,L));return q(...R)}}else switch(p.length){case 0:return function(I,B,L){var q=v(I);return q()};case 1:return function(I,B,L){var q=v(I),R=p[0];return q(R(I,B,L))};case 2:return function(I,B,L){var q=v(I),R=p[0],V=p[1];return q(R(I,B,L),V(I,B,L))};default:return function(I,B,L){var q=v(I),R=p.map(V=>V(I,B,L));return q(...R)}}}}else if(Mo(this.fn)&&Wo(this.fn.index)&&this.fn.index.isObjectProperty()){var C=this.fn.object._compile(u,f),E=this.fn.index.getObjectProperty(),M=this.args;return function(I,B,L){var q=C(I,B,L),R=fF(q,E);if(R!=null&&R.rawArgs)return R(M,u,Op(I,B));var V=p.map(X=>X(I,B,L));return R.apply(q,V)}}else{var T=this.fn.toString(),N=this.fn._compile(u,f),O=this.args;return function(I,B,L){var q=N(I,B,L);if(typeof q!="function")throw new TypeError("Expression '".concat(T,"' did not evaluate to a function; value is:")+` + `.concat(o(q)));if(q.rawArgs)return q(O,u,Op(I,B));var R=p.map(V=>V(I,B,L));return q.apply(q,R)}}}forEach(u){u(this.fn,"fn",this);for(var f=0;f'+bi(this.fn)+'('+f.join(',')+')'}toTex(u){var f;return u&&typeof u.handler=="object"&&xt(u.handler,this.name)&&(f=u.handler[this.name](this,u)),typeof f<"u"?f:super.toTex(u)}_toTex(u){var f=this.args.map(function(g){return g.toTex(u)}),p;wC[this.name]&&(p=wC[this.name]),r[this.name]&&(typeof r[this.name].toTex=="function"||typeof r[this.name].toTex=="object"||typeof r[this.name].toTex=="string")&&(p=r[this.name].toTex);var h;switch(typeof p){case"function":h=p(this,u);break;case"string":h=l(p,this,u);break;case"object":switch(typeof p[f.length]){case"function":h=p[f.length](this,u);break;case"string":h=l(p[f.length],this,u);break}}return typeof h<"u"?h:l(YP,this,u)}getIdentifier(){return this.type+":"+this.name}}return t=s,Tr(s,"name",lb),Tr(s,"onUndefinedFunction",function(a){throw new Error("Undefined function "+a)}),Tr(s,"fromJSON",function(a){return new t(a.fn,a.args)}),s},{isClass:!0,isNode:!0});var i6="parse",Hfe=["typed","numeric","config","AccessorNode","ArrayNode","AssignmentNode","BlockNode","ConditionalNode","ConstantNode","FunctionAssignmentNode","FunctionNode","IndexNode","ObjectNode","OperatorNode","ParenthesisNode","RangeNode","RelationalNode","SymbolNode"],o6=$(i6,Hfe,e=>{var{typed:t,numeric:r,config:n,AccessorNode:i,ArrayNode:o,AssignmentNode:l,BlockNode:s,ConditionalNode:a,ConstantNode:u,FunctionAssignmentNode:f,FunctionNode:p,IndexNode:h,ObjectNode:g,OperatorNode:x,ParenthesisNode:v,RangeNode:S,RelationalNode:D,SymbolNode:C}=e,E=t(i6,{string:function(ae){return we(ae,{})},"Array | Matrix":function(ae){return M(ae,{})},"string, Object":function(ae,be){var Ve=be.nodes!==void 0?be.nodes:{};return we(ae,Ve)},"Array | Matrix, Object":M});function M(W){var ae=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},be=ae.nodes!==void 0?ae.nodes:{};return yt(W,function(Ve){if(typeof Ve!="string")throw new TypeError("String expected");return we(Ve,be)})}var T={NULL:0,DELIMITER:1,NUMBER:2,SYMBOL:3,UNKNOWN:4},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,">>":!0,">>>":!0},O={mod:!0,to:!0,in:!0,and:!0,xor:!0,or:!0,not:!0},F={true:!0,false:!1,null:null,undefined:void 0},I=["NaN","Infinity"],B={'"':'"',"'":"'","\\":"\\","/":"/",b:"\b",f:"\f",n:` `,r:"\r",t:" "};function L(){return{extraNodes:{},expression:"",comment:"",index:0,token:"",tokenType:T.NULL,nestingLevel:0,conditionalLevel:null}}function q(W,ae){return W.expression.substr(W.index,ae)}function R(W){return q(W,1)}function V(W){W.index++}function X(W){return W.expression.charAt(W.index-1)}function U(W){return W.expression.charAt(W.index+1)}function H(W){for(W.tokenType=T.NULL,W.token="",W.comment="";;){if(R(W)==="#")for(;R(W)!==` `&&R(W)!=="";)W.comment+=R(W),V(W);if(E.isWhitespace(R(W),W.nestingLevel))V(W);else break}if(R(W)===""){W.tokenType=T.DELIMITER;return}if(R(W)===` -`&&!W.nestingLevel){W.tokenType=T.DELIMITER,W.token=R(W),V(W);return}var ae=R(W),Le=q(W,2),He=q(W,3);if(He.length===3&&N[He]){W.tokenType=T.DELIMITER,W.token=He,V(W),V(W),V(W);return}if(Le.length===2&&N[Le]){W.tokenType=T.DELIMITER,W.token=Le,V(W),V(W);return}if(N[ae]){W.tokenType=T.DELIMITER,W.token=ae,V(W);return}if(E.isDigitDot(ae)){W.tokenType=T.NUMBER;var lt=q(W,2);if(lt==="0b"||lt==="0o"||lt==="0x"){for(W.token+=R(W),V(W),W.token+=R(W),V(W);E.isHexDigit(R(W));)W.token+=R(W),V(W);if(R(W)===".")for(W.token+=".",V(W);E.isHexDigit(R(W));)W.token+=R(W),V(W);else if(R(W)==="i")for(W.token+="i",V(W);E.isDigit(R(W));)W.token+=R(W),V(W);return}if(R(W)==="."){if(W.token+=R(W),V(W),!E.isDigit(R(W))){W.tokenType=T.DELIMITER;return}}else{for(;E.isDigit(R(W));)W.token+=R(W),V(W);E.isDecimalMark(R(W),U(W))&&(W.token+=R(W),V(W))}for(;E.isDigit(R(W));)W.token+=R(W),V(W);if(R(W)==="E"||R(W)==="e"){if(E.isDigit(U(W))||U(W)==="-"||U(W)==="+"){if(W.token+=R(W),V(W),(R(W)==="+"||R(W)==="-")&&(W.token+=R(W),V(W)),!E.isDigit(R(W)))throw ze(W,'Digit expected, got "'+R(W)+'"');for(;E.isDigit(R(W));)W.token+=R(W),V(W);if(E.isDecimalMark(R(W),U(W)))throw ze(W,'Digit expected, got "'+R(W)+'"')}else if(U(W)===".")throw V(W),ze(W,'Digit expected, got "'+R(W)+'"')}return}if(E.isAlpha(R(W),X(W),U(W))){for(;E.isAlpha(R(W),X(W),U(W))||E.isDigit(R(W));)W.token+=R(W),V(W);xt(O,W.token)?W.tokenType=T.DELIMITER:W.tokenType=T.SYMBOL;return}for(W.tokenType=T.UNKNOWN;R(W)!=="";)W.token+=R(W),V(W);throw ze(W,'Syntax error in part "'+W.token+'"')}function ee(W){do H(W);while(W.token===` -`)}function Z(W){W.nestingLevel++}function ce(W){W.nestingLevel--}E.isAlpha=function(ae,Le,He){return E.isValidLatinOrGreek(ae)||E.isValidMathSymbol(ae,He)||E.isValidMathSymbol(Le,ae)},E.isValidLatinOrGreek=function(ae){return/^[a-zA-Z_$\u00C0-\u02AF\u0370-\u03FF\u2100-\u214F]$/.test(ae)},E.isValidMathSymbol=function(ae,Le){return/^[\uD835]$/.test(ae)&&/^[\uDC00-\uDFFF]$/.test(Le)&&/^[^\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDFCC\uDFCD]$/.test(Le)},E.isWhitespace=function(ae,Le){return ae===" "||ae===" "||ae===` -`&&Le>0},E.isDecimalMark=function(ae,Le){return ae==="."&&Le!=="/"&&Le!=="*"&&Le!=="^"},E.isDigitDot=function(ae){return ae>="0"&&ae<="9"||ae==="."},E.isDigit=function(ae){return ae>="0"&&ae<="9"},E.isHexDigit=function(ae){return ae>="0"&&ae<="9"||ae>="a"&&ae<="f"||ae>="A"&&ae<="F"};function be(W,ae){var Le=L();Wn(Le,{expression:W,extraNodes:ae}),H(Le);var He=de(Le);if(Le.token!=="")throw Le.tokenType===T.DELIMITER?je(Le,"Unexpected operator "+Le.token):ze(Le,'Unexpected part "'+Le.token+'"');return He}function de(W){var ae,Le=[],He;for(W.token!==""&&W.token!==` -`&&W.token!==";"&&(ae=ne(W),W.comment&&(ae.comment=W.comment));W.token===` -`||W.token===";";)Le.length===0&&ae&&(He=W.token!==";",Le.push({node:ae,visible:He})),H(W),W.token!==` -`&&W.token!==";"&&W.token!==""&&(ae=ne(W),W.comment&&(ae.comment=W.comment),He=W.token!==";",Le.push({node:ae,visible:He}));return Le.length>0?new s(Le):(ae||(ae=new u(void 0),W.comment&&(ae.comment=W.comment)),ae)}function ne(W){var ae,Le,He,lt,Tt=ve(W);if(W.token==="="){if(Ir(Tt))return ae=Tt.name,ee(W),He=ne(W),new l(new C(ae),He);if(Mo(Tt))return ee(W),He=ne(W),new l(Tt.object,Tt.index,He);if(Gi(Tt)&&Ir(Tt.fn)&&(lt=!0,Le=[],ae=Tt.name,Tt.args.forEach(function(nr,$r){Ir(nr)?Le[$r]=nr.name:lt=!1}),lt))return ee(W),He=ne(W),new f(ae,Le,He);throw ze(W,"Invalid left hand side of assignment operator =")}return Tt}function ve(W){for(var ae=Te(W);W.token==="?";){var Le=W.conditionalLevel;W.conditionalLevel=W.nestingLevel,ee(W);var He=ae,lt=ne(W);if(W.token!==":")throw ze(W,"False part of conditional expression expected");W.conditionalLevel=null,ee(W);var Tt=ne(W);ae=new a(He,lt,Tt),W.conditionalLevel=Le}return ae}function Te(W){for(var ae=De(W);W.token==="or";)ee(W),ae=new x("or","or",[ae,De(W)]);return ae}function De(W){for(var ae=se(W);W.token==="xor";)ee(W),ae=new x("xor","xor",[ae,se(W)]);return ae}function se(W){for(var ae=le(W);W.token==="and";)ee(W),ae=new x("and","and",[ae,le(W)]);return ae}function le(W){for(var ae=oe(W);W.token==="|";)ee(W),ae=new x("|","bitOr",[ae,oe(W)]);return ae}function oe(W){for(var ae=we(W);W.token==="^|";)ee(W),ae=new x("^|","bitXor",[ae,we(W)]);return ae}function we(W){for(var ae=Ce(W);W.token==="&";)ee(W),ae=new x("&","bitAnd",[ae,Ce(W)]);return ae}function Ce(W){for(var ae=[he(W)],Le=[],He={"==":"equal","!=":"unequal","<":"smaller",">":"larger","<=":"smallerEq",">=":"largerEq"};xt(He,W.token);){var lt={name:W.token,fn:He[W.token]};Le.push(lt),ee(W),ae.push(he(W))}return ae.length===1?ae[0]:ae.length===2?new x(Le[0].name,Le[0].fn,ae):new D(Le.map(Tt=>Tt.fn),ae)}function he(W){var ae,Le,He,lt;ae=Pe(W);for(var Tt={"<<":"leftShift",">>":"rightArithShift",">>>":"rightLogShift"};xt(Tt,W.token);)Le=W.token,He=Tt[Le],ee(W),lt=[ae,Pe(W)],ae=new x(Le,He,lt);return ae}function Pe(W){var ae,Le,He,lt;ae=Ze(W);for(var Tt={to:"to",in:"to"};xt(Tt,W.token);)Le=W.token,He=Tt[Le],ee(W),Le==="in"&&W.token===""?ae=new x("*","multiply",[ae,new C("in")],!0):(lt=[ae,Ze(W)],ae=new x(Le,He,lt));return ae}function Ze(W){var ae,Le=[];if(W.token===":"?ae=new u(1):ae=ie(W),W.token===":"&&W.conditionalLevel!==W.nestingLevel){for(Le.push(ae);W.token===":"&&Le.length<3;)ee(W),W.token===")"||W.token==="]"||W.token===","||W.token===""?Le.push(new C("end")):Le.push(ie(W));Le.length===3?ae=new S(Le[0],Le[2],Le[1]):ae=new S(Le[0],Le[1])}return ae}function ie(W){var ae,Le,He,lt;ae=fe(W);for(var Tt={"+":"add","-":"subtract"};xt(Tt,W.token);){Le=W.token,He=Tt[Le],ee(W);var nr=fe(W);nr.isPercentage?lt=[ae,new x("*","multiply",[ae,nr])]:lt=[ae,nr],ae=new x(Le,He,lt)}return ae}function fe(W){var ae,Le,He,lt;ae=Oe(W),Le=ae;for(var Tt={"*":"multiply",".*":"dotMultiply","/":"divide","./":"dotDivide"};xt(Tt,W.token);)He=W.token,lt=Tt[He],ee(W),Le=Oe(W),ae=new x(He,lt,[ae,Le]);return ae}function Oe(W){var ae,Le;for(ae=Me(W),Le=ae;W.tokenType===T.SYMBOL||W.token==="in"&&Qt(ae)||W.token==="in"&&Ur(ae)&&ae.fn==="unaryMinus"&&Qt(ae.args[0])||W.tokenType===T.NUMBER&&!Qt(Le)&&(!Ur(Le)||Le.op==="!")||W.token==="(";)Le=Me(W),ae=new x("*","multiply",[ae,Le],!0);return ae}function Me(W){for(var ae=Je(W),Le=ae,He=[];W.token==="/"&&Av(Le);)if(He.push(Wn({},W)),ee(W),W.tokenType===T.NUMBER)if(He.push(Wn({},W)),ee(W),W.tokenType===T.SYMBOL||W.token==="(")Wn(W,He.pop()),He.pop(),Le=Je(W),ae=new x("/","divide",[ae,Le]);else{He.pop(),Wn(W,He.pop());break}else{Wn(W,He.pop());break}return ae}function Je(W){var ae,Le,He,lt;ae=$e(W);for(var Tt={"%":"mod",mod:"mod"};xt(Tt,W.token);)Le=W.token,He=Tt[Le],ee(W),Le==="%"&&W.tokenType===T.DELIMITER&&W.token!=="("?ae=new x("/","divide",[ae,new u(100)],!1,!0):(lt=[ae,$e(W)],ae=new x(Le,He,lt));return ae}function $e(W){var ae,Le,He,lt={"-":"unaryMinus","+":"unaryPlus","~":"bitNot",not:"not"};return xt(lt,W.token)?(He=lt[W.token],ae=W.token,ee(W),Le=[$e(W)],new x(ae,He,Le)):it(W)}function it(W){var ae,Le,He,lt;return ae=ct(W),(W.token==="^"||W.token===".^")&&(Le=W.token,He=Le==="^"?"pow":"dotPow",ee(W),lt=[ae,$e(W)],ae=new x(Le,He,lt)),ae}function ct(W){var ae,Le,He,lt;ae=rt(W);for(var Tt={"!":"factorial","'":"ctranspose"};xt(Tt,W.token);)Le=W.token,He=Tt[Le],H(W),lt=[ae],ae=new x(Le,He,lt),ae=zt(W,ae);return ae}function rt(W){var ae=[];if(W.tokenType===T.SYMBOL&&xt(W.extraNodes,W.token)){var Le=W.extraNodes[W.token];if(H(W),W.token==="("){if(ae=[],Z(W),H(W),W.token!==")")for(ae.push(ne(W));W.token===",";)H(W),ae.push(ne(W));if(W.token!==")")throw ze(W,"Parenthesis ) expected");ce(W),H(W)}return new Le(ae)}return At(W)}function At(W){var ae,Le;return W.tokenType===T.SYMBOL||W.tokenType===T.DELIMITER&&W.token in O?(Le=W.token,H(W),xt(F,Le)?ae=new u(F[Le]):I.includes(Le)?ae=new u(r(Le,"number")):ae=new C(Le),ae=zt(W,ae),ae):mt(W)}function zt(W,ae,Le){for(var He;(W.token==="("||W.token==="["||W.token===".")&&(!Le||Le.includes(W.token));)if(He=[],W.token==="(")if(Ir(ae)||Mo(ae)){if(Z(W),H(W),W.token!==")")for(He.push(ne(W));W.token===",";)H(W),He.push(ne(W));if(W.token!==")")throw ze(W,"Parenthesis ) expected");ce(W),H(W),ae=new p(ae,He)}else return ae;else if(W.token==="["){if(Z(W),H(W),W.token!=="]")for(He.push(ne(W));W.token===",";)H(W),He.push(ne(W));if(W.token!=="]")throw ze(W,"Parenthesis ] expected");ce(W),H(W),ae=new i(ae,new h(He))}else{H(W);var lt=W.tokenType===T.SYMBOL||W.tokenType===T.DELIMITER&&W.token in O;if(!lt)throw ze(W,"Property name expected after dot");He.push(new u(W.token)),H(W);var Tt=!0;ae=new i(ae,new h(He,Tt))}return ae}function mt(W){var ae,Le;return W.token==='"'||W.token==="'"?(Le=fr(W,W.token),ae=new u(Le),ae=zt(W,ae),ae):qt(W)}function fr(W,ae){for(var Le="";R(W)!==""&&R(W)!==ae;)if(R(W)==="\\"){V(W);var He=R(W),lt=B[He];if(lt!==void 0)Le+=lt,W.index+=1;else if(He==="u"){var Tt=W.expression.slice(W.index+1,W.index+5);if(/^[0-9A-Fa-f]{4}$/.test(Tt))Le+=String.fromCharCode(parseInt(Tt,16)),W.index+=5;else throw ze(W,"Invalid unicode character \\u".concat(Tt))}else throw ze(W,"Bad escape character \\".concat(He))}else Le+=R(W),V(W);if(H(W),W.token!==ae)throw ze(W,"End of string ".concat(ae," expected"));return H(W),Le}function qt(W){var ae,Le,He,lt;if(W.token==="["){if(Z(W),H(W),W.token!=="]"){var Tt=xe(W);if(W.token===";"){for(He=1,Le=[Tt];W.token===";";)H(W),W.token!=="]"&&(Le[He]=xe(W),He++);if(W.token!=="]")throw ze(W,"End of matrix ] expected");ce(W),H(W),lt=Le[0].items.length;for(var nr=1;nr{var{typed:t,parse:r}=e;return t(jP,{string:function(i){return r(i).compile()},"Array | Matrix":function(i){return wt(i,function(o){return r(o).compile()})}})});var t6="evaluate",Ufe=["typed","parse"],r6=$(t6,Ufe,e=>{var{typed:t,parse:r}=e;return t(t6,{string:function(i){var o=Bf();return r(i).compile().evaluate(o)},"string, Map | Object":function(i,o){return r(i).compile().evaluate(o)},"Array | Matrix":function(i){var o=Bf();return wt(i,function(l){return r(l).compile().evaluate(o)})},"Array | Matrix, Map | Object":function(i,o){return wt(i,function(l){return r(l).compile().evaluate(o)})}})});var Hfe="Parser",$fe=["evaluate","parse"],n6=$(Hfe,$fe,e=>{var{evaluate:t,parse:r}=e;function n(){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");Object.defineProperty(this,"scope",{value:Bf(),writable:!1})}n.prototype.type="Parser",n.prototype.isParser=!0,n.prototype.evaluate=function(o){return t(o,this.scope)},n.prototype.get=function(o){if(this.scope.has(o))return this.scope.get(o)},n.prototype.getAll=function(){return oF(this.scope)},n.prototype.getAllAsMap=function(){return this.scope};function i(o){if(o.length===0)return!1;for(var l=0;l0&&r.isDigit(a);if(!f)return!1}return!0}return n.prototype.set=function(o,l){if(!i(o))throw new Error("Invalid variable name: '".concat(o,"'. Variable names must follow the specified rules."));return this.scope.set(o,l),l},n.prototype.remove=function(o){this.scope.delete(o)},n.prototype.clear=function(){this.scope.clear()},n},{isClass:!0});var i6="parser",Wfe=["typed","Parser"],o6=$(i6,Wfe,e=>{var{typed:t,Parser:r}=e;return t(i6,{"":function(){return new r}})});var a6="lup",Vfe=["typed","matrix","abs","addScalar","divideScalar","multiplyScalar","subtractScalar","larger","equalScalar","unaryMinus","DenseMatrix","SparseMatrix","Spa"],s6=$(a6,Vfe,e=>{var{typed:t,matrix:r,abs:n,addScalar:i,divideScalar:o,multiplyScalar:l,subtractScalar:s,larger:a,equalScalar:u,unaryMinus:f,DenseMatrix:p,SparseMatrix:h,Spa:g}=e;return t(a6,{DenseMatrix:function(D){return x(D)},SparseMatrix:function(D){return v(D)},Array:function(D){var C=r(D),E=x(C);return{L:E.L.valueOf(),U:E.U.valueOf(),p:E.p}}});function x(S){var D=S._size[0],C=S._size[1],E=Math.min(D,C),M=_t(S._data),T=[],N=[D,E],O=[],F=[E,C],I,B,L,q=[];for(I=0;I0)for(I=0;I0},E.isDecimalMark=function(ae,be){return ae==="."&&be!=="/"&&be!=="*"&&be!=="^"},E.isDigitDot=function(ae){return ae>="0"&&ae<="9"||ae==="."},E.isDigit=function(ae){return ae>="0"&&ae<="9"},E.isHexDigit=function(ae){return ae>="0"&&ae<="9"||ae>="a"&&ae<="f"||ae>="A"&&ae<="F"};function we(W,ae){var be=L();Gn(be,{expression:W,extraNodes:ae}),H(be);var Ve=he(be);if(be.token!=="")throw be.tokenType===T.DELIMITER?$e(be,"Unexpected operator "+be.token):Pe(be,'Unexpected part "'+be.token+'"');return Ve}function he(W){var ae,be=[],Ve;for(W.token!==""&&W.token!==` +`&&W.token!==";"&&(ae=oe(W),W.comment&&(ae.comment=W.comment));W.token===` +`||W.token===";";)be.length===0&&ae&&(Ve=W.token!==";",be.push({node:ae,visible:Ve})),H(W),W.token!==` +`&&W.token!==";"&&W.token!==""&&(ae=oe(W),W.comment&&(ae.comment=W.comment),Ve=W.token!==";",be.push({node:ae,visible:Ve}));return be.length>0?new s(be):(ae||(ae=new u(void 0),W.comment&&(ae.comment=W.comment)),ae)}function oe(W){var ae,be,Ve,tt,ft=ve(W);if(W.token==="="){if(Lr(ft))return ae=ft.name,ee(W),Ve=oe(W),new l(new C(ae),Ve);if(Mo(ft))return ee(W),Ve=oe(W),new l(ft.object,ft.index,Ve);if(Ji(ft)&&Lr(ft.fn)&&(tt=!0,be=[],ae=ft.name,ft.args.forEach(function(or,br){Lr(or)?be[br]=or.name:tt=!1}),tt))return ee(W),Ve=oe(W),new f(ae,be,Ve);throw Pe(W,"Invalid left hand side of assignment operator =")}return ft}function ve(W){for(var ae=Oe(W);W.token==="?";){var be=W.conditionalLevel;W.conditionalLevel=W.nestingLevel,ee(W);var Ve=ae,tt=oe(W);if(W.token!==":")throw Pe(W,"False part of conditional expression expected");W.conditionalLevel=null,ee(W);var ft=oe(W);ae=new a(Ve,tt,ft),W.conditionalLevel=be}return ae}function Oe(W){for(var ae=De(W);W.token==="or";)ee(W),ae=new x("or","or",[ae,De(W)]);return ae}function De(W){for(var ae=Me(W);W.token==="xor";)ee(W),ae=new x("xor","xor",[ae,Me(W)]);return ae}function Me(W){for(var ae=le(W);W.token==="and";)ee(W),ae=new x("and","and",[ae,le(W)]);return ae}function le(W){for(var ae=ne(W);W.token==="|";)ee(W),ae=new x("|","bitOr",[ae,ne(W)]);return ae}function ne(W){for(var ae=fe(W);W.token==="^|";)ee(W),ae=new x("^|","bitXor",[ae,fe(W)]);return ae}function fe(W){for(var ae=Fe(W);W.token==="&";)ee(W),ae=new x("&","bitAnd",[ae,Fe(W)]);return ae}function Fe(W){for(var ae=[me(W)],be=[],Ve={"==":"equal","!=":"unequal","<":"smaller",">":"larger","<=":"smallerEq",">=":"largerEq"};xt(Ve,W.token);){var tt={name:W.token,fn:Ve[W.token]};be.push(tt),ee(W),ae.push(me(W))}return ae.length===1?ae[0]:ae.length===2?new x(be[0].name,be[0].fn,ae):new D(be.map(ft=>ft.fn),ae)}function me(W){var ae,be,Ve,tt;ae=Ue(W);for(var ft={"<<":"leftShift",">>":"rightArithShift",">>>":"rightLogShift"};xt(ft,W.token);)be=W.token,Ve=ft[be],ee(W),tt=[ae,Ue(W)],ae=new x(be,Ve,tt);return ae}function Ue(W){var ae,be,Ve,tt;ae=Re(W);for(var ft={to:"to",in:"to"};xt(ft,W.token);)be=W.token,Ve=ft[be],ee(W),be==="in"&&W.token===""?ae=new x("*","multiply",[ae,new C("in")],!0):(tt=[ae,Re(W)],ae=new x(be,Ve,tt));return ae}function Re(W){var ae,be=[];if(W.token===":"?ae=new u(1):ae=ie(W),W.token===":"&&W.conditionalLevel!==W.nestingLevel){for(be.push(ae);W.token===":"&&be.length<3;)ee(W),W.token===")"||W.token==="]"||W.token===","||W.token===""?be.push(new C("end")):be.push(ie(W));be.length===3?ae=new S(be[0],be[2],be[1]):ae=new S(be[0],be[1])}return ae}function ie(W){var ae,be,Ve,tt;ae=ue(W);for(var ft={"+":"add","-":"subtract"};xt(ft,W.token);){be=W.token,Ve=ft[be],ee(W);var or=ue(W);or.isPercentage?tt=[ae,new x("*","multiply",[ae,or])]:tt=[ae,or],ae=new x(be,Ve,tt)}return ae}function ue(W){var ae,be,Ve,tt;ae=Te(W),be=ae;for(var ft={"*":"multiply",".*":"dotMultiply","/":"divide","./":"dotDivide","%":"mod",mod:"mod"};xt(ft,W.token);)if(Ve=W.token,tt=ft[Ve],ee(W),Ve==="%"&&W.tokenType===T.DELIMITER&&W.token!=="(")if(W.token!==""&&ft[W.token]){var or=new x("/","divide",[ae,new u(100)],!1,!0);Ve=W.token,tt=ft[Ve],ee(W),be=Te(W),ae=new x(Ve,tt,[or,be])}else ae=new x("/","divide",[ae,new u(100)],!1,!0);else be=Te(W),ae=new x(Ve,tt,[ae,be]);return ae}function Te(W){var ae,be;for(ae=Ce(W),be=ae;W.tokenType===T.SYMBOL||W.token==="in"&&Qt(ae)||W.token==="in"&&$r(ae)&&ae.fn==="unaryMinus"&&Qt(ae.args[0])||W.tokenType===T.NUMBER&&!Qt(be)&&(!$r(be)||be.op==="!")||W.token==="(";)be=Ce(W),ae=new x("*","multiply",[ae,be],!0);return ae}function Ce(W){for(var ae=Je(W),be=ae,Ve=[];W.token==="/"&&Mv(be);)if(Ve.push(Gn({},W)),ee(W),W.tokenType===T.NUMBER)if(Ve.push(Gn({},W)),ee(W),W.tokenType===T.SYMBOL||W.token==="("||W.token==="in")Gn(W,Ve.pop()),Ve.pop(),be=Je(W),ae=new x("/","divide",[ae,be]);else{Ve.pop(),Gn(W,Ve.pop());break}else{Gn(W,Ve.pop());break}return ae}function Je(W){var ae,be,Ve,tt={"-":"unaryMinus","+":"unaryPlus","~":"bitNot",not:"not"};return xt(tt,W.token)?(Ve=tt[W.token],ae=W.token,ee(W),be=[Je(W)],new x(ae,Ve,be)):He(W)}function He(W){var ae,be,Ve,tt;return ae=it(W),(W.token==="^"||W.token===".^")&&(be=W.token,Ve=be==="^"?"pow":"dotPow",ee(W),tt=[ae,Je(W)],ae=new x(be,Ve,tt)),ae}function it(W){var ae,be,Ve,tt;ae=ct(W);for(var ft={"!":"factorial","'":"ctranspose"};xt(ft,W.token);)be=W.token,Ve=ft[be],H(W),tt=[ae],ae=new x(be,Ve,tt),ae=At(W,ae);return ae}function ct(W){var ae=[];if(W.tokenType===T.SYMBOL&&xt(W.extraNodes,W.token)){var be=W.extraNodes[W.token];if(H(W),W.token==="("){if(ae=[],Z(W),H(W),W.token!==")")for(ae.push(oe(W));W.token===",";)H(W),ae.push(oe(W));if(W.token!==")")throw Pe(W,"Parenthesis ) expected");pe(W),H(W)}return new be(ae)}return rt(W)}function rt(W){var ae,be;return W.tokenType===T.SYMBOL||W.tokenType===T.DELIMITER&&W.token in O?(be=W.token,H(W),xt(F,be)?ae=new u(F[be]):I.includes(be)?ae=new u(r(be,"number")):ae=new C(be),ae=At(W,ae),ae):Rt(W)}function At(W,ae,be){for(var Ve;(W.token==="("||W.token==="["||W.token===".")&&(!be||be.includes(W.token));)if(Ve=[],W.token==="(")if(Lr(ae)||Mo(ae)){if(Z(W),H(W),W.token!==")")for(Ve.push(oe(W));W.token===",";)H(W),Ve.push(oe(W));if(W.token!==")")throw Pe(W,"Parenthesis ) expected");pe(W),H(W),ae=new p(ae,Ve)}else return ae;else if(W.token==="["){if(Z(W),H(W),W.token!=="]")for(Ve.push(oe(W));W.token===",";)H(W),Ve.push(oe(W));if(W.token!=="]")throw Pe(W,"Parenthesis ] expected");pe(W),H(W),ae=new i(ae,new h(Ve))}else{H(W);var tt=W.tokenType===T.SYMBOL||W.tokenType===T.DELIMITER&&W.token in O;if(!tt)throw Pe(W,"Property name expected after dot");Ve.push(new u(W.token)),H(W);var ft=!0;ae=new i(ae,new h(Ve,ft))}return ae}function Rt(W){var ae,be;return W.token==='"'||W.token==="'"?(be=vt(W,W.token),ae=new u(be),ae=At(W,ae),ae):nr(W)}function vt(W,ae){for(var be="";R(W)!==""&&R(W)!==ae;)if(R(W)==="\\"){V(W);var Ve=R(W),tt=B[Ve];if(tt!==void 0)be+=tt,W.index+=1;else if(Ve==="u"){var ft=W.expression.slice(W.index+1,W.index+5);if(/^[0-9A-Fa-f]{4}$/.test(ft))be+=String.fromCharCode(parseInt(ft,16)),W.index+=5;else throw Pe(W,"Invalid unicode character \\u".concat(ft))}else throw Pe(W,"Bad escape character \\".concat(Ve))}else be+=R(W),V(W);if(H(W),W.token!==ae)throw Pe(W,"End of string ".concat(ae," expected"));return H(W),be}function nr(W){var ae,be,Ve,tt;if(W.token==="["){if(Z(W),H(W),W.token!=="]"){var ft=qt(W);if(W.token===";"){for(Ve=1,be=[ft];W.token===";";)H(W),W.token!=="]"&&(be[Ve]=qt(W),Ve++);if(W.token!=="]")throw Pe(W,"End of matrix ] expected");pe(W),H(W),tt=be[0].items.length;for(var or=1;or{var{typed:t,parse:r}=e;return t(a6,{string:function(i){return r(i).compile()},"Array | Matrix":function(i){return yt(i,function(o){return r(o).compile()})}})});var u6="evaluate",Wfe=["typed","parse"],l6=$(u6,Wfe,e=>{var{typed:t,parse:r}=e;return t(u6,{string:function(i){var o=Yf();return r(i).compile().evaluate(o)},"string, Map | Object":function(i,o){return r(i).compile().evaluate(o)},"Array | Matrix":function(i){var o=Yf();return yt(i,function(l){return r(l).compile().evaluate(o)})},"Array | Matrix, Map | Object":function(i,o){return yt(i,function(l){return r(l).compile().evaluate(o)})}})});var Vfe="Parser",Gfe=["evaluate","parse"],f6=$(Vfe,Gfe,e=>{var{evaluate:t,parse:r}=e;function n(){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");Object.defineProperty(this,"scope",{value:Yf(),writable:!1})}n.prototype.type="Parser",n.prototype.isParser=!0,n.prototype.evaluate=function(o){return t(o,this.scope)},n.prototype.get=function(o){if(this.scope.has(o))return this.scope.get(o)},n.prototype.getAll=function(){return pF(this.scope)},n.prototype.getAllAsMap=function(){return this.scope};function i(o){if(o.length===0)return!1;for(var l=0;l0&&r.isDigit(a);if(!f)return!1}return!0}return n.prototype.set=function(o,l){if(!i(o))throw new Error("Invalid variable name: '".concat(o,"'. Variable names must follow the specified rules."));return this.scope.set(o,l),l},n.prototype.remove=function(o){this.scope.delete(o)},n.prototype.clear=function(){this.scope.clear()},n},{isClass:!0});var c6="parser",Yfe=["typed","Parser"],p6=$(c6,Yfe,e=>{var{typed:t,Parser:r}=e;return t(c6,{"":function(){return new r}})});var m6="lup",Zfe=["typed","matrix","abs","addScalar","divideScalar","multiplyScalar","subtractScalar","larger","equalScalar","unaryMinus","DenseMatrix","SparseMatrix","Spa"],d6=$(m6,Zfe,e=>{var{typed:t,matrix:r,abs:n,addScalar:i,divideScalar:o,multiplyScalar:l,subtractScalar:s,larger:a,equalScalar:u,unaryMinus:f,DenseMatrix:p,SparseMatrix:h,Spa:g}=e;return t(m6,{DenseMatrix:function(D){return x(D)},SparseMatrix:function(D){return v(D)},Array:function(D){var C=r(D),E=x(C);return{L:E.L.valueOf(),U:E.U.valueOf(),p:E.p}}});function x(S){var D=S._size[0],C=S._size[1],E=Math.min(D,C),M=_t(S._data),T=[],N=[D,E],O=[],F=[E,C],I,B,L,q=[];for(I=0;I0)for(I=0;I0&&ne.forEach(0,U-1,function(oe,we){h._forEachRow(oe,O,F,I,function(Ce,he){Ce>oe&&ne.accumulate(Ce,f(l(he,we)))})});var De=U,se=ne.get(U),le=n(se);ne.forEach(U+1,D-1,function(oe,we){var Ce=n(we);a(Ce,le)&&(De=oe,le=Ce,se=we)}),U!==De&&(h._swapRows(U,De,B[1],O,F,I),h._swapRows(U,De,V[1],L,q,R),ne.swap(U,De),ce(U,De)),ne.forEach(0,D-1,function(oe,we){oe<=U?(L.push(we),q.push(oe)):(we=o(we,se),u(we,0)||(O.push(we),F.push(oe)))})};for(U=0;U0&&oe.forEach(0,U-1,function(ne,fe){h._forEachRow(ne,O,F,I,function(Fe,me){Fe>ne&&oe.accumulate(Fe,f(l(me,fe)))})});var De=U,Me=oe.get(U),le=n(Me);oe.forEach(U+1,D-1,function(ne,fe){var Fe=n(fe);a(Fe,le)&&(De=ne,le=Fe,Me=fe)}),U!==De&&(h._swapRows(U,De,B[1],O,F,I),h._swapRows(U,De,V[1],L,q,R),oe.swap(U,De),pe(U,De)),oe.forEach(0,D-1,function(ne,fe){ne<=U?(L.push(fe),q.push(ne)):(fe=o(fe,Me),u(fe,0)||(O.push(fe),F.push(ne)))})};for(U=0;U{var{typed:t,matrix:r,zeros:n,identity:i,isZero:o,equal:l,sign:s,sqrt:a,conj:u,unaryMinus:f,addScalar:p,divideScalar:h,multiplyScalar:g,subtractScalar:x,complex:v}=e;return Wn(t(u6,{DenseMatrix:function(M){return D(M)},SparseMatrix:function(M){return C(M)},Array:function(M){var T=r(M),N=D(T);return{Q:N.Q.valueOf(),R:N.R.valueOf()}}}),{_denseQRimpl:S});function S(E){var M=E._size[0],T=E._size[1],N=i([M],"dense"),O=N._data,F=E.clone(),I=F._data,B,L,q,R=n([M],"");for(q=0;q0)for(var N=T[0][0].type==="Complex"?v(0):0,O=0;O=0;){var a=r[l+s],u=r[n+a];u===-1?(s--,o[t++]=a):(r[n+a]=r[i+u],++s,r[l+s]=u)}return t}function c6(e,t){if(!e)return null;var r=0,n,i=[],o=[],l=0,s=t,a=2*t;for(n=0;n=0;n--)e[n]!==-1&&(o[s+n]=o[l+e[n]],o[l+e[n]]=n);for(n=0;n{var{add:t,multiply:r,transpose:n}=e;return function(f,p){if(!p||f<=0||f>3)return null;var h=p._size,g=h[0],x=h[1],v=0,S=Math.max(16,10*Math.sqrt(x));S=Math.min(x-2,S);var D=i(f,p,g,x,S);m6(D,a,null);for(var C=D._index,E=D._ptr,M=E[x],T=[],N=[],O=0,F=x+1,I=2*(x+1),B=3*(x+1),L=4*(x+1),q=5*(x+1),R=6*(x+1),V=7*(x+1),X=T,U=o(x,E,N,O,B,X,I,V,F,R,L,q),H=l(x,E,N,q,L,R,S,F,B,X,I),ee=0,Z,ce,be,de,ne,ve,Te,De,se,le,oe,we,Ce,he,Pe,Ze;Hie?(ve=be,Te=Me,De=N[O+be]-ie):(ve=C[Me++],Te=E[ve],De=N[O+ve]),ne=1;ne<=De;ne++)Z=C[Te++],!((se=N[F+Z])<=0)&&(Oe+=se,N[F+Z]=-se,C[$e++]=Z,N[I+Z]!==-1&&(X[N[I+Z]]=X[Z]),X[Z]!==-1?N[I+X[Z]]=N[I+Z]:N[B+N[q+Z]]=N[I+Z]);ve!==be&&(E[ve]=qs(be),N[R+ve]=0)}for(ie!==0&&(M=$e),N[q+be]=Oe,E[be]=Je,N[O+be]=$e-Je,N[L+be]=-2,U=s(U,v,N,R,x),le=Je;le<$e;le++)if(Z=C[le],!((oe=N[L+Z])<=0)){se=-N[F+Z];var it=U-se;for(Me=E[Z],we=E[Z]+oe-1;Me<=we;Me++)ve=C[Me],N[R+ve]>=U?N[R+ve]-=se:N[R+ve]!==0&&(N[R+ve]=N[q+ve]+it)}for(le=Je;le<$e;le++){for(Z=C[le],we=E[Z],Ce=we+N[L+Z]-1,he=we,Pe=0,Ze=0,Me=we;Me<=Ce;Me++)if(ve=C[Me],N[R+ve]!==0){var ct=N[R+ve]-U;ct>0?(Ze+=ct,C[he++]=ve,Pe+=ve):(E[ve]=qs(be),N[R+ve]=0)}N[L+Z]=he-we+1;var rt=he,At=we+N[O+Z];for(Me=Ce+1;Me=0))for(Pe=X[Z],Z=N[V+Pe],N[V+Pe]=-1;Z!==-1&&N[I+Z]!==-1;Z=N[I+Z],U++){for(De=N[O+Z],oe=N[L+Z],Me=E[Z]+1;Me<=E[Z]+De-1;Me++)N[R+C[Me]]=U;var mt=Z;for(ce=N[I+Z];ce!==-1;){var fr=N[O+ce]===De&&N[L+ce]===oe;for(Me=E[ce]+1;fr&&Me<=E[ce]+De-1;Me++)N[R+C[Me]]!==U&&(fr=0);fr?(E[ce]=qs(Z),N[F+Z]+=N[F+ce],N[F+ce]=0,N[L+ce]=-1,ce=N[I+ce],N[I+mt]=ce):(mt=ce,ce=N[I+ce])}}for(Me=Je,le=Je;le<$e;le++)Z=C[le],!((se=-N[F+Z])<=0)&&(N[F+Z]=se,Ze=N[q+Z]+Oe-se,Ze=Math.min(Ze,x-H-se),N[B+Ze]!==-1&&(X[N[B+Ze]]=Z),N[I+Z]=N[B+Ze],X[Z]=-1,N[B+Ze]=Z,ee=Math.min(ee,Ze),N[q+Z]=Ze,C[Me++]=Z);N[F+be]=fe,(N[O+be]=Me-Je)===0&&(E[be]=-1,N[R+be]=0),ie!==0&&(M=Me)}for(Z=0;Z=0;ce--)N[F+ce]>0||(N[I+ce]=N[B+E[ce]],N[B+E[ce]]=ce);for(ve=x;ve>=0;ve--)N[F+ve]<=0||E[ve]!==-1&&(N[I+ve]=N[B+E[ve]],N[B+E[ve]]=ve);for(be=0,Z=0;Z<=x;Z++)E[Z]===-1&&(be=lb(Z,be,N,B,I,T,R));return T.splice(T.length-1,1),T};function i(u,f,p,h,g){var x=n(f);if(u===1&&h===p)return t(f,x);if(u===2){for(var v=x._index,S=x._ptr,D=0,C=0;Cg))for(var M=S[C+1];Ev)p[S+T]=0,p[g+T]=-1,M++,f[T]=qs(u),p[S+u]++;else{var O=p[D+N];O!==-1&&(C[O]=T),p[E+T]=p[D+N],p[D+N]=T}}return M}function s(u,f,p,h,g){if(u<2||u+f<0){for(var x=0;x{var{transpose:t}=e;return function(r,n,i,o){if(!r||!n||!i)return null;var l=r._size,s=l[0],a=l[1],u,f,p,h,g,x,v,S=4*a+(o?a+s+1:0),D=[],C=0,E=a,M=2*a,T=3*a,N=4*a,O=5*a+1;for(p=0;p=1&&F[f]++,q.jleaf===2&&F[q.q]--}n[f]!==-1&&(D[C+f]=n[f])}for(f=0;f{var{add:t,multiply:r,transpose:n}=e,i=d6({add:t,multiply:r,transpose:n}),o=g6({transpose:n});return function(a,u,f){var p=u._ptr,h=u._size,g=h[1],x,v={};if(v.q=i(a,u),a&&!v.q)return null;if(f){var S=a?f6(u,null,v.q,0):u;v.parent=p6(S,1);var D=c6(v.parent,g);if(v.cp=o(S,v.parent,D,1),S&&v.parent&&v.cp&&l(S,v))for(v.unz=0,x=0;x=0;O--)for(I=u[O],B=u[O+1],F=I;F=0;N--)v[N]=-1,O=S[N],O!==-1&&(D[T+O]++===0&&(D[M+O]=N),D[C+N]=D[E+O],D[E+O]=N);for(a.lnz=0,a.m2=h,O=0;O=0;){e=n[h];var g=i?i[e]:e;Rv(l,e)||(fb(l,e),n[a+h]=g<0?0:hC(l[g]));var x=1;for(f=n[a+h],p=g<0?0:hC(l[g+1]);f{var{divideScalar:t,multiply:r,subtract:n}=e;return function(o,l,s,a,u,f,p){var h=o._values,g=o._index,x=o._ptr,v=o._size,S=v[1],D=l._values,C=l._index,E=l._ptr,M,T,N,O,F=y6(o,l,s,a,f);for(M=F;M{var{abs:t,divideScalar:r,multiply:n,subtract:i,larger:o,largerEq:l,SparseMatrix:s}=e,a=w6({divideScalar:r,multiply:n,subtract:i});return function(f,p,h){if(!f)return null;var g=f._size,x=g[1],v,S=100,D=100;p&&(v=p.q,S=p.lnz||S,D=p.unz||D);var C=[],E=[],M=[],T=new s({values:C,index:E,ptr:M,size:[x,x]}),N=[],O=[],F=[],I=new s({values:N,index:O,ptr:F,size:[x,x]}),B=[],L,q,R=[],V=[];for(L=0;L{var{typed:t,abs:r,add:n,multiply:i,transpose:o,divideScalar:l,subtract:s,larger:a,largerEq:u,SparseMatrix:f}=e,p=v6({add:n,multiply:i,transpose:o}),h=b6({abs:r,divideScalar:l,multiply:i,subtract:s,larger:a,largerEq:u,SparseMatrix:f});return t(D6,{"SparseMatrix, number, number":function(x,v,S){if(!ht(v)||v<0||v>3)throw new Error("Symbolic Ordering and Analysis order must be an integer number in the interval [0, 3]");if(S<0||S>1)throw new Error("Partial pivoting threshold must be a number from 0 to 1");var D=p(v,x,!1),C=h(x,D,S);return{L:C.L,U:C.U,p:C.pinv,q:D.q,toString:function(){return"L: "+this.L.toString()+` +P: `+this.p}}}});var h6="qr",Xfe=["typed","matrix","zeros","identity","isZero","equal","sign","sqrt","conj","unaryMinus","addScalar","divideScalar","multiplyScalar","subtractScalar","complex"],g6=$(h6,Xfe,e=>{var{typed:t,matrix:r,zeros:n,identity:i,isZero:o,equal:l,sign:s,sqrt:a,conj:u,unaryMinus:f,addScalar:p,divideScalar:h,multiplyScalar:g,subtractScalar:x,complex:v}=e;return Gn(t(h6,{DenseMatrix:function(M){return D(M)},SparseMatrix:function(M){return C(M)},Array:function(M){var T=r(M),N=D(T);return{Q:N.Q.valueOf(),R:N.R.valueOf()}}}),{_denseQRimpl:S});function S(E){var M=E._size[0],T=E._size[1],N=i([M],"dense"),O=N._data,F=E.clone(),I=F._data,B,L,q,R=n([M],"");for(q=0;q0)for(var N=T[0][0].type==="Complex"?v(0):0,O=0;O=0;){var a=r[l+s],u=r[n+a];u===-1?(s--,o[t++]=a):(r[n+a]=r[i+u],++s,r[l+s]=u)}return t}function x6(e,t){if(!e)return null;var r=0,n,i=[],o=[],l=0,s=t,a=2*t;for(n=0;n=0;n--)e[n]!==-1&&(o[s+n]=o[l+e[n]],o[l+e[n]]=n);for(n=0;n{var{add:t,multiply:r,transpose:n}=e;return function(f,p){if(!p||f<=0||f>3)return null;var h=p._size,g=h[0],x=h[1],v=0,S=Math.max(16,10*Math.sqrt(x));S=Math.min(x-2,S);var D=i(f,p,g,x,S);w6(D,a,null);for(var C=D._index,E=D._ptr,M=E[x],T=[],N=[],O=0,F=x+1,I=2*(x+1),B=3*(x+1),L=4*(x+1),q=5*(x+1),R=6*(x+1),V=7*(x+1),X=T,U=o(x,E,N,O,B,X,I,V,F,R,L,q),H=l(x,E,N,q,L,R,S,F,B,X,I),ee=0,Z,pe,we,he,oe,ve,Oe,De,Me,le,ne,fe,Fe,me,Ue,Re;Hie?(ve=we,Oe=Ce,De=N[O+we]-ie):(ve=C[Ce++],Oe=E[ve],De=N[O+ve]),oe=1;oe<=De;oe++)Z=C[Oe++],!((Me=N[F+Z])<=0)&&(Te+=Me,N[F+Z]=-Me,C[He++]=Z,N[I+Z]!==-1&&(X[N[I+Z]]=X[Z]),X[Z]!==-1?N[I+X[Z]]=N[I+Z]:N[B+N[q+Z]]=N[I+Z]);ve!==we&&(E[ve]=qs(we),N[R+ve]=0)}for(ie!==0&&(M=He),N[q+we]=Te,E[we]=Je,N[O+we]=He-Je,N[L+we]=-2,U=s(U,v,N,R,x),le=Je;le=U?N[R+ve]-=Me:N[R+ve]!==0&&(N[R+ve]=N[q+ve]+it)}for(le=Je;le0?(Re+=ct,C[me++]=ve,Ue+=ve):(E[ve]=qs(we),N[R+ve]=0)}N[L+Z]=me-fe+1;var rt=me,At=fe+N[O+Z];for(Ce=Fe+1;Ce=0))for(Ue=X[Z],Z=N[V+Ue],N[V+Ue]=-1;Z!==-1&&N[I+Z]!==-1;Z=N[I+Z],U++){for(De=N[O+Z],ne=N[L+Z],Ce=E[Z]+1;Ce<=E[Z]+De-1;Ce++)N[R+C[Ce]]=U;var vt=Z;for(pe=N[I+Z];pe!==-1;){var nr=N[O+pe]===De&&N[L+pe]===ne;for(Ce=E[pe]+1;nr&&Ce<=E[pe]+De-1;Ce++)N[R+C[Ce]]!==U&&(nr=0);nr?(E[pe]=qs(Z),N[F+Z]+=N[F+pe],N[F+pe]=0,N[L+pe]=-1,pe=N[I+pe],N[I+vt]=pe):(vt=pe,pe=N[I+pe])}}for(Ce=Je,le=Je;le=0;pe--)N[F+pe]>0||(N[I+pe]=N[B+E[pe]],N[B+E[pe]]=pe);for(ve=x;ve>=0;ve--)N[F+ve]<=0||E[ve]!==-1&&(N[I+ve]=N[B+E[ve]],N[B+E[ve]]=ve);for(we=0,Z=0;Z<=x;Z++)E[Z]===-1&&(we=fb(Z,we,N,B,I,T,R));return T.splice(T.length-1,1),T};function i(u,f,p,h,g){var x=n(f);if(u===1&&h===p)return t(f,x);if(u===2){for(var v=x._index,S=x._ptr,D=0,C=0;Cg))for(var M=S[C+1];Ev)p[S+T]=0,p[g+T]=-1,M++,f[T]=qs(u),p[S+u]++;else{var O=p[D+N];O!==-1&&(C[O]=T),p[E+T]=p[D+N],p[D+N]=T}}return M}function s(u,f,p,h,g){if(u<2||u+f<0){for(var x=0;x{var{transpose:t}=e;return function(r,n,i,o){if(!r||!n||!i)return null;var l=r._size,s=l[0],a=l[1],u,f,p,h,g,x,v,S=4*a+(o?a+s+1:0),D=[],C=0,E=a,M=2*a,T=3*a,N=4*a,O=5*a+1;for(p=0;p=1&&F[f]++,q.jleaf===2&&F[q.q]--}n[f]!==-1&&(D[C+f]=n[f])}for(f=0;f{var{add:t,multiply:r,transpose:n}=e,i=b6({add:t,multiply:r,transpose:n}),o=S6({transpose:n});return function(a,u,f){var p=u._ptr,h=u._size,g=h[1],x,v={};if(v.q=i(a,u),a&&!v.q)return null;if(f){var S=a?v6(u,null,v.q,0):u;v.parent=y6(S,1);var D=x6(v.parent,g);if(v.cp=o(S,v.parent,D,1),S&&v.parent&&v.cp&&l(S,v))for(v.unz=0,x=0;x=0;O--)for(I=u[O],B=u[O+1],F=I;F=0;N--)v[N]=-1,O=S[N],O!==-1&&(D[T+O]++===0&&(D[M+O]=N),D[C+N]=D[E+O],D[E+O]=N);for(a.lnz=0,a.m2=h,O=0;O=0;){e=n[h];var g=i?i[e]:e;Uv(l,e)||(cb(l,e),n[a+h]=g<0?0:bC(l[g]));var x=1;for(f=n[a+h],p=g<0?0:bC(l[g+1]);f{var{divideScalar:t,multiply:r,subtract:n}=e;return function(o,l,s,a,u,f,p){var h=o._values,g=o._index,x=o._ptr,v=o._size,S=v[1],D=l._values,C=l._index,E=l._ptr,M,T,N,O,F=A6(o,l,s,a,f);for(M=F;M{var{abs:t,divideScalar:r,multiply:n,subtract:i,larger:o,largerEq:l,SparseMatrix:s}=e,a=C6({divideScalar:r,multiply:n,subtract:i});return function(f,p,h){if(!f)return null;var g=f._size,x=g[1],v,S=100,D=100;p&&(v=p.q,S=p.lnz||S,D=p.unz||D);var C=[],E=[],M=[],T=new s({values:C,index:E,ptr:M,size:[x,x]}),N=[],O=[],F=[],I=new s({values:N,index:O,ptr:F,size:[x,x]}),B=[],L,q,R=[],V=[];for(L=0;L{var{typed:t,abs:r,add:n,multiply:i,transpose:o,divideScalar:l,subtract:s,larger:a,largerEq:u,SparseMatrix:f}=e,p=N6({add:n,multiply:i,transpose:o}),h=M6({abs:r,divideScalar:l,multiply:i,subtract:s,larger:a,largerEq:u,SparseMatrix:f});return t(T6,{"SparseMatrix, number, number":function(x,v,S){if(!dt(v)||v<0||v>3)throw new Error("Symbolic Ordering and Analysis order must be an integer number in the interval [0, 3]");if(S<0||S>1)throw new Error("Partial pivoting threshold must be a number from 0 to 1");var D=p(v,x,!1),C=h(x,D,S);return{L:C.L,U:C.U,p:C.pinv,q:D.q,toString:function(){return"L: "+this.L.toString()+` U: `+this.U.toString()+` p: `+this.p.toString()+(this.q?` q: `+this.q.toString():"")+` -`}}}})});function gC(e,t){var r,n=t.length,i=[];if(e)for(r=0;r{var{typed:t,matrix:r,lup:n,slu:i,usolve:o,lsolve:l,DenseMatrix:s}=e,a=Mu({DenseMatrix:s});return t(N6,{"Array, Array | Matrix":function(h,g){h=r(h);var x=n(h),v=f(x.L,x.U,x.p,null,g);return v.valueOf()},"DenseMatrix, Array | Matrix":function(h,g){var x=n(h);return f(x.L,x.U,x.p,null,g)},"SparseMatrix, Array | Matrix":function(h,g){var x=n(h);return f(x.L,x.U,x.p,null,g)},"SparseMatrix, Array | Matrix, number, number":function(h,g,x,v){var S=i(h,x,v);return f(S.L,S.U,S.p,S.q,g)},"Object, Array | Matrix":function(h,g){return f(h.L,h.U,h.p,h.q,g)}});function u(p){if(yt(p))return p;if(dr(p))return r(p);throw new TypeError("Invalid Matrix LU decomposition")}function f(p,h,g,x,v){p=u(p),h=u(h),g&&(v=a(p,v,!0),v._data=gC(g,v._data));var S=l(p,v),D=o(h,S);return x&&(D._data=gC(x,D._data)),D}});var A6="polynomialRoot",oce=["typed","isZero","equalScalar","add","subtract","multiply","divide","sqrt","unaryMinus","cbrt","typeOf","im","re"],C6=$(A6,oce,e=>{var{typed:t,isZero:r,equalScalar:n,add:i,subtract:o,multiply:l,divide:s,sqrt:a,unaryMinus:u,cbrt:f,typeOf:p,im:h,re:g}=e;return t(A6,{"number|Complex, ...number|Complex":(x,v)=>{for(var S=[x,...v];S.length>0&&r(S[S.length-1]);)S.pop();if(S.length<2)throw new RangeError("Polynomial [".concat(x,", ").concat(v,"] must have a non-zero non-constant coefficient"));switch(S.length){case 2:return[u(s(S[0],S[1]))];case 3:{var[D,C,E]=S,M=l(2,E),T=l(C,C),N=l(4,E,D);if(n(T,N))return[s(u(C),M)];var O=a(o(T,N));return[s(o(O,C),M),s(o(u(O),C),M)]}case 4:{var[F,I,B,L]=S,q=u(l(3,L)),R=l(B,B),V=l(3,L,I),X=i(l(2,B,B,B),l(27,L,L,F)),U=l(9,L,B,I);if(n(R,V)&&n(X,U))return[s(B,q)];var H=o(R,V),ee=o(X,U),Z=i(l(18,L,B,I,F),l(B,B,I,I)),ce=i(l(4,B,B,B,F),l(4,L,I,I,I),l(27,L,L,F,F));if(n(Z,ce))return[s(o(l(4,L,B,I),i(l(9,L,L,F),l(B,B,B))),l(L,H)),s(o(l(9,L,F),l(B,I)),l(2,H))];var be;n(R,V)?be=ee:be=s(i(ee,a(o(l(ee,ee),l(4,H,H,H)))),2);var de=!0,ne=f(be,de).toArray().map(ve=>s(i(B,ve,s(H,ve)),q));return ne.map(ve=>p(ve)==="Complex"&&n(g(ve),g(ve)+h(ve))?g(ve):ve)}default:throw new RangeError("only implemented for cubic or lower-order polynomials, not ".concat(S))}}})});var ace="Help",sce=["evaluate"],M6=$(ace,sce,e=>{var{evaluate:t}=e;function r(n){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");if(!n)throw new Error('Argument "doc" missing');this.doc=n}return r.prototype.type="Help",r.prototype.isHelp=!0,r.prototype.toString=function(){var n=this.doc||{},i=` +`}}}})});function DC(e,t){var r,n=t.length,i=[];if(e)for(r=0;r{var{typed:t,matrix:r,lup:n,slu:i,usolve:o,lsolve:l,DenseMatrix:s}=e,a=Lu({DenseMatrix:s});return t(O6,{"Array, Array | Matrix":function(h,g){h=r(h);var x=n(h),v=f(x.L,x.U,x.p,null,g);return v.valueOf()},"DenseMatrix, Array | Matrix":function(h,g){var x=n(h);return f(x.L,x.U,x.p,null,g)},"SparseMatrix, Array | Matrix":function(h,g){var x=n(h);return f(x.L,x.U,x.p,null,g)},"SparseMatrix, Array | Matrix, number, number":function(h,g,x,v){var S=i(h,x,v);return f(S.L,S.U,S.p,S.q,g)},"Object, Array | Matrix":function(h,g){return f(h.L,h.U,h.p,h.q,g)}});function u(p){if(gt(p))return p;if(dr(p))return r(p);throw new TypeError("Invalid Matrix LU decomposition")}function f(p,h,g,x,v){p=u(p),h=u(h),g&&(v=a(p,v,!0),v._data=DC(g,v._data));var S=l(p,v),D=o(h,S);return x&&(D._data=DC(x,D._data)),D}});var I6="polynomialRoot",uce=["typed","isZero","equalScalar","add","subtract","multiply","divide","sqrt","unaryMinus","cbrt","typeOf","im","re"],k6=$(I6,uce,e=>{var{typed:t,isZero:r,equalScalar:n,add:i,subtract:o,multiply:l,divide:s,sqrt:a,unaryMinus:u,cbrt:f,typeOf:p,im:h,re:g}=e;return t(I6,{"number|Complex, ...number|Complex":(x,v)=>{for(var S=[x,...v];S.length>0&&r(S[S.length-1]);)S.pop();if(S.length<2)throw new RangeError("Polynomial [".concat(x,", ").concat(v,"] must have a non-zero non-constant coefficient"));switch(S.length){case 2:return[u(s(S[0],S[1]))];case 3:{var[D,C,E]=S,M=l(2,E),T=l(C,C),N=l(4,E,D);if(n(T,N))return[s(u(C),M)];var O=a(o(T,N));return[s(o(O,C),M),s(o(u(O),C),M)]}case 4:{var[F,I,B,L]=S,q=u(l(3,L)),R=l(B,B),V=l(3,L,I),X=i(l(2,B,B,B),l(27,L,L,F)),U=l(9,L,B,I);if(n(R,V)&&n(X,U))return[s(B,q)];var H=o(R,V),ee=o(X,U),Z=i(l(18,L,B,I,F),l(B,B,I,I)),pe=i(l(4,B,B,B,F),l(4,L,I,I,I),l(27,L,L,F,F));if(n(Z,pe))return[s(o(l(4,L,B,I),i(l(9,L,L,F),l(B,B,B))),l(L,H)),s(o(l(9,L,F),l(B,I)),l(2,H))];var we;n(R,V)?we=ee:we=s(i(ee,a(o(l(ee,ee),l(4,H,H,H)))),2);var he=!0,oe=f(we,he).toArray().map(ve=>s(i(B,ve,s(H,ve)),q));return oe.map(ve=>p(ve)==="Complex"&&n(g(ve),g(ve)+h(ve))?g(ve):ve)}default:throw new RangeError("only implemented for cubic or lower-order polynomials, not ".concat(S))}}})});var lce="Help",fce=["evaluate"],L6=$(lce,fce,e=>{var{evaluate:t}=e;function r(n){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");if(!n)throw new Error('Argument "doc" missing');this.doc=n}return r.prototype.type="Help",r.prototype.isHelp=!0,r.prototype.toString=function(){var n=this.doc||{},i=` `;if(n.name&&(i+="Name: "+n.name+` `),n.category&&(i+="Category: "+n.category+` @@ -89,35 +89,35 @@ q: `+this.q.toString():"")+` `),n.examples){i+=`Examples: `;for(var o=!1,l=t("config()"),s={config:p=>(o=!0,t("config(newConfig)",{newConfig:p}))},a=0;ao!=="mathjs").forEach(o=>{i[o]=n[o]}),new r(i)},r.prototype.valueOf=r.prototype.toString,r},{isClass:!0});var uce="Chain",lce=["?on","math","typed"],T6=$(uce,lce,e=>{var{on:t,math:r,typed:n}=e;function i(u){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator");ud(u)?this.value=u.value:this.value=u}i.prototype.type="Chain",i.prototype.isChain=!0,i.prototype.done=function(){return this.value},i.prototype.valueOf=function(){return this.value},i.prototype.toString=function(){return Ht(this.value)},i.prototype.toJSON=function(){return{mathjs:"Chain",value:this.value}},i.fromJSON=function(u){return new i(u.value)};function o(u,f){typeof f=="function"&&(i.prototype[u]=s(f))}function l(u,f){ld(i.prototype,u,function(){var h=f();if(typeof h=="function")return s(h)})}function s(u){return function(){if(arguments.length===0)return new i(u(this.value));for(var f=[this.value],p=0;pu[x])};for(var h in u)p(h)}};var a={expression:!0,docs:!0,type:!0,classes:!0,json:!0,error:!0,isChain:!0};return i.createProxy(r),t&&t("import",function(u,f,p){p||l(u,f)}),i},{isClass:!0});var vC={name:"e",category:"Constants",syntax:["e"],description:"Euler's number, the base of the natural logarithm. Approximately equal to 2.71828",examples:["e","e ^ 2","exp(2)","log(e)"],seealso:["exp"]};var _6={name:"false",category:"Constants",syntax:["false"],description:"Boolean value false",examples:["false"],seealso:["true"]};var O6={name:"i",category:"Constants",syntax:["i"],description:"Imaginary unit, defined as i*i=-1. A complex number is described as a + b*i, where a is the real part, and b is the imaginary part.",examples:["i","i * i","sqrt(-1)"],seealso:[]};var F6={name:"Infinity",category:"Constants",syntax:["Infinity"],description:"Infinity, a number which is larger than the maximum number that can be handled by a floating point number.",examples:["Infinity","1 / 0"],seealso:[]};var I6={name:"LN10",category:"Constants",syntax:["LN10"],description:"Returns the natural logarithm of 10, approximately equal to 2.302",examples:["LN10","log(10)"],seealso:[]};var k6={name:"LN2",category:"Constants",syntax:["LN2"],description:"Returns the natural logarithm of 2, approximately equal to 0.693",examples:["LN2","log(2)"],seealso:[]};var L6={name:"LOG10E",category:"Constants",syntax:["LOG10E"],description:"Returns the base-10 logarithm of E, approximately equal to 0.434",examples:["LOG10E","log(e, 10)"],seealso:[]};var B6={name:"LOG2E",category:"Constants",syntax:["LOG2E"],description:"Returns the base-2 logarithm of E, approximately equal to 1.442",examples:["LOG2E","log(e, 2)"],seealso:[]};var P6={name:"NaN",category:"Constants",syntax:["NaN"],description:"Not a number",examples:["NaN","0 / 0"],seealso:[]};var R6={name:"null",category:"Constants",syntax:["null"],description:"Value null",examples:["null"],seealso:["true","false"]};var q6={name:"phi",category:"Constants",syntax:["phi"],description:"Phi is the golden ratio. Two quantities are in the golden ratio if their ratio is the same as the ratio of their sum to the larger of the two quantities. Phi is defined as `(1 + sqrt(5)) / 2` and is approximately 1.618034...",examples:["phi"],seealso:[]};var xC={name:"pi",category:"Constants",syntax:["pi"],description:"The number pi is a mathematical constant that is the ratio of a circle's circumference to its diameter, and is approximately equal to 3.14159",examples:["pi","sin(pi/2)"],seealso:["tau"]};var z6={name:"SQRT1_2",category:"Constants",syntax:["SQRT1_2"],description:"Returns the square root of 1/2, approximately equal to 0.707",examples:["SQRT1_2","sqrt(1/2)"],seealso:[]};var U6={name:"SQRT2",category:"Constants",syntax:["SQRT2"],description:"Returns the square root of 2, approximately equal to 1.414",examples:["SQRT2","sqrt(2)"],seealso:[]};var H6={name:"tau",category:"Constants",syntax:["tau"],description:"Tau is the ratio constant of a circle's circumference to radius, equal to 2 * pi, approximately 6.2832.",examples:["tau","2 * pi"],seealso:["pi"]};var $6={name:"true",category:"Constants",syntax:["true"],description:"Boolean value true",examples:["true"],seealso:["false"]};var W6={name:"version",category:"Constants",syntax:["version"],description:"A string with the version number of math.js",examples:["version"],seealso:[]};var V6={name:"bignumber",category:"Construction",syntax:["bignumber(x)"],description:"Create a big number from a number or string.",examples:["0.1 + 0.2","bignumber(0.1) + bignumber(0.2)",'bignumber("7.2")','bignumber("7.2e500")',"bignumber([0.1, 0.2, 0.3])"],seealso:["boolean","bigint","complex","fraction","index","matrix","string","unit"]};var G6={name:"bigint",category:"Construction",syntax:["bigint(x)"],description:"Create a bigint, an integer with an arbitrary number of digits, from a number or string.",examples:["123123123123123123 # a large number will lose digits",'bigint("123123123123123123")','bignumber(["1", "3", "5"])'],seealso:["boolean","bignumber","number","complex","fraction","index","matrix","string","unit"]};var Y6={name:"boolean",category:"Construction",syntax:["x","boolean(x)"],description:"Convert a string or number into a boolean.",examples:["boolean(0)","boolean(1)","boolean(3)",'boolean("true")','boolean("false")',"boolean([1, 0, 1, 1])"],seealso:["bignumber","complex","index","matrix","number","string","unit"]};var Z6={name:"complex",category:"Construction",syntax:["complex()","complex(re, im)","complex(string)"],description:"Create a complex number.",examples:["complex()","complex(2, 3)",'complex("7 - 2i")'],seealso:["bignumber","boolean","index","matrix","number","string","unit"]};var X6={name:"createUnit",category:"Construction",syntax:["createUnit(definitions)","createUnit(name, definition)"],description:"Create a user-defined unit and register it with the Unit type.",examples:['createUnit("foo")','createUnit("knot", {definition: "0.514444444 m/s", aliases: ["knots", "kt", "kts"]})','createUnit("mph", "1 mile/hour")'],seealso:["unit","splitUnit"]};var K6={name:"fraction",category:"Construction",syntax:["fraction(num)","fraction(matrix)","fraction(num,den)","fraction({n: num, d: den})"],description:"Create a fraction from a number or from integer numerator and denominator.",examples:["fraction(0.125)","fraction(1, 3) + fraction(2, 5)","fraction({n: 333, d: 53})","fraction([sqrt(9), sqrt(10), sqrt(11)])"],seealso:["bignumber","boolean","complex","index","matrix","string","unit"]};var J6={name:"index",category:"Construction",syntax:["[start]","[start:end]","[start:step:end]","[start1, start 2, ...]","[start1:end1, start2:end2, ...]","[start1:step1:end1, start2:step2:end2, ...]"],description:"Create an index to get or replace a subset of a matrix",examples:["A = [1, 2, 3; 4, 5, 6]","A[1, :]","A[1, 2] = 50","A[1:2, 1:2] = 1","B = [1, 2, 3]","B[B>1 and B<3]"],seealso:["bignumber","boolean","complex","matrix,","number","range","string","unit"]};var Q6={name:"matrix",category:"Construction",syntax:["[]","[a1, b1, ...; a2, b2, ...]","matrix()",'matrix("dense")',"matrix([...])"],description:"Create a matrix.",examples:["[]","[1, 2, 3]","[1, 2, 3; 4, 5, 6]","matrix()","matrix([3, 4])",'matrix([3, 4; 5, 6], "sparse")','matrix([3, 4; 5, 6], "sparse", "number")'],seealso:["bignumber","boolean","complex","index","number","string","unit","sparse"]};var j6={name:"number",category:"Construction",syntax:["x","number(x)","number(unit, valuelessUnit)"],description:"Create a number or convert a string or boolean into a number.",examples:["2","2e3","4.05","number(2)",'number("7.2")',"number(true)","number([true, false, true, true])",'number(unit("52cm"), "m")'],seealso:["bignumber","bigint","boolean","complex","fraction","index","matrix","string","unit"]};var e8={name:"sparse",category:"Construction",syntax:["sparse()","sparse([a1, b1, ...; a1, b2, ...])",'sparse([a1, b1, ...; a1, b2, ...], "number")'],description:"Create a sparse matrix.",examples:["sparse()","sparse([3, 4; 5, 6])",'sparse([3, 0; 5, 0], "number")'],seealso:["bignumber","boolean","complex","index","number","string","unit","matrix"]};var t8={name:"splitUnit",category:"Construction",syntax:["splitUnit(unit: Unit, parts: Unit[])"],description:"Split a unit in an array of units whose sum is equal to the original unit.",examples:['splitUnit(1 m, ["feet", "inch"])'],seealso:["unit","createUnit"]};var r8={name:"string",category:"Construction",syntax:['"text"',"string(x)"],description:"Create a string or convert a value to a string",examples:['"Hello World!"',"string(4.2)","string(3 + 2i)"],seealso:["bignumber","boolean","complex","index","matrix","number","unit"]};var n8={name:"unit",category:"Construction",syntax:["value unit","unit(value, unit)","unit(string)"],description:"Create a unit.",examples:["5.5 mm","3 inch",'unit(7.1, "kilogram")','unit("23 deg")'],seealso:["bignumber","boolean","complex","index","matrix","number","string"]};var i8={name:"config",category:"Core",syntax:["config()","config(options)"],description:"Get configuration or change configuration.",examples:["config()","1/3 + 1/4",'config({number: "Fraction"})',"1/3 + 1/4"],seealso:[]};var o8={name:"import",category:"Core",syntax:["import(functions)","import(functions, options)"],description:"Import functions or constants from an object.",examples:["import({myFn: f(x)=x^2, myConstant: 32 })","myFn(2)","myConstant"],seealso:[]};var a8={name:"typed",category:"Core",syntax:["typed(signatures)","typed(name, signatures)"],description:"Create a typed function.",examples:['double = typed({ "number": f(x)=x+x, "string": f(x)=concat(x,x) })',"double(2)",'double("hello")'],seealso:[]};var s8={name:"derivative",category:"Algebra",syntax:["derivative(expr, variable)","derivative(expr, variable, {simplify: boolean})"],description:"Takes the derivative of an expression expressed in parser Nodes. The derivative will be taken over the supplied variable in the second parameter. If there are multiple variables in the expression, it will return a partial derivative.",examples:['derivative("2x^3", "x")','derivative("2x^3", "x", {simplify: false})','derivative("2x^2 + 3x + 4", "x")','derivative("sin(2x)", "x")','f = parse("x^2 + x")','x = parse("x")',"df = derivative(f, x)","df.evaluate({x: 3})"],seealso:["simplify","parse","evaluate"]};var u8={name:"leafCount",category:"Algebra",syntax:["leafCount(expr)"],description:"Computes the number of leaves in the parse tree of the given expression",examples:['leafCount("e^(i*pi)-1")','leafCount(parse("{a: 22/7, b: 10^(1/2)}"))'],seealso:["simplify"]};var l8={name:"lsolve",category:"Algebra",syntax:["x=lsolve(L, b)"],description:"Finds one solution of the linear system L * x = b where L is an [n x n] lower triangular matrix and b is a [n] column vector.",examples:["a = [-2, 3; 2, 1]","b = [11, 9]","x = lsolve(a, b)"],seealso:["lsolveAll","lup","lusolve","usolve","matrix","sparse"]};var f8={name:"lsolveAll",category:"Algebra",syntax:["x=lsolveAll(L, b)"],description:"Finds all solutions of the linear system L * x = b where L is an [n x n] lower triangular matrix and b is a [n] column vector.",examples:["a = [-2, 3; 2, 1]","b = [11, 9]","x = lsolve(a, b)"],seealso:["lsolve","lup","lusolve","usolve","matrix","sparse"]};var c8={name:"lup",category:"Algebra",syntax:["lup(m)"],description:"Calculate the Matrix LU decomposition with partial pivoting. Matrix A is decomposed in three matrices (L, U, P) where P * A = L * U",examples:["lup([[2, 1], [1, 4]])","lup(matrix([[2, 1], [1, 4]]))","lup(sparse([[2, 1], [1, 4]]))"],seealso:["lusolve","lsolve","usolve","matrix","sparse","slu","qr"]};var p8={name:"lusolve",category:"Algebra",syntax:["x=lusolve(A, b)","x=lusolve(lu, b)"],description:"Solves the linear system A * x = b where A is an [n x n] matrix and b is a [n] column vector.",examples:["a = [-2, 3; 2, 1]","b = [11, 9]","x = lusolve(a, b)"],seealso:["lup","slu","lsolve","usolve","matrix","sparse"]};var m8={name:"polynomialRoot",category:"Algebra",syntax:["x=polynomialRoot(-6, 3)","x=polynomialRoot(4, -4, 1)","x=polynomialRoot(-8, 12, -6, 1)"],description:"Finds the roots of a univariate polynomial given by its coefficients starting from constant, linear, and so on, increasing in degree.",examples:["a = polynomialRoot(-6, 11, -6, 1)"],seealso:["cbrt","sqrt"]};var d8={name:"qr",category:"Algebra",syntax:["qr(A)"],description:"Calculates the Matrix QR decomposition. Matrix `A` is decomposed in two matrices (`Q`, `R`) where `Q` is an orthogonal matrix and `R` is an upper triangular matrix.",examples:["qr([[1, -1, 4], [1, 4, -2], [1, 4, 2], [1, -1, 0]])"],seealso:["lup","slu","matrix"]};var h8={name:"rationalize",category:"Algebra",syntax:["rationalize(expr)","rationalize(expr, scope)","rationalize(expr, scope, detailed)"],description:"Transform a rationalizable expression in a rational fraction. If rational fraction is one variable polynomial then converts the numerator and denominator in canonical form, with decreasing exponents, returning the coefficients of numerator.",examples:['rationalize("2x/y - y/(x+1)")','rationalize("2x/y - y/(x+1)", true)'],seealso:["simplify"]};var g8={name:"resolve",category:"Algebra",syntax:["resolve(node, scope)"],description:"Recursively substitute variables in an expression tree.",examples:['resolve(parse("1 + x"), { x: 7 })','resolve(parse("size(text)"), { text: "Hello World" })','resolve(parse("x + y"), { x: parse("3z") })','resolve(parse("3x"), { x: parse("y+z"), z: parse("w^y") })'],seealso:["simplify","evaluate"],mayThrow:["ReferenceError"]};var v8={name:"simplify",category:"Algebra",syntax:["simplify(expr)","simplify(expr, rules)"],description:"Simplify an expression tree.",examples:['simplify("3 + 2 / 4")','simplify("2x + x")','f = parse("x * (x + 2 + x)")',"simplified = simplify(f)","simplified.evaluate({x: 2})"],seealso:["simplifyCore","derivative","evaluate","parse","rationalize","resolve"]};var x8={name:"simplifyConstant",category:"Algebra",syntax:["simplifyConstant(expr)","simplifyConstant(expr, options)"],description:"Replace constant subexpressions of node with their values.",examples:['simplifyConstant("(3-3)*x")','simplifyConstant(parse("z-cos(tau/8)"))'],seealso:["simplify","simplifyCore","evaluate"]};var y8={name:"simplifyCore",category:"Algebra",syntax:["simplifyCore(node)"],description:"Perform simple one-pass simplifications on an expression tree.",examples:['simplifyCore(parse("0*x"))','simplifyCore(parse("(x+0)*2"))'],seealso:["simplify","simplifyConstant","evaluate"]};var w8={name:"slu",category:"Algebra",syntax:["slu(A, order, threshold)"],description:"Calculate the Matrix LU decomposition with full pivoting. Matrix A is decomposed in two matrices (L, U) and two permutation vectors (pinv, q) where P * A * Q = L * U",examples:["slu(sparse([4.5, 0, 3.2, 0; 3.1, 2.9, 0, 0.9; 0, 1.7, 3, 0; 3.5, 0.4, 0, 1]), 1, 0.001)"],seealso:["lusolve","lsolve","usolve","matrix","sparse","lup","qr"]};var b8={name:"symbolicEqual",category:"Algebra",syntax:["symbolicEqual(expr1, expr2)","symbolicEqual(expr1, expr2, options)"],description:"Returns true if the difference of the expressions simplifies to 0",examples:['symbolicEqual("x*y","y*x")','symbolicEqual("abs(x^2)", "x^2")','symbolicEqual("abs(x)", "x", {context: {abs: {trivial: true}}})'],seealso:["simplify","evaluate"]};var D8={name:"usolve",category:"Algebra",syntax:["x=usolve(U, b)"],description:"Finds one solution of the linear system U * x = b where U is an [n x n] upper triangular matrix and b is a [n] column vector.",examples:["x=usolve(sparse([1, 1, 1, 1; 0, 1, 1, 1; 0, 0, 1, 1; 0, 0, 0, 1]), [1; 2; 3; 4])"],seealso:["usolveAll","lup","lusolve","lsolve","matrix","sparse"]};var S8={name:"usolveAll",category:"Algebra",syntax:["x=usolve(U, b)"],description:"Finds all solutions of the linear system U * x = b where U is an [n x n] upper triangular matrix and b is a [n] column vector.",examples:["x=usolve(sparse([1, 1, 1, 1; 0, 1, 1, 1; 0, 0, 1, 1; 0, 0, 0, 1]), [1; 2; 3; 4])"],seealso:["usolve","lup","lusolve","lsolve","matrix","sparse"]};var N8={name:"abs",category:"Arithmetic",syntax:["abs(x)"],description:"Compute the absolute value.",examples:["abs(3.5)","abs(-4.2)"],seealso:["sign"]};var E8={name:"add",category:"Operators",syntax:["x + y","add(x, y)"],description:"Add two values.",examples:["a = 2.1 + 3.6","a - 3.6","3 + 2i","3 cm + 2 inch",'"2.3" + "4"'],seealso:["subtract"]};var A8={name:"cbrt",category:"Arithmetic",syntax:["cbrt(x)","cbrt(x, allRoots)"],description:"Compute the cubic root value. If x = y * y * y, then y is the cubic root of x. When `x` is a number or complex number, an optional second argument `allRoots` can be provided to return all three cubic roots. If not provided, the principal root is returned",examples:["cbrt(64)","cube(4)","cbrt(-8)","cbrt(2 + 3i)","cbrt(8i)","cbrt(8i, true)","cbrt(27 m^3)"],seealso:["square","sqrt","cube","multiply"]};var C8={name:"ceil",category:"Arithmetic",syntax:["ceil(x)"],description:"Round a value towards plus infinity. If x is complex, both real and imaginary part are rounded towards plus infinity.",examples:["ceil(3.2)","ceil(3.8)","ceil(-4.2)"],seealso:["floor","fix","round"]};var M8={name:"cube",category:"Arithmetic",syntax:["cube(x)"],description:"Compute the cube of a value. The cube of x is x * x * x.",examples:["cube(2)","2^3","2 * 2 * 2"],seealso:["multiply","square","pow"]};var T8={name:"divide",category:"Operators",syntax:["x / y","divide(x, y)"],description:"Divide two values.",examples:["a = 2 / 3","a * 3","4.5 / 2","3 + 4 / 2","(3 + 4) / 2","18 km / 4.5"],seealso:["multiply"]};var _8={name:"dotDivide",category:"Operators",syntax:["x ./ y","dotDivide(x, y)"],description:"Divide two values element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","b = [2, 1, 1; 3, 2, 5]","a ./ b"],seealso:["multiply","dotMultiply","divide"]};var O8={name:"dotMultiply",category:"Operators",syntax:["x .* y","dotMultiply(x, y)"],description:"Multiply two values element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","b = [2, 1, 1; 3, 2, 5]","a .* b"],seealso:["multiply","divide","dotDivide"]};var F8={name:"dotPow",category:"Operators",syntax:["x .^ y","dotPow(x, y)"],description:"Calculates the power of x to y element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","a .^ 2"],seealso:["pow"]};var I8={name:"exp",category:"Arithmetic",syntax:["exp(x)"],description:"Calculate the exponent of a value.",examples:["exp(1.3)","e ^ 1.3","log(exp(1.3))","x = 2.4","(exp(i*x) == cos(x) + i*sin(x)) # Euler's formula"],seealso:["expm","expm1","pow","log"]};var k8={name:"expm",category:"Arithmetic",syntax:["exp(x)"],description:"Compute the matrix exponential, expm(A) = e^A. The matrix must be square. Not to be confused with exp(a), which performs element-wise exponentiation.",examples:["expm([[0,2],[0,0]])"],seealso:["exp"]};var L8={name:"expm1",category:"Arithmetic",syntax:["expm1(x)"],description:"Calculate the value of subtracting 1 from the exponential value.",examples:["expm1(2)","pow(e, 2) - 1","log(expm1(2) + 1)"],seealso:["exp","pow","log"]};var B8={name:"fix",category:"Arithmetic",syntax:["fix(x)"],description:"Round a value towards zero. If x is complex, both real and imaginary part are rounded towards zero.",examples:["fix(3.2)","fix(3.8)","fix(-4.2)","fix(-4.8)"],seealso:["ceil","floor","round"]};var P8={name:"floor",category:"Arithmetic",syntax:["floor(x)"],description:"Round a value towards minus infinity.If x is complex, both real and imaginary part are rounded towards minus infinity.",examples:["floor(3.2)","floor(3.8)","floor(-4.2)"],seealso:["ceil","fix","round"]};var R8={name:"gcd",category:"Arithmetic",syntax:["gcd(a, b)","gcd(a, b, c, ...)"],description:"Compute the greatest common divisor.",examples:["gcd(8, 12)","gcd(-4, 6)","gcd(25, 15, -10)"],seealso:["lcm","xgcd"]};var q8={name:"hypot",category:"Arithmetic",syntax:["hypot(a, b, c, ...)","hypot([a, b, c, ...])"],description:"Calculate the hypotenuse of a list with values.",examples:["hypot(3, 4)","sqrt(3^2 + 4^2)","hypot(-2)","hypot([3, 4, 5])"],seealso:["abs","norm"]};var z8={name:"invmod",category:"Arithmetic",syntax:["invmod(a, b)"],description:"Calculate the (modular) multiplicative inverse of a modulo b. Solution to the equation ax \u2263 1 (mod b)",examples:["invmod(8, 12)","invmod(7, 13)","invmod(15151, 15122)"],seealso:["gcd","xgcd"]};var U8={name:"lcm",category:"Arithmetic",syntax:["lcm(x, y)"],description:"Compute the least common multiple.",examples:["lcm(4, 6)","lcm(6, 21)","lcm(6, 21, 5)"],seealso:["gcd"]};var H8={name:"log",category:"Arithmetic",syntax:["log(x)","log(x, base)"],description:"Compute the logarithm of a value. If no base is provided, the natural logarithm of x is calculated. If base if provided, the logarithm is calculated for the specified base. log(x, base) is defined as log(x) / log(base).",examples:["log(3.5)","a = log(2.4)","exp(a)","10 ^ 4","log(10000, 10)","log(10000) / log(10)","b = log(1024, 2)","2 ^ b"],seealso:["exp","log1p","log2","log10"]};var $8={name:"log10",category:"Arithmetic",syntax:["log10(x)"],description:"Compute the 10-base logarithm of a value.",examples:["log10(0.00001)","log10(10000)","10 ^ 4","log(10000) / log(10)","log(10000, 10)"],seealso:["exp","log"]};var W8={name:"log1p",category:"Arithmetic",syntax:["log1p(x)","log1p(x, base)"],description:"Calculate the logarithm of a `value+1`",examples:["log1p(2.5)","exp(log1p(1.4))","pow(10, 4)","log1p(9999, 10)","log1p(9999) / log(10)"],seealso:["exp","log","log2","log10"]};var V8={name:"log2",category:"Arithmetic",syntax:["log2(x)"],description:"Calculate the 2-base of a value. This is the same as calculating `log(x, 2)`.",examples:["log2(0.03125)","log2(16)","log2(16) / log2(2)","pow(2, 4)"],seealso:["exp","log1p","log","log10"]};var G8={name:"mod",category:"Operators",syntax:["x % y","x mod y","mod(x, y)"],description:"Calculates the modulus, the remainder of an integer division.",examples:["7 % 3","11 % 2","10 mod 4","isOdd(x) = x % 2","isOdd(2)","isOdd(3)"],seealso:["divide"]};var Y8={name:"multiply",category:"Operators",syntax:["x * y","multiply(x, y)"],description:"multiply two values.",examples:["a = 2.1 * 3.4","a / 3.4","2 * 3 + 4","2 * (3 + 4)","3 * 2.1 km"],seealso:["divide"]};var Z8={name:"norm",category:"Arithmetic",syntax:["norm(x)","norm(x, p)"],description:"Calculate the norm of a number, vector or matrix.",examples:["abs(-3.5)","norm(-3.5)","norm(3 - 4i)","norm([1, 2, -3], Infinity)","norm([1, 2, -3], -Infinity)","norm([3, 4], 2)","norm([[1, 2], [3, 4]], 1)",'norm([[1, 2], [3, 4]], "inf")','norm([[1, 2], [3, 4]], "fro")']};var X8={name:"nthRoot",category:"Arithmetic",syntax:["nthRoot(a)","nthRoot(a, root)"],description:'Calculate the nth root of a value. The principal nth root of a positive real number A, is the positive real solution of the equation "x^root = A".',examples:["4 ^ 3","nthRoot(64, 3)","nthRoot(9, 2)","sqrt(9)"],seealso:["nthRoots","pow","sqrt"]};var K8={name:"nthRoots",category:"Arithmetic",syntax:["nthRoots(A)","nthRoots(A, root)"],description:'Calculate the nth roots of a value. An nth root of a positive real number A, is a positive real solution of the equation "x^root = A". This function returns an array of complex values.',examples:["nthRoots(1)","nthRoots(1, 3)"],seealso:["sqrt","pow","nthRoot"]};var J8={name:"pow",category:"Operators",syntax:["x ^ y","pow(x, y)"],description:"Calculates the power of x to y, x^y.",examples:["2^3","2*2*2","1 + e ^ (pi * i)","pow([[1, 2], [4, 3]], 2)","pow([[1, 2], [4, 3]], -1)"],seealso:["multiply","nthRoot","nthRoots","sqrt"]};var Q8={name:"round",category:"Arithmetic",syntax:["round(x)","round(x, n)","round(unit, valuelessUnit)","round(unit, n, valuelessUnit)"],description:"round a value towards the nearest integer.If x is complex, both real and imaginary part are rounded towards the nearest integer. When n is specified, the value is rounded to n decimals.",examples:["round(3.2)","round(3.8)","round(-4.2)","round(-4.8)","round(pi, 3)","round(123.45678, 2)","round(3.241cm, 2, cm)","round([3.2, 3.8, -4.7])"],seealso:["ceil","floor","fix"]};var j8={name:"sign",category:"Arithmetic",syntax:["sign(x)"],description:"Compute the sign of a value. The sign of a value x is 1 when x>1, -1 when x<0, and 0 when x=0.",examples:["sign(3.5)","sign(-4.2)","sign(0)"],seealso:["abs"]};var eR={name:"sqrt",category:"Arithmetic",syntax:["sqrt(x)"],description:"Compute the square root value. If x = y * y, then y is the square root of x.",examples:["sqrt(25)","5 * 5","sqrt(-1)"],seealso:["square","sqrtm","multiply","nthRoot","nthRoots","pow"]};var tR={name:"sqrtm",category:"Arithmetic",syntax:["sqrtm(x)"],description:"Calculate the principal square root of a square matrix. The principal square root matrix `X` of another matrix `A` is such that `X * X = A`.",examples:["sqrtm([[33, 24], [48, 57]])"],seealso:["sqrt","abs","square","multiply"]};var rR={name:"sylvester",category:"Algebra",syntax:["sylvester(A,B,C)"],description:"Solves the real-valued Sylvester equation AX+XB=C for X",examples:["sylvester([[-1, -2], [1, 1]], [[-2, 1], [-1, 2]], [[-3, 2], [3, 0]])","A = [[-1, -2], [1, 1]]; B = [[2, -1], [1, -2]]; C = [[-3, 2], [3, 0]]","sylvester(A, B, C)"],seealso:["schur","lyap"]};var nR={name:"schur",category:"Algebra",syntax:["schur(A)"],description:"Performs a real Schur decomposition of the real matrix A = UTU'",examples:["schur([[1, 0], [-4, 3]])","A = [[1, 0], [-4, 3]]","schur(A)"],seealso:["lyap","sylvester"]};var iR={name:"lyap",category:"Algebra",syntax:["lyap(A,Q)"],description:"Solves the Continuous-time Lyapunov equation AP+PA'+Q=0 for P",examples:["lyap([[-2, 0], [1, -4]], [[3, 1], [1, 3]])","A = [[-2, 0], [1, -4]]","Q = [[3, 1], [1, 3]]","lyap(A,Q)"],seealso:["schur","sylvester"]};var oR={name:"square",category:"Arithmetic",syntax:["square(x)"],description:"Compute the square of a value. The square of x is x * x.",examples:["square(3)","sqrt(9)","3^2","3 * 3"],seealso:["multiply","pow","sqrt","cube"]};var aR={name:"subtract",category:"Operators",syntax:["x - y","subtract(x, y)"],description:"subtract two values.",examples:["a = 5.3 - 2","a + 2","2/3 - 1/6","2 * 3 - 3","2.1 km - 500m"],seealso:["add"]};var sR={name:"unaryMinus",category:"Operators",syntax:["-x","unaryMinus(x)"],description:"Inverse the sign of a value. Converts booleans and strings to numbers.",examples:["-4.5","-(-5.6)",'-"22"'],seealso:["add","subtract","unaryPlus"]};var uR={name:"unaryPlus",category:"Operators",syntax:["+x","unaryPlus(x)"],description:"Converts booleans and strings to numbers.",examples:["+true",'+"2"'],seealso:["add","subtract","unaryMinus"]};var lR={name:"xgcd",category:"Arithmetic",syntax:["xgcd(a, b)"],description:"Calculate the extended greatest common divisor for two values. The result is an array [d, x, y] with 3 entries, where d is the greatest common divisor, and d = x * a + y * b.",examples:["xgcd(8, 12)","gcd(8, 12)","xgcd(36163, 21199)"],seealso:["gcd","lcm"]};var fR={name:"bitAnd",category:"Bitwise",syntax:["x & y","bitAnd(x, y)"],description:"Bitwise AND operation. Performs the logical AND operation on each pair of the corresponding bits of the two given values by multiplying them. If both bits in the compared position are 1, the bit in the resulting binary representation is 1, otherwise, the result is 0",examples:["5 & 3","bitAnd(53, 131)","[1, 12, 31] & 42"],seealso:["bitNot","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]};var cR={name:"bitNot",category:"Bitwise",syntax:["~x","bitNot(x)"],description:"Bitwise NOT operation. Performs a logical negation on each bit of the given value. Bits that are 0 become 1, and those that are 1 become 0.",examples:["~1","~2","bitNot([2, -3, 4])"],seealso:["bitAnd","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]};var pR={name:"bitOr",category:"Bitwise",syntax:["x | y","bitOr(x, y)"],description:"Bitwise OR operation. Performs the logical inclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if the first bit is 1 or the second bit is 1 or both bits are 1, otherwise, the result is 0.",examples:["5 | 3","bitOr([1, 2, 3], 4)"],seealso:["bitAnd","bitNot","bitXor","leftShift","rightArithShift","rightLogShift"]};var mR={name:"bitXor",category:"Bitwise",syntax:["bitXor(x, y)"],description:"Bitwise XOR operation, exclusive OR. Performs the logical exclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if only the first bit is 1 or only the second bit is 1, but will be 0 if both are 0 or both are 1.",examples:["bitOr(1, 2)","bitXor([2, 3, 4], 4)"],seealso:["bitAnd","bitNot","bitOr","leftShift","rightArithShift","rightLogShift"]};var dR={name:"leftShift",category:"Bitwise",syntax:["x << y","leftShift(x, y)"],description:"Bitwise left logical shift of a value x by y number of bits.",examples:["4 << 1","8 >> 1"],seealso:["bitAnd","bitNot","bitOr","bitXor","rightArithShift","rightLogShift"]};var hR={name:"rightArithShift",category:"Bitwise",syntax:["x >> y","rightArithShift(x, y)"],description:"Bitwise right arithmetic shift of a value x by y number of bits.",examples:["8 >> 1","4 << 1","-12 >> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightLogShift"]};var gR={name:"rightLogShift",category:"Bitwise",syntax:["x >>> y","rightLogShift(x, y)"],description:"Bitwise right logical shift of a value x by y number of bits.",examples:["8 >>> 1","4 << 1","-12 >>> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightArithShift"]};var vR={name:"bellNumbers",category:"Combinatorics",syntax:["bellNumbers(n)"],description:"The Bell Numbers count the number of partitions of a set. A partition is a pairwise disjoint subset of S whose union is S. `bellNumbers` only takes integer arguments. The following condition must be enforced: n >= 0.",examples:["bellNumbers(3)","bellNumbers(8)"],seealso:["stirlingS2"]};var xR={name:"catalan",category:"Combinatorics",syntax:["catalan(n)"],description:"The Catalan Numbers enumerate combinatorial structures of many different types. catalan only takes integer arguments. The following condition must be enforced: n >= 0.",examples:["catalan(3)","catalan(8)"],seealso:["bellNumbers"]};var yR={name:"composition",category:"Combinatorics",syntax:["composition(n, k)"],description:"The composition counts of n into k parts. composition only takes integer arguments. The following condition must be enforced: k <= n.",examples:["composition(5, 3)"],seealso:["combinations"]};var wR={name:"stirlingS2",category:"Combinatorics",syntax:["stirlingS2(n, k)"],description:"he Stirling numbers of the second kind, counts the number of ways to partition a set of n labelled objects into k nonempty unlabelled subsets. `stirlingS2` only takes integer arguments. The following condition must be enforced: k <= n. If n = k or k = 1, then s(n,k) = 1.",examples:["stirlingS2(5, 3)"],seealso:["bellNumbers"]};var bR={name:"arg",category:"Complex",syntax:["arg(x)"],description:"Compute the argument of a complex value. If x = a+bi, the argument is computed as atan2(b, a).",examples:["arg(2 + 2i)","atan2(3, 2)","arg(2 + 3i)"],seealso:["re","im","conj","abs"]};var DR={name:"conj",category:"Complex",syntax:["conj(x)"],description:"Compute the complex conjugate of a complex value. If x = a+bi, the complex conjugate is a-bi.",examples:["conj(2 + 3i)","conj(2 - 3i)","conj(-5.2i)"],seealso:["re","im","abs","arg"]};var SR={name:"im",category:"Complex",syntax:["im(x)"],description:"Get the imaginary part of a complex number.",examples:["im(2 + 3i)","re(2 + 3i)","im(-5.2i)","im(2.4)"],seealso:["re","conj","abs","arg"]};var NR={name:"re",category:"Complex",syntax:["re(x)"],description:"Get the real part of a complex number.",examples:["re(2 + 3i)","im(2 + 3i)","re(-5.2i)","re(2.4)"],seealso:["im","conj","abs","arg"]};var ER={name:"evaluate",category:"Expression",syntax:["evaluate(expression)","evaluate(expression, scope)","evaluate([expr1, expr2, expr3, ...])","evaluate([expr1, expr2, expr3, ...], scope)"],description:"Evaluate an expression or an array with expressions.",examples:['evaluate("2 + 3")','evaluate("sqrt(16)")','evaluate("2 inch to cm")','evaluate("sin(x * pi)", { "x": 1/2 })','evaluate(["width=2", "height=4","width*height"])'],seealso:[]};var AR={name:"help",category:"Expression",syntax:["help(object)","help(string)"],description:"Display documentation on a function or data type.",examples:["help(sqrt)",'help("complex")'],seealso:[]};var CR={name:"distance",category:"Geometry",syntax:["distance([x1, y1], [x2, y2])","distance([[x1, y1], [x2, y2]])"],description:"Calculates the Euclidean distance between two points.",examples:["distance([0,0], [4,4])","distance([[0,0], [4,4]])"],seealso:[]};var MR={name:"intersect",category:"Geometry",syntax:["intersect(expr1, expr2, expr3, expr4)","intersect(expr1, expr2, expr3)"],description:"Computes the intersection point of lines and/or planes.",examples:["intersect([0, 0], [10, 10], [10, 0], [0, 10])","intersect([1, 0, 1], [4, -2, 2], [1, 1, 1, 6])"],seealso:[]};var TR={name:"and",category:"Logical",syntax:["x and y","and(x, y)"],description:"Logical and. Test whether two values are both defined with a nonzero/nonempty value.",examples:["true and false","true and true","2 and 4"],seealso:["not","or","xor"]};var _R={name:"not",category:"Logical",syntax:["not x","not(x)"],description:"Logical not. Flips the boolean value of given argument.",examples:["not true","not false","not 2","not 0"],seealso:["and","or","xor"]};var OR={name:"or",category:"Logical",syntax:["x or y","or(x, y)"],description:"Logical or. Test if at least one value is defined with a nonzero/nonempty value.",examples:["true or false","false or false","0 or 4"],seealso:["not","and","xor"]};var FR={name:"xor",category:"Logical",syntax:["x xor y","xor(x, y)"],description:"Logical exclusive or, xor. Test whether one and only one value is defined with a nonzero/nonempty value.",examples:["true xor false","false xor false","true xor true","0 xor 4"],seealso:["not","and","or"]};var IR={name:"column",category:"Matrix",syntax:["column(x, index)"],description:"Return a column from a matrix or array.",examples:["A = [[1, 2], [3, 4]]","column(A, 1)","column(A, 2)"],seealso:["row","matrixFromColumns"]};var kR={name:"concat",category:"Matrix",syntax:["concat(A, B, C, ...)","concat(A, B, C, ..., dim)"],description:"Concatenate matrices. By default, the matrices are concatenated by the last dimension. The dimension on which to concatenate can be provided as last argument.",examples:["A = [1, 2; 5, 6]","B = [3, 4; 7, 8]","concat(A, B)","concat(A, B, 1)","concat(A, B, 2)"],seealso:["det","diag","identity","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]};var LR={name:"count",category:"Matrix",syntax:["count(x)"],description:"Count the number of elements of a matrix, array or string.",examples:["a = [1, 2; 3, 4; 5, 6]","count(a)","size(a)",'count("hello world")'],seealso:["size"]};var BR={name:"cross",category:"Matrix",syntax:["cross(A, B)"],description:"Calculate the cross product for two vectors in three dimensional space.",examples:["cross([1, 1, 0], [0, 1, 1])","cross([3, -3, 1], [4, 9, 2])","cross([2, 3, 4], [5, 6, 7])"],seealso:["multiply","dot"]};var PR={name:"ctranspose",category:"Matrix",syntax:["x'","ctranspose(x)"],description:"Complex Conjugate and Transpose a matrix",examples:["a = [1, 2, 3; 4, 5, 6]","a'","ctranspose(a)"],seealso:["concat","det","diag","identity","inv","ones","range","size","squeeze","subset","trace","zeros"]};var RR={name:"det",category:"Matrix",syntax:["det(x)"],description:"Calculate the determinant of a matrix",examples:["det([1, 2; 3, 4])","det([-2, 2, 3; -1, 1, 3; 2, 0, -1])"],seealso:["concat","diag","identity","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]};var qR={name:"diag",category:"Matrix",syntax:["diag(x)","diag(x, k)"],description:"Create a diagonal matrix or retrieve the diagonal of a matrix. When x is a vector, a matrix with the vector values on the diagonal will be returned. When x is a matrix, a vector with the diagonal values of the matrix is returned. When k is provided, the k-th diagonal will be filled in or retrieved, if k is positive, the values are placed on the super diagonal. When k is negative, the values are placed on the sub diagonal.",examples:["diag(1:3)","diag(1:3, 1)","a = [1, 2, 3; 4, 5, 6; 7, 8, 9]","diag(a)"],seealso:["concat","det","identity","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]};var zR={name:"diff",category:"Matrix",syntax:["diff(arr)","diff(arr, dim)"],description:["Create a new matrix or array with the difference of the passed matrix or array.","Dim parameter is optional and used to indicate the dimension of the array/matrix to apply the difference","If no dimension parameter is passed it is assumed as dimension 0","Dimension is zero-based in javascript and one-based in the parser","Arrays must be 'rectangular' meaning arrays like [1, 2]","If something is passed as a matrix it will be returned as a matrix but other than that all matrices are converted to arrays"],examples:["A = [1, 2, 4, 7, 0]","diff(A)","diff(A, 1)","B = [[1, 2], [3, 4]]","diff(B)","diff(B, 1)","diff(B, 2)","diff(B, bignumber(2))","diff([[1, 2], matrix([3, 4])], 2)"],seealso:["subtract","partitionSelect"]};var UR={name:"dot",category:"Matrix",syntax:["dot(A, B)","A * B"],description:"Calculate the dot product of two vectors. The dot product of A = [a1, a2, a3, ..., an] and B = [b1, b2, b3, ..., bn] is defined as dot(A, B) = a1 * b1 + a2 * b2 + a3 * b3 + ... + an * bn",examples:["dot([2, 4, 1], [2, 2, 3])","[2, 4, 1] * [2, 2, 3]"],seealso:["multiply","cross"]};var HR={name:"eigs",category:"Matrix",syntax:["eigs(x)"],description:"Calculate the eigenvalues and optionally eigenvectors of a square matrix",examples:["eigs([[5, 2.3], [2.3, 1]])","eigs([[1, 2, 3], [4, 5, 6], [7, 8, 9]], { precision: 1e-6, eigenvectors: false })"],seealso:["inv"]};var $R={name:"filter",category:"Matrix",syntax:["filter(x, test)"],description:"Filter items in a matrix.",examples:["isPositive(x) = x > 0","filter([6, -2, -1, 4, 3], isPositive)","filter([6, -2, 0, 1, 0], x != 0)"],seealso:["sort","map","forEach"]};var WR={name:"flatten",category:"Matrix",syntax:["flatten(x)"],description:"Flatten a multi dimensional matrix into a single dimensional matrix.",examples:["a = [1, 2, 3; 4, 5, 6]","size(a)","b = flatten(a)","size(b)"],seealso:["concat","resize","size","squeeze"]};var VR={name:"forEach",category:"Matrix",syntax:["forEach(x, callback)"],description:"Iterates over all elements of a matrix/array, and executes the given callback function.",examples:["numberOfPets = {}","addPet(n) = numberOfPets[n] = (numberOfPets[n] ? numberOfPets[n]:0 ) + 1;",'forEach(["Dog","Cat","Cat"], addPet)',"numberOfPets"],seealso:["map","sort","filter"]};var GR={name:"getMatrixDataType",category:"Matrix",syntax:["getMatrixDataType(x)"],description:'Find the data type of all elements in a matrix or array, for example "number" if all items are a number and "Complex" if all values are complex numbers. If a matrix contains more than one data type, it will return "mixed".',examples:["getMatrixDataType([1, 2, 3])","getMatrixDataType([[5 cm], [2 inch]])",'getMatrixDataType([1, "text"])',"getMatrixDataType([1, bignumber(4)])"],seealso:["matrix","sparse","typeOf"]};var YR={name:"identity",category:"Matrix",syntax:["identity(n)","identity(m, n)","identity([m, n])"],description:"Returns the identity matrix with size m-by-n. The matrix has ones on the diagonal and zeros elsewhere.",examples:["identity(3)","identity(3, 5)","a = [1, 2, 3; 4, 5, 6]","identity(size(a))"],seealso:["concat","det","diag","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]};var ZR={name:"inv",category:"Matrix",syntax:["inv(x)"],description:"Calculate the inverse of a matrix",examples:["inv([1, 2; 3, 4])","inv(4)","1 / 4"],seealso:["concat","det","diag","identity","ones","range","size","squeeze","subset","trace","transpose","zeros"]};var XR={name:"pinv",category:"Matrix",syntax:["pinv(x)"],description:"Calculate the Moore\u2013Penrose inverse of a matrix",examples:["pinv([1, 2; 3, 4])","pinv([[1, 0], [0, 1], [0, 1]])","pinv(4)"],seealso:["inv"]};var KR={name:"kron",category:"Matrix",syntax:["kron(x, y)"],description:"Calculates the Kronecker product of 2 matrices or vectors.",examples:["kron([[1, 0], [0, 1]], [[1, 2], [3, 4]])","kron([1,1], [2,3,4])"],seealso:["multiply","dot","cross"]};var JR={name:"map",category:"Matrix",syntax:["map(x, callback)","map(x, y, ..., callback)"],description:"Create a new matrix or array with the results of the callback function executed on each entry of the matrix/array or the matrices/arrays.",examples:["map([1, 2, 3], square)","map([1, 2], [3, 4], f(a,b) = a + b)"],seealso:["filter","forEach"]};var QR={name:"matrixFromColumns",category:"Matrix",syntax:["matrixFromColumns(...arr)","matrixFromColumns(row1, row2)","matrixFromColumns(row1, row2, row3)"],description:"Create a dense matrix from vectors as individual columns.",examples:["matrixFromColumns([1, 2, 3], [[4],[5],[6]])"],seealso:["matrix","matrixFromRows","matrixFromFunction","zeros"]};var jR={name:"matrixFromFunction",category:"Matrix",syntax:["matrixFromFunction(size, fn)","matrixFromFunction(size, fn, format)","matrixFromFunction(size, fn, format, datatype)","matrixFromFunction(size, format, fn)","matrixFromFunction(size, format, datatype, fn)"],description:"Create a matrix by evaluating a generating function at each index.",examples:["f(I) = I[1] - I[2]","matrixFromFunction([3,3], f)","g(I) = I[1] - I[2] == 1 ? 4 : 0",'matrixFromFunction([100, 100], "sparse", g)',"matrixFromFunction([5], random)"],seealso:["matrix","matrixFromRows","matrixFromColumns","zeros"]};var e7={name:"matrixFromRows",category:"Matrix",syntax:["matrixFromRows(...arr)","matrixFromRows(row1, row2)","matrixFromRows(row1, row2, row3)"],description:"Create a dense matrix from vectors as individual rows.",examples:["matrixFromRows([1, 2, 3], [[4],[5],[6]])"],seealso:["matrix","matrixFromColumns","matrixFromFunction","zeros"]};var t7={name:"ones",category:"Matrix",syntax:["ones(m)","ones(m, n)","ones(m, n, p, ...)","ones([m])","ones([m, n])","ones([m, n, p, ...])"],description:"Create a matrix containing ones.",examples:["ones(3)","ones(3, 5)","ones([2,3]) * 4.5","a = [1, 2, 3; 4, 5, 6]","ones(size(a))"],seealso:["concat","det","diag","identity","inv","range","size","squeeze","subset","trace","transpose","zeros"]};var r7={name:"partitionSelect",category:"Matrix",syntax:["partitionSelect(x, k)","partitionSelect(x, k, compare)"],description:"Partition-based selection of an array or 1D matrix. Will find the kth smallest value, and mutates the input array. Uses Quickselect.",examples:["partitionSelect([5, 10, 1], 2)",'partitionSelect(["C", "B", "A", "D"], 1, compareText)',"arr = [5, 2, 1]","partitionSelect(arr, 0) # returns 1, arr is now: [1, 2, 5]","arr","partitionSelect(arr, 1, 'desc') # returns 2, arr is now: [5, 2, 1]","arr"],seealso:["sort"]};var n7={name:"range",category:"Type",syntax:["start:end","start:step:end","range(start, end)","range(start, end, step)","range(string)"],description:"Create a range. Lower bound of the range is included, upper bound is excluded.",examples:["1:5","3:-1:-3","range(3, 7)","range(0, 12, 2)",'range("4:10")',"range(1m, 1m, 3m)","a = [1, 2, 3, 4; 5, 6, 7, 8]","a[1:2, 1:2]"],seealso:["concat","det","diag","identity","inv","ones","size","squeeze","subset","trace","transpose","zeros"]};var i7={name:"reshape",category:"Matrix",syntax:["reshape(x, sizes)"],description:"Reshape a multi dimensional array to fit the specified dimensions.",examples:["reshape([1, 2, 3, 4, 5, 6], [2, 3])","reshape([[1, 2], [3, 4]], [1, 4])","reshape([[1, 2], [3, 4]], [4])","reshape([1, 2, 3, 4], [-1, 2])"],seealso:["size","squeeze","resize"]};var o7={name:"resize",category:"Matrix",syntax:["resize(x, size)","resize(x, size, defaultValue)"],description:"Resize a matrix.",examples:["resize([1,2,3,4,5], [3])","resize([1,2,3], [5])","resize([1,2,3], [5], -1)","resize(2, [2, 3])",'resize("hello", [8], "!")'],seealso:["size","subset","squeeze","reshape"]};var a7={name:"rotate",category:"Matrix",syntax:["rotate(w, theta)","rotate(w, theta, v)"],description:"Returns a 2-D rotation matrix (2x2) for a given angle (in radians). Returns a 2-D rotation matrix (3x3) of a given angle (in radians) around given axis.",examples:["rotate([1, 0], pi / 2)",'rotate(matrix([1, 0]), unit("35deg"))','rotate([1, 0, 0], unit("90deg"), [0, 0, 1])','rotate(matrix([1, 0, 0]), unit("90deg"), matrix([0, 0, 1]))'],seealso:["matrix","rotationMatrix"]};var s7={name:"rotationMatrix",category:"Matrix",syntax:["rotationMatrix(theta)","rotationMatrix(theta, v)","rotationMatrix(theta, v, format)"],description:"Returns a 2-D rotation matrix (2x2) for a given angle (in radians). Returns a 2-D rotation matrix (3x3) of a given angle (in radians) around given axis.",examples:["rotationMatrix(pi / 2)",'rotationMatrix(unit("45deg"), [0, 0, 1])','rotationMatrix(1, matrix([0, 0, 1]), "sparse")'],seealso:["cos","sin"]};var u7={name:"row",category:"Matrix",syntax:["row(x, index)"],description:"Return a row from a matrix or array.",examples:["A = [[1, 2], [3, 4]]","row(A, 1)","row(A, 2)"],seealso:["column","matrixFromRows"]};var l7={name:"size",category:"Matrix",syntax:["size(x)"],description:"Calculate the size of a matrix.",examples:["size(2.3)",'size("hello world")',"a = [1, 2; 3, 4; 5, 6]","size(a)","size(1:6)"],seealso:["concat","count","det","diag","identity","inv","ones","range","squeeze","subset","trace","transpose","zeros"]};var f7={name:"sort",category:"Matrix",syntax:["sort(x)","sort(x, compare)"],description:'Sort the items in a matrix. Compare can be a string "asc", "desc", "natural", or a custom sort function.',examples:["sort([5, 10, 1])",'sort(["C", "B", "A", "D"], "natural")',"sortByLength(a, b) = size(a)[1] - size(b)[1]",'sort(["Langdon", "Tom", "Sara"], sortByLength)','sort(["10", "1", "2"], "natural")'],seealso:["map","filter","forEach"]};var c7={name:"squeeze",category:"Matrix",syntax:["squeeze(x)"],description:"Remove inner and outer singleton dimensions from a matrix.",examples:["a = zeros(3,2,1)","size(squeeze(a))","b = zeros(1,1,3)","size(squeeze(b))"],seealso:["concat","det","diag","identity","inv","ones","range","size","subset","trace","transpose","zeros"]};var p7={name:"subset",category:"Matrix",syntax:["value(index)","value(index) = replacement","subset(value, [index])","subset(value, [index], replacement)"],description:"Get or set a subset of the entries of a matrix or characters of a string. Indexes are one-based. There should be one index specification for each dimension of the target. Each specification can be a single index, a list of indices, or a range in colon notation `l:u`. In a range, both the lower bound l and upper bound u are included; and if a bound is omitted it defaults to the most extreme valid value. The cartesian product of the indices specified in each dimension determines the target of the operation.",examples:["d = [1, 2; 3, 4]","e = []","e[1, 1:2] = [5, 6]","e[2, :] = [7, 8]","f = d * e","f[2, 1]","f[:, 1]","f[[1,2], [1,3]] = [9, 10; 11, 12]","f"],seealso:["concat","det","diag","identity","inv","ones","range","size","squeeze","trace","transpose","zeros"]};var m7={name:"trace",category:"Matrix",syntax:["trace(A)"],description:"Calculate the trace of a matrix: the sum of the elements on the main diagonal of a square matrix.",examples:["A = [1, 2, 3; -1, 2, 3; 2, 0, 3]","trace(A)"],seealso:["concat","det","diag","identity","inv","ones","range","size","squeeze","subset","transpose","zeros"]};var d7={name:"transpose",category:"Matrix",syntax:["x'","transpose(x)"],description:"Transpose a matrix",examples:["a = [1, 2, 3; 4, 5, 6]","a'","transpose(a)"],seealso:["concat","det","diag","identity","inv","ones","range","size","squeeze","subset","trace","zeros"]};var h7={name:"zeros",category:"Matrix",syntax:["zeros(m)","zeros(m, n)","zeros(m, n, p, ...)","zeros([m])","zeros([m, n])","zeros([m, n, p, ...])"],description:"Create a matrix containing zeros.",examples:["zeros(3)","zeros(3, 5)","a = [1, 2, 3; 4, 5, 6]","zeros(size(a))"],seealso:["concat","det","diag","identity","inv","ones","range","size","squeeze","subset","trace","transpose"]};var g7={name:"fft",category:"Matrix",syntax:["fft(x)"],description:"Calculate N-dimensional Fourier transform",examples:["fft([[1, 0], [1, 0]])"],seealso:["ifft"]};var v7={name:"ifft",category:"Matrix",syntax:["ifft(x)"],description:"Calculate N-dimensional inverse Fourier transform",examples:["ifft([[2, 2], [0, 0]])"],seealso:["fft"]};var x7={name:"combinations",category:"Probability",syntax:["combinations(n, k)"],description:"Compute the number of combinations of n items taken k at a time",examples:["combinations(7, 5)"],seealso:["combinationsWithRep","permutations","factorial"]};var y7={name:"combinationsWithRep",category:"Probability",syntax:["combinationsWithRep(n, k)"],description:"Compute the number of combinations of n items taken k at a time with replacements.",examples:["combinationsWithRep(7, 5)"],seealso:["combinations","permutations","factorial"]};var w7={name:"factorial",category:"Probability",syntax:["n!","factorial(n)"],description:"Compute the factorial of a value",examples:["5!","5 * 4 * 3 * 2 * 1","3!"],seealso:["combinations","combinationsWithRep","permutations","gamma"]};var b7={name:"gamma",category:"Probability",syntax:["gamma(n)"],description:"Compute the gamma function. For small values, the Lanczos approximation is used, and for large values the extended Stirling approximation.",examples:["gamma(4)","3!","gamma(1/2)","sqrt(pi)"],seealso:["factorial"]};var D7={name:"lgamma",category:"Probability",syntax:["lgamma(n)"],description:"Logarithm of the gamma function for real, positive numbers and complex numbers, using Lanczos approximation for numbers and Stirling series for complex numbers.",examples:["lgamma(4)","lgamma(1/2)","lgamma(i)","lgamma(complex(1.1, 2))"],seealso:["gamma"]};var S7={name:"kldivergence",category:"Probability",syntax:["kldivergence(x, y)"],description:"Calculate the Kullback-Leibler (KL) divergence between two distributions.",examples:["kldivergence([0.7,0.5,0.4], [0.2,0.9,0.5])"],seealso:[]};var N7={name:"multinomial",category:"Probability",syntax:["multinomial(A)"],description:"Multinomial Coefficients compute the number of ways of picking a1, a2, ..., ai unordered outcomes from `n` possibilities. multinomial takes one array of integers as an argument. The following condition must be enforced: every ai > 0.",examples:["multinomial([1, 2, 1])"],seealso:["combinations","factorial"]};var E7={name:"permutations",category:"Probability",syntax:["permutations(n)","permutations(n, k)"],description:"Compute the number of permutations of n items taken k at a time",examples:["permutations(5)","permutations(5, 3)"],seealso:["combinations","combinationsWithRep","factorial"]};var A7={name:"pickRandom",category:"Probability",syntax:["pickRandom(array)","pickRandom(array, number)","pickRandom(array, weights)","pickRandom(array, number, weights)","pickRandom(array, weights, number)"],description:"Pick a random entry from a given array.",examples:["pickRandom(0:10)","pickRandom([1, 3, 1, 6])","pickRandom([1, 3, 1, 6], 2)","pickRandom([1, 3, 1, 6], [2, 3, 2, 1])","pickRandom([1, 3, 1, 6], 2, [2, 3, 2, 1])","pickRandom([1, 3, 1, 6], [2, 3, 2, 1], 2)"],seealso:["random","randomInt"]};var C7={name:"random",category:"Probability",syntax:["random()","random(max)","random(min, max)","random(size)","random(size, max)","random(size, min, max)"],description:"Return a random number.",examples:["random()","random(10, 20)","random([2, 3])"],seealso:["pickRandom","randomInt"]};var M7={name:"randomInt",category:"Probability",syntax:["randomInt(max)","randomInt(min, max)","randomInt(size)","randomInt(size, max)","randomInt(size, min, max)"],description:"Return a random integer number",examples:["randomInt(10, 20)","randomInt([2, 3], 10)"],seealso:["pickRandom","random"]};var T7={name:"compare",category:"Relational",syntax:["compare(x, y)"],description:"Compare two values. Returns 1 when x > y, -1 when x < y, and 0 when x == y.",examples:["compare(2, 3)","compare(3, 2)","compare(2, 2)","compare(5cm, 40mm)","compare(2, [1, 2, 3])"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compareNatural","compareText"]};var _7={name:"compareNatural",category:"Relational",syntax:["compareNatural(x, y)"],description:"Compare two values of any type in a deterministic, natural way. Returns 1 when x > y, -1 when x < y, and 0 when x == y.",examples:["compareNatural(2, 3)","compareNatural(3, 2)","compareNatural(2, 2)","compareNatural(5cm, 40mm)",'compareNatural("2", "10")',"compareNatural(2 + 3i, 2 + 4i)","compareNatural([1, 2, 4], [1, 2, 3])","compareNatural([1, 5], [1, 2, 3])","compareNatural([1, 2], [1, 2])","compareNatural({a: 2}, {a: 4})"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compare","compareText"]};var O7={name:"compareText",category:"Relational",syntax:["compareText(x, y)"],description:"Compare two strings lexically. Comparison is case sensitive. Returns 1 when x > y, -1 when x < y, and 0 when x == y.",examples:['compareText("B", "A")','compareText("A", "B")','compareText("A", "A")','compareText("2", "10")','compare("2", "10")',"compare(2, 10)",'compareNatural("2", "10")','compareText("B", ["A", "B", "C"])'],seealso:["compare","compareNatural"]};var F7={name:"deepEqual",category:"Relational",syntax:["deepEqual(x, y)"],description:"Check equality of two matrices element wise. Returns true if the size of both matrices is equal and when and each of the elements are equal.",examples:["deepEqual([1,3,4], [1,3,4])","deepEqual([1,3,4], [1,3])"],seealso:["equal","unequal","smaller","larger","smallerEq","largerEq","compare"]};var I7={name:"equal",category:"Relational",syntax:["x == y","equal(x, y)"],description:"Check equality of two values. Returns true if the values are equal, and false if not.",examples:["2+2 == 3","2+2 == 4","a = 3.2","b = 6-2.8","a == b","50cm == 0.5m"],seealso:["unequal","smaller","larger","smallerEq","largerEq","compare","deepEqual","equalText"]};var k7={name:"equalText",category:"Relational",syntax:["equalText(x, y)"],description:"Check equality of two strings. Comparison is case sensitive. Returns true if the values are equal, and false if not.",examples:['equalText("Hello", "Hello")','equalText("a", "A")','equal("2e3", "2000")','equalText("2e3", "2000")','equalText("B", ["A", "B", "C"])'],seealso:["compare","compareNatural","compareText","equal"]};var L7={name:"larger",category:"Relational",syntax:["x > y","larger(x, y)"],description:"Check if value x is larger than y. Returns true if x is larger than y, and false if not.",examples:["2 > 3","5 > 2*2","a = 3.3","b = 6-2.8","(a > b)","(b < a)","5 cm > 2 inch"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compare"]};var B7={name:"largerEq",category:"Relational",syntax:["x >= y","largerEq(x, y)"],description:"Check if value x is larger or equal to y. Returns true if x is larger or equal to y, and false if not.",examples:["2 >= 1+1","2 > 1+1","a = 3.2","b = 6-2.8","(a >= b)"],seealso:["equal","unequal","smallerEq","smaller","compare"]};var P7={name:"smaller",category:"Relational",syntax:["x < y","smaller(x, y)"],description:"Check if value x is smaller than value y. Returns true if x is smaller than y, and false if not.",examples:["2 < 3","5 < 2*2","a = 3.3","b = 6-2.8","(a < b)","5 cm < 2 inch"],seealso:["equal","unequal","larger","smallerEq","largerEq","compare"]};var R7={name:"smallerEq",category:"Relational",syntax:["x <= y","smallerEq(x, y)"],description:"Check if value x is smaller or equal to value y. Returns true if x is smaller than y, and false if not.",examples:["2 <= 1+1","2 < 1+1","a = 3.2","b = 6-2.8","(a <= b)"],seealso:["equal","unequal","larger","smaller","largerEq","compare"]};var q7={name:"unequal",category:"Relational",syntax:["x != y","unequal(x, y)"],description:"Check unequality of two values. Returns true if the values are unequal, and false if they are equal.",examples:["2+2 != 3","2+2 != 4","a = 3.2","b = 6-2.8","a != b","50cm != 0.5m","5 cm != 2 inch"],seealso:["equal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]};var z7={name:"setCartesian",category:"Set",syntax:["setCartesian(set1, set2)"],description:"Create the cartesian product of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays and the values will be sorted in ascending order before the operation.",examples:["setCartesian([1, 2], [3, 4])"],seealso:["setUnion","setIntersect","setDifference","setPowerset"]};var U7={name:"setDifference",category:"Set",syntax:["setDifference(set1, set2)"],description:"Create the difference of two (multi)sets: every element of set1, that is not the element of set2. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setDifference([1, 2, 3, 4], [3, 4, 5, 6])","setDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setUnion","setIntersect","setSymDifference"]};var H7={name:"setDistinct",category:"Set",syntax:["setDistinct(set)"],description:"Collect the distinct elements of a multiset. A multi-dimension array will be converted to a single-dimension array before the operation.",examples:["setDistinct([1, 1, 1, 2, 2, 3])"],seealso:["setMultiplicity"]};var $7={name:"setIntersect",category:"Set",syntax:["setIntersect(set1, set2)"],description:"Create the intersection of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setIntersect([1, 2, 3, 4], [3, 4, 5, 6])","setIntersect([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setUnion","setDifference"]};var W7={name:"setIsSubset",category:"Set",syntax:["setIsSubset(set1, set2)"],description:"Check whether a (multi)set is a subset of another (multi)set: every element of set1 is the element of set2. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setIsSubset([1, 2], [3, 4, 5, 6])","setIsSubset([3, 4], [3, 4, 5, 6])"],seealso:["setUnion","setIntersect","setDifference"]};var V7={name:"setMultiplicity",category:"Set",syntax:["setMultiplicity(element, set)"],description:"Count the multiplicity of an element in a multiset. A multi-dimension array will be converted to a single-dimension array before the operation.",examples:["setMultiplicity(1, [1, 2, 2, 4])","setMultiplicity(2, [1, 2, 2, 4])"],seealso:["setDistinct","setSize"]};var G7={name:"setPowerset",category:"Set",syntax:["setPowerset(set)"],description:"Create the powerset of a (multi)set: the powerset contains very possible subsets of a (multi)set. A multi-dimension array will be converted to a single-dimension array before the operation.",examples:["setPowerset([1, 2, 3])"],seealso:["setCartesian"]};var Y7={name:"setSize",category:"Set",syntax:["setSize(set)","setSize(set, unique)"],description:'Count the number of elements of a (multi)set. When the second parameter "unique" is true, count only the unique values. A multi-dimension array will be converted to a single-dimension array before the operation.',examples:["setSize([1, 2, 2, 4])","setSize([1, 2, 2, 4], true)"],seealso:["setUnion","setIntersect","setDifference"]};var Z7={name:"setSymDifference",category:"Set",syntax:["setSymDifference(set1, set2)"],description:"Create the symmetric difference of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setSymDifference([1, 2, 3, 4], [3, 4, 5, 6])","setSymDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setUnion","setIntersect","setDifference"]};var X7={name:"setUnion",category:"Set",syntax:["setUnion(set1, set2)"],description:"Create the union of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setUnion([1, 2, 3, 4], [3, 4, 5, 6])","setUnion([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setIntersect","setDifference"]};var K7={name:"zpk2tf",category:"Signal",syntax:["zpk2tf(z, p, k)"],description:"Compute the transfer function of a zero-pole-gain model.",examples:["zpk2tf([1, 2], [-1, -2], 1)","zpk2tf([1, 2], [-1, -2])","zpk2tf([1 - 3i, 2 + 2i], [-1, -2])"],seealso:[]};var J7={name:"freqz",category:"Signal",syntax:["freqz(b, a)","freqz(b, a, w)"],description:"Calculates the frequency response of a filter given its numerator and denominator coefficients.",examples:["freqz([1, 2], [1, 2, 3])","freqz([1, 2], [1, 2, 3], [0, 1])","freqz([1, 2], [1, 2, 3], 512)"],seealso:[]};var Q7={name:"erf",category:"Special",syntax:["erf(x)"],description:"Compute the erf function of a value using a rational Chebyshev approximations for different intervals of x",examples:["erf(0.2)","erf(-0.5)","erf(4)"],seealso:[]};var j7={name:"zeta",category:"Special",syntax:["zeta(s)"],description:"Compute the Riemann Zeta Function using an infinite series and Riemann's Functional Equation for the entire complex plane",examples:["zeta(0.2)","zeta(-0.5)","zeta(4)"],seealso:[]};var e9={name:"mad",category:"Statistics",syntax:["mad(a, b, c, ...)","mad(A)"],description:"Compute the median absolute deviation of a matrix or a list with values. The median absolute deviation is defined as the median of the absolute deviations from the median.",examples:["mad(10, 20, 30)","mad([1, 2, 3])"],seealso:["mean","median","std","abs"]};var t9={name:"max",category:"Statistics",syntax:["max(a, b, c, ...)","max(A)","max(A, dimension)"],description:"Compute the maximum value of a list of values.",examples:["max(2, 3, 4, 1)","max([2, 3, 4, 1])","max([2, 5; 4, 3])","max([2, 5; 4, 3], 1)","max([2, 5; 4, 3], 2)","max(2.7, 7.1, -4.5, 2.0, 4.1)","min(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["mean","median","min","prod","std","sum","variance"]};var r9={name:"mean",category:"Statistics",syntax:["mean(a, b, c, ...)","mean(A)","mean(A, dimension)"],description:"Compute the arithmetic mean of a list of values.",examples:["mean(2, 3, 4, 1)","mean([2, 3, 4, 1])","mean([2, 5; 4, 3])","mean([2, 5; 4, 3], 1)","mean([2, 5; 4, 3], 2)","mean([1.0, 2.7, 3.2, 4.0])"],seealso:["max","median","min","prod","std","sum","variance"]};var n9={name:"median",category:"Statistics",syntax:["median(a, b, c, ...)","median(A)"],description:"Compute the median of all values. The values are sorted and the middle value is returned. In case of an even number of values, the average of the two middle values is returned.",examples:["median(5, 2, 7)","median([3, -1, 5, 7])"],seealso:["max","mean","min","prod","std","sum","variance","quantileSeq"]};var i9={name:"min",category:"Statistics",syntax:["min(a, b, c, ...)","min(A)","min(A, dimension)"],description:"Compute the minimum value of a list of values.",examples:["min(2, 3, 4, 1)","min([2, 3, 4, 1])","min([2, 5; 4, 3])","min([2, 5; 4, 3], 1)","min([2, 5; 4, 3], 2)","min(2.7, 7.1, -4.5, 2.0, 4.1)","max(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["max","mean","median","prod","std","sum","variance"]};var o9={name:"mode",category:"Statistics",syntax:["mode(a, b, c, ...)","mode(A)","mode(A, a, b, B, c, ...)"],description:"Computes the mode of all values as an array. In case mode being more than one, multiple values are returned in an array.",examples:["mode(2, 1, 4, 3, 1)","mode([1, 2.7, 3.2, 4, 2.7])","mode(1, 4, 6, 1, 6)"],seealso:["max","mean","min","median","prod","std","sum","variance"]};var a9={name:"prod",category:"Statistics",syntax:["prod(a, b, c, ...)","prod(A)"],description:"Compute the product of all values.",examples:["prod(2, 3, 4)","prod([2, 3, 4])","prod([2, 5; 4, 3])"],seealso:["max","mean","min","median","min","std","sum","variance"]};var s9={name:"quantileSeq",category:"Statistics",syntax:["quantileSeq(A, prob[, sorted])","quantileSeq(A, [prob1, prob2, ...][, sorted])","quantileSeq(A, N[, sorted])"],description:`Compute the prob order quantile of a matrix or a list with values. The sequence is sorted and the middle value is returned. Supported types of sequence values are: Number, BigNumber, Unit Supported types of probability are: Number, BigNumber. +`),i},r.prototype.toJSON=function(){var n=_t(this.doc);return n.mathjs="Help",n},r.fromJSON=function(n){var i={};return Object.keys(n).filter(o=>o!=="mathjs").forEach(o=>{i[o]=n[o]}),new r(i)},r.prototype.valueOf=r.prototype.toString,r},{isClass:!0});var cce="Chain",pce=["?on","math","typed"],B6=$(cce,pce,e=>{var{on:t,math:r,typed:n}=e;function i(u){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator");md(u)?this.value=u.value:this.value=u}i.prototype.type="Chain",i.prototype.isChain=!0,i.prototype.done=function(){return this.value},i.prototype.valueOf=function(){return this.value},i.prototype.toString=function(){return Ht(this.value)},i.prototype.toJSON=function(){return{mathjs:"Chain",value:this.value}},i.fromJSON=function(u){return new i(u.value)};function o(u,f){typeof f=="function"&&(i.prototype[u]=s(f))}function l(u,f){dd(i.prototype,u,function(){var h=f();if(typeof h=="function")return s(h)})}function s(u){return function(){if(arguments.length===0)return new i(u(this.value));for(var f=[this.value],p=0;pu[x])};for(var h in u)p(h)}};var a={expression:!0,docs:!0,type:!0,classes:!0,json:!0,error:!0,isChain:!0};return i.createProxy(r),t&&t("import",function(u,f,p){p||l(u,f)}),i},{isClass:!0});var SC={name:"e",category:"Constants",syntax:["e"],description:"Euler's number, the base of the natural logarithm. Approximately equal to 2.71828",examples:["e","e ^ 2","exp(2)","log(e)"],seealso:["exp"]};var P6={name:"false",category:"Constants",syntax:["false"],description:"Boolean value false",examples:["false"],seealso:["true"]};var R6={name:"i",category:"Constants",syntax:["i"],description:"Imaginary unit, defined as i*i=-1. A complex number is described as a + b*i, where a is the real part, and b is the imaginary part.",examples:["i","i * i","sqrt(-1)"],seealso:[]};var q6={name:"Infinity",category:"Constants",syntax:["Infinity"],description:"Infinity, a number which is larger than the maximum number that can be handled by a floating point number.",examples:["Infinity","1 / 0"],seealso:[]};var z6={name:"LN10",category:"Constants",syntax:["LN10"],description:"Returns the natural logarithm of 10, approximately equal to 2.302",examples:["LN10","log(10)"],seealso:[]};var U6={name:"LN2",category:"Constants",syntax:["LN2"],description:"Returns the natural logarithm of 2, approximately equal to 0.693",examples:["LN2","log(2)"],seealso:[]};var H6={name:"LOG10E",category:"Constants",syntax:["LOG10E"],description:"Returns the base-10 logarithm of E, approximately equal to 0.434",examples:["LOG10E","log(e, 10)"],seealso:[]};var $6={name:"LOG2E",category:"Constants",syntax:["LOG2E"],description:"Returns the base-2 logarithm of E, approximately equal to 1.442",examples:["LOG2E","log(e, 2)"],seealso:[]};var W6={name:"NaN",category:"Constants",syntax:["NaN"],description:"Not a number",examples:["NaN","0 / 0"],seealso:[]};var V6={name:"null",category:"Constants",syntax:["null"],description:"Value null",examples:["null"],seealso:["true","false"]};var G6={name:"phi",category:"Constants",syntax:["phi"],description:"Phi is the golden ratio. Two quantities are in the golden ratio if their ratio is the same as the ratio of their sum to the larger of the two quantities. Phi is defined as `(1 + sqrt(5)) / 2` and is approximately 1.618034...",examples:["phi"],seealso:[]};var NC={name:"pi",category:"Constants",syntax:["pi"],description:"The number pi is a mathematical constant that is the ratio of a circle's circumference to its diameter, and is approximately equal to 3.14159",examples:["pi","sin(pi/2)"],seealso:["tau"]};var Y6={name:"SQRT1_2",category:"Constants",syntax:["SQRT1_2"],description:"Returns the square root of 1/2, approximately equal to 0.707",examples:["SQRT1_2","sqrt(1/2)"],seealso:[]};var Z6={name:"SQRT2",category:"Constants",syntax:["SQRT2"],description:"Returns the square root of 2, approximately equal to 1.414",examples:["SQRT2","sqrt(2)"],seealso:[]};var X6={name:"tau",category:"Constants",syntax:["tau"],description:"Tau is the ratio constant of a circle's circumference to radius, equal to 2 * pi, approximately 6.2832.",examples:["tau","2 * pi"],seealso:["pi"]};var K6={name:"true",category:"Constants",syntax:["true"],description:"Boolean value true",examples:["true"],seealso:["false"]};var J6={name:"version",category:"Constants",syntax:["version"],description:"A string with the version number of math.js",examples:["version"],seealso:[]};var Q6={name:"bignumber",category:"Construction",syntax:["bignumber(x)"],description:"Create a big number from a number or string.",examples:["0.1 + 0.2","bignumber(0.1) + bignumber(0.2)",'bignumber("7.2")','bignumber("7.2e500")',"bignumber([0.1, 0.2, 0.3])"],seealso:["boolean","bigint","complex","fraction","index","matrix","string","unit"]};var j6={name:"bigint",category:"Construction",syntax:["bigint(x)"],description:"Create a bigint, an integer with an arbitrary number of digits, from a number or string.",examples:["123123123123123123 # a large number will lose digits",'bigint("123123123123123123")','bignumber(["1", "3", "5"])'],seealso:["boolean","bignumber","number","complex","fraction","index","matrix","string","unit"]};var e8={name:"boolean",category:"Construction",syntax:["x","boolean(x)"],description:"Convert a string or number into a boolean.",examples:["boolean(0)","boolean(1)","boolean(3)",'boolean("true")','boolean("false")',"boolean([1, 0, 1, 1])"],seealso:["bignumber","complex","index","matrix","number","string","unit"]};var t8={name:"complex",category:"Construction",syntax:["complex()","complex(re, im)","complex(string)"],description:"Create a complex number.",examples:["complex()","complex(2, 3)",'complex("7 - 2i")'],seealso:["bignumber","boolean","index","matrix","number","string","unit"]};var r8={name:"createUnit",category:"Construction",syntax:["createUnit(definitions)","createUnit(name, definition)"],description:"Create a user-defined unit and register it with the Unit type.",examples:['createUnit("foo")','createUnit("knot", {definition: "0.514444444 m/s", aliases: ["knots", "kt", "kts"]})','createUnit("mph", "1 mile/hour")'],seealso:["unit","splitUnit"]};var n8={name:"fraction",category:"Construction",syntax:["fraction(num)","fraction(matrix)","fraction(num,den)","fraction({n: num, d: den})"],description:"Create a fraction from a number or from integer numerator and denominator.",examples:["fraction(0.125)","fraction(1, 3) + fraction(2, 5)","fraction({n: 333, d: 53})","fraction([sqrt(9), sqrt(10), sqrt(11)])"],seealso:["bignumber","boolean","complex","index","matrix","string","unit"]};var i8={name:"index",category:"Construction",syntax:["[start]","[start:end]","[start:step:end]","[start1, start 2, ...]","[start1:end1, start2:end2, ...]","[start1:step1:end1, start2:step2:end2, ...]"],description:"Create an index to get or replace a subset of a matrix",examples:["A = [1, 2, 3; 4, 5, 6]","A[1, :]","A[1, 2] = 50","A[1:2, 1:2] = 1","B = [1, 2, 3]","B[B>1 and B<3]"],seealso:["bignumber","boolean","complex","matrix,","number","range","string","unit"]};var o8={name:"matrix",category:"Construction",syntax:["[]","[a1, b1, ...; a2, b2, ...]","matrix()",'matrix("dense")',"matrix([...])"],description:"Create a matrix.",examples:["[]","[1, 2, 3]","[1, 2, 3; 4, 5, 6]","matrix()","matrix([3, 4])",'matrix([3, 4; 5, 6], "sparse")','matrix([3, 4; 5, 6], "sparse", "number")'],seealso:["bignumber","boolean","complex","index","number","string","unit","sparse"]};var a8={name:"number",category:"Construction",syntax:["x","number(x)","number(unit, valuelessUnit)"],description:"Create a number or convert a string or boolean into a number.",examples:["2","2e3","4.05","number(2)",'number("7.2")',"number(true)","number([true, false, true, true])",'number(unit("52cm"), "m")'],seealso:["bignumber","bigint","boolean","complex","fraction","index","matrix","string","unit"]};var s8={name:"sparse",category:"Construction",syntax:["sparse()","sparse([a1, b1, ...; a1, b2, ...])",'sparse([a1, b1, ...; a1, b2, ...], "number")'],description:"Create a sparse matrix.",examples:["sparse()","sparse([3, 4; 5, 6])",'sparse([3, 0; 5, 0], "number")'],seealso:["bignumber","boolean","complex","index","number","string","unit","matrix"]};var u8={name:"splitUnit",category:"Construction",syntax:["splitUnit(unit: Unit, parts: Unit[])"],description:"Split a unit in an array of units whose sum is equal to the original unit.",examples:['splitUnit(1 m, ["feet", "inch"])'],seealso:["unit","createUnit"]};var l8={name:"string",category:"Construction",syntax:['"text"',"string(x)"],description:"Create a string or convert a value to a string",examples:['"Hello World!"',"string(4.2)","string(3 + 2i)"],seealso:["bignumber","boolean","complex","index","matrix","number","unit"]};var f8={name:"unit",category:"Construction",syntax:["value unit","unit(value, unit)","unit(string)"],description:"Create a unit.",examples:["5.5 mm","3 inch",'unit(7.1, "kilogram")','unit("23 deg")'],seealso:["bignumber","boolean","complex","index","matrix","number","string"]};var c8={name:"config",category:"Core",syntax:["config()","config(options)"],description:"Get configuration or change configuration.",examples:["config()","1/3 + 1/4",'config({number: "Fraction"})',"1/3 + 1/4"],seealso:[]};var p8={name:"import",category:"Core",syntax:["import(functions)","import(functions, options)"],description:"Import functions or constants from an object.",examples:["import({myFn: f(x)=x^2, myConstant: 32 })","myFn(2)","myConstant"],seealso:[]};var m8={name:"typed",category:"Core",syntax:["typed(signatures)","typed(name, signatures)"],description:"Create a typed function.",examples:['double = typed({ "number": f(x)=x+x, "string": f(x)=concat(x,x) })',"double(2)",'double("hello")'],seealso:[]};var d8={name:"derivative",category:"Algebra",syntax:["derivative(expr, variable)","derivative(expr, variable, {simplify: boolean})"],description:"Takes the derivative of an expression expressed in parser Nodes. The derivative will be taken over the supplied variable in the second parameter. If there are multiple variables in the expression, it will return a partial derivative.",examples:['derivative("2x^3", "x")','derivative("2x^3", "x", {simplify: false})','derivative("2x^2 + 3x + 4", "x")','derivative("sin(2x)", "x")','f = parse("x^2 + x")','x = parse("x")',"df = derivative(f, x)","df.evaluate({x: 3})"],seealso:["simplify","parse","evaluate"]};var h8={name:"leafCount",category:"Algebra",syntax:["leafCount(expr)"],description:"Computes the number of leaves in the parse tree of the given expression",examples:['leafCount("e^(i*pi)-1")','leafCount(parse("{a: 22/7, b: 10^(1/2)}"))'],seealso:["simplify"]};var g8={name:"lsolve",category:"Algebra",syntax:["x=lsolve(L, b)"],description:"Finds one solution of the linear system L * x = b where L is an [n x n] lower triangular matrix and b is a [n] column vector.",examples:["a = [-2, 3; 2, 1]","b = [11, 9]","x = lsolve(a, b)"],seealso:["lsolveAll","lup","lusolve","usolve","matrix","sparse"]};var v8={name:"lsolveAll",category:"Algebra",syntax:["x=lsolveAll(L, b)"],description:"Finds all solutions of the linear system L * x = b where L is an [n x n] lower triangular matrix and b is a [n] column vector.",examples:["a = [-2, 3; 2, 1]","b = [11, 9]","x = lsolve(a, b)"],seealso:["lsolve","lup","lusolve","usolve","matrix","sparse"]};var x8={name:"lup",category:"Algebra",syntax:["lup(m)"],description:"Calculate the Matrix LU decomposition with partial pivoting. Matrix A is decomposed in three matrices (L, U, P) where P * A = L * U",examples:["lup([[2, 1], [1, 4]])","lup(matrix([[2, 1], [1, 4]]))","lup(sparse([[2, 1], [1, 4]]))"],seealso:["lusolve","lsolve","usolve","matrix","sparse","slu","qr"]};var y8={name:"lusolve",category:"Algebra",syntax:["x=lusolve(A, b)","x=lusolve(lu, b)"],description:"Solves the linear system A * x = b where A is an [n x n] matrix and b is a [n] column vector.",examples:["a = [-2, 3; 2, 1]","b = [11, 9]","x = lusolve(a, b)"],seealso:["lup","slu","lsolve","usolve","matrix","sparse"]};var w8={name:"polynomialRoot",category:"Algebra",syntax:["x=polynomialRoot(-6, 3)","x=polynomialRoot(4, -4, 1)","x=polynomialRoot(-8, 12, -6, 1)"],description:"Finds the roots of a univariate polynomial given by its coefficients starting from constant, linear, and so on, increasing in degree.",examples:["a = polynomialRoot(-6, 11, -6, 1)"],seealso:["cbrt","sqrt"]};var b8={name:"qr",category:"Algebra",syntax:["qr(A)"],description:"Calculates the Matrix QR decomposition. Matrix `A` is decomposed in two matrices (`Q`, `R`) where `Q` is an orthogonal matrix and `R` is an upper triangular matrix.",examples:["qr([[1, -1, 4], [1, 4, -2], [1, 4, 2], [1, -1, 0]])"],seealso:["lup","slu","matrix"]};var D8={name:"rationalize",category:"Algebra",syntax:["rationalize(expr)","rationalize(expr, scope)","rationalize(expr, scope, detailed)"],description:"Transform a rationalizable expression in a rational fraction. If rational fraction is one variable polynomial then converts the numerator and denominator in canonical form, with decreasing exponents, returning the coefficients of numerator.",examples:['rationalize("2x/y - y/(x+1)")','rationalize("2x/y - y/(x+1)", true)'],seealso:["simplify"]};var S8={name:"resolve",category:"Algebra",syntax:["resolve(node, scope)"],description:"Recursively substitute variables in an expression tree.",examples:['resolve(parse("1 + x"), { x: 7 })','resolve(parse("size(text)"), { text: "Hello World" })','resolve(parse("x + y"), { x: parse("3z") })','resolve(parse("3x"), { x: parse("y+z"), z: parse("w^y") })'],seealso:["simplify","evaluate"],mayThrow:["ReferenceError"]};var N8={name:"simplify",category:"Algebra",syntax:["simplify(expr)","simplify(expr, rules)"],description:"Simplify an expression tree.",examples:['simplify("3 + 2 / 4")','simplify("2x + x")','f = parse("x * (x + 2 + x)")',"simplified = simplify(f)","simplified.evaluate({x: 2})"],seealso:["simplifyCore","derivative","evaluate","parse","rationalize","resolve"]};var E8={name:"simplifyConstant",category:"Algebra",syntax:["simplifyConstant(expr)","simplifyConstant(expr, options)"],description:"Replace constant subexpressions of node with their values.",examples:['simplifyConstant("(3-3)*x")','simplifyConstant(parse("z-cos(tau/8)"))'],seealso:["simplify","simplifyCore","evaluate"]};var A8={name:"simplifyCore",category:"Algebra",syntax:["simplifyCore(node)"],description:"Perform simple one-pass simplifications on an expression tree.",examples:['simplifyCore(parse("0*x"))','simplifyCore(parse("(x+0)*2"))'],seealso:["simplify","simplifyConstant","evaluate"]};var C8={name:"slu",category:"Algebra",syntax:["slu(A, order, threshold)"],description:"Calculate the Matrix LU decomposition with full pivoting. Matrix A is decomposed in two matrices (L, U) and two permutation vectors (pinv, q) where P * A * Q = L * U",examples:["slu(sparse([4.5, 0, 3.2, 0; 3.1, 2.9, 0, 0.9; 0, 1.7, 3, 0; 3.5, 0.4, 0, 1]), 1, 0.001)"],seealso:["lusolve","lsolve","usolve","matrix","sparse","lup","qr"]};var M8={name:"symbolicEqual",category:"Algebra",syntax:["symbolicEqual(expr1, expr2)","symbolicEqual(expr1, expr2, options)"],description:"Returns true if the difference of the expressions simplifies to 0",examples:['symbolicEqual("x*y","y*x")','symbolicEqual("abs(x^2)", "x^2")','symbolicEqual("abs(x)", "x", {context: {abs: {trivial: true}}})'],seealso:["simplify","evaluate"]};var T8={name:"usolve",category:"Algebra",syntax:["x=usolve(U, b)"],description:"Finds one solution of the linear system U * x = b where U is an [n x n] upper triangular matrix and b is a [n] column vector.",examples:["x=usolve(sparse([1, 1, 1, 1; 0, 1, 1, 1; 0, 0, 1, 1; 0, 0, 0, 1]), [1; 2; 3; 4])"],seealso:["usolveAll","lup","lusolve","lsolve","matrix","sparse"]};var _8={name:"usolveAll",category:"Algebra",syntax:["x=usolve(U, b)"],description:"Finds all solutions of the linear system U * x = b where U is an [n x n] upper triangular matrix and b is a [n] column vector.",examples:["x=usolve(sparse([1, 1, 1, 1; 0, 1, 1, 1; 0, 0, 1, 1; 0, 0, 0, 1]), [1; 2; 3; 4])"],seealso:["usolve","lup","lusolve","lsolve","matrix","sparse"]};var O8={name:"abs",category:"Arithmetic",syntax:["abs(x)"],description:"Compute the absolute value.",examples:["abs(3.5)","abs(-4.2)"],seealso:["sign"]};var F8={name:"add",category:"Operators",syntax:["x + y","add(x, y)"],description:"Add two values.",examples:["a = 2.1 + 3.6","a - 3.6","3 + 2i","3 cm + 2 inch",'"2.3" + "4"'],seealso:["subtract"]};var I8={name:"cbrt",category:"Arithmetic",syntax:["cbrt(x)","cbrt(x, allRoots)"],description:"Compute the cubic root value. If x = y * y * y, then y is the cubic root of x. When `x` is a number or complex number, an optional second argument `allRoots` can be provided to return all three cubic roots. If not provided, the principal root is returned",examples:["cbrt(64)","cube(4)","cbrt(-8)","cbrt(2 + 3i)","cbrt(8i)","cbrt(8i, true)","cbrt(27 m^3)"],seealso:["square","sqrt","cube","multiply"]};var k8={name:"ceil",category:"Arithmetic",syntax:["ceil(x)","ceil(x, n)","ceil(unit, valuelessUnit)","ceil(unit, n, valuelessUnit)"],description:"Round a value towards plus infinity. If x is complex, both real and imaginary part are rounded towards plus infinity.",examples:["ceil(3.2)","ceil(3.8)","ceil(-4.2)","ceil(3.241cm, cm)","ceil(3.241cm, 2, cm)"],seealso:["floor","fix","round"]};var L8={name:"cube",category:"Arithmetic",syntax:["cube(x)"],description:"Compute the cube of a value. The cube of x is x * x * x.",examples:["cube(2)","2^3","2 * 2 * 2"],seealso:["multiply","square","pow"]};var B8={name:"divide",category:"Operators",syntax:["x / y","divide(x, y)"],description:"Divide two values.",examples:["a = 2 / 3","a * 3","4.5 / 2","3 + 4 / 2","(3 + 4) / 2","18 km / 4.5"],seealso:["multiply"]};var P8={name:"dotDivide",category:"Operators",syntax:["x ./ y","dotDivide(x, y)"],description:"Divide two values element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","b = [2, 1, 1; 3, 2, 5]","a ./ b"],seealso:["multiply","dotMultiply","divide"]};var R8={name:"dotMultiply",category:"Operators",syntax:["x .* y","dotMultiply(x, y)"],description:"Multiply two values element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","b = [2, 1, 1; 3, 2, 5]","a .* b"],seealso:["multiply","divide","dotDivide"]};var q8={name:"dotPow",category:"Operators",syntax:["x .^ y","dotPow(x, y)"],description:"Calculates the power of x to y element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","a .^ 2"],seealso:["pow"]};var z8={name:"exp",category:"Arithmetic",syntax:["exp(x)"],description:"Calculate the exponent of a value.",examples:["exp(1.3)","e ^ 1.3","log(exp(1.3))","x = 2.4","(exp(i*x) == cos(x) + i*sin(x)) # Euler's formula"],seealso:["expm","expm1","pow","log"]};var U8={name:"expm",category:"Arithmetic",syntax:["exp(x)"],description:"Compute the matrix exponential, expm(A) = e^A. The matrix must be square. Not to be confused with exp(a), which performs element-wise exponentiation.",examples:["expm([[0,2],[0,0]])"],seealso:["exp"]};var H8={name:"expm1",category:"Arithmetic",syntax:["expm1(x)"],description:"Calculate the value of subtracting 1 from the exponential value.",examples:["expm1(2)","pow(e, 2) - 1","log(expm1(2) + 1)"],seealso:["exp","pow","log"]};var $8={name:"fix",category:"Arithmetic",syntax:["fix(x)","fix(x, n)","fix(unit, valuelessUnit)","fix(unit, n, valuelessUnit)"],description:"Round a value towards zero. If x is complex, both real and imaginary part are rounded towards zero.",examples:["fix(3.2)","fix(3.8)","fix(-4.2)","fix(-4.8)","fix(3.241cm, cm)","fix(3.241cm, 2, cm)"],seealso:["ceil","floor","round"]};var W8={name:"floor",category:"Arithmetic",syntax:["floor(x)","floor(x, n)","floor(unit, valuelessUnit)","floor(unit, n, valuelessUnit)"],description:"Round a value towards minus infinity.If x is complex, both real and imaginary part are rounded towards minus infinity.",examples:["floor(3.2)","floor(3.8)","floor(-4.2)","floor(3.241cm, cm)","floor(3.241cm, 2, cm)"],seealso:["ceil","fix","round"]};var V8={name:"gcd",category:"Arithmetic",syntax:["gcd(a, b)","gcd(a, b, c, ...)"],description:"Compute the greatest common divisor.",examples:["gcd(8, 12)","gcd(-4, 6)","gcd(25, 15, -10)"],seealso:["lcm","xgcd"]};var G8={name:"hypot",category:"Arithmetic",syntax:["hypot(a, b, c, ...)","hypot([a, b, c, ...])"],description:"Calculate the hypotenuse of a list with values.",examples:["hypot(3, 4)","sqrt(3^2 + 4^2)","hypot(-2)","hypot([3, 4, 5])"],seealso:["abs","norm"]};var Y8={name:"invmod",category:"Arithmetic",syntax:["invmod(a, b)"],description:"Calculate the (modular) multiplicative inverse of a modulo b. Solution to the equation ax \u2263 1 (mod b)",examples:["invmod(8, 12)","invmod(7, 13)","invmod(15151, 15122)"],seealso:["gcd","xgcd"]};var Z8={name:"lcm",category:"Arithmetic",syntax:["lcm(x, y)"],description:"Compute the least common multiple.",examples:["lcm(4, 6)","lcm(6, 21)","lcm(6, 21, 5)"],seealso:["gcd"]};var X8={name:"log",category:"Arithmetic",syntax:["log(x)","log(x, base)"],description:"Compute the logarithm of a value. If no base is provided, the natural logarithm of x is calculated. If base if provided, the logarithm is calculated for the specified base. log(x, base) is defined as log(x) / log(base).",examples:["log(3.5)","a = log(2.4)","exp(a)","10 ^ 4","log(10000, 10)","log(10000) / log(10)","b = log(1024, 2)","2 ^ b"],seealso:["exp","log1p","log2","log10"]};var K8={name:"log10",category:"Arithmetic",syntax:["log10(x)"],description:"Compute the 10-base logarithm of a value.",examples:["log10(0.00001)","log10(10000)","10 ^ 4","log(10000) / log(10)","log(10000, 10)"],seealso:["exp","log"]};var J8={name:"log1p",category:"Arithmetic",syntax:["log1p(x)","log1p(x, base)"],description:"Calculate the logarithm of a `value+1`",examples:["log1p(2.5)","exp(log1p(1.4))","pow(10, 4)","log1p(9999, 10)","log1p(9999) / log(10)"],seealso:["exp","log","log2","log10"]};var Q8={name:"log2",category:"Arithmetic",syntax:["log2(x)"],description:"Calculate the 2-base of a value. This is the same as calculating `log(x, 2)`.",examples:["log2(0.03125)","log2(16)","log2(16) / log2(2)","pow(2, 4)"],seealso:["exp","log1p","log","log10"]};var j8={name:"mod",category:"Operators",syntax:["x % y","x mod y","mod(x, y)"],description:"Calculates the modulus, the remainder of an integer division.",examples:["7 % 3","11 % 2","10 mod 4","isOdd(x) = x % 2","isOdd(2)","isOdd(3)"],seealso:["divide"]};var eR={name:"multiply",category:"Operators",syntax:["x * y","multiply(x, y)"],description:"multiply two values.",examples:["a = 2.1 * 3.4","a / 3.4","2 * 3 + 4","2 * (3 + 4)","3 * 2.1 km"],seealso:["divide"]};var tR={name:"norm",category:"Arithmetic",syntax:["norm(x)","norm(x, p)"],description:"Calculate the norm of a number, vector or matrix.",examples:["abs(-3.5)","norm(-3.5)","norm(3 - 4i)","norm([1, 2, -3], Infinity)","norm([1, 2, -3], -Infinity)","norm([3, 4], 2)","norm([[1, 2], [3, 4]], 1)",'norm([[1, 2], [3, 4]], "inf")','norm([[1, 2], [3, 4]], "fro")']};var rR={name:"nthRoot",category:"Arithmetic",syntax:["nthRoot(a)","nthRoot(a, root)"],description:'Calculate the nth root of a value. The principal nth root of a positive real number A, is the positive real solution of the equation "x^root = A".',examples:["4 ^ 3","nthRoot(64, 3)","nthRoot(9, 2)","sqrt(9)"],seealso:["nthRoots","pow","sqrt"]};var nR={name:"nthRoots",category:"Arithmetic",syntax:["nthRoots(A)","nthRoots(A, root)"],description:'Calculate the nth roots of a value. An nth root of a positive real number A, is a positive real solution of the equation "x^root = A". This function returns an array of complex values.',examples:["nthRoots(1)","nthRoots(1, 3)"],seealso:["sqrt","pow","nthRoot"]};var iR={name:"pow",category:"Operators",syntax:["x ^ y","pow(x, y)"],description:"Calculates the power of x to y, x^y.",examples:["2^3","2*2*2","1 + e ^ (pi * i)","pow([[1, 2], [4, 3]], 2)","pow([[1, 2], [4, 3]], -1)"],seealso:["multiply","nthRoot","nthRoots","sqrt"]};var oR={name:"round",category:"Arithmetic",syntax:["round(x)","round(x, n)","round(unit, valuelessUnit)","round(unit, n, valuelessUnit)"],description:"round a value towards the nearest integer.If x is complex, both real and imaginary part are rounded towards the nearest integer. When n is specified, the value is rounded to n decimals.",examples:["round(3.2)","round(3.8)","round(-4.2)","round(-4.8)","round(pi, 3)","round(123.45678, 2)","round(3.241cm, 2, cm)","round([3.2, 3.8, -4.7])"],seealso:["ceil","floor","fix"]};var aR={name:"sign",category:"Arithmetic",syntax:["sign(x)"],description:"Compute the sign of a value. The sign of a value x is 1 when x>1, -1 when x<0, and 0 when x=0.",examples:["sign(3.5)","sign(-4.2)","sign(0)"],seealso:["abs"]};var sR={name:"sqrt",category:"Arithmetic",syntax:["sqrt(x)"],description:"Compute the square root value. If x = y * y, then y is the square root of x.",examples:["sqrt(25)","5 * 5","sqrt(-1)"],seealso:["square","sqrtm","multiply","nthRoot","nthRoots","pow"]};var uR={name:"sqrtm",category:"Arithmetic",syntax:["sqrtm(x)"],description:"Calculate the principal square root of a square matrix. The principal square root matrix `X` of another matrix `A` is such that `X * X = A`.",examples:["sqrtm([[33, 24], [48, 57]])"],seealso:["sqrt","abs","square","multiply"]};var lR={name:"sylvester",category:"Algebra",syntax:["sylvester(A,B,C)"],description:"Solves the real-valued Sylvester equation AX+XB=C for X",examples:["sylvester([[-1, -2], [1, 1]], [[-2, 1], [-1, 2]], [[-3, 2], [3, 0]])","A = [[-1, -2], [1, 1]]; B = [[2, -1], [1, -2]]; C = [[-3, 2], [3, 0]]","sylvester(A, B, C)"],seealso:["schur","lyap"]};var fR={name:"schur",category:"Algebra",syntax:["schur(A)"],description:"Performs a real Schur decomposition of the real matrix A = UTU'",examples:["schur([[1, 0], [-4, 3]])","A = [[1, 0], [-4, 3]]","schur(A)"],seealso:["lyap","sylvester"]};var cR={name:"lyap",category:"Algebra",syntax:["lyap(A,Q)"],description:"Solves the Continuous-time Lyapunov equation AP+PA'+Q=0 for P",examples:["lyap([[-2, 0], [1, -4]], [[3, 1], [1, 3]])","A = [[-2, 0], [1, -4]]","Q = [[3, 1], [1, 3]]","lyap(A,Q)"],seealso:["schur","sylvester"]};var pR={name:"square",category:"Arithmetic",syntax:["square(x)"],description:"Compute the square of a value. The square of x is x * x.",examples:["square(3)","sqrt(9)","3^2","3 * 3"],seealso:["multiply","pow","sqrt","cube"]};var mR={name:"subtract",category:"Operators",syntax:["x - y","subtract(x, y)"],description:"subtract two values.",examples:["a = 5.3 - 2","a + 2","2/3 - 1/6","2 * 3 - 3","2.1 km - 500m"],seealso:["add"]};var dR={name:"unaryMinus",category:"Operators",syntax:["-x","unaryMinus(x)"],description:"Inverse the sign of a value. Converts booleans and strings to numbers.",examples:["-4.5","-(-5.6)",'-"22"'],seealso:["add","subtract","unaryPlus"]};var hR={name:"unaryPlus",category:"Operators",syntax:["+x","unaryPlus(x)"],description:"Converts booleans and strings to numbers.",examples:["+true",'+"2"'],seealso:["add","subtract","unaryMinus"]};var gR={name:"xgcd",category:"Arithmetic",syntax:["xgcd(a, b)"],description:"Calculate the extended greatest common divisor for two values. The result is an array [d, x, y] with 3 entries, where d is the greatest common divisor, and d = x * a + y * b.",examples:["xgcd(8, 12)","gcd(8, 12)","xgcd(36163, 21199)"],seealso:["gcd","lcm"]};var vR={name:"bitAnd",category:"Bitwise",syntax:["x & y","bitAnd(x, y)"],description:"Bitwise AND operation. Performs the logical AND operation on each pair of the corresponding bits of the two given values by multiplying them. If both bits in the compared position are 1, the bit in the resulting binary representation is 1, otherwise, the result is 0",examples:["5 & 3","bitAnd(53, 131)","[1, 12, 31] & 42"],seealso:["bitNot","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]};var xR={name:"bitNot",category:"Bitwise",syntax:["~x","bitNot(x)"],description:"Bitwise NOT operation. Performs a logical negation on each bit of the given value. Bits that are 0 become 1, and those that are 1 become 0.",examples:["~1","~2","bitNot([2, -3, 4])"],seealso:["bitAnd","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]};var yR={name:"bitOr",category:"Bitwise",syntax:["x | y","bitOr(x, y)"],description:"Bitwise OR operation. Performs the logical inclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if the first bit is 1 or the second bit is 1 or both bits are 1, otherwise, the result is 0.",examples:["5 | 3","bitOr([1, 2, 3], 4)"],seealso:["bitAnd","bitNot","bitXor","leftShift","rightArithShift","rightLogShift"]};var wR={name:"bitXor",category:"Bitwise",syntax:["bitXor(x, y)"],description:"Bitwise XOR operation, exclusive OR. Performs the logical exclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if only the first bit is 1 or only the second bit is 1, but will be 0 if both are 0 or both are 1.",examples:["bitOr(1, 2)","bitXor([2, 3, 4], 4)"],seealso:["bitAnd","bitNot","bitOr","leftShift","rightArithShift","rightLogShift"]};var bR={name:"leftShift",category:"Bitwise",syntax:["x << y","leftShift(x, y)"],description:"Bitwise left logical shift of a value x by y number of bits.",examples:["4 << 1","8 >> 1"],seealso:["bitAnd","bitNot","bitOr","bitXor","rightArithShift","rightLogShift"]};var DR={name:"rightArithShift",category:"Bitwise",syntax:["x >> y","rightArithShift(x, y)"],description:"Bitwise right arithmetic shift of a value x by y number of bits.",examples:["8 >> 1","4 << 1","-12 >> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightLogShift"]};var SR={name:"rightLogShift",category:"Bitwise",syntax:["x >>> y","rightLogShift(x, y)"],description:"Bitwise right logical shift of a value x by y number of bits.",examples:["8 >>> 1","4 << 1","-12 >>> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightArithShift"]};var NR={name:"bellNumbers",category:"Combinatorics",syntax:["bellNumbers(n)"],description:"The Bell Numbers count the number of partitions of a set. A partition is a pairwise disjoint subset of S whose union is S. `bellNumbers` only takes integer arguments. The following condition must be enforced: n >= 0.",examples:["bellNumbers(3)","bellNumbers(8)"],seealso:["stirlingS2"]};var ER={name:"catalan",category:"Combinatorics",syntax:["catalan(n)"],description:"The Catalan Numbers enumerate combinatorial structures of many different types. catalan only takes integer arguments. The following condition must be enforced: n >= 0.",examples:["catalan(3)","catalan(8)"],seealso:["bellNumbers"]};var AR={name:"composition",category:"Combinatorics",syntax:["composition(n, k)"],description:"The composition counts of n into k parts. composition only takes integer arguments. The following condition must be enforced: k <= n.",examples:["composition(5, 3)"],seealso:["combinations"]};var CR={name:"stirlingS2",category:"Combinatorics",syntax:["stirlingS2(n, k)"],description:"he Stirling numbers of the second kind, counts the number of ways to partition a set of n labelled objects into k nonempty unlabelled subsets. `stirlingS2` only takes integer arguments. The following condition must be enforced: k <= n. If n = k or k = 1, then s(n,k) = 1.",examples:["stirlingS2(5, 3)"],seealso:["bellNumbers"]};var MR={name:"arg",category:"Complex",syntax:["arg(x)"],description:"Compute the argument of a complex value. If x = a+bi, the argument is computed as atan2(b, a).",examples:["arg(2 + 2i)","atan2(3, 2)","arg(2 + 3i)"],seealso:["re","im","conj","abs"]};var TR={name:"conj",category:"Complex",syntax:["conj(x)"],description:"Compute the complex conjugate of a complex value. If x = a+bi, the complex conjugate is a-bi.",examples:["conj(2 + 3i)","conj(2 - 3i)","conj(-5.2i)"],seealso:["re","im","abs","arg"]};var _R={name:"im",category:"Complex",syntax:["im(x)"],description:"Get the imaginary part of a complex number.",examples:["im(2 + 3i)","re(2 + 3i)","im(-5.2i)","im(2.4)"],seealso:["re","conj","abs","arg"]};var OR={name:"re",category:"Complex",syntax:["re(x)"],description:"Get the real part of a complex number.",examples:["re(2 + 3i)","im(2 + 3i)","re(-5.2i)","re(2.4)"],seealso:["im","conj","abs","arg"]};var FR={name:"evaluate",category:"Expression",syntax:["evaluate(expression)","evaluate(expression, scope)","evaluate([expr1, expr2, expr3, ...])","evaluate([expr1, expr2, expr3, ...], scope)"],description:"Evaluate an expression or an array with expressions.",examples:['evaluate("2 + 3")','evaluate("sqrt(16)")','evaluate("2 inch to cm")','evaluate("sin(x * pi)", { "x": 1/2 })','evaluate(["width=2", "height=4","width*height"])'],seealso:[]};var IR={name:"help",category:"Expression",syntax:["help(object)","help(string)"],description:"Display documentation on a function or data type.",examples:["help(sqrt)",'help("complex")'],seealso:[]};var kR={name:"distance",category:"Geometry",syntax:["distance([x1, y1], [x2, y2])","distance([[x1, y1], [x2, y2]])"],description:"Calculates the Euclidean distance between two points.",examples:["distance([0,0], [4,4])","distance([[0,0], [4,4]])"],seealso:[]};var LR={name:"intersect",category:"Geometry",syntax:["intersect(expr1, expr2, expr3, expr4)","intersect(expr1, expr2, expr3)"],description:"Computes the intersection point of lines and/or planes.",examples:["intersect([0, 0], [10, 10], [10, 0], [0, 10])","intersect([1, 0, 1], [4, -2, 2], [1, 1, 1, 6])"],seealso:[]};var BR={name:"and",category:"Logical",syntax:["x and y","and(x, y)"],description:"Logical and. Test whether two values are both defined with a nonzero/nonempty value.",examples:["true and false","true and true","2 and 4"],seealso:["not","or","xor"]};var PR={name:"not",category:"Logical",syntax:["not x","not(x)"],description:"Logical not. Flips the boolean value of given argument.",examples:["not true","not false","not 2","not 0"],seealso:["and","or","xor"]};var RR={name:"or",category:"Logical",syntax:["x or y","or(x, y)"],description:"Logical or. Test if at least one value is defined with a nonzero/nonempty value.",examples:["true or false","false or false","0 or 4"],seealso:["not","and","xor"]};var qR={name:"xor",category:"Logical",syntax:["x xor y","xor(x, y)"],description:"Logical exclusive or, xor. Test whether one and only one value is defined with a nonzero/nonempty value.",examples:["true xor false","false xor false","true xor true","0 xor 4"],seealso:["not","and","or"]};var zR={name:"column",category:"Matrix",syntax:["column(x, index)"],description:"Return a column from a matrix or array.",examples:["A = [[1, 2], [3, 4]]","column(A, 1)","column(A, 2)"],seealso:["row","matrixFromColumns"]};var UR={name:"concat",category:"Matrix",syntax:["concat(A, B, C, ...)","concat(A, B, C, ..., dim)"],description:"Concatenate matrices. By default, the matrices are concatenated by the last dimension. The dimension on which to concatenate can be provided as last argument.",examples:["A = [1, 2; 5, 6]","B = [3, 4; 7, 8]","concat(A, B)","concat(A, B, 1)","concat(A, B, 2)"],seealso:["det","diag","identity","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]};var HR={name:"count",category:"Matrix",syntax:["count(x)"],description:"Count the number of elements of a matrix, array or string.",examples:["a = [1, 2; 3, 4; 5, 6]","count(a)","size(a)",'count("hello world")'],seealso:["size"]};var $R={name:"cross",category:"Matrix",syntax:["cross(A, B)"],description:"Calculate the cross product for two vectors in three dimensional space.",examples:["cross([1, 1, 0], [0, 1, 1])","cross([3, -3, 1], [4, 9, 2])","cross([2, 3, 4], [5, 6, 7])"],seealso:["multiply","dot"]};var WR={name:"ctranspose",category:"Matrix",syntax:["x'","ctranspose(x)"],description:"Complex Conjugate and Transpose a matrix",examples:["a = [1, 2, 3; 4, 5, 6]","a'","ctranspose(a)"],seealso:["concat","det","diag","identity","inv","ones","range","size","squeeze","subset","trace","zeros"]};var VR={name:"det",category:"Matrix",syntax:["det(x)"],description:"Calculate the determinant of a matrix",examples:["det([1, 2; 3, 4])","det([-2, 2, 3; -1, 1, 3; 2, 0, -1])"],seealso:["concat","diag","identity","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]};var GR={name:"diag",category:"Matrix",syntax:["diag(x)","diag(x, k)"],description:"Create a diagonal matrix or retrieve the diagonal of a matrix. When x is a vector, a matrix with the vector values on the diagonal will be returned. When x is a matrix, a vector with the diagonal values of the matrix is returned. When k is provided, the k-th diagonal will be filled in or retrieved, if k is positive, the values are placed on the super diagonal. When k is negative, the values are placed on the sub diagonal.",examples:["diag(1:3)","diag(1:3, 1)","a = [1, 2, 3; 4, 5, 6; 7, 8, 9]","diag(a)"],seealso:["concat","det","identity","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]};var YR={name:"diff",category:"Matrix",syntax:["diff(arr)","diff(arr, dim)"],description:["Create a new matrix or array with the difference of the passed matrix or array.","Dim parameter is optional and used to indicate the dimension of the array/matrix to apply the difference","If no dimension parameter is passed it is assumed as dimension 0","Dimension is zero-based in javascript and one-based in the parser","Arrays must be 'rectangular' meaning arrays like [1, 2]","If something is passed as a matrix it will be returned as a matrix but other than that all matrices are converted to arrays"],examples:["A = [1, 2, 4, 7, 0]","diff(A)","diff(A, 1)","B = [[1, 2], [3, 4]]","diff(B)","diff(B, 1)","diff(B, 2)","diff(B, bignumber(2))","diff([[1, 2], matrix([3, 4])], 2)"],seealso:["subtract","partitionSelect"]};var ZR={name:"dot",category:"Matrix",syntax:["dot(A, B)","A * B"],description:"Calculate the dot product of two vectors. The dot product of A = [a1, a2, a3, ..., an] and B = [b1, b2, b3, ..., bn] is defined as dot(A, B) = a1 * b1 + a2 * b2 + a3 * b3 + ... + an * bn",examples:["dot([2, 4, 1], [2, 2, 3])","[2, 4, 1] * [2, 2, 3]"],seealso:["multiply","cross"]};var XR={name:"eigs",category:"Matrix",syntax:["eigs(x)"],description:"Calculate the eigenvalues and optionally eigenvectors of a square matrix",examples:["eigs([[5, 2.3], [2.3, 1]])","eigs([[1, 2, 3], [4, 5, 6], [7, 8, 9]], { precision: 1e-6, eigenvectors: false })"],seealso:["inv"]};var KR={name:"filter",category:"Matrix",syntax:["filter(x, test)"],description:"Filter items in a matrix.",examples:["isPositive(x) = x > 0","filter([6, -2, -1, 4, 3], isPositive)","filter([6, -2, 0, 1, 0], x != 0)"],seealso:["sort","map","forEach"]};var JR={name:"flatten",category:"Matrix",syntax:["flatten(x)"],description:"Flatten a multi dimensional matrix into a single dimensional matrix.",examples:["a = [1, 2, 3; 4, 5, 6]","size(a)","b = flatten(a)","size(b)"],seealso:["concat","resize","size","squeeze"]};var QR={name:"forEach",category:"Matrix",syntax:["forEach(x, callback)"],description:"Iterates over all elements of a matrix/array, and executes the given callback function.",examples:["numberOfPets = {}","addPet(n) = numberOfPets[n] = (numberOfPets[n] ? numberOfPets[n]:0 ) + 1;",'forEach(["Dog","Cat","Cat"], addPet)',"numberOfPets"],seealso:["map","sort","filter"]};var jR={name:"getMatrixDataType",category:"Matrix",syntax:["getMatrixDataType(x)"],description:'Find the data type of all elements in a matrix or array, for example "number" if all items are a number and "Complex" if all values are complex numbers. If a matrix contains more than one data type, it will return "mixed".',examples:["getMatrixDataType([1, 2, 3])","getMatrixDataType([[5 cm], [2 inch]])",'getMatrixDataType([1, "text"])',"getMatrixDataType([1, bignumber(4)])"],seealso:["matrix","sparse","typeOf"]};var e7={name:"identity",category:"Matrix",syntax:["identity(n)","identity(m, n)","identity([m, n])"],description:"Returns the identity matrix with size m-by-n. The matrix has ones on the diagonal and zeros elsewhere.",examples:["identity(3)","identity(3, 5)","a = [1, 2, 3; 4, 5, 6]","identity(size(a))"],seealso:["concat","det","diag","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]};var t7={name:"inv",category:"Matrix",syntax:["inv(x)"],description:"Calculate the inverse of a matrix",examples:["inv([1, 2; 3, 4])","inv(4)","1 / 4"],seealso:["concat","det","diag","identity","ones","range","size","squeeze","subset","trace","transpose","zeros"]};var r7={name:"pinv",category:"Matrix",syntax:["pinv(x)"],description:"Calculate the Moore\u2013Penrose inverse of a matrix",examples:["pinv([1, 2; 3, 4])","pinv([[1, 0], [0, 1], [0, 1]])","pinv(4)"],seealso:["inv"]};var n7={name:"kron",category:"Matrix",syntax:["kron(x, y)"],description:"Calculates the Kronecker product of 2 matrices or vectors.",examples:["kron([[1, 0], [0, 1]], [[1, 2], [3, 4]])","kron([1,1], [2,3,4])"],seealso:["multiply","dot","cross"]};var i7={name:"map",category:"Matrix",syntax:["map(x, callback)","map(x, y, ..., callback)"],description:"Create a new matrix or array with the results of the callback function executed on each entry of the matrix/array or the matrices/arrays.",examples:["map([1, 2, 3], square)","map([1, 2], [3, 4], f(a,b) = a + b)"],seealso:["filter","forEach"]};var o7={name:"matrixFromColumns",category:"Matrix",syntax:["matrixFromColumns(...arr)","matrixFromColumns(row1, row2)","matrixFromColumns(row1, row2, row3)"],description:"Create a dense matrix from vectors as individual columns.",examples:["matrixFromColumns([1, 2, 3], [[4],[5],[6]])"],seealso:["matrix","matrixFromRows","matrixFromFunction","zeros"]};var a7={name:"matrixFromFunction",category:"Matrix",syntax:["matrixFromFunction(size, fn)","matrixFromFunction(size, fn, format)","matrixFromFunction(size, fn, format, datatype)","matrixFromFunction(size, format, fn)","matrixFromFunction(size, format, datatype, fn)"],description:"Create a matrix by evaluating a generating function at each index.",examples:["f(I) = I[1] - I[2]","matrixFromFunction([3,3], f)","g(I) = I[1] - I[2] == 1 ? 4 : 0",'matrixFromFunction([100, 100], "sparse", g)',"matrixFromFunction([5], random)"],seealso:["matrix","matrixFromRows","matrixFromColumns","zeros"]};var s7={name:"matrixFromRows",category:"Matrix",syntax:["matrixFromRows(...arr)","matrixFromRows(row1, row2)","matrixFromRows(row1, row2, row3)"],description:"Create a dense matrix from vectors as individual rows.",examples:["matrixFromRows([1, 2, 3], [[4],[5],[6]])"],seealso:["matrix","matrixFromColumns","matrixFromFunction","zeros"]};var u7={name:"ones",category:"Matrix",syntax:["ones(m)","ones(m, n)","ones(m, n, p, ...)","ones([m])","ones([m, n])","ones([m, n, p, ...])"],description:"Create a matrix containing ones.",examples:["ones(3)","ones(3, 5)","ones([2,3]) * 4.5","a = [1, 2, 3; 4, 5, 6]","ones(size(a))"],seealso:["concat","det","diag","identity","inv","range","size","squeeze","subset","trace","transpose","zeros"]};var l7={name:"partitionSelect",category:"Matrix",syntax:["partitionSelect(x, k)","partitionSelect(x, k, compare)"],description:"Partition-based selection of an array or 1D matrix. Will find the kth smallest value, and mutates the input array. Uses Quickselect.",examples:["partitionSelect([5, 10, 1], 2)",'partitionSelect(["C", "B", "A", "D"], 1, compareText)',"arr = [5, 2, 1]","partitionSelect(arr, 0) # returns 1, arr is now: [1, 2, 5]","arr","partitionSelect(arr, 1, 'desc') # returns 2, arr is now: [5, 2, 1]","arr"],seealso:["sort"]};var f7={name:"range",category:"Type",syntax:["start:end","start:step:end","range(start, end)","range(start, end, step)","range(string)"],description:"Create a range. Lower bound of the range is included, upper bound is excluded.",examples:["1:5","3:-1:-3","range(3, 7)","range(0, 12, 2)",'range("4:10")',"range(1m, 1m, 3m)","a = [1, 2, 3, 4; 5, 6, 7, 8]","a[1:2, 1:2]"],seealso:["concat","det","diag","identity","inv","ones","size","squeeze","subset","trace","transpose","zeros"]};var c7={name:"reshape",category:"Matrix",syntax:["reshape(x, sizes)"],description:"Reshape a multi dimensional array to fit the specified dimensions.",examples:["reshape([1, 2, 3, 4, 5, 6], [2, 3])","reshape([[1, 2], [3, 4]], [1, 4])","reshape([[1, 2], [3, 4]], [4])","reshape([1, 2, 3, 4], [-1, 2])"],seealso:["size","squeeze","resize"]};var p7={name:"resize",category:"Matrix",syntax:["resize(x, size)","resize(x, size, defaultValue)"],description:"Resize a matrix.",examples:["resize([1,2,3,4,5], [3])","resize([1,2,3], [5])","resize([1,2,3], [5], -1)","resize(2, [2, 3])",'resize("hello", [8], "!")'],seealso:["size","subset","squeeze","reshape"]};var m7={name:"rotate",category:"Matrix",syntax:["rotate(w, theta)","rotate(w, theta, v)"],description:"Returns a 2-D rotation matrix (2x2) for a given angle (in radians). Returns a 2-D rotation matrix (3x3) of a given angle (in radians) around given axis.",examples:["rotate([1, 0], pi / 2)",'rotate(matrix([1, 0]), unit("35deg"))','rotate([1, 0, 0], unit("90deg"), [0, 0, 1])','rotate(matrix([1, 0, 0]), unit("90deg"), matrix([0, 0, 1]))'],seealso:["matrix","rotationMatrix"]};var d7={name:"rotationMatrix",category:"Matrix",syntax:["rotationMatrix(theta)","rotationMatrix(theta, v)","rotationMatrix(theta, v, format)"],description:"Returns a 2-D rotation matrix (2x2) for a given angle (in radians). Returns a 2-D rotation matrix (3x3) of a given angle (in radians) around given axis.",examples:["rotationMatrix(pi / 2)",'rotationMatrix(unit("45deg"), [0, 0, 1])','rotationMatrix(1, matrix([0, 0, 1]), "sparse")'],seealso:["cos","sin"]};var h7={name:"row",category:"Matrix",syntax:["row(x, index)"],description:"Return a row from a matrix or array.",examples:["A = [[1, 2], [3, 4]]","row(A, 1)","row(A, 2)"],seealso:["column","matrixFromRows"]};var g7={name:"size",category:"Matrix",syntax:["size(x)"],description:"Calculate the size of a matrix.",examples:["size(2.3)",'size("hello world")',"a = [1, 2; 3, 4; 5, 6]","size(a)","size(1:6)"],seealso:["concat","count","det","diag","identity","inv","ones","range","squeeze","subset","trace","transpose","zeros"]};var v7={name:"sort",category:"Matrix",syntax:["sort(x)","sort(x, compare)"],description:'Sort the items in a matrix. Compare can be a string "asc", "desc", "natural", or a custom sort function.',examples:["sort([5, 10, 1])",'sort(["C", "B", "A", "D"], "natural")',"sortByLength(a, b) = size(a)[1] - size(b)[1]",'sort(["Langdon", "Tom", "Sara"], sortByLength)','sort(["10", "1", "2"], "natural")'],seealso:["map","filter","forEach"]};var x7={name:"squeeze",category:"Matrix",syntax:["squeeze(x)"],description:"Remove inner and outer singleton dimensions from a matrix.",examples:["a = zeros(3,2,1)","size(squeeze(a))","b = zeros(1,1,3)","size(squeeze(b))"],seealso:["concat","det","diag","identity","inv","ones","range","size","subset","trace","transpose","zeros"]};var y7={name:"subset",category:"Matrix",syntax:["value(index)","value(index) = replacement","subset(value, [index])","subset(value, [index], replacement)"],description:"Get or set a subset of the entries of a matrix or characters of a string. Indexes are one-based. There should be one index specification for each dimension of the target. Each specification can be a single index, a list of indices, or a range in colon notation `l:u`. In a range, both the lower bound l and upper bound u are included; and if a bound is omitted it defaults to the most extreme valid value. The cartesian product of the indices specified in each dimension determines the target of the operation.",examples:["d = [1, 2; 3, 4]","e = []","e[1, 1:2] = [5, 6]","e[2, :] = [7, 8]","f = d * e","f[2, 1]","f[:, 1]","f[[1,2], [1,3]] = [9, 10; 11, 12]","f"],seealso:["concat","det","diag","identity","inv","ones","range","size","squeeze","trace","transpose","zeros"]};var w7={name:"trace",category:"Matrix",syntax:["trace(A)"],description:"Calculate the trace of a matrix: the sum of the elements on the main diagonal of a square matrix.",examples:["A = [1, 2, 3; -1, 2, 3; 2, 0, 3]","trace(A)"],seealso:["concat","det","diag","identity","inv","ones","range","size","squeeze","subset","transpose","zeros"]};var b7={name:"transpose",category:"Matrix",syntax:["x'","transpose(x)"],description:"Transpose a matrix",examples:["a = [1, 2, 3; 4, 5, 6]","a'","transpose(a)"],seealso:["concat","det","diag","identity","inv","ones","range","size","squeeze","subset","trace","zeros"]};var D7={name:"zeros",category:"Matrix",syntax:["zeros(m)","zeros(m, n)","zeros(m, n, p, ...)","zeros([m])","zeros([m, n])","zeros([m, n, p, ...])"],description:"Create a matrix containing zeros.",examples:["zeros(3)","zeros(3, 5)","a = [1, 2, 3; 4, 5, 6]","zeros(size(a))"],seealso:["concat","det","diag","identity","inv","ones","range","size","squeeze","subset","trace","transpose"]};var S7={name:"fft",category:"Matrix",syntax:["fft(x)"],description:"Calculate N-dimensional Fourier transform",examples:["fft([[1, 0], [1, 0]])"],seealso:["ifft"]};var N7={name:"ifft",category:"Matrix",syntax:["ifft(x)"],description:"Calculate N-dimensional inverse Fourier transform",examples:["ifft([[2, 2], [0, 0]])"],seealso:["fft"]};var E7={name:"combinations",category:"Probability",syntax:["combinations(n, k)"],description:"Compute the number of combinations of n items taken k at a time",examples:["combinations(7, 5)"],seealso:["combinationsWithRep","permutations","factorial"]};var A7={name:"combinationsWithRep",category:"Probability",syntax:["combinationsWithRep(n, k)"],description:"Compute the number of combinations of n items taken k at a time with replacements.",examples:["combinationsWithRep(7, 5)"],seealso:["combinations","permutations","factorial"]};var C7={name:"factorial",category:"Probability",syntax:["n!","factorial(n)"],description:"Compute the factorial of a value",examples:["5!","5 * 4 * 3 * 2 * 1","3!"],seealso:["combinations","combinationsWithRep","permutations","gamma"]};var M7={name:"gamma",category:"Probability",syntax:["gamma(n)"],description:"Compute the gamma function. For small values, the Lanczos approximation is used, and for large values the extended Stirling approximation.",examples:["gamma(4)","3!","gamma(1/2)","sqrt(pi)"],seealso:["factorial"]};var T7={name:"lgamma",category:"Probability",syntax:["lgamma(n)"],description:"Logarithm of the gamma function for real, positive numbers and complex numbers, using Lanczos approximation for numbers and Stirling series for complex numbers.",examples:["lgamma(4)","lgamma(1/2)","lgamma(i)","lgamma(complex(1.1, 2))"],seealso:["gamma"]};var _7={name:"kldivergence",category:"Probability",syntax:["kldivergence(x, y)"],description:"Calculate the Kullback-Leibler (KL) divergence between two distributions.",examples:["kldivergence([0.7,0.5,0.4], [0.2,0.9,0.5])"],seealso:[]};var O7={name:"multinomial",category:"Probability",syntax:["multinomial(A)"],description:"Multinomial Coefficients compute the number of ways of picking a1, a2, ..., ai unordered outcomes from `n` possibilities. multinomial takes one array of integers as an argument. The following condition must be enforced: every ai > 0.",examples:["multinomial([1, 2, 1])"],seealso:["combinations","factorial"]};var F7={name:"permutations",category:"Probability",syntax:["permutations(n)","permutations(n, k)"],description:"Compute the number of permutations of n items taken k at a time",examples:["permutations(5)","permutations(5, 3)"],seealso:["combinations","combinationsWithRep","factorial"]};var I7={name:"pickRandom",category:"Probability",syntax:["pickRandom(array)","pickRandom(array, number)","pickRandom(array, weights)","pickRandom(array, number, weights)","pickRandom(array, weights, number)"],description:"Pick a random entry from a given array.",examples:["pickRandom(0:10)","pickRandom([1, 3, 1, 6])","pickRandom([1, 3, 1, 6], 2)","pickRandom([1, 3, 1, 6], [2, 3, 2, 1])","pickRandom([1, 3, 1, 6], 2, [2, 3, 2, 1])","pickRandom([1, 3, 1, 6], [2, 3, 2, 1], 2)"],seealso:["random","randomInt"]};var k7={name:"random",category:"Probability",syntax:["random()","random(max)","random(min, max)","random(size)","random(size, max)","random(size, min, max)"],description:"Return a random number.",examples:["random()","random(10, 20)","random([2, 3])"],seealso:["pickRandom","randomInt"]};var L7={name:"randomInt",category:"Probability",syntax:["randomInt(max)","randomInt(min, max)","randomInt(size)","randomInt(size, max)","randomInt(size, min, max)"],description:"Return a random integer number",examples:["randomInt(10, 20)","randomInt([2, 3], 10)"],seealso:["pickRandom","random"]};var B7={name:"compare",category:"Relational",syntax:["compare(x, y)"],description:"Compare two values. Returns 1 when x > y, -1 when x < y, and 0 when x == y.",examples:["compare(2, 3)","compare(3, 2)","compare(2, 2)","compare(5cm, 40mm)","compare(2, [1, 2, 3])"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compareNatural","compareText"]};var P7={name:"compareNatural",category:"Relational",syntax:["compareNatural(x, y)"],description:"Compare two values of any type in a deterministic, natural way. Returns 1 when x > y, -1 when x < y, and 0 when x == y.",examples:["compareNatural(2, 3)","compareNatural(3, 2)","compareNatural(2, 2)","compareNatural(5cm, 40mm)",'compareNatural("2", "10")',"compareNatural(2 + 3i, 2 + 4i)","compareNatural([1, 2, 4], [1, 2, 3])","compareNatural([1, 5], [1, 2, 3])","compareNatural([1, 2], [1, 2])","compareNatural({a: 2}, {a: 4})"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compare","compareText"]};var R7={name:"compareText",category:"Relational",syntax:["compareText(x, y)"],description:"Compare two strings lexically. Comparison is case sensitive. Returns 1 when x > y, -1 when x < y, and 0 when x == y.",examples:['compareText("B", "A")','compareText("A", "B")','compareText("A", "A")','compareText("2", "10")','compare("2", "10")',"compare(2, 10)",'compareNatural("2", "10")','compareText("B", ["A", "B", "C"])'],seealso:["compare","compareNatural"]};var q7={name:"deepEqual",category:"Relational",syntax:["deepEqual(x, y)"],description:"Check equality of two matrices element wise. Returns true if the size of both matrices is equal and when and each of the elements are equal.",examples:["deepEqual([1,3,4], [1,3,4])","deepEqual([1,3,4], [1,3])"],seealso:["equal","unequal","smaller","larger","smallerEq","largerEq","compare"]};var z7={name:"equal",category:"Relational",syntax:["x == y","equal(x, y)"],description:"Check equality of two values. Returns true if the values are equal, and false if not.",examples:["2+2 == 3","2+2 == 4","a = 3.2","b = 6-2.8","a == b","50cm == 0.5m"],seealso:["unequal","smaller","larger","smallerEq","largerEq","compare","deepEqual","equalText"]};var U7={name:"equalText",category:"Relational",syntax:["equalText(x, y)"],description:"Check equality of two strings. Comparison is case sensitive. Returns true if the values are equal, and false if not.",examples:['equalText("Hello", "Hello")','equalText("a", "A")','equal("2e3", "2000")','equalText("2e3", "2000")','equalText("B", ["A", "B", "C"])'],seealso:["compare","compareNatural","compareText","equal"]};var H7={name:"larger",category:"Relational",syntax:["x > y","larger(x, y)"],description:"Check if value x is larger than y. Returns true if x is larger than y, and false if not.",examples:["2 > 3","5 > 2*2","a = 3.3","b = 6-2.8","(a > b)","(b < a)","5 cm > 2 inch"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compare"]};var $7={name:"largerEq",category:"Relational",syntax:["x >= y","largerEq(x, y)"],description:"Check if value x is larger or equal to y. Returns true if x is larger or equal to y, and false if not.",examples:["2 >= 1+1","2 > 1+1","a = 3.2","b = 6-2.8","(a >= b)"],seealso:["equal","unequal","smallerEq","smaller","compare"]};var W7={name:"smaller",category:"Relational",syntax:["x < y","smaller(x, y)"],description:"Check if value x is smaller than value y. Returns true if x is smaller than y, and false if not.",examples:["2 < 3","5 < 2*2","a = 3.3","b = 6-2.8","(a < b)","5 cm < 2 inch"],seealso:["equal","unequal","larger","smallerEq","largerEq","compare"]};var V7={name:"smallerEq",category:"Relational",syntax:["x <= y","smallerEq(x, y)"],description:"Check if value x is smaller or equal to value y. Returns true if x is smaller than y, and false if not.",examples:["2 <= 1+1","2 < 1+1","a = 3.2","b = 6-2.8","(a <= b)"],seealso:["equal","unequal","larger","smaller","largerEq","compare"]};var G7={name:"unequal",category:"Relational",syntax:["x != y","unequal(x, y)"],description:"Check unequality of two values. Returns true if the values are unequal, and false if they are equal.",examples:["2+2 != 3","2+2 != 4","a = 3.2","b = 6-2.8","a != b","50cm != 0.5m","5 cm != 2 inch"],seealso:["equal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]};var Y7={name:"setCartesian",category:"Set",syntax:["setCartesian(set1, set2)"],description:"Create the cartesian product of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays and the values will be sorted in ascending order before the operation.",examples:["setCartesian([1, 2], [3, 4])"],seealso:["setUnion","setIntersect","setDifference","setPowerset"]};var Z7={name:"setDifference",category:"Set",syntax:["setDifference(set1, set2)"],description:"Create the difference of two (multi)sets: every element of set1, that is not the element of set2. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setDifference([1, 2, 3, 4], [3, 4, 5, 6])","setDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setUnion","setIntersect","setSymDifference"]};var X7={name:"setDistinct",category:"Set",syntax:["setDistinct(set)"],description:"Collect the distinct elements of a multiset. A multi-dimension array will be converted to a single-dimension array before the operation.",examples:["setDistinct([1, 1, 1, 2, 2, 3])"],seealso:["setMultiplicity"]};var K7={name:"setIntersect",category:"Set",syntax:["setIntersect(set1, set2)"],description:"Create the intersection of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setIntersect([1, 2, 3, 4], [3, 4, 5, 6])","setIntersect([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setUnion","setDifference"]};var J7={name:"setIsSubset",category:"Set",syntax:["setIsSubset(set1, set2)"],description:"Check whether a (multi)set is a subset of another (multi)set: every element of set1 is the element of set2. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setIsSubset([1, 2], [3, 4, 5, 6])","setIsSubset([3, 4], [3, 4, 5, 6])"],seealso:["setUnion","setIntersect","setDifference"]};var Q7={name:"setMultiplicity",category:"Set",syntax:["setMultiplicity(element, set)"],description:"Count the multiplicity of an element in a multiset. A multi-dimension array will be converted to a single-dimension array before the operation.",examples:["setMultiplicity(1, [1, 2, 2, 4])","setMultiplicity(2, [1, 2, 2, 4])"],seealso:["setDistinct","setSize"]};var j7={name:"setPowerset",category:"Set",syntax:["setPowerset(set)"],description:"Create the powerset of a (multi)set: the powerset contains very possible subsets of a (multi)set. A multi-dimension array will be converted to a single-dimension array before the operation.",examples:["setPowerset([1, 2, 3])"],seealso:["setCartesian"]};var e9={name:"setSize",category:"Set",syntax:["setSize(set)","setSize(set, unique)"],description:'Count the number of elements of a (multi)set. When the second parameter "unique" is true, count only the unique values. A multi-dimension array will be converted to a single-dimension array before the operation.',examples:["setSize([1, 2, 2, 4])","setSize([1, 2, 2, 4], true)"],seealso:["setUnion","setIntersect","setDifference"]};var t9={name:"setSymDifference",category:"Set",syntax:["setSymDifference(set1, set2)"],description:"Create the symmetric difference of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setSymDifference([1, 2, 3, 4], [3, 4, 5, 6])","setSymDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setUnion","setIntersect","setDifference"]};var r9={name:"setUnion",category:"Set",syntax:["setUnion(set1, set2)"],description:"Create the union of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setUnion([1, 2, 3, 4], [3, 4, 5, 6])","setUnion([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setIntersect","setDifference"]};var n9={name:"zpk2tf",category:"Signal",syntax:["zpk2tf(z, p, k)"],description:"Compute the transfer function of a zero-pole-gain model.",examples:["zpk2tf([1, 2], [-1, -2], 1)","zpk2tf([1, 2], [-1, -2])","zpk2tf([1 - 3i, 2 + 2i], [-1, -2])"],seealso:[]};var i9={name:"freqz",category:"Signal",syntax:["freqz(b, a)","freqz(b, a, w)"],description:"Calculates the frequency response of a filter given its numerator and denominator coefficients.",examples:["freqz([1, 2], [1, 2, 3])","freqz([1, 2], [1, 2, 3], [0, 1])","freqz([1, 2], [1, 2, 3], 512)"],seealso:[]};var o9={name:"erf",category:"Special",syntax:["erf(x)"],description:"Compute the erf function of a value using a rational Chebyshev approximations for different intervals of x",examples:["erf(0.2)","erf(-0.5)","erf(4)"],seealso:[]};var a9={name:"zeta",category:"Special",syntax:["zeta(s)"],description:"Compute the Riemann Zeta Function using an infinite series and Riemann's Functional Equation for the entire complex plane",examples:["zeta(0.2)","zeta(-0.5)","zeta(4)"],seealso:[]};var s9={name:"mad",category:"Statistics",syntax:["mad(a, b, c, ...)","mad(A)"],description:"Compute the median absolute deviation of a matrix or a list with values. The median absolute deviation is defined as the median of the absolute deviations from the median.",examples:["mad(10, 20, 30)","mad([1, 2, 3])"],seealso:["mean","median","std","abs"]};var u9={name:"max",category:"Statistics",syntax:["max(a, b, c, ...)","max(A)","max(A, dimension)"],description:"Compute the maximum value of a list of values.",examples:["max(2, 3, 4, 1)","max([2, 3, 4, 1])","max([2, 5; 4, 3])","max([2, 5; 4, 3], 1)","max([2, 5; 4, 3], 2)","max(2.7, 7.1, -4.5, 2.0, 4.1)","min(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["mean","median","min","prod","std","sum","variance"]};var l9={name:"mean",category:"Statistics",syntax:["mean(a, b, c, ...)","mean(A)","mean(A, dimension)"],description:"Compute the arithmetic mean of a list of values.",examples:["mean(2, 3, 4, 1)","mean([2, 3, 4, 1])","mean([2, 5; 4, 3])","mean([2, 5; 4, 3], 1)","mean([2, 5; 4, 3], 2)","mean([1.0, 2.7, 3.2, 4.0])"],seealso:["max","median","min","prod","std","sum","variance"]};var f9={name:"median",category:"Statistics",syntax:["median(a, b, c, ...)","median(A)"],description:"Compute the median of all values. The values are sorted and the middle value is returned. In case of an even number of values, the average of the two middle values is returned.",examples:["median(5, 2, 7)","median([3, -1, 5, 7])"],seealso:["max","mean","min","prod","std","sum","variance","quantileSeq"]};var c9={name:"min",category:"Statistics",syntax:["min(a, b, c, ...)","min(A)","min(A, dimension)"],description:"Compute the minimum value of a list of values.",examples:["min(2, 3, 4, 1)","min([2, 3, 4, 1])","min([2, 5; 4, 3])","min([2, 5; 4, 3], 1)","min([2, 5; 4, 3], 2)","min(2.7, 7.1, -4.5, 2.0, 4.1)","max(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["max","mean","median","prod","std","sum","variance"]};var p9={name:"mode",category:"Statistics",syntax:["mode(a, b, c, ...)","mode(A)","mode(A, a, b, B, c, ...)"],description:"Computes the mode of all values as an array. In case mode being more than one, multiple values are returned in an array.",examples:["mode(2, 1, 4, 3, 1)","mode([1, 2.7, 3.2, 4, 2.7])","mode(1, 4, 6, 1, 6)"],seealso:["max","mean","min","median","prod","std","sum","variance"]};var m9={name:"prod",category:"Statistics",syntax:["prod(a, b, c, ...)","prod(A)"],description:"Compute the product of all values.",examples:["prod(2, 3, 4)","prod([2, 3, 4])","prod([2, 5; 4, 3])"],seealso:["max","mean","min","median","min","std","sum","variance"]};var d9={name:"quantileSeq",category:"Statistics",syntax:["quantileSeq(A, prob[, sorted])","quantileSeq(A, [prob1, prob2, ...][, sorted])","quantileSeq(A, N[, sorted])"],description:`Compute the prob order quantile of a matrix or a list with values. The sequence is sorted and the middle value is returned. Supported types of sequence values are: Number, BigNumber, Unit Supported types of probability are: Number, BigNumber. -In case of a (multi dimensional) array or matrix, the prob order quantile of all elements will be calculated.`,examples:["quantileSeq([3, -1, 5, 7], 0.5)","quantileSeq([3, -1, 5, 7], [1/3, 2/3])","quantileSeq([3, -1, 5, 7], 2)","quantileSeq([-1, 3, 5, 7], 0.5, true)"],seealso:["mean","median","min","max","prod","std","sum","variance"]};var u9={name:"std",category:"Statistics",syntax:["std(a, b, c, ...)","std(A)","std(A, dimension)","std(A, normalization)","std(A, dimension, normalization)"],description:'Compute the standard deviation of all values, defined as std(A) = sqrt(variance(A)). Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["std(2, 4, 6)","std([2, 4, 6, 8])",'std([2, 4, 6, 8], "uncorrected")','std([2, 4, 6, 8], "biased")',"std([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","prod","sum","variance"]};var l9={name:"cumsum",category:"Statistics",syntax:["cumsum(a, b, c, ...)","cumsum(A)"],description:"Compute the cumulative sum of all values.",examples:["cumsum(2, 3, 4, 1)","cumsum([2, 3, 4, 1])","cumsum([1, 2; 3, 4])","cumsum([1, 2; 3, 4], 1)","cumsum([1, 2; 3, 4], 2)"],seealso:["max","mean","median","min","prod","std","sum","variance"]};var f9={name:"sum",category:"Statistics",syntax:["sum(a, b, c, ...)","sum(A)","sum(A, dimension)"],description:"Compute the sum of all values.",examples:["sum(2, 3, 4, 1)","sum([2, 3, 4, 1])","sum([2, 5; 4, 3])"],seealso:["max","mean","median","min","prod","std","sum","variance"]};var c9={name:"variance",category:"Statistics",syntax:["variance(a, b, c, ...)","variance(A)","variance(A, dimension)","variance(A, normalization)","variance(A, dimension, normalization)"],description:'Compute the variance of all values. Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["variance(2, 4, 6)","variance([2, 4, 6, 8])",'variance([2, 4, 6, 8], "uncorrected")','variance([2, 4, 6, 8], "biased")',"variance([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","min","prod","std","sum"]};var p9={name:"corr",category:"Statistics",syntax:["corr(A,B)"],description:"Compute the correlation coefficient of a two list with values, For matrices, the matrix correlation coefficient is calculated.",examples:["corr([2, 4, 6, 8],[1, 2, 3, 6])","corr(matrix([[1, 2.2, 3, 4.8, 5], [1, 2, 3, 4, 5]]), matrix([[4, 5.3, 6.6, 7, 8], [1, 2, 3, 4, 5]]))"],seealso:["max","mean","min","median","min","prod","std","sum"]};var m9={name:"acos",category:"Trigonometry",syntax:["acos(x)"],description:"Compute the inverse cosine of a value in radians.",examples:["acos(0.5)","acos(cos(2.3))"],seealso:["cos","atan","asin"]};var d9={name:"acosh",category:"Trigonometry",syntax:["acosh(x)"],description:"Calculate the hyperbolic arccos of a value, defined as `acosh(x) = ln(sqrt(x^2 - 1) + x)`.",examples:["acosh(1.5)"],seealso:["cosh","asinh","atanh"]};var h9={name:"acot",category:"Trigonometry",syntax:["acot(x)"],description:"Calculate the inverse cotangent of a value.",examples:["acot(0.5)","acot(cot(0.5))","acot(2)"],seealso:["cot","atan"]};var g9={name:"acoth",category:"Trigonometry",syntax:["acoth(x)"],description:"Calculate the inverse hyperbolic tangent of a value, defined as `acoth(x) = (ln((x+1)/x) + ln(x/(x-1))) / 2`.",examples:["acoth(2)","acoth(0.5)"],seealso:["acsch","asech"]};var v9={name:"acsc",category:"Trigonometry",syntax:["acsc(x)"],description:"Calculate the inverse cotangent of a value.",examples:["acsc(2)","acsc(csc(0.5))","acsc(0.5)"],seealso:["csc","asin","asec"]};var x9={name:"acsch",category:"Trigonometry",syntax:["acsch(x)"],description:"Calculate the inverse hyperbolic cosecant of a value, defined as `acsch(x) = ln(1/x + sqrt(1/x^2 + 1))`.",examples:["acsch(0.5)"],seealso:["asech","acoth"]};var y9={name:"asec",category:"Trigonometry",syntax:["asec(x)"],description:"Calculate the inverse secant of a value.",examples:["asec(0.5)","asec(sec(0.5))","asec(2)"],seealso:["acos","acot","acsc"]};var w9={name:"asech",category:"Trigonometry",syntax:["asech(x)"],description:"Calculate the inverse secant of a value.",examples:["asech(0.5)"],seealso:["acsch","acoth"]};var b9={name:"asin",category:"Trigonometry",syntax:["asin(x)"],description:"Compute the inverse sine of a value in radians.",examples:["asin(0.5)","asin(sin(0.5))"],seealso:["sin","acos","atan"]};var D9={name:"asinh",category:"Trigonometry",syntax:["asinh(x)"],description:"Calculate the hyperbolic arcsine of a value, defined as `asinh(x) = ln(x + sqrt(x^2 + 1))`.",examples:["asinh(0.5)"],seealso:["acosh","atanh"]};var S9={name:"atan",category:"Trigonometry",syntax:["atan(x)"],description:"Compute the inverse tangent of a value in radians.",examples:["atan(0.5)","atan(tan(0.5))"],seealso:["tan","acos","asin"]};var N9={name:"atan2",category:"Trigonometry",syntax:["atan2(y, x)"],description:"Computes the principal value of the arc tangent of y/x in radians.",examples:["atan2(2, 2) / pi","angle = 60 deg in rad","x = cos(angle)","y = sin(angle)","atan2(y, x)"],seealso:["sin","cos","tan"]};var E9={name:"atanh",category:"Trigonometry",syntax:["atanh(x)"],description:"Calculate the hyperbolic arctangent of a value, defined as `atanh(x) = ln((1 + x)/(1 - x)) / 2`.",examples:["atanh(0.5)"],seealso:["acosh","asinh"]};var A9={name:"cos",category:"Trigonometry",syntax:["cos(x)"],description:"Compute the cosine of x in radians.",examples:["cos(2)","cos(pi / 4) ^ 2","cos(180 deg)","cos(60 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["acos","sin","tan"]};var C9={name:"cosh",category:"Trigonometry",syntax:["cosh(x)"],description:"Compute the hyperbolic cosine of x in radians.",examples:["cosh(0.5)"],seealso:["sinh","tanh","coth"]};var M9={name:"cot",category:"Trigonometry",syntax:["cot(x)"],description:"Compute the cotangent of x in radians. Defined as 1/tan(x)",examples:["cot(2)","1 / tan(2)"],seealso:["sec","csc","tan"]};var T9={name:"coth",category:"Trigonometry",syntax:["coth(x)"],description:"Compute the hyperbolic cotangent of x in radians.",examples:["coth(2)","1 / tanh(2)"],seealso:["sech","csch","tanh"]};var _9={name:"csc",category:"Trigonometry",syntax:["csc(x)"],description:"Compute the cosecant of x in radians. Defined as 1/sin(x)",examples:["csc(2)","1 / sin(2)"],seealso:["sec","cot","sin"]};var O9={name:"csch",category:"Trigonometry",syntax:["csch(x)"],description:"Compute the hyperbolic cosecant of x in radians. Defined as 1/sinh(x)",examples:["csch(2)","1 / sinh(2)"],seealso:["sech","coth","sinh"]};var F9={name:"sec",category:"Trigonometry",syntax:["sec(x)"],description:"Compute the secant of x in radians. Defined as 1/cos(x)",examples:["sec(2)","1 / cos(2)"],seealso:["cot","csc","cos"]};var I9={name:"sech",category:"Trigonometry",syntax:["sech(x)"],description:"Compute the hyperbolic secant of x in radians. Defined as 1/cosh(x)",examples:["sech(2)","1 / cosh(2)"],seealso:["coth","csch","cosh"]};var k9={name:"sin",category:"Trigonometry",syntax:["sin(x)"],description:"Compute the sine of x in radians.",examples:["sin(2)","sin(pi / 4) ^ 2","sin(90 deg)","sin(30 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["asin","cos","tan"]};var L9={name:"sinh",category:"Trigonometry",syntax:["sinh(x)"],description:"Compute the hyperbolic sine of x in radians.",examples:["sinh(0.5)"],seealso:["cosh","tanh"]};var B9={name:"tan",category:"Trigonometry",syntax:["tan(x)"],description:"Compute the tangent of x in radians.",examples:["tan(0.5)","sin(0.5) / cos(0.5)","tan(pi / 4)","tan(45 deg)"],seealso:["atan","sin","cos"]};var P9={name:"tanh",category:"Trigonometry",syntax:["tanh(x)"],description:"Compute the hyperbolic tangent of x in radians.",examples:["tanh(0.5)","sinh(0.5) / cosh(0.5)"],seealso:["sinh","cosh"]};var R9={name:"to",category:"Units",syntax:["x to unit","to(x, unit)"],description:"Change the unit of a value.",examples:["5 inch to cm","3.2kg to g","16 bytes in bits"],seealso:[]};var q9={name:"bin",category:"Utils",syntax:["bin(value)"],description:"Format a number as binary",examples:["bin(2)"],seealso:["oct","hex"]};var z9={name:"clone",category:"Utils",syntax:["clone(x)"],description:"Clone a variable. Creates a copy of primitive variables, and a deep copy of matrices",examples:["clone(3.5)","clone(2 - 4i)","clone(45 deg)","clone([1, 2; 3, 4])",'clone("hello world")'],seealso:[]};var U9={name:"format",category:"Utils",syntax:["format(value)","format(value, precision)"],description:"Format a value of any type as string.",examples:["format(2.3)","format(3 - 4i)","format([])","format(pi, 3)"],seealso:["print"]};var H9={name:"hasNumericValue",category:"Utils",syntax:["hasNumericValue(x)"],description:"Test whether a value is an numeric value. In case of a string, true is returned if the string contains a numeric value.",examples:["hasNumericValue(2)",'hasNumericValue("2")','isNumeric("2")',"hasNumericValue(0)","hasNumericValue(bignumber(500))","hasNumericValue(fraction(0.125))","hasNumericValue(2 + 3i)",'hasNumericValue([2.3, "foo", false])'],seealso:["isInteger","isZero","isNegative","isPositive","isNaN","isNumeric"]};var $9={name:"hex",category:"Utils",syntax:["hex(value)"],description:"Format a number as hexadecimal",examples:["hex(240)"],seealso:["bin","oct"]};var W9={name:"isInteger",category:"Utils",syntax:["isInteger(x)"],description:"Test whether a value is an integer number.",examples:["isInteger(2)","isInteger(3.5)","isInteger([3, 0.5, -2])"],seealso:["isNegative","isNumeric","isPositive","isZero"]};var V9={name:"isNaN",category:"Utils",syntax:["isNaN(x)"],description:"Test whether a value is NaN (not a number)",examples:["isNaN(2)","isNaN(0 / 0)","isNaN(NaN)","isNaN(Infinity)"],seealso:["isNegative","isNumeric","isPositive","isZero"]};var G9={name:"isNegative",category:"Utils",syntax:["isNegative(x)"],description:"Test whether a value is negative: smaller than zero.",examples:["isNegative(2)","isNegative(0)","isNegative(-4)","isNegative([3, 0.5, -2])"],seealso:["isInteger","isNumeric","isPositive","isZero"]};var Y9={name:"isNumeric",category:"Utils",syntax:["isNumeric(x)"],description:"Test whether a value is a numeric value. Returns true when the input is a number, BigNumber, Fraction, or boolean.",examples:["isNumeric(2)",'isNumeric("2")','hasNumericValue("2")',"isNumeric(0)","isNumeric(bignumber(500))","isNumeric(fraction(0.125))","isNumeric(2 + 3i)",'isNumeric([2.3, "foo", false])'],seealso:["isInteger","isZero","isNegative","isPositive","isNaN","hasNumericValue"]};var Z9={name:"isPositive",category:"Utils",syntax:["isPositive(x)"],description:"Test whether a value is positive: larger than zero.",examples:["isPositive(2)","isPositive(0)","isPositive(-4)","isPositive([3, 0.5, -2])"],seealso:["isInteger","isNumeric","isNegative","isZero"]};var X9={name:"isPrime",category:"Utils",syntax:["isPrime(x)"],description:"Test whether a value is prime: has no divisors other than itself and one.",examples:["isPrime(3)","isPrime(-2)","isPrime([2, 17, 100])"],seealso:["isInteger","isNumeric","isNegative","isZero"]};var K9={name:"isZero",category:"Utils",syntax:["isZero(x)"],description:"Test whether a value is zero.",examples:["isZero(2)","isZero(0)","isZero(-4)","isZero([3, 0, -2, 0])"],seealso:["isInteger","isNumeric","isNegative","isPositive"]};var J9={name:"numeric",category:"Utils",syntax:["numeric(x)"],description:"Convert a numeric input to a specific numeric type: number, BigNumber, bigint, or Fraction.",examples:['numeric("4")','numeric("4", "number")','numeric("4", "bigint")','numeric("4", "BigNumber")','numeric("4", "Fraction")','numeric(4, "Fraction")','numeric(fraction(2, 5), "number")'],seealso:["number","bigint","fraction","bignumber","string","format"]};var Q9={name:"oct",category:"Utils",syntax:["oct(value)"],description:"Format a number as octal",examples:["oct(56)"],seealso:["bin","hex"]};var j9={name:"print",category:"Utils",syntax:["print(template, values)","print(template, values, precision)"],description:"Interpolate values into a string template.",examples:['print("Lucy is $age years old", {age: 5})','print("The value of pi is $pi", {pi: pi}, 3)','print("Hello, $user.name!", {user: {name: "John"}})','print("Values: $1, $2, $3", [6, 9, 4])'],seealso:["format"]};var eq={name:"typeOf",category:"Utils",syntax:["typeOf(x)"],description:"Get the type of a variable.",examples:["typeOf(3.5)","typeOf(2 - 4i)","typeOf(45 deg)",'typeOf("hello world")'],seealso:["getMatrixDataType"]};var tq={name:"solveODE",category:"Numeric",syntax:["solveODE(func, tspan, y0)","solveODE(func, tspan, y0, options)"],description:"Numerical Integration of Ordinary Differential Equations.",examples:["f(t,y) = y","tspan = [0, 4]","solveODE(f, tspan, 1)","solveODE(f, tspan, [1, 2])",'solveODE(f, tspan, 1, { method:"RK23", maxStep:0.1 })'],seealso:["derivative","simplifyCore"]};var rq={bignumber:V6,bigint:G6,boolean:Y6,complex:Z6,createUnit:X6,fraction:K6,index:J6,matrix:Q6,number:j6,sparse:e8,splitUnit:t8,string:r8,unit:n8,e:vC,E:vC,false:_6,i:O6,Infinity:F6,LN2:k6,LN10:I6,LOG2E:B6,LOG10E:L6,NaN:P6,null:R6,pi:xC,PI:xC,phi:q6,SQRT1_2:z6,SQRT2:U6,tau:H6,true:$6,version:W6,speedOfLight:{description:"Speed of light in vacuum",examples:["speedOfLight"]},gravitationConstant:{description:"Newtonian constant of gravitation",examples:["gravitationConstant"]},planckConstant:{description:"Planck constant",examples:["planckConstant"]},reducedPlanckConstant:{description:"Reduced Planck constant",examples:["reducedPlanckConstant"]},magneticConstant:{description:"Magnetic constant (vacuum permeability)",examples:["magneticConstant"]},electricConstant:{description:"Electric constant (vacuum permeability)",examples:["electricConstant"]},vacuumImpedance:{description:"Characteristic impedance of vacuum",examples:["vacuumImpedance"]},coulomb:{description:"Coulomb's constant",examples:["coulomb"]},elementaryCharge:{description:"Elementary charge",examples:["elementaryCharge"]},bohrMagneton:{description:"Bohr magneton",examples:["bohrMagneton"]},conductanceQuantum:{description:"Conductance quantum",examples:["conductanceQuantum"]},inverseConductanceQuantum:{description:"Inverse conductance quantum",examples:["inverseConductanceQuantum"]},magneticFluxQuantum:{description:"Magnetic flux quantum",examples:["magneticFluxQuantum"]},nuclearMagneton:{description:"Nuclear magneton",examples:["nuclearMagneton"]},klitzing:{description:"Von Klitzing constant",examples:["klitzing"]},bohrRadius:{description:"Bohr radius",examples:["bohrRadius"]},classicalElectronRadius:{description:"Classical electron radius",examples:["classicalElectronRadius"]},electronMass:{description:"Electron mass",examples:["electronMass"]},fermiCoupling:{description:"Fermi coupling constant",examples:["fermiCoupling"]},fineStructure:{description:"Fine-structure constant",examples:["fineStructure"]},hartreeEnergy:{description:"Hartree energy",examples:["hartreeEnergy"]},protonMass:{description:"Proton mass",examples:["protonMass"]},deuteronMass:{description:"Deuteron Mass",examples:["deuteronMass"]},neutronMass:{description:"Neutron mass",examples:["neutronMass"]},quantumOfCirculation:{description:"Quantum of circulation",examples:["quantumOfCirculation"]},rydberg:{description:"Rydberg constant",examples:["rydberg"]},thomsonCrossSection:{description:"Thomson cross section",examples:["thomsonCrossSection"]},weakMixingAngle:{description:"Weak mixing angle",examples:["weakMixingAngle"]},efimovFactor:{description:"Efimov factor",examples:["efimovFactor"]},atomicMass:{description:"Atomic mass constant",examples:["atomicMass"]},avogadro:{description:"Avogadro's number",examples:["avogadro"]},boltzmann:{description:"Boltzmann constant",examples:["boltzmann"]},faraday:{description:"Faraday constant",examples:["faraday"]},firstRadiation:{description:"First radiation constant",examples:["firstRadiation"]},loschmidt:{description:"Loschmidt constant at T=273.15 K and p=101.325 kPa",examples:["loschmidt"]},gasConstant:{description:"Gas constant",examples:["gasConstant"]},molarPlanckConstant:{description:"Molar Planck constant",examples:["molarPlanckConstant"]},molarVolume:{description:"Molar volume of an ideal gas at T=273.15 K and p=101.325 kPa",examples:["molarVolume"]},sackurTetrode:{description:"Sackur-Tetrode constant at T=1 K and p=101.325 kPa",examples:["sackurTetrode"]},secondRadiation:{description:"Second radiation constant",examples:["secondRadiation"]},stefanBoltzmann:{description:"Stefan-Boltzmann constant",examples:["stefanBoltzmann"]},wienDisplacement:{description:"Wien displacement law constant",examples:["wienDisplacement"]},molarMass:{description:"Molar mass constant",examples:["molarMass"]},molarMassC12:{description:"Molar mass constant of carbon-12",examples:["molarMassC12"]},gravity:{description:"Standard acceleration of gravity (standard acceleration of free-fall on Earth)",examples:["gravity"]},planckLength:{description:"Planck length",examples:["planckLength"]},planckMass:{description:"Planck mass",examples:["planckMass"]},planckTime:{description:"Planck time",examples:["planckTime"]},planckCharge:{description:"Planck charge",examples:["planckCharge"]},planckTemperature:{description:"Planck temperature",examples:["planckTemperature"]},derivative:s8,lsolve:l8,lsolveAll:f8,lup:c8,lusolve:p8,leafCount:u8,polynomialRoot:m8,resolve:g8,simplify:v8,simplifyConstant:x8,simplifyCore:y8,symbolicEqual:b8,rationalize:h8,slu:w8,usolve:D8,usolveAll:S8,qr:d8,abs:N8,add:E8,cbrt:A8,ceil:C8,cube:M8,divide:T8,dotDivide:_8,dotMultiply:O8,dotPow:F8,exp:I8,expm:k8,expm1:L8,fix:B8,floor:P8,gcd:R8,hypot:q8,lcm:U8,log:H8,log2:V8,log1p:W8,log10:$8,mod:G8,multiply:Y8,norm:Z8,nthRoot:X8,nthRoots:K8,pow:J8,round:Q8,sign:j8,sqrt:eR,sqrtm:tR,square:oR,subtract:aR,unaryMinus:sR,unaryPlus:uR,xgcd:lR,invmod:z8,bitAnd:fR,bitNot:cR,bitOr:pR,bitXor:mR,leftShift:dR,rightArithShift:hR,rightLogShift:gR,bellNumbers:vR,catalan:xR,composition:yR,stirlingS2:wR,config:i8,import:o8,typed:a8,arg:bR,conj:DR,re:NR,im:SR,evaluate:ER,help:AR,distance:CR,intersect:MR,and:TR,not:_R,or:OR,xor:FR,concat:kR,count:LR,cross:BR,column:IR,ctranspose:PR,det:RR,diag:qR,diff:zR,dot:UR,getMatrixDataType:GR,identity:YR,filter:$R,flatten:WR,forEach:VR,inv:ZR,pinv:XR,eigs:HR,kron:KR,matrixFromFunction:jR,matrixFromRows:e7,matrixFromColumns:QR,map:JR,ones:t7,partitionSelect:r7,range:n7,resize:o7,reshape:i7,rotate:a7,rotationMatrix:s7,row:u7,size:l7,sort:f7,squeeze:c7,subset:p7,trace:m7,transpose:d7,zeros:h7,fft:g7,ifft:v7,sylvester:rR,schur:nR,lyap:iR,solveODE:tq,combinations:x7,combinationsWithRep:y7,factorial:w7,gamma:b7,kldivergence:S7,lgamma:D7,multinomial:N7,permutations:E7,pickRandom:A7,random:C7,randomInt:M7,compare:T7,compareNatural:_7,compareText:O7,deepEqual:F7,equal:I7,equalText:k7,larger:L7,largerEq:B7,smaller:P7,smallerEq:R7,unequal:q7,setCartesian:z7,setDifference:U7,setDistinct:H7,setIntersect:$7,setIsSubset:W7,setMultiplicity:V7,setPowerset:G7,setSize:Y7,setSymDifference:Z7,setUnion:X7,zpk2tf:K7,freqz:J7,erf:Q7,zeta:j7,cumsum:l9,mad:e9,max:t9,mean:r9,median:n9,min:i9,mode:o9,prod:a9,quantileSeq:s9,std:u9,sum:f9,variance:c9,corr:p9,acos:m9,acosh:d9,acot:h9,acoth:g9,acsc:v9,acsch:x9,asec:y9,asech:w9,asin:b9,asinh:D9,atan:S9,atanh:E9,atan2:N9,cos:A9,cosh:C9,cot:M9,coth:T9,csc:_9,csch:O9,sec:F9,sech:I9,sin:k9,sinh:L9,tan:B9,tanh:P9,to:R9,clone:z9,format:U9,bin:q9,oct:Q9,hex:$9,isNaN:V9,isInteger:W9,isNegative:G9,isNumeric:Y9,hasNumericValue:H9,isPositive:Z9,isPrime:X9,isZero:K9,print:j9,typeOf:eq,numeric:J9};var nq="help",fce=["typed","mathWithTransform","Help"],iq=$(nq,fce,e=>{var{typed:t,mathWithTransform:r,Help:n}=e;return t(nq,{any:function(o){var l,s=o;if(typeof o!="string"){for(l in r)if(xt(r,l)&&o===r[l]){s=l;break}}var a=nn(rq,s);if(!a){var u=typeof s=="function"?s.name:s;throw new Error('No documentation found on "'+u+'"')}return new n(a)}})});var oq="chain",cce=["typed","Chain"],aq=$(oq,cce,e=>{var{typed:t,Chain:r}=e;return t(oq,{"":function(){return new r},any:function(i){return new r(i)}})});var sq="det",pce=["typed","matrix","subtractScalar","multiply","divideScalar","isZero","unaryMinus"],uq=$(sq,pce,e=>{var{typed:t,matrix:r,subtractScalar:n,multiply:i,divideScalar:o,isZero:l,unaryMinus:s}=e;return t(sq,{any:function(f){return _t(f)},"Array | Matrix":function(f){var p;switch(yt(f)?p=f.size():Array.isArray(f)?(f=r(f),p=f.size()):p=[],p.length){case 0:return _t(f);case 1:if(p[0]===1)return _t(f.valueOf()[0]);if(p[0]===0)return 1;throw new RangeError("Matrix must be square (size: "+Ht(p)+")");case 2:{var h=p[0],g=p[1];if(h===g)return a(f.clone().valueOf(),h,g);if(g===0)return 1;throw new RangeError("Matrix must be square (size: "+Ht(p)+")")}default:throw new RangeError("Matrix must be two dimensional (size: "+Ht(p)+")")}}});function a(u,f,p){if(f===1)return _t(u[0][0]);if(f===2)return n(i(u[0][0],u[1][1]),i(u[1][0],u[0][1]));for(var h=!1,g=new Array(f).fill(0).map((O,F)=>F),x=0;x{var{typed:t,matrix:r,divideScalar:n,addScalar:i,multiply:o,unaryMinus:l,det:s,identity:a,abs:u}=e;return t(lq,{"Array | Matrix":function(h){var g=yt(h)?h.size():Ft(h);switch(g.length){case 1:if(g[0]===1)return yt(h)?r([n(1,h.valueOf()[0])]):[n(1,h[0])];throw new RangeError("Matrix must be square (size: "+Ht(g)+")");case 2:{var x=g[0],v=g[1];if(x===v)return yt(h)?r(f(h.valueOf(),x,v),h.storage()):f(h,x,v);throw new RangeError("Matrix must be square (size: "+Ht(g)+")")}default:throw new RangeError("Matrix must be two dimensional (size: "+Ht(g)+")")}},any:function(h){return n(1,h)}});function f(p,h,g){var x,v,S,D,C;if(h===1){if(D=p[0][0],D===0)throw Error("Cannot calculate inverse, determinant is zero");return[[n(1,D)]]}else if(h===2){var E=s(p);if(E===0)throw Error("Cannot calculate inverse, determinant is zero");return[[n(p[1][1],E),n(l(p[0][1]),E)],[n(l(p[1][0]),E),n(p[0][0],E)]]}else{var M=p.concat();for(x=0;xO&&(O=u(M[x][N]),F=x),x++;if(O===0)throw Error("Cannot calculate inverse, determinant is zero");x=F,x!==N&&(C=M[N],M[N]=M[x],M[x]=C,C=T[N],T[N]=T[x],T[x]=C);var I=M[N],B=T[N];for(x=0;x{var{typed:t,matrix:r,inv:n,deepEqual:i,equal:o,dotDivide:l,dot:s,ctranspose:a,divideScalar:u,multiply:f,add:p,Complex:h}=e;return t(cq,{"Array | Matrix":function(E){var M=yt(E)?E.size():Ft(E);switch(M.length){case 1:return D(E)?a(E):M[0]===1?n(E):l(a(E),s(E,E));case 2:{if(D(E))return a(E);var T=M[0],N=M[1];if(T===N)try{return n(E)}catch(O){if(!(O instanceof Error&&O.message.match(/Cannot calculate inverse, determinant is zero/)))throw O}return yt(E)?r(g(E.valueOf(),T,N),E.storage()):g(E,T,N)}default:throw new RangeError("Matrix must be two dimensional (size: "+Ht(M)+")")}},any:function(E){return o(E,0)?_t(E):u(1,E)}});function g(C,E,M){var{C:T,F:N}=v(C,E,M),O=f(n(f(a(T),T)),a(T)),F=f(a(N),n(f(N,a(N))));return f(F,O)}function x(C,E,M){for(var T=_t(C),N=0,O=0;OF.filter((B,L)=>L!S(s(T[I],T[I])));return{C:N,F:O}}function S(C){return o(p(C,h(1,1)),p(0,h(1,1)))}function D(C){return i(p(C,h(1,1)),p(f(C,0),h(1,1)))}});function mq(e){var{addScalar:t,subtract:r,flatten:n,multiply:i,multiplyScalar:o,divideScalar:l,sqrt:s,abs:a,bignumber:u,diag:f,size:p,reshape:h,inv:g,qr:x,usolve:v,usolveAll:S,equal:D,complex:C,larger:E,smaller:M,matrixFromColumns:T,dot:N}=e;function O(de,ne,ve,Te){var De=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,se=F(de,ne,ve,Te,De);I(de,ne,ve,Te,De,se);var{values:le,C:oe}=B(de,ne,ve,Te,De);if(De){var we=L(de,ne,oe,se,le,ve,Te);return{values:le,eigenvectors:we}}return{values:le}}function F(de,ne,ve,Te,De){var se=Te==="BigNumber",le=Te==="Complex",oe=se?u(0):0,we=se?u(1):le?C(1):1,Ce=se?u(1):1,he=se?u(10):2,Pe=o(he,he),Ze;De&&(Ze=Array(ne).fill(we));for(var ie=!1;!ie;){ie=!0;for(var fe=0;fe1&&(ie=f(Array(he-1).fill(oe)))),he-=1,we.pop();for(var ct=0;ct2&&(ie=f(Array(he-2).fill(oe)))),he-=2,we.pop(),we.pop();for(var At=0;At+r(a(fr),a(qt))),fe>100){var zt=Error("The eigenvalues failed to converge. Only found these eigenvalues: "+Ce.join(", "));throw zt.values=Ce,zt.vectors=[],zt}var mt=De?i(Ze,X(Pe,ne)):void 0;return{values:Ce,C:mt}}function L(de,ne,ve,Te,De,se,le){var oe=g(ve),we=i(oe,de,ve),Ce=le==="BigNumber",he=le==="Complex",Pe=Ce?u(0):he?C(0):0,Ze=Ce?u(1):he?C(1):1,ie=[],fe=[];for(var Oe of De){var Me=U(ie,Oe,D);Me===-1?(ie.push(Oe),fe.push(1)):fe[Me]+=1}for(var Je=[],$e=ie.length,it=Array(ne).fill(Pe),ct=f(Array(ne).fill(Ze)),rt=function(){var mt=ie[At],fr=r(we,i(mt,ct)),qt=S(fr,it);for(qt.shift();qt.lengthi(te,ge)),Je.push(...qt.map(ge=>({value:mt,vector:n(ge)})))},At=0;At<$e;At++)rt();return Je}function q(de,ne,ve,Te){var De=t(de,Te),se=r(o(de,Te),o(ne,ve)),le=o(De,.5),oe=o(s(r(o(De,De),o(4,se))),.5);return[t(le,oe),r(le,oe)]}function R(de,ne,ve,Te,De,se,le,oe){var we=oe==="BigNumber",Ce=oe==="Complex",he=we?u(0):Ce?C(0):0,Pe=we?u(1):Ce?C(1):1;if(M(a(ve),le))return[[Pe,he],[he,Pe]];if(E(a(r(De,se)),le))return[[r(De,Te),r(se,Te)],[ve,ve]];var Ze=r(de,De),ie=r(Te,De);return M(a(ne),le)&&M(a(ie),le)?[[Ze,Pe],[ve,he]]:[[ne,he],[ie,Pe]]}function V(de,ne){for(var ve=0;ve=5)return null;for(oe=0;;){var we=v(de,le);if(M(ce(Z(le,[we])),Te))break;if(++oe>=10)return null;le=be(we)}return le}function ee(de,ne,ve){var Te=ve==="BigNumber",De=ve==="Complex",se=Array(de).fill(0).map(le=>2*Math.random()-1);return Te&&(se=se.map(le=>u(le))),De&&(se=se.map(le=>C(le))),se=Z(se,ne),be(se,ve)}function Z(de,ne){var ve=p(de);for(var Te of ne)Te=h(Te,ve),de=r(de,i(l(N(Te,de),N(Te,Te)),Te));return de}function ce(de){return a(s(N(de,de)))}function be(de,ne){var ve=ne==="BigNumber",Te=ne==="Complex",De=ve?u(1):Te?C(1):1;return i(l(De,ce(de)),de)}return O}function dq(e){var{config:t,addScalar:r,subtract:n,abs:i,atan:o,cos:l,sin:s,multiplyScalar:a,inv:u,bignumber:f,multiply:p,add:h}=e;function g(I,B){var L=arguments.length>2&&arguments[2]!==void 0?arguments[2]:t.relTol,q=arguments.length>3?arguments[3]:void 0,R=arguments.length>4?arguments[4]:void 0;if(q==="number")return x(I,L,R);if(q==="BigNumber")return v(I,L,R);throw TypeError("Unsupported data type: "+q)}function x(I,B,L){var q=I.length,R=Math.abs(B/q),V,X;if(L){X=new Array(q);for(var U=0;U=Math.abs(R);){var ee=H[0][0],Z=H[0][1];V=S(I[ee][ee],I[Z][Z],I[ee][Z]),I=T(I,V,ee,Z),L&&(X=C(X,V,ee,Z)),H=N(I)}for(var ce=Array(q).fill(0),be=0;be=i(R);){var ee=H[0][0],Z=H[0][1];V=D(I[ee][ee],I[Z][Z],I[ee][Z]),I=M(I,V,ee,Z),L&&(X=E(X,V,ee,Z)),H=O(I)}for(var ce=Array(q).fill(0),be=0;be({value:R[ne],vector:de}));return{values:R,eigenvectors:be}}return g}var hce="eigs",gce=["config","typed","matrix","addScalar","equal","subtract","abs","atan","cos","sin","multiplyScalar","divideScalar","inv","bignumber","multiply","add","larger","column","flatten","number","complex","sqrt","diag","size","reshape","qr","usolve","usolveAll","im","re","smaller","matrixFromColumns","dot"],hq=$(hce,gce,e=>{var{config:t,typed:r,matrix:n,addScalar:i,subtract:o,equal:l,abs:s,atan:a,cos:u,sin:f,multiplyScalar:p,divideScalar:h,inv:g,bignumber:x,multiply:v,add:S,larger:D,column:C,flatten:E,number:M,complex:T,sqrt:N,diag:O,size:F,reshape:I,qr:B,usolve:L,usolveAll:q,im:R,re:V,smaller:X,matrixFromColumns:U,dot:H}=e,ee=dq({config:t,addScalar:i,subtract:o,column:C,flatten:E,equal:l,abs:s,atan:a,cos:u,sin:f,multiplyScalar:p,inv:g,bignumber:x,complex:T,multiply:v,add:S}),Z=mq({config:t,addScalar:i,subtract:o,multiply:v,multiplyScalar:p,flatten:E,divideScalar:h,sqrt:N,abs:s,bignumber:x,diag:O,size:F,reshape:I,qr:B,inv:g,usolve:L,usolveAll:q,equal:l,complex:T,larger:D,smaller:X,matrixFromColumns:U,dot:H});return r("eigs",{Array:function(se){return ce(n(se))},"Array, number|BigNumber":function(se,le){return ce(n(se),{precision:le})},"Array, Object"(De,se){return ce(n(De),se)},Matrix:function(se){return ce(se,{matricize:!0})},"Matrix, number|BigNumber":function(se,le){return ce(se,{precision:le,matricize:!0})},"Matrix, Object":function(se,le){var oe={matricize:!0};return Wn(oe,le),ce(se,oe)}});function ce(De){var se,le=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},oe="eigenvectors"in le?le.eigenvectors:!0,we=(se=le.precision)!==null&&se!==void 0?se:t.relTol,Ce=be(De,we,oe);return le.matricize&&(Ce.values=n(Ce.values),oe&&(Ce.eigenvectors=Ce.eigenvectors.map(he=>{var{value:Pe,vector:Ze}=he;return{value:Pe,vector:n(Ze)}}))),oe&&Object.defineProperty(Ce,"vectors",{enumerable:!1,get:()=>{throw new Error("eigs(M).vectors replaced with eigs(M).eigenvectors")}}),Ce}function be(De,se,le){var oe=De.toArray(),we=De.size();if(we.length!==2||we[0]!==we[1])throw new RangeError("Matrix must be square (size: ".concat(Ht(we),")"));var Ce=we[0];if(ne(oe,Ce,se)&&(ve(oe,Ce),de(oe,Ce,se))){var he=Te(De,oe,Ce);return ee(oe,Ce,se,he,le)}var Pe=Te(De,oe,Ce);return Z(oe,Ce,se,Pe,le)}function de(De,se,le){for(var oe=0;oe{var{typed:t,abs:r,add:n,identity:i,inv:o,multiply:l}=e;return t(gq,{Matrix:function(p){var h=p.size();if(h.length!==2||h[0]!==h[1])throw new RangeError("Matrix must be square (size: "+Ht(h)+")");for(var g=h[0],x=1e-15,v=s(p),S=a(v,x),D=S.q,C=S.j,E=l(p,Math.pow(2,-C)),M=i(g),T=i(g),N=1,O=E,F=-1,I=1;I<=D;I++)I>1&&(O=l(O,E),F=-F),N=N*(D-I+1)/((2*D-I+1)*I),M=n(M,l(N,O)),T=n(T,l(N*F,O));for(var B=l(o(T),M),L=0;L{var{typed:t,abs:r,add:n,multiply:i,map:o,sqrt:l,subtract:s,inv:a,size:u,max:f,identity:p}=e,h=1e3,g=1e-6;function x(v){var S,D=0,C=v,E=p(u(v));do{var M=C;if(C=i(.5,n(M,a(E))),E=i(.5,n(E,a(M))),S=f(r(s(C,M))),S>g&&++D>h)throw new Error("computing square root of matrix: iterative method could not converge")}while(S>g);return C}return t(xq,{"Array | Matrix":function(S){var D=yt(S)?S.size():Ft(S);switch(D.length){case 1:if(D[0]===1)return o(S,l);throw new RangeError("Matrix must be square (size: "+Ht(D)+")");case 2:{var C=D[0],E=D[1];if(C===E)return x(S);throw new RangeError("Matrix must be square (size: "+Ht(D)+")")}default:throw new RangeError("Matrix must be at most two dimensional (size: "+Ht(D)+")")}}})});var wq="sylvester",yce=["typed","schur","matrixFromColumns","matrix","multiply","range","concat","transpose","index","subset","add","subtract","identity","lusolve","abs"],bq=$(wq,yce,e=>{var{typed:t,schur:r,matrixFromColumns:n,matrix:i,multiply:o,range:l,concat:s,transpose:a,index:u,subset:f,add:p,subtract:h,identity:g,lusolve:x,abs:v}=e;return t(wq,{"Matrix, Matrix, Matrix":S,"Array, Matrix, Matrix":function(C,E,M){return S(i(C),E,M)},"Array, Array, Matrix":function(C,E,M){return S(i(C),i(E),M)},"Array, Matrix, Array":function(C,E,M){return S(i(C),E,i(M))},"Matrix, Array, Matrix":function(C,E,M){return S(C,i(E),M)},"Matrix, Array, Array":function(C,E,M){return S(C,i(E),i(M))},"Matrix, Matrix, Array":function(C,E,M){return S(C,E,i(M))},"Array, Array, Array":function(C,E,M){return S(i(C),i(E),i(M)).toArray()}});function S(D,C,E){for(var M=C.size()[0],T=D.size()[0],N=r(D),O=N.T,F=N.U,I=r(o(-1,C)),B=I.T,L=I.U,q=o(o(a(F),E),L),R=l(0,T),V=[],X=(he,Pe)=>s(he,Pe,1),U=(he,Pe)=>s(he,Pe,0),H=0;H1e-5){for(var ee=U(f(q,u(R,H)),f(q,u(R,H+1))),Z=0;Z{var{typed:t,matrix:r,identity:n,multiply:i,qr:o,norm:l,subtract:s}=e;return t(Dq,{Array:function(f){var p=a(r(f));return{U:p.U.valueOf(),T:p.T.valueOf()}},Matrix:function(f){return a(f)}});function a(u){var f=u.size()[0],p=u,h=n(f),g=0,x;do{x=p;var v=o(p),S=v.Q,D=v.R;if(p=i(D,S),h=i(h,S),g++>100)break}while(l(s(p,x))>1e-4);return{U:h,T:p}}});var Nq="lyap",bce=["typed","matrix","sylvester","multiply","transpose"],Eq=$(Nq,bce,e=>{var{typed:t,matrix:r,sylvester:n,multiply:i,transpose:o}=e;return t(Nq,{"Matrix, Matrix":function(s,a){return n(s,o(s),i(-1,a))},"Array, Matrix":function(s,a){return n(r(s),o(r(s)),i(-1,a))},"Matrix, Array":function(s,a){return n(s,o(r(s)),r(i(-1,a)))},"Array, Array":function(s,a){return n(r(s),o(r(s)),r(i(-1,a))).toArray()}})});var Dce="divide",Sce=["typed","matrix","multiply","equalScalar","divideScalar","inv"],Aq=$(Dce,Sce,e=>{var{typed:t,matrix:r,multiply:n,equalScalar:i,divideScalar:o,inv:l}=e,s=Or({typed:t,equalScalar:i}),a=Vn({typed:t});return t("divide",R1({"Array | Matrix, Array | Matrix":function(f,p){return n(f,l(p))},"DenseMatrix, any":function(f,p){return a(f,p,o,!1)},"SparseMatrix, any":function(f,p){return s(f,p,o,!1)},"Array, any":function(f,p){return a(r(f),p,o,!1).valueOf()},"any, Array | Matrix":function(f,p){return n(f,l(p))}},o.signatures))});var Cq="distance",Nce=["typed","addScalar","subtractScalar","divideScalar","multiplyScalar","deepEqual","sqrt","abs"],Mq=$(Cq,Nce,e=>{var{typed:t,addScalar:r,subtractScalar:n,multiplyScalar:i,divideScalar:o,deepEqual:l,sqrt:s,abs:a}=e;return t(Cq,{"Array, Array, Array":function(T,N,O){if(T.length===2&&N.length===2&&O.length===2){if(!f(T))throw new TypeError("Array with 2 numbers or BigNumbers expected for first argument");if(!f(N))throw new TypeError("Array with 2 numbers or BigNumbers expected for second argument");if(!f(O))throw new TypeError("Array with 2 numbers or BigNumbers expected for third argument");if(l(N,O))throw new TypeError("LinePoint1 should not be same with LinePoint2");var F=n(O[1],N[1]),I=n(N[0],O[0]),B=n(i(O[0],N[1]),i(N[0],O[1]));return S(T[0],T[1],F,I,B)}else throw new TypeError("Invalid Arguments: Try again")},"Object, Object, Object":function(T,N,O){if(Object.keys(T).length===2&&Object.keys(N).length===2&&Object.keys(O).length===2){if(!f(T))throw new TypeError("Values of pointX and pointY should be numbers or BigNumbers");if(!f(N))throw new TypeError("Values of lineOnePtX and lineOnePtY should be numbers or BigNumbers");if(!f(O))throw new TypeError("Values of lineTwoPtX and lineTwoPtY should be numbers or BigNumbers");if(l(x(N),x(O)))throw new TypeError("LinePoint1 should not be same with LinePoint2");if("pointX"in T&&"pointY"in T&&"lineOnePtX"in N&&"lineOnePtY"in N&&"lineTwoPtX"in O&&"lineTwoPtY"in O){var F=n(O.lineTwoPtY,N.lineOnePtY),I=n(N.lineOnePtX,O.lineTwoPtX),B=n(i(O.lineTwoPtX,N.lineOnePtY),i(N.lineOnePtX,O.lineTwoPtY));return S(T.pointX,T.pointY,F,I,B)}else throw new TypeError("Key names do not match")}else throw new TypeError("Invalid Arguments: Try again")},"Array, Array":function(T,N){if(T.length===2&&N.length===3){if(!f(T))throw new TypeError("Array with 2 numbers or BigNumbers expected for first argument");if(!p(N))throw new TypeError("Array with 3 numbers or BigNumbers expected for second argument");return S(T[0],T[1],N[0],N[1],N[2])}else if(T.length===3&&N.length===6){if(!p(T))throw new TypeError("Array with 3 numbers or BigNumbers expected for first argument");if(!g(N))throw new TypeError("Array with 6 numbers or BigNumbers expected for second argument");return D(T[0],T[1],T[2],N[0],N[1],N[2],N[3],N[4],N[5])}else if(T.length===N.length&&T.length>0){if(!h(T))throw new TypeError("All values of an array should be numbers or BigNumbers");if(!h(N))throw new TypeError("All values of an array should be numbers or BigNumbers");return C(T,N)}else throw new TypeError("Invalid Arguments: Try again")},"Object, Object":function(T,N){if(Object.keys(T).length===2&&Object.keys(N).length===3){if(!f(T))throw new TypeError("Values of pointX and pointY should be numbers or BigNumbers");if(!p(N))throw new TypeError("Values of xCoeffLine, yCoeffLine and constant should be numbers or BigNumbers");if("pointX"in T&&"pointY"in T&&"xCoeffLine"in N&&"yCoeffLine"in N&&"constant"in N)return S(T.pointX,T.pointY,N.xCoeffLine,N.yCoeffLine,N.constant);throw new TypeError("Key names do not match")}else if(Object.keys(T).length===3&&Object.keys(N).length===6){if(!p(T))throw new TypeError("Values of pointX, pointY and pointZ should be numbers or BigNumbers");if(!g(N))throw new TypeError("Values of x0, y0, z0, a, b and c should be numbers or BigNumbers");if("pointX"in T&&"pointY"in T&&"x0"in N&&"y0"in N&&"z0"in N&&"a"in N&&"b"in N&&"c"in N)return D(T.pointX,T.pointY,T.pointZ,N.x0,N.y0,N.z0,N.a,N.b,N.c);throw new TypeError("Key names do not match")}else if(Object.keys(T).length===2&&Object.keys(N).length===2){if(!f(T))throw new TypeError("Values of pointOneX and pointOneY should be numbers or BigNumbers");if(!f(N))throw new TypeError("Values of pointTwoX and pointTwoY should be numbers or BigNumbers");if("pointOneX"in T&&"pointOneY"in T&&"pointTwoX"in N&&"pointTwoY"in N)return C([T.pointOneX,T.pointOneY],[N.pointTwoX,N.pointTwoY]);throw new TypeError("Key names do not match")}else if(Object.keys(T).length===3&&Object.keys(N).length===3){if(!p(T))throw new TypeError("Values of pointOneX, pointOneY and pointOneZ should be numbers or BigNumbers");if(!p(N))throw new TypeError("Values of pointTwoX, pointTwoY and pointTwoZ should be numbers or BigNumbers");if("pointOneX"in T&&"pointOneY"in T&&"pointOneZ"in T&&"pointTwoX"in N&&"pointTwoY"in N&&"pointTwoZ"in N)return C([T.pointOneX,T.pointOneY,T.pointOneZ],[N.pointTwoX,N.pointTwoY,N.pointTwoZ]);throw new TypeError("Key names do not match")}else throw new TypeError("Invalid Arguments: Try again")},Array:function(T){if(!v(T))throw new TypeError("Incorrect array format entered for pairwise distance calculation");return E(T)}});function u(M){return typeof M=="number"||Nt(M)}function f(M){return M.constructor!==Array&&(M=x(M)),u(M[0])&&u(M[1])}function p(M){return M.constructor!==Array&&(M=x(M)),u(M[0])&&u(M[1])&&u(M[2])}function h(M){return Array.isArray(M)||(M=x(M)),M.every(u)}function g(M){return M.constructor!==Array&&(M=x(M)),u(M[0])&&u(M[1])&&u(M[2])&&u(M[3])&&u(M[4])&&u(M[5])}function x(M){for(var T=Object.keys(M),N=[],O=0;OT.length!==2||!u(T[0])||!u(T[1])))return!1}else if(M[0].length===3&&u(M[0][0])&&u(M[0][1])&&u(M[0][2])){if(M.some(T=>T.length!==3||!u(T[0])||!u(T[1])||!u(T[2])))return!1}else return!1;return!0}function S(M,T,N,O,F){var I=a(r(r(i(N,M),i(O,T)),F)),B=s(r(i(N,N),i(O,O)));return o(I,B)}function D(M,T,N,O,F,I,B,L,q){var R=[n(i(n(F,T),q),i(n(I,N),L)),n(i(n(I,N),B),i(n(O,M),q)),n(i(n(O,M),L),i(n(F,T),B))];R=s(r(r(i(R[0],R[0]),i(R[1],R[1])),i(R[2],R[2])));var V=s(r(r(i(B,B),i(L,L)),i(q,q)));return o(R,V)}function C(M,T){for(var N=M.length,O=0,F=0,I=0;I{var{typed:t,config:r,abs:n,add:i,addScalar:o,matrix:l,multiply:s,multiplyScalar:a,divideScalar:u,subtract:f,smaller:p,equalScalar:h,flatten:g,isZero:x,isNumeric:v}=e;return t("intersect",{"Array, Array, Array":S,"Array, Array, Array, Array":D,"Matrix, Matrix, Matrix":function(L,q,R){var V=S(L.valueOf(),q.valueOf(),R.valueOf());return V===null?null:l(V)},"Matrix, Matrix, Matrix, Matrix":function(L,q,R,V){var X=D(L.valueOf(),q.valueOf(),R.valueOf(),V.valueOf());return X===null?null:l(X)}});function S(B,L,q){if(B=C(B),L=C(L),q=C(q),!M(B))throw new TypeError("Array with 3 numbers or BigNumbers expected for first argument");if(!M(L))throw new TypeError("Array with 3 numbers or BigNumbers expected for second argument");if(!T(q))throw new TypeError("Array with 4 numbers expected as third argument");return I(B[0],B[1],B[2],L[0],L[1],L[2],q[0],q[1],q[2],q[3])}function D(B,L,q,R){if(B=C(B),L=C(L),q=C(q),R=C(R),B.length===2){if(!E(B))throw new TypeError("Array with 2 numbers or BigNumbers expected for first argument");if(!E(L))throw new TypeError("Array with 2 numbers or BigNumbers expected for second argument");if(!E(q))throw new TypeError("Array with 2 numbers or BigNumbers expected for third argument");if(!E(R))throw new TypeError("Array with 2 numbers or BigNumbers expected for fourth argument");return N(B,L,q,R)}else if(B.length===3){if(!M(B))throw new TypeError("Array with 3 numbers or BigNumbers expected for first argument");if(!M(L))throw new TypeError("Array with 3 numbers or BigNumbers expected for second argument");if(!M(q))throw new TypeError("Array with 3 numbers or BigNumbers expected for third argument");if(!M(R))throw new TypeError("Array with 3 numbers or BigNumbers expected for fourth argument");return F(B[0],B[1],B[2],L[0],L[1],L[2],q[0],q[1],q[2],R[0],R[1],R[2])}else throw new TypeError("Arrays with two or thee dimensional points expected")}function C(B){return B.length===1?B[0]:B.length>1&&Array.isArray(B[0])&&B.every(L=>Array.isArray(L)&&L.length===1)?g(B):B}function E(B){return B.length===2&&v(B[0])&&v(B[1])}function M(B){return B.length===3&&v(B[0])&&v(B[1])&&v(B[2])}function T(B){return B.length===4&&v(B[0])&&v(B[1])&&v(B[2])&&v(B[3])}function N(B,L,q,R){var V=B,X=q,U=f(V,L),H=f(X,R),ee=f(a(U[0],H[1]),a(H[0],U[1]));if(x(ee)||p(n(ee),r.relTol))return null;var Z=a(H[0],V[1]),ce=a(H[1],V[0]),be=a(H[0],X[1]),de=a(H[1],X[0]),ne=u(o(f(f(Z,ce),be),de),ee);return i(s(U,ne),V)}function O(B,L,q,R,V,X,U,H,ee,Z,ce,be){var de=a(f(B,L),f(q,R)),ne=a(f(V,X),f(U,H)),ve=a(f(ee,Z),f(ce,be));return o(o(de,ne),ve)}function F(B,L,q,R,V,X,U,H,ee,Z,ce,be){var de=O(B,U,Z,U,L,H,ce,H,q,ee,be,ee),ne=O(Z,U,R,B,ce,H,V,L,be,ee,X,q),ve=O(B,U,R,B,L,H,V,L,q,ee,X,q),Te=O(Z,U,Z,U,ce,H,ce,H,be,ee,be,ee),De=O(R,B,R,B,V,L,V,L,X,q,X,q),se=f(a(de,ne),a(ve,Te)),le=f(a(De,Te),a(ne,ne));if(x(le))return null;var oe=u(se,le),we=u(o(de,a(oe,ne)),Te),Ce=o(B,a(oe,f(R,B))),he=o(L,a(oe,f(V,L))),Pe=o(q,a(oe,f(X,q))),Ze=o(U,a(we,f(Z,U))),ie=o(H,a(we,f(ce,H))),fe=o(ee,a(we,f(be,ee)));return h(Ce,Ze)&&h(he,ie)&&h(Pe,fe)?[Ce,he,Pe]:null}function I(B,L,q,R,V,X,U,H,ee,Z){var ce=a(B,U),be=a(R,U),de=a(L,H),ne=a(V,H),ve=a(q,ee),Te=a(X,ee),De=f(f(f(Z,ce),de),ve),se=f(f(f(o(o(be,ne),Te),ce),de),ve),le=u(De,se),oe=o(B,a(le,f(R,B))),we=o(L,a(le,f(V,L))),Ce=o(q,a(le,f(X,q)));return[oe,we,Ce]}});var _q="sum",Cce=["typed","config","add","numeric"],cb=$(_q,Cce,e=>{var{typed:t,config:r,add:n,numeric:i}=e;return t(_q,{"Array | Matrix":o,"Array | Matrix, number | BigNumber":l,"...":function(a){if(Ka(a))throw new TypeError("Scalar values expected in function sum");return o(a)}});function o(s){var a;return lo(s,function(u){try{a=a===void 0?u:n(a,u)}catch(f){throw Nn(f,"sum",u)}}),a===void 0&&(a=i(0,r.number)),typeof a=="string"&&(a=i(a,ao(a,r))),a}function l(s,a){try{var u=Hf(s,a,n);return u}catch(f){throw Nn(f,"sum")}}});var pb="cumsum",Mce=["typed","add","unaryPlus"],mb=$(pb,Mce,e=>{var{typed:t,add:r,unaryPlus:n}=e;return t(pb,{Array:i,Matrix:function(u){return u.create(i(u.valueOf(),u.datatype()))},"Array, number | BigNumber":l,"Matrix, number | BigNumber":function(u,f){return u.create(l(u.valueOf(),f),u.datatype())},"...":function(u){if(Ka(u))throw new TypeError("All values expected to be scalar in function cumsum");return i(u)}});function i(a){try{return o(a)}catch(u){throw Nn(u,pb)}}function o(a){if(a.length===0)return[];for(var u=[n(a[0])],f=1;f=f.length)throw new bi(u,f.length);try{return s(a,u)}catch(p){throw Nn(p,pb)}}function s(a,u){var f,p,h;if(u<=0){var g=a[0][0];if(Array.isArray(g)){for(h=iw(a),p=[],f=0;f{var{typed:t,add:r,divide:n}=e;return t(Oq,{"Array | Matrix":o,"Array | Matrix, number | BigNumber":i,"...":function(s){if(Ka(s))throw new TypeError("Scalar values expected in function mean");return o(s)}});function i(l,s){try{var a=Hf(l,s,r),u=Array.isArray(l)?Ft(l):l.size();return n(a,u[s])}catch(f){throw Nn(f,"mean")}}function o(l){var s,a=0;if(lo(l,function(u){try{s=s===void 0?u:r(s,u),a++}catch(f){throw Nn(f,"mean",u)}}),a===0)throw new Error("Cannot calculate the mean of an empty array");return n(s,a)}});var Fq="median",_ce=["typed","add","divide","compare","partitionSelect"],Iq=$(Fq,_ce,e=>{var{typed:t,add:r,divide:n,compare:i,partitionSelect:o}=e;function l(u){try{u=jt(u.valueOf());var f=u.length;if(f===0)throw new Error("Cannot calculate median of an empty array");if(f%2===0){for(var p=f/2-1,h=o(u,p+1),g=u[p],x=0;x0&&(g=u[x]);return a(g,h)}else{var v=o(u,(f-1)/2);return s(v)}}catch(S){throw Nn(S,"median")}}var s=t({"number | BigNumber | Complex | Unit":function(f){return f}}),a=t({"number | BigNumber | Complex | Unit, number | BigNumber | Complex | Unit":function(f,p){return n(r(f,p),2)}});return t(Fq,{"Array | Matrix":l,"Array | Matrix, number | BigNumber":function(f,p){throw new Error("median(A, dim) is not yet supported")},"...":function(f){if(Ka(f))throw new TypeError("Scalar values expected in function median");return l(f)}})});var kq="mad",Oce=["typed","abs","map","median","subtract"],Lq=$(kq,Oce,e=>{var{typed:t,abs:r,map:n,median:i,subtract:o}=e;return t(kq,{"Array | Matrix":l,"...":function(a){return l(a)}});function l(s){if(s=jt(s.valueOf()),s.length===0)throw new Error("Cannot calculate median absolute deviation (mad) of an empty array");try{var a=i(s);return i(n(s,function(u){return r(o(u,a))}))}catch(u){throw u instanceof TypeError&&u.message.includes("median")?new TypeError(u.message.replace("median","mad")):Nn(u,"mad")}}});var yC="unbiased",Bq="variance",Fce=["typed","add","subtract","multiply","divide","apply","isNaN"],hb=$(Bq,Fce,e=>{var{typed:t,add:r,subtract:n,multiply:i,divide:o,apply:l,isNaN:s}=e;return t(Bq,{"Array | Matrix":function(p){return a(p,yC)},"Array | Matrix, string":a,"Array | Matrix, number | BigNumber":function(p,h){return u(p,h,yC)},"Array | Matrix, number | BigNumber, string":u,"...":function(p){return a(p,yC)}});function a(f,p){var h,g=0;if(f.length===0)throw new SyntaxError("Function variance requires one or more parameters (0 provided)");if(lo(f,function(S){try{h=h===void 0?S:r(h,S),g++}catch(D){throw Nn(D,"variance",S)}}),g===0)throw new Error("Cannot calculate variance of an empty array");var x=o(h,g);if(h=void 0,lo(f,function(S){var D=n(S,x);h=h===void 0?i(D,D):r(h,i(D,D))}),s(h))return h;switch(p){case"uncorrected":return o(h,g);case"biased":return o(h,g+1);case"unbiased":{var v=Nt(h)?h.mul(0):0;return g===1?v:o(h,g-1)}default:throw new Error('Unknown normalization "'+p+'". Choose "unbiased" (default), "uncorrected", or "biased".')}}function u(f,p,h){try{if(f.length===0)throw new SyntaxError("Function variance requires one or more parameters (0 provided)");return l(f,p,g=>a(g,h))}catch(g){throw Nn(g,"variance")}}});var Pq="quantileSeq",Ice=["typed","?bignumber","add","subtract","divide","multiply","partitionSelect","compare","isInteger","smaller","smallerEq","larger"],gb=$(Pq,Ice,e=>{var{typed:t,bignumber:r,add:n,subtract:i,divide:o,multiply:l,partitionSelect:s,compare:a,isInteger:u,smaller:f,smallerEq:p,larger:h}=e,g=Dd({typed:t,isInteger:u});return t(Pq,{"Array | Matrix, number | BigNumber":(C,E)=>v(C,E,!1),"Array | Matrix, number | BigNumber, number":(C,E,M)=>x(C,E,!1,M,v),"Array | Matrix, number | BigNumber, boolean":v,"Array | Matrix, number | BigNumber, boolean, number":(C,E,M,T)=>x(C,E,M,T,v),"Array | Matrix, Array | Matrix":(C,E)=>S(C,E,!1),"Array | Matrix, Array | Matrix, number":(C,E,M)=>x(C,E,!1,M,S),"Array | Matrix, Array | Matrix, boolean":S,"Array | Matrix, Array | Matrix, boolean, number":(C,E,M,T)=>x(C,E,M,T,S)});function x(C,E,M,T,N){return g(C,T,O=>N(O,E,M))}function v(C,E,M){var T,N=C.valueOf();if(f(E,0))throw new Error("N/prob must be non-negative");if(p(E,1))return Rt(E)?D(N,E,M):r(D(N,E,M));if(h(E,1)){if(!u(E))throw new Error("N must be a positive integer");if(h(E,4294967295))throw new Error("N must be less than or equal to 2^32-1, as that is the maximum length of an Array");var O=n(E,1);T=[];for(var F=0;f(F,E);F++){var I=o(F+1,O);T.push(D(N,I,M))}return Rt(E)?T:r(T)}}function S(C,E,M){for(var T=C.valueOf(),N=E.valueOf(),O=[],F=0;F0&&(B=T[q])}return n(l(B,i(1,I)),l(L,I))}});var Rq="std",kce=["typed","map","sqrt","variance"],vb=$(Rq,kce,e=>{var{typed:t,map:r,sqrt:n,variance:i}=e;return t(Rq,{"Array | Matrix":o,"Array | Matrix, string":o,"Array | Matrix, number | BigNumber":o,"Array | Matrix, number | BigNumber, string":o,"...":function(s){return o(s)}});function o(l,s){if(l.length===0)throw new SyntaxError("Function std requires one or more parameters (0 provided)");try{var a=i.apply(null,arguments);return hn(a)?r(a,n):n(a)}catch(u){throw u instanceof TypeError&&u.message.includes(" variance")?new TypeError(u.message.replace(" variance"," std")):u}}});var qq="corr",Lce=["typed","matrix","mean","sqrt","sum","add","subtract","multiply","pow","divide"],zq=$(qq,Lce,e=>{var{typed:t,matrix:r,sqrt:n,sum:i,add:o,subtract:l,multiply:s,pow:a,divide:u}=e;return t(qq,{"Array, Array":function(g,x){return f(g,x)},"Matrix, Matrix":function(g,x){var v=f(g.toArray(),x.toArray());return Array.isArray(v)?r(v):v}});function f(h,g){var x=[];if(Array.isArray(h[0])&&Array.isArray(g[0])){if(h.length!==g.length)throw new SyntaxError("Dimension mismatch. Array A and B must have the same length.");for(var v=0;vo(N,s(O,g[F])),0),C=i(h.map(N=>a(N,2))),E=i(g.map(N=>a(N,2))),M=l(s(x,D),s(v,S)),T=n(s(l(s(x,C),a(v,2)),l(s(x,E),a(S,2))));return u(M,T)}});var Uq="combinations",Bce=["typed"],$q=$(Uq,Bce,e=>{var{typed:t}=e;return t(Uq,{"number, number":kA,"BigNumber, BigNumber":function(n,i){var o=n.constructor,l,s,a=n.minus(i),u=new o(1);if(!Hq(n)||!Hq(i))throw new TypeError("Positive integer value expected in function combinations");if(i.gt(n))throw new TypeError("k must be less than n in function combinations");if(l=u,i.lt(a))for(s=u;s.lte(a);s=s.plus(u))l=l.times(i.plus(s)).dividedBy(s);else for(s=u;s.lte(i);s=s.plus(u))l=l.times(a.plus(s)).dividedBy(s);return l}})});function Hq(e){return e.isInteger()&&e.gte(0)}var Wq="combinationsWithRep",Pce=["typed"],Gq=$(Wq,Pce,e=>{var{typed:t}=e;return t(Wq,{"number, number":function(n,i){if(!ht(n)||n<0)throw new TypeError("Positive integer value expected in function combinationsWithRep");if(!ht(i)||i<0)throw new TypeError("Positive integer value expected in function combinationsWithRep");if(n<1)throw new TypeError("k must be less than or equal to n + k - 1");if(i{var{typed:t,config:r,multiplyScalar:n,pow:i,BigNumber:o,Complex:l}=e;function s(u){if(u.im===0)return kv(u.re);if(u.re<.5){var f=new l(1-u.re,-u.im),p=new l(Math.PI*u.re,Math.PI*u.im);return new l(Math.PI).div(p.sin()).div(s(f))}u=new l(u.re-1,u.im);for(var h=new l(mp[0],0),g=1;g2;)h-=2,x+=h,g=g.times(x);return new o(g.toPrecision(o.precision))}});var Xq="lgamma",qce=["Complex","typed"],Kq=$(Xq,qce,e=>{var{Complex:t,typed:r}=e,n=7,i=7,o=[-.029550653594771242,.00641025641025641,-.0019175269175269176,.0008417508417508417,-.0005952380952380953,.0007936507936507937,-.002777777777777778,.08333333333333333];return r(Xq,{number:Lv,Complex:l,BigNumber:function(){throw new Error("mathjs doesn't yet provide an implementation of the algorithm lgamma for BigNumber")}});function l(u){var f=6.283185307179586,p=1.1447298858494002,h=.1;if(u.isNaN())return new t(NaN,NaN);if(u.im===0)return new t(Lv(u.re),0);if(u.re>=n||Math.abs(u.im)>=i)return s(u);if(u.re<=h){var g=MF(f,u.im)*Math.floor(.5*u.re+.25),x=u.mul(Math.PI).sin().log(),v=l(new t(1-u.re,-u.im));return new t(p,g).sub(x).sub(v)}else return u.im>=0?a(u):a(u.conjugate()).conjugate()}function s(u){for(var f=u.sub(.5).mul(u.log()).sub(u).add(RA),p=new t(1,0).div(u),h=p.div(u),g=o[0],x=o[1],v=2*h.re,S=h.re*h.re+h.im*h.im,D=2;D<8;D++){var C=x;x=-S*g+o[D],g=v*g+C}var E=p.mul(h.mul(g).add(x));return f.add(E)}function a(u){var f=0,p=0,h=u;for(u=u.add(1);u.re<=n;){h=h.mul(u);var g=h.im<0?1:0;g!==0&&p===0&&f++,p=g,u=u.add(1)}return s(u).sub(h.log()).sub(new t(0,f*2*Math.PI*1))}});var Jq="factorial",zce=["typed","gamma"],Qq=$(Jq,zce,e=>{var{typed:t,gamma:r}=e;return t(Jq,{number:function(i){if(i<0)throw new Error("Value must be non-negative");return r(i+1)},BigNumber:function(i){if(i.isNegative())throw new Error("Value must be non-negative");return r(i.plus(1))},"Array | Matrix":t.referToSelf(n=>i=>wt(i,n))})});var jq="kldivergence",Uce=["typed","matrix","divide","sum","multiply","map","dotDivide","log","isNumeric"],ez=$(jq,Uce,e=>{var{typed:t,matrix:r,divide:n,sum:i,multiply:o,map:l,dotDivide:s,log:a,isNumeric:u}=e;return t(jq,{"Array, Array":function(h,g){return f(r(h),r(g))},"Matrix, Array":function(h,g){return f(h,r(g))},"Array, Matrix":function(h,g){return f(r(h),g)},"Matrix, Matrix":function(h,g){return f(h,g)}});function f(p,h){var g=h.size().length,x=p.size().length;if(g>1)throw new Error("first object must be one dimensional");if(x>1)throw new Error("second object must be one dimensional");if(g!==x)throw new Error("Length of two vectors must be equal");var v=i(p);if(v===0)throw new Error("Sum of elements in first object must be non zero");var S=i(h);if(S===0)throw new Error("Sum of elements in second object must be non zero");var D=n(p,i(p)),C=n(h,i(h)),E=i(o(D,l(s(D,C),M=>a(M))));return u(E)?E:Number.NaN}});var tz="multinomial",Hce=["typed","add","divide","multiply","factorial","isInteger","isPositive"],rz=$(tz,Hce,e=>{var{typed:t,add:r,divide:n,multiply:i,factorial:o,isInteger:l,isPositive:s}=e;return t(tz,{"Array | Matrix":function(u){var f=0,p=1;return lo(u,function(h){if(!l(h)||!s(h))throw new TypeError("Positive integer value expected in function multinomial");f=r(f,h),p=i(p,o(h))}),n(o(f),p)}})});var nz="permutations",$ce=["typed","factorial"],oz=$(nz,$ce,e=>{var{typed:t,factorial:r}=e;return t(nz,{"number | BigNumber":r,"number, number":function(i,o){if(!ht(i)||i<0)throw new TypeError("Positive integer value expected in function permutations");if(!ht(o)||o<0)throw new TypeError("Positive integer value expected in function permutations");if(o>i)throw new TypeError("second argument k must be less than or equal to first argument n");return wa(i-o+1,i)},"BigNumber, BigNumber":function(i,o){var l,s;if(!iz(i)||!iz(o))throw new TypeError("Positive integer value expected in function permutations");if(o.gt(i))throw new TypeError("second argument k must be less than or equal to first argument n");var a=i.mul(0).add(1);for(l=a,s=i.minus(o).plus(1);s.lte(i);s=s.plus(1))l=l.times(s);return l}})});function iz(e){return e.isInteger()&&e.gte(0)}var AC=fn(Dz(),1),Kce=(0,AC.default)(Date.now());function Ol(e){var t;function r(i){t=i===null?Kce:(0,AC.default)(String(i))}r(e);function n(){return t()}return n}var Sz="pickRandom",Jce=["typed","config","?on"],Nz=$(Sz,Jce,e=>{var{typed:t,config:r,on:n}=e,i=Ol(r.randomSeed);return n&&n("config",function(l,s){l.randomSeed!==s.randomSeed&&(i=Ol(l.randomSeed))}),t(Sz,{"Array | Matrix":function(s){return o(s,{})},"Array | Matrix, Object":function(s,a){return o(s,a)},"Array | Matrix, number":function(s,a){return o(s,{number:a})},"Array | Matrix, Array | Matrix":function(s,a){return o(s,{weights:a})},"Array | Matrix, Array | Matrix, number":function(s,a,u){return o(s,{number:u,weights:a})},"Array | Matrix, number, Array | Matrix":function(s,a,u){return o(s,{number:a,weights:u})}});function o(l,s){var{number:a,weights:u,elementWise:f=!0}=s,p=typeof a>"u";p&&(a=1);var h=yt(l)?l.create:yt(u)?u.create:null;l=l.valueOf(),u&&(u=u.valueOf()),f===!0&&(l=jt(l),u=jt(u));var g=0;if(typeof u<"u"){if(u.length!==l.length)throw new Error("Weights must have the same length as possibles");for(var x=0,v=u.length;x"u")C=l[Math.floor(i()*S)];else for(var E=i()*g,M=0,T=l.length;M1)for(var n=0,i=e.shift();n{var{typed:t,config:r,on:n}=e,i=Ol(r.randomSeed);return n&&n("config",function(s,a){s.randomSeed!==a.randomSeed&&(i=Ol(s.randomSeed))}),t(Ez,{"":()=>l(0,1),number:s=>l(0,s),"number, number":(s,a)=>l(s,a),"Array | Matrix":s=>o(s,0,1),"Array | Matrix, number":(s,a)=>o(s,0,a),"Array | Matrix, number, number":(s,a,u)=>o(s,a,u)});function o(s,a,u){var f=qv(s.valueOf(),()=>l(a,u));return yt(s)?s.create(f,"number"):f}function l(s,a){return s+i()*(a-s)}});var Cz="randomInt",jce=["typed","config","?on"],Mz=$(Cz,jce,e=>{var{typed:t,config:r,on:n}=e,i=Ol(r.randomSeed);return n&&n("config",function(s,a){s.randomSeed!==a.randomSeed&&(i=Ol(s.randomSeed))}),t(Cz,{"":()=>l(0,1),number:s=>l(0,s),"number, number":(s,a)=>l(s,a),"Array | Matrix":s=>o(s,0,1),"Array | Matrix, number":(s,a)=>o(s,0,a),"Array | Matrix, number, number":(s,a,u)=>o(s,a,u)});function o(s,a,u){var f=qv(s.valueOf(),()=>l(a,u));return yt(s)?s.create(f,"number"):f}function l(s,a){return Math.floor(s+i()*(a-s))}});var Tz="stirlingS2",epe=["typed","addScalar","subtractScalar","multiplyScalar","divideScalar","pow","factorial","combinations","isNegative","isInteger","number","?bignumber","larger"],_z=$(Tz,epe,e=>{var{typed:t,addScalar:r,subtractScalar:n,multiplyScalar:i,divideScalar:o,pow:l,factorial:s,combinations:a,isNegative:u,isInteger:f,number:p,bignumber:h,larger:g}=e,x=[],v=[];return t(Tz,{"number | BigNumber, number | BigNumber":function(D,C){if(!f(D)||u(D)||!f(C)||u(C))throw new TypeError("Non-negative integer value expected in function stirlingS2");if(g(C,D))throw new TypeError("k must be less than or equal to n in function stirlingS2");var E=!(Rt(D)&&Rt(C)),M=E?v:x,T=E?h:p,N=p(D),O=p(C);if(M[N]&&M[N].length>O)return M[N][O];for(var F=0;F<=N;++F)if(M[F]||(M[F]=[T(F===0?1:0)]),F!==0)for(var I=M[F],B=M[F-1],L=I.length;L<=F&&L<=O;++L)L===F?I[L]=1:I[L]=r(i(T(L),B[L]),B[L-1]);return M[N][O]}})});var Oz="bellNumbers",tpe=["typed","addScalar","isNegative","isInteger","stirlingS2"],Fz=$(Oz,tpe,e=>{var{typed:t,addScalar:r,isNegative:n,isInteger:i,stirlingS2:o}=e;return t(Oz,{"number | BigNumber":function(s){if(!i(s)||n(s))throw new TypeError("Non-negative integer value expected in function bellNumbers");for(var a=0,u=0;u<=s;u++)a=r(a,o(s,u));return a}})});var Iz="catalan",rpe=["typed","addScalar","divideScalar","multiplyScalar","combinations","isNegative","isInteger"],kz=$(Iz,rpe,e=>{var{typed:t,addScalar:r,divideScalar:n,multiplyScalar:i,combinations:o,isNegative:l,isInteger:s}=e;return t(Iz,{"number | BigNumber":function(u){if(!s(u)||l(u))throw new TypeError("Non-negative integer value expected in function catalan");return n(o(i(u,2),u),r(u,1))}})});var Lz="composition",npe=["typed","addScalar","combinations","isNegative","isPositive","isInteger","larger"],Bz=$(Lz,npe,e=>{var{typed:t,addScalar:r,combinations:n,isPositive:i,isNegative:o,isInteger:l,larger:s}=e;return t(Lz,{"number | BigNumber, number | BigNumber":function(u,f){if(!l(u)||!i(u)||!l(f)||!i(f))throw new TypeError("Positive integer value expected in function composition");if(s(f,u))throw new TypeError("k must be less than or equal to n in function composition");return n(r(u,-1),r(f,-1))}})});var Pz="leafCount",ipe=["parse","typed"],Rz=$(Pz,ipe,e=>{var{parse:t,typed:r}=e;function n(i){var o=0;return i.forEach(l=>{o+=n(l)}),o||1}return r(Pz,{Node:function(o){return n(o)}})});function CC(e){return Qt(e)||Ur(e)&&e.isUnary()&&Qt(e.args[0])}function zv(e){return!!(Qt(e)||(Gi(e)||Ur(e))&&e.args.every(zv)||xi(e)&&zv(e.content))}function qz(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function MC(e){for(var t=1;t{var{FunctionNode:t,OperatorNode:r,SymbolNode:n}=e,i=!0,o=!1,l="defaultF",s={add:{trivial:i,total:i,commutative:i,associative:i},unaryPlus:{trivial:i,total:i,commutative:i,associative:i},subtract:{trivial:o,total:i,commutative:o,associative:o},multiply:{trivial:i,total:i,commutative:i,associative:i},divide:{trivial:o,total:i,commutative:o,associative:o},paren:{trivial:i,total:i,commutative:i,associative:o},defaultF:{trivial:o,total:i,commutative:o,associative:o}},a={divide:{total:o},log:{total:o}},u={subtract:{total:o},abs:{trivial:i},log:{total:i}};function f(E,M){var T=arguments.length>2&&arguments[2]!==void 0?arguments[2]:s,N=l;if(typeof E=="string"?N=E:Ur(E)?N=E.fn.toString():Gi(E)?N=E.name:xi(E)&&(N="paren"),xt(T,N)){var O=T[N];if(xt(O,M))return O[M];if(xt(s,N))return s[N][M]}if(xt(T,l)){var F=T[l];return xt(F,M)?F[M]:s[l][M]}if(xt(s,N)){var I=s[N];if(xt(I,M))return I[M]}return s[l][M]}function p(E){var M=arguments.length>1&&arguments[1]!==void 0?arguments[1]:s;return f(E,"commutative",M)}function h(E){var M=arguments.length>1&&arguments[1]!==void 0?arguments[1]:s;return f(E,"associative",M)}function g(E,M){var T=MC({},E);for(var N in M)xt(E,N)?T[N]=MC(MC({},M[N]),E[N]):T[N]=M[N];return T}function x(E,M){if(!E.args||E.args.length===0)return E;E.args=v(E,M);for(var T=0;T2&&h(E,M)){for(var F=E.args.pop();E.args.length>0;)F=T([E.args.pop(),F]);E.args=F.args}}}function D(E,M){if(!(!E.args||E.args.length===0)){for(var T=C(E),N=E.args.length,O=0;O2&&h(E,M)){for(var F=E.args.shift();E.args.length>0;)F=T([F,E.args.shift()]);E.args=F.args}}}function C(E){return Ur(E)?function(M){try{return new r(E.op,E.fn,M,E.implicit)}catch(T){return console.error(T),[]}}:function(M){return new t(new n(E.name),M)}}return{createMakeNodeFunction:C,hasProperty:f,isCommutative:p,isAssociative:h,mergeContext:g,flatten:x,allChildren:v,unflattenr:S,unflattenl:D,defaultContext:s,realContext:a,positiveContext:u}});var spe="simplify",upe=["typed","parse","equal","resolve","simplifyConstant","simplifyCore","AccessorNode","ArrayNode","ConstantNode","FunctionNode","IndexNode","ObjectNode","OperatorNode","ParenthesisNode","SymbolNode"],zz=$(spe,upe,e=>{var{typed:t,parse:r,equal:n,resolve:i,simplifyConstant:o,simplifyCore:l,AccessorNode:s,ArrayNode:a,ConstantNode:u,FunctionNode:f,IndexNode:p,ObjectNode:h,OperatorNode:g,ParenthesisNode:x,SymbolNode:v}=e,{hasProperty:S,isCommutative:D,isAssociative:C,mergeContext:E,flatten:M,unflattenr:T,unflattenl:N,createMakeNodeFunction:O,defaultContext:F,realContext:I,positiveContext:B}=Od({FunctionNode:f,OperatorNode:g,SymbolNode:v});t.addConversion({from:"Object",to:"Map",convert:Nl});var L=t("simplify",{Node:ee,"Node, Map":(se,le)=>ee(se,!1,le),"Node, Map, Object":(se,le,oe)=>ee(se,!1,le,oe),"Node, Array":ee,"Node, Array, Map":ee,"Node, Array, Map, Object":ee});t.removeConversion({from:"Object",to:"Map",convert:Nl}),L.defaultContext=F,L.realContext=I,L.positiveContext=B;function q(se){return se.transform(function(le){return xi(le)?q(le.content):le})}var R={true:!0,false:!0,e:!0,i:!0,Infinity:!0,LN2:!0,LN10:!0,LOG2E:!0,LOG10E:!0,NaN:!0,phi:!0,pi:!0,SQRT1_2:!0,SQRT2:!0,tau:!0};L.rules=[l,{l:"log(e)",r:"1"},{s:"n-n1 -> n+-n1",assuming:{subtract:{total:!0}}},{s:"n-n -> 0",assuming:{subtract:{total:!1}}},{s:"-(cl*v) -> v * (-cl)",assuming:{multiply:{commutative:!0},subtract:{total:!0}}},{s:"-(cl*v) -> (-cl) * v",assuming:{multiply:{commutative:!1},subtract:{total:!0}}},{s:"-(v*cl) -> v * (-cl)",assuming:{multiply:{commutative:!1},subtract:{total:!0}}},{l:"-(n1/n2)",r:"-n1/n2"},{l:"-v",r:"v * (-1)"},{l:"(n1 + n2)*(-1)",r:"n1*(-1) + n2*(-1)",repeat:!0},{l:"n/n1^n2",r:"n*n1^-n2"},{l:"n/n1",r:"n*n1^-1"},{s:"(n1*n2)^n3 -> n1^n3 * n2^n3",assuming:{multiply:{commutative:!0}}},{s:"(n1*n2)^(-1) -> n2^(-1) * n1^(-1)",assuming:{multiply:{commutative:!1}}},{s:"(n ^ n1) ^ n2 -> n ^ (n1 * n2)",assuming:{divide:{total:!0}}},{l:" vd * ( vd * n1 + n2)",r:"vd^2 * n1 + vd * n2"},{s:" vd * (vd^n4 * n1 + n2) -> vd^(1+n4) * n1 + vd * n2",assuming:{divide:{total:!0}}},{s:"vd^n3 * ( vd * n1 + n2) -> vd^(n3+1) * n1 + vd^n3 * n2",assuming:{divide:{total:!0}}},{s:"vd^n3 * (vd^n4 * n1 + n2) -> vd^(n3+n4) * n1 + vd^n3 * n2",assuming:{divide:{total:!0}}},{l:"n*n",r:"n^2"},{s:"n * n^n1 -> n^(n1+1)",assuming:{divide:{total:!0}}},{s:"n^n1 * n^n2 -> n^(n1+n2)",assuming:{divide:{total:!0}}},o,{s:"n+n -> 2*n",assuming:{add:{total:!0}}},{l:"n+-n",r:"0"},{l:"vd*n + vd",r:"vd*(n+1)"},{l:"n3*n1 + n3*n2",r:"n3*(n1+n2)"},{l:"n3^(-n4)*n1 + n3 * n2",r:"n3^(-n4)*(n1 + n3^(n4+1) *n2)"},{l:"n3^(-n4)*n1 + n3^n5 * n2",r:"n3^(-n4)*(n1 + n3^(n4+n5)*n2)"},{s:"n*vd + vd -> (n+1)*vd",assuming:{multiply:{commutative:!1}}},{s:"vd + n*vd -> (1+n)*vd",assuming:{multiply:{commutative:!1}}},{s:"n1*n3 + n2*n3 -> (n1+n2)*n3",assuming:{multiply:{commutative:!1}}},{s:"n^n1 * n -> n^(n1+1)",assuming:{divide:{total:!0},multiply:{commutative:!1}}},{s:"n1*n3^(-n4) + n2 * n3 -> (n1 + n2*n3^(n4 + 1))*n3^(-n4)",assuming:{multiply:{commutative:!1}}},{s:"n1*n3^(-n4) + n2 * n3^n5 -> (n1 + n2*n3^(n4 + n5))*n3^(-n4)",assuming:{multiply:{commutative:!1}}},{l:"n*cd + cd",r:"(n+1)*cd"},{s:"cd*n + cd -> cd*(n+1)",assuming:{multiply:{commutative:!1}}},{s:"cd + cd*n -> cd*(1+n)",assuming:{multiply:{commutative:!1}}},o,{s:"(-n)*n1 -> -(n*n1)",assuming:{subtract:{total:!0}}},{s:"n1*(-n) -> -(n1*n)",assuming:{subtract:{total:!0},multiply:{commutative:!1}}},{s:"ce+ve -> ve+ce",assuming:{add:{commutative:!0}},imposeContext:{add:{commutative:!1}}},{s:"vd*cd -> cd*vd",assuming:{multiply:{commutative:!0}},imposeContext:{multiply:{commutative:!1}}},{l:"n+-n1",r:"n-n1"},{l:"n+-(n1)",r:"n-(n1)"},{s:"n*(n1^-1) -> n/n1",assuming:{multiply:{commutative:!0}}},{s:"n*n1^-n2 -> n/n1^n2",assuming:{multiply:{commutative:!0}}},{s:"n^-1 -> 1/n",assuming:{multiply:{commutative:!0}}},{l:"n^1",r:"n"},{s:"n*(n1/n2) -> (n*n1)/n2",assuming:{multiply:{associative:!0}}},{s:"n-(n1+n2) -> n-n1-n2",assuming:{addition:{associative:!0,commutative:!0}}},{l:"1*n",r:"n",imposeContext:{multiply:{commutative:!0}}},{s:"n1/(n2/n3) -> (n1*n3)/n2",assuming:{multiply:{associative:!0}}},{l:"n1/(-n2)",r:"-n1/n2"}];function V(se,le){var oe={};if(se.s){var we=se.s.split("->");if(we.length===2)oe.l=we[0],oe.r=we[1];else throw SyntaxError("Could not parse rule: "+se.s)}else oe.l=se.l,oe.r=se.r;oe.l=q(r(oe.l)),oe.r=q(r(oe.r));for(var Ce of["imposeContext","repeat","assuming"])Ce in se&&(oe[Ce]=se[Ce]);if(se.evaluate&&(oe.evaluate=r(se.evaluate)),C(oe.l,le)){var he=!D(oe.l,le),Pe;he&&(Pe=H());var Ze=O(oe.l),ie=H();oe.expanded={},oe.expanded.l=Ze([oe.l,ie]),M(oe.expanded.l,le),T(oe.expanded.l,le),oe.expanded.r=Ze([oe.r,ie]),he&&(oe.expandedNC1={},oe.expandedNC1.l=Ze([Pe,oe.l]),oe.expandedNC1.r=Ze([Pe,oe.r]),oe.expandedNC2={},oe.expandedNC2.l=Ze([Pe,oe.expanded.l]),oe.expandedNC2.r=Ze([Pe,oe.expanded.r]))}return oe}function X(se,le){for(var oe=[],we=0;we2&&arguments[2]!==void 0?arguments[2]:Bf(),we=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},Ce=we.consoleDebug;le=X(le||L.rules,we.context);var he=i(se,oe);he=q(he);for(var Pe={},Ze=he.toString({parenthesis:"all"});!Pe[Ze];){Pe[Ze]=!0,U=0;var ie=Ze;Ce&&console.log("Working on: ",Ze);for(var fe=0;fe ").concat(le[fe].r.toString()))),Ce){var Me=he.toString({parenthesis:"all"});Me!==ie&&(console.log("Applying",Oe,"produced",Me),ie=Me)}N(he,we.context)}Ze=he.toString({parenthesis:"all"})}return he}function Z(se,le,oe){var we=se;if(se)for(var Ce=0;Ce1&&(ie=he(se.args.slice(0,Ze))),Ce=se.args.slice(Ze),we=Ce.length===1?Ce[0]:he(Ce),oe.push(he([ie,we]))}return oe}function de(se,le){var oe={placeholders:{}};if(!se.placeholders&&!le.placeholders)return oe;if(se.placeholders){if(!le.placeholders)return se}else return le;for(var we in se.placeholders)if(xt(se.placeholders,we)&&(oe.placeholders[we]=se.placeholders[we],xt(le.placeholders,we)&&!De(se.placeholders[we],le.placeholders[we])))return null;for(var Ce in le.placeholders)xt(le.placeholders,Ce)&&(oe.placeholders[Ce]=le.placeholders[Ce]);return oe}function ne(se,le){var oe=[];if(se.length===0||le.length===0)return oe;for(var we,Ce=0;Ce2)throw new Error("permuting >2 commutative non-associative rule arguments not yet implemented");var ie=Te(se.args[0],le.args[1],oe);if(ie.length===0)return[];var fe=Te(se.args[1],le.args[0],oe);if(fe.length===0)return[];he=[ie,fe]}Ce=ve(he)}else if(le.args.length>=2&&se.args.length===2){for(var Oe=be(le,oe),Me=[],Je=0;Je2)throw Error("Unexpected non-binary associative function: "+se.toString());return[]}}else if(se instanceof v){if(se.name.length===0)throw new Error("Symbol in rule has 0 length...!?");if(R[se.name]){if(se.name!==le.name)return[]}else switch(se.name[1]>="a"&&se.name[1]<="z"?se.name.substring(0,2):se.name[0]){case"n":case"_p":Ce[0].placeholders[se.name]=le;break;case"c":case"cl":if(Qt(le))Ce[0].placeholders[se.name]=le;else return[];break;case"v":if(!Qt(le))Ce[0].placeholders[se.name]=le;else return[];break;case"vl":if(Ir(le))Ce[0].placeholders[se.name]=le;else return[];break;case"cd":if(CC(le))Ce[0].placeholders[se.name]=le;else return[];break;case"vd":if(!CC(le))Ce[0].placeholders[se.name]=le;else return[];break;case"ce":if(zv(le))Ce[0].placeholders[se.name]=le;else return[];break;case"ve":if(!zv(le))Ce[0].placeholders[se.name]=le;else return[];break;default:throw new Error("Invalid symbol in rule: "+se.name)}}else if(se instanceof u){if(!n(se.value,le.value))return[]}else return[];return Ce}function De(se,le){if(se instanceof u&&le instanceof u){if(!n(se.value,le.value))return!1}else if(se instanceof v&&le instanceof v){if(se.name!==le.name)return!1}else if(se instanceof g&&le instanceof g||se instanceof f&&le instanceof f){if(se instanceof g){if(se.op!==le.op||se.fn!==le.fn)return!1}else if(se instanceof f&&se.name!==le.name)return!1;if(se.args.length!==le.args.length)return!1;for(var oe=0;oe{var{typed:t,config:r,mathWithTransform:n,matrix:i,fraction:o,bignumber:l,AccessorNode:s,ArrayNode:a,ConstantNode:u,FunctionNode:f,IndexNode:p,ObjectNode:h,OperatorNode:g,SymbolNode:x}=e,{isCommutative:v,isAssociative:S,allChildren:D,createMakeNodeFunction:C}=Od({FunctionNode:f,OperatorNode:g,SymbolNode:x}),E=t("simplifyConstant",{Node:X=>O(V(X,{})),"Node, Object":function(U,H){return O(V(U,H))}});function M(X){return va(X)?X.valueOf():X instanceof Array?X.map(M):yt(X)?i(M(X.valueOf())):X}function T(X,U,H){try{return n[X].apply(null,U)}catch{return U=U.map(M),I(n[X].apply(null,U),H)}}var N=t({Fraction:L,number:function(U){return U<0?B(new u(-U)):new u(U)},BigNumber:function(U){return U<0?B(new u(-U)):new u(U)},bigint:function(U){return U<0n?B(new u(-U)):new u(U)},Complex:function(U){throw new Error("Cannot convert Complex number to Node")},string:function(U){return new u(U)},Matrix:function(U){return new a(U.valueOf().map(H=>N(H)))}});function O(X){return ir(X)?X:N(X)}function F(X,U){var H=U&&U.exactFractions!==!1;if(H&&isFinite(X)&&o){var ee=o(X),Z=U&&typeof U.fractionsLimit=="number"?U.fractionsLimit:1/0;if(ee.valueOf()===X&&ee.n0;)if(Qt(ee[0])&&typeof ee[0].value!="string"){var Z=I(ee.shift().value,H);vi(X)?X=X.items[Z-1]:(X=X.valueOf()[Z-1],X instanceof Array&&(X=i(X)))}else if(ee.length>1&&Qt(ee[1])&&typeof ee[1].value!="string"){var ce=I(ee[1].value,H),be=[],de=vi(X)?X.items:X.valueOf();for(var ne of de)if(vi(ne))be.push(ne.items[ce-1]);else if(yt(X))be.push(ne[ce-1]);else break;if(be.length===de.length)vi(X)?X=new a(be):X=i(be),ee.splice(1,1);else break}else break;return ee.length===U.dimensions.length?new s(O(X),U):ee.length>0?(U=new p(ee),new s(O(X),U)):X}if(Eu(X)&&U.dimensions.length===1&&Qt(U.dimensions[0])){var ve=U.dimensions[0].value;return ve in X.properties?X.properties[ve]:new u}return new s(O(X),U)}function R(X,U,H,ee){var Z=U.shift(),ce=U.reduce((be,de)=>{if(!ir(de)){var ne=be.pop();if(ir(ne))return[ne,de];try{return be.push(T(X,[ne,de],ee)),be}catch{be.push(ne)}}be.push(O(be.pop()));var ve=be.length===1?be[0]:H(be);return[H([ve,O(de)])]},[Z]);return ce.length===1?ce[0]:H([ce[0],N(ce[1])])}function V(X,U){switch(X.type){case"SymbolNode":return X;case"ConstantNode":switch(typeof X.value){case"number":return I(X.value,U);case"bigint":return I(X.value,U);case"string":return X.value;default:if(!isNaN(X.value))return I(X.value,U)}return X;case"FunctionNode":if(n[X.name]&&n[X.name].rawArgs)return X;{var H=["add","multiply"];if(!H.includes(X.name)){var ee=X.args.map(Ce=>V(Ce,U));if(!ee.some(ir))try{return T(X.name,ee,U)}catch{}if(X.name==="size"&&ee.length===1&&vi(ee[0])){for(var Z=[],ce=ee[0];vi(ce);)Z.push(ce.items.length),ce=ce.items[0];return i(Z)}return new f(X.name,ee.map(O))}}case"OperatorNode":{var be=X.fn.toString(),de,ne,ve=C(X);if(Ur(X)&&X.isUnary())de=[V(X.args[0],U)],ir(de[0])?ne=ve(de):ne=T(be,de,U);else if(S(X,U.context))if(de=D(X,U.context),de=de.map(Ce=>V(Ce,U)),v(be,U.context)){for(var Te=[],De=[],se=0;se1?(ne=R(be,Te,ve,U),De.unshift(ne),ne=R(be,De,ve,U)):ne=R(be,de,ve,U)}else ne=R(be,de,ve,U);else de=X.args.map(Ce=>V(Ce,U)),ne=R(be,de,ve,U);return ne}case"ParenthesisNode":return V(X.content,U);case"AccessorNode":return q(V(X.object,U),V(X.index,U),U);case"ArrayNode":{var le=X.items.map(Ce=>V(Ce,U));return le.some(ir)?new a(le.map(O)):i(le)}case"IndexNode":return new p(X.dimensions.map(Ce=>E(Ce,U)));case"ObjectNode":{var oe={};for(var we in X.properties)oe[we]=E(X.properties[we],U);return new h(oe)}case"AssignmentNode":case"BlockNode":case"FunctionAssignmentNode":case"RangeNode":case"ConditionalNode":default:throw new Error("Unimplemented node type in simplifyConstant: ".concat(X.type))}}return E});var Hz="simplifyCore",cpe=["typed","parse","equal","isZero","add","subtract","multiply","divide","pow","AccessorNode","ArrayNode","ConstantNode","FunctionNode","IndexNode","ObjectNode","OperatorNode","ParenthesisNode","SymbolNode"],$z=$(Hz,cpe,e=>{var{typed:t,parse:r,equal:n,isZero:i,add:o,subtract:l,multiply:s,divide:a,pow:u,AccessorNode:f,ArrayNode:p,ConstantNode:h,FunctionNode:g,IndexNode:x,ObjectNode:v,OperatorNode:S,ParenthesisNode:D,SymbolNode:C}=e,E=new h(0),M=new h(1),T=new h(!0),N=new h(!1);function O(L){return Ur(L)&&["and","not","or"].includes(L.op)}var{hasProperty:F,isCommutative:I}=Od({FunctionNode:g,OperatorNode:S,SymbolNode:C});function B(L){var q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},R=q?q.context:void 0;if(F(L,"trivial",R)){if(Gi(L)&&L.args.length===1)return B(L.args[0],q);var V=!1,X=0;if(L.forEach(De=>{++X,X===1&&(V=B(De,q))}),X===1)return V}var U=L;if(Gi(U)){var H=FP(U.name);if(H){if(U.args.length>2&&F(U,"associative",R))for(;U.args.length>2;){var ee=U.args.pop(),Z=U.args.pop();U.args.push(new S(H,U.name,[ee,Z]))}U=new S(H,U.name,U.args)}else return new g(B(U.fn),U.args.map(De=>B(De,q)))}if(Ur(U)&&U.isUnary()){var ce=B(U.args[0],q);if(U.op==="~"&&Ur(ce)&&ce.isUnary()&&ce.op==="~"||U.op==="not"&&Ur(ce)&&ce.isUnary()&&ce.op==="not"&&O(ce.args[0]))return ce.args[0];var be=!0;if(U.op==="-"&&Ur(ce)&&(ce.isBinary()&&ce.fn==="subtract"&&(U=new S("-","subtract",[ce.args[1],ce.args[0]]),be=!1),ce.isUnary()&&ce.op==="-"))return ce.args[0];if(be)return new S(U.op,U.fn,[ce])}if(Ur(U)&&U.isBinary()){var de=B(U.args[0],q),ne=B(U.args[1],q);if(U.op==="+"){if(Qt(de)&&i(de.value))return ne;if(Qt(ne)&&i(ne.value))return de;Ur(ne)&&ne.isUnary()&&ne.op==="-"&&(ne=ne.args[0],U=new S("-","subtract",[de,ne]))}if(U.op==="-")return Ur(ne)&&ne.isUnary()&&ne.op==="-"?B(new S("+","add",[de,ne.args[0]]),q):Qt(de)&&i(de.value)?B(new S("-","unaryMinus",[ne])):Qt(ne)&&i(ne.value)?de:new S(U.op,U.fn,[de,ne]);if(U.op==="*"){if(Qt(de)){if(i(de.value))return E;if(n(de.value,1))return ne}if(Qt(ne)){if(i(ne.value))return E;if(n(ne.value,1))return de;if(I(U,R))return new S(U.op,U.fn,[ne,de],U.implicit)}return new S(U.op,U.fn,[de,ne],U.implicit)}if(U.op==="/")return Qt(de)&&i(de.value)?E:Qt(ne)&&n(ne.value,1)?de:new S(U.op,U.fn,[de,ne]);if(U.op==="^"&&Qt(ne)){if(i(ne.value))return M;if(n(ne.value,1))return de}if(U.op==="and"){if(Qt(de))if(de.value){if(O(ne))return ne;if(Qt(ne))return ne.value?T:N}else return N;if(Qt(ne))if(ne.value){if(O(de))return de}else return N}if(U.op==="or"){if(Qt(de)){if(de.value)return T;if(O(ne))return ne}if(Qt(ne)){if(ne.value)return T;if(O(de))return de}}return new S(U.op,U.fn,[de,ne])}if(Ur(U))return new S(U.op,U.fn,U.args.map(De=>B(De,q)));if(vi(U))return new p(U.items.map(De=>B(De,q)));if(Mo(U))return new f(B(U.object,q),B(U.index,q));if(Vo(U))return new x(U.dimensions.map(De=>B(De,q)));if(Eu(U)){var ve={};for(var Te in U.properties)ve[Te]=B(U.properties[Te],q);return new v(ve)}return U}return t(Hz,{Node:B,"Node,Object":B})});var ppe="resolve",mpe=["typed","parse","ConstantNode","FunctionNode","OperatorNode","ParenthesisNode"],Wz=$(ppe,mpe,e=>{var{typed:t,parse:r,ConstantNode:n,FunctionNode:i,OperatorNode:o,ParenthesisNode:l}=e;function s(a,u){var f=arguments.length>2&&arguments[2]!==void 0?arguments[2]:new Set;if(!u)return a;if(Ir(a)){if(f.has(a.name)){var p=Array.from(f).join(", ");throw new ReferenceError("recursive loop of variable definitions among {".concat(p,"}"))}var h=u.get(a.name);if(ir(h)){var g=new Set(f);return g.add(a.name),s(h,u,g)}else return typeof h=="number"?r(String(h)):h!==void 0?new n(h):a}else if(Ur(a)){var x=a.args.map(function(S){return s(S,u,f)});return new o(a.op,a.fn,x,a.implicit)}else{if(xi(a))return new l(s(a.content,u,f));if(Gi(a)){var v=a.args.map(function(S){return s(S,u,f)});return new i(a.name,v)}}return a.map(S=>s(S,u,f))}return t("resolve",{Node:s,"Node, Map | null | undefined":s,"Node, Object":(a,u)=>s(a,Nl(u)),"Array | Matrix":t.referToSelf(a=>u=>u.map(f=>a(f))),"Array | Matrix, null | undefined":t.referToSelf(a=>u=>u.map(f=>a(f))),"Array, Object":t.referTo("Array,Map",a=>(u,f)=>a(u,Nl(f))),"Matrix, Object":t.referTo("Matrix,Map",a=>(u,f)=>a(u,Nl(f))),"Array | Matrix, Map":t.referToSelf(a=>(u,f)=>u.map(p=>a(p,f)))})});var Vz="symbolicEqual",dpe=["parse","simplify","typed","OperatorNode"],Gz=$(Vz,dpe,e=>{var{parse:t,simplify:r,typed:n,OperatorNode:i}=e;function o(l,s){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},u=new i("-","subtract",[l,s]),f=r(u,{},a);return Qt(f)&&!f.value}return n(Vz,{"Node, Node":o,"Node, Node, Object":o})});var Yz="derivative",hpe=["typed","config","parse","simplify","equal","isZero","numeric","ConstantNode","FunctionNode","OperatorNode","ParenthesisNode","SymbolNode"],Zz=$(Yz,hpe,e=>{var{typed:t,config:r,parse:n,simplify:i,equal:o,isZero:l,numeric:s,ConstantNode:a,FunctionNode:u,OperatorNode:f,ParenthesisNode:p,SymbolNode:h}=e;function g(M,T){var N=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{simplify:!0},O={};D(O,M,T.name);var F=C(M,O);return N.simplify?i(F):F}function x(M){var T=n(M);if(!T.isSymbolNode)throw new TypeError("Invalid variable. "+"Cannot parse ".concat(JSON.stringify(M)," into a variable in function derivative"));return T}var v=t(Yz,{"Node, SymbolNode":g,"Node, SymbolNode, Object":g,"Node, string":(M,T)=>g(M,x(T)),"Node, string, Object":(M,T,N)=>g(M,x(T),N)});v._simplify=!0,v.toTex=function(M){return S.apply(null,M.args)};var S=t("_derivTex",{"Node, SymbolNode":function(T,N){return Qt(T)&&pr(T.value)==="string"?S(n(T.value).toString(),N.toString(),1):S(T.toTex(),N.toString(),1)},"Node, ConstantNode":function(T,N){if(pr(N.value)==="string")return S(T,n(N.value));throw new Error("The second parameter to 'derivative' is a non-string constant")},"Node, SymbolNode, ConstantNode":function(T,N,O){return S(T.toString(),N.name,O.value)},"string, string, number":function(T,N,O){var F;return O===1?F="{d\\over d"+N+"}":F="{d^{"+O+"}\\over d"+N+"^{"+O+"}}",F+"\\left[".concat(T,"\\right]")}}),D=t("constTag",{"Object, ConstantNode, string":function(T,N){return T[N]=!0,!0},"Object, SymbolNode, string":function(T,N,O){return N.name!==O?(T[N]=!0,!0):!1},"Object, ParenthesisNode, string":function(T,N,O){return D(T,N.content,O)},"Object, FunctionAssignmentNode, string":function(T,N,O){return N.params.includes(O)?D(T,N.expr,O):(T[N]=!0,!0)},"Object, FunctionNode | OperatorNode, string":function(T,N,O){if(N.args.length>0){for(var F=D(T,N.args[0],O),I=1;I0){var F=T.args.filter(function(U){return N[U]===void 0}),I=F.length===1?F[0]:new f("*","multiply",F),B=O.concat(C(I,N));return new f("*","multiply",B)}return new f("+","add",T.args.map(function(U){return new f("*","multiply",T.args.map(function(H){return H===U?C(H,N):H.clone()}))}))}if(T.op==="/"&&T.isBinary()){var L=T.args[0],q=T.args[1];return N[q]!==void 0?new f("/","divide",[C(L,N),q]):N[L]!==void 0?new f("*","multiply",[new f("-","unaryMinus",[L]),new f("/","divide",[C(q,N),new f("^","pow",[q.clone(),E(2)])])]):new f("/","divide",[new f("-","subtract",[new f("*","multiply",[C(L,N),q.clone()]),new f("*","multiply",[L.clone(),C(q,N)])]),new f("^","pow",[q.clone(),E(2)])])}if(T.op==="^"&&T.isBinary()){var R=T.args[0],V=T.args[1];if(N[R]!==void 0)return Qt(R)&&(l(R.value)||o(R.value,1))?E(0):new f("*","multiply",[T,new f("*","multiply",[new u("log",[R.clone()]),C(V.clone(),N)])]);if(N[V]!==void 0){if(Qt(V)){if(l(V.value))return E(0);if(o(V.value,1))return C(R,N)}var X=new f("^","pow",[R.clone(),new f("-","subtract",[V,E(1)])]);return new f("*","multiply",[V.clone(),new f("*","multiply",[C(R,N),X])])}return new f("*","multiply",[new f("^","pow",[R.clone(),V.clone()]),new f("+","add",[new f("*","multiply",[C(R,N),new f("/","divide",[V.clone(),R.clone()])]),new f("*","multiply",[C(V,N),new u("log",[R.clone()])])])])}throw new Error('Cannot process operator "'+T.op+'" in derivative: the operator is not supported, undefined, or the number of arguments passed to it are not supported')}});function E(M,T){return new a(s(M,T||ao(String(M),r)))}return v});var Xz="rationalize",gpe=["config","typed","equal","isZero","add","subtract","multiply","divide","pow","parse","simplifyConstant","simplifyCore","simplify","?bignumber","?fraction","mathWithTransform","matrix","AccessorNode","ArrayNode","ConstantNode","FunctionNode","IndexNode","ObjectNode","OperatorNode","SymbolNode","ParenthesisNode"],Kz=$(Xz,gpe,e=>{var{config:t,typed:r,equal:n,isZero:i,add:o,subtract:l,multiply:s,divide:a,pow:u,parse:f,simplifyConstant:p,simplifyCore:h,simplify:g,fraction:x,bignumber:v,mathWithTransform:S,matrix:D,AccessorNode:C,ArrayNode:E,ConstantNode:M,FunctionNode:T,IndexNode:N,ObjectNode:O,OperatorNode:F,SymbolNode:I,ParenthesisNode:B}=e;function L(U){var H=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},ee=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,Z=R(),ce=q(U,H,!0,Z.firstRules),be=ce.variables.length,de={exactFractions:!1},ne={exactFractions:!0};if(U=ce.expression,be>=1){U=V(U);var ve,Te,De=!0,se=!1;U=g(U,Z.firstRules,{},de);for(var le;Te=De?Z.distrDivRules:Z.sucDivRules,U=g(U,Te,{},ne),De=!De,le=U.toString(),le!==ve;)se=!0,ve=le;se&&(U=g(U,Z.firstRulesAgain,{},de)),U=g(U,Z.finalRules,{},de)}var oe=[],we={};return U.type==="OperatorNode"&&U.isBinary()&&U.op==="/"?(be===1&&(U.args[0]=X(U.args[0],oe),U.args[1]=X(U.args[1])),ee&&(we.numerator=U.args[0],we.denominator=U.args[1])):(be===1&&(U=X(U,oe)),ee&&(we.numerator=U,we.denominator=null)),ee?(we.coefficients=oe,we.variables=ce.variables,we.expression=U,we):U}return r(Xz,{Node:L,"Node, boolean":(U,H)=>L(U,{},H),"Node, Object":L,"Node, Object, boolean":L});function q(U,H,ee,Z){var ce=[],be=g(U,Z,H,{exactFractions:!1});ee=!!ee;var de="+-*"+(ee?"/":"");ve(be);var ne={};return ne.expression=be,ne.variables=ce,ne;function ve(Te){var De=Te.type;if(De==="FunctionNode")throw new Error("There is an unsolved function call");if(De==="OperatorNode")if(Te.op==="^"){if(Te.args[1].type!=="ConstantNode"||!ht(parseFloat(Te.args[1].value)))throw new Error("There is a non-integer exponent");ve(Te.args[0])}else{if(!de.includes(Te.op))throw new Error("Operator "+Te.op+" invalid in polynomial expression");for(var se=0;se1;if(Z==="OperatorNode"&&U.isBinary()){var be=!1,de;if(U.op==="^"&&(U.args[0].type==="ParenthesisNode"||U.args[0].type==="OperatorNode")&&U.args[1].type==="ConstantNode"&&(de=parseFloat(U.args[1].value),be=de>=2&&ht(de)),be){if(de>2){var ne=U.args[0],ve=new F("^","pow",[U.args[0].cloneDeep(),new M(de-1)]);U=new F("*","multiply",[ne,ve])}else U=new F("*","multiply",[U.args[0],U.args[0].cloneDeep()]);ce&&(ee==="content"?H.content=U:H.args[ee]=U)}}if(Z==="ParenthesisNode")V(U.content,U,"content");else if(Z!=="ConstantNode"&&Z!=="SymbolNode")for(var Te=0;Te=0;ne--)if(H[ne]!==0){var ve=new M(be?H[ne]:Math.abs(H[ne])),Te=H[ne]<0?"-":"+";if(ne>0){var De=new I(ce);if(ne>1){var se=new M(ne);De=new F("^","pow",[De,se])}H[ne]===-1&&be?ve=new F("-","unaryMinus",[De]):Math.abs(H[ne])===1?ve=De:ve=new F("*","multiply",[ve,De])}be?de=ve:Te==="+"?de=new F("+","add",[de,ve]):de=new F("-","subtract",[de,ve]),be=!1}if(be)return new M(0);return de;function le(oe,we,Ce){var he=oe.type;if(he==="FunctionNode")throw new Error("There is an unsolved function call");if(he==="OperatorNode"){if(!"+-*^".includes(oe.op))throw new Error("Operator "+oe.op+" invalid");if(we!==null){if((oe.fn==="unaryMinus"||oe.fn==="pow")&&we.fn!=="add"&&we.fn!=="subtract"&&we.fn!=="multiply")throw new Error("Invalid "+oe.op+" placing");if((oe.fn==="subtract"||oe.fn==="add"||oe.fn==="multiply")&&we.fn!=="add"&&we.fn!=="subtract")throw new Error("Invalid "+oe.op+" placing");if((oe.fn==="subtract"||oe.fn==="add"||oe.fn==="unaryMinus")&&Ce.noFil!==0)throw new Error("Invalid "+oe.op+" placing")}(oe.op==="^"||oe.op==="*")&&(Ce.fire=oe.op);for(var Pe=0;PeZ&&(H[Ze]=0),H[Ze]+=Ce.cte*(Ce.oper==="+"?1:-1),Z=Math.max(Ze,Z);return}Ce.cte=Ze,Ce.fire===""&&(H[0]+=Ce.cte*(Ce.oper==="+"?1:-1))}else throw new Error("Type "+he+" is not allowed")}}});var Jz="zpk2tf",vpe=["typed","add","multiply","Complex","number"],Qz=$(Jz,vpe,e=>{var{typed:t,add:r,multiply:n,Complex:i,number:o}=e;return t(Jz,{"Array,Array,number":function(u,f,p){return l(u,f,p)},"Array,Array":function(u,f){return l(u,f,1)},"Matrix,Matrix,number":function(u,f,p){return l(u.valueOf(),f.valueOf(),p)},"Matrix,Matrix":function(u,f){return l(u.valueOf(),f.valueOf(),1)}});function l(a,u,f){a.some(C=>C.type==="BigNumber")&&(a=a.map(C=>o(C))),u.some(C=>C.type==="BigNumber")&&(u=u.map(C=>o(C)));for(var p=[i(1,0)],h=[i(1,0)],g=0;g=0&&p-h{var{typed:t,add:r,multiply:n,Complex:i,divide:o,matrix:l}=e;return t(jz,{"Array, Array":function(f,p){var h=a(512);return s(f,p,h)},"Array, Array, Array":function(f,p,h){return s(f,p,h)},"Array, Array, number":function(f,p,h){if(h<0)throw new Error("w must be a positive number");var g=a(h);return s(f,p,g)},"Matrix, Matrix":function(f,p){var h=a(512),{w:g,h:x}=s(f.valueOf(),p.valueOf(),h);return{w:l(g),h:l(x)}},"Matrix, Matrix, Matrix":function(f,p,h){var{h:g}=s(f.valueOf(),p.valueOf(),h.valueOf());return{h:l(g),w:l(h)}},"Matrix, Matrix, number":function(f,p,h){if(h<0)throw new Error("w must be a positive number");var g=a(h),{h:x}=s(f.valueOf(),p.valueOf(),g);return{h:l(x),w:l(g)}}});function s(u,f,p){for(var h=[],g=[],x=0;x{var{classes:t}=e;return function(n,i){var o=t[i&&i.mathjs];return o&&typeof o.fromJSON=="function"?o.fromJSON(i):i}});var bpe="replacer",Dpe=[],rU=$(bpe,Dpe,()=>function(t,r){return typeof r=="number"&&(!isFinite(r)||isNaN(r))?{mathjs:"number",value:String(r)}:typeof r=="bigint"?{mathjs:"bigint",value:String(r)}:r});var nU="13.2.1";var iU=$("true",[],()=>!0),oU=$("false",[],()=>!1),aU=$("null",[],()=>null),sU=Da("Infinity",["config","?BigNumber"],e=>{var{config:t,BigNumber:r}=e;return t.number==="BigNumber"?new r(1/0):1/0}),uU=Da("NaN",["config","?BigNumber"],e=>{var{config:t,BigNumber:r}=e;return t.number==="BigNumber"?new r(NaN):NaN}),lU=Da("pi",["config","?BigNumber"],e=>{var{config:t,BigNumber:r}=e;return t.number==="BigNumber"?Pv(r):xI}),fU=Da("tau",["config","?BigNumber"],e=>{var{config:t,BigNumber:r}=e;return t.number==="BigNumber"?XL(r):yI}),cU=Da("e",["config","?BigNumber"],e=>{var{config:t,BigNumber:r}=e;return t.number==="BigNumber"?YL(r):wI}),pU=Da("phi",["config","?BigNumber"],e=>{var{config:t,BigNumber:r}=e;return t.number==="BigNumber"?ZL(r):bI}),mU=Da("LN2",["config","?BigNumber"],e=>{var{config:t,BigNumber:r}=e;return t.number==="BigNumber"?new r(2).ln():Math.LN2}),dU=Da("LN10",["config","?BigNumber"],e=>{var{config:t,BigNumber:r}=e;return t.number==="BigNumber"?new r(10).ln():Math.LN10}),hU=Da("LOG2E",["config","?BigNumber"],e=>{var{config:t,BigNumber:r}=e;return t.number==="BigNumber"?new r(1).div(new r(2).ln()):Math.LOG2E}),gU=Da("LOG10E",["config","?BigNumber"],e=>{var{config:t,BigNumber:r}=e;return t.number==="BigNumber"?new r(1).div(new r(10).ln()):Math.LOG10E}),vU=Da("SQRT1_2",["config","?BigNumber"],e=>{var{config:t,BigNumber:r}=e;return t.number==="BigNumber"?new r("0.5").sqrt():Math.SQRT1_2}),xU=Da("SQRT2",["config","?BigNumber"],e=>{var{config:t,BigNumber:r}=e;return t.number==="BigNumber"?new r(2).sqrt():Math.SQRT2}),yU=Da("i",["Complex"],e=>{var{Complex:t}=e;return t.I}),wU=$("PI",["pi"],e=>{var{pi:t}=e;return t}),bU=$("E",["e"],e=>{var{e:t}=e;return t}),DU=$("version",[],()=>nU);function Da(e,t,r){return $(e,t,r,{recreateOnConfigChange:!0})}var SU=sr("speedOfLight","299792458","m s^-1"),NU=sr("gravitationConstant","6.67430e-11","m^3 kg^-1 s^-2"),EU=sr("planckConstant","6.62607015e-34","J s"),AU=sr("reducedPlanckConstant","1.0545718176461565e-34","J s"),CU=sr("magneticConstant","1.25663706212e-6","N A^-2"),MU=sr("electricConstant","8.8541878128e-12","F m^-1"),TU=sr("vacuumImpedance","376.730313667","ohm"),_U=sr("coulomb","8.987551792261171e9","N m^2 C^-2"),OU=sr("elementaryCharge","1.602176634e-19","C"),FU=sr("bohrMagneton","9.2740100783e-24","J T^-1"),IU=sr("conductanceQuantum","7.748091729863649e-5","S"),kU=sr("inverseConductanceQuantum","12906.403729652257","ohm"),LU=sr("magneticFluxQuantum","2.0678338484619295e-15","Wb"),BU=sr("nuclearMagneton","5.0507837461e-27","J T^-1"),PU=sr("klitzing","25812.807459304513","ohm");var RU=sr("bohrRadius","5.29177210903e-11","m"),qU=sr("classicalElectronRadius","2.8179403262e-15","m"),zU=sr("electronMass","9.1093837015e-31","kg"),UU=sr("fermiCoupling","1.1663787e-5","GeV^-2"),HU=yb("fineStructure",.0072973525693),$U=sr("hartreeEnergy","4.3597447222071e-18","J"),WU=sr("protonMass","1.67262192369e-27","kg"),VU=sr("deuteronMass","3.3435830926e-27","kg"),GU=sr("neutronMass","1.6749271613e-27","kg"),YU=sr("quantumOfCirculation","3.6369475516e-4","m^2 s^-1"),ZU=sr("rydberg","10973731.568160","m^-1"),XU=sr("thomsonCrossSection","6.6524587321e-29","m^2"),KU=yb("weakMixingAngle",.2229),JU=yb("efimovFactor",22.7),QU=sr("atomicMass","1.66053906660e-27","kg"),jU=sr("avogadro","6.02214076e23","mol^-1"),eH=sr("boltzmann","1.380649e-23","J K^-1"),tH=sr("faraday","96485.33212331001","C mol^-1"),rH=sr("firstRadiation","3.7417718521927573e-16","W m^2"),nH=sr("loschmidt","2.686780111798444e25","m^-3"),iH=sr("gasConstant","8.31446261815324","J K^-1 mol^-1"),oH=sr("molarPlanckConstant","3.990312712893431e-10","J s mol^-1"),aH=sr("molarVolume","0.022413969545014137","m^3 mol^-1"),sH=yb("sackurTetrode",-1.16487052358),uH=sr("secondRadiation","0.014387768775039337","m K"),lH=sr("stefanBoltzmann","5.67037441918443e-8","W m^-2 K^-4"),fH=sr("wienDisplacement","2.897771955e-3","m K"),cH=sr("molarMass","0.99999999965e-3","kg mol^-1"),pH=sr("molarMassC12","11.9999999958e-3","kg mol^-1"),mH=sr("gravity","9.80665","m s^-2"),dH=sr("planckLength","1.616255e-35","m"),hH=sr("planckMass","2.176435e-8","kg"),gH=sr("planckTime","5.391245e-44","s"),vH=sr("planckCharge","1.87554603778e-18","C"),xH=sr("planckTemperature","1.416785e+32","K");function sr(e,t,r){var n=["config","Unit","BigNumber"];return $(e,n,i=>{var{config:o,Unit:l,BigNumber:s}=i,a=o.number==="BigNumber"?new s(t):parseFloat(t),u=new l(a,r);return u.fixPrefix=!0,u})}function yb(e,t){var r=["config","BigNumber"];return $(e,r,n=>{var{config:i,BigNumber:o}=n;return i.number==="BigNumber"?new o(t):t})}var Spe="apply",Npe=["typed","isInteger"],yH=$(Spe,Npe,e=>{var{typed:t,isInteger:r}=e,n=Dd({typed:t,isInteger:r});return t("apply",{"...any":function(o){var l=o[1];Rt(l)?o[1]=l-1:Nt(l)&&(o[1]=l.minus(1));try{return n.apply(null,o)}catch(s){throw Gr(s)}}})},{isTransformFunction:!0});var Epe="column",Ape=["typed","Index","matrix","range"],wH=$(Epe,Ape,e=>{var{typed:t,Index:r,matrix:n,range:i}=e,o=ww({typed:t,Index:r,matrix:n,range:i});return t("column",{"...any":function(s){var a=s.length-1,u=s[a];Rt(u)&&(s[a]=u-1);try{return o.apply(null,s)}catch(f){throw Gr(f)}}})},{isTransformFunction:!0});function Fd(e,t,r){var n=e.filter(function(a){return Ir(a)&&!(a.name in t)&&!r.has(a.name)})[0];if(!n)throw new Error('No undefined variable found in inline expression "'+e+'"');var i=n.name,o=new Map,l=new ad(r,o,new Set([i])),s=e.compile();return function(u){return o.set(i,u),s.evaluate(l)}}var Cpe="transformCallback",Mpe=["typed"],Id=$(Cpe,Mpe,e=>{var{typed:t}=e;return function(n,i){return t.isTypedFunction(n)?r(n,i):bH(n,n.length,i)};function r(n,i){var o=Object.fromEntries(Object.entries(n.signatures).map(l=>{var[s,a]=l,u=s.split(",").length;return t.isTypedFunction(a)?[s,r(a,i)]:[s,bH(a,u,i)]}));return typeof n.name=="string"?t(n.name,o):t(o)}});function bH(e,t,r){return t===r?e:t===r+1?function(){for(var n=arguments.length,i=new Array(n),o=0;or+1?function(){for(var n=arguments.length,i=new Array(n),o=0;ot+1)}var Tpe="filter",_pe=["typed"],SH=$(Tpe,_pe,e=>{var{typed:t}=e;function r(i,o,l){var s=bw({typed:t}),a=Id({typed:t});if(i.length===0)return s();var u=i[0];if(i.length===1)return s(u);var f=i.length-1,p=i[f];return u&&(u=n(u,l)),p&&(Ir(p)||Va(p)?p=n(p,l):p=Fd(p,o,l)),s(u,a(p,f))}r.rawArgs=!0;function n(i,o){return i.compile().evaluate(o)}return r},{isTransformFunction:!0});var Ope="forEach",Fpe=["typed"],NH=$(Ope,Fpe,e=>{var{typed:t}=e,r=Dw({typed:t}),n=Id({typed:t});function i(l,s,a){if(l.length===0)return r();var u=l[0];if(l.length===1)return r(u);var f=l.length-1,p=l[f];return u&&(u=o(u,a)),p&&(Ir(p)||Va(p)?p=o(p,a):p=Fd(p,s,a)),r(u,n(p,f))}i.rawArgs=!0;function o(l,s){return l.compile().evaluate(s)}return i},{isTransformFunction:!0});var Ipe="index",kpe=["Index","getMatrixDataType"],EH=$(Ipe,kpe,e=>{var{Index:t,getMatrixDataType:r}=e;return function(){for(var i=[],o=0,l=arguments.length;o0?0:2;else if(s&&s.isSet===!0)s=s.map(function(u){return u-1});else if(dr(s)||yt(s))r(s)!=="boolean"&&(s=s.map(function(u){return u-1}));else if(Rt(s))s--;else if(Nt(s))s=s.toNumber()-1;else if(typeof s!="string")throw new TypeError("Dimension must be an Array, Matrix, number, string, or Range");i[o]=s}var a=new t;return t.apply(a,i),a}},{isTransformFunction:!0});var Lpe="map",Bpe=["typed"],AH=$(Lpe,Bpe,e=>{var{typed:t}=e,r=Sw({typed:t}),n=Id({typed:t});function i(o,l,s){if(o.length===0)return r();if(o.length===1)return r(o[0]);var a=o.length-1,u=o.slice(0,a),f=o[a];return u=u.map(h=>p(h,s)),f&&(Ir(f)||Va(f)?f=p(f,s):f=Fd(f,l,s)),r(...u,n(f,a));function p(h,g){return h.compile().evaluate(g)}}return i.rawArgs=!0,i},{isTransformFunction:!0});function CH(e){return Rt(e)?e-1:Nt(e)?e.minus(1):e}function MH(e){return Rt(e)||Nt(e)}function co(e){if(e.length===2&&hn(e[0])){e=e.slice();var t=e[1];MH(t)&&(e[1]=CH(t))}return e}var Ppe="max",Rpe=["typed","config","numeric","larger"],TH=$(Ppe,Rpe,e=>{var{typed:t,config:r,numeric:n,larger:i}=e,o=zw({typed:t,config:r,numeric:n,larger:i});return t("max",{"...any":function(s){s=co(s);try{return o.apply(null,s)}catch(a){throw Gr(a)}}})},{isTransformFunction:!0});var qpe="mean",zpe=["typed","add","divide"],_H=$(qpe,zpe,e=>{var{typed:t,add:r,divide:n}=e,i=db({typed:t,add:r,divide:n});return t("mean",{"...any":function(l){l=co(l);try{return i.apply(null,l)}catch(s){throw Gr(s)}}})},{isTransformFunction:!0});var Upe="min",Hpe=["typed","config","numeric","smaller"],OH=$(Upe,Hpe,e=>{var{typed:t,config:r,numeric:n,smaller:i}=e,o=Uw({typed:t,config:r,numeric:n,smaller:i});return t("min",{"...any":function(s){s=co(s);try{return o.apply(null,s)}catch(a){throw Gr(a)}}})},{isTransformFunction:!0});var $pe="range",Wpe=["typed","config","?matrix","?bignumber","smaller","smallerEq","larger","largerEq","add","isPositive"],FH=$($pe,Wpe,e=>{var{typed:t,config:r,matrix:n,bignumber:i,smaller:o,smallerEq:l,larger:s,largerEq:a,add:u,isPositive:f}=e,p=Cw({typed:t,config:r,matrix:n,bignumber:i,smaller:o,smallerEq:l,larger:s,largerEq:a,add:u,isPositive:f});return t("range",{"...any":function(g){var x=g.length-1,v=g[x];return typeof v!="boolean"&&g.push(!0),p.apply(null,g)}})},{isTransformFunction:!0});var Vpe="row",Gpe=["typed","Index","matrix","range"],IH=$(Vpe,Gpe,e=>{var{typed:t,Index:r,matrix:n,range:i}=e,o=Mw({typed:t,Index:r,matrix:n,range:i});return t("row",{"...any":function(s){var a=s.length-1,u=s[a];Rt(u)&&(s[a]=u-1);try{return o.apply(null,s)}catch(f){throw Gr(f)}}})},{isTransformFunction:!0});var Ype="subset",Zpe=["typed","matrix","zeros","add"],kH=$(Ype,Zpe,e=>{var{typed:t,matrix:r,zeros:n,add:i}=e,o=Tw({typed:t,matrix:r,zeros:n,add:i});return t("subset",{"...any":function(s){try{return o.apply(null,s)}catch(a){throw Gr(a)}}})},{isTransformFunction:!0});var Xpe="concat",Kpe=["typed","matrix","isInteger"],LH=$(Xpe,Kpe,e=>{var{typed:t,matrix:r,isInteger:n}=e,i=yw({typed:t,matrix:r,isInteger:n});return t("concat",{"...any":function(l){var s=l.length-1,a=l[s];Rt(a)?l[s]=a-1:Nt(a)&&(l[s]=a.minus(1));try{return i.apply(null,l)}catch(u){throw Gr(u)}}})},{isTransformFunction:!0});var BH="diff",Jpe=["typed","matrix","subtract","number","bignumber"],PH=$(BH,Jpe,e=>{var{typed:t,matrix:r,subtract:n,number:i,bignumber:o}=e,l=Nw({typed:t,matrix:r,subtract:n,number:i,bignumber:o});return t(BH,{"...any":function(a){a=co(a);try{return l.apply(null,a)}catch(u){throw Gr(u)}}})},{isTransformFunction:!0});var Qpe="std",jpe=["typed","map","sqrt","variance"],RH=$(Qpe,jpe,e=>{var{typed:t,map:r,sqrt:n,variance:i}=e,o=vb({typed:t,map:r,sqrt:n,variance:i});return t("std",{"...any":function(s){s=co(s);try{return o.apply(null,s)}catch(a){throw Gr(a)}}})},{isTransformFunction:!0});var qH="sum",eme=["typed","config","add","numeric"],zH=$(qH,eme,e=>{var{typed:t,config:r,add:n,numeric:i}=e,o=cb({typed:t,config:r,add:n,numeric:i});return t(qH,{"...any":function(s){s=co(s);try{return o.apply(null,s)}catch(a){throw Gr(a)}}})},{isTransformFunction:!0});var tme="quantileSeq",rme=["typed","bignumber","add","subtract","divide","multiply","partitionSelect","compare","isInteger","smaller","smallerEq","larger"],UH=$(tme,rme,e=>{var{typed:t,bignumber:r,add:n,subtract:i,divide:o,multiply:l,partitionSelect:s,compare:a,isInteger:u,smaller:f,smallerEq:p,larger:h}=e,g=gb({typed:t,bignumber:r,add:n,subtract:i,divide:o,multiply:l,partitionSelect:s,compare:a,isInteger:u,smaller:f,smallerEq:p,larger:h});return t("quantileSeq",{"Array | Matrix, number | BigNumber":g,"Array | Matrix, number | BigNumber, number":(v,S,D)=>g(v,S,x(D)),"Array | Matrix, number | BigNumber, boolean":g,"Array | Matrix, number | BigNumber, boolean, number":(v,S,D,C)=>g(v,S,D,x(C)),"Array | Matrix, Array | Matrix":g,"Array | Matrix, Array | Matrix, number":(v,S,D)=>g(v,S,x(D)),"Array | Matrix, Array | Matrix, boolean":g,"Array | Matrix, Array | Matrix, boolean, number":(v,S,D,C)=>g(v,S,D,x(C))});function x(v){return co([[],v])[1]}},{isTransformFunction:!0});var HH="cumsum",nme=["typed","add","unaryPlus"],$H=$(HH,nme,e=>{var{typed:t,add:r,unaryPlus:n}=e,i=mb({typed:t,add:r,unaryPlus:n});return t(HH,{"...any":function(l){if(l.length===2&&hn(l[0])){var s=l[1];Rt(s)?l[1]=s-1:Nt(s)&&(l[1]=s.minus(1))}try{return i.apply(null,l)}catch(a){throw Gr(a)}}})},{isTransformFunction:!0});var WH="variance",ime=["typed","add","subtract","multiply","divide","apply","isNaN"],VH=$(WH,ime,e=>{var{typed:t,add:r,subtract:n,multiply:i,divide:o,apply:l,isNaN:s}=e,a=hb({typed:t,add:r,subtract:n,multiply:i,divide:o,apply:l,isNaN:s});return t(WH,{"...any":function(f){f=co(f);try{return a.apply(null,f)}catch(p){throw Gr(p)}}})},{isTransformFunction:!0});var GH="print",ome=["typed","matrix","zeros","add"],YH=$(GH,ome,e=>{var{typed:t,matrix:r,zeros:n,add:i}=e,o=Ow({typed:t,matrix:r,zeros:n,add:i});return t(GH,{"string, Object | Array":function(a,u){return o(l(a),u)},"string, Object | Array, number | Object":function(a,u,f){return o(l(a),u,f)}});function l(s){return s.replace(_w,a=>{var u=a.slice(1).split("."),f=u.map(function(p){return!isNaN(p)&&p.length>0?parseInt(p)-1:p});return"$"+f.join(".")})}},{isTransformFunction:!0});var ame="and",sme=["typed","matrix","zeros","add","equalScalar","not","concat"],ZH=$(ame,sme,e=>{var{typed:t,matrix:r,equalScalar:n,zeros:i,not:o,concat:l}=e,s=Fw({typed:t,matrix:r,equalScalar:n,zeros:i,not:o,concat:l});function a(u,f,p){var h=u[0].compile().evaluate(p);if(!hn(h)&&!s(h,!0))return!1;var g=u[1].compile().evaluate(p);return s(h,g)}return a.rawArgs=!0,a},{isTransformFunction:!0});var ume="or",lme=["typed","matrix","equalScalar","DenseMatrix","concat"],XH=$(ume,lme,e=>{var{typed:t,matrix:r,equalScalar:n,DenseMatrix:i,concat:o}=e,l=xw({typed:t,matrix:r,equalScalar:n,DenseMatrix:i,concat:o});function s(a,u,f){var p=a[0].compile().evaluate(f);if(!hn(p)&&l(p,!1))return!0;var h=a[1].compile().evaluate(f);return l(p,h)}return s.rawArgs=!0,s},{isTransformFunction:!0});var fme="bitAnd",cme=["typed","matrix","zeros","add","equalScalar","not","concat"],KH=$(fme,cme,e=>{var{typed:t,matrix:r,equalScalar:n,zeros:i,not:o,concat:l}=e,s=gw({typed:t,matrix:r,equalScalar:n,zeros:i,not:o,concat:l});function a(u,f,p){var h=u[0].compile().evaluate(p);if(!hn(h)){if(isNaN(h))return NaN;if(h===0||h===!1)return 0}var g=u[1].compile().evaluate(p);return s(h,g)}return a.rawArgs=!0,a},{isTransformFunction:!0});var pme="bitOr",mme=["typed","matrix","equalScalar","DenseMatrix","concat"],JH=$(pme,mme,e=>{var{typed:t,matrix:r,equalScalar:n,DenseMatrix:i,concat:o}=e,l=vw({typed:t,matrix:r,equalScalar:n,DenseMatrix:i,concat:o});function s(a,u,f){var p=a[0].compile().evaluate(f);if(!hn(p)){if(isNaN(p))return NaN;if(p===-1)return-1;if(p===!0)return 1}var h=a[1].compile().evaluate(f);return l(p,h)}return s.rawArgs=!0,s},{isTransformFunction:!0});var _C=TC;var r$=fn(q1(),1);var jH=fn(QH(),1);function e$(e){var t=new jH.default;return e.on=t.on.bind(t),e.off=t.off.bind(t),e.once=t.once.bind(t),e.emit=t.emit.bind(t),e}function t$(e,t,r,n){function i(S,D){var C=arguments.length;if(C!==1&&C!==2)throw new ba("import",C,1,2);D||(D={});function E(O,F,I){if(Array.isArray(F))F.forEach(q=>E(O,q));else if(typeof F=="object")for(var B in F)xt(F,B)&&E(O,F[B],B);else if(sp(F)||I!==void 0){var L=sp(F)?x(F)?F.fn+".transform":F.fn:I;if(xt(O,L)&&O[L]!==F&&!D.silent)throw new Error('Cannot import "'+L+'" twice');O[L]=F}else if(!D.silent)throw new TypeError("Factory, Object, or Array expected")}var M={};E(M,S);for(var T in M)if(xt(M,T)){var N=M[T];if(sp(N))u(N,D);else if(f(N))o(T,N,D);else if(!D.silent)throw new TypeError("Factory, Object, or Array expected")}}function o(S,D,C){if(C.wrap&&typeof D=="function"&&(D=a(D)),p(D)&&(D=e(S,{[D.signature]:D})),e.isTypedFunction(r[S])&&e.isTypedFunction(D)){C.override?D=e(S,D.signatures):D=e(r[S],D),r[S]=D,delete n[S],l(S,D),r.emit("import",S,function(){return D});return}if(r[S]===void 0||C.override){r[S]=D,delete n[S],l(S,D),r.emit("import",S,function(){return D});return}if(!C.silent)throw new Error('Cannot import "'+S+'": already exists')}function l(S,D){D&&typeof D.transform=="function"?(r.expression.transform[S]=D.transform,h(S)&&(r.expression.mathWithTransform[S]=D.transform)):(delete r.expression.transform[S],h(S)&&(r.expression.mathWithTransform[S]=D))}function s(S){delete r.expression.transform[S],h(S)?r.expression.mathWithTransform[S]=r[S]:delete r.expression.mathWithTransform[S]}function a(S){var D=function(){for(var E=[],M=0,T=arguments.length;M2&&arguments[2]!==void 0?arguments[2]:S.fn;if(C.includes("."))throw new Error("Factory name should not contain a nested path. Name: "+JSON.stringify(C));var E=x(S)?r.expression.transform:r,M=C in r.expression.transform,T=xt(E,C)?E[C]:void 0,N=function(){var F={};S.dependencies.map($E).forEach(B=>{if(B.includes("."))throw new Error("Factory dependency should not contain a nested path. Name: "+JSON.stringify(B));B==="math"?F.math=r:B==="mathWithTransform"?F.mathWithTransform=r.expression.mathWithTransform:B==="classes"?F.classes=r:F[B]=r[B]});var I=S(F);if(I&&typeof I.transform=="function")throw new Error('Transforms cannot be attached to factory functions. Please create a separate function for it with export const path = "expression.transform"');if(T===void 0||D.override)return I;if(e.isTypedFunction(T)&&e.isTypedFunction(I))return e(T,I);if(D.silent)return T;throw new Error('Cannot import "'+C+'": already exists')};!S.meta||S.meta.lazy!==!1?(ld(E,C,N),T&&M?s(C):(x(S)||g(S))&&ld(r.expression.mathWithTransform,C,()=>E[C])):(E[C]=N(),T&&M?s(C):(x(S)||g(S))&&ld(r.expression.mathWithTransform,C,()=>E[C])),n[C]=S,r.emit("import",C,N)}function f(S){return typeof S=="function"||typeof S=="number"||typeof S=="string"||typeof S=="boolean"||S===null||ei(S)||gi(S)||Nt(S)||va(S)||yt(S)||Array.isArray(S)}function p(S){return typeof S=="function"&&typeof S.signature=="string"}function h(S){return!xt(v,S)}function g(S){return!S.fn.includes(".")&&!xt(v,S.fn)&&(!S.meta||!S.meta.isClass)}function x(S){return S!==void 0&&S.meta!==void 0&&S.meta.isTransformFunction===!0||!1}var v={expression:!0,type:!0,docs:!0,error:!0,json:!0,chain:!0};return i}function wb(e,t){var r=Wn({},S1,t);if(typeof Object.create!="function")throw new Error("ES5 not supported by this JavaScript engine. Please load the es5-shim and es5-sham library for compatibility.");var n=e$({isNumber:Rt,isComplex:gi,isBigNumber:Nt,isBigInt:E1,isFraction:va,isUnit:ei,isString:cn,isArray:dr,isMatrix:yt,isCollection:hn,isDenseMatrix:El,isSparseMatrix:xa,isRange:Pf,isIndex:Nu,isBoolean:A1,isResultSet:C1,isHelp:sd,isFunction:M1,isDate:T1,isRegExp:_1,isObject:ks,isMap:Su,isPartitionedMap:aF,isObjectWrappingMap:sF,isNull:O1,isUndefined:F1,isAccessorNode:Mo,isArrayNode:vi,isAssignmentNode:I1,isBlockNode:k1,isConditionalNode:L1,isConstantNode:Qt,isFunctionAssignmentNode:Va,isFunctionNode:Gi,isIndexNode:Vo,isNode:ir,isObjectNode:Eu,isOperatorNode:Ur,isParenthesisNode:xi,isRangeNode:B1,isRelationalNode:P1,isSymbolNode:Ir,isChain:ud});n.config=hF(r,n.emit),n.expression={transform:{},mathWithTransform:{config:n.config}};var i=[],o=[];function l(f){if(sp(f))return f(n);var p=f[Object.keys(f)[0]];if(sp(p))return p(n);if(!fF(f))throw console.warn("Factory object with properties `type`, `name`, and `factory` expected",f),new Error("Factory object with properties `type`, `name`, and `factory` expected");var h=i.indexOf(f),g;return h===-1?(f.math===!0?g=f.factory(n.type,r,l,n.typed,n):g=f.factory(n.type,r,l,n.typed),i.push(f),o.push(g)):g=o[h],g}var s={};function a(){for(var f=arguments.length,p=new Array(f),h=0;h{Object.values(s).forEach(f=>{f&&f.meta&&f.meta.recreateOnConfigChange&&u(f,{override:!0})})}),n.create=wb.bind(null,e),n.factory=$,n.import(Object.values(uF(e))),n.ArgumentsError=ba,n.DimensionError=Wt,n.IndexError=bi,n}var Hd={};wu(Hd,{ABS:()=>ohe,ACCRINT:()=>J0e,ACCRINTM:()=>Q0e,ACOS:()=>ahe,ACOSH:()=>she,ACOT:()=>uhe,ACOTH:()=>lhe,AGGREGATE:()=>fhe,AMORDEGRC:()=>j0e,AMORLINC:()=>exe,AND:()=>Zxe,ARABIC:()=>che,ASC:()=>Qme,ASIN:()=>phe,ASINH:()=>mhe,ATAN:()=>dhe,ATAN2:()=>hhe,ATANH:()=>ghe,AVEDEV:()=>Ede,AVERAGE:()=>wp,AVERAGEA:()=>VC,AVERAGEIF:()=>Ade,AVERAGEIFS:()=>Cde,BAHTTEXT:()=>jme,BASE:()=>vhe,BESSELI:()=>Gge,BESSELJ:()=>Yge,BESSELK:()=>Zge,BESSELY:()=>Xge,BETA:()=>Wv,BETADIST:()=>Fve,BETAINV:()=>Ive,BIN2DEC:()=>Kge,BIN2HEX:()=>Jge,BIN2OCT:()=>Qge,BINOM:()=>qd,BINOMDIST:()=>kve,BITAND:()=>jge,BITLSHIFT:()=>eve,BITOR:()=>tve,BITRSHIFT:()=>rve,BITXOR:()=>nve,CEILING:()=>kl,CEILINGMATH:()=>Lve,CEILINGPRECISE:()=>Bve,CELL:()=>Mme,CHAR:()=>y$,CHIDIST:()=>Pve,CHIDISTRT:()=>Rve,CHIINV:()=>qve,CHIINVRT:()=>zve,CHISQ:()=>zs,CHITEST:()=>Uve,CHOOSE:()=>Hme,CLEAN:()=>ede,CODE:()=>w$,COLUMN:()=>$me,COLUMNS:()=>Wme,COMBIN:()=>kd,COMBINA:()=>xhe,COMPLEX:()=>ho,CONCAT:()=>tde,CONCATENATE:()=>b$,CONFIDENCE:()=>GC,CONVERT:()=>ive,CORREL:()=>Mde,COS:()=>yhe,COSH:()=>whe,COT:()=>bhe,COTH:()=>Dhe,COUNT:()=>Uv,COUNTA:()=>Hv,COUNTBLANK:()=>S$,COUNTIF:()=>Tde,COUNTIFS:()=>_de,COUPDAYBS:()=>txe,COUPDAYS:()=>rxe,COUPDAYSNC:()=>nxe,COUPNCD:()=>ixe,COUPNUM:()=>oxe,COUPPCD:()=>axe,COVAR:()=>Hve,COVARIANCE:()=>zd,COVARIANCEP:()=>$ve,COVARIANCES:()=>Wve,CRITBINOM:()=>Vve,CSC:()=>She,CSCH:()=>Nhe,CUMIPMT:()=>sxe,CUMPRINC:()=>uxe,DATE:()=>_ge,DATEDIF:()=>Vf,DATEVALUE:()=>Oge,DAVERAGE:()=>R0e,DAY:()=>Fge,DAYS:()=>yp,DAYS360:()=>Gf,DB:()=>lxe,DBCS:()=>rde,DCOUNT:()=>q0e,DCOUNTA:()=>z0e,DDB:()=>fxe,DEC2BIN:()=>ove,DEC2HEX:()=>ave,DEC2OCT:()=>sve,DECIMAL:()=>Ehe,DEGREES:()=>Ahe,DELTA:()=>uve,DEVSQ:()=>Ode,DGET:()=>U0e,DISC:()=>cxe,DMAX:()=>H0e,DMIN:()=>$0e,DOLLAR:()=>nde,DOLLARDE:()=>pxe,DOLLARFR:()=>mxe,DPRODUCT:()=>W0e,DSTDEV:()=>V0e,DSTDEVP:()=>G0e,DSUM:()=>Y0e,DURATION:()=>dxe,DVAR:()=>Z0e,DVARP:()=>X0e,EDATE:()=>Ige,EFFECT:()=>hxe,EOMONTH:()=>kge,ERF:()=>iM,ERFC:()=>oM,ERFCPRECISE:()=>Gve,ERFPRECISE:()=>Yve,ERROR:()=>d$,EVEN:()=>Che,EXACT:()=>ide,EXP:()=>Mhe,EXPON:()=>YC,EXPONDIST:()=>Zve,F:()=>Us,FACT:()=>Il,FACTDOUBLE:()=>O$,FALSE:()=>Xxe,FDIST:()=>Xve,FDISTRT:()=>Kve,FIND:()=>ode,FINV:()=>Jve,FINVRT:()=>Qve,FISHER:()=>Fde,FISHERINV:()=>Ide,FIXED:()=>D$,FLOOR:()=>Sp,FLOORMATH:()=>jve,FLOORPRECISE:()=>e0e,FORECAST:()=>N$,FREQUENCY:()=>kde,FTEST:()=>t0e,FV:()=>Np,FVSCHEDULE:()=>gxe,GAMMA:()=>Vv,GAMMADIST:()=>r0e,GAMMAINV:()=>n0e,GAMMALN:()=>ZC,GAMMALNPRECISE:()=>i0e,GAUSS:()=>Lde,GCD:()=>The,GEOMEAN:()=>Bde,GESTEP:()=>lve,GROWTH:()=>Pde,HARMEAN:()=>Rde,HEX2BIN:()=>fve,HEX2DEC:()=>cve,HEX2OCT:()=>pve,HLOOKUP:()=>Vme,HOUR:()=>Lge,HYPGEOM:()=>XC,HYPGEOMDIST:()=>o0e,IF:()=>Kxe,IFERROR:()=>Qxe,IFNA:()=>jxe,IFS:()=>Jxe,IMABS:()=>aM,IMAGINARY:()=>Jr,IMARGUMENT:()=>sM,IMCONJUGATE:()=>mve,IMCOS:()=>Rb,IMCOSH:()=>k$,IMCOT:()=>dve,IMCSC:()=>Nve,IMCSCH:()=>Eve,IMDIV:()=>Ep,IMEXP:()=>hve,IMLN:()=>gve,IMLOG10:()=>vve,IMLOG2:()=>xve,IMPOWER:()=>yve,IMPRODUCT:()=>wve,IMREAL:()=>Qr,IMSEC:()=>bve,IMSECH:()=>Dve,IMSIN:()=>qb,IMSINH:()=>L$,IMSQRT:()=>Sve,IMSUB:()=>Ave,IMSUM:()=>Cve,IMTAN:()=>Mve,INDEX:()=>Gme,INFO:()=>Tme,INT:()=>_he,INTERCEPT:()=>qde,INTRATE:()=>vxe,IPMT:()=>R$,IRR:()=>xxe,ISBLANK:()=>_me,ISERR:()=>h$,ISERROR:()=>kb,ISEVEN:()=>Ome,ISFORMULA:()=>Fme,ISLOGICAL:()=>g$,ISNA:()=>Ime,ISNONTEXT:()=>kme,ISNUMBER:()=>Lb,ISO:()=>Ohe,ISODD:()=>Lme,ISOWEEKNUM:()=>I$,ISPMT:()=>yxe,ISREF:()=>Bme,ISTEXT:()=>v$,KURT:()=>zde,LARGE:()=>E$,LCM:()=>Fhe,LEFT:()=>ade,LEN:()=>sde,LINEST:()=>KC,LN:()=>Ihe,LOG:()=>khe,LOG10:()=>Lhe,LOGEST:()=>Ude,LOGINV:()=>a0e,LOGNORM:()=>Ud,LOGNORMDIST:()=>s0e,LOGNORMINV:()=>u0e,LOOKUP:()=>Yme,LOWER:()=>ude,MATCH:()=>Zme,MAX:()=>Eb,MAXA:()=>Hde,MAXIFS:()=>$de,MDURATION:()=>wxe,MEDIAN:()=>A$,MID:()=>lde,MIN:()=>Ab,MINA:()=>Wde,MINIFS:()=>Vde,MINUTE:()=>Bge,MIRR:()=>bxe,MMULT:()=>Bhe,MOD:()=>Phe,MODE:()=>bp,MODEMULT:()=>l0e,MODESNGL:()=>f0e,MONTH:()=>Pge,MROUND:()=>Rhe,MULTINOMIAL:()=>qhe,MUNIT:()=>zhe,N:()=>Pme,NA:()=>Rme,NEGBINOM:()=>JC,NEGBINOMDIST:()=>c0e,NETWORKDAYS:()=>Bb,NETWORKDAYSINTL:()=>p0e,NOMINAL:()=>Dxe,NORM:()=>Hs,NORMDIST:()=>m0e,NORMINV:()=>d0e,NORMSDIST:()=>h0e,NORMSINV:()=>g0e,NOT:()=>eye,NOW:()=>Rge,NPER:()=>Sxe,NPV:()=>qC,NUMBERVALUE:()=>fde,OCT2BIN:()=>Tve,OCT2DEC:()=>_ve,OCT2HEX:()=>Ove,ODD:()=>Uhe,ODDFPRICE:()=>Nxe,ODDFYIELD:()=>Exe,ODDLPRICE:()=>Axe,ODDLYIELD:()=>Cxe,OR:()=>tye,PDURATION:()=>Mxe,PEARSON:()=>C$,PERCENTILE:()=>Sa,PERCENTILEEXC:()=>v0e,PERCENTILEINC:()=>x0e,PERCENTRANK:()=>Gv,PERCENTRANKEXC:()=>y0e,PERCENTRANKINC:()=>w0e,PERMUT:()=>Gde,PERMUTATIONA:()=>Yde,PHI:()=>Zde,PI:()=>Hhe,PMT:()=>Zv,POISSON:()=>QC,POISSONDIST:()=>b0e,POWER:()=>F$,PPMT:()=>Txe,PRICE:()=>_xe,PRICEDISC:()=>Oxe,PRICEMAT:()=>Fxe,PROB:()=>Xde,PRODUCT:()=>Cb,PRONETIC:()=>cde,PROPER:()=>pde,PV:()=>Ixe,QUARTILE:()=>Dp,QUARTILEEXC:()=>D0e,QUARTILEINC:()=>S0e,QUOTIENT:()=>$he,RADIANS:()=>Whe,RAND:()=>Vhe,RANDBETWEEN:()=>Ghe,RANK:()=>Yv,RANKAVG:()=>N0e,RANKEQ:()=>E0e,RATE:()=>kxe,RECEIVED:()=>Lxe,REPLACE:()=>mde,REPT:()=>Na,RIGHT:()=>dde,ROMAN:()=>Yhe,ROUND:()=>Tu,ROUNDDOWN:()=>Zhe,ROUNDUP:()=>Xhe,ROW:()=>Kde,ROWS:()=>Xme,RRI:()=>Bxe,RSQ:()=>Jde,SEARCH:()=>hde,SEC:()=>Khe,SECH:()=>Jhe,SECOND:()=>qge,SERIESSUM:()=>Qhe,SHEET:()=>qme,SHEETS:()=>zme,SIGN:()=>jhe,SIN:()=>ege,SINH:()=>tge,SKEW:()=>jC,SKEWP:()=>A0e,SLN:()=>Pxe,SLOPE:()=>Qde,SMALL:()=>M$,SORT:()=>Kme,SQRT:()=>rge,SQRTPI:()=>nge,STANDARDIZE:()=>jde,STDEV:()=>Ko,STDEVA:()=>ehe,STDEVP:()=>C0e,STDEVPA:()=>the,STDEVS:()=>M0e,STEYX:()=>rhe,SUBSTITUTE:()=>gde,SUBTOTAL:()=>ige,SUM:()=>Ll,SUMIF:()=>oge,SUMIFS:()=>age,SUMPRODUCT:()=>sge,SUMSQ:()=>uge,SUMX2MY2:()=>lge,SUMX2PY2:()=>fge,SUMXMY2:()=>cge,SWITCH:()=>iye,SYD:()=>Rxe,T:()=>Jo,TAN:()=>pge,TANH:()=>mge,TBILLEQ:()=>qxe,TBILLPRICE:()=>zxe,TBILLYIELD:()=>Uxe,TDIST:()=>T0e,TDISTRT:()=>_0e,TEXT:()=>vde,TEXTJOIN:()=>xde,TIME:()=>zge,TIMEVALUE:()=>Uge,TINV:()=>O0e,TODAY:()=>Hge,TRANSPOSE:()=>Jme,TREND:()=>nhe,TRIM:()=>yde,TRIMMEAN:()=>ihe,TRUE:()=>rye,TRUNC:()=>dge,TTEST:()=>F0e,TYPE:()=>Ume,UNICHAR:()=>wde,UNICODE:()=>bde,UNIQUE:()=>WC,UPPER:()=>Dde,VALUE:()=>Sde,VAR:()=>To,VARA:()=>T$,VARP:()=>I0e,VARPA:()=>_$,VARS:()=>k0e,VDB:()=>Hxe,VLOOKUP:()=>x$,WEEKDAY:()=>$ge,WEEKNUM:()=>Wge,WEIBULL:()=>eM,WEIBULLDIST:()=>L0e,WORKDAY:()=>Pb,WORKDAYINTL:()=>B0e,XIRR:()=>$xe,XNPV:()=>Wxe,XOR:()=>nye,YEAR:()=>Vge,YEARFRAC:()=>rM,YIELD:()=>Vxe,YIELDDISC:()=>Gxe,YIELDMAT:()=>Yxe,Z:()=>tM,ZTEST:()=>P0e,utils:()=>oye});var Dt=fn(i$(),1),$v=fn(a$(),1),zC=new Error("#NULL!"),mo=new Error("#DIV/0!"),Fe=new Error("#VALUE!"),Ld=new Error("#REF!"),_b=new Error("#NAME?"),Ge=new Error("#NUM!"),Gt=new Error("#N/A"),UC=new Error("#ERROR!"),u$=new Error("#GETTING_DATA"),hme=Object.freeze({__proto__:null,data:u$,div0:mo,error:UC,na:Gt,name:_b,nil:zC,num:Ge,ref:Ld,value:Fe}),gme="=",vme=[">",">=","<","<=","=","<>"],l$="operator",f$="literal",xme=[l$,f$],Sb=l$,Yf=f$;function Fl(e,t){if(xme.indexOf(t)===-1)throw new Error("Unsupported token type: "+t);return{value:e,type:t}}function yme(e){return typeof e!="string"||/^\d+(\.\d+)?$/.test(e)&&(e=e.indexOf(".")===-1?parseInt(e,10):parseFloat(e)),e}function wme(e){let t=e.length,r=[],n=0,i="",o="";for(;n":case"<":case"=":o=o+l,i.length>0&&(r.push(i),i="");break;default:o.length>0&&(r.push(o),o=""),i=i+l;break}n++}return i.length>0&&r.push(i),o.length>0&&r.push(o),r}function bme(e){let t="",r=[];for(let n=0;n=0?r.push(Fl(i,Sb)):t+=i}return t.length>0&&r.push(Fl(yme(t),Yf)),r.length>0&&r[0].type!==Sb&&r.unshift(Fl(gme,Sb)),r}function Dme(e){let t=[],r;for(let n=0;n":r=e[0]>e[1];break;case">=":r=e[0]>=e[1];break;case"<":r=e[0]":r=e[0]!=e[1];break}return r}function Bd(e){return bme(wme(e))}var Pd=Dme;function Ob(e){let t=[];return po(e,r=>{t.push(r)}),t}function po(e,t){let r=-1,n=e.length;for(;++rArray.isArray(i))||e.length===0)&&(e=[[...e]]),e.map((i,o)=>{i.map((l,s)=>{l||(e[o][s]=0)})});let r=e.reduce((i,o,l)=>o.length>e[i].length?l:i,0),n=e[r].length;return e.map(i=>[...i,...Array(n-i.length).fill(0)])}function at(){let e;if(arguments.length===1){let t=arguments[0];e=Eme(t)?Ob.apply(null,arguments):[t]}else e=Array.from(arguments);for(;!Ame(e);)e=RC(e);return e}function RC(e){return!e||!e.reduce?[e]:e.reduce((t,r)=>{let n=Array.isArray(t),i=Array.isArray(r);return n&&i?t.concat(r):n?(t.push(r),t):i?[t].concat(r):[t,r]})}function Nme(e,t){return t=t||1,!e||typeof e.slice!="function"?e:e.slice(0,e.length-t)}function Eme(e){return e!=null&&typeof e.length=="number"&&typeof e!="string"}function Ame(e){if(!e)return!1;for(let t=0;te.map(n=>n[r])):Fe}function es(e,t){let r=null;return po(e,(n,i)=>{if(n[0]===t)return r=i,!1}),r??Fe}function mr(){for(let e=0;etypeof t=="number")}function Cme(e){e<60&&(e+=1);let r=Math.floor(e-25569)*86400,n=new Date(r*1e3),i=e-Math.floor(e)+1e-7,o=Math.floor(86400*i),l=o%60;o-=l;let s=Math.floor(o/(60*60)),a=Math.floor(o/60)%60,u=n.getUTCDate(),f=n.getUTCMonth();return e>=60&&e<61&&(u=29,f=1),new Date(n.getUTCFullYear(),f,u,s,a,l)}function $C(e){if(typeof e=="boolean"||e instanceof Error)return e;if(typeof e=="number")return e!==0;if(typeof e=="string"){let t=e.toUpperCase();if(t==="TRUE")return!0;if(t==="FALSE")return!1}return e instanceof Date&&!isNaN(e)?!0:Fe}function vr(e){if(!isNaN(e)){if(e instanceof Date)return new Date(e);let t=parseFloat(e);return t<0||t>=2958466?Ge:Cme(t)}return typeof e=="string"&&(e=/(\d{4})-(\d\d?)-(\d\d?)$/.test(e)?new Date(e+"T00:00:00.000"):new Date(e),!isNaN(e))?e:Fe}function m$(e){let t=e.length,r;for(;t--;){if(r=vr(e[t]),r===Fe)return r;e[t]=r}return e}function ue(e){return e instanceof Error?e:e==null?0:(typeof e=="boolean"&&(e=+e),!isNaN(e)&&e!==""?parseFloat(e):Fe)}function Et(e){let t;if(!e||(t=e.length)===0)return Fe;let r;for(;t--;){if(e[t]instanceof Error)return e[t];if(r=ue(e[t]),r instanceof Error)return r;e[t]=r}return e}function Yn(e){return e instanceof Error?e:e==null?"":e.toString()}function Fb(){let e=arguments.length;for(;e--;)if(typeof arguments[e]=="string")return!0;return!1}function Ib(){let e=Ob(arguments),t=Et(at(e.shift()));if(t instanceof Error)return t;let r=e,n=r.length/2;for(let o=0;o{switch(e){case zC:return 1;case mo:return 2;case Fe:return 3;case Ld:return 4;case _b:return 5;case Ge:return 6;case Gt:return 7;case u$:return 8}return Gt};function Tme(){throw new Error("INFO is not implemented")}function _me(e){return e===null}function h$(e){return[Fe,Ld,mo,Ge,_b,zC].indexOf(e)>=0||typeof e=="number"&&(isNaN(e)||!isFinite(e))}function kb(e){return h$(e)||e===Gt}function Ome(e){return!(Math.floor(Math.abs(e))&1)}function Fme(){throw new Error("ISFORMULA is not implemented")}function g$(e){return e===!0||e===!1}function Ime(e){return e===Gt}function kme(e){return typeof e!="string"}function Lb(e){return typeof e=="number"&&!isNaN(e)&&isFinite(e)}function Lme(e){return!!(Math.floor(Math.abs(e))&1)}function Bme(){throw new Error("ISREF is not implemented")}function v$(e){return typeof e=="string"}function Pme(e){return Lb(e)?e:e instanceof Date?e.getTime():e===!0?1:e===!1?0:kb(e)?e:0}function Rme(){return Gt}function qme(){throw new Error("SHEET is not implemented")}function zme(){throw new Error("SHEETS is not implemented")}function Ume(e){if(Lb(e))return 1;if(v$(e))return 2;if(g$(e))return 4;if(kb(e))return 16;if(Array.isArray(e))return 64}function Hme(){if(arguments.length<2)return Gt;let e=arguments[0];return e<1||e>254||arguments.length0&&!Array.isArray(e[0]);return i&&!r?(r=t,t=1):(r=r||1,t=t||1),r<0||t<0?Fe:i&&t===1&&r<=e.length?e[r-1]:t<=e.length&&r<=e[t-1].length?e[t-1][r-1]:Ld}function Yme(e,t,r){t=at(t),r=r?at(r):t;let n=typeof e=="number",i=Gt;for(let o=0;oe)return i}return i}function Zme(e,t,r){if(!e&&e!==0||!t||(arguments.length===2&&(r=1),t=at(t),!(t instanceof Array))||r!==-1&&r!==0&&r!==1)return Gt;let n,i;for(let o=0;oi&&(n=o+1,i=t[o]):(n=o+1,i=t[o]))}else if(r===0){if(typeof e=="string"&&typeof t[o]=="string"){let l=e.toLowerCase().replace(/\?/g,".").replace(/\*/g,".*").replace(/~/g,"\\").replace(/\+/g,"\\+").replace(/\(/g,"\\(").replace(/\)/g,"\\)").replace(/\[/g,"\\[").replace(/\]/g,"\\]");if(new RegExp("^"+l+"$").test(t[o].toLowerCase()))return o+1}else if(t[o]===e)return o+1}else if(r===-1){if(t[o]===e)return o+1;t[o]>e&&(i?t[o]s.sort((a,u)=>(a=Yn(a[t-1]),u=Yn(u[t-1]),r===1?au?r:r*-1)),o=c$(e),l=n?Nb(o):o;return t>=1&&t<=l[0].length?n?Nb(i(l)):i(l):Fe}function Jme(e){if(!e)return Gt;let t=c$(e);return Nb(t)}function WC(){let e=[];for(let t=0;te&&(o=!0)}return i}function Qme(){throw new Error("ASC is not implemented")}function jme(){throw new Error("BAHTTEXT is not implemented")}function y$(e){return e=ue(e),e===0?Fe:e instanceof Error?e:String.fromCharCode(e)}function ede(e){if(Qe(e))return e;e=e||"";let t=/[\0-\x1F]/g;return e.replace(t,"")}function w$(e){if(Qe(e))return e;e=e||"";let t=e.charCodeAt(0);return isNaN(t)&&(t=Fe),t}function b$(){let e=at(arguments),t=mr.apply(void 0,e);if(t)return t;let r=0;for(;(r=e.indexOf(!0))>-1;)e[r]="TRUE";let n=0;for(;(n=e.indexOf(!1))>-1;)e[n]="FALSE";return e.join("")}var tde=b$;function rde(){throw new Error("DBCS is not implemented")}function nde(e,t=2){if(e=ue(e),isNaN(e))return Fe;e=Tu(e,t);let r={style:"currency",currency:"USD",minimumFractionDigits:t>=0?t:0,maximumFractionDigits:t>=0?t:0},n=e.toLocaleString("en-US",r);return e<0?"$("+n.slice(2)+")":n}function ide(e,t){if(arguments.length!==2)return Gt;let r=mr(e,t);return r||(e=Yn(e),t=Yn(t),e===t)}function ode(e,t,r){if(arguments.length<2)return Gt;e=Yn(e),t=Yn(t),r=r===void 0?0:r;let n=t.indexOf(e,r-1);return n===-1?Fe:n+1}function D$(e,t=2,r=!1){if(e=ue(e),isNaN(e)||(t=ue(t),isNaN(t)))return Fe;if(t<0){let n=Math.pow(10,-t);e=Math.round(e/n)*n}else e=e.toFixed(t);if(r)e=e.toString().replace(/,/g,"");else{let n=e.toString().split(".");n[0]=n[0].replace(/\B(?=(\d{3})+$)/g,","),e=n.join(".")}return e}function ade(e,t){let r=mr(e,t);return r||(e=Yn(e),t=t===void 0?1:t,t=ue(t),t instanceof Error||typeof e!="string"?Fe:e.substring(0,t))}function sde(e){return arguments.length===0?UC:e instanceof Error?e:Array.isArray(e)?Fe:Yn(e).length}function ude(e){return arguments.length!==1?Fe:(e=Yn(e),Qe(e)?e:e.toLowerCase())}function lde(e,t,r){if(t==null)return Fe;if(t=ue(t),r=ue(r),Qe(t,r)||typeof e!="string")return r;let n=t-1,i=n+r;return e.substring(n,i)}function fde(e,t,r){return e=Rd(e)?e:"",typeof e=="number"?e:typeof e!="string"?Gt:(t=typeof t>"u"?".":t,r=typeof r>"u"?",":r,Number(e.replace(t,".").replace(r,"")))}function cde(){throw new Error("PRONETIC is not implemented")}function pde(e){return Qe(e)?e:isNaN(e)&&typeof e=="number"?Fe:(e=Yn(e),e.replace(/\w\S*/g,t=>t.charAt(0).toUpperCase()+t.substr(1).toLowerCase()))}function mde(e,t,r,n){return t=ue(t),r=ue(r),Qe(t,r)||typeof e!="string"||typeof n!="string"?Fe:e.substr(0,t-1)+n+e.substr(t-1+r)}function Na(e,t){let r=mr(e,t);return r||(e=Yn(e),t=ue(t),t instanceof Error?t:new Array(t+1).join(e))}function dde(e,t){let r=mr(e,t);return r||(e=Yn(e),t=t===void 0?1:t,t=ue(t),t instanceof Error?t:e.substring(e.length-t))}function hde(e,t,r){let n;return typeof e!="string"||typeof t!="string"?Fe:(r=r===void 0?0:r,n=t.toLowerCase().indexOf(e.toLowerCase(),r-1)+1,n===0?Fe:n)}function gde(e,t,r,n){if(arguments.length<3)return Gt;if(!e||!t)return e;if(n===void 0)return e.split(t).join(r);{if(n=Math.floor(Number(n)),Number.isNaN(n)||n<=0)return Fe;let i=0,o=0;for(;i>-1&&e.indexOf(t,i)>-1;)if(i=e.indexOf(t,i+1),o++,i>-1&&o===n)return e.substring(0,i)+r+e.substring(i+t.length);return e}}function Jo(e){return e instanceof Error||typeof e=="string"?e:""}function vde(e,t){if(e===void 0||e instanceof Error||t instanceof Error)return Gt;if(e instanceof Date)return e.toISOString().slice(0,10);if(t==null)return"";if(typeof t=="number")return String(t);if(typeof t!="string")return Fe;let r=t.startsWith("$")?"$":"",n=t.endsWith("%");t=t.replace(/%/g,"").replace(/\$/g,"");let i=t.includes(".")?t.split(".")[1].match(/0/g).length:0,o=!t.includes(",");return n&&(e=e*100),e=D$(e,i,o),e.startsWith("-")?(e=e.replace("-",""),e="-"+r+e):e=r+e,n&&(e=e+"%"),e}function xde(e,t,...r){if(typeof t!="boolean"&&(t=$C(t)),arguments.length<3)return Gt;e=e??"";let n=at(r),i=t?n.filter(o=>o):n;if(Array.isArray(e)){e=at(e);let o=i.map(s=>[s]),l=0;for(let s=0;sn+i,0)/e.length;return isNaN(r)?0:r}var Wv={};Wv.DIST=function(e,t,r,n,i,o){return arguments.length<4||(i=i===void 0?0:i,o=o===void 0?1:o,e=ue(e),t=ue(t),r=ue(r),i=ue(i),o=ue(o),Qe(e,t,r,i,o))?Fe:(e=(e-i)/(o-i),n?Dt.default.beta.cdf(e,t,r):Dt.default.beta.pdf(e,t,r))};Wv.INV=(e,t,r,n,i)=>(n=n===void 0?0:n,i=i===void 0?1:i,e=ue(e),t=ue(t),r=ue(r),n=ue(n),i=ue(i),Qe(e,t,r,n,i)?Fe:Dt.default.beta.inv(e,t,r)*(i-n)+n);var qd={};qd.DIST=(e,t,r,n)=>(e=ue(e),t=ue(t),r=ue(r),n=ue(n),Qe(e,t,r,n)?Fe:n?Dt.default.binomial.cdf(e,t,r):Dt.default.binomial.pdf(e,t,r));qd.DIST.RANGE=(e,t,r,n)=>{if(n=n===void 0?r:n,e=ue(e),t=ue(t),r=ue(r),n=ue(n),Qe(e,t,r,n))return Fe;let i=0;for(let o=r;o<=n;o++)i+=kd(e,o)*Math.pow(t,o)*Math.pow(1-t,e-o);return i};qd.INV=(e,t,r)=>{if(e=ue(e),t=ue(t),r=ue(r),Qe(e,t,r))return Fe;let n=0;for(;n<=e;){if(Dt.default.binomial.cdf(n,e,t)>=r)return n;n++}};var zs={};zs.DIST=(e,t,r)=>(e=ue(e),t=ue(t),Qe(e,t)?Fe:r?Dt.default.chisquare.cdf(e,t):Dt.default.chisquare.pdf(e,t));zs.DIST.RT=(e,t)=>!e|!t?Gt:e<1||t>Math.pow(10,10)?Ge:typeof e!="number"||typeof t!="number"?Fe:1-Dt.default.chisquare.cdf(e,t);zs.INV=(e,t)=>(e=ue(e),t=ue(t),Qe(e,t)?Fe:Dt.default.chisquare.inv(e,t));zs.INV.RT=(e,t)=>!e|!t?Gt:e<0||e>1||t<1||t>Math.pow(10,10)?Ge:typeof e!="number"||typeof t!="number"?Fe:Dt.default.chisquare.inv(1-e,t);zs.TEST=function(e,t){if(arguments.length!==2)return Gt;if(!(e instanceof Array)||!(t instanceof Array)||e.length!==t.length||e[0]&&t[0]&&e[0].length!==t[0].length)return Fe;let r=e.length,n,i,o;for(i=0;i=2;)g=g*p/x,x=x-2;let v=g,S=h;for(;v>1e-10*g;)S=S+2,v=v*p/S,g=g+v;return 1-g}return Math.round(f(a,s)*1e6)/1e6};var GC={};GC.NORM=(e,t,r)=>(e=ue(e),t=ue(t),r=ue(r),Qe(e,t,r)?Fe:Dt.default.normalci(1,e,t,r)[1]-1);GC.T=(e,t,r)=>(e=ue(e),t=ue(t),r=ue(r),Qe(e,t,r)?Fe:Dt.default.tci(1,e,t,r)[1]-1);function Mde(e,t){return e=Et(at(e)),t=Et(at(t)),Qe(e,t)?Fe:Dt.default.corrcoeff(e,t)}function Uv(){let e=at(arguments);return Bl(e).length}function Hv(){let e=at(arguments);return e.length-S$(e)}function S$(){let e=at(arguments),t=0,r;for(let n=0;n{if(e=Et(at(e)),t=Et(at(t)),Qe(e,t))return Fe;let r=Dt.default.mean(e),n=Dt.default.mean(t),i=0,o=e.length;for(let l=0;l(e=Et(at(e)),t=Et(at(t)),Qe(e,t)?Fe:Dt.default.covariance(e,t));function Ode(){let e=Et(at(arguments));if(e instanceof Error)return e;let t=Dt.default.mean(e),r=0;for(let n=0;n(e=ue(e),t=ue(t),Qe(e,t)?Fe:r?Dt.default.exponential.cdf(e,t):Dt.default.exponential.pdf(e,t));var Us={};Us.DIST=(e,t,r,n)=>(e=ue(e),t=ue(t),r=ue(r),Qe(e,t,r)?Fe:n?Dt.default.centralF.cdf(e,t,r):Dt.default.centralF.pdf(e,t,r));Us.DIST.RT=function(e,t,r){return arguments.length!==3?Gt:e<0||t<1||r<1?Ge:typeof e!="number"||typeof t!="number"||typeof r!="number"?Fe:1-Dt.default.centralF.cdf(e,t,r)};Us.INV=(e,t,r)=>(e=ue(e),t=ue(t),r=ue(r),Qe(e,t,r)?Fe:e<=0||e>1?Ge:Dt.default.centralF.inv(e,t,r));Us.INV.RT=function(e,t,r){return arguments.length!==3?Gt:e<0||e>1||t<1||t>Math.pow(10,10)||r<1||r>Math.pow(10,10)?Ge:typeof e!="number"||typeof t!="number"||typeof r!="number"?Fe:Dt.default.centralF.inv(1-e,t,r)};Us.TEST=(e,t)=>{if(!e||!t||!(e instanceof Array)||!(t instanceof Array))return Gt;if(e.length<2||t.length<2)return mo;let r=(s,a)=>{let u=0;for(let f=0;ft[o-1]&&e[l]<=t[o]&&(i[o]+=1):o===n&&e[l]>t[n-1]&&(i[n]+=1)}return i}function Vv(e){return e=ue(e),e instanceof Error?e:e===0||parseInt(e,10)===e&&e<0?Ge:Dt.default.gammafn(e)}Vv.DIST=function(e,t,r,n){return arguments.length!==4?Gt:e<0||t<=0||r<=0||typeof e!="number"||typeof t!="number"||typeof r!="number"?Fe:n?Dt.default.gamma.cdf(e,t,r,!0):Dt.default.gamma.pdf(e,t,r,!1)};Vv.INV=function(e,t,r){return arguments.length!==3?Gt:e<0||e>1||t<=0||r<=0?Ge:typeof e!="number"||typeof t!="number"||typeof r!="number"?Fe:Dt.default.gamma.inv(e,t,r)};function ZC(e){return e=ue(e),e instanceof Error?e:Dt.default.gammaln(e)}ZC.PRECISE=function(e){return arguments.length!==1?Gt:e<=0?Ge:typeof e!="number"?Fe:Dt.default.gammaln(e)};function Lde(e){return e=ue(e),e instanceof Error?e:Dt.default.normal.cdf(e,0,1)-.5}function Bde(){let e=Et(at(arguments));return e instanceof Error?e:Dt.default.geomean(e)}function Pde(e,t,r,n){if(e=Et(at(e)),e instanceof Error)return e;let i;if(t===void 0)for(t=[],i=1;i<=e.length;i++)t.push(i);if(r===void 0&&(r=t),t=Et(at(t)),r=Et(at(r)),Qe(t,r))return Fe;n===void 0&&(n=!0);let o=e.length,l=0,s=0,a=0,u=0;for(i=0;i{if(e=ue(e),t=ue(t),r=ue(r),n=ue(n),Qe(e,t,r,n))return Fe;function o(s,a,u,f){return kd(u,s)*kd(f-u,a-s)/kd(f,a)}function l(s,a,u,f){let p=0;for(let h=0;h<=s;h++)p+=o(h,a,u,f);return p}return i?l(e,t,r,n):o(e,t,r,n)};function qde(e,t){return e=Et(e),t=Et(t),Qe(e,t)?Fe:e.length!==t.length?Gt:N$(0,e,t)}function zde(){let e=Et(at(arguments));if(e instanceof Error)return e;let t=Dt.default.mean(e),r=e.length,n=0;for(let i=0;ii-n)[t-1]))}function KC(e,t){if(e=Et(at(e)),t=Et(at(t)),Qe(e,t))return Fe;let r=Dt.default.mean(e),n=Dt.default.mean(t),i=t.length,o=0,l=0;for(let u=0;u(e=ue(e),t=ue(t),r=ue(r),Qe(e,t,r)?Fe:n?Dt.default.lognormal.cdf(e,t,r):Dt.default.lognormal.pdf(e,t,r));Ud.INV=(e,t,r)=>(e=ue(e),t=ue(t),r=ue(r),Qe(e,t,r)?Fe:Dt.default.lognormal.inv(e,t,r));function Eb(){let e=at(arguments),t=mr.apply(void 0,e);if(t)return t;let r=Bl(e);return r.length===0?0:Math.max.apply(Math,r)}function Hde(){let e=at(arguments),t=mr.apply(void 0,e);if(t)return t;let r=HC(e);return r=r.map(n=>n??0),r.length===0?0:Math.max.apply(Math,r)}function $de(){let e=Ib(...arguments);return e.length===0?0:Math.max.apply(Math,e)}function A$(){let e=at(arguments),t=mr.apply(void 0,e);if(t)return t;let r=HC(e),n=Dt.default.median(r);return isNaN(n)&&(n=Ge),n}function Ab(){let e=at(arguments),t=mr.apply(void 0,e);if(t)return t;let r=Bl(e);return r.length===0?0:Math.min.apply(Math,r)}function Wde(){let e=at(arguments),t=mr.apply(void 0,e);if(t)return t;let r=HC(e);return r=r.map(n=>n??0),r.length===0?0:Math.min.apply(Math,r)}function Vde(){let e=Ib(...arguments);return e.length===0?0:Math.min.apply(Math,e)}var bp={};bp.MULT=function(){let e=Et(at(arguments));if(e instanceof Error)return e;let t=e.length,r={},n=[],i=0,o;for(let l=0;li&&(i=r[o],n=[]),r[o]===i&&(n[n.length]=o);return n};bp.SNGL=function(){let e=Et(at(arguments));return e instanceof Error?e:bp.MULT(e).sort((t,r)=>t-r)[0]};var JC={};JC.DIST=(e,t,r,n)=>(e=ue(e),t=ue(t),r=ue(r),Qe(e,t,r)?Fe:n?Dt.default.negbin.cdf(e,t,r):Dt.default.negbin.pdf(e,t,r));var Hs={};Hs.DIST=(e,t,r,n)=>(e=ue(e),t=ue(t),r=ue(r),Qe(e,t,r)?Fe:r<=0?Ge:n?Dt.default.normal.cdf(e,t,r):Dt.default.normal.pdf(e,t,r));Hs.INV=(e,t,r)=>(e=ue(e),t=ue(t),r=ue(r),Qe(e,t,r)?Fe:Dt.default.normal.inv(e,t,r));Hs.S={};Hs.S.DIST=(e,t)=>(e=ue(e),e instanceof Error?Fe:t?Dt.default.normal.cdf(e,0,1):Dt.default.normal.pdf(e,0,1));Hs.S.INV=e=>(e=ue(e),e instanceof Error?Fe:Dt.default.normal.inv(e,0,1));function C$(e,t){if(t=Et(at(t)),e=Et(at(e)),Qe(t,e))return Fe;let r=Dt.default.mean(e),n=Dt.default.mean(t),i=e.length,o=0,l=0,s=0;for(let a=0;a{if(e=Et(at(e)),t=ue(t),Qe(e,t))return Fe;e=e.sort((o,l)=>o-l);let r=e.length;if(t<1/(r+1)||t>1-1/(r+1))return Ge;let n=t*(r+1)-1,i=Math.floor(n);return p$(n===i?e[n]:e[i]+(n-i)*(e[i+1]-e[i]))};Sa.INC=(e,t)=>{if(e=Et(at(e)),t=ue(t),Qe(e,t))return Fe;e=e.sort((o,l)=>o-l);let r=e.length,n=t*(r-1),i=Math.floor(n);return p$(n===i?e[n]:e[i]+(n-i)*(e[i+1]-e[i]))};var Gv={};Gv.EXC=(e,t,r)=>{if(r=r===void 0?3:r,e=Et(at(e)),t=ue(t),r=ue(r),Qe(e,t,r))return Fe;e=e.sort((f,p)=>f-p);let n=WC.apply(null,e),i=e.length,o=n.length,l=Math.pow(10,r),s=0,a=!1,u=0;for(;!a&&u=n[u]&&(t{if(r=r===void 0?3:r,e=Et(at(e)),t=ue(t),r=ue(r),Qe(e,t,r))return Fe;e=e.sort((f,p)=>f-p);let n=WC.apply(null,e),i=e.length,o=n.length,l=Math.pow(10,r),s=0,a=!1,u=0;for(;!a&&u=n[u]&&(t(e=ue(e),t=ue(t),Qe(e,t)?Fe:r?Dt.default.poisson.cdf(e,t):Dt.default.poisson.pdf(e,t));function Xde(e,t,r,n){if(r===void 0)return 0;if(n=n===void 0?r:n,e=Et(at(e)),t=Et(at(t)),r=ue(r),n=ue(n),Qe(e,t,r,n))return Fe;if(r===n)return e.indexOf(r)>=0?t[e.indexOf(r)]:0;let i=e.sort((s,a)=>s-a),o=i.length,l=0;for(let s=0;s=r&&i[s]<=n&&(l+=t[e.indexOf(i[s])]);return l}var Dp={};Dp.EXC=(e,t)=>{if(e=Et(Bl(at(e))),t=ue(t),Qe(e,t))return Fe;switch(t){case 1:return Sa.EXC(e,.25);case 2:return Sa.EXC(e,.5);case 3:return Sa.EXC(e,.75);default:return Ge}};Dp.INC=(e,t)=>{if(e=Et(Bl(at(e))),t=ue(t),Qe(e,t))return Fe;switch(t){case 1:return Sa.INC(e,.25);case 2:return Sa.INC(e,.5);case 3:return Sa.INC(e,.75);default:return Ge}};var Yv={};Yv.AVG=(e,t,r)=>{if(e=ue(e),t=Et(at(t)),Qe(e,t))return Fe;t=at(t),r=r||!1;let n=r?(l,s)=>l-s:(l,s)=>s-l;t=t.sort(n);let i=t.length,o=0;for(let l=0;l1?(2*t.indexOf(e)+o+1)/2:t.indexOf(e)+1};Yv.EQ=(e,t,r)=>{if(e=ue(e),t=Et(at(t)),Qe(e,t))return Fe;r=r||!1;let n=r?(i,o)=>i-o:(i,o)=>o-i;return t=t.sort(n),t.indexOf(e)+1};function Kde(e,t){if(arguments.length!==2)return Gt;if(t<0)return Ge;if(!(e instanceof Array)||typeof t!="number")return Fe;if(e.length!==0)return Dt.default.row(e,t)}function Jde(e,t){return e=Et(at(e)),t=Et(at(t)),Qe(e,t)?Fe:Math.pow(C$(e,t),2)}function jC(){let e=Et(at(arguments));if(e instanceof Error)return e;let t=Dt.default.mean(e),r=e.length,n=0;for(let i=0;ir-n)[t-1]}function jde(e,t,r){return e=ue(e),t=ue(t),r=ue(r),Qe(e,t,r)?Fe:(e-t)/r}var Ko={};Ko.P=function(){let e=To.P.apply(this,arguments),t=Math.sqrt(e);return isNaN(t)&&(t=Ge),t};Ko.S=function(){let e=To.S.apply(this,arguments);return Math.sqrt(e)};function ehe(){let e=T$.apply(this,arguments);return Math.sqrt(e)}function the(){let e=_$.apply(this,arguments),t=Math.sqrt(e);return isNaN(t)&&(t=Ge),t}function rhe(e,t){if(e=Et(at(e)),t=Et(at(t)),Qe(e,t))return Fe;let r=Dt.default.mean(t),n=Dt.default.mean(e),i=t.length,o=0,l=0,s=0;for(let a=0;ar!==1&&r!==2?Ge:r===1?Jo.DIST.RT(e,t):Jo.DIST["2T"](e,t);Jo.DIST["2T"]=function(e,t){return arguments.length!==2?Gt:e<0||t<1?Ge:typeof e!="number"||typeof t!="number"?Fe:(1-Dt.default.studentt.cdf(e,t))*2};Jo.DIST.RT=function(e,t){return arguments.length!==2?Gt:e<0||t<1?Ge:typeof e!="number"||typeof t!="number"?Fe:1-Dt.default.studentt.cdf(e,t)};Jo.INV=(e,t)=>(e=ue(e),t=ue(t),Qe(e,t)?Fe:Dt.default.studentt.inv(e,t));Jo.INV["2T"]=(e,t)=>(e=ue(e),t=ue(t),e<=0||e>1||t<1?Ge:Qe(e,t)?Fe:Math.abs(Dt.default.studentt.inv(e/2,t)));Jo.TEST=(e,t)=>{if(e=Et(at(e)),t=Et(at(t)),Qe(e,t))return Fe;let r=Dt.default.mean(e),n=Dt.default.mean(t),i=0,o=0,l;for(l=0;l{l.push(i*s+o)}),l}function ihe(e,t){if(e=Et(at(e)),t=ue(t),Qe(e,t))return Fe;let r=Sp(e.length*t,2)/2;return Dt.default.mean(Nme(vn(e.sort((n,i)=>n-i),r),r))}var To={};To.P=function(){let e=Bl(at(arguments)),t=e.length,r=0,n=wp(e),i;for(let o=0;o(e=ue(e),t=ue(t),r=ue(r),Qe(e,t,r)?Fe:n?1-Math.exp(-Math.pow(e/r,t)):Math.pow(e,t-1)*Math.exp(-Math.pow(e/r,t))*t/Math.pow(r,t));var tM={};tM.TEST=(e,t,r)=>{if(e=Et(at(e)),t=ue(t),Qe(e,t))return Fe;r=r||Ko.S(e);let n=e.length;return 1-Hs.S.DIST((wp(e)-t)/(r/Math.sqrt(n)),!0)};function ohe(e){return e=ue(e),e instanceof Error?e:Math.abs(e)}function ahe(e){if(e=ue(e),e instanceof Error)return e;let t=Math.acos(e);return isNaN(t)&&(t=Ge),t}function she(e){if(e=ue(e),e instanceof Error)return e;let t=Math.log(e+Math.sqrt(e*e-1));return isNaN(t)&&(t=Ge),t}function uhe(e){return e=ue(e),e instanceof Error?e:Math.atan(1/e)}function lhe(e){if(e=ue(e),e instanceof Error)return e;let t=.5*Math.log((e+1)/(e-1));return isNaN(t)&&(t=Ge),t}function fhe(e,t,r,n){if(e=ue(e),t=ue(e),Qe(e,t))return Fe;switch(e){case 1:return wp(r);case 2:return Uv(r);case 3:return Hv(r);case 4:return Eb(r);case 5:return Ab(r);case 6:return Cb(r);case 7:return Ko.S(r);case 8:return Ko.P(r);case 9:return Ll(r);case 10:return To.S(r);case 11:return To.P(r);case 12:return A$(r);case 13:return bp.SNGL(r);case 14:return E$(r,n);case 15:return M$(r,n);case 16:return Sa.INC(r,n);case 17:return Dp.INC(r,n);case 18:return Sa.EXC(r,n);case 19:return Dp.EXC(r,n)}}function che(e){if(e==null)return 0;if(e instanceof Error)return e;if(!/^M*(?:D?C{0,3}|C[MD])(?:L?X{0,3}|X[CL])(?:V?I{0,3}|I[XV])$/.test(e))return Fe;let t=0;return e.replace(/[MDLV]|C[MD]?|X[CL]?|I[XV]?/g,r=>{t+={M:1e3,CM:900,D:500,CD:400,C:100,XC:90,L:50,XL:40,X:10,IX:9,V:5,IV:4,I:1}[r]}),t}function phe(e){if(e=ue(e),e instanceof Error)return e;let t=Math.asin(e);return isNaN(t)&&(t=Ge),t}function mhe(e){return e=ue(e),e instanceof Error?e:Math.log(e+Math.sqrt(e*e+1))}function dhe(e){return e=ue(e),e instanceof Error?e:Math.atan(e)}function hhe(e,t){e=ue(e),t=ue(t);let r=mr(e,t);return r||Math.atan2(e,t)}function ghe(e){if(e=ue(e),e instanceof Error)return e;let t=Math.log((1+e)/(1-e))/2;return isNaN(t)&&(t=Ge),t}function vhe(e,t,r){e=ue(e),t=ue(t),r=ue(r);let n=mr(e,t,r);if(n)return n;if(t===0)return Ge;let i=e.toString(t);return new Array(Math.max(r+1-i.length,0)).join("0")+i}function kl(e,t,r){e=ue(e),t=ue(t),r=ue(r);let n=mr(e,t,r);if(n)return n;if(t===0)return 0;t=Math.abs(t);let i=-Math.floor(Math.log(t)/Math.log(10));return e>=0?Tu(Math.ceil(e/t)*t,i):r===0?-Tu(Math.floor(Math.abs(e)/t)*t,i):-Tu(Math.ceil(Math.abs(e)/t)*t,i)}kl.MATH=kl;kl.PRECISE=kl;function kd(e,t){e=ue(e),t=ue(t);let r=mr(e,t);return r||(e1?UC:(e=ue(e),e instanceof Error||(e=Math.exp(e)),e)}var bb=[];function Il(e){if(e=ue(e),e instanceof Error)return e;let t=Math.floor(e);return t===0||t===1?1:(bb[t]>0||(bb[t]=Il(t-1)*t),bb[t])}function O$(e){if(e=ue(e),e instanceof Error)return e;let t=Math.floor(e);return t<=0?1:t*O$(t-2)}function Sp(e,t){e=ue(e),t=ue(t);let r=mr(e,t);if(r)return r;if(t===0)return 0;if(!(e>=0&&t>0)&&!(e<=0&&t<0))return Ge;t=Math.abs(t);let n=-Math.floor(Math.log(t)/Math.log(10));return e>=0?Tu(Math.floor(e/t)*t,n):-Tu(Math.ceil(Math.abs(e)/t),n)}Sp.MATH=(e,t,r)=>{if(t instanceof Error)return t;t=t===void 0?0:t,e=ue(e),t=ue(t),r=ue(r);let n=mr(e,t,r);if(n)return n;if(t===0)return 0;t=t?Math.abs(t):1;let i=-Math.floor(Math.log(t)/Math.log(10));return e>=0?Tu(Math.floor(e/t)*t,i):r===0||r===void 0?-Tu(Math.ceil(Math.abs(e)/t)*t,i):-Tu(Math.floor(Math.abs(e)/t)*t,i)};Sp.PRECISE=Sp.MATH;function The(){let e=Et(at(arguments));if(e instanceof Error)return e;let t=e.length,r=e[0],n=r<0?-r:r;for(let i=1;il?n%=l:l%=n;n+=l}return n}function _he(e){return e=ue(e),e instanceof Error?e:Math.floor(e)}var Ohe={CEILING:kl};function Fhe(){let e=Et(at(arguments));if(e instanceof Error)return e;for(var t,r,n,i,o=1;(n=e.pop())!==void 0;){if(n===0)return 0;for(;n>1;){if(n%2){for(t=3,r=Math.floor(Math.sqrt(n));t<=r&&n%t;t+=2);i=t<=r?t:n}else i=2;for(n/=i,o*=i,t=e.length;t;e[--t]%i===0&&(e[t]/=i)===1&&e.splice(t,1));}}return o}function Ihe(e){return e=ue(e),e instanceof Error?e:e===0?Ge:Math.log(e)}function khe(e,t){e=ue(e),t=t?ue(t):10;let r=mr(e,t);return r||(e===0||t===0?Ge:Math.log(e)/Math.log(t))}function Lhe(e){return e=ue(e),e instanceof Error?e:e===0?Ge:Math.log(e)/Math.log(10)}function Bhe(e,t){return!Array.isArray(e)||!Array.isArray(t)||e.some(n=>!n.length)||t.some(n=>!n.length)||RC(e).some(n=>typeof n!="number")||RC(t).some(n=>typeof n!="number")||e[0].length!==t.length?Fe:Array(e.length).fill(0).map(()=>Array(t[0].length).fill(0)).map((n,i)=>n.map((o,l)=>e[i].reduce((s,a,u)=>s+a*t[u][l],0)))}function Phe(e,t){e=ue(e),t=ue(t);let r=mr(e,t);if(r)return r;if(t===0)return mo;let n=Math.abs(e%t);return n=e<0?t-n:n,t>0?n:-n}function Rhe(e,t){e=ue(e),t=ue(t);let r=mr(e,t);return r||(e*t===0?0:e*t<0?Ge:Math.round(e/t)*t)}function qhe(){let e=Et(at(arguments));if(e instanceof Error)return e;let t=0,r=1;for(let n=0;n1?Gt:(e=parseInt(e),!e||e<=0?Fe:Array(e).fill(0).map(()=>Array(e).fill(0)).map((t,r)=>(t[r]=1,t)))}function Uhe(e){if(e=ue(e),e instanceof Error)return e;let t=Math.ceil(Math.abs(e));return t=t&1?t:t+1,e>=0?t:-t}function Hhe(){return Math.PI}function F$(e,t){e=ue(e),t=ue(t);let r=mr(e,t);if(r)return r;if(e===0&&t===0)return Ge;let n=Math.pow(e,t);return isNaN(n)?Ge:n}function Cb(){let t=at(arguments).filter(i=>i!=null);if(t.length===0)return 0;let r=Et(t);if(r instanceof Error)return r;let n=1;for(let i=0;i0?1:-1)*Math.floor(Math.abs(e)*Math.pow(10,t))/Math.pow(10,t)}function Xhe(e,t){e=ue(e),t=ue(t);let r=mr(e,t);return r||(e>0?1:-1)*Math.ceil(Math.abs(e)*Math.pow(10,t))/Math.pow(10,t)}function Khe(e){return e=ue(e),e instanceof Error?e:1/Math.cos(e)}function Jhe(e){return e=ue(e),e instanceof Error?e:2/(Math.exp(e)+Math.exp(-e))}function Qhe(e,t,r,n){if(e=ue(e),t=ue(t),r=ue(r),n=Et(n),Qe(e,t,r,n))return Fe;let i=n[0]*Math.pow(e,t);for(let o=1;o{if(e instanceof Error)return!1;if(t instanceof Error)e=t;else if(typeof t=="number")e+=t;else if(typeof t=="string"){let r=parseFloat(t);!isNaN(r)&&(e+=r)}else if(Array.isArray(t)){let r=Ll.apply(null,t);r instanceof Error?e=r:e+=r}}),e}function oge(e,t,r){if(e=at(e),r=r?at(r):e,e instanceof Error)return e;if(t==null||t instanceof Error)return 0;let n=0,i=t==="*",o=i?null:Bd(t+"");for(let l=0;l0?1:-1)*Math.floor(Math.abs(e)*Math.pow(10,t))/Math.pow(10,t)}function hge(e,t){if(arguments.length!==2)return Gt;e=ue(e),t=ue(t);let r=mr(e,t);return r||e+t}function gge(e,t){if(arguments.length!==2)return Gt;e=ue(e),t=ue(t);let r=mr(e,t);return r||(t===0?mo:e/t)}function vge(e,t){return arguments.length!==2?Gt:e instanceof Error?e:t instanceof Error?t:(e===null&&(e=void 0),t===null&&(t=void 0),e===t)}function xge(e,t){if(arguments.length!==2)return Gt;if(e instanceof Error)return e;if(t instanceof Error)return t;Fb(e,t)?(e=Yn(e),t=Yn(t)):(e=ue(e),t=ue(t));let r=mr(e,t);return r||e>t}function yge(e,t){if(arguments.length!==2)return Gt;Fb(e,t)?(e=Yn(e),t=Yn(t)):(e=ue(e),t=ue(t));let r=mr(e,t);return r||e>=t}function wge(e,t){if(arguments.length!==2)return Gt;Fb(e,t)?(e=Yn(e),t=Yn(t)):(e=ue(e),t=ue(t));let r=mr(e,t);return r||ei||s===i&&a28){let i=[31,28,31,30,31,30,31,31,30,31,30,31][n],o=e.getFullYear();n===1&&(o%4===0&&o%100!==0||o%400===0)&&(i=29),r=Math.min(r,i)}return e.setDate(r),e}function kge(e,t){return e=vr(e),e instanceof Error?e:isNaN(t)?Fe:(t=parseInt(t,10),new Date(e.getFullYear(),e.getMonth()+t+1,0))}function Lge(e){return e=vr(e),e instanceof Error?e:e.getHours()}function I$(e){if(e=vr(e),e instanceof Error)return e;e=Tb(e),e.setDate(e.getDate()+4-(e.getDay()||7));let t=new Date(e.getFullYear(),0,1);return Math.ceil(((e-t)/864e5+1)/7)}function Bge(e){return e=vr(e),e instanceof Error?e:e.getMinutes()}function Pge(e){return e=vr(e),e instanceof Error?e:e.getMonth()+1}function Bb(e,t,r){return Bb.INTL(e,t,1,r)}Bb.INTL=(e,t,r,n)=>{if(e=vr(e),e instanceof Error)return e;if(t=vr(t),t instanceof Error)return t;let i=!1,o=[],l=[1,2,3,4,5,6,0],s=new RegExp("^[0|1]{7}$");if(r===void 0)r=Mb[1];else if(typeof r=="string"&&s.test(r)){i=!0,r=r.split("");for(let p=0;p0?f.getUTCDay():f.getDay(),g=i?o.includes(h):h===r[0]||h===r[1];for(let x=0;x{if(e=vr(e),e instanceof Error)return e;if(t=ue(t),t instanceof Error)return t;if(r===void 0?r=Mb[1]:r=Mb[r],!(r instanceof Array))return Fe;n===void 0?n=[]:n instanceof Array||(n=[n]);for(let l=0;l{let S=x.getFullYear(),D=new Date(S,2,1);if(LC(S)&&x=D)return!0;let C=v.getFullYear(),E=new Date(C,2,1);return LC(C)&&v>=E&&xs||i===s&&n>=l))return(o===a&&LC(o)||u(e,t)||s===1&&l===29)&&(f=366),Db(e,t)/f;let p=a-o+1,g=(new Date(a+1,0,1)-new Date(o,0,1))/1e3/60/60/24/p;return Db(e,t)/g}case 2:return Db(e,t)/360;case 3:return Db(e,t)/365;case 4:return(l+s*30+a*360-(n+i*30+o*360))/360}}function s$(e){let t=e>-22038912e5?2:1;return Math.ceil((e-Cge)/864e5)+t}function nM(e){return/^[01]{1,10}$/.test(e)}function Gge(e,t){return e=ue(e),t=ue(t),Qe(e,t)?Fe:$v.default.besseli(e,t)}function Yge(e,t){return e=ue(e),t=ue(t),Qe(e,t)?Fe:$v.default.besselj(e,t)}function Zge(e,t){return e=ue(e),t=ue(t),Qe(e,t)?Fe:$v.default.besselk(e,t)}function Xge(e,t){return e=ue(e),t=ue(t),Qe(e,t)?Fe:$v.default.bessely(e,t)}function Kge(e){if(!nM(e))return Ge;let t=parseInt(e,2),r=e.toString();return r.length===10&&r.substring(0,1)==="1"?parseInt(r.substring(1),2)-512:t}function Jge(e,t){if(!nM(e))return Ge;let r=e.toString();if(r.length===10&&r.substring(0,1)==="1")return(0xfffffffe00+parseInt(r.substring(1),2)).toString(16);let n=parseInt(e,2).toString(16);return t===void 0?n:isNaN(t)?Fe:t<0?Ge:(t=Math.floor(t),t>=n.length?Na("0",t-n.length)+n:Ge)}function Qge(e,t){if(!nM(e))return Ge;let r=e.toString();if(r.length===10&&r.substring(0,1)==="1")return(1073741312+parseInt(r.substring(1),2)).toString(8);let n=parseInt(e,2).toString(8);return t===void 0?n:isNaN(t)?Fe:t<0?Ge:(t=Math.floor(t),t>=n.length?Na("0",t-n.length)+n:Ge)}function jge(e,t){return e=ue(e),t=ue(t),Qe(e,t)?Fe:e<0||t<0||Math.floor(e)!==e||Math.floor(t)!==t||e>0xffffffffffff||t>0xffffffffffff?Ge:e&t}function eve(e,t){return e=ue(e),t=ue(t),Qe(e,t)?Fe:e<0||Math.floor(e)!==e||e>0xffffffffffff||Math.abs(t)>53?Ge:t>=0?e<>-t}function tve(e,t){return e=ue(e),t=ue(t),Qe(e,t)?Fe:e<0||t<0||Math.floor(e)!==e||Math.floor(t)!==t||e>0xffffffffffff||t>0xffffffffffff?Ge:e|t}function rve(e,t){return e=ue(e),t=ue(t),Qe(e,t)?Fe:e<0||Math.floor(e)!==e||e>0xffffffffffff||Math.abs(t)>53?Ge:t>=0?e>>t:e<<-t}function nve(e,t){return e=ue(e),t=ue(t),Qe(e,t)?Fe:e<0||t<0||Math.floor(e)!==e||Math.floor(t)!==t||e>0xffffffffffff||t>0xffffffffffff?Ge:e^t}function ho(e,t,r){if(e=ue(e),t=ue(t),Qe(e,t))return e;if(r=r===void 0?"i":r,r!=="i"&&r!=="j")return Fe;if(e===0&&t===0)return 0;if(e===0)return t===1?r:t.toString()+r;if(t===0)return e.toString();{let n=t>0?"+":"";return e.toString()+n+(t===1?r:t.toString()+r)}}function ive(e,t,r){if(e=ue(e),e instanceof Error)return e;let n=[["a.u. of action","?",null,"action",!1,!1,105457168181818e-48],["a.u. of charge","e",null,"electric_charge",!1,!1,160217653141414e-33],["a.u. of energy","Eh",null,"energy",!1,!1,435974417757576e-32],["a.u. of length","a?",null,"length",!1,!1,529177210818182e-25],["a.u. of mass","m?",null,"mass",!1,!1,910938261616162e-45],["a.u. of time","?/Eh",null,"time",!1,!1,241888432650516e-31],["admiralty knot","admkn",null,"speed",!1,!0,.514773333],["ampere","A",null,"electric_current",!0,!1,1],["ampere per meter","A/m",null,"magnetic_field_intensity",!0,!1,1],["\xE5ngstr\xF6m","\xC5",["ang"],"length",!1,!0,1e-10],["are","ar",null,"area",!1,!0,100],["astronomical unit","ua",null,"length",!1,!1,149597870691667e-25],["bar","bar",null,"pressure",!1,!1,1e5],["barn","b",null,"area",!1,!1,1e-28],["becquerel","Bq",null,"radioactivity",!0,!1,1],["bit","bit",["b"],"information",!1,!0,1],["btu","BTU",["btu"],"energy",!1,!0,1055.05585262],["byte","byte",null,"information",!1,!0,8],["candela","cd",null,"luminous_intensity",!0,!1,1],["candela per square metre","cd/m?",null,"luminance",!0,!1,1],["coulomb","C",null,"electric_charge",!0,!1,1],["cubic \xE5ngstr\xF6m","ang3",["ang^3"],"volume",!1,!0,1e-30],["cubic foot","ft3",["ft^3"],"volume",!1,!0,.028316846592],["cubic inch","in3",["in^3"],"volume",!1,!0,16387064e-12],["cubic light-year","ly3",["ly^3"],"volume",!1,!0,846786664623715e-61],["cubic metre","m3",["m^3"],"volume",!0,!0,1],["cubic mile","mi3",["mi^3"],"volume",!1,!0,416818182544058e-5],["cubic nautical mile","Nmi3",["Nmi^3"],"volume",!1,!0,6352182208],["cubic Pica","Pica3",["Picapt3","Pica^3","Picapt^3"],"volume",!1,!0,758660370370369e-22],["cubic yard","yd3",["yd^3"],"volume",!1,!0,.764554857984],["cup","cup",null,"volume",!1,!0,.0002365882365],["dalton","Da",["u"],"mass",!1,!1,166053886282828e-41],["day","d",["day"],"time",!1,!0,86400],["degree","\xB0",null,"angle",!1,!1,.0174532925199433],["degrees Rankine","Rank",null,"temperature",!1,!0,.555555555555556],["dyne","dyn",["dy"],"force",!1,!0,1e-5],["electronvolt","eV",["ev"],"energy",!1,!0,1.60217656514141],["ell","ell",null,"length",!1,!0,1.143],["erg","erg",["e"],"energy",!1,!0,1e-7],["farad","F",null,"electric_capacitance",!0,!1,1],["fluid ounce","oz",null,"volume",!1,!0,295735295625e-16],["foot","ft",null,"length",!1,!0,.3048],["foot-pound","flb",null,"energy",!1,!0,1.3558179483314],["gal","Gal",null,"acceleration",!1,!1,.01],["gallon","gal",null,"volume",!1,!0,.003785411784],["gauss","G",["ga"],"magnetic_flux_density",!1,!0,1],["grain","grain",null,"mass",!1,!0,647989e-10],["gram","g",null,"mass",!1,!0,.001],["gray","Gy",null,"absorbed_dose",!0,!1,1],["gross registered ton","GRT",["regton"],"volume",!1,!0,2.8316846592],["hectare","ha",null,"area",!1,!0,1e4],["henry","H",null,"inductance",!0,!1,1],["hertz","Hz",null,"frequency",!0,!1,1],["horsepower","HP",["h"],"power",!1,!0,745.69987158227],["horsepower-hour","HPh",["hh","hph"],"energy",!1,!0,2684519538e-3],["hour","h",["hr"],"time",!1,!0,3600],["imperial gallon (U.K.)","uk_gal",null,"volume",!1,!0,.00454609],["imperial hundredweight","lcwt",["uk_cwt","hweight"],"mass",!1,!0,50.802345],["imperial quart (U.K)","uk_qt",null,"volume",!1,!0,.0011365225],["imperial ton","brton",["uk_ton","LTON"],"mass",!1,!0,1016.046909],["inch","in",null,"length",!1,!0,.0254],["international acre","uk_acre",null,"area",!1,!0,4046.8564224],["IT calorie","cal",null,"energy",!1,!0,4.1868],["joule","J",null,"energy",!0,!0,1],["katal","kat",null,"catalytic_activity",!0,!1,1],["kelvin","K",["kel"],"temperature",!0,!0,1],["kilogram","kg",null,"mass",!0,!0,1],["knot","kn",null,"speed",!1,!0,.514444444444444],["light-year","ly",null,"length",!1,!0,9460730472580800],["litre","L",["l","lt"],"volume",!1,!0,.001],["lumen","lm",null,"luminous_flux",!0,!1,1],["lux","lx",null,"illuminance",!0,!1,1],["maxwell","Mx",null,"magnetic_flux",!1,!1,1e-18],["measurement ton","MTON",null,"volume",!1,!0,1.13267386368],["meter per hour","m/h",["m/hr"],"speed",!1,!0,.00027777777777778],["meter per second","m/s",["m/sec"],"speed",!0,!0,1],["meter per second squared","m?s??",null,"acceleration",!0,!1,1],["parsec","pc",["parsec"],"length",!1,!0,0x6da012f958ee1c],["meter squared per second","m?/s",null,"kinematic_viscosity",!0,!1,1],["metre","m",null,"length",!0,!0,1],["miles per hour","mph",null,"speed",!1,!0,.44704],["millimetre of mercury","mmHg",null,"pressure",!1,!1,133.322],["minute","?",null,"angle",!1,!1,.000290888208665722],["minute","min",["mn"],"time",!1,!0,60],["modern teaspoon","tspm",null,"volume",!1,!0,5e-6],["mole","mol",null,"amount_of_substance",!0,!1,1],["morgen","Morgen",null,"area",!1,!0,2500],["n.u. of action","?",null,"action",!1,!1,105457168181818e-48],["n.u. of mass","m?",null,"mass",!1,!1,910938261616162e-45],["n.u. of speed","c?",null,"speed",!1,!1,299792458],["n.u. of time","?/(me?c??)",null,"time",!1,!1,128808866778687e-35],["nautical mile","M",["Nmi"],"length",!1,!0,1852],["newton","N",null,"force",!0,!0,1],["\u0153rsted","Oe ",null,"magnetic_field_intensity",!1,!1,79.5774715459477],["ohm","\u03A9",null,"electric_resistance",!0,!1,1],["ounce mass","ozm",null,"mass",!1,!0,.028349523125],["pascal","Pa",null,"pressure",!0,!1,1],["pascal second","Pa?s",null,"dynamic_viscosity",!0,!1,1],["pferdest\xE4rke","PS",null,"power",!1,!0,735.49875],["phot","ph",null,"illuminance",!1,!1,1e-4],["pica (1/6 inch)","pica",null,"length",!1,!0,.00035277777777778],["pica (1/72 inch)","Pica",["Picapt"],"length",!1,!0,.00423333333333333],["poise","P",null,"dynamic_viscosity",!1,!1,.1],["pond","pond",null,"force",!1,!0,.00980665],["pound force","lbf",null,"force",!1,!0,4.4482216152605],["pound mass","lbm",null,"mass",!1,!0,.45359237],["quart","qt",null,"volume",!1,!0,.000946352946],["radian","rad",null,"angle",!0,!1,1],["second","?",null,"angle",!1,!1,484813681109536e-20],["second","s",["sec"],"time",!0,!0,1],["short hundredweight","cwt",["shweight"],"mass",!1,!0,45.359237],["siemens","S",null,"electrical_conductance",!0,!1,1],["sievert","Sv",null,"equivalent_dose",!0,!1,1],["slug","sg",null,"mass",!1,!0,14.59390294],["square \xE5ngstr\xF6m","ang2",["ang^2"],"area",!1,!0,1e-20],["square foot","ft2",["ft^2"],"area",!1,!0,.09290304],["square inch","in2",["in^2"],"area",!1,!0,64516e-8],["square light-year","ly2",["ly^2"],"area",!1,!0,895054210748189e17],["square meter","m?",null,"area",!0,!0,1],["square mile","mi2",["mi^2"],"area",!1,!0,2589988110336e-6],["square nautical mile","Nmi2",["Nmi^2"],"area",!1,!0,3429904],["square Pica","Pica2",["Picapt2","Pica^2","Picapt^2"],"area",!1,!0,1792111111111e-17],["square yard","yd2",["yd^2"],"area",!1,!0,.83612736],["statute mile","mi",null,"length",!1,!0,1609.344],["steradian","sr",null,"solid_angle",!0,!1,1],["stilb","sb",null,"luminance",!1,!1,1e-4],["stokes","St",null,"kinematic_viscosity",!1,!1,1e-4],["stone","stone",null,"mass",!1,!0,6.35029318],["tablespoon","tbs",null,"volume",!1,!0,147868e-10],["teaspoon","tsp",null,"volume",!1,!0,492892e-11],["tesla","T",null,"magnetic_flux_density",!0,!0,1],["thermodynamic calorie","c",null,"energy",!1,!0,4.184],["ton","ton",null,"mass",!1,!0,907.18474],["tonne","t",null,"mass",!1,!1,1e3],["U.K. pint","uk_pt",null,"volume",!1,!0,.00056826125],["U.S. bushel","bushel",null,"volume",!1,!0,.03523907],["U.S. oil barrel","barrel",null,"volume",!1,!0,.158987295],["U.S. pint","pt",["us_pt"],"volume",!1,!0,.000473176473],["U.S. survey mile","survey_mi",null,"length",!1,!0,1609.347219],["U.S. survey/statute acre","us_acre",null,"area",!1,!0,4046.87261],["volt","V",null,"voltage",!0,!1,1],["watt","W",null,"power",!0,!0,1],["watt-hour","Wh",["wh"],"energy",!1,!0,3600],["weber","Wb",null,"magnetic_flux",!0,!1,1],["yard","yd",null,"length",!1,!0,.9144],["year","yr",null,"time",!1,!0,31557600]],i={Yi:["yobi",80,12089258196146292e8,"Yi","yotta"],Zi:["zebi",70,11805916207174113e5,"Zi","zetta"],Ei:["exbi",60,1152921504606847e3,"Ei","exa"],Pi:["pebi",50,0x4000000000000,"Pi","peta"],Ti:["tebi",40,1099511627776,"Ti","tera"],Gi:["gibi",30,1073741824,"Gi","giga"],Mi:["mebi",20,1048576,"Mi","mega"],ki:["kibi",10,1024,"ki","kilo"]},o={Y:["yotta",1e24,"Y"],Z:["zetta",1e21,"Z"],E:["exa",1e18,"E"],P:["peta",1e15,"P"],T:["tera",1e12,"T"],G:["giga",1e9,"G"],M:["mega",1e6,"M"],k:["kilo",1e3,"k"],h:["hecto",100,"h"],e:["dekao",10,"e"],d:["deci",.1,"d"],c:["centi",.01,"c"],m:["milli",.001,"m"],u:["micro",1e-6,"u"],n:["nano",1e-9,"n"],p:["pico",1e-12,"p"],f:["femto",1e-15,"f"],a:["atto",1e-18,"a"],z:["zepto",1e-21,"z"],y:["yocto",1e-24,"y"]},l=null,s=null,a=t,u=r,f=1,p=1,h;for(let g=0;g=0)&&(l=n[g]),(n[g][1]===u||h.indexOf(u)>=0)&&(s=n[g]);if(l===null){let g=i[t.substring(0,2)],x=o[t.substring(0,1)];t.substring(0,2)==="da"&&(x=["dekao",10,"da"]),g?(f=g[2],a=t.substring(2)):x&&(f=x[1],a=t.substring(x[2].length));for(let v=0;v=0)&&(l=n[v])}if(s===null){let g=i[r.substring(0,2)],x=o[r.substring(0,1)];r.substring(0,2)==="da"&&(x=["dekao",10,"da"]),g?(p=g[2],u=r.substring(2)):x&&(p=x[1],u=r.substring(x[2].length));for(let v=0;v=0)&&(s=n[v])}return l===null||s===null||l[3]!==s[3]?Gt:e*l[6]*f/(s[6]*p)}function ove(e,t){if(e=ue(e),e instanceof Error)return e;if(!/^-?[0-9]{1,3}$/.test(e)||e<-512||e>511)return Ge;if(e<0)return"1"+Na("0",9-(512+e).toString(2).length)+(512+e).toString(2);let r=parseInt(e,10).toString(2);return typeof t>"u"?r:isNaN(t)?Fe:t<0?Ge:(t=Math.floor(t),t>=r.length?Na("0",t-r.length)+r:Ge)}function ave(e,t){if(e=ue(e),e instanceof Error)return e;if(!/^-?[0-9]{1,12}$/.test(e)||e<-549755813888||e>549755813887)return Ge;if(e<0)return(1099511627776+e).toString(16);let r=parseInt(e,10).toString(16);return typeof t>"u"?r:isNaN(t)?Fe:t<0?Ge:(t=Math.floor(t),t>=r.length?Na("0",t-r.length)+r:Ge)}function sve(e,t){if(e=ue(e),e instanceof Error)return e;if(!/^-?[0-9]{1,9}$/.test(e)||e<-536870912||e>536870911)return Ge;if(e<0)return(1073741824+e).toString(8);let r=parseInt(e,10).toString(8);return typeof t>"u"?r:isNaN(t)?Fe:t<0?Ge:(t=Math.floor(t),t>=r.length?Na("0",t-r.length)+r:Ge)}function uve(e,t){return t=t===void 0?0:t,e=ue(e),t=ue(t),Qe(e,t)?Fe:e===t?1:0}function iM(e,t){return t=t===void 0?0:t,e=ue(e),t=ue(t),Qe(e,t)?Fe:Dt.default.erf(e)}iM.PRECISE=()=>{throw new Error("ERF.PRECISE is not implemented")};function oM(e){return isNaN(e)?Fe:Dt.default.erfc(e)}oM.PRECISE=()=>{throw new Error("ERFC.PRECISE is not implemented")};function lve(e,t){return t=t||0,e=ue(e),Qe(t,e)?e:e>=t?1:0}function fve(e,t){if(!/^[0-9A-Fa-f]{1,10}$/.test(e))return Ge;let r=e.length===10&&e.substring(0,1).toLowerCase()==="f",n=r?parseInt(e,16)-1099511627776:parseInt(e,16);if(n<-512||n>511)return Ge;if(r)return"1"+Na("0",9-(512+n).toString(2).length)+(512+n).toString(2);let i=n.toString(2);return t===void 0?i:isNaN(t)?Fe:t<0?Ge:(t=Math.floor(t),t>=i.length?Na("0",t-i.length)+i:Ge)}function cve(e){if(!/^[0-9A-Fa-f]{1,10}$/.test(e))return Ge;let t=parseInt(e,16);return t>=549755813888?t-1099511627776:t}function pve(e,t){if(!/^[0-9A-Fa-f]{1,10}$/.test(e))return Ge;let r=parseInt(e,16);if(r>536870911&&r<0xffe0000000)return Ge;if(r>=0xffe0000000)return(r-0xffc0000000).toString(8);let n=r.toString(8);return t===void 0?n:isNaN(t)?Fe:t<0?Ge:(t=Math.floor(t),t>=n.length?Na("0",t-n.length)+n:Ge)}function aM(e){let t=Qr(e),r=Jr(e);return Qe(t,r)?Fe:Math.sqrt(Math.pow(t,2)+Math.pow(r,2))}function Jr(e){if(e===void 0||e===!0||e===!1)return Fe;if(e===0||e==="0")return 0;if(["i","j"].indexOf(e)>=0)return 1;e=e+"",e=e.replace("+i","+1i").replace("-i","-1i").replace("+j","+1j").replace("-j","-1j");let t=e.indexOf("+"),r=e.indexOf("-");t===0&&(t=e.indexOf("+",1)),r===0&&(r=e.indexOf("-",1));let n=e.substring(e.length-1,e.length),i=n==="i"||n==="j";return t>=0||r>=0?i?t>=0?isNaN(e.substring(0,t))||isNaN(e.substring(t+1,e.length-1))?Ge:Number(e.substring(t+1,e.length-1)):isNaN(e.substring(0,r))||isNaN(e.substring(r+1,e.length-1))?Ge:-Number(e.substring(r+1,e.length-1)):Ge:i?isNaN(e.substring(0,e.length-1))?Ge:e.substring(0,e.length-1):isNaN(e)?Ge:0}function sM(e){let t=Qr(e),r=Jr(e);return Qe(t,r)?Fe:t===0&&r===0?mo:t===0&&r>0?Math.PI/2:t===0&&r<0?-Math.PI/2:r===0&&t>0?0:r===0&&t<0?-Math.PI:t>0?Math.atan(r/t):t<0&&r>=0?Math.atan(r/t)+Math.PI:Math.atan(r/t)-Math.PI}function mve(e){let t=Qr(e),r=Jr(e);if(Qe(t,r))return Fe;let n=e.substring(e.length-1);return n=n==="i"||n==="j"?n:"i",r!==0?ho(t,-r,n):e}function Rb(e){let t=Qr(e),r=Jr(e);if(Qe(t,r))return Fe;let n=e.substring(e.length-1);return n=n==="i"||n==="j"?n:"i",ho(Math.cos(t)*(Math.exp(r)+Math.exp(-r))/2,-Math.sin(t)*(Math.exp(r)-Math.exp(-r))/2,n)}function k$(e){let t=Qr(e),r=Jr(e);if(Qe(t,r))return Fe;let n=e.substring(e.length-1);return n=n==="i"||n==="j"?n:"i",ho(Math.cos(r)*(Math.exp(t)+Math.exp(-t))/2,Math.sin(r)*(Math.exp(t)-Math.exp(-t))/2,n)}function dve(e){let t=Qr(e),r=Jr(e);return Qe(t,r)?Fe:Ep(Rb(e),qb(e))}function Ep(e,t){let r=Qr(e),n=Jr(e),i=Qr(t),o=Jr(t);if(Qe(r,n,i,o))return Fe;let l=e.substring(e.length-1),s=t.substring(t.length-1),a="i";if((l==="j"||s==="j")&&(a="j"),i===0&&o===0)return Ge;let u=i*i+o*o;return ho((r*i+n*o)/u,(n*i-r*o)/u,a)}function hve(e){let t=Qr(e),r=Jr(e);if(Qe(t,r))return Fe;let n=e.substring(e.length-1);n=n==="i"||n==="j"?n:"i";let i=Math.exp(t);return ho(i*Math.cos(r),i*Math.sin(r),n)}function gve(e){let t=Qr(e),r=Jr(e);if(Qe(t,r))return Fe;let n=e.substring(e.length-1);return n=n==="i"||n==="j"?n:"i",ho(Math.log(Math.sqrt(t*t+r*r)),Math.atan(r/t),n)}function vve(e){let t=Qr(e),r=Jr(e);if(Qe(t,r))return Fe;let n=e.substring(e.length-1);return n=n==="i"||n==="j"?n:"i",ho(Math.log(Math.sqrt(t*t+r*r))/Math.log(10),Math.atan(r/t)/Math.log(10),n)}function xve(e){let t=Qr(e),r=Jr(e);if(Qe(t,r))return Fe;let n=e.substring(e.length-1);return n=n==="i"||n==="j"?n:"i",ho(Math.log(Math.sqrt(t*t+r*r))/Math.log(2),Math.atan(r/t)/Math.log(2),n)}function yve(e,t){t=ue(t);let r=Qr(e),n=Jr(e);if(Qe(t,r,n))return Fe;let i=e.substring(e.length-1);i=i==="i"||i==="j"?i:"i";let o=Math.pow(aM(e),t),l=sM(e);return ho(o*Math.cos(t*l),o*Math.sin(t*l),i)}function wve(){let e=arguments[0];if(!arguments.length)return Fe;for(let t=1;t=0)return 0;e=e+"";let t=e.indexOf("+"),r=e.indexOf("-");t===0&&(t=e.indexOf("+",1)),r===0&&(r=e.indexOf("-",1));let n=e.substring(e.length-1,e.length),i=n==="i"||n==="j";return t>=0||r>=0?i?t>=0?isNaN(e.substring(0,t))||isNaN(e.substring(t+1,e.length-1))?Ge:Number(e.substring(0,t)):isNaN(e.substring(0,r))||isNaN(e.substring(r+1,e.length-1))?Ge:Number(e.substring(0,r)):Ge:i?isNaN(e.substring(0,e.length-1))?Ge:0:isNaN(e)?Ge:e}function bve(e){if(e===!0||e===!1)return Fe;let t=Qr(e),r=Jr(e);return Qe(t,r)?Fe:Ep("1",Rb(e))}function Dve(e){let t=Qr(e),r=Jr(e);return Qe(t,r)?Fe:Ep("1",k$(e))}function qb(e){let t=Qr(e),r=Jr(e);if(Qe(t,r))return Fe;let n=e.substring(e.length-1);return n=n==="i"||n==="j"?n:"i",ho(Math.sin(t)*(Math.exp(r)+Math.exp(-r))/2,Math.cos(t)*(Math.exp(r)-Math.exp(-r))/2,n)}function L$(e){let t=Qr(e),r=Jr(e);if(Qe(t,r))return Fe;let n=e.substring(e.length-1);return n=n==="i"||n==="j"?n:"i",ho(Math.cos(r)*(Math.exp(t)-Math.exp(-t))/2,Math.sin(r)*(Math.exp(t)+Math.exp(-t))/2,n)}function Sve(e){let t=Qr(e),r=Jr(e);if(Qe(t,r))return Fe;let n=e.substring(e.length-1);n=n==="i"||n==="j"?n:"i";let i=Math.sqrt(aM(e)),o=sM(e);return ho(i*Math.cos(o/2),i*Math.sin(o/2),n)}function Nve(e){if(e===!0||e===!1)return Fe;let t=Qr(e),r=Jr(e);return Qe(t,r)?Ge:Ep("1",qb(e))}function Eve(e){if(e===!0||e===!1)return Fe;let t=Qr(e),r=Jr(e);return Qe(t,r)?Ge:Ep("1",L$(e))}function Ave(e,t){let r=Qr(e),n=Jr(e),i=Qr(t),o=Jr(t);if(Qe(r,n,i,o))return Fe;let l=e.substring(e.length-1),s=t.substring(t.length-1),a="i";return(l==="j"||s==="j")&&(a="j"),ho(r-i,n-o,a)}function Cve(){if(!arguments.length)return Fe;let e=at(arguments),t=e[0];for(let r=1;r511)return Ge;if(r)return"1"+Na("0",9-(512+n).toString(2).length)+(512+n).toString(2);let i=n.toString(2);return typeof t>"u"?i:isNaN(t)?Fe:t<0?Ge:(t=Math.floor(t),t>=i.length?Na("0",t-i.length)+i:Ge)}function _ve(e){if(!/^[0-7]{1,10}$/.test(e))return Ge;let t=parseInt(e,8);return t>=536870912?t-1073741824:t}function Ove(e,t){if(!/^[0-7]{1,10}$/.test(e))return Ge;let r=parseInt(e,8);if(r>=536870912)return"ff"+(r+3221225472).toString(16);let n=r.toString(16);return t===void 0?n:isNaN(t)?Fe:t<0?Ge:(t=Math.floor(t),t>=n.length?Na("0",t-n.length)+n:Ge)}var Fve=Wv.DIST,Ive=Wv.INV,kve=qd.DIST,Lve=kl.MATH,Bve=kl.PRECISE,Pve=zs.DIST,Rve=zs.DIST.RT,qve=zs.INV,zve=zs.INV.RT,Uve=zs.TEST,Hve=zd.P,$ve=zd.P,Wve=zd.S,Vve=qd.INV,Gve=oM.PRECISE,Yve=iM.PRECISE,Zve=YC.DIST,Xve=Us.DIST,Kve=Us.DIST.RT,Jve=Us.INV,Qve=Us.INV.RT,jve=Sp.MATH,e0e=Sp.PRECISE,t0e=Us.TEST,r0e=Vv.DIST,n0e=Vv.INV,i0e=ZC.PRECISE,o0e=XC.DIST,a0e=Ud.INV,s0e=Ud.DIST,u0e=Ud.INV,l0e=bp.MULT,f0e=bp.SNGL,c0e=JC.DIST,p0e=Bb.INTL,m0e=Hs.DIST,d0e=Hs.INV,h0e=Hs.S.DIST,g0e=Hs.S.INV,v0e=Sa.EXC,x0e=Sa.INC,y0e=Gv.EXC,w0e=Gv.INC,b0e=QC.DIST,D0e=Dp.EXC,S0e=Dp.INC,N0e=Yv.AVG,E0e=Yv.EQ,A0e=jC.P,C0e=Ko.P,M0e=Ko.S,T0e=Jo.DIST,_0e=Jo.DIST.RT,O0e=Jo.INV,F0e=Jo.TEST,I0e=To.P,k0e=To.S,L0e=eM.DIST,B0e=Pb.INTL,P0e=tM.TEST;function uM(e){let t=[];return po(e,r=>{r&&t.push(r)}),t}function ts(e,t){let r={};for(let o=1;on&&(n=t[o].length);for(let o=1;o{o+=i[l]}),n.length===0?mo:o/n.length}function q0e(e,t,r){if(isNaN(t)&&typeof t!="string")return Fe;let n=ts(e,r),i=[];if(typeof t=="string"){let l=es(e,t);i=vn(e[l])}else i=vn(e[t]);let o=[];return po(n,l=>{o.push(i[l])}),Uv(o)}function z0e(e,t,r){if(isNaN(t)&&typeof t!="string")return Fe;let n=ts(e,r),i=[];if(typeof t=="string"){let l=es(e,t);i=vn(e[l])}else i=vn(e[t]);let o=[];return po(n,l=>{o.push(i[l])}),Hv(o)}function U0e(e,t,r){if(isNaN(t)&&typeof t!="string")return Fe;let n=ts(e,r),i=[];if(typeof t=="string"){let o=es(e,t);i=vn(e[o])}else i=vn(e[t]);return n.length===0?Fe:n.length>1?Ge:i[n[0]]}function H0e(e,t,r){if(isNaN(t)&&typeof t!="string")return Fe;let n=ts(e,r),i=[];if(typeof t=="string"){let l=es(e,t);i=vn(e[l])}else i=vn(e[t]);let o=i[n[0]];return po(n,l=>{o{o>i[l]&&(o=i[l])}),o}function W0e(e,t,r){if(isNaN(t)&&typeof t!="string")return Fe;let n=ts(e,r),i=[];if(typeof t=="string"){let s=es(e,t);i=vn(e[s])}else i=vn(e[t]);let o=[];po(n,s=>{o.push(i[s])}),o=uM(o);let l=1;return po(o,s=>{l*=s}),l}function V0e(e,t,r){if(isNaN(t)&&typeof t!="string")return Fe;let n=ts(e,r),i=[];if(typeof t=="string"){let l=es(e,t);i=vn(e[l])}else i=vn(e[t]);let o=[];return po(n,l=>{o.push(i[l])}),o=uM(o),Ko.S(o)}function G0e(e,t,r){if(isNaN(t)&&typeof t!="string")return Fe;let n=ts(e,r),i=[];if(typeof t=="string"){let l=es(e,t);i=vn(e[l])}else i=vn(e[t]);let o=[];return po(n,l=>{o.push(i[l])}),o=uM(o),Ko.P(o)}function Y0e(e,t,r){if(isNaN(t)&&typeof t!="string")return Fe;let n=ts(e,r),i=[];if(typeof t=="string"){let l=es(e,t);i=vn(e[l])}else i=vn(e[t]);let o=[];return po(n,l=>{o.push(i[l])}),Ll(o)}function Z0e(e,t,r){if(isNaN(t)&&typeof t!="string")return Fe;let n=ts(e,r),i=[];if(typeof t=="string"){let l=es(e,t);i=vn(e[l])}else i=vn(e[t]);let o=[];return po(n,l=>{o.push(i[l])}),To.S(o)}function X0e(e,t,r){if(isNaN(t)&&typeof t!="string")return Fe;let n=ts(e,r),i=[];if(typeof t=="string"){let l=es(e,t);i=vn(e[l])}else i=vn(e[t]);let o=[];return po(n,l=>{o.push(i[l])}),To.P(o)}function BC(e){return e&&e.getTime&&!isNaN(e.getTime())}function PC(e){return e instanceof Date?e:new Date(e)}function K0e(e,t,r){let n=vr(t);for(n.setFullYear(e.getFullYear()),ne;)n.setMonth(n.getMonth()+-12/r);return n}function B$(e){return e=ue(e),[1,2,4].indexOf(e)===-1?Ge:e}function P$(e){return e=ue(e),[0,1,2,3,4].indexOf(e)===-1?Ge:e}function J0e(e,t,r,n,i,o,l){return e=PC(e),t=PC(t),r=PC(r),o=B$(o),l=P$(l),mr(o,l)?Ge:!BC(e)||!BC(t)||!BC(r)?Fe:n<=0||i<=0||r<=e?Ge:(i=i||0,l=l||0,i*n*rM(e,r,l))}function Q0e(){throw new Error("ACCRINTM is not implemented")}function j0e(){throw new Error("AMORDEGRC is not implemented")}function exe(){throw new Error("AMORLINC is not implemented")}function txe(){throw new Error("COUPDAYBS is not implemented")}function rxe(e,t,r,n){if(n=P$(n),r=B$(r),e=vr(e),t=vr(t),mr(e,t))return Fe;if(mr(r,n)||e>=t)return Ge;if(n===1){let o=K0e(e,t,r),l=vr(o);return l.setMonth(l.getMonth()+12/r),Vf(o,l,"D")}let i;switch(n){case 0:case 2:case 4:i=360;break;case 3:i=365;break;default:return Ge}return i/r}function nxe(){throw new Error("COUPDAYSNC is not implemented")}function ixe(){throw new Error("COUPNCD is not implemented")}function oxe(){throw new Error("COUPNUM is not implemented")}function axe(){throw new Error("COUPPCD is not implemented")}function sxe(e,t,r,n,i,o){if(e=ue(e),t=ue(t),r=ue(r),Qe(e,t,r))return Fe;if(e<=0||t<=0||r<=0||n<1||i<1||n>i||o!==0&&o!==1)return Ge;let l=Zv(e,t,r,0,o),s=0;n===1&&(o===0&&(s=-r),n++);for(let a=n;a<=i;a++)s+=o===1?Np(e,a-2,l,r,1)-l:Np(e,a-1,l,r,0);return s*=e,s}function uxe(e,t,r,n,i,o){if(e=ue(e),t=ue(t),r=ue(r),Qe(e,t,r))return Fe;if(e<=0||t<=0||r<=0||n<1||i<1||n>i||o!==0&&o!==1)return Ge;let l=Zv(e,t,r,0,o),s=0;n===1&&(s=o===0?l+r*e:l,n++);for(let a=n;a<=i;a++)s+=o>0?l-(Np(e,a-2,l,r,1)-l)*e:l-Np(e,a-1,l,r,0)*e;return s}function lxe(e,t,r,n,i){if(i=i===void 0?12:i,e=ue(e),t=ue(t),r=ue(r),n=ue(n),i=ue(i),Qe(e,t,r,n,i))return Fe;if(e<0||t<0||r<0||n<0||[1,2,3,4,5,6,7,8,9,10,11,12].indexOf(i)===-1||n>r)return Ge;if(t>=e)return 0;let o=(1-Math.pow(t/e,1/r)).toFixed(3),l=e*o*i/12,s=l,a=0,u=n===r?r-1:n;for(let f=2;f<=u;f++)a=(e-s)*o,s+=a;return n===1?l:n===r?(e-s)*o:a}function fxe(e,t,r,n,i){if(i=i===void 0?2:i,e=ue(e),t=ue(t),r=ue(r),n=ue(n),i=ue(i),Qe(e,t,r,n,i))return Fe;if(e<0||t<0||r<0||n<0||i<=0||n>r)return Ge;if(t>=e)return 0;let o=0,l=0;for(let s=1;s<=n;s++)l=Math.min((e-o)*(i/r),e-t-o),o+=l;return l}function cxe(e,t,r,n,i){if(e=vr(e),t=vr(t),r=ue(r),n=ue(n),i=ue(i),i=i||0,Qe(e,t,r,n,i))return Fe;if(r<=0||n<=0)return Ge;if(e>=t)return Fe;let o,l;switch(i){case 0:o=360,l=Gf(e,t,!1);break;case 1:o=365,l=Vf(e,t,"D");break;case 2:o=360,l=Vf(e,t,"D");break;case 3:o=365,l=Vf(e,t,"D");break;case 4:o=360,l=Gf(e,t,!0);break;default:return Ge}return(n-r)/n*o/l}function pxe(e,t){if(e=ue(e),t=ue(t),Qe(e,t))return Fe;if(t<0)return Ge;if(t>=0&&t<1)return mo;t=parseInt(t,10);let r=parseInt(e,10);r+=e%1*Math.pow(10,Math.ceil(Math.log(t)/Math.LN10))/t;let n=Math.pow(10,Math.ceil(Math.log(t)/Math.LN2)+1);return r=Math.round(r*n)/n,r}function mxe(e,t){if(e=ue(e),t=ue(t),Qe(e,t))return Fe;if(t<0)return Ge;if(t>=0&&t<1)return mo;t=parseInt(t,10);let r=parseInt(e,10);return r+=e%1*Math.pow(10,-Math.ceil(Math.log(t)/Math.LN10))*t,r}function dxe(){throw new Error("DURATION is not implemented")}function hxe(e,t){return e=ue(e),t=ue(t),Qe(e,t)?Fe:e<=0||t<1?Ge:(t=parseInt(t,10),Math.pow(1+e/t,t)-1)}function Np(e,t,r,n,i){if(n=n||0,i=i||0,e=ue(e),t=ue(t),r=ue(r),n=ue(n),i=ue(i),Qe(e,t,r,n,i))return Fe;let o;if(e===0)o=n+r*t;else{let l=Math.pow(1+e,t);o=i===1?n*l+r*(1+e)*(l-1)/e:n*l+r*(l-1)/e}return-o}function gxe(e,t){if(e=ue(e),t=Et(at(t)),Qe(e,t))return Fe;let r=t.length,n=e;for(let i=0;i{let S=v+1,D=g[0];for(let C=1;C{let S=v+1,D=0;for(let C=1;C0&&(o=!0),e[g]<0&&(l=!0);if(!o||!l)return Ge;t=t===void 0?.1:t;let s=t,a=1e-10,u,f,p,h=!0;do p=r(e,i,s),u=s-p/n(e,i,s),f=Math.abs(u-s),s=u,h=f>a&&Math.abs(p)>a;while(h);return s}function yxe(e,t,r,n){return e=ue(e),t=ue(t),r=ue(r),n=ue(n),Qe(e,t,r,n)?Fe:n*e*(t/r-1)}function wxe(){throw new Error("MDURATION is not implemented")}function bxe(e,t,r){if(e=Et(at(e)),t=ue(t),r=ue(r),Qe(e,t,r))return Fe;let n=e.length,i=[],o=[];for(let a=0;a=t)return Fe;let o,l;switch(i){case 0:o=360,l=Gf(e,t,!1);break;case 1:o=365,l=Vf(e,t,"D");break;case 2:o=360,l=Vf(e,t,"D");break;case 3:o=365,l=Vf(e,t,"D");break;case 4:o=360,l=Gf(e,t,!0);break;default:return Ge}return n-r*n*l/o}function Fxe(){throw new Error("PRICEMAT is not implemented")}function Ixe(e,t,r,n,i){return n=n||0,i=i||0,e=ue(e),t=ue(t),r=ue(r),n=ue(n),i=ue(i),Qe(e,t,r,n,i)?Fe:e===0?-r*t-n:((1-Math.pow(1+e,t))/e*r*(1+e*i)-n)/Math.pow(1+e,t)}function kxe(e,t,r,n,i,o){if(o=o===void 0?.1:o,n=n===void 0?0:n,i=i===void 0?0:i,e=ue(e),t=ue(t),r=ue(r),n=ue(n),i=ue(i),o=ue(o),Qe(e,t,r,n,i,o))return Fe;let l=1e-10,s=100,a=o;i=i?1:0;for(let u=0;ur?Ge:(n=parseInt(n,10),(e-t)*(r-n+1)*2/(r*(r+1)))}function qxe(e,t,r){return e=vr(e),t=vr(t),r=ue(r),Qe(e,t,r)?Fe:r<=0||e>t||t-e>365*24*60*60*1e3?Ge:365*r/(360-r*Gf(e,t,!1))}function zxe(e,t,r){return e=vr(e),t=vr(t),r=ue(r),Qe(e,t,r)?Fe:r<=0||e>t||t-e>365*24*60*60*1e3?Ge:100*(1-r*Gf(e,t,!1)/360)}function Uxe(e,t,r){return e=vr(e),t=vr(t),r=ue(r),Qe(e,t,r)?Fe:r<=0||e>t||t-e>365*24*60*60*1e3?Ge:(100-r)*360/(r*Gf(e,t,!1))}function Hxe(){throw new Error("VDB is not implemented")}function $xe(e,t,r){if(e=Et(at(e)),t=m$(at(t)),r=ue(r),Qe(e,t,r))return Fe;let n=(g,x,v)=>{let S=v+1,D=g[0];for(let C=1;C{let S=v+1,D=0;for(let C=1;C0&&(o=!0),e[g]<0&&(l=!0);if(!o||!l)return Ge;r=r||.1;let s=r,a=1e-10,u,f,p,h=!0;do p=n(e,t,s),u=s-p/i(e,t,s),f=Math.abs(u-s),s=u,h=f>a&&Math.abs(p)>a;while(h);return s}function Wxe(e,t,r){if(e=ue(e),t=Et(at(t)),r=m$(at(r)),Qe(e,t,r))return Fe;let n=0;for(let i=0;i=2?t:!0,t==null&&(t=0),r=arguments.length===3?r:!1,r==null&&(r=0),e?t:r)}function Jxe(){for(let e=0;e0){let t=arguments[0],r=arguments.length-1,n=Math.floor(r/2),i=!1,o=r%2!==0,l=r%2===0?null:arguments[arguments.length-1];if(n){for(let s=0;sHd));window.math=Mr;var lM="D t",fM="ccc, D t",cM="D",pM="ccc, D";function _u(){Ie.refreshCM&&Ot.refresh();let e="",t="",r=[],n=[],i=[],o=gr.now().setLocale(Ie.settings.locale);Ie.mathScope={},Ie.mathScope.now=o.toFormat(Ie.settings.dateDay?fM:lM),Ie.mathScope.today=o.toFormat(Ie.settings.dateDay?pM:cM),ke("#clearButton").setAttribute("disabled",Ot.getValue()===""),ke("#copyButton").setAttribute("disabled",Ot.getValue()===""),Ot.eachLine(a=>{let u=Ot.getLineNumber(a),f=u+1,p="",h=a.text.trim().split("//")[0].split("#")[0];if(Ot.removeLineClass(a,"gutter","lineNoError"),Ie.settings.rulers?(Ot.removeLineClass(a,"wrap","noRuler"),Ot.addLineClass(a,"wrap","ruler")):(Ot.removeLineClass(a,"wrap","ruler"),Ot.addLineClass(a,"wrap","noRuler")),h)try{h=f>1&&h.charAt(0).match(/[+\-*/]/)&&Ot.getLine(f-2).length>0&&Ie.settings.contPrevLine?Ie.mathScope.ans+h:h,t1()&&(h=h.replace(/[,;]/g,x=>x===","?".":",")),Ie.mathScope.avg=Mr.evaluate(r.length>0?"("+Mr.mean(r)+")":"0"),Ie.mathScope.total=Mr.evaluate(n.length>0?"("+n.join("+")+")":"0"),Ie.mathScope.subtotal=Mr.evaluate(i.length>0?"("+i.join("+")+")":"0");try{p=Mr.evaluate(h,Ie.mathScope)}catch{p=aye(h)}if(p||p===0){Ie.mathScope._=p,Ie.mathScope.ans=p,Ie.mathScope["line"+f]=p,typeof p=="number"&&(r.push(p),n.push(p),i.push(p)),p=Mr.format(p,{notation:Ie.settings.notation,lowerExp:+Ie.settings.expLower,upperExp:+Ie.settings.expUpper});let x=p;if(p=Xv(p,!1),t=Xv(x,!0),p.match(/\w\(x\)/)){let v=(/\w\(x\)$/.test(p)&&h!=="ans"?h:p).replace(/\s+/g,"");Ie.mathScope.ans=v,Ie.mathScope["line"+f]=v,p=`Plot`}}else i.length=0,p=""}catch(x){Ie.settings.lineErrors&&(Ot.addLineClass(u,"gutter","lineNoError"),p=`Error`)}else i.length=0;let g=Ot.display.lineDiv.children[u].clientHeight;e+=`
    {var{typed:t,mathWithTransform:r,Help:n}=e;return t(fq,{any:function(o){var l,s=o;if(typeof o!="string"){for(l in r)if(xt(r,l)&&o===r[l]){s=l;break}}var a=un(lq,s);if(!a){var u=typeof s=="function"?s.name:s;throw new Error('No documentation found on "'+u+'"')}return new n(a)}})});var pq="chain",dce=["typed","Chain"],mq=$(pq,dce,e=>{var{typed:t,Chain:r}=e;return t(pq,{"":function(){return new r},any:function(i){return new r(i)}})});var dq="det",hce=["typed","matrix","subtractScalar","multiply","divideScalar","isZero","unaryMinus"],hq=$(dq,hce,e=>{var{typed:t,matrix:r,subtractScalar:n,multiply:i,divideScalar:o,isZero:l,unaryMinus:s}=e;return t(dq,{any:function(f){return _t(f)},"Array | Matrix":function(f){var p;switch(gt(f)?p=f.size():Array.isArray(f)?(f=r(f),p=f.size()):p=[],p.length){case 0:return _t(f);case 1:if(p[0]===1)return _t(f.valueOf()[0]);if(p[0]===0)return 1;throw new RangeError("Matrix must be square (size: "+Ht(p)+")");case 2:{var h=p[0],g=p[1];if(h===g)return a(f.clone().valueOf(),h,g);if(g===0)return 1;throw new RangeError("Matrix must be square (size: "+Ht(p)+")")}default:throw new RangeError("Matrix must be two dimensional (size: "+Ht(p)+")")}}});function a(u,f,p){if(f===1)return _t(u[0][0]);if(f===2)return n(i(u[0][0],u[1][1]),i(u[1][0],u[0][1]));for(var h=!1,g=new Array(f).fill(0).map((O,F)=>F),x=0;x{var{typed:t,matrix:r,divideScalar:n,addScalar:i,multiply:o,unaryMinus:l,det:s,identity:a,abs:u}=e;return t(gq,{"Array | Matrix":function(h){var g=gt(h)?h.size():Ft(h);switch(g.length){case 1:if(g[0]===1)return gt(h)?r([n(1,h.valueOf()[0])]):[n(1,h[0])];throw new RangeError("Matrix must be square (size: "+Ht(g)+")");case 2:{var x=g[0],v=g[1];if(x===v)return gt(h)?r(f(h.valueOf(),x,v),h.storage()):f(h,x,v);throw new RangeError("Matrix must be square (size: "+Ht(g)+")")}default:throw new RangeError("Matrix must be two dimensional (size: "+Ht(g)+")")}},any:function(h){return n(1,h)}});function f(p,h,g){var x,v,S,D,C;if(h===1){if(D=p[0][0],D===0)throw Error("Cannot calculate inverse, determinant is zero");return[[n(1,D)]]}else if(h===2){var E=s(p);if(E===0)throw Error("Cannot calculate inverse, determinant is zero");return[[n(p[1][1],E),n(l(p[0][1]),E)],[n(l(p[1][0]),E),n(p[0][0],E)]]}else{var M=p.concat();for(x=0;xO&&(O=u(M[x][N]),F=x),x++;if(O===0)throw Error("Cannot calculate inverse, determinant is zero");x=F,x!==N&&(C=M[N],M[N]=M[x],M[x]=C,C=T[N],T[N]=T[x],T[x]=C);var I=M[N],B=T[N];for(x=0;x{var{typed:t,matrix:r,inv:n,deepEqual:i,equal:o,dotDivide:l,dot:s,ctranspose:a,divideScalar:u,multiply:f,add:p,Complex:h}=e;return t(xq,{"Array | Matrix":function(E){var M=gt(E)?E.size():Ft(E);switch(M.length){case 1:return D(E)?a(E):M[0]===1?n(E):l(a(E),s(E,E));case 2:{if(D(E))return a(E);var T=M[0],N=M[1];if(T===N)try{return n(E)}catch(O){if(!(O instanceof Error&&O.message.match(/Cannot calculate inverse, determinant is zero/)))throw O}return gt(E)?r(g(E.valueOf(),T,N),E.storage()):g(E,T,N)}default:throw new RangeError("Matrix must be two dimensional (size: "+Ht(M)+")")}},any:function(E){return o(E,0)?_t(E):u(1,E)}});function g(C,E,M){var{C:T,F:N}=v(C,E,M),O=f(n(f(a(T),T)),a(T)),F=f(a(N),n(f(N,a(N))));return f(F,O)}function x(C,E,M){for(var T=_t(C),N=0,O=0;OF.filter((B,L)=>L!S(s(T[I],T[I])));return{C:N,F:O}}function S(C){return o(p(C,h(1,1)),p(0,h(1,1)))}function D(C){return i(p(C,h(1,1)),p(f(C,0),h(1,1)))}});function wq(e){var{addScalar:t,subtract:r,flatten:n,multiply:i,multiplyScalar:o,divideScalar:l,sqrt:s,abs:a,bignumber:u,diag:f,size:p,reshape:h,inv:g,qr:x,usolve:v,usolveAll:S,equal:D,complex:C,larger:E,smaller:M,matrixFromColumns:T,dot:N}=e;function O(he,oe,ve,Oe){var De=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,Me=F(he,oe,ve,Oe,De);I(he,oe,ve,Oe,De,Me);var{values:le,C:ne}=B(he,oe,ve,Oe,De);if(De){var fe=L(he,oe,ne,Me,le,ve,Oe);return{values:le,eigenvectors:fe}}return{values:le}}function F(he,oe,ve,Oe,De){var Me=Oe==="BigNumber",le=Oe==="Complex",ne=Me?u(0):0,fe=Me?u(1):le?C(1):1,Fe=Me?u(1):1,me=Me?u(10):2,Ue=o(me,me),Re;De&&(Re=Array(oe).fill(fe));for(var ie=!1;!ie;){ie=!0;for(var ue=0;ue1&&(ie=f(Array(me-1).fill(ne)))),me-=1,fe.pop();for(var ct=0;ct2&&(ie=f(Array(me-2).fill(ne)))),me-=2,fe.pop(),fe.pop();for(var At=0;At+r(a(nr),a(qt))),ue>100){var Rt=Error("The eigenvalues failed to converge. Only found these eigenvalues: "+Fe.join(", "));throw Rt.values=Fe,Rt.vectors=[],Rt}var vt=De?i(Re,X(Ue,oe)):void 0;return{values:Fe,C:vt}}function L(he,oe,ve,Oe,De,Me,le){var ne=g(ve),fe=i(ne,he,ve),Fe=le==="BigNumber",me=le==="Complex",Ue=Fe?u(0):me?C(0):0,Re=Fe?u(1):me?C(1):1,ie=[],ue=[];for(var Te of De){var Ce=U(ie,Te,D);Ce===-1?(ie.push(Te),ue.push(1)):ue[Ce]+=1}for(var Je=[],He=ie.length,it=Array(oe).fill(Ue),ct=f(Array(oe).fill(Re)),rt=function(){var vt=ie[At],nr=r(fe,i(vt,ct)),qt=S(nr,it);for(qt.shift();qt.lengthi(te,ge)),Je.push(...qt.map(ge=>({value:vt,vector:n(ge)})))},At=0;At=5)return null;for(ne=0;;){var fe=v(he,le);if(M(pe(Z(le,[fe])),Oe))break;if(++ne>=10)return null;le=we(fe)}return le}function ee(he,oe,ve){var Oe=ve==="BigNumber",De=ve==="Complex",Me=Array(he).fill(0).map(le=>2*Math.random()-1);return Oe&&(Me=Me.map(le=>u(le))),De&&(Me=Me.map(le=>C(le))),Me=Z(Me,oe),we(Me,ve)}function Z(he,oe){var ve=p(he);for(var Oe of oe)Oe=h(Oe,ve),he=r(he,i(l(N(Oe,he),N(Oe,Oe)),Oe));return he}function pe(he){return a(s(N(he,he)))}function we(he,oe){var ve=oe==="BigNumber",Oe=oe==="Complex",De=ve?u(1):Oe?C(1):1;return i(l(De,pe(he)),he)}return O}function bq(e){var{config:t,addScalar:r,subtract:n,abs:i,atan:o,cos:l,sin:s,multiplyScalar:a,inv:u,bignumber:f,multiply:p,add:h}=e;function g(I,B){var L=arguments.length>2&&arguments[2]!==void 0?arguments[2]:t.relTol,q=arguments.length>3?arguments[3]:void 0,R=arguments.length>4?arguments[4]:void 0;if(q==="number")return x(I,L,R);if(q==="BigNumber")return v(I,L,R);throw TypeError("Unsupported data type: "+q)}function x(I,B,L){var q=I.length,R=Math.abs(B/q),V,X;if(L){X=new Array(q);for(var U=0;U=Math.abs(R);){var ee=H[0][0],Z=H[0][1];V=S(I[ee][ee],I[Z][Z],I[ee][Z]),I=T(I,V,ee,Z),L&&(X=C(X,V,ee,Z)),H=N(I)}for(var pe=Array(q).fill(0),we=0;we=i(R);){var ee=H[0][0],Z=H[0][1];V=D(I[ee][ee],I[Z][Z],I[ee][Z]),I=M(I,V,ee,Z),L&&(X=E(X,V,ee,Z)),H=O(I)}for(var pe=Array(q).fill(0),we=0;we({value:R[oe],vector:he}));return{values:R,eigenvectors:we}}return g}var xce="eigs",yce=["config","typed","matrix","addScalar","equal","subtract","abs","atan","cos","sin","multiplyScalar","divideScalar","inv","bignumber","multiply","add","larger","column","flatten","number","complex","sqrt","diag","size","reshape","qr","usolve","usolveAll","im","re","smaller","matrixFromColumns","dot"],Dq=$(xce,yce,e=>{var{config:t,typed:r,matrix:n,addScalar:i,subtract:o,equal:l,abs:s,atan:a,cos:u,sin:f,multiplyScalar:p,divideScalar:h,inv:g,bignumber:x,multiply:v,add:S,larger:D,column:C,flatten:E,number:M,complex:T,sqrt:N,diag:O,size:F,reshape:I,qr:B,usolve:L,usolveAll:q,im:R,re:V,smaller:X,matrixFromColumns:U,dot:H}=e,ee=bq({config:t,addScalar:i,subtract:o,column:C,flatten:E,equal:l,abs:s,atan:a,cos:u,sin:f,multiplyScalar:p,inv:g,bignumber:x,complex:T,multiply:v,add:S}),Z=wq({config:t,addScalar:i,subtract:o,multiply:v,multiplyScalar:p,flatten:E,divideScalar:h,sqrt:N,abs:s,bignumber:x,diag:O,size:F,reshape:I,qr:B,inv:g,usolve:L,usolveAll:q,equal:l,complex:T,larger:D,smaller:X,matrixFromColumns:U,dot:H});return r("eigs",{Array:function(Me){return pe(n(Me))},"Array, number|BigNumber":function(Me,le){return pe(n(Me),{precision:le})},"Array, Object"(De,Me){return pe(n(De),Me)},Matrix:function(Me){return pe(Me,{matricize:!0})},"Matrix, number|BigNumber":function(Me,le){return pe(Me,{precision:le,matricize:!0})},"Matrix, Object":function(Me,le){var ne={matricize:!0};return Gn(ne,le),pe(Me,ne)}});function pe(De){var Me,le=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},ne="eigenvectors"in le?le.eigenvectors:!0,fe=(Me=le.precision)!==null&&Me!==void 0?Me:t.relTol,Fe=we(De,fe,ne);return le.matricize&&(Fe.values=n(Fe.values),ne&&(Fe.eigenvectors=Fe.eigenvectors.map(me=>{var{value:Ue,vector:Re}=me;return{value:Ue,vector:n(Re)}}))),ne&&Object.defineProperty(Fe,"vectors",{enumerable:!1,get:()=>{throw new Error("eigs(M).vectors replaced with eigs(M).eigenvectors")}}),Fe}function we(De,Me,le){var ne=De.toArray(),fe=De.size();if(fe.length!==2||fe[0]!==fe[1])throw new RangeError("Matrix must be square (size: ".concat(Ht(fe),")"));var Fe=fe[0];if(oe(ne,Fe,Me)&&(ve(ne,Fe),he(ne,Fe,Me))){var me=Oe(De,ne,Fe);return ee(ne,Fe,Me,me,le)}var Ue=Oe(De,ne,Fe);return Z(ne,Fe,Me,Ue,le)}function he(De,Me,le){for(var ne=0;ne{var{typed:t,abs:r,add:n,identity:i,inv:o,multiply:l}=e;return t(Sq,{Matrix:function(p){var h=p.size();if(h.length!==2||h[0]!==h[1])throw new RangeError("Matrix must be square (size: "+Ht(h)+")");for(var g=h[0],x=1e-15,v=s(p),S=a(v,x),D=S.q,C=S.j,E=l(p,Math.pow(2,-C)),M=i(g),T=i(g),N=1,O=E,F=-1,I=1;I<=D;I++)I>1&&(O=l(O,E),F=-F),N=N*(D-I+1)/((2*D-I+1)*I),M=n(M,l(N,O)),T=n(T,l(N*F,O));for(var B=l(o(T),M),L=0;L{var{typed:t,abs:r,add:n,multiply:i,map:o,sqrt:l,subtract:s,inv:a,size:u,max:f,identity:p}=e,h=1e3,g=1e-6;function x(v){var S,D=0,C=v,E=p(u(v));do{var M=C;if(C=i(.5,n(M,a(E))),E=i(.5,n(E,a(M))),S=f(r(s(C,M))),S>g&&++D>h)throw new Error("computing square root of matrix: iterative method could not converge")}while(S>g);return C}return t(Eq,{"Array | Matrix":function(S){var D=gt(S)?S.size():Ft(S);switch(D.length){case 1:if(D[0]===1)return o(S,l);throw new RangeError("Matrix must be square (size: "+Ht(D)+")");case 2:{var C=D[0],E=D[1];if(C===E)return x(S);throw new RangeError("Matrix must be square (size: "+Ht(D)+")")}default:throw new RangeError("Matrix must be at most two dimensional (size: "+Ht(D)+")")}}})});var Cq="sylvester",Dce=["typed","schur","matrixFromColumns","matrix","multiply","range","concat","transpose","index","subset","add","subtract","identity","lusolve","abs"],Mq=$(Cq,Dce,e=>{var{typed:t,schur:r,matrixFromColumns:n,matrix:i,multiply:o,range:l,concat:s,transpose:a,index:u,subset:f,add:p,subtract:h,identity:g,lusolve:x,abs:v}=e;return t(Cq,{"Matrix, Matrix, Matrix":S,"Array, Matrix, Matrix":function(C,E,M){return S(i(C),E,M)},"Array, Array, Matrix":function(C,E,M){return S(i(C),i(E),M)},"Array, Matrix, Array":function(C,E,M){return S(i(C),E,i(M))},"Matrix, Array, Matrix":function(C,E,M){return S(C,i(E),M)},"Matrix, Array, Array":function(C,E,M){return S(C,i(E),i(M))},"Matrix, Matrix, Array":function(C,E,M){return S(C,E,i(M))},"Array, Array, Array":function(C,E,M){return S(i(C),i(E),i(M)).toArray()}});function S(D,C,E){for(var M=C.size()[0],T=D.size()[0],N=r(D),O=N.T,F=N.U,I=r(o(-1,C)),B=I.T,L=I.U,q=o(o(a(F),E),L),R=l(0,T),V=[],X=(me,Ue)=>s(me,Ue,1),U=(me,Ue)=>s(me,Ue,0),H=0;H1e-5){for(var ee=U(f(q,u(R,H)),f(q,u(R,H+1))),Z=0;Z{var{typed:t,matrix:r,identity:n,multiply:i,qr:o,norm:l,subtract:s}=e;return t(Tq,{Array:function(f){var p=a(r(f));return{U:p.U.valueOf(),T:p.T.valueOf()}},Matrix:function(f){return a(f)}});function a(u){var f=u.size()[0],p=u,h=n(f),g=0,x;do{x=p;var v=o(p),S=v.Q,D=v.R;if(p=i(D,S),h=i(h,S),g++>100)break}while(l(s(p,x))>1e-4);return{U:h,T:p}}});var Oq="lyap",Nce=["typed","matrix","sylvester","multiply","transpose"],Fq=$(Oq,Nce,e=>{var{typed:t,matrix:r,sylvester:n,multiply:i,transpose:o}=e;return t(Oq,{"Matrix, Matrix":function(s,a){return n(s,o(s),i(-1,a))},"Array, Matrix":function(s,a){return n(r(s),o(r(s)),i(-1,a))},"Matrix, Array":function(s,a){return n(s,o(r(s)),r(i(-1,a)))},"Array, Array":function(s,a){return n(r(s),o(r(s)),r(i(-1,a))).toArray()}})});var Ece="divide",Ace=["typed","matrix","multiply","equalScalar","divideScalar","inv"],Iq=$(Ece,Ace,e=>{var{typed:t,matrix:r,multiply:n,equalScalar:i,divideScalar:o,inv:l}=e,s=Ir({typed:t,equalScalar:i}),a=Yn({typed:t});return t("divide",z1({"Array | Matrix, Array | Matrix":function(f,p){return n(f,l(p))},"DenseMatrix, any":function(f,p){return a(f,p,o,!1)},"SparseMatrix, any":function(f,p){return s(f,p,o,!1)},"Array, any":function(f,p){return a(r(f),p,o,!1).valueOf()},"any, Array | Matrix":function(f,p){return n(f,l(p))}},o.signatures))});var kq="distance",Cce=["typed","addScalar","subtractScalar","divideScalar","multiplyScalar","deepEqual","sqrt","abs"],Lq=$(kq,Cce,e=>{var{typed:t,addScalar:r,subtractScalar:n,multiplyScalar:i,divideScalar:o,deepEqual:l,sqrt:s,abs:a}=e;return t(kq,{"Array, Array, Array":function(T,N,O){if(T.length===2&&N.length===2&&O.length===2){if(!f(T))throw new TypeError("Array with 2 numbers or BigNumbers expected for first argument");if(!f(N))throw new TypeError("Array with 2 numbers or BigNumbers expected for second argument");if(!f(O))throw new TypeError("Array with 2 numbers or BigNumbers expected for third argument");if(l(N,O))throw new TypeError("LinePoint1 should not be same with LinePoint2");var F=n(O[1],N[1]),I=n(N[0],O[0]),B=n(i(O[0],N[1]),i(N[0],O[1]));return S(T[0],T[1],F,I,B)}else throw new TypeError("Invalid Arguments: Try again")},"Object, Object, Object":function(T,N,O){if(Object.keys(T).length===2&&Object.keys(N).length===2&&Object.keys(O).length===2){if(!f(T))throw new TypeError("Values of pointX and pointY should be numbers or BigNumbers");if(!f(N))throw new TypeError("Values of lineOnePtX and lineOnePtY should be numbers or BigNumbers");if(!f(O))throw new TypeError("Values of lineTwoPtX and lineTwoPtY should be numbers or BigNumbers");if(l(x(N),x(O)))throw new TypeError("LinePoint1 should not be same with LinePoint2");if("pointX"in T&&"pointY"in T&&"lineOnePtX"in N&&"lineOnePtY"in N&&"lineTwoPtX"in O&&"lineTwoPtY"in O){var F=n(O.lineTwoPtY,N.lineOnePtY),I=n(N.lineOnePtX,O.lineTwoPtX),B=n(i(O.lineTwoPtX,N.lineOnePtY),i(N.lineOnePtX,O.lineTwoPtY));return S(T.pointX,T.pointY,F,I,B)}else throw new TypeError("Key names do not match")}else throw new TypeError("Invalid Arguments: Try again")},"Array, Array":function(T,N){if(T.length===2&&N.length===3){if(!f(T))throw new TypeError("Array with 2 numbers or BigNumbers expected for first argument");if(!p(N))throw new TypeError("Array with 3 numbers or BigNumbers expected for second argument");return S(T[0],T[1],N[0],N[1],N[2])}else if(T.length===3&&N.length===6){if(!p(T))throw new TypeError("Array with 3 numbers or BigNumbers expected for first argument");if(!g(N))throw new TypeError("Array with 6 numbers or BigNumbers expected for second argument");return D(T[0],T[1],T[2],N[0],N[1],N[2],N[3],N[4],N[5])}else if(T.length===N.length&&T.length>0){if(!h(T))throw new TypeError("All values of an array should be numbers or BigNumbers");if(!h(N))throw new TypeError("All values of an array should be numbers or BigNumbers");return C(T,N)}else throw new TypeError("Invalid Arguments: Try again")},"Object, Object":function(T,N){if(Object.keys(T).length===2&&Object.keys(N).length===3){if(!f(T))throw new TypeError("Values of pointX and pointY should be numbers or BigNumbers");if(!p(N))throw new TypeError("Values of xCoeffLine, yCoeffLine and constant should be numbers or BigNumbers");if("pointX"in T&&"pointY"in T&&"xCoeffLine"in N&&"yCoeffLine"in N&&"constant"in N)return S(T.pointX,T.pointY,N.xCoeffLine,N.yCoeffLine,N.constant);throw new TypeError("Key names do not match")}else if(Object.keys(T).length===3&&Object.keys(N).length===6){if(!p(T))throw new TypeError("Values of pointX, pointY and pointZ should be numbers or BigNumbers");if(!g(N))throw new TypeError("Values of x0, y0, z0, a, b and c should be numbers or BigNumbers");if("pointX"in T&&"pointY"in T&&"x0"in N&&"y0"in N&&"z0"in N&&"a"in N&&"b"in N&&"c"in N)return D(T.pointX,T.pointY,T.pointZ,N.x0,N.y0,N.z0,N.a,N.b,N.c);throw new TypeError("Key names do not match")}else if(Object.keys(T).length===2&&Object.keys(N).length===2){if(!f(T))throw new TypeError("Values of pointOneX and pointOneY should be numbers or BigNumbers");if(!f(N))throw new TypeError("Values of pointTwoX and pointTwoY should be numbers or BigNumbers");if("pointOneX"in T&&"pointOneY"in T&&"pointTwoX"in N&&"pointTwoY"in N)return C([T.pointOneX,T.pointOneY],[N.pointTwoX,N.pointTwoY]);throw new TypeError("Key names do not match")}else if(Object.keys(T).length===3&&Object.keys(N).length===3){if(!p(T))throw new TypeError("Values of pointOneX, pointOneY and pointOneZ should be numbers or BigNumbers");if(!p(N))throw new TypeError("Values of pointTwoX, pointTwoY and pointTwoZ should be numbers or BigNumbers");if("pointOneX"in T&&"pointOneY"in T&&"pointOneZ"in T&&"pointTwoX"in N&&"pointTwoY"in N&&"pointTwoZ"in N)return C([T.pointOneX,T.pointOneY,T.pointOneZ],[N.pointTwoX,N.pointTwoY,N.pointTwoZ]);throw new TypeError("Key names do not match")}else throw new TypeError("Invalid Arguments: Try again")},Array:function(T){if(!v(T))throw new TypeError("Incorrect array format entered for pairwise distance calculation");return E(T)}});function u(M){return typeof M=="number"||Ct(M)}function f(M){return M.constructor!==Array&&(M=x(M)),u(M[0])&&u(M[1])}function p(M){return M.constructor!==Array&&(M=x(M)),u(M[0])&&u(M[1])&&u(M[2])}function h(M){return Array.isArray(M)||(M=x(M)),M.every(u)}function g(M){return M.constructor!==Array&&(M=x(M)),u(M[0])&&u(M[1])&&u(M[2])&&u(M[3])&&u(M[4])&&u(M[5])}function x(M){for(var T=Object.keys(M),N=[],O=0;OT.length!==2||!u(T[0])||!u(T[1])))return!1}else if(M[0].length===3&&u(M[0][0])&&u(M[0][1])&&u(M[0][2])){if(M.some(T=>T.length!==3||!u(T[0])||!u(T[1])||!u(T[2])))return!1}else return!1;return!0}function S(M,T,N,O,F){var I=a(r(r(i(N,M),i(O,T)),F)),B=s(r(i(N,N),i(O,O)));return o(I,B)}function D(M,T,N,O,F,I,B,L,q){var R=[n(i(n(F,T),q),i(n(I,N),L)),n(i(n(I,N),B),i(n(O,M),q)),n(i(n(O,M),L),i(n(F,T),B))];R=s(r(r(i(R[0],R[0]),i(R[1],R[1])),i(R[2],R[2])));var V=s(r(r(i(B,B),i(L,L)),i(q,q)));return o(R,V)}function C(M,T){for(var N=M.length,O=0,F=0,I=0;I{var{typed:t,config:r,abs:n,add:i,addScalar:o,matrix:l,multiply:s,multiplyScalar:a,divideScalar:u,subtract:f,smaller:p,equalScalar:h,flatten:g,isZero:x,isNumeric:v}=e;return t("intersect",{"Array, Array, Array":S,"Array, Array, Array, Array":D,"Matrix, Matrix, Matrix":function(L,q,R){var V=S(L.valueOf(),q.valueOf(),R.valueOf());return V===null?null:l(V)},"Matrix, Matrix, Matrix, Matrix":function(L,q,R,V){var X=D(L.valueOf(),q.valueOf(),R.valueOf(),V.valueOf());return X===null?null:l(X)}});function S(B,L,q){if(B=C(B),L=C(L),q=C(q),!M(B))throw new TypeError("Array with 3 numbers or BigNumbers expected for first argument");if(!M(L))throw new TypeError("Array with 3 numbers or BigNumbers expected for second argument");if(!T(q))throw new TypeError("Array with 4 numbers expected as third argument");return I(B[0],B[1],B[2],L[0],L[1],L[2],q[0],q[1],q[2],q[3])}function D(B,L,q,R){if(B=C(B),L=C(L),q=C(q),R=C(R),B.length===2){if(!E(B))throw new TypeError("Array with 2 numbers or BigNumbers expected for first argument");if(!E(L))throw new TypeError("Array with 2 numbers or BigNumbers expected for second argument");if(!E(q))throw new TypeError("Array with 2 numbers or BigNumbers expected for third argument");if(!E(R))throw new TypeError("Array with 2 numbers or BigNumbers expected for fourth argument");return N(B,L,q,R)}else if(B.length===3){if(!M(B))throw new TypeError("Array with 3 numbers or BigNumbers expected for first argument");if(!M(L))throw new TypeError("Array with 3 numbers or BigNumbers expected for second argument");if(!M(q))throw new TypeError("Array with 3 numbers or BigNumbers expected for third argument");if(!M(R))throw new TypeError("Array with 3 numbers or BigNumbers expected for fourth argument");return F(B[0],B[1],B[2],L[0],L[1],L[2],q[0],q[1],q[2],R[0],R[1],R[2])}else throw new TypeError("Arrays with two or thee dimensional points expected")}function C(B){return B.length===1?B[0]:B.length>1&&Array.isArray(B[0])&&B.every(L=>Array.isArray(L)&&L.length===1)?g(B):B}function E(B){return B.length===2&&v(B[0])&&v(B[1])}function M(B){return B.length===3&&v(B[0])&&v(B[1])&&v(B[2])}function T(B){return B.length===4&&v(B[0])&&v(B[1])&&v(B[2])&&v(B[3])}function N(B,L,q,R){var V=B,X=q,U=f(V,L),H=f(X,R),ee=f(a(U[0],H[1]),a(H[0],U[1]));if(x(ee)||p(n(ee),r.relTol))return null;var Z=a(H[0],V[1]),pe=a(H[1],V[0]),we=a(H[0],X[1]),he=a(H[1],X[0]),oe=u(o(f(f(Z,pe),we),he),ee);return i(s(U,oe),V)}function O(B,L,q,R,V,X,U,H,ee,Z,pe,we){var he=a(f(B,L),f(q,R)),oe=a(f(V,X),f(U,H)),ve=a(f(ee,Z),f(pe,we));return o(o(he,oe),ve)}function F(B,L,q,R,V,X,U,H,ee,Z,pe,we){var he=O(B,U,Z,U,L,H,pe,H,q,ee,we,ee),oe=O(Z,U,R,B,pe,H,V,L,we,ee,X,q),ve=O(B,U,R,B,L,H,V,L,q,ee,X,q),Oe=O(Z,U,Z,U,pe,H,pe,H,we,ee,we,ee),De=O(R,B,R,B,V,L,V,L,X,q,X,q),Me=f(a(he,oe),a(ve,Oe)),le=f(a(De,Oe),a(oe,oe));if(x(le))return null;var ne=u(Me,le),fe=u(o(he,a(ne,oe)),Oe),Fe=o(B,a(ne,f(R,B))),me=o(L,a(ne,f(V,L))),Ue=o(q,a(ne,f(X,q))),Re=o(U,a(fe,f(Z,U))),ie=o(H,a(fe,f(pe,H))),ue=o(ee,a(fe,f(we,ee)));return h(Fe,Re)&&h(me,ie)&&h(Ue,ue)?[Fe,me,Ue]:null}function I(B,L,q,R,V,X,U,H,ee,Z){var pe=a(B,U),we=a(R,U),he=a(L,H),oe=a(V,H),ve=a(q,ee),Oe=a(X,ee),De=f(f(f(Z,pe),he),ve),Me=f(f(f(o(o(we,oe),Oe),pe),he),ve),le=u(De,Me),ne=o(B,a(le,f(R,B))),fe=o(L,a(le,f(V,L))),Fe=o(q,a(le,f(X,q)));return[ne,fe,Fe]}});var Pq="sum",_ce=["typed","config","add","numeric"],pb=$(Pq,_ce,e=>{var{typed:t,config:r,add:n,numeric:i}=e;return t(Pq,{"Array | Matrix":o,"Array | Matrix, number | BigNumber":l,"...":function(a){if(Xa(a))throw new TypeError("Scalar values expected in function sum");return o(a)}});function o(s){var a;return mo(s,function(u){try{a=a===void 0?u:n(a,u)}catch(f){throw Cn(f,"sum",u)}}),a===void 0&&(a=i(0,r.number)),typeof a=="string"&&(a=i(a,fo(a,r))),a}function l(s,a){try{var u=ec(s,a,n);return u}catch(f){throw Cn(f,"sum")}}});var mb="cumsum",Oce=["typed","add","unaryPlus"],db=$(mb,Oce,e=>{var{typed:t,add:r,unaryPlus:n}=e;return t(mb,{Array:i,Matrix:function(u){return u.create(i(u.valueOf(),u.datatype()))},"Array, number | BigNumber":l,"Matrix, number | BigNumber":function(u,f){return u.create(l(u.valueOf(),f),u.datatype())},"...":function(u){if(Xa(u))throw new TypeError("All values expected to be scalar in function cumsum");return i(u)}});function i(a){try{return o(a)}catch(u){throw Cn(u,mb)}}function o(a){if(a.length===0)return[];for(var u=[n(a[0])],f=1;f=f.length)throw new Di(u,f.length);try{return s(a,u)}catch(p){throw Cn(p,mb)}}function s(a,u){var f,p,h;if(u<=0){var g=a[0][0];if(Array.isArray(g)){for(h=ow(a),p=[],f=0;f{var{typed:t,add:r,divide:n}=e;return t(Rq,{"Array | Matrix":o,"Array | Matrix, number | BigNumber":i,"...":function(s){if(Xa(s))throw new TypeError("Scalar values expected in function mean");return o(s)}});function i(l,s){try{var a=ec(l,s,r),u=Array.isArray(l)?Ft(l):l.size();return n(a,u[s])}catch(f){throw Cn(f,"mean")}}function o(l){var s,a=0;if(mo(l,function(u){try{s=s===void 0?u:r(s,u),a++}catch(f){throw Cn(f,"mean",u)}}),a===0)throw new Error("Cannot calculate the mean of an empty array");return n(s,a)}});var qq="median",Ice=["typed","add","divide","compare","partitionSelect"],zq=$(qq,Ice,e=>{var{typed:t,add:r,divide:n,compare:i,partitionSelect:o}=e;function l(u){try{u=jt(u.valueOf());var f=u.length;if(f===0)throw new Error("Cannot calculate median of an empty array");if(f%2===0){for(var p=f/2-1,h=o(u,p+1),g=u[p],x=0;x0&&(g=u[x]);return a(g,h)}else{var v=o(u,(f-1)/2);return s(v)}}catch(S){throw Cn(S,"median")}}var s=t({"number | BigNumber | Complex | Unit":function(f){return f}}),a=t({"number | BigNumber | Complex | Unit, number | BigNumber | Complex | Unit":function(f,p){return n(r(f,p),2)}});return t(qq,{"Array | Matrix":l,"Array | Matrix, number | BigNumber":function(f,p){throw new Error("median(A, dim) is not yet supported")},"...":function(f){if(Xa(f))throw new TypeError("Scalar values expected in function median");return l(f)}})});var Uq="mad",kce=["typed","abs","map","median","subtract"],Hq=$(Uq,kce,e=>{var{typed:t,abs:r,map:n,median:i,subtract:o}=e;return t(Uq,{"Array | Matrix":l,"...":function(a){return l(a)}});function l(s){if(s=jt(s.valueOf()),s.length===0)throw new Error("Cannot calculate median absolute deviation (mad) of an empty array");try{var a=i(s);return i(n(s,function(u){return r(o(u,a))}))}catch(u){throw u instanceof TypeError&&u.message.includes("median")?new TypeError(u.message.replace("median","mad")):Cn(u,"mad")}}});var EC="unbiased",$q="variance",Lce=["typed","add","subtract","multiply","divide","apply","isNaN"],gb=$($q,Lce,e=>{var{typed:t,add:r,subtract:n,multiply:i,divide:o,apply:l,isNaN:s}=e;return t($q,{"Array | Matrix":function(p){return a(p,EC)},"Array | Matrix, string":a,"Array | Matrix, number | BigNumber":function(p,h){return u(p,h,EC)},"Array | Matrix, number | BigNumber, string":u,"...":function(p){return a(p,EC)}});function a(f,p){var h,g=0;if(f.length===0)throw new SyntaxError("Function variance requires one or more parameters (0 provided)");if(mo(f,function(S){try{h=h===void 0?S:r(h,S),g++}catch(D){throw Cn(D,"variance",S)}}),g===0)throw new Error("Cannot calculate variance of an empty array");var x=o(h,g);if(h=void 0,mo(f,function(S){var D=n(S,x);h=h===void 0?i(D,D):r(h,i(D,D))}),s(h))return h;switch(p){case"uncorrected":return o(h,g);case"biased":return o(h,g+1);case"unbiased":{var v=Ct(h)?h.mul(0):0;return g===1?v:o(h,g-1)}default:throw new Error('Unknown normalization "'+p+'". Choose "unbiased" (default), "uncorrected", or "biased".')}}function u(f,p,h){try{if(f.length===0)throw new SyntaxError("Function variance requires one or more parameters (0 provided)");return l(f,p,g=>a(g,h))}catch(g){throw Cn(g,"variance")}}});var Wq="quantileSeq",Bce=["typed","?bignumber","add","subtract","divide","multiply","partitionSelect","compare","isInteger","smaller","smallerEq","larger"],vb=$(Wq,Bce,e=>{var{typed:t,bignumber:r,add:n,subtract:i,divide:o,multiply:l,partitionSelect:s,compare:a,isInteger:u,smaller:f,smallerEq:p,larger:h}=e,g=Cd({typed:t,isInteger:u});return t(Wq,{"Array | Matrix, number | BigNumber":(C,E)=>v(C,E,!1),"Array | Matrix, number | BigNumber, number":(C,E,M)=>x(C,E,!1,M,v),"Array | Matrix, number | BigNumber, boolean":v,"Array | Matrix, number | BigNumber, boolean, number":(C,E,M,T)=>x(C,E,M,T,v),"Array | Matrix, Array | Matrix":(C,E)=>S(C,E,!1),"Array | Matrix, Array | Matrix, number":(C,E,M)=>x(C,E,!1,M,S),"Array | Matrix, Array | Matrix, boolean":S,"Array | Matrix, Array | Matrix, boolean, number":(C,E,M,T)=>x(C,E,M,T,S)});function x(C,E,M,T,N){return g(C,T,O=>N(O,E,M))}function v(C,E,M){var T,N=C.valueOf();if(f(E,0))throw new Error("N/prob must be non-negative");if(p(E,1))return Pt(E)?D(N,E,M):r(D(N,E,M));if(h(E,1)){if(!u(E))throw new Error("N must be a positive integer");if(h(E,4294967295))throw new Error("N must be less than or equal to 2^32-1, as that is the maximum length of an Array");var O=n(E,1);T=[];for(var F=0;f(F,E);F++){var I=o(F+1,O);T.push(D(N,I,M))}return Pt(E)?T:r(T)}}function S(C,E,M){for(var T=C.valueOf(),N=E.valueOf(),O=[],F=0;F0&&(B=T[q])}return n(l(B,i(1,I)),l(L,I))}});var Vq="std",Pce=["typed","map","sqrt","variance"],xb=$(Vq,Pce,e=>{var{typed:t,map:r,sqrt:n,variance:i}=e;return t(Vq,{"Array | Matrix":o,"Array | Matrix, string":o,"Array | Matrix, number | BigNumber":o,"Array | Matrix, number | BigNumber, string":o,"...":function(s){return o(s)}});function o(l,s){if(l.length===0)throw new SyntaxError("Function std requires one or more parameters (0 provided)");try{var a=i.apply(null,arguments);return gn(a)?r(a,n):n(a)}catch(u){throw u instanceof TypeError&&u.message.includes(" variance")?new TypeError(u.message.replace(" variance"," std")):u}}});var Gq="corr",Rce=["typed","matrix","mean","sqrt","sum","add","subtract","multiply","pow","divide"],Yq=$(Gq,Rce,e=>{var{typed:t,matrix:r,sqrt:n,sum:i,add:o,subtract:l,multiply:s,pow:a,divide:u}=e;return t(Gq,{"Array, Array":function(g,x){return f(g,x)},"Matrix, Matrix":function(g,x){var v=f(g.toArray(),x.toArray());return Array.isArray(v)?r(v):v}});function f(h,g){var x=[];if(Array.isArray(h[0])&&Array.isArray(g[0])){if(h.length!==g.length)throw new SyntaxError("Dimension mismatch. Array A and B must have the same length.");for(var v=0;vo(N,s(O,g[F])),0),C=i(h.map(N=>a(N,2))),E=i(g.map(N=>a(N,2))),M=l(s(x,D),s(v,S)),T=n(s(l(s(x,C),a(v,2)),l(s(x,E),a(S,2))));return u(M,T)}});var Zq="combinations",qce=["typed"],Kq=$(Zq,qce,e=>{var{typed:t}=e;return t(Zq,{"number, number":zA,"BigNumber, BigNumber":function(n,i){var o=n.constructor,l,s,a=n.minus(i),u=new o(1);if(!Xq(n)||!Xq(i))throw new TypeError("Positive integer value expected in function combinations");if(i.gt(n))throw new TypeError("k must be less than n in function combinations");if(l=u,i.lt(a))for(s=u;s.lte(a);s=s.plus(u))l=l.times(i.plus(s)).dividedBy(s);else for(s=u;s.lte(i);s=s.plus(u))l=l.times(a.plus(s)).dividedBy(s);return l}})});function Xq(e){return e.isInteger()&&e.gte(0)}var Jq="combinationsWithRep",zce=["typed"],jq=$(Jq,zce,e=>{var{typed:t}=e;return t(Jq,{"number, number":function(n,i){if(!dt(n)||n<0)throw new TypeError("Positive integer value expected in function combinationsWithRep");if(!dt(i)||i<0)throw new TypeError("Positive integer value expected in function combinationsWithRep");if(n<1)throw new TypeError("k must be less than or equal to n + k - 1");if(i{var{typed:t,config:r,multiplyScalar:n,pow:i,BigNumber:o,Complex:l}=e;function s(u){if(u.im===0)return Pv(u.re);if(u.re<.5){var f=new l(1-u.re,-u.im),p=new l(Math.PI*u.re,Math.PI*u.im);return new l(Math.PI).div(p.sin()).div(s(f))}u=new l(u.re-1,u.im);for(var h=new l(Cp[0],0),g=1;g2;)h-=2,x+=h,g=g.times(x);return new o(g.toPrecision(o.precision))}});var rz="lgamma",Hce=["Complex","typed"],nz=$(rz,Hce,e=>{var{Complex:t,typed:r}=e,n=7,i=7,o=[-.029550653594771242,.00641025641025641,-.0019175269175269176,.0008417508417508417,-.0005952380952380953,.0007936507936507937,-.002777777777777778,.08333333333333333];return r(rz,{number:Rv,Complex:l,BigNumber:function(){throw new Error("mathjs doesn't yet provide an implementation of the algorithm lgamma for BigNumber")}});function l(u){var f=6.283185307179586,p=1.1447298858494002,h=.1;if(u.isNaN())return new t(NaN,NaN);if(u.im===0)return new t(Rv(u.re),0);if(u.re>=n||Math.abs(u.im)>=i)return s(u);if(u.re<=h){var g=LF(f,u.im)*Math.floor(.5*u.re+.25),x=u.mul(Math.PI).sin().log(),v=l(new t(1-u.re,-u.im));return new t(p,g).sub(x).sub(v)}else return u.im>=0?a(u):a(u.conjugate()).conjugate()}function s(u){for(var f=u.sub(.5).mul(u.log()).sub(u).add(WA),p=new t(1,0).div(u),h=p.div(u),g=o[0],x=o[1],v=2*h.re,S=h.re*h.re+h.im*h.im,D=2;D<8;D++){var C=x;x=-S*g+o[D],g=v*g+C}var E=p.mul(h.mul(g).add(x));return f.add(E)}function a(u){var f=0,p=0,h=u;for(u=u.add(1);u.re<=n;){h=h.mul(u);var g=h.im<0?1:0;g!==0&&p===0&&f++,p=g,u=u.add(1)}return s(u).sub(h.log()).sub(new t(0,f*2*Math.PI*1))}});var iz="factorial",$ce=["typed","gamma"],oz=$(iz,$ce,e=>{var{typed:t,gamma:r}=e;return t(iz,{number:function(i){if(i<0)throw new Error("Value must be non-negative");return r(i+1)},BigNumber:function(i){if(i.isNegative())throw new Error("Value must be non-negative");return r(i.plus(1))},"Array | Matrix":t.referToSelf(n=>i=>yt(i,n))})});var az="kldivergence",Wce=["typed","matrix","divide","sum","multiply","map","dotDivide","log","isNumeric"],sz=$(az,Wce,e=>{var{typed:t,matrix:r,divide:n,sum:i,multiply:o,map:l,dotDivide:s,log:a,isNumeric:u}=e;return t(az,{"Array, Array":function(h,g){return f(r(h),r(g))},"Matrix, Array":function(h,g){return f(h,r(g))},"Array, Matrix":function(h,g){return f(r(h),g)},"Matrix, Matrix":function(h,g){return f(h,g)}});function f(p,h){var g=h.size().length,x=p.size().length;if(g>1)throw new Error("first object must be one dimensional");if(x>1)throw new Error("second object must be one dimensional");if(g!==x)throw new Error("Length of two vectors must be equal");var v=i(p);if(v===0)throw new Error("Sum of elements in first object must be non zero");var S=i(h);if(S===0)throw new Error("Sum of elements in second object must be non zero");var D=n(p,i(p)),C=n(h,i(h)),E=i(o(D,l(s(D,C),M=>a(M))));return u(E)?E:Number.NaN}});var uz="multinomial",Vce=["typed","add","divide","multiply","factorial","isInteger","isPositive"],lz=$(uz,Vce,e=>{var{typed:t,add:r,divide:n,multiply:i,factorial:o,isInteger:l,isPositive:s}=e;return t(uz,{"Array | Matrix":function(u){var f=0,p=1;return mo(u,function(h){if(!l(h)||!s(h))throw new TypeError("Positive integer value expected in function multinomial");f=r(f,h),p=i(p,o(h))}),n(o(f),p)}})});var fz="permutations",Gce=["typed","factorial"],pz=$(fz,Gce,e=>{var{typed:t,factorial:r}=e;return t(fz,{"number | BigNumber":r,"number, number":function(i,o){if(!dt(i)||i<0)throw new TypeError("Positive integer value expected in function permutations");if(!dt(o)||o<0)throw new TypeError("Positive integer value expected in function permutations");if(o>i)throw new TypeError("second argument k must be less than or equal to first argument n");return ya(i-o+1,i)},"BigNumber, BigNumber":function(i,o){var l,s;if(!cz(i)||!cz(o))throw new TypeError("Positive integer value expected in function permutations");if(o.gt(i))throw new TypeError("second argument k must be less than or equal to first argument n");var a=i.mul(0).add(1);for(l=a,s=i.minus(o).plus(1);s.lte(i);s=s.plus(1))l=l.times(s);return l}})});function cz(e){return e.isInteger()&&e.gte(0)}var FC=mn(Tz(),1),jce=(0,FC.default)(Date.now());function Ll(e){var t;function r(i){t=i===null?jce:(0,FC.default)(String(i))}r(e);function n(){return t()}return n}var _z="pickRandom",epe=["typed","config","?on"],Oz=$(_z,epe,e=>{var{typed:t,config:r,on:n}=e,i=Ll(r.randomSeed);return n&&n("config",function(l,s){l.randomSeed!==s.randomSeed&&(i=Ll(l.randomSeed))}),t(_z,{"Array | Matrix":function(s){return o(s,{})},"Array | Matrix, Object":function(s,a){return o(s,a)},"Array | Matrix, number":function(s,a){return o(s,{number:a})},"Array | Matrix, Array | Matrix":function(s,a){return o(s,{weights:a})},"Array | Matrix, Array | Matrix, number":function(s,a,u){return o(s,{number:u,weights:a})},"Array | Matrix, number, Array | Matrix":function(s,a,u){return o(s,{number:a,weights:u})}});function o(l,s){var{number:a,weights:u,elementWise:f=!0}=s,p=typeof a>"u";p&&(a=1);var h=gt(l)?l.create:gt(u)?u.create:null;l=l.valueOf(),u&&(u=u.valueOf()),f===!0&&(l=jt(l),u=jt(u));var g=0;if(typeof u<"u"){if(u.length!==l.length)throw new Error("Weights must have the same length as possibles");for(var x=0,v=u.length;x"u")C=l[Math.floor(i()*S)];else for(var E=i()*g,M=0,T=l.length;M1)for(var n=0,i=e.shift();n{var{typed:t,config:r,on:n}=e,i=Ll(r.randomSeed);return n&&n("config",function(s,a){s.randomSeed!==a.randomSeed&&(i=Ll(s.randomSeed))}),t(Fz,{"":()=>l(0,1),number:s=>l(0,s),"number, number":(s,a)=>l(s,a),"Array | Matrix":s=>o(s,0,1),"Array | Matrix, number":(s,a)=>o(s,0,a),"Array | Matrix, number, number":(s,a,u)=>o(s,a,u)});function o(s,a,u){var f=Hv(s.valueOf(),()=>l(a,u));return gt(s)?s.create(f,"number"):f}function l(s,a){return s+i()*(a-s)}});var kz="randomInt",rpe=["typed","config","?on"],Lz=$(kz,rpe,e=>{var{typed:t,config:r,on:n}=e,i=Ll(r.randomSeed);return n&&n("config",function(s,a){s.randomSeed!==a.randomSeed&&(i=Ll(s.randomSeed))}),t(kz,{"":()=>l(0,1),number:s=>l(0,s),"number, number":(s,a)=>l(s,a),"Array | Matrix":s=>o(s,0,1),"Array | Matrix, number":(s,a)=>o(s,0,a),"Array | Matrix, number, number":(s,a,u)=>o(s,a,u)});function o(s,a,u){var f=Hv(s.valueOf(),()=>l(a,u));return gt(s)?s.create(f,"number"):f}function l(s,a){return Math.floor(s+i()*(a-s))}});var Bz="stirlingS2",npe=["typed","addScalar","subtractScalar","multiplyScalar","divideScalar","pow","factorial","combinations","isNegative","isInteger","number","?bignumber","larger"],Pz=$(Bz,npe,e=>{var{typed:t,addScalar:r,subtractScalar:n,multiplyScalar:i,divideScalar:o,pow:l,factorial:s,combinations:a,isNegative:u,isInteger:f,number:p,bignumber:h,larger:g}=e,x=[],v=[];return t(Bz,{"number | BigNumber, number | BigNumber":function(D,C){if(!f(D)||u(D)||!f(C)||u(C))throw new TypeError("Non-negative integer value expected in function stirlingS2");if(g(C,D))throw new TypeError("k must be less than or equal to n in function stirlingS2");var E=!(Pt(D)&&Pt(C)),M=E?v:x,T=E?h:p,N=p(D),O=p(C);if(M[N]&&M[N].length>O)return M[N][O];for(var F=0;F<=N;++F)if(M[F]||(M[F]=[T(F===0?1:0)]),F!==0)for(var I=M[F],B=M[F-1],L=I.length;L<=F&&L<=O;++L)L===F?I[L]=1:I[L]=r(i(T(L),B[L]),B[L-1]);return M[N][O]}})});var Rz="bellNumbers",ipe=["typed","addScalar","isNegative","isInteger","stirlingS2"],qz=$(Rz,ipe,e=>{var{typed:t,addScalar:r,isNegative:n,isInteger:i,stirlingS2:o}=e;return t(Rz,{"number | BigNumber":function(s){if(!i(s)||n(s))throw new TypeError("Non-negative integer value expected in function bellNumbers");for(var a=0,u=0;u<=s;u++)a=r(a,o(s,u));return a}})});var zz="catalan",ope=["typed","addScalar","divideScalar","multiplyScalar","combinations","isNegative","isInteger"],Uz=$(zz,ope,e=>{var{typed:t,addScalar:r,divideScalar:n,multiplyScalar:i,combinations:o,isNegative:l,isInteger:s}=e;return t(zz,{"number | BigNumber":function(u){if(!s(u)||l(u))throw new TypeError("Non-negative integer value expected in function catalan");return n(o(i(u,2),u),r(u,1))}})});var Hz="composition",ape=["typed","addScalar","combinations","isNegative","isPositive","isInteger","larger"],$z=$(Hz,ape,e=>{var{typed:t,addScalar:r,combinations:n,isPositive:i,isNegative:o,isInteger:l,larger:s}=e;return t(Hz,{"number | BigNumber, number | BigNumber":function(u,f){if(!l(u)||!i(u)||!l(f)||!i(f))throw new TypeError("Positive integer value expected in function composition");if(s(f,u))throw new TypeError("k must be less than or equal to n in function composition");return n(r(u,-1),r(f,-1))}})});var Wz="leafCount",spe=["parse","typed"],Vz=$(Wz,spe,e=>{var{parse:t,typed:r}=e;function n(i){var o=0;return i.forEach(l=>{o+=n(l)}),o||1}return r(Wz,{Node:function(o){return n(o)}})});function IC(e){return Qt(e)||$r(e)&&e.isUnary()&&Qt(e.args[0])}function $v(e){return!!(Qt(e)||(Ji(e)||$r(e))&&e.args.every($v)||yi(e)&&$v(e.content))}function Gz(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function kC(e){for(var t=1;t{var{FunctionNode:t,OperatorNode:r,SymbolNode:n}=e,i=!0,o=!1,l="defaultF",s={add:{trivial:i,total:i,commutative:i,associative:i},unaryPlus:{trivial:i,total:i,commutative:i,associative:i},subtract:{trivial:o,total:i,commutative:o,associative:o},multiply:{trivial:i,total:i,commutative:i,associative:i},divide:{trivial:o,total:i,commutative:o,associative:o},paren:{trivial:i,total:i,commutative:i,associative:o},defaultF:{trivial:o,total:i,commutative:o,associative:o}},a={divide:{total:o},log:{total:o}},u={subtract:{total:o},abs:{trivial:i},log:{total:i}};function f(E,M){var T=arguments.length>2&&arguments[2]!==void 0?arguments[2]:s,N=l;if(typeof E=="string"?N=E:$r(E)?N=E.fn.toString():Ji(E)?N=E.name:yi(E)&&(N="paren"),xt(T,N)){var O=T[N];if(xt(O,M))return O[M];if(xt(s,N))return s[N][M]}if(xt(T,l)){var F=T[l];return xt(F,M)?F[M]:s[l][M]}if(xt(s,N)){var I=s[N];if(xt(I,M))return I[M]}return s[l][M]}function p(E){var M=arguments.length>1&&arguments[1]!==void 0?arguments[1]:s;return f(E,"commutative",M)}function h(E){var M=arguments.length>1&&arguments[1]!==void 0?arguments[1]:s;return f(E,"associative",M)}function g(E,M){var T=kC({},E);for(var N in M)xt(E,N)?T[N]=kC(kC({},M[N]),E[N]):T[N]=M[N];return T}function x(E,M){if(!E.args||E.args.length===0)return E;E.args=v(E,M);for(var T=0;T2&&h(E,M)){for(var F=E.args.pop();E.args.length>0;)F=T([E.args.pop(),F]);E.args=F.args}}}function D(E,M){if(!(!E.args||E.args.length===0)){for(var T=C(E),N=E.args.length,O=0;O2&&h(E,M)){for(var F=E.args.shift();E.args.length>0;)F=T([F,E.args.shift()]);E.args=F.args}}}function C(E){return $r(E)?function(M){try{return new r(E.op,E.fn,M,E.implicit)}catch(T){return console.error(T),[]}}:function(M){return new t(new n(E.name),M)}}return{createMakeNodeFunction:C,hasProperty:f,isCommutative:p,isAssociative:h,mergeContext:g,flatten:x,allChildren:v,unflattenr:S,unflattenl:D,defaultContext:s,realContext:a,positiveContext:u}});var fpe="simplify",cpe=["typed","parse","equal","resolve","simplifyConstant","simplifyCore","AccessorNode","ArrayNode","ConstantNode","FunctionNode","IndexNode","ObjectNode","OperatorNode","ParenthesisNode","SymbolNode","replacer"],Yz=$(fpe,cpe,e=>{var{typed:t,parse:r,equal:n,resolve:i,simplifyConstant:o,simplifyCore:l,AccessorNode:s,ArrayNode:a,ConstantNode:u,FunctionNode:f,IndexNode:p,ObjectNode:h,OperatorNode:g,ParenthesisNode:x,SymbolNode:v,replacer:S}=e,{hasProperty:D,isCommutative:C,isAssociative:E,mergeContext:M,flatten:T,unflattenr:N,unflattenl:O,createMakeNodeFunction:F,defaultContext:I,realContext:B,positiveContext:L}=Bd({FunctionNode:f,OperatorNode:g,SymbolNode:v});t.addConversion({from:"Object",to:"Map",convert:Ml});var q=t("simplify",{Node:Z,"Node, Map":(le,ne)=>Z(le,!1,ne),"Node, Map, Object":(le,ne,fe)=>Z(le,!1,ne,fe),"Node, Array":Z,"Node, Array, Map":Z,"Node, Array, Map, Object":Z});t.removeConversion({from:"Object",to:"Map",convert:Ml}),q.defaultContext=I,q.realContext=B,q.positiveContext=L;function R(le){return le.transform(function(ne){return yi(ne)?R(ne.content):ne})}var V={true:!0,false:!0,e:!0,i:!0,Infinity:!0,LN2:!0,LN10:!0,LOG2E:!0,LOG10E:!0,NaN:!0,phi:!0,pi:!0,SQRT1_2:!0,SQRT2:!0,tau:!0};q.rules=[l,{l:"log(e)",r:"1"},{s:"n-n1 -> n+-n1",assuming:{subtract:{total:!0}}},{s:"n-n -> 0",assuming:{subtract:{total:!1}}},{s:"-(cl*v) -> v * (-cl)",assuming:{multiply:{commutative:!0},subtract:{total:!0}}},{s:"-(cl*v) -> (-cl) * v",assuming:{multiply:{commutative:!1},subtract:{total:!0}}},{s:"-(v*cl) -> v * (-cl)",assuming:{multiply:{commutative:!1},subtract:{total:!0}}},{l:"-(n1/n2)",r:"-n1/n2"},{l:"-v",r:"v * (-1)"},{l:"(n1 + n2)*(-1)",r:"n1*(-1) + n2*(-1)",repeat:!0},{l:"n/n1^n2",r:"n*n1^-n2"},{l:"n/n1",r:"n*n1^-1"},{s:"(n1*n2)^n3 -> n1^n3 * n2^n3",assuming:{multiply:{commutative:!0}}},{s:"(n1*n2)^(-1) -> n2^(-1) * n1^(-1)",assuming:{multiply:{commutative:!1}}},{s:"(n ^ n1) ^ n2 -> n ^ (n1 * n2)",assuming:{divide:{total:!0}}},{l:" vd * ( vd * n1 + n2)",r:"vd^2 * n1 + vd * n2"},{s:" vd * (vd^n4 * n1 + n2) -> vd^(1+n4) * n1 + vd * n2",assuming:{divide:{total:!0}}},{s:"vd^n3 * ( vd * n1 + n2) -> vd^(n3+1) * n1 + vd^n3 * n2",assuming:{divide:{total:!0}}},{s:"vd^n3 * (vd^n4 * n1 + n2) -> vd^(n3+n4) * n1 + vd^n3 * n2",assuming:{divide:{total:!0}}},{l:"n*n",r:"n^2"},{s:"n * n^n1 -> n^(n1+1)",assuming:{divide:{total:!0}}},{s:"n^n1 * n^n2 -> n^(n1+n2)",assuming:{divide:{total:!0}}},o,{s:"n+n -> 2*n",assuming:{add:{total:!0}}},{l:"n+-n",r:"0"},{l:"vd*n + vd",r:"vd*(n+1)"},{l:"n3*n1 + n3*n2",r:"n3*(n1+n2)"},{l:"n3^(-n4)*n1 + n3 * n2",r:"n3^(-n4)*(n1 + n3^(n4+1) *n2)"},{l:"n3^(-n4)*n1 + n3^n5 * n2",r:"n3^(-n4)*(n1 + n3^(n4+n5)*n2)"},{s:"n*vd + vd -> (n+1)*vd",assuming:{multiply:{commutative:!1}}},{s:"vd + n*vd -> (1+n)*vd",assuming:{multiply:{commutative:!1}}},{s:"n1*n3 + n2*n3 -> (n1+n2)*n3",assuming:{multiply:{commutative:!1}}},{s:"n^n1 * n -> n^(n1+1)",assuming:{divide:{total:!0},multiply:{commutative:!1}}},{s:"n1*n3^(-n4) + n2 * n3 -> (n1 + n2*n3^(n4 + 1))*n3^(-n4)",assuming:{multiply:{commutative:!1}}},{s:"n1*n3^(-n4) + n2 * n3^n5 -> (n1 + n2*n3^(n4 + n5))*n3^(-n4)",assuming:{multiply:{commutative:!1}}},{l:"n*cd + cd",r:"(n+1)*cd"},{s:"cd*n + cd -> cd*(n+1)",assuming:{multiply:{commutative:!1}}},{s:"cd + cd*n -> cd*(1+n)",assuming:{multiply:{commutative:!1}}},o,{s:"(-n)*n1 -> -(n*n1)",assuming:{subtract:{total:!0}}},{s:"n1*(-n) -> -(n1*n)",assuming:{subtract:{total:!0},multiply:{commutative:!1}}},{s:"ce+ve -> ve+ce",assuming:{add:{commutative:!0}},imposeContext:{add:{commutative:!1}}},{s:"vd*cd -> cd*vd",assuming:{multiply:{commutative:!0}},imposeContext:{multiply:{commutative:!1}}},{l:"n+-n1",r:"n-n1"},{l:"n+-(n1)",r:"n-(n1)"},{s:"n*(n1^-1) -> n/n1",assuming:{multiply:{commutative:!0}}},{s:"n*n1^-n2 -> n/n1^n2",assuming:{multiply:{commutative:!0}}},{s:"n^-1 -> 1/n",assuming:{multiply:{commutative:!0}}},{l:"n^1",r:"n"},{s:"n*(n1/n2) -> (n*n1)/n2",assuming:{multiply:{associative:!0}}},{s:"n-(n1+n2) -> n-n1-n2",assuming:{addition:{associative:!0,commutative:!0}}},{l:"1*n",r:"n",imposeContext:{multiply:{commutative:!0}}},{s:"n1/(n2/n3) -> (n1*n3)/n2",assuming:{multiply:{associative:!0}}},{l:"n1/(-n2)",r:"-n1/n2"}];function X(le,ne){var fe={};if(le.s){var Fe=le.s.split("->");if(Fe.length===2)fe.l=Fe[0],fe.r=Fe[1];else throw SyntaxError("Could not parse rule: "+le.s)}else fe.l=le.l,fe.r=le.r;fe.l=R(r(fe.l)),fe.r=R(r(fe.r));for(var me of["imposeContext","repeat","assuming"])me in le&&(fe[me]=le[me]);if(le.evaluate&&(fe.evaluate=r(le.evaluate)),E(fe.l,ne)){var Ue=!C(fe.l,ne),Re;Ue&&(Re=ee());var ie=F(fe.l),ue=ee();fe.expanded={},fe.expanded.l=ie([fe.l,ue]),T(fe.expanded.l,ne),N(fe.expanded.l,ne),fe.expanded.r=ie([fe.r,ue]),Ue&&(fe.expandedNC1={},fe.expandedNC1.l=ie([Re,fe.l]),fe.expandedNC1.r=ie([Re,fe.r]),fe.expandedNC2={},fe.expandedNC2.l=ie([Re,fe.expanded.l]),fe.expandedNC2.r=ie([Re,fe.expanded.r]))}return fe}function U(le,ne){for(var fe=[],Fe=0;Fe2&&arguments[2]!==void 0?arguments[2]:Yf(),Fe=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},me=Fe.consoleDebug;ne=U(ne||q.rules,Fe.context);var Ue=i(le,fe);Ue=R(Ue);for(var Re={},ie=Ue.toString({parenthesis:"all"});!Re[ie];){Re[ie]=!0,H=0;var ue=ie;me&&console.log("Working on: ",ie);for(var Te=0;Te ").concat(ne[Te].r.toString()))),me){var Je=Ue.toString({parenthesis:"all"});Je!==ue&&(console.log("Applying",Ce,"produced",Je),ue=Je)}O(Ue,Fe.context)}ie=Ue.toString({parenthesis:"all"})}return Ue}function pe(le,ne,fe){var Fe=le;if(le)for(var me=0;me1&&(ue=Ue(le.args.slice(0,ie))),me=le.args.slice(ie),Fe=me.length===1?me[0]:Ue(me),fe.push(Ue([ue,Fe]))}return fe}function oe(le,ne){var fe={placeholders:{}};if(!le.placeholders&&!ne.placeholders)return fe;if(le.placeholders){if(!ne.placeholders)return le}else return ne;for(var Fe in le.placeholders)if(xt(le.placeholders,Fe)&&(fe.placeholders[Fe]=le.placeholders[Fe],xt(ne.placeholders,Fe)&&!Me(le.placeholders[Fe],ne.placeholders[Fe])))return null;for(var me in ne.placeholders)xt(ne.placeholders,me)&&(fe.placeholders[me]=ne.placeholders[me]);return fe}function ve(le,ne){var fe=[];if(le.length===0||ne.length===0)return fe;for(var Fe,me=0;me2)throw new Error("permuting >2 commutative non-associative rule arguments not yet implemented");var ue=De(le.args[0],ne.args[1],fe);if(ue.length===0)return[];var Te=De(le.args[1],ne.args[0],fe);if(Te.length===0)return[];Ue=[ue,Te]}me=Oe(Ue)}else if(ne.args.length>=2&&le.args.length===2){for(var Ce=he(ne,fe),Je=[],He=0;He2)throw Error("Unexpected non-binary associative function: "+le.toString());return[]}}else if(le instanceof v){if(le.name.length===0)throw new Error("Symbol in rule has 0 length...!?");if(V[le.name]){if(le.name!==ne.name)return[]}else switch(le.name[1]>="a"&&le.name[1]<="z"?le.name.substring(0,2):le.name[0]){case"n":case"_p":me[0].placeholders[le.name]=ne;break;case"c":case"cl":if(Qt(ne))me[0].placeholders[le.name]=ne;else return[];break;case"v":if(!Qt(ne))me[0].placeholders[le.name]=ne;else return[];break;case"vl":if(Lr(ne))me[0].placeholders[le.name]=ne;else return[];break;case"cd":if(IC(ne))me[0].placeholders[le.name]=ne;else return[];break;case"vd":if(!IC(ne))me[0].placeholders[le.name]=ne;else return[];break;case"ce":if($v(ne))me[0].placeholders[le.name]=ne;else return[];break;case"ve":if(!$v(ne))me[0].placeholders[le.name]=ne;else return[];break;default:throw new Error("Invalid symbol in rule: "+le.name)}}else if(le instanceof u){if(!n(le.value,ne.value))return[]}else return[];return me}function Me(le,ne){if(le instanceof u&&ne instanceof u){if(!n(le.value,ne.value))return!1}else if(le instanceof v&&ne instanceof v){if(le.name!==ne.name)return!1}else if(le instanceof g&&ne instanceof g||le instanceof f&&ne instanceof f){if(le instanceof g){if(le.op!==ne.op||le.fn!==ne.fn)return!1}else if(le instanceof f&&le.name!==ne.name)return!1;if(le.args.length!==ne.args.length)return!1;for(var fe=0;fe{var{typed:t,config:r,mathWithTransform:n,matrix:i,fraction:o,bignumber:l,AccessorNode:s,ArrayNode:a,ConstantNode:u,FunctionNode:f,IndexNode:p,ObjectNode:h,OperatorNode:g,SymbolNode:x}=e,{isCommutative:v,isAssociative:S,allChildren:D,createMakeNodeFunction:C}=Bd({FunctionNode:f,OperatorNode:g,SymbolNode:x}),E=t("simplifyConstant",{Node:X=>O(V(X,{})),"Node, Object":function(U,H){return O(V(U,H))}});function M(X){return ga(X)?X.valueOf():X instanceof Array?X.map(M):gt(X)?i(M(X.valueOf())):X}function T(X,U,H){try{return n[X].apply(null,U)}catch{return U=U.map(M),I(n[X].apply(null,U),H)}}var N=t({Fraction:L,number:function(U){return U<0?B(new u(-U)):new u(U)},BigNumber:function(U){return U<0?B(new u(-U)):new u(U)},bigint:function(U){return U<0n?B(new u(-U)):new u(U)},Complex:function(U){throw new Error("Cannot convert Complex number to Node")},string:function(U){return new u(U)},Matrix:function(U){return new a(U.valueOf().map(H=>N(H)))}});function O(X){return ir(X)?X:N(X)}function F(X,U){var H=U&&U.exactFractions!==!1;if(H&&isFinite(X)&&o){var ee=o(X),Z=U&&typeof U.fractionsLimit=="number"?U.fractionsLimit:1/0;if(ee.valueOf()===X&&ee.nr.number==="BigNumber"&&l?l(Z):Number(Z),H=X.s*X.n,ee=H<0n?new g("-","unaryMinus",[new u(-U(H))]):new u(U(H));return X.d===1n?ee:new g("/","divide",[ee,new u(U(X.d))])}function q(X,U,H){if(!Wo(U))return new s(O(X),O(U));if(xi(X)||gt(X)){for(var ee=Array.from(U.dimensions);ee.length>0;)if(Qt(ee[0])&&typeof ee[0].value!="string"){var Z=I(ee.shift().value,H);xi(X)?X=X.items[Z-1]:(X=X.valueOf()[Z-1],X instanceof Array&&(X=i(X)))}else if(ee.length>1&&Qt(ee[1])&&typeof ee[1].value!="string"){var pe=I(ee[1].value,H),we=[],he=xi(X)?X.items:X.valueOf();for(var oe of he)if(xi(oe))we.push(oe.items[pe-1]);else if(gt(X))we.push(oe[pe-1]);else break;if(we.length===he.length)xi(X)?X=new a(we):X=i(we),ee.splice(1,1);else break}else break;return ee.length===U.dimensions.length?new s(O(X),U):ee.length>0?(U=new p(ee),new s(O(X),U)):X}if(Fu(X)&&U.dimensions.length===1&&Qt(U.dimensions[0])){var ve=U.dimensions[0].value;return ve in X.properties?X.properties[ve]:new u}return new s(O(X),U)}function R(X,U,H,ee){var Z=U.shift(),pe=U.reduce((we,he)=>{if(!ir(he)){var oe=we.pop();if(ir(oe))return[oe,he];try{return we.push(T(X,[oe,he],ee)),we}catch{we.push(oe)}}we.push(O(we.pop()));var ve=we.length===1?we[0]:H(we);return[H([ve,O(he)])]},[Z]);return pe.length===1?pe[0]:H([pe[0],N(pe[1])])}function V(X,U){switch(X.type){case"SymbolNode":return X;case"ConstantNode":switch(typeof X.value){case"number":return I(X.value,U);case"bigint":return I(X.value,U);case"string":return X.value;default:if(!isNaN(X.value))return I(X.value,U)}return X;case"FunctionNode":if(n[X.name]&&n[X.name].rawArgs)return X;{var H=["add","multiply"];if(!H.includes(X.name)){var ee=X.args.map(Fe=>V(Fe,U));if(!ee.some(ir))try{return T(X.name,ee,U)}catch{}if(X.name==="size"&&ee.length===1&&xi(ee[0])){for(var Z=[],pe=ee[0];xi(pe);)Z.push(pe.items.length),pe=pe.items[0];return i(Z)}return new f(X.name,ee.map(O))}}case"OperatorNode":{var we=X.fn.toString(),he,oe,ve=C(X);if($r(X)&&X.isUnary())he=[V(X.args[0],U)],ir(he[0])?oe=ve(he):oe=T(we,he,U);else if(S(X,U.context))if(he=D(X,U.context),he=he.map(Fe=>V(Fe,U)),v(we,U.context)){for(var Oe=[],De=[],Me=0;Me1?(oe=R(we,Oe,ve,U),De.unshift(oe),oe=R(we,De,ve,U)):oe=R(we,he,ve,U)}else oe=R(we,he,ve,U);else he=X.args.map(Fe=>V(Fe,U)),oe=R(we,he,ve,U);return oe}case"ParenthesisNode":return V(X.content,U);case"AccessorNode":return q(V(X.object,U),V(X.index,U),U);case"ArrayNode":{var le=X.items.map(Fe=>V(Fe,U));return le.some(ir)?new a(le.map(O)):i(le)}case"IndexNode":return new p(X.dimensions.map(Fe=>E(Fe,U)));case"ObjectNode":{var ne={};for(var fe in X.properties)ne[fe]=E(X.properties[fe],U);return new h(ne)}case"AssignmentNode":case"BlockNode":case"FunctionAssignmentNode":case"RangeNode":case"ConditionalNode":default:throw new Error("Unimplemented node type in simplifyConstant: ".concat(X.type))}}return E});var Xz="simplifyCore",dpe=["typed","parse","equal","isZero","add","subtract","multiply","divide","pow","AccessorNode","ArrayNode","ConstantNode","FunctionNode","IndexNode","ObjectNode","OperatorNode","ParenthesisNode","SymbolNode"],Kz=$(Xz,dpe,e=>{var{typed:t,parse:r,equal:n,isZero:i,add:o,subtract:l,multiply:s,divide:a,pow:u,AccessorNode:f,ArrayNode:p,ConstantNode:h,FunctionNode:g,IndexNode:x,ObjectNode:v,OperatorNode:S,ParenthesisNode:D,SymbolNode:C}=e,E=new h(0),M=new h(1),T=new h(!0),N=new h(!1);function O(L){return $r(L)&&["and","not","or"].includes(L.op)}var{hasProperty:F,isCommutative:I}=Bd({FunctionNode:g,OperatorNode:S,SymbolNode:C});function B(L){var q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},R=q?q.context:void 0;if(F(L,"trivial",R)){if(Ji(L)&&L.args.length===1)return B(L.args[0],q);var V=!1,X=0;if(L.forEach(De=>{++X,X===1&&(V=B(De,q))}),X===1)return V}var U=L;if(Ji(U)){var H=qP(U.name);if(H){if(U.args.length>2&&F(U,"associative",R))for(;U.args.length>2;){var ee=U.args.pop(),Z=U.args.pop();U.args.push(new S(H,U.name,[ee,Z]))}U=new S(H,U.name,U.args)}else return new g(B(U.fn),U.args.map(De=>B(De,q)))}if($r(U)&&U.isUnary()){var pe=B(U.args[0],q);if(U.op==="~"&&$r(pe)&&pe.isUnary()&&pe.op==="~"||U.op==="not"&&$r(pe)&&pe.isUnary()&&pe.op==="not"&&O(pe.args[0]))return pe.args[0];var we=!0;if(U.op==="-"&&$r(pe)&&(pe.isBinary()&&pe.fn==="subtract"&&(U=new S("-","subtract",[pe.args[1],pe.args[0]]),we=!1),pe.isUnary()&&pe.op==="-"))return pe.args[0];if(we)return new S(U.op,U.fn,[pe])}if($r(U)&&U.isBinary()){var he=B(U.args[0],q),oe=B(U.args[1],q);if(U.op==="+"){if(Qt(he)&&i(he.value))return oe;if(Qt(oe)&&i(oe.value))return he;$r(oe)&&oe.isUnary()&&oe.op==="-"&&(oe=oe.args[0],U=new S("-","subtract",[he,oe]))}if(U.op==="-")return $r(oe)&&oe.isUnary()&&oe.op==="-"?B(new S("+","add",[he,oe.args[0]]),q):Qt(he)&&i(he.value)?B(new S("-","unaryMinus",[oe])):Qt(oe)&&i(oe.value)?he:new S(U.op,U.fn,[he,oe]);if(U.op==="*"){if(Qt(he)){if(i(he.value))return E;if(n(he.value,1))return oe}if(Qt(oe)){if(i(oe.value))return E;if(n(oe.value,1))return he;if(I(U,R))return new S(U.op,U.fn,[oe,he],U.implicit)}return new S(U.op,U.fn,[he,oe],U.implicit)}if(U.op==="/")return Qt(he)&&i(he.value)?E:Qt(oe)&&n(oe.value,1)?he:new S(U.op,U.fn,[he,oe]);if(U.op==="^"&&Qt(oe)){if(i(oe.value))return M;if(n(oe.value,1))return he}if(U.op==="and"){if(Qt(he))if(he.value){if(O(oe))return oe;if(Qt(oe))return oe.value?T:N}else return N;if(Qt(oe))if(oe.value){if(O(he))return he}else return N}if(U.op==="or"){if(Qt(he)){if(he.value)return T;if(O(oe))return oe}if(Qt(oe)){if(oe.value)return T;if(O(he))return he}}return new S(U.op,U.fn,[he,oe])}if($r(U))return new S(U.op,U.fn,U.args.map(De=>B(De,q)));if(xi(U))return new p(U.items.map(De=>B(De,q)));if(Mo(U))return new f(B(U.object,q),B(U.index,q));if(Wo(U))return new x(U.dimensions.map(De=>B(De,q)));if(Fu(U)){var ve={};for(var Oe in U.properties)ve[Oe]=B(U.properties[Oe],q);return new v(ve)}return U}return t(Xz,{Node:B,"Node,Object":B})});var hpe="resolve",gpe=["typed","parse","ConstantNode","FunctionNode","OperatorNode","ParenthesisNode"],Jz=$(hpe,gpe,e=>{var{typed:t,parse:r,ConstantNode:n,FunctionNode:i,OperatorNode:o,ParenthesisNode:l}=e;function s(a,u){var f=arguments.length>2&&arguments[2]!==void 0?arguments[2]:new Set;if(!u)return a;if(Lr(a)){if(f.has(a.name)){var p=Array.from(f).join(", ");throw new ReferenceError("recursive loop of variable definitions among {".concat(p,"}"))}var h=u.get(a.name);if(ir(h)){var g=new Set(f);return g.add(a.name),s(h,u,g)}else return typeof h=="number"?r(String(h)):h!==void 0?new n(h):a}else if($r(a)){var x=a.args.map(function(S){return s(S,u,f)});return new o(a.op,a.fn,x,a.implicit)}else{if(yi(a))return new l(s(a.content,u,f));if(Ji(a)){var v=a.args.map(function(S){return s(S,u,f)});return new i(a.name,v)}}return a.map(S=>s(S,u,f))}return t("resolve",{Node:s,"Node, Map | null | undefined":s,"Node, Object":(a,u)=>s(a,Ml(u)),"Array | Matrix":t.referToSelf(a=>u=>u.map(f=>a(f))),"Array | Matrix, null | undefined":t.referToSelf(a=>u=>u.map(f=>a(f))),"Array, Object":t.referTo("Array,Map",a=>(u,f)=>a(u,Ml(f))),"Matrix, Object":t.referTo("Matrix,Map",a=>(u,f)=>a(u,Ml(f))),"Array | Matrix, Map":t.referToSelf(a=>(u,f)=>u.map(p=>a(p,f)))})});var Qz="symbolicEqual",vpe=["parse","simplify","typed","OperatorNode"],jz=$(Qz,vpe,e=>{var{parse:t,simplify:r,typed:n,OperatorNode:i}=e;function o(l,s){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},u=new i("-","subtract",[l,s]),f=r(u,{},a);return Qt(f)&&!f.value}return n(Qz,{"Node, Node":o,"Node, Node, Object":o})});var eU="derivative",xpe=["typed","config","parse","simplify","equal","isZero","numeric","ConstantNode","FunctionNode","OperatorNode","ParenthesisNode","SymbolNode"],tU=$(eU,xpe,e=>{var{typed:t,config:r,parse:n,simplify:i,equal:o,isZero:l,numeric:s,ConstantNode:a,FunctionNode:u,OperatorNode:f,ParenthesisNode:p,SymbolNode:h}=e;function g(M,T){var N=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{simplify:!0},O={};D(O,M,T.name);var F=C(M,O);return N.simplify?i(F):F}function x(M){var T=n(M);if(!T.isSymbolNode)throw new TypeError("Invalid variable. "+"Cannot parse ".concat(JSON.stringify(M)," into a variable in function derivative"));return T}var v=t(eU,{"Node, SymbolNode":g,"Node, SymbolNode, Object":g,"Node, string":(M,T)=>g(M,x(T)),"Node, string, Object":(M,T,N)=>g(M,x(T),N)});v._simplify=!0,v.toTex=function(M){return S.apply(null,M.args)};var S=t("_derivTex",{"Node, SymbolNode":function(T,N){return Qt(T)&&pr(T.value)==="string"?S(n(T.value).toString(),N.toString(),1):S(T.toTex(),N.toString(),1)},"Node, ConstantNode":function(T,N){if(pr(N.value)==="string")return S(T,n(N.value));throw new Error("The second parameter to 'derivative' is a non-string constant")},"Node, SymbolNode, ConstantNode":function(T,N,O){return S(T.toString(),N.name,O.value)},"string, string, number":function(T,N,O){var F;return O===1?F="{d\\over d"+N+"}":F="{d^{"+O+"}\\over d"+N+"^{"+O+"}}",F+"\\left[".concat(T,"\\right]")}}),D=t("constTag",{"Object, ConstantNode, string":function(T,N){return T[N]=!0,!0},"Object, SymbolNode, string":function(T,N,O){return N.name!==O?(T[N]=!0,!0):!1},"Object, ParenthesisNode, string":function(T,N,O){return D(T,N.content,O)},"Object, FunctionAssignmentNode, string":function(T,N,O){return N.params.includes(O)?D(T,N.expr,O):(T[N]=!0,!0)},"Object, FunctionNode | OperatorNode, string":function(T,N,O){if(N.args.length>0){for(var F=D(T,N.args[0],O),I=1;I0){var F=T.args.filter(function(U){return N[U]===void 0}),I=F.length===1?F[0]:new f("*","multiply",F),B=O.concat(C(I,N));return new f("*","multiply",B)}return new f("+","add",T.args.map(function(U){return new f("*","multiply",T.args.map(function(H){return H===U?C(H,N):H.clone()}))}))}if(T.op==="/"&&T.isBinary()){var L=T.args[0],q=T.args[1];return N[q]!==void 0?new f("/","divide",[C(L,N),q]):N[L]!==void 0?new f("*","multiply",[new f("-","unaryMinus",[L]),new f("/","divide",[C(q,N),new f("^","pow",[q.clone(),E(2)])])]):new f("/","divide",[new f("-","subtract",[new f("*","multiply",[C(L,N),q.clone()]),new f("*","multiply",[L.clone(),C(q,N)])]),new f("^","pow",[q.clone(),E(2)])])}if(T.op==="^"&&T.isBinary()){var R=T.args[0],V=T.args[1];if(N[R]!==void 0)return Qt(R)&&(l(R.value)||o(R.value,1))?E(0):new f("*","multiply",[T,new f("*","multiply",[new u("log",[R.clone()]),C(V.clone(),N)])]);if(N[V]!==void 0){if(Qt(V)){if(l(V.value))return E(0);if(o(V.value,1))return C(R,N)}var X=new f("^","pow",[R.clone(),new f("-","subtract",[V,E(1)])]);return new f("*","multiply",[V.clone(),new f("*","multiply",[C(R,N),X])])}return new f("*","multiply",[new f("^","pow",[R.clone(),V.clone()]),new f("+","add",[new f("*","multiply",[C(R,N),new f("/","divide",[V.clone(),R.clone()])]),new f("*","multiply",[C(V,N),new u("log",[R.clone()])])])])}throw new Error('Cannot process operator "'+T.op+'" in derivative: the operator is not supported, undefined, or the number of arguments passed to it are not supported')}});function E(M,T){return new a(s(M,T||fo(String(M),r)))}return v});var rU="rationalize",ype=["config","typed","equal","isZero","add","subtract","multiply","divide","pow","parse","simplifyConstant","simplifyCore","simplify","?bignumber","?fraction","mathWithTransform","matrix","AccessorNode","ArrayNode","ConstantNode","FunctionNode","IndexNode","ObjectNode","OperatorNode","SymbolNode","ParenthesisNode"],nU=$(rU,ype,e=>{var{config:t,typed:r,equal:n,isZero:i,add:o,subtract:l,multiply:s,divide:a,pow:u,parse:f,simplifyConstant:p,simplifyCore:h,simplify:g,fraction:x,bignumber:v,mathWithTransform:S,matrix:D,AccessorNode:C,ArrayNode:E,ConstantNode:M,FunctionNode:T,IndexNode:N,ObjectNode:O,OperatorNode:F,SymbolNode:I,ParenthesisNode:B}=e;function L(U){var H=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},ee=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,Z=R(),pe=q(U,H,!0,Z.firstRules),we=pe.variables.length,he={exactFractions:!1},oe={exactFractions:!0};if(U=pe.expression,we>=1){U=V(U);var ve,Oe,De=!0,Me=!1;U=g(U,Z.firstRules,{},he);for(var le;Oe=De?Z.distrDivRules:Z.sucDivRules,U=g(U,Oe,{},oe),De=!De,le=U.toString(),le!==ve;)Me=!0,ve=le;Me&&(U=g(U,Z.firstRulesAgain,{},he)),U=g(U,Z.finalRules,{},he)}var ne=[],fe={};return U.type==="OperatorNode"&&U.isBinary()&&U.op==="/"?(we===1&&(U.args[0]=X(U.args[0],ne),U.args[1]=X(U.args[1])),ee&&(fe.numerator=U.args[0],fe.denominator=U.args[1])):(we===1&&(U=X(U,ne)),ee&&(fe.numerator=U,fe.denominator=null)),ee?(fe.coefficients=ne,fe.variables=pe.variables,fe.expression=U,fe):U}return r(rU,{Node:L,"Node, boolean":(U,H)=>L(U,{},H),"Node, Object":L,"Node, Object, boolean":L});function q(U,H,ee,Z){var pe=[],we=g(U,Z,H,{exactFractions:!1});ee=!!ee;var he="+-*"+(ee?"/":"");ve(we);var oe={};return oe.expression=we,oe.variables=pe,oe;function ve(Oe){var De=Oe.type;if(De==="FunctionNode")throw new Error("There is an unsolved function call");if(De==="OperatorNode")if(Oe.op==="^"){if(Oe.args[1].type!=="ConstantNode"||!dt(parseFloat(Oe.args[1].value)))throw new Error("There is a non-integer exponent");ve(Oe.args[0])}else{if(!he.includes(Oe.op))throw new Error("Operator "+Oe.op+" invalid in polynomial expression");for(var Me=0;Me1;if(Z==="OperatorNode"&&U.isBinary()){var we=!1,he;if(U.op==="^"&&(U.args[0].type==="ParenthesisNode"||U.args[0].type==="OperatorNode")&&U.args[1].type==="ConstantNode"&&(he=parseFloat(U.args[1].value),we=he>=2&&dt(he)),we){if(he>2){var oe=U.args[0],ve=new F("^","pow",[U.args[0].cloneDeep(),new M(he-1)]);U=new F("*","multiply",[oe,ve])}else U=new F("*","multiply",[U.args[0],U.args[0].cloneDeep()]);pe&&(ee==="content"?H.content=U:H.args[ee]=U)}}if(Z==="ParenthesisNode")V(U.content,U,"content");else if(Z!=="ConstantNode"&&Z!=="SymbolNode")for(var Oe=0;Oe=0;oe--)if(H[oe]!==0){var ve=new M(we?H[oe]:Math.abs(H[oe])),Oe=H[oe]<0?"-":"+";if(oe>0){var De=new I(pe);if(oe>1){var Me=new M(oe);De=new F("^","pow",[De,Me])}H[oe]===-1&&we?ve=new F("-","unaryMinus",[De]):Math.abs(H[oe])===1?ve=De:ve=new F("*","multiply",[ve,De])}we?he=ve:Oe==="+"?he=new F("+","add",[he,ve]):he=new F("-","subtract",[he,ve]),we=!1}if(we)return new M(0);return he;function le(ne,fe,Fe){var me=ne.type;if(me==="FunctionNode")throw new Error("There is an unsolved function call");if(me==="OperatorNode"){if(!"+-*^".includes(ne.op))throw new Error("Operator "+ne.op+" invalid");if(fe!==null){if((ne.fn==="unaryMinus"||ne.fn==="pow")&&fe.fn!=="add"&&fe.fn!=="subtract"&&fe.fn!=="multiply")throw new Error("Invalid "+ne.op+" placing");if((ne.fn==="subtract"||ne.fn==="add"||ne.fn==="multiply")&&fe.fn!=="add"&&fe.fn!=="subtract")throw new Error("Invalid "+ne.op+" placing");if((ne.fn==="subtract"||ne.fn==="add"||ne.fn==="unaryMinus")&&Fe.noFil!==0)throw new Error("Invalid "+ne.op+" placing")}(ne.op==="^"||ne.op==="*")&&(Fe.fire=ne.op);for(var Ue=0;UeZ&&(H[Re]=0),H[Re]+=Fe.cte*(Fe.oper==="+"?1:-1),Z=Math.max(Re,Z);return}Fe.cte=Re,Fe.fire===""&&(H[0]+=Fe.cte*(Fe.oper==="+"?1:-1))}else throw new Error("Type "+me+" is not allowed")}}});var iU="zpk2tf",wpe=["typed","add","multiply","Complex","number"],oU=$(iU,wpe,e=>{var{typed:t,add:r,multiply:n,Complex:i,number:o}=e;return t(iU,{"Array,Array,number":function(u,f,p){return l(u,f,p)},"Array,Array":function(u,f){return l(u,f,1)},"Matrix,Matrix,number":function(u,f,p){return l(u.valueOf(),f.valueOf(),p)},"Matrix,Matrix":function(u,f){return l(u.valueOf(),f.valueOf(),1)}});function l(a,u,f){a.some(C=>C.type==="BigNumber")&&(a=a.map(C=>o(C))),u.some(C=>C.type==="BigNumber")&&(u=u.map(C=>o(C)));for(var p=[i(1,0)],h=[i(1,0)],g=0;g=0&&p-h{var{typed:t,add:r,multiply:n,Complex:i,divide:o,matrix:l}=e;return t(aU,{"Array, Array":function(f,p){var h=a(512);return s(f,p,h)},"Array, Array, Array":function(f,p,h){return s(f,p,h)},"Array, Array, number":function(f,p,h){if(h<0)throw new Error("w must be a positive number");var g=a(h);return s(f,p,g)},"Matrix, Matrix":function(f,p){var h=a(512),{w:g,h:x}=s(f.valueOf(),p.valueOf(),h);return{w:l(g),h:l(x)}},"Matrix, Matrix, Matrix":function(f,p,h){var{h:g}=s(f.valueOf(),p.valueOf(),h.valueOf());return{h:l(g),w:l(h)}},"Matrix, Matrix, number":function(f,p,h){if(h<0)throw new Error("w must be a positive number");var g=a(h),{h:x}=s(f.valueOf(),p.valueOf(),g);return{h:l(x),w:l(g)}}});function s(u,f,p){for(var h=[],g=[],x=0;x{var{classes:t}=e;return function(n,i){var o=t[i&&i.mathjs];return o&&typeof o.fromJSON=="function"?o.fromJSON(i):i}});var Npe="replacer",Epe=[],lU=$(Npe,Epe,()=>function(t,r){return typeof r=="number"&&(!isFinite(r)||isNaN(r))?{mathjs:"number",value:String(r)}:typeof r=="bigint"?{mathjs:"bigint",value:String(r)}:r});var fU="14.0.0";var cU=$("true",[],()=>!0),pU=$("false",[],()=>!1),mU=$("null",[],()=>null),dU=ba("Infinity",["config","?BigNumber"],e=>{var{config:t,BigNumber:r}=e;return t.number==="BigNumber"?new r(1/0):1/0}),hU=ba("NaN",["config","?BigNumber"],e=>{var{config:t,BigNumber:r}=e;return t.number==="BigNumber"?new r(NaN):NaN}),gU=ba("pi",["config","?BigNumber"],e=>{var{config:t,BigNumber:r}=e;return t.number==="BigNumber"?zv(r):EI}),vU=ba("tau",["config","?BigNumber"],e=>{var{config:t,BigNumber:r}=e;return t.number==="BigNumber"?rB(r):AI}),xU=ba("e",["config","?BigNumber"],e=>{var{config:t,BigNumber:r}=e;return t.number==="BigNumber"?eB(r):CI}),yU=ba("phi",["config","?BigNumber"],e=>{var{config:t,BigNumber:r}=e;return t.number==="BigNumber"?tB(r):MI}),wU=ba("LN2",["config","?BigNumber"],e=>{var{config:t,BigNumber:r}=e;return t.number==="BigNumber"?new r(2).ln():Math.LN2}),bU=ba("LN10",["config","?BigNumber"],e=>{var{config:t,BigNumber:r}=e;return t.number==="BigNumber"?new r(10).ln():Math.LN10}),DU=ba("LOG2E",["config","?BigNumber"],e=>{var{config:t,BigNumber:r}=e;return t.number==="BigNumber"?new r(1).div(new r(2).ln()):Math.LOG2E}),SU=ba("LOG10E",["config","?BigNumber"],e=>{var{config:t,BigNumber:r}=e;return t.number==="BigNumber"?new r(1).div(new r(10).ln()):Math.LOG10E}),NU=ba("SQRT1_2",["config","?BigNumber"],e=>{var{config:t,BigNumber:r}=e;return t.number==="BigNumber"?new r("0.5").sqrt():Math.SQRT1_2}),EU=ba("SQRT2",["config","?BigNumber"],e=>{var{config:t,BigNumber:r}=e;return t.number==="BigNumber"?new r(2).sqrt():Math.SQRT2}),AU=ba("i",["Complex"],e=>{var{Complex:t}=e;return t.I}),CU=$("PI",["pi"],e=>{var{pi:t}=e;return t}),MU=$("E",["e"],e=>{var{e:t}=e;return t}),TU=$("version",[],()=>fU);function ba(e,t,r){return $(e,t,r,{recreateOnConfigChange:!0})}var _U=ur("speedOfLight","299792458","m s^-1"),OU=ur("gravitationConstant","6.67430e-11","m^3 kg^-1 s^-2"),FU=ur("planckConstant","6.62607015e-34","J s"),IU=ur("reducedPlanckConstant","1.0545718176461565e-34","J s"),kU=ur("magneticConstant","1.25663706212e-6","N A^-2"),LU=ur("electricConstant","8.8541878128e-12","F m^-1"),BU=ur("vacuumImpedance","376.730313667","ohm"),PU=ur("coulomb","8.987551792261171e9","N m^2 C^-2"),RU=ur("elementaryCharge","1.602176634e-19","C"),qU=ur("bohrMagneton","9.2740100783e-24","J T^-1"),zU=ur("conductanceQuantum","7.748091729863649e-5","S"),UU=ur("inverseConductanceQuantum","12906.403729652257","ohm"),HU=ur("magneticFluxQuantum","2.0678338484619295e-15","Wb"),$U=ur("nuclearMagneton","5.0507837461e-27","J T^-1"),WU=ur("klitzing","25812.807459304513","ohm");var VU=ur("bohrRadius","5.29177210903e-11","m"),GU=ur("classicalElectronRadius","2.8179403262e-15","m"),YU=ur("electronMass","9.1093837015e-31","kg"),ZU=ur("fermiCoupling","1.1663787e-5","GeV^-2"),XU=wb("fineStructure",.0072973525693),KU=ur("hartreeEnergy","4.3597447222071e-18","J"),JU=ur("protonMass","1.67262192369e-27","kg"),QU=ur("deuteronMass","3.3435830926e-27","kg"),jU=ur("neutronMass","1.6749271613e-27","kg"),eH=ur("quantumOfCirculation","3.6369475516e-4","m^2 s^-1"),tH=ur("rydberg","10973731.568160","m^-1"),rH=ur("thomsonCrossSection","6.6524587321e-29","m^2"),nH=wb("weakMixingAngle",.2229),iH=wb("efimovFactor",22.7),oH=ur("atomicMass","1.66053906660e-27","kg"),aH=ur("avogadro","6.02214076e23","mol^-1"),sH=ur("boltzmann","1.380649e-23","J K^-1"),uH=ur("faraday","96485.33212331001","C mol^-1"),lH=ur("firstRadiation","3.7417718521927573e-16","W m^2"),fH=ur("loschmidt","2.686780111798444e25","m^-3"),cH=ur("gasConstant","8.31446261815324","J K^-1 mol^-1"),pH=ur("molarPlanckConstant","3.990312712893431e-10","J s mol^-1"),mH=ur("molarVolume","0.022413969545014137","m^3 mol^-1"),dH=wb("sackurTetrode",-1.16487052358),hH=ur("secondRadiation","0.014387768775039337","m K"),gH=ur("stefanBoltzmann","5.67037441918443e-8","W m^-2 K^-4"),vH=ur("wienDisplacement","2.897771955e-3","m K"),xH=ur("molarMass","0.99999999965e-3","kg mol^-1"),yH=ur("molarMassC12","11.9999999958e-3","kg mol^-1"),wH=ur("gravity","9.80665","m s^-2"),bH=ur("planckLength","1.616255e-35","m"),DH=ur("planckMass","2.176435e-8","kg"),SH=ur("planckTime","5.391245e-44","s"),NH=ur("planckCharge","1.87554603778e-18","C"),EH=ur("planckTemperature","1.416785e+32","K");function ur(e,t,r){var n=["config","Unit","BigNumber"];return $(e,n,i=>{var{config:o,Unit:l,BigNumber:s}=i,a=o.number==="BigNumber"?new s(t):parseFloat(t),u=new l(a,r);return u.fixPrefix=!0,u})}function wb(e,t){var r=["config","BigNumber"];return $(e,r,n=>{var{config:i,BigNumber:o}=n;return i.number==="BigNumber"?new o(t):t})}var Ape="apply",Cpe=["typed","isInteger"],AH=$(Ape,Cpe,e=>{var{typed:t,isInteger:r}=e,n=Cd({typed:t,isInteger:r});return t("apply",{"...any":function(o){var l=o[1];Pt(l)?o[1]=l-1:Ct(l)&&(o[1]=l.minus(1));try{return n.apply(null,o)}catch(s){throw Zr(s)}}})},{isTransformFunction:!0});var Mpe="column",Tpe=["typed","Index","matrix","range"],CH=$(Mpe,Tpe,e=>{var{typed:t,Index:r,matrix:n,range:i}=e,o=bw({typed:t,Index:r,matrix:n,range:i});return t("column",{"...any":function(s){var a=s.length-1,u=s[a];Pt(u)&&(s[a]=u-1);try{return o.apply(null,s)}catch(f){throw Zr(f)}}})},{isTransformFunction:!0});function Pd(e,t,r){var n=e.filter(function(a){return Lr(a)&&!(a.name in t)&&!r.has(a.name)})[0];if(!n)throw new Error('No undefined variable found in inline expression "'+e+'"');var i=n.name,o=new Map,l=new cd(r,o,new Set([i])),s=e.compile();return function(u){return o.set(i,u),s.evaluate(l)}}var _pe="transformCallback",Ope=["typed"],Rd=$(_pe,Ope,e=>{var{typed:t}=e;return function(n,i){return t.isTypedFunction(n)?r(n,i):MH(n,n.length,i)};function r(n,i){var o=Object.fromEntries(Object.entries(n.signatures).map(l=>{var[s,a]=l,u=s.split(",").length;return t.isTypedFunction(a)?[s,r(a,i)]:[s,MH(a,u,i)]}));return typeof n.name=="string"?t(n.name,o):t(o)}});function MH(e,t,r){return t===r?e:t===r+1?function(){for(var n=arguments.length,i=new Array(n),o=0;or+1?function(){for(var n=arguments.length,i=new Array(n),o=0;ot+1)}var Fpe="filter",Ipe=["typed"],_H=$(Fpe,Ipe,e=>{var{typed:t}=e;function r(i,o,l){var s=Dw({typed:t}),a=Rd({typed:t});if(i.length===0)return s();var u=i[0];if(i.length===1)return s(u);var f=i.length-1,p=i[f];return u&&(u=n(u,l)),p&&(Lr(p)||Wa(p)?p=n(p,l):p=Pd(p,o,l)),s(u,a(p,f))}r.rawArgs=!0;function n(i,o){return i.compile().evaluate(o)}return r},{isTransformFunction:!0});var kpe="forEach",Lpe=["typed"],OH=$(kpe,Lpe,e=>{var{typed:t}=e,r=Sw({typed:t}),n=Rd({typed:t});function i(l,s,a){if(l.length===0)return r();var u=l[0];if(l.length===1)return r(u);var f=l.length-1,p=l[f];return u&&(u=o(u,a)),p&&(Lr(p)||Wa(p)?p=o(p,a):p=Pd(p,s,a)),r(u,n(p,f))}i.rawArgs=!0;function o(l,s){return l.compile().evaluate(s)}return i},{isTransformFunction:!0});var Bpe="index",Ppe=["Index","getMatrixDataType"],FH=$(Bpe,Ppe,e=>{var{Index:t,getMatrixDataType:r}=e;return function(){for(var i=[],o=0,l=arguments.length;o0?0:2;else if(s&&s.isSet===!0)s=s.map(function(u){return u-1});else if(dr(s)||gt(s))r(s)!=="boolean"&&(s=s.map(function(u){return u-1}));else if(Pt(s))s--;else if(Ct(s))s=s.toNumber()-1;else if(typeof s!="string")throw new TypeError("Dimension must be an Array, Matrix, number, string, or Range");i[o]=s}var a=new t;return t.apply(a,i),a}},{isTransformFunction:!0});var Rpe="map",qpe=["typed"],IH=$(Rpe,qpe,e=>{var{typed:t}=e,r=Nw({typed:t}),n=Rd({typed:t});function i(o,l,s){if(o.length===0)return r();if(o.length===1)return r(o[0]);var a=o.length-1,u=o.slice(0,a),f=o[a];return u=u.map(h=>p(h,s)),f&&(Lr(f)||Wa(f)?f=p(f,s):f=Pd(f,l,s)),r(...u,n(f,a));function p(h,g){return h.compile().evaluate(g)}}return i.rawArgs=!0,i},{isTransformFunction:!0});function kH(e){return Pt(e)?e-1:Ct(e)?e.minus(1):e}function LH(e){return Pt(e)||Ct(e)}function go(e){if(e.length===2&&gn(e[0])){e=e.slice();var t=e[1];LH(t)&&(e[1]=kH(t))}return e}var zpe="max",Upe=["typed","config","numeric","larger"],BH=$(zpe,Upe,e=>{var{typed:t,config:r,numeric:n,larger:i}=e,o=Uw({typed:t,config:r,numeric:n,larger:i});return t("max",{"...any":function(s){s=go(s);try{return o.apply(null,s)}catch(a){throw Zr(a)}}})},{isTransformFunction:!0});var Hpe="mean",$pe=["typed","add","divide"],PH=$(Hpe,$pe,e=>{var{typed:t,add:r,divide:n}=e,i=hb({typed:t,add:r,divide:n});return t("mean",{"...any":function(l){l=go(l);try{return i.apply(null,l)}catch(s){throw Zr(s)}}})},{isTransformFunction:!0});var Wpe="min",Vpe=["typed","config","numeric","smaller"],RH=$(Wpe,Vpe,e=>{var{typed:t,config:r,numeric:n,smaller:i}=e,o=Hw({typed:t,config:r,numeric:n,smaller:i});return t("min",{"...any":function(s){s=go(s);try{return o.apply(null,s)}catch(a){throw Zr(a)}}})},{isTransformFunction:!0});var Gpe="range",Ype=["typed","config","?matrix","?bignumber","smaller","smallerEq","larger","largerEq","add","isPositive"],qH=$(Gpe,Ype,e=>{var{typed:t,config:r,matrix:n,bignumber:i,smaller:o,smallerEq:l,larger:s,largerEq:a,add:u,isPositive:f}=e,p=Mw({typed:t,config:r,matrix:n,bignumber:i,smaller:o,smallerEq:l,larger:s,largerEq:a,add:u,isPositive:f});return t("range",{"...any":function(g){var x=g.length-1,v=g[x];return typeof v!="boolean"&&g.push(!0),p.apply(null,g)}})},{isTransformFunction:!0});var Zpe="row",Xpe=["typed","Index","matrix","range"],zH=$(Zpe,Xpe,e=>{var{typed:t,Index:r,matrix:n,range:i}=e,o=Tw({typed:t,Index:r,matrix:n,range:i});return t("row",{"...any":function(s){var a=s.length-1,u=s[a];Pt(u)&&(s[a]=u-1);try{return o.apply(null,s)}catch(f){throw Zr(f)}}})},{isTransformFunction:!0});var Kpe="subset",Jpe=["typed","matrix","zeros","add"],UH=$(Kpe,Jpe,e=>{var{typed:t,matrix:r,zeros:n,add:i}=e,o=_w({typed:t,matrix:r,zeros:n,add:i});return t("subset",{"...any":function(s){try{return o.apply(null,s)}catch(a){throw Zr(a)}}})},{isTransformFunction:!0});var Qpe="concat",jpe=["typed","matrix","isInteger"],HH=$(Qpe,jpe,e=>{var{typed:t,matrix:r,isInteger:n}=e,i=ww({typed:t,matrix:r,isInteger:n});return t("concat",{"...any":function(l){var s=l.length-1,a=l[s];Pt(a)?l[s]=a-1:Ct(a)&&(l[s]=a.minus(1));try{return i.apply(null,l)}catch(u){throw Zr(u)}}})},{isTransformFunction:!0});var $H="diff",eme=["typed","matrix","subtract","number","bignumber"],WH=$($H,eme,e=>{var{typed:t,matrix:r,subtract:n,number:i,bignumber:o}=e,l=Ew({typed:t,matrix:r,subtract:n,number:i,bignumber:o});return t($H,{"...any":function(a){a=go(a);try{return l.apply(null,a)}catch(u){throw Zr(u)}}})},{isTransformFunction:!0});var tme="std",rme=["typed","map","sqrt","variance"],VH=$(tme,rme,e=>{var{typed:t,map:r,sqrt:n,variance:i}=e,o=xb({typed:t,map:r,sqrt:n,variance:i});return t("std",{"...any":function(s){s=go(s);try{return o.apply(null,s)}catch(a){throw Zr(a)}}})},{isTransformFunction:!0});var GH="sum",nme=["typed","config","add","numeric"],YH=$(GH,nme,e=>{var{typed:t,config:r,add:n,numeric:i}=e,o=pb({typed:t,config:r,add:n,numeric:i});return t(GH,{"...any":function(s){s=go(s);try{return o.apply(null,s)}catch(a){throw Zr(a)}}})},{isTransformFunction:!0});var ime="quantileSeq",ome=["typed","bignumber","add","subtract","divide","multiply","partitionSelect","compare","isInteger","smaller","smallerEq","larger"],ZH=$(ime,ome,e=>{var{typed:t,bignumber:r,add:n,subtract:i,divide:o,multiply:l,partitionSelect:s,compare:a,isInteger:u,smaller:f,smallerEq:p,larger:h}=e,g=vb({typed:t,bignumber:r,add:n,subtract:i,divide:o,multiply:l,partitionSelect:s,compare:a,isInteger:u,smaller:f,smallerEq:p,larger:h});return t("quantileSeq",{"Array | Matrix, number | BigNumber":g,"Array | Matrix, number | BigNumber, number":(v,S,D)=>g(v,S,x(D)),"Array | Matrix, number | BigNumber, boolean":g,"Array | Matrix, number | BigNumber, boolean, number":(v,S,D,C)=>g(v,S,D,x(C)),"Array | Matrix, Array | Matrix":g,"Array | Matrix, Array | Matrix, number":(v,S,D)=>g(v,S,x(D)),"Array | Matrix, Array | Matrix, boolean":g,"Array | Matrix, Array | Matrix, boolean, number":(v,S,D,C)=>g(v,S,D,x(C))});function x(v){return go([[],v])[1]}},{isTransformFunction:!0});var XH="cumsum",ame=["typed","add","unaryPlus"],KH=$(XH,ame,e=>{var{typed:t,add:r,unaryPlus:n}=e,i=db({typed:t,add:r,unaryPlus:n});return t(XH,{"...any":function(l){if(l.length===2&&gn(l[0])){var s=l[1];Pt(s)?l[1]=s-1:Ct(s)&&(l[1]=s.minus(1))}try{return i.apply(null,l)}catch(a){throw Zr(a)}}})},{isTransformFunction:!0});var JH="variance",sme=["typed","add","subtract","multiply","divide","apply","isNaN"],QH=$(JH,sme,e=>{var{typed:t,add:r,subtract:n,multiply:i,divide:o,apply:l,isNaN:s}=e,a=gb({typed:t,add:r,subtract:n,multiply:i,divide:o,apply:l,isNaN:s});return t(JH,{"...any":function(f){f=go(f);try{return a.apply(null,f)}catch(p){throw Zr(p)}}})},{isTransformFunction:!0});var jH="print",ume=["typed","matrix","zeros","add"],e$=$(jH,ume,e=>{var{typed:t,matrix:r,zeros:n,add:i}=e,o=Fw({typed:t,matrix:r,zeros:n,add:i});return t(jH,{"string, Object | Array":function(a,u){return o(l(a),u)},"string, Object | Array, number | Object":function(a,u,f){return o(l(a),u,f)}});function l(s){return s.replace(Ow,a=>{var u=a.slice(1).split("."),f=u.map(function(p){return!isNaN(p)&&p.length>0?parseInt(p)-1:p});return"$"+f.join(".")})}},{isTransformFunction:!0});var lme="and",fme=["typed","matrix","zeros","add","equalScalar","not","concat"],t$=$(lme,fme,e=>{var{typed:t,matrix:r,equalScalar:n,zeros:i,not:o,concat:l}=e,s=Iw({typed:t,matrix:r,equalScalar:n,zeros:i,not:o,concat:l});function a(u,f,p){var h=u[0].compile().evaluate(p);if(!gn(h)&&!s(h,!0))return!1;var g=u[1].compile().evaluate(p);return s(h,g)}return a.rawArgs=!0,a},{isTransformFunction:!0});var cme="or",pme=["typed","matrix","equalScalar","DenseMatrix","concat"],r$=$(cme,pme,e=>{var{typed:t,matrix:r,equalScalar:n,DenseMatrix:i,concat:o}=e,l=yw({typed:t,matrix:r,equalScalar:n,DenseMatrix:i,concat:o});function s(a,u,f){var p=a[0].compile().evaluate(f);if(!gn(p)&&l(p,!1))return!0;var h=a[1].compile().evaluate(f);return l(p,h)}return s.rawArgs=!0,s},{isTransformFunction:!0});var mme="bitAnd",dme=["typed","matrix","zeros","add","equalScalar","not","concat"],n$=$(mme,dme,e=>{var{typed:t,matrix:r,equalScalar:n,zeros:i,not:o,concat:l}=e,s=vw({typed:t,matrix:r,equalScalar:n,zeros:i,not:o,concat:l});function a(u,f,p){var h=u[0].compile().evaluate(p);if(!gn(h)){if(isNaN(h))return NaN;if(h===0||h===!1)return 0}var g=u[1].compile().evaluate(p);return s(h,g)}return a.rawArgs=!0,a},{isTransformFunction:!0});var hme="bitOr",gme=["typed","matrix","equalScalar","DenseMatrix","concat"],i$=$(hme,gme,e=>{var{typed:t,matrix:r,equalScalar:n,DenseMatrix:i,concat:o}=e,l=xw({typed:t,matrix:r,equalScalar:n,DenseMatrix:i,concat:o});function s(a,u,f){var p=a[0].compile().evaluate(f);if(!gn(p)){if(isNaN(p))return NaN;if(p===-1)return-1;if(p===!0)return 1}var h=a[1].compile().evaluate(f);return l(p,h)}return s.rawArgs=!0,s},{isTransformFunction:!0});var BC=LC;var l$=mn(U1(),1);var a$=mn(o$(),1);function s$(e){var t=new a$.default;return e.on=t.on.bind(t),e.off=t.off.bind(t),e.once=t.once.bind(t),e.emit=t.emit.bind(t),e}function u$(e,t,r,n){function i(S,D){var C=arguments.length;if(C!==1&&C!==2)throw new wa("import",C,1,2);D||(D={});function E(O,F,I){if(Array.isArray(F))F.forEach(q=>E(O,q));else if(typeof F=="object")for(var B in F)xt(F,B)&&E(O,F[B],B);else if(wp(F)||I!==void 0){var L=wp(F)?x(F)?F.fn+".transform":F.fn:I;if(xt(O,L)&&O[L]!==F&&!D.silent)throw new Error('Cannot import "'+L+'" twice');O[L]=F}else if(!D.silent)throw new TypeError("Factory, Object, or Array expected")}var M={};E(M,S);for(var T in M)if(xt(M,T)){var N=M[T];if(wp(N))u(N,D);else if(f(N))o(T,N,D);else if(!D.silent)throw new TypeError("Factory, Object, or Array expected")}}function o(S,D,C){var E;if(C.wrap&&typeof D=="function"&&(D=a(D)),p(D)&&(D=e(S,{[D.signature]:D})),e.isTypedFunction(r[S])&&e.isTypedFunction(D)){C.override?D=e(S,D.signatures):D=e(r[S],D),r[S]=D,delete n[S],l(S,D),r.emit("import",S,function(){return D});return}var M=r[S]!==void 0,T=(E=r.Unit)===null||E===void 0?void 0:E.isValuelessUnit(S);if(!M&&!T||C.override){r[S]=D,delete n[S],l(S,D),r.emit("import",S,function(){return D});return}if(!C.silent)throw new Error('Cannot import "'+S+'": already exists')}function l(S,D){D&&typeof D.transform=="function"?(r.expression.transform[S]=D.transform,h(S)&&(r.expression.mathWithTransform[S]=D.transform)):(delete r.expression.transform[S],h(S)&&(r.expression.mathWithTransform[S]=D))}function s(S){delete r.expression.transform[S],h(S)?r.expression.mathWithTransform[S]=r[S]:delete r.expression.mathWithTransform[S]}function a(S){var D=function(){for(var E=[],M=0,T=arguments.length;M2&&arguments[2]!==void 0?arguments[2]:S.fn;if(C.includes("."))throw new Error("Factory name should not contain a nested path. Name: "+JSON.stringify(C));var E=x(S)?r.expression.transform:r,M=C in r.expression.transform,T=xt(E,C)?E[C]:void 0,N=function(){var F={};S.dependencies.map(ZE).forEach(B=>{if(B.includes("."))throw new Error("Factory dependency should not contain a nested path. Name: "+JSON.stringify(B));B==="math"?F.math=r:B==="mathWithTransform"?F.mathWithTransform=r.expression.mathWithTransform:B==="classes"?F.classes=r:F[B]=r[B]});var I=S(F);if(I&&typeof I.transform=="function")throw new Error('Transforms cannot be attached to factory functions. Please create a separate function for it with export const path = "expression.transform"');if(T===void 0||D.override)return I;if(e.isTypedFunction(T)&&e.isTypedFunction(I))return e(T,I);if(D.silent)return T;throw new Error('Cannot import "'+C+'": already exists')};!S.meta||S.meta.lazy!==!1?(dd(E,C,N),T&&M?s(C):(x(S)||g(S))&&dd(r.expression.mathWithTransform,C,()=>E[C])):(E[C]=N(),T&&M?s(C):(x(S)||g(S))&&dd(r.expression.mathWithTransform,C,()=>E[C])),n[C]=S,r.emit("import",C,N)}function f(S){return typeof S=="function"||typeof S=="number"||typeof S=="string"||typeof S=="boolean"||S===null||ti(S)||vi(S)||Ct(S)||ga(S)||gt(S)||Array.isArray(S)}function p(S){return typeof S=="function"&&typeof S.signature=="string"}function h(S){return!xt(v,S)}function g(S){return!S.fn.includes(".")&&!xt(v,S.fn)&&(!S.meta||!S.meta.isClass)}function x(S){return S!==void 0&&S.meta!==void 0&&S.meta.isTransformFunction===!0||!1}var v={expression:!0,type:!0,docs:!0,error:!0,json:!0,chain:!0};return i}function bb(e,t){var r=Gn({},E1,t);if(typeof Object.create!="function")throw new Error("ES5 not supported by this JavaScript engine. Please load the es5-shim and es5-sham library for compatibility.");var n=s$({isNumber:Pt,isComplex:vi,isBigNumber:Ct,isBigInt:C1,isFraction:ga,isUnit:ti,isString:dn,isArray:dr,isMatrix:gt,isCollection:gn,isDenseMatrix:Tl,isSparseMatrix:va,isRange:Zf,isIndex:Ou,isBoolean:M1,isResultSet:T1,isHelp:pd,isFunction:_1,isDate:O1,isRegExp:F1,isObject:Is,isMap:_u,isPartitionedMap:mF,isObjectWrappingMap:dF,isNull:I1,isUndefined:k1,isAccessorNode:Mo,isArrayNode:xi,isAssignmentNode:L1,isBlockNode:B1,isConditionalNode:P1,isConstantNode:Qt,isFunctionAssignmentNode:Wa,isFunctionNode:Ji,isIndexNode:Wo,isNode:ir,isObjectNode:Fu,isOperatorNode:$r,isParenthesisNode:yi,isRangeNode:R1,isRelationalNode:q1,isSymbolNode:Lr,isChain:md});n.config=DF(r,n.emit),n.expression={transform:{},mathWithTransform:{config:n.config}};var i=[],o=[];function l(f){if(wp(f))return f(n);var p=f[Object.keys(f)[0]];if(wp(p))return p(n);if(!vF(f))throw console.warn("Factory object with properties `type`, `name`, and `factory` expected",f),new Error("Factory object with properties `type`, `name`, and `factory` expected");var h=i.indexOf(f),g;return h===-1?(f.math===!0?g=f.factory(n.type,r,l,n.typed,n):g=f.factory(n.type,r,l,n.typed),i.push(f),o.push(g)):g=o[h],g}var s={};function a(){for(var f=arguments.length,p=new Array(f),h=0;h{Object.values(s).forEach(f=>{f&&f.meta&&f.meta.recreateOnConfigChange&&u(f,{override:!0})})}),n.create=bb.bind(null,e),n.factory=$,n.import(Object.values(hF(e))),n.ArgumentsError=wa,n.DimensionError=$t,n.IndexError=Di,n}var Yd={};Cu(Yd,{ABS:()=>uhe,ACCRINT:()=>exe,ACCRINTM:()=>txe,ACOS:()=>lhe,ACOSH:()=>fhe,ACOT:()=>che,ACOTH:()=>phe,AGGREGATE:()=>mhe,AMORDEGRC:()=>rxe,AMORLINC:()=>nxe,AND:()=>Jxe,ARABIC:()=>dhe,ASC:()=>tde,ASIN:()=>hhe,ASINH:()=>ghe,ATAN:()=>vhe,ATAN2:()=>xhe,ATANH:()=>yhe,AVEDEV:()=>Mde,AVERAGE:()=>kp,AVERAGEA:()=>JC,AVERAGEIF:()=>Tde,AVERAGEIFS:()=>_de,BAHTTEXT:()=>rde,BASE:()=>whe,BESSELI:()=>Xge,BESSELJ:()=>Kge,BESSELK:()=>Jge,BESSELY:()=>Qge,BETA:()=>Yv,BETADIST:()=>Lve,BETAINV:()=>Bve,BIN2DEC:()=>jge,BIN2HEX:()=>eve,BIN2OCT:()=>tve,BINOM:()=>Wd,BINOMDIST:()=>Pve,BITAND:()=>rve,BITLSHIFT:()=>nve,BITOR:()=>ive,BITRSHIFT:()=>ove,BITXOR:()=>ave,CEILING:()=>Rl,CEILINGMATH:()=>Rve,CEILINGPRECISE:()=>qve,CELL:()=>Ome,CHAR:()=>A$,CHIDIST:()=>zve,CHIDISTRT:()=>Uve,CHIINV:()=>Hve,CHIINVRT:()=>$ve,CHISQ:()=>zs,CHITEST:()=>Wve,CHOOSE:()=>Vme,CLEAN:()=>nde,CODE:()=>C$,COLUMN:()=>Gme,COLUMNS:()=>Yme,COMBIN:()=>qd,COMBINA:()=>bhe,COMPLEX:()=>yo,CONCAT:()=>ide,CONCATENATE:()=>M$,CONFIDENCE:()=>QC,CONVERT:()=>sve,CORREL:()=>Ode,COS:()=>Dhe,COSH:()=>She,COT:()=>Nhe,COTH:()=>Ehe,COUNT:()=>Wv,COUNTA:()=>Vv,COUNTBLANK:()=>_$,COUNTIF:()=>Fde,COUNTIFS:()=>Ide,COUPDAYBS:()=>ixe,COUPDAYS:()=>oxe,COUPDAYSNC:()=>axe,COUPNCD:()=>sxe,COUPNUM:()=>uxe,COUPPCD:()=>lxe,COVAR:()=>Vve,COVARIANCE:()=>Vd,COVARIANCEP:()=>Gve,COVARIANCES:()=>Yve,CRITBINOM:()=>Zve,CSC:()=>Ahe,CSCH:()=>Che,CUMIPMT:()=>fxe,CUMPRINC:()=>cxe,DATE:()=>Ige,DATEDIF:()=>nc,DATEVALUE:()=>kge,DAVERAGE:()=>U0e,DAY:()=>Lge,DAYS:()=>Ip,DAYS360:()=>ic,DB:()=>pxe,DBCS:()=>ode,DCOUNT:()=>H0e,DCOUNTA:()=>$0e,DDB:()=>mxe,DEC2BIN:()=>uve,DEC2HEX:()=>lve,DEC2OCT:()=>fve,DECIMAL:()=>Mhe,DEGREES:()=>The,DELTA:()=>cve,DEVSQ:()=>kde,DGET:()=>W0e,DISC:()=>dxe,DMAX:()=>V0e,DMIN:()=>G0e,DOLLAR:()=>ade,DOLLARDE:()=>hxe,DOLLARFR:()=>gxe,DPRODUCT:()=>Y0e,DSTDEV:()=>Z0e,DSTDEVP:()=>X0e,DSUM:()=>K0e,DURATION:()=>vxe,DVAR:()=>J0e,DVARP:()=>Q0e,EDATE:()=>Bge,EFFECT:()=>xxe,EOMONTH:()=>Pge,ERF:()=>fM,ERFC:()=>cM,ERFCPRECISE:()=>Xve,ERFPRECISE:()=>Kve,ERROR:()=>b$,EVEN:()=>_he,EXACT:()=>sde,EXP:()=>Ohe,EXPON:()=>jC,EXPONDIST:()=>Jve,F:()=>Us,FACT:()=>Pl,FACTDOUBLE:()=>R$,FALSE:()=>Qxe,FDIST:()=>Qve,FDISTRT:()=>jve,FIND:()=>ude,FINV:()=>e0e,FINVRT:()=>t0e,FISHER:()=>Lde,FISHERINV:()=>Bde,FIXED:()=>T$,FLOOR:()=>Pp,FLOORMATH:()=>r0e,FLOORPRECISE:()=>n0e,FORECAST:()=>O$,FREQUENCY:()=>Pde,FTEST:()=>i0e,FV:()=>Rp,FVSCHEDULE:()=>yxe,GAMMA:()=>Zv,GAMMADIST:()=>o0e,GAMMAINV:()=>a0e,GAMMALN:()=>eM,GAMMALNPRECISE:()=>s0e,GAUSS:()=>Rde,GCD:()=>Fhe,GEOMEAN:()=>qde,GESTEP:()=>pve,GROWTH:()=>zde,HARMEAN:()=>Ude,HEX2BIN:()=>mve,HEX2DEC:()=>dve,HEX2OCT:()=>hve,HLOOKUP:()=>Zme,HOUR:()=>Rge,HYPGEOM:()=>tM,HYPGEOMDIST:()=>u0e,IF:()=>jxe,IFERROR:()=>tye,IFNA:()=>rye,IFS:()=>eye,IMABS:()=>pM,IMAGINARY:()=>tn,IMARGUMENT:()=>mM,IMCONJUGATE:()=>gve,IMCOS:()=>qb,IMCOSH:()=>U$,IMCOT:()=>vve,IMCSC:()=>Cve,IMCSCH:()=>Mve,IMDIV:()=>qp,IMEXP:()=>xve,IMLN:()=>yve,IMLOG10:()=>wve,IMLOG2:()=>bve,IMPOWER:()=>Dve,IMPRODUCT:()=>Sve,IMREAL:()=>rn,IMSEC:()=>Nve,IMSECH:()=>Eve,IMSIN:()=>zb,IMSINH:()=>H$,IMSQRT:()=>Ave,IMSUB:()=>Tve,IMSUM:()=>_ve,IMTAN:()=>Ove,INDEX:()=>Xme,INFO:()=>Fme,INT:()=>Ihe,INTERCEPT:()=>Hde,INTRATE:()=>wxe,IPMT:()=>V$,IRR:()=>bxe,ISBLANK:()=>Ime,ISERR:()=>D$,ISERROR:()=>Lb,ISEVEN:()=>kme,ISFORMULA:()=>Lme,ISLOGICAL:()=>S$,ISNA:()=>Bme,ISNONTEXT:()=>Pme,ISNUMBER:()=>Bb,ISO:()=>khe,ISODD:()=>Rme,ISOWEEKNUM:()=>z$,ISPMT:()=>Dxe,ISREF:()=>qme,ISTEXT:()=>N$,KURT:()=>$de,LARGE:()=>F$,LCM:()=>Lhe,LEFT:()=>lde,LEN:()=>fde,LINEST:()=>rM,LN:()=>Bhe,LOG:()=>Phe,LOG10:()=>Rhe,LOGEST:()=>Wde,LOGINV:()=>l0e,LOGNORM:()=>Gd,LOGNORMDIST:()=>f0e,LOGNORMINV:()=>c0e,LOOKUP:()=>Kme,LOWER:()=>cde,MATCH:()=>Jme,MAX:()=>Ab,MAXA:()=>Vde,MAXIFS:()=>Gde,MDURATION:()=>Sxe,MEDIAN:()=>I$,MID:()=>pde,MIN:()=>Cb,MINA:()=>Yde,MINIFS:()=>Zde,MINUTE:()=>qge,MIRR:()=>Nxe,MMULT:()=>qhe,MOD:()=>zhe,MODE:()=>Lp,MODEMULT:()=>p0e,MODESNGL:()=>m0e,MONTH:()=>zge,MROUND:()=>Uhe,MULTINOMIAL:()=>Hhe,MUNIT:()=>$he,N:()=>zme,NA:()=>Ume,NEGBINOM:()=>nM,NEGBINOMDIST:()=>d0e,NETWORKDAYS:()=>Pb,NETWORKDAYSINTL:()=>h0e,NOMINAL:()=>Exe,NORM:()=>Hs,NORMDIST:()=>g0e,NORMINV:()=>v0e,NORMSDIST:()=>x0e,NORMSINV:()=>y0e,NOT:()=>nye,NOW:()=>Uge,NPER:()=>Axe,NPV:()=>VC,NUMBERVALUE:()=>mde,OCT2BIN:()=>Fve,OCT2DEC:()=>Ive,OCT2HEX:()=>kve,ODD:()=>Whe,ODDFPRICE:()=>Cxe,ODDFYIELD:()=>Mxe,ODDLPRICE:()=>Txe,ODDLYIELD:()=>_xe,OR:()=>iye,PDURATION:()=>Oxe,PEARSON:()=>k$,PERCENTILE:()=>Da,PERCENTILEEXC:()=>w0e,PERCENTILEINC:()=>b0e,PERCENTRANK:()=>Xv,PERCENTRANKEXC:()=>D0e,PERCENTRANKINC:()=>S0e,PERMUT:()=>Xde,PERMUTATIONA:()=>Kde,PHI:()=>Jde,PI:()=>Vhe,PMT:()=>Jv,POISSON:()=>iM,POISSONDIST:()=>N0e,POWER:()=>q$,PPMT:()=>Fxe,PRICE:()=>Ixe,PRICEDISC:()=>kxe,PRICEMAT:()=>Lxe,PROB:()=>Qde,PRODUCT:()=>Mb,PRONETIC:()=>dde,PROPER:()=>hde,PV:()=>Bxe,QUARTILE:()=>Bp,QUARTILEEXC:()=>E0e,QUARTILEINC:()=>A0e,QUOTIENT:()=>Ghe,RADIANS:()=>Yhe,RAND:()=>Zhe,RANDBETWEEN:()=>Xhe,RANK:()=>Kv,RANKAVG:()=>C0e,RANKEQ:()=>M0e,RATE:()=>Pxe,RECEIVED:()=>Rxe,REPLACE:()=>gde,REPT:()=>Sa,RIGHT:()=>vde,ROMAN:()=>Khe,ROUND:()=>Bu,ROUNDDOWN:()=>Jhe,ROUNDUP:()=>Qhe,ROW:()=>jde,ROWS:()=>Qme,RRI:()=>qxe,RSQ:()=>ehe,SEARCH:()=>xde,SEC:()=>jhe,SECH:()=>ege,SECOND:()=>Hge,SERIESSUM:()=>tge,SHEET:()=>Hme,SHEETS:()=>$me,SIGN:()=>rge,SIN:()=>nge,SINH:()=>ige,SKEW:()=>oM,SKEWP:()=>T0e,SLN:()=>zxe,SLOPE:()=>the,SMALL:()=>L$,SORT:()=>jme,SQRT:()=>oge,SQRTPI:()=>age,STANDARDIZE:()=>rhe,STDEV:()=>Ko,STDEVA:()=>nhe,STDEVP:()=>_0e,STDEVPA:()=>ihe,STDEVS:()=>O0e,STEYX:()=>ohe,SUBSTITUTE:()=>yde,SUBTOTAL:()=>sge,SUM:()=>ql,SUMIF:()=>uge,SUMIFS:()=>lge,SUMPRODUCT:()=>fge,SUMSQ:()=>cge,SUMX2MY2:()=>pge,SUMX2PY2:()=>mge,SUMXMY2:()=>dge,SWITCH:()=>sye,SYD:()=>Uxe,T:()=>Jo,TAN:()=>hge,TANH:()=>gge,TBILLEQ:()=>Hxe,TBILLPRICE:()=>$xe,TBILLYIELD:()=>Wxe,TDIST:()=>F0e,TDISTRT:()=>I0e,TEXT:()=>wde,TEXTJOIN:()=>bde,TIME:()=>$ge,TIMEVALUE:()=>Wge,TINV:()=>k0e,TODAY:()=>Vge,TRANSPOSE:()=>ede,TREND:()=>ahe,TRIM:()=>Dde,TRIMMEAN:()=>she,TRUE:()=>oye,TRUNC:()=>vge,TTEST:()=>L0e,TYPE:()=>Wme,UNICHAR:()=>Sde,UNICODE:()=>Nde,UNIQUE:()=>KC,UPPER:()=>Ede,VALUE:()=>Ade,VAR:()=>To,VARA:()=>B$,VARP:()=>B0e,VARPA:()=>P$,VARS:()=>P0e,VDB:()=>Vxe,VLOOKUP:()=>E$,WEEKDAY:()=>Gge,WEEKNUM:()=>Yge,WEIBULL:()=>aM,WEIBULLDIST:()=>R0e,WORKDAY:()=>Rb,WORKDAYINTL:()=>q0e,XIRR:()=>Gxe,XNPV:()=>Yxe,XOR:()=>aye,YEAR:()=>Zge,YEARFRAC:()=>uM,YIELD:()=>Zxe,YIELDDISC:()=>Xxe,YIELDMAT:()=>Kxe,Z:()=>sM,ZTEST:()=>z0e,utils:()=>uye});var Dt=mn(c$(),1),Gv=mn(m$(),1),GC=new Error("#NULL!"),xo=new Error("#DIV/0!"),Ie=new Error("#VALUE!"),zd=new Error("#REF!"),Ob=new Error("#NAME?"),Ge=new Error("#NUM!"),Vt=new Error("#N/A"),YC=new Error("#ERROR!"),h$=new Error("#GETTING_DATA"),xme=Object.freeze({__proto__:null,data:h$,div0:xo,error:YC,na:Vt,name:Ob,nil:GC,num:Ge,ref:zd,value:Ie}),yme="=",wme=[">",">=","<","<=","=","<>"],g$="operator",v$="literal",bme=[g$,v$],Nb=g$,oc=v$;function Bl(e,t){if(bme.indexOf(t)===-1)throw new Error("Unsupported token type: "+t);return{value:e,type:t}}function Dme(e){return typeof e!="string"||/^\d+(\.\d+)?$/.test(e)&&(e=e.indexOf(".")===-1?parseInt(e,10):parseFloat(e)),e}function Sme(e){let t=e.length,r=[],n=0,i="",o="";for(;n":case"<":case"=":o=o+l,i.length>0&&(r.push(i),i="");break;default:o.length>0&&(r.push(o),o=""),i=i+l;break}n++}return i.length>0&&r.push(i),o.length>0&&r.push(o),r}function Nme(e){let t="",r=[];for(let n=0;n=0?r.push(Bl(i,Nb)):t+=i}return t.length>0&&r.push(Bl(Dme(t),oc)),r.length>0&&r[0].type!==Nb&&r.unshift(Bl(yme,Nb)),r}function Eme(e){let t=[],r;for(let n=0;n":r=e[0]>e[1];break;case">=":r=e[0]>=e[1];break;case"<":r=e[0]":r=e[0]!=e[1];break}return r}function Ud(e){return Nme(Sme(e))}var Hd=Eme;function Fb(e){let t=[];return vo(e,r=>{t.push(r)}),t}function vo(e,t){let r=-1,n=e.length;for(;++rArray.isArray(i))||e.length===0)&&(e=[[...e]]),e.map((i,o)=>{i.map((l,s)=>{l||(e[o][s]=0)})});let r=e.reduce((i,o,l)=>o.length>e[i].length?l:i,0),n=e[r].length;return e.map(i=>[...i,...Array(n-i.length).fill(0)])}function at(){let e;if(arguments.length===1){let t=arguments[0];e=Mme(t)?Fb.apply(null,arguments):[t]}else e=Array.from(arguments);for(;!Tme(e);)e=WC(e);return e}function WC(e){return!e||!e.reduce?[e]:e.reduce((t,r)=>{let n=Array.isArray(t),i=Array.isArray(r);return n&&i?t.concat(r):n?(t.push(r),t):i?[t].concat(r):[t,r]})}function Cme(e,t){return t=t||1,!e||typeof e.slice!="function"?e:e.slice(0,e.length-t)}function Mme(e){return e!=null&&typeof e.length=="number"&&typeof e!="string"}function Tme(e){if(!e)return!1;for(let t=0;te.map(n=>n[r])):Ie}function ja(e,t){let r=null;return vo(e,(n,i)=>{if(n[0]===t)return r=i,!1}),r??Ie}function mr(){for(let e=0;etypeof t=="number")}function _me(e){e<60&&(e+=1);let r=Math.floor(e-25569)*86400,n=new Date(r*1e3),i=e-Math.floor(e)+1e-7,o=Math.floor(86400*i),l=o%60;o-=l;let s=Math.floor(o/(60*60)),a=Math.floor(o/60)%60,u=n.getUTCDate(),f=n.getUTCMonth();return e>=60&&e<61&&(u=29,f=1),new Date(n.getUTCFullYear(),f,u,s,a,l)}function XC(e){if(typeof e=="boolean"||e instanceof Error)return e;if(typeof e=="number")return e!==0;if(typeof e=="string"){let t=e.toUpperCase();if(t==="TRUE")return!0;if(t==="FALSE")return!1}return e instanceof Date&&!isNaN(e)?!0:Ie}function xr(e){if(!isNaN(e)){if(e instanceof Date)return new Date(e);let t=parseFloat(e);return t<0||t>=2958466?Ge:_me(t)}return typeof e=="string"&&(e=/(\d{4})-(\d\d?)-(\d\d?)$/.test(e)?new Date(e+"T00:00:00.000"):new Date(e),!isNaN(e))?e:Ie}function w$(e){let t=e.length,r;for(;t--;){if(r=xr(e[t]),r===Ie)return r;e[t]=r}return e}function se(e){return e instanceof Error?e:e==null?0:(typeof e=="boolean"&&(e=+e),!isNaN(e)&&e!==""?parseFloat(e):Ie)}function Mt(e){let t;if(!e||(t=e.length)===0)return Ie;let r;for(;t--;){if(e[t]instanceof Error)return e[t];if(r=se(e[t]),r instanceof Error)return r;e[t]=r}return e}function Xn(e){return e instanceof Error?e:e==null?"":e.toString()}function Ib(){let e=arguments.length;for(;e--;)if(typeof arguments[e]=="string")return!0;return!1}function kb(){let e=Fb(arguments),t=Mt(at(e.shift()));if(t instanceof Error)return t;let r=e,n=r.length/2;for(let o=0;o{switch(e){case GC:return 1;case xo:return 2;case Ie:return 3;case zd:return 4;case Ob:return 5;case Ge:return 6;case Vt:return 7;case h$:return 8}return Vt};function Fme(){throw new Error("INFO is not implemented")}function Ime(e){return e===null}function D$(e){return[Ie,zd,xo,Ge,Ob,GC].indexOf(e)>=0||typeof e=="number"&&(isNaN(e)||!isFinite(e))}function Lb(e){return D$(e)||e===Vt}function kme(e){return!(Math.floor(Math.abs(e))&1)}function Lme(){throw new Error("ISFORMULA is not implemented")}function S$(e){return e===!0||e===!1}function Bme(e){return e===Vt}function Pme(e){return typeof e!="string"}function Bb(e){return typeof e=="number"&&!isNaN(e)&&isFinite(e)}function Rme(e){return!!(Math.floor(Math.abs(e))&1)}function qme(){throw new Error("ISREF is not implemented")}function N$(e){return typeof e=="string"}function zme(e){return Bb(e)?e:e instanceof Date?e.getTime():e===!0?1:e===!1?0:Lb(e)?e:0}function Ume(){return Vt}function Hme(){throw new Error("SHEET is not implemented")}function $me(){throw new Error("SHEETS is not implemented")}function Wme(e){if(Bb(e))return 1;if(N$(e))return 2;if(S$(e))return 4;if(Lb(e))return 16;if(Array.isArray(e))return 64}function Vme(){if(arguments.length<2)return Vt;let e=arguments[0];return e<1||e>254||arguments.length0&&!Array.isArray(e[0]);return i&&!r?(r=t,t=1):(r=r||1,t=t||1),r<0||t<0?Ie:i&&t===1&&r<=e.length?e[r-1]:t<=e.length&&r<=e[t-1].length?e[t-1][r-1]:zd}function Kme(e,t,r){t=at(t),r=r?at(r):t;let n=typeof e=="number",i=Vt;for(let o=0;oe)return i}return i}function Jme(e,t,r){if(!e&&e!==0||!t||(arguments.length===2&&(r=1),t=at(t),!(t instanceof Array))||r!==-1&&r!==0&&r!==1)return Vt;let n,i;for(let o=0;oi&&(n=o+1,i=t[o]):(n=o+1,i=t[o]))}else if(r===0){if(typeof e=="string"&&typeof t[o]=="string"){let l=e.toLowerCase().replace(/\?/g,".").replace(/\*/g,".*").replace(/~/g,"\\").replace(/\+/g,"\\+").replace(/\(/g,"\\(").replace(/\)/g,"\\)").replace(/\[/g,"\\[").replace(/\]/g,"\\]");if(new RegExp("^"+l+"$").test(t[o].toLowerCase()))return o+1}else if(t[o]===e)return o+1}else if(r===-1){if(t[o]===e)return o+1;t[o]>e&&(i?t[o]s.sort((a,u)=>(a=Xn(a[t-1]),u=Xn(u[t-1]),r===1?au?r:r*-1)),o=x$(e),l=n?Eb(o):o;return t>=1&&t<=l[0].length?n?Eb(i(l)):i(l):Ie}function ede(e){if(!e)return Vt;let t=x$(e);return Eb(t)}function KC(){let e=[];for(let t=0;te&&(o=!0)}return i}function tde(){throw new Error("ASC is not implemented")}function rde(){throw new Error("BAHTTEXT is not implemented")}function A$(e){return e=se(e),e===0?Ie:e instanceof Error?e:String.fromCharCode(e)}function nde(e){if(Qe(e))return e;e=e||"";let t=/[\0-\x1F]/g;return e.replace(t,"")}function C$(e){if(Qe(e))return e;e=e||"";let t=e.charCodeAt(0);return isNaN(t)&&(t=Ie),t}function M$(){let e=at(arguments),t=mr.apply(void 0,e);if(t)return t;let r=0;for(;(r=e.indexOf(!0))>-1;)e[r]="TRUE";let n=0;for(;(n=e.indexOf(!1))>-1;)e[n]="FALSE";return e.join("")}var ide=M$;function ode(){throw new Error("DBCS is not implemented")}function ade(e,t=2){if(e=se(e),isNaN(e))return Ie;e=Bu(e,t);let r={style:"currency",currency:"USD",minimumFractionDigits:t>=0?t:0,maximumFractionDigits:t>=0?t:0},n=e.toLocaleString("en-US",r);return e<0?"$("+n.slice(2)+")":n}function sde(e,t){if(arguments.length!==2)return Vt;let r=mr(e,t);return r||(e=Xn(e),t=Xn(t),e===t)}function ude(e,t,r){if(arguments.length<2)return Vt;e=Xn(e),t=Xn(t),r=r===void 0?0:r;let n=t.indexOf(e,r-1);return n===-1?Ie:n+1}function T$(e,t=2,r=!1){if(e=se(e),isNaN(e)||(t=se(t),isNaN(t)))return Ie;if(t<0){let n=Math.pow(10,-t);e=Math.round(e/n)*n}else e=e.toFixed(t);if(r)e=e.toString().replace(/,/g,"");else{let n=e.toString().split(".");n[0]=n[0].replace(/\B(?=(\d{3})+$)/g,","),e=n.join(".")}return e}function lde(e,t){let r=mr(e,t);return r||(e=Xn(e),t=t===void 0?1:t,t=se(t),t instanceof Error||typeof e!="string"?Ie:e.substring(0,t))}function fde(e){return arguments.length===0?YC:e instanceof Error?e:Array.isArray(e)?Ie:Xn(e).length}function cde(e){return arguments.length!==1?Ie:(e=Xn(e),Qe(e)?e:e.toLowerCase())}function pde(e,t,r){if(t==null)return Ie;if(t=se(t),r=se(r),Qe(t,r)||typeof e!="string")return r;let n=t-1,i=n+r;return e.substring(n,i)}function mde(e,t,r){return e=$d(e)?e:"",typeof e=="number"?e:typeof e!="string"?Vt:(t=typeof t>"u"?".":t,r=typeof r>"u"?",":r,Number(e.replace(t,".").replace(r,"")))}function dde(){throw new Error("PRONETIC is not implemented")}function hde(e){return Qe(e)?e:isNaN(e)&&typeof e=="number"?Ie:(e=Xn(e),e.replace(/\w\S*/g,t=>t.charAt(0).toUpperCase()+t.substr(1).toLowerCase()))}function gde(e,t,r,n){return t=se(t),r=se(r),Qe(t,r)||typeof e!="string"||typeof n!="string"?Ie:e.substr(0,t-1)+n+e.substr(t-1+r)}function Sa(e,t){let r=mr(e,t);return r||(e=Xn(e),t=se(t),t instanceof Error?t:new Array(t+1).join(e))}function vde(e,t){let r=mr(e,t);return r||(e=Xn(e),t=t===void 0?1:t,t=se(t),t instanceof Error?t:e.substring(e.length-t))}function xde(e,t,r){let n;return typeof e!="string"||typeof t!="string"?Ie:(r=r===void 0?0:r,n=t.toLowerCase().indexOf(e.toLowerCase(),r-1)+1,n===0?Ie:n)}function yde(e,t,r,n){if(arguments.length<3)return Vt;if(!e||!t)return e;if(n===void 0)return e.split(t).join(r);{if(n=Math.floor(Number(n)),Number.isNaN(n)||n<=0)return Ie;let i=0,o=0;for(;i>-1&&e.indexOf(t,i)>-1;)if(i=e.indexOf(t,i+1),o++,i>-1&&o===n)return e.substring(0,i)+r+e.substring(i+t.length);return e}}function Jo(e){return e instanceof Error||typeof e=="string"?e:""}function wde(e,t){if(e===void 0||e instanceof Error||t instanceof Error)return Vt;if(e instanceof Date)return e.toISOString().slice(0,10);if(t==null)return"";if(typeof t=="number")return String(t);if(typeof t!="string")return Ie;let r=t.startsWith("$")?"$":"",n=t.endsWith("%");t=t.replace(/%/g,"").replace(/\$/g,"");let i=t.includes(".")?t.split(".")[1].match(/0/g).length:0,o=!t.includes(",");return n&&(e=e*100),e=T$(e,i,o),e.startsWith("-")?(e=e.replace("-",""),e="-"+r+e):e=r+e,n&&(e=e+"%"),e}function bde(e,t,...r){if(typeof t!="boolean"&&(t=XC(t)),arguments.length<3)return Vt;e=e??"";let n=at(r),i=t?n.filter(o=>o):n;if(Array.isArray(e)){e=at(e);let o=i.map(s=>[s]),l=0;for(let s=0;sn+i,0)/e.length;return isNaN(r)?0:r}var Yv={};Yv.DIST=function(e,t,r,n,i,o){return arguments.length<4||(i=i===void 0?0:i,o=o===void 0?1:o,e=se(e),t=se(t),r=se(r),i=se(i),o=se(o),Qe(e,t,r,i,o))?Ie:(e=(e-i)/(o-i),n?Dt.default.beta.cdf(e,t,r):Dt.default.beta.pdf(e,t,r))};Yv.INV=(e,t,r,n,i)=>(n=n===void 0?0:n,i=i===void 0?1:i,e=se(e),t=se(t),r=se(r),n=se(n),i=se(i),Qe(e,t,r,n,i)?Ie:Dt.default.beta.inv(e,t,r)*(i-n)+n);var Wd={};Wd.DIST=(e,t,r,n)=>(e=se(e),t=se(t),r=se(r),n=se(n),Qe(e,t,r,n)?Ie:n?Dt.default.binomial.cdf(e,t,r):Dt.default.binomial.pdf(e,t,r));Wd.DIST.RANGE=(e,t,r,n)=>{if(n=n===void 0?r:n,e=se(e),t=se(t),r=se(r),n=se(n),Qe(e,t,r,n))return Ie;let i=0;for(let o=r;o<=n;o++)i+=qd(e,o)*Math.pow(t,o)*Math.pow(1-t,e-o);return i};Wd.INV=(e,t,r)=>{if(e=se(e),t=se(t),r=se(r),Qe(e,t,r))return Ie;let n=0;for(;n<=e;){if(Dt.default.binomial.cdf(n,e,t)>=r)return n;n++}};var zs={};zs.DIST=(e,t,r)=>(e=se(e),t=se(t),Qe(e,t)?Ie:r?Dt.default.chisquare.cdf(e,t):Dt.default.chisquare.pdf(e,t));zs.DIST.RT=(e,t)=>!e|!t?Vt:e<1||t>Math.pow(10,10)?Ge:typeof e!="number"||typeof t!="number"?Ie:1-Dt.default.chisquare.cdf(e,t);zs.INV=(e,t)=>(e=se(e),t=se(t),Qe(e,t)?Ie:Dt.default.chisquare.inv(e,t));zs.INV.RT=(e,t)=>!e|!t?Vt:e<0||e>1||t<1||t>Math.pow(10,10)?Ge:typeof e!="number"||typeof t!="number"?Ie:Dt.default.chisquare.inv(1-e,t);zs.TEST=function(e,t){if(arguments.length!==2)return Vt;if(!(e instanceof Array)||!(t instanceof Array)||e.length!==t.length||e[0]&&t[0]&&e[0].length!==t[0].length)return Ie;let r=e.length,n,i,o;for(i=0;i=2;)g=g*p/x,x=x-2;let v=g,S=h;for(;v>1e-10*g;)S=S+2,v=v*p/S,g=g+v;return 1-g}return Math.round(f(a,s)*1e6)/1e6};var QC={};QC.NORM=(e,t,r)=>(e=se(e),t=se(t),r=se(r),Qe(e,t,r)?Ie:Dt.default.normalci(1,e,t,r)[1]-1);QC.T=(e,t,r)=>(e=se(e),t=se(t),r=se(r),Qe(e,t,r)?Ie:Dt.default.tci(1,e,t,r)[1]-1);function Ode(e,t){return e=Mt(at(e)),t=Mt(at(t)),Qe(e,t)?Ie:Dt.default.corrcoeff(e,t)}function Wv(){let e=at(arguments);return zl(e).length}function Vv(){let e=at(arguments);return e.length-_$(e)}function _$(){let e=at(arguments),t=0,r;for(let n=0;n{if(e=Mt(at(e)),t=Mt(at(t)),Qe(e,t))return Ie;let r=Dt.default.mean(e),n=Dt.default.mean(t),i=0,o=e.length;for(let l=0;l(e=Mt(at(e)),t=Mt(at(t)),Qe(e,t)?Ie:Dt.default.covariance(e,t));function kde(){let e=Mt(at(arguments));if(e instanceof Error)return e;let t=Dt.default.mean(e),r=0;for(let n=0;n(e=se(e),t=se(t),Qe(e,t)?Ie:r?Dt.default.exponential.cdf(e,t):Dt.default.exponential.pdf(e,t));var Us={};Us.DIST=(e,t,r,n)=>(e=se(e),t=se(t),r=se(r),Qe(e,t,r)?Ie:n?Dt.default.centralF.cdf(e,t,r):Dt.default.centralF.pdf(e,t,r));Us.DIST.RT=function(e,t,r){return arguments.length!==3?Vt:e<0||t<1||r<1?Ge:typeof e!="number"||typeof t!="number"||typeof r!="number"?Ie:1-Dt.default.centralF.cdf(e,t,r)};Us.INV=(e,t,r)=>(e=se(e),t=se(t),r=se(r),Qe(e,t,r)?Ie:e<=0||e>1?Ge:Dt.default.centralF.inv(e,t,r));Us.INV.RT=function(e,t,r){return arguments.length!==3?Vt:e<0||e>1||t<1||t>Math.pow(10,10)||r<1||r>Math.pow(10,10)?Ge:typeof e!="number"||typeof t!="number"||typeof r!="number"?Ie:Dt.default.centralF.inv(1-e,t,r)};Us.TEST=(e,t)=>{if(!e||!t||!(e instanceof Array)||!(t instanceof Array))return Vt;if(e.length<2||t.length<2)return xo;let r=(s,a)=>{let u=0;for(let f=0;ft[o-1]&&e[l]<=t[o]&&(i[o]+=1):o===n&&e[l]>t[n-1]&&(i[n]+=1)}return i}function Zv(e){return e=se(e),e instanceof Error?e:e===0||parseInt(e,10)===e&&e<0?Ge:Dt.default.gammafn(e)}Zv.DIST=function(e,t,r,n){return arguments.length!==4?Vt:e<0||t<=0||r<=0||typeof e!="number"||typeof t!="number"||typeof r!="number"?Ie:n?Dt.default.gamma.cdf(e,t,r,!0):Dt.default.gamma.pdf(e,t,r,!1)};Zv.INV=function(e,t,r){return arguments.length!==3?Vt:e<0||e>1||t<=0||r<=0?Ge:typeof e!="number"||typeof t!="number"||typeof r!="number"?Ie:Dt.default.gamma.inv(e,t,r)};function eM(e){return e=se(e),e instanceof Error?e:Dt.default.gammaln(e)}eM.PRECISE=function(e){return arguments.length!==1?Vt:e<=0?Ge:typeof e!="number"?Ie:Dt.default.gammaln(e)};function Rde(e){return e=se(e),e instanceof Error?e:Dt.default.normal.cdf(e,0,1)-.5}function qde(){let e=Mt(at(arguments));return e instanceof Error?e:Dt.default.geomean(e)}function zde(e,t,r,n){if(e=Mt(at(e)),e instanceof Error)return e;let i;if(t===void 0)for(t=[],i=1;i<=e.length;i++)t.push(i);if(r===void 0&&(r=t),t=Mt(at(t)),r=Mt(at(r)),Qe(t,r))return Ie;n===void 0&&(n=!0);let o=e.length,l=0,s=0,a=0,u=0;for(i=0;i{if(e=se(e),t=se(t),r=se(r),n=se(n),Qe(e,t,r,n))return Ie;function o(s,a,u,f){return qd(u,s)*qd(f-u,a-s)/qd(f,a)}function l(s,a,u,f){let p=0;for(let h=0;h<=s;h++)p+=o(h,a,u,f);return p}return i?l(e,t,r,n):o(e,t,r,n)};function Hde(e,t){return e=Mt(e),t=Mt(t),Qe(e,t)?Ie:e.length!==t.length?Vt:O$(0,e,t)}function $de(){let e=Mt(at(arguments));if(e instanceof Error)return e;let t=Dt.default.mean(e),r=e.length,n=0;for(let i=0;ii-n)[t-1]))}function rM(e,t){if(e=Mt(at(e)),t=Mt(at(t)),Qe(e,t))return Ie;let r=Dt.default.mean(e),n=Dt.default.mean(t),i=t.length,o=0,l=0;for(let u=0;u(e=se(e),t=se(t),r=se(r),Qe(e,t,r)?Ie:n?Dt.default.lognormal.cdf(e,t,r):Dt.default.lognormal.pdf(e,t,r));Gd.INV=(e,t,r)=>(e=se(e),t=se(t),r=se(r),Qe(e,t,r)?Ie:Dt.default.lognormal.inv(e,t,r));function Ab(){let e=at(arguments),t=mr.apply(void 0,e);if(t)return t;let r=zl(e);return r.length===0?0:Math.max.apply(Math,r)}function Vde(){let e=at(arguments),t=mr.apply(void 0,e);if(t)return t;let r=ZC(e);return r=r.map(n=>n??0),r.length===0?0:Math.max.apply(Math,r)}function Gde(){let e=kb(...arguments);return e.length===0?0:Math.max.apply(Math,e)}function I$(){let e=at(arguments),t=mr.apply(void 0,e);if(t)return t;let r=ZC(e),n=Dt.default.median(r);return isNaN(n)&&(n=Ge),n}function Cb(){let e=at(arguments),t=mr.apply(void 0,e);if(t)return t;let r=zl(e);return r.length===0?0:Math.min.apply(Math,r)}function Yde(){let e=at(arguments),t=mr.apply(void 0,e);if(t)return t;let r=ZC(e);return r=r.map(n=>n??0),r.length===0?0:Math.min.apply(Math,r)}function Zde(){let e=kb(...arguments);return e.length===0?0:Math.min.apply(Math,e)}var Lp={};Lp.MULT=function(){let e=Mt(at(arguments));if(e instanceof Error)return e;let t=e.length,r={},n=[],i=0,o;for(let l=0;li&&(i=r[o],n=[]),r[o]===i&&(n[n.length]=o);return n};Lp.SNGL=function(){let e=Mt(at(arguments));return e instanceof Error?e:Lp.MULT(e).sort((t,r)=>t-r)[0]};var nM={};nM.DIST=(e,t,r,n)=>(e=se(e),t=se(t),r=se(r),Qe(e,t,r)?Ie:n?Dt.default.negbin.cdf(e,t,r):Dt.default.negbin.pdf(e,t,r));var Hs={};Hs.DIST=(e,t,r,n)=>(e=se(e),t=se(t),r=se(r),Qe(e,t,r)?Ie:r<=0?Ge:n?Dt.default.normal.cdf(e,t,r):Dt.default.normal.pdf(e,t,r));Hs.INV=(e,t,r)=>(e=se(e),t=se(t),r=se(r),Qe(e,t,r)?Ie:Dt.default.normal.inv(e,t,r));Hs.S={};Hs.S.DIST=(e,t)=>(e=se(e),e instanceof Error?Ie:t?Dt.default.normal.cdf(e,0,1):Dt.default.normal.pdf(e,0,1));Hs.S.INV=e=>(e=se(e),e instanceof Error?Ie:Dt.default.normal.inv(e,0,1));function k$(e,t){if(t=Mt(at(t)),e=Mt(at(e)),Qe(t,e))return Ie;let r=Dt.default.mean(e),n=Dt.default.mean(t),i=e.length,o=0,l=0,s=0;for(let a=0;a{if(e=Mt(at(e)),t=se(t),Qe(e,t))return Ie;e=e.sort((o,l)=>o-l);let r=e.length;if(t<1/(r+1)||t>1-1/(r+1))return Ge;let n=t*(r+1)-1,i=Math.floor(n);return y$(n===i?e[n]:e[i]+(n-i)*(e[i+1]-e[i]))};Da.INC=(e,t)=>{if(e=Mt(at(e)),t=se(t),Qe(e,t))return Ie;e=e.sort((o,l)=>o-l);let r=e.length,n=t*(r-1),i=Math.floor(n);return y$(n===i?e[n]:e[i]+(n-i)*(e[i+1]-e[i]))};var Xv={};Xv.EXC=(e,t,r)=>{if(r=r===void 0?3:r,e=Mt(at(e)),t=se(t),r=se(r),Qe(e,t,r))return Ie;e=e.sort((f,p)=>f-p);let n=KC.apply(null,e),i=e.length,o=n.length,l=Math.pow(10,r),s=0,a=!1,u=0;for(;!a&&u=n[u]&&(t{if(r=r===void 0?3:r,e=Mt(at(e)),t=se(t),r=se(r),Qe(e,t,r))return Ie;e=e.sort((f,p)=>f-p);let n=KC.apply(null,e),i=e.length,o=n.length,l=Math.pow(10,r),s=0,a=!1,u=0;for(;!a&&u=n[u]&&(t(e=se(e),t=se(t),Qe(e,t)?Ie:r?Dt.default.poisson.cdf(e,t):Dt.default.poisson.pdf(e,t));function Qde(e,t,r,n){if(r===void 0)return 0;if(n=n===void 0?r:n,e=Mt(at(e)),t=Mt(at(t)),r=se(r),n=se(n),Qe(e,t,r,n))return Ie;if(r===n)return e.indexOf(r)>=0?t[e.indexOf(r)]:0;let i=e.sort((s,a)=>s-a),o=i.length,l=0;for(let s=0;s=r&&i[s]<=n&&(l+=t[e.indexOf(i[s])]);return l}var Bp={};Bp.EXC=(e,t)=>{if(e=Mt(zl(at(e))),t=se(t),Qe(e,t))return Ie;switch(t){case 1:return Da.EXC(e,.25);case 2:return Da.EXC(e,.5);case 3:return Da.EXC(e,.75);default:return Ge}};Bp.INC=(e,t)=>{if(e=Mt(zl(at(e))),t=se(t),Qe(e,t))return Ie;switch(t){case 1:return Da.INC(e,.25);case 2:return Da.INC(e,.5);case 3:return Da.INC(e,.75);default:return Ge}};var Kv={};Kv.AVG=(e,t,r)=>{if(e=se(e),t=Mt(at(t)),Qe(e,t))return Ie;t=at(t),r=r||!1;let n=r?(l,s)=>l-s:(l,s)=>s-l;t=t.sort(n);let i=t.length,o=0;for(let l=0;l1?(2*t.indexOf(e)+o+1)/2:t.indexOf(e)+1};Kv.EQ=(e,t,r)=>{if(e=se(e),t=Mt(at(t)),Qe(e,t))return Ie;r=r||!1;let n=r?(i,o)=>i-o:(i,o)=>o-i;return t=t.sort(n),t.indexOf(e)+1};function jde(e,t){if(arguments.length!==2)return Vt;if(t<0)return Ge;if(!(e instanceof Array)||typeof t!="number")return Ie;if(e.length!==0)return Dt.default.row(e,t)}function ehe(e,t){return e=Mt(at(e)),t=Mt(at(t)),Qe(e,t)?Ie:Math.pow(k$(e,t),2)}function oM(){let e=Mt(at(arguments));if(e instanceof Error)return e;let t=Dt.default.mean(e),r=e.length,n=0;for(let i=0;ir-n)[t-1]}function rhe(e,t,r){return e=se(e),t=se(t),r=se(r),Qe(e,t,r)?Ie:(e-t)/r}var Ko={};Ko.P=function(){let e=To.P.apply(this,arguments),t=Math.sqrt(e);return isNaN(t)&&(t=Ge),t};Ko.S=function(){let e=To.S.apply(this,arguments);return Math.sqrt(e)};function nhe(){let e=B$.apply(this,arguments);return Math.sqrt(e)}function ihe(){let e=P$.apply(this,arguments),t=Math.sqrt(e);return isNaN(t)&&(t=Ge),t}function ohe(e,t){if(e=Mt(at(e)),t=Mt(at(t)),Qe(e,t))return Ie;let r=Dt.default.mean(t),n=Dt.default.mean(e),i=t.length,o=0,l=0,s=0;for(let a=0;ar!==1&&r!==2?Ge:r===1?Jo.DIST.RT(e,t):Jo.DIST["2T"](e,t);Jo.DIST["2T"]=function(e,t){return arguments.length!==2?Vt:e<0||t<1?Ge:typeof e!="number"||typeof t!="number"?Ie:(1-Dt.default.studentt.cdf(e,t))*2};Jo.DIST.RT=function(e,t){return arguments.length!==2?Vt:e<0||t<1?Ge:typeof e!="number"||typeof t!="number"?Ie:1-Dt.default.studentt.cdf(e,t)};Jo.INV=(e,t)=>(e=se(e),t=se(t),Qe(e,t)?Ie:Dt.default.studentt.inv(e,t));Jo.INV["2T"]=(e,t)=>(e=se(e),t=se(t),e<=0||e>1||t<1?Ge:Qe(e,t)?Ie:Math.abs(Dt.default.studentt.inv(e/2,t)));Jo.TEST=(e,t)=>{if(e=Mt(at(e)),t=Mt(at(t)),Qe(e,t))return Ie;let r=Dt.default.mean(e),n=Dt.default.mean(t),i=0,o=0,l;for(l=0;l{l.push(i*s+o)}),l}function she(e,t){if(e=Mt(at(e)),t=se(t),Qe(e,t))return Ie;let r=Pp(e.length*t,2)/2;return Dt.default.mean(Cme(xn(e.sort((n,i)=>n-i),r),r))}var To={};To.P=function(){let e=zl(at(arguments)),t=e.length,r=0,n=kp(e),i;for(let o=0;o(e=se(e),t=se(t),r=se(r),Qe(e,t,r)?Ie:n?1-Math.exp(-Math.pow(e/r,t)):Math.pow(e,t-1)*Math.exp(-Math.pow(e/r,t))*t/Math.pow(r,t));var sM={};sM.TEST=(e,t,r)=>{if(e=Mt(at(e)),t=se(t),Qe(e,t))return Ie;r=r||Ko.S(e);let n=e.length;return 1-Hs.S.DIST((kp(e)-t)/(r/Math.sqrt(n)),!0)};function uhe(e){return e=se(e),e instanceof Error?e:Math.abs(e)}function lhe(e){if(e=se(e),e instanceof Error)return e;let t=Math.acos(e);return isNaN(t)&&(t=Ge),t}function fhe(e){if(e=se(e),e instanceof Error)return e;let t=Math.log(e+Math.sqrt(e*e-1));return isNaN(t)&&(t=Ge),t}function che(e){return e=se(e),e instanceof Error?e:Math.atan(1/e)}function phe(e){if(e=se(e),e instanceof Error)return e;let t=.5*Math.log((e+1)/(e-1));return isNaN(t)&&(t=Ge),t}function mhe(e,t,r,n){if(e=se(e),t=se(e),Qe(e,t))return Ie;switch(e){case 1:return kp(r);case 2:return Wv(r);case 3:return Vv(r);case 4:return Ab(r);case 5:return Cb(r);case 6:return Mb(r);case 7:return Ko.S(r);case 8:return Ko.P(r);case 9:return ql(r);case 10:return To.S(r);case 11:return To.P(r);case 12:return I$(r);case 13:return Lp.SNGL(r);case 14:return F$(r,n);case 15:return L$(r,n);case 16:return Da.INC(r,n);case 17:return Bp.INC(r,n);case 18:return Da.EXC(r,n);case 19:return Bp.EXC(r,n)}}function dhe(e){if(e==null)return 0;if(e instanceof Error)return e;if(!/^M*(?:D?C{0,3}|C[MD])(?:L?X{0,3}|X[CL])(?:V?I{0,3}|I[XV])$/.test(e))return Ie;let t=0;return e.replace(/[MDLV]|C[MD]?|X[CL]?|I[XV]?/g,r=>{t+={M:1e3,CM:900,D:500,CD:400,C:100,XC:90,L:50,XL:40,X:10,IX:9,V:5,IV:4,I:1}[r]}),t}function hhe(e){if(e=se(e),e instanceof Error)return e;let t=Math.asin(e);return isNaN(t)&&(t=Ge),t}function ghe(e){return e=se(e),e instanceof Error?e:Math.log(e+Math.sqrt(e*e+1))}function vhe(e){return e=se(e),e instanceof Error?e:Math.atan(e)}function xhe(e,t){e=se(e),t=se(t);let r=mr(e,t);return r||Math.atan2(e,t)}function yhe(e){if(e=se(e),e instanceof Error)return e;let t=Math.log((1+e)/(1-e))/2;return isNaN(t)&&(t=Ge),t}function whe(e,t,r){e=se(e),t=se(t),r=se(r);let n=mr(e,t,r);if(n)return n;if(t===0)return Ge;let i=e.toString(t);return new Array(Math.max(r+1-i.length,0)).join("0")+i}function Rl(e,t,r){e=se(e),t=se(t),r=se(r);let n=mr(e,t,r);if(n)return n;if(t===0)return 0;t=Math.abs(t);let i=-Math.floor(Math.log(t)/Math.log(10));return e>=0?Bu(Math.ceil(e/t)*t,i):r===0?-Bu(Math.floor(Math.abs(e)/t)*t,i):-Bu(Math.ceil(Math.abs(e)/t)*t,i)}Rl.MATH=Rl;Rl.PRECISE=Rl;function qd(e,t){e=se(e),t=se(t);let r=mr(e,t);return r||(e1?YC:(e=se(e),e instanceof Error||(e=Math.exp(e)),e)}var Db=[];function Pl(e){if(e=se(e),e instanceof Error)return e;let t=Math.floor(e);return t===0||t===1?1:(Db[t]>0||(Db[t]=Pl(t-1)*t),Db[t])}function R$(e){if(e=se(e),e instanceof Error)return e;let t=Math.floor(e);return t<=0?1:t*R$(t-2)}function Pp(e,t){e=se(e),t=se(t);let r=mr(e,t);if(r)return r;if(t===0)return 0;if(!(e>=0&&t>0)&&!(e<=0&&t<0))return Ge;t=Math.abs(t);let n=-Math.floor(Math.log(t)/Math.log(10));return e>=0?Bu(Math.floor(e/t)*t,n):-Bu(Math.ceil(Math.abs(e)/t),n)}Pp.MATH=(e,t,r)=>{if(t instanceof Error)return t;t=t===void 0?0:t,e=se(e),t=se(t),r=se(r);let n=mr(e,t,r);if(n)return n;if(t===0)return 0;t=t?Math.abs(t):1;let i=-Math.floor(Math.log(t)/Math.log(10));return e>=0?Bu(Math.floor(e/t)*t,i):r===0||r===void 0?-Bu(Math.ceil(Math.abs(e)/t)*t,i):-Bu(Math.floor(Math.abs(e)/t)*t,i)};Pp.PRECISE=Pp.MATH;function Fhe(){let e=Mt(at(arguments));if(e instanceof Error)return e;let t=e.length,r=e[0],n=r<0?-r:r;for(let i=1;il?n%=l:l%=n;n+=l}return n}function Ihe(e){return e=se(e),e instanceof Error?e:Math.floor(e)}var khe={CEILING:Rl};function Lhe(){let e=Mt(at(arguments));if(e instanceof Error)return e;for(var t,r,n,i,o=1;(n=e.pop())!==void 0;){if(n===0)return 0;for(;n>1;){if(n%2){for(t=3,r=Math.floor(Math.sqrt(n));t<=r&&n%t;t+=2);i=t<=r?t:n}else i=2;for(n/=i,o*=i,t=e.length;t;e[--t]%i===0&&(e[t]/=i)===1&&e.splice(t,1));}}return o}function Bhe(e){return e=se(e),e instanceof Error?e:e===0?Ge:Math.log(e)}function Phe(e,t){e=se(e),t=t?se(t):10;let r=mr(e,t);return r||(e===0||t===0?Ge:Math.log(e)/Math.log(t))}function Rhe(e){return e=se(e),e instanceof Error?e:e===0?Ge:Math.log(e)/Math.log(10)}function qhe(e,t){return!Array.isArray(e)||!Array.isArray(t)||e.some(n=>!n.length)||t.some(n=>!n.length)||WC(e).some(n=>typeof n!="number")||WC(t).some(n=>typeof n!="number")||e[0].length!==t.length?Ie:Array(e.length).fill(0).map(()=>Array(t[0].length).fill(0)).map((n,i)=>n.map((o,l)=>e[i].reduce((s,a,u)=>s+a*t[u][l],0)))}function zhe(e,t){e=se(e),t=se(t);let r=mr(e,t);if(r)return r;if(t===0)return xo;let n=Math.abs(e%t);return n=e<0?t-n:n,t>0?n:-n}function Uhe(e,t){e=se(e),t=se(t);let r=mr(e,t);return r||(e*t===0?0:e*t<0?Ge:Math.round(e/t)*t)}function Hhe(){let e=Mt(at(arguments));if(e instanceof Error)return e;let t=0,r=1;for(let n=0;n1?Vt:(e=parseInt(e),!e||e<=0?Ie:Array(e).fill(0).map(()=>Array(e).fill(0)).map((t,r)=>(t[r]=1,t)))}function Whe(e){if(e=se(e),e instanceof Error)return e;let t=Math.ceil(Math.abs(e));return t=t&1?t:t+1,e>=0?t:-t}function Vhe(){return Math.PI}function q$(e,t){e=se(e),t=se(t);let r=mr(e,t);if(r)return r;if(e===0&&t===0)return Ge;let n=Math.pow(e,t);return isNaN(n)?Ge:n}function Mb(){let t=at(arguments).filter(i=>i!=null);if(t.length===0)return 0;let r=Mt(t);if(r instanceof Error)return r;let n=1;for(let i=0;i0?1:-1)*Math.floor(Math.abs(e)*Math.pow(10,t))/Math.pow(10,t)}function Qhe(e,t){e=se(e),t=se(t);let r=mr(e,t);return r||(e>0?1:-1)*Math.ceil(Math.abs(e)*Math.pow(10,t))/Math.pow(10,t)}function jhe(e){return e=se(e),e instanceof Error?e:1/Math.cos(e)}function ege(e){return e=se(e),e instanceof Error?e:2/(Math.exp(e)+Math.exp(-e))}function tge(e,t,r,n){if(e=se(e),t=se(t),r=se(r),n=Mt(n),Qe(e,t,r,n))return Ie;let i=n[0]*Math.pow(e,t);for(let o=1;o{if(e instanceof Error)return!1;if(t instanceof Error)e=t;else if(typeof t=="number")e+=t;else if(typeof t=="string"){let r=parseFloat(t);!isNaN(r)&&(e+=r)}else if(Array.isArray(t)){let r=ql.apply(null,t);r instanceof Error?e=r:e+=r}}),e}function uge(e,t,r){if(e=at(e),r=r?at(r):e,e instanceof Error)return e;if(t==null||t instanceof Error)return 0;let n=0,i=t==="*",o=i?null:Ud(t+"");for(let l=0;l0?1:-1)*Math.floor(Math.abs(e)*Math.pow(10,t))/Math.pow(10,t)}function xge(e,t){if(arguments.length!==2)return Vt;e=se(e),t=se(t);let r=mr(e,t);return r||e+t}function yge(e,t){if(arguments.length!==2)return Vt;e=se(e),t=se(t);let r=mr(e,t);return r||(t===0?xo:e/t)}function wge(e,t){return arguments.length!==2?Vt:e instanceof Error?e:t instanceof Error?t:(e===null&&(e=void 0),t===null&&(t=void 0),e===t)}function bge(e,t){if(arguments.length!==2)return Vt;if(e instanceof Error)return e;if(t instanceof Error)return t;Ib(e,t)?(e=Xn(e),t=Xn(t)):(e=se(e),t=se(t));let r=mr(e,t);return r||e>t}function Dge(e,t){if(arguments.length!==2)return Vt;Ib(e,t)?(e=Xn(e),t=Xn(t)):(e=se(e),t=se(t));let r=mr(e,t);return r||e>=t}function Sge(e,t){if(arguments.length!==2)return Vt;Ib(e,t)?(e=Xn(e),t=Xn(t)):(e=se(e),t=se(t));let r=mr(e,t);return r||ei||s===i&&a28){let i=[31,28,31,30,31,30,31,31,30,31,30,31][n],o=e.getFullYear();n===1&&(o%4===0&&o%100!==0||o%400===0)&&(i=29),r=Math.min(r,i)}return e.setDate(r),e}function Pge(e,t){return e=xr(e),e instanceof Error?e:isNaN(t)?Ie:(t=parseInt(t,10),new Date(e.getFullYear(),e.getMonth()+t+1,0))}function Rge(e){return e=xr(e),e instanceof Error?e:e.getHours()}function z$(e){if(e=xr(e),e instanceof Error)return e;e=_b(e),e.setDate(e.getDate()+4-(e.getDay()||7));let t=new Date(e.getFullYear(),0,1);return Math.ceil(((e-t)/864e5+1)/7)}function qge(e){return e=xr(e),e instanceof Error?e:e.getMinutes()}function zge(e){return e=xr(e),e instanceof Error?e:e.getMonth()+1}function Pb(e,t,r){return Pb.INTL(e,t,1,r)}Pb.INTL=(e,t,r,n)=>{if(e=xr(e),e instanceof Error)return e;if(t=xr(t),t instanceof Error)return t;let i=!1,o=[],l=[1,2,3,4,5,6,0],s=new RegExp("^[0|1]{7}$");if(r===void 0)r=Tb[1];else if(typeof r=="string"&&s.test(r)){i=!0,r=r.split("");for(let p=0;p0?f.getUTCDay():f.getDay(),g=i?o.includes(h):h===r[0]||h===r[1];for(let x=0;x{if(e=xr(e),e instanceof Error)return e;if(t=se(t),t instanceof Error)return t;if(r===void 0?r=Tb[1]:r=Tb[r],!(r instanceof Array))return Ie;n===void 0?n=[]:n instanceof Array||(n=[n]);for(let l=0;l{let S=x.getFullYear(),D=new Date(S,2,1);if(UC(S)&&x=D)return!0;let C=v.getFullYear(),E=new Date(C,2,1);return UC(C)&&v>=E&&xs||i===s&&n>=l))return(o===a&&UC(o)||u(e,t)||s===1&&l===29)&&(f=366),Sb(e,t)/f;let p=a-o+1,g=(new Date(a+1,0,1)-new Date(o,0,1))/1e3/60/60/24/p;return Sb(e,t)/g}case 2:return Sb(e,t)/360;case 3:return Sb(e,t)/365;case 4:return(l+s*30+a*360-(n+i*30+o*360))/360}}function d$(e){let t=e>-22038912e5?2:1;return Math.ceil((e-_ge)/864e5)+t}function lM(e){return/^[01]{1,10}$/.test(e)}function Xge(e,t){return e=se(e),t=se(t),Qe(e,t)?Ie:Gv.default.besseli(e,t)}function Kge(e,t){return e=se(e),t=se(t),Qe(e,t)?Ie:Gv.default.besselj(e,t)}function Jge(e,t){return e=se(e),t=se(t),Qe(e,t)?Ie:Gv.default.besselk(e,t)}function Qge(e,t){return e=se(e),t=se(t),Qe(e,t)?Ie:Gv.default.bessely(e,t)}function jge(e){if(!lM(e))return Ge;let t=parseInt(e,2),r=e.toString();return r.length===10&&r.substring(0,1)==="1"?parseInt(r.substring(1),2)-512:t}function eve(e,t){if(!lM(e))return Ge;let r=e.toString();if(r.length===10&&r.substring(0,1)==="1")return(0xfffffffe00+parseInt(r.substring(1),2)).toString(16);let n=parseInt(e,2).toString(16);return t===void 0?n:isNaN(t)?Ie:t<0?Ge:(t=Math.floor(t),t>=n.length?Sa("0",t-n.length)+n:Ge)}function tve(e,t){if(!lM(e))return Ge;let r=e.toString();if(r.length===10&&r.substring(0,1)==="1")return(1073741312+parseInt(r.substring(1),2)).toString(8);let n=parseInt(e,2).toString(8);return t===void 0?n:isNaN(t)?Ie:t<0?Ge:(t=Math.floor(t),t>=n.length?Sa("0",t-n.length)+n:Ge)}function rve(e,t){return e=se(e),t=se(t),Qe(e,t)?Ie:e<0||t<0||Math.floor(e)!==e||Math.floor(t)!==t||e>0xffffffffffff||t>0xffffffffffff?Ge:e&t}function nve(e,t){return e=se(e),t=se(t),Qe(e,t)?Ie:e<0||Math.floor(e)!==e||e>0xffffffffffff||Math.abs(t)>53?Ge:t>=0?e<>-t}function ive(e,t){return e=se(e),t=se(t),Qe(e,t)?Ie:e<0||t<0||Math.floor(e)!==e||Math.floor(t)!==t||e>0xffffffffffff||t>0xffffffffffff?Ge:e|t}function ove(e,t){return e=se(e),t=se(t),Qe(e,t)?Ie:e<0||Math.floor(e)!==e||e>0xffffffffffff||Math.abs(t)>53?Ge:t>=0?e>>t:e<<-t}function ave(e,t){return e=se(e),t=se(t),Qe(e,t)?Ie:e<0||t<0||Math.floor(e)!==e||Math.floor(t)!==t||e>0xffffffffffff||t>0xffffffffffff?Ge:e^t}function yo(e,t,r){if(e=se(e),t=se(t),Qe(e,t))return e;if(r=r===void 0?"i":r,r!=="i"&&r!=="j")return Ie;if(e===0&&t===0)return 0;if(e===0)return t===1?r:t.toString()+r;if(t===0)return e.toString();{let n=t>0?"+":"";return e.toString()+n+(t===1?r:t.toString()+r)}}function sve(e,t,r){if(e=se(e),e instanceof Error)return e;let n=[["a.u. of action","?",null,"action",!1,!1,105457168181818e-48],["a.u. of charge","e",null,"electric_charge",!1,!1,160217653141414e-33],["a.u. of energy","Eh",null,"energy",!1,!1,435974417757576e-32],["a.u. of length","a?",null,"length",!1,!1,529177210818182e-25],["a.u. of mass","m?",null,"mass",!1,!1,910938261616162e-45],["a.u. of time","?/Eh",null,"time",!1,!1,241888432650516e-31],["admiralty knot","admkn",null,"speed",!1,!0,.514773333],["ampere","A",null,"electric_current",!0,!1,1],["ampere per meter","A/m",null,"magnetic_field_intensity",!0,!1,1],["\xE5ngstr\xF6m","\xC5",["ang"],"length",!1,!0,1e-10],["are","ar",null,"area",!1,!0,100],["astronomical unit","ua",null,"length",!1,!1,149597870691667e-25],["bar","bar",null,"pressure",!1,!1,1e5],["barn","b",null,"area",!1,!1,1e-28],["becquerel","Bq",null,"radioactivity",!0,!1,1],["bit","bit",["b"],"information",!1,!0,1],["btu","BTU",["btu"],"energy",!1,!0,1055.05585262],["byte","byte",null,"information",!1,!0,8],["candela","cd",null,"luminous_intensity",!0,!1,1],["candela per square metre","cd/m?",null,"luminance",!0,!1,1],["coulomb","C",null,"electric_charge",!0,!1,1],["cubic \xE5ngstr\xF6m","ang3",["ang^3"],"volume",!1,!0,1e-30],["cubic foot","ft3",["ft^3"],"volume",!1,!0,.028316846592],["cubic inch","in3",["in^3"],"volume",!1,!0,16387064e-12],["cubic light-year","ly3",["ly^3"],"volume",!1,!0,846786664623715e-61],["cubic metre","m3",["m^3"],"volume",!0,!0,1],["cubic mile","mi3",["mi^3"],"volume",!1,!0,416818182544058e-5],["cubic nautical mile","Nmi3",["Nmi^3"],"volume",!1,!0,6352182208],["cubic Pica","Pica3",["Picapt3","Pica^3","Picapt^3"],"volume",!1,!0,758660370370369e-22],["cubic yard","yd3",["yd^3"],"volume",!1,!0,.764554857984],["cup","cup",null,"volume",!1,!0,.0002365882365],["dalton","Da",["u"],"mass",!1,!1,166053886282828e-41],["day","d",["day"],"time",!1,!0,86400],["degree","\xB0",null,"angle",!1,!1,.0174532925199433],["degrees Rankine","Rank",null,"temperature",!1,!0,.555555555555556],["dyne","dyn",["dy"],"force",!1,!0,1e-5],["electronvolt","eV",["ev"],"energy",!1,!0,1.60217656514141],["ell","ell",null,"length",!1,!0,1.143],["erg","erg",["e"],"energy",!1,!0,1e-7],["farad","F",null,"electric_capacitance",!0,!1,1],["fluid ounce","oz",null,"volume",!1,!0,295735295625e-16],["foot","ft",null,"length",!1,!0,.3048],["foot-pound","flb",null,"energy",!1,!0,1.3558179483314],["gal","Gal",null,"acceleration",!1,!1,.01],["gallon","gal",null,"volume",!1,!0,.003785411784],["gauss","G",["ga"],"magnetic_flux_density",!1,!0,1],["grain","grain",null,"mass",!1,!0,647989e-10],["gram","g",null,"mass",!1,!0,.001],["gray","Gy",null,"absorbed_dose",!0,!1,1],["gross registered ton","GRT",["regton"],"volume",!1,!0,2.8316846592],["hectare","ha",null,"area",!1,!0,1e4],["henry","H",null,"inductance",!0,!1,1],["hertz","Hz",null,"frequency",!0,!1,1],["horsepower","HP",["h"],"power",!1,!0,745.69987158227],["horsepower-hour","HPh",["hh","hph"],"energy",!1,!0,2684519538e-3],["hour","h",["hr"],"time",!1,!0,3600],["imperial gallon (U.K.)","uk_gal",null,"volume",!1,!0,.00454609],["imperial hundredweight","lcwt",["uk_cwt","hweight"],"mass",!1,!0,50.802345],["imperial quart (U.K)","uk_qt",null,"volume",!1,!0,.0011365225],["imperial ton","brton",["uk_ton","LTON"],"mass",!1,!0,1016.046909],["inch","in",null,"length",!1,!0,.0254],["international acre","uk_acre",null,"area",!1,!0,4046.8564224],["IT calorie","cal",null,"energy",!1,!0,4.1868],["joule","J",null,"energy",!0,!0,1],["katal","kat",null,"catalytic_activity",!0,!1,1],["kelvin","K",["kel"],"temperature",!0,!0,1],["kilogram","kg",null,"mass",!0,!0,1],["knot","kn",null,"speed",!1,!0,.514444444444444],["light-year","ly",null,"length",!1,!0,9460730472580800],["litre","L",["l","lt"],"volume",!1,!0,.001],["lumen","lm",null,"luminous_flux",!0,!1,1],["lux","lx",null,"illuminance",!0,!1,1],["maxwell","Mx",null,"magnetic_flux",!1,!1,1e-18],["measurement ton","MTON",null,"volume",!1,!0,1.13267386368],["meter per hour","m/h",["m/hr"],"speed",!1,!0,.00027777777777778],["meter per second","m/s",["m/sec"],"speed",!0,!0,1],["meter per second squared","m?s??",null,"acceleration",!0,!1,1],["parsec","pc",["parsec"],"length",!1,!0,0x6da012f958ee1c],["meter squared per second","m?/s",null,"kinematic_viscosity",!0,!1,1],["metre","m",null,"length",!0,!0,1],["miles per hour","mph",null,"speed",!1,!0,.44704],["millimetre of mercury","mmHg",null,"pressure",!1,!1,133.322],["minute","?",null,"angle",!1,!1,.000290888208665722],["minute","min",["mn"],"time",!1,!0,60],["modern teaspoon","tspm",null,"volume",!1,!0,5e-6],["mole","mol",null,"amount_of_substance",!0,!1,1],["morgen","Morgen",null,"area",!1,!0,2500],["n.u. of action","?",null,"action",!1,!1,105457168181818e-48],["n.u. of mass","m?",null,"mass",!1,!1,910938261616162e-45],["n.u. of speed","c?",null,"speed",!1,!1,299792458],["n.u. of time","?/(me?c??)",null,"time",!1,!1,128808866778687e-35],["nautical mile","M",["Nmi"],"length",!1,!0,1852],["newton","N",null,"force",!0,!0,1],["\u0153rsted","Oe ",null,"magnetic_field_intensity",!1,!1,79.5774715459477],["ohm","\u03A9",null,"electric_resistance",!0,!1,1],["ounce mass","ozm",null,"mass",!1,!0,.028349523125],["pascal","Pa",null,"pressure",!0,!1,1],["pascal second","Pa?s",null,"dynamic_viscosity",!0,!1,1],["pferdest\xE4rke","PS",null,"power",!1,!0,735.49875],["phot","ph",null,"illuminance",!1,!1,1e-4],["pica (1/6 inch)","pica",null,"length",!1,!0,.00035277777777778],["pica (1/72 inch)","Pica",["Picapt"],"length",!1,!0,.00423333333333333],["poise","P",null,"dynamic_viscosity",!1,!1,.1],["pond","pond",null,"force",!1,!0,.00980665],["pound force","lbf",null,"force",!1,!0,4.4482216152605],["pound mass","lbm",null,"mass",!1,!0,.45359237],["quart","qt",null,"volume",!1,!0,.000946352946],["radian","rad",null,"angle",!0,!1,1],["second","?",null,"angle",!1,!1,484813681109536e-20],["second","s",["sec"],"time",!0,!0,1],["short hundredweight","cwt",["shweight"],"mass",!1,!0,45.359237],["siemens","S",null,"electrical_conductance",!0,!1,1],["sievert","Sv",null,"equivalent_dose",!0,!1,1],["slug","sg",null,"mass",!1,!0,14.59390294],["square \xE5ngstr\xF6m","ang2",["ang^2"],"area",!1,!0,1e-20],["square foot","ft2",["ft^2"],"area",!1,!0,.09290304],["square inch","in2",["in^2"],"area",!1,!0,64516e-8],["square light-year","ly2",["ly^2"],"area",!1,!0,895054210748189e17],["square meter","m?",null,"area",!0,!0,1],["square mile","mi2",["mi^2"],"area",!1,!0,2589988110336e-6],["square nautical mile","Nmi2",["Nmi^2"],"area",!1,!0,3429904],["square Pica","Pica2",["Picapt2","Pica^2","Picapt^2"],"area",!1,!0,1792111111111e-17],["square yard","yd2",["yd^2"],"area",!1,!0,.83612736],["statute mile","mi",null,"length",!1,!0,1609.344],["steradian","sr",null,"solid_angle",!0,!1,1],["stilb","sb",null,"luminance",!1,!1,1e-4],["stokes","St",null,"kinematic_viscosity",!1,!1,1e-4],["stone","stone",null,"mass",!1,!0,6.35029318],["tablespoon","tbs",null,"volume",!1,!0,147868e-10],["teaspoon","tsp",null,"volume",!1,!0,492892e-11],["tesla","T",null,"magnetic_flux_density",!0,!0,1],["thermodynamic calorie","c",null,"energy",!1,!0,4.184],["ton","ton",null,"mass",!1,!0,907.18474],["tonne","t",null,"mass",!1,!1,1e3],["U.K. pint","uk_pt",null,"volume",!1,!0,.00056826125],["U.S. bushel","bushel",null,"volume",!1,!0,.03523907],["U.S. oil barrel","barrel",null,"volume",!1,!0,.158987295],["U.S. pint","pt",["us_pt"],"volume",!1,!0,.000473176473],["U.S. survey mile","survey_mi",null,"length",!1,!0,1609.347219],["U.S. survey/statute acre","us_acre",null,"area",!1,!0,4046.87261],["volt","V",null,"voltage",!0,!1,1],["watt","W",null,"power",!0,!0,1],["watt-hour","Wh",["wh"],"energy",!1,!0,3600],["weber","Wb",null,"magnetic_flux",!0,!1,1],["yard","yd",null,"length",!1,!0,.9144],["year","yr",null,"time",!1,!0,31557600]],i={Yi:["yobi",80,12089258196146292e8,"Yi","yotta"],Zi:["zebi",70,11805916207174113e5,"Zi","zetta"],Ei:["exbi",60,1152921504606847e3,"Ei","exa"],Pi:["pebi",50,0x4000000000000,"Pi","peta"],Ti:["tebi",40,1099511627776,"Ti","tera"],Gi:["gibi",30,1073741824,"Gi","giga"],Mi:["mebi",20,1048576,"Mi","mega"],ki:["kibi",10,1024,"ki","kilo"]},o={Y:["yotta",1e24,"Y"],Z:["zetta",1e21,"Z"],E:["exa",1e18,"E"],P:["peta",1e15,"P"],T:["tera",1e12,"T"],G:["giga",1e9,"G"],M:["mega",1e6,"M"],k:["kilo",1e3,"k"],h:["hecto",100,"h"],e:["dekao",10,"e"],d:["deci",.1,"d"],c:["centi",.01,"c"],m:["milli",.001,"m"],u:["micro",1e-6,"u"],n:["nano",1e-9,"n"],p:["pico",1e-12,"p"],f:["femto",1e-15,"f"],a:["atto",1e-18,"a"],z:["zepto",1e-21,"z"],y:["yocto",1e-24,"y"]},l=null,s=null,a=t,u=r,f=1,p=1,h;for(let g=0;g=0)&&(l=n[g]),(n[g][1]===u||h.indexOf(u)>=0)&&(s=n[g]);if(l===null){let g=i[t.substring(0,2)],x=o[t.substring(0,1)];t.substring(0,2)==="da"&&(x=["dekao",10,"da"]),g?(f=g[2],a=t.substring(2)):x&&(f=x[1],a=t.substring(x[2].length));for(let v=0;v=0)&&(l=n[v])}if(s===null){let g=i[r.substring(0,2)],x=o[r.substring(0,1)];r.substring(0,2)==="da"&&(x=["dekao",10,"da"]),g?(p=g[2],u=r.substring(2)):x&&(p=x[1],u=r.substring(x[2].length));for(let v=0;v=0)&&(s=n[v])}return l===null||s===null||l[3]!==s[3]?Vt:e*l[6]*f/(s[6]*p)}function uve(e,t){if(e=se(e),e instanceof Error)return e;if(!/^-?[0-9]{1,3}$/.test(e)||e<-512||e>511)return Ge;if(e<0)return"1"+Sa("0",9-(512+e).toString(2).length)+(512+e).toString(2);let r=parseInt(e,10).toString(2);return typeof t>"u"?r:isNaN(t)?Ie:t<0?Ge:(t=Math.floor(t),t>=r.length?Sa("0",t-r.length)+r:Ge)}function lve(e,t){if(e=se(e),e instanceof Error)return e;if(!/^-?[0-9]{1,12}$/.test(e)||e<-549755813888||e>549755813887)return Ge;if(e<0)return(1099511627776+e).toString(16);let r=parseInt(e,10).toString(16);return typeof t>"u"?r:isNaN(t)?Ie:t<0?Ge:(t=Math.floor(t),t>=r.length?Sa("0",t-r.length)+r:Ge)}function fve(e,t){if(e=se(e),e instanceof Error)return e;if(!/^-?[0-9]{1,9}$/.test(e)||e<-536870912||e>536870911)return Ge;if(e<0)return(1073741824+e).toString(8);let r=parseInt(e,10).toString(8);return typeof t>"u"?r:isNaN(t)?Ie:t<0?Ge:(t=Math.floor(t),t>=r.length?Sa("0",t-r.length)+r:Ge)}function cve(e,t){return t=t===void 0?0:t,e=se(e),t=se(t),Qe(e,t)?Ie:e===t?1:0}function fM(e,t){return t=t===void 0?0:t,e=se(e),t=se(t),Qe(e,t)?Ie:Dt.default.erf(e)}fM.PRECISE=()=>{throw new Error("ERF.PRECISE is not implemented")};function cM(e){return isNaN(e)?Ie:Dt.default.erfc(e)}cM.PRECISE=()=>{throw new Error("ERFC.PRECISE is not implemented")};function pve(e,t){return t=t||0,e=se(e),Qe(t,e)?e:e>=t?1:0}function mve(e,t){if(!/^[0-9A-Fa-f]{1,10}$/.test(e))return Ge;let r=e.length===10&&e.substring(0,1).toLowerCase()==="f",n=r?parseInt(e,16)-1099511627776:parseInt(e,16);if(n<-512||n>511)return Ge;if(r)return"1"+Sa("0",9-(512+n).toString(2).length)+(512+n).toString(2);let i=n.toString(2);return t===void 0?i:isNaN(t)?Ie:t<0?Ge:(t=Math.floor(t),t>=i.length?Sa("0",t-i.length)+i:Ge)}function dve(e){if(!/^[0-9A-Fa-f]{1,10}$/.test(e))return Ge;let t=parseInt(e,16);return t>=549755813888?t-1099511627776:t}function hve(e,t){if(!/^[0-9A-Fa-f]{1,10}$/.test(e))return Ge;let r=parseInt(e,16);if(r>536870911&&r<0xffe0000000)return Ge;if(r>=0xffe0000000)return(r-0xffc0000000).toString(8);let n=r.toString(8);return t===void 0?n:isNaN(t)?Ie:t<0?Ge:(t=Math.floor(t),t>=n.length?Sa("0",t-n.length)+n:Ge)}function pM(e){let t=rn(e),r=tn(e);return Qe(t,r)?Ie:Math.sqrt(Math.pow(t,2)+Math.pow(r,2))}function tn(e){if(e===void 0||e===!0||e===!1)return Ie;if(e===0||e==="0")return 0;if(["i","j"].indexOf(e)>=0)return 1;e=e+"",e=e.replace("+i","+1i").replace("-i","-1i").replace("+j","+1j").replace("-j","-1j");let t=e.indexOf("+"),r=e.indexOf("-");t===0&&(t=e.indexOf("+",1)),r===0&&(r=e.indexOf("-",1));let n=e.substring(e.length-1,e.length),i=n==="i"||n==="j";return t>=0||r>=0?i?t>=0?isNaN(e.substring(0,t))||isNaN(e.substring(t+1,e.length-1))?Ge:Number(e.substring(t+1,e.length-1)):isNaN(e.substring(0,r))||isNaN(e.substring(r+1,e.length-1))?Ge:-Number(e.substring(r+1,e.length-1)):Ge:i?isNaN(e.substring(0,e.length-1))?Ge:e.substring(0,e.length-1):isNaN(e)?Ge:0}function mM(e){let t=rn(e),r=tn(e);return Qe(t,r)?Ie:t===0&&r===0?xo:t===0&&r>0?Math.PI/2:t===0&&r<0?-Math.PI/2:r===0&&t>0?0:r===0&&t<0?-Math.PI:t>0?Math.atan(r/t):t<0&&r>=0?Math.atan(r/t)+Math.PI:Math.atan(r/t)-Math.PI}function gve(e){let t=rn(e),r=tn(e);if(Qe(t,r))return Ie;let n=e.substring(e.length-1);return n=n==="i"||n==="j"?n:"i",r!==0?yo(t,-r,n):e}function qb(e){let t=rn(e),r=tn(e);if(Qe(t,r))return Ie;let n=e.substring(e.length-1);return n=n==="i"||n==="j"?n:"i",yo(Math.cos(t)*(Math.exp(r)+Math.exp(-r))/2,-Math.sin(t)*(Math.exp(r)-Math.exp(-r))/2,n)}function U$(e){let t=rn(e),r=tn(e);if(Qe(t,r))return Ie;let n=e.substring(e.length-1);return n=n==="i"||n==="j"?n:"i",yo(Math.cos(r)*(Math.exp(t)+Math.exp(-t))/2,Math.sin(r)*(Math.exp(t)-Math.exp(-t))/2,n)}function vve(e){let t=rn(e),r=tn(e);return Qe(t,r)?Ie:qp(qb(e),zb(e))}function qp(e,t){let r=rn(e),n=tn(e),i=rn(t),o=tn(t);if(Qe(r,n,i,o))return Ie;let l=e.substring(e.length-1),s=t.substring(t.length-1),a="i";if((l==="j"||s==="j")&&(a="j"),i===0&&o===0)return Ge;let u=i*i+o*o;return yo((r*i+n*o)/u,(n*i-r*o)/u,a)}function xve(e){let t=rn(e),r=tn(e);if(Qe(t,r))return Ie;let n=e.substring(e.length-1);n=n==="i"||n==="j"?n:"i";let i=Math.exp(t);return yo(i*Math.cos(r),i*Math.sin(r),n)}function yve(e){let t=rn(e),r=tn(e);if(Qe(t,r))return Ie;let n=e.substring(e.length-1);return n=n==="i"||n==="j"?n:"i",yo(Math.log(Math.sqrt(t*t+r*r)),Math.atan(r/t),n)}function wve(e){let t=rn(e),r=tn(e);if(Qe(t,r))return Ie;let n=e.substring(e.length-1);return n=n==="i"||n==="j"?n:"i",yo(Math.log(Math.sqrt(t*t+r*r))/Math.log(10),Math.atan(r/t)/Math.log(10),n)}function bve(e){let t=rn(e),r=tn(e);if(Qe(t,r))return Ie;let n=e.substring(e.length-1);return n=n==="i"||n==="j"?n:"i",yo(Math.log(Math.sqrt(t*t+r*r))/Math.log(2),Math.atan(r/t)/Math.log(2),n)}function Dve(e,t){t=se(t);let r=rn(e),n=tn(e);if(Qe(t,r,n))return Ie;let i=e.substring(e.length-1);i=i==="i"||i==="j"?i:"i";let o=Math.pow(pM(e),t),l=mM(e);return yo(o*Math.cos(t*l),o*Math.sin(t*l),i)}function Sve(){let e=arguments[0];if(!arguments.length)return Ie;for(let t=1;t=0)return 0;e=e+"";let t=e.indexOf("+"),r=e.indexOf("-");t===0&&(t=e.indexOf("+",1)),r===0&&(r=e.indexOf("-",1));let n=e.substring(e.length-1,e.length),i=n==="i"||n==="j";return t>=0||r>=0?i?t>=0?isNaN(e.substring(0,t))||isNaN(e.substring(t+1,e.length-1))?Ge:Number(e.substring(0,t)):isNaN(e.substring(0,r))||isNaN(e.substring(r+1,e.length-1))?Ge:Number(e.substring(0,r)):Ge:i?isNaN(e.substring(0,e.length-1))?Ge:0:isNaN(e)?Ge:e}function Nve(e){if(e===!0||e===!1)return Ie;let t=rn(e),r=tn(e);return Qe(t,r)?Ie:qp("1",qb(e))}function Eve(e){let t=rn(e),r=tn(e);return Qe(t,r)?Ie:qp("1",U$(e))}function zb(e){let t=rn(e),r=tn(e);if(Qe(t,r))return Ie;let n=e.substring(e.length-1);return n=n==="i"||n==="j"?n:"i",yo(Math.sin(t)*(Math.exp(r)+Math.exp(-r))/2,Math.cos(t)*(Math.exp(r)-Math.exp(-r))/2,n)}function H$(e){let t=rn(e),r=tn(e);if(Qe(t,r))return Ie;let n=e.substring(e.length-1);return n=n==="i"||n==="j"?n:"i",yo(Math.cos(r)*(Math.exp(t)-Math.exp(-t))/2,Math.sin(r)*(Math.exp(t)+Math.exp(-t))/2,n)}function Ave(e){let t=rn(e),r=tn(e);if(Qe(t,r))return Ie;let n=e.substring(e.length-1);n=n==="i"||n==="j"?n:"i";let i=Math.sqrt(pM(e)),o=mM(e);return yo(i*Math.cos(o/2),i*Math.sin(o/2),n)}function Cve(e){if(e===!0||e===!1)return Ie;let t=rn(e),r=tn(e);return Qe(t,r)?Ge:qp("1",zb(e))}function Mve(e){if(e===!0||e===!1)return Ie;let t=rn(e),r=tn(e);return Qe(t,r)?Ge:qp("1",H$(e))}function Tve(e,t){let r=rn(e),n=tn(e),i=rn(t),o=tn(t);if(Qe(r,n,i,o))return Ie;let l=e.substring(e.length-1),s=t.substring(t.length-1),a="i";return(l==="j"||s==="j")&&(a="j"),yo(r-i,n-o,a)}function _ve(){if(!arguments.length)return Ie;let e=at(arguments),t=e[0];for(let r=1;r511)return Ge;if(r)return"1"+Sa("0",9-(512+n).toString(2).length)+(512+n).toString(2);let i=n.toString(2);return typeof t>"u"?i:isNaN(t)?Ie:t<0?Ge:(t=Math.floor(t),t>=i.length?Sa("0",t-i.length)+i:Ge)}function Ive(e){if(!/^[0-7]{1,10}$/.test(e))return Ge;let t=parseInt(e,8);return t>=536870912?t-1073741824:t}function kve(e,t){if(!/^[0-7]{1,10}$/.test(e))return Ge;let r=parseInt(e,8);if(r>=536870912)return"ff"+(r+3221225472).toString(16);let n=r.toString(16);return t===void 0?n:isNaN(t)?Ie:t<0?Ge:(t=Math.floor(t),t>=n.length?Sa("0",t-n.length)+n:Ge)}var Lve=Yv.DIST,Bve=Yv.INV,Pve=Wd.DIST,Rve=Rl.MATH,qve=Rl.PRECISE,zve=zs.DIST,Uve=zs.DIST.RT,Hve=zs.INV,$ve=zs.INV.RT,Wve=zs.TEST,Vve=Vd.P,Gve=Vd.P,Yve=Vd.S,Zve=Wd.INV,Xve=cM.PRECISE,Kve=fM.PRECISE,Jve=jC.DIST,Qve=Us.DIST,jve=Us.DIST.RT,e0e=Us.INV,t0e=Us.INV.RT,r0e=Pp.MATH,n0e=Pp.PRECISE,i0e=Us.TEST,o0e=Zv.DIST,a0e=Zv.INV,s0e=eM.PRECISE,u0e=tM.DIST,l0e=Gd.INV,f0e=Gd.DIST,c0e=Gd.INV,p0e=Lp.MULT,m0e=Lp.SNGL,d0e=nM.DIST,h0e=Pb.INTL,g0e=Hs.DIST,v0e=Hs.INV,x0e=Hs.S.DIST,y0e=Hs.S.INV,w0e=Da.EXC,b0e=Da.INC,D0e=Xv.EXC,S0e=Xv.INC,N0e=iM.DIST,E0e=Bp.EXC,A0e=Bp.INC,C0e=Kv.AVG,M0e=Kv.EQ,T0e=oM.P,_0e=Ko.P,O0e=Ko.S,F0e=Jo.DIST,I0e=Jo.DIST.RT,k0e=Jo.INV,L0e=Jo.TEST,B0e=To.P,P0e=To.S,R0e=aM.DIST,q0e=Rb.INTL,z0e=sM.TEST;function dM(e){let t=[];return vo(e,r=>{r&&t.push(r)}),t}function es(e,t){let r={};for(let o=1;on&&(n=t[o].length);for(let o=1;o{o+=i[l]}),n.length===0?xo:o/n.length}function H0e(e,t,r){if(isNaN(t)&&typeof t!="string")return Ie;let n=es(e,r),i=[];if(typeof t=="string"){let l=ja(e,t);i=xn(e[l])}else i=xn(e[t]);let o=[];return vo(n,l=>{o.push(i[l])}),Wv(o)}function $0e(e,t,r){if(isNaN(t)&&typeof t!="string")return Ie;let n=es(e,r),i=[];if(typeof t=="string"){let l=ja(e,t);i=xn(e[l])}else i=xn(e[t]);let o=[];return vo(n,l=>{o.push(i[l])}),Vv(o)}function W0e(e,t,r){if(isNaN(t)&&typeof t!="string")return Ie;let n=es(e,r),i=[];if(typeof t=="string"){let o=ja(e,t);i=xn(e[o])}else i=xn(e[t]);return n.length===0?Ie:n.length>1?Ge:i[n[0]]}function V0e(e,t,r){if(isNaN(t)&&typeof t!="string")return Ie;let n=es(e,r),i=[];if(typeof t=="string"){let l=ja(e,t);i=xn(e[l])}else i=xn(e[t]);let o=i[n[0]];return vo(n,l=>{o{o>i[l]&&(o=i[l])}),o}function Y0e(e,t,r){if(isNaN(t)&&typeof t!="string")return Ie;let n=es(e,r),i=[];if(typeof t=="string"){let s=ja(e,t);i=xn(e[s])}else i=xn(e[t]);let o=[];vo(n,s=>{o.push(i[s])}),o=dM(o);let l=1;return vo(o,s=>{l*=s}),l}function Z0e(e,t,r){if(isNaN(t)&&typeof t!="string")return Ie;let n=es(e,r),i=[];if(typeof t=="string"){let l=ja(e,t);i=xn(e[l])}else i=xn(e[t]);let o=[];return vo(n,l=>{o.push(i[l])}),o=dM(o),Ko.S(o)}function X0e(e,t,r){if(isNaN(t)&&typeof t!="string")return Ie;let n=es(e,r),i=[];if(typeof t=="string"){let l=ja(e,t);i=xn(e[l])}else i=xn(e[t]);let o=[];return vo(n,l=>{o.push(i[l])}),o=dM(o),Ko.P(o)}function K0e(e,t,r){if(isNaN(t)&&typeof t!="string")return Ie;let n=es(e,r),i=[];if(typeof t=="string"){let l=ja(e,t);i=xn(e[l])}else i=xn(e[t]);let o=[];return vo(n,l=>{o.push(i[l])}),ql(o)}function J0e(e,t,r){if(isNaN(t)&&typeof t!="string")return Ie;let n=es(e,r),i=[];if(typeof t=="string"){let l=ja(e,t);i=xn(e[l])}else i=xn(e[t]);let o=[];return vo(n,l=>{o.push(i[l])}),To.S(o)}function Q0e(e,t,r){if(isNaN(t)&&typeof t!="string")return Ie;let n=es(e,r),i=[];if(typeof t=="string"){let l=ja(e,t);i=xn(e[l])}else i=xn(e[t]);let o=[];return vo(n,l=>{o.push(i[l])}),To.P(o)}function HC(e){return e&&e.getTime&&!isNaN(e.getTime())}function $C(e){return e instanceof Date?e:new Date(e)}function j0e(e,t,r){let n=xr(t);for(n.setFullYear(e.getFullYear()),ne;)n.setMonth(n.getMonth()+-12/r);return n}function $$(e){return e=se(e),[1,2,4].indexOf(e)===-1?Ge:e}function W$(e){return e=se(e),[0,1,2,3,4].indexOf(e)===-1?Ge:e}function exe(e,t,r,n,i,o,l){return e=$C(e),t=$C(t),r=$C(r),o=$$(o),l=W$(l),mr(o,l)?Ge:!HC(e)||!HC(t)||!HC(r)?Ie:n<=0||i<=0||r<=e?Ge:(i=i||0,l=l||0,i*n*uM(e,r,l))}function txe(){throw new Error("ACCRINTM is not implemented")}function rxe(){throw new Error("AMORDEGRC is not implemented")}function nxe(){throw new Error("AMORLINC is not implemented")}function ixe(){throw new Error("COUPDAYBS is not implemented")}function oxe(e,t,r,n){if(n=W$(n),r=$$(r),e=xr(e),t=xr(t),mr(e,t))return Ie;if(mr(r,n)||e>=t)return Ge;if(n===1){let o=j0e(e,t,r),l=xr(o);return l.setMonth(l.getMonth()+12/r),nc(o,l,"D")}let i;switch(n){case 0:case 2:case 4:i=360;break;case 3:i=365;break;default:return Ge}return i/r}function axe(){throw new Error("COUPDAYSNC is not implemented")}function sxe(){throw new Error("COUPNCD is not implemented")}function uxe(){throw new Error("COUPNUM is not implemented")}function lxe(){throw new Error("COUPPCD is not implemented")}function fxe(e,t,r,n,i,o){if(e=se(e),t=se(t),r=se(r),Qe(e,t,r))return Ie;if(e<=0||t<=0||r<=0||n<1||i<1||n>i||o!==0&&o!==1)return Ge;let l=Jv(e,t,r,0,o),s=0;n===1&&(o===0&&(s=-r),n++);for(let a=n;a<=i;a++)s+=o===1?Rp(e,a-2,l,r,1)-l:Rp(e,a-1,l,r,0);return s*=e,s}function cxe(e,t,r,n,i,o){if(e=se(e),t=se(t),r=se(r),Qe(e,t,r))return Ie;if(e<=0||t<=0||r<=0||n<1||i<1||n>i||o!==0&&o!==1)return Ge;let l=Jv(e,t,r,0,o),s=0;n===1&&(s=o===0?l+r*e:l,n++);for(let a=n;a<=i;a++)s+=o>0?l-(Rp(e,a-2,l,r,1)-l)*e:l-Rp(e,a-1,l,r,0)*e;return s}function pxe(e,t,r,n,i){if(i=i===void 0?12:i,e=se(e),t=se(t),r=se(r),n=se(n),i=se(i),Qe(e,t,r,n,i))return Ie;if(e<0||t<0||r<0||n<0||[1,2,3,4,5,6,7,8,9,10,11,12].indexOf(i)===-1||n>r)return Ge;if(t>=e)return 0;let o=(1-Math.pow(t/e,1/r)).toFixed(3),l=e*o*i/12,s=l,a=0,u=n===r?r-1:n;for(let f=2;f<=u;f++)a=(e-s)*o,s+=a;return n===1?l:n===r?(e-s)*o:a}function mxe(e,t,r,n,i){if(i=i===void 0?2:i,e=se(e),t=se(t),r=se(r),n=se(n),i=se(i),Qe(e,t,r,n,i))return Ie;if(e<0||t<0||r<0||n<0||i<=0||n>r)return Ge;if(t>=e)return 0;let o=0,l=0;for(let s=1;s<=n;s++)l=Math.min((e-o)*(i/r),e-t-o),o+=l;return l}function dxe(e,t,r,n,i){if(e=xr(e),t=xr(t),r=se(r),n=se(n),i=se(i),i=i||0,Qe(e,t,r,n,i))return Ie;if(r<=0||n<=0)return Ge;if(e>=t)return Ie;let o,l;switch(i){case 0:o=360,l=ic(e,t,!1);break;case 1:o=365,l=nc(e,t,"D");break;case 2:o=360,l=nc(e,t,"D");break;case 3:o=365,l=nc(e,t,"D");break;case 4:o=360,l=ic(e,t,!0);break;default:return Ge}return(n-r)/n*o/l}function hxe(e,t){if(e=se(e),t=se(t),Qe(e,t))return Ie;if(t<0)return Ge;if(t>=0&&t<1)return xo;t=parseInt(t,10);let r=parseInt(e,10);r+=e%1*Math.pow(10,Math.ceil(Math.log(t)/Math.LN10))/t;let n=Math.pow(10,Math.ceil(Math.log(t)/Math.LN2)+1);return r=Math.round(r*n)/n,r}function gxe(e,t){if(e=se(e),t=se(t),Qe(e,t))return Ie;if(t<0)return Ge;if(t>=0&&t<1)return xo;t=parseInt(t,10);let r=parseInt(e,10);return r+=e%1*Math.pow(10,-Math.ceil(Math.log(t)/Math.LN10))*t,r}function vxe(){throw new Error("DURATION is not implemented")}function xxe(e,t){return e=se(e),t=se(t),Qe(e,t)?Ie:e<=0||t<1?Ge:(t=parseInt(t,10),Math.pow(1+e/t,t)-1)}function Rp(e,t,r,n,i){if(n=n||0,i=i||0,e=se(e),t=se(t),r=se(r),n=se(n),i=se(i),Qe(e,t,r,n,i))return Ie;let o;if(e===0)o=n+r*t;else{let l=Math.pow(1+e,t);o=i===1?n*l+r*(1+e)*(l-1)/e:n*l+r*(l-1)/e}return-o}function yxe(e,t){if(e=se(e),t=Mt(at(t)),Qe(e,t))return Ie;let r=t.length,n=e;for(let i=0;i{let S=v+1,D=g[0];for(let C=1;C{let S=v+1,D=0;for(let C=1;C0&&(o=!0),e[g]<0&&(l=!0);if(!o||!l)return Ge;t=t===void 0?.1:t;let s=t,a=1e-10,u,f,p,h=!0;do p=r(e,i,s),u=s-p/n(e,i,s),f=Math.abs(u-s),s=u,h=f>a&&Math.abs(p)>a;while(h);return s}function Dxe(e,t,r,n){return e=se(e),t=se(t),r=se(r),n=se(n),Qe(e,t,r,n)?Ie:n*e*(t/r-1)}function Sxe(){throw new Error("MDURATION is not implemented")}function Nxe(e,t,r){if(e=Mt(at(e)),t=se(t),r=se(r),Qe(e,t,r))return Ie;let n=e.length,i=[],o=[];for(let a=0;a=t)return Ie;let o,l;switch(i){case 0:o=360,l=ic(e,t,!1);break;case 1:o=365,l=nc(e,t,"D");break;case 2:o=360,l=nc(e,t,"D");break;case 3:o=365,l=nc(e,t,"D");break;case 4:o=360,l=ic(e,t,!0);break;default:return Ge}return n-r*n*l/o}function Lxe(){throw new Error("PRICEMAT is not implemented")}function Bxe(e,t,r,n,i){return n=n||0,i=i||0,e=se(e),t=se(t),r=se(r),n=se(n),i=se(i),Qe(e,t,r,n,i)?Ie:e===0?-r*t-n:((1-Math.pow(1+e,t))/e*r*(1+e*i)-n)/Math.pow(1+e,t)}function Pxe(e,t,r,n,i,o){if(o=o===void 0?.1:o,n=n===void 0?0:n,i=i===void 0?0:i,e=se(e),t=se(t),r=se(r),n=se(n),i=se(i),o=se(o),Qe(e,t,r,n,i,o))return Ie;let l=1e-10,s=100,a=o;i=i?1:0;for(let u=0;ur?Ge:(n=parseInt(n,10),(e-t)*(r-n+1)*2/(r*(r+1)))}function Hxe(e,t,r){return e=xr(e),t=xr(t),r=se(r),Qe(e,t,r)?Ie:r<=0||e>t||t-e>365*24*60*60*1e3?Ge:365*r/(360-r*ic(e,t,!1))}function $xe(e,t,r){return e=xr(e),t=xr(t),r=se(r),Qe(e,t,r)?Ie:r<=0||e>t||t-e>365*24*60*60*1e3?Ge:100*(1-r*ic(e,t,!1)/360)}function Wxe(e,t,r){return e=xr(e),t=xr(t),r=se(r),Qe(e,t,r)?Ie:r<=0||e>t||t-e>365*24*60*60*1e3?Ge:(100-r)*360/(r*ic(e,t,!1))}function Vxe(){throw new Error("VDB is not implemented")}function Gxe(e,t,r){if(e=Mt(at(e)),t=w$(at(t)),r=se(r),Qe(e,t,r))return Ie;let n=(g,x,v)=>{let S=v+1,D=g[0];for(let C=1;C{let S=v+1,D=0;for(let C=1;C0&&(o=!0),e[g]<0&&(l=!0);if(!o||!l)return Ge;r=r||.1;let s=r,a=1e-10,u,f,p,h=!0;do p=n(e,t,s),u=s-p/i(e,t,s),f=Math.abs(u-s),s=u,h=f>a&&Math.abs(p)>a;while(h);return s}function Yxe(e,t,r){if(e=se(e),t=Mt(at(t)),r=w$(at(r)),Qe(e,t,r))return Ie;let n=0;for(let i=0;i=2?t:!0,t==null&&(t=0),r=arguments.length===3?r:!1,r==null&&(r=0),e?t:r)}function eye(){for(let e=0;e0){let t=arguments[0],r=arguments.length-1,n=Math.floor(r/2),i=!1,o=r%2!==0,l=r%2===0?null:arguments[arguments.length-1];if(n){for(let s=0;sYd));window.math=_r;var hM="D t",gM="ccc, D t",vM="D",xM="ccc, D";function Pu(){ke.refreshCM&&Ot.refresh();let e="",t="",r=[],n=[],i=[],o=vr.now().setLocale(ke.settings.locale);ke.mathScope={},ke.mathScope.now=o.toFormat(ke.settings.dateDay?gM:hM),ke.mathScope.today=o.toFormat(ke.settings.dateDay?xM:vM),Le("#clearButton").setAttribute("disabled",Ot.getValue()===""),Le("#copyButton").setAttribute("disabled",Ot.getValue()===""),Ot.eachLine(a=>{let u=Ot.getLineNumber(a),f=u+1,p="",h=a.text.trim().split("//")[0].split("#")[0];if(Ot.removeLineClass(a,"gutter","lineNoError"),ke.settings.rulers?(Ot.removeLineClass(a,"wrap","noRuler"),Ot.addLineClass(a,"wrap","ruler")):(Ot.removeLineClass(a,"wrap","ruler"),Ot.addLineClass(a,"wrap","noRuler")),h)try{h=f>1&&h.charAt(0).match(/[+\-*/]/)&&Ot.getLine(f-2).length>0&&ke.settings.contPrevLine?ke.mathScope.ans+h:h,n1()&&(h=h.replace(/[,;]/g,x=>x===","?".":",")),ke.mathScope.avg=_r.evaluate(r.length>0?"("+_r.mean(r)+")":"0"),ke.mathScope.total=_r.evaluate(n.length>0?"("+n.join("+")+")":"0"),ke.mathScope.subtotal=_r.evaluate(i.length>0?"("+i.join("+")+")":"0");try{p=_r.evaluate(h,ke.mathScope)}catch{p=lye(h)}if(p||p===0){ke.mathScope._=p,ke.mathScope.ans=p,ke.mathScope["line"+f]=p,typeof p=="number"&&(r.push(p),n.push(p),i.push(p)),p=_r.format(p,{notation:ke.settings.notation,lowerExp:+ke.settings.expLower,upperExp:+ke.settings.expUpper});let x=p;if(p=Qv(p,!1),t=Qv(x,!0),p.match(/\w\(x\)/)){let v=(/\w\(x\)$/.test(p)&&h!=="ans"?h:p).replace(/\s+/g,"");ke.mathScope.ans=v,ke.mathScope["line"+f]=v,p=`Plot`}}else i.length=0,p=""}catch(x){ke.settings.lineErrors&&(Ot.addLineClass(u,"gutter","lineNoError"),p=`Error`)}else i.length=0;let g=Ot.display.lineDiv.children[u].clientHeight;e+=`
    ${p} -
    `}),ke("#output").innerHTML=e;let l=zb.map(a=>a.text);if(Object.keys(Ie.mathScope).filter(a=>!l.includes(a)).forEach(a=>{!Ea.some(u=>u.text===a)&&a!=="line"+Ot.lineCount()&&Ea.push({text:a,desc:"Variable",className:"cm-variable"})}),Ie.activePage){let a=bt.get("pages"),u=a.find(f=>f.id===Ie.activePage);u.data=Ot.getValue(),u.history=Ot.getHistory(),bt.set("pages",a)}}function aye(e){if(e.match(/:/))try{Mr.evaluate(e.split(":")[0])}catch{e=e.substring(e.indexOf(":")+1)}let t=/[+-] * .* *(millisecond|second|minute|hour|day|week|month|quarter|year|decade|century|centuries|millennium|millennia)s?/g;if(e.match(t)){e=e.replace("now",Ie.mathScope.now).replace("today",Ie.mathScope.today);let i=e.replace(t,"").trim(),o=e.replace(i,"").trim(),l={locale:Ie.settings.locale},s=gr.fromFormat(i,Ie.settings.dateDay?fM:lM,l),a=gr.fromFormat(i,Ie.settings.dateDay?pM:cM,l),u=s.isValid?s:a.isValid?a:!1,f=String(Mr.evaluate(o+" to hours",Ie.mathScope)),p=Number(f.split(" ")[0]);if(u)e=`"${u.plus({hours:p}).toFormat(s.isValid?Ie.settings.dateDay?fM:lM:Ie.settings.dateDay?pM:cM)}"`;else return"Invalid Date"}let r=/%[ ]*of[ ]*/g,n=/[\w.]*%[ ]*of[ ]*/g;return e.match(n)&&(e=e.replaceAll(r,"/100*")),Mr.evaluate(e,Ie.mathScope)}function q$(e){let t=e.length;return e.charAt(0)==='"'&&(e=e.substring(1,t--)),e.charAt(--t)==='"'&&(e=e.substring(0,t)),e}function Xv(e,t){if(e=String(e),["bin","hex","oct"].includes(Ie.settings.notation))return q$(e);let r=e.trim().split(" ")[0],n=e.replace(r,""),i={maximumFractionDigits:Ie.settings.precision,useGrouping:t?Ie.settings.copyThouSep:Ie.settings.thouSep};return!r.includes("e")&&!isNaN(r)?Number(r).toLocaleString(Ie.settings.locale,i)+n:r.match(/e[+-]?\d+/)&&!isNaN(r.split("e")[0])?Number(r.split("e")[0]).toLocaleString(Ie.settings.locale,i)+"e"+e.split("e")[1]:q$(e)}var _o=fn(Yg(),1),Ca=fn($s(),1),zct=fn(H$(),1),Uct=fn(Ub(),1),Hct=fn(Y$(),1),$ct=fn(K$(),1),Wct=fn(j$(),1),Vct=fn(rW(),1),Gct=fn(oW(),1),Yct=fn(fW(),1),Zct=fn(hM(),1),Ot=Ca.default.fromTextArea(ke("#inputArea"),{autofocus:!0,coverGutterNextToScrollbar:!0,extraKeys:{"Ctrl-Space":"autocomplete"},flattenSpans:!0,mode:"numara",smartIndent:!1,theme:"numara",viewportMargin:1/0}),cW={autoCloseBrackets:!0,autofocus:!0,mode:"javascript",tabSize:2},sye=`xyz: (x, y, z) => { +
    `}),Le("#output").innerHTML=e;let l=Ub.map(a=>a.text);if(Object.keys(ke.mathScope).filter(a=>!l.includes(a)).forEach(a=>{!Na.some(u=>u.text===a)&&a!=="line"+Ot.lineCount()&&Na.push({text:a,desc:"Variable",className:"cm-variable"})}),ke.activePage){let a=bt.get("pages"),u=a.find(f=>f.id===ke.activePage);u.data=Ot.getValue(),u.history=Ot.getHistory(),bt.set("pages",a)}}function lye(e){if(e.match(/:/))try{_r.evaluate(e.split(":")[0])}catch{e=e.substring(e.indexOf(":")+1)}let t=/[+-] * .* *(millisecond|second|minute|hour|day|week|month|quarter|year|decade|century|centuries|millennium|millennia)s?/g;if(e.match(t)){e=e.replace("now",ke.mathScope.now).replace("today",ke.mathScope.today);let i=e.replace(t,"").trim(),o=e.replace(i,"").trim(),l={locale:ke.settings.locale},s=vr.fromFormat(i,ke.settings.dateDay?gM:hM,l),a=vr.fromFormat(i,ke.settings.dateDay?xM:vM,l),u=s.isValid?s:a.isValid?a:!1,f=String(_r.evaluate(o+" to hours",ke.mathScope)),p=Number(f.split(" ")[0]);if(u)e=`"${u.plus({hours:p}).toFormat(s.isValid?ke.settings.dateDay?gM:hM:ke.settings.dateDay?xM:vM)}"`;else return"Invalid Date"}let r=/%[ ]*of[ ]*/g,n=/[\w.]*%[ ]*of[ ]*/g;return e.match(n)&&(e=e.replaceAll(r,"/100*")),_r.evaluate(e,ke.mathScope)}function G$(e){let t=e.length;return e.charAt(0)==='"'&&(e=e.substring(1,t--)),e.charAt(--t)==='"'&&(e=e.substring(0,t)),e}function Qv(e,t){if(e=String(e),["bin","hex","oct"].includes(ke.settings.notation))return G$(e);let r=e.trim().split(" ")[0],n=e.replace(r,""),i={maximumFractionDigits:ke.settings.precision,useGrouping:t?ke.settings.copyThouSep:ke.settings.thouSep};return!r.includes("e")&&!isNaN(r)?Number(r).toLocaleString(ke.settings.locale,i)+n:r.match(/e[+-]?\d+/)&&!isNaN(r.split("e")[0])?Number(r.split("e")[0]).toLocaleString(ke.settings.locale,i)+"e"+e.split("e")[1]:G$(e)}var _o=mn(Xg(),1),Aa=mn($s(),1),$ct=mn(X$(),1),Wct=mn(Hb(),1),Vct=mn(eW(),1),Gct=mn(nW(),1),Yct=mn(aW(),1),Zct=mn(lW(),1),Xct=mn(pW(),1),Kct=mn(vW(),1),Jct=mn(bM(),1),Ot=Aa.default.fromTextArea(Le("#inputArea"),{autofocus:!0,coverGutterNextToScrollbar:!0,extraKeys:{"Ctrl-Space":"autocomplete"},flattenSpans:!0,mode:"numara",smartIndent:!1,theme:"numara",viewportMargin:1/0}),xW={autoCloseBrackets:!0,autofocus:!0,mode:"javascript",tabSize:2},fye=`xyz: (x, y, z) => { return x+y+z }, -myConstant: 123`,uye=`foo: "18 foot", -bar: "40 foo"`;ke("#udfInput").setAttribute("placeholder",sye);ke("#uduInput").setAttribute("placeholder",uye);var Ou=Ca.default.fromTextArea(ke("#udfInput"),cW),Fu=Ca.default.fromTextArea(ke("#uduInput"),cW);function Hb(e){e.refresh(),setTimeout(()=>{e.focus()},100)}Ca.default.defineMode("numara",()=>({token:e=>{if(e.match(/\/\/.*/)||e.match(/#.*/))return"comment";if(e.match(/\d/))return"number";if(e.match(/(?:\+|-|\*|\/|,|;|\.|:|@|~|=|>|<|&|\||`|'|\^|\?|!|%)/))return"operator";if(e.match(/\b(?:xls.)\b/))return"formulajs";e.eatWhile(/\w/);let t=e.current();if(Ie.settings.currency&&(Object.keys(Ie.currencyRates).some(r=>Ie.currencyRates[r].code===t)||t==="USD"))return"currency";if(typeof Mr[t]=="function"&&Object.getOwnPropertyNames(Mr[t]).includes("signatures"))return"function";if(Ie.udfList.includes(t))return"udf";if(Ie.uduList.includes(t))return"udu";if(t.match(/\b(?:_|ans|total|subtotal|avg|today|now)\b/))return"keyword";if(t.match(/\b(?:line\d+)\b/))return"lineNo";if(typeof Hd[t]=="function"&&e.string.startsWith("xls."))return"excel";try{let r=Mr.evaluate(t),n=Mr.parse(t);if(r.units&&r)return"unit";if(n.isSymbolNode&&r)return"constant"}catch{}try{Mr.evaluate(t)}catch{return"variable"}return e.next(),"space"}}));Ca.default.defineMode("plain",()=>({token:e=>(e.next(),"text")}));var Ea=[],zb=[{text:"_",desc:"Answer from last calculated line"},{text:"ans",desc:"Answer from last calculated line"},{text:"avg",desc:"Average of previous line values. Numbers only."},{text:"now",desc:"Current date and time"},{text:"subtotal",desc:"Total of all lines in previous block. Numbers only."},{text:"today",desc:"Current date"},{text:"total",desc:"Total of previous line values. Numbers only."}];zb.forEach(e=>{e.className="cm-keyword",Ea.push(e)});Object.getOwnPropertyNames(Mr).forEach(e=>{typeof Mr[e]=="function"&&Object.getOwnPropertyNames(Mr[e]).includes("signatures")&&Ea.push({text:e,className:"cm-function"})});Object.keys(Hd).forEach(e=>{Ea.push({text:"xls."+e,className:"cm-excel"})});Object.values(Mr.Unit.UNITS).flatMap(e=>{Object.values(e.prefixes).forEach(t=>{let r=e.base.key.replaceAll("_"," ").toLowerCase(),n=r.charAt(0).toUpperCase()+r.slice(1);Ea.push({text:t.name+e.name,desc:n+" unit",className:"cm-unit"})})});Ca.default.registerHelper("hint","numaraHints",e=>{let t=e.getCursor(),r=e.getLine(t.line),n=t.ch,i=n;for(;ia.match(s)).sort((a,u)=>a.text.localeCompare(u.text)):[],from:Ca.default.Pos(t.line,n),to:Ca.default.Pos(t.line,i)}});Ca.default.commands.autocomplete=e=>{Ca.default.showHint(e,Ca.default.hint.numaraHints,{completeSingle:!1,extraKeys:{Enter:"newline"}})};function pW(){let e=Ot.display.lineDiv.children[Ot.getCursor().line].getBoundingClientRect().top,t=ke(".CodeMirror-hscrollbar").getBoundingClientRect().top,r=+Ie.settings.lineHeight.replace("px","")+1;t-e{Ie.settings.autocomplete&&Ca.default.commands.autocomplete(e)});Ot.on("cursorActivity",e=>{let t=e.getCursor().line;e.eachLine(i=>{let o=e.getLineNumber(i);o===t?e.addLineClass(o,"gutter","activeLine"):e.removeLineClass(o,"gutter","activeLine")}),setTimeout(pW,20);let r=bt.get("pages"),n=r.find(i=>i.id==Ie.activePage);n.cursor=e.getCursor(),bt.set("pages",r)});Ot.on("gutterClick",(e,t)=>{let r=t+1;e.replaceSelection("line"+r)});Ot.on("scrollCursorIntoView",pW);var Aa=e=>e.nodeName.toLowerCase()==="li"?"right":"top-left";document.addEventListener("mouseover",e=>{if(Ie.settings.keywordTips&&e.target.classList[0]?.startsWith("cm-")){switch(e.target.classList[0]){case"cm-function":try{let t=JSON.parse(JSON.stringify(Mr.help(e.target.innerText).toJSON()));_o.default.tooltip(e.target,{pos:Aa(e.target),title:t.description})}catch{_o.default.tooltip(e.target,{pos:Aa(e.target),title:"Description not available"})}break;case"cm-udf":_o.default.tooltip(e.target,{pos:Aa(e.target),title:"User defined function"});break;case"cm-udu":_o.default.tooltip(e.target,{pos:Aa(e.target),title:"User defined unit"});break;case"cm-currency":try{let t=e.target.innerText,r=t==="USD"?"U.S. Dollar":Ie.currencyRates[t.toLowerCase()].name;_o.default.tooltip(e.target,{pos:Aa(e.target),title:r})}catch{_o.default.tooltip(e.target,{pos:Aa(e.target),title:"Description not available"})}break;case"cm-unit":{_o.default.tooltip(e.target,{pos:Aa(e.target),title:Ea.find(t=>t.text===e.target.innerText).desc});break}case"cm-constant":try{_o.default.tooltip(e.target,{pos:Aa(e.target),title:Mr.help(e.target.innerText).doc.description+" (Constant)"})}catch{}break;case"cm-variable":if(Ie.mathScope[e.target.innerText]&&typeof Ie.mathScope[e.target.innerText]!="function"){let t;try{t=Xv(Mr.evaluate(e.target.innerText,Ie.mathScope))}catch{t="Undefined"}_o.default.tooltip(e.target,{pos:Aa(e.target),title:t})}break;case"cm-lineNo":{let t;try{t=typeof Ie.mathScope[e.target.innerText]=="function"?"Function":Xv(Mr.evaluate(e.target.innerText,Ie.mathScope))}catch{t="Undefined"}_o.default.tooltip(e.target,{pos:Aa(e.target),title:t});break}case"cm-keyword":_o.default.tooltip(e.target,{pos:Aa(e.target),title:zb.filter(t=>e.target.innerText===t.text)[0].desc});break;case"cm-formulajs":_o.default.tooltip(e.target,{pos:Aa(e.target),title:"Formulajs"});break;case"cm-excel":_o.default.tooltip(e.target,{pos:Aa(e.target),title:"Excel function"});break}_o.default.tooltip(e.target).show()}});function lye(){setTimeout(()=>{let e=Ot.getCursor().line,t=Ot.getLine(e),r=ke("#output").children[e].innerText,n=Ot.getValue()==="",i=t.length>0,o=Ot.somethingSelected(),l=Ot.listSelections().length>1||Ot.listSelections()[0].anchor.line!==Ot.listSelections()[0].head.line,s=r!==""&&r!=="Error"&&r!=="Plot";numara.inputContextMenu(e,n,i,o,l,s)},20)}function fye(e){let t=e.srcElement.innerText,r=e.srcElement.dataset.line||e.srcElement.parentElement.dataset.line||Ot.lastLine(),n=r!==null&&t!==""&&t!=="Error"&&t!=="Plot",i=Ot.getValue()==="";numara.outputContextMenu(r,i,n)}function gM(){setTimeout(()=>{numara.textboxContextMenu()},20)}function cye(e,t){t=+t;let r=Ot.getLine(t).trim();navigator.clipboard.writeText(r).then(In(`Copied Line ${t+1} to clipboard.`))}function mW(e,t,r){t=+t;let n=Ot.getLine(t).trim(),i=ke("#output").children[t].children[0].dataset.copy,o=r?`${n} = ${i}`:`${i}`;navigator.clipboard.writeText(o).then(In(r?`Copied Line ${t+1} with answer to clipboard.`:`Copied '${i}' to clipboard.`))}function pye(){Ot.getValue()===""?In("Nothing to copy."):navigator.clipboard.writeText(Ot.getValue()).then(In("Copied all lines to clipboard."))}function mye(){if(Ot.getValue()==="")In("Nothing to copy.");else{let e="";Ot.eachLine(t=>{let r=Ot.getLineNumber(t);e+=`${ke("#output").children[r].innerText} -`}),navigator.clipboard.writeText(e).then(In("Copied all answers to clipboard."))}}function vM(){if(Ot.getValue()==="")In("Nothing to copy.");else{let e="";Ot.eachLine(t=>{let r=Ot.getLineNumber(t);t=t.text.trim(),e+=t?t.match(/^(#|\/\/)/)?`${t} -`:`${t} = ${ke("#output").children[r].innerText} +myConstant: 123`,cye=`foo: "18 foot", +bar: "40 foo"`;Le("#udfInput").setAttribute("placeholder",fye);Le("#uduInput").setAttribute("placeholder",cye);var Ru=Aa.default.fromTextArea(Le("#udfInput"),xW),qu=Aa.default.fromTextArea(Le("#uduInput"),xW);function $b(e){e.refresh(),setTimeout(()=>{e.focus()},100)}Aa.default.defineMode("numara",()=>({token:e=>{if(e.match(/\/\/.*/)||e.match(/#.*/))return"comment";if(e.match(/\d/))return"number";if(e.match(/(?:\+|-|\*|\/|,|;|\.|:|@|~|=|>|<|&|\||`|'|\^|\?|!|%)/))return"operator";if(e.match(/\b(?:xls.)\b/))return"formulajs";e.eatWhile(/\w/);let t=e.current();if(ke.settings.currency&&(Object.keys(ke.currencyRates).some(r=>ke.currencyRates[r].code===t)||t==="USD"))return"currency";if(typeof _r[t]=="function"&&Object.getOwnPropertyNames(_r[t]).includes("signatures"))return"function";if(ke.udfList.includes(t))return"udf";if(ke.uduList.includes(t))return"udu";if(t.match(/\b(?:_|ans|total|subtotal|avg|today|now)\b/))return"keyword";if(t.match(/\b(?:line\d+)\b/))return"lineNo";if(typeof Yd[t]=="function"&&e.string.startsWith("xls."))return"excel";try{let r=_r.evaluate(t),n=_r.parse(t);if(r.units&&r)return"unit";if(n.isSymbolNode&&r)return"constant"}catch{}try{_r.evaluate(t)}catch{return"variable"}return e.next(),"space"}}));Aa.default.defineMode("plain",()=>({token:e=>(e.next(),"text")}));var Na=[],Ub=[{text:"_",desc:"Answer from last calculated line"},{text:"ans",desc:"Answer from last calculated line"},{text:"avg",desc:"Average of previous line values. Numbers only."},{text:"now",desc:"Current date and time"},{text:"subtotal",desc:"Total of all lines in previous block. Numbers only."},{text:"today",desc:"Current date"},{text:"total",desc:"Total of previous line values. Numbers only."}];Ub.forEach(e=>{e.className="cm-keyword",Na.push(e)});Object.getOwnPropertyNames(_r).forEach(e=>{typeof _r[e]=="function"&&Object.getOwnPropertyNames(_r[e]).includes("signatures")&&Na.push({text:e,className:"cm-function"})});Object.keys(Yd).forEach(e=>{Na.push({text:"xls."+e,className:"cm-excel"})});Object.values(_r.Unit.UNITS).flatMap(e=>{Object.values(e.prefixes).forEach(t=>{let r=e.base.key.replaceAll("_"," ").toLowerCase(),n=r.charAt(0).toUpperCase()+r.slice(1);Na.push({text:t.name+e.name,desc:n+" unit",className:"cm-unit"})})});Aa.default.registerHelper("hint","numaraHints",e=>{let t=e.getCursor(),r=e.getLine(t.line),n=t.ch,i=n;for(;ia.match(s)).sort((a,u)=>a.text.localeCompare(u.text)):[],from:Aa.default.Pos(t.line,n),to:Aa.default.Pos(t.line,i)}});Aa.default.commands.autocomplete=e=>{Aa.default.showHint(e,Aa.default.hint.numaraHints,{completeSingle:!1,extraKeys:{Enter:"newline"}})};function yW(){let e=Ot.display.lineDiv.children[Ot.getCursor().line].getBoundingClientRect().top,t=Le(".CodeMirror-hscrollbar").getBoundingClientRect().top,r=+ke.settings.lineHeight.replace("px","")+1;t-e{ke.settings.autocomplete&&Aa.default.commands.autocomplete(e)});Ot.on("cursorActivity",e=>{let t=e.getCursor().line;e.eachLine(i=>{let o=e.getLineNumber(i);o===t?e.addLineClass(o,"gutter","activeLine"):e.removeLineClass(o,"gutter","activeLine")}),setTimeout(yW,20);let r=bt.get("pages"),n=r.find(i=>i.id==ke.activePage);n.cursor=e.getCursor(),bt.set("pages",r)});Ot.on("gutterClick",(e,t)=>{let r=t+1;e.replaceSelection("line"+r)});Ot.on("scrollCursorIntoView",yW);var Ea=e=>e.nodeName.toLowerCase()==="li"?"right":"top-left";document.addEventListener("mouseover",e=>{if(ke.settings.keywordTips&&e.target.classList[0]?.startsWith("cm-")){switch(e.target.classList[0]){case"cm-function":try{let t=JSON.parse(JSON.stringify(_r.help(e.target.innerText).toJSON()));_o.default.tooltip(e.target,{pos:Ea(e.target),title:t.description})}catch{_o.default.tooltip(e.target,{pos:Ea(e.target),title:"Description not available"})}break;case"cm-udf":_o.default.tooltip(e.target,{pos:Ea(e.target),title:"User defined function"});break;case"cm-udu":_o.default.tooltip(e.target,{pos:Ea(e.target),title:"User defined unit"});break;case"cm-currency":try{let t=e.target.innerText,r=t==="USD"?"U.S. Dollar":ke.currencyRates[t.toLowerCase()].name;_o.default.tooltip(e.target,{pos:Ea(e.target),title:r})}catch{_o.default.tooltip(e.target,{pos:Ea(e.target),title:"Description not available"})}break;case"cm-unit":{_o.default.tooltip(e.target,{pos:Ea(e.target),title:Na.find(t=>t.text===e.target.innerText).desc});break}case"cm-constant":try{_o.default.tooltip(e.target,{pos:Ea(e.target),title:_r.help(e.target.innerText).doc.description+" (Constant)"})}catch{}break;case"cm-variable":if(ke.mathScope[e.target.innerText]&&typeof ke.mathScope[e.target.innerText]!="function"){let t;try{t=Qv(_r.evaluate(e.target.innerText,ke.mathScope))}catch{t="Undefined"}_o.default.tooltip(e.target,{pos:Ea(e.target),title:t})}break;case"cm-lineNo":{let t;try{t=typeof ke.mathScope[e.target.innerText]=="function"?"Function":Qv(_r.evaluate(e.target.innerText,ke.mathScope))}catch{t="Undefined"}_o.default.tooltip(e.target,{pos:Ea(e.target),title:t});break}case"cm-keyword":_o.default.tooltip(e.target,{pos:Ea(e.target),title:Ub.filter(t=>e.target.innerText===t.text)[0].desc});break;case"cm-formulajs":_o.default.tooltip(e.target,{pos:Ea(e.target),title:"Formulajs"});break;case"cm-excel":_o.default.tooltip(e.target,{pos:Ea(e.target),title:"Excel function"});break}_o.default.tooltip(e.target).show()}});function pye(){setTimeout(()=>{let e=Ot.getCursor().line,t=Ot.getLine(e),r=Le("#output").children[e].innerText,n=Ot.getValue()==="",i=t.length>0,o=Ot.somethingSelected(),l=Ot.listSelections().length>1||Ot.listSelections()[0].anchor.line!==Ot.listSelections()[0].head.line,s=r!==""&&r!=="Error"&&r!=="Plot";numara.inputContextMenu(e,n,i,o,l,s)},20)}function mye(e){let t=e.srcElement.innerText,r=e.srcElement.dataset.line||e.srcElement.parentElement.dataset.line||Ot.lastLine(),n=r!==null&&t!==""&&t!=="Error"&&t!=="Plot",i=Ot.getValue()==="";numara.outputContextMenu(r,i,n)}function DM(){setTimeout(()=>{numara.textboxContextMenu()},20)}function dye(e,t){t=+t;let r=Ot.getLine(t).trim();navigator.clipboard.writeText(r).then(Bn(`Copied Line ${t+1} to clipboard.`))}function wW(e,t,r){t=+t;let n=Ot.getLine(t).trim(),i=Le("#output").children[t].children[0].dataset.copy,o=r?`${n} = ${i}`:`${i}`;navigator.clipboard.writeText(o).then(Bn(r?`Copied Line ${t+1} with answer to clipboard.`:`Copied '${i}' to clipboard.`))}function hye(){Ot.getValue()===""?Bn("Nothing to copy."):navigator.clipboard.writeText(Ot.getValue()).then(Bn("Copied all lines to clipboard."))}function gye(){if(Ot.getValue()==="")Bn("Nothing to copy.");else{let e="";Ot.eachLine(t=>{let r=Ot.getLineNumber(t);e+=`${Le("#output").children[r].innerText} +`}),navigator.clipboard.writeText(e).then(Bn("Copied all answers to clipboard."))}}function SM(){if(Ot.getValue()==="")Bn("Nothing to copy.");else{let e="";Ot.eachLine(t=>{let r=Ot.getLineNumber(t);t=t.text.trim(),e+=t?t.match(/^(#|\/\/)/)?`${t} +`:`${t} = ${Le("#output").children[r].innerText} `:` -`}),navigator.clipboard.writeText(e).then(In("Copied page to clipboard."))}}di&&(Ot.on("contextmenu",lye),Ou.on("contextmenu",gM),Fu.on("contextmenu",gM),ke("#output").addEventListener("contextmenu",fye),io(".textBox").forEach(e=>{e.addEventListener("contextmenu",gM)}),numara.copyLine(cye),numara.copyAnswer(mW),numara.copyLineWithAnswer(mW),numara.copyAllLines(pye),numara.copyAllAnswers(mye),numara.copyAll(vM));var $b="numara",dW="Numara",hW="Numara Calculator",xM="5.7.0",yM={name:"Timur Atalay",email:"mail@numara.io",url:"https://numara.io"};var Wb="https://github.com/bornova/numara-calculator";var lte=fn(ute(),1);function dc(){ke("#plotTitle").innerHTML=Ie.plotFunction;let e=Mr.simplify(Ie.plotFunction.split("=")[1],Ie.mathScope).toString(),t=Mr.abs(Mr.evaluate(e,{x:0}))*2;(t===1/0||t===0)&&(t=10);let r=Ie.activePlot?Ie.activePlot.meta.xScale.domain():[-t,t],n=Ie.activePlot?Ie.activePlot.meta.yScale.domain():[-t,t];Ie.activePlot=lte.default.default({data:[{derivative:Ie.settings.plotDerivative?{fn:Mr.derivative(e,"x").toString(),updateOnMouseMove:!0}:!1,fn:e,graphType:"polyline",sampler:"builtIn"}],grid:Ie.settings.plotGrid,height:ke("#plot").clientHeight,target:"#plot",tip:{xLine:Ie.settings.plotCross,yLine:Ie.settings.plotCross},width:ke("#plot").clientWidth,xAxis:{domain:r},yAxis:{domain:n}})}ke("#plotCrossModal").addEventListener("click",()=>{Ie.settings.plotCross=ke("#plotCrossModal").checked,bt.set("settings",Ie.settings),dc()});ke("#plotDerivativeModal").addEventListener("click",()=>{Ie.settings.plotDerivative=ke("#plotDerivativeModal").checked,bt.set("settings",Ie.settings),dc()});ke("#plotGridModal").addEventListener("click",()=>{Ie.settings.plotGrid=ke("#plotGridModal").checked,bt.set("settings",Ie.settings),dc()});ke("#exportPlot").addEventListener("click",()=>{ke(".function-plot").setAttribute("xmlns","http://www.w3.org/2000/svg");let e=dW+" Plot "+Ie.plotFunction,t=`\r -`,r=ke(".function-plot").outerHTML,n=new Blob([t,r],{type:"image/svg+xml;charset=utf-8"}),i=document.createElement("a");i.href=URL.createObjectURL(n),i.download=e,i.click(),setTimeout(()=>URL.revokeObjectURL(i.href),6e4)});ke("#resetPlot").addEventListener("click",()=>{Ie.activePlot=null,dc()});Mr.createUnit("USD");Ea.push({text:"USD",desc:"U.S. Dollar",className:"cm-currency"});function Hh(){let e="https://www.floatrates.com/widget/1030/cfc5515dfc13ada8d7b0e50b8143d55f/usd.json";navigator.onLine?(ke("#lastUpdated").innerHTML='
    ',fetch(e).then(t=>t.json()).then(t=>{Ie.currencyRates=t,Object.keys(t).forEach(r=>{Mr.createUnit(t[r].code,{definition:Mr.unit(t[r].inverseRate+"USD")},{override:!0}),Ea.some(n=>n.text===t[r].code)||Ea.push({text:t[r].code,desc:t[r].name,className:"cm-currency"}),bt.set("rateDate",t[r].date)}),ke("#lastUpdated").innerHTML=bt.get("rateDate"),Ot.setOption("mode",Ie.settings.syntax?"numara":"plain"),_u()}).catch(t=>{ke("#lastUpdated").innerHTML="n/a",In("Failed to get exchange rates ("+t+")","warning")})):(ke("#lastUpdated").innerHTML="No internet connection.",In("No internet connection. Could not update exchange rates.","warning"))}var AS=fn(eE(),1);function fte(){ke("#defaultSettingsButton").style.display=AS.default.diff(Ie.settings,un.defaults)?"inline":"none"}function cte(){ke("#bigNumWarn").style.display=Ie.settings.numericOutput==="BigNumber"?"inline-block":"none"}function pte(){ke("#localeWarn").style.display=t1()?"inline-block":"none"}function mte(e){ke("#"+e+"Mod").style.display=Ie.settings[e]!==un.defaults[e]?"inline-block":"none"}function MEe(){Ie.settings=bt.get("settings"),AS.default.observableDiff(Ie.settings,un.defaults,e=>{e.kind!=="E"&&(AS.default.applyChange(Ie.settings,un.defaults,e),bt.set("settings",Ie.settings))})}var $h,un={defaults:{alwaysOnTop:!1,autocomplete:!0,closeBrackets:!0,contPrevLine:!0,copyThouSep:!1,currency:!0,currencyInterval:"0",dateDay:!1,divider:!0,expLower:"-12",expUpper:"12",fontSize:"1.1rem",fontWeight:"400",inputWidth:60,keywordTips:!0,lineErrors:!0,lineHeight:"24px",lineNumbers:!0,lineWrap:!0,locale:"system",matchBrackets:!0,matrixType:"Matrix",notation:"auto",notifyDuration:"5000",notifyLocation:"bottom-center",numericOutput:"number",plotCross:!1,plotDerivative:!1,plotGrid:!1,precision:"4",predictable:!1,rulers:!1,syntax:!0,theme:"system",thouSep:!0},initialize:()=>{if(bt.get("settings")?MEe():bt.set("settings",un.defaults),Ie.settings=bt.get("settings"),Ie.settings.currency&&Hh(),Ie.settings.lineHeight.endsWith("em")){switch(Ie.settings.lineHeight){case"1.5em":Ie.settings.lineHeight="16px";break;case"1.75em":Ie.settings.lineHeight="20px";break;case"2em":Ie.settings.lineHeight="24px";break;case"2.5em":Ie.settings.lineHeight="28px";break;case"3em":Ie.settings.lineHeight="32px";break}bt.set("settings",Ie.settings)}un.apply(),io(".settingItem").forEach(e=>{let t=document.createElement("span"),r=document.createElement("span");r.setAttribute("data-lucide","dot"),t.setAttribute("id",e.getAttribute("id")+"Mod"),t.setAttribute("class",e.getAttribute("type")==="checkbox"?"settingModToggle":"settingMod"),t.appendChild(r),t.addEventListener("click",()=>{let n=e.getAttribute("id");Ie.settings[n]=un.defaults[n],un.prep(),un.save(),un.apply()}),e.getAttribute("type")==="checkbox"?e.parentElement.before(t):e.before(t),Af()})},prep:()=>{let e=[["System","system"],["Chinese (PRC)","zh-CN"],["English (Canada)","en-CA"],["English (UK)","en-GB"],["English (US)","en-US"],["French (France)","fr-FR"],["German (Germany)","de-DE"],["Italian (Italy)","it-IT"],["Japanese (Japan)","ja-JP"],["Portuguese (Brazil)","pt-BR"],["Russian (Russia)","ru-RU"],["Spanish (Mexico)","es-MX"],["Spanish (Spain)","es-ES"],["Turkish (Turkey)","tr-TR"]],t=["Matrix","Array"],r=["number","BigNumber","Fraction"],n=["auto","engineering","exponential","fixed","-","bin","hex","oct"];ke("#locale").innerHTML="";for(let i of e)ke("#locale").innerHTML+=``;ke("#precision-label").innerHTML=Ie.settings.precision,ke("#expLower-label").innerHTML=Ie.settings.expLower,ke("#expUpper-label").innerHTML=Ie.settings.expUpper,ke("#numericOutput").innerHTML="";for(let i of r)ke("#numericOutput").innerHTML+=``;ke("#notation").innerHTML="";for(let i of n)ke("#notation").innerHTML+=i==="-"?"":``;ke("#matrixType").innerHTML="";for(let i of t)ke("#matrixType").innerHTML+=``;ke("#lastUpdated").innerHTML=Ie.settings.currency?bt.get("rateDate"):"",ke("#currencyUpdate").style.visibility=Ie.settings.currency?"visible":"hidden",Object.keys(Ie.settings).forEach(i=>{let o=ke("#"+i);o&&(o.getAttribute("type")==="checkbox"?o.checked=Ie.settings[i]:o.value=Ie.settings[i],mte(i))}),r1(),fte(),pte(),cte(),un.toggleSubs()},apply:()=>{let e=Zg();ke("#style").setAttribute("href","css/"+e+".css"),ke("#numaraLogo").setAttribute("src","assets/logo-"+e+".png"),setTimeout(()=>{hi.apply()},50);let t=Ie.settings.theme==="system"?di&&numara.isDark()?"material-darker":"default":Ie.settings.theme==="light"?"default":"material-darker";Ou.setOption("theme",t),Fu.setOption("theme",t),di&&(numara.setTheme(Ie.settings.theme),numara.setOnTop(Ie.settings.alwaysOnTop));let r=io(".panelFont, .input .CodeMirror");for(let n of r)n.style.fontSize=Ie.settings.fontSize,n.style.fontWeight=Ie.settings.fontWeight,n.style.setProperty("line-height",Ie.settings.lineHeight,"important");ke("#input").style.width=(Ie.settings.divider?Ie.settings.inputWidth:un.defaults.inputWidth)+"%",ke("#panelDivider").style.display=Ie.settings.divider?"block":"none",ke("#output").style.textAlign=Ie.settings.divider?"left":"right",Ot.setOption("mode",Ie.settings.syntax?"numara":"plain"),Ot.setOption("lineNumbers",Ie.settings.lineNumbers),Ot.setOption("lineWrapping",Ie.settings.lineWrap),Ot.setOption("matchBrackets",Ie.settings.syntax&&Ie.settings.matchBrackets?{maxScanLines:1}:!1),Ot.setOption("autoCloseBrackets",Ie.settings.closeBrackets),Mr.config({matrix:Ie.settings.matrixType,number:Ie.settings.numericOutput,predictable:Ie.settings.predictable}),Ie.settings.currency&&(Ie.settings.currencyInterval==="0"?(clearInterval($h),bt.set("rateInterval",!1)):(clearInterval($h),$h=setInterval(Hh,+Ie.settings.currencyInterval),bt.set("rateInterval",!0))),Ie.settings.currencyInterval==="0"?clearInterval($h):(clearInterval($h),$h=setInterval(Hh,+Ie.settings.currencyInterval)),setTimeout(_u,10)},save:()=>{Object.keys(Ie.settings).forEach(e=>{let t=ke("#"+e);t&&(Ie.settings[e]=t.getAttribute("type")==="checkbox"?t.checked:t.value,mte(e))}),ke("#currency").checked||(localStorage.removeItem("rateDate"),Ie.currencyRates={}),ke("#currencyUpdate").style.visibility=ke("#currency").checked?"visible":"hidden",ke("#currencyWarn").style.display=Ie.settings.currency?"none":"inline-block",!bt.get("rateDate")&&Ie.settings.currency&&Hh(),fte(),pte(),cte(),un.toggleSubs(),bt.set("settings",Ie.settings)},toggleSubs:()=>{ke("#expUpper").disabled=Ie.settings.notation!=="auto",ke("#expLower").disabled=Ie.settings.notation!=="auto",ke("#keywordTips").disabled=!Ie.settings.syntax,ke("#matchBrackets").disabled=!Ie.settings.syntax,ke("#copyThouSep").disabled=!Ie.settings.thouSep,ke("#currencyInterval").disabled=!Ie.settings.currency,ke("#updateRatesLink").dataset.enabled=Ie.settings.currency,ke("#expUpper").parentNode.style.opacity=Ie.settings.notation==="auto"?"1":"0.5",ke("#expLower").parentNode.style.opacity=Ie.settings.notation==="auto"?"1":"0.5",ke("#keywordTips").parentNode.style.opacity=Ie.settings.syntax?"1":"0.5",ke("#matchBrackets").parentNode.style.opacity=Ie.settings.syntax?"1":"0.5",ke("#copyThouSep").parentNode.style.opacity=Ie.settings.thouSep?"1":"0.5",ke("#expUpperMod").style.pointerEvents=Ie.settings.notation==="auto"?"auto":"none",ke("#expLowerMod").style.pointerEvents=Ie.settings.notation==="auto"?"auto":"none",ke("#keywordTipsMod").style.pointerEvents=Ie.settings.syntax?"auto":"none",ke("#matchBracketsMod").style.pointerEvents=Ie.settings.syntax?"auto":"none",ke("#copyThouSepMod").style.pointerEvents=Ie.settings.thouSep?"auto":"none",ke("#expUpperMod").parentNode.style.opacity=Ie.settings.notation==="auto"?"1":"0.5",ke("#expLowerMod").parentNode.style.opacity=Ie.settings.notation==="auto"?"1":"0.5",ke("#keywordTipsMod").parentNode.style.opacity=Ie.settings.syntax?"1":"0.5",ke("#matchBracketsMod").parentNode.style.opacity=Ie.settings.syntax?"1":"0.5",ke("#copyThouSepMod").parentNode.style.opacity=Ie.settings.thouSep?"1":"0.5"}};ke("#defaultSettingsButton").addEventListener("click",()=>{Cf("All settings will revert back to defaults.",()=>{Ie.settings=JSON.parse(JSON.stringify(un.defaults)),Ie.colors=JSON.parse(JSON.stringify(hi.defaults)),bt.set("settings",Ie.settings),bt.set("colors",Ie.colors),un.prep(),un.save(),un.apply()})});ke("#dialog-settings-reset").addEventListener("click",()=>{Cf("All user settings and data will be lost.",()=>{di?numara.resetApp():(localStorage.clear(),location.reload())})});di&&ke("#resetSizeButton").addEventListener("click",numara.resetSize);ke("#localeWarn").addEventListener("click",()=>{bu("Caution: Locale",`Your locale (${Ie.settings.locale}) uses comma (,) as decimal separator. Therefore, you must use semicolon (;) as argument separator when using functions.

    Ex. sum(1;3) // 4`)});ke("#bigNumWarn").addEventListener("click",()=>{bu("Caution: BigNumber Limitations",`Using the BigNumber may break function plotting and is not compatible with some math functions. +`}),navigator.clipboard.writeText(e).then(Bn("Copied page to clipboard."))}}hi&&(Ot.on("contextmenu",pye),Ru.on("contextmenu",DM),qu.on("contextmenu",DM),Le("#output").addEventListener("contextmenu",mye),uo(".textBox").forEach(e=>{e.addEventListener("contextmenu",DM)}),numara.copyLine(dye),numara.copyAnswer(wW),numara.copyLineWithAnswer(wW),numara.copyAllLines(hye),numara.copyAllAnswers(gye),numara.copyAll(SM));var Wb="numara",bW="Numara",DW="Numara Calculator",NM="5.7.1",EM={name:"Timur Atalay",email:"mail@numara.io",url:"https://numara.io"};var Vb="https://github.com/bornova/numara-calculator";var gte=mn(hte(),1);function Ac(){Le("#plotTitle").innerHTML=ke.plotFunction;let e=_r.simplify(ke.plotFunction.split("=")[1],ke.mathScope).toString(),t=_r.abs(_r.evaluate(e,{x:0}))*2;(t===1/0||t===0)&&(t=10);let r=ke.activePlot?ke.activePlot.meta.xScale.domain():[-t,t],n=ke.activePlot?ke.activePlot.meta.yScale.domain():[-t,t];ke.activePlot=gte.default.default({data:[{derivative:ke.settings.plotDerivative?{fn:_r.derivative(e,"x").toString(),updateOnMouseMove:!0}:!1,fn:e,graphType:"polyline",sampler:"builtIn"}],grid:ke.settings.plotGrid,height:Le("#plot").clientHeight,target:"#plot",tip:{xLine:ke.settings.plotCross,yLine:ke.settings.plotCross},width:Le("#plot").clientWidth,xAxis:{domain:r},yAxis:{domain:n}})}Le("#plotCrossModal").addEventListener("click",()=>{ke.settings.plotCross=Le("#plotCrossModal").checked,bt.set("settings",ke.settings),Ac()});Le("#plotDerivativeModal").addEventListener("click",()=>{ke.settings.plotDerivative=Le("#plotDerivativeModal").checked,bt.set("settings",ke.settings),Ac()});Le("#plotGridModal").addEventListener("click",()=>{ke.settings.plotGrid=Le("#plotGridModal").checked,bt.set("settings",ke.settings),Ac()});Le("#exportPlot").addEventListener("click",()=>{Le(".function-plot").setAttribute("xmlns","http://www.w3.org/2000/svg");let e=bW+" Plot "+ke.plotFunction,t=`\r +`,r=Le(".function-plot").outerHTML,n=new Blob([t,r],{type:"image/svg+xml;charset=utf-8"}),i=document.createElement("a");i.href=URL.createObjectURL(n),i.download=e,i.click(),setTimeout(()=>URL.revokeObjectURL(i.href),6e4)});Le("#resetPlot").addEventListener("click",()=>{ke.activePlot=null,Ac()});_r.createUnit("USD");Na.push({text:"USD",desc:"U.S. Dollar",className:"cm-currency"});function Yh(){let e="https://www.floatrates.com/widget/1030/cfc5515dfc13ada8d7b0e50b8143d55f/usd.json";navigator.onLine?(Le("#lastUpdated").innerHTML='
    ',fetch(e).then(t=>t.json()).then(t=>{ke.currencyRates=t,Object.keys(t).forEach(r=>{_r.createUnit(t[r].code,{definition:_r.unit(t[r].inverseRate+"USD")},{override:!0}),Na.some(n=>n.text===t[r].code)||Na.push({text:t[r].code,desc:t[r].name,className:"cm-currency"}),bt.set("rateDate",t[r].date)}),Le("#lastUpdated").innerHTML=bt.get("rateDate"),Ot.setOption("mode",ke.settings.syntax?"numara":"plain"),Pu()}).catch(t=>{Le("#lastUpdated").innerHTML="n/a",Bn("Failed to get exchange rates ("+t+")","warning")})):(Le("#lastUpdated").innerHTML="No internet connection.",Bn("No internet connection. Could not update exchange rates.","warning"))}var CS=mn(oE(),1);function vte(){Le("#defaultSettingsButton").style.display=CS.default.diff(ke.settings,pn.defaults)?"inline":"none"}function xte(){Le("#bigNumWarn").style.display=ke.settings.numericOutput==="BigNumber"?"inline-block":"none"}function yte(){Le("#localeWarn").style.display=n1()?"inline-block":"none"}function wte(e){Le("#"+e+"Mod").style.display=ke.settings[e]!==pn.defaults[e]?"inline-block":"none"}function OEe(){ke.settings=bt.get("settings"),CS.default.observableDiff(ke.settings,pn.defaults,e=>{e.kind!=="E"&&(CS.default.applyChange(ke.settings,pn.defaults,e),bt.set("settings",ke.settings))})}var Zh,pn={defaults:{alwaysOnTop:!1,autocomplete:!0,closeBrackets:!0,contPrevLine:!0,copyThouSep:!1,currency:!0,currencyInterval:"0",dateDay:!1,divider:!0,expLower:"-12",expUpper:"12",fontSize:"1.1rem",fontWeight:"400",inputWidth:60,keywordTips:!0,lineErrors:!0,lineHeight:"24px",lineNumbers:!0,lineWrap:!0,locale:"system",matchBrackets:!0,matrixType:"Matrix",notation:"auto",notifyDuration:"5000",notifyLocation:"bottom-center",numericOutput:"number",plotCross:!1,plotDerivative:!1,plotGrid:!1,precision:"4",predictable:!1,rulers:!1,syntax:!0,theme:"system",thouSep:!0},initialize:()=>{if(bt.get("settings")?OEe():bt.set("settings",pn.defaults),ke.settings=bt.get("settings"),ke.settings.currency&&Yh(),ke.settings.lineHeight.endsWith("em")){switch(ke.settings.lineHeight){case"1.5em":ke.settings.lineHeight="16px";break;case"1.75em":ke.settings.lineHeight="20px";break;case"2em":ke.settings.lineHeight="24px";break;case"2.5em":ke.settings.lineHeight="28px";break;case"3em":ke.settings.lineHeight="32px";break}bt.set("settings",ke.settings)}pn.apply(),uo(".settingItem").forEach(e=>{let t=document.createElement("span"),r=document.createElement("span");r.setAttribute("data-lucide","dot"),t.setAttribute("id",e.getAttribute("id")+"Mod"),t.setAttribute("class",e.getAttribute("type")==="checkbox"?"settingModToggle":"settingMod"),t.appendChild(r),t.addEventListener("click",()=>{let n=e.getAttribute("id");ke.settings[n]=pn.defaults[n],pn.prep(),pn.save(),pn.apply()}),e.getAttribute("type")==="checkbox"?e.parentElement.before(t):e.before(t),Pf()})},prep:()=>{let e=[["System","system"],["Chinese (PRC)","zh-CN"],["English (Canada)","en-CA"],["English (UK)","en-GB"],["English (US)","en-US"],["French (France)","fr-FR"],["German (Germany)","de-DE"],["Italian (Italy)","it-IT"],["Japanese (Japan)","ja-JP"],["Portuguese (Brazil)","pt-BR"],["Russian (Russia)","ru-RU"],["Spanish (Mexico)","es-MX"],["Spanish (Spain)","es-ES"],["Turkish (Turkey)","tr-TR"]],t=["Matrix","Array"],r=["number","BigNumber","Fraction"],n=["auto","engineering","exponential","fixed","-","bin","hex","oct"];Le("#locale").innerHTML="";for(let i of e)Le("#locale").innerHTML+=``;Le("#precision-label").innerHTML=ke.settings.precision,Le("#expLower-label").innerHTML=ke.settings.expLower,Le("#expUpper-label").innerHTML=ke.settings.expUpper,Le("#numericOutput").innerHTML="";for(let i of r)Le("#numericOutput").innerHTML+=``;Le("#notation").innerHTML="";for(let i of n)Le("#notation").innerHTML+=i==="-"?"":``;Le("#matrixType").innerHTML="";for(let i of t)Le("#matrixType").innerHTML+=``;Le("#lastUpdated").innerHTML=ke.settings.currency?bt.get("rateDate"):"",Le("#currencyUpdate").style.visibility=ke.settings.currency?"visible":"hidden",Object.keys(ke.settings).forEach(i=>{let o=Le("#"+i);o&&(o.getAttribute("type")==="checkbox"?o.checked=ke.settings[i]:o.value=ke.settings[i],wte(i))}),i1(),vte(),yte(),xte(),pn.toggleSubs()},apply:()=>{let e=Kg();Le("#style").setAttribute("href","css/"+e+".css"),Le("#numaraLogo").setAttribute("src","assets/logo-"+e+".png"),setTimeout(()=>{gi.apply()},50);let t=ke.settings.theme==="system"?hi&&numara.isDark()?"material-darker":"default":ke.settings.theme==="light"?"default":"material-darker";Ru.setOption("theme",t),qu.setOption("theme",t),hi&&(numara.setTheme(ke.settings.theme),numara.setOnTop(ke.settings.alwaysOnTop));let r=uo(".panelFont, .input .CodeMirror");for(let n of r)n.style.fontSize=ke.settings.fontSize,n.style.fontWeight=ke.settings.fontWeight,n.style.setProperty("line-height",ke.settings.lineHeight,"important");Le("#input").style.width=(ke.settings.divider?ke.settings.inputWidth:pn.defaults.inputWidth)+"%",Le("#panelDivider").style.display=ke.settings.divider?"block":"none",Le("#output").style.textAlign=ke.settings.divider?"left":"right",Ot.setOption("mode",ke.settings.syntax?"numara":"plain"),Ot.setOption("lineNumbers",ke.settings.lineNumbers),Ot.setOption("lineWrapping",ke.settings.lineWrap),Ot.setOption("matchBrackets",ke.settings.syntax&&ke.settings.matchBrackets?{maxScanLines:1}:!1),Ot.setOption("autoCloseBrackets",ke.settings.closeBrackets),_r.config({matrix:ke.settings.matrixType,number:ke.settings.numericOutput,predictable:ke.settings.predictable}),ke.settings.currency&&(ke.settings.currencyInterval==="0"?(clearInterval(Zh),bt.set("rateInterval",!1)):(clearInterval(Zh),Zh=setInterval(Yh,+ke.settings.currencyInterval),bt.set("rateInterval",!0))),ke.settings.currencyInterval==="0"?clearInterval(Zh):(clearInterval(Zh),Zh=setInterval(Yh,+ke.settings.currencyInterval)),setTimeout(Pu,10)},save:()=>{Object.keys(ke.settings).forEach(e=>{let t=Le("#"+e);t&&(ke.settings[e]=t.getAttribute("type")==="checkbox"?t.checked:t.value,wte(e))}),Le("#currency").checked||(localStorage.removeItem("rateDate"),ke.currencyRates={}),Le("#currencyUpdate").style.visibility=Le("#currency").checked?"visible":"hidden",Le("#currencyWarn").style.display=ke.settings.currency?"none":"inline-block",!bt.get("rateDate")&&ke.settings.currency&&Yh(),vte(),yte(),xte(),pn.toggleSubs(),bt.set("settings",ke.settings)},toggleSubs:()=>{Le("#expUpper").disabled=ke.settings.notation!=="auto",Le("#expLower").disabled=ke.settings.notation!=="auto",Le("#keywordTips").disabled=!ke.settings.syntax,Le("#matchBrackets").disabled=!ke.settings.syntax,Le("#copyThouSep").disabled=!ke.settings.thouSep,Le("#currencyInterval").disabled=!ke.settings.currency,Le("#updateRatesLink").dataset.enabled=ke.settings.currency,Le("#expUpper").parentNode.style.opacity=ke.settings.notation==="auto"?"1":"0.5",Le("#expLower").parentNode.style.opacity=ke.settings.notation==="auto"?"1":"0.5",Le("#keywordTips").parentNode.style.opacity=ke.settings.syntax?"1":"0.5",Le("#matchBrackets").parentNode.style.opacity=ke.settings.syntax?"1":"0.5",Le("#copyThouSep").parentNode.style.opacity=ke.settings.thouSep?"1":"0.5",Le("#expUpperMod").style.pointerEvents=ke.settings.notation==="auto"?"auto":"none",Le("#expLowerMod").style.pointerEvents=ke.settings.notation==="auto"?"auto":"none",Le("#keywordTipsMod").style.pointerEvents=ke.settings.syntax?"auto":"none",Le("#matchBracketsMod").style.pointerEvents=ke.settings.syntax?"auto":"none",Le("#copyThouSepMod").style.pointerEvents=ke.settings.thouSep?"auto":"none",Le("#expUpperMod").parentNode.style.opacity=ke.settings.notation==="auto"?"1":"0.5",Le("#expLowerMod").parentNode.style.opacity=ke.settings.notation==="auto"?"1":"0.5",Le("#keywordTipsMod").parentNode.style.opacity=ke.settings.syntax?"1":"0.5",Le("#matchBracketsMod").parentNode.style.opacity=ke.settings.syntax?"1":"0.5",Le("#copyThouSepMod").parentNode.style.opacity=ke.settings.thouSep?"1":"0.5"}};Le("#defaultSettingsButton").addEventListener("click",()=>{Rf("All settings will revert back to defaults.",()=>{ke.settings=JSON.parse(JSON.stringify(pn.defaults)),ke.colors=JSON.parse(JSON.stringify(gi.defaults)),bt.set("settings",ke.settings),bt.set("colors",ke.colors),pn.prep(),pn.save(),pn.apply()})});Le("#dialog-settings-reset").addEventListener("click",()=>{Rf("All user settings and data will be lost.",()=>{hi?numara.resetApp():(localStorage.clear(),location.reload())})});hi&&Le("#resetSizeButton").addEventListener("click",numara.resetSize);Le("#localeWarn").addEventListener("click",()=>{Mu("Caution: Locale",`Your locale (${ke.settings.locale}) uses comma (,) as decimal separator. Therefore, you must use semicolon (;) as argument separator when using functions.

    Ex. sum(1;3) // 4`)});Le("#bigNumWarn").addEventListener("click",()=>{Mu("Caution: BigNumber Limitations",`Using the BigNumber may break function plotting and is not compatible with some math functions. It may also cause unexpected behavior and affect overall performance.

    - Read more on BigNumbers`)});ke("#currencyWarn").addEventListener("click",()=>{bu("App restart needed","Currencies used in existing calculations will be removed after app restart.")});ke("#precision").addEventListener("input",()=>{ke("#precision-label").innerHTML=ke("#precision").value});ke("#expLower").addEventListener("input",()=>{ke("#expLower-label").innerHTML=ke("#expLower").value});ke("#expUpper").addEventListener("input",()=>{ke("#expUpper-label").innerHTML=ke("#expUpper").value});ke("#updateRatesLink").addEventListener("click",Hh);io(".settingItem").forEach(e=>{e.addEventListener("change",()=>{un.save(),un.apply()})});var Wh=fn(Yg(),1);function dte(){let e=bt.get("saved"),t=bt.get("pages");e&&(Object.entries(e).forEach(([r,n])=>{t.push({id:r,name:n[0],data:n[1]})}),bt.set("pages",t),localStorage.removeItem("saved"))}function Dx(){let e=bt.get("pages"),t=1;if(e){let r=new RegExp(/\b(Page \d+)$\b/),n=e.filter(o=>r.test(o.name.trim())).map(o=>+o.name.split(" ")[1]).sort((o,l)=>o-l),i=Math.max(...n);if(n[0]===1){for(let o=0;obt.get("lastPage");function Kl(){let e=bt.get("pages");(!e||e.length===0)&&Sx(),ke("#pageList").innerHTML="",e.forEach(t=>{let r=document.createElement("div");r.id=t.id,r.classList.add("pageListItem","uk-flex","uk-flex-middle",Ie.activePage===t.id?"activePage":"inactivePage"),r.innerHTML=` + Read more on BigNumbers`)});Le("#currencyWarn").addEventListener("click",()=>{Mu("App restart needed","Currencies used in existing calculations will be removed after app restart.")});Le("#precision").addEventListener("input",()=>{Le("#precision-label").innerHTML=Le("#precision").value});Le("#expLower").addEventListener("input",()=>{Le("#expLower-label").innerHTML=Le("#expLower").value});Le("#expUpper").addEventListener("input",()=>{Le("#expUpper-label").innerHTML=Le("#expUpper").value});Le("#updateRatesLink").addEventListener("click",Yh);uo(".settingItem").forEach(e=>{e.addEventListener("change",()=>{pn.save(),pn.apply()})});var Xh=mn(Xg(),1);function bte(){let e=bt.get("saved"),t=bt.get("pages");e&&(Object.entries(e).forEach(([r,n])=>{t.push({id:r,name:n[0],data:n[1]})}),bt.set("pages",t),localStorage.removeItem("saved"))}function Ex(){let e=bt.get("pages"),t=1;if(e){let r=new RegExp(/\b(Page \d+)$\b/),n=e.filter(o=>r.test(o.name.trim())).map(o=>+o.name.split(" ")[1]).sort((o,l)=>o-l),i=Math.max(...n);if(n[0]===1){for(let o=0;obt.get("lastPage");function ef(){let e=bt.get("pages");(!e||e.length===0)&&Ax(),Le("#pageList").innerHTML="",e.forEach(t=>{let r=document.createElement("div");r.id=t.id,r.classList.add("pageListItem","uk-flex","uk-flex-middle",ke.activePage===t.id?"activePage":"inactivePage"),r.innerHTML=`
    ${t.name}
    -
    ${gr.fromFormat(t.id,"yyyyMMddHHmmssSSS").toFormat("FF")}
    +
    ${vr.fromFormat(t.id,"yyyyMMddHHmmssSSS").toFormat("FF")}
    @@ -127,37 +127,37 @@ bar: "40 foo"`;ke("#udfInput").setAttribute("placeholder",sye);ke("#uduInput").s
    Delete
    - `,r.addEventListener("click",n=>{switch(n.target.parentNode.dataset.action==="load"&&(Vh(t.id),Wh.default.offcanvas("#sidePanel").hide()),n.target.dataset.action){case"rename":Wh.default.dropdown(n.target.parentNode).hide(0),_Ee(t.id);break;case"delete":TEe(t.id);break;case"duplicate":OEe(t.id);break}}),ke("#pageList").appendChild(r)}),Af()}function Vh(e){let t=bt.get("pages").find(n=>n.id===e),r=t.cursor;Ie.activePage=e,bt.set("lastPage",e),ke("#pageName").innerHTML=t.name,ke("#pageName").title=t.name,Ot.setValue(t.data),t.history&&Ot.setHistory(t.history),Ot.execCommand("goLineEnd"),r&&(Ot.setCursor(r),setTimeout(()=>{try{Ot.scrollIntoView({ch:r.ch,line:r.line+1})}catch{Ot.scrollIntoView(r)}},100)),Kl()}function Sx(){let e=gr.local().toFormat("yyyyMMddHHmmssSSS"),t=Dx();bt.set("pages",[{id:e,name:t,data:bt.get("input")||""}]),localStorage.removeItem("input"),Vh(e)}function hte(e){let t=gr.local().toFormat("yyyyMMddHHmmssSSS"),r=bt.get("pages"),n=ke("#newPageTitleInput").value.replace(/<|>/g,"").trim()||(e?"Imported page":Dx());if(r.map(o=>o.name).includes(n)){In(`"${n}" already exists. Please choose a different page name.`,"danger");return}Ie.activePage=t,r.push({id:t,name:n,data:""}),bt.set("pages",r),bt.set("lastPage",t),Ot.setValue(""),Kl(),ke("#pageName").innerHTML=n,$o.hide("#dialog-newPage")}function TEe(e){let t=bt.get("pages");Cf('"'+t.find(r=>r.id===e).name+'" will be deleted.',()=>{t=t.filter(r=>r.id!==e),bt.set("pages",t),t.length===0?Sx():e===Ie.activePage&&Vh(t.pop().id),Kl()})}function _Ee(e){let t=bt.get("pages"),r=t.find(i=>i.id===e);ke("#renamePageTitleInput").value=r.name,$o.show("#dialog-renamePage");function n(){r.name=ke("#renamePageTitleInput").value.replace(/<|>/g,"").trim()||Dx(),bt.set("pages",t),Kl(),ke("#pageName").innerHTML=r.name,$o.hide("#dialog-renamePage"),ke("#dialog-renamePage-save").removeEventListener("click",n)}ke("#dialog-renamePage-save").addEventListener("click",n)}function OEe(e){let t=gr.local().toFormat("yyyyMMddHHmmssSSS"),r=bt.get("pages"),n=r.find(l=>l.id===e),i=n.data,o=n.name+" (copy)";Ie.activePage=t,r.push({id:t,name:o,data:i}),bt.set("pages",r),Vh(t)}function CS(e){let t=bt.get("pages"),r;switch(e){case"oldnew":r=t.sort((n,i)=>n.id-i.id);break;case"newold":r=t.sort((n,i)=>i.id-n.id);break;case"az":r=t.sort((n,i)=>n.name.localeCompare(i.name));break;case"za":r=t.sort((n,i)=>i.name.localeCompare(n.name));break}bt.set("pages",r),Kl(),Wh.default.dropdown("#sortDropdown").hide(0)}function gte(){let e=bt.get("pages"),r=[...io("#pageList > div")].map(n=>e.find(i=>i.id===n.getAttribute("id")));bt.set("pages",r)}function FEe(){Cf("All pages will be deleted permanently.",()=>{bt.set("pages",[]),Sx(),Kl()})}function vte(){ke("#newPageTitleInput").value="",ke("#newPageTitleInput").focus(),$o.show("#dialog-newPage")}ke("#newPageButton").addEventListener("click",vte);ke("#newPageButtonSP").addEventListener("click",vte);ke("#dialog-newPage-save").addEventListener("click",()=>{hte(!1)});ke("#newPageTitleInput").addEventListener("keyup",e=>{(e.key==="Enter"||e.keyCode===13)&&ke("#dialog-newPage-save").click()});ke("#deleteAllPagesButton").addEventListener("click",FEe);ke("#renamePageTitleInput").addEventListener("keyup",e=>{(e.key==="Enter"||e.keyCode===13)&&ke("#dialog-renamePage-save").click()});ke("#sortOldNew").addEventListener("click",()=>{CS("oldnew")});ke("#sortNewOld").addEventListener("click",()=>{CS("newold")});ke("#sortAZ").addEventListener("click",()=>{CS("az")});ke("#sortZA").addEventListener("click",()=>{CS("za")});ke("#closeSidePanelButton").addEventListener("click",()=>{Wh.default.offcanvas("#sidePanel").hide()});ke("#printButton").addEventListener("click",()=>{window.print()});di?(ke("#importButton").addEventListener("click",numara.import),numara.importData((e,t,r)=>{hte(!0),Ot.setValue(t),In(r,"success")}),numara.importDataError((e,t)=>{In(t,"danger")}),numara.main.import(numara.import),ke("#exportButton").addEventListener("click",()=>{let t=bt.get("pages").find(r=>r.id===Ie.activePage).name;numara.export(t,Ot.getValue())}),numara.exportData((e,t)=>{In(t,"success")}),numara.exportDataError((e,t)=>{In(t,"danger")}),numara.main.export(()=>{numara.export(ke("#newPageTitleInput").value,Ot.getValue())}),numara.main.print(()=>{Wh.default.offcanvas("#sidePanel").hide(),window.print()})):io("#exportButton, #importButton, #spDivider").forEach(e=>e.remove());function Nx(e,t){return new Promise(function(r,n){try{(t==="func"?new Function(`'use strict'; let window; let numara; math.import({${e}}, {override: true})`):new Function(`'use strict'; let window; let numara; math.createUnit({${e}}, {override: true})`))();let o=new Function(`'use strict'; return {${e}}`);for(let l in o())Ie[t==="func"?"udfList":"uduList"].push(l);bt.set(t==="func"?"udf":"udu",e),r()}catch(i){n(i)}})}ke("#dialog-udfu-save-f").addEventListener("click",()=>{Nx(Ou.getValue().trim(),"func").then(()=>{location.reload()}).catch(e=>{bu(e.name,e.message)})});ke("#dialog-udfu-save-u").addEventListener("click",()=>{Nx(Fu.getValue().trim(),"unit").then(()=>{location.reload()}).catch(e=>{bu(e.name,e.message)})});var IEe=["Shift","Meta","Alt","Control"],xte=typeof navigator=="object"?navigator.platform:"",yte=/Mac|iPod|iPhone|iPad/.test(xte),kEe=yte?"Meta":"Control",LEe=xte==="Win32"?["Control","Alt"]:yte?["Alt"]:[];function AO(e,t){return typeof e.getModifierState=="function"&&(e.getModifierState(t)||LEe.includes(t)&&e.getModifierState("AltGraph"))}function BEe(e){return e.trim().split(" ").map(function(t){var r=t.split(/\b\+/),n=r.pop(),i=n.match(/^\((.+)\)$/);return i&&(n=new RegExp("^"+i[1]+"$")),[r=r.map(function(o){return o==="$mod"?kEe:o}),n]})}function PEe(e,t){var r=t[0],n=t[1];return!((n instanceof RegExp?!n.test(e.key)&&!n.test(e.code):n.toUpperCase()!==e.key.toUpperCase()&&n!==e.code)||r.find(function(i){return!AO(e,i)})||IEe.find(function(i){return!r.includes(i)&&n!==i&&AO(e,i)}))}function REe(e,t){var r;t===void 0&&(t={});var n=(r=t.timeout)!=null?r:1e3,i=Object.keys(e).map(function(s){return[BEe(s),e[s]]}),o=new Map,l=null;return function(s){s instanceof KeyboardEvent&&(i.forEach(function(a){var u=a[0],f=a[1],p=o.get(u)||u;PEe(s,p[0])?p.length>1?o.set(u,p.slice(1)):(o.delete(u),f(s)):AO(s,s.key)||o.delete(u)}),l&&clearTimeout(l),l=setTimeout(o.clear.bind(o),n))}}function wte(e,t,r){var n=r===void 0?{}:r,i=n.event,o=i===void 0?"keydown":i,l=n.capture,s=REe(t,{timeout:n.timeout});return e.addEventListener(o,s,l),function(){e.removeEventListener(o,s,l)}}var ra=fn(Yg(),1);document.title=hW;di&&(numara.themeUpdate(un.apply),numara.fullscreen());di&&!WO?(ke("#header-mac").remove(),ke("#header-win").style.display="block",ke("#header-win-title").innerHTML=$b,ke("#max").style.display=numara.isMaximized()?"none":"block",ke("#unmax").style.display=numara.isMaximized()?"block":"none",ke("#min").addEventListener("click",numara.minimize),ke("#max").addEventListener("click",numara.maximize),ke("#unmax").addEventListener("click",numara.unmaximize),ke("#close").addEventListener("click",numara.close),numara.isMax((e,t)=>{ke("#unmax").style.display=t?"block":"none",ke("#max").style.display=t?"none":"block"}),ke("#header-win").addEventListener("dblclick",QN)):(ke("#header-win").remove(),ke("#header-mac").style.display="block",ke("#header-mac-title").innerHTML=$b,di&&ke("#header-mac").addEventListener("dblclick",QN));Af();hi.initialize();hi.apply();un.initialize();un.apply();bt.get("pages")?(Ie.activePage=EO(),Vh(EO())):Sx();dte();bt.get("udf")||bt.set("udf","");bt.get("udu")||bt.set("udu","");Nx(bt.get("udf"),"func");Nx(bt.get("udu"),"unit");Kl();ke("#clearButton").addEventListener("click",()=>{Ot.getValue()!==""&&(Ot.setValue(""),Ot.focus(),_u())});ke("#copyButton").addEventListener("click",()=>{vM()});ke("#udfuButton").addEventListener("click",()=>{$o.show("#dialog-udfu")});ke("#settingsButton").addEventListener("click",()=>{$o.show("#dialog-settings")});ke("#dialog-about-copyright").innerHTML=`Copyright \xA9\uFE0F ${new Date().getFullYear()} ${yM.name}`;ke("#dialog-about-appVersion").innerHTML=di?`Version ${xM}`:`Version ${xM} + `,r.addEventListener("click",n=>{switch(n.target.parentNode.dataset.action==="load"&&(Kh(t.id),Xh.default.offcanvas("#sidePanel").hide()),n.target.dataset.action){case"rename":Xh.default.dropdown(n.target.parentNode).hide(0),IEe(t.id);break;case"delete":FEe(t.id);break;case"duplicate":kEe(t.id);break}}),Le("#pageList").appendChild(r)}),Pf()}function Kh(e){let t=bt.get("pages").find(n=>n.id===e),r=t.cursor;ke.activePage=e,bt.set("lastPage",e),Le("#pageName").innerHTML=t.name,Le("#pageName").title=t.name,Ot.setValue(t.data),t.history&&Ot.setHistory(t.history),Ot.execCommand("goLineEnd"),r&&(Ot.setCursor(r),setTimeout(()=>{try{Ot.scrollIntoView({ch:r.ch,line:r.line+1})}catch{Ot.scrollIntoView(r)}},100)),ef()}function Ax(){let e=vr.local().toFormat("yyyyMMddHHmmssSSS"),t=Ex();bt.set("pages",[{id:e,name:t,data:bt.get("input")||""}]),localStorage.removeItem("input"),Kh(e)}function Dte(e){let t=vr.local().toFormat("yyyyMMddHHmmssSSS"),r=bt.get("pages"),n=Le("#newPageTitleInput").value.replace(/<|>/g,"").trim()||(e?"Imported page":Ex());if(r.map(o=>o.name).includes(n)){Bn(`"${n}" already exists. Please choose a different page name.`,"danger");return}ke.activePage=t,r.push({id:t,name:n,data:""}),bt.set("pages",r),bt.set("lastPage",t),Ot.setValue(""),ef(),Le("#pageName").innerHTML=n,Ho.hide("#dialog-newPage")}function FEe(e){let t=bt.get("pages");Rf('"'+t.find(r=>r.id===e).name+'" will be deleted.',()=>{t=t.filter(r=>r.id!==e),bt.set("pages",t),t.length===0?Ax():e===ke.activePage&&Kh(t.pop().id),ef()})}function IEe(e){let t=bt.get("pages"),r=t.find(i=>i.id===e);Le("#renamePageTitleInput").value=r.name,Ho.show("#dialog-renamePage");function n(){r.name=Le("#renamePageTitleInput").value.replace(/<|>/g,"").trim()||Ex(),bt.set("pages",t),ef(),Le("#pageName").innerHTML=r.name,Ho.hide("#dialog-renamePage"),Le("#dialog-renamePage-save").removeEventListener("click",n)}Le("#dialog-renamePage-save").addEventListener("click",n)}function kEe(e){let t=vr.local().toFormat("yyyyMMddHHmmssSSS"),r=bt.get("pages"),n=r.find(l=>l.id===e),i=n.data,o=n.name+" (copy)";ke.activePage=t,r.push({id:t,name:o,data:i}),bt.set("pages",r),Kh(t)}function MS(e){let t=bt.get("pages"),r;switch(e){case"oldnew":r=t.sort((n,i)=>n.id-i.id);break;case"newold":r=t.sort((n,i)=>i.id-n.id);break;case"az":r=t.sort((n,i)=>n.name.localeCompare(i.name));break;case"za":r=t.sort((n,i)=>i.name.localeCompare(n.name));break}bt.set("pages",r),ef(),Xh.default.dropdown("#sortDropdown").hide(0)}function Ste(){let e=bt.get("pages"),r=[...uo("#pageList > div")].map(n=>e.find(i=>i.id===n.getAttribute("id")));bt.set("pages",r)}function LEe(){Rf("All pages will be deleted permanently.",()=>{bt.set("pages",[]),Ax(),ef()})}function Nte(){Le("#newPageTitleInput").value="",Le("#newPageTitleInput").focus(),Ho.show("#dialog-newPage")}Le("#newPageButton").addEventListener("click",Nte);Le("#newPageButtonSP").addEventListener("click",Nte);Le("#dialog-newPage-save").addEventListener("click",()=>{Dte(!1)});Le("#newPageTitleInput").addEventListener("keyup",e=>{(e.key==="Enter"||e.keyCode===13)&&Le("#dialog-newPage-save").click()});Le("#deleteAllPagesButton").addEventListener("click",LEe);Le("#renamePageTitleInput").addEventListener("keyup",e=>{(e.key==="Enter"||e.keyCode===13)&&Le("#dialog-renamePage-save").click()});Le("#sortOldNew").addEventListener("click",()=>{MS("oldnew")});Le("#sortNewOld").addEventListener("click",()=>{MS("newold")});Le("#sortAZ").addEventListener("click",()=>{MS("az")});Le("#sortZA").addEventListener("click",()=>{MS("za")});Le("#closeSidePanelButton").addEventListener("click",()=>{Xh.default.offcanvas("#sidePanel").hide()});Le("#printButton").addEventListener("click",()=>{window.print()});hi?(Le("#importButton").addEventListener("click",numara.import),numara.importData((e,t,r)=>{Dte(!0),Ot.setValue(t),Bn(r,"success")}),numara.importDataError((e,t)=>{Bn(t,"danger")}),numara.main.import(numara.import),Le("#exportButton").addEventListener("click",()=>{let t=bt.get("pages").find(r=>r.id===ke.activePage).name;numara.export(t,Ot.getValue())}),numara.exportData((e,t)=>{Bn(t,"success")}),numara.exportDataError((e,t)=>{Bn(t,"danger")}),numara.main.export(()=>{numara.export(Le("#newPageTitleInput").value,Ot.getValue())}),numara.main.print(()=>{Xh.default.offcanvas("#sidePanel").hide(),window.print()})):uo("#exportButton, #importButton, #spDivider").forEach(e=>e.remove());function Cx(e,t){return new Promise(function(r,n){try{(t==="func"?new Function(`'use strict'; let window; let numara; math.import({${e}}, {override: true})`):new Function(`'use strict'; let window; let numara; math.createUnit({${e}}, {override: true})`))();let o=new Function(`'use strict'; return {${e}}`);for(let l in o())ke[t==="func"?"udfList":"uduList"].push(l);bt.set(t==="func"?"udf":"udu",e),r()}catch(i){n(i)}})}Le("#dialog-udfu-save-f").addEventListener("click",()=>{Cx(Ru.getValue().trim(),"func").then(()=>{location.reload()}).catch(e=>{Mu(e.name,e.message)})});Le("#dialog-udfu-save-u").addEventListener("click",()=>{Cx(qu.getValue().trim(),"unit").then(()=>{location.reload()}).catch(e=>{Mu(e.name,e.message)})});var BEe=["Shift","Meta","Alt","Control"],Ete=typeof navigator=="object"?navigator.platform:"",Ate=/Mac|iPod|iPhone|iPad/.test(Ete),PEe=Ate?"Meta":"Control",REe=Ete==="Win32"?["Control","Alt"]:Ate?["Alt"]:[];function FO(e,t){return typeof e.getModifierState=="function"&&(e.getModifierState(t)||REe.includes(t)&&e.getModifierState("AltGraph"))}function qEe(e){return e.trim().split(" ").map(function(t){var r=t.split(/\b\+/),n=r.pop(),i=n.match(/^\((.+)\)$/);return i&&(n=new RegExp("^"+i[1]+"$")),[r=r.map(function(o){return o==="$mod"?PEe:o}),n]})}function zEe(e,t){var r=t[0],n=t[1];return!((n instanceof RegExp?!n.test(e.key)&&!n.test(e.code):n.toUpperCase()!==e.key.toUpperCase()&&n!==e.code)||r.find(function(i){return!FO(e,i)})||BEe.find(function(i){return!r.includes(i)&&n!==i&&FO(e,i)}))}function UEe(e,t){var r;t===void 0&&(t={});var n=(r=t.timeout)!=null?r:1e3,i=Object.keys(e).map(function(s){return[qEe(s),e[s]]}),o=new Map,l=null;return function(s){s instanceof KeyboardEvent&&(i.forEach(function(a){var u=a[0],f=a[1],p=o.get(u)||u;zEe(s,p[0])?p.length>1?o.set(u,p.slice(1)):(o.delete(u),f(s)):FO(s,s.key)||o.delete(u)}),l&&clearTimeout(l),l=setTimeout(o.clear.bind(o),n))}}function Cte(e,t,r){var n=r===void 0?{}:r,i=n.event,o=i===void 0?"keydown":i,l=n.capture,s=UEe(t,{timeout:n.timeout});return e.addEventListener(o,s,l),function(){e.removeEventListener(o,s,l)}}var ra=mn(Xg(),1);document.title=DW;hi&&(numara.themeUpdate(pn.apply),numara.fullscreen());hi&&!JO?(Le("#header-mac").remove(),Le("#header-win").style.display="block",Le("#header-win-title").innerHTML=Wb,Le("#max").style.display=numara.isMaximized()?"none":"block",Le("#unmax").style.display=numara.isMaximized()?"block":"none",Le("#min").addEventListener("click",numara.minimize),Le("#max").addEventListener("click",numara.maximize),Le("#unmax").addEventListener("click",numara.unmaximize),Le("#close").addEventListener("click",numara.close),numara.isMax((e,t)=>{Le("#unmax").style.display=t?"block":"none",Le("#max").style.display=t?"none":"block"}),Le("#header-win").addEventListener("dblclick",nE)):(Le("#header-win").remove(),Le("#header-mac").style.display="block",Le("#header-mac-title").innerHTML=Wb,hi&&Le("#header-mac").addEventListener("dblclick",nE));Pf();gi.initialize();gi.apply();pn.initialize();pn.apply();bt.get("pages")?(ke.activePage=OO(),Kh(OO())):Ax();bte();bt.get("udf")||bt.set("udf","");bt.get("udu")||bt.set("udu","");Cx(bt.get("udf"),"func");Cx(bt.get("udu"),"unit");ef();Le("#clearButton").addEventListener("click",()=>{Ot.getValue()!==""&&(Ot.setValue(""),Ot.focus(),Pu())});Le("#copyButton").addEventListener("click",()=>{SM()});Le("#udfuButton").addEventListener("click",()=>{Ho.show("#dialog-udfu")});Le("#settingsButton").addEventListener("click",()=>{Ho.show("#dialog-settings")});Le("#dialog-about-copyright").innerHTML=`Copyright \xA9\uFE0F ${new Date().getFullYear()} ${EM.name}`;Le("#dialog-about-appVersion").innerHTML=hi?`Version ${NM}`:`Version ${NM} `;ke("#gitLink").setAttribute("href",Wb);ke("#webLink").setAttribute("href",yM.url);ke("#licenseLink").setAttribute("href",Wb+"/blob/master/LICENSE");ke("#helpLink").setAttribute("href",Wb+"/wiki");di&&(ke("#logsLink").parentElement.style.display="block",ke("#logsLink").addEventListener("click",numara.openLogs));ke("#aboutButton").addEventListener("click",()=>{$o.show("#dialog-about")});ke("#output").addEventListener("click",e=>{switch(e.target.className){case"answer":navigator.clipboard.writeText(e.target.dataset.copy),In(`Copied '${e.target.dataset.copy}' to clipboard.`);break;case"plotButton":{let t=e.target.getAttribute("data-func");Ie.plotFunction=t.startsWith("line")?Ie.mathScope[t]:t;try{ke("#plotCrossModal").checked=Ie.settings.plotCross,ke("#plotDerivativeModal").checked=Ie.settings.plotDerivative,ke("#plotGridModal").checked=Ie.settings.plotGrid,dc(),$o.show("#dialog-plot")}catch(r){bu("Error",r)}break}case"lineError":bu("Error on Line "+e.target.getAttribute("data-line"),e.target.getAttribute("data-error"));break}e.stopPropagation()});ke("#output").addEventListener("mousedown",()=>{let e=document.getElementsByClassName("CodeMirror-selected");for(;e[0];)e[0].classList.remove("CodeMirror-selected")});var bte,TO=!1,Dte=ke("#panel"),MS=ke("#panelDivider"),Nte=()=>{MS.title=ke("#input").style.width===un.defaults.inputWidth+"%"?"Drag to resize":"Double click to reset position"};MS.addEventListener("dblclick",()=>{Ie.settings.inputWidth=un.defaults.inputWidth,bt.set("settings",Ie.settings),un.apply(),Nte()});MS.addEventListener("mousedown",e=>{TO=e.target===MS});ke("#panel").addEventListener("mouseup",()=>{TO=!1});ke("#panel").addEventListener("mousemove",e=>{if(TO){let t=Ie.settings.lineNumbers?12:27,n=(e.clientX-Dte.offsetLeft-t)/Dte.clientWidth*100,i=n<0?0:n>100?100:n;ke("#input").style.width=i+"%",Ie.settings.inputWidth=i,bt.set("settings",Ie.settings),clearTimeout(bte),bte=setTimeout(_u,10)}Nte()});ra.default.mixin({data:{offset:5}},"tooltip");ra.default.util.on("#dialog-theme","shown",$m);ra.default.util.on("#dialog-settings","beforeshow",un.prep);var _O=1;ra.default.util.on("#dialog-udfu","shown",e=>{if(e.target.id==="dialog-udfu"){let t=bt.get("udf").trim(),r=bt.get("udu").trim();Hb(_O===1?Ou:Fu),Ou.setValue(t),Fu.setValue(r)}});ra.default.util.on("#udfTab","shown",()=>{_O=1,Hb(Ou)});ra.default.util.on("#uduTab","shown",()=>{_O=2,Hb(Fu)});ra.default.util.on(".modal","hidden",()=>{setTimeout(()=>{Ot.focus()},100)});ra.default.util.on("#dialog-plot","shown",dc);ra.default.util.on("#dialog-plot","hide",()=>{Ie.activePlot=!1});ra.default.util.on("#pageList","moved",()=>{gte(),Kl()});ra.default.util.on("#dialog-newPage","shown",()=>{ke("#newPageTitleInput").setAttribute("placeholder",Dx()),ke("#newPageTitleInput").focus()});ra.default.util.on("#dialog-renamePage","shown",()=>{setTimeout(()=>{ke("#renamePageTitleInput").focus(),ke("#renamePageTitleInput").select()},20)});ra.default.util.on("#sidePanel","hidden",()=>{setTimeout(()=>{Ot.focus()},20)});document.addEventListener("keydown",e=>{Ie.refreshCM=!e.repeat});document.addEventListener("keyup",()=>{Ie.refreshCM=!0});var Ste;window.addEventListener("resize",()=>{Ie.activePlot&&ke("#dialog-plot").classList.contains("uk-open")&&dc(),clearTimeout(Ste),Ste=setTimeout(_u,10),r1()});var CO=!1,MO=!1,TS=ke(".CodeMirror-scroll"),Ex=ke("#output");TS.addEventListener("scroll",()=>{CO||(MO=!0,Ex.scrollTop=TS.scrollTop),CO=!1});Ex.addEventListener("scroll",()=>{MO||(CO=!0,TS.scrollTop=Ex.scrollTop),MO=!1,ke("#scrollTop").style.display=Ex.scrollTop>50?"block":"none"});ke("#scrollTop").addEventListener("click",()=>{TS.scroll({top:0,behavior:"smooth"}),Ex.scroll({top:0,behavior:"smooth"})});var qEe={clearButton:["$mod+D"],newPageButton:["$mod+N"],printButton:["$mod+P"],sidePanelButton:["Shift+TAB"]};for(let[e,t]of Object.entries(qEe))wte(window,{[t]:r=>{r.preventDefault(),io(".uk-open").length===0?ke("#"+e).click():ke("#sidePanel").classList.contains("uk-open")&&!ke("#dialog-newPage").classList.contains("uk-open")&&ke("#closeSidePanelButton").click()}});VO();ke("#updateButton").addEventListener("click",()=>{numara.updateApp()});di&&ke("#dialog-about-appVersion").addEventListener("click",e=>{e.detail===9&&numara.openDevTools()});window.addEventListener("beforeprint",()=>{let e=document.createElement("div");e.setAttribute("id","printArea"),e.className="printArea",e.innerHTML=` -
    ${$b}
    +
    `;Le("#gitLink").setAttribute("href",Vb);Le("#webLink").setAttribute("href",EM.url);Le("#licenseLink").setAttribute("href",Vb+"/blob/master/LICENSE");Le("#helpLink").setAttribute("href",Vb+"/wiki");hi&&(Le("#logsLink").parentElement.style.display="block",Le("#logsLink").addEventListener("click",numara.openLogs));Le("#aboutButton").addEventListener("click",()=>{Ho.show("#dialog-about")});Le("#output").addEventListener("click",e=>{switch(e.target.className){case"answer":navigator.clipboard.writeText(e.target.dataset.copy),Bn(`Copied '${e.target.dataset.copy}' to clipboard.`);break;case"plotButton":{let t=e.target.getAttribute("data-func");ke.plotFunction=t.startsWith("line")?ke.mathScope[t]:t;try{Le("#plotCrossModal").checked=ke.settings.plotCross,Le("#plotDerivativeModal").checked=ke.settings.plotDerivative,Le("#plotGridModal").checked=ke.settings.plotGrid,Ac(),Ho.show("#dialog-plot")}catch(r){Mu("Error",r)}break}case"lineError":Mu("Error on Line "+e.target.getAttribute("data-line"),e.target.getAttribute("data-error"));break}e.stopPropagation()});Le("#output").addEventListener("mousedown",()=>{let e=document.getElementsByClassName("CodeMirror-selected");for(;e[0];)e[0].classList.remove("CodeMirror-selected")});var Mte,LO=!1,Tte=Le("#panel"),TS=Le("#panelDivider"),Ote=()=>{TS.title=Le("#input").style.width===pn.defaults.inputWidth+"%"?"Drag to resize":"Double click to reset position"};TS.addEventListener("dblclick",()=>{ke.settings.inputWidth=pn.defaults.inputWidth,bt.set("settings",ke.settings),pn.apply(),Ote()});TS.addEventListener("mousedown",e=>{LO=e.target===TS});Le("#panel").addEventListener("mouseup",()=>{LO=!1});Le("#panel").addEventListener("mousemove",e=>{if(LO){let t=ke.settings.lineNumbers?12:27,n=(e.clientX-Tte.offsetLeft-t)/Tte.clientWidth*100,i=n<0?0:n>100?100:n;Le("#input").style.width=i+"%",ke.settings.inputWidth=i,bt.set("settings",ke.settings),clearTimeout(Mte),Mte=setTimeout(Pu,10)}Ote()});ra.default.mixin({data:{offset:5}},"tooltip");ra.default.util.on("#dialog-theme","shown",Zm);ra.default.util.on("#dialog-settings","beforeshow",pn.prep);var BO=1;ra.default.util.on("#dialog-udfu","shown",e=>{if(e.target.id==="dialog-udfu"){let t=bt.get("udf").trim(),r=bt.get("udu").trim();$b(BO===1?Ru:qu),Ru.setValue(t),qu.setValue(r)}});ra.default.util.on("#udfTab","shown",()=>{BO=1,$b(Ru)});ra.default.util.on("#uduTab","shown",()=>{BO=2,$b(qu)});ra.default.util.on(".modal","hidden",()=>{setTimeout(()=>{Ot.focus()},100)});ra.default.util.on("#dialog-plot","shown",Ac);ra.default.util.on("#dialog-plot","hide",()=>{ke.activePlot=!1});ra.default.util.on("#pageList","moved",()=>{Ste(),ef()});ra.default.util.on("#dialog-newPage","shown",()=>{Le("#newPageTitleInput").setAttribute("placeholder",Ex()),Le("#newPageTitleInput").focus()});ra.default.util.on("#dialog-renamePage","shown",()=>{setTimeout(()=>{Le("#renamePageTitleInput").focus(),Le("#renamePageTitleInput").select()},20)});ra.default.util.on("#sidePanel","hidden",()=>{setTimeout(()=>{Ot.focus()},20)});document.addEventListener("keydown",e=>{ke.refreshCM=!e.repeat});document.addEventListener("keyup",()=>{ke.refreshCM=!0});var _te;window.addEventListener("resize",()=>{ke.activePlot&&Le("#dialog-plot").classList.contains("uk-open")&&Ac(),clearTimeout(_te),_te=setTimeout(Pu,10),i1()});var IO=!1,kO=!1,_S=Le(".CodeMirror-scroll"),Mx=Le("#output");_S.addEventListener("scroll",()=>{IO||(kO=!0,Mx.scrollTop=_S.scrollTop),IO=!1});Mx.addEventListener("scroll",()=>{kO||(IO=!0,_S.scrollTop=Mx.scrollTop),kO=!1,Le("#scrollTop").style.display=Mx.scrollTop>50?"block":"none"});Le("#scrollTop").addEventListener("click",()=>{_S.scroll({top:0,behavior:"smooth"}),Mx.scroll({top:0,behavior:"smooth"})});var HEe={clearButton:["$mod+D"],newPageButton:["$mod+N"],printButton:["$mod+P"],sidePanelButton:["Shift+TAB"]};for(let[e,t]of Object.entries(HEe))Cte(window,{[t]:r=>{r.preventDefault(),uo(".uk-open").length===0?Le("#"+e).click():Le("#sidePanel").classList.contains("uk-open")&&!Le("#dialog-newPage").classList.contains("uk-open")&&Le("#closeSidePanelButton").click()}});QO();Le("#updateButton").addEventListener("click",()=>{numara.updateApp()});hi&&Le("#dialog-about-appVersion").addEventListener("click",e=>{e.detail===9&&numara.openDevTools()});window.addEventListener("beforeprint",()=>{let e=document.createElement("div");e.setAttribute("id","printArea"),e.className="printArea",e.innerHTML=` +
    ${Wb}
    `,document.body.appendChild(e),Ot.eachLine(t=>{let r=Ot.getLineNumber(t),n=Ot.getLine(r),i=ke("#output").children[r].innerText,o=` + font-size: ${ke.settings.fontSize}; + font-weight: ${ke.settings.fontWeight}; + line-height: ${ke.settings.lineHeight};" + >`,document.body.appendChild(e),Ot.eachLine(t=>{let r=Ot.getLineNumber(t),n=Ot.getLine(r),i=Le("#output").children[r].innerText,o=` - ${Ie.settings.lineNumbers?'":""} - - - `;ke("#printPage").innerHTML+=o}),e.innerHTML+="
    '+(r+1)+"${n}${i}
    "});window.addEventListener("afterprint",()=>{ke("#printArea").remove()});setTimeout(()=>{Ot.focus()},500);})(); + ${ke.settings.lineNumbers?''+(r+1)+"":""} + ${n} + ${i} + `;Le("#printPage").innerHTML+=o}),e.innerHTML+=""});window.addEventListener("afterprint",()=>{Le("#printArea").remove()});setTimeout(()=>{Ot.focus()},500);})(); /*! Bundled license information: uikit/dist/js/uikit.js: - (*! UIkit 3.21.13 | https://www.getuikit.com | (c) 2014 - 2024 YOOtheme | MIT License *) + (*! UIkit 3.21.14 | https://www.getuikit.com | (c) 2014 - 2024 YOOtheme | MIT License *) lucide/dist/esm/createElement.js: (** - * @license lucide v0.453.0 - ISC + * @license lucide v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. @@ -165,7 +165,7 @@ lucide/dist/esm/createElement.js: lucide/dist/esm/replaceElement.js: (** - * @license lucide v0.453.0 - ISC + * @license lucide v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. @@ -173,7 +173,7 @@ lucide/dist/esm/replaceElement.js: lucide/dist/esm/defaultAttributes.js: (** - * @license lucide v0.453.0 - ISC + * @license lucide v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. @@ -181,7 +181,7 @@ lucide/dist/esm/defaultAttributes.js: lucide/dist/esm/icons/arrow-up-down.js: (** - * @license lucide v0.453.0 - ISC + * @license lucide v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. @@ -189,7 +189,7 @@ lucide/dist/esm/icons/arrow-up-down.js: lucide/dist/esm/icons/braces.js: (** - * @license lucide v0.453.0 - ISC + * @license lucide v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. @@ -197,7 +197,7 @@ lucide/dist/esm/icons/braces.js: lucide/dist/esm/icons/circle-alert.js: (** - * @license lucide v0.453.0 - ISC + * @license lucide v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. @@ -205,7 +205,7 @@ lucide/dist/esm/icons/circle-alert.js: lucide/dist/esm/icons/circle.js: (** - * @license lucide v0.453.0 - ISC + * @license lucide v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. @@ -213,7 +213,7 @@ lucide/dist/esm/icons/circle.js: lucide/dist/esm/icons/copy.js: (** - * @license lucide v0.453.0 - ISC + * @license lucide v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. @@ -221,7 +221,7 @@ lucide/dist/esm/icons/copy.js: lucide/dist/esm/icons/corner-down-right.js: (** - * @license lucide v0.453.0 - ISC + * @license lucide v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. @@ -229,7 +229,7 @@ lucide/dist/esm/icons/corner-down-right.js: lucide/dist/esm/icons/dot.js: (** - * @license lucide v0.453.0 - ISC + * @license lucide v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. @@ -237,7 +237,7 @@ lucide/dist/esm/icons/dot.js: lucide/dist/esm/icons/download.js: (** - * @license lucide v0.453.0 - ISC + * @license lucide v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. @@ -245,7 +245,7 @@ lucide/dist/esm/icons/download.js: lucide/dist/esm/icons/ellipsis-vertical.js: (** - * @license lucide v0.453.0 - ISC + * @license lucide v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. @@ -253,7 +253,7 @@ lucide/dist/esm/icons/ellipsis-vertical.js: lucide/dist/esm/icons/eraser.js: (** - * @license lucide v0.453.0 - ISC + * @license lucide v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. @@ -261,7 +261,7 @@ lucide/dist/esm/icons/eraser.js: lucide/dist/esm/icons/info.js: (** - * @license lucide v0.453.0 - ISC + * @license lucide v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. @@ -269,7 +269,7 @@ lucide/dist/esm/icons/info.js: lucide/dist/esm/icons/list-restart.js: (** - * @license lucide v0.453.0 - ISC + * @license lucide v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. @@ -277,7 +277,7 @@ lucide/dist/esm/icons/list-restart.js: lucide/dist/esm/icons/palette.js: (** - * @license lucide v0.453.0 - ISC + * @license lucide v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. @@ -285,7 +285,7 @@ lucide/dist/esm/icons/palette.js: lucide/dist/esm/icons/panel-left-close.js: (** - * @license lucide v0.453.0 - ISC + * @license lucide v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. @@ -293,7 +293,7 @@ lucide/dist/esm/icons/panel-left-close.js: lucide/dist/esm/icons/panel-left.js: (** - * @license lucide v0.453.0 - ISC + * @license lucide v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. @@ -301,7 +301,7 @@ lucide/dist/esm/icons/panel-left.js: lucide/dist/esm/icons/plus.js: (** - * @license lucide v0.453.0 - ISC + * @license lucide v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. @@ -309,7 +309,7 @@ lucide/dist/esm/icons/plus.js: lucide/dist/esm/icons/printer.js: (** - * @license lucide v0.453.0 - ISC + * @license lucide v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. @@ -317,7 +317,7 @@ lucide/dist/esm/icons/printer.js: lucide/dist/esm/icons/refresh-ccw.js: (** - * @license lucide v0.453.0 - ISC + * @license lucide v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. @@ -325,7 +325,7 @@ lucide/dist/esm/icons/refresh-ccw.js: lucide/dist/esm/icons/rotate-ccw.js: (** - * @license lucide v0.453.0 - ISC + * @license lucide v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. @@ -333,7 +333,7 @@ lucide/dist/esm/icons/rotate-ccw.js: lucide/dist/esm/icons/scaling.js: (** - * @license lucide v0.453.0 - ISC + * @license lucide v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. @@ -341,7 +341,7 @@ lucide/dist/esm/icons/scaling.js: lucide/dist/esm/icons/settings.js: (** - * @license lucide v0.453.0 - ISC + * @license lucide v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. @@ -349,7 +349,7 @@ lucide/dist/esm/icons/settings.js: lucide/dist/esm/icons/trash.js: (** - * @license lucide v0.453.0 - ISC + * @license lucide v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. @@ -357,7 +357,7 @@ lucide/dist/esm/icons/trash.js: lucide/dist/esm/icons/upload.js: (** - * @license lucide v0.453.0 - ISC + * @license lucide v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. @@ -365,7 +365,7 @@ lucide/dist/esm/icons/upload.js: lucide/dist/esm/lucide.js: (** - * @license lucide v0.453.0 - ISC + * @license lucide v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. @@ -388,14 +388,5 @@ decimal.js/decimal.mjs: * Copyright (c) 2022 Michael Mclaughlin * MIT Licence *) - -fraction.js/fraction.js: - (** - * @license Fraction.js v4.3.7 31/08/2023 - * https://www.xarg.org/2014/03/rational-numbers-in-javascript/ - * - * Copyright (c) 2023, Robert Eisele (robert@raw.org) - * Dual licensed under the MIT or GPL Version 2 licenses. - **) */ //# sourceMappingURL=numara.js.map diff --git a/build/js/numara.js.map b/build/js/numara.js.map index 30f3220..5137228 100644 --- a/build/js/numara.js.map +++ b/build/js/numara.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../../node_modules/uikit/dist/js/uikit.js", "../../node_modules/deep-diff/index.js", "../../node_modules/typed-function/lib/esm/typed-function.mjs", "../../node_modules/javascript-natural-sort/naturalSort.js", "../../node_modules/escape-latex/dist/index.js", "../../node_modules/seedrandom/lib/alea.js", "../../node_modules/seedrandom/lib/xor128.js", "../../node_modules/seedrandom/lib/xorwow.js", "../../node_modules/seedrandom/lib/xorshift7.js", "../../node_modules/seedrandom/lib/xor4096.js", "../../node_modules/seedrandom/lib/tychei.js", "../../node_modules/seedrandom/seedrandom.js", "../../node_modules/seedrandom/index.js", "../../node_modules/tiny-emitter/index.js", "../../node_modules/jstat/dist/jstat.js", "../../node_modules/bessel/bessel.js", "../../node_modules/codemirror/lib/codemirror.js", "../../node_modules/codemirror/mode/javascript/javascript.js", "../../node_modules/codemirror/addon/dialog/dialog.js", "../../node_modules/codemirror/addon/display/placeholder.js", "../../node_modules/codemirror/addon/edit/closebrackets.js", "../../node_modules/codemirror/addon/edit/matchbrackets.js", "../../node_modules/codemirror/addon/hint/show-hint.js", "../../node_modules/codemirror/addon/search/jump-to-line.js", "../../node_modules/codemirror/addon/search/searchcursor.js", "../../node_modules/codemirror/addon/search/search.js", "../../node_modules/function-plot/src/polyfills.ts", "../../node_modules/d3-shape/src/constant.js", "../../node_modules/d3-shape/src/math.js", "../../node_modules/d3-path/src/path.js", "../../node_modules/d3-path/src/index.js", "../../node_modules/d3-shape/src/path.js", "../../node_modules/d3-shape/src/arc.js", "../../node_modules/d3-shape/src/array.js", "../../node_modules/d3-shape/src/curve/linear.js", "../../node_modules/d3-shape/src/point.js", "../../node_modules/d3-shape/src/line.js", "../../node_modules/d3-shape/src/area.js", "../../node_modules/d3-shape/src/descending.js", "../../node_modules/d3-shape/src/identity.js", "../../node_modules/d3-shape/src/pie.js", "../../node_modules/d3-shape/src/curve/radial.js", "../../node_modules/d3-shape/src/lineRadial.js", "../../node_modules/d3-shape/src/areaRadial.js", "../../node_modules/d3-shape/src/pointRadial.js", "../../node_modules/d3-shape/src/curve/bump.js", "../../node_modules/d3-shape/src/link.js", "../../node_modules/d3-shape/src/symbol/asterisk.js", "../../node_modules/d3-shape/src/symbol/circle.js", "../../node_modules/d3-shape/src/symbol/cross.js", "../../node_modules/d3-shape/src/symbol/diamond.js", "../../node_modules/d3-shape/src/symbol/diamond2.js", "../../node_modules/d3-shape/src/symbol/plus.js", "../../node_modules/d3-shape/src/symbol/square.js", "../../node_modules/d3-shape/src/symbol/square2.js", "../../node_modules/d3-shape/src/symbol/star.js", "../../node_modules/d3-shape/src/symbol/triangle.js", "../../node_modules/d3-shape/src/symbol/triangle2.js", "../../node_modules/d3-shape/src/symbol/wye.js", "../../node_modules/d3-shape/src/symbol/times.js", "../../node_modules/d3-shape/src/symbol.js", "../../node_modules/d3-shape/src/noop.js", "../../node_modules/d3-shape/src/curve/basis.js", "../../node_modules/d3-shape/src/curve/basisClosed.js", "../../node_modules/d3-shape/src/curve/basisOpen.js", "../../node_modules/d3-shape/src/curve/bundle.js", "../../node_modules/d3-shape/src/curve/cardinal.js", "../../node_modules/d3-shape/src/curve/cardinalClosed.js", "../../node_modules/d3-shape/src/curve/cardinalOpen.js", "../../node_modules/d3-shape/src/curve/catmullRom.js", "../../node_modules/d3-shape/src/curve/catmullRomClosed.js", "../../node_modules/d3-shape/src/curve/catmullRomOpen.js", "../../node_modules/d3-shape/src/curve/linearClosed.js", "../../node_modules/d3-shape/src/curve/monotone.js", "../../node_modules/d3-shape/src/curve/natural.js", "../../node_modules/d3-shape/src/curve/step.js", "../../node_modules/d3-shape/src/offset/none.js", "../../node_modules/d3-shape/src/order/none.js", "../../node_modules/d3-shape/src/stack.js", "../../node_modules/d3-shape/src/offset/expand.js", "../../node_modules/d3-shape/src/offset/diverging.js", "../../node_modules/d3-shape/src/offset/silhouette.js", "../../node_modules/d3-shape/src/offset/wiggle.js", "../../node_modules/d3-shape/src/order/appearance.js", "../../node_modules/d3-shape/src/order/ascending.js", "../../node_modules/d3-shape/src/order/descending.js", "../../node_modules/d3-shape/src/order/insideOut.js", "../../node_modules/d3-shape/src/order/reverse.js", "../../node_modules/d3-shape/src/index.js", "../../node_modules/d3-format/src/formatDecimal.js", "../../node_modules/d3-format/src/exponent.js", "../../node_modules/d3-format/src/formatGroup.js", "../../node_modules/d3-format/src/formatNumerals.js", "../../node_modules/d3-format/src/formatSpecifier.js", "../../node_modules/d3-format/src/formatTrim.js", "../../node_modules/d3-format/src/formatPrefixAuto.js", "../../node_modules/d3-format/src/formatRounded.js", "../../node_modules/d3-format/src/formatTypes.js", "../../node_modules/d3-format/src/identity.js", "../../node_modules/d3-format/src/locale.js", "../../node_modules/d3-format/src/defaultLocale.js", "../../node_modules/d3-format/src/precisionFixed.js", "../../node_modules/d3-format/src/precisionPrefix.js", "../../node_modules/d3-format/src/precisionRound.js", "../../node_modules/d3-format/src/index.js", "../../node_modules/d3-array/src/ascending.js", "../../node_modules/d3-array/src/descending.js", "../../node_modules/d3-array/src/bisector.js", "../../node_modules/d3-array/src/number.js", "../../node_modules/d3-array/src/bisect.js", "../../node_modules/internmap/src/index.js", "../../node_modules/d3-array/src/sort.js", "../../node_modules/d3-array/src/ticks.js", "../../node_modules/d3-array/src/max.js", "../../node_modules/d3-array/src/min.js", "../../node_modules/d3-array/src/quickselect.js", "../../node_modules/d3-array/src/quantile.js", "../../node_modules/d3-array/src/range.js", "../../node_modules/d3-array/src/index.js", "../../node_modules/d3-scale/src/init.js", "../../node_modules/d3-scale/src/ordinal.js", "../../node_modules/d3-scale/src/band.js", "../../node_modules/d3-color/src/define.js", "../../node_modules/d3-color/src/color.js", "../../node_modules/d3-color/src/math.js", "../../node_modules/d3-color/src/lab.js", "../../node_modules/d3-color/src/cubehelix.js", "../../node_modules/d3-color/src/index.js", "../../node_modules/d3-interpolate/src/basis.js", "../../node_modules/d3-interpolate/src/basisClosed.js", "../../node_modules/d3-interpolate/src/constant.js", "../../node_modules/d3-interpolate/src/color.js", "../../node_modules/d3-interpolate/src/rgb.js", "../../node_modules/d3-interpolate/src/numberArray.js", "../../node_modules/d3-interpolate/src/array.js", "../../node_modules/d3-interpolate/src/date.js", "../../node_modules/d3-interpolate/src/number.js", "../../node_modules/d3-interpolate/src/object.js", "../../node_modules/d3-interpolate/src/string.js", "../../node_modules/d3-interpolate/src/value.js", "../../node_modules/d3-interpolate/src/discrete.js", "../../node_modules/d3-interpolate/src/hue.js", "../../node_modules/d3-interpolate/src/round.js", "../../node_modules/d3-interpolate/src/transform/decompose.js", "../../node_modules/d3-interpolate/src/transform/parse.js", "../../node_modules/d3-interpolate/src/transform/index.js", "../../node_modules/d3-interpolate/src/zoom.js", "../../node_modules/d3-interpolate/src/hsl.js", "../../node_modules/d3-interpolate/src/lab.js", "../../node_modules/d3-interpolate/src/hcl.js", "../../node_modules/d3-interpolate/src/cubehelix.js", "../../node_modules/d3-interpolate/src/piecewise.js", "../../node_modules/d3-interpolate/src/quantize.js", "../../node_modules/d3-interpolate/src/index.js", "../../node_modules/d3-scale/src/constant.js", "../../node_modules/d3-scale/src/number.js", "../../node_modules/d3-scale/src/continuous.js", "../../node_modules/d3-scale/src/tickFormat.js", "../../node_modules/d3-scale/src/linear.js", "../../node_modules/d3-scale/src/identity.js", "../../node_modules/d3-scale/src/nice.js", "../../node_modules/d3-scale/src/log.js", "../../node_modules/d3-scale/src/symlog.js", "../../node_modules/d3-scale/src/pow.js", "../../node_modules/d3-scale/src/radial.js", "../../node_modules/d3-scale/src/quantile.js", "../../node_modules/d3-scale/src/quantize.js", "../../node_modules/d3-scale/src/threshold.js", "../../node_modules/d3-time/src/interval.js", "../../node_modules/d3-time/src/millisecond.js", "../../node_modules/d3-time/src/second.js", "../../node_modules/d3-time/src/minute.js", "../../node_modules/d3-time/src/hour.js", "../../node_modules/d3-time/src/day.js", "../../node_modules/d3-time/src/week.js", "../../node_modules/d3-time/src/month.js", "../../node_modules/d3-time/src/year.js", "../../node_modules/d3-time/src/ticks.js", "../../node_modules/d3-time/src/index.js", "../../node_modules/d3-time-format/src/locale.js", "../../node_modules/d3-time-format/src/defaultLocale.js", "../../node_modules/d3-time-format/src/index.js", "../../node_modules/d3-scale/src/time.js", "../../node_modules/d3-scale/src/utcTime.js", "../../node_modules/d3-scale/src/sequential.js", "../../node_modules/d3-scale/src/sequentialQuantile.js", "../../node_modules/d3-scale/src/diverging.js", "../../node_modules/d3-scale/src/index.js", "../../node_modules/d3-axis/src/identity.js", "../../node_modules/d3-axis/src/axis.js", "../../node_modules/d3-axis/src/index.js", "../../node_modules/d3-dispatch/src/dispatch.js", "../../node_modules/d3-dispatch/src/index.js", "../../node_modules/d3-selection/src/namespaces.js", "../../node_modules/d3-selection/src/namespace.js", "../../node_modules/d3-selection/src/creator.js", "../../node_modules/d3-selection/src/selector.js", "../../node_modules/d3-selection/src/selection/select.js", "../../node_modules/d3-selection/src/array.js", "../../node_modules/d3-selection/src/selectorAll.js", "../../node_modules/d3-selection/src/selection/selectAll.js", "../../node_modules/d3-selection/src/matcher.js", "../../node_modules/d3-selection/src/selection/selectChild.js", "../../node_modules/d3-selection/src/selection/selectChildren.js", "../../node_modules/d3-selection/src/selection/filter.js", "../../node_modules/d3-selection/src/selection/sparse.js", "../../node_modules/d3-selection/src/selection/enter.js", "../../node_modules/d3-selection/src/constant.js", "../../node_modules/d3-selection/src/selection/data.js", "../../node_modules/d3-selection/src/selection/exit.js", "../../node_modules/d3-selection/src/selection/join.js", "../../node_modules/d3-selection/src/selection/merge.js", "../../node_modules/d3-selection/src/selection/order.js", "../../node_modules/d3-selection/src/selection/sort.js", "../../node_modules/d3-selection/src/selection/call.js", "../../node_modules/d3-selection/src/selection/nodes.js", "../../node_modules/d3-selection/src/selection/node.js", "../../node_modules/d3-selection/src/selection/size.js", "../../node_modules/d3-selection/src/selection/empty.js", "../../node_modules/d3-selection/src/selection/each.js", "../../node_modules/d3-selection/src/selection/attr.js", "../../node_modules/d3-selection/src/window.js", "../../node_modules/d3-selection/src/selection/style.js", "../../node_modules/d3-selection/src/selection/property.js", "../../node_modules/d3-selection/src/selection/classed.js", "../../node_modules/d3-selection/src/selection/text.js", "../../node_modules/d3-selection/src/selection/html.js", "../../node_modules/d3-selection/src/selection/raise.js", "../../node_modules/d3-selection/src/selection/lower.js", "../../node_modules/d3-selection/src/selection/append.js", "../../node_modules/d3-selection/src/selection/insert.js", "../../node_modules/d3-selection/src/selection/remove.js", "../../node_modules/d3-selection/src/selection/clone.js", "../../node_modules/d3-selection/src/selection/datum.js", "../../node_modules/d3-selection/src/selection/on.js", "../../node_modules/d3-selection/src/selection/dispatch.js", "../../node_modules/d3-selection/src/selection/iterator.js", "../../node_modules/d3-selection/src/selection/index.js", "../../node_modules/d3-selection/src/select.js", "../../node_modules/d3-selection/src/create.js", "../../node_modules/d3-selection/src/local.js", "../../node_modules/d3-selection/src/sourceEvent.js", "../../node_modules/d3-selection/src/pointer.js", "../../node_modules/d3-selection/src/pointers.js", "../../node_modules/d3-selection/src/selectAll.js", "../../node_modules/d3-selection/src/index.js", "../../node_modules/d3-drag/src/noevent.js", "../../node_modules/d3-drag/src/nodrag.js", "../../node_modules/d3-drag/src/index.js", "../../node_modules/d3-timer/src/timer.js", "../../node_modules/d3-timer/src/timeout.js", "../../node_modules/d3-timer/src/index.js", "../../node_modules/d3-transition/src/transition/schedule.js", "../../node_modules/d3-transition/src/interrupt.js", "../../node_modules/d3-transition/src/selection/interrupt.js", "../../node_modules/d3-transition/src/transition/tween.js", "../../node_modules/d3-transition/src/transition/interpolate.js", "../../node_modules/d3-transition/src/transition/attr.js", "../../node_modules/d3-transition/src/transition/attrTween.js", "../../node_modules/d3-transition/src/transition/delay.js", "../../node_modules/d3-transition/src/transition/duration.js", "../../node_modules/d3-transition/src/transition/ease.js", "../../node_modules/d3-transition/src/transition/easeVarying.js", "../../node_modules/d3-transition/src/transition/filter.js", "../../node_modules/d3-transition/src/transition/merge.js", "../../node_modules/d3-transition/src/transition/on.js", "../../node_modules/d3-transition/src/transition/remove.js", "../../node_modules/d3-transition/src/transition/select.js", "../../node_modules/d3-transition/src/transition/selectAll.js", "../../node_modules/d3-transition/src/transition/selection.js", "../../node_modules/d3-transition/src/transition/style.js", "../../node_modules/d3-transition/src/transition/styleTween.js", "../../node_modules/d3-transition/src/transition/text.js", "../../node_modules/d3-transition/src/transition/textTween.js", "../../node_modules/d3-transition/src/transition/transition.js", "../../node_modules/d3-transition/src/transition/end.js", "../../node_modules/d3-transition/src/transition/index.js", "../../node_modules/d3-ease/src/cubic.js", "../../node_modules/d3-ease/src/index.js", "../../node_modules/d3-transition/src/selection/transition.js", "../../node_modules/d3-transition/src/selection/index.js", "../../node_modules/d3-transition/src/index.js", "../../node_modules/d3-zoom/src/constant.js", "../../node_modules/d3-zoom/src/event.js", "../../node_modules/d3-zoom/src/transform.js", "../../node_modules/d3-zoom/src/noevent.js", "../../node_modules/d3-zoom/src/zoom.js", "../../node_modules/d3-zoom/src/index.js", "../../node_modules/events/events.js", "../../node_modules/function-plot/src/helpers/annotations.ts", "../../node_modules/function-plot/src/globals.ts", "../../node_modules/function-plot/src/utils.ts", "../../node_modules/mr-parser/lib/token-type.js", "../../node_modules/mr-parser/lib/Lexer.js", "../../node_modules/mr-parser/lib/node/Node.js", "../../node_modules/mr-parser/lib/node/ConstantNode.js", "../../node_modules/mr-parser/lib/node/OperatorNode.js", "../../node_modules/mr-parser/lib/node/UnaryNode.js", "../../node_modules/mr-parser/lib/node/SymbolNode.js", "../../node_modules/mr-parser/lib/node/FunctionNode.js", "../../node_modules/mr-parser/lib/node/ArrayNode.js", "../../node_modules/mr-parser/lib/node/ConditionalNode.js", "../../node_modules/mr-parser/lib/node/AssignmentNode.js", "../../node_modules/mr-parser/lib/node/BlockNode.js", "../../node_modules/mr-parser/lib/Parser.js", "../../node_modules/mr-parser/lib/node/index.js", "../../node_modules/mr-parser/index.js", "../../node_modules/extend/index.js", "../../node_modules/math-codegen/lib/node/ArrayNode.js", "../../node_modules/math-codegen/lib/node/AssignmentNode.js", "../../node_modules/math-codegen/lib/node/ConditionalNode.js", "../../node_modules/math-codegen/lib/node/ConstantNode.js", "../../node_modules/math-codegen/lib/node/FunctionNode.js", "../../node_modules/math-codegen/lib/misc/Operators.js", "../../node_modules/math-codegen/lib/node/OperatorNode.js", "../../node_modules/math-codegen/lib/node/SymbolNode.js", "../../node_modules/math-codegen/lib/misc/UnaryOperators.js", "../../node_modules/math-codegen/lib/node/UnaryNode.js", "../../node_modules/math-codegen/lib/Interpreter.js", "../../node_modules/math-codegen/lib/CodeGenerator.js", "../../node_modules/math-codegen/index.js", "../../node_modules/built-in-math-eval/lib/adapter.js", "../../node_modules/built-in-math-eval/lib/eval.js", "../../node_modules/built-in-math-eval/index.js", "../../node_modules/interval-arithmetic-eval/node_modules/math-codegen/lib/node/ArrayNode.js", "../../node_modules/interval-arithmetic-eval/node_modules/math-codegen/lib/node/AssignmentNode.js", "../../node_modules/interval-arithmetic-eval/node_modules/math-codegen/lib/node/ConditionalNode.js", "../../node_modules/interval-arithmetic-eval/node_modules/math-codegen/lib/node/ConstantNode.js", "../../node_modules/interval-arithmetic-eval/node_modules/math-codegen/lib/node/FunctionNode.js", "../../node_modules/interval-arithmetic-eval/node_modules/math-codegen/lib/misc/Operators.js", "../../node_modules/interval-arithmetic-eval/node_modules/math-codegen/lib/node/OperatorNode.js", "../../node_modules/interval-arithmetic-eval/node_modules/math-codegen/lib/node/SymbolNode.js", "../../node_modules/interval-arithmetic-eval/node_modules/math-codegen/lib/misc/UnaryOperators.js", "../../node_modules/interval-arithmetic-eval/node_modules/math-codegen/lib/node/UnaryNode.js", "../../node_modules/interval-arithmetic-eval/node_modules/math-codegen/lib/Interpreter.js", "../../node_modules/interval-arithmetic-eval/node_modules/math-codegen/lib/CodeGenerator.js", "../../node_modules/interval-arithmetic-eval/node_modules/math-codegen/index.js", "../../node_modules/interval-arithmetic/src/operations/utils.ts", "../../node_modules/double-bits/double.js", "../../node_modules/nextafter/nextafter.js", "../../node_modules/interval-arithmetic/src/round.ts", "../../node_modules/interval-arithmetic/src/interval.ts", "../../node_modules/interval-arithmetic/src/constants.ts", "../../node_modules/interval-arithmetic/src/operations/relational.ts", "../../node_modules/interval-arithmetic/src/operations/division.ts", "../../node_modules/interval-arithmetic/src/operations/arithmetic.ts", "../../node_modules/interval-arithmetic/src/operations/algebra.ts", "../../node_modules/interval-arithmetic/src/operations/misc.ts", "../../node_modules/interval-arithmetic/src/operations/trigonometric.ts", "../../node_modules/interval-arithmetic/src/index.ts", "../../node_modules/interval-arithmetic-eval/lib/adapter.js", "../../node_modules/interval-arithmetic-eval/lib/policies.js", "../../node_modules/interval-arithmetic-eval/lib/eval.js", "../../node_modules/interval-arithmetic-eval/index.js", "../../node_modules/function-plot/src/helpers/eval.ts", "../../node_modules/function-plot/src/tip.ts", "../../node_modules/function-plot/src/samplers/interval.ts", "../../node_modules/function-plot/src/samplers/builtIn.ts", "../../node_modules/function-plot/src/evaluate.ts", "../../node_modules/function-plot/src/graph-types/polyline.ts", "../../node_modules/function-plot/src/graph-types/interval.ts", "../../node_modules/function-plot/src/graph-types/scatter.ts", "../../node_modules/function-plot/src/graph-types/text.ts", "../../node_modules/function-plot/src/graph-types/index.ts", "../../node_modules/function-plot/src/datum-defaults.ts", "../../node_modules/function-plot/src/helpers/derivative.ts", "../../node_modules/function-plot/src/helpers/secant.ts", "../../node_modules/function-plot/src/helpers/index.ts", "../../node_modules/function-plot/src/chart.ts", "../../node_modules/function-plot/dist/types.js", "../../node_modules/function-plot/src/index.ts", "../../src/js/common.js", "../../node_modules/lucide/src/createElement.ts", "../../node_modules/lucide/src/replaceElement.ts", "../../node_modules/lucide/src/defaultAttributes.ts", "../../node_modules/lucide/src/icons/arrow-up-down.ts", "../../node_modules/lucide/src/icons/braces.ts", "../../node_modules/lucide/src/icons/circle-alert.ts", "../../node_modules/lucide/src/icons/circle.ts", "../../node_modules/lucide/src/icons/copy.ts", "../../node_modules/lucide/src/icons/corner-down-right.ts", "../../node_modules/lucide/src/icons/dot.ts", "../../node_modules/lucide/src/icons/download.ts", "../../node_modules/lucide/src/icons/ellipsis-vertical.ts", "../../node_modules/lucide/src/icons/eraser.ts", "../../node_modules/lucide/src/icons/info.ts", "../../node_modules/lucide/src/icons/list-restart.ts", "../../node_modules/lucide/src/icons/palette.ts", "../../node_modules/lucide/src/icons/panel-left-close.ts", "../../node_modules/lucide/src/icons/panel-left.ts", "../../node_modules/lucide/src/icons/plus.ts", "../../node_modules/lucide/src/icons/printer.ts", "../../node_modules/lucide/src/icons/refresh-ccw.ts", "../../node_modules/lucide/src/icons/rotate-ccw.ts", "../../node_modules/lucide/src/icons/scaling.ts", "../../node_modules/lucide/src/icons/settings.ts", "../../node_modules/lucide/src/icons/trash.ts", "../../node_modules/lucide/src/icons/upload.ts", "../../node_modules/lucide/src/lucide.ts", "../../src/js/icons.js", "../../src/js/modal.js", "../../src/js/utils.js", "../../node_modules/@melloware/coloris/dist/esm/coloris.js", "../../src/js/colors.js", "../../node_modules/luxon/src/errors.js", "../../node_modules/luxon/src/impl/formats.js", "../../node_modules/luxon/src/zone.js", "../../node_modules/luxon/src/zones/systemZone.js", "../../node_modules/luxon/src/zones/IANAZone.js", "../../node_modules/luxon/src/impl/locale.js", "../../node_modules/luxon/src/zones/fixedOffsetZone.js", "../../node_modules/luxon/src/zones/invalidZone.js", "../../node_modules/luxon/src/impl/zoneUtil.js", "../../node_modules/luxon/src/impl/digits.js", "../../node_modules/luxon/src/settings.js", "../../node_modules/luxon/src/impl/invalid.js", "../../node_modules/luxon/src/impl/conversions.js", "../../node_modules/luxon/src/impl/util.js", "../../node_modules/luxon/src/impl/english.js", "../../node_modules/luxon/src/impl/formatter.js", "../../node_modules/luxon/src/impl/regexParser.js", "../../node_modules/luxon/src/duration.js", "../../node_modules/luxon/src/interval.js", "../../node_modules/luxon/src/info.js", "../../node_modules/luxon/src/impl/diff.js", "../../node_modules/luxon/src/impl/tokenParser.js", "../../node_modules/luxon/src/datetime.js", "../../node_modules/@babel/runtime/helpers/esm/extends.js", "../../node_modules/mathjs/lib/esm/core/config.js", "../../node_modules/mathjs/lib/esm/utils/customs.js", "../../node_modules/mathjs/lib/esm/utils/map.js", "../../node_modules/mathjs/lib/esm/utils/is.js", "../../node_modules/mathjs/lib/esm/utils/object.js", "../../node_modules/mathjs/lib/esm/core/function/config.js", "../../node_modules/mathjs/lib/esm/factoriesAny.js", "../../node_modules/mathjs/lib/esm/core/function/typed.js", "../../node_modules/mathjs/lib/esm/utils/factory.js", "../../node_modules/mathjs/lib/esm/utils/number.js", "../../node_modules/mathjs/lib/esm/type/resultset/ResultSet.js", "../../node_modules/decimal.js/decimal.mjs", "../../node_modules/mathjs/lib/esm/type/bignumber/BigNumber.js", "../../node_modules/complex.js/dist/complex.mjs", "../../node_modules/mathjs/lib/esm/type/complex/Complex.js", "../../node_modules/fraction.js/fraction.js", "../../node_modules/mathjs/lib/esm/type/fraction/Fraction.js", "../../node_modules/mathjs/lib/esm/type/matrix/Range.js", "../../node_modules/mathjs/lib/esm/type/matrix/Matrix.js", "../../node_modules/mathjs/lib/esm/utils/bignumber/formatter.js", "../../node_modules/mathjs/lib/esm/utils/string.js", "../../node_modules/mathjs/lib/esm/error/DimensionError.js", "../../node_modules/mathjs/lib/esm/error/IndexError.js", "../../node_modules/mathjs/lib/esm/utils/array.js", "../../node_modules/mathjs/lib/esm/utils/optimizeCallback.js", "../../node_modules/mathjs/lib/esm/type/matrix/DenseMatrix.js", "../../node_modules/mathjs/lib/esm/function/utils/clone.js", "../../node_modules/mathjs/lib/esm/utils/switch.js", "../../node_modules/mathjs/lib/esm/utils/collection.js", "../../node_modules/mathjs/lib/esm/function/utils/isInteger.js", "../../node_modules/mathjs/lib/esm/plain/number/arithmetic.js", "../../node_modules/mathjs/lib/esm/plain/number/bitwise.js", "../../node_modules/mathjs/lib/esm/utils/product.js", "../../node_modules/mathjs/lib/esm/plain/number/combinations.js", "../../node_modules/mathjs/lib/esm/plain/number/constants.js", "../../node_modules/mathjs/lib/esm/plain/number/logical.js", "../../node_modules/mathjs/lib/esm/plain/number/probability.js", "../../node_modules/mathjs/lib/esm/plain/number/trigonometry.js", "../../node_modules/mathjs/lib/esm/plain/number/utils.js", "../../node_modules/mathjs/lib/esm/utils/bignumber/nearlyEqual.js", "../../node_modules/mathjs/lib/esm/function/utils/isNegative.js", "../../node_modules/mathjs/lib/esm/function/utils/isNumeric.js", "../../node_modules/mathjs/lib/esm/function/utils/hasNumericValue.js", "../../node_modules/mathjs/lib/esm/function/utils/isPositive.js", "../../node_modules/mathjs/lib/esm/function/utils/isZero.js", "../../node_modules/mathjs/lib/esm/function/utils/isNaN.js", "../../node_modules/mathjs/lib/esm/function/utils/typeOf.js", "../../node_modules/mathjs/lib/esm/utils/complex.js", "../../node_modules/mathjs/lib/esm/function/relational/compareUnits.js", "../../node_modules/mathjs/lib/esm/function/relational/equalScalar.js", "../../node_modules/mathjs/lib/esm/type/matrix/SparseMatrix.js", "../../node_modules/mathjs/lib/esm/type/number.js", "../../node_modules/mathjs/lib/esm/type/bigint.js", "../../node_modules/mathjs/lib/esm/type/string.js", "../../node_modules/mathjs/lib/esm/type/boolean.js", "../../node_modules/mathjs/lib/esm/type/bignumber/function/bignumber.js", "../../node_modules/mathjs/lib/esm/type/complex/function/complex.js", "../../node_modules/mathjs/lib/esm/type/fraction/function/fraction.js", "../../node_modules/mathjs/lib/esm/type/matrix/function/matrix.js", "../../node_modules/mathjs/lib/esm/function/matrix/matrixFromFunction.js", "../../node_modules/mathjs/lib/esm/function/matrix/matrixFromRows.js", "../../node_modules/mathjs/lib/esm/function/matrix/matrixFromColumns.js", "../../node_modules/mathjs/lib/esm/type/unit/function/splitUnit.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/unaryMinus.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/unaryPlus.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/abs.js", "../../node_modules/mathjs/lib/esm/function/matrix/apply.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/addScalar.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/subtractScalar.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/cbrt.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo11xS0s.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo12xSfs.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo14xDs.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/ceil.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/cube.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/exp.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/expm1.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/fix.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/floor.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo02xDS0.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo03xDSf.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo05xSfSf.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo13xDD.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/broadcast.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matrixAlgorithmSuite.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/mod.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo01xDSid.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo04xSidSid.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo10xSids.js", "../../node_modules/mathjs/lib/esm/error/ArgumentsError.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/gcd.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo06xS0S0.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/lcm.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/log10.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/log2.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/multiplyScalar.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/multiply.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/nthRoot.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/sign.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/sqrt.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/square.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/subtract.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/xgcd.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/invmod.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo09xS0Sf.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/dotMultiply.js", "../../node_modules/mathjs/lib/esm/utils/bignumber/bitwise.js", "../../node_modules/mathjs/lib/esm/function/bitwise/bitAnd.js", "../../node_modules/mathjs/lib/esm/function/bitwise/bitNot.js", "../../node_modules/mathjs/lib/esm/function/bitwise/bitOr.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo07xSSf.js", "../../node_modules/mathjs/lib/esm/function/bitwise/bitXor.js", "../../node_modules/mathjs/lib/esm/function/complex/arg.js", "../../node_modules/mathjs/lib/esm/function/complex/conj.js", "../../node_modules/mathjs/lib/esm/function/complex/im.js", "../../node_modules/mathjs/lib/esm/function/complex/re.js", "../../node_modules/mathjs/lib/esm/function/logical/not.js", "../../node_modules/mathjs/lib/esm/function/logical/or.js", "../../node_modules/mathjs/lib/esm/function/logical/xor.js", "../../node_modules/mathjs/lib/esm/function/matrix/concat.js", "../../node_modules/mathjs/lib/esm/function/matrix/column.js", "../../node_modules/mathjs/lib/esm/function/matrix/count.js", "../../node_modules/mathjs/lib/esm/function/matrix/cross.js", "../../node_modules/mathjs/lib/esm/function/matrix/diag.js", "../../node_modules/mathjs/lib/esm/function/matrix/filter.js", "../../node_modules/mathjs/lib/esm/function/matrix/flatten.js", "../../node_modules/mathjs/lib/esm/function/matrix/forEach.js", "../../node_modules/mathjs/lib/esm/function/matrix/getMatrixDataType.js", "../../node_modules/mathjs/lib/esm/function/matrix/identity.js", "../../node_modules/mathjs/lib/esm/function/matrix/kron.js", "../../node_modules/mathjs/lib/esm/function/matrix/map.js", "../../node_modules/mathjs/lib/esm/function/matrix/diff.js", "../../node_modules/mathjs/lib/esm/function/matrix/ones.js", "../../node_modules/mathjs/lib/esm/utils/noop.js", "../../node_modules/mathjs/lib/esm/function/matrix/range.js", "../../node_modules/mathjs/lib/esm/function/matrix/reshape.js", "../../node_modules/mathjs/lib/esm/function/matrix/resize.js", "../../node_modules/mathjs/lib/esm/function/matrix/rotate.js", "../../node_modules/mathjs/lib/esm/function/matrix/rotationMatrix.js", "../../node_modules/mathjs/lib/esm/function/matrix/row.js", "../../node_modules/mathjs/lib/esm/function/matrix/size.js", "../../node_modules/mathjs/lib/esm/function/matrix/squeeze.js", "../../node_modules/mathjs/lib/esm/function/matrix/subset.js", "../../node_modules/mathjs/lib/esm/function/matrix/transpose.js", "../../node_modules/mathjs/lib/esm/function/matrix/ctranspose.js", "../../node_modules/mathjs/lib/esm/function/matrix/zeros.js", "../../node_modules/mathjs/lib/esm/function/matrix/fft.js", "../../node_modules/mathjs/lib/esm/function/matrix/ifft.js", "../../node_modules/@babel/runtime/helpers/esm/typeof.js", "../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js", "../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js", "../../node_modules/@babel/runtime/helpers/esm/defineProperty.js", "../../node_modules/mathjs/lib/esm/function/numeric/solveODE.js", "../../node_modules/mathjs/lib/esm/function/special/erf.js", "../../node_modules/mathjs/lib/esm/function/special/zeta.js", "../../node_modules/mathjs/lib/esm/function/statistics/mode.js", "../../node_modules/mathjs/lib/esm/function/statistics/utils/improveErrorMessage.js", "../../node_modules/mathjs/lib/esm/function/statistics/prod.js", "../../node_modules/mathjs/lib/esm/function/string/format.js", "../../node_modules/mathjs/lib/esm/function/string/bin.js", "../../node_modules/mathjs/lib/esm/function/string/oct.js", "../../node_modules/mathjs/lib/esm/function/string/hex.js", "../../node_modules/mathjs/lib/esm/utils/print.js", "../../node_modules/mathjs/lib/esm/function/string/print.js", "../../node_modules/mathjs/lib/esm/function/unit/to.js", "../../node_modules/mathjs/lib/esm/function/utils/isPrime.js", "../../node_modules/mathjs/lib/esm/function/utils/numeric.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/divideScalar.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/pow.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/round.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/log.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/log1p.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/nthRoots.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/dotPow.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/dotDivide.js", "../../node_modules/mathjs/lib/esm/function/algebra/solver/utils/solveValidation.js", "../../node_modules/mathjs/lib/esm/function/algebra/solver/lsolve.js", "../../node_modules/mathjs/lib/esm/function/algebra/solver/usolve.js", "../../node_modules/mathjs/lib/esm/function/algebra/solver/lsolveAll.js", "../../node_modules/mathjs/lib/esm/function/algebra/solver/usolveAll.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo08xS0Sid.js", "../../node_modules/mathjs/lib/esm/function/bitwise/useMatrixForArrayScalar.js", "../../node_modules/mathjs/lib/esm/function/bitwise/leftShift.js", "../../node_modules/mathjs/lib/esm/function/bitwise/rightArithShift.js", "../../node_modules/mathjs/lib/esm/function/bitwise/rightLogShift.js", "../../node_modules/mathjs/lib/esm/function/logical/and.js", "../../node_modules/mathjs/lib/esm/function/relational/compare.js", "../../node_modules/mathjs/lib/esm/function/relational/compareNatural.js", "../../node_modules/mathjs/lib/esm/function/relational/compareText.js", "../../node_modules/mathjs/lib/esm/function/relational/equal.js", "../../node_modules/mathjs/lib/esm/function/relational/equalText.js", "../../node_modules/mathjs/lib/esm/function/relational/smaller.js", "../../node_modules/mathjs/lib/esm/function/relational/smallerEq.js", "../../node_modules/mathjs/lib/esm/function/relational/larger.js", "../../node_modules/mathjs/lib/esm/function/relational/largerEq.js", "../../node_modules/mathjs/lib/esm/function/relational/deepEqual.js", "../../node_modules/mathjs/lib/esm/function/relational/unequal.js", "../../node_modules/mathjs/lib/esm/function/matrix/partitionSelect.js", "../../node_modules/mathjs/lib/esm/function/matrix/sort.js", "../../node_modules/mathjs/lib/esm/function/statistics/max.js", "../../node_modules/mathjs/lib/esm/function/statistics/min.js", "../../node_modules/mathjs/lib/esm/type/matrix/ImmutableDenseMatrix.js", "../../node_modules/mathjs/lib/esm/type/matrix/MatrixIndex.js", "../../node_modules/mathjs/lib/esm/type/matrix/FibonacciHeap.js", "../../node_modules/mathjs/lib/esm/type/matrix/Spa.js", "../../node_modules/mathjs/lib/esm/utils/lruQueue.js", "../../node_modules/mathjs/lib/esm/utils/function.js", "../../node_modules/mathjs/lib/esm/utils/bignumber/constants.js", "../../node_modules/mathjs/lib/esm/type/unit/Unit.js", "../../node_modules/mathjs/lib/esm/type/unit/function/unit.js", "../../node_modules/mathjs/lib/esm/type/matrix/function/sparse.js", "../../node_modules/mathjs/lib/esm/type/unit/function/createUnit.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/acos.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/acosh.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/acot.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/acoth.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/acsc.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/acsch.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/asec.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/asech.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/asin.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/asinh.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/atan.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/atan2.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/atanh.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/trigUnit.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/cos.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/cosh.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/cot.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/coth.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/csc.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/csch.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/sec.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/sech.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/sin.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/sinh.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/tan.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/tanh.js", "../../node_modules/mathjs/lib/esm/function/set/setCartesian.js", "../../node_modules/mathjs/lib/esm/function/set/setDifference.js", "../../node_modules/mathjs/lib/esm/function/set/setDistinct.js", "../../node_modules/mathjs/lib/esm/function/set/setIntersect.js", "../../node_modules/mathjs/lib/esm/function/set/setIsSubset.js", "../../node_modules/mathjs/lib/esm/function/set/setMultiplicity.js", "../../node_modules/mathjs/lib/esm/function/set/setPowerset.js", "../../node_modules/mathjs/lib/esm/function/set/setSize.js", "../../node_modules/mathjs/lib/esm/function/set/setSymDifference.js", "../../node_modules/mathjs/lib/esm/function/set/setUnion.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/add.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/hypot.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/norm.js", "../../node_modules/mathjs/lib/esm/function/matrix/dot.js", "../../node_modules/mathjs/lib/esm/function/matrix/trace.js", "../../node_modules/mathjs/lib/esm/type/matrix/function/index.js", "../../node_modules/mathjs/lib/esm/expression/keywords.js", "../../node_modules/mathjs/lib/esm/expression/node/Node.js", "../../node_modules/mathjs/lib/esm/expression/transform/utils/errorTransform.js", "../../node_modules/mathjs/lib/esm/expression/node/utils/access.js", "../../node_modules/mathjs/lib/esm/expression/node/AccessorNode.js", "../../node_modules/mathjs/lib/esm/expression/node/ArrayNode.js", "../../node_modules/mathjs/lib/esm/expression/node/utils/assign.js", "../../node_modules/mathjs/lib/esm/expression/operators.js", "../../node_modules/mathjs/lib/esm/expression/node/AssignmentNode.js", "../../node_modules/mathjs/lib/esm/expression/node/BlockNode.js", "../../node_modules/mathjs/lib/esm/expression/node/ConditionalNode.js", "../../node_modules/mathjs/lib/esm/utils/latex.js", "../../node_modules/mathjs/lib/esm/expression/node/ConstantNode.js", "../../node_modules/mathjs/lib/esm/expression/node/FunctionAssignmentNode.js", "../../node_modules/mathjs/lib/esm/expression/node/IndexNode.js", "../../node_modules/mathjs/lib/esm/expression/node/ObjectNode.js", "../../node_modules/mathjs/lib/esm/utils/scope.js", "../../node_modules/mathjs/lib/esm/expression/node/OperatorNode.js", "../../node_modules/mathjs/lib/esm/expression/node/ParenthesisNode.js", "../../node_modules/mathjs/lib/esm/expression/node/RangeNode.js", "../../node_modules/mathjs/lib/esm/expression/node/RelationalNode.js", "../../node_modules/mathjs/lib/esm/expression/node/SymbolNode.js", "../../node_modules/mathjs/lib/esm/expression/node/FunctionNode.js", "../../node_modules/mathjs/lib/esm/expression/parse.js", "../../node_modules/mathjs/lib/esm/expression/function/compile.js", "../../node_modules/mathjs/lib/esm/expression/function/evaluate.js", "../../node_modules/mathjs/lib/esm/expression/Parser.js", "../../node_modules/mathjs/lib/esm/expression/function/parser.js", "../../node_modules/mathjs/lib/esm/function/algebra/decomposition/lup.js", "../../node_modules/mathjs/lib/esm/function/algebra/decomposition/qr.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csPermute.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csTdfs.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csPost.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csEtree.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csFkeep.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csFlip.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csAmd.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csLeaf.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csCounts.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csSqr.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csMarked.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csMark.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csUnflip.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csDfs.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csReach.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csSpsolve.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csLu.js", "../../node_modules/mathjs/lib/esm/function/algebra/decomposition/slu.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csIpvec.js", "../../node_modules/mathjs/lib/esm/function/algebra/solver/lusolve.js", "../../node_modules/mathjs/lib/esm/function/algebra/polynomialRoot.js", "../../node_modules/mathjs/lib/esm/expression/Help.js", "../../node_modules/mathjs/lib/esm/type/chain/Chain.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/e.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/false.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/i.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/Infinity.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/LN10.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/LN2.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/LOG10E.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/LOG2E.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/NaN.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/null.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/phi.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/pi.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/SQRT1_2.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/SQRT2.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/tau.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/true.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/version.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/bignumber.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/bigint.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/boolean.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/complex.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/createUnit.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/fraction.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/index.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/matrix.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/number.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/sparse.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/splitUnit.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/string.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/unit.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/core/config.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/core/import.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/core/typed.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/derivative.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/leafCount.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/lsolve.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/lsolveAll.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/lup.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/lusolve.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/polynomialRoot.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/qr.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/rationalize.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/resolve.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/simplify.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/simplifyConstant.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/simplifyCore.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/slu.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/symbolicEqual.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/usolve.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/usolveAll.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/abs.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/add.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/cbrt.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/ceil.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/cube.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/divide.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/dotDivide.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/dotMultiply.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/dotPow.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/exp.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/expm.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/expm1.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/fix.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/floor.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/gcd.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/hypot.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/invmod.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/lcm.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/log.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/log10.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/log1p.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/log2.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/mod.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/multiply.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/norm.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/nthRoot.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/nthRoots.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/pow.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/round.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/sign.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/sqrt.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/sqrtm.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/sylvester.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/schur.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/lyap.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/square.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/subtract.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/unaryMinus.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/unaryPlus.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/xgcd.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/bitAnd.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/bitNot.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/bitOr.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/bitXor.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/leftShift.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/rightArithShift.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/rightLogShift.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/combinatorics/bellNumbers.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/combinatorics/catalan.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/combinatorics/composition.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/combinatorics/stirlingS2.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/complex/arg.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/complex/conj.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/complex/im.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/complex/re.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/expression/evaluate.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/expression/help.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/geometry/distance.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/geometry/intersect.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/logical/and.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/logical/not.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/logical/or.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/logical/xor.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/column.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/concat.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/count.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/cross.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/ctranspose.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/det.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/diag.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/diff.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/dot.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/eigs.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/filter.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/flatten.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/forEach.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/getMatrixDataType.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/identity.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/inv.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/pinv.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/kron.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/map.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/matrixFromColumns.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/matrixFromFunction.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/matrixFromRows.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/ones.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/partitionSelect.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/range.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/reshape.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/resize.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/rotate.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/rotationMatrix.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/row.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/size.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/sort.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/squeeze.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/subset.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/trace.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/transpose.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/zeros.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/fft.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/ifft.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/combinations.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/combinationsWithRep.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/factorial.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/gamma.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/lgamma.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/kldivergence.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/multinomial.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/permutations.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/pickRandom.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/random.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/randomInt.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/compare.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/compareNatural.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/compareText.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/deepEqual.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/equal.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/equalText.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/larger.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/largerEq.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/smaller.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/smallerEq.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/unequal.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setCartesian.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setDifference.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setDistinct.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setIntersect.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setIsSubset.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setMultiplicity.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setPowerset.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setSize.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setSymDifference.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setUnion.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/signal/zpk2tf.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/signal/freqz.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/special/erf.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/special/zeta.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/mad.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/max.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/mean.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/median.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/min.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/mode.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/prod.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/quantileSeq.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/std.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/cumsum.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/sum.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/variance.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/corr.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acos.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acosh.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acot.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acoth.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acsc.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acsch.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/asec.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/asech.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/asin.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/asinh.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/atan.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/atan2.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/atanh.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/cos.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/cosh.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/cot.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/coth.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/csc.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/csch.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/sec.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/sech.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/sin.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/sinh.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/tan.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/tanh.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/units/to.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/bin.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/clone.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/format.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/hasNumericValue.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/hex.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isInteger.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isNaN.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isNegative.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isNumeric.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isPositive.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isPrime.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isZero.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/numeric.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/oct.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/print.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/typeOf.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/numeric/solveODE.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/embeddedDocs.js", "../../node_modules/mathjs/lib/esm/expression/function/help.js", "../../node_modules/mathjs/lib/esm/type/chain/function/chain.js", "../../node_modules/mathjs/lib/esm/function/matrix/det.js", "../../node_modules/mathjs/lib/esm/function/matrix/inv.js", "../../node_modules/mathjs/lib/esm/function/matrix/pinv.js", "../../node_modules/mathjs/lib/esm/function/matrix/eigs/complexEigs.js", "../../node_modules/mathjs/lib/esm/function/matrix/eigs/realSymmetric.js", "../../node_modules/mathjs/lib/esm/function/matrix/eigs.js", "../../node_modules/mathjs/lib/esm/function/matrix/expm.js", "../../node_modules/mathjs/lib/esm/function/matrix/sqrtm.js", "../../node_modules/mathjs/lib/esm/function/algebra/sylvester.js", "../../node_modules/mathjs/lib/esm/function/algebra/decomposition/schur.js", "../../node_modules/mathjs/lib/esm/function/algebra/lyap.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/divide.js", "../../node_modules/mathjs/lib/esm/function/geometry/distance.js", "../../node_modules/mathjs/lib/esm/function/geometry/intersect.js", "../../node_modules/mathjs/lib/esm/function/statistics/sum.js", "../../node_modules/mathjs/lib/esm/function/statistics/cumsum.js", "../../node_modules/mathjs/lib/esm/function/statistics/mean.js", "../../node_modules/mathjs/lib/esm/function/statistics/median.js", "../../node_modules/mathjs/lib/esm/function/statistics/mad.js", "../../node_modules/mathjs/lib/esm/function/statistics/variance.js", "../../node_modules/mathjs/lib/esm/function/statistics/quantileSeq.js", "../../node_modules/mathjs/lib/esm/function/statistics/std.js", "../../node_modules/mathjs/lib/esm/function/statistics/corr.js", "../../node_modules/mathjs/lib/esm/function/probability/combinations.js", "../../node_modules/mathjs/lib/esm/function/probability/combinationsWithRep.js", "../../node_modules/mathjs/lib/esm/function/probability/gamma.js", "../../node_modules/mathjs/lib/esm/function/probability/lgamma.js", "../../node_modules/mathjs/lib/esm/function/probability/factorial.js", "../../node_modules/mathjs/lib/esm/function/probability/kldivergence.js", "../../node_modules/mathjs/lib/esm/function/probability/multinomial.js", "../../node_modules/mathjs/lib/esm/function/probability/permutations.js", "../../node_modules/mathjs/lib/esm/function/probability/util/seededRNG.js", "../../node_modules/mathjs/lib/esm/function/probability/pickRandom.js", "../../node_modules/mathjs/lib/esm/function/probability/util/randomMatrix.js", "../../node_modules/mathjs/lib/esm/function/probability/random.js", "../../node_modules/mathjs/lib/esm/function/probability/randomInt.js", "../../node_modules/mathjs/lib/esm/function/combinatorics/stirlingS2.js", "../../node_modules/mathjs/lib/esm/function/combinatorics/bellNumbers.js", "../../node_modules/mathjs/lib/esm/function/combinatorics/catalan.js", "../../node_modules/mathjs/lib/esm/function/combinatorics/composition.js", "../../node_modules/mathjs/lib/esm/function/algebra/leafCount.js", "../../node_modules/mathjs/lib/esm/function/algebra/simplify/wildcards.js", "../../node_modules/mathjs/lib/esm/function/algebra/simplify/util.js", "../../node_modules/mathjs/lib/esm/function/algebra/simplify.js", "../../node_modules/mathjs/lib/esm/function/algebra/simplifyConstant.js", "../../node_modules/mathjs/lib/esm/function/algebra/simplifyCore.js", "../../node_modules/mathjs/lib/esm/function/algebra/resolve.js", "../../node_modules/mathjs/lib/esm/function/algebra/symbolicEqual.js", "../../node_modules/mathjs/lib/esm/function/algebra/derivative.js", "../../node_modules/mathjs/lib/esm/function/algebra/rationalize.js", "../../node_modules/mathjs/lib/esm/function/signal/zpk2tf.js", "../../node_modules/mathjs/lib/esm/function/signal/freqz.js", "../../node_modules/mathjs/lib/esm/json/reviver.js", "../../node_modules/mathjs/lib/esm/json/replacer.js", "../../node_modules/mathjs/lib/esm/version.js", "../../node_modules/mathjs/lib/esm/constants.js", "../../node_modules/mathjs/lib/esm/type/unit/physicalConstants.js", "../../node_modules/mathjs/lib/esm/expression/transform/apply.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/column.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/utils/compileInlineExpression.js", "../../node_modules/mathjs/lib/esm/expression/transform/utils/transformCallback.js", "../../node_modules/mathjs/lib/esm/expression/transform/filter.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/forEach.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/index.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/map.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/utils/dimToZeroBase.js", "../../node_modules/mathjs/lib/esm/expression/transform/utils/lastDimToZeroBase.js", "../../node_modules/mathjs/lib/esm/expression/transform/max.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/mean.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/min.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/range.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/row.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/subset.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/concat.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/diff.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/std.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/sum.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/quantileSeq.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/cumsum.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/variance.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/print.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/and.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/or.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/bitAnd.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/bitOr.transform.js", "../../node_modules/mathjs/lib/esm/entry/allFactoriesAny.js", "../../node_modules/mathjs/lib/esm/core/create.js", "../../node_modules/mathjs/lib/esm/utils/emitter.js", "../../node_modules/mathjs/lib/esm/core/function/import.js", "../../node_modules/@formulajs/formulajs/lib/esm/index.mjs", "../../src/js/eval.js", "../../src/js/editor.js", "../../src/js/context.js", "../../package.json", "../../src/js/plot.js", "../../src/js/forex.js", "../../src/js/settings.js", "../../src/js/pages.js", "../../src/js/userDefined.js", "../../node_modules/tinykeys/src/tinykeys.ts", "../../src/js/app.js"], - "sourcesContent": ["/*! UIkit 3.21.13 | https://www.getuikit.com | (c) 2014 - 2024 YOOtheme | MIT License */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define('uikit', factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.UIkit = factory());\n})(this, (function () { 'use strict';\n\n const { hasOwnProperty, toString } = Object.prototype;\n function hasOwn(obj, key) {\n return hasOwnProperty.call(obj, key);\n }\n const hyphenateRe = /\\B([A-Z])/g;\n const hyphenate = memoize((str) => str.replace(hyphenateRe, \"-$1\").toLowerCase());\n const camelizeRe = /-(\\w)/g;\n const camelize = memoize(\n (str) => (str.charAt(0).toLowerCase() + str.slice(1)).replace(camelizeRe, (_, c) => c.toUpperCase())\n );\n const ucfirst = memoize((str) => str.charAt(0).toUpperCase() + str.slice(1));\n function startsWith(str, search) {\n var _a;\n return (_a = str == null ? void 0 : str.startsWith) == null ? void 0 : _a.call(str, search);\n }\n function endsWith(str, search) {\n var _a;\n return (_a = str == null ? void 0 : str.endsWith) == null ? void 0 : _a.call(str, search);\n }\n function includes(obj, search) {\n var _a;\n return (_a = obj == null ? void 0 : obj.includes) == null ? void 0 : _a.call(obj, search);\n }\n function findIndex(array, predicate) {\n var _a;\n return (_a = array == null ? void 0 : array.findIndex) == null ? void 0 : _a.call(array, predicate);\n }\n const { isArray, from: toArray } = Array;\n const { assign } = Object;\n function isFunction(obj) {\n return typeof obj === \"function\";\n }\n function isObject(obj) {\n return obj !== null && typeof obj === \"object\";\n }\n function isPlainObject(obj) {\n return toString.call(obj) === \"[object Object]\";\n }\n function isWindow(obj) {\n return isObject(obj) && obj === obj.window;\n }\n function isDocument(obj) {\n return nodeType(obj) === 9;\n }\n function isNode(obj) {\n return nodeType(obj) >= 1;\n }\n function isElement(obj) {\n return nodeType(obj) === 1;\n }\n function nodeType(obj) {\n return !isWindow(obj) && isObject(obj) && obj.nodeType;\n }\n function isBoolean(value) {\n return typeof value === \"boolean\";\n }\n function isString(value) {\n return typeof value === \"string\";\n }\n function isNumber(value) {\n return typeof value === \"number\";\n }\n function isNumeric(value) {\n return isNumber(value) || isString(value) && !isNaN(value - parseFloat(value));\n }\n function isEmpty(obj) {\n return !(isArray(obj) ? obj.length : isObject(obj) ? Object.keys(obj).length : false);\n }\n function isUndefined(value) {\n return value === void 0;\n }\n function toBoolean(value) {\n return isBoolean(value) ? value : value === \"true\" || value === \"1\" || value === \"\" ? true : value === \"false\" || value === \"0\" ? false : value;\n }\n function toNumber(value) {\n const number = Number(value);\n return isNaN(number) ? false : number;\n }\n function toFloat(value) {\n return parseFloat(value) || 0;\n }\n function toNode(element) {\n return element && toNodes(element)[0];\n }\n function toNodes(element) {\n return isNode(element) ? [element] : Array.from(element || []).filter(isNode);\n }\n function toWindow(element) {\n if (isWindow(element)) {\n return element;\n }\n element = toNode(element);\n const document = isDocument(element) ? element : element == null ? void 0 : element.ownerDocument;\n return (document == null ? void 0 : document.defaultView) || window;\n }\n function isEqual(value, other) {\n return value === other || isObject(value) && isObject(other) && Object.keys(value).length === Object.keys(other).length && each(value, (val, key) => val === other[key]);\n }\n function swap(value, a, b) {\n return value.replace(new RegExp(`${a}|${b}`, \"g\"), (match) => match === a ? b : a);\n }\n function last(array) {\n return array[array.length - 1];\n }\n function each(obj, cb) {\n for (const key in obj) {\n if (false === cb(obj[key], key)) {\n return false;\n }\n }\n return true;\n }\n function sortBy(array, prop) {\n return array.slice().sort(\n ({ [prop]: propA = 0 }, { [prop]: propB = 0 }) => propA > propB ? 1 : propB > propA ? -1 : 0\n );\n }\n function sumBy(array, iteratee) {\n return array.reduce(\n (sum, item) => sum + toFloat(isFunction(iteratee) ? iteratee(item) : item[iteratee]),\n 0\n );\n }\n function uniqueBy(array, prop) {\n const seen = /* @__PURE__ */ new Set();\n return array.filter(({ [prop]: check }) => seen.has(check) ? false : seen.add(check));\n }\n function pick(obj, props) {\n return props.reduce((res, prop) => ({ ...res, [prop]: obj[prop] }), {});\n }\n function clamp(number, min = 0, max = 1) {\n return Math.min(Math.max(toNumber(number) || 0, min), max);\n }\n function noop() {\n }\n function intersectRect(...rects) {\n return [\n [\"bottom\", \"top\"],\n [\"right\", \"left\"]\n ].every(\n ([minProp, maxProp]) => Math.min(...rects.map(({ [minProp]: min }) => min)) - Math.max(...rects.map(({ [maxProp]: max }) => max)) > 0\n );\n }\n function pointInRect(point, rect) {\n return point.x <= rect.right && point.x >= rect.left && point.y <= rect.bottom && point.y >= rect.top;\n }\n function ratio(dimensions, prop, value) {\n const aProp = prop === \"width\" ? \"height\" : \"width\";\n return {\n [aProp]: dimensions[prop] ? Math.round(value * dimensions[aProp] / dimensions[prop]) : dimensions[aProp],\n [prop]: value\n };\n }\n function contain(dimensions, maxDimensions) {\n dimensions = { ...dimensions };\n for (const prop in dimensions) {\n dimensions = dimensions[prop] > maxDimensions[prop] ? ratio(dimensions, prop, maxDimensions[prop]) : dimensions;\n }\n return dimensions;\n }\n function cover$1(dimensions, maxDimensions) {\n dimensions = contain(dimensions, maxDimensions);\n for (const prop in dimensions) {\n dimensions = dimensions[prop] < maxDimensions[prop] ? ratio(dimensions, prop, maxDimensions[prop]) : dimensions;\n }\n return dimensions;\n }\n const Dimensions = { ratio, contain, cover: cover$1 };\n function getIndex(i, elements, current = 0, finite = false) {\n elements = toNodes(elements);\n const { length } = elements;\n if (!length) {\n return -1;\n }\n i = isNumeric(i) ? toNumber(i) : i === \"next\" ? current + 1 : i === \"previous\" ? current - 1 : i === \"last\" ? length - 1 : elements.indexOf(toNode(i));\n if (finite) {\n return clamp(i, 0, length - 1);\n }\n i %= length;\n return i < 0 ? i + length : i;\n }\n function memoize(fn) {\n const cache = /* @__PURE__ */ Object.create(null);\n return (key, ...args) => cache[key] || (cache[key] = fn(key, ...args));\n }\n\n function addClass(element, ...classes) {\n for (const node of toNodes(element)) {\n const add = toClasses(classes).filter((cls) => !hasClass(node, cls));\n if (add.length) {\n node.classList.add(...add);\n }\n }\n }\n function removeClass(element, ...classes) {\n for (const node of toNodes(element)) {\n const remove = toClasses(classes).filter((cls) => hasClass(node, cls));\n if (remove.length) {\n node.classList.remove(...remove);\n }\n }\n }\n function replaceClass(element, oldClass, newClass) {\n newClass = toClasses(newClass);\n oldClass = toClasses(oldClass).filter((cls) => !includes(newClass, cls));\n removeClass(element, oldClass);\n addClass(element, newClass);\n }\n function hasClass(element, cls) {\n [cls] = toClasses(cls);\n return toNodes(element).some((node) => node.classList.contains(cls));\n }\n function toggleClass(element, cls, force) {\n const classes = toClasses(cls);\n if (!isUndefined(force)) {\n force = !!force;\n }\n for (const node of toNodes(element)) {\n for (const cls2 of classes) {\n node.classList.toggle(cls2, force);\n }\n }\n }\n function toClasses(str) {\n return str ? isArray(str) ? str.map(toClasses).flat() : String(str).split(\" \").filter(Boolean) : [];\n }\n\n function attr(element, name, value) {\n var _a;\n if (isObject(name)) {\n for (const key in name) {\n attr(element, key, name[key]);\n }\n return;\n }\n if (isUndefined(value)) {\n return (_a = toNode(element)) == null ? void 0 : _a.getAttribute(name);\n } else {\n for (const el of toNodes(element)) {\n if (isFunction(value)) {\n value = value.call(el, attr(el, name));\n }\n if (value === null) {\n removeAttr(el, name);\n } else {\n el.setAttribute(name, value);\n }\n }\n }\n }\n function hasAttr(element, name) {\n return toNodes(element).some((element2) => element2.hasAttribute(name));\n }\n function removeAttr(element, name) {\n toNodes(element).forEach((element2) => element2.removeAttribute(name));\n }\n function data(element, attribute) {\n for (const name of [attribute, `data-${attribute}`]) {\n if (hasAttr(element, name)) {\n return attr(element, name);\n }\n }\n }\n\n const inBrowser = typeof window !== \"undefined\";\n const isRtl = inBrowser && document.dir === \"rtl\";\n const hasTouch = inBrowser && \"ontouchstart\" in window;\n const hasPointerEvents = inBrowser && window.PointerEvent;\n const pointerDown$1 = hasPointerEvents ? \"pointerdown\" : hasTouch ? \"touchstart\" : \"mousedown\";\n const pointerMove$1 = hasPointerEvents ? \"pointermove\" : hasTouch ? \"touchmove\" : \"mousemove\";\n const pointerUp$1 = hasPointerEvents ? \"pointerup\" : hasTouch ? \"touchend\" : \"mouseup\";\n const pointerEnter = hasPointerEvents ? \"pointerenter\" : hasTouch ? \"\" : \"mouseenter\";\n const pointerLeave = hasPointerEvents ? \"pointerleave\" : hasTouch ? \"\" : \"mouseleave\";\n const pointerCancel = hasPointerEvents ? \"pointercancel\" : \"touchcancel\";\n\n const voidElements = {\n area: true,\n base: true,\n br: true,\n col: true,\n embed: true,\n hr: true,\n img: true,\n input: true,\n keygen: true,\n link: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true\n };\n function isVoidElement(element) {\n return toNodes(element).some((element2) => voidElements[element2.tagName.toLowerCase()]);\n }\n const isVisibleFn = inBrowser && Element.prototype.checkVisibility || function() {\n return this.offsetWidth || this.offsetHeight || this.getClientRects().length;\n };\n function isVisible(element) {\n return toNodes(element).some((element2) => isVisibleFn.call(element2));\n }\n const selInput = \"input,select,textarea,button\";\n function isInput(element) {\n return toNodes(element).some((element2) => matches(element2, selInput));\n }\n const selFocusable = `${selInput},a[href],[tabindex]`;\n function isFocusable(element) {\n return matches(element, selFocusable);\n }\n function parent(element) {\n var _a;\n return (_a = toNode(element)) == null ? void 0 : _a.parentElement;\n }\n function filter$1(element, selector) {\n return toNodes(element).filter((element2) => matches(element2, selector));\n }\n function matches(element, selector) {\n return toNodes(element).some((element2) => element2.matches(selector));\n }\n function parents(element, selector) {\n const elements = [];\n while (element = parent(element)) {\n if (!selector || matches(element, selector)) {\n elements.push(element);\n }\n }\n return elements;\n }\n function children(element, selector) {\n element = toNode(element);\n const children2 = element ? toArray(element.children) : [];\n return selector ? filter$1(children2, selector) : children2;\n }\n function index(element, ref) {\n return ref ? toNodes(element).indexOf(toNode(ref)) : children(parent(element)).indexOf(element);\n }\n function isSameSiteAnchor(el) {\n el = toNode(el);\n return el && [\"origin\", \"pathname\", \"search\"].every((part) => el[part] === location[part]);\n }\n function getTargetedElement(el) {\n if (isSameSiteAnchor(el)) {\n const { hash, ownerDocument } = toNode(el);\n const id = decodeURIComponent(hash).slice(1);\n return ownerDocument.getElementById(id) || ownerDocument.getElementsByName(id)[0];\n }\n }\n\n function query(selector, context) {\n return find(selector, getContext(selector, context));\n }\n function queryAll(selector, context) {\n return findAll(selector, getContext(selector, context));\n }\n function find(selector, context) {\n return toNode(_query(selector, toNode(context), \"querySelector\"));\n }\n function findAll(selector, context) {\n return toNodes(_query(selector, toNode(context), \"querySelectorAll\"));\n }\n function getContext(selector, context = document) {\n return isDocument(context) || parseSelector(selector).isContextSelector ? context : context.ownerDocument;\n }\n const addStarRe = /([!>+~-])(?=\\s+[!>+~-]|\\s*$)/g;\n const splitSelectorRe = /(\\([^)]*\\)|[^,])+/g;\n const parseSelector = memoize((selector) => {\n let isContextSelector = false;\n if (!selector || !isString(selector)) {\n return {};\n }\n const selectors = [];\n for (let sel of selector.match(splitSelectorRe)) {\n sel = sel.trim().replace(addStarRe, \"$1 *\");\n isContextSelector || (isContextSelector = [\"!\", \"+\", \"~\", \"-\", \">\"].includes(sel[0]));\n selectors.push(sel);\n }\n return {\n selector: selectors.join(\",\"),\n selectors,\n isContextSelector\n };\n });\n const positionRe = /(\\([^)]*\\)|\\S)*/;\n const parsePositionSelector = memoize((selector) => {\n selector = selector.slice(1).trim();\n const [position] = selector.match(positionRe);\n return [position, selector.slice(position.length + 1)];\n });\n function _query(selector, context = document, queryFn) {\n const parsed = parseSelector(selector);\n if (!parsed.isContextSelector) {\n return parsed.selector ? _doQuery(context, queryFn, parsed.selector) : selector;\n }\n selector = \"\";\n const isSingle = parsed.selectors.length === 1;\n for (let sel of parsed.selectors) {\n let positionSel;\n let ctx = context;\n if (sel[0] === \"!\") {\n [positionSel, sel] = parsePositionSelector(sel);\n ctx = context.parentElement.closest(positionSel);\n if (!sel && isSingle) {\n return ctx;\n }\n }\n if (ctx && sel[0] === \"-\") {\n [positionSel, sel] = parsePositionSelector(sel);\n ctx = ctx.previousElementSibling;\n ctx = matches(ctx, positionSel) ? ctx : null;\n if (!sel && isSingle) {\n return ctx;\n }\n }\n if (!ctx) {\n continue;\n }\n if (isSingle) {\n if (sel[0] === \"~\" || sel[0] === \"+\") {\n sel = `:scope > :nth-child(${index(ctx) + 1}) ${sel}`;\n ctx = ctx.parentElement;\n } else if (sel[0] === \">\") {\n sel = `:scope ${sel}`;\n }\n return _doQuery(ctx, queryFn, sel);\n }\n selector += `${selector ? \",\" : \"\"}${domPath(ctx)} ${sel}`;\n }\n if (!isDocument(context)) {\n context = context.ownerDocument;\n }\n return _doQuery(context, queryFn, selector);\n }\n function _doQuery(context, queryFn, selector) {\n try {\n return context[queryFn](selector);\n } catch (e) {\n return null;\n }\n }\n function domPath(element) {\n const names = [];\n while (element.parentNode) {\n const id = attr(element, \"id\");\n if (id) {\n names.unshift(`#${escape(id)}`);\n break;\n } else {\n let { tagName } = element;\n if (tagName !== \"HTML\") {\n tagName += `:nth-child(${index(element) + 1})`;\n }\n names.unshift(tagName);\n element = element.parentNode;\n }\n }\n return names.join(\" > \");\n }\n function escape(css) {\n return isString(css) ? CSS.escape(css) : \"\";\n }\n\n function on(...args) {\n let [targets, types, selector, listener, useCapture = false] = getArgs(args);\n if (listener.length > 1) {\n listener = detail(listener);\n }\n if (useCapture == null ? void 0 : useCapture.self) {\n listener = selfFilter(listener);\n }\n if (selector) {\n listener = delegate(selector, listener);\n }\n for (const type of types) {\n for (const target of targets) {\n target.addEventListener(type, listener, useCapture);\n }\n }\n return () => off(targets, types, listener, useCapture);\n }\n function off(...args) {\n let [targets, types, , listener, useCapture = false] = getArgs(args);\n for (const type of types) {\n for (const target of targets) {\n target.removeEventListener(type, listener, useCapture);\n }\n }\n }\n function once(...args) {\n const [element, types, selector, listener, useCapture = false, condition] = getArgs(args);\n const off2 = on(\n element,\n types,\n selector,\n (e) => {\n const result = !condition || condition(e);\n if (result) {\n off2();\n listener(e, result);\n }\n },\n useCapture\n );\n return off2;\n }\n function trigger(targets, event, detail2) {\n return toEventTargets(targets).every(\n (target) => target.dispatchEvent(createEvent(event, true, true, detail2))\n );\n }\n function createEvent(e, bubbles = true, cancelable = false, detail2) {\n if (isString(e)) {\n e = new CustomEvent(e, { bubbles, cancelable, detail: detail2 });\n }\n return e;\n }\n function getArgs(args) {\n args[0] = toEventTargets(args[0]);\n if (isString(args[1])) {\n args[1] = args[1].split(\" \");\n }\n if (isFunction(args[2])) {\n args.splice(2, 0, false);\n }\n return args;\n }\n function delegate(selector, listener) {\n return (e) => {\n const current = selector[0] === \">\" ? findAll(selector, e.currentTarget).reverse().find((element) => element.contains(e.target)) : e.target.closest(selector);\n if (current) {\n e.current = current;\n listener.call(this, e);\n delete e.current;\n }\n };\n }\n function detail(listener) {\n return (e) => isArray(e.detail) ? listener(e, ...e.detail) : listener(e);\n }\n function selfFilter(listener) {\n return function(e) {\n if (e.target === e.currentTarget || e.target === e.current) {\n return listener.call(null, e);\n }\n };\n }\n function isEventTarget(target) {\n return target && \"addEventListener\" in target;\n }\n function toEventTarget(target) {\n return isEventTarget(target) ? target : toNode(target);\n }\n function toEventTargets(target) {\n return isArray(target) ? target.map(toEventTarget).filter(Boolean) : isString(target) ? findAll(target) : isEventTarget(target) ? [target] : toNodes(target);\n }\n function isTouch(e) {\n return e.pointerType === \"touch\" || !!e.touches;\n }\n function getEventPos(e) {\n var _a, _b;\n const { clientX: x, clientY: y } = ((_a = e.touches) == null ? void 0 : _a[0]) || ((_b = e.changedTouches) == null ? void 0 : _b[0]) || e;\n return { x, y };\n }\n\n const cssNumber = {\n \"animation-iteration-count\": true,\n \"column-count\": true,\n \"fill-opacity\": true,\n \"flex-grow\": true,\n \"flex-shrink\": true,\n \"font-weight\": true,\n \"line-height\": true,\n opacity: true,\n order: true,\n orphans: true,\n \"stroke-dasharray\": true,\n \"stroke-dashoffset\": true,\n widows: true,\n \"z-index\": true,\n zoom: true\n };\n function css(element, property, value, priority) {\n const elements = toNodes(element);\n for (const element2 of elements) {\n if (isString(property)) {\n property = propName(property);\n if (isUndefined(value)) {\n return getComputedStyle(element2).getPropertyValue(property);\n } else {\n element2.style.setProperty(\n property,\n isNumeric(value) && !cssNumber[property] ? `${value}px` : value || isNumber(value) ? value : \"\",\n priority\n );\n }\n } else if (isArray(property)) {\n const props = {};\n for (const prop of property) {\n props[prop] = css(element2, prop);\n }\n return props;\n } else if (isObject(property)) {\n for (const prop in property) {\n css(element2, prop, property[prop], value);\n }\n }\n }\n return elements[0];\n }\n const propName = memoize((name) => {\n if (startsWith(name, \"--\")) {\n return name;\n }\n name = hyphenate(name);\n const { style } = document.documentElement;\n if (name in style) {\n return name;\n }\n for (const prefix of [\"webkit\", \"moz\"]) {\n const prefixedName = `-${prefix}-${name}`;\n if (prefixedName in style) {\n return prefixedName;\n }\n }\n });\n\n const clsTransition = \"uk-transition\";\n const transitionEnd = \"transitionend\";\n const transitionCanceled = \"transitioncanceled\";\n function transition$1(element, props, duration = 400, timing = \"linear\") {\n duration = Math.round(duration);\n return Promise.all(\n toNodes(element).map(\n (element2) => new Promise((resolve, reject) => {\n for (const name in props) {\n css(element2, name);\n }\n const timer = setTimeout(() => trigger(element2, transitionEnd), duration);\n once(\n element2,\n [transitionEnd, transitionCanceled],\n ({ type }) => {\n clearTimeout(timer);\n removeClass(element2, clsTransition);\n css(element2, {\n transitionProperty: \"\",\n transitionDuration: \"\",\n transitionTimingFunction: \"\"\n });\n type === transitionCanceled ? reject() : resolve(element2);\n },\n { self: true }\n );\n addClass(element2, clsTransition);\n css(element2, {\n transitionProperty: Object.keys(props).map(propName).join(\",\"),\n transitionDuration: `${duration}ms`,\n transitionTimingFunction: timing,\n ...props\n });\n })\n )\n );\n }\n const Transition = {\n start: transition$1,\n async stop(element) {\n trigger(element, transitionEnd);\n await Promise.resolve();\n },\n async cancel(element) {\n trigger(element, transitionCanceled);\n await Promise.resolve();\n },\n inProgress(element) {\n return hasClass(element, clsTransition);\n }\n };\n const clsAnimation = \"uk-animation\";\n const animationEnd = \"animationend\";\n const animationCanceled = \"animationcanceled\";\n function animate$2(element, animation, duration = 200, origin, out) {\n return Promise.all(\n toNodes(element).map(\n (element2) => new Promise((resolve, reject) => {\n if (hasClass(element2, clsAnimation)) {\n trigger(element2, animationCanceled);\n }\n const classes = [\n animation,\n clsAnimation,\n `${clsAnimation}-${out ? \"leave\" : \"enter\"}`,\n origin && `uk-transform-origin-${origin}`,\n out && `${clsAnimation}-reverse`\n ];\n const timer = setTimeout(() => trigger(element2, animationEnd), duration);\n once(\n element2,\n [animationEnd, animationCanceled],\n ({ type }) => {\n clearTimeout(timer);\n type === animationCanceled ? reject() : resolve(element2);\n css(element2, \"animationDuration\", \"\");\n removeClass(element2, classes);\n },\n { self: true }\n );\n css(element2, \"animationDuration\", `${duration}ms`);\n addClass(element2, classes);\n })\n )\n );\n }\n const Animation = {\n in: animate$2,\n out(element, animation, duration, origin) {\n return animate$2(element, animation, duration, origin, true);\n },\n inProgress(element) {\n return hasClass(element, clsAnimation);\n },\n cancel(element) {\n trigger(element, animationCanceled);\n }\n };\n\n function ready(fn) {\n if (document.readyState !== \"loading\") {\n fn();\n return;\n }\n once(document, \"DOMContentLoaded\", fn);\n }\n function isTag(element, ...tagNames) {\n return tagNames.some((tagName) => {\n var _a;\n return ((_a = element == null ? void 0 : element.tagName) == null ? void 0 : _a.toLowerCase()) === tagName.toLowerCase();\n });\n }\n function empty(element) {\n element = $(element);\n element.innerHTML = \"\";\n return element;\n }\n function html(parent2, html2) {\n return isUndefined(html2) ? $(parent2).innerHTML : append(empty(parent2), html2);\n }\n const prepend = applyFn(\"prepend\");\n const append = applyFn(\"append\");\n const before = applyFn(\"before\");\n const after = applyFn(\"after\");\n function applyFn(fn) {\n return function(ref, element) {\n var _a;\n const nodes = toNodes(isString(element) ? fragment(element) : element);\n (_a = $(ref)) == null ? void 0 : _a[fn](...nodes);\n return unwrapSingle(nodes);\n };\n }\n function remove$1(element) {\n toNodes(element).forEach((element2) => element2.remove());\n }\n function wrapAll(element, structure) {\n structure = toNode(before(element, structure));\n while (structure.firstElementChild) {\n structure = structure.firstElementChild;\n }\n append(structure, element);\n return structure;\n }\n function wrapInner(element, structure) {\n return toNodes(\n toNodes(element).map(\n (element2) => element2.hasChildNodes() ? wrapAll(toArray(element2.childNodes), structure) : append(element2, structure)\n )\n );\n }\n function unwrap(element) {\n toNodes(element).map(parent).filter((value, index, self) => self.indexOf(value) === index).forEach((parent2) => parent2.replaceWith(...parent2.childNodes));\n }\n const singleTagRe = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/;\n function fragment(html2) {\n const matches = singleTagRe.exec(html2);\n if (matches) {\n return document.createElement(matches[1]);\n }\n const container = document.createElement(\"template\");\n container.innerHTML = html2.trim();\n return unwrapSingle(container.content.childNodes);\n }\n function unwrapSingle(nodes) {\n return nodes.length > 1 ? nodes : nodes[0];\n }\n function apply(node, fn) {\n if (!isElement(node)) {\n return;\n }\n fn(node);\n node = node.firstElementChild;\n while (node) {\n apply(node, fn);\n node = node.nextElementSibling;\n }\n }\n function $(selector, context) {\n return isHtml(selector) ? toNode(fragment(selector)) : find(selector, context);\n }\n function $$(selector, context) {\n return isHtml(selector) ? toNodes(fragment(selector)) : findAll(selector, context);\n }\n function isHtml(str) {\n return isString(str) && startsWith(str.trim(), \"<\");\n }\n\n const dirs$1 = {\n width: [\"left\", \"right\"],\n height: [\"top\", \"bottom\"]\n };\n function dimensions$1(element) {\n const rect = isElement(element) ? toNode(element).getBoundingClientRect() : { height: height(element), width: width(element), top: 0, left: 0 };\n return {\n height: rect.height,\n width: rect.width,\n top: rect.top,\n left: rect.left,\n bottom: rect.top + rect.height,\n right: rect.left + rect.width\n };\n }\n function offset(element, coordinates) {\n if (coordinates) {\n css(element, { left: 0, top: 0 });\n }\n const currentOffset = dimensions$1(element);\n if (element) {\n const { scrollY, scrollX } = toWindow(element);\n const offsetBy = { height: scrollY, width: scrollX };\n for (const dir in dirs$1) {\n for (const prop of dirs$1[dir]) {\n currentOffset[prop] += offsetBy[dir];\n }\n }\n }\n if (!coordinates) {\n return currentOffset;\n }\n for (const prop of [\"left\", \"top\"]) {\n css(element, prop, coordinates[prop] - currentOffset[prop]);\n }\n }\n function position(element) {\n let { top, left } = offset(element);\n const {\n ownerDocument: { body, documentElement },\n offsetParent\n } = toNode(element);\n let parent = offsetParent || documentElement;\n while (parent && (parent === body || parent === documentElement) && css(parent, \"position\") === \"static\") {\n parent = parent.parentNode;\n }\n if (isElement(parent)) {\n const parentOffset = offset(parent);\n top -= parentOffset.top + toFloat(css(parent, \"borderTopWidth\"));\n left -= parentOffset.left + toFloat(css(parent, \"borderLeftWidth\"));\n }\n return {\n top: top - toFloat(css(element, \"marginTop\")),\n left: left - toFloat(css(element, \"marginLeft\"))\n };\n }\n function offsetPosition(element) {\n element = toNode(element);\n const offset2 = [element.offsetTop, element.offsetLeft];\n while (element = element.offsetParent) {\n offset2[0] += element.offsetTop + toFloat(css(element, `borderTopWidth`));\n offset2[1] += element.offsetLeft + toFloat(css(element, `borderLeftWidth`));\n if (css(element, \"position\") === \"fixed\") {\n const win = toWindow(element);\n offset2[0] += win.scrollY;\n offset2[1] += win.scrollX;\n return offset2;\n }\n }\n return offset2;\n }\n const height = dimension(\"height\");\n const width = dimension(\"width\");\n function dimension(prop) {\n const propName = ucfirst(prop);\n return (element, value) => {\n if (isUndefined(value)) {\n if (isWindow(element)) {\n return element[`inner${propName}`];\n }\n if (isDocument(element)) {\n const doc = element.documentElement;\n return Math.max(doc[`offset${propName}`], doc[`scroll${propName}`]);\n }\n element = toNode(element);\n value = css(element, prop);\n value = value === \"auto\" ? element[`offset${propName}`] : toFloat(value) || 0;\n return value - boxModelAdjust(element, prop);\n } else {\n return css(\n element,\n prop,\n !value && value !== 0 ? \"\" : +value + boxModelAdjust(element, prop) + \"px\"\n );\n }\n };\n }\n function boxModelAdjust(element, prop, sizing = \"border-box\") {\n return css(element, \"boxSizing\") === sizing ? sumBy(\n dirs$1[prop],\n (prop2) => toFloat(css(element, `padding-${prop2}`)) + toFloat(css(element, `border-${prop2}-width`))\n ) : 0;\n }\n function flipPosition(pos) {\n for (const dir in dirs$1) {\n for (const i in dirs$1[dir]) {\n if (dirs$1[dir][i] === pos) {\n return dirs$1[dir][1 - i];\n }\n }\n }\n return pos;\n }\n function toPx(value, property = \"width\", element = window, offsetDim = false) {\n if (!isString(value)) {\n return toFloat(value);\n }\n return sumBy(parseCalc(value), (value2) => {\n const unit = parseUnit(value2);\n return unit ? percent(\n unit === \"vh\" ? getViewportHeight() : unit === \"vw\" ? width(toWindow(element)) : offsetDim ? element[`offset${ucfirst(property)}`] : dimensions$1(element)[property],\n value2\n ) : value2;\n });\n }\n const calcRe = /-?\\d+(?:\\.\\d+)?(?:v[wh]|%|px)?/g;\n const parseCalc = memoize((calc) => calc.toString().replace(/\\s/g, \"\").match(calcRe) || []);\n const unitRe$1 = /(?:v[hw]|%)$/;\n const parseUnit = memoize((str) => (str.match(unitRe$1) || [])[0]);\n function percent(base, value) {\n return base * toFloat(value) / 100;\n }\n let vh;\n let vhEl;\n function getViewportHeight() {\n if (vh) {\n return vh;\n }\n if (!vhEl) {\n vhEl = $(\"
    \");\n css(vhEl, {\n height: \"100vh\",\n position: \"fixed\"\n });\n on(window, \"resize\", () => vh = null);\n }\n append(document.body, vhEl);\n vh = vhEl.clientHeight;\n remove$1(vhEl);\n return vh;\n }\n\n const fastdom = { read, write, clear, flush };\n const reads = [];\n const writes = [];\n function read(task) {\n reads.push(task);\n scheduleFlush();\n return task;\n }\n function write(task) {\n writes.push(task);\n scheduleFlush();\n return task;\n }\n function clear(task) {\n remove(reads, task);\n remove(writes, task);\n }\n let scheduled = false;\n function flush() {\n runTasks(reads);\n runTasks(writes.splice(0));\n scheduled = false;\n if (reads.length || writes.length) {\n scheduleFlush();\n }\n }\n function scheduleFlush() {\n if (!scheduled) {\n scheduled = true;\n queueMicrotask(flush);\n }\n }\n function runTasks(tasks) {\n let task;\n while (task = tasks.shift()) {\n try {\n task();\n } catch (e) {\n console.error(e);\n }\n }\n }\n function remove(array, item) {\n const index = array.indexOf(item);\n return ~index && array.splice(index, 1);\n }\n\n class MouseTracker {\n init() {\n this.positions = [];\n let position;\n this.unbind = on(document, \"mousemove\", (e) => position = getEventPos(e));\n this.interval = setInterval(() => {\n if (!position) {\n return;\n }\n this.positions.push(position);\n if (this.positions.length > 5) {\n this.positions.shift();\n }\n }, 50);\n }\n cancel() {\n var _a;\n (_a = this.unbind) == null ? void 0 : _a.call(this);\n clearInterval(this.interval);\n }\n movesTo(target) {\n if (!this.positions || this.positions.length < 2) {\n return false;\n }\n const p = dimensions$1(target);\n const { left, right, top, bottom } = p;\n const [prevPosition] = this.positions;\n const position = last(this.positions);\n const path = [prevPosition, position];\n if (pointInRect(position, p)) {\n return false;\n }\n const diagonals = [\n [\n { x: left, y: top },\n { x: right, y: bottom }\n ],\n [\n { x: left, y: bottom },\n { x: right, y: top }\n ]\n ];\n return diagonals.some((diagonal) => {\n const intersection = intersect(path, diagonal);\n return intersection && pointInRect(intersection, p);\n });\n }\n }\n function intersect([{ x: x1, y: y1 }, { x: x2, y: y2 }], [{ x: x3, y: y3 }, { x: x4, y: y4 }]) {\n const denominator = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1);\n if (denominator === 0) {\n return false;\n }\n const ua = ((x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)) / denominator;\n if (ua < 0) {\n return false;\n }\n return { x: x1 + ua * (x2 - x1), y: y1 + ua * (y2 - y1) };\n }\n\n function observeIntersection(targets, cb, options = {}, { intersecting = true } = {}) {\n const observer = new IntersectionObserver(\n intersecting ? (entries, observer2) => {\n if (entries.some((entry) => entry.isIntersecting)) {\n cb(entries, observer2);\n }\n } : cb,\n options\n );\n for (const el of toNodes(targets)) {\n observer.observe(el);\n }\n return observer;\n }\n const hasResizeObserver = inBrowser && window.ResizeObserver;\n function observeResize(targets, cb, options = { box: \"border-box\" }) {\n if (hasResizeObserver) {\n return observe$1(ResizeObserver, targets, cb, options);\n }\n const off = [on(window, \"load resize\", cb), on(document, \"loadedmetadata load\", cb, true)];\n return { disconnect: () => off.map((cb2) => cb2()) };\n }\n function observeViewportResize(cb) {\n return { disconnect: on([window, window.visualViewport], \"resize\", cb) };\n }\n function observeMutation(targets, cb, options) {\n return observe$1(MutationObserver, targets, cb, options);\n }\n function observe$1(Observer, targets, cb, options) {\n const observer = new Observer(cb);\n for (const el of toNodes(targets)) {\n observer.observe(el, options);\n }\n return observer;\n }\n\n function play(el) {\n if (isIFrame(el)) {\n call(el, { func: \"playVideo\", method: \"play\" });\n }\n if (isHTML5(el)) {\n el.play().catch(noop);\n }\n }\n function pause(el) {\n if (isIFrame(el)) {\n call(el, { func: \"pauseVideo\", method: \"pause\" });\n }\n if (isHTML5(el)) {\n el.pause();\n }\n }\n function mute(el) {\n if (isIFrame(el)) {\n call(el, { func: \"mute\", method: \"setVolume\", value: 0 });\n }\n if (isHTML5(el)) {\n el.muted = true;\n }\n }\n function isVideo(el) {\n return isHTML5(el) || isIFrame(el);\n }\n function isHTML5(el) {\n return isTag(el, \"video\");\n }\n function isIFrame(el) {\n return isTag(el, \"iframe\") && (isYoutube(el) || isVimeo(el));\n }\n function isYoutube(el) {\n return !!el.src.match(\n /\\/\\/.*?youtube(-nocookie)?\\.[a-z]+\\/(watch\\?v=[^&\\s]+|embed)|youtu\\.be\\/.*/\n );\n }\n function isVimeo(el) {\n return !!el.src.match(/vimeo\\.com\\/video\\/.*/);\n }\n async function call(el, cmd) {\n await enableApi(el);\n post(el, cmd);\n }\n function post(el, cmd) {\n el.contentWindow.postMessage(JSON.stringify({ event: \"command\", ...cmd }), \"*\");\n }\n const stateKey = \"_ukPlayer\";\n let counter = 0;\n function enableApi(el) {\n if (el[stateKey]) {\n return el[stateKey];\n }\n const youtube = isYoutube(el);\n const vimeo = isVimeo(el);\n const id = ++counter;\n let poller;\n return el[stateKey] = new Promise((resolve) => {\n youtube && once(el, \"load\", () => {\n const listener = () => post(el, { event: \"listening\", id });\n poller = setInterval(listener, 100);\n listener();\n });\n once(window, \"message\", resolve, false, ({ data }) => {\n try {\n data = JSON.parse(data);\n return youtube && (data == null ? void 0 : data.id) === id && data.event === \"onReady\" || vimeo && Number(data == null ? void 0 : data.player_id) === id;\n } catch (e) {\n }\n });\n el.src = `${el.src}${includes(el.src, \"?\") ? \"&\" : \"?\"}${youtube ? \"enablejsapi=1\" : `api=1&player_id=${id}`}`;\n }).then(() => clearInterval(poller));\n }\n\n function isInView(element, offsetTop = 0, offsetLeft = 0) {\n if (!isVisible(element)) {\n return false;\n }\n return intersectRect(\n ...overflowParents(element).map((parent2) => {\n const { top, left, bottom, right } = offsetViewport(parent2);\n return {\n top: top - offsetTop,\n left: left - offsetLeft,\n bottom: bottom + offsetTop,\n right: right + offsetLeft\n };\n }).concat(offset(element))\n );\n }\n function scrollIntoView(element, { offset: offsetBy = 0 } = {}) {\n const parents2 = isVisible(element) ? scrollParents(element, false, [\"hidden\"]) : [];\n return parents2.reduce(\n (fn, scrollElement, i) => {\n const { scrollTop, scrollHeight, offsetHeight } = scrollElement;\n const viewport = offsetViewport(scrollElement);\n const maxScroll = scrollHeight - viewport.height;\n const { height: elHeight, top: elTop } = parents2[i - 1] ? offsetViewport(parents2[i - 1]) : offset(element);\n let top = Math.ceil(elTop - viewport.top - offsetBy + scrollTop);\n if (offsetBy > 0 && offsetHeight < elHeight + offsetBy) {\n top += offsetBy;\n } else {\n offsetBy = 0;\n }\n if (top > maxScroll) {\n offsetBy -= top - maxScroll;\n top = maxScroll;\n } else if (top < 0) {\n offsetBy -= top;\n top = 0;\n }\n return () => scrollTo(scrollElement, top - scrollTop, element, maxScroll).then(fn);\n },\n () => Promise.resolve()\n )();\n function scrollTo(element2, top, targetEl, maxScroll) {\n return new Promise((resolve) => {\n const scroll = element2.scrollTop;\n const duration = getDuration(Math.abs(top));\n const start = Date.now();\n const isScrollingElement = scrollingElement(element2) === element2;\n const targetTop = offset(targetEl).top + (isScrollingElement ? 0 : scroll);\n let prev = 0;\n let frames = 15;\n (function step() {\n const percent = ease(clamp((Date.now() - start) / duration));\n let diff = 0;\n if (parents2[0] === element2 && scroll + top < maxScroll) {\n diff = offset(targetEl).top + (isScrollingElement ? 0 : element2.scrollTop) - targetTop - dimensions$1(getCoveringElement(targetEl)).height;\n }\n if (css(element2, \"scrollBehavior\") !== \"auto\") {\n css(element2, \"scrollBehavior\", \"auto\");\n }\n element2.scrollTop = scroll + (top + diff) * percent;\n css(element2, \"scrollBehavior\", \"\");\n if (percent === 1 && (prev === diff || !frames--)) {\n resolve();\n } else {\n prev = diff;\n requestAnimationFrame(step);\n }\n })();\n });\n }\n function getDuration(dist) {\n return 40 * Math.pow(dist, 0.375);\n }\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n }\n function scrolledOver(element, startOffset = 0, endOffset = 0) {\n if (!isVisible(element)) {\n return 0;\n }\n const scrollElement = scrollParent(element, true);\n const { scrollHeight, scrollTop } = scrollElement;\n const { height: viewportHeight } = offsetViewport(scrollElement);\n const maxScroll = scrollHeight - viewportHeight;\n const elementOffsetTop = offsetPosition(element)[0] - offsetPosition(scrollElement)[0];\n const start = Math.max(0, elementOffsetTop - viewportHeight + startOffset);\n const end = Math.min(maxScroll, elementOffsetTop + element.offsetHeight - endOffset);\n return start < end ? clamp((scrollTop - start) / (end - start)) : 1;\n }\n function scrollParents(element, scrollable = false, props = []) {\n const scrollEl = scrollingElement(element);\n let ancestors = parents(element).reverse();\n ancestors = ancestors.slice(ancestors.indexOf(scrollEl) + 1);\n const fixedIndex = findIndex(ancestors, (el) => css(el, \"position\") === \"fixed\");\n if (~fixedIndex) {\n ancestors = ancestors.slice(fixedIndex);\n }\n return [scrollEl].concat(\n ancestors.filter(\n (parent2) => css(parent2, \"overflow\").split(\" \").some((prop) => includes([\"auto\", \"scroll\", ...props], prop)) && (!scrollable || parent2.scrollHeight > offsetViewport(parent2).height)\n )\n ).reverse();\n }\n function scrollParent(...args) {\n return scrollParents(...args)[0];\n }\n function overflowParents(element) {\n return scrollParents(element, false, [\"hidden\", \"clip\"]);\n }\n function offsetViewport(scrollElement) {\n const window = toWindow(scrollElement);\n const documentScrollingElement = scrollingElement(scrollElement);\n const useWindow = !isNode(scrollElement) || scrollElement.contains(documentScrollingElement);\n if (useWindow && window.visualViewport) {\n let { height, width, scale, pageTop: top, pageLeft: left } = window.visualViewport;\n height = Math.round(height * scale);\n width = Math.round(width * scale);\n return { height, width, top, left, bottom: top + height, right: left + width };\n }\n let rect = offset(useWindow ? window : scrollElement);\n if (css(scrollElement, \"display\") === \"inline\") {\n return rect;\n }\n const { body, documentElement } = window.document;\n const viewportElement = useWindow ? documentScrollingElement === documentElement || // In quirks mode the scrolling element is body, even though the viewport is html\n documentScrollingElement.clientHeight < body.clientHeight ? documentScrollingElement : body : scrollElement;\n for (let [prop, dir, start, end] of [\n [\"width\", \"x\", \"left\", \"right\"],\n [\"height\", \"y\", \"top\", \"bottom\"]\n ]) {\n const subpixel = rect[prop] % 1;\n rect[start] += toFloat(css(viewportElement, `border-${start}-width`));\n rect[prop] = rect[dir] = viewportElement[`client${ucfirst(prop)}`] - (subpixel ? subpixel < 0.5 ? -subpixel : 1 - subpixel : 0);\n rect[end] = rect[prop] + rect[start];\n }\n return rect;\n }\n function getCoveringElement(target) {\n const { left, width, top } = dimensions$1(target);\n for (const position of top ? [0, top] : [0]) {\n let coverEl;\n for (const el of toWindow(target).document.elementsFromPoint(left + width / 2, position)) {\n if (!el.contains(target) && // If e.g. Offcanvas is not yet closed\n !hasClass(el, \"uk-togglable-leave\") && (hasPosition(el, \"fixed\") && zIndex(\n parents(target).reverse().find(\n (parent2) => !parent2.contains(el) && !hasPosition(parent2, \"static\")\n )\n ) < zIndex(el) || hasPosition(el, \"sticky\") && parent(el).contains(target)) && (!coverEl || dimensions$1(coverEl).height < dimensions$1(el).height)) {\n coverEl = el;\n }\n }\n if (coverEl) {\n return coverEl;\n }\n }\n }\n function zIndex(element) {\n return toFloat(css(element, \"zIndex\"));\n }\n function hasPosition(element, position) {\n return css(element, \"position\") === position;\n }\n function scrollingElement(element) {\n return toWindow(element).document.scrollingElement;\n }\n\n const dirs = [\n [\"width\", \"x\", \"left\", \"right\"],\n [\"height\", \"y\", \"top\", \"bottom\"]\n ];\n function positionAt(element, target, options) {\n options = {\n attach: {\n element: [\"left\", \"top\"],\n target: [\"left\", \"top\"],\n ...options.attach\n },\n offset: [0, 0],\n placement: [],\n ...options\n };\n if (!isArray(target)) {\n target = [target, target];\n }\n offset(element, getPosition(element, target, options));\n }\n function getPosition(element, target, options) {\n const position = attachTo(element, target, options);\n const { boundary, viewportOffset = 0, placement } = options;\n let offsetPosition = position;\n for (const [i, [prop, , start, end]] of Object.entries(dirs)) {\n const viewport = getViewport$2(element, target[i], viewportOffset, boundary, i);\n if (isWithin(position, viewport, i)) {\n continue;\n }\n let offsetBy = 0;\n if (placement[i] === \"flip\") {\n const attach = options.attach.target[i];\n if (attach === end && position[end] <= viewport[end] || attach === start && position[start] >= viewport[start]) {\n continue;\n }\n offsetBy = flip(element, target, options, i)[start] - position[start];\n const scrollArea = getScrollArea(element, target[i], viewportOffset, i);\n if (!isWithin(applyOffset(position, offsetBy, i), scrollArea, i)) {\n if (isWithin(position, scrollArea, i)) {\n continue;\n }\n if (options.recursion) {\n return false;\n }\n const newPos = flipAxis(element, target, options);\n if (newPos && isWithin(newPos, scrollArea, 1 - i)) {\n return newPos;\n }\n continue;\n }\n } else if (placement[i] === \"shift\") {\n const targetDim = offset(target[i]);\n const { offset: elOffset } = options;\n offsetBy = clamp(\n clamp(position[start], viewport[start], viewport[end] - position[prop]),\n targetDim[start] - position[prop] + elOffset[i],\n targetDim[end] - elOffset[i]\n ) - position[start];\n }\n offsetPosition = applyOffset(offsetPosition, offsetBy, i);\n }\n return offsetPosition;\n }\n function attachTo(element, target, options) {\n let { attach, offset: offsetBy } = {\n attach: {\n element: [\"left\", \"top\"],\n target: [\"left\", \"top\"],\n ...options.attach\n },\n offset: [0, 0],\n ...options\n };\n let elOffset = offset(element);\n for (const [i, [prop, , start, end]] of Object.entries(dirs)) {\n const targetOffset = attach.target[i] === attach.element[i] ? offsetViewport(target[i]) : offset(target[i]);\n elOffset = applyOffset(\n elOffset,\n targetOffset[start] - elOffset[start] + moveBy(attach.target[i], end, targetOffset[prop]) - moveBy(attach.element[i], end, elOffset[prop]) + +offsetBy[i],\n i\n );\n }\n return elOffset;\n }\n function applyOffset(position, offset2, i) {\n const [, dir, start, end] = dirs[i];\n const newPos = { ...position };\n newPos[start] = position[dir] = position[start] + offset2;\n newPos[end] += offset2;\n return newPos;\n }\n function moveBy(attach, end, dim) {\n return attach === \"center\" ? dim / 2 : attach === end ? dim : 0;\n }\n function getViewport$2(element, target, viewportOffset, boundary, i) {\n let viewport = getIntersectionArea(...commonScrollParents(element, target).map(offsetViewport));\n if (viewportOffset) {\n viewport[dirs[i][2]] += viewportOffset;\n viewport[dirs[i][3]] -= viewportOffset;\n }\n if (boundary) {\n viewport = getIntersectionArea(\n viewport,\n offset(isArray(boundary) ? boundary[i] : boundary)\n );\n }\n return viewport;\n }\n function getScrollArea(element, target, viewportOffset, i) {\n const [prop, axis, start, end] = dirs[i];\n const [scrollElement] = commonScrollParents(element, target);\n const viewport = offsetViewport(scrollElement);\n if ([\"auto\", \"scroll\"].includes(css(scrollElement, `overflow-${axis}`))) {\n viewport[start] -= scrollElement[`scroll${ucfirst(start)}`];\n viewport[end] = viewport[start] + scrollElement[`scroll${ucfirst(prop)}`];\n }\n viewport[start] += viewportOffset;\n viewport[end] -= viewportOffset;\n return viewport;\n }\n function commonScrollParents(element, target) {\n return overflowParents(target).filter((parent) => parent.contains(element));\n }\n function getIntersectionArea(...rects) {\n let area = {};\n for (const rect of rects) {\n for (const [, , start, end] of dirs) {\n area[start] = Math.max(area[start] || 0, rect[start]);\n area[end] = Math.min(...[area[end], rect[end]].filter(Boolean));\n }\n }\n return area;\n }\n function isWithin(positionA, positionB, i) {\n const [, , start, end] = dirs[i];\n return positionA[start] >= positionB[start] && positionA[end] <= positionB[end];\n }\n function flip(element, target, { offset: offset2, attach }, i) {\n return attachTo(element, target, {\n attach: {\n element: flipAttach(attach.element, i),\n target: flipAttach(attach.target, i)\n },\n offset: flipOffset(offset2, i)\n });\n }\n function flipAxis(element, target, options) {\n return getPosition(element, target, {\n ...options,\n attach: {\n element: options.attach.element.map(flipAttachAxis).reverse(),\n target: options.attach.target.map(flipAttachAxis).reverse()\n },\n offset: options.offset.reverse(),\n placement: options.placement.reverse(),\n recursion: true\n });\n }\n function flipAttach(attach, i) {\n const newAttach = [...attach];\n const index = dirs[i].indexOf(attach[i]);\n if (~index) {\n newAttach[i] = dirs[i][1 - index % 2 + 2];\n }\n return newAttach;\n }\n function flipAttachAxis(prop) {\n for (let i = 0; i < dirs.length; i++) {\n const index = dirs[i].indexOf(prop);\n if (~index) {\n return dirs[1 - i][index % 2 + 2];\n }\n }\n }\n function flipOffset(offset2, i) {\n offset2 = [...offset2];\n offset2[i] *= -1;\n return offset2;\n }\n\n var util = /*#__PURE__*/Object.freeze({\n __proto__: null,\n $: $,\n $$: $$,\n Animation: Animation,\n Dimensions: Dimensions,\n MouseTracker: MouseTracker,\n Transition: Transition,\n addClass: addClass,\n after: after,\n append: append,\n apply: apply,\n assign: assign,\n attr: attr,\n before: before,\n boxModelAdjust: boxModelAdjust,\n camelize: camelize,\n children: children,\n clamp: clamp,\n createEvent: createEvent,\n css: css,\n data: data,\n dimensions: dimensions$1,\n each: each,\n empty: empty,\n endsWith: endsWith,\n escape: escape,\n fastdom: fastdom,\n filter: filter$1,\n find: find,\n findAll: findAll,\n findIndex: findIndex,\n flipPosition: flipPosition,\n fragment: fragment,\n getCoveringElement: getCoveringElement,\n getEventPos: getEventPos,\n getIndex: getIndex,\n getTargetedElement: getTargetedElement,\n hasAttr: hasAttr,\n hasClass: hasClass,\n hasOwn: hasOwn,\n hasTouch: hasTouch,\n height: height,\n html: html,\n hyphenate: hyphenate,\n inBrowser: inBrowser,\n includes: includes,\n index: index,\n intersectRect: intersectRect,\n isArray: isArray,\n isBoolean: isBoolean,\n isDocument: isDocument,\n isElement: isElement,\n isEmpty: isEmpty,\n isEqual: isEqual,\n isFocusable: isFocusable,\n isFunction: isFunction,\n isInView: isInView,\n isInput: isInput,\n isNode: isNode,\n isNumber: isNumber,\n isNumeric: isNumeric,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isRtl: isRtl,\n isSameSiteAnchor: isSameSiteAnchor,\n isString: isString,\n isTag: isTag,\n isTouch: isTouch,\n isUndefined: isUndefined,\n isVideo: isVideo,\n isVisible: isVisible,\n isVoidElement: isVoidElement,\n isWindow: isWindow,\n last: last,\n matches: matches,\n memoize: memoize,\n mute: mute,\n noop: noop,\n observeIntersection: observeIntersection,\n observeMutation: observeMutation,\n observeResize: observeResize,\n observeViewportResize: observeViewportResize,\n off: off,\n offset: offset,\n offsetPosition: offsetPosition,\n offsetViewport: offsetViewport,\n on: on,\n once: once,\n overflowParents: overflowParents,\n parent: parent,\n parents: parents,\n pause: pause,\n pick: pick,\n play: play,\n pointInRect: pointInRect,\n pointerCancel: pointerCancel,\n pointerDown: pointerDown$1,\n pointerEnter: pointerEnter,\n pointerLeave: pointerLeave,\n pointerMove: pointerMove$1,\n pointerUp: pointerUp$1,\n position: position,\n positionAt: positionAt,\n prepend: prepend,\n propName: propName,\n query: query,\n queryAll: queryAll,\n ready: ready,\n remove: remove$1,\n removeAttr: removeAttr,\n removeClass: removeClass,\n replaceClass: replaceClass,\n scrollIntoView: scrollIntoView,\n scrollParent: scrollParent,\n scrollParents: scrollParents,\n scrolledOver: scrolledOver,\n selFocusable: selFocusable,\n selInput: selInput,\n sortBy: sortBy,\n startsWith: startsWith,\n sumBy: sumBy,\n swap: swap,\n toArray: toArray,\n toBoolean: toBoolean,\n toEventTargets: toEventTargets,\n toFloat: toFloat,\n toNode: toNode,\n toNodes: toNodes,\n toNumber: toNumber,\n toPx: toPx,\n toWindow: toWindow,\n toggleClass: toggleClass,\n trigger: trigger,\n ucfirst: ucfirst,\n uniqueBy: uniqueBy,\n unwrap: unwrap,\n width: width,\n wrapAll: wrapAll,\n wrapInner: wrapInner\n });\n\n var Class = {\n connected() {\n addClass(this.$el, this.$options.id);\n }\n };\n\n const units = [\"days\", \"hours\", \"minutes\", \"seconds\"];\n var countdown = {\n mixins: [Class],\n props: {\n date: String,\n clsWrapper: String,\n role: String\n },\n data: {\n date: \"\",\n clsWrapper: \".uk-countdown-%unit%\",\n role: \"timer\"\n },\n connected() {\n attr(this.$el, \"role\", this.role);\n this.date = toFloat(Date.parse(this.$props.date));\n this.end = false;\n this.start();\n },\n disconnected() {\n this.stop();\n },\n events: {\n name: \"visibilitychange\",\n el: () => document,\n handler() {\n if (document.hidden) {\n this.stop();\n } else {\n this.start();\n }\n }\n },\n methods: {\n start() {\n this.stop();\n this.update();\n if (!this.timer) {\n trigger(this.$el, \"countdownstart\");\n this.timer = setInterval(this.update, 1e3);\n }\n },\n stop() {\n if (this.timer) {\n clearInterval(this.timer);\n trigger(this.$el, \"countdownstop\");\n this.timer = null;\n }\n },\n update() {\n const timespan = getTimeSpan(this.date);\n if (!timespan.total) {\n this.stop();\n if (!this.end) {\n trigger(this.$el, \"countdownend\");\n this.end = true;\n }\n }\n for (const unit of units) {\n const el = $(this.clsWrapper.replace(\"%unit%\", unit), this.$el);\n if (!el) {\n continue;\n }\n let digits = Math.trunc(timespan[unit]).toString().padStart(2, \"0\");\n if (el.textContent !== digits) {\n digits = digits.split(\"\");\n if (digits.length !== el.children.length) {\n html(el, digits.map(() => \"\").join(\"\"));\n }\n digits.forEach((digit, i) => el.children[i].textContent = digit);\n }\n }\n }\n }\n };\n function getTimeSpan(date) {\n const total = Math.max(0, date - Date.now()) / 1e3;\n return {\n total,\n seconds: total % 60,\n minutes: total / 60 % 60,\n hours: total / 60 / 60 % 24,\n days: total / 60 / 60 / 24\n };\n }\n\n const strats = {};\n strats.events = strats.watch = strats.observe = strats.created = strats.beforeConnect = strats.connected = strats.beforeDisconnect = strats.disconnected = strats.destroy = concatStrat;\n strats.args = function(parentVal, childVal) {\n return childVal !== false && concatStrat(childVal || parentVal);\n };\n strats.update = function(parentVal, childVal) {\n return sortBy(\n concatStrat(parentVal, isFunction(childVal) ? { read: childVal } : childVal),\n \"order\"\n );\n };\n strats.props = function(parentVal, childVal) {\n if (isArray(childVal)) {\n const value = {};\n for (const key of childVal) {\n value[key] = String;\n }\n childVal = value;\n }\n return strats.methods(parentVal, childVal);\n };\n strats.computed = strats.methods = function(parentVal, childVal) {\n return childVal ? parentVal ? { ...parentVal, ...childVal } : childVal : parentVal;\n };\n strats.i18n = strats.data = function(parentVal, childVal, vm) {\n if (!vm) {\n if (!childVal) {\n return parentVal;\n }\n if (!parentVal) {\n return childVal;\n }\n return function(vm2) {\n return mergeFnData(parentVal, childVal, vm2);\n };\n }\n return mergeFnData(parentVal, childVal, vm);\n };\n function mergeFnData(parentVal, childVal, vm) {\n return strats.computed(\n isFunction(parentVal) ? parentVal.call(vm, vm) : parentVal,\n isFunction(childVal) ? childVal.call(vm, vm) : childVal\n );\n }\n function concatStrat(parentVal, childVal) {\n parentVal = parentVal && !isArray(parentVal) ? [parentVal] : parentVal;\n return childVal ? parentVal ? parentVal.concat(childVal) : isArray(childVal) ? childVal : [childVal] : parentVal;\n }\n function defaultStrat(parentVal, childVal) {\n return isUndefined(childVal) ? parentVal : childVal;\n }\n function mergeOptions(parent, child, vm) {\n const options = {};\n if (isFunction(child)) {\n child = child.options;\n }\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (const mixin of child.mixins) {\n parent = mergeOptions(parent, mixin, vm);\n }\n }\n for (const key in parent) {\n mergeKey(key);\n }\n for (const key in child) {\n if (!hasOwn(parent, key)) {\n mergeKey(key);\n }\n }\n function mergeKey(key) {\n options[key] = (strats[key] || defaultStrat)(parent[key], child[key], vm);\n }\n return options;\n }\n function parseOptions(options, args = []) {\n try {\n return options ? startsWith(options, \"{\") ? JSON.parse(options) : args.length && !includes(options, \":\") ? { [args[0]]: options } : options.split(\";\").reduce((options2, option) => {\n const [key, value] = option.split(/:(.*)/);\n if (key && !isUndefined(value)) {\n options2[key.trim()] = value.trim();\n }\n return options2;\n }, {}) : {};\n } catch (e) {\n return {};\n }\n }\n function coerce$1(type, value) {\n if (type === Boolean) {\n return toBoolean(value);\n } else if (type === Number) {\n return toNumber(value);\n } else if (type === \"list\") {\n return toList(value);\n } else if (type === Object && isString(value)) {\n return parseOptions(value);\n }\n return type ? type(value) : value;\n }\n const listRe = /,(?![^(]*\\))/;\n function toList(value) {\n return isArray(value) ? value : isString(value) ? value.split(listRe).map((value2) => isNumeric(value2) ? toNumber(value2) : toBoolean(value2.trim())) : [value];\n }\n\n function initUpdates(instance) {\n instance._data = {};\n instance._updates = [...instance.$options.update || []];\n instance._disconnect.push(() => instance._updates = instance._data = null);\n }\n function prependUpdate(instance, update) {\n instance._updates.unshift(update);\n }\n function callUpdate(instance, e = \"update\") {\n if (!instance._connected) {\n return;\n }\n if (!instance._updates.length) {\n return;\n }\n if (!instance._queued) {\n instance._queued = /* @__PURE__ */ new Set();\n fastdom.read(() => {\n if (instance._connected) {\n runUpdates(instance, instance._queued);\n }\n instance._queued = null;\n });\n }\n instance._queued.add(e.type || e);\n }\n function runUpdates(instance, types) {\n for (const { read, write, events = [] } of instance._updates) {\n if (!types.has(\"update\") && !events.some((type) => types.has(type))) {\n continue;\n }\n let result;\n if (read) {\n result = read.call(instance, instance._data, types);\n if (result && isPlainObject(result)) {\n assign(instance._data, result);\n }\n }\n if (write && result !== false) {\n fastdom.write(() => {\n if (instance._connected) {\n write.call(instance, instance._data, types);\n }\n });\n }\n }\n }\n\n function resize(options) {\n return observe(observeResize, options, \"resize\");\n }\n function intersection(options) {\n return observe(observeIntersection, options);\n }\n function mutation(options) {\n return observe(observeMutation, options);\n }\n function lazyload(options = {}) {\n return intersection({\n handler: function(entries, observer) {\n const { targets = this.$el, preload = 5 } = options;\n for (const el of toNodes(isFunction(targets) ? targets(this) : targets)) {\n $$('[loading=\"lazy\"]', el).slice(0, preload - 1).forEach((el2) => removeAttr(el2, \"loading\"));\n }\n for (const el of entries.filter(({ isIntersecting }) => isIntersecting).map(({ target }) => target)) {\n observer.unobserve(el);\n }\n },\n ...options\n });\n }\n function viewport(options) {\n return observe((target, handler) => observeViewportResize(handler), options, \"resize\");\n }\n function scroll$1(options) {\n return observe(\n (target, handler) => ({\n disconnect: on(toScrollTargets(target), \"scroll\", handler, { passive: true })\n }),\n options,\n \"scroll\"\n );\n }\n function swipe(options) {\n return {\n observe(target, handler) {\n return {\n observe: noop,\n unobserve: noop,\n disconnect: on(target, pointerDown$1, handler, { passive: true })\n };\n },\n handler(e) {\n if (!isTouch(e)) {\n return;\n }\n const pos = getEventPos(e);\n const target = \"tagName\" in e.target ? e.target : parent(e.target);\n once(document, `${pointerUp$1} ${pointerCancel} scroll`, (e2) => {\n const { x, y } = getEventPos(e2);\n if (e2.type !== \"scroll\" && target && x && Math.abs(pos.x - x) > 100 || y && Math.abs(pos.y - y) > 100) {\n setTimeout(() => {\n trigger(target, \"swipe\");\n trigger(target, `swipe${swipeDirection(pos.x, pos.y, x, y)}`);\n });\n }\n });\n },\n ...options\n };\n }\n function observe(observe2, options, emit) {\n return {\n observe: observe2,\n handler() {\n callUpdate(this, emit);\n },\n ...options\n };\n }\n function swipeDirection(x1, y1, x2, y2) {\n return Math.abs(x1 - x2) >= Math.abs(y1 - y2) ? x1 - x2 > 0 ? \"Left\" : \"Right\" : y1 - y2 > 0 ? \"Up\" : \"Down\";\n }\n function toScrollTargets(elements) {\n return toNodes(elements).map((node) => {\n const { ownerDocument } = node;\n const parent2 = scrollParent(node, true);\n return parent2 === ownerDocument.scrollingElement ? ownerDocument : parent2;\n });\n }\n\n var Margin = {\n props: {\n margin: String,\n firstColumn: Boolean\n },\n data: {\n margin: \"uk-margin-small-top\",\n firstColumn: \"uk-first-column\"\n },\n observe: [\n mutation({\n options: {\n childList: true\n }\n }),\n mutation({\n options: {\n attributes: true,\n attributeFilter: [\"style\"]\n },\n target: ({ $el }) => [$el, ...children($el)]\n }),\n resize({\n target: ({ $el }) => [$el, ...children($el)]\n })\n ],\n update: {\n read() {\n return {\n rows: getRows(children(this.$el))\n };\n },\n write({ rows }) {\n for (const row of rows) {\n for (const el of row) {\n toggleClass(el, this.margin, rows[0] !== row);\n toggleClass(el, this.firstColumn, row[isRtl ? row.length - 1 : 0] === el);\n }\n }\n },\n events: [\"resize\"]\n }\n };\n function getRows(elements) {\n const sorted = [[]];\n const withOffset = elements.some(\n (el, i) => i && elements[i - 1].offsetParent !== el.offsetParent\n );\n for (const el of elements) {\n if (!isVisible(el)) {\n continue;\n }\n const offset = getOffset(el, withOffset);\n for (let i = sorted.length - 1; i >= 0; i--) {\n const current = sorted[i];\n if (!current[0]) {\n current.push(el);\n break;\n }\n const offsetCurrent = getOffset(current[0], withOffset);\n if (offset.top >= offsetCurrent.bottom - 1 && offset.top !== offsetCurrent.top) {\n sorted.push([el]);\n break;\n }\n if (offset.bottom - 1 > offsetCurrent.top || offset.top === offsetCurrent.top) {\n let j = current.length - 1;\n for (; j >= 0; j--) {\n const offsetCurrent2 = getOffset(current[j], withOffset);\n if (offset.left >= offsetCurrent2.left) {\n break;\n }\n }\n current.splice(j + 1, 0, el);\n break;\n }\n if (i === 0) {\n sorted.unshift([el]);\n break;\n }\n }\n }\n return sorted;\n }\n function getOffset(element, offset = false) {\n let { offsetTop, offsetLeft, offsetHeight, offsetWidth } = element;\n if (offset) {\n [offsetTop, offsetLeft] = offsetPosition(element);\n }\n return {\n top: offsetTop,\n left: offsetLeft,\n bottom: offsetTop + offsetHeight,\n right: offsetLeft + offsetWidth\n };\n }\n\n async function slide(action, target, duration) {\n await awaitFrame();\n let nodes = children(target);\n const currentProps = nodes.map((el) => getProps$1(el, true));\n const targetProps = { ...css(target, [\"height\", \"padding\"]), display: \"block\" };\n const targets = nodes.concat(target);\n await Promise.all(targets.map(Transition.cancel));\n css(targets, \"transitionProperty\", \"none\");\n await action();\n nodes = nodes.concat(children(target).filter((el) => !includes(nodes, el)));\n await Promise.resolve();\n css(targets, \"transitionProperty\", \"\");\n const targetStyle = attr(target, \"style\");\n const targetPropsTo = css(target, [\"height\", \"padding\"]);\n const [propsTo, propsFrom] = getTransitionProps(target, nodes, currentProps);\n const attrsTo = nodes.map((el) => ({ style: attr(el, \"style\") }));\n nodes.forEach((el, i) => propsFrom[i] && css(el, propsFrom[i]));\n css(target, targetProps);\n trigger(target, \"scroll\");\n await awaitFrame();\n const transitions = nodes.map((el, i) => parent(el) === target && Transition.start(el, propsTo[i], duration, \"ease\")).concat(Transition.start(target, targetPropsTo, duration, \"ease\"));\n try {\n await Promise.all(transitions);\n nodes.forEach((el, i) => {\n attr(el, attrsTo[i]);\n if (parent(el) === target) {\n css(el, \"display\", propsTo[i].opacity === 0 ? \"none\" : \"\");\n }\n });\n attr(target, \"style\", targetStyle);\n } catch (e) {\n attr(nodes, \"style\", \"\");\n resetProps(target, targetProps);\n }\n }\n function getProps$1(el, opacity) {\n const zIndex = css(el, \"zIndex\");\n return isVisible(el) ? {\n display: \"\",\n opacity: opacity ? css(el, \"opacity\") : \"0\",\n pointerEvents: \"none\",\n position: \"absolute\",\n zIndex: zIndex === \"auto\" ? index(el) : zIndex,\n ...getPositionWithMargin(el)\n } : false;\n }\n function getTransitionProps(target, nodes, currentProps) {\n const propsTo = nodes.map(\n (el, i) => parent(el) && i in currentProps ? currentProps[i] ? isVisible(el) ? getPositionWithMargin(el) : { opacity: 0 } : { opacity: isVisible(el) ? 1 : 0 } : false\n );\n const propsFrom = propsTo.map((props, i) => {\n const from = parent(nodes[i]) === target && (currentProps[i] || getProps$1(nodes[i]));\n if (!from) {\n return false;\n }\n if (!props) {\n delete from.opacity;\n } else if (!(\"opacity\" in props)) {\n const { opacity } = from;\n if (opacity % 1) {\n props.opacity = 1;\n } else {\n delete from.opacity;\n }\n }\n return from;\n });\n return [propsTo, propsFrom];\n }\n function resetProps(el, props) {\n for (const prop in props) {\n css(el, prop, \"\");\n }\n }\n function getPositionWithMargin(el) {\n const { height, width } = dimensions$1(el);\n return {\n height,\n width,\n transform: \"\",\n ...position(el),\n ...css(el, [\"marginTop\", \"marginLeft\"])\n };\n }\n function awaitFrame() {\n return new Promise((resolve) => requestAnimationFrame(resolve));\n }\n\n const clsLeave = \"uk-transition-leave\";\n const clsEnter = \"uk-transition-enter\";\n function fade(action, target, duration, stagger = 0) {\n const index = transitionIndex(target, true);\n const propsIn = { opacity: 1 };\n const propsOut = { opacity: 0 };\n const wrapIndexFn = (fn) => () => index === transitionIndex(target) ? fn() : Promise.reject();\n const leaveFn = wrapIndexFn(async () => {\n addClass(target, clsLeave);\n await Promise.all(\n getTransitionNodes(target).map(\n (child, i) => new Promise(\n (resolve) => setTimeout(\n () => Transition.start(child, propsOut, duration / 2, \"ease\").then(\n resolve\n ),\n i * stagger\n )\n )\n )\n );\n removeClass(target, clsLeave);\n });\n const enterFn = wrapIndexFn(async () => {\n const oldHeight = height(target);\n addClass(target, clsEnter);\n action();\n css(children(target), { opacity: 0 });\n await awaitFrame();\n const nodes = children(target);\n const newHeight = height(target);\n css(target, \"alignContent\", \"flex-start\");\n height(target, oldHeight);\n const transitionNodes = getTransitionNodes(target);\n css(nodes, propsOut);\n const transitions = transitionNodes.map(async (child, i) => {\n await awaitTimeout(i * stagger);\n await Transition.start(child, propsIn, duration / 2, \"ease\");\n });\n if (oldHeight !== newHeight) {\n transitions.push(\n Transition.start(\n target,\n { height: newHeight },\n duration / 2 + transitionNodes.length * stagger,\n \"ease\"\n )\n );\n }\n await Promise.all(transitions).then(() => {\n removeClass(target, clsEnter);\n if (index === transitionIndex(target)) {\n css(target, { height: \"\", alignContent: \"\" });\n css(nodes, { opacity: \"\" });\n delete target.dataset.transition;\n }\n });\n });\n return hasClass(target, clsLeave) ? waitTransitionend(target).then(enterFn) : hasClass(target, clsEnter) ? waitTransitionend(target).then(leaveFn).then(enterFn) : leaveFn().then(enterFn);\n }\n function transitionIndex(target, next) {\n if (next) {\n target.dataset.transition = 1 + transitionIndex(target);\n }\n return toNumber(target.dataset.transition) || 0;\n }\n function waitTransitionend(target) {\n return Promise.all(\n children(target).filter(Transition.inProgress).map(\n (el) => new Promise((resolve) => once(el, \"transitionend transitioncanceled\", resolve))\n )\n );\n }\n function getTransitionNodes(target) {\n return getRows(children(target)).flat().filter(isVisible);\n }\n function awaitTimeout(timeout) {\n return new Promise((resolve) => setTimeout(resolve, timeout));\n }\n\n var Animate = {\n props: {\n duration: Number,\n animation: Boolean\n },\n data: {\n duration: 150,\n animation: \"slide\"\n },\n methods: {\n animate(action, target = this.$el) {\n const name = this.animation;\n const animationFn = name === \"fade\" ? fade : name === \"delayed-fade\" ? (...args) => fade(...args, 40) : name ? slide : () => {\n action();\n return Promise.resolve();\n };\n return animationFn(action, target, this.duration).catch(noop);\n }\n }\n };\n\n const keyMap = {\n TAB: 9,\n ESC: 27,\n SPACE: 32,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40\n };\n\n var filter = {\n mixins: [Animate],\n args: \"target\",\n props: {\n target: String,\n selActive: Boolean\n },\n data: {\n target: \"\",\n selActive: false,\n attrItem: \"uk-filter-control\",\n cls: \"uk-active\",\n duration: 250\n },\n computed: {\n children: ({ target }, $el) => $$(`${target} > *`, $el),\n toggles: ({ attrItem }, $el) => $$(`[${attrItem}],[data-${attrItem}]`, $el)\n },\n watch: {\n toggles(toggles) {\n this.updateState();\n const actives = $$(this.selActive, this.$el);\n for (const toggle of toggles) {\n if (this.selActive !== false) {\n toggleClass(toggle, this.cls, includes(actives, toggle));\n }\n const button = findButton(toggle);\n if (isTag(button, \"a\")) {\n attr(button, \"role\", \"button\");\n }\n }\n },\n children(list, prev) {\n if (prev) {\n this.updateState();\n }\n }\n },\n events: {\n name: \"click keydown\",\n delegate: ({ attrItem }) => `[${attrItem}],[data-${attrItem}]`,\n handler(e) {\n if (e.type === \"keydown\" && e.keyCode !== keyMap.SPACE) {\n return;\n }\n if (e.target.closest(\"a,button\")) {\n e.preventDefault();\n this.apply(e.current);\n }\n }\n },\n methods: {\n apply(el) {\n const prevState = this.getState();\n const newState = mergeState(el, this.attrItem, this.getState());\n if (!isEqualState(prevState, newState)) {\n this.setState(newState);\n }\n },\n getState() {\n return this.toggles.filter((item) => hasClass(item, this.cls)).reduce((state, el) => mergeState(el, this.attrItem, state), {\n filter: { \"\": \"\" },\n sort: []\n });\n },\n async setState(state, animate = true) {\n state = { filter: { \"\": \"\" }, sort: [], ...state };\n trigger(this.$el, \"beforeFilter\", [this, state]);\n for (const toggle of this.toggles) {\n toggleClass(toggle, this.cls, matchFilter(toggle, this.attrItem, state));\n }\n await Promise.all(\n $$(this.target, this.$el).map((target) => {\n const filterFn = () => applyState(state, target, children(target));\n return animate ? this.animate(filterFn, target) : filterFn();\n })\n );\n trigger(this.$el, \"afterFilter\", [this]);\n },\n updateState() {\n fastdom.write(() => this.setState(this.getState(), false));\n }\n }\n };\n function getFilter(el, attr2) {\n return parseOptions(data(el, attr2), [\"filter\"]);\n }\n function isEqualState(stateA, stateB) {\n return [\"filter\", \"sort\"].every((prop) => isEqual(stateA[prop], stateB[prop]));\n }\n function applyState(state, target, children) {\n for (const el of children) {\n css(\n el,\n \"display\",\n Object.values(state.filter).every((selector) => !selector || matches(el, selector)) ? \"\" : \"none\"\n );\n }\n const [sort, order] = state.sort;\n if (sort) {\n const sorted = sortItems(children, sort, order);\n if (!isEqual(sorted, children)) {\n append(target, sorted);\n }\n }\n }\n function mergeState(el, attr2, state) {\n const { filter, group, sort, order = \"asc\" } = getFilter(el, attr2);\n if (filter || isUndefined(sort)) {\n if (group) {\n if (filter) {\n delete state.filter[\"\"];\n state.filter[group] = filter;\n } else {\n delete state.filter[group];\n if (isEmpty(state.filter) || \"\" in state.filter) {\n state.filter = { \"\": filter || \"\" };\n }\n }\n } else {\n state.filter = { \"\": filter || \"\" };\n }\n }\n if (!isUndefined(sort)) {\n state.sort = [sort, order];\n }\n return state;\n }\n function matchFilter(el, attr2, { filter: stateFilter = { \"\": \"\" }, sort: [stateSort, stateOrder] }) {\n const { filter = \"\", group = \"\", sort, order = \"asc\" } = getFilter(el, attr2);\n return isUndefined(sort) ? group in stateFilter && filter === stateFilter[group] || !filter && group && !(group in stateFilter) && !stateFilter[\"\"] : stateSort === sort && stateOrder === order;\n }\n function sortItems(nodes, sort, order) {\n return [...nodes].sort(\n (a, b) => data(a, sort).localeCompare(data(b, sort), void 0, { numeric: true }) * (order === \"asc\" || -1)\n );\n }\n function findButton(el) {\n return $(\"a,button\", el) || el;\n }\n\n let prevented;\n function preventBackgroundScroll(el) {\n const off = on(\n el,\n \"touchstart\",\n (e) => {\n if (e.targetTouches.length !== 1 || matches(e.target, 'input[type=\"range\"')) {\n return;\n }\n let prev = getEventPos(e).y;\n const offMove = on(\n el,\n \"touchmove\",\n (e2) => {\n const pos = getEventPos(e2).y;\n if (pos === prev) {\n return;\n }\n prev = pos;\n if (!scrollParents(e2.target).some((scrollParent) => {\n if (!el.contains(scrollParent)) {\n return false;\n }\n let { scrollHeight, clientHeight } = scrollParent;\n return clientHeight < scrollHeight;\n })) {\n e2.preventDefault();\n }\n },\n { passive: false }\n );\n once(el, \"scroll touchend touchcanel\", offMove, { capture: true });\n },\n { passive: true }\n );\n if (prevented) {\n return off;\n }\n prevented = true;\n const { scrollingElement } = document;\n css(scrollingElement, {\n overflowY: CSS.supports(\"overflow\", \"clip\") ? \"clip\" : \"hidden\",\n touchAction: \"none\",\n paddingRight: width(window) - scrollingElement.clientWidth || \"\"\n });\n return () => {\n prevented = false;\n off();\n css(scrollingElement, { overflowY: \"\", touchAction: \"\", paddingRight: \"\" });\n };\n }\n\n var Container = {\n props: {\n container: Boolean\n },\n data: {\n container: true\n },\n computed: {\n container({ container }) {\n return container === true && this.$container || container && $(container);\n }\n }\n };\n\n var Togglable = {\n props: {\n cls: Boolean,\n animation: \"list\",\n duration: Number,\n velocity: Number,\n origin: String,\n transition: String\n },\n data: {\n cls: false,\n animation: [false],\n duration: 200,\n velocity: 0.2,\n origin: false,\n transition: \"ease\",\n clsEnter: \"uk-togglable-enter\",\n clsLeave: \"uk-togglable-leave\"\n },\n computed: {\n hasAnimation: ({ animation }) => !!animation[0],\n hasTransition: ({ animation }) => [\"slide\", \"reveal\"].some((transition) => startsWith(animation[0], transition))\n },\n methods: {\n async toggleElement(targets, toggle, animate) {\n try {\n await Promise.all(\n toNodes(targets).map((el) => {\n const show = isBoolean(toggle) ? toggle : !this.isToggled(el);\n if (!trigger(el, `before${show ? \"show\" : \"hide\"}`, [this])) {\n return Promise.reject();\n }\n const promise = (isFunction(animate) ? animate : animate === false || !this.hasAnimation ? toggleInstant : this.hasTransition ? toggleTransition : toggleAnimation)(el, show, this);\n const cls = show ? this.clsEnter : this.clsLeave;\n addClass(el, cls);\n trigger(el, show ? \"show\" : \"hide\", [this]);\n const done = () => {\n removeClass(el, cls);\n trigger(el, show ? \"shown\" : \"hidden\", [this]);\n };\n return promise ? promise.then(done, () => {\n removeClass(el, cls);\n return Promise.reject();\n }) : done();\n })\n );\n return true;\n } catch (e) {\n return false;\n }\n },\n isToggled(el = this.$el) {\n el = toNode(el);\n return hasClass(el, this.clsEnter) ? true : hasClass(el, this.clsLeave) ? false : this.cls ? hasClass(el, this.cls.split(\" \")[0]) : isVisible(el);\n },\n _toggle(el, toggled) {\n if (!el) {\n return;\n }\n toggled = Boolean(toggled);\n let changed;\n if (this.cls) {\n changed = includes(this.cls, \" \") || toggled !== hasClass(el, this.cls);\n changed && toggleClass(el, this.cls, includes(this.cls, \" \") ? void 0 : toggled);\n } else {\n changed = toggled === el.hidden;\n changed && (el.hidden = !toggled);\n }\n if (changed) {\n trigger(el, \"toggled\", [toggled, this]);\n }\n $$(\"[autofocus]\", el).some((el2) => isVisible(el2) ? el2.focus() || true : el2.blur());\n }\n }\n };\n function toggleInstant(el, show, { _toggle }) {\n Animation.cancel(el);\n Transition.cancel(el);\n return _toggle(el, show);\n }\n async function toggleTransition(el, show, { animation, duration, velocity, transition, _toggle }) {\n var _a;\n const [mode = \"reveal\", startProp = \"top\"] = ((_a = animation[0]) == null ? void 0 : _a.split(\"-\")) || [];\n const dirs = [\n [\"left\", \"right\"],\n [\"top\", \"bottom\"]\n ];\n const dir = dirs[includes(dirs[0], startProp) ? 0 : 1];\n const end = dir[1] === startProp;\n const props = [\"width\", \"height\"];\n const dimProp = props[dirs.indexOf(dir)];\n const marginProp = `margin-${dir[0]}`;\n const marginStartProp = `margin-${startProp}`;\n let currentDim = dimensions$1(el)[dimProp];\n const inProgress = Transition.inProgress(el);\n await Transition.cancel(el);\n if (show) {\n _toggle(el, true);\n }\n const prevProps = Object.fromEntries(\n [\n \"padding\",\n \"border\",\n \"width\",\n \"height\",\n \"minWidth\",\n \"minHeight\",\n \"overflowY\",\n \"overflowX\",\n marginProp,\n marginStartProp\n ].map((key) => [key, el.style[key]])\n );\n const dim = dimensions$1(el);\n const currentMargin = toFloat(css(el, marginProp));\n const marginStart = toFloat(css(el, marginStartProp));\n const endDim = dim[dimProp] + marginStart;\n if (!inProgress && !show) {\n currentDim += marginStart;\n }\n const [wrapper] = wrapInner(el, \"
    \");\n css(wrapper, {\n boxSizing: \"border-box\",\n height: dim.height,\n width: dim.width,\n ...css(el, [\n \"overflow\",\n \"padding\",\n \"borderTop\",\n \"borderRight\",\n \"borderBottom\",\n \"borderLeft\",\n \"borderImage\",\n marginStartProp\n ])\n });\n css(el, {\n padding: 0,\n border: 0,\n minWidth: 0,\n minHeight: 0,\n [marginStartProp]: 0,\n width: dim.width,\n height: dim.height,\n overflow: \"hidden\",\n [dimProp]: currentDim\n });\n const percent = currentDim / endDim;\n duration = (velocity * endDim + duration) * (show ? 1 - percent : percent);\n const endProps = { [dimProp]: show ? endDim : 0 };\n if (end) {\n css(el, marginProp, endDim - currentDim + currentMargin);\n endProps[marginProp] = show ? currentMargin : endDim + currentMargin;\n }\n if (!end ^ mode === \"reveal\") {\n css(wrapper, marginProp, -endDim + currentDim);\n Transition.start(wrapper, { [marginProp]: show ? 0 : -endDim }, duration, transition);\n }\n try {\n await Transition.start(el, endProps, duration, transition);\n } finally {\n css(el, prevProps);\n unwrap(wrapper.firstChild);\n if (!show) {\n _toggle(el, false);\n }\n }\n }\n function toggleAnimation(el, show, cmp) {\n const { animation, duration, _toggle } = cmp;\n if (show) {\n _toggle(el, true);\n return Animation.in(el, animation[0], duration, cmp.origin);\n }\n return Animation.out(el, animation[1] || animation[0], duration, cmp.origin).then(\n () => _toggle(el, false)\n );\n }\n\n const active$1 = [];\n var Modal = {\n mixins: [Class, Container, Togglable],\n props: {\n selPanel: String,\n selClose: String,\n escClose: Boolean,\n bgClose: Boolean,\n stack: Boolean,\n role: String\n },\n data: {\n cls: \"uk-open\",\n escClose: true,\n bgClose: true,\n overlay: true,\n stack: false,\n role: \"dialog\"\n },\n computed: {\n panel: ({ selPanel }, $el) => $(selPanel, $el),\n transitionElement() {\n return this.panel;\n },\n bgClose({ bgClose }) {\n return bgClose && this.panel;\n }\n },\n connected() {\n attr(this.panel || this.$el, \"role\", this.role);\n if (this.overlay) {\n attr(this.panel || this.$el, \"aria-modal\", true);\n }\n },\n beforeDisconnect() {\n if (includes(active$1, this)) {\n this.toggleElement(this.$el, false, false);\n }\n },\n events: [\n {\n name: \"click\",\n delegate: ({ selClose }) => `${selClose},a[href*=\"#\"]`,\n handler(e) {\n const { current, defaultPrevented } = e;\n const { hash } = current;\n if (!defaultPrevented && hash && isSameSiteAnchor(current) && !this.$el.contains($(hash))) {\n this.hide();\n } else if (matches(current, this.selClose)) {\n e.preventDefault();\n this.hide();\n }\n }\n },\n {\n name: \"toggle\",\n self: true,\n handler(e) {\n if (e.defaultPrevented) {\n return;\n }\n e.preventDefault();\n if (this.isToggled() === includes(active$1, this)) {\n this.toggle();\n }\n }\n },\n {\n name: \"beforeshow\",\n self: true,\n handler(e) {\n if (includes(active$1, this)) {\n return false;\n }\n if (!this.stack && active$1.length) {\n Promise.all(active$1.map((modal) => modal.hide())).then(this.show);\n e.preventDefault();\n } else {\n active$1.push(this);\n }\n }\n },\n {\n name: \"show\",\n self: true,\n handler() {\n if (this.stack) {\n css(this.$el, \"zIndex\", toFloat(css(this.$el, \"zIndex\")) + active$1.length);\n }\n const handlers = [\n this.overlay && preventBackgroundFocus(this),\n this.overlay && preventBackgroundScroll(this.$el),\n this.bgClose && listenForBackgroundClose$1(this),\n this.escClose && listenForEscClose$1(this)\n ];\n once(\n this.$el,\n \"hidden\",\n () => handlers.forEach((handler) => handler && handler()),\n { self: true }\n );\n addClass(document.documentElement, this.clsPage);\n }\n },\n {\n name: \"shown\",\n self: true,\n handler() {\n if (!isFocusable(this.$el)) {\n attr(this.$el, \"tabindex\", \"-1\");\n }\n if (!matches(this.$el, \":focus-within\")) {\n this.$el.focus();\n }\n }\n },\n {\n name: \"hidden\",\n self: true,\n handler() {\n if (includes(active$1, this)) {\n active$1.splice(active$1.indexOf(this), 1);\n }\n css(this.$el, \"zIndex\", \"\");\n if (!active$1.some((modal) => modal.clsPage === this.clsPage)) {\n removeClass(document.documentElement, this.clsPage);\n }\n }\n }\n ],\n methods: {\n toggle() {\n return this.isToggled() ? this.hide() : this.show();\n },\n show() {\n if (this.container && parent(this.$el) !== this.container) {\n append(this.container, this.$el);\n return new Promise(\n (resolve) => requestAnimationFrame(() => this.show().then(resolve))\n );\n }\n return this.toggleElement(this.$el, true, animate$1);\n },\n hide() {\n return this.toggleElement(this.$el, false, animate$1);\n }\n }\n };\n function animate$1(el, show, { transitionElement, _toggle }) {\n return new Promise(\n (resolve, reject) => once(el, \"show hide\", () => {\n var _a;\n (_a = el._reject) == null ? void 0 : _a.call(el);\n el._reject = reject;\n _toggle(el, show);\n const off = once(\n transitionElement,\n \"transitionstart\",\n () => {\n once(transitionElement, \"transitionend transitioncancel\", resolve, {\n self: true\n });\n clearTimeout(timer);\n },\n { self: true }\n );\n const timer = setTimeout(\n () => {\n off();\n resolve();\n },\n toMs(css(transitionElement, \"transitionDuration\"))\n );\n })\n ).then(() => delete el._reject);\n }\n function toMs(time) {\n return time ? endsWith(time, \"ms\") ? toFloat(time) : toFloat(time) * 1e3 : 0;\n }\n function preventBackgroundFocus(modal) {\n return on(document, \"focusin\", (e) => {\n if (last(active$1) === modal && !modal.$el.contains(e.target)) {\n modal.$el.focus();\n }\n });\n }\n function listenForBackgroundClose$1(modal) {\n return on(document, pointerDown$1, ({ target }) => {\n if (last(active$1) !== modal || modal.overlay && !modal.$el.contains(target) || modal.panel.contains(target)) {\n return;\n }\n once(\n document,\n `${pointerUp$1} ${pointerCancel} scroll`,\n ({ defaultPrevented, type, target: newTarget }) => {\n if (!defaultPrevented && type === pointerUp$1 && target === newTarget) {\n modal.hide();\n }\n },\n true\n );\n });\n }\n function listenForEscClose$1(modal) {\n return on(document, \"keydown\", (e) => {\n if (e.keyCode === 27 && last(active$1) === modal) {\n modal.hide();\n }\n });\n }\n\n var Animations$2 = {\n slide: {\n show(dir) {\n return [{ transform: translate(dir * -100) }, { transform: translate() }];\n },\n percent(current) {\n return translated(current);\n },\n translate(percent, dir) {\n return [\n { transform: translate(dir * -100 * percent) },\n { transform: translate(dir * 100 * (1 - percent)) }\n ];\n }\n }\n };\n function translated(el) {\n return Math.abs(new DOMMatrix(css(el, \"transform\")).m41 / el.offsetWidth);\n }\n function translate(value = 0, unit = \"%\") {\n value += value ? unit : \"\";\n return `translate3d(${value}, 0, 0)`;\n }\n function scale3d(value) {\n return `scale3d(${value}, ${value}, 1)`;\n }\n\n function Transitioner$1(prev, next, dir, { animation, easing }) {\n const { percent, translate, show = noop } = animation;\n const props = show(dir);\n const { promise, resolve } = withResolvers();\n return {\n dir,\n show(duration, percent2 = 0, linear) {\n const timing = linear ? \"linear\" : easing;\n duration -= Math.round(duration * clamp(percent2, -1, 1));\n this.translate(percent2);\n triggerUpdate(next, \"itemin\", { percent: percent2, duration, timing, dir });\n triggerUpdate(prev, \"itemout\", { percent: 1 - percent2, duration, timing, dir });\n Promise.all([\n Transition.start(next, props[1], duration, timing),\n Transition.start(prev, props[0], duration, timing)\n ]).then(() => {\n this.reset();\n resolve();\n }, noop);\n return promise;\n },\n cancel() {\n return Transition.cancel([next, prev]);\n },\n reset() {\n for (const prop in props[0]) {\n css([next, prev], prop, \"\");\n }\n },\n async forward(duration, percent2 = this.percent()) {\n await this.cancel();\n return this.show(duration, percent2, true);\n },\n translate(percent2) {\n this.reset();\n const props2 = translate(percent2, dir);\n css(next, props2[1]);\n css(prev, props2[0]);\n triggerUpdate(next, \"itemtranslatein\", { percent: percent2, dir });\n triggerUpdate(prev, \"itemtranslateout\", { percent: 1 - percent2, dir });\n },\n percent() {\n return percent(prev || next, next, dir);\n },\n getDistance() {\n return prev == null ? void 0 : prev.offsetWidth;\n }\n };\n }\n function triggerUpdate(el, type, data) {\n trigger(el, createEvent(type, false, false, data));\n }\n function withResolvers() {\n let resolve;\n return { promise: new Promise((res) => resolve = res), resolve };\n }\n\n var I18n = {\n props: {\n i18n: Object\n },\n data: {\n i18n: null\n },\n methods: {\n t(key, ...params) {\n var _a, _b, _c;\n let i = 0;\n return ((_c = ((_a = this.i18n) == null ? void 0 : _a[key]) || ((_b = this.$options.i18n) == null ? void 0 : _b[key])) == null ? void 0 : _c.replace(\n /%s/g,\n () => params[i++] || \"\"\n )) || \"\";\n }\n }\n };\n\n var SliderAutoplay = {\n props: {\n autoplay: Boolean,\n autoplayInterval: Number,\n pauseOnHover: Boolean\n },\n data: {\n autoplay: false,\n autoplayInterval: 7e3,\n pauseOnHover: true\n },\n connected() {\n attr(this.list, \"aria-live\", this.autoplay ? \"off\" : \"polite\");\n this.autoplay && this.startAutoplay();\n },\n disconnected() {\n this.stopAutoplay();\n },\n update() {\n attr(this.slides, \"tabindex\", \"-1\");\n },\n events: [\n {\n name: \"visibilitychange\",\n el: () => document,\n filter: ({ autoplay }) => autoplay,\n handler() {\n if (document.hidden) {\n this.stopAutoplay();\n } else {\n this.startAutoplay();\n }\n }\n }\n ],\n methods: {\n startAutoplay() {\n this.stopAutoplay();\n this.interval = setInterval(() => {\n if (!(this.stack.length || this.draggable && matches(this.$el, \":focus-within\") && !matches(this.$el, \":focus\") || this.pauseOnHover && matches(this.$el, \":hover\"))) {\n this.show(\"next\");\n }\n }, this.autoplayInterval);\n },\n stopAutoplay() {\n clearInterval(this.interval);\n }\n }\n };\n\n const pointerOptions = { passive: false, capture: true };\n const pointerUpOptions = { passive: true, capture: true };\n const pointerDown = \"touchstart mousedown\";\n const pointerMove = \"touchmove mousemove\";\n const pointerUp = \"touchend touchcancel mouseup click input scroll\";\n const preventClick = (e) => e.preventDefault();\n var SliderDrag = {\n props: {\n draggable: Boolean\n },\n data: {\n draggable: true,\n threshold: 10\n },\n created() {\n for (const key of [\"start\", \"move\", \"end\"]) {\n const fn = this[key];\n this[key] = (e) => {\n const pos = getEventPos(e).x * (isRtl ? -1 : 1);\n this.prevPos = pos === this.pos ? this.prevPos : this.pos;\n this.pos = pos;\n fn(e);\n };\n }\n },\n events: [\n {\n name: pointerDown,\n passive: true,\n delegate: ({ selList }) => `${selList} > *`,\n handler(e) {\n if (!this.draggable || this.parallax || !isTouch(e) && hasSelectableText(e.target) || e.target.closest(selInput) || e.button > 0 || this.length < 2) {\n return;\n }\n this.start(e);\n }\n },\n {\n name: \"dragstart\",\n handler(e) {\n e.preventDefault();\n }\n },\n {\n // iOS workaround for slider stopping if swiping fast\n name: pointerMove,\n el: ({ list }) => list,\n handler: noop,\n ...pointerOptions\n }\n ],\n methods: {\n start() {\n this.drag = this.pos;\n if (this._transitioner) {\n this.percent = this._transitioner.percent();\n this.drag += this._transitioner.getDistance() * this.percent * this.dir;\n this._transitioner.cancel();\n this._transitioner.translate(this.percent);\n this.dragging = true;\n this.stack = [];\n } else {\n this.prevIndex = this.index;\n }\n on(document, pointerMove, this.move, pointerOptions);\n on(document, pointerUp, this.end, pointerUpOptions);\n css(this.list, \"userSelect\", \"none\");\n },\n move(e) {\n const distance = this.pos - this.drag;\n if (distance === 0 || this.prevPos === this.pos || !this.dragging && Math.abs(distance) < this.threshold) {\n return;\n }\n if (!this.dragging) {\n on(this.list, \"click\", preventClick, pointerOptions);\n }\n e.cancelable && e.preventDefault();\n this.dragging = true;\n this.dir = distance < 0 ? 1 : -1;\n let { slides, prevIndex } = this;\n let dis = Math.abs(distance);\n let nextIndex = this.getIndex(prevIndex + this.dir);\n let width = getDistance.call(this, prevIndex, nextIndex);\n while (nextIndex !== prevIndex && dis > width) {\n this.drag -= width * this.dir;\n prevIndex = nextIndex;\n dis -= width;\n nextIndex = this.getIndex(prevIndex + this.dir);\n width = getDistance.call(this, prevIndex, nextIndex);\n }\n this.percent = dis / width;\n const prev = slides[prevIndex];\n const next = slides[nextIndex];\n const changed = this.index !== nextIndex;\n const edge = prevIndex === nextIndex;\n let itemShown;\n for (const i of [this.index, this.prevIndex]) {\n if (!includes([nextIndex, prevIndex], i)) {\n trigger(slides[i], \"itemhidden\", [this]);\n if (edge) {\n itemShown = true;\n this.prevIndex = prevIndex;\n }\n }\n }\n if (this.index === prevIndex && this.prevIndex !== prevIndex || itemShown) {\n trigger(slides[this.index], \"itemshown\", [this]);\n }\n if (changed) {\n this.prevIndex = prevIndex;\n this.index = nextIndex;\n if (!edge) {\n trigger(prev, \"beforeitemhide\", [this]);\n trigger(prev, \"itemhide\", [this]);\n }\n trigger(next, \"beforeitemshow\", [this]);\n trigger(next, \"itemshow\", [this]);\n }\n this._transitioner = this._translate(Math.abs(this.percent), prev, !edge && next);\n },\n end() {\n off(document, pointerMove, this.move, pointerOptions);\n off(document, pointerUp, this.end, pointerUpOptions);\n if (this.dragging) {\n this.dragging = null;\n if (this.index === this.prevIndex) {\n this.percent = 1 - this.percent;\n this.dir *= -1;\n this._show(false, this.index, true);\n this._transitioner = null;\n } else {\n const dirChange = (isRtl ? this.dir * (isRtl ? 1 : -1) : this.dir) < 0 === this.prevPos > this.pos;\n this.index = dirChange ? this.index : this.prevIndex;\n if (dirChange) {\n this.percent = 1 - this.percent;\n }\n this.show(\n this.dir > 0 && !dirChange || this.dir < 0 && dirChange ? \"next\" : \"previous\",\n true\n );\n }\n }\n setTimeout(() => off(this.list, \"click\", preventClick, pointerOptions));\n css(this.list, { userSelect: \"\" });\n this.drag = this.percent = null;\n }\n }\n };\n function getDistance(prev, next) {\n return this._getTransitioner(prev, prev !== next && next).getDistance() || this.slides[prev].offsetWidth;\n }\n function hasSelectableText(el) {\n return css(el, \"userSelect\") !== \"none\" && toArray(el.childNodes).some((el2) => el2.nodeType === 3 && el2.textContent.trim());\n }\n\n function initWatches(instance) {\n instance._watches = [];\n for (const watches of instance.$options.watch || []) {\n for (const [name, watch] of Object.entries(watches)) {\n registerWatch(instance, watch, name);\n }\n }\n instance._initial = true;\n }\n function registerWatch(instance, watch, name) {\n instance._watches.push({\n name,\n ...isPlainObject(watch) ? watch : { handler: watch }\n });\n }\n function runWatches(instance, values) {\n for (const { name, handler, immediate = true } of instance._watches) {\n if (instance._initial && immediate || hasOwn(values, name) && !isEqual(values[name], instance[name])) {\n handler.call(instance, instance[name], values[name]);\n }\n }\n instance._initial = false;\n }\n\n function initComputed(instance) {\n const { computed } = instance.$options;\n instance._computed = {};\n if (computed) {\n for (const key in computed) {\n registerComputed(instance, key, computed[key]);\n }\n }\n }\n const mutationOptions = { subtree: true, childList: true };\n function registerComputed(instance, key, cb) {\n instance._hasComputed = true;\n Object.defineProperty(instance, key, {\n enumerable: true,\n get() {\n const { _computed, $props, $el } = instance;\n if (!hasOwn(_computed, key)) {\n _computed[key] = (cb.get || cb).call(instance, $props, $el);\n if (cb.observe && instance._computedObserver) {\n const selector = cb.observe.call(instance, $props);\n instance._computedObserver.observe(\n [\"~\", \"+\", \"-\"].includes(selector[0]) ? $el.parentElement : $el.getRootNode(),\n mutationOptions\n );\n }\n }\n return _computed[key];\n },\n set(value) {\n const { _computed } = instance;\n _computed[key] = cb.set ? cb.set.call(instance, value) : value;\n if (isUndefined(_computed[key])) {\n delete _computed[key];\n }\n }\n });\n }\n function initComputedUpdates(instance) {\n if (!instance._hasComputed) {\n return;\n }\n prependUpdate(instance, {\n read: () => runWatches(instance, resetComputed(instance)),\n events: [\"resize\", \"computed\"]\n });\n instance._computedObserver = observeMutation(\n instance.$el,\n () => callUpdate(instance, \"computed\"),\n mutationOptions\n );\n instance._disconnect.push(() => {\n instance._computedObserver.disconnect();\n instance._computedObserver = null;\n resetComputed(instance);\n });\n }\n function resetComputed(instance) {\n const values = { ...instance._computed };\n instance._computed = {};\n return values;\n }\n\n function initEvents(instance) {\n for (const event of instance.$options.events || []) {\n if (hasOwn(event, \"handler\")) {\n registerEvent(instance, event);\n } else {\n for (const key in event) {\n registerEvent(instance, event[key], key);\n }\n }\n }\n }\n function registerEvent(instance, event, key) {\n let { name, el, handler, capture, passive, delegate, filter, self } = isPlainObject(event) ? event : { name: key, handler: event };\n el = isFunction(el) ? el.call(instance, instance) : el || instance.$el;\n if (!el || isArray(el) && !el.length || filter && !filter.call(instance, instance)) {\n return;\n }\n instance._disconnect.push(\n on(\n el,\n name,\n delegate ? isString(delegate) ? delegate : delegate.call(instance, instance) : null,\n isString(handler) ? instance[handler] : handler.bind(instance),\n { passive, capture, self }\n )\n );\n }\n\n function initObservers(instance) {\n for (const observer of instance.$options.observe || []) {\n registerObservable(instance, observer);\n }\n }\n function registerObservable(instance, observable) {\n let { observe, target = instance.$el, handler, options, filter, args } = observable;\n if (filter && !filter.call(instance, instance)) {\n return;\n }\n const key = `_observe${instance._disconnect.length}`;\n if (isFunction(target) && !hasOwn(instance, key)) {\n registerComputed(instance, key, () => {\n const targets2 = target.call(instance, instance);\n return isArray(targets2) ? toNodes(targets2) : targets2;\n });\n }\n handler = isString(handler) ? instance[handler] : handler.bind(instance);\n if (isFunction(options)) {\n options = options.call(instance, instance);\n }\n const targets = hasOwn(instance, key) ? instance[key] : target;\n const observer = observe(targets, handler, options, args);\n if (isFunction(target) && isArray(instance[key])) {\n registerWatch(\n instance,\n { handler: updateTargets(observer, options), immediate: false },\n key\n );\n }\n instance._disconnect.push(() => observer.disconnect());\n }\n function updateTargets(observer, options) {\n return (targets, prev) => {\n for (const target of prev) {\n if (!includes(targets, target)) {\n if (observer.unobserve) {\n observer.unobserve(target);\n } else if (observer.observe) {\n observer.disconnect();\n }\n }\n }\n for (const target of targets) {\n if (!includes(prev, target) || !observer.unobserve) {\n observer.observe(target, options);\n }\n }\n };\n }\n\n function initProps(instance) {\n const { $options, $props } = instance;\n const props = getProps($options);\n assign($props, props);\n const { computed, methods } = $options;\n for (let key in $props) {\n if (key in props && (!computed || !hasOwn(computed, key)) && (!methods || !hasOwn(methods, key))) {\n instance[key] = $props[key];\n }\n }\n }\n function getProps(opts) {\n const data$1 = {};\n const { args = [], props = {}, el, id } = opts;\n if (!props) {\n return data$1;\n }\n for (const key in props) {\n const prop = hyphenate(key);\n let value = data(el, prop);\n if (isUndefined(value)) {\n continue;\n }\n value = props[key] === Boolean && value === \"\" ? true : coerce$1(props[key], value);\n if (prop === \"target\" && startsWith(value, \"_\")) {\n continue;\n }\n data$1[key] = value;\n }\n const options = parseOptions(data(el, id), args);\n for (const key in options) {\n const prop = camelize(key);\n if (!isUndefined(props[prop])) {\n data$1[prop] = coerce$1(props[prop], options[key]);\n }\n }\n return data$1;\n }\n const getAttributes = memoize((id, props) => {\n const attributes = Object.keys(props);\n const filter = attributes.concat(id).map((key) => [hyphenate(key), `data-${hyphenate(key)}`]).flat();\n return { attributes, filter };\n });\n function initPropsObserver(instance) {\n const { $options, $props } = instance;\n const { id, props, el } = $options;\n if (!props) {\n return;\n }\n const { attributes, filter } = getAttributes(id, props);\n const observer = new MutationObserver((records) => {\n const data = getProps($options);\n if (records.some(({ attributeName }) => {\n const prop = attributeName.replace(\"data-\", \"\");\n return (prop === id ? attributes : [camelize(prop), camelize(attributeName)]).some(\n (prop2) => !isUndefined(data[prop2]) && data[prop2] !== $props[prop2]\n );\n })) {\n instance.$reset();\n }\n });\n observer.observe(el, {\n attributes: true,\n attributeFilter: filter\n });\n instance._disconnect.push(() => observer.disconnect());\n }\n\n function callHook(instance, hook) {\n var _a;\n (_a = instance.$options[hook]) == null ? void 0 : _a.forEach((handler) => handler.call(instance));\n }\n function callConnected(instance) {\n if (instance._connected) {\n return;\n }\n initProps(instance);\n callHook(instance, \"beforeConnect\");\n instance._connected = true;\n instance._disconnect = [];\n initEvents(instance);\n initUpdates(instance);\n initWatches(instance);\n initObservers(instance);\n initPropsObserver(instance);\n initComputedUpdates(instance);\n callHook(instance, \"connected\");\n callUpdate(instance);\n }\n function callDisconnected(instance) {\n if (!instance._connected) {\n return;\n }\n callHook(instance, \"beforeDisconnect\");\n instance._disconnect.forEach((off) => off());\n instance._disconnect = null;\n callHook(instance, \"disconnected\");\n instance._connected = false;\n }\n\n let uid = 0;\n function init$1(instance, options = {}) {\n options.data = normalizeData(options, instance.constructor.options);\n instance.$options = mergeOptions(instance.constructor.options, options, instance);\n instance.$props = {};\n instance._uid = uid++;\n initData(instance);\n initMethods(instance);\n initComputed(instance);\n callHook(instance, \"created\");\n if (options.el) {\n instance.$mount(options.el);\n }\n }\n function initData(instance) {\n const { data = {} } = instance.$options;\n for (const key in data) {\n instance.$props[key] = instance[key] = data[key];\n }\n }\n function initMethods(instance) {\n const { methods } = instance.$options;\n if (methods) {\n for (const key in methods) {\n instance[key] = methods[key].bind(instance);\n }\n }\n }\n function normalizeData({ data = {} }, { args = [], props = {} }) {\n if (isArray(data)) {\n data = data.slice(0, args.length).reduce((data2, value, index) => {\n if (isPlainObject(value)) {\n assign(data2, value);\n } else {\n data2[args[index]] = value;\n }\n return data2;\n }, {});\n }\n for (const key in data) {\n if (isUndefined(data[key])) {\n delete data[key];\n } else if (props[key]) {\n data[key] = coerce$1(props[key], data[key]);\n }\n }\n return data;\n }\n\n const App = function(options) {\n init$1(this, options);\n };\n App.util = util;\n App.options = {};\n App.version = \"3.21.13\";\n\n const PREFIX = \"uk-\";\n const DATA = \"__uikit__\";\n const components$2 = {};\n function component(name, options) {\n var _a, _b;\n const id = PREFIX + hyphenate(name);\n if (!options) {\n if (!components$2[id].options) {\n components$2[id] = App.extend(components$2[id]);\n }\n return components$2[id];\n }\n name = camelize(name);\n App[name] = (element, data) => createComponent(name, element, data);\n const opt = (_a = options.options) != null ? _a : { ...options };\n opt.id = id;\n opt.name = name;\n (_b = opt.install) == null ? void 0 : _b.call(opt, App, opt, name);\n if (App._initialized && !opt.functional) {\n requestAnimationFrame(() => createComponent(name, `[${id}],[data-${id}]`));\n }\n return components$2[id] = opt;\n }\n function createComponent(name, element, data, ...args) {\n const Component = component(name);\n return Component.options.functional ? new Component({ data: isPlainObject(element) ? element : [element, data, ...args] }) : element ? $$(element).map(init)[0] : init();\n function init(element2) {\n const instance = getComponent(element2, name);\n if (instance) {\n if (data) {\n instance.$destroy();\n } else {\n return instance;\n }\n }\n return new Component({ el: element2, data });\n }\n }\n function getComponents(element) {\n return (element == null ? void 0 : element[DATA]) || {};\n }\n function getComponent(element, name) {\n return getComponents(element)[name];\n }\n function attachToElement(element, instance) {\n if (!element[DATA]) {\n element[DATA] = {};\n }\n element[DATA][instance.$options.name] = instance;\n }\n function detachFromElement(element, instance) {\n var _a;\n (_a = element[DATA]) == null ? true : delete _a[instance.$options.name];\n if (isEmpty(element[DATA])) {\n delete element[DATA];\n }\n }\n\n function globalApi(App) {\n App.component = component;\n App.getComponents = getComponents;\n App.getComponent = getComponent;\n App.update = update;\n App.use = function(plugin) {\n if (plugin.installed) {\n return;\n }\n plugin.call(null, this);\n plugin.installed = true;\n return this;\n };\n App.mixin = function(mixin, component2) {\n component2 = (isString(component2) ? this.component(component2) : component2) || this;\n component2.options = mergeOptions(component2.options, mixin);\n };\n App.extend = function(options) {\n options || (options = {});\n const Super = this;\n const Sub = function UIkitComponent(options2) {\n init$1(this, options2);\n };\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.options = mergeOptions(Super.options, options);\n Sub.super = Super;\n Sub.extend = Super.extend;\n return Sub;\n };\n let container;\n Object.defineProperty(App, \"container\", {\n get() {\n return container || document.body;\n },\n set(element) {\n container = $(element);\n }\n });\n }\n function update(element, e) {\n element = element ? toNode(element) : document.body;\n for (const parentEl of parents(element).reverse()) {\n updateElement(parentEl, e);\n }\n apply(element, (element2) => updateElement(element2, e));\n }\n function updateElement(element, e) {\n const components = getComponents(element);\n for (const name in components) {\n callUpdate(components[name], e);\n }\n }\n\n function instanceApi(App) {\n App.prototype.$mount = function(el) {\n const instance = this;\n attachToElement(el, instance);\n instance.$options.el = el;\n if (document.contains(el)) {\n callConnected(instance);\n }\n };\n App.prototype.$destroy = function(removeEl = false) {\n const instance = this;\n const { el } = instance.$options;\n if (el) {\n callDisconnected(instance);\n }\n callHook(instance, \"destroy\");\n detachFromElement(el, instance);\n if (removeEl) {\n remove$1(instance.$el);\n }\n };\n App.prototype.$create = createComponent;\n App.prototype.$emit = function(e) {\n callUpdate(this, e);\n };\n App.prototype.$update = function(element = this.$el, e) {\n update(element, e);\n };\n App.prototype.$reset = function() {\n callDisconnected(this);\n callConnected(this);\n };\n App.prototype.$getComponent = getComponent;\n Object.defineProperties(App.prototype, {\n $el: {\n get() {\n return this.$options.el;\n }\n },\n $container: Object.getOwnPropertyDescriptor(App, \"container\")\n });\n }\n let id = 1;\n function generateId(instance, el = null) {\n return (el == null ? void 0 : el.id) || `${instance.$options.id}-${id++}`;\n }\n\n var SliderNav = {\n i18n: {\n next: \"Next slide\",\n previous: \"Previous slide\",\n slideX: \"Slide %s\",\n slideLabel: \"%s of %s\",\n role: \"String\"\n },\n data: {\n selNav: false,\n role: \"region\"\n },\n computed: {\n nav: ({ selNav }, $el) => $(selNav, $el),\n navChildren() {\n return children(this.nav);\n },\n selNavItem: ({ attrItem }) => `[${attrItem}],[data-${attrItem}]`,\n navItems(_, $el) {\n return $$(this.selNavItem, $el);\n }\n },\n watch: {\n nav(nav, prev) {\n attr(nav, \"role\", \"tablist\");\n this.padNavitems();\n if (prev) {\n this.$emit();\n }\n },\n list(list) {\n if (isTag(list, \"ul\")) {\n attr(list, \"role\", \"presentation\");\n }\n },\n navChildren(children2) {\n attr(children2, \"role\", \"presentation\");\n this.padNavitems();\n this.updateNav();\n },\n navItems(items) {\n for (const el of items) {\n const cmd = data(el, this.attrItem);\n const button = $(\"a,button\", el) || el;\n let ariaLabel;\n let ariaControls = null;\n if (isNumeric(cmd)) {\n const item = toNumber(cmd);\n const slide = this.slides[item];\n if (slide) {\n if (!slide.id) {\n slide.id = generateId(this, slide);\n }\n ariaControls = slide.id;\n }\n ariaLabel = this.t(\"slideX\", toFloat(cmd) + 1);\n attr(button, \"role\", \"tab\");\n } else {\n if (this.list) {\n if (!this.list.id) {\n this.list.id = generateId(this, this.list);\n }\n ariaControls = this.list.id;\n }\n ariaLabel = this.t(cmd);\n }\n attr(button, {\n \"aria-controls\": ariaControls,\n \"aria-label\": attr(button, \"aria-label\") || ariaLabel\n });\n }\n },\n slides(slides) {\n slides.forEach(\n (slide, i) => attr(slide, {\n role: this.nav ? \"tabpanel\" : \"group\",\n \"aria-label\": this.t(\"slideLabel\", i + 1, this.length),\n \"aria-roledescription\": this.nav ? null : \"slide\"\n })\n );\n this.padNavitems();\n }\n },\n connected() {\n attr(this.$el, {\n role: this.role,\n \"aria-roledescription\": \"carousel\"\n });\n },\n update: [\n {\n write() {\n this.navItems.concat(this.nav).forEach((el) => el && (el.hidden = !this.maxIndex));\n this.updateNav();\n },\n events: [\"resize\"]\n }\n ],\n events: [\n {\n name: \"click keydown\",\n delegate: ({ selNavItem }) => selNavItem,\n filter: ({ parallax }) => !parallax,\n handler(e) {\n if (e.target.closest(\"a,button\") && (e.type === \"click\" || e.keyCode === keyMap.SPACE)) {\n e.preventDefault();\n this.show(data(e.current, this.attrItem));\n }\n }\n },\n {\n name: \"itemshow\",\n handler: \"updateNav\"\n },\n {\n name: \"keydown\",\n delegate: ({ selNavItem }) => selNavItem,\n filter: ({ parallax }) => !parallax,\n handler(e) {\n const { current, keyCode } = e;\n const cmd = data(current, this.attrItem);\n if (!isNumeric(cmd)) {\n return;\n }\n let i = keyCode === keyMap.HOME ? 0 : keyCode === keyMap.END ? \"last\" : keyCode === keyMap.LEFT ? \"previous\" : keyCode === keyMap.RIGHT ? \"next\" : -1;\n if (~i) {\n e.preventDefault();\n this.show(i);\n }\n }\n }\n ],\n methods: {\n updateNav() {\n const index = this.getValidIndex();\n for (const el of this.navItems) {\n const cmd = data(el, this.attrItem);\n const button = $(\"a,button\", el) || el;\n if (isNumeric(cmd)) {\n const item = toNumber(cmd);\n const active = item === index;\n toggleClass(el, this.clsActive, active);\n toggleClass(button, \"uk-disabled\", this.parallax);\n attr(button, {\n \"aria-selected\": active,\n tabindex: active && !this.parallax ? null : -1\n });\n if (active && button && matches(parent(el), \":focus-within\")) {\n button.focus();\n }\n } else {\n toggleClass(\n el,\n \"uk-invisible\",\n this.finite && (cmd === \"previous\" && index === 0 || cmd === \"next\" && index >= this.maxIndex)\n );\n }\n }\n },\n padNavitems() {\n if (!this.nav) {\n return;\n }\n const children2 = [];\n for (let i = 0; i < this.length; i++) {\n const attr2 = `${this.attrItem}=\"${i}\"`;\n children2[i] = this.navChildren.findLast((el) => el.matches(`[${attr2}]`)) || $(`
  • `);\n }\n if (!isEqual(children2, this.navChildren)) {\n html(this.nav, children2);\n }\n }\n }\n };\n\n const easeOutQuad = \"cubic-bezier(0.25, 0.46, 0.45, 0.94)\";\n const easeOutQuart = \"cubic-bezier(0.165, 0.84, 0.44, 1)\";\n var Slider = {\n mixins: [SliderAutoplay, SliderDrag, SliderNav, I18n],\n props: {\n clsActivated: String,\n easing: String,\n index: Number,\n finite: Boolean,\n velocity: Number\n },\n data: () => ({\n easing: \"ease\",\n finite: false,\n velocity: 1,\n index: 0,\n prevIndex: -1,\n stack: [],\n percent: 0,\n clsActive: \"uk-active\",\n clsActivated: \"\",\n clsEnter: \"uk-slide-enter\",\n clsLeave: \"uk-slide-leave\",\n clsSlideActive: \"uk-slide-active\",\n Transitioner: false,\n transitionOptions: {}\n }),\n connected() {\n this.prevIndex = -1;\n this.index = this.getValidIndex(this.$props.index);\n this.stack = [];\n },\n disconnected() {\n removeClass(this.slides, this.clsActive);\n },\n computed: {\n duration: ({ velocity }, $el) => speedUp($el.offsetWidth / velocity),\n list: ({ selList }, $el) => $(selList, $el),\n maxIndex() {\n return this.length - 1;\n },\n slides() {\n return children(this.list);\n },\n length() {\n return this.slides.length;\n }\n },\n watch: {\n slides(slides, prev) {\n if (prev) {\n this.$emit();\n }\n }\n },\n events: {\n itemshow({ target }) {\n addClass(target, this.clsEnter, this.clsSlideActive);\n },\n itemshown({ target }) {\n removeClass(target, this.clsEnter);\n },\n itemhide({ target }) {\n addClass(target, this.clsLeave);\n },\n itemhidden({ target }) {\n removeClass(target, this.clsLeave, this.clsSlideActive);\n }\n },\n methods: {\n show(index, force = false) {\n var _a;\n if (this.dragging || !this.length || this.parallax) {\n return;\n }\n const { stack } = this;\n const queueIndex = force ? 0 : stack.length;\n const reset = () => {\n stack.splice(queueIndex, 1);\n if (stack.length) {\n this.show(stack.shift(), true);\n }\n };\n stack[force ? \"unshift\" : \"push\"](index);\n if (!force && stack.length > 1) {\n if (stack.length === 2) {\n (_a = this._transitioner) == null ? void 0 : _a.forward(Math.min(this.duration, 200));\n }\n return;\n }\n const prevIndex = this.getIndex(this.index);\n const prev = hasClass(this.slides, this.clsActive) && this.slides[prevIndex];\n const nextIndex = this.getIndex(index, this.index);\n const next = this.slides[nextIndex];\n if (prev === next) {\n reset();\n return;\n }\n this.dir = getDirection(index, prevIndex);\n this.prevIndex = prevIndex;\n this.index = nextIndex;\n if (prev && !trigger(prev, \"beforeitemhide\", [this]) || !trigger(next, \"beforeitemshow\", [this, prev])) {\n this.index = this.prevIndex;\n reset();\n return;\n }\n const promise = this._show(prev, next, force).then(() => {\n prev && trigger(prev, \"itemhidden\", [this]);\n trigger(next, \"itemshown\", [this]);\n stack.shift();\n this._transitioner = null;\n if (stack.length) {\n requestAnimationFrame(() => stack.length && this.show(stack.shift(), true));\n }\n });\n prev && trigger(prev, \"itemhide\", [this]);\n trigger(next, \"itemshow\", [this]);\n return promise;\n },\n getIndex(index = this.index, prev = this.index) {\n return clamp(\n getIndex(index, this.slides, prev, this.finite),\n 0,\n Math.max(0, this.maxIndex)\n );\n },\n getValidIndex(index = this.index, prevIndex = this.prevIndex) {\n return this.getIndex(index, prevIndex);\n },\n async _show(prev, next, force) {\n this._transitioner = this._getTransitioner(prev, next, this.dir, {\n easing: force ? next.offsetWidth < 600 ? easeOutQuad : easeOutQuart : this.easing,\n ...this.transitionOptions\n });\n if (!force && !prev) {\n this._translate(1);\n return;\n }\n const { length } = this.stack;\n return this._transitioner[length > 1 ? \"forward\" : \"show\"](\n length > 1 ? Math.min(this.duration, 75 + 75 / (length - 1)) : this.duration,\n this.percent\n );\n },\n _translate(percent, prev = this.prevIndex, next = this.index) {\n const transitioner = this._getTransitioner(prev === next ? false : prev, next);\n transitioner.translate(percent);\n return transitioner;\n },\n _getTransitioner(prev = this.prevIndex, next = this.index, dir = this.dir || 1, options = this.transitionOptions) {\n return new this.Transitioner(\n isNumber(prev) ? this.slides[prev] : prev,\n isNumber(next) ? this.slides[next] : next,\n dir * (isRtl ? -1 : 1),\n options\n );\n }\n }\n };\n function getDirection(index, prevIndex) {\n return index === \"next\" ? 1 : index === \"previous\" ? -1 : index < prevIndex ? -1 : 1;\n }\n function speedUp(x) {\n return 0.5 * x + 300;\n }\n\n var Slideshow = {\n mixins: [Slider],\n props: {\n animation: String\n },\n data: {\n animation: \"slide\",\n clsActivated: \"uk-transition-active\",\n Animations: Animations$2,\n Transitioner: Transitioner$1\n },\n computed: {\n animation({ animation, Animations: Animations2 }) {\n return { ...Animations2[animation] || Animations2.slide, name: animation };\n },\n transitionOptions() {\n return { animation: this.animation };\n }\n },\n observe: resize(),\n events: {\n beforeitemshow({ target }) {\n addClass(target, this.clsActive);\n },\n itemshown({ target }) {\n addClass(target, this.clsActivated);\n },\n itemhidden({ target }) {\n removeClass(target, this.clsActive, this.clsActivated);\n }\n }\n };\n\n var Animations$1 = {\n ...Animations$2,\n fade: {\n show() {\n return [{ opacity: 0 }, { opacity: 1 }];\n },\n percent(current) {\n return 1 - css(current, \"opacity\");\n },\n translate(percent) {\n return [{ opacity: 1 - percent }, { opacity: percent }];\n }\n },\n scale: {\n show() {\n return [\n { opacity: 0, transform: scale3d(1 - 0.2) },\n { opacity: 1, transform: scale3d(1) }\n ];\n },\n percent(current) {\n return 1 - css(current, \"opacity\");\n },\n translate(percent) {\n return [\n { opacity: 1 - percent, transform: scale3d(1 - 0.2 * percent) },\n { opacity: percent, transform: scale3d(1 - 0.2 + 0.2 * percent) }\n ];\n }\n }\n };\n\n var LightboxPanel = {\n mixins: [Modal, Slideshow],\n functional: true,\n props: {\n delayControls: Number,\n preload: Number,\n videoAutoplay: Boolean,\n template: String\n },\n data: () => ({\n preload: 1,\n videoAutoplay: false,\n delayControls: 3e3,\n items: [],\n cls: \"uk-open\",\n clsPage: \"uk-lightbox-page\",\n selList: \".uk-lightbox-items\",\n attrItem: \"uk-lightbox-item\",\n selClose: \".uk-close-large\",\n selCaption: \".uk-lightbox-caption\",\n pauseOnHover: false,\n velocity: 2,\n Animations: Animations$1,\n template: `
    `\n }),\n created() {\n const $el = $(this.template);\n const list = $(this.selList, $el);\n this.items.forEach(() => append(list, \"
    \"));\n const close = $(\"[uk-close]\", $el);\n const closeLabel = this.t(\"close\");\n if (close && closeLabel) {\n close.dataset.i18n = JSON.stringify({ label: closeLabel });\n }\n this.$mount(append(this.container, $el));\n },\n events: [\n {\n name: `${pointerMove$1} ${pointerDown$1} keydown`,\n handler: \"showControls\"\n },\n {\n name: \"click\",\n self: true,\n delegate: ({ selList }) => `${selList} > *`,\n handler(e) {\n if (!e.defaultPrevented) {\n this.hide();\n }\n }\n },\n {\n name: \"shown\",\n self: true,\n handler: \"showControls\"\n },\n {\n name: \"hide\",\n self: true,\n handler() {\n this.hideControls();\n removeClass(this.slides, this.clsActive);\n Transition.stop(this.slides);\n }\n },\n {\n name: \"hidden\",\n self: true,\n handler() {\n this.$destroy(true);\n }\n },\n {\n name: \"keyup\",\n el: () => document,\n handler({ keyCode }) {\n if (!this.isToggled(this.$el) || !this.draggable) {\n return;\n }\n let i = -1;\n if (keyCode === keyMap.LEFT) {\n i = \"previous\";\n } else if (keyCode === keyMap.RIGHT) {\n i = \"next\";\n } else if (keyCode === keyMap.HOME) {\n i = 0;\n } else if (keyCode === keyMap.END) {\n i = \"last\";\n }\n if (~i) {\n this.show(i);\n }\n }\n },\n {\n name: \"beforeitemshow\",\n handler(e) {\n if (this.isToggled()) {\n return;\n }\n this.draggable = false;\n e.preventDefault();\n this.toggleElement(this.$el, true, false);\n this.animation = Animations$1[\"scale\"];\n removeClass(e.target, this.clsActive);\n this.stack.splice(1, 0, this.index);\n }\n },\n {\n name: \"itemshow\",\n handler() {\n html($(this.selCaption, this.$el), this.getItem().caption || \"\");\n for (let j = -this.preload; j <= this.preload; j++) {\n this.loadItem(this.index + j);\n }\n }\n },\n {\n name: \"itemshown\",\n handler() {\n this.draggable = this.$props.draggable;\n }\n },\n {\n name: \"itemload\",\n async handler(_, item) {\n const { source: src, type, alt = \"\", poster, attrs = {} } = item;\n this.setItem(item, \"\");\n if (!src) {\n return;\n }\n let matches;\n const iframeAttrs = {\n allowfullscreen: \"\",\n style: \"max-width: 100%; box-sizing: border-box;\",\n \"uk-responsive\": \"\",\n \"uk-video\": `${this.videoAutoplay}`\n };\n if (type === \"image\" || src.match(/\\.(avif|jpe?g|jfif|a?png|gif|svg|webp)($|\\?)/i)) {\n const img = createEl(\"img\", { src, alt, ...attrs });\n on(img, \"load\", () => this.setItem(item, img));\n on(img, \"error\", () => this.setError(item));\n } else if (type === \"video\" || src.match(/\\.(mp4|webm|ogv)($|\\?)/i)) {\n const video = createEl(\"video\", {\n src,\n poster,\n controls: \"\",\n playsinline: \"\",\n \"uk-video\": `${this.videoAutoplay}`,\n ...attrs\n });\n on(video, \"loadedmetadata\", () => this.setItem(item, video));\n on(video, \"error\", () => this.setError(item));\n } else if (type === \"iframe\" || src.match(/\\.(html|php)($|\\?)/i)) {\n this.setItem(\n item,\n createEl(\"iframe\", {\n src,\n allowfullscreen: \"\",\n class: \"uk-lightbox-iframe\",\n ...attrs\n })\n );\n } else if (matches = src.match(\n /\\/\\/(?:.*?youtube(-nocookie)?\\..*?(?:[?&]v=|\\/shorts\\/)|youtu\\.be\\/)([\\w-]{11})[&?]?(.*)?/\n )) {\n this.setItem(\n item,\n createEl(\"iframe\", {\n src: `https://www.youtube${matches[1] || \"\"}.com/embed/${matches[2]}${matches[3] ? `?${matches[3]}` : \"\"}`,\n width: 1920,\n height: 1080,\n ...iframeAttrs,\n ...attrs\n })\n );\n } else if (matches = src.match(/\\/\\/.*?vimeo\\.[a-z]+\\/(\\d+)[&?]?(.*)?/)) {\n try {\n const { height, width } = await (await fetch(\n `https://vimeo.com/api/oembed.json?maxwidth=1920&url=${encodeURI(\n src\n )}`,\n { credentials: \"omit\" }\n )).json();\n this.setItem(\n item,\n createEl(\"iframe\", {\n src: `https://player.vimeo.com/video/${matches[1]}${matches[2] ? `?${matches[2]}` : \"\"}`,\n width,\n height,\n ...iframeAttrs,\n ...attrs\n })\n );\n } catch (e) {\n this.setError(item);\n }\n }\n }\n }\n ],\n methods: {\n loadItem(index = this.index) {\n const item = this.getItem(index);\n if (!this.getSlide(item).childElementCount) {\n trigger(this.$el, \"itemload\", [item]);\n }\n },\n getItem(index = this.index) {\n return this.items[getIndex(index, this.slides)];\n },\n setItem(item, content) {\n trigger(this.$el, \"itemloaded\", [this, html(this.getSlide(item), content)]);\n },\n getSlide(item) {\n return this.slides[this.items.indexOf(item)];\n },\n setError(item) {\n this.setItem(item, '');\n },\n showControls() {\n clearTimeout(this.controlsTimer);\n this.controlsTimer = setTimeout(this.hideControls, this.delayControls);\n addClass(this.$el, \"uk-active\", \"uk-transition-active\");\n },\n hideControls() {\n removeClass(this.$el, \"uk-active\", \"uk-transition-active\");\n }\n }\n };\n function createEl(tag, attrs) {\n const el = fragment(`<${tag}>`);\n attr(el, attrs);\n return el;\n }\n\n var lightbox = {\n install: install$3,\n props: { toggle: String },\n data: { toggle: \"a\" },\n computed: {\n toggles: ({ toggle }, $el) => $$(toggle, $el)\n },\n watch: {\n toggles(toggles) {\n this.hide();\n for (const toggle of toggles) {\n if (isTag(toggle, \"a\")) {\n attr(toggle, \"role\", \"button\");\n }\n }\n }\n },\n disconnected() {\n this.hide();\n },\n events: {\n name: \"click\",\n delegate: ({ toggle }) => `${toggle}:not(.uk-disabled)`,\n handler(e) {\n if (!e.defaultPrevented) {\n e.preventDefault();\n this.show(e.current);\n }\n }\n },\n methods: {\n show(index) {\n const items = uniqueBy(this.toggles.map(toItem), \"source\");\n if (isElement(index)) {\n const { source } = toItem(index);\n index = findIndex(items, ({ source: src }) => source === src);\n }\n this.panel = this.panel || this.$create(\"lightboxPanel\", { ...this.$props, items });\n on(this.panel.$el, \"hidden\", () => this.panel = null);\n return this.panel.show(index);\n },\n hide() {\n var _a;\n return (_a = this.panel) == null ? void 0 : _a.hide();\n }\n }\n };\n function install$3(UIkit, Lightbox) {\n if (!UIkit.lightboxPanel) {\n UIkit.component(\"lightboxPanel\", LightboxPanel);\n }\n assign(Lightbox.props, UIkit.component(\"lightboxPanel\").options.props);\n }\n function toItem(el) {\n const item = {};\n for (const attr2 of [\"href\", \"caption\", \"type\", \"poster\", \"alt\", \"attrs\"]) {\n item[attr2 === \"href\" ? \"source\" : attr2] = data(el, attr2);\n }\n item.attrs = parseOptions(item.attrs);\n return item;\n }\n\n var notification = {\n mixins: [Container],\n functional: true,\n args: [\"message\", \"status\"],\n data: {\n message: \"\",\n status: \"\",\n timeout: 5e3,\n group: \"\",\n pos: \"top-center\",\n clsContainer: \"uk-notification\",\n clsClose: \"uk-notification-close\",\n clsMsg: \"uk-notification-message\"\n },\n install: install$2,\n computed: {\n marginProp: ({ pos }) => `margin-${pos.match(/[a-z]+(?=-)/)[0]}`,\n startProps() {\n return { opacity: 0, [this.marginProp]: -this.$el.offsetHeight };\n }\n },\n created() {\n const posClass = `${this.clsContainer}-${this.pos}`;\n const containerAttr = `data-${this.clsContainer}-container`;\n const container = $(`.${posClass}[${containerAttr}]`, this.container) || append(\n this.container,\n `
    `\n );\n this.$mount(\n append(\n container,\n `
    ${this.message}
    `\n )\n );\n },\n async connected() {\n const margin = toFloat(css(this.$el, this.marginProp));\n await Transition.start(css(this.$el, this.startProps), {\n opacity: 1,\n [this.marginProp]: margin\n });\n if (this.timeout) {\n this.timer = setTimeout(this.close, this.timeout);\n }\n },\n events: {\n click(e) {\n if (e.target.closest('a[href=\"#\"],a[href=\"\"]')) {\n e.preventDefault();\n }\n this.close();\n },\n [pointerEnter]() {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n },\n [pointerLeave]() {\n if (this.timeout) {\n this.timer = setTimeout(this.close, this.timeout);\n }\n }\n },\n methods: {\n async close(immediate) {\n const removeFn = (el) => {\n const container = parent(el);\n trigger(el, \"close\", [this]);\n remove$1(el);\n if (!(container == null ? void 0 : container.hasChildNodes())) {\n remove$1(container);\n }\n };\n if (this.timer) {\n clearTimeout(this.timer);\n }\n if (!immediate) {\n await Transition.start(this.$el, this.startProps);\n }\n removeFn(this.$el);\n }\n }\n };\n function install$2(UIkit) {\n UIkit.notification.closeAll = function(group, immediate) {\n apply(document.body, (el) => {\n const notification = UIkit.getComponent(el, \"notification\");\n if (notification && (!group || group === notification.group)) {\n notification.close(immediate);\n }\n });\n };\n }\n\n var Media = {\n props: {\n media: Boolean\n },\n data: {\n media: false\n },\n connected() {\n const media = toMedia(this.media, this.$el);\n this.matchMedia = true;\n if (media) {\n this.mediaObj = window.matchMedia(media);\n const handler = () => {\n this.matchMedia = this.mediaObj.matches;\n trigger(this.$el, createEvent(\"mediachange\", false, true, [this.mediaObj]));\n };\n this.offMediaObj = on(this.mediaObj, \"change\", () => {\n handler();\n this.$emit(\"resize\");\n });\n handler();\n }\n },\n disconnected() {\n var _a;\n (_a = this.offMediaObj) == null ? void 0 : _a.call(this);\n }\n };\n function toMedia(value, element) {\n if (isString(value)) {\n if (startsWith(value, \"@\")) {\n value = toFloat(css(element, `--uk-breakpoint-${value.slice(1)}`));\n } else if (isNaN(value)) {\n return value;\n }\n }\n return value && isNumeric(value) ? `(min-width: ${value}px)` : \"\";\n }\n\n function getMaxPathLength(el) {\n return isVisible(el) ? Math.ceil(\n Math.max(0, ...$$(\"[stroke]\", el).map((stroke) => {\n var _a;\n return ((_a = stroke.getTotalLength) == null ? void 0 : _a.call(stroke)) || 0;\n }))\n ) : 0;\n }\n\n const props = {\n x: transformFn,\n y: transformFn,\n rotate: transformFn,\n scale: transformFn,\n color: colorFn,\n backgroundColor: colorFn,\n borderColor: colorFn,\n blur: filterFn,\n hue: filterFn,\n fopacity: filterFn,\n grayscale: filterFn,\n invert: filterFn,\n saturate: filterFn,\n sepia: filterFn,\n opacity: cssPropFn,\n stroke: strokeFn,\n bgx: backgroundFn,\n bgy: backgroundFn\n };\n const { keys } = Object;\n var Parallax = {\n mixins: [Media],\n props: fillObject(keys(props), \"list\"),\n data: fillObject(keys(props), void 0),\n computed: {\n props(properties, $el) {\n const stops = {};\n for (const prop in properties) {\n if (prop in props && !isUndefined(properties[prop])) {\n stops[prop] = properties[prop].slice();\n }\n }\n const result = {};\n for (const prop in stops) {\n result[prop] = props[prop](prop, $el, stops[prop], stops);\n }\n return result;\n }\n },\n events: {\n load() {\n this.$emit();\n }\n },\n methods: {\n reset() {\n for (const prop in this.getCss(0)) {\n css(this.$el, prop, \"\");\n }\n },\n getCss(percent) {\n const css2 = {};\n for (const prop in this.props) {\n this.props[prop](css2, clamp(percent));\n }\n css2.willChange = Object.keys(css2).map(propName).join(\",\");\n return css2;\n }\n }\n };\n function transformFn(prop, el, stops) {\n let unit = getUnit(stops) || { x: \"px\", y: \"px\", rotate: \"deg\" }[prop] || \"\";\n let transformFn2;\n if (prop === \"x\" || prop === \"y\") {\n prop = `translate${ucfirst(prop)}`;\n transformFn2 = (stop) => toFloat(toFloat(stop).toFixed(unit === \"px\" ? 0 : 6));\n } else if (prop === \"scale\") {\n unit = \"\";\n transformFn2 = (stop) => {\n var _a;\n return getUnit([stop]) ? toPx(stop, \"width\", el, true) / el[`offset${((_a = stop.endsWith) == null ? void 0 : _a.call(stop, \"vh\")) ? \"Height\" : \"Width\"}`] : toFloat(stop);\n };\n }\n if (stops.length === 1) {\n stops.unshift(prop === \"scale\" ? 1 : 0);\n }\n stops = parseStops(stops, transformFn2);\n return (css2, percent) => {\n css2.transform = `${css2.transform || \"\"} ${prop}(${getValue(stops, percent)}${unit})`;\n };\n }\n function colorFn(prop, el, stops) {\n if (stops.length === 1) {\n stops.unshift(getCssValue(el, prop, \"\"));\n }\n stops = parseStops(stops, (stop) => parseColor(el, stop));\n return (css2, percent) => {\n const [start, end, p] = getStop(stops, percent);\n const value = start.map((value2, i) => {\n value2 += p * (end[i] - value2);\n return i === 3 ? toFloat(value2) : parseInt(value2, 10);\n }).join(\",\");\n css2[prop] = `rgba(${value})`;\n };\n }\n function parseColor(el, color) {\n return getCssValue(el, \"color\", color).split(/[(),]/g).slice(1, -1).concat(1).slice(0, 4).map(toFloat);\n }\n function filterFn(prop, el, stops) {\n if (stops.length === 1) {\n stops.unshift(0);\n }\n const unit = getUnit(stops) || { blur: \"px\", hue: \"deg\" }[prop] || \"%\";\n prop = { fopacity: \"opacity\", hue: \"hue-rotate\" }[prop] || prop;\n stops = parseStops(stops);\n return (css2, percent) => {\n const value = getValue(stops, percent);\n css2.filter = `${css2.filter || \"\"} ${prop}(${value + unit})`;\n };\n }\n function cssPropFn(prop, el, stops) {\n if (stops.length === 1) {\n stops.unshift(getCssValue(el, prop, \"\"));\n }\n stops = parseStops(stops);\n return (css2, percent) => {\n css2[prop] = getValue(stops, percent);\n };\n }\n function strokeFn(prop, el, stops) {\n if (stops.length === 1) {\n stops.unshift(0);\n }\n const unit = getUnit(stops);\n const length = getMaxPathLength(el);\n stops = parseStops(stops.reverse(), (stop) => {\n stop = toFloat(stop);\n return unit === \"%\" ? stop * length / 100 : stop;\n });\n if (!stops.some(([value]) => value)) {\n return noop;\n }\n css(el, \"strokeDasharray\", length);\n return (css2, percent) => {\n css2.strokeDashoffset = getValue(stops, percent);\n };\n }\n function backgroundFn(prop, el, stops, props2) {\n if (stops.length === 1) {\n stops.unshift(0);\n }\n const attr = prop === \"bgy\" ? \"height\" : \"width\";\n props2[prop] = parseStops(stops, (stop) => toPx(stop, attr, el));\n const bgProps = [\"bgx\", \"bgy\"].filter((prop2) => prop2 in props2);\n if (bgProps.length === 2 && prop === \"bgx\") {\n return noop;\n }\n if (getCssValue(el, \"backgroundSize\", \"\") === \"cover\") {\n return backgroundCoverFn(prop, el, stops, props2);\n }\n const positions = {};\n for (const prop2 of bgProps) {\n positions[prop2] = getBackgroundPos(el, prop2);\n }\n return setBackgroundPosFn(bgProps, positions, props2);\n }\n function backgroundCoverFn(prop, el, stops, props2) {\n const dimImage = getBackgroundImageDimensions(el);\n if (!dimImage.width) {\n return noop;\n }\n const dimEl = {\n width: el.offsetWidth,\n height: el.offsetHeight\n };\n const bgProps = [\"bgx\", \"bgy\"].filter((prop2) => prop2 in props2);\n const positions = {};\n for (const prop2 of bgProps) {\n const values = props2[prop2].map(([value]) => value);\n const min = Math.min(...values);\n const max = Math.max(...values);\n const down = values.indexOf(min) < values.indexOf(max);\n const diff = max - min;\n positions[prop2] = `${(down ? -diff : 0) - (down ? min : max)}px`;\n dimEl[prop2 === \"bgy\" ? \"height\" : \"width\"] += diff;\n }\n const dim = Dimensions.cover(dimImage, dimEl);\n for (const prop2 of bgProps) {\n const attr = prop2 === \"bgy\" ? \"height\" : \"width\";\n const overflow = dim[attr] - dimEl[attr];\n positions[prop2] = `max(${getBackgroundPos(el, prop2)},-${overflow}px) + ${positions[prop2]}`;\n }\n const fn = setBackgroundPosFn(bgProps, positions, props2);\n return (css2, percent) => {\n fn(css2, percent);\n css2.backgroundSize = `${dim.width}px ${dim.height}px`;\n css2.backgroundRepeat = \"no-repeat\";\n };\n }\n function getBackgroundPos(el, prop) {\n return getCssValue(el, `background-position-${prop.slice(-1)}`, \"\");\n }\n function setBackgroundPosFn(bgProps, positions, props2) {\n return function(css2, percent) {\n for (const prop of bgProps) {\n const value = getValue(props2[prop], percent);\n css2[`background-position-${prop.slice(-1)}`] = `calc(${positions[prop]} + ${value}px)`;\n }\n };\n }\n const loading = {};\n const dimensions = {};\n function getBackgroundImageDimensions(el) {\n const src = css(el, \"backgroundImage\").replace(/^none|url\\([\"']?(.+?)[\"']?\\)$/, \"$1\");\n if (dimensions[src]) {\n return dimensions[src];\n }\n const image = new Image();\n if (src) {\n image.src = src;\n if (!image.naturalWidth && !loading[src]) {\n once(image, \"error load\", () => {\n dimensions[src] = toDimensions(image);\n trigger(el, createEvent(\"load\", false));\n });\n loading[src] = true;\n return toDimensions(image);\n }\n }\n return dimensions[src] = toDimensions(image);\n }\n function toDimensions(image) {\n return {\n width: image.naturalWidth,\n height: image.naturalHeight\n };\n }\n function parseStops(stops, fn = toFloat) {\n const result = [];\n const { length } = stops;\n let nullIndex = 0;\n for (let i = 0; i < length; i++) {\n let [value, percent] = isString(stops[i]) ? stops[i].trim().split(/ (?![^(]*\\))/) : [stops[i]];\n value = fn(value);\n percent = percent ? toFloat(percent) / 100 : null;\n if (i === 0) {\n if (percent === null) {\n percent = 0;\n } else if (percent) {\n result.push([value, 0]);\n }\n } else if (i === length - 1) {\n if (percent === null) {\n percent = 1;\n } else if (percent !== 1) {\n result.push([value, percent]);\n percent = 1;\n }\n }\n result.push([value, percent]);\n if (percent === null) {\n nullIndex++;\n } else if (nullIndex) {\n const leftPercent = result[i - nullIndex - 1][1];\n const p = (percent - leftPercent) / (nullIndex + 1);\n for (let j = nullIndex; j > 0; j--) {\n result[i - j][1] = leftPercent + p * (nullIndex - j + 1);\n }\n nullIndex = 0;\n }\n }\n return result;\n }\n function getStop(stops, percent) {\n const index = findIndex(stops.slice(1), ([, targetPercent]) => percent <= targetPercent) + 1;\n return [\n stops[index - 1][0],\n stops[index][0],\n (percent - stops[index - 1][1]) / (stops[index][1] - stops[index - 1][1])\n ];\n }\n function getValue(stops, percent) {\n const [start, end, p] = getStop(stops, percent);\n return start + Math.abs(start - end) * p * (start < end ? 1 : -1);\n }\n const unitRe = /^-?\\d+(?:\\.\\d+)?(\\S+)?/;\n function getUnit(stops, defaultUnit) {\n var _a;\n for (const stop of stops) {\n const match = (_a = stop.match) == null ? void 0 : _a.call(stop, unitRe);\n if (match) {\n return match[1];\n }\n }\n return defaultUnit;\n }\n function getCssValue(el, prop, value) {\n const prev = el.style[prop];\n const val = css(css(el, prop, value), prop);\n el.style[prop] = prev;\n return val;\n }\n function fillObject(keys2, value) {\n return keys2.reduce((data, prop) => {\n data[prop] = value;\n return data;\n }, {});\n }\n function ease(percent, easing) {\n return easing >= 0 ? Math.pow(percent, easing + 1) : 1 - Math.pow(1 - percent, 1 - easing);\n }\n\n var parallax = {\n mixins: [Parallax],\n props: {\n target: String,\n viewport: Number,\n // Deprecated\n easing: Number,\n start: String,\n end: String\n },\n data: {\n target: false,\n viewport: 1,\n easing: 1,\n start: 0,\n end: 0\n },\n computed: {\n target: ({ target }, $el) => getOffsetElement(target && query(target, $el) || $el),\n start({ start }) {\n return toPx(start, \"height\", this.target, true);\n },\n end({ end, viewport: viewport2 }) {\n return toPx(\n end || (viewport2 = (1 - viewport2) * 100) && `${viewport2}vh+${viewport2}%`,\n \"height\",\n this.target,\n true\n );\n }\n },\n observe: [\n viewport(),\n scroll$1({ target: ({ target }) => target }),\n resize({ target: ({ $el, target }) => [$el, target, scrollParent(target, true)] })\n ],\n update: {\n read({ percent }, types) {\n if (!types.has(\"scroll\")) {\n percent = false;\n }\n if (!isVisible(this.$el)) {\n return false;\n }\n if (!this.matchMedia) {\n return;\n }\n const prev = percent;\n percent = ease(scrolledOver(this.target, this.start, this.end), this.easing);\n return {\n percent,\n style: prev === percent ? false : this.getCss(percent)\n };\n },\n write({ style }) {\n if (!this.matchMedia) {\n this.reset();\n return;\n }\n style && css(this.$el, style);\n },\n events: [\"scroll\", \"resize\"]\n }\n };\n function getOffsetElement(el) {\n return el ? \"offsetTop\" in el ? el : getOffsetElement(parent(el)) : document.documentElement;\n }\n\n var SliderParallax = {\n props: {\n parallax: Boolean,\n parallaxTarget: Boolean,\n parallaxStart: String,\n parallaxEnd: String,\n parallaxEasing: Number\n },\n data: {\n parallax: false,\n parallaxTarget: false,\n parallaxStart: 0,\n parallaxEnd: 0,\n parallaxEasing: 0\n },\n observe: [\n resize({\n target: ({ $el, parallaxTarget }) => [$el, parallaxTarget],\n filter: ({ parallax }) => parallax\n }),\n scroll$1({ filter: ({ parallax }) => parallax })\n ],\n computed: {\n parallaxTarget({ parallaxTarget }, $el) {\n return parallaxTarget && query(parallaxTarget, $el) || this.list;\n }\n },\n update: {\n read() {\n if (!this.parallax) {\n return false;\n }\n const target = this.parallaxTarget;\n if (!target) {\n return false;\n }\n const start = toPx(this.parallaxStart, \"height\", target, true);\n const end = toPx(this.parallaxEnd, \"height\", target, true);\n const percent = ease(scrolledOver(target, start, end), this.parallaxEasing);\n return { parallax: this.getIndexAt(percent) };\n },\n write({ parallax }) {\n const [prevIndex, slidePercent] = parallax;\n const nextIndex = this.getValidIndex(prevIndex + Math.ceil(slidePercent));\n const prev = this.slides[prevIndex];\n const next = this.slides[nextIndex];\n const { triggerShow, triggerShown, triggerHide, triggerHidden } = useTriggers(this);\n if (~this.prevIndex) {\n for (const i of /* @__PURE__ */ new Set([this.index, this.prevIndex])) {\n if (!includes([nextIndex, prevIndex], i)) {\n triggerHide(this.slides[i]);\n triggerHidden(this.slides[i]);\n }\n }\n }\n const changed = this.prevIndex !== prevIndex || this.index !== nextIndex;\n this.dir = 1;\n this.prevIndex = prevIndex;\n this.index = nextIndex;\n if (prev !== next) {\n triggerHide(prev);\n }\n triggerShow(next);\n if (changed) {\n triggerShown(prev);\n }\n this._translate(prev === next ? 1 : slidePercent, prev, next);\n },\n events: [\"scroll\", \"resize\"]\n },\n methods: {\n getIndexAt(percent) {\n const index = percent * (this.length - 1);\n return [Math.floor(index), index % 1];\n }\n }\n };\n function useTriggers(cmp) {\n const { clsSlideActive, clsEnter, clsLeave } = cmp;\n return { triggerShow, triggerShown, triggerHide, triggerHidden };\n function triggerShow(el) {\n if (hasClass(el, clsLeave)) {\n triggerHide(el);\n triggerHidden(el);\n }\n if (!hasClass(el, clsSlideActive)) {\n trigger(el, \"beforeitemshow\", [cmp]);\n trigger(el, \"itemshow\", [cmp]);\n }\n }\n function triggerShown(el) {\n if (hasClass(el, clsEnter)) {\n trigger(el, \"itemshown\", [cmp]);\n }\n }\n function triggerHide(el) {\n if (!hasClass(el, clsSlideActive)) {\n triggerShow(el);\n }\n if (hasClass(el, clsEnter)) {\n triggerShown(el);\n }\n if (!hasClass(el, clsLeave)) {\n trigger(el, \"beforeitemhide\", [cmp]);\n trigger(el, \"itemhide\", [cmp]);\n }\n }\n function triggerHidden(el) {\n if (hasClass(el, clsLeave)) {\n trigger(el, \"itemhidden\", [cmp]);\n }\n }\n }\n\n var SliderReactive = {\n update: {\n write() {\n if (this.stack.length || this.dragging || this.parallax) {\n return;\n }\n const index = this.getValidIndex();\n if (!~this.prevIndex || this.index !== index) {\n this.show(index);\n } else {\n this._translate(1);\n }\n },\n events: [\"resize\"]\n }\n };\n\n var SliderPreload = {\n observe: lazyload({\n target: ({ slides }) => slides,\n targets: (instance) => instance.getAdjacentSlides()\n }),\n methods: {\n getAdjacentSlides() {\n return [1, -1].map((i) => this.slides[this.getIndex(this.index + i)]);\n }\n }\n };\n\n function Transitioner(prev, next, dir, { center, easing, list }) {\n const from = prev ? getLeft(prev, list, center) : getLeft(next, list, center) + dimensions$1(next).width * dir;\n const to = next ? getLeft(next, list, center) : from + dimensions$1(prev).width * dir * (isRtl ? -1 : 1);\n const { promise, resolve } = withResolvers();\n return {\n dir,\n show(duration, percent = 0, linear) {\n const timing = linear ? \"linear\" : easing;\n duration -= Math.round(duration * clamp(percent, -1, 1));\n css(list, \"transitionProperty\", \"none\");\n this.translate(percent);\n css(list, \"transitionProperty\", \"\");\n percent = prev ? percent : clamp(percent, 0, 1);\n triggerUpdate(this.getItemIn(), \"itemin\", { percent, duration, timing, dir });\n prev && triggerUpdate(this.getItemIn(true), \"itemout\", {\n percent: 1 - percent,\n duration,\n timing,\n dir\n });\n Transition.start(\n list,\n { transform: translate(-to * (isRtl ? -1 : 1), \"px\") },\n duration,\n timing\n ).then(resolve, noop);\n return promise;\n },\n cancel() {\n return Transition.cancel(list);\n },\n reset() {\n css(list, \"transform\", \"\");\n },\n async forward(duration, percent = this.percent()) {\n await this.cancel();\n return this.show(duration, percent, true);\n },\n translate(percent) {\n if (percent === this.percent()) {\n return;\n }\n const distance = this.getDistance() * dir * (isRtl ? -1 : 1);\n css(\n list,\n \"transform\",\n translate(\n clamp(\n -to + (distance - distance * percent),\n -getWidth(list),\n dimensions$1(list).width\n ) * (isRtl ? -1 : 1),\n \"px\"\n )\n );\n const actives = this.getActives();\n const itemIn = this.getItemIn();\n const itemOut = this.getItemIn(true);\n percent = prev ? clamp(percent, -1, 1) : 0;\n for (const slide of children(list)) {\n const isActive = includes(actives, slide);\n const isIn = slide === itemIn;\n const isOut = slide === itemOut;\n const translateIn = isIn || !isOut && (isActive || dir * (isRtl ? -1 : 1) === -1 ^ getElLeft(slide, list) > getElLeft(prev || next));\n triggerUpdate(slide, `itemtranslate${translateIn ? \"in\" : \"out\"}`, {\n dir,\n percent: isOut ? 1 - percent : isIn ? percent : isActive ? 1 : 0\n });\n }\n },\n percent() {\n return Math.abs(\n (new DOMMatrix(css(list, \"transform\")).m41 * (isRtl ? -1 : 1) + from) / (to - from)\n );\n },\n getDistance() {\n return Math.abs(to - from);\n },\n getItemIn(out = false) {\n let actives = this.getActives();\n let nextActives = inView(list, getLeft(next || prev, list, center));\n if (out) {\n const temp = actives;\n actives = nextActives;\n nextActives = temp;\n }\n return nextActives[findIndex(nextActives, (el) => !includes(actives, el))];\n },\n getActives() {\n return inView(list, getLeft(prev || next, list, center));\n }\n };\n }\n function getLeft(el, list, center) {\n const left = getElLeft(el, list);\n return center ? left - centerEl(el, list) : Math.min(left, getMax(list));\n }\n function getMax(list) {\n return Math.max(0, getWidth(list) - dimensions$1(list).width);\n }\n function getWidth(list, index) {\n return sumBy(children(list).slice(0, index), (el) => dimensions$1(el).width);\n }\n function centerEl(el, list) {\n return dimensions$1(list).width / 2 - dimensions$1(el).width / 2;\n }\n function getElLeft(el, list) {\n return el && (position(el).left + (isRtl ? dimensions$1(el).width - dimensions$1(list).width : 0)) * (isRtl ? -1 : 1) || 0;\n }\n function inView(list, listLeft) {\n listLeft -= 1;\n const listWidth = dimensions$1(list).width;\n const listRight = listLeft + listWidth + 2;\n return children(list).filter((slide) => {\n const slideLeft = getElLeft(slide, list);\n const slideRight = slideLeft + Math.min(dimensions$1(slide).width, listWidth);\n return slideLeft >= listLeft && slideRight <= listRight;\n });\n }\n\n var slider = {\n mixins: [Class, Slider, SliderReactive, SliderParallax, SliderPreload],\n props: {\n center: Boolean,\n sets: Boolean,\n active: String\n },\n data: {\n center: false,\n sets: false,\n attrItem: \"uk-slider-item\",\n selList: \".uk-slider-items\",\n selNav: \".uk-slider-nav\",\n clsContainer: \"uk-slider-container\",\n active: \"all\",\n Transitioner\n },\n computed: {\n finite({ finite }) {\n return finite || isFinite(this.list, this.center);\n },\n maxIndex() {\n if (!this.finite || this.center && !this.sets) {\n return this.length - 1;\n }\n if (this.center) {\n return last(this.sets);\n }\n let lft = 0;\n const max = getMax(this.list);\n const index = findIndex(this.slides, (el) => {\n if (lft >= max - 5e-3) {\n return true;\n }\n lft += dimensions$1(el).width;\n });\n return ~index ? index : this.length - 1;\n },\n sets({ sets: enabled }) {\n if (!enabled || this.parallax) {\n return;\n }\n let left = 0;\n const sets = [];\n const width = dimensions$1(this.list).width;\n for (let i = 0; i < this.length; i++) {\n const slideWidth = dimensions$1(this.slides[i]).width;\n if (left + slideWidth > width) {\n left = 0;\n }\n if (this.center) {\n if (left < width / 2 && left + slideWidth + dimensions$1(this.slides[getIndex(i + 1, this.slides)]).width / 2 > width / 2) {\n sets.push(i);\n left = width / 2 - slideWidth / 2;\n }\n } else if (left === 0) {\n sets.push(Math.min(i, this.maxIndex));\n }\n left += slideWidth;\n }\n if (sets.length) {\n return sets;\n }\n },\n transitionOptions() {\n return {\n center: this.center,\n list: this.list\n };\n },\n slides() {\n return children(this.list).filter(isVisible);\n }\n },\n connected() {\n toggleClass(this.$el, this.clsContainer, !$(`.${this.clsContainer}`, this.$el));\n },\n observe: resize({\n target: ({ slides, $el }) => [$el, ...slides]\n }),\n update: {\n write() {\n for (const el of this.navItems) {\n const index = toNumber(data(el, this.attrItem));\n if (index !== false) {\n el.hidden = !this.maxIndex || index > this.maxIndex || this.sets && !includes(this.sets, index);\n }\n }\n this.reorder();\n if (!this.parallax) {\n this._translate(1);\n }\n this.updateActiveClasses();\n },\n events: [\"resize\"]\n },\n events: {\n beforeitemshow(e) {\n if (!this.dragging && this.sets && this.stack.length < 2 && !includes(this.sets, this.index)) {\n this.index = this.getValidIndex();\n }\n const diff = Math.abs(\n this.index - this.prevIndex + (this.dir > 0 && this.index < this.prevIndex || this.dir < 0 && this.index > this.prevIndex ? (this.maxIndex + 1) * this.dir : 0)\n );\n if (!this.dragging && diff > 1) {\n for (let i = 0; i < diff; i++) {\n this.stack.splice(1, 0, this.dir > 0 ? \"next\" : \"previous\");\n }\n e.preventDefault();\n return;\n }\n const index = this.dir < 0 || !this.slides[this.prevIndex] ? this.index : this.prevIndex;\n const avgWidth = getWidth(this.list) / this.length;\n this.duration = speedUp(avgWidth / this.velocity) * (dimensions$1(this.slides[index]).width / avgWidth);\n this.reorder();\n },\n itemshow() {\n if (~this.prevIndex) {\n addClass(this._getTransitioner().getItemIn(), this.clsActive);\n }\n this.updateActiveClasses(this.prevIndex);\n },\n itemshown() {\n this.updateActiveClasses();\n }\n },\n methods: {\n reorder() {\n if (this.finite) {\n css(this.slides, \"order\", \"\");\n return;\n }\n const index = this.dir > 0 && this.slides[this.prevIndex] ? this.prevIndex : this.index;\n this.slides.forEach(\n (slide, i) => css(\n slide,\n \"order\",\n this.dir > 0 && i < index ? 1 : this.dir < 0 && i >= this.index ? -1 : \"\"\n )\n );\n if (!this.center || !this.length) {\n return;\n }\n const next = this.slides[index];\n let width = dimensions$1(this.list).width / 2 - dimensions$1(next).width / 2;\n let j = 0;\n while (width > 0) {\n const slideIndex = this.getIndex(--j + index, index);\n const slide = this.slides[slideIndex];\n css(slide, \"order\", slideIndex > index ? -2 : -1);\n width -= dimensions$1(slide).width;\n }\n },\n updateActiveClasses(currentIndex = this.index) {\n let actives = this._getTransitioner(currentIndex).getActives();\n if (this.active !== \"all\") {\n actives = [this.slides[this.getValidIndex(currentIndex)]];\n }\n const activeClasses = [\n this.clsActive,\n !this.sets || includes(this.sets, toFloat(this.index)) ? this.clsActivated : \"\"\n ];\n for (const slide of this.slides) {\n const active = includes(actives, slide);\n toggleClass(slide, activeClasses, active);\n attr(slide, \"aria-hidden\", !active);\n for (const focusable of $$(selFocusable, slide)) {\n if (!hasOwn(focusable, \"_tabindex\")) {\n focusable._tabindex = attr(focusable, \"tabindex\");\n }\n attr(focusable, \"tabindex\", active ? focusable._tabindex : -1);\n }\n }\n },\n getValidIndex(index = this.index, prevIndex = this.prevIndex) {\n index = this.getIndex(index, prevIndex);\n if (!this.sets) {\n return index;\n }\n let prev;\n do {\n if (includes(this.sets, index)) {\n return index;\n }\n prev = index;\n index = this.getIndex(index + this.dir, prevIndex);\n } while (index !== prev);\n return index;\n },\n getAdjacentSlides() {\n const { width } = dimensions$1(this.list);\n const left = -width;\n const right = width * 2;\n const slideWidth = dimensions$1(this.slides[this.index]).width;\n const slideLeft = this.center ? width / 2 - slideWidth / 2 : 0;\n const slides = /* @__PURE__ */ new Set();\n for (const i of [-1, 1]) {\n let currentLeft = slideLeft + (i > 0 ? slideWidth : 0);\n let j = 0;\n do {\n const slide = this.slides[this.getIndex(this.index + i + j++ * i)];\n currentLeft += dimensions$1(slide).width * i;\n slides.add(slide);\n } while (this.length > j && currentLeft > left && currentLeft < right);\n }\n return Array.from(slides);\n },\n getIndexAt(percent) {\n let index = -1;\n const scrollDist = this.center ? getWidth(this.list) - (dimensions$1(this.slides[0]).width / 2 + dimensions$1(last(this.slides)).width / 2) : getWidth(this.list, this.maxIndex);\n let dist = percent * scrollDist;\n let slidePercent = 0;\n do {\n const slideWidth = dimensions$1(this.slides[++index]).width;\n const slideDist = this.center ? slideWidth / 2 + dimensions$1(this.slides[index + 1]).width / 2 : slideWidth;\n slidePercent = dist / slideDist % 1;\n dist -= slideDist;\n } while (dist >= 0 && index < this.maxIndex);\n return [index, slidePercent];\n }\n }\n };\n function isFinite(list, center) {\n if (!list || list.length < 2) {\n return true;\n }\n const { width: listWidth } = dimensions$1(list);\n if (!center) {\n return Math.ceil(getWidth(list)) < Math.trunc(listWidth + getMaxElWidth(list));\n }\n const slides = children(list);\n const listHalf = Math.trunc(listWidth / 2);\n for (const index in slides) {\n const slide = slides[index];\n const slideWidth = dimensions$1(slide).width;\n const slidesInView = /* @__PURE__ */ new Set([slide]);\n let diff = 0;\n for (const i of [-1, 1]) {\n let left = slideWidth / 2;\n let j = 0;\n while (left < listHalf) {\n const nextSlide = slides[getIndex(+index + i + j++ * i, slides)];\n if (slidesInView.has(nextSlide)) {\n return true;\n }\n left += dimensions$1(nextSlide).width;\n slidesInView.add(nextSlide);\n }\n diff = Math.max(\n diff,\n slideWidth / 2 + dimensions$1(slides[getIndex(+index + i, slides)]).width / 2 - (left - listHalf)\n );\n }\n if (Math.trunc(diff) > sumBy(\n slides.filter((slide2) => !slidesInView.has(slide2)),\n (slide2) => dimensions$1(slide2).width\n )) {\n return true;\n }\n }\n return false;\n }\n function getMaxElWidth(list) {\n return Math.max(0, ...children(list).map((el) => dimensions$1(el).width));\n }\n\n var sliderParallax = {\n mixins: [Parallax],\n beforeConnect() {\n this.item = this.$el.closest(`.${this.$options.id.replace(\"parallax\", \"items\")} > *`);\n },\n disconnected() {\n this.item = null;\n },\n events: [\n {\n name: \"itemin itemout\",\n self: true,\n el: ({ item }) => item,\n handler({ type, detail: { percent, duration, timing, dir } }) {\n fastdom.read(() => {\n if (!this.matchMedia) {\n return;\n }\n const propsFrom = this.getCss(getCurrentPercent(type, dir, percent));\n const propsTo = this.getCss(isIn(type) ? 0.5 : dir > 0 ? 1 : 0);\n fastdom.write(() => {\n css(this.$el, propsFrom);\n Transition.start(this.$el, propsTo, duration, timing).catch(noop);\n });\n });\n }\n },\n {\n name: \"transitioncanceled transitionend\",\n self: true,\n el: ({ item }) => item,\n handler() {\n Transition.cancel(this.$el);\n }\n },\n {\n name: \"itemtranslatein itemtranslateout\",\n self: true,\n el: ({ item }) => item,\n handler({ type, detail: { percent, dir } }) {\n fastdom.read(() => {\n if (!this.matchMedia) {\n this.reset();\n return;\n }\n const props = this.getCss(getCurrentPercent(type, dir, percent));\n fastdom.write(() => css(this.$el, props));\n });\n }\n }\n ]\n };\n function isIn(type) {\n return endsWith(type, \"in\");\n }\n function getCurrentPercent(type, dir, percent) {\n percent /= 2;\n return isIn(type) ^ dir < 0 ? percent : 1 - percent;\n }\n\n var Animations = {\n ...Animations$2,\n fade: {\n show() {\n return [{ opacity: 0, zIndex: 0 }, { zIndex: -1 }];\n },\n percent(current) {\n return 1 - css(current, \"opacity\");\n },\n translate(percent) {\n return [{ opacity: 1 - percent, zIndex: 0 }, { zIndex: -1 }];\n }\n },\n scale: {\n show() {\n return [{ opacity: 0, transform: scale3d(1 + 0.5), zIndex: 0 }, { zIndex: -1 }];\n },\n percent(current) {\n return 1 - css(current, \"opacity\");\n },\n translate(percent) {\n return [\n { opacity: 1 - percent, transform: scale3d(1 + 0.5 * percent), zIndex: 0 },\n { zIndex: -1 }\n ];\n }\n },\n pull: {\n show(dir) {\n return dir < 0 ? [\n { transform: translate(30), zIndex: -1 },\n { transform: translate(), zIndex: 0 }\n ] : [\n { transform: translate(-100), zIndex: 0 },\n { transform: translate(), zIndex: -1 }\n ];\n },\n percent(current, next, dir) {\n return dir < 0 ? 1 - translated(next) : translated(current);\n },\n translate(percent, dir) {\n return dir < 0 ? [\n { transform: translate(30 * percent), zIndex: -1 },\n { transform: translate(-100 * (1 - percent)), zIndex: 0 }\n ] : [\n { transform: translate(-percent * 100), zIndex: 0 },\n { transform: translate(30 * (1 - percent)), zIndex: -1 }\n ];\n }\n },\n push: {\n show(dir) {\n return dir < 0 ? [\n { transform: translate(100), zIndex: 0 },\n { transform: translate(), zIndex: -1 }\n ] : [\n { transform: translate(-30), zIndex: -1 },\n { transform: translate(), zIndex: 0 }\n ];\n },\n percent(current, next, dir) {\n return dir > 0 ? 1 - translated(next) : translated(current);\n },\n translate(percent, dir) {\n return dir < 0 ? [\n { transform: translate(percent * 100), zIndex: 0 },\n { transform: translate(-30 * (1 - percent)), zIndex: -1 }\n ] : [\n { transform: translate(-30 * percent), zIndex: -1 },\n { transform: translate(100 * (1 - percent)), zIndex: 0 }\n ];\n }\n }\n };\n\n var slideshow = {\n mixins: [Class, Slideshow, SliderReactive, SliderParallax, SliderPreload],\n props: {\n ratio: String,\n minHeight: String,\n maxHeight: String\n },\n data: {\n ratio: \"16:9\",\n minHeight: void 0,\n maxHeight: void 0,\n selList: \".uk-slideshow-items\",\n attrItem: \"uk-slideshow-item\",\n selNav: \".uk-slideshow-nav\",\n Animations\n },\n watch: {\n list(list) {\n css(list, {\n aspectRatio: this.ratio ? this.ratio.replace(\":\", \"/\") : void 0,\n minHeight: this.minHeight,\n maxHeight: this.maxHeight,\n minWidth: \"100%\",\n maxWidth: \"100%\"\n });\n }\n },\n methods: {\n getAdjacentSlides() {\n return [1, -1].map((i) => this.slides[this.getIndex(this.index + i)]);\n }\n }\n };\n\n var sortable = {\n mixins: [Class, Animate],\n props: {\n group: String,\n threshold: Number,\n clsItem: String,\n clsPlaceholder: String,\n clsDrag: String,\n clsDragState: String,\n clsBase: String,\n clsNoDrag: String,\n clsEmpty: String,\n clsCustom: String,\n handle: String\n },\n data: {\n group: false,\n threshold: 5,\n clsItem: \"uk-sortable-item\",\n clsPlaceholder: \"uk-sortable-placeholder\",\n clsDrag: \"uk-sortable-drag\",\n clsDragState: \"uk-drag\",\n clsBase: \"uk-sortable\",\n clsNoDrag: \"uk-sortable-nodrag\",\n clsEmpty: \"uk-sortable-empty\",\n clsCustom: \"\",\n handle: false,\n pos: {}\n },\n events: {\n name: pointerDown$1,\n passive: false,\n handler: \"init\"\n },\n computed: {\n target: (_, $el) => ($el.tBodies || [$el])[0],\n items() {\n return children(this.target);\n },\n isEmpty() {\n return !this.items.length;\n },\n handles({ handle }, $el) {\n return handle ? $$(handle, $el) : this.items;\n }\n },\n watch: {\n isEmpty(empty) {\n toggleClass(this.target, this.clsEmpty, empty);\n },\n handles(handles, prev) {\n css(prev, { touchAction: \"\", userSelect: \"\" });\n css(handles, { touchAction: \"none\", userSelect: \"none\" });\n }\n },\n update: {\n write(data) {\n if (!this.drag || !parent(this.placeholder)) {\n return;\n }\n const {\n pos: { x, y },\n origin: { offsetTop, offsetLeft },\n placeholder\n } = this;\n css(this.drag, {\n top: y - offsetTop,\n left: x - offsetLeft\n });\n const sortable = this.getSortable(document.elementFromPoint(x, y));\n if (!sortable) {\n return;\n }\n const { items } = sortable;\n if (items.some(Transition.inProgress)) {\n return;\n }\n const target = findTarget(items, { x, y });\n if (items.length && (!target || target === placeholder)) {\n return;\n }\n const previous = this.getSortable(placeholder);\n const insertTarget = findInsertTarget(\n sortable.target,\n target,\n placeholder,\n x,\n y,\n sortable === previous && data.moved !== target\n );\n if (insertTarget === false) {\n return;\n }\n if (insertTarget && placeholder === insertTarget) {\n return;\n }\n if (sortable !== previous) {\n previous.remove(placeholder);\n data.moved = target;\n } else {\n delete data.moved;\n }\n sortable.insert(placeholder, insertTarget);\n this.touched.add(sortable);\n },\n events: [\"move\"]\n },\n methods: {\n init(e) {\n const { target, button, defaultPrevented } = e;\n const [placeholder] = this.items.filter((el) => el.contains(target));\n if (!placeholder || defaultPrevented || button > 0 || isInput(target) || target.closest(`.${this.clsNoDrag}`) || this.handle && !target.closest(this.handle)) {\n return;\n }\n e.preventDefault();\n this.pos = getEventPos(e);\n this.touched = /* @__PURE__ */ new Set([this]);\n this.placeholder = placeholder;\n this.origin = { target, index: index(placeholder), ...this.pos };\n on(document, pointerMove$1, this.move);\n on(document, pointerUp$1, this.end);\n if (!this.threshold) {\n this.start(e);\n }\n },\n start(e) {\n this.drag = appendDrag(this.$container, this.placeholder);\n const { left, top } = dimensions$1(this.placeholder);\n assign(this.origin, { offsetLeft: this.pos.x - left, offsetTop: this.pos.y - top });\n addClass(this.drag, this.clsDrag, this.clsCustom);\n addClass(this.placeholder, this.clsPlaceholder);\n addClass(this.items, this.clsItem);\n addClass(document.documentElement, this.clsDragState);\n trigger(this.$el, \"start\", [this, this.placeholder]);\n trackScroll(this.pos);\n this.move(e);\n },\n move: throttle(function(e) {\n assign(this.pos, getEventPos(e));\n if (!this.drag && (Math.abs(this.pos.x - this.origin.x) > this.threshold || Math.abs(this.pos.y - this.origin.y) > this.threshold)) {\n this.start(e);\n }\n this.$emit(\"move\");\n }),\n end() {\n off(document, pointerMove$1, this.move);\n off(document, pointerUp$1, this.end);\n if (!this.drag) {\n return;\n }\n untrackScroll();\n const sortable = this.getSortable(this.placeholder);\n if (this === sortable) {\n if (this.origin.index !== index(this.placeholder)) {\n trigger(this.$el, \"moved\", [this, this.placeholder]);\n }\n } else {\n trigger(sortable.$el, \"added\", [sortable, this.placeholder]);\n trigger(this.$el, \"removed\", [this, this.placeholder]);\n }\n trigger(this.$el, \"stop\", [this, this.placeholder]);\n remove$1(this.drag);\n this.drag = null;\n for (const { clsPlaceholder, clsItem } of this.touched) {\n for (const sortable2 of this.touched) {\n removeClass(sortable2.items, clsPlaceholder, clsItem);\n }\n }\n this.touched = null;\n removeClass(document.documentElement, this.clsDragState);\n },\n insert(element, target) {\n addClass(this.items, this.clsItem);\n if (target && target.previousElementSibling !== element) {\n this.animate(() => before(target, element));\n } else if (!target && this.target.lastElementChild !== element) {\n this.animate(() => append(this.target, element));\n }\n },\n remove(element) {\n if (this.target.contains(element)) {\n this.animate(() => remove$1(element));\n }\n },\n getSortable(element) {\n do {\n const sortable = this.$getComponent(element, \"sortable\");\n if (sortable && (sortable === this || this.group !== false && sortable.group === this.group)) {\n return sortable;\n }\n } while (element = parent(element));\n }\n }\n };\n let trackTimer;\n function trackScroll(pos) {\n let last = Date.now();\n trackTimer = setInterval(() => {\n let { x, y } = pos;\n y += document.scrollingElement.scrollTop;\n const dist = (Date.now() - last) * 0.3;\n last = Date.now();\n scrollParents(document.elementFromPoint(x, pos.y)).reverse().some((scrollEl) => {\n let { scrollTop: scroll, scrollHeight } = scrollEl;\n const { top, bottom, height: height2 } = offsetViewport(scrollEl);\n if (top < y && top + 35 > y) {\n scroll -= dist;\n } else if (bottom > y && bottom - 35 < y) {\n scroll += dist;\n } else {\n return;\n }\n if (scroll > 0 && scroll < scrollHeight - height2) {\n scrollEl.scrollTop = scroll;\n return true;\n }\n });\n }, 15);\n }\n function untrackScroll() {\n clearInterval(trackTimer);\n }\n function appendDrag(container, element) {\n let clone;\n if (isTag(element, \"li\", \"tr\")) {\n clone = $(\"
    \");\n append(clone, element.cloneNode(true).children);\n for (const attribute of element.getAttributeNames()) {\n attr(clone, attribute, element.getAttribute(attribute));\n }\n } else {\n clone = element.cloneNode(true);\n }\n append(container, clone);\n css(clone, \"margin\", \"0\", \"important\");\n css(clone, {\n boxSizing: \"border-box\",\n width: element.offsetWidth,\n height: element.offsetHeight,\n padding: css(element, \"padding\")\n });\n height(clone.firstElementChild, height(element.firstElementChild));\n return clone;\n }\n function findTarget(items, point) {\n return items[findIndex(items, (item) => pointInRect(point, dimensions$1(item)))];\n }\n function findInsertTarget(list, target, placeholder, x, y, sameList) {\n if (!children(list).length) {\n return;\n }\n const rect = dimensions$1(target);\n if (!sameList) {\n if (!isHorizontal(list, placeholder)) {\n return y < rect.top + rect.height / 2 ? target : target.nextElementSibling;\n }\n return target;\n }\n const placeholderRect = dimensions$1(placeholder);\n const sameRow = linesIntersect(\n [rect.top, rect.bottom],\n [placeholderRect.top, placeholderRect.bottom]\n );\n const [pointerPos, lengthProp, startProp, endProp] = sameRow ? [x, \"width\", \"left\", \"right\"] : [y, \"height\", \"top\", \"bottom\"];\n const diff = placeholderRect[lengthProp] < rect[lengthProp] ? rect[lengthProp] - placeholderRect[lengthProp] : 0;\n if (placeholderRect[startProp] < rect[startProp]) {\n if (diff && pointerPos < rect[startProp] + diff) {\n return false;\n }\n return target.nextElementSibling;\n }\n if (diff && pointerPos > rect[endProp] - diff) {\n return false;\n }\n return target;\n }\n function isHorizontal(list, placeholder) {\n const single = children(list).length === 1;\n if (single) {\n append(list, placeholder);\n }\n const items = children(list);\n const isHorizontal2 = items.some((el, i) => {\n const rectA = dimensions$1(el);\n return items.slice(i + 1).some((el2) => {\n const rectB = dimensions$1(el2);\n return !linesIntersect([rectA.left, rectA.right], [rectB.left, rectB.right]);\n });\n });\n if (single) {\n remove$1(placeholder);\n }\n return isHorizontal2;\n }\n function linesIntersect(lineA, lineB) {\n return lineA[1] > lineB[0] && lineB[1] > lineA[0];\n }\n function throttle(fn) {\n let throttled;\n return function(...args) {\n if (!throttled) {\n throttled = true;\n fn.call(this, ...args);\n requestAnimationFrame(() => throttled = false);\n }\n };\n }\n\n var Position = {\n props: {\n pos: String,\n offset: Boolean,\n flip: Boolean,\n shift: Boolean,\n inset: Boolean\n },\n data: {\n pos: `bottom-${isRtl ? \"right\" : \"left\"}`,\n offset: false,\n flip: true,\n shift: true,\n inset: false\n },\n connected() {\n this.pos = this.$props.pos.split(\"-\").concat(\"center\").slice(0, 2);\n [this.dir, this.align] = this.pos;\n this.axis = includes([\"top\", \"bottom\"], this.dir) ? \"y\" : \"x\";\n },\n methods: {\n positionAt(element, target, boundary) {\n let offset = [this.getPositionOffset(element), this.getShiftOffset(element)];\n const placement = [this.flip && \"flip\", this.shift && \"shift\"];\n const attach = {\n element: [this.inset ? this.dir : flipPosition(this.dir), this.align],\n target: [this.dir, this.align]\n };\n if (this.axis === \"y\") {\n for (const prop in attach) {\n attach[prop].reverse();\n }\n offset.reverse();\n placement.reverse();\n }\n const restoreScrollPosition = storeScrollPosition(element);\n const elDim = dimensions$1(element);\n css(element, { top: -elDim.height, left: -elDim.width });\n positionAt(element, target, {\n attach,\n offset,\n boundary,\n placement,\n viewportOffset: this.getViewportOffset(element)\n });\n restoreScrollPosition();\n },\n getPositionOffset(element = this.$el) {\n return toPx(\n this.offset === false ? css(element, \"--uk-position-offset\") : this.offset,\n this.axis === \"x\" ? \"width\" : \"height\",\n element\n ) * (includes([\"left\", \"top\"], this.dir) ? -1 : 1) * (this.inset ? -1 : 1);\n },\n getShiftOffset(element = this.$el) {\n return this.align === \"center\" ? 0 : toPx(\n css(element, \"--uk-position-shift-offset\"),\n this.axis === \"y\" ? \"width\" : \"height\",\n element\n ) * (includes([\"left\", \"top\"], this.align) ? 1 : -1);\n },\n getViewportOffset(element) {\n return toPx(css(element, \"--uk-position-viewport-offset\"));\n }\n }\n };\n function storeScrollPosition(element) {\n const scrollElement = scrollParent(element);\n const { scrollTop } = scrollElement;\n return () => {\n if (scrollTop !== scrollElement.scrollTop) {\n scrollElement.scrollTop = scrollTop;\n }\n };\n }\n\n var tooltip = {\n mixins: [Container, Togglable, Position],\n data: {\n pos: \"top\",\n animation: [\"uk-animation-scale-up\"],\n duration: 100,\n cls: \"uk-active\"\n },\n connected() {\n makeFocusable(this.$el);\n },\n disconnected() {\n this.hide();\n },\n methods: {\n show() {\n if (this.isToggled(this.tooltip || null)) {\n return;\n }\n const { delay = 0, title } = parseProps(this.$options);\n if (!title) {\n return;\n }\n const titleAttr = attr(this.$el, \"title\");\n const off = on(this.$el, [\"blur\", pointerLeave], (e) => !isTouch(e) && this.hide());\n this.reset = () => {\n attr(this.$el, { title: titleAttr, \"aria-describedby\": null });\n off();\n };\n const id = generateId(this);\n attr(this.$el, { title: null, \"aria-describedby\": id });\n clearTimeout(this.showTimer);\n this.showTimer = setTimeout(() => this._show(title, id), delay);\n },\n async hide() {\n var _a;\n if (matches(this.$el, \"input:focus\")) {\n return;\n }\n clearTimeout(this.showTimer);\n if (this.isToggled(this.tooltip || null)) {\n await this.toggleElement(this.tooltip, false, false);\n }\n (_a = this.reset) == null ? void 0 : _a.call(this);\n remove$1(this.tooltip);\n this.tooltip = null;\n },\n async _show(title, id) {\n this.tooltip = append(\n this.container,\n `
    ${title}
    `\n );\n on(this.tooltip, \"toggled\", (e, toggled) => {\n if (!toggled) {\n return;\n }\n const update = () => this.positionAt(this.tooltip, this.$el);\n update();\n const [dir, align] = getAlignment(this.tooltip, this.$el, this.pos);\n this.origin = this.axis === \"y\" ? `${flipPosition(dir)}-${align}` : `${align}-${flipPosition(dir)}`;\n const handlers = [\n once(\n document,\n `keydown ${pointerDown$1}`,\n this.hide,\n false,\n (e2) => e2.type === pointerDown$1 && !this.$el.contains(e2.target) || e2.type === \"keydown\" && e2.keyCode === keyMap.ESC\n ),\n on([document, ...overflowParents(this.$el)], \"scroll\", update, {\n passive: true\n })\n ];\n once(this.tooltip, \"hide\", () => handlers.forEach((handler) => handler()), {\n self: true\n });\n });\n if (!await this.toggleElement(this.tooltip, true)) {\n this.hide();\n }\n }\n },\n events: {\n // Clicking a button does not give it focus on all browsers and platforms\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#clicking_and_focus\n [`focus ${pointerEnter} ${pointerDown$1}`](e) {\n if (!isTouch(e) || e.type === pointerDown$1) {\n this.show();\n }\n }\n }\n };\n function makeFocusable(el) {\n if (!isFocusable(el)) {\n attr(el, \"tabindex\", \"0\");\n }\n }\n function getAlignment(el, target, [dir, align]) {\n const elOffset = offset(el);\n const targetOffset = offset(target);\n const properties = [\n [\"left\", \"right\"],\n [\"top\", \"bottom\"]\n ];\n for (const props2 of properties) {\n if (elOffset[props2[0]] >= targetOffset[props2[1]]) {\n dir = props2[1];\n break;\n }\n if (elOffset[props2[1]] <= targetOffset[props2[0]]) {\n dir = props2[0];\n break;\n }\n }\n const props = includes(properties[0], dir) ? properties[1] : properties[0];\n align = props.find((prop) => elOffset[prop] === targetOffset[prop]) || \"center\";\n return [dir, align];\n }\n function parseProps(options) {\n const { el, id, data: data$1 } = options;\n return [\"delay\", \"title\"].reduce((obj, key) => ({ [key]: data(el, key), ...obj }), {\n ...parseOptions(data(el, id), [\"title\"]),\n ...data$1\n });\n }\n\n var upload = {\n mixins: [I18n],\n i18n: {\n invalidMime: \"Invalid File Type: %s\",\n invalidName: \"Invalid File Name: %s\",\n invalidSize: \"Invalid File Size: %s Kilobytes Max\"\n },\n props: {\n allow: String,\n clsDragover: String,\n concurrent: Number,\n maxSize: Number,\n method: String,\n mime: String,\n multiple: Boolean,\n name: String,\n params: Object,\n type: String,\n url: String\n },\n data: {\n allow: false,\n clsDragover: \"uk-dragover\",\n concurrent: 1,\n maxSize: 0,\n method: \"POST\",\n mime: false,\n multiple: false,\n name: \"files[]\",\n params: {},\n type: \"\",\n url: \"\",\n abort: noop,\n beforeAll: noop,\n beforeSend: noop,\n complete: noop,\n completeAll: noop,\n error: noop,\n fail: noop,\n load: noop,\n loadEnd: noop,\n loadStart: noop,\n progress: noop\n },\n events: {\n change(e) {\n if (!matches(e.target, 'input[type=\"file\"]')) {\n return;\n }\n e.preventDefault();\n if (e.target.files) {\n this.upload(e.target.files);\n }\n e.target.value = \"\";\n },\n drop(e) {\n stop(e);\n const transfer = e.dataTransfer;\n if (!(transfer == null ? void 0 : transfer.files)) {\n return;\n }\n removeClass(this.$el, this.clsDragover);\n this.upload(transfer.files);\n },\n dragenter(e) {\n stop(e);\n },\n dragover(e) {\n stop(e);\n addClass(this.$el, this.clsDragover);\n },\n dragleave(e) {\n stop(e);\n removeClass(this.$el, this.clsDragover);\n }\n },\n methods: {\n async upload(files) {\n files = toArray(files);\n if (!files.length) {\n return;\n }\n trigger(this.$el, \"upload\", [files]);\n for (const file of files) {\n if (this.maxSize && this.maxSize * 1e3 < file.size) {\n this.fail(this.t(\"invalidSize\", this.maxSize));\n return;\n }\n if (this.allow && !match$1(this.allow, file.name)) {\n this.fail(this.t(\"invalidName\", this.allow));\n return;\n }\n if (this.mime && !match$1(this.mime, file.type)) {\n this.fail(this.t(\"invalidMime\", this.mime));\n return;\n }\n }\n if (!this.multiple) {\n files = files.slice(0, 1);\n }\n this.beforeAll(this, files);\n const chunks = chunk(files, this.concurrent);\n const upload = async (files2) => {\n const data = new FormData();\n files2.forEach((file) => data.append(this.name, file));\n for (const key in this.params) {\n data.append(key, this.params[key]);\n }\n try {\n const xhr = await ajax(this.url, {\n data,\n method: this.method,\n responseType: this.type,\n beforeSend: (env) => {\n const { xhr: xhr2 } = env;\n on(xhr2.upload, \"progress\", this.progress);\n for (const type of [\"loadStart\", \"load\", \"loadEnd\", \"abort\"]) {\n on(xhr2, type.toLowerCase(), this[type]);\n }\n return this.beforeSend(env);\n }\n });\n this.complete(xhr);\n if (chunks.length) {\n await upload(chunks.shift());\n } else {\n this.completeAll(xhr);\n }\n } catch (e) {\n this.error(e);\n }\n };\n await upload(chunks.shift());\n }\n }\n };\n function match$1(pattern, path) {\n return path.match(\n new RegExp(\n `^${pattern.replace(/\\//g, \"\\\\/\").replace(/\\*\\*/g, \"(\\\\/[^\\\\/]+)*\").replace(/\\*/g, \"[^\\\\/]+\").replace(/((?!\\\\))\\?/g, \"$1.\")}$`,\n \"i\"\n )\n );\n }\n function chunk(files, size) {\n const chunks = [];\n for (let i = 0; i < files.length; i += size) {\n chunks.push(files.slice(i, i + size));\n }\n return chunks;\n }\n function stop(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n async function ajax(url, options) {\n const env = {\n data: null,\n method: \"GET\",\n headers: {},\n xhr: new XMLHttpRequest(),\n beforeSend: noop,\n responseType: \"\",\n ...options\n };\n await env.beforeSend(env);\n return send(url, env);\n }\n function send(url, env) {\n return new Promise((resolve, reject) => {\n const { xhr } = env;\n for (const prop in env) {\n if (prop in xhr) {\n try {\n xhr[prop] = env[prop];\n } catch (e) {\n }\n }\n }\n xhr.open(env.method.toUpperCase(), url);\n for (const header in env.headers) {\n xhr.setRequestHeader(header, env.headers[header]);\n }\n on(xhr, \"load\", () => {\n if (xhr.status === 0 || xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {\n resolve(xhr);\n } else {\n reject(\n assign(Error(xhr.statusText), {\n xhr,\n status: xhr.status\n })\n );\n }\n });\n on(xhr, \"error\", () => reject(assign(Error(\"Network Error\"), { xhr })));\n on(xhr, \"timeout\", () => reject(assign(Error(\"Network Timeout\"), { xhr })));\n xhr.send(env.data);\n });\n }\n\n var components$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Countdown: countdown,\n Filter: filter,\n Lightbox: lightbox,\n LightboxPanel: LightboxPanel,\n Notification: notification,\n Parallax: parallax,\n Slider: slider,\n SliderParallax: sliderParallax,\n Slideshow: slideshow,\n SlideshowParallax: sliderParallax,\n Sortable: sortable,\n Tooltip: tooltip,\n Upload: upload\n });\n\n function boot(App) {\n if (inBrowser && window.MutationObserver) {\n if (document.body) {\n requestAnimationFrame(() => init(App));\n } else {\n new MutationObserver((records, observer) => {\n if (document.body) {\n init(App);\n observer.disconnect();\n }\n }).observe(document.documentElement, { childList: true });\n }\n }\n }\n function init(App) {\n trigger(document, \"uikit:init\", App);\n if (document.body) {\n apply(document.body, connect);\n }\n new MutationObserver((records) => records.forEach(applyChildListMutation)).observe(document, {\n subtree: true,\n childList: true\n });\n new MutationObserver((records) => records.forEach(applyAttributeMutation)).observe(document, {\n subtree: true,\n attributes: true\n });\n App._initialized = true;\n }\n function applyChildListMutation({ addedNodes, removedNodes }) {\n for (const node of addedNodes) {\n apply(node, connect);\n }\n for (const node of removedNodes) {\n apply(node, disconnect);\n }\n }\n function applyAttributeMutation({ target, attributeName }) {\n var _a;\n const name = getComponentName(attributeName);\n if (name) {\n if (hasAttr(target, attributeName)) {\n createComponent(name, target);\n } else {\n (_a = getComponent(target, name)) == null ? void 0 : _a.$destroy();\n }\n }\n }\n function connect(node) {\n const components2 = getComponents(node);\n for (const name in components2) {\n callConnected(components2[name]);\n }\n for (const attributeName of node.getAttributeNames()) {\n const name = getComponentName(attributeName);\n name && createComponent(name, node);\n }\n }\n function disconnect(node) {\n const components2 = getComponents(node);\n for (const name in components2) {\n callDisconnected(components2[name]);\n }\n }\n function getComponentName(attribute) {\n if (startsWith(attribute, \"data-\")) {\n attribute = attribute.slice(5);\n }\n const cmp = components$2[attribute];\n return cmp && (cmp.options || cmp).name;\n }\n\n globalApi(App);\n instanceApi(App);\n\n var Accordion = {\n mixins: [Class, Togglable],\n props: {\n animation: Boolean,\n targets: String,\n active: null,\n collapsible: Boolean,\n multiple: Boolean,\n toggle: String,\n content: String,\n offset: Number\n },\n data: {\n targets: \"> *\",\n active: false,\n animation: true,\n collapsible: true,\n multiple: false,\n clsOpen: \"uk-open\",\n toggle: \"> .uk-accordion-title\",\n content: \"> .uk-accordion-content\",\n offset: 0\n },\n computed: {\n items: ({ targets }, $el) => $$(targets, $el),\n toggles({ toggle }) {\n return this.items.map((item) => $(toggle, item));\n },\n contents({ content }) {\n return this.items.map((item) => {\n var _a;\n return ((_a = item._wrapper) == null ? void 0 : _a.firstElementChild) || $(content, item);\n });\n }\n },\n watch: {\n items(items, prev) {\n if (prev || hasClass(items, this.clsOpen)) {\n return;\n }\n const active = this.active !== false && items[Number(this.active)] || !this.collapsible && items[0];\n if (active) {\n this.toggle(active, false);\n }\n },\n toggles() {\n this.$emit();\n },\n contents(items) {\n for (const el of items) {\n const isOpen = hasClass(\n this.items.find((item) => item.contains(el)),\n this.clsOpen\n );\n hide(el, !isOpen);\n }\n this.$emit();\n }\n },\n observe: lazyload(),\n events: [\n {\n name: \"click keydown\",\n delegate: ({ targets, $props }) => `${targets} ${$props.toggle}`,\n async handler(e) {\n var _a;\n if (e.type === \"keydown\" && e.keyCode !== keyMap.SPACE) {\n return;\n }\n e.preventDefault();\n (_a = this._off) == null ? void 0 : _a.call(this);\n this._off = keepScrollPosition(e.target);\n await this.toggle(index(this.toggles, e.current));\n this._off();\n }\n },\n {\n name: \"shown hidden\",\n self: true,\n delegate: ({ targets }) => targets,\n handler() {\n this.$emit();\n }\n }\n ],\n update() {\n const activeItems = filter$1(this.items, `.${this.clsOpen}`);\n for (const index2 in this.items) {\n const toggle = this.toggles[index2];\n const content = this.contents[index2];\n if (!toggle || !content) {\n continue;\n }\n toggle.id = generateId(this, toggle);\n content.id = generateId(this, content);\n const active = includes(activeItems, this.items[index2]);\n attr(toggle, {\n role: isTag(toggle, \"a\") ? \"button\" : null,\n \"aria-controls\": content.id,\n \"aria-expanded\": active,\n \"aria-disabled\": !this.collapsible && activeItems.length < 2 && active\n });\n attr(content, { role: \"region\", \"aria-labelledby\": toggle.id });\n if (isTag(content, \"ul\")) {\n attr(children(content), \"role\", \"presentation\");\n }\n }\n },\n methods: {\n toggle(item, animate) {\n item = this.items[getIndex(item, this.items)];\n let items = [item];\n const activeItems = filter$1(this.items, `.${this.clsOpen}`);\n if (!this.multiple && !includes(activeItems, items[0])) {\n items = items.concat(activeItems);\n }\n if (!this.collapsible && activeItems.length < 2 && includes(activeItems, item)) {\n return;\n }\n return Promise.all(\n items.map(\n (el) => this.toggleElement(el, !includes(activeItems, el), (el2, show) => {\n toggleClass(el2, this.clsOpen, show);\n if (animate === false || !this.animation) {\n hide($(this.content, el2), !show);\n return;\n }\n return transition(el2, show, this);\n })\n )\n );\n }\n }\n };\n function hide(el, hide2) {\n el && (el.hidden = hide2);\n }\n async function transition(el, show, { content, duration, velocity, transition: transition2 }) {\n var _a;\n content = ((_a = el._wrapper) == null ? void 0 : _a.firstElementChild) || $(content, el);\n if (!el._wrapper) {\n el._wrapper = wrapAll(content, \"
    \");\n }\n const wrapper = el._wrapper;\n css(wrapper, \"overflow\", \"hidden\");\n const currentHeight = toFloat(css(wrapper, \"height\"));\n await Transition.cancel(wrapper);\n hide(content, false);\n const endHeight = sumBy([\"marginTop\", \"marginBottom\"], (prop) => css(content, prop)) + dimensions$1(content).height;\n const percent = currentHeight / endHeight;\n duration = (velocity * endHeight + duration) * (show ? 1 - percent : percent);\n css(wrapper, \"height\", currentHeight);\n await Transition.start(wrapper, { height: show ? endHeight : 0 }, duration, transition2);\n unwrap(content);\n delete el._wrapper;\n if (!show) {\n hide(content, true);\n }\n }\n function keepScrollPosition(el) {\n const scrollElement = scrollParent(el, true);\n let frame;\n (function scroll() {\n frame = requestAnimationFrame(() => {\n const { top } = dimensions$1(el);\n if (top < 0) {\n scrollElement.scrollTop += top;\n }\n scroll();\n });\n })();\n return () => requestAnimationFrame(() => cancelAnimationFrame(frame));\n }\n\n var alert = {\n mixins: [Class, Togglable],\n args: \"animation\",\n props: {\n animation: Boolean,\n close: String\n },\n data: {\n animation: true,\n selClose: \".uk-alert-close\",\n duration: 150\n },\n events: {\n name: \"click\",\n delegate: ({ selClose }) => selClose,\n handler(e) {\n e.preventDefault();\n this.close();\n }\n },\n methods: {\n async close() {\n await this.toggleElement(this.$el, false, animate);\n this.$destroy(true);\n }\n }\n };\n function animate(el, show, { duration, transition, velocity }) {\n const height = toFloat(css(el, \"height\"));\n css(el, \"height\", height);\n return Transition.start(\n el,\n {\n height: 0,\n marginTop: 0,\n marginBottom: 0,\n paddingTop: 0,\n paddingBottom: 0,\n borderTop: 0,\n borderBottom: 0,\n opacity: 0\n },\n velocity * height + duration,\n transition\n );\n }\n\n var Video = {\n args: \"autoplay\",\n props: {\n automute: Boolean,\n autoplay: Boolean\n },\n data: {\n automute: false,\n autoplay: true\n },\n beforeConnect() {\n if (this.autoplay === \"inview\" && !hasAttr(this.$el, \"preload\")) {\n this.$el.preload = \"none\";\n }\n if (isTag(this.$el, \"iframe\") && !hasAttr(this.$el, \"allow\")) {\n this.$el.allow = \"autoplay\";\n }\n if (this.autoplay === \"hover\") {\n if (isTag(this.$el, \"video\")) {\n this.$el.tabindex = 0;\n } else {\n this.autoplay = true;\n }\n }\n if (this.automute) {\n mute(this.$el);\n }\n },\n events: [\n {\n name: `${pointerEnter} focusin`,\n filter: ({ autoplay }) => includes(autoplay, \"hover\"),\n handler(e) {\n if (!isTouch(e) || !isPlaying(this.$el)) {\n play(this.$el);\n } else {\n pause(this.$el);\n }\n }\n },\n {\n name: `${pointerLeave} focusout`,\n filter: ({ autoplay }) => includes(autoplay, \"hover\"),\n handler(e) {\n if (!isTouch(e)) {\n pause(this.$el);\n }\n }\n }\n ],\n observe: [\n intersection({\n filter: ({ $el, autoplay }) => autoplay !== \"hover\" && isVideo($el),\n handler([{ isIntersecting }]) {\n if (!document.fullscreenElement) {\n if (isIntersecting) {\n if (this.autoplay) {\n play(this.$el);\n }\n } else {\n pause(this.$el);\n }\n }\n },\n args: { intersecting: false },\n options: ({ $el, autoplay }) => ({ root: autoplay === \"inview\" ? null : parent($el) })\n })\n ]\n };\n function isPlaying(videoEl) {\n return !videoEl.paused && !videoEl.ended;\n }\n\n var cover = {\n mixins: [Video],\n props: {\n width: Number,\n height: Number\n },\n data: {\n automute: true\n },\n created() {\n this.useObjectFit = isTag(this.$el, \"img\", \"video\");\n },\n observe: resize({\n target: ({ $el }) => getPositionedParent($el) || parent($el),\n filter: ({ useObjectFit }) => !useObjectFit\n }),\n update: {\n read() {\n if (this.useObjectFit) {\n return false;\n }\n const { ratio, cover } = Dimensions;\n const { $el, width, height } = this;\n let dim = { width, height };\n if (!width || !height) {\n const intrinsic = {\n width: $el.naturalWidth || $el.videoWidth || $el.clientWidth,\n height: $el.naturalHeight || $el.videoHeight || $el.clientHeight\n };\n if (width) {\n dim = ratio(intrinsic, \"width\", width);\n } else if (height) {\n dim = ratio(intrinsic, \"height\", height);\n } else {\n dim = intrinsic;\n }\n }\n const { offsetHeight: coverHeight, offsetWidth: coverWidth } = getPositionedParent($el) || parent($el);\n const coverDim = cover(dim, { width: coverWidth, height: coverHeight });\n if (!coverDim.width || !coverDim.height) {\n return false;\n }\n return coverDim;\n },\n write({ height, width }) {\n css(this.$el, { height, width });\n },\n events: [\"resize\"]\n }\n };\n function getPositionedParent(el) {\n while (el = parent(el)) {\n if (css(el, \"position\") !== \"static\") {\n return el;\n }\n }\n }\n\n let active;\n var drop = {\n mixins: [Container, Position, Togglable],\n args: \"pos\",\n props: {\n mode: \"list\",\n toggle: Boolean,\n boundary: Boolean,\n boundaryX: Boolean,\n boundaryY: Boolean,\n target: Boolean,\n targetX: Boolean,\n targetY: Boolean,\n stretch: Boolean,\n delayShow: Number,\n delayHide: Number,\n autoUpdate: Boolean,\n clsDrop: String,\n animateOut: Boolean,\n bgScroll: Boolean,\n closeOnScroll: Boolean\n },\n data: {\n mode: [\"click\", \"hover\"],\n toggle: \"- *\",\n boundary: false,\n boundaryX: false,\n boundaryY: false,\n target: false,\n targetX: false,\n targetY: false,\n stretch: false,\n delayShow: 0,\n delayHide: 800,\n autoUpdate: true,\n clsDrop: false,\n animateOut: false,\n bgScroll: true,\n animation: [\"uk-animation-fade\"],\n cls: \"uk-open\",\n container: false,\n closeOnScroll: false\n },\n computed: {\n boundary({ boundary, boundaryX, boundaryY }, $el) {\n return [\n query(boundaryX || boundary, $el) || window,\n query(boundaryY || boundary, $el) || window\n ];\n },\n target({ target, targetX, targetY }, $el) {\n targetX || (targetX = target || this.targetEl);\n targetY || (targetY = target || this.targetEl);\n return [\n targetX === true ? window : query(targetX, $el),\n targetY === true ? window : query(targetY, $el)\n ];\n }\n },\n created() {\n this.tracker = new MouseTracker();\n },\n beforeConnect() {\n this.clsDrop = this.$props.clsDrop || this.$options.id;\n },\n connected() {\n addClass(this.$el, \"uk-drop\", this.clsDrop);\n if (this.toggle && !this.targetEl) {\n this.targetEl = createToggleComponent(this);\n }\n this._style = pick(this.$el.style, [\"width\", \"height\"]);\n },\n disconnected() {\n if (this.isActive()) {\n this.hide(false);\n active = null;\n }\n css(this.$el, this._style);\n },\n events: [\n {\n name: \"click\",\n delegate: () => \".uk-drop-close\",\n handler(e) {\n e.preventDefault();\n this.hide(false);\n }\n },\n {\n name: \"click\",\n delegate: () => 'a[href*=\"#\"]',\n handler({ defaultPrevented, current }) {\n const { hash } = current;\n if (!defaultPrevented && hash && isSameSiteAnchor(current) && !this.$el.contains($(hash))) {\n this.hide(false);\n }\n }\n },\n {\n name: \"beforescroll\",\n handler() {\n this.hide(false);\n }\n },\n {\n name: \"toggle\",\n self: true,\n handler(e, toggle) {\n e.preventDefault();\n if (this.isToggled()) {\n this.hide(false);\n } else {\n this.show(toggle == null ? void 0 : toggle.$el, false);\n }\n }\n },\n {\n name: \"toggleshow\",\n self: true,\n handler(e, toggle) {\n e.preventDefault();\n this.show(toggle == null ? void 0 : toggle.$el);\n }\n },\n {\n name: \"togglehide\",\n self: true,\n handler(e) {\n e.preventDefault();\n if (!matches(this.$el, \":focus,:hover\")) {\n this.hide();\n }\n }\n },\n {\n name: `${pointerEnter} focusin`,\n filter: ({ mode }) => includes(mode, \"hover\"),\n handler(e) {\n if (!isTouch(e)) {\n this.clearTimers();\n }\n }\n },\n {\n name: `${pointerLeave} focusout`,\n filter: ({ mode }) => includes(mode, \"hover\"),\n handler(e) {\n if (!isTouch(e) && e.relatedTarget) {\n this.hide();\n }\n }\n },\n {\n name: \"toggled\",\n self: true,\n handler(e, toggled) {\n if (toggled) {\n this.clearTimers();\n this.position();\n }\n }\n },\n {\n name: \"show\",\n self: true,\n handler() {\n active = this;\n this.tracker.init();\n attr(this.targetEl, \"aria-expanded\", true);\n const handlers = [\n listenForResize(this),\n listenForEscClose(this),\n listenForBackgroundClose(this),\n this.autoUpdate && listenForScroll(this),\n this.closeOnScroll && listenForScrollClose(this)\n ];\n once(this.$el, \"hide\", () => handlers.forEach((handler) => handler && handler()), {\n self: true\n });\n if (!this.bgScroll) {\n once(this.$el, \"hidden\", preventBackgroundScroll(this.$el), { self: true });\n }\n }\n },\n {\n name: \"beforehide\",\n self: true,\n handler: \"clearTimers\"\n },\n {\n name: \"hide\",\n handler({ target }) {\n if (this.$el !== target) {\n active = active === null && this.$el.contains(target) && this.isToggled() ? this : active;\n return;\n }\n active = this.isActive() ? null : active;\n this.tracker.cancel();\n attr(this.targetEl, \"aria-expanded\", null);\n }\n }\n ],\n update: {\n write() {\n if (this.isToggled() && !hasClass(this.$el, this.clsEnter)) {\n this.position();\n }\n }\n },\n methods: {\n show(target = this.targetEl, delay = true) {\n if (this.isToggled() && target && this.targetEl && target !== this.targetEl) {\n this.hide(false, false);\n }\n this.targetEl = target;\n this.clearTimers();\n if (this.isActive()) {\n return;\n }\n if (active) {\n if (delay && active.isDelaying()) {\n this.showTimer = setTimeout(() => matches(target, \":hover\") && this.show(), 10);\n return;\n }\n let prev;\n while (active && prev !== active && !active.$el.contains(this.$el)) {\n prev = active;\n active.hide(false, false);\n }\n }\n if (this.container && parent(this.$el) !== this.container) {\n append(this.container, this.$el);\n }\n this.showTimer = setTimeout(\n () => this.toggleElement(this.$el, true),\n delay && this.delayShow || 0\n );\n },\n hide(delay = true, animate = true) {\n const hide = () => this.toggleElement(this.$el, false, this.animateOut && animate);\n this.clearTimers();\n this.isDelayedHide = delay;\n if (delay && this.isDelaying()) {\n this.hideTimer = setTimeout(this.hide, 50);\n } else if (delay && this.delayHide) {\n this.hideTimer = setTimeout(hide, this.delayHide);\n } else {\n hide();\n }\n },\n clearTimers() {\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n this.showTimer = null;\n this.hideTimer = null;\n },\n isActive() {\n return active === this;\n },\n isDelaying() {\n return [this.$el, ...$$(\".uk-drop\", this.$el)].some((el) => this.tracker.movesTo(el));\n },\n position() {\n const restoreScrollPosition = storeScrollPosition(this.$el);\n removeClass(this.$el, \"uk-drop-stack\");\n css(this.$el, this._style);\n this.$el.hidden = true;\n const viewports = this.target.map((target) => getViewport$1(this.$el, target));\n const viewportOffset = this.getViewportOffset(this.$el);\n const dirs = [\n [0, [\"x\", \"width\", \"left\", \"right\"]],\n [1, [\"y\", \"height\", \"top\", \"bottom\"]]\n ];\n for (const [i, [axis, prop]] of dirs) {\n if (this.axis !== axis && includes([axis, true], this.stretch)) {\n css(this.$el, {\n [prop]: Math.min(\n offset(this.boundary[i])[prop],\n viewports[i][prop] - 2 * viewportOffset\n ),\n [`overflow-${axis}`]: \"auto\"\n });\n }\n }\n const maxWidth = viewports[0].width - 2 * viewportOffset;\n this.$el.hidden = false;\n css(this.$el, \"maxWidth\", \"\");\n if (this.$el.offsetWidth > maxWidth) {\n addClass(this.$el, \"uk-drop-stack\");\n }\n css(this.$el, \"maxWidth\", maxWidth);\n this.positionAt(this.$el, this.target, this.boundary);\n for (const [i, [axis, prop, start, end]] of dirs) {\n if (this.axis === axis && includes([axis, true], this.stretch)) {\n const positionOffset = Math.abs(this.getPositionOffset());\n const targetOffset = offset(this.target[i]);\n const elOffset = offset(this.$el);\n css(this.$el, {\n [prop]: (targetOffset[start] > elOffset[start] ? targetOffset[this.inset ? end : start] - Math.max(\n offset(this.boundary[i])[start],\n viewports[i][start] + viewportOffset\n ) : Math.min(\n offset(this.boundary[i])[end],\n viewports[i][end] - viewportOffset\n ) - targetOffset[this.inset ? start : end]) - positionOffset,\n [`overflow-${axis}`]: \"auto\"\n });\n this.positionAt(this.$el, this.target, this.boundary);\n }\n }\n restoreScrollPosition();\n }\n }\n };\n function getViewport$1(el, target) {\n return offsetViewport(overflowParents(target).find((parent2) => parent2.contains(el)));\n }\n function createToggleComponent(drop) {\n const { $el } = drop.$create(\"toggle\", query(drop.toggle, drop.$el), {\n target: drop.$el,\n mode: drop.mode\n });\n attr($el, \"aria-haspopup\", true);\n return $el;\n }\n function listenForResize(drop) {\n const update = () => drop.$emit();\n const off = [\n observeViewportResize(update),\n observeResize(overflowParents(drop.$el).concat(drop.target), update)\n ];\n return () => off.map((observer) => observer.disconnect());\n }\n function listenForScroll(drop, fn = () => drop.$emit()) {\n return on([document, ...overflowParents(drop.$el)], \"scroll\", fn, {\n passive: true\n });\n }\n function listenForEscClose(drop) {\n return on(document, \"keydown\", (e) => {\n if (e.keyCode === keyMap.ESC) {\n drop.hide(false);\n }\n });\n }\n function listenForScrollClose(drop) {\n return listenForScroll(drop, () => drop.hide(false));\n }\n function listenForBackgroundClose(drop) {\n return on(document, pointerDown$1, ({ target }) => {\n if (drop.$el.contains(target)) {\n return;\n }\n once(\n document,\n `${pointerUp$1} ${pointerCancel} scroll`,\n ({ defaultPrevented, type, target: newTarget }) => {\n var _a;\n if (!defaultPrevented && type === pointerUp$1 && target === newTarget && !((_a = drop.targetEl) == null ? void 0 : _a.contains(target))) {\n drop.hide(false);\n }\n },\n true\n );\n });\n }\n\n var Dropnav = {\n mixins: [Class, Container],\n props: {\n align: String,\n clsDrop: String,\n boundary: Boolean,\n dropbar: Boolean,\n dropbarAnchor: Boolean,\n duration: Number,\n mode: Boolean,\n offset: Boolean,\n stretch: Boolean,\n delayShow: Boolean,\n delayHide: Boolean,\n target: Boolean,\n targetX: Boolean,\n targetY: Boolean,\n animation: Boolean,\n animateOut: Boolean,\n closeOnScroll: Boolean\n },\n data: {\n align: isRtl ? \"right\" : \"left\",\n clsDrop: \"uk-dropdown\",\n clsDropbar: \"uk-dropnav-dropbar\",\n boundary: true,\n dropbar: false,\n dropbarAnchor: false,\n duration: 200,\n container: false,\n selNavItem: \"> li > a, > ul > li > a\"\n },\n computed: {\n dropbarAnchor: ({ dropbarAnchor }, $el) => query(dropbarAnchor, $el) || $el,\n dropbar({ dropbar }) {\n if (!dropbar) {\n return null;\n }\n dropbar = this._dropbar || query(dropbar, this.$el) || $(`+ .${this.clsDropbar}`, this.$el);\n return dropbar ? dropbar : this._dropbar = $(\"
    \");\n },\n dropContainer(_, $el) {\n return this.container || $el;\n },\n dropdowns({ clsDrop }, $el) {\n var _a;\n const dropdowns = $$(`.${clsDrop}`, $el);\n if (this.dropContainer !== $el) {\n for (const el of $$(`.${clsDrop}`, this.dropContainer)) {\n const target = (_a = this.getDropdown(el)) == null ? void 0 : _a.targetEl;\n if (!includes(dropdowns, el) && target && this.$el.contains(target)) {\n dropdowns.push(el);\n }\n }\n }\n return dropdowns;\n },\n items({ selNavItem }, $el) {\n return $$(selNavItem, $el);\n }\n },\n watch: {\n dropbar(dropbar) {\n addClass(\n dropbar,\n \"uk-dropbar\",\n \"uk-dropbar-top\",\n this.clsDropbar,\n `uk-${this.$options.name}-dropbar`\n );\n },\n dropdowns() {\n this.initializeDropdowns();\n }\n },\n connected() {\n this.initializeDropdowns();\n },\n disconnected() {\n remove$1(this._dropbar);\n delete this._dropbar;\n },\n events: [\n {\n name: \"mouseover focusin\",\n delegate: ({ selNavItem }) => selNavItem,\n handler({ current }) {\n const active2 = this.getActive();\n if (active2 && includes(active2.mode, \"hover\") && active2.targetEl && !current.contains(active2.targetEl) && !active2.isDelaying()) {\n active2.hide(false);\n }\n }\n },\n {\n name: \"keydown\",\n self: true,\n delegate: ({ selNavItem }) => selNavItem,\n handler(e) {\n var _a;\n const { current, keyCode } = e;\n const active2 = this.getActive();\n if (keyCode === keyMap.DOWN && (active2 == null ? void 0 : active2.targetEl) === current) {\n e.preventDefault();\n (_a = $(selFocusable, active2.$el)) == null ? void 0 : _a.focus();\n }\n handleNavItemNavigation(e, this.items, active2);\n }\n },\n {\n name: \"keydown\",\n el: ({ dropContainer }) => dropContainer,\n delegate: ({ clsDrop }) => `.${clsDrop}`,\n handler(e) {\n var _a;\n const { current, keyCode, target } = e;\n if (isInput(target) || !includes(this.dropdowns, current)) {\n return;\n }\n const active2 = this.getActive();\n let next = -1;\n if (keyCode === keyMap.HOME) {\n next = 0;\n } else if (keyCode === keyMap.END) {\n next = \"last\";\n } else if (keyCode === keyMap.UP) {\n next = \"previous\";\n } else if (keyCode === keyMap.DOWN) {\n next = \"next\";\n } else if (keyCode === keyMap.ESC) {\n (_a = active2.targetEl) == null ? void 0 : _a.focus();\n }\n if (~next) {\n e.preventDefault();\n const elements = $$(selFocusable, current);\n elements[getIndex(\n next,\n elements,\n findIndex(elements, (el) => matches(el, \":focus\"))\n )].focus();\n }\n handleNavItemNavigation(e, this.items, active2);\n }\n },\n {\n name: \"mouseleave\",\n el: ({ dropbar }) => dropbar,\n filter: ({ dropbar }) => dropbar,\n handler() {\n const active2 = this.getActive();\n if (active2 && includes(active2.mode, \"hover\") && !this.dropdowns.some((el) => matches(el, \":hover\"))) {\n active2.hide();\n }\n }\n },\n {\n name: \"beforeshow\",\n el: ({ dropContainer }) => dropContainer,\n filter: ({ dropbar }) => dropbar,\n handler({ target }) {\n if (!this.isDropbarDrop(target)) {\n return;\n }\n if (this.dropbar.previousElementSibling !== this.dropbarAnchor) {\n after(this.dropbarAnchor, this.dropbar);\n }\n addClass(target, `${this.clsDrop}-dropbar`);\n }\n },\n {\n name: \"show\",\n el: ({ dropContainer }) => dropContainer,\n filter: ({ dropbar }) => dropbar,\n handler({ target }) {\n if (!this.isDropbarDrop(target)) {\n return;\n }\n const drop = this.getDropdown(target);\n const adjustHeight = () => {\n const maxBottom = Math.max(\n ...parents(target, `.${this.clsDrop}`).concat(target).map((el) => offset(el).bottom)\n );\n offset(this.dropbar, {\n left: offset(this.dropbar).left,\n top: this.getDropbarOffset(drop.getPositionOffset())\n });\n this.transitionTo(\n maxBottom - offset(this.dropbar).top + toFloat(css(target, \"marginBottom\")),\n target\n );\n };\n this._observer = observeResize([drop.$el, ...drop.target], adjustHeight);\n adjustHeight();\n }\n },\n {\n name: \"beforehide\",\n el: ({ dropContainer }) => dropContainer,\n filter: ({ dropbar }) => dropbar,\n handler(e) {\n const active2 = this.getActive();\n if (matches(this.dropbar, \":hover\") && active2.$el === e.target && this.isDropbarDrop(active2.$el) && includes(active2.mode, \"hover\") && active2.isDelayedHide && !this.items.some((el) => active2.targetEl !== el && matches(el, \":focus\"))) {\n e.preventDefault();\n }\n }\n },\n {\n name: \"hide\",\n el: ({ dropContainer }) => dropContainer,\n filter: ({ dropbar }) => dropbar,\n handler({ target }) {\n var _a;\n if (!this.isDropbarDrop(target)) {\n return;\n }\n (_a = this._observer) == null ? void 0 : _a.disconnect();\n const active2 = this.getActive();\n if (!active2 || active2.$el === target) {\n this.transitionTo(0);\n }\n }\n }\n ],\n methods: {\n getActive() {\n var _a;\n return includes(this.dropdowns, (_a = active) == null ? void 0 : _a.$el) && active;\n },\n async transitionTo(newHeight, el) {\n const { dropbar } = this;\n const oldHeight = height(dropbar);\n el = oldHeight < newHeight && el;\n await Transition.cancel([el, dropbar]);\n if (el) {\n const diff = offset(el).top - offset(dropbar).top - oldHeight;\n if (diff > 0) {\n css(el, \"transitionDelay\", `${diff / newHeight * this.duration}ms`);\n }\n }\n css(el, \"clipPath\", `polygon(0 0,100% 0,100% ${oldHeight}px,0 ${oldHeight}px)`);\n height(dropbar, oldHeight);\n await Promise.all([\n Transition.start(dropbar, { height: newHeight }, this.duration),\n Transition.start(\n el,\n { clipPath: `polygon(0 0,100% 0,100% ${newHeight}px,0 ${newHeight}px)` },\n this.duration\n ).finally(() => css(el, { clipPath: \"\", transitionDelay: \"\" }))\n ]).catch(noop);\n },\n getDropdown(el) {\n return this.$getComponent(el, \"drop\") || this.$getComponent(el, \"dropdown\");\n },\n isDropbarDrop(el) {\n return includes(this.dropdowns, el) && hasClass(el, this.clsDrop);\n },\n getDropbarOffset(offsetTop) {\n const { $el, target, targetY } = this;\n const { top, height: height2 } = offset(query(targetY || target || $el, $el));\n return top + height2 + offsetTop;\n },\n initializeDropdowns() {\n this.$create(\n \"drop\",\n this.dropdowns.filter((el) => !this.getDropdown(el)),\n {\n ...this.$props,\n flip: false,\n shift: true,\n pos: `bottom-${this.align}`,\n boundary: this.boundary === true ? this.$el : this.boundary\n }\n );\n }\n }\n };\n function handleNavItemNavigation(e, toggles, active2) {\n var _a, _b, _c;\n const { current, keyCode } = e;\n let next = -1;\n if (keyCode === keyMap.HOME) {\n next = 0;\n } else if (keyCode === keyMap.END) {\n next = \"last\";\n } else if (keyCode === keyMap.LEFT) {\n next = \"previous\";\n } else if (keyCode === keyMap.RIGHT) {\n next = \"next\";\n } else if (keyCode === keyMap.TAB) {\n (_a = active2.targetEl) == null ? void 0 : _a.focus();\n (_b = active2.hide) == null ? void 0 : _b.call(active2, false);\n }\n if (~next) {\n e.preventDefault();\n (_c = active2.hide) == null ? void 0 : _c.call(active2, false);\n toggles[getIndex(next, toggles, toggles.indexOf(active2.targetEl || current))].focus();\n }\n }\n\n var formCustom = {\n mixins: [Class],\n args: \"target\",\n props: {\n target: Boolean\n },\n data: {\n target: false\n },\n computed: {\n input: (_, $el) => $(selInput, $el),\n state() {\n return this.input.nextElementSibling;\n },\n target({ target }, $el) {\n return target && (target === true && parent(this.input) === $el && this.input.nextElementSibling || $(target, $el));\n }\n },\n update() {\n var _a;\n const { target, input } = this;\n if (!target) {\n return;\n }\n let option;\n const prop = isInput(target) ? \"value\" : \"textContent\";\n const prev = target[prop];\n const value = ((_a = input.files) == null ? void 0 : _a[0]) ? input.files[0].name : matches(input, \"select\") && (option = $$(\"option\", input).filter((el) => el.selected)[0]) ? option.textContent : input.value;\n if (prev !== value) {\n target[prop] = value;\n }\n },\n events: [\n {\n name: \"change\",\n handler() {\n this.$emit();\n }\n },\n {\n name: \"reset\",\n el: ({ $el }) => $el.closest(\"form\"),\n handler() {\n this.$emit();\n }\n }\n ]\n };\n\n var grid = {\n extends: Margin,\n mixins: [Class],\n name: \"grid\",\n props: {\n masonry: Boolean,\n parallax: String,\n parallaxStart: String,\n parallaxEnd: String,\n parallaxJustify: Boolean\n },\n data: {\n margin: \"uk-grid-margin\",\n clsStack: \"uk-grid-stack\",\n masonry: false,\n parallax: 0,\n parallaxStart: 0,\n parallaxEnd: 0,\n parallaxJustify: false\n },\n connected() {\n this.masonry && addClass(this.$el, \"uk-flex-top\", \"uk-flex-wrap-top\");\n },\n observe: scroll$1({ filter: ({ parallax, parallaxJustify }) => parallax || parallaxJustify }),\n update: [\n {\n write({ rows }) {\n toggleClass(this.$el, this.clsStack, !rows.some((row) => row.length > 1));\n },\n events: [\"resize\"]\n },\n {\n read(data) {\n const { rows } = data;\n let { masonry, parallax, parallaxJustify, margin } = this;\n parallax = Math.max(0, toPx(parallax));\n if (!(masonry || parallax || parallaxJustify) || positionedAbsolute(rows) || rows[0].some(\n (el, i) => rows.some((row) => row[i] && row[i].offsetWidth !== el.offsetWidth)\n )) {\n return data.translates = data.scrollColumns = false;\n }\n let gutter = getGutter(rows, margin);\n let columns;\n let translates;\n if (masonry) {\n [columns, translates] = applyMasonry(rows, gutter, masonry === \"next\");\n } else {\n columns = transpose(rows);\n }\n const columnHeights = columns.map(\n (column) => sumBy(column, \"offsetHeight\") + gutter * (column.length - 1)\n );\n const height = Math.max(0, ...columnHeights);\n let scrollColumns;\n let parallaxStart;\n let parallaxEnd;\n if (parallax || parallaxJustify) {\n scrollColumns = columnHeights.map(\n (hgt, i) => parallaxJustify ? height - hgt + parallax : parallax / (i % 2 || 8)\n );\n if (!parallaxJustify) {\n parallax = Math.max(\n ...columnHeights.map((hgt, i) => hgt + scrollColumns[i] - height)\n );\n }\n parallaxStart = toPx(this.parallaxStart, \"height\", this.$el, true);\n parallaxEnd = toPx(this.parallaxEnd, \"height\", this.$el, true);\n }\n return {\n columns,\n translates,\n scrollColumns,\n parallaxStart,\n parallaxEnd,\n padding: parallax,\n height: translates ? height : \"\"\n };\n },\n write({ height, padding }) {\n css(this.$el, \"paddingBottom\", padding || \"\");\n height !== false && css(this.$el, \"height\", height);\n },\n events: [\"resize\"]\n },\n {\n read({ rows, scrollColumns, parallaxStart, parallaxEnd }) {\n return {\n scrolled: scrollColumns && !positionedAbsolute(rows) ? scrolledOver(this.$el, parallaxStart, parallaxEnd) : false\n };\n },\n write({ columns, scrolled, scrollColumns, translates }) {\n if (!scrolled && !translates) {\n return;\n }\n columns.forEach(\n (column, i) => column.forEach((el, j) => {\n let [x, y] = translates && translates[i][j] || [0, 0];\n if (scrolled) {\n y += scrolled * scrollColumns[i];\n }\n css(el, \"transform\", `translate(${x}px, ${y}px)`);\n })\n );\n },\n events: [\"scroll\", \"resize\"]\n }\n ]\n };\n function positionedAbsolute(rows) {\n return rows.flat().some((el) => css(el, \"position\") === \"absolute\");\n }\n function applyMasonry(rows, gutter, next) {\n const columns = [];\n const translates = [];\n const columnHeights = Array(rows[0].length).fill(0);\n let rowHeights = 0;\n for (let row of rows) {\n if (isRtl) {\n row = row.reverse();\n }\n let height = 0;\n for (const j in row) {\n const { offsetWidth, offsetHeight } = row[j];\n const index = next ? j : columnHeights.indexOf(Math.min(...columnHeights));\n push(columns, index, row[j]);\n push(translates, index, [\n (index - j) * offsetWidth * (isRtl ? -1 : 1),\n columnHeights[index] - rowHeights\n ]);\n columnHeights[index] += offsetHeight + gutter;\n height = Math.max(height, offsetHeight);\n }\n rowHeights += height + gutter;\n }\n return [columns, translates];\n }\n function getGutter(rows, cls) {\n const node = rows.flat().find((el) => hasClass(el, cls));\n return toFloat(node ? css(node, \"marginTop\") : css(rows[0][0], \"paddingLeft\"));\n }\n function transpose(rows) {\n const columns = [];\n for (const row of rows) {\n for (const i in row) {\n push(columns, i, row[i]);\n }\n }\n return columns;\n }\n function push(array, index, value) {\n if (!array[index]) {\n array[index] = [];\n }\n array[index].push(value);\n }\n\n var heightMatch = {\n args: \"target\",\n props: {\n target: String,\n row: Boolean\n },\n data: {\n target: \"> *\",\n row: true\n },\n computed: {\n elements: ({ target }, $el) => $$(target, $el)\n },\n observe: resize({\n target: ({ $el, elements }) => elements.reduce((elements2, el) => elements2.concat(el, ...el.children), [$el])\n }),\n events: {\n // Hidden elements may change height when fonts load\n name: \"loadingdone\",\n el: () => document.fonts,\n handler() {\n this.$emit(\"resize\");\n }\n },\n update: {\n read() {\n return {\n rows: (this.row ? getRows(this.elements) : [this.elements]).map(match)\n };\n },\n write({ rows }) {\n for (const { heights, elements } of rows) {\n elements.forEach((el, i) => css(el, \"minHeight\", heights[i]));\n }\n },\n events: [\"resize\"]\n }\n };\n function match(elements) {\n if (elements.length < 2) {\n return { heights: [\"\"], elements };\n }\n let heights = elements.map(getHeight);\n const max = Math.max(...heights);\n return {\n heights: elements.map((el, i) => heights[i].toFixed(2) === max.toFixed(2) ? \"\" : max),\n elements\n };\n }\n function getHeight(element) {\n const style = pick(element.style, [\"display\", \"minHeight\"]);\n if (!isVisible(element)) {\n css(element, \"display\", \"block\", \"important\");\n }\n css(element, \"minHeight\", \"\");\n const height = dimensions$1(element).height - boxModelAdjust(element, \"height\", \"content-box\");\n css(element, style);\n return height;\n }\n\n var heightPlaceholder = {\n args: \"target\",\n props: {\n target: String\n },\n data: {\n target: \"\"\n },\n computed: {\n target: {\n get: ({ target }, $el) => query(target, $el),\n observe: ({ target }) => target\n }\n },\n observe: resize({ target: ({ target }) => target }),\n update: {\n read() {\n return this.target ? { height: this.target.offsetHeight } : false;\n },\n write({ height }) {\n css(this.$el, { minHeight: height });\n },\n events: [\"resize\"]\n }\n };\n\n var heightViewport = {\n props: {\n expand: Boolean,\n offsetTop: Boolean,\n offsetBottom: Boolean,\n minHeight: Number\n },\n data: {\n expand: false,\n offsetTop: false,\n offsetBottom: false,\n minHeight: 0\n },\n // check for offsetTop change\n observe: [\n viewport({ filter: ({ expand }) => expand }),\n resize({ target: ({ $el }) => scrollParents($el) })\n ],\n update: {\n read() {\n if (!isVisible(this.$el)) {\n return false;\n }\n let minHeight = \"\";\n const box = boxModelAdjust(this.$el, \"height\", \"content-box\");\n const { body, scrollingElement } = document;\n const scrollElement = scrollParent(this.$el);\n const { height: viewportHeight } = offsetViewport(\n scrollElement === body ? scrollingElement : scrollElement\n );\n const isScrollingElement = scrollingElement === scrollElement || body === scrollElement;\n minHeight = `calc(${isScrollingElement ? \"100vh\" : `${viewportHeight}px`}`;\n if (this.expand) {\n const diff = dimensions$1(scrollElement).height - dimensions$1(this.$el).height;\n minHeight += ` - ${diff}px`;\n } else {\n if (this.offsetTop) {\n if (isScrollingElement) {\n const offsetTopEl = this.offsetTop === true ? this.$el : query(this.offsetTop, this.$el);\n const { top } = offset(offsetTopEl);\n minHeight += top > 0 && top < viewportHeight / 2 ? ` - ${top}px` : \"\";\n } else {\n minHeight += ` - ${boxModelAdjust(scrollElement, \"height\", css(scrollElement, \"boxSizing\"))}px`;\n }\n }\n if (this.offsetBottom === true) {\n minHeight += ` - ${dimensions$1(this.$el.nextElementSibling).height}px`;\n } else if (isNumeric(this.offsetBottom)) {\n minHeight += ` - ${this.offsetBottom}vh`;\n } else if (this.offsetBottom && endsWith(this.offsetBottom, \"px\")) {\n minHeight += ` - ${toFloat(this.offsetBottom)}px`;\n } else if (isString(this.offsetBottom)) {\n minHeight += ` - ${dimensions$1(query(this.offsetBottom, this.$el)).height}px`;\n }\n }\n minHeight += `${box ? ` - ${box}px` : \"\"})`;\n return { minHeight };\n },\n write({ minHeight }) {\n css(this.$el, \"minHeight\", `max(${this.minHeight || 0}px, ${minHeight})`);\n },\n events: [\"resize\"]\n }\n };\n\n var closeIcon = \"\";\n\n var closeLarge = \"\";\n\n var dropParentIcon = \"\";\n\n var marker = \"\";\n\n var navParentIconLarge = \"\";\n\n var navParentIcon = \"\";\n\n var navbarParentIcon = \"\";\n\n var navbarToggleIcon = \"\";\n\n var overlayIcon = \"\";\n\n var paginationNext = \"\";\n\n var paginationPrevious = \"\";\n\n var searchIcon = \"\";\n\n var searchLarge = \"\";\n\n var searchMedium = \"\";\n\n var slidenavNextLarge = \"\";\n\n var slidenavNext = \"\";\n\n var slidenavPreviousLarge = \"\";\n\n var slidenavPrevious = \"\";\n\n var spinner = \"\";\n\n var totop = \"\";\n\n var Svg = {\n args: \"src\",\n props: {\n width: Number,\n height: Number,\n ratio: Number\n },\n data: {\n ratio: 1\n },\n connected() {\n this.svg = this.getSvg().then((el) => {\n if (!this._connected) {\n return;\n }\n const svg = insertSVG(el, this.$el);\n if (this.svgEl && svg !== this.svgEl) {\n remove$1(this.svgEl);\n }\n applyWidthAndHeight.call(this, svg, el);\n return this.svgEl = svg;\n }, noop);\n },\n disconnected() {\n this.svg.then((svg) => {\n if (this._connected) {\n return;\n }\n if (isVoidElement(this.$el)) {\n this.$el.hidden = false;\n }\n remove$1(svg);\n this.svgEl = null;\n });\n this.svg = null;\n },\n methods: {\n async getSvg() {\n }\n }\n };\n function insertSVG(el, root) {\n if (isVoidElement(root) || isTag(root, \"canvas\")) {\n root.hidden = true;\n const next = root.nextElementSibling;\n return equals(el, next) ? next : after(root, el);\n }\n const last = root.lastElementChild;\n return equals(el, last) ? last : append(root, el);\n }\n function equals(el, other) {\n return isTag(el, \"svg\") && isTag(other, \"svg\") && el.innerHTML === other.innerHTML;\n }\n function applyWidthAndHeight(el, ref) {\n const props = [\"width\", \"height\"];\n let dimensions = props.map((prop) => this[prop]);\n if (!dimensions.some((val) => val)) {\n dimensions = props.map((prop) => attr(ref, prop));\n }\n const viewBox = attr(ref, \"viewBox\");\n if (viewBox && !dimensions.some((val) => val)) {\n dimensions = viewBox.split(\" \").slice(2);\n }\n dimensions.forEach((val, i) => attr(el, props[i], toFloat(val) * this.ratio || null));\n }\n\n var svg = {\n mixins: [Svg],\n args: \"src\",\n props: {\n src: String,\n icon: String,\n attributes: \"list\",\n strokeAnimation: Boolean\n },\n data: {\n strokeAnimation: false\n },\n observe: [\n mutation({\n async handler() {\n const svg = await this.svg;\n if (svg) {\n applyAttributes.call(this, svg);\n }\n },\n options: {\n attributes: true,\n attributeFilter: [\"id\", \"class\", \"style\"]\n }\n })\n ],\n async connected() {\n if (includes(this.src, \"#\")) {\n [this.src, this.icon] = this.src.split(\"#\");\n }\n const svg = await this.svg;\n if (svg) {\n applyAttributes.call(this, svg);\n if (this.strokeAnimation) {\n applyAnimation(svg);\n }\n }\n },\n methods: {\n async getSvg() {\n if (isTag(this.$el, \"img\") && !this.$el.complete && this.$el.loading === \"lazy\") {\n await new Promise((resolve) => once(this.$el, \"load\", resolve));\n }\n return parseSVG(await loadSVG(this.src), this.icon) || Promise.reject(\"SVG not found.\");\n }\n }\n };\n function applyAttributes(el) {\n const { $el } = this;\n addClass(el, attr($el, \"class\"), \"uk-svg\");\n for (let i = 0; i < $el.style.length; i++) {\n const prop = $el.style[i];\n css(el, prop, css($el, prop));\n }\n for (const attribute in this.attributes) {\n const [prop, value] = this.attributes[attribute].split(\":\", 2);\n attr(el, prop, value);\n }\n if (!this.$el.id) {\n removeAttr(el, \"id\");\n }\n }\n const loadSVG = memoize(async (src) => {\n if (src) {\n if (startsWith(src, \"data:\")) {\n return decodeURIComponent(src.split(\",\")[1]);\n } else {\n return (await fetch(src)).text();\n }\n } else {\n return Promise.reject();\n }\n });\n function parseSVG(svg, icon) {\n if (icon && includes(svg, \"/g;\n const parseSymbols = memoize(function(svg) {\n const symbols = {};\n symbolRe.lastIndex = 0;\n let match;\n while (match = symbolRe.exec(svg)) {\n symbols[match[3]] = ``;\n }\n return symbols;\n });\n function applyAnimation(el) {\n const length = getMaxPathLength(el);\n if (length) {\n css(el, \"--uk-animation-stroke\", length);\n }\n }\n function stringToSvg(string) {\n const container = document.createElement(\"template\");\n container.innerHTML = string;\n return container.content.firstElementChild;\n }\n\n const icons = {\n spinner,\n totop,\n marker,\n \"close-icon\": closeIcon,\n \"close-large\": closeLarge,\n \"drop-parent-icon\": dropParentIcon,\n \"nav-parent-icon\": navParentIcon,\n \"nav-parent-icon-large\": navParentIconLarge,\n \"navbar-parent-icon\": navbarParentIcon,\n \"navbar-toggle-icon\": navbarToggleIcon,\n \"overlay-icon\": overlayIcon,\n \"pagination-next\": paginationNext,\n \"pagination-previous\": paginationPrevious,\n \"search-icon\": searchIcon,\n \"search-medium\": searchMedium,\n \"search-large\": searchLarge,\n \"search-toggle-icon\": searchIcon,\n \"slidenav-next\": slidenavNext,\n \"slidenav-next-large\": slidenavNextLarge,\n \"slidenav-previous\": slidenavPrevious,\n \"slidenav-previous-large\": slidenavPreviousLarge\n };\n const Icon = {\n install: install$1,\n mixins: [Svg],\n args: \"icon\",\n props: { icon: String },\n isIcon: true,\n beforeConnect() {\n addClass(this.$el, \"uk-icon\");\n },\n methods: {\n async getSvg() {\n const icon = getIcon(this.icon);\n if (!icon) {\n throw \"Icon not found.\";\n }\n return icon;\n }\n }\n };\n const IconComponent = {\n args: false,\n extends: Icon,\n data: (vm) => ({\n icon: hyphenate(vm.constructor.options.name)\n }),\n beforeConnect() {\n addClass(this.$el, this.$options.id);\n }\n };\n const NavParentIcon = {\n extends: IconComponent,\n beforeConnect() {\n const icon = this.$props.icon;\n this.icon = this.$el.closest(\".uk-nav-primary\") ? `${icon}-large` : icon;\n }\n };\n const Search = {\n extends: IconComponent,\n mixins: [I18n],\n i18n: { toggle: \"Open Search\", submit: \"Submit Search\" },\n beforeConnect() {\n const isToggle = hasClass(this.$el, \"uk-search-toggle\") || hasClass(this.$el, \"uk-navbar-toggle\");\n this.icon = isToggle ? \"search-toggle-icon\" : hasClass(this.$el, \"uk-search-icon\") && this.$el.closest(\".uk-search-large\") ? \"search-large\" : this.$el.closest(\".uk-search-medium\") ? \"search-medium\" : this.$props.icon;\n if (hasAttr(this.$el, \"aria-label\")) {\n return;\n }\n if (isToggle) {\n const label = this.t(\"toggle\");\n attr(this.$el, \"aria-label\", label);\n } else {\n const button = this.$el.closest(\"a,button\");\n if (button) {\n const label = this.t(\"submit\");\n attr(button, \"aria-label\", label);\n }\n }\n }\n };\n const Spinner = {\n extends: IconComponent,\n beforeConnect() {\n attr(this.$el, \"role\", \"status\");\n },\n methods: {\n async getSvg() {\n const icon = await Icon.methods.getSvg.call(this);\n if (this.ratio !== 1) {\n css($(\"circle\", icon), \"strokeWidth\", 1 / this.ratio);\n }\n return icon;\n }\n }\n };\n const ButtonComponent = {\n extends: IconComponent,\n mixins: [I18n],\n beforeConnect() {\n const button = this.$el.closest(\"a,button\");\n attr(button, \"role\", this.role !== null && isTag(button, \"a\") ? \"button\" : this.role);\n const label = this.t(\"label\");\n if (label && !hasAttr(button, \"aria-label\")) {\n attr(button, \"aria-label\", label);\n }\n }\n };\n const Slidenav = {\n extends: ButtonComponent,\n beforeConnect() {\n addClass(this.$el, \"uk-slidenav\");\n const icon = this.$props.icon;\n this.icon = hasClass(this.$el, \"uk-slidenav-large\") ? `${icon}-large` : icon;\n }\n };\n const NavbarToggleIcon = {\n extends: ButtonComponent,\n i18n: { label: \"Open menu\" }\n };\n const Close = {\n extends: ButtonComponent,\n i18n: { label: \"Close\" },\n beforeConnect() {\n this.icon = `close-${hasClass(this.$el, \"uk-close-large\") ? \"large\" : \"icon\"}`;\n }\n };\n const Marker = {\n extends: ButtonComponent,\n i18n: { label: \"Open\" }\n };\n const Totop = {\n extends: ButtonComponent,\n i18n: { label: \"Back to top\" }\n };\n const PaginationNext = {\n extends: ButtonComponent,\n i18n: { label: \"Next page\" },\n data: { role: null }\n };\n const PaginationPrevious = {\n extends: ButtonComponent,\n i18n: { label: \"Previous page\" },\n data: { role: null }\n };\n const parsed = {};\n function install$1(UIkit) {\n UIkit.icon.add = (name, svg) => {\n const added = isString(name) ? { [name]: svg } : name;\n each(added, (svg2, name2) => {\n icons[name2] = svg2;\n delete parsed[name2];\n });\n if (UIkit._initialized) {\n apply(\n document.body,\n (el) => each(UIkit.getComponents(el), (cmp) => {\n cmp.$options.isIcon && cmp.icon in added && cmp.$reset();\n })\n );\n }\n };\n }\n const aliases = { twitter: \"x\" };\n function getIcon(icon) {\n icon = aliases[icon] || icon;\n if (!icons[icon]) {\n return null;\n }\n if (!parsed[icon]) {\n parsed[icon] = stringToSvg(icons[applyRtl(icon)] || icons[icon]);\n }\n return parsed[icon].cloneNode(true);\n }\n function applyRtl(icon) {\n return isRtl ? swap(swap(icon, \"left\", \"right\"), \"previous\", \"next\") : icon;\n }\n\n var img = {\n args: \"dataSrc\",\n props: {\n dataSrc: String,\n sources: String,\n margin: String,\n target: String,\n loading: String\n },\n data: {\n dataSrc: \"\",\n sources: false,\n margin: \"50%\",\n target: false,\n loading: \"lazy\"\n },\n connected() {\n if (this.loading !== \"lazy\") {\n this.load();\n } else if (isImg(this.$el)) {\n this.$el.loading = \"lazy\";\n setSrcAttrs(this.$el);\n }\n },\n disconnected() {\n if (this.img) {\n this.img.onload = \"\";\n }\n delete this.img;\n },\n observe: intersection({\n handler(entries, observer) {\n this.load();\n observer.disconnect();\n },\n options: ({ margin }) => ({ rootMargin: margin }),\n filter: ({ loading }) => loading === \"lazy\",\n target: ({ $el, $props }) => $props.target ? [$el, ...queryAll($props.target, $el)] : $el\n }),\n methods: {\n load() {\n if (this.img) {\n return this.img;\n }\n const image = isImg(this.$el) ? this.$el : getImageFromElement(this.$el, this.dataSrc, this.sources);\n removeAttr(image, \"loading\");\n setSrcAttrs(this.$el, image.currentSrc);\n return this.img = image;\n }\n }\n };\n function setSrcAttrs(el, src) {\n if (isImg(el)) {\n const parentNode = parent(el);\n const elements = isTag(parentNode, \"picture\") ? children(parentNode) : [el];\n elements.forEach((el2) => setSourceProps(el2, el2));\n } else if (src) {\n const change = !includes(el.style.backgroundImage, src);\n if (change) {\n css(el, \"backgroundImage\", `url(${escape(src)})`);\n trigger(el, createEvent(\"load\", false));\n }\n }\n }\n const srcProps = [\"data-src\", \"data-srcset\", \"sizes\"];\n function setSourceProps(sourceEl, targetEl) {\n for (const prop of srcProps) {\n const value = data(sourceEl, prop);\n if (value) {\n attr(targetEl, prop.replace(/^(data-)+/, \"\"), value);\n }\n }\n }\n function getImageFromElement(el, src, sources) {\n const img = new Image();\n wrapInPicture(img, sources);\n setSourceProps(el, img);\n img.onload = () => {\n setSrcAttrs(el, img.currentSrc);\n };\n attr(img, \"src\", src);\n return img;\n }\n function wrapInPicture(img, sources) {\n sources = parseSources(sources);\n if (sources.length) {\n const picture = fragment(\"\");\n for (const attrs of sources) {\n const source = fragment(\"\");\n attr(source, attrs);\n append(picture, source);\n }\n append(picture, img);\n }\n }\n function parseSources(sources) {\n if (!sources) {\n return [];\n }\n if (startsWith(sources, \"[\")) {\n try {\n sources = JSON.parse(sources);\n } catch (e) {\n sources = [];\n }\n } else {\n sources = parseOptions(sources);\n }\n if (!isArray(sources)) {\n sources = [sources];\n }\n return sources.filter((source) => !isEmpty(source));\n }\n function isImg(el) {\n return isTag(el, \"img\");\n }\n\n var inverse = {\n props: {\n target: String,\n selActive: String\n },\n data: {\n target: false,\n selActive: false\n },\n computed: {\n target: ({ target }, $el) => target ? $$(target, $el) : $el\n },\n observe: [\n intersection({\n handler(entries) {\n this.isIntersecting = entries.some(({ isIntersecting }) => isIntersecting);\n this.$emit();\n },\n target: ({ target }) => target,\n args: { intersecting: false }\n }),\n mutation({\n target: ({ target }) => target,\n options: { attributes: true, attributeFilter: [\"class\"], attributeOldValue: true }\n }),\n {\n target: ({ target }) => target,\n observe: (target, handler) => {\n const observer = observeResize(\n [...toNodes(target), document.documentElement],\n handler\n );\n const listener = [\n on(document, \"scroll itemshown itemhidden\", handler, {\n passive: true,\n capture: true\n }),\n on(document, \"show hide transitionstart\", (e) => {\n handler();\n return observer.observe(e.target);\n }),\n on(document, \"shown hidden transitionend transitioncancel\", (e) => {\n handler();\n return observer.unobserve(e.target);\n })\n ];\n return {\n observe: observer.observe.bind(observer),\n unobserve: observer.unobserve.bind(observer),\n disconnect() {\n observer.disconnect();\n listener.map((off) => off());\n }\n };\n },\n handler() {\n this.$emit();\n }\n }\n ],\n update: {\n read() {\n if (!this.isIntersecting) {\n return false;\n }\n for (const target of toNodes(this.target)) {\n let color = !this.selActive || matches(target, this.selActive) ? findTargetColor(target) : \"\";\n if (color !== false) {\n replaceClass(target, \"uk-light uk-dark\", color);\n }\n }\n }\n }\n };\n function findTargetColor(target) {\n const dim = dimensions$1(target);\n const viewport = dimensions$1(window);\n if (!intersectRect(dim, viewport)) {\n return false;\n }\n const { left, top, height, width } = dim;\n let last;\n for (const percent of [0.25, 0.5, 0.75]) {\n const elements = target.ownerDocument.elementsFromPoint(\n Math.max(0, Math.min(left + width * percent, viewport.width - 1)),\n Math.max(0, Math.min(top + height / 2, viewport.height - 1))\n );\n for (const element of elements) {\n if (target.contains(element) || !checkVisibility(element) || element.closest('[class*=\"-leave\"]') && elements.some((el) => element !== el && matches(el, '[class*=\"-enter\"]'))) {\n continue;\n }\n const color = css(element, \"--uk-inverse\");\n if (color) {\n if (color === last) {\n return `uk-${color}`;\n }\n last = color;\n break;\n }\n }\n }\n return last ? `uk-${last}` : \"\";\n }\n function checkVisibility(element) {\n if (css(element, \"visibility\") !== \"visible\") {\n return false;\n }\n while (element) {\n if (css(element, \"opacity\") === \"0\") {\n return false;\n }\n element = parent(element);\n }\n return true;\n }\n\n var leader = {\n mixins: [Class, Media],\n props: {\n fill: String\n },\n data: {\n fill: \"\",\n clsWrapper: \"uk-leader-fill\",\n clsHide: \"uk-leader-hide\",\n attrFill: \"data-fill\"\n },\n computed: {\n fill: ({ fill }, $el) => fill || css($el, \"--uk-leader-fill-content\")\n },\n connected() {\n [this.wrapper] = wrapInner(this.$el, ``);\n },\n disconnected() {\n unwrap(this.wrapper.childNodes);\n },\n observe: resize(),\n update: {\n read() {\n const width = Math.trunc(this.$el.offsetWidth / 2);\n return {\n width,\n fill: this.fill,\n hide: !this.matchMedia\n };\n },\n write({ width, fill, hide }) {\n toggleClass(this.wrapper, this.clsHide, hide);\n attr(this.wrapper, this.attrFill, new Array(width).join(fill));\n },\n events: [\"resize\"]\n }\n };\n\n var modal = {\n install,\n mixins: [Modal],\n data: {\n clsPage: \"uk-modal-page\",\n selPanel: \".uk-modal-dialog\",\n selClose: '[class*=\"uk-modal-close\"]'\n },\n events: [\n {\n name: \"fullscreenchange webkitendfullscreen\",\n capture: true,\n handler(e) {\n if (isTag(e.target, \"video\") && this.isToggled() && !document.fullscreenElement) {\n this.hide();\n }\n }\n },\n {\n name: \"show\",\n self: true,\n handler() {\n if (hasClass(this.panel, \"uk-margin-auto-vertical\")) {\n addClass(this.$el, \"uk-flex\");\n } else {\n css(this.$el, \"display\", \"block\");\n }\n height(this.$el);\n }\n },\n {\n name: \"hidden\",\n self: true,\n handler() {\n css(this.$el, \"display\", \"\");\n removeClass(this.$el, \"uk-flex\");\n }\n }\n ]\n };\n function install({ modal }) {\n modal.dialog = function(content, options) {\n const dialog = modal($(`
    ${content}
    `), {\n stack: true,\n role: \"alertdialog\",\n ...options\n });\n dialog.show();\n on(\n dialog.$el,\n \"hidden\",\n async () => {\n await Promise.resolve();\n dialog.$destroy(true);\n },\n { self: true }\n );\n return dialog;\n };\n modal.alert = function(message, options) {\n return openDialog(\n ({ i18n }) => `
    ${isString(message) ? message : html(message)}
    `,\n options\n );\n };\n modal.confirm = function(message, options) {\n return openDialog(\n ({ i18n }) => `
    ${isString(message) ? message : html(message)}
    `,\n options,\n () => Promise.reject()\n );\n };\n modal.prompt = function(message, value, options) {\n const promise = openDialog(\n ({ i18n }) => `
    `,\n options,\n () => null,\n () => input.value\n );\n const { $el } = promise.dialog;\n const input = $(\"input\", $el);\n input.value = value || \"\";\n on($el, \"show\", () => input.select());\n return promise;\n };\n modal.i18n = {\n ok: \"Ok\",\n cancel: \"Cancel\"\n };\n function openDialog(tmpl, options, hideFn = noop, submitFn = noop) {\n options = {\n bgClose: false,\n escClose: true,\n ...options,\n i18n: { ...modal.i18n, ...options == null ? void 0 : options.i18n }\n };\n const dialog = modal.dialog(tmpl(options), options);\n return assign(\n new Promise((resolve) => {\n const off = on(dialog.$el, \"hide\", () => resolve(hideFn()));\n on(dialog.$el, \"submit\", \"form\", (e) => {\n e.preventDefault();\n resolve(submitFn(dialog));\n off();\n dialog.hide();\n });\n }),\n { dialog }\n );\n }\n }\n\n var nav = {\n extends: Accordion,\n data: {\n targets: \"> .uk-parent\",\n toggle: \"> a\",\n content: \"> ul\"\n }\n };\n\n const clsNavbarTransparent = \"uk-navbar-transparent\";\n var navbar = {\n extends: Dropnav,\n props: {\n dropbarTransparentMode: Boolean\n },\n data: {\n clsDrop: \"uk-navbar-dropdown\",\n selNavItem: \".uk-navbar-nav > li > a,a.uk-navbar-item,button.uk-navbar-item,.uk-navbar-item a,.uk-navbar-item button,.uk-navbar-toggle\",\n // Simplify with :where() selector once browser target is Safari 14+\n dropbarTransparentMode: false\n },\n computed: {\n navbarContainer: (_, $el) => $el.closest(\".uk-navbar-container\")\n },\n watch: {\n items() {\n const justify = hasClass(this.$el, \"uk-navbar-justify\");\n const containers = $$(\".uk-navbar-nav, .uk-navbar-left, .uk-navbar-right\", this.$el);\n for (const container of containers) {\n const items = justify ? $$(\".uk-navbar-nav > li > a, .uk-navbar-item, .uk-navbar-toggle\", container).length : \"\";\n css(container, \"flexGrow\", items);\n }\n }\n },\n events: [\n {\n name: \"show\",\n el: ({ dropContainer }) => dropContainer,\n handler({ target }) {\n if (this.getTransparentMode(target) === \"remove\" && hasClass(this.navbarContainer, clsNavbarTransparent)) {\n removeClass(this.navbarContainer, clsNavbarTransparent);\n this._transparent = true;\n }\n }\n },\n {\n name: \"hide\",\n el: ({ dropContainer }) => dropContainer,\n async handler() {\n await awaitMacroTask();\n if (!this.getActive() && this._transparent) {\n addClass(this.navbarContainer, clsNavbarTransparent);\n this._transparent = null;\n }\n }\n }\n ],\n methods: {\n getTransparentMode(el) {\n if (!this.navbarContainer) {\n return;\n }\n if (this.dropbar && this.isDropbarDrop(el)) {\n return this.dropbarTransparentMode;\n }\n const drop = this.getDropdown(el);\n if (drop && hasClass(el, \"uk-dropbar\")) {\n return drop.inset ? \"behind\" : \"remove\";\n }\n },\n getDropbarOffset(offsetTop) {\n const { top, height } = offset(this.navbarContainer);\n return top + (this.dropbarTransparentMode === \"behind\" ? 0 : height + offsetTop);\n }\n }\n };\n function awaitMacroTask() {\n return new Promise((resolve) => setTimeout(resolve));\n }\n\n var offcanvas = {\n mixins: [Modal],\n args: \"mode\",\n props: {\n mode: String,\n flip: Boolean,\n overlay: Boolean,\n swiping: Boolean\n },\n data: {\n mode: \"slide\",\n flip: false,\n overlay: false,\n clsPage: \"uk-offcanvas-page\",\n clsContainer: \"uk-offcanvas-container\",\n selPanel: \".uk-offcanvas-bar\",\n clsFlip: \"uk-offcanvas-flip\",\n clsContainerAnimation: \"uk-offcanvas-container-animation\",\n clsSidebarAnimation: \"uk-offcanvas-bar-animation\",\n clsMode: \"uk-offcanvas\",\n clsOverlay: \"uk-offcanvas-overlay\",\n selClose: \".uk-offcanvas-close\",\n container: false,\n swiping: true\n },\n computed: {\n clsFlip: ({ flip, clsFlip }) => flip ? clsFlip : \"\",\n clsOverlay: ({ overlay, clsOverlay }) => overlay ? clsOverlay : \"\",\n clsMode: ({ mode, clsMode }) => `${clsMode}-${mode}`,\n clsSidebarAnimation: ({ mode, clsSidebarAnimation }) => mode === \"none\" || mode === \"reveal\" ? \"\" : clsSidebarAnimation,\n clsContainerAnimation: ({ mode, clsContainerAnimation }) => mode !== \"push\" && mode !== \"reveal\" ? \"\" : clsContainerAnimation,\n transitionElement({ mode }) {\n return mode === \"reveal\" ? parent(this.panel) : this.panel;\n }\n },\n observe: swipe({ filter: ({ swiping }) => swiping }),\n update: {\n read() {\n if (this.isToggled() && !isVisible(this.$el)) {\n this.hide();\n }\n },\n events: [\"resize\"]\n },\n events: [\n {\n name: \"touchmove\",\n self: true,\n passive: false,\n filter: ({ overlay }) => overlay,\n handler(e) {\n e.cancelable && e.preventDefault();\n }\n },\n {\n name: \"show\",\n self: true,\n handler() {\n if (this.mode === \"reveal\" && !hasClass(parent(this.panel), this.clsMode)) {\n addClass(wrapAll(this.panel, \"
    \"), this.clsMode);\n }\n const { body, scrollingElement } = document;\n addClass(body, this.clsContainer, this.clsFlip);\n css(body, \"touchAction\", \"pan-y pinch-zoom\");\n css(this.$el, \"display\", \"block\");\n css(this.panel, \"maxWidth\", scrollingElement.clientWidth);\n addClass(this.$el, this.clsOverlay);\n addClass(\n this.panel,\n this.clsSidebarAnimation,\n this.mode === \"reveal\" ? \"\" : this.clsMode\n );\n height(body);\n addClass(body, this.clsContainerAnimation);\n this.clsContainerAnimation && suppressUserScale();\n }\n },\n {\n name: \"hide\",\n self: true,\n handler() {\n removeClass(document.body, this.clsContainerAnimation);\n css(document.body, \"touchAction\", \"\");\n }\n },\n {\n name: \"hidden\",\n self: true,\n handler() {\n this.clsContainerAnimation && resumeUserScale();\n if (this.mode === \"reveal\" && hasClass(parent(this.panel), this.clsMode)) {\n unwrap(this.panel);\n }\n removeClass(this.panel, this.clsSidebarAnimation, this.clsMode);\n removeClass(this.$el, this.clsOverlay);\n css(this.$el, \"display\", \"\");\n css(this.panel, \"maxWidth\", \"\");\n removeClass(document.body, this.clsContainer, this.clsFlip);\n }\n },\n {\n name: \"swipeLeft swipeRight\",\n handler(e) {\n if (this.isToggled() && endsWith(e.type, \"Left\") ^ this.flip) {\n this.hide();\n }\n }\n }\n ]\n };\n function suppressUserScale() {\n getViewport().content += \",user-scalable=0\";\n }\n function resumeUserScale() {\n const viewport = getViewport();\n viewport.content = viewport.content.replace(/,user-scalable=0$/, \"\");\n }\n function getViewport() {\n return $('meta[name=\"viewport\"]', document.head) || append(document.head, '');\n }\n\n var overflowAuto = {\n mixins: [Class],\n props: {\n selContainer: String,\n selContent: String,\n minHeight: Number\n },\n data: {\n selContainer: \".uk-modal\",\n selContent: \".uk-modal-dialog\",\n minHeight: 150\n },\n computed: {\n container: ({ selContainer }, $el) => $el.closest(selContainer),\n content: ({ selContent }, $el) => $el.closest(selContent)\n },\n observe: resize({\n target: ({ container, content }) => [container, content]\n }),\n update: {\n read() {\n if (!this.content || !this.container || !isVisible(this.$el)) {\n return false;\n }\n return {\n max: Math.max(\n this.minHeight,\n height(this.container) - (dimensions$1(this.content).height - height(this.$el))\n )\n };\n },\n write({ max }) {\n css(this.$el, { minHeight: this.minHeight, maxHeight: max });\n },\n events: [\"resize\"]\n }\n };\n\n var responsive = {\n props: [\"width\", \"height\"],\n connected() {\n addClass(this.$el, \"uk-responsive-width\");\n css(this.$el, \"aspectRatio\", `${this.width}/${this.height}`);\n }\n };\n\n var scroll = {\n props: {\n offset: Number\n },\n data: {\n offset: 0\n },\n connected() {\n registerClick(this);\n },\n disconnected() {\n unregisterClick(this);\n },\n methods: {\n async scrollTo(el) {\n el = el && $(el) || document.body;\n if (trigger(this.$el, \"beforescroll\", [this, el])) {\n await scrollIntoView(el, { offset: this.offset });\n trigger(this.$el, \"scrolled\", [this, el]);\n }\n }\n }\n };\n const instances = /* @__PURE__ */ new Set();\n function registerClick(cmp) {\n if (!instances.size) {\n on(document, \"click\", clickHandler);\n }\n instances.add(cmp);\n }\n function unregisterClick(cmp) {\n instances.delete(cmp);\n if (!instances.size) {\n off(document, \"click\", clickHandler);\n }\n }\n function clickHandler(e) {\n if (e.defaultPrevented) {\n return;\n }\n for (const instance of instances) {\n if (instance.$el.contains(e.target) && isSameSiteAnchor(instance.$el)) {\n e.preventDefault();\n if (window.location.href !== instance.$el.href) {\n window.history.pushState({}, \"\", instance.$el.href);\n }\n instance.scrollTo(getTargetedElement(instance.$el));\n }\n }\n }\n\n const clsInView = \"uk-scrollspy-inview\";\n var scrollspy = {\n args: \"cls\",\n props: {\n cls: String,\n target: String,\n hidden: Boolean,\n margin: String,\n repeat: Boolean,\n delay: Number\n },\n data: () => ({\n cls: \"\",\n target: false,\n hidden: true,\n margin: \"-1px\",\n repeat: false,\n delay: 0\n }),\n computed: {\n elements: ({ target }, $el) => target ? $$(target, $el) : [$el]\n },\n watch: {\n elements(elements) {\n if (this.hidden) {\n css(filter$1(elements, `:not(.${clsInView})`), \"opacity\", 0);\n }\n }\n },\n connected() {\n this.elementData = /* @__PURE__ */ new Map();\n },\n disconnected() {\n for (const [el, state] of this.elementData.entries()) {\n removeClass(el, clsInView, (state == null ? void 0 : state.cls) || \"\");\n }\n delete this.elementData;\n },\n observe: intersection({\n target: ({ elements }) => elements,\n handler(records) {\n const elements = this.elementData;\n for (const { target: el, isIntersecting } of records) {\n if (!elements.has(el)) {\n elements.set(el, {\n cls: data(el, \"uk-scrollspy-class\") || this.cls\n });\n }\n const state = elements.get(el);\n if (!this.repeat && state.show) {\n continue;\n }\n state.show = isIntersecting;\n }\n this.$emit();\n },\n options: ({ margin }) => ({ rootMargin: margin }),\n args: { intersecting: false }\n }),\n update: [\n {\n write(data) {\n for (const [el, state] of this.elementData.entries()) {\n if (state.show && !state.inview && !state.queued) {\n state.queued = true;\n data.promise = (data.promise || Promise.resolve()).then(() => new Promise((resolve) => setTimeout(resolve, this.delay))).then(() => {\n this.toggle(el, true);\n setTimeout(() => {\n state.queued = false;\n this.$emit();\n }, 300);\n });\n } else if (!state.show && state.inview && !state.queued && this.repeat) {\n this.toggle(el, false);\n }\n }\n }\n }\n ],\n methods: {\n toggle(el, inview) {\n var _a, _b;\n const state = (_a = this.elementData) == null ? void 0 : _a.get(el);\n if (!state) {\n return;\n }\n (_b = state.off) == null ? void 0 : _b.call(state);\n css(el, \"opacity\", !inview && this.hidden ? 0 : \"\");\n toggleClass(el, clsInView, inview);\n toggleClass(el, state.cls);\n let match;\n if (match = state.cls.match(/\\buk-animation-[\\w-]+/g)) {\n const removeAnimationClasses = () => removeClass(el, match);\n if (inview) {\n state.off = once(el, \"animationcancel animationend\", removeAnimationClasses, {\n self: true\n });\n } else {\n removeAnimationClasses();\n }\n }\n trigger(el, inview ? \"inview\" : \"outview\");\n state.inview = inview;\n }\n }\n };\n\n var scrollspyNav = {\n props: {\n cls: String,\n closest: Boolean,\n scroll: Boolean,\n target: String,\n offset: Number\n },\n data: {\n cls: \"uk-active\",\n closest: false,\n scroll: false,\n target: 'a[href]:not([role=\"button\"])',\n offset: 0\n },\n computed: {\n links: ({ target }, $el) => $$(target, $el).filter((el) => isSameSiteAnchor(el)),\n elements({ closest }) {\n return this.links.map((el) => el.closest(closest || \"*\"));\n }\n },\n watch: {\n links(links) {\n if (this.scroll) {\n this.$create(\"scroll\", links, { offset: this.offset });\n }\n }\n },\n observe: [intersection(), scroll$1()],\n update: [\n {\n read() {\n const targets = this.links.map((el) => getTargetedElement(el) || el.ownerDocument);\n const { length } = targets;\n if (!length || !isVisible(this.$el)) {\n return false;\n }\n const scrollElement = scrollParent(targets, true);\n const { scrollTop, scrollHeight } = scrollElement;\n const viewport = offsetViewport(scrollElement);\n const max = scrollHeight - viewport.height;\n let active = false;\n if (scrollTop >= max) {\n active = length - 1;\n } else {\n const offsetBy = this.offset + dimensions$1(getCoveringElement()).height + viewport.height * 0.1;\n for (let i = 0; i < targets.length; i++) {\n if (offset(targets[i]).top - viewport.top - offsetBy > 0) {\n break;\n }\n active = +i;\n }\n }\n return { active };\n },\n write({ active }) {\n const changed = active !== false && !hasClass(this.elements[active], this.cls);\n this.links.forEach((el) => el.blur());\n for (let i = 0; i < this.elements.length; i++) {\n toggleClass(this.elements[i], this.cls, +i === active);\n }\n if (changed) {\n trigger(this.$el, \"active\", [active, this.elements[active]]);\n }\n },\n events: [\"scroll\", \"resize\"]\n }\n ]\n };\n\n var sticky = {\n mixins: [Class, Media],\n props: {\n position: String,\n top: null,\n bottom: null,\n start: null,\n end: null,\n offset: String,\n overflowFlip: Boolean,\n animation: String,\n clsActive: String,\n clsInactive: String,\n clsFixed: String,\n clsBelow: String,\n selTarget: String,\n showOnUp: Boolean,\n targetOffset: Number\n },\n data: {\n position: \"top\",\n top: false,\n bottom: false,\n start: false,\n end: false,\n offset: 0,\n overflowFlip: false,\n animation: \"\",\n clsActive: \"uk-active\",\n clsInactive: \"\",\n clsFixed: \"uk-sticky-fixed\",\n clsBelow: \"uk-sticky-below\",\n selTarget: \"\",\n showOnUp: false,\n targetOffset: false\n },\n computed: {\n target: ({ selTarget }, $el) => selTarget && $(selTarget, $el) || $el\n },\n connected() {\n this.start = coerce(this.start || this.top);\n this.end = coerce(this.end || this.bottom);\n this.placeholder = $(\"+ .uk-sticky-placeholder\", this.$el) || $('
    ');\n this.isFixed = false;\n this.setActive(false);\n },\n beforeDisconnect() {\n if (this.isFixed) {\n this.hide();\n removeClass(this.target, this.clsInactive);\n }\n reset(this.$el);\n remove$1(this.placeholder);\n this.placeholder = null;\n },\n observe: [\n viewport(),\n scroll$1({ target: () => document.scrollingElement }),\n resize({\n target: ({ $el }) => [$el, getVisibleParent($el), document.scrollingElement],\n handler(entries) {\n this.$emit(\n this._data.resized && entries.some(({ target }) => target === getVisibleParent(this.$el)) ? \"update\" : \"resize\"\n );\n this._data.resized = true;\n }\n })\n ],\n events: [\n {\n name: \"load hashchange popstate\",\n el: () => window,\n filter: ({ targetOffset }) => targetOffset !== false,\n handler() {\n const { scrollingElement } = document;\n if (!location.hash || scrollingElement.scrollTop === 0) {\n return;\n }\n setTimeout(() => {\n const targetOffset = offset($(location.hash));\n const elOffset = offset(this.$el);\n if (this.isFixed && intersectRect(targetOffset, elOffset)) {\n scrollingElement.scrollTop = Math.ceil(\n targetOffset.top - elOffset.height - toPx(this.targetOffset, \"height\", this.placeholder) - toPx(this.offset, \"height\", this.placeholder)\n );\n }\n });\n }\n }\n ],\n update: [\n {\n read({ height: height$1, width, margin, sticky }, types) {\n this.inactive = !this.matchMedia || !isVisible(this.$el) || !this.$el.offsetHeight;\n if (this.inactive) {\n return;\n }\n const dynamicViewport = height(window);\n const maxScrollHeight = Math.max(\n 0,\n document.scrollingElement.scrollHeight - dynamicViewport\n );\n if (!maxScrollHeight) {\n this.inactive = true;\n return;\n }\n const hide = this.isFixed && types.has(\"update\");\n if (hide) {\n preventTransition(this.target);\n this.hide();\n }\n if (!this.active) {\n ({ height: height$1, width } = dimensions$1(this.$el));\n margin = css(this.$el, \"margin\");\n }\n if (hide) {\n this.show();\n }\n const viewport2 = toPx(\"100vh\", \"height\");\n let position = this.position;\n if (this.overflowFlip && height$1 > viewport2) {\n position = position === \"top\" ? \"bottom\" : \"top\";\n }\n const referenceElement = this.isFixed ? this.placeholder : this.$el;\n let offset$1 = toPx(this.offset, \"height\", sticky ? this.$el : referenceElement);\n if (position === \"bottom\" && (height$1 < dynamicViewport || this.overflowFlip)) {\n offset$1 += dynamicViewport - height$1;\n }\n const overflow = this.overflowFlip ? 0 : Math.max(0, height$1 + offset$1 - viewport2);\n const topOffset = offset(referenceElement).top - // offset possible `transform: translateY` animation 'uk-animation-slide-top' while hiding\n new DOMMatrix(css(referenceElement, \"transform\")).m42;\n const elHeight = dimensions$1(this.$el).height;\n const start = (this.start === false ? topOffset : parseProp(this.start, this.$el, topOffset)) - offset$1;\n const end = this.end === false ? maxScrollHeight : Math.min(\n maxScrollHeight,\n parseProp(this.end, this.$el, topOffset + height$1, true) - elHeight - offset$1 + overflow\n );\n sticky = !this.showOnUp && start + offset$1 === topOffset && end === Math.min(\n maxScrollHeight,\n parseProp(true, this.$el, 0, true) - elHeight - offset$1 + overflow\n ) && css(getVisibleParent(this.$el), \"overflowY\") !== \"hidden\";\n return {\n start,\n end,\n offset: offset$1,\n overflow,\n height: height$1,\n elHeight,\n width,\n margin,\n top: offsetPosition(referenceElement)[0],\n sticky,\n viewport: viewport2,\n maxScrollHeight\n };\n },\n write({ height, width, margin, offset, sticky }) {\n if (this.inactive || sticky || !this.isFixed) {\n reset(this.$el);\n }\n if (this.inactive) {\n return;\n }\n if (sticky) {\n height = width = margin = 0;\n css(this.$el, { position: \"sticky\", top: offset });\n }\n const { placeholder } = this;\n css(placeholder, { height, width, margin });\n if (parent(placeholder) !== parent(this.$el) || sticky ^ index(placeholder) < index(this.$el)) {\n (sticky ? before : after)(this.$el, placeholder);\n placeholder.hidden = true;\n }\n },\n events: [\"resize\"]\n },\n {\n read({\n scroll: prevScroll = 0,\n dir: prevDir = \"down\",\n overflow,\n overflowScroll = 0,\n start,\n end,\n elHeight,\n height,\n sticky,\n maxScrollHeight\n }) {\n const scroll2 = Math.min(document.scrollingElement.scrollTop, maxScrollHeight);\n const dir = prevScroll <= scroll2 ? \"down\" : \"up\";\n const referenceElement = this.isFixed ? this.placeholder : this.$el;\n return {\n dir,\n prevDir,\n scroll: scroll2,\n prevScroll,\n below: scroll2 > offset(referenceElement).top + (sticky ? Math.min(height, elHeight) : height),\n offsetParentTop: offset(referenceElement.offsetParent).top,\n overflowScroll: clamp(\n overflowScroll + clamp(scroll2, start, end) - clamp(prevScroll, start, end),\n 0,\n overflow\n )\n };\n },\n write(data, types) {\n const isScrollUpdate = types.has(\"scroll\");\n const {\n initTimestamp = 0,\n dir,\n prevDir,\n scroll: scroll2,\n prevScroll = 0,\n top,\n start,\n below\n } = data;\n if (scroll2 < 0 || scroll2 === prevScroll && isScrollUpdate || this.showOnUp && !isScrollUpdate && !this.isFixed) {\n return;\n }\n const now = Date.now();\n if (now - initTimestamp > 300 || dir !== prevDir) {\n data.initScroll = scroll2;\n data.initTimestamp = now;\n }\n if (this.showOnUp && !this.isFixed && Math.abs(data.initScroll - scroll2) <= 30 && Math.abs(prevScroll - scroll2) <= 10) {\n return;\n }\n if (this.inactive || scroll2 < start || this.showOnUp && (scroll2 <= start || dir === \"down\" && isScrollUpdate || dir === \"up\" && !this.isFixed && !below)) {\n if (!this.isFixed) {\n if (Animation.inProgress(this.$el) && top > scroll2) {\n Animation.cancel(this.$el);\n this.hide();\n }\n return;\n }\n if (this.animation && below) {\n if (hasClass(this.$el, \"uk-animation-leave\")) {\n return;\n }\n Animation.out(this.$el, this.animation).then(() => this.hide(), noop);\n } else {\n this.hide();\n }\n } else if (this.isFixed) {\n this.update();\n } else if (this.animation && below) {\n this.show();\n Animation.in(this.$el, this.animation).catch(noop);\n } else {\n preventTransition(this.target);\n this.show();\n }\n },\n events: [\"resize\", \"resizeViewport\", \"scroll\"]\n }\n ],\n methods: {\n show() {\n this.isFixed = true;\n this.update();\n this.placeholder.hidden = false;\n },\n hide() {\n const { offset, sticky } = this._data;\n this.setActive(false);\n removeClass(this.$el, this.clsFixed, this.clsBelow);\n if (sticky) {\n css(this.$el, \"top\", offset);\n } else {\n css(this.$el, {\n position: \"\",\n top: \"\",\n width: \"\",\n marginTop: \"\"\n });\n }\n this.placeholder.hidden = true;\n this.isFixed = false;\n },\n update() {\n let {\n width,\n scroll: scroll2 = 0,\n overflow,\n overflowScroll = 0,\n start,\n end,\n offset,\n offsetParentTop,\n sticky,\n below\n } = this._data;\n const active = start !== 0 || scroll2 > start;\n if (!sticky) {\n let position = \"fixed\";\n if (scroll2 > end) {\n offset += end - offsetParentTop + overflowScroll - overflow;\n position = \"absolute\";\n }\n css(this.$el, { position, width, marginTop: 0 }, \"important\");\n }\n css(this.$el, \"top\", offset - overflowScroll);\n this.setActive(active);\n toggleClass(this.$el, this.clsBelow, below);\n addClass(this.$el, this.clsFixed);\n },\n setActive(active) {\n const prev = this.active;\n this.active = active;\n if (active) {\n replaceClass(this.target, this.clsInactive, this.clsActive);\n prev !== active && trigger(this.$el, \"active\");\n } else {\n replaceClass(this.target, this.clsActive, this.clsInactive);\n if (prev !== active) {\n preventTransition(this.target);\n trigger(this.$el, \"inactive\");\n }\n }\n }\n }\n };\n function parseProp(value, el, propOffset, padding) {\n if (!value) {\n return 0;\n }\n if (isNumeric(value) || isString(value) && value.match(/^-?\\d/)) {\n return propOffset + toPx(value, \"height\", el, true);\n } else {\n const refElement = value === true ? getVisibleParent(el) : query(value, el);\n return offset(refElement).bottom - (padding && (refElement == null ? void 0 : refElement.contains(el)) ? toFloat(css(refElement, \"paddingBottom\")) + toFloat(css(refElement, \"borderBottomWidth\")) : 0);\n }\n }\n function coerce(value) {\n if (value === \"true\") {\n return true;\n } else if (value === \"false\") {\n return false;\n }\n return value;\n }\n function reset(el) {\n css(el, { position: \"\", top: \"\", marginTop: \"\", width: \"\" });\n }\n const clsTransitionDisable = \"uk-transition-disable\";\n function preventTransition(element) {\n if (!hasClass(element, clsTransitionDisable)) {\n addClass(element, clsTransitionDisable);\n requestAnimationFrame(() => removeClass(element, clsTransitionDisable));\n }\n }\n function getVisibleParent(element) {\n while (element = parent(element)) {\n if (isVisible(element)) {\n return element;\n }\n }\n }\n\n const selDisabled = \".uk-disabled *, .uk-disabled, [disabled]\";\n var Switcher = {\n mixins: [Togglable],\n args: \"connect\",\n props: {\n connect: String,\n toggle: String,\n itemNav: String,\n active: Number,\n followFocus: Boolean,\n swiping: Boolean\n },\n data: {\n connect: \"~.uk-switcher\",\n toggle: \"> * > :first-child\",\n itemNav: false,\n active: 0,\n cls: \"uk-active\",\n attrItem: \"uk-switcher-item\",\n selVertical: \".uk-nav\",\n followFocus: false,\n swiping: true\n },\n computed: {\n connects: {\n get: ({ connect }, $el) => queryAll(connect, $el),\n observe: ({ connect }) => connect\n },\n connectChildren() {\n return this.connects.map((el) => children(el)).flat();\n },\n toggles: ({ toggle }, $el) => $$(toggle, $el),\n children(_, $el) {\n return children($el).filter(\n (child) => this.toggles.some((toggle) => child.contains(toggle))\n );\n }\n },\n watch: {\n connects(connects) {\n if (this.swiping) {\n css(connects, \"touchAction\", \"pan-y pinch-zoom\");\n }\n this.$emit();\n },\n connectChildren() {\n let index = Math.max(0, this.index());\n for (const el of this.connects) {\n children(el).forEach((child, i) => toggleClass(child, this.cls, i === index));\n }\n this.$emit();\n },\n toggles(toggles) {\n this.$emit();\n const active = this.index();\n this.show(~active ? active : toggles[this.active] || toggles[0]);\n }\n },\n connected() {\n attr(this.$el, \"role\", \"tablist\");\n },\n observe: [\n lazyload({ targets: ({ connectChildren }) => connectChildren }),\n swipe({ target: ({ connects }) => connects, filter: ({ swiping }) => swiping })\n ],\n events: [\n {\n name: \"click keydown\",\n delegate: ({ toggle }) => toggle,\n handler(e) {\n if (!matches(e.current, selDisabled) && (e.type === \"click\" || e.keyCode === keyMap.SPACE)) {\n e.preventDefault();\n this.show(e.current);\n }\n }\n },\n {\n name: \"keydown\",\n delegate: ({ toggle }) => toggle,\n handler(e) {\n const { current, keyCode } = e;\n const isVertical = matches(this.$el, this.selVertical);\n let i = keyCode === keyMap.HOME ? 0 : keyCode === keyMap.END ? \"last\" : keyCode === keyMap.LEFT && !isVertical || keyCode === keyMap.UP && isVertical ? \"previous\" : keyCode === keyMap.RIGHT && !isVertical || keyCode === keyMap.DOWN && isVertical ? \"next\" : -1;\n if (~i) {\n e.preventDefault();\n const toggles = this.toggles.filter((el) => !matches(el, selDisabled));\n const next = toggles[getIndex(i, toggles, toggles.indexOf(current))];\n next.focus();\n if (this.followFocus) {\n this.show(next);\n }\n }\n }\n },\n {\n name: \"click\",\n el: ({ $el, connects, itemNav }) => connects.concat(itemNav ? queryAll(itemNav, $el) : []),\n delegate: ({ attrItem }) => `[${attrItem}],[data-${attrItem}]`,\n handler(e) {\n if (e.target.closest(\"a,button\")) {\n e.preventDefault();\n this.show(data(e.current, this.attrItem));\n }\n }\n },\n {\n name: \"swipeRight swipeLeft\",\n filter: ({ swiping }) => swiping,\n el: ({ connects }) => connects,\n handler({ type }) {\n this.show(endsWith(type, \"Left\") ? \"next\" : \"previous\");\n }\n }\n ],\n update() {\n var _a;\n for (const el of this.connects) {\n if (isTag(el, \"ul\")) {\n attr(el, \"role\", \"presentation\");\n }\n }\n attr(children(this.$el), \"role\", \"presentation\");\n for (const index in this.toggles) {\n const toggle = this.toggles[index];\n const item = (_a = this.connects[0]) == null ? void 0 : _a.children[index];\n attr(toggle, \"role\", \"tab\");\n if (!item) {\n continue;\n }\n toggle.id = generateId(this, toggle);\n item.id = generateId(this, item);\n attr(toggle, \"aria-controls\", item.id);\n attr(item, { role: \"tabpanel\", \"aria-labelledby\": toggle.id });\n }\n attr(this.$el, \"aria-orientation\", matches(this.$el, this.selVertical) ? \"vertical\" : null);\n },\n methods: {\n index() {\n return findIndex(this.children, (el) => hasClass(el, this.cls));\n },\n show(item) {\n const toggles = this.toggles.filter((el) => !matches(el, selDisabled));\n const prev = this.index();\n const next = getIndex(\n !isNode(item) || includes(toggles, item) ? item : 0,\n toggles,\n getIndex(this.toggles[prev], toggles)\n );\n const active = getIndex(toggles[next], this.toggles);\n this.children.forEach((child, i) => {\n toggleClass(child, this.cls, active === i);\n attr(this.toggles[i], {\n \"aria-selected\": active === i,\n tabindex: active === i ? null : -1\n });\n });\n const animate = prev >= 0 && prev !== next;\n this.connects.forEach(async ({ children: children2 }) => {\n const actives = toArray(children2).filter(\n (child, i) => i !== active && hasClass(child, this.cls)\n );\n if (await this.toggleElement(actives, false, animate)) {\n await this.toggleElement(children2[active], true, animate);\n }\n });\n }\n }\n };\n\n var tab = {\n mixins: [Class],\n extends: Switcher,\n props: {\n media: Boolean\n },\n data: {\n media: 960,\n attrItem: \"uk-tab-item\",\n selVertical: \".uk-tab-left,.uk-tab-right\"\n },\n connected() {\n const cls = hasClass(this.$el, \"uk-tab-left\") ? \"uk-tab-left\" : hasClass(this.$el, \"uk-tab-right\") ? \"uk-tab-right\" : false;\n if (cls) {\n this.$create(\"toggle\", this.$el, { cls, mode: \"media\", media: this.media });\n }\n }\n };\n\n const KEY_SPACE = 32;\n var toggle = {\n mixins: [Media, Togglable],\n args: \"target\",\n props: {\n href: String,\n target: null,\n mode: \"list\",\n queued: Boolean\n },\n data: {\n href: false,\n target: false,\n mode: \"click\",\n queued: true\n },\n computed: {\n target: {\n get: ({ target }, $el) => {\n target = queryAll(target || $el.hash, $el);\n return target.length ? target : [$el];\n },\n observe: ({ target }) => target\n }\n },\n connected() {\n if (!includes(this.mode, \"media\")) {\n if (!isFocusable(this.$el)) {\n attr(this.$el, \"tabindex\", \"0\");\n }\n if (!this.cls && isTag(this.$el, \"a\")) {\n attr(this.$el, \"role\", \"button\");\n }\n }\n },\n observe: lazyload({ targets: ({ target }) => target }),\n events: [\n {\n name: pointerDown$1,\n filter: ({ mode }) => includes(mode, \"hover\"),\n handler(e) {\n this._preventClick = null;\n if (!isTouch(e) || isBoolean(this._showState) || this.$el.disabled) {\n return;\n }\n trigger(this.$el, \"focus\");\n once(\n document,\n pointerDown$1,\n () => trigger(this.$el, \"blur\"),\n true,\n (e2) => !this.$el.contains(e2.target)\n );\n if (includes(this.mode, \"click\")) {\n this._preventClick = true;\n }\n }\n },\n {\n // mouseenter mouseleave are added because of Firefox bug,\n // where pointerleave is triggered immediately after pointerenter on scroll\n name: `mouseenter mouseleave ${pointerEnter} ${pointerLeave} focus blur`,\n filter: ({ mode }) => includes(mode, \"hover\"),\n handler(e) {\n if (isTouch(e) || this.$el.disabled) {\n return;\n }\n const show = includes([\"mouseenter\", pointerEnter, \"focus\"], e.type);\n const expanded = this.isToggled(this.target);\n if (!show && (!isBoolean(this._showState) || e.type !== \"blur\" && matches(this.$el, \":focus\") || e.type === \"blur\" && matches(this.$el, \":hover\"))) {\n if (expanded === this._showState) {\n this._showState = null;\n }\n return;\n }\n if (show && isBoolean(this._showState) && expanded !== this._showState) {\n return;\n }\n this._showState = show ? expanded : null;\n this.toggle(`toggle${show ? \"show\" : \"hide\"}`);\n }\n },\n {\n name: \"keydown\",\n filter: ({ $el, mode }) => includes(mode, \"click\") && !isTag($el, \"input\"),\n handler(e) {\n if (e.keyCode === KEY_SPACE) {\n e.preventDefault();\n this.$el.click();\n }\n }\n },\n {\n name: \"click\",\n filter: ({ mode }) => [\"click\", \"hover\"].some((m) => includes(mode, m)),\n handler(e) {\n let link;\n if (this._preventClick || e.target.closest('a[href=\"#\"], a[href=\"\"]') || (link = e.target.closest(\"a[href]\")) && (!this.isToggled(this.target) || link.hash && matches(this.target, link.hash))) {\n e.preventDefault();\n }\n if (!this._preventClick && includes(this.mode, \"click\")) {\n this.toggle();\n }\n }\n },\n {\n name: \"mediachange\",\n filter: ({ mode }) => includes(mode, \"media\"),\n el: ({ target }) => target,\n handler(e, mediaObj) {\n if (mediaObj.matches ^ this.isToggled(this.target)) {\n this.toggle();\n }\n }\n }\n ],\n methods: {\n async toggle(type) {\n if (!trigger(this.target, type || \"toggle\", [this])) {\n return;\n }\n if (hasAttr(this.$el, \"aria-expanded\")) {\n attr(this.$el, \"aria-expanded\", !this.isToggled(this.target));\n }\n if (!this.queued) {\n return this.toggleElement(this.target);\n }\n const leaving = this.target.filter((el) => hasClass(el, this.clsLeave));\n if (leaving.length) {\n for (const el of this.target) {\n const isLeaving = includes(leaving, el);\n this.toggleElement(el, isLeaving, isLeaving);\n }\n return;\n }\n const toggled = this.target.filter(this.isToggled);\n if (await this.toggleElement(toggled, false)) {\n await this.toggleElement(\n this.target.filter((el) => !includes(toggled, el)),\n true\n );\n }\n }\n }\n };\n\n var components = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Accordion: Accordion,\n Alert: alert,\n Close: Close,\n Cover: cover,\n Drop: drop,\n DropParentIcon: IconComponent,\n Dropdown: drop,\n Dropnav: Dropnav,\n FormCustom: formCustom,\n Grid: grid,\n HeightMatch: heightMatch,\n HeightPlaceholder: heightPlaceholder,\n HeightViewport: heightViewport,\n Icon: Icon,\n Img: img,\n Inverse: inverse,\n Leader: leader,\n Margin: Margin,\n Marker: Marker,\n Modal: modal,\n Nav: nav,\n NavParentIcon: NavParentIcon,\n Navbar: navbar,\n NavbarParentIcon: IconComponent,\n NavbarToggleIcon: NavbarToggleIcon,\n Offcanvas: offcanvas,\n OverflowAuto: overflowAuto,\n OverlayIcon: IconComponent,\n PaginationNext: PaginationNext,\n PaginationPrevious: PaginationPrevious,\n Responsive: responsive,\n Scroll: scroll,\n Scrollspy: scrollspy,\n ScrollspyNav: scrollspyNav,\n SearchIcon: Search,\n SlidenavNext: Slidenav,\n SlidenavPrevious: Slidenav,\n Spinner: Spinner,\n Sticky: sticky,\n Svg: svg,\n Switcher: Switcher,\n Tab: tab,\n Toggle: toggle,\n Totop: Totop,\n Video: Video\n });\n\n each(components, (component, name) => App.component(name, component));\n boot(App);\n\n each(components$1, (component, name) => App.component(name, component));\n\n return App;\n\n}));\n", ";(function(root, factory) { // eslint-disable-line no-extra-semi\n var deepDiff = factory(root);\n // eslint-disable-next-line no-undef\n if (typeof define === 'function' && define.amd) {\n // AMD\n define('DeepDiff', function() { // eslint-disable-line no-undef\n return deepDiff;\n });\n } else if (typeof exports === 'object' || typeof navigator === 'object' && navigator.product.match(/ReactNative/i)) {\n // Node.js or ReactNative\n module.exports = deepDiff;\n } else {\n // Browser globals\n var _deepdiff = root.DeepDiff;\n deepDiff.noConflict = function() {\n if (root.DeepDiff === deepDiff) {\n root.DeepDiff = _deepdiff;\n }\n return deepDiff;\n };\n root.DeepDiff = deepDiff;\n }\n}(this, function(root) {\n var validKinds = ['N', 'E', 'A', 'D'];\n\n // nodejs compatible on server side and in the browser.\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n\n function Diff(kind, path) {\n Object.defineProperty(this, 'kind', {\n value: kind,\n enumerable: true\n });\n if (path && path.length) {\n Object.defineProperty(this, 'path', {\n value: path,\n enumerable: true\n });\n }\n }\n\n function DiffEdit(path, origin, value) {\n DiffEdit.super_.call(this, 'E', path);\n Object.defineProperty(this, 'lhs', {\n value: origin,\n enumerable: true\n });\n Object.defineProperty(this, 'rhs', {\n value: value,\n enumerable: true\n });\n }\n inherits(DiffEdit, Diff);\n\n function DiffNew(path, value) {\n DiffNew.super_.call(this, 'N', path);\n Object.defineProperty(this, 'rhs', {\n value: value,\n enumerable: true\n });\n }\n inherits(DiffNew, Diff);\n\n function DiffDeleted(path, value) {\n DiffDeleted.super_.call(this, 'D', path);\n Object.defineProperty(this, 'lhs', {\n value: value,\n enumerable: true\n });\n }\n inherits(DiffDeleted, Diff);\n\n function DiffArray(path, index, item) {\n DiffArray.super_.call(this, 'A', path);\n Object.defineProperty(this, 'index', {\n value: index,\n enumerable: true\n });\n Object.defineProperty(this, 'item', {\n value: item,\n enumerable: true\n });\n }\n inherits(DiffArray, Diff);\n\n function arrayRemove(arr, from, to) {\n var rest = arr.slice((to || from) + 1 || arr.length);\n arr.length = from < 0 ? arr.length + from : from;\n arr.push.apply(arr, rest);\n return arr;\n }\n\n function realTypeOf(subject) {\n var type = typeof subject;\n if (type !== 'object') {\n return type;\n }\n\n if (subject === Math) {\n return 'math';\n } else if (subject === null) {\n return 'null';\n } else if (Array.isArray(subject)) {\n return 'array';\n } else if (Object.prototype.toString.call(subject) === '[object Date]') {\n return 'date';\n } else if (typeof subject.toString === 'function' && /^\\/.*\\//.test(subject.toString())) {\n return 'regexp';\n }\n return 'object';\n }\n\n // http://werxltd.com/wp/2010/05/13/javascript-implementation-of-javas-string-hashcode-method/\n function hashThisString(string) {\n var hash = 0;\n if (string.length === 0) { return hash; }\n for (var i = 0; i < string.length; i++) {\n var char = string.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return hash;\n }\n\n // Gets a hash of the given object in an array order-independent fashion\n // also object key order independent (easier since they can be alphabetized)\n function getOrderIndependentHash(object) {\n var accum = 0;\n var type = realTypeOf(object);\n\n if (type === 'array') {\n object.forEach(function (item) {\n // Addition is commutative so this is order indep\n accum += getOrderIndependentHash(item);\n });\n\n var arrayString = '[type: array, hash: ' + accum + ']';\n return accum + hashThisString(arrayString);\n }\n\n if (type === 'object') {\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n var keyValueString = '[ type: object, key: ' + key + ', value hash: ' + getOrderIndependentHash(object[key]) + ']';\n accum += hashThisString(keyValueString);\n }\n }\n\n return accum;\n }\n\n // Non object, non array...should be good?\n var stringToHash = '[ type: ' + type + ' ; value: ' + object + ']';\n return accum + hashThisString(stringToHash);\n }\n\n function deepDiff(lhs, rhs, changes, prefilter, path, key, stack, orderIndependent) {\n changes = changes || [];\n path = path || [];\n stack = stack || [];\n var currentPath = path.slice(0);\n if (typeof key !== 'undefined' && key !== null) {\n if (prefilter) {\n if (typeof (prefilter) === 'function' && prefilter(currentPath, key)) {\n return;\n } else if (typeof (prefilter) === 'object') {\n if (prefilter.prefilter && prefilter.prefilter(currentPath, key)) {\n return;\n }\n if (prefilter.normalize) {\n var alt = prefilter.normalize(currentPath, key, lhs, rhs);\n if (alt) {\n lhs = alt[0];\n rhs = alt[1];\n }\n }\n }\n }\n currentPath.push(key);\n }\n\n // Use string comparison for regexes\n if (realTypeOf(lhs) === 'regexp' && realTypeOf(rhs) === 'regexp') {\n lhs = lhs.toString();\n rhs = rhs.toString();\n }\n\n var ltype = typeof lhs;\n var rtype = typeof rhs;\n var i, j, k, other;\n\n var ldefined = ltype !== 'undefined' ||\n (stack && (stack.length > 0) && stack[stack.length - 1].lhs &&\n Object.getOwnPropertyDescriptor(stack[stack.length - 1].lhs, key));\n var rdefined = rtype !== 'undefined' ||\n (stack && (stack.length > 0) && stack[stack.length - 1].rhs &&\n Object.getOwnPropertyDescriptor(stack[stack.length - 1].rhs, key));\n\n if (!ldefined && rdefined) {\n changes.push(new DiffNew(currentPath, rhs));\n } else if (!rdefined && ldefined) {\n changes.push(new DiffDeleted(currentPath, lhs));\n } else if (realTypeOf(lhs) !== realTypeOf(rhs)) {\n changes.push(new DiffEdit(currentPath, lhs, rhs));\n } else if (realTypeOf(lhs) === 'date' && (lhs - rhs) !== 0) {\n changes.push(new DiffEdit(currentPath, lhs, rhs));\n } else if (ltype === 'object' && lhs !== null && rhs !== null) {\n for (i = stack.length - 1; i > -1; --i) {\n if (stack[i].lhs === lhs) {\n other = true;\n break;\n }\n }\n if (!other) {\n stack.push({ lhs: lhs, rhs: rhs });\n if (Array.isArray(lhs)) {\n // If order doesn't matter, we need to sort our arrays\n if (orderIndependent) {\n lhs.sort(function (a, b) {\n return getOrderIndependentHash(a) - getOrderIndependentHash(b);\n });\n\n rhs.sort(function (a, b) {\n return getOrderIndependentHash(a) - getOrderIndependentHash(b);\n });\n }\n i = rhs.length - 1;\n j = lhs.length - 1;\n while (i > j) {\n changes.push(new DiffArray(currentPath, i, new DiffNew(undefined, rhs[i--])));\n }\n while (j > i) {\n changes.push(new DiffArray(currentPath, j, new DiffDeleted(undefined, lhs[j--])));\n }\n for (; i >= 0; --i) {\n deepDiff(lhs[i], rhs[i], changes, prefilter, currentPath, i, stack, orderIndependent);\n }\n } else {\n var akeys = Object.keys(lhs);\n var pkeys = Object.keys(rhs);\n for (i = 0; i < akeys.length; ++i) {\n k = akeys[i];\n other = pkeys.indexOf(k);\n if (other >= 0) {\n deepDiff(lhs[k], rhs[k], changes, prefilter, currentPath, k, stack, orderIndependent);\n pkeys[other] = null;\n } else {\n deepDiff(lhs[k], undefined, changes, prefilter, currentPath, k, stack, orderIndependent);\n }\n }\n for (i = 0; i < pkeys.length; ++i) {\n k = pkeys[i];\n if (k) {\n deepDiff(undefined, rhs[k], changes, prefilter, currentPath, k, stack, orderIndependent);\n }\n }\n }\n stack.length = stack.length - 1;\n } else if (lhs !== rhs) {\n // lhs is contains a cycle at this element and it differs from rhs\n changes.push(new DiffEdit(currentPath, lhs, rhs));\n }\n } else if (lhs !== rhs) {\n if (!(ltype === 'number' && isNaN(lhs) && isNaN(rhs))) {\n changes.push(new DiffEdit(currentPath, lhs, rhs));\n }\n }\n }\n\n function observableDiff(lhs, rhs, observer, prefilter, orderIndependent) {\n var changes = [];\n deepDiff(lhs, rhs, changes, prefilter, null, null, null, orderIndependent);\n if (observer) {\n for (var i = 0; i < changes.length; ++i) {\n observer(changes[i]);\n }\n }\n return changes;\n }\n\n function orderIndependentDeepDiff(lhs, rhs, changes, prefilter, path, key, stack) {\n return deepDiff(lhs, rhs, changes, prefilter, path, key, stack, true);\n }\n\n function accumulateDiff(lhs, rhs, prefilter, accum) {\n var observer = (accum) ?\n function (difference) {\n if (difference) {\n accum.push(difference);\n }\n } : undefined;\n var changes = observableDiff(lhs, rhs, observer, prefilter);\n return (accum) ? accum : (changes.length) ? changes : undefined;\n }\n\n function accumulateOrderIndependentDiff(lhs, rhs, prefilter, accum) {\n var observer = (accum) ?\n function (difference) {\n if (difference) {\n accum.push(difference);\n }\n } : undefined;\n var changes = observableDiff(lhs, rhs, observer, prefilter, true);\n return (accum) ? accum : (changes.length) ? changes : undefined;\n }\n\n function applyArrayChange(arr, index, change) {\n if (change.path && change.path.length) {\n var it = arr[index],\n i, u = change.path.length - 1;\n for (i = 0; i < u; i++) {\n it = it[change.path[i]];\n }\n switch (change.kind) {\n case 'A':\n applyArrayChange(it[change.path[i]], change.index, change.item);\n break;\n case 'D':\n delete it[change.path[i]];\n break;\n case 'E':\n case 'N':\n it[change.path[i]] = change.rhs;\n break;\n }\n } else {\n switch (change.kind) {\n case 'A':\n applyArrayChange(arr[index], change.index, change.item);\n break;\n case 'D':\n arr = arrayRemove(arr, index);\n break;\n case 'E':\n case 'N':\n arr[index] = change.rhs;\n break;\n }\n }\n return arr;\n }\n\n function applyChange(target, source, change) {\n if (typeof change === 'undefined' && source && ~validKinds.indexOf(source.kind)) {\n change = source;\n }\n if (target && change && change.kind) {\n var it = target,\n i = -1,\n last = change.path ? change.path.length - 1 : 0;\n while (++i < last) {\n if (typeof it[change.path[i]] === 'undefined') {\n it[change.path[i]] = (typeof change.path[i + 1] !== 'undefined' && typeof change.path[i + 1] === 'number') ? [] : {};\n }\n it = it[change.path[i]];\n }\n switch (change.kind) {\n case 'A':\n if (change.path && typeof it[change.path[i]] === 'undefined') {\n it[change.path[i]] = [];\n }\n applyArrayChange(change.path ? it[change.path[i]] : it, change.index, change.item);\n break;\n case 'D':\n delete it[change.path[i]];\n break;\n case 'E':\n case 'N':\n it[change.path[i]] = change.rhs;\n break;\n }\n }\n }\n\n function revertArrayChange(arr, index, change) {\n if (change.path && change.path.length) {\n // the structure of the object at the index has changed...\n var it = arr[index],\n i, u = change.path.length - 1;\n for (i = 0; i < u; i++) {\n it = it[change.path[i]];\n }\n switch (change.kind) {\n case 'A':\n revertArrayChange(it[change.path[i]], change.index, change.item);\n break;\n case 'D':\n it[change.path[i]] = change.lhs;\n break;\n case 'E':\n it[change.path[i]] = change.lhs;\n break;\n case 'N':\n delete it[change.path[i]];\n break;\n }\n } else {\n // the array item is different...\n switch (change.kind) {\n case 'A':\n revertArrayChange(arr[index], change.index, change.item);\n break;\n case 'D':\n arr[index] = change.lhs;\n break;\n case 'E':\n arr[index] = change.lhs;\n break;\n case 'N':\n arr = arrayRemove(arr, index);\n break;\n }\n }\n return arr;\n }\n\n function revertChange(target, source, change) {\n if (target && source && change && change.kind) {\n var it = target,\n i, u;\n u = change.path.length - 1;\n for (i = 0; i < u; i++) {\n if (typeof it[change.path[i]] === 'undefined') {\n it[change.path[i]] = {};\n }\n it = it[change.path[i]];\n }\n switch (change.kind) {\n case 'A':\n // Array was modified...\n // it will be an array...\n revertArrayChange(it[change.path[i]], change.index, change.item);\n break;\n case 'D':\n // Item was deleted...\n it[change.path[i]] = change.lhs;\n break;\n case 'E':\n // Item was edited...\n it[change.path[i]] = change.lhs;\n break;\n case 'N':\n // Item is new...\n delete it[change.path[i]];\n break;\n }\n }\n }\n\n function applyDiff(target, source, filter) {\n if (target && source) {\n var onChange = function (change) {\n if (!filter || filter(target, source, change)) {\n applyChange(target, source, change);\n }\n };\n observableDiff(target, source, onChange);\n }\n }\n\n Object.defineProperties(accumulateDiff, {\n\n diff: {\n value: accumulateDiff,\n enumerable: true\n },\n orderIndependentDiff: {\n value: accumulateOrderIndependentDiff,\n enumerable: true\n },\n observableDiff: {\n value: observableDiff,\n enumerable: true\n },\n orderIndependentObservableDiff: {\n value: orderIndependentDeepDiff,\n enumerable: true\n },\n orderIndepHash: {\n value: getOrderIndependentHash,\n enumerable: true\n },\n applyDiff: {\n value: applyDiff,\n enumerable: true\n },\n applyChange: {\n value: applyChange,\n enumerable: true\n },\n revertChange: {\n value: revertChange,\n enumerable: true\n },\n isConflict: {\n value: function () {\n return typeof $conflict !== 'undefined';\n },\n enumerable: true\n }\n });\n\n // hackish...\n accumulateDiff.DeepDiff = accumulateDiff;\n // ...but works with:\n // import DeepDiff from 'deep-diff'\n // import { DeepDiff } from 'deep-diff'\n // const DeepDiff = require('deep-diff');\n // const { DeepDiff } = require('deep-diff');\n\n if (root) {\n root.DeepDiff = accumulateDiff;\n }\n\n return accumulateDiff;\n}));\n", "function ok() {\n return true;\n}\nfunction notOk() {\n return false;\n}\nfunction undef() {\n return undefined;\n}\nconst NOT_TYPED_FUNCTION = 'Argument is not a typed-function.';\n\n/**\n * @typedef {{\n * params: Param[],\n * fn: function,\n * test: function,\n * implementation: function\n * }} Signature\n *\n * @typedef {{\n * types: Type[],\n * hasAny: boolean,\n * hasConversion: boolean,\n * restParam: boolean\n * }} Param\n *\n * @typedef {{\n * name: string,\n * typeIndex: number,\n * test: function,\n * isAny: boolean,\n * conversion?: ConversionDef,\n * conversionIndex: number,\n * }} Type\n *\n * @typedef {{\n * from: string,\n * to: string,\n * convert: function (*) : *\n * }} ConversionDef\n *\n * @typedef {{\n * name: string,\n * test: function(*) : boolean,\n * isAny?: boolean\n * }} TypeDef\n */\n\n/**\n * @returns {() => function}\n */\nfunction create() {\n // data type tests\n\n /**\n * Returns true if the argument is a non-null \"plain\" object\n */\n function isPlainObject(x) {\n return typeof x === 'object' && x !== null && x.constructor === Object;\n }\n const _types = [{\n name: 'number',\n test: function (x) {\n return typeof x === 'number';\n }\n }, {\n name: 'string',\n test: function (x) {\n return typeof x === 'string';\n }\n }, {\n name: 'boolean',\n test: function (x) {\n return typeof x === 'boolean';\n }\n }, {\n name: 'Function',\n test: function (x) {\n return typeof x === 'function';\n }\n }, {\n name: 'Array',\n test: Array.isArray\n }, {\n name: 'Date',\n test: function (x) {\n return x instanceof Date;\n }\n }, {\n name: 'RegExp',\n test: function (x) {\n return x instanceof RegExp;\n }\n }, {\n name: 'Object',\n test: isPlainObject\n }, {\n name: 'null',\n test: function (x) {\n return x === null;\n }\n }, {\n name: 'undefined',\n test: function (x) {\n return x === undefined;\n }\n }];\n const anyType = {\n name: 'any',\n test: ok,\n isAny: true\n };\n\n // Data structures to track the types. As these are local variables in\n // create(), each typed universe will get its own copy, but the variables\n // will only be accessible through the (closures of the) functions supplied\n // as properties of the typed object, not directly.\n // These will be initialized in clear() below\n let typeMap; // primary store of all types\n let typeList; // Array of just type names, for the sake of ordering\n\n // And similar data structures for the type conversions:\n let nConversions = 0;\n // the actual conversions are stored on a property of the destination types\n\n // This is a temporary object, will be replaced with a function at the end\n let typed = {\n createCount: 0\n };\n\n /**\n * Takes a type name and returns the corresponding official type object\n * for that type.\n *\n * @param {string} typeName\n * @returns {TypeDef} type\n */\n function findType(typeName) {\n const type = typeMap.get(typeName);\n if (type) {\n return type;\n }\n // Remainder is error handling\n let message = 'Unknown type \"' + typeName + '\"';\n const name = typeName.toLowerCase();\n let otherName;\n for (otherName of typeList) {\n if (otherName.toLowerCase() === name) {\n message += '. Did you mean \"' + otherName + '\" ?';\n break;\n }\n }\n throw new TypeError(message);\n }\n\n /**\n * Adds an array `types` of type definitions to this typed instance.\n * Each type definition should be an object with properties:\n * 'name' - a string giving the name of the type; 'test' - function\n * returning a boolean that tests membership in the type; and optionally\n * 'isAny' - true only for the 'any' type.\n *\n * The second optional argument, `before`, gives the name of a type that\n * these types should be added before. The new types are added in the\n * order specified.\n * @param {TypeDef[]} types\n * @param {string | boolean} [beforeSpec='any'] before\n */\n function addTypes(types) {\n let beforeSpec = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'any';\n const beforeIndex = beforeSpec ? findType(beforeSpec).index : typeList.length;\n const newTypes = [];\n for (let i = 0; i < types.length; ++i) {\n if (!types[i] || typeof types[i].name !== 'string' || typeof types[i].test !== 'function') {\n throw new TypeError('Object with properties {name: string, test: function} expected');\n }\n const typeName = types[i].name;\n if (typeMap.has(typeName)) {\n throw new TypeError('Duplicate type name \"' + typeName + '\"');\n }\n newTypes.push(typeName);\n typeMap.set(typeName, {\n name: typeName,\n test: types[i].test,\n isAny: types[i].isAny,\n index: beforeIndex + i,\n conversionsTo: [] // Newly added type can't have any conversions to it\n });\n }\n // update the typeList\n const affectedTypes = typeList.slice(beforeIndex);\n typeList = typeList.slice(0, beforeIndex).concat(newTypes).concat(affectedTypes);\n // Fix the indices\n for (let i = beforeIndex + newTypes.length; i < typeList.length; ++i) {\n typeMap.get(typeList[i]).index = i;\n }\n }\n\n /**\n * Removes all types and conversions from this typed instance.\n * May cause previously constructed typed-functions to throw\n * strange errors when they are called with types that do not\n * match any of their signatures.\n */\n function clear() {\n typeMap = new Map();\n typeList = [];\n nConversions = 0;\n addTypes([anyType], false);\n }\n\n // initialize the types to the default list\n clear();\n addTypes(_types);\n\n /**\n * Removes all conversions, leaving the types alone.\n */\n function clearConversions() {\n let typeName;\n for (typeName of typeList) {\n typeMap.get(typeName).conversionsTo = [];\n }\n nConversions = 0;\n }\n\n /**\n * Find the type names that match a value.\n * @param {*} value\n * @return {string[]} Array of names of types for which\n * the type test matches the value.\n */\n function findTypeNames(value) {\n const matches = typeList.filter(name => {\n const type = typeMap.get(name);\n return !type.isAny && type.test(value);\n });\n if (matches.length) {\n return matches;\n }\n return ['any'];\n }\n\n /**\n * Check if an entity is a typed function created by any instance\n * @param {any} entity\n * @returns {boolean}\n */\n function isTypedFunction(entity) {\n return entity && typeof entity === 'function' && '_typedFunctionData' in entity;\n }\n\n /**\n * Find a specific signature from a (composed) typed function, for example:\n *\n * typed.findSignature(fn, ['number', 'string'])\n * typed.findSignature(fn, 'number, string')\n * typed.findSignature(fn, 'number,string', {exact: true})\n *\n * This function findSignature will by default return the best match to\n * the given signature, possibly employing type conversions.\n *\n * The (optional) third argument is a plain object giving options\n * controlling the signature search. Currently the only implemented\n * option is `exact`: if specified as true (default is false), only\n * exact matches will be returned (i.e. signatures for which `fn` was\n * directly defined). Note that a (possibly different) type matching\n * `any`, or one or more instances of TYPE matching `...TYPE` are\n * considered exact matches in this regard, as no conversions are used.\n *\n * This function returns a \"signature\" object, as does `typed.resolve()`,\n * which is a plain object with four keys: `params` (the array of parameters\n * for this signature), `fn` (the originally supplied function for this\n * signature), `test` (a generated function that determines if an argument\n * list matches this signature, and `implementation` (the function to call\n * on a matching argument list, that performs conversions if necessary and\n * then calls the originally supplied function).\n *\n * @param {Function} fn A typed-function\n * @param {string | string[]} signature\n * Signature to be found, can be an array or a comma separated string.\n * @param {object} options Controls the signature search as documented\n * @return {{ params: Param[], fn: function, test: function, implementation: function }}\n * Returns the matching signature, or throws an error when no signature\n * is found.\n */\n function findSignature(fn, signature, options) {\n if (!isTypedFunction(fn)) {\n throw new TypeError(NOT_TYPED_FUNCTION);\n }\n\n // Canonicalize input\n const exact = options && options.exact;\n const stringSignature = Array.isArray(signature) ? signature.join(',') : signature;\n const params = parseSignature(stringSignature);\n const canonicalSignature = stringifyParams(params);\n\n // First hope we get lucky and exactly match a signature\n if (!exact || canonicalSignature in fn.signatures) {\n // OK, we can check the internal signatures\n const match = fn._typedFunctionData.signatureMap.get(canonicalSignature);\n if (match) {\n return match;\n }\n }\n\n // Oh well, we did not; so we have to go back and check the parameters\n // one by one, in order to catch things like `any` and rest params.\n // Note here we can assume there is at least one parameter, because\n // the empty signature would have matched successfully above.\n const nParams = params.length;\n let remainingSignatures;\n if (exact) {\n remainingSignatures = [];\n let name;\n for (name in fn.signatures) {\n remainingSignatures.push(fn._typedFunctionData.signatureMap.get(name));\n }\n } else {\n remainingSignatures = fn._typedFunctionData.signatures;\n }\n for (let i = 0; i < nParams; ++i) {\n const want = params[i];\n const filteredSignatures = [];\n let possibility;\n for (possibility of remainingSignatures) {\n const have = getParamAtIndex(possibility.params, i);\n if (!have || want.restParam && !have.restParam) {\n continue;\n }\n if (!have.hasAny) {\n // have to check all of the wanted types are available\n const haveTypes = paramTypeSet(have);\n if (want.types.some(wtype => !haveTypes.has(wtype.name))) {\n continue;\n }\n }\n // OK, this looks good\n filteredSignatures.push(possibility);\n }\n remainingSignatures = filteredSignatures;\n if (remainingSignatures.length === 0) break;\n }\n // Return the first remaining signature that was totally matched:\n let candidate;\n for (candidate of remainingSignatures) {\n if (candidate.params.length <= nParams) {\n return candidate;\n }\n }\n throw new TypeError('Signature not found (signature: ' + (fn.name || 'unnamed') + '(' + stringifyParams(params, ', ') + '))');\n }\n\n /**\n * Find the proper function to call for a specific signature from\n * a (composed) typed function, for example:\n *\n * typed.find(fn, ['number', 'string'])\n * typed.find(fn, 'number, string')\n * typed.find(fn, 'number,string', {exact: true})\n *\n * This function find will by default return the best match to\n * the given signature, possibly employing type conversions (and returning\n * a function that will perform those conversions as needed). The\n * (optional) third argument is a plain object giving options contolling\n * the signature search. Currently only the option `exact` is implemented,\n * which defaults to \"false\". If `exact` is specified as true, then only\n * exact matches will be returned (i.e. signatures for which `fn` was\n * directly defined). Uses of `any` and `...TYPE` are considered exact if\n * no conversions are necessary to apply the corresponding function.\n *\n * @param {Function} fn A typed-function\n * @param {string | string[]} signature\n * Signature to be found, can be an array or a comma separated string.\n * @param {object} options Controls the signature match as documented\n * @return {function}\n * Returns the function to call for the given signature, or throws an\n * error if no match is found.\n */\n function find(fn, signature, options) {\n return findSignature(fn, signature, options).implementation;\n }\n\n /**\n * Convert a given value to another data type, specified by type name.\n *\n * @param {*} value\n * @param {string} typeName\n */\n function convert(value, typeName) {\n // check conversion is needed\n const type = findType(typeName);\n if (type.test(value)) {\n return value;\n }\n const conversions = type.conversionsTo;\n if (conversions.length === 0) {\n throw new Error('There are no conversions to ' + typeName + ' defined.');\n }\n for (let i = 0; i < conversions.length; i++) {\n const fromType = findType(conversions[i].from);\n if (fromType.test(value)) {\n return conversions[i].convert(value);\n }\n }\n throw new Error('Cannot convert ' + value + ' to ' + typeName);\n }\n\n /**\n * Stringify parameters in a normalized way\n * @param {Param[]} params\n * @param {string} [','] separator\n * @return {string}\n */\n function stringifyParams(params) {\n let separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ',';\n return params.map(p => p.name).join(separator);\n }\n\n /**\n * Parse a parameter, like \"...number | boolean\"\n * @param {string} param\n * @return {Param} param\n */\n function parseParam(param) {\n const restParam = param.indexOf('...') === 0;\n const types = !restParam ? param : param.length > 3 ? param.slice(3) : 'any';\n const typeDefs = types.split('|').map(s => findType(s.trim()));\n let hasAny = false;\n let paramName = restParam ? '...' : '';\n const exactTypes = typeDefs.map(function (type) {\n hasAny = type.isAny || hasAny;\n paramName += type.name + '|';\n return {\n name: type.name,\n typeIndex: type.index,\n test: type.test,\n isAny: type.isAny,\n conversion: null,\n conversionIndex: -1\n };\n });\n return {\n types: exactTypes,\n name: paramName.slice(0, -1),\n // remove trailing '|' from above\n hasAny,\n hasConversion: false,\n restParam\n };\n }\n\n /**\n * Expands a parsed parameter with the types available from currently\n * defined conversions.\n * @param {Param} param\n * @return {Param} param\n */\n function expandParam(param) {\n const typeNames = param.types.map(t => t.name);\n const matchingConversions = availableConversions(typeNames);\n let hasAny = param.hasAny;\n let newName = param.name;\n const convertibleTypes = matchingConversions.map(function (conversion) {\n const type = findType(conversion.from);\n hasAny = type.isAny || hasAny;\n newName += '|' + conversion.from;\n return {\n name: conversion.from,\n typeIndex: type.index,\n test: type.test,\n isAny: type.isAny,\n conversion,\n conversionIndex: conversion.index\n };\n });\n return {\n types: param.types.concat(convertibleTypes),\n name: newName,\n hasAny,\n hasConversion: convertibleTypes.length > 0,\n restParam: param.restParam\n };\n }\n\n /**\n * Return the set of type names in a parameter.\n * Caches the result for efficiency\n *\n * @param {Param} param\n * @return {Set} typenames\n */\n function paramTypeSet(param) {\n if (!param.typeSet) {\n param.typeSet = new Set();\n param.types.forEach(type => param.typeSet.add(type.name));\n }\n return param.typeSet;\n }\n\n /**\n * Parse a signature with comma separated parameters,\n * like \"number | boolean, ...string\"\n *\n * @param {string} signature\n * @return {Param[]} params\n */\n function parseSignature(rawSignature) {\n const params = [];\n if (typeof rawSignature !== 'string') {\n throw new TypeError('Signatures must be strings');\n }\n const signature = rawSignature.trim();\n if (signature === '') {\n return params;\n }\n const rawParams = signature.split(',');\n for (let i = 0; i < rawParams.length; ++i) {\n const parsedParam = parseParam(rawParams[i].trim());\n if (parsedParam.restParam && i !== rawParams.length - 1) {\n throw new SyntaxError('Unexpected rest parameter \"' + rawParams[i] + '\": ' + 'only allowed for the last parameter');\n }\n // if invalid, short-circuit (all the types may have been filtered)\n if (parsedParam.types.length === 0) {\n return null;\n }\n params.push(parsedParam);\n }\n return params;\n }\n\n /**\n * Test whether a set of params contains a restParam\n * @param {Param[]} params\n * @return {boolean} Returns true when the last parameter is a restParam\n */\n function hasRestParam(params) {\n const param = last(params);\n return param ? param.restParam : false;\n }\n\n /**\n * Create a type test for a single parameter, which can have one or multiple\n * types.\n * @param {Param} param\n * @return {function(x: *) : boolean} Returns a test function\n */\n function compileTest(param) {\n if (!param || param.types.length === 0) {\n // nothing to do\n return ok;\n } else if (param.types.length === 1) {\n return findType(param.types[0].name).test;\n } else if (param.types.length === 2) {\n const test0 = findType(param.types[0].name).test;\n const test1 = findType(param.types[1].name).test;\n return function or(x) {\n return test0(x) || test1(x);\n };\n } else {\n // param.types.length > 2\n const tests = param.types.map(function (type) {\n return findType(type.name).test;\n });\n return function or(x) {\n for (let i = 0; i < tests.length; i++) {\n if (tests[i](x)) {\n return true;\n }\n }\n return false;\n };\n }\n }\n\n /**\n * Create a test for all parameters of a signature\n * @param {Param[]} params\n * @return {function(args: Array<*>) : boolean}\n */\n function compileTests(params) {\n let tests, test0, test1;\n if (hasRestParam(params)) {\n // variable arguments like '...number'\n tests = initial(params).map(compileTest);\n const varIndex = tests.length;\n const lastTest = compileTest(last(params));\n const testRestParam = function (args) {\n for (let i = varIndex; i < args.length; i++) {\n if (!lastTest(args[i])) {\n return false;\n }\n }\n return true;\n };\n return function testArgs(args) {\n for (let i = 0; i < tests.length; i++) {\n if (!tests[i](args[i])) {\n return false;\n }\n }\n return testRestParam(args) && args.length >= varIndex + 1;\n };\n } else {\n // no variable arguments\n if (params.length === 0) {\n return function testArgs(args) {\n return args.length === 0;\n };\n } else if (params.length === 1) {\n test0 = compileTest(params[0]);\n return function testArgs(args) {\n return test0(args[0]) && args.length === 1;\n };\n } else if (params.length === 2) {\n test0 = compileTest(params[0]);\n test1 = compileTest(params[1]);\n return function testArgs(args) {\n return test0(args[0]) && test1(args[1]) && args.length === 2;\n };\n } else {\n // arguments.length > 2\n tests = params.map(compileTest);\n return function testArgs(args) {\n for (let i = 0; i < tests.length; i++) {\n if (!tests[i](args[i])) {\n return false;\n }\n }\n return args.length === tests.length;\n };\n }\n }\n }\n\n /**\n * Find the parameter at a specific index of a Params list.\n * Handles rest parameters.\n * @param {Param[]} params\n * @param {number} index\n * @return {Param | null} Returns the matching parameter when found,\n * null otherwise.\n */\n function getParamAtIndex(params, index) {\n return index < params.length ? params[index] : hasRestParam(params) ? last(params) : null;\n }\n\n /**\n * Get all type names of a parameter\n * @param {Params[]} params\n * @param {number} index\n * @return {string[]} Returns an array with type names\n */\n function getTypeSetAtIndex(params, index) {\n const param = getParamAtIndex(params, index);\n if (!param) {\n return new Set();\n }\n return paramTypeSet(param);\n }\n\n /**\n * Test whether a type is an exact type or conversion\n * @param {Type} type\n * @return {boolean} Returns true when\n */\n function isExactType(type) {\n return type.conversion === null || type.conversion === undefined;\n }\n\n /**\n * Helper function for creating error messages: create an array with\n * all available types on a specific argument index.\n * @param {Signature[]} signatures\n * @param {number} index\n * @return {string[]} Returns an array with available types\n */\n function mergeExpectedParams(signatures, index) {\n const typeSet = new Set();\n signatures.forEach(signature => {\n const paramSet = getTypeSetAtIndex(signature.params, index);\n let name;\n for (name of paramSet) {\n typeSet.add(name);\n }\n });\n return typeSet.has('any') ? ['any'] : Array.from(typeSet);\n }\n\n /**\n * Create\n * @param {string} name The name of the function\n * @param {array.<*>} args The actual arguments passed to the function\n * @param {Signature[]} signatures A list with available signatures\n * @return {TypeError} Returns a type error with additional data\n * attached to it in the property `data`\n */\n function createError(name, args, signatures) {\n let err, expected;\n const _name = name || 'unnamed';\n\n // test for wrong type at some index\n let matchingSignatures = signatures;\n let index;\n for (index = 0; index < args.length; index++) {\n const nextMatchingDefs = [];\n matchingSignatures.forEach(signature => {\n const param = getParamAtIndex(signature.params, index);\n const test = compileTest(param);\n if ((index < signature.params.length || hasRestParam(signature.params)) && test(args[index])) {\n nextMatchingDefs.push(signature);\n }\n });\n if (nextMatchingDefs.length === 0) {\n // no matching signatures anymore, throw error \"wrong type\"\n expected = mergeExpectedParams(matchingSignatures, index);\n if (expected.length > 0) {\n const actualTypes = findTypeNames(args[index]);\n err = new TypeError('Unexpected type of argument in function ' + _name + ' (expected: ' + expected.join(' or ') + ', actual: ' + actualTypes.join(' | ') + ', index: ' + index + ')');\n err.data = {\n category: 'wrongType',\n fn: _name,\n index,\n actual: actualTypes,\n expected\n };\n return err;\n }\n } else {\n matchingSignatures = nextMatchingDefs;\n }\n }\n\n // test for too few arguments\n const lengths = matchingSignatures.map(function (signature) {\n return hasRestParam(signature.params) ? Infinity : signature.params.length;\n });\n if (args.length < Math.min.apply(null, lengths)) {\n expected = mergeExpectedParams(matchingSignatures, index);\n err = new TypeError('Too few arguments in function ' + _name + ' (expected: ' + expected.join(' or ') + ', index: ' + args.length + ')');\n err.data = {\n category: 'tooFewArgs',\n fn: _name,\n index: args.length,\n expected\n };\n return err;\n }\n\n // test for too many arguments\n const maxLength = Math.max.apply(null, lengths);\n if (args.length > maxLength) {\n err = new TypeError('Too many arguments in function ' + _name + ' (expected: ' + maxLength + ', actual: ' + args.length + ')');\n err.data = {\n category: 'tooManyArgs',\n fn: _name,\n index: args.length,\n expectedLength: maxLength\n };\n return err;\n }\n\n // Generic error\n const argTypes = [];\n for (let i = 0; i < args.length; ++i) {\n argTypes.push(findTypeNames(args[i]).join('|'));\n }\n err = new TypeError('Arguments of type \"' + argTypes.join(', ') + '\" do not match any of the defined signatures of function ' + _name + '.');\n err.data = {\n category: 'mismatch',\n actual: argTypes\n };\n return err;\n }\n\n /**\n * Find the lowest index of all exact types of a parameter (no conversions)\n * @param {Param} param\n * @return {number} Returns the index of the lowest type in typed.types\n */\n function getLowestTypeIndex(param) {\n let min = typeList.length + 1;\n for (let i = 0; i < param.types.length; i++) {\n if (isExactType(param.types[i])) {\n min = Math.min(min, param.types[i].typeIndex);\n }\n }\n return min;\n }\n\n /**\n * Find the lowest index of the conversion of all types of the parameter\n * having a conversion\n * @param {Param} param\n * @return {number} Returns the lowest index of the conversions of this type\n */\n function getLowestConversionIndex(param) {\n let min = nConversions + 1;\n for (let i = 0; i < param.types.length; i++) {\n if (!isExactType(param.types[i])) {\n min = Math.min(min, param.types[i].conversionIndex);\n }\n }\n return min;\n }\n\n /**\n * Compare two params\n * @param {Param} param1\n * @param {Param} param2\n * @return {number} returns -1 when param1 must get a lower\n * index than param2, 1 when the opposite,\n * or zero when both are equal\n */\n function compareParams(param1, param2) {\n // We compare a number of metrics on a param in turn:\n // 1) 'any' parameters are the least preferred\n if (param1.hasAny) {\n if (!param2.hasAny) {\n return 1;\n }\n } else if (param2.hasAny) {\n return -1;\n }\n\n // 2) Prefer non-rest to rest parameters\n if (param1.restParam) {\n if (!param2.restParam) {\n return 1;\n }\n } else if (param2.restParam) {\n return -1;\n }\n\n // 3) Prefer exact type match to conversions\n if (param1.hasConversion) {\n if (!param2.hasConversion) {\n return 1;\n }\n } else if (param2.hasConversion) {\n return -1;\n }\n\n // 4) Prefer lower type index:\n const typeDiff = getLowestTypeIndex(param1) - getLowestTypeIndex(param2);\n if (typeDiff < 0) {\n return -1;\n }\n if (typeDiff > 0) {\n return 1;\n }\n\n // 5) Prefer lower conversion index\n const convDiff = getLowestConversionIndex(param1) - getLowestConversionIndex(param2);\n if (convDiff < 0) {\n return -1;\n }\n if (convDiff > 0) {\n return 1;\n }\n\n // Don't have a basis for preference\n return 0;\n }\n\n /**\n * Compare two signatures\n * @param {Signature} signature1\n * @param {Signature} signature2\n * @return {number} returns a negative number when param1 must get a lower\n * index than param2, a positive number when the opposite,\n * or zero when both are equal\n */\n function compareSignatures(signature1, signature2) {\n const pars1 = signature1.params;\n const pars2 = signature2.params;\n const last1 = last(pars1);\n const last2 = last(pars2);\n const hasRest1 = hasRestParam(pars1);\n const hasRest2 = hasRestParam(pars2);\n // We compare a number of metrics on signatures in turn:\n // 1) An \"any rest param\" is least preferred\n if (hasRest1 && last1.hasAny) {\n if (!hasRest2 || !last2.hasAny) {\n return 1;\n }\n } else if (hasRest2 && last2.hasAny) {\n return -1;\n }\n\n // 2) Minimize the number of 'any' parameters\n let any1 = 0;\n let conv1 = 0;\n let par;\n for (par of pars1) {\n if (par.hasAny) ++any1;\n if (par.hasConversion) ++conv1;\n }\n let any2 = 0;\n let conv2 = 0;\n for (par of pars2) {\n if (par.hasAny) ++any2;\n if (par.hasConversion) ++conv2;\n }\n if (any1 !== any2) {\n return any1 - any2;\n }\n\n // 3) A conversion rest param is less preferred\n if (hasRest1 && last1.hasConversion) {\n if (!hasRest2 || !last2.hasConversion) {\n return 1;\n }\n } else if (hasRest2 && last2.hasConversion) {\n return -1;\n }\n\n // 4) Minimize the number of conversions\n if (conv1 !== conv2) {\n return conv1 - conv2;\n }\n\n // 5) Prefer no rest param\n if (hasRest1) {\n if (!hasRest2) {\n return 1;\n }\n } else if (hasRest2) {\n return -1;\n }\n\n // 6) Prefer shorter with rest param, longer without\n const lengthCriterion = (pars1.length - pars2.length) * (hasRest1 ? -1 : 1);\n if (lengthCriterion !== 0) {\n return lengthCriterion;\n }\n\n // Signatures are identical in each of the above metrics.\n // In particular, they are the same length.\n // We can therefore compare the parameters one by one.\n // First we count which signature has more preferred parameters.\n const comparisons = [];\n let tc = 0;\n for (let i = 0; i < pars1.length; ++i) {\n const thisComparison = compareParams(pars1[i], pars2[i]);\n comparisons.push(thisComparison);\n tc += thisComparison;\n }\n if (tc !== 0) {\n return tc;\n }\n\n // They have the same number of preferred parameters, so go by the\n // earliest parameter in which we have a preference.\n // In other words, dispatch is driven somewhat more by earlier\n // parameters than later ones.\n let c;\n for (c of comparisons) {\n if (c !== 0) {\n return c;\n }\n }\n\n // It's a tossup:\n return 0;\n }\n\n /**\n * Produce a list of all conversions from distinct types to one of\n * the given types.\n *\n * @param {string[]} typeNames\n * @return {ConversionDef[]} Returns the conversions that are available\n * resulting in any given type (if any)\n */\n function availableConversions(typeNames) {\n if (typeNames.length === 0) {\n return [];\n }\n const types = typeNames.map(findType);\n if (typeNames.length > 1) {\n types.sort((t1, t2) => t1.index - t2.index);\n }\n let matches = types[0].conversionsTo;\n if (typeNames.length === 1) {\n return matches;\n }\n matches = matches.concat([]); // shallow copy the matches\n // Since the types are now in index order, we just want the first\n // occurrence of any from type:\n const knownTypes = new Set(typeNames);\n for (let i = 1; i < types.length; ++i) {\n let newMatch;\n for (newMatch of types[i].conversionsTo) {\n if (!knownTypes.has(newMatch.from)) {\n matches.push(newMatch);\n knownTypes.add(newMatch.from);\n }\n }\n }\n return matches;\n }\n\n /**\n * Preprocess arguments before calling the original function:\n * - if needed convert the parameters\n * - in case of rest parameters, move the rest parameters into an Array\n * @param {Param[]} params\n * @param {function} fn\n * @return {function} Returns a wrapped function\n */\n function compileArgsPreprocessing(params, fn) {\n let fnConvert = fn;\n\n // TODO: can we make this wrapper function smarter/simpler?\n\n if (params.some(p => p.hasConversion)) {\n const restParam = hasRestParam(params);\n const compiledConversions = params.map(compileArgConversion);\n fnConvert = function convertArgs() {\n const args = [];\n const last = restParam ? arguments.length - 1 : arguments.length;\n for (let i = 0; i < last; i++) {\n args[i] = compiledConversions[i](arguments[i]);\n }\n if (restParam) {\n args[last] = arguments[last].map(compiledConversions[last]);\n }\n return fn.apply(this, args);\n };\n }\n let fnPreprocess = fnConvert;\n if (hasRestParam(params)) {\n const offset = params.length - 1;\n fnPreprocess = function preprocessRestParams() {\n return fnConvert.apply(this, slice(arguments, 0, offset).concat([slice(arguments, offset)]));\n };\n }\n return fnPreprocess;\n }\n\n /**\n * Compile conversion for a parameter to the right type\n * @param {Param} param\n * @return {function} Returns the wrapped function that will convert arguments\n *\n */\n function compileArgConversion(param) {\n let test0, test1, conversion0, conversion1;\n const tests = [];\n const conversions = [];\n param.types.forEach(function (type) {\n if (type.conversion) {\n tests.push(findType(type.conversion.from).test);\n conversions.push(type.conversion.convert);\n }\n });\n\n // create optimized conversion functions depending on the number of conversions\n switch (conversions.length) {\n case 0:\n return function convertArg(arg) {\n return arg;\n };\n case 1:\n test0 = tests[0];\n conversion0 = conversions[0];\n return function convertArg(arg) {\n if (test0(arg)) {\n return conversion0(arg);\n }\n return arg;\n };\n case 2:\n test0 = tests[0];\n test1 = tests[1];\n conversion0 = conversions[0];\n conversion1 = conversions[1];\n return function convertArg(arg) {\n if (test0(arg)) {\n return conversion0(arg);\n }\n if (test1(arg)) {\n return conversion1(arg);\n }\n return arg;\n };\n default:\n return function convertArg(arg) {\n for (let i = 0; i < conversions.length; i++) {\n if (tests[i](arg)) {\n return conversions[i](arg);\n }\n }\n return arg;\n };\n }\n }\n\n /**\n * Split params with union types in to separate params.\n *\n * For example:\n *\n * splitParams([['Array', 'Object'], ['string', 'RegExp'])\n * // returns:\n * // [\n * // ['Array', 'string'],\n * // ['Array', 'RegExp'],\n * // ['Object', 'string'],\n * // ['Object', 'RegExp']\n * // ]\n *\n * @param {Param[]} params\n * @return {Param[]}\n */\n function splitParams(params) {\n function _splitParams(params, index, paramsSoFar) {\n if (index < params.length) {\n const param = params[index];\n let resultingParams = [];\n if (param.restParam) {\n // split the types of a rest parameter in two:\n // one with only exact types, and one with exact types and conversions\n const exactTypes = param.types.filter(isExactType);\n if (exactTypes.length < param.types.length) {\n resultingParams.push({\n types: exactTypes,\n name: '...' + exactTypes.map(t => t.name).join('|'),\n hasAny: exactTypes.some(t => t.isAny),\n hasConversion: false,\n restParam: true\n });\n }\n resultingParams.push(param);\n } else {\n // split all the types of a regular parameter into one type per param\n resultingParams = param.types.map(function (type) {\n return {\n types: [type],\n name: type.name,\n hasAny: type.isAny,\n hasConversion: type.conversion,\n restParam: false\n };\n });\n }\n\n // recurse over the groups with types\n return flatMap(resultingParams, function (nextParam) {\n return _splitParams(params, index + 1, paramsSoFar.concat([nextParam]));\n });\n } else {\n // we've reached the end of the parameters.\n return [paramsSoFar];\n }\n }\n return _splitParams(params, 0, []);\n }\n\n /**\n * Test whether two param lists represent conflicting signatures\n * @param {Param[]} params1\n * @param {Param[]} params2\n * @return {boolean} Returns true when the signatures conflict, false otherwise.\n */\n function conflicting(params1, params2) {\n const ii = Math.max(params1.length, params2.length);\n for (let i = 0; i < ii; i++) {\n const typeSet1 = getTypeSetAtIndex(params1, i);\n const typeSet2 = getTypeSetAtIndex(params2, i);\n let overlap = false;\n let name;\n for (name of typeSet2) {\n if (typeSet1.has(name)) {\n overlap = true;\n break;\n }\n }\n if (!overlap) {\n return false;\n }\n }\n const len1 = params1.length;\n const len2 = params2.length;\n const restParam1 = hasRestParam(params1);\n const restParam2 = hasRestParam(params2);\n return restParam1 ? restParam2 ? len1 === len2 : len2 >= len1 : restParam2 ? len1 >= len2 : len1 === len2;\n }\n\n /**\n * Helper function for `resolveReferences` that returns a copy of\n * functionList wihe any prior resolutions cleared out, in case we are\n * recycling signatures from a prior typed function construction.\n *\n * @param {Array.} functionList\n * @return {Array.}\n */\n function clearResolutions(functionList) {\n return functionList.map(fn => {\n if (isReferToSelf(fn)) {\n return referToSelf(fn.referToSelf.callback);\n }\n if (isReferTo(fn)) {\n return makeReferTo(fn.referTo.references, fn.referTo.callback);\n }\n return fn;\n });\n }\n\n /**\n * Take a list of references, a list of functions functionList, and a\n * signatureMap indexing signatures into functionList, and return\n * the list of resolutions, or a false-y value if they don't all\n * resolve in a valid way (yet).\n *\n * @param {string[]} references\n * @param {Array} signatureMap\n * @return {function[] | false} resolutions\n */\n function collectResolutions(references, functionList, signatureMap) {\n const resolvedReferences = [];\n let reference;\n for (reference of references) {\n let resolution = signatureMap[reference];\n if (typeof resolution !== 'number') {\n throw new TypeError('No definition for referenced signature \"' + reference + '\"');\n }\n resolution = functionList[resolution];\n if (typeof resolution !== 'function') {\n return false;\n }\n resolvedReferences.push(resolution);\n }\n return resolvedReferences;\n }\n\n /**\n * Resolve any references in the functionList for the typed function\n * itself. The signatureMap tells which index in the functionList a\n * given signature should be mapped to (for use in resolving typed.referTo)\n * and self provides the destions of a typed.referToSelf.\n *\n * @param {Array} functionList\n * @param {Object.} signatureMap\n * @param {function} self The typed-function itself\n * @return {Array} The list of resolved functions\n */\n function resolveReferences(functionList, signatureMap, self) {\n const resolvedFunctions = clearResolutions(functionList);\n const isResolved = new Array(resolvedFunctions.length).fill(false);\n let leftUnresolved = true;\n while (leftUnresolved) {\n leftUnresolved = false;\n let nothingResolved = true;\n for (let i = 0; i < resolvedFunctions.length; ++i) {\n if (isResolved[i]) continue;\n const fn = resolvedFunctions[i];\n if (isReferToSelf(fn)) {\n resolvedFunctions[i] = fn.referToSelf.callback(self);\n // Preserve reference in case signature is reused someday:\n resolvedFunctions[i].referToSelf = fn.referToSelf;\n isResolved[i] = true;\n nothingResolved = false;\n } else if (isReferTo(fn)) {\n const resolvedReferences = collectResolutions(fn.referTo.references, resolvedFunctions, signatureMap);\n if (resolvedReferences) {\n resolvedFunctions[i] = fn.referTo.callback.apply(this, resolvedReferences);\n // Preserve reference in case signature is reused someday:\n resolvedFunctions[i].referTo = fn.referTo;\n isResolved[i] = true;\n nothingResolved = false;\n } else {\n leftUnresolved = true;\n }\n }\n }\n if (nothingResolved && leftUnresolved) {\n throw new SyntaxError('Circular reference detected in resolving typed.referTo');\n }\n }\n return resolvedFunctions;\n }\n\n /**\n * Validate whether any of the function bodies contains a self-reference\n * usage like `this(...)` or `this.signatures`. This self-referencing is\n * deprecated since typed-function v3. It has been replaced with\n * the functions typed.referTo and typed.referToSelf.\n * @param {Object.} signaturesMap\n */\n function validateDeprecatedThis(signaturesMap) {\n // TODO: remove this deprecation warning logic some day (it's introduced in v3)\n\n // match occurrences like 'this(' and 'this.signatures'\n const deprecatedThisRegex = /\\bthis(\\(|\\.signatures\\b)/;\n Object.keys(signaturesMap).forEach(signature => {\n const fn = signaturesMap[signature];\n if (deprecatedThisRegex.test(fn.toString())) {\n throw new SyntaxError('Using `this` to self-reference a function ' + 'is deprecated since typed-function@3. ' + 'Use typed.referTo and typed.referToSelf instead.');\n }\n });\n }\n\n /**\n * Create a typed function\n * @param {String} name The name for the typed function\n * @param {Object.} rawSignaturesMap\n * An object with one or\n * multiple signatures as key, and the\n * function corresponding to the\n * signature as value.\n * @return {function} Returns the created typed function.\n */\n function createTypedFunction(name, rawSignaturesMap) {\n typed.createCount++;\n if (Object.keys(rawSignaturesMap).length === 0) {\n throw new SyntaxError('No signatures provided');\n }\n if (typed.warnAgainstDeprecatedThis) {\n validateDeprecatedThis(rawSignaturesMap);\n }\n\n // Main processing loop for signatures\n const parsedParams = [];\n const originalFunctions = [];\n const signaturesMap = {};\n const preliminarySignatures = []; // may have duplicates from conversions\n let signature;\n for (signature in rawSignaturesMap) {\n // A) Protect against polluted Object prototype:\n if (!Object.prototype.hasOwnProperty.call(rawSignaturesMap, signature)) {\n continue;\n }\n // B) Parse the signature\n const params = parseSignature(signature);\n if (!params) continue;\n // C) Check for conflicts\n parsedParams.forEach(function (pp) {\n if (conflicting(pp, params)) {\n throw new TypeError('Conflicting signatures \"' + stringifyParams(pp) + '\" and \"' + stringifyParams(params) + '\".');\n }\n });\n parsedParams.push(params);\n // D) Store the provided function and add conversions\n const functionIndex = originalFunctions.length;\n originalFunctions.push(rawSignaturesMap[signature]);\n const conversionParams = params.map(expandParam);\n // E) Split the signatures and collect them up\n let sp;\n for (sp of splitParams(conversionParams)) {\n const spName = stringifyParams(sp);\n preliminarySignatures.push({\n params: sp,\n name: spName,\n fn: functionIndex\n });\n if (sp.every(p => !p.hasConversion)) {\n signaturesMap[spName] = functionIndex;\n }\n }\n }\n preliminarySignatures.sort(compareSignatures);\n\n // Note the forward reference to theTypedFn\n const resolvedFunctions = resolveReferences(originalFunctions, signaturesMap, theTypedFn);\n\n // Fill in the proper function for each signature\n let s;\n for (s in signaturesMap) {\n if (Object.prototype.hasOwnProperty.call(signaturesMap, s)) {\n signaturesMap[s] = resolvedFunctions[signaturesMap[s]];\n }\n }\n const signatures = [];\n const internalSignatureMap = new Map(); // benchmarks faster than object\n for (s of preliminarySignatures) {\n // Note it's only safe to eliminate duplicates like this\n // _after_ the signature sorting step above; otherwise we might\n // remove the wrong one.\n if (!internalSignatureMap.has(s.name)) {\n s.fn = resolvedFunctions[s.fn];\n signatures.push(s);\n internalSignatureMap.set(s.name, s);\n }\n }\n\n // we create a highly optimized checks for the first couple of signatures with max 2 arguments\n const ok0 = signatures[0] && signatures[0].params.length <= 2 && !hasRestParam(signatures[0].params);\n const ok1 = signatures[1] && signatures[1].params.length <= 2 && !hasRestParam(signatures[1].params);\n const ok2 = signatures[2] && signatures[2].params.length <= 2 && !hasRestParam(signatures[2].params);\n const ok3 = signatures[3] && signatures[3].params.length <= 2 && !hasRestParam(signatures[3].params);\n const ok4 = signatures[4] && signatures[4].params.length <= 2 && !hasRestParam(signatures[4].params);\n const ok5 = signatures[5] && signatures[5].params.length <= 2 && !hasRestParam(signatures[5].params);\n const allOk = ok0 && ok1 && ok2 && ok3 && ok4 && ok5;\n\n // compile the tests\n for (let i = 0; i < signatures.length; ++i) {\n signatures[i].test = compileTests(signatures[i].params);\n }\n const test00 = ok0 ? compileTest(signatures[0].params[0]) : notOk;\n const test10 = ok1 ? compileTest(signatures[1].params[0]) : notOk;\n const test20 = ok2 ? compileTest(signatures[2].params[0]) : notOk;\n const test30 = ok3 ? compileTest(signatures[3].params[0]) : notOk;\n const test40 = ok4 ? compileTest(signatures[4].params[0]) : notOk;\n const test50 = ok5 ? compileTest(signatures[5].params[0]) : notOk;\n const test01 = ok0 ? compileTest(signatures[0].params[1]) : notOk;\n const test11 = ok1 ? compileTest(signatures[1].params[1]) : notOk;\n const test21 = ok2 ? compileTest(signatures[2].params[1]) : notOk;\n const test31 = ok3 ? compileTest(signatures[3].params[1]) : notOk;\n const test41 = ok4 ? compileTest(signatures[4].params[1]) : notOk;\n const test51 = ok5 ? compileTest(signatures[5].params[1]) : notOk;\n\n // compile the functions\n for (let i = 0; i < signatures.length; ++i) {\n signatures[i].implementation = compileArgsPreprocessing(signatures[i].params, signatures[i].fn);\n }\n const fn0 = ok0 ? signatures[0].implementation : undef;\n const fn1 = ok1 ? signatures[1].implementation : undef;\n const fn2 = ok2 ? signatures[2].implementation : undef;\n const fn3 = ok3 ? signatures[3].implementation : undef;\n const fn4 = ok4 ? signatures[4].implementation : undef;\n const fn5 = ok5 ? signatures[5].implementation : undef;\n const len0 = ok0 ? signatures[0].params.length : -1;\n const len1 = ok1 ? signatures[1].params.length : -1;\n const len2 = ok2 ? signatures[2].params.length : -1;\n const len3 = ok3 ? signatures[3].params.length : -1;\n const len4 = ok4 ? signatures[4].params.length : -1;\n const len5 = ok5 ? signatures[5].params.length : -1;\n\n // simple and generic, but also slow\n const iStart = allOk ? 6 : 0;\n const iEnd = signatures.length;\n // de-reference ahead for execution speed:\n const tests = signatures.map(s => s.test);\n const fns = signatures.map(s => s.implementation);\n const generic = function generic() {\n 'use strict';\n\n for (let i = iStart; i < iEnd; i++) {\n if (tests[i](arguments)) {\n return fns[i].apply(this, arguments);\n }\n }\n return typed.onMismatch(name, arguments, signatures);\n };\n\n // create the typed function\n // fast, specialized version. Falls back to the slower, generic one if needed\n function theTypedFn(arg0, arg1) {\n 'use strict';\n\n if (arguments.length === len0 && test00(arg0) && test01(arg1)) {\n return fn0.apply(this, arguments);\n }\n if (arguments.length === len1 && test10(arg0) && test11(arg1)) {\n return fn1.apply(this, arguments);\n }\n if (arguments.length === len2 && test20(arg0) && test21(arg1)) {\n return fn2.apply(this, arguments);\n }\n if (arguments.length === len3 && test30(arg0) && test31(arg1)) {\n return fn3.apply(this, arguments);\n }\n if (arguments.length === len4 && test40(arg0) && test41(arg1)) {\n return fn4.apply(this, arguments);\n }\n if (arguments.length === len5 && test50(arg0) && test51(arg1)) {\n return fn5.apply(this, arguments);\n }\n return generic.apply(this, arguments);\n }\n\n // attach name the typed function\n try {\n Object.defineProperty(theTypedFn, 'name', {\n value: name\n });\n } catch (err) {\n // old browsers do not support Object.defineProperty and some don't support setting the name property\n // the function name is not essential for the functioning, it's mostly useful for debugging,\n // so it's fine to have unnamed functions.\n }\n\n // attach signatures to the function.\n // This property is close to the original collection of signatures\n // used to create the typed-function, just with unions split:\n theTypedFn.signatures = signaturesMap;\n\n // Store internal data for functions like resolve, find, etc.\n // Also serves as the flag that this is a typed-function\n theTypedFn._typedFunctionData = {\n signatures,\n signatureMap: internalSignatureMap\n };\n return theTypedFn;\n }\n\n /**\n * Action to take on mismatch\n * @param {string} name Name of function that was attempted to be called\n * @param {Array} args Actual arguments to the call\n * @param {Array} signatures Known signatures of the named typed-function\n */\n function _onMismatch(name, args, signatures) {\n throw createError(name, args, signatures);\n }\n\n /**\n * Return all but the last items of an array or function Arguments\n * @param {Array | Arguments} arr\n * @return {Array}\n */\n function initial(arr) {\n return slice(arr, 0, arr.length - 1);\n }\n\n /**\n * return the last item of an array or function Arguments\n * @param {Array | Arguments} arr\n * @return {*}\n */\n function last(arr) {\n return arr[arr.length - 1];\n }\n\n /**\n * Slice an array or function Arguments\n * @param {Array | Arguments | IArguments} arr\n * @param {number} start\n * @param {number} [end]\n * @return {Array}\n */\n function slice(arr, start, end) {\n return Array.prototype.slice.call(arr, start, end);\n }\n\n /**\n * Return the first item from an array for which test(arr[i]) returns true\n * @param {Array} arr\n * @param {function} test\n * @return {* | undefined} Returns the first matching item\n * or undefined when there is no match\n */\n function findInArray(arr, test) {\n for (let i = 0; i < arr.length; i++) {\n if (test(arr[i])) {\n return arr[i];\n }\n }\n return undefined;\n }\n\n /**\n * Flat map the result invoking a callback for every item in an array.\n * https://gist.github.com/samgiles/762ee337dff48623e729\n * @param {Array} arr\n * @param {function} callback\n * @return {Array}\n */\n function flatMap(arr, callback) {\n return Array.prototype.concat.apply([], arr.map(callback));\n }\n\n /**\n * Create a reference callback to one or multiple signatures\n *\n * Syntax:\n *\n * typed.referTo(signature1, signature2, ..., function callback(fn1, fn2, ...) {\n * // ...\n * })\n *\n * @returns {{referTo: {references: string[], callback}}}\n */\n function referTo() {\n const references = initial(arguments).map(s => stringifyParams(parseSignature(s)));\n const callback = last(arguments);\n if (typeof callback !== 'function') {\n throw new TypeError('Callback function expected as last argument');\n }\n return makeReferTo(references, callback);\n }\n function makeReferTo(references, callback) {\n return {\n referTo: {\n references,\n callback\n }\n };\n }\n\n /**\n * Create a reference callback to the typed-function itself\n *\n * @param {(self: function) => function} callback\n * @returns {{referToSelf: { callback: function }}}\n */\n function referToSelf(callback) {\n if (typeof callback !== 'function') {\n throw new TypeError('Callback function expected as first argument');\n }\n return {\n referToSelf: {\n callback\n }\n };\n }\n\n /**\n * Test whether something is a referTo object, holding a list with reference\n * signatures and a callback.\n *\n * @param {Object | function} objectOrFn\n * @returns {boolean}\n */\n function isReferTo(objectOrFn) {\n return objectOrFn && typeof objectOrFn.referTo === 'object' && Array.isArray(objectOrFn.referTo.references) && typeof objectOrFn.referTo.callback === 'function';\n }\n\n /**\n * Test whether something is a referToSelf object, holding a callback where\n * to pass `self`.\n *\n * @param {Object | function} objectOrFn\n * @returns {boolean}\n */\n function isReferToSelf(objectOrFn) {\n return objectOrFn && typeof objectOrFn.referToSelf === 'object' && typeof objectOrFn.referToSelf.callback === 'function';\n }\n\n /**\n * Check if name is (A) new, (B) a match, or (C) a mismatch; and throw\n * an error in case (C).\n *\n * @param { string | undefined } nameSoFar\n * @param { string | undefined } newName\n * @returns { string } updated name\n */\n function checkName(nameSoFar, newName) {\n if (!nameSoFar) {\n return newName;\n }\n if (newName && newName !== nameSoFar) {\n const err = new Error('Function names do not match (expected: ' + nameSoFar + ', actual: ' + newName + ')');\n err.data = {\n actual: newName,\n expected: nameSoFar\n };\n throw err;\n }\n return nameSoFar;\n }\n\n /**\n * Retrieve the implied name from an object with signature keys\n * and function values, checking whether all value names match\n *\n * @param { {string: function} } obj\n */\n function getObjectName(obj) {\n let name;\n for (const key in obj) {\n // Only pay attention to own properties, and only if their values\n // are typed functions or functions with a signature property\n if (Object.prototype.hasOwnProperty.call(obj, key) && (isTypedFunction(obj[key]) || typeof obj[key].signature === 'string')) {\n name = checkName(name, obj[key].name);\n }\n }\n return name;\n }\n\n /**\n * Copy all of the signatures from the second argument into the first,\n * which is modified by side effect, checking for conflicts\n *\n * @param {Object.} dest\n * @param {Object.} source\n */\n function mergeSignatures(dest, source) {\n let key;\n for (key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (key in dest) {\n if (source[key] !== dest[key]) {\n const err = new Error('Signature \"' + key + '\" is defined twice');\n err.data = {\n signature: key,\n sourceFunction: source[key],\n destFunction: dest[key]\n };\n throw err;\n }\n // else: both signatures point to the same function, that's fine\n }\n dest[key] = source[key];\n }\n }\n }\n const saveTyped = typed;\n\n /**\n * Originally the main function was a typed function itself, but then\n * it might not be able to generate error messages if the client\n * replaced the type system with different names.\n *\n * Main entry: typed([name], functions/objects with signatures...)\n *\n * Assembles and returns a new typed-function from the given items\n * that provide signatures and implementations, each of which may be\n * * a plain object mapping (string) signatures to implementing functions,\n * * a previously constructed typed function, or\n * * any other single function with a string-valued property `signature`.\n * The name of the resulting typed-function will be given by the\n * string-valued name argument if present, or if not, by the name\n * of any of the arguments that have one, as long as any that do are\n * consistent with each other. If no name is specified, the name will be\n * an empty string.\n *\n * @param {string} maybeName [optional]\n * @param {(function|object)[]} signature providers\n * @returns {typed-function}\n */\n typed = function (maybeName) {\n const named = typeof maybeName === 'string';\n const start = named ? 1 : 0;\n let name = named ? maybeName : '';\n const allSignatures = {};\n for (let i = start; i < arguments.length; ++i) {\n const item = arguments[i];\n let theseSignatures = {};\n let thisName;\n if (typeof item === 'function') {\n thisName = item.name;\n if (typeof item.signature === 'string') {\n // Case 1: Ordinary function with a string 'signature' property\n theseSignatures[item.signature] = item;\n } else if (isTypedFunction(item)) {\n // Case 2: Existing typed function\n theseSignatures = item.signatures;\n }\n } else if (isPlainObject(item)) {\n // Case 3: Plain object, assume keys = signatures, values = functions\n theseSignatures = item;\n if (!named) {\n thisName = getObjectName(item);\n }\n }\n if (Object.keys(theseSignatures).length === 0) {\n const err = new TypeError('Argument to \\'typed\\' at index ' + i + ' is not a (typed) function, ' + 'nor an object with signatures as keys and functions as values.');\n err.data = {\n index: i,\n argument: item\n };\n throw err;\n }\n if (!named) {\n name = checkName(name, thisName);\n }\n mergeSignatures(allSignatures, theseSignatures);\n }\n return createTypedFunction(name || '', allSignatures);\n };\n typed.create = create;\n typed.createCount = saveTyped.createCount;\n typed.onMismatch = _onMismatch;\n typed.throwMismatchError = _onMismatch;\n typed.createError = createError;\n typed.clear = clear;\n typed.clearConversions = clearConversions;\n typed.addTypes = addTypes;\n typed._findType = findType; // For unit testing only\n typed.referTo = referTo;\n typed.referToSelf = referToSelf;\n typed.convert = convert;\n typed.findSignature = findSignature;\n typed.find = find;\n typed.isTypedFunction = isTypedFunction;\n typed.warnAgainstDeprecatedThis = true;\n\n /**\n * add a type (convenience wrapper for typed.addTypes)\n * @param {{name: string, test: function}} type\n * @param {boolean} [beforeObjectTest=true]\n * If true, the new test will be inserted before\n * the test with name 'Object' (if any), since\n * tests for Object match Array and classes too.\n */\n typed.addType = function (type, beforeObjectTest) {\n let before = 'any';\n if (beforeObjectTest !== false && typeMap.has('Object')) {\n before = 'Object';\n }\n typed.addTypes([type], before);\n };\n\n /**\n * Verify that the ConversionDef conversion has a valid format.\n *\n * @param {conversionDef} conversion\n * @return {void}\n * @throws {TypeError|SyntaxError}\n */\n function _validateConversion(conversion) {\n if (!conversion || typeof conversion.from !== 'string' || typeof conversion.to !== 'string' || typeof conversion.convert !== 'function') {\n throw new TypeError('Object with properties {from: string, to: string, convert: function} expected');\n }\n if (conversion.to === conversion.from) {\n throw new SyntaxError('Illegal to define conversion from \"' + conversion.from + '\" to itself.');\n }\n }\n\n /**\n * Add a conversion\n *\n * @param {ConversionDef} conversion\n * @param {{override: boolean}} [options]\n * @returns {void}\n * @throws {TypeError}\n */\n typed.addConversion = function (conversion) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n override: false\n };\n _validateConversion(conversion);\n const to = findType(conversion.to);\n const existing = to.conversionsTo.find(other => other.from === conversion.from);\n if (existing) {\n if (options && options.override) {\n typed.removeConversion({\n from: existing.from,\n to: conversion.to,\n convert: existing.convert\n });\n } else {\n throw new Error('There is already a conversion from \"' + conversion.from + '\" to \"' + to.name + '\"');\n }\n }\n to.conversionsTo.push({\n from: conversion.from,\n convert: conversion.convert,\n index: nConversions++\n });\n };\n\n /**\n * Convenience wrapper to call addConversion on each conversion in a list.\n *\n * @param {ConversionDef[]} conversions\n * @param {{override: boolean}} [options]\n * @returns {void}\n * @throws {TypeError}\n */\n typed.addConversions = function (conversions, options) {\n conversions.forEach(conversion => typed.addConversion(conversion, options));\n };\n\n /**\n * Remove the specified conversion. The format is the same as for\n * addConversion, and the convert function must match or an error\n * is thrown.\n *\n * @param {{from: string, to: string, convert: function}} conversion\n * @returns {void}\n * @throws {TypeError|SyntaxError|Error}\n */\n typed.removeConversion = function (conversion) {\n _validateConversion(conversion);\n const to = findType(conversion.to);\n const existingConversion = findInArray(to.conversionsTo, c => c.from === conversion.from);\n if (!existingConversion) {\n throw new Error('Attempt to remove nonexistent conversion from ' + conversion.from + ' to ' + conversion.to);\n }\n if (existingConversion.convert !== conversion.convert) {\n throw new Error('Conversion to remove does not match existing conversion');\n }\n const index = to.conversionsTo.indexOf(existingConversion);\n to.conversionsTo.splice(index, 1);\n };\n\n /**\n * Produce the specific signature that a typed function\n * will execute on the given arguments. Here, a \"signature\" is an\n * object with properties 'params', 'test', 'fn', and 'implementation'.\n * This last property is a function that converts params as necessary\n * and then calls 'fn'. Returns null if there is no matching signature.\n * @param {typed-function} tf\n * @param {any[]} argList\n * @returns {{params: string, test: function, fn: function, implementation: function}}\n */\n typed.resolve = function (tf, argList) {\n if (!isTypedFunction(tf)) {\n throw new TypeError(NOT_TYPED_FUNCTION);\n }\n const sigs = tf._typedFunctionData.signatures;\n for (let i = 0; i < sigs.length; ++i) {\n if (sigs[i].test(argList)) {\n return sigs[i];\n }\n }\n return null;\n };\n return typed;\n}\nexport default create();\n//# sourceMappingURL=typed-function.mjs.map", "/*\r\n * Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license\r\n * Author: Jim Palmer (based on chunking idea from Dave Koelle)\r\n */\r\n/*jshint unused:false */\r\nmodule.exports = function naturalSort (a, b) {\r\n\t\"use strict\";\r\n\tvar re = /(^([+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)?$|^0x[0-9a-f]+$|\\d+)/gi,\r\n\t\tsre = /(^[ ]*|[ ]*$)/g,\r\n\t\tdre = /(^([\\w ]+,?[\\w ]+)?[\\w ]+,?[\\w ]+\\d+:\\d+(:\\d+)?[\\w ]?|^\\d{1,4}[\\/\\-]\\d{1,4}[\\/\\-]\\d{1,4}|^\\w+, \\w+ \\d+, \\d{4})/,\r\n\t\thre = /^0x[0-9a-f]+$/i,\r\n\t\tore = /^0/,\r\n\t\ti = function(s) { return naturalSort.insensitive && ('' + s).toLowerCase() || '' + s; },\r\n\t\t// convert all to strings strip whitespace\r\n\t\tx = i(a).replace(sre, '') || '',\r\n\t\ty = i(b).replace(sre, '') || '',\r\n\t\t// chunk/tokenize\r\n\t\txN = x.replace(re, '\\0$1\\0').replace(/\\0$/,'').replace(/^\\0/,'').split('\\0'),\r\n\t\tyN = y.replace(re, '\\0$1\\0').replace(/\\0$/,'').replace(/^\\0/,'').split('\\0'),\r\n\t\t// numeric, hex or date detection\r\n\t\txD = parseInt(x.match(hre), 16) || (xN.length !== 1 && x.match(dre) && Date.parse(x)),\r\n\t\tyD = parseInt(y.match(hre), 16) || xD && y.match(dre) && Date.parse(y) || null,\r\n\t\toFxNcL, oFyNcL;\r\n\t// first try and sort Hex codes or Dates\r\n\tif (yD) {\r\n\t\tif ( xD < yD ) { return -1; }\r\n\t\telse if ( xD > yD ) { return 1; }\r\n\t}\r\n\t// natural sorting through split numeric strings and default strings\r\n\tfor(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) {\r\n\t\t// find floats not starting with '0', string or 0 if not defined (Clint Priest)\r\n\t\toFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;\r\n\t\toFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;\r\n\t\t// handle numeric vs string comparison - number < string - (Kyle Adams)\r\n\t\tif (isNaN(oFxNcL) !== isNaN(oFyNcL)) { return (isNaN(oFxNcL)) ? 1 : -1; }\r\n\t\t// rely on string comparison if different types - i.e. '02' < 2 != '02' < '2'\r\n\t\telse if (typeof oFxNcL !== typeof oFyNcL) {\r\n\t\t\toFxNcL += '';\r\n\t\t\toFyNcL += '';\r\n\t\t}\r\n\t\tif (oFxNcL < oFyNcL) { return -1; }\r\n\t\tif (oFxNcL > oFyNcL) { return 1; }\r\n\t}\r\n\treturn 0;\r\n};\r\n", "\"use strict\";\n\n// Map the characters to escape to their escaped values. The list is derived\n// from http://www.cespedes.org/blog/85/how-to-escape-latex-special-characters\n\nvar _extends = Object.assign || 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; };\n\nvar defaultEscapes = {\n \"{\": \"\\\\{\",\n \"}\": \"\\\\}\",\n \"\\\\\": \"\\\\textbackslash{}\",\n \"#\": \"\\\\#\",\n $: \"\\\\$\",\n \"%\": \"\\\\%\",\n \"&\": \"\\\\&\",\n \"^\": \"\\\\textasciicircum{}\",\n _: \"\\\\_\",\n \"~\": \"\\\\textasciitilde{}\"\n};\nvar formatEscapes = {\n \"\\u2013\": \"\\\\--\",\n \"\\u2014\": \"\\\\---\",\n \" \": \"~\",\n \"\\t\": \"\\\\qquad{}\",\n \"\\r\\n\": \"\\\\newline{}\",\n \"\\n\": \"\\\\newline{}\"\n};\n\nvar defaultEscapeMapFn = function defaultEscapeMapFn(defaultEscapes, formatEscapes) {\n return _extends({}, defaultEscapes, formatEscapes);\n};\n\n/**\n * Escape a string to be used in LaTeX documents.\n * @param {string} str the string to be escaped.\n * @param {boolean} params.preserveFormatting whether formatting escapes should\n * be performed (default: false).\n * @param {function} params.escapeMapFn the function to modify the escape maps.\n * @return {string} the escaped string, ready to be used in LaTeX.\n */\nmodule.exports = function (str) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$preserveFormatti = _ref.preserveFormatting,\n preserveFormatting = _ref$preserveFormatti === undefined ? false : _ref$preserveFormatti,\n _ref$escapeMapFn = _ref.escapeMapFn,\n escapeMapFn = _ref$escapeMapFn === undefined ? defaultEscapeMapFn : _ref$escapeMapFn;\n\n var runningStr = String(str);\n var result = \"\";\n\n var escapes = escapeMapFn(_extends({}, defaultEscapes), preserveFormatting ? _extends({}, formatEscapes) : {});\n var escapeKeys = Object.keys(escapes); // as it is reused later on\n\n // Algorithm: Go through the string character by character, if it matches\n // with one of the special characters then we'll replace it with the escaped\n // version.\n\n var _loop = function _loop() {\n var specialCharFound = false;\n escapeKeys.forEach(function (key, index) {\n if (specialCharFound) {\n return;\n }\n if (runningStr.length >= key.length && runningStr.slice(0, key.length) === key) {\n result += escapes[escapeKeys[index]];\n runningStr = runningStr.slice(key.length, runningStr.length);\n specialCharFound = true;\n }\n });\n if (!specialCharFound) {\n result += runningStr.slice(0, 1);\n runningStr = runningStr.slice(1, runningStr.length);\n }\n };\n\n while (runningStr) {\n _loop();\n }\n return result;\n};", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = String(data);\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2019 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (global, pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n\nvar width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n} else {\n // When included as a plain script, set up Math.seedrandom global.\n math['seed' + rngname] = seedrandom;\n}\n\n\n// End anonymous scope, and pass initial values.\n})(\n // global: `self` in browsers (including strict mode and web workers),\n // otherwise `this` in Node and other environments\n (typeof self !== 'undefined') ? self : this,\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "function E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n", "(function (window, factory) {\n if (typeof exports === 'object') {\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n define(factory);\n } else {\n window.jStat = factory();\n }\n})(this, function () {\nvar jStat = (function(Math, undefined) {\n\n// For quick reference.\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\nvar toString = Object.prototype.toString;\n\n// Calculate correction for IEEE error\n// TODO: This calculation can be improved.\nfunction calcRdx(n, m) {\n var val = n > m ? n : m;\n return Math.pow(10,\n 17 - ~~(Math.log(((val > 0) ? val : -val)) * Math.LOG10E));\n}\n\n\nvar isArray = Array.isArray || function isArray(arg) {\n return toString.call(arg) === '[object Array]';\n};\n\n\nfunction isFunction(arg) {\n return toString.call(arg) === '[object Function]';\n}\n\n\nfunction isNumber(num) {\n return (typeof num === 'number') ? num - num === 0 : false;\n}\n\n\n// Converts the jStat matrix to vector.\nfunction toVector(arr) {\n return concat.apply([], arr);\n}\n\n\n// The one and only jStat constructor.\nfunction jStat() {\n return new jStat._init(arguments);\n}\n\n\n// TODO: Remove after all references in src files have been removed.\njStat.fn = jStat.prototype;\n\n\n// By separating the initializer from the constructor it's easier to handle\n// always returning a new instance whether \"new\" was used or not.\njStat._init = function _init(args) {\n // If first argument is an array, must be vector or matrix.\n if (isArray(args[0])) {\n // Check if matrix.\n if (isArray(args[0][0])) {\n // See if a mapping function was also passed.\n if (isFunction(args[1]))\n args[0] = jStat.map(args[0], args[1]);\n // Iterate over each is faster than this.push.apply(this, args[0].\n for (var i = 0; i < args[0].length; i++)\n this[i] = args[0][i];\n this.length = args[0].length;\n\n // Otherwise must be a vector.\n } else {\n this[0] = isFunction(args[1]) ? jStat.map(args[0], args[1]) : args[0];\n this.length = 1;\n }\n\n // If first argument is number, assume creation of sequence.\n } else if (isNumber(args[0])) {\n this[0] = jStat.seq.apply(null, args);\n this.length = 1;\n\n // Handle case when jStat object is passed to jStat.\n } else if (args[0] instanceof jStat) {\n // Duplicate the object and pass it back.\n return jStat(args[0].toArray());\n\n // Unexpected argument value, return empty jStat object.\n // TODO: This is strange behavior. Shouldn't this throw or some such to let\n // the user know they had bad arguments?\n } else {\n this[0] = [];\n this.length = 1;\n }\n\n return this;\n};\njStat._init.prototype = jStat.prototype;\njStat._init.constructor = jStat;\n\n\n// Utility functions.\n// TODO: for internal use only?\njStat.utils = {\n calcRdx: calcRdx,\n isArray: isArray,\n isFunction: isFunction,\n isNumber: isNumber,\n toVector: toVector\n};\n\n\njStat._random_fn = Math.random;\njStat.setRandom = function setRandom(fn) {\n if (typeof fn !== 'function')\n throw new TypeError('fn is not a function');\n jStat._random_fn = fn;\n};\n\n\n// Easily extend the jStat object.\n// TODO: is this seriously necessary?\njStat.extend = function extend(obj) {\n var i, j;\n\n if (arguments.length === 1) {\n for (j in obj)\n jStat[j] = obj[j];\n return this;\n }\n\n for (i = 1; i < arguments.length; i++) {\n for (j in arguments[i])\n obj[j] = arguments[i][j];\n }\n\n return obj;\n};\n\n\n// Returns the number of rows in the matrix.\njStat.rows = function rows(arr) {\n return arr.length || 1;\n};\n\n\n// Returns the number of columns in the matrix.\njStat.cols = function cols(arr) {\n return arr[0].length || 1;\n};\n\n\n// Returns the dimensions of the object { rows: i, cols: j }\njStat.dimensions = function dimensions(arr) {\n return {\n rows: jStat.rows(arr),\n cols: jStat.cols(arr)\n };\n};\n\n\n// Returns a specified row as a vector or return a sub matrix by pick some rows\njStat.row = function row(arr, index) {\n if (isArray(index)) {\n return index.map(function(i) {\n return jStat.row(arr, i);\n })\n }\n return arr[index];\n};\n\n\n// return row as array\n// rowa([[1,2],[3,4]],0) -> [1,2]\njStat.rowa = function rowa(arr, i) {\n return jStat.row(arr, i);\n};\n\n\n// Returns the specified column as a vector or return a sub matrix by pick some\n// columns\njStat.col = function col(arr, index) {\n if (isArray(index)) {\n var submat = jStat.arange(arr.length).map(function() {\n return new Array(index.length);\n });\n index.forEach(function(ind, i){\n jStat.arange(arr.length).forEach(function(j) {\n submat[j][i] = arr[j][ind];\n });\n });\n return submat;\n }\n var column = new Array(arr.length);\n for (var i = 0; i < arr.length; i++)\n column[i] = [arr[i][index]];\n return column;\n};\n\n\n// return column as array\n// cola([[1,2],[3,4]],0) -> [1,3]\njStat.cola = function cola(arr, i) {\n return jStat.col(arr, i).map(function(a){ return a[0] });\n};\n\n\n// Returns the diagonal of the matrix\njStat.diag = function diag(arr) {\n var nrow = jStat.rows(arr);\n var res = new Array(nrow);\n for (var row = 0; row < nrow; row++)\n res[row] = [arr[row][row]];\n return res;\n};\n\n\n// Returns the anti-diagonal of the matrix\njStat.antidiag = function antidiag(arr) {\n var nrow = jStat.rows(arr) - 1;\n var res = new Array(nrow);\n for (var i = 0; nrow >= 0; nrow--, i++)\n res[i] = [arr[i][nrow]];\n return res;\n};\n\n// Transpose a matrix or array.\njStat.transpose = function transpose(arr) {\n var obj = [];\n var objArr, rows, cols, j, i;\n\n // Make sure arr is in matrix format.\n if (!isArray(arr[0]))\n arr = [arr];\n\n rows = arr.length;\n cols = arr[0].length;\n\n for (i = 0; i < cols; i++) {\n objArr = new Array(rows);\n for (j = 0; j < rows; j++)\n objArr[j] = arr[j][i];\n obj.push(objArr);\n }\n\n // If obj is vector, return only single array.\n return obj.length === 1 ? obj[0] : obj;\n};\n\n\n// Map a function to an array or array of arrays.\n// \"toAlter\" is an internal variable.\njStat.map = function map(arr, func, toAlter) {\n var row, nrow, ncol, res, col;\n\n if (!isArray(arr[0]))\n arr = [arr];\n\n nrow = arr.length;\n ncol = arr[0].length;\n res = toAlter ? arr : new Array(nrow);\n\n for (row = 0; row < nrow; row++) {\n // if the row doesn't exist, create it\n if (!res[row])\n res[row] = new Array(ncol);\n for (col = 0; col < ncol; col++)\n res[row][col] = func(arr[row][col], row, col);\n }\n\n return res.length === 1 ? res[0] : res;\n};\n\n\n// Cumulatively combine the elements of an array or array of arrays using a function.\njStat.cumreduce = function cumreduce(arr, func, toAlter) {\n var row, nrow, ncol, res, col;\n\n if (!isArray(arr[0]))\n arr = [arr];\n\n nrow = arr.length;\n ncol = arr[0].length;\n res = toAlter ? arr : new Array(nrow);\n\n for (row = 0; row < nrow; row++) {\n // if the row doesn't exist, create it\n if (!res[row])\n res[row] = new Array(ncol);\n if (ncol > 0)\n res[row][0] = arr[row][0];\n for (col = 1; col < ncol; col++)\n res[row][col] = func(res[row][col-1], arr[row][col]);\n }\n return res.length === 1 ? res[0] : res;\n};\n\n\n// Destructively alter an array.\njStat.alter = function alter(arr, func) {\n return jStat.map(arr, func, true);\n};\n\n\n// Generate a rows x cols matrix according to the supplied function.\njStat.create = function create(rows, cols, func) {\n var res = new Array(rows);\n var i, j;\n\n if (isFunction(cols)) {\n func = cols;\n cols = rows;\n }\n\n for (i = 0; i < rows; i++) {\n res[i] = new Array(cols);\n for (j = 0; j < cols; j++)\n res[i][j] = func(i, j);\n }\n\n return res;\n};\n\n\nfunction retZero() { return 0; }\n\n\n// Generate a rows x cols matrix of zeros.\njStat.zeros = function zeros(rows, cols) {\n if (!isNumber(cols))\n cols = rows;\n return jStat.create(rows, cols, retZero);\n};\n\n\nfunction retOne() { return 1; }\n\n\n// Generate a rows x cols matrix of ones.\njStat.ones = function ones(rows, cols) {\n if (!isNumber(cols))\n cols = rows;\n return jStat.create(rows, cols, retOne);\n};\n\n\n// Generate a rows x cols matrix of uniformly random numbers.\njStat.rand = function rand(rows, cols) {\n if (!isNumber(cols))\n cols = rows;\n return jStat.create(rows, cols, jStat._random_fn);\n};\n\n\nfunction retIdent(i, j) { return i === j ? 1 : 0; }\n\n\n// Generate an identity matrix of size row x cols.\njStat.identity = function identity(rows, cols) {\n if (!isNumber(cols))\n cols = rows;\n return jStat.create(rows, cols, retIdent);\n};\n\n\n// Tests whether a matrix is symmetric\njStat.symmetric = function symmetric(arr) {\n var size = arr.length;\n var row, col;\n\n if (arr.length !== arr[0].length)\n return false;\n\n for (row = 0; row < size; row++) {\n for (col = 0; col < size; col++)\n if (arr[col][row] !== arr[row][col])\n return false;\n }\n\n return true;\n};\n\n\n// Set all values to zero.\njStat.clear = function clear(arr) {\n return jStat.alter(arr, retZero);\n};\n\n\n// Generate sequence.\njStat.seq = function seq(min, max, length, func) {\n if (!isFunction(func))\n func = false;\n\n var arr = [];\n var hival = calcRdx(min, max);\n var step = (max * hival - min * hival) / ((length - 1) * hival);\n var current = min;\n var cnt;\n\n // Current is assigned using a technique to compensate for IEEE error.\n // TODO: Needs better implementation.\n for (cnt = 0;\n current <= max && cnt < length;\n cnt++, current = (min * hival + step * hival * cnt) / hival) {\n arr.push((func ? func(current, cnt) : current));\n }\n\n return arr;\n};\n\n\n// arange(5) -> [0,1,2,3,4]\n// arange(1,5) -> [1,2,3,4]\n// arange(5,1,-1) -> [5,4,3,2]\njStat.arange = function arange(start, end, step) {\n var rl = [];\n var i;\n step = step || 1;\n if (end === undefined) {\n end = start;\n start = 0;\n }\n if (start === end || step === 0) {\n return [];\n }\n if (start < end && step < 0) {\n return [];\n }\n if (start > end && step > 0) {\n return [];\n }\n if (step > 0) {\n for (i = start; i < end; i += step) {\n rl.push(i);\n }\n } else {\n for (i = start; i > end; i += step) {\n rl.push(i);\n }\n }\n return rl;\n};\n\n\n// A=[[1,2,3],[4,5,6],[7,8,9]]\n// slice(A,{row:{end:2},col:{start:1}}) -> [[2,3],[5,6]]\n// slice(A,1,{start:1}) -> [5,6]\n// as numpy code A[:2,1:]\njStat.slice = (function(){\n function _slice(list, start, end, step) {\n // note it's not equal to range.map mode it's a bug\n var i;\n var rl = [];\n var length = list.length;\n if (start === undefined && end === undefined && step === undefined) {\n return jStat.copy(list);\n }\n\n start = start || 0;\n end = end || list.length;\n start = start >= 0 ? start : length + start;\n end = end >= 0 ? end : length + end;\n step = step || 1;\n if (start === end || step === 0) {\n return [];\n }\n if (start < end && step < 0) {\n return [];\n }\n if (start > end && step > 0) {\n return [];\n }\n if (step > 0) {\n for (i = start; i < end; i += step) {\n rl.push(list[i]);\n }\n } else {\n for (i = start; i > end;i += step) {\n rl.push(list[i]);\n }\n }\n return rl;\n }\n\n function slice(list, rcSlice) {\n var colSlice, rowSlice;\n rcSlice = rcSlice || {};\n if (isNumber(rcSlice.row)) {\n if (isNumber(rcSlice.col))\n return list[rcSlice.row][rcSlice.col];\n var row = jStat.rowa(list, rcSlice.row);\n colSlice = rcSlice.col || {};\n return _slice(row, colSlice.start, colSlice.end, colSlice.step);\n }\n\n if (isNumber(rcSlice.col)) {\n var col = jStat.cola(list, rcSlice.col);\n rowSlice = rcSlice.row || {};\n return _slice(col, rowSlice.start, rowSlice.end, rowSlice.step);\n }\n\n rowSlice = rcSlice.row || {};\n colSlice = rcSlice.col || {};\n var rows = _slice(list, rowSlice.start, rowSlice.end, rowSlice.step);\n return rows.map(function(row) {\n return _slice(row, colSlice.start, colSlice.end, colSlice.step);\n });\n }\n\n return slice;\n}());\n\n\n// A=[[1,2,3],[4,5,6],[7,8,9]]\n// sliceAssign(A,{row:{start:1},col:{start:1}},[[0,0],[0,0]])\n// A=[[1,2,3],[4,0,0],[7,0,0]]\njStat.sliceAssign = function sliceAssign(A, rcSlice, B) {\n var nl, ml;\n if (isNumber(rcSlice.row)) {\n if (isNumber(rcSlice.col))\n return A[rcSlice.row][rcSlice.col] = B;\n rcSlice.col = rcSlice.col || {};\n rcSlice.col.start = rcSlice.col.start || 0;\n rcSlice.col.end = rcSlice.col.end || A[0].length;\n rcSlice.col.step = rcSlice.col.step || 1;\n nl = jStat.arange(rcSlice.col.start,\n Math.min(A.length, rcSlice.col.end),\n rcSlice.col.step);\n var m = rcSlice.row;\n nl.forEach(function(n, i) {\n A[m][n] = B[i];\n });\n return A;\n }\n\n if (isNumber(rcSlice.col)) {\n rcSlice.row = rcSlice.row || {};\n rcSlice.row.start = rcSlice.row.start || 0;\n rcSlice.row.end = rcSlice.row.end || A.length;\n rcSlice.row.step = rcSlice.row.step || 1;\n ml = jStat.arange(rcSlice.row.start,\n Math.min(A[0].length, rcSlice.row.end),\n rcSlice.row.step);\n var n = rcSlice.col;\n ml.forEach(function(m, j) {\n A[m][n] = B[j];\n });\n return A;\n }\n\n if (B[0].length === undefined) {\n B = [B];\n }\n rcSlice.row.start = rcSlice.row.start || 0;\n rcSlice.row.end = rcSlice.row.end || A.length;\n rcSlice.row.step = rcSlice.row.step || 1;\n rcSlice.col.start = rcSlice.col.start || 0;\n rcSlice.col.end = rcSlice.col.end || A[0].length;\n rcSlice.col.step = rcSlice.col.step || 1;\n ml = jStat.arange(rcSlice.row.start,\n Math.min(A.length, rcSlice.row.end),\n rcSlice.row.step);\n nl = jStat.arange(rcSlice.col.start,\n Math.min(A[0].length, rcSlice.col.end),\n rcSlice.col.step);\n ml.forEach(function(m, i) {\n nl.forEach(function(n, j) {\n A[m][n] = B[i][j];\n });\n });\n return A;\n};\n\n\n// [1,2,3] ->\n// [[1,0,0],[0,2,0],[0,0,3]]\njStat.diagonal = function diagonal(diagArray) {\n var mat = jStat.zeros(diagArray.length, diagArray.length);\n diagArray.forEach(function(t, i) {\n mat[i][i] = t;\n });\n return mat;\n};\n\n\n// return copy of A\njStat.copy = function copy(A) {\n return A.map(function(row) {\n if (isNumber(row))\n return row;\n return row.map(function(t) {\n return t;\n });\n });\n};\n\n\n// TODO: Go over this entire implementation. Seems a tragic waste of resources\n// doing all this work. Instead, and while ugly, use new Function() to generate\n// a custom function for each static method.\n\n// Quick reference.\nvar jProto = jStat.prototype;\n\n// Default length.\njProto.length = 0;\n\n// For internal use only.\n// TODO: Check if they're actually used, and if they are then rename them\n// to _*\njProto.push = Array.prototype.push;\njProto.sort = Array.prototype.sort;\njProto.splice = Array.prototype.splice;\njProto.slice = Array.prototype.slice;\n\n\n// Return a clean array.\njProto.toArray = function toArray() {\n return this.length > 1 ? slice.call(this) : slice.call(this)[0];\n};\n\n\n// Map a function to a matrix or vector.\njProto.map = function map(func, toAlter) {\n return jStat(jStat.map(this, func, toAlter));\n};\n\n\n// Cumulatively combine the elements of a matrix or vector using a function.\njProto.cumreduce = function cumreduce(func, toAlter) {\n return jStat(jStat.cumreduce(this, func, toAlter));\n};\n\n\n// Destructively alter an array.\njProto.alter = function alter(func) {\n jStat.alter(this, func);\n return this;\n};\n\n\n// Extend prototype with methods that have no argument.\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n jProto[passfunc] = function(func) {\n var self = this,\n results;\n // Check for callback.\n if (func) {\n setTimeout(function() {\n func.call(self, jProto[passfunc].call(self));\n });\n return this;\n }\n results = jStat[passfunc](this);\n return isArray(results) ? jStat(results) : results;\n };\n })(funcs[i]);\n})('transpose clear symmetric rows cols dimensions diag antidiag'.split(' '));\n\n\n// Extend prototype with methods that have one argument.\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n jProto[passfunc] = function(index, func) {\n var self = this;\n // check for callback\n if (func) {\n setTimeout(function() {\n func.call(self, jProto[passfunc].call(self, index));\n });\n return this;\n }\n return jStat(jStat[passfunc](this, index));\n };\n })(funcs[i]);\n})('row col'.split(' '));\n\n\n// Extend prototype with simple shortcut methods.\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n jProto[passfunc] = function() {\n return jStat(jStat[passfunc].apply(null, arguments));\n };\n })(funcs[i]);\n})('create zeros ones rand identity'.split(' '));\n\n\n// Exposing jStat.\nreturn jStat;\n\n}(Math));\n(function(jStat, Math) {\n\nvar isFunction = jStat.utils.isFunction;\n\n// Ascending functions for sort\nfunction ascNum(a, b) { return a - b; }\n\nfunction clip(arg, min, max) {\n return Math.max(min, Math.min(arg, max));\n}\n\n\n// sum of an array\njStat.sum = function sum(arr) {\n var sum = 0;\n var i = arr.length;\n while (--i >= 0)\n sum += arr[i];\n return sum;\n};\n\n\n// sum squared\njStat.sumsqrd = function sumsqrd(arr) {\n var sum = 0;\n var i = arr.length;\n while (--i >= 0)\n sum += arr[i] * arr[i];\n return sum;\n};\n\n\n// sum of squared errors of prediction (SSE)\njStat.sumsqerr = function sumsqerr(arr) {\n var mean = jStat.mean(arr);\n var sum = 0;\n var i = arr.length;\n var tmp;\n while (--i >= 0) {\n tmp = arr[i] - mean;\n sum += tmp * tmp;\n }\n return sum;\n};\n\n// sum of an array in each row\njStat.sumrow = function sumrow(arr) {\n var sum = 0;\n var i = arr.length;\n while (--i >= 0)\n sum += arr[i];\n return sum;\n};\n\n// product of an array\njStat.product = function product(arr) {\n var prod = 1;\n var i = arr.length;\n while (--i >= 0)\n prod *= arr[i];\n return prod;\n};\n\n\n// minimum value of an array\njStat.min = function min(arr) {\n var low = arr[0];\n var i = 0;\n while (++i < arr.length)\n if (arr[i] < low)\n low = arr[i];\n return low;\n};\n\n\n// maximum value of an array\njStat.max = function max(arr) {\n var high = arr[0];\n var i = 0;\n while (++i < arr.length)\n if (arr[i] > high)\n high = arr[i];\n return high;\n};\n\n\n// unique values of an array\njStat.unique = function unique(arr) {\n var hash = {}, _arr = [];\n for(var i = 0; i < arr.length; i++) {\n if (!hash[arr[i]]) {\n hash[arr[i]] = true;\n _arr.push(arr[i]);\n }\n }\n return _arr;\n};\n\n\n// mean value of an array\njStat.mean = function mean(arr) {\n return jStat.sum(arr) / arr.length;\n};\n\n\n// mean squared error (MSE)\njStat.meansqerr = function meansqerr(arr) {\n return jStat.sumsqerr(arr) / arr.length;\n};\n\n\n// geometric mean of an array\njStat.geomean = function geomean(arr) {\n var logs = arr.map(Math.log)\n var meanOfLogs = jStat.mean(logs)\n return Math.exp(meanOfLogs)\n};\n\n\n// median of an array\njStat.median = function median(arr) {\n var arrlen = arr.length;\n var _arr = arr.slice().sort(ascNum);\n // check if array is even or odd, then return the appropriate\n return !(arrlen & 1)\n ? (_arr[(arrlen / 2) - 1 ] + _arr[(arrlen / 2)]) / 2\n : _arr[(arrlen / 2) | 0 ];\n};\n\n\n// cumulative sum of an array\njStat.cumsum = function cumsum(arr) {\n return jStat.cumreduce(arr, function (a, b) { return a + b; });\n};\n\n\n// cumulative product of an array\njStat.cumprod = function cumprod(arr) {\n return jStat.cumreduce(arr, function (a, b) { return a * b; });\n};\n\n\n// successive differences of a sequence\njStat.diff = function diff(arr) {\n var diffs = [];\n var arrLen = arr.length;\n var i;\n for (i = 1; i < arrLen; i++)\n diffs.push(arr[i] - arr[i - 1]);\n return diffs;\n};\n\n\n// ranks of an array\njStat.rank = function (arr) {\n var i;\n var distinctNumbers = [];\n var numberCounts = {};\n for (i = 0; i < arr.length; i++) {\n var number = arr[i];\n if (numberCounts[number]) {\n numberCounts[number]++;\n } else {\n numberCounts[number] = 1;\n distinctNumbers.push(number);\n }\n }\n\n var sortedDistinctNumbers = distinctNumbers.sort(ascNum);\n var numberRanks = {};\n var currentRank = 1;\n for (i = 0; i < sortedDistinctNumbers.length; i++) {\n var number = sortedDistinctNumbers[i];\n var count = numberCounts[number];\n var first = currentRank;\n var last = currentRank + count - 1;\n var rank = (first + last) / 2;\n numberRanks[number] = rank;\n currentRank += count;\n }\n\n return arr.map(function (number) {\n return numberRanks[number];\n });\n};\n\n\n// mode of an array\n// if there are multiple modes of an array, return all of them\n// is this the appropriate way of handling it?\njStat.mode = function mode(arr) {\n var arrLen = arr.length;\n var _arr = arr.slice().sort(ascNum);\n var count = 1;\n var maxCount = 0;\n var numMaxCount = 0;\n var mode_arr = [];\n var i;\n\n for (i = 0; i < arrLen; i++) {\n if (_arr[i] === _arr[i + 1]) {\n count++;\n } else {\n if (count > maxCount) {\n mode_arr = [_arr[i]];\n maxCount = count;\n numMaxCount = 0;\n }\n // are there multiple max counts\n else if (count === maxCount) {\n mode_arr.push(_arr[i]);\n numMaxCount++;\n }\n // resetting count for new value in array\n count = 1;\n }\n }\n\n return numMaxCount === 0 ? mode_arr[0] : mode_arr;\n};\n\n\n// range of an array\njStat.range = function range(arr) {\n return jStat.max(arr) - jStat.min(arr);\n};\n\n// variance of an array\n// flag = true indicates sample instead of population\njStat.variance = function variance(arr, flag) {\n return jStat.sumsqerr(arr) / (arr.length - (flag ? 1 : 0));\n};\n\n// pooled variance of an array of arrays\njStat.pooledvariance = function pooledvariance(arr) {\n var sumsqerr = arr.reduce(function (a, samples) {return a + jStat.sumsqerr(samples);}, 0);\n var count = arr.reduce(function (a, samples) {return a + samples.length;}, 0);\n return sumsqerr / (count - arr.length);\n};\n\n// deviation of an array\njStat.deviation = function (arr) {\n var mean = jStat.mean(arr);\n var arrlen = arr.length;\n var dev = new Array(arrlen);\n for (var i = 0; i < arrlen; i++) {\n dev[i] = arr[i] - mean;\n }\n return dev;\n};\n\n// standard deviation of an array\n// flag = true indicates sample instead of population\njStat.stdev = function stdev(arr, flag) {\n return Math.sqrt(jStat.variance(arr, flag));\n};\n\n// pooled standard deviation of an array of arrays\njStat.pooledstdev = function pooledstdev(arr) {\n return Math.sqrt(jStat.pooledvariance(arr));\n};\n\n// mean deviation (mean absolute deviation) of an array\njStat.meandev = function meandev(arr) {\n var mean = jStat.mean(arr);\n var a = [];\n for (var i = arr.length - 1; i >= 0; i--) {\n a.push(Math.abs(arr[i] - mean));\n }\n return jStat.mean(a);\n};\n\n\n// median deviation (median absolute deviation) of an array\njStat.meddev = function meddev(arr) {\n var median = jStat.median(arr);\n var a = [];\n for (var i = arr.length - 1; i >= 0; i--) {\n a.push(Math.abs(arr[i] - median));\n }\n return jStat.median(a);\n};\n\n\n// coefficient of variation\njStat.coeffvar = function coeffvar(arr) {\n return jStat.stdev(arr) / jStat.mean(arr);\n};\n\n\n// quartiles of an array\njStat.quartiles = function quartiles(arr) {\n var arrlen = arr.length;\n var _arr = arr.slice().sort(ascNum);\n return [\n _arr[ Math.round((arrlen) / 4) - 1 ],\n _arr[ Math.round((arrlen) / 2) - 1 ],\n _arr[ Math.round((arrlen) * 3 / 4) - 1 ]\n ];\n};\n\n\n// Arbitary quantiles of an array. Direct port of the scipy.stats\n// implementation by Pierre GF Gerard-Marchant.\njStat.quantiles = function quantiles(arr, quantilesArray, alphap, betap) {\n var sortedArray = arr.slice().sort(ascNum);\n var quantileVals = [quantilesArray.length];\n var n = arr.length;\n var i, p, m, aleph, k, gamma;\n\n if (typeof alphap === 'undefined')\n alphap = 3 / 8;\n if (typeof betap === 'undefined')\n betap = 3 / 8;\n\n for (i = 0; i < quantilesArray.length; i++) {\n p = quantilesArray[i];\n m = alphap + p * (1 - alphap - betap);\n aleph = n * p + m;\n k = Math.floor(clip(aleph, 1, n - 1));\n gamma = clip(aleph - k, 0, 1);\n quantileVals[i] = (1 - gamma) * sortedArray[k - 1] + gamma * sortedArray[k];\n }\n\n return quantileVals;\n};\n\n// Return the k-th percentile of values in a range, where k is in the range 0..1, inclusive.\n// Passing true for the exclusive parameter excludes both endpoints of the range.\njStat.percentile = function percentile(arr, k, exclusive) {\n var _arr = arr.slice().sort(ascNum);\n var realIndex = k * (_arr.length + (exclusive ? 1 : -1)) + (exclusive ? 0 : 1);\n var index = parseInt(realIndex);\n var frac = realIndex - index;\n if (index + 1 < _arr.length) {\n return _arr[index - 1] + frac * (_arr[index] - _arr[index - 1]);\n } else {\n return _arr[index - 1];\n }\n}\n\n// The percentile rank of score in a given array. Returns the percentage\n// of all values in the input array that are less than (kind='strict') or\n// less or equal than (kind='weak') score. Default is weak.\njStat.percentileOfScore = function percentileOfScore(arr, score, kind) {\n var counter = 0;\n var len = arr.length;\n var strict = false;\n var value, i;\n\n if (kind === 'strict')\n strict = true;\n\n for (i = 0; i < len; i++) {\n value = arr[i];\n if ((strict && value < score) ||\n (!strict && value <= score)) {\n counter++;\n }\n }\n\n return counter / len;\n};\n\n\n// Histogram (bin count) data\njStat.histogram = function histogram(arr, binCnt) {\n binCnt = binCnt || 4;\n var first = jStat.min(arr);\n var binWidth = (jStat.max(arr) - first) / binCnt;\n var len = arr.length;\n var bins = [];\n var i;\n\n for (i = 0; i < binCnt; i++)\n bins[i] = 0;\n for (i = 0; i < len; i++)\n bins[Math.min(Math.floor(((arr[i] - first) / binWidth)), binCnt - 1)] += 1;\n\n return bins;\n};\n\n\n// covariance of two arrays\njStat.covariance = function covariance(arr1, arr2) {\n var u = jStat.mean(arr1);\n var v = jStat.mean(arr2);\n var arr1Len = arr1.length;\n var sq_dev = new Array(arr1Len);\n var i;\n\n for (i = 0; i < arr1Len; i++)\n sq_dev[i] = (arr1[i] - u) * (arr2[i] - v);\n\n return jStat.sum(sq_dev) / (arr1Len - 1);\n};\n\n\n// (pearson's) population correlation coefficient, rho\njStat.corrcoeff = function corrcoeff(arr1, arr2) {\n return jStat.covariance(arr1, arr2) /\n jStat.stdev(arr1, 1) /\n jStat.stdev(arr2, 1);\n};\n\n // (spearman's) rank correlation coefficient, sp\njStat.spearmancoeff = function (arr1, arr2) {\n arr1 = jStat.rank(arr1);\n arr2 = jStat.rank(arr2);\n //return pearson's correlation of the ranks:\n return jStat.corrcoeff(arr1, arr2);\n}\n\n\n// statistical standardized moments (general form of skew/kurt)\njStat.stanMoment = function stanMoment(arr, n) {\n var mu = jStat.mean(arr);\n var sigma = jStat.stdev(arr);\n var len = arr.length;\n var skewSum = 0;\n\n for (var i = 0; i < len; i++)\n skewSum += Math.pow((arr[i] - mu) / sigma, n);\n\n return skewSum / arr.length;\n};\n\n// (pearson's) moment coefficient of skewness\njStat.skewness = function skewness(arr) {\n return jStat.stanMoment(arr, 3);\n};\n\n// (pearson's) (excess) kurtosis\njStat.kurtosis = function kurtosis(arr) {\n return jStat.stanMoment(arr, 4) - 3;\n};\n\n\nvar jProto = jStat.prototype;\n\n\n// Extend jProto with method for calculating cumulative sums and products.\n// This differs from the similar extension below as cumsum and cumprod should\n// not be run again in the case fullbool === true.\n// If a matrix is passed, automatically assume operation should be done on the\n// columns.\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n // If a matrix is passed, automatically assume operation should be done on\n // the columns.\n jProto[passfunc] = function(fullbool, func) {\n var arr = [];\n var i = 0;\n var tmpthis = this;\n // Assignment reassignation depending on how parameters were passed in.\n if (isFunction(fullbool)) {\n func = fullbool;\n fullbool = false;\n }\n // Check if a callback was passed with the function.\n if (func) {\n setTimeout(function() {\n func.call(tmpthis, jProto[passfunc].call(tmpthis, fullbool));\n });\n return this;\n }\n // Check if matrix and run calculations.\n if (this.length > 1) {\n tmpthis = fullbool === true ? this : this.transpose();\n for (; i < tmpthis.length; i++)\n arr[i] = jStat[passfunc](tmpthis[i]);\n return arr;\n }\n // Pass fullbool if only vector, not a matrix. for variance and stdev.\n return jStat[passfunc](this[0], fullbool);\n };\n })(funcs[i]);\n})(('cumsum cumprod').split(' '));\n\n\n// Extend jProto with methods which don't require arguments and work on columns.\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n // If a matrix is passed, automatically assume operation should be done on\n // the columns.\n jProto[passfunc] = function(fullbool, func) {\n var arr = [];\n var i = 0;\n var tmpthis = this;\n // Assignment reassignation depending on how parameters were passed in.\n if (isFunction(fullbool)) {\n func = fullbool;\n fullbool = false;\n }\n // Check if a callback was passed with the function.\n if (func) {\n setTimeout(function() {\n func.call(tmpthis, jProto[passfunc].call(tmpthis, fullbool));\n });\n return this;\n }\n // Check if matrix and run calculations.\n if (this.length > 1) {\n if (passfunc !== 'sumrow')\n tmpthis = fullbool === true ? this : this.transpose();\n for (; i < tmpthis.length; i++)\n arr[i] = jStat[passfunc](tmpthis[i]);\n return fullbool === true\n ? jStat[passfunc](jStat.utils.toVector(arr))\n : arr;\n }\n // Pass fullbool if only vector, not a matrix. for variance and stdev.\n return jStat[passfunc](this[0], fullbool);\n };\n })(funcs[i]);\n})(('sum sumsqrd sumsqerr sumrow product min max unique mean meansqerr ' +\n 'geomean median diff rank mode range variance deviation stdev meandev ' +\n 'meddev coeffvar quartiles histogram skewness kurtosis').split(' '));\n\n\n// Extend jProto with functions that take arguments. Operations on matrices are\n// done on columns.\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n jProto[passfunc] = function() {\n var arr = [];\n var i = 0;\n var tmpthis = this;\n var args = Array.prototype.slice.call(arguments);\n var callbackFunction;\n\n // If the last argument is a function, we assume it's a callback; we\n // strip the callback out and call the function again.\n if (isFunction(args[args.length - 1])) {\n callbackFunction = args[args.length - 1];\n var argsToPass = args.slice(0, args.length - 1);\n\n setTimeout(function() {\n callbackFunction.call(tmpthis,\n jProto[passfunc].apply(tmpthis, argsToPass));\n });\n return this;\n\n // Otherwise we curry the function args and call normally.\n } else {\n callbackFunction = undefined;\n var curriedFunction = function curriedFunction(vector) {\n return jStat[passfunc].apply(tmpthis, [vector].concat(args));\n }\n }\n\n // If this is a matrix, run column-by-column.\n if (this.length > 1) {\n tmpthis = tmpthis.transpose();\n for (; i < tmpthis.length; i++)\n arr[i] = curriedFunction(tmpthis[i]);\n return arr;\n }\n\n // Otherwise run on the vector.\n return curriedFunction(this[0]);\n };\n })(funcs[i]);\n})('quantiles percentileOfScore'.split(' '));\n\n}(jStat, Math));\n// Special functions //\n(function(jStat, Math) {\n\n// Log-gamma function\njStat.gammaln = function gammaln(x) {\n var j = 0;\n var cof = [\n 76.18009172947146, -86.50532032941677, 24.01409824083091,\n -1.231739572450155, 0.1208650973866179e-2, -0.5395239384953e-5\n ];\n var ser = 1.000000000190015;\n var xx, y, tmp;\n tmp = (y = xx = x) + 5.5;\n tmp -= (xx + 0.5) * Math.log(tmp);\n for (; j < 6; j++)\n ser += cof[j] / ++y;\n return Math.log(2.5066282746310005 * ser / xx) - tmp;\n};\n\n/*\n * log-gamma function to support poisson distribution sampling. The\n * algorithm comes from SPECFUN by Shanjie Zhang and Jianming Jin and their\n * book \"Computation of Special Functions\", 1996, John Wiley & Sons, Inc.\n */\njStat.loggam = function loggam(x) {\n var x0, x2, xp, gl, gl0;\n var k, n;\n\n var a = [8.333333333333333e-02, -2.777777777777778e-03,\n 7.936507936507937e-04, -5.952380952380952e-04,\n 8.417508417508418e-04, -1.917526917526918e-03,\n 6.410256410256410e-03, -2.955065359477124e-02,\n 1.796443723688307e-01, -1.39243221690590e+00];\n x0 = x;\n n = 0;\n if ((x == 1.0) || (x == 2.0)) {\n return 0.0;\n }\n if (x <= 7.0) {\n n = Math.floor(7 - x);\n x0 = x + n;\n }\n x2 = 1.0 / (x0 * x0);\n xp = 2 * Math.PI;\n gl0 = a[9];\n for (k = 8; k >= 0; k--) {\n gl0 *= x2;\n gl0 += a[k];\n }\n gl = gl0 / x0 + 0.5 * Math.log(xp) + (x0 - 0.5) * Math.log(x0) - x0;\n if (x <= 7.0) {\n for (k = 1; k <= n; k++) {\n gl -= Math.log(x0 - 1.0);\n x0 -= 1.0;\n }\n }\n return gl;\n}\n\n// gamma of x\njStat.gammafn = function gammafn(x) {\n var p = [-1.716185138865495, 24.76565080557592, -379.80425647094563,\n 629.3311553128184, 866.9662027904133, -31451.272968848367,\n -36144.413418691176, 66456.14382024054\n ];\n var q = [-30.8402300119739, 315.35062697960416, -1015.1563674902192,\n -3107.771671572311, 22538.118420980151, 4755.8462775278811,\n -134659.9598649693, -115132.2596755535];\n var fact = false;\n var n = 0;\n var xden = 0;\n var xnum = 0;\n var y = x;\n var i, z, yi, res;\n if (x > 171.6243769536076) {\n return Infinity;\n }\n if (y <= 0) {\n res = y % 1 + 3.6e-16;\n if (res) {\n fact = (!(y & 1) ? 1 : -1) * Math.PI / Math.sin(Math.PI * res);\n y = 1 - y;\n } else {\n return Infinity;\n }\n }\n yi = y;\n if (y < 1) {\n z = y++;\n } else {\n z = (y -= n = (y | 0) - 1) - 1;\n }\n for (i = 0; i < 8; ++i) {\n xnum = (xnum + p[i]) * z;\n xden = xden * z + q[i];\n }\n res = xnum / xden + 1;\n if (yi < y) {\n res /= yi;\n } else if (yi > y) {\n for (i = 0; i < n; ++i) {\n res *= y;\n y++;\n }\n }\n if (fact) {\n res = fact / res;\n }\n return res;\n};\n\n\n// lower incomplete gamma function, which is usually typeset with a\n// lower-case greek gamma as the function symbol\njStat.gammap = function gammap(a, x) {\n return jStat.lowRegGamma(a, x) * jStat.gammafn(a);\n};\n\n\n// The lower regularized incomplete gamma function, usually written P(a,x)\njStat.lowRegGamma = function lowRegGamma(a, x) {\n var aln = jStat.gammaln(a);\n var ap = a;\n var sum = 1 / a;\n var del = sum;\n var b = x + 1 - a;\n var c = 1 / 1.0e-30;\n var d = 1 / b;\n var h = d;\n var i = 1;\n // calculate maximum number of itterations required for a\n var ITMAX = -~(Math.log((a >= 1) ? a : 1 / a) * 8.5 + a * 0.4 + 17);\n var an;\n\n if (x < 0 || a <= 0) {\n return NaN;\n } else if (x < a + 1) {\n for (; i <= ITMAX; i++) {\n sum += del *= x / ++ap;\n }\n return (sum * Math.exp(-x + a * Math.log(x) - (aln)));\n }\n\n for (; i <= ITMAX; i++) {\n an = -i * (i - a);\n b += 2;\n d = an * d + b;\n c = b + an / c;\n d = 1 / d;\n h *= d * c;\n }\n\n return (1 - h * Math.exp(-x + a * Math.log(x) - (aln)));\n};\n\n// natural log factorial of n\njStat.factorialln = function factorialln(n) {\n return n < 0 ? NaN : jStat.gammaln(n + 1);\n};\n\n// factorial of n\njStat.factorial = function factorial(n) {\n return n < 0 ? NaN : jStat.gammafn(n + 1);\n};\n\n// combinations of n, m\njStat.combination = function combination(n, m) {\n // make sure n or m don't exceed the upper limit of usable values\n return (n > 170 || m > 170)\n ? Math.exp(jStat.combinationln(n, m))\n : (jStat.factorial(n) / jStat.factorial(m)) / jStat.factorial(n - m);\n};\n\n\njStat.combinationln = function combinationln(n, m){\n return jStat.factorialln(n) - jStat.factorialln(m) - jStat.factorialln(n - m);\n};\n\n\n// permutations of n, m\njStat.permutation = function permutation(n, m) {\n return jStat.factorial(n) / jStat.factorial(n - m);\n};\n\n\n// beta function\njStat.betafn = function betafn(x, y) {\n // ensure arguments are positive\n if (x <= 0 || y <= 0)\n return undefined;\n // make sure x + y doesn't exceed the upper limit of usable values\n return (x + y > 170)\n ? Math.exp(jStat.betaln(x, y))\n : jStat.gammafn(x) * jStat.gammafn(y) / jStat.gammafn(x + y);\n};\n\n\n// natural logarithm of beta function\njStat.betaln = function betaln(x, y) {\n return jStat.gammaln(x) + jStat.gammaln(y) - jStat.gammaln(x + y);\n};\n\n\n// Evaluates the continued fraction for incomplete beta function by modified\n// Lentz's method.\njStat.betacf = function betacf(x, a, b) {\n var fpmin = 1e-30;\n var m = 1;\n var qab = a + b;\n var qap = a + 1;\n var qam = a - 1;\n var c = 1;\n var d = 1 - qab * x / qap;\n var m2, aa, del, h;\n\n // These q's will be used in factors that occur in the coefficients\n if (Math.abs(d) < fpmin)\n d = fpmin;\n d = 1 / d;\n h = d;\n\n for (; m <= 100; m++) {\n m2 = 2 * m;\n aa = m * (b - m) * x / ((qam + m2) * (a + m2));\n // One step (the even one) of the recurrence\n d = 1 + aa * d;\n if (Math.abs(d) < fpmin)\n d = fpmin;\n c = 1 + aa / c;\n if (Math.abs(c) < fpmin)\n c = fpmin;\n d = 1 / d;\n h *= d * c;\n aa = -(a + m) * (qab + m) * x / ((a + m2) * (qap + m2));\n // Next step of the recurrence (the odd one)\n d = 1 + aa * d;\n if (Math.abs(d) < fpmin)\n d = fpmin;\n c = 1 + aa / c;\n if (Math.abs(c) < fpmin)\n c = fpmin;\n d = 1 / d;\n del = d * c;\n h *= del;\n if (Math.abs(del - 1.0) < 3e-7)\n break;\n }\n\n return h;\n};\n\n\n// Returns the inverse of the lower regularized inomplete gamma function\njStat.gammapinv = function gammapinv(p, a) {\n var j = 0;\n var a1 = a - 1;\n var EPS = 1e-8;\n var gln = jStat.gammaln(a);\n var x, err, t, u, pp, lna1, afac;\n\n if (p >= 1)\n return Math.max(100, a + 100 * Math.sqrt(a));\n if (p <= 0)\n return 0;\n if (a > 1) {\n lna1 = Math.log(a1);\n afac = Math.exp(a1 * (lna1 - 1) - gln);\n pp = (p < 0.5) ? p : 1 - p;\n t = Math.sqrt(-2 * Math.log(pp));\n x = (2.30753 + t * 0.27061) / (1 + t * (0.99229 + t * 0.04481)) - t;\n if (p < 0.5)\n x = -x;\n x = Math.max(1e-3,\n a * Math.pow(1 - 1 / (9 * a) - x / (3 * Math.sqrt(a)), 3));\n } else {\n t = 1 - a * (0.253 + a * 0.12);\n if (p < t)\n x = Math.pow(p / t, 1 / a);\n else\n x = 1 - Math.log(1 - (p - t) / (1 - t));\n }\n\n for(; j < 12; j++) {\n if (x <= 0)\n return 0;\n err = jStat.lowRegGamma(a, x) - p;\n if (a > 1)\n t = afac * Math.exp(-(x - a1) + a1 * (Math.log(x) - lna1));\n else\n t = Math.exp(-x + a1 * Math.log(x) - gln);\n u = err / t;\n x -= (t = u / (1 - 0.5 * Math.min(1, u * ((a - 1) / x - 1))));\n if (x <= 0)\n x = 0.5 * (x + t);\n if (Math.abs(t) < EPS * x)\n break;\n }\n\n return x;\n};\n\n\n// Returns the error function erf(x)\njStat.erf = function erf(x) {\n var cof = [-1.3026537197817094, 6.4196979235649026e-1, 1.9476473204185836e-2,\n -9.561514786808631e-3, -9.46595344482036e-4, 3.66839497852761e-4,\n 4.2523324806907e-5, -2.0278578112534e-5, -1.624290004647e-6,\n 1.303655835580e-6, 1.5626441722e-8, -8.5238095915e-8,\n 6.529054439e-9, 5.059343495e-9, -9.91364156e-10,\n -2.27365122e-10, 9.6467911e-11, 2.394038e-12,\n -6.886027e-12, 8.94487e-13, 3.13092e-13,\n -1.12708e-13, 3.81e-16, 7.106e-15,\n -1.523e-15, -9.4e-17, 1.21e-16,\n -2.8e-17];\n var j = cof.length - 1;\n var isneg = false;\n var d = 0;\n var dd = 0;\n var t, ty, tmp, res;\n\n if (x < 0) {\n x = -x;\n isneg = true;\n }\n\n t = 2 / (2 + x);\n ty = 4 * t - 2;\n\n for(; j > 0; j--) {\n tmp = d;\n d = ty * d - dd + cof[j];\n dd = tmp;\n }\n\n res = t * Math.exp(-x * x + 0.5 * (cof[0] + ty * d) - dd);\n return isneg ? res - 1 : 1 - res;\n};\n\n\n// Returns the complmentary error function erfc(x)\njStat.erfc = function erfc(x) {\n return 1 - jStat.erf(x);\n};\n\n\n// Returns the inverse of the complementary error function\njStat.erfcinv = function erfcinv(p) {\n var j = 0;\n var x, err, t, pp;\n if (p >= 2)\n return -100;\n if (p <= 0)\n return 100;\n pp = (p < 1) ? p : 2 - p;\n t = Math.sqrt(-2 * Math.log(pp / 2));\n x = -0.70711 * ((2.30753 + t * 0.27061) /\n (1 + t * (0.99229 + t * 0.04481)) - t);\n for (; j < 2; j++) {\n err = jStat.erfc(x) - pp;\n x += err / (1.12837916709551257 * Math.exp(-x * x) - x * err);\n }\n return (p < 1) ? x : -x;\n};\n\n\n// Returns the inverse of the incomplete beta function\njStat.ibetainv = function ibetainv(p, a, b) {\n var EPS = 1e-8;\n var a1 = a - 1;\n var b1 = b - 1;\n var j = 0;\n var lna, lnb, pp, t, u, err, x, al, h, w, afac;\n if (p <= 0)\n return 0;\n if (p >= 1)\n return 1;\n if (a >= 1 && b >= 1) {\n pp = (p < 0.5) ? p : 1 - p;\n t = Math.sqrt(-2 * Math.log(pp));\n x = (2.30753 + t * 0.27061) / (1 + t* (0.99229 + t * 0.04481)) - t;\n if (p < 0.5)\n x = -x;\n al = (x * x - 3) / 6;\n h = 2 / (1 / (2 * a - 1) + 1 / (2 * b - 1));\n w = (x * Math.sqrt(al + h) / h) - (1 / (2 * b - 1) - 1 / (2 * a - 1)) *\n (al + 5 / 6 - 2 / (3 * h));\n x = a / (a + b * Math.exp(2 * w));\n } else {\n lna = Math.log(a / (a + b));\n lnb = Math.log(b / (a + b));\n t = Math.exp(a * lna) / a;\n u = Math.exp(b * lnb) / b;\n w = t + u;\n if (p < t / w)\n x = Math.pow(a * w * p, 1 / a);\n else\n x = 1 - Math.pow(b * w * (1 - p), 1 / b);\n }\n afac = -jStat.gammaln(a) - jStat.gammaln(b) + jStat.gammaln(a + b);\n for(; j < 10; j++) {\n if (x === 0 || x === 1)\n return x;\n err = jStat.ibeta(x, a, b) - p;\n t = Math.exp(a1 * Math.log(x) + b1 * Math.log(1 - x) + afac);\n u = err / t;\n x -= (t = u / (1 - 0.5 * Math.min(1, u * (a1 / x - b1 / (1 - x)))));\n if (x <= 0)\n x = 0.5 * (x + t);\n if (x >= 1)\n x = 0.5 * (x + t + 1);\n if (Math.abs(t) < EPS * x && j > 0)\n break;\n }\n return x;\n};\n\n\n// Returns the incomplete beta function I_x(a,b)\njStat.ibeta = function ibeta(x, a, b) {\n // Factors in front of the continued fraction.\n var bt = (x === 0 || x === 1) ? 0 :\n Math.exp(jStat.gammaln(a + b) - jStat.gammaln(a) -\n jStat.gammaln(b) + a * Math.log(x) + b *\n Math.log(1 - x));\n if (x < 0 || x > 1)\n return false;\n if (x < (a + 1) / (a + b + 2))\n // Use continued fraction directly.\n return bt * jStat.betacf(x, a, b) / a;\n // else use continued fraction after making the symmetry transformation.\n return 1 - bt * jStat.betacf(1 - x, b, a) / b;\n};\n\n\n// Returns a normal deviate (mu=0, sigma=1).\n// If n and m are specified it returns a object of normal deviates.\njStat.randn = function randn(n, m) {\n var u, v, x, y, q;\n if (!m)\n m = n;\n if (n)\n return jStat.create(n, m, function() { return jStat.randn(); });\n do {\n u = jStat._random_fn();\n v = 1.7156 * (jStat._random_fn() - 0.5);\n x = u - 0.449871;\n y = Math.abs(v) + 0.386595;\n q = x * x + y * (0.19600 * y - 0.25472 * x);\n } while (q > 0.27597 && (q > 0.27846 || v * v > -4 * Math.log(u) * u * u));\n return v / u;\n};\n\n\n// Returns a gamma deviate by the method of Marsaglia and Tsang.\njStat.randg = function randg(shape, n, m) {\n var oalph = shape;\n var a1, a2, u, v, x, mat;\n if (!m)\n m = n;\n if (!shape)\n shape = 1;\n if (n) {\n mat = jStat.zeros(n,m);\n mat.alter(function() { return jStat.randg(shape); });\n return mat;\n }\n if (shape < 1)\n shape += 1;\n a1 = shape - 1 / 3;\n a2 = 1 / Math.sqrt(9 * a1);\n do {\n do {\n x = jStat.randn();\n v = 1 + a2 * x;\n } while(v <= 0);\n v = v * v * v;\n u = jStat._random_fn();\n } while(u > 1 - 0.331 * Math.pow(x, 4) &&\n Math.log(u) > 0.5 * x*x + a1 * (1 - v + Math.log(v)));\n // alpha > 1\n if (shape == oalph)\n return a1 * v;\n // alpha < 1\n do {\n u = jStat._random_fn();\n } while(u === 0);\n return Math.pow(u, 1 / oalph) * a1 * v;\n};\n\n\n// making use of static methods on the instance\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n jStat.fn[passfunc] = function() {\n return jStat(\n jStat.map(this, function(value) { return jStat[passfunc](value); }));\n }\n })(funcs[i]);\n})('gammaln gammafn factorial factorialln'.split(' '));\n\n\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n jStat.fn[passfunc] = function() {\n return jStat(jStat[passfunc].apply(null, arguments));\n };\n })(funcs[i]);\n})('randn'.split(' '));\n\n}(jStat, Math));\n(function(jStat, Math) {\n\n// generate all distribution instance methods\n(function(list) {\n for (var i = 0; i < list.length; i++) (function(func) {\n // distribution instance method\n jStat[func] = function f(a, b, c) {\n if (!(this instanceof f))\n return new f(a, b, c);\n this._a = a;\n this._b = b;\n this._c = c;\n return this;\n };\n // distribution method to be used on a jStat instance\n jStat.fn[func] = function(a, b, c) {\n var newthis = jStat[func](a, b, c);\n newthis.data = this;\n return newthis;\n };\n // sample instance method\n jStat[func].prototype.sample = function(arr) {\n var a = this._a;\n var b = this._b;\n var c = this._c;\n if (arr)\n return jStat.alter(arr, function() {\n return jStat[func].sample(a, b, c);\n });\n else\n return jStat[func].sample(a, b, c);\n };\n // generate the pdf, cdf and inv instance methods\n (function(vals) {\n for (var i = 0; i < vals.length; i++) (function(fnfunc) {\n jStat[func].prototype[fnfunc] = function(x) {\n var a = this._a;\n var b = this._b;\n var c = this._c;\n if (!x && x !== 0)\n x = this.data;\n if (typeof x !== 'number') {\n return jStat.fn.map.call(x, function(x) {\n return jStat[func][fnfunc](x, a, b, c);\n });\n }\n return jStat[func][fnfunc](x, a, b, c);\n };\n })(vals[i]);\n })('pdf cdf inv'.split(' '));\n // generate the mean, median, mode and variance instance methods\n (function(vals) {\n for (var i = 0; i < vals.length; i++) (function(fnfunc) {\n jStat[func].prototype[fnfunc] = function() {\n return jStat[func][fnfunc](this._a, this._b, this._c);\n };\n })(vals[i]);\n })('mean median mode variance'.split(' '));\n })(list[i]);\n})((\n 'beta centralF cauchy chisquare exponential gamma invgamma kumaraswamy ' +\n 'laplace lognormal noncentralt normal pareto studentt weibull uniform ' +\n 'binomial negbin hypgeom poisson triangular tukey arcsine'\n).split(' '));\n\n\n\n// extend beta function with static methods\njStat.extend(jStat.beta, {\n pdf: function pdf(x, alpha, beta) {\n // PDF is zero outside the support\n if (x > 1 || x < 0)\n return 0;\n // PDF is one for the uniform case\n if (alpha == 1 && beta == 1)\n return 1;\n\n if (alpha < 512 && beta < 512) {\n return (Math.pow(x, alpha - 1) * Math.pow(1 - x, beta - 1)) /\n jStat.betafn(alpha, beta);\n } else {\n return Math.exp((alpha - 1) * Math.log(x) +\n (beta - 1) * Math.log(1 - x) -\n jStat.betaln(alpha, beta));\n }\n },\n\n cdf: function cdf(x, alpha, beta) {\n return (x > 1 || x < 0) ? (x > 1) * 1 : jStat.ibeta(x, alpha, beta);\n },\n\n inv: function inv(x, alpha, beta) {\n return jStat.ibetainv(x, alpha, beta);\n },\n\n mean: function mean(alpha, beta) {\n return alpha / (alpha + beta);\n },\n\n median: function median(alpha, beta) {\n return jStat.ibetainv(0.5, alpha, beta);\n },\n\n mode: function mode(alpha, beta) {\n return (alpha - 1 ) / ( alpha + beta - 2);\n },\n\n // return a random sample\n sample: function sample(alpha, beta) {\n var u = jStat.randg(alpha);\n return u / (u + jStat.randg(beta));\n },\n\n variance: function variance(alpha, beta) {\n return (alpha * beta) / (Math.pow(alpha + beta, 2) * (alpha + beta + 1));\n }\n});\n\n// extend F function with static methods\njStat.extend(jStat.centralF, {\n // This implementation of the pdf function avoids float overflow\n // See the way that R calculates this value:\n // https://svn.r-project.org/R/trunk/src/nmath/df.c\n pdf: function pdf(x, df1, df2) {\n var p, q, f;\n\n if (x < 0)\n return 0;\n\n if (df1 <= 2) {\n if (x === 0 && df1 < 2) {\n return Infinity;\n }\n if (x === 0 && df1 === 2) {\n return 1;\n }\n return (1 / jStat.betafn(df1 / 2, df2 / 2)) *\n Math.pow(df1 / df2, df1 / 2) *\n Math.pow(x, (df1/2) - 1) *\n Math.pow((1 + (df1 / df2) * x), -(df1 + df2) / 2);\n }\n\n p = (df1 * x) / (df2 + x * df1);\n q = df2 / (df2 + x * df1);\n f = df1 * q / 2.0;\n return f * jStat.binomial.pdf((df1 - 2) / 2, (df1 + df2 - 2) / 2, p);\n },\n\n cdf: function cdf(x, df1, df2) {\n if (x < 0)\n return 0;\n return jStat.ibeta((df1 * x) / (df1 * x + df2), df1 / 2, df2 / 2);\n },\n\n inv: function inv(x, df1, df2) {\n return df2 / (df1 * (1 / jStat.ibetainv(x, df1 / 2, df2 / 2) - 1));\n },\n\n mean: function mean(df1, df2) {\n return (df2 > 2) ? df2 / (df2 - 2) : undefined;\n },\n\n mode: function mode(df1, df2) {\n return (df1 > 2) ? (df2 * (df1 - 2)) / (df1 * (df2 + 2)) : undefined;\n },\n\n // return a random sample\n sample: function sample(df1, df2) {\n var x1 = jStat.randg(df1 / 2) * 2;\n var x2 = jStat.randg(df2 / 2) * 2;\n return (x1 / df1) / (x2 / df2);\n },\n\n variance: function variance(df1, df2) {\n if (df2 <= 4)\n return undefined;\n return 2 * df2 * df2 * (df1 + df2 - 2) /\n (df1 * (df2 - 2) * (df2 - 2) * (df2 - 4));\n }\n});\n\n\n// extend cauchy function with static methods\njStat.extend(jStat.cauchy, {\n pdf: function pdf(x, local, scale) {\n if (scale < 0) { return 0; }\n\n return (scale / (Math.pow(x - local, 2) + Math.pow(scale, 2))) / Math.PI;\n },\n\n cdf: function cdf(x, local, scale) {\n return Math.atan((x - local) / scale) / Math.PI + 0.5;\n },\n\n inv: function(p, local, scale) {\n return local + scale * Math.tan(Math.PI * (p - 0.5));\n },\n\n median: function median(local/*, scale*/) {\n return local;\n },\n\n mode: function mode(local/*, scale*/) {\n return local;\n },\n\n sample: function sample(local, scale) {\n return jStat.randn() *\n Math.sqrt(1 / (2 * jStat.randg(0.5))) * scale + local;\n }\n});\n\n\n\n// extend chisquare function with static methods\njStat.extend(jStat.chisquare, {\n pdf: function pdf(x, dof) {\n if (x < 0)\n return 0;\n return (x === 0 && dof === 2) ? 0.5 :\n Math.exp((dof / 2 - 1) * Math.log(x) - x / 2 - (dof / 2) *\n Math.log(2) - jStat.gammaln(dof / 2));\n },\n\n cdf: function cdf(x, dof) {\n if (x < 0)\n return 0;\n return jStat.lowRegGamma(dof / 2, x / 2);\n },\n\n inv: function(p, dof) {\n return 2 * jStat.gammapinv(p, 0.5 * dof);\n },\n\n mean : function(dof) {\n return dof;\n },\n\n // TODO: this is an approximation (is there a better way?)\n median: function median(dof) {\n return dof * Math.pow(1 - (2 / (9 * dof)), 3);\n },\n\n mode: function mode(dof) {\n return (dof - 2 > 0) ? dof - 2 : 0;\n },\n\n sample: function sample(dof) {\n return jStat.randg(dof / 2) * 2;\n },\n\n variance: function variance(dof) {\n return 2 * dof;\n }\n});\n\n\n\n// extend exponential function with static methods\njStat.extend(jStat.exponential, {\n pdf: function pdf(x, rate) {\n return x < 0 ? 0 : rate * Math.exp(-rate * x);\n },\n\n cdf: function cdf(x, rate) {\n return x < 0 ? 0 : 1 - Math.exp(-rate * x);\n },\n\n inv: function(p, rate) {\n return -Math.log(1 - p) / rate;\n },\n\n mean : function(rate) {\n return 1 / rate;\n },\n\n median: function (rate) {\n return (1 / rate) * Math.log(2);\n },\n\n mode: function mode(/*rate*/) {\n return 0;\n },\n\n sample: function sample(rate) {\n return -1 / rate * Math.log(jStat._random_fn());\n },\n\n variance : function(rate) {\n return Math.pow(rate, -2);\n }\n});\n\n\n\n// extend gamma function with static methods\njStat.extend(jStat.gamma, {\n pdf: function pdf(x, shape, scale) {\n if (x < 0)\n return 0;\n return (x === 0 && shape === 1) ? 1 / scale :\n Math.exp((shape - 1) * Math.log(x) - x / scale -\n jStat.gammaln(shape) - shape * Math.log(scale));\n },\n\n cdf: function cdf(x, shape, scale) {\n if (x < 0)\n return 0;\n return jStat.lowRegGamma(shape, x / scale);\n },\n\n inv: function(p, shape, scale) {\n return jStat.gammapinv(p, shape) * scale;\n },\n\n mean : function(shape, scale) {\n return shape * scale;\n },\n\n mode: function mode(shape, scale) {\n if(shape > 1) return (shape - 1) * scale;\n return undefined;\n },\n\n sample: function sample(shape, scale) {\n return jStat.randg(shape) * scale;\n },\n\n variance: function variance(shape, scale) {\n return shape * scale * scale;\n }\n});\n\n// extend inverse gamma function with static methods\njStat.extend(jStat.invgamma, {\n pdf: function pdf(x, shape, scale) {\n if (x <= 0)\n return 0;\n return Math.exp(-(shape + 1) * Math.log(x) - scale / x -\n jStat.gammaln(shape) + shape * Math.log(scale));\n },\n\n cdf: function cdf(x, shape, scale) {\n if (x <= 0)\n return 0;\n return 1 - jStat.lowRegGamma(shape, scale / x);\n },\n\n inv: function(p, shape, scale) {\n return scale / jStat.gammapinv(1 - p, shape);\n },\n\n mean : function(shape, scale) {\n return (shape > 1) ? scale / (shape - 1) : undefined;\n },\n\n mode: function mode(shape, scale) {\n return scale / (shape + 1);\n },\n\n sample: function sample(shape, scale) {\n return scale / jStat.randg(shape);\n },\n\n variance: function variance(shape, scale) {\n if (shape <= 2)\n return undefined;\n return scale * scale / ((shape - 1) * (shape - 1) * (shape - 2));\n }\n});\n\n\n// extend kumaraswamy function with static methods\njStat.extend(jStat.kumaraswamy, {\n pdf: function pdf(x, alpha, beta) {\n if (x === 0 && alpha === 1)\n return beta;\n else if (x === 1 && beta === 1)\n return alpha;\n return Math.exp(Math.log(alpha) + Math.log(beta) + (alpha - 1) *\n Math.log(x) + (beta - 1) *\n Math.log(1 - Math.pow(x, alpha)));\n },\n\n cdf: function cdf(x, alpha, beta) {\n if (x < 0)\n return 0;\n else if (x > 1)\n return 1;\n return (1 - Math.pow(1 - Math.pow(x, alpha), beta));\n },\n\n inv: function inv(p, alpha, beta) {\n return Math.pow(1 - Math.pow(1 - p, 1 / beta), 1 / alpha);\n },\n\n mean : function(alpha, beta) {\n return (beta * jStat.gammafn(1 + 1 / alpha) *\n jStat.gammafn(beta)) / (jStat.gammafn(1 + 1 / alpha + beta));\n },\n\n median: function median(alpha, beta) {\n return Math.pow(1 - Math.pow(2, -1 / beta), 1 / alpha);\n },\n\n mode: function mode(alpha, beta) {\n if (!(alpha >= 1 && beta >= 1 && (alpha !== 1 && beta !== 1)))\n return undefined;\n return Math.pow((alpha - 1) / (alpha * beta - 1), 1 / alpha);\n },\n\n variance: function variance(/*alpha, beta*/) {\n throw new Error('variance not yet implemented');\n // TODO: complete this\n }\n});\n\n\n\n// extend lognormal function with static methods\njStat.extend(jStat.lognormal, {\n pdf: function pdf(x, mu, sigma) {\n if (x <= 0)\n return 0;\n return Math.exp(-Math.log(x) - 0.5 * Math.log(2 * Math.PI) -\n Math.log(sigma) - Math.pow(Math.log(x) - mu, 2) /\n (2 * sigma * sigma));\n },\n\n cdf: function cdf(x, mu, sigma) {\n if (x < 0)\n return 0;\n return 0.5 +\n (0.5 * jStat.erf((Math.log(x) - mu) / Math.sqrt(2 * sigma * sigma)));\n },\n\n inv: function(p, mu, sigma) {\n return Math.exp(-1.41421356237309505 * sigma * jStat.erfcinv(2 * p) + mu);\n },\n\n mean: function mean(mu, sigma) {\n return Math.exp(mu + sigma * sigma / 2);\n },\n\n median: function median(mu/*, sigma*/) {\n return Math.exp(mu);\n },\n\n mode: function mode(mu, sigma) {\n return Math.exp(mu - sigma * sigma);\n },\n\n sample: function sample(mu, sigma) {\n return Math.exp(jStat.randn() * sigma + mu);\n },\n\n variance: function variance(mu, sigma) {\n return (Math.exp(sigma * sigma) - 1) * Math.exp(2 * mu + sigma * sigma);\n }\n});\n\n\n\n// extend noncentralt function with static methods\njStat.extend(jStat.noncentralt, {\n pdf: function pdf(x, dof, ncp) {\n var tol = 1e-14;\n if (Math.abs(ncp) < tol) // ncp approx 0; use student-t\n return jStat.studentt.pdf(x, dof)\n\n if (Math.abs(x) < tol) { // different formula for x == 0\n return Math.exp(jStat.gammaln((dof + 1) / 2) - ncp * ncp / 2 -\n 0.5 * Math.log(Math.PI * dof) - jStat.gammaln(dof / 2));\n }\n\n // formula for x != 0\n return dof / x *\n (jStat.noncentralt.cdf(x * Math.sqrt(1 + 2 / dof), dof+2, ncp) -\n jStat.noncentralt.cdf(x, dof, ncp));\n },\n\n cdf: function cdf(x, dof, ncp) {\n var tol = 1e-14;\n var min_iterations = 200;\n\n if (Math.abs(ncp) < tol) // ncp approx 0; use student-t\n return jStat.studentt.cdf(x, dof);\n\n // turn negative x into positive and flip result afterwards\n var flip = false;\n if (x < 0) {\n flip = true;\n ncp = -ncp;\n }\n\n var prob = jStat.normal.cdf(-ncp, 0, 1);\n var value = tol + 1;\n // use value at last two steps to determine convergence\n var lastvalue = value;\n var y = x * x / (x * x + dof);\n var j = 0;\n var p = Math.exp(-ncp * ncp / 2);\n var q = Math.exp(-ncp * ncp / 2 - 0.5 * Math.log(2) -\n jStat.gammaln(3 / 2)) * ncp;\n while (j < min_iterations || lastvalue > tol || value > tol) {\n lastvalue = value;\n if (j > 0) {\n p *= (ncp * ncp) / (2 * j);\n q *= (ncp * ncp) / (2 * (j + 1 / 2));\n }\n value = p * jStat.beta.cdf(y, j + 0.5, dof / 2) +\n q * jStat.beta.cdf(y, j+1, dof/2);\n prob += 0.5 * value;\n j++;\n }\n\n return flip ? (1 - prob) : prob;\n }\n});\n\n\n// extend normal function with static methods\njStat.extend(jStat.normal, {\n pdf: function pdf(x, mean, std) {\n return Math.exp(-0.5 * Math.log(2 * Math.PI) -\n Math.log(std) - Math.pow(x - mean, 2) / (2 * std * std));\n },\n\n cdf: function cdf(x, mean, std) {\n return 0.5 * (1 + jStat.erf((x - mean) / Math.sqrt(2 * std * std)));\n },\n\n inv: function(p, mean, std) {\n return -1.41421356237309505 * std * jStat.erfcinv(2 * p) + mean;\n },\n\n mean : function(mean/*, std*/) {\n return mean;\n },\n\n median: function median(mean/*, std*/) {\n return mean;\n },\n\n mode: function (mean/*, std*/) {\n return mean;\n },\n\n sample: function sample(mean, std) {\n return jStat.randn() * std + mean;\n },\n\n variance : function(mean, std) {\n return std * std;\n }\n});\n\n\n\n// extend pareto function with static methods\njStat.extend(jStat.pareto, {\n pdf: function pdf(x, scale, shape) {\n if (x < scale)\n return 0;\n return (shape * Math.pow(scale, shape)) / Math.pow(x, shape + 1);\n },\n\n cdf: function cdf(x, scale, shape) {\n if (x < scale)\n return 0;\n return 1 - Math.pow(scale / x, shape);\n },\n\n inv: function inv(p, scale, shape) {\n return scale / Math.pow(1 - p, 1 / shape);\n },\n\n mean: function mean(scale, shape) {\n if (shape <= 1)\n return undefined;\n return (shape * Math.pow(scale, shape)) / (shape - 1);\n },\n\n median: function median(scale, shape) {\n return scale * (shape * Math.SQRT2);\n },\n\n mode: function mode(scale/*, shape*/) {\n return scale;\n },\n\n variance : function(scale, shape) {\n if (shape <= 2)\n return undefined;\n return (scale*scale * shape) / (Math.pow(shape - 1, 2) * (shape - 2));\n }\n});\n\n\n\n// extend studentt function with static methods\njStat.extend(jStat.studentt, {\n pdf: function pdf(x, dof) {\n dof = dof > 1e100 ? 1e100 : dof;\n return (1/(Math.sqrt(dof) * jStat.betafn(0.5, dof/2))) *\n Math.pow(1 + ((x * x) / dof), -((dof + 1) / 2));\n },\n\n cdf: function cdf(x, dof) {\n var dof2 = dof / 2;\n return jStat.ibeta((x + Math.sqrt(x * x + dof)) /\n (2 * Math.sqrt(x * x + dof)), dof2, dof2);\n },\n\n inv: function(p, dof) {\n var x = jStat.ibetainv(2 * Math.min(p, 1 - p), 0.5 * dof, 0.5);\n x = Math.sqrt(dof * (1 - x) / x);\n return (p > 0.5) ? x : -x;\n },\n\n mean: function mean(dof) {\n return (dof > 1) ? 0 : undefined;\n },\n\n median: function median(/*dof*/) {\n return 0;\n },\n\n mode: function mode(/*dof*/) {\n return 0;\n },\n\n sample: function sample(dof) {\n return jStat.randn() * Math.sqrt(dof / (2 * jStat.randg(dof / 2)));\n },\n\n variance: function variance(dof) {\n return (dof > 2) ? dof / (dof - 2) : (dof > 1) ? Infinity : undefined;\n }\n});\n\n\n\n// extend weibull function with static methods\njStat.extend(jStat.weibull, {\n pdf: function pdf(x, scale, shape) {\n if (x < 0 || scale < 0 || shape < 0)\n return 0;\n return (shape / scale) * Math.pow((x / scale), (shape - 1)) *\n Math.exp(-(Math.pow((x / scale), shape)));\n },\n\n cdf: function cdf(x, scale, shape) {\n return x < 0 ? 0 : 1 - Math.exp(-Math.pow((x / scale), shape));\n },\n\n inv: function(p, scale, shape) {\n return scale * Math.pow(-Math.log(1 - p), 1 / shape);\n },\n\n mean : function(scale, shape) {\n return scale * jStat.gammafn(1 + 1 / shape);\n },\n\n median: function median(scale, shape) {\n return scale * Math.pow(Math.log(2), 1 / shape);\n },\n\n mode: function mode(scale, shape) {\n if (shape <= 1)\n return 0;\n return scale * Math.pow((shape - 1) / shape, 1 / shape);\n },\n\n sample: function sample(scale, shape) {\n return scale * Math.pow(-Math.log(jStat._random_fn()), 1 / shape);\n },\n\n variance: function variance(scale, shape) {\n return scale * scale * jStat.gammafn(1 + 2 / shape) -\n Math.pow(jStat.weibull.mean(scale, shape), 2);\n }\n});\n\n\n\n// extend uniform function with static methods\njStat.extend(jStat.uniform, {\n pdf: function pdf(x, a, b) {\n return (x < a || x > b) ? 0 : 1 / (b - a);\n },\n\n cdf: function cdf(x, a, b) {\n if (x < a)\n return 0;\n else if (x < b)\n return (x - a) / (b - a);\n return 1;\n },\n\n inv: function(p, a, b) {\n return a + (p * (b - a));\n },\n\n mean: function mean(a, b) {\n return 0.5 * (a + b);\n },\n\n median: function median(a, b) {\n return jStat.mean(a, b);\n },\n\n mode: function mode(/*a, b*/) {\n throw new Error('mode is not yet implemented');\n },\n\n sample: function sample(a, b) {\n return (a / 2 + b / 2) + (b / 2 - a / 2) * (2 * jStat._random_fn() - 1);\n },\n\n variance: function variance(a, b) {\n return Math.pow(b - a, 2) / 12;\n }\n});\n\n\n// Got this from http://www.math.ucla.edu/~tom/distributions/binomial.html\nfunction betinc(x, a, b, eps) {\n var a0 = 0;\n var b0 = 1;\n var a1 = 1;\n var b1 = 1;\n var m9 = 0;\n var a2 = 0;\n var c9;\n\n while (Math.abs((a1 - a2) / a1) > eps) {\n a2 = a1;\n c9 = -(a + m9) * (a + b + m9) * x / (a + 2 * m9) / (a + 2 * m9 + 1);\n a0 = a1 + c9 * a0;\n b0 = b1 + c9 * b0;\n m9 = m9 + 1;\n c9 = m9 * (b - m9) * x / (a + 2 * m9 - 1) / (a + 2 * m9);\n a1 = a0 + c9 * a1;\n b1 = b0 + c9 * b1;\n a0 = a0 / b1;\n b0 = b0 / b1;\n a1 = a1 / b1;\n b1 = 1;\n }\n\n return a1 / a;\n}\n\n\n// extend uniform function with static methods\njStat.extend(jStat.binomial, {\n pdf: function pdf(k, n, p) {\n return (p === 0 || p === 1) ?\n ((n * p) === k ? 1 : 0) :\n jStat.combination(n, k) * Math.pow(p, k) * Math.pow(1 - p, n - k);\n },\n\n cdf: function cdf(x, n, p) {\n var betacdf;\n var eps = 1e-10;\n\n if (x < 0)\n return 0;\n if (x >= n)\n return 1;\n if (p < 0 || p > 1 || n <= 0)\n return NaN;\n\n x = Math.floor(x);\n var z = p;\n var a = x + 1;\n var b = n - x;\n var s = a + b;\n var bt = Math.exp(jStat.gammaln(s) - jStat.gammaln(b) -\n jStat.gammaln(a) + a * Math.log(z) + b * Math.log(1 - z));\n\n if (z < (a + 1) / (s + 2))\n betacdf = bt * betinc(z, a, b, eps);\n else\n betacdf = 1 - bt * betinc(1 - z, b, a, eps);\n\n return Math.round((1 - betacdf) * (1 / eps)) / (1 / eps);\n }\n});\n\n\n\n// extend uniform function with static methods\njStat.extend(jStat.negbin, {\n pdf: function pdf(k, r, p) {\n if (k !== k >>> 0)\n return false;\n if (k < 0)\n return 0;\n return jStat.combination(k + r - 1, r - 1) *\n Math.pow(1 - p, k) * Math.pow(p, r);\n },\n\n cdf: function cdf(x, r, p) {\n var sum = 0,\n k = 0;\n if (x < 0) return 0;\n for (; k <= x; k++) {\n sum += jStat.negbin.pdf(k, r, p);\n }\n return sum;\n }\n});\n\n\n\n// extend uniform function with static methods\njStat.extend(jStat.hypgeom, {\n pdf: function pdf(k, N, m, n) {\n // Hypergeometric PDF.\n\n // A simplification of the CDF algorithm below.\n\n // k = number of successes drawn\n // N = population size\n // m = number of successes in population\n // n = number of items drawn from population\n\n if(k !== k | 0) {\n return false;\n } else if(k < 0 || k < m - (N - n)) {\n // It's impossible to have this few successes drawn.\n return 0;\n } else if(k > n || k > m) {\n // It's impossible to have this many successes drawn.\n return 0;\n } else if (m * 2 > N) {\n // More than half the population is successes.\n\n if(n * 2 > N) {\n // More than half the population is sampled.\n\n return jStat.hypgeom.pdf(N - m - n + k, N, N - m, N - n)\n } else {\n // Half or less of the population is sampled.\n\n return jStat.hypgeom.pdf(n - k, N, N - m, n);\n }\n\n } else if(n * 2 > N) {\n // Half or less is successes.\n\n return jStat.hypgeom.pdf(m - k, N, m, N - n);\n\n } else if(m < n) {\n // We want to have the number of things sampled to be less than the\n // successes available. So swap the definitions of successful and sampled.\n return jStat.hypgeom.pdf(k, N, n, m);\n } else {\n // If we get here, half or less of the population was sampled, half or\n // less of it was successes, and we had fewer sampled things than\n // successes. Now we can do this complicated iterative algorithm in an\n // efficient way.\n\n // The basic premise of the algorithm is that we partially normalize our\n // intermediate product to keep it in a numerically good region, and then\n // finish the normalization at the end.\n\n // This variable holds the scaled probability of the current number of\n // successes.\n var scaledPDF = 1;\n\n // This keeps track of how much we have normalized.\n var samplesDone = 0;\n\n for(var i = 0; i < k; i++) {\n // For every possible number of successes up to that observed...\n\n while(scaledPDF > 1 && samplesDone < n) {\n // Intermediate result is growing too big. Apply some of the\n // normalization to shrink everything.\n\n scaledPDF *= 1 - (m / (N - samplesDone));\n\n // Say we've normalized by this sample already.\n samplesDone++;\n }\n\n // Work out the partially-normalized hypergeometric PDF for the next\n // number of successes\n scaledPDF *= (n - i) * (m - i) / ((i + 1) * (N - m - n + i + 1));\n }\n\n for(; samplesDone < n; samplesDone++) {\n // Apply all the rest of the normalization\n scaledPDF *= 1 - (m / (N - samplesDone));\n }\n\n // Bound answer sanely before returning.\n return Math.min(1, Math.max(0, scaledPDF));\n }\n },\n\n cdf: function cdf(x, N, m, n) {\n // Hypergeometric CDF.\n\n // This algorithm is due to Prof. Thomas S. Ferguson, ,\n // and comes from his hypergeometric test calculator at\n // .\n\n // x = number of successes drawn\n // N = population size\n // m = number of successes in population\n // n = number of items drawn from population\n\n if(x < 0 || x < m - (N - n)) {\n // It's impossible to have this few successes drawn or fewer.\n return 0;\n } else if(x >= n || x >= m) {\n // We will always have this many successes or fewer.\n return 1;\n } else if (m * 2 > N) {\n // More than half the population is successes.\n\n if(n * 2 > N) {\n // More than half the population is sampled.\n\n return jStat.hypgeom.cdf(N - m - n + x, N, N - m, N - n)\n } else {\n // Half or less of the population is sampled.\n\n return 1 - jStat.hypgeom.cdf(n - x - 1, N, N - m, n);\n }\n\n } else if(n * 2 > N) {\n // Half or less is successes.\n\n return 1 - jStat.hypgeom.cdf(m - x - 1, N, m, N - n);\n\n } else if(m < n) {\n // We want to have the number of things sampled to be less than the\n // successes available. So swap the definitions of successful and sampled.\n return jStat.hypgeom.cdf(x, N, n, m);\n } else {\n // If we get here, half or less of the population was sampled, half or\n // less of it was successes, and we had fewer sampled things than\n // successes. Now we can do this complicated iterative algorithm in an\n // efficient way.\n\n // The basic premise of the algorithm is that we partially normalize our\n // intermediate sum to keep it in a numerically good region, and then\n // finish the normalization at the end.\n\n // Holds the intermediate, scaled total CDF.\n var scaledCDF = 1;\n\n // This variable holds the scaled probability of the current number of\n // successes.\n var scaledPDF = 1;\n\n // This keeps track of how much we have normalized.\n var samplesDone = 0;\n\n for(var i = 0; i < x; i++) {\n // For every possible number of successes up to that observed...\n\n while(scaledCDF > 1 && samplesDone < n) {\n // Intermediate result is growing too big. Apply some of the\n // normalization to shrink everything.\n\n var factor = 1 - (m / (N - samplesDone));\n\n scaledPDF *= factor;\n scaledCDF *= factor;\n\n // Say we've normalized by this sample already.\n samplesDone++;\n }\n\n // Work out the partially-normalized hypergeometric PDF for the next\n // number of successes\n scaledPDF *= (n - i) * (m - i) / ((i + 1) * (N - m - n + i + 1));\n\n // Add to the CDF answer.\n scaledCDF += scaledPDF;\n }\n\n for(; samplesDone < n; samplesDone++) {\n // Apply all the rest of the normalization\n scaledCDF *= 1 - (m / (N - samplesDone));\n }\n\n // Bound answer sanely before returning.\n return Math.min(1, Math.max(0, scaledCDF));\n }\n }\n});\n\n\n\n// extend uniform function with static methods\njStat.extend(jStat.poisson, {\n pdf: function pdf(k, l) {\n if (l < 0 || (k % 1) !== 0 || k < 0) {\n return 0;\n }\n\n return Math.pow(l, k) * Math.exp(-l) / jStat.factorial(k);\n },\n\n cdf: function cdf(x, l) {\n var sumarr = [],\n k = 0;\n if (x < 0) return 0;\n for (; k <= x; k++) {\n sumarr.push(jStat.poisson.pdf(k, l));\n }\n return jStat.sum(sumarr);\n },\n\n mean : function(l) {\n return l;\n },\n\n variance : function(l) {\n return l;\n },\n\n sampleSmall: function sampleSmall(l) {\n var p = 1, k = 0, L = Math.exp(-l);\n do {\n k++;\n p *= jStat._random_fn();\n } while (p > L);\n return k - 1;\n },\n\n sampleLarge: function sampleLarge(l) {\n var lam = l;\n var k;\n var U, V, slam, loglam, a, b, invalpha, vr, us;\n\n slam = Math.sqrt(lam);\n loglam = Math.log(lam);\n b = 0.931 + 2.53 * slam;\n a = -0.059 + 0.02483 * b;\n invalpha = 1.1239 + 1.1328 / (b - 3.4);\n vr = 0.9277 - 3.6224 / (b - 2);\n\n while (1) {\n U = Math.random() - 0.5;\n V = Math.random();\n us = 0.5 - Math.abs(U);\n k = Math.floor((2 * a / us + b) * U + lam + 0.43);\n if ((us >= 0.07) && (V <= vr)) {\n return k;\n }\n if ((k < 0) || ((us < 0.013) && (V > us))) {\n continue;\n }\n /* log(V) == log(0.0) ok here */\n /* if U==0.0 so that us==0.0, log is ok since always returns */\n if ((Math.log(V) + Math.log(invalpha) - Math.log(a / (us * us) + b)) <= (-lam + k * loglam - jStat.loggam(k + 1))) {\n return k;\n }\n }\n },\n\n sample: function sample(l) {\n if (l < 10)\n return this.sampleSmall(l);\n else\n return this.sampleLarge(l);\n }\n});\n\n// extend triangular function with static methods\njStat.extend(jStat.triangular, {\n pdf: function pdf(x, a, b, c) {\n if (b <= a || c < a || c > b) {\n return NaN;\n } else {\n if (x < a || x > b) {\n return 0;\n } else if (x < c) {\n return (2 * (x - a)) / ((b - a) * (c - a));\n } else if (x === c) {\n return (2 / (b - a));\n } else { // x > c\n return (2 * (b - x)) / ((b - a) * (b - c));\n }\n }\n },\n\n cdf: function cdf(x, a, b, c) {\n if (b <= a || c < a || c > b)\n return NaN;\n if (x <= a)\n return 0;\n else if (x >= b)\n return 1;\n if (x <= c)\n return Math.pow(x - a, 2) / ((b - a) * (c - a));\n else // x > c\n return 1 - Math.pow(b - x, 2) / ((b - a) * (b - c));\n },\n\n inv: function inv(p, a, b, c) {\n if (b <= a || c < a || c > b) {\n return NaN;\n } else {\n if (p <= ((c - a) / (b - a))) {\n return a + (b - a) * Math.sqrt(p * ((c - a) / (b - a)));\n } else { // p > ((c - a) / (b - a))\n return a + (b - a) * (1 - Math.sqrt((1 - p) * (1 - ((c - a) / (b - a)))));\n }\n }\n },\n\n mean: function mean(a, b, c) {\n return (a + b + c) / 3;\n },\n\n median: function median(a, b, c) {\n if (c <= (a + b) / 2) {\n return b - Math.sqrt((b - a) * (b - c)) / Math.sqrt(2);\n } else if (c > (a + b) / 2) {\n return a + Math.sqrt((b - a) * (c - a)) / Math.sqrt(2);\n }\n },\n\n mode: function mode(a, b, c) {\n return c;\n },\n\n sample: function sample(a, b, c) {\n var u = jStat._random_fn();\n if (u < ((c - a) / (b - a)))\n return a + Math.sqrt(u * (b - a) * (c - a))\n return b - Math.sqrt((1 - u) * (b - a) * (b - c));\n },\n\n variance: function variance(a, b, c) {\n return (a * a + b * b + c * c - a * b - a * c - b * c) / 18;\n }\n});\n\n\n// extend arcsine function with static methods\njStat.extend(jStat.arcsine, {\n pdf: function pdf(x, a, b) {\n if (b <= a) return NaN;\n\n return (x <= a || x >= b) ? 0 :\n (2 / Math.PI) *\n Math.pow(Math.pow(b - a, 2) -\n Math.pow(2 * x - a - b, 2), -0.5);\n },\n\n cdf: function cdf(x, a, b) {\n if (x < a)\n return 0;\n else if (x < b)\n return (2 / Math.PI) * Math.asin(Math.sqrt((x - a)/(b - a)));\n return 1;\n },\n\n inv: function(p, a, b) {\n return a + (0.5 - 0.5 * Math.cos(Math.PI * p)) * (b - a);\n },\n\n mean: function mean(a, b) {\n if (b <= a) return NaN;\n return (a + b) / 2;\n },\n\n median: function median(a, b) {\n if (b <= a) return NaN;\n return (a + b) / 2;\n },\n\n mode: function mode(/*a, b*/) {\n throw new Error('mode is not yet implemented');\n },\n\n sample: function sample(a, b) {\n return ((a + b) / 2) + ((b - a) / 2) *\n Math.sin(2 * Math.PI * jStat.uniform.sample(0, 1));\n },\n\n variance: function variance(a, b) {\n if (b <= a) return NaN;\n return Math.pow(b - a, 2) / 8;\n }\n});\n\n\nfunction laplaceSign(x) { return x / Math.abs(x); }\n\njStat.extend(jStat.laplace, {\n pdf: function pdf(x, mu, b) {\n return (b <= 0) ? 0 : (Math.exp(-Math.abs(x - mu) / b)) / (2 * b);\n },\n\n cdf: function cdf(x, mu, b) {\n if (b <= 0) { return 0; }\n\n if(x < mu) {\n return 0.5 * Math.exp((x - mu) / b);\n } else {\n return 1 - 0.5 * Math.exp(- (x - mu) / b);\n }\n },\n\n mean: function(mu/*, b*/) {\n return mu;\n },\n\n median: function(mu/*, b*/) {\n return mu;\n },\n\n mode: function(mu/*, b*/) {\n return mu;\n },\n\n variance: function(mu, b) {\n return 2 * b * b;\n },\n\n sample: function sample(mu, b) {\n var u = jStat._random_fn() - 0.5;\n\n return mu - (b * laplaceSign(u) * Math.log(1 - (2 * Math.abs(u))));\n }\n});\n\nfunction tukeyWprob(w, rr, cc) {\n var nleg = 12;\n var ihalf = 6;\n\n var C1 = -30;\n var C2 = -50;\n var C3 = 60;\n var bb = 8;\n var wlar = 3;\n var wincr1 = 2;\n var wincr2 = 3;\n var xleg = [\n 0.981560634246719250690549090149,\n 0.904117256370474856678465866119,\n 0.769902674194304687036893833213,\n 0.587317954286617447296702418941,\n 0.367831498998180193752691536644,\n 0.125233408511468915472441369464\n ];\n var aleg = [\n 0.047175336386511827194615961485,\n 0.106939325995318430960254718194,\n 0.160078328543346226334652529543,\n 0.203167426723065921749064455810,\n 0.233492536538354808760849898925,\n 0.249147045813402785000562436043\n ];\n\n var qsqz = w * 0.5;\n\n // if w >= 16 then the integral lower bound (occurs for c=20)\n // is 0.99999999999995 so return a value of 1.\n\n if (qsqz >= bb)\n return 1.0;\n\n // find (f(w/2) - 1) ^ cc\n // (first term in integral of hartley's form).\n\n var pr_w = 2 * jStat.normal.cdf(qsqz, 0, 1, 1, 0) - 1; // erf(qsqz / M_SQRT2)\n // if pr_w ^ cc < 2e-22 then set pr_w = 0\n if (pr_w >= Math.exp(C2 / cc))\n pr_w = Math.pow(pr_w, cc);\n else\n pr_w = 0.0;\n\n // if w is large then the second component of the\n // integral is small, so fewer intervals are needed.\n\n var wincr;\n if (w > wlar)\n wincr = wincr1;\n else\n wincr = wincr2;\n\n // find the integral of second term of hartley's form\n // for the integral of the range for equal-length\n // intervals using legendre quadrature. limits of\n // integration are from (w/2, 8). two or three\n // equal-length intervals are used.\n\n // blb and bub are lower and upper limits of integration.\n\n var blb = qsqz;\n var binc = (bb - qsqz) / wincr;\n var bub = blb + binc;\n var einsum = 0.0;\n\n // integrate over each interval\n\n var cc1 = cc - 1.0;\n for (var wi = 1; wi <= wincr; wi++) {\n var elsum = 0.0;\n var a = 0.5 * (bub + blb);\n\n // legendre quadrature with order = nleg\n\n var b = 0.5 * (bub - blb);\n\n for (var jj = 1; jj <= nleg; jj++) {\n var j, xx;\n if (ihalf < jj) {\n j = (nleg - jj) + 1;\n xx = xleg[j-1];\n } else {\n j = jj;\n xx = -xleg[j-1];\n }\n var c = b * xx;\n var ac = a + c;\n\n // if exp(-qexpo/2) < 9e-14,\n // then doesn't contribute to integral\n\n var qexpo = ac * ac;\n if (qexpo > C3)\n break;\n\n var pplus = 2 * jStat.normal.cdf(ac, 0, 1, 1, 0);\n var pminus= 2 * jStat.normal.cdf(ac, w, 1, 1, 0);\n\n // if rinsum ^ (cc-1) < 9e-14,\n // then doesn't contribute to integral\n\n var rinsum = (pplus * 0.5) - (pminus * 0.5);\n if (rinsum >= Math.exp(C1 / cc1)) {\n rinsum = (aleg[j-1] * Math.exp(-(0.5 * qexpo))) * Math.pow(rinsum, cc1);\n elsum += rinsum;\n }\n }\n elsum *= (((2.0 * b) * cc) / Math.sqrt(2 * Math.PI));\n einsum += elsum;\n blb = bub;\n bub += binc;\n }\n\n // if pr_w ^ rr < 9e-14, then return 0\n pr_w += einsum;\n if (pr_w <= Math.exp(C1 / rr))\n return 0;\n\n pr_w = Math.pow(pr_w, rr);\n if (pr_w >= 1) // 1 was iMax was eps\n return 1;\n return pr_w;\n}\n\nfunction tukeyQinv(p, c, v) {\n var p0 = 0.322232421088;\n var q0 = 0.993484626060e-01;\n var p1 = -1.0;\n var q1 = 0.588581570495;\n var p2 = -0.342242088547;\n var q2 = 0.531103462366;\n var p3 = -0.204231210125;\n var q3 = 0.103537752850;\n var p4 = -0.453642210148e-04;\n var q4 = 0.38560700634e-02;\n var c1 = 0.8832;\n var c2 = 0.2368;\n var c3 = 1.214;\n var c4 = 1.208;\n var c5 = 1.4142;\n var vmax = 120.0;\n\n var ps = 0.5 - 0.5 * p;\n var yi = Math.sqrt(Math.log(1.0 / (ps * ps)));\n var t = yi + (((( yi * p4 + p3) * yi + p2) * yi + p1) * yi + p0)\n / (((( yi * q4 + q3) * yi + q2) * yi + q1) * yi + q0);\n if (v < vmax) t += (t * t * t + t) / v / 4.0;\n var q = c1 - c2 * t;\n if (v < vmax) q += -c3 / v + c4 * t / v;\n return t * (q * Math.log(c - 1.0) + c5);\n}\n\njStat.extend(jStat.tukey, {\n cdf: function cdf(q, nmeans, df) {\n // Identical implementation as the R ptukey() function as of commit 68947\n var rr = 1;\n var cc = nmeans;\n\n var nlegq = 16;\n var ihalfq = 8;\n\n var eps1 = -30.0;\n var eps2 = 1.0e-14;\n var dhaf = 100.0;\n var dquar = 800.0;\n var deigh = 5000.0;\n var dlarg = 25000.0;\n var ulen1 = 1.0;\n var ulen2 = 0.5;\n var ulen3 = 0.25;\n var ulen4 = 0.125;\n var xlegq = [\n 0.989400934991649932596154173450,\n 0.944575023073232576077988415535,\n 0.865631202387831743880467897712,\n 0.755404408355003033895101194847,\n 0.617876244402643748446671764049,\n 0.458016777657227386342419442984,\n 0.281603550779258913230460501460,\n 0.950125098376374401853193354250e-1\n ];\n var alegq = [\n 0.271524594117540948517805724560e-1,\n 0.622535239386478928628438369944e-1,\n 0.951585116824927848099251076022e-1,\n 0.124628971255533872052476282192,\n 0.149595988816576732081501730547,\n 0.169156519395002538189312079030,\n 0.182603415044923588866763667969,\n 0.189450610455068496285396723208\n ];\n\n if (q <= 0)\n return 0;\n\n // df must be > 1\n // there must be at least two values\n\n if (df < 2 || rr < 1 || cc < 2) return NaN;\n\n if (!Number.isFinite(q))\n return 1;\n\n if (df > dlarg)\n return tukeyWprob(q, rr, cc);\n\n // calculate leading constant\n\n var f2 = df * 0.5;\n var f2lf = ((f2 * Math.log(df)) - (df * Math.log(2))) - jStat.gammaln(f2);\n var f21 = f2 - 1.0;\n\n // integral is divided into unit, half-unit, quarter-unit, or\n // eighth-unit length intervals depending on the value of the\n // degrees of freedom.\n\n var ff4 = df * 0.25;\n var ulen;\n if (df <= dhaf) ulen = ulen1;\n else if (df <= dquar) ulen = ulen2;\n else if (df <= deigh) ulen = ulen3;\n else ulen = ulen4;\n\n f2lf += Math.log(ulen);\n\n // integrate over each subinterval\n\n var ans = 0.0;\n\n for (var i = 1; i <= 50; i++) {\n var otsum = 0.0;\n\n // legendre quadrature with order = nlegq\n // nodes (stored in xlegq) are symmetric around zero.\n\n var twa1 = (2 * i - 1) * ulen;\n\n for (var jj = 1; jj <= nlegq; jj++) {\n var j, t1;\n if (ihalfq < jj) {\n j = jj - ihalfq - 1;\n t1 = (f2lf + (f21 * Math.log(twa1 + (xlegq[j] * ulen))))\n - (((xlegq[j] * ulen) + twa1) * ff4);\n } else {\n j = jj - 1;\n t1 = (f2lf + (f21 * Math.log(twa1 - (xlegq[j] * ulen))))\n + (((xlegq[j] * ulen) - twa1) * ff4);\n }\n\n // if exp(t1) < 9e-14, then doesn't contribute to integral\n var qsqz;\n if (t1 >= eps1) {\n if (ihalfq < jj) {\n qsqz = q * Math.sqrt(((xlegq[j] * ulen) + twa1) * 0.5);\n } else {\n qsqz = q * Math.sqrt(((-(xlegq[j] * ulen)) + twa1) * 0.5);\n }\n\n // call wprob to find integral of range portion\n\n var wprb = tukeyWprob(qsqz, rr, cc);\n var rotsum = (wprb * alegq[j]) * Math.exp(t1);\n otsum += rotsum;\n }\n // end legendre integral for interval i\n // L200:\n }\n\n // if integral for interval i < 1e-14, then stop.\n // However, in order to avoid small area under left tail,\n // at least 1 / ulen intervals are calculated.\n if (i * ulen >= 1.0 && otsum <= eps2)\n break;\n\n // end of interval i\n // L330:\n\n ans += otsum;\n }\n\n if (otsum > eps2) { // not converged\n throw new Error('tukey.cdf failed to converge');\n }\n if (ans > 1)\n ans = 1;\n return ans;\n },\n\n inv: function(p, nmeans, df) {\n // Identical implementation as the R qtukey() function as of commit 68947\n var rr = 1;\n var cc = nmeans;\n\n var eps = 0.0001;\n var maxiter = 50;\n\n // df must be > 1 ; there must be at least two values\n if (df < 2 || rr < 1 || cc < 2) return NaN;\n\n if (p < 0 || p > 1) return NaN;\n if (p === 0) return 0;\n if (p === 1) return Infinity;\n\n // Initial value\n\n var x0 = tukeyQinv(p, cc, df);\n\n // Find prob(value < x0)\n\n var valx0 = jStat.tukey.cdf(x0, nmeans, df) - p;\n\n // Find the second iterate and prob(value < x1).\n // If the first iterate has probability value\n // exceeding p then second iterate is 1 less than\n // first iterate; otherwise it is 1 greater.\n\n var x1;\n if (valx0 > 0.0)\n x1 = Math.max(0.0, x0 - 1.0);\n else\n x1 = x0 + 1.0;\n var valx1 = jStat.tukey.cdf(x1, nmeans, df) - p;\n\n // Find new iterate\n\n var ans;\n for(var iter = 1; iter < maxiter; iter++) {\n ans = x1 - ((valx1 * (x1 - x0)) / (valx1 - valx0));\n valx0 = valx1;\n\n // New iterate must be >= 0\n\n x0 = x1;\n if (ans < 0.0) {\n ans = 0.0;\n valx1 = -p;\n }\n // Find prob(value < new iterate)\n\n valx1 = jStat.tukey.cdf(ans, nmeans, df) - p;\n x1 = ans;\n\n // If the difference between two successive\n // iterates is less than eps, stop\n\n var xabs = Math.abs(x1 - x0);\n if (xabs < eps)\n return ans;\n }\n\n throw new Error('tukey.inv failed to converge');\n }\n});\n\n}(jStat, Math));\n/* Provides functions for the solution of linear system of equations, integration, extrapolation,\n * interpolation, eigenvalue problems, differential equations and PCA analysis. */\n\n(function(jStat, Math) {\n\nvar push = Array.prototype.push;\nvar isArray = jStat.utils.isArray;\n\nfunction isUsable(arg) {\n return isArray(arg) || arg instanceof jStat;\n}\n\njStat.extend({\n\n // add a vector/matrix to a vector/matrix or scalar\n add: function add(arr, arg) {\n // check if arg is a vector or scalar\n if (isUsable(arg)) {\n if (!isUsable(arg[0])) arg = [ arg ];\n return jStat.map(arr, function(value, row, col) {\n return value + arg[row][col];\n });\n }\n return jStat.map(arr, function(value) { return value + arg; });\n },\n\n // subtract a vector or scalar from the vector\n subtract: function subtract(arr, arg) {\n // check if arg is a vector or scalar\n if (isUsable(arg)) {\n if (!isUsable(arg[0])) arg = [ arg ];\n return jStat.map(arr, function(value, row, col) {\n return value - arg[row][col] || 0;\n });\n }\n return jStat.map(arr, function(value) { return value - arg; });\n },\n\n // matrix division\n divide: function divide(arr, arg) {\n if (isUsable(arg)) {\n if (!isUsable(arg[0])) arg = [ arg ];\n return jStat.multiply(arr, jStat.inv(arg));\n }\n return jStat.map(arr, function(value) { return value / arg; });\n },\n\n // matrix multiplication\n multiply: function multiply(arr, arg) {\n var row, col, nrescols, sum, nrow, ncol, res, rescols;\n // eg: arr = 2 arg = 3 -> 6 for res[0][0] statement closure\n if (arr.length === undefined && arg.length === undefined) {\n return arr * arg;\n }\n nrow = arr.length,\n ncol = arr[0].length,\n res = jStat.zeros(nrow, nrescols = (isUsable(arg)) ? arg[0].length : ncol),\n rescols = 0;\n if (isUsable(arg)) {\n for (; rescols < nrescols; rescols++) {\n for (row = 0; row < nrow; row++) {\n sum = 0;\n for (col = 0; col < ncol; col++)\n sum += arr[row][col] * arg[col][rescols];\n res[row][rescols] = sum;\n }\n }\n return (nrow === 1 && rescols === 1) ? res[0][0] : res;\n }\n return jStat.map(arr, function(value) { return value * arg; });\n },\n\n // outer([1,2,3],[4,5,6])\n // ===\n // [[1],[2],[3]] times [[4,5,6]]\n // ->\n // [[4,5,6],[8,10,12],[12,15,18]]\n outer:function outer(A, B) {\n return jStat.multiply(A.map(function(t){ return [t] }), [B]);\n },\n\n\n // Returns the dot product of two matricies\n dot: function dot(arr, arg) {\n if (!isUsable(arr[0])) arr = [ arr ];\n if (!isUsable(arg[0])) arg = [ arg ];\n // convert column to row vector\n var left = (arr[0].length === 1 && arr.length !== 1) ? jStat.transpose(arr) : arr,\n right = (arg[0].length === 1 && arg.length !== 1) ? jStat.transpose(arg) : arg,\n res = [],\n row = 0,\n nrow = left.length,\n ncol = left[0].length,\n sum, col;\n for (; row < nrow; row++) {\n res[row] = [];\n sum = 0;\n for (col = 0; col < ncol; col++)\n sum += left[row][col] * right[row][col];\n res[row] = sum;\n }\n return (res.length === 1) ? res[0] : res;\n },\n\n // raise every element by a scalar\n pow: function pow(arr, arg) {\n return jStat.map(arr, function(value) { return Math.pow(value, arg); });\n },\n\n // exponentiate every element\n exp: function exp(arr) {\n return jStat.map(arr, function(value) { return Math.exp(value); });\n },\n\n // generate the natural log of every element\n log: function exp(arr) {\n return jStat.map(arr, function(value) { return Math.log(value); });\n },\n\n // generate the absolute values of the vector\n abs: function abs(arr) {\n return jStat.map(arr, function(value) { return Math.abs(value); });\n },\n\n // computes the p-norm of the vector\n // In the case that a matrix is passed, uses the first row as the vector\n norm: function norm(arr, p) {\n var nnorm = 0,\n i = 0;\n // check the p-value of the norm, and set for most common case\n if (isNaN(p)) p = 2;\n // check if multi-dimensional array, and make vector correction\n if (isUsable(arr[0])) arr = arr[0];\n // vector norm\n for (; i < arr.length; i++) {\n nnorm += Math.pow(Math.abs(arr[i]), p);\n }\n return Math.pow(nnorm, 1 / p);\n },\n\n // computes the angle between two vectors in rads\n // In case a matrix is passed, this uses the first row as the vector\n angle: function angle(arr, arg) {\n return Math.acos(jStat.dot(arr, arg) / (jStat.norm(arr) * jStat.norm(arg)));\n },\n\n // augment one matrix by another\n // Note: this function returns a matrix, not a jStat object\n aug: function aug(a, b) {\n var newarr = [];\n var i;\n for (i = 0; i < a.length; i++) {\n newarr.push(a[i].slice());\n }\n for (i = 0; i < newarr.length; i++) {\n push.apply(newarr[i], b[i]);\n }\n return newarr;\n },\n\n // The inv() function calculates the inverse of a matrix\n // Create the inverse by augmenting the matrix by the identity matrix of the\n // appropriate size, and then use G-J elimination on the augmented matrix.\n inv: function inv(a) {\n var rows = a.length;\n var cols = a[0].length;\n var b = jStat.identity(rows, cols);\n var c = jStat.gauss_jordan(a, b);\n var result = [];\n var i = 0;\n var j;\n\n //We need to copy the inverse portion to a new matrix to rid G-J artifacts\n for (; i < rows; i++) {\n result[i] = [];\n for (j = cols; j < c[0].length; j++)\n result[i][j - cols] = c[i][j];\n }\n return result;\n },\n\n // calculate the determinant of a matrix\n det: function det(a) {\n if (a.length === 2) {\n return a[0][0] * a[1][1] - a[0][1] * a[1][0];\n }\n\n var determinant = 0;\n for (var i = 0; i < a.length; i++) {\n // build a sub matrix without column `i`\n var submatrix = [];\n for (var row = 1; row < a.length; row++) {\n submatrix[row - 1] = [];\n for (var col = 0; col < a.length; col++) {\n if (col < i) {\n submatrix[row - 1][col] = a[row][col];\n } else if (col > i) {\n submatrix[row - 1][col - 1] = a[row][col];\n }\n }\n }\n\n // alternate between + and - between determinants\n var sign = i % 2 ? -1 : 1;\n determinant += det(submatrix) * a[0][i] * sign;\n }\n\n return determinant\n },\n\n gauss_elimination: function gauss_elimination(a, b) {\n var i = 0,\n j = 0,\n n = a.length,\n m = a[0].length,\n factor = 1,\n sum = 0,\n x = [],\n maug, pivot, temp, k;\n a = jStat.aug(a, b);\n maug = a[0].length;\n for(i = 0; i < n; i++) {\n pivot = a[i][i];\n j = i;\n for (k = i + 1; k < m; k++) {\n if (pivot < Math.abs(a[k][i])) {\n pivot = a[k][i];\n j = k;\n }\n }\n if (j != i) {\n for(k = 0; k < maug; k++) {\n temp = a[i][k];\n a[i][k] = a[j][k];\n a[j][k] = temp;\n }\n }\n for (j = i + 1; j < n; j++) {\n factor = a[j][i] / a[i][i];\n for(k = i; k < maug; k++) {\n a[j][k] = a[j][k] - factor * a[i][k];\n }\n }\n }\n for (i = n - 1; i >= 0; i--) {\n sum = 0;\n for (j = i + 1; j<= n - 1; j++) {\n sum = sum + x[j] * a[i][j];\n }\n x[i] =(a[i][maug - 1] - sum) / a[i][i];\n }\n return x;\n },\n\n gauss_jordan: function gauss_jordan(a, b) {\n var m = jStat.aug(a, b);\n var h = m.length;\n var w = m[0].length;\n var c = 0;\n var x, y, y2;\n // find max pivot\n for (y = 0; y < h; y++) {\n var maxrow = y;\n for (y2 = y+1; y2 < h; y2++) {\n if (Math.abs(m[y2][y]) > Math.abs(m[maxrow][y]))\n maxrow = y2;\n }\n var tmp = m[y];\n m[y] = m[maxrow];\n m[maxrow] = tmp\n for (y2 = y+1; y2 < h; y2++) {\n c = m[y2][y] / m[y][y];\n for (x = y; x < w; x++) {\n m[y2][x] -= m[y][x] * c;\n }\n }\n }\n // backsubstitute\n for (y = h-1; y >= 0; y--) {\n c = m[y][y];\n for (y2 = 0; y2 < y; y2++) {\n for (x = w-1; x > y-1; x--) {\n m[y2][x] -= m[y][x] * m[y2][y] / c;\n }\n }\n m[y][y] /= c;\n for (x = h; x < w; x++) {\n m[y][x] /= c;\n }\n }\n return m;\n },\n\n // solve equation\n // Ax=b\n // A is upper triangular matrix\n // A=[[1,2,3],[0,4,5],[0,6,7]]\n // b=[1,2,3]\n // triaUpSolve(A,b) // -> [2.666,0.1666,1.666]\n // if you use matrix style\n // A=[[1,2,3],[0,4,5],[0,6,7]]\n // b=[[1],[2],[3]]\n // will return [[2.666],[0.1666],[1.666]]\n triaUpSolve: function triaUpSolve(A, b) {\n var size = A[0].length;\n var x = jStat.zeros(1, size)[0];\n var parts;\n var matrix_mode = false;\n\n if (b[0].length != undefined) {\n b = b.map(function(i){ return i[0] });\n matrix_mode = true;\n }\n\n jStat.arange(size - 1, -1, -1).forEach(function(i) {\n parts = jStat.arange(i + 1, size).map(function(j) {\n return x[j] * A[i][j];\n });\n x[i] = (b[i] - jStat.sum(parts)) / A[i][i];\n });\n\n if (matrix_mode)\n return x.map(function(i){ return [i] });\n return x;\n },\n\n triaLowSolve: function triaLowSolve(A, b) {\n // like to triaUpSolve but A is lower triangular matrix\n var size = A[0].length;\n var x = jStat.zeros(1, size)[0];\n var parts;\n\n var matrix_mode=false;\n if (b[0].length != undefined) {\n b = b.map(function(i){ return i[0] });\n matrix_mode = true;\n }\n\n jStat.arange(size).forEach(function(i) {\n parts = jStat.arange(i).map(function(j) {\n return A[i][j] * x[j];\n });\n x[i] = (b[i] - jStat.sum(parts)) / A[i][i];\n })\n\n if (matrix_mode)\n return x.map(function(i){ return [i] });\n return x;\n },\n\n\n // A -> [L,U]\n // A=LU\n // L is lower triangular matrix\n // U is upper triangular matrix\n lu: function lu(A) {\n var size = A.length;\n //var L=jStat.diagonal(jStat.ones(1,size)[0]);\n var L = jStat.identity(size);\n var R = jStat.zeros(A.length, A[0].length);\n var parts;\n jStat.arange(size).forEach(function(t) {\n R[0][t] = A[0][t];\n });\n jStat.arange(1, size).forEach(function(l) {\n jStat.arange(l).forEach(function(i) {\n parts = jStat.arange(i).map(function(jj) {\n return L[l][jj] * R[jj][i];\n });\n L[l][i] = (A[l][i] - jStat.sum(parts)) / R[i][i];\n });\n jStat.arange(l, size).forEach(function(j) {\n parts = jStat.arange(l).map(function(jj) {\n return L[l][jj] * R[jj][j];\n });\n R[l][j] = A[parts.length][j] - jStat.sum(parts);\n });\n });\n return [L, R];\n },\n\n // A -> T\n // A=TT'\n // T is lower triangular matrix\n cholesky: function cholesky(A) {\n var size = A.length;\n var T = jStat.zeros(A.length, A[0].length);\n var parts;\n jStat.arange(size).forEach(function(i) {\n parts = jStat.arange(i).map(function(t) {\n return Math.pow(T[i][t],2);\n });\n T[i][i] = Math.sqrt(A[i][i] - jStat.sum(parts));\n jStat.arange(i + 1, size).forEach(function(j) {\n parts = jStat.arange(i).map(function(t) {\n return T[i][t] * T[j][t];\n });\n T[j][i] = (A[i][j] - jStat.sum(parts)) / T[i][i];\n });\n });\n return T;\n },\n\n\n gauss_jacobi: function gauss_jacobi(a, b, x, r) {\n var i = 0;\n var j = 0;\n var n = a.length;\n var l = [];\n var u = [];\n var d = [];\n var xv, c, h, xk;\n for (; i < n; i++) {\n l[i] = [];\n u[i] = [];\n d[i] = [];\n for (j = 0; j < n; j++) {\n if (i > j) {\n l[i][j] = a[i][j];\n u[i][j] = d[i][j] = 0;\n } else if (i < j) {\n u[i][j] = a[i][j];\n l[i][j] = d[i][j] = 0;\n } else {\n d[i][j] = a[i][j];\n l[i][j] = u[i][j] = 0;\n }\n }\n }\n h = jStat.multiply(jStat.multiply(jStat.inv(d), jStat.add(l, u)), -1);\n c = jStat.multiply(jStat.inv(d), b);\n xv = x;\n xk = jStat.add(jStat.multiply(h, x), c);\n i = 2;\n while (Math.abs(jStat.norm(jStat.subtract(xk,xv))) > r) {\n xv = xk;\n xk = jStat.add(jStat.multiply(h, xv), c);\n i++;\n }\n return xk;\n },\n\n gauss_seidel: function gauss_seidel(a, b, x, r) {\n var i = 0;\n var n = a.length;\n var l = [];\n var u = [];\n var d = [];\n var j, xv, c, h, xk;\n for (; i < n; i++) {\n l[i] = [];\n u[i] = [];\n d[i] = [];\n for (j = 0; j < n; j++) {\n if (i > j) {\n l[i][j] = a[i][j];\n u[i][j] = d[i][j] = 0;\n } else if (i < j) {\n u[i][j] = a[i][j];\n l[i][j] = d[i][j] = 0;\n } else {\n d[i][j] = a[i][j];\n l[i][j] = u[i][j] = 0;\n }\n }\n }\n h = jStat.multiply(jStat.multiply(jStat.inv(jStat.add(d, l)), u), -1);\n c = jStat.multiply(jStat.inv(jStat.add(d, l)), b);\n xv = x;\n xk = jStat.add(jStat.multiply(h, x), c);\n i = 2;\n while (Math.abs(jStat.norm(jStat.subtract(xk, xv))) > r) {\n xv = xk;\n xk = jStat.add(jStat.multiply(h, xv), c);\n i = i + 1;\n }\n return xk;\n },\n\n SOR: function SOR(a, b, x, r, w) {\n var i = 0;\n var n = a.length;\n var l = [];\n var u = [];\n var d = [];\n var j, xv, c, h, xk;\n for (; i < n; i++) {\n l[i] = [];\n u[i] = [];\n d[i] = [];\n for (j = 0; j < n; j++) {\n if (i > j) {\n l[i][j] = a[i][j];\n u[i][j] = d[i][j] = 0;\n } else if (i < j) {\n u[i][j] = a[i][j];\n l[i][j] = d[i][j] = 0;\n } else {\n d[i][j] = a[i][j];\n l[i][j] = u[i][j] = 0;\n }\n }\n }\n h = jStat.multiply(jStat.inv(jStat.add(d, jStat.multiply(l, w))),\n jStat.subtract(jStat.multiply(d, 1 - w),\n jStat.multiply(u, w)));\n c = jStat.multiply(jStat.multiply(jStat.inv(jStat.add(d,\n jStat.multiply(l, w))), b), w);\n xv = x;\n xk = jStat.add(jStat.multiply(h, x), c);\n i = 2;\n while (Math.abs(jStat.norm(jStat.subtract(xk, xv))) > r) {\n xv = xk;\n xk = jStat.add(jStat.multiply(h, xv), c);\n i++;\n }\n return xk;\n },\n\n householder: function householder(a) {\n var m = a.length;\n var n = a[0].length;\n var i = 0;\n var w = [];\n var p = [];\n var alpha, r, k, j, factor;\n for (; i < m - 1; i++) {\n alpha = 0;\n for (j = i + 1; j < n; j++)\n alpha += (a[j][i] * a[j][i]);\n factor = (a[i + 1][i] > 0) ? -1 : 1;\n alpha = factor * Math.sqrt(alpha);\n r = Math.sqrt((((alpha * alpha) - a[i + 1][i] * alpha) / 2));\n w = jStat.zeros(m, 1);\n w[i + 1][0] = (a[i + 1][i] - alpha) / (2 * r);\n for (k = i + 2; k < m; k++) w[k][0] = a[k][i] / (2 * r);\n p = jStat.subtract(jStat.identity(m, n),\n jStat.multiply(jStat.multiply(w, jStat.transpose(w)), 2));\n a = jStat.multiply(p, jStat.multiply(a, p));\n }\n return a;\n },\n\n // A -> [Q,R]\n // Q is orthogonal matrix\n // R is upper triangular\n QR: (function() {\n // x -> Q\n // find a orthogonal matrix Q st.\n // Qx=y\n // y is [||x||,0,0,...]\n\n // quick ref\n var sum = jStat.sum;\n var range = jStat.arange;\n\n function qr2(x) {\n // quick impletation\n // https://www.stat.wisc.edu/~larget/math496/qr.html\n\n var n = x.length;\n var p = x[0].length;\n\n var r = jStat.zeros(p, p);\n x = jStat.copy(x);\n\n var i,j,k;\n for(j = 0; j < p; j++){\n r[j][j] = Math.sqrt(sum(range(n).map(function(i){\n return x[i][j] * x[i][j];\n })));\n for(i = 0; i < n; i++){\n x[i][j] = x[i][j] / r[j][j];\n }\n for(k = j+1; k < p; k++){\n r[j][k] = sum(range(n).map(function(i){\n return x[i][j] * x[i][k];\n }));\n for(i = 0; i < n; i++){\n x[i][k] = x[i][k] - x[i][j]*r[j][k];\n }\n }\n }\n return [x, r];\n }\n\n return qr2;\n }()),\n\n lstsq: (function() {\n // solve least squard problem for Ax=b as QR decomposition way if b is\n // [[b1],[b2],[b3]] form will return [[x1],[x2],[x3]] array form solution\n // else b is [b1,b2,b3] form will return [x1,x2,x3] array form solution\n function R_I(A) {\n A = jStat.copy(A);\n var size = A.length;\n var I = jStat.identity(size);\n jStat.arange(size - 1, -1, -1).forEach(function(i) {\n jStat.sliceAssign(\n I, { row: i }, jStat.divide(jStat.slice(I, { row: i }), A[i][i]));\n jStat.sliceAssign(\n A, { row: i }, jStat.divide(jStat.slice(A, { row: i }), A[i][i]));\n jStat.arange(i).forEach(function(j) {\n var c = jStat.multiply(A[j][i], -1);\n var Aj = jStat.slice(A, { row: j });\n var cAi = jStat.multiply(jStat.slice(A, { row: i }), c);\n jStat.sliceAssign(A, { row: j }, jStat.add(Aj, cAi));\n var Ij = jStat.slice(I, { row: j });\n var cIi = jStat.multiply(jStat.slice(I, { row: i }), c);\n jStat.sliceAssign(I, { row: j }, jStat.add(Ij, cIi));\n })\n });\n return I;\n }\n\n function qr_solve(A, b){\n var array_mode = false;\n if (b[0].length === undefined) {\n // [c1,c2,c3] mode\n b = b.map(function(x){ return [x] });\n array_mode = true;\n }\n var QR = jStat.QR(A);\n var Q = QR[0];\n var R = QR[1];\n var attrs = A[0].length;\n var Q1 = jStat.slice(Q,{col:{end:attrs}});\n var R1 = jStat.slice(R,{row:{end:attrs}});\n var RI = R_I(R1);\n var Q2 = jStat.transpose(Q1);\n\n if(Q2[0].length === undefined){\n Q2 = [Q2]; // The confusing jStat.multifly implementation threat nature process again.\n }\n\n var x = jStat.multiply(jStat.multiply(RI, Q2), b);\n\n if(x.length === undefined){\n x = [[x]]; // The confusing jStat.multifly implementation threat nature process again.\n }\n\n\n if (array_mode)\n return x.map(function(i){ return i[0] });\n return x;\n }\n\n return qr_solve;\n }()),\n\n jacobi: function jacobi(a) {\n var condition = 1;\n var n = a.length;\n var e = jStat.identity(n, n);\n var ev = [];\n var b, i, j, p, q, maxim, theta, s;\n // condition === 1 only if tolerance is not reached\n while (condition === 1) {\n maxim = a[0][1];\n p = 0;\n q = 1;\n for (i = 0; i < n; i++) {\n for (j = 0; j < n; j++) {\n if (i != j) {\n if (maxim < Math.abs(a[i][j])) {\n maxim = Math.abs(a[i][j]);\n p = i;\n q = j;\n }\n }\n }\n }\n if (a[p][p] === a[q][q])\n theta = (a[p][q] > 0) ? Math.PI / 4 : -Math.PI / 4;\n else\n theta = Math.atan(2 * a[p][q] / (a[p][p] - a[q][q])) / 2;\n s = jStat.identity(n, n);\n s[p][p] = Math.cos(theta);\n s[p][q] = -Math.sin(theta);\n s[q][p] = Math.sin(theta);\n s[q][q] = Math.cos(theta);\n // eigen vector matrix\n e = jStat.multiply(e, s);\n b = jStat.multiply(jStat.multiply(jStat.inv(s), a), s);\n a = b;\n condition = 0;\n for (i = 1; i < n; i++) {\n for (j = 1; j < n; j++) {\n if (i != j && Math.abs(a[i][j]) > 0.001) {\n condition = 1;\n }\n }\n }\n }\n for (i = 0; i < n; i++) ev.push(a[i][i]);\n //returns both the eigenvalue and eigenmatrix\n return [e, ev];\n },\n\n rungekutta: function rungekutta(f, h, p, t_j, u_j, order) {\n var k1, k2, u_j1, k3, k4;\n if (order === 2) {\n while (t_j <= p) {\n k1 = h * f(t_j, u_j);\n k2 = h * f(t_j + h, u_j + k1);\n u_j1 = u_j + (k1 + k2) / 2;\n u_j = u_j1;\n t_j = t_j + h;\n }\n }\n if (order === 4) {\n while (t_j <= p) {\n k1 = h * f(t_j, u_j);\n k2 = h * f(t_j + h / 2, u_j + k1 / 2);\n k3 = h * f(t_j + h / 2, u_j + k2 / 2);\n k4 = h * f(t_j +h, u_j + k3);\n u_j1 = u_j + (k1 + 2 * k2 + 2 * k3 + k4) / 6;\n u_j = u_j1;\n t_j = t_j + h;\n }\n }\n return u_j;\n },\n\n romberg: function romberg(f, a, b, order) {\n var i = 0;\n var h = (b - a) / 2;\n var x = [];\n var h1 = [];\n var g = [];\n var m, a1, j, k, I;\n while (i < order / 2) {\n I = f(a);\n for (j = a, k = 0; j <= b; j = j + h, k++) x[k] = j;\n m = x.length;\n for (j = 1; j < m - 1; j++) {\n I += (((j % 2) !== 0) ? 4 : 2) * f(x[j]);\n }\n I = (h / 3) * (I + f(b));\n g[i] = I;\n h /= 2;\n i++;\n }\n a1 = g.length;\n m = 1;\n while (a1 !== 1) {\n for (j = 0; j < a1 - 1; j++)\n h1[j] = ((Math.pow(4, m)) * g[j + 1] - g[j]) / (Math.pow(4, m) - 1);\n a1 = h1.length;\n g = h1;\n h1 = [];\n m++;\n }\n return g;\n },\n\n richardson: function richardson(X, f, x, h) {\n function pos(X, x) {\n var i = 0;\n var n = X.length;\n var p;\n for (; i < n; i++)\n if (X[i] === x) p = i;\n return p;\n }\n var h_min = Math.abs(x - X[pos(X, x) + 1]);\n var i = 0;\n var g = [];\n var h1 = [];\n var y1, y2, m, a, j;\n while (h >= h_min) {\n y1 = pos(X, x + h);\n y2 = pos(X, x);\n g[i] = (f[y1] - 2 * f[y2] + f[2 * y2 - y1]) / (h * h);\n h /= 2;\n i++;\n }\n a = g.length;\n m = 1;\n while (a != 1) {\n for (j = 0; j < a - 1; j++)\n h1[j] = ((Math.pow(4, m)) * g[j + 1] - g[j]) / (Math.pow(4, m) - 1);\n a = h1.length;\n g = h1;\n h1 = [];\n m++;\n }\n return g;\n },\n\n simpson: function simpson(f, a, b, n) {\n var h = (b - a) / n;\n var I = f(a);\n var x = [];\n var j = a;\n var k = 0;\n var i = 1;\n var m;\n for (; j <= b; j = j + h, k++)\n x[k] = j;\n m = x.length;\n for (; i < m - 1; i++) {\n I += ((i % 2 !== 0) ? 4 : 2) * f(x[i]);\n }\n return (h / 3) * (I + f(b));\n },\n\n hermite: function hermite(X, F, dF, value) {\n var n = X.length;\n var p = 0;\n var i = 0;\n var l = [];\n var dl = [];\n var A = [];\n var B = [];\n var j;\n for (; i < n; i++) {\n l[i] = 1;\n for (j = 0; j < n; j++) {\n if (i != j) l[i] *= (value - X[j]) / (X[i] - X[j]);\n }\n dl[i] = 0;\n for (j = 0; j < n; j++) {\n if (i != j) dl[i] += 1 / (X [i] - X[j]);\n }\n A[i] = (1 - 2 * (value - X[i]) * dl[i]) * (l[i] * l[i]);\n B[i] = (value - X[i]) * (l[i] * l[i]);\n p += (A[i] * F[i] + B[i] * dF[i]);\n }\n return p;\n },\n\n lagrange: function lagrange(X, F, value) {\n var p = 0;\n var i = 0;\n var j, l;\n var n = X.length;\n for (; i < n; i++) {\n l = F[i];\n for (j = 0; j < n; j++) {\n // calculating the lagrange polynomial L_i\n if (i != j) l *= (value - X[j]) / (X[i] - X[j]);\n }\n // adding the lagrange polynomials found above\n p += l;\n }\n return p;\n },\n\n cubic_spline: function cubic_spline(X, F, value) {\n var n = X.length;\n var i = 0, j;\n var A = [];\n var B = [];\n var alpha = [];\n var c = [];\n var h = [];\n var b = [];\n var d = [];\n for (; i < n - 1; i++)\n h[i] = X[i + 1] - X[i];\n alpha[0] = 0;\n for (i = 1; i < n - 1; i++) {\n alpha[i] = (3 / h[i]) * (F[i + 1] - F[i]) -\n (3 / h[i-1]) * (F[i] - F[i-1]);\n }\n for (i = 1; i < n - 1; i++) {\n A[i] = [];\n B[i] = [];\n A[i][i-1] = h[i-1];\n A[i][i] = 2 * (h[i - 1] + h[i]);\n A[i][i+1] = h[i];\n B[i][0] = alpha[i];\n }\n c = jStat.multiply(jStat.inv(A), B);\n for (j = 0; j < n - 1; j++) {\n b[j] = (F[j + 1] - F[j]) / h[j] - h[j] * (c[j + 1][0] + 2 * c[j][0]) / 3;\n d[j] = (c[j + 1][0] - c[j][0]) / (3 * h[j]);\n }\n for (j = 0; j < n; j++) {\n if (X[j] > value) break;\n }\n j -= 1;\n return F[j] + (value - X[j]) * b[j] + jStat.sq(value-X[j]) *\n c[j] + (value - X[j]) * jStat.sq(value - X[j]) * d[j];\n },\n\n gauss_quadrature: function gauss_quadrature() {\n throw new Error('gauss_quadrature not yet implemented');\n },\n\n PCA: function PCA(X) {\n var m = X.length;\n var n = X[0].length;\n var i = 0;\n var j, temp1;\n var u = [];\n var D = [];\n var result = [];\n var temp2 = [];\n var Y = [];\n var Bt = [];\n var B = [];\n var C = [];\n var V = [];\n var Vt = [];\n for (i = 0; i < m; i++) {\n u[i] = jStat.sum(X[i]) / n;\n }\n for (i = 0; i < n; i++) {\n B[i] = [];\n for(j = 0; j < m; j++) {\n B[i][j] = X[j][i] - u[j];\n }\n }\n B = jStat.transpose(B);\n for (i = 0; i < m; i++) {\n C[i] = [];\n for (j = 0; j < m; j++) {\n C[i][j] = (jStat.dot([B[i]], [B[j]])) / (n - 1);\n }\n }\n result = jStat.jacobi(C);\n V = result[0];\n D = result[1];\n Vt = jStat.transpose(V);\n for (i = 0; i < D.length; i++) {\n for (j = i; j < D.length; j++) {\n if(D[i] < D[j]) {\n temp1 = D[i];\n D[i] = D[j];\n D[j] = temp1;\n temp2 = Vt[i];\n Vt[i] = Vt[j];\n Vt[j] = temp2;\n }\n }\n }\n Bt = jStat.transpose(B);\n for (i = 0; i < m; i++) {\n Y[i] = [];\n for (j = 0; j < Bt.length; j++) {\n Y[i][j] = jStat.dot([Vt[i]], [Bt[j]]);\n }\n }\n return [X, D, Vt, Y];\n }\n});\n\n// extend jStat.fn with methods that require one argument\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n jStat.fn[passfunc] = function(arg, func) {\n var tmpthis = this;\n // check for callback\n if (func) {\n setTimeout(function() {\n func.call(tmpthis, jStat.fn[passfunc].call(tmpthis, arg));\n }, 15);\n return this;\n }\n if (typeof jStat[passfunc](this, arg) === 'number')\n return jStat[passfunc](this, arg);\n else\n return jStat(jStat[passfunc](this, arg));\n };\n }(funcs[i]));\n}('add divide multiply subtract dot pow exp log abs norm angle'.split(' ')));\n\n}(jStat, Math));\n(function(jStat, Math) {\n\nvar slice = [].slice;\nvar isNumber = jStat.utils.isNumber;\nvar isArray = jStat.utils.isArray;\n\n// flag==true denotes use of sample standard deviation\n// Z Statistics\njStat.extend({\n // 2 different parameter lists:\n // (value, mean, sd)\n // (value, array, flag)\n zscore: function zscore() {\n var args = slice.call(arguments);\n if (isNumber(args[1])) {\n return (args[0] - args[1]) / args[2];\n }\n return (args[0] - jStat.mean(args[1])) / jStat.stdev(args[1], args[2]);\n },\n\n // 3 different paramter lists:\n // (value, mean, sd, sides)\n // (zscore, sides)\n // (value, array, sides, flag)\n ztest: function ztest() {\n var args = slice.call(arguments);\n var z;\n if (isArray(args[1])) {\n // (value, array, sides, flag)\n z = jStat.zscore(args[0],args[1],args[3]);\n return (args[2] === 1) ?\n (jStat.normal.cdf(-Math.abs(z), 0, 1)) :\n (jStat.normal.cdf(-Math.abs(z), 0, 1)*2);\n } else {\n if (args.length > 2) {\n // (value, mean, sd, sides)\n z = jStat.zscore(args[0],args[1],args[2]);\n return (args[3] === 1) ?\n (jStat.normal.cdf(-Math.abs(z),0,1)) :\n (jStat.normal.cdf(-Math.abs(z),0,1)* 2);\n } else {\n // (zscore, sides)\n z = args[0];\n return (args[1] === 1) ?\n (jStat.normal.cdf(-Math.abs(z),0,1)) :\n (jStat.normal.cdf(-Math.abs(z),0,1)*2);\n }\n }\n }\n});\n\njStat.extend(jStat.fn, {\n zscore: function zscore(value, flag) {\n return (value - this.mean()) / this.stdev(flag);\n },\n\n ztest: function ztest(value, sides, flag) {\n var zscore = Math.abs(this.zscore(value, flag));\n return (sides === 1) ?\n (jStat.normal.cdf(-zscore, 0, 1)) :\n (jStat.normal.cdf(-zscore, 0, 1) * 2);\n }\n});\n\n// T Statistics\njStat.extend({\n // 2 parameter lists\n // (value, mean, sd, n)\n // (value, array)\n tscore: function tscore() {\n var args = slice.call(arguments);\n return (args.length === 4) ?\n ((args[0] - args[1]) / (args[2] / Math.sqrt(args[3]))) :\n ((args[0] - jStat.mean(args[1])) /\n (jStat.stdev(args[1], true) / Math.sqrt(args[1].length)));\n },\n\n // 3 different paramter lists:\n // (value, mean, sd, n, sides)\n // (tscore, n, sides)\n // (value, array, sides)\n ttest: function ttest() {\n var args = slice.call(arguments);\n var tscore;\n if (args.length === 5) {\n tscore = Math.abs(jStat.tscore(args[0], args[1], args[2], args[3]));\n return (args[4] === 1) ?\n (jStat.studentt.cdf(-tscore, args[3]-1)) :\n (jStat.studentt.cdf(-tscore, args[3]-1)*2);\n }\n if (isNumber(args[1])) {\n tscore = Math.abs(args[0])\n return (args[2] == 1) ?\n (jStat.studentt.cdf(-tscore, args[1]-1)) :\n (jStat.studentt.cdf(-tscore, args[1]-1) * 2);\n }\n tscore = Math.abs(jStat.tscore(args[0], args[1]))\n return (args[2] == 1) ?\n (jStat.studentt.cdf(-tscore, args[1].length-1)) :\n (jStat.studentt.cdf(-tscore, args[1].length-1) * 2);\n }\n});\n\njStat.extend(jStat.fn, {\n tscore: function tscore(value) {\n return (value - this.mean()) / (this.stdev(true) / Math.sqrt(this.cols()));\n },\n\n ttest: function ttest(value, sides) {\n return (sides === 1) ?\n (1 - jStat.studentt.cdf(Math.abs(this.tscore(value)), this.cols()-1)) :\n (jStat.studentt.cdf(-Math.abs(this.tscore(value)), this.cols()-1)*2);\n }\n});\n\n// F Statistics\njStat.extend({\n // Paramter list is as follows:\n // (array1, array2, array3, ...)\n // or it is an array of arrays\n // array of arrays conversion\n anovafscore: function anovafscore() {\n var args = slice.call(arguments),\n expVar, sample, sampMean, sampSampMean, tmpargs, unexpVar, i, j;\n if (args.length === 1) {\n tmpargs = new Array(args[0].length);\n for (i = 0; i < args[0].length; i++) {\n tmpargs[i] = args[0][i];\n }\n args = tmpargs;\n }\n // Builds sample array\n sample = new Array();\n for (i = 0; i < args.length; i++) {\n sample = sample.concat(args[i]);\n }\n sampMean = jStat.mean(sample);\n // Computes the explained variance\n expVar = 0;\n for (i = 0; i < args.length; i++) {\n expVar = expVar + args[i].length * Math.pow(jStat.mean(args[i]) - sampMean, 2);\n }\n expVar /= (args.length - 1);\n // Computes unexplained variance\n unexpVar = 0;\n for (i = 0; i < args.length; i++) {\n sampSampMean = jStat.mean(args[i]);\n for (j = 0; j < args[i].length; j++) {\n unexpVar += Math.pow(args[i][j] - sampSampMean, 2);\n }\n }\n unexpVar /= (sample.length - args.length);\n return expVar / unexpVar;\n },\n\n // 2 different paramter setups\n // (array1, array2, array3, ...)\n // (anovafscore, df1, df2)\n anovaftest: function anovaftest() {\n var args = slice.call(arguments),\n df1, df2, n, i;\n if (isNumber(args[0])) {\n return 1 - jStat.centralF.cdf(args[0], args[1], args[2]);\n }\n var anovafscore = jStat.anovafscore(args);\n df1 = args.length - 1;\n n = 0;\n for (i = 0; i < args.length; i++) {\n n = n + args[i].length;\n }\n df2 = n - df1 - 1;\n return 1 - jStat.centralF.cdf(anovafscore, df1, df2);\n },\n\n ftest: function ftest(fscore, df1, df2) {\n return 1 - jStat.centralF.cdf(fscore, df1, df2);\n }\n});\n\njStat.extend(jStat.fn, {\n anovafscore: function anovafscore() {\n return jStat.anovafscore(this.toArray());\n },\n\n anovaftes: function anovaftes() {\n var n = 0;\n var i;\n for (i = 0; i < this.length; i++) {\n n = n + this[i].length;\n }\n return jStat.ftest(this.anovafscore(), this.length - 1, n - this.length);\n }\n});\n\n// Tukey's range test\njStat.extend({\n // 2 parameter lists\n // (mean1, mean2, n1, n2, sd)\n // (array1, array2, sd)\n qscore: function qscore() {\n var args = slice.call(arguments);\n var mean1, mean2, n1, n2, sd;\n if (isNumber(args[0])) {\n mean1 = args[0];\n mean2 = args[1];\n n1 = args[2];\n n2 = args[3];\n sd = args[4];\n } else {\n mean1 = jStat.mean(args[0]);\n mean2 = jStat.mean(args[1]);\n n1 = args[0].length;\n n2 = args[1].length;\n sd = args[2];\n }\n return Math.abs(mean1 - mean2) / (sd * Math.sqrt((1 / n1 + 1 / n2) / 2));\n },\n\n // 3 different parameter lists:\n // (qscore, n, k)\n // (mean1, mean2, n1, n2, sd, n, k)\n // (array1, array2, sd, n, k)\n qtest: function qtest() {\n var args = slice.call(arguments);\n\n var qscore;\n if (args.length === 3) {\n qscore = args[0];\n args = args.slice(1);\n } else if (args.length === 7) {\n qscore = jStat.qscore(args[0], args[1], args[2], args[3], args[4]);\n args = args.slice(5);\n } else {\n qscore = jStat.qscore(args[0], args[1], args[2]);\n args = args.slice(3);\n }\n\n var n = args[0];\n var k = args[1];\n\n return 1 - jStat.tukey.cdf(qscore, k, n - k);\n },\n\n tukeyhsd: function tukeyhsd(arrays) {\n var sd = jStat.pooledstdev(arrays);\n var means = arrays.map(function (arr) {return jStat.mean(arr);});\n var n = arrays.reduce(function (n, arr) {return n + arr.length;}, 0);\n\n var results = [];\n for (var i = 0; i < arrays.length; ++i) {\n for (var j = i + 1; j < arrays.length; ++j) {\n var p = jStat.qtest(means[i], means[j], arrays[i].length, arrays[j].length, sd, n, arrays.length);\n results.push([[i, j], p]);\n }\n }\n\n return results;\n }\n});\n\n// Error Bounds\njStat.extend({\n // 2 different parameter setups\n // (value, alpha, sd, n)\n // (value, alpha, array)\n normalci: function normalci() {\n var args = slice.call(arguments),\n ans = new Array(2),\n change;\n if (args.length === 4) {\n change = Math.abs(jStat.normal.inv(args[1] / 2, 0, 1) *\n args[2] / Math.sqrt(args[3]));\n } else {\n change = Math.abs(jStat.normal.inv(args[1] / 2, 0, 1) *\n jStat.stdev(args[2]) / Math.sqrt(args[2].length));\n }\n ans[0] = args[0] - change;\n ans[1] = args[0] + change;\n return ans;\n },\n\n // 2 different parameter setups\n // (value, alpha, sd, n)\n // (value, alpha, array)\n tci: function tci() {\n var args = slice.call(arguments),\n ans = new Array(2),\n change;\n if (args.length === 4) {\n change = Math.abs(jStat.studentt.inv(args[1] / 2, args[3] - 1) *\n args[2] / Math.sqrt(args[3]));\n } else {\n change = Math.abs(jStat.studentt.inv(args[1] / 2, args[2].length - 1) *\n jStat.stdev(args[2], true) / Math.sqrt(args[2].length));\n }\n ans[0] = args[0] - change;\n ans[1] = args[0] + change;\n return ans;\n },\n\n significant: function significant(pvalue, alpha) {\n return pvalue < alpha;\n }\n});\n\njStat.extend(jStat.fn, {\n normalci: function normalci(value, alpha) {\n return jStat.normalci(value, alpha, this.toArray());\n },\n\n tci: function tci(value, alpha) {\n return jStat.tci(value, alpha, this.toArray());\n }\n});\n\n// internal method for calculating the z-score for a difference of proportions test\nfunction differenceOfProportions(p1, n1, p2, n2) {\n if (p1 > 1 || p2 > 1 || p1 <= 0 || p2 <= 0) {\n throw new Error(\"Proportions should be greater than 0 and less than 1\")\n }\n var pooled = (p1 * n1 + p2 * n2) / (n1 + n2);\n var se = Math.sqrt(pooled * (1 - pooled) * ((1/n1) + (1/n2)));\n return (p1 - p2) / se;\n}\n\n// Difference of Proportions\njStat.extend(jStat.fn, {\n oneSidedDifferenceOfProportions: function oneSidedDifferenceOfProportions(p1, n1, p2, n2) {\n var z = differenceOfProportions(p1, n1, p2, n2);\n return jStat.ztest(z, 1);\n },\n\n twoSidedDifferenceOfProportions: function twoSidedDifferenceOfProportions(p1, n1, p2, n2) {\n var z = differenceOfProportions(p1, n1, p2, n2);\n return jStat.ztest(z, 2);\n }\n});\n\n}(jStat, Math));\njStat.models = (function(){\n function sub_regress(exog) {\n var var_count = exog[0].length;\n var modelList = jStat.arange(var_count).map(function(endog_index) {\n var exog_index =\n jStat.arange(var_count).filter(function(i){return i!==endog_index});\n return ols(jStat.col(exog, endog_index).map(function(x){ return x[0] }),\n jStat.col(exog, exog_index))\n });\n return modelList;\n }\n\n // do OLS model regress\n // exog have include const columns ,it will not generate it .In fact, exog is\n // \"design matrix\" look at\n //https://en.wikipedia.org/wiki/Design_matrix\n function ols(endog, exog) {\n var nobs = endog.length;\n var df_model = exog[0].length - 1;\n var df_resid = nobs-df_model - 1;\n var coef = jStat.lstsq(exog, endog);\n var predict =\n jStat.multiply(exog, coef.map(function(x) { return [x] }))\n .map(function(p) { return p[0] });\n var resid = jStat.subtract(endog, predict);\n var ybar = jStat.mean(endog);\n // constant cause problem\n // var SST = jStat.sum(endog.map(function(y) {\n // return Math.pow(y-ybar,2);\n // }));\n var SSE = jStat.sum(predict.map(function(f) {\n return Math.pow(f - ybar, 2);\n }));\n var SSR = jStat.sum(endog.map(function(y, i) {\n return Math.pow(y - predict[i], 2);\n }));\n var SST = SSE + SSR;\n var R2 = (SSE / SST);\n return {\n exog:exog,\n endog:endog,\n nobs:nobs,\n df_model:df_model,\n df_resid:df_resid,\n coef:coef,\n predict:predict,\n resid:resid,\n ybar:ybar,\n SST:SST,\n SSE:SSE,\n SSR:SSR,\n R2:R2\n };\n }\n\n // H0: b_I=0\n // H1: b_I!=0\n function t_test(model) {\n var subModelList = sub_regress(model.exog);\n //var sigmaHat=jStat.stdev(model.resid);\n var sigmaHat = Math.sqrt(model.SSR / (model.df_resid));\n var seBetaHat = subModelList.map(function(mod) {\n var SST = mod.SST;\n var R2 = mod.R2;\n return sigmaHat / Math.sqrt(SST * (1 - R2));\n });\n var tStatistic = model.coef.map(function(coef, i) {\n return (coef - 0) / seBetaHat[i];\n });\n var pValue = tStatistic.map(function(t) {\n var leftppf = jStat.studentt.cdf(t, model.df_resid);\n return (leftppf > 0.5 ? 1 - leftppf : leftppf) * 2;\n });\n var c = jStat.studentt.inv(0.975, model.df_resid);\n var interval95 = model.coef.map(function(coef, i) {\n var d = c * seBetaHat[i];\n return [coef - d, coef + d];\n })\n return {\n se: seBetaHat,\n t: tStatistic,\n p: pValue,\n sigmaHat: sigmaHat,\n interval95: interval95\n };\n }\n\n function F_test(model) {\n var F_statistic =\n (model.R2 / model.df_model) / ((1 - model.R2) / model.df_resid);\n var fcdf = function(x, n1, n2) {\n return jStat.beta.cdf(x / (n2 / n1 + x), n1 / 2, n2 / 2)\n }\n var pvalue = 1 - fcdf(F_statistic, model.df_model, model.df_resid);\n return { F_statistic: F_statistic, pvalue: pvalue };\n }\n\n function ols_wrap(endog, exog) {\n var model = ols(endog,exog);\n var ttest = t_test(model);\n var ftest = F_test(model);\n // Provide the Wherry / Ezekiel / McNemar / Cohen Adjusted R^2\n // Which matches the 'adjusted R^2' provided by R's lm package\n var adjust_R2 =\n 1 - (1 - model.R2) * ((model.nobs - 1) / (model.df_resid));\n model.t = ttest;\n model.f = ftest;\n model.adjust_R2 = adjust_R2;\n return model;\n }\n\n return { ols: ols_wrap };\n})();\n//To regress, simply build X matrix\n//(append column of 1's) using\n//buildxmatrix and build the Y\n//matrix using buildymatrix\n//(simply the transpose)\n//and run regress.\n\n\n\n//Regressions\n\njStat.extend({\n buildxmatrix: function buildxmatrix(){\n //Parameters will be passed in as such\n //(array1,array2,array3,...)\n //as (x1,x2,x3,...)\n //needs to be (1,x1,x2,x3,...)\n var matrixRows = new Array(arguments.length);\n for(var i=0;i1){\n result = [];\n for (i = 0; i < A.rows(); i++) {\n result[i] = [];\n for (j = 0; j < B.cols(); j++) {\n sum = 0;\n for (k = 0; k < A.cols(); k++) {\n sum += A.toArray()[i][k] * B.toArray()[k][j];\n }\n result[i][j] = sum;\n }\n }\n return jStat(result);\n }\n result = [];\n for (i = 0; i < A.rows(); i++) {\n result[i] = [];\n for (j = 0; j < B.cols(); j++) {\n sum = 0;\n for (k = 0; k < A.cols(); k++) {\n sum += A.toArray()[i][k] * B.toArray()[j];\n }\n result[i][j] = sum;\n }\n }\n return jStat(result);\n }\n },\n\n //regress and regresst to be fixed\n\n regress: function regress(jMatX,jMatY){\n //print(\"regressin!\");\n //print(jMatX.toArray());\n var innerinv = jStat.xtranspxinv(jMatX);\n //print(innerinv);\n var xtransp = jMatX.transpose();\n var next = jStat.matrixmult(jStat(innerinv),xtransp);\n return jStat.matrixmult(next,jMatY);\n\n },\n\n regresst: function regresst(jMatX,jMatY,sides){\n var beta = jStat.regress(jMatX,jMatY);\n\n var compile = {};\n compile.anova = {};\n var jMatYBar = jStat.jMatYBar(jMatX, beta);\n compile.yBar = jMatYBar;\n var yAverage = jMatY.mean();\n compile.anova.residuals = jStat.residuals(jMatY, jMatYBar);\n\n compile.anova.ssr = jStat.ssr(jMatYBar, yAverage);\n compile.anova.msr = compile.anova.ssr / (jMatX[0].length - 1);\n\n compile.anova.sse = jStat.sse(jMatY, jMatYBar);\n compile.anova.mse =\n compile.anova.sse / (jMatY.length - (jMatX[0].length - 1) - 1);\n\n compile.anova.sst = jStat.sst(jMatY, yAverage);\n compile.anova.mst = compile.anova.sst / (jMatY.length - 1);\n\n compile.anova.r2 = 1 - (compile.anova.sse / compile.anova.sst);\n if (compile.anova.r2 < 0) compile.anova.r2 = 0;\n\n compile.anova.fratio = compile.anova.msr / compile.anova.mse;\n compile.anova.pvalue =\n jStat.anovaftest(compile.anova.fratio,\n jMatX[0].length - 1,\n jMatY.length - (jMatX[0].length - 1) - 1);\n\n compile.anova.rmse = Math.sqrt(compile.anova.mse);\n\n compile.anova.r2adj = 1 - (compile.anova.mse / compile.anova.mst);\n if (compile.anova.r2adj < 0) compile.anova.r2adj = 0;\n\n compile.stats = new Array(jMatX[0].length);\n var covar = jStat.xtranspxinv(jMatX);\n var sds, ts, ps;\n\n for(var i=0; i n) {\n ret = _bessel_iter(x, n, bessel0(x), bessel1(x),-1);\n } else {\n var m=2*M.floor((n+M.floor(M.sqrt(40*n)))/2);\n var jsum=false;\n var bjp=0.0, sum=0.0;\n var bj=1.0, bjm = 0.0;\n var tox = 2 / x;\n for (var j=m;j>0;j--) {\n bjm=j*tox*bj-bjp;\n bjp=bj;\n bj=bjm;\n if (M.abs(bj) > 1E10) {\n bj *= 1E-10;\n bjp *= 1E-10;\n ret *= 1E-10;\n sum *= 1E-10;\n }\n if (jsum) sum += bj;\n jsum=!jsum;\n if (j == n) ret=bjp;\n }\n sum=2.0*sum-bj;\n ret /= sum;\n }\n return ret;\n };\n})();\nvar bessely = (function() {\n var W = 0.636619772;\n\n var b0_a1a = [-2957821389.0, 7062834065.0, -512359803.6, 10879881.29, -86327.92757, 228.4622733].reverse();\n var b0_a2a = [40076544269.0, 745249964.8, 7189466.438, 47447.26470, 226.1030244, 1.0].reverse();\n var b0_a1b = [1.0, -0.1098628627e-2, 0.2734510407e-4, -0.2073370639e-5, 0.2093887211e-6].reverse();\n var b0_a2b = [-0.1562499995e-1, 0.1430488765e-3, -0.6911147651e-5, 0.7621095161e-6, -0.934945152e-7].reverse();\n\n function bessel0(x) {\n var a=0, a1=0, a2=0, y = x * x, xx = x - 0.785398164;\n if(x < 8) {\n a1 = _horner(b0_a1a, y);\n a2 = _horner(b0_a2a, y);\n a = a1/a2 + W * besselj(x,0) * M.log(x);\n } else {\n y = 64 / y;\n a1 = _horner(b0_a1b, y);\n a2 = _horner(b0_a2b, y);\n a = M.sqrt(W/x)*(M.sin(xx)*a1+M.cos(xx)*a2*8/x);\n }\n return a;\n }\n\n var b1_a1a = [-0.4900604943e13, 0.1275274390e13, -0.5153438139e11, 0.7349264551e9, -0.4237922726e7, 0.8511937935e4].reverse();\n var b1_a2a = [0.2499580570e14, 0.4244419664e12, 0.3733650367e10, 0.2245904002e8, 0.1020426050e6, 0.3549632885e3, 1].reverse();\n var b1_a1b = [1.0, 0.183105e-2, -0.3516396496e-4, 0.2457520174e-5, -0.240337019e-6].reverse();\n var b1_a2b = [0.04687499995, -0.2002690873e-3, 0.8449199096e-5, -0.88228987e-6, 0.105787412e-6].reverse();\n\n function bessel1(x) {\n var a=0, a1=0, a2=0, y = x*x, xx = x - 2.356194491;\n if(x < 8) {\n a1 = x*_horner(b1_a1a, y);\n a2 = _horner(b1_a2a, y);\n a = a1/a2 + W * (besselj(x,1) * M.log(x) - 1 / x);\n } else {\n y = 64 / y;\n a1=_horner(b1_a1b, y);\n a2=_horner(b1_a2b, y);\n a=M.sqrt(W/x)*(M.sin(xx)*a1+M.cos(xx)*a2*8/x);\n }\n return a;\n }\n\n return _bessel_wrap(bessel0, bessel1, 'BESSELY', 1, -1);\n})();\nvar besseli = (function() {\n var b0_a = [1.0, 3.5156229, 3.0899424, 1.2067492, 0.2659732, 0.360768e-1, 0.45813e-2].reverse();\n var b0_b = [0.39894228, 0.1328592e-1, 0.225319e-2, -0.157565e-2, 0.916281e-2, -0.2057706e-1, 0.2635537e-1, -0.1647633e-1, 0.392377e-2].reverse();\n\n function bessel0(x) {\n if(x <= 3.75) return _horner(b0_a, x*x/(3.75*3.75));\n return M.exp(M.abs(x))/M.sqrt(M.abs(x))*_horner(b0_b, 3.75/M.abs(x));\n }\n\n var b1_a = [0.5, 0.87890594, 0.51498869, 0.15084934, 0.2658733e-1, 0.301532e-2, 0.32411e-3].reverse();\n var b1_b = [0.39894228, -0.3988024e-1, -0.362018e-2, 0.163801e-2, -0.1031555e-1, 0.2282967e-1, -0.2895312e-1, 0.1787654e-1, -0.420059e-2].reverse();\n\n function bessel1(x) {\n if(x < 3.75) return x * _horner(b1_a, x*x/(3.75*3.75));\n return (x < 0 ? -1 : 1) * M.exp(M.abs(x))/M.sqrt(M.abs(x))*_horner(b1_b, 3.75/M.abs(x));\n }\n\n return function besseli(x, n) {\n n = Math.round(n);\n if(n === 0) return bessel0(x);\n if(n === 1) return bessel1(x);\n if(n < 0) return NaN;\n if(M.abs(x) === 0) return 0;\n if(x == Infinity) return Infinity;\n\n var ret = 0.0, j, tox = 2 / M.abs(x), bip = 0.0, bi=1.0, bim=0.0;\n var m=2*M.round((n+M.round(M.sqrt(40*n)))/2);\n for (j=m;j>0;j--) {\n bim=j*tox*bi + bip;\n bip=bi; bi=bim;\n if (M.abs(bi) > 1E10) {\n bi *= 1E-10;\n bip *= 1E-10;\n ret *= 1E-10;\n }\n if(j == n) ret = bip;\n }\n ret *= besseli(x, 0) / bi;\n return x < 0 && (n%2) ? -ret : ret;\n };\n\n})();\n\nvar besselk = (function() {\n var b0_a = [-0.57721566, 0.42278420, 0.23069756, 0.3488590e-1, 0.262698e-2, 0.10750e-3, 0.74e-5].reverse();\n var b0_b = [1.25331414, -0.7832358e-1, 0.2189568e-1, -0.1062446e-1, 0.587872e-2, -0.251540e-2, 0.53208e-3].reverse();\n\n function bessel0(x) {\n if(x <= 2) return -M.log(x/2) * besseli(x,0) + _horner(b0_a, x*x/4);\n return M.exp(-x) / M.sqrt(x) * _horner(b0_b, 2/x);\n }\n\n var b1_a = [1.0, 0.15443144, -0.67278579, -0.18156897, -0.1919402e-1, -0.110404e-2, -0.4686e-4].reverse();\n var b1_b = [1.25331414, 0.23498619, -0.3655620e-1, 0.1504268e-1, -0.780353e-2, 0.325614e-2, -0.68245e-3].reverse();\n\n function bessel1(x) {\n if(x <= 2) return M.log(x/2) * besseli(x,1) + (1/x) * _horner(b1_a, x*x/4);\n return M.exp(-x)/M.sqrt(x)*_horner(b1_b, 2/x);\n }\n\n return _bessel_wrap(bessel0, bessel1, 'BESSELK', 2, 1);\n})();\nBESSEL.besselj = besselj;\nBESSEL.bessely = bessely;\nBESSEL.besseli = besseli;\nBESSEL.besselk = besselk;\n}));\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// This is CodeMirror (https://codemirror.net/5), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\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 = global || self, global.CodeMirror = factory());\n}(this, (function () { 'use strict';\n\n // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\/(\\d+)/.exec(userAgent);\n var chrome_version = chrome && +chrome[1];\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n\n var ios = safari && (/Mobile\\/\\w+/.test(userAgent) || navigator.maxTouchPoints > 2);\n var android = /Android/.test(userAgent);\n // This is woefully incomplete. Suggestions for alternative methods welcome.\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n if (presto_version) { presto_version = Number(presto_version[1]); }\n if (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || (ie && ie_version >= 9);\n\n function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n var rmClass = function(node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n };\n\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count)\n { e.removeChild(e.firstChild); }\n return e\n }\n\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e)\n }\n\n function elt(tag, content, className, style) {\n var e = document.createElement(tag);\n if (className) { e.className = className; }\n if (style) { e.style.cssText = style; }\n if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n return e\n }\n // wrapper for elt, which removes the elt from the accessibility tree\n function eltP(tag, content, className, style) {\n var e = elt(tag, content, className, style);\n e.setAttribute(\"role\", \"presentation\");\n return e\n }\n\n var range;\n if (document.createRange) { range = function(node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r\n }; }\n else { range = function(node, start, end) {\n var r = document.body.createTextRange();\n try { r.moveToElementText(node.parentNode); }\n catch(e) { return r }\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r\n }; }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n { child = child.parentNode; }\n if (parent.contains)\n { return parent.contains(child) }\n do {\n if (child.nodeType == 11) { child = child.host; }\n if (child == parent) { return true }\n } while (child = child.parentNode)\n }\n\n function activeElt(rootNode) {\n // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n var doc = rootNode.ownerDocument || rootNode;\n var activeElement;\n try {\n activeElement = rootNode.activeElement;\n } catch(e) {\n activeElement = doc.body || null;\n }\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n { activeElement = activeElement.shadowRoot.activeElement; }\n return activeElement\n }\n\n function addClass(node, cls) {\n var current = node.className;\n if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n }\n function joinClasses(a, b) {\n var as = a.split(\" \");\n for (var i = 0; i < as.length; i++)\n { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n return b\n }\n\n var selectInput = function(node) { node.select(); };\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\n else if (ie) // Suppress mysterious IE10 errors\n { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\n function doc(cm) { return cm.display.wrapper.ownerDocument }\n\n function root(cm) {\n return rootNode(cm.display.wrapper)\n }\n\n function rootNode(element) {\n // Detect modern browsers (2017+).\n return element.getRootNode ? element.getRootNode() : element.ownerDocument\n }\n\n function win(cm) { return doc(cm).defaultView }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function(){return f.apply(null, args)}\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) { target = {}; }\n for (var prop in obj)\n { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n { target[prop] = obj[prop]; } }\n return target\n }\n\n // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n if (end == -1) { end = string.length; }\n }\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n if (nextTab < 0 || nextTab >= end)\n { return n + (end - i) }\n n += nextTab - i;\n n += tabSize - (n % tabSize);\n i = nextTab + 1;\n }\n }\n\n var Delayed = function() {\n this.id = null;\n this.f = null;\n this.time = 0;\n this.handler = bind(this.onTimeout, this);\n };\n Delayed.prototype.onTimeout = function (self) {\n self.id = 0;\n if (self.time <= +new Date) {\n self.f();\n } else {\n setTimeout(self.handler, self.time - +new Date);\n }\n };\n Delayed.prototype.set = function (ms, f) {\n this.f = f;\n var time = +new Date + ms;\n if (!this.id || time < this.time) {\n clearTimeout(this.id);\n this.id = setTimeout(this.handler, ms);\n this.time = time;\n }\n };\n\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i)\n { if (array[i] == elt) { return i } }\n return -1\n }\n\n // Number of pixels added to scroller and sizer to hide scrollbar\n var scrollerGap = 50;\n\n // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n var Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n // Reused option objects for setSelection & friends\n var sel_dontScroll = {scroll: false}, sel_mouse = {origin: \"*mouse\"}, sel_move = {origin: \"+move\"};\n\n // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n if (nextTab == -1) { nextTab = string.length; }\n var skipped = nextTab - pos;\n if (nextTab == string.length || col + skipped >= goal)\n { return pos + Math.min(skipped, goal - col) }\n col += nextTab - pos;\n col += tabSize - (col % tabSize);\n pos = nextTab + 1;\n if (col >= goal) { return pos }\n }\n }\n\n var spaceStrs = [\"\"];\n function spaceStr(n) {\n while (spaceStrs.length <= n)\n { spaceStrs.push(lst(spaceStrs) + \" \"); }\n return spaceStrs[n]\n }\n\n function lst(arr) { return arr[arr.length-1] }\n\n function map(array, f) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n return out\n }\n\n function insertSorted(array, value, score) {\n var pos = 0, priority = score(value);\n while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n if (props) { copyObj(props, inst); }\n return inst\n }\n\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" &&\n (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n }\n function isWordChar(ch, helper) {\n if (!helper) { return isWordCharBasic(ch) }\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n return helper.test(ch)\n }\n\n function isEmpty(obj) {\n for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n return true\n }\n\n // Extending unicode characters. A series of a non-extending char +\n // any number of extending chars is treated as a single unit as far\n // as editing and measuring is concerned. This is not fully correct,\n // since some scripts/fonts/browsers also treat other configurations\n // of code points as a group.\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n return pos\n }\n\n // Returns the value from the range [`from`; `to`] that satisfies\n // `pred` and is closest to `from`. Assumes that at least `to`\n // satisfies `pred`. Supports `from` being greater than `to`.\n function findFirst(pred, from, to) {\n // At any point we are certain `to` satisfies `pred`, don't know\n // whether `from` does.\n var dir = from > to ? -1 : 1;\n for (;;) {\n if (from == to) { return from }\n var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n if (mid == from) { return pred(mid) ? from : to }\n if (pred(mid)) { to = mid; }\n else { from = mid + dir; }\n }\n }\n\n // BIDI HELPERS\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) { return f(from, to, \"ltr\", 0) }\n var found = false;\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n found = true;\n }\n }\n if (!found) { f(from, to, \"ltr\"); }\n }\n\n var bidiOther = null;\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n if (cur.from < ch && cur.to > ch) { return i }\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") { found = i; }\n else { bidiOther = i; }\n }\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") { found = i; }\n else { bidiOther = i; }\n }\n }\n return found != null ? found : bidiOther\n }\n\n // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n\n // One-char codes used for character types:\n // L (L): Left-to-Right\n // R (R): Right-to-Left\n // r (AL): Right-to-Left Arabic\n // 1 (EN): European Number\n // + (ES): European Number Separator\n // % (ET): European Number Terminator\n // n (AN): Arabic Number\n // , (CS): Common Number Separator\n // m (NSM): Non-Spacing Mark\n // b (BN): Boundary Neutral\n // s (B): Paragraph Separator\n // t (S): Segment Separator\n // w (WS): Whitespace\n // N (ON): Other Neutrals\n\n // Returns null if characters are ordered as they appear\n // (left-to-right), or an array of sections ({from, to, level}\n // objects) in the order in which they occur visually.\n var bidiOrdering = (function() {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n // Character types for codepoints 0x600 to 0x6f9\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n function charType(code) {\n if (code <= 0xf7) { return lowTypes.charAt(code) }\n else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n else if (code == 0x200c) { return \"b\" }\n else { return \"L\" }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from; this.to = to;\n }\n\n return function(str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) { return false }\n var len = str.length, types = [];\n for (var i = 0; i < len; ++i)\n { types.push(charType(str.charCodeAt(i))); }\n\n // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n if (type == \"m\") { types[i$1] = prev; }\n else { prev = type; }\n }\n\n // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { types[i$2] = \"R\"; } }\n }\n\n // W4. A single European separator between two European numbers\n // changes to a European number. A single common separator between\n // two numbers of the same type changes to that type.\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n prev$1 = type$2;\n }\n\n // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n if (type$3 == \",\") { types[i$4] = \"N\"; }\n else if (type$3 == \"%\") {\n var end = (void 0);\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n for (var j = i$4; j < end; ++j) { types[j] = replace; }\n i$4 = end - 1;\n }\n }\n\n // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n else if (isStrong.test(type$4)) { cur$1 = type$4; }\n }\n\n // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = (void 0);\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n var before = (i$6 ? types[i$6-1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? (before ? \"L\" : \"R\") : outerType;\n for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n i$6 = end$1 - 1;\n }\n }\n\n // Here we depart from the documented algorithm, in order to avoid\n // building up an actual levels array. Since there are only three\n // levels (0, 1, 2) in an implementation that doesn't take\n // explicit embedding into account, we can build up the order on\n // the fly, without following the level-based algorithm.\n var order = [], m;\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7, at = order.length, isRTL = direction == \"rtl\" ? 1 : 0;\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); at += isRTL; }\n var nstart = j$2;\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n at += isRTL;\n pos = j$2;\n } else { ++j$2; }\n }\n if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\n }\n }\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n\n return direction == \"rtl\" ? order.reverse() : order\n }\n })();\n\n // Get the bidi ordering for the given line (and cache it). Returns\n // false for lines that are fully left-to-right, and an array of\n // BidiSpan objects otherwise.\n function getOrder(line, direction) {\n var order = line.order;\n if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n return order\n }\n\n // EVENT HANDLING\n\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n var noHandlers = [];\n\n var on = function(emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers || (emitter._handlers = {});\n map[type] = (map[type] || noHandlers).concat(f);\n }\n };\n\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers\n }\n\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers, arr = map && map[type];\n if (arr) {\n var index = indexOf(arr, f);\n if (index > -1)\n { map[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n }\n }\n }\n\n function signal(emitter, type /*, values...*/) {\n var handlers = getHandlers(emitter, type);\n if (!handlers.length) { return }\n var args = Array.prototype.slice.call(arguments, 2);\n for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n }\n\n // The DOM events that CodeMirror handles can be overridden by\n // registering a (non-DOM) handler on the editor for the event name,\n // and preventDefault-ing the event in that handler.\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\")\n { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore\n }\n\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n if (!arr) { return }\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n { set.push(arr[i]); } }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0\n }\n\n // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n function eventMixin(ctor) {\n ctor.prototype.on = function(type, f) {on(this, type, f);};\n ctor.prototype.off = function(type, f) {off(this, type, f);};\n }\n\n // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n function e_preventDefault(e) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n function e_stopPropagation(e) {\n if (e.stopPropagation) { e.stopPropagation(); }\n else { e.cancelBubble = true; }\n }\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n }\n function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\n function e_target(e) {return e.target || e.srcElement}\n function e_button(e) {\n var b = e.which;\n if (b == null) {\n if (e.button & 1) { b = 1; }\n else if (e.button & 2) { b = 3; }\n else if (e.button & 4) { b = 2; }\n }\n if (mac && e.ctrlKey && b == 1) { b = 3; }\n return b\n }\n\n // Detect drag-and-drop\n var dragAndDrop = function() {\n // There is *some* kind of drag-and-drop support in IE6-8, but I\n // couldn't get it to work yet.\n if (ie && ie_version < 9) { return false }\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div\n }();\n\n var zwspSupported;\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200b\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n if (measure.firstChild.offsetHeight != 0)\n { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n }\n var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node\n }\n\n // Feature-detect IE's crummy client rect reporting for bidi text\n var badBidiRects;\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) { return badBidiRects }\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n return badBidiRects = (r1.right - r0.right < 3)\n }\n\n // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0, result = [], l = string.length;\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n if (nl == -1) { nl = string.length; }\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n return result\n } : function (string) { return string.split(/\\r\\n?|\\n/); };\n\n var hasSelection = window.getSelection ? function (te) {\n try { return te.selectionStart != te.selectionEnd }\n catch(e) { return false }\n } : function (te) {\n var range;\n try {range = te.ownerDocument.selection.createRange();}\n catch(e) {}\n if (!range || range.parentElement() != te) { return false }\n return range.compareEndPoints(\"StartToEnd\", range) != 0\n };\n\n var hasCopyEvent = (function () {\n var e = elt(\"div\");\n if (\"oncopy\" in e) { return true }\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\"\n })();\n\n var badZoomedRects = null;\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) { return badZoomedRects }\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n }\n\n // Known modes, by name and by MIME\n var modes = {}, mimeModes = {};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n function defineMode(name, mode) {\n if (arguments.length > 2)\n { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n }\n\n // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n if (typeof found == \"string\") { found = {name: found}; }\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\")\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\")\n }\n if (typeof spec == \"string\") { return {name: spec} }\n else { return spec || {name: \"null\"} }\n }\n\n // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n if (!mfactory) { return getMode(options, \"text/plain\") }\n var modeObj = mfactory(options, spec);\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) { continue }\n if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n modeObj[prop] = exts[prop];\n }\n }\n modeObj.name = spec.name;\n if (spec.helperType) { modeObj.helperType = spec.helperType; }\n if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n return modeObj\n }\n\n // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n var modeExtensions = {};\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n copyObj(properties, exts);\n }\n\n function copyState(mode, state) {\n if (state === true) { return state }\n if (mode.copyState) { return mode.copyState(state) }\n var nstate = {};\n for (var n in state) {\n var val = state[n];\n if (val instanceof Array) { val = val.concat([]); }\n nstate[n] = val;\n }\n return nstate\n }\n\n // Given a mode and a state (for that mode), find the inner mode and\n // state at the position that the state refers to.\n function innerMode(mode, state) {\n var info;\n while (mode.innerMode) {\n info = mode.innerMode(state);\n if (!info || info.mode == mode) { break }\n state = info.state;\n mode = info.mode;\n }\n return info || {mode: mode, state: state}\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true\n }\n\n // STRING STREAM\n\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n var StringStream = function(string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n\n StringStream.prototype.eol = function () {return this.pos >= this.string.length};\n StringStream.prototype.sol = function () {return this.pos == this.lineStart};\n StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length)\n { return this.string.charAt(this.pos++) }\n };\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n if (typeof match == \"string\") { ok = ch == match; }\n else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n if (ok) {++this.pos; return ch}\n };\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n while (this.eat(match)){}\n return this.pos > start\n };\n StringStream.prototype.eatSpace = function () {\n var start = this.pos;\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this.pos; }\n return this.pos > start\n };\n StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n if (found > -1) {this.pos = found; return true}\n };\n StringStream.prototype.backUp = function (n) {this.pos -= n;};\n StringStream.prototype.column = function () {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) -\n (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n var substr = this.string.substr(this.pos, pattern.length);\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) { this.pos += pattern.length; }\n return true\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n if (match && match.index > 0) { return null }\n if (match && consume !== false) { this.pos += match[0].length; }\n return match\n }\n };\n StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n try { return inner() }\n finally { this.lineStart -= n; }\n };\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n)\n };\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos)\n };\n\n // Find the line object corresponding to the given line number.\n function getLine(doc, n) {\n n -= doc.first;\n if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n var chunk = doc;\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i], sz = child.chunkSize();\n if (n < sz) { chunk = child; break }\n n -= sz;\n }\n }\n return chunk.lines[n]\n }\n\n // Get the part of a document between two positions, as an array of\n // strings.\n function getBetween(doc, start, end) {\n var out = [], n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n if (n == end.line) { text = text.slice(0, end.ch); }\n if (n == start.line) { text = text.slice(start.ch); }\n out.push(text);\n ++n;\n });\n return out\n }\n // Get the lines between from and to, as array of strings.\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n return out\n }\n\n // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n }\n\n // Given a line object, find its line number by walking up through\n // its parent links.\n function lineNo(line) {\n if (line.parent == null) { return null }\n var cur = line.parent, no = indexOf(cur.lines, line);\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) { break }\n no += chunk.children[i].chunkSize();\n }\n }\n return no + cur.first\n }\n\n // Find the line at the given vertical position, using the height\n // information in the document tree.\n function lineAtHeight(chunk, h) {\n var n = chunk.first;\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1], ch = child.height;\n if (h < ch) { chunk = child; continue outer }\n h -= ch;\n n += child.chunkSize();\n }\n return n\n } while (!chunk.lines)\n var i = 0;\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i], lh = line.height;\n if (h < lh) { break }\n h -= lh;\n }\n return n + i\n }\n\n function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber))\n }\n\n // A Pos instance represents a position within the text.\n function Pos(line, ch, sticky) {\n if ( sticky === void 0 ) sticky = null;\n\n if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n }\n\n // Compare two positions, return 0 if they are the same, a negative\n // number when a is less, and a positive number otherwise.\n function cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\n function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\n function copyPos(x) {return Pos(x.line, x.ch)}\n function maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\n function minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\n function clipPos(doc, pos) {\n if (pos.line < doc.first) { return Pos(doc.first, 0) }\n var last = doc.first + doc.size - 1;\n if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n return clipToLen(pos, getLine(doc, pos.line).text.length)\n }\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n else if (ch < 0) { return Pos(pos.line, 0) }\n else { return pos }\n }\n function clipPosArray(doc, array) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n return out\n }\n\n var SavedContext = function(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function(doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n };\n\n Context.prototype.lookAhead = function (n) {\n var line = this.doc.getLine(this.line + n);\n if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; }\n return line\n };\n\n Context.prototype.baseToken = function (n) {\n if (!this.baseTokens) { return null }\n while (this.baseTokens[this.baseTokenPos] <= n)\n { this.baseTokenPos += 2; }\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n}\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n if (this.maxLookAhead > 0) { this.maxLookAhead--; }\n };\n\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext)\n { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) }\n else\n { return new Context(doc, copyState(doc.mode, saved), line) }\n };\n\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state\n };\n\n\n // Compute a style array (an array starting with a mode generation\n // -- for invalidation -- followed by pairs of end positions and\n // style strings), which is used to highlight the tokens on the\n // line.\n function highlightLine(cm, line, context, forceToEnd) {\n // A styles array always starts with a number identifying the\n // mode/overlays that it is based on (for easy invalidation).\n var st = [cm.state.modeGen], lineClasses = {};\n // Compute the base array of styles\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); },\n lineClasses, forceToEnd);\n var state = context.state;\n\n // Run overlays, adjust style array.\n var loop = function ( o ) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o], i = 1, at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i;\n // Ensure there's a token end at the current position, and that i points at it\n while (at < end) {\n var i_end = st[i];\n if (i_end > end)\n { st.splice(i, 1, end, st[i+1], i_end); }\n i += 2;\n at = Math.min(end, i_end);\n }\n if (!style) { return }\n if (overlay.opaque) {\n st.splice(start, i - start, end, \"overlay \" + style);\n i = start + 2;\n } else {\n for (; start < i; start += 2) {\n var cur = st[start+1];\n st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n\n for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\n\n return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n }\n\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n if (resetState) { context.state = resetState; }\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n if (result.classes) { line.styleClasses = result.classes; }\n else if (line.styleClasses) { line.styleClasses = null; }\n if (updateFrontier === cm.doc.highlightFrontier)\n { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); }\n }\n return line.styles\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc, display = cm.display;\n if (!doc.mode.startState) { return new Context(doc, true, n) }\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n\n doc.iter(start, n, function (line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n if (precise) { doc.modeFrontier = context.line; }\n return context\n }\n\n // Lightweight form of highlight -- proceed over this line and\n // update state, but don't save a style array. Used for lines that\n // aren't currently visible.\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n if (text == \"\") { callBlankLine(mode, context.state); }\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n\n function callBlankLine(mode, state) {\n if (mode.blankLine) { return mode.blankLine(state) }\n if (!mode.innerMode) { return }\n var inner = innerMode(mode, state);\n if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) { inner[0] = innerMode(mode, state).mode; }\n var style = mode.token(stream, state);\n if (stream.pos > stream.start) { return style }\n }\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n }\n\n var Token = function(stream, type, state) {\n this.start = stream.start; this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n };\n\n // Utility for getTokenAt and getLineTokens\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc, mode = doc.mode, style;\n pos = clipPos(doc, pos);\n var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context), tokens;\n if (asArray) { tokens = []; }\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); }\n }\n return asArray ? tokens : new Token(stream, style, context.state)\n }\n\n function extractLineClasses(type, output) {\n if (type) { for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n if (!lineClass) { break }\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n if (output[prop] == null)\n { output[prop] = lineClass[2]; }\n else if (!(new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\")).test(output[prop]))\n { output[prop] += \" \" + lineClass[2]; }\n } }\n return type\n }\n\n // Run the given mode's parser over a line, calling f for each token.\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n var curStart = 0, curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context), style;\n var inner = cm.options.addModeClass && [null];\n if (text == \"\") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); }\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n if (forceToEnd) { processLine(cm, text, context, stream.pos); }\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n if (inner) {\n var mName = inner[0].name;\n if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\n }\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5000);\n f(curStart, curStyle);\n }\n curStyle = style;\n }\n stream.start = stream.pos;\n }\n while (curStart < stream.pos) {\n // Webkit seems to refuse to render text nodes longer than 57444\n // characters, and returns inaccurate measurements in nodes\n // starting around 5000 chars.\n var pos = Math.min(stream.pos, curStart + 5000);\n f(pos, curStyle);\n curStart = pos;\n }\n }\n\n // Finds the line to start with when starting a parse. Tries to\n // find a line with a stateAfter, so that it can start with a\n // valid state. If that fails, it returns the line with the\n // smallest indentation, which tends to need the least context to\n // parse correctly.\n function findStartLine(cm, n, precise) {\n var minindent, minline, doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) { return doc.first }\n var line = getLine(doc, search - 1), after = line.stateAfter;\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))\n { return search }\n var indented = countColumn(line.text, null, cm.options.tabSize);\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n return minline\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n if (doc.highlightFrontier < n - 10) { return }\n var start = doc.first;\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter;\n // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break\n }\n }\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n }\n\n // Optimize some code when these features are not used.\n var sawReadOnlySpans = false, sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n }\n\n // TEXTMARKER SPANS\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from; this.to = to;\n }\n\n // Search an array of spans for a span matching the given marker.\n function getMarkedSpanFor(spans, marker) {\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.marker == marker) { return span }\n } }\n }\n\n // Remove a span from an array, returning undefined if no spans are\n // left (we don't store arrays for lines without spans).\n function removeMarkedSpan(spans, span) {\n var r;\n for (var i = 0; i < spans.length; ++i)\n { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n return r\n }\n\n // Add a span to a line.\n function addMarkedSpan(line, span, op) {\n var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = new WeakSet));\n if (inThisOp && line.markedSpans && inThisOp.has(line.markedSpans)) {\n line.markedSpans.push(span);\n } else {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n if (inThisOp) { inThisOp.add(line.markedSpans); }\n }\n span.marker.attachLine(line);\n }\n\n // Used for the algorithm that adjusts markers for a change in the\n // document. These functions cut an array of spans at a given\n // character position, returning an array of remaining chunks (or\n // undefined if nothing remains).\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n } }\n return nw\n }\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n span.to == null ? null : span.to - endCh));\n }\n } }\n return nw\n }\n\n // Given a change object, compute the new set of marker spans that\n // cover the line in which the change took place. Removes spans\n // entirely within the change, reconnects spans belonging to the\n // same marker that appear on both sides of the change, and cuts off\n // spans partially within the change. Returns an array of span\n // arrays with one element for each line in (after) the change.\n function stretchSpansOverChange(doc, change) {\n if (change.full) { return null }\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n if (!oldFirst && !oldLast) { return null }\n\n var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n // Get the spans that 'stick out' on both sides\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n // Next, merge those two ends\n var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n if (first) {\n // Fix up .to properties of first\n for (var i = 0; i < first.length; ++i) {\n var span = first[i];\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n if (!found) { span.to = startCh; }\n else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\n }\n }\n }\n if (last) {\n // Fix up .from in last (or move them into first in case of sameLine)\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\n var span$1 = last[i$1];\n if (span$1.to != null) { span$1.to += offset; }\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n if (!found$1) {\n span$1.from = offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n } else {\n span$1.from += offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n }\n }\n // Make sure we didn't create any zero-length spans\n if (first) { first = clearEmptySpans(first); }\n if (last && last != first) { last = clearEmptySpans(last); }\n\n var newMarkers = [first];\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2, gapMarkers;\n if (gap > 0 && first)\n { for (var i$2 = 0; i$2 < first.length; ++i$2)\n { if (first[i$2].to == null)\n { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\n for (var i$3 = 0; i$3 < gap; ++i$3)\n { newMarkers.push(gapMarkers); }\n newMarkers.push(last);\n }\n return newMarkers\n }\n\n // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n { spans.splice(i--, 1); }\n }\n if (!spans.length) { return null }\n return spans\n }\n\n // Used to 'clip' out readOnly ranges when making a change.\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n { (markers || (markers = [])).push(mark); }\n } }\n });\n if (!markers) { return null }\n var parts = [{from: from, to: to}];\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i], m = mk.find(0);\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n { newParts.push({from: p.from, to: m.from}); }\n if (dto > 0 || !mk.inclusiveRight && !dto)\n { newParts.push({from: m.to, to: p.to}); }\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n return parts\n }\n\n // Connect or disconnect spans from a line.\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.detachLine(line); }\n line.markedSpans = null;\n }\n function attachMarkedSpans(line, spans) {\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.attachLine(line); }\n line.markedSpans = spans;\n }\n\n // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\n function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n // Returns a number indicating which of two overlapping collapsed\n // spans is larger (and thus includes the other). Falls back to\n // comparing ids when the spans cover exactly the same range.\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n if (lenDiff != 0) { return lenDiff }\n var aPos = a.find(), bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n if (fromCmp) { return -fromCmp }\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n if (toCmp) { return toCmp }\n return b.id - a.id\n }\n\n // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n { found = sp.marker; }\n } }\n return found\n }\n function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\n function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; }\n } }\n return found\n }\n\n // Test whether there exists a collapsed span that partially\n // overlaps (covers the start or end, but not both) of a new span.\n // Such overlap is not allowed.\n function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n var line = getLine(doc, lineNo);\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n { return true }\n } }\n }\n\n // A visual line is a line as drawn on the screen. Folding, for\n // example, can cause multiple logical lines to appear on the same\n // visual line. This finds the start of the visual line that the\n // given line is part of (usually that is the line itself).\n function visualLine(line) {\n var merged;\n while (merged = collapsedSpanAtStart(line))\n { line = merged.find(-1, true).line; }\n return line\n }\n\n function visualLineEnd(line) {\n var merged;\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return line\n }\n\n // Returns an array of logical lines that continue the visual line\n // started by the argument, or undefined if there are no such lines.\n function visualLineContinued(line) {\n var merged, lines;\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line\n ;(lines || (lines = [])).push(line);\n }\n return lines\n }\n\n // Get the line number of the start of the visual line that the\n // given line number is part of.\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN), vis = visualLine(line);\n if (line == vis) { return lineN }\n return lineNo(vis)\n }\n\n // Get the line number of the start of the next visual line after\n // the given line.\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) { return lineN }\n var line = getLine(doc, lineN), merged;\n if (!lineIsHidden(doc, line)) { return lineN }\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return lineNo(line) + 1\n }\n\n // Compute whether a line is hidden. Lines count as hidden when they\n // are part of a visual line that starts with another line, or when\n // they are entirely covered by collapsed, non-widget span.\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n if (sp.from == null) { return true }\n if (sp.marker.widgetNode) { continue }\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n { return true }\n } }\n }\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n }\n if (span.marker.inclusiveRight && span.to == line.text.length)\n { return true }\n for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n (sp.to == null || sp.to != span.from) &&\n (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n lineIsHiddenInner(doc, line, sp)) { return true }\n }\n }\n\n // Find the height above the given line.\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n\n var h = 0, chunk = lineObj.parent;\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n if (line == lineObj) { break }\n else { h += line.height; }\n }\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n var cur = p.children[i$1];\n if (cur == chunk) { break }\n else { h += cur.height; }\n }\n }\n return h\n }\n\n // Compute the character length of a line, taking into account\n // collapsed ranges (see markText) that might hide parts, and join\n // other lines onto it.\n function lineLength(line) {\n if (line.height == 0) { return 0 }\n var len = line.text.length, merged, cur = line;\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n cur = line;\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n return len\n }\n\n // Find the longest line in the document.\n function findMaxLine(cm) {\n var d = cm.display, doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n }\n\n // LINE DATA STRUCTURE\n\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n var Line = function(text, markedSpans, estimateHeight) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight ? estimateHeight(this) : 1;\n };\n\n Line.prototype.lineNo = function () { return lineNo(this) };\n eventMixin(Line);\n\n // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n if (line.order != null) { line.order = null; }\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n }\n\n // Detach a line from the document tree and its markers.\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n }\n\n // Convert a style as returned by a mode (either null, or a string\n // containing one or more styles) to a CSS style. This is cached,\n // and also looks for line-wide styles.\n var styleToClassCache = {}, styleToClassCacheWithMode = {};\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) { return null }\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] ||\n (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n }\n\n // Render the DOM representation of the text of a line. Also builds\n // up a 'line map', which points at the DOM nodes that represent\n // specific stretches of text, and is used by the measuring code.\n // The returned object contains the DOM node, this map, and\n // information about line-wide styles that were set by the mode.\n function buildLineContent(cm, lineView) {\n // The padding-right forces the element to have a 'border', which\n // is needed on Webkit to be able to get line-level bounding\n // rectangles for it (in measureChar).\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n col: 0, pos: 0, cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")};\n lineView.measure = {};\n\n // Iterate over the logical lines that make up this visual line.\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n builder.pos = 0;\n builder.addToken = buildToken;\n // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n if (line.styleClasses) {\n if (line.styleClasses.bgClass)\n { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n if (line.styleClasses.textClass)\n { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n }\n\n // Ensure at least a single node is present, for measuring.\n if (builder.map.length == 0)\n { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n // Store the map and a cache object for the current logical line\n if (i == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n }\n\n // See issue #2901\n if (webkit) {\n var last = builder.content.lastChild;\n if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n { builder.content.className = \"cm-tab-wrap-hack\"; }\n }\n\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n if (builder.pre.className)\n { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\n\n return builder\n }\n\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token\n }\n\n // Build up the DOM representation for a single token, and add it to\n // the line map. Takes care to render special characters separately.\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) { return }\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars, mustWrap = false;\n var content;\n if (!special.test(text)) {\n builder.col += text.length;\n content = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text.length, content);\n if (ie && ie_version < 9) { mustWrap = true; }\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n else { content.appendChild(txt); }\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n if (!m) { break }\n pos += skipped + 1;\n var txt$1 = (void 0);\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n else { content.appendChild(txt$1); }\n builder.col += 1;\n }\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n if (style || startStyle || endStyle || mustWrap || css || attributes) {\n var fullStyle = style || \"\";\n if (startStyle) { fullStyle += startStyle; }\n if (endStyle) { fullStyle += endStyle; }\n var token = elt(\"span\", [content], fullStyle, css);\n if (attributes) {\n for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\")\n { token.setAttribute(attr, attributes[attr]); } }\n }\n return builder.content.appendChild(token)\n }\n builder.content.appendChild(content);\n }\n\n // Change some spaces to NBSP to prevent the browser from collapsing\n // trailing spaces at the end of a line when rendering text (issue #1362).\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) { return text }\n var spaceBefore = trailingBefore, result = \"\";\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n { ch = \"\\u00a0\"; }\n result += ch;\n spaceBefore = ch == \" \";\n }\n return result\n }\n\n // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos, end = start + text.length;\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = (void 0);\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n if (part.to > start && part.from <= start) { break }\n }\n if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, css, attributes) }\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n startStyle = null;\n text = text.slice(part.to - start);\n start = part.to;\n }\n }\n }\n\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget)\n { widget = builder.content.appendChild(document.createElement(\"span\")); }\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n builder.pos += size;\n builder.trailingSpace = false;\n }\n\n // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans, allText = line.text, at = 0;\n if (!spans) {\n for (var i$1 = 1; i$1 < styles.length; i$1+=2)\n { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\n return\n }\n\n var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes;\n for (;;) {\n if (nextChange == pos) { // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null; nextChange = Infinity;\n var foundBookmarks = [], endStyles = (void 0);\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j], m = sp.marker;\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n if (m.className) { spanStyle += \" \" + m.className; }\n if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n if (m.title) { (attributes || (attributes = {})).title = m.title; }\n if (m.attributes) {\n for (var attr in m.attributes)\n { (attributes || (attributes = {}))[attr] = m.attributes[attr]; }\n }\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n { collapsed = sp; }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n collapsed.marker, collapsed.from == null);\n if (collapsed.to == null) { return }\n if (collapsed.to == pos) { collapsed = false; }\n }\n }\n if (pos >= len) { break }\n\n var upto = Math.min(len, nextChange);\n while (true) {\n if (text) {\n var end = pos + text.length;\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n pos = end;\n spanStartStyle = \"\";\n }\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\n }\n }\n }\n\n\n // These objects are used to represent the visible (currently drawn)\n // part of the document. A LineView may correspond to multiple\n // logical lines, if those are connected by collapsed ranges.\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line;\n // Continuing lines, if any\n this.rest = visualLineContinued(line);\n // Number of logical lines in this visual line\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n }\n\n // Create a range of LineView objects for the given lines.\n function buildViewArray(cm, from, to) {\n var array = [], nextPos;\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n return array\n }\n\n var operationGroup = null;\n\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n\n function fireCallbacksForOps(group) {\n // Calls delayed callbacks and cursorActivity handlers until no\n // new ones appear\n var callbacks = group.delayedCallbacks, i = 0;\n do {\n for (; i < callbacks.length; i++)\n { callbacks[i].call(null); }\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n if (op.cursorActivityHandlers)\n { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n }\n } while (i < callbacks.length)\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n if (!group) { return }\n\n try { fireCallbacksForOps(group); }\n finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null;\n\n // Often, we want to signal events at a point where we are in the\n // middle of some work, but don't want the handler to start calling\n // other methods on the editor, which might be in an inconsistent\n // state or simply not expect any other events to happen.\n // signalLater looks whether there are any handlers, and schedules\n // them to be executed when the last operation ends, or, if no\n // operation is active, when a timeout fires.\n function signalLater(emitter, type /*, values...*/) {\n var arr = getHandlers(emitter, type);\n if (!arr.length) { return }\n var args = Array.prototype.slice.call(arguments, 2), list;\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n var loop = function ( i ) {\n list.push(function () { return arr[i].apply(null, args); });\n };\n\n for (var i = 0; i < arr.length; ++i)\n loop( i );\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n }\n\n // When an aspect of a line changes, a string is added to\n // lineView.changes. This updates the relevant part of the line's\n // DOM structure.\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n if (type == \"text\") { updateLineText(cm, lineView); }\n else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n else if (type == \"class\") { updateLineClasses(cm, lineView); }\n else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n }\n lineView.changes = null;\n }\n\n // Lines with gutter elements, widgets or a background class need to\n // be wrapped, and have the extra elements added to the wrapper div\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n if (lineView.text.parentNode)\n { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n lineView.node.appendChild(lineView.text);\n if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\n }\n return lineView.node\n }\n\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n if (cls) { cls += \" CodeMirror-linebackground\"; }\n if (lineView.background) {\n if (cls) { lineView.background.className = cls; }\n else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n } else if (cls) {\n var wrap = ensureLineWrapped(lineView);\n lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n }\n\n // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built\n }\n return buildLineContent(cm, lineView)\n }\n\n // Redraw the line's text. Interacts with the background and text\n // classes because the mode may output tokens that influence these\n // classes.\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n if (lineView.text == lineView.node) { lineView.node = built.pre; }\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n if (lineView.line.wrapClass)\n { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n else if (lineView.node != lineView.text)\n { lineView.node.className = \"\"; }\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + (dims.gutterTotalWidth) + \"px\"));\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\n }\n var markers = lineView.line.gutterMarkers;\n if (cm.options.lineNumbers || markers) {\n var wrap$1 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"));\n gutterWrap.setAttribute(\"aria-hidden\", \"true\");\n cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n if (lineView.line.gutterClass)\n { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n { lineView.lineNumber = gutterWrap.appendChild(\n elt(\"div\", lineNumberFor(cm.options, lineN),\n \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n if (markers) { for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n var id = cm.display.gutterSpecs[k].className, found = markers.hasOwnProperty(id) && markers[id];\n if (found)\n { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n } }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) { lineView.alignable = null; }\n var isWidget = classTest(\"CodeMirror-linewidget\");\n for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n next = node.nextSibling;\n if (isWidget.test(node.className)) { lineView.node.removeChild(node); }\n }\n insertLineWidgets(cm, lineView, dims);\n }\n\n // Build a line's DOM representation from scratch\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n if (built.bgClass) { lineView.bgClass = built.bgClass; }\n if (built.textClass) { lineView.textClass = built.textClass; }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node\n }\n\n // A lineView may contain multiple logical lines (when merged by\n // collapsed spans). The widgets for all of them need to be drawn.\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) { return }\n var wrap = ensureLineWrapped(lineView);\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n if (allowAbove && widget.above)\n { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n else\n { wrap.appendChild(node); }\n signalLater(widget, \"redraw\");\n }\n }\n\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n node.style.width = width + \"px\";\n }\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) { return widget.height }\n var cm = widget.doc.cm;\n if (!cm) { return 0 }\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n if (widget.coverGutter)\n { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n if (widget.noHScroll)\n { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n return widget.height = widget.node.parentNode.offsetHeight\n }\n\n // Return true when the given mouse event happened in a widget\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n (n.parentNode == display.sizer && n != display.mover))\n { return true }\n }\n }\n\n // POSITION MEASUREMENT\n\n function paddingTop(display) {return display.lineSpace.offsetTop}\n function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\n function paddingH(display) {\n if (display.cachedPaddingH) { return display.cachedPaddingH }\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n return data\n }\n\n function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n }\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n }\n\n // Ensure the lineView.wrapping.heights array is populated. This is\n // an array of bottom offsets for the lines that make up a drawn\n // line. When lineWrapping is on, there might be more than one\n // height.\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i], next = rects[i + 1];\n if (Math.abs(cur.bottom - next.bottom) > 2)\n { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n }\n }\n heights.push(rect.bottom - rect.top);\n }\n }\n\n // Find a line map (mapping character offsets to text nodes) and a\n // measurement cache for the given line number. (A line view might\n // contain multiple lines when collapsed ranges are present.)\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line)\n { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++)\n { if (lineView.rest[i] == line)\n { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n { if (lineNo(lineView.rest[i$1]) > lineN)\n { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\n }\n }\n\n // Render a line into the hidden node display.externalMeasured. Used\n // when measurement is needed for a line that's not in the viewport.\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view\n }\n\n // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n }\n\n // Find a line view that corresponds to the given line number.\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n { return cm.display.view[findViewIndex(cm, lineN)] }\n var ext = cm.display.externalMeasured;\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n { return ext }\n }\n\n // Measurement can be split in two steps, the set-up work that\n // applies to the whole line, and the measurement of the actual\n // character. Functions like coordsChar, that need to do a lot of\n // measurements in a row, can thus ensure that the set-up work is\n // only done once.\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n if (!view)\n { view = updateExternalMeasurement(cm, line); }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line, view: view, rect: null,\n map: info.map, cache: info.cache, before: info.before,\n hasHeights: false\n }\n }\n\n // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) { ch = -1; }\n var key = ch + (bias || \"\"), found;\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect)\n { prepared.rect = prepared.view.text.getBoundingClientRect(); }\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n found = measureCharInner(cm, prepared, ch, bias);\n if (!found.bogus) { prepared.cache[key] = found; }\n }\n return {left: found.left, right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom}\n }\n\n var nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\n function nodeAndOffsetInLineMap(map, ch, bias) {\n var node, start, end, collapse, mStart, mEnd;\n // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n for (var i = 0; i < map.length; i += 3) {\n mStart = map[i];\n mEnd = map[i + 1];\n if (ch < mStart) {\n start = 0; end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n if (ch >= mEnd) { collapse = \"right\"; }\n }\n if (start != null) {\n node = map[i + 2];\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n { collapse = bias; }\n if (bias == \"left\" && start == 0)\n { while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n node = map[(i -= 3) + 2];\n collapse = \"left\";\n } }\n if (bias == \"right\" && start == mEnd - mStart)\n { while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n node = map[(i += 3) + 2];\n collapse = \"right\";\n } }\n break\n }\n }\n return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) { break }\n } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) { break }\n } }\n return rect\n }\n\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n var rect;\n if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n { rect = node.parentNode.getBoundingClientRect(); }\n else\n { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\n if (rect.left || rect.right || start == 0) { break }\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n } else { // If it is a widget, simply get the box for the whole widget.\n if (start > 0) { collapse = bias = \"right\"; }\n var rects;\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n { rect = rects[bias == \"right\" ? rects.length - 1 : 0]; }\n else\n { rect = node.getBoundingClientRect(); }\n }\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n if (rSpan)\n { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n else\n { rect = nullRect; }\n }\n\n var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n for (; i < heights.length - 1; i++)\n { if (mid < heights[i]) { break } }\n var top = i ? heights[i - 1] : 0, bot = heights[i];\n var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top, bottom: bot};\n if (!rect.left && !rect.right) { result.bogus = true; }\n if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n return result\n }\n\n // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null ||\n screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n { return rect }\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {left: rect.left * scaleX, right: rect.right * scaleX,\n top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { lineView.measure.caches[i] = {}; } }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n for (var i = 0; i < cm.display.view.length; i++)\n { clearLineMeasurementCacheFor(cm.display.view[i]); }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\n cm.display.lineNumChars = null;\n }\n\n function pageScrollX(doc) {\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n // which causes page_Offset and bounding client rects to use\n // different reference viewports and invalidate our calculations.\n if (chrome && android) { return -(doc.body.getBoundingClientRect().left - parseInt(getComputedStyle(doc.body).marginLeft)) }\n return doc.defaultView.pageXOffset || (doc.documentElement || doc.body).scrollLeft\n }\n function pageScrollY(doc) {\n if (chrome && android) { return -(doc.body.getBoundingClientRect().top - parseInt(getComputedStyle(doc.body).marginTop)) }\n return doc.defaultView.pageYOffset || (doc.documentElement || doc.body).scrollTop\n }\n\n function widgetTopHeight(lineObj) {\n var ref = visualLine(lineObj);\n var widgets = ref.widgets;\n var height = 0;\n if (widgets) { for (var i = 0; i < widgets.length; ++i) { if (widgets[i].above)\n { height += widgetHeight(widgets[i]); } } }\n return height\n }\n\n // Converts a {top, bottom, left, right} box from line-local\n // coordinates into another coordinate system. Context may be one of\n // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n // or \"page\".\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height; rect.bottom += height;\n }\n if (context == \"line\") { return rect }\n if (!context) { context = \"local\"; }\n var yOff = heightAtLine(lineObj);\n if (context == \"local\") { yOff += paddingTop(cm.display); }\n else { yOff -= cm.display.viewOffset; }\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY(doc(cm)));\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX(doc(cm)));\n rect.left += xOff; rect.right += xOff;\n }\n rect.top += yOff; rect.bottom += yOff;\n return rect\n }\n\n // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") { return coords }\n var left = coords.left, top = coords.top;\n // First move into \"page\" coordinate system\n if (context == \"page\") {\n left -= pageScrollX(doc(cm));\n top -= pageScrollY(doc(cm));\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n }\n\n function charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n }\n\n // Returns a box for a given cursor position, which may have an\n // 'other' property containing the position of the secondary cursor\n // on a bidi boundary.\n // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n // and after `char - 1` in writing order of `char - 1`\n // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n // and before `char` in writing order of `char`\n // Examples (upper-case letters are RTL, lower-case are LTR):\n // Pos(0, 1, ...)\n // before after\n // ab a|b a|b\n // aB a|B aB|\n // Ab |Ab A|b\n // AB B|A B|A\n // Every position after the last character on a line is considered to stick\n // to the last character on the line.\n function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n if (right) { m.left = m.right; } else { m.right = m.left; }\n return intoCoordSystem(cm, lineObj, m, context)\n }\n var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos], right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert)\n }\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n return val\n }\n\n // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = clipPos(cm.doc, pos);\n if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n var lineObj = getLine(cm.doc, pos.line);\n var top = heightAtLine(lineObj) + paddingTop(cm.display);\n return {left: left, right: left, top: top, bottom: top + lineObj.height}\n }\n\n // Positions returned by coordsChar contain some extra information.\n // xRel is the relative x position of the input coordinates compared\n // to the found position (so xRel > 0 means the coordinates are to\n // the right of the character position, for example). When outside\n // is true, that means the coordinates lie outside the line's\n // vertical range.\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n if (outside) { pos.outside = outside; }\n return pos\n }\n\n // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n function coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n if (y < 0) { return PosWithInfo(doc.first, 0, null, -1, -1) }\n var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n if (lineN > last)\n { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1) }\n if (x < 0) { x = 0; }\n\n var lineObj = getLine(doc, lineN);\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n if (!collapsed) { return found }\n var rangeEnd = collapsed.find(1);\n if (rangeEnd.line == lineN) { return rangeEnd }\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0);\n end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end);\n return {begin: begin, end: end}\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n }\n\n // Returns true if the given side of a box is after the given\n // coordinates, in top-to-bottom, left-to-right order.\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x\n }\n\n function coordsCharInner(cm, lineObj, lineNo, x, y) {\n // Move y into line-local coordinate space\n y -= heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n var widgetHeight = widgetTopHeight(lineObj);\n var begin = 0, end = lineObj.text.length, ltr = true;\n\n var order = getOrder(lineObj, cm.doc.direction);\n // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)\n (cm, lineObj, lineNo, preparedMeasure, order, x, y);\n ltr = part.level != 1;\n // The awkward -1 offsets are needed because findFirst (called\n // on these below) will treat its first bound as inclusive,\n // second as exclusive, but we want to actually address the\n // characters in the part's range\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n }\n\n // A binary search to find the first character whose bounding box\n // starts after the coordinates. If we run across any whose box wrap\n // the coordinates, store that.\n var chAround = null, boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight; box.bottom += widgetHeight;\n if (!boxIsAfter(box, x, y, false)) { return false }\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n return true\n }, begin, end);\n\n var baseX, sticky, outside = false;\n // If a box around the coordinates was found, use that\n if (boxAround) {\n // Distinguish coordinates nearer to the left or right side of the box\n var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n // (Adjust for extended bound, if necessary.)\n if (!ltr && (ch == end || ch == begin)) { ch++; }\n // To determine which side to associate with, get the box to the\n // left of the character and compare it's vertical position to the\n // coordinates\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" :\n (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y) == ltr ?\n \"after\" : \"before\";\n // Now get accurate coordinates for this place, in order to get a\n // base X position\n var coords = cursorCoords(cm, Pos(lineNo, ch, sticky), \"line\", lineObj, preparedMeasure);\n baseX = coords.left;\n outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo, ch, sticky, outside, x - baseX)\n }\n\n function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) {\n // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n // situation, we can take this ordering to correspond to the visual\n // ordering. This finds the first part whose end is after the given\n // coordinates.\n var index = findFirst(function (i) {\n var part = order[i], ltr = part.level != 1;\n return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"),\n \"line\", lineObj, preparedMeasure), x, y, true)\n }, 0, order.length - 1);\n var part = order[index];\n // If this isn't the first part, the part's start is also after\n // the coordinates, and the coordinates aren't on the same line as\n // that start, move one part back.\n if (index > 0) {\n var ltr = part.level != 1;\n var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"),\n \"line\", lineObj, preparedMeasure);\n if (boxIsAfter(start, x, y, true) && start.top > y)\n { part = order[index - 1]; }\n }\n return part\n }\n\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n // In a wrapped line, rtl text on wrapping boundaries can do things\n // that don't correspond to the ordering in our `order` array at\n // all, so a binary search doesn't work, and we want to return a\n // part that only spans one line so that the binary search in\n // coordsCharInner is safe. As such, we first find the extent of the\n // wrapped line, and then do a flat search in which we discard any\n // spans that aren't on the line.\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n if (/\\s/.test(lineObj.text.charAt(end - 1))) { end--; }\n var part = null, closestDist = null;\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n if (p.from >= end || p.to <= begin) { continue }\n var ltr = p.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;\n // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n if (!part) { part = order[order.length - 1]; }\n // Clip the part to the wrapped line.\n if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; }\n if (part.to > end) { part = {from: part.from, to: end, level: part.level}; }\n return part\n }\n\n var measureText;\n // Compute the default text height.\n function textHeight(display) {\n if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n if (measureText == null) {\n measureText = elt(\"pre\", null, \"CodeMirror-line-like\");\n // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n if (height > 3) { display.cachedTextHeight = height; }\n removeChildren(display.measure);\n return height || 1\n }\n\n // Compute the default character width.\n function charWidth(display) {\n if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n if (width > 2) { display.cachedCharWidth = width; }\n return width || 10\n }\n\n // Do a bulk-read of the DOM positions and sizes needed to draw the\n // view, so that we don't interleave reading and writing to the DOM.\n function getDimensions(cm) {\n var d = cm.display, left = {}, width = {};\n var gutterLeft = d.gutters.clientLeft;\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n var id = cm.display.gutterSpecs[i].className;\n left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[id] = n.clientWidth;\n }\n return {fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth}\n }\n\n // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n }\n\n // Returns a function that estimates the height of a line, to use as\n // first approximation until the line becomes visible (and is thus\n // properly measurable).\n function estimateHeight(cm) {\n var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function (line) {\n if (lineIsHidden(cm.doc, line)) { return 0 }\n\n var widgetsHeight = 0;\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\n } }\n\n if (wrapping)\n { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\n else\n { return widgetsHeight + th }\n }\n }\n\n function estimateLineHeights(cm) {\n var doc = cm.doc, est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n });\n }\n\n // Given a mouse event, find the corresponding position. If liberal\n // is false, it checks whether a gutter or scrollbar was clicked,\n // and returns null if it was. forRect is used by rectangular\n // selections, and tries to estimate a character position even for\n // coordinates beyond the right of the text.\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n var x, y, space = display.lineSpace.getBoundingClientRect();\n // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n try { x = e.clientX - space.left; y = e.clientY - space.top; }\n catch (e$1) { return null }\n var coords = coordsChar(cm, x, y), line;\n if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n return coords\n }\n\n // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) { return null }\n n -= cm.display.viewFrom;\n if (n < 0) { return null }\n var view = cm.display.view;\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n if (n < 0) { return i }\n }\n }\n\n // Updates the display.view data structure for a given change to the\n // document. From and to are in pre-change coordinates. Lendiff is\n // the amount of lines added or subtracted by the change. This is\n // used for changes that span multiple lines, or change the way\n // lines are divided into visual lines. regLineChange (below)\n // registers single-line changes.\n function regChange(cm, from, to, lendiff) {\n if (from == null) { from = cm.doc.first; }\n if (to == null) { to = cm.doc.first + cm.doc.size; }\n if (!lendiff) { lendiff = 0; }\n\n var display = cm.display;\n if (lendiff && to < display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers > from))\n { display.updateLineNumbers = from; }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) { // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n { resetView(cm); }\n } else if (to <= display.viewFrom) { // Change before\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) { // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) { // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else { // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index)\n .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n .concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n if (ext) {\n if (to < ext.lineN)\n { ext.lineN += lendiff; }\n else if (from < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n }\n }\n\n // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display, ext = cm.display.externalMeasured;\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n\n if (line < display.viewFrom || line >= display.viewTo) { return }\n var lineView = display.view[findViewIndex(cm, line)];\n if (lineView.node == null) { return }\n var arr = lineView.changes || (lineView.changes = []);\n if (indexOf(arr, type) == -1) { arr.push(type); }\n }\n\n // Clear the view.\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n { return {index: index, lineN: newN} }\n var n = cm.display.viewFrom;\n for (var i = 0; i < index; i++)\n { n += view[i].size; }\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) { return null }\n diff = (n + view[index].size) - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n oldN += diff; newN += diff;\n }\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n return {index: index, lineN: newN}\n }\n\n // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n function adjustView(cm, from, to) {\n var display = cm.display, view = display.view;\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from)\n { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\n else if (display.viewFrom < from)\n { display.view = display.view.slice(findViewIndex(cm, from)); }\n display.viewFrom = from;\n if (display.viewTo < to)\n { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\n else if (display.viewTo > to)\n { display.view = display.view.slice(0, findViewIndex(cm, to)); }\n }\n display.viewTo = to;\n }\n\n // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n function countDirtyView(cm) {\n var view = cm.display.view, dirty = 0;\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n }\n return dirty\n }\n\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n\n function prepareSelection(cm, primary) {\n if ( primary === void 0 ) primary = true;\n\n var doc = cm.doc, result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n\n var customCursor = cm.options.$customCursor;\n if (customCursor) { primary = true; }\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) { continue }\n var range = doc.sel.ranges[i];\n if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) { continue }\n var collapsed = range.empty();\n if (customCursor) {\n var head = customCursor(cm, range);\n if (head) { drawSelectionCursor(cm, head, curFragment); }\n } else if (collapsed || cm.options.showCursorWhenSelecting) {\n drawSelectionCursor(cm, range.head, curFragment);\n }\n if (!collapsed)\n { drawSelectionRange(cm, range, selFragment); }\n }\n return result\n }\n\n // Draws a cursor for the given range\n function drawSelectionCursor(cm, head, output) {\n var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n if (/\\bcm-fat-cursor\\b/.test(cm.getWrapperElement().className)) {\n var charPos = charCoords(cm, head, \"div\", null, null);\n var width = charPos.right - charPos.left;\n cursor.style.width = (width > 0 ? width : cm.defaultCharWidth()) + \"px\";\n }\n\n if (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n }\n }\n\n function cmpCoords(a, b) { return a.top - b.top || a.left - b.left }\n\n // Draws the given range as a highlighted selection\n function drawSelectionRange(cm, range, output) {\n var display = cm.display, doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display), leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n\n function add(left, top, width, bottom) {\n if (top < 0) { top = 0; }\n top = Math.round(top);\n bottom = Math.round(bottom);\n fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", (\"position: absolute; left: \" + left + \"px;\\n top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top) + \"px\")));\n }\n\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n function coords(ch, bias) {\n return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n }\n\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop = (dir == \"ltr\") == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop)[prop]\n }\n\n var order = getOrder(lineObj, doc.direction);\n iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n\n var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen;\n var first = i == 0, last = !order || i == order.length - 1;\n if (toPos.top - fromPos.top <= 3) { // Single line\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else { // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); }\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; }\n if (cmpCoords(toPos, start) < 0) { start = toPos; }\n if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; }\n if (cmpCoords(toPos, end) < 0) { end = toPos; }\n });\n return {start: start, end: end}\n }\n\n var sFrom = range.from(), sTo = range.to();\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n if (leftEnd.bottom < rightStart.top)\n { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n }\n\n output.appendChild(fragment);\n }\n\n // Cursor-blinking\n function restartBlink(cm) {\n if (!cm.state.focused) { return }\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n if (cm.options.cursorBlinkRate > 0)\n { display.blinker = setInterval(function () {\n if (!cm.hasFocus()) { onBlur(cm); }\n display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n }, cm.options.cursorBlinkRate); }\n else if (cm.options.cursorBlinkRate < 0)\n { display.cursorDiv.style.visibility = \"hidden\"; }\n }\n\n function ensureFocus(cm) {\n if (!cm.hasFocus()) {\n cm.display.input.focus();\n if (!cm.state.focused) { onFocus(cm); }\n }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n if (cm.state.focused) { onBlur(cm); }\n } }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent && !cm.state.draggingText) { cm.state.delayingBlurEvent = false; }\n\n if (cm.options.readOnly == \"nocursor\") { return }\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\");\n // This test prevents this from firing when a context\n // menu is closed (since the input reset would kill the\n // select-all detection hack)\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n }\n cm.display.input.receivedFocus();\n }\n restartBlink(cm);\n }\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) { return }\n\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n clearInterval(cm.display.blinker);\n setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n }\n\n // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top);\n var oldHeight = display.lineDiv.getBoundingClientRect().top;\n var mustScroll = 0;\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i], wrapping = cm.options.lineWrapping;\n var height = (void 0), width = 0;\n if (cur.hidden) { continue }\n oldHeight += cur.line.height;\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top;\n // Check that lines don't extend past the right of the current\n // editor width\n if (!wrapping && cur.text.firstChild)\n { width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1; }\n }\n var diff = cur.line.height - height;\n if (diff > .005 || diff < -.005) {\n if (oldHeight < viewTop) { mustScroll -= diff; }\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n { updateWidgetHeight(cur.rest[j]); } }\n }\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n if (Math.abs(mustScroll) > 2) { display.scroller.scrollTop += mustScroll; }\n }\n\n // Read and store the height of line widgets associated with the\n // given line.\n function updateWidgetHeight(line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i], parent = w.node.parentNode;\n if (parent) { w.height = parent.offsetHeight; }\n } }\n }\n\n // Compute the lines that are visible in a given viewport (defaults\n // the current scroll position). viewport may contain top,\n // height, and ensure (see op.scrollToPos) properties.\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n if (ensureFrom < from) {\n from = ensureFrom;\n to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n return {from: from, to: Math.max(to, from + 1)}\n }\n\n // SCROLLING THINGS INTO VIEW\n\n // If an editor sits on the top or bottom of the window, partially\n // scrolled out of view, this ensures that the cursor is visible.\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n var doc = display.wrapper.ownerDocument;\n if (rect.top + box.top < 0) { doScroll = true; }\n else if (rect.bottom + box.top > (doc.defaultView.innerHeight || doc.documentElement.clientHeight)) { doScroll = false; }\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200b\", null, (\"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + (rect.left) + \"px; width: \" + (Math.max(2, rect.right - rect.left)) + \"px;\"));\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n }\n\n // Scroll a given position into view (immediately), verifying that\n // it actually became visible (as line heights are accurately\n // measured, the position of something may 'drift' during drawing).\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) { margin = 0; }\n var rect;\n if (!cm.options.lineWrapping && pos == end) {\n // Set pos and end to the cursor positions around the character pos sticks to\n // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n }\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n var coords = cursorCoords(cm, pos);\n var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n rect = {left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n }\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n }\n if (!changed) { break }\n }\n return rect\n }\n\n // Scroll a given set of coordinates into view (immediately).\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); }\n if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n }\n\n // Calculate a new scroll position needed to scroll the given\n // rectangle into view. Returns an object with scrollTop and\n // scrollLeft properties. When these are undefined, the\n // vertical/horizontal position does not need to be adjusted.\n function calculateScrollPos(cm, rect) {\n var display = cm.display, snapMargin = textHeight(cm.display);\n if (rect.top < 0) { rect.top = 0; }\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm), result = {};\n if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n if (newTop != screentop) { result.scrollTop = newTop; }\n }\n\n var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n var screenw = displayWidth(cm) - display.gutters.offsetWidth;\n var tooWide = rect.right - rect.left > screenw;\n if (tooWide) { rect.right = rect.left + screenw; }\n if (rect.left < 10)\n { result.scrollLeft = 0; }\n else if (rect.left < screenleft)\n { result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10)); }\n else if (rect.right > screenw + screenleft - 3)\n { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\n return result\n }\n\n // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n function addToScrollTop(cm, top) {\n if (top == null) { return }\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n }\n\n // Make sure that at the end of the operation the current cursor is\n // shown.\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin};\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) { resolveScrollToPos(cm); }\n if (x != null) { cm.curOp.scrollLeft = x; }\n if (y != null) { cm.curOp.scrollTop = y; }\n }\n\n function scrollToRange(cm, range) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range;\n }\n\n // When an operation has its scrollToPos property set, and another\n // scroll action is applied before the end of the operation, this\n // 'simulates' scrolling that position into view in a cheap way, so\n // that the effect of intermediate scroll commands is not ignored.\n function resolveScrollToPos(cm) {\n var range = cm.curOp.scrollToPos;\n if (range) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to);\n scrollToCoordsRange(cm, from, to, range.margin);\n }\n }\n\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n }\n\n // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n setScrollTop(cm, val, true);\n if (gecko) { updateDisplaySimple(cm); }\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n if (cm.display.scroller.scrollTop == val && !forceScroll) { return }\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n }\n\n // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return }\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n cm.display.scrollbars.setScrollLeft(val);\n }\n\n // SCROLLBARS\n\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n function measureForScrollbars(cm) {\n var d = cm.display, gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n }\n }\n\n var NativeScrollbars = function(place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert); place(horiz);\n\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n });\n\n this.checkedZeroWidth = false;\n // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\n };\n\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n // A bug in IE8 can cause this value to be negative, so guard it.\n this.vert.firstChild.style.height =\n Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.scrollTop = 0;\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width =\n Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) { this.zeroWidthHack(); }\n this.checkedZeroWidth = true;\n }\n\n return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\n };\n\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.visibility = this.vert.style.visibility = \"hidden\";\n this.disableHoriz = new Delayed;\n this.disableVert = new Delayed;\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.visibility = \"\";\n function maybeDisable() {\n // To find out whether the scrollbar is still visible, we\n // check whether the element under the pixel in the bottom\n // right corner of the scrollbar box is the scrollbar box\n // itself (when the bar is still visible) or its filler child\n // (when the bar is hidden). If it is still visible, we keep\n // it enabled, if it's hidden, we disable pointer events.\n var box = bar.getBoundingClientRect();\n var elt = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n if (elt != bar) { bar.style.visibility = \"hidden\"; }\n else { delay.set(1000, maybeDisable); }\n }\n delay.set(1000, maybeDisable);\n };\n\n NativeScrollbars.prototype.clear = function () {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n\n var NullScrollbars = function () {};\n\n NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\n NullScrollbars.prototype.setScrollLeft = function () {};\n NullScrollbars.prototype.setScrollTop = function () {};\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) { measure = measureForScrollbars(cm); }\n var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n { updateHeightsInViewport(cm); }\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n }\n }\n\n // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else { d.scrollbarFiller.style.display = \"\"; }\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else { d.gutterFiller.style.display = \"\"; }\n }\n\n var scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n if (cm.display.scrollbars.addClass)\n { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n // Prevent clicks in the scrollbars from killing focus\n on(node, \"mousedown\", function () {\n if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n else { updateScrollTop(cm, pos); }\n }, cm);\n if (cm.display.scrollbars.addClass)\n { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n // Operations are used to wrap a series of changes to the editor\n // state in such a way that each change won't have to update the\n // cursor and display (which would be awkward, slow, and\n // error-prone). Instead, display updates are batched and then all\n // combined and executed at once.\n\n var nextOpId = 0;\n // Start a new operation.\n function startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false, // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height, // Used to detect need to update scrollbar\n forceUpdate: false, // Used to force a redraw\n updateInput: 0, // Whether to reset the input textarea\n typing: false, // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null, // Accumulated changes, for firing change events\n cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n selectionChanged: false, // Whether the selection needs to be redrawn\n updateMaxLine: false, // Set when the widest line needs to be determined anew\n scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null, // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId, // Unique ID\n markArrays: null // Used by addMarkedSpan\n };\n pushOperation(cm.curOp);\n }\n\n // Finish an operation, updating the display and signalling delayed events\n function endOperation(cm) {\n var op = cm.curOp;\n if (op) { finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++)\n { group.ops[i].cm.curOp = null; }\n endOperations(group);\n }); }\n }\n\n // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n function endOperations(group) {\n var ops = group.ops;\n for (var i = 0; i < ops.length; i++) // Read DOM\n { endOperation_R1(ops[i]); }\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n { endOperation_W1(ops[i$1]); }\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n { endOperation_R2(ops[i$2]); }\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n { endOperation_W2(ops[i$3]); }\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n { endOperation_finish(ops[i$4]); }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm, display = cm.display;\n maybeClipScrollbars(cm);\n if (op.updateMaxLine) { findMaxLine(cm); }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n op.scrollToPos.to.line >= display.viewTo) ||\n display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate &&\n new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n }\n\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n\n function endOperation_R2(op) {\n var cm = op.cm, display = cm.display;\n if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n op.barMeasure = measureForScrollbars(cm);\n\n // If the max line changed since it was last measured, measure it,\n // and ensure the document's width matches it.\n // updateDisplay_W2 will use these properties to do the actual resizing\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth =\n Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n\n if (op.updatedDisplay || op.selectionChanged)\n { op.preparedSelection = display.input.prepareSelection(); }\n }\n\n function endOperation_W2(op) {\n var cm = op.cm;\n\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n if (op.maxScrollLeft < cm.doc.scrollLeft)\n { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt(root(cm));\n if (op.preparedSelection)\n { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n if (op.updatedDisplay || op.startHeight != cm.doc.height)\n { updateScrollbars(cm, op.barMeasure); }\n if (op.updatedDisplay)\n { setDocumentHeight(cm, op.barMeasure); }\n\n if (op.selectionChanged) { restartBlink(cm); }\n\n if (cm.state.focused && op.updateInput)\n { cm.display.input.reset(op.typing); }\n if (takeFocus) { ensureFocus(op.cm); }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm, display = cm.display, doc = cm.doc;\n\n if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n // Abort mouse wheel delta measurement, when scrolling explicitly\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n { display.wheelStartX = display.wheelStartY = null; }\n\n // Propagate the scroll position to the actual DOM scroller\n if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); }\n\n if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); }\n // If we need to scroll a specific position into view, do so.\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n }\n\n // Fire events for markers that are hidden/unidden by editing or\n // undoing\n var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n if (hidden) { for (var i = 0; i < hidden.length; ++i)\n { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n if (display.wrapper.offsetHeight)\n { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n // Fire change events, and delayed event handlers\n if (op.changeObjs)\n { signal(cm, \"changes\", cm, op.changeObjs); }\n if (op.update)\n { op.update.finish(); }\n }\n\n // Run the given function in an operation\n function runInOp(cm, f) {\n if (cm.curOp) { return f() }\n startOperation(cm);\n try { return f() }\n finally { endOperation(cm); }\n }\n // Wraps a function in an operation. Returns the wrapped function.\n function operation(cm, f) {\n return function() {\n if (cm.curOp) { return f.apply(cm, arguments) }\n startOperation(cm);\n try { return f.apply(cm, arguments) }\n finally { endOperation(cm); }\n }\n }\n // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n function methodOp(f) {\n return function() {\n if (this.curOp) { return f.apply(this, arguments) }\n startOperation(this);\n try { return f.apply(this, arguments) }\n finally { endOperation(this); }\n }\n }\n function docMethodOp(f) {\n return function() {\n var cm = this.cm;\n if (!cm || cm.curOp) { return f.apply(this, arguments) }\n startOperation(cm);\n try { return f.apply(this, arguments) }\n finally { endOperation(cm); }\n }\n }\n\n // HIGHLIGHT WORKER\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo)\n { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\n }\n\n function highlightWorker(cm) {\n var doc = cm.doc;\n if (doc.highlightFrontier >= cm.display.viewTo) { return }\n var end = +new Date + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) { // Visible\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n if (resetState) { context.state = resetState; }\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses, newCls = highlighted.classes;\n if (newCls) { line.styleClasses = newCls; }\n else if (oldCls) { line.styleClasses = null; }\n var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n if (ischange) { changedLines.push(context.line); }\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength)\n { processLine(cm, line.text, context); }\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n if (+new Date > end) {\n startWorker(cm, cm.options.workDelay);\n return true\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n if (changedLines.length) { runInOp(cm, function () {\n for (var i = 0; i < changedLines.length; i++)\n { regLineChange(cm, changedLines[i], \"text\"); }\n }); }\n }\n\n // DISPLAY DRAWING\n\n var DisplayUpdate = function(cm, viewport, force) {\n var display = cm.display;\n\n this.viewport = viewport;\n // Store some values that we'll need later (but don't want to force a relayout for)\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n };\n\n DisplayUpdate.prototype.signal = function (emitter, type) {\n if (hasHandler(emitter, type))\n { this.events.push(arguments); }\n };\n DisplayUpdate.prototype.finish = function () {\n for (var i = 0; i < this.events.length; i++)\n { signal.apply(null, this.events[i]); }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) { return null }\n var active = activeElt(root(cm));\n if (!active || !contains(cm.display.lineDiv, active)) { return null }\n var result = {activeElt: active};\n if (window.getSelection) {\n var sel = win(cm).getSelection();\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n return result\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt(rootNode(snapshot.activeElt))) { return }\n snapshot.activeElt.focus();\n if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) &&\n snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var doc = snapshot.activeElt.ownerDocument;\n var sel = doc.defaultView.getSelection(), range = doc.createRange();\n range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n }\n\n // Does the actual updating of the line display. Bails out\n // (returning false) when there is nothing to be done and forced is\n // false.\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display, doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false\n }\n\n // Bail out if the visible area is already rendered and nothing changed.\n if (!update.force &&\n update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n display.renderedView == display.view && countDirtyView(cm) == 0)\n { return false }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n }\n\n // Compute a suitable new viewport (from & to)\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n\n var different = from != display.viewFrom || to != display.viewTo ||\n display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n\n display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n // Position the mover div to align with the current scroll position\n cm.display.mover.style.top = display.viewOffset + \"px\";\n\n var toUpdate = countDirtyView(cm);\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n { return false }\n\n // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n var selSnapshot = selectionSnapshot(cm);\n if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n display.renderedView = display.view;\n // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n restoreSelection(selSnapshot);\n\n // Prevent selection and cursors from interfering with the scroll\n // width and height.\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n\n display.updateLineNumbers = null;\n\n return true\n }\n\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\n\n for (var first = true;; first = false) {\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n // Clip forced viewport to actual scrollable area.\n if (viewport && viewport.top != null)\n { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n { break }\n } else if (first) {\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n }\n if (!updateDisplayIfNeeded(cm, update)) { break }\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.force = false;\n }\n\n update.signal(cm, \"update\", cm);\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n if (updateDisplayIfNeeded(cm, update)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.finish();\n }\n }\n\n // Sync the actual display DOM structure with display.view, removing\n // nodes for lines that are no longer in view, and creating the ones\n // that are not there yet, and updating the ones that are out of\n // date.\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display, lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv, cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling;\n // Works around a throw-scroll bug in OS X Webkit\n if (webkit && mac && cm.display.currentWheelTarget == node)\n { node.style.display = \"none\"; }\n else\n { node.parentNode.removeChild(node); }\n return next\n }\n\n var view = display.view, lineN = display.viewFrom;\n // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else { // Already drawn\n while (cur != lineView.node) { cur = rm(cur); }\n var updateNumber = lineNumbers && updateNumbersFrom != null &&\n updateNumbersFrom <= lineN && lineView.lineNumber;\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n while (cur) { cur = rm(cur); }\n }\n\n function updateGutterSpace(display) {\n var width = display.gutters.offsetWidth;\n display.sizer.style.marginLeft = width + \"px\";\n // Send an event to consumers responding to changes in gutter width.\n signalLater(display, \"gutterChanged\", display);\n }\n\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\";\n }\n\n // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n function alignHorizontally(cm) {\n var display = cm.display, view = display.view;\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter)\n { view[i].gutter.style.left = left; }\n if (view[i].gutterBackground)\n { view[i].gutterBackground.style.left = left; }\n }\n var align = view[i].alignable;\n if (align) { for (var j = 0; j < align.length; j++)\n { align[j].style.left = left; } }\n } }\n if (cm.options.fixedGutter)\n { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n }\n\n // Used to ensure that the line number gutter is still the right\n // size for the current document size. Returns true when an update\n // is needed.\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) { return false }\n var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm.display);\n return true\n }\n return false\n }\n\n function getGutters(gutters, lineNumbers) {\n var result = [], sawLineNumbers = false;\n for (var i = 0; i < gutters.length; i++) {\n var name = gutters[i], style = null;\n if (typeof name != \"string\") { style = name.style; name = name.className; }\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) { continue }\n else { sawLineNumbers = true; }\n }\n result.push({className: name, style: style});\n }\n if (lineNumbers && !sawLineNumbers) { result.push({className: \"CodeMirror-linenumbers\", style: null}); }\n return result\n }\n\n // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n function renderGutters(display) {\n var gutters = display.gutters, specs = display.gutterSpecs;\n removeChildren(gutters);\n display.lineGutter = null;\n for (var i = 0; i < specs.length; ++i) {\n var ref = specs[i];\n var className = ref.className;\n var style = ref.style;\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n if (style) { gElt.style.cssText = style; }\n if (className == \"CodeMirror-linenumbers\") {\n display.lineGutter = gElt;\n gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n }\n }\n gutters.style.display = specs.length ? \"\" : \"none\";\n updateGutterSpace(display);\n }\n\n function updateGutters(cm) {\n renderGutters(cm.display);\n regChange(cm);\n alignHorizontally(cm);\n }\n\n // The display handles the DOM integration, both for input reading\n // and content drawing. It holds references to DOM nodes and\n // display-related state.\n\n function Display(place, doc, input, options) {\n var d = this;\n this.input = input;\n\n // Covers bottom-right square when both scrollbars are present.\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n // Will contain the actual code, positioned to cover the viewport.\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n // Elements are added to these to represent selection and cursors.\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n // A visibility: hidden element used to find the size of things.\n d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n // When lines outside of the viewport are measured, they are drawn in this.\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n // Wraps everything that needs to exist inside the vertically-padded coordinate system\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n // Moved around its parent to cover visible view.\n d.mover = elt(\"div\", [lines], null, \"position: relative\");\n // Set to the height of the document, allowing scrolling.\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null;\n // Behavior of elts with overflow: auto and padding is\n // inconsistent across browsers. This is used to ensure the\n // scrollable area is big enough.\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n // Will contain the gutters, if any.\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null;\n // Actual scrollable element.\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\");\n // The element in which the editor lives.\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n // See #6982. FIXME remove when this has been fixed for a while in Chrome\n if (chrome && chrome_version >= 105) { d.wrapper.style.clipPath = \"inset(0px)\"; }\n\n // This attribute is respected by automatic translation systems such as Google Translate,\n // and may also be respected by tools used by human translators.\n d.wrapper.setAttribute('translate', 'no');\n\n // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n if (place) {\n if (place.appendChild) { place.appendChild(d.wrapper); }\n else { place(d.wrapper); }\n }\n\n // Current rendered range (may be bigger than the view window).\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first;\n // Information about the rendered lines.\n d.view = [];\n d.renderedView = null;\n // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n d.externalMeasured = null;\n // Empty space (in pixels) above the view\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false;\n\n // Used to only resize the line number gutter when necessary (when\n // the amount of lines crosses a boundary that makes its width change)\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n // Set to true when a non-horizontal-scrolling line widget is\n // added. As an optimization, line widget aligning is skipped when\n // this is false.\n d.alignWidgets = false;\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false;\n\n // Used for measuring wheel scrolling granularity\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n // True when shift is held down.\n d.shift = false;\n\n // Used to track whether anything happened since the context menu\n // was opened.\n d.selForContextMenu = null;\n\n d.activeTouch = null;\n\n d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n\n input.init(d);\n }\n\n // Since the delta values reported on mouse wheel events are\n // unstandardized between browsers and even browser versions, and\n // generally horribly unpredictable, this code starts by measuring\n // the scroll effect that the first few mouse wheel events have,\n // and, from that, detects the way it can convert deltas to pixel\n // offsets afterwards.\n //\n // The reason we want to know the amount a wheel event will scroll\n // is that it gives us a chance to update the display before the\n // actual scrolling happens, reducing flickering.\n\n var wheelSamples = 0, wheelPixelsPerUnit = null;\n // Fill in a browser-detected starting value on browsers where we\n // know one. These don't have to be accurate -- the result of them\n // being wrong would just be a slight flicker on the first wheel\n // scroll (if it is large enough).\n if (ie) { wheelPixelsPerUnit = -.53; }\n else if (gecko) { wheelPixelsPerUnit = 15; }\n else if (chrome) { wheelPixelsPerUnit = -.7; }\n else if (safari) { wheelPixelsPerUnit = -1/3; }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n else if (dy == null) { dy = e.wheelDelta; }\n return {x: dx, y: dy}\n }\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta\n }\n\n function onScrollWheel(cm, e) {\n // On Chrome 102, viewport updates somehow stop wheel-based\n // scrolling. Turning off pointer events during the scroll seems\n // to avoid the issue.\n if (chrome && chrome_version == 102) {\n if (cm.display.chromeScrollHack == null) { cm.display.sizer.style.pointerEvents = \"none\"; }\n else { clearTimeout(cm.display.chromeScrollHack); }\n cm.display.chromeScrollHack = setTimeout(function () {\n cm.display.chromeScrollHack = null;\n cm.display.sizer.style.pointerEvents = \"\";\n }, 100);\n }\n var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n var pixelsPerUnit = wheelPixelsPerUnit;\n if (e.deltaMode === 0) {\n dx = e.deltaX;\n dy = e.deltaY;\n pixelsPerUnit = 1;\n }\n\n var display = cm.display, scroll = display.scroller;\n // Quit if there's nothing to scroll here\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n if (!(dx && canScrollX || dy && canScrollY)) { return }\n\n // Webkit browsers on OS X abort momentum scrolls when the target\n // of the scroll event is removed from the scrollable element.\n // This hack (see related code in patchDisplay) makes sure the\n // element is kept around.\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i = 0; i < view.length; i++) {\n if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer\n }\n }\n }\n }\n\n // On some browsers, horizontal scrolling will cause redraws to\n // happen before the gutter has been realigned, causing it to\n // wriggle around in a most unseemly way. When we have an\n // estimated pixels/delta value, we just handle horizontal\n // scrolling entirely here. It'll be slightly off from native, but\n // better than glitching out.\n if (dx && !gecko && !presto && pixelsPerUnit != null) {\n if (dy && canScrollY)\n { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * pixelsPerUnit)); }\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * pixelsPerUnit));\n // Only prevent default scrolling if vertical scrolling is\n // actually possible. Otherwise, it causes vertical scroll\n // jitter on OSX trackpads when deltaX is small and deltaY\n // is large (issue #3579)\n if (!dy || (dy && canScrollY))\n { e_preventDefault(e); }\n display.wheelStartX = null; // Abort measurement, if in progress\n return\n }\n\n // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n if (dy && pixelsPerUnit != null) {\n var pixels = dy * pixelsPerUnit;\n var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n updateDisplaySimple(cm, {top: top, bottom: bot});\n }\n\n if (wheelSamples < 20 && e.deltaMode !== 0) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx; display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) { return }\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n (movedX && display.wheelDX && movedX / display.wheelDX);\n display.wheelStartX = display.wheelStartY = null;\n if (!sample) { return }\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx; display.wheelDY += dy;\n }\n }\n }\n\n // Selection objects are immutable. A new one is created every time\n // the selection changes. A selection is one or more non-overlapping\n // (and non-touching) ranges, sorted, and an integer that indicates\n // which one is the primary selection (the one that's scrolled into\n // view, that getCursor returns, etc).\n var Selection = function(ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\n Selection.prototype.equals = function (other) {\n if (other == this) { return true }\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this.ranges[i], there = other.ranges[i];\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n }\n return true\n };\n\n Selection.prototype.deepCopy = function () {\n var out = [];\n for (var i = 0; i < this.ranges.length; i++)\n { out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); }\n return new Selection(out, this.primIndex)\n };\n\n Selection.prototype.somethingSelected = function () {\n for (var i = 0; i < this.ranges.length; i++)\n { if (!this.ranges[i].empty()) { return true } }\n return false\n };\n\n Selection.prototype.contains = function (pos, end) {\n if (!end) { end = pos; }\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this.ranges[i];\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n { return i }\n }\n return -1\n };\n\n var Range = function(anchor, head) {\n this.anchor = anchor; this.head = head;\n };\n\n Range.prototype.from = function () { return minPos(this.anchor, this.head) };\n Range.prototype.to = function () { return maxPos(this.anchor, this.head) };\n Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n primIndex = indexOf(ranges, prim);\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i], prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n if (i <= primIndex) { --primIndex; }\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n return new Selection(ranges, primIndex)\n }\n\n function simpleSelection(anchor, head) {\n return new Selection([new Range(anchor, head || anchor)], 0)\n }\n\n // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n function changeEnd(change) {\n if (!change.text) { return change.to }\n return Pos(change.from.line + change.text.length - 1,\n lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n }\n\n // Adjust a position to refer to the post-change position of the\n // same text, or the end of the change if the change covers it.\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) { return pos }\n if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n return Pos(line, ch)\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n var range = doc.sel.ranges[i];\n out.push(new Range(adjustForChange(range.anchor, change),\n adjustForChange(range.head, change)));\n }\n return normalizeSelection(doc.cm, out, doc.sel.primIndex)\n }\n\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line)\n { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\n else\n { return Pos(nw.line + (pos.line - old.line), pos.ch) }\n }\n\n // Used by replaceSelections to allow moving the selection to the\n // start or around the replaced test. Hint may be \"start\" or \"around\".\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n if (hint == \"around\") {\n var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n out[i] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i] = new Range(from, from);\n }\n }\n return new Selection(out, doc.sel.primIndex)\n }\n\n // Used to get the editor into a consistent state again when options change.\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n if (cm.curOp) { regChange(cm); }\n }\n\n // DOCUMENT DATA STRUCTURE\n\n // By default, updates that start and end at the beginning of a line\n // are treated specially, in order to make the association of line\n // widgets and marker elements with the text behave more intuitive.\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n }\n\n // Perform a change on the document data structure.\n function updateDoc(doc, change, markedSpans, estimateHeight) {\n function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight);\n signalLater(line, \"change\", line, change);\n }\n function linesFor(start, end) {\n var result = [];\n for (var i = start; i < end; ++i)\n { result.push(new Line(text[i], spansFor(i), estimateHeight)); }\n return result\n }\n\n var from = change.from, to = change.to, text = change.text;\n var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n // Adjust the line structure\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n // This is a whole-line replace. Treated specially to make\n // sure line objects move the way they are supposed to.\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n if (nlines) { doc.remove(from.line, nlines); }\n if (added.length) { doc.insert(from.line, added); }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n }\n\n // Call f for all linked documents.\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n if (rel.doc == skip) { continue }\n var shared = sharedHist && rel.sharedHist;\n if (sharedHistOnly && !shared) { continue }\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n } }\n }\n propagate(doc, null, true);\n }\n\n // Attach a document to an editor.\n function attachDoc(cm, doc) {\n if (doc.cm) { throw new Error(\"This document is already in use.\") }\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n cm.options.direction = doc.direction;\n if (!cm.options.lineWrapping) { findMaxLine(cm); }\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n\n function directionChanged(cm) {\n runInOp(cm, function () {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n\n function History(prev) {\n // Arrays of change events and selections. Doing something adds an\n // event to done and clears undo. Undoing moves events from done\n // to undone, redoing moves them in the other direction.\n this.done = []; this.undone = [];\n this.undoDepth = prev ? prev.undoDepth : Infinity;\n // Used to track when changes can be merged into a single undo\n // event\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null;\n // Used by the isClean() method\n this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1;\n }\n\n // Create a history change event from an updateDoc-style change\n // object.\n function historyChangeFromChange(doc, change) {\n var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n return histChange\n }\n\n // Pop all selection events off the end of a history array. Stop at\n // a change event.\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n if (last.ranges) { array.pop(); }\n else { break }\n }\n }\n\n // Find the top change event in the history. Pop off selection\n // events that are in the way.\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done)\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done)\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done)\n }\n }\n\n // Register a change in the history. Merges changes that are within\n // a single operation, or are close together with an origin that\n // allows merging (starting with \"+\") into a single event.\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date, cur;\n var last;\n\n if ((hist.lastOp == opId ||\n hist.lastOrigin == change.origin && change.origin &&\n ((change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) ||\n change.origin.charAt(0) == \"*\")) &&\n (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n } else {\n // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n if (!before || !before.ranges)\n { pushSelectionToHistory(doc.sel, hist.done); }\n cur = {changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation};\n hist.done.push(cur);\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n if (!hist.done[0].ranges) { hist.done.shift(); }\n }\n }\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n if (!last) { signal(doc, \"historyAdded\"); }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" ||\n ch == \"+\" &&\n prev.ranges.length == sel.ranges.length &&\n prev.somethingSelected() == sel.somethingSelected() &&\n new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n }\n\n // Called whenever the selection changes, sets the new selection as\n // the pending selection in the history, and pushes the old pending\n // selection into the 'done' array when it was significantly\n // different (in number of selected ranges, emptiness, or time).\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history, origin = options && options.origin;\n\n // A new event is started when the previous origin does not match\n // the current, or the origins don't allow matching. Origins\n // starting with * are always merged, those starting with + are\n // merged when similar and close together in time.\n if (opId == hist.lastSelOp ||\n (origin && hist.lastSelOrigin == origin &&\n (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n { hist.done[hist.done.length - 1] = sel; }\n else\n { pushSelectionToHistory(sel, hist.done); }\n\n hist.lastSelTime = +new Date;\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n if (options && options.clearRedo !== false)\n { clearSelectionEvents(hist.undone); }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n if (!(top && top.ranges && top.equals(sel)))\n { dest.push(sel); }\n }\n\n // Used to store marked span information in the history.\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id], n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans)\n { (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans; }\n ++n;\n });\n }\n\n // When un/re-doing restores text containing marked spans, those\n // that have been explicitly cleared should not be restored.\n function removeClearedSpans(spans) {\n if (!spans) { return null }\n var out;\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n else if (out) { out.push(spans[i]); }\n }\n return !out ? spans : out.length ? out : null\n }\n\n // Retrieve and filter the old marked spans stored in a change event.\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n if (!found) { return null }\n var nw = [];\n for (var i = 0; i < change.text.length; ++i)\n { nw.push(removeClearedSpans(found[i])); }\n return nw\n }\n\n // Used for un/re-doing changes from the history. Combines the\n // result of computing the existing spans with the set of spans that\n // existed in the history (so that deleting around a span and then\n // undoing brings back the span).\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n if (!old) { return stretched }\n if (!stretched) { return old }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i], stretchCur = stretched[i];\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n for (var k = 0; k < oldCur.length; ++k)\n { if (oldCur[k].marker == span.marker) { continue spans } }\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n return old\n }\n\n // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue\n }\n var changes = event.changes, newChanges = [];\n copy.push({changes: newChanges});\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j], m = (void 0);\n newChanges.push({from: change.from, to: change.to, text: change.text});\n if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop] = change[prop];\n delete change[prop];\n }\n } } }\n }\n }\n return copy\n }\n\n // The 'scroll' parameter given to many of these indicated whether\n // the new cursor position should be scrolled into view after\n // modifying the selection.\n\n // If shift is held or the extend flag is set, extends a range to\n // include a given position (and optionally a second position).\n // Otherwise, simply returns the range between the given positions.\n // Used for cursor motion and such.\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n if (posBefore != (cmp(other, anchor) < 0)) {\n anchor = head;\n head = other;\n } else if (posBefore != (cmp(head, other) < 0)) {\n head = other;\n }\n }\n return new Range(anchor, head)\n } else {\n return new Range(other || head, head)\n }\n }\n\n // Extend the primary selection range, discard the rest.\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); }\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n }\n\n // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n for (var i = 0; i < doc.sel.ranges.length; i++)\n { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n }\n\n // Updates a single range in the selection.\n function replaceOneSelection(doc, i, range, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i] = range;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n }\n\n // Reset the selection to a single range.\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n }\n\n // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function(ranges) {\n this.ranges = [];\n for (var i = 0; i < ranges.length; i++)\n { this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n clipPos(doc, ranges[i].head)); }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) }\n else { return sel }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done, last = lst(done);\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n }\n\n // Set a new selection.\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n { sel = filterSelectionChange(doc, sel, options); }\n\n var bias = options && options.bias ||\n (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption(\"readOnly\") != \"nocursor\")\n { ensureCursorVisible(doc.cm); }\n }\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) { return }\n\n doc.sel = sel;\n\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n signalLater(doc, \"cursorActivity\", doc);\n }\n\n // Verify that the selection does not partially select any atomic\n // marked ranges.\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n }\n\n // Return a selection that does not partially select any atomic\n // ranges.\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n var newHead = range.head == range.anchor ? newAnchor : skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) { out = sel.ranges.slice(0, i); }\n out[i] = new Range(newAnchor, newHead);\n }\n }\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel\n }\n\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i], m = sp.marker;\n\n // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n // is with selectLeft/Right\n var preventCursorLeft = (\"selectLeft\" in m) ? !m.selectLeft : m.inclusiveLeft;\n var preventCursorRight = (\"selectRight\" in m) ? !m.selectRight : m.inclusiveRight;\n\n if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n if (m.explicitlyCleared) {\n if (!line.markedSpans) { break }\n else {--i; continue}\n }\n }\n if (!m.atomic) { continue }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n if (dir < 0 ? preventCursorRight : preventCursorLeft)\n { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n { return skipAtomicInner(doc, near, pos, dir, mayClear) }\n }\n\n var far = m.find(dir < 0 ? -1 : 1);\n if (dir < 0 ? preventCursorLeft : preventCursorRight)\n { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n }\n } }\n return pos\n }\n\n // Ensure a given position is not inside an atomic range.\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0)\n }\n return found\n }\n\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\n else { return null }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n else { return null }\n } else {\n return new Pos(pos.line, pos.ch + dir)\n }\n }\n\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n }\n\n // UPDATING\n\n // Allow \"beforeChange\" event handlers to influence a change\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function () { return obj.canceled = true; }\n };\n if (update) { obj.update = function (from, to, text, origin) {\n if (from) { obj.from = clipPos(doc, from); }\n if (to) { obj.to = clipPos(doc, to); }\n if (text) { obj.text = text; }\n if (origin !== undefined) { obj.origin = origin; }\n }; }\n signal(doc, \"beforeChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n if (obj.canceled) {\n if (doc.cm) { doc.cm.curOp.updateInput = 2; }\n return null\n }\n return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n }\n\n // Apply a change to a document, and add it to the document's\n // history, and propagating it to all linked documents.\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n if (doc.cm.state.suppressEdits) { return }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n if (!change) { return }\n }\n\n // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n if (split) {\n for (var i = split.length - 1; i >= 0; --i)\n { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text, origin: change.origin}); }\n } else {\n makeChangeInner(doc, change);\n }\n }\n\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) { return }\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n }\n\n // Revert a change stored in a document's history.\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n if (suppress && !allowSelectionOnly) { return }\n\n var hist = doc.history, event, selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n var i = 0;\n for (; i < source.length; i++) {\n event = source[i];\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n { break }\n }\n if (i == source.length) { return }\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {clearRedo: false});\n return\n }\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return\n } else { break }\n }\n\n // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({changes: antiChanges, generation: hist.generation});\n hist.generation = event.generation || ++hist.maxGeneration;\n\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function ( i ) {\n var change = event.changes[i];\n change.origin = type;\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {}\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n var rebased = [];\n\n // Propagate to the linked documents\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n });\n };\n\n for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n var returned = loop( i$1 );\n\n if ( returned ) return returned.v;\n }\n }\n\n // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n function shiftDoc(doc, distance) {\n if (distance == 0) { return }\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n Pos(range.anchor.line + distance, range.anchor.ch),\n Pos(range.head.line + distance, range.head.ch)\n ); }), doc.sel.primIndex);\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n { regLineChange(doc.cm, l, \"gutter\"); }\n }\n }\n\n // More lower-level change function, handling only a single document\n // (not linked ones).\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp)\n { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\n\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return\n }\n if (change.from.line > doc.lastLine()) { return }\n\n // Clip the change to the size of this doc\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)], origin: change.origin};\n }\n var last = doc.lastLine();\n if (change.to.line > last) {\n change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]], origin: change.origin};\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n else { updateDoc(doc, change, spans); }\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n\n if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0)))\n { doc.cantEdit = false; }\n }\n\n // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n var recomputeMaxLength = false, checkWidthStart = from.line;\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function (line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true\n }\n });\n }\n\n if (doc.sel.contains(change.from, change.to) > -1)\n { signalCursorActivity(cm); }\n\n updateDoc(doc, change, spans, estimateHeight(cm));\n\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n var len = lineLength(line);\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n\n var lendiff = change.text.length - (to.line - from.line) - 1;\n // Remember that these lines changed, for updating the display\n if (change.full)\n { regChange(cm); }\n else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n { regLineChange(cm, from.line, \"text\"); }\n else\n { regChange(cm, from.line, to.line + 1, lendiff); }\n\n var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n if (changeHandler || changesHandler) {\n var obj = {\n from: from, to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n }\n cm.display.selForContextMenu = null;\n }\n\n function replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) { to = from; }\n if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); }\n if (typeof code == \"string\") { code = doc.splitLines(code); }\n makeChange(doc, {from: from, to: to, text: code, origin: origin});\n }\n\n // Rebasing/resetting history to deal with externally-sourced changes\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n }\n\n // Tries to rebase an array of history events given a change in the\n // document. If the change touches the same lines as the event, the\n // event, and everything 'behind' it, is discarded. If the change is\n // before the event, the event's positions are updated. Uses a\n // copy-on-write scheme for the positions, to avoid having to\n // reallocate them all on every rebase, but also avoid problems with\n // shared position objects being unsafely updated.\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i], ok = true;\n if (sub.ranges) {\n if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n continue\n }\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok = false;\n break\n }\n }\n if (!ok) {\n array.splice(0, i + 1);\n i = 0;\n }\n }\n }\n\n function rebaseHist(hist, change) {\n var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n }\n\n // Utility for applying a change to a line by handle or number,\n // returning the number and optionally registering the line as\n // changed.\n function changeLine(doc, handle, changeType, op) {\n var no = handle, line = handle;\n if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n else { no = lineNo(handle); }\n if (no == null) { return null }\n if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n return line\n }\n\n // The document is represented as a BTree consisting of leaves, with\n // chunk of lines in them, and branches, with up to ten leaves or\n // other branch nodes below them. The top node is always a branch\n // node, and is the document object itself (meaning it has\n // additional methods and properties).\n //\n // All nodes have parent links. The tree is used both to go from\n // line numbers to line objects, and to go from objects to numbers.\n // It also indexes by height, and is used to convert between height\n // and line object, and to find the total height of the document.\n //\n // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n function LeafChunk(lines) {\n this.lines = lines;\n this.parent = null;\n var height = 0;\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n height += lines[i].height;\n }\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function() { return this.lines.length },\n\n // Remove the n lines at offset 'at'.\n removeInner: function(at, n) {\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this.lines[i];\n this.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n this.lines.splice(at, n);\n },\n\n // Helper used to collapse a small branch into a single leaf.\n collapse: function(lines) {\n lines.push.apply(lines, this.lines);\n },\n\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function(at, lines, height) {\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n for (var i = 0; i < lines.length; ++i) { lines[i].parent = this; }\n },\n\n // Used to iterate over a part of the tree.\n iterN: function(at, n, op) {\n for (var e = at + n; at < e; ++at)\n { if (op(this.lines[at])) { return true } }\n }\n };\n\n function BranchChunk(children) {\n this.children = children;\n var size = 0, height = 0;\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize(); height += ch.height;\n ch.parent = this;\n }\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function() { return this.size },\n\n removeInner: function(at, n) {\n this.size -= n;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var rm = Math.min(n, sz - at), oldHeight = child.height;\n child.removeInner(at, rm);\n this.height -= oldHeight - child.height;\n if (sz == rm) { this.children.splice(i--, 1); child.parent = null; }\n if ((n -= rm) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n if (this.size - n < 25 &&\n (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n\n collapse: function(lines) {\n for (var i = 0; i < this.children.length; ++i) { this.children[i].collapse(lines); }\n },\n\n insertInner: function(at, lines, height) {\n this.size += lines.length;\n this.height += height;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at <= sz) {\n child.insertInner(at, lines, height);\n if (child.lines && child.lines.length > 50) {\n // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n var remaining = child.lines.length % 25 + 25;\n for (var pos = remaining; pos < child.lines.length;) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this.children.splice(++i, 0, leaf);\n leaf.parent = this;\n }\n child.lines = child.lines.slice(0, remaining);\n this.maybeSpill();\n }\n break\n }\n at -= sz;\n }\n },\n\n // When a node has grown, check whether it should be split.\n maybeSpill: function() {\n if (this.children.length <= 10) { return }\n var me = this;\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n if (!me.parent) { // Become the parent node\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n sibling.parent = me.parent;\n } while (me.children.length > 10)\n me.parent.maybeSpill();\n },\n\n iterN: function(at, n, op) {\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var used = Math.min(n, sz - at);\n if (child.iterN(at, used, op)) { return true }\n if ((n -= used) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n }\n };\n\n // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function(doc, node, options) {\n if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n { this[opt] = options[opt]; } } }\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n if (no == null || !ws) { return }\n for (var i = 0; i < ws.length; ++i) { if (ws[i] == this) { ws.splice(i--, 1); } }\n if (!ws.length) { line.widgets = null; }\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n if (cm) {\n runInOp(cm, function () {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n\n LineWidget.prototype.changed = function () {\n var this$1 = this;\n\n var oldH = this.height, cm = this.doc.cm, line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n if (!diff) { return }\n if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff); }\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n });\n }\n };\n eventMixin(LineWidget);\n\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n { addToScrollTop(cm, diff); }\n }\n\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n if (widget.insertAt == null) { widgets.push(widget); }\n else { widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget); }\n widget.line = line;\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n if (aboveVisible) { addToScrollTop(cm, widget.height); }\n cm.curOp.forceUpdate = true;\n }\n return true\n });\n if (cm) { signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle)); }\n return widget\n }\n\n // TEXTMARKERS\n\n // Created with markText and setBookmark methods. A TextMarker is a\n // handle that can be used to clear or find a marked position in the\n // document. Line objects hold arrays (markedSpans) containing\n // {from, to, marker} object pointing to such marker objects, and\n // indicating that such a marker is present on that line. Multiple\n // lines may point to the same marker when it spans across lines.\n // The spans will have null for their from/to properties when the\n // marker continues beyond the start/end of the line. Markers have\n // links back to the lines they currently touch.\n\n // Collapsed markers have unique ids, in order to be able to order\n // them, which is needed for uniquely determining an outer marker\n // when they overlap (they may nest, but not partially overlap).\n var nextMarkerId = 0;\n\n var TextMarker = function(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n };\n\n // Clear the marker.\n TextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n var cm = this.doc.cm, withOp = cm && !cm.curOp;\n if (withOp) { startOperation(cm); }\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n if (found) { signalLater(this, \"clear\", found.from, found.to); }\n }\n var min = null, max = null;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (cm && !this.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n else if (cm) {\n if (span.to != null) { max = lineNo(line); }\n if (span.from != null) { min = lineNo(line); }\n }\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm)\n { updateLineHeight(line, textHeight(cm.display)); }\n }\n if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this.lines[i$1]), len = lineLength(visual);\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n } }\n\n if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n this.lines.length = 0;\n this.explicitlyCleared = true;\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n if (cm) { reCheckSelection(cm.doc); }\n }\n if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n if (withOp) { endOperation(cm); }\n if (this.parent) { this.parent.clear(); }\n };\n\n // Find the position of the marker in the document. Returns a {from,\n // to} object by default. Side can be passed to get a specific side\n // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n // Pos objects returned contain a line object, rather than a line\n // number (used to prevent looking up the same line twice).\n TextMarker.prototype.find = function (side, lineObj) {\n if (side == null && this.type == \"bookmark\") { side = 1; }\n var from, to;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n if (side == -1) { return from }\n }\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n if (side == 1) { return to }\n }\n }\n return from && {from: from, to: to}\n };\n\n // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n\n var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n if (!pos || !cm) { return }\n runInOp(cm, function () {\n var line = pos.line, lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n cm.curOp.updateMaxLine = true;\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n if (dHeight)\n { updateLineHeight(line, line.height + dHeight); }\n }\n signalLater(cm, \"markerChanged\", cm, this$1);\n });\n };\n\n TextMarker.prototype.attachLine = function (line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n }\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp\n ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n eventMixin(TextMarker);\n\n // Create a marker, wire it up to the right lines, and\n function markText(doc, from, to, options, type) {\n // Shared markers (across linked documents) are handled separately\n // (markTextShared will call out to this again, once per\n // document).\n if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\n // Ensure we are in an operation.\n if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n var marker = new TextMarker(doc, type), diff = cmp(from, to);\n if (options) { copyObj(options, marker, false); }\n // Don't connect empty markers unless clearWhenEmpty is false\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n { return marker }\n if (marker.replacedWith) {\n // Showing up as a widget implies collapsed (widget replaces text)\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n }\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory)\n { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n var curLine = from.line, cm = doc.cm, updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n { updateMaxLine = true; }\n if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n addMarkedSpan(line, new MarkedSpan(marker,\n curLine == from.line ? from.ch : null,\n curLine == to.line ? to.ch : null), doc.cm && doc.cm.curOp);\n ++curLine;\n });\n // lineIsHidden depends on the presence of the spans, so needs a second pass\n if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n }); }\n\n if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n if (doc.history.done.length || doc.history.undone.length)\n { doc.clearHistory(); }\n }\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n if (cm) {\n // Sync editor state\n if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n if (marker.collapsed)\n { regChange(cm, from.line, to.line + 1); }\n else if (marker.className || marker.startStyle || marker.endStyle || marker.css ||\n marker.attributes || marker.title)\n { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n if (marker.atomic) { reCheckSelection(cm.doc); }\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n return marker\n }\n\n // SHARED TEXTMARKERS\n\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n var SharedTextMarker = function(markers, primary) {\n this.markers = markers;\n this.primary = primary;\n for (var i = 0; i < markers.length; ++i)\n { markers[i].parent = this; }\n };\n\n SharedTextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n this.explicitlyCleared = true;\n for (var i = 0; i < this.markers.length; ++i)\n { this.markers[i].clear(); }\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj)\n };\n eventMixin(SharedTextMarker);\n\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) { options.widgetNode = widget.cloneNode(true); }\n markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n for (var i = 0; i < doc.linked.length; ++i)\n { if (doc.linked[i].isParent) { return } }\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary)\n }\n\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i], pos = marker.find();\n var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n if (cmp(mFrom, mTo)) {\n var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function ( i ) {\n var marker = markers[i], linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n };\n\n for (var i = 0; i < markers.length; i++) loop( i );\n }\n\n var nextDocId = 0;\n var Doc = function(text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n if (firstLine == null) { firstLine = 0; }\n\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = (direction == \"rtl\") ? \"rtl\" : \"ltr\";\n this.extend = false;\n\n if (typeof text == \"string\") { text = this.splitLines(text); }\n updateDoc(this, {from: start, to: start, text: text});\n setSelection(this, simpleSelection(start), sel_dontScroll);\n };\n\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n // Iterate over the document. Supports two forms -- with only one\n // argument, it calls that for each line in the document. With\n // three, it iterates over the range given by the first two (with\n // the second being non-inclusive).\n iter: function(from, to, op) {\n if (op) { this.iterN(from - this.first, to - from, op); }\n else { this.iterN(this.first, this.first + this.size, from); }\n },\n\n // Non-public interface for adding and removing lines.\n insert: function(at, lines) {\n var height = 0;\n for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n this.insertInner(at - this.first, lines, height);\n },\n remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n // From here, the methods are part of the public interface. Most\n // are also available from CodeMirror (editor) instances.\n\n getValue: function(lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n setValue: docMethodOp(function(code) {\n var top = Pos(this.first, 0), last = this.first + this.size - 1;\n makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n if (this.cm) { scrollToCoords(this.cm, 0, 0); }\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function(code, from, to, origin) {\n from = clipPos(this, from);\n to = to ? clipPos(this, to) : from;\n replaceRange(this, code, from, to, origin);\n },\n getRange: function(from, to, lineSep) {\n var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n if (lineSep === false) { return lines }\n if (lineSep === '') { return lines.join('') }\n return lines.join(lineSep || this.lineSeparator())\n },\n\n getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n getLineNumber: function(line) {return lineNo(line)},\n\n getLineHandleVisualStart: function(line) {\n if (typeof line == \"number\") { line = getLine(this, line); }\n return visualLine(line)\n },\n\n lineCount: function() {return this.size},\n firstLine: function() {return this.first},\n lastLine: function() {return this.first + this.size - 1},\n\n clipPos: function(pos) {return clipPos(this, pos)},\n\n getCursor: function(start) {\n var range = this.sel.primary(), pos;\n if (start == null || start == \"head\") { pos = range.head; }\n else if (start == \"anchor\") { pos = range.anchor; }\n else if (start == \"end\" || start == \"to\" || start === false) { pos = range.to(); }\n else { pos = range.from(); }\n return pos\n },\n listSelections: function() { return this.sel.ranges },\n somethingSelected: function() {return this.sel.somethingSelected()},\n\n setCursor: docMethodOp(function(line, ch, options) {\n setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function(anchor, head, options) {\n setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n }),\n extendSelection: docMethodOp(function(head, other, options) {\n extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function(heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function(f, options) {\n var heads = map(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function(ranges, primary, options) {\n if (!ranges.length) { return }\n var out = [];\n for (var i = 0; i < ranges.length; i++)\n { out[i] = new Range(clipPos(this, ranges[i].anchor),\n clipPos(this, ranges[i].head || ranges[i].anchor)); }\n if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function(anchor, head, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n\n getSelection: function(lineSep) {\n var ranges = this.sel.ranges, lines;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n if (lineSep === false) { return lines }\n else { return lines.join(lineSep || this.lineSeparator()) }\n },\n getSelections: function(lineSep) {\n var parts = [], ranges = this.sel.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n if (lineSep !== false) { sel = sel.join(lineSep || this.lineSeparator()); }\n parts[i] = sel;\n }\n return parts\n },\n replaceSelection: function(code, collapse, origin) {\n var dup = [];\n for (var i = 0; i < this.sel.ranges.length; i++)\n { dup[i] = code; }\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function(code, collapse, origin) {\n var changes = [], sel = this.sel;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin};\n }\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n { makeChange(this, changes[i$1]); }\n if (newSel) { setSelectionReplaceHistory(this, newSel); }\n else if (this.cm) { ensureCursorVisible(this.cm); }\n }),\n undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n setExtending: function(val) {this.extend = val;},\n getExtending: function() {return this.extend},\n\n historySize: function() {\n var hist = this.history, done = 0, undone = 0;\n for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n return {undo: done, redo: undone}\n },\n clearHistory: function() {\n var this$1 = this;\n\n this.history = new History(this.history);\n linkedDocs(this, function (doc) { return doc.history = this$1.history; }, true);\n },\n\n markClean: function() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function(forceSplit) {\n if (forceSplit)\n { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n return this.history.generation\n },\n isClean: function (gen) {\n return this.history.generation == (gen || this.cleanGeneration)\n },\n\n getHistory: function() {\n return {done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)}\n },\n setHistory: function(histData) {\n var hist = this.history = new History(this.history);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n\n setGutterMarker: docMethodOp(function(line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function (line) {\n var markers = line.gutterMarkers || (line.gutterMarkers = {});\n markers[gutterID] = value;\n if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n return true\n })\n }),\n\n clearGutter: docMethodOp(function(gutterID) {\n var this$1 = this;\n\n this.iter(function (line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n return true\n });\n }\n });\n }),\n\n lineInfo: function(line) {\n var n;\n if (typeof line == \"number\") {\n if (!isLine(this, line)) { return null }\n n = line;\n line = getLine(this, line);\n if (!line) { return null }\n } else {\n n = lineNo(line);\n if (n == null) { return null }\n }\n return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n widgets: line.widgets}\n },\n\n addLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n if (!line[prop]) { line[prop] = cls; }\n else if (classTest(cls).test(line[prop])) { return false }\n else { line[prop] += \" \" + cls; }\n return true\n })\n }),\n removeLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n if (!cur) { return false }\n else if (cls == null) { line[prop] = null; }\n else {\n var found = cur.match(classTest(cls));\n if (!found) { return false }\n var end = found.index + found[0].length;\n line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n return true\n })\n }),\n\n addLineWidget: docMethodOp(function(handle, node, options) {\n return addLineWidget(this, handle, node, options)\n }),\n removeLineWidget: function(widget) { widget.clear(); },\n\n markText: function(from, to, options) {\n return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n },\n setBookmark: function(pos, options) {\n var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false, shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents};\n pos = clipPos(this, pos);\n return markText(this, pos, pos, realOpts, \"bookmark\")\n },\n findMarksAt: function(pos) {\n pos = clipPos(this, pos);\n var markers = [], spans = getLine(this, pos.line).markedSpans;\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if ((span.from == null || span.from <= pos.ch) &&\n (span.to == null || span.to >= pos.ch))\n { markers.push(span.marker.parent || span.marker); }\n } }\n return markers\n },\n findMarks: function(from, to, filter) {\n from = clipPos(this, from); to = clipPos(this, to);\n var found = [], lineNo = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n if (spans) { for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n if (!(span.to != null && lineNo == from.line && from.ch >= span.to ||\n span.from == null && lineNo != from.line ||\n span.from != null && lineNo == to.line && span.from >= to.ch) &&\n (!filter || filter(span.marker)))\n { found.push(span.marker.parent || span.marker); }\n } }\n ++lineNo;\n });\n return found\n },\n getAllMarks: function() {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i)\n { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n });\n return markers\n },\n\n posFromIndex: function(off) {\n var ch, lineNo = this.first, sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n if (sz > off) { ch = off; return true }\n off -= sz;\n ++lineNo;\n });\n return clipPos(this, Pos(lineNo, ch))\n },\n indexFromPos: function (coords) {\n coords = clipPos(this, coords);\n var index = coords.ch;\n if (coords.line < this.first || coords.ch < 0) { return 0 }\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index\n },\n\n copy: function(copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size),\n this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n return doc\n },\n\n linkedDoc: function(options) {\n if (!options) { options = {}; }\n var from = this.first, to = this.first + this.size;\n if (options.from != null && options.from > from) { from = options.from; }\n if (options.to != null && options.to < to) { to = options.to; }\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n if (options.sharedHist) { copy.history = this.history\n ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy\n },\n unlinkDoc: function(other) {\n if (other instanceof CodeMirror) { other = other.doc; }\n if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n var link = this.linked[i];\n if (link.doc != other) { continue }\n this.linked.splice(i, 1);\n other.unlinkDoc(this);\n detachSharedMarkers(findSharedMarkers(this));\n break\n } }\n // If the histories were shared, split them again\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n getMode: function() {return this.mode},\n getEditor: function() {return this.cm},\n\n splitLines: function(str) {\n if (this.lineSep) { return str.split(this.lineSep) }\n return splitLinesAuto(str)\n },\n lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") { dir = \"ltr\"; }\n if (dir == this.direction) { return }\n this.direction = dir;\n this.iter(function (line) { return line.order = null; });\n if (this.cm) { directionChanged(this.cm); }\n })\n });\n\n // Public alias.\n Doc.prototype.eachLine = Doc.prototype.iter;\n\n // Kludge to work around strange IE behavior where it'll sometimes\n // re-fire a series of drag-related events right after the drop (#1551)\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n { return }\n e_preventDefault(e);\n if (ie) { lastDrop = +new Date; }\n var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n if (!pos || cm.isReadOnly()) { return }\n // Might be a file drop, in which case we simply extract the text\n // and insert it.\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length, text = Array(n), read = 0;\n var markAsReadAndPasteIfAllFilesAreRead = function () {\n if (++read == n) {\n operation(cm, function () {\n pos = clipPos(cm.doc, pos);\n var change = {from: pos, to: pos,\n text: cm.doc.splitLines(\n text.filter(function (t) { return t != null; }).join(cm.doc.lineSeparator())),\n origin: \"paste\"};\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));\n })();\n }\n };\n var readTextFromFile = function (file, i) {\n if (cm.options.allowDropFileTypes &&\n indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n var reader = new FileReader;\n reader.onerror = function () { return markAsReadAndPasteIfAllFilesAreRead(); };\n reader.onload = function () {\n var content = reader.result;\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n text[i] = content;\n markAsReadAndPasteIfAllFilesAreRead();\n };\n reader.readAsText(file);\n };\n for (var i = 0; i < files.length; i++) { readTextFromFile(files[i], i); }\n } else { // Normal drop\n // Don't do a replace if the drop happened inside of the selected text.\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e);\n // Ensure the editor is re-focused\n setTimeout(function () { return cm.display.input.focus(); }, 20);\n return\n }\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n if (text$1) {\n var selected;\n if (cm.state.draggingText && !cm.state.draggingText.copy)\n { selected = cm.listSelections(); }\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\n { replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\"); } }\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n }\n catch(e$1){}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\";\n\n // Use dummy image instead of default browsers image.\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img);\n // Force a relayout, or Opera won't use our image for some obscure reason\n img._top = img.offsetTop;\n }\n e.dataTransfer.setDragImage(img, 0, 0);\n if (presto) { img.parentNode.removeChild(img); }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n if (!pos) { return }\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n }\n\n // These must be handled carefully, because naively registering a\n // handler for each editor will cause the editors to never be\n // garbage collected.\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) { return }\n var byClass = document.getElementsByClassName(\"CodeMirror\"), editors = [];\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n if (cm) { editors.push(cm); }\n }\n if (editors.length) { editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) { f(editors[i]); }\n }); }\n }\n\n var globalsRegistered = false;\n function ensureGlobalHandlers() {\n if (globalsRegistered) { return }\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n function registerGlobalHandlers() {\n // When the window resizes, we need to refresh active editors.\n var resizeTimer;\n on(window, \"resize\", function () {\n if (resizeTimer == null) { resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100); }\n });\n // When the window loses focus, we want to show the editor as blurred\n on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n }\n // Called when the window resizes\n function onResize(cm) {\n var d = cm.display;\n // Might be a text scaling operation, clear size caches.\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n 19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n 36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n 46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n 106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 145: \"ScrollLock\",\n 173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n 221: \"]\", 222: \"'\", 224: \"Mod\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n 63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n };\n\n // Number keys\n for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n // Alphabetic keys\n for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n // Function keys\n for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\n var keyMap = {};\n\n keyMap.basic = {\n \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n };\n // Note that the save and find-related commands aren't defined by\n // default. User code or addons can define them. Unknown commands\n // are simply ignored.\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n };\n // Very basic readline/emacs-style bindings, which are standard on Mac.\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\", \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\",\n \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\",\n \"Ctrl-T\": \"transposeChars\", \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n // KEYMAP DISPATCH\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n }\n if (alt) { name = \"Alt-\" + name; }\n if (ctrl) { name = \"Ctrl-\" + name; }\n if (cmd) { name = \"Cmd-\" + name; }\n if (shift) { name = \"Shift-\" + name; }\n return name\n }\n\n // This is a kludge to keep keymaps mostly working as raw objects\n // (backwards compatibility) while at the same time support features\n // like normalization and multi-stroke key bindings. It compiles a\n // new normalized keymap, and then updates the old object to reflect\n // this.\n function normalizeKeyMap(keymap) {\n var copy = {};\n for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n if (value == \"...\") { delete keymap[keyname]; continue }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n for (var i = 0; i < keys.length; i++) {\n var val = (void 0), name = (void 0);\n if (i == keys.length - 1) {\n name = keys.join(\" \");\n val = value;\n } else {\n name = keys.slice(0, i + 1).join(\" \");\n val = \"...\";\n }\n var prev = copy[name];\n if (!prev) { copy[name] = val; }\n else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n }\n delete keymap[keyname];\n } }\n for (var prop in copy) { keymap[prop] = copy[prop]; }\n return keymap\n }\n\n function lookupKey(key, map, handle, context) {\n map = getKeyMap(map);\n var found = map.call ? map.call(key, context) : map[key];\n if (found === false) { return \"nothing\" }\n if (found === \"...\") { return \"multi\" }\n if (found != null && handle(found)) { return \"handled\" }\n\n if (map.fallthrough) {\n if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\")\n { return lookupKey(key, map.fallthrough, handle, context) }\n for (var i = 0; i < map.fallthrough.length; i++) {\n var result = lookupKey(key, map.fallthrough[i], handle, context);\n if (result) { return result }\n }\n }\n }\n\n // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\"\n }\n\n function addModifierNames(name, event, noShift) {\n var base = name;\n if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Mod\") { name = \"Cmd-\" + name; }\n if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n return name\n }\n\n // Look up the name of a key as indicated by an event object.\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n var name = keyNames[event.keyCode];\n if (name == null || event.altGraphKey) { return false }\n // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n if (event.keyCode == 3 && event.code) { name = event.code; }\n return addModifierNames(name, event, noShift)\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val\n }\n\n // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges, kill = [];\n // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break\n }\n }\n kill.push(toKill);\n }\n // Next, remove those actual ranges.\n runInOp(cm, function () {\n for (var i = kill.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\"); }\n ensureCursorVisible(cm);\n });\n }\n\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target\n }\n\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\")\n }\n\n function endOfLine(visually, cm, lineObj, lineNo, dir) {\n if (visually) {\n if (cm.doc.direction == \"rtl\") { dir = -dir; }\n var order = getOrder(lineObj, cm.doc.direction);\n if (order) {\n var part = dir < 0 ? lst(order) : order[0];\n var moveInStorageOrder = (dir < 0) == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch;\n // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n // it could be that the last bidi part is not on the last visual line,\n // since visual lines contain content order-consecutive chunks.\n // Thus, in rtl, we are looking for the first (content-order) character\n // in the rtl chunk that is on the last line (that is, the same line\n // as the last (content-order) character).\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1); }\n } else { ch = dir < 0 ? part.to : part.from; }\n return new Pos(lineNo, ch, sticky)\n }\n }\n return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\")\n }\n\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n if (!bidi) { return moveLogically(line, start, dir) }\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n // nothing interesting happens.\n return moveLogically(line, start, dir)\n }\n\n var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n var prep;\n var getWrappedLineExtent = function (ch) {\n if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch)\n };\n var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = (part.level == 1) == (dir < 0);\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky)\n }\n }\n\n // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n ? new Pos(start.line, mv(ch, 1), \"before\")\n : new Pos(start.line, ch, \"after\"); };\n\n for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n var part = bidi[partPos];\n var moveInStorageOrder = (dir > 0) == (part.level != 1);\n var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n }\n };\n\n // Case 3a: Look for other bidi parts on the same visual line\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n if (res) { return res }\n\n // Case 3b: Look for other bidi parts on the next visual line\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n if (res) { return res }\n }\n\n // Case 4: Nowhere to move\n return null\n }\n\n // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n var commands = {\n selectAll: selectAll,\n singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n if (range.head.ch == len && range.head.line < cm.lastLine())\n { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n else\n { return {from: range.head, to: Pos(range.head.line, len)} }\n } else {\n return {from: range.from(), to: range.to()}\n }\n }); },\n deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0),\n to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n }); }); },\n delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0), to: range.from()\n }); }); },\n delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n return {from: leftPos, to: range.from()}\n }); },\n delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n return {from: range.from(), to: rightPos }\n }); },\n undo: function (cm) { return cm.undo(); },\n redo: function (cm) { return cm.redo(); },\n undoSelection: function (cm) { return cm.undoSelection(); },\n redoSelection: function (cm) { return cm.redoSelection(); },\n goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n {origin: \"+move\", bias: -1}\n ); },\n goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n }, sel_move); },\n goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: 0, top: top}, \"div\")\n }, sel_move); },\n goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n return pos\n }, sel_move); },\n goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n delCharBefore: function (cm) { return cm.deleteH(-1, \"codepoint\"); },\n delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n insertSoftTab: function (cm) {\n var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n cm.replaceSelections(spaces);\n },\n defaultTab: function (cm) {\n if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n else { cm.execCommand(\"insertTab\"); }\n },\n // Swap the two chars left and right of each selection's head.\n // Move cursor behind the two swapped characters afterwards.\n //\n // Doesn't consider line feeds a character.\n // Doesn't scan more than one line above to find a character.\n // Doesn't do anything on an empty line.\n // Doesn't do anything with non-empty selections.\n transposeChars: function (cm) { return runInOp(cm, function () {\n var ranges = cm.listSelections(), newSel = [];\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) { continue }\n var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n if (line) {\n if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n prev.charAt(prev.length - 1),\n Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n newSel.push(new Range(cur, cur));\n }\n cm.setSelections(newSel);\n }); },\n newlineAndIndent: function (cm) { return runInOp(cm, function () {\n var sels = cm.listSelections();\n for (var i = sels.length - 1; i >= 0; i--)\n { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n sels = cm.listSelections();\n for (var i$1 = 0; i$1 < sels.length; i$1++)\n { cm.indentLine(sels[i$1].from().line, null, true); }\n ensureCursorVisible(cm);\n }); },\n openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n };\n\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, visual, lineN, 1)\n }\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, line, lineN, -1)\n }\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\n }\n return start\n }\n\n // Run a handler that was bound to a key.\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n if (!bound) { return false }\n }\n // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift, done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n if (dropShift) { cm.display.shift = false; }\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n return done\n }\n\n function lookupKeyForEditor(cm, name, handle) {\n for (var i = 0; i < cm.state.keyMaps.length; i++) {\n var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n if (result) { return result }\n }\n return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n || lookupKey(name, cm.options.keyMap, handle, cm)\n }\n\n // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n var stopSeq = new Delayed;\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n if (seq) {\n if (isModifierKey(name)) { return \"handled\" }\n if (/\\'$/.test(name))\n { cm.state.keySeq = null; }\n else\n { stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n }); }\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) { return true }\n }\n return dispatchKeyInner(cm, name, e, handle)\n }\n\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n\n if (result == \"multi\")\n { cm.state.keySeq = name; }\n if (result == \"handled\")\n { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result\n }\n\n // Handle a key from the keydown event.\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n if (!name) { return false }\n\n if (e.shiftKey && !cm.state.keySeq) {\n // First try to resolve full name (including 'Shift-'). Failing\n // that, see if there is a cursor-motion command (starting with\n // 'go') bound to the keyname without 'Shift-'.\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\n || dispatchKey(cm, name, e, function (b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n { return doHandleBinding(cm, b) }\n })\n } else {\n return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n }\n }\n\n // Handle a key from the keypress event\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n }\n\n var lastStoppedKey = null;\n function onKeyDown(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n cm.curOp.focus = activeElt(root(cm));\n if (signalDOMEvent(cm, e)) { return }\n // IE does strange things with escape.\n if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n if (presto) {\n lastStoppedKey = handled ? code : null;\n // Opera has no cut event... we try to at least catch the key combo\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n { cm.replaceSelection(\"\", null, \"cut\"); }\n }\n if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand)\n { document.execCommand(\"cut\"); }\n\n // Turn mouse into crosshair when Alt is held on Mac.\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n { showCrossHair(cm); }\n }\n\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) { this.doc.sel.shift = false; }\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n var keyCode = e.keyCode, charCode = e.charCode;\n if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n // Some browsers fire keypress events for backspace\n if (ch == \"\\x08\") { return }\n if (handleCharBinding(cm, e, ch)) { return }\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function(time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n\n PastClick.prototype.compare = function (time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time &&\n cmp(pos, this.pos) == 0 && button == this.button\n };\n\n var lastClick, lastDoubleClick;\n function clickRepeat(pos, button) {\n var now = +new Date;\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\"\n } else if (lastClick && lastClick.compare(now, pos, button)) {\n lastDoubleClick = new PastClick(now, pos, button);\n lastClick = null;\n return \"double\"\n } else {\n lastClick = new PastClick(now, pos, button);\n lastDoubleClick = null;\n return \"single\"\n }\n }\n\n // A mouse down can be a single click, double click, triple click,\n // start of selection drag, start of text drag, new cursor\n // (ctrl-click), rectangle drag (alt-drag), or xwin\n // middle-click-paste. Or it might be a click on something we should\n // not interfere with, such as a scrollbar or widget.\n function onMouseDown(e) {\n var cm = this, display = cm.display;\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n\n if (eventInWidget(display, e)) {\n if (!webkit) {\n // Briefly turn off draggability, to allow widgets to do\n // normal dragging things.\n display.scroller.draggable = false;\n setTimeout(function () { return display.scroller.draggable = true; }, 100);\n }\n return\n }\n if (clickInGutter(cm, e)) { return }\n var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : \"single\";\n win(cm).focus();\n\n // #3261: make sure, that we're not starting a second selection\n if (button == 1 && cm.state.selectingText)\n { cm.state.selectingText(e); }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return }\n\n if (button == 1) {\n if (pos) { leftButtonDown(cm, pos, repeat, e); }\n else if (e_target(e) == display.scroller) { e_preventDefault(e); }\n } else if (button == 2) {\n if (pos) { extendSelection(cm.doc, pos); }\n setTimeout(function () { return display.input.focus(); }, 20);\n } else if (button == 3) {\n if (captureRightClick) { cm.display.input.onContextMenu(e); }\n else { delayBlurEvent(cm); }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n if (repeat == \"double\") { name = \"Double\" + name; }\n else if (repeat == \"triple\") { name = \"Triple\" + name; }\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") { bound = commands[bound]; }\n if (!bound) { return false }\n var done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n return done\n })\n }\n\n function configureMouse(cm, repeat, event) {\n var option = cm.getOption(\"configureMouse\");\n var value = option ? option(cm, repeat, event) : {};\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; }\n if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; }\n if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); }\n return value\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n else { cm.curOp.focus = activeElt(root(cm)); }\n\n var behavior = configureMouse(cm, repeat, event);\n\n var sel = cm.doc.sel, contained;\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n repeat == \"single\" && (contained = sel.contains(pos)) > -1 &&\n (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) &&\n (cmp(contained.to(), pos) > 0 || pos.xRel < 0))\n { leftButtonStartDrag(cm, event, pos, behavior); }\n else\n { leftButtonSelect(cm, event, pos, behavior); }\n }\n\n // Start a text drag. When it ends, see if any dragging actually\n // happen, and treat as a click if it didn't.\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display, moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) { display.scroller.draggable = false; }\n cm.state.draggingText = false;\n if (cm.state.delayingBlurEvent) {\n if (cm.hasFocus()) { cm.state.delayingBlurEvent = false; }\n else { delayBlurEvent(cm); }\n }\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n if (!moved) {\n e_preventDefault(e);\n if (!behavior.addNew)\n { extendSelection(cm.doc, pos, null, null, behavior.extend); }\n // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n if ((webkit && !safari) || ie && ie_version == 9)\n { setTimeout(function () {display.wrapper.ownerDocument.body.focus({preventScroll: true}); display.input.focus();}, 20); }\n else\n { display.input.focus(); }\n }\n });\n var mouseMove = function(e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n var dragStart = function () { return moved = true; };\n // Let the drag handler handle this.\n if (webkit) { display.scroller.draggable = true; }\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag;\n on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n on(display.scroller, \"dragstart\", dragStart);\n on(display.scroller, \"drop\", dragEnd);\n\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { return display.input.focus(); }, 20);\n // IE's approach to draggable\n if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") { return new Range(pos, pos) }\n if (unit == \"word\") { return cm.findWordAt(pos) }\n if (unit == \"line\") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) }\n var result = unit(cm, pos);\n return new Range(result.from, result.to)\n }\n\n // Normal selection, as opposed to text dragging.\n function leftButtonSelect(cm, event, start, behavior) {\n if (ie) { delayBlurEvent(cm); }\n var display = cm.display, doc = cm.doc;\n e_preventDefault(event);\n\n var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n if (ourIndex > -1)\n { ourRange = ranges[ourIndex]; }\n else\n { ourRange = new Range(start, start); }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) { ourRange = new Range(start, start); }\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range = rangeForUnit(cm, start, behavior.unit);\n if (behavior.extend)\n { ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend); }\n else\n { ourRange = range; }\n }\n\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),\n {scroll: false, origin: \"*mouse\"});\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n {scroll: false, origin: \"*mouse\"});\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) { return }\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [], tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n line <= end; line++) {\n var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n if (left == right)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\n else if (text.length > leftPos)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\n }\n if (!ranges.length) { ranges.push(new Range(start, start)); }\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n {origin: \"*mouse\", scroll: false});\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor, head;\n if (cmp(range.anchor, anchor) > 0) {\n head = range.head;\n anchor = minPos(oldRange.from(), range.anchor);\n } else {\n head = range.anchor;\n anchor = maxPos(oldRange.to(), range.head);\n }\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n\n var editorSize = display.wrapper.getBoundingClientRect();\n // Used to ensure timeout re-tries don't fire when another extend\n // happened in the meantime (clearTimeout isn't reliable -- at\n // least on Chrome, the timeouts still happen even when cleared,\n // if the clear happens after their scheduled firing time).\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n if (!cur) { return }\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt(root(cm));\n extendTo(cur);\n var visible = visibleLines(display, doc);\n if (cur.line >= visible.to || cur.line < visible.from)\n { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n if (outside) { setTimeout(operation(cm, function () {\n if (counter != curCount) { return }\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50); }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity;\n // If e is null or undefined we interpret this as someone trying\n // to explicitly cancel the selection rather than the user\n // letting go of the mouse button.\n if (e) {\n e_preventDefault(e);\n display.input.focus();\n }\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) { done(e); }\n else { extend(e); }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n }\n\n // Used when mouse-selecting to adjust the anchor to the proper side\n // of a bidi jump depending on the visual position of the head.\n function bidiSimplify(cm, range) {\n var anchor = range.anchor;\n var head = range.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range }\n var order = getOrder(anchorLine);\n if (!order) { return range }\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index];\n if (part.from != anchor.ch && part.to != anchor.ch) { return range }\n var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1);\n if (boundary == 0 || boundary == order.length) { return range }\n\n // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n var leftSide;\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n if (headIndex == boundary - 1 || headIndex == boundary)\n { leftSide = dir < 0; }\n else\n { leftSide = dir > 0; }\n }\n\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to, sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head)\n }\n\n\n // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try { mX = e.clientX; mY = e.clientY; }\n catch(e$1) { return false }\n }\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n if (prevent) { e_preventDefault(e); }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n mY -= lineBox.top - display.viewOffset;\n\n for (var i = 0; i < cm.display.gutterSpecs.length; ++i) {\n var g = display.gutters.childNodes[i];\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = lineAtHeight(cm.doc, mY);\n var gutter = cm.display.gutterSpecs[i];\n signal(cm, type, cm, line, gutter.className, e);\n return e_defaultPrevented(e)\n }\n }\n }\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true)\n }\n\n // CONTEXT MENU HANDLING\n\n // To make the context menu work, we need to briefly unhide the\n // textarea (making it as unobtrusive as possible) to let the\n // right-click take effect on it.\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n if (!captureRightClick) { cm.display.input.onContextMenu(e); }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\n return gutterEvent(cm, e, \"gutterContextMenu\", false)\n }\n\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {toString: function(){return \"CodeMirror.Init\"}};\n\n var defaults = {};\n var optionHandlers = {};\n\n function defineOptions(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n function option(name, deflt, handle, notOnInit) {\n CodeMirror.defaults[name] = deflt;\n if (handle) { optionHandlers[name] =\n notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n }\n\n CodeMirror.defineOption = option;\n\n // Passed to option handlers when there is no old value.\n CodeMirror.Init = Init;\n\n // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n\n option(\"indentUnit\", 2, loadMode, true);\n option(\"indentWithTabs\", false);\n option(\"smartIndent\", true);\n option(\"tabSize\", 4, function (cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n if (!val) { return }\n var newBreaks = [], lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n if (found == -1) { break }\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n lineNo++;\n });\n for (var i = newBreaks.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\u202d\\u202e\\u2066\\u2067\\u2069\\ufeff\\ufff9-\\ufffc]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n if (old != Init) { cm.refresh(); }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\n option(\"electricChars\", true);\n option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\") // FIXME\n }, true);\n option(\"spellcheck\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\n option(\"autocorrect\", false, function (cm, val) { return cm.getInputField().autocorrect = val; }, true);\n option(\"autocapitalize\", false, function (cm, val) { return cm.getInputField().autocapitalize = val; }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n updateGutters(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n if (prev && prev.detach) { prev.detach(cm, next); }\n if (next.attach) { next.attach(cm, prev || null); }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm, val) {\n cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n updateGutters(cm);\n }, true);\n option(\"fixedGutter\", true, function (cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option(\"coverGutterNextToScrollbar\", false, function (cm) { return updateScrollbars(cm); }, true);\n option(\"scrollbarStyle\", \"native\", function (cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option(\"lineNumbers\", false, function (cm, val) {\n cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n updateGutters(cm);\n }, true);\n option(\"firstLineNumber\", 1, updateGutters, true);\n option(\"lineNumberFormatter\", function (integer) { return integer; }, updateGutters, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n cm.display.input.readOnlyChanged(val);\n });\n\n option(\"screenReaderLabel\", null, function (cm, val) {\n val = (val === '') ? null : val;\n cm.display.input.screenReaderLabelChanged(val);\n });\n\n option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n\n option(\"cursorBlinkRate\", 530);\n option(\"cursorScrollMargin\", 0);\n option(\"cursorHeight\", 1, updateSelection, true);\n option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option(\"workTime\", 100);\n option(\"workDelay\", 100);\n option(\"flattenSpans\", true, resetModeState, true);\n option(\"addModeClass\", false, resetModeState, true);\n option(\"pollInterval\", 100);\n option(\"undoDepth\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) { cm.display.input.resetPosition(); }\n });\n\n option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n option(\"phrases\", null);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () { return updateScrollbars(cm); }, 100);\n }\n\n // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) }\n\n this.options = options = options ? copyObj(options) : {};\n // Determine effective options based on given values and defaults.\n copyObj(defaults, options, false);\n\n var doc = options.value;\n if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n else if (options.mode) { doc.modeOption = options.mode; }\n this.doc = doc;\n\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input, options);\n display.wrapper.CodeMirror = this;\n themeChanged(this);\n if (options.lineWrapping)\n { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n initScrollbars(this);\n\n this.state = {\n keyMaps: [], // stores maps added by addKeyMap\n overlays: [], // highlighting overlays, as added by addOverlay\n modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(), // stores highlight worker timeout\n keySeq: null, // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) { display.input.focus(); }\n\n // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n\n startOperation(this);\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if ((options.autofocus && !mobile) || this.hasFocus())\n { setTimeout(function () {\n if (this$1.hasFocus() && !this$1.state.focused) { onFocus(this$1); }\n }, 20); }\n else\n { onBlur(this); }\n\n for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n { optionHandlers[opt](this, options[opt], Init); } }\n maybeUpdateLineNumberWidth(this);\n if (options.finishInit) { options.finishInit(this); }\n for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this); }\n endOperation(this);\n // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n if (webkit && options.lineWrapping &&\n getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n { display.lineDiv.style.textRendering = \"auto\"; }\n }\n\n // The default configuration options.\n CodeMirror.defaults = defaults;\n // Functions to run when options are changed.\n CodeMirror.optionHandlers = optionHandlers;\n\n // Attach the necessary event handlers when initializing the editor\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n // Older IE's will not fire a second mousedown for a double click\n if (ie && ie_version < 11)\n { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) { return }\n var pos = posFromMouse(cm, e);\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n })); }\n else\n { on(d.scroller, \"dblclick\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\n // Some browsers fire contextmenu *after* opening the menu, at\n // which point we can't mess with it anymore. Context menu is\n // handled in onMouseDown for these browsers.\n on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); });\n on(d.input.getField(), \"contextmenu\", function (e) {\n if (!d.scroller.contains(e.target)) { onContextMenu(cm, e); }\n });\n\n // Used to suppress mouse event handling when a touch happens\n var touchFinished, prevTouch = {end: 0};\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date;\n }\n }\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) { return false }\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1\n }\n function farAway(touch, other) {\n if (other.left == null) { return true }\n var dx = other.left - touch.left, dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20\n }\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date;\n d.activeTouch = {start: now, moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null};\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function () {\n if (d.activeTouch) { d.activeTouch.moved = true; }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n if (touch && !eventInWidget(d, e) && touch.left != null &&\n !touch.moved && new Date - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n { range = new Range(pos, pos); }\n else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n { range = cm.findWordAt(pos); }\n else // Triple tap\n { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch);\n\n // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n });\n\n // Listen to wheel events in order to try and update the viewport on time.\n on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n // Prevent wrapper from ever scrolling\n on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n d.dragFunctions = {\n enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n start: function (e) { return onDragStart(cm, e); },\n drop: operation(cm, onDrop),\n leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n };\n\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n }\n\n var initHooks = [];\n CodeMirror.defineInitHook = function (f) { return initHooks.push(f); };\n\n // Indent the given line. The how parameter can be \"smart\",\n // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n // (typically set to true for forced single-line indents), empty\n // lines are not indented, and places where the mode returns Pass\n // are left alone.\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc, state;\n if (how == null) { how = \"add\"; }\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) { how = \"prev\"; }\n else { state = getContextBefore(cm, n).state; }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n if (line.stateAfter) { line.stateAfter = null; }\n var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) { return }\n how = \"prev\";\n }\n }\n if (how == \"prev\") {\n if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n else { indentation = 0; }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n indentation = Math.max(0, indentation);\n\n var indentString = \"\", pos = 0;\n if (cm.options.indentWithTabs)\n { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n if (indentString != curSpaceString) {\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n line.stateAfter = null;\n return true\n } else {\n // Ensure that, if the cursor was in the whitespace at the start\n // of the line, it is moved to the end of that space.\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n var range = doc.sel.ranges[i$1];\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n break\n }\n }\n }\n }\n\n // This will be set to a {lineWise: bool, text: [string]} object, so\n // that, when pasting, we know what kind of selections the copied\n // text was made out of.\n var lastCopied = null;\n\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n if (!sel) { sel = doc.sel; }\n\n var recent = +new Date - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted), multiPaste = null;\n // When pasting N lines into N selections, insert one line per selection\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n for (var i = 0; i < lastCopied.text.length; i++)\n { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) { return [l]; });\n }\n }\n\n var updateInput = cm.curOp.updateInput;\n // Normal behavior is to insert the new text into every selection\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range = sel.ranges[i$1];\n var from = range.from(), to = range.to();\n if (range.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n { from = Pos(from.line, from.ch - deleted); }\n else if (cm.state.overwrite && !paste) // Handle overwrite\n { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\n else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\"))\n { from = to = Pos(from.line, 0); }\n }\n var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")};\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n if (inserted && !paste)\n { triggerElectric(cm, inserted); }\n\n ensureCursorVisible(cm);\n if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput; }\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n if (pasted) {\n e.preventDefault();\n if (!cm.isReadOnly() && !cm.options.disableInput && cm.hasFocus())\n { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\n return true\n }\n }\n\n function triggerElectric(cm, inserted) {\n // When an 'electric' character is inserted, immediately trigger a reindent\n if (!cm.options.electricChars || !cm.options.smartIndent) { return }\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range = sel.ranges[i];\n if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) { continue }\n var mode = cm.getModeAt(range.head);\n var indented = false;\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++)\n { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range.head.line, \"smart\");\n break\n } }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch)))\n { indented = indentLine(cm, range.head.line, \"smart\"); }\n }\n if (indented) { signalLater(cm, \"electricInput\", cm, range.head.line); }\n }\n }\n\n function copyableRanges(cm) {\n var text = [], ranges = [];\n for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n var line = cm.doc.sel.ranges[i].head.line;\n var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n return {text: text, ranges: ranges}\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", autocorrect ? \"on\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"on\" : \"off\");\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; min-height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n // The textarea is kept positioned near the cursor to prevent the\n // fact that it'll be scrolled into view on input from scrolling\n // our fake cursor out of view. On webkit, when wrap=off, paste is\n // very slow. So make the area wide instead.\n if (webkit) { te.style.width = \"1000px\"; }\n else { te.setAttribute(\"wrap\", \"off\"); }\n // If border: 0; -- iOS fails to open keyboard (issue #1287)\n if (ios) { te.style.border = \"1px solid black\"; }\n return div\n }\n\n // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n\n // This is not the complete set of editor methods. Most of the\n // methods defined on the Doc type are also injected into\n // CodeMirror.prototype, for backwards compatibility and\n // convenience.\n\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n var helpers = CodeMirror.helpers = {};\n\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function(){win(this).focus(); this.display.input.focus();},\n\n setOption: function(option, value) {\n var options = this.options, old = options[option];\n if (options[option] == value && option != \"mode\") { return }\n options[option] = value;\n if (optionHandlers.hasOwnProperty(option))\n { operation(this, optionHandlers[option])(this, value, old); }\n signal(this, \"optionChange\", this, option);\n },\n\n getOption: function(option) {return this.options[option]},\n getDoc: function() {return this.doc},\n\n addKeyMap: function(map, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map));\n },\n removeKeyMap: function(map) {\n var maps = this.state.keyMaps;\n for (var i = 0; i < maps.length; ++i)\n { if (maps[i] == map || maps[i].name == map) {\n maps.splice(i, 1);\n return true\n } }\n },\n\n addOverlay: methodOp(function(spec, options) {\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n insertSorted(this.state.overlays,\n {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n priority: (options && options.priority) || 0},\n function (overlay) { return overlay.priority; });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function(spec) {\n var overlays = this.state.overlays;\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this.state.modeGen++;\n regChange(this);\n return\n }\n }\n }),\n\n indentLine: methodOp(function(n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n else { dir = dir ? \"add\" : \"subtract\"; }\n }\n if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n }),\n indentSelection: methodOp(function(how) {\n var ranges = this.doc.sel.ranges, end = -1;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (!range.empty()) {\n var from = range.from(), to = range.to();\n var start = Math.max(end, from.line);\n end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n for (var j = start; j < end; ++j)\n { indentLine(this, j, how); }\n var newRanges = this.doc.sel.ranges;\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n { replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n } else if (range.head.line > end) {\n indentLine(this, range.head.line, how, true);\n end = range.head.line;\n if (i == this.doc.sel.primIndex) { ensureCursorVisible(this); }\n }\n }\n }),\n\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function(pos, precise) {\n return takeToken(this, pos, precise)\n },\n\n getLineTokens: function(line, precise) {\n return takeToken(this, Pos(line), precise, true)\n },\n\n getTokenTypeAt: function(pos) {\n pos = clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n var type;\n if (ch == 0) { type = styles[2]; }\n else { for (;;) {\n var mid = (before + after) >> 1;\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n else { type = styles[mid * 2 + 2]; break }\n } }\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n },\n\n getModeAt: function(pos) {\n var mode = this.doc.mode;\n if (!mode.innerMode) { return mode }\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n },\n\n getHelper: function(pos, type) {\n return this.getHelpers(pos, type)[0]\n },\n\n getHelpers: function(pos, type) {\n var found = [];\n if (!helpers.hasOwnProperty(type)) { return found }\n var help = helpers[type], mode = this.getModeAt(pos);\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) { found.push(help[mode[type]]); }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n if (val) { found.push(val); }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n if (cur.pred(mode, this) && indexOf(found, cur.val) == -1)\n { found.push(cur.val); }\n }\n return found\n },\n\n getStateAfter: function(line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n return getContextBefore(this, line + 1, precise).state\n },\n\n cursorCoords: function(start, mode) {\n var pos, range = this.doc.sel.primary();\n if (start == null) { pos = range.head; }\n else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n else { pos = start ? range.from() : range.to(); }\n return cursorCoords(this, pos, mode || \"page\")\n },\n\n charCoords: function(pos, mode) {\n return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n },\n\n coordsChar: function(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return coordsChar(this, coords.left, coords.top)\n },\n\n lineAtHeight: function(height, mode) {\n height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n return lineAtHeight(this.doc, height + this.display.viewOffset)\n },\n heightAtLine: function(line, mode, includeWidgets) {\n var end = false, lineObj;\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n if (line < this.doc.first) { line = this.doc.first; }\n else if (line > last) { line = last; end = true; }\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n (end ? this.doc.height - heightAtLine(lineObj) : 0)\n },\n\n defaultTextHeight: function() { return textHeight(this.display) },\n defaultCharWidth: function() { return charWidth(this.display) },\n\n getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n addWidget: function(pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = cursorCoords(this, clipPos(this.doc, pos));\n var top = pos.bottom, left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n // Default to positioning above (if specified and possible); otherwise default to positioning below\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n { top = pos.top - node.offsetHeight; }\n else if (pos.bottom + node.offsetHeight <= vspace)\n { top = pos.bottom; }\n if (left + node.offsetWidth > hspace)\n { left = hspace - node.offsetWidth; }\n }\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") { left = 0; }\n else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n node.style.left = left + \"px\";\n }\n if (scroll)\n { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n },\n\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n\n execCommand: function(cmd) {\n if (commands.hasOwnProperty(cmd))\n { return commands[cmd].call(null, this) }\n },\n\n triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n findPosH: function(from, amount, unit, visually) {\n var dir = 1;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n cur = findPosH(this.doc, cur, dir, unit, visually);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveH: methodOp(function(dir, unit) {\n var this$1 = this;\n\n this.extendSelectionsBy(function (range) {\n if (this$1.display.shift || this$1.doc.extend || range.empty())\n { return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually) }\n else\n { return dir < 0 ? range.from() : range.to() }\n }, sel_move);\n }),\n\n deleteH: methodOp(function(dir, unit) {\n var sel = this.doc.sel, doc = this.doc;\n if (sel.somethingSelected())\n { doc.replaceSelection(\"\", null, \"+delete\"); }\n else\n { deleteNearSelection(this, function (range) {\n var other = findPosH(doc, range.head, dir, unit, false);\n return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}\n }); }\n }),\n\n findPosV: function(from, amount, unit, goalColumn) {\n var dir = 1, x = goalColumn;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n var coords = cursorCoords(this, cur, \"div\");\n if (x == null) { x = coords.left; }\n else { coords.left = x; }\n cur = findPosV(this, coords, dir, unit);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveV: methodOp(function(dir, unit) {\n var this$1 = this;\n\n var doc = this.doc, goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range) {\n if (collapse)\n { return dir < 0 ? range.from() : range.to() }\n var headPos = cursorCoords(this$1, range.head, \"div\");\n if (range.goalColumn != null) { headPos.left = range.goalColumn; }\n goals.push(headPos.left);\n var pos = findPosV(this$1, headPos, dir, unit);\n if (unit == \"page\" && range == doc.sel.primary())\n { addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top); }\n return pos\n }, sel_move);\n if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n { doc.sel.ranges[i].goalColumn = goals[i]; } }\n }),\n\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function(pos) {\n var doc = this.doc, line = getLine(doc, pos.line).text;\n var start = pos.ch, end = pos.ch;\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper)\n ? function (ch) { return isWordChar(ch, helper); }\n : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n while (start > 0 && check(line.charAt(start - 1))) { --start; }\n while (end < line.length && check(line.charAt(end))) { ++end; }\n }\n return new Range(Pos(pos.line, start), Pos(pos.line, end))\n },\n\n toggleOverwrite: function(value) {\n if (value != null && value == this.state.overwrite) { return }\n if (this.state.overwrite = !this.state.overwrite)\n { addClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n else\n { rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function() { return this.display.input.getField() == activeElt(root(this)) },\n isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),\n getScrollInfo: function() {\n var scroller = this.display.scroller;\n return {left: scroller.scrollLeft, top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\n },\n\n scrollIntoView: methodOp(function(range, margin) {\n if (range == null) {\n range = {from: this.doc.sel.primary().head, to: null};\n if (margin == null) { margin = this.options.cursorScrollMargin; }\n } else if (typeof range == \"number\") {\n range = {from: Pos(range, 0), to: null};\n } else if (range.from == null) {\n range = {from: range, to: null};\n }\n if (!range.to) { range.to = range.from; }\n range.margin = margin || 0;\n\n if (range.from.line != null) {\n scrollToRange(this, range);\n } else {\n scrollToCoordsRange(this, range.from, range.to, range.margin);\n }\n }),\n\n setSize: methodOp(function(width, height) {\n var this$1 = this;\n\n var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n if (width != null) { this.display.wrapper.style.width = interpret(width); }\n if (height != null) { this.display.wrapper.style.height = interpret(height); }\n if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n var lineNo = this.display.viewFrom;\n this.doc.iter(lineNo, this.display.viewTo, function (line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo, \"widget\"); break } } }\n ++lineNo;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n\n operation: function(f){return runInOp(this, f)},\n startOperation: function(){return startOperation(this)},\n endOperation: function(){return endOperation(this)},\n\n refresh: methodOp(function() {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this.display);\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping)\n { estimateLineHeights(this); }\n signal(this, \"refresh\", this);\n }),\n\n swapDoc: methodOp(function(doc) {\n var old = this.doc;\n old.cm = null;\n // Cancel the current text selection if any (#5821)\n if (this.state.selectingText) { this.state.selectingText(); }\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old\n }),\n\n phrase: function(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText\n },\n\n getInputField: function(){return this.display.input.getField()},\n getWrapperElement: function(){return this.display.wrapper},\n getScrollerElement: function(){return this.display.scroller},\n getGutterElement: function(){return this.display.gutters}\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function(type, name, value) {\n if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n helpers[type][name] = value;\n };\n CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n helpers[type]._global.push({pred: predicate, val: value});\n };\n }\n\n // Used for horizontal relative motion. Dir is -1 or 1 (left or\n // right), unit can be \"codepoint\", \"char\", \"column\" (like char, but\n // doesn't cross line boundaries), \"word\" (across next word), or\n // \"group\" (to the start of next group of word or\n // non-word-non-whitespace chars). The visually param controls\n // whether, in right-to-left text, direction 1 means to move towards\n // the next index in the string, or towards the character to the right\n // of the current position. The resulting position will have a\n // hitSide=true property if it reached the end of the document.\n function findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n function findNextLine() {\n var l = pos.line + lineDir;\n if (l < doc.first || l >= doc.first + doc.size) { return false }\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l)\n }\n function moveOnce(boundToLine) {\n var next;\n if (unit == \"codepoint\") {\n var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1));\n if (isNaN(ch)) {\n next = null;\n } else {\n var astral = dir > 0 ? ch >= 0xD800 && ch < 0xDC00 : ch >= 0xDC00 && ch < 0xDFFF;\n next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir);\n }\n } else if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n if (next == null) {\n if (!boundToLine && findNextLine())\n { pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir); }\n else\n { return false }\n } else {\n pos = next;\n }\n return true\n }\n\n if (unit == \"char\" || unit == \"codepoint\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null, group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) { break }\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\"\n : group && cur == \"\\n\" ? \"n\"\n : !group || /\\s/.test(cur) ? null\n : \"p\";\n if (group && !first && !type) { type = \"s\"; }\n if (sawType && sawType != type) {\n if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n break\n }\n\n if (type) { sawType = type; }\n if (dir > 0 && !moveOnce(!first)) { break }\n }\n }\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n return result\n }\n\n // For relative vertical movement. Dir may be -1 or 1. Unit can be\n // \"page\" or \"line\". The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n function findPosV(cm, pos, dir, unit) {\n var doc = cm.doc, x = pos.left, y;\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, win(cm).innerHeight || doc(cm).documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n var target;\n for (;;) {\n target = coordsChar(cm, x, y);\n if (!target.outside) { break }\n if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n y += dir * 5;\n }\n return target\n }\n\n // CONTENTEDITABLE INPUT STYLE\n\n var ContentEditableInput = function(cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n\n ContentEditableInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = input.cm;\n var div = input.div = display.lineDiv;\n div.contentEditable = true;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n function belongsToInput(e) {\n for (var t = e.target; t; t = t.parentNode) {\n if (t == div) { return true }\n if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) { break }\n }\n return false\n }\n\n on(div, \"paste\", function (e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n });\n\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {data: e.data, done: false};\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n this$1.composing.done = true;\n }\n });\n\n on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n on(div, \"input\", function () {\n if (!this$1.composing) { this$1.readFromDOMSoon(); }\n });\n\n function onCopyCut(e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\");\n // iOS exposes the clipboard API, but seems to discard content inserted into it\n e.clipboardData.setData(\"Text\", content);\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return\n }\n }\n // Old-fashioned briefly-focus-a-textarea hack\n var kludge = hiddenTextarea(), te = kludge.firstChild;\n disableBrowserMagic(te);\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = activeElt(rootNode(div));\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n if (hadFocus == div) { input.showPrimarySelection(); }\n }, 50);\n }\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.div.setAttribute('aria-label', label);\n } else {\n this.div.removeAttribute('aria-label');\n }\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = activeElt(rootNode(this.div)) == this.div;\n return result\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) { return }\n if (info.focus || takeFocus) { this.showPrimarySelection(); }\n this.showMultipleSelections(info);\n };\n\n ContentEditableInput.prototype.getSelection = function () {\n return this.cm.display.wrapper.ownerDocument.getSelection()\n };\n\n ContentEditableInput.prototype.showPrimarySelection = function () {\n var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n var from = prim.from(), to = prim.to();\n\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return\n }\n\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n cmp(minPos(curAnchor, curFocus), from) == 0 &&\n cmp(maxPos(curAnchor, curFocus), to) == 0)\n { return }\n\n var view = cm.display.view;\n var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\n {node: view[0].measure.map[2], offset: 0};\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]};\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0), rng;\n try { rng = range(start.node, start.offset, end.offset, end.node); }\n catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n if (old && sel.anchorNode == null) { sel.addRange(old); }\n else if (gecko) { this.startGracePeriod(); }\n }\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n if (this$1.selectionChanged())\n { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\n }, 20);\n };\n\n ContentEditableInput.prototype.showMultipleSelections = function (info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n\n ContentEditableInput.prototype.rememberSelection = function () {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n if (!sel.rangeCount) { return false }\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node)\n };\n\n ContentEditableInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor() || activeElt(rootNode(this.div)) != this.div)\n { this.showSelection(this.prepareSelection(), true); }\n this.div.focus();\n }\n };\n ContentEditableInput.prototype.blur = function () { this.div.blur(); };\n ContentEditableInput.prototype.getField = function () { return this.div };\n\n ContentEditableInput.prototype.supportsTouch = function () { return true };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var this$1 = this;\n\n var input = this;\n if (this.selectionInEditor())\n { setTimeout(function () { return this$1.pollSelection(); }, 20); }\n else\n { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\n\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n\n ContentEditableInput.prototype.selectionChanged = function () {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n var sel = this.getSelection(), cm = this.cm;\n // On Android Chrome (version 56, at least), backspacing into an\n // uneditable block element will put the cursor in that element,\n // and then, because it's not editable, hide the virtual keyboard.\n // Because Android doesn't allow us to actually detect backspace\n // presses in a sane way, this code checks for when that happens\n // and simulates a backspace press in this case.\n if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n this.blur();\n this.focus();\n return\n }\n if (this.composing) { return }\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (anchor && head) { runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\n }); }\n };\n\n ContentEditableInput.prototype.pollContent = function () {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n\n var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n var from = sel.from(), to = sel.to();\n if (from.ch == 0 && from.line > cm.firstLine())\n { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n { to = Pos(to.line + 1, 0); }\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n var fromIndex, fromLine, fromNode;\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n\n if (!fromNode) { return false }\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n else { break }\n }\n\n var cutFront = 0, cutEnd = 0;\n var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n { ++cutFront; }\n var newBot = lst(newText), oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n oldBot.length - (oldText.length == 1 ? cutFront : 0));\n while (cutEnd < maxCutEnd &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n { ++cutEnd; }\n // Try to move start of change to start of selection if ambiguous\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n return true\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) { return }\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) { return }\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n if (this$1.composing) {\n if (this$1.composing.done) { this$1.composing = null; }\n else { return }\n }\n this$1.updateFromDOM();\n }, 80);\n };\n\n ContentEditableInput.prototype.updateFromDOM = function () {\n var this$1 = this;\n\n if (this.cm.isReadOnly() || !this.pollContent())\n { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\n };\n\n ContentEditableInput.prototype.setUneditable = function (node) {\n node.contentEditable = \"false\";\n };\n\n ContentEditableInput.prototype.onKeyPress = function (e) {\n if (e.charCode == 0 || this.composing) { return }\n e.preventDefault();\n if (!this.cm.isReadOnly())\n { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\n };\n\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n ContentEditableInput.prototype.resetPosition = function () {};\n\n ContentEditableInput.prototype.needsContentAttribute = true;\n\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n if (!view || view.hidden) { return null }\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n\n var order = getOrder(line, cm.doc.direction), side = \"left\";\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result\n }\n\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode)\n { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\n return false\n }\n\n function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false;\n function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n function close() {\n if (closing) {\n text += lineSep;\n if (extraLinebreak) { text += lineSep; }\n closing = extraLinebreak = false;\n }\n }\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n if (cmText) {\n addText(cmText);\n return\n }\n var markerID = node.getAttribute(\"cm-marker\"), range;\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n if (found.length && (range = found[0].find(0)))\n { addText(getBetween(cm.doc, range.from, range.to).join(lineSep)); }\n return\n }\n if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return }\n\n if (isBlock) { close(); }\n for (var i = 0; i < node.childNodes.length; i++)\n { walk(node.childNodes[i]); }\n\n if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; }\n if (isBlock) { closing = true; }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n for (;;) {\n walk(from);\n if (from == to) { break }\n from = from.nextSibling;\n extraLinebreak = false;\n }\n return text\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n node = null; offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n }\n }\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n if (lineView.node == lineNode)\n { return locateNodeInLineView(lineView, node, offset) }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild, bad = false;\n if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad)\n }\n }\n\n var textNode = node.nodeType == 3 ? node : null, topNode = node;\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n if (offset) { offset = textNode.nodeValue.length; }\n }\n while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n var measure = lineView.measure, maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map = i < 0 ? measure.map : maps[i];\n for (var j = 0; j < map.length; j += 3) {\n var curNode = map[j + 2];\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map[j] + offset;\n if (offset < 0 || curNode != textNode) { ch = map[j + (offset ? 1 : 0)]; }\n return Pos(line, ch)\n }\n }\n }\n }\n var found = find(textNode, topNode, offset);\n if (found) { return badPos(found, bad) }\n\n // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n if (found)\n { return badPos(Pos(found.line, found.ch - dist), bad) }\n else\n { dist += after.textContent.length; }\n }\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n if (found)\n { return badPos(Pos(found.line, found.ch + dist$1), bad) }\n else\n { dist$1 += before.textContent.length; }\n }\n }\n\n // TEXTAREA INPUT STYLE\n\n var TextareaInput = function(cm) {\n this.cm = cm;\n // See input.poll and input.reset\n this.prevInput = \"\";\n\n // Flag that indicates whether we expect input to appear real soon\n // now (after some event like 'keypress' or 'input') and are\n // polling intensively.\n this.pollingFast = false;\n // Self-resetting timeout for the poller\n this.polling = new Delayed();\n // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n this.hasSelection = false;\n this.composing = null;\n this.resetting = false;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n\n // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n if (ios) { te.style.width = \"0px\"; }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n input.poll();\n });\n\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n cm.state.pasteIncoming = +new Date;\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n if (e.type == \"cut\") { cm.state.cutIncoming = +new Date; }\n }\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date;\n input.focus();\n return\n }\n\n // Pass the `paste` event to the textarea so it's handled by its event listener.\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n });\n\n // Prevent normal selection in the editor (we handle our own)\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) { e_preventDefault(e); }\n });\n\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n if (input.composing) { input.composing.range.clear(); }\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\n };\n });\n on(te, \"compositionend\", function () {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n\n TextareaInput.prototype.createField = function (_display) {\n // Wraps and hides input textarea\n this.wrapper = hiddenTextarea();\n // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n this.textarea = this.wrapper.firstChild;\n var opts = this.cm.options;\n disableBrowserMagic(this.textarea, opts.spellcheck, opts.autocorrect, opts.autocapitalize);\n };\n\n TextareaInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.textarea.setAttribute('aria-label', label);\n } else {\n this.textarea.removeAttribute('aria-label');\n }\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm, display = cm.display, doc = cm.doc;\n var result = prepareSelection(cm);\n\n // Move the hidden textarea near the cursor to prevent scrolling artifacts\n if (cm.options.moveInputWithCursor) {\n var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm, display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n };\n\n // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing && typing) { return }\n var cm = this.cm;\n this.resetting = true;\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n if (cm.state.focused) { selectInput(this.textarea); }\n if (ie && ie_version >= 9) { this.hasSelection = content; }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n }\n this.resetting = false;\n };\n\n TextareaInput.prototype.getField = function () { return this.textarea };\n\n TextareaInput.prototype.supportsTouch = function () { return false };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt(rootNode(this.textarea)) != this.textarea)) {\n try { this.textarea.focus(); }\n catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n }\n };\n\n TextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) { return }\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n if (this$1.cm.state.focused) { this$1.slowPoll(); }\n });\n };\n\n // When an event has just come in that is likely to add or change\n // something in the input textarea, we poll faster, to ensure that\n // the change appears on the screen quickly.\n TextareaInput.prototype.fastPoll = function () {\n var missed = false, input = this;\n input.pollingFast = true;\n function p() {\n var changed = input.poll();\n if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n else {input.pollingFast = false; input.slowPoll();}\n }\n input.polling.set(20, p);\n };\n\n // Read input from the textarea, and update the document to match.\n // When something is selected, it is present in the textarea, and\n // selected (unless it is huge, in which case a placeholder is\n // used). When nothing is selected, the cursor sits after previously\n // seen text (can be empty), which is stored in prevInput (we must\n // not reset the textarea when typing, because that breaks IME).\n TextareaInput.prototype.poll = function () {\n var this$1 = this;\n\n var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n // Since this is called a *lot*, try to bail out as cheaply as\n // possible when it is clear that nothing happened. hasSelection\n // will be the case when there is a lot of text in the textarea,\n // in which case reading its value would be expensive.\n if (this.contextMenuPending || this.resetting || !cm.state.focused ||\n (hasSelection(input) && !prevInput && !this.composing) ||\n cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n { return false }\n\n var text = input.value;\n // If nothing changed, bail.\n if (text == prevInput && !cm.somethingSelected()) { return false }\n // Work around nonsensical selection resetting in IE9/10, and\n // inexplicable appearance of private area unicode characters on\n // some key combos in Mac (#2689).\n if (ie && ie_version >= 9 && this.hasSelection === text ||\n mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false\n }\n\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n }\n // Find the part of the input that is actually new\n var same = 0, l = Math.min(prevInput.length, text.length);\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same,\n null, this$1.composing ? \"*compose\" : null);\n\n // Don't leave long text in the textarea, since it makes further polling slow\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n else { this$1.prevInput = text; }\n\n if (this$1.composing) {\n this$1.composing.range.clear();\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"),\n {className: \"CodeMirror-composing\"});\n }\n });\n return true\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n if (input.contextMenuPending) { input.contextMenuPending(); }\n var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n if (!pos || presto) { return } // Opera is difficult.\n\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n var reset = cm.options.resetSelectionOnContextMenu;\n if (reset && cm.doc.sel.contains(pos) == -1)\n { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n if (webkit) { oldScrollY = te.ownerDocument.defaultView.scrollY; } // Work around Chrome issue (#2712)\n display.input.focus();\n if (webkit) { te.ownerDocument.defaultView.scrollTo(null, oldScrollY); }\n display.input.reset();\n // Adds \"Select all\" to context menu in FF\n if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll);\n\n // Select-all will be greyed out if there's nothing to select, so\n // this adds a zero-width space so that we can later check whether\n // it got selected.\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200b\" + (selected ? te.value : \"\");\n te.value = \"\\u21da\"; // Used to catch context-menu undo\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200b\";\n te.selectionStart = 1; te.selectionEnd = extval.length;\n // Re-set this, in case some other handler touched the\n // selection in the meantime.\n display.selForContextMenu = cm.doc.sel;\n }\n }\n function rehide() {\n if (input.contextMenuPending != rehide) { return }\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n // Try to detect the user choosing select-all\n if (te.selectionStart != null) {\n if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n var i = 0, poll = function () {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n operation(cm, selectAll)(cm);\n } else if (i++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n if (captureRightClick) {\n e_stop(e);\n var mouseup = function () {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) { this.reset(); }\n this.textarea.disabled = val == \"nocursor\";\n this.textarea.readOnly = !!val;\n };\n\n TextareaInput.prototype.setUneditable = function () {};\n\n TextareaInput.prototype.needsContentAttribute = false;\n\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n if (!options.tabindex && textarea.tabIndex)\n { options.tabindex = textarea.tabIndex; }\n if (!options.placeholder && textarea.placeholder)\n { options.placeholder = textarea.placeholder; }\n // Set autofocus to true if this textarea is focused, or if it has\n // autofocus and no other element is focused.\n if (options.autofocus == null) {\n var hasFocus = activeElt(rootNode(textarea));\n options.autofocus = hasFocus == textarea ||\n textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {textarea.value = cm.getValue();}\n\n var realSubmit;\n if (textarea.form) {\n on(textarea.form, \"submit\", save);\n // Deplorable hack to make the submit method do the right thing.\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n try {\n var wrappedSubmit = form.submit = function () {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch(e) {}\n }\n }\n\n options.finishInit = function (cm) {\n cm.save = save;\n cm.getTextArea = function () { return textarea; };\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\")\n { textarea.form.submit = realSubmit; }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\n options);\n return cm\n }\n\n function addLegacyProps(CodeMirror) {\n CodeMirror.off = off;\n CodeMirror.on = on;\n CodeMirror.wheelEventPixels = wheelEventPixels;\n CodeMirror.Doc = Doc;\n CodeMirror.splitLines = splitLinesAuto;\n CodeMirror.countColumn = countColumn;\n CodeMirror.findColumn = findColumn;\n CodeMirror.isWordChar = isWordCharBasic;\n CodeMirror.Pass = Pass;\n CodeMirror.signal = signal;\n CodeMirror.Line = Line;\n CodeMirror.changeEnd = changeEnd;\n CodeMirror.scrollbarModel = scrollbarModel;\n CodeMirror.Pos = Pos;\n CodeMirror.cmpPos = cmp;\n CodeMirror.modes = modes;\n CodeMirror.mimeModes = mimeModes;\n CodeMirror.resolveMode = resolveMode;\n CodeMirror.getMode = getMode;\n CodeMirror.modeExtensions = modeExtensions;\n CodeMirror.extendMode = extendMode;\n CodeMirror.copyState = copyState;\n CodeMirror.startState = startState;\n CodeMirror.innerMode = innerMode;\n CodeMirror.commands = commands;\n CodeMirror.keyMap = keyMap;\n CodeMirror.keyName = keyName;\n CodeMirror.isModifierKey = isModifierKey;\n CodeMirror.lookupKey = lookupKey;\n CodeMirror.normalizeKeyMap = normalizeKeyMap;\n CodeMirror.StringStream = StringStream;\n CodeMirror.SharedTextMarker = SharedTextMarker;\n CodeMirror.TextMarker = TextMarker;\n CodeMirror.LineWidget = LineWidget;\n CodeMirror.e_preventDefault = e_preventDefault;\n CodeMirror.e_stopPropagation = e_stopPropagation;\n CodeMirror.e_stop = e_stop;\n CodeMirror.addClass = addClass;\n CodeMirror.contains = contains;\n CodeMirror.rmClass = rmClass;\n CodeMirror.keyNames = keyNames;\n }\n\n // EDITOR CONSTRUCTOR\n\n defineOptions(CodeMirror);\n\n addEditorMethods(CodeMirror);\n\n // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n { CodeMirror.prototype[prop] = (function(method) {\n return function() {return method.apply(this.doc, arguments)}\n })(Doc.prototype[prop]); } }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n CodeMirror.defineMode = function(name/*, mode, \u2026*/) {\n if (!CodeMirror.defaults.mode && name != \"null\") { CodeMirror.defaults.mode = name; }\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME;\n\n // Minimal default mode.\n CodeMirror.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\n CodeMirror.defineMIME(\"text/plain\", \"null\");\n\n // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n\n addLegacyProps(CodeMirror);\n\n CodeMirror.version = \"5.65.18\";\n\n return CodeMirror;\n\n})));\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"javascript\", function(config, parserConfig) {\n var indentUnit = config.indentUnit;\n var statementIndent = parserConfig.statementIndent;\n var jsonldMode = parserConfig.jsonld;\n var jsonMode = parserConfig.json || jsonldMode;\n var trackScope = parserConfig.trackScope !== false\n var isTS = parserConfig.typescript;\n var wordRE = parserConfig.wordCharacters || /[\\w$\\xa1-\\uffff]/;\n\n // Tokenizer\n\n var keywords = function(){\n function kw(type) {return {type: type, style: \"keyword\"};}\n var A = kw(\"keyword a\"), B = kw(\"keyword b\"), C = kw(\"keyword c\"), D = kw(\"keyword d\");\n var operator = kw(\"operator\"), atom = {type: \"atom\", style: \"atom\"};\n\n return {\n \"if\": kw(\"if\"), \"while\": A, \"with\": A, \"else\": B, \"do\": B, \"try\": B, \"finally\": B,\n \"return\": D, \"break\": D, \"continue\": D, \"new\": kw(\"new\"), \"delete\": C, \"void\": C, \"throw\": C,\n \"debugger\": kw(\"debugger\"), \"var\": kw(\"var\"), \"const\": kw(\"var\"), \"let\": kw(\"var\"),\n \"function\": kw(\"function\"), \"catch\": kw(\"catch\"),\n \"for\": kw(\"for\"), \"switch\": kw(\"switch\"), \"case\": kw(\"case\"), \"default\": kw(\"default\"),\n \"in\": operator, \"typeof\": operator, \"instanceof\": operator,\n \"true\": atom, \"false\": atom, \"null\": atom, \"undefined\": atom, \"NaN\": atom, \"Infinity\": atom,\n \"this\": kw(\"this\"), \"class\": kw(\"class\"), \"super\": kw(\"atom\"),\n \"yield\": C, \"export\": kw(\"export\"), \"import\": kw(\"import\"), \"extends\": C,\n \"await\": C\n };\n }();\n\n var isOperatorChar = /[+\\-*&%=<>!?|~^@]/;\n var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\"/;\n\n function readRegexp(stream) {\n var escaped = false, next, inSet = false;\n while ((next = stream.next()) != null) {\n if (!escaped) {\n if (next == \"/\" && !inSet) return;\n if (next == \"[\") inSet = true;\n else if (inSet && next == \"]\") inSet = false;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n }\n\n // Used as scratch variables to communicate multiple values without\n // consing up tons of objects.\n var type, content;\n function ret(tp, style, cont) {\n type = tp; content = cont;\n return style;\n }\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (ch == '\"' || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \".\" && stream.match(/^\\d[\\d_]*(?:[eE][+\\-]?[\\d_]+)?/)) {\n return ret(\"number\", \"number\");\n } else if (ch == \".\" && stream.match(\"..\")) {\n return ret(\"spread\", \"meta\");\n } else if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n return ret(ch);\n } else if (ch == \"=\" && stream.eat(\">\")) {\n return ret(\"=>\", \"operator\");\n } else if (ch == \"0\" && stream.match(/^(?:x[\\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) {\n return ret(\"number\", \"number\");\n } else if (/\\d/.test(ch)) {\n stream.match(/^[\\d_]*(?:n|(?:\\.[\\d_]*)?(?:[eE][+\\-]?[\\d_]+)?)?/);\n return ret(\"number\", \"number\");\n } else if (ch == \"/\") {\n if (stream.eat(\"*\")) {\n state.tokenize = tokenComment;\n return tokenComment(stream, state);\n } else if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return ret(\"comment\", \"comment\");\n } else if (expressionAllowed(stream, state, 1)) {\n readRegexp(stream);\n stream.match(/^\\b(([gimyus])(?![gimyus]*\\2))+\\b/);\n return ret(\"regexp\", \"string-2\");\n } else {\n stream.eat(\"=\");\n return ret(\"operator\", \"operator\", stream.current());\n }\n } else if (ch == \"`\") {\n state.tokenize = tokenQuasi;\n return tokenQuasi(stream, state);\n } else if (ch == \"#\" && stream.peek() == \"!\") {\n stream.skipToEnd();\n return ret(\"meta\", \"meta\");\n } else if (ch == \"#\" && stream.eatWhile(wordRE)) {\n return ret(\"variable\", \"property\")\n } else if (ch == \"<\" && stream.match(\"!--\") ||\n (ch == \"-\" && stream.match(\"->\") && !/\\S/.test(stream.string.slice(0, stream.start)))) {\n stream.skipToEnd()\n return ret(\"comment\", \"comment\")\n } else if (isOperatorChar.test(ch)) {\n if (ch != \">\" || !state.lexical || state.lexical.type != \">\") {\n if (stream.eat(\"=\")) {\n if (ch == \"!\" || ch == \"=\") stream.eat(\"=\")\n } else if (/[<>*+\\-|&?]/.test(ch)) {\n stream.eat(ch)\n if (ch == \">\") stream.eat(ch)\n }\n }\n if (ch == \"?\" && stream.eat(\".\")) return ret(\".\")\n return ret(\"operator\", \"operator\", stream.current());\n } else if (wordRE.test(ch)) {\n stream.eatWhile(wordRE);\n var word = stream.current()\n if (state.lastType != \".\") {\n if (keywords.propertyIsEnumerable(word)) {\n var kw = keywords[word]\n return ret(kw.type, kw.style, word)\n }\n if (word == \"async\" && stream.match(/^(\\s|\\/\\*([^*]|\\*(?!\\/))*?\\*\\/)*[\\[\\(\\w]/, false))\n return ret(\"async\", \"keyword\", word)\n }\n return ret(\"variable\", \"variable\", word)\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, next;\n if (jsonldMode && stream.peek() == \"@\" && stream.match(isJsonldKeyword)){\n state.tokenize = tokenBase;\n return ret(\"jsonld-keyword\", \"meta\");\n }\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped) break;\n escaped = !escaped && next == \"\\\\\";\n }\n if (!escaped) state.tokenize = tokenBase;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenComment(stream, state) {\n var maybeEnd = false, ch;\n while (ch = stream.next()) {\n if (ch == \"/\" && maybeEnd) {\n state.tokenize = tokenBase;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return ret(\"comment\", \"comment\");\n }\n\n function tokenQuasi(stream, state) {\n var escaped = false, next;\n while ((next = stream.next()) != null) {\n if (!escaped && (next == \"`\" || next == \"$\" && stream.eat(\"{\"))) {\n state.tokenize = tokenBase;\n break;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n return ret(\"quasi\", \"string-2\", stream.current());\n }\n\n var brackets = \"([{}])\";\n // This is a crude lookahead trick to try and notice that we're\n // parsing the argument patterns for a fat-arrow function before we\n // actually hit the arrow token. It only works if the arrow is on\n // the same line as the arguments and there's no strange noise\n // (comments) in between. Fallback is to only notice when we hit the\n // arrow, and not declare the arguments as locals for the arrow\n // body.\n function findFatArrow(stream, state) {\n if (state.fatArrowAt) state.fatArrowAt = null;\n var arrow = stream.string.indexOf(\"=>\", stream.start);\n if (arrow < 0) return;\n\n if (isTS) { // Try to skip TypeScript return type declarations after the arguments\n var m = /:\\s*(?:\\w+(?:<[^>]*>|\\[\\])?|\\{[^}]*\\})\\s*$/.exec(stream.string.slice(stream.start, arrow))\n if (m) arrow = m.index\n }\n\n var depth = 0, sawSomething = false;\n for (var pos = arrow - 1; pos >= 0; --pos) {\n var ch = stream.string.charAt(pos);\n var bracket = brackets.indexOf(ch);\n if (bracket >= 0 && bracket < 3) {\n if (!depth) { ++pos; break; }\n if (--depth == 0) { if (ch == \"(\") sawSomething = true; break; }\n } else if (bracket >= 3 && bracket < 6) {\n ++depth;\n } else if (wordRE.test(ch)) {\n sawSomething = true;\n } else if (/[\"'\\/`]/.test(ch)) {\n for (;; --pos) {\n if (pos == 0) return\n var next = stream.string.charAt(pos - 1)\n if (next == ch && stream.string.charAt(pos - 2) != \"\\\\\") { pos--; break }\n }\n } else if (sawSomething && !depth) {\n ++pos;\n break;\n }\n }\n if (sawSomething && !depth) state.fatArrowAt = pos;\n }\n\n // Parser\n\n var atomicTypes = {\"atom\": true, \"number\": true, \"variable\": true, \"string\": true,\n \"regexp\": true, \"this\": true, \"import\": true, \"jsonld-keyword\": true};\n\n function JSLexical(indented, column, type, align, prev, info) {\n this.indented = indented;\n this.column = column;\n this.type = type;\n this.prev = prev;\n this.info = info;\n if (align != null) this.align = align;\n }\n\n function inScope(state, varname) {\n if (!trackScope) return false\n for (var v = state.localVars; v; v = v.next)\n if (v.name == varname) return true;\n for (var cx = state.context; cx; cx = cx.prev) {\n for (var v = cx.vars; v; v = v.next)\n if (v.name == varname) return true;\n }\n }\n\n function parseJS(state, style, type, content, stream) {\n var cc = state.cc;\n // Communicate our context to the combinators.\n // (Less wasteful than consing up a hundred closures on every call.)\n cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style;\n\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = true;\n\n while(true) {\n var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;\n if (combinator(type, content)) {\n while(cc.length && cc[cc.length - 1].lex)\n cc.pop()();\n if (cx.marked) return cx.marked;\n if (type == \"variable\" && inScope(state, content)) return \"variable-2\";\n return style;\n }\n }\n }\n\n // Combinator utils\n\n var cx = {state: null, column: null, marked: null, cc: null};\n function pass() {\n for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n }\n function cont() {\n pass.apply(null, arguments);\n return true;\n }\n function inList(name, list) {\n for (var v = list; v; v = v.next) if (v.name == name) return true\n return false;\n }\n function register(varname) {\n var state = cx.state;\n cx.marked = \"def\";\n if (!trackScope) return\n if (state.context) {\n if (state.lexical.info == \"var\" && state.context && state.context.block) {\n // FIXME function decls are also not block scoped\n var newContext = registerVarScoped(varname, state.context)\n if (newContext != null) {\n state.context = newContext\n return\n }\n } else if (!inList(varname, state.localVars)) {\n state.localVars = new Var(varname, state.localVars)\n return\n }\n }\n // Fall through means this is global\n if (parserConfig.globalVars && !inList(varname, state.globalVars))\n state.globalVars = new Var(varname, state.globalVars)\n }\n function registerVarScoped(varname, context) {\n if (!context) {\n return null\n } else if (context.block) {\n var inner = registerVarScoped(varname, context.prev)\n if (!inner) return null\n if (inner == context.prev) return context\n return new Context(inner, context.vars, true)\n } else if (inList(varname, context.vars)) {\n return context\n } else {\n return new Context(context.prev, new Var(varname, context.vars), false)\n }\n }\n\n function isModifier(name) {\n return name == \"public\" || name == \"private\" || name == \"protected\" || name == \"abstract\" || name == \"readonly\"\n }\n\n // Combinators\n\n function Context(prev, vars, block) { this.prev = prev; this.vars = vars; this.block = block }\n function Var(name, next) { this.name = name; this.next = next }\n\n var defaultVars = new Var(\"this\", new Var(\"arguments\", null))\n function pushcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, false)\n cx.state.localVars = defaultVars\n }\n function pushblockcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, true)\n cx.state.localVars = null\n }\n pushcontext.lex = pushblockcontext.lex = true\n function popcontext() {\n cx.state.localVars = cx.state.context.vars\n cx.state.context = cx.state.context.prev\n }\n popcontext.lex = true\n function pushlex(type, info) {\n var result = function() {\n var state = cx.state, indent = state.indented;\n if (state.lexical.type == \"stat\") indent = state.lexical.indented;\n else for (var outer = state.lexical; outer && outer.type == \")\" && outer.align; outer = outer.prev)\n indent = outer.indented;\n state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);\n };\n result.lex = true;\n return result;\n }\n function poplex() {\n var state = cx.state;\n if (state.lexical.prev) {\n if (state.lexical.type == \")\")\n state.indented = state.lexical.indented;\n state.lexical = state.lexical.prev;\n }\n }\n poplex.lex = true;\n\n function expect(wanted) {\n function exp(type) {\n if (type == wanted) return cont();\n else if (wanted == \";\" || type == \"}\" || type == \")\" || type == \"]\") return pass();\n else return cont(exp);\n };\n return exp;\n }\n\n function statement(type, value) {\n if (type == \"var\") return cont(pushlex(\"vardef\", value), vardef, expect(\";\"), poplex);\n if (type == \"keyword a\") return cont(pushlex(\"form\"), parenExpr, statement, poplex);\n if (type == \"keyword b\") return cont(pushlex(\"form\"), statement, poplex);\n if (type == \"keyword d\") return cx.stream.match(/^\\s*$/, false) ? cont() : cont(pushlex(\"stat\"), maybeexpression, expect(\";\"), poplex);\n if (type == \"debugger\") return cont(expect(\";\"));\n if (type == \"{\") return cont(pushlex(\"}\"), pushblockcontext, block, poplex, popcontext);\n if (type == \";\") return cont();\n if (type == \"if\") {\n if (cx.state.lexical.info == \"else\" && cx.state.cc[cx.state.cc.length - 1] == poplex)\n cx.state.cc.pop()();\n return cont(pushlex(\"form\"), parenExpr, statement, poplex, maybeelse);\n }\n if (type == \"function\") return cont(functiondef);\n if (type == \"for\") return cont(pushlex(\"form\"), pushblockcontext, forspec, statement, popcontext, poplex);\n if (type == \"class\" || (isTS && value == \"interface\")) {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\", type == \"class\" ? type : value), className, poplex)\n }\n if (type == \"variable\") {\n if (isTS && value == \"declare\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else if (isTS && (value == \"module\" || value == \"enum\" || value == \"type\") && cx.stream.match(/^\\s*\\w/, false)) {\n cx.marked = \"keyword\"\n if (value == \"enum\") return cont(enumdef);\n else if (value == \"type\") return cont(typename, expect(\"operator\"), typeexpr, expect(\";\"));\n else return cont(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), block, poplex, poplex)\n } else if (isTS && value == \"namespace\") {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\"), expression, statement, poplex)\n } else if (isTS && value == \"abstract\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else {\n return cont(pushlex(\"stat\"), maybelabel);\n }\n }\n if (type == \"switch\") return cont(pushlex(\"form\"), parenExpr, expect(\"{\"), pushlex(\"}\", \"switch\"), pushblockcontext,\n block, poplex, poplex, popcontext);\n if (type == \"case\") return cont(expression, expect(\":\"));\n if (type == \"default\") return cont(expect(\":\"));\n if (type == \"catch\") return cont(pushlex(\"form\"), pushcontext, maybeCatchBinding, statement, poplex, popcontext);\n if (type == \"export\") return cont(pushlex(\"stat\"), afterExport, poplex);\n if (type == \"import\") return cont(pushlex(\"stat\"), afterImport, poplex);\n if (type == \"async\") return cont(statement)\n if (value == \"@\") return cont(expression, statement)\n return pass(pushlex(\"stat\"), expression, expect(\";\"), poplex);\n }\n function maybeCatchBinding(type) {\n if (type == \"(\") return cont(funarg, expect(\")\"))\n }\n function expression(type, value) {\n return expressionInner(type, value, false);\n }\n function expressionNoComma(type, value) {\n return expressionInner(type, value, true);\n }\n function parenExpr(type) {\n if (type != \"(\") return pass()\n return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex)\n }\n function expressionInner(type, value, noComma) {\n if (cx.state.fatArrowAt == cx.stream.start) {\n var body = noComma ? arrowBodyNoComma : arrowBody;\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, expect(\"=>\"), body, popcontext);\n else if (type == \"variable\") return pass(pushcontext, pattern, expect(\"=>\"), body, popcontext);\n }\n\n var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;\n if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);\n if (type == \"function\") return cont(functiondef, maybeop);\n if (type == \"class\" || (isTS && value == \"interface\")) { cx.marked = \"keyword\"; return cont(pushlex(\"form\"), classExpression, poplex); }\n if (type == \"keyword c\" || type == \"async\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"(\") return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex, maybeop);\n if (type == \"operator\" || type == \"spread\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"[\") return cont(pushlex(\"]\"), arrayLiteral, poplex, maybeop);\n if (type == \"{\") return contCommasep(objprop, \"}\", null, maybeop);\n if (type == \"quasi\") return pass(quasi, maybeop);\n if (type == \"new\") return cont(maybeTarget(noComma));\n return cont();\n }\n function maybeexpression(type) {\n if (type.match(/[;\\}\\)\\],]/)) return pass();\n return pass(expression);\n }\n\n function maybeoperatorComma(type, value) {\n if (type == \",\") return cont(maybeexpression);\n return maybeoperatorNoComma(type, value, false);\n }\n function maybeoperatorNoComma(type, value, noComma) {\n var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;\n var expr = noComma == false ? expression : expressionNoComma;\n if (type == \"=>\") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);\n if (type == \"operator\") {\n if (/\\+\\+|--/.test(value) || isTS && value == \"!\") return cont(me);\n if (isTS && value == \"<\" && cx.stream.match(/^([^<>]|<[^<>]*>)*>\\s*\\(/, false))\n return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, me);\n if (value == \"?\") return cont(expression, expect(\":\"), expr);\n return cont(expr);\n }\n if (type == \"quasi\") { return pass(quasi, me); }\n if (type == \";\") return;\n if (type == \"(\") return contCommasep(expressionNoComma, \")\", \"call\", me);\n if (type == \".\") return cont(property, me);\n if (type == \"[\") return cont(pushlex(\"]\"), maybeexpression, expect(\"]\"), poplex, me);\n if (isTS && value == \"as\") { cx.marked = \"keyword\"; return cont(typeexpr, me) }\n if (type == \"regexp\") {\n cx.state.lastType = cx.marked = \"operator\"\n cx.stream.backUp(cx.stream.pos - cx.stream.start - 1)\n return cont(expr)\n }\n }\n function quasi(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasi);\n return cont(maybeexpression, continueQuasi);\n }\n function continueQuasi(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasi);\n }\n }\n function arrowBody(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expression);\n }\n function arrowBodyNoComma(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expressionNoComma);\n }\n function maybeTarget(noComma) {\n return function(type) {\n if (type == \".\") return cont(noComma ? targetNoComma : target);\n else if (type == \"variable\" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma)\n else return pass(noComma ? expressionNoComma : expression);\n };\n }\n function target(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorComma); }\n }\n function targetNoComma(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorNoComma); }\n }\n function maybelabel(type) {\n if (type == \":\") return cont(poplex, statement);\n return pass(maybeoperatorComma, expect(\";\"), poplex);\n }\n function property(type) {\n if (type == \"variable\") {cx.marked = \"property\"; return cont();}\n }\n function objprop(type, value) {\n if (type == \"async\") {\n cx.marked = \"property\";\n return cont(objprop);\n } else if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n if (value == \"get\" || value == \"set\") return cont(getterSetter);\n var m // Work around fat-arrow-detection complication for detecting typescript typed arrow params\n if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\\s*:\\s*/, false)))\n cx.state.fatArrowAt = cx.stream.pos + m[0].length\n return cont(afterprop);\n } else if (type == \"number\" || type == \"string\") {\n cx.marked = jsonldMode ? \"property\" : (cx.style + \" property\");\n return cont(afterprop);\n } else if (type == \"jsonld-keyword\") {\n return cont(afterprop);\n } else if (isTS && isModifier(value)) {\n cx.marked = \"keyword\"\n return cont(objprop)\n } else if (type == \"[\") {\n return cont(expression, maybetype, expect(\"]\"), afterprop);\n } else if (type == \"spread\") {\n return cont(expressionNoComma, afterprop);\n } else if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(objprop);\n } else if (type == \":\") {\n return pass(afterprop)\n }\n }\n function getterSetter(type) {\n if (type != \"variable\") return pass(afterprop);\n cx.marked = \"property\";\n return cont(functiondef);\n }\n function afterprop(type) {\n if (type == \":\") return cont(expressionNoComma);\n if (type == \"(\") return pass(functiondef);\n }\n function commasep(what, end, sep) {\n function proceed(type, value) {\n if (sep ? sep.indexOf(type) > -1 : type == \",\") {\n var lex = cx.state.lexical;\n if (lex.info == \"call\") lex.pos = (lex.pos || 0) + 1;\n return cont(function(type, value) {\n if (type == end || value == end) return pass()\n return pass(what)\n }, proceed);\n }\n if (type == end || value == end) return cont();\n if (sep && sep.indexOf(\";\") > -1) return pass(what)\n return cont(expect(end));\n }\n return function(type, value) {\n if (type == end || value == end) return cont();\n return pass(what, proceed);\n };\n }\n function contCommasep(what, end, info) {\n for (var i = 3; i < arguments.length; i++)\n cx.cc.push(arguments[i]);\n return cont(pushlex(end, info), commasep(what, end), poplex);\n }\n function block(type) {\n if (type == \"}\") return cont();\n return pass(statement, block);\n }\n function maybetype(type, value) {\n if (isTS) {\n if (type == \":\") return cont(typeexpr);\n if (value == \"?\") return cont(maybetype);\n }\n }\n function maybetypeOrIn(type, value) {\n if (isTS && (type == \":\" || value == \"in\")) return cont(typeexpr)\n }\n function mayberettype(type) {\n if (isTS && type == \":\") {\n if (cx.stream.match(/^\\s*\\w+\\s+is\\b/, false)) return cont(expression, isKW, typeexpr)\n else return cont(typeexpr)\n }\n }\n function isKW(_, value) {\n if (value == \"is\") {\n cx.marked = \"keyword\"\n return cont()\n }\n }\n function typeexpr(type, value) {\n if (value == \"keyof\" || value == \"typeof\" || value == \"infer\" || value == \"readonly\") {\n cx.marked = \"keyword\"\n return cont(value == \"typeof\" ? expressionNoComma : typeexpr)\n }\n if (type == \"variable\" || value == \"void\") {\n cx.marked = \"type\"\n return cont(afterType)\n }\n if (value == \"|\" || value == \"&\") return cont(typeexpr)\n if (type == \"string\" || type == \"number\" || type == \"atom\") return cont(afterType);\n if (type == \"[\") return cont(pushlex(\"]\"), commasep(typeexpr, \"]\", \",\"), poplex, afterType)\n if (type == \"{\") return cont(pushlex(\"}\"), typeprops, poplex, afterType)\n if (type == \"(\") return cont(commasep(typearg, \")\"), maybeReturnType, afterType)\n if (type == \"<\") return cont(commasep(typeexpr, \">\"), typeexpr)\n if (type == \"quasi\") { return pass(quasiType, afterType); }\n }\n function maybeReturnType(type) {\n if (type == \"=>\") return cont(typeexpr)\n }\n function typeprops(type) {\n if (type.match(/[\\}\\)\\]]/)) return cont()\n if (type == \",\" || type == \";\") return cont(typeprops)\n return pass(typeprop, typeprops)\n }\n function typeprop(type, value) {\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\"\n return cont(typeprop)\n } else if (value == \"?\" || type == \"number\" || type == \"string\") {\n return cont(typeprop)\n } else if (type == \":\") {\n return cont(typeexpr)\n } else if (type == \"[\") {\n return cont(expect(\"variable\"), maybetypeOrIn, expect(\"]\"), typeprop)\n } else if (type == \"(\") {\n return pass(functiondecl, typeprop)\n } else if (!type.match(/[;\\}\\)\\],]/)) {\n return cont()\n }\n }\n function quasiType(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasiType);\n return cont(typeexpr, continueQuasiType);\n }\n function continueQuasiType(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasiType);\n }\n }\n function typearg(type, value) {\n if (type == \"variable\" && cx.stream.match(/^\\s*[?:]/, false) || value == \"?\") return cont(typearg)\n if (type == \":\") return cont(typeexpr)\n if (type == \"spread\") return cont(typearg)\n return pass(typeexpr)\n }\n function afterType(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n if (value == \"|\" || type == \".\" || value == \"&\") return cont(typeexpr)\n if (type == \"[\") return cont(typeexpr, expect(\"]\"), afterType)\n if (value == \"extends\" || value == \"implements\") { cx.marked = \"keyword\"; return cont(typeexpr) }\n if (value == \"?\") return cont(typeexpr, expect(\":\"), typeexpr)\n }\n function maybeTypeArgs(_, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n }\n function typeparam() {\n return pass(typeexpr, maybeTypeDefault)\n }\n function maybeTypeDefault(_, value) {\n if (value == \"=\") return cont(typeexpr)\n }\n function vardef(_, value) {\n if (value == \"enum\") {cx.marked = \"keyword\"; return cont(enumdef)}\n return pass(pattern, maybetype, maybeAssign, vardefCont);\n }\n function pattern(type, value) {\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(pattern) }\n if (type == \"variable\") { register(value); return cont(); }\n if (type == \"spread\") return cont(pattern);\n if (type == \"[\") return contCommasep(eltpattern, \"]\");\n if (type == \"{\") return contCommasep(proppattern, \"}\");\n }\n function proppattern(type, value) {\n if (type == \"variable\" && !cx.stream.match(/^\\s*:/, false)) {\n register(value);\n return cont(maybeAssign);\n }\n if (type == \"variable\") cx.marked = \"property\";\n if (type == \"spread\") return cont(pattern);\n if (type == \"}\") return pass();\n if (type == \"[\") return cont(expression, expect(']'), expect(':'), proppattern);\n return cont(expect(\":\"), pattern, maybeAssign);\n }\n function eltpattern() {\n return pass(pattern, maybeAssign)\n }\n function maybeAssign(_type, value) {\n if (value == \"=\") return cont(expressionNoComma);\n }\n function vardefCont(type) {\n if (type == \",\") return cont(vardef);\n }\n function maybeelse(type, value) {\n if (type == \"keyword b\" && value == \"else\") return cont(pushlex(\"form\", \"else\"), statement, poplex);\n }\n function forspec(type, value) {\n if (value == \"await\") return cont(forspec);\n if (type == \"(\") return cont(pushlex(\")\"), forspec1, poplex);\n }\n function forspec1(type) {\n if (type == \"var\") return cont(vardef, forspec2);\n if (type == \"variable\") return cont(forspec2);\n return pass(forspec2)\n }\n function forspec2(type, value) {\n if (type == \")\") return cont()\n if (type == \";\") return cont(forspec2)\n if (value == \"in\" || value == \"of\") { cx.marked = \"keyword\"; return cont(expression, forspec2) }\n return pass(expression, forspec2)\n }\n function functiondef(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondef);}\n if (type == \"variable\") {register(value); return cont(functiondef);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, statement, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondef)\n }\n function functiondecl(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondecl);}\n if (type == \"variable\") {register(value); return cont(functiondecl);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondecl)\n }\n function typename(type, value) {\n if (type == \"keyword\" || type == \"variable\") {\n cx.marked = \"type\"\n return cont(typename)\n } else if (value == \"<\") {\n return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex)\n }\n }\n function funarg(type, value) {\n if (value == \"@\") cont(expression, funarg)\n if (type == \"spread\") return cont(funarg);\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(funarg); }\n if (isTS && type == \"this\") return cont(maybetype, maybeAssign)\n return pass(pattern, maybetype, maybeAssign);\n }\n function classExpression(type, value) {\n // Class expressions may have an optional name.\n if (type == \"variable\") return className(type, value);\n return classNameAfter(type, value);\n }\n function className(type, value) {\n if (type == \"variable\") {register(value); return cont(classNameAfter);}\n }\n function classNameAfter(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, classNameAfter)\n if (value == \"extends\" || value == \"implements\" || (isTS && type == \",\")) {\n if (value == \"implements\") cx.marked = \"keyword\";\n return cont(isTS ? typeexpr : expression, classNameAfter);\n }\n if (type == \"{\") return cont(pushlex(\"}\"), classBody, poplex);\n }\n function classBody(type, value) {\n if (type == \"async\" ||\n (type == \"variable\" &&\n (value == \"static\" || value == \"get\" || value == \"set\" || (isTS && isModifier(value))) &&\n cx.stream.match(/^\\s+#?[\\w$\\xa1-\\uffff]/, false))) {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n return cont(classfield, classBody);\n }\n if (type == \"number\" || type == \"string\") return cont(classfield, classBody);\n if (type == \"[\")\n return cont(expression, maybetype, expect(\"]\"), classfield, classBody)\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (isTS && type == \"(\") return pass(functiondecl, classBody)\n if (type == \";\" || type == \",\") return cont(classBody);\n if (type == \"}\") return cont();\n if (value == \"@\") return cont(expression, classBody)\n }\n function classfield(type, value) {\n if (value == \"!\") return cont(classfield)\n if (value == \"?\") return cont(classfield)\n if (type == \":\") return cont(typeexpr, maybeAssign)\n if (value == \"=\") return cont(expressionNoComma)\n var context = cx.state.lexical.prev, isInterface = context && context.info == \"interface\"\n return pass(isInterface ? functiondecl : functiondef)\n }\n function afterExport(type, value) {\n if (value == \"*\") { cx.marked = \"keyword\"; return cont(maybeFrom, expect(\";\")); }\n if (value == \"default\") { cx.marked = \"keyword\"; return cont(expression, expect(\";\")); }\n if (type == \"{\") return cont(commasep(exportField, \"}\"), maybeFrom, expect(\";\"));\n return pass(statement);\n }\n function exportField(type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(expect(\"variable\")); }\n if (type == \"variable\") return pass(expressionNoComma, exportField);\n }\n function afterImport(type) {\n if (type == \"string\") return cont();\n if (type == \"(\") return pass(expression);\n if (type == \".\") return pass(maybeoperatorComma);\n return pass(importSpec, maybeMoreImports, maybeFrom);\n }\n function importSpec(type, value) {\n if (type == \"{\") return contCommasep(importSpec, \"}\");\n if (type == \"variable\") register(value);\n if (value == \"*\") cx.marked = \"keyword\";\n return cont(maybeAs);\n }\n function maybeMoreImports(type) {\n if (type == \",\") return cont(importSpec, maybeMoreImports)\n }\n function maybeAs(_type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(importSpec); }\n }\n function maybeFrom(_type, value) {\n if (value == \"from\") { cx.marked = \"keyword\"; return cont(expression); }\n }\n function arrayLiteral(type) {\n if (type == \"]\") return cont();\n return pass(commasep(expressionNoComma, \"]\"));\n }\n function enumdef() {\n return pass(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), commasep(enummember, \"}\"), poplex, poplex)\n }\n function enummember() {\n return pass(pattern, maybeAssign);\n }\n\n function isContinuedStatement(state, textAfter) {\n return state.lastType == \"operator\" || state.lastType == \",\" ||\n isOperatorChar.test(textAfter.charAt(0)) ||\n /[,.]/.test(textAfter.charAt(0));\n }\n\n function expressionAllowed(stream, state, backUp) {\n return state.tokenize == tokenBase &&\n /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\\[{}\\(,;:]|=>)$/.test(state.lastType) ||\n (state.lastType == \"quasi\" && /\\{\\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0))))\n }\n\n // Interface\n\n return {\n startState: function(basecolumn) {\n var state = {\n tokenize: tokenBase,\n lastType: \"sof\",\n cc: [],\n lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, \"block\", false),\n localVars: parserConfig.localVars,\n context: parserConfig.localVars && new Context(null, null, false),\n indented: basecolumn || 0\n };\n if (parserConfig.globalVars && typeof parserConfig.globalVars == \"object\")\n state.globalVars = parserConfig.globalVars;\n return state;\n },\n\n token: function(stream, state) {\n if (stream.sol()) {\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = false;\n state.indented = stream.indentation();\n findFatArrow(stream, state);\n }\n if (state.tokenize != tokenComment && stream.eatSpace()) return null;\n var style = state.tokenize(stream, state);\n if (type == \"comment\") return style;\n state.lastType = type == \"operator\" && (content == \"++\" || content == \"--\") ? \"incdec\" : type;\n return parseJS(state, style, type, content, stream);\n },\n\n indent: function(state, textAfter) {\n if (state.tokenize == tokenComment || state.tokenize == tokenQuasi) return CodeMirror.Pass;\n if (state.tokenize != tokenBase) return 0;\n var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, top\n // Kludge to prevent 'maybelse' from blocking lexical scope pops\n if (!/^\\s*else\\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {\n var c = state.cc[i];\n if (c == poplex) lexical = lexical.prev;\n else if (c != maybeelse && c != popcontext) break;\n }\n while ((lexical.type == \"stat\" || lexical.type == \"form\") &&\n (firstChar == \"}\" || ((top = state.cc[state.cc.length - 1]) &&\n (top == maybeoperatorComma || top == maybeoperatorNoComma) &&\n !/^[,\\.=+\\-*:?[\\(]/.test(textAfter))))\n lexical = lexical.prev;\n if (statementIndent && lexical.type == \")\" && lexical.prev.type == \"stat\")\n lexical = lexical.prev;\n var type = lexical.type, closing = firstChar == type;\n\n if (type == \"vardef\") return lexical.indented + (state.lastType == \"operator\" || state.lastType == \",\" ? lexical.info.length + 1 : 0);\n else if (type == \"form\" && firstChar == \"{\") return lexical.indented;\n else if (type == \"form\") return lexical.indented + indentUnit;\n else if (type == \"stat\")\n return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);\n else if (lexical.info == \"switch\" && !closing && parserConfig.doubleIndentSwitch != false)\n return lexical.indented + (/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 2 * indentUnit);\n else if (lexical.align) return lexical.column + (closing ? 0 : 1);\n else return lexical.indented + (closing ? 0 : indentUnit);\n },\n\n electricInput: /^\\s*(?:case .*?:|default:|\\{|\\})$/,\n blockCommentStart: jsonMode ? null : \"/*\",\n blockCommentEnd: jsonMode ? null : \"*/\",\n blockCommentContinue: jsonMode ? null : \" * \",\n lineComment: jsonMode ? null : \"//\",\n fold: \"brace\",\n closeBrackets: \"()[]{}''\\\"\\\"``\",\n\n helperType: jsonMode ? \"json\" : \"javascript\",\n jsonldMode: jsonldMode,\n jsonMode: jsonMode,\n\n expressionAllowed: expressionAllowed,\n\n skipExpression: function(state) {\n parseJS(state, \"atom\", \"atom\", \"true\", new CodeMirror.StringStream(\"\", 2, null))\n }\n };\n});\n\nCodeMirror.registerHelper(\"wordChars\", \"javascript\", /[\\w$]/);\n\nCodeMirror.defineMIME(\"text/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"text/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/x-javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/x-json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/manifest+json\", { name: \"javascript\", json: true })\nCodeMirror.defineMIME(\"application/ld+json\", { name: \"javascript\", jsonld: true });\nCodeMirror.defineMIME(\"text/typescript\", { name: \"javascript\", typescript: true });\nCodeMirror.defineMIME(\"application/typescript\", { name: \"javascript\", typescript: true });\n\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// Open simple dialogs on top of an editor. Relies on dialog.css.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n function dialogDiv(cm, template, bottom) {\n var wrap = cm.getWrapperElement();\n var dialog;\n dialog = wrap.appendChild(document.createElement(\"div\"));\n if (bottom)\n dialog.className = \"CodeMirror-dialog CodeMirror-dialog-bottom\";\n else\n dialog.className = \"CodeMirror-dialog CodeMirror-dialog-top\";\n\n if (typeof template == \"string\") {\n dialog.innerHTML = template;\n } else { // Assuming it's a detached DOM element.\n dialog.appendChild(template);\n }\n CodeMirror.addClass(wrap, 'dialog-opened');\n return dialog;\n }\n\n function closeNotification(cm, newVal) {\n if (cm.state.currentNotificationClose)\n cm.state.currentNotificationClose();\n cm.state.currentNotificationClose = newVal;\n }\n\n CodeMirror.defineExtension(\"openDialog\", function(template, callback, options) {\n if (!options) options = {};\n\n closeNotification(this, null);\n\n var dialog = dialogDiv(this, template, options.bottom);\n var closed = false, me = this;\n function close(newVal) {\n if (typeof newVal == 'string') {\n inp.value = newVal;\n } else {\n if (closed) return;\n closed = true;\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n me.focus();\n\n if (options.onClose) options.onClose(dialog);\n }\n }\n\n var inp = dialog.getElementsByTagName(\"input\")[0], button;\n if (inp) {\n inp.focus();\n\n if (options.value) {\n inp.value = options.value;\n if (options.selectValueOnOpen !== false) {\n inp.select();\n }\n }\n\n if (options.onInput)\n CodeMirror.on(inp, \"input\", function(e) { options.onInput(e, inp.value, close);});\n if (options.onKeyUp)\n CodeMirror.on(inp, \"keyup\", function(e) {options.onKeyUp(e, inp.value, close);});\n\n CodeMirror.on(inp, \"keydown\", function(e) {\n if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) { return; }\n if (e.keyCode == 27 || (options.closeOnEnter !== false && e.keyCode == 13)) {\n inp.blur();\n CodeMirror.e_stop(e);\n close();\n }\n if (e.keyCode == 13) callback(inp.value, e);\n });\n\n if (options.closeOnBlur !== false) CodeMirror.on(dialog, \"focusout\", function (evt) {\n if (evt.relatedTarget !== null) close();\n });\n } else if (button = dialog.getElementsByTagName(\"button\")[0]) {\n CodeMirror.on(button, \"click\", function() {\n close();\n me.focus();\n });\n\n if (options.closeOnBlur !== false) CodeMirror.on(button, \"blur\", close);\n\n button.focus();\n }\n return close;\n });\n\n CodeMirror.defineExtension(\"openConfirm\", function(template, callbacks, options) {\n closeNotification(this, null);\n var dialog = dialogDiv(this, template, options && options.bottom);\n var buttons = dialog.getElementsByTagName(\"button\");\n var closed = false, me = this, blurring = 1;\n function close() {\n if (closed) return;\n closed = true;\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n me.focus();\n }\n buttons[0].focus();\n for (var i = 0; i < buttons.length; ++i) {\n var b = buttons[i];\n (function(callback) {\n CodeMirror.on(b, \"click\", function(e) {\n CodeMirror.e_preventDefault(e);\n close();\n if (callback) callback(me);\n });\n })(callbacks[i]);\n CodeMirror.on(b, \"blur\", function() {\n --blurring;\n setTimeout(function() { if (blurring <= 0) close(); }, 200);\n });\n CodeMirror.on(b, \"focus\", function() { ++blurring; });\n }\n });\n\n /*\n * openNotification\n * Opens a notification, that can be closed with an optional timer\n * (default 5000ms timer) and always closes on click.\n *\n * If a notification is opened while another is opened, it will close the\n * currently opened one and open the new one immediately.\n */\n CodeMirror.defineExtension(\"openNotification\", function(template, options) {\n closeNotification(this, close);\n var dialog = dialogDiv(this, template, options && options.bottom);\n var closed = false, doneTimer;\n var duration = options && typeof options.duration !== \"undefined\" ? options.duration : 5000;\n\n function close() {\n if (closed) return;\n closed = true;\n clearTimeout(doneTimer);\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n }\n\n CodeMirror.on(dialog, 'click', function(e) {\n CodeMirror.e_preventDefault(e);\n close();\n });\n\n if (duration)\n doneTimer = setTimeout(close, duration);\n\n return close;\n });\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n CodeMirror.defineOption(\"placeholder\", \"\", function(cm, val, old) {\n var prev = old && old != CodeMirror.Init;\n if (val && !prev) {\n cm.on(\"blur\", onBlur);\n cm.on(\"change\", onChange);\n cm.on(\"swapDoc\", onChange);\n CodeMirror.on(cm.getInputField(), \"compositionupdate\", cm.state.placeholderCompose = function() { onComposition(cm) })\n onChange(cm);\n } else if (!val && prev) {\n cm.off(\"blur\", onBlur);\n cm.off(\"change\", onChange);\n cm.off(\"swapDoc\", onChange);\n CodeMirror.off(cm.getInputField(), \"compositionupdate\", cm.state.placeholderCompose)\n clearPlaceholder(cm);\n var wrapper = cm.getWrapperElement();\n wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\");\n }\n\n if (val && !cm.hasFocus()) onBlur(cm);\n });\n\n function clearPlaceholder(cm) {\n if (cm.state.placeholder) {\n cm.state.placeholder.parentNode.removeChild(cm.state.placeholder);\n cm.state.placeholder = null;\n }\n }\n function setPlaceholder(cm) {\n clearPlaceholder(cm);\n var elt = cm.state.placeholder = document.createElement(\"pre\");\n elt.style.cssText = \"height: 0; overflow: visible\";\n elt.style.direction = cm.getOption(\"direction\");\n elt.className = \"CodeMirror-placeholder CodeMirror-line-like\";\n var placeHolder = cm.getOption(\"placeholder\")\n if (typeof placeHolder == \"string\") placeHolder = document.createTextNode(placeHolder)\n elt.appendChild(placeHolder)\n cm.display.lineSpace.insertBefore(elt, cm.display.lineSpace.firstChild);\n }\n\n function onComposition(cm) {\n setTimeout(function() {\n var empty = false\n if (cm.lineCount() == 1) {\n var input = cm.getInputField()\n empty = input.nodeName == \"TEXTAREA\" ? !cm.getLine(0).length\n : !/[^\\u200b]/.test(input.querySelector(\".CodeMirror-line\").textContent)\n }\n if (empty) setPlaceholder(cm)\n else clearPlaceholder(cm)\n }, 20)\n }\n\n function onBlur(cm) {\n if (isEmpty(cm)) setPlaceholder(cm);\n }\n function onChange(cm) {\n var wrapper = cm.getWrapperElement(), empty = isEmpty(cm);\n wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\") + (empty ? \" CodeMirror-empty\" : \"\");\n\n if (empty) setPlaceholder(cm);\n else clearPlaceholder(cm);\n }\n\n function isEmpty(cm) {\n return (cm.lineCount() === 1) && (cm.getLine(0) === \"\");\n }\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n var defaults = {\n pairs: \"()[]{}''\\\"\\\"\",\n closeBefore: \")]}'\\\":;>\",\n triples: \"\",\n explode: \"[]{}\"\n };\n\n var Pos = CodeMirror.Pos;\n\n CodeMirror.defineOption(\"autoCloseBrackets\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.removeKeyMap(keyMap);\n cm.state.closeBrackets = null;\n }\n if (val) {\n ensureBound(getOption(val, \"pairs\"))\n cm.state.closeBrackets = val;\n cm.addKeyMap(keyMap);\n }\n });\n\n function getOption(conf, name) {\n if (name == \"pairs\" && typeof conf == \"string\") return conf;\n if (typeof conf == \"object\" && conf[name] != null) return conf[name];\n return defaults[name];\n }\n\n var keyMap = {Backspace: handleBackspace, Enter: handleEnter};\n function ensureBound(chars) {\n for (var i = 0; i < chars.length; i++) {\n var ch = chars.charAt(i), key = \"'\" + ch + \"'\"\n if (!keyMap[key]) keyMap[key] = handler(ch)\n }\n }\n ensureBound(defaults.pairs + \"`\")\n\n function handler(ch) {\n return function(cm) { return handleChar(cm, ch); };\n }\n\n function getConfig(cm) {\n var deflt = cm.state.closeBrackets;\n if (!deflt || deflt.override) return deflt;\n var mode = cm.getModeAt(cm.getCursor());\n return mode.closeBrackets || deflt;\n }\n\n function handleBackspace(cm) {\n var conf = getConfig(cm);\n if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var pairs = getOption(conf, \"pairs\");\n var ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) return CodeMirror.Pass;\n var around = charsAround(cm, ranges[i].head);\n if (!around || pairs.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n }\n for (var i = ranges.length - 1; i >= 0; i--) {\n var cur = ranges[i].head;\n cm.replaceRange(\"\", Pos(cur.line, cur.ch - 1), Pos(cur.line, cur.ch + 1), \"+delete\");\n }\n }\n\n function handleEnter(cm) {\n var conf = getConfig(cm);\n var explode = conf && getOption(conf, \"explode\");\n if (!explode || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) return CodeMirror.Pass;\n var around = charsAround(cm, ranges[i].head);\n if (!around || explode.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n }\n cm.operation(function() {\n var linesep = cm.lineSeparator() || \"\\n\";\n cm.replaceSelection(linesep + linesep, null);\n moveSel(cm, -1)\n ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n var line = ranges[i].head.line;\n cm.indentLine(line, null, true);\n cm.indentLine(line + 1, null, true);\n }\n });\n }\n\n function moveSel(cm, dir) {\n var newRanges = [], ranges = cm.listSelections(), primary = 0\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i]\n if (range.head == cm.getCursor()) primary = i\n var pos = range.head.ch || dir > 0 ? {line: range.head.line, ch: range.head.ch + dir} : {line: range.head.line - 1}\n newRanges.push({anchor: pos, head: pos})\n }\n cm.setSelections(newRanges, primary)\n }\n\n function contractSelection(sel) {\n var inverted = CodeMirror.cmpPos(sel.anchor, sel.head) > 0;\n return {anchor: new Pos(sel.anchor.line, sel.anchor.ch + (inverted ? -1 : 1)),\n head: new Pos(sel.head.line, sel.head.ch + (inverted ? 1 : -1))};\n }\n\n function handleChar(cm, ch) {\n var conf = getConfig(cm);\n if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var pairs = getOption(conf, \"pairs\");\n var pos = pairs.indexOf(ch);\n if (pos == -1) return CodeMirror.Pass;\n\n var closeBefore = getOption(conf,\"closeBefore\");\n\n var triples = getOption(conf, \"triples\");\n\n var identical = pairs.charAt(pos + 1) == ch;\n var ranges = cm.listSelections();\n var opening = pos % 2 == 0;\n\n var type;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i], cur = range.head, curType;\n var next = cm.getRange(cur, Pos(cur.line, cur.ch + 1));\n if (opening && !range.empty()) {\n curType = \"surround\";\n } else if ((identical || !opening) && next == ch) {\n if (identical && stringStartsAfter(cm, cur))\n curType = \"both\";\n else if (triples.indexOf(ch) >= 0 && cm.getRange(cur, Pos(cur.line, cur.ch + 3)) == ch + ch + ch)\n curType = \"skipThree\";\n else\n curType = \"skip\";\n } else if (identical && cur.ch > 1 && triples.indexOf(ch) >= 0 &&\n cm.getRange(Pos(cur.line, cur.ch - 2), cur) == ch + ch) {\n if (cur.ch > 2 && /\\bstring/.test(cm.getTokenTypeAt(Pos(cur.line, cur.ch - 2)))) return CodeMirror.Pass;\n curType = \"addFour\";\n } else if (identical) {\n var prev = cur.ch == 0 ? \" \" : cm.getRange(Pos(cur.line, cur.ch - 1), cur)\n if (!CodeMirror.isWordChar(next) && prev != ch && !CodeMirror.isWordChar(prev)) curType = \"both\";\n else return CodeMirror.Pass;\n } else if (opening && (next.length === 0 || /\\s/.test(next) || closeBefore.indexOf(next) > -1)) {\n curType = \"both\";\n } else {\n return CodeMirror.Pass;\n }\n if (!type) type = curType;\n else if (type != curType) return CodeMirror.Pass;\n }\n\n var left = pos % 2 ? pairs.charAt(pos - 1) : ch;\n var right = pos % 2 ? ch : pairs.charAt(pos + 1);\n cm.operation(function() {\n if (type == \"skip\") {\n moveSel(cm, 1)\n } else if (type == \"skipThree\") {\n moveSel(cm, 3)\n } else if (type == \"surround\") {\n var sels = cm.getSelections();\n for (var i = 0; i < sels.length; i++)\n sels[i] = left + sels[i] + right;\n cm.replaceSelections(sels, \"around\");\n sels = cm.listSelections().slice();\n for (var i = 0; i < sels.length; i++)\n sels[i] = contractSelection(sels[i]);\n cm.setSelections(sels);\n } else if (type == \"both\") {\n cm.replaceSelection(left + right, null);\n cm.triggerElectric(left + right);\n moveSel(cm, -1)\n } else if (type == \"addFour\") {\n cm.replaceSelection(left + left + left + left, \"before\");\n moveSel(cm, 1)\n }\n });\n }\n\n function charsAround(cm, pos) {\n var str = cm.getRange(Pos(pos.line, pos.ch - 1),\n Pos(pos.line, pos.ch + 1));\n return str.length == 2 ? str : null;\n }\n\n function stringStartsAfter(cm, pos) {\n var token = cm.getTokenAt(Pos(pos.line, pos.ch + 1))\n return /\\bstring/.test(token.type) && token.start == pos.ch &&\n (pos.ch == 0 || !/\\bstring/.test(cm.getTokenTypeAt(pos)))\n }\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n var ie_lt8 = /MSIE \\d/.test(navigator.userAgent) &&\n (document.documentMode == null || document.documentMode < 8);\n\n var Pos = CodeMirror.Pos;\n\n var matching = {\"(\": \")>\", \")\": \"(<\", \"[\": \"]>\", \"]\": \"[<\", \"{\": \"}>\", \"}\": \"{<\", \"<\": \">>\", \">\": \"<<\"};\n\n function bracketRegex(config) {\n return config && config.bracketRegex || /[(){}[\\]]/\n }\n\n function findMatchingBracket(cm, where, config) {\n var line = cm.getLineHandle(where.line), pos = where.ch - 1;\n var afterCursor = config && config.afterCursor\n if (afterCursor == null)\n afterCursor = /(^| )cm-fat-cursor($| )/.test(cm.getWrapperElement().className)\n var re = bracketRegex(config)\n\n // A cursor is defined as between two characters, but in vim command mode\n // (i.e. not insert mode), the cursor is visually represented as a\n // highlighted box on top of the 2nd character. Otherwise, we allow matches\n // from before or after the cursor.\n var match = (!afterCursor && pos >= 0 && re.test(line.text.charAt(pos)) && matching[line.text.charAt(pos)]) ||\n re.test(line.text.charAt(pos + 1)) && matching[line.text.charAt(++pos)];\n if (!match) return null;\n var dir = match.charAt(1) == \">\" ? 1 : -1;\n if (config && config.strict && (dir > 0) != (pos == where.ch)) return null;\n var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));\n\n var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style, config);\n if (found == null) return null;\n return {from: Pos(where.line, pos), to: found && found.pos,\n match: found && found.ch == match.charAt(0), forward: dir > 0};\n }\n\n // bracketRegex is used to specify which type of bracket to scan\n // should be a regexp, e.g. /[[\\]]/\n //\n // Note: If \"where\" is on an open bracket, then this bracket is ignored.\n //\n // Returns false when no bracket was found, null when it reached\n // maxScanLines and gave up\n function scanForBracket(cm, where, dir, style, config) {\n var maxScanLen = (config && config.maxScanLineLength) || 10000;\n var maxScanLines = (config && config.maxScanLines) || 1000;\n\n var stack = [];\n var re = bracketRegex(config)\n var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1)\n : Math.max(cm.firstLine() - 1, where.line - maxScanLines);\n for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {\n var line = cm.getLine(lineNo);\n if (!line) continue;\n var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1;\n if (line.length > maxScanLen) continue;\n if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);\n for (; pos != end; pos += dir) {\n var ch = line.charAt(pos);\n if (re.test(ch) && (style === undefined ||\n (cm.getTokenTypeAt(Pos(lineNo, pos + 1)) || \"\") == (style || \"\"))) {\n var match = matching[ch];\n if (match && (match.charAt(1) == \">\") == (dir > 0)) stack.push(ch);\n else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch};\n else stack.pop();\n }\n }\n }\n return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null;\n }\n\n function matchBrackets(cm, autoclear, config) {\n // Disable brace matching in long lines, since it'll cause hugely slow updates\n var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000,\n highlightNonMatching = config && config.highlightNonMatching;\n var marks = [], ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, config);\n if (match && (match.match || highlightNonMatching !== false) && cm.getLine(match.from.line).length <= maxHighlightLen) {\n var style = match.match ? \"CodeMirror-matchingbracket\" : \"CodeMirror-nonmatchingbracket\";\n marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style}));\n if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen)\n marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style}));\n }\n }\n\n if (marks.length) {\n // Kludge to work around the IE bug from issue #1193, where text\n // input stops going to the textarea whenever this fires.\n if (ie_lt8 && cm.state.focused) cm.focus();\n\n var clear = function() {\n cm.operation(function() {\n for (var i = 0; i < marks.length; i++) marks[i].clear();\n });\n };\n if (autoclear) setTimeout(clear, 800);\n else return clear;\n }\n }\n\n function doMatchBrackets(cm) {\n cm.operation(function() {\n if (cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n cm.state.matchBrackets.currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);\n });\n }\n\n function clearHighlighted(cm) {\n if (cm.state.matchBrackets && cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n }\n\n CodeMirror.defineOption(\"matchBrackets\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.off(\"cursorActivity\", doMatchBrackets);\n cm.off(\"focus\", doMatchBrackets)\n cm.off(\"blur\", clearHighlighted)\n clearHighlighted(cm);\n }\n if (val) {\n cm.state.matchBrackets = typeof val == \"object\" ? val : {};\n cm.on(\"cursorActivity\", doMatchBrackets);\n cm.on(\"focus\", doMatchBrackets)\n cm.on(\"blur\", clearHighlighted)\n }\n });\n\n CodeMirror.defineExtension(\"matchBrackets\", function() {matchBrackets(this, true);});\n CodeMirror.defineExtension(\"findMatchingBracket\", function(pos, config, oldConfig){\n // Backwards-compatibility kludge\n if (oldConfig || typeof config == \"boolean\") {\n if (!oldConfig) {\n config = config ? {strict: true} : null\n } else {\n oldConfig.strict = config\n config = oldConfig\n }\n }\n return findMatchingBracket(this, pos, config)\n });\n CodeMirror.defineExtension(\"scanForBracket\", function(pos, dir, style, config){\n return scanForBracket(this, pos, dir, style, config);\n });\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// declare global: DOMRect\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var HINT_ELEMENT_CLASS = \"CodeMirror-hint\";\n var ACTIVE_HINT_ELEMENT_CLASS = \"CodeMirror-hint-active\";\n\n // This is the old interface, kept around for now to stay\n // backwards-compatible.\n CodeMirror.showHint = function(cm, getHints, options) {\n if (!getHints) return cm.showHint(options);\n if (options && options.async) getHints.async = true;\n var newOpts = {hint: getHints};\n if (options) for (var prop in options) newOpts[prop] = options[prop];\n return cm.showHint(newOpts);\n };\n\n CodeMirror.defineExtension(\"showHint\", function(options) {\n options = parseOptions(this, this.getCursor(\"start\"), options);\n var selections = this.listSelections()\n if (selections.length > 1) return;\n // By default, don't allow completion when something is selected.\n // A hint function can have a `supportsSelection` property to\n // indicate that it can handle selections.\n if (this.somethingSelected()) {\n if (!options.hint.supportsSelection) return;\n // Don't try with cross-line selections\n for (var i = 0; i < selections.length; i++)\n if (selections[i].head.line != selections[i].anchor.line) return;\n }\n\n if (this.state.completionActive) this.state.completionActive.close();\n var completion = this.state.completionActive = new Completion(this, options);\n if (!completion.options.hint) return;\n\n CodeMirror.signal(this, \"startCompletion\", this);\n completion.update(true);\n });\n\n CodeMirror.defineExtension(\"closeHint\", function() {\n if (this.state.completionActive) this.state.completionActive.close()\n })\n\n function Completion(cm, options) {\n this.cm = cm;\n this.options = options;\n this.widget = null;\n this.debounce = 0;\n this.tick = 0;\n this.startPos = this.cm.getCursor(\"start\");\n this.startLen = this.cm.getLine(this.startPos.line).length - this.cm.getSelection().length;\n\n if (this.options.updateOnCursorActivity) {\n var self = this;\n cm.on(\"cursorActivity\", this.activityFunc = function() { self.cursorActivity(); });\n }\n }\n\n var requestAnimationFrame = window.requestAnimationFrame || function(fn) {\n return setTimeout(fn, 1000/60);\n };\n var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;\n\n Completion.prototype = {\n close: function() {\n if (!this.active()) return;\n this.cm.state.completionActive = null;\n this.tick = null;\n if (this.options.updateOnCursorActivity) {\n this.cm.off(\"cursorActivity\", this.activityFunc);\n }\n\n if (this.widget && this.data) CodeMirror.signal(this.data, \"close\");\n if (this.widget) this.widget.close();\n CodeMirror.signal(this.cm, \"endCompletion\", this.cm);\n },\n\n active: function() {\n return this.cm.state.completionActive == this;\n },\n\n pick: function(data, i) {\n var completion = data.list[i], self = this;\n this.cm.operation(function() {\n if (completion.hint)\n completion.hint(self.cm, data, completion);\n else\n self.cm.replaceRange(getText(completion), completion.from || data.from,\n completion.to || data.to, \"complete\");\n CodeMirror.signal(data, \"pick\", completion);\n self.cm.scrollIntoView();\n });\n if (this.options.closeOnPick) {\n this.close();\n }\n },\n\n cursorActivity: function() {\n if (this.debounce) {\n cancelAnimationFrame(this.debounce);\n this.debounce = 0;\n }\n\n var identStart = this.startPos;\n if(this.data) {\n identStart = this.data.from;\n }\n\n var pos = this.cm.getCursor(), line = this.cm.getLine(pos.line);\n if (pos.line != this.startPos.line || line.length - pos.ch != this.startLen - this.startPos.ch ||\n pos.ch < identStart.ch || this.cm.somethingSelected() ||\n (!pos.ch || this.options.closeCharacters.test(line.charAt(pos.ch - 1)))) {\n this.close();\n } else {\n var self = this;\n this.debounce = requestAnimationFrame(function() {self.update();});\n if (this.widget) this.widget.disable();\n }\n },\n\n update: function(first) {\n if (this.tick == null) return\n var self = this, myTick = ++this.tick\n fetchHints(this.options.hint, this.cm, this.options, function(data) {\n if (self.tick == myTick) self.finishUpdate(data, first)\n })\n },\n\n finishUpdate: function(data, first) {\n if (this.data) CodeMirror.signal(this.data, \"update\");\n\n var picked = (this.widget && this.widget.picked) || (first && this.options.completeSingle);\n if (this.widget) this.widget.close();\n\n this.data = data;\n\n if (data && data.list.length) {\n if (picked && data.list.length == 1) {\n this.pick(data, 0);\n } else {\n this.widget = new Widget(this, data);\n CodeMirror.signal(data, \"shown\");\n }\n }\n }\n };\n\n function parseOptions(cm, pos, options) {\n var editor = cm.options.hintOptions;\n var out = {};\n for (var prop in defaultOptions) out[prop] = defaultOptions[prop];\n if (editor) for (var prop in editor)\n if (editor[prop] !== undefined) out[prop] = editor[prop];\n if (options) for (var prop in options)\n if (options[prop] !== undefined) out[prop] = options[prop];\n if (out.hint.resolve) out.hint = out.hint.resolve(cm, pos)\n return out;\n }\n\n function getText(completion) {\n if (typeof completion == \"string\") return completion;\n else return completion.text;\n }\n\n function buildKeyMap(completion, handle) {\n var baseMap = {\n Up: function() {handle.moveFocus(-1);},\n Down: function() {handle.moveFocus(1);},\n PageUp: function() {handle.moveFocus(-handle.menuSize() + 1, true);},\n PageDown: function() {handle.moveFocus(handle.menuSize() - 1, true);},\n Home: function() {handle.setFocus(0);},\n End: function() {handle.setFocus(handle.length - 1);},\n Enter: handle.pick,\n Tab: handle.pick,\n Esc: handle.close\n };\n\n var mac = /Mac/.test(navigator.platform);\n\n if (mac) {\n baseMap[\"Ctrl-P\"] = function() {handle.moveFocus(-1);};\n baseMap[\"Ctrl-N\"] = function() {handle.moveFocus(1);};\n }\n\n var custom = completion.options.customKeys;\n var ourMap = custom ? {} : baseMap;\n function addBinding(key, val) {\n var bound;\n if (typeof val != \"string\")\n bound = function(cm) { return val(cm, handle); };\n // This mechanism is deprecated\n else if (baseMap.hasOwnProperty(val))\n bound = baseMap[val];\n else\n bound = val;\n ourMap[key] = bound;\n }\n if (custom)\n for (var key in custom) if (custom.hasOwnProperty(key))\n addBinding(key, custom[key]);\n var extra = completion.options.extraKeys;\n if (extra)\n for (var key in extra) if (extra.hasOwnProperty(key))\n addBinding(key, extra[key]);\n return ourMap;\n }\n\n function getHintElement(hintsElement, el) {\n while (el && el != hintsElement) {\n if (el.nodeName.toUpperCase() === \"LI\" && el.parentNode == hintsElement) return el;\n el = el.parentNode;\n }\n }\n\n function Widget(completion, data) {\n this.id = \"cm-complete-\" + Math.floor(Math.random(1e6))\n this.completion = completion;\n this.data = data;\n this.picked = false;\n var widget = this, cm = completion.cm;\n var ownerDocument = cm.getInputField().ownerDocument;\n var parentWindow = ownerDocument.defaultView || ownerDocument.parentWindow;\n\n var hints = this.hints = ownerDocument.createElement(\"ul\");\n hints.setAttribute(\"role\", \"listbox\")\n hints.setAttribute(\"aria-expanded\", \"true\")\n hints.id = this.id\n var theme = completion.cm.options.theme;\n hints.className = \"CodeMirror-hints \" + theme;\n this.selectedHint = data.selectedHint || 0;\n\n var completions = data.list;\n for (var i = 0; i < completions.length; ++i) {\n var elt = hints.appendChild(ownerDocument.createElement(\"li\")), cur = completions[i];\n var className = HINT_ELEMENT_CLASS + (i != this.selectedHint ? \"\" : \" \" + ACTIVE_HINT_ELEMENT_CLASS);\n if (cur.className != null) className = cur.className + \" \" + className;\n elt.className = className;\n if (i == this.selectedHint) elt.setAttribute(\"aria-selected\", \"true\")\n elt.id = this.id + \"-\" + i\n elt.setAttribute(\"role\", \"option\")\n if (cur.render) cur.render(elt, data, cur);\n else elt.appendChild(ownerDocument.createTextNode(cur.displayText || getText(cur)));\n elt.hintId = i;\n }\n\n var container = completion.options.container || ownerDocument.body;\n var pos = cm.cursorCoords(completion.options.alignWithWord ? data.from : null);\n var left = pos.left, top = pos.bottom, below = true;\n var offsetLeft = 0, offsetTop = 0;\n if (container !== ownerDocument.body) {\n // We offset the cursor position because left and top are relative to the offsetParent's top left corner.\n var isContainerPositioned = ['absolute', 'relative', 'fixed'].indexOf(parentWindow.getComputedStyle(container).position) !== -1;\n var offsetParent = isContainerPositioned ? container : container.offsetParent;\n var offsetParentPosition = offsetParent.getBoundingClientRect();\n var bodyPosition = ownerDocument.body.getBoundingClientRect();\n offsetLeft = (offsetParentPosition.left - bodyPosition.left - offsetParent.scrollLeft);\n offsetTop = (offsetParentPosition.top - bodyPosition.top - offsetParent.scrollTop);\n }\n hints.style.left = (left - offsetLeft) + \"px\";\n hints.style.top = (top - offsetTop) + \"px\";\n\n // If we're at the edge of the screen, then we want the menu to appear on the left of the cursor.\n var winW = parentWindow.innerWidth || Math.max(ownerDocument.body.offsetWidth, ownerDocument.documentElement.offsetWidth);\n var winH = parentWindow.innerHeight || Math.max(ownerDocument.body.offsetHeight, ownerDocument.documentElement.offsetHeight);\n container.appendChild(hints);\n cm.getInputField().setAttribute(\"aria-autocomplete\", \"list\")\n cm.getInputField().setAttribute(\"aria-owns\", this.id)\n cm.getInputField().setAttribute(\"aria-activedescendant\", this.id + \"-\" + this.selectedHint)\n\n var box = completion.options.moveOnOverlap ? hints.getBoundingClientRect() : new DOMRect();\n var scrolls = completion.options.paddingForScrollbar ? hints.scrollHeight > hints.clientHeight + 1 : false;\n\n // Compute in the timeout to avoid reflow on init\n var startScroll;\n setTimeout(function() { startScroll = cm.getScrollInfo(); });\n\n var overlapY = box.bottom - winH;\n if (overlapY > 0) { // Does not fit below\n var height = box.bottom - box.top, spaceAbove = box.top - (pos.bottom - pos.top) - 2\n if (winH - box.top < spaceAbove) { // More room at the top\n if (height > spaceAbove) hints.style.height = (height = spaceAbove) + \"px\";\n hints.style.top = ((top = pos.top - height) + offsetTop) + \"px\";\n below = false;\n } else {\n hints.style.height = (winH - box.top - 2) + \"px\";\n }\n }\n var overlapX = box.right - winW;\n if (scrolls) overlapX += cm.display.nativeBarWidth;\n if (overlapX > 0) {\n if (box.right - box.left > winW) {\n hints.style.width = (winW - 5) + \"px\";\n overlapX -= (box.right - box.left) - winW;\n }\n hints.style.left = (left = Math.max(pos.left - overlapX - offsetLeft, 0)) + \"px\";\n }\n if (scrolls) for (var node = hints.firstChild; node; node = node.nextSibling)\n node.style.paddingRight = cm.display.nativeBarWidth + \"px\"\n\n cm.addKeyMap(this.keyMap = buildKeyMap(completion, {\n moveFocus: function(n, avoidWrap) { widget.changeActive(widget.selectedHint + n, avoidWrap); },\n setFocus: function(n) { widget.changeActive(n); },\n menuSize: function() { return widget.screenAmount(); },\n length: completions.length,\n close: function() { completion.close(); },\n pick: function() { widget.pick(); },\n data: data\n }));\n\n if (completion.options.closeOnUnfocus) {\n var closingOnBlur;\n cm.on(\"blur\", this.onBlur = function() { closingOnBlur = setTimeout(function() { completion.close(); }, 100); });\n cm.on(\"focus\", this.onFocus = function() { clearTimeout(closingOnBlur); });\n }\n\n cm.on(\"scroll\", this.onScroll = function() {\n var curScroll = cm.getScrollInfo(), editor = cm.getWrapperElement().getBoundingClientRect();\n if (!startScroll) startScroll = cm.getScrollInfo();\n var newTop = top + startScroll.top - curScroll.top;\n var point = newTop - (parentWindow.pageYOffset || (ownerDocument.documentElement || ownerDocument.body).scrollTop);\n if (!below) point += hints.offsetHeight;\n if (point <= editor.top || point >= editor.bottom) return completion.close();\n hints.style.top = newTop + \"px\";\n hints.style.left = (left + startScroll.left - curScroll.left) + \"px\";\n });\n\n CodeMirror.on(hints, \"dblclick\", function(e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n if (t && t.hintId != null) {widget.changeActive(t.hintId); widget.pick();}\n });\n\n CodeMirror.on(hints, \"click\", function(e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n if (t && t.hintId != null) {\n widget.changeActive(t.hintId);\n if (completion.options.completeOnSingleClick) widget.pick();\n }\n });\n\n CodeMirror.on(hints, \"mousedown\", function() {\n setTimeout(function(){cm.focus();}, 20);\n });\n\n // The first hint doesn't need to be scrolled to on init\n var selectedHintRange = this.getSelectedHintRange();\n if (selectedHintRange.from !== 0 || selectedHintRange.to !== 0) {\n this.scrollToActive();\n }\n\n CodeMirror.signal(data, \"select\", completions[this.selectedHint], hints.childNodes[this.selectedHint]);\n return true;\n }\n\n Widget.prototype = {\n close: function() {\n if (this.completion.widget != this) return;\n this.completion.widget = null;\n if (this.hints.parentNode) this.hints.parentNode.removeChild(this.hints);\n this.completion.cm.removeKeyMap(this.keyMap);\n var input = this.completion.cm.getInputField()\n input.removeAttribute(\"aria-activedescendant\")\n input.removeAttribute(\"aria-owns\")\n\n var cm = this.completion.cm;\n if (this.completion.options.closeOnUnfocus) {\n cm.off(\"blur\", this.onBlur);\n cm.off(\"focus\", this.onFocus);\n }\n cm.off(\"scroll\", this.onScroll);\n },\n\n disable: function() {\n this.completion.cm.removeKeyMap(this.keyMap);\n var widget = this;\n this.keyMap = {Enter: function() { widget.picked = true; }};\n this.completion.cm.addKeyMap(this.keyMap);\n },\n\n pick: function() {\n this.completion.pick(this.data, this.selectedHint);\n },\n\n changeActive: function(i, avoidWrap) {\n if (i >= this.data.list.length)\n i = avoidWrap ? this.data.list.length - 1 : 0;\n else if (i < 0)\n i = avoidWrap ? 0 : this.data.list.length - 1;\n if (this.selectedHint == i) return;\n var node = this.hints.childNodes[this.selectedHint];\n if (node) {\n node.className = node.className.replace(\" \" + ACTIVE_HINT_ELEMENT_CLASS, \"\");\n node.removeAttribute(\"aria-selected\")\n }\n node = this.hints.childNodes[this.selectedHint = i];\n node.className += \" \" + ACTIVE_HINT_ELEMENT_CLASS;\n node.setAttribute(\"aria-selected\", \"true\")\n this.completion.cm.getInputField().setAttribute(\"aria-activedescendant\", node.id)\n this.scrollToActive()\n CodeMirror.signal(this.data, \"select\", this.data.list[this.selectedHint], node);\n },\n\n scrollToActive: function() {\n var selectedHintRange = this.getSelectedHintRange();\n var node1 = this.hints.childNodes[selectedHintRange.from];\n var node2 = this.hints.childNodes[selectedHintRange.to];\n var firstNode = this.hints.firstChild;\n if (node1.offsetTop < this.hints.scrollTop)\n this.hints.scrollTop = node1.offsetTop - firstNode.offsetTop;\n else if (node2.offsetTop + node2.offsetHeight > this.hints.scrollTop + this.hints.clientHeight)\n this.hints.scrollTop = node2.offsetTop + node2.offsetHeight - this.hints.clientHeight + firstNode.offsetTop;\n },\n\n screenAmount: function() {\n return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1;\n },\n\n getSelectedHintRange: function() {\n var margin = this.completion.options.scrollMargin || 0;\n return {\n from: Math.max(0, this.selectedHint - margin),\n to: Math.min(this.data.list.length - 1, this.selectedHint + margin),\n };\n }\n };\n\n function applicableHelpers(cm, helpers) {\n if (!cm.somethingSelected()) return helpers\n var result = []\n for (var i = 0; i < helpers.length; i++)\n if (helpers[i].supportsSelection) result.push(helpers[i])\n return result\n }\n\n function fetchHints(hint, cm, options, callback) {\n if (hint.async) {\n hint(cm, callback, options)\n } else {\n var result = hint(cm, options)\n if (result && result.then) result.then(callback)\n else callback(result)\n }\n }\n\n function resolveAutoHints(cm, pos) {\n var helpers = cm.getHelpers(pos, \"hint\"), words\n if (helpers.length) {\n var resolved = function(cm, callback, options) {\n var app = applicableHelpers(cm, helpers);\n function run(i) {\n if (i == app.length) return callback(null)\n fetchHints(app[i], cm, options, function(result) {\n if (result && result.list.length > 0) callback(result)\n else run(i + 1)\n })\n }\n run(0)\n }\n resolved.async = true\n resolved.supportsSelection = true\n return resolved\n } else if (words = cm.getHelper(cm.getCursor(), \"hintWords\")) {\n return function(cm) { return CodeMirror.hint.fromList(cm, {words: words}) }\n } else if (CodeMirror.hint.anyword) {\n return function(cm, options) { return CodeMirror.hint.anyword(cm, options) }\n } else {\n return function() {}\n }\n }\n\n CodeMirror.registerHelper(\"hint\", \"auto\", {\n resolve: resolveAutoHints\n });\n\n CodeMirror.registerHelper(\"hint\", \"fromList\", function(cm, options) {\n var cur = cm.getCursor(), token = cm.getTokenAt(cur)\n var term, from = CodeMirror.Pos(cur.line, token.start), to = cur\n if (token.start < cur.ch && /\\w/.test(token.string.charAt(cur.ch - token.start - 1))) {\n term = token.string.substr(0, cur.ch - token.start)\n } else {\n term = \"\"\n from = cur\n }\n var found = [];\n for (var i = 0; i < options.words.length; i++) {\n var word = options.words[i];\n if (word.slice(0, term.length) == term)\n found.push(word);\n }\n\n if (found.length) return {list: found, from: from, to: to};\n });\n\n CodeMirror.commands.autocomplete = CodeMirror.showHint;\n\n var defaultOptions = {\n hint: CodeMirror.hint.auto,\n completeSingle: true,\n alignWithWord: true,\n closeCharacters: /[\\s()\\[\\]{};:>,]/,\n closeOnPick: true,\n closeOnUnfocus: true,\n updateOnCursorActivity: true,\n completeOnSingleClick: true,\n container: null,\n customKeys: null,\n extraKeys: null,\n paddingForScrollbar: true,\n moveOnOverlap: true,\n };\n\n CodeMirror.defineOption(\"hintOptions\", null);\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// Defines jumpToLine command. Uses dialog.js if present.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../dialog/dialog\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../dialog/dialog\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n // default search panel location\n CodeMirror.defineOption(\"search\", {bottom: false});\n\n function dialog(cm, text, shortText, deflt, f) {\n if (cm.openDialog) cm.openDialog(text, f, {value: deflt, selectValueOnOpen: true, bottom: cm.options.search.bottom});\n else f(prompt(shortText, deflt));\n }\n\n function getJumpDialog(cm) {\n return cm.phrase(\"Jump to line:\") + ' ' + cm.phrase(\"(Use line:column or scroll% syntax)\") + '';\n }\n\n function interpretLine(cm, string) {\n var num = Number(string)\n if (/^[-+]/.test(string)) return cm.getCursor().line + num\n else return num - 1\n }\n\n CodeMirror.commands.jumpToLine = function(cm) {\n var cur = cm.getCursor();\n dialog(cm, getJumpDialog(cm), cm.phrase(\"Jump to line:\"), (cur.line + 1) + \":\" + cur.ch, function(posStr) {\n if (!posStr) return;\n\n var match;\n if (match = /^\\s*([\\+\\-]?\\d+)\\s*\\:\\s*(\\d+)\\s*$/.exec(posStr)) {\n cm.setCursor(interpretLine(cm, match[1]), Number(match[2]))\n } else if (match = /^\\s*([\\+\\-]?\\d+(\\.\\d+)?)\\%\\s*/.exec(posStr)) {\n var line = Math.round(cm.lineCount() * Number(match[1]) / 100);\n if (/^[-+]/.test(match[1])) line = cur.line + line + 1;\n cm.setCursor(line - 1, cur.ch);\n } else if (match = /^\\s*\\:?\\s*([\\+\\-]?\\d+)\\s*/.exec(posStr)) {\n cm.setCursor(interpretLine(cm, match[1]), cur.ch);\n }\n });\n };\n\n CodeMirror.keyMap[\"default\"][\"Alt-G\"] = \"jumpToLine\";\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"))\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod)\n else // Plain browser env\n mod(CodeMirror)\n})(function(CodeMirror) {\n \"use strict\"\n var Pos = CodeMirror.Pos\n\n function regexpFlags(regexp) {\n var flags = regexp.flags\n return flags != null ? flags : (regexp.ignoreCase ? \"i\" : \"\")\n + (regexp.global ? \"g\" : \"\")\n + (regexp.multiline ? \"m\" : \"\")\n }\n\n function ensureFlags(regexp, flags) {\n var current = regexpFlags(regexp), target = current\n for (var i = 0; i < flags.length; i++) if (target.indexOf(flags.charAt(i)) == -1)\n target += flags.charAt(i)\n return current == target ? regexp : new RegExp(regexp.source, target)\n }\n\n function maybeMultiline(regexp) {\n return /\\\\s|\\\\n|\\n|\\\\W|\\\\D|\\[\\^/.test(regexp.source)\n }\n\n function searchRegexpForward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\")\n for (var line = start.line, ch = start.ch, last = doc.lastLine(); line <= last; line++, ch = 0) {\n regexp.lastIndex = ch\n var string = doc.getLine(line), match = regexp.exec(string)\n if (match)\n return {from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match}\n }\n }\n\n function searchRegexpForwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpForward(doc, regexp, start)\n\n regexp = ensureFlags(regexp, \"gm\")\n var string, chunk = 1\n for (var line = start.line, last = doc.lastLine(); line <= last;) {\n // This grows the search buffer in exponentially-sized chunks\n // between matches, so that nearby matches are fast and don't\n // require concatenating the whole document (in case we're\n // searching for something that has tons of matches), but at the\n // same time, the amount of retries is limited.\n for (var i = 0; i < chunk; i++) {\n if (line > last) break\n var curLine = doc.getLine(line++)\n string = string == null ? curLine : string + \"\\n\" + curLine\n }\n chunk = chunk * 2\n regexp.lastIndex = start.ch\n var match = regexp.exec(string)\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"), inside = match[0].split(\"\\n\")\n var startLine = start.line + before.length - 1, startCh = before[before.length - 1].length\n return {from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1,\n inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match}\n }\n }\n }\n\n function lastMatchIn(string, regexp, endMargin) {\n var match, from = 0\n while (from <= string.length) {\n regexp.lastIndex = from\n var newMatch = regexp.exec(string)\n if (!newMatch) break\n var end = newMatch.index + newMatch[0].length\n if (end > string.length - endMargin) break\n if (!match || end > match.index + match[0].length)\n match = newMatch\n from = newMatch.index + 1\n }\n return match\n }\n\n function searchRegexpBackward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\")\n for (var line = start.line, ch = start.ch, first = doc.firstLine(); line >= first; line--, ch = -1) {\n var string = doc.getLine(line)\n var match = lastMatchIn(string, regexp, ch < 0 ? 0 : string.length - ch)\n if (match)\n return {from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match}\n }\n }\n\n function searchRegexpBackwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpBackward(doc, regexp, start)\n regexp = ensureFlags(regexp, \"gm\")\n var string, chunkSize = 1, endMargin = doc.getLine(start.line).length - start.ch\n for (var line = start.line, first = doc.firstLine(); line >= first;) {\n for (var i = 0; i < chunkSize && line >= first; i++) {\n var curLine = doc.getLine(line--)\n string = string == null ? curLine : curLine + \"\\n\" + string\n }\n chunkSize *= 2\n\n var match = lastMatchIn(string, regexp, endMargin)\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"), inside = match[0].split(\"\\n\")\n var startLine = line + before.length, startCh = before[before.length - 1].length\n return {from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1,\n inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match}\n }\n }\n }\n\n var doFold, noFold\n if (String.prototype.normalize) {\n doFold = function(str) { return str.normalize(\"NFD\").toLowerCase() }\n noFold = function(str) { return str.normalize(\"NFD\") }\n } else {\n doFold = function(str) { return str.toLowerCase() }\n noFold = function(str) { return str }\n }\n\n // Maps a position in a case-folded line back to a position in the original line\n // (compensating for codepoints increasing in number during folding)\n function adjustPos(orig, folded, pos, foldFunc) {\n if (orig.length == folded.length) return pos\n for (var min = 0, max = pos + Math.max(0, orig.length - folded.length);;) {\n if (min == max) return min\n var mid = (min + max) >> 1\n var len = foldFunc(orig.slice(0, mid)).length\n if (len == pos) return mid\n else if (len > pos) max = mid\n else min = mid + 1\n }\n }\n\n function searchStringForward(doc, query, start, caseFold) {\n // Empty string would match anything and never progress, so we\n // define it to match nothing instead.\n if (!query.length) return null\n var fold = caseFold ? doFold : noFold\n var lines = fold(query).split(/\\r|\\n\\r?/)\n\n search: for (var line = start.line, ch = start.ch, last = doc.lastLine() + 1 - lines.length; line <= last; line++, ch = 0) {\n var orig = doc.getLine(line).slice(ch), string = fold(orig)\n if (lines.length == 1) {\n var found = string.indexOf(lines[0])\n if (found == -1) continue search\n var start = adjustPos(orig, string, found, fold) + ch\n return {from: Pos(line, adjustPos(orig, string, found, fold) + ch),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold) + ch)}\n } else {\n var cutFrom = string.length - lines[0].length\n if (string.slice(cutFrom) != lines[0]) continue search\n for (var i = 1; i < lines.length - 1; i++)\n if (fold(doc.getLine(line + i)) != lines[i]) continue search\n var end = doc.getLine(line + lines.length - 1), endString = fold(end), lastLine = lines[lines.length - 1]\n if (endString.slice(0, lastLine.length) != lastLine) continue search\n return {from: Pos(line, adjustPos(orig, string, cutFrom, fold) + ch),\n to: Pos(line + lines.length - 1, adjustPos(end, endString, lastLine.length, fold))}\n }\n }\n }\n\n function searchStringBackward(doc, query, start, caseFold) {\n if (!query.length) return null\n var fold = caseFold ? doFold : noFold\n var lines = fold(query).split(/\\r|\\n\\r?/)\n\n search: for (var line = start.line, ch = start.ch, first = doc.firstLine() - 1 + lines.length; line >= first; line--, ch = -1) {\n var orig = doc.getLine(line)\n if (ch > -1) orig = orig.slice(0, ch)\n var string = fold(orig)\n if (lines.length == 1) {\n var found = string.lastIndexOf(lines[0])\n if (found == -1) continue search\n return {from: Pos(line, adjustPos(orig, string, found, fold)),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold))}\n } else {\n var lastLine = lines[lines.length - 1]\n if (string.slice(0, lastLine.length) != lastLine) continue search\n for (var i = 1, start = line - lines.length + 1; i < lines.length - 1; i++)\n if (fold(doc.getLine(start + i)) != lines[i]) continue search\n var top = doc.getLine(line + 1 - lines.length), topString = fold(top)\n if (topString.slice(topString.length - lines[0].length) != lines[0]) continue search\n return {from: Pos(line + 1 - lines.length, adjustPos(top, topString, top.length - lines[0].length, fold)),\n to: Pos(line, adjustPos(orig, string, lastLine.length, fold))}\n }\n }\n }\n\n function SearchCursor(doc, query, pos, options) {\n this.atOccurrence = false\n this.afterEmptyMatch = false\n this.doc = doc\n pos = pos ? doc.clipPos(pos) : Pos(0, 0)\n this.pos = {from: pos, to: pos}\n\n var caseFold\n if (typeof options == \"object\") {\n caseFold = options.caseFold\n } else { // Backwards compat for when caseFold was the 4th argument\n caseFold = options\n options = null\n }\n\n if (typeof query == \"string\") {\n if (caseFold == null) caseFold = false\n this.matches = function(reverse, pos) {\n return (reverse ? searchStringBackward : searchStringForward)(doc, query, pos, caseFold)\n }\n } else {\n query = ensureFlags(query, \"gm\")\n if (!options || options.multiline !== false)\n this.matches = function(reverse, pos) {\n return (reverse ? searchRegexpBackwardMultiline : searchRegexpForwardMultiline)(doc, query, pos)\n }\n else\n this.matches = function(reverse, pos) {\n return (reverse ? searchRegexpBackward : searchRegexpForward)(doc, query, pos)\n }\n }\n }\n\n SearchCursor.prototype = {\n findNext: function() {return this.find(false)},\n findPrevious: function() {return this.find(true)},\n\n find: function(reverse) {\n var head = this.doc.clipPos(reverse ? this.pos.from : this.pos.to);\n if (this.afterEmptyMatch && this.atOccurrence) {\n // do not return the same 0 width match twice\n head = Pos(head.line, head.ch)\n if (reverse) {\n head.ch--;\n if (head.ch < 0) {\n head.line--;\n head.ch = (this.doc.getLine(head.line) || \"\").length;\n }\n } else {\n head.ch++;\n if (head.ch > (this.doc.getLine(head.line) || \"\").length) {\n head.ch = 0;\n head.line++;\n }\n }\n if (CodeMirror.cmpPos(head, this.doc.clipPos(head)) != 0) {\n return this.atOccurrence = false\n }\n }\n var result = this.matches(reverse, head)\n this.afterEmptyMatch = result && CodeMirror.cmpPos(result.from, result.to) == 0\n\n if (result) {\n this.pos = result\n this.atOccurrence = true\n return this.pos.match || true\n } else {\n var end = Pos(reverse ? this.doc.firstLine() : this.doc.lastLine() + 1, 0)\n this.pos = {from: end, to: end}\n return this.atOccurrence = false\n }\n },\n\n from: function() {if (this.atOccurrence) return this.pos.from},\n to: function() {if (this.atOccurrence) return this.pos.to},\n\n replace: function(newText, origin) {\n if (!this.atOccurrence) return\n var lines = CodeMirror.splitLines(newText)\n this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin)\n this.pos.to = Pos(this.pos.from.line + lines.length - 1,\n lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0))\n }\n }\n\n CodeMirror.defineExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this.doc, query, pos, caseFold)\n })\n CodeMirror.defineDocExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this, query, pos, caseFold)\n })\n\n CodeMirror.defineExtension(\"selectMatches\", function(query, caseFold) {\n var ranges = []\n var cur = this.getSearchCursor(query, this.getCursor(\"from\"), caseFold)\n while (cur.findNext()) {\n if (CodeMirror.cmpPos(cur.to(), this.getCursor(\"to\")) > 0) break\n ranges.push({anchor: cur.from(), head: cur.to()})\n }\n if (ranges.length)\n this.setSelections(ranges, 0)\n })\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// Define search commands. Depends on dialog.js or another\n// implementation of the openDialog method.\n\n// Replace works a little oddly -- it will do the replace on the next\n// Ctrl-G (or whatever is bound to findNext) press. You prevent a\n// replace by making sure the match is no longer selected when hitting\n// Ctrl-G.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"./searchcursor\"), require(\"../dialog/dialog\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"./searchcursor\", \"../dialog/dialog\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n // default search panel location\n CodeMirror.defineOption(\"search\", {bottom: false});\n\n function searchOverlay(query, caseInsensitive) {\n if (typeof query == \"string\")\n query = new RegExp(query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\"), caseInsensitive ? \"gi\" : \"g\");\n else if (!query.global)\n query = new RegExp(query.source, query.ignoreCase ? \"gi\" : \"g\");\n\n return {token: function(stream) {\n query.lastIndex = stream.pos;\n var match = query.exec(stream.string);\n if (match && match.index == stream.pos) {\n stream.pos += match[0].length || 1;\n return \"searching\";\n } else if (match) {\n stream.pos = match.index;\n } else {\n stream.skipToEnd();\n }\n }};\n }\n\n function SearchState() {\n this.posFrom = this.posTo = this.lastQuery = this.query = null;\n this.overlay = null;\n }\n\n function getSearchState(cm) {\n return cm.state.search || (cm.state.search = new SearchState());\n }\n\n function queryCaseInsensitive(query) {\n return typeof query == \"string\" && query == query.toLowerCase();\n }\n\n function getSearchCursor(cm, query, pos) {\n // Heuristic: if the query string is all lowercase, do a case insensitive search.\n return cm.getSearchCursor(query, pos, {caseFold: queryCaseInsensitive(query), multiline: true});\n }\n\n function persistentDialog(cm, text, deflt, onEnter, onKeyDown) {\n cm.openDialog(text, onEnter, {\n value: deflt,\n selectValueOnOpen: true,\n closeOnEnter: false,\n onClose: function() { clearSearch(cm); },\n onKeyDown: onKeyDown,\n bottom: cm.options.search.bottom\n });\n }\n\n function dialog(cm, text, shortText, deflt, f) {\n if (cm.openDialog) cm.openDialog(text, f, {value: deflt, selectValueOnOpen: true, bottom: cm.options.search.bottom});\n else f(prompt(shortText, deflt));\n }\n\n function confirmDialog(cm, text, shortText, fs) {\n if (cm.openConfirm) cm.openConfirm(text, fs);\n else if (confirm(shortText)) fs[0]();\n }\n\n function parseString(string) {\n return string.replace(/\\\\([nrt\\\\])/g, function(match, ch) {\n if (ch == \"n\") return \"\\n\"\n if (ch == \"r\") return \"\\r\"\n if (ch == \"t\") return \"\\t\"\n if (ch == \"\\\\\") return \"\\\\\"\n return match\n })\n }\n\n function parseQuery(query) {\n var isRE = query.match(/^\\/(.*)\\/([a-z]*)$/);\n if (isRE) {\n try { query = new RegExp(isRE[1], isRE[2].indexOf(\"i\") == -1 ? \"\" : \"i\"); }\n catch(e) {} // Not a regular expression after all, do a string search\n } else {\n query = parseString(query)\n }\n if (typeof query == \"string\" ? query == \"\" : query.test(\"\"))\n query = /x^/;\n return query;\n }\n\n function startSearch(cm, state, query) {\n state.queryText = query;\n state.query = parseQuery(query);\n cm.removeOverlay(state.overlay, queryCaseInsensitive(state.query));\n state.overlay = searchOverlay(state.query, queryCaseInsensitive(state.query));\n cm.addOverlay(state.overlay);\n if (cm.showMatchesOnScrollbar) {\n if (state.annotate) { state.annotate.clear(); state.annotate = null; }\n state.annotate = cm.showMatchesOnScrollbar(state.query, queryCaseInsensitive(state.query));\n }\n }\n\n function doSearch(cm, rev, persistent, immediate) {\n var state = getSearchState(cm);\n if (state.query) return findNext(cm, rev);\n var q = cm.getSelection() || state.lastQuery;\n if (q instanceof RegExp && q.source == \"x^\") q = null\n if (persistent && cm.openDialog) {\n var hiding = null\n var searchNext = function(query, event) {\n CodeMirror.e_stop(event);\n if (!query) return;\n if (query != state.queryText) {\n startSearch(cm, state, query);\n state.posFrom = state.posTo = cm.getCursor();\n }\n if (hiding) hiding.style.opacity = 1\n findNext(cm, event.shiftKey, function(_, to) {\n var dialog\n if (to.line < 3 && document.querySelector &&\n (dialog = cm.display.wrapper.querySelector(\".CodeMirror-dialog\")) &&\n dialog.getBoundingClientRect().bottom - 4 > cm.cursorCoords(to, \"window\").top)\n (hiding = dialog).style.opacity = .4\n })\n };\n persistentDialog(cm, getQueryDialog(cm), q, searchNext, function(event, query) {\n var keyName = CodeMirror.keyName(event)\n var extra = cm.getOption('extraKeys'), cmd = (extra && extra[keyName]) || CodeMirror.keyMap[cm.getOption(\"keyMap\")][keyName]\n if (cmd == \"findNext\" || cmd == \"findPrev\" ||\n cmd == \"findPersistentNext\" || cmd == \"findPersistentPrev\") {\n CodeMirror.e_stop(event);\n startSearch(cm, getSearchState(cm), query);\n cm.execCommand(cmd);\n } else if (cmd == \"find\" || cmd == \"findPersistent\") {\n CodeMirror.e_stop(event);\n searchNext(query, event);\n }\n });\n if (immediate && q) {\n startSearch(cm, state, q);\n findNext(cm, rev);\n }\n } else {\n dialog(cm, getQueryDialog(cm), \"Search for:\", q, function(query) {\n if (query && !state.query) cm.operation(function() {\n startSearch(cm, state, query);\n state.posFrom = state.posTo = cm.getCursor();\n findNext(cm, rev);\n });\n });\n }\n }\n\n function findNext(cm, rev, callback) {cm.operation(function() {\n var state = getSearchState(cm);\n var cursor = getSearchCursor(cm, state.query, rev ? state.posFrom : state.posTo);\n if (!cursor.find(rev)) {\n cursor = getSearchCursor(cm, state.query, rev ? CodeMirror.Pos(cm.lastLine()) : CodeMirror.Pos(cm.firstLine(), 0));\n if (!cursor.find(rev)) return;\n }\n cm.setSelection(cursor.from(), cursor.to());\n cm.scrollIntoView({from: cursor.from(), to: cursor.to()}, 20);\n state.posFrom = cursor.from(); state.posTo = cursor.to();\n if (callback) callback(cursor.from(), cursor.to())\n });}\n\n function clearSearch(cm) {cm.operation(function() {\n var state = getSearchState(cm);\n state.lastQuery = state.query;\n if (!state.query) return;\n state.query = state.queryText = null;\n cm.removeOverlay(state.overlay);\n if (state.annotate) { state.annotate.clear(); state.annotate = null; }\n });}\n\n function el(tag, attrs) {\n var element = tag ? document.createElement(tag) : document.createDocumentFragment();\n for (var key in attrs) {\n element[key] = attrs[key];\n }\n for (var i = 2; i < arguments.length; i++) {\n var child = arguments[i]\n element.appendChild(typeof child == \"string\" ? document.createTextNode(child) : child);\n }\n return element;\n }\n\n function getQueryDialog(cm) {\n var label = el(\"label\", {className: \"CodeMirror-search-label\"},\n cm.phrase(\"Search:\"),\n el(\"input\", {type: \"text\", \"style\": \"width: 10em\", className: \"CodeMirror-search-field\",\n id: \"CodeMirror-search-field\"}));\n label.setAttribute(\"for\",\"CodeMirror-search-field\");\n return el(\"\", null, label, \" \",\n el(\"span\", {style: \"color: #666\", className: \"CodeMirror-search-hint\"},\n cm.phrase(\"(Use /re/ syntax for regexp search)\")));\n }\n function getReplaceQueryDialog(cm) {\n return el(\"\", null, \" \",\n el(\"input\", {type: \"text\", \"style\": \"width: 10em\", className: \"CodeMirror-search-field\"}), \" \",\n el(\"span\", {style: \"color: #666\", className: \"CodeMirror-search-hint\"},\n cm.phrase(\"(Use /re/ syntax for regexp search)\")));\n }\n function getReplacementQueryDialog(cm) {\n return el(\"\", null,\n el(\"span\", {className: \"CodeMirror-search-label\"}, cm.phrase(\"With:\")), \" \",\n el(\"input\", {type: \"text\", \"style\": \"width: 10em\", className: \"CodeMirror-search-field\"}));\n }\n function getDoReplaceConfirm(cm) {\n return el(\"\", null,\n el(\"span\", {className: \"CodeMirror-search-label\"}, cm.phrase(\"Replace?\")), \" \",\n el(\"button\", {}, cm.phrase(\"Yes\")), \" \",\n el(\"button\", {}, cm.phrase(\"No\")), \" \",\n el(\"button\", {}, cm.phrase(\"All\")), \" \",\n el(\"button\", {}, cm.phrase(\"Stop\")));\n }\n\n function replaceAll(cm, query, text) {\n cm.operation(function() {\n for (var cursor = getSearchCursor(cm, query); cursor.findNext();) {\n if (typeof query != \"string\") {\n var match = cm.getRange(cursor.from(), cursor.to()).match(query);\n cursor.replace(text.replace(/\\$(\\d)/g, function(_, i) {return match[i];}));\n } else cursor.replace(text);\n }\n });\n }\n\n function replace(cm, all) {\n if (cm.getOption(\"readOnly\")) return;\n var query = cm.getSelection() || getSearchState(cm).lastQuery;\n var dialogText = all ? cm.phrase(\"Replace all:\") : cm.phrase(\"Replace:\")\n var fragment = el(\"\", null,\n el(\"span\", {className: \"CodeMirror-search-label\"}, dialogText),\n getReplaceQueryDialog(cm))\n dialog(cm, fragment, dialogText, query, function(query) {\n if (!query) return;\n query = parseQuery(query);\n dialog(cm, getReplacementQueryDialog(cm), cm.phrase(\"Replace with:\"), \"\", function(text) {\n text = parseString(text)\n if (all) {\n replaceAll(cm, query, text)\n } else {\n clearSearch(cm);\n var cursor = getSearchCursor(cm, query, cm.getCursor(\"from\"));\n var advance = function() {\n var start = cursor.from(), match;\n if (!(match = cursor.findNext())) {\n cursor = getSearchCursor(cm, query);\n if (!(match = cursor.findNext()) ||\n (start && cursor.from().line == start.line && cursor.from().ch == start.ch)) return;\n }\n cm.setSelection(cursor.from(), cursor.to());\n cm.scrollIntoView({from: cursor.from(), to: cursor.to()});\n confirmDialog(cm, getDoReplaceConfirm(cm), cm.phrase(\"Replace?\"),\n [function() {doReplace(match);}, advance,\n function() {replaceAll(cm, query, text)}]);\n };\n var doReplace = function(match) {\n cursor.replace(typeof query == \"string\" ? text :\n text.replace(/\\$(\\d)/g, function(_, i) {return match[i];}));\n advance();\n };\n advance();\n }\n });\n });\n }\n\n CodeMirror.commands.find = function(cm) {clearSearch(cm); doSearch(cm);};\n CodeMirror.commands.findPersistent = function(cm) {clearSearch(cm); doSearch(cm, false, true);};\n CodeMirror.commands.findPersistentNext = function(cm) {doSearch(cm, false, true, true);};\n CodeMirror.commands.findPersistentPrev = function(cm) {doSearch(cm, true, true, true);};\n CodeMirror.commands.findNext = doSearch;\n CodeMirror.commands.findPrev = function(cm) {doSearch(cm, true);};\n CodeMirror.commands.clearSearch = clearSearch;\n CodeMirror.commands.replace = replace;\n CodeMirror.commands.replaceAll = function(cm) {replace(cm, true);};\n});\n", null, "export default function(x) {\n return function constant() {\n return x;\n };\n}\n", "export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n", "const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We\u2019re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n", "export {Path, path, pathRound} from \"./path.js\";\n", "import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n", "import constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\nimport {withPath} from \"./path.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null,\n path = withPath(arc);\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 \u2265 r0, da1 \u2265 da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle. If this\n // intersection fails, it\u2019s probably because the arc is too small, so\n // disable the corner radius entirely.\n if (da < pi) {\n if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n } else {\n rc0 = rc1 = 0;\n }\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector\u2019s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it\u2019s a circular sector?\n // Or perhaps it\u2019s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector\u2019s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n", "export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n", "function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n", "export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n", "import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n", "import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n var x1 = null,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(area);\n\n x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n function area(data) {\n var i,\n j,\n k,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n", "export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n", "export default function(d) {\n return d;\n}\n", "import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = (data = array(data)).length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n", "import curveLinear from \"./linear.js\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nexport default function curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n", "import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport line from \"./line.js\";\n\nexport function lineRadial(l) {\n var c = l.curve;\n\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n\n l.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return l;\n}\n\nexport default function() {\n return lineRadial(line().curve(curveRadialLinear));\n}\n", "import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport area from \"./area.js\";\nimport {lineRadial} from \"./lineRadial.js\";\n\nexport default function() {\n var a = area().curve(curveRadialLinear),\n c = a.curve,\n x0 = a.lineX0,\n x1 = a.lineX1,\n y0 = a.lineY0,\n y1 = a.lineY1;\n\n a.angle = a.x, delete a.x;\n a.startAngle = a.x0, delete a.x0;\n a.endAngle = a.x1, delete a.x1;\n a.radius = a.y, delete a.y;\n a.innerRadius = a.y0, delete a.y0;\n a.outerRadius = a.y1, delete a.y1;\n a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n a.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return a;\n}\n", "export default function(x, y) {\n return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n", "import pointRadial from \"../pointRadial.js\";\n\nclass Bump {\n constructor(context, x) {\n this._context = context;\n this._x = x;\n }\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n }\n point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: {\n this._point = 1;\n if (this._line) this._context.lineTo(x, y);\n else this._context.moveTo(x, y);\n break;\n }\n case 1: this._point = 2; // falls through\n default: {\n if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);\n else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y);\n break;\n }\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nclass BumpRadial {\n constructor(context) {\n this._context = context;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {}\n point(x, y) {\n x = +x, y = +y;\n if (this._point === 0) {\n this._point = 1;\n } else {\n const p0 = pointRadial(this._x0, this._y0);\n const p1 = pointRadial(this._x0, this._y0 = (this._y0 + y) / 2);\n const p2 = pointRadial(x, this._y0);\n const p3 = pointRadial(x, y);\n this._context.moveTo(...p0);\n this._context.bezierCurveTo(...p1, ...p2, ...p3);\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nexport function bumpX(context) {\n return new Bump(context, true);\n}\n\nexport function bumpY(context) {\n return new Bump(context, false);\n}\n\nexport function bumpRadial(context) {\n return new BumpRadial(context);\n}\n", "import {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport {bumpX, bumpY, bumpRadial} from \"./curve/bump.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nexport function link(curve) {\n let source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null,\n output = null,\n path = withPath(link);\n\n function link() {\n let buffer;\n const argv = slice.call(arguments);\n const s = source.apply(this, argv);\n const t = target.apply(this, argv);\n if (context == null) output = curve(buffer = path());\n output.lineStart();\n argv[0] = s, output.point(+x.apply(this, argv), +y.apply(this, argv));\n argv[0] = t, output.point(+x.apply(this, argv), +y.apply(this, argv));\n output.lineEnd();\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), link) : context;\n };\n\n return link;\n}\n\nexport function linkHorizontal() {\n return link(bumpX);\n}\n\nexport function linkVertical() {\n return link(bumpY);\n}\n\nexport function linkRadial() {\n const l = link(bumpRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n", "import {min, sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n draw(context, size) {\n const r = sqrt(size + min(size / 28, 0.75)) * 0.59436;\n const t = r / 2;\n const u = t * sqrt3;\n context.moveTo(0, r);\n context.lineTo(0, -r);\n context.moveTo(-u, -t);\n context.lineTo(u, t);\n context.moveTo(-u, t);\n context.lineTo(u, -t);\n }\n};\n", "import {pi, sqrt, tau} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n", "import {sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n", "import {sqrt} from \"../math.js\";\n\nconst tan30 = sqrt(1 / 3);\nconst tan30_2 = tan30 * 2;\n\nexport default {\n draw(context, size) {\n const y = sqrt(size / tan30_2);\n const x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n", "import {sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size) * 0.62625;\n context.moveTo(0, -r);\n context.lineTo(r, 0);\n context.lineTo(0, r);\n context.lineTo(-r, 0);\n context.closePath();\n }\n};\n", "import {min, sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size - min(size / 7, 2)) * 0.87559;\n context.moveTo(-r, 0);\n context.lineTo(r, 0);\n context.moveTo(0, r);\n context.lineTo(0, -r);\n }\n};\n", "import {sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const w = sqrt(size);\n const x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n", "import {sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size) * 0.4431;\n context.moveTo(r, r);\n context.lineTo(r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, r);\n context.closePath();\n }\n};\n", "import {sin, cos, sqrt, pi, tau} from \"../math.js\";\n\nconst ka = 0.89081309152928522810;\nconst kr = sin(pi / 10) / sin(7 * pi / 10);\nconst kx = sin(tau / 10) * kr;\nconst ky = -cos(tau / 10) * kr;\n\nexport default {\n draw(context, size) {\n const r = sqrt(size * ka);\n const x = kx * r;\n const y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (let i = 1; i < 5; ++i) {\n const a = tau * i / 5;\n const c = cos(a);\n const s = sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n", "import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n draw(context, size) {\n const y = -sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n", "import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n draw(context, size) {\n const s = sqrt(size) * 0.6824;\n const t = s / 2;\n const u = (s * sqrt3) / 2; // cos(Math.PI / 6)\n context.moveTo(0, -s);\n context.lineTo(u, t);\n context.lineTo(-u, t);\n context.closePath();\n }\n};\n", "import {sqrt} from \"../math.js\";\n\nconst c = -0.5;\nconst s = sqrt(3) / 2;\nconst k = 1 / sqrt(12);\nconst a = (k / 2 + 1) * 3;\n\nexport default {\n draw(context, size) {\n const r = sqrt(size / a);\n const x0 = r / 2, y0 = r * k;\n const x1 = x0, y1 = r * k + r;\n const x2 = -x1, y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n", "import {min, sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size - min(size / 6, 1.7)) * 0.6189;\n context.moveTo(-r, -r);\n context.lineTo(r, r);\n context.moveTo(-r, r);\n context.lineTo(r, -r);\n }\n};\n", "import constant from \"./constant.js\";\nimport {withPath} from \"./path.js\";\nimport asterisk from \"./symbol/asterisk.js\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport diamond2 from \"./symbol/diamond2.js\";\nimport plus from \"./symbol/plus.js\";\nimport square from \"./symbol/square.js\";\nimport square2 from \"./symbol/square2.js\";\nimport star from \"./symbol/star.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport triangle2 from \"./symbol/triangle2.js\";\nimport wye from \"./symbol/wye.js\";\nimport times from \"./symbol/times.js\";\n\n// These symbols are designed to be filled.\nexport const symbolsFill = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\n// These symbols are designed to be stroked (with a width of 1.5px and round caps).\nexport const symbolsStroke = [\n circle,\n plus,\n times,\n triangle2,\n asterisk,\n square2,\n diamond2\n];\n\nexport default function Symbol(type, size) {\n let context = null,\n path = withPath(symbol);\n\n type = typeof type === \"function\" ? type : constant(type || circle);\n size = typeof size === \"function\" ? size : constant(size === undefined ? 64 : +size);\n\n function symbol() {\n let buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n", "export default function() {}\n", "export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // falls through\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n", "import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n", "import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n", "import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n", "export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n", "import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n", "import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n", "import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // falls through\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n", "import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n", "import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n", "import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n", "function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic B\u00E9zier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n", "function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n", "function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n", "export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n", "export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n", "import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nfunction stackSeries(key) {\n const series = [];\n series.key = key;\n return series;\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var sz = Array.from(keys.apply(this, arguments), stackSeries),\n i, n = sz.length, j = -1,\n oz;\n\n for (const d of data) {\n for (i = 0, ++j; i < n; ++i) {\n (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d;\n }\n }\n\n for (i = 0, oz = array(order(sz)); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n", "import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n", "export default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n for (yp = yn = 0, i = 0; i < n; ++i) {\n if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {\n d[0] = yp, d[1] = yp += dy;\n } else if (dy < 0) {\n d[1] = yn, d[0] = yn += dy;\n } else {\n d[0] = 0, d[1] = dy;\n }\n }\n }\n}\n", "import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n", "import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n", "import none from \"./none.js\";\n\nexport default function(series) {\n var peaks = series.map(peak);\n return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n return j;\n}\n", "import none from \"./none.js\";\n\nexport default function(series) {\n var sums = series.map(sum);\n return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n var s = 0, i = -1, n = series.length, v;\n while (++i < n) if (v = +series[i][1]) s += v;\n return s;\n}\n", "import ascending from \"./ascending.js\";\n\nexport default function(series) {\n return ascending(series).reverse();\n}\n", "import appearance from \"./appearance.js\";\nimport {sum} from \"./ascending.js\";\n\nexport default function(series) {\n var n = series.length,\n i,\n j,\n sums = series.map(sum),\n order = appearance(series),\n top = 0,\n bottom = 0,\n tops = [],\n bottoms = [];\n\n for (i = 0; i < n; ++i) {\n j = order[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n\n return bottoms.reverse().concat(tops);\n}\n", "import none from \"./none.js\";\n\nexport default function(series) {\n return none(series).reverse();\n}\n", "export {default as arc} from \"./arc.js\";\nexport {default as area} from \"./area.js\";\nexport {default as line} from \"./line.js\";\nexport {default as pie} from \"./pie.js\";\nexport {default as areaRadial, default as radialArea} from \"./areaRadial.js\"; // Note: radialArea is deprecated!\nexport {default as lineRadial, default as radialLine} from \"./lineRadial.js\"; // Note: radialLine is deprecated!\nexport {default as pointRadial} from \"./pointRadial.js\";\nexport {link, linkHorizontal, linkVertical, linkRadial} from \"./link.js\";\n\nexport {default as symbol, symbolsStroke, symbolsFill, symbolsFill as symbols} from \"./symbol.js\";\nexport {default as symbolAsterisk} from \"./symbol/asterisk.js\";\nexport {default as symbolCircle} from \"./symbol/circle.js\";\nexport {default as symbolCross} from \"./symbol/cross.js\";\nexport {default as symbolDiamond} from \"./symbol/diamond.js\";\nexport {default as symbolDiamond2} from \"./symbol/diamond2.js\";\nexport {default as symbolPlus} from \"./symbol/plus.js\";\nexport {default as symbolSquare} from \"./symbol/square.js\";\nexport {default as symbolSquare2} from \"./symbol/square2.js\";\nexport {default as symbolStar} from \"./symbol/star.js\";\nexport {default as symbolTriangle} from \"./symbol/triangle.js\";\nexport {default as symbolTriangle2} from \"./symbol/triangle2.js\";\nexport {default as symbolWye} from \"./symbol/wye.js\";\nexport {default as symbolTimes, default as symbolX} from \"./symbol/times.js\";\n\nexport {default as curveBasisClosed} from \"./curve/basisClosed.js\";\nexport {default as curveBasisOpen} from \"./curve/basisOpen.js\";\nexport {default as curveBasis} from \"./curve/basis.js\";\nexport {bumpX as curveBumpX, bumpY as curveBumpY} from \"./curve/bump.js\";\nexport {default as curveBundle} from \"./curve/bundle.js\";\nexport {default as curveCardinalClosed} from \"./curve/cardinalClosed.js\";\nexport {default as curveCardinalOpen} from \"./curve/cardinalOpen.js\";\nexport {default as curveCardinal} from \"./curve/cardinal.js\";\nexport {default as curveCatmullRomClosed} from \"./curve/catmullRomClosed.js\";\nexport {default as curveCatmullRomOpen} from \"./curve/catmullRomOpen.js\";\nexport {default as curveCatmullRom} from \"./curve/catmullRom.js\";\nexport {default as curveLinearClosed} from \"./curve/linearClosed.js\";\nexport {default as curveLinear} from \"./curve/linear.js\";\nexport {monotoneX as curveMonotoneX, monotoneY as curveMonotoneY} from \"./curve/monotone.js\";\nexport {default as curveNatural} from \"./curve/natural.js\";\nexport {default as curveStep, stepAfter as curveStepAfter, stepBefore as curveStepBefore} from \"./curve/step.js\";\n\nexport {default as stack} from \"./stack.js\";\nexport {default as stackOffsetExpand} from \"./offset/expand.js\";\nexport {default as stackOffsetDiverging} from \"./offset/diverging.js\";\nexport {default as stackOffsetNone} from \"./offset/none.js\";\nexport {default as stackOffsetSilhouette} from \"./offset/silhouette.js\";\nexport {default as stackOffsetWiggle} from \"./offset/wiggle.js\";\nexport {default as stackOrderAppearance} from \"./order/appearance.js\";\nexport {default as stackOrderAscending} from \"./order/ascending.js\";\nexport {default as stackOrderDescending} from \"./order/descending.js\";\nexport {default as stackOrderInsideOut} from \"./order/insideOut.js\";\nexport {default as stackOrderNone} from \"./order/none.js\";\nexport {default as stackOrderReverse} from \"./order/reverse.js\";\n", "export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, \u00B1Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n", "export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n", "export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n", "// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n", "// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n", "import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n", "export default function(x) {\n return x;\n}\n", "import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"\u00B5\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"\u2212\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer \u201Cvalue\u201D part that can be\n // grouped, and fractional or exponential \u201Csuffix\u201D part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n", "import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n", "import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n", "import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n", "import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n", "export {default as formatDefaultLocale, format, formatPrefix} from \"./defaultLocale.js\";\nexport {default as formatLocale} from \"./locale.js\";\nexport {default as formatSpecifier, FormatSpecifier} from \"./formatSpecifier.js\";\nexport {default as precisionFixed} from \"./precisionFixed.js\";\nexport {default as precisionPrefix} from \"./precisionPrefix.js\";\nexport {default as precisionRound} from \"./precisionRound.js\";\n", "export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n", "export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n", "import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can\u2019t do this\n // for a comparator (except for specific, known comparators) because we can\u2019t\n // tell if the comparator is symmetric, and an asymmetric comparator can\u2019t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n", "export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n", "import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n", "export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n", "import ascending from \"./ascending.js\";\nimport permute from \"./permute.js\";\n\nexport default function sort(values, ...F) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n values = Array.from(values);\n let [f] = F;\n if ((f && f.length !== 2) || F.length > 1) {\n const index = Uint32Array.from(values, (d, i) => i);\n if (F.length > 1) {\n F = F.map(f => values.map(f));\n index.sort((i, j) => {\n for (const f of F) {\n const c = ascendingDefined(f[i], f[j]);\n if (c) return c;\n }\n });\n } else {\n f = values.map(f);\n index.sort((i, j) => ascendingDefined(f[i], f[j]));\n }\n return permute(values, index);\n }\n return values.sort(compareDefined(f));\n}\n\nexport function compareDefined(compare = ascending) {\n if (compare === ascending) return ascendingDefined;\n if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n return (a, b) => {\n const x = compare(a, b);\n if (x || x === 0) return x;\n return (compare(b, b) === 0) - (compare(a, a) === 0);\n };\n}\n\nexport function ascendingDefined(a, b) {\n return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}\n", "const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n", "export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n", "export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n", "import {ascendingDefined, compareDefined} from \"./sort.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = Infinity, compare) {\n k = Math.floor(k);\n left = Math.floor(Math.max(0, left));\n right = Math.floor(Math.min(array.length - 1, right));\n\n if (!(left <= k && k <= right)) return array;\n\n compare = compare === undefined ? ascendingDefined : compareDefined(compare);\n\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(array, k, newLeft, newRight, compare);\n }\n\n const t = array[k];\n let i = left;\n let j = right;\n\n swap(array, left, k);\n if (compare(array[right], t) > 0) swap(array, left, right);\n\n while (i < j) {\n swap(array, i, j), ++i, --j;\n while (compare(array[i], t) < 0) ++i;\n while (compare(array[j], t) > 0) --j;\n }\n\n if (compare(array[left], t) === 0) swap(array, left, j);\n else ++j, swap(array, j, right);\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n\n return array;\n}\n\nfunction swap(array, i, j) {\n const t = array[i];\n array[i] = array[j];\n array[j] = t;\n}\n", "import max from \"./max.js\";\nimport maxIndex from \"./maxIndex.js\";\nimport min from \"./min.js\";\nimport minIndex from \"./minIndex.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\nimport {ascendingDefined} from \"./sort.js\";\nimport greatest from \"./greatest.js\";\n\nexport default function quantile(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return min(values);\n if (p >= 1) return max(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n value1 = min(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileIndex(values, p, valueof = number) {\n if (isNaN(p = +p)) return;\n numbers = Float64Array.from(values, (_, i) => number(valueof(values[i], i, values)));\n if (p <= 0) return minIndex(numbers);\n if (p >= 1) return maxIndex(numbers);\n var numbers,\n index = Uint32Array.from(values, (_, i) => i),\n j = numbers.length - 1,\n i = Math.floor(j * p);\n quickselect(index, i, 0, j, (i, j) => ascendingDefined(numbers[i], numbers[j]));\n i = greatest(index.subarray(0, i + 1), (i) => numbers[i]);\n return i >= 0 ? i : -1;\n}\n", "export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n", "export {default as bisect, bisectRight, bisectLeft, bisectCenter} from \"./bisect.js\";\nexport {default as ascending} from \"./ascending.js\";\nexport {default as bisector} from \"./bisector.js\";\nexport {blur, blur2, blurImage} from \"./blur.js\";\nexport {default as count} from \"./count.js\";\nexport {default as cross} from \"./cross.js\";\nexport {default as cumsum} from \"./cumsum.js\";\nexport {default as descending} from \"./descending.js\";\nexport {default as deviation} from \"./deviation.js\";\nexport {default as extent} from \"./extent.js\";\nexport {Adder, fsum, fcumsum} from \"./fsum.js\";\nexport {default as group, flatGroup, flatRollup, groups, index, indexes, rollup, rollups} from \"./group.js\";\nexport {default as groupSort} from \"./groupSort.js\";\nexport {default as bin, default as histogram} from \"./bin.js\"; // Deprecated; use bin.\nexport {default as thresholdFreedmanDiaconis} from \"./threshold/freedmanDiaconis.js\";\nexport {default as thresholdScott} from \"./threshold/scott.js\";\nexport {default as thresholdSturges} from \"./threshold/sturges.js\";\nexport {default as max} from \"./max.js\";\nexport {default as maxIndex} from \"./maxIndex.js\";\nexport {default as mean} from \"./mean.js\";\nexport {default as median, medianIndex} from \"./median.js\";\nexport {default as merge} from \"./merge.js\";\nexport {default as min} from \"./min.js\";\nexport {default as minIndex} from \"./minIndex.js\";\nexport {default as mode} from \"./mode.js\";\nexport {default as nice} from \"./nice.js\";\nexport {default as pairs} from \"./pairs.js\";\nexport {default as permute} from \"./permute.js\";\nexport {default as quantile, quantileIndex, quantileSorted} from \"./quantile.js\";\nexport {default as quickselect} from \"./quickselect.js\";\nexport {default as range} from \"./range.js\";\nexport {default as rank} from \"./rank.js\";\nexport {default as least} from \"./least.js\";\nexport {default as leastIndex} from \"./leastIndex.js\";\nexport {default as greatest} from \"./greatest.js\";\nexport {default as greatestIndex} from \"./greatestIndex.js\";\nexport {default as scan} from \"./scan.js\"; // Deprecated; use leastIndex.\nexport {default as shuffle, shuffler} from \"./shuffle.js\";\nexport {default as sum} from \"./sum.js\";\nexport {default as ticks, tickIncrement, tickStep} from \"./ticks.js\";\nexport {default as transpose} from \"./transpose.js\";\nexport {default as variance} from \"./variance.js\";\nexport {default as zip} from \"./zip.js\";\nexport {default as every} from \"./every.js\";\nexport {default as some} from \"./some.js\";\nexport {default as filter} from \"./filter.js\";\nexport {default as map} from \"./map.js\";\nexport {default as reduce} from \"./reduce.js\";\nexport {default as reverse} from \"./reverse.js\";\nexport {default as sort} from \"./sort.js\";\nexport {default as difference} from \"./difference.js\";\nexport {default as disjoint} from \"./disjoint.js\";\nexport {default as intersection} from \"./intersection.js\";\nexport {default as subset} from \"./subset.js\";\nexport {default as superset} from \"./superset.js\";\nexport {default as union} from \"./union.js\";\nexport {InternMap, InternSet} from \"internmap\";\n", "export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n", "import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n", "import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 1,\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function(_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), [r0, r1])\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n", "export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n", "import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n", "export const radians = Math.PI / 180;\nexport const degrees = 180 / Math.PI;\n", "import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * degrees;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * radians;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb() {\n return hcl2lab(this).rgb();\n }\n}));\n", "import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * degrees - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * radians,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n", "export {default as color, rgb, hsl} from \"./color.js\";\nexport {default as lab, hcl, lch, gray} from \"./lab.js\";\nexport {default as cubehelix} from \"./cubehelix.js\";\n", "export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n", "import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n", "export default x => () => x;\n", "import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n", "import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n", "export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n", "import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n", "export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n", "export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n", "import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n", "import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n", "import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n", "export default function(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n", "import {hue} from \"./color.js\";\n\nexport default function(a, b) {\n var i = hue(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}\n", "export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n", "var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n", "import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n", "import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n", "var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 \u2245 u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\n", "import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n", "import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n", "import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n", "import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n", "import {default as value} from \"./value.js\";\n\nexport default function piecewise(interpolate, values) {\n if (values === undefined) values = interpolate, interpolate = value;\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n", "export default function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\n", "export {default as interpolate} from \"./value.js\";\nexport {default as interpolateArray} from \"./array.js\";\nexport {default as interpolateBasis} from \"./basis.js\";\nexport {default as interpolateBasisClosed} from \"./basisClosed.js\";\nexport {default as interpolateDate} from \"./date.js\";\nexport {default as interpolateDiscrete} from \"./discrete.js\";\nexport {default as interpolateHue} from \"./hue.js\";\nexport {default as interpolateNumber} from \"./number.js\";\nexport {default as interpolateNumberArray} from \"./numberArray.js\";\nexport {default as interpolateObject} from \"./object.js\";\nexport {default as interpolateRound} from \"./round.js\";\nexport {default as interpolateString} from \"./string.js\";\nexport {interpolateTransformCss, interpolateTransformSvg} from \"./transform/index.js\";\nexport {default as interpolateZoom} from \"./zoom.js\";\nexport {default as interpolateRgb, rgbBasis as interpolateRgbBasis, rgbBasisClosed as interpolateRgbBasisClosed} from \"./rgb.js\";\nexport {default as interpolateHsl, hslLong as interpolateHslLong} from \"./hsl.js\";\nexport {default as interpolateLab} from \"./lab.js\";\nexport {default as interpolateHcl, hclLong as interpolateHclLong} from \"./hcl.js\";\nexport {default as interpolateCubehelix, cubehelixLong as interpolateCubehelixLong} from \"./cubehelix.js\";\nexport {default as piecewise} from \"./piecewise.js\";\nexport {default as quantize} from \"./quantize.js\";\n", "export default function constants(x) {\n return function() {\n return x;\n };\n}\n", "export default function number(x) {\n return +x;\n}\n", "import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n", "import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n", "import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n", "import {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = Array.from(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? Array.from(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n", "export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n", "import {ticks} from \"d3-array\";\nimport {format, formatSpecifier} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : x => Math.pow(base, x);\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), x => Math.log(x) / base);\n}\n\nfunction reflect(f) {\n return (x, k) => -f(-x, k);\n}\n\nexport function loggish(transform) {\n const scale = transform(transformLog, transformExp);\n const domain = scale.domain;\n let base = 10;\n let logs;\n let pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = count => {\n const d = domain();\n let u = d[0];\n let v = d[d.length - 1];\n const r = v < u;\n\n if (r) ([u, v] = [v, u]);\n\n let i = logs(u);\n let j = logs(v);\n let k;\n let t;\n const n = count == null ? 10 : +count;\n let z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.floor(i), j = Math.ceil(j);\n if (u > 0) for (; i <= j; ++i) {\n for (k = 1; k < base; ++k) {\n t = i < 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i <= j; ++i) {\n for (k = base - 1; k >= 1; --k) {\n t = i > 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n if (z.length * 2 < n) z = ticks(u, v, n);\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = (count, specifier) => {\n if (count == null) count = 10;\n if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n if (typeof specifier !== \"function\") {\n if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true;\n specifier = format(specifier);\n }\n if (count === Infinity) return specifier;\n const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return d => {\n let i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = () => {\n return domain(nice(domain(), {\n floor: x => pows(Math.floor(logs(x))),\n ceil: x => pows(Math.ceil(logs(x)))\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n const scale = loggish(transformer()).domain([1, 10]);\n scale.copy = () => copy(scale, log()).base(scale.base());\n initRange.apply(scale, arguments);\n return scale;\n}\n", "import {linearish} from \"./linear.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n", "import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n", "import continuous from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nfunction square(x) {\n return Math.sign(x) * x * x;\n}\n\nfunction unsquare(x) {\n return Math.sign(x) * Math.sqrt(Math.abs(x));\n}\n\nexport default function radial() {\n var squared = continuous(),\n range = [0, 1],\n round = false,\n unknown;\n\n function scale(x) {\n var y = unsquare(squared(x));\n return isNaN(y) ? unknown : round ? Math.round(y) : y;\n }\n\n scale.invert = function(y) {\n return squared.invert(square(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (squared.domain(_), scale) : squared.domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (squared.range((range = Array.from(_, number)).map(square)), scale) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return scale.range(_).round(true);\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, scale) : round;\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (squared.clamp(_), scale) : squared.clamp();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return radial(squared.domain(), range)\n .round(round)\n .clamp(squared.clamp())\n .unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n", "import {ascending, bisect, quantileSorted as threshold} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n", "import {bisect} from \"d3-array\";\nimport {linearish} from \"./linear.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n", "import {bisect} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n", "const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n", "import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval((date) => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\n\nexport const milliseconds = millisecond.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n return (end - start) / durationSecond;\n}, (date) => {\n return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n return timeInterval((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return timeInterval((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek;\n });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n", "import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n", "import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport const utcYears = utcYear.range;\n", "import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n", "export {\n timeInterval\n} from \"./interval.js\";\n\nexport {\n millisecond as utcMillisecond,\n milliseconds as utcMilliseconds,\n millisecond as timeMillisecond,\n milliseconds as timeMilliseconds\n} from \"./millisecond.js\";\n\nexport {\n second as utcSecond,\n seconds as utcSeconds,\n second as timeSecond,\n seconds as timeSeconds\n} from \"./second.js\";\n\nexport {\n timeMinute,\n timeMinutes,\n utcMinute,\n utcMinutes\n} from \"./minute.js\";\n\nexport {\n timeHour,\n timeHours,\n utcHour,\n utcHours\n} from \"./hour.js\";\n\nexport {\n timeDay,\n timeDays,\n utcDay,\n utcDays,\n unixDay,\n unixDays\n} from \"./day.js\";\n\nexport {\n timeSunday as timeWeek,\n timeSundays as timeWeeks,\n timeSunday,\n timeSundays,\n timeMonday,\n timeMondays,\n timeTuesday,\n timeTuesdays,\n timeWednesday,\n timeWednesdays,\n timeThursday,\n timeThursdays,\n timeFriday,\n timeFridays,\n timeSaturday,\n timeSaturdays,\n utcSunday as utcWeek,\n utcSundays as utcWeeks,\n utcSunday,\n utcSundays,\n utcMonday,\n utcMondays,\n utcTuesday,\n utcTuesdays,\n utcWednesday,\n utcWednesdays,\n utcThursday,\n utcThursdays,\n utcFriday,\n utcFridays,\n utcSaturday,\n utcSaturdays\n} from \"./week.js\";\n\nexport {\n timeMonth,\n timeMonths,\n utcMonth,\n utcMonths\n} from \"./month.js\";\n\nexport {\n timeYear,\n timeYears,\n utcYear,\n utcYears\n} from \"./year.js\";\n\nexport {\n utcTicks,\n utcTickInterval,\n timeTicks,\n timeTickInterval\n} from \"./ticks.js\";\n", "import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n", "import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n", "export {default as timeFormatDefaultLocale, timeFormat, timeParse, utcFormat, utcParse} from \"./defaultLocale.js\";\nexport {default as timeFormatLocale} from \"./locale.js\";\nexport {default as isoFormat} from \"./isoFormat.js\";\nexport {default as isoParse} from \"./isoParse.js\";\n", "import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n", "import {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval} from \"d3-time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {calendar} from \"./time.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function utcTime() {\n return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n", "import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1;\n return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n", "import {ascending, bisect, quantile} from \"d3-array\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\n\nexport default function sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (x != null && !isNaN(x = +x)) return interpolator((bisect(domain, x, 1) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.range = function() {\n return domain.map((d, i) => interpolator(i / (domain.length - 1)));\n };\n\n scale.quantiles = function(n) {\n return Array.from({length: n + 1}, (_, i) => quantile(domain, i / n));\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n", "import {interpolate, interpolateRound, piecewise} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {copy} from \"./sequential.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n s = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1, r2;\n return arguments.length ? ([r0, r1, r2] = _, interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n", "export {\n default as scaleBand,\n point as scalePoint\n} from \"./band.js\";\n\nexport {\n default as scaleIdentity\n} from \"./identity.js\";\n\nexport {\n default as scaleLinear\n} from \"./linear.js\";\n\nexport {\n default as scaleLog\n} from \"./log.js\";\n\nexport {\n default as scaleSymlog\n} from \"./symlog.js\";\n\nexport {\n default as scaleOrdinal,\n implicit as scaleImplicit\n} from \"./ordinal.js\";\n\nexport {\n default as scalePow,\n sqrt as scaleSqrt\n} from \"./pow.js\";\n\nexport {\n default as scaleRadial\n} from \"./radial.js\";\n\nexport {\n default as scaleQuantile\n} from \"./quantile.js\";\n\nexport {\n default as scaleQuantize\n} from \"./quantize.js\";\n\nexport {\n default as scaleThreshold\n} from \"./threshold.js\";\n\nexport {\n default as scaleTime\n} from \"./time.js\";\n\nexport {\n default as scaleUtc\n} from \"./utcTime.js\";\n\nexport {\n default as scaleSequential,\n sequentialLog as scaleSequentialLog,\n sequentialPow as scaleSequentialPow,\n sequentialSqrt as scaleSequentialSqrt,\n sequentialSymlog as scaleSequentialSymlog\n} from \"./sequential.js\";\n\nexport {\n default as scaleSequentialQuantile\n} from \"./sequentialQuantile.js\";\n\nexport {\n default as scaleDiverging,\n divergingLog as scaleDivergingLog,\n divergingPow as scaleDivergingPow,\n divergingSqrt as scaleDivergingSqrt,\n divergingSymlog as scaleDivergingSymlog\n} from \"./diverging.js\";\n\nexport {\n default as tickFormat\n} from \"./tickFormat.js\";\n", "export default function(x) {\n return x;\n}\n", "import identity from \"./identity.js\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient === right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = Array.from(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n axis.offset = function(_) {\n return arguments.length ? (offset = +_, axis) : offset;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n", "export {\n axisTop,\n axisRight,\n axisBottom,\n axisLeft\n} from \"./axis.js\";\n", "var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n", "export {default as dispatch} from \"./dispatch.js\";\n", "export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n", "import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n", "import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n", "function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n", "import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n", "// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don\u2019t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n", "function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n", "import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n", "export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n", "import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n", "import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n", "import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n", "export default function(update) {\n return new Array(update.length);\n}\n", "import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n", "export default function(x) {\n return function() {\n return x;\n };\n}\n", "import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don\u2019t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn\u2019t worried about \u201Clive\u201D collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don\u2019t; we\u2019d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n", "import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n", "export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n", "import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n", "export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n", "import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n", "export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n", "export default function() {\n return Array.from(this);\n}\n", "export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n", "export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n", "export default function() {\n return !this.node();\n}\n", "export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n", "import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n", "export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n", "import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n", "function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n", "function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n", "function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n", "function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n", "function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n", "function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n", "import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n", "import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n", "function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n", "function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n", "export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n", "function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n", "import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n", "export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n", "import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n", "import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n", "import creator from \"./creator.js\";\nimport select from \"./select.js\";\n\nexport default function(name) {\n return select(creator(name).call(document.documentElement));\n}\n", "var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n", "export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n", "import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n", "import pointer from \"./pointer.js\";\nimport sourceEvent from \"./sourceEvent.js\";\n\nexport default function(events, node) {\n if (events.target) { // i.e., instanceof Event, not TouchList or iterable\n events = sourceEvent(events);\n if (node === undefined) node = events.currentTarget;\n events = events.touches || [events];\n }\n return Array.from(events, event => pointer(event, node));\n}\n", "import array from \"./array.js\";\nimport {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([array(selector)], root);\n}\n", "export {default as create} from \"./create.js\";\nexport {default as creator} from \"./creator.js\";\nexport {default as local} from \"./local.js\";\nexport {default as matcher} from \"./matcher.js\";\nexport {default as namespace} from \"./namespace.js\";\nexport {default as namespaces} from \"./namespaces.js\";\nexport {default as pointer} from \"./pointer.js\";\nexport {default as pointers} from \"./pointers.js\";\nexport {default as select} from \"./select.js\";\nexport {default as selectAll} from \"./selectAll.js\";\nexport {default as selection} from \"./selection/index.js\";\nexport {default as selector} from \"./selector.js\";\nexport {default as selectorAll} from \"./selectorAll.js\";\nexport {styleValue as style} from \"./selection/style.js\";\nexport {default as window} from \"./window.js\";\n", "// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n", "import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n", "export {default as drag} from \"./drag.js\";\nexport {default as dragDisable, yesdrag as dragEnable} from \"./nodrag.js\";\n", "var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we\u2019ve set an alarm, if we haven\u2019t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n", "import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n", "export {\n now,\n timer,\n timerFlush\n} from \"./timer.js\";\n\nexport {\n default as timeout\n} from \"./timeout.js\";\n\nexport {\n default as interval\n} from \"./interval.js\";\n", "import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n", "import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n", "import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n", "import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we\u2019re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we\u2019re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n", "import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n", "import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n", "import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n", "import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n", "import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n", "import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n", "import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n", "import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n", "import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n", "import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we\u2019re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n", "function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n", "import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n", "import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n", "import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n", "import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we\u2019re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n", "function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n", "import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n", "function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n", "import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n", "import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we\u2019re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n", "import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n", "export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n", "export {\n linear as easeLinear\n} from \"./linear.js\";\n\nexport {\n quadInOut as easeQuad,\n quadIn as easeQuadIn,\n quadOut as easeQuadOut,\n quadInOut as easeQuadInOut\n} from \"./quad.js\";\n\nexport {\n cubicInOut as easeCubic,\n cubicIn as easeCubicIn,\n cubicOut as easeCubicOut,\n cubicInOut as easeCubicInOut\n} from \"./cubic.js\";\n\nexport {\n polyInOut as easePoly,\n polyIn as easePolyIn,\n polyOut as easePolyOut,\n polyInOut as easePolyInOut\n} from \"./poly.js\";\n\nexport {\n sinInOut as easeSin,\n sinIn as easeSinIn,\n sinOut as easeSinOut,\n sinInOut as easeSinInOut\n} from \"./sin.js\";\n\nexport {\n expInOut as easeExp,\n expIn as easeExpIn,\n expOut as easeExpOut,\n expInOut as easeExpInOut\n} from \"./exp.js\";\n\nexport {\n circleInOut as easeCircle,\n circleIn as easeCircleIn,\n circleOut as easeCircleOut,\n circleInOut as easeCircleInOut\n} from \"./circle.js\";\n\nexport {\n bounceOut as easeBounce,\n bounceIn as easeBounceIn,\n bounceOut as easeBounceOut,\n bounceInOut as easeBounceInOut\n} from \"./bounce.js\";\n\nexport {\n backInOut as easeBack,\n backIn as easeBackIn,\n backOut as easeBackOut,\n backInOut as easeBackInOut\n} from \"./back.js\";\n\nexport {\n elasticOut as easeElastic,\n elasticIn as easeElasticIn,\n elasticOut as easeElasticOut,\n elasticInOut as easeElasticInOut\n} from \"./elastic.js\";\n", "import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n", "import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n", "import \"./selection/index.js\";\nexport {default as transition} from \"./transition/index.js\";\nexport {default as active} from \"./active.js\";\nexport {default as interrupt} from \"./interrupt.js\";\n", "export default x => () => x;\n", "export default function ZoomEvent(type, {\n sourceEvent,\n target,\n transform,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n transform: {value: transform, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n", "export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n", "export function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n", "import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchfirst,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0,\n tapDistance = 10;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled, {passive: false})\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point, event) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point, event);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .event(event)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p, event) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n\n zoom.scaleTo = function(selection, k, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n\n zoom.translateBy = function(selection, x, y, event) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n\n zoom.translateTo = function(selection, x, y, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point, event) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args).event(event),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n event: function(event) {\n if (event) this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function wheeled(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, args).event(event),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = pointer(event);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won\u2019t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned(event, ...args) {\n if (touchending || !filter.apply(this, arguments)) return;\n var currentTarget = event.currentTarget,\n g = gesture(this, args, true).event(event),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = pointer(event, currentTarget),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved(event) {\n noevent(event);\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event)\n .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped(event) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent(event);\n g.event(event).end();\n }\n }\n\n function dblclicked(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n noevent(event);\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n else select(this).call(zoom.transform, t1, p0, event);\n }\n\n function touchstarted(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, args, event.changedTouches.length === n).event(event),\n started, i, t, p;\n\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation(event);\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n zoom.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n };\n\n return zoom;\n}\n", "export {default as zoom} from \"./zoom.js\";\nexport {default as zoomTransform, identity as zoomIdentity, Transform as ZoomTransform} from \"./transform.js\";\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n", null, null, null, "module.exports = {\n EOF: 0,\n DELIMITER: 1,\n NUMBER: 2,\n STRING: 3,\n SYMBOL: 4\n}\n", "// token types\nvar tokenType = require('./token-type')\n\nvar ESCAPES = {\n 'n': '\\n',\n 'f': '\\f',\n 'r': '\\r',\n 't': '\\t',\n 'v': '\\v',\n '\\'': '\\'',\n '\"': '\"'\n}\n\nvar DELIMITERS = {\n ',': true,\n '(': true,\n ')': true,\n '[': true,\n ']': true,\n ';': true,\n\n // unary\n '~': true,\n\n // factorial\n '!': true,\n\n // arithmetic operators\n '+': true,\n '-': true,\n '*': true,\n '/': true,\n '%': true,\n '^': true,\n '**': true, // python power like\n\n // misc operators\n '|': true, // bitwise or\n '&': true, // bitwise and\n '^|': true, // bitwise xor\n '=': true,\n ':': true,\n '?': true,\n\n '||': true, // logical or\n '&&': true, // logical and\n 'xor': true, // logical xor\n\n // relational\n '==': true,\n '!=': true,\n '===': true,\n '!==': true,\n '<': true,\n '>': true,\n '>=': true,\n '<=': true,\n\n // shifts\n '>>>': true,\n '<<': true,\n '>>': true\n}\n\n// helpers\n\nfunction isDigit (c) {\n return c >= '0' && c <= '9'\n}\n\nfunction isIdentifier (c) {\n return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') ||\n c === '$' || c === '_'\n}\n\nfunction isWhitespace (c) {\n return c === ' ' || c === '\\r' || c === '\\t' ||\n c === '\\n' || c === '\\v' || c === '\\u00A0'\n}\n\nfunction isDelimiter (str) {\n return DELIMITERS[str]\n}\n\nfunction isQuote (c) {\n return c === '\\'' || c === '\"'\n}\n\n// lexer\n\nfunction Lexer () {}\n\nLexer.prototype.throwError = function (message, index) {\n index = typeof index === 'undefined' ? this.index : index\n\n var error = new Error(message + ' at index ' + index)\n error.index = index\n error.description = message\n throw error\n}\n\nLexer.prototype.lex = function (text) {\n this.text = text\n this.index = 0\n this.tokens = []\n\n while (this.index < this.text.length) {\n // skip whitespaces\n while (isWhitespace(this.peek())) {\n this.consume()\n }\n var c = this.peek()\n var c2 = c + this.peek(1)\n var c3 = c2 + this.peek(2)\n\n // order\n // - delimiter of 3 characters\n // - delimiter of 2 characters\n // - delimiter of 1 character\n // - number\n // - variables, functions and named operators\n if (isDelimiter(c3)) {\n this.tokens.push({\n type: tokenType.DELIMITER,\n value: c3\n })\n this.consume()\n this.consume()\n this.consume()\n } else if (isDelimiter(c2)) {\n this.tokens.push({\n type: tokenType.DELIMITER,\n value: c2\n })\n this.consume()\n this.consume()\n } else if (isDelimiter(c)) {\n this.tokens.push({\n type: tokenType.DELIMITER,\n value: c\n })\n this.consume()\n } else if (isDigit(c) ||\n (c === '.' && isDigit(this.peek(1)))) {\n this.tokens.push({\n type: tokenType.NUMBER,\n value: this.readNumber()\n })\n } else if (isQuote(c)) {\n this.tokens.push({\n type: tokenType.STRING,\n value: this.readString()\n })\n } else if (isIdentifier(c)) {\n this.tokens.push({\n type: tokenType.SYMBOL,\n value: this.readIdentifier()\n })\n } else {\n this.throwError('unexpected character ' + c)\n }\n }\n\n // end token\n this.tokens.push({ type: tokenType.EOF })\n\n return this.tokens\n}\n\nLexer.prototype.peek = function (nth) {\n nth = nth || 0\n if (this.index + nth >= this.text.length) {\n return\n }\n return this.text.charAt(this.index + nth)\n}\n\nLexer.prototype.consume = function () {\n var current = this.peek()\n this.index += 1\n return current\n}\n\nLexer.prototype.readNumber = function () {\n var number = ''\n\n if (this.peek() === '.') {\n number += this.consume()\n if (!isDigit(this.peek())) {\n this.throwError('number expected')\n }\n } else {\n while (isDigit(this.peek())) {\n number += this.consume()\n }\n if (this.peek() === '.') {\n number += this.consume()\n }\n }\n\n // numbers after the decimal dot\n while (isDigit(this.peek())) {\n number += this.consume()\n }\n\n // exponent if available\n if ((this.peek() === 'e' || this.peek() === 'E')) {\n number += this.consume()\n\n if (!(isDigit(this.peek()) ||\n this.peek() === '+' ||\n this.peek() === '-')) {\n this.throwError()\n }\n\n if (this.peek() === '+' || this.peek() === '-') {\n number += this.consume()\n }\n\n if (!isDigit(this.peek())) {\n this.throwError('number expected')\n }\n\n while (isDigit(this.peek())) {\n number += this.consume()\n }\n }\n return number\n}\n\nLexer.prototype.readIdentifier = function () {\n var text = ''\n while (isIdentifier(this.peek()) || isDigit(this.peek())) {\n text += this.consume()\n }\n return text\n}\n\nLexer.prototype.readString = function () {\n var quote = this.consume()\n var string = ''\n var escape\n while (true) {\n var c = this.consume()\n if (!c) {\n this.throwError('string is not closed')\n }\n if (escape) {\n if (c === 'u') {\n var hex = this.text.substring(this.index + 1, this.index + 5)\n if (!hex.match(/[\\da-f]{4}/i)) {\n this.throwError('invalid unicode escape')\n }\n this.index += 4\n string += String.fromCharCode(parseInt(hex, 16))\n } else {\n var replacement = ESCAPES[c]\n if (replacement) {\n string += replacement\n } else {\n string += c\n }\n }\n escape = false\n } else if (c === quote) {\n break\n } else if (c === '\\\\') {\n escape = true\n } else {\n string += c\n }\n }\n return string\n}\n\nmodule.exports = Lexer\n", "function Node () {\n\n}\n\nNode.prototype.type = 'Node'\n\nmodule.exports = Node\n", "var Node = require('./Node')\n\nvar SUPPORTED_TYPES = {\n number: true,\n string: true,\n 'boolean': true,\n 'undefined': true,\n 'null': true\n}\n\nfunction ConstantNode (value, type) {\n if (!SUPPORTED_TYPES[type]) {\n throw Error('unsupported type \\'' + type + '\\'')\n }\n this.value = value\n this.valueType = type\n}\n\nConstantNode.prototype = Object.create(Node.prototype)\n\nConstantNode.prototype.type = 'ConstantNode'\n\nmodule.exports = ConstantNode\n", "var Node = require('./Node')\n\nfunction OperatorNode (op, args) {\n this.op = op\n this.args = args || []\n}\n\nOperatorNode.prototype = Object.create(Node.prototype)\n\nOperatorNode.prototype.type = 'OperatorNode'\n\nmodule.exports = OperatorNode\n", "var Node = require('./Node')\n\nfunction UnaryNode (op, argument) {\n this.op = op\n this.argument = argument\n}\n\nUnaryNode.prototype = Object.create(Node.prototype)\n\nUnaryNode.prototype.type = 'UnaryNode'\n\nmodule.exports = UnaryNode\n", "var Node = require('./Node')\n\nfunction SymbolNode (name) {\n this.name = name\n}\n\nSymbolNode.prototype = Object.create(Node.prototype)\n\nSymbolNode.prototype.type = 'SymbolNode'\n\nmodule.exports = SymbolNode\n", "var Node = require('./Node')\n\nfunction FunctionNode (name, args) {\n this.name = name\n this.args = args\n}\n\nFunctionNode.prototype = Object.create(Node.prototype)\n\nFunctionNode.prototype.type = 'FunctionNode'\n\nmodule.exports = FunctionNode\n", "var Node = require('./Node')\n\nfunction ArrayNode (nodes) {\n this.nodes = nodes\n}\n\nArrayNode.prototype = Object.create(Node.prototype)\n\nArrayNode.prototype.type = 'ArrayNode'\n\nmodule.exports = ArrayNode\n", "var Node = require('./Node')\n\nfunction ConditionalNode (predicate, truthy, falsy) {\n this.condition = predicate\n this.trueExpr = truthy\n this.falseExpr = falsy\n}\n\nConditionalNode.prototype = Object.create(Node.prototype)\n\nConditionalNode.prototype.type = 'ConditionalNode'\n\nmodule.exports = ConditionalNode\n", "var Node = require('./Node')\n\nfunction AssignmentNode (name, expr) {\n this.name = name\n this.expr = expr\n}\n\nAssignmentNode.prototype = Object.create(Node.prototype)\n\nAssignmentNode.prototype.type = 'AssignmentNode'\n\nmodule.exports = AssignmentNode\n", "var Node = require('./Node')\n\nfunction BlockNode (blocks) {\n this.blocks = blocks\n}\n\nBlockNode.prototype = Object.create(Node.prototype)\n\nBlockNode.prototype.type = 'BlockNode'\n\nmodule.exports = BlockNode\n", "var tokenType = require('./token-type')\n\nvar Lexer = require('./Lexer')\nvar ConstantNode = require('./node/ConstantNode')\nvar OperatorNode = require('./node/OperatorNode')\nvar UnaryNode = require('./node/UnaryNode')\nvar SymbolNode = require('./node/SymbolNode')\nvar FunctionNode = require('./node/FunctionNode')\nvar ArrayNode = require('./node/ArrayNode')\nvar ConditionalNode = require('./node/ConditionalNode')\nvar AssignmentNode = require('./node/AssignmentNode')\nvar BlockNode = require('./node/BlockNode')\n\n/**\n * Grammar DSL:\n *\n * program : block (; block)*\n *\n * block : assignment\n *\n * assignment : ternary\n * | symbol `=` assignment\n *\n * ternary : logicalOR\n * | logicalOR `?` ternary `:` ternary\n *\n * logicalOR : logicalXOR\n * | logicalXOR (`||`,`or`) logicalOR\n *\n * logicalXOR : logicalAND\n * : logicalAND `xor` logicalXOR\n *\n * logicalAND : bitwiseOR\n * | bitwiseOR (`&&`,`and`) logicalAND\n *\n * bitwiseOR : bitwiseXOR\n * | bitwiseXOR `|` bitwiseOR\n *\n * bitwiseXOR : bitwiseAND\n * | bitwiseAND `^|` bitwiseXOR\n *\n * bitwiseAND : relational\n * | relational `&` bitwiseAND\n *\n * relational : shift\n * | shift (`!=` | `==` | `>` | '<' | '<=' |'>=') shift)\n *\n * shift : additive\n * | additive (`>>` | `<<` | `>>>`) shift\n *\n * additive : multiplicative\n * | multiplicative (`+` | `-`) additive\n *\n * multiplicative : unary\n * | unary (`*` | `/` | `%`) unary\n * | unary symbol\n *\n * unary : pow\n * | (`-` | `+` | `~`) unary\n *\n * pow : factorial\n * | factorial (`^`, '**') unary\n *\n * factorial : symbol\n * | symbol (`!`)\n *\n * symbol : symbolToken\n * | symbolToken functionCall\n * | string\n *\n * functionCall : `(` `)`\n * | `(` ternary (, ternary)* `)`\n *\n * string : `'` (character)* `'`\n * : `\"` (character)* `\"`\n * | array\n *\n * array : `[` `]`\n * | `[` assignment (, assignment)* `]`\n * | number\n *\n * number : number-token\n * | parentheses\n *\n * parentheses : `(` assignment `)`\n * : end\n *\n * end : NULL\n *\n * @param {[type]} lexer [description]\n */\nfunction Parser () {\n this.lexer = new Lexer()\n this.tokens = null\n}\n\nParser.prototype.current = function () {\n return this.tokens[0]\n}\n\nParser.prototype.next = function () {\n return this.tokens[1]\n}\n\nParser.prototype.peek = function () {\n if (this.tokens.length) {\n var first = this.tokens[0]\n for (var i = 0; i < arguments.length; i += 1) {\n if (first.value === arguments[i]) {\n return true\n }\n }\n }\n}\n\nParser.prototype.consume = function (e) {\n return this.tokens.shift()\n}\n\nParser.prototype.expect = function (e) {\n if (!this.peek(e)) {\n throw Error('expected ' + e)\n }\n return this.consume()\n}\n\nParser.prototype.isEOF = function () {\n return this.current().type === tokenType.EOF\n}\n\nParser.prototype.parse = function (text) {\n this.tokens = this.lexer.lex(text)\n return this.program()\n}\n\nParser.prototype.program = function () {\n var blocks = []\n while (!this.isEOF()) {\n blocks.push(this.assignment())\n if (this.peek(';')) {\n this.consume()\n }\n }\n this.end()\n return new BlockNode(blocks)\n}\n\nParser.prototype.assignment = function () {\n var left = this.ternary()\n if (left instanceof SymbolNode && this.peek('=')) {\n this.consume()\n return new AssignmentNode(left.name, this.assignment())\n }\n return left\n}\n\nParser.prototype.ternary = function () {\n var predicate = this.logicalOR()\n if (this.peek('?')) {\n this.consume()\n var truthy = this.ternary()\n this.expect(':')\n var falsy = this.ternary()\n return new ConditionalNode(predicate, truthy, falsy)\n }\n return predicate\n}\n\nParser.prototype.logicalOR = function () {\n var left = this.logicalXOR()\n if (this.peek('||')) {\n var op = this.consume()\n var right = this.logicalOR()\n return new OperatorNode(op.value, [left, right])\n }\n return left\n}\n\nParser.prototype.logicalXOR = function () {\n var left = this.logicalAND()\n if (this.current().value === 'xor') {\n var op = this.consume()\n var right = this.logicalXOR()\n return new OperatorNode(op.value, [left, right])\n }\n return left\n}\n\nParser.prototype.logicalAND = function () {\n var left = this.bitwiseOR()\n if (this.peek('&&')) {\n var op = this.consume()\n var right = this.logicalAND()\n return new OperatorNode(op.value, [left, right])\n }\n return left\n}\n\nParser.prototype.bitwiseOR = function () {\n var left = this.bitwiseXOR()\n if (this.peek('|')) {\n var op = this.consume()\n var right = this.bitwiseOR()\n return new OperatorNode(op.value, [left, right])\n }\n return left\n}\n\nParser.prototype.bitwiseXOR = function () {\n var left = this.bitwiseAND()\n if (this.peek('^|')) {\n var op = this.consume()\n var right = this.bitwiseXOR()\n return new OperatorNode(op.value, [left, right])\n }\n return left\n}\n\nParser.prototype.bitwiseAND = function () {\n var left = this.relational()\n if (this.peek('&')) {\n var op = this.consume()\n var right = this.bitwiseAND()\n return new OperatorNode(op.value, [left, right])\n }\n return left\n}\n\nParser.prototype.relational = function () {\n var left = this.shift()\n if (this.peek('==', '===', '!=', '!==', '>=', '<=', '>', '<')) {\n var op = this.consume()\n var right = this.shift()\n return new OperatorNode(op.value, [left, right])\n }\n return left\n}\n\nParser.prototype.shift = function () {\n var left = this.additive()\n if (this.peek('>>', '<<', '>>>')) {\n var op = this.consume()\n var right = this.shift()\n return new OperatorNode(op.value, [left, right])\n }\n return left\n}\n\nParser.prototype.additive = function () {\n var left = this.multiplicative()\n while (this.peek('+', '-')) {\n var op = this.consume()\n left = new OperatorNode(op.value, [left, this.multiplicative()])\n }\n return left\n}\n\nParser.prototype.multiplicative = function () {\n var op, right\n var left = this.unary()\n while (this.peek('*', '/', '%')) {\n op = this.consume()\n left = new OperatorNode(op.value, [left, this.unary()])\n }\n\n // implicit multiplication\n // - 2 x\n // - 2(x)\n // - (2)2\n if (this.current().type === tokenType.SYMBOL ||\n this.peek('(') ||\n (!(left.type instanceof ConstantNode) && this.current().type === tokenType.NUMBER)\n ) {\n right = this.multiplicative()\n return new OperatorNode('*', [left, right])\n }\n\n return left\n}\n\nParser.prototype.unary = function () {\n if (this.peek('-', '+', '~')) {\n var op = this.consume()\n var right = this.unary()\n return new UnaryNode(op.value, right)\n }\n return this.pow()\n}\n\nParser.prototype.pow = function () {\n var left = this.factorial()\n if (this.peek('^', '**')) {\n var op = this.consume()\n var right = this.unary()\n return new OperatorNode(op.value, [left, right])\n }\n return left\n}\n\nParser.prototype.factorial = function () {\n var left = this.symbol()\n if (this.peek('!')) {\n var op = this.consume()\n return new OperatorNode(op.value, [left])\n }\n return left\n}\n\nParser.prototype.symbol = function () {\n var current = this.current()\n if (current.type === tokenType.SYMBOL) {\n var symbol = this.consume()\n var node = this.functionCall(symbol)\n return node\n }\n return this.string()\n}\n\nParser.prototype.functionCall = function (symbolToken) {\n var name = symbolToken.value\n if (this.peek('(')) {\n this.consume()\n var params = []\n while (!this.peek(')') && !this.isEOF()) {\n params.push(this.assignment())\n if (this.peek(',')) {\n this.consume()\n }\n }\n this.expect(')')\n return new FunctionNode(name, params)\n }\n return new SymbolNode(name)\n}\n\nParser.prototype.string = function () {\n if (this.current().type === tokenType.STRING) {\n return new ConstantNode(this.consume().value, 'string')\n }\n return this.array()\n}\n\nParser.prototype.array = function () {\n if (this.peek('[')) {\n this.consume()\n var params = []\n while (!this.peek(']') && !this.isEOF()) {\n params.push(this.assignment())\n if (this.peek(',')) {\n this.consume()\n }\n }\n this.expect(']')\n return new ArrayNode(params)\n }\n return this.number()\n}\n\nParser.prototype.number = function () {\n var token = this.current()\n if (token.type === tokenType.NUMBER) {\n return new ConstantNode(this.consume().value, 'number')\n }\n return this.parentheses()\n}\n\nParser.prototype.parentheses = function () {\n var token = this.current()\n if (token.value === '(') {\n this.consume()\n var left = this.assignment()\n this.expect(')')\n return left\n }\n return this.end()\n}\n\nParser.prototype.end = function () {\n var token = this.current()\n if (token.type !== tokenType.EOF) {\n throw Error('unexpected end of expression')\n }\n}\n\nmodule.exports = Parser\n", "module.exports = {\n ArrayNode: require('./ArrayNode'),\n AssignmentNode: require('./AssignmentNode'),\n BlockNode: require('./BlockNode'),\n ConditionalNode: require('./ConditionalNode'),\n ConstantNode: require('./ConstantNode'),\n FunctionNode: require('./FunctionNode'),\n Node: require('./Node'),\n OperatorNode: require('./OperatorNode'),\n SymbolNode: require('./SymbolNode'),\n UnaryNode: require('./UnaryNode')\n}\n", "/*\n * mr-parser\n *\n * Copyright (c) 2015 Mauricio Poppe\n * Licensed under the MIT license.\n */\n\n'use strict'\n\nmodule.exports.Lexer = require('./lib/Lexer')\nmodule.exports.Parser = require('./lib/Parser')\nmodule.exports.nodeTypes = require('./lib/node/')\n", "'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n", "'use strict'\nmodule.exports = function (node) {\n var self = this\n var arr = []\n this.rawify(this.options.rawArrayExpressionElements, function () {\n arr = node.nodes.map(function (el) {\n return self.next(el)\n })\n })\n var arrString = '[' + arr.join(',') + ']'\n\n if (this.options.raw) {\n return arrString\n }\n return this.options.factory + '(' + arrString + ')'\n}\n", "'use strict'\n\nmodule.exports = function (node) {\n return 'scope[\"' + node.name + '\"] = ' + this.next(node.expr)\n}\n", "'use strict'\n\nmodule.exports = function (node) {\n var condition = '!!(' + this.next(node.condition) + ')'\n var trueExpr = this.next(node.trueExpr)\n var falseExpr = this.next(node.falseExpr)\n return '(' + condition + ' ? (' + trueExpr + ') : (' + falseExpr + ') )'\n}\n", "'use strict'\nmodule.exports = function (node) {\n if (this.options.raw) {\n return node.value\n }\n return this.options.factory + '(' + node.value + ')'\n}\n", "'use strict'\nvar SymbolNode = require('mr-parser').nodeTypes.SymbolNode\n\nvar functionProxy = function (node) {\n return '$$mathCodegen.functionProxy(' + this.next(new SymbolNode(node.name)) + ', \"' + node.name + '\")'\n}\n\nmodule.exports = function (node) {\n var self = this\n // wrap in a helper function to detect the type of symbol it must be a function\n // NOTE: if successful the wrapper returns the function itself\n // NOTE: node.name should be a symbol so that it's correctly represented as a string in SymbolNode\n var method = functionProxy.call(this, node)\n var args = []\n this.rawify(this.options.rawCallExpressionElements, function () {\n args = node.args.map(function (arg) {\n return self.next(arg)\n })\n })\n return method + '(' + args.join(', ') + ')'\n}\n\nmodule.exports.functionProxy = functionProxy\n", "'use strict'\n\nmodule.exports = {\n // arithmetic\n '+': 'add',\n '-': 'sub',\n '*': 'mul',\n '/': 'div',\n '^': 'pow',\n '%': 'mod',\n '!': 'factorial',\n\n // misc operators\n '|': 'bitwiseOR', // bitwise or\n '^|': 'bitwiseXOR', // bitwise xor\n '&': 'bitwiseAND', // bitwise and\n\n '||': 'logicalOR', // logical or\n 'xor': 'logicalXOR', // logical xor\n '&&': 'logicalAND', // logical and\n\n // comparison\n '<': 'lessThan',\n '>': 'greaterThan',\n '<=': 'lessEqualThan',\n '>=': 'greaterEqualThan',\n '===': 'strictlyEqual',\n '==': 'equal',\n '!==': 'strictlyNotEqual',\n '!=': 'notEqual',\n\n // shift\n '>>': 'shiftRight',\n '<<': 'shiftLeft',\n '>>>': 'unsignedRightShift'\n}\n", "'use strict'\n\nvar Operators = require('../misc/Operators')\n\nmodule.exports = function (node) {\n if (this.options.raw) {\n return ['(' + this.next(node.args[0]), node.op, this.next(node.args[1]) + ')'].join(' ')\n }\n\n var namedOperator = Operators[node.op]\n\n if (!namedOperator) {\n throw TypeError('unidentified operator')\n }\n\n /* eslint-disable new-cap */\n return this.FunctionNode({\n name: namedOperator,\n args: node.args\n })\n /* eslint-enable new-cap */\n}\n", "'use strict'\n\nmodule.exports = function (node) {\n var id = node.name\n return '$$mathCodegen.getProperty(\"' + id + '\", scope, ns)'\n}\n", "'use strict'\n\nmodule.exports = {\n '+': 'positive',\n '-': 'negative',\n '~': 'oneComplement'\n}\n", "'use strict'\n\nvar UnaryOperators = require('../misc/UnaryOperators')\n\nmodule.exports = function (node) {\n if (this.options.raw) {\n return node.op + this.next(node.argument)\n }\n\n if (!(node.op in UnaryOperators)) {\n throw new SyntaxError(node.op + ' not implemented')\n }\n\n var namedOperator = UnaryOperators[node.op]\n /* eslint-disable new-cap */\n return this.FunctionNode({\n name: namedOperator,\n args: [node.argument]\n })\n /* eslint-enable new-cap */\n}\n", "'use strict'\nvar extend = require('extend')\n\nvar types = {\n ArrayNode: require('./node/ArrayNode'),\n AssignmentNode: require('./node/AssignmentNode'),\n ConditionalNode: require('./node/ConditionalNode'),\n ConstantNode: require('./node/ConstantNode'),\n FunctionNode: require('./node/FunctionNode'),\n OperatorNode: require('./node/OperatorNode'),\n SymbolNode: require('./node/SymbolNode'),\n UnaryNode: require('./node/UnaryNode')\n}\n\nvar Interpreter = function (owner, options) {\n this.owner = owner\n this.options = extend({\n factory: 'ns.factory',\n raw: false,\n rawArrayExpressionElements: true,\n rawCallExpressionElements: false\n }, options)\n}\n\nextend(Interpreter.prototype, types)\n\n// main method which decides which expression to call\nInterpreter.prototype.next = function (node) {\n if (!(node.type in this)) {\n throw new TypeError('the node type ' + node.type + ' is not implemented')\n }\n return this[node.type](node)\n}\n\nInterpreter.prototype.rawify = function (test, fn) {\n var oldRaw = this.options.raw\n if (test) {\n this.options.raw = true\n }\n fn()\n if (test) {\n this.options.raw = oldRaw\n }\n}\n\nmodule.exports = Interpreter\n", "'use strict'\n\nvar Parser = require('mr-parser').Parser\nvar Interpreter = require('./Interpreter')\nvar extend = require('extend')\n\nfunction CodeGenerator (options, defs) {\n this.statements = []\n this.defs = defs || {}\n this.interpreter = new Interpreter(this, options)\n}\n\nCodeGenerator.prototype.setDefs = function (defs) {\n this.defs = extend(this.defs, defs)\n return this\n}\n\nCodeGenerator.prototype.compile = function (namespace) {\n if (!namespace || !(typeof namespace === 'object' || typeof namespace === 'function')) {\n throw TypeError('namespace must be an object')\n }\n if (typeof namespace.factory !== 'function') {\n throw TypeError('namespace.factory must be a function')\n }\n\n // definitions available in the function\n // each property under this.defs is mapped to local variables\n // e.g\n //\n // function (defs) {\n // var ns = defs['ns']\n // // code generated for the expression\n // }\n this.defs.ns = namespace\n this.defs.$$mathCodegen = {\n getProperty: function (symbol, scope, ns) {\n if (symbol in scope) {\n return scope[symbol]\n }\n if (symbol in ns) {\n return ns[symbol]\n }\n throw SyntaxError('symbol \"' + symbol + '\" is undefined')\n },\n functionProxy: function (fn, name) {\n if (typeof fn !== 'function') {\n throw SyntaxError('symbol \"' + name + '\" must be a function')\n }\n return fn\n }\n }\n this.defs.$$processScope = this.defs.$$processScope || function () {}\n\n var defsCode = Object.keys(this.defs).map(function (name) {\n return 'var ' + name + ' = defs[\"' + name + '\"]'\n })\n\n // statement join\n if (!this.statements.length) {\n throw Error('there are no statements saved in this generator, make sure you parse an expression before compiling it')\n }\n\n // last statement is always a return statement\n this.statements[this.statements.length - 1] = 'return ' + this.statements[this.statements.length - 1]\n\n var code = this.statements.join(';')\n var factoryCode = defsCode.join('\\n') + '\\n' + [\n 'return {',\n ' eval: function (scope) {',\n ' scope = scope || {}',\n ' $$processScope(scope)',\n ' ' + code,\n ' },',\n \" code: '\" + code + \"'\",\n '}'\n ].join('\\n')\n\n /* eslint-disable */\n var factory = new Function('defs', factoryCode)\n return factory(this.defs)\n /* eslint-enable */\n}\n\nCodeGenerator.prototype.parse = function (code) {\n var self = this\n var program = new Parser().parse(code)\n this.statements = program.blocks.map(function (statement) {\n return self.interpreter.next(statement)\n })\n return this\n}\n\nmodule.exports = CodeGenerator\n", "/*\n * math-codegen\n *\n * Copyright (c) 2015 Mauricio Poppe\n * Licensed under the MIT license.\n */\n'use strict'\nmodule.exports = require('./lib/CodeGenerator')\n", "'use strict'\nmodule.exports = function () {\n var math = Object.create(Math)\n\n math.factory = function (a) {\n if (typeof a !== 'number') {\n throw new TypeError('built-in math factory only accepts numbers')\n }\n return Number(a)\n }\n\n math.add = function (a, b) {\n return a + b\n }\n math.sub = function (a, b) {\n return a - b\n }\n math.mul = function (a, b) {\n return a * b\n }\n math.div = function (a, b) {\n return a / b\n }\n math.mod = function (a, b) {\n return a % b\n }\n math.factorial = function (a) {\n var res = 1\n for (var i = 2; i <= a; i += 1) {\n res *= i\n }\n return res\n }\n\n // taken from https://github.com/josdejong/mathjs/blob/master/lib/function/arithmetic/nthRoot.js\n math.nthRoot = function (a, root) {\n var inv = root < 0\n if (inv) {\n root = -root\n }\n\n if (root === 0) {\n throw new Error('Root must be non-zero')\n }\n if (a < 0 && (Math.abs(root) % 2 !== 1)) {\n throw new Error('Root must be odd when a is negative.')\n }\n\n // edge cases zero and infinity\n if (a === 0) {\n return 0\n }\n if (!isFinite(a)) {\n return inv ? 0 : a\n }\n\n var x = Math.pow(Math.abs(a), 1 / root)\n // If a < 0, we require that root is an odd integer,\n // so (-1) ^ (1/root) = -1\n x = a < 0 ? -x : x\n return inv ? 1 / x : x\n }\n\n // logical\n math.logicalOR = function (a, b) {\n return a || b\n }\n math.logicalXOR = function (a, b) {\n /* eslint-disable */\n return a != b\n /* eslint-enable*/\n }\n math.logicalAND = function (a, b) {\n return a && b\n }\n\n // bitwise\n math.bitwiseOR = function (a, b) {\n /* eslint-disable */\n return a | b\n /* eslint-enable*/\n }\n math.bitwiseXOR = function (a, b) {\n /* eslint-disable */\n return a ^ b\n /* eslint-enable*/\n }\n math.bitwiseAND = function (a, b) {\n /* eslint-disable */\n return a & b\n /* eslint-enable*/\n }\n\n // relational\n math.lessThan = function (a, b) {\n return a < b\n }\n math.lessEqualThan = function (a, b) {\n return a <= b\n }\n math.greaterThan = function (a, b) {\n return a > b\n }\n math.greaterEqualThan = function (a, b) {\n return a >= b\n }\n math.equal = function (a, b) {\n /* eslint-disable */\n return a == b\n /* eslint-enable*/\n }\n math.strictlyEqual = function (a, b) {\n return a === b\n }\n math.notEqual = function (a, b) {\n /* eslint-disable */\n return a != b\n /* eslint-enable*/\n }\n math.strictlyNotEqual = function (a, b) {\n return a !== b\n }\n\n // shift\n math.shiftRight = function (a, b) {\n return (a >> b)\n }\n math.shiftLeft = function (a, b) {\n return (a << b)\n }\n math.unsignedRightShift = function (a, b) {\n return (a >>> b)\n }\n\n // unary\n math.negative = function (a) {\n return -a\n }\n math.positive = function (a) {\n return a\n }\n\n return math\n}\n", "'use strict'\n\nvar CodeGenerator = require('math-codegen')\nvar math = require('./adapter')()\n\nfunction processScope (scope) {\n Object.keys(scope).forEach(function (k) {\n var value = scope[k]\n scope[k] = math.factory(value)\n })\n}\n\nmodule.exports = function (expression) {\n return new CodeGenerator()\n .setDefs({\n $$processScope: processScope\n })\n .parse(expression)\n .compile(math)\n}\n\nmodule.exports.math = math\n", "/*\n * built-in-math-eval\n *\n * Copyright (c) 2015 Mauricio Poppe\n * Licensed under the MIT license.\n */\n\n'use strict'\n\nmodule.exports = require('./lib/eval')\n", "'use strict'\nmodule.exports = function (node) {\n var self = this\n var arr = []\n this.rawify(this.options.rawArrayExpressionElements, function () {\n arr = node.nodes.map(function (el) {\n return self.next(el)\n })\n })\n var arrString = '[' + arr.join(',') + ']'\n\n if (this.options.raw) {\n return arrString\n }\n return this.options.factory + '(' + arrString + ')'\n}\n", "'use strict'\n\nmodule.exports = function (node) {\n return 'scope[\"' + node.name + '\"] = ' + this.next(node.expr)\n}\n", "'use strict'\n\nmodule.exports = function (node) {\n var condition = '!!(' + this.next(node.condition) + ')'\n var trueExpr = this.next(node.trueExpr)\n var falseExpr = this.next(node.falseExpr)\n return '(' + condition + ' ? (' + trueExpr + ') : (' + falseExpr + ') )'\n}\n", "'use strict'\nmodule.exports = function (node) {\n if (this.options.raw) {\n return node.value\n }\n return this.options.factory + '(' + node.value + ')'\n}\n", "'use strict'\nvar SymbolNode = require('mr-parser').nodeTypes.SymbolNode\n\nvar functionProxy = function (node) {\n return '$$mathCodegen.functionProxy(' + this.next(new SymbolNode(node.name)) + ', \"' + node.name + '\")'\n}\n\nmodule.exports = function (node) {\n var self = this\n // wrap in a helper function to detect the type of symbol it must be a function\n // NOTE: if successful the wrapper returns the function itself\n // NOTE: node.name should be a symbol so that it's correctly represented as a string in SymbolNode\n var method = functionProxy.call(this, node)\n var args = []\n this.rawify(this.options.rawCallExpressionElements, function () {\n args = node.args.map(function (arg) {\n return self.next(arg)\n })\n })\n return method + '(' + args.join(', ') + ')'\n}\n\nmodule.exports.functionProxy = functionProxy\n", "'use strict'\n\nmodule.exports = {\n // arithmetic\n '+': 'add',\n '-': 'sub',\n '*': 'mul',\n '/': 'div',\n '^': 'pow',\n '%': 'mod',\n '!': 'factorial',\n\n // misc operators\n '|': 'bitwiseOR', // bitwise or\n '^|': 'bitwiseXOR', // bitwise xor\n '&': 'bitwiseAND', // bitwise and\n\n '||': 'logicalOR', // logical or\n 'xor': 'logicalXOR', // logical xor\n '&&': 'logicalAND', // logical and\n\n // comparison\n '<': 'lessThan',\n '>': 'greaterThan',\n '<=': 'lessEqualThan',\n '>=': 'greaterEqualThan',\n '===': 'strictlyEqual',\n '==': 'equal',\n '!==': 'strictlyNotEqual',\n '!=': 'notEqual',\n\n // shift\n '>>': 'shiftRight',\n '<<': 'shiftLeft',\n '>>>': 'unsignedRightShift'\n}\n", "'use strict'\n\nvar Operators = require('../misc/Operators')\n\nmodule.exports = function (node) {\n if (this.options.raw) {\n return ['(' + this.next(node.args[0]), node.op, this.next(node.args[1]) + ')'].join(' ')\n }\n\n var namedOperator = Operators[node.op]\n\n if (!namedOperator) {\n throw TypeError('unidentified operator')\n }\n\n /* eslint-disable new-cap */\n return this.FunctionNode({\n name: namedOperator,\n args: node.args\n })\n /* eslint-enable new-cap */\n}\n", "'use strict'\n\nmodule.exports = function (node) {\n var id = node.name\n return '$$mathCodegen.getProperty(\"' + id + '\", scope, ns)'\n}\n", "'use strict'\n\nmodule.exports = {\n '+': 'positive',\n '-': 'negative',\n '~': 'oneComplement'\n}\n", "'use strict'\n\nvar UnaryOperators = require('../misc/UnaryOperators')\n\nmodule.exports = function (node) {\n if (this.options.raw) {\n return node.op + this.next(node.argument)\n }\n\n if (!(node.op in UnaryOperators)) {\n throw new SyntaxError(node.op + ' not implemented')\n }\n\n var namedOperator = UnaryOperators[node.op]\n /* eslint-disable new-cap */\n return this.FunctionNode({\n name: namedOperator,\n args: [node.argument]\n })\n /* eslint-enable new-cap */\n}\n", "'use strict'\nvar extend = require('extend')\n\nvar types = {\n ArrayNode: require('./node/ArrayNode'),\n AssignmentNode: require('./node/AssignmentNode'),\n ConditionalNode: require('./node/ConditionalNode'),\n ConstantNode: require('./node/ConstantNode'),\n FunctionNode: require('./node/FunctionNode'),\n OperatorNode: require('./node/OperatorNode'),\n SymbolNode: require('./node/SymbolNode'),\n UnaryNode: require('./node/UnaryNode')\n}\n\nvar Interpreter = function (owner, options) {\n this.owner = owner\n this.options = extend({\n factory: 'ns.factory',\n raw: false,\n rawArrayExpressionElements: true,\n rawCallExpressionElements: false,\n applyFactoryToScope: false\n }, options)\n}\n\nextend(Interpreter.prototype, types)\n\n// main method which decides which expression to call\nInterpreter.prototype.next = function (node) {\n if (!(node.type in this)) {\n throw new TypeError('the node type ' + node.type + ' is not implemented')\n }\n return this[node.type](node)\n}\n\nInterpreter.prototype.rawify = function (test, fn) {\n var oldRaw = this.options.raw\n if (test) {\n this.options.raw = true\n }\n fn()\n if (test) {\n this.options.raw = oldRaw\n }\n}\n\nmodule.exports = Interpreter\n", "'use strict'\n\nvar Parser = require('mr-parser').Parser\nvar Interpreter = require('./Interpreter')\nvar extend = require('extend')\n\nfunction CodeGenerator (options, defs) {\n this.statements = []\n this.defs = defs || {}\n this.interpreter = new Interpreter(this, options)\n}\n\nCodeGenerator.prototype.setDefs = function (defs) {\n this.defs = extend(this.defs, defs)\n return this\n}\n\nCodeGenerator.prototype.compile = function (namespace) {\n var self = this\n if (!namespace || !(typeof namespace === 'object' || typeof namespace === 'function')) {\n throw TypeError('namespace must be an object')\n }\n if (typeof namespace.factory !== 'function') {\n throw TypeError('namespace.factory must be a function')\n }\n\n // definitions available in the function\n // each property under this.defs is mapped to local variables\n // e.g\n //\n // function (defs) {\n // var ns = defs['ns']\n // // code generated for the expression\n // }\n this.defs.ns = namespace\n this.defs.$$mathCodegen = {\n getProperty: function (symbol, scope, ns) {\n function applyFactoryIfNeeded (value) {\n if (self.interpreter.options.applyFactoryToScope && typeof value !== 'function') {\n return ns.factory(value)\n }\n return value\n }\n\n if (symbol in scope) {\n return applyFactoryIfNeeded(scope[symbol])\n }\n if (symbol in ns) {\n return applyFactoryIfNeeded(ns[symbol])\n }\n throw SyntaxError('symbol \"' + symbol + '\" is undefined')\n },\n functionProxy: function (fn, name) {\n if (typeof fn !== 'function') {\n throw SyntaxError('symbol \"' + name + '\" must be a function')\n }\n return fn\n }\n }\n this.defs.$$processScope = this.defs.$$processScope || function () {}\n\n var defsCode = Object.keys(this.defs).map(function (name) {\n return 'var ' + name + ' = defs[\"' + name + '\"]'\n })\n\n // statement join\n if (!this.statements.length) {\n throw Error('there are no statements saved in this generator, make sure you parse an expression before compiling it')\n }\n\n // last statement is always a return statement\n this.statements[this.statements.length - 1] = 'return ' + this.statements[this.statements.length - 1]\n\n var code = this.statements.join(';')\n var factoryCode = defsCode.join('\\n') + '\\n' + [\n 'return {',\n ' eval: function (scope) {',\n ' scope = scope || {}',\n ' $$processScope(scope)',\n ' ' + code,\n ' },',\n \" code: '\" + code + \"'\",\n '}'\n ].join('\\n')\n\n /* eslint-disable */\n var factory = new Function('defs', factoryCode)\n return factory(this.defs)\n /* eslint-enable */\n}\n\nCodeGenerator.prototype.parse = function (code) {\n var self = this\n var program = new Parser().parse(code)\n this.statements = program.blocks.map(function (statement) {\n return self.interpreter.next(statement)\n })\n return this\n}\n\nmodule.exports = CodeGenerator\n", "/*\n * math-codegen\n *\n * Copyright (c) 2015 Mauricio Poppe\n * Licensed under the MIT license.\n */\n'use strict'\nmodule.exports = require('./lib/CodeGenerator')\n", null, "var hasTypedArrays = false\nif(typeof Float64Array !== \"undefined\") {\n var DOUBLE_VIEW = new Float64Array(1)\n , UINT_VIEW = new Uint32Array(DOUBLE_VIEW.buffer)\n DOUBLE_VIEW[0] = 1.0\n hasTypedArrays = true\n if(UINT_VIEW[1] === 0x3ff00000) {\n //Use little endian\n module.exports = function doubleBitsLE(n) {\n DOUBLE_VIEW[0] = n\n return [ UINT_VIEW[0], UINT_VIEW[1] ]\n }\n function toDoubleLE(lo, hi) {\n UINT_VIEW[0] = lo\n UINT_VIEW[1] = hi\n return DOUBLE_VIEW[0]\n }\n module.exports.pack = toDoubleLE\n function lowUintLE(n) {\n DOUBLE_VIEW[0] = n\n return UINT_VIEW[0]\n }\n module.exports.lo = lowUintLE\n function highUintLE(n) {\n DOUBLE_VIEW[0] = n\n return UINT_VIEW[1]\n }\n module.exports.hi = highUintLE\n } else if(UINT_VIEW[0] === 0x3ff00000) {\n //Use big endian\n module.exports = function doubleBitsBE(n) {\n DOUBLE_VIEW[0] = n\n return [ UINT_VIEW[1], UINT_VIEW[0] ]\n }\n function toDoubleBE(lo, hi) {\n UINT_VIEW[1] = lo\n UINT_VIEW[0] = hi\n return DOUBLE_VIEW[0]\n }\n module.exports.pack = toDoubleBE\n function lowUintBE(n) {\n DOUBLE_VIEW[0] = n\n return UINT_VIEW[1]\n }\n module.exports.lo = lowUintBE\n function highUintBE(n) {\n DOUBLE_VIEW[0] = n\n return UINT_VIEW[0]\n }\n module.exports.hi = highUintBE\n } else {\n hasTypedArrays = false\n }\n}\nif(!hasTypedArrays) {\n var buffer = new Buffer(8)\n module.exports = function doubleBits(n) {\n buffer.writeDoubleLE(n, 0, true)\n return [ buffer.readUInt32LE(0, true), buffer.readUInt32LE(4, true) ]\n }\n function toDouble(lo, hi) {\n buffer.writeUInt32LE(lo, 0, true)\n buffer.writeUInt32LE(hi, 4, true)\n return buffer.readDoubleLE(0, true)\n }\n module.exports.pack = toDouble \n function lowUint(n) {\n buffer.writeDoubleLE(n, 0, true)\n return buffer.readUInt32LE(0, true)\n }\n module.exports.lo = lowUint\n function highUint(n) {\n buffer.writeDoubleLE(n, 0, true)\n return buffer.readUInt32LE(4, true)\n }\n module.exports.hi = highUint\n}\n\nmodule.exports.sign = function(n) {\n return module.exports.hi(n) >>> 31\n}\n\nmodule.exports.exponent = function(n) {\n var b = module.exports.hi(n)\n return ((b<<1) >>> 21) - 1023\n}\n\nmodule.exports.fraction = function(n) {\n var lo = module.exports.lo(n)\n var hi = module.exports.hi(n)\n var b = hi & ((1<<20) - 1)\n if(hi & 0x7ff00000) {\n b += (1<<20)\n }\n return [lo, b]\n}\n\nmodule.exports.denormalized = function(n) {\n var hi = module.exports.hi(n)\n return !(hi & 0x7ff00000)\n}", "\"use strict\"\n\nvar doubleBits = require(\"double-bits\")\n\nvar SMALLEST_DENORM = Math.pow(2, -1074)\nvar UINT_MAX = (-1)>>>0\n\nmodule.exports = nextafter\n\nfunction nextafter(x, y) {\n if(isNaN(x) || isNaN(y)) {\n return NaN\n }\n if(x === y) {\n return x\n }\n if(x === 0) {\n if(y < 0) {\n return -SMALLEST_DENORM\n } else {\n return SMALLEST_DENORM\n }\n }\n var hi = doubleBits.hi(x)\n var lo = doubleBits.lo(x)\n if((y > x) === (x > 0)) {\n if(lo === UINT_MAX) {\n hi += 1\n lo = 0\n } else {\n lo += 1\n }\n } else {\n if(lo === 0) {\n lo = UINT_MAX\n hi -= 1\n } else {\n lo -= 1\n }\n }\n return doubleBits.pack(lo, hi)\n}", null, null, null, null, null, null, null, null, null, null, "'use strict'\nmodule.exports = function (ns) {\n // mod\n ns.mod = ns.fmod\n\n // relational\n ns.lessThan = ns.lt\n ns.lessEqualThan = ns.leq\n ns.greaterThan = ns.gt\n ns.greaterEqualThan = ns.geq\n\n ns.strictlyEqual = ns.equal\n ns.strictlyNotEqual = ns.notEqual\n\n ns.logicalAND = function (a, b) {\n return a && b\n }\n ns.logicalXOR = function (a, b) {\n return a ^ b\n }\n ns.logicalOR = function (a, b) {\n return a || b\n }\n}\n", "/**\n * Created by mauricio on 5/12/15.\n */\n'use strict'\nmodule.exports = function (Interval) {\n return {\n disableRounding: function () {\n Interval.round.disable()\n },\n\n enableRounding: function () {\n Interval.round.enable()\n }\n }\n}\n", "/**\n * Created by mauricio on 5/12/15.\n */\n'use strict'\n\nconst CodeGenerator = require('math-codegen')\nconst Interval = require('interval-arithmetic').default\nrequire('./adapter')(Interval)\n\nfunction processScope (scope) {\n Object.keys(scope).forEach(function (k) {\n const value = scope[k]\n if (typeof value === 'number' || Array.isArray(value)) {\n scope[k] = Interval.factory(value)\n } else if (typeof value === 'object' && 'lo' in value && 'hi' in value) {\n scope[k] = Interval.factory(value.lo, value.hi)\n }\n })\n}\n\nmodule.exports = function (expression) {\n return new CodeGenerator()\n .setDefs({\n $$processScope: processScope\n })\n .parse(expression)\n .compile(Interval)\n}\n\nmodule.exports.policies = require('./policies')(Interval)\nmodule.exports.Interval = Interval\n", "/*\n * interval-arithmetic-eval\n *\n * Copyright (c) 2015 Mauricio Poppe\n * Licensed under the MIT license.\n */\n'use strict'\nmodule.exports = require('./lib/eval')\n", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=types.js.map", null, "/** Query DOM element that matches the selector. */\nexport const $ = (selector) => document.querySelector(selector)\n\n/** Query all DOM elements matching the selector. */\nexport const $all = (selector) => document.querySelectorAll(selector)\n\n/** Local storage. */\nexport const store = {\n /** Get value from local storage. */\n get: (key) => JSON.parse(localStorage.getItem(key)),\n /** Save value to local storage. */\n set: (key, value) => {\n localStorage.setItem(key, JSON.stringify(value))\n }\n}\n\n/** App globals. */\nexport const app = {\n activePlot: null,\n activePage: null,\n colors: null,\n currencyRates: {},\n mathScope: {},\n plotFunction: null,\n refreshCM: true,\n settings: null,\n udfList: [],\n uduList: []\n}\n", "import { IconNode, IconNodeChild, SVGProps } from './types';\n\n/**\n * Creates a new HTMLElement from icon node\n * @param {string} tag\n * @param {object} attrs\n * @param {array} children\n * @returns {HTMLElement}\n */\nconst createElement = (tag: string, attrs: SVGProps, children: IconNodeChild[] = []) => {\n const element = document.createElementNS('http://www.w3.org/2000/svg', tag);\n\n Object.keys(attrs).forEach((name) => {\n element.setAttribute(name, String(attrs[name]));\n });\n\n if (children.length) {\n children.forEach((child) => {\n const childElement = createElement(...child);\n\n element.appendChild(childElement);\n });\n }\n\n return element;\n};\n\n/**\n * Creates a new HTMLElement from icon node\n * @param {[tag: string, attrs: object, children: array]} iconNode\n * @returns {HTMLElement}\n */\nexport default ([tag, attrs, children]: IconNode) => createElement(tag, attrs, children);\n", "import createElement from './createElement';\nimport { Icons } from './types';\n\nexport type CustomAttrs = { [attr: string]: any };\n\n/**\n * Get the attributes of an HTML element.\n * @param {HTMLElement} element\n * @returns {Object}\n */\nexport const getAttrs = (element: Element): Record =>\n Array.from(element.attributes).reduce>((attrs, attr) => {\n attrs[attr.name] = attr.value;\n return attrs;\n }, {});\n\n/**\n * Gets the classNames of an attributes Object.\n * @param {Object} attrs\n * @returns {Array}\n */\nexport const getClassNames = (attrs: Record | string): string | string[] => {\n if (typeof attrs === 'string') return attrs;\n if (!attrs || !attrs.class) return '';\n if (attrs.class && typeof attrs.class === 'string') {\n return attrs.class.split(' ');\n }\n if (attrs.class && Array.isArray(attrs.class)) {\n return attrs.class;\n }\n return '';\n};\n\n/**\n * Combines the classNames of array of classNames to a String\n * @param {array} arrayOfClassnames\n * @returns {string}\n */\nexport const combineClassNames = (arrayOfClassnames: (string | Record)[]) => {\n const classNameArray = arrayOfClassnames.flatMap(getClassNames);\n\n return classNameArray\n .map((classItem) => classItem.trim())\n .filter(Boolean)\n .filter((value, index, self) => self.indexOf(value) === index)\n .join(' ');\n};\n\nconst toPascalCase = (string: string): string =>\n string.replace(/(\\w)(\\w*)(_|-|\\s*)/g, (g0, g1, g2) => g1.toUpperCase() + g2.toLowerCase());\n\ninterface ReplaceElementOptions {\n nameAttr: string;\n icons: Icons;\n attrs: Record;\n}\n\n/**\n * ReplaceElement, replaces the given element with the created icon.\n * @param {HTMLElement} element\n * @param {{ nameAttr: string, icons: object, attrs: object }} options: { nameAttr, icons, attrs }\n * @returns {Function}\n */\nconst replaceElement = (element: Element, { nameAttr, icons, attrs }: ReplaceElementOptions) => {\n const iconName = element.getAttribute(nameAttr);\n\n if (iconName == null) return;\n\n const ComponentName = toPascalCase(iconName);\n\n const iconNode = icons[ComponentName];\n\n if (!iconNode) {\n return console.warn(\n `${element.outerHTML} icon name was not found in the provided icons object.`,\n );\n }\n\n const elementAttrs = getAttrs(element);\n const [tag, iconAttributes, children] = iconNode;\n\n const iconAttrs = {\n ...iconAttributes,\n 'data-lucide': iconName,\n ...attrs,\n ...elementAttrs,\n };\n\n const classNames = combineClassNames(['lucide', `lucide-${iconName}`, elementAttrs, attrs]);\n\n if (classNames) {\n Object.assign(iconAttrs, {\n class: classNames,\n });\n }\n\n const svgElement = createElement([tag, iconAttrs, children]);\n\n return element.parentNode?.replaceChild(svgElement, element);\n};\n\nexport default replaceElement;\n", "import { SVGProps } from './types';\n\nconst defaultAttributes: SVGProps = {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': 2,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n};\n\nexport default defaultAttributes;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name arrow-up-down\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMjEgMTYtNCA0LTQtNCIgLz4KICA8cGF0aCBkPSJNMTcgMjBWNCIgLz4KICA8cGF0aCBkPSJtMyA4IDQtNCA0IDQiIC8+CiAgPHBhdGggZD0iTTcgNHYxNiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/arrow-up-down\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst ArrowUpDown: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['path', { d: 'm21 16-4 4-4-4' }],\n ['path', { d: 'M17 20V4' }],\n ['path', { d: 'm3 8 4-4 4 4' }],\n ['path', { d: 'M7 4v16' }],\n ],\n];\n\nexport default ArrowUpDown;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name braces\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNOCAzSDdhMiAyIDAgMCAwLTIgMnY1YTIgMiAwIDAgMS0yIDIgMiAyIDAgMCAxIDIgMnY1YzAgMS4xLjkgMiAyIDJoMSIgLz4KICA8cGF0aCBkPSJNMTYgMjFoMWEyIDIgMCAwIDAgMi0ydi01YzAtMS4xLjktMiAyLTJhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMC0yLTJoLTEiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/braces\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst Braces: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['path', { d: 'M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1' }],\n ['path', { d: 'M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1' }],\n ],\n];\n\nexport default Braces;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name circle-alert\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8bGluZSB4MT0iMTIiIHgyPSIxMiIgeTE9IjgiIHkyPSIxMiIgLz4KICA8bGluZSB4MT0iMTIiIHgyPSIxMi4wMSIgeTE9IjE2IiB5Mj0iMTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/circle-alert\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst CircleAlert: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['circle', { cx: '12', cy: '12', r: '10' }],\n ['line', { x1: '12', x2: '12', y1: '8', y2: '12' }],\n ['line', { x1: '12', x2: '12.01', y1: '16', y2: '16' }],\n ],\n];\n\nexport default CircleAlert;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name circle\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/circle\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst Circle: IconNode = ['svg', defaultAttributes, [['circle', { cx: '12', cy: '12', r: '10' }]]];\n\nexport default Circle;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name copy\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHg9IjgiIHk9IjgiIHJ4PSIyIiByeT0iMiIgLz4KICA8cGF0aCBkPSJNNCAxNmMtMS4xIDAtMi0uOS0yLTJWNGMwLTEuMS45LTIgMi0yaDEwYzEuMSAwIDIgLjkgMiAyIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/copy\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst Copy: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['rect', { width: '14', height: '14', x: '8', y: '8', rx: '2', ry: '2' }],\n ['path', { d: 'M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2' }],\n ],\n];\n\nexport default Copy;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name corner-down-right\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cG9seWxpbmUgcG9pbnRzPSIxNSAxMCAyMCAxNSAxNSAyMCIgLz4KICA8cGF0aCBkPSJNNCA0djdhNCA0IDAgMCAwIDQgNGgxMiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/corner-down-right\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst CornerDownRight: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['polyline', { points: '15 10 20 15 15 20' }],\n ['path', { d: 'M4 4v7a4 4 0 0 0 4 4h12' }],\n ],\n];\n\nexport default CornerDownRight;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name dot\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMi4xIiBjeT0iMTIuMSIgcj0iMSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/dot\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst Dot: IconNode = ['svg', defaultAttributes, [['circle', { cx: '12.1', cy: '12.1', r: '1' }]]];\n\nexport default Dot;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name download\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNCIgLz4KICA8cG9seWxpbmUgcG9pbnRzPSI3IDEwIDEyIDE1IDE3IDEwIiAvPgogIDxsaW5lIHgxPSIxMiIgeDI9IjEyIiB5MT0iMTUiIHkyPSIzIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/download\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst Download: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['path', { d: 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4' }],\n ['polyline', { points: '7 10 12 15 17 10' }],\n ['line', { x1: '12', x2: '12', y1: '15', y2: '3' }],\n ],\n];\n\nexport default Download;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name ellipsis-vertical\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxIiAvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iNSIgcj0iMSIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjE5IiByPSIxIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/ellipsis-vertical\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst EllipsisVertical: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['circle', { cx: '12', cy: '12', r: '1' }],\n ['circle', { cx: '12', cy: '5', r: '1' }],\n ['circle', { cx: '12', cy: '19', r: '1' }],\n ],\n];\n\nexport default EllipsisVertical;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name eraser\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNyAyMS00LjMtNC4zYy0xLTEtMS0yLjUgMC0zLjRsOS42LTkuNmMxLTEgMi41LTEgMy40IDBsNS42IDUuNmMxIDEgMSAyLjUgMCAzLjRMMTMgMjEiIC8+CiAgPHBhdGggZD0iTTIyIDIxSDciIC8+CiAgPHBhdGggZD0ibTUgMTEgOSA5IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/eraser\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst Eraser: IconNode = [\n 'svg',\n defaultAttributes,\n [\n [\n 'path',\n { d: 'm7 21-4.3-4.3c-1-1-1-2.5 0-3.4l9.6-9.6c1-1 2.5-1 3.4 0l5.6 5.6c1 1 1 2.5 0 3.4L13 21' },\n ],\n ['path', { d: 'M22 21H7' }],\n ['path', { d: 'm5 11 9 9' }],\n ],\n];\n\nexport default Eraser;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name info\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8cGF0aCBkPSJNMTIgMTZ2LTQiIC8+CiAgPHBhdGggZD0iTTEyIDhoLjAxIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/info\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst Info: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['circle', { cx: '12', cy: '12', r: '10' }],\n ['path', { d: 'M12 16v-4' }],\n ['path', { d: 'M12 8h.01' }],\n ],\n];\n\nexport default Info;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name list-restart\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgNkgzIiAvPgogIDxwYXRoIGQ9Ik03IDEySDMiIC8+CiAgPHBhdGggZD0iTTcgMThIMyIgLz4KICA8cGF0aCBkPSJNMTIgMThhNSA1IDAgMCAwIDktMyA0LjUgNC41IDAgMCAwLTQuNS00LjVjLTEuMzMgMC0yLjU0LjU0LTMuNDEgMS40MUwxMSAxNCIgLz4KICA8cGF0aCBkPSJNMTEgMTB2NGg0IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/list-restart\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst ListRestart: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['path', { d: 'M21 6H3' }],\n ['path', { d: 'M7 12H3' }],\n ['path', { d: 'M7 18H3' }],\n ['path', { d: 'M12 18a5 5 0 0 0 9-3 4.5 4.5 0 0 0-4.5-4.5c-1.33 0-2.54.54-3.41 1.41L11 14' }],\n ['path', { d: 'M11 10v4h4' }],\n ],\n];\n\nexport default ListRestart;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name palette\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMy41IiBjeT0iNi41IiByPSIuNSIgZmlsbD0iY3VycmVudENvbG9yIiAvPgogIDxjaXJjbGUgY3g9IjE3LjUiIGN5PSIxMC41IiByPSIuNSIgZmlsbD0iY3VycmVudENvbG9yIiAvPgogIDxjaXJjbGUgY3g9IjguNSIgY3k9IjcuNSIgcj0iLjUiIGZpbGw9ImN1cnJlbnRDb2xvciIgLz4KICA8Y2lyY2xlIGN4PSI2LjUiIGN5PSIxMi41IiByPSIuNSIgZmlsbD0iY3VycmVudENvbG9yIiAvPgogIDxwYXRoIGQ9Ik0xMiAyQzYuNSAyIDIgNi41IDIgMTJzNC41IDEwIDEwIDEwYy45MjYgMCAxLjY0OC0uNzQ2IDEuNjQ4LTEuNjg4IDAtLjQzNy0uMTgtLjgzNS0uNDM3LTEuMTI1LS4yOS0uMjg5LS40MzgtLjY1Mi0uNDM4LTEuMTI1YTEuNjQgMS42NCAwIDAgMSAxLjY2OC0xLjY2OGgxLjk5NmMzLjA1MSAwIDUuNTU1LTIuNTAzIDUuNTU1LTUuNTU0QzIxLjk2NSA2LjAxMiAxNy40NjEgMiAxMiAyeiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/palette\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst Palette: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['circle', { cx: '13.5', cy: '6.5', r: '.5', fill: 'currentColor' }],\n ['circle', { cx: '17.5', cy: '10.5', r: '.5', fill: 'currentColor' }],\n ['circle', { cx: '8.5', cy: '7.5', r: '.5', fill: 'currentColor' }],\n ['circle', { cx: '6.5', cy: '12.5', r: '.5', fill: 'currentColor' }],\n [\n 'path',\n {\n d: 'M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z',\n },\n ],\n ],\n];\n\nexport default Palette;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name panel-left-close\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHg9IjMiIHk9IjMiIHJ4PSIyIiAvPgogIDxwYXRoIGQ9Ik05IDN2MTgiIC8+CiAgPHBhdGggZD0ibTE2IDE1LTMtMyAzLTMiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/panel-left-close\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst PanelLeftClose: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['rect', { width: '18', height: '18', x: '3', y: '3', rx: '2' }],\n ['path', { d: 'M9 3v18' }],\n ['path', { d: 'm16 15-3-3 3-3' }],\n ],\n];\n\nexport default PanelLeftClose;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name panel-left\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHg9IjMiIHk9IjMiIHJ4PSIyIiAvPgogIDxwYXRoIGQ9Ik05IDN2MTgiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/panel-left\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst PanelLeft: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['rect', { width: '18', height: '18', x: '3', y: '3', rx: '2' }],\n ['path', { d: 'M9 3v18' }],\n ],\n];\n\nexport default PanelLeft;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name plus\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJNMTIgNXYxNCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/plus\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst Plus: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['path', { d: 'M5 12h14' }],\n ['path', { d: 'M12 5v14' }],\n ],\n];\n\nexport default Plus;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name printer\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNiAxOEg0YTIgMiAwIDAgMS0yLTJ2LTVhMiAyIDAgMCAxIDItMmgxNmEyIDIgMCAwIDEgMiAydjVhMiAyIDAgMCAxLTIgMmgtMiIgLz4KICA8cGF0aCBkPSJNNiA5VjNhMSAxIDAgMCAxIDEtMWgxMGExIDEgMCAwIDEgMSAxdjYiIC8+CiAgPHJlY3QgeD0iNiIgeT0iMTQiIHdpZHRoPSIxMiIgaGVpZ2h0PSI4IiByeD0iMSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/printer\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst Printer: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['path', { d: 'M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2' }],\n ['path', { d: 'M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6' }],\n ['rect', { x: '6', y: '14', width: '12', height: '8', rx: '1' }],\n ],\n];\n\nexport default Printer;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name refresh-ccw\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgMTJhOSA5IDAgMCAwLTktOSA5Ljc1IDkuNzUgMCAwIDAtNi43NCAyLjc0TDMgOCIgLz4KICA8cGF0aCBkPSJNMyAzdjVoNSIgLz4KICA8cGF0aCBkPSJNMyAxMmE5IDkgMCAwIDAgOSA5IDkuNzUgOS43NSAwIDAgMCA2Ljc0LTIuNzRMMjEgMTYiIC8+CiAgPHBhdGggZD0iTTE2IDE2aDV2NSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/refresh-ccw\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst RefreshCcw: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['path', { d: 'M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8' }],\n ['path', { d: 'M3 3v5h5' }],\n ['path', { d: 'M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16' }],\n ['path', { d: 'M16 16h5v5' }],\n ],\n];\n\nexport default RefreshCcw;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name rotate-ccw\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMyAxMmE5IDkgMCAxIDAgOS05IDkuNzUgOS43NSAwIDAgMC02Ljc0IDIuNzRMMyA4IiAvPgogIDxwYXRoIGQ9Ik0zIDN2NWg1IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/rotate-ccw\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst RotateCcw: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['path', { d: 'M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8' }],\n ['path', { d: 'M3 3v5h5' }],\n ],\n];\n\nexport default RotateCcw;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name scaling\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGEyIDIgMCAwIDAgMi0ydi03IiAvPgogIDxwYXRoIGQ9Ik0xNCAxNUg5di01IiAvPgogIDxwYXRoIGQ9Ik0xNiAzaDV2NSIgLz4KICA8cGF0aCBkPSJNMjEgMyA5IDE1IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/scaling\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst Scaling: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['path', { d: 'M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7' }],\n ['path', { d: 'M14 15H9v-5' }],\n ['path', { d: 'M16 3h5v5' }],\n ['path', { d: 'M21 3 9 15' }],\n ],\n];\n\nexport default Scaling;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name settings\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIuMjIgMmgtLjQ0YTIgMiAwIDAgMC0yIDJ2LjE4YTIgMiAwIDAgMS0xIDEuNzNsLS40My4yNWEyIDIgMCAwIDEtMiAwbC0uMTUtLjA4YTIgMiAwIDAgMC0yLjczLjczbC0uMjIuMzhhMiAyIDAgMCAwIC43MyAyLjczbC4xNS4xYTIgMiAwIDAgMSAxIDEuNzJ2LjUxYTIgMiAwIDAgMS0xIDEuNzRsLS4xNS4wOWEyIDIgMCAwIDAtLjczIDIuNzNsLjIyLjM4YTIgMiAwIDAgMCAyLjczLjczbC4xNS0uMDhhMiAyIDAgMCAxIDIgMGwuNDMuMjVhMiAyIDAgMCAxIDEgMS43M1YyMGEyIDIgMCAwIDAgMiAyaC40NGEyIDIgMCAwIDAgMi0ydi0uMThhMiAyIDAgMCAxIDEtMS43M2wuNDMtLjI1YTIgMiAwIDAgMSAyIDBsLjE1LjA4YTIgMiAwIDAgMCAyLjczLS43M2wuMjItLjM5YTIgMiAwIDAgMC0uNzMtMi43M2wtLjE1LS4wOGEyIDIgMCAwIDEtMS0xLjc0di0uNWEyIDIgMCAwIDEgMS0xLjc0bC4xNS0uMDlhMiAyIDAgMCAwIC43My0yLjczbC0uMjItLjM4YTIgMiAwIDAgMC0yLjczLS43M2wtLjE1LjA4YTIgMiAwIDAgMS0yIDBsLS40My0uMjVhMiAyIDAgMCAxLTEtMS43M1Y0YTIgMiAwIDAgMC0yLTJ6IiAvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjMiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/settings\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst Settings: IconNode = [\n 'svg',\n defaultAttributes,\n [\n [\n 'path',\n {\n d: 'M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z',\n },\n ],\n ['circle', { cx: '12', cy: '12', r: '3' }],\n ],\n];\n\nexport default Settings;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name trash\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMyA2aDE4IiAvPgogIDxwYXRoIGQ9Ik0xOSA2djE0YzAgMS0xIDItMiAySDdjLTEgMC0yLTEtMi0yVjYiIC8+CiAgPHBhdGggZD0iTTggNlY0YzAtMSAxLTIgMi0yaDRjMSAwIDIgMSAyIDJ2MiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/trash\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst Trash: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['path', { d: 'M3 6h18' }],\n ['path', { d: 'M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6' }],\n ['path', { d: 'M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2' }],\n ],\n];\n\nexport default Trash;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name upload\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNCIgLz4KICA8cG9seWxpbmUgcG9pbnRzPSIxNyA4IDEyIDMgNyA4IiAvPgogIDxsaW5lIHgxPSIxMiIgeDI9IjEyIiB5MT0iMyIgeTI9IjE1IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/upload\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst Upload: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['path', { d: 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4' }],\n ['polyline', { points: '17 8 12 3 7 8' }],\n ['line', { x1: '12', x2: '12', y1: '3', y2: '15' }],\n ],\n];\n\nexport default Upload;\n", "import replaceElement from './replaceElement';\nimport * as iconAndAliases from './iconsAndAliases';\n\n/**\n * Replaces all elements with matching nameAttr with the defined icons\n * @param {{ icons?: object, nameAttr?: string, attrs?: object }} options\n */\nconst createIcons = ({ icons = {}, nameAttr = 'data-lucide', attrs = {} } = {}) => {\n if (!Object.values(icons).length) {\n throw new Error(\n \"Please provide an icons object.\\nIf you want to use all the icons you can import it like:\\n `import { createIcons, icons } from 'lucide';\\nlucide.createIcons({icons});`\",\n );\n }\n\n if (typeof document === 'undefined') {\n throw new Error('`createIcons()` only works in a browser environment.');\n }\n\n const elementsToReplace = document.querySelectorAll(`[${nameAttr}]`);\n Array.from(elementsToReplace).forEach((element) =>\n replaceElement(element, { nameAttr, icons, attrs }),\n );\n\n /** @todo: remove this block in v1.0 */\n if (nameAttr === 'data-lucide') {\n const deprecatedElements = document.querySelectorAll('[icon-name]');\n if (deprecatedElements.length > 0) {\n console.warn(\n '[Lucide] Some icons were found with the now deprecated icon-name attribute. These will still be replaced for backwards compatibility, but will no longer be supported in v1.0 and you should switch to data-lucide',\n );\n Array.from(deprecatedElements).forEach((element) =>\n replaceElement(element, { nameAttr: 'icon-name', icons, attrs }),\n );\n }\n }\n};\n\nexport { createIcons };\n\n/*\n Create Element function export.\n*/\nexport { default as createElement } from './createElement';\n\n/*\n Icons exports.\n*/\nexport { iconAndAliases as icons };\nexport * from './icons';\nexport * from './aliases';\n\n/*\n Types exports.\n*/\nexport * from './types';\n", "import {\n createIcons,\n AlertCircle,\n ArrowUpDown,\n Braces,\n Circle,\n Copy,\n CornerDownRight,\n Dot,\n Download,\n EllipsisVertical,\n Eraser,\n Info,\n ListRestart,\n Palette,\n PanelLeft,\n PanelLeftClose,\n Plus,\n Printer,\n RefreshCcw,\n RotateCcw,\n Scaling,\n Settings,\n Trash,\n Upload\n} from 'lucide'\n\nconst icons = {\n AlertCircle,\n ArrowUpDown,\n Braces,\n Circle,\n Copy,\n CornerDownRight,\n Dot,\n Download,\n EllipsisVertical,\n Eraser,\n Info,\n ListRestart,\n Palette,\n PanelLeft,\n PanelLeftClose,\n Plus,\n Printer,\n RefreshCcw,\n RotateCcw,\n Scaling,\n Settings,\n Trash,\n Upload\n}\n\n/** Generate app icons. */\nexport const generateIcons = () => {\n createIcons({ icons })\n}\n", "import { $, app } from './common'\n\nimport UIkit from 'uikit'\n\nexport const modal = {\n /**\n * Show modal dialog for given id.\n *\n * @param {string} id Modal Id.\n */\n show: (id) => {\n UIkit.modal(id, { bgClose: false, stack: true }).show()\n },\n /**\n * Hide modal dialog for given id.\n *\n * @param {string} id Modal Id.\n */\n hide: (id) => {\n UIkit.modal(id).hide()\n }\n}\n\n/**\n * Show error dialog.\n *\n * @param {string} title Title of dialog box.\n * @param {string} e Error message to show.\n */\nexport function showError(title, error) {\n UIkit.util.on('#dialog-error', 'beforeshow', () => {\n $('#errTitle').innerHTML = title\n $('#errMsg').innerHTML = error\n })\n\n modal.show('#dialog-error')\n}\n\n/**\n * Show app notifications.\n *\n * @param {string} msg Notification to show.\n * @param {string} stat Notification status: primary | success | warning | danger\n */\nexport function notify(msg, stat) {\n UIkit.notification({\n message: msg,\n pos: app.settings.notifyLocation,\n status: stat || 'primary',\n timeout: +app.settings.notifyDuration\n })\n}\n\n/**\n * Show confirmation dialog.\n *\n * @param {string} msg Confirmation message to show.\n * @param {function} action Function to run upon selecting Yes.\n */\nexport function confirm(msg, action) {\n $('#confirmMsg').innerHTML = msg\n\n modal.show('#dialog-confirm')\n\n const yesAction = (event) => {\n action()\n\n event.stopPropagation()\n\n UIkit.modal('#dialog-confirm').hide()\n\n $('#confirm-yes').removeEventListener('click', yesAction)\n }\n\n $('#confirm-yes').addEventListener('click', yesAction)\n\n UIkit.util.on('#dialog-confirm', 'hidden', () => {\n $('#confirm-yes').removeEventListener('click', yesAction)\n })\n}\n", "import { $, app, store } from './common'\nimport { notify } from './modal'\n\n/** Check if app is running on MacOS. */\nexport const isMac = navigator.userAgent.toLowerCase().includes('mac')\n\n/** Check if app is running in Electron. */\nexport const isElectron = navigator.userAgent.toLowerCase().includes('electron')\n\n/** Get app theme */\nexport function getTheme() {\n app.settings = store.get('settings')\n\n return app.settings?.theme === 'system'\n ? isElectron\n ? numara.isDark()\n ? 'dark'\n : 'light'\n : 'light'\n : app.settings?.theme === 'dark'\n ? 'dark'\n : 'light'\n}\n\n/** Check user locale for thousands separator. */\nexport function checkLocale() {\n const locale =\n app.settings.locale === 'system'\n ? navigator.languages && navigator.languages.length\n ? navigator.languages[0]\n : navigator.language\n : app.settings.locale\n\n return (1.11).toLocaleString(locale).match(/[,]/)\n}\n\n/** Check window size. */\nexport function checkSize() {\n $('#resetSizeButton').style.display = isElectron\n ? numara.isResized() && !numara.isMaximized()\n ? 'block'\n : 'none'\n : 'none'\n}\n\n/** Minimize/maximize window. */\nexport function toggleMinMax() {\n if (numara.isMaximized()) {\n numara.unmaximize()\n } else {\n numara.maximize()\n }\n}\n\n/** Check for app updates */\nexport function checkUpdates() {\n if (isElectron) {\n numara.checkUpdate()\n\n numara.notifyUpdate(() => {\n notify(\n 'Downloading latest version... View status'\n )\n\n $('#notificationDot').style.display = 'block'\n })\n\n numara.updateStatus((event, status) => {\n if (status === 'ready') {\n $('#dialog-about-updateStatus').innerHTML = 'New version is ready to be installed.'\n $('#updateButton').style.display = 'inline-block'\n\n if (!$('#dialog-about').classList.contains('uk-open')) {\n notify(\n 'New version is ready to be installed. Install Now'\n )\n }\n } else {\n $('#dialog-about-updateStatus').innerHTML = status\n }\n })\n }\n}\n", "const Coloris = (() => {\n /*!\r\n * Copyright (c) 2021-2024 Momo Bassit.\r\n * Licensed under the MIT License (MIT)\r\n * https://github.com/mdbassit/Coloris\r\n * Version: 0.24.0\r\n * NPM: https://github.com/melloware/coloris-npm\r\n */\n\n return ((window, document, Math, undefined) => {\n const ctx = document.createElement('canvas').getContext('2d');\n const currentColor = { r: 0, g: 0, b: 0, h: 0, s: 0, v: 0, a: 1 };\n let container,picker,colorArea,colorMarker,colorPreview,colorValue,clearButton,closeButton,\n hueSlider,hueMarker,alphaSlider,alphaMarker,currentEl,currentFormat,oldColor,keyboardNav,\n colorAreaDims = {};\n\n // Default settings\n const settings = {\n el: '[data-coloris]',\n parent: 'body',\n theme: 'default',\n themeMode: 'light',\n rtl: false,\n wrap: true,\n margin: 2,\n format: 'hex',\n formatToggle: false,\n swatches: [],\n swatchesOnly: false,\n alpha: true,\n forceAlpha: false,\n focusInput: true,\n selectInput: false,\n inline: false,\n defaultColor: '#000000',\n clearButton: false,\n clearLabel: 'Clear',\n closeButton: false,\n closeLabel: 'Close',\n onChange: () => undefined,\n a11y: {\n open: 'Open color picker',\n close: 'Close color picker',\n clear: 'Clear the selected color',\n marker: 'Saturation: {s}. Brightness: {v}.',\n hueSlider: 'Hue slider',\n alphaSlider: 'Opacity slider',\n input: 'Color value field',\n format: 'Color format',\n swatch: 'Color swatch',\n instruction: 'Saturation and brightness selector. Use up, down, left and right arrow keys to select.'\n }\n };\n\n // Virtual instances cache\n const instances = {};\n let currentInstanceId = '';\n let defaultInstance = {};\n let hasInstance = false;\n\n /**\r\n * Configure the color picker.\r\n * @param {object} options Configuration options.\r\n */\n function configure(options) {\n if (typeof options !== 'object') {\n return;\n }\n\n for (const key in options) {\n switch (key) {\n case 'el':\n bindFields(options.el);\n if (options.wrap !== false) {\n wrapFields(options.el);\n }\n break;\n case 'parent':\n container = options.parent instanceof HTMLElement ? options.parent : document.querySelector(options.parent);\n if (container) {\n container.appendChild(picker);\n settings.parent = options.parent;\n\n // document.body is special\n if (container === document.body) {\n container = undefined;\n }\n }\n break;\n case 'themeMode':\n settings.themeMode = options.themeMode;\n if (options.themeMode === 'auto' && window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n settings.themeMode = 'dark';\n }\n // The lack of a break statement is intentional\n case 'theme':\n if (options.theme) {\n settings.theme = options.theme;\n }\n\n // Set the theme and color scheme\n picker.className = \"clr-picker clr-\" + settings.theme + \" clr-\" + settings.themeMode;\n\n // Update the color picker's position if inline mode is in use\n if (settings.inline) {\n updatePickerPosition();\n }\n break;\n case 'rtl':\n settings.rtl = !!options.rtl;\n Array.from(document.getElementsByClassName('clr-field')).forEach((field) => field.classList.toggle('clr-rtl', settings.rtl));\n break;\n case 'margin':\n options.margin *= 1;\n settings.margin = !isNaN(options.margin) ? options.margin : settings.margin;\n break;\n case 'wrap':\n if (options.el && options.wrap) {\n wrapFields(options.el);\n }\n break;\n case 'formatToggle':\n settings.formatToggle = !!options.formatToggle;\n getEl('clr-format').style.display = settings.formatToggle ? 'block' : 'none';\n if (settings.formatToggle) {\n settings.format = 'auto';\n }\n break;\n case 'swatches':\n if (Array.isArray(options.swatches)) {\n const swatchesContainer = getEl('clr-swatches');\n const swatches = document.createElement('div');\n\n // Clear current swatches\n swatchesContainer.textContent = '';\n\n // Build new swatches\n options.swatches.forEach((swatch, i) => {\n const button = document.createElement('button');\n\n button.setAttribute('type', \"button\");\n button.setAttribute('id', \"clr-swatch-\" + i);\n button.setAttribute('aria-labelledby', \"clr-swatch-label clr-swatch-\" + i);\n button.style.color = swatch;\n button.textContent = swatch;\n\n swatches.appendChild(button);\n });\n\n // Append new swatches if any\n if (options.swatches.length) {\n swatchesContainer.appendChild(swatches);\n }\n\n settings.swatches = options.swatches.slice();\n }\n break;\n case 'swatchesOnly':\n settings.swatchesOnly = !!options.swatchesOnly;\n picker.setAttribute('data-minimal', settings.swatchesOnly);\n break;\n case 'alpha':\n settings.alpha = !!options.alpha;\n picker.setAttribute('data-alpha', settings.alpha);\n break;\n case 'inline':\n settings.inline = !!options.inline;\n picker.setAttribute('data-inline', settings.inline);\n\n if (settings.inline) {\n const defaultColor = options.defaultColor || settings.defaultColor;\n\n currentFormat = getColorFormatFromStr(defaultColor);\n updatePickerPosition();\n setColorFromStr(defaultColor);\n }\n break;\n case 'clearButton':\n // Backward compatibility\n if (typeof options.clearButton === 'object') {\n if (options.clearButton.label) {\n settings.clearLabel = options.clearButton.label;\n clearButton.innerHTML = settings.clearLabel;\n }\n\n options.clearButton = options.clearButton.show;\n }\n\n settings.clearButton = !!options.clearButton;\n clearButton.style.display = settings.clearButton ? 'block' : 'none';\n break;\n case 'clearLabel':\n settings.clearLabel = options.clearLabel;\n clearButton.innerHTML = settings.clearLabel;\n break;\n case 'closeButton':\n settings.closeButton = !!options.closeButton;\n\n if (settings.closeButton) {\n picker.insertBefore(closeButton, colorPreview);\n } else {\n colorPreview.appendChild(closeButton);\n }\n\n break;\n case 'closeLabel':\n settings.closeLabel = options.closeLabel;\n closeButton.innerHTML = settings.closeLabel;\n break;\n case 'a11y':\n const labels = options.a11y;\n let update = false;\n\n if (typeof labels === 'object') {\n for (const label in labels) {\n if (labels[label] && settings.a11y[label]) {\n settings.a11y[label] = labels[label];\n update = true;\n }\n }\n }\n\n if (update) {\n const openLabel = getEl('clr-open-label');\n const swatchLabel = getEl('clr-swatch-label');\n\n openLabel.innerHTML = settings.a11y.open;\n swatchLabel.innerHTML = settings.a11y.swatch;\n closeButton.setAttribute('aria-label', settings.a11y.close);\n clearButton.setAttribute('aria-label', settings.a11y.clear);\n hueSlider.setAttribute('aria-label', settings.a11y.hueSlider);\n alphaSlider.setAttribute('aria-label', settings.a11y.alphaSlider);\n colorValue.setAttribute('aria-label', settings.a11y.input);\n colorArea.setAttribute('aria-label', settings.a11y.instruction);\n }\n break;\n default:\n settings[key] = options[key];\n }\n }\n }\n\n /**\r\n * Add or update a virtual instance.\r\n * @param {String} selector The CSS selector of the elements to which the instance is attached.\r\n * @param {Object} options Per-instance options to apply.\r\n */\n function setVirtualInstance(selector, options) {\n if (typeof selector === 'string' && typeof options === 'object') {\n instances[selector] = options;\n hasInstance = true;\n }\n }\n\n /**\r\n * Remove a virtual instance.\r\n * @param {String} selector The CSS selector of the elements to which the instance is attached.\r\n */\n function removeVirtualInstance(selector) {\n delete instances[selector];\n\n if (Object.keys(instances).length === 0) {\n hasInstance = false;\n\n if (selector === currentInstanceId) {\n resetVirtualInstance();\n }\n }\n }\n\n /**\r\n * Attach a virtual instance to an element if it matches a selector.\r\n * @param {Object} element Target element that will receive a virtual instance if applicable.\r\n */\n function attachVirtualInstance(element) {\n if (hasInstance) {\n // These options can only be set globally, not per instance\n const unsupportedOptions = ['el', 'wrap', 'rtl', 'inline', 'defaultColor', 'a11y'];\n\n for (let selector in instances) {\n const options = instances[selector];\n\n // If the element matches an instance's CSS selector\n if (element.matches(selector)) {\n currentInstanceId = selector;\n defaultInstance = {};\n\n // Delete unsupported options\n unsupportedOptions.forEach((option) => delete options[option]);\n\n // Back up the default options so we can restore them later\n for (let option in options) {\n defaultInstance[option] = Array.isArray(settings[option]) ? settings[option].slice() : settings[option];\n }\n\n // Set the instance's options\n configure(options);\n break;\n }\n }\n }\n }\n\n /**\r\n * Revert any per-instance options that were previously applied.\r\n */\n function resetVirtualInstance() {\n if (Object.keys(defaultInstance).length > 0) {\n configure(defaultInstance);\n currentInstanceId = '';\n defaultInstance = {};\n }\n }\n\n /**\r\n * Bind the color picker to input fields that match the selector.\r\n * @param {(string|HTMLElement|HTMLElement[])} selector A CSS selector string, a DOM element or a list of DOM elements.\r\n */\n function bindFields(selector) {\n if (selector instanceof HTMLElement) {\n selector = [selector];\n }\n\n if (Array.isArray(selector)) {\n selector.forEach((field) => {\n addListener(field, 'click', openPicker);\n addListener(field, 'input', updateColorPreview);\n });\n } else {\n addListener(document, 'click', selector, openPicker);\n addListener(document, 'input', selector, updateColorPreview);\n }\n }\n\n /**\r\n * Open the color picker.\r\n * @param {object} event The event that opens the color picker.\r\n */\n function openPicker(event) {\n // Skip if inline mode is in use\n if (settings.inline) {\n return;\n }\n\n // Apply any per-instance options first\n attachVirtualInstance(event.target);\n\n currentEl = event.target;\n oldColor = currentEl.value;\n currentFormat = getColorFormatFromStr(oldColor);\n picker.classList.add('clr-open');\n\n updatePickerPosition();\n setColorFromStr(oldColor);\n\n if (settings.focusInput || settings.selectInput) {\n colorValue.focus({ preventScroll: true });\n colorValue.setSelectionRange(currentEl.selectionStart, currentEl.selectionEnd);\n }\n\n if (settings.selectInput) {\n colorValue.select();\n }\n\n // Always focus the first element when using keyboard navigation\n if (keyboardNav || settings.swatchesOnly) {\n getFocusableElements().shift().focus();\n }\n\n // Trigger an \"open\" event\n currentEl.dispatchEvent(new Event('open', { bubbles: true }));\n }\n\n /**\r\n * Update the color picker's position and the color gradient's offset\r\n */\n function updatePickerPosition() {\n if (!picker || !currentEl && !settings.inline) return; //** DO NOT REMOVE: in case called before initialized\n const parent = container;\n const scrollY = window.scrollY;\n const pickerWidth = picker.offsetWidth;\n const pickerHeight = picker.offsetHeight;\n const reposition = { left: false, top: false };\n let parentStyle, parentMarginTop, parentBorderTop;\n let offset = { x: 0, y: 0 };\n\n if (parent) {\n parentStyle = window.getComputedStyle(parent);\n parentMarginTop = parseFloat(parentStyle.marginTop);\n parentBorderTop = parseFloat(parentStyle.borderTopWidth);\n\n offset = parent.getBoundingClientRect();\n offset.y += parentBorderTop + scrollY;\n }\n\n if (!settings.inline) {\n const coords = currentEl.getBoundingClientRect();\n let left = coords.x;\n let top = scrollY + coords.y + coords.height + settings.margin;\n\n // If the color picker is inside a custom container\n // set the position relative to it\n if (parent) {\n left -= offset.x;\n top -= offset.y;\n\n if (left + pickerWidth > parent.clientWidth) {\n left += coords.width - pickerWidth;\n reposition.left = true;\n }\n\n if (top + pickerHeight > parent.clientHeight - parentMarginTop) {\n if (pickerHeight + settings.margin <= coords.top - (offset.y - scrollY)) {\n top -= coords.height + pickerHeight + settings.margin * 2;\n reposition.top = true;\n }\n }\n\n top += parent.scrollTop;\n\n // Otherwise set the position relative to the whole document\n } else {\n if (left + pickerWidth > document.documentElement.clientWidth) {\n left += coords.width - pickerWidth;\n reposition.left = true;\n }\n\n if (top + pickerHeight - scrollY > document.documentElement.clientHeight) {\n if (pickerHeight + settings.margin <= coords.top) {\n top = scrollY + coords.y - pickerHeight - settings.margin;\n reposition.top = true;\n }\n }\n }\n\n picker.classList.toggle('clr-left', reposition.left);\n picker.classList.toggle('clr-top', reposition.top);\n picker.style.left = left + \"px\";\n picker.style.top = top + \"px\";\n offset.x += picker.offsetLeft;\n offset.y += picker.offsetTop;\n }\n\n colorAreaDims = {\n width: colorArea.offsetWidth,\n height: colorArea.offsetHeight,\n x: colorArea.offsetLeft + offset.x,\n y: colorArea.offsetTop + offset.y\n };\n }\n\n /**\r\n * Wrap the linked input fields in a div that adds a color preview.\r\n * @param {(string|HTMLElement|HTMLElement[])} selector A CSS selector string, a DOM element or a list of DOM elements.\r\n */\n function wrapFields(selector) {\n if (selector instanceof HTMLElement) {\n wrapColorField(selector);\n } else if (Array.isArray(selector)) {\n selector.forEach(wrapColorField);\n } else {\n document.querySelectorAll(selector).forEach(wrapColorField);\n }\n }\n\n /**\r\n * Wrap an input field in a div that adds a color preview.\r\n * @param {object} field The input field.\r\n */\n function wrapColorField(field) {\n const parentNode = field.parentNode;\n\n if (!parentNode.classList.contains('clr-field')) {\n const wrapper = document.createElement('div');\n let classes = 'clr-field';\n\n if (settings.rtl || field.classList.contains('clr-rtl')) {\n classes += ' clr-rtl';\n }\n\n wrapper.innerHTML = '';\n parentNode.insertBefore(wrapper, field);\n wrapper.className = classes;\n wrapper.style.color = field.value;\n wrapper.appendChild(field);\n }\n }\n\n /**\r\n * Update the color preview of an input field\r\n * @param {object} event The \"input\" event that triggers the color change.\r\n */\n function updateColorPreview(event) {\n const parent = event.target.parentNode;\n\n // Only update the preview if the field has been previously wrapped\n if (parent.classList.contains('clr-field')) {\n parent.style.color = event.target.value;\n }\n }\n\n /**\r\n * Close the color picker.\r\n * @param {boolean} [revert] If true, revert the color to the original value.\r\n */\n function closePicker(revert) {\n if (currentEl && !settings.inline) {\n const prevEl = currentEl;\n\n // Revert the color to the original value if needed\n if (revert) {\n // This will prevent the \"change\" event on the colorValue input to execute its handler\n currentEl = undefined;\n\n if (oldColor !== prevEl.value) {\n prevEl.value = oldColor;\n\n // Trigger an \"input\" event to force update the thumbnail next to the input field\n prevEl.dispatchEvent(new Event('input', { bubbles: true }));\n }\n }\n\n // Trigger a \"change\" event if needed\n setTimeout(() => {// Add this to the end of the event loop\n if (oldColor !== prevEl.value) {\n prevEl.dispatchEvent(new Event('change', { bubbles: true }));\n }\n });\n\n // Hide the picker dialog\n picker.classList.remove('clr-open');\n\n // Reset any previously set per-instance options\n if (hasInstance) {\n resetVirtualInstance();\n }\n\n // Trigger a \"close\" event\n prevEl.dispatchEvent(new Event('close', { bubbles: true }));\n\n if (settings.focusInput) {\n prevEl.focus({ preventScroll: true });\n }\n\n // This essentially marks the picker as closed\n currentEl = undefined;\n }\n }\n\n /**\r\n * Set the active color from a string.\r\n * @param {string} str String representing a color.\r\n */\n function setColorFromStr(str) {\n const rgba = strToRGBA(str);\n const hsva = RGBAtoHSVA(rgba);\n\n updateMarkerA11yLabel(hsva.s, hsva.v);\n updateColor(rgba, hsva);\n\n // Update the UI\n hueSlider.value = hsva.h;\n picker.style.color = \"hsl(\" + hsva.h + \", 100%, 50%)\";\n hueMarker.style.left = hsva.h / 360 * 100 + \"%\";\n\n colorMarker.style.left = colorAreaDims.width * hsva.s / 100 + \"px\";\n colorMarker.style.top = colorAreaDims.height - colorAreaDims.height * hsva.v / 100 + \"px\";\n\n alphaSlider.value = hsva.a * 100;\n alphaMarker.style.left = hsva.a * 100 + \"%\";\n }\n\n /**\r\n * Guess the color format from a string.\r\n * @param {string} str String representing a color.\r\n * @return {string} The color format.\r\n */\n function getColorFormatFromStr(str) {\n const format = str.substring(0, 3).toLowerCase();\n\n if (format === 'rgb' || format === 'hsl') {\n return format;\n }\n\n return 'hex';\n }\n\n /**\r\n * Copy the active color to the linked input field.\r\n * @param {number} [color] Color value to override the active color.\r\n */\n function pickColor(color) {\n color = color !== undefined ? color : colorValue.value;\n\n if (currentEl) {\n currentEl.value = color;\n currentEl.dispatchEvent(new Event('input', { bubbles: true }));\n }\n\n if (settings.onChange) {\n settings.onChange.call(window, color, currentEl);\n }\n\n document.dispatchEvent(new CustomEvent('coloris:pick', { detail: { color, currentEl } }));\n }\n\n /**\r\n * Set the active color based on a specific point in the color gradient.\r\n * @param {number} x Left position.\r\n * @param {number} y Top position.\r\n */\n function setColorAtPosition(x, y) {\n const hsva = {\n h: hueSlider.value * 1,\n s: x / colorAreaDims.width * 100,\n v: 100 - y / colorAreaDims.height * 100,\n a: alphaSlider.value / 100\n };\n const rgba = HSVAtoRGBA(hsva);\n\n updateMarkerA11yLabel(hsva.s, hsva.v);\n updateColor(rgba, hsva);\n pickColor();\n }\n\n /**\r\n * Update the color marker's accessibility label.\r\n * @param {number} saturation\r\n * @param {number} value\r\n */\n function updateMarkerA11yLabel(saturation, value) {\n let label = settings.a11y.marker;\n\n saturation = saturation.toFixed(1) * 1;\n value = value.toFixed(1) * 1;\n label = label.replace('{s}', saturation);\n label = label.replace('{v}', value);\n colorMarker.setAttribute('aria-label', label);\n }\n\n //\n /**\r\n * Get the pageX and pageY positions of the pointer.\r\n * @param {object} event The MouseEvent or TouchEvent object.\r\n * @return {object} The pageX and pageY positions.\r\n */\n function getPointerPosition(event) {\n return {\n pageX: event.changedTouches ? event.changedTouches[0].pageX : event.pageX,\n pageY: event.changedTouches ? event.changedTouches[0].pageY : event.pageY\n };\n }\n\n /**\r\n * Move the color marker when dragged.\r\n * @param {object} event The MouseEvent object.\r\n */\n function moveMarker(event) {\n const pointer = getPointerPosition(event);\n let x = pointer.pageX - colorAreaDims.x;\n let y = pointer.pageY - colorAreaDims.y;\n\n if (container) {\n y += container.scrollTop;\n }\n\n setMarkerPosition(x, y);\n\n // Prevent scrolling while dragging the marker\n event.preventDefault();\n event.stopPropagation();\n }\n\n /**\r\n * Move the color marker when the arrow keys are pressed.\r\n * @param {number} offsetX The horizontal amount to move.\r\n * @param {number} offsetY The vertical amount to move.\r\n */\n function moveMarkerOnKeydown(offsetX, offsetY) {\n let x = colorMarker.style.left.replace('px', '') * 1 + offsetX;\n let y = colorMarker.style.top.replace('px', '') * 1 + offsetY;\n\n setMarkerPosition(x, y);\n }\n\n /**\r\n * Set the color marker's position.\r\n * @param {number} x Left position.\r\n * @param {number} y Top position.\r\n */\n function setMarkerPosition(x, y) {\n // Make sure the marker doesn't go out of bounds\n x = x < 0 ? 0 : x > colorAreaDims.width ? colorAreaDims.width : x;\n y = y < 0 ? 0 : y > colorAreaDims.height ? colorAreaDims.height : y;\n\n // Set the position\n colorMarker.style.left = x + \"px\";\n colorMarker.style.top = y + \"px\";\n\n // Update the color\n setColorAtPosition(x, y);\n\n // Make sure the marker is focused\n colorMarker.focus();\n }\n\n /**\r\n * Update the color picker's input field and preview thumb.\r\n * @param {Object} rgba Red, green, blue and alpha values.\r\n * @param {Object} [hsva] Hue, saturation, value and alpha values.\r\n */\n function updateColor(rgba, hsva) {if (rgba === void 0) {rgba = {};}if (hsva === void 0) {hsva = {};}\n let format = settings.format;\n\n for (const key in rgba) {\n currentColor[key] = rgba[key];\n }\n\n for (const key in hsva) {\n currentColor[key] = hsva[key];\n }\n\n const hex = RGBAToHex(currentColor);\n const opaqueHex = hex.substring(0, 7);\n\n colorMarker.style.color = opaqueHex;\n alphaMarker.parentNode.style.color = opaqueHex;\n alphaMarker.style.color = hex;\n colorPreview.style.color = hex;\n\n // Force repaint the color and alpha gradients as a workaround for a Google Chrome bug\n colorArea.style.display = 'none';\n colorArea.offsetHeight;\n colorArea.style.display = '';\n alphaMarker.nextElementSibling.style.display = 'none';\n alphaMarker.nextElementSibling.offsetHeight;\n alphaMarker.nextElementSibling.style.display = '';\n\n if (format === 'mixed') {\n format = currentColor.a === 1 ? 'hex' : 'rgb';\n } else if (format === 'auto') {\n format = currentFormat;\n }\n\n switch (format) {\n case 'hex':\n colorValue.value = hex;\n break;\n case 'rgb':\n colorValue.value = RGBAToStr(currentColor);\n break;\n case 'hsl':\n colorValue.value = HSLAToStr(HSVAtoHSLA(currentColor));\n break;\n }\n\n // Select the current format in the format switcher\n document.querySelector(\".clr-format [value=\\\"\" + format + \"\\\"]\").checked = true;\n }\n\n /**\r\n * Set the hue when its slider is moved.\r\n */\n function setHue() {\n const hue = hueSlider.value * 1;\n const x = colorMarker.style.left.replace('px', '') * 1;\n const y = colorMarker.style.top.replace('px', '') * 1;\n\n picker.style.color = \"hsl(\" + hue + \", 100%, 50%)\";\n hueMarker.style.left = hue / 360 * 100 + \"%\";\n\n setColorAtPosition(x, y);\n }\n\n /**\r\n * Set the alpha when its slider is moved.\r\n */\n function setAlpha() {\n const alpha = alphaSlider.value / 100;\n\n alphaMarker.style.left = alpha * 100 + \"%\";\n updateColor({ a: alpha });\n pickColor();\n }\n\n /**\r\n * Convert HSVA to RGBA.\r\n * @param {object} hsva Hue, saturation, value and alpha values.\r\n * @return {object} Red, green, blue and alpha values.\r\n */\n function HSVAtoRGBA(hsva) {\n const saturation = hsva.s / 100;\n const value = hsva.v / 100;\n let chroma = saturation * value;\n let hueBy60 = hsva.h / 60;\n let x = chroma * (1 - Math.abs(hueBy60 % 2 - 1));\n let m = value - chroma;\n\n chroma = chroma + m;\n x = x + m;\n\n const index = Math.floor(hueBy60) % 6;\n const red = [chroma, x, m, m, x, chroma][index];\n const green = [x, chroma, chroma, x, m, m][index];\n const blue = [m, m, x, chroma, chroma, x][index];\n\n return {\n r: Math.round(red * 255),\n g: Math.round(green * 255),\n b: Math.round(blue * 255),\n a: hsva.a\n };\n }\n\n /**\r\n * Convert HSVA to HSLA.\r\n * @param {object} hsva Hue, saturation, value and alpha values.\r\n * @return {object} Hue, saturation, lightness and alpha values.\r\n */\n function HSVAtoHSLA(hsva) {\n const value = hsva.v / 100;\n const lightness = value * (1 - hsva.s / 100 / 2);\n let saturation;\n\n if (lightness > 0 && lightness < 1) {\n saturation = Math.round((value - lightness) / Math.min(lightness, 1 - lightness) * 100);\n }\n\n return {\n h: hsva.h,\n s: saturation || 0,\n l: Math.round(lightness * 100),\n a: hsva.a\n };\n }\n\n /**\r\n * Convert RGBA to HSVA.\r\n * @param {object} rgba Red, green, blue and alpha values.\r\n * @return {object} Hue, saturation, value and alpha values.\r\n */\n function RGBAtoHSVA(rgba) {\n const red = rgba.r / 255;\n const green = rgba.g / 255;\n const blue = rgba.b / 255;\n const xmax = Math.max(red, green, blue);\n const xmin = Math.min(red, green, blue);\n const chroma = xmax - xmin;\n const value = xmax;\n let hue = 0;\n let saturation = 0;\n\n if (chroma) {\n if (xmax === red) {hue = (green - blue) / chroma;}\n if (xmax === green) {hue = 2 + (blue - red) / chroma;}\n if (xmax === blue) {hue = 4 + (red - green) / chroma;}\n if (xmax) {saturation = chroma / xmax;}\n }\n\n hue = Math.floor(hue * 60);\n\n return {\n h: hue < 0 ? hue + 360 : hue,\n s: Math.round(saturation * 100),\n v: Math.round(value * 100),\n a: rgba.a\n };\n }\n\n /**\r\n * Parse a string to RGBA.\r\n * @param {string} str String representing a color.\r\n * @return {object} Red, green, blue and alpha values.\r\n */\n function strToRGBA(str) {\n const regex = /^((rgba)|rgb)[\\D]+([\\d.]+)[\\D]+([\\d.]+)[\\D]+([\\d.]+)[\\D]*?([\\d.]+|$)/i;\n let match, rgba;\n\n // Default to black for invalid color strings\n ctx.fillStyle = '#000';\n\n // Use canvas to convert the string to a valid color string\n ctx.fillStyle = str;\n match = regex.exec(ctx.fillStyle);\n\n if (match) {\n rgba = {\n r: match[3] * 1,\n g: match[4] * 1,\n b: match[5] * 1,\n a: match[6] * 1\n };\n\n } else {\n match = ctx.fillStyle.replace('#', '').match(/.{2}/g).map((h) => parseInt(h, 16));\n rgba = {\n r: match[0],\n g: match[1],\n b: match[2],\n a: 1\n };\n }\n\n return rgba;\n }\n\n /**\r\n * Convert RGBA to Hex.\r\n * @param {object} rgba Red, green, blue and alpha values.\r\n * @return {string} Hex color string.\r\n */\n function RGBAToHex(rgba) {\n let R = rgba.r.toString(16);\n let G = rgba.g.toString(16);\n let B = rgba.b.toString(16);\n let A = '';\n\n if (rgba.r < 16) {\n R = '0' + R;\n }\n\n if (rgba.g < 16) {\n G = '0' + G;\n }\n\n if (rgba.b < 16) {\n B = '0' + B;\n }\n\n if (settings.alpha && (rgba.a < 1 || settings.forceAlpha)) {\n const alpha = rgba.a * 255 | 0;\n A = alpha.toString(16);\n\n if (alpha < 16) {\n A = '0' + A;\n }\n }\n\n return '#' + R + G + B + A;\n }\n\n /**\r\n * Convert RGBA values to a CSS rgb/rgba string.\r\n * @param {object} rgba Red, green, blue and alpha values.\r\n * @return {string} CSS color string.\r\n */\n function RGBAToStr(rgba) {\n if (!settings.alpha || rgba.a === 1 && !settings.forceAlpha) {\n return \"rgb(\" + rgba.r + \", \" + rgba.g + \", \" + rgba.b + \")\";\n } else {\n return \"rgba(\" + rgba.r + \", \" + rgba.g + \", \" + rgba.b + \", \" + rgba.a + \")\";\n }\n }\n\n /**\r\n * Convert HSLA values to a CSS hsl/hsla string.\r\n * @param {object} hsla Hue, saturation, lightness and alpha values.\r\n * @return {string} CSS color string.\r\n */\n function HSLAToStr(hsla) {\n if (!settings.alpha || hsla.a === 1 && !settings.forceAlpha) {\n return \"hsl(\" + hsla.h + \", \" + hsla.s + \"%, \" + hsla.l + \"%)\";\n } else {\n return \"hsla(\" + hsla.h + \", \" + hsla.s + \"%, \" + hsla.l + \"%, \" + hsla.a + \")\";\n }\n }\n\n /**\r\n * Init the color picker.\r\n */\n function init() {\n if (document.getElementById('clr-picker')) return; //** DO NOT REMOVE: Prevent binding events multiple times\n // Render the UI\n container = undefined;\n picker = document.createElement('div');\n picker.setAttribute('id', 'clr-picker');\n picker.className = 'clr-picker';\n picker.innerHTML =\n \"\" + (\"
    \") +\n '
    ' +\n '
    ' +\n '
    ' + (\"\") +\n '
    ' +\n '
    ' +\n '
    ' + (\"\") +\n '
    ' +\n '' +\n '
    ' +\n '
    ' +\n '
    ' + (\"\" +\n settings.a11y.format + \"\") +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '
    ' +\n '
    ' +\n '
    ' + (\"\") +\n '
    ' + (\"\") +\n '
    ' + (\"\") + (\"\");\n\n // Append the color picker to the DOM\n document.body.appendChild(picker);\n\n // Reference the UI elements\n colorArea = getEl('clr-color-area');\n colorMarker = getEl('clr-color-marker');\n clearButton = getEl('clr-clear');\n closeButton = getEl('clr-close');\n colorPreview = getEl('clr-color-preview');\n colorValue = getEl('clr-color-value');\n hueSlider = getEl('clr-hue-slider');\n hueMarker = getEl('clr-hue-marker');\n alphaSlider = getEl('clr-alpha-slider');\n alphaMarker = getEl('clr-alpha-marker');\n\n // Bind the picker to the default selector\n bindFields(settings.el);\n wrapFields(settings.el);\n\n addListener(picker, 'mousedown', (event) => {\n picker.classList.remove('clr-keyboard-nav');\n event.stopPropagation();\n });\n\n addListener(colorArea, 'mousedown', (event) => {\n addListener(document, 'mousemove', moveMarker);\n });\n\n addListener(colorArea, 'contextmenu', (event) => {\n event.preventDefault();\n });\n\n addListener(colorArea, 'touchstart', (event) => {\n document.addEventListener('touchmove', moveMarker, { passive: false });\n });\n\n addListener(colorMarker, 'mousedown', (event) => {\n addListener(document, 'mousemove', moveMarker);\n });\n\n addListener(colorMarker, 'touchstart', (event) => {\n document.addEventListener('touchmove', moveMarker, { passive: false });\n });\n\n addListener(colorValue, 'change', (event) => {\n const value = colorValue.value;\n\n if (currentEl || settings.inline) {\n const color = value === '' ? value : setColorFromStr(value);\n pickColor(color);\n }\n });\n\n addListener(clearButton, 'click', (event) => {\n pickColor('');\n closePicker();\n });\n\n addListener(closeButton, 'click', (event) => {\n pickColor();\n closePicker();\n });\n\n addListener(getEl('clr-format'), 'click', '.clr-format input', (event) => {\n currentFormat = event.target.value;\n updateColor();\n pickColor();\n });\n\n addListener(picker, 'click', '.clr-swatches button', (event) => {\n setColorFromStr(event.target.textContent);\n pickColor();\n\n if (settings.swatchesOnly) {\n closePicker();\n }\n });\n\n addListener(document, 'mouseup', (event) => {\n document.removeEventListener('mousemove', moveMarker);\n });\n\n addListener(document, 'touchend', (event) => {\n document.removeEventListener('touchmove', moveMarker);\n });\n\n addListener(document, 'mousedown', (event) => {\n keyboardNav = false;\n picker.classList.remove('clr-keyboard-nav');\n closePicker();\n });\n\n addListener(document, 'keydown', (event) => {\n const key = event.key;\n const target = event.target;\n const shiftKey = event.shiftKey;\n const navKeys = ['Tab', 'ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'];\n\n if (key === 'Escape') {\n closePicker(true);\n\n // Display focus rings when using the keyboard\n } else if (navKeys.includes(key)) {\n keyboardNav = true;\n picker.classList.add('clr-keyboard-nav');\n }\n\n // Trap the focus within the color picker while it's open\n if (key === 'Tab' && target.matches('.clr-picker *')) {\n const focusables = getFocusableElements();\n const firstFocusable = focusables.shift();\n const lastFocusable = focusables.pop();\n\n if (shiftKey && target === firstFocusable) {\n lastFocusable.focus();\n event.preventDefault();\n } else if (!shiftKey && target === lastFocusable) {\n firstFocusable.focus();\n event.preventDefault();\n }\n }\n });\n\n addListener(document, 'click', '.clr-field button', (event) => {\n // Reset any previously set per-instance options\n if (hasInstance) {\n resetVirtualInstance();\n }\n\n // Open the color picker\n event.target.nextElementSibling.dispatchEvent(new Event('click', { bubbles: true }));\n });\n\n addListener(colorMarker, 'keydown', (event) => {\n const movements = {\n ArrowUp: [0, -1],\n ArrowDown: [0, 1],\n ArrowLeft: [-1, 0],\n ArrowRight: [1, 0]\n };\n\n if (Object.keys(movements).includes(event.key)) {\n moveMarkerOnKeydown(...movements[event.key]);\n event.preventDefault();\n }\n });\n\n addListener(colorArea, 'click', moveMarker);\n addListener(hueSlider, 'input', setHue);\n addListener(alphaSlider, 'input', setAlpha);\n }\n\n /**\r\n * Return a list of focusable elements within the color picker.\r\n * @return {array} The list of focusable DOM elemnts.\r\n */\n function getFocusableElements() {\n const controls = Array.from(picker.querySelectorAll('input, button'));\n const focusables = controls.filter((node) => !!node.offsetWidth);\n\n return focusables;\n }\n\n /**\r\n * Shortcut for getElementById to optimize the minified JS.\r\n * @param {string} id The element id.\r\n * @return {object} The DOM element with the provided id.\r\n */\n function getEl(id) {\n return document.getElementById(id);\n }\n\n /**\r\n * Shortcut for addEventListener to optimize the minified JS.\r\n * @param {object} context The context to which the listener is attached.\r\n * @param {string} type Event type.\r\n * @param {(string|function)} selector Event target if delegation is used, event handler if not.\r\n * @param {function} [fn] Event handler if delegation is used.\r\n */\n function addListener(context, type, selector, fn) {\n const matches = Element.prototype.matches || Element.prototype.msMatchesSelector;\n\n // Delegate event to the target of the selector\n if (typeof selector === 'string') {\n context.addEventListener(type, (event) => {\n if (matches.call(event.target, selector)) {\n fn.call(event.target, event);\n }\n });\n\n // If the selector is not a string then it's a function\n // in which case we need a regular event listener\n } else {\n fn = selector;\n context.addEventListener(type, fn);\n }\n }\n\n /**\r\n * Call a function only when the DOM is ready.\r\n * @param {function} fn The function to call.\r\n * @param {array} [args] Arguments to pass to the function.\r\n */\n function DOMReady(fn, args) {\n args = args !== undefined ? args : [];\n\n if (document.readyState !== 'loading') {\n fn(...args);\n } else {\n document.addEventListener('DOMContentLoaded', () => {\n fn(...args);\n });\n }\n }\n\n // Polyfill for Nodelist.forEach\n if (NodeList !== undefined && NodeList.prototype && !NodeList.prototype.forEach) {\n NodeList.prototype.forEach = Array.prototype.forEach;\n }\n\n //*****************************************************\n //******* NPM: Custom code starts here ****************\n //*****************************************************\n\n /**\r\n * Copy the active color to the linked input field and set the color.\r\n * @param {string} [color] Color value to override the active color.\r\n * @param {HTMLelement} [target] the element setting the color on\r\n */\n function setColor(color, target) {\n currentEl = target;\n oldColor = currentEl.value;\n attachVirtualInstance(target);\n currentFormat = getColorFormatFromStr(color);\n updatePickerPosition();\n setColorFromStr(color);\n pickColor();\n if (oldColor !== color) {\n currentEl.dispatchEvent(new Event('change', { bubbles: true }));\n }\n }\n\n // Expose the color picker to the global scope\n const Coloris = (() => {\n const methods = {\n init: init,\n set: configure,\n wrap: wrapFields,\n close: closePicker,\n setInstance: setVirtualInstance,\n setColor: setColor,\n removeInstance: removeVirtualInstance,\n updatePosition: updatePickerPosition,\n ready: DOMReady\n };\n\n function Coloris(options) {\n DOMReady(() => {\n if (options) {\n if (typeof options === 'string') {\n bindFields(options);\n } else {\n configure(options);\n }\n }\n });\n }\n\n for (const key in methods) {\n Coloris[key] = function () {for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}\n DOMReady(methods[key], args);\n };\n }\n\n // handle window resize events re-aligning the panel\n DOMReady(() => {\n window.addEventListener('resize', (event) => {Coloris.updatePosition();});\n window.addEventListener('scroll', (event) => {Coloris.updatePosition();});\n });\n\n return Coloris;\n })();\n\n // Ensure init function is available not only as as a default import\n Coloris.coloris = Coloris;\n\n // Init the color picker when the DOM is ready\n return Coloris;\n\n })(window, document, Math);\n})();\n\nconst _coloris = Coloris.coloris;\nconst _init = Coloris.init;\nconst _set = Coloris.set;\nconst _wrap = Coloris.wrap;\nconst _close = Coloris.close;\nconst _setInstance = Coloris.setInstance;\nconst _removeInstance = Coloris.removeInstance;\nconst _updatePosition = Coloris.updatePosition;\nexport default Coloris;\nexport {\n _coloris as coloris,\n _close as close,\n _init as init,\n _set as set,\n _wrap as wrap,\n _setInstance as setInstance,\n _removeInstance as removeInstance,\n _updatePosition as updatePosition };", "import { $, $all, app, store } from './common'\nimport { generateIcons } from './icons'\nimport { confirm, modal } from './modal'\nimport { getTheme } from './utils'\n\nimport Coloris from '@melloware/coloris'\nimport DeepDiff from 'deep-diff'\n\n/** Check for color schema changes. */\nfunction checkDefaultColors() {\n app.colors = store.get('colors')\n\n DeepDiff.observableDiff(app.colors, colors.defaults, (d) => {\n if (d.kind !== 'E') {\n DeepDiff.applyChange(app.colors, colors.defaults, d)\n\n store.set('colors', app.colors)\n }\n })\n}\n\n/** Check if color has changed. */\nexport function checkColorChange() {\n const pickers = $all('.colorInput')\n\n pickers.forEach((picker) => {\n const isSame = picker.value === colors.defaults[picker.dataset.class][picker.dataset.theme]\n\n picker.style.borderLeft = isSame\n ? getTheme() === 'light'\n ? '1px solid #eaeaea'\n : '1px solid #666666'\n : '2px solid #dd9359'\n })\n}\n\nlet activePicker\n\nexport const colors = {\n defaults: {\n answer: { title: 'Answers', class: '.output', dark: '#1eb5f0', light: '#17586b' },\n comment: { title: 'Comments', class: '.cm-comment', dark: '#5a5a5a', light: '#bebebe' },\n constant: { title: 'Constants', class: '.cm-constant', dark: '#eaa1f6', light: '#9c27b0' },\n currency: { title: 'Currencies', class: '.cm-currency', dark: `#009688`, light: '#009688' },\n error: {\n title: 'Errors',\n class: '.lineError, .lineError:hover, .lineError > div, .lineNoError > div',\n dark: '#d41111',\n light: '#b10e0e'\n },\n excel: { title: 'Excel', class: '.cm-excel', dark: '#3cc383', light: '#197b43' },\n function: { title: 'Functions', class: '.cm-formulajs, .cm-function, .cm-udf', dark: '#cb82f5', light: '#6f42c1' },\n keyword: { title: 'Keywords', class: '.cm-keyword, .cm-lineNo', dark: '#be6317', light: '#be6317' },\n number: { title: 'Numbers', class: '.cm-number', dark: '#e6e6e6', light: '#333333' },\n operator: { title: 'Operators', class: '.cm-operator', dark: '#bbbbbb', light: '#888888' },\n text: { title: 'Text', class: '.cm-text', dark: '#e6e6e6', light: '#333333' },\n unit: { title: 'Units', class: '.cm-unit, .cm-udu', dark: '#4d87c9', light: '#005cc5' },\n variable: { title: 'Variables', class: '.cm-variable', dark: '#96b4c4', light: '#57707c' }\n },\n\n initialize: () => {\n if (store.get('colors')) {\n checkDefaultColors()\n } else {\n store.set('colors', colors.defaults)\n }\n\n app.colors = store.get('colors')\n\n const pickers = $all('.colorInput')\n\n pickers.forEach((picker) => {\n picker.value = app.colors[picker.dataset.class][picker.dataset.theme]\n\n picker.addEventListener('click', (event) => {\n activePicker = event.target\n\n checkColorChange()\n })\n })\n\n Coloris.init()\n Coloris({\n el: '.colorInput',\n parent: '#dialog-theme',\n alpha: false,\n onChange: () => {\n checkColorChange()\n colors.save()\n }\n })\n\n Coloris.ready(() => {\n const picker = document.getElementById('clr-color-value')\n const button = document.createElement('a')\n\n picker.after(button)\n button.setAttribute('title', 'Reset color')\n button.classList.add('clr-custom-reset')\n button.innerHTML = ''\n button.addEventListener('click', () => {\n activePicker.value = colors.defaults[activePicker.dataset.class][activePicker.dataset.theme]\n activePicker.dispatchEvent(new Event('input', { bubbles: true }))\n\n $('#clr-color-value').value = colors.defaults[activePicker.dataset.class][activePicker.dataset.theme]\n $('#clr-color-value').dispatchEvent(new Event('change'))\n\n checkColorChange()\n\n colors.save()\n })\n\n generateIcons()\n })\n },\n\n apply: () => {\n const appTheme = getTheme()\n\n let colorSheet = ''\n\n app.colors = store.get('colors')\n\n Object.values(app.colors).forEach((color) => {\n colorSheet += color.class + ' { color: ' + color[appTheme] + '; }\\n'\n })\n\n $('#colorSheet').innerHTML = colorSheet\n },\n\n save: () => {\n const pickers = $all('.colorInput')\n\n pickers.forEach((picker) => {\n app.colors[picker.dataset.class][picker.dataset.theme] = picker.value\n })\n\n store.set('colors', app.colors)\n\n colors.apply()\n },\n\n reset: () => {\n store.set('colors', colors.defaults)\n\n app.colors = store.get('colors')\n\n const pickers = $all('.colorInput')\n\n pickers.forEach((picker) => {\n picker.value = colors.defaults[picker.dataset.class][picker.dataset.theme]\n picker.dispatchEvent(new Event('input', { bubbles: true }))\n })\n\n checkColorChange()\n\n colors.apply()\n }\n}\n\n$('#customizeThemeButton').addEventListener('click', () => {\n modal.show('#dialog-theme')\n})\n\n$('#resetColorsButton').addEventListener('click', () => {\n confirm('This will reset all colors to their default values', () => {\n colors.reset()\n })\n})\n", "// these aren't really private, but nor are they really useful to document\n\n/**\n * @private\n */\nclass LuxonError extends Error {}\n\n/**\n * @private\n */\nexport class InvalidDateTimeError extends LuxonError {\n constructor(reason) {\n super(`Invalid DateTime: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidIntervalError extends LuxonError {\n constructor(reason) {\n super(`Invalid Interval: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidDurationError extends LuxonError {\n constructor(reason) {\n super(`Invalid Duration: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class ConflictingSpecificationError extends LuxonError {}\n\n/**\n * @private\n */\nexport class InvalidUnitError extends LuxonError {\n constructor(unit) {\n super(`Invalid unit ${unit}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidArgumentError extends LuxonError {}\n\n/**\n * @private\n */\nexport class ZoneIsAbstractError extends LuxonError {\n constructor() {\n super(\"Zone is an abstract class\");\n }\n}\n", "/**\n * @private\n */\n\nconst n = \"numeric\",\n s = \"short\",\n l = \"long\";\n\nexport const DATE_SHORT = {\n year: n,\n month: n,\n day: n,\n};\n\nexport const DATE_MED = {\n year: n,\n month: s,\n day: n,\n};\n\nexport const DATE_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n};\n\nexport const DATE_FULL = {\n year: n,\n month: l,\n day: n,\n};\n\nexport const DATE_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n};\n\nexport const TIME_SIMPLE = {\n hour: n,\n minute: n,\n};\n\nexport const TIME_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const TIME_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s,\n};\n\nexport const TIME_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l,\n};\n\nexport const TIME_24_SIMPLE = {\n hour: n,\n minute: n,\n hourCycle: \"h23\",\n};\n\nexport const TIME_24_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n};\n\nexport const TIME_24_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n timeZoneName: s,\n};\n\nexport const TIME_24_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n timeZoneName: l,\n};\n\nexport const DATETIME_SHORT = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_SHORT_WITH_SECONDS = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const DATETIME_MED = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_MED_WITH_SECONDS = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const DATETIME_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_FULL = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n timeZoneName: s,\n};\n\nexport const DATETIME_FULL_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s,\n};\n\nexport const DATETIME_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n timeZoneName: l,\n};\n\nexport const DATETIME_HUGE_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l,\n};\n", "import { ZoneIsAbstractError } from \"./errors.js\";\n\n/**\n * @interface\n */\nexport default class Zone {\n /**\n * The type of zone\n * @abstract\n * @type {string}\n */\n get type() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * The name of this zone.\n * @abstract\n * @type {string}\n */\n get name() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * The IANA name of this zone.\n * Defaults to `name` if not overwritten by a subclass.\n * @abstract\n * @type {string}\n */\n get ianaName() {\n return this.name;\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year.\n * @abstract\n * @type {boolean}\n */\n get isUniversal() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's common name (such as EST) at the specified timestamp\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the name\n * @param {Object} opts - Options to affect the format\n * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\n * @param {string} opts.locale - What locale to return the offset name in.\n * @return {string}\n */\n offsetName(ts, opts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's value as a string\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to compute the offset\n * @return {number}\n */\n offset(ts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is equal to another zone\n * @abstract\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is valid.\n * @abstract\n * @type {boolean}\n */\n get isValid() {\n throw new ZoneIsAbstractError();\n }\n}\n", "import { formatOffset, parseZoneInfo } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * Represents the local zone for this JavaScript environment.\n * @implements {Zone}\n */\nexport default class SystemZone extends Zone {\n /**\n * Get a singleton instance of the local zone\n * @return {SystemZone}\n */\n static get instance() {\n if (singleton === null) {\n singleton = new SystemZone();\n }\n return singleton;\n }\n\n /** @override **/\n get type() {\n return \"system\";\n }\n\n /** @override **/\n get name() {\n return new Intl.DateTimeFormat().resolvedOptions().timeZone;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n return -new Date(ts).getTimezoneOffset();\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"system\";\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n", "import { formatOffset, parseZoneInfo, isUndefined, objToLocalTS } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet dtfCache = {};\nfunction makeDTF(zone) {\n if (!dtfCache[zone]) {\n dtfCache[zone] = new Intl.DateTimeFormat(\"en-US\", {\n hour12: false,\n timeZone: zone,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n era: \"short\",\n });\n }\n return dtfCache[zone];\n}\n\nconst typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n era: 3,\n hour: 4,\n minute: 5,\n second: 6,\n};\n\nfunction hackyOffset(dtf, date) {\n const formatted = dtf.format(date).replace(/\\u200E/g, \"\"),\n parsed = /(\\d+)\\/(\\d+)\\/(\\d+) (AD|BC),? (\\d+):(\\d+):(\\d+)/.exec(formatted),\n [, fMonth, fDay, fYear, fadOrBc, fHour, fMinute, fSecond] = parsed;\n return [fYear, fMonth, fDay, fadOrBc, fHour, fMinute, fSecond];\n}\n\nfunction partsOffset(dtf, date) {\n const formatted = dtf.formatToParts(date);\n const filled = [];\n for (let i = 0; i < formatted.length; i++) {\n const { type, value } = formatted[i];\n const pos = typeToPos[type];\n\n if (type === \"era\") {\n filled[pos] = value;\n } else if (!isUndefined(pos)) {\n filled[pos] = parseInt(value, 10);\n }\n }\n return filled;\n}\n\nlet ianaZoneCache = {};\n/**\n * A zone identified by an IANA identifier, like America/New_York\n * @implements {Zone}\n */\nexport default class IANAZone extends Zone {\n /**\n * @param {string} name - Zone name\n * @return {IANAZone}\n */\n static create(name) {\n if (!ianaZoneCache[name]) {\n ianaZoneCache[name] = new IANAZone(name);\n }\n return ianaZoneCache[name];\n }\n\n /**\n * Reset local caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCache() {\n ianaZoneCache = {};\n dtfCache = {};\n }\n\n /**\n * Returns whether the provided string is a valid specifier. This only checks the string's format, not that the specifier identifies a known zone; see isValidZone for that.\n * @param {string} s - The string to check validity on\n * @example IANAZone.isValidSpecifier(\"America/New_York\") //=> true\n * @example IANAZone.isValidSpecifier(\"Sport~~blorp\") //=> false\n * @deprecated For backward compatibility, this forwards to isValidZone, better use `isValidZone()` directly instead.\n * @return {boolean}\n */\n static isValidSpecifier(s) {\n return this.isValidZone(s);\n }\n\n /**\n * Returns whether the provided string identifies a real zone\n * @param {string} zone - The string to check\n * @example IANAZone.isValidZone(\"America/New_York\") //=> true\n * @example IANAZone.isValidZone(\"Fantasia/Castle\") //=> false\n * @example IANAZone.isValidZone(\"Sport~~blorp\") //=> false\n * @return {boolean}\n */\n static isValidZone(zone) {\n if (!zone) {\n return false;\n }\n try {\n new Intl.DateTimeFormat(\"en-US\", { timeZone: zone }).format();\n return true;\n } catch (e) {\n return false;\n }\n }\n\n constructor(name) {\n super();\n /** @private **/\n this.zoneName = name;\n /** @private **/\n this.valid = IANAZone.isValidZone(name);\n }\n\n /**\n * The type of zone. `iana` for all instances of `IANAZone`.\n * @override\n * @type {string}\n */\n get type() {\n return \"iana\";\n }\n\n /**\n * The name of this zone (i.e. the IANA zone name).\n * @override\n * @type {string}\n */\n get name() {\n return this.zoneName;\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year:\n * Always returns false for all IANA zones.\n * @override\n * @type {boolean}\n */\n get isUniversal() {\n return false;\n }\n\n /**\n * Returns the offset's common name (such as EST) at the specified timestamp\n * @override\n * @param {number} ts - Epoch milliseconds for which to get the name\n * @param {Object} opts - Options to affect the format\n * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\n * @param {string} opts.locale - What locale to return the offset name in.\n * @return {string}\n */\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale, this.name);\n }\n\n /**\n * Returns the offset's value as a string\n * @override\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n * @override\n * @param {number} ts - Epoch milliseconds for which to compute the offset\n * @return {number}\n */\n offset(ts) {\n const date = new Date(ts);\n\n if (isNaN(date)) return NaN;\n\n const dtf = makeDTF(this.name);\n let [year, month, day, adOrBc, hour, minute, second] = dtf.formatToParts\n ? partsOffset(dtf, date)\n : hackyOffset(dtf, date);\n\n if (adOrBc === \"BC\") {\n year = -Math.abs(year) + 1;\n }\n\n // because we're using hour12 and https://bugs.chromium.org/p/chromium/issues/detail?id=1025564&can=2&q=%2224%3A00%22%20datetimeformat\n const adjustedHour = hour === 24 ? 0 : hour;\n\n const asUTC = objToLocalTS({\n year,\n month,\n day,\n hour: adjustedHour,\n minute,\n second,\n millisecond: 0,\n });\n\n let asTS = +date;\n const over = asTS % 1000;\n asTS -= over >= 0 ? over : 1000 + over;\n return (asUTC - asTS) / (60 * 1000);\n }\n\n /**\n * Return whether this Zone is equal to another zone\n * @override\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n return otherZone.type === \"iana\" && otherZone.name === this.name;\n }\n\n /**\n * Return whether this Zone is valid.\n * @override\n * @type {boolean}\n */\n get isValid() {\n return this.valid;\n }\n}\n", "import { hasLocaleWeekInfo, hasRelative, padStart, roundTo, validateWeekSettings } from \"./util.js\";\nimport * as English from \"./english.js\";\nimport Settings from \"../settings.js\";\nimport DateTime from \"../datetime.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\n\n// todo - remap caching\n\nlet intlLFCache = {};\nfunction getCachedLF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlLFCache[key];\n if (!dtf) {\n dtf = new Intl.ListFormat(locString, opts);\n intlLFCache[key] = dtf;\n }\n return dtf;\n}\n\nlet intlDTCache = {};\nfunction getCachedDTF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlDTCache[key];\n if (!dtf) {\n dtf = new Intl.DateTimeFormat(locString, opts);\n intlDTCache[key] = dtf;\n }\n return dtf;\n}\n\nlet intlNumCache = {};\nfunction getCachedINF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let inf = intlNumCache[key];\n if (!inf) {\n inf = new Intl.NumberFormat(locString, opts);\n intlNumCache[key] = inf;\n }\n return inf;\n}\n\nlet intlRelCache = {};\nfunction getCachedRTF(locString, opts = {}) {\n const { base, ...cacheKeyOpts } = opts; // exclude `base` from the options\n const key = JSON.stringify([locString, cacheKeyOpts]);\n let inf = intlRelCache[key];\n if (!inf) {\n inf = new Intl.RelativeTimeFormat(locString, opts);\n intlRelCache[key] = inf;\n }\n return inf;\n}\n\nlet sysLocaleCache = null;\nfunction systemLocale() {\n if (sysLocaleCache) {\n return sysLocaleCache;\n } else {\n sysLocaleCache = new Intl.DateTimeFormat().resolvedOptions().locale;\n return sysLocaleCache;\n }\n}\n\nlet weekInfoCache = {};\nfunction getCachedWeekInfo(locString) {\n let data = weekInfoCache[locString];\n if (!data) {\n const locale = new Intl.Locale(locString);\n // browsers currently implement this as a property, but spec says it should be a getter function\n data = \"getWeekInfo\" in locale ? locale.getWeekInfo() : locale.weekInfo;\n weekInfoCache[locString] = data;\n }\n return data;\n}\n\nfunction parseLocaleString(localeStr) {\n // I really want to avoid writing a BCP 47 parser\n // see, e.g. https://github.com/wooorm/bcp-47\n // Instead, we'll do this:\n\n // a) if the string has no -u extensions, just leave it alone\n // b) if it does, use Intl to resolve everything\n // c) if Intl fails, try again without the -u\n\n // private subtags and unicode subtags have ordering requirements,\n // and we're not properly parsing this, so just strip out the\n // private ones if they exist.\n const xIndex = localeStr.indexOf(\"-x-\");\n if (xIndex !== -1) {\n localeStr = localeStr.substring(0, xIndex);\n }\n\n const uIndex = localeStr.indexOf(\"-u-\");\n if (uIndex === -1) {\n return [localeStr];\n } else {\n let options;\n let selectedStr;\n try {\n options = getCachedDTF(localeStr).resolvedOptions();\n selectedStr = localeStr;\n } catch (e) {\n const smaller = localeStr.substring(0, uIndex);\n options = getCachedDTF(smaller).resolvedOptions();\n selectedStr = smaller;\n }\n\n const { numberingSystem, calendar } = options;\n return [selectedStr, numberingSystem, calendar];\n }\n}\n\nfunction intlConfigString(localeStr, numberingSystem, outputCalendar) {\n if (outputCalendar || numberingSystem) {\n if (!localeStr.includes(\"-u-\")) {\n localeStr += \"-u\";\n }\n\n if (outputCalendar) {\n localeStr += `-ca-${outputCalendar}`;\n }\n\n if (numberingSystem) {\n localeStr += `-nu-${numberingSystem}`;\n }\n return localeStr;\n } else {\n return localeStr;\n }\n}\n\nfunction mapMonths(f) {\n const ms = [];\n for (let i = 1; i <= 12; i++) {\n const dt = DateTime.utc(2009, i, 1);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction mapWeekdays(f) {\n const ms = [];\n for (let i = 1; i <= 7; i++) {\n const dt = DateTime.utc(2016, 11, 13 + i);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction listStuff(loc, length, englishFn, intlFn) {\n const mode = loc.listingMode();\n\n if (mode === \"error\") {\n return null;\n } else if (mode === \"en\") {\n return englishFn(length);\n } else {\n return intlFn(length);\n }\n}\n\nfunction supportsFastNumbers(loc) {\n if (loc.numberingSystem && loc.numberingSystem !== \"latn\") {\n return false;\n } else {\n return (\n loc.numberingSystem === \"latn\" ||\n !loc.locale ||\n loc.locale.startsWith(\"en\") ||\n new Intl.DateTimeFormat(loc.intl).resolvedOptions().numberingSystem === \"latn\"\n );\n }\n}\n\n/**\n * @private\n */\n\nclass PolyNumberFormatter {\n constructor(intl, forceSimple, opts) {\n this.padTo = opts.padTo || 0;\n this.floor = opts.floor || false;\n\n const { padTo, floor, ...otherOpts } = opts;\n\n if (!forceSimple || Object.keys(otherOpts).length > 0) {\n const intlOpts = { useGrouping: false, ...opts };\n if (opts.padTo > 0) intlOpts.minimumIntegerDigits = opts.padTo;\n this.inf = getCachedINF(intl, intlOpts);\n }\n }\n\n format(i) {\n if (this.inf) {\n const fixed = this.floor ? Math.floor(i) : i;\n return this.inf.format(fixed);\n } else {\n // to match the browser's numberformatter defaults\n const fixed = this.floor ? Math.floor(i) : roundTo(i, 3);\n return padStart(fixed, this.padTo);\n }\n }\n}\n\n/**\n * @private\n */\n\nclass PolyDateFormatter {\n constructor(dt, intl, opts) {\n this.opts = opts;\n this.originalZone = undefined;\n\n let z = undefined;\n if (this.opts.timeZone) {\n // Don't apply any workarounds if a timeZone is explicitly provided in opts\n this.dt = dt;\n } else if (dt.zone.type === \"fixed\") {\n // UTC-8 or Etc/UTC-8 are not part of tzdata, only Etc/GMT+8 and the like.\n // That is why fixed-offset TZ is set to that unless it is:\n // 1. Representing offset 0 when UTC is used to maintain previous behavior and does not become GMT.\n // 2. Unsupported by the browser:\n // - some do not support Etc/\n // - < Etc/GMT-14, > Etc/GMT+12, and 30-minute or 45-minute offsets are not part of tzdata\n const gmtOffset = -1 * (dt.offset / 60);\n const offsetZ = gmtOffset >= 0 ? `Etc/GMT+${gmtOffset}` : `Etc/GMT${gmtOffset}`;\n if (dt.offset !== 0 && IANAZone.create(offsetZ).valid) {\n z = offsetZ;\n this.dt = dt;\n } else {\n // Not all fixed-offset zones like Etc/+4:30 are present in tzdata so\n // we manually apply the offset and substitute the zone as needed.\n z = \"UTC\";\n this.dt = dt.offset === 0 ? dt : dt.setZone(\"UTC\").plus({ minutes: dt.offset });\n this.originalZone = dt.zone;\n }\n } else if (dt.zone.type === \"system\") {\n this.dt = dt;\n } else if (dt.zone.type === \"iana\") {\n this.dt = dt;\n z = dt.zone.name;\n } else {\n // Custom zones can have any offset / offsetName so we just manually\n // apply the offset and substitute the zone as needed.\n z = \"UTC\";\n this.dt = dt.setZone(\"UTC\").plus({ minutes: dt.offset });\n this.originalZone = dt.zone;\n }\n\n const intlOpts = { ...this.opts };\n intlOpts.timeZone = intlOpts.timeZone || z;\n this.dtf = getCachedDTF(intl, intlOpts);\n }\n\n format() {\n if (this.originalZone) {\n // If we have to substitute in the actual zone name, we have to use\n // formatToParts so that the timezone can be replaced.\n return this.formatToParts()\n .map(({ value }) => value)\n .join(\"\");\n }\n return this.dtf.format(this.dt.toJSDate());\n }\n\n formatToParts() {\n const parts = this.dtf.formatToParts(this.dt.toJSDate());\n if (this.originalZone) {\n return parts.map((part) => {\n if (part.type === \"timeZoneName\") {\n const offsetName = this.originalZone.offsetName(this.dt.ts, {\n locale: this.dt.locale,\n format: this.opts.timeZoneName,\n });\n return {\n ...part,\n value: offsetName,\n };\n } else {\n return part;\n }\n });\n }\n return parts;\n }\n\n resolvedOptions() {\n return this.dtf.resolvedOptions();\n }\n}\n\n/**\n * @private\n */\nclass PolyRelFormatter {\n constructor(intl, isEnglish, opts) {\n this.opts = { style: \"long\", ...opts };\n if (!isEnglish && hasRelative()) {\n this.rtf = getCachedRTF(intl, opts);\n }\n }\n\n format(count, unit) {\n if (this.rtf) {\n return this.rtf.format(count, unit);\n } else {\n return English.formatRelativeTime(unit, count, this.opts.numeric, this.opts.style !== \"long\");\n }\n }\n\n formatToParts(count, unit) {\n if (this.rtf) {\n return this.rtf.formatToParts(count, unit);\n } else {\n return [];\n }\n }\n}\n\nconst fallbackWeekSettings = {\n firstDay: 1,\n minimalDays: 4,\n weekend: [6, 7],\n};\n\n/**\n * @private\n */\n\nexport default class Locale {\n static fromOpts(opts) {\n return Locale.create(\n opts.locale,\n opts.numberingSystem,\n opts.outputCalendar,\n opts.weekSettings,\n opts.defaultToEN\n );\n }\n\n static create(locale, numberingSystem, outputCalendar, weekSettings, defaultToEN = false) {\n const specifiedLocale = locale || Settings.defaultLocale;\n // the system locale is useful for human-readable strings but annoying for parsing/formatting known formats\n const localeR = specifiedLocale || (defaultToEN ? \"en-US\" : systemLocale());\n const numberingSystemR = numberingSystem || Settings.defaultNumberingSystem;\n const outputCalendarR = outputCalendar || Settings.defaultOutputCalendar;\n const weekSettingsR = validateWeekSettings(weekSettings) || Settings.defaultWeekSettings;\n return new Locale(localeR, numberingSystemR, outputCalendarR, weekSettingsR, specifiedLocale);\n }\n\n static resetCache() {\n sysLocaleCache = null;\n intlDTCache = {};\n intlNumCache = {};\n intlRelCache = {};\n }\n\n static fromObject({ locale, numberingSystem, outputCalendar, weekSettings } = {}) {\n return Locale.create(locale, numberingSystem, outputCalendar, weekSettings);\n }\n\n constructor(locale, numbering, outputCalendar, weekSettings, specifiedLocale) {\n const [parsedLocale, parsedNumberingSystem, parsedOutputCalendar] = parseLocaleString(locale);\n\n this.locale = parsedLocale;\n this.numberingSystem = numbering || parsedNumberingSystem || null;\n this.outputCalendar = outputCalendar || parsedOutputCalendar || null;\n this.weekSettings = weekSettings;\n this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar);\n\n this.weekdaysCache = { format: {}, standalone: {} };\n this.monthsCache = { format: {}, standalone: {} };\n this.meridiemCache = null;\n this.eraCache = {};\n\n this.specifiedLocale = specifiedLocale;\n this.fastNumbersCached = null;\n }\n\n get fastNumbers() {\n if (this.fastNumbersCached == null) {\n this.fastNumbersCached = supportsFastNumbers(this);\n }\n\n return this.fastNumbersCached;\n }\n\n listingMode() {\n const isActuallyEn = this.isEnglish();\n const hasNoWeirdness =\n (this.numberingSystem === null || this.numberingSystem === \"latn\") &&\n (this.outputCalendar === null || this.outputCalendar === \"gregory\");\n return isActuallyEn && hasNoWeirdness ? \"en\" : \"intl\";\n }\n\n clone(alts) {\n if (!alts || Object.getOwnPropertyNames(alts).length === 0) {\n return this;\n } else {\n return Locale.create(\n alts.locale || this.specifiedLocale,\n alts.numberingSystem || this.numberingSystem,\n alts.outputCalendar || this.outputCalendar,\n validateWeekSettings(alts.weekSettings) || this.weekSettings,\n alts.defaultToEN || false\n );\n }\n }\n\n redefaultToEN(alts = {}) {\n return this.clone({ ...alts, defaultToEN: true });\n }\n\n redefaultToSystem(alts = {}) {\n return this.clone({ ...alts, defaultToEN: false });\n }\n\n months(length, format = false) {\n return listStuff(this, length, English.months, () => {\n const intl = format ? { month: length, day: \"numeric\" } : { month: length },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.monthsCache[formatStr][length]) {\n this.monthsCache[formatStr][length] = mapMonths((dt) => this.extract(dt, intl, \"month\"));\n }\n return this.monthsCache[formatStr][length];\n });\n }\n\n weekdays(length, format = false) {\n return listStuff(this, length, English.weekdays, () => {\n const intl = format\n ? { weekday: length, year: \"numeric\", month: \"long\", day: \"numeric\" }\n : { weekday: length },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.weekdaysCache[formatStr][length]) {\n this.weekdaysCache[formatStr][length] = mapWeekdays((dt) =>\n this.extract(dt, intl, \"weekday\")\n );\n }\n return this.weekdaysCache[formatStr][length];\n });\n }\n\n meridiems() {\n return listStuff(\n this,\n undefined,\n () => English.meridiems,\n () => {\n // In theory there could be aribitrary day periods. We're gonna assume there are exactly two\n // for AM and PM. This is probably wrong, but it's makes parsing way easier.\n if (!this.meridiemCache) {\n const intl = { hour: \"numeric\", hourCycle: \"h12\" };\n this.meridiemCache = [DateTime.utc(2016, 11, 13, 9), DateTime.utc(2016, 11, 13, 19)].map(\n (dt) => this.extract(dt, intl, \"dayperiod\")\n );\n }\n\n return this.meridiemCache;\n }\n );\n }\n\n eras(length) {\n return listStuff(this, length, English.eras, () => {\n const intl = { era: length };\n\n // This is problematic. Different calendars are going to define eras totally differently. What I need is the minimum set of dates\n // to definitely enumerate them.\n if (!this.eraCache[length]) {\n this.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map((dt) =>\n this.extract(dt, intl, \"era\")\n );\n }\n\n return this.eraCache[length];\n });\n }\n\n extract(dt, intlOpts, field) {\n const df = this.dtFormatter(dt, intlOpts),\n results = df.formatToParts(),\n matching = results.find((m) => m.type.toLowerCase() === field);\n return matching ? matching.value : null;\n }\n\n numberFormatter(opts = {}) {\n // this forcesimple option is never used (the only caller short-circuits on it, but it seems safer to leave)\n // (in contrast, the rest of the condition is used heavily)\n return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts);\n }\n\n dtFormatter(dt, intlOpts = {}) {\n return new PolyDateFormatter(dt, this.intl, intlOpts);\n }\n\n relFormatter(opts = {}) {\n return new PolyRelFormatter(this.intl, this.isEnglish(), opts);\n }\n\n listFormatter(opts = {}) {\n return getCachedLF(this.intl, opts);\n }\n\n isEnglish() {\n return (\n this.locale === \"en\" ||\n this.locale.toLowerCase() === \"en-us\" ||\n new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith(\"en-us\")\n );\n }\n\n getWeekSettings() {\n if (this.weekSettings) {\n return this.weekSettings;\n } else if (!hasLocaleWeekInfo()) {\n return fallbackWeekSettings;\n } else {\n return getCachedWeekInfo(this.locale);\n }\n }\n\n getStartOfWeek() {\n return this.getWeekSettings().firstDay;\n }\n\n getMinDaysInFirstWeek() {\n return this.getWeekSettings().minimalDays;\n }\n\n getWeekendDays() {\n return this.getWeekSettings().weekend;\n }\n\n equals(other) {\n return (\n this.locale === other.locale &&\n this.numberingSystem === other.numberingSystem &&\n this.outputCalendar === other.outputCalendar\n );\n }\n\n toString() {\n return `Locale(${this.locale}, ${this.numberingSystem}, ${this.outputCalendar})`;\n }\n}\n", "import { formatOffset, signedOffset } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * A zone with a fixed offset (meaning no DST)\n * @implements {Zone}\n */\nexport default class FixedOffsetZone extends Zone {\n /**\n * Get a singleton instance of UTC\n * @return {FixedOffsetZone}\n */\n static get utcInstance() {\n if (singleton === null) {\n singleton = new FixedOffsetZone(0);\n }\n return singleton;\n }\n\n /**\n * Get an instance with a specified offset\n * @param {number} offset - The offset in minutes\n * @return {FixedOffsetZone}\n */\n static instance(offset) {\n return offset === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset);\n }\n\n /**\n * Get an instance of FixedOffsetZone from a UTC offset string, like \"UTC+6\"\n * @param {string} s - The offset string to parse\n * @example FixedOffsetZone.parseSpecifier(\"UTC+6\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC+06\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC-6:00\")\n * @return {FixedOffsetZone}\n */\n static parseSpecifier(s) {\n if (s) {\n const r = s.match(/^utc(?:([+-]\\d{1,2})(?::(\\d{2}))?)?$/i);\n if (r) {\n return new FixedOffsetZone(signedOffset(r[1], r[2]));\n }\n }\n return null;\n }\n\n constructor(offset) {\n super();\n /** @private **/\n this.fixed = offset;\n }\n\n /**\n * The type of zone. `fixed` for all instances of `FixedOffsetZone`.\n * @override\n * @type {string}\n */\n get type() {\n return \"fixed\";\n }\n\n /**\n * The name of this zone.\n * All fixed zones' names always start with \"UTC\" (plus optional offset)\n * @override\n * @type {string}\n */\n get name() {\n return this.fixed === 0 ? \"UTC\" : `UTC${formatOffset(this.fixed, \"narrow\")}`;\n }\n\n /**\n * The IANA name of this zone, i.e. `Etc/UTC` or `Etc/GMT+/-nn`\n *\n * @override\n * @type {string}\n */\n get ianaName() {\n if (this.fixed === 0) {\n return \"Etc/UTC\";\n } else {\n return `Etc/GMT${formatOffset(-this.fixed, \"narrow\")}`;\n }\n }\n\n /**\n * Returns the offset's common name at the specified timestamp.\n *\n * For fixed offset zones this equals to the zone name.\n * @override\n */\n offsetName() {\n return this.name;\n }\n\n /**\n * Returns the offset's value as a string\n * @override\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n return formatOffset(this.fixed, format);\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year:\n * Always returns true for all fixed offset zones.\n * @override\n * @type {boolean}\n */\n get isUniversal() {\n return true;\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n *\n * For fixed offset zones, this is constant and does not depend on a timestamp.\n * @override\n * @return {number}\n */\n offset() {\n return this.fixed;\n }\n\n /**\n * Return whether this Zone is equal to another zone (i.e. also fixed and same offset)\n * @override\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n return otherZone.type === \"fixed\" && otherZone.fixed === this.fixed;\n }\n\n /**\n * Return whether this Zone is valid:\n * All fixed offset zones are valid.\n * @override\n * @type {boolean}\n */\n get isValid() {\n return true;\n }\n}\n", "import Zone from \"../zone.js\";\n\n/**\n * A zone that failed to parse. You should never need to instantiate this.\n * @implements {Zone}\n */\nexport default class InvalidZone extends Zone {\n constructor(zoneName) {\n super();\n /** @private */\n this.zoneName = zoneName;\n }\n\n /** @override **/\n get type() {\n return \"invalid\";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName() {\n return null;\n }\n\n /** @override **/\n formatOffset() {\n return \"\";\n }\n\n /** @override **/\n offset() {\n return NaN;\n }\n\n /** @override **/\n equals() {\n return false;\n }\n\n /** @override **/\n get isValid() {\n return false;\n }\n}\n", "/**\n * @private\n */\n\nimport Zone from \"../zone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport InvalidZone from \"../zones/invalidZone.js\";\n\nimport { isUndefined, isString, isNumber } from \"./util.js\";\nimport SystemZone from \"../zones/systemZone.js\";\n\nexport function normalizeZone(input, defaultZone) {\n let offset;\n if (isUndefined(input) || input === null) {\n return defaultZone;\n } else if (input instanceof Zone) {\n return input;\n } else if (isString(input)) {\n const lowered = input.toLowerCase();\n if (lowered === \"default\") return defaultZone;\n else if (lowered === \"local\" || lowered === \"system\") return SystemZone.instance;\n else if (lowered === \"utc\" || lowered === \"gmt\") return FixedOffsetZone.utcInstance;\n else return FixedOffsetZone.parseSpecifier(lowered) || IANAZone.create(input);\n } else if (isNumber(input)) {\n return FixedOffsetZone.instance(input);\n } else if (typeof input === \"object\" && \"offset\" in input && typeof input.offset === \"function\") {\n // This is dumb, but the instanceof check above doesn't seem to really work\n // so we're duck checking it\n return input;\n } else {\n return new InvalidZone(input);\n }\n}\n", "const numberingSystems = {\n arab: \"[\\u0660-\\u0669]\",\n arabext: \"[\\u06F0-\\u06F9]\",\n bali: \"[\\u1B50-\\u1B59]\",\n beng: \"[\\u09E6-\\u09EF]\",\n deva: \"[\\u0966-\\u096F]\",\n fullwide: \"[\\uFF10-\\uFF19]\",\n gujr: \"[\\u0AE6-\\u0AEF]\",\n hanidec: \"[\u3007|\u4E00|\u4E8C|\u4E09|\u56DB|\u4E94|\u516D|\u4E03|\u516B|\u4E5D]\",\n khmr: \"[\\u17E0-\\u17E9]\",\n knda: \"[\\u0CE6-\\u0CEF]\",\n laoo: \"[\\u0ED0-\\u0ED9]\",\n limb: \"[\\u1946-\\u194F]\",\n mlym: \"[\\u0D66-\\u0D6F]\",\n mong: \"[\\u1810-\\u1819]\",\n mymr: \"[\\u1040-\\u1049]\",\n orya: \"[\\u0B66-\\u0B6F]\",\n tamldec: \"[\\u0BE6-\\u0BEF]\",\n telu: \"[\\u0C66-\\u0C6F]\",\n thai: \"[\\u0E50-\\u0E59]\",\n tibt: \"[\\u0F20-\\u0F29]\",\n latn: \"\\\\d\",\n};\n\nconst numberingSystemsUTF16 = {\n arab: [1632, 1641],\n arabext: [1776, 1785],\n bali: [6992, 7001],\n beng: [2534, 2543],\n deva: [2406, 2415],\n fullwide: [65296, 65303],\n gujr: [2790, 2799],\n khmr: [6112, 6121],\n knda: [3302, 3311],\n laoo: [3792, 3801],\n limb: [6470, 6479],\n mlym: [3430, 3439],\n mong: [6160, 6169],\n mymr: [4160, 4169],\n orya: [2918, 2927],\n tamldec: [3046, 3055],\n telu: [3174, 3183],\n thai: [3664, 3673],\n tibt: [3872, 3881],\n};\n\nconst hanidecChars = numberingSystems.hanidec.replace(/[\\[|\\]]/g, \"\").split(\"\");\n\nexport function parseDigits(str) {\n let value = parseInt(str, 10);\n if (isNaN(value)) {\n value = \"\";\n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n\n if (str[i].search(numberingSystems.hanidec) !== -1) {\n value += hanidecChars.indexOf(str[i]);\n } else {\n for (const key in numberingSystemsUTF16) {\n const [min, max] = numberingSystemsUTF16[key];\n if (code >= min && code <= max) {\n value += code - min;\n }\n }\n }\n }\n return parseInt(value, 10);\n } else {\n return value;\n }\n}\n\n// cache of {numberingSystem: {append: regex}}\nlet digitRegexCache = {};\nexport function resetDigitRegexCache() {\n digitRegexCache = {};\n}\n\nexport function digitRegex({ numberingSystem }, append = \"\") {\n const ns = numberingSystem || \"latn\";\n\n if (!digitRegexCache[ns]) {\n digitRegexCache[ns] = {};\n }\n if (!digitRegexCache[ns][append]) {\n digitRegexCache[ns][append] = new RegExp(`${numberingSystems[ns]}${append}`);\n }\n\n return digitRegexCache[ns][append];\n}\n", "import SystemZone from \"./zones/systemZone.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport Locale from \"./impl/locale.js\";\nimport DateTime from \"./datetime.js\";\n\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\nimport { validateWeekSettings } from \"./impl/util.js\";\nimport { resetDigitRegexCache } from \"./impl/digits.js\";\n\nlet now = () => Date.now(),\n defaultZone = \"system\",\n defaultLocale = null,\n defaultNumberingSystem = null,\n defaultOutputCalendar = null,\n twoDigitCutoffYear = 60,\n throwOnInvalid,\n defaultWeekSettings = null;\n\n/**\n * Settings contains static getters and setters that control Luxon's overall behavior. Luxon is a simple library with few options, but the ones it does have live here.\n */\nexport default class Settings {\n /**\n * Get the callback for returning the current timestamp.\n * @type {function}\n */\n static get now() {\n return now;\n }\n\n /**\n * Set the callback for returning the current timestamp.\n * The function should return a number, which will be interpreted as an Epoch millisecond count\n * @type {function}\n * @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future\n * @example Settings.now = () => 0 // always pretend it's Jan 1, 1970 at midnight in UTC time\n */\n static set now(n) {\n now = n;\n }\n\n /**\n * Set the default time zone to create DateTimes in. Does not affect existing instances.\n * Use the value \"system\" to reset this value to the system's time zone.\n * @type {string}\n */\n static set defaultZone(zone) {\n defaultZone = zone;\n }\n\n /**\n * Get the default time zone object currently used to create DateTimes. Does not affect existing instances.\n * The default value is the system's time zone (the one set on the machine that runs this code).\n * @type {Zone}\n */\n static get defaultZone() {\n return normalizeZone(defaultZone, SystemZone.instance);\n }\n\n /**\n * Get the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultLocale() {\n return defaultLocale;\n }\n\n /**\n * Set the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultLocale(locale) {\n defaultLocale = locale;\n }\n\n /**\n * Get the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultNumberingSystem() {\n return defaultNumberingSystem;\n }\n\n /**\n * Set the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultNumberingSystem(numberingSystem) {\n defaultNumberingSystem = numberingSystem;\n }\n\n /**\n * Get the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultOutputCalendar() {\n return defaultOutputCalendar;\n }\n\n /**\n * Set the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultOutputCalendar(outputCalendar) {\n defaultOutputCalendar = outputCalendar;\n }\n\n /**\n * @typedef {Object} WeekSettings\n * @property {number} firstDay\n * @property {number} minimalDays\n * @property {number[]} weekend\n */\n\n /**\n * @return {WeekSettings|null}\n */\n static get defaultWeekSettings() {\n return defaultWeekSettings;\n }\n\n /**\n * Allows overriding the default locale week settings, i.e. the start of the week, the weekend and\n * how many days are required in the first week of a year.\n * Does not affect existing instances.\n *\n * @param {WeekSettings|null} weekSettings\n */\n static set defaultWeekSettings(weekSettings) {\n defaultWeekSettings = validateWeekSettings(weekSettings);\n }\n\n /**\n * Get the cutoff year for whether a 2-digit year string is interpreted in the current or previous century. Numbers higher than the cutoff will be considered to mean 19xx and numbers lower or equal to the cutoff will be considered 20xx.\n * @type {number}\n */\n static get twoDigitCutoffYear() {\n return twoDigitCutoffYear;\n }\n\n /**\n * Set the cutoff year for whether a 2-digit year string is interpreted in the current or previous century. Numbers higher than the cutoff will be considered to mean 19xx and numbers lower or equal to the cutoff will be considered 20xx.\n * @type {number}\n * @example Settings.twoDigitCutoffYear = 0 // all 'yy' are interpreted as 20th century\n * @example Settings.twoDigitCutoffYear = 99 // all 'yy' are interpreted as 21st century\n * @example Settings.twoDigitCutoffYear = 50 // '49' -> 2049; '50' -> 1950\n * @example Settings.twoDigitCutoffYear = 1950 // interpreted as 50\n * @example Settings.twoDigitCutoffYear = 2050 // ALSO interpreted as 50\n */\n static set twoDigitCutoffYear(cutoffYear) {\n twoDigitCutoffYear = cutoffYear % 100;\n }\n\n /**\n * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static get throwOnInvalid() {\n return throwOnInvalid;\n }\n\n /**\n * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static set throwOnInvalid(t) {\n throwOnInvalid = t;\n }\n\n /**\n * Reset Luxon's global caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCaches() {\n Locale.resetCache();\n IANAZone.resetCache();\n DateTime.resetCache();\n resetDigitRegexCache();\n }\n}\n", "export default class Invalid {\n constructor(reason, explanation) {\n this.reason = reason;\n this.explanation = explanation;\n }\n\n toMessage() {\n if (this.explanation) {\n return `${this.reason}: ${this.explanation}`;\n } else {\n return this.reason;\n }\n }\n}\n", "import {\n integerBetween,\n isLeapYear,\n timeObject,\n daysInYear,\n daysInMonth,\n weeksInWeekYear,\n isInteger,\n isUndefined,\n} from \"./util.js\";\nimport Invalid from \"./invalid.js\";\nimport { ConflictingSpecificationError } from \"../errors.js\";\n\nconst nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334],\n leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\n\nfunction unitOutOfRange(unit, value) {\n return new Invalid(\n \"unit out of range\",\n `you specified ${value} (of type ${typeof value}) as a ${unit}, which is invalid`\n );\n}\n\nexport function dayOfWeek(year, month, day) {\n const d = new Date(Date.UTC(year, month - 1, day));\n\n if (year < 100 && year >= 0) {\n d.setUTCFullYear(d.getUTCFullYear() - 1900);\n }\n\n const js = d.getUTCDay();\n\n return js === 0 ? 7 : js;\n}\n\nfunction computeOrdinal(year, month, day) {\n return day + (isLeapYear(year) ? leapLadder : nonLeapLadder)[month - 1];\n}\n\nfunction uncomputeOrdinal(year, ordinal) {\n const table = isLeapYear(year) ? leapLadder : nonLeapLadder,\n month0 = table.findIndex((i) => i < ordinal),\n day = ordinal - table[month0];\n return { month: month0 + 1, day };\n}\n\nexport function isoWeekdayToLocal(isoWeekday, startOfWeek) {\n return ((isoWeekday - startOfWeek + 7) % 7) + 1;\n}\n\n/**\n * @private\n */\n\nexport function gregorianToWeek(gregObj, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const { year, month, day } = gregObj,\n ordinal = computeOrdinal(year, month, day),\n weekday = isoWeekdayToLocal(dayOfWeek(year, month, day), startOfWeek);\n\n let weekNumber = Math.floor((ordinal - weekday + 14 - minDaysInFirstWeek) / 7),\n weekYear;\n\n if (weekNumber < 1) {\n weekYear = year - 1;\n weekNumber = weeksInWeekYear(weekYear, minDaysInFirstWeek, startOfWeek);\n } else if (weekNumber > weeksInWeekYear(year, minDaysInFirstWeek, startOfWeek)) {\n weekYear = year + 1;\n weekNumber = 1;\n } else {\n weekYear = year;\n }\n\n return { weekYear, weekNumber, weekday, ...timeObject(gregObj) };\n}\n\nexport function weekToGregorian(weekData, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const { weekYear, weekNumber, weekday } = weekData,\n weekdayOfJan4 = isoWeekdayToLocal(dayOfWeek(weekYear, 1, minDaysInFirstWeek), startOfWeek),\n yearInDays = daysInYear(weekYear);\n\n let ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 7 + minDaysInFirstWeek,\n year;\n\n if (ordinal < 1) {\n year = weekYear - 1;\n ordinal += daysInYear(year);\n } else if (ordinal > yearInDays) {\n year = weekYear + 1;\n ordinal -= daysInYear(weekYear);\n } else {\n year = weekYear;\n }\n\n const { month, day } = uncomputeOrdinal(year, ordinal);\n return { year, month, day, ...timeObject(weekData) };\n}\n\nexport function gregorianToOrdinal(gregData) {\n const { year, month, day } = gregData;\n const ordinal = computeOrdinal(year, month, day);\n return { year, ordinal, ...timeObject(gregData) };\n}\n\nexport function ordinalToGregorian(ordinalData) {\n const { year, ordinal } = ordinalData;\n const { month, day } = uncomputeOrdinal(year, ordinal);\n return { year, month, day, ...timeObject(ordinalData) };\n}\n\n/**\n * Check if local week units like localWeekday are used in obj.\n * If so, validates that they are not mixed with ISO week units and then copies them to the normal week unit properties.\n * Modifies obj in-place!\n * @param obj the object values\n */\nexport function usesLocalWeekValues(obj, loc) {\n const hasLocaleWeekData =\n !isUndefined(obj.localWeekday) ||\n !isUndefined(obj.localWeekNumber) ||\n !isUndefined(obj.localWeekYear);\n if (hasLocaleWeekData) {\n const hasIsoWeekData =\n !isUndefined(obj.weekday) || !isUndefined(obj.weekNumber) || !isUndefined(obj.weekYear);\n\n if (hasIsoWeekData) {\n throw new ConflictingSpecificationError(\n \"Cannot mix locale-based week fields with ISO-based week fields\"\n );\n }\n if (!isUndefined(obj.localWeekday)) obj.weekday = obj.localWeekday;\n if (!isUndefined(obj.localWeekNumber)) obj.weekNumber = obj.localWeekNumber;\n if (!isUndefined(obj.localWeekYear)) obj.weekYear = obj.localWeekYear;\n delete obj.localWeekday;\n delete obj.localWeekNumber;\n delete obj.localWeekYear;\n return {\n minDaysInFirstWeek: loc.getMinDaysInFirstWeek(),\n startOfWeek: loc.getStartOfWeek(),\n };\n } else {\n return { minDaysInFirstWeek: 4, startOfWeek: 1 };\n }\n}\n\nexport function hasInvalidWeekData(obj, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const validYear = isInteger(obj.weekYear),\n validWeek = integerBetween(\n obj.weekNumber,\n 1,\n weeksInWeekYear(obj.weekYear, minDaysInFirstWeek, startOfWeek)\n ),\n validWeekday = integerBetween(obj.weekday, 1, 7);\n\n if (!validYear) {\n return unitOutOfRange(\"weekYear\", obj.weekYear);\n } else if (!validWeek) {\n return unitOutOfRange(\"week\", obj.weekNumber);\n } else if (!validWeekday) {\n return unitOutOfRange(\"weekday\", obj.weekday);\n } else return false;\n}\n\nexport function hasInvalidOrdinalData(obj) {\n const validYear = isInteger(obj.year),\n validOrdinal = integerBetween(obj.ordinal, 1, daysInYear(obj.year));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validOrdinal) {\n return unitOutOfRange(\"ordinal\", obj.ordinal);\n } else return false;\n}\n\nexport function hasInvalidGregorianData(obj) {\n const validYear = isInteger(obj.year),\n validMonth = integerBetween(obj.month, 1, 12),\n validDay = integerBetween(obj.day, 1, daysInMonth(obj.year, obj.month));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validMonth) {\n return unitOutOfRange(\"month\", obj.month);\n } else if (!validDay) {\n return unitOutOfRange(\"day\", obj.day);\n } else return false;\n}\n\nexport function hasInvalidTimeData(obj) {\n const { hour, minute, second, millisecond } = obj;\n const validHour =\n integerBetween(hour, 0, 23) ||\n (hour === 24 && minute === 0 && second === 0 && millisecond === 0),\n validMinute = integerBetween(minute, 0, 59),\n validSecond = integerBetween(second, 0, 59),\n validMillisecond = integerBetween(millisecond, 0, 999);\n\n if (!validHour) {\n return unitOutOfRange(\"hour\", hour);\n } else if (!validMinute) {\n return unitOutOfRange(\"minute\", minute);\n } else if (!validSecond) {\n return unitOutOfRange(\"second\", second);\n } else if (!validMillisecond) {\n return unitOutOfRange(\"millisecond\", millisecond);\n } else return false;\n}\n", "/*\n This is just a junk drawer, containing anything used across multiple classes.\n Because Luxon is small(ish), this should stay small and we won't worry about splitting\n it up into, say, parsingUtil.js and basicUtil.js and so on. But they are divided up by feature area.\n*/\n\nimport { InvalidArgumentError } from \"../errors.js\";\nimport Settings from \"../settings.js\";\nimport { dayOfWeek, isoWeekdayToLocal } from \"./conversions.js\";\n\n/**\n * @private\n */\n\n// TYPES\n\nexport function isUndefined(o) {\n return typeof o === \"undefined\";\n}\n\nexport function isNumber(o) {\n return typeof o === \"number\";\n}\n\nexport function isInteger(o) {\n return typeof o === \"number\" && o % 1 === 0;\n}\n\nexport function isString(o) {\n return typeof o === \"string\";\n}\n\nexport function isDate(o) {\n return Object.prototype.toString.call(o) === \"[object Date]\";\n}\n\n// CAPABILITIES\n\nexport function hasRelative() {\n try {\n return typeof Intl !== \"undefined\" && !!Intl.RelativeTimeFormat;\n } catch (e) {\n return false;\n }\n}\n\nexport function hasLocaleWeekInfo() {\n try {\n return (\n typeof Intl !== \"undefined\" &&\n !!Intl.Locale &&\n (\"weekInfo\" in Intl.Locale.prototype || \"getWeekInfo\" in Intl.Locale.prototype)\n );\n } catch (e) {\n return false;\n }\n}\n\n// OBJECTS AND ARRAYS\n\nexport function maybeArray(thing) {\n return Array.isArray(thing) ? thing : [thing];\n}\n\nexport function bestBy(arr, by, compare) {\n if (arr.length === 0) {\n return undefined;\n }\n return arr.reduce((best, next) => {\n const pair = [by(next), next];\n if (!best) {\n return pair;\n } else if (compare(best[0], pair[0]) === best[0]) {\n return best;\n } else {\n return pair;\n }\n }, null)[1];\n}\n\nexport function pick(obj, keys) {\n return keys.reduce((a, k) => {\n a[k] = obj[k];\n return a;\n }, {});\n}\n\nexport function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexport function validateWeekSettings(settings) {\n if (settings == null) {\n return null;\n } else if (typeof settings !== \"object\") {\n throw new InvalidArgumentError(\"Week settings must be an object\");\n } else {\n if (\n !integerBetween(settings.firstDay, 1, 7) ||\n !integerBetween(settings.minimalDays, 1, 7) ||\n !Array.isArray(settings.weekend) ||\n settings.weekend.some((v) => !integerBetween(v, 1, 7))\n ) {\n throw new InvalidArgumentError(\"Invalid week settings\");\n }\n return {\n firstDay: settings.firstDay,\n minimalDays: settings.minimalDays,\n weekend: Array.from(settings.weekend),\n };\n }\n}\n\n// NUMBERS AND STRINGS\n\nexport function integerBetween(thing, bottom, top) {\n return isInteger(thing) && thing >= bottom && thing <= top;\n}\n\n// x % n but takes the sign of n instead of x\nexport function floorMod(x, n) {\n return x - n * Math.floor(x / n);\n}\n\nexport function padStart(input, n = 2) {\n const isNeg = input < 0;\n let padded;\n if (isNeg) {\n padded = \"-\" + (\"\" + -input).padStart(n, \"0\");\n } else {\n padded = (\"\" + input).padStart(n, \"0\");\n }\n return padded;\n}\n\nexport function parseInteger(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseInt(string, 10);\n }\n}\n\nexport function parseFloating(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseFloat(string);\n }\n}\n\nexport function parseMillis(fraction) {\n // Return undefined (instead of 0) in these cases, where fraction is not set\n if (isUndefined(fraction) || fraction === null || fraction === \"\") {\n return undefined;\n } else {\n const f = parseFloat(\"0.\" + fraction) * 1000;\n return Math.floor(f);\n }\n}\n\nexport function roundTo(number, digits, towardZero = false) {\n const factor = 10 ** digits,\n rounder = towardZero ? Math.trunc : Math.round;\n return rounder(number * factor) / factor;\n}\n\n// DATE BASICS\n\nexport function isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nexport function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\nexport function daysInMonth(year, month) {\n const modMonth = floorMod(month - 1, 12) + 1,\n modYear = year + (month - modMonth) / 12;\n\n if (modMonth === 2) {\n return isLeapYear(modYear) ? 29 : 28;\n } else {\n return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1];\n }\n}\n\n// convert a calendar object to a local timestamp (epoch, but with the offset baked in)\nexport function objToLocalTS(obj) {\n let d = Date.UTC(\n obj.year,\n obj.month - 1,\n obj.day,\n obj.hour,\n obj.minute,\n obj.second,\n obj.millisecond\n );\n\n // for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that\n if (obj.year < 100 && obj.year >= 0) {\n d = new Date(d);\n // set the month and day again, this is necessary because year 2000 is a leap year, but year 100 is not\n // so if obj.year is in 99, but obj.day makes it roll over into year 100,\n // the calculations done by Date.UTC are using year 2000 - which is incorrect\n d.setUTCFullYear(obj.year, obj.month - 1, obj.day);\n }\n return +d;\n}\n\n// adapted from moment.js: https://github.com/moment/moment/blob/000ac1800e620f770f4eb31b5ae908f6167b0ab2/src/lib/units/week-calendar-utils.js\nfunction firstWeekOffset(year, minDaysInFirstWeek, startOfWeek) {\n const fwdlw = isoWeekdayToLocal(dayOfWeek(year, 1, minDaysInFirstWeek), startOfWeek);\n return -fwdlw + minDaysInFirstWeek - 1;\n}\n\nexport function weeksInWeekYear(weekYear, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const weekOffset = firstWeekOffset(weekYear, minDaysInFirstWeek, startOfWeek);\n const weekOffsetNext = firstWeekOffset(weekYear + 1, minDaysInFirstWeek, startOfWeek);\n return (daysInYear(weekYear) - weekOffset + weekOffsetNext) / 7;\n}\n\nexport function untruncateYear(year) {\n if (year > 99) {\n return year;\n } else return year > Settings.twoDigitCutoffYear ? 1900 + year : 2000 + year;\n}\n\n// PARSING\n\nexport function parseZoneInfo(ts, offsetFormat, locale, timeZone = null) {\n const date = new Date(ts),\n intlOpts = {\n hourCycle: \"h23\",\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n };\n\n if (timeZone) {\n intlOpts.timeZone = timeZone;\n }\n\n const modified = { timeZoneName: offsetFormat, ...intlOpts };\n\n const parsed = new Intl.DateTimeFormat(locale, modified)\n .formatToParts(date)\n .find((m) => m.type.toLowerCase() === \"timezonename\");\n return parsed ? parsed.value : null;\n}\n\n// signedOffset('-5', '30') -> -330\nexport function signedOffset(offHourStr, offMinuteStr) {\n let offHour = parseInt(offHourStr, 10);\n\n // don't || this because we want to preserve -0\n if (Number.isNaN(offHour)) {\n offHour = 0;\n }\n\n const offMin = parseInt(offMinuteStr, 10) || 0,\n offMinSigned = offHour < 0 || Object.is(offHour, -0) ? -offMin : offMin;\n return offHour * 60 + offMinSigned;\n}\n\n// COERCION\n\nexport function asNumber(value) {\n const numericValue = Number(value);\n if (typeof value === \"boolean\" || value === \"\" || Number.isNaN(numericValue))\n throw new InvalidArgumentError(`Invalid unit value ${value}`);\n return numericValue;\n}\n\nexport function normalizeObject(obj, normalizer) {\n const normalized = {};\n for (const u in obj) {\n if (hasOwnProperty(obj, u)) {\n const v = obj[u];\n if (v === undefined || v === null) continue;\n normalized[normalizer(u)] = asNumber(v);\n }\n }\n return normalized;\n}\n\n/**\n * Returns the offset's value as a string\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\nexport function formatOffset(offset, format) {\n const hours = Math.trunc(Math.abs(offset / 60)),\n minutes = Math.trunc(Math.abs(offset % 60)),\n sign = offset >= 0 ? \"+\" : \"-\";\n\n switch (format) {\n case \"short\":\n return `${sign}${padStart(hours, 2)}:${padStart(minutes, 2)}`;\n case \"narrow\":\n return `${sign}${hours}${minutes > 0 ? `:${minutes}` : \"\"}`;\n case \"techie\":\n return `${sign}${padStart(hours, 2)}${padStart(minutes, 2)}`;\n default:\n throw new RangeError(`Value format ${format} is out of range for property format`);\n }\n}\n\nexport function timeObject(obj) {\n return pick(obj, [\"hour\", \"minute\", \"second\", \"millisecond\"]);\n}\n", "import * as Formats from \"./formats.js\";\nimport { pick } from \"./util.js\";\n\nfunction stringify(obj) {\n return JSON.stringify(obj, Object.keys(obj).sort());\n}\n\n/**\n * @private\n */\n\nexport const monthsLong = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n\nexport const monthsShort = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n];\n\nexport const monthsNarrow = [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"];\n\nexport function months(length) {\n switch (length) {\n case \"narrow\":\n return [...monthsNarrow];\n case \"short\":\n return [...monthsShort];\n case \"long\":\n return [...monthsLong];\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"];\n case \"2-digit\":\n return [\"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\", \"10\", \"11\", \"12\"];\n default:\n return null;\n }\n}\n\nexport const weekdaysLong = [\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n \"Sunday\",\n];\n\nexport const weekdaysShort = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\n\nexport const weekdaysNarrow = [\"M\", \"T\", \"W\", \"T\", \"F\", \"S\", \"S\"];\n\nexport function weekdays(length) {\n switch (length) {\n case \"narrow\":\n return [...weekdaysNarrow];\n case \"short\":\n return [...weekdaysShort];\n case \"long\":\n return [...weekdaysLong];\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"];\n default:\n return null;\n }\n}\n\nexport const meridiems = [\"AM\", \"PM\"];\n\nexport const erasLong = [\"Before Christ\", \"Anno Domini\"];\n\nexport const erasShort = [\"BC\", \"AD\"];\n\nexport const erasNarrow = [\"B\", \"A\"];\n\nexport function eras(length) {\n switch (length) {\n case \"narrow\":\n return [...erasNarrow];\n case \"short\":\n return [...erasShort];\n case \"long\":\n return [...erasLong];\n default:\n return null;\n }\n}\n\nexport function meridiemForDateTime(dt) {\n return meridiems[dt.hour < 12 ? 0 : 1];\n}\n\nexport function weekdayForDateTime(dt, length) {\n return weekdays(length)[dt.weekday - 1];\n}\n\nexport function monthForDateTime(dt, length) {\n return months(length)[dt.month - 1];\n}\n\nexport function eraForDateTime(dt, length) {\n return eras(length)[dt.year < 0 ? 0 : 1];\n}\n\nexport function formatRelativeTime(unit, count, numeric = \"always\", narrow = false) {\n const units = {\n years: [\"year\", \"yr.\"],\n quarters: [\"quarter\", \"qtr.\"],\n months: [\"month\", \"mo.\"],\n weeks: [\"week\", \"wk.\"],\n days: [\"day\", \"day\", \"days\"],\n hours: [\"hour\", \"hr.\"],\n minutes: [\"minute\", \"min.\"],\n seconds: [\"second\", \"sec.\"],\n };\n\n const lastable = [\"hours\", \"minutes\", \"seconds\"].indexOf(unit) === -1;\n\n if (numeric === \"auto\" && lastable) {\n const isDay = unit === \"days\";\n switch (count) {\n case 1:\n return isDay ? \"tomorrow\" : `next ${units[unit][0]}`;\n case -1:\n return isDay ? \"yesterday\" : `last ${units[unit][0]}`;\n case 0:\n return isDay ? \"today\" : `this ${units[unit][0]}`;\n default: // fall through\n }\n }\n\n const isInPast = Object.is(count, -0) || count < 0,\n fmtValue = Math.abs(count),\n singular = fmtValue === 1,\n lilUnits = units[unit],\n fmtUnit = narrow\n ? singular\n ? lilUnits[1]\n : lilUnits[2] || lilUnits[1]\n : singular\n ? units[unit][0]\n : unit;\n return isInPast ? `${fmtValue} ${fmtUnit} ago` : `in ${fmtValue} ${fmtUnit}`;\n}\n\nexport function formatString(knownFormat) {\n // these all have the offsets removed because we don't have access to them\n // without all the intl stuff this is backfilling\n const filtered = pick(knownFormat, [\n \"weekday\",\n \"era\",\n \"year\",\n \"month\",\n \"day\",\n \"hour\",\n \"minute\",\n \"second\",\n \"timeZoneName\",\n \"hourCycle\",\n ]),\n key = stringify(filtered),\n dateTimeHuge = \"EEEE, LLLL d, yyyy, h:mm a\";\n switch (key) {\n case stringify(Formats.DATE_SHORT):\n return \"M/d/yyyy\";\n case stringify(Formats.DATE_MED):\n return \"LLL d, yyyy\";\n case stringify(Formats.DATE_MED_WITH_WEEKDAY):\n return \"EEE, LLL d, yyyy\";\n case stringify(Formats.DATE_FULL):\n return \"LLLL d, yyyy\";\n case stringify(Formats.DATE_HUGE):\n return \"EEEE, LLLL d, yyyy\";\n case stringify(Formats.TIME_SIMPLE):\n return \"h:mm a\";\n case stringify(Formats.TIME_WITH_SECONDS):\n return \"h:mm:ss a\";\n case stringify(Formats.TIME_WITH_SHORT_OFFSET):\n return \"h:mm a\";\n case stringify(Formats.TIME_WITH_LONG_OFFSET):\n return \"h:mm a\";\n case stringify(Formats.TIME_24_SIMPLE):\n return \"HH:mm\";\n case stringify(Formats.TIME_24_WITH_SECONDS):\n return \"HH:mm:ss\";\n case stringify(Formats.TIME_24_WITH_SHORT_OFFSET):\n return \"HH:mm\";\n case stringify(Formats.TIME_24_WITH_LONG_OFFSET):\n return \"HH:mm\";\n case stringify(Formats.DATETIME_SHORT):\n return \"M/d/yyyy, h:mm a\";\n case stringify(Formats.DATETIME_MED):\n return \"LLL d, yyyy, h:mm a\";\n case stringify(Formats.DATETIME_FULL):\n return \"LLLL d, yyyy, h:mm a\";\n case stringify(Formats.DATETIME_HUGE):\n return dateTimeHuge;\n case stringify(Formats.DATETIME_SHORT_WITH_SECONDS):\n return \"M/d/yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_MED_WITH_SECONDS):\n return \"LLL d, yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_MED_WITH_WEEKDAY):\n return \"EEE, d LLL yyyy, h:mm a\";\n case stringify(Formats.DATETIME_FULL_WITH_SECONDS):\n return \"LLLL d, yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_HUGE_WITH_SECONDS):\n return \"EEEE, LLLL d, yyyy, h:mm:ss a\";\n default:\n return dateTimeHuge;\n }\n}\n", "import * as English from \"./english.js\";\nimport * as Formats from \"./formats.js\";\nimport { padStart } from \"./util.js\";\n\nfunction stringifyTokens(splits, tokenToString) {\n let s = \"\";\n for (const token of splits) {\n if (token.literal) {\n s += token.val;\n } else {\n s += tokenToString(token.val);\n }\n }\n return s;\n}\n\nconst macroTokenToFormatOpts = {\n D: Formats.DATE_SHORT,\n DD: Formats.DATE_MED,\n DDD: Formats.DATE_FULL,\n DDDD: Formats.DATE_HUGE,\n t: Formats.TIME_SIMPLE,\n tt: Formats.TIME_WITH_SECONDS,\n ttt: Formats.TIME_WITH_SHORT_OFFSET,\n tttt: Formats.TIME_WITH_LONG_OFFSET,\n T: Formats.TIME_24_SIMPLE,\n TT: Formats.TIME_24_WITH_SECONDS,\n TTT: Formats.TIME_24_WITH_SHORT_OFFSET,\n TTTT: Formats.TIME_24_WITH_LONG_OFFSET,\n f: Formats.DATETIME_SHORT,\n ff: Formats.DATETIME_MED,\n fff: Formats.DATETIME_FULL,\n ffff: Formats.DATETIME_HUGE,\n F: Formats.DATETIME_SHORT_WITH_SECONDS,\n FF: Formats.DATETIME_MED_WITH_SECONDS,\n FFF: Formats.DATETIME_FULL_WITH_SECONDS,\n FFFF: Formats.DATETIME_HUGE_WITH_SECONDS,\n};\n\n/**\n * @private\n */\n\nexport default class Formatter {\n static create(locale, opts = {}) {\n return new Formatter(locale, opts);\n }\n\n static parseFormat(fmt) {\n // white-space is always considered a literal in user-provided formats\n // the \" \" token has a special meaning (see unitForToken)\n\n let current = null,\n currentFull = \"\",\n bracketed = false;\n const splits = [];\n for (let i = 0; i < fmt.length; i++) {\n const c = fmt.charAt(i);\n if (c === \"'\") {\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed || /^\\s+$/.test(currentFull), val: currentFull });\n }\n current = null;\n currentFull = \"\";\n bracketed = !bracketed;\n } else if (bracketed) {\n currentFull += c;\n } else if (c === current) {\n currentFull += c;\n } else {\n if (currentFull.length > 0) {\n splits.push({ literal: /^\\s+$/.test(currentFull), val: currentFull });\n }\n currentFull = c;\n current = c;\n }\n }\n\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed || /^\\s+$/.test(currentFull), val: currentFull });\n }\n\n return splits;\n }\n\n static macroTokenToFormatOpts(token) {\n return macroTokenToFormatOpts[token];\n }\n\n constructor(locale, formatOpts) {\n this.opts = formatOpts;\n this.loc = locale;\n this.systemLoc = null;\n }\n\n formatWithSystemDefault(dt, opts) {\n if (this.systemLoc === null) {\n this.systemLoc = this.loc.redefaultToSystem();\n }\n const df = this.systemLoc.dtFormatter(dt, { ...this.opts, ...opts });\n return df.format();\n }\n\n dtFormatter(dt, opts = {}) {\n return this.loc.dtFormatter(dt, { ...this.opts, ...opts });\n }\n\n formatDateTime(dt, opts) {\n return this.dtFormatter(dt, opts).format();\n }\n\n formatDateTimeParts(dt, opts) {\n return this.dtFormatter(dt, opts).formatToParts();\n }\n\n formatInterval(interval, opts) {\n const df = this.dtFormatter(interval.start, opts);\n return df.dtf.formatRange(interval.start.toJSDate(), interval.end.toJSDate());\n }\n\n resolvedOptions(dt, opts) {\n return this.dtFormatter(dt, opts).resolvedOptions();\n }\n\n num(n, p = 0) {\n // we get some perf out of doing this here, annoyingly\n if (this.opts.forceSimple) {\n return padStart(n, p);\n }\n\n const opts = { ...this.opts };\n\n if (p > 0) {\n opts.padTo = p;\n }\n\n return this.loc.numberFormatter(opts).format(n);\n }\n\n formatDateTimeFromString(dt, fmt) {\n const knownEnglish = this.loc.listingMode() === \"en\",\n useDateTimeFormatter = this.loc.outputCalendar && this.loc.outputCalendar !== \"gregory\",\n string = (opts, extract) => this.loc.extract(dt, opts, extract),\n formatOffset = (opts) => {\n if (dt.isOffsetFixed && dt.offset === 0 && opts.allowZ) {\n return \"Z\";\n }\n\n return dt.isValid ? dt.zone.formatOffset(dt.ts, opts.format) : \"\";\n },\n meridiem = () =>\n knownEnglish\n ? English.meridiemForDateTime(dt)\n : string({ hour: \"numeric\", hourCycle: \"h12\" }, \"dayperiod\"),\n month = (length, standalone) =>\n knownEnglish\n ? English.monthForDateTime(dt, length)\n : string(standalone ? { month: length } : { month: length, day: \"numeric\" }, \"month\"),\n weekday = (length, standalone) =>\n knownEnglish\n ? English.weekdayForDateTime(dt, length)\n : string(\n standalone ? { weekday: length } : { weekday: length, month: \"long\", day: \"numeric\" },\n \"weekday\"\n ),\n maybeMacro = (token) => {\n const formatOpts = Formatter.macroTokenToFormatOpts(token);\n if (formatOpts) {\n return this.formatWithSystemDefault(dt, formatOpts);\n } else {\n return token;\n }\n },\n era = (length) =>\n knownEnglish ? English.eraForDateTime(dt, length) : string({ era: length }, \"era\"),\n tokenToString = (token) => {\n // Where possible: https://cldr.unicode.org/translation/date-time/date-time-symbols\n switch (token) {\n // ms\n case \"S\":\n return this.num(dt.millisecond);\n case \"u\":\n // falls through\n case \"SSS\":\n return this.num(dt.millisecond, 3);\n // seconds\n case \"s\":\n return this.num(dt.second);\n case \"ss\":\n return this.num(dt.second, 2);\n // fractional seconds\n case \"uu\":\n return this.num(Math.floor(dt.millisecond / 10), 2);\n case \"uuu\":\n return this.num(Math.floor(dt.millisecond / 100));\n // minutes\n case \"m\":\n return this.num(dt.minute);\n case \"mm\":\n return this.num(dt.minute, 2);\n // hours\n case \"h\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12);\n case \"hh\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12, 2);\n case \"H\":\n return this.num(dt.hour);\n case \"HH\":\n return this.num(dt.hour, 2);\n // offset\n case \"Z\":\n // like +6\n return formatOffset({ format: \"narrow\", allowZ: this.opts.allowZ });\n case \"ZZ\":\n // like +06:00\n return formatOffset({ format: \"short\", allowZ: this.opts.allowZ });\n case \"ZZZ\":\n // like +0600\n return formatOffset({ format: \"techie\", allowZ: this.opts.allowZ });\n case \"ZZZZ\":\n // like EST\n return dt.zone.offsetName(dt.ts, { format: \"short\", locale: this.loc.locale });\n case \"ZZZZZ\":\n // like Eastern Standard Time\n return dt.zone.offsetName(dt.ts, { format: \"long\", locale: this.loc.locale });\n // zone\n case \"z\":\n // like America/New_York\n return dt.zoneName;\n // meridiems\n case \"a\":\n return meridiem();\n // dates\n case \"d\":\n return useDateTimeFormatter ? string({ day: \"numeric\" }, \"day\") : this.num(dt.day);\n case \"dd\":\n return useDateTimeFormatter ? string({ day: \"2-digit\" }, \"day\") : this.num(dt.day, 2);\n // weekdays - standalone\n case \"c\":\n // like 1\n return this.num(dt.weekday);\n case \"ccc\":\n // like 'Tues'\n return weekday(\"short\", true);\n case \"cccc\":\n // like 'Tuesday'\n return weekday(\"long\", true);\n case \"ccccc\":\n // like 'T'\n return weekday(\"narrow\", true);\n // weekdays - format\n case \"E\":\n // like 1\n return this.num(dt.weekday);\n case \"EEE\":\n // like 'Tues'\n return weekday(\"short\", false);\n case \"EEEE\":\n // like 'Tuesday'\n return weekday(\"long\", false);\n case \"EEEEE\":\n // like 'T'\n return weekday(\"narrow\", false);\n // months - standalone\n case \"L\":\n // like 1\n return useDateTimeFormatter\n ? string({ month: \"numeric\", day: \"numeric\" }, \"month\")\n : this.num(dt.month);\n case \"LL\":\n // like 01, doesn't seem to work\n return useDateTimeFormatter\n ? string({ month: \"2-digit\", day: \"numeric\" }, \"month\")\n : this.num(dt.month, 2);\n case \"LLL\":\n // like Jan\n return month(\"short\", true);\n case \"LLLL\":\n // like January\n return month(\"long\", true);\n case \"LLLLL\":\n // like J\n return month(\"narrow\", true);\n // months - format\n case \"M\":\n // like 1\n return useDateTimeFormatter\n ? string({ month: \"numeric\" }, \"month\")\n : this.num(dt.month);\n case \"MM\":\n // like 01\n return useDateTimeFormatter\n ? string({ month: \"2-digit\" }, \"month\")\n : this.num(dt.month, 2);\n case \"MMM\":\n // like Jan\n return month(\"short\", false);\n case \"MMMM\":\n // like January\n return month(\"long\", false);\n case \"MMMMM\":\n // like J\n return month(\"narrow\", false);\n // years\n case \"y\":\n // like 2014\n return useDateTimeFormatter ? string({ year: \"numeric\" }, \"year\") : this.num(dt.year);\n case \"yy\":\n // like 14\n return useDateTimeFormatter\n ? string({ year: \"2-digit\" }, \"year\")\n : this.num(dt.year.toString().slice(-2), 2);\n case \"yyyy\":\n // like 0012\n return useDateTimeFormatter\n ? string({ year: \"numeric\" }, \"year\")\n : this.num(dt.year, 4);\n case \"yyyyyy\":\n // like 000012\n return useDateTimeFormatter\n ? string({ year: \"numeric\" }, \"year\")\n : this.num(dt.year, 6);\n // eras\n case \"G\":\n // like AD\n return era(\"short\");\n case \"GG\":\n // like Anno Domini\n return era(\"long\");\n case \"GGGGG\":\n return era(\"narrow\");\n case \"kk\":\n return this.num(dt.weekYear.toString().slice(-2), 2);\n case \"kkkk\":\n return this.num(dt.weekYear, 4);\n case \"W\":\n return this.num(dt.weekNumber);\n case \"WW\":\n return this.num(dt.weekNumber, 2);\n case \"n\":\n return this.num(dt.localWeekNumber);\n case \"nn\":\n return this.num(dt.localWeekNumber, 2);\n case \"ii\":\n return this.num(dt.localWeekYear.toString().slice(-2), 2);\n case \"iiii\":\n return this.num(dt.localWeekYear, 4);\n case \"o\":\n return this.num(dt.ordinal);\n case \"ooo\":\n return this.num(dt.ordinal, 3);\n case \"q\":\n // like 1\n return this.num(dt.quarter);\n case \"qq\":\n // like 01\n return this.num(dt.quarter, 2);\n case \"X\":\n return this.num(Math.floor(dt.ts / 1000));\n case \"x\":\n return this.num(dt.ts);\n default:\n return maybeMacro(token);\n }\n };\n\n return stringifyTokens(Formatter.parseFormat(fmt), tokenToString);\n }\n\n formatDurationFromString(dur, fmt) {\n const tokenToField = (token) => {\n switch (token[0]) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"w\":\n return \"week\";\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n default:\n return null;\n }\n },\n tokenToString = (lildur) => (token) => {\n const mapped = tokenToField(token);\n if (mapped) {\n return this.num(lildur.get(mapped), token.length);\n } else {\n return token;\n }\n },\n tokens = Formatter.parseFormat(fmt),\n realTokens = tokens.reduce(\n (found, { literal, val }) => (literal ? found : found.concat(val)),\n []\n ),\n collapsed = dur.shiftTo(...realTokens.map(tokenToField).filter((t) => t));\n return stringifyTokens(tokens, tokenToString(collapsed));\n }\n}\n", "import {\n untruncateYear,\n signedOffset,\n parseInteger,\n parseMillis,\n isUndefined,\n parseFloating,\n} from \"./util.js\";\nimport * as English from \"./english.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\n\n/*\n * This file handles parsing for well-specified formats. Here's how it works:\n * Two things go into parsing: a regex to match with and an extractor to take apart the groups in the match.\n * An extractor is just a function that takes a regex match array and returns a { year: ..., month: ... } object\n * parse() does the work of executing the regex and applying the extractor. It takes multiple regex/extractor pairs to try in sequence.\n * Extractors can take a \"cursor\" representing the offset in the match to look at. This makes it easy to combine extractors.\n * combineExtractors() does the work of combining them, keeping track of the cursor through multiple extractions.\n * Some extractions are super dumb and simpleParse and fromStrings help DRY them.\n */\n\nconst ianaRegex = /[A-Za-z_+-]{1,256}(?::?\\/[A-Za-z0-9_+-]{1,256}(?:\\/[A-Za-z0-9_+-]{1,256})?)?/;\n\nfunction combineRegexes(...regexes) {\n const full = regexes.reduce((f, r) => f + r.source, \"\");\n return RegExp(`^${full}$`);\n}\n\nfunction combineExtractors(...extractors) {\n return (m) =>\n extractors\n .reduce(\n ([mergedVals, mergedZone, cursor], ex) => {\n const [val, zone, next] = ex(m, cursor);\n return [{ ...mergedVals, ...val }, zone || mergedZone, next];\n },\n [{}, null, 1]\n )\n .slice(0, 2);\n}\n\nfunction parse(s, ...patterns) {\n if (s == null) {\n return [null, null];\n }\n\n for (const [regex, extractor] of patterns) {\n const m = regex.exec(s);\n if (m) {\n return extractor(m);\n }\n }\n return [null, null];\n}\n\nfunction simpleParse(...keys) {\n return (match, cursor) => {\n const ret = {};\n let i;\n\n for (i = 0; i < keys.length; i++) {\n ret[keys[i]] = parseInteger(match[cursor + i]);\n }\n return [ret, null, cursor + i];\n };\n}\n\n// ISO and SQL parsing\nconst offsetRegex = /(?:(Z)|([+-]\\d\\d)(?::?(\\d\\d))?)/;\nconst isoExtendedZone = `(?:${offsetRegex.source}?(?:\\\\[(${ianaRegex.source})\\\\])?)?`;\nconst isoTimeBaseRegex = /(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:[.,](\\d{1,30}))?)?)?/;\nconst isoTimeRegex = RegExp(`${isoTimeBaseRegex.source}${isoExtendedZone}`);\nconst isoTimeExtensionRegex = RegExp(`(?:T${isoTimeRegex.source})?`);\nconst isoYmdRegex = /([+-]\\d{6}|\\d{4})(?:-?(\\d\\d)(?:-?(\\d\\d))?)?/;\nconst isoWeekRegex = /(\\d{4})-?W(\\d\\d)(?:-?(\\d))?/;\nconst isoOrdinalRegex = /(\\d{4})-?(\\d{3})/;\nconst extractISOWeekData = simpleParse(\"weekYear\", \"weekNumber\", \"weekDay\");\nconst extractISOOrdinalData = simpleParse(\"year\", \"ordinal\");\nconst sqlYmdRegex = /(\\d{4})-(\\d\\d)-(\\d\\d)/; // dumbed-down version of the ISO one\nconst sqlTimeRegex = RegExp(\n `${isoTimeBaseRegex.source} ?(?:${offsetRegex.source}|(${ianaRegex.source}))?`\n);\nconst sqlTimeExtensionRegex = RegExp(`(?: ${sqlTimeRegex.source})?`);\n\nfunction int(match, pos, fallback) {\n const m = match[pos];\n return isUndefined(m) ? fallback : parseInteger(m);\n}\n\nfunction extractISOYmd(match, cursor) {\n const item = {\n year: int(match, cursor),\n month: int(match, cursor + 1, 1),\n day: int(match, cursor + 2, 1),\n };\n\n return [item, null, cursor + 3];\n}\n\nfunction extractISOTime(match, cursor) {\n const item = {\n hours: int(match, cursor, 0),\n minutes: int(match, cursor + 1, 0),\n seconds: int(match, cursor + 2, 0),\n milliseconds: parseMillis(match[cursor + 3]),\n };\n\n return [item, null, cursor + 4];\n}\n\nfunction extractISOOffset(match, cursor) {\n const local = !match[cursor] && !match[cursor + 1],\n fullOffset = signedOffset(match[cursor + 1], match[cursor + 2]),\n zone = local ? null : FixedOffsetZone.instance(fullOffset);\n return [{}, zone, cursor + 3];\n}\n\nfunction extractIANAZone(match, cursor) {\n const zone = match[cursor] ? IANAZone.create(match[cursor]) : null;\n return [{}, zone, cursor + 1];\n}\n\n// ISO time parsing\n\nconst isoTimeOnly = RegExp(`^T?${isoTimeBaseRegex.source}$`);\n\n// ISO duration parsing\n\nconst isoDuration =\n /^-?P(?:(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)Y)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)W)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)D)?(?:T(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)H)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20})(?:[.,](-?\\d{1,20}))?S)?)?)$/;\n\nfunction extractISODuration(match) {\n const [s, yearStr, monthStr, weekStr, dayStr, hourStr, minuteStr, secondStr, millisecondsStr] =\n match;\n\n const hasNegativePrefix = s[0] === \"-\";\n const negativeSeconds = secondStr && secondStr[0] === \"-\";\n\n const maybeNegate = (num, force = false) =>\n num !== undefined && (force || (num && hasNegativePrefix)) ? -num : num;\n\n return [\n {\n years: maybeNegate(parseFloating(yearStr)),\n months: maybeNegate(parseFloating(monthStr)),\n weeks: maybeNegate(parseFloating(weekStr)),\n days: maybeNegate(parseFloating(dayStr)),\n hours: maybeNegate(parseFloating(hourStr)),\n minutes: maybeNegate(parseFloating(minuteStr)),\n seconds: maybeNegate(parseFloating(secondStr), secondStr === \"-0\"),\n milliseconds: maybeNegate(parseMillis(millisecondsStr), negativeSeconds),\n },\n ];\n}\n\n// These are a little braindead. EDT *should* tell us that we're in, say, America/New_York\n// and not just that we're in -240 *right now*. But since I don't think these are used that often\n// I'm just going to ignore that\nconst obsOffsets = {\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\nfunction fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n const result = {\n year: yearStr.length === 2 ? untruncateYear(parseInteger(yearStr)) : parseInteger(yearStr),\n month: English.monthsShort.indexOf(monthStr) + 1,\n day: parseInteger(dayStr),\n hour: parseInteger(hourStr),\n minute: parseInteger(minuteStr),\n };\n\n if (secondStr) result.second = parseInteger(secondStr);\n if (weekdayStr) {\n result.weekday =\n weekdayStr.length > 3\n ? English.weekdaysLong.indexOf(weekdayStr) + 1\n : English.weekdaysShort.indexOf(weekdayStr) + 1;\n }\n\n return result;\n}\n\n// RFC 2822/5322\nconst 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\\d)(\\d\\d)))$/;\n\nfunction extractRFC2822(match) {\n const [\n ,\n weekdayStr,\n dayStr,\n monthStr,\n yearStr,\n hourStr,\n minuteStr,\n secondStr,\n obsOffset,\n milOffset,\n offHourStr,\n offMinuteStr,\n ] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n\n let offset;\n if (obsOffset) {\n offset = obsOffsets[obsOffset];\n } else if (milOffset) {\n offset = 0;\n } else {\n offset = signedOffset(offHourStr, offMinuteStr);\n }\n\n return [result, new FixedOffsetZone(offset)];\n}\n\nfunction 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 .trim();\n}\n\n// http date\n\nconst rfc1123 =\n /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d\\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n rfc850 =\n /^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\\d\\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n ascii =\n /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \\d|\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) (\\d{4})$/;\n\nfunction extractRFC1123Or850(match) {\n const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nfunction extractASCII(match) {\n const [, weekdayStr, monthStr, dayStr, hourStr, minuteStr, secondStr, yearStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nconst isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex);\nconst isoWeekWithTimeExtensionRegex = combineRegexes(isoWeekRegex, isoTimeExtensionRegex);\nconst isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeExtensionRegex);\nconst isoTimeCombinedRegex = combineRegexes(isoTimeRegex);\n\nconst extractISOYmdTimeAndOffset = combineExtractors(\n extractISOYmd,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOWeekTimeAndOffset = combineExtractors(\n extractISOWeekData,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOOrdinalDateAndTime = combineExtractors(\n extractISOOrdinalData,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOTimeAndOffset = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\n/*\n * @private\n */\n\nexport function parseISODate(s) {\n return parse(\n s,\n [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset],\n [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDateAndTime],\n [isoTimeCombinedRegex, extractISOTimeAndOffset]\n );\n}\n\nexport function parseRFC2822Date(s) {\n return parse(preprocessRFC2822(s), [rfc2822, extractRFC2822]);\n}\n\nexport function parseHTTPDate(s) {\n return parse(\n s,\n [rfc1123, extractRFC1123Or850],\n [rfc850, extractRFC1123Or850],\n [ascii, extractASCII]\n );\n}\n\nexport function parseISODuration(s) {\n return parse(s, [isoDuration, extractISODuration]);\n}\n\nconst extractISOTimeOnly = combineExtractors(extractISOTime);\n\nexport function parseISOTimeOnly(s) {\n return parse(s, [isoTimeOnly, extractISOTimeOnly]);\n}\n\nconst sqlYmdWithTimeExtensionRegex = combineRegexes(sqlYmdRegex, sqlTimeExtensionRegex);\nconst sqlTimeCombinedRegex = combineRegexes(sqlTimeRegex);\n\nconst extractISOTimeOffsetAndIANAZone = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\nexport function parseSQL(s) {\n return parse(\n s,\n [sqlYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone]\n );\n}\n", "import { InvalidArgumentError, InvalidDurationError, InvalidUnitError } from \"./errors.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport Invalid from \"./impl/invalid.js\";\nimport Locale from \"./impl/locale.js\";\nimport { parseISODuration, parseISOTimeOnly } from \"./impl/regexParser.js\";\nimport {\n asNumber,\n hasOwnProperty,\n isNumber,\n isUndefined,\n normalizeObject,\n roundTo,\n} from \"./impl/util.js\";\nimport Settings from \"./settings.js\";\nimport DateTime from \"./datetime.js\";\n\nconst INVALID = \"Invalid Duration\";\n\n// unit conversion constants\nexport const lowOrderMatrix = {\n weeks: {\n days: 7,\n hours: 7 * 24,\n minutes: 7 * 24 * 60,\n seconds: 7 * 24 * 60 * 60,\n milliseconds: 7 * 24 * 60 * 60 * 1000,\n },\n days: {\n hours: 24,\n minutes: 24 * 60,\n seconds: 24 * 60 * 60,\n milliseconds: 24 * 60 * 60 * 1000,\n },\n hours: { minutes: 60, seconds: 60 * 60, milliseconds: 60 * 60 * 1000 },\n minutes: { seconds: 60, milliseconds: 60 * 1000 },\n seconds: { milliseconds: 1000 },\n },\n casualMatrix = {\n years: {\n quarters: 4,\n months: 12,\n weeks: 52,\n days: 365,\n hours: 365 * 24,\n minutes: 365 * 24 * 60,\n seconds: 365 * 24 * 60 * 60,\n milliseconds: 365 * 24 * 60 * 60 * 1000,\n },\n quarters: {\n months: 3,\n weeks: 13,\n days: 91,\n hours: 91 * 24,\n minutes: 91 * 24 * 60,\n seconds: 91 * 24 * 60 * 60,\n milliseconds: 91 * 24 * 60 * 60 * 1000,\n },\n months: {\n weeks: 4,\n days: 30,\n hours: 30 * 24,\n minutes: 30 * 24 * 60,\n seconds: 30 * 24 * 60 * 60,\n milliseconds: 30 * 24 * 60 * 60 * 1000,\n },\n\n ...lowOrderMatrix,\n },\n daysInYearAccurate = 146097.0 / 400,\n daysInMonthAccurate = 146097.0 / 4800,\n accurateMatrix = {\n years: {\n quarters: 4,\n months: 12,\n weeks: daysInYearAccurate / 7,\n days: daysInYearAccurate,\n hours: daysInYearAccurate * 24,\n minutes: daysInYearAccurate * 24 * 60,\n seconds: daysInYearAccurate * 24 * 60 * 60,\n milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000,\n },\n quarters: {\n months: 3,\n weeks: daysInYearAccurate / 28,\n days: daysInYearAccurate / 4,\n hours: (daysInYearAccurate * 24) / 4,\n minutes: (daysInYearAccurate * 24 * 60) / 4,\n seconds: (daysInYearAccurate * 24 * 60 * 60) / 4,\n milliseconds: (daysInYearAccurate * 24 * 60 * 60 * 1000) / 4,\n },\n months: {\n weeks: daysInMonthAccurate / 7,\n days: daysInMonthAccurate,\n hours: daysInMonthAccurate * 24,\n minutes: daysInMonthAccurate * 24 * 60,\n seconds: daysInMonthAccurate * 24 * 60 * 60,\n milliseconds: daysInMonthAccurate * 24 * 60 * 60 * 1000,\n },\n ...lowOrderMatrix,\n };\n\n// units ordered by size\nconst orderedUnits = [\n \"years\",\n \"quarters\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\",\n];\n\nconst reverseUnits = orderedUnits.slice(0).reverse();\n\n// clone really means \"create another instance just like this one, but with these changes\"\nfunction clone(dur, alts, clear = false) {\n // deep merge for vals\n const conf = {\n values: clear ? alts.values : { ...dur.values, ...(alts.values || {}) },\n loc: dur.loc.clone(alts.loc),\n conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy,\n matrix: alts.matrix || dur.matrix,\n };\n return new Duration(conf);\n}\n\nfunction durationToMillis(matrix, vals) {\n let sum = vals.milliseconds ?? 0;\n for (const unit of reverseUnits.slice(1)) {\n if (vals[unit]) {\n sum += vals[unit] * matrix[unit][\"milliseconds\"];\n }\n }\n return sum;\n}\n\n// NB: mutates parameters\nfunction normalizeValues(matrix, vals) {\n // the logic below assumes the overall value of the duration is positive\n // if this is not the case, factor is used to make it so\n const factor = durationToMillis(matrix, vals) < 0 ? -1 : 1;\n\n orderedUnits.reduceRight((previous, current) => {\n if (!isUndefined(vals[current])) {\n if (previous) {\n const previousVal = vals[previous] * factor;\n const conv = matrix[current][previous];\n\n // if (previousVal < 0):\n // lower order unit is negative (e.g. { years: 2, days: -2 })\n // normalize this by reducing the higher order unit by the appropriate amount\n // and increasing the lower order unit\n // this can never make the higher order unit negative, because this function only operates\n // on positive durations, so the amount of time represented by the lower order unit cannot\n // be larger than the higher order unit\n // else:\n // lower order unit is positive (e.g. { years: 2, days: 450 } or { years: -2, days: 450 })\n // in this case we attempt to convert as much as possible from the lower order unit into\n // the higher order one\n //\n // Math.floor takes care of both of these cases, rounding away from 0\n // if previousVal < 0 it makes the absolute value larger\n // if previousVal >= it makes the absolute value smaller\n const rollUp = Math.floor(previousVal / conv);\n vals[current] += rollUp * factor;\n vals[previous] -= rollUp * conv * factor;\n }\n return current;\n } else {\n return previous;\n }\n }, null);\n\n // try to convert any decimals into smaller units if possible\n // for example for { years: 2.5, days: 0, seconds: 0 } we want to get { years: 2, days: 182, hours: 12 }\n orderedUnits.reduce((previous, current) => {\n if (!isUndefined(vals[current])) {\n if (previous) {\n const fraction = vals[previous] % 1;\n vals[previous] -= fraction;\n vals[current] += fraction * matrix[previous][current];\n }\n return current;\n } else {\n return previous;\n }\n }, null);\n}\n\n// Remove all properties with a value of 0 from an object\nfunction removeZeroes(vals) {\n const newVals = {};\n for (const [key, value] of Object.entries(vals)) {\n if (value !== 0) {\n newVals[key] = value;\n }\n }\n return newVals;\n}\n\n/**\n * A Duration object represents a period of time, like \"2 months\" or \"1 day, 1 hour\". Conceptually, it's just a map of units to their quantities, accompanied by some additional configuration and methods for creating, parsing, interrogating, transforming, and formatting them. They can be used on their own or in conjunction with other Luxon types; for example, you can use {@link DateTime#plus} to add a Duration object to a DateTime, producing another DateTime.\n *\n * Here is a brief overview of commonly used methods and getters in Duration:\n *\n * * **Creation** To create a Duration, use {@link Duration.fromMillis}, {@link Duration.fromObject}, or {@link Duration.fromISO}.\n * * **Unit values** See the {@link Duration#years}, {@link Duration#months}, {@link Duration#weeks}, {@link Duration#days}, {@link Duration#hours}, {@link Duration#minutes}, {@link Duration#seconds}, {@link Duration#milliseconds} accessors.\n * * **Configuration** See {@link Duration#locale} and {@link Duration#numberingSystem} accessors.\n * * **Transformation** To create new Durations out of old ones use {@link Duration#plus}, {@link Duration#minus}, {@link Duration#normalize}, {@link Duration#set}, {@link Duration#reconfigure}, {@link Duration#shiftTo}, and {@link Duration#negate}.\n * * **Output** To convert the Duration into other representations, see {@link Duration#as}, {@link Duration#toISO}, {@link Duration#toFormat}, and {@link Duration#toJSON}\n *\n * There's are more methods documented below. In addition, for more information on subtler topics like internationalization and validity, see the external documentation.\n */\nexport default class Duration {\n /**\n * @private\n */\n constructor(config) {\n const accurate = config.conversionAccuracy === \"longterm\" || false;\n let matrix = accurate ? accurateMatrix : casualMatrix;\n\n if (config.matrix) {\n matrix = config.matrix;\n }\n\n /**\n * @access private\n */\n this.values = config.values;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.conversionAccuracy = accurate ? \"longterm\" : \"casual\";\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.matrix = matrix;\n /**\n * @access private\n */\n this.isLuxonDuration = true;\n }\n\n /**\n * Create Duration from a number of milliseconds.\n * @param {number} count of milliseconds\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n static fromMillis(count, opts) {\n return Duration.fromObject({ milliseconds: count }, opts);\n }\n\n /**\n * Create a Duration from a JavaScript object with keys like 'years' and 'hours'.\n * If this object is empty then a zero milliseconds duration is returned.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.years\n * @param {number} obj.quarters\n * @param {number} obj.months\n * @param {number} obj.weeks\n * @param {number} obj.days\n * @param {number} obj.hours\n * @param {number} obj.minutes\n * @param {number} obj.seconds\n * @param {number} obj.milliseconds\n * @param {Object} [opts=[]] - options for creating this Duration\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the custom conversion system to use\n * @return {Duration}\n */\n static fromObject(obj, opts = {}) {\n if (obj == null || typeof obj !== \"object\") {\n throw new InvalidArgumentError(\n `Duration.fromObject: argument expected to be an object, got ${\n obj === null ? \"null\" : typeof obj\n }`\n );\n }\n\n return new Duration({\n values: normalizeObject(obj, Duration.normalizeUnit),\n loc: Locale.fromObject(opts),\n conversionAccuracy: opts.conversionAccuracy,\n matrix: opts.matrix,\n });\n }\n\n /**\n * Create a Duration from DurationLike.\n *\n * @param {Object | number | Duration} durationLike\n * One of:\n * - object with keys like 'years' and 'hours'.\n * - number representing milliseconds\n * - Duration instance\n * @return {Duration}\n */\n static fromDurationLike(durationLike) {\n if (isNumber(durationLike)) {\n return Duration.fromMillis(durationLike);\n } else if (Duration.isDuration(durationLike)) {\n return durationLike;\n } else if (typeof durationLike === \"object\") {\n return Duration.fromObject(durationLike);\n } else {\n throw new InvalidArgumentError(\n `Unknown duration argument ${durationLike} of type ${typeof durationLike}`\n );\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 duration string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the preset conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromISO('P3Y6M1W4DT12H30M5S').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 }\n * @example Duration.fromISO('PT23H').toObject() //=> { hours: 23 }\n * @example Duration.fromISO('P5Y3M').toObject() //=> { years: 5, months: 3 }\n * @return {Duration}\n */\n static fromISO(text, opts) {\n const [parsed] = parseISODuration(text);\n if (parsed) {\n return Duration.fromObject(parsed, opts);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 time string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @example Duration.fromISOTime('11:22:33.444').toObject() //=> { hours: 11, minutes: 22, seconds: 33, milliseconds: 444 }\n * @example Duration.fromISOTime('11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @return {Duration}\n */\n static fromISOTime(text, opts) {\n const [parsed] = parseISOTimeOnly(text);\n if (parsed) {\n return Duration.fromObject(parsed, opts);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create an invalid Duration.\n * @param {string} reason - simple string of why this datetime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Duration}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Duration is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDurationError(invalid);\n } else {\n return new Duration({ invalid });\n }\n }\n\n /**\n * @private\n */\n static normalizeUnit(unit) {\n const normalized = {\n year: \"years\",\n years: \"years\",\n quarter: \"quarters\",\n quarters: \"quarters\",\n month: \"months\",\n months: \"months\",\n week: \"weeks\",\n weeks: \"weeks\",\n day: \"days\",\n days: \"days\",\n hour: \"hours\",\n hours: \"hours\",\n minute: \"minutes\",\n minutes: \"minutes\",\n second: \"seconds\",\n seconds: \"seconds\",\n millisecond: \"milliseconds\",\n milliseconds: \"milliseconds\",\n }[unit ? unit.toLowerCase() : unit];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n }\n\n /**\n * Check if an object is a Duration. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDuration(o) {\n return (o && o.isLuxonDuration) || false;\n }\n\n /**\n * Get the locale of a Duration, such 'en-GB'\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a Duration, such 'beng'. The numbering system is used when formatting the Duration\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Returns a string representation of this Duration formatted according to the specified format string. You may use these tokens:\n * * `S` for milliseconds\n * * `s` for seconds\n * * `m` for minutes\n * * `h` for hours\n * * `d` for days\n * * `w` for weeks\n * * `M` for months\n * * `y` for years\n * Notes:\n * * Add padding by repeating the token, e.g. \"yy\" pads the years to two digits, \"hhhh\" pads the hours out to four digits\n * * Tokens can be escaped by wrapping with single quotes.\n * * The duration will be converted to the set of units in the format string using {@link Duration#shiftTo} and the Durations's conversion accuracy setting.\n * @param {string} fmt - the format string\n * @param {Object} opts - options\n * @param {boolean} [opts.floor=true] - floor numerical values\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"y d s\") //=> \"1 6 2\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"yy dd sss\") //=> \"01 06 002\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"M S\") //=> \"12 518402000\"\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n // reverse-compat since 1.2; we always round down now, never up, and we do it by default\n const fmtOpts = {\n ...opts,\n floor: opts.round !== false && opts.floor !== false,\n };\n return this.isValid\n ? Formatter.create(this.loc, fmtOpts).formatDurationFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a string representation of a Duration with all units included.\n * To modify its behavior, use `listStyle` and any Intl.NumberFormat option, though `unitDisplay` is especially relevant.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#options\n * @param {Object} opts - Formatting options. Accepts the same keys as the options parameter of the native `Intl.NumberFormat` constructor, as well as `listStyle`.\n * @param {string} [opts.listStyle='narrow'] - How to format the merged list. Corresponds to the `style` property of the options parameter of the native `Intl.ListFormat` constructor.\n * @example\n * ```js\n * var dur = Duration.fromObject({ days: 1, hours: 5, minutes: 6 })\n * dur.toHuman() //=> '1 day, 5 hours, 6 minutes'\n * dur.toHuman({ listStyle: \"long\" }) //=> '1 day, 5 hours, and 6 minutes'\n * dur.toHuman({ unitDisplay: \"short\" }) //=> '1 day, 5 hr, 6 min'\n * ```\n */\n toHuman(opts = {}) {\n if (!this.isValid) return INVALID;\n\n const l = orderedUnits\n .map((unit) => {\n const val = this.values[unit];\n if (isUndefined(val)) {\n return null;\n }\n return this.loc\n .numberFormatter({ style: \"unit\", unitDisplay: \"long\", ...opts, unit: unit.slice(0, -1) })\n .format(val);\n })\n .filter((n) => n);\n\n return this.loc\n .listFormatter({ type: \"conjunction\", style: opts.listStyle || \"narrow\", ...opts })\n .format(l);\n }\n\n /**\n * Returns a JavaScript object with this Duration's values.\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 }\n * @return {Object}\n */\n toObject() {\n if (!this.isValid) return {};\n return { ...this.values };\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> 'P3YT45S'\n * @example Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> 'P4MT45S'\n * @example Duration.fromObject({ months: 5 }).toISO() //=> 'P5M'\n * @example Duration.fromObject({ minutes: 5 }).toISO() //=> 'PT5M'\n * @example Duration.fromObject({ milliseconds: 6 }).toISO() //=> 'PT0.006S'\n * @return {string}\n */\n toISO() {\n // we could use the formatter, but this is an easier way to get the minimum string\n if (!this.isValid) return null;\n\n let s = \"P\";\n if (this.years !== 0) s += this.years + \"Y\";\n if (this.months !== 0 || this.quarters !== 0) s += this.months + this.quarters * 3 + \"M\";\n if (this.weeks !== 0) s += this.weeks + \"W\";\n if (this.days !== 0) s += this.days + \"D\";\n if (this.hours !== 0 || this.minutes !== 0 || this.seconds !== 0 || this.milliseconds !== 0)\n s += \"T\";\n if (this.hours !== 0) s += this.hours + \"H\";\n if (this.minutes !== 0) s += this.minutes + \"M\";\n if (this.seconds !== 0 || this.milliseconds !== 0)\n // this will handle \"floating point madness\" by removing extra decimal places\n // https://stackoverflow.com/questions/588004/is-floating-point-math-broken\n s += roundTo(this.seconds + this.milliseconds / 1000, 3) + \"S\";\n if (s === \"P\") s += \"T0S\";\n return s;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration, formatted as a time of day.\n * Note that this will return null if the duration is invalid, negative, or equal to or greater than 24 hours.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example Duration.fromObject({ hours: 11 }).toISOTime() //=> '11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressMilliseconds: true }) //=> '11:00:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressSeconds: true }) //=> '11:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ includePrefix: true }) //=> 'T11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ format: 'basic' }) //=> '110000.000'\n * @return {string}\n */\n toISOTime(opts = {}) {\n if (!this.isValid) return null;\n\n const millis = this.toMillis();\n if (millis < 0 || millis >= 86400000) return null;\n\n opts = {\n suppressMilliseconds: false,\n suppressSeconds: false,\n includePrefix: false,\n format: \"extended\",\n ...opts,\n includeOffset: false,\n };\n\n const dateTime = DateTime.fromMillis(millis, { zone: \"UTC\" });\n return dateTime.toISOTime(opts);\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in debugging.\n * @return {string}\n */\n toString() {\n return this.toISO();\n }\n\n /**\n * Returns a string representation of this Duration appropriate for the REPL.\n * @return {string}\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n if (this.isValid) {\n return `Duration { values: ${JSON.stringify(this.values)} }`;\n } else {\n return `Duration { Invalid, reason: ${this.invalidReason} }`;\n }\n }\n\n /**\n * Returns an milliseconds value of this Duration.\n * @return {number}\n */\n toMillis() {\n if (!this.isValid) return NaN;\n\n return durationToMillis(this.matrix, this.values);\n }\n\n /**\n * Returns an milliseconds value of this Duration. Alias of {@link toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Make this Duration longer by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n plus(duration) {\n if (!this.isValid) return this;\n\n const dur = Duration.fromDurationLike(duration),\n result = {};\n\n for (const k of orderedUnits) {\n if (hasOwnProperty(dur.values, k) || hasOwnProperty(this.values, k)) {\n result[k] = dur.get(k) + this.get(k);\n }\n }\n\n return clone(this, { values: result }, true);\n }\n\n /**\n * Make this Duration shorter by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n minus(duration) {\n if (!this.isValid) return this;\n\n const dur = Duration.fromDurationLike(duration);\n return this.plus(dur.negate());\n }\n\n /**\n * Scale this Duration by the specified amount. Return a newly-constructed Duration.\n * @param {function} fn - The function to apply to each unit. Arity is 1 or 2: the value of the unit and, optionally, the unit name. Must return a number.\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits(x => x * 2) //=> { hours: 2, minutes: 60 }\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits((x, u) => u === \"hours\" ? x * 2 : x) //=> { hours: 2, minutes: 30 }\n * @return {Duration}\n */\n mapUnits(fn) {\n if (!this.isValid) return this;\n const result = {};\n for (const k of Object.keys(this.values)) {\n result[k] = asNumber(fn(this.values[k], k));\n }\n return clone(this, { values: result }, true);\n }\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example Duration.fromObject({years: 2, days: 3}).get('years') //=> 2\n * @example Duration.fromObject({years: 2, days: 3}).get('months') //=> 0\n * @example Duration.fromObject({years: 2, days: 3}).get('days') //=> 3\n * @return {number}\n */\n get(unit) {\n return this[Duration.normalizeUnit(unit)];\n }\n\n /**\n * \"Set\" the values of specified units. Return a newly-constructed Duration.\n * @param {Object} values - a mapping of units to numbers\n * @example dur.set({ years: 2017 })\n * @example dur.set({ hours: 8, minutes: 30 })\n * @return {Duration}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const mixed = { ...this.values, ...normalizeObject(values, Duration.normalizeUnit) };\n return clone(this, { values: mixed });\n }\n\n /**\n * \"Set\" the locale and/or numberingSystem. Returns a newly-constructed Duration.\n * @example dur.reconfigure({ locale: 'en-GB' })\n * @return {Duration}\n */\n reconfigure({ locale, numberingSystem, conversionAccuracy, matrix } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem });\n const opts = { loc, matrix, conversionAccuracy };\n return clone(this, opts);\n }\n\n /**\n * Return the length of the duration in the specified unit.\n * @param {string} unit - a unit such as 'minutes' or 'days'\n * @example Duration.fromObject({years: 1}).as('days') //=> 365\n * @example Duration.fromObject({years: 1}).as('months') //=> 12\n * @example Duration.fromObject({hours: 60}).as('days') //=> 2.5\n * @return {number}\n */\n as(unit) {\n return this.isValid ? this.shiftTo(unit).get(unit) : NaN;\n }\n\n /**\n * Reduce this Duration to its canonical representation in its current units.\n * Assuming the overall value of the Duration is positive, this means:\n * - excessive values for lower-order units are converted to higher-order units (if possible, see first and second example)\n * - negative lower-order units are converted to higher order units (there must be such a higher order unit, otherwise\n * the overall value would be negative, see third example)\n * - fractional values for higher-order units are converted to lower-order units (if possible, see fourth example)\n *\n * If the overall value is negative, the result of this method is equivalent to `this.negate().normalize().negate()`.\n * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 }\n * @example Duration.fromObject({ days: 5000 }).normalize().toObject() //=> { days: 5000 }\n * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 }\n * @example Duration.fromObject({ years: 2.5, days: 0, hours: 0 }).normalize().toObject() //=> { years: 2, days: 182, hours: 12 }\n * @return {Duration}\n */\n normalize() {\n if (!this.isValid) return this;\n const vals = this.toObject();\n normalizeValues(this.matrix, vals);\n return clone(this, { values: vals }, true);\n }\n\n /**\n * Rescale units to its largest representation\n * @example Duration.fromObject({ milliseconds: 90000 }).rescale().toObject() //=> { minutes: 1, seconds: 30 }\n * @return {Duration}\n */\n rescale() {\n if (!this.isValid) return this;\n const vals = removeZeroes(this.normalize().shiftToAll().toObject());\n return clone(this, { values: vals }, true);\n }\n\n /**\n * Convert this Duration into its representation in a different set of units.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo('minutes', 'milliseconds').toObject() //=> { minutes: 60, milliseconds: 30000 }\n * @return {Duration}\n */\n shiftTo(...units) {\n if (!this.isValid) return this;\n\n if (units.length === 0) {\n return this;\n }\n\n units = units.map((u) => Duration.normalizeUnit(u));\n\n const built = {},\n accumulated = {},\n vals = this.toObject();\n let lastUnit;\n\n for (const k of orderedUnits) {\n if (units.indexOf(k) >= 0) {\n lastUnit = k;\n\n let own = 0;\n\n // anything we haven't boiled down yet should get boiled to this unit\n for (const ak in accumulated) {\n own += this.matrix[ak][k] * accumulated[ak];\n accumulated[ak] = 0;\n }\n\n // plus anything that's already in this unit\n if (isNumber(vals[k])) {\n own += vals[k];\n }\n\n // only keep the integer part for now in the hopes of putting any decimal part\n // into a smaller unit later\n const i = Math.trunc(own);\n built[k] = i;\n accumulated[k] = (own * 1000 - i * 1000) / 1000;\n\n // otherwise, keep it in the wings to boil it later\n } else if (isNumber(vals[k])) {\n accumulated[k] = vals[k];\n }\n }\n\n // anything leftover becomes the decimal for the last unit\n // lastUnit must be defined since units is not empty\n for (const key in accumulated) {\n if (accumulated[key] !== 0) {\n built[lastUnit] +=\n key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key];\n }\n }\n\n normalizeValues(this.matrix, built);\n return clone(this, { values: built }, true);\n }\n\n /**\n * Shift this Duration to all available units.\n * Same as shiftTo(\"years\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", \"seconds\", \"milliseconds\")\n * @return {Duration}\n */\n shiftToAll() {\n if (!this.isValid) return this;\n return this.shiftTo(\n \"years\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\"\n );\n }\n\n /**\n * Return the negative of this Duration.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 }\n * @return {Duration}\n */\n negate() {\n if (!this.isValid) return this;\n const negated = {};\n for (const k of Object.keys(this.values)) {\n negated[k] = this.values[k] === 0 ? 0 : -this.values[k];\n }\n return clone(this, { values: negated }, true);\n }\n\n /**\n * Get the years.\n * @type {number}\n */\n get years() {\n return this.isValid ? this.values.years || 0 : NaN;\n }\n\n /**\n * Get the quarters.\n * @type {number}\n */\n get quarters() {\n return this.isValid ? this.values.quarters || 0 : NaN;\n }\n\n /**\n * Get the months.\n * @type {number}\n */\n get months() {\n return this.isValid ? this.values.months || 0 : NaN;\n }\n\n /**\n * Get the weeks\n * @type {number}\n */\n get weeks() {\n return this.isValid ? this.values.weeks || 0 : NaN;\n }\n\n /**\n * Get the days.\n * @type {number}\n */\n get days() {\n return this.isValid ? this.values.days || 0 : NaN;\n }\n\n /**\n * Get the hours.\n * @type {number}\n */\n get hours() {\n return this.isValid ? this.values.hours || 0 : NaN;\n }\n\n /**\n * Get the minutes.\n * @type {number}\n */\n get minutes() {\n return this.isValid ? this.values.minutes || 0 : NaN;\n }\n\n /**\n * Get the seconds.\n * @return {number}\n */\n get seconds() {\n return this.isValid ? this.values.seconds || 0 : NaN;\n }\n\n /**\n * Get the milliseconds.\n * @return {number}\n */\n get milliseconds() {\n return this.isValid ? this.values.milliseconds || 0 : NaN;\n }\n\n /**\n * Returns whether the Duration is invalid. Invalid durations are returned by diff operations\n * on invalid DateTimes or Intervals.\n * @return {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this Duration became invalid, or null if the Duration is valid\n * @return {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Duration became invalid, or null if the Duration is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Equality check\n * Two Durations are equal iff they have the same units and the same values for each unit.\n * @param {Duration} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n if (!this.loc.equals(other.loc)) {\n return false;\n }\n\n function eq(v1, v2) {\n // Consider 0 and undefined as equal\n if (v1 === undefined || v1 === 0) return v2 === undefined || v2 === 0;\n return v1 === v2;\n }\n\n for (const u of orderedUnits) {\n if (!eq(this.values[u], other.values[u])) {\n return false;\n }\n }\n return true;\n }\n}\n", "import DateTime, { friendlyDateTime } from \"./datetime.js\";\nimport Duration from \"./duration.js\";\nimport Settings from \"./settings.js\";\nimport { InvalidArgumentError, InvalidIntervalError } from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport * as Formats from \"./impl/formats.js\";\n\nconst INVALID = \"Invalid Interval\";\n\n// checks if the start is equal to or before the end\nfunction validateStartEnd(start, end) {\n if (!start || !start.isValid) {\n return Interval.invalid(\"missing or invalid start\");\n } else if (!end || !end.isValid) {\n return Interval.invalid(\"missing or invalid end\");\n } else if (end < start) {\n return Interval.invalid(\n \"end before start\",\n `The end of an interval must be after its start, but you had start=${start.toISO()} and end=${end.toISO()}`\n );\n } else {\n return null;\n }\n}\n\n/**\n * An Interval object represents a half-open interval of time, where each endpoint is a {@link DateTime}. Conceptually, it's a container for those two endpoints, accompanied by methods for creating, parsing, interrogating, comparing, transforming, and formatting them.\n *\n * Here is a brief overview of the most commonly used methods and getters in Interval:\n *\n * * **Creation** To create an Interval, use {@link Interval.fromDateTimes}, {@link Interval.after}, {@link Interval.before}, or {@link Interval.fromISO}.\n * * **Accessors** Use {@link Interval#start} and {@link Interval#end} to get the start and end.\n * * **Interrogation** To analyze the Interval, use {@link Interval#count}, {@link Interval#length}, {@link Interval#hasSame}, {@link Interval#contains}, {@link Interval#isAfter}, or {@link Interval#isBefore}.\n * * **Transformation** To create other Intervals out of this one, use {@link Interval#set}, {@link Interval#splitAt}, {@link Interval#splitBy}, {@link Interval#divideEqually}, {@link Interval.merge}, {@link Interval.xor}, {@link Interval#union}, {@link Interval#intersection}, or {@link Interval#difference}.\n * * **Comparison** To compare this Interval to another one, use {@link Interval#equals}, {@link Interval#overlaps}, {@link Interval#abutsStart}, {@link Interval#abutsEnd}, {@link Interval#engulfs}\n * * **Output** To convert the Interval into other representations, see {@link Interval#toString}, {@link Interval#toLocaleString}, {@link Interval#toISO}, {@link Interval#toISODate}, {@link Interval#toISOTime}, {@link Interval#toFormat}, and {@link Interval#toDuration}.\n */\nexport default class Interval {\n /**\n * @private\n */\n constructor(config) {\n /**\n * @access private\n */\n this.s = config.start;\n /**\n * @access private\n */\n this.e = config.end;\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.isLuxonInterval = true;\n }\n\n /**\n * Create an invalid Interval.\n * @param {string} reason - simple string of why this Interval is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Interval}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Interval is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidIntervalError(invalid);\n } else {\n return new Interval({ invalid });\n }\n }\n\n /**\n * Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end.\n * @param {DateTime|Date|Object} start\n * @param {DateTime|Date|Object} end\n * @return {Interval}\n */\n static fromDateTimes(start, end) {\n const builtStart = friendlyDateTime(start),\n builtEnd = friendlyDateTime(end);\n\n const validateError = validateStartEnd(builtStart, builtEnd);\n\n if (validateError == null) {\n return new Interval({\n start: builtStart,\n end: builtEnd,\n });\n } else {\n return validateError;\n }\n }\n\n /**\n * Create an Interval from a start DateTime and a Duration to extend to.\n * @param {DateTime|Date|Object} start\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static after(start, duration) {\n const dur = Duration.fromDurationLike(duration),\n dt = friendlyDateTime(start);\n return Interval.fromDateTimes(dt, dt.plus(dur));\n }\n\n /**\n * Create an Interval from an end DateTime and a Duration to extend backwards to.\n * @param {DateTime|Date|Object} end\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static before(end, duration) {\n const dur = Duration.fromDurationLike(duration),\n dt = friendlyDateTime(end);\n return Interval.fromDateTimes(dt.minus(dur), dt);\n }\n\n /**\n * Create an Interval from an ISO 8601 string.\n * Accepts `/`, `/`, and `/` formats.\n * @param {string} text - the ISO string to parse\n * @param {Object} [opts] - options to pass {@link DateTime#fromISO} and optionally {@link Duration#fromISO}\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {Interval}\n */\n static fromISO(text, opts) {\n const [s, e] = (text || \"\").split(\"/\", 2);\n if (s && e) {\n let start, startIsValid;\n try {\n start = DateTime.fromISO(s, opts);\n startIsValid = start.isValid;\n } catch (e) {\n startIsValid = false;\n }\n\n let end, endIsValid;\n try {\n end = DateTime.fromISO(e, opts);\n endIsValid = end.isValid;\n } catch (e) {\n endIsValid = false;\n }\n\n if (startIsValid && endIsValid) {\n return Interval.fromDateTimes(start, end);\n }\n\n if (startIsValid) {\n const dur = Duration.fromISO(e, opts);\n if (dur.isValid) {\n return Interval.after(start, dur);\n }\n } else if (endIsValid) {\n const dur = Duration.fromISO(s, opts);\n if (dur.isValid) {\n return Interval.before(end, dur);\n }\n }\n }\n return Interval.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n\n /**\n * Check if an object is an Interval. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isInterval(o) {\n return (o && o.isLuxonInterval) || false;\n }\n\n /**\n * Returns the start of the Interval\n * @type {DateTime}\n */\n get start() {\n return this.isValid ? this.s : null;\n }\n\n /**\n * Returns the end of the Interval\n * @type {DateTime}\n */\n get end() {\n return this.isValid ? this.e : null;\n }\n\n /**\n * Returns whether this Interval's end is at least its start, meaning that the Interval isn't 'backwards'.\n * @type {boolean}\n */\n get isValid() {\n return this.invalidReason === null;\n }\n\n /**\n * Returns an error code if this Interval is invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Interval became invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Returns the length of the Interval in the specified unit.\n * @param {string} unit - the unit (such as 'hours' or 'days') to return the length in.\n * @return {number}\n */\n length(unit = \"milliseconds\") {\n return this.isValid ? this.toDuration(...[unit]).get(unit) : NaN;\n }\n\n /**\n * Returns the count of minutes, hours, days, months, or years included in the Interval, even in part.\n * Unlike {@link Interval#length} this counts sections of the calendar, not periods of time, e.g. specifying 'day'\n * asks 'what dates are included in this interval?', not 'how many days long is this interval?'\n * @param {string} [unit='milliseconds'] - the unit of time to count.\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week; this operation will always use the locale of the start DateTime\n * @return {number}\n */\n count(unit = \"milliseconds\", opts) {\n if (!this.isValid) return NaN;\n const start = this.start.startOf(unit, opts);\n let end;\n if (opts?.useLocaleWeeks) {\n end = this.end.reconfigure({ locale: start.locale });\n } else {\n end = this.end;\n }\n end = end.startOf(unit, opts);\n return Math.floor(end.diff(start, unit).get(unit)) + (end.valueOf() !== this.end.valueOf());\n }\n\n /**\n * Returns whether this Interval's start and end are both in the same unit of time\n * @param {string} unit - the unit of time to check sameness on\n * @return {boolean}\n */\n hasSame(unit) {\n return this.isValid ? this.isEmpty() || this.e.minus(1).hasSame(this.s, unit) : false;\n }\n\n /**\n * Return whether this Interval has the same start and end DateTimes.\n * @return {boolean}\n */\n isEmpty() {\n return this.s.valueOf() === this.e.valueOf();\n }\n\n /**\n * Return whether this Interval's start is after the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isAfter(dateTime) {\n if (!this.isValid) return false;\n return this.s > dateTime;\n }\n\n /**\n * Return whether this Interval's end is before the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isBefore(dateTime) {\n if (!this.isValid) return false;\n return this.e <= dateTime;\n }\n\n /**\n * Return whether this Interval contains the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n contains(dateTime) {\n if (!this.isValid) return false;\n return this.s <= dateTime && this.e > dateTime;\n }\n\n /**\n * \"Sets\" the start and/or end dates. Returns a newly-constructed Interval.\n * @param {Object} values - the values to set\n * @param {DateTime} values.start - the starting DateTime\n * @param {DateTime} values.end - the ending DateTime\n * @return {Interval}\n */\n set({ start, end } = {}) {\n if (!this.isValid) return this;\n return Interval.fromDateTimes(start || this.s, end || this.e);\n }\n\n /**\n * Split this Interval at each of the specified DateTimes\n * @param {...DateTime} dateTimes - the unit of time to count.\n * @return {Array}\n */\n splitAt(...dateTimes) {\n if (!this.isValid) return [];\n const sorted = dateTimes\n .map(friendlyDateTime)\n .filter((d) => this.contains(d))\n .sort((a, b) => a.toMillis() - b.toMillis()),\n results = [];\n let { s } = this,\n i = 0;\n\n while (s < this.e) {\n const added = sorted[i] || this.e,\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n i += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into smaller Intervals, each of the specified length.\n * Left over time is grouped into a smaller interval\n * @param {Duration|Object|number} duration - The length of each resulting interval.\n * @return {Array}\n */\n splitBy(duration) {\n const dur = Duration.fromDurationLike(duration);\n\n if (!this.isValid || !dur.isValid || dur.as(\"milliseconds\") === 0) {\n return [];\n }\n\n let { s } = this,\n idx = 1,\n next;\n\n const results = [];\n while (s < this.e) {\n const added = this.start.plus(dur.mapUnits((x) => x * idx));\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n idx += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into the specified number of smaller intervals.\n * @param {number} numberOfParts - The number of Intervals to divide the Interval into.\n * @return {Array}\n */\n divideEqually(numberOfParts) {\n if (!this.isValid) return [];\n return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts);\n }\n\n /**\n * Return whether this Interval overlaps with the specified Interval\n * @param {Interval} other\n * @return {boolean}\n */\n overlaps(other) {\n return this.e > other.s && this.s < other.e;\n }\n\n /**\n * Return whether this Interval's end is adjacent to the specified Interval's start.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsStart(other) {\n if (!this.isValid) return false;\n return +this.e === +other.s;\n }\n\n /**\n * Return whether this Interval's start is adjacent to the specified Interval's end.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsEnd(other) {\n if (!this.isValid) return false;\n return +other.e === +this.s;\n }\n\n /**\n * Returns true if this Interval fully contains the specified Interval, specifically if the intersect (of this Interval and the other Interval) is equal to the other Interval; false otherwise.\n * @param {Interval} other\n * @return {boolean}\n */\n engulfs(other) {\n if (!this.isValid) return false;\n return this.s <= other.s && this.e >= other.e;\n }\n\n /**\n * Return whether this Interval has the same start and end as the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n return this.s.equals(other.s) && this.e.equals(other.e);\n }\n\n /**\n * Return an Interval representing the intersection of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals.\n * Returns null if the intersection is empty, meaning, the intervals don't intersect.\n * @param {Interval} other\n * @return {Interval}\n */\n intersection(other) {\n if (!this.isValid) return this;\n const s = this.s > other.s ? this.s : other.s,\n e = this.e < other.e ? this.e : other.e;\n\n if (s >= e) {\n return null;\n } else {\n return Interval.fromDateTimes(s, e);\n }\n }\n\n /**\n * Return an Interval representing the union of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals.\n * @param {Interval} other\n * @return {Interval}\n */\n union(other) {\n if (!this.isValid) return this;\n const s = this.s < other.s ? this.s : other.s,\n e = this.e > other.e ? this.e : other.e;\n return Interval.fromDateTimes(s, e);\n }\n\n /**\n * Merge an array of Intervals into a equivalent minimal set of Intervals.\n * Combines overlapping and adjacent Intervals.\n * @param {Array} intervals\n * @return {Array}\n */\n static merge(intervals) {\n const [found, final] = intervals\n .sort((a, b) => a.s - b.s)\n .reduce(\n ([sofar, current], item) => {\n if (!current) {\n return [sofar, item];\n } else if (current.overlaps(item) || current.abutsStart(item)) {\n return [sofar, current.union(item)];\n } else {\n return [sofar.concat([current]), item];\n }\n },\n [[], null]\n );\n if (final) {\n found.push(final);\n }\n return found;\n }\n\n /**\n * Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals.\n * @param {Array} intervals\n * @return {Array}\n */\n static xor(intervals) {\n let start = null,\n currentCount = 0;\n const results = [],\n ends = intervals.map((i) => [\n { time: i.s, type: \"s\" },\n { time: i.e, type: \"e\" },\n ]),\n flattened = Array.prototype.concat(...ends),\n arr = flattened.sort((a, b) => a.time - b.time);\n\n for (const i of arr) {\n currentCount += i.type === \"s\" ? 1 : -1;\n\n if (currentCount === 1) {\n start = i.time;\n } else {\n if (start && +start !== +i.time) {\n results.push(Interval.fromDateTimes(start, i.time));\n }\n\n start = null;\n }\n }\n\n return Interval.merge(results);\n }\n\n /**\n * Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals.\n * @param {...Interval} intervals\n * @return {Array}\n */\n difference(...intervals) {\n return Interval.xor([this].concat(intervals))\n .map((i) => this.intersection(i))\n .filter((i) => i && !i.isEmpty());\n }\n\n /**\n * Returns a string representation of this Interval appropriate for debugging.\n * @return {string}\n */\n toString() {\n if (!this.isValid) return INVALID;\n return `[${this.s.toISO()} \u2013 ${this.e.toISO()})`;\n }\n\n /**\n * Returns a string representation of this Interval appropriate for the REPL.\n * @return {string}\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n if (this.isValid) {\n return `Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`;\n } else {\n return `Interval { Invalid, reason: ${this.invalidReason} }`;\n }\n }\n\n /**\n * Returns a localized string representing this Interval. Accepts the same options as the\n * Intl.DateTimeFormat constructor and any presets defined by Luxon, such as\n * {@link DateTime.DATE_FULL} or {@link DateTime.TIME_SIMPLE}. The exact behavior of this method\n * is browser-specific, but in general it will return an appropriate representation of the\n * Interval in the assigned locale. Defaults to the system's locale if no locale has been\n * specified.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {Object} [formatOpts=DateTime.DATE_SHORT] - Either a DateTime preset or\n * Intl.DateTimeFormat constructor options.\n * @param {Object} opts - Options to override the configuration of the start DateTime.\n * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(); //=> 11/7/2022 \u2013 11/8/2022\n * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL); //=> November 7 \u2013 8, 2022\n * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL, { locale: 'fr-FR' }); //=> 7\u20138 novembre 2022\n * @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString(DateTime.TIME_SIMPLE); //=> 6:00 \u2013 8:00 PM\n * @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> Mon, Nov 07, 6:00 \u2013 8:00 p\n * @return {string}\n */\n toLocaleString(formatOpts = Formats.DATE_SHORT, opts = {}) {\n return this.isValid\n ? Formatter.create(this.s.loc.clone(opts), formatOpts).formatInterval(this)\n : INVALID;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Interval.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime#toISO}\n * @return {string}\n */\n toISO(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISO(opts)}/${this.e.toISO(opts)}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of date of this Interval.\n * The time components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {string}\n */\n toISODate() {\n if (!this.isValid) return INVALID;\n return `${this.s.toISODate()}/${this.e.toISODate()}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of time of this Interval.\n * The date components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime#toISO}\n * @return {string}\n */\n toISOTime(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISOTime(opts)}/${this.e.toISOTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this Interval formatted according to the specified format\n * string. **You may not want this.** See {@link Interval#toLocaleString} for a more flexible\n * formatting tool.\n * @param {string} dateFormat - The format string. This string formats the start and end time.\n * See {@link DateTime#toFormat} for details.\n * @param {Object} opts - Options.\n * @param {string} [opts.separator = ' \u2013 '] - A separator to place between the start and end\n * representations.\n * @return {string}\n */\n toFormat(dateFormat, { separator = \" \u2013 \" } = {}) {\n if (!this.isValid) return INVALID;\n return `${this.s.toFormat(dateFormat)}${separator}${this.e.toFormat(dateFormat)}`;\n }\n\n /**\n * Return a Duration representing the time spanned by this interval.\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 }\n * @return {Duration}\n */\n toDuration(unit, opts) {\n if (!this.isValid) {\n return Duration.invalid(this.invalidReason);\n }\n return this.e.diff(this.s, unit, opts);\n }\n\n /**\n * Run mapFn on the interval start and end, returning a new Interval from the resulting DateTimes\n * @param {function} mapFn\n * @return {Interval}\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.toUTC())\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.plus({ hours: 2 }))\n */\n mapEndpoints(mapFn) {\n return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e));\n }\n}\n", "import DateTime from \"./datetime.js\";\nimport Settings from \"./settings.js\";\nimport Locale from \"./impl/locale.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\n\nimport { hasLocaleWeekInfo, hasRelative } from \"./impl/util.js\";\n\n/**\n * The Info class contains static methods for retrieving general time and date related data. For example, it has methods for finding out if a time zone has a DST, for listing the months in any supported locale, and for discovering which of Luxon features are available in the current environment.\n */\nexport default class Info {\n /**\n * Return whether the specified zone contains a DST.\n * @param {string|Zone} [zone='local'] - Zone to check. Defaults to the environment's local zone.\n * @return {boolean}\n */\n static hasDST(zone = Settings.defaultZone) {\n const proto = DateTime.now().setZone(zone).set({ month: 12 });\n\n return !zone.isUniversal && proto.offset !== proto.set({ month: 6 }).offset;\n }\n\n /**\n * Return whether the specified zone is a valid IANA specifier.\n * @param {string} zone - Zone to check\n * @return {boolean}\n */\n static isValidIANAZone(zone) {\n return IANAZone.isValidZone(zone);\n }\n\n /**\n * Converts the input into a {@link Zone} instance.\n *\n * * If `input` is already a Zone instance, it is returned unchanged.\n * * If `input` is a string containing a valid time zone name, a Zone instance\n * with that name is returned.\n * * If `input` is a string that doesn't refer to a known time zone, a Zone\n * instance with {@link Zone#isValid} == false is returned.\n * * If `input is a number, a Zone instance with the specified fixed offset\n * in minutes is returned.\n * * If `input` is `null` or `undefined`, the default zone is returned.\n * @param {string|Zone|number} [input] - the value to be converted\n * @return {Zone}\n */\n static normalizeZone(input) {\n return normalizeZone(input, Settings.defaultZone);\n }\n\n /**\n * Get the weekday on which the week starts according to the given locale.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @returns {number} the start of the week, 1 for Monday through 7 for Sunday\n */\n static getStartOfWeek({ locale = null, locObj = null } = {}) {\n return (locObj || Locale.create(locale)).getStartOfWeek();\n }\n\n /**\n * Get the minimum number of days necessary in a week before it is considered part of the next year according\n * to the given locale.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @returns {number}\n */\n static getMinimumDaysInFirstWeek({ locale = null, locObj = null } = {}) {\n return (locObj || Locale.create(locale)).getMinDaysInFirstWeek();\n }\n\n /**\n * Get the weekdays, which are considered the weekend according to the given locale\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @returns {number[]} an array of weekdays, 1 for Monday through 7 for Sunday\n */\n static getWeekendWeekdays({ locale = null, locObj = null } = {}) {\n // copy the array, because we cache it internally\n return (locObj || Locale.create(locale)).getWeekendDays().slice();\n }\n\n /**\n * Return an array of standalone month names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @example Info.months()[0] //=> 'January'\n * @example Info.months('short')[0] //=> 'Jan'\n * @example Info.months('numeric')[0] //=> '1'\n * @example Info.months('short', { locale: 'fr-CA' } )[0] //=> 'janv.'\n * @example Info.months('numeric', { locale: 'ar' })[0] //=> '\u0661'\n * @example Info.months('long', { outputCalendar: 'islamic' })[0] //=> 'Rabi\u02BB I'\n * @return {Array}\n */\n static months(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null, outputCalendar = \"gregory\" } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length);\n }\n\n /**\n * Return an array of format month names.\n * Format months differ from standalone months in that they're meant to appear next to the day of the month. In some languages, that\n * changes the string.\n * See {@link Info#months}\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @return {Array}\n */\n static monthsFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null, outputCalendar = \"gregory\" } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length, true);\n }\n\n /**\n * Return an array of standalone week names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the weekday representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @example Info.weekdays()[0] //=> 'Monday'\n * @example Info.weekdays('short')[0] //=> 'Mon'\n * @example Info.weekdays('short', { locale: 'fr-CA' })[0] //=> 'lun.'\n * @example Info.weekdays('short', { locale: 'ar' })[0] //=> '\u0627\u0644\u0627\u062B\u0646\u064A\u0646'\n * @return {Array}\n */\n static weekdays(length = \"long\", { locale = null, numberingSystem = null, locObj = null } = {}) {\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length);\n }\n\n /**\n * Return an array of format week names.\n * Format weekdays differ from standalone weekdays in that they're meant to appear next to more date information. In some languages, that\n * changes the string.\n * See {@link Info#weekdays}\n * @param {string} [length='long'] - the length of the month representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale=null] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @return {Array}\n */\n static weekdaysFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length, true);\n }\n\n /**\n * Return an array of meridiems.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.meridiems() //=> [ 'AM', 'PM' ]\n * @example Info.meridiems({ locale: 'my' }) //=> [ '\u1014\u1036\u1014\u1000\u103A', '\u100A\u1014\u1031' ]\n * @return {Array}\n */\n static meridiems({ locale = null } = {}) {\n return Locale.create(locale).meridiems();\n }\n\n /**\n * Return an array of eras, such as ['BC', 'AD']. The locale can be specified, but the calendar system is always Gregorian.\n * @param {string} [length='short'] - the length of the era representation, such as \"short\" or \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.eras() //=> [ 'BC', 'AD' ]\n * @example Info.eras('long') //=> [ 'Before Christ', 'Anno Domini' ]\n * @example Info.eras('long', { locale: 'fr' }) //=> [ 'avant J\u00E9sus-Christ', 'apr\u00E8s J\u00E9sus-Christ' ]\n * @return {Array}\n */\n static eras(length = \"short\", { locale = null } = {}) {\n return Locale.create(locale, null, \"gregory\").eras(length);\n }\n\n /**\n * Return the set of available features in this environment.\n * Some features of Luxon are not available in all environments. For example, on older browsers, relative time formatting support is not available. Use this function to figure out if that's the case.\n * Keys:\n * * `relative`: whether this environment supports relative time formatting\n * * `localeWeek`: whether this environment supports different weekdays for the start of the week based on the locale\n * @example Info.features() //=> { relative: false, localeWeek: true }\n * @return {Object}\n */\n static features() {\n return { relative: hasRelative(), localeWeek: hasLocaleWeekInfo() };\n }\n}\n", "import Duration from \"../duration.js\";\n\nfunction dayDiff(earlier, later) {\n const utcDayStart = (dt) => dt.toUTC(0, { keepLocalTime: true }).startOf(\"day\").valueOf(),\n ms = utcDayStart(later) - utcDayStart(earlier);\n return Math.floor(Duration.fromMillis(ms).as(\"days\"));\n}\n\nfunction highOrderDiffs(cursor, later, units) {\n const differs = [\n [\"years\", (a, b) => b.year - a.year],\n [\"quarters\", (a, b) => b.quarter - a.quarter + (b.year - a.year) * 4],\n [\"months\", (a, b) => b.month - a.month + (b.year - a.year) * 12],\n [\n \"weeks\",\n (a, b) => {\n const days = dayDiff(a, b);\n return (days - (days % 7)) / 7;\n },\n ],\n [\"days\", dayDiff],\n ];\n\n const results = {};\n const earlier = cursor;\n let lowestOrder, highWater;\n\n /* This loop tries to diff using larger units first.\n If we overshoot, we backtrack and try the next smaller unit.\n \"cursor\" starts out at the earlier timestamp and moves closer and closer to \"later\"\n as we use smaller and smaller units.\n highWater keeps track of where we would be if we added one more of the smallest unit,\n this is used later to potentially convert any difference smaller than the smallest higher order unit\n into a fraction of that smallest higher order unit\n */\n for (const [unit, differ] of differs) {\n if (units.indexOf(unit) >= 0) {\n lowestOrder = unit;\n\n results[unit] = differ(cursor, later);\n highWater = earlier.plus(results);\n\n if (highWater > later) {\n // we overshot the end point, backtrack cursor by 1\n results[unit]--;\n cursor = earlier.plus(results);\n\n // if we are still overshooting now, we need to backtrack again\n // this happens in certain situations when diffing times in different zones,\n // because this calculation ignores time zones\n if (cursor > later) {\n // keep the \"overshot by 1\" around as highWater\n highWater = cursor;\n // backtrack cursor by 1\n results[unit]--;\n cursor = earlier.plus(results);\n }\n } else {\n cursor = highWater;\n }\n }\n }\n\n return [cursor, results, highWater, lowestOrder];\n}\n\nexport default function (earlier, later, units, opts) {\n let [cursor, results, highWater, lowestOrder] = highOrderDiffs(earlier, later, units);\n\n const remainingMillis = later - cursor;\n\n const lowerOrderUnits = units.filter(\n (u) => [\"hours\", \"minutes\", \"seconds\", \"milliseconds\"].indexOf(u) >= 0\n );\n\n if (lowerOrderUnits.length === 0) {\n if (highWater < later) {\n highWater = cursor.plus({ [lowestOrder]: 1 });\n }\n\n if (highWater !== cursor) {\n results[lowestOrder] = (results[lowestOrder] || 0) + remainingMillis / (highWater - cursor);\n }\n }\n\n const duration = Duration.fromObject(results, opts);\n\n if (lowerOrderUnits.length > 0) {\n return Duration.fromMillis(remainingMillis, opts)\n .shiftTo(...lowerOrderUnits)\n .plus(duration);\n } else {\n return duration;\n }\n}\n", "import { parseMillis, isUndefined, untruncateYear, signedOffset, hasOwnProperty } from \"./util.js\";\nimport Formatter from \"./formatter.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport DateTime from \"../datetime.js\";\nimport { digitRegex, parseDigits } from \"./digits.js\";\nimport { ConflictingSpecificationError } from \"../errors.js\";\n\nconst MISSING_FTP = \"missing Intl.DateTimeFormat.formatToParts support\";\n\nfunction intUnit(regex, post = (i) => i) {\n return { regex, deser: ([s]) => post(parseDigits(s)) };\n}\n\nconst NBSP = String.fromCharCode(160);\nconst spaceOrNBSP = `[ ${NBSP}]`;\nconst spaceOrNBSPRegExp = new RegExp(spaceOrNBSP, \"g\");\n\nfunction fixListRegex(s) {\n // make dots optional and also make them literal\n // make space and non breakable space characters interchangeable\n return s.replace(/\\./g, \"\\\\.?\").replace(spaceOrNBSPRegExp, spaceOrNBSP);\n}\n\nfunction stripInsensitivities(s) {\n return s\n .replace(/\\./g, \"\") // ignore dots that were made optional\n .replace(spaceOrNBSPRegExp, \" \") // interchange space and nbsp\n .toLowerCase();\n}\n\nfunction oneOf(strings, startIndex) {\n if (strings === null) {\n return null;\n } else {\n return {\n regex: RegExp(strings.map(fixListRegex).join(\"|\")),\n deser: ([s]) =>\n strings.findIndex((i) => stripInsensitivities(s) === stripInsensitivities(i)) + startIndex,\n };\n }\n}\n\nfunction offset(regex, groups) {\n return { regex, deser: ([, h, m]) => signedOffset(h, m), groups };\n}\n\nfunction simple(regex) {\n return { regex, deser: ([s]) => s };\n}\n\nfunction escapeToken(value) {\n return value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n}\n\n/**\n * @param token\n * @param {Locale} loc\n */\nfunction unitForToken(token, loc) {\n const one = digitRegex(loc),\n two = digitRegex(loc, \"{2}\"),\n three = digitRegex(loc, \"{3}\"),\n four = digitRegex(loc, \"{4}\"),\n six = digitRegex(loc, \"{6}\"),\n oneOrTwo = digitRegex(loc, \"{1,2}\"),\n oneToThree = digitRegex(loc, \"{1,3}\"),\n oneToSix = digitRegex(loc, \"{1,6}\"),\n oneToNine = digitRegex(loc, \"{1,9}\"),\n twoToFour = digitRegex(loc, \"{2,4}\"),\n fourToSix = digitRegex(loc, \"{4,6}\"),\n literal = (t) => ({ regex: RegExp(escapeToken(t.val)), deser: ([s]) => s, literal: true }),\n unitate = (t) => {\n if (token.literal) {\n return literal(t);\n }\n switch (t.val) {\n // era\n case \"G\":\n return oneOf(loc.eras(\"short\"), 0);\n case \"GG\":\n return oneOf(loc.eras(\"long\"), 0);\n // years\n case \"y\":\n return intUnit(oneToSix);\n case \"yy\":\n return intUnit(twoToFour, untruncateYear);\n case \"yyyy\":\n return intUnit(four);\n case \"yyyyy\":\n return intUnit(fourToSix);\n case \"yyyyyy\":\n return intUnit(six);\n // months\n case \"M\":\n return intUnit(oneOrTwo);\n case \"MM\":\n return intUnit(two);\n case \"MMM\":\n return oneOf(loc.months(\"short\", true), 1);\n case \"MMMM\":\n return oneOf(loc.months(\"long\", true), 1);\n case \"L\":\n return intUnit(oneOrTwo);\n case \"LL\":\n return intUnit(two);\n case \"LLL\":\n return oneOf(loc.months(\"short\", false), 1);\n case \"LLLL\":\n return oneOf(loc.months(\"long\", false), 1);\n // dates\n case \"d\":\n return intUnit(oneOrTwo);\n case \"dd\":\n return intUnit(two);\n // ordinals\n case \"o\":\n return intUnit(oneToThree);\n case \"ooo\":\n return intUnit(three);\n // time\n case \"HH\":\n return intUnit(two);\n case \"H\":\n return intUnit(oneOrTwo);\n case \"hh\":\n return intUnit(two);\n case \"h\":\n return intUnit(oneOrTwo);\n case \"mm\":\n return intUnit(two);\n case \"m\":\n return intUnit(oneOrTwo);\n case \"q\":\n return intUnit(oneOrTwo);\n case \"qq\":\n return intUnit(two);\n case \"s\":\n return intUnit(oneOrTwo);\n case \"ss\":\n return intUnit(two);\n case \"S\":\n return intUnit(oneToThree);\n case \"SSS\":\n return intUnit(three);\n case \"u\":\n return simple(oneToNine);\n case \"uu\":\n return simple(oneOrTwo);\n case \"uuu\":\n return intUnit(one);\n // meridiem\n case \"a\":\n return oneOf(loc.meridiems(), 0);\n // weekYear (k)\n case \"kkkk\":\n return intUnit(four);\n case \"kk\":\n return intUnit(twoToFour, untruncateYear);\n // weekNumber (W)\n case \"W\":\n return intUnit(oneOrTwo);\n case \"WW\":\n return intUnit(two);\n // weekdays\n case \"E\":\n case \"c\":\n return intUnit(one);\n case \"EEE\":\n return oneOf(loc.weekdays(\"short\", false), 1);\n case \"EEEE\":\n return oneOf(loc.weekdays(\"long\", false), 1);\n case \"ccc\":\n return oneOf(loc.weekdays(\"short\", true), 1);\n case \"cccc\":\n return oneOf(loc.weekdays(\"long\", true), 1);\n // offset/zone\n case \"Z\":\n case \"ZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(?::(${two.source}))?`), 2);\n case \"ZZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(${two.source})?`), 2);\n // we don't support ZZZZ (PST) or ZZZZZ (Pacific Standard Time) in parsing\n // because we don't have any way to figure out what they are\n case \"z\":\n return simple(/[a-z_+-/]{1,256}?/i);\n // this special-case \"token\" represents a place where a macro-token expanded into a white-space literal\n // in this case we accept any non-newline white-space\n case \" \":\n return simple(/[^\\S\\n\\r]/);\n default:\n return literal(t);\n }\n };\n\n const unit = unitate(token) || {\n invalidReason: MISSING_FTP,\n };\n\n unit.token = token;\n\n return unit;\n}\n\nconst partTypeStyleToTokenVal = {\n year: {\n \"2-digit\": \"yy\",\n numeric: \"yyyyy\",\n },\n month: {\n numeric: \"M\",\n \"2-digit\": \"MM\",\n short: \"MMM\",\n long: \"MMMM\",\n },\n day: {\n numeric: \"d\",\n \"2-digit\": \"dd\",\n },\n weekday: {\n short: \"EEE\",\n long: \"EEEE\",\n },\n dayperiod: \"a\",\n dayPeriod: \"a\",\n hour12: {\n numeric: \"h\",\n \"2-digit\": \"hh\",\n },\n hour24: {\n numeric: \"H\",\n \"2-digit\": \"HH\",\n },\n minute: {\n numeric: \"m\",\n \"2-digit\": \"mm\",\n },\n second: {\n numeric: \"s\",\n \"2-digit\": \"ss\",\n },\n timeZoneName: {\n long: \"ZZZZZ\",\n short: \"ZZZ\",\n },\n};\n\nfunction tokenForPart(part, formatOpts, resolvedOpts) {\n const { type, value } = part;\n\n if (type === \"literal\") {\n const isSpace = /^\\s+$/.test(value);\n return {\n literal: !isSpace,\n val: isSpace ? \" \" : value,\n };\n }\n\n const style = formatOpts[type];\n\n // The user might have explicitly specified hour12 or hourCycle\n // if so, respect their decision\n // if not, refer back to the resolvedOpts, which are based on the locale\n let actualType = type;\n if (type === \"hour\") {\n if (formatOpts.hour12 != null) {\n actualType = formatOpts.hour12 ? \"hour12\" : \"hour24\";\n } else if (formatOpts.hourCycle != null) {\n if (formatOpts.hourCycle === \"h11\" || formatOpts.hourCycle === \"h12\") {\n actualType = \"hour12\";\n } else {\n actualType = \"hour24\";\n }\n } else {\n // tokens only differentiate between 24 hours or not,\n // so we do not need to check hourCycle here, which is less supported anyways\n actualType = resolvedOpts.hour12 ? \"hour12\" : \"hour24\";\n }\n }\n let val = partTypeStyleToTokenVal[actualType];\n if (typeof val === \"object\") {\n val = val[style];\n }\n\n if (val) {\n return {\n literal: false,\n val,\n };\n }\n\n return undefined;\n}\n\nfunction buildRegex(units) {\n const re = units.map((u) => u.regex).reduce((f, r) => `${f}(${r.source})`, \"\");\n return [`^${re}$`, units];\n}\n\nfunction match(input, regex, handlers) {\n const matches = input.match(regex);\n\n if (matches) {\n const all = {};\n let matchIndex = 1;\n for (const i in handlers) {\n if (hasOwnProperty(handlers, i)) {\n const h = handlers[i],\n groups = h.groups ? h.groups + 1 : 1;\n if (!h.literal && h.token) {\n all[h.token.val[0]] = h.deser(matches.slice(matchIndex, matchIndex + groups));\n }\n matchIndex += groups;\n }\n }\n return [matches, all];\n } else {\n return [matches, {}];\n }\n}\n\nfunction dateTimeFromMatches(matches) {\n const toField = (token) => {\n switch (token) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n case \"H\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"o\":\n return \"ordinal\";\n case \"L\":\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n case \"E\":\n case \"c\":\n return \"weekday\";\n case \"W\":\n return \"weekNumber\";\n case \"k\":\n return \"weekYear\";\n case \"q\":\n return \"quarter\";\n default:\n return null;\n }\n };\n\n let zone = null;\n let specificOffset;\n if (!isUndefined(matches.z)) {\n zone = IANAZone.create(matches.z);\n }\n\n if (!isUndefined(matches.Z)) {\n if (!zone) {\n zone = new FixedOffsetZone(matches.Z);\n }\n specificOffset = matches.Z;\n }\n\n if (!isUndefined(matches.q)) {\n matches.M = (matches.q - 1) * 3 + 1;\n }\n\n if (!isUndefined(matches.h)) {\n if (matches.h < 12 && matches.a === 1) {\n matches.h += 12;\n } else if (matches.h === 12 && matches.a === 0) {\n matches.h = 0;\n }\n }\n\n if (matches.G === 0 && matches.y) {\n matches.y = -matches.y;\n }\n\n if (!isUndefined(matches.u)) {\n matches.S = parseMillis(matches.u);\n }\n\n const vals = Object.keys(matches).reduce((r, k) => {\n const f = toField(k);\n if (f) {\n r[f] = matches[k];\n }\n\n return r;\n }, {});\n\n return [vals, zone, specificOffset];\n}\n\nlet dummyDateTimeCache = null;\n\nfunction getDummyDateTime() {\n if (!dummyDateTimeCache) {\n dummyDateTimeCache = DateTime.fromMillis(1555555555555);\n }\n\n return dummyDateTimeCache;\n}\n\nfunction maybeExpandMacroToken(token, locale) {\n if (token.literal) {\n return token;\n }\n\n const formatOpts = Formatter.macroTokenToFormatOpts(token.val);\n const tokens = formatOptsToTokens(formatOpts, locale);\n\n if (tokens == null || tokens.includes(undefined)) {\n return token;\n }\n\n return tokens;\n}\n\nexport function expandMacroTokens(tokens, locale) {\n return Array.prototype.concat(...tokens.map((t) => maybeExpandMacroToken(t, locale)));\n}\n\n/**\n * @private\n */\n\nexport class TokenParser {\n constructor(locale, format) {\n this.locale = locale;\n this.format = format;\n this.tokens = expandMacroTokens(Formatter.parseFormat(format), locale);\n this.units = this.tokens.map((t) => unitForToken(t, locale));\n this.disqualifyingUnit = this.units.find((t) => t.invalidReason);\n\n if (!this.disqualifyingUnit) {\n const [regexString, handlers] = buildRegex(this.units);\n this.regex = RegExp(regexString, \"i\");\n this.handlers = handlers;\n }\n }\n\n explainFromTokens(input) {\n if (!this.isValid) {\n return { input, tokens: this.tokens, invalidReason: this.invalidReason };\n } else {\n const [rawMatches, matches] = match(input, this.regex, this.handlers),\n [result, zone, specificOffset] = matches\n ? dateTimeFromMatches(matches)\n : [null, null, undefined];\n if (hasOwnProperty(matches, \"a\") && hasOwnProperty(matches, \"H\")) {\n throw new ConflictingSpecificationError(\n \"Can't include meridiem when specifying 24-hour format\"\n );\n }\n return {\n input,\n tokens: this.tokens,\n regex: this.regex,\n rawMatches,\n matches,\n result,\n zone,\n specificOffset,\n };\n }\n }\n\n get isValid() {\n return !this.disqualifyingUnit;\n }\n\n get invalidReason() {\n return this.disqualifyingUnit ? this.disqualifyingUnit.invalidReason : null;\n }\n}\n\nexport function explainFromTokens(locale, input, format) {\n const parser = new TokenParser(locale, format);\n return parser.explainFromTokens(input);\n}\n\nexport function parseFromTokens(locale, input, format) {\n const { result, zone, specificOffset, invalidReason } = explainFromTokens(locale, input, format);\n return [result, zone, specificOffset, invalidReason];\n}\n\nexport function formatOptsToTokens(formatOpts, locale) {\n if (!formatOpts) {\n return null;\n }\n\n const formatter = Formatter.create(locale, formatOpts);\n const df = formatter.dtFormatter(getDummyDateTime());\n const parts = df.formatToParts();\n const resolvedOpts = df.resolvedOptions();\n return parts.map((p) => tokenForPart(p, formatOpts, resolvedOpts));\n}\n", "import Duration from \"./duration.js\";\nimport Interval from \"./interval.js\";\nimport Settings from \"./settings.js\";\nimport Info from \"./info.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport FixedOffsetZone from \"./zones/fixedOffsetZone.js\";\nimport Locale from \"./impl/locale.js\";\nimport {\n isUndefined,\n maybeArray,\n isDate,\n isNumber,\n bestBy,\n daysInMonth,\n daysInYear,\n isLeapYear,\n weeksInWeekYear,\n normalizeObject,\n roundTo,\n objToLocalTS,\n padStart,\n} from \"./impl/util.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\nimport diff from \"./impl/diff.js\";\nimport { parseRFC2822Date, parseISODate, parseHTTPDate, parseSQL } from \"./impl/regexParser.js\";\nimport {\n parseFromTokens,\n explainFromTokens,\n formatOptsToTokens,\n expandMacroTokens,\n TokenParser,\n} from \"./impl/tokenParser.js\";\nimport {\n gregorianToWeek,\n weekToGregorian,\n gregorianToOrdinal,\n ordinalToGregorian,\n hasInvalidGregorianData,\n hasInvalidWeekData,\n hasInvalidOrdinalData,\n hasInvalidTimeData,\n usesLocalWeekValues,\n isoWeekdayToLocal,\n} from \"./impl/conversions.js\";\nimport * as Formats from \"./impl/formats.js\";\nimport {\n InvalidArgumentError,\n ConflictingSpecificationError,\n InvalidUnitError,\n InvalidDateTimeError,\n} from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\n\nconst INVALID = \"Invalid DateTime\";\nconst MAX_DATE = 8.64e15;\n\nfunction unsupportedZone(zone) {\n return new Invalid(\"unsupported zone\", `the zone \"${zone.name}\" is not supported`);\n}\n\n// we cache week data on the DT object and this intermediates the cache\n/**\n * @param {DateTime} dt\n */\nfunction possiblyCachedWeekData(dt) {\n if (dt.weekData === null) {\n dt.weekData = gregorianToWeek(dt.c);\n }\n return dt.weekData;\n}\n\n/**\n * @param {DateTime} dt\n */\nfunction possiblyCachedLocalWeekData(dt) {\n if (dt.localWeekData === null) {\n dt.localWeekData = gregorianToWeek(\n dt.c,\n dt.loc.getMinDaysInFirstWeek(),\n dt.loc.getStartOfWeek()\n );\n }\n return dt.localWeekData;\n}\n\n// clone really means, \"make a new object with these modifications\". all \"setters\" really use this\n// to create a new object while only changing some of the properties\nfunction clone(inst, alts) {\n const current = {\n ts: inst.ts,\n zone: inst.zone,\n c: inst.c,\n o: inst.o,\n loc: inst.loc,\n invalid: inst.invalid,\n };\n return new DateTime({ ...current, ...alts, old: current });\n}\n\n// find the right offset a given local time. The o input is our guess, which determines which\n// offset we'll pick in ambiguous cases (e.g. there are two 3 AMs b/c Fallback DST)\nfunction fixOffset(localTS, o, tz) {\n // Our UTC time is just a guess because our offset is just a guess\n let utcGuess = localTS - o * 60 * 1000;\n\n // Test whether the zone matches the offset for this ts\n const o2 = tz.offset(utcGuess);\n\n // If so, offset didn't change and we're done\n if (o === o2) {\n return [utcGuess, o];\n }\n\n // If not, change the ts by the difference in the offset\n utcGuess -= (o2 - o) * 60 * 1000;\n\n // If that gives us the local time we want, we're done\n const o3 = tz.offset(utcGuess);\n if (o2 === o3) {\n return [utcGuess, o2];\n }\n\n // If it's different, we're in a hole time. The offset has changed, but the we don't adjust the time\n return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)];\n}\n\n// convert an epoch timestamp into a calendar object with the given offset\nfunction tsToObj(ts, offset) {\n ts += offset * 60 * 1000;\n\n const d = new Date(ts);\n\n return {\n year: d.getUTCFullYear(),\n month: d.getUTCMonth() + 1,\n day: d.getUTCDate(),\n hour: d.getUTCHours(),\n minute: d.getUTCMinutes(),\n second: d.getUTCSeconds(),\n millisecond: d.getUTCMilliseconds(),\n };\n}\n\n// convert a calendar object to a epoch timestamp\nfunction objToTS(obj, offset, zone) {\n return fixOffset(objToLocalTS(obj), offset, zone);\n}\n\n// create a new DT instance by adding a duration, adjusting for DSTs\nfunction adjustTime(inst, dur) {\n const oPre = inst.o,\n year = inst.c.year + Math.trunc(dur.years),\n month = inst.c.month + Math.trunc(dur.months) + Math.trunc(dur.quarters) * 3,\n c = {\n ...inst.c,\n year,\n month,\n day:\n Math.min(inst.c.day, daysInMonth(year, month)) +\n Math.trunc(dur.days) +\n Math.trunc(dur.weeks) * 7,\n },\n millisToAdd = Duration.fromObject({\n years: dur.years - Math.trunc(dur.years),\n quarters: dur.quarters - Math.trunc(dur.quarters),\n months: dur.months - Math.trunc(dur.months),\n weeks: dur.weeks - Math.trunc(dur.weeks),\n days: dur.days - Math.trunc(dur.days),\n hours: dur.hours,\n minutes: dur.minutes,\n seconds: dur.seconds,\n milliseconds: dur.milliseconds,\n }).as(\"milliseconds\"),\n localTS = objToLocalTS(c);\n\n let [ts, o] = fixOffset(localTS, oPre, inst.zone);\n\n if (millisToAdd !== 0) {\n ts += millisToAdd;\n // that could have changed the offset by going over a DST, but we want to keep the ts the same\n o = inst.zone.offset(ts);\n }\n\n return { ts, o };\n}\n\n// helper useful in turning the results of parsing into real dates\n// by handling the zone options\nfunction parseDataToDateTime(parsed, parsedZone, opts, format, text, specificOffset) {\n const { setZone, zone } = opts;\n if ((parsed && Object.keys(parsed).length !== 0) || parsedZone) {\n const interpretationZone = parsedZone || zone,\n inst = DateTime.fromObject(parsed, {\n ...opts,\n zone: interpretationZone,\n specificOffset,\n });\n return setZone ? inst : inst.setZone(zone);\n } else {\n return DateTime.invalid(\n new Invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ${format}`)\n );\n }\n}\n\n// if you want to output a technical format (e.g. RFC 2822), this helper\n// helps handle the details\nfunction toTechFormat(dt, format, allowZ = true) {\n return dt.isValid\n ? Formatter.create(Locale.create(\"en-US\"), {\n allowZ,\n forceSimple: true,\n }).formatDateTimeFromString(dt, format)\n : null;\n}\n\nfunction toISODate(o, extended) {\n const longFormat = o.c.year > 9999 || o.c.year < 0;\n let c = \"\";\n if (longFormat && o.c.year >= 0) c += \"+\";\n c += padStart(o.c.year, longFormat ? 6 : 4);\n\n if (extended) {\n c += \"-\";\n c += padStart(o.c.month);\n c += \"-\";\n c += padStart(o.c.day);\n } else {\n c += padStart(o.c.month);\n c += padStart(o.c.day);\n }\n return c;\n}\n\nfunction toISOTime(\n o,\n extended,\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n extendedZone\n) {\n let c = padStart(o.c.hour);\n if (extended) {\n c += \":\";\n c += padStart(o.c.minute);\n if (o.c.millisecond !== 0 || o.c.second !== 0 || !suppressSeconds) {\n c += \":\";\n }\n } else {\n c += padStart(o.c.minute);\n }\n\n if (o.c.millisecond !== 0 || o.c.second !== 0 || !suppressSeconds) {\n c += padStart(o.c.second);\n\n if (o.c.millisecond !== 0 || !suppressMilliseconds) {\n c += \".\";\n c += padStart(o.c.millisecond, 3);\n }\n }\n\n if (includeOffset) {\n if (o.isOffsetFixed && o.offset === 0 && !extendedZone) {\n c += \"Z\";\n } else if (o.o < 0) {\n c += \"-\";\n c += padStart(Math.trunc(-o.o / 60));\n c += \":\";\n c += padStart(Math.trunc(-o.o % 60));\n } else {\n c += \"+\";\n c += padStart(Math.trunc(o.o / 60));\n c += \":\";\n c += padStart(Math.trunc(o.o % 60));\n }\n }\n\n if (extendedZone) {\n c += \"[\" + o.zone.ianaName + \"]\";\n }\n return c;\n}\n\n// defaults for unspecified units in the supported calendars\nconst defaultUnitValues = {\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n defaultWeekUnitValues = {\n weekNumber: 1,\n weekday: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n defaultOrdinalUnitValues = {\n ordinal: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n };\n\n// Units in the supported calendars, sorted by bigness\nconst orderedUnits = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\", \"millisecond\"],\n orderedWeekUnits = [\n \"weekYear\",\n \"weekNumber\",\n \"weekday\",\n \"hour\",\n \"minute\",\n \"second\",\n \"millisecond\",\n ],\n orderedOrdinalUnits = [\"year\", \"ordinal\", \"hour\", \"minute\", \"second\", \"millisecond\"];\n\n// standardize case and plurality in units\nfunction normalizeUnit(unit) {\n const normalized = {\n year: \"year\",\n years: \"year\",\n month: \"month\",\n months: \"month\",\n day: \"day\",\n days: \"day\",\n hour: \"hour\",\n hours: \"hour\",\n minute: \"minute\",\n minutes: \"minute\",\n quarter: \"quarter\",\n quarters: \"quarter\",\n second: \"second\",\n seconds: \"second\",\n millisecond: \"millisecond\",\n milliseconds: \"millisecond\",\n weekday: \"weekday\",\n weekdays: \"weekday\",\n weeknumber: \"weekNumber\",\n weeksnumber: \"weekNumber\",\n weeknumbers: \"weekNumber\",\n weekyear: \"weekYear\",\n weekyears: \"weekYear\",\n ordinal: \"ordinal\",\n }[unit.toLowerCase()];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n}\n\nfunction normalizeUnitWithLocalWeeks(unit) {\n switch (unit.toLowerCase()) {\n case \"localweekday\":\n case \"localweekdays\":\n return \"localWeekday\";\n case \"localweeknumber\":\n case \"localweeknumbers\":\n return \"localWeekNumber\";\n case \"localweekyear\":\n case \"localweekyears\":\n return \"localWeekYear\";\n default:\n return normalizeUnit(unit);\n }\n}\n\n// cache offsets for zones based on the current timestamp when this function is\n// first called. When we are handling a datetime from components like (year,\n// month, day, hour) in a time zone, we need a guess about what the timezone\n// offset is so that we can convert into a UTC timestamp. One way is to find the\n// offset of now in the zone. The actual date may have a different offset (for\n// example, if we handle a date in June while we're in December in a zone that\n// observes DST), but we can check and adjust that.\n//\n// When handling many dates, calculating the offset for now every time is\n// expensive. It's just a guess, so we can cache the offset to use even if we\n// are right on a time change boundary (we'll just correct in the other\n// direction). Using a timestamp from first read is a slight optimization for\n// handling dates close to the current date, since those dates will usually be\n// in the same offset (we could set the timestamp statically, instead). We use a\n// single timestamp for all zones to make things a bit more predictable.\n//\n// This is safe for quickDT (used by local() and utc()) because we don't fill in\n// higher-order units from tsNow (as we do in fromObject, this requires that\n// offset is calculated from tsNow).\nfunction guessOffsetForZone(zone) {\n if (!zoneOffsetGuessCache[zone]) {\n if (zoneOffsetTs === undefined) {\n zoneOffsetTs = Settings.now();\n }\n\n zoneOffsetGuessCache[zone] = zone.offset(zoneOffsetTs);\n }\n return zoneOffsetGuessCache[zone];\n}\n\n// this is a dumbed down version of fromObject() that runs about 60% faster\n// but doesn't do any validation, makes a bunch of assumptions about what units\n// are present, and so on.\nfunction quickDT(obj, opts) {\n const zone = normalizeZone(opts.zone, Settings.defaultZone);\n if (!zone.isValid) {\n return DateTime.invalid(unsupportedZone(zone));\n }\n\n const loc = Locale.fromObject(opts);\n\n let ts, o;\n\n // assume we have the higher-order units\n if (!isUndefined(obj.year)) {\n for (const u of orderedUnits) {\n if (isUndefined(obj[u])) {\n obj[u] = defaultUnitValues[u];\n }\n }\n\n const invalid = hasInvalidGregorianData(obj) || hasInvalidTimeData(obj);\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n const offsetProvis = guessOffsetForZone(zone);\n [ts, o] = objToTS(obj, offsetProvis, zone);\n } else {\n ts = Settings.now();\n }\n\n return new DateTime({ ts, zone, loc, o });\n}\n\nfunction diffRelative(start, end, opts) {\n const round = isUndefined(opts.round) ? true : opts.round,\n format = (c, unit) => {\n c = roundTo(c, round || opts.calendary ? 0 : 2, true);\n const formatter = end.loc.clone(opts).relFormatter(opts);\n return formatter.format(c, unit);\n },\n differ = (unit) => {\n if (opts.calendary) {\n if (!end.hasSame(start, unit)) {\n return end.startOf(unit).diff(start.startOf(unit), unit).get(unit);\n } else return 0;\n } else {\n return end.diff(start, unit).get(unit);\n }\n };\n\n if (opts.unit) {\n return format(differ(opts.unit), opts.unit);\n }\n\n for (const unit of opts.units) {\n const count = differ(unit);\n if (Math.abs(count) >= 1) {\n return format(count, unit);\n }\n }\n return format(start > end ? -0 : 0, opts.units[opts.units.length - 1]);\n}\n\nfunction lastOpts(argList) {\n let opts = {},\n args;\n if (argList.length > 0 && typeof argList[argList.length - 1] === \"object\") {\n opts = argList[argList.length - 1];\n args = Array.from(argList).slice(0, argList.length - 1);\n } else {\n args = Array.from(argList);\n }\n return [opts, args];\n}\n\n/**\n * Timestamp to use for cached zone offset guesses (exposed for test)\n */\nlet zoneOffsetTs;\n/**\n * Cache for zone offset guesses (exposed for test).\n *\n * This optimizes quickDT via guessOffsetForZone to avoid repeated calls of\n * zone.offset().\n */\nlet zoneOffsetGuessCache = {};\n\n/**\n * A DateTime is an immutable data structure representing a specific date and time and accompanying methods. It contains class and instance methods for creating, parsing, interrogating, transforming, and formatting them.\n *\n * A DateTime comprises of:\n * * A timestamp. Each DateTime instance refers to a specific millisecond of the Unix epoch.\n * * A time zone. Each instance is considered in the context of a specific zone (by default the local system's zone).\n * * Configuration properties that effect how output strings are formatted, such as `locale`, `numberingSystem`, and `outputCalendar`.\n *\n * Here is a brief overview of the most commonly used functionality it provides:\n *\n * * **Creation**: To create a DateTime from its components, use one of its factory class methods: {@link DateTime.local}, {@link DateTime.utc}, and (most flexibly) {@link DateTime.fromObject}. To create one from a standard string format, use {@link DateTime.fromISO}, {@link DateTime.fromHTTP}, and {@link DateTime.fromRFC2822}. To create one from a custom string format, use {@link DateTime.fromFormat}. To create one from a native JS date, use {@link DateTime.fromJSDate}.\n * * **Gregorian calendar and time**: To examine the Gregorian properties of a DateTime individually (i.e as opposed to collectively through {@link DateTime#toObject}), use the {@link DateTime#year}, {@link DateTime#month},\n * {@link DateTime#day}, {@link DateTime#hour}, {@link DateTime#minute}, {@link DateTime#second}, {@link DateTime#millisecond} accessors.\n * * **Week calendar**: For ISO week calendar attributes, see the {@link DateTime#weekYear}, {@link DateTime#weekNumber}, and {@link DateTime#weekday} accessors.\n * * **Configuration** See the {@link DateTime#locale} and {@link DateTime#numberingSystem} accessors.\n * * **Transformation**: To transform the DateTime into other DateTimes, use {@link DateTime#set}, {@link DateTime#reconfigure}, {@link DateTime#setZone}, {@link DateTime#setLocale}, {@link DateTime.plus}, {@link DateTime#minus}, {@link DateTime#endOf}, {@link DateTime#startOf}, {@link DateTime#toUTC}, and {@link DateTime#toLocal}.\n * * **Output**: To convert the DateTime to other representations, use the {@link DateTime#toRelative}, {@link DateTime#toRelativeCalendar}, {@link DateTime#toJSON}, {@link DateTime#toISO}, {@link DateTime#toHTTP}, {@link DateTime#toObject}, {@link DateTime#toRFC2822}, {@link DateTime#toString}, {@link DateTime#toLocaleString}, {@link DateTime#toFormat}, {@link DateTime#toMillis} and {@link DateTime#toJSDate}.\n *\n * There's plenty others documented below. In addition, for more information on subtler topics like internationalization, time zones, alternative calendars, validity, and so on, see the external documentation.\n */\nexport default class DateTime {\n /**\n * @access private\n */\n constructor(config) {\n const zone = config.zone || Settings.defaultZone;\n\n let invalid =\n config.invalid ||\n (Number.isNaN(config.ts) ? new Invalid(\"invalid input\") : null) ||\n (!zone.isValid ? unsupportedZone(zone) : null);\n /**\n * @access private\n */\n this.ts = isUndefined(config.ts) ? Settings.now() : config.ts;\n\n let c = null,\n o = null;\n if (!invalid) {\n const unchanged = config.old && config.old.ts === this.ts && config.old.zone.equals(zone);\n\n if (unchanged) {\n [c, o] = [config.old.c, config.old.o];\n } else {\n // If an offset has been passed and we have not been called from\n // clone(), we can trust it and avoid the offset calculation.\n const ot = isNumber(config.o) && !config.old ? config.o : zone.offset(this.ts);\n c = tsToObj(this.ts, ot);\n invalid = Number.isNaN(c.year) ? new Invalid(\"invalid input\") : null;\n c = invalid ? null : c;\n o = invalid ? null : ot;\n }\n }\n\n /**\n * @access private\n */\n this._zone = zone;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.invalid = invalid;\n /**\n * @access private\n */\n this.weekData = null;\n /**\n * @access private\n */\n this.localWeekData = null;\n /**\n * @access private\n */\n this.c = c;\n /**\n * @access private\n */\n this.o = o;\n /**\n * @access private\n */\n this.isLuxonDateTime = true;\n }\n\n // CONSTRUCT\n\n /**\n * Create a DateTime for the current instant, in the system's time zone.\n *\n * Use Settings to override these default values if needed.\n * @example DateTime.now().toISO() //~> now in the ISO format\n * @return {DateTime}\n */\n static now() {\n return new DateTime({});\n }\n\n /**\n * Create a local DateTime\n * @param {number} [year] - The calendar year. If omitted (as in, call `local()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month, 1-indexed\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @example DateTime.local() //~> now\n * @example DateTime.local({ zone: \"America/New_York\" }) //~> now, in US east coast time\n * @example DateTime.local(2017) //~> 2017-01-01T00:00:00\n * @example DateTime.local(2017, 3) //~> 2017-03-01T00:00:00\n * @example DateTime.local(2017, 3, 12, { locale: \"fr\" }) //~> 2017-03-12T00:00:00, with a French locale\n * @example DateTime.local(2017, 3, 12, 5) //~> 2017-03-12T05:00:00\n * @example DateTime.local(2017, 3, 12, 5, { zone: \"utc\" }) //~> 2017-03-12T05:00:00, in UTC\n * @example DateTime.local(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00\n * @example DateTime.local(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10\n * @example DateTime.local(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765\n * @return {DateTime}\n */\n static local() {\n const [opts, args] = lastOpts(arguments),\n [year, month, day, hour, minute, second, millisecond] = args;\n return quickDT({ year, month, day, hour, minute, second, millisecond }, opts);\n }\n\n /**\n * Create a DateTime in UTC\n * @param {number} [year] - The calendar year. If omitted (as in, call `utc()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @param {Object} options - configuration options for the DateTime\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} [options.outputCalendar] - the output calendar to set on the resulting DateTime instance\n * @param {string} [options.numberingSystem] - the numbering system to set on the resulting DateTime instance\n * @param {string} [options.weekSettings] - the week settings to set on the resulting DateTime instance\n * @example DateTime.utc() //~> now\n * @example DateTime.utc(2017) //~> 2017-01-01T00:00:00Z\n * @example DateTime.utc(2017, 3) //~> 2017-03-01T00:00:00Z\n * @example DateTime.utc(2017, 3, 12) //~> 2017-03-12T00:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5) //~> 2017-03-12T05:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, { locale: \"fr\" }) //~> 2017-03-12T05:45:00Z with a French locale\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10, 765, { locale: \"fr\" }) //~> 2017-03-12T05:45:10.765Z with a French locale\n * @return {DateTime}\n */\n static utc() {\n const [opts, args] = lastOpts(arguments),\n [year, month, day, hour, minute, second, millisecond] = args;\n\n opts.zone = FixedOffsetZone.utcInstance;\n return quickDT({ year, month, day, hour, minute, second, millisecond }, opts);\n }\n\n /**\n * Create a DateTime from a JavaScript Date object. Uses the default zone.\n * @param {Date} date - a JavaScript Date object\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @return {DateTime}\n */\n static fromJSDate(date, options = {}) {\n const ts = isDate(date) ? date.valueOf() : NaN;\n if (Number.isNaN(ts)) {\n return DateTime.invalid(\"invalid input\");\n }\n\n const zoneToUse = normalizeZone(options.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n return new DateTime({\n ts: ts,\n zone: zoneToUse,\n loc: Locale.fromObject(options),\n });\n }\n\n /**\n * Create a DateTime from a number of milliseconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} milliseconds - a number of milliseconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @param {string} options.weekSettings - the week settings to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromMillis(milliseconds, options = {}) {\n if (!isNumber(milliseconds)) {\n throw new InvalidArgumentError(\n `fromMillis requires a numerical input, but received a ${typeof milliseconds} with value ${milliseconds}`\n );\n } else if (milliseconds < -MAX_DATE || milliseconds > MAX_DATE) {\n // this isn't perfect because we can still end up out of range because of additional shifting, but it's a start\n return DateTime.invalid(\"Timestamp out of range\");\n } else {\n return new DateTime({\n ts: milliseconds,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options),\n });\n }\n }\n\n /**\n * Create a DateTime from a number of seconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} seconds - a number of seconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @param {string} options.weekSettings - the week settings to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromSeconds(seconds, options = {}) {\n if (!isNumber(seconds)) {\n throw new InvalidArgumentError(\"fromSeconds requires a numerical input\");\n } else {\n return new DateTime({\n ts: seconds * 1000,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options),\n });\n }\n }\n\n /**\n * Create a DateTime from a JavaScript object with keys like 'year' and 'hour' with reasonable defaults.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.year - a year, such as 1987\n * @param {number} obj.month - a month, 1-12\n * @param {number} obj.day - a day of the month, 1-31, depending on the month\n * @param {number} obj.ordinal - day of the year, 1-365 or 366\n * @param {number} obj.weekYear - an ISO week year\n * @param {number} obj.weekNumber - an ISO week number, between 1 and 52 or 53, depending on the year\n * @param {number} obj.weekday - an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday\n * @param {number} obj.localWeekYear - a week year, according to the locale\n * @param {number} obj.localWeekNumber - a week number, between 1 and 52 or 53, depending on the year, according to the locale\n * @param {number} obj.localWeekday - a weekday, 1-7, where 1 is the first and 7 is the last day of the week, according to the locale\n * @param {number} obj.hour - hour of the day, 0-23\n * @param {number} obj.minute - minute of the hour, 0-59\n * @param {number} obj.second - second of the minute, 0-59\n * @param {number} obj.millisecond - millisecond of the second, 0-999\n * @param {Object} opts - options for creating this DateTime\n * @param {string|Zone} [opts.zone='local'] - interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone()\n * @param {string} [opts.locale='system\\'s locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n * @example DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25'\n * @example DateTime.fromObject({ year: 1982 }).toISODate() //=> '1982-01-01'\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }) //~> today at 10:26:06\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'utc' }),\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'local' })\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'America/New_York' })\n * @example DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13'\n * @example DateTime.fromObject({ localWeekYear: 2022, localWeekNumber: 1, localWeekday: 1 }, { locale: \"en-US\" }).toISODate() //=> '2021-12-26'\n * @return {DateTime}\n */\n static fromObject(obj, opts = {}) {\n obj = obj || {};\n const zoneToUse = normalizeZone(opts.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n const loc = Locale.fromObject(opts);\n const normalized = normalizeObject(obj, normalizeUnitWithLocalWeeks);\n const { minDaysInFirstWeek, startOfWeek } = usesLocalWeekValues(normalized, loc);\n\n const tsNow = Settings.now(),\n offsetProvis = !isUndefined(opts.specificOffset)\n ? opts.specificOffset\n : zoneToUse.offset(tsNow),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber;\n\n // cases:\n // just a weekday -> this week's instance of that weekday, no worries\n // (gregorian data or ordinal) + (weekYear or weekNumber) -> error\n // (gregorian month or day) + ordinal -> error\n // otherwise just use weeks or ordinals or gregorian, depending on what's specified\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n const useWeekData = definiteWeekDef || (normalized.weekday && !containsGregor);\n\n // configure ourselves to deal with gregorian dates or week stuff\n let units,\n defaultValues,\n objNow = tsToObj(tsNow, offsetProvis);\n if (useWeekData) {\n units = orderedWeekUnits;\n defaultValues = defaultWeekUnitValues;\n objNow = gregorianToWeek(objNow, minDaysInFirstWeek, startOfWeek);\n } else if (containsOrdinal) {\n units = orderedOrdinalUnits;\n defaultValues = defaultOrdinalUnitValues;\n objNow = gregorianToOrdinal(objNow);\n } else {\n units = orderedUnits;\n defaultValues = defaultUnitValues;\n }\n\n // set default values for missing stuff\n let foundFirst = false;\n for (const u of units) {\n const v = normalized[u];\n if (!isUndefined(v)) {\n foundFirst = true;\n } else if (foundFirst) {\n normalized[u] = defaultValues[u];\n } else {\n normalized[u] = objNow[u];\n }\n }\n\n // make sure the values we have are in range\n const higherOrderInvalid = useWeekData\n ? hasInvalidWeekData(normalized, minDaysInFirstWeek, startOfWeek)\n : containsOrdinal\n ? hasInvalidOrdinalData(normalized)\n : hasInvalidGregorianData(normalized),\n invalid = higherOrderInvalid || hasInvalidTimeData(normalized);\n\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n // compute the actual time\n const gregorian = useWeekData\n ? weekToGregorian(normalized, minDaysInFirstWeek, startOfWeek)\n : containsOrdinal\n ? ordinalToGregorian(normalized)\n : normalized,\n [tsFinal, offsetFinal] = objToTS(gregorian, offsetProvis, zoneToUse),\n inst = new DateTime({\n ts: tsFinal,\n zone: zoneToUse,\n o: offsetFinal,\n loc,\n });\n\n // gregorian data + weekday serves only to validate\n if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) {\n return DateTime.invalid(\n \"mismatched weekday\",\n `you can't specify both a weekday of ${normalized.weekday} and a date of ${inst.toISO()}`\n );\n }\n\n if (!inst.isValid) {\n return DateTime.invalid(inst.invalid);\n }\n\n return inst;\n }\n\n /**\n * Create a DateTime from an ISO 8601 string\n * @param {string} text - the ISO string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the time to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} [opts.outputCalendar] - the output calendar to set on the resulting DateTime instance\n * @param {string} [opts.numberingSystem] - the numbering system to set on the resulting DateTime instance\n * @param {string} [opts.weekSettings] - the week settings to set on the resulting DateTime instance\n * @example DateTime.fromISO('2016-05-25T09:08:34.123')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true})\n * @example DateTime.fromISO('2016-05-25T09:08:34.123', {zone: 'utc'})\n * @example DateTime.fromISO('2016-W05-4')\n * @return {DateTime}\n */\n static fromISO(text, opts = {}) {\n const [vals, parsedZone] = parseISODate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"ISO 8601\", text);\n }\n\n /**\n * Create a DateTime from an RFC 2822 string\n * @param {string} text - the RFC 2822 string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since the offset is always specified in the string itself, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23:12 GMT')\n * @example DateTime.fromRFC2822('Fri, 25 Nov 2016 13:23:12 +0600')\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23 Z')\n * @return {DateTime}\n */\n static fromRFC2822(text, opts = {}) {\n const [vals, parsedZone] = parseRFC2822Date(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"RFC 2822\", text);\n }\n\n /**\n * Create a DateTime from an HTTP header date\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @param {string} text - the HTTP header date\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since HTTP dates are always in UTC, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with the fixed-offset zone specified in the string. For HTTP dates, this is always UTC, so this option is equivalent to setting the `zone` option to 'utc', but this option is included for consistency with similar methods.\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n * @example DateTime.fromHTTP('Sun, 06 Nov 1994 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sunday, 06-Nov-94 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sun Nov 6 08:49:37 1994')\n * @return {DateTime}\n */\n static fromHTTP(text, opts = {}) {\n const [vals, parsedZone] = parseHTTPDate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"HTTP\", opts);\n }\n\n /**\n * Create a DateTime from an input string and format string.\n * Defaults to en-US if no locale has been specified, regardless of the system's locale. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/parsing?id=table-of-tokens).\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see the link below for the formats)\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromFormat(text, fmt, opts = {}) {\n if (isUndefined(text) || isUndefined(fmt)) {\n throw new InvalidArgumentError(\"fromFormat requires an input string and a format\");\n }\n\n const { locale = null, numberingSystem = null } = opts,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n }),\n [vals, parsedZone, specificOffset, invalid] = parseFromTokens(localeToUse, text, fmt);\n if (invalid) {\n return DateTime.invalid(invalid);\n } else {\n return parseDataToDateTime(vals, parsedZone, opts, `format ${fmt}`, text, specificOffset);\n }\n }\n\n /**\n * @deprecated use fromFormat instead\n */\n static fromString(text, fmt, opts = {}) {\n return DateTime.fromFormat(text, fmt, opts);\n }\n\n /**\n * Create a DateTime from a SQL date, time, or datetime\n * Defaults to en-US if no locale has been specified, regardless of the system's locale\n * @param {string} text - the string to parse\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @example DateTime.fromSQL('2017-05-15')\n * @example DateTime.fromSQL('2017-05-15 09:12:34')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342+06:00')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles', { setZone: true })\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342', { zone: 'America/Los_Angeles' })\n * @example DateTime.fromSQL('09:12:34.342')\n * @return {DateTime}\n */\n static fromSQL(text, opts = {}) {\n const [vals, parsedZone] = parseSQL(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"SQL\", text);\n }\n\n /**\n * Create an invalid DateTime.\n * @param {string} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent.\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {DateTime}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the DateTime is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDateTimeError(invalid);\n } else {\n return new DateTime({ invalid });\n }\n }\n\n /**\n * Check if an object is an instance of DateTime. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDateTime(o) {\n return (o && o.isLuxonDateTime) || false;\n }\n\n /**\n * Produce the format string for a set of options\n * @param formatOpts\n * @param localeOpts\n * @returns {string}\n */\n static parseFormatForOpts(formatOpts, localeOpts = {}) {\n const tokenList = formatOptsToTokens(formatOpts, Locale.fromObject(localeOpts));\n return !tokenList ? null : tokenList.map((t) => (t ? t.val : null)).join(\"\");\n }\n\n /**\n * Produce the the fully expanded format token for the locale\n * Does NOT quote characters, so quoted tokens will not round trip correctly\n * @param fmt\n * @param localeOpts\n * @returns {string}\n */\n static expandFormat(fmt, localeOpts = {}) {\n const expanded = expandMacroTokens(Formatter.parseFormat(fmt), Locale.fromObject(localeOpts));\n return expanded.map((t) => t.val).join(\"\");\n }\n\n static resetCache() {\n zoneOffsetTs = undefined;\n zoneOffsetGuessCache = {};\n }\n\n // INFO\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example DateTime.local(2017, 7, 4).get('month'); //=> 7\n * @example DateTime.local(2017, 7, 4).get('day'); //=> 4\n * @return {number}\n */\n get(unit) {\n return this[unit];\n }\n\n /**\n * Returns whether the DateTime is valid. Invalid DateTimes occur when:\n * * The DateTime was created from invalid calendar information, such as the 13th month or February 30\n * * The DateTime was created by an operation on another invalid date\n * @type {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this DateTime is invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this DateTime became invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Get the locale of a DateTime, such 'en-GB'. The locale is used when formatting the DateTime\n *\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a DateTime, such 'beng'. The numbering system is used when formatting the DateTime\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Get the output calendar of a DateTime, such 'islamic'. The output calendar is used when formatting the DateTime\n *\n * @type {string}\n */\n get outputCalendar() {\n return this.isValid ? this.loc.outputCalendar : null;\n }\n\n /**\n * Get the time zone associated with this DateTime.\n * @type {Zone}\n */\n get zone() {\n return this._zone;\n }\n\n /**\n * Get the name of the time zone.\n * @type {string}\n */\n get zoneName() {\n return this.isValid ? this.zone.name : null;\n }\n\n /**\n * Get the year\n * @example DateTime.local(2017, 5, 25).year //=> 2017\n * @type {number}\n */\n get year() {\n return this.isValid ? this.c.year : NaN;\n }\n\n /**\n * Get the quarter\n * @example DateTime.local(2017, 5, 25).quarter //=> 2\n * @type {number}\n */\n get quarter() {\n return this.isValid ? Math.ceil(this.c.month / 3) : NaN;\n }\n\n /**\n * Get the month (1-12).\n * @example DateTime.local(2017, 5, 25).month //=> 5\n * @type {number}\n */\n get month() {\n return this.isValid ? this.c.month : NaN;\n }\n\n /**\n * Get the day of the month (1-30ish).\n * @example DateTime.local(2017, 5, 25).day //=> 25\n * @type {number}\n */\n get day() {\n return this.isValid ? this.c.day : NaN;\n }\n\n /**\n * Get the hour of the day (0-23).\n * @example DateTime.local(2017, 5, 25, 9).hour //=> 9\n * @type {number}\n */\n get hour() {\n return this.isValid ? this.c.hour : NaN;\n }\n\n /**\n * Get the minute of the hour (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30).minute //=> 30\n * @type {number}\n */\n get minute() {\n return this.isValid ? this.c.minute : NaN;\n }\n\n /**\n * Get the second of the minute (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52).second //=> 52\n * @type {number}\n */\n get second() {\n return this.isValid ? this.c.second : NaN;\n }\n\n /**\n * Get the millisecond of the second (0-999).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52, 654).millisecond //=> 654\n * @type {number}\n */\n get millisecond() {\n return this.isValid ? this.c.millisecond : NaN;\n }\n\n /**\n * Get the week year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 12, 31).weekYear //=> 2015\n * @type {number}\n */\n get weekYear() {\n return this.isValid ? possiblyCachedWeekData(this).weekYear : NaN;\n }\n\n /**\n * Get the week number of the week year (1-52ish).\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2017, 5, 25).weekNumber //=> 21\n * @type {number}\n */\n get weekNumber() {\n return this.isValid ? possiblyCachedWeekData(this).weekNumber : NaN;\n }\n\n /**\n * Get the day of the week.\n * 1 is Monday and 7 is Sunday\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 11, 31).weekday //=> 4\n * @type {number}\n */\n get weekday() {\n return this.isValid ? possiblyCachedWeekData(this).weekday : NaN;\n }\n\n /**\n * Returns true if this date is on a weekend according to the locale, false otherwise\n * @returns {boolean}\n */\n get isWeekend() {\n return this.isValid && this.loc.getWeekendDays().includes(this.weekday);\n }\n\n /**\n * Get the day of the week according to the locale.\n * 1 is the first day of the week and 7 is the last day of the week.\n * If the locale assigns Sunday as the first day of the week, then a date which is a Sunday will return 1,\n * @returns {number}\n */\n get localWeekday() {\n return this.isValid ? possiblyCachedLocalWeekData(this).weekday : NaN;\n }\n\n /**\n * Get the week number of the week year according to the locale. Different locales assign week numbers differently,\n * because the week can start on different days of the week (see localWeekday) and because a different number of days\n * is required for a week to count as the first week of a year.\n * @returns {number}\n */\n get localWeekNumber() {\n return this.isValid ? possiblyCachedLocalWeekData(this).weekNumber : NaN;\n }\n\n /**\n * Get the week year according to the locale. Different locales assign week numbers (and therefor week years)\n * differently, see localWeekNumber.\n * @returns {number}\n */\n get localWeekYear() {\n return this.isValid ? possiblyCachedLocalWeekData(this).weekYear : NaN;\n }\n\n /**\n * Get the ordinal (meaning the day of the year)\n * @example DateTime.local(2017, 5, 25).ordinal //=> 145\n * @type {number|DateTime}\n */\n get ordinal() {\n return this.isValid ? gregorianToOrdinal(this.c).ordinal : NaN;\n }\n\n /**\n * Get the human readable short month name, such as 'Oct'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthShort //=> Oct\n * @type {string}\n */\n get monthShort() {\n return this.isValid ? Info.months(\"short\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable long month name, such as 'October'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthLong //=> October\n * @type {string}\n */\n get monthLong() {\n return this.isValid ? Info.months(\"long\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable short weekday, such as 'Mon'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayShort //=> Mon\n * @type {string}\n */\n get weekdayShort() {\n return this.isValid ? Info.weekdays(\"short\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the human readable long weekday, such as 'Monday'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayLong //=> Monday\n * @type {string}\n */\n get weekdayLong() {\n return this.isValid ? Info.weekdays(\"long\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the UTC offset of this DateTime in minutes\n * @example DateTime.now().offset //=> -240\n * @example DateTime.utc().offset //=> 0\n * @type {number}\n */\n get offset() {\n return this.isValid ? +this.o : NaN;\n }\n\n /**\n * Get the short human name for the zone's current offset, for example \"EST\" or \"EDT\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameShort() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"short\",\n locale: this.locale,\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get the long human name for the zone's current offset, for example \"Eastern Standard Time\" or \"Eastern Daylight Time\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameLong() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"long\",\n locale: this.locale,\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get whether this zone's offset ever changes, as in a DST.\n * @type {boolean}\n */\n get isOffsetFixed() {\n return this.isValid ? this.zone.isUniversal : null;\n }\n\n /**\n * Get whether the DateTime is in a DST.\n * @type {boolean}\n */\n get isInDST() {\n if (this.isOffsetFixed) {\n return false;\n } else {\n return (\n this.offset > this.set({ month: 1, day: 1 }).offset ||\n this.offset > this.set({ month: 5 }).offset\n );\n }\n }\n\n /**\n * Get those DateTimes which have the same local time as this DateTime, but a different offset from UTC\n * in this DateTime's zone. During DST changes local time can be ambiguous, for example\n * `2023-10-29T02:30:00` in `Europe/Berlin` can have offset `+01:00` or `+02:00`.\n * This method will return both possible DateTimes if this DateTime's local time is ambiguous.\n * @returns {DateTime[]}\n */\n getPossibleOffsets() {\n if (!this.isValid || this.isOffsetFixed) {\n return [this];\n }\n const dayMs = 86400000;\n const minuteMs = 60000;\n const localTS = objToLocalTS(this.c);\n const oEarlier = this.zone.offset(localTS - dayMs);\n const oLater = this.zone.offset(localTS + dayMs);\n\n const o1 = this.zone.offset(localTS - oEarlier * minuteMs);\n const o2 = this.zone.offset(localTS - oLater * minuteMs);\n if (o1 === o2) {\n return [this];\n }\n const ts1 = localTS - o1 * minuteMs;\n const ts2 = localTS - o2 * minuteMs;\n const c1 = tsToObj(ts1, o1);\n const c2 = tsToObj(ts2, o2);\n if (\n c1.hour === c2.hour &&\n c1.minute === c2.minute &&\n c1.second === c2.second &&\n c1.millisecond === c2.millisecond\n ) {\n return [clone(this, { ts: ts1 }), clone(this, { ts: ts2 })];\n }\n return [this];\n }\n\n /**\n * Returns true if this DateTime is in a leap year, false otherwise\n * @example DateTime.local(2016).isInLeapYear //=> true\n * @example DateTime.local(2013).isInLeapYear //=> false\n * @type {boolean}\n */\n get isInLeapYear() {\n return isLeapYear(this.year);\n }\n\n /**\n * Returns the number of days in this DateTime's month\n * @example DateTime.local(2016, 2).daysInMonth //=> 29\n * @example DateTime.local(2016, 3).daysInMonth //=> 31\n * @type {number}\n */\n get daysInMonth() {\n return daysInMonth(this.year, this.month);\n }\n\n /**\n * Returns the number of days in this DateTime's year\n * @example DateTime.local(2016).daysInYear //=> 366\n * @example DateTime.local(2013).daysInYear //=> 365\n * @type {number}\n */\n get daysInYear() {\n return this.isValid ? daysInYear(this.year) : NaN;\n }\n\n /**\n * Returns the number of weeks in this DateTime's year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2004).weeksInWeekYear //=> 53\n * @example DateTime.local(2013).weeksInWeekYear //=> 52\n * @type {number}\n */\n get weeksInWeekYear() {\n return this.isValid ? weeksInWeekYear(this.weekYear) : NaN;\n }\n\n /**\n * Returns the number of weeks in this DateTime's local week year\n * @example DateTime.local(2020, 6, {locale: 'en-US'}).weeksInLocalWeekYear //=> 52\n * @example DateTime.local(2020, 6, {locale: 'de-DE'}).weeksInLocalWeekYear //=> 53\n * @type {number}\n */\n get weeksInLocalWeekYear() {\n return this.isValid\n ? weeksInWeekYear(\n this.localWeekYear,\n this.loc.getMinDaysInFirstWeek(),\n this.loc.getStartOfWeek()\n )\n : NaN;\n }\n\n /**\n * Returns the resolved Intl options for this DateTime.\n * This is useful in understanding the behavior of formatting methods\n * @param {Object} opts - the same options as toLocaleString\n * @return {Object}\n */\n resolvedLocaleOptions(opts = {}) {\n const { locale, numberingSystem, calendar } = Formatter.create(\n this.loc.clone(opts),\n opts\n ).resolvedOptions(this);\n return { locale, numberingSystem, outputCalendar: calendar };\n }\n\n // TRANSFORM\n\n /**\n * \"Set\" the DateTime's zone to UTC. Returns a newly-constructed DateTime.\n *\n * Equivalent to {@link DateTime#setZone}('utc')\n * @param {number} [offset=0] - optionally, an offset from UTC in minutes\n * @param {Object} [opts={}] - options to pass to `setZone()`\n * @return {DateTime}\n */\n toUTC(offset = 0, opts = {}) {\n return this.setZone(FixedOffsetZone.instance(offset), opts);\n }\n\n /**\n * \"Set\" the DateTime's zone to the host's local zone. Returns a newly-constructed DateTime.\n *\n * Equivalent to `setZone('local')`\n * @return {DateTime}\n */\n toLocal() {\n return this.setZone(Settings.defaultZone);\n }\n\n /**\n * \"Set\" the DateTime's zone to specified zone. Returns a newly-constructed DateTime.\n *\n * By default, the setter keeps the underlying time the same (as in, the same timestamp), but the new instance will report different local times and consider DSTs when making computations, as with {@link DateTime#plus}. You may wish to use {@link DateTime#toLocal} and {@link DateTime#toUTC} which provide simple convenience wrappers for commonly used zones.\n * @param {string|Zone} [zone='local'] - a zone identifier. As a string, that can be any IANA zone supported by the host environment, or a fixed-offset name of the form 'UTC+3', or the strings 'local' or 'utc'. You may also supply an instance of a {@link DateTime#Zone} class.\n * @param {Object} opts - options\n * @param {boolean} [opts.keepLocalTime=false] - If true, adjust the underlying time so that the local time stays the same, but in the target zone. You should rarely need this.\n * @return {DateTime}\n */\n setZone(zone, { keepLocalTime = false, keepCalendarTime = false } = {}) {\n zone = normalizeZone(zone, Settings.defaultZone);\n if (zone.equals(this.zone)) {\n return this;\n } else if (!zone.isValid) {\n return DateTime.invalid(unsupportedZone(zone));\n } else {\n let newTS = this.ts;\n if (keepLocalTime || keepCalendarTime) {\n const offsetGuess = zone.offset(this.ts);\n const asObj = this.toObject();\n [newTS] = objToTS(asObj, offsetGuess, zone);\n }\n return clone(this, { ts: newTS, zone });\n }\n }\n\n /**\n * \"Set\" the locale, numberingSystem, or outputCalendar. Returns a newly-constructed DateTime.\n * @param {Object} properties - the properties to set\n * @example DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' })\n * @return {DateTime}\n */\n reconfigure({ locale, numberingSystem, outputCalendar } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem, outputCalendar });\n return clone(this, { loc });\n }\n\n /**\n * \"Set\" the locale. Returns a newly-constructed DateTime.\n * Just a convenient alias for reconfigure({ locale })\n * @example DateTime.local(2017, 5, 25).setLocale('en-GB')\n * @return {DateTime}\n */\n setLocale(locale) {\n return this.reconfigure({ locale });\n }\n\n /**\n * \"Set\" the values of specified units. Returns a newly-constructed DateTime.\n * You can only set units with this method; for \"setting\" metadata, see {@link DateTime#reconfigure} and {@link DateTime#setZone}.\n *\n * This method also supports setting locale-based week units, i.e. `localWeekday`, `localWeekNumber` and `localWeekYear`.\n * They cannot be mixed with ISO-week units like `weekday`.\n * @param {Object} values - a mapping of units to numbers\n * @example dt.set({ year: 2017 })\n * @example dt.set({ hour: 8, minute: 30 })\n * @example dt.set({ weekday: 5 })\n * @example dt.set({ year: 2005, ordinal: 234 })\n * @return {DateTime}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const normalized = normalizeObject(values, normalizeUnitWithLocalWeeks);\n const { minDaysInFirstWeek, startOfWeek } = usesLocalWeekValues(normalized, this.loc);\n\n const settingWeekStuff =\n !isUndefined(normalized.weekYear) ||\n !isUndefined(normalized.weekNumber) ||\n !isUndefined(normalized.weekday),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber;\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n let mixed;\n if (settingWeekStuff) {\n mixed = weekToGregorian(\n { ...gregorianToWeek(this.c, minDaysInFirstWeek, startOfWeek), ...normalized },\n minDaysInFirstWeek,\n startOfWeek\n );\n } else if (!isUndefined(normalized.ordinal)) {\n mixed = ordinalToGregorian({ ...gregorianToOrdinal(this.c), ...normalized });\n } else {\n mixed = { ...this.toObject(), ...normalized };\n\n // if we didn't set the day but we ended up on an overflow date,\n // use the last day of the right month\n if (isUndefined(normalized.day)) {\n mixed.day = Math.min(daysInMonth(mixed.year, mixed.month), mixed.day);\n }\n }\n\n const [ts, o] = objToTS(mixed, this.o, this.zone);\n return clone(this, { ts, o });\n }\n\n /**\n * Add a period of time to this DateTime and return the resulting DateTime\n *\n * Adding hours, minutes, seconds, or milliseconds increases the timestamp by the right number of milliseconds. Adding days, months, or years shifts the calendar, accounting for DSTs and leap years along the way. Thus, `dt.plus({ hours: 24 })` may result in a different time than `dt.plus({ days: 1 })` if there's a DST shift in between.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @example DateTime.now().plus(123) //~> in 123 milliseconds\n * @example DateTime.now().plus({ minutes: 15 }) //~> in 15 minutes\n * @example DateTime.now().plus({ days: 1 }) //~> this time tomorrow\n * @example DateTime.now().plus({ days: -1 }) //~> this time yesterday\n * @example DateTime.now().plus({ hours: 3, minutes: 13 }) //~> in 3 hr, 13 min\n * @example DateTime.now().plus(Duration.fromObject({ hours: 3, minutes: 13 })) //~> in 3 hr, 13 min\n * @return {DateTime}\n */\n plus(duration) {\n if (!this.isValid) return this;\n const dur = Duration.fromDurationLike(duration);\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * Subtract a period of time to this DateTime and return the resulting DateTime\n * See {@link DateTime#plus}\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n @return {DateTime}\n */\n minus(duration) {\n if (!this.isValid) return this;\n const dur = Duration.fromDurationLike(duration).negate();\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * \"Set\" this DateTime to the beginning of a unit of time.\n * @param {string} unit - The unit to go to the beginning of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week\n * @example DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01'\n * @example DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01'\n * @example DateTime.local(2014, 3, 3).startOf('week').toISODate(); //=> '2014-03-03', weeks always start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('day').toISOTime(); //=> '00:00.000-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00'\n * @return {DateTime}\n */\n startOf(unit, { useLocaleWeeks = false } = {}) {\n if (!this.isValid) return this;\n\n const o = {},\n normalizedUnit = Duration.normalizeUnit(unit);\n switch (normalizedUnit) {\n case \"years\":\n o.month = 1;\n // falls through\n case \"quarters\":\n case \"months\":\n o.day = 1;\n // falls through\n case \"weeks\":\n case \"days\":\n o.hour = 0;\n // falls through\n case \"hours\":\n o.minute = 0;\n // falls through\n case \"minutes\":\n o.second = 0;\n // falls through\n case \"seconds\":\n o.millisecond = 0;\n break;\n case \"milliseconds\":\n break;\n // no default, invalid units throw in normalizeUnit()\n }\n\n if (normalizedUnit === \"weeks\") {\n if (useLocaleWeeks) {\n const startOfWeek = this.loc.getStartOfWeek();\n const { weekday } = this;\n if (weekday < startOfWeek) {\n o.weekNumber = this.weekNumber - 1;\n }\n o.weekday = startOfWeek;\n } else {\n o.weekday = 1;\n }\n }\n\n if (normalizedUnit === \"quarters\") {\n const q = Math.ceil(this.month / 3);\n o.month = (q - 1) * 3 + 1;\n }\n\n return this.set(o);\n }\n\n /**\n * \"Set\" this DateTime to the end (meaning the last millisecond) of a unit of time\n * @param {string} unit - The unit to go to the end of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week\n * @example DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('week').toISO(); // => '2014-03-09T23:59:59.999-05:00', weeks start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('day').toISO(); //=> '2014-03-03T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00'\n * @return {DateTime}\n */\n endOf(unit, opts) {\n return this.isValid\n ? this.plus({ [unit]: 1 })\n .startOf(unit, opts)\n .minus(1)\n : this;\n }\n\n // OUTPUT\n\n /**\n * Returns a string representation of this DateTime formatted according to the specified format string.\n * **You may not want this.** See {@link DateTime#toLocaleString} for a more flexible formatting tool. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/formatting?id=table-of-tokens).\n * Defaults to en-US if no locale has been specified, regardless of the system's locale.\n * @param {string} fmt - the format string\n * @param {Object} opts - opts to override the configuration options on this DateTime\n * @example DateTime.now().toFormat('yyyy LLL dd') //=> '2017 Apr 22'\n * @example DateTime.now().setLocale('fr').toFormat('yyyy LLL dd') //=> '2017 avr. 22'\n * @example DateTime.now().toFormat('yyyy LLL dd', { locale: \"fr\" }) //=> '2017 avr. 22'\n * @example DateTime.now().toFormat(\"HH 'hours and' mm 'minutes'\") //=> '20 hours and 55 minutes'\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`.\n * The exact behavior of this method is browser-specific, but in general it will return an appropriate representation\n * of the DateTime in the assigned locale.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param formatOpts {Object} - Intl.DateTimeFormat constructor options and configuration options\n * @param {Object} opts - opts to override the configuration options on this DateTime\n * @example DateTime.now().toLocaleString(); //=> 4/20/2017\n * @example DateTime.now().setLocale('en-gb').toLocaleString(); //=> '20/04/2017'\n * @example DateTime.now().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017'\n * @example DateTime.now().toLocaleString(DateTime.DATE_FULL, { locale: 'fr' }); //=> '28 ao\u00FBt 2022'\n * @example DateTime.now().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM'\n * @example DateTime.now().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM'\n * @example DateTime.now().toLocaleString({ weekday: 'long', month: 'long', day: '2-digit' }); //=> 'Thursday, April 20'\n * @example DateTime.now().toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> 'Thu, Apr 20, 11:27 AM'\n * @example DateTime.now().toLocaleString({ hour: '2-digit', minute: '2-digit', hourCycle: 'h23' }); //=> '11:32'\n * @return {string}\n */\n toLocaleString(formatOpts = Formats.DATE_SHORT, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), formatOpts).formatDateTime(this)\n : INVALID;\n }\n\n /**\n * Returns an array of format \"parts\", meaning individual tokens along with metadata. This is allows callers to post-process individual sections of the formatted output.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts\n * @param opts {Object} - Intl.DateTimeFormat constructor options, same as `toLocaleString`.\n * @example DateTime.now().toLocaleParts(); //=> [\n * //=> { type: 'day', value: '25' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'month', value: '05' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'year', value: '1982' }\n * //=> ]\n */\n toLocaleParts(opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), opts).formatDateTimeParts(this)\n : [];\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.extendedZone=false] - add the time zone format extension\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1983, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z'\n * @example DateTime.now().toISO() //=> '2017-04-22T20:47:05.335-04:00'\n * @example DateTime.now().toISO({ includeOffset: false }) //=> '2017-04-22T20:47:05.335'\n * @example DateTime.now().toISO({ format: 'basic' }) //=> '20170422T204705.335-0400'\n * @return {string}\n */\n toISO({\n format = \"extended\",\n suppressSeconds = false,\n suppressMilliseconds = false,\n includeOffset = true,\n extendedZone = false,\n } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n const ext = format === \"extended\";\n\n let c = toISODate(this, ext);\n c += \"T\";\n c += toISOTime(this, ext, suppressSeconds, suppressMilliseconds, includeOffset, extendedZone);\n return c;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's date component\n * @param {Object} opts - options\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1982, 5, 25).toISODate() //=> '1982-05-25'\n * @example DateTime.utc(1982, 5, 25).toISODate({ format: 'basic' }) //=> '19820525'\n * @return {string}\n */\n toISODate({ format = \"extended\" } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return toISODate(this, format === \"extended\");\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's week date\n * @example DateTime.utc(1982, 5, 25).toISOWeekDate() //=> '1982-W21-2'\n * @return {string}\n */\n toISOWeekDate() {\n return toTechFormat(this, \"kkkk-'W'WW-c\");\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's time component\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.extendedZone=true] - add the time zone format extension\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime() //=> '07:34:19.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34, seconds: 0, milliseconds: 0 }).toISOTime({ suppressSeconds: true }) //=> '07:34Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ format: 'basic' }) //=> '073419.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ includePrefix: true }) //=> 'T07:34:19.361Z'\n * @return {string}\n */\n toISOTime({\n suppressMilliseconds = false,\n suppressSeconds = false,\n includeOffset = true,\n includePrefix = false,\n extendedZone = false,\n format = \"extended\",\n } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n let c = includePrefix ? \"T\" : \"\";\n return (\n c +\n toISOTime(\n this,\n format === \"extended\",\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n extendedZone\n )\n );\n }\n\n /**\n * Returns an RFC 2822-compatible string representation of this DateTime\n * @example DateTime.utc(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 +0000'\n * @example DateTime.local(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 -0400'\n * @return {string}\n */\n toRFC2822() {\n return toTechFormat(this, \"EEE, dd LLL yyyy HH:mm:ss ZZZ\", false);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in HTTP headers. The output is always expressed in GMT.\n * Specifically, the string conforms to RFC 1123.\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @example DateTime.utc(2014, 7, 13).toHTTP() //=> 'Sun, 13 Jul 2014 00:00:00 GMT'\n * @example DateTime.utc(2014, 7, 13, 19).toHTTP() //=> 'Sun, 13 Jul 2014 19:00:00 GMT'\n * @return {string}\n */\n toHTTP() {\n return toTechFormat(this.toUTC(), \"EEE, dd LLL yyyy HH:mm:ss 'GMT'\");\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Date\n * @example DateTime.utc(2014, 7, 13).toSQLDate() //=> '2014-07-13'\n * @return {string}\n */\n toSQLDate() {\n if (!this.isValid) {\n return null;\n }\n return toISODate(this, true);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Time\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'\n * @example DateTime.utc().toSQL() //=> '05:15:16.345'\n * @example DateTime.now().toSQL() //=> '05:15:16.345 -04:00'\n * @example DateTime.now().toSQL({ includeOffset: false }) //=> '05:15:16.345'\n * @example DateTime.now().toSQL({ includeZone: false }) //=> '05:15:16.345 America/New_York'\n * @return {string}\n */\n toSQLTime({ includeOffset = true, includeZone = false, includeOffsetSpace = true } = {}) {\n let fmt = \"HH:mm:ss.SSS\";\n\n if (includeZone || includeOffset) {\n if (includeOffsetSpace) {\n fmt += \" \";\n }\n if (includeZone) {\n fmt += \"z\";\n } else if (includeOffset) {\n fmt += \"ZZ\";\n }\n }\n\n return toTechFormat(this, fmt, true);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'\n * @example DateTime.utc(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 Z'\n * @example DateTime.local(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 -04:00'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeOffset: false }) //=> '2014-07-13 00:00:00.000'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeZone: true }) //=> '2014-07-13 00:00:00.000 America/New_York'\n * @return {string}\n */\n toSQL(opts = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return `${this.toSQLDate()} ${this.toSQLTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for debugging\n * @return {string}\n */\n toString() {\n return this.isValid ? this.toISO() : INVALID;\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for the REPL.\n * @return {string}\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n if (this.isValid) {\n return `DateTime { ts: ${this.toISO()}, zone: ${this.zone.name}, locale: ${this.locale} }`;\n } else {\n return `DateTime { Invalid, reason: ${this.invalidReason} }`;\n }\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime. Alias of {@link DateTime#toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime.\n * @return {number}\n */\n toMillis() {\n return this.isValid ? this.ts : NaN;\n }\n\n /**\n * Returns the epoch seconds of this DateTime.\n * @return {number}\n */\n toSeconds() {\n return this.isValid ? this.ts / 1000 : NaN;\n }\n\n /**\n * Returns the epoch seconds (as a whole number) of this DateTime.\n * @return {number}\n */\n toUnixInteger() {\n return this.isValid ? Math.floor(this.ts / 1000) : NaN;\n }\n\n /**\n * Returns an ISO 8601 representation of this DateTime appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns a BSON serializable equivalent to this DateTime.\n * @return {Date}\n */\n toBSON() {\n return this.toJSDate();\n }\n\n /**\n * Returns a JavaScript object with this DateTime's year, month, day, and so on.\n * @param opts - options for generating the object\n * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\n * @example DateTime.now().toObject() //=> { year: 2017, month: 4, day: 22, hour: 20, minute: 49, second: 42, millisecond: 268 }\n * @return {Object}\n */\n toObject(opts = {}) {\n if (!this.isValid) return {};\n\n const base = { ...this.c };\n\n if (opts.includeConfig) {\n base.outputCalendar = this.outputCalendar;\n base.numberingSystem = this.loc.numberingSystem;\n base.locale = this.loc.locale;\n }\n return base;\n }\n\n /**\n * Returns a JavaScript Date equivalent to this DateTime.\n * @return {Date}\n */\n toJSDate() {\n return new Date(this.isValid ? this.ts : NaN);\n }\n\n // COMPARE\n\n /**\n * Return the difference between two DateTimes as a Duration.\n * @param {DateTime} otherDateTime - the DateTime to compare this one to\n * @param {string|string[]} [unit=['milliseconds']] - the unit or array of units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example\n * var i1 = DateTime.fromISO('1982-05-25T09:45'),\n * i2 = DateTime.fromISO('1983-10-14T10:30');\n * i2.diff(i1).toObject() //=> { milliseconds: 43807500000 }\n * i2.diff(i1, 'hours').toObject() //=> { hours: 12168.75 }\n * i2.diff(i1, ['months', 'days']).toObject() //=> { months: 16, days: 19.03125 }\n * i2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 }\n * @return {Duration}\n */\n diff(otherDateTime, unit = \"milliseconds\", opts = {}) {\n if (!this.isValid || !otherDateTime.isValid) {\n return Duration.invalid(\"created by diffing an invalid DateTime\");\n }\n\n const durOpts = { locale: this.locale, numberingSystem: this.numberingSystem, ...opts };\n\n const units = maybeArray(unit).map(Duration.normalizeUnit),\n otherIsLater = otherDateTime.valueOf() > this.valueOf(),\n earlier = otherIsLater ? this : otherDateTime,\n later = otherIsLater ? otherDateTime : this,\n diffed = diff(earlier, later, units, durOpts);\n\n return otherIsLater ? diffed.negate() : diffed;\n }\n\n /**\n * Return the difference between this DateTime and right now.\n * See {@link DateTime#diff}\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units units (such as 'hours' or 'days') to include in the duration\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n diffNow(unit = \"milliseconds\", opts = {}) {\n return this.diff(DateTime.now(), unit, opts);\n }\n\n /**\n * Return an Interval spanning between this DateTime and another DateTime\n * @param {DateTime} otherDateTime - the other end point of the Interval\n * @return {Interval}\n */\n until(otherDateTime) {\n return this.isValid ? Interval.fromDateTimes(this, otherDateTime) : this;\n }\n\n /**\n * Return whether this DateTime is in the same unit of time as another DateTime.\n * Higher-order units must also be identical for this function to return `true`.\n * Note that time zones are **ignored** in this comparison, which compares the **local** calendar time. Use {@link DateTime#setZone} to convert one of the dates if needed.\n * @param {DateTime} otherDateTime - the other DateTime\n * @param {string} unit - the unit of time to check sameness on\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week; only the locale of this DateTime is used\n * @example DateTime.now().hasSame(otherDT, 'day'); //~> true if otherDT is in the same current calendar day\n * @return {boolean}\n */\n hasSame(otherDateTime, unit, opts) {\n if (!this.isValid) return false;\n\n const inputMs = otherDateTime.valueOf();\n const adjustedToZone = this.setZone(otherDateTime.zone, { keepLocalTime: true });\n return (\n adjustedToZone.startOf(unit, opts) <= inputMs && inputMs <= adjustedToZone.endOf(unit, opts)\n );\n }\n\n /**\n * Equality check\n * Two DateTimes are equal if and only if they represent the same millisecond, have the same zone and location, and are both valid.\n * To compare just the millisecond values, use `+dt1 === +dt2`.\n * @param {DateTime} other - the other DateTime\n * @return {boolean}\n */\n equals(other) {\n return (\n this.isValid &&\n other.isValid &&\n this.valueOf() === other.valueOf() &&\n this.zone.equals(other.zone) &&\n this.loc.equals(other.loc)\n );\n }\n\n /**\n * Returns a string representation of a this time relative to now, such as \"in two days\". Can only internationalize if your\n * platform supports Intl.RelativeTimeFormat. Rounds down by default.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} [options.style=\"long\"] - the style of units, must be \"long\", \"short\", or \"narrow\"\n * @param {string|string[]} options.unit - use a specific unit or array of units; if omitted, or an array, the method will pick the best unit. Use an array or one of \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", or \"seconds\"\n * @param {boolean} [options.round=true] - whether to round the numbers in the output.\n * @param {number} [options.padding=0] - padding in milliseconds. This allows you to round up the result if it fits inside the threshold. Don't use in combination with {round: false} because the decimal output will include the padding.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelative() //=> \"in 1 day\"\n * @example DateTime.now().setLocale(\"es\").toRelative({ days: 1 }) //=> \"dentro de 1 d\u00EDa\"\n * @example DateTime.now().plus({ days: 1 }).toRelative({ locale: \"fr\" }) //=> \"dans 23 heures\"\n * @example DateTime.now().minus({ days: 2 }).toRelative() //=> \"2 days ago\"\n * @example DateTime.now().minus({ days: 2 }).toRelative({ unit: \"hours\" }) //=> \"48 hours ago\"\n * @example DateTime.now().minus({ hours: 36 }).toRelative({ round: false }) //=> \"1.5 days ago\"\n */\n toRelative(options = {}) {\n if (!this.isValid) return null;\n const base = options.base || DateTime.fromObject({}, { zone: this.zone }),\n padding = options.padding ? (this < base ? -options.padding : options.padding) : 0;\n let units = [\"years\", \"months\", \"days\", \"hours\", \"minutes\", \"seconds\"];\n let unit = options.unit;\n if (Array.isArray(options.unit)) {\n units = options.unit;\n unit = undefined;\n }\n return diffRelative(base, this.plus(padding), {\n ...options,\n numeric: \"always\",\n units,\n unit,\n });\n }\n\n /**\n * Returns a string representation of this date relative to today, such as \"yesterday\" or \"next month\".\n * Only internationalizes on platforms that supports Intl.RelativeTimeFormat.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of \"years\", \"quarters\", \"months\", \"weeks\", or \"days\"\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar() //=> \"tomorrow\"\n * @example DateTime.now().setLocale(\"es\").plus({ days: 1 }).toRelative() //=> \"\"ma\u00F1ana\"\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar({ locale: \"fr\" }) //=> \"demain\"\n * @example DateTime.now().minus({ days: 2 }).toRelativeCalendar() //=> \"2 days ago\"\n */\n toRelativeCalendar(options = {}) {\n if (!this.isValid) return null;\n\n return diffRelative(options.base || DateTime.fromObject({}, { zone: this.zone }), this, {\n ...options,\n numeric: \"auto\",\n units: [\"years\", \"months\", \"days\"],\n calendary: true,\n });\n }\n\n /**\n * Return the min of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the minimum\n * @return {DateTime} the min DateTime, or undefined if called with no argument\n */\n static min(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"min requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, (i) => i.valueOf(), Math.min);\n }\n\n /**\n * Return the max of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the maximum\n * @return {DateTime} the max DateTime, or undefined if called with no argument\n */\n static max(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"max requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, (i) => i.valueOf(), Math.max);\n }\n\n // MISC\n\n /**\n * Explain how a string would be parsed by fromFormat()\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see description)\n * @param {Object} options - options taken by fromFormat()\n * @return {Object}\n */\n static fromFormatExplain(text, fmt, options = {}) {\n const { locale = null, numberingSystem = null } = options,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n });\n return explainFromTokens(localeToUse, text, fmt);\n }\n\n /**\n * @deprecated use fromFormatExplain instead\n */\n static fromStringExplain(text, fmt, options = {}) {\n return DateTime.fromFormatExplain(text, fmt, options);\n }\n\n /**\n * Build a parser for `fmt` using the given locale. This parser can be passed\n * to {@link DateTime.fromFormatParser} to a parse a date in this format. This\n * can be used to optimize cases where many dates need to be parsed in a\n * specific format.\n *\n * @param {String} fmt - the format the string is expected to be in (see\n * description)\n * @param {Object} options - options used to set locale and numberingSystem\n * for parser\n * @returns {TokenParser} - opaque object to be used\n */\n static buildFormatParser(fmt, options = {}) {\n const { locale = null, numberingSystem = null } = options,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n });\n return new TokenParser(localeToUse, fmt);\n }\n\n /**\n * Create a DateTime from an input string and format parser.\n *\n * The format parser must have been created with the same locale as this call.\n *\n * @param {String} text - the string to parse\n * @param {TokenParser} formatParser - parser from {@link DateTime.buildFormatParser}\n * @param {Object} opts - options taken by fromFormat()\n * @returns {DateTime}\n */\n static fromFormatParser(text, formatParser, opts = {}) {\n if (isUndefined(text) || isUndefined(formatParser)) {\n throw new InvalidArgumentError(\n \"fromFormatParser requires an input string and a format parser\"\n );\n }\n const { locale = null, numberingSystem = null } = opts,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n });\n\n if (!localeToUse.equals(formatParser.locale)) {\n throw new InvalidArgumentError(\n `fromFormatParser called with a locale of ${localeToUse}, ` +\n `but the format parser was created for ${formatParser.locale}`\n );\n }\n\n const { result, zone, specificOffset, invalidReason } = formatParser.explainFromTokens(text);\n\n if (invalidReason) {\n return DateTime.invalid(invalidReason);\n } else {\n return parseDataToDateTime(\n result,\n zone,\n opts,\n `format ${formatParser.format}`,\n text,\n specificOffset\n );\n }\n }\n\n // FORMAT PRESETS\n\n /**\n * {@link DateTime#toLocaleString} format like 10/14/1983\n * @type {Object}\n */\n static get DATE_SHORT() {\n return Formats.DATE_SHORT;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED() {\n return Formats.DATE_MED;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Fri, Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED_WITH_WEEKDAY() {\n return Formats.DATE_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983'\n * @type {Object}\n */\n static get DATE_FULL() {\n return Formats.DATE_FULL;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Tuesday, October 14, 1983'\n * @type {Object}\n */\n static get DATE_HUGE() {\n return Formats.DATE_HUGE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_SIMPLE() {\n return Formats.TIME_SIMPLE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SECONDS() {\n return Formats.TIME_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SHORT_OFFSET() {\n return Formats.TIME_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_LONG_OFFSET() {\n return Formats.TIME_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_SIMPLE() {\n return Formats.TIME_24_SIMPLE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SECONDS() {\n return Formats.TIME_24_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 EDT', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SHORT_OFFSET() {\n return Formats.TIME_24_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 Eastern Daylight Time', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_LONG_OFFSET() {\n return Formats.TIME_24_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT() {\n return Formats.DATETIME_SHORT;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT_WITH_SECONDS() {\n return Formats.DATETIME_SHORT_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED() {\n return Formats.DATETIME_MED;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_SECONDS() {\n return Formats.DATETIME_MED_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Fri, 14 Oct 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_WEEKDAY() {\n return Formats.DATETIME_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL() {\n return Formats.DATETIME_FULL;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30:33 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL_WITH_SECONDS() {\n return Formats.DATETIME_FULL_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE() {\n return Formats.DATETIME_HUGE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30:33 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE_WITH_SECONDS() {\n return Formats.DATETIME_HUGE_WITH_SECONDS;\n }\n}\n\n/**\n * @private\n */\nexport function friendlyDateTime(dateTimeish) {\n if (DateTime.isDateTime(dateTimeish)) {\n return dateTimeish;\n } else if (dateTimeish && dateTimeish.valueOf && isNumber(dateTimeish.valueOf())) {\n return DateTime.fromJSDate(dateTimeish);\n } else if (dateTimeish && typeof dateTimeish === \"object\") {\n return DateTime.fromObject(dateTimeish);\n } else {\n throw new InvalidArgumentError(\n `Unknown datetime argument: ${dateTimeish}, of type ${typeof dateTimeish}`\n );\n }\n}\n", "function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };", "export var DEFAULT_CONFIG = {\n // minimum relative difference between two compared values,\n // used by all comparison functions\n relTol: 1e-12,\n // minimum absolute difference between two compared values,\n // used by all comparison functions\n absTol: 1e-15,\n // type of default matrix output. Choose 'matrix' (default) or 'array'\n matrix: 'Matrix',\n // type of default number output. Choose 'number' (default) 'BigNumber', 'bigint', or 'Fraction'\n number: 'number',\n // type of fallback used for config { number: 'bigint' } when a value cannot be represented\n // in the configured numeric type. Choose 'number' (default) or 'BigNumber'.\n numberFallback: 'number',\n // number of significant digits in BigNumbers\n precision: 64,\n // predictable output type of functions. When true, output type depends only\n // on the input types. When false (default), output type can vary depending\n // on input values. For example `math.sqrt(-4)` returns `complex('2i')` when\n // predictable is false, and returns `NaN` when true.\n predictable: false,\n // random seed for seeded pseudo random number generation\n // null = randomly seed\n randomSeed: null\n};", "import { hasOwnProperty } from './object.js';\n\n/**\n * Get a property of a plain object\n * Throws an error in case the object is not a plain object or the\n * property is not defined on the object itself\n * @param {Object} object\n * @param {string} prop\n * @return {*} Returns the property value when safe\n */\nfunction getSafeProperty(object, prop) {\n // only allow getting safe properties of a plain object\n if (isSafeProperty(object, prop)) {\n return object[prop];\n }\n if (typeof object[prop] === 'function' && isSafeMethod(object, prop)) {\n throw new Error('Cannot access method \"' + prop + '\" as a property');\n }\n throw new Error('No access to property \"' + prop + '\"');\n}\n\n/**\n * Set a property on a plain object.\n * Throws an error in case the object is not a plain object or the\n * property would override an inherited property like .constructor or .toString\n * @param {Object} object\n * @param {string} prop\n * @param {*} value\n * @return {*} Returns the value\n */\n// TODO: merge this function into access.js?\nfunction setSafeProperty(object, prop, value) {\n // only allow setting safe properties of a plain object\n if (isSafeProperty(object, prop)) {\n object[prop] = value;\n return value;\n }\n throw new Error('No access to property \"' + prop + '\"');\n}\n\n/**\n * Test whether a property is safe to use on an object or Array.\n * For example .toString and .constructor are not safe\n * @param {Object | Array} object\n * @param {string} prop\n * @return {boolean} Returns true when safe\n */\nfunction isSafeProperty(object, prop) {\n if (!isPlainObject(object) && !Array.isArray(object)) {\n return false;\n }\n // SAFE: whitelisted\n // e.g length\n if (hasOwnProperty(safeNativeProperties, prop)) {\n return true;\n }\n // UNSAFE: inherited from Object prototype\n // e.g constructor\n if (prop in Object.prototype) {\n // 'in' is used instead of hasOwnProperty for nodejs v0.10\n // which is inconsistent on root prototypes. It is safe\n // here because Object.prototype is a root object\n return false;\n }\n // UNSAFE: inherited from Function prototype\n // e.g call, apply\n if (prop in Function.prototype) {\n // 'in' is used instead of hasOwnProperty for nodejs v0.10\n // which is inconsistent on root prototypes. It is safe\n // here because Function.prototype is a root object\n return false;\n }\n return true;\n}\n\n/**\n * Validate whether a method is safe.\n * Throws an error when that's not the case.\n * @param {Object} object\n * @param {string} method\n * @return {function} Returns the method when valid\n */\nfunction getSafeMethod(object, method) {\n if (!isSafeMethod(object, method)) {\n throw new Error('No access to method \"' + method + '\"');\n }\n return object[method];\n}\n\n/**\n * Check whether a method is safe.\n * Throws an error when that's not the case (for example for `constructor`).\n * @param {Object} object\n * @param {string} method\n * @return {boolean} Returns true when safe, false otherwise\n */\nfunction isSafeMethod(object, method) {\n if (object === null || object === undefined || typeof object[method] !== 'function') {\n return false;\n }\n // UNSAFE: ghosted\n // e.g overridden toString\n // Note that IE10 doesn't support __proto__ and we can't do this check there.\n if (hasOwnProperty(object, method) && Object.getPrototypeOf && method in Object.getPrototypeOf(object)) {\n return false;\n }\n // SAFE: whitelisted\n // e.g toString\n if (hasOwnProperty(safeNativeMethods, method)) {\n return true;\n }\n // UNSAFE: inherited from Object prototype\n // e.g constructor\n if (method in Object.prototype) {\n // 'in' is used instead of hasOwnProperty for nodejs v0.10\n // which is inconsistent on root prototypes. It is safe\n // here because Object.prototype is a root object\n return false;\n }\n // UNSAFE: inherited from Function prototype\n // e.g call, apply\n if (method in Function.prototype) {\n // 'in' is used instead of hasOwnProperty for nodejs v0.10\n // which is inconsistent on root prototypes. It is safe\n // here because Function.prototype is a root object\n return false;\n }\n return true;\n}\nfunction isPlainObject(object) {\n return typeof object === 'object' && object && object.constructor === Object;\n}\nvar safeNativeProperties = {\n length: true,\n name: true\n};\nvar safeNativeMethods = {\n toString: true,\n valueOf: true,\n toLocaleString: true\n};\nexport { getSafeProperty };\nexport { setSafeProperty };\nexport { isSafeProperty };\nexport { getSafeMethod };\nexport { isSafeMethod };\nexport { isPlainObject };", "import { getSafeProperty, isSafeProperty, setSafeProperty } from './customs.js';\nimport { isMap, isObject } from './is.js';\n\n/**\n * A map facade on a bare object.\n *\n * The small number of methods needed to implement a scope,\n * forwarding on to the SafeProperty functions. Over time, the codebase\n * will stop using this method, as all objects will be Maps, rather than\n * more security prone objects.\n */\nexport class ObjectWrappingMap {\n constructor(object) {\n this.wrappedObject = object;\n this[Symbol.iterator] = this.entries;\n }\n keys() {\n return Object.keys(this.wrappedObject).filter(key => this.has(key)).values();\n }\n get(key) {\n return getSafeProperty(this.wrappedObject, key);\n }\n set(key, value) {\n setSafeProperty(this.wrappedObject, key, value);\n return this;\n }\n has(key) {\n return isSafeProperty(this.wrappedObject, key) && key in this.wrappedObject;\n }\n entries() {\n return mapIterator(this.keys(), key => [key, this.get(key)]);\n }\n forEach(callback) {\n for (var key of this.keys()) {\n callback(this.get(key), key, this);\n }\n }\n delete(key) {\n if (isSafeProperty(this.wrappedObject, key)) {\n delete this.wrappedObject[key];\n }\n }\n clear() {\n for (var key of this.keys()) {\n this.delete(key);\n }\n }\n get size() {\n return Object.keys(this.wrappedObject).length;\n }\n}\n\n/**\n * Create a map with two partitions: a and b.\n * The set with bKeys determines which keys/values are read/written to map b,\n * all other values are read/written to map a\n *\n * For example:\n *\n * const a = new Map()\n * const b = new Map()\n * const p = new PartitionedMap(a, b, new Set(['x', 'y']))\n *\n * In this case, values `x` and `y` are read/written to map `b`,\n * all other values are read/written to map `a`.\n */\nexport class PartitionedMap {\n /**\n * @param {Map} a\n * @param {Map} b\n * @param {Set} bKeys\n */\n constructor(a, b, bKeys) {\n this.a = a;\n this.b = b;\n this.bKeys = bKeys;\n this[Symbol.iterator] = this.entries;\n }\n get(key) {\n return this.bKeys.has(key) ? this.b.get(key) : this.a.get(key);\n }\n set(key, value) {\n if (this.bKeys.has(key)) {\n this.b.set(key, value);\n } else {\n this.a.set(key, value);\n }\n return this;\n }\n has(key) {\n return this.b.has(key) || this.a.has(key);\n }\n keys() {\n return new Set([...this.a.keys(), ...this.b.keys()])[Symbol.iterator]();\n }\n entries() {\n return mapIterator(this.keys(), key => [key, this.get(key)]);\n }\n forEach(callback) {\n for (var key of this.keys()) {\n callback(this.get(key), key, this);\n }\n }\n delete(key) {\n return this.bKeys.has(key) ? this.b.delete(key) : this.a.delete(key);\n }\n clear() {\n this.a.clear();\n this.b.clear();\n }\n get size() {\n return [...this.keys()].length;\n }\n}\n\n/**\n * Create a new iterator that maps over the provided iterator, applying a mapping function to each item\n */\nfunction mapIterator(it, callback) {\n return {\n next: () => {\n var n = it.next();\n return n.done ? n : {\n value: callback(n.value),\n done: false\n };\n }\n };\n}\n\n/**\n * Creates an empty map, or whatever your platform's polyfill is.\n *\n * @returns an empty Map or Map like object.\n */\nexport function createEmptyMap() {\n return new Map();\n}\n\n/**\n * Creates a Map from the given object.\n *\n * @param { Map | { [key: string]: unknown } | undefined } mapOrObject\n * @returns\n */\nexport function createMap(mapOrObject) {\n if (!mapOrObject) {\n return createEmptyMap();\n }\n if (isMap(mapOrObject)) {\n return mapOrObject;\n }\n if (isObject(mapOrObject)) {\n return new ObjectWrappingMap(mapOrObject);\n }\n throw new Error('createMap can create maps from objects or Maps');\n}\n\n/**\n * Unwraps a map into an object.\n *\n * @param {Map} map\n * @returns { [key: string]: unknown }\n */\nexport function toObject(map) {\n if (map instanceof ObjectWrappingMap) {\n return map.wrappedObject;\n }\n var object = {};\n for (var key of map.keys()) {\n var value = map.get(key);\n setSafeProperty(object, key, value);\n }\n return object;\n}\n\n/**\n * Copies the contents of key-value pairs from each `objects` in to `map`.\n *\n * Object is `objects` can be a `Map` or object.\n *\n * This is the `Map` analog to `Object.assign`.\n */\nexport function assign(map) {\n for (var _len = arguments.length, objects = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n objects[_key - 1] = arguments[_key];\n }\n for (var args of objects) {\n if (!args) {\n continue;\n }\n if (isMap(args)) {\n for (var key of args.keys()) {\n map.set(key, args.get(key));\n }\n } else if (isObject(args)) {\n for (var _key2 of Object.keys(args)) {\n map.set(_key2, args[_key2]);\n }\n }\n }\n return map;\n}", "// type checks for all known types\n//\n// note that:\n//\n// - check by duck-typing on a property like `isUnit`, instead of checking instanceof.\n// instanceof cannot be used because that would not allow to pass data from\n// one instance of math.js to another since each has it's own instance of Unit.\n// - check the `isUnit` property via the constructor, so there will be no\n// matches for \"fake\" instances like plain objects with a property `isUnit`.\n// That is important for security reasons.\n// - It must not be possible to override the type checks used internally,\n// for security reasons, so these functions are not exposed in the expression\n// parser.\n\nimport { ObjectWrappingMap } from './map.js';\nexport function isNumber(x) {\n return typeof x === 'number';\n}\nexport function isBigNumber(x) {\n if (!x || typeof x !== 'object' || typeof x.constructor !== 'function') {\n return false;\n }\n if (x.isBigNumber === true && typeof x.constructor.prototype === 'object' && x.constructor.prototype.isBigNumber === true) {\n return true;\n }\n if (typeof x.constructor.isDecimal === 'function' && x.constructor.isDecimal(x) === true) {\n return true;\n }\n return false;\n}\nexport function isBigInt(x) {\n return typeof x === 'bigint';\n}\nexport function isComplex(x) {\n return x && typeof x === 'object' && Object.getPrototypeOf(x).isComplex === true || false;\n}\nexport function isFraction(x) {\n return x && typeof x === 'object' && Object.getPrototypeOf(x).isFraction === true || false;\n}\nexport function isUnit(x) {\n return x && x.constructor.prototype.isUnit === true || false;\n}\nexport function isString(x) {\n return typeof x === 'string';\n}\nexport var isArray = Array.isArray;\nexport function isMatrix(x) {\n return x && x.constructor.prototype.isMatrix === true || false;\n}\n\n/**\n * Test whether a value is a collection: an Array or Matrix\n * @param {*} x\n * @returns {boolean} isCollection\n */\nexport function isCollection(x) {\n return Array.isArray(x) || isMatrix(x);\n}\nexport function isDenseMatrix(x) {\n return x && x.isDenseMatrix && x.constructor.prototype.isMatrix === true || false;\n}\nexport function isSparseMatrix(x) {\n return x && x.isSparseMatrix && x.constructor.prototype.isMatrix === true || false;\n}\nexport function isRange(x) {\n return x && x.constructor.prototype.isRange === true || false;\n}\nexport function isIndex(x) {\n return x && x.constructor.prototype.isIndex === true || false;\n}\nexport function isBoolean(x) {\n return typeof x === 'boolean';\n}\nexport function isResultSet(x) {\n return x && x.constructor.prototype.isResultSet === true || false;\n}\nexport function isHelp(x) {\n return x && x.constructor.prototype.isHelp === true || false;\n}\nexport function isFunction(x) {\n return typeof x === 'function';\n}\nexport function isDate(x) {\n return x instanceof Date;\n}\nexport function isRegExp(x) {\n return x instanceof RegExp;\n}\nexport function isObject(x) {\n return !!(x && typeof x === 'object' && x.constructor === Object && !isComplex(x) && !isFraction(x));\n}\n\n/**\n * Returns `true` if the passed object appears to be a Map (i.e. duck typing).\n *\n * Methods looked for are `get`, `set`, `keys` and `has`.\n *\n * @param {Map | object} object\n * @returns\n */\nexport function isMap(object) {\n // We can use the fast instanceof, or a slower duck typing check.\n // The duck typing method needs to cover enough methods to not be confused with DenseMatrix.\n if (!object) {\n return false;\n }\n return object instanceof Map || object instanceof ObjectWrappingMap || typeof object.set === 'function' && typeof object.get === 'function' && typeof object.keys === 'function' && typeof object.has === 'function';\n}\nexport function isPartitionedMap(object) {\n return isMap(object) && isMap(object.a) && isMap(object.b);\n}\nexport function isObjectWrappingMap(object) {\n return isMap(object) && isObject(object.wrappedObject);\n}\nexport function isNull(x) {\n return x === null;\n}\nexport function isUndefined(x) {\n return x === undefined;\n}\nexport function isAccessorNode(x) {\n return x && x.isAccessorNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isArrayNode(x) {\n return x && x.isArrayNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isAssignmentNode(x) {\n return x && x.isAssignmentNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isBlockNode(x) {\n return x && x.isBlockNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isConditionalNode(x) {\n return x && x.isConditionalNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isConstantNode(x) {\n return x && x.isConstantNode === true && x.constructor.prototype.isNode === true || false;\n}\n\n/* Very specialized: returns true for those nodes which in the numerator of\n a fraction means that the division in that fraction has precedence over implicit\n multiplication, e.g. -2/3 x parses as (-2/3) x and 3/4 x parses as (3/4) x but\n 6!/8 x parses as 6! / (8x). It is located here because it is shared between\n parse.js and OperatorNode.js (for parsing and printing, respectively).\n\n This should *not* be exported from mathjs, unlike most of the tests here.\n Its name does not start with 'is' to prevent utils/snapshot.js from thinking\n it should be exported.\n*/\nexport function rule2Node(node) {\n return isConstantNode(node) || isOperatorNode(node) && node.args.length === 1 && isConstantNode(node.args[0]) && '-+~'.includes(node.op);\n}\nexport function isFunctionAssignmentNode(x) {\n return x && x.isFunctionAssignmentNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isFunctionNode(x) {\n return x && x.isFunctionNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isIndexNode(x) {\n return x && x.isIndexNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isNode(x) {\n return x && x.isNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isObjectNode(x) {\n return x && x.isObjectNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isOperatorNode(x) {\n return x && x.isOperatorNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isParenthesisNode(x) {\n return x && x.isParenthesisNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isRangeNode(x) {\n return x && x.isRangeNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isRelationalNode(x) {\n return x && x.isRelationalNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isSymbolNode(x) {\n return x && x.isSymbolNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isChain(x) {\n return x && x.constructor.prototype.isChain === true || false;\n}\nexport function typeOf(x) {\n var t = typeof x;\n if (t === 'object') {\n if (x === null) return 'null';\n if (isBigNumber(x)) return 'BigNumber'; // Special: weird mashup with Decimal\n if (x.constructor && x.constructor.name) return x.constructor.name;\n return 'Object'; // just in case\n }\n return t; // can be 'string', 'number', 'boolean', 'function', 'bigint', ...\n}", "import { isBigNumber, isObject } from './is.js';\n\n/**\n * Clone an object\n *\n * clone(x)\n *\n * Can clone any primitive type, array, and object.\n * If x has a function clone, this function will be invoked to clone the object.\n *\n * @param {*} x\n * @return {*} clone\n */\nexport function clone(x) {\n var type = typeof x;\n\n // immutable primitive types\n if (type === 'number' || type === 'bigint' || type === 'string' || type === 'boolean' || x === null || x === undefined) {\n return x;\n }\n\n // use clone function of the object when available\n if (typeof x.clone === 'function') {\n return x.clone();\n }\n\n // array\n if (Array.isArray(x)) {\n return x.map(function (value) {\n return clone(value);\n });\n }\n if (x instanceof Date) return new Date(x.valueOf());\n if (isBigNumber(x)) return x; // bignumbers are immutable\n\n // object\n if (isObject(x)) {\n return mapObject(x, clone);\n }\n throw new TypeError(\"Cannot clone: unknown type of value (value: \".concat(x, \")\"));\n}\n\n/**\n * Apply map to all properties of an object\n * @param {Object} object\n * @param {function} callback\n * @return {Object} Returns a copy of the object with mapped properties\n */\nexport function mapObject(object, callback) {\n var clone = {};\n for (var key in object) {\n if (hasOwnProperty(object, key)) {\n clone[key] = callback(object[key]);\n }\n }\n return clone;\n}\n\n/**\n * Extend object a with the properties of object b\n * @param {Object} a\n * @param {Object} b\n * @return {Object} a\n */\nexport function extend(a, b) {\n for (var prop in b) {\n if (hasOwnProperty(b, prop)) {\n a[prop] = b[prop];\n }\n }\n return a;\n}\n\n/**\n * Deep extend an object a with the properties of object b\n * @param {Object} a\n * @param {Object} b\n * @returns {Object}\n */\nexport function deepExtend(a, b) {\n // TODO: add support for Arrays to deepExtend\n if (Array.isArray(b)) {\n throw new TypeError('Arrays are not supported by deepExtend');\n }\n for (var prop in b) {\n // We check against prop not being in Object.prototype or Function.prototype\n // to prevent polluting for example Object.__proto__.\n if (hasOwnProperty(b, prop) && !(prop in Object.prototype) && !(prop in Function.prototype)) {\n if (b[prop] && b[prop].constructor === Object) {\n if (a[prop] === undefined) {\n a[prop] = {};\n }\n if (a[prop] && a[prop].constructor === Object) {\n deepExtend(a[prop], b[prop]);\n } else {\n a[prop] = b[prop];\n }\n } else if (Array.isArray(b[prop])) {\n throw new TypeError('Arrays are not supported by deepExtend');\n } else {\n a[prop] = b[prop];\n }\n }\n }\n return a;\n}\n\n/**\n * Deep test equality of all fields in two pairs of arrays or objects.\n * Compares values and functions strictly (ie. 2 is not the same as '2').\n * @param {Array | Object} a\n * @param {Array | Object} b\n * @returns {boolean}\n */\nexport function deepStrictEqual(a, b) {\n var prop, i, len;\n if (Array.isArray(a)) {\n if (!Array.isArray(b)) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (i = 0, len = a.length; i < len; i++) {\n if (!deepStrictEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n } else if (typeof a === 'function') {\n return a === b;\n } else if (a instanceof Object) {\n if (Array.isArray(b) || !(b instanceof Object)) {\n return false;\n }\n for (prop in a) {\n // noinspection JSUnfilteredForInLoop\n if (!(prop in b) || !deepStrictEqual(a[prop], b[prop])) {\n return false;\n }\n }\n for (prop in b) {\n // noinspection JSUnfilteredForInLoop\n if (!(prop in a)) {\n return false;\n }\n }\n return true;\n } else {\n return a === b;\n }\n}\n\n/**\n * Recursively flatten a nested object.\n * @param {Object} nestedObject\n * @return {Object} Returns the flattened object\n */\nexport function deepFlatten(nestedObject) {\n var flattenedObject = {};\n _deepFlatten(nestedObject, flattenedObject);\n return flattenedObject;\n}\n\n// helper function used by deepFlatten\nfunction _deepFlatten(nestedObject, flattenedObject) {\n for (var prop in nestedObject) {\n if (hasOwnProperty(nestedObject, prop)) {\n var value = nestedObject[prop];\n if (typeof value === 'object' && value !== null) {\n _deepFlatten(value, flattenedObject);\n } else {\n flattenedObject[prop] = value;\n }\n }\n }\n}\n\n/**\n * Test whether the current JavaScript engine supports Object.defineProperty\n * @returns {boolean} returns true if supported\n */\nexport function canDefineProperty() {\n // test needed for broken IE8 implementation\n try {\n if (Object.defineProperty) {\n Object.defineProperty({}, 'x', {\n get: function get() {\n return null;\n }\n });\n return true;\n }\n } catch (e) {}\n return false;\n}\n\n/**\n * Attach a lazy loading property to a constant.\n * The given function `fn` is called once when the property is first requested.\n *\n * @param {Object} object Object where to add the property\n * @param {string} prop Property name\n * @param {Function} valueResolver Function returning the property value. Called\n * without arguments.\n */\nexport function lazy(object, prop, valueResolver) {\n var _uninitialized = true;\n var _value;\n Object.defineProperty(object, prop, {\n get: function get() {\n if (_uninitialized) {\n _value = valueResolver();\n _uninitialized = false;\n }\n return _value;\n },\n set: function set(value) {\n _value = value;\n _uninitialized = false;\n },\n configurable: true,\n enumerable: true\n });\n}\n\n/**\n * Traverse a path into an object.\n * When a namespace is missing, it will be created\n * @param {Object} object\n * @param {string | string[]} path A dot separated string like 'name.space'\n * @return {Object} Returns the object at the end of the path\n */\nexport function traverse(object, path) {\n if (path && typeof path === 'string') {\n return traverse(object, path.split('.'));\n }\n var obj = object;\n if (path) {\n for (var i = 0; i < path.length; i++) {\n var key = path[i];\n if (!(key in obj)) {\n obj[key] = {};\n }\n obj = obj[key];\n }\n }\n return obj;\n}\n\n/**\n * A safe hasOwnProperty\n * @param {Object} object\n * @param {string} property\n */\nexport function hasOwnProperty(object, property) {\n return object && Object.hasOwnProperty.call(object, property);\n}\n\n/**\n * Test whether an object is a factory. a factory has fields:\n *\n * - factory: function (type: Object, config: Object, load: function, typed: function [, math: Object]) (required)\n * - name: string (optional)\n * - path: string A dot separated path (optional)\n * - math: boolean If true (false by default), the math namespace is passed\n * as fifth argument of the factory function\n *\n * @param {*} object\n * @returns {boolean}\n */\nexport function isLegacyFactory(object) {\n return object && typeof object.factory === 'function';\n}\n\n/**\n * Get a nested property from an object\n * @param {Object} object\n * @param {string | string[]} path\n * @returns {Object}\n */\nexport function get(object, path) {\n if (typeof path === 'string') {\n if (isPath(path)) {\n return get(object, path.split('.'));\n } else {\n return object[path];\n }\n }\n var child = object;\n for (var i = 0; i < path.length; i++) {\n var key = path[i];\n child = child ? child[key] : undefined;\n }\n return child;\n}\n\n/**\n * Set a nested property in an object\n * Mutates the object itself\n * If the path doesn't exist, it will be created\n * @param {Object} object\n * @param {string | string[]} path\n * @param {*} value\n * @returns {Object}\n */\nexport function set(object, path, value) {\n if (typeof path === 'string') {\n if (isPath(path)) {\n return set(object, path.split('.'), value);\n } else {\n object[path] = value;\n return object;\n }\n }\n var child = object;\n for (var i = 0; i < path.length - 1; i++) {\n var key = path[i];\n if (child[key] === undefined) {\n child[key] = {};\n }\n child = child[key];\n }\n if (path.length > 0) {\n var lastKey = path[path.length - 1];\n child[lastKey] = value;\n }\n return object;\n}\n\n/**\n * Create an object composed of the picked object properties\n * @param {Object} object\n * @param {string[]} properties\n * @param {function} [transform] Optional value to transform a value when picking it\n * @return {Object}\n */\nexport function pick(object, properties, transform) {\n var copy = {};\n for (var i = 0; i < properties.length; i++) {\n var key = properties[i];\n var value = get(object, key);\n if (value !== undefined) {\n set(copy, key, transform ? transform(value, key) : value);\n }\n }\n return copy;\n}\n\n/**\n * Shallow version of pick, creating an object composed of the picked object properties\n * but not for nested properties\n * @param {Object} object\n * @param {string[]} properties\n * @return {Object}\n */\nexport function pickShallow(object, properties) {\n var copy = {};\n for (var i = 0; i < properties.length; i++) {\n var key = properties[i];\n var value = object[key];\n if (value !== undefined) {\n copy[key] = value;\n }\n }\n return copy;\n}\n\n// helper function to test whether a string contains a path like 'user.name'\nfunction isPath(str) {\n return str.includes('.');\n}", "import { clone, deepExtend } from '../../utils/object.js';\nimport { DEFAULT_CONFIG } from '../config.js';\nexport var MATRIX_OPTIONS = ['Matrix', 'Array']; // valid values for option matrix\nexport var NUMBER_OPTIONS = ['number', 'BigNumber', 'Fraction']; // valid values for option number\n\nexport function configFactory(config, emit) {\n /**\n * Set configuration options for math.js, and get current options.\n * Will emit a 'config' event, with arguments (curr, prev, changes).\n *\n * This function is only available on a mathjs instance created using `create`.\n *\n * Syntax:\n *\n * math.config(config: Object): Object\n *\n * Examples:\n *\n *\n * import { create, all } from 'mathjs'\n *\n * // create a mathjs instance\n * const math = create(all)\n *\n * math.config().number // outputs 'number'\n * math.evaluate('0.4') // outputs number 0.4\n * math.config({number: 'Fraction'})\n * math.evaluate('0.4') // outputs Fraction 2/5\n *\n * @param {Object} [options] Available options:\n * {number} relTol\n * Minimum relative difference between two\n * compared values, used by all comparison functions.\n * {number} absTol\n * Minimum absolute difference between two\n * compared values, used by all comparison functions.\n * {string} matrix\n * A string 'Matrix' (default) or 'Array'.\n * {string} number\n * A string 'number' (default), 'BigNumber', 'bigint', or 'Fraction'\n * {number} precision\n * The number of significant digits for BigNumbers.\n * Not applicable for Numbers.\n * {string} parenthesis\n * How to display parentheses in LaTeX and string\n * output.\n * {string} randomSeed\n * Random seed for seeded pseudo random number generator.\n * Set to null to randomly seed.\n * @return {Object} Returns the current configuration\n */\n function _config(options) {\n if (options) {\n if (options.epsilon !== undefined) {\n // this if is only for backwards compatibility, it can be removed in the future.\n console.warn('Warning: The configuration option \"epsilon\" is deprecated. Use \"relTol\" and \"absTol\" instead.');\n var optionsFix = clone(options);\n optionsFix.relTol = options.epsilon;\n optionsFix.absTol = options.epsilon * 1e-3;\n delete optionsFix.epsilon;\n return _config(optionsFix);\n }\n var prev = clone(config);\n\n // validate some of the options\n validateOption(options, 'matrix', MATRIX_OPTIONS);\n validateOption(options, 'number', NUMBER_OPTIONS);\n\n // merge options\n deepExtend(config, options);\n var curr = clone(config);\n var changes = clone(options);\n\n // emit 'config' event\n emit('config', curr, prev, changes);\n return curr;\n } else {\n return clone(config);\n }\n }\n\n // attach the valid options to the function so they can be extended\n _config.MATRIX_OPTIONS = MATRIX_OPTIONS;\n _config.NUMBER_OPTIONS = NUMBER_OPTIONS;\n\n // attach the config properties as readonly properties to the config function\n Object.keys(DEFAULT_CONFIG).forEach(key => {\n Object.defineProperty(_config, key, {\n get: () => config[key],\n enumerable: true,\n configurable: true\n });\n });\n return _config;\n}\n\n/**\n * Validate an option\n * @param {Object} options Object with options\n * @param {string} name Name of the option to validate\n * @param {Array.} values Array with valid values for this option\n */\nfunction validateOption(options, name, values) {\n if (options[name] !== undefined && !values.includes(options[name])) {\n // unknown value\n console.warn('Warning: Unknown value \"' + options[name] + '\" for configuration option \"' + name + '\". ' + 'Available options: ' + values.map(value => JSON.stringify(value)).join(', ') + '.');\n }\n}", "export { createTyped } from './core/function/typed.js';\nexport { createResultSet } from './type/resultset/ResultSet.js';\nexport { createBigNumberClass } from './type/bignumber/BigNumber.js';\nexport { createComplexClass } from './type/complex/Complex.js';\nexport { createFractionClass } from './type/fraction/Fraction.js';\nexport { createRangeClass } from './type/matrix/Range.js';\nexport { createMatrixClass } from './type/matrix/Matrix.js';\nexport { createDenseMatrixClass } from './type/matrix/DenseMatrix.js';\nexport { createClone } from './function/utils/clone.js';\nexport { createIsInteger } from './function/utils/isInteger.js';\nexport { createIsNegative } from './function/utils/isNegative.js';\nexport { createIsNumeric } from './function/utils/isNumeric.js';\nexport { createHasNumericValue } from './function/utils/hasNumericValue.js';\nexport { createIsPositive } from './function/utils/isPositive.js';\nexport { createIsZero } from './function/utils/isZero.js';\nexport { createIsNaN } from './function/utils/isNaN.js';\nexport { createTypeOf } from './function/utils/typeOf.js';\nexport { createEqualScalar } from './function/relational/equalScalar.js';\nexport { createSparseMatrixClass } from './type/matrix/SparseMatrix.js';\nexport { createNumber } from './type/number.js';\nexport { createBigint } from './type/bigint.js';\nexport { createString } from './type/string.js';\nexport { createBoolean } from './type/boolean.js';\nexport { createBignumber } from './type/bignumber/function/bignumber.js';\nexport { createComplex } from './type/complex/function/complex.js';\nexport { createFraction } from './type/fraction/function/fraction.js';\nexport { createMatrix } from './type/matrix/function/matrix.js';\nexport { createMatrixFromFunction } from './function/matrix/matrixFromFunction.js';\nexport { createMatrixFromRows } from './function/matrix/matrixFromRows.js';\nexport { createMatrixFromColumns } from './function/matrix/matrixFromColumns.js';\nexport { createSplitUnit } from './type/unit/function/splitUnit.js';\nexport { createUnaryMinus } from './function/arithmetic/unaryMinus.js';\nexport { createUnaryPlus } from './function/arithmetic/unaryPlus.js';\nexport { createAbs } from './function/arithmetic/abs.js';\nexport { createApply } from './function/matrix/apply.js';\nexport { createAddScalar } from './function/arithmetic/addScalar.js';\nexport { createSubtractScalar } from './function/arithmetic/subtractScalar.js';\nexport { createCbrt } from './function/arithmetic/cbrt.js';\nexport { createCeil } from './function/arithmetic/ceil.js';\nexport { createCube } from './function/arithmetic/cube.js';\nexport { createExp } from './function/arithmetic/exp.js';\nexport { createExpm1 } from './function/arithmetic/expm1.js';\nexport { createFix } from './function/arithmetic/fix.js';\nexport { createFloor } from './function/arithmetic/floor.js';\nexport { createGcd } from './function/arithmetic/gcd.js';\nexport { createLcm } from './function/arithmetic/lcm.js';\nexport { createLog10 } from './function/arithmetic/log10.js';\nexport { createLog2 } from './function/arithmetic/log2.js';\nexport { createMod } from './function/arithmetic/mod.js';\nexport { createMultiplyScalar } from './function/arithmetic/multiplyScalar.js';\nexport { createMultiply } from './function/arithmetic/multiply.js';\nexport { createNthRoot } from './function/arithmetic/nthRoot.js';\nexport { createSign } from './function/arithmetic/sign.js';\nexport { createSqrt } from './function/arithmetic/sqrt.js';\nexport { createSquare } from './function/arithmetic/square.js';\nexport { createSubtract } from './function/arithmetic/subtract.js';\nexport { createXgcd } from './function/arithmetic/xgcd.js';\nexport { createInvmod } from './function/arithmetic/invmod.js';\nexport { createDotMultiply } from './function/arithmetic/dotMultiply.js';\nexport { createBitAnd } from './function/bitwise/bitAnd.js';\nexport { createBitNot } from './function/bitwise/bitNot.js';\nexport { createBitOr } from './function/bitwise/bitOr.js';\nexport { createBitXor } from './function/bitwise/bitXor.js';\nexport { createArg } from './function/complex/arg.js';\nexport { createConj } from './function/complex/conj.js';\nexport { createIm } from './function/complex/im.js';\nexport { createRe } from './function/complex/re.js';\nexport { createNot } from './function/logical/not.js';\nexport { createOr } from './function/logical/or.js';\nexport { createXor } from './function/logical/xor.js';\nexport { createConcat } from './function/matrix/concat.js';\nexport { createColumn } from './function/matrix/column.js';\nexport { createCount } from './function/matrix/count.js';\nexport { createCross } from './function/matrix/cross.js';\nexport { createDiag } from './function/matrix/diag.js';\nexport { createFilter } from './function/matrix/filter.js';\nexport { createFlatten } from './function/matrix/flatten.js';\nexport { createForEach } from './function/matrix/forEach.js';\nexport { createGetMatrixDataType } from './function/matrix/getMatrixDataType.js';\nexport { createIdentity } from './function/matrix/identity.js';\nexport { createKron } from './function/matrix/kron.js';\nexport { createMap } from './function/matrix/map.js';\nexport { createDiff } from './function/matrix/diff.js';\nexport { createOnes } from './function/matrix/ones.js';\nexport { createRange } from './function/matrix/range.js';\nexport { createReshape } from './function/matrix/reshape.js';\nexport { createResize } from './function/matrix/resize.js';\nexport { createRotate } from './function/matrix/rotate.js';\nexport { createRotationMatrix } from './function/matrix/rotationMatrix.js';\nexport { createRow } from './function/matrix/row.js';\nexport { createSize } from './function/matrix/size.js';\nexport { createSqueeze } from './function/matrix/squeeze.js';\nexport { createSubset } from './function/matrix/subset.js';\nexport { createTranspose } from './function/matrix/transpose.js';\nexport { createCtranspose } from './function/matrix/ctranspose.js';\nexport { createZeros } from './function/matrix/zeros.js';\nexport { createFft } from './function/matrix/fft.js';\nexport { createIfft } from './function/matrix/ifft.js';\nexport { createSolveODE } from './function/numeric/solveODE.js';\nexport { createErf } from './function/special/erf.js';\nexport { createZeta } from './function/special/zeta.js';\nexport { createMode } from './function/statistics/mode.js';\nexport { createProd } from './function/statistics/prod.js';\nexport { createFormat } from './function/string/format.js';\nexport { createBin } from './function/string/bin.js';\nexport { createOct } from './function/string/oct.js';\nexport { createHex } from './function/string/hex.js';\nexport { createPrint } from './function/string/print.js';\nexport { createTo } from './function/unit/to.js';\nexport { createIsPrime } from './function/utils/isPrime.js';\nexport { createNumeric } from './function/utils/numeric.js';\nexport { createDivideScalar } from './function/arithmetic/divideScalar.js';\nexport { createPow } from './function/arithmetic/pow.js';\nexport { createRound } from './function/arithmetic/round.js';\nexport { createLog } from './function/arithmetic/log.js';\nexport { createLog1p } from './function/arithmetic/log1p.js';\nexport { createNthRoots } from './function/arithmetic/nthRoots.js';\nexport { createDotPow } from './function/arithmetic/dotPow.js';\nexport { createDotDivide } from './function/arithmetic/dotDivide.js';\nexport { createLsolve } from './function/algebra/solver/lsolve.js';\nexport { createUsolve } from './function/algebra/solver/usolve.js';\nexport { createLsolveAll } from './function/algebra/solver/lsolveAll.js';\nexport { createUsolveAll } from './function/algebra/solver/usolveAll.js';\nexport { createLeftShift } from './function/bitwise/leftShift.js';\nexport { createRightArithShift } from './function/bitwise/rightArithShift.js';\nexport { createRightLogShift } from './function/bitwise/rightLogShift.js';\nexport { createAnd } from './function/logical/and.js';\nexport { createCompare } from './function/relational/compare.js';\nexport { createCompareNatural } from './function/relational/compareNatural.js';\nexport { createCompareText } from './function/relational/compareText.js';\nexport { createEqual } from './function/relational/equal.js';\nexport { createEqualText } from './function/relational/equalText.js';\nexport { createSmaller } from './function/relational/smaller.js';\nexport { createSmallerEq } from './function/relational/smallerEq.js';\nexport { createLarger } from './function/relational/larger.js';\nexport { createLargerEq } from './function/relational/largerEq.js';\nexport { createDeepEqual } from './function/relational/deepEqual.js';\nexport { createUnequal } from './function/relational/unequal.js';\nexport { createPartitionSelect } from './function/matrix/partitionSelect.js';\nexport { createSort } from './function/matrix/sort.js';\nexport { createMax } from './function/statistics/max.js';\nexport { createMin } from './function/statistics/min.js';\nexport { createImmutableDenseMatrixClass } from './type/matrix/ImmutableDenseMatrix.js';\nexport { createIndexClass } from './type/matrix/MatrixIndex.js';\nexport { createFibonacciHeapClass } from './type/matrix/FibonacciHeap.js';\nexport { createSpaClass } from './type/matrix/Spa.js';\nexport { createUnitClass } from './type/unit/Unit.js';\nexport { createUnitFunction } from './type/unit/function/unit.js';\nexport { createSparse } from './type/matrix/function/sparse.js';\nexport { createCreateUnit } from './type/unit/function/createUnit.js';\nexport { createAcos } from './function/trigonometry/acos.js';\nexport { createAcosh } from './function/trigonometry/acosh.js';\nexport { createAcot } from './function/trigonometry/acot.js';\nexport { createAcoth } from './function/trigonometry/acoth.js';\nexport { createAcsc } from './function/trigonometry/acsc.js';\nexport { createAcsch } from './function/trigonometry/acsch.js';\nexport { createAsec } from './function/trigonometry/asec.js';\nexport { createAsech } from './function/trigonometry/asech.js';\nexport { createAsin } from './function/trigonometry/asin.js';\nexport { createAsinh } from './function/trigonometry/asinh.js';\nexport { createAtan } from './function/trigonometry/atan.js';\nexport { createAtan2 } from './function/trigonometry/atan2.js';\nexport { createAtanh } from './function/trigonometry/atanh.js';\nexport { createCos } from './function/trigonometry/cos.js';\nexport { createCosh } from './function/trigonometry/cosh.js';\nexport { createCot } from './function/trigonometry/cot.js';\nexport { createCoth } from './function/trigonometry/coth.js';\nexport { createCsc } from './function/trigonometry/csc.js';\nexport { createCsch } from './function/trigonometry/csch.js';\nexport { createSec } from './function/trigonometry/sec.js';\nexport { createSech } from './function/trigonometry/sech.js';\nexport { createSin } from './function/trigonometry/sin.js';\nexport { createSinh } from './function/trigonometry/sinh.js';\nexport { createTan } from './function/trigonometry/tan.js';\nexport { createTanh } from './function/trigonometry/tanh.js';\nexport { createSetCartesian } from './function/set/setCartesian.js';\nexport { createSetDifference } from './function/set/setDifference.js';\nexport { createSetDistinct } from './function/set/setDistinct.js';\nexport { createSetIntersect } from './function/set/setIntersect.js';\nexport { createSetIsSubset } from './function/set/setIsSubset.js';\nexport { createSetMultiplicity } from './function/set/setMultiplicity.js';\nexport { createSetPowerset } from './function/set/setPowerset.js';\nexport { createSetSize } from './function/set/setSize.js';\nexport { createSetSymDifference } from './function/set/setSymDifference.js';\nexport { createSetUnion } from './function/set/setUnion.js';\nexport { createAdd } from './function/arithmetic/add.js';\nexport { createHypot } from './function/arithmetic/hypot.js';\nexport { createNorm } from './function/arithmetic/norm.js';\nexport { createDot } from './function/matrix/dot.js';\nexport { createTrace } from './function/matrix/trace.js';\nexport { createIndex } from './type/matrix/function/index.js';\nexport { createNode } from './expression/node/Node.js';\nexport { createAccessorNode } from './expression/node/AccessorNode.js';\nexport { createArrayNode } from './expression/node/ArrayNode.js';\nexport { createAssignmentNode } from './expression/node/AssignmentNode.js';\nexport { createBlockNode } from './expression/node/BlockNode.js';\nexport { createConditionalNode } from './expression/node/ConditionalNode.js';\nexport { createConstantNode } from './expression/node/ConstantNode.js';\nexport { createFunctionAssignmentNode } from './expression/node/FunctionAssignmentNode.js';\nexport { createIndexNode } from './expression/node/IndexNode.js';\nexport { createObjectNode } from './expression/node/ObjectNode.js';\nexport { createOperatorNode } from './expression/node/OperatorNode.js';\nexport { createParenthesisNode } from './expression/node/ParenthesisNode.js';\nexport { createRangeNode } from './expression/node/RangeNode.js';\nexport { createRelationalNode } from './expression/node/RelationalNode.js';\nexport { createSymbolNode } from './expression/node/SymbolNode.js';\nexport { createFunctionNode } from './expression/node/FunctionNode.js';\nexport { createParse } from './expression/parse.js';\nexport { createCompile } from './expression/function/compile.js';\nexport { createEvaluate } from './expression/function/evaluate.js';\nexport { createParserClass } from './expression/Parser.js';\nexport { createParser } from './expression/function/parser.js';\nexport { createLup } from './function/algebra/decomposition/lup.js';\nexport { createQr } from './function/algebra/decomposition/qr.js';\nexport { createSlu } from './function/algebra/decomposition/slu.js';\nexport { createLusolve } from './function/algebra/solver/lusolve.js';\nexport { createPolynomialRoot } from './function/algebra/polynomialRoot.js';\nexport { createHelpClass } from './expression/Help.js';\nexport { createChainClass } from './type/chain/Chain.js';\nexport { createHelp } from './expression/function/help.js';\nexport { createChain } from './type/chain/function/chain.js';\nexport { createDet } from './function/matrix/det.js';\nexport { createInv } from './function/matrix/inv.js';\nexport { createPinv } from './function/matrix/pinv.js';\nexport { createEigs } from './function/matrix/eigs.js';\nexport { createExpm } from './function/matrix/expm.js';\nexport { createSqrtm } from './function/matrix/sqrtm.js';\nexport { createSylvester } from './function/algebra/sylvester.js';\nexport { createSchur } from './function/algebra/decomposition/schur.js';\nexport { createLyap } from './function/algebra/lyap.js';\nexport { createDivide } from './function/arithmetic/divide.js';\nexport { createDistance } from './function/geometry/distance.js';\nexport { createIntersect } from './function/geometry/intersect.js';\nexport { createSum } from './function/statistics/sum.js';\nexport { createCumSum } from './function/statistics/cumsum.js';\nexport { createMean } from './function/statistics/mean.js';\nexport { createMedian } from './function/statistics/median.js';\nexport { createMad } from './function/statistics/mad.js';\nexport { createVariance } from './function/statistics/variance.js';\nexport { createQuantileSeq } from './function/statistics/quantileSeq.js';\nexport { createStd } from './function/statistics/std.js';\nexport { createCorr } from './function/statistics/corr.js';\nexport { createCombinations } from './function/probability/combinations.js';\nexport { createCombinationsWithRep } from './function/probability/combinationsWithRep.js';\nexport { createGamma } from './function/probability/gamma.js';\nexport { createLgamma } from './function/probability/lgamma.js';\nexport { createFactorial } from './function/probability/factorial.js';\nexport { createKldivergence } from './function/probability/kldivergence.js';\nexport { createMultinomial } from './function/probability/multinomial.js';\nexport { createPermutations } from './function/probability/permutations.js';\nexport { createPickRandom } from './function/probability/pickRandom.js';\nexport { createRandom } from './function/probability/random.js';\nexport { createRandomInt } from './function/probability/randomInt.js';\nexport { createStirlingS2 } from './function/combinatorics/stirlingS2.js';\nexport { createBellNumbers } from './function/combinatorics/bellNumbers.js';\nexport { createCatalan } from './function/combinatorics/catalan.js';\nexport { createComposition } from './function/combinatorics/composition.js';\nexport { createLeafCount } from './function/algebra/leafCount.js';\nexport { createSimplify } from './function/algebra/simplify.js';\nexport { createSimplifyConstant } from './function/algebra/simplifyConstant.js';\nexport { createSimplifyCore } from './function/algebra/simplifyCore.js';\nexport { createResolve } from './function/algebra/resolve.js';\nexport { createSymbolicEqual } from './function/algebra/symbolicEqual.js';\nexport { createDerivative } from './function/algebra/derivative.js';\nexport { createRationalize } from './function/algebra/rationalize.js';\nexport { createZpk2tf } from './function/signal/zpk2tf.js';\nexport { createFreqz } from './function/signal/freqz.js';\nexport { createReviver } from './json/reviver.js';\nexport { createReplacer } from './json/replacer.js';\nexport { createE, createUppercaseE, createFalse, createI, createInfinity, createLN10, createLN2, createLOG10E, createLOG2E, createNaN, createNull, createPhi, createPi, createUppercasePi, createSQRT1_2,\n// eslint-disable-line camelcase\ncreateSQRT2, createTau, createTrue, createVersion } from './constants.js';\nexport { createAtomicMass, createAvogadro, createBohrMagneton, createBohrRadius, createBoltzmann, createClassicalElectronRadius, createConductanceQuantum, createCoulomb, createDeuteronMass, createEfimovFactor, createElectricConstant, createElectronMass, createElementaryCharge, createFaraday, createFermiCoupling, createFineStructure, createFirstRadiation, createGasConstant, createGravitationConstant, createGravity, createHartreeEnergy, createInverseConductanceQuantum, createKlitzing, createLoschmidt, createMagneticConstant, createMagneticFluxQuantum, createMolarMass, createMolarMassC12, createMolarPlanckConstant, createMolarVolume, createNeutronMass, createNuclearMagneton, createPlanckCharge, createPlanckConstant, createPlanckLength, createPlanckMass, createPlanckTemperature, createPlanckTime, createProtonMass, createQuantumOfCirculation, createReducedPlanckConstant, createRydberg, createSackurTetrode, createSecondRadiation, createSpeedOfLight, createStefanBoltzmann, createThomsonCrossSection, createVacuumImpedance, createWeakMixingAngle, createWienDisplacement } from './type/unit/physicalConstants.js';\nexport { createApplyTransform } from './expression/transform/apply.transform.js';\nexport { createColumnTransform } from './expression/transform/column.transform.js';\nexport { createFilterTransform } from './expression/transform/filter.transform.js';\nexport { createForEachTransform } from './expression/transform/forEach.transform.js';\nexport { createIndexTransform } from './expression/transform/index.transform.js';\nexport { createMapTransform } from './expression/transform/map.transform.js';\nexport { createMaxTransform } from './expression/transform/max.transform.js';\nexport { createMeanTransform } from './expression/transform/mean.transform.js';\nexport { createMinTransform } from './expression/transform/min.transform.js';\nexport { createRangeTransform } from './expression/transform/range.transform.js';\nexport { createRowTransform } from './expression/transform/row.transform.js';\nexport { createSubsetTransform } from './expression/transform/subset.transform.js';\nexport { createConcatTransform } from './expression/transform/concat.transform.js';\nexport { createDiffTransform } from './expression/transform/diff.transform.js';\nexport { createStdTransform } from './expression/transform/std.transform.js';\nexport { createSumTransform } from './expression/transform/sum.transform.js';\nexport { createQuantileSeqTransform } from './expression/transform/quantileSeq.transform.js';\nexport { createCumSumTransform } from './expression/transform/cumsum.transform.js';\nexport { createVarianceTransform } from './expression/transform/variance.transform.js';\nexport { createPrintTransform } from './expression/transform/print.transform.js';\nexport { createAndTransform } from './expression/transform/and.transform.js';\nexport { createOrTransform } from './expression/transform/or.transform.js';\nexport { createBitAndTransform } from './expression/transform/bitAnd.transform.js';\nexport { createBitOrTransform } from './expression/transform/bitOr.transform.js';", "/**\n * Create a typed-function which checks the types of the arguments and\n * can match them against multiple provided signatures. The typed-function\n * automatically converts inputs in order to find a matching signature.\n * Typed functions throw informative errors in case of wrong input arguments.\n *\n * See the library [typed-function](https://github.com/josdejong/typed-function)\n * for detailed documentation.\n *\n * Syntax:\n *\n * math.typed(name, signatures) : function\n * math.typed(signatures) : function\n *\n * Examples:\n *\n * // create a typed function with multiple types per argument (type union)\n * const fn2 = typed({\n * 'number | boolean': function (b) {\n * return 'b is a number or boolean'\n * },\n * 'string, number | boolean': function (a, b) {\n * return 'a is a string, b is a number or boolean'\n * }\n * })\n *\n * // create a typed function with an any type argument\n * const log = typed({\n * 'string, any': function (event, data) {\n * console.log('event: ' + event + ', data: ' + JSON.stringify(data))\n * }\n * })\n *\n * @param {string} [name] Optional name for the typed-function\n * @param {Object} signatures Object with one or multiple function signatures\n * @returns {function} The created typed-function.\n */\n\nimport typedFunction from 'typed-function';\nimport { factory } from '../../utils/factory.js';\nimport { isAccessorNode, isArray, isArrayNode, isAssignmentNode, isBigInt, isBigNumber, isBlockNode, isBoolean, isChain, isCollection, isComplex, isConditionalNode, isConstantNode, isDate, isDenseMatrix, isFraction, isFunction, isFunctionAssignmentNode, isFunctionNode, isHelp, isIndex, isIndexNode, isMap, isMatrix, isNode, isNull, isNumber, isObject, isObjectNode, isOperatorNode, isParenthesisNode, isRange, isRangeNode, isRegExp, isRelationalNode, isResultSet, isSparseMatrix, isString, isSymbolNode, isUndefined, isUnit } from '../../utils/is.js';\nimport { digits } from '../../utils/number.js';\n\n// returns a new instance of typed-function\nvar _createTyped2 = function _createTyped() {\n // initially, return the original instance of typed-function\n // consecutively, return a new instance from typed.create.\n _createTyped2 = typedFunction.create;\n return typedFunction;\n};\nvar dependencies = ['?BigNumber', '?Complex', '?DenseMatrix', '?Fraction'];\n\n/**\n * Factory function for creating a new typed instance\n * @param {Object} dependencies Object with data types like Complex and BigNumber\n * @returns {Function}\n */\nexport var createTyped = /* #__PURE__ */factory('typed', dependencies, function createTyped(_ref) {\n var {\n BigNumber,\n Complex,\n DenseMatrix,\n Fraction\n } = _ref;\n // TODO: typed-function must be able to silently ignore signatures with unknown data types\n\n // get a new instance of typed-function\n var typed = _createTyped2();\n\n // define all types. The order of the types determines in which order function\n // arguments are type-checked (so for performance it's important to put the\n // most used types first).\n typed.clear();\n typed.addTypes([{\n name: 'number',\n test: isNumber\n }, {\n name: 'Complex',\n test: isComplex\n }, {\n name: 'BigNumber',\n test: isBigNumber\n }, {\n name: 'bigint',\n test: isBigInt\n }, {\n name: 'Fraction',\n test: isFraction\n }, {\n name: 'Unit',\n test: isUnit\n },\n // The following type matches a valid variable name, i.e., an alphanumeric\n // string starting with an alphabetic character. It is used (at least)\n // in the definition of the derivative() function, as the argument telling\n // what to differentiate over must (currently) be a variable.\n // TODO: deprecate the identifier type (it's not used anymore, see https://github.com/josdejong/mathjs/issues/3253)\n {\n name: 'identifier',\n test: s => isString && /^(?:[A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C8A\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CD\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7DC\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDDC0-\\uDDF3\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDD4A-\\uDD65\\uDD6F-\\uDD85\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDEC2-\\uDEC4\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE3F\\uDE40\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61\\uDF80-\\uDF89\\uDF8B\\uDF8E\\uDF90-\\uDFB5\\uDFB7\\uDFD1\\uDFD3]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8\\uDFC0-\\uDFE0]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDF02\\uDF04-\\uDF10\\uDF12-\\uDF33\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD80E\\uD80F\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883\\uD885-\\uD887][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2F\\uDC41-\\uDC46\\uDC60-\\uDFFF]|\\uD810[\\uDC00-\\uDFFA]|\\uD811[\\uDC00-\\uDE46]|\\uD818[\\uDD00-\\uDD1D]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDD40-\\uDD6C\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDCFF-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD32\\uDD50-\\uDD52\\uDD55\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E\\uDF25-\\uDF2A]|\\uD838[\\uDC30-\\uDC6D\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDCD0-\\uDCEB\\uDDD0-\\uDDED\\uDDF0\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF39\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0\\uDFF0-\\uDFFF]|\\uD87B[\\uDC00-\\uDE5D]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A\\uDF50-\\uDFFF]|\\uD888[\\uDC00-\\uDFAF])(?:[0-9A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C8A\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CD\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7DC\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDDC0-\\uDDF3\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDD4A-\\uDD65\\uDD6F-\\uDD85\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDEC2-\\uDEC4\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE3F\\uDE40\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61\\uDF80-\\uDF89\\uDF8B\\uDF8E\\uDF90-\\uDFB5\\uDFB7\\uDFD1\\uDFD3]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8\\uDFC0-\\uDFE0]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDF02\\uDF04-\\uDF10\\uDF12-\\uDF33\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD80E\\uD80F\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883\\uD885-\\uD887][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2F\\uDC41-\\uDC46\\uDC60-\\uDFFF]|\\uD810[\\uDC00-\\uDFFA]|\\uD811[\\uDC00-\\uDE46]|\\uD818[\\uDD00-\\uDD1D]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDD40-\\uDD6C\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDCFF-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD32\\uDD50-\\uDD52\\uDD55\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E\\uDF25-\\uDF2A]|\\uD838[\\uDC30-\\uDC6D\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDCD0-\\uDCEB\\uDDD0-\\uDDED\\uDDF0\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF39\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0\\uDFF0-\\uDFFF]|\\uD87B[\\uDC00-\\uDE5D]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A\\uDF50-\\uDFFF]|\\uD888[\\uDC00-\\uDFAF])*$/.test(s)\n }, {\n name: 'string',\n test: isString\n }, {\n name: 'Chain',\n test: isChain\n }, {\n name: 'Array',\n test: isArray\n }, {\n name: 'Matrix',\n test: isMatrix\n }, {\n name: 'DenseMatrix',\n test: isDenseMatrix\n }, {\n name: 'SparseMatrix',\n test: isSparseMatrix\n }, {\n name: 'Range',\n test: isRange\n }, {\n name: 'Index',\n test: isIndex\n }, {\n name: 'boolean',\n test: isBoolean\n }, {\n name: 'ResultSet',\n test: isResultSet\n }, {\n name: 'Help',\n test: isHelp\n }, {\n name: 'function',\n test: isFunction\n }, {\n name: 'Date',\n test: isDate\n }, {\n name: 'RegExp',\n test: isRegExp\n }, {\n name: 'null',\n test: isNull\n }, {\n name: 'undefined',\n test: isUndefined\n }, {\n name: 'AccessorNode',\n test: isAccessorNode\n }, {\n name: 'ArrayNode',\n test: isArrayNode\n }, {\n name: 'AssignmentNode',\n test: isAssignmentNode\n }, {\n name: 'BlockNode',\n test: isBlockNode\n }, {\n name: 'ConditionalNode',\n test: isConditionalNode\n }, {\n name: 'ConstantNode',\n test: isConstantNode\n }, {\n name: 'FunctionNode',\n test: isFunctionNode\n }, {\n name: 'FunctionAssignmentNode',\n test: isFunctionAssignmentNode\n }, {\n name: 'IndexNode',\n test: isIndexNode\n }, {\n name: 'Node',\n test: isNode\n }, {\n name: 'ObjectNode',\n test: isObjectNode\n }, {\n name: 'OperatorNode',\n test: isOperatorNode\n }, {\n name: 'ParenthesisNode',\n test: isParenthesisNode\n }, {\n name: 'RangeNode',\n test: isRangeNode\n }, {\n name: 'RelationalNode',\n test: isRelationalNode\n }, {\n name: 'SymbolNode',\n test: isSymbolNode\n }, {\n name: 'Map',\n test: isMap\n }, {\n name: 'Object',\n test: isObject\n } // order 'Object' last, it matches on other classes too\n ]);\n typed.addConversions([{\n from: 'number',\n to: 'BigNumber',\n convert: function convert(x) {\n if (!BigNumber) {\n throwNoBignumber(x);\n }\n\n // note: conversion from number to BigNumber can fail if x has >15 digits\n if (digits(x) > 15) {\n throw new TypeError('Cannot implicitly convert a number with >15 significant digits to BigNumber ' + '(value: ' + x + '). ' + 'Use function bignumber(x) to convert to BigNumber.');\n }\n return new BigNumber(x);\n }\n }, {\n from: 'number',\n to: 'Complex',\n convert: function convert(x) {\n if (!Complex) {\n throwNoComplex(x);\n }\n return new Complex(x, 0);\n }\n }, {\n from: 'BigNumber',\n to: 'Complex',\n convert: function convert(x) {\n if (!Complex) {\n throwNoComplex(x);\n }\n return new Complex(x.toNumber(), 0);\n }\n }, {\n from: 'bigint',\n to: 'number',\n convert: function convert(x) {\n if (x > Number.MAX_SAFE_INTEGER) {\n throw new TypeError('Cannot implicitly convert bigint to number: ' + 'value exceeds the max safe integer value (value: ' + x + ')');\n }\n return Number(x);\n }\n }, {\n from: 'bigint',\n to: 'BigNumber',\n convert: function convert(x) {\n if (!BigNumber) {\n throwNoBignumber(x);\n }\n return new BigNumber(x.toString());\n }\n }, {\n from: 'bigint',\n to: 'Fraction',\n convert: function convert(x) {\n if (!Fraction) {\n throwNoFraction(x);\n }\n return new Fraction(x.toString());\n }\n }, {\n from: 'Fraction',\n to: 'BigNumber',\n convert: function convert(x) {\n throw new TypeError('Cannot implicitly convert a Fraction to BigNumber or vice versa. ' + 'Use function bignumber(x) to convert to BigNumber or fraction(x) to convert to Fraction.');\n }\n }, {\n from: 'Fraction',\n to: 'Complex',\n convert: function convert(x) {\n if (!Complex) {\n throwNoComplex(x);\n }\n return new Complex(x.valueOf(), 0);\n }\n }, {\n from: 'number',\n to: 'Fraction',\n convert: function convert(x) {\n if (!Fraction) {\n throwNoFraction(x);\n }\n var f = new Fraction(x);\n if (f.valueOf() !== x) {\n throw new TypeError('Cannot implicitly convert a number to a Fraction when there will be a loss of precision ' + '(value: ' + x + '). ' + 'Use function fraction(x) to convert to Fraction.');\n }\n return f;\n }\n }, {\n // FIXME: add conversion from Fraction to number, for example for `sqrt(fraction(1,3))`\n // from: 'Fraction',\n // to: 'number',\n // convert: function (x) {\n // return x.valueOf()\n // }\n // }, {\n from: 'string',\n to: 'number',\n convert: function convert(x) {\n var n = Number(x);\n if (isNaN(n)) {\n throw new Error('Cannot convert \"' + x + '\" to a number');\n }\n return n;\n }\n }, {\n from: 'string',\n to: 'BigNumber',\n convert: function convert(x) {\n if (!BigNumber) {\n throwNoBignumber(x);\n }\n try {\n return new BigNumber(x);\n } catch (err) {\n throw new Error('Cannot convert \"' + x + '\" to BigNumber');\n }\n }\n }, {\n from: 'string',\n to: 'bigint',\n convert: function convert(x) {\n try {\n return BigInt(x);\n } catch (err) {\n throw new Error('Cannot convert \"' + x + '\" to BigInt');\n }\n }\n }, {\n from: 'string',\n to: 'Fraction',\n convert: function convert(x) {\n if (!Fraction) {\n throwNoFraction(x);\n }\n try {\n return new Fraction(x);\n } catch (err) {\n throw new Error('Cannot convert \"' + x + '\" to Fraction');\n }\n }\n }, {\n from: 'string',\n to: 'Complex',\n convert: function convert(x) {\n if (!Complex) {\n throwNoComplex(x);\n }\n try {\n return new Complex(x);\n } catch (err) {\n throw new Error('Cannot convert \"' + x + '\" to Complex');\n }\n }\n }, {\n from: 'boolean',\n to: 'number',\n convert: function convert(x) {\n return +x;\n }\n }, {\n from: 'boolean',\n to: 'BigNumber',\n convert: function convert(x) {\n if (!BigNumber) {\n throwNoBignumber(x);\n }\n return new BigNumber(+x);\n }\n }, {\n from: 'boolean',\n to: 'bigint',\n convert: function convert(x) {\n return BigInt(+x);\n }\n }, {\n from: 'boolean',\n to: 'Fraction',\n convert: function convert(x) {\n if (!Fraction) {\n throwNoFraction(x);\n }\n return new Fraction(+x);\n }\n }, {\n from: 'boolean',\n to: 'string',\n convert: function convert(x) {\n return String(x);\n }\n }, {\n from: 'Array',\n to: 'Matrix',\n convert: function convert(array) {\n if (!DenseMatrix) {\n throwNoMatrix();\n }\n return new DenseMatrix(array);\n }\n }, {\n from: 'Matrix',\n to: 'Array',\n convert: function convert(matrix) {\n return matrix.valueOf();\n }\n }]);\n\n // Provide a suggestion on how to call a function elementwise\n // This was added primarily as guidance for the v10 -> v11 transition,\n // and could potentially be removed in the future if it no longer seems\n // to be helpful.\n typed.onMismatch = (name, args, signatures) => {\n var usualError = typed.createError(name, args, signatures);\n if (['wrongType', 'mismatch'].includes(usualError.data.category) && args.length === 1 && isCollection(args[0]) &&\n // check if the function can be unary:\n signatures.some(sig => !sig.params.includes(','))) {\n var err = new TypeError(\"Function '\".concat(name, \"' doesn't apply to matrices. To call it \") + \"elementwise on a matrix 'M', try 'map(M, \".concat(name, \")'.\"));\n err.data = usualError.data;\n throw err;\n }\n throw usualError;\n };\n\n // Provide a suggestion on how to call a function elementwise\n // This was added primarily as guidance for the v10 -> v11 transition,\n // and could potentially be removed in the future if it no longer seems\n // to be helpful.\n typed.onMismatch = (name, args, signatures) => {\n var usualError = typed.createError(name, args, signatures);\n if (['wrongType', 'mismatch'].includes(usualError.data.category) && args.length === 1 && isCollection(args[0]) &&\n // check if the function can be unary:\n signatures.some(sig => !sig.params.includes(','))) {\n var err = new TypeError(\"Function '\".concat(name, \"' doesn't apply to matrices. To call it \") + \"elementwise on a matrix 'M', try 'map(M, \".concat(name, \")'.\"));\n err.data = usualError.data;\n throw err;\n }\n throw usualError;\n };\n return typed;\n});\nfunction throwNoBignumber(x) {\n throw new Error(\"Cannot convert value \".concat(x, \" into a BigNumber: no class 'BigNumber' provided\"));\n}\nfunction throwNoComplex(x) {\n throw new Error(\"Cannot convert value \".concat(x, \" into a Complex number: no class 'Complex' provided\"));\n}\nfunction throwNoMatrix() {\n throw new Error('Cannot convert array into a Matrix: no class \\'DenseMatrix\\' provided');\n}\nfunction throwNoFraction(x) {\n throw new Error(\"Cannot convert value \".concat(x, \" into a Fraction, no class 'Fraction' provided.\"));\n}", "import { pickShallow } from './object.js';\n\n/**\n * Create a factory function, which can be used to inject dependencies.\n *\n * The created functions are memoized, a consecutive call of the factory\n * with the exact same inputs will return the same function instance.\n * The memoized cache is exposed on `factory.cache` and can be cleared\n * if needed.\n *\n * Example:\n *\n * const name = 'log'\n * const dependencies = ['config', 'typed', 'divideScalar', 'Complex']\n *\n * export const createLog = factory(name, dependencies, ({ typed, config, divideScalar, Complex }) => {\n * // ... create the function log here and return it\n * }\n *\n * @param {string} name Name of the function to be created\n * @param {string[]} dependencies The names of all required dependencies\n * @param {function} create Callback function called with an object with all dependencies\n * @param {Object} [meta] Optional object with meta information that will be attached\n * to the created factory function as property `meta`.\n * @returns {function}\n */\nexport function factory(name, dependencies, create, meta) {\n function assertAndCreate(scope) {\n // we only pass the requested dependencies to the factory function\n // to prevent functions to rely on dependencies that are not explicitly\n // requested.\n var deps = pickShallow(scope, dependencies.map(stripOptionalNotation));\n assertDependencies(name, dependencies, scope);\n return create(deps);\n }\n assertAndCreate.isFactory = true;\n assertAndCreate.fn = name;\n assertAndCreate.dependencies = dependencies.slice().sort();\n if (meta) {\n assertAndCreate.meta = meta;\n }\n return assertAndCreate;\n}\n\n/**\n * Sort all factories such that when loading in order, the dependencies are resolved.\n *\n * @param {Array} factories\n * @returns {Array} Returns a new array with the sorted factories.\n */\nexport function sortFactories(factories) {\n var factoriesByName = {};\n factories.forEach(factory => {\n factoriesByName[factory.fn] = factory;\n });\n function containsDependency(factory, dependency) {\n // TODO: detect circular references\n if (isFactory(factory)) {\n if (factory.dependencies.includes(dependency.fn || dependency.name)) {\n return true;\n }\n if (factory.dependencies.some(d => containsDependency(factoriesByName[d], dependency))) {\n return true;\n }\n }\n return false;\n }\n var sorted = [];\n function addFactory(factory) {\n var index = 0;\n while (index < sorted.length && !containsDependency(sorted[index], factory)) {\n index++;\n }\n sorted.splice(index, 0, factory);\n }\n\n // sort regular factory functions\n factories.filter(isFactory).forEach(addFactory);\n\n // sort legacy factory functions AFTER the regular factory functions\n factories.filter(factory => !isFactory(factory)).forEach(addFactory);\n return sorted;\n}\n\n// TODO: comment or cleanup if unused in the end\nexport function create(factories) {\n var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n sortFactories(factories).forEach(factory => factory(scope));\n return scope;\n}\n\n/**\n * Test whether an object is a factory. This is the case when it has\n * properties name, dependencies, and a function create.\n * @param {*} obj\n * @returns {boolean}\n */\nexport function isFactory(obj) {\n return typeof obj === 'function' && typeof obj.fn === 'string' && Array.isArray(obj.dependencies);\n}\n\n/**\n * Assert that all dependencies of a list with dependencies are available in the provided scope.\n *\n * Will throw an exception when there are dependencies missing.\n *\n * @param {string} name Name for the function to be created. Used to generate a useful error message\n * @param {string[]} dependencies\n * @param {Object} scope\n */\nexport function assertDependencies(name, dependencies, scope) {\n var allDefined = dependencies.filter(dependency => !isOptionalDependency(dependency)) // filter optionals\n .every(dependency => scope[dependency] !== undefined);\n if (!allDefined) {\n var missingDependencies = dependencies.filter(dependency => scope[dependency] === undefined);\n\n // TODO: create a custom error class for this, a MathjsError or something like that\n throw new Error(\"Cannot create function \\\"\".concat(name, \"\\\", \") + \"some dependencies are missing: \".concat(missingDependencies.map(d => \"\\\"\".concat(d, \"\\\"\")).join(', '), \".\"));\n }\n}\nexport function isOptionalDependency(dependency) {\n return dependency && dependency[0] === '?';\n}\nexport function stripOptionalNotation(dependency) {\n return dependency && dependency[0] === '?' ? dependency.slice(1) : dependency;\n}", "import { isBigNumber, isNumber, isObject } from './is.js';\n\n/**\n * @typedef {{sign: '+' | '-' | '', coefficients: number[], exponent: number}} SplitValue\n */\n\n/**\n * Check if a number is integer\n * @param {number | boolean} value\n * @return {boolean} isInteger\n */\nexport function isInteger(value) {\n if (typeof value === 'boolean') {\n return true;\n }\n return isFinite(value) ? value === Math.round(value) : false;\n}\n\n/**\n * Check if a string contains an integer\n * @param {string} str\n * @return {boolean} isInteger\n */\nexport function isIntegerStr(str) {\n // regex matching strings like \"123\" and \"-123\"\n return /^-?\\d+$/.test(str);\n}\n\n/**\n * Ensure the number type is compatible with the provided value.\n * If not, return 'number' instead.\n *\n * For example:\n *\n * safeNumberType('2.3', { number: 'bigint', numberFallback: 'number' })\n *\n * will return 'number' and not 'bigint' because trying to create a bigint with\n * value 2.3 would throw an exception.\n *\n * @param {string} numberStr\n * @param {{\n * number: 'number' | 'BigNumber' | 'bigint' | 'Fraction'\n * numberFallback: 'number' | 'BigNumber'\n * }} config\n * @returns {'number' | 'BigNumber' | 'bigint' | 'Fraction'}\n */\nexport function safeNumberType(numberStr, config) {\n if (config.number === 'bigint' && !isIntegerStr(numberStr)) {\n return config.numberFallback;\n }\n return config.number;\n}\n\n/**\n * Calculate the sign of a number\n * @param {number} x\n * @returns {number}\n */\nexport var sign = Math.sign || function (x) {\n if (x > 0) {\n return 1;\n } else if (x < 0) {\n return -1;\n } else {\n return 0;\n }\n};\n\n/**\n * Calculate the base-2 logarithm of a number\n * @param {number} x\n * @returns {number}\n */\nexport var log2 = Math.log2 || function log2(x) {\n return Math.log(x) / Math.LN2;\n};\n\n/**\n * Calculate the base-10 logarithm of a number\n * @param {number} x\n * @returns {number}\n */\nexport var log10 = Math.log10 || function log10(x) {\n return Math.log(x) / Math.LN10;\n};\n\n/**\n * Calculate the natural logarithm of a number + 1\n * @param {number} x\n * @returns {number}\n */\nexport var log1p = Math.log1p || function (x) {\n return Math.log(x + 1);\n};\n\n/**\n * Calculate cubic root for a number\n *\n * Code from es6-shim.js:\n * https://github.com/paulmillr/es6-shim/blob/master/es6-shim.js#L1564-L1577\n *\n * @param {number} x\n * @returns {number} Returns the cubic root of x\n */\nexport var cbrt = Math.cbrt || function cbrt(x) {\n if (x === 0) {\n return x;\n }\n var negate = x < 0;\n var result;\n if (negate) {\n x = -x;\n }\n if (isFinite(x)) {\n result = Math.exp(Math.log(x) / 3);\n // from https://en.wikipedia.org/wiki/Cube_root#Numerical_methods\n result = (x / (result * result) + 2 * result) / 3;\n } else {\n result = x;\n }\n return negate ? -result : result;\n};\n\n/**\n * Calculates exponentiation minus 1\n * @param {number} x\n * @return {number} res\n */\nexport var expm1 = Math.expm1 || function expm1(x) {\n return x >= 2e-4 || x <= -2e-4 ? Math.exp(x) - 1 : x + x * x / 2 + x * x * x / 6;\n};\n\n/**\n * Formats a number in a given base\n * @param {number} n\n * @param {number} base\n * @param {number} size\n * @returns {string}\n */\nfunction formatNumberToBase(n, base, size) {\n var prefixes = {\n 2: '0b',\n 8: '0o',\n 16: '0x'\n };\n var prefix = prefixes[base];\n var suffix = '';\n if (size) {\n if (size < 1) {\n throw new Error('size must be in greater than 0');\n }\n if (!isInteger(size)) {\n throw new Error('size must be an integer');\n }\n if (n > 2 ** (size - 1) - 1 || n < -(2 ** (size - 1))) {\n throw new Error(\"Value must be in range [-2^\".concat(size - 1, \", 2^\").concat(size - 1, \"-1]\"));\n }\n if (!isInteger(n)) {\n throw new Error('Value must be an integer');\n }\n if (n < 0) {\n n = n + 2 ** size;\n }\n suffix = \"i\".concat(size);\n }\n var sign = '';\n if (n < 0) {\n n = -n;\n sign = '-';\n }\n return \"\".concat(sign).concat(prefix).concat(n.toString(base)).concat(suffix);\n}\n\n/**\n * Convert a number to a formatted string representation.\n *\n * Syntax:\n *\n * format(value)\n * format(value, options)\n * format(value, precision)\n * format(value, fn)\n *\n * Where:\n *\n * {number} value The value to be formatted\n * {Object} options An object with formatting options. Available options:\n * {string} notation\n * Number notation. Choose from:\n * 'fixed' Always use regular number notation.\n * For example '123.40' and '14000000'\n * 'exponential' Always use exponential notation.\n * For example '1.234e+2' and '1.4e+7'\n * 'engineering' Always use engineering notation.\n * For example '123.4e+0' and '14.0e+6'\n * 'auto' (default) Regular number notation for numbers\n * having an absolute value between\n * `lowerExp` and `upperExp` bounds, and\n * uses exponential notation elsewhere.\n * Lower bound is included, upper bound\n * is excluded.\n * For example '123.4' and '1.4e7'.\n * 'bin', 'oct, or\n * 'hex' Format the number using binary, octal,\n * or hexadecimal notation.\n * For example '0b1101' and '0x10fe'.\n * {number} wordSize The word size in bits to use for formatting\n * in binary, octal, or hexadecimal notation.\n * To be used only with 'bin', 'oct', or 'hex'\n * values for 'notation' option. When this option\n * is defined the value is formatted as a signed\n * twos complement integer of the given word size\n * and the size suffix is appended to the output.\n * For example\n * format(-1, {notation: 'hex', wordSize: 8}) === '0xffi8'.\n * Default value is undefined.\n * {number} precision A number between 0 and 16 to round\n * the digits of the number.\n * In case of notations 'exponential',\n * 'engineering', and 'auto',\n * `precision` defines the total\n * number of significant digits returned.\n * In case of notation 'fixed',\n * `precision` defines the number of\n * significant digits after the decimal\n * point.\n * `precision` is undefined by default,\n * not rounding any digits.\n * {number} lowerExp Exponent determining the lower boundary\n * for formatting a value with an exponent\n * when `notation='auto`.\n * Default value is `-3`.\n * {number} upperExp Exponent determining the upper boundary\n * for formatting a value with an exponent\n * when `notation='auto`.\n * Default value is `5`.\n * {Function} fn A custom formatting function. Can be used to override the\n * built-in notations. Function `fn` is called with `value` as\n * parameter and must return a string. Is useful for example to\n * format all values inside a matrix in a particular way.\n *\n * Examples:\n *\n * format(6.4) // '6.4'\n * format(1240000) // '1.24e6'\n * format(1/3) // '0.3333333333333333'\n * format(1/3, 3) // '0.333'\n * format(21385, 2) // '21000'\n * format(12.071, {notation: 'fixed'}) // '12'\n * format(2.3, {notation: 'fixed', precision: 2}) // '2.30'\n * format(52.8, {notation: 'exponential'}) // '5.28e+1'\n * format(12345678, {notation: 'engineering'}) // '12.345678e+6'\n *\n * @param {number} value\n * @param {Object | Function | number} [options]\n * @return {string} str The formatted value\n */\nexport function format(value, options) {\n if (typeof options === 'function') {\n // handle format(value, fn)\n return options(value);\n }\n\n // handle special cases\n if (value === Infinity) {\n return 'Infinity';\n } else if (value === -Infinity) {\n return '-Infinity';\n } else if (isNaN(value)) {\n return 'NaN';\n }\n var {\n notation,\n precision,\n wordSize\n } = normalizeFormatOptions(options);\n\n // handle the various notations\n switch (notation) {\n case 'fixed':\n return toFixed(value, precision);\n case 'exponential':\n return toExponential(value, precision);\n case 'engineering':\n return toEngineering(value, precision);\n case 'bin':\n return formatNumberToBase(value, 2, wordSize);\n case 'oct':\n return formatNumberToBase(value, 8, wordSize);\n case 'hex':\n return formatNumberToBase(value, 16, wordSize);\n case 'auto':\n // remove trailing zeros after the decimal point\n return toPrecision(value, precision, options).replace(/((\\.\\d*?)(0+))($|e)/, function () {\n var digits = arguments[2];\n var e = arguments[4];\n return digits !== '.' ? digits + e : e;\n });\n default:\n throw new Error('Unknown notation \"' + notation + '\". ' + 'Choose \"auto\", \"exponential\", \"fixed\", \"bin\", \"oct\", or \"hex.');\n }\n}\n\n/**\n * Normalize format options into an object:\n * {\n * notation: string,\n * precision: number | undefined,\n * wordSize: number | undefined\n * }\n */\nexport function normalizeFormatOptions(options) {\n // default values for options\n var notation = 'auto';\n var precision;\n var wordSize;\n if (options !== undefined) {\n if (isNumber(options)) {\n precision = options;\n } else if (isBigNumber(options)) {\n precision = options.toNumber();\n } else if (isObject(options)) {\n if (options.precision !== undefined) {\n precision = _toNumberOrThrow(options.precision, () => {\n throw new Error('Option \"precision\" must be a number or BigNumber');\n });\n }\n if (options.wordSize !== undefined) {\n wordSize = _toNumberOrThrow(options.wordSize, () => {\n throw new Error('Option \"wordSize\" must be a number or BigNumber');\n });\n }\n if (options.notation) {\n notation = options.notation;\n }\n } else {\n throw new Error('Unsupported type of options, number, BigNumber, or object expected');\n }\n }\n return {\n notation,\n precision,\n wordSize\n };\n}\n\n/**\n * Split a number into sign, coefficients, and exponent\n * @param {number | string} value\n * @return {SplitValue}\n * Returns an object containing sign, coefficients, and exponent\n */\nexport function splitNumber(value) {\n // parse the input value\n var match = String(value).toLowerCase().match(/^(-?)(\\d+\\.?\\d*)(e([+-]?\\d+))?$/);\n if (!match) {\n throw new SyntaxError('Invalid number ' + value);\n }\n var sign = match[1];\n var digits = match[2];\n var exponent = parseFloat(match[4] || '0');\n var dot = digits.indexOf('.');\n exponent += dot !== -1 ? dot - 1 : digits.length - 1;\n var coefficients = digits.replace('.', '') // remove the dot (must be removed before removing leading zeros)\n .replace(/^0*/, function (zeros) {\n // remove leading zeros, add their count to the exponent\n exponent -= zeros.length;\n return '';\n }).replace(/0*$/, '') // remove trailing zeros\n .split('').map(function (d) {\n return parseInt(d);\n });\n if (coefficients.length === 0) {\n coefficients.push(0);\n exponent++;\n }\n return {\n sign,\n coefficients,\n exponent\n };\n}\n\n/**\n * Format a number in engineering notation. Like '1.23e+6', '2.3e+0', '3.500e-3'\n * @param {number | string} value\n * @param {number} [precision] Optional number of significant figures to return.\n */\nexport function toEngineering(value, precision) {\n if (isNaN(value) || !isFinite(value)) {\n return String(value);\n }\n var split = splitNumber(value);\n var rounded = roundDigits(split, precision);\n var e = rounded.exponent;\n var c = rounded.coefficients;\n\n // find nearest lower multiple of 3 for exponent\n var newExp = e % 3 === 0 ? e : e < 0 ? e - 3 - e % 3 : e - e % 3;\n if (isNumber(precision)) {\n // add zeroes to give correct sig figs\n while (precision > c.length || e - newExp + 1 > c.length) {\n c.push(0);\n }\n } else {\n // concatenate coefficients with necessary zeros\n // add zeros if necessary (for example: 1e+8 -> 100e+6)\n var missingZeros = Math.abs(e - newExp) - (c.length - 1);\n for (var i = 0; i < missingZeros; i++) {\n c.push(0);\n }\n }\n\n // find difference in exponents\n var expDiff = Math.abs(e - newExp);\n var decimalIdx = 1;\n\n // push decimal index over by expDiff times\n while (expDiff > 0) {\n decimalIdx++;\n expDiff--;\n }\n\n // if all coefficient values are zero after the decimal point and precision is unset, don't add a decimal value.\n // otherwise concat with the rest of the coefficients\n var decimals = c.slice(decimalIdx).join('');\n var decimalVal = isNumber(precision) && decimals.length || decimals.match(/[1-9]/) ? '.' + decimals : '';\n var str = c.slice(0, decimalIdx).join('') + decimalVal + 'e' + (e >= 0 ? '+' : '') + newExp.toString();\n return rounded.sign + str;\n}\n\n/**\n * Format a number with fixed notation.\n * @param {number | string} value\n * @param {number} [precision=undefined] Optional number of decimals after the\n * decimal point. null by default.\n */\nexport function toFixed(value, precision) {\n if (isNaN(value) || !isFinite(value)) {\n return String(value);\n }\n var splitValue = splitNumber(value);\n var rounded = typeof precision === 'number' ? roundDigits(splitValue, splitValue.exponent + 1 + precision) : splitValue;\n var c = rounded.coefficients;\n var p = rounded.exponent + 1; // exponent may have changed\n\n // append zeros if needed\n var pp = p + (precision || 0);\n if (c.length < pp) {\n c = c.concat(zeros(pp - c.length));\n }\n\n // prepend zeros if needed\n if (p < 0) {\n c = zeros(-p + 1).concat(c);\n p = 1;\n }\n\n // insert a dot if needed\n if (p < c.length) {\n c.splice(p, 0, p === 0 ? '0.' : '.');\n }\n return rounded.sign + c.join('');\n}\n\n/**\n * Format a number in exponential notation. Like '1.23e+5', '2.3e+0', '3.500e-3'\n * @param {number | string} value\n * @param {number} [precision] Number of digits in formatted output.\n * If not provided, the maximum available digits\n * is used.\n */\nexport function toExponential(value, precision) {\n if (isNaN(value) || !isFinite(value)) {\n return String(value);\n }\n\n // round if needed, else create a clone\n var split = splitNumber(value);\n var rounded = precision ? roundDigits(split, precision) : split;\n var c = rounded.coefficients;\n var e = rounded.exponent;\n\n // append zeros if needed\n if (c.length < precision) {\n c = c.concat(zeros(precision - c.length));\n }\n\n // format as `C.CCCe+EEE` or `C.CCCe-EEE`\n var first = c.shift();\n return rounded.sign + first + (c.length > 0 ? '.' + c.join('') : '') + 'e' + (e >= 0 ? '+' : '') + e;\n}\n\n/**\n * Format a number with a certain precision\n * @param {number | string} value\n * @param {number} [precision=undefined] Optional number of digits.\n * @param {{lowerExp: number | undefined, upperExp: number | undefined}} [options]\n * By default:\n * lowerExp = -3 (incl)\n * upper = +5 (excl)\n * @return {string}\n */\nexport function toPrecision(value, precision, options) {\n if (isNaN(value) || !isFinite(value)) {\n return String(value);\n }\n\n // determine lower and upper bound for exponential notation.\n var lowerExp = _toNumberOrDefault(options === null || options === void 0 ? void 0 : options.lowerExp, -3);\n var upperExp = _toNumberOrDefault(options === null || options === void 0 ? void 0 : options.upperExp, 5);\n var split = splitNumber(value);\n var rounded = precision ? roundDigits(split, precision) : split;\n if (rounded.exponent < lowerExp || rounded.exponent >= upperExp) {\n // exponential notation\n return toExponential(value, precision);\n } else {\n var c = rounded.coefficients;\n var e = rounded.exponent;\n\n // append trailing zeros\n if (c.length < precision) {\n c = c.concat(zeros(precision - c.length));\n }\n\n // append trailing zeros\n // TODO: simplify the next statement\n c = c.concat(zeros(e - c.length + 1 + (c.length < precision ? precision - c.length : 0)));\n\n // prepend zeros\n c = zeros(-e).concat(c);\n var dot = e > 0 ? e : 0;\n if (dot < c.length - 1) {\n c.splice(dot + 1, 0, '.');\n }\n return rounded.sign + c.join('');\n }\n}\n\n/**\n * Round the number of digits of a number *\n * @param {SplitValue} split A value split with .splitNumber(value)\n * @param {number} precision A positive integer\n * @return {SplitValue}\n * Returns an object containing sign, coefficients, and exponent\n * with rounded digits\n */\nexport function roundDigits(split, precision) {\n // create a clone\n var rounded = {\n sign: split.sign,\n coefficients: split.coefficients,\n exponent: split.exponent\n };\n var c = rounded.coefficients;\n\n // prepend zeros if needed\n while (precision <= 0) {\n c.unshift(0);\n rounded.exponent++;\n precision++;\n }\n if (c.length > precision) {\n var removed = c.splice(precision, c.length - precision);\n if (removed[0] >= 5) {\n var i = precision - 1;\n c[i]++;\n while (c[i] === 10) {\n c.pop();\n if (i === 0) {\n c.unshift(0);\n rounded.exponent++;\n i++;\n }\n i--;\n c[i]++;\n }\n }\n }\n return rounded;\n}\n\n/**\n * Create an array filled with zeros.\n * @param {number} length\n * @return {Array}\n */\nfunction zeros(length) {\n var arr = [];\n for (var i = 0; i < length; i++) {\n arr.push(0);\n }\n return arr;\n}\n\n/**\n * Count the number of significant digits of a number.\n *\n * For example:\n * 2.34 returns 3\n * 0.0034 returns 2\n * 120.5e+30 returns 4\n *\n * @param {number} value\n * @return {number} digits Number of significant digits\n */\nexport function digits(value) {\n return value.toExponential().replace(/e.*$/, '') // remove exponential notation\n .replace(/^0\\.?0*|\\./, '') // remove decimal point and leading zeros\n .length;\n}\n\n/**\n * Minimum number added to one that makes the result different than one\n */\nexport var DBL_EPSILON = Number.EPSILON || 2.2204460492503130808472633361816E-16;\n\n/**\n * Compares two floating point numbers.\n * @param {number} a - First value to compare\n * @param {number} b - Second value to compare\n * @param {number} [relTol=1e-09] - The relative tolerance, indicating the maximum allowed difference relative to the larger absolute value. Must be greater than 0.\n * @param {number} [absTol=1e-12] - The minimum absolute tolerance, useful for comparisons near zero. Must be at least 0.\n * @return {boolean} whether the two numbers are nearly equal\n *\n * @throws {Error} If `relTol` is less than or equal to 0.\n * @throws {Error} If `absTol` is less than 0.\n *\n * @example\n * nearlyEqual(1.000000001, 1.0, 1e-8); // true\n * nearlyEqual(1.000000002, 1.0, 0); // false\n * nearlyEqual(1.0, 1.009, undefined, 0.01); // true\n * nearlyEqual(0.000000001, 0.0, undefined, 1e-8); // true\n */\nexport function nearlyEqual(a, b) {\n var relTol = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1e-8;\n var absTol = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n if (relTol <= 0) {\n throw new Error('Relative tolerance must be greater than 0');\n }\n if (absTol < 0) {\n throw new Error('Absolute tolerance must be at least 0');\n }\n\n // NaN\n if (isNaN(a) || isNaN(b)) {\n return false;\n }\n if (!isFinite(a) || !isFinite(b)) {\n return a === b;\n }\n if (a === b) {\n return true;\n }\n\n // abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)\n return Math.abs(a - b) <= Math.max(relTol * Math.max(Math.abs(a), Math.abs(b)), absTol);\n}\n\n/**\n * Calculate the hyperbolic arccos of a number\n * @param {number} x\n * @return {number}\n */\nexport var acosh = Math.acosh || function (x) {\n return Math.log(Math.sqrt(x * x - 1) + x);\n};\nexport var asinh = Math.asinh || function (x) {\n return Math.log(Math.sqrt(x * x + 1) + x);\n};\n\n/**\n * Calculate the hyperbolic arctangent of a number\n * @param {number} x\n * @return {number}\n */\nexport var atanh = Math.atanh || function (x) {\n return Math.log((1 + x) / (1 - x)) / 2;\n};\n\n/**\n * Calculate the hyperbolic cosine of a number\n * @param {number} x\n * @returns {number}\n */\nexport var cosh = Math.cosh || function (x) {\n return (Math.exp(x) + Math.exp(-x)) / 2;\n};\n\n/**\n * Calculate the hyperbolic sine of a number\n * @param {number} x\n * @returns {number}\n */\nexport var sinh = Math.sinh || function (x) {\n return (Math.exp(x) - Math.exp(-x)) / 2;\n};\n\n/**\n * Calculate the hyperbolic tangent of a number\n * @param {number} x\n * @returns {number}\n */\nexport var tanh = Math.tanh || function (x) {\n var e = Math.exp(2 * x);\n return (e - 1) / (e + 1);\n};\n\n/**\n * Returns a value with the magnitude of x and the sign of y.\n * @param {number} x\n * @param {number} y\n * @returns {number}\n */\nexport function copysign(x, y) {\n var signx = x > 0 ? true : x < 0 ? false : 1 / x === Infinity;\n var signy = y > 0 ? true : y < 0 ? false : 1 / y === Infinity;\n return signx ^ signy ? -x : x;\n}\nfunction _toNumberOrThrow(value, onError) {\n if (isNumber(value)) {\n return value;\n } else if (isBigNumber(value)) {\n return value.toNumber();\n } else {\n onError();\n }\n}\nfunction _toNumberOrDefault(value, defaultValue) {\n if (isNumber(value)) {\n return value;\n } else if (isBigNumber(value)) {\n return value.toNumber();\n } else {\n return defaultValue;\n }\n}", "import { factory } from '../../utils/factory.js';\nvar name = 'ResultSet';\nvar dependencies = [];\nexport var createResultSet = /* #__PURE__ */factory(name, dependencies, () => {\n /**\n * A ResultSet contains a list or results\n * @class ResultSet\n * @param {Array} entries\n * @constructor ResultSet\n */\n function ResultSet(entries) {\n if (!(this instanceof ResultSet)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n this.entries = entries || [];\n }\n\n /**\n * Attach type information\n */\n ResultSet.prototype.type = 'ResultSet';\n ResultSet.prototype.isResultSet = true;\n\n /**\n * Returns the array with results hold by this ResultSet\n * @memberof ResultSet\n * @returns {Array} entries\n */\n ResultSet.prototype.valueOf = function () {\n return this.entries;\n };\n\n /**\n * Returns the stringified results of the ResultSet\n * @memberof ResultSet\n * @returns {string} string\n */\n ResultSet.prototype.toString = function () {\n return '[' + this.entries.map(String).join(', ') + ']';\n };\n\n /**\n * Get a JSON representation of the ResultSet\n * @memberof ResultSet\n * @returns {Object} Returns a JSON object structured as:\n * `{\"mathjs\": \"ResultSet\", \"entries\": [...]}`\n */\n ResultSet.prototype.toJSON = function () {\n return {\n mathjs: 'ResultSet',\n entries: this.entries\n };\n };\n\n /**\n * Instantiate a ResultSet from a JSON object\n * @memberof ResultSet\n * @param {Object} json A JSON object structured as:\n * `{\"mathjs\": \"ResultSet\", \"entries\": [...]}`\n * @return {ResultSet}\n */\n ResultSet.fromJSON = function (json) {\n return new ResultSet(json.entries);\n };\n return ResultSet;\n}, {\n isClass: true\n});", "/*!\r\n * decimal.js v10.4.3\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js\r\n * Copyright (c) 2022 Michael Mclaughlin \r\n * MIT Licence\r\n */\r\n\r\n\r\n// ----------------------------------- EDITABLE DEFAULTS ------------------------------------ //\r\n\r\n\r\n // The maximum exponent magnitude.\r\n // The limit on the value of `toExpNeg`, `toExpPos`, `minE` and `maxE`.\r\nvar EXP_LIMIT = 9e15, // 0 to 9e15\r\n\r\n // The limit on the value of `precision`, and on the value of the first argument to\r\n // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n MAX_DIGITS = 1e9, // 0 to 1e9\r\n\r\n // Base conversion alphabet.\r\n NUMERALS = '0123456789abcdef',\r\n\r\n // The natural logarithm of 10 (1025 digits).\r\n LN10 = '2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058',\r\n\r\n // Pi (1025 digits).\r\n PI = '3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789',\r\n\r\n\r\n // The initial configuration properties of the Decimal constructor.\r\n DEFAULTS = {\r\n\r\n // These values must be integers within the stated ranges (inclusive).\r\n // Most of these values can be changed at run-time using the `Decimal.config` method.\r\n\r\n // The maximum number of significant digits of the result of a calculation or base conversion.\r\n // E.g. `Decimal.config({ precision: 20 });`\r\n precision: 20, // 1 to MAX_DIGITS\r\n\r\n // The rounding mode used when rounding to `precision`.\r\n //\r\n // ROUND_UP 0 Away from zero.\r\n // ROUND_DOWN 1 Towards zero.\r\n // ROUND_CEIL 2 Towards +Infinity.\r\n // ROUND_FLOOR 3 Towards -Infinity.\r\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n //\r\n // E.g.\r\n // `Decimal.rounding = 4;`\r\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n rounding: 4, // 0 to 8\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend (JavaScript %).\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 The IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). Always positive.\r\n //\r\n // Truncated division (1), floored division (3), the IEEE 754 remainder (6), and Euclidian\r\n // division (9) are commonly used for the modulus operation. The other rounding modes can also\r\n // be used, but they may not give useful results.\r\n modulo: 1, // 0 to 9\r\n\r\n // The exponent value at and beneath which `toString` returns exponential notation.\r\n // JavaScript numbers: -7\r\n toExpNeg: -7, // 0 to -EXP_LIMIT\r\n\r\n // The exponent value at and above which `toString` returns exponential notation.\r\n // JavaScript numbers: 21\r\n toExpPos: 21, // 0 to EXP_LIMIT\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // JavaScript numbers: -324 (5e-324)\r\n minE: -EXP_LIMIT, // -1 to -EXP_LIMIT\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // JavaScript numbers: 308 (1.7976931348623157e+308)\r\n maxE: EXP_LIMIT, // 1 to EXP_LIMIT\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n crypto: false // true/false\r\n },\r\n\r\n\r\n// ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n inexact, quadrant,\r\n external = true,\r\n\r\n decimalError = '[DecimalError] ',\r\n invalidArgument = decimalError + 'Invalid argument: ',\r\n precisionLimitExceeded = decimalError + 'Precision limit exceeded',\r\n cryptoUnavailable = decimalError + 'crypto unavailable',\r\n tag = '[object Decimal]',\r\n\r\n mathfloor = Math.floor,\r\n mathpow = Math.pow,\r\n\r\n isBinary = /^0b([01]+(\\.[01]*)?|\\.[01]+)(p[+-]?\\d+)?$/i,\r\n isHex = /^0x([0-9a-f]+(\\.[0-9a-f]*)?|\\.[0-9a-f]+)(p[+-]?\\d+)?$/i,\r\n isOctal = /^0o([0-7]+(\\.[0-7]*)?|\\.[0-7]+)(p[+-]?\\d+)?$/i,\r\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n\r\n LN10_PRECISION = LN10.length - 1,\r\n PI_PRECISION = PI.length - 1,\r\n\r\n // Decimal.prototype object\r\n P = { toStringTag: tag };\r\n\r\n\r\n// Decimal prototype methods\r\n\r\n\r\n/*\r\n * absoluteValue abs\r\n * ceil\r\n * clampedTo clamp\r\n * comparedTo cmp\r\n * cosine cos\r\n * cubeRoot cbrt\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy divToInt\r\n * equals eq\r\n * floor\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * hyperbolicCosine cosh\r\n * hyperbolicSine sinh\r\n * hyperbolicTangent tanh\r\n * inverseCosine acos\r\n * inverseHyperbolicCosine acosh\r\n * inverseHyperbolicSine asinh\r\n * inverseHyperbolicTangent atanh\r\n * inverseSine asin\r\n * inverseTangent atan\r\n * isFinite\r\n * isInteger isInt\r\n * isNaN\r\n * isNegative isNeg\r\n * isPositive isPos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * [maximum] [max]\r\n * [minimum] [min]\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * round\r\n * sine sin\r\n * squareRoot sqrt\r\n * tangent tan\r\n * times mul\r\n * toBinary\r\n * toDecimalPlaces toDP\r\n * toExponential\r\n * toFixed\r\n * toFraction\r\n * toHexadecimal toHex\r\n * toNearest\r\n * toNumber\r\n * toOctal\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits toSD\r\n * toString\r\n * truncated trunc\r\n * valueOf toJSON\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\r\nP.absoluteValue = P.abs = function () {\r\n var x = new this.constructor(this);\r\n if (x.s < 0) x.s = 1;\r\n return finalise(x);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of positive Infinity.\r\n *\r\n */\r\nP.ceil = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal clamped to the range\r\n * delineated by `min` and `max`.\r\n *\r\n * min {number|string|Decimal}\r\n * max {number|string|Decimal}\r\n *\r\n */\r\nP.clampedTo = P.clamp = function (min, max) {\r\n var k,\r\n x = this,\r\n Ctor = x.constructor;\r\n min = new Ctor(min);\r\n max = new Ctor(max);\r\n if (!min.s || !max.s) return new Ctor(NaN);\r\n if (min.gt(max)) throw Error(invalidArgument + max);\r\n k = x.cmp(min);\r\n return k < 0 ? min : x.cmp(max) > 0 ? max : new Ctor(x);\r\n};\r\n\r\n\r\n/*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value,\r\n * NaN if the value of either Decimal is NaN.\r\n *\r\n */\r\nP.comparedTo = P.cmp = function (y) {\r\n var i, j, xdL, ydL,\r\n x = this,\r\n xd = x.d,\r\n yd = (y = new x.constructor(y)).d,\r\n xs = x.s,\r\n ys = y.s;\r\n\r\n // Either NaN or \u00B1Infinity?\r\n if (!xd || !yd) {\r\n return !xs || !ys ? NaN : xs !== ys ? xs : xd === yd ? 0 : !xd ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Either zero?\r\n if (!xd[0] || !yd[0]) return xd[0] ? xs : yd[0] ? -ys : 0;\r\n\r\n // Signs differ?\r\n if (xs !== ys) return xs;\r\n\r\n // Compare exponents.\r\n if (x.e !== y.e) return x.e > y.e ^ xs < 0 ? 1 : -1;\r\n\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Compare digit by digit.\r\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n if (xd[i] !== yd[i]) return xd[i] > yd[i] ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return xdL === ydL ? 0 : xdL > ydL ^ xs < 0 ? 1 : -1;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cosine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * cos(0) = 1\r\n * cos(-0) = 1\r\n * cos(Infinity) = NaN\r\n * cos(-Infinity) = NaN\r\n * cos(NaN) = NaN\r\n *\r\n */\r\nP.cosine = P.cos = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.d) return new Ctor(NaN);\r\n\r\n // cos(0) = cos(-0) = 1\r\n if (!x.d[0]) return new Ctor(1);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = cosine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 3 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n *\r\n * Return a new Decimal whose value is the cube root of the value of this Decimal, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * cbrt(0) = 0\r\n * cbrt(-0) = -0\r\n * cbrt(1) = 1\r\n * cbrt(-1) = -1\r\n * cbrt(N) = N\r\n * cbrt(-I) = -I\r\n * cbrt(I) = I\r\n *\r\n * Math.cbrt(x) = (x < 0 ? -Math.pow(-x, 1/3) : Math.pow(x, 1/3))\r\n *\r\n */\r\nP.cubeRoot = P.cbrt = function () {\r\n var e, m, n, r, rep, s, sd, t, t3, t3plusx,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = x.s * mathpow(x.s * x, 1 / 3);\r\n\r\n // Math.cbrt underflow/overflow?\r\n // Pass x to Math.pow as integer, then adjust the exponent of the result.\r\n if (!s || Math.abs(s) == 1 / 0) {\r\n n = digitsToString(x.d);\r\n e = x.e;\r\n\r\n // Adjust n exponent so it is a multiple of 3 away from x exponent.\r\n if (s = (e - n.length + 1) % 3) n += (s == 1 || s == -2 ? '0' : '00');\r\n s = mathpow(n, 1 / 3);\r\n\r\n // Rarely, e may be one less than the result exponent value.\r\n e = mathfloor((e + 1) / 3) - (e % 3 == (e < 0 ? -1 : 2));\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n r.s = x.s;\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Halley's method.\r\n // TODO? Compare Newton's method.\r\n for (;;) {\r\n t = r;\r\n t3 = t.times(t).times(t);\r\n t3plusx = t3.plus(x);\r\n r = divide(t3plusx.plus(x).times(t), t3plusx.plus(t3), sd + 2, 1);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or 4999\r\n // , i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n};\r\n\r\n\r\n/*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\r\nP.decimalPlaces = P.dp = function () {\r\n var w,\r\n d = this.d,\r\n n = NaN;\r\n\r\n if (d) {\r\n w = d.length - 1;\r\n n = (w - mathfloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n w = d[w];\r\n if (w) for (; w % 10 == 0; w /= 10) n--;\r\n if (n < 0) n = 0;\r\n }\r\n\r\n return n;\r\n};\r\n\r\n\r\n/*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.dividedBy = P.div = function (y) {\r\n return divide(this, new this.constructor(y));\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.dividedToIntegerBy = P.divToInt = function (y) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return finalise(divide(x, new Ctor(y), 0, 1, 1), Ctor.precision, Ctor.rounding);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\r\nP.equals = P.eq = function (y) {\r\n return this.cmp(y) === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of negative Infinity.\r\n *\r\n */\r\nP.floor = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 3);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\r\nP.greaterThan = P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\r\nP.greaterThanOrEqualTo = P.gte = function (y) {\r\n var k = this.cmp(y);\r\n return k == 1 || k === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic cosine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [1, Infinity]\r\n *\r\n * cosh(x) = 1 + x^2/2! + x^4/4! + x^6/6! + ...\r\n *\r\n * cosh(0) = 1\r\n * cosh(-0) = 1\r\n * cosh(Infinity) = Infinity\r\n * cosh(-Infinity) = Infinity\r\n * cosh(NaN) = NaN\r\n *\r\n * x time taken (ms) result\r\n * 1000 9 9.8503555700852349694e+433\r\n * 10000 25 4.4034091128314607936e+4342\r\n * 100000 171 1.4033316802130615897e+43429\r\n * 1000000 3817 1.5166076984010437725e+434294\r\n * 10000000 abandoned after 2 minute wait\r\n *\r\n * TODO? Compare performance of cosh(x) = 0.5 * (exp(x) + exp(-x))\r\n *\r\n */\r\nP.hyperbolicCosine = P.cosh = function () {\r\n var k, n, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor,\r\n one = new Ctor(1);\r\n\r\n if (!x.isFinite()) return new Ctor(x.s ? 1 / 0 : NaN);\r\n if (x.isZero()) return one;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n // Argument reduction: cos(4x) = 1 - 8cos^2(x) + 8cos^4(x) + 1\r\n // i.e. cos(x) = 1 - cos^2(x/4)(8 - 8cos^2(x/4))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n // TODO? Estimation reused from cosine() and may not be optimal here.\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n n = (1 / tinyPow(4, k)).toString();\r\n } else {\r\n k = 16;\r\n n = '2.3283064365386962890625e-10';\r\n }\r\n\r\n x = taylorSeries(Ctor, 1, x.times(n), new Ctor(1), true);\r\n\r\n // Reverse argument reduction\r\n var cosh2_x,\r\n i = k,\r\n d8 = new Ctor(8);\r\n for (; i--;) {\r\n cosh2_x = x.times(x);\r\n x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8))));\r\n }\r\n\r\n return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic sine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * sinh(x) = x + x^3/3! + x^5/5! + x^7/7! + ...\r\n *\r\n * sinh(0) = 0\r\n * sinh(-0) = -0\r\n * sinh(Infinity) = Infinity\r\n * sinh(-Infinity) = -Infinity\r\n * sinh(NaN) = NaN\r\n *\r\n * x time taken (ms)\r\n * 10 2 ms\r\n * 100 5 ms\r\n * 1000 14 ms\r\n * 10000 82 ms\r\n * 100000 886 ms 1.4033316802130615897e+43429\r\n * 200000 2613 ms\r\n * 300000 5407 ms\r\n * 400000 8824 ms\r\n * 500000 13026 ms 8.7080643612718084129e+217146\r\n * 1000000 48543 ms\r\n *\r\n * TODO? Compare performance of sinh(x) = 0.5 * (exp(x) - exp(-x))\r\n *\r\n */\r\nP.hyperbolicSine = P.sinh = function () {\r\n var k, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n } else {\r\n\r\n // Alternative argument reduction: sinh(3x) = sinh(x)(3 + 4sinh^2(x))\r\n // i.e. sinh(x) = sinh(x/3)(3 + 4sinh^2(x/3))\r\n // 3 multiplications and 1 addition\r\n\r\n // Argument reduction: sinh(5x) = sinh(x)(5 + sinh^2(x)(20 + 16sinh^2(x)))\r\n // i.e. sinh(x) = sinh(x/5)(5 + sinh^2(x/5)(20 + 16sinh^2(x/5)))\r\n // 4 multiplications and 2 additions\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(1 / tinyPow(5, k));\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n\r\n // Reverse argument reduction\r\n var sinh2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sinh2_x = x.times(x);\r\n x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20))));\r\n }\r\n }\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic tangent of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * tanh(x) = sinh(x) / cosh(x)\r\n *\r\n * tanh(0) = 0\r\n * tanh(-0) = -0\r\n * tanh(Infinity) = 1\r\n * tanh(-Infinity) = -1\r\n * tanh(NaN) = NaN\r\n *\r\n */\r\nP.hyperbolicTangent = P.tanh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(x.s);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 7;\r\n Ctor.rounding = 1;\r\n\r\n return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arccosine (inverse cosine) in radians of the value of\r\n * this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [0, pi]\r\n *\r\n * acos(x) = pi/2 - asin(x)\r\n *\r\n * acos(0) = pi/2\r\n * acos(-0) = pi/2\r\n * acos(1) = 0\r\n * acos(-1) = pi\r\n * acos(1/2) = pi/3\r\n * acos(-1/2) = 2*pi/3\r\n * acos(|x| > 1) = NaN\r\n * acos(NaN) = NaN\r\n *\r\n */\r\nP.inverseCosine = P.acos = function () {\r\n var halfPi,\r\n x = this,\r\n Ctor = x.constructor,\r\n k = x.abs().cmp(1),\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n return k === 0\r\n // |x| is 1\r\n ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0)\r\n // |x| > 1 or x is NaN\r\n : new Ctor(NaN);\r\n }\r\n\r\n if (x.isZero()) return getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n // TODO? Special case acos(0.5) = pi/3 and acos(-0.5) = 2*pi/3\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n x = x.asin();\r\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return halfPi.minus(x);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [1, Infinity]\r\n * Range: [0, Infinity]\r\n *\r\n * acosh(x) = ln(x + sqrt(x^2 - 1))\r\n *\r\n * acosh(x < 1) = NaN\r\n * acosh(NaN) = NaN\r\n * acosh(Infinity) = Infinity\r\n * acosh(-Infinity) = NaN\r\n * acosh(0) = NaN\r\n * acosh(-0) = NaN\r\n * acosh(1) = 0\r\n * acosh(-1) = NaN\r\n *\r\n */\r\nP.inverseHyperbolicCosine = P.acosh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.lte(1)) return new Ctor(x.eq(1) ? 0 : NaN);\r\n if (!x.isFinite()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).minus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * asinh(x) = ln(x + sqrt(x^2 + 1))\r\n *\r\n * asinh(NaN) = NaN\r\n * asinh(Infinity) = Infinity\r\n * asinh(-Infinity) = -Infinity\r\n * asinh(0) = 0\r\n * asinh(-0) = -0\r\n *\r\n */\r\nP.inverseHyperbolicSine = P.asinh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 2 * Math.max(Math.abs(x.e), x.sd()) + 6;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).plus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * atanh(x) = 0.5 * ln((1 + x) / (1 - x))\r\n *\r\n * atanh(|x| > 1) = NaN\r\n * atanh(NaN) = NaN\r\n * atanh(Infinity) = NaN\r\n * atanh(-Infinity) = NaN\r\n * atanh(0) = 0\r\n * atanh(-0) = -0\r\n * atanh(1) = Infinity\r\n * atanh(-1) = -Infinity\r\n *\r\n */\r\nP.inverseHyperbolicTangent = P.atanh = function () {\r\n var pr, rm, wpr, xsd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.e >= 0) return new Ctor(x.abs().eq(1) ? x.s / 0 : x.isZero() ? x : NaN);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n xsd = x.sd();\r\n\r\n if (Math.max(xsd, pr) < 2 * -x.e - 1) return finalise(new Ctor(x), pr, rm, true);\r\n\r\n Ctor.precision = wpr = xsd - x.e;\r\n\r\n x = divide(x.plus(1), new Ctor(1).minus(x), wpr + pr, 1);\r\n\r\n Ctor.precision = pr + 4;\r\n Ctor.rounding = 1;\r\n\r\n x = x.ln();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(0.5);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arcsine (inverse sine) in radians of the value of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * asin(x) = 2*atan(x/(1 + sqrt(1 - x^2)))\r\n *\r\n * asin(0) = 0\r\n * asin(-0) = -0\r\n * asin(1/2) = pi/6\r\n * asin(-1/2) = -pi/6\r\n * asin(1) = pi/2\r\n * asin(-1) = -pi/2\r\n * asin(|x| > 1) = NaN\r\n * asin(NaN) = NaN\r\n *\r\n * TODO? Compare performance of Taylor series.\r\n *\r\n */\r\nP.inverseSine = P.asin = function () {\r\n var halfPi, k,\r\n pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n k = x.abs().cmp(1);\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n\r\n // |x| is 1\r\n if (k === 0) {\r\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n halfPi.s = x.s;\r\n return halfPi;\r\n }\r\n\r\n // |x| > 1 or x is NaN\r\n return new Ctor(NaN);\r\n }\r\n\r\n // TODO? Special case asin(1/2) = pi/6 and asin(-1/2) = -pi/6\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n x = x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent (inverse tangent) in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n *\r\n * atan(0) = 0\r\n * atan(-0) = -0\r\n * atan(1) = pi/4\r\n * atan(-1) = -pi/4\r\n * atan(Infinity) = pi/2\r\n * atan(-Infinity) = -pi/2\r\n * atan(NaN) = NaN\r\n *\r\n */\r\nP.inverseTangent = P.atan = function () {\r\n var i, j, k, n, px, t, r, wpr, x2,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (!x.isFinite()) {\r\n if (!x.s) return new Ctor(NaN);\r\n if (pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.5);\r\n r.s = x.s;\r\n return r;\r\n }\r\n } else if (x.isZero()) {\r\n return new Ctor(x);\r\n } else if (x.abs().eq(1) && pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.25);\r\n r.s = x.s;\r\n return r;\r\n }\r\n\r\n Ctor.precision = wpr = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n // TODO? if (x >= 1 && pr <= PI_PRECISION) atan(x) = halfPi * x.s - atan(1 / x);\r\n\r\n // Argument reduction\r\n // Ensure |x| < 0.42\r\n // atan(x) = 2 * atan(x / (1 + sqrt(1 + x^2)))\r\n\r\n k = Math.min(28, wpr / LOG_BASE + 2 | 0);\r\n\r\n for (i = k; i; --i) x = x.div(x.times(x).plus(1).sqrt().plus(1));\r\n\r\n external = false;\r\n\r\n j = Math.ceil(wpr / LOG_BASE);\r\n n = 1;\r\n x2 = x.times(x);\r\n r = new Ctor(x);\r\n px = x;\r\n\r\n // atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n for (; i !== -1;) {\r\n px = px.times(x2);\r\n t = r.minus(px.div(n += 2));\r\n\r\n px = px.times(x2);\r\n r = t.plus(px.div(n += 2));\r\n\r\n if (r.d[j] !== void 0) for (i = j; r.d[i] === t.d[i] && i--;);\r\n }\r\n\r\n if (k) r = r.times(2 << (k - 1));\r\n\r\n external = true;\r\n\r\n return finalise(r, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is a finite number, otherwise return false.\r\n *\r\n */\r\nP.isFinite = function () {\r\n return !!this.d;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\r\nP.isInteger = P.isInt = function () {\r\n return !!this.d && mathfloor(this.e / LOG_BASE) > this.d.length - 2;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is NaN, otherwise return false.\r\n *\r\n */\r\nP.isNaN = function () {\r\n return !this.s;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\r\nP.isNegative = P.isNeg = function () {\r\n return this.s < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\r\nP.isPositive = P.isPos = function () {\r\n return this.s > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is 0 or -0, otherwise return false.\r\n *\r\n */\r\nP.isZero = function () {\r\n return !!this.d && this.d[0] === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\r\nP.lessThan = P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\r\nP.lessThanOrEqualTo = P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n};\r\n\r\n\r\n/*\r\n * Return the logarithm of the value of this Decimal to the specified base, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * If no base is specified, return log[10](arg).\r\n *\r\n * log[base](arg) = ln(arg) / ln(base)\r\n *\r\n * The result will always be correctly rounded if the base of the log is 10, and 'almost always'\r\n * otherwise:\r\n *\r\n * Depending on the rounding mode, the result may be incorrectly rounded if the first fifteen\r\n * rounding digits are [49]99999999999999 or [50]00000000000000. In that case, the maximum error\r\n * between the result and the correctly rounded result will be one ulp (unit in the last place).\r\n *\r\n * log[-b](a) = NaN\r\n * log[0](a) = NaN\r\n * log[1](a) = NaN\r\n * log[NaN](a) = NaN\r\n * log[Infinity](a) = NaN\r\n * log[b](0) = -Infinity\r\n * log[b](-0) = -Infinity\r\n * log[b](-a) = NaN\r\n * log[b](1) = 0\r\n * log[b](Infinity) = Infinity\r\n * log[b](NaN) = NaN\r\n *\r\n * [base] {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\nP.logarithm = P.log = function (base) {\r\n var isBase10, d, denominator, k, inf, num, sd, r,\r\n arg = this,\r\n Ctor = arg.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding,\r\n guard = 5;\r\n\r\n // Default base is 10.\r\n if (base == null) {\r\n base = new Ctor(10);\r\n isBase10 = true;\r\n } else {\r\n base = new Ctor(base);\r\n d = base.d;\r\n\r\n // Return NaN if base is negative, or non-finite, or is 0 or 1.\r\n if (base.s < 0 || !d || !d[0] || base.eq(1)) return new Ctor(NaN);\r\n\r\n isBase10 = base.eq(10);\r\n }\r\n\r\n d = arg.d;\r\n\r\n // Is arg negative, non-finite, 0 or 1?\r\n if (arg.s < 0 || !d || !d[0] || arg.eq(1)) {\r\n return new Ctor(d && !d[0] ? -1 / 0 : arg.s != 1 ? NaN : d ? 0 : 1 / 0);\r\n }\r\n\r\n // The result will have a non-terminating decimal expansion if base is 10 and arg is not an\r\n // integer power of 10.\r\n if (isBase10) {\r\n if (d.length > 1) {\r\n inf = true;\r\n } else {\r\n for (k = d[0]; k % 10 === 0;) k /= 10;\r\n inf = k !== 1;\r\n }\r\n }\r\n\r\n external = false;\r\n sd = pr + guard;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n\r\n // The result will have 5 rounding digits.\r\n r = divide(num, denominator, sd, 1);\r\n\r\n // If at a rounding boundary, i.e. the result's rounding digits are [49]9999 or [50]0000,\r\n // calculate 10 further digits.\r\n //\r\n // If the result is known to have an infinite decimal expansion, repeat this until it is clear\r\n // that the result is above or below the boundary. Otherwise, if after calculating the 10\r\n // further digits, the last 14 are nines, round up and assume the result is exact.\r\n // Also assume the result is exact if the last 14 are zero.\r\n //\r\n // Example of a result that will be incorrectly rounded:\r\n // log[1048576](4503599627370502) = 2.60000000000000009610279511444746...\r\n // The above result correctly rounded using ROUND_CEIL to 1 decimal place should be 2.7, but it\r\n // will be given as 2.6 as there are 15 zeros immediately after the requested decimal place, so\r\n // the exact result would be assumed to be 2.6, which rounded using ROUND_CEIL to 1 decimal\r\n // place is still 2.6.\r\n if (checkRoundingDigits(r.d, k = pr, rm)) {\r\n\r\n do {\r\n sd += 10;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n r = divide(num, denominator, sd, 1);\r\n\r\n if (!inf) {\r\n\r\n // Check for 14 nines from the 2nd rounding digit, as the first may be 4.\r\n if (+digitsToString(r.d).slice(k + 1, k + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n\r\n break;\r\n }\r\n } while (checkRoundingDigits(r.d, k += 10, rm));\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, pr, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the maximum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\nP.max = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 'lt');\r\n};\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the minimum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\nP.min = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 'gt');\r\n};\r\n */\r\n\r\n\r\n/*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.minus = P.sub = function (y) {\r\n var d, e, i, j, k, len, pr, rm, xd, xe, xLTy, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return y negated if x is finite and y is \u00B1Infinity.\r\n else if (x.d) y.s = -y.s;\r\n\r\n // Return x if y is finite and x is \u00B1Infinity.\r\n // Return x if both are \u00B1Infinity with different signs.\r\n // Return NaN if both are \u00B1Infinity with the same sign.\r\n else y = new Ctor(y.d || x.s !== y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.plus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return y negated if x is zero and y is non-zero.\r\n if (yd[0]) y.s = -y.s;\r\n\r\n // Return x if y is zero and x is non-zero.\r\n else if (xd[0]) y = new Ctor(x);\r\n\r\n // Return zero if both are zero.\r\n // From IEEE 754 (2008) 6.3: 0 - 0 = -0 - -0 = -0 when rounding to -Infinity.\r\n else return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n e = mathfloor(y.e / LOG_BASE);\r\n xe = mathfloor(x.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n k = xe - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (k) {\r\n xLTy = k < 0;\r\n\r\n if (xLTy) {\r\n d = xd;\r\n k = -k;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = xe;\r\n len = xd.length;\r\n }\r\n\r\n // Numbers with massively different exponents would result in a very high number of\r\n // zeros needing to be prepended, but this can be avoided while still ensuring correct\r\n // rounding by limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n if (k > i) {\r\n k = i;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents.\r\n d.reverse();\r\n for (i = k; i--;) d.push(0);\r\n d.reverse();\r\n\r\n // Base 1e7 exponents equal.\r\n } else {\r\n\r\n // Check digits to determine which is the bigger number.\r\n\r\n i = xd.length;\r\n len = yd.length;\r\n xLTy = i < len;\r\n if (xLTy) len = i;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (xd[i] != yd[i]) {\r\n xLTy = xd[i] < yd[i];\r\n break;\r\n }\r\n }\r\n\r\n k = 0;\r\n }\r\n\r\n if (xLTy) {\r\n d = xd;\r\n xd = yd;\r\n yd = d;\r\n y.s = -y.s;\r\n }\r\n\r\n len = xd.length;\r\n\r\n // Append zeros to `xd` if shorter.\r\n // Don't add zeros to `yd` if shorter as subtraction only needs to start at `yd` length.\r\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n // Subtract yd from xd.\r\n for (i = yd.length; i > k;) {\r\n\r\n if (xd[--i] < yd[i]) {\r\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n --xd[j];\r\n xd[i] += BASE;\r\n }\r\n\r\n xd[i] -= yd[i];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] === 0;) xd.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n // Zero?\r\n if (!xd[0]) return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n};\r\n\r\n\r\n/*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * The result depends on the modulo mode.\r\n *\r\n */\r\nP.modulo = P.mod = function (y) {\r\n var q,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // Return NaN if x is \u00B1Infinity or NaN, or y is NaN or \u00B10.\r\n if (!x.d || !y.s || y.d && !y.d[0]) return new Ctor(NaN);\r\n\r\n // Return x if y is \u00B1Infinity or x is \u00B10.\r\n if (!y.d || x.d && !x.d[0]) {\r\n return finalise(new Ctor(x), Ctor.precision, Ctor.rounding);\r\n }\r\n\r\n // Prevent rounding of intermediate calculations.\r\n external = false;\r\n\r\n if (Ctor.modulo == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // result = x - q * y where 0 <= result < abs(y)\r\n q = divide(x, y.abs(), 0, 3, 1);\r\n q.s *= y.s;\r\n } else {\r\n q = divide(x, y, 0, Ctor.modulo, 1);\r\n }\r\n\r\n q = q.times(y);\r\n\r\n external = true;\r\n\r\n return x.minus(q);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.naturalExponential = P.exp = function () {\r\n return naturalExponential(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.naturalLogarithm = P.ln = function () {\r\n return naturalLogarithm(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\r\nP.negated = P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s;\r\n return finalise(x);\r\n};\r\n\r\n\r\n/*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.plus = P.add = function (y) {\r\n var carry, d, e, i, k, len, pr, rm, xd, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return x if y is finite and x is \u00B1Infinity.\r\n // Return x if both are \u00B1Infinity with the same sign.\r\n // Return NaN if both are \u00B1Infinity with different signs.\r\n // Return y if x is finite and y is \u00B1Infinity.\r\n else if (!x.d) y = new Ctor(y.d || x.s === y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.minus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return x if y is zero.\r\n // Return y if y is non-zero.\r\n if (!yd[0]) y = new Ctor(x);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n k = mathfloor(x.e / LOG_BASE);\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n i = k - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (i) {\r\n\r\n if (i < 0) {\r\n d = xd;\r\n i = -i;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = k;\r\n len = xd.length;\r\n }\r\n\r\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n k = Math.ceil(pr / LOG_BASE);\r\n len = k > len ? k + 1 : len + 1;\r\n\r\n if (i > len) {\r\n i = len;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n d.reverse();\r\n for (; i--;) d.push(0);\r\n d.reverse();\r\n }\r\n\r\n len = xd.length;\r\n i = yd.length;\r\n\r\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n if (len - i < 0) {\r\n i = len;\r\n d = yd;\r\n yd = xd;\r\n xd = d;\r\n }\r\n\r\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n for (carry = 0; i;) {\r\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n xd[i] %= BASE;\r\n }\r\n\r\n if (carry) {\r\n xd.unshift(carry);\r\n ++e;\r\n }\r\n\r\n // Remove trailing zeros.\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\r\nP.precision = P.sd = function (z) {\r\n var k,\r\n x = this;\r\n\r\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n if (x.d) {\r\n k = getPrecision(x.d);\r\n if (z && x.e + 1 > k) k = x.e + 1;\r\n } else {\r\n k = NaN;\r\n }\r\n\r\n return k;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\r\nP.round = function () {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n return finalise(new Ctor(x), x.e + 1, Ctor.rounding);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n *\r\n * sin(0) = 0\r\n * sin(-0) = -0\r\n * sin(Infinity) = NaN\r\n * sin(-Infinity) = NaN\r\n * sin(NaN) = NaN\r\n *\r\n */\r\nP.sine = P.sin = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = sine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant > 2 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n */\r\nP.squareRoot = P.sqrt = function () {\r\n var m, n, sd, r, rep, t,\r\n x = this,\r\n d = x.d,\r\n e = x.e,\r\n s = x.s,\r\n Ctor = x.constructor;\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !d || !d[0]) {\r\n return new Ctor(!s || s < 0 && (!d || d[0]) ? NaN : d ? x : 1 / 0);\r\n }\r\n\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = digitsToString(d);\r\n\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Newton-Raphson iteration.\r\n for (;;) {\r\n t = r;\r\n r = t.plus(divide(x, t, sd + 2, 1)).times(0.5);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the tangent of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * tan(0) = 0\r\n * tan(-0) = -0\r\n * tan(Infinity) = NaN\r\n * tan(-Infinity) = NaN\r\n * tan(NaN) = NaN\r\n *\r\n */\r\nP.tangent = P.tan = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n x = x.sin();\r\n x.s = 1;\r\n x = divide(x, new Ctor(1).minus(x.times(x)).sqrt(), pr + 10, 0);\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 4 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new Decimal whose value is this Decimal times `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.times = P.mul = function (y) {\r\n var carry, e, i, k, r, rL, t, xdL, ydL,\r\n x = this,\r\n Ctor = x.constructor,\r\n xd = x.d,\r\n yd = (y = new Ctor(y)).d;\r\n\r\n y.s *= x.s;\r\n\r\n // If either is NaN, \u00B1Infinity or \u00B10...\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(!y.s || xd && !xd[0] && !yd || yd && !yd[0] && !xd\r\n\r\n // Return NaN if either is NaN.\r\n // Return NaN if x is \u00B10 and y is \u00B1Infinity, or y is \u00B10 and x is \u00B1Infinity.\r\n ? NaN\r\n\r\n // Return \u00B1Infinity if either is \u00B1Infinity.\r\n // Return \u00B10 if either is \u00B10.\r\n : !xd || !yd ? y.s / 0 : y.s * 0);\r\n }\r\n\r\n e = mathfloor(x.e / LOG_BASE) + mathfloor(y.e / LOG_BASE);\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Ensure xd points to the longer array.\r\n if (xdL < ydL) {\r\n r = xd;\r\n xd = yd;\r\n yd = r;\r\n rL = xdL;\r\n xdL = ydL;\r\n ydL = rL;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n r = [];\r\n rL = xdL + ydL;\r\n for (i = rL; i--;) r.push(0);\r\n\r\n // Multiply!\r\n for (i = ydL; --i >= 0;) {\r\n carry = 0;\r\n for (k = xdL + i; k > i;) {\r\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n r[k--] = t % BASE | 0;\r\n carry = t / BASE | 0;\r\n }\r\n\r\n r[k] = (r[k] + carry) % BASE | 0;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; !r[--rL];) r.pop();\r\n\r\n if (carry) ++e;\r\n else r.shift();\r\n\r\n y.d = r;\r\n y.e = getBase10Exponent(r, e);\r\n\r\n return external ? finalise(y, Ctor.precision, Ctor.rounding) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 2, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toBinary = function (sd, rm) {\r\n return toStringBinary(this, 2, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toDecimalPlaces = P.toDP = function (dp, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n if (dp === void 0) return x;\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n return finalise(x, dp + x.e + 1, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toExponential = function (dp, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x, true);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), dp + 1, rm);\r\n str = finiteToString(x, true, dp + 1);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\r\nP.toFixed = function (dp, rm) {\r\n var str, y,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n y = finalise(new Ctor(x), dp + x.e + 1, rm);\r\n str = finiteToString(y, false, dp + y.e + 1);\r\n }\r\n\r\n // To determine whether to add the minus sign look at the value before it was rounded,\r\n // i.e. look at `x` rather than `y`.\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return an array representing the value of this Decimal as a simple fraction with an integer\r\n * numerator and an integer denominator.\r\n *\r\n * The denominator will be a positive non-zero value less than or equal to the specified maximum\r\n * denominator. If a maximum denominator is not specified, the denominator will be the lowest\r\n * value necessary to represent the number exactly.\r\n *\r\n * [maxD] {number|string|Decimal} Maximum denominator. Integer >= 1 and < Infinity.\r\n *\r\n */\r\nP.toFraction = function (maxD) {\r\n var d, d0, d1, d2, e, k, n, n0, n1, pr, q, r,\r\n x = this,\r\n xd = x.d,\r\n Ctor = x.constructor;\r\n\r\n if (!xd) return new Ctor(x);\r\n\r\n n1 = d0 = new Ctor(1);\r\n d1 = n0 = new Ctor(0);\r\n\r\n d = new Ctor(d1);\r\n e = d.e = getPrecision(xd) - x.e - 1;\r\n k = e % LOG_BASE;\r\n d.d[0] = mathpow(10, k < 0 ? LOG_BASE + k : k);\r\n\r\n if (maxD == null) {\r\n\r\n // d is 10**e, the minimum max-denominator needed.\r\n maxD = e > 0 ? d : n1;\r\n } else {\r\n n = new Ctor(maxD);\r\n if (!n.isInt() || n.lt(n1)) throw Error(invalidArgument + n);\r\n maxD = n.gt(d) ? (e > 0 ? d : n1) : n;\r\n }\r\n\r\n external = false;\r\n n = new Ctor(digitsToString(xd));\r\n pr = Ctor.precision;\r\n Ctor.precision = e = xd.length * LOG_BASE * 2;\r\n\r\n for (;;) {\r\n q = divide(n, d, 0, 1, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.cmp(maxD) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n d2 = n1;\r\n n1 = n0.plus(q.times(d2));\r\n n0 = d2;\r\n d2 = d;\r\n d = n.minus(q.times(d2));\r\n n = d2;\r\n }\r\n\r\n d2 = divide(maxD.minus(d0), d1, 0, 1, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1?\r\n r = divide(n1, d1, e, 1).minus(x).abs().cmp(divide(n0, d0, e, 1).minus(x).abs()) < 1\r\n ? [n1, d1] : [n0, d0];\r\n\r\n Ctor.precision = pr;\r\n external = true;\r\n\r\n return r;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 16, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toHexadecimal = P.toHex = function (sd, rm) {\r\n return toStringBinary(this, 16, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Returns a new Decimal whose value is the nearest multiple of `y` in the direction of rounding\r\n * mode `rm`, or `Decimal.rounding` if `rm` is omitted, to the value of this Decimal.\r\n *\r\n * The return value will always have the same sign as this Decimal, unless either this Decimal\r\n * or `y` is NaN, in which case the return value will be also be NaN.\r\n *\r\n * The return value is not affected by the value of `precision`.\r\n *\r\n * y {number|string|Decimal} The magnitude to round to a multiple of.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toNearest() rounding mode not an integer: {rm}'\r\n * 'toNearest() rounding mode out of range: {rm}'\r\n *\r\n */\r\nP.toNearest = function (y, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n\r\n if (y == null) {\r\n\r\n // If x is not finite, return x.\r\n if (!x.d) return x;\r\n\r\n y = new Ctor(1);\r\n rm = Ctor.rounding;\r\n } else {\r\n y = new Ctor(y);\r\n if (rm === void 0) {\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(rm, 0, 8);\r\n }\r\n\r\n // If x is not finite, return x if y is not NaN, else NaN.\r\n if (!x.d) return y.s ? x : y;\r\n\r\n // If y is not finite, return Infinity with the sign of x if y is Infinity, else NaN.\r\n if (!y.d) {\r\n if (y.s) y.s = x.s;\r\n return y;\r\n }\r\n }\r\n\r\n // If y is not zero, calculate the nearest multiple of y to x.\r\n if (y.d[0]) {\r\n external = false;\r\n x = divide(x, y, 0, rm, 1).times(y);\r\n external = true;\r\n finalise(x);\r\n\r\n // If y is zero, return zero with the sign of x.\r\n } else {\r\n y.s = x.s;\r\n x = y;\r\n }\r\n\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return the value of this Decimal converted to a number primitive.\r\n * Zero keeps its sign.\r\n *\r\n */\r\nP.toNumber = function () {\r\n return +this;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 8, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toOctal = function (sd, rm) {\r\n return toStringBinary(this, 8, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`, rounded\r\n * to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * ECMAScript compliant.\r\n *\r\n * pow(x, NaN) = NaN\r\n * pow(x, \u00B10) = 1\r\n\r\n * pow(NaN, non-zero) = NaN\r\n * pow(abs(x) > 1, +Infinity) = +Infinity\r\n * pow(abs(x) > 1, -Infinity) = +0\r\n * pow(abs(x) == 1, \u00B1Infinity) = NaN\r\n * pow(abs(x) < 1, +Infinity) = +0\r\n * pow(abs(x) < 1, -Infinity) = +Infinity\r\n * pow(+Infinity, y > 0) = +Infinity\r\n * pow(+Infinity, y < 0) = +0\r\n * pow(-Infinity, odd integer > 0) = -Infinity\r\n * pow(-Infinity, even integer > 0) = +Infinity\r\n * pow(-Infinity, odd integer < 0) = -0\r\n * pow(-Infinity, even integer < 0) = +0\r\n * pow(+0, y > 0) = +0\r\n * pow(+0, y < 0) = +Infinity\r\n * pow(-0, odd integer > 0) = -0\r\n * pow(-0, even integer > 0) = +0\r\n * pow(-0, odd integer < 0) = -Infinity\r\n * pow(-0, even integer < 0) = +Infinity\r\n * pow(finite x < 0, finite non-integer) = NaN\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * Assuming the first 15 rounding digits are each equally likely to be any digit 0-9, the\r\n * probability of an incorrectly rounded result\r\n * P([49]9{14} | [50]0{14}) = 2 * 0.2 * 10^-14 = 4e-15 = 1/2.5e+14\r\n * i.e. 1 in 250,000,000,000,000\r\n *\r\n * If a result is incorrectly rounded the maximum error will be 1 ulp (unit in last place).\r\n *\r\n * y {number|string|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\nP.toPower = P.pow = function (y) {\r\n var e, k, pr, r, rm, s,\r\n x = this,\r\n Ctor = x.constructor,\r\n yn = +(y = new Ctor(y));\r\n\r\n // Either \u00B1Infinity, NaN or \u00B10?\r\n if (!x.d || !y.d || !x.d[0] || !y.d[0]) return new Ctor(mathpow(+x, yn));\r\n\r\n x = new Ctor(x);\r\n\r\n if (x.eq(1)) return x;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (y.eq(1)) return finalise(x, pr, rm);\r\n\r\n // y exponent\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n if (e >= y.d.length - 1 && (k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n r = intPow(Ctor, x, k, pr);\r\n return y.s < 0 ? new Ctor(1).div(r) : finalise(r, pr, rm);\r\n }\r\n\r\n s = x.s;\r\n\r\n // if x is negative\r\n if (s < 0) {\r\n\r\n // if y is not an integer\r\n if (e < y.d.length - 1) return new Ctor(NaN);\r\n\r\n // Result is positive if x is negative and the last digit of integer y is even.\r\n if ((y.d[e] & 1) == 0) s = 1;\r\n\r\n // if x.eq(-1)\r\n if (x.e == 0 && x.d[0] == 1 && x.d.length == 1) {\r\n x.s = s;\r\n return x;\r\n }\r\n }\r\n\r\n // Estimate result exponent.\r\n // x^y = 10^e, where e = y * log10(x)\r\n // log10(x) = log10(x_significand) + x_exponent\r\n // log10(x_significand) = ln(x_significand) / ln(10)\r\n k = mathpow(+x, yn);\r\n e = k == 0 || !isFinite(k)\r\n ? mathfloor(yn * (Math.log('0.' + digitsToString(x.d)) / Math.LN10 + x.e + 1))\r\n : new Ctor(k + '').e;\r\n\r\n // Exponent estimate may be incorrect e.g. x: 0.999999999999999999, y: 2.29, e: 0, r.e: -1.\r\n\r\n // Overflow/underflow?\r\n if (e > Ctor.maxE + 1 || e < Ctor.minE - 1) return new Ctor(e > 0 ? s / 0 : 0);\r\n\r\n external = false;\r\n Ctor.rounding = x.s = 1;\r\n\r\n // Estimate the extra guard digits needed to ensure five correct rounding digits from\r\n // naturalLogarithm(x). Example of failure without these extra digits (precision: 10):\r\n // new Decimal(2.32456).pow('2087987436534566.46411')\r\n // should be 1.162377823e+764914905173815, but is 1.162355823e+764914905173815\r\n k = Math.min(12, (e + '').length);\r\n\r\n // r = x^y = exp(y*ln(x))\r\n r = naturalExponential(y.times(naturalLogarithm(x, pr + k)), pr);\r\n\r\n // r may be Infinity, e.g. (0.9999999999999999).pow(-1e+40)\r\n if (r.d) {\r\n\r\n // Truncate to the required precision plus five rounding digits.\r\n r = finalise(r, pr + 5, 1);\r\n\r\n // If the rounding digits are [49]9999 or [50]0000 increase the precision by 10 and recalculate\r\n // the result.\r\n if (checkRoundingDigits(r.d, pr, rm)) {\r\n e = pr + 10;\r\n\r\n // Truncate to the increased precision plus five rounding digits.\r\n r = finalise(naturalExponential(y.times(naturalLogarithm(x, e + k)), e), e + 5, 1);\r\n\r\n // Check for 14 nines from the 2nd rounding digit (the first rounding digit may be 4 or 9).\r\n if (+digitsToString(r.d).slice(pr + 1, pr + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n }\r\n }\r\n\r\n r.s = s;\r\n external = true;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(r, pr, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toPrecision = function (sd, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), sd, rm);\r\n str = finiteToString(x, sd <= x.e || x.e <= Ctor.toExpNeg, sd);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toSD() digits out of range: {sd}'\r\n * 'toSD() digits not an integer: {sd}'\r\n * 'toSD() rounding mode not an integer: {rm}'\r\n * 'toSD() rounding mode out of range: {rm}'\r\n *\r\n */\r\nP.toSignificantDigits = P.toSD = function (sd, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n }\r\n\r\n return finalise(new Ctor(x), sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\r\nP.toString = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal truncated to a whole number.\r\n *\r\n */\r\nP.truncated = P.trunc = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 1);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal.\r\n * Unlike `toString`, negative zero will include the minus sign.\r\n *\r\n */\r\nP.valueOf = P.toJSON = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() ? '-' + str : str;\r\n};\r\n\r\n\r\n// Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n/*\r\n * digitsToString P.cubeRoot, P.logarithm, P.squareRoot, P.toFraction, P.toPower,\r\n * finiteToString, naturalExponential, naturalLogarithm\r\n * checkInt32 P.toDecimalPlaces, P.toExponential, P.toFixed, P.toNearest,\r\n * P.toPrecision, P.toSignificantDigits, toStringBinary, random\r\n * checkRoundingDigits P.logarithm, P.toPower, naturalExponential, naturalLogarithm\r\n * convertBase toStringBinary, parseOther\r\n * cos P.cos\r\n * divide P.atanh, P.cubeRoot, P.dividedBy, P.dividedToIntegerBy,\r\n * P.logarithm, P.modulo, P.squareRoot, P.tan, P.tanh, P.toFraction,\r\n * P.toNearest, toStringBinary, naturalExponential, naturalLogarithm,\r\n * taylorSeries, atan2, parseOther\r\n * finalise P.absoluteValue, P.atan, P.atanh, P.ceil, P.cos, P.cosh,\r\n * P.cubeRoot, P.dividedToIntegerBy, P.floor, P.logarithm, P.minus,\r\n * P.modulo, P.negated, P.plus, P.round, P.sin, P.sinh, P.squareRoot,\r\n * P.tan, P.times, P.toDecimalPlaces, P.toExponential, P.toFixed,\r\n * P.toNearest, P.toPower, P.toPrecision, P.toSignificantDigits,\r\n * P.truncated, divide, getLn10, getPi, naturalExponential,\r\n * naturalLogarithm, ceil, floor, round, trunc\r\n * finiteToString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf,\r\n * toStringBinary\r\n * getBase10Exponent P.minus, P.plus, P.times, parseOther\r\n * getLn10 P.logarithm, naturalLogarithm\r\n * getPi P.acos, P.asin, P.atan, toLessThanHalfPi, atan2\r\n * getPrecision P.precision, P.toFraction\r\n * getZeroString digitsToString, finiteToString\r\n * intPow P.toPower, parseOther\r\n * isOdd toLessThanHalfPi\r\n * maxOrMin max, min\r\n * naturalExponential P.naturalExponential, P.toPower\r\n * naturalLogarithm P.acosh, P.asinh, P.atanh, P.logarithm, P.naturalLogarithm,\r\n * P.toPower, naturalExponential\r\n * nonFiniteToString finiteToString, toStringBinary\r\n * parseDecimal Decimal\r\n * parseOther Decimal\r\n * sin P.sin\r\n * taylorSeries P.cosh, P.sinh, cos, sin\r\n * toLessThanHalfPi P.cos, P.sin\r\n * toStringBinary P.toBinary, P.toHexadecimal, P.toOctal\r\n * truncate intPow\r\n *\r\n * Throws: P.logarithm, P.precision, P.toFraction, checkInt32, getLn10, getPi,\r\n * naturalLogarithm, config, parseOther, random, Decimal\r\n */\r\n\r\n\r\nfunction digitsToString(d) {\r\n var i, k, ws,\r\n indexOfLastWord = d.length - 1,\r\n str = '',\r\n w = d[0];\r\n\r\n if (indexOfLastWord > 0) {\r\n str += w;\r\n for (i = 1; i < indexOfLastWord; i++) {\r\n ws = d[i] + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n str += ws;\r\n }\r\n\r\n w = d[i];\r\n ws = w + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n } else if (w === 0) {\r\n return '0';\r\n }\r\n\r\n // Remove trailing zeros of last w.\r\n for (; w % 10 === 0;) w /= 10;\r\n\r\n return str + w;\r\n}\r\n\r\n\r\nfunction checkInt32(i, min, max) {\r\n if (i !== ~~i || i < min || i > max) {\r\n throw Error(invalidArgument + i);\r\n }\r\n}\r\n\r\n\r\n/*\r\n * Check 5 rounding digits if `repeating` is null, 4 otherwise.\r\n * `repeating == null` if caller is `log` or `pow`,\r\n * `repeating != null` if caller is `naturalLogarithm` or `naturalExponential`.\r\n */\r\nfunction checkRoundingDigits(d, i, rm, repeating) {\r\n var di, k, r, rd;\r\n\r\n // Get the length of the first word of the array d.\r\n for (k = d[0]; k >= 10; k /= 10) --i;\r\n\r\n // Is the rounding digit in the first word of d?\r\n if (--i < 0) {\r\n i += LOG_BASE;\r\n di = 0;\r\n } else {\r\n di = Math.ceil((i + 1) / LOG_BASE);\r\n i %= LOG_BASE;\r\n }\r\n\r\n // i is the index (0 - 6) of the rounding digit.\r\n // E.g. if within the word 3487563 the first rounding digit is 5,\r\n // then i = 4, k = 1000, rd = 3487563 % 1000 = 563\r\n k = mathpow(10, LOG_BASE - i);\r\n rd = d[di] % k | 0;\r\n\r\n if (repeating == null) {\r\n if (i < 3) {\r\n if (i == 0) rd = rd / 100 | 0;\r\n else if (i == 1) rd = rd / 10 | 0;\r\n r = rm < 4 && rd == 99999 || rm > 3 && rd == 49999 || rd == 50000 || rd == 0;\r\n } else {\r\n r = (rm < 4 && rd + 1 == k || rm > 3 && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 100 | 0) == mathpow(10, i - 2) - 1 ||\r\n (rd == k / 2 || rd == 0) && (d[di + 1] / k / 100 | 0) == 0;\r\n }\r\n } else {\r\n if (i < 4) {\r\n if (i == 0) rd = rd / 1000 | 0;\r\n else if (i == 1) rd = rd / 100 | 0;\r\n else if (i == 2) rd = rd / 10 | 0;\r\n r = (repeating || rm < 4) && rd == 9999 || !repeating && rm > 3 && rd == 4999;\r\n } else {\r\n r = ((repeating || rm < 4) && rd + 1 == k ||\r\n (!repeating && rm > 3) && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 1000 | 0) == mathpow(10, i - 3) - 1;\r\n }\r\n }\r\n\r\n return r;\r\n}\r\n\r\n\r\n// Convert string of `baseIn` to an array of numbers of `baseOut`.\r\n// Eg. convertBase('255', 10, 16) returns [15, 15].\r\n// Eg. convertBase('ff', 16, 10) returns [2, 5, 5].\r\nfunction convertBase(str, baseIn, baseOut) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n strL = str.length;\r\n\r\n for (; i < strL;) {\r\n for (arrL = arr.length; arrL--;) arr[arrL] *= baseIn;\r\n arr[0] += NUMERALS.indexOf(str.charAt(i++));\r\n for (j = 0; j < arr.length; j++) {\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] === void 0) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n}\r\n\r\n\r\n/*\r\n * cos(x) = 1 - x^2/2! + x^4/4! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\nfunction cosine(Ctor, x) {\r\n var k, len, y;\r\n\r\n if (x.isZero()) return x;\r\n\r\n // Argument reduction: cos(4x) = 8*(cos^4(x) - cos^2(x)) + 1\r\n // i.e. cos(x) = 8*(cos^4(x/4) - cos^2(x/4)) + 1\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n len = x.d.length;\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n y = (1 / tinyPow(4, k)).toString();\r\n } else {\r\n k = 16;\r\n y = '2.3283064365386962890625e-10';\r\n }\r\n\r\n Ctor.precision += k;\r\n\r\n x = taylorSeries(Ctor, 1, x.times(y), new Ctor(1));\r\n\r\n // Reverse argument reduction\r\n for (var i = k; i--;) {\r\n var cos2x = x.times(x);\r\n x = cos2x.times(cos2x).minus(cos2x).times(8).plus(1);\r\n }\r\n\r\n Ctor.precision -= k;\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Perform division in the specified base.\r\n */\r\nvar divide = (function () {\r\n\r\n // Assumes non-zero x and k, and hence non-zero result.\r\n function multiplyInteger(x, k, base) {\r\n var temp,\r\n carry = 0,\r\n i = x.length;\r\n\r\n for (x = x.slice(); i--;) {\r\n temp = x[i] * k + carry;\r\n x[i] = temp % base | 0;\r\n carry = temp / base | 0;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, r;\r\n\r\n if (aL != bL) {\r\n r = aL > bL ? 1 : -1;\r\n } else {\r\n for (i = r = 0; i < aL; i++) {\r\n if (a[i] != b[i]) {\r\n r = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1;) a.shift();\r\n }\r\n\r\n return function (x, y, pr, rm, dp, base) {\r\n var cmp, e, i, k, logBase, more, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0,\r\n yL, yz,\r\n Ctor = x.constructor,\r\n sign = x.s == y.s ? 1 : -1,\r\n xd = x.d,\r\n yd = y.d;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(// Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xd ? yd && xd[0] == yd[0] : !yd) ? NaN :\r\n\r\n // Return \u00B10 if x is 0 or y is \u00B1Infinity, or return \u00B1Infinity as y is 0.\r\n xd && xd[0] == 0 || !yd ? sign * 0 : sign / 0);\r\n }\r\n\r\n if (base) {\r\n logBase = 1;\r\n e = x.e - y.e;\r\n } else {\r\n base = BASE;\r\n logBase = LOG_BASE;\r\n e = mathfloor(x.e / logBase) - mathfloor(y.e / logBase);\r\n }\r\n\r\n yL = yd.length;\r\n xL = xd.length;\r\n q = new Ctor(sign);\r\n qd = q.d = [];\r\n\r\n // Result exponent may be one less than e.\r\n // The digit array of a Decimal from toStringBinary may have trailing zeros.\r\n for (i = 0; yd[i] == (xd[i] || 0); i++);\r\n\r\n if (yd[i] > (xd[i] || 0)) e--;\r\n\r\n if (pr == null) {\r\n sd = pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else if (dp) {\r\n sd = pr + (x.e - y.e) + 1;\r\n } else {\r\n sd = pr;\r\n }\r\n\r\n if (sd < 0) {\r\n qd.push(1);\r\n more = true;\r\n } else {\r\n\r\n // Convert precision in number of base 10 digits to base 1e7 digits.\r\n sd = sd / logBase + 2 | 0;\r\n i = 0;\r\n\r\n // divisor < 1e7\r\n if (yL == 1) {\r\n k = 0;\r\n yd = yd[0];\r\n sd++;\r\n\r\n // k is the carry.\r\n for (; (i < xL || k) && sd--; i++) {\r\n t = k * base + (xd[i] || 0);\r\n qd[i] = t / yd | 0;\r\n k = t % yd | 0;\r\n }\r\n\r\n more = k || i < xL;\r\n\r\n // divisor >= 1e7\r\n } else {\r\n\r\n // Normalise xd and yd so highest order digit of yd is >= base/2\r\n k = base / (yd[0] + 1) | 0;\r\n\r\n if (k > 1) {\r\n yd = multiplyInteger(yd, k, base);\r\n xd = multiplyInteger(xd, k, base);\r\n yL = yd.length;\r\n xL = xd.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xd.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL;) rem[remL++] = 0;\r\n\r\n yz = yd.slice();\r\n yz.unshift(0);\r\n yd0 = yd[0];\r\n\r\n if (yd[1] >= base / 2) ++yd0;\r\n\r\n do {\r\n k = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, k.\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // k will be how many times the divisor goes into the current remainder.\r\n k = rem0 / yd0 | 0;\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (k)\r\n // 2. if product > remainder: product -= divisor, k--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n if (k > 1) {\r\n if (k >= base) k = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiplyInteger(yd, k, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n cmp = compare(prod, rem, prodL, remL);\r\n\r\n // product > remainder.\r\n if (cmp == 1) {\r\n k--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yd, prodL, base);\r\n }\r\n } else {\r\n\r\n // cmp is -1.\r\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n if (k == 0) cmp = k = 1;\r\n prod = yd.slice();\r\n }\r\n\r\n prodL = prod.length;\r\n if (prodL < remL) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n\r\n // If product was < previous remainder.\r\n if (cmp == -1) {\r\n remL = rem.length;\r\n\r\n // Compare divisor and new remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n if (cmp < 1) {\r\n k++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yd, remL, base);\r\n }\r\n }\r\n\r\n remL = rem.length;\r\n } else if (cmp === 0) {\r\n k++;\r\n rem = [0];\r\n } // if cmp === 1, k will be 0\r\n\r\n // Add the next digit, k, to the result array.\r\n qd[i++] = k;\r\n\r\n // Update the remainder.\r\n if (cmp && rem[0]) {\r\n rem[remL++] = xd[xi] || 0;\r\n } else {\r\n rem = [xd[xi]];\r\n remL = 1;\r\n }\r\n\r\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n\r\n more = rem[0] !== void 0;\r\n }\r\n\r\n // Leading zero?\r\n if (!qd[0]) qd.shift();\r\n }\r\n\r\n // logBase is 1 when divide is being used for base conversion.\r\n if (logBase == 1) {\r\n q.e = e;\r\n inexact = more;\r\n } else {\r\n\r\n // To calculate q.e, first get the number of digits of qd[0].\r\n for (i = 1, k = qd[0]; k >= 10; k /= 10) i++;\r\n q.e = i + e * logBase - 1;\r\n\r\n finalise(q, dp ? pr + q.e + 1 : pr, rm, more);\r\n }\r\n\r\n return q;\r\n };\r\n})();\r\n\r\n\r\n/*\r\n * Round `x` to `sd` significant digits using rounding mode `rm`.\r\n * Check for over/under-flow.\r\n */\r\n function finalise(x, sd, rm, isTruncated) {\r\n var digits, i, j, k, rd, roundUp, w, xd, xdi,\r\n Ctor = x.constructor;\r\n\r\n // Don't round if sd is null or undefined.\r\n out: if (sd != null) {\r\n xd = x.d;\r\n\r\n // Infinity/NaN.\r\n if (!xd) return x;\r\n\r\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // w: the word of xd containing rd, a base 1e7 number.\r\n // xdi: the index of w within xd.\r\n // digits: the number of digits of w.\r\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n // they had leading zeros)\r\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n // Get the length of the first word of the digits array xd.\r\n for (digits = 1, k = xd[0]; k >= 10; k /= 10) digits++;\r\n i = sd - digits;\r\n\r\n // Is the rounding digit in the first word of xd?\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n w = xd[xdi = 0];\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = w / mathpow(10, digits - j - 1) % 10 | 0;\r\n } else {\r\n xdi = Math.ceil((i + 1) / LOG_BASE);\r\n k = xd.length;\r\n if (xdi >= k) {\r\n if (isTruncated) {\r\n\r\n // Needed by `naturalExponential`, `naturalLogarithm` and `squareRoot`.\r\n for (; k++ <= xdi;) xd.push(0);\r\n w = rd = 0;\r\n digits = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n w = k = xd[xdi];\r\n\r\n // Get the number of digits of w.\r\n for (digits = 1; k >= 10; k /= 10) digits++;\r\n\r\n // Get the index of rd within w.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within w, adjusted for leading zeros.\r\n // The number of leading zeros of w is given by LOG_BASE - digits.\r\n j = i - LOG_BASE + digits;\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = j < 0 ? 0 : w / mathpow(10, digits - j - 1) % 10 | 0;\r\n }\r\n }\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n isTruncated = isTruncated || sd < 0 ||\r\n xd[xdi + 1] !== void 0 || (j < 0 ? w : w % mathpow(10, digits - j - 1));\r\n\r\n // The expression `w % mathpow(10, digits - j - 1)` returns all the digits of w to the right\r\n // of the digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression\r\n // will give 714.\r\n\r\n roundUp = rm < 4\r\n ? (rd || isTruncated) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || isTruncated || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? w / mathpow(10, digits - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xd[0]) {\r\n xd.length = 0;\r\n if (roundUp) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xd[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xd.length = xdi;\r\n k = 1;\r\n xdi--;\r\n } else {\r\n xd.length = xdi + 1;\r\n k = mathpow(10, LOG_BASE - i);\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of w.\r\n xd[xdi] = j > 0 ? (w / mathpow(10, digits - j) % mathpow(10, j) | 0) * k : 0;\r\n }\r\n\r\n if (roundUp) {\r\n for (;;) {\r\n\r\n // Is the digit to be rounded up in the first word of xd?\r\n if (xdi == 0) {\r\n\r\n // i will be the length of xd[0] before k is added.\r\n for (i = 1, j = xd[0]; j >= 10; j /= 10) i++;\r\n j = xd[0] += k;\r\n for (k = 1; j >= 10; j /= 10) k++;\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xd[0] == BASE) xd[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xd[xdi] += k;\r\n if (xd[xdi] != BASE) break;\r\n xd[xdi--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n }\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > Ctor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < Ctor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // Ctor.underflow = true;\r\n } // else Ctor.underflow = false;\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\nfunction finiteToString(x, isExp, sd) {\r\n if (!x.isFinite()) return nonFiniteToString(x);\r\n var k,\r\n e = x.e,\r\n str = digitsToString(x.d),\r\n len = str.length;\r\n\r\n if (isExp) {\r\n if (sd && (k = sd - len) > 0) {\r\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n } else if (len > 1) {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n\r\n str = str + (x.e < 0 ? 'e' : 'e+') + x.e;\r\n } else if (e < 0) {\r\n str = '0.' + getZeroString(-e - 1) + str;\r\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n } else if (e >= len) {\r\n str += getZeroString(e + 1 - len);\r\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n } else {\r\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n if (sd && (k = sd - len) > 0) {\r\n if (e + 1 === len) str += '.';\r\n str += getZeroString(k);\r\n }\r\n }\r\n\r\n return str;\r\n}\r\n\r\n\r\n// Calculate the base 10 exponent from the base 1e7 exponent.\r\nfunction getBase10Exponent(digits, e) {\r\n var w = digits[0];\r\n\r\n // Add the number of digits of the first word of the digits array.\r\n for ( e *= LOG_BASE; w >= 10; w /= 10) e++;\r\n return e;\r\n}\r\n\r\n\r\nfunction getLn10(Ctor, sd, pr) {\r\n if (sd > LN10_PRECISION) {\r\n\r\n // Reset global state in case the exception is caught.\r\n external = true;\r\n if (pr) Ctor.precision = pr;\r\n throw Error(precisionLimitExceeded);\r\n }\r\n return finalise(new Ctor(LN10), sd, 1, true);\r\n}\r\n\r\n\r\nfunction getPi(Ctor, sd, rm) {\r\n if (sd > PI_PRECISION) throw Error(precisionLimitExceeded);\r\n return finalise(new Ctor(PI), sd, rm, true);\r\n}\r\n\r\n\r\nfunction getPrecision(digits) {\r\n var w = digits.length - 1,\r\n len = w * LOG_BASE + 1;\r\n\r\n w = digits[w];\r\n\r\n // If non-zero...\r\n if (w) {\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n for (; w % 10 == 0; w /= 10) len--;\r\n\r\n // Add the number of digits of the first word.\r\n for (w = digits[0]; w >= 10; w /= 10) len++;\r\n }\r\n\r\n return len;\r\n}\r\n\r\n\r\nfunction getZeroString(k) {\r\n var zs = '';\r\n for (; k--;) zs += '0';\r\n return zs;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of Decimal `x` to the power `n`, where `n` is an\r\n * integer of type number.\r\n *\r\n * Implements 'exponentiation by squaring'. Called by `pow` and `parseOther`.\r\n *\r\n */\r\nfunction intPow(Ctor, x, n, pr) {\r\n var isTruncated,\r\n r = new Ctor(1),\r\n\r\n // Max n of 9007199254740991 takes 53 loop iterations.\r\n // Maximum digits array length; leaves [28, 34] guard digits.\r\n k = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n external = false;\r\n\r\n for (;;) {\r\n if (n % 2) {\r\n r = r.times(x);\r\n if (truncate(r.d, k)) isTruncated = true;\r\n }\r\n\r\n n = mathfloor(n / 2);\r\n if (n === 0) {\r\n\r\n // To ensure correct rounding when r.d is truncated, increment the last word if it is zero.\r\n n = r.d.length - 1;\r\n if (isTruncated && r.d[n] === 0) ++r.d[n];\r\n break;\r\n }\r\n\r\n x = x.times(x);\r\n truncate(x.d, k);\r\n }\r\n\r\n external = true;\r\n\r\n return r;\r\n}\r\n\r\n\r\nfunction isOdd(n) {\r\n return n.d[n.d.length - 1] & 1;\r\n}\r\n\r\n\r\n/*\r\n * Handle `max` and `min`. `ltgt` is 'lt' or 'gt'.\r\n */\r\nfunction maxOrMin(Ctor, args, ltgt) {\r\n var y,\r\n x = new Ctor(args[0]),\r\n i = 0;\r\n\r\n for (; ++i < args.length;) {\r\n y = new Ctor(args[i]);\r\n if (!y.s) {\r\n x = y;\r\n break;\r\n } else if (x[ltgt](y)) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * Max integer argument: exp('20723265836946413') = 6.3e+9000000000000000\r\n * Min integer argument: exp('-20723265836946411') = 1.2e-9000000000000000\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(Infinity) = Infinity\r\n * exp(-Infinity) = 0\r\n * exp(NaN) = NaN\r\n * exp(\u00B10) = 1\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n * The result will always be correctly rounded.\r\n *\r\n */\r\nfunction naturalExponential(x, sd) {\r\n var denominator, guard, j, pow, sum, t, wpr,\r\n rep = 0,\r\n i = 0,\r\n k = 0,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // 0/NaN/Infinity?\r\n if (!x.d || !x.d[0] || x.e > 17) {\r\n\r\n return new Ctor(x.d\r\n ? !x.d[0] ? 1 : x.s < 0 ? 0 : 1 / 0\r\n : x.s ? x.s < 0 ? 0 : x : 0 / 0);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n t = new Ctor(0.03125);\r\n\r\n // while abs(x) >= 0.1\r\n while (x.e > -2) {\r\n\r\n // x = x / 2^5\r\n x = x.times(t);\r\n k += 5;\r\n }\r\n\r\n // Use 2 * log10(2^k) + 5 (empirically derived) to estimate the increase in precision\r\n // necessary to ensure the first 4 rounding digits are correct.\r\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n wpr += guard;\r\n denominator = pow = sum = new Ctor(1);\r\n Ctor.precision = wpr;\r\n\r\n for (;;) {\r\n pow = finalise(pow.times(x), wpr, 1);\r\n denominator = denominator.times(++i);\r\n t = sum.plus(divide(pow, denominator, wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n j = k;\r\n while (j--) sum = finalise(sum.times(sum), wpr, 1);\r\n\r\n // Check to see if the first 4 rounding digits are [49]999.\r\n // If so, repeat the summation with a higher precision, otherwise\r\n // e.g. with precision: 18, rounding: 1\r\n // exp(18.404272462595034083567793919843761) = 98372560.1229999999 (should be 98372560.123)\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n\r\n if (rep < 3 && checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += 10;\r\n denominator = pow = t = new Ctor(1);\r\n i = 0;\r\n rep++;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n }\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * ln(-n) = NaN\r\n * ln(0) = -Infinity\r\n * ln(-0) = -Infinity\r\n * ln(1) = 0\r\n * ln(Infinity) = Infinity\r\n * ln(-Infinity) = NaN\r\n * ln(NaN) = NaN\r\n *\r\n * ln(n) (n != 1) is non-terminating.\r\n *\r\n */\r\nfunction naturalLogarithm(y, sd) {\r\n var c, c0, denominator, e, numerator, rep, sum, t, wpr, x1, x2,\r\n n = 1,\r\n guard = 10,\r\n x = y,\r\n xd = x.d,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // Is x negative or Infinity, NaN, 0 or 1?\r\n if (x.s < 0 || !xd || !xd[0] || !x.e && xd[0] == 1 && xd.length == 1) {\r\n return new Ctor(xd && !xd[0] ? -1 / 0 : x.s != 1 ? NaN : xd ? 0 : x);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n Ctor.precision = wpr += guard;\r\n c = digitsToString(xd);\r\n c0 = c.charAt(0);\r\n\r\n if (Math.abs(e = x.e) < 1.5e15) {\r\n\r\n // Argument reduction.\r\n // The series converges faster the closer the argument is to 1, so using\r\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\r\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n // later be divided by this number, then separate out the power of 10 using\r\n // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n // max n is 6 (gives 0.7 - 1.3)\r\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n x = x.times(y);\r\n c = digitsToString(x.d);\r\n c0 = c.charAt(0);\r\n n++;\r\n }\r\n\r\n e = x.e;\r\n\r\n if (c0 > 1) {\r\n x = new Ctor('0.' + c);\r\n e++;\r\n } else {\r\n x = new Ctor(c0 + '.' + c.slice(1));\r\n }\r\n } else {\r\n\r\n // The argument reduction method above may result in overflow if the argument y is a massive\r\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n x = naturalLogarithm(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n Ctor.precision = pr;\r\n\r\n return sd == null ? finalise(x, pr, rm, external = true) : x;\r\n }\r\n\r\n // x1 is x reduced to a value near 1.\r\n x1 = x;\r\n\r\n // Taylor series.\r\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n // where x = (y - 1)/(y + 1) (|x| < 1)\r\n sum = numerator = x = divide(x.minus(1), x.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = 3;\r\n\r\n for (;;) {\r\n numerator = finalise(numerator.times(x2), wpr, 1);\r\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n sum = sum.times(2);\r\n\r\n // Reverse the argument reduction. Check that e is not 0 because, besides preventing an\r\n // unnecessary calculation, -0 + 0 = +0 and to ensure correct rounding -0 needs to stay -0.\r\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n sum = divide(sum, new Ctor(n), wpr, 1);\r\n\r\n // Is rm > 3 and the first 4 rounding digits 4999, or rm < 4 (or the summation has\r\n // been repeated previously) and the first 4 rounding digits 9999?\r\n // If so, restart the summation with a higher precision, otherwise\r\n // e.g. with precision: 12, rounding: 1\r\n // ln(135520028.6126091714265381533) = 18.7246299999 when it should be 18.72463.\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n if (checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += guard;\r\n t = numerator = x = divide(x1.minus(1), x1.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = rep = 1;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n denominator += 2;\r\n }\r\n}\r\n\r\n\r\n// \u00B1Infinity, NaN.\r\nfunction nonFiniteToString(x) {\r\n // Unsigned.\r\n return String(x.s * x.s / 0);\r\n}\r\n\r\n\r\n/*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\r\nfunction parseDecimal(x, str) {\r\n var e, i, len;\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(len - 1) === 48; --len);\r\n str = str.slice(i, len);\r\n\r\n if (str) {\r\n len -= i;\r\n x.e = e = e - i - 1;\r\n x.d = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first word of the digits array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.d.push(+str.slice(0, i));\r\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--;) str += '0';\r\n x.d.push(+str);\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > x.constructor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < x.constructor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // x.constructor.underflow = true;\r\n } // else x.constructor.underflow = false;\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Parse the value of a new Decimal `x` from a string `str`, which is not a decimal value.\r\n */\r\nfunction parseOther(x, str) {\r\n var base, Ctor, divisor, i, isFloat, len, p, xd, xe;\r\n\r\n if (str.indexOf('_') > -1) {\r\n str = str.replace(/(\\d)_(?=\\d)/g, '$1');\r\n if (isDecimal.test(str)) return parseDecimal(x, str);\r\n } else if (str === 'Infinity' || str === 'NaN') {\r\n if (!+str) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return x;\r\n }\r\n\r\n if (isHex.test(str)) {\r\n base = 16;\r\n str = str.toLowerCase();\r\n } else if (isBinary.test(str)) {\r\n base = 2;\r\n } else if (isOctal.test(str)) {\r\n base = 8;\r\n } else {\r\n throw Error(invalidArgument + str);\r\n }\r\n\r\n // Is there a binary exponent part?\r\n i = str.search(/p/i);\r\n\r\n if (i > 0) {\r\n p = +str.slice(i + 1);\r\n str = str.substring(2, i);\r\n } else {\r\n str = str.slice(2);\r\n }\r\n\r\n // Convert `str` as an integer then divide the result by `base` raised to a power such that the\r\n // fraction part will be restored.\r\n i = str.indexOf('.');\r\n isFloat = i >= 0;\r\n Ctor = x.constructor;\r\n\r\n if (isFloat) {\r\n str = str.replace('.', '');\r\n len = str.length;\r\n i = len - i;\r\n\r\n // log[10](16) = 1.2041... , log[10](88) = 1.9444....\r\n divisor = intPow(Ctor, new Ctor(base), i, i * 2);\r\n }\r\n\r\n xd = convertBase(str, base, BASE);\r\n xe = xd.length - 1;\r\n\r\n // Remove trailing zeros.\r\n for (i = xe; xd[i] === 0; --i) xd.pop();\r\n if (i < 0) return new Ctor(x.s * 0);\r\n x.e = getBase10Exponent(xd, xe);\r\n x.d = xd;\r\n external = false;\r\n\r\n // At what precision to perform the division to ensure exact conversion?\r\n // maxDecimalIntegerPartDigitCount = ceil(log[10](b) * otherBaseIntegerPartDigitCount)\r\n // log[10](2) = 0.30103, log[10](8) = 0.90309, log[10](16) = 1.20412\r\n // E.g. ceil(1.2 * 3) = 4, so up to 4 decimal digits are needed to represent 3 hex int digits.\r\n // maxDecimalFractionPartDigitCount = {Hex:4|Oct:3|Bin:1} * otherBaseFractionPartDigitCount\r\n // Therefore using 4 * the number of digits of str will always be enough.\r\n if (isFloat) x = divide(x, divisor, len * 4);\r\n\r\n // Multiply by the binary exponent part if present.\r\n if (p) x = x.times(Math.abs(p) < 54 ? mathpow(2, p) : Decimal.pow(2, p));\r\n external = true;\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\nfunction sine(Ctor, x) {\r\n var k,\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n return x.isZero() ? x : taylorSeries(Ctor, 2, x, x);\r\n }\r\n\r\n // Argument reduction: sin(5x) = 16*sin^5(x) - 20*sin^3(x) + 5*sin(x)\r\n // i.e. sin(x) = 16*sin^5(x/5) - 20*sin^3(x/5) + 5*sin(x/5)\r\n // and sin(x) = sin(x/5)(5 + sin^2(x/5)(16sin^2(x/5) - 20))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(1 / tinyPow(5, k));\r\n x = taylorSeries(Ctor, 2, x, x);\r\n\r\n // Reverse argument reduction\r\n var sin2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sin2_x = x.times(x);\r\n x = x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20))));\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n// Calculate Taylor series for `cos`, `cosh`, `sin` and `sinh`.\r\nfunction taylorSeries(Ctor, n, x, y, isHyperbolic) {\r\n var j, t, u, x2,\r\n i = 1,\r\n pr = Ctor.precision,\r\n k = Math.ceil(pr / LOG_BASE);\r\n\r\n external = false;\r\n x2 = x.times(x);\r\n u = new Ctor(y);\r\n\r\n for (;;) {\r\n t = divide(u.times(x2), new Ctor(n++ * n++), pr, 1);\r\n u = isHyperbolic ? y.plus(t) : y.minus(t);\r\n y = divide(t.times(x2), new Ctor(n++ * n++), pr, 1);\r\n t = u.plus(y);\r\n\r\n if (t.d[k] !== void 0) {\r\n for (j = k; t.d[j] === u.d[j] && j--;);\r\n if (j == -1) break;\r\n }\r\n\r\n j = u;\r\n u = y;\r\n y = t;\r\n t = j;\r\n i++;\r\n }\r\n\r\n external = true;\r\n t.d.length = k + 1;\r\n\r\n return t;\r\n}\r\n\r\n\r\n// Exponent e must be positive and non-zero.\r\nfunction tinyPow(b, e) {\r\n var n = b;\r\n while (--e) n *= b;\r\n return n;\r\n}\r\n\r\n\r\n// Return the absolute value of `x` reduced to less than or equal to half pi.\r\nfunction toLessThanHalfPi(Ctor, x) {\r\n var t,\r\n isNeg = x.s < 0,\r\n pi = getPi(Ctor, Ctor.precision, 1),\r\n halfPi = pi.times(0.5);\r\n\r\n x = x.abs();\r\n\r\n if (x.lte(halfPi)) {\r\n quadrant = isNeg ? 4 : 1;\r\n return x;\r\n }\r\n\r\n t = x.divToInt(pi);\r\n\r\n if (t.isZero()) {\r\n quadrant = isNeg ? 3 : 2;\r\n } else {\r\n x = x.minus(t.times(pi));\r\n\r\n // 0 <= x < pi\r\n if (x.lte(halfPi)) {\r\n quadrant = isOdd(t) ? (isNeg ? 2 : 3) : (isNeg ? 4 : 1);\r\n return x;\r\n }\r\n\r\n quadrant = isOdd(t) ? (isNeg ? 1 : 4) : (isNeg ? 3 : 2);\r\n }\r\n\r\n return x.minus(pi).abs();\r\n}\r\n\r\n\r\n/*\r\n * Return the value of Decimal `x` as a string in base `baseOut`.\r\n *\r\n * If the optional `sd` argument is present include a binary exponent suffix.\r\n */\r\nfunction toStringBinary(x, baseOut, sd, rm) {\r\n var base, e, i, k, len, roundUp, str, xd, y,\r\n Ctor = x.constructor,\r\n isExp = sd !== void 0;\r\n\r\n if (isExp) {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n } else {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n }\r\n\r\n if (!x.isFinite()) {\r\n str = nonFiniteToString(x);\r\n } else {\r\n str = finiteToString(x);\r\n i = str.indexOf('.');\r\n\r\n // Use exponential notation according to `toExpPos` and `toExpNeg`? No, but if required:\r\n // maxBinaryExponent = floor((decimalExponent + 1) * log[2](10))\r\n // minBinaryExponent = floor(decimalExponent * log[2](10))\r\n // log[2](10) = 3.321928094887362347870319429489390175864\r\n\r\n if (isExp) {\r\n base = 2;\r\n if (baseOut == 16) {\r\n sd = sd * 4 - 3;\r\n } else if (baseOut == 8) {\r\n sd = sd * 3 - 2;\r\n }\r\n } else {\r\n base = baseOut;\r\n }\r\n\r\n // Convert the number as an integer then divide the result by its base raised to a power such\r\n // that the fraction part will be restored.\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n str = str.replace('.', '');\r\n y = new Ctor(1);\r\n y.e = str.length - i;\r\n y.d = convertBase(finiteToString(y), 10, base);\r\n y.e = y.d.length;\r\n }\r\n\r\n xd = convertBase(str, 10, base);\r\n e = len = xd.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] == 0;) xd.pop();\r\n\r\n if (!xd[0]) {\r\n str = isExp ? '0p+0' : '0';\r\n } else {\r\n if (i < 0) {\r\n e--;\r\n } else {\r\n x = new Ctor(x);\r\n x.d = xd;\r\n x.e = e;\r\n x = divide(x, y, sd, rm, 0, base);\r\n xd = x.d;\r\n e = x.e;\r\n roundUp = inexact;\r\n }\r\n\r\n // The rounding digit, i.e. the digit after the digit that may be rounded up.\r\n i = xd[sd];\r\n k = base / 2;\r\n roundUp = roundUp || xd[sd + 1] !== void 0;\r\n\r\n roundUp = rm < 4\r\n ? (i !== void 0 || roundUp) && (rm === 0 || rm === (x.s < 0 ? 3 : 2))\r\n : i > k || i === k && (rm === 4 || roundUp || rm === 6 && xd[sd - 1] & 1 ||\r\n rm === (x.s < 0 ? 8 : 7));\r\n\r\n xd.length = sd;\r\n\r\n if (roundUp) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (; ++xd[--sd] > base - 1;) {\r\n xd[sd] = 0;\r\n if (!sd) {\r\n ++e;\r\n xd.unshift(1);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n\r\n // Add binary exponent suffix?\r\n if (isExp) {\r\n if (len > 1) {\r\n if (baseOut == 16 || baseOut == 8) {\r\n i = baseOut == 16 ? 4 : 3;\r\n for (--len; len % i; len++) str += '0';\r\n xd = convertBase(str, base, baseOut);\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // xd[0] will always be be 1\r\n for (i = 1, str = '1.'; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n } else {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n }\r\n\r\n str = str + (e < 0 ? 'p' : 'p+') + e;\r\n } else if (e < 0) {\r\n for (; ++e;) str = '0' + str;\r\n str = '0.' + str;\r\n } else {\r\n if (++e > len) for (e -= len; e-- ;) str += '0';\r\n else if (e < len) str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n str = (baseOut == 16 ? '0x' : baseOut == 2 ? '0b' : baseOut == 8 ? '0o' : '') + str;\r\n }\r\n\r\n return x.s < 0 ? '-' + str : str;\r\n}\r\n\r\n\r\n// Does not strip trailing zeros.\r\nfunction truncate(arr, len) {\r\n if (arr.length > len) {\r\n arr.length = len;\r\n return true;\r\n }\r\n}\r\n\r\n\r\n// Decimal methods\r\n\r\n\r\n/*\r\n * abs\r\n * acos\r\n * acosh\r\n * add\r\n * asin\r\n * asinh\r\n * atan\r\n * atanh\r\n * atan2\r\n * cbrt\r\n * ceil\r\n * clamp\r\n * clone\r\n * config\r\n * cos\r\n * cosh\r\n * div\r\n * exp\r\n * floor\r\n * hypot\r\n * ln\r\n * log\r\n * log2\r\n * log10\r\n * max\r\n * min\r\n * mod\r\n * mul\r\n * pow\r\n * random\r\n * round\r\n * set\r\n * sign\r\n * sin\r\n * sinh\r\n * sqrt\r\n * sub\r\n * sum\r\n * tan\r\n * tanh\r\n * trunc\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the absolute value of `x`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction abs(x) {\r\n return new this(x).abs();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arccosine in radians of `x`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction acos(x) {\r\n return new this(x).acos();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction acosh(x) {\r\n return new this(x).acosh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sum of `x` and `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction add(x, y) {\r\n return new this(x).plus(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arcsine in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction asin(x) {\r\n return new this(x).asin();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction asinh(x) {\r\n return new this(x).asinh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction atan(x) {\r\n return new this(x).atan();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction atanh(x) {\r\n return new this(x).atanh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent in radians of `y/x` in the range -pi to pi\r\n * (inclusive), rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi, pi]\r\n *\r\n * y {number|string|Decimal} The y-coordinate.\r\n * x {number|string|Decimal} The x-coordinate.\r\n *\r\n * atan2(\u00B10, -0) = \u00B1pi\r\n * atan2(\u00B10, +0) = \u00B10\r\n * atan2(\u00B10, -x) = \u00B1pi for x > 0\r\n * atan2(\u00B10, x) = \u00B10 for x > 0\r\n * atan2(-y, \u00B10) = -pi/2 for y > 0\r\n * atan2(y, \u00B10) = pi/2 for y > 0\r\n * atan2(\u00B1y, -Infinity) = \u00B1pi for finite y > 0\r\n * atan2(\u00B1y, +Infinity) = \u00B10 for finite y > 0\r\n * atan2(\u00B1Infinity, x) = \u00B1pi/2 for finite x\r\n * atan2(\u00B1Infinity, -Infinity) = \u00B13*pi/4\r\n * atan2(\u00B1Infinity, +Infinity) = \u00B1pi/4\r\n * atan2(NaN, x) = NaN\r\n * atan2(y, NaN) = NaN\r\n *\r\n */\r\nfunction atan2(y, x) {\r\n y = new this(y);\r\n x = new this(x);\r\n var r,\r\n pr = this.precision,\r\n rm = this.rounding,\r\n wpr = pr + 4;\r\n\r\n // Either NaN\r\n if (!y.s || !x.s) {\r\n r = new this(NaN);\r\n\r\n // Both \u00B1Infinity\r\n } else if (!y.d && !x.d) {\r\n r = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75);\r\n r.s = y.s;\r\n\r\n // x is \u00B1Infinity or y is \u00B10\r\n } else if (!x.d || y.isZero()) {\r\n r = x.s < 0 ? getPi(this, pr, rm) : new this(0);\r\n r.s = y.s;\r\n\r\n // y is \u00B1Infinity or x is \u00B10\r\n } else if (!y.d || x.isZero()) {\r\n r = getPi(this, wpr, 1).times(0.5);\r\n r.s = y.s;\r\n\r\n // Both non-zero and finite\r\n } else if (x.s < 0) {\r\n this.precision = wpr;\r\n this.rounding = 1;\r\n r = this.atan(divide(y, x, wpr, 1));\r\n x = getPi(this, wpr, 1);\r\n this.precision = pr;\r\n this.rounding = rm;\r\n r = y.s < 0 ? r.minus(x) : r.plus(x);\r\n } else {\r\n r = this.atan(divide(y, x, wpr, 1));\r\n }\r\n\r\n return r;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cube root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction cbrt(x) {\r\n return new this(x).cbrt();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` rounded to an integer using `ROUND_CEIL`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction ceil(x) {\r\n return finalise(x = new this(x), x.e + 1, 2);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` clamped to the range delineated by `min` and `max`.\r\n *\r\n * x {number|string|Decimal}\r\n * min {number|string|Decimal}\r\n * max {number|string|Decimal}\r\n *\r\n */\r\nfunction clamp(x, min, max) {\r\n return new this(x).clamp(min, max);\r\n}\r\n\r\n\r\n/*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n * maxE {number}\r\n * minE {number}\r\n * modulo {number}\r\n * crypto {boolean|number}\r\n * defaults {true}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\r\nfunction config(obj) {\r\n if (!obj || typeof obj !== 'object') throw Error(decimalError + 'Object expected');\r\n var i, p, v,\r\n useDefaults = obj.defaults === true,\r\n ps = [\r\n 'precision', 1, MAX_DIGITS,\r\n 'rounding', 0, 8,\r\n 'toExpNeg', -EXP_LIMIT, 0,\r\n 'toExpPos', 0, EXP_LIMIT,\r\n 'maxE', 0, EXP_LIMIT,\r\n 'minE', -EXP_LIMIT, 0,\r\n 'modulo', 0, 9\r\n ];\r\n\r\n for (i = 0; i < ps.length; i += 3) {\r\n if (p = ps[i], useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n if (p = 'crypto', useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (v === true || v === false || v === 0 || v === 1) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n this[p] = true;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n } else {\r\n this[p] = false;\r\n }\r\n } else {\r\n throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n return this;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cosine of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction cos(x) {\r\n return new this(x).cos();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic cosine of `x`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction cosh(x) {\r\n return new this(x).cosh();\r\n}\r\n\r\n\r\n/*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\r\nfunction clone(obj) {\r\n var i, p, ps;\r\n\r\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * v {number|string|Decimal} A numeric value.\r\n *\r\n */\r\n function Decimal(v) {\r\n var e, i, t,\r\n x = this;\r\n\r\n // Decimal called without new.\r\n if (!(x instanceof Decimal)) return new Decimal(v);\r\n\r\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n // which points to Object.\r\n x.constructor = Decimal;\r\n\r\n // Duplicate.\r\n if (isDecimalInstance(v)) {\r\n x.s = v.s;\r\n\r\n if (external) {\r\n if (!v.d || v.e > Decimal.maxE) {\r\n\r\n // Infinity.\r\n x.e = NaN;\r\n x.d = null;\r\n } else if (v.e < Decimal.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n } else {\r\n x.e = v.e;\r\n x.d = v.d.slice();\r\n }\r\n } else {\r\n x.e = v.e;\r\n x.d = v.d ? v.d.slice() : v.d;\r\n }\r\n\r\n return;\r\n }\r\n\r\n t = typeof v;\r\n\r\n if (t === 'number') {\r\n if (v === 0) {\r\n x.s = 1 / v < 0 ? -1 : 1;\r\n x.e = 0;\r\n x.d = [0];\r\n return;\r\n }\r\n\r\n if (v < 0) {\r\n v = -v;\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n // Fast path for small integers.\r\n if (v === ~~v && v < 1e7) {\r\n for (e = 0, i = v; i >= 10; i /= 10) e++;\r\n\r\n if (external) {\r\n if (e > Decimal.maxE) {\r\n x.e = NaN;\r\n x.d = null;\r\n } else if (e < Decimal.minE) {\r\n x.e = 0;\r\n x.d = [0];\r\n } else {\r\n x.e = e;\r\n x.d = [v];\r\n }\r\n } else {\r\n x.e = e;\r\n x.d = [v];\r\n }\r\n\r\n return;\r\n\r\n // Infinity, NaN.\r\n } else if (v * 0 !== 0) {\r\n if (!v) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return;\r\n }\r\n\r\n return parseDecimal(x, v.toString());\r\n\r\n } else if (t !== 'string') {\r\n throw Error(invalidArgument + v);\r\n }\r\n\r\n // Minus sign?\r\n if ((i = v.charCodeAt(0)) === 45) {\r\n v = v.slice(1);\r\n x.s = -1;\r\n } else {\r\n // Plus sign?\r\n if (i === 43) v = v.slice(1);\r\n x.s = 1;\r\n }\r\n\r\n return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v);\r\n }\r\n\r\n Decimal.prototype = P;\r\n\r\n Decimal.ROUND_UP = 0;\r\n Decimal.ROUND_DOWN = 1;\r\n Decimal.ROUND_CEIL = 2;\r\n Decimal.ROUND_FLOOR = 3;\r\n Decimal.ROUND_HALF_UP = 4;\r\n Decimal.ROUND_HALF_DOWN = 5;\r\n Decimal.ROUND_HALF_EVEN = 6;\r\n Decimal.ROUND_HALF_CEIL = 7;\r\n Decimal.ROUND_HALF_FLOOR = 8;\r\n Decimal.EUCLID = 9;\r\n\r\n Decimal.config = Decimal.set = config;\r\n Decimal.clone = clone;\r\n Decimal.isDecimal = isDecimalInstance;\r\n\r\n Decimal.abs = abs;\r\n Decimal.acos = acos;\r\n Decimal.acosh = acosh; // ES6\r\n Decimal.add = add;\r\n Decimal.asin = asin;\r\n Decimal.asinh = asinh; // ES6\r\n Decimal.atan = atan;\r\n Decimal.atanh = atanh; // ES6\r\n Decimal.atan2 = atan2;\r\n Decimal.cbrt = cbrt; // ES6\r\n Decimal.ceil = ceil;\r\n Decimal.clamp = clamp;\r\n Decimal.cos = cos;\r\n Decimal.cosh = cosh; // ES6\r\n Decimal.div = div;\r\n Decimal.exp = exp;\r\n Decimal.floor = floor;\r\n Decimal.hypot = hypot; // ES6\r\n Decimal.ln = ln;\r\n Decimal.log = log;\r\n Decimal.log10 = log10; // ES6\r\n Decimal.log2 = log2; // ES6\r\n Decimal.max = max;\r\n Decimal.min = min;\r\n Decimal.mod = mod;\r\n Decimal.mul = mul;\r\n Decimal.pow = pow;\r\n Decimal.random = random;\r\n Decimal.round = round;\r\n Decimal.sign = sign; // ES6\r\n Decimal.sin = sin;\r\n Decimal.sinh = sinh; // ES6\r\n Decimal.sqrt = sqrt;\r\n Decimal.sub = sub;\r\n Decimal.sum = sum;\r\n Decimal.tan = tan;\r\n Decimal.tanh = tanh; // ES6\r\n Decimal.trunc = trunc; // ES6\r\n\r\n if (obj === void 0) obj = {};\r\n if (obj) {\r\n if (obj.defaults !== true) {\r\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'maxE', 'minE', 'modulo', 'crypto'];\r\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n }\r\n }\r\n\r\n Decimal.config(obj);\r\n\r\n return Decimal;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` divided by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction div(x, y) {\r\n return new this(x).div(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} The power to which to raise the base of the natural log.\r\n *\r\n */\r\nfunction exp(x) {\r\n return new this(x).exp();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` round to an integer using `ROUND_FLOOR`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction floor(x) {\r\n return finalise(x = new this(x), x.e + 1, 3);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of the sum of the squares of the arguments,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * hypot(a, b, ...) = sqrt(a^2 + b^2 + ...)\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\nfunction hypot() {\r\n var i, n,\r\n t = new this(0);\r\n\r\n external = false;\r\n\r\n for (i = 0; i < arguments.length;) {\r\n n = new this(arguments[i++]);\r\n if (!n.d) {\r\n if (n.s) {\r\n external = true;\r\n return new this(1 / 0);\r\n }\r\n t = n;\r\n } else if (t.d) {\r\n t = t.plus(n.times(n));\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return t.sqrt();\r\n}\r\n\r\n\r\n/*\r\n * Return true if object is a Decimal instance (where Decimal is any Decimal constructor),\r\n * otherwise return false.\r\n *\r\n */\r\nfunction isDecimalInstance(obj) {\r\n return obj instanceof Decimal || obj && obj.toStringTag === tag || false;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction ln(x) {\r\n return new this(x).ln();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the log of `x` to the base `y`, or to base 10 if no base\r\n * is specified, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * log[y](x)\r\n *\r\n * x {number|string|Decimal} The argument of the logarithm.\r\n * y {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\nfunction log(x, y) {\r\n return new this(x).log(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the base 2 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction log2(x) {\r\n return new this(x).log(2);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the base 10 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction log10(x) {\r\n return new this(x).log(10);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\nfunction max() {\r\n return maxOrMin(this, arguments, 'lt');\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\nfunction min() {\r\n return maxOrMin(this, arguments, 'gt');\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` modulo `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction mod(x, y) {\r\n return new this(x).mod(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` multiplied by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction mul(x, y) {\r\n return new this(x).mul(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` raised to the power `y`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} The base.\r\n * y {number|string|Decimal} The exponent.\r\n *\r\n */\r\nfunction pow(x, y) {\r\n return new this(x).pow(y);\r\n}\r\n\r\n\r\n/*\r\n * Returns a new Decimal with a random value equal to or greater than 0 and less than 1, and with\r\n * `sd`, or `Decimal.precision` if `sd` is omitted, significant digits (or less if trailing zeros\r\n * are produced).\r\n *\r\n * [sd] {number} Significant digits. Integer, 0 to MAX_DIGITS inclusive.\r\n *\r\n */\r\nfunction random(sd) {\r\n var d, e, k, n,\r\n i = 0,\r\n r = new this(1),\r\n rd = [];\r\n\r\n if (sd === void 0) sd = this.precision;\r\n else checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n k = Math.ceil(sd / LOG_BASE);\r\n\r\n if (!this.crypto) {\r\n for (; i < k;) rd[i++] = Math.random() * 1e7 | 0;\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n } else if (crypto.getRandomValues) {\r\n d = crypto.getRandomValues(new Uint32Array(k));\r\n\r\n for (; i < k;) {\r\n n = d[i];\r\n\r\n // 0 <= n < 4294967296\r\n // Probability n >= 4.29e9, is 4967296 / 4294967296 = 0.00116 (1 in 865).\r\n if (n >= 4.29e9) {\r\n d[i] = crypto.getRandomValues(new Uint32Array(1))[0];\r\n } else {\r\n\r\n // 0 <= n <= 4289999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd[i++] = n % 1e7;\r\n }\r\n }\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n d = crypto.randomBytes(k *= 4);\r\n\r\n for (; i < k;) {\r\n\r\n // 0 <= n < 2147483648\r\n n = d[i] + (d[i + 1] << 8) + (d[i + 2] << 16) + ((d[i + 3] & 0x7f) << 24);\r\n\r\n // Probability n >= 2.14e9, is 7483648 / 2147483648 = 0.0035 (1 in 286).\r\n if (n >= 2.14e9) {\r\n crypto.randomBytes(4).copy(d, i);\r\n } else {\r\n\r\n // 0 <= n <= 2139999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd.push(n % 1e7);\r\n i += 4;\r\n }\r\n }\r\n\r\n i = k / 4;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n\r\n k = rd[--i];\r\n sd %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to sd.\r\n if (k && sd) {\r\n n = mathpow(10, LOG_BASE - sd);\r\n rd[i] = (k / n | 0) * n;\r\n }\r\n\r\n // Remove trailing words which are zero.\r\n for (; rd[i] === 0; i--) rd.pop();\r\n\r\n // Zero?\r\n if (i < 0) {\r\n e = 0;\r\n rd = [0];\r\n } else {\r\n e = -1;\r\n\r\n // Remove leading words which are zero and adjust exponent accordingly.\r\n for (; rd[0] === 0; e -= LOG_BASE) rd.shift();\r\n\r\n // Count the digits of the first word of rd to determine leading zeros.\r\n for (k = 1, n = rd[0]; n >= 10; n /= 10) k++;\r\n\r\n // Adjust the exponent for leading zeros of the first word of rd.\r\n if (k < LOG_BASE) e -= LOG_BASE - k;\r\n }\r\n\r\n r.e = e;\r\n r.d = rd;\r\n\r\n return r;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` rounded to an integer using rounding mode `rounding`.\r\n *\r\n * To emulate `Math.round`, set rounding to 7 (ROUND_HALF_CEIL).\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction round(x) {\r\n return finalise(x = new this(x), x.e + 1, this.rounding);\r\n}\r\n\r\n\r\n/*\r\n * Return\r\n * 1 if x > 0,\r\n * -1 if x < 0,\r\n * 0 if x is 0,\r\n * -0 if x is -0,\r\n * NaN otherwise\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction sign(x) {\r\n x = new this(x);\r\n return x.d ? (x.d[0] ? x.s : 0 * x.s) : x.s || NaN;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sine of `x`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction sin(x) {\r\n return new this(x).sin();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic sine of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction sinh(x) {\r\n return new this(x).sinh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction sqrt(x) {\r\n return new this(x).sqrt();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` minus `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction sub(x, y) {\r\n return new this(x).sub(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sum of the arguments, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * Only the result is rounded, not the intermediate calculations.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\nfunction sum() {\r\n var i = 0,\r\n args = arguments,\r\n x = new this(args[i]);\r\n\r\n external = false;\r\n for (; x.s && ++i < args.length;) x = x.plus(args[i]);\r\n external = true;\r\n\r\n return finalise(x, this.precision, this.rounding);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the tangent of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction tan(x) {\r\n return new this(x).tan();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic tangent of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction tanh(x) {\r\n return new this(x).tanh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` truncated to an integer.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction trunc(x) {\r\n return finalise(x = new this(x), x.e + 1, 1);\r\n}\r\n\r\n\r\nP[Symbol.for('nodejs.util.inspect.custom')] = P.toString;\r\nP[Symbol.toStringTag] = 'Decimal';\r\n\r\n// Create and configure initial Decimal constructor.\r\nexport var Decimal = P.constructor = clone(DEFAULTS);\r\n\r\n// Create the internal constants from their string values.\r\nLN10 = new Decimal(LN10);\r\nPI = new Decimal(PI);\r\n\r\nexport default Decimal;\r\n", "import Decimal from 'decimal.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'BigNumber';\nvar dependencies = ['?on', 'config'];\nexport var createBigNumberClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n on,\n config\n } = _ref;\n var BigNumber = Decimal.clone({\n precision: config.precision,\n modulo: Decimal.EUCLID\n });\n BigNumber.prototype = Object.create(BigNumber.prototype);\n\n /**\n * Attach type information\n */\n BigNumber.prototype.type = 'BigNumber';\n BigNumber.prototype.isBigNumber = true;\n\n /**\n * Get a JSON representation of a BigNumber containing\n * type information\n * @returns {Object} Returns a JSON object structured as:\n * `{\"mathjs\": \"BigNumber\", \"value\": \"0.2\"}`\n */\n BigNumber.prototype.toJSON = function () {\n return {\n mathjs: 'BigNumber',\n value: this.toString()\n };\n };\n\n /**\n * Instantiate a BigNumber from a JSON object\n * @param {Object} json a JSON object structured as:\n * `{\"mathjs\": \"BigNumber\", \"value\": \"0.2\"}`\n * @return {BigNumber}\n */\n BigNumber.fromJSON = function (json) {\n return new BigNumber(json.value);\n };\n if (on) {\n // listen for changed in the configuration, automatically apply changed precision\n on('config', function (curr, prev) {\n if (curr.precision !== prev.precision) {\n BigNumber.config({\n precision: curr.precision\n });\n }\n });\n }\n return BigNumber;\n}, {\n isClass: true\n});", "'use strict';\n\n/**\n *\n * This class allows the manipulation of complex numbers.\n * You can pass a complex number in different formats. Either as object, double, string or two integer parameters.\n *\n * Object form\n * { re: , im: }\n * { arg: , abs: }\n * { phi: , r: }\n *\n * Array / Vector form\n * [ real, imaginary ]\n *\n * Double form\n * 99.3 - Single double value\n *\n * String form\n * '23.1337' - Simple real number\n * '15+3i' - a simple complex number\n * '3-i' - a simple complex number\n *\n * Example:\n *\n * const c = new Complex('99.3+8i');\n * c.mul({r: 3, i: 9}).div(4.9).sub(3, 2);\n *\n */\n\n\nconst cosh = Math.cosh || function (x) {\n return Math.abs(x) < 1e-9 ? 1 - x : (Math.exp(x) + Math.exp(-x)) * 0.5;\n};\n\nconst sinh = Math.sinh || function (x) {\n return Math.abs(x) < 1e-9 ? x : (Math.exp(x) - Math.exp(-x)) * 0.5;\n};\n\n/**\n * Calculates cos(x) - 1 using Taylor series if x is small (-\u00BC\u03C0 \u2264 x \u2264 \u00BC\u03C0).\n *\n * @param {number} x\n * @returns {number} cos(x) - 1\n */\nconst cosm1 = function (x) {\n\n const b = Math.PI / 4;\n if (-b > x || x > b) {\n return Math.cos(x) - 1.0;\n }\n\n /* Calculate horner form of polynomial of taylor series in Q\n let fac = 1, alt = 1, pol = {};\n for (let i = 0; i <= 16; i++) {\n fac*= i || 1;\n if (i % 2 == 0) {\n pol[i] = new Fraction(1, alt * fac);\n alt = -alt;\n }\n }\n console.log(new Polynomial(pol).toHorner()); // (((((((1/20922789888000x^2-1/87178291200)x^2+1/479001600)x^2-1/3628800)x^2+1/40320)x^2-1/720)x^2+1/24)x^2-1/2)x^2+1\n */\n\n const xx = x * x;\n return xx * (\n xx * (\n xx * (\n xx * (\n xx * (\n xx * (\n xx * (\n xx / 20922789888000\n - 1 / 87178291200)\n + 1 / 479001600)\n - 1 / 3628800)\n + 1 / 40320)\n - 1 / 720)\n + 1 / 24)\n - 1 / 2);\n};\n\nconst hypot = function (x, y) {\n\n x = Math.abs(x);\n y = Math.abs(y);\n\n // Ensure `x` is the larger value\n if (x < y) [x, y] = [y, x];\n\n // If both are below the threshold, use straightforward Pythagoras\n if (x < 1e8) return Math.sqrt(x * x + y * y);\n\n // For larger values, scale to avoid overflow\n y /= x;\n return x * Math.sqrt(1 + y * y);\n};\n\nconst parser_exit = function () {\n throw SyntaxError('Invalid Param');\n};\n\n/**\n * Calculates log(sqrt(a^2+b^2)) in a way to avoid overflows\n *\n * @param {number} a\n * @param {number} b\n * @returns {number}\n */\nfunction logHypot(a, b) {\n\n const _a = Math.abs(a);\n const _b = Math.abs(b);\n\n if (a === 0) {\n return Math.log(_b);\n }\n\n if (b === 0) {\n return Math.log(_a);\n }\n\n if (_a < 3000 && _b < 3000) {\n return Math.log(a * a + b * b) * 0.5;\n }\n\n /* I got 4 ideas to compute this property without overflow:\n *\n * Testing 1000000 times with random samples for a,b \u2208 [1, 1000000000] against a big decimal library to get an error estimate\n *\n * 1. Only eliminate the square root: (OVERALL ERROR: 3.9122483030951116e-11)\n\n Math.log(a * a + b * b) / 2\n\n *\n *\n * 2. Try to use the non-overflowing pythagoras: (OVERALL ERROR: 8.889760039210159e-10)\n\n const fn = function(a, b) {\n a = Math.abs(a);\n b = Math.abs(b);\n let t = Math.min(a, b);\n a = Math.max(a, b);\n t = t / a;\n\n return Math.log(a) + Math.log(1 + t * t) / 2;\n };\n\n * 3. Abuse the identity cos(atan(y/x) = x / sqrt(x^2+y^2): (OVERALL ERROR: 3.4780178737037204e-10)\n\n Math.log(a / Math.cos(Math.atan2(b, a)))\n\n * 4. Use 3. and apply log rules: (OVERALL ERROR: 1.2014087502620896e-9)\n\n Math.log(a) - Math.log(Math.cos(Math.atan2(b, a)))\n\n */\n\n a = a * 0.5;\n b = b * 0.5;\n\n return 0.5 * Math.log(a * a + b * b) + Math.LN2;\n}\n\nconst P = { 're': 0, 'im': 0 };\nconst parse = function (a, b) {\n\n const z = P;\n\n if (a === undefined || a === null) {\n z['re'] =\n z['im'] = 0;\n } else if (b !== undefined) {\n z['re'] = a;\n z['im'] = b;\n } else\n switch (typeof a) {\n\n case 'object':\n\n if ('im' in a && 're' in a) {\n z['re'] = a['re'];\n z['im'] = a['im'];\n } else if ('abs' in a && 'arg' in a) {\n if (!isFinite(a['abs']) && isFinite(a['arg'])) {\n return Complex['INFINITY'];\n }\n z['re'] = a['abs'] * Math.cos(a['arg']);\n z['im'] = a['abs'] * Math.sin(a['arg']);\n } else if ('r' in a && 'phi' in a) {\n if (!isFinite(a['r']) && isFinite(a['phi'])) {\n return Complex['INFINITY'];\n }\n z['re'] = a['r'] * Math.cos(a['phi']);\n z['im'] = a['r'] * Math.sin(a['phi']);\n } else if (a.length === 2) { // Quick array check\n z['re'] = a[0];\n z['im'] = a[1];\n } else {\n parser_exit();\n }\n break;\n\n case 'string':\n\n z['im'] = /* void */\n z['re'] = 0;\n\n const tokens = a.replace(/_/g, '')\n .match(/\\d+\\.?\\d*e[+-]?\\d+|\\d+\\.?\\d*|\\.\\d+|./g);\n let plus = 1;\n let minus = 0;\n\n if (tokens === null) {\n parser_exit();\n }\n\n for (let i = 0; i < tokens.length; i++) {\n\n const c = tokens[i];\n\n if (c === ' ' || c === '\\t' || c === '\\n') {\n /* void */\n } else if (c === '+') {\n plus++;\n } else if (c === '-') {\n minus++;\n } else if (c === 'i' || c === 'I') {\n\n if (plus + minus === 0) {\n parser_exit();\n }\n\n if (tokens[i + 1] !== ' ' && !isNaN(tokens[i + 1])) {\n z['im'] += parseFloat((minus % 2 ? '-' : '') + tokens[i + 1]);\n i++;\n } else {\n z['im'] += parseFloat((minus % 2 ? '-' : '') + '1');\n }\n plus = minus = 0;\n\n } else {\n\n if (plus + minus === 0 || isNaN(c)) {\n parser_exit();\n }\n\n if (tokens[i + 1] === 'i' || tokens[i + 1] === 'I') {\n z['im'] += parseFloat((minus % 2 ? '-' : '') + c);\n i++;\n } else {\n z['re'] += parseFloat((minus % 2 ? '-' : '') + c);\n }\n plus = minus = 0;\n }\n }\n\n // Still something on the stack\n if (plus + minus > 0) {\n parser_exit();\n }\n break;\n\n case 'number':\n z['im'] = 0;\n z['re'] = a;\n break;\n\n default:\n parser_exit();\n }\n\n if (isNaN(z['re']) || isNaN(z['im'])) {\n // If a calculation is NaN, we treat it as NaN and don't throw\n //parser_exit();\n }\n\n return z;\n};\n\n/**\n * @constructor\n * @returns {Complex}\n */\nfunction Complex(a, b) {\n\n if (!(this instanceof Complex)) {\n return new Complex(a, b);\n }\n\n const z = parse(a, b);\n\n this['re'] = z['re'];\n this['im'] = z['im'];\n}\n\nComplex.prototype = {\n\n 're': 0,\n 'im': 0,\n\n /**\n * Calculates the sign of a complex number, which is a normalized complex\n *\n * @returns {Complex}\n */\n 'sign': function () {\n\n const abs = hypot(this['re'], this['im']);\n\n return new Complex(\n this['re'] / abs,\n this['im'] / abs);\n },\n\n /**\n * Adds two complex numbers\n *\n * @returns {Complex}\n */\n 'add': function (a, b) {\n\n const z = parse(a, b);\n\n const tInfin = this['isInfinite']();\n const zInfin = !(isFinite(z['re']) && isFinite(z['im']));\n\n if (tInfin || zInfin) {\n\n if (tInfin && zInfin) {\n // Infinity + Infinity = NaN\n return Complex['NAN'];\n }\n // Infinity + z = Infinity { where z != Infinity }\n return Complex['INFINITY'];\n }\n\n return new Complex(\n this['re'] + z['re'],\n this['im'] + z['im']);\n },\n\n /**\n * Subtracts two complex numbers\n *\n * @returns {Complex}\n */\n 'sub': function (a, b) {\n\n const z = parse(a, b);\n\n const tInfin = this['isInfinite']();\n const zInfin = !(isFinite(z['re']) && isFinite(z['im']));\n\n if (tInfin || zInfin) {\n\n if (tInfin && zInfin) {\n // Infinity - Infinity = NaN\n return Complex['NAN'];\n }\n // Infinity - z = Infinity { where z != Infinity }\n return Complex['INFINITY'];\n }\n\n return new Complex(\n this['re'] - z['re'],\n this['im'] - z['im']);\n },\n\n /**\n * Multiplies two complex numbers\n *\n * @returns {Complex}\n */\n 'mul': function (a, b) {\n\n const z = parse(a, b);\n\n const tInfin = this['isInfinite']();\n const zInfin = !(isFinite(z['re']) && isFinite(z['im']));\n const tIsZero = this['re'] === 0 && this['im'] === 0;\n const zIsZero = z['re'] === 0 && z['im'] === 0;\n\n // Infinity * 0 = NaN\n if (tInfin && zIsZero || zInfin && tIsZero) {\n return Complex['NAN'];\n }\n\n // Infinity * z = Infinity { where z != 0 }\n if (tInfin || zInfin) {\n return Complex['INFINITY'];\n }\n\n // Shortcut for real values\n if (z['im'] === 0 && this['im'] === 0) {\n return new Complex(this['re'] * z['re'], 0);\n }\n\n return new Complex(\n this['re'] * z['re'] - this['im'] * z['im'],\n this['re'] * z['im'] + this['im'] * z['re']);\n },\n\n /**\n * Divides two complex numbers\n *\n * @returns {Complex}\n */\n 'div': function (a, b) {\n\n const z = parse(a, b);\n\n const tInfin = this['isInfinite']();\n const zInfin = !(isFinite(z['re']) && isFinite(z['im']));\n const tIsZero = this['re'] === 0 && this['im'] === 0;\n const zIsZero = z['re'] === 0 && z['im'] === 0;\n\n // 0 / 0 = NaN and Infinity / Infinity = NaN\n if (tIsZero && zIsZero || tInfin && zInfin) {\n return Complex['NAN'];\n }\n\n // Infinity / 0 = Infinity\n if (zIsZero || tInfin) {\n return Complex['INFINITY'];\n }\n\n // 0 / Infinity = 0\n if (tIsZero || zInfin) {\n return Complex['ZERO'];\n }\n\n if (0 === z['im']) {\n // Divisor is real\n return new Complex(this['re'] / z['re'], this['im'] / z['re']);\n }\n\n if (Math.abs(z['re']) < Math.abs(z['im'])) {\n\n const x = z['re'] / z['im'];\n const t = z['re'] * x + z['im'];\n\n return new Complex(\n (this['re'] * x + this['im']) / t,\n (this['im'] * x - this['re']) / t);\n\n } else {\n\n const x = z['im'] / z['re'];\n const t = z['im'] * x + z['re'];\n\n return new Complex(\n (this['re'] + this['im'] * x) / t,\n (this['im'] - this['re'] * x) / t);\n }\n },\n\n /**\n * Calculate the power of two complex numbers\n *\n * @returns {Complex}\n */\n 'pow': function (a, b) {\n\n const z = parse(a, b);\n\n const tIsZero = this['re'] === 0 && this['im'] === 0;\n const zIsZero = z['re'] === 0 && z['im'] === 0;\n\n if (zIsZero) {\n return Complex['ONE'];\n }\n\n // If the exponent is real\n if (z['im'] === 0) {\n\n if (this['im'] === 0 && this['re'] > 0) {\n\n return new Complex(Math.pow(this['re'], z['re']), 0);\n\n } else if (this['re'] === 0) { // If base is fully imaginary\n\n switch ((z['re'] % 4 + 4) % 4) {\n case 0:\n return new Complex(Math.pow(this['im'], z['re']), 0);\n case 1:\n return new Complex(0, Math.pow(this['im'], z['re']));\n case 2:\n return new Complex(-Math.pow(this['im'], z['re']), 0);\n case 3:\n return new Complex(0, -Math.pow(this['im'], z['re']));\n }\n }\n }\n\n /* I couldn't find a good formula, so here is a derivation and optimization\n *\n * z_1^z_2 = (a + bi)^(c + di)\n * = exp((c + di) * log(a + bi)\n * = pow(a^2 + b^2, (c + di) / 2) * exp(i(c + di)atan2(b, a))\n * =>...\n * Re = (pow(a^2 + b^2, c / 2) * exp(-d * atan2(b, a))) * cos(d * log(a^2 + b^2) / 2 + c * atan2(b, a))\n * Im = (pow(a^2 + b^2, c / 2) * exp(-d * atan2(b, a))) * sin(d * log(a^2 + b^2) / 2 + c * atan2(b, a))\n *\n * =>...\n * Re = exp(c * log(sqrt(a^2 + b^2)) - d * atan2(b, a)) * cos(d * log(sqrt(a^2 + b^2)) + c * atan2(b, a))\n * Im = exp(c * log(sqrt(a^2 + b^2)) - d * atan2(b, a)) * sin(d * log(sqrt(a^2 + b^2)) + c * atan2(b, a))\n *\n * =>\n * Re = exp(c * logsq2 - d * arg(z_1)) * cos(d * logsq2 + c * arg(z_1))\n * Im = exp(c * logsq2 - d * arg(z_1)) * sin(d * logsq2 + c * arg(z_1))\n *\n */\n\n if (tIsZero && z['re'] > 0) { // Same behavior as Wolframalpha, Zero if real part is zero\n return Complex['ZERO'];\n }\n\n const arg = Math.atan2(this['im'], this['re']);\n const loh = logHypot(this['re'], this['im']);\n\n let re = Math.exp(z['re'] * loh - z['im'] * arg);\n let im = z['im'] * loh + z['re'] * arg;\n return new Complex(\n re * Math.cos(im),\n re * Math.sin(im));\n },\n\n /**\n * Calculate the complex square root\n *\n * @returns {Complex}\n */\n 'sqrt': function () {\n\n const a = this['re'];\n const b = this['im'];\n\n if (b === 0) {\n // Real number case\n if (a >= 0) {\n return new Complex(Math.sqrt(a), 0);\n } else {\n return new Complex(0, Math.sqrt(-a));\n }\n }\n\n const r = hypot(a, b);\n\n let re = Math.sqrt(0.5 * (r + Math.abs(a))); // sqrt(2x) / 2 = sqrt(x / 2)\n let im = Math.abs(b) / (2 * re);\n\n if (a >= 0) {\n return new Complex(re, b < 0 ? -im : im);\n } else {\n return new Complex(im, b < 0 ? -re : re);\n }\n },\n\n /**\n * Calculate the complex exponent\n *\n * @returns {Complex}\n */\n 'exp': function () {\n\n const er = Math.exp(this['re']);\n\n if (this['im'] === 0) {\n return new Complex(er, 0);\n }\n return new Complex(\n er * Math.cos(this['im']),\n er * Math.sin(this['im']));\n },\n\n /**\n * Calculate the complex exponent and subtracts one.\n *\n * This may be more accurate than `Complex(x).exp().sub(1)` if\n * `x` is small.\n *\n * @returns {Complex}\n */\n 'expm1': function () {\n\n /**\n * exp(a + i*b) - 1\n = exp(a) * (cos(b) + j*sin(b)) - 1\n = expm1(a)*cos(b) + cosm1(b) + j*exp(a)*sin(b)\n */\n\n const a = this['re'];\n const b = this['im'];\n\n return new Complex(\n Math.expm1(a) * Math.cos(b) + cosm1(b),\n Math.exp(a) * Math.sin(b));\n },\n\n /**\n * Calculate the natural log\n *\n * @returns {Complex}\n */\n 'log': function () {\n\n const a = this['re'];\n const b = this['im'];\n\n if (b === 0 && a > 0) {\n return new Complex(Math.log(a), 0);\n }\n\n return new Complex(\n logHypot(a, b),\n Math.atan2(b, a));\n },\n\n /**\n * Calculate the magnitude of the complex number\n *\n * @returns {number}\n */\n 'abs': function () {\n\n return hypot(this['re'], this['im']);\n },\n\n /**\n * Calculate the angle of the complex number\n *\n * @returns {number}\n */\n 'arg': function () {\n\n return Math.atan2(this['im'], this['re']);\n },\n\n /**\n * Calculate the sine of the complex number\n *\n * @returns {Complex}\n */\n 'sin': function () {\n\n // sin(z) = ( e^iz - e^-iz ) / 2i \n // = sin(a)cosh(b) + i cos(a)sinh(b)\n\n const a = this['re'];\n const b = this['im'];\n\n return new Complex(\n Math.sin(a) * cosh(b),\n Math.cos(a) * sinh(b));\n },\n\n /**\n * Calculate the cosine\n *\n * @returns {Complex}\n */\n 'cos': function () {\n\n // cos(z) = ( e^iz + e^-iz ) / 2 \n // = cos(a)cosh(b) - i sin(a)sinh(b)\n\n const a = this['re'];\n const b = this['im'];\n\n return new Complex(\n Math.cos(a) * cosh(b),\n -Math.sin(a) * sinh(b));\n },\n\n /**\n * Calculate the tangent\n *\n * @returns {Complex}\n */\n 'tan': function () {\n\n // tan(z) = sin(z) / cos(z) \n // = ( e^iz - e^-iz ) / ( i( e^iz + e^-iz ) )\n // = ( e^2iz - 1 ) / i( e^2iz + 1 )\n // = ( sin(2a) + i sinh(2b) ) / ( cos(2a) + cosh(2b) )\n\n const a = 2 * this['re'];\n const b = 2 * this['im'];\n const d = Math.cos(a) + cosh(b);\n\n return new Complex(\n Math.sin(a) / d,\n sinh(b) / d);\n },\n\n /**\n * Calculate the cotangent\n *\n * @returns {Complex}\n */\n 'cot': function () {\n\n // cot(c) = i(e^(ci) + e^(-ci)) / (e^(ci) - e^(-ci))\n\n const a = 2 * this['re'];\n const b = 2 * this['im'];\n const d = Math.cos(a) - cosh(b);\n\n return new Complex(\n -Math.sin(a) / d,\n sinh(b) / d);\n },\n\n /**\n * Calculate the secant\n *\n * @returns {Complex}\n */\n 'sec': function () {\n\n // sec(c) = 2 / (e^(ci) + e^(-ci))\n\n const a = this['re'];\n const b = this['im'];\n const d = 0.5 * cosh(2 * b) + 0.5 * Math.cos(2 * a);\n\n return new Complex(\n Math.cos(a) * cosh(b) / d,\n Math.sin(a) * sinh(b) / d);\n },\n\n /**\n * Calculate the cosecans\n *\n * @returns {Complex}\n */\n 'csc': function () {\n\n // csc(c) = 2i / (e^(ci) - e^(-ci))\n\n const a = this['re'];\n const b = this['im'];\n const d = 0.5 * cosh(2 * b) - 0.5 * Math.cos(2 * a);\n\n return new Complex(\n Math.sin(a) * cosh(b) / d,\n -Math.cos(a) * sinh(b) / d);\n },\n\n /**\n * Calculate the complex arcus sinus\n *\n * @returns {Complex}\n */\n 'asin': function () {\n\n // asin(c) = -i * log(ci + sqrt(1 - c^2))\n\n const a = this['re'];\n const b = this['im'];\n\n const t1 = new Complex(\n b * b - a * a + 1,\n -2 * a * b)['sqrt']();\n\n const t2 = new Complex(\n t1['re'] - b,\n t1['im'] + a)['log']();\n\n return new Complex(t2['im'], -t2['re']);\n },\n\n /**\n * Calculate the complex arcus cosinus\n *\n * @returns {Complex}\n */\n 'acos': function () {\n\n // acos(c) = i * log(c - i * sqrt(1 - c^2))\n\n const a = this['re'];\n const b = this['im'];\n\n const t1 = new Complex(\n b * b - a * a + 1,\n -2 * a * b)['sqrt']();\n\n const t2 = new Complex(\n t1['re'] - b,\n t1['im'] + a)['log']();\n\n return new Complex(Math.PI / 2 - t2['im'], t2['re']);\n },\n\n /**\n * Calculate the complex arcus tangent\n *\n * @returns {Complex}\n */\n 'atan': function () {\n\n // atan(c) = i / 2 log((i + x) / (i - x))\n\n const a = this['re'];\n const b = this['im'];\n\n if (a === 0) {\n\n if (b === 1) {\n return new Complex(0, Infinity);\n }\n\n if (b === -1) {\n return new Complex(0, -Infinity);\n }\n }\n\n const d = a * a + (1.0 - b) * (1.0 - b);\n\n const t1 = new Complex(\n (1 - b * b - a * a) / d,\n -2 * a / d).log();\n\n return new Complex(-0.5 * t1['im'], 0.5 * t1['re']);\n },\n\n /**\n * Calculate the complex arcus cotangent\n *\n * @returns {Complex}\n */\n 'acot': function () {\n\n // acot(c) = i / 2 log((c - i) / (c + i))\n\n const a = this['re'];\n const b = this['im'];\n\n if (b === 0) {\n return new Complex(Math.atan2(1, a), 0);\n }\n\n const d = a * a + b * b;\n return (d !== 0)\n ? new Complex(\n a / d,\n -b / d).atan()\n : new Complex(\n (a !== 0) ? a / 0 : 0,\n (b !== 0) ? -b / 0 : 0).atan();\n },\n\n /**\n * Calculate the complex arcus secant\n *\n * @returns {Complex}\n */\n 'asec': function () {\n\n // asec(c) = -i * log(1 / c + sqrt(1 - i / c^2))\n\n const a = this['re'];\n const b = this['im'];\n\n if (a === 0 && b === 0) {\n return new Complex(0, Infinity);\n }\n\n const d = a * a + b * b;\n return (d !== 0)\n ? new Complex(\n a / d,\n -b / d).acos()\n : new Complex(\n (a !== 0) ? a / 0 : 0,\n (b !== 0) ? -b / 0 : 0).acos();\n },\n\n /**\n * Calculate the complex arcus cosecans\n *\n * @returns {Complex}\n */\n 'acsc': function () {\n\n // acsc(c) = -i * log(i / c + sqrt(1 - 1 / c^2))\n\n const a = this['re'];\n const b = this['im'];\n\n if (a === 0 && b === 0) {\n return new Complex(Math.PI / 2, Infinity);\n }\n\n const d = a * a + b * b;\n return (d !== 0)\n ? new Complex(\n a / d,\n -b / d).asin()\n : new Complex(\n (a !== 0) ? a / 0 : 0,\n (b !== 0) ? -b / 0 : 0).asin();\n },\n\n /**\n * Calculate the complex sinh\n *\n * @returns {Complex}\n */\n 'sinh': function () {\n\n // sinh(c) = (e^c - e^-c) / 2\n\n const a = this['re'];\n const b = this['im'];\n\n return new Complex(\n sinh(a) * Math.cos(b),\n cosh(a) * Math.sin(b));\n },\n\n /**\n * Calculate the complex cosh\n *\n * @returns {Complex}\n */\n 'cosh': function () {\n\n // cosh(c) = (e^c + e^-c) / 2\n\n const a = this['re'];\n const b = this['im'];\n\n return new Complex(\n cosh(a) * Math.cos(b),\n sinh(a) * Math.sin(b));\n },\n\n /**\n * Calculate the complex tanh\n *\n * @returns {Complex}\n */\n 'tanh': function () {\n\n // tanh(c) = (e^c - e^-c) / (e^c + e^-c)\n\n const a = 2 * this['re'];\n const b = 2 * this['im'];\n const d = cosh(a) + Math.cos(b);\n\n return new Complex(\n sinh(a) / d,\n Math.sin(b) / d);\n },\n\n /**\n * Calculate the complex coth\n *\n * @returns {Complex}\n */\n 'coth': function () {\n\n // coth(c) = (e^c + e^-c) / (e^c - e^-c)\n\n const a = 2 * this['re'];\n const b = 2 * this['im'];\n const d = cosh(a) - Math.cos(b);\n\n return new Complex(\n sinh(a) / d,\n -Math.sin(b) / d);\n },\n\n /**\n * Calculate the complex coth\n *\n * @returns {Complex}\n */\n 'csch': function () {\n\n // csch(c) = 2 / (e^c - e^-c)\n\n const a = this['re'];\n const b = this['im'];\n const d = Math.cos(2 * b) - cosh(2 * a);\n\n return new Complex(\n -2 * sinh(a) * Math.cos(b) / d,\n 2 * cosh(a) * Math.sin(b) / d);\n },\n\n /**\n * Calculate the complex sech\n *\n * @returns {Complex}\n */\n 'sech': function () {\n\n // sech(c) = 2 / (e^c + e^-c)\n\n const a = this['re'];\n const b = this['im'];\n const d = Math.cos(2 * b) + cosh(2 * a);\n\n return new Complex(\n 2 * cosh(a) * Math.cos(b) / d,\n -2 * sinh(a) * Math.sin(b) / d);\n },\n\n /**\n * Calculate the complex asinh\n *\n * @returns {Complex}\n */\n 'asinh': function () {\n\n // asinh(c) = log(c + sqrt(c^2 + 1))\n\n let tmp = this['im'];\n this['im'] = -this['re'];\n this['re'] = tmp;\n const res = this['asin']();\n\n this['re'] = -this['im'];\n this['im'] = tmp;\n tmp = res['re'];\n\n res['re'] = -res['im'];\n res['im'] = tmp;\n return res;\n },\n\n /**\n * Calculate the complex acosh\n *\n * @returns {Complex}\n */\n 'acosh': function () {\n\n // acosh(c) = log(c + sqrt(c^2 - 1))\n\n const res = this['acos']();\n if (res['im'] <= 0) {\n const tmp = res['re'];\n res['re'] = -res['im'];\n res['im'] = tmp;\n } else {\n const tmp = res['im'];\n res['im'] = -res['re'];\n res['re'] = tmp;\n }\n return res;\n },\n\n /**\n * Calculate the complex atanh\n *\n * @returns {Complex}\n */\n 'atanh': function () {\n\n // atanh(c) = log((1+c) / (1-c)) / 2\n\n const a = this['re'];\n const b = this['im'];\n\n const noIM = a > 1 && b === 0;\n const oneMinus = 1 - a;\n const onePlus = 1 + a;\n const d = oneMinus * oneMinus + b * b;\n\n const x = (d !== 0)\n ? new Complex(\n (onePlus * oneMinus - b * b) / d,\n (b * oneMinus + onePlus * b) / d)\n : new Complex(\n (a !== -1) ? (a / 0) : 0,\n (b !== 0) ? (b / 0) : 0);\n\n const temp = x['re'];\n x['re'] = logHypot(x['re'], x['im']) / 2;\n x['im'] = Math.atan2(x['im'], temp) / 2;\n if (noIM) {\n x['im'] = -x['im'];\n }\n return x;\n },\n\n /**\n * Calculate the complex acoth\n *\n * @returns {Complex}\n */\n 'acoth': function () {\n\n // acoth(c) = log((c+1) / (c-1)) / 2\n\n const a = this['re'];\n const b = this['im'];\n\n if (a === 0 && b === 0) {\n return new Complex(0, Math.PI / 2);\n }\n\n const d = a * a + b * b;\n return (d !== 0)\n ? new Complex(\n a / d,\n -b / d).atanh()\n : new Complex(\n (a !== 0) ? a / 0 : 0,\n (b !== 0) ? -b / 0 : 0).atanh();\n },\n\n /**\n * Calculate the complex acsch\n *\n * @returns {Complex}\n */\n 'acsch': function () {\n\n // acsch(c) = log((1+sqrt(1+c^2))/c)\n\n const a = this['re'];\n const b = this['im'];\n\n if (b === 0) {\n\n return new Complex(\n (a !== 0)\n ? Math.log(a + Math.sqrt(a * a + 1))\n : Infinity, 0);\n }\n\n const d = a * a + b * b;\n return (d !== 0)\n ? new Complex(\n a / d,\n -b / d).asinh()\n : new Complex(\n (a !== 0) ? a / 0 : 0,\n (b !== 0) ? -b / 0 : 0).asinh();\n },\n\n /**\n * Calculate the complex asech\n *\n * @returns {Complex}\n */\n 'asech': function () {\n\n // asech(c) = log((1+sqrt(1-c^2))/c)\n\n const a = this['re'];\n const b = this['im'];\n\n if (this['isZero']()) {\n return Complex['INFINITY'];\n }\n\n const d = a * a + b * b;\n return (d !== 0)\n ? new Complex(\n a / d,\n -b / d).acosh()\n : new Complex(\n (a !== 0) ? a / 0 : 0,\n (b !== 0) ? -b / 0 : 0).acosh();\n },\n\n /**\n * Calculate the complex inverse 1/z\n *\n * @returns {Complex}\n */\n 'inverse': function () {\n\n // 1 / 0 = Infinity and 1 / Infinity = 0\n if (this['isZero']()) {\n return Complex['INFINITY'];\n }\n\n if (this['isInfinite']()) {\n return Complex['ZERO'];\n }\n\n const a = this['re'];\n const b = this['im'];\n\n const d = a * a + b * b;\n\n return new Complex(a / d, -b / d);\n },\n\n /**\n * Returns the complex conjugate\n *\n * @returns {Complex}\n */\n 'conjugate': function () {\n\n return new Complex(this['re'], -this['im']);\n },\n\n /**\n * Gets the negated complex number\n *\n * @returns {Complex}\n */\n 'neg': function () {\n\n return new Complex(-this['re'], -this['im']);\n },\n\n /**\n * Ceils the actual complex number\n *\n * @returns {Complex}\n */\n 'ceil': function (places) {\n\n places = Math.pow(10, places || 0);\n\n return new Complex(\n Math.ceil(this['re'] * places) / places,\n Math.ceil(this['im'] * places) / places);\n },\n\n /**\n * Floors the actual complex number\n *\n * @returns {Complex}\n */\n 'floor': function (places) {\n\n places = Math.pow(10, places || 0);\n\n return new Complex(\n Math.floor(this['re'] * places) / places,\n Math.floor(this['im'] * places) / places);\n },\n\n /**\n * Ceils the actual complex number\n *\n * @returns {Complex}\n */\n 'round': function (places) {\n\n places = Math.pow(10, places || 0);\n\n return new Complex(\n Math.round(this['re'] * places) / places,\n Math.round(this['im'] * places) / places);\n },\n\n /**\n * Compares two complex numbers\n *\n * **Note:** new Complex(Infinity).equals(Infinity) === false\n *\n * @returns {boolean}\n */\n 'equals': function (a, b) {\n\n const z = parse(a, b);\n\n return Math.abs(z['re'] - this['re']) <= Complex['EPSILON'] &&\n Math.abs(z['im'] - this['im']) <= Complex['EPSILON'];\n },\n\n /**\n * Clones the actual object\n *\n * @returns {Complex}\n */\n 'clone': function () {\n\n return new Complex(this['re'], this['im']);\n },\n\n /**\n * Gets a string of the actual complex number\n *\n * @returns {string}\n */\n 'toString': function () {\n\n let a = this['re'];\n let b = this['im'];\n let ret = \"\";\n\n if (this['isNaN']()) {\n return 'NaN';\n }\n\n if (this['isInfinite']()) {\n return 'Infinity';\n }\n\n if (Math.abs(a) < Complex['EPSILON']) {\n a = 0;\n }\n\n if (Math.abs(b) < Complex['EPSILON']) {\n b = 0;\n }\n\n // If is real number\n if (b === 0) {\n return ret + a;\n }\n\n if (a !== 0) {\n ret += a;\n ret += \" \";\n if (b < 0) {\n b = -b;\n ret += \"-\";\n } else {\n ret += \"+\";\n }\n ret += \" \";\n } else if (b < 0) {\n b = -b;\n ret += \"-\";\n }\n\n if (1 !== b) { // b is the absolute imaginary part\n ret += b;\n }\n return ret + \"i\";\n },\n\n /**\n * Returns the actual number as a vector\n *\n * @returns {Array}\n */\n 'toVector': function () {\n\n return [this['re'], this['im']];\n },\n\n /**\n * Returns the actual real value of the current object\n *\n * @returns {number|null}\n */\n 'valueOf': function () {\n\n if (this['im'] === 0) {\n return this['re'];\n }\n return null;\n },\n\n /**\n * Determines whether a complex number is not on the Riemann sphere.\n *\n * @returns {boolean}\n */\n 'isNaN': function () {\n return isNaN(this['re']) || isNaN(this['im']);\n },\n\n /**\n * Determines whether or not a complex number is at the zero pole of the\n * Riemann sphere.\n *\n * @returns {boolean}\n */\n 'isZero': function () {\n return this['im'] === 0 && this['re'] === 0;\n },\n\n /**\n * Determines whether a complex number is not at the infinity pole of the\n * Riemann sphere.\n *\n * @returns {boolean}\n */\n 'isFinite': function () {\n return isFinite(this['re']) && isFinite(this['im']);\n },\n\n /**\n * Determines whether or not a complex number is at the infinity pole of the\n * Riemann sphere.\n *\n * @returns {boolean}\n */\n 'isInfinite': function () {\n return !this['isFinite']();\n }\n};\n\nComplex['ZERO'] = new Complex(0, 0);\nComplex['ONE'] = new Complex(1, 0);\nComplex['I'] = new Complex(0, 1);\nComplex['PI'] = new Complex(Math.PI, 0);\nComplex['E'] = new Complex(Math.E, 0);\nComplex['INFINITY'] = new Complex(Infinity, Infinity);\nComplex['NAN'] = new Complex(NaN, NaN);\nComplex['EPSILON'] = 1e-15;\nexport {\n Complex as default, Complex\n};\n", "import Complex from 'complex.js';\nimport { format } from '../../utils/number.js';\nimport { isNumber, isUnit } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'Complex';\nvar dependencies = [];\nexport var createComplexClass = /* #__PURE__ */factory(name, dependencies, () => {\n /**\n * Attach type information\n */\n Object.defineProperty(Complex, 'name', {\n value: 'Complex'\n });\n Complex.prototype.constructor = Complex;\n Complex.prototype.type = 'Complex';\n Complex.prototype.isComplex = true;\n\n /**\n * Get a JSON representation of the complex number\n * @returns {Object} Returns a JSON object structured as:\n * `{\"mathjs\": \"Complex\", \"re\": 2, \"im\": 3}`\n */\n Complex.prototype.toJSON = function () {\n return {\n mathjs: 'Complex',\n re: this.re,\n im: this.im\n };\n };\n\n /*\n * Return the value of the complex number in polar notation\n * The angle phi will be set in the interval of [-pi, pi].\n * @return {{r: number, phi: number}} Returns and object with properties r and phi.\n */\n Complex.prototype.toPolar = function () {\n return {\n r: this.abs(),\n phi: this.arg()\n };\n };\n\n /**\n * Get a string representation of the complex number,\n * with optional formatting options.\n * @param {Object | number | Function} [options] Formatting options. See\n * lib/utils/number:format for a\n * description of the available\n * options.\n * @return {string} str\n */\n Complex.prototype.format = function (options) {\n var str = '';\n var im = this.im;\n var re = this.re;\n var strRe = format(this.re, options);\n var strIm = format(this.im, options);\n\n // round either re or im when smaller than the configured precision\n var precision = isNumber(options) ? options : options ? options.precision : null;\n if (precision !== null) {\n var epsilon = Math.pow(10, -precision);\n if (Math.abs(re / im) < epsilon) {\n re = 0;\n }\n if (Math.abs(im / re) < epsilon) {\n im = 0;\n }\n }\n if (im === 0) {\n // real value\n str = strRe;\n } else if (re === 0) {\n // purely complex value\n if (im === 1) {\n str = 'i';\n } else if (im === -1) {\n str = '-i';\n } else {\n str = strIm + 'i';\n }\n } else {\n // complex value\n if (im < 0) {\n if (im === -1) {\n str = strRe + ' - i';\n } else {\n str = strRe + ' - ' + strIm.substring(1) + 'i';\n }\n } else {\n if (im === 1) {\n str = strRe + ' + i';\n } else {\n str = strRe + ' + ' + strIm + 'i';\n }\n }\n }\n return str;\n };\n\n /**\n * Create a complex number from polar coordinates\n *\n * Usage:\n *\n * Complex.fromPolar(r: number, phi: number) : Complex\n * Complex.fromPolar({r: number, phi: number}) : Complex\n *\n * @param {*} args...\n * @return {Complex}\n */\n Complex.fromPolar = function (args) {\n switch (arguments.length) {\n case 1:\n {\n var arg = arguments[0];\n if (typeof arg === 'object') {\n return Complex(arg);\n } else {\n throw new TypeError('Input has to be an object with r and phi keys.');\n }\n }\n case 2:\n {\n var r = arguments[0];\n var phi = arguments[1];\n if (isNumber(r)) {\n if (isUnit(phi) && phi.hasBase('ANGLE')) {\n // convert unit to a number in radians\n phi = phi.toNumber('rad');\n }\n if (isNumber(phi)) {\n return new Complex({\n r,\n phi\n });\n }\n throw new TypeError('Phi is not a number nor an angle unit.');\n } else {\n throw new TypeError('Radius r is not a number.');\n }\n }\n default:\n throw new SyntaxError('Wrong number of arguments in function fromPolar');\n }\n };\n Complex.prototype.valueOf = Complex.prototype.toString;\n\n /**\n * Create a Complex number from a JSON object\n * @param {Object} json A JSON Object structured as\n * {\"mathjs\": \"Complex\", \"re\": 2, \"im\": 3}\n * All properties are optional, default values\n * for `re` and `im` are 0.\n * @return {Complex} Returns a new Complex number\n */\n Complex.fromJSON = function (json) {\n return new Complex(json);\n };\n\n /**\n * Compare two complex numbers, `a` and `b`:\n *\n * - Returns 1 when the real part of `a` is larger than the real part of `b`\n * - Returns -1 when the real part of `a` is smaller than the real part of `b`\n * - Returns 1 when the real parts are equal\n * and the imaginary part of `a` is larger than the imaginary part of `b`\n * - Returns -1 when the real parts are equal\n * and the imaginary part of `a` is smaller than the imaginary part of `b`\n * - Returns 0 when both real and imaginary parts are equal.\n *\n * @params {Complex} a\n * @params {Complex} b\n * @returns {number} Returns the comparison result: -1, 0, or 1\n */\n Complex.compare = function (a, b) {\n if (a.re > b.re) {\n return 1;\n }\n if (a.re < b.re) {\n return -1;\n }\n if (a.im > b.im) {\n return 1;\n }\n if (a.im < b.im) {\n return -1;\n }\n return 0;\n };\n return Complex;\n}, {\n isClass: true\n});", "/**\n * @license Fraction.js v4.3.7 31/08/2023\n * https://www.xarg.org/2014/03/rational-numbers-in-javascript/\n *\n * Copyright (c) 2023, Robert Eisele (robert@raw.org)\n * Dual licensed under the MIT or GPL Version 2 licenses.\n **/\n\n\n/**\n *\n * This class offers the possibility to calculate fractions.\n * You can pass a fraction in different formats. Either as array, as double, as string or as an integer.\n *\n * Array/Object form\n * [ 0 => , 1 => ]\n * [ n => , d => ]\n *\n * Integer form\n * - Single integer value\n *\n * Double form\n * - Single double value\n *\n * String form\n * 123.456 - a simple double\n * 123/456 - a string fraction\n * 123.'456' - a double with repeating decimal places\n * 123.(456) - synonym\n * 123.45'6' - a double with repeating last place\n * 123.45(6) - synonym\n *\n * Example:\n *\n * var f = new Fraction(\"9.4'31'\");\n * f.mul([-4, 3]).div(4.9);\n *\n */\n\n\n// Maximum search depth for cyclic rational numbers. 2000 should be more than enough.\n// Example: 1/7 = 0.(142857) has 6 repeating decimal places.\n// If MAX_CYCLE_LEN gets reduced, long cycles will not be detected and toString() only gets the first 10 digits\nvar MAX_CYCLE_LEN = 2000;\n\n// Parsed data to avoid calling \"new\" all the time\nvar P = {\n \"s\": 1,\n \"n\": 0,\n \"d\": 1\n};\n\nfunction assign(n, s) {\n\n if (isNaN(n = parseInt(n, 10))) {\n throw InvalidParameter();\n }\n return n * s;\n}\n\n// Creates a new Fraction internally without the need of the bulky constructor\nfunction newFraction(n, d) {\n\n if (d === 0) {\n throw DivisionByZero();\n }\n\n var f = Object.create(Fraction.prototype);\n f[\"s\"] = n < 0 ? -1 : 1;\n\n n = n < 0 ? -n : n;\n\n var a = gcd(n, d);\n\n f[\"n\"] = n / a;\n f[\"d\"] = d / a;\n return f;\n}\n\nfunction factorize(num) {\n\n var factors = {};\n\n var n = num;\n var i = 2;\n var s = 4;\n\n while (s <= n) {\n\n while (n % i === 0) {\n n/= i;\n factors[i] = (factors[i] || 0) + 1;\n }\n s+= 1 + 2 * i++;\n }\n\n if (n !== num) {\n if (n > 1)\n factors[n] = (factors[n] || 0) + 1;\n } else {\n factors[num] = (factors[num] || 0) + 1;\n }\n return factors;\n}\n\nvar parse = function(p1, p2) {\n\n var n = 0, d = 1, s = 1;\n var v = 0, w = 0, x = 0, y = 1, z = 1;\n\n var A = 0, B = 1;\n var C = 1, D = 1;\n\n var N = 10000000;\n var M;\n\n if (p1 === undefined || p1 === null) {\n /* void */\n } else if (p2 !== undefined) {\n n = p1;\n d = p2;\n s = n * d;\n\n if (n % 1 !== 0 || d % 1 !== 0) {\n throw NonIntegerParameter();\n }\n\n } else\n switch (typeof p1) {\n\n case \"object\":\n {\n if (\"d\" in p1 && \"n\" in p1) {\n n = p1[\"n\"];\n d = p1[\"d\"];\n if (\"s\" in p1)\n n*= p1[\"s\"];\n } else if (0 in p1) {\n n = p1[0];\n if (1 in p1)\n d = p1[1];\n } else {\n throw InvalidParameter();\n }\n s = n * d;\n break;\n }\n case \"number\":\n {\n if (p1 < 0) {\n s = p1;\n p1 = -p1;\n }\n\n if (p1 % 1 === 0) {\n n = p1;\n } else if (p1 > 0) { // check for != 0, scale would become NaN (log(0)), which converges really slow\n\n if (p1 >= 1) {\n z = Math.pow(10, Math.floor(1 + Math.log(p1) / Math.LN10));\n p1/= z;\n }\n\n // Using Farey Sequences\n // http://www.johndcook.com/blog/2010/10/20/best-rational-approximation/\n\n while (B <= N && D <= N) {\n M = (A + C) / (B + D);\n\n if (p1 === M) {\n if (B + D <= N) {\n n = A + C;\n d = B + D;\n } else if (D > B) {\n n = C;\n d = D;\n } else {\n n = A;\n d = B;\n }\n break;\n\n } else {\n\n if (p1 > M) {\n A+= C;\n B+= D;\n } else {\n C+= A;\n D+= B;\n }\n\n if (B > N) {\n n = C;\n d = D;\n } else {\n n = A;\n d = B;\n }\n }\n }\n n*= z;\n } else if (isNaN(p1) || isNaN(p2)) {\n d = n = NaN;\n }\n break;\n }\n case \"string\":\n {\n B = p1.match(/\\d+|./g);\n\n if (B === null)\n throw InvalidParameter();\n\n if (B[A] === '-') {// Check for minus sign at the beginning\n s = -1;\n A++;\n } else if (B[A] === '+') {// Check for plus sign at the beginning\n A++;\n }\n\n if (B.length === A + 1) { // Check if it's just a simple number \"1234\"\n w = assign(B[A++], s);\n } else if (B[A + 1] === '.' || B[A] === '.') { // Check if it's a decimal number\n\n if (B[A] !== '.') { // Handle 0.5 and .5\n v = assign(B[A++], s);\n }\n A++;\n\n // Check for decimal places\n if (A + 1 === B.length || B[A + 1] === '(' && B[A + 3] === ')' || B[A + 1] === \"'\" && B[A + 3] === \"'\") {\n w = assign(B[A], s);\n y = Math.pow(10, B[A].length);\n A++;\n }\n\n // Check for repeating places\n if (B[A] === '(' && B[A + 2] === ')' || B[A] === \"'\" && B[A + 2] === \"'\") {\n x = assign(B[A + 1], s);\n z = Math.pow(10, B[A + 1].length) - 1;\n A+= 3;\n }\n\n } else if (B[A + 1] === '/' || B[A + 1] === ':') { // Check for a simple fraction \"123/456\" or \"123:456\"\n w = assign(B[A], s);\n y = assign(B[A + 2], 1);\n A+= 3;\n } else if (B[A + 3] === '/' && B[A + 1] === ' ') { // Check for a complex fraction \"123 1/2\"\n v = assign(B[A], s);\n w = assign(B[A + 2], s);\n y = assign(B[A + 4], 1);\n A+= 5;\n }\n\n if (B.length <= A) { // Check for more tokens on the stack\n d = y * z;\n s = /* void */\n n = x + d * v + z * w;\n break;\n }\n\n /* Fall through on error */\n }\n default:\n throw InvalidParameter();\n }\n\n if (d === 0) {\n throw DivisionByZero();\n }\n\n P[\"s\"] = s < 0 ? -1 : 1;\n P[\"n\"] = Math.abs(n);\n P[\"d\"] = Math.abs(d);\n};\n\nfunction modpow(b, e, m) {\n\n var r = 1;\n for (; e > 0; b = (b * b) % m, e >>= 1) {\n\n if (e & 1) {\n r = (r * b) % m;\n }\n }\n return r;\n}\n\n\nfunction cycleLen(n, d) {\n\n for (; d % 2 === 0;\n d/= 2) {\n }\n\n for (; d % 5 === 0;\n d/= 5) {\n }\n\n if (d === 1) // Catch non-cyclic numbers\n return 0;\n\n // If we would like to compute really large numbers quicker, we could make use of Fermat's little theorem:\n // 10^(d-1) % d == 1\n // However, we don't need such large numbers and MAX_CYCLE_LEN should be the capstone,\n // as we want to translate the numbers to strings.\n\n var rem = 10 % d;\n var t = 1;\n\n for (; rem !== 1; t++) {\n rem = rem * 10 % d;\n\n if (t > MAX_CYCLE_LEN)\n return 0; // Returning 0 here means that we don't print it as a cyclic number. It's likely that the answer is `d-1`\n }\n return t;\n}\n\n\nfunction cycleStart(n, d, len) {\n\n var rem1 = 1;\n var rem2 = modpow(10, len, d);\n\n for (var t = 0; t < 300; t++) { // s < ~log10(Number.MAX_VALUE)\n // Solve 10^s == 10^(s+t) (mod d)\n\n if (rem1 === rem2)\n return t;\n\n rem1 = rem1 * 10 % d;\n rem2 = rem2 * 10 % d;\n }\n return 0;\n}\n\nfunction gcd(a, b) {\n\n if (!a)\n return b;\n if (!b)\n return a;\n\n while (1) {\n a%= b;\n if (!a)\n return b;\n b%= a;\n if (!b)\n return a;\n }\n};\n\n/**\n * Module constructor\n *\n * @constructor\n * @param {number|Fraction=} a\n * @param {number=} b\n */\nexport default function Fraction(a, b) {\n\n parse(a, b);\n\n if (this instanceof Fraction) {\n a = gcd(P[\"d\"], P[\"n\"]); // Abuse variable a\n this[\"s\"] = P[\"s\"];\n this[\"n\"] = P[\"n\"] / a;\n this[\"d\"] = P[\"d\"] / a;\n } else {\n return newFraction(P['s'] * P['n'], P['d']);\n }\n}\n\nvar DivisionByZero = function() { return new Error(\"Division by Zero\"); };\nvar InvalidParameter = function() { return new Error(\"Invalid argument\"); };\nvar NonIntegerParameter = function() { return new Error(\"Parameters must be integer\"); };\n\nFraction.prototype = {\n\n \"s\": 1,\n \"n\": 0,\n \"d\": 1,\n\n /**\n * Calculates the absolute value\n *\n * Ex: new Fraction(-4).abs() => 4\n **/\n \"abs\": function() {\n\n return newFraction(this[\"n\"], this[\"d\"]);\n },\n\n /**\n * Inverts the sign of the current fraction\n *\n * Ex: new Fraction(-4).neg() => 4\n **/\n \"neg\": function() {\n\n return newFraction(-this[\"s\"] * this[\"n\"], this[\"d\"]);\n },\n\n /**\n * Adds two rational numbers\n *\n * Ex: new Fraction({n: 2, d: 3}).add(\"14.9\") => 467 / 30\n **/\n \"add\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * this[\"n\"] * P[\"d\"] + P[\"s\"] * this[\"d\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Subtracts two rational numbers\n *\n * Ex: new Fraction({n: 2, d: 3}).add(\"14.9\") => -427 / 30\n **/\n \"sub\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * this[\"n\"] * P[\"d\"] - P[\"s\"] * this[\"d\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Multiplies two rational numbers\n *\n * Ex: new Fraction(\"-17.(345)\").mul(3) => 5776 / 111\n **/\n \"mul\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * P[\"s\"] * this[\"n\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Divides two rational numbers\n *\n * Ex: new Fraction(\"-17.(345)\").inverse().div(3)\n **/\n \"div\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * P[\"s\"] * this[\"n\"] * P[\"d\"],\n this[\"d\"] * P[\"n\"]\n );\n },\n\n /**\n * Clones the actual object\n *\n * Ex: new Fraction(\"-17.(345)\").clone()\n **/\n \"clone\": function() {\n return newFraction(this['s'] * this['n'], this['d']);\n },\n\n /**\n * Calculates the modulo of two rational numbers - a more precise fmod\n *\n * Ex: new Fraction('4.(3)').mod([7, 8]) => (13/3) % (7/8) = (5/6)\n **/\n \"mod\": function(a, b) {\n\n if (isNaN(this['n']) || isNaN(this['d'])) {\n return new Fraction(NaN);\n }\n\n if (a === undefined) {\n return newFraction(this[\"s\"] * this[\"n\"] % this[\"d\"], 1);\n }\n\n parse(a, b);\n if (0 === P[\"n\"] && 0 === this[\"d\"]) {\n throw DivisionByZero();\n }\n\n /*\n * First silly attempt, kinda slow\n *\n return that[\"sub\"]({\n \"n\": num[\"n\"] * Math.floor((this.n / this.d) / (num.n / num.d)),\n \"d\": num[\"d\"],\n \"s\": this[\"s\"]\n });*/\n\n /*\n * New attempt: a1 / b1 = a2 / b2 * q + r\n * => b2 * a1 = a2 * b1 * q + b1 * b2 * r\n * => (b2 * a1 % a2 * b1) / (b1 * b2)\n */\n return newFraction(\n this[\"s\"] * (P[\"d\"] * this[\"n\"]) % (P[\"n\"] * this[\"d\"]),\n P[\"d\"] * this[\"d\"]\n );\n },\n\n /**\n * Calculates the fractional gcd of two rational numbers\n *\n * Ex: new Fraction(5,8).gcd(3,7) => 1/56\n */\n \"gcd\": function(a, b) {\n\n parse(a, b);\n\n // gcd(a / b, c / d) = gcd(a, c) / lcm(b, d)\n\n return newFraction(gcd(P[\"n\"], this[\"n\"]) * gcd(P[\"d\"], this[\"d\"]), P[\"d\"] * this[\"d\"]);\n },\n\n /**\n * Calculates the fractional lcm of two rational numbers\n *\n * Ex: new Fraction(5,8).lcm(3,7) => 15\n */\n \"lcm\": function(a, b) {\n\n parse(a, b);\n\n // lcm(a / b, c / d) = lcm(a, c) / gcd(b, d)\n\n if (P[\"n\"] === 0 && this[\"n\"] === 0) {\n return newFraction(0, 1);\n }\n return newFraction(P[\"n\"] * this[\"n\"], gcd(P[\"n\"], this[\"n\"]) * gcd(P[\"d\"], this[\"d\"]));\n },\n\n /**\n * Calculates the ceil of a rational number\n *\n * Ex: new Fraction('4.(3)').ceil() => (5 / 1)\n **/\n \"ceil\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.ceil(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Calculates the floor of a rational number\n *\n * Ex: new Fraction('4.(3)').floor() => (4 / 1)\n **/\n \"floor\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.floor(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Rounds a rational number\n *\n * Ex: new Fraction('4.(3)').round() => (4 / 1)\n **/\n \"round\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.round(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Rounds a rational number to a multiple of another rational number\n *\n * Ex: new Fraction('0.9').roundTo(\"1/8\") => 7 / 8\n **/\n \"roundTo\": function(a, b) {\n\n /*\n k * x/y \u2264 a/b < (k+1) * x/y\n \u21D4 k \u2264 a/b / (x/y) < (k+1)\n \u21D4 k = floor(a/b * y/x)\n */\n\n parse(a, b);\n\n return newFraction(this['s'] * Math.round(this['n'] * P['d'] / (this['d'] * P['n'])) * P['n'], P['d']);\n },\n\n /**\n * Gets the inverse of the fraction, means numerator and denominator are exchanged\n *\n * Ex: new Fraction([-3, 4]).inverse() => -4 / 3\n **/\n \"inverse\": function() {\n\n return newFraction(this[\"s\"] * this[\"d\"], this[\"n\"]);\n },\n\n /**\n * Calculates the fraction to some rational exponent, if possible\n *\n * Ex: new Fraction(-1,2).pow(-3) => -8\n */\n \"pow\": function(a, b) {\n\n parse(a, b);\n\n // Trivial case when exp is an integer\n\n if (P['d'] === 1) {\n\n if (P['s'] < 0) {\n return newFraction(Math.pow(this['s'] * this[\"d\"], P['n']), Math.pow(this[\"n\"], P['n']));\n } else {\n return newFraction(Math.pow(this['s'] * this[\"n\"], P['n']), Math.pow(this[\"d\"], P['n']));\n }\n }\n\n // Negative roots become complex\n // (-a/b)^(c/d) = x\n // <=> (-1)^(c/d) * (a/b)^(c/d) = x\n // <=> (cos(pi) + i*sin(pi))^(c/d) * (a/b)^(c/d) = x # rotate 1 by 180\u00B0\n // <=> (cos(c*pi/d) + i*sin(c*pi/d)) * (a/b)^(c/d) = x # DeMoivre's formula in Q ( https://proofwiki.org/wiki/De_Moivre%27s_Formula/Rational_Index )\n // From which follows that only for c=0 the root is non-complex. c/d is a reduced fraction, so that sin(c/dpi)=0 occurs for d=1, which is handled by our trivial case.\n if (this['s'] < 0) return null;\n\n // Now prime factor n and d\n var N = factorize(this['n']);\n var D = factorize(this['d']);\n\n // Exponentiate and take root for n and d individually\n var n = 1;\n var d = 1;\n for (var k in N) {\n if (k === '1') continue;\n if (k === '0') {\n n = 0;\n break;\n }\n N[k]*= P['n'];\n\n if (N[k] % P['d'] === 0) {\n N[k]/= P['d'];\n } else return null;\n n*= Math.pow(k, N[k]);\n }\n\n for (var k in D) {\n if (k === '1') continue;\n D[k]*= P['n'];\n\n if (D[k] % P['d'] === 0) {\n D[k]/= P['d'];\n } else return null;\n d*= Math.pow(k, D[k]);\n }\n\n if (P['s'] < 0) {\n return newFraction(d, n);\n }\n return newFraction(n, d);\n },\n\n /**\n * Check if two rational numbers are the same\n *\n * Ex: new Fraction(19.6).equals([98, 5]);\n **/\n \"equals\": function(a, b) {\n\n parse(a, b);\n return this[\"s\"] * this[\"n\"] * P[\"d\"] === P[\"s\"] * P[\"n\"] * this[\"d\"]; // Same as compare() === 0\n },\n\n /**\n * Check if two rational numbers are the same\n *\n * Ex: new Fraction(19.6).equals([98, 5]);\n **/\n \"compare\": function(a, b) {\n\n parse(a, b);\n var t = (this[\"s\"] * this[\"n\"] * P[\"d\"] - P[\"s\"] * P[\"n\"] * this[\"d\"]);\n return (0 < t) - (t < 0);\n },\n\n \"simplify\": function(eps) {\n\n if (isNaN(this['n']) || isNaN(this['d'])) {\n return this;\n }\n\n eps = eps || 0.001;\n\n var thisABS = this['abs']();\n var cont = thisABS['toContinued']();\n\n for (var i = 1; i < cont.length; i++) {\n\n var s = newFraction(cont[i - 1], 1);\n for (var k = i - 2; k >= 0; k--) {\n s = s['inverse']()['add'](cont[k]);\n }\n\n if (Math.abs(s['sub'](thisABS).valueOf()) < eps) {\n return s['mul'](this['s']);\n }\n }\n return this;\n },\n\n /**\n * Check if two rational numbers are divisible\n *\n * Ex: new Fraction(19.6).divisible(1.5);\n */\n \"divisible\": function(a, b) {\n\n parse(a, b);\n return !(!(P[\"n\"] * this[\"d\"]) || ((this[\"n\"] * P[\"d\"]) % (P[\"n\"] * this[\"d\"])));\n },\n\n /**\n * Returns a decimal representation of the fraction\n *\n * Ex: new Fraction(\"100.'91823'\").valueOf() => 100.91823918239183\n **/\n 'valueOf': function() {\n\n return this[\"s\"] * this[\"n\"] / this[\"d\"];\n },\n\n /**\n * Returns a string-fraction representation of a Fraction object\n *\n * Ex: new Fraction(\"1.'3'\").toFraction(true) => \"4 1/3\"\n **/\n 'toFraction': function(excludeWhole) {\n\n var whole, str = \"\";\n var n = this[\"n\"];\n var d = this[\"d\"];\n if (this[\"s\"] < 0) {\n str+= '-';\n }\n\n if (d === 1) {\n str+= n;\n } else {\n\n if (excludeWhole && (whole = Math.floor(n / d)) > 0) {\n str+= whole;\n str+= \" \";\n n%= d;\n }\n\n str+= n;\n str+= '/';\n str+= d;\n }\n return str;\n },\n\n /**\n * Returns a latex representation of a Fraction object\n *\n * Ex: new Fraction(\"1.'3'\").toLatex() => \"\\frac{4}{3}\"\n **/\n 'toLatex': function(excludeWhole) {\n\n var whole, str = \"\";\n var n = this[\"n\"];\n var d = this[\"d\"];\n if (this[\"s\"] < 0) {\n str+= '-';\n }\n\n if (d === 1) {\n str+= n;\n } else {\n\n if (excludeWhole && (whole = Math.floor(n / d)) > 0) {\n str+= whole;\n n%= d;\n }\n\n str+= \"\\\\frac{\";\n str+= n;\n str+= '}{';\n str+= d;\n str+= '}';\n }\n return str;\n },\n\n /**\n * Returns an array of continued fraction elements\n *\n * Ex: new Fraction(\"7/8\").toContinued() => [0,1,7]\n */\n 'toContinued': function() {\n\n var t;\n var a = this['n'];\n var b = this['d'];\n var res = [];\n\n if (isNaN(a) || isNaN(b)) {\n return res;\n }\n\n do {\n res.push(Math.floor(a / b));\n t = a % b;\n a = b;\n b = t;\n } while (a !== 1);\n\n return res;\n },\n\n /**\n * Creates a string representation of a fraction with all digits\n *\n * Ex: new Fraction(\"100.'91823'\").toString() => \"100.(91823)\"\n **/\n 'toString': function(dec) {\n\n var N = this[\"n\"];\n var D = this[\"d\"];\n\n if (isNaN(N) || isNaN(D)) {\n return \"NaN\";\n }\n\n dec = dec || 15; // 15 = decimal places when no repetation\n\n var cycLen = cycleLen(N, D); // Cycle length\n var cycOff = cycleStart(N, D, cycLen); // Cycle start\n\n var str = this['s'] < 0 ? \"-\" : \"\";\n\n str+= N / D | 0;\n\n N%= D;\n N*= 10;\n\n if (N)\n str+= \".\";\n\n if (cycLen) {\n\n for (var i = cycOff; i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n str+= \"(\";\n for (var i = cycLen; i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n str+= \")\";\n } else {\n for (var i = dec; N && i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n }\n return str;\n }\n};\n", "import Fraction from 'fraction.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'Fraction';\nvar dependencies = [];\nexport var createFractionClass = /* #__PURE__ */factory(name, dependencies, () => {\n /**\n * Attach type information\n */\n Object.defineProperty(Fraction, 'name', {\n value: 'Fraction'\n });\n Fraction.prototype.constructor = Fraction;\n Fraction.prototype.type = 'Fraction';\n Fraction.prototype.isFraction = true;\n\n /**\n * Get a JSON representation of a Fraction containing type information\n * @returns {Object} Returns a JSON object structured as:\n * `{\"mathjs\": \"Fraction\", \"n\": 3, \"d\": 8}`\n */\n Fraction.prototype.toJSON = function () {\n return {\n mathjs: 'Fraction',\n n: this.s * this.n,\n d: this.d\n };\n };\n\n /**\n * Instantiate a Fraction from a JSON object\n * @param {Object} json a JSON object structured as:\n * `{\"mathjs\": \"Fraction\", \"n\": 3, \"d\": 8}`\n * @return {BigNumber}\n */\n Fraction.fromJSON = function (json) {\n return new Fraction(json);\n };\n return Fraction;\n}, {\n isClass: true\n});", "import { isBigNumber } from '../../utils/is.js';\nimport { format, sign } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'Range';\nvar dependencies = [];\nexport var createRangeClass = /* #__PURE__ */factory(name, dependencies, () => {\n /**\n * Create a range. A range has a start, step, and end, and contains functions\n * to iterate over the range.\n *\n * A range can be constructed as:\n *\n * const range = new Range(start, end)\n * const range = new Range(start, end, step)\n *\n * To get the result of the range:\n * range.forEach(function (x) {\n * console.log(x)\n * })\n * range.map(function (x) {\n * return math.sin(x)\n * })\n * range.toArray()\n *\n * Example usage:\n *\n * const c = new Range(2, 6) // 2:1:5\n * c.toArray() // [2, 3, 4, 5]\n * const d = new Range(2, -3, -1) // 2:-1:-2\n * d.toArray() // [2, 1, 0, -1, -2]\n *\n * @class Range\n * @constructor Range\n * @param {number} start included lower bound\n * @param {number} end excluded upper bound\n * @param {number} [step] step size, default value is 1\n */\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n var hasStart = start !== null && start !== undefined;\n var hasEnd = end !== null && end !== undefined;\n var hasStep = step !== null && step !== undefined;\n if (hasStart) {\n if (isBigNumber(start)) {\n start = start.toNumber();\n } else if (typeof start !== 'number') {\n throw new TypeError('Parameter start must be a number');\n }\n }\n if (hasEnd) {\n if (isBigNumber(end)) {\n end = end.toNumber();\n } else if (typeof end !== 'number') {\n throw new TypeError('Parameter end must be a number');\n }\n }\n if (hasStep) {\n if (isBigNumber(step)) {\n step = step.toNumber();\n } else if (typeof step !== 'number') {\n throw new TypeError('Parameter step must be a number');\n }\n }\n this.start = hasStart ? parseFloat(start) : 0;\n this.end = hasEnd ? parseFloat(end) : 0;\n this.step = hasStep ? parseFloat(step) : 1;\n }\n\n /**\n * Attach type information\n */\n Range.prototype.type = 'Range';\n Range.prototype.isRange = true;\n\n /**\n * Parse a string into a range,\n * The string contains the start, optional step, and end, separated by a colon.\n * If the string does not contain a valid range, null is returned.\n * For example str='0:2:11'.\n * @memberof Range\n * @param {string} str\n * @return {Range | null} range\n */\n Range.parse = function (str) {\n if (typeof str !== 'string') {\n return null;\n }\n var args = str.split(':');\n var nums = args.map(function (arg) {\n return parseFloat(arg);\n });\n var invalid = nums.some(function (num) {\n return isNaN(num);\n });\n if (invalid) {\n return null;\n }\n switch (nums.length) {\n case 2:\n return new Range(nums[0], nums[1]);\n case 3:\n return new Range(nums[0], nums[2], nums[1]);\n default:\n return null;\n }\n };\n\n /**\n * Create a clone of the range\n * @return {Range} clone\n */\n Range.prototype.clone = function () {\n return new Range(this.start, this.end, this.step);\n };\n\n /**\n * Retrieve the size of the range.\n * Returns an array containing one number, the number of elements in the range.\n * @memberof Range\n * @returns {number[]} size\n */\n Range.prototype.size = function () {\n var len = 0;\n var start = this.start;\n var step = this.step;\n var end = this.end;\n var diff = end - start;\n if (sign(step) === sign(diff)) {\n len = Math.ceil(diff / step);\n } else if (diff === 0) {\n len = 0;\n }\n if (isNaN(len)) {\n len = 0;\n }\n return [len];\n };\n\n /**\n * Calculate the minimum value in the range\n * @memberof Range\n * @return {number | undefined} min\n */\n Range.prototype.min = function () {\n var size = this.size()[0];\n if (size > 0) {\n if (this.step > 0) {\n // positive step\n return this.start;\n } else {\n // negative step\n return this.start + (size - 1) * this.step;\n }\n } else {\n return undefined;\n }\n };\n\n /**\n * Calculate the maximum value in the range\n * @memberof Range\n * @return {number | undefined} max\n */\n Range.prototype.max = function () {\n var size = this.size()[0];\n if (size > 0) {\n if (this.step > 0) {\n // positive step\n return this.start + (size - 1) * this.step;\n } else {\n // negative step\n return this.start;\n }\n } else {\n return undefined;\n }\n };\n\n /**\n * Execute a callback function for each value in the range.\n * @memberof Range\n * @param {function} callback The callback method is invoked with three\n * parameters: the value of the element, the index\n * of the element, and the Range being traversed.\n */\n Range.prototype.forEach = function (callback) {\n var x = this.start;\n var step = this.step;\n var end = this.end;\n var i = 0;\n if (step > 0) {\n while (x < end) {\n callback(x, [i], this);\n x += step;\n i++;\n }\n } else if (step < 0) {\n while (x > end) {\n callback(x, [i], this);\n x += step;\n i++;\n }\n }\n };\n\n /**\n * Execute a callback function for each value in the Range, and return the\n * results as an array\n * @memberof Range\n * @param {function} callback The callback method is invoked with three\n * parameters: the value of the element, the index\n * of the element, and the Matrix being traversed.\n * @returns {Array} array\n */\n Range.prototype.map = function (callback) {\n var array = [];\n this.forEach(function (value, index, obj) {\n array[index[0]] = callback(value, index, obj);\n });\n return array;\n };\n\n /**\n * Create an Array with a copy of the Ranges data\n * @memberof Range\n * @returns {Array} array\n */\n Range.prototype.toArray = function () {\n var array = [];\n this.forEach(function (value, index) {\n array[index[0]] = value;\n });\n return array;\n };\n\n /**\n * Get the primitive value of the Range, a one dimensional array\n * @memberof Range\n * @returns {Array} array\n */\n Range.prototype.valueOf = function () {\n // TODO: implement a caching mechanism for range.valueOf()\n return this.toArray();\n };\n\n /**\n * Get a string representation of the range, with optional formatting options.\n * Output is formatted as 'start:step:end', for example '2:6' or '0:0.2:11'\n * @memberof Range\n * @param {Object | number | function} [options] Formatting options. See\n * lib/utils/number:format for a\n * description of the available\n * options.\n * @returns {string} str\n */\n Range.prototype.format = function (options) {\n var str = format(this.start, options);\n if (this.step !== 1) {\n str += ':' + format(this.step, options);\n }\n str += ':' + format(this.end, options);\n return str;\n };\n\n /**\n * Get a string representation of the range.\n * @memberof Range\n * @returns {string}\n */\n Range.prototype.toString = function () {\n return this.format();\n };\n\n /**\n * Get a JSON representation of the range\n * @memberof Range\n * @returns {Object} Returns a JSON object structured as:\n * `{\"mathjs\": \"Range\", \"start\": 2, \"end\": 4, \"step\": 1}`\n */\n Range.prototype.toJSON = function () {\n return {\n mathjs: 'Range',\n start: this.start,\n end: this.end,\n step: this.step\n };\n };\n\n /**\n * Instantiate a Range from a JSON object\n * @memberof Range\n * @param {Object} json A JSON object structured as:\n * `{\"mathjs\": \"Range\", \"start\": 2, \"end\": 4, \"step\": 1}`\n * @return {Range}\n */\n Range.fromJSON = function (json) {\n return new Range(json.start, json.end, json.step);\n };\n return Range;\n}, {\n isClass: true\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'Matrix';\nvar dependencies = [];\nexport var createMatrixClass = /* #__PURE__ */factory(name, dependencies, () => {\n /**\n * @constructor Matrix\n *\n * A Matrix is a wrapper around an Array. A matrix can hold a multi dimensional\n * array. A matrix can be constructed as:\n *\n * let matrix = math.matrix(data)\n *\n * Matrix contains the functions to resize, get and set values, get the size,\n * clone the matrix and to convert the matrix to a vector, array, or scalar.\n * Furthermore, one can iterate over the matrix using map and forEach.\n * The internal Array of the Matrix can be accessed using the function valueOf.\n *\n * Example usage:\n *\n * let matrix = math.matrix([[1, 2], [3, 4]])\n * matix.size() // [2, 2]\n * matrix.resize([3, 2], 5)\n * matrix.valueOf() // [[1, 2], [3, 4], [5, 5]]\n * matrix.subset([1,2]) // 3 (indexes are zero-based)\n *\n */\n function Matrix() {\n if (!(this instanceof Matrix)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n }\n\n /**\n * Attach type information\n */\n Matrix.prototype.type = 'Matrix';\n Matrix.prototype.isMatrix = true;\n\n /**\n * Get the storage format used by the matrix.\n *\n * Usage:\n * const format = matrix.storage() // retrieve storage format\n *\n * @return {string} The storage format.\n */\n Matrix.prototype.storage = function () {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke storage on a Matrix interface');\n };\n\n /**\n * Get the datatype of the data stored in the matrix.\n *\n * Usage:\n * const format = matrix.datatype() // retrieve matrix datatype\n *\n * @return {string} The datatype.\n */\n Matrix.prototype.datatype = function () {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke datatype on a Matrix interface');\n };\n\n /**\n * Create a new Matrix With the type of the current matrix instance\n * @param {Array | Object} data\n * @param {string} [datatype]\n */\n Matrix.prototype.create = function (data, datatype) {\n throw new Error('Cannot invoke create on a Matrix interface');\n };\n\n /**\n * Get a subset of the matrix, or replace a subset of the matrix.\n *\n * Usage:\n * const subset = matrix.subset(index) // retrieve subset\n * const value = matrix.subset(index, replacement) // replace subset\n *\n * @param {Index} index\n * @param {Array | Matrix | *} [replacement]\n * @param {*} [defaultValue=0] Default value, filled in on new entries when\n * the matrix is resized. If not provided,\n * new matrix elements will be filled with zeros.\n */\n Matrix.prototype.subset = function (index, replacement, defaultValue) {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke subset on a Matrix interface');\n };\n\n /**\n * Get a single element from the matrix.\n * @param {number[]} index Zero-based index\n * @return {*} value\n */\n Matrix.prototype.get = function (index) {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke get on a Matrix interface');\n };\n\n /**\n * Replace a single element in the matrix.\n * @param {number[]} index Zero-based index\n * @param {*} value\n * @param {*} [defaultValue] Default value, filled in on new entries when\n * the matrix is resized. If not provided,\n * new matrix elements will be left undefined.\n * @return {Matrix} self\n */\n Matrix.prototype.set = function (index, value, defaultValue) {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke set on a Matrix interface');\n };\n\n /**\n * Resize the matrix to the given size. Returns a copy of the matrix when\n * `copy=true`, otherwise return the matrix itself (resize in place).\n *\n * @param {number[]} size The new size the matrix should have.\n * @param {*} [defaultValue=0] Default value, filled in on new entries.\n * If not provided, the matrix elements will\n * be filled with zeros.\n * @param {boolean} [copy] Return a resized copy of the matrix\n *\n * @return {Matrix} The resized matrix\n */\n Matrix.prototype.resize = function (size, defaultValue) {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke resize on a Matrix interface');\n };\n\n /**\n * Reshape the matrix to the given size. Returns a copy of the matrix when\n * `copy=true`, otherwise return the matrix itself (reshape in place).\n *\n * @param {number[]} size The new size the matrix should have.\n * @param {boolean} [copy] Return a reshaped copy of the matrix\n *\n * @return {Matrix} The reshaped matrix\n */\n Matrix.prototype.reshape = function (size, defaultValue) {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke reshape on a Matrix interface');\n };\n\n /**\n * Create a clone of the matrix\n * @return {Matrix} clone\n */\n Matrix.prototype.clone = function () {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke clone on a Matrix interface');\n };\n\n /**\n * Retrieve the size of the matrix.\n * @returns {number[]} size\n */\n Matrix.prototype.size = function () {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke size on a Matrix interface');\n };\n\n /**\n * Create a new matrix with the results of the callback function executed on\n * each entry of the matrix.\n * @param {Function} callback The callback function is invoked with three\n * parameters: the value of the element, the index\n * of the element, and the Matrix being traversed.\n * @param {boolean} [skipZeros] Invoke callback function for non-zero values only.\n *\n * @return {Matrix} matrix\n */\n Matrix.prototype.map = function (callback, skipZeros) {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke map on a Matrix interface');\n };\n\n /**\n * Execute a callback function on each entry of the matrix.\n * @param {Function} callback The callback function is invoked with three\n * parameters: the value of the element, the index\n * of the element, and the Matrix being traversed.\n */\n Matrix.prototype.forEach = function (callback) {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke forEach on a Matrix interface');\n };\n\n /**\n * Iterate over the matrix elements\n * @return {Iterable<{ value, index: number[] }>}\n */\n Matrix.prototype[Symbol.iterator] = function () {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot iterate a Matrix interface');\n };\n\n /**\n * Create an Array with a copy of the data of the Matrix\n * @returns {Array} array\n */\n Matrix.prototype.toArray = function () {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke toArray on a Matrix interface');\n };\n\n /**\n * Get the primitive value of the Matrix: a multidimensional array\n * @returns {Array} array\n */\n Matrix.prototype.valueOf = function () {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke valueOf on a Matrix interface');\n };\n\n /**\n * Get a string representation of the matrix, with optional formatting options.\n * @param {Object | number | Function} [options] Formatting options. See\n * lib/utils/number:format for a\n * description of the available\n * options.\n * @returns {string} str\n */\n Matrix.prototype.format = function (options) {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke format on a Matrix interface');\n };\n\n /**\n * Get a string representation of the matrix\n * @returns {string} str\n */\n Matrix.prototype.toString = function () {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke toString on a Matrix interface');\n };\n return Matrix;\n}, {\n isClass: true\n});", "import { isBigNumber, isNumber } from '../is.js';\nimport { isInteger, normalizeFormatOptions } from '../number.js';\n\n/**\n * Formats a BigNumber in a given base\n * @param {BigNumber} n\n * @param {number} base\n * @param {number} size\n * @returns {string}\n */\nfunction formatBigNumberToBase(n, base, size) {\n var BigNumberCtor = n.constructor;\n var big2 = new BigNumberCtor(2);\n var suffix = '';\n if (size) {\n if (size < 1) {\n throw new Error('size must be in greater than 0');\n }\n if (!isInteger(size)) {\n throw new Error('size must be an integer');\n }\n if (n.greaterThan(big2.pow(size - 1).sub(1)) || n.lessThan(big2.pow(size - 1).mul(-1))) {\n throw new Error(\"Value must be in range [-2^\".concat(size - 1, \", 2^\").concat(size - 1, \"-1]\"));\n }\n if (!n.isInteger()) {\n throw new Error('Value must be an integer');\n }\n if (n.lessThan(0)) {\n n = n.add(big2.pow(size));\n }\n suffix = \"i\".concat(size);\n }\n switch (base) {\n case 2:\n return \"\".concat(n.toBinary()).concat(suffix);\n case 8:\n return \"\".concat(n.toOctal()).concat(suffix);\n case 16:\n return \"\".concat(n.toHexadecimal()).concat(suffix);\n default:\n throw new Error(\"Base \".concat(base, \" not supported \"));\n }\n}\n\n/**\n * Convert a BigNumber to a formatted string representation.\n *\n * Syntax:\n *\n * format(value)\n * format(value, options)\n * format(value, precision)\n * format(value, fn)\n *\n * Where:\n *\n * {number} value The value to be formatted\n * {Object} options An object with formatting options. Available options:\n * {string} notation\n * Number notation. Choose from:\n * 'fixed' Always use regular number notation.\n * For example '123.40' and '14000000'\n * 'exponential' Always use exponential notation.\n * For example '1.234e+2' and '1.4e+7'\n * 'auto' (default) Regular number notation for numbers\n * having an absolute value between\n * `lower` and `upper` bounds, and uses\n * exponential notation elsewhere.\n * Lower bound is included, upper bound\n * is excluded.\n * For example '123.4' and '1.4e7'.\n * 'bin', 'oct, or\n * 'hex' Format the number using binary, octal,\n * or hexadecimal notation.\n * For example '0b1101' and '0x10fe'.\n * {number} wordSize The word size in bits to use for formatting\n * in binary, octal, or hexadecimal notation.\n * To be used only with 'bin', 'oct', or 'hex'\n * values for 'notation' option. When this option\n * is defined the value is formatted as a signed\n * twos complement integer of the given word size\n * and the size suffix is appended to the output.\n * For example\n * format(-1, {notation: 'hex', wordSize: 8}) === '0xffi8'.\n * Default value is undefined.\n * {number} precision A number between 0 and 16 to round\n * the digits of the number.\n * In case of notations 'exponential',\n * 'engineering', and 'auto',\n * `precision` defines the total\n * number of significant digits returned.\n * In case of notation 'fixed',\n * `precision` defines the number of\n * significant digits after the decimal\n * point.\n * `precision` is undefined by default.\n * {number} lowerExp Exponent determining the lower boundary\n * for formatting a value with an exponent\n * when `notation='auto`.\n * Default value is `-3`.\n * {number} upperExp Exponent determining the upper boundary\n * for formatting a value with an exponent\n * when `notation='auto`.\n * Default value is `5`.\n * {Function} fn A custom formatting function. Can be used to override the\n * built-in notations. Function `fn` is called with `value` as\n * parameter and must return a string. Is useful for example to\n * format all values inside a matrix in a particular way.\n *\n * Examples:\n *\n * format(6.4) // '6.4'\n * format(1240000) // '1.24e6'\n * format(1/3) // '0.3333333333333333'\n * format(1/3, 3) // '0.333'\n * format(21385, 2) // '21000'\n * format(12e8, {notation: 'fixed'}) // returns '1200000000'\n * format(2.3, {notation: 'fixed', precision: 4}) // returns '2.3000'\n * format(52.8, {notation: 'exponential'}) // returns '5.28e+1'\n * format(12400, {notation: 'engineering'}) // returns '12.400e+3'\n *\n * @param {BigNumber} value\n * @param {Object | Function | number | BigNumber} [options]\n * @return {string} str The formatted value\n */\nexport function format(value, options) {\n if (typeof options === 'function') {\n // handle format(value, fn)\n return options(value);\n }\n\n // handle special cases\n if (!value.isFinite()) {\n return value.isNaN() ? 'NaN' : value.gt(0) ? 'Infinity' : '-Infinity';\n }\n var {\n notation,\n precision,\n wordSize\n } = normalizeFormatOptions(options);\n\n // handle the various notations\n switch (notation) {\n case 'fixed':\n return toFixed(value, precision);\n case 'exponential':\n return toExponential(value, precision);\n case 'engineering':\n return toEngineering(value, precision);\n case 'bin':\n return formatBigNumberToBase(value, 2, wordSize);\n case 'oct':\n return formatBigNumberToBase(value, 8, wordSize);\n case 'hex':\n return formatBigNumberToBase(value, 16, wordSize);\n case 'auto':\n {\n // determine lower and upper bound for exponential notation.\n // TODO: implement support for upper and lower to be BigNumbers themselves\n var lowerExp = _toNumberOrDefault(options === null || options === void 0 ? void 0 : options.lowerExp, -3);\n var upperExp = _toNumberOrDefault(options === null || options === void 0 ? void 0 : options.upperExp, 5);\n\n // handle special case zero\n if (value.isZero()) return '0';\n\n // determine whether or not to output exponential notation\n var str;\n var rounded = value.toSignificantDigits(precision);\n var exp = rounded.e;\n if (exp >= lowerExp && exp < upperExp) {\n // normal number notation\n str = rounded.toFixed();\n } else {\n // exponential notation\n str = toExponential(value, precision);\n }\n\n // remove trailing zeros after the decimal point\n return str.replace(/((\\.\\d*?)(0+))($|e)/, function () {\n var digits = arguments[2];\n var e = arguments[4];\n return digits !== '.' ? digits + e : e;\n });\n }\n default:\n throw new Error('Unknown notation \"' + notation + '\". ' + 'Choose \"auto\", \"exponential\", \"fixed\", \"bin\", \"oct\", or \"hex.');\n }\n}\n\n/**\n * Format a BigNumber in engineering notation. Like '1.23e+6', '2.3e+0', '3.500e-3'\n * @param {BigNumber} value\n * @param {number} [precision] Optional number of significant figures to return.\n */\nexport function toEngineering(value, precision) {\n // find nearest lower multiple of 3 for exponent\n var e = value.e;\n var newExp = e % 3 === 0 ? e : e < 0 ? e - 3 - e % 3 : e - e % 3;\n\n // find difference in exponents, and calculate the value without exponent\n var valueWithoutExp = value.mul(Math.pow(10, -newExp));\n var valueStr = valueWithoutExp.toPrecision(precision);\n if (valueStr.includes('e')) {\n var BigNumber = value.constructor;\n valueStr = new BigNumber(valueStr).toFixed();\n }\n return valueStr + 'e' + (e >= 0 ? '+' : '') + newExp.toString();\n}\n\n/**\n * Format a number in exponential notation. Like '1.23e+5', '2.3e+0', '3.500e-3'\n * @param {BigNumber} value\n * @param {number} [precision] Number of digits in formatted output.\n * If not provided, the maximum available digits\n * is used.\n * @returns {string} str\n */\nexport function toExponential(value, precision) {\n if (precision !== undefined) {\n return value.toExponential(precision - 1); // Note the offset of one\n } else {\n return value.toExponential();\n }\n}\n\n/**\n * Format a number with fixed notation.\n * @param {BigNumber} value\n * @param {number} [precision=undefined] Optional number of decimals after the\n * decimal point. Undefined by default.\n */\nexport function toFixed(value, precision) {\n return value.toFixed(precision);\n}\nfunction _toNumberOrDefault(value, defaultValue) {\n if (isNumber(value)) {\n return value;\n } else if (isBigNumber(value)) {\n return value.toNumber();\n } else {\n return defaultValue;\n }\n}", "import { isBigNumber, isString, typeOf } from './is.js';\nimport { format as formatNumber } from './number.js';\nimport { format as formatBigNumber } from './bignumber/formatter.js';\n\n/**\n * Check if a text ends with a certain string.\n * @param {string} text\n * @param {string} search\n */\nexport function endsWith(text, search) {\n var start = text.length - search.length;\n var end = text.length;\n return text.substring(start, end) === search;\n}\n\n/**\n * Format a value of any type into a string.\n *\n * Usage:\n * math.format(value)\n * math.format(value, precision)\n * math.format(value, options)\n *\n * When value is a function:\n *\n * - When the function has a property `syntax`, it returns this\n * syntax description.\n * - In other cases, a string `'function'` is returned.\n *\n * When `value` is an Object:\n *\n * - When the object contains a property `format` being a function, this\n * function is invoked as `value.format(options)` and the result is returned.\n * - When the object has its own `toString` method, this method is invoked\n * and the result is returned.\n * - In other cases the function will loop over all object properties and\n * return JSON object notation like '{\"a\": 2, \"b\": 3}'.\n *\n * Example usage:\n * math.format(2/7) // '0.2857142857142857'\n * math.format(math.pi, 3) // '3.14'\n * math.format(new Complex(2, 3)) // '2 + 3i'\n * math.format('hello') // '\"hello\"'\n *\n * @param {*} value Value to be stringified\n * @param {Object | number | Function} [options]\n * Formatting options. See src/utils/number.js:format for a\n * description of the available options controlling number output.\n * This generic \"format\" also supports the option property `truncate: NN`\n * giving the maximum number NN of characters to return (if there would\n * have been more, they are deleted and replaced by an ellipsis).\n * @return {string} str\n */\nexport function format(value, options) {\n var result = _format(value, options);\n if (options && typeof options === 'object' && 'truncate' in options && result.length > options.truncate) {\n return result.substring(0, options.truncate - 3) + '...';\n }\n return result;\n}\nfunction _format(value, options) {\n if (typeof value === 'number') {\n return formatNumber(value, options);\n }\n if (isBigNumber(value)) {\n return formatBigNumber(value, options);\n }\n\n // note: we use unsafe duck-typing here to check for Fractions, this is\n // ok here since we're only invoking toString or concatenating its values\n if (looksLikeFraction(value)) {\n if (!options || options.fraction !== 'decimal') {\n // output as ratio, like '1/3'\n return value.s * value.n + '/' + value.d;\n } else {\n // output as decimal, like '0.(3)'\n return value.toString();\n }\n }\n if (Array.isArray(value)) {\n return formatArray(value, options);\n }\n if (isString(value)) {\n return stringify(value);\n }\n if (typeof value === 'function') {\n return value.syntax ? String(value.syntax) : 'function';\n }\n if (value && typeof value === 'object') {\n if (typeof value.format === 'function') {\n return value.format(options);\n } else if (value && value.toString(options) !== {}.toString()) {\n // this object has a non-native toString method, use that one\n return value.toString(options);\n } else {\n var entries = Object.keys(value).map(key => {\n return stringify(key) + ': ' + format(value[key], options);\n });\n return '{' + entries.join(', ') + '}';\n }\n }\n return String(value);\n}\n\n/**\n * Stringify a value into a string enclosed in double quotes.\n * Unescaped double quotes and backslashes inside the value are escaped.\n * @param {*} value\n * @return {string}\n */\nexport function stringify(value) {\n var text = String(value);\n var escaped = '';\n var i = 0;\n while (i < text.length) {\n var c = text.charAt(i);\n escaped += c in controlCharacters ? controlCharacters[c] : c;\n i++;\n }\n return '\"' + escaped + '\"';\n}\nvar controlCharacters = {\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\',\n '\\b': '\\\\b',\n '\\f': '\\\\f',\n '\\n': '\\\\n',\n '\\r': '\\\\r',\n '\\t': '\\\\t'\n};\n\n/**\n * Escape special HTML characters\n * @param {*} value\n * @return {string}\n */\nexport function escape(value) {\n var text = String(value);\n text = text.replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(//g, '>');\n return text;\n}\n\n/**\n * Recursively format an n-dimensional matrix\n * Example output: \"[[1, 2], [3, 4]]\"\n * @param {Array} array\n * @param {Object | number | Function} [options] Formatting options. See\n * lib/utils/number:format for a\n * description of the available\n * options.\n * @returns {string} str\n */\nfunction formatArray(array, options) {\n if (Array.isArray(array)) {\n var str = '[';\n var len = array.length;\n for (var i = 0; i < len; i++) {\n if (i !== 0) {\n str += ', ';\n }\n str += formatArray(array[i], options);\n }\n str += ']';\n return str;\n } else {\n return format(array, options);\n }\n}\n\n/**\n * Check whether a value looks like a Fraction (unsafe duck-type check)\n * @param {*} value\n * @return {boolean}\n */\nfunction looksLikeFraction(value) {\n return value && typeof value === 'object' && typeof value.s === 'number' && typeof value.n === 'number' && typeof value.d === 'number' || false;\n}\n\n/**\n * Compare two strings\n * @param {string} x\n * @param {string} y\n * @returns {number}\n */\nexport function compareText(x, y) {\n // we don't want to convert numbers to string, only accept string input\n if (!isString(x)) {\n throw new TypeError('Unexpected type of argument in function compareText ' + '(expected: string or Array or Matrix, actual: ' + typeOf(x) + ', index: 0)');\n }\n if (!isString(y)) {\n throw new TypeError('Unexpected type of argument in function compareText ' + '(expected: string or Array or Matrix, actual: ' + typeOf(y) + ', index: 1)');\n }\n return x === y ? 0 : x > y ? 1 : -1;\n}", "/**\n * Create a range error with the message:\n * 'Dimension mismatch ( != )'\n * @param {number | number[]} actual The actual size\n * @param {number | number[]} expected The expected size\n * @param {string} [relation='!='] Optional relation between actual\n * and expected size: '!=', '<', etc.\n * @extends RangeError\n */\nexport function DimensionError(actual, expected, relation) {\n if (!(this instanceof DimensionError)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n this.actual = actual;\n this.expected = expected;\n this.relation = relation;\n this.message = 'Dimension mismatch (' + (Array.isArray(actual) ? '[' + actual.join(', ') + ']' : actual) + ' ' + (this.relation || '!=') + ' ' + (Array.isArray(expected) ? '[' + expected.join(', ') + ']' : expected) + ')';\n this.stack = new Error().stack;\n}\nDimensionError.prototype = new RangeError();\nDimensionError.prototype.constructor = RangeError;\nDimensionError.prototype.name = 'DimensionError';\nDimensionError.prototype.isDimensionError = true;", "/**\n * Create a range error with the message:\n * 'Index out of range (index < min)'\n * 'Index out of range (index < max)'\n *\n * @param {number} index The actual index\n * @param {number} [min=0] Minimum index (included)\n * @param {number} [max] Maximum index (excluded)\n * @extends RangeError\n */\nexport function IndexError(index, min, max) {\n if (!(this instanceof IndexError)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n this.index = index;\n if (arguments.length < 3) {\n this.min = 0;\n this.max = min;\n } else {\n this.min = min;\n this.max = max;\n }\n if (this.min !== undefined && this.index < this.min) {\n this.message = 'Index out of range (' + this.index + ' < ' + this.min + ')';\n } else if (this.max !== undefined && this.index >= this.max) {\n this.message = 'Index out of range (' + this.index + ' > ' + (this.max - 1) + ')';\n } else {\n this.message = 'Index out of range (' + this.index + ')';\n }\n this.stack = new Error().stack;\n}\nIndexError.prototype = new RangeError();\nIndexError.prototype.constructor = RangeError;\nIndexError.prototype.name = 'IndexError';\nIndexError.prototype.isIndexError = true;", "import _extends from \"@babel/runtime/helpers/extends\";\nimport { isInteger } from './number.js';\nimport { isNumber, isBigNumber, isArray, isString } from './is.js';\nimport { format } from './string.js';\nimport { DimensionError } from '../error/DimensionError.js';\nimport { IndexError } from '../error/IndexError.js';\nimport { deepStrictEqual } from './object.js';\n\n/**\n * Calculate the size of a multi dimensional array.\n * This function checks the size of the first entry, it does not validate\n * whether all dimensions match. (use function `validate` for that)\n * @param {Array} x\n * @Return {Number[]} size\n */\nexport function arraySize(x) {\n var s = [];\n while (Array.isArray(x)) {\n s.push(x.length);\n x = x[0];\n }\n return s;\n}\n\n/**\n * Recursively validate whether each element in a multi dimensional array\n * has a size corresponding to the provided size array.\n * @param {Array} array Array to be validated\n * @param {number[]} size Array with the size of each dimension\n * @param {number} dim Current dimension\n * @throws DimensionError\n * @private\n */\nfunction _validate(array, size, dim) {\n var i;\n var len = array.length;\n if (len !== size[dim]) {\n throw new DimensionError(len, size[dim]);\n }\n if (dim < size.length - 1) {\n // recursively validate each child array\n var dimNext = dim + 1;\n for (i = 0; i < len; i++) {\n var child = array[i];\n if (!Array.isArray(child)) {\n throw new DimensionError(size.length - 1, size.length, '<');\n }\n _validate(array[i], size, dimNext);\n }\n } else {\n // last dimension. none of the childs may be an array\n for (i = 0; i < len; i++) {\n if (Array.isArray(array[i])) {\n throw new DimensionError(size.length + 1, size.length, '>');\n }\n }\n }\n}\n\n/**\n * Validate whether each element in a multi dimensional array has\n * a size corresponding to the provided size array.\n * @param {Array} array Array to be validated\n * @param {number[]} size Array with the size of each dimension\n * @throws DimensionError\n */\nexport function validate(array, size) {\n var isScalar = size.length === 0;\n if (isScalar) {\n // scalar\n if (Array.isArray(array)) {\n throw new DimensionError(array.length, 0);\n }\n } else {\n // array\n _validate(array, size, 0);\n }\n}\n\n/**\n * Validate whether the source of the index matches the size of the Array\n * @param {Array | Matrix} array Array to be validated\n * @param {Index} index Index with the source information to validate\n * @throws DimensionError\n */\nexport function validateIndexSourceSize(value, index) {\n var valueSize = value.isMatrix ? value._size : arraySize(value);\n var sourceSize = index._sourceSize;\n // checks if the source size is not null and matches the valueSize\n sourceSize.forEach((sourceDim, i) => {\n if (sourceDim !== null && sourceDim !== valueSize[i]) {\n throw new DimensionError(sourceDim, valueSize[i]);\n }\n });\n}\n\n/**\n * Test whether index is an integer number with index >= 0 and index < length\n * when length is provided\n * @param {number} index Zero-based index\n * @param {number} [length] Length of the array\n */\nexport function validateIndex(index, length) {\n if (index !== undefined) {\n if (!isNumber(index) || !isInteger(index)) {\n throw new TypeError('Index must be an integer (value: ' + index + ')');\n }\n if (index < 0 || typeof length === 'number' && index >= length) {\n throw new IndexError(index, length);\n }\n }\n}\n\n/**\n * Test if and index has empty values\n * @param {number} index Zero-based index\n */\nexport function isEmptyIndex(index) {\n for (var i = 0; i < index._dimensions.length; ++i) {\n var dimension = index._dimensions[i];\n if (dimension._data && isArray(dimension._data)) {\n if (dimension._size[0] === 0) {\n return true;\n }\n } else if (dimension.isRange) {\n if (dimension.start === dimension.end) {\n return true;\n }\n } else if (isString(dimension)) {\n if (dimension.length === 0) {\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * Resize a multi dimensional array. The resized array is returned.\n * @param {Array | number} array Array to be resized\n * @param {number[]} size Array with the size of each dimension\n * @param {*} [defaultValue=0] Value to be filled in in new entries,\n * zero by default. Specify for example `null`,\n * to clearly see entries that are not explicitly\n * set.\n * @return {Array} array The resized array\n */\nexport function resize(array, size, defaultValue) {\n // check the type of the arguments\n if (!Array.isArray(size)) {\n throw new TypeError('Array expected');\n }\n if (size.length === 0) {\n throw new Error('Resizing to scalar is not supported');\n }\n\n // check whether size contains positive integers\n size.forEach(function (value) {\n if (!isNumber(value) || !isInteger(value) || value < 0) {\n throw new TypeError('Invalid size, must contain positive integers ' + '(size: ' + format(size) + ')');\n }\n });\n\n // convert number to an array\n if (isNumber(array) || isBigNumber(array)) {\n array = [array];\n }\n\n // recursively resize the array\n var _defaultValue = defaultValue !== undefined ? defaultValue : 0;\n _resize(array, size, 0, _defaultValue);\n return array;\n}\n\n/**\n * Recursively resize a multi dimensional array\n * @param {Array} array Array to be resized\n * @param {number[]} size Array with the size of each dimension\n * @param {number} dim Current dimension\n * @param {*} [defaultValue] Value to be filled in in new entries,\n * undefined by default.\n * @private\n */\nfunction _resize(array, size, dim, defaultValue) {\n var i;\n var elem;\n var oldLen = array.length;\n var newLen = size[dim];\n var minLen = Math.min(oldLen, newLen);\n\n // apply new length\n array.length = newLen;\n if (dim < size.length - 1) {\n // non-last dimension\n var dimNext = dim + 1;\n\n // resize existing child arrays\n for (i = 0; i < minLen; i++) {\n // resize child array\n elem = array[i];\n if (!Array.isArray(elem)) {\n elem = [elem]; // add a dimension\n array[i] = elem;\n }\n _resize(elem, size, dimNext, defaultValue);\n }\n\n // create new child arrays\n for (i = minLen; i < newLen; i++) {\n // get child array\n elem = [];\n array[i] = elem;\n\n // resize new child array\n _resize(elem, size, dimNext, defaultValue);\n }\n } else {\n // last dimension\n\n // remove dimensions of existing values\n for (i = 0; i < minLen; i++) {\n while (Array.isArray(array[i])) {\n array[i] = array[i][0];\n }\n }\n\n // fill new elements with the default value\n for (i = minLen; i < newLen; i++) {\n array[i] = defaultValue;\n }\n }\n}\n\n/**\n * Re-shape a multi dimensional array to fit the specified dimensions\n * @param {Array} array Array to be reshaped\n * @param {number[]} sizes List of sizes for each dimension\n * @returns {Array} Array whose data has been formatted to fit the\n * specified dimensions\n *\n * @throws {DimensionError} If the product of the new dimension sizes does\n * not equal that of the old ones\n */\nexport function reshape(array, sizes) {\n var flatArray = flatten(array);\n var currentLength = flatArray.length;\n if (!Array.isArray(array) || !Array.isArray(sizes)) {\n throw new TypeError('Array expected');\n }\n if (sizes.length === 0) {\n throw new DimensionError(0, currentLength, '!=');\n }\n sizes = processSizesWildcard(sizes, currentLength);\n var newLength = product(sizes);\n if (currentLength !== newLength) {\n throw new DimensionError(newLength, currentLength, '!=');\n }\n try {\n return _reshape(flatArray, sizes);\n } catch (e) {\n if (e instanceof DimensionError) {\n throw new DimensionError(newLength, currentLength, '!=');\n }\n throw e;\n }\n}\n\n/**\n * Replaces the wildcard -1 in the sizes array.\n * @param {number[]} sizes List of sizes for each dimension. At most on wildcard.\n * @param {number} currentLength Number of elements in the array.\n * @throws {Error} If more than one wildcard or unable to replace it.\n * @returns {number[]} The sizes array with wildcard replaced.\n */\nexport function processSizesWildcard(sizes, currentLength) {\n var newLength = product(sizes);\n var processedSizes = sizes.slice();\n var WILDCARD = -1;\n var wildCardIndex = sizes.indexOf(WILDCARD);\n var isMoreThanOneWildcard = sizes.indexOf(WILDCARD, wildCardIndex + 1) >= 0;\n if (isMoreThanOneWildcard) {\n throw new Error('More than one wildcard in sizes');\n }\n var hasWildcard = wildCardIndex >= 0;\n var canReplaceWildcard = currentLength % newLength === 0;\n if (hasWildcard) {\n if (canReplaceWildcard) {\n processedSizes[wildCardIndex] = -currentLength / newLength;\n } else {\n throw new Error('Could not replace wildcard, since ' + currentLength + ' is no multiple of ' + -newLength);\n }\n }\n return processedSizes;\n}\n\n/**\n * Computes the product of all array elements.\n * @param {number[]} array Array of factors\n * @returns {number} Product of all elements\n */\nfunction product(array) {\n return array.reduce((prev, curr) => prev * curr, 1);\n}\n\n/**\n * Iteratively re-shape a multi dimensional array to fit the specified dimensions\n * @param {Array} array Array to be reshaped\n * @param {number[]} sizes List of sizes for each dimension\n * @returns {Array} Array whose data has been formatted to fit the\n * specified dimensions\n */\n\nfunction _reshape(array, sizes) {\n // testing if there are enough elements for the requested shape\n var tmpArray = array;\n var tmpArray2;\n // for each dimensions starting by the last one and ignoring the first one\n for (var sizeIndex = sizes.length - 1; sizeIndex > 0; sizeIndex--) {\n var size = sizes[sizeIndex];\n tmpArray2 = [];\n\n // aggregate the elements of the current tmpArray in elements of the requested size\n var length = tmpArray.length / size;\n for (var i = 0; i < length; i++) {\n tmpArray2.push(tmpArray.slice(i * size, (i + 1) * size));\n }\n // set it as the new tmpArray for the next loop turn or for return\n tmpArray = tmpArray2;\n }\n return tmpArray;\n}\n\n/**\n * Squeeze a multi dimensional array\n * @param {Array} array\n * @param {Array} [size]\n * @returns {Array} returns the array itself\n */\nexport function squeeze(array, size) {\n var s = size || arraySize(array);\n\n // squeeze outer dimensions\n while (Array.isArray(array) && array.length === 1) {\n array = array[0];\n s.shift();\n }\n\n // find the first dimension to be squeezed\n var dims = s.length;\n while (s[dims - 1] === 1) {\n dims--;\n }\n\n // squeeze inner dimensions\n if (dims < s.length) {\n array = _squeeze(array, dims, 0);\n s.length = dims;\n }\n return array;\n}\n\n/**\n * Recursively squeeze a multi dimensional array\n * @param {Array} array\n * @param {number} dims Required number of dimensions\n * @param {number} dim Current dimension\n * @returns {Array | *} Returns the squeezed array\n * @private\n */\nfunction _squeeze(array, dims, dim) {\n var i, ii;\n if (dim < dims) {\n var next = dim + 1;\n for (i = 0, ii = array.length; i < ii; i++) {\n array[i] = _squeeze(array[i], dims, next);\n }\n } else {\n while (Array.isArray(array)) {\n array = array[0];\n }\n }\n return array;\n}\n\n/**\n * Unsqueeze a multi dimensional array: add dimensions when missing\n *\n * Paramter `size` will be mutated to match the new, unqueezed matrix size.\n *\n * @param {Array} array\n * @param {number} dims Desired number of dimensions of the array\n * @param {number} [outer] Number of outer dimensions to be added\n * @param {Array} [size] Current size of array.\n * @returns {Array} returns the array itself\n * @private\n */\nexport function unsqueeze(array, dims, outer, size) {\n var s = size || arraySize(array);\n\n // unsqueeze outer dimensions\n if (outer) {\n for (var i = 0; i < outer; i++) {\n array = [array];\n s.unshift(1);\n }\n }\n\n // unsqueeze inner dimensions\n array = _unsqueeze(array, dims, 0);\n while (s.length < dims) {\n s.push(1);\n }\n return array;\n}\n\n/**\n * Recursively unsqueeze a multi dimensional array\n * @param {Array} array\n * @param {number} dims Required number of dimensions\n * @param {number} dim Current dimension\n * @returns {Array | *} Returns the squeezed array\n * @private\n */\nfunction _unsqueeze(array, dims, dim) {\n var i, ii;\n if (Array.isArray(array)) {\n var next = dim + 1;\n for (i = 0, ii = array.length; i < ii; i++) {\n array[i] = _unsqueeze(array[i], dims, next);\n }\n } else {\n for (var d = dim; d < dims; d++) {\n array = [array];\n }\n }\n return array;\n}\n/**\n * Flatten a multi dimensional array, put all elements in a one dimensional\n * array\n * @param {Array} array A multi dimensional array\n * @return {Array} The flattened array (1 dimensional)\n */\nexport function flatten(array) {\n if (!Array.isArray(array)) {\n // if not an array, return as is\n return array;\n }\n var flat = [];\n array.forEach(function callback(value) {\n if (Array.isArray(value)) {\n value.forEach(callback); // traverse through sub-arrays recursively\n } else {\n flat.push(value);\n }\n });\n return flat;\n}\n\n/**\n * A safe map\n * @param {Array} array\n * @param {function} callback\n */\nexport function map(array, callback) {\n return Array.prototype.map.call(array, callback);\n}\n\n/**\n * A safe forEach\n * @param {Array} array\n * @param {function} callback\n */\nexport function forEach(array, callback) {\n Array.prototype.forEach.call(array, callback);\n}\n\n/**\n * A safe filter\n * @param {Array} array\n * @param {function} callback\n */\nexport function filter(array, callback) {\n if (arraySize(array).length !== 1) {\n throw new Error('Only one dimensional matrices supported');\n }\n return Array.prototype.filter.call(array, callback);\n}\n\n/**\n * Filter values in a callback given a regular expression\n * @param {Array} array\n * @param {RegExp} regexp\n * @return {Array} Returns the filtered array\n * @private\n */\nexport function filterRegExp(array, regexp) {\n if (arraySize(array).length !== 1) {\n throw new Error('Only one dimensional matrices supported');\n }\n return Array.prototype.filter.call(array, entry => regexp.test(entry));\n}\n\n/**\n * A safe join\n * @param {Array} array\n * @param {string} separator\n */\nexport function join(array, separator) {\n return Array.prototype.join.call(array, separator);\n}\n\n/**\n * Assign a numeric identifier to every element of a sorted array\n * @param {Array} a An array\n * @return {Array} An array of objects containing the original value and its identifier\n */\nexport function identify(a) {\n if (!Array.isArray(a)) {\n throw new TypeError('Array input expected');\n }\n if (a.length === 0) {\n return a;\n }\n var b = [];\n var count = 0;\n b[0] = {\n value: a[0],\n identifier: 0\n };\n for (var i = 1; i < a.length; i++) {\n if (a[i] === a[i - 1]) {\n count++;\n } else {\n count = 0;\n }\n b.push({\n value: a[i],\n identifier: count\n });\n }\n return b;\n}\n\n/**\n * Remove the numeric identifier from the elements\n * @param {array} a An array\n * @return {array} An array of values without identifiers\n */\nexport function generalize(a) {\n if (!Array.isArray(a)) {\n throw new TypeError('Array input expected');\n }\n if (a.length === 0) {\n return a;\n }\n var b = [];\n for (var i = 0; i < a.length; i++) {\n b.push(a[i].value);\n }\n return b;\n}\n\n/**\n * Check the datatype of a given object\n * This is a low level implementation that should only be used by\n * parent Matrix classes such as SparseMatrix or DenseMatrix\n * This method does not validate Array Matrix shape\n * @param {Array} array\n * @param {function} typeOf Callback function to use to determine the type of a value\n * @return {string}\n */\nexport function getArrayDataType(array, typeOf) {\n var type; // to hold type info\n var length = 0; // to hold length value to ensure it has consistent sizes\n\n for (var i = 0; i < array.length; i++) {\n var item = array[i];\n var _isArray = Array.isArray(item);\n\n // Saving the target matrix row size\n if (i === 0 && _isArray) {\n length = item.length;\n }\n\n // If the current item is an array but the length does not equal the targetVectorSize\n if (_isArray && item.length !== length) {\n return undefined;\n }\n var itemType = _isArray ? getArrayDataType(item, typeOf) // recurse into a nested array\n : typeOf(item);\n if (type === undefined) {\n type = itemType; // first item\n } else if (type !== itemType) {\n return 'mixed';\n } else {\n // we're good, everything has the same type so far\n }\n }\n return type;\n}\n\n/**\n * Return the last item from an array\n * @param {array}\n * @returns {*}\n */\nexport function last(array) {\n return array[array.length - 1];\n}\n\n/**\n * Get all but the last element of array.\n * @param {array}\n * @returns {*}\n */\nexport function initial(array) {\n return array.slice(0, array.length - 1);\n}\n\n/**\n * Recursively concatenate two matrices.\n * The contents of the matrices is not cloned.\n * @param {Array} a Multi dimensional array\n * @param {Array} b Multi dimensional array\n * @param {number} concatDim The dimension on which to concatenate (zero-based)\n * @param {number} dim The current dim (zero-based)\n * @return {Array} c The concatenated matrix\n * @private\n */\nfunction concatRecursive(a, b, concatDim, dim) {\n if (dim < concatDim) {\n // recurse into next dimension\n if (a.length !== b.length) {\n throw new DimensionError(a.length, b.length);\n }\n var c = [];\n for (var i = 0; i < a.length; i++) {\n c[i] = concatRecursive(a[i], b[i], concatDim, dim + 1);\n }\n return c;\n } else {\n // concatenate this dimension\n return a.concat(b);\n }\n}\n\n/**\n * Concatenates many arrays in the specified direction\n * @param {...Array} arrays All the arrays to concatenate\n * @param {number} concatDim The dimension on which to concatenate (zero-based)\n * @returns\n*/\nexport function concat() {\n var arrays = Array.prototype.slice.call(arguments, 0, -1);\n var concatDim = Array.prototype.slice.call(arguments, -1);\n if (arrays.length === 1) {\n return arrays[0];\n }\n if (arrays.length > 1) {\n return arrays.slice(1).reduce(function (A, B) {\n return concatRecursive(A, B, concatDim, 0);\n }, arrays[0]);\n } else {\n throw new Error('Wrong number of arguments in function concat');\n }\n}\n\n/**\n * Receives two or more sizes and get's the broadcasted size for both.\n * @param {...number[]} sizes Sizes to broadcast together\n * @returns\n */\nexport function broadcastSizes() {\n for (var _len = arguments.length, sizes = new Array(_len), _key = 0; _key < _len; _key++) {\n sizes[_key] = arguments[_key];\n }\n var dimensions = sizes.map(s => s.length);\n var N = Math.max(...dimensions);\n var sizeMax = new Array(N).fill(null);\n // check for every size\n for (var i = 0; i < sizes.length; i++) {\n var size = sizes[i];\n var dim = dimensions[i];\n for (var j = 0; j < dim; j++) {\n var n = N - dim + j;\n if (size[j] > sizeMax[n]) {\n sizeMax[n] = size[j];\n }\n }\n }\n for (var _i = 0; _i < sizes.length; _i++) {\n checkBroadcastingRules(sizes[_i], sizeMax);\n }\n return sizeMax;\n}\n\n/**\n * Checks if it's possible to broadcast a size to another size\n * @param {number[]} size The size of the array to check\n * @param {number[]} toSize The size of the array to validate if it can be broadcasted to\n */\nexport function checkBroadcastingRules(size, toSize) {\n var N = toSize.length;\n var dim = size.length;\n for (var j = 0; j < dim; j++) {\n var n = N - dim + j;\n if (size[j] < toSize[n] && size[j] > 1 || size[j] > toSize[n]) {\n throw new Error(\"shape missmatch: missmatch is found in arg with shape (\".concat(size, \") not possible to broadcast dimension \").concat(dim, \" with size \").concat(size[j], \" to size \").concat(toSize[n]));\n }\n }\n}\n\n/**\n * Broadcasts a single array to a certain size\n * @param {array} array Array to be broadcasted\n * @param {number[]} toSize Size to broadcast the array\n * @returns The broadcasted array\n */\nexport function broadcastTo(array, toSize) {\n var Asize = arraySize(array);\n if (deepStrictEqual(Asize, toSize)) {\n return array;\n }\n checkBroadcastingRules(Asize, toSize);\n var broadcastedSize = broadcastSizes(Asize, toSize);\n var N = broadcastedSize.length;\n var paddedSize = [...Array(N - Asize.length).fill(1), ...Asize];\n var A = clone(array);\n // reshape A if needed to make it ready for concat\n if (Asize.length < N) {\n A = reshape(A, paddedSize);\n Asize = arraySize(A);\n }\n\n // stretches the array on each dimension to make it the same size as index\n for (var dim = 0; dim < N; dim++) {\n if (Asize[dim] < broadcastedSize[dim]) {\n A = stretch(A, broadcastedSize[dim], dim);\n Asize = arraySize(A);\n }\n }\n return A;\n}\n\n/**\n * Broadcasts arrays and returns the broadcasted arrays in an array\n * @param {...Array | any} arrays\n * @returns\n */\nexport function broadcastArrays() {\n for (var _len2 = arguments.length, arrays = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n arrays[_key2] = arguments[_key2];\n }\n if (arrays.length === 0) {\n throw new Error('Insuficient number of argumnets in function broadcastArrays');\n }\n if (arrays.length === 1) {\n return arrays[0];\n }\n var sizes = arrays.map(function (array) {\n return arraySize(array);\n });\n var broadcastedSize = broadcastSizes(...sizes);\n var broadcastedArrays = [];\n arrays.forEach(function (array) {\n broadcastedArrays.push(broadcastTo(array, broadcastedSize));\n });\n return broadcastedArrays;\n}\n\n/**\n * stretches a matrix up to a certain size in a certain dimension\n * @param {Array} arrayToStretch\n * @param {number[]} sizeToStretch\n * @param {number} dimToStretch\n * @returns\n */\nexport function stretch(arrayToStretch, sizeToStretch, dimToStretch) {\n return concat(...Array(sizeToStretch).fill(arrayToStretch), dimToStretch);\n}\n\n/**\n* Retrieves a single element from an array given an index.\n*\n* @param {Array} array - The array from which to retrieve the value.\n* @param {Array} idx - An array of indices specifying the position of the desired element in each dimension.\n* @returns {*} - The value at the specified position in the array.\n*\n* @example\n* const arr = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]];\n* const index = [1, 0, 1];\n* console.log(getValue(arr, index)); // 6\n*/\nexport function get(array, index) {\n if (!Array.isArray(array)) {\n throw new Error('Array expected');\n }\n var size = arraySize(array);\n if (index.length !== size.length) {\n throw new DimensionError(index.length, size.length);\n }\n for (var x = 0; x < index.length; x++) {\n validateIndex(index[x], size[x]);\n }\n return index.reduce((acc, curr) => acc[curr], array);\n}\n\n/**\n * Recursive function to map a multi-dimensional array.\n *\n * @param {*} value - The current value being processed in the array.\n * @param {Array} index - The index of the current value being processed in the array.\n * @param {Array} array - The array being processed.\n * @param {Function} callback - Function that produces the element of the new Array, taking three arguments: the value of the element, the index of the element, and the Array being processed.\n * @returns {*} The new array with each element being the result of the callback function.\n */\nexport function recurse(value, index, array, callback) {\n if (Array.isArray(value)) {\n return value.map(function (child, i) {\n // we create a copy of the index array and append the new index value\n return recurse(child, index.concat(i), array, callback);\n });\n } else {\n // invoke the callback function with the right number of arguments\n return callback(value, index, array);\n }\n}\n\n/**\n * Deep clones a multidimensional array\n * @param {Array} array\n * @returns cloned array\n */\nexport function clone(array) {\n return _extends([], array);\n}", "import typed from 'typed-function';\nimport { get, arraySize } from './array.js';\nimport { typeOf as _typeOf } from './is.js';\n\n/**\n * Simplifies a callback function by reducing its complexity and potentially improving its performance.\n *\n * @param {Function} callback The original callback function to simplify.\n * @param {Array|Matrix} array The array that will be used with the callback function.\n * @param {string} name The name of the function that is using the callback.\n * @returns {Function} Returns a simplified version of the callback function.\n */\nexport function optimizeCallback(callback, array, name) {\n if (typed.isTypedFunction(callback)) {\n var firstIndex = (array.isMatrix ? array.size() : arraySize(array)).map(() => 0);\n var firstValue = array.isMatrix ? array.get(firstIndex) : get(array, firstIndex);\n var hasSingleSignature = Object.keys(callback.signatures).length === 1;\n var numberOfArguments = _findNumberOfArguments(callback, firstValue, firstIndex, array);\n var fastCallback = hasSingleSignature ? Object.values(callback.signatures)[0] : callback;\n if (numberOfArguments >= 1 && numberOfArguments <= 3) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _tryFunctionWithArgs(fastCallback, args.slice(0, numberOfArguments), name, callback.name);\n };\n }\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return _tryFunctionWithArgs(fastCallback, args, name, callback.name);\n };\n }\n return callback;\n}\nfunction _findNumberOfArguments(callback, value, index, array) {\n var testArgs = [value, index, array];\n for (var i = 3; i > 0; i--) {\n var args = testArgs.slice(0, i);\n if (typed.resolve(callback, args) !== null) {\n return i;\n }\n }\n}\n\n/**\n * @param {function} func The selected function taken from one of the signatures of the callback function\n * @param {Array} args List with arguments to apply to the selected signature\n * @param {string} mappingFnName the name of the function that is using the callback\n * @param {string} callbackName the name of the callback function\n * @returns {*} Returns the return value of the invoked signature\n * @throws {TypeError} Throws an error when no matching signature was found\n */\nfunction _tryFunctionWithArgs(func, args, mappingFnName, callbackName) {\n try {\n return func(...args);\n } catch (err) {\n _createCallbackError(err, args, mappingFnName, callbackName);\n }\n}\n\n/**\n * Creates and throws a detailed TypeError when a callback function fails.\n *\n * @param {Error} err The original error thrown by the callback function.\n * @param {Array} args The arguments that were passed to the callback function.\n * @param {string} mappingFnName The name of the function that is using the callback.\n * @param {string} callbackName The name of the callback function.\n * @throws {TypeError} Throws a detailed TypeError with enriched error message.\n */\nfunction _createCallbackError(err, args, mappingFnName, callbackName) {\n var _err$data;\n // Enrich the error message so the user understands that it took place inside the callback function\n if (err instanceof TypeError && ((_err$data = err.data) === null || _err$data === void 0 ? void 0 : _err$data.category) === 'wrongType') {\n var argsDesc = [];\n argsDesc.push(\"value: \".concat(_typeOf(args[0])));\n if (args.length >= 2) {\n argsDesc.push(\"index: \".concat(_typeOf(args[1])));\n }\n if (args.length >= 3) {\n argsDesc.push(\"array: \".concat(_typeOf(args[2])));\n }\n throw new TypeError(\"Function \".concat(mappingFnName, \" cannot apply callback arguments \") + \"\".concat(callbackName, \"(\").concat(argsDesc.join(', '), \") at index \").concat(JSON.stringify(args[1])));\n } else {\n throw new TypeError(\"Function \".concat(mappingFnName, \" cannot apply callback arguments \") + \"to function \".concat(callbackName, \": \").concat(err.message));\n }\n}", "// deno-lint-ignore-file no-this-alias\nimport { isArray, isBigNumber, isCollection, isIndex, isMatrix, isNumber, isString, typeOf } from '../../utils/is.js';\nimport { arraySize, getArrayDataType, processSizesWildcard, reshape, resize, unsqueeze, validate, validateIndex, broadcastTo, get } from '../../utils/array.js';\nimport { format } from '../../utils/string.js';\nimport { isInteger } from '../../utils/number.js';\nimport { clone, deepStrictEqual } from '../../utils/object.js';\nimport { DimensionError } from '../../error/DimensionError.js';\nimport { factory } from '../../utils/factory.js';\nimport { optimizeCallback } from '../../utils/optimizeCallback.js';\nvar name = 'DenseMatrix';\nvar dependencies = ['Matrix'];\nexport var createDenseMatrixClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Matrix\n } = _ref;\n /**\n * Dense Matrix implementation. A regular, dense matrix, supporting multi-dimensional matrices. This is the default matrix type.\n * @class DenseMatrix\n * @enum {{ value, index: number[] }}\n */\n function DenseMatrix(data, datatype) {\n if (!(this instanceof DenseMatrix)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n if (datatype && !isString(datatype)) {\n throw new Error('Invalid datatype: ' + datatype);\n }\n if (isMatrix(data)) {\n // check data is a DenseMatrix\n if (data.type === 'DenseMatrix') {\n // clone data & size\n this._data = clone(data._data);\n this._size = clone(data._size);\n this._datatype = datatype || data._datatype;\n } else {\n // build data from existing matrix\n this._data = data.toArray();\n this._size = data.size();\n this._datatype = datatype || data._datatype;\n }\n } else if (data && isArray(data.data) && isArray(data.size)) {\n // initialize fields from JSON representation\n this._data = data.data;\n this._size = data.size;\n // verify the dimensions of the array\n validate(this._data, this._size);\n this._datatype = datatype || data.datatype;\n } else if (isArray(data)) {\n // replace nested Matrices with Arrays\n this._data = preprocess(data);\n // get the dimensions of the array\n this._size = arraySize(this._data);\n // verify the dimensions of the array, TODO: compute size while processing array\n validate(this._data, this._size);\n // data type unknown\n this._datatype = datatype;\n } else if (data) {\n // unsupported type\n throw new TypeError('Unsupported type of data (' + typeOf(data) + ')');\n } else {\n // nothing provided\n this._data = [];\n this._size = [0];\n this._datatype = datatype;\n }\n }\n DenseMatrix.prototype = new Matrix();\n\n /**\n * Create a new DenseMatrix\n */\n DenseMatrix.prototype.createDenseMatrix = function (data, datatype) {\n return new DenseMatrix(data, datatype);\n };\n\n /**\n * Attach type information\n */\n Object.defineProperty(DenseMatrix, 'name', {\n value: 'DenseMatrix'\n });\n DenseMatrix.prototype.constructor = DenseMatrix;\n DenseMatrix.prototype.type = 'DenseMatrix';\n DenseMatrix.prototype.isDenseMatrix = true;\n\n /**\n * Get the matrix type\n *\n * Usage:\n * const matrixType = matrix.getDataType() // retrieves the matrix type\n *\n * @memberOf DenseMatrix\n * @return {string} type information; if multiple types are found from the Matrix, it will return \"mixed\"\n */\n DenseMatrix.prototype.getDataType = function () {\n return getArrayDataType(this._data, typeOf);\n };\n\n /**\n * Get the storage format used by the matrix.\n *\n * Usage:\n * const format = matrix.storage() // retrieve storage format\n *\n * @memberof DenseMatrix\n * @return {string} The storage format.\n */\n DenseMatrix.prototype.storage = function () {\n return 'dense';\n };\n\n /**\n * Get the datatype of the data stored in the matrix.\n *\n * Usage:\n * const format = matrix.datatype() // retrieve matrix datatype\n *\n * @memberof DenseMatrix\n * @return {string} The datatype.\n */\n DenseMatrix.prototype.datatype = function () {\n return this._datatype;\n };\n\n /**\n * Create a new DenseMatrix\n * @memberof DenseMatrix\n * @param {Array} data\n * @param {string} [datatype]\n */\n DenseMatrix.prototype.create = function (data, datatype) {\n return new DenseMatrix(data, datatype);\n };\n\n /**\n * Get a subset of the matrix, or replace a subset of the matrix.\n *\n * Usage:\n * const subset = matrix.subset(index) // retrieve subset\n * const value = matrix.subset(index, replacement) // replace subset\n *\n * @memberof DenseMatrix\n * @param {Index} index\n * @param {Array | Matrix | *} [replacement]\n * @param {*} [defaultValue=0] Default value, filled in on new entries when\n * the matrix is resized. If not provided,\n * new matrix elements will be filled with zeros.\n */\n DenseMatrix.prototype.subset = function (index, replacement, defaultValue) {\n switch (arguments.length) {\n case 1:\n return _get(this, index);\n\n // intentional fall through\n case 2:\n case 3:\n return _set(this, index, replacement, defaultValue);\n default:\n throw new SyntaxError('Wrong number of arguments');\n }\n };\n\n /**\n * Get a single element from the matrix.\n * @memberof DenseMatrix\n * @param {number[]} index Zero-based index\n * @return {*} value\n */\n DenseMatrix.prototype.get = function (index) {\n return get(this._data, index);\n };\n\n /**\n * Replace a single element in the matrix.\n * @memberof DenseMatrix\n * @param {number[]} index Zero-based index\n * @param {*} value\n * @param {*} [defaultValue] Default value, filled in on new entries when\n * the matrix is resized. If not provided,\n * new matrix elements will be left undefined.\n * @return {DenseMatrix} self\n */\n DenseMatrix.prototype.set = function (index, value, defaultValue) {\n if (!isArray(index)) {\n throw new TypeError('Array expected');\n }\n if (index.length < this._size.length) {\n throw new DimensionError(index.length, this._size.length, '<');\n }\n var i, ii, indexI;\n\n // enlarge matrix when needed\n var size = index.map(function (i) {\n return i + 1;\n });\n _fit(this, size, defaultValue);\n\n // traverse over the dimensions\n var data = this._data;\n for (i = 0, ii = index.length - 1; i < ii; i++) {\n indexI = index[i];\n validateIndex(indexI, data.length);\n data = data[indexI];\n }\n\n // set new value\n indexI = index[index.length - 1];\n validateIndex(indexI, data.length);\n data[indexI] = value;\n return this;\n };\n\n /**\n * Get a submatrix of this matrix\n * @memberof DenseMatrix\n * @param {DenseMatrix} matrix\n * @param {Index} index Zero-based index\n * @private\n */\n function _get(matrix, index) {\n if (!isIndex(index)) {\n throw new TypeError('Invalid index');\n }\n var isScalar = index.isScalar();\n if (isScalar) {\n // return a scalar\n return matrix.get(index.min());\n } else {\n // validate dimensions\n var size = index.size();\n if (size.length !== matrix._size.length) {\n throw new DimensionError(size.length, matrix._size.length);\n }\n\n // validate if any of the ranges in the index is out of range\n var min = index.min();\n var max = index.max();\n for (var i = 0, ii = matrix._size.length; i < ii; i++) {\n validateIndex(min[i], matrix._size[i]);\n validateIndex(max[i], matrix._size[i]);\n }\n\n // retrieve submatrix\n // TODO: more efficient when creating an empty matrix and setting _data and _size manually\n return new DenseMatrix(_getSubmatrix(matrix._data, index, size.length, 0), matrix._datatype);\n }\n }\n\n /**\n * Recursively get a submatrix of a multi dimensional matrix.\n * Index is not checked for correct number or length of dimensions.\n * @memberof DenseMatrix\n * @param {Array} data\n * @param {Index} index\n * @param {number} dims Total number of dimensions\n * @param {number} dim Current dimension\n * @return {Array} submatrix\n * @private\n */\n function _getSubmatrix(data, index, dims, dim) {\n var last = dim === dims - 1;\n var range = index.dimension(dim);\n if (last) {\n return range.map(function (i) {\n validateIndex(i, data.length);\n return data[i];\n }).valueOf();\n } else {\n return range.map(function (i) {\n validateIndex(i, data.length);\n var child = data[i];\n return _getSubmatrix(child, index, dims, dim + 1);\n }).valueOf();\n }\n }\n\n /**\n * Replace a submatrix in this matrix\n * Indexes are zero-based.\n * @memberof DenseMatrix\n * @param {DenseMatrix} matrix\n * @param {Index} index\n * @param {DenseMatrix | Array | *} submatrix\n * @param {*} defaultValue Default value, filled in on new entries when\n * the matrix is resized.\n * @return {DenseMatrix} matrix\n * @private\n */\n function _set(matrix, index, submatrix, defaultValue) {\n if (!index || index.isIndex !== true) {\n throw new TypeError('Invalid index');\n }\n\n // get index size and check whether the index contains a single value\n var iSize = index.size();\n var isScalar = index.isScalar();\n\n // calculate the size of the submatrix, and convert it into an Array if needed\n var sSize;\n if (isMatrix(submatrix)) {\n sSize = submatrix.size();\n submatrix = submatrix.valueOf();\n } else {\n sSize = arraySize(submatrix);\n }\n if (isScalar) {\n // set a scalar\n\n // check whether submatrix is a scalar\n if (sSize.length !== 0) {\n throw new TypeError('Scalar expected');\n }\n matrix.set(index.min(), submatrix, defaultValue);\n } else {\n // set a submatrix\n\n // broadcast submatrix\n if (!deepStrictEqual(sSize, iSize)) {\n try {\n if (sSize.length === 0) {\n submatrix = broadcastTo([submatrix], iSize);\n } else {\n submatrix = broadcastTo(submatrix, iSize);\n }\n sSize = arraySize(submatrix);\n } catch (_unused) {}\n }\n\n // validate dimensions\n if (iSize.length < matrix._size.length) {\n throw new DimensionError(iSize.length, matrix._size.length, '<');\n }\n if (sSize.length < iSize.length) {\n // calculate number of missing outer dimensions\n var i = 0;\n var outer = 0;\n while (iSize[i] === 1 && sSize[i] === 1) {\n i++;\n }\n while (iSize[i] === 1) {\n outer++;\n i++;\n }\n\n // unsqueeze both outer and inner dimensions\n submatrix = unsqueeze(submatrix, iSize.length, outer, sSize);\n }\n\n // check whether the size of the submatrix matches the index size\n if (!deepStrictEqual(iSize, sSize)) {\n throw new DimensionError(iSize, sSize, '>');\n }\n\n // enlarge matrix when needed\n var size = index.max().map(function (i) {\n return i + 1;\n });\n _fit(matrix, size, defaultValue);\n\n // insert the sub matrix\n var dims = iSize.length;\n var dim = 0;\n _setSubmatrix(matrix._data, index, submatrix, dims, dim);\n }\n return matrix;\n }\n\n /**\n * Replace a submatrix of a multi dimensional matrix.\n * @memberof DenseMatrix\n * @param {Array} data\n * @param {Index} index\n * @param {Array} submatrix\n * @param {number} dims Total number of dimensions\n * @param {number} dim\n * @private\n */\n function _setSubmatrix(data, index, submatrix, dims, dim) {\n var last = dim === dims - 1;\n var range = index.dimension(dim);\n if (last) {\n range.forEach(function (dataIndex, subIndex) {\n validateIndex(dataIndex);\n data[dataIndex] = submatrix[subIndex[0]];\n });\n } else {\n range.forEach(function (dataIndex, subIndex) {\n validateIndex(dataIndex);\n _setSubmatrix(data[dataIndex], index, submatrix[subIndex[0]], dims, dim + 1);\n });\n }\n }\n\n /**\n * Resize the matrix to the given size. Returns a copy of the matrix when\n * `copy=true`, otherwise return the matrix itself (resize in place).\n *\n * @memberof DenseMatrix\n * @param {number[] || Matrix} size The new size the matrix should have.\n * @param {*} [defaultValue=0] Default value, filled in on new entries.\n * If not provided, the matrix elements will\n * be filled with zeros.\n * @param {boolean} [copy] Return a resized copy of the matrix\n *\n * @return {Matrix} The resized matrix\n */\n DenseMatrix.prototype.resize = function (size, defaultValue, copy) {\n // validate arguments\n if (!isCollection(size)) {\n throw new TypeError('Array or Matrix expected');\n }\n\n // SparseMatrix input is always 2d, flatten this into 1d if it's indeed a vector\n var sizeArray = size.valueOf().map(value => {\n return Array.isArray(value) && value.length === 1 ? value[0] : value;\n });\n\n // matrix to resize\n var m = copy ? this.clone() : this;\n // resize matrix\n return _resize(m, sizeArray, defaultValue);\n };\n function _resize(matrix, size, defaultValue) {\n // check size\n if (size.length === 0) {\n // first value in matrix\n var v = matrix._data;\n // go deep\n while (isArray(v)) {\n v = v[0];\n }\n return v;\n }\n // resize matrix\n matrix._size = size.slice(0); // copy the array\n matrix._data = resize(matrix._data, matrix._size, defaultValue);\n // return matrix\n return matrix;\n }\n\n /**\n * Reshape the matrix to the given size. Returns a copy of the matrix when\n * `copy=true`, otherwise return the matrix itself (reshape in place).\n *\n * NOTE: This might be better suited to copy by default, instead of modifying\n * in place. For now, it operates in place to remain consistent with\n * resize().\n *\n * @memberof DenseMatrix\n * @param {number[]} size The new size the matrix should have.\n * @param {boolean} [copy] Return a reshaped copy of the matrix\n *\n * @return {Matrix} The reshaped matrix\n */\n DenseMatrix.prototype.reshape = function (size, copy) {\n var m = copy ? this.clone() : this;\n m._data = reshape(m._data, size);\n var currentLength = m._size.reduce((length, size) => length * size);\n m._size = processSizesWildcard(size, currentLength);\n return m;\n };\n\n /**\n * Enlarge the matrix when it is smaller than given size.\n * If the matrix is larger or equal sized, nothing is done.\n * @memberof DenseMatrix\n * @param {DenseMatrix} matrix The matrix to be resized\n * @param {number[]} size\n * @param {*} defaultValue Default value, filled in on new entries.\n * @private\n */\n function _fit(matrix, size, defaultValue) {\n var\n // copy the array\n newSize = matrix._size.slice(0);\n var changed = false;\n\n // add dimensions when needed\n while (newSize.length < size.length) {\n newSize.push(0);\n changed = true;\n }\n\n // enlarge size when needed\n for (var i = 0, ii = size.length; i < ii; i++) {\n if (size[i] > newSize[i]) {\n newSize[i] = size[i];\n changed = true;\n }\n }\n if (changed) {\n // resize only when size is changed\n _resize(matrix, newSize, defaultValue);\n }\n }\n\n /**\n * Create a clone of the matrix\n * @memberof DenseMatrix\n * @return {DenseMatrix} clone\n */\n DenseMatrix.prototype.clone = function () {\n var m = new DenseMatrix({\n data: clone(this._data),\n size: clone(this._size),\n datatype: this._datatype\n });\n return m;\n };\n\n /**\n * Retrieve the size of the matrix.\n * @memberof DenseMatrix\n * @returns {number[]} size\n */\n DenseMatrix.prototype.size = function () {\n return this._size.slice(0); // return a clone of _size\n };\n\n /**\n * Applies a callback function to a reference to each element of the matrix\n * @memberof DenseMatrix\n * @param {Function} callback The callback function is invoked with three\n * parameters: an array, an integer index to that\n * array, and the Matrix being traversed.\n */\n DenseMatrix.prototype._forEach = function (callback) {\n // matrix instance\n var me = this;\n var s = me.size();\n\n // if there is only one dimension, just loop through it\n if (s.length === 1) {\n for (var i = 0; i < s[0]; i++) {\n callback(me._data, i, [i]);\n }\n return;\n }\n\n // keep track of the current index permutation\n var index = Array(s.length).fill(0);\n\n // store a reference of each dimension of the matrix for faster access\n var data = Array(s.length - 1);\n var last = data.length - 1;\n data[0] = me._data[0];\n for (var _i = 0; _i < last; _i++) {\n data[_i + 1] = data[_i][0];\n }\n index[last] = -1;\n while (true) {\n var _i2 = void 0;\n for (_i2 = last; _i2 >= 0; _i2--) {\n // march index to the next permutation\n index[_i2]++;\n if (index[_i2] === s[_i2]) {\n index[_i2] = 0;\n continue;\n }\n\n // update references to matrix dimensions\n data[_i2] = _i2 === 0 ? me._data[index[_i2]] : data[_i2 - 1][index[_i2]];\n for (var j = _i2; j < last; j++) {\n data[j + 1] = data[j][0];\n }\n\n // loop through the last dimension and map each value\n for (var _j = 0; _j < s[data.length]; _j++) {\n index[data.length] = _j;\n callback(data[last], _j, index.slice(0));\n }\n break;\n }\n if (_i2 === -1) {\n break;\n }\n }\n };\n\n /**\n * Create a new matrix with the results of the callback function executed on\n * each entry of the matrix.\n * @memberof DenseMatrix\n * @param {Function} callback The callback function is invoked with three\n * parameters: the value of the element, the index\n * of the element, and the Matrix being traversed.\n *\n * @return {DenseMatrix} matrix\n */\n DenseMatrix.prototype.map = function (callback) {\n var me = this;\n var result = new DenseMatrix(me);\n var fastCallback = optimizeCallback(callback, me._data, 'map');\n result._forEach(function (arr, i, index) {\n arr[i] = fastCallback(arr[i], index, me);\n });\n return result;\n };\n\n /**\n * Execute a callback function on each entry of the matrix.\n * @memberof DenseMatrix\n * @param {Function} callback The callback function is invoked with three\n * parameters: the value of the element, the index\n * of the element, and the Matrix being traversed.\n */\n DenseMatrix.prototype.forEach = function (callback) {\n var me = this;\n var fastCallback = optimizeCallback(callback, me._data, 'map');\n me._forEach(function (arr, i, index) {\n fastCallback(arr[i], index, me);\n });\n };\n\n /**\n * Iterate over the matrix elements\n * @return {Iterable<{ value, index: number[] }>}\n */\n DenseMatrix.prototype[Symbol.iterator] = function* () {\n var _recurse = function* recurse(value, index) {\n if (isArray(value)) {\n for (var i = 0; i < value.length; i++) {\n yield* _recurse(value[i], index.concat(i));\n }\n } else {\n yield {\n value,\n index\n };\n }\n };\n yield* _recurse(this._data, []);\n };\n\n /**\n * Returns an array containing the rows of a 2D matrix\n * @returns {Array}\n */\n DenseMatrix.prototype.rows = function () {\n var result = [];\n var s = this.size();\n if (s.length !== 2) {\n throw new TypeError('Rows can only be returned for a 2D matrix.');\n }\n var data = this._data;\n for (var row of data) {\n result.push(new DenseMatrix([row], this._datatype));\n }\n return result;\n };\n\n /**\n * Returns an array containing the columns of a 2D matrix\n * @returns {Array}\n */\n DenseMatrix.prototype.columns = function () {\n var _this = this;\n var result = [];\n var s = this.size();\n if (s.length !== 2) {\n throw new TypeError('Rows can only be returned for a 2D matrix.');\n }\n var data = this._data;\n var _loop = function _loop(i) {\n var col = data.map(row => [row[i]]);\n result.push(new DenseMatrix(col, _this._datatype));\n };\n for (var i = 0; i < s[1]; i++) {\n _loop(i);\n }\n return result;\n };\n\n /**\n * Create an Array with a copy of the data of the DenseMatrix\n * @memberof DenseMatrix\n * @returns {Array} array\n */\n DenseMatrix.prototype.toArray = function () {\n return clone(this._data);\n };\n\n /**\n * Get the primitive value of the DenseMatrix: a multidimensional array\n * @memberof DenseMatrix\n * @returns {Array} array\n */\n DenseMatrix.prototype.valueOf = function () {\n return this._data;\n };\n\n /**\n * Get a string representation of the matrix, with optional formatting options.\n * @memberof DenseMatrix\n * @param {Object | number | Function} [options] Formatting options. See\n * lib/utils/number:format for a\n * description of the available\n * options.\n * @returns {string} str\n */\n DenseMatrix.prototype.format = function (options) {\n return format(this._data, options);\n };\n\n /**\n * Get a string representation of the matrix\n * @memberof DenseMatrix\n * @returns {string} str\n */\n DenseMatrix.prototype.toString = function () {\n return format(this._data);\n };\n\n /**\n * Get a JSON representation of the matrix\n * @memberof DenseMatrix\n * @returns {Object}\n */\n DenseMatrix.prototype.toJSON = function () {\n return {\n mathjs: 'DenseMatrix',\n data: this._data,\n size: this._size,\n datatype: this._datatype\n };\n };\n\n /**\n * Get the kth Matrix diagonal.\n *\n * @memberof DenseMatrix\n * @param {number | BigNumber} [k=0] The kth diagonal where the vector will retrieved.\n *\n * @returns {Matrix} The matrix with the diagonal values.\n */\n DenseMatrix.prototype.diagonal = function (k) {\n // validate k if any\n if (k) {\n // convert BigNumber to a number\n if (isBigNumber(k)) {\n k = k.toNumber();\n }\n // is must be an integer\n if (!isNumber(k) || !isInteger(k)) {\n throw new TypeError('The parameter k must be an integer number');\n }\n } else {\n // default value\n k = 0;\n }\n var kSuper = k > 0 ? k : 0;\n var kSub = k < 0 ? -k : 0;\n\n // rows & columns\n var rows = this._size[0];\n var columns = this._size[1];\n\n // number diagonal values\n var n = Math.min(rows - kSub, columns - kSuper);\n\n // x is a matrix get diagonal from matrix\n var data = [];\n\n // loop rows\n for (var i = 0; i < n; i++) {\n data[i] = this._data[i + kSub][i + kSuper];\n }\n\n // create DenseMatrix\n return new DenseMatrix({\n data,\n size: [n],\n datatype: this._datatype\n });\n };\n\n /**\n * Create a diagonal matrix.\n *\n * @memberof DenseMatrix\n * @param {Array} size The matrix size.\n * @param {number | Matrix | Array } value The values for the diagonal.\n * @param {number | BigNumber} [k=0] The kth diagonal where the vector will be filled in.\n * @param {number} [defaultValue] The default value for non-diagonal\n * @param {string} [datatype] The datatype for the diagonal\n *\n * @returns {DenseMatrix}\n */\n DenseMatrix.diagonal = function (size, value, k, defaultValue) {\n if (!isArray(size)) {\n throw new TypeError('Array expected, size parameter');\n }\n if (size.length !== 2) {\n throw new Error('Only two dimensions matrix are supported');\n }\n\n // map size & validate\n size = size.map(function (s) {\n // check it is a big number\n if (isBigNumber(s)) {\n // convert it\n s = s.toNumber();\n }\n // validate arguments\n if (!isNumber(s) || !isInteger(s) || s < 1) {\n throw new Error('Size values must be positive integers');\n }\n return s;\n });\n\n // validate k if any\n if (k) {\n // convert BigNumber to a number\n if (isBigNumber(k)) {\n k = k.toNumber();\n }\n // is must be an integer\n if (!isNumber(k) || !isInteger(k)) {\n throw new TypeError('The parameter k must be an integer number');\n }\n } else {\n // default value\n k = 0;\n }\n var kSuper = k > 0 ? k : 0;\n var kSub = k < 0 ? -k : 0;\n\n // rows and columns\n var rows = size[0];\n var columns = size[1];\n\n // number of non-zero items\n var n = Math.min(rows - kSub, columns - kSuper);\n\n // value extraction function\n var _value;\n\n // check value\n if (isArray(value)) {\n // validate array\n if (value.length !== n) {\n // number of values in array must be n\n throw new Error('Invalid value array length');\n }\n // define function\n _value = function _value(i) {\n // return value @ i\n return value[i];\n };\n } else if (isMatrix(value)) {\n // matrix size\n var ms = value.size();\n // validate matrix\n if (ms.length !== 1 || ms[0] !== n) {\n // number of values in array must be n\n throw new Error('Invalid matrix length');\n }\n // define function\n _value = function _value(i) {\n // return value @ i\n return value.get([i]);\n };\n } else {\n // define function\n _value = function _value() {\n // return value\n return value;\n };\n }\n\n // discover default value if needed\n if (!defaultValue) {\n // check first value in array\n defaultValue = isBigNumber(_value(0)) ? _value(0).mul(0) // trick to create a BigNumber with value zero\n : 0;\n }\n\n // empty array\n var data = [];\n\n // check we need to resize array\n if (size.length > 0) {\n // resize array\n data = resize(data, size, defaultValue);\n // fill diagonal\n for (var d = 0; d < n; d++) {\n data[d + kSub][d + kSuper] = _value(d);\n }\n }\n\n // create DenseMatrix\n return new DenseMatrix({\n data,\n size: [rows, columns]\n });\n };\n\n /**\n * Generate a matrix from a JSON object\n * @memberof DenseMatrix\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"DenseMatrix\", data: [], size: []}`,\n * where mathjs is optional\n * @returns {DenseMatrix}\n */\n DenseMatrix.fromJSON = function (json) {\n return new DenseMatrix(json);\n };\n\n /**\n * Swap rows i and j in Matrix.\n *\n * @memberof DenseMatrix\n * @param {number} i Matrix row index 1\n * @param {number} j Matrix row index 2\n *\n * @return {Matrix} The matrix reference\n */\n DenseMatrix.prototype.swapRows = function (i, j) {\n // check index\n if (!isNumber(i) || !isInteger(i) || !isNumber(j) || !isInteger(j)) {\n throw new Error('Row index must be positive integers');\n }\n // check dimensions\n if (this._size.length !== 2) {\n throw new Error('Only two dimensional matrix is supported');\n }\n // validate index\n validateIndex(i, this._size[0]);\n validateIndex(j, this._size[0]);\n\n // swap rows\n DenseMatrix._swapRows(i, j, this._data);\n // return current instance\n return this;\n };\n\n /**\n * Swap rows i and j in Dense Matrix data structure.\n *\n * @param {number} i Matrix row index 1\n * @param {number} j Matrix row index 2\n * @param {Array} data Matrix data\n */\n DenseMatrix._swapRows = function (i, j, data) {\n // swap values i <-> j\n var vi = data[i];\n data[i] = data[j];\n data[j] = vi;\n };\n\n /**\n * Preprocess data, which can be an Array or DenseMatrix with nested Arrays and\n * Matrices. Clones all (nested) Arrays, and replaces all nested Matrices with Arrays\n * @memberof DenseMatrix\n * @param {Array | Matrix} data\n * @return {Array} data\n */\n function preprocess(data) {\n if (isMatrix(data)) {\n return preprocess(data.valueOf());\n }\n if (isArray(data)) {\n return data.map(preprocess);\n }\n return data;\n }\n return DenseMatrix;\n}, {\n isClass: true\n});", "import { clone as objectClone } from '../../utils/object.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'clone';\nvar dependencies = ['typed'];\nexport var createClone = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Clone an object. Will make a deep copy of the data.\n *\n * Syntax:\n *\n * math.clone(x)\n *\n * Examples:\n *\n * math.clone(3.5) // returns number 3.5\n * math.clone(math.complex('2-4i')) // returns Complex 2 - 4i\n * math.clone(math.unit(45, 'deg')) // returns Unit 45 deg\n * math.clone([[1, 2], [3, 4]]) // returns Array [[1, 2], [3, 4]]\n * math.clone(\"hello world\") // returns string \"hello world\"\n *\n * @param {*} x Object to be cloned\n * @return {*} A clone of object x\n */\n return typed(name, {\n any: objectClone\n });\n});", "/**\n * Transpose a matrix\n * @param {Array} mat\n * @returns {Array} ret\n * @private\n */\nexport function _switch(mat) {\n var I = mat.length;\n var J = mat[0].length;\n var i, j;\n var ret = [];\n for (j = 0; j < J; j++) {\n var tmp = [];\n for (i = 0; i < I; i++) {\n tmp.push(mat[i][j]);\n }\n ret.push(tmp);\n }\n return ret;\n}", "import { isCollection, isMatrix } from './is.js';\nimport { IndexError } from '../error/IndexError.js';\nimport { arraySize } from './array.js';\nimport { _switch } from './switch.js';\n\n/**\n * Test whether an array contains collections\n * @param {Array} array\n * @returns {boolean} Returns true when the array contains one or multiple\n * collections (Arrays or Matrices). Returns false otherwise.\n */\nexport function containsCollections(array) {\n for (var i = 0; i < array.length; i++) {\n if (isCollection(array[i])) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Recursively loop over all elements in a given multi dimensional array\n * and invoke the callback on each of the elements.\n * @param {Array | Matrix} array\n * @param {Function} callback The callback method is invoked with one\n * parameter: the current element in the array\n */\nexport function deepForEach(array, callback) {\n if (isMatrix(array)) {\n array = array.valueOf();\n }\n for (var i = 0, ii = array.length; i < ii; i++) {\n var value = array[i];\n if (Array.isArray(value)) {\n deepForEach(value, callback);\n } else {\n callback(value);\n }\n }\n}\n\n/**\n * Execute the callback function element wise for each element in array and any\n * nested array\n * Returns an array with the results\n * @param {Array | Matrix} array\n * @param {Function} callback The callback is called with two parameters:\n * value1 and value2, which contain the current\n * element of both arrays.\n * @param {boolean} [skipZeros] Invoke callback function for non-zero values only.\n *\n * @return {Array | Matrix} res\n */\nexport function deepMap(array, callback, skipZeros) {\n if (array && typeof array.map === 'function') {\n // TODO: replace array.map with a for loop to improve performance\n return array.map(function (x) {\n return deepMap(x, callback, skipZeros);\n });\n } else {\n return callback(array);\n }\n}\n\n/**\n * Reduce a given matrix or array to a new matrix or\n * array with one less dimension, applying the given\n * callback in the selected dimension.\n * @param {Array | Matrix} mat\n * @param {number} dim\n * @param {Function} callback\n * @return {Array | Matrix} res\n */\nexport function reduce(mat, dim, callback) {\n var size = Array.isArray(mat) ? arraySize(mat) : mat.size();\n if (dim < 0 || dim >= size.length) {\n // TODO: would be more clear when throwing a DimensionError here\n throw new IndexError(dim, size.length);\n }\n if (isMatrix(mat)) {\n return mat.create(_reduce(mat.valueOf(), dim, callback), mat.datatype());\n } else {\n return _reduce(mat, dim, callback);\n }\n}\n\n/**\n * Recursively reduce a matrix\n * @param {Array} mat\n * @param {number} dim\n * @param {Function} callback\n * @returns {Array} ret\n * @private\n */\nfunction _reduce(mat, dim, callback) {\n var i, ret, val, tran;\n if (dim <= 0) {\n if (!Array.isArray(mat[0])) {\n val = mat[0];\n for (i = 1; i < mat.length; i++) {\n val = callback(val, mat[i]);\n }\n return val;\n } else {\n tran = _switch(mat);\n ret = [];\n for (i = 0; i < tran.length; i++) {\n ret[i] = _reduce(tran[i], dim - 1, callback);\n }\n return ret;\n }\n } else {\n ret = [];\n for (i = 0; i < mat.length; i++) {\n ret[i] = _reduce(mat[i], dim - 1, callback);\n }\n return ret;\n }\n}\n\n// TODO: document function scatter\nexport function scatter(a, j, w, x, u, mark, cindex, f, inverse, update, value) {\n // a arrays\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n\n // vars\n var k, k0, k1, i;\n\n // check we need to process values (pattern matrix)\n if (x) {\n // values in j\n for (k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {\n // row\n i = aindex[k];\n // check value exists in current j\n if (w[i] !== mark) {\n // i is new entry in j\n w[i] = mark;\n // add i to pattern of C\n cindex.push(i);\n // x(i) = A, check we need to call function this time\n if (update) {\n // copy value to workspace calling callback function\n x[i] = inverse ? f(avalues[k], value) : f(value, avalues[k]);\n // function was called on current row\n u[i] = mark;\n } else {\n // copy value to workspace\n x[i] = avalues[k];\n }\n } else {\n // i exists in C already\n x[i] = inverse ? f(avalues[k], x[i]) : f(x[i], avalues[k]);\n // function was called on current row\n u[i] = mark;\n }\n }\n } else {\n // values in j\n for (k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {\n // row\n i = aindex[k];\n // check value exists in current j\n if (w[i] !== mark) {\n // i is new entry in j\n w[i] = mark;\n // add i to pattern of C\n cindex.push(i);\n } else {\n // indicate function was called on current row\n u[i] = mark;\n }\n }\n }\n}", "import { deepMap } from '../../utils/collection.js';\nimport { isInteger as isIntegerNumber } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'isInteger';\nvar dependencies = ['typed'];\nexport var createIsInteger = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Test whether a value is an integer number.\n * The function supports `number`, `BigNumber`, and `Fraction`.\n *\n * The function is evaluated element-wise in case of Array or Matrix input.\n *\n * Syntax:\n *\n * math.isInteger(x)\n *\n * Examples:\n *\n * math.isInteger(2) // returns true\n * math.isInteger(0) // returns true\n * math.isInteger(0.5) // returns false\n * math.isInteger(math.bignumber(500)) // returns true\n * math.isInteger(math.fraction(4)) // returns true\n * math.isInteger('3') // returns true\n * math.isInteger([3, 0.5, -2]) // returns [true, false, true]\n * math.isInteger(math.complex('2-4i')) // throws an error\n *\n * See also:\n *\n * isNumeric, isPositive, isNegative, isZero\n *\n * @param {number | BigNumber | bigint | Fraction | Array | Matrix} x Value to be tested\n * @return {boolean} Returns true when `x` contains a numeric, integer value.\n * Throws an error in case of an unknown data type.\n */\n return typed(name, {\n number: isIntegerNumber,\n // TODO: what to do with isInteger(add(0.1, 0.2)) ?\n\n BigNumber: function BigNumber(x) {\n return x.isInt();\n },\n bigint: function bigint(x) {\n return true;\n },\n Fraction: function Fraction(x) {\n return x.d === 1 && isFinite(x.n);\n },\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { cbrt, expm1, isInteger, log10, log1p, log2, sign, toFixed } from '../../utils/number.js';\nvar n1 = 'number';\nvar n2 = 'number, number';\nexport function absNumber(a) {\n return Math.abs(a);\n}\nabsNumber.signature = n1;\nexport function addNumber(a, b) {\n return a + b;\n}\naddNumber.signature = n2;\nexport function subtractNumber(a, b) {\n return a - b;\n}\nsubtractNumber.signature = n2;\nexport function multiplyNumber(a, b) {\n return a * b;\n}\nmultiplyNumber.signature = n2;\nexport function divideNumber(a, b) {\n return a / b;\n}\ndivideNumber.signature = n2;\nexport function unaryMinusNumber(x) {\n return -x;\n}\nunaryMinusNumber.signature = n1;\nexport function unaryPlusNumber(x) {\n return x;\n}\nunaryPlusNumber.signature = n1;\nexport function cbrtNumber(x) {\n return cbrt(x);\n}\ncbrtNumber.signature = n1;\nexport function cubeNumber(x) {\n return x * x * x;\n}\ncubeNumber.signature = n1;\nexport function expNumber(x) {\n return Math.exp(x);\n}\nexpNumber.signature = n1;\nexport function expm1Number(x) {\n return expm1(x);\n}\nexpm1Number.signature = n1;\n\n/**\n * Calculate gcd for numbers\n * @param {number} a\n * @param {number} b\n * @returns {number} Returns the greatest common denominator of a and b\n */\nexport function gcdNumber(a, b) {\n if (!isInteger(a) || !isInteger(b)) {\n throw new Error('Parameters in function gcd must be integer numbers');\n }\n\n // https://en.wikipedia.org/wiki/Euclidean_algorithm\n var r;\n while (b !== 0) {\n r = a % b;\n a = b;\n b = r;\n }\n return a < 0 ? -a : a;\n}\ngcdNumber.signature = n2;\n\n/**\n * Calculate lcm for two numbers\n * @param {number} a\n * @param {number} b\n * @returns {number} Returns the least common multiple of a and b\n */\nexport function lcmNumber(a, b) {\n if (!isInteger(a) || !isInteger(b)) {\n throw new Error('Parameters in function lcm must be integer numbers');\n }\n if (a === 0 || b === 0) {\n return 0;\n }\n\n // https://en.wikipedia.org/wiki/Euclidean_algorithm\n // evaluate lcm here inline to reduce overhead\n var t;\n var prod = a * b;\n while (b !== 0) {\n t = b;\n b = a % t;\n a = t;\n }\n return Math.abs(prod / a);\n}\nlcmNumber.signature = n2;\n\n/**\n * Calculate the logarithm of a value, optionally to a given base.\n * @param {number} x\n * @param {number | null | undefined} base\n * @return {number}\n */\nexport function logNumber(x, y) {\n if (y) {\n return Math.log(x) / Math.log(y);\n }\n return Math.log(x);\n}\n\n/**\n * Calculate the 10-base logarithm of a number\n * @param {number} x\n * @return {number}\n */\nexport function log10Number(x) {\n return log10(x);\n}\nlog10Number.signature = n1;\n\n/**\n * Calculate the 2-base logarithm of a number\n * @param {number} x\n * @return {number}\n */\nexport function log2Number(x) {\n return log2(x);\n}\nlog2Number.signature = n1;\n\n/**\n * Calculate the natural logarithm of a `number+1`\n * @param {number} x\n * @returns {number}\n */\nexport function log1pNumber(x) {\n return log1p(x);\n}\nlog1pNumber.signature = n1;\n\n/**\n * Calculate the modulus of two numbers\n * @param {number} x\n * @param {number} y\n * @returns {number} res\n * @private\n */\nexport function modNumber(x, y) {\n // We don't use JavaScript's % operator here as this doesn't work\n // correctly for x < 0 and x === 0\n // see https://en.wikipedia.org/wiki/Modulo_operation\n return y === 0 ? x : x - y * Math.floor(x / y);\n}\nmodNumber.signature = n2;\n\n/**\n * Calculate the nth root of a, solve x^root == a\n * http://rosettacode.org/wiki/Nth_root#JavaScript\n * @param {number} a\n * @param {number} [2] root\n * @private\n */\nexport function nthRootNumber(a) {\n var root = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n var inv = root < 0;\n if (inv) {\n root = -root;\n }\n if (root === 0) {\n throw new Error('Root must be non-zero');\n }\n if (a < 0 && Math.abs(root) % 2 !== 1) {\n throw new Error('Root must be odd when a is negative.');\n }\n\n // edge cases zero and infinity\n if (a === 0) {\n return inv ? Infinity : 0;\n }\n if (!isFinite(a)) {\n return inv ? 0 : a;\n }\n var x = Math.pow(Math.abs(a), 1 / root);\n // If a < 0, we require that root is an odd integer,\n // so (-1) ^ (1/root) = -1\n x = a < 0 ? -x : x;\n return inv ? 1 / x : x;\n\n // Very nice algorithm, but fails with nthRoot(-2, 3).\n // Newton's method has some well-known problems at times:\n // https://en.wikipedia.org/wiki/Newton%27s_method#Failure_analysis\n /*\n let x = 1 // Initial guess\n let xPrev = 1\n let i = 0\n const iMax = 10000\n do {\n const delta = (a / Math.pow(x, root - 1) - x) / root\n xPrev = x\n x = x + delta\n i++\n }\n while (xPrev !== x && i < iMax)\n if (xPrev !== x) {\n throw new Error('Function nthRoot failed to converge')\n }\n return inv ? 1 / x : x\n */\n}\nexport function signNumber(x) {\n return sign(x);\n}\nsignNumber.signature = n1;\nexport function sqrtNumber(x) {\n return Math.sqrt(x);\n}\nsqrtNumber.signature = n1;\nexport function squareNumber(x) {\n return x * x;\n}\nsquareNumber.signature = n1;\n\n/**\n * Calculate xgcd for two numbers\n * @param {number} a\n * @param {number} b\n * @return {number} result\n * @private\n */\nexport function xgcdNumber(a, b) {\n // source: https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm\n var t; // used to swap two variables\n var q; // quotient\n var r; // remainder\n var x = 0;\n var lastx = 1;\n var y = 1;\n var lasty = 0;\n if (!isInteger(a) || !isInteger(b)) {\n throw new Error('Parameters in function xgcd must be integer numbers');\n }\n while (b) {\n q = Math.floor(a / b);\n r = a - q * b;\n t = x;\n x = lastx - q * x;\n lastx = t;\n t = y;\n y = lasty - q * y;\n lasty = t;\n a = b;\n b = r;\n }\n var res;\n if (a < 0) {\n res = [-a, -lastx, -lasty];\n } else {\n res = [a, a ? lastx : 0, lasty];\n }\n return res;\n}\nxgcdNumber.signature = n2;\n\n/**\n * Calculates the power of x to y, x^y, for two numbers.\n * @param {number} x\n * @param {number} y\n * @return {number} res\n */\nexport function powNumber(x, y) {\n // x^Infinity === 0 if -1 < x < 1\n // A real number 0 is returned instead of complex(0)\n if (x * x < 1 && y === Infinity || x * x > 1 && y === -Infinity) {\n return 0;\n }\n return Math.pow(x, y);\n}\npowNumber.signature = n2;\n\n/**\n * round a number to the given number of decimals, or to zero if decimals is\n * not provided\n * @param {number} value\n * @param {number} decimals number of decimals, between 0 and 15 (0 by default)\n * @return {number} roundedValue\n */\nexport function roundNumber(value) {\n var decimals = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n if (!isInteger(decimals) || decimals < 0 || decimals > 15) {\n throw new Error('Number of decimals in function round must be an integer from 0 to 15 inclusive');\n }\n return parseFloat(toFixed(value, decimals));\n}\n\n/**\n * Calculate the norm of a number, the absolute value.\n * @param {number} x\n * @return {number}\n */\nexport function normNumber(x) {\n return Math.abs(x);\n}\nnormNumber.signature = n1;", "import { isInteger } from '../../utils/number.js';\nvar n1 = 'number';\nvar n2 = 'number, number';\nexport function bitAndNumber(x, y) {\n if (!isInteger(x) || !isInteger(y)) {\n throw new Error('Integers expected in function bitAnd');\n }\n return x & y;\n}\nbitAndNumber.signature = n2;\nexport function bitNotNumber(x) {\n if (!isInteger(x)) {\n throw new Error('Integer expected in function bitNot');\n }\n return ~x;\n}\nbitNotNumber.signature = n1;\nexport function bitOrNumber(x, y) {\n if (!isInteger(x) || !isInteger(y)) {\n throw new Error('Integers expected in function bitOr');\n }\n return x | y;\n}\nbitOrNumber.signature = n2;\nexport function bitXorNumber(x, y) {\n if (!isInteger(x) || !isInteger(y)) {\n throw new Error('Integers expected in function bitXor');\n }\n return x ^ y;\n}\nbitXorNumber.signature = n2;\nexport function leftShiftNumber(x, y) {\n if (!isInteger(x) || !isInteger(y)) {\n throw new Error('Integers expected in function leftShift');\n }\n return x << y;\n}\nleftShiftNumber.signature = n2;\nexport function rightArithShiftNumber(x, y) {\n if (!isInteger(x) || !isInteger(y)) {\n throw new Error('Integers expected in function rightArithShift');\n }\n return x >> y;\n}\nrightArithShiftNumber.signature = n2;\nexport function rightLogShiftNumber(x, y) {\n if (!isInteger(x) || !isInteger(y)) {\n throw new Error('Integers expected in function rightLogShift');\n }\n return x >>> y;\n}\nrightLogShiftNumber.signature = n2;", "/** @param {number} i\n * @param {number} n\n * @returns {number} product of i to n\n */\nexport function product(i, n) {\n if (n < i) {\n return 1;\n }\n if (n === i) {\n return n;\n }\n var half = n + i >> 1; // divide (n + i) by 2 and truncate to integer\n return product(i, half) * product(half + 1, n);\n}", "import { isInteger } from '../../utils/number.js';\nimport { product } from '../../utils/product.js';\nexport function combinationsNumber(n, k) {\n if (!isInteger(n) || n < 0) {\n throw new TypeError('Positive integer value expected in function combinations');\n }\n if (!isInteger(k) || k < 0) {\n throw new TypeError('Positive integer value expected in function combinations');\n }\n if (k > n) {\n throw new TypeError('k must be less than or equal to n');\n }\n var nMinusk = n - k;\n var answer = 1;\n var firstnumerator = k < nMinusk ? nMinusk + 1 : k + 1;\n var nextdivisor = 2;\n var lastdivisor = k < nMinusk ? k : nMinusk;\n // balance multiplications and divisions to try to keep intermediate values\n // in exact-integer range as long as possible\n for (var nextnumerator = firstnumerator; nextnumerator <= n; ++nextnumerator) {\n answer *= nextnumerator;\n while (nextdivisor <= lastdivisor && answer % nextdivisor === 0) {\n answer /= nextdivisor;\n ++nextdivisor;\n }\n }\n // for big n, k, floating point may have caused weirdness in remainder\n if (nextdivisor <= lastdivisor) {\n answer /= product(nextdivisor, lastdivisor);\n }\n return answer;\n}\ncombinationsNumber.signature = 'number, number';", "export var pi = Math.PI;\nexport var tau = 2 * Math.PI;\nexport var e = Math.E;\nexport var phi = 1.6180339887498948; // eslint-disable-line no-loss-of-precision", "var n1 = 'number';\nvar n2 = 'number, number';\nexport function notNumber(x) {\n return !x;\n}\nnotNumber.signature = n1;\nexport function orNumber(x, y) {\n return !!(x || y);\n}\norNumber.signature = n2;\nexport function xorNumber(x, y) {\n return !!x !== !!y;\n}\nxorNumber.signature = n2;\nexport function andNumber(x, y) {\n return !!(x && y);\n}\nandNumber.signature = n2;", "/* eslint-disable no-loss-of-precision */\n\nimport { isInteger } from '../../utils/number.js';\nimport { product } from '../../utils/product.js';\nexport function gammaNumber(n) {\n var x;\n if (isInteger(n)) {\n if (n <= 0) {\n return isFinite(n) ? Infinity : NaN;\n }\n if (n > 171) {\n return Infinity; // Will overflow\n }\n return product(1, n - 1);\n }\n if (n < 0.5) {\n return Math.PI / (Math.sin(Math.PI * n) * gammaNumber(1 - n));\n }\n if (n >= 171.35) {\n return Infinity; // will overflow\n }\n if (n > 85.0) {\n // Extended Stirling Approx\n var twoN = n * n;\n var threeN = twoN * n;\n var fourN = threeN * n;\n var fiveN = fourN * n;\n return Math.sqrt(2 * Math.PI / n) * Math.pow(n / Math.E, n) * (1 + 1 / (12 * n) + 1 / (288 * twoN) - 139 / (51840 * threeN) - 571 / (2488320 * fourN) + 163879 / (209018880 * fiveN) + 5246819 / (75246796800 * fiveN * n));\n }\n --n;\n x = gammaP[0];\n for (var i = 1; i < gammaP.length; ++i) {\n x += gammaP[i] / (n + i);\n }\n var t = n + gammaG + 0.5;\n return Math.sqrt(2 * Math.PI) * Math.pow(t, n + 0.5) * Math.exp(-t) * x;\n}\ngammaNumber.signature = 'number';\n\n// TODO: comment on the variables g and p\n\nexport var gammaG = 4.7421875;\nexport var gammaP = [0.99999999999999709182, 57.156235665862923517, -59.597960355475491248, 14.136097974741747174, -0.49191381609762019978, 0.33994649984811888699e-4, 0.46523628927048575665e-4, -0.98374475304879564677e-4, 0.15808870322491248884e-3, -0.21026444172410488319e-3, 0.21743961811521264320e-3, -0.16431810653676389022e-3, 0.84418223983852743293e-4, -0.26190838401581408670e-4, 0.36899182659531622704e-5];\n\n// lgamma implementation ref: https://mrob.com/pub/ries/lanczos-gamma.html#code\n\n// log(2 * pi) / 2\nexport var lnSqrt2PI = 0.91893853320467274178;\nexport var lgammaG = 5; // Lanczos parameter \"g\"\nexport var lgammaN = 7; // Range of coefficients \"n\"\n\nexport var lgammaSeries = [1.000000000190015, 76.18009172947146, -86.50532032941677, 24.01409824083091, -1.231739572450155, 0.1208650973866179e-2, -0.5395239384953e-5];\nexport function lgammaNumber(n) {\n if (n < 0) return NaN;\n if (n === 0) return Infinity;\n if (!isFinite(n)) return n;\n if (n < 0.5) {\n // Use Euler's reflection formula:\n // gamma(z) = PI / (sin(PI * z) * gamma(1 - z))\n return Math.log(Math.PI / Math.sin(Math.PI * n)) - lgammaNumber(1 - n);\n }\n\n // Compute the logarithm of the Gamma function using the Lanczos method\n\n n = n - 1;\n var base = n + lgammaG + 0.5; // Base of the Lanczos exponential\n var sum = lgammaSeries[0];\n\n // We start with the terms that have the smallest coefficients and largest denominator\n for (var i = lgammaN - 1; i >= 1; i--) {\n sum += lgammaSeries[i] / (n + i);\n }\n return lnSqrt2PI + (n + 0.5) * Math.log(base) - base + Math.log(sum);\n}\nlgammaNumber.signature = 'number';", "import { acosh, asinh, atanh, cosh, sign, sinh, tanh } from '../../utils/number.js';\nvar n1 = 'number';\nvar n2 = 'number, number';\nexport function acosNumber(x) {\n return Math.acos(x);\n}\nacosNumber.signature = n1;\nexport function acoshNumber(x) {\n return acosh(x);\n}\nacoshNumber.signature = n1;\nexport function acotNumber(x) {\n return Math.atan(1 / x);\n}\nacotNumber.signature = n1;\nexport function acothNumber(x) {\n return isFinite(x) ? (Math.log((x + 1) / x) + Math.log(x / (x - 1))) / 2 : 0;\n}\nacothNumber.signature = n1;\nexport function acscNumber(x) {\n return Math.asin(1 / x);\n}\nacscNumber.signature = n1;\nexport function acschNumber(x) {\n var xInv = 1 / x;\n return Math.log(xInv + Math.sqrt(xInv * xInv + 1));\n}\nacschNumber.signature = n1;\nexport function asecNumber(x) {\n return Math.acos(1 / x);\n}\nasecNumber.signature = n1;\nexport function asechNumber(x) {\n var xInv = 1 / x;\n var ret = Math.sqrt(xInv * xInv - 1);\n return Math.log(ret + xInv);\n}\nasechNumber.signature = n1;\nexport function asinNumber(x) {\n return Math.asin(x);\n}\nasinNumber.signature = n1;\nexport function asinhNumber(x) {\n return asinh(x);\n}\nasinhNumber.signature = n1;\nexport function atanNumber(x) {\n return Math.atan(x);\n}\natanNumber.signature = n1;\nexport function atan2Number(y, x) {\n return Math.atan2(y, x);\n}\natan2Number.signature = n2;\nexport function atanhNumber(x) {\n return atanh(x);\n}\natanhNumber.signature = n1;\nexport function cosNumber(x) {\n return Math.cos(x);\n}\ncosNumber.signature = n1;\nexport function coshNumber(x) {\n return cosh(x);\n}\ncoshNumber.signature = n1;\nexport function cotNumber(x) {\n return 1 / Math.tan(x);\n}\ncotNumber.signature = n1;\nexport function cothNumber(x) {\n var e = Math.exp(2 * x);\n return (e + 1) / (e - 1);\n}\ncothNumber.signature = n1;\nexport function cscNumber(x) {\n return 1 / Math.sin(x);\n}\ncscNumber.signature = n1;\nexport function cschNumber(x) {\n // consider values close to zero (+/-)\n if (x === 0) {\n return Number.POSITIVE_INFINITY;\n } else {\n return Math.abs(2 / (Math.exp(x) - Math.exp(-x))) * sign(x);\n }\n}\ncschNumber.signature = n1;\nexport function secNumber(x) {\n return 1 / Math.cos(x);\n}\nsecNumber.signature = n1;\nexport function sechNumber(x) {\n return 2 / (Math.exp(x) + Math.exp(-x));\n}\nsechNumber.signature = n1;\nexport function sinNumber(x) {\n return Math.sin(x);\n}\nsinNumber.signature = n1;\nexport function sinhNumber(x) {\n return sinh(x);\n}\nsinhNumber.signature = n1;\nexport function tanNumber(x) {\n return Math.tan(x);\n}\ntanNumber.signature = n1;\nexport function tanhNumber(x) {\n return tanh(x);\n}\ntanhNumber.signature = n1;", "import { isInteger } from '../../utils/number.js';\nvar n1 = 'number';\nexport function isIntegerNumber(x) {\n return isInteger(x);\n}\nisIntegerNumber.signature = n1;\nexport function isNegativeNumber(x) {\n return x < 0;\n}\nisNegativeNumber.signature = n1;\nexport function isPositiveNumber(x) {\n return x > 0;\n}\nisPositiveNumber.signature = n1;\nexport function isZeroNumber(x) {\n return x === 0;\n}\nisZeroNumber.signature = n1;\nexport function isNaNNumber(x) {\n return Number.isNaN(x);\n}\nisNaNNumber.signature = n1;", "/**\n * Compares two BigNumbers.\n * @param {BigNumber} a - First value to compare\n * @param {BigNumber} b - Second value to compare\n * @param {number} [relTol=1e-09] - The relative tolerance, indicating the maximum allowed difference relative to the larger absolute value. Must be greater than 0.\n * @param {number} [absTol=0] - The minimum absolute tolerance, useful for comparisons near zero. Must be at least 0.\n * @returns {boolean} whether the two numbers are nearly equal\n * @throws {Error} If `relTol` is less than or equal to 0.\n * @throws {Error} If `absTol` is less than 0.\n *\n * @example\n * nearlyEqual(1.000000001, 1.0, 1e-9); // true\n * nearlyEqual(1.000000002, 1.0, 0); // false\n * nearlyEqual(1.0, 1.009, undefined, 0.02); // true\n * nearlyEqual(0.000000001, 0.0, undefined, 1e-8); // true\n */\nexport function nearlyEqual(a, b) {\n var relTol = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1e-9;\n var absTol = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n if (relTol <= 0) {\n throw new Error('Relative tolerance must be greater than 0');\n }\n if (absTol < 0) {\n throw new Error('Absolute tolerance must be at least 0');\n }\n // NaN\n if (a.isNaN() || b.isNaN()) {\n return false;\n }\n if (!a.isFinite() || !b.isFinite()) {\n return a.eq(b);\n }\n // use \"==\" operator, handles infinities\n if (a.eq(b)) {\n return true;\n }\n // abs(a-b) <= max(relTol * max(abs(a), abs(b)), absTol)\n return a.minus(b).abs().lte(a.constructor.max(a.constructor.max(a.abs(), b.abs()).mul(relTol), absTol));\n}", "import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { isNegativeNumber } from '../../plain/number/index.js';\nimport { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { nearlyEqual } from '../../utils/number.js';\nvar name = 'isNegative';\nvar dependencies = ['typed', 'config'];\nexport var createIsNegative = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config\n } = _ref;\n /**\n * Test whether a value is negative: smaller than zero.\n * The function supports types `number`, `BigNumber`, `Fraction`, and `Unit`.\n *\n * The function is evaluated element-wise in case of Array or Matrix input.\n *\n * Syntax:\n *\n * math.isNegative(x)\n *\n * Examples:\n *\n * math.isNegative(3) // returns false\n * math.isNegative(-2) // returns true\n * math.isNegative(0) // returns false\n * math.isNegative(-0) // returns false\n * math.isNegative(math.bignumber(2)) // returns false\n * math.isNegative(math.fraction(-2, 5)) // returns true\n * math.isNegative('-2') // returns true\n * math.isNegative([2, 0, -3]) // returns [false, false, true]\n *\n * See also:\n *\n * isNumeric, isPositive, isZero, isInteger\n *\n * @param {number | BigNumber | bigint | Fraction | Unit | Array | Matrix} x Value to be tested\n * @return {boolean} Returns true when `x` is larger than zero.\n * Throws an error in case of an unknown data type.\n */\n return typed(name, {\n number: x => nearlyEqual(x, 0, config.relTol, config.absTol) ? false : isNegativeNumber(x),\n BigNumber: x => bigNearlyEqual(x, new x.constructor(0), config.relTol, config.absTol) ? false : x.isNeg() && !x.isZero() && !x.isNaN(),\n bigint: x => x < 0n,\n Fraction: x => x.s < 0,\n // It's enough to decide on the sign\n\n Unit: typed.referToSelf(self => x => typed.find(self, x.valueType())(x.value)),\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'isNumeric';\nvar dependencies = ['typed'];\nexport var createIsNumeric = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Test whether a value is an numeric value.\n *\n * The function is evaluated element-wise in case of Array or Matrix input.\n *\n * Syntax:\n *\n * math.isNumeric(x)\n *\n * Examples:\n *\n * math.isNumeric(2) // returns true\n * math.isNumeric('2') // returns false\n * math.hasNumericValue('2') // returns true\n * math.isNumeric(0) // returns true\n * math.isNumeric(math.bignumber('42')) // returns true\n * math.isNumeric(math.bigint('42')) // returns true\n * math.isNumeric(math.fraction(4)) // returns true\n * math.isNumeric(math.complex('2-4i')) // returns false\n * math.isNumeric([2.3, 'foo', false]) // returns [true, false, true]\n *\n * See also:\n *\n * isZero, isPositive, isNegative, isInteger, hasNumericValue\n *\n * @param {*} x Value to be tested\n * @return {boolean} Returns true when `x` is a `number`, `BigNumber`,\n * `Fraction`, or `boolean`. Returns false for other types.\n * Throws an error in case of unknown types.\n */\n return typed(name, {\n 'number | BigNumber | bigint | Fraction | boolean': () => true,\n 'Complex | Unit | string | null | undefined | Node': () => false,\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'hasNumericValue';\nvar dependencies = ['typed', 'isNumeric'];\nexport var createHasNumericValue = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n isNumeric\n } = _ref;\n /**\n * Test whether a value is an numeric value.\n *\n * In case of a string, true is returned if the string contains a numeric value.\n *\n * Syntax:\n *\n * math.hasNumericValue(x)\n *\n * Examples:\n *\n * math.hasNumericValue(2) // returns true\n * math.hasNumericValue('2') // returns true\n * math.isNumeric('2') // returns false\n * math.hasNumericValue(0) // returns true\n * math.hasNumericValue(math.bignumber('500')) // returns true\n * math.hasNumericValue(math.bigint('42')) // returns true\n * math.hasNumericValue(42n) // returns true\n * math.hasNumericValue(math.fraction(4)) // returns true\n * math.hasNumericValue(math.complex('2-4i')) // returns false\n * math.hasNumericValue(false) // returns true\n * math.hasNumericValue([2.3, 'foo', false]) // returns [true, false, true]\n *\n * See also:\n *\n * isZero, isPositive, isNegative, isInteger, isNumeric\n *\n * @param {*} x Value to be tested\n * @return {boolean} Returns true when `x` is a `number`, `BigNumber`,\n * `Fraction`, `Boolean`, or a `String` containing number. Returns false for other types.\n * Throws an error in case of unknown types.\n */\n return typed(name, {\n boolean: () => true,\n string: function string(x) {\n return x.trim().length > 0 && !isNaN(Number(x));\n },\n any: function any(x) {\n return isNumeric(x);\n }\n });\n});", "import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { isPositiveNumber } from '../../plain/number/index.js';\nimport { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { nearlyEqual } from '../../utils/number.js';\nvar name = 'isPositive';\nvar dependencies = ['typed', 'config'];\nexport var createIsPositive = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config\n } = _ref;\n /**\n * Test whether a value is positive: larger than zero.\n * The function supports types `number`, `BigNumber`, `Fraction`, and `Unit`.\n *\n * The function is evaluated element-wise in case of Array or Matrix input.\n *\n * Syntax:\n *\n * math.isPositive(x)\n *\n * Examples:\n *\n * math.isPositive(3) // returns true\n * math.isPositive(-2) // returns false\n * math.isPositive(0) // returns false\n * math.isPositive(-0) // returns false\n * math.isPositive(0.5) // returns true\n * math.isPositive(math.bignumber(2)) // returns true\n * math.isPositive(math.fraction(-2, 5)) // returns false\n * math.isPositive(math.fraction(1, 3)) // returns true\n * math.isPositive('2') // returns true\n * math.isPositive([2, 0, -3]) // returns [true, false, false]\n *\n * See also:\n *\n * isNumeric, isZero, isNegative, isInteger\n *\n * @param {number | BigNumber | bigint | Fraction | Unit | Array | Matrix} x Value to be tested\n * @return {boolean} Returns true when `x` is larger than zero.\n * Throws an error in case of an unknown data type.\n */\n return typed(name, {\n number: x => nearlyEqual(x, 0, config.relTol, config.absTol) ? false : isPositiveNumber(x),\n BigNumber: x => bigNearlyEqual(x, new x.constructor(0), config.relTol, config.absTol) ? false : !x.isNeg() && !x.isZero() && !x.isNaN(),\n bigint: x => x > 0n,\n Fraction: x => x.s > 0 && x.n > 0,\n Unit: typed.referToSelf(self => x => typed.find(self, x.valueType())(x.value)),\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'isZero';\nvar dependencies = ['typed', 'equalScalar'];\nexport var createIsZero = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar\n } = _ref;\n /**\n * Test whether a value is zero.\n * The function can check for zero for types `number`, `BigNumber`, `Fraction`,\n * `Complex`, and `Unit`.\n *\n * The function is evaluated element-wise in case of Array or Matrix input.\n *\n * Syntax:\n *\n * math.isZero(x)\n *\n * Examples:\n *\n * math.isZero(0) // returns true\n * math.isZero(2) // returns false\n * math.isZero(0.5) // returns false\n * math.isZero(math.bignumber(0)) // returns true\n * math.isZero(math.fraction(0)) // returns true\n * math.isZero(math.fraction(1,3)) // returns false\n * math.isZero(math.complex('2 - 4i')) // returns false\n * math.isZero(math.complex('0i')) // returns true\n * math.isZero('0') // returns true\n * math.isZero('2') // returns false\n * math.isZero([2, 0, -3]) // returns [false, true, false]\n *\n * See also:\n *\n * isNumeric, isPositive, isNegative, isInteger\n *\n * @param {number | BigNumber | bigint | Complex | Fraction | Unit | Array | Matrix} x Value to be tested\n * @return {boolean} Returns true when `x` is zero.\n * Throws an error in case of an unknown data type.\n */\n return typed(name, {\n 'number | BigNumber | Complex | Fraction': x => equalScalar(x, 0),\n bigint: x => x === 0n,\n Unit: typed.referToSelf(self => x => typed.find(self, x.valueType())(x.value)),\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { isNaNNumber } from '../../plain/number/index.js';\nvar name = 'isNaN';\nvar dependencies = ['typed'];\nexport var createIsNaN = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Test whether a value is NaN (not a number).\n * The function supports types `number`, `BigNumber`, `Fraction`, `Unit` and `Complex`.\n *\n * The function is evaluated element-wise in case of Array or Matrix input.\n *\n * Syntax:\n *\n * math.isNaN(x)\n *\n * Examples:\n *\n * math.isNaN(3) // returns false\n * math.isNaN(NaN) // returns true\n * math.isNaN(0) // returns false\n * math.isNaN(math.bignumber(NaN)) // returns true\n * math.isNaN(math.bignumber(0)) // returns false\n * math.isNaN(math.fraction(-2, 5)) // returns false\n * math.isNaN('-2') // returns false\n * math.isNaN([2, 0, -3, NaN]) // returns [false, false, false, true]\n *\n * See also:\n *\n * isNumeric, isNegative, isPositive, isZero, isInteger\n *\n * @param {number | BigNumber | bigint | Fraction | Unit | Array | Matrix} x Value to be tested\n * @return {boolean} Returns true when `x` is NaN.\n * Throws an error in case of an unknown data type.\n */\n return typed(name, {\n number: isNaNNumber,\n BigNumber: function BigNumber(x) {\n return x.isNaN();\n },\n bigint: function bigint(x) {\n return false;\n },\n Fraction: function Fraction(x) {\n return false;\n },\n Complex: function Complex(x) {\n return x.isNaN();\n },\n Unit: function Unit(x) {\n return Number.isNaN(x.value);\n },\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { typeOf as _typeOf } from '../../utils/is.js';\nvar name = 'typeOf';\nvar dependencies = ['typed'];\nexport var createTypeOf = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Determine the type of an entity.\n *\n * Syntax:\n *\n * math.typeOf(x)\n *\n * Examples:\n *\n * // This list is intended to include all relevant types, for testing\n * // purposes:\n * math.typeOf(3.5) // returns 'number'\n * math.typeOf(42n) // returns 'bigint'\n * math.typeOf(math.complex('2-4i')) // returns 'Complex'\n * math.typeOf(math.unit('45 deg')) // returns 'Unit'\n * math.typeOf('hello world') // returns 'string'\n * math.typeOf(null) // returns 'null'\n * math.typeOf(true) // returns 'boolean'\n * math.typeOf([1, 2, 3]) // returns 'Array'\n * math.typeOf(new Date()) // returns 'Date'\n * math.typeOf(function () {}) // returns 'function'\n * math.typeOf({a: 2, b: 3}) // returns 'Object'\n * math.typeOf(/a regexp/) // returns 'RegExp'\n * math.typeOf(undefined) // returns 'undefined'\n * math.typeOf(math.bignumber('23e99')) // returns 'BigNumber'\n * math.typeOf(math.chain(2)) // returns 'Chain'\n * math.typeOf(math.fraction(1, 3)) // returns 'Fraction'\n * math.typeOf(math.help('sqrt')) // returns 'Help'\n * math.typeOf(math.index(1, 3)) // returns 'Index'\n * math.typeOf(math.matrix([[1],[3]])) // returns 'DenseMatrix'\n * math.typeOf(math.matrix([],'sparse')) // returns 'SparseMatrix'\n * math.typeOf(new math.Range(0, 10)) // returns 'Range'\n * math.typeOf(math.evaluate('a=2\\na')) // returns 'ResultSet'\n * math.typeOf(math.parse('A[2]')) // returns 'AccessorNode'\n * math.typeOf(math.parse('[1,2,3]')) // returns 'ArrayNode'\n * math.typeOf(math.parse('x=2')) // returns 'AssignmentNode'\n * math.typeOf(math.parse('a=2; b=3')) // returns 'BlockNode'\n * math.typeOf(math.parse('x<0?-1:1')) // returns 'ConditionalNode'\n * math.typeOf(math.parse('2.3')) // returns 'ConstantNode'\n * math.typeOf(math.parse('f(x)=x^2')) // returns 'FunctionAssignmentNode'\n * math.typeOf(math.parse('sqrt(4)')) // returns 'FunctionNode'\n * math.typeOf(math.parse('A[2]').index) // returns 'IndexNode'\n * math.typeOf(math.parse('{a:2}')) // returns 'ObjectNode'\n * math.typeOf(math.parse('(2+3)')) // returns 'ParenthesisNode'\n * math.typeOf(math.parse('1:10')) // returns 'RangeNode'\n * math.typeOf(math.parse('a {\n var {\n typed\n } = _ref;\n return {\n 'Unit, Unit': typed.referToSelf(self => (x, y) => {\n if (!x.equalBase(y)) {\n throw new Error('Cannot compare units with different base');\n }\n return typed.find(self, [x.valueType(), y.valueType()])(x.value, y.value);\n })\n };\n});", "import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { nearlyEqual } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nimport { complexEquals } from '../../utils/complex.js';\nimport { createCompareUnits } from './compareUnits.js';\nvar name = 'equalScalar';\nvar dependencies = ['typed', 'config'];\nexport var createEqualScalar = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config\n } = _ref;\n var compareUnits = createCompareUnits({\n typed\n });\n\n /**\n * Test whether two scalar values are nearly equal.\n *\n * @param {number | BigNumber | bigint | Fraction | boolean | Complex | Unit} x First value to compare\n * @param {number | BigNumber | bigint | Fraction | boolean | Complex} y Second value to compare\n * @return {boolean} Returns true when the compared values are equal, else returns false\n * @private\n */\n return typed(name, {\n 'boolean, boolean': function boolean_boolean(x, y) {\n return x === y;\n },\n 'number, number': function number_number(x, y) {\n return nearlyEqual(x, y, config.relTol, config.absTol);\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n return x.eq(y) || bigNearlyEqual(x, y, config.relTol, config.absTol);\n },\n 'bigint, bigint': function bigint_bigint(x, y) {\n return x === y;\n },\n 'Fraction, Fraction': function Fraction_Fraction(x, y) {\n return x.equals(y);\n },\n 'Complex, Complex': function Complex_Complex(x, y) {\n return complexEquals(x, y, config.relTol, config.absTol);\n }\n }, compareUnits);\n});\nexport var createEqualScalarNumber = factory(name, ['typed', 'config'], _ref2 => {\n var {\n typed,\n config\n } = _ref2;\n return typed(name, {\n 'number, number': function number_number(x, y) {\n return nearlyEqual(x, y, config.relTol, config.absTol);\n }\n });\n});", "import { isArray, isBigNumber, isCollection, isIndex, isMatrix, isNumber, isString, typeOf } from '../../utils/is.js';\nimport { isInteger } from '../../utils/number.js';\nimport { format } from '../../utils/string.js';\nimport { clone, deepStrictEqual } from '../../utils/object.js';\nimport { arraySize, getArrayDataType, processSizesWildcard, unsqueeze, validateIndex } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { DimensionError } from '../../error/DimensionError.js';\nimport { optimizeCallback } from '../../utils/optimizeCallback.js';\nvar name = 'SparseMatrix';\nvar dependencies = ['typed', 'equalScalar', 'Matrix'];\nexport var createSparseMatrixClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar,\n Matrix\n } = _ref;\n /**\n * Sparse Matrix implementation. This type implements\n * a [Compressed Column Storage](https://en.wikipedia.org/wiki/Sparse_matrix#Compressed_sparse_column_(CSC_or_CCS))\n * format for two-dimensional sparse matrices.\n * @class SparseMatrix\n */\n function SparseMatrix(data, datatype) {\n if (!(this instanceof SparseMatrix)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n if (datatype && !isString(datatype)) {\n throw new Error('Invalid datatype: ' + datatype);\n }\n if (isMatrix(data)) {\n // create from matrix\n _createFromMatrix(this, data, datatype);\n } else if (data && isArray(data.index) && isArray(data.ptr) && isArray(data.size)) {\n // initialize fields\n this._values = data.values;\n this._index = data.index;\n this._ptr = data.ptr;\n this._size = data.size;\n this._datatype = datatype || data.datatype;\n } else if (isArray(data)) {\n // create from array\n _createFromArray(this, data, datatype);\n } else if (data) {\n // unsupported type\n throw new TypeError('Unsupported type of data (' + typeOf(data) + ')');\n } else {\n // nothing provided\n this._values = [];\n this._index = [];\n this._ptr = [0];\n this._size = [0, 0];\n this._datatype = datatype;\n }\n }\n function _createFromMatrix(matrix, source, datatype) {\n // check matrix type\n if (source.type === 'SparseMatrix') {\n // clone arrays\n matrix._values = source._values ? clone(source._values) : undefined;\n matrix._index = clone(source._index);\n matrix._ptr = clone(source._ptr);\n matrix._size = clone(source._size);\n matrix._datatype = datatype || source._datatype;\n } else {\n // build from matrix data\n _createFromArray(matrix, source.valueOf(), datatype || source._datatype);\n }\n }\n function _createFromArray(matrix, data, datatype) {\n // initialize fields\n matrix._values = [];\n matrix._index = [];\n matrix._ptr = [];\n matrix._datatype = datatype;\n // discover rows & columns, do not use math.size() to avoid looping array twice\n var rows = data.length;\n var columns = 0;\n\n // equal signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n if (isString(datatype)) {\n // find signature that matches (datatype, datatype)\n eq = typed.find(equalScalar, [datatype, datatype]) || equalScalar;\n // convert 0 to the same datatype\n zero = typed.convert(0, datatype);\n }\n\n // check we have rows (empty array)\n if (rows > 0) {\n // column index\n var j = 0;\n do {\n // store pointer to values index\n matrix._ptr.push(matrix._index.length);\n // loop rows\n for (var i = 0; i < rows; i++) {\n // current row\n var row = data[i];\n // check row is an array\n if (isArray(row)) {\n // update columns if needed (only on first column)\n if (j === 0 && columns < row.length) {\n columns = row.length;\n }\n // check row has column\n if (j < row.length) {\n // value\n var v = row[j];\n // check value != 0\n if (!eq(v, zero)) {\n // store value\n matrix._values.push(v);\n // index\n matrix._index.push(i);\n }\n }\n } else {\n // update columns if needed (only on first column)\n if (j === 0 && columns < 1) {\n columns = 1;\n }\n // check value != 0 (row is a scalar)\n if (!eq(row, zero)) {\n // store value\n matrix._values.push(row);\n // index\n matrix._index.push(i);\n }\n }\n }\n // increment index\n j++;\n } while (j < columns);\n }\n // store number of values in ptr\n matrix._ptr.push(matrix._index.length);\n // size\n matrix._size = [rows, columns];\n }\n SparseMatrix.prototype = new Matrix();\n\n /**\n * Create a new SparseMatrix\n */\n SparseMatrix.prototype.createSparseMatrix = function (data, datatype) {\n return new SparseMatrix(data, datatype);\n };\n\n /**\n * Attach type information\n */\n Object.defineProperty(SparseMatrix, 'name', {\n value: 'SparseMatrix'\n });\n SparseMatrix.prototype.constructor = SparseMatrix;\n SparseMatrix.prototype.type = 'SparseMatrix';\n SparseMatrix.prototype.isSparseMatrix = true;\n\n /**\n * Get the matrix type\n *\n * Usage:\n * const matrixType = matrix.getDataType() // retrieves the matrix type\n *\n * @memberOf SparseMatrix\n * @return {string} type information; if multiple types are found from the Matrix, it will return \"mixed\"\n */\n SparseMatrix.prototype.getDataType = function () {\n return getArrayDataType(this._values, typeOf);\n };\n\n /**\n * Get the storage format used by the matrix.\n *\n * Usage:\n * const format = matrix.storage() // retrieve storage format\n *\n * @memberof SparseMatrix\n * @return {string} The storage format.\n */\n SparseMatrix.prototype.storage = function () {\n return 'sparse';\n };\n\n /**\n * Get the datatype of the data stored in the matrix.\n *\n * Usage:\n * const format = matrix.datatype() // retrieve matrix datatype\n *\n * @memberof SparseMatrix\n * @return {string} The datatype.\n */\n SparseMatrix.prototype.datatype = function () {\n return this._datatype;\n };\n\n /**\n * Create a new SparseMatrix\n * @memberof SparseMatrix\n * @param {Array} data\n * @param {string} [datatype]\n */\n SparseMatrix.prototype.create = function (data, datatype) {\n return new SparseMatrix(data, datatype);\n };\n\n /**\n * Get the matrix density.\n *\n * Usage:\n * const density = matrix.density() // retrieve matrix density\n *\n * @memberof SparseMatrix\n * @return {number} The matrix density.\n */\n SparseMatrix.prototype.density = function () {\n // rows & columns\n var rows = this._size[0];\n var columns = this._size[1];\n // calculate density\n return rows !== 0 && columns !== 0 ? this._index.length / (rows * columns) : 0;\n };\n\n /**\n * Get a subset of the matrix, or replace a subset of the matrix.\n *\n * Usage:\n * const subset = matrix.subset(index) // retrieve subset\n * const value = matrix.subset(index, replacement) // replace subset\n *\n * @memberof SparseMatrix\n * @param {Index} index\n * @param {Array | Matrix | *} [replacement]\n * @param {*} [defaultValue=0] Default value, filled in on new entries when\n * the matrix is resized. If not provided,\n * new matrix elements will be filled with zeros.\n */\n SparseMatrix.prototype.subset = function (index, replacement, defaultValue) {\n // check it is a pattern matrix\n if (!this._values) {\n throw new Error('Cannot invoke subset on a Pattern only matrix');\n }\n\n // check arguments\n switch (arguments.length) {\n case 1:\n return _getsubset(this, index);\n\n // intentional fall through\n case 2:\n case 3:\n return _setsubset(this, index, replacement, defaultValue);\n default:\n throw new SyntaxError('Wrong number of arguments');\n }\n };\n function _getsubset(matrix, idx) {\n // check idx\n if (!isIndex(idx)) {\n throw new TypeError('Invalid index');\n }\n var isScalar = idx.isScalar();\n if (isScalar) {\n // return a scalar\n return matrix.get(idx.min());\n }\n // validate dimensions\n var size = idx.size();\n if (size.length !== matrix._size.length) {\n throw new DimensionError(size.length, matrix._size.length);\n }\n\n // vars\n var i, ii, k, kk;\n\n // validate if any of the ranges in the index is out of range\n var min = idx.min();\n var max = idx.max();\n for (i = 0, ii = matrix._size.length; i < ii; i++) {\n validateIndex(min[i], matrix._size[i]);\n validateIndex(max[i], matrix._size[i]);\n }\n\n // matrix arrays\n var mvalues = matrix._values;\n var mindex = matrix._index;\n var mptr = matrix._ptr;\n\n // rows & columns dimensions for result matrix\n var rows = idx.dimension(0);\n var columns = idx.dimension(1);\n\n // workspace & permutation vector\n var w = [];\n var pv = [];\n\n // loop rows in resulting matrix\n rows.forEach(function (i, r) {\n // update permutation vector\n pv[i] = r[0];\n // mark i in workspace\n w[i] = true;\n });\n\n // result matrix arrays\n var values = mvalues ? [] : undefined;\n var index = [];\n var ptr = [];\n\n // loop columns in result matrix\n columns.forEach(function (j) {\n // update ptr\n ptr.push(index.length);\n // loop values in column j\n for (k = mptr[j], kk = mptr[j + 1]; k < kk; k++) {\n // row\n i = mindex[k];\n // check row is in result matrix\n if (w[i] === true) {\n // push index\n index.push(pv[i]);\n // check we need to process values\n if (values) {\n values.push(mvalues[k]);\n }\n }\n }\n });\n // update ptr\n ptr.push(index.length);\n\n // return matrix\n return new SparseMatrix({\n values,\n index,\n ptr,\n size,\n datatype: matrix._datatype\n });\n }\n function _setsubset(matrix, index, submatrix, defaultValue) {\n // check index\n if (!index || index.isIndex !== true) {\n throw new TypeError('Invalid index');\n }\n\n // get index size and check whether the index contains a single value\n var iSize = index.size();\n var isScalar = index.isScalar();\n\n // calculate the size of the submatrix, and convert it into an Array if needed\n var sSize;\n if (isMatrix(submatrix)) {\n // submatrix size\n sSize = submatrix.size();\n // use array representation\n submatrix = submatrix.toArray();\n } else {\n // get submatrix size (array, scalar)\n sSize = arraySize(submatrix);\n }\n\n // check index is a scalar\n if (isScalar) {\n // verify submatrix is a scalar\n if (sSize.length !== 0) {\n throw new TypeError('Scalar expected');\n }\n // set value\n matrix.set(index.min(), submatrix, defaultValue);\n } else {\n // validate dimensions, index size must be one or two dimensions\n if (iSize.length !== 1 && iSize.length !== 2) {\n throw new DimensionError(iSize.length, matrix._size.length, '<');\n }\n\n // check submatrix and index have the same dimensions\n if (sSize.length < iSize.length) {\n // calculate number of missing outer dimensions\n var i = 0;\n var outer = 0;\n while (iSize[i] === 1 && sSize[i] === 1) {\n i++;\n }\n while (iSize[i] === 1) {\n outer++;\n i++;\n }\n // unsqueeze both outer and inner dimensions\n submatrix = unsqueeze(submatrix, iSize.length, outer, sSize);\n }\n\n // check whether the size of the submatrix matches the index size\n if (!deepStrictEqual(iSize, sSize)) {\n throw new DimensionError(iSize, sSize, '>');\n }\n\n // insert the sub matrix\n if (iSize.length === 1) {\n // if the replacement index only has 1 dimension, go trough each one and set its value\n var range = index.dimension(0);\n range.forEach(function (dataIndex, subIndex) {\n validateIndex(dataIndex);\n matrix.set([dataIndex, 0], submatrix[subIndex[0]], defaultValue);\n });\n } else {\n // if the replacement index has 2 dimensions, go through each one and set the value in the correct index\n var firstDimensionRange = index.dimension(0);\n var secondDimensionRange = index.dimension(1);\n firstDimensionRange.forEach(function (firstDataIndex, firstSubIndex) {\n validateIndex(firstDataIndex);\n secondDimensionRange.forEach(function (secondDataIndex, secondSubIndex) {\n validateIndex(secondDataIndex);\n matrix.set([firstDataIndex, secondDataIndex], submatrix[firstSubIndex[0]][secondSubIndex[0]], defaultValue);\n });\n });\n }\n }\n return matrix;\n }\n\n /**\n * Get a single element from the matrix.\n * @memberof SparseMatrix\n * @param {number[]} index Zero-based index\n * @return {*} value\n */\n SparseMatrix.prototype.get = function (index) {\n if (!isArray(index)) {\n throw new TypeError('Array expected');\n }\n if (index.length !== this._size.length) {\n throw new DimensionError(index.length, this._size.length);\n }\n\n // check it is a pattern matrix\n if (!this._values) {\n throw new Error('Cannot invoke get on a Pattern only matrix');\n }\n\n // row and column\n var i = index[0];\n var j = index[1];\n\n // check i, j are valid\n validateIndex(i, this._size[0]);\n validateIndex(j, this._size[1]);\n\n // find value index\n var k = _getValueIndex(i, this._ptr[j], this._ptr[j + 1], this._index);\n // check k is prior to next column k and it is in the correct row\n if (k < this._ptr[j + 1] && this._index[k] === i) {\n return this._values[k];\n }\n return 0;\n };\n\n /**\n * Replace a single element in the matrix.\n * @memberof SparseMatrix\n * @param {number[]} index Zero-based index\n * @param {*} v\n * @param {*} [defaultValue] Default value, filled in on new entries when\n * the matrix is resized. If not provided,\n * new matrix elements will be set to zero.\n * @return {SparseMatrix} self\n */\n SparseMatrix.prototype.set = function (index, v, defaultValue) {\n if (!isArray(index)) {\n throw new TypeError('Array expected');\n }\n if (index.length !== this._size.length) {\n throw new DimensionError(index.length, this._size.length);\n }\n\n // check it is a pattern matrix\n if (!this._values) {\n throw new Error('Cannot invoke set on a Pattern only matrix');\n }\n\n // row and column\n var i = index[0];\n var j = index[1];\n\n // rows & columns\n var rows = this._size[0];\n var columns = this._size[1];\n\n // equal signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n if (isString(this._datatype)) {\n // find signature that matches (datatype, datatype)\n eq = typed.find(equalScalar, [this._datatype, this._datatype]) || equalScalar;\n // convert 0 to the same datatype\n zero = typed.convert(0, this._datatype);\n }\n\n // check we need to resize matrix\n if (i > rows - 1 || j > columns - 1) {\n // resize matrix\n _resize(this, Math.max(i + 1, rows), Math.max(j + 1, columns), defaultValue);\n // update rows & columns\n rows = this._size[0];\n columns = this._size[1];\n }\n\n // check i, j are valid\n validateIndex(i, rows);\n validateIndex(j, columns);\n\n // find value index\n var k = _getValueIndex(i, this._ptr[j], this._ptr[j + 1], this._index);\n // check k is prior to next column k and it is in the correct row\n if (k < this._ptr[j + 1] && this._index[k] === i) {\n // check value != 0\n if (!eq(v, zero)) {\n // update value\n this._values[k] = v;\n } else {\n // remove value from matrix\n _remove(k, j, this._values, this._index, this._ptr);\n }\n } else {\n if (!eq(v, zero)) {\n // insert value @ (i, j)\n _insert(k, i, j, v, this._values, this._index, this._ptr);\n }\n }\n return this;\n };\n function _getValueIndex(i, top, bottom, index) {\n // check row is on the bottom side\n if (bottom - top === 0) {\n return bottom;\n }\n // loop rows [top, bottom[\n for (var r = top; r < bottom; r++) {\n // check we found value index\n if (index[r] === i) {\n return r;\n }\n }\n // we did not find row\n return top;\n }\n function _remove(k, j, values, index, ptr) {\n // remove value @ k\n values.splice(k, 1);\n index.splice(k, 1);\n // update pointers\n for (var x = j + 1; x < ptr.length; x++) {\n ptr[x]--;\n }\n }\n function _insert(k, i, j, v, values, index, ptr) {\n // insert value\n values.splice(k, 0, v);\n // update row for k\n index.splice(k, 0, i);\n // update column pointers\n for (var x = j + 1; x < ptr.length; x++) {\n ptr[x]++;\n }\n }\n\n /**\n * Resize the matrix to the given size. Returns a copy of the matrix when\n * `copy=true`, otherwise return the matrix itself (resize in place).\n *\n * @memberof SparseMatrix\n * @param {number[] | Matrix} size The new size the matrix should have.\n * Since sparse matrices are always two-dimensional,\n * size must be two numbers in either an array or a matrix\n * @param {*} [defaultValue=0] Default value, filled in on new entries.\n * If not provided, the matrix elements will\n * be filled with zeros.\n * @param {boolean} [copy] Return a resized copy of the matrix\n *\n * @return {Matrix} The resized matrix\n */\n SparseMatrix.prototype.resize = function (size, defaultValue, copy) {\n // validate arguments\n if (!isCollection(size)) {\n throw new TypeError('Array or Matrix expected');\n }\n\n // SparseMatrix input is always 2d, flatten this into 1d if it's indeed a vector\n var sizeArray = size.valueOf().map(value => {\n return Array.isArray(value) && value.length === 1 ? value[0] : value;\n });\n if (sizeArray.length !== 2) {\n throw new Error('Only two dimensions matrix are supported');\n }\n\n // check sizes\n sizeArray.forEach(function (value) {\n if (!isNumber(value) || !isInteger(value) || value < 0) {\n throw new TypeError('Invalid size, must contain positive integers ' + '(size: ' + format(sizeArray) + ')');\n }\n });\n\n // matrix to resize\n var m = copy ? this.clone() : this;\n // resize matrix\n return _resize(m, sizeArray[0], sizeArray[1], defaultValue);\n };\n function _resize(matrix, rows, columns, defaultValue) {\n // value to insert at the time of growing matrix\n var value = defaultValue || 0;\n\n // equal signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n if (isString(matrix._datatype)) {\n // find signature that matches (datatype, datatype)\n eq = typed.find(equalScalar, [matrix._datatype, matrix._datatype]) || equalScalar;\n // convert 0 to the same datatype\n zero = typed.convert(0, matrix._datatype);\n // convert value to the same datatype\n value = typed.convert(value, matrix._datatype);\n }\n\n // should we insert the value?\n var ins = !eq(value, zero);\n\n // old columns and rows\n var r = matrix._size[0];\n var c = matrix._size[1];\n var i, j, k;\n\n // check we need to increase columns\n if (columns > c) {\n // loop new columns\n for (j = c; j < columns; j++) {\n // update matrix._ptr for current column\n matrix._ptr[j] = matrix._values.length;\n // check we need to insert matrix._values\n if (ins) {\n // loop rows\n for (i = 0; i < r; i++) {\n // add new matrix._values\n matrix._values.push(value);\n // update matrix._index\n matrix._index.push(i);\n }\n }\n }\n // store number of matrix._values in matrix._ptr\n matrix._ptr[columns] = matrix._values.length;\n } else if (columns < c) {\n // truncate matrix._ptr\n matrix._ptr.splice(columns + 1, c - columns);\n // truncate matrix._values and matrix._index\n matrix._values.splice(matrix._ptr[columns], matrix._values.length);\n matrix._index.splice(matrix._ptr[columns], matrix._index.length);\n }\n // update columns\n c = columns;\n\n // check we need to increase rows\n if (rows > r) {\n // check we have to insert values\n if (ins) {\n // inserts\n var n = 0;\n // loop columns\n for (j = 0; j < c; j++) {\n // update matrix._ptr for current column\n matrix._ptr[j] = matrix._ptr[j] + n;\n // where to insert matrix._values\n k = matrix._ptr[j + 1] + n;\n // pointer\n var p = 0;\n // loop new rows, initialize pointer\n for (i = r; i < rows; i++, p++) {\n // add value\n matrix._values.splice(k + p, 0, value);\n // update matrix._index\n matrix._index.splice(k + p, 0, i);\n // increment inserts\n n++;\n }\n }\n // store number of matrix._values in matrix._ptr\n matrix._ptr[c] = matrix._values.length;\n }\n } else if (rows < r) {\n // deletes\n var d = 0;\n // loop columns\n for (j = 0; j < c; j++) {\n // update matrix._ptr for current column\n matrix._ptr[j] = matrix._ptr[j] - d;\n // where matrix._values start for next column\n var k0 = matrix._ptr[j];\n var k1 = matrix._ptr[j + 1] - d;\n // loop matrix._index\n for (k = k0; k < k1; k++) {\n // row\n i = matrix._index[k];\n // check we need to delete value and matrix._index\n if (i > rows - 1) {\n // remove value\n matrix._values.splice(k, 1);\n // remove item from matrix._index\n matrix._index.splice(k, 1);\n // increase deletes\n d++;\n }\n }\n }\n // update matrix._ptr for current column\n matrix._ptr[j] = matrix._values.length;\n }\n // update matrix._size\n matrix._size[0] = rows;\n matrix._size[1] = columns;\n // return matrix\n return matrix;\n }\n\n /**\n * Reshape the matrix to the given size. Returns a copy of the matrix when\n * `copy=true`, otherwise return the matrix itself (reshape in place).\n *\n * NOTE: This might be better suited to copy by default, instead of modifying\n * in place. For now, it operates in place to remain consistent with\n * resize().\n *\n * @memberof SparseMatrix\n * @param {number[]} sizes The new size the matrix should have.\n * Since sparse matrices are always two-dimensional,\n * size must be two numbers in either an array or a matrix\n * @param {boolean} [copy] Return a reshaped copy of the matrix\n *\n * @return {Matrix} The reshaped matrix\n */\n SparseMatrix.prototype.reshape = function (sizes, copy) {\n // validate arguments\n if (!isArray(sizes)) {\n throw new TypeError('Array expected');\n }\n if (sizes.length !== 2) {\n throw new Error('Sparse matrices can only be reshaped in two dimensions');\n }\n\n // check sizes\n sizes.forEach(function (value) {\n if (!isNumber(value) || !isInteger(value) || value <= -2 || value === 0) {\n throw new TypeError('Invalid size, must contain positive integers or -1 ' + '(size: ' + format(sizes) + ')');\n }\n });\n var currentLength = this._size[0] * this._size[1];\n sizes = processSizesWildcard(sizes, currentLength);\n var newLength = sizes[0] * sizes[1];\n\n // m * n must not change\n if (currentLength !== newLength) {\n throw new Error('Reshaping sparse matrix will result in the wrong number of elements');\n }\n\n // matrix to reshape\n var m = copy ? this.clone() : this;\n\n // return unchanged if the same shape\n if (this._size[0] === sizes[0] && this._size[1] === sizes[1]) {\n return m;\n }\n\n // Convert to COO format (generate a column index)\n var colIndex = [];\n for (var i = 0; i < m._ptr.length; i++) {\n for (var j = 0; j < m._ptr[i + 1] - m._ptr[i]; j++) {\n colIndex.push(i);\n }\n }\n\n // Clone the values array\n var values = m._values.slice();\n\n // Clone the row index array\n var rowIndex = m._index.slice();\n\n // Transform the (row, column) indices\n for (var _i = 0; _i < m._index.length; _i++) {\n var r1 = rowIndex[_i];\n var c1 = colIndex[_i];\n var flat = r1 * m._size[1] + c1;\n colIndex[_i] = flat % sizes[1];\n rowIndex[_i] = Math.floor(flat / sizes[1]);\n }\n\n // Now reshaping is supposed to preserve the row-major order, BUT these sparse matrices are stored\n // in column-major order, so we have to reorder the value array now. One option is to use a multisort,\n // sorting several arrays based on some other array.\n\n // OR, we could easily just:\n\n // 1. Remove all values from the matrix\n m._values.length = 0;\n m._index.length = 0;\n m._ptr.length = sizes[1] + 1;\n m._size = sizes.slice();\n for (var _i2 = 0; _i2 < m._ptr.length; _i2++) {\n m._ptr[_i2] = 0;\n }\n\n // 2. Re-insert all elements in the proper order (simplified code from SparseMatrix.prototype.set)\n // This step is probably the most time-consuming\n for (var h = 0; h < values.length; h++) {\n var _i3 = rowIndex[h];\n var _j = colIndex[h];\n var v = values[h];\n var k = _getValueIndex(_i3, m._ptr[_j], m._ptr[_j + 1], m._index);\n _insert(k, _i3, _j, v, m._values, m._index, m._ptr);\n }\n\n // The value indices are inserted out of order, but apparently that's... still OK?\n\n return m;\n };\n\n /**\n * Create a clone of the matrix\n * @memberof SparseMatrix\n * @return {SparseMatrix} clone\n */\n SparseMatrix.prototype.clone = function () {\n var m = new SparseMatrix({\n values: this._values ? clone(this._values) : undefined,\n index: clone(this._index),\n ptr: clone(this._ptr),\n size: clone(this._size),\n datatype: this._datatype\n });\n return m;\n };\n\n /**\n * Retrieve the size of the matrix.\n * @memberof SparseMatrix\n * @returns {number[]} size\n */\n SparseMatrix.prototype.size = function () {\n return this._size.slice(0); // copy the Array\n };\n\n /**\n * Create a new matrix with the results of the callback function executed on\n * each entry of the matrix.\n * @memberof SparseMatrix\n * @param {Function} callback The callback function is invoked with three\n * parameters: the value of the element, the index\n * of the element, and the Matrix being traversed.\n * @param {boolean} [skipZeros] Invoke callback function for non-zero values only.\n *\n * @return {SparseMatrix} matrix\n */\n SparseMatrix.prototype.map = function (callback, skipZeros) {\n // check it is a pattern matrix\n if (!this._values) {\n throw new Error('Cannot invoke map on a Pattern only matrix');\n }\n // matrix instance\n var me = this;\n // rows and columns\n var rows = this._size[0];\n var columns = this._size[1];\n var fastCallback = optimizeCallback(callback, me, 'map');\n // invoke callback\n var invoke = function invoke(v, i, j) {\n // invoke callback\n return fastCallback(v, [i, j], me);\n };\n // invoke _map\n return _map(this, 0, rows - 1, 0, columns - 1, invoke, skipZeros);\n };\n\n /**\n * Create a new matrix with the results of the callback function executed on the interval\n * [minRow..maxRow, minColumn..maxColumn].\n */\n function _map(matrix, minRow, maxRow, minColumn, maxColumn, callback, skipZeros) {\n // result arrays\n var values = [];\n var index = [];\n var ptr = [];\n\n // equal signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n if (isString(matrix._datatype)) {\n // find signature that matches (datatype, datatype)\n eq = typed.find(equalScalar, [matrix._datatype, matrix._datatype]) || equalScalar;\n // convert 0 to the same datatype\n zero = typed.convert(0, matrix._datatype);\n }\n\n // invoke callback\n var invoke = function invoke(v, x, y) {\n // invoke callback\n var value = callback(v, x, y);\n // check value != 0\n if (!eq(value, zero)) {\n // store value\n values.push(value);\n // index\n index.push(x);\n }\n };\n // loop columns\n for (var j = minColumn; j <= maxColumn; j++) {\n // store pointer to values index\n ptr.push(values.length);\n // k0 <= k < k1 where k0 = _ptr[j] && k1 = _ptr[j+1]\n var k0 = matrix._ptr[j];\n var k1 = matrix._ptr[j + 1];\n if (skipZeros) {\n // loop k within [k0, k1[\n for (var k = k0; k < k1; k++) {\n // row index\n var i = matrix._index[k];\n // check i is in range\n if (i >= minRow && i <= maxRow) {\n // value @ k\n invoke(matrix._values[k], i - minRow, j - minColumn);\n }\n }\n } else {\n // create a cache holding all defined values\n var _values = {};\n for (var _k = k0; _k < k1; _k++) {\n var _i4 = matrix._index[_k];\n _values[_i4] = matrix._values[_k];\n }\n\n // loop over all rows (indexes can be unordered so we can't use that),\n // and either read the value or zero\n for (var _i5 = minRow; _i5 <= maxRow; _i5++) {\n var value = _i5 in _values ? _values[_i5] : 0;\n invoke(value, _i5 - minRow, j - minColumn);\n }\n }\n }\n\n // store number of values in ptr\n ptr.push(values.length);\n // return sparse matrix\n return new SparseMatrix({\n values,\n index,\n ptr,\n size: [maxRow - minRow + 1, maxColumn - minColumn + 1]\n });\n }\n\n /**\n * Execute a callback function on each entry of the matrix.\n * @memberof SparseMatrix\n * @param {Function} callback The callback function is invoked with three\n * parameters: the value of the element, the index\n * of the element, and the Matrix being traversed.\n * @param {boolean} [skipZeros] Invoke callback function for non-zero values only.\n * If false, the indices are guaranteed to be in order,\n * if true, the indices can be unordered.\n */\n SparseMatrix.prototype.forEach = function (callback, skipZeros) {\n // check it is a pattern matrix\n if (!this._values) {\n throw new Error('Cannot invoke forEach on a Pattern only matrix');\n }\n // matrix instance\n var me = this;\n // rows and columns\n var rows = this._size[0];\n var columns = this._size[1];\n var fastCallback = optimizeCallback(callback, me, 'forEach');\n // loop columns\n for (var j = 0; j < columns; j++) {\n // k0 <= k < k1 where k0 = _ptr[j] && k1 = _ptr[j+1]\n var k0 = this._ptr[j];\n var k1 = this._ptr[j + 1];\n if (skipZeros) {\n // loop k within [k0, k1[\n for (var k = k0; k < k1; k++) {\n // row index\n var i = this._index[k];\n\n // value @ k\n fastCallback(this._values[k], [i, j], me);\n }\n } else {\n // create a cache holding all defined values\n var values = {};\n for (var _k2 = k0; _k2 < k1; _k2++) {\n var _i6 = this._index[_k2];\n values[_i6] = this._values[_k2];\n }\n\n // loop over all rows (indexes can be unordered so we can't use that),\n // and either read the value or zero\n for (var _i7 = 0; _i7 < rows; _i7++) {\n var value = _i7 in values ? values[_i7] : 0;\n fastCallback(value, [_i7, j], me);\n }\n }\n }\n };\n\n /**\n * Iterate over the matrix elements, skipping zeros\n * @return {Iterable<{ value, index: number[] }>}\n */\n SparseMatrix.prototype[Symbol.iterator] = function* () {\n if (!this._values) {\n throw new Error('Cannot iterate a Pattern only matrix');\n }\n var columns = this._size[1];\n for (var j = 0; j < columns; j++) {\n var k0 = this._ptr[j];\n var k1 = this._ptr[j + 1];\n for (var k = k0; k < k1; k++) {\n // row index\n var i = this._index[k];\n yield {\n value: this._values[k],\n index: [i, j]\n };\n }\n }\n };\n\n /**\n * Create an Array with a copy of the data of the SparseMatrix\n * @memberof SparseMatrix\n * @returns {Array} array\n */\n SparseMatrix.prototype.toArray = function () {\n return _toArray(this._values, this._index, this._ptr, this._size, true);\n };\n\n /**\n * Get the primitive value of the SparseMatrix: a two dimensions array\n * @memberof SparseMatrix\n * @returns {Array} array\n */\n SparseMatrix.prototype.valueOf = function () {\n return _toArray(this._values, this._index, this._ptr, this._size, false);\n };\n function _toArray(values, index, ptr, size, copy) {\n // rows and columns\n var rows = size[0];\n var columns = size[1];\n // result\n var a = [];\n // vars\n var i, j;\n // initialize array\n for (i = 0; i < rows; i++) {\n a[i] = [];\n for (j = 0; j < columns; j++) {\n a[i][j] = 0;\n }\n }\n\n // loop columns\n for (j = 0; j < columns; j++) {\n // k0 <= k < k1 where k0 = _ptr[j] && k1 = _ptr[j+1]\n var k0 = ptr[j];\n var k1 = ptr[j + 1];\n // loop k within [k0, k1[\n for (var k = k0; k < k1; k++) {\n // row index\n i = index[k];\n // set value (use one for pattern matrix)\n a[i][j] = values ? copy ? clone(values[k]) : values[k] : 1;\n }\n }\n return a;\n }\n\n /**\n * Get a string representation of the matrix, with optional formatting options.\n * @memberof SparseMatrix\n * @param {Object | number | Function} [options] Formatting options. See\n * lib/utils/number:format for a\n * description of the available\n * options.\n * @returns {string} str\n */\n SparseMatrix.prototype.format = function (options) {\n // rows and columns\n var rows = this._size[0];\n var columns = this._size[1];\n // density\n var density = this.density();\n // rows & columns\n var str = 'Sparse Matrix [' + format(rows, options) + ' x ' + format(columns, options) + '] density: ' + format(density, options) + '\\n';\n // loop columns\n for (var j = 0; j < columns; j++) {\n // k0 <= k < k1 where k0 = _ptr[j] && k1 = _ptr[j+1]\n var k0 = this._ptr[j];\n var k1 = this._ptr[j + 1];\n // loop k within [k0, k1[\n for (var k = k0; k < k1; k++) {\n // row index\n var i = this._index[k];\n // append value\n str += '\\n (' + format(i, options) + ', ' + format(j, options) + ') ==> ' + (this._values ? format(this._values[k], options) : 'X');\n }\n }\n return str;\n };\n\n /**\n * Get a string representation of the matrix\n * @memberof SparseMatrix\n * @returns {string} str\n */\n SparseMatrix.prototype.toString = function () {\n return format(this.toArray());\n };\n\n /**\n * Get a JSON representation of the matrix\n * @memberof SparseMatrix\n * @returns {Object}\n */\n SparseMatrix.prototype.toJSON = function () {\n return {\n mathjs: 'SparseMatrix',\n values: this._values,\n index: this._index,\n ptr: this._ptr,\n size: this._size,\n datatype: this._datatype\n };\n };\n\n /**\n * Get the kth Matrix diagonal.\n *\n * @memberof SparseMatrix\n * @param {number | BigNumber} [k=0] The kth diagonal where the vector will retrieved.\n *\n * @returns {Matrix} The matrix vector with the diagonal values.\n */\n SparseMatrix.prototype.diagonal = function (k) {\n // validate k if any\n if (k) {\n // convert BigNumber to a number\n if (isBigNumber(k)) {\n k = k.toNumber();\n }\n // is must be an integer\n if (!isNumber(k) || !isInteger(k)) {\n throw new TypeError('The parameter k must be an integer number');\n }\n } else {\n // default value\n k = 0;\n }\n var kSuper = k > 0 ? k : 0;\n var kSub = k < 0 ? -k : 0;\n\n // rows & columns\n var rows = this._size[0];\n var columns = this._size[1];\n\n // number diagonal values\n var n = Math.min(rows - kSub, columns - kSuper);\n\n // diagonal arrays\n var values = [];\n var index = [];\n var ptr = [];\n // initial ptr value\n ptr[0] = 0;\n // loop columns\n for (var j = kSuper; j < columns && values.length < n; j++) {\n // k0 <= k < k1 where k0 = _ptr[j] && k1 = _ptr[j+1]\n var k0 = this._ptr[j];\n var k1 = this._ptr[j + 1];\n // loop x within [k0, k1[\n for (var x = k0; x < k1; x++) {\n // row index\n var i = this._index[x];\n // check row\n if (i === j - kSuper + kSub) {\n // value on this column\n values.push(this._values[x]);\n // store row\n index[values.length - 1] = i - kSub;\n // exit loop\n break;\n }\n }\n }\n // close ptr\n ptr.push(values.length);\n // return matrix\n return new SparseMatrix({\n values,\n index,\n ptr,\n size: [n, 1]\n });\n };\n\n /**\n * Generate a matrix from a JSON object\n * @memberof SparseMatrix\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"SparseMatrix\", \"values\": [], \"index\": [], \"ptr\": [], \"size\": []}`,\n * where mathjs is optional\n * @returns {SparseMatrix}\n */\n SparseMatrix.fromJSON = function (json) {\n return new SparseMatrix(json);\n };\n\n /**\n * Create a diagonal matrix.\n *\n * @memberof SparseMatrix\n * @param {Array} size The matrix size.\n * @param {number | Array | Matrix } value The values for the diagonal.\n * @param {number | BigNumber} [k=0] The kth diagonal where the vector will be filled in.\n * @param {number} [defaultValue] The default value for non-diagonal\n * @param {string} [datatype] The Matrix datatype, values must be of this datatype.\n *\n * @returns {SparseMatrix}\n */\n SparseMatrix.diagonal = function (size, value, k, defaultValue, datatype) {\n if (!isArray(size)) {\n throw new TypeError('Array expected, size parameter');\n }\n if (size.length !== 2) {\n throw new Error('Only two dimensions matrix are supported');\n }\n\n // map size & validate\n size = size.map(function (s) {\n // check it is a big number\n if (isBigNumber(s)) {\n // convert it\n s = s.toNumber();\n }\n // validate arguments\n if (!isNumber(s) || !isInteger(s) || s < 1) {\n throw new Error('Size values must be positive integers');\n }\n return s;\n });\n\n // validate k if any\n if (k) {\n // convert BigNumber to a number\n if (isBigNumber(k)) {\n k = k.toNumber();\n }\n // is must be an integer\n if (!isNumber(k) || !isInteger(k)) {\n throw new TypeError('The parameter k must be an integer number');\n }\n } else {\n // default value\n k = 0;\n }\n\n // equal signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n if (isString(datatype)) {\n // find signature that matches (datatype, datatype)\n eq = typed.find(equalScalar, [datatype, datatype]) || equalScalar;\n // convert 0 to the same datatype\n zero = typed.convert(0, datatype);\n }\n var kSuper = k > 0 ? k : 0;\n var kSub = k < 0 ? -k : 0;\n\n // rows and columns\n var rows = size[0];\n var columns = size[1];\n\n // number of non-zero items\n var n = Math.min(rows - kSub, columns - kSuper);\n\n // value extraction function\n var _value;\n\n // check value\n if (isArray(value)) {\n // validate array\n if (value.length !== n) {\n // number of values in array must be n\n throw new Error('Invalid value array length');\n }\n // define function\n _value = function _value(i) {\n // return value @ i\n return value[i];\n };\n } else if (isMatrix(value)) {\n // matrix size\n var ms = value.size();\n // validate matrix\n if (ms.length !== 1 || ms[0] !== n) {\n // number of values in array must be n\n throw new Error('Invalid matrix length');\n }\n // define function\n _value = function _value(i) {\n // return value @ i\n return value.get([i]);\n };\n } else {\n // define function\n _value = function _value() {\n // return value\n return value;\n };\n }\n\n // create arrays\n var values = [];\n var index = [];\n var ptr = [];\n\n // loop items\n for (var j = 0; j < columns; j++) {\n // number of rows with value\n ptr.push(values.length);\n // diagonal index\n var i = j - kSuper;\n // check we need to set diagonal value\n if (i >= 0 && i < n) {\n // get value @ i\n var v = _value(i);\n // check for zero\n if (!eq(v, zero)) {\n // column\n index.push(i + kSub);\n // add value\n values.push(v);\n }\n }\n }\n // last value should be number of values\n ptr.push(values.length);\n // create SparseMatrix\n return new SparseMatrix({\n values,\n index,\n ptr,\n size: [rows, columns]\n });\n };\n\n /**\n * Swap rows i and j in Matrix.\n *\n * @memberof SparseMatrix\n * @param {number} i Matrix row index 1\n * @param {number} j Matrix row index 2\n *\n * @return {Matrix} The matrix reference\n */\n SparseMatrix.prototype.swapRows = function (i, j) {\n // check index\n if (!isNumber(i) || !isInteger(i) || !isNumber(j) || !isInteger(j)) {\n throw new Error('Row index must be positive integers');\n }\n // check dimensions\n if (this._size.length !== 2) {\n throw new Error('Only two dimensional matrix is supported');\n }\n // validate index\n validateIndex(i, this._size[0]);\n validateIndex(j, this._size[0]);\n\n // swap rows\n SparseMatrix._swapRows(i, j, this._size[1], this._values, this._index, this._ptr);\n // return current instance\n return this;\n };\n\n /**\n * Loop rows with data in column j.\n *\n * @param {number} j Column\n * @param {Array} values Matrix values\n * @param {Array} index Matrix row indeces\n * @param {Array} ptr Matrix column pointers\n * @param {Function} callback Callback function invoked for every row in column j\n */\n SparseMatrix._forEachRow = function (j, values, index, ptr, callback) {\n // indeces for column j\n var k0 = ptr[j];\n var k1 = ptr[j + 1];\n\n // loop\n for (var k = k0; k < k1; k++) {\n // invoke callback\n callback(index[k], values[k]);\n }\n };\n\n /**\n * Swap rows x and y in Sparse Matrix data structures.\n *\n * @param {number} x Matrix row index 1\n * @param {number} y Matrix row index 2\n * @param {number} columns Number of columns in matrix\n * @param {Array} values Matrix values\n * @param {Array} index Matrix row indeces\n * @param {Array} ptr Matrix column pointers\n */\n SparseMatrix._swapRows = function (x, y, columns, values, index, ptr) {\n // loop columns\n for (var j = 0; j < columns; j++) {\n // k0 <= k < k1 where k0 = _ptr[j] && k1 = _ptr[j+1]\n var k0 = ptr[j];\n var k1 = ptr[j + 1];\n // find value index @ x\n var kx = _getValueIndex(x, k0, k1, index);\n // find value index @ x\n var ky = _getValueIndex(y, k0, k1, index);\n // check both rows exist in matrix\n if (kx < k1 && ky < k1 && index[kx] === x && index[ky] === y) {\n // swap values (check for pattern matrix)\n if (values) {\n var v = values[kx];\n values[kx] = values[ky];\n values[ky] = v;\n }\n // next column\n continue;\n }\n // check x row exist & no y row\n if (kx < k1 && index[kx] === x && (ky >= k1 || index[ky] !== y)) {\n // value @ x (check for pattern matrix)\n var vx = values ? values[kx] : undefined;\n // insert value @ y\n index.splice(ky, 0, y);\n if (values) {\n values.splice(ky, 0, vx);\n }\n // remove value @ x (adjust array index if needed)\n index.splice(ky <= kx ? kx + 1 : kx, 1);\n if (values) {\n values.splice(ky <= kx ? kx + 1 : kx, 1);\n }\n // next column\n continue;\n }\n // check y row exist & no x row\n if (ky < k1 && index[ky] === y && (kx >= k1 || index[kx] !== x)) {\n // value @ y (check for pattern matrix)\n var vy = values ? values[ky] : undefined;\n // insert value @ x\n index.splice(kx, 0, x);\n if (values) {\n values.splice(kx, 0, vy);\n }\n // remove value @ y (adjust array index if needed)\n index.splice(kx <= ky ? ky + 1 : ky, 1);\n if (values) {\n values.splice(kx <= ky ? ky + 1 : ky, 1);\n }\n }\n }\n };\n return SparseMatrix;\n}, {\n isClass: true\n});", "import { factory } from '../utils/factory.js';\nimport { deepMap } from '../utils/collection.js';\nvar name = 'number';\nvar dependencies = ['typed'];\n\n/**\n * Separates the radix, integer part, and fractional part of a non decimal number string\n * @param {string} input string to parse\n * @returns {object} the parts of the string or null if not a valid input\n */\nfunction getNonDecimalNumberParts(input) {\n var nonDecimalWithRadixMatch = input.match(/(0[box])([0-9a-fA-F]*)\\.([0-9a-fA-F]*)/);\n if (nonDecimalWithRadixMatch) {\n var radix = {\n '0b': 2,\n '0o': 8,\n '0x': 16\n }[nonDecimalWithRadixMatch[1]];\n var integerPart = nonDecimalWithRadixMatch[2];\n var fractionalPart = nonDecimalWithRadixMatch[3];\n return {\n input,\n radix,\n integerPart,\n fractionalPart\n };\n } else {\n return null;\n }\n}\n\n/**\n * Makes a number from a radix, and integer part, and a fractional part\n * @param {parts} [x] parts of the number string (from getNonDecimalNumberParts)\n * @returns {number} the number\n */\nfunction makeNumberFromNonDecimalParts(parts) {\n var n = parseInt(parts.integerPart, parts.radix);\n var f = 0;\n for (var i = 0; i < parts.fractionalPart.length; i++) {\n var digitValue = parseInt(parts.fractionalPart[i], parts.radix);\n f += digitValue / Math.pow(parts.radix, i + 1);\n }\n var result = n + f;\n if (isNaN(result)) {\n throw new SyntaxError('String \"' + parts.input + '\" is not a valid number');\n }\n return result;\n}\nexport var createNumber = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Create a number or convert a string, boolean, or unit to a number.\n * When value is a matrix, all elements will be converted to number.\n *\n * Syntax:\n *\n * math.number(value)\n * math.number(unit, valuelessUnit)\n *\n * Examples:\n *\n * math.number(2) // returns number 2\n * math.number('7.2') // returns number 7.2\n * math.number(true) // returns number 1\n * math.number([true, false, true, true]) // returns [1, 0, 1, 1]\n * math.number(math.unit('52cm'), 'm') // returns 0.52\n *\n * See also:\n *\n * bignumber, bigint, boolean, numeric, complex, index, matrix, string, unit\n *\n * @param {string | number | BigNumber | Fraction | boolean | Array | Matrix | Unit | null} [value] Value to be converted\n * @param {Unit | string} [valuelessUnit] A valueless unit, used to convert a unit to a number\n * @return {number | Array | Matrix} The created number\n */\n var number = typed('number', {\n '': function _() {\n return 0;\n },\n number: function number(x) {\n return x;\n },\n string: function string(x) {\n if (x === 'NaN') return NaN;\n var nonDecimalNumberParts = getNonDecimalNumberParts(x);\n if (nonDecimalNumberParts) {\n return makeNumberFromNonDecimalParts(nonDecimalNumberParts);\n }\n var size = 0;\n var wordSizeSuffixMatch = x.match(/(0[box][0-9a-fA-F]*)i([0-9]*)/);\n if (wordSizeSuffixMatch) {\n // x includes a size suffix like 0xffffi32, so we extract\n // the suffix and remove it from x\n size = Number(wordSizeSuffixMatch[2]);\n x = wordSizeSuffixMatch[1];\n }\n var num = Number(x);\n if (isNaN(num)) {\n throw new SyntaxError('String \"' + x + '\" is not a valid number');\n }\n if (wordSizeSuffixMatch) {\n // x is a signed bin, oct, or hex literal\n // num is the value of string x if x is interpreted as unsigned\n if (num > 2 ** size - 1) {\n // literal is too large for size suffix\n throw new SyntaxError(\"String \\\"\".concat(x, \"\\\" is out of range\"));\n }\n // check if the bit at index size - 1 is set and if so do the twos complement\n if (num >= 2 ** (size - 1)) {\n num = num - 2 ** size;\n }\n }\n return num;\n },\n BigNumber: function BigNumber(x) {\n return x.toNumber();\n },\n bigint: function bigint(x) {\n return Number(x);\n },\n Fraction: function Fraction(x) {\n return x.valueOf();\n },\n Unit: typed.referToSelf(self => x => {\n var clone = x.clone();\n clone.value = self(x.value);\n return clone;\n }),\n null: function _null(x) {\n return 0;\n },\n 'Unit, string | Unit': function Unit_string__Unit(unit, valuelessUnit) {\n return unit.toNumber(valuelessUnit);\n },\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n\n // reviver function to parse a JSON object like:\n //\n // {\"mathjs\":\"number\",\"value\":\"2.3\"}\n //\n // into a number 2.3\n number.fromJSON = function (json) {\n return parseFloat(json.value);\n };\n return number;\n});", "import { factory } from '../utils/factory.js';\nimport { deepMap } from '../utils/collection.js';\nvar name = 'bigint';\nvar dependencies = ['typed'];\nexport var createBigint = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Create a bigint or convert a string, boolean, or unit to a bigint.\n * When value is a matrix, all elements will be converted to bigint.\n *\n * Syntax:\n *\n * math.bigint(value)\n *\n * Examples:\n *\n * math.bigint(2) // returns 2n\n * math.bigint('123') // returns 123n\n * math.bigint(true) // returns 1n\n * math.bigint([true, false, true, true]) // returns [1n, 0n, 1n, 1n]\n *\n * See also:\n *\n * number, bignumber, boolean, complex, index, matrix, string, unit\n *\n * @param {string | number | BigNumber | bigint | Fraction | boolean | Array | Matrix | null} [value] Value to be converted\n * @return {bigint | Array | Matrix} The created bigint\n */\n var bigint = typed('bigint', {\n '': function _() {\n return 0n;\n },\n bigint: function bigint(x) {\n return x;\n },\n number: function number(x) {\n return BigInt(x.toFixed());\n },\n BigNumber: function BigNumber(x) {\n return BigInt(x.round().toString());\n },\n Fraction: function Fraction(x) {\n return BigInt(x.valueOf().toFixed());\n },\n 'string | boolean': function string__boolean(x) {\n return BigInt(x);\n },\n null: function _null(x) {\n return 0n;\n },\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n\n // reviver function to parse a JSON object like:\n //\n // {\"mathjs\":\"bigint\",\"value\":\"123\"}\n //\n // into a bigint 123n\n bigint.fromJSON = function (json) {\n return BigInt(json.value);\n };\n return bigint;\n});", "import { factory } from '../utils/factory.js';\nimport { deepMap } from '../utils/collection.js';\nimport { format } from '../utils/number.js';\nvar name = 'string';\nvar dependencies = ['typed'];\nexport var createString = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Create a string or convert any object into a string.\n * Elements of Arrays and Matrices are processed element wise.\n *\n * Syntax:\n *\n * math.string(value)\n *\n * Examples:\n *\n * math.string(4.2) // returns string '4.2'\n * math.string(math.complex(3, 2) // returns string '3 + 2i'\n *\n * const u = math.unit(5, 'km')\n * math.string(u.to('m')) // returns string '5000 m'\n *\n * math.string([true, false]) // returns ['true', 'false']\n *\n * See also:\n *\n * bignumber, boolean, complex, index, matrix, number, unit\n *\n * @param {* | Array | Matrix | null} [value] A value to convert to a string\n * @return {string | Array | Matrix} The created string\n */\n return typed(name, {\n '': function _() {\n return '';\n },\n number: format,\n null: function _null(x) {\n return 'null';\n },\n boolean: function boolean(x) {\n return x + '';\n },\n string: function string(x) {\n return x;\n },\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self)),\n any: function any(x) {\n return String(x);\n }\n });\n});", "import { factory } from '../utils/factory.js';\nimport { deepMap } from '../utils/collection.js';\nvar name = 'boolean';\nvar dependencies = ['typed'];\nexport var createBoolean = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Create a boolean or convert a string or number to a boolean.\n * In case of a number, `true` is returned for non-zero numbers, and `false` in\n * case of zero.\n * Strings can be `'true'` or `'false'`, or can contain a number.\n * When value is a matrix, all elements will be converted to boolean.\n *\n * Syntax:\n *\n * math.boolean(x)\n *\n * Examples:\n *\n * math.boolean(0) // returns false\n * math.boolean(1) // returns true\n * math.boolean(-3) // returns true\n * math.boolean('true') // returns true\n * math.boolean('false') // returns false\n * math.boolean([1, 0, 1, 1]) // returns [true, false, true, true]\n *\n * See also:\n *\n * bignumber, complex, index, matrix, string, unit\n *\n * @param {string | number | boolean | Array | Matrix | null} value A value of any type\n * @return {boolean | Array | Matrix} The boolean value\n */\n return typed(name, {\n '': function _() {\n return false;\n },\n boolean: function boolean(x) {\n return x;\n },\n number: function number(x) {\n return !!x;\n },\n null: function _null(x) {\n return false;\n },\n BigNumber: function BigNumber(x) {\n return !x.isZero();\n },\n string: function string(x) {\n // try case insensitive\n var lcase = x.toLowerCase();\n if (lcase === 'true') {\n return true;\n } else if (lcase === 'false') {\n return false;\n }\n\n // test whether value is a valid number\n var num = Number(x);\n if (x !== '' && !isNaN(num)) {\n return !!num;\n }\n throw new Error('Cannot convert \"' + x + '\" to a boolean');\n },\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { factory } from '../../../utils/factory.js';\nimport { deepMap } from '../../../utils/collection.js';\nvar name = 'bignumber';\nvar dependencies = ['typed', 'BigNumber'];\nexport var createBignumber = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber\n } = _ref;\n /**\n * Create a BigNumber, which can store numbers with arbitrary precision.\n * When a matrix is provided, all elements will be converted to BigNumber.\n *\n * Syntax:\n *\n * math.bignumber(x)\n *\n * Examples:\n *\n * 0.1 + 0.2 // returns number 0.30000000000000004\n * math.bignumber(0.1) + math.bignumber(0.2) // returns BigNumber 0.3\n *\n *\n * 7.2e500 // returns number Infinity\n * math.bignumber('7.2e500') // returns BigNumber 7.2e500\n *\n * See also:\n *\n * number, bigint, boolean, complex, index, matrix, string, unit\n *\n * @param {number | string | Fraction | BigNumber | bigint | Array | Matrix | boolean | null} [value] Value for the big number,\n * 0 by default.\n * @returns {BigNumber} The created bignumber\n */\n return typed('bignumber', {\n '': function _() {\n return new BigNumber(0);\n },\n number: function number(x) {\n // convert to string to prevent errors in case of >15 digits\n return new BigNumber(x + '');\n },\n string: function string(x) {\n var wordSizeSuffixMatch = x.match(/(0[box][0-9a-fA-F]*)i([0-9]*)/);\n if (wordSizeSuffixMatch) {\n // x has a word size suffix\n var size = wordSizeSuffixMatch[2];\n var n = BigNumber(wordSizeSuffixMatch[1]);\n var twoPowSize = new BigNumber(2).pow(Number(size));\n if (n.gt(twoPowSize.sub(1))) {\n throw new SyntaxError(\"String \\\"\".concat(x, \"\\\" is out of range\"));\n }\n var twoPowSizeSubOne = new BigNumber(2).pow(Number(size) - 1);\n if (n.gte(twoPowSizeSubOne)) {\n return n.sub(twoPowSize);\n } else {\n return n;\n }\n }\n return new BigNumber(x);\n },\n BigNumber: function BigNumber(x) {\n // we assume a BigNumber is immutable\n return x;\n },\n bigint: function bigint(x) {\n return new BigNumber(x.toString());\n },\n Unit: typed.referToSelf(self => x => {\n var clone = x.clone();\n clone.value = self(x.value);\n return clone;\n }),\n Fraction: function Fraction(x) {\n return new BigNumber(x.n).div(x.d).times(x.s);\n },\n null: function _null(x) {\n return new BigNumber(0);\n },\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { factory } from '../../../utils/factory.js';\nimport { deepMap } from '../../../utils/collection.js';\nvar name = 'complex';\nvar dependencies = ['typed', 'Complex'];\nexport var createComplex = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Complex\n } = _ref;\n /**\n * Create a complex value or convert a value to a complex value.\n *\n * Syntax:\n *\n * math.complex() // creates a complex value with zero\n * // as real and imaginary part.\n * math.complex(re : number, im : string) // creates a complex value with provided\n * // values for real and imaginary part.\n * math.complex(re : number) // creates a complex value with provided\n * // real value and zero imaginary part.\n * math.complex(complex : Complex) // clones the provided complex value.\n * math.complex(arg : string) // parses a string into a complex value.\n * math.complex(array : Array) // converts the elements of the array\n * // or matrix element wise into a\n * // complex value.\n * math.complex({re: number, im: number}) // creates a complex value with provided\n * // values for real an imaginary part.\n * math.complex({r: number, phi: number}) // creates a complex value with provided\n * // polar coordinates\n *\n * Examples:\n *\n * const a = math.complex(3, -4) // a = Complex 3 - 4i\n * a.re = 5 // a = Complex 5 - 4i\n * const i = a.im // Number -4\n * const b = math.complex('2 + 6i') // Complex 2 + 6i\n * const c = math.complex() // Complex 0 + 0i\n * const d = math.add(a, b) // Complex 5 + 2i\n *\n * See also:\n *\n * bignumber, boolean, index, matrix, number, string, unit\n *\n * @param {* | Array | Matrix} [args]\n * Arguments specifying the real and imaginary part of the complex number\n * @return {Complex | Array | Matrix} Returns a complex value\n */\n return typed('complex', {\n '': function _() {\n return Complex.ZERO;\n },\n number: function number(x) {\n return new Complex(x, 0);\n },\n 'number, number': function number_number(re, im) {\n return new Complex(re, im);\n },\n // TODO: this signature should be redundant\n 'BigNumber, BigNumber': function BigNumber_BigNumber(re, im) {\n return new Complex(re.toNumber(), im.toNumber());\n },\n Fraction: function Fraction(x) {\n return new Complex(x.valueOf(), 0);\n },\n Complex: function Complex(x) {\n return x.clone();\n },\n string: function string(x) {\n return Complex(x); // for example '2 + 3i'\n },\n null: function _null(x) {\n return Complex(0);\n },\n Object: function Object(x) {\n if ('re' in x && 'im' in x) {\n return new Complex(x.re, x.im);\n }\n if ('r' in x && 'phi' in x || 'abs' in x && 'arg' in x) {\n return new Complex(x);\n }\n throw new Error('Expected object with properties (re and im) or (r and phi) or (abs and arg)');\n },\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { factory } from '../../../utils/factory.js';\nimport { deepMap } from '../../../utils/collection.js';\nvar name = 'fraction';\nvar dependencies = ['typed', 'Fraction'];\nexport var createFraction = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Fraction\n } = _ref;\n /**\n * Create a fraction or convert a value to a fraction.\n *\n * With one numeric argument, produces the closest rational approximation to the\n * input.\n * With two arguments, the first is the numerator and the second is the denominator,\n * and creates the corresponding fraction. Both numerator and denominator must be\n * integers.\n * With one object argument, looks for the integer numerator as the value of property\n * 'n' and the integer denominator as the value of property 'd'.\n * With a matrix argument, creates a matrix of the same shape with entries\n * converted into fractions.\n *\n * Syntax:\n * math.fraction(value)\n * math.fraction(numerator, denominator)\n * math.fraction({n: numerator, d: denominator})\n * math.fraction(matrix: Array | Matrix)\n *\n * Examples:\n *\n * math.fraction(6.283) // returns Fraction 6283/1000\n * math.fraction(1, 3) // returns Fraction 1/3\n * math.fraction('2/3') // returns Fraction 2/3\n * math.fraction({n: 2, d: 3}) // returns Fraction 2/3\n * math.fraction([0.2, 0.25, 1.25]) // returns Array [1/5, 1/4, 5/4]\n * math.fraction(4, 5.1) // throws Error: Parameters must be integer\n *\n * See also:\n *\n * bignumber, number, string, unit\n *\n * @param {number | string | Fraction | BigNumber | bigint | Unit | Array | Matrix} [args]\n * Arguments specifying the value, or numerator and denominator of\n * the fraction\n * @return {Fraction | Array | Matrix} Returns a fraction\n */\n return typed('fraction', {\n number: function number(x) {\n if (!isFinite(x) || isNaN(x)) {\n throw new Error(x + ' cannot be represented as a fraction');\n }\n return new Fraction(x);\n },\n string: function string(x) {\n return new Fraction(x);\n },\n 'number, number': function number_number(numerator, denominator) {\n return new Fraction(numerator, denominator);\n },\n null: function _null(x) {\n return new Fraction(0);\n },\n BigNumber: function BigNumber(x) {\n return new Fraction(x.toString());\n },\n bigint: function bigint(x) {\n return new Fraction(x.toString());\n },\n Fraction: function Fraction(x) {\n return x; // fractions are immutable\n },\n Unit: typed.referToSelf(self => x => {\n var clone = x.clone();\n clone.value = self(x.value);\n return clone;\n }),\n Object: function Object(x) {\n return new Fraction(x);\n },\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { factory } from '../../../utils/factory.js';\nvar name = 'matrix';\nvar dependencies = ['typed', 'Matrix', 'DenseMatrix', 'SparseMatrix'];\nexport var createMatrix = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Matrix,\n DenseMatrix,\n SparseMatrix\n } = _ref;\n /**\n * Create a Matrix. The function creates a new `math.Matrix` object from\n * an `Array`. A Matrix has utility functions to manipulate the data in the\n * matrix, like getting the size and getting or setting values in the matrix.\n * Supported storage formats are 'dense' and 'sparse'.\n *\n * Syntax:\n *\n * math.matrix() // creates an empty matrix using default storage format (dense).\n * math.matrix(data) // creates a matrix with initial data using default storage format (dense).\n * math.matrix('dense') // creates an empty matrix using the given storage format.\n * math.matrix(data, 'dense') // creates a matrix with initial data using the given storage format.\n * math.matrix(data, 'sparse') // creates a sparse matrix with initial data.\n * math.matrix(data, 'sparse', 'number') // creates a sparse matrix with initial data, number data type.\n *\n * Examples:\n *\n * let m = math.matrix([[1, 2], [3, 4]])\n * m.size() // Array [2, 2]\n * m.resize([3, 2], 5)\n * m.valueOf() // Array [[1, 2], [3, 4], [5, 5]]\n * m.get([1, 0]) // number 3\n *\n * See also:\n *\n * bignumber, boolean, complex, index, number, string, unit, sparse\n *\n * @param {Array | Matrix} [data] A multi dimensional array\n * @param {string} [format] The Matrix storage format, either `'dense'` or `'sparse'`\n * @param {string} [datatype] Type of the values\n *\n * @return {Matrix} The created matrix\n */\n return typed(name, {\n '': function _() {\n return _create([]);\n },\n string: function string(format) {\n return _create([], format);\n },\n 'string, string': function string_string(format, datatype) {\n return _create([], format, datatype);\n },\n Array: function Array(data) {\n return _create(data);\n },\n Matrix: function Matrix(data) {\n return _create(data, data.storage());\n },\n 'Array | Matrix, string': _create,\n 'Array | Matrix, string, string': _create\n });\n\n /**\n * Create a new Matrix with given storage format\n * @param {Array} data\n * @param {string} [format]\n * @param {string} [datatype]\n * @returns {Matrix} Returns a new Matrix\n * @private\n */\n function _create(data, format, datatype) {\n // get storage format constructor\n if (format === 'dense' || format === 'default' || format === undefined) {\n return new DenseMatrix(data, datatype);\n }\n if (format === 'sparse') {\n return new SparseMatrix(data, datatype);\n }\n throw new TypeError('Unknown matrix type ' + JSON.stringify(format) + '.');\n }\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'matrixFromFunction';\nvar dependencies = ['typed', 'matrix', 'isZero'];\nexport var createMatrixFromFunction = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n isZero\n } = _ref;\n /**\n * Create a matrix by evaluating a generating function at each index.\n * The simplest overload returns a multi-dimensional array as long as `size` is an array.\n * Passing `size` as a Matrix or specifying a `format` will result in returning a Matrix.\n *\n * Syntax:\n *\n * math.matrixFromFunction(size, fn)\n * math.matrixFromFunction(size, fn, format)\n * math.matrixFromFunction(size, fn, format, datatype)\n * math.matrixFromFunction(size, format, fn)\n * math.matrixFromFunction(size, format, datatype, fn)\n *\n * Examples:\n *\n * math.matrixFromFunction([3,3], i => i[0] - i[1]) // an antisymmetric matrix\n * math.matrixFromFunction([100, 100], 'sparse', i => i[0] - i[1] === 1 ? 4 : 0) // a sparse subdiagonal matrix\n * math.matrixFromFunction([5], i => math.random()) // a random vector\n *\n * See also:\n *\n * matrix, zeros\n *\n * @param {Array | Matrix} size The size of the matrix to be created\n * @param {function} fn Callback function invoked for every entry in the matrix\n * @param {string} [format] The Matrix storage format, either `'dense'` or `'sparse'`\n * @param {string} [datatype] Type of the values\n * @return {Array | Matrix} Returns the created matrix\n */\n return typed(name, {\n 'Array | Matrix, function, string, string': function Array__Matrix_function_string_string(size, fn, format, datatype) {\n return _create(size, fn, format, datatype);\n },\n 'Array | Matrix, function, string': function Array__Matrix_function_string(size, fn, format) {\n return _create(size, fn, format);\n },\n 'Matrix, function': function Matrix_function(size, fn) {\n return _create(size, fn, 'dense');\n },\n 'Array, function': function Array_function(size, fn) {\n return _create(size, fn, 'dense').toArray();\n },\n 'Array | Matrix, string, function': function Array__Matrix_string_function(size, format, fn) {\n return _create(size, fn, format);\n },\n 'Array | Matrix, string, string, function': function Array__Matrix_string_string_function(size, format, datatype, fn) {\n return _create(size, fn, format, datatype);\n }\n });\n function _create(size, fn, format, datatype) {\n var m;\n if (datatype !== undefined) {\n m = matrix(format, datatype);\n } else {\n m = matrix(format);\n }\n m.resize(size);\n m.forEach(function (_, index) {\n var val = fn(index);\n if (isZero(val)) return;\n m.set(index, val);\n });\n return m;\n }\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'matrixFromRows';\nvar dependencies = ['typed', 'matrix', 'flatten', 'size'];\nexport var createMatrixFromRows = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n flatten,\n size\n } = _ref;\n /**\n * Create a dense matrix from vectors as individual rows.\n * If you pass column vectors, they will be transposed (but not conjugated!)\n *\n * Syntax:\n *\n * math.matrixFromRows(...arr)\n * math.matrixFromRows(row1, row2)\n * math.matrixFromRows(row1, row2, row3)\n *\n * Examples:\n *\n * math.matrixFromRows([1, 2, 3], [[4],[5],[6]])\n * math.matrixFromRows(...vectors)\n *\n * See also:\n *\n * matrix, matrixFromColumns, matrixFromFunction, zeros\n *\n * @param {... Array | Matrix} rows Multiple rows\n * @return { number[][] | Matrix } if at least one of the arguments is an array, an array will be returned\n */\n return typed(name, {\n '...Array': function Array(arr) {\n return _createArray(arr);\n },\n '...Matrix': function Matrix(arr) {\n return matrix(_createArray(arr.map(m => m.toArray())));\n }\n\n // TODO implement this properly for SparseMatrix\n });\n function _createArray(arr) {\n if (arr.length === 0) throw new TypeError('At least one row is needed to construct a matrix.');\n var N = checkVectorTypeAndReturnLength(arr[0]);\n var result = [];\n for (var row of arr) {\n var rowLength = checkVectorTypeAndReturnLength(row);\n if (rowLength !== N) {\n throw new TypeError('The vectors had different length: ' + (N | 0) + ' \u2260 ' + (rowLength | 0));\n }\n result.push(flatten(row));\n }\n return result;\n }\n function checkVectorTypeAndReturnLength(vec) {\n var s = size(vec);\n if (s.length === 1) {\n // 1D vector\n return s[0];\n } else if (s.length === 2) {\n // 2D vector\n if (s[0] === 1) {\n // row vector\n return s[1];\n } else if (s[1] === 1) {\n // col vector\n return s[0];\n } else {\n throw new TypeError('At least one of the arguments is not a vector.');\n }\n } else {\n throw new TypeError('Only one- or two-dimensional vectors are supported.');\n }\n }\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'matrixFromColumns';\nvar dependencies = ['typed', 'matrix', 'flatten', 'size'];\nexport var createMatrixFromColumns = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n flatten,\n size\n } = _ref;\n /**\n * Create a dense matrix from vectors as individual columns.\n * If you pass row vectors, they will be transposed (but not conjugated!)\n *\n * Syntax:\n *\n * math.matrixFromColumns(...arr)\n * math.matrixFromColumns(col1, col2)\n * math.matrixFromColumns(col1, col2, col3)\n *\n * Examples:\n *\n * math.matrixFromColumns([1, 2, 3], [[4],[5],[6]])\n * math.matrixFromColumns(...vectors)\n *\n * See also:\n *\n * matrix, matrixFromRows, matrixFromFunction, zeros\n *\n * @param {... Array | Matrix} cols Multiple columns\n * @return { number[][] | Matrix } if at least one of the arguments is an array, an array will be returned\n */\n return typed(name, {\n '...Array': function Array(arr) {\n return _createArray(arr);\n },\n '...Matrix': function Matrix(arr) {\n return matrix(_createArray(arr.map(m => m.toArray())));\n }\n\n // TODO implement this properly for SparseMatrix\n });\n function _createArray(arr) {\n if (arr.length === 0) throw new TypeError('At least one column is needed to construct a matrix.');\n var N = checkVectorTypeAndReturnLength(arr[0]);\n\n // create an array with empty rows\n var result = [];\n for (var i = 0; i < N; i++) {\n result[i] = [];\n }\n\n // loop columns\n for (var col of arr) {\n var colLength = checkVectorTypeAndReturnLength(col);\n if (colLength !== N) {\n throw new TypeError('The vectors had different length: ' + (N | 0) + ' \u2260 ' + (colLength | 0));\n }\n var f = flatten(col);\n\n // push a value to each row\n for (var _i = 0; _i < N; _i++) {\n result[_i].push(f[_i]);\n }\n }\n return result;\n }\n function checkVectorTypeAndReturnLength(vec) {\n var s = size(vec);\n if (s.length === 1) {\n // 1D vector\n return s[0];\n } else if (s.length === 2) {\n // 2D vector\n if (s[0] === 1) {\n // row vector\n return s[1];\n } else if (s[1] === 1) {\n // col vector\n return s[0];\n } else {\n throw new TypeError('At least one of the arguments is not a vector.');\n }\n } else {\n throw new TypeError('Only one- or two-dimensional vectors are supported.');\n }\n }\n});", "import { factory } from '../../../utils/factory.js';\nvar name = 'splitUnit';\nvar dependencies = ['typed'];\nexport var createSplitUnit = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Split a unit in an array of units whose sum is equal to the original unit.\n *\n * Syntax:\n *\n * math.splitUnit(unit: Unit, parts: Array.)\n *\n * Example:\n *\n * math.splitUnit(new Unit(1, 'm'), ['feet', 'inch'])\n * // [ 3 feet, 3.3700787401575 inch ]\n *\n * See also:\n *\n * unit\n *\n * @param {Array} [parts] An array of strings or valueless units.\n * @return {Array} An array of units.\n */\n return typed(name, {\n 'Unit, Array': function Unit_Array(unit, parts) {\n return unit.splitUnit(parts);\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { unaryMinusNumber } from '../../plain/number/index.js';\nvar name = 'unaryMinus';\nvar dependencies = ['typed'];\nexport var createUnaryMinus = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Inverse the sign of a value, apply a unary minus operation.\n *\n * For matrices, the function is evaluated element wise. Boolean values and\n * strings will be converted to a number. For complex numbers, both real and\n * complex value are inverted.\n *\n * Syntax:\n *\n * math.unaryMinus(x)\n *\n * Examples:\n *\n * math.unaryMinus(3.5) // returns -3.5\n * math.unaryMinus(-4.2) // returns 4.2\n *\n * See also:\n *\n * add, subtract, unaryPlus\n *\n * @param {number | BigNumber | bigint | Fraction | Complex | Unit | Array | Matrix} x Number to be inverted.\n * @return {number | BigNumber | bigint | Fraction | Complex | Unit | Array | Matrix} Returns the value with inverted sign.\n */\n return typed(name, {\n number: unaryMinusNumber,\n 'Complex | BigNumber | Fraction': x => x.neg(),\n bigint: x => -x,\n Unit: typed.referToSelf(self => x => {\n var res = x.clone();\n res.value = typed.find(self, res.valueType())(x.value);\n return res;\n }),\n // deep map collection, skip zeros since unaryMinus(0) = 0\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self, true))\n\n // TODO: add support for string\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { unaryPlusNumber } from '../../plain/number/index.js';\nimport { safeNumberType } from '../../utils/number.js';\nvar name = 'unaryPlus';\nvar dependencies = ['typed', 'config', 'numeric'];\nexport var createUnaryPlus = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n numeric\n } = _ref;\n /**\n * Unary plus operation.\n * Boolean values and strings will be converted to a number, numeric values will be returned as is.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.unaryPlus(x)\n *\n * Examples:\n *\n * math.unaryPlus(3.5) // returns 3.5\n * math.unaryPlus(1) // returns 1\n *\n * See also:\n *\n * unaryMinus, add, subtract\n *\n * @param {number | BigNumber | bigint | Fraction | string | Complex | Unit | Array | Matrix} x\n * Input value\n * @return {number | BigNumber | bigint | Fraction | Complex | Unit | Array | Matrix}\n * Returns the input value when numeric, converts to a number when input is non-numeric.\n */\n return typed(name, {\n number: unaryPlusNumber,\n Complex: function Complex(x) {\n return x; // complex numbers are immutable\n },\n BigNumber: function BigNumber(x) {\n return x; // bignumbers are immutable\n },\n bigint: function bigint(x) {\n return x;\n },\n Fraction: function Fraction(x) {\n return x; // fractions are immutable\n },\n Unit: function Unit(x) {\n return x.clone();\n },\n // deep map collection, skip zeros since unaryPlus(0) = 0\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self, true)),\n boolean: function boolean(x) {\n return numeric(x ? 1 : 0, config.number);\n },\n string: function string(x) {\n return numeric(x, safeNumberType(x, config));\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { absNumber } from '../../plain/number/index.js';\nvar name = 'abs';\nvar dependencies = ['typed'];\nexport var createAbs = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Calculate the absolute value of a number. For matrices, the function is\n * evaluated element wise.\n *\n * Syntax:\n *\n * math.abs(x)\n *\n * Examples:\n *\n * math.abs(3.5) // returns number 3.5\n * math.abs(-4.2) // returns number 4.2\n *\n * math.abs([3, -5, -1, 0, 2]) // returns Array [3, 5, 1, 0, 2]\n *\n * See also:\n *\n * sign\n *\n * @param {number | BigNumber | bigint | Fraction | Complex | Array | Matrix | Unit} x\n * A number or matrix for which to get the absolute value\n * @return {number | BigNumber | bigint | Fraction | Complex | Array | Matrix | Unit}\n * Absolute value of `x`\n */\n return typed(name, {\n number: absNumber,\n 'Complex | BigNumber | Fraction | Unit': x => x.abs(),\n bigint: x => x < 0n ? -x : x,\n // deep map collection, skip zeros since abs(0) = 0\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self, true))\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { arraySize } from '../../utils/array.js';\nimport { isMatrix } from '../../utils/is.js';\nimport { IndexError } from '../../error/IndexError.js';\nvar name = 'apply';\nvar dependencies = ['typed', 'isInteger'];\nexport var createApply = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n isInteger\n } = _ref;\n /**\n * Apply a function that maps an array to a scalar\n * along a given axis of a matrix or array.\n * Returns a new matrix or array with one less dimension than the input.\n *\n * Syntax:\n *\n * math.apply(A, dim, callback)\n *\n * Where:\n *\n * - `dim: number` is a zero-based dimension over which to concatenate the matrices.\n *\n * Examples:\n *\n * const A = [[1, 2], [3, 4]]\n * const sum = math.sum\n *\n * math.apply(A, 0, sum) // returns [4, 6]\n * math.apply(A, 1, sum) // returns [3, 7]\n *\n * See also:\n *\n * map, filter, forEach\n *\n * @param {Array | Matrix} array The input Matrix\n * @param {number} dim The dimension along which the callback is applied\n * @param {Function} callback The callback function that is applied. This Function\n * should take an array or 1-d matrix as an input and\n * return a number.\n * @return {Array | Matrix} res The residual matrix with the function applied over some dimension.\n */\n return typed(name, {\n 'Array | Matrix, number | BigNumber, function': function Array__Matrix_number__BigNumber_function(mat, dim, callback) {\n if (!isInteger(dim)) {\n throw new TypeError('Integer number expected for dimension');\n }\n var size = Array.isArray(mat) ? arraySize(mat) : mat.size();\n if (dim < 0 || dim >= size.length) {\n throw new IndexError(dim, size.length);\n }\n if (isMatrix(mat)) {\n return mat.create(_apply(mat.valueOf(), dim, callback), mat.datatype());\n } else {\n return _apply(mat, dim, callback);\n }\n }\n });\n});\n\n/**\n * Recursively reduce a matrix\n * @param {Array} mat\n * @param {number} dim\n * @param {Function} callback\n * @returns {Array} ret\n * @private\n */\nfunction _apply(mat, dim, callback) {\n var i, ret, tran;\n if (dim <= 0) {\n if (!Array.isArray(mat[0])) {\n return callback(mat);\n } else {\n tran = _switch(mat);\n ret = [];\n for (i = 0; i < tran.length; i++) {\n ret[i] = _apply(tran[i], dim - 1, callback);\n }\n return ret;\n }\n } else {\n ret = [];\n for (i = 0; i < mat.length; i++) {\n ret[i] = _apply(mat[i], dim - 1, callback);\n }\n return ret;\n }\n}\n\n/**\n * Transpose a matrix\n * @param {Array} mat\n * @returns {Array} ret\n * @private\n */\nfunction _switch(mat) {\n var I = mat.length;\n var J = mat[0].length;\n var i, j;\n var ret = [];\n for (j = 0; j < J; j++) {\n var tmp = [];\n for (i = 0; i < I; i++) {\n tmp.push(mat[i][j]);\n }\n ret.push(tmp);\n }\n return ret;\n}", "import { factory } from '../../utils/factory.js';\nimport { addNumber } from '../../plain/number/index.js';\nvar name = 'addScalar';\nvar dependencies = ['typed'];\nexport var createAddScalar = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Add two scalar values, `x + y`.\n * This function is meant for internal use: it is used by the public function\n * `add`\n *\n * This function does not support collections (Array or Matrix).\n *\n * @param {number | BigNumber | bigint | Fraction | Complex | Unit} x First value to add\n * @param {number | BigNumber | bigint | Fraction | Complex} y Second value to add\n * @return {number | BigNumber | bigint | Fraction | Complex | Unit} Sum of `x` and `y`\n * @private\n */\n return typed(name, {\n 'number, number': addNumber,\n 'Complex, Complex': function Complex_Complex(x, y) {\n return x.add(y);\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n return x.plus(y);\n },\n 'bigint, bigint': function bigint_bigint(x, y) {\n return x + y;\n },\n 'Fraction, Fraction': function Fraction_Fraction(x, y) {\n return x.add(y);\n },\n 'Unit, Unit': typed.referToSelf(self => (x, y) => {\n if (x.value === null || x.value === undefined) {\n throw new Error('Parameter x contains a unit with undefined value');\n }\n if (y.value === null || y.value === undefined) {\n throw new Error('Parameter y contains a unit with undefined value');\n }\n if (!x.equalBase(y)) throw new Error('Units do not match');\n var res = x.clone();\n res.value = typed.find(self, [res.valueType(), y.valueType()])(res.value, y.value);\n res.fixPrefix = false;\n return res;\n })\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { subtractNumber } from '../../plain/number/index.js';\nvar name = 'subtractScalar';\nvar dependencies = ['typed'];\nexport var createSubtractScalar = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Subtract two scalar values, `x - y`.\n * This function is meant for internal use: it is used by the public function\n * `subtract`\n *\n * This function does not support collections (Array or Matrix).\n *\n * @param {number | BigNumber | bigint | Fraction | Complex | Unit} x First value\n * @param {number | BigNumber | bigint | Fraction | Complex} y Second value to be subtracted from `x`\n * @return {number | BigNumber | bigint | Fraction | Complex | Unit} Difference of `x` and `y`\n * @private\n */\n return typed(name, {\n 'number, number': subtractNumber,\n 'Complex, Complex': function Complex_Complex(x, y) {\n return x.sub(y);\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n return x.minus(y);\n },\n 'bigint, bigint': function bigint_bigint(x, y) {\n return x - y;\n },\n 'Fraction, Fraction': function Fraction_Fraction(x, y) {\n return x.sub(y);\n },\n 'Unit, Unit': typed.referToSelf(self => (x, y) => {\n if (x.value === null || x.value === undefined) {\n throw new Error('Parameter x contains a unit with undefined value');\n }\n if (y.value === null || y.value === undefined) {\n throw new Error('Parameter y contains a unit with undefined value');\n }\n if (!x.equalBase(y)) throw new Error('Units do not match');\n var res = x.clone();\n res.value = typed.find(self, [res.valueType(), y.valueType()])(res.value, y.value);\n res.fixPrefix = false;\n return res;\n })\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { isBigNumber, isComplex, isFraction } from '../../utils/is.js';\nimport { cbrtNumber } from '../../plain/number/index.js';\nvar name = 'cbrt';\nvar dependencies = ['config', 'typed', 'isNegative', 'unaryMinus', 'matrix', 'Complex', 'BigNumber', 'Fraction'];\nexport var createCbrt = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n config,\n typed,\n isNegative,\n unaryMinus,\n matrix,\n Complex,\n BigNumber,\n Fraction\n } = _ref;\n /**\n * Calculate the cubic root of a value.\n *\n * To avoid confusion with the matrix cube root, this function does not\n * apply to matrices. For a matrix, to take the cube root elementwise,\n * see the examples.\n *\n * Syntax:\n *\n * math.cbrt(x)\n * math.cbrt(x, allRoots)\n *\n * Examples:\n *\n * math.cbrt(27) // returns 3\n * math.cube(3) // returns 27\n * math.cbrt(-64) // returns -4\n * math.cbrt(math.unit('27 m^3')) // returns Unit 3 m\n * math.map([27, 64, 125], x => math.cbrt(x)) // returns [3, 4, 5]\n *\n * const x = math.complex('8i')\n * math.cbrt(x) // returns Complex 1.7320508075689 + i\n * math.cbrt(x, true) // returns Matrix [\n * // 1.7320508075689 + i\n * // -1.7320508075689 + i\n * // -2i\n * // ]\n *\n * See also:\n *\n * square, sqrt, cube\n *\n * @param {number | BigNumber | Complex | Unit} x\n * Value for which to calculate the cubic root.\n * @param {boolean} [allRoots] Optional, false by default. Only applicable\n * when `x` is a number or complex number. If true, all complex\n * roots are returned, if false (default) the principal root is\n * returned.\n * @return {number | BigNumber | Complex | Unit}\n * Returns the cubic root of `x`\n */\n return typed(name, {\n number: cbrtNumber,\n // note: signature 'number, boolean' is also supported,\n // created by typed as it knows how to convert number to Complex\n\n Complex: _cbrtComplex,\n 'Complex, boolean': _cbrtComplex,\n BigNumber: function BigNumber(x) {\n return x.cbrt();\n },\n Unit: _cbrtUnit\n });\n\n /**\n * Calculate the cubic root for a complex number\n * @param {Complex} x\n * @param {boolean} [allRoots] If true, the function will return an array\n * with all three roots. If false or undefined,\n * the principal root is returned.\n * @returns {Complex | Array. | Matrix.} Returns the cubic root(s) of x\n * @private\n */\n function _cbrtComplex(x, allRoots) {\n // https://www.wikiwand.com/en/Cube_root#/Complex_numbers\n\n var arg3 = x.arg() / 3;\n var abs = x.abs();\n\n // principal root:\n var principal = new Complex(cbrtNumber(abs), 0).mul(new Complex(0, arg3).exp());\n if (allRoots) {\n var all = [principal, new Complex(cbrtNumber(abs), 0).mul(new Complex(0, arg3 + Math.PI * 2 / 3).exp()), new Complex(cbrtNumber(abs), 0).mul(new Complex(0, arg3 - Math.PI * 2 / 3).exp())];\n return config.matrix === 'Array' ? all : matrix(all);\n } else {\n return principal;\n }\n }\n\n /**\n * Calculate the cubic root for a Unit\n * @param {Unit} x\n * @return {Unit} Returns the cubic root of x\n * @private\n */\n function _cbrtUnit(x) {\n if (x.value && isComplex(x.value)) {\n var result = x.clone();\n result.value = 1.0;\n result = result.pow(1.0 / 3); // Compute the units\n result.value = _cbrtComplex(x.value); // Compute the value\n return result;\n } else {\n var negate = isNegative(x.value);\n if (negate) {\n x.value = unaryMinus(x.value);\n }\n\n // TODO: create a helper function for this\n var third;\n if (isBigNumber(x.value)) {\n third = new BigNumber(1).div(3);\n } else if (isFraction(x.value)) {\n third = new Fraction(1, 3);\n } else {\n third = 1 / 3;\n }\n var _result = x.pow(third);\n if (negate) {\n _result.value = unaryMinus(_result.value);\n }\n return _result;\n }\n }\n});", "import { factory } from '../../../utils/factory.js';\nvar name = 'matAlgo11xS0s';\nvar dependencies = ['typed', 'equalScalar'];\nexport var createMatAlgo11xS0s = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar\n } = _ref;\n /**\n * Iterates over SparseMatrix S nonzero items and invokes the callback function f(Sij, b).\n * Callback function invoked NZ times (number of nonzero items in S).\n *\n *\n * \u250C f(Sij, b) ; S(i,j) !== 0\n * C(i,j) = \u2524\n * \u2514 0 ; otherwise\n *\n *\n * @param {Matrix} s The SparseMatrix instance (S)\n * @param {Scalar} b The Scalar value\n * @param {Function} callback The f(Aij,b) operation to invoke\n * @param {boolean} inverse A true value indicates callback should be invoked f(b,Sij)\n *\n * @return {Matrix} SparseMatrix (C)\n *\n * https://github.com/josdejong/mathjs/pull/346#issuecomment-97626813\n */\n return function matAlgo11xS0s(s, b, callback, inverse) {\n // sparse matrix arrays\n var avalues = s._values;\n var aindex = s._index;\n var aptr = s._ptr;\n var asize = s._size;\n var adt = s._datatype;\n\n // sparse matrix cannot be a Pattern matrix\n if (!avalues) {\n throw new Error('Cannot perform operation on Pattern Sparse Matrix and Scalar value');\n }\n\n // rows & columns\n var rows = asize[0];\n var columns = asize[1];\n\n // datatype\n var dt;\n // equal signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n // callback signature to use\n var cf = callback;\n\n // process data types\n if (typeof adt === 'string') {\n // datatype\n dt = adt;\n // find signature that matches (dt, dt)\n eq = typed.find(equalScalar, [dt, dt]);\n // convert 0 to the same datatype\n zero = typed.convert(0, dt);\n // convert b to the same datatype\n b = typed.convert(b, dt);\n // callback\n cf = typed.find(callback, [dt, dt]);\n }\n\n // result arrays\n var cvalues = [];\n var cindex = [];\n var cptr = [];\n\n // loop columns\n for (var j = 0; j < columns; j++) {\n // initialize ptr\n cptr[j] = cindex.length;\n // values in j\n for (var k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {\n // row\n var i = aindex[k];\n // invoke callback\n var v = inverse ? cf(b, avalues[k]) : cf(avalues[k], b);\n // check value is zero\n if (!eq(v, zero)) {\n // push index & value\n cindex.push(i);\n cvalues.push(v);\n }\n }\n }\n // update ptr\n cptr[columns] = cindex.length;\n\n // return sparse matrix\n return s.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [rows, columns],\n datatype: dt\n });\n };\n});", "import { factory } from '../../../utils/factory.js';\nvar name = 'matAlgo12xSfs';\nvar dependencies = ['typed', 'DenseMatrix'];\nexport var createMatAlgo12xSfs = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n DenseMatrix\n } = _ref;\n /**\n * Iterates over SparseMatrix S nonzero items and invokes the callback function f(Sij, b).\n * Callback function invoked MxN times.\n *\n *\n * \u250C f(Sij, b) ; S(i,j) !== 0\n * C(i,j) = \u2524\n * \u2514 f(0, b) ; otherwise\n *\n *\n * @param {Matrix} s The SparseMatrix instance (S)\n * @param {Scalar} b The Scalar value\n * @param {Function} callback The f(Aij,b) operation to invoke\n * @param {boolean} inverse A true value indicates callback should be invoked f(b,Sij)\n *\n * @return {Matrix} DenseMatrix (C)\n *\n * https://github.com/josdejong/mathjs/pull/346#issuecomment-97626813\n */\n return function matAlgo12xSfs(s, b, callback, inverse) {\n // sparse matrix arrays\n var avalues = s._values;\n var aindex = s._index;\n var aptr = s._ptr;\n var asize = s._size;\n var adt = s._datatype;\n\n // sparse matrix cannot be a Pattern matrix\n if (!avalues) {\n throw new Error('Cannot perform operation on Pattern Sparse Matrix and Scalar value');\n }\n\n // rows & columns\n var rows = asize[0];\n var columns = asize[1];\n\n // datatype\n var dt;\n // callback signature to use\n var cf = callback;\n\n // process data types\n if (typeof adt === 'string') {\n // datatype\n dt = adt;\n // convert b to the same datatype\n b = typed.convert(b, dt);\n // callback\n cf = typed.find(callback, [dt, dt]);\n }\n\n // result arrays\n var cdata = [];\n\n // workspaces\n var x = [];\n // marks indicating we have a value in x for a given column\n var w = [];\n\n // loop columns\n for (var j = 0; j < columns; j++) {\n // columns mark\n var mark = j + 1;\n // values in j\n for (var k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {\n // row\n var r = aindex[k];\n // update workspace\n x[r] = avalues[k];\n w[r] = mark;\n }\n // loop rows\n for (var i = 0; i < rows; i++) {\n // initialize C on first column\n if (j === 0) {\n // create row array\n cdata[i] = [];\n }\n // check sparse matrix has a value @ i,j\n if (w[i] === mark) {\n // invoke callback, update C\n cdata[i][j] = inverse ? cf(b, x[i]) : cf(x[i], b);\n } else {\n // dense matrix value @ i, j\n cdata[i][j] = inverse ? cf(b, 0) : cf(0, b);\n }\n }\n }\n\n // return dense matrix\n return new DenseMatrix({\n data: cdata,\n size: [rows, columns],\n datatype: dt\n });\n };\n});", "import { factory } from '../../../utils/factory.js';\nimport { clone } from '../../../utils/object.js';\nvar name = 'matAlgo14xDs';\nvar dependencies = ['typed'];\nexport var createMatAlgo14xDs = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Iterates over DenseMatrix items and invokes the callback function f(Aij..z, b).\n * Callback function invoked MxN times.\n *\n * C(i,j,...z) = f(Aij..z, b)\n *\n * @param {Matrix} a The DenseMatrix instance (A)\n * @param {Scalar} b The Scalar value\n * @param {Function} callback The f(Aij..z,b) operation to invoke\n * @param {boolean} inverse A true value indicates callback should be invoked f(b,Aij..z)\n *\n * @return {Matrix} DenseMatrix (C)\n *\n * https://github.com/josdejong/mathjs/pull/346#issuecomment-97659042\n */\n return function matAlgo14xDs(a, b, callback, inverse) {\n // a arrays\n var adata = a._data;\n var asize = a._size;\n var adt = a._datatype;\n\n // datatype\n var dt;\n // callback signature to use\n var cf = callback;\n\n // process data types\n if (typeof adt === 'string') {\n // datatype\n dt = adt;\n // convert b to the same datatype\n b = typed.convert(b, dt);\n // callback\n cf = typed.find(callback, [dt, dt]);\n }\n\n // populate cdata, iterate through dimensions\n var cdata = asize.length > 0 ? _iterate(cf, 0, asize, asize[0], adata, b, inverse) : [];\n\n // c matrix\n return a.createDenseMatrix({\n data: cdata,\n size: clone(asize),\n datatype: dt\n });\n };\n\n // recursive function\n function _iterate(f, level, s, n, av, bv, inverse) {\n // initialize array for this level\n var cv = [];\n // check we reach the last level\n if (level === s.length - 1) {\n // loop arrays in last level\n for (var i = 0; i < n; i++) {\n // invoke callback and store value\n cv[i] = inverse ? f(bv, av[i]) : f(av[i], bv);\n }\n } else {\n // iterate current level\n for (var j = 0; j < n; j++) {\n // iterate next level\n cv[j] = _iterate(f, level + 1, s, s[level + 1], av[j], bv, inverse);\n }\n }\n return cv;\n }\n});", "import Decimal from 'decimal.js';\nimport { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { nearlyEqual } from '../../utils/number.js';\nimport { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';\nvar name = 'ceil';\nvar dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix'];\nexport var createCeilNumber = /* #__PURE__ */factory(name, ['typed', 'config', 'round'], _ref => {\n var {\n typed,\n config,\n round\n } = _ref;\n return typed(name, {\n number: function number(x) {\n if (nearlyEqual(x, round(x), config.relTol, config.absTol)) {\n return round(x);\n } else {\n return Math.ceil(x);\n }\n },\n 'number, number': function number_number(x, n) {\n if (nearlyEqual(x, round(x, n), config.relTol, config.absTol)) {\n return round(x, n);\n } else {\n var [number, exponent] = \"\".concat(x, \"e\").split('e');\n var result = Math.ceil(Number(\"\".concat(number, \"e\").concat(Number(exponent) + n)));\n [number, exponent] = \"\".concat(result, \"e\").split('e');\n return Number(\"\".concat(number, \"e\").concat(Number(exponent) - n));\n }\n }\n });\n});\nexport var createCeil = /* #__PURE__ */factory(name, dependencies, _ref2 => {\n var {\n typed,\n config,\n round,\n matrix,\n equalScalar,\n zeros,\n DenseMatrix\n } = _ref2;\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matAlgo14xDs = createMatAlgo14xDs({\n typed\n });\n var ceilNumber = createCeilNumber({\n typed,\n config,\n round\n });\n /**\n * Round a value towards plus infinity\n * If `x` is complex, both real and imaginary part are rounded towards plus infinity.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.ceil(x)\n * math.ceil(x, n)\n *\n * Examples:\n *\n * math.ceil(3.2) // returns number 4\n * math.ceil(3.8) // returns number 4\n * math.ceil(-4.2) // returns number -4\n * math.ceil(-4.7) // returns number -4\n *\n * math.ceil(3.212, 2) // returns number 3.22\n * math.ceil(3.288, 2) // returns number 3.29\n * math.ceil(-4.212, 2) // returns number -4.21\n * math.ceil(-4.782, 2) // returns number -4.78\n *\n * const c = math.complex(3.24, -2.71)\n * math.ceil(c) // returns Complex 4 - 2i\n * math.ceil(c, 1) // returns Complex 3.3 - 2.7i\n *\n * math.ceil([3.2, 3.8, -4.7]) // returns Array [4, 4, -4]\n * math.ceil([3.21, 3.82, -4.71], 1) // returns Array [3.3, 3.9, -4.7]\n *\n * See also:\n *\n * floor, fix, round\n *\n * @param {number | BigNumber | Fraction | Complex | Array | Matrix} x Number to be rounded\n * @param {number | BigNumber | Array} [n=0] Number of decimals\n * @return {number | BigNumber | Fraction | Complex | Array | Matrix} Rounded value\n */\n return typed('ceil', {\n number: ceilNumber.signatures.number,\n 'number,number': ceilNumber.signatures['number,number'],\n Complex: function Complex(x) {\n return x.ceil();\n },\n 'Complex, number': function Complex_number(x, n) {\n return x.ceil(n);\n },\n 'Complex, BigNumber': function Complex_BigNumber(x, n) {\n return x.ceil(n.toNumber());\n },\n BigNumber: function BigNumber(x) {\n if (bigNearlyEqual(x, round(x), config.relTol, config.absTol)) {\n return round(x);\n } else {\n return x.ceil();\n }\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, n) {\n if (bigNearlyEqual(x, round(x, n), config.relTol, config.absTol)) {\n return round(x, n);\n } else {\n return x.toDecimalPlaces(n.toNumber(), Decimal.ROUND_CEIL);\n }\n },\n Fraction: function Fraction(x) {\n return x.ceil();\n },\n 'Fraction, number': function Fraction_number(x, n) {\n return x.ceil(n);\n },\n 'Fraction, BigNumber': function Fraction_BigNumber(x, n) {\n return x.ceil(n.toNumber());\n },\n 'Array | Matrix': typed.referToSelf(self => x => {\n // deep map collection, skip zeros since ceil(0) = 0\n return deepMap(x, self, true);\n }),\n 'Array, number | BigNumber': typed.referToSelf(self => (x, n) => {\n // deep map collection, skip zeros since ceil(0) = 0\n return deepMap(x, i => self(i, n), true);\n }),\n 'SparseMatrix, number | BigNumber': typed.referToSelf(self => (x, y) => {\n return matAlgo11xS0s(x, y, self, false);\n }),\n 'DenseMatrix, number | BigNumber': typed.referToSelf(self => (x, y) => {\n return matAlgo14xDs(x, y, self, false);\n }),\n 'number | Complex | Fraction | BigNumber, Array': typed.referToSelf(self => (x, y) => {\n // use matrix implementation\n return matAlgo14xDs(matrix(y), x, self, true).valueOf();\n }),\n 'number | Complex | Fraction | BigNumber, Matrix': typed.referToSelf(self => (x, y) => {\n if (equalScalar(x, 0)) return zeros(y.size(), y.storage());\n if (y.storage() === 'dense') {\n return matAlgo14xDs(y, x, self, true);\n }\n return matAlgo12xSfs(y, x, self, true);\n })\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { cubeNumber } from '../../plain/number/index.js';\nvar name = 'cube';\nvar dependencies = ['typed'];\nexport var createCube = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Compute the cube of a value, `x * x * x`.\n * To avoid confusion with `pow(M,3)`, this function does not apply to matrices.\n * If you wish to cube every entry of a matrix, see the examples.\n *\n * Syntax:\n *\n * math.cube(x)\n *\n * Examples:\n *\n * math.cube(2) // returns number 8\n * math.pow(2, 3) // returns number 8\n * math.cube(4) // returns number 64\n * 4 * 4 * 4 // returns number 64\n *\n * math.map([1, 2, 3, 4], math.cube) // returns Array [1, 8, 27, 64]\n *\n * See also:\n *\n * multiply, square, pow, cbrt\n *\n * @param {number | BigNumber | bigint | Fraction | Complex | Unit} x Number for which to calculate the cube\n * @return {number | BigNumber | bigint | Fraction | Complex | Unit} Cube of x\n */\n return typed(name, {\n number: cubeNumber,\n Complex: function Complex(x) {\n return x.mul(x).mul(x); // Is faster than pow(x, 3)\n },\n BigNumber: function BigNumber(x) {\n return x.times(x).times(x);\n },\n bigint: function bigint(x) {\n return x * x * x;\n },\n Fraction: function Fraction(x) {\n return x.pow(3); // Is faster than mul()mul()mul()\n },\n Unit: function Unit(x) {\n return x.pow(3);\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { expNumber } from '../../plain/number/index.js';\nvar name = 'exp';\nvar dependencies = ['typed'];\nexport var createExp = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Calculate the exponential of a value.\n * For matrices, if you want the matrix exponential of square matrix, use\n * the `expm` function; if you want to take the exponential of each element,\n * see the examples.\n *\n * Syntax:\n *\n * math.exp(x)\n *\n * Examples:\n *\n * math.exp(2) // returns number 7.3890560989306495\n * math.pow(math.e, 2) // returns number 7.3890560989306495\n * math.log(math.exp(2)) // returns number 2\n *\n * math.map([1, 2, 3], math.exp)\n * // returns Array [\n * // 2.718281828459045,\n * // 7.3890560989306495,\n * // 20.085536923187668\n * // ]\n *\n * See also:\n *\n * expm1, expm, log, pow\n *\n * @param {number | BigNumber | Complex} x A number to exponentiate\n * @return {number | BigNumber | Complex} Exponential of `x`\n */\n return typed(name, {\n number: expNumber,\n Complex: function Complex(x) {\n return x.exp();\n },\n BigNumber: function BigNumber(x) {\n return x.exp();\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { expm1Number } from '../../plain/number/index.js';\nvar name = 'expm1';\nvar dependencies = ['typed', 'Complex'];\nexport var createExpm1 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Complex: _Complex\n } = _ref;\n /**\n * Calculate the value of subtracting 1 from the exponential value.\n * This function is more accurate than `math.exp(x)-1` when `x` is near 0\n * To avoid ambiguity with the matrix exponential `expm`, this function\n * does not operate on matrices; if you wish to apply it elementwise, see\n * the examples.\n *\n * Syntax:\n *\n * math.expm1(x)\n *\n * Examples:\n *\n * math.expm1(2) // returns number 6.38905609893065\n * math.pow(math.e, 2) - 1 // returns number 6.3890560989306495\n * math.expm1(1e-8) // returns number 1.0000000050000001e-8\n * math.exp(1e-8) - 1 // returns number 9.9999999392253e-9\n * math.log(math.expm1(2) + 1) // returns number 2\n *\n * math.map([1, 2, 3], math.expm1)\n * // returns Array [\n * // 1.718281828459045,\n * // 6.3890560989306495,\n * // 19.085536923187668\n * // ]\n *\n * See also:\n *\n * exp, expm, log, pow\n *\n * @param {number | BigNumber | Complex} x The number to exponentiate\n * @return {number | BigNumber | Complex} Exponential of `x`, minus one\n */\n return typed(name, {\n number: expm1Number,\n Complex: function Complex(x) {\n var r = Math.exp(x.re);\n return new _Complex(r * Math.cos(x.im) - 1, r * Math.sin(x.im));\n },\n BigNumber: function BigNumber(x) {\n return x.exp().minus(1);\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';\nvar name = 'fix';\nvar dependencies = ['typed', 'Complex', 'matrix', 'ceil', 'floor', 'equalScalar', 'zeros', 'DenseMatrix'];\nexport var createFixNumber = /* #__PURE__ */factory(name, ['typed', 'ceil', 'floor'], _ref => {\n var {\n typed,\n ceil,\n floor\n } = _ref;\n return typed(name, {\n number: function number(x) {\n return x > 0 ? floor(x) : ceil(x);\n },\n 'number, number': function number_number(x, n) {\n return x > 0 ? floor(x, n) : ceil(x, n);\n }\n });\n});\nexport var createFix = /* #__PURE__ */factory(name, dependencies, _ref2 => {\n var {\n typed,\n Complex: _Complex,\n matrix,\n ceil,\n floor,\n equalScalar,\n zeros,\n DenseMatrix\n } = _ref2;\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matAlgo14xDs = createMatAlgo14xDs({\n typed\n });\n var fixNumber = createFixNumber({\n typed,\n ceil,\n floor\n });\n /**\n * Round a value towards zero.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.fix(x)\n * math.fix(x,n)\n *\n * Examples:\n *\n * math.fix(3.2) // returns number 3\n * math.fix(3.8) // returns number 3\n * math.fix(-4.2) // returns number -4\n * math.fix(-4.7) // returns number -4\n *\n * math.fix(3.12, 1) // returns number 3.1\n * math.fix(3.18, 1) // returns number 3.1\n * math.fix(-4.12, 1) // returns number -4.1\n * math.fix(-4.17, 1) // returns number -4.1\n *\n * const c = math.complex(3.22, -2.78)\n * math.fix(c) // returns Complex 3 - 2i\n * math.fix(c, 1) // returns Complex 3.2 -2.7i\n *\n * math.fix([3.2, 3.8, -4.7]) // returns Array [3, 3, -4]\n * math.fix([3.2, 3.8, -4.7], 1) // returns Array [3.2, 3.8, -4.7]\n *\n * See also:\n *\n * ceil, floor, round\n *\n * @param {number | BigNumber | Fraction | Complex | Array | Matrix} x Number to be rounded\n * @param {number | BigNumber | Array} [n=0] Number of decimals\n * @return {number | BigNumber | Fraction | Complex | Array | Matrix} Rounded value\n */\n return typed('fix', {\n number: fixNumber.signatures.number,\n 'number, number | BigNumber': fixNumber.signatures['number,number'],\n Complex: function Complex(x) {\n return new _Complex(x.re > 0 ? Math.floor(x.re) : Math.ceil(x.re), x.im > 0 ? Math.floor(x.im) : Math.ceil(x.im));\n },\n 'Complex, number': function Complex_number(x, n) {\n return new _Complex(x.re > 0 ? floor(x.re, n) : ceil(x.re, n), x.im > 0 ? floor(x.im, n) : ceil(x.im, n));\n },\n 'Complex, BigNumber': function Complex_BigNumber(x, bn) {\n var n = bn.toNumber();\n return new _Complex(x.re > 0 ? floor(x.re, n) : ceil(x.re, n), x.im > 0 ? floor(x.im, n) : ceil(x.im, n));\n },\n BigNumber: function BigNumber(x) {\n return x.isNegative() ? ceil(x) : floor(x);\n },\n 'BigNumber, number | BigNumber': function BigNumber_number__BigNumber(x, n) {\n return x.isNegative() ? ceil(x, n) : floor(x, n);\n },\n Fraction: function Fraction(x) {\n return x.s < 0 ? x.ceil() : x.floor();\n },\n 'Fraction, number | BigNumber': function Fraction_number__BigNumber(x, n) {\n return x.s < 0 ? ceil(x, n) : floor(x, n);\n },\n 'Array | Matrix': typed.referToSelf(self => x => {\n // deep map collection, skip zeros since fix(0) = 0\n return deepMap(x, self, true);\n }),\n 'Array | Matrix, number | BigNumber': typed.referToSelf(self => (x, n) => {\n // deep map collection, skip zeros since fix(0) = 0\n return deepMap(x, i => self(i, n), true);\n }),\n 'number | Complex | Fraction | BigNumber, Array': typed.referToSelf(self => (x, y) => {\n // use matrix implementation\n return matAlgo14xDs(matrix(y), x, self, true).valueOf();\n }),\n 'number | Complex | Fraction | BigNumber, Matrix': typed.referToSelf(self => (x, y) => {\n if (equalScalar(x, 0)) return zeros(y.size(), y.storage());\n if (y.storage() === 'dense') {\n return matAlgo14xDs(y, x, self, true);\n }\n return matAlgo12xSfs(y, x, self, true);\n })\n });\n});", "import Decimal from 'decimal.js';\nimport { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { nearlyEqual } from '../../utils/number.js';\nimport { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';\nvar name = 'floor';\nvar dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix'];\nexport var createFloorNumber = /* #__PURE__ */factory(name, ['typed', 'config', 'round'], _ref => {\n var {\n typed,\n config,\n round\n } = _ref;\n return typed(name, {\n number: function number(x) {\n if (nearlyEqual(x, round(x), config.relTol, config.absTol)) {\n return round(x);\n } else {\n return Math.floor(x);\n }\n },\n 'number, number': function number_number(x, n) {\n if (nearlyEqual(x, round(x, n), config.relTol, config.absTol)) {\n return round(x, n);\n } else {\n var [number, exponent] = \"\".concat(x, \"e\").split('e');\n var result = Math.floor(Number(\"\".concat(number, \"e\").concat(Number(exponent) + n)));\n [number, exponent] = \"\".concat(result, \"e\").split('e');\n return Number(\"\".concat(number, \"e\").concat(Number(exponent) - n));\n }\n }\n });\n});\nexport var createFloor = /* #__PURE__ */factory(name, dependencies, _ref2 => {\n var {\n typed,\n config,\n round,\n matrix,\n equalScalar,\n zeros,\n DenseMatrix\n } = _ref2;\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matAlgo14xDs = createMatAlgo14xDs({\n typed\n });\n var floorNumber = createFloorNumber({\n typed,\n config,\n round\n });\n /**\n * Round a value towards minus infinity.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.floor(x)\n * math.floor(x, n)\n *\n * Examples:\n *\n * math.floor(3.2) // returns number 3\n * math.floor(3.8) // returns number 3\n * math.floor(-4.2) // returns number -5\n * math.floor(-4.7) // returns number -5\n *\n * math.floor(3.212, 2) // returns number 3.21\n * math.floor(3.288, 2) // returns number 3.28\n * math.floor(-4.212, 2) // returns number -4.22\n * math.floor(-4.782, 2) // returns number -4.79\n *\n * const c = math.complex(3.24, -2.71)\n * math.floor(c) // returns Complex 3 - 3i\n * math.floor(c, 1) // returns Complex 3.2 -2.8i\n *\n * math.floor([3.2, 3.8, -4.7]) // returns Array [3, 3, -5]\n * math.floor([3.21, 3.82, -4.71], 1) // returns Array [3.2, 3.8, -4.8]\n *\n * math.floor(math.tau, [2, 3]) // returns Array [6.28, 6.283]\n *\n * // Note that floor(array, array) currently not implemented.\n *\n * See also:\n *\n * ceil, fix, round\n *\n * @param {number | BigNumber | Fraction | Complex | Array | Matrix} x Number to be rounded\n * @param {number | BigNumber | Array} [n=0] Number of decimals\n * @return {number | BigNumber | Fraction | Complex | Array | Matrix} Rounded value\n */\n return typed('floor', {\n number: floorNumber.signatures.number,\n 'number,number': floorNumber.signatures['number,number'],\n Complex: function Complex(x) {\n return x.floor();\n },\n 'Complex, number': function Complex_number(x, n) {\n return x.floor(n);\n },\n 'Complex, BigNumber': function Complex_BigNumber(x, n) {\n return x.floor(n.toNumber());\n },\n BigNumber: function BigNumber(x) {\n if (bigNearlyEqual(x, round(x), config.relTol, config.absTol)) {\n return round(x);\n } else {\n return x.floor();\n }\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, n) {\n if (bigNearlyEqual(x, round(x, n), config.relTol, config.absTol)) {\n return round(x, n);\n } else {\n return x.toDecimalPlaces(n.toNumber(), Decimal.ROUND_FLOOR);\n }\n },\n Fraction: function Fraction(x) {\n return x.floor();\n },\n 'Fraction, number': function Fraction_number(x, n) {\n return x.floor(n);\n },\n 'Fraction, BigNumber': function Fraction_BigNumber(x, n) {\n return x.floor(n.toNumber());\n },\n 'Array | Matrix': typed.referToSelf(self => x => {\n // deep map collection, skip zeros since floor(0) = 0\n return deepMap(x, self, true);\n }),\n 'Array, number | BigNumber': typed.referToSelf(self => (x, n) => {\n // deep map collection, skip zeros since ceil(0) = 0\n return deepMap(x, i => self(i, n), true);\n }),\n 'SparseMatrix, number | BigNumber': typed.referToSelf(self => (x, y) => {\n return matAlgo11xS0s(x, y, self, false);\n }),\n 'DenseMatrix, number | BigNumber': typed.referToSelf(self => (x, y) => {\n return matAlgo14xDs(x, y, self, false);\n }),\n 'number | Complex | Fraction | BigNumber, Array': typed.referToSelf(self => (x, y) => {\n // use matrix implementation\n return matAlgo14xDs(matrix(y), x, self, true).valueOf();\n }),\n 'number | Complex | Fraction | BigNumber, Matrix': typed.referToSelf(self => (x, y) => {\n if (equalScalar(x, 0)) return zeros(y.size(), y.storage());\n if (y.storage() === 'dense') {\n return matAlgo14xDs(y, x, self, true);\n }\n return matAlgo12xSfs(y, x, self, true);\n })\n });\n});", "import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nvar name = 'matAlgo02xDS0';\nvar dependencies = ['typed', 'equalScalar'];\nexport var createMatAlgo02xDS0 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar\n } = _ref;\n /**\n * Iterates over SparseMatrix nonzero items and invokes the callback function f(Dij, Sij).\n * Callback function invoked NNZ times (number of nonzero items in SparseMatrix).\n *\n *\n * \u250C f(Dij, Sij) ; S(i,j) !== 0\n * C(i,j) = \u2524\n * \u2514 0 ; otherwise\n *\n *\n * @param {Matrix} denseMatrix The DenseMatrix instance (D)\n * @param {Matrix} sparseMatrix The SparseMatrix instance (S)\n * @param {Function} callback The f(Dij,Sij) operation to invoke, where Dij = DenseMatrix(i,j) and Sij = SparseMatrix(i,j)\n * @param {boolean} inverse A true value indicates callback should be invoked f(Sij,Dij)\n *\n * @return {Matrix} SparseMatrix (C)\n *\n * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97477571\n */\n return function matAlgo02xDS0(denseMatrix, sparseMatrix, callback, inverse) {\n // dense matrix arrays\n var adata = denseMatrix._data;\n var asize = denseMatrix._size;\n var adt = denseMatrix._datatype || denseMatrix.getDataType();\n // sparse matrix arrays\n var bvalues = sparseMatrix._values;\n var bindex = sparseMatrix._index;\n var bptr = sparseMatrix._ptr;\n var bsize = sparseMatrix._size;\n var bdt = sparseMatrix._datatype || sparseMatrix._data === undefined ? sparseMatrix._datatype : sparseMatrix.getDataType();\n\n // validate dimensions\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n }\n\n // check rows & columns\n if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n }\n\n // sparse matrix cannot be a Pattern matrix\n if (!bvalues) {\n throw new Error('Cannot perform operation on Dense Matrix and Pattern Sparse Matrix');\n }\n\n // rows & columns\n var rows = asize[0];\n var columns = asize[1];\n\n // datatype\n var dt;\n // equal signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n // callback signature to use\n var cf = callback;\n\n // process data types\n if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {\n // datatype\n dt = adt;\n // find signature that matches (dt, dt)\n eq = typed.find(equalScalar, [dt, dt]);\n // convert 0 to the same datatype\n zero = typed.convert(0, dt);\n // callback\n cf = typed.find(callback, [dt, dt]);\n }\n\n // result (SparseMatrix)\n var cvalues = [];\n var cindex = [];\n var cptr = [];\n\n // loop columns in b\n for (var j = 0; j < columns; j++) {\n // update cptr\n cptr[j] = cindex.length;\n // values in column j\n for (var k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) {\n // row\n var i = bindex[k];\n // update C(i,j)\n var cij = inverse ? cf(bvalues[k], adata[i][j]) : cf(adata[i][j], bvalues[k]);\n // check for nonzero\n if (!eq(cij, zero)) {\n // push i & v\n cindex.push(i);\n cvalues.push(cij);\n }\n }\n }\n // update cptr\n cptr[columns] = cindex.length;\n\n // return sparse matrix\n return sparseMatrix.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [rows, columns],\n datatype: adt === denseMatrix._datatype && bdt === sparseMatrix._datatype ? dt : undefined\n });\n };\n});", "import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nvar name = 'matAlgo03xDSf';\nvar dependencies = ['typed'];\nexport var createMatAlgo03xDSf = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Iterates over SparseMatrix items and invokes the callback function f(Dij, Sij).\n * Callback function invoked M*N times.\n *\n *\n * \u250C f(Dij, Sij) ; S(i,j) !== 0\n * C(i,j) = \u2524\n * \u2514 f(Dij, 0) ; otherwise\n *\n *\n * @param {Matrix} denseMatrix The DenseMatrix instance (D)\n * @param {Matrix} sparseMatrix The SparseMatrix instance (C)\n * @param {Function} callback The f(Dij,Sij) operation to invoke, where Dij = DenseMatrix(i,j) and Sij = SparseMatrix(i,j)\n * @param {boolean} inverse A true value indicates callback should be invoked f(Sij,Dij)\n *\n * @return {Matrix} DenseMatrix (C)\n *\n * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97477571\n */\n return function matAlgo03xDSf(denseMatrix, sparseMatrix, callback, inverse) {\n // dense matrix arrays\n var adata = denseMatrix._data;\n var asize = denseMatrix._size;\n var adt = denseMatrix._datatype || denseMatrix.getDataType();\n // sparse matrix arrays\n var bvalues = sparseMatrix._values;\n var bindex = sparseMatrix._index;\n var bptr = sparseMatrix._ptr;\n var bsize = sparseMatrix._size;\n var bdt = sparseMatrix._datatype || sparseMatrix._data === undefined ? sparseMatrix._datatype : sparseMatrix.getDataType();\n\n // validate dimensions\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n }\n\n // check rows & columns\n if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n }\n\n // sparse matrix cannot be a Pattern matrix\n if (!bvalues) {\n throw new Error('Cannot perform operation on Dense Matrix and Pattern Sparse Matrix');\n }\n\n // rows & columns\n var rows = asize[0];\n var columns = asize[1];\n\n // datatype\n var dt;\n // zero value\n var zero = 0;\n // callback signature to use\n var cf = callback;\n\n // process data types\n if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {\n // datatype\n dt = adt;\n // convert 0 to the same datatype\n zero = typed.convert(0, dt);\n // callback\n cf = typed.find(callback, [dt, dt]);\n }\n\n // result (DenseMatrix)\n var cdata = [];\n\n // initialize dense matrix\n for (var z = 0; z < rows; z++) {\n // initialize row\n cdata[z] = [];\n }\n\n // workspace\n var x = [];\n // marks indicating we have a value in x for a given column\n var w = [];\n\n // loop columns in b\n for (var j = 0; j < columns; j++) {\n // column mark\n var mark = j + 1;\n // values in column j\n for (var k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) {\n // row\n var i = bindex[k];\n // update workspace\n x[i] = inverse ? cf(bvalues[k], adata[i][j]) : cf(adata[i][j], bvalues[k]);\n w[i] = mark;\n }\n // process workspace\n for (var y = 0; y < rows; y++) {\n // check we have a calculated value for current row\n if (w[y] === mark) {\n // use calculated value\n cdata[y][j] = x[y];\n } else {\n // calculate value\n cdata[y][j] = inverse ? cf(zero, adata[y][j]) : cf(adata[y][j], zero);\n }\n }\n }\n\n // return dense matrix\n return denseMatrix.createDenseMatrix({\n data: cdata,\n size: [rows, columns],\n datatype: adt === denseMatrix._datatype && bdt === sparseMatrix._datatype ? dt : undefined\n });\n };\n});", "import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nvar name = 'matAlgo05xSfSf';\nvar dependencies = ['typed', 'equalScalar'];\nexport var createMatAlgo05xSfSf = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar\n } = _ref;\n /**\n * Iterates over SparseMatrix A and SparseMatrix B nonzero items and invokes the callback function f(Aij, Bij).\n * Callback function invoked MAX(NNZA, NNZB) times\n *\n *\n * \u250C f(Aij, Bij) ; A(i,j) !== 0 || B(i,j) !== 0\n * C(i,j) = \u2524\n * \u2514 0 ; otherwise\n *\n *\n * @param {Matrix} a The SparseMatrix instance (A)\n * @param {Matrix} b The SparseMatrix instance (B)\n * @param {Function} callback The f(Aij,Bij) operation to invoke\n *\n * @return {Matrix} SparseMatrix (C)\n *\n * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294\n */\n return function matAlgo05xSfSf(a, b, callback) {\n // sparse matrix arrays\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n var asize = a._size;\n var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();\n // sparse matrix arrays\n var bvalues = b._values;\n var bindex = b._index;\n var bptr = b._ptr;\n var bsize = b._size;\n var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();\n\n // validate dimensions\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n }\n\n // check rows & columns\n if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n }\n\n // rows & columns\n var rows = asize[0];\n var columns = asize[1];\n\n // datatype\n var dt;\n // equal signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n // callback signature to use\n var cf = callback;\n\n // process data types\n if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {\n // datatype\n dt = adt;\n // find signature that matches (dt, dt)\n eq = typed.find(equalScalar, [dt, dt]);\n // convert 0 to the same datatype\n zero = typed.convert(0, dt);\n // callback\n cf = typed.find(callback, [dt, dt]);\n }\n\n // result arrays\n var cvalues = avalues && bvalues ? [] : undefined;\n var cindex = [];\n var cptr = [];\n\n // workspaces\n var xa = cvalues ? [] : undefined;\n var xb = cvalues ? [] : undefined;\n // marks indicating we have a value in x for a given column\n var wa = [];\n var wb = [];\n\n // vars\n var i, j, k, k1;\n\n // loop columns\n for (j = 0; j < columns; j++) {\n // update cptr\n cptr[j] = cindex.length;\n // columns mark\n var mark = j + 1;\n // loop values A(:,j)\n for (k = aptr[j], k1 = aptr[j + 1]; k < k1; k++) {\n // row\n i = aindex[k];\n // push index\n cindex.push(i);\n // update workspace\n wa[i] = mark;\n // check we need to process values\n if (xa) {\n xa[i] = avalues[k];\n }\n }\n // loop values B(:,j)\n for (k = bptr[j], k1 = bptr[j + 1]; k < k1; k++) {\n // row\n i = bindex[k];\n // check row existed in A\n if (wa[i] !== mark) {\n // push index\n cindex.push(i);\n }\n // update workspace\n wb[i] = mark;\n // check we need to process values\n if (xb) {\n xb[i] = bvalues[k];\n }\n }\n // check we need to process values (non pattern matrix)\n if (cvalues) {\n // initialize first index in j\n k = cptr[j];\n // loop index in j\n while (k < cindex.length) {\n // row\n i = cindex[k];\n // marks\n var wai = wa[i];\n var wbi = wb[i];\n // check Aij or Bij are nonzero\n if (wai === mark || wbi === mark) {\n // matrix values @ i,j\n var va = wai === mark ? xa[i] : zero;\n var vb = wbi === mark ? xb[i] : zero;\n // Cij\n var vc = cf(va, vb);\n // check for zero\n if (!eq(vc, zero)) {\n // push value\n cvalues.push(vc);\n // increment pointer\n k++;\n } else {\n // remove value @ i, do not increment pointer\n cindex.splice(k, 1);\n }\n }\n }\n }\n }\n // update cptr\n cptr[columns] = cindex.length;\n\n // return sparse matrix\n return a.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [rows, columns],\n datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined\n });\n };\n});", "import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nvar name = 'matAlgo13xDD';\nvar dependencies = ['typed'];\nexport var createMatAlgo13xDD = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Iterates over DenseMatrix items and invokes the callback function f(Aij..z, Bij..z).\n * Callback function invoked MxN times.\n *\n * C(i,j,...z) = f(Aij..z, Bij..z)\n *\n * @param {Matrix} a The DenseMatrix instance (A)\n * @param {Matrix} b The DenseMatrix instance (B)\n * @param {Function} callback The f(Aij..z,Bij..z) operation to invoke\n *\n * @return {Matrix} DenseMatrix (C)\n *\n * https://github.com/josdejong/mathjs/pull/346#issuecomment-97658658\n */\n return function matAlgo13xDD(a, b, callback) {\n // a arrays\n var adata = a._data;\n var asize = a._size;\n var adt = a._datatype;\n // b arrays\n var bdata = b._data;\n var bsize = b._size;\n var bdt = b._datatype;\n // c arrays\n var csize = [];\n\n // validate dimensions\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n }\n\n // validate each one of the dimension sizes\n for (var s = 0; s < asize.length; s++) {\n // must match\n if (asize[s] !== bsize[s]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n }\n // update dimension in c\n csize[s] = asize[s];\n }\n\n // datatype\n var dt;\n // callback signature to use\n var cf = callback;\n\n // process data types\n if (typeof adt === 'string' && adt === bdt) {\n // datatype\n dt = adt;\n // callback\n cf = typed.find(callback, [dt, dt]);\n }\n\n // populate cdata, iterate through dimensions\n var cdata = csize.length > 0 ? _iterate(cf, 0, csize, csize[0], adata, bdata) : [];\n\n // c matrix\n return a.createDenseMatrix({\n data: cdata,\n size: csize,\n datatype: dt\n });\n };\n\n // recursive function\n function _iterate(f, level, s, n, av, bv) {\n // initialize array for this level\n var cv = [];\n // check we reach the last level\n if (level === s.length - 1) {\n // loop arrays in last level\n for (var i = 0; i < n; i++) {\n // invoke callback and store value\n cv[i] = f(av[i], bv[i]);\n }\n } else {\n // iterate current level\n for (var j = 0; j < n; j++) {\n // iterate next level\n cv[j] = _iterate(f, level + 1, s, s[level + 1], av[j], bv[j]);\n }\n }\n return cv;\n }\n});", "import { broadcastSizes, broadcastTo } from '../../../utils/array.js';\nimport { deepStrictEqual } from '../../../utils/object.js';\n\n/**\n* Broadcasts two matrices, and return both in an array\n* It checks if it's possible with broadcasting rules\n*\n* @param {Matrix} A First Matrix\n* @param {Matrix} B Second Matrix\n*\n* @return {Matrix[]} [ broadcastedA, broadcastedB ]\n*/\n\nexport function broadcast(A, B) {\n if (deepStrictEqual(A.size(), B.size())) {\n // If matrices have the same size return them\n return [A, B];\n }\n\n // calculate the broadcasted sizes\n var newSize = broadcastSizes(A.size(), B.size());\n\n // return the array with the two broadcasted matrices\n return [A, B].map(M => _broadcastTo(M, newSize));\n}\n\n/**\n * Broadcasts a matrix to the given size.\n *\n * @param {Matrix} M - The matrix to be broadcasted.\n * @param {number[]} size - The desired size of the broadcasted matrix.\n * @returns {Matrix} The broadcasted matrix.\n * @throws {Error} If the size parameter is not an array of numbers.\n */\nfunction _broadcastTo(M, size) {\n if (deepStrictEqual(M.size(), size)) {\n return M;\n }\n return M.create(broadcastTo(M.valueOf(), size), M.datatype());\n}", "import { factory } from '../../../utils/factory.js';\nimport { extend } from '../../../utils/object.js';\nimport { createMatAlgo13xDD } from './matAlgo13xDD.js';\nimport { createMatAlgo14xDs } from './matAlgo14xDs.js';\nimport { broadcast } from './broadcast.js';\nvar name = 'matrixAlgorithmSuite';\nvar dependencies = ['typed', 'matrix'];\nexport var createMatrixAlgorithmSuite = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix\n } = _ref;\n var matAlgo13xDD = createMatAlgo13xDD({\n typed\n });\n var matAlgo14xDs = createMatAlgo14xDs({\n typed\n });\n\n /**\n * Return a signatures object with the usual boilerplate of\n * matrix algorithms, based on a plain options object with the\n * following properties:\n * elop: function -- the elementwise operation to use, defaults to self\n * SS: function -- the algorithm to apply for two sparse matrices\n * DS: function -- the algorithm to apply for a dense and a sparse matrix\n * SD: function -- algo for a sparse and a dense; defaults to SD flipped\n * Ss: function -- the algorithm to apply for a sparse matrix and scalar\n * sS: function -- algo for scalar and sparse; defaults to Ss flipped\n * scalar: string -- typed-function type for scalars, defaults to 'any'\n *\n * If Ss is not specified, no matrix-scalar signatures are generated.\n *\n * @param {object} options\n * @return {Object} signatures\n */\n return function matrixAlgorithmSuite(options) {\n var elop = options.elop;\n var SD = options.SD || options.DS;\n var matrixSignatures;\n if (elop) {\n // First the dense ones\n matrixSignatures = {\n 'DenseMatrix, DenseMatrix': (x, y) => matAlgo13xDD(...broadcast(x, y), elop),\n 'Array, Array': (x, y) => matAlgo13xDD(...broadcast(matrix(x), matrix(y)), elop).valueOf(),\n 'Array, DenseMatrix': (x, y) => matAlgo13xDD(...broadcast(matrix(x), y), elop),\n 'DenseMatrix, Array': (x, y) => matAlgo13xDD(...broadcast(x, matrix(y)), elop)\n };\n // Now incorporate sparse matrices\n if (options.SS) {\n matrixSignatures['SparseMatrix, SparseMatrix'] = (x, y) => options.SS(...broadcast(x, y), elop, false);\n }\n if (options.DS) {\n matrixSignatures['DenseMatrix, SparseMatrix'] = (x, y) => options.DS(...broadcast(x, y), elop, false);\n matrixSignatures['Array, SparseMatrix'] = (x, y) => options.DS(...broadcast(matrix(x), y), elop, false);\n }\n if (SD) {\n matrixSignatures['SparseMatrix, DenseMatrix'] = (x, y) => SD(...broadcast(y, x), elop, true);\n matrixSignatures['SparseMatrix, Array'] = (x, y) => SD(...broadcast(matrix(y), x), elop, true);\n }\n } else {\n // No elop, use this\n // First the dense ones\n matrixSignatures = {\n 'DenseMatrix, DenseMatrix': typed.referToSelf(self => (x, y) => {\n return matAlgo13xDD(...broadcast(x, y), self);\n }),\n 'Array, Array': typed.referToSelf(self => (x, y) => {\n return matAlgo13xDD(...broadcast(matrix(x), matrix(y)), self).valueOf();\n }),\n 'Array, DenseMatrix': typed.referToSelf(self => (x, y) => {\n return matAlgo13xDD(...broadcast(matrix(x), y), self);\n }),\n 'DenseMatrix, Array': typed.referToSelf(self => (x, y) => {\n return matAlgo13xDD(...broadcast(x, matrix(y)), self);\n })\n };\n // Now incorporate sparse matrices\n if (options.SS) {\n matrixSignatures['SparseMatrix, SparseMatrix'] = typed.referToSelf(self => (x, y) => {\n return options.SS(...broadcast(x, y), self, false);\n });\n }\n if (options.DS) {\n matrixSignatures['DenseMatrix, SparseMatrix'] = typed.referToSelf(self => (x, y) => {\n return options.DS(...broadcast(x, y), self, false);\n });\n matrixSignatures['Array, SparseMatrix'] = typed.referToSelf(self => (x, y) => {\n return options.DS(...broadcast(matrix(x), y), self, false);\n });\n }\n if (SD) {\n matrixSignatures['SparseMatrix, DenseMatrix'] = typed.referToSelf(self => (x, y) => {\n return SD(...broadcast(y, x), self, true);\n });\n matrixSignatures['SparseMatrix, Array'] = typed.referToSelf(self => (x, y) => {\n return SD(...broadcast(matrix(y), x), self, true);\n });\n }\n }\n\n // Now add the scalars\n var scalar = options.scalar || 'any';\n var Ds = options.Ds || options.Ss;\n if (Ds) {\n if (elop) {\n matrixSignatures['DenseMatrix,' + scalar] = (x, y) => matAlgo14xDs(x, y, elop, false);\n matrixSignatures[scalar + ', DenseMatrix'] = (x, y) => matAlgo14xDs(y, x, elop, true);\n matrixSignatures['Array,' + scalar] = (x, y) => matAlgo14xDs(matrix(x), y, elop, false).valueOf();\n matrixSignatures[scalar + ', Array'] = (x, y) => matAlgo14xDs(matrix(y), x, elop, true).valueOf();\n } else {\n matrixSignatures['DenseMatrix,' + scalar] = typed.referToSelf(self => (x, y) => {\n return matAlgo14xDs(x, y, self, false);\n });\n matrixSignatures[scalar + ', DenseMatrix'] = typed.referToSelf(self => (x, y) => {\n return matAlgo14xDs(y, x, self, true);\n });\n matrixSignatures['Array,' + scalar] = typed.referToSelf(self => (x, y) => {\n return matAlgo14xDs(matrix(x), y, self, false).valueOf();\n });\n matrixSignatures[scalar + ', Array'] = typed.referToSelf(self => (x, y) => {\n return matAlgo14xDs(matrix(y), x, self, true).valueOf();\n });\n }\n }\n var sS = options.sS !== undefined ? options.sS : options.Ss;\n if (elop) {\n if (options.Ss) {\n matrixSignatures['SparseMatrix,' + scalar] = (x, y) => options.Ss(x, y, elop, false);\n }\n if (sS) {\n matrixSignatures[scalar + ', SparseMatrix'] = (x, y) => sS(y, x, elop, true);\n }\n } else {\n if (options.Ss) {\n matrixSignatures['SparseMatrix,' + scalar] = typed.referToSelf(self => (x, y) => {\n return options.Ss(x, y, self, false);\n });\n }\n if (sS) {\n matrixSignatures[scalar + ', SparseMatrix'] = typed.referToSelf(self => (x, y) => {\n return sS(y, x, self, true);\n });\n }\n }\n // Also pull in the scalar signatures if the operator is a typed function\n if (elop && elop.signatures) {\n extend(matrixSignatures, elop.signatures);\n }\n return matrixSignatures;\n };\n});", "import { factory } from '../../utils/factory.js';\nimport { createFloor } from './floor.js';\nimport { createMatAlgo02xDS0 } from '../../type/matrix/utils/matAlgo02xDS0.js';\nimport { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo05xSfSf } from '../../type/matrix/utils/matAlgo05xSfSf.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nvar name = 'mod';\nvar dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix', 'concat'];\nexport var createMod = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n round,\n matrix,\n equalScalar,\n zeros,\n DenseMatrix,\n concat\n } = _ref;\n var floor = createFloor({\n typed,\n config,\n round,\n matrix,\n equalScalar,\n zeros,\n DenseMatrix\n });\n var matAlgo02xDS0 = createMatAlgo02xDS0({\n typed,\n equalScalar\n });\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo05xSfSf = createMatAlgo05xSfSf({\n typed,\n equalScalar\n });\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Calculates the modulus, the remainder of an integer division.\n *\n * For matrices, the function is evaluated element wise.\n *\n * The modulus is defined as:\n *\n * x - y * floor(x / y)\n *\n * See https://en.wikipedia.org/wiki/Modulo_operation.\n *\n * Syntax:\n *\n * math.mod(x, y)\n *\n * Examples:\n *\n * math.mod(8, 3) // returns 2\n * math.mod(11, 2) // returns 1\n *\n * function isOdd(x) {\n * return math.mod(x, 2) != 0\n * }\n *\n * isOdd(2) // returns false\n * isOdd(3) // returns true\n *\n * See also:\n *\n * divide\n *\n * @param {number | BigNumber | bigint | Fraction | Array | Matrix} x Dividend\n * @param {number | BigNumber | bigint | Fraction | Array | Matrix} y Divisor\n * @return {number | BigNumber | bigint | Fraction | Array | Matrix} Returns the remainder of `x` divided by `y`.\n */\n return typed(name, {\n 'number, number': _modNumber,\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n return y.isZero() ? x : x.sub(y.mul(floor(x.div(y))));\n },\n 'bigint, bigint': function bigint_bigint(x, y) {\n if (y === 0n) {\n return x;\n }\n if (x < 0) {\n var m = x % y;\n return m === 0n ? m : m + y;\n }\n return x % y;\n },\n 'Fraction, Fraction': function Fraction_Fraction(x, y) {\n return y.equals(0) ? x : x.sub(y.mul(floor(x.div(y))));\n }\n }, matrixAlgorithmSuite({\n SS: matAlgo05xSfSf,\n DS: matAlgo03xDSf,\n SD: matAlgo02xDS0,\n Ss: matAlgo11xS0s,\n sS: matAlgo12xSfs\n }));\n\n /**\n * Calculate the modulus of two numbers\n * @param {number} x\n * @param {number} y\n * @returns {number} res\n * @private\n */\n function _modNumber(x, y) {\n // We don't use JavaScript's % operator here as this doesn't work\n // correctly for x < 0 and x === 0\n // see https://en.wikipedia.org/wiki/Modulo_operation\n\n // We use mathjs floor to handle errors associated with\n // precision float approximation\n return y === 0 ? x : x - y * floor(x / y);\n }\n});", "import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nvar name = 'matAlgo01xDSid';\nvar dependencies = ['typed'];\nexport var createMatAlgo01xDSid = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Iterates over SparseMatrix nonzero items and invokes the callback function f(Dij, Sij).\n * Callback function invoked NNZ times (number of nonzero items in SparseMatrix).\n *\n *\n * \u250C f(Dij, Sij) ; S(i,j) !== 0\n * C(i,j) = \u2524\n * \u2514 Dij ; otherwise\n *\n *\n * @param {Matrix} denseMatrix The DenseMatrix instance (D)\n * @param {Matrix} sparseMatrix The SparseMatrix instance (S)\n * @param {Function} callback The f(Dij,Sij) operation to invoke, where Dij = DenseMatrix(i,j) and Sij = SparseMatrix(i,j)\n * @param {boolean} inverse A true value indicates callback should be invoked f(Sij,Dij)\n *\n * @return {Matrix} DenseMatrix (C)\n *\n * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97477571\n */\n return function algorithm1(denseMatrix, sparseMatrix, callback, inverse) {\n // dense matrix arrays\n var adata = denseMatrix._data;\n var asize = denseMatrix._size;\n var adt = denseMatrix._datatype || denseMatrix.getDataType();\n // sparse matrix arrays\n var bvalues = sparseMatrix._values;\n var bindex = sparseMatrix._index;\n var bptr = sparseMatrix._ptr;\n var bsize = sparseMatrix._size;\n var bdt = sparseMatrix._datatype || sparseMatrix._data === undefined ? sparseMatrix._datatype : sparseMatrix.getDataType();\n\n // validate dimensions\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n }\n\n // check rows & columns\n if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n }\n\n // sparse matrix cannot be a Pattern matrix\n if (!bvalues) {\n throw new Error('Cannot perform operation on Dense Matrix and Pattern Sparse Matrix');\n }\n\n // rows & columns\n var rows = asize[0];\n var columns = asize[1];\n\n // process data types\n var dt = typeof adt === 'string' && adt !== 'mixed' && adt === bdt ? adt : undefined;\n // callback function\n var cf = dt ? typed.find(callback, [dt, dt]) : callback;\n\n // vars\n var i, j;\n\n // result (DenseMatrix)\n var cdata = [];\n // initialize c\n for (i = 0; i < rows; i++) {\n cdata[i] = [];\n }\n\n // workspace\n var x = [];\n // marks indicating we have a value in x for a given column\n var w = [];\n\n // loop columns in b\n for (j = 0; j < columns; j++) {\n // column mark\n var mark = j + 1;\n // values in column j\n for (var k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) {\n // row\n i = bindex[k];\n // update workspace\n x[i] = inverse ? cf(bvalues[k], adata[i][j]) : cf(adata[i][j], bvalues[k]);\n // mark i as updated\n w[i] = mark;\n }\n // loop rows\n for (i = 0; i < rows; i++) {\n // check row is in workspace\n if (w[i] === mark) {\n // c[i][j] was already calculated\n cdata[i][j] = x[i];\n } else {\n // item does not exist in S\n cdata[i][j] = adata[i][j];\n }\n }\n }\n\n // return dense matrix\n return denseMatrix.createDenseMatrix({\n data: cdata,\n size: [rows, columns],\n datatype: adt === denseMatrix._datatype && bdt === sparseMatrix._datatype ? dt : undefined\n });\n };\n});", "import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nvar name = 'matAlgo04xSidSid';\nvar dependencies = ['typed', 'equalScalar'];\nexport var createMatAlgo04xSidSid = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar\n } = _ref;\n /**\n * Iterates over SparseMatrix A and SparseMatrix B nonzero items and invokes the callback function f(Aij, Bij).\n * Callback function invoked MAX(NNZA, NNZB) times\n *\n *\n * \u250C f(Aij, Bij) ; A(i,j) !== 0 && B(i,j) !== 0\n * C(i,j) = \u2524 A(i,j) ; A(i,j) !== 0 && B(i,j) === 0\n * \u2514 B(i,j) ; A(i,j) === 0\n *\n *\n * @param {Matrix} a The SparseMatrix instance (A)\n * @param {Matrix} b The SparseMatrix instance (B)\n * @param {Function} callback The f(Aij,Bij) operation to invoke\n *\n * @return {Matrix} SparseMatrix (C)\n *\n * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294\n */\n return function matAlgo04xSidSid(a, b, callback) {\n // sparse matrix arrays\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n var asize = a._size;\n var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();\n // sparse matrix arrays\n var bvalues = b._values;\n var bindex = b._index;\n var bptr = b._ptr;\n var bsize = b._size;\n var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();\n\n // validate dimensions\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n }\n\n // check rows & columns\n if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n }\n\n // rows & columns\n var rows = asize[0];\n var columns = asize[1];\n\n // datatype\n var dt;\n // equal signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n // callback signature to use\n var cf = callback;\n\n // process data types\n if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {\n // datatype\n dt = adt;\n // find signature that matches (dt, dt)\n eq = typed.find(equalScalar, [dt, dt]);\n // convert 0 to the same datatype\n zero = typed.convert(0, dt);\n // callback\n cf = typed.find(callback, [dt, dt]);\n }\n\n // result arrays\n var cvalues = avalues && bvalues ? [] : undefined;\n var cindex = [];\n var cptr = [];\n\n // workspace\n var xa = avalues && bvalues ? [] : undefined;\n var xb = avalues && bvalues ? [] : undefined;\n // marks indicating we have a value in x for a given column\n var wa = [];\n var wb = [];\n\n // vars\n var i, j, k, k0, k1;\n\n // loop columns\n for (j = 0; j < columns; j++) {\n // update cptr\n cptr[j] = cindex.length;\n // columns mark\n var mark = j + 1;\n // loop A(:,j)\n for (k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {\n // row\n i = aindex[k];\n // update c\n cindex.push(i);\n // update workspace\n wa[i] = mark;\n // check we need to process values\n if (xa) {\n xa[i] = avalues[k];\n }\n }\n // loop B(:,j)\n for (k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) {\n // row\n i = bindex[k];\n // check row exists in A\n if (wa[i] === mark) {\n // update record in xa @ i\n if (xa) {\n // invoke callback\n var v = cf(xa[i], bvalues[k]);\n // check for zero\n if (!eq(v, zero)) {\n // update workspace\n xa[i] = v;\n } else {\n // remove mark (index will be removed later)\n wa[i] = null;\n }\n }\n } else {\n // update c\n cindex.push(i);\n // update workspace\n wb[i] = mark;\n // check we need to process values\n if (xb) {\n xb[i] = bvalues[k];\n }\n }\n }\n // check we need to process values (non pattern matrix)\n if (xa && xb) {\n // initialize first index in j\n k = cptr[j];\n // loop index in j\n while (k < cindex.length) {\n // row\n i = cindex[k];\n // check workspace has value @ i\n if (wa[i] === mark) {\n // push value (Aij != 0 || (Aij != 0 && Bij != 0))\n cvalues[k] = xa[i];\n // increment pointer\n k++;\n } else if (wb[i] === mark) {\n // push value (bij != 0)\n cvalues[k] = xb[i];\n // increment pointer\n k++;\n } else {\n // remove index @ k\n cindex.splice(k, 1);\n }\n }\n }\n }\n // update cptr\n cptr[columns] = cindex.length;\n\n // return sparse matrix\n return a.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [rows, columns],\n datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined\n });\n };\n});", "import { factory } from '../../../utils/factory.js';\nvar name = 'matAlgo10xSids';\nvar dependencies = ['typed', 'DenseMatrix'];\nexport var createMatAlgo10xSids = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n DenseMatrix\n } = _ref;\n /**\n * Iterates over SparseMatrix S nonzero items and invokes the callback function f(Sij, b).\n * Callback function invoked NZ times (number of nonzero items in S).\n *\n *\n * \u250C f(Sij, b) ; S(i,j) !== 0\n * C(i,j) = \u2524\n * \u2514 b ; otherwise\n *\n *\n * @param {Matrix} s The SparseMatrix instance (S)\n * @param {Scalar} b The Scalar value\n * @param {Function} callback The f(Aij,b) operation to invoke\n * @param {boolean} inverse A true value indicates callback should be invoked f(b,Sij)\n *\n * @return {Matrix} DenseMatrix (C)\n *\n * https://github.com/josdejong/mathjs/pull/346#issuecomment-97626813\n */\n return function matAlgo10xSids(s, b, callback, inverse) {\n // sparse matrix arrays\n var avalues = s._values;\n var aindex = s._index;\n var aptr = s._ptr;\n var asize = s._size;\n var adt = s._datatype;\n\n // sparse matrix cannot be a Pattern matrix\n if (!avalues) {\n throw new Error('Cannot perform operation on Pattern Sparse Matrix and Scalar value');\n }\n\n // rows & columns\n var rows = asize[0];\n var columns = asize[1];\n\n // datatype\n var dt;\n // callback signature to use\n var cf = callback;\n\n // process data types\n if (typeof adt === 'string') {\n // datatype\n dt = adt;\n // convert b to the same datatype\n b = typed.convert(b, dt);\n // callback\n cf = typed.find(callback, [dt, dt]);\n }\n\n // result arrays\n var cdata = [];\n\n // workspaces\n var x = [];\n // marks indicating we have a value in x for a given column\n var w = [];\n\n // loop columns\n for (var j = 0; j < columns; j++) {\n // columns mark\n var mark = j + 1;\n // values in j\n for (var k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {\n // row\n var r = aindex[k];\n // update workspace\n x[r] = avalues[k];\n w[r] = mark;\n }\n // loop rows\n for (var i = 0; i < rows; i++) {\n // initialize C on first column\n if (j === 0) {\n // create row array\n cdata[i] = [];\n }\n // check sparse matrix has a value @ i,j\n if (w[i] === mark) {\n // invoke callback, update C\n cdata[i][j] = inverse ? cf(b, x[i]) : cf(x[i], b);\n } else {\n // dense matrix value @ i, j\n cdata[i][j] = b;\n }\n }\n }\n\n // return dense matrix\n return new DenseMatrix({\n data: cdata,\n size: [rows, columns],\n datatype: dt\n });\n };\n});", "/**\n * Create a syntax error with the message:\n * 'Wrong number of arguments in function ( provided, - expected)'\n * @param {string} fn Function name\n * @param {number} count Actual argument count\n * @param {number} min Minimum required argument count\n * @param {number} [max] Maximum required argument count\n * @extends Error\n */\nexport function ArgumentsError(fn, count, min, max) {\n if (!(this instanceof ArgumentsError)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n this.fn = fn;\n this.count = count;\n this.min = min;\n this.max = max;\n this.message = 'Wrong number of arguments in function ' + fn + ' (' + count + ' provided, ' + min + (max !== undefined && max !== null ? '-' + max : '') + ' expected)';\n this.stack = new Error().stack;\n}\nArgumentsError.prototype = new Error();\nArgumentsError.prototype.constructor = Error;\nArgumentsError.prototype.name = 'ArgumentsError';\nArgumentsError.prototype.isArgumentsError = true;", "import { isInteger } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMod } from './mod.js';\nimport { createMatAlgo01xDSid } from '../../type/matrix/utils/matAlgo01xDSid.js';\nimport { createMatAlgo04xSidSid } from '../../type/matrix/utils/matAlgo04xSidSid.js';\nimport { createMatAlgo10xSids } from '../../type/matrix/utils/matAlgo10xSids.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { ArgumentsError } from '../../error/ArgumentsError.js';\nvar name = 'gcd';\nvar dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar', 'zeros', 'BigNumber', 'DenseMatrix', 'concat'];\nvar gcdTypes = 'number | BigNumber | Fraction | Matrix | Array';\nvar gcdManyTypesSignature = \"\".concat(gcdTypes, \", \").concat(gcdTypes, \", ...\").concat(gcdTypes);\nfunction is1d(array) {\n return !array.some(element => Array.isArray(element));\n}\nexport var createGcd = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n config,\n round,\n equalScalar,\n zeros,\n BigNumber,\n DenseMatrix,\n concat\n } = _ref;\n var mod = createMod({\n typed,\n config,\n round,\n matrix,\n equalScalar,\n zeros,\n DenseMatrix,\n concat\n });\n var matAlgo01xDSid = createMatAlgo01xDSid({\n typed\n });\n var matAlgo04xSidSid = createMatAlgo04xSidSid({\n typed,\n equalScalar\n });\n var matAlgo10xSids = createMatAlgo10xSids({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Calculate the greatest common divisor for two or more values or arrays.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.gcd(a, b)\n * math.gcd(a, b, c, ...)\n *\n * Examples:\n *\n * math.gcd(8, 12) // returns 4\n * math.gcd(-4, 6) // returns 2\n * math.gcd(25, 15, -10) // returns 5\n *\n * math.gcd([8, -4], [12, 6]) // returns [4, 2]\n *\n * See also:\n *\n * lcm, xgcd\n *\n * @param {... number | BigNumber | Fraction | Array | Matrix} args Two or more integer numbers\n * @return {number | BigNumber | Fraction | Array | Matrix} The greatest common divisor\n */\n return typed(name, {\n 'number, number': _gcdNumber,\n 'BigNumber, BigNumber': _gcdBigNumber,\n 'Fraction, Fraction': (x, y) => x.gcd(y)\n }, matrixAlgorithmSuite({\n SS: matAlgo04xSidSid,\n DS: matAlgo01xDSid,\n Ss: matAlgo10xSids\n }), {\n [gcdManyTypesSignature]: typed.referToSelf(self => (a, b, args) => {\n var res = self(a, b);\n for (var i = 0; i < args.length; i++) {\n res = self(res, args[i]);\n }\n return res;\n }),\n Array: typed.referToSelf(self => array => {\n if (array.length === 1 && Array.isArray(array[0]) && is1d(array[0])) {\n return self(...array[0]);\n }\n if (is1d(array)) {\n return self(...array);\n }\n throw new ArgumentsError('gcd() supports only 1d matrices!');\n }),\n Matrix: typed.referToSelf(self => matrix => {\n return self(matrix.toArray());\n })\n });\n\n /**\n * Calculate gcd for numbers\n * @param {number} a\n * @param {number} b\n * @returns {number} Returns the greatest common denominator of a and b\n * @private\n */\n function _gcdNumber(a, b) {\n if (!isInteger(a) || !isInteger(b)) {\n throw new Error('Parameters in function gcd must be integer numbers');\n }\n\n // https://en.wikipedia.org/wiki/Euclidean_algorithm\n var r;\n while (b !== 0) {\n r = mod(a, b);\n a = b;\n b = r;\n }\n return a < 0 ? -a : a;\n }\n\n /**\n * Calculate gcd for BigNumbers\n * @param {BigNumber} a\n * @param {BigNumber} b\n * @returns {BigNumber} Returns greatest common denominator of a and b\n * @private\n */\n function _gcdBigNumber(a, b) {\n if (!a.isInt() || !b.isInt()) {\n throw new Error('Parameters in function gcd must be integer numbers');\n }\n\n // https://en.wikipedia.org/wiki/Euclidean_algorithm\n var zero = new BigNumber(0);\n while (!b.isZero()) {\n var r = mod(a, b);\n a = b;\n b = r;\n }\n return a.lt(zero) ? a.neg() : a;\n }\n});", "import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nimport { scatter } from '../../../utils/collection.js';\nvar name = 'matAlgo06xS0S0';\nvar dependencies = ['typed', 'equalScalar'];\nexport var createMatAlgo06xS0S0 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar\n } = _ref;\n /**\n * Iterates over SparseMatrix A and SparseMatrix B nonzero items and invokes the callback function f(Aij, Bij).\n * Callback function invoked (Anz U Bnz) times, where Anz and Bnz are the nonzero elements in both matrices.\n *\n *\n * \u250C f(Aij, Bij) ; A(i,j) !== 0 && B(i,j) !== 0\n * C(i,j) = \u2524\n * \u2514 0 ; otherwise\n *\n *\n * @param {Matrix} a The SparseMatrix instance (A)\n * @param {Matrix} b The SparseMatrix instance (B)\n * @param {Function} callback The f(Aij,Bij) operation to invoke\n *\n * @return {Matrix} SparseMatrix (C)\n *\n * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294\n */\n return function matAlgo06xS0S0(a, b, callback) {\n // sparse matrix arrays\n var avalues = a._values;\n var asize = a._size;\n var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();\n // sparse matrix arrays\n var bvalues = b._values;\n var bsize = b._size;\n var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();\n\n // validate dimensions\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n }\n\n // check rows & columns\n if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n }\n\n // rows & columns\n var rows = asize[0];\n var columns = asize[1];\n\n // datatype\n var dt;\n // equal signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n // callback signature to use\n var cf = callback;\n\n // process data types\n if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {\n // datatype\n dt = adt;\n // find signature that matches (dt, dt)\n eq = typed.find(equalScalar, [dt, dt]);\n // convert 0 to the same datatype\n zero = typed.convert(0, dt);\n // callback\n cf = typed.find(callback, [dt, dt]);\n }\n\n // result arrays\n var cvalues = avalues && bvalues ? [] : undefined;\n var cindex = [];\n var cptr = [];\n\n // workspaces\n var x = cvalues ? [] : undefined;\n // marks indicating we have a value in x for a given column\n var w = [];\n // marks indicating value in a given row has been updated\n var u = [];\n\n // loop columns\n for (var j = 0; j < columns; j++) {\n // update cptr\n cptr[j] = cindex.length;\n // columns mark\n var mark = j + 1;\n // scatter the values of A(:,j) into workspace\n scatter(a, j, w, x, u, mark, cindex, cf);\n // scatter the values of B(:,j) into workspace\n scatter(b, j, w, x, u, mark, cindex, cf);\n // check we need to process values (non pattern matrix)\n if (x) {\n // initialize first index in j\n var k = cptr[j];\n // loop index in j\n while (k < cindex.length) {\n // row\n var i = cindex[k];\n // check function was invoked on current row (Aij !=0 && Bij != 0)\n if (u[i] === mark) {\n // value @ i\n var v = x[i];\n // check for zero value\n if (!eq(v, zero)) {\n // push value\n cvalues.push(v);\n // increment pointer\n k++;\n } else {\n // remove value @ i, do not increment pointer\n cindex.splice(k, 1);\n }\n } else {\n // remove value @ i, do not increment pointer\n cindex.splice(k, 1);\n }\n }\n } else {\n // initialize first index in j\n var p = cptr[j];\n // loop index in j\n while (p < cindex.length) {\n // row\n var r = cindex[p];\n // check function was invoked on current row (Aij !=0 && Bij != 0)\n if (u[r] !== mark) {\n // remove value @ i, do not increment pointer\n cindex.splice(p, 1);\n } else {\n // increment pointer\n p++;\n }\n }\n }\n }\n // update cptr\n cptr[columns] = cindex.length;\n\n // return sparse matrix\n return a.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [rows, columns],\n datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined\n });\n };\n});", "import { factory } from '../../utils/factory.js';\nimport { createMatAlgo02xDS0 } from '../../type/matrix/utils/matAlgo02xDS0.js';\nimport { createMatAlgo06xS0S0 } from '../../type/matrix/utils/matAlgo06xS0S0.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { lcmNumber } from '../../plain/number/index.js';\nvar name = 'lcm';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'concat'];\nexport var createLcm = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n concat\n } = _ref;\n var matAlgo02xDS0 = createMatAlgo02xDS0({\n typed,\n equalScalar\n });\n var matAlgo06xS0S0 = createMatAlgo06xS0S0({\n typed,\n equalScalar\n });\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n var lcmTypes = 'number | BigNumber | Fraction | Matrix | Array';\n var lcmManySignature = {};\n lcmManySignature[\"\".concat(lcmTypes, \", \").concat(lcmTypes, \", ...\").concat(lcmTypes)] = typed.referToSelf(self => (a, b, args) => {\n var res = self(a, b);\n for (var i = 0; i < args.length; i++) {\n res = self(res, args[i]);\n }\n return res;\n });\n\n /**\n * Calculate the least common multiple for two or more values or arrays.\n *\n * lcm is defined as:\n *\n * lcm(a, b) = abs(a * b) / gcd(a, b)\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.lcm(a, b)\n * math.lcm(a, b, c, ...)\n *\n * Examples:\n *\n * math.lcm(4, 6) // returns 12\n * math.lcm(6, 21) // returns 42\n * math.lcm(6, 21, 5) // returns 210\n *\n * math.lcm([4, 6], [6, 21]) // returns [12, 42]\n *\n * See also:\n *\n * gcd, xgcd\n *\n * @param {... number | BigNumber | Array | Matrix} args Two or more integer numbers\n * @return {number | BigNumber | Array | Matrix} The least common multiple\n */\n return typed(name, {\n 'number, number': lcmNumber,\n 'BigNumber, BigNumber': _lcmBigNumber,\n 'Fraction, Fraction': (x, y) => x.lcm(y)\n }, matrixAlgorithmSuite({\n SS: matAlgo06xS0S0,\n DS: matAlgo02xDS0,\n Ss: matAlgo11xS0s\n }), lcmManySignature);\n\n /**\n * Calculate lcm for two BigNumbers\n * @param {BigNumber} a\n * @param {BigNumber} b\n * @returns {BigNumber} Returns the least common multiple of a and b\n * @private\n */\n function _lcmBigNumber(a, b) {\n if (!a.isInt() || !b.isInt()) {\n throw new Error('Parameters in function lcm must be integer numbers');\n }\n if (a.isZero()) {\n return a;\n }\n if (b.isZero()) {\n return b;\n }\n\n // https://en.wikipedia.org/wiki/Euclidean_algorithm\n // evaluate lcm here inline to reduce overhead\n var prod = a.times(b);\n while (!b.isZero()) {\n var t = b;\n b = a.mod(t);\n a = t;\n }\n return prod.div(a).abs();\n }\n});", "import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { log10Number } from '../../plain/number/index.js';\nvar name = 'log10';\nvar dependencies = ['typed', 'config', 'Complex'];\nexport var createLog10 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex: _Complex\n } = _ref;\n /**\n * Calculate the 10-base logarithm of a value. This is the same as calculating `log(x, 10)`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.log10(x)\n *\n * Examples:\n *\n * math.log10(0.00001) // returns -5\n * math.log10(10000) // returns 4\n * math.log(10000) / math.log(10) // returns 4\n * math.pow(10, 4) // returns 10000\n *\n * See also:\n *\n * exp, log, log1p, log2\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x\n * Value for which to calculate the logarithm.\n * @return {number | BigNumber | Complex | Array | Matrix}\n * Returns the 10-base logarithm of `x`\n */\n return typed(name, {\n number: function number(x) {\n if (x >= 0 || config.predictable) {\n return log10Number(x);\n } else {\n // negative value -> complex value computation\n return new _Complex(x, 0).log().div(Math.LN10);\n }\n },\n Complex: function Complex(x) {\n return new _Complex(x).log().div(Math.LN10);\n },\n BigNumber: function BigNumber(x) {\n if (!x.isNegative() || config.predictable) {\n return x.log();\n } else {\n // downgrade to number, return Complex valued result\n return new _Complex(x.toNumber(), 0).log().div(Math.LN10);\n }\n },\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { log2Number } from '../../plain/number/index.js';\nvar name = 'log2';\nvar dependencies = ['typed', 'config', 'Complex'];\nexport var createLog2 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex\n } = _ref;\n /**\n * Calculate the 2-base of a value. This is the same as calculating `log(x, 2)`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.log2(x)\n *\n * Examples:\n *\n * math.log2(0.03125) // returns -5\n * math.log2(16) // returns 4\n * math.log2(16) / math.log2(2) // returns 4\n * math.pow(2, 4) // returns 16\n *\n * See also:\n *\n * exp, log, log1p, log10\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x\n * Value for which to calculate the logarithm.\n * @return {number | BigNumber | Complex | Array | Matrix}\n * Returns the 2-base logarithm of `x`\n */\n return typed(name, {\n number: function number(x) {\n if (x >= 0 || config.predictable) {\n return log2Number(x);\n } else {\n // negative value -> complex value computation\n return _log2Complex(new Complex(x, 0));\n }\n },\n Complex: _log2Complex,\n BigNumber: function BigNumber(x) {\n if (!x.isNegative() || config.predictable) {\n return x.log(2);\n } else {\n // downgrade to number, return Complex valued result\n return _log2Complex(new Complex(x.toNumber(), 0));\n }\n },\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n\n /**\n * Calculate log2 for a complex value\n * @param {Complex} x\n * @returns {Complex}\n * @private\n */\n function _log2Complex(x) {\n var newX = Math.sqrt(x.re * x.re + x.im * x.im);\n return new Complex(Math.log2 ? Math.log2(newX) : Math.log(newX) / Math.LN2, Math.atan2(x.im, x.re) / Math.LN2);\n }\n});", "import { factory } from '../../utils/factory.js';\nimport { multiplyNumber } from '../../plain/number/index.js';\nvar name = 'multiplyScalar';\nvar dependencies = ['typed'];\nexport var createMultiplyScalar = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Multiply two scalar values, `x * y`.\n * This function is meant for internal use: it is used by the public function\n * `multiply`\n *\n * This function does not support collections (Array or Matrix).\n *\n * @param {number | BigNumber | bigint | Fraction | Complex | Unit} x First value to multiply\n * @param {number | BigNumber | bigint | Fraction | Complex} y Second value to multiply\n * @return {number | BigNumber | bigint | Fraction | Complex | Unit} Multiplication of `x` and `y`\n * @private\n */\n return typed('multiplyScalar', {\n 'number, number': multiplyNumber,\n 'Complex, Complex': function Complex_Complex(x, y) {\n return x.mul(y);\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n return x.times(y);\n },\n 'bigint, bigint': function bigint_bigint(x, y) {\n return x * y;\n },\n 'Fraction, Fraction': function Fraction_Fraction(x, y) {\n return x.mul(y);\n },\n 'number | Fraction | BigNumber | Complex, Unit': (x, y) => y.multiply(x),\n 'Unit, number | Fraction | BigNumber | Complex | Unit': (x, y) => x.multiply(y)\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { isMatrix } from '../../utils/is.js';\nimport { arraySize } from '../../utils/array.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';\nvar name = 'multiply';\nvar dependencies = ['typed', 'matrix', 'addScalar', 'multiplyScalar', 'equalScalar', 'dot'];\nexport var createMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n addScalar,\n multiplyScalar,\n equalScalar,\n dot\n } = _ref;\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matAlgo14xDs = createMatAlgo14xDs({\n typed\n });\n function _validateMatrixDimensions(size1, size2) {\n // check left operand dimensions\n switch (size1.length) {\n case 1:\n // check size2\n switch (size2.length) {\n case 1:\n // Vector x Vector\n if (size1[0] !== size2[0]) {\n // throw error\n throw new RangeError('Dimension mismatch in multiplication. Vectors must have the same length');\n }\n break;\n case 2:\n // Vector x Matrix\n if (size1[0] !== size2[0]) {\n // throw error\n throw new RangeError('Dimension mismatch in multiplication. Vector length (' + size1[0] + ') must match Matrix rows (' + size2[0] + ')');\n }\n break;\n default:\n throw new Error('Can only multiply a 1 or 2 dimensional matrix (Matrix B has ' + size2.length + ' dimensions)');\n }\n break;\n case 2:\n // check size2\n switch (size2.length) {\n case 1:\n // Matrix x Vector\n if (size1[1] !== size2[0]) {\n // throw error\n throw new RangeError('Dimension mismatch in multiplication. Matrix columns (' + size1[1] + ') must match Vector length (' + size2[0] + ')');\n }\n break;\n case 2:\n // Matrix x Matrix\n if (size1[1] !== size2[0]) {\n // throw error\n throw new RangeError('Dimension mismatch in multiplication. Matrix A columns (' + size1[1] + ') must match Matrix B rows (' + size2[0] + ')');\n }\n break;\n default:\n throw new Error('Can only multiply a 1 or 2 dimensional matrix (Matrix B has ' + size2.length + ' dimensions)');\n }\n break;\n default:\n throw new Error('Can only multiply a 1 or 2 dimensional matrix (Matrix A has ' + size1.length + ' dimensions)');\n }\n }\n\n /**\n * C = A * B\n *\n * @param {Matrix} a Dense Vector (N)\n * @param {Matrix} b Dense Vector (N)\n *\n * @return {number} Scalar value\n */\n function _multiplyVectorVector(a, b, n) {\n // check empty vector\n if (n === 0) {\n throw new Error('Cannot multiply two empty vectors');\n }\n return dot(a, b);\n }\n\n /**\n * C = A * B\n *\n * @param {Matrix} a Dense Vector (M)\n * @param {Matrix} b Matrix (MxN)\n *\n * @return {Matrix} Dense Vector (N)\n */\n function _multiplyVectorMatrix(a, b) {\n // process storage\n if (b.storage() !== 'dense') {\n throw new Error('Support for SparseMatrix not implemented');\n }\n return _multiplyVectorDenseMatrix(a, b);\n }\n\n /**\n * C = A * B\n *\n * @param {Matrix} a Dense Vector (M)\n * @param {Matrix} b Dense Matrix (MxN)\n *\n * @return {Matrix} Dense Vector (N)\n */\n function _multiplyVectorDenseMatrix(a, b) {\n // a dense\n var adata = a._data;\n var asize = a._size;\n var adt = a._datatype || a.getDataType();\n // b dense\n var bdata = b._data;\n var bsize = b._size;\n var bdt = b._datatype || b.getDataType();\n // rows & columns\n var alength = asize[0];\n var bcolumns = bsize[1];\n\n // datatype\n var dt;\n // addScalar signature to use\n var af = addScalar;\n // multiplyScalar signature to use\n var mf = multiplyScalar;\n\n // process data types\n if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') {\n // datatype\n dt = adt;\n // find signatures that matches (dt, dt)\n af = typed.find(addScalar, [dt, dt]);\n mf = typed.find(multiplyScalar, [dt, dt]);\n }\n\n // result\n var c = [];\n\n // loop matrix columns\n for (var j = 0; j < bcolumns; j++) {\n // sum (do not initialize it with zero)\n var sum = mf(adata[0], bdata[0][j]);\n // loop vector\n for (var i = 1; i < alength; i++) {\n // multiply & accumulate\n sum = af(sum, mf(adata[i], bdata[i][j]));\n }\n c[j] = sum;\n }\n\n // return matrix\n return a.createDenseMatrix({\n data: c,\n size: [bcolumns],\n datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined\n });\n }\n\n /**\n * C = A * B\n *\n * @param {Matrix} a Matrix (MxN)\n * @param {Matrix} b Dense Vector (N)\n *\n * @return {Matrix} Dense Vector (M)\n */\n var _multiplyMatrixVector = typed('_multiplyMatrixVector', {\n 'DenseMatrix, any': _multiplyDenseMatrixVector,\n 'SparseMatrix, any': _multiplySparseMatrixVector\n });\n\n /**\n * C = A * B\n *\n * @param {Matrix} a Matrix (MxN)\n * @param {Matrix} b Matrix (NxC)\n *\n * @return {Matrix} Matrix (MxC)\n */\n var _multiplyMatrixMatrix = typed('_multiplyMatrixMatrix', {\n 'DenseMatrix, DenseMatrix': _multiplyDenseMatrixDenseMatrix,\n 'DenseMatrix, SparseMatrix': _multiplyDenseMatrixSparseMatrix,\n 'SparseMatrix, DenseMatrix': _multiplySparseMatrixDenseMatrix,\n 'SparseMatrix, SparseMatrix': _multiplySparseMatrixSparseMatrix\n });\n\n /**\n * C = A * B\n *\n * @param {Matrix} a DenseMatrix (MxN)\n * @param {Matrix} b Dense Vector (N)\n *\n * @return {Matrix} Dense Vector (M)\n */\n function _multiplyDenseMatrixVector(a, b) {\n // a dense\n var adata = a._data;\n var asize = a._size;\n var adt = a._datatype || a.getDataType();\n // b dense\n var bdata = b._data;\n var bdt = b._datatype || b.getDataType();\n // rows & columns\n var arows = asize[0];\n var acolumns = asize[1];\n\n // datatype\n var dt;\n // addScalar signature to use\n var af = addScalar;\n // multiplyScalar signature to use\n var mf = multiplyScalar;\n\n // process data types\n if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') {\n // datatype\n dt = adt;\n // find signatures that matches (dt, dt)\n af = typed.find(addScalar, [dt, dt]);\n mf = typed.find(multiplyScalar, [dt, dt]);\n }\n\n // result\n var c = [];\n\n // loop matrix a rows\n for (var i = 0; i < arows; i++) {\n // current row\n var row = adata[i];\n // sum (do not initialize it with zero)\n var sum = mf(row[0], bdata[0]);\n // loop matrix a columns\n for (var j = 1; j < acolumns; j++) {\n // multiply & accumulate\n sum = af(sum, mf(row[j], bdata[j]));\n }\n c[i] = sum;\n }\n\n // return matrix\n return a.createDenseMatrix({\n data: c,\n size: [arows],\n datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined\n });\n }\n\n /**\n * C = A * B\n *\n * @param {Matrix} a DenseMatrix (MxN)\n * @param {Matrix} b DenseMatrix (NxC)\n *\n * @return {Matrix} DenseMatrix (MxC)\n */\n function _multiplyDenseMatrixDenseMatrix(a, b) {\n // getDataType()\n // a dense\n var adata = a._data;\n var asize = a._size;\n var adt = a._datatype || a.getDataType();\n // b dense\n var bdata = b._data;\n var bsize = b._size;\n var bdt = b._datatype || b.getDataType();\n // rows & columns\n var arows = asize[0];\n var acolumns = asize[1];\n var bcolumns = bsize[1];\n\n // datatype\n var dt;\n // addScalar signature to use\n var af = addScalar;\n // multiplyScalar signature to use\n var mf = multiplyScalar;\n\n // process data types\n if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed' && adt !== 'mixed') {\n // datatype\n dt = adt;\n // find signatures that matches (dt, dt)\n af = typed.find(addScalar, [dt, dt]);\n mf = typed.find(multiplyScalar, [dt, dt]);\n }\n\n // result\n var c = [];\n\n // loop matrix a rows\n for (var i = 0; i < arows; i++) {\n // current row\n var row = adata[i];\n // initialize row array\n c[i] = [];\n // loop matrix b columns\n for (var j = 0; j < bcolumns; j++) {\n // sum (avoid initializing sum to zero)\n var sum = mf(row[0], bdata[0][j]);\n // loop matrix a columns\n for (var x = 1; x < acolumns; x++) {\n // multiply & accumulate\n sum = af(sum, mf(row[x], bdata[x][j]));\n }\n c[i][j] = sum;\n }\n }\n\n // return matrix\n return a.createDenseMatrix({\n data: c,\n size: [arows, bcolumns],\n datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined\n });\n }\n\n /**\n * C = A * B\n *\n * @param {Matrix} a DenseMatrix (MxN)\n * @param {Matrix} b SparseMatrix (NxC)\n *\n * @return {Matrix} SparseMatrix (MxC)\n */\n function _multiplyDenseMatrixSparseMatrix(a, b) {\n // a dense\n var adata = a._data;\n var asize = a._size;\n var adt = a._datatype || a.getDataType();\n // b sparse\n var bvalues = b._values;\n var bindex = b._index;\n var bptr = b._ptr;\n var bsize = b._size;\n var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();\n // validate b matrix\n if (!bvalues) {\n throw new Error('Cannot multiply Dense Matrix times Pattern only Matrix');\n }\n // rows & columns\n var arows = asize[0];\n var bcolumns = bsize[1];\n\n // datatype\n var dt;\n // addScalar signature to use\n var af = addScalar;\n // multiplyScalar signature to use\n var mf = multiplyScalar;\n // equalScalar signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n\n // process data types\n if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') {\n // datatype\n dt = adt;\n // find signatures that matches (dt, dt)\n af = typed.find(addScalar, [dt, dt]);\n mf = typed.find(multiplyScalar, [dt, dt]);\n eq = typed.find(equalScalar, [dt, dt]);\n // convert 0 to the same datatype\n zero = typed.convert(0, dt);\n }\n\n // result\n var cvalues = [];\n var cindex = [];\n var cptr = [];\n // c matrix\n var c = b.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [arows, bcolumns],\n datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined\n });\n\n // loop b columns\n for (var jb = 0; jb < bcolumns; jb++) {\n // update ptr\n cptr[jb] = cindex.length;\n // indeces in column jb\n var kb0 = bptr[jb];\n var kb1 = bptr[jb + 1];\n // do not process column jb if no data exists\n if (kb1 > kb0) {\n // last row mark processed\n var last = 0;\n // loop a rows\n for (var i = 0; i < arows; i++) {\n // column mark\n var mark = i + 1;\n // C[i, jb]\n var cij = void 0;\n // values in b column j\n for (var kb = kb0; kb < kb1; kb++) {\n // row\n var ib = bindex[kb];\n // check value has been initialized\n if (last !== mark) {\n // first value in column jb\n cij = mf(adata[i][ib], bvalues[kb]);\n // update mark\n last = mark;\n } else {\n // accumulate value\n cij = af(cij, mf(adata[i][ib], bvalues[kb]));\n }\n }\n // check column has been processed and value != 0\n if (last === mark && !eq(cij, zero)) {\n // push row & value\n cindex.push(i);\n cvalues.push(cij);\n }\n }\n }\n }\n // update ptr\n cptr[bcolumns] = cindex.length;\n\n // return sparse matrix\n return c;\n }\n\n /**\n * C = A * B\n *\n * @param {Matrix} a SparseMatrix (MxN)\n * @param {Matrix} b Dense Vector (N)\n *\n * @return {Matrix} SparseMatrix (M, 1)\n */\n function _multiplySparseMatrixVector(a, b) {\n // a sparse\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();\n // validate a matrix\n if (!avalues) {\n throw new Error('Cannot multiply Pattern only Matrix times Dense Matrix');\n }\n // b dense\n var bdata = b._data;\n var bdt = b._datatype || b.getDataType();\n // rows & columns\n var arows = a._size[0];\n var brows = b._size[0];\n // result\n var cvalues = [];\n var cindex = [];\n var cptr = [];\n\n // datatype\n var dt;\n // addScalar signature to use\n var af = addScalar;\n // multiplyScalar signature to use\n var mf = multiplyScalar;\n // equalScalar signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n\n // process data types\n if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') {\n // datatype\n dt = adt;\n // find signatures that matches (dt, dt)\n af = typed.find(addScalar, [dt, dt]);\n mf = typed.find(multiplyScalar, [dt, dt]);\n eq = typed.find(equalScalar, [dt, dt]);\n // convert 0 to the same datatype\n zero = typed.convert(0, dt);\n }\n\n // workspace\n var x = [];\n // vector with marks indicating a value x[i] exists in a given column\n var w = [];\n\n // update ptr\n cptr[0] = 0;\n // rows in b\n for (var ib = 0; ib < brows; ib++) {\n // b[ib]\n var vbi = bdata[ib];\n // check b[ib] != 0, avoid loops\n if (!eq(vbi, zero)) {\n // A values & index in ib column\n for (var ka0 = aptr[ib], ka1 = aptr[ib + 1], ka = ka0; ka < ka1; ka++) {\n // a row\n var ia = aindex[ka];\n // check value exists in current j\n if (!w[ia]) {\n // ia is new entry in j\n w[ia] = true;\n // add i to pattern of C\n cindex.push(ia);\n // x(ia) = A\n x[ia] = mf(vbi, avalues[ka]);\n } else {\n // i exists in C already\n x[ia] = af(x[ia], mf(vbi, avalues[ka]));\n }\n }\n }\n }\n // copy values from x to column jb of c\n for (var p1 = cindex.length, p = 0; p < p1; p++) {\n // row\n var ic = cindex[p];\n // copy value\n cvalues[p] = x[ic];\n }\n // update ptr\n cptr[1] = cindex.length;\n\n // matrix to return\n return a.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [arows, 1],\n datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined\n });\n }\n\n /**\n * C = A * B\n *\n * @param {Matrix} a SparseMatrix (MxN)\n * @param {Matrix} b DenseMatrix (NxC)\n *\n * @return {Matrix} SparseMatrix (MxC)\n */\n function _multiplySparseMatrixDenseMatrix(a, b) {\n // a sparse\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();\n // validate a matrix\n if (!avalues) {\n throw new Error('Cannot multiply Pattern only Matrix times Dense Matrix');\n }\n // b dense\n var bdata = b._data;\n var bdt = b._datatype || b.getDataType();\n // rows & columns\n var arows = a._size[0];\n var brows = b._size[0];\n var bcolumns = b._size[1];\n\n // datatype\n var dt;\n // addScalar signature to use\n var af = addScalar;\n // multiplyScalar signature to use\n var mf = multiplyScalar;\n // equalScalar signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n\n // process data types\n if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') {\n // datatype\n dt = adt;\n // find signatures that matches (dt, dt)\n af = typed.find(addScalar, [dt, dt]);\n mf = typed.find(multiplyScalar, [dt, dt]);\n eq = typed.find(equalScalar, [dt, dt]);\n // convert 0 to the same datatype\n zero = typed.convert(0, dt);\n }\n\n // result\n var cvalues = [];\n var cindex = [];\n var cptr = [];\n // c matrix\n var c = a.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [arows, bcolumns],\n datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined\n });\n\n // workspace\n var x = [];\n // vector with marks indicating a value x[i] exists in a given column\n var w = [];\n\n // loop b columns\n for (var jb = 0; jb < bcolumns; jb++) {\n // update ptr\n cptr[jb] = cindex.length;\n // mark in workspace for current column\n var mark = jb + 1;\n // rows in jb\n for (var ib = 0; ib < brows; ib++) {\n // b[ib, jb]\n var vbij = bdata[ib][jb];\n // check b[ib, jb] != 0, avoid loops\n if (!eq(vbij, zero)) {\n // A values & index in ib column\n for (var ka0 = aptr[ib], ka1 = aptr[ib + 1], ka = ka0; ka < ka1; ka++) {\n // a row\n var ia = aindex[ka];\n // check value exists in current j\n if (w[ia] !== mark) {\n // ia is new entry in j\n w[ia] = mark;\n // add i to pattern of C\n cindex.push(ia);\n // x(ia) = A\n x[ia] = mf(vbij, avalues[ka]);\n } else {\n // i exists in C already\n x[ia] = af(x[ia], mf(vbij, avalues[ka]));\n }\n }\n }\n }\n // copy values from x to column jb of c\n for (var p0 = cptr[jb], p1 = cindex.length, p = p0; p < p1; p++) {\n // row\n var ic = cindex[p];\n // copy value\n cvalues[p] = x[ic];\n }\n }\n // update ptr\n cptr[bcolumns] = cindex.length;\n\n // return sparse matrix\n return c;\n }\n\n /**\n * C = A * B\n *\n * @param {Matrix} a SparseMatrix (MxN)\n * @param {Matrix} b SparseMatrix (NxC)\n *\n * @return {Matrix} SparseMatrix (MxC)\n */\n function _multiplySparseMatrixSparseMatrix(a, b) {\n // a sparse\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();\n // b sparse\n var bvalues = b._values;\n var bindex = b._index;\n var bptr = b._ptr;\n var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();\n\n // rows & columns\n var arows = a._size[0];\n var bcolumns = b._size[1];\n // flag indicating both matrices (a & b) contain data\n var values = avalues && bvalues;\n\n // datatype\n var dt;\n // addScalar signature to use\n var af = addScalar;\n // multiplyScalar signature to use\n var mf = multiplyScalar;\n\n // process data types\n if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') {\n // datatype\n dt = adt;\n // find signatures that matches (dt, dt)\n af = typed.find(addScalar, [dt, dt]);\n mf = typed.find(multiplyScalar, [dt, dt]);\n }\n\n // result\n var cvalues = values ? [] : undefined;\n var cindex = [];\n var cptr = [];\n // c matrix\n var c = a.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [arows, bcolumns],\n datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined\n });\n\n // workspace\n var x = values ? [] : undefined;\n // vector with marks indicating a value x[i] exists in a given column\n var w = [];\n // variables\n var ka, ka0, ka1, kb, kb0, kb1, ia, ib;\n // loop b columns\n for (var jb = 0; jb < bcolumns; jb++) {\n // update ptr\n cptr[jb] = cindex.length;\n // mark in workspace for current column\n var mark = jb + 1;\n // B values & index in j\n for (kb0 = bptr[jb], kb1 = bptr[jb + 1], kb = kb0; kb < kb1; kb++) {\n // b row\n ib = bindex[kb];\n // check we need to process values\n if (values) {\n // loop values in a[:,ib]\n for (ka0 = aptr[ib], ka1 = aptr[ib + 1], ka = ka0; ka < ka1; ka++) {\n // row\n ia = aindex[ka];\n // check value exists in current j\n if (w[ia] !== mark) {\n // ia is new entry in j\n w[ia] = mark;\n // add i to pattern of C\n cindex.push(ia);\n // x(ia) = A\n x[ia] = mf(bvalues[kb], avalues[ka]);\n } else {\n // i exists in C already\n x[ia] = af(x[ia], mf(bvalues[kb], avalues[ka]));\n }\n }\n } else {\n // loop values in a[:,ib]\n for (ka0 = aptr[ib], ka1 = aptr[ib + 1], ka = ka0; ka < ka1; ka++) {\n // row\n ia = aindex[ka];\n // check value exists in current j\n if (w[ia] !== mark) {\n // ia is new entry in j\n w[ia] = mark;\n // add i to pattern of C\n cindex.push(ia);\n }\n }\n }\n }\n // check we need to process matrix values (pattern matrix)\n if (values) {\n // copy values from x to column jb of c\n for (var p0 = cptr[jb], p1 = cindex.length, p = p0; p < p1; p++) {\n // row\n var ic = cindex[p];\n // copy value\n cvalues[p] = x[ic];\n }\n }\n }\n // update ptr\n cptr[bcolumns] = cindex.length;\n\n // return sparse matrix\n return c;\n }\n\n /**\n * Multiply two or more values, `x * y`.\n * For matrices, the matrix product is calculated.\n *\n * Syntax:\n *\n * math.multiply(x, y)\n * math.multiply(x, y, z, ...)\n *\n * Examples:\n *\n * math.multiply(4, 5.2) // returns number 20.8\n * math.multiply(2, 3, 4) // returns number 24\n *\n * const a = math.complex(2, 3)\n * const b = math.complex(4, 1)\n * math.multiply(a, b) // returns Complex 5 + 14i\n *\n * const c = [[1, 2], [4, 3]]\n * const d = [[1, 2, 3], [3, -4, 7]]\n * math.multiply(c, d) // returns Array [[7, -6, 17], [13, -4, 33]]\n *\n * const e = math.unit('2.1 km')\n * math.multiply(3, e) // returns Unit 6.3 km\n *\n * See also:\n *\n * divide, prod, cross, dot\n *\n * @param {number | BigNumber | bigint | Fraction | Complex | Unit | Array | Matrix} x First value to multiply\n * @param {number | BigNumber | bigint | Fraction | Complex | Unit | Array | Matrix} y Second value to multiply\n * @return {number | BigNumber | bigint | Fraction | Complex | Unit | Array | Matrix} Multiplication of `x` and `y`\n */\n return typed(name, multiplyScalar, {\n // we extend the signatures of multiplyScalar with signatures dealing with matrices\n\n 'Array, Array': typed.referTo('Matrix, Matrix', selfMM => (x, y) => {\n // check dimensions\n _validateMatrixDimensions(arraySize(x), arraySize(y));\n\n // use dense matrix implementation\n var m = selfMM(matrix(x), matrix(y));\n // return array or scalar\n return isMatrix(m) ? m.valueOf() : m;\n }),\n 'Matrix, Matrix': function Matrix_Matrix(x, y) {\n // dimensions\n var xsize = x.size();\n var ysize = y.size();\n\n // check dimensions\n _validateMatrixDimensions(xsize, ysize);\n\n // process dimensions\n if (xsize.length === 1) {\n // process y dimensions\n if (ysize.length === 1) {\n // Vector * Vector\n return _multiplyVectorVector(x, y, xsize[0]);\n }\n // Vector * Matrix\n return _multiplyVectorMatrix(x, y);\n }\n // process y dimensions\n if (ysize.length === 1) {\n // Matrix * Vector\n return _multiplyMatrixVector(x, y);\n }\n // Matrix * Matrix\n return _multiplyMatrixMatrix(x, y);\n },\n 'Matrix, Array': typed.referTo('Matrix,Matrix', selfMM => (x, y) => selfMM(x, matrix(y))),\n 'Array, Matrix': typed.referToSelf(self => (x, y) => {\n // use Matrix * Matrix implementation\n return self(matrix(x, y.storage()), y);\n }),\n 'SparseMatrix, any': function SparseMatrix_any(x, y) {\n return matAlgo11xS0s(x, y, multiplyScalar, false);\n },\n 'DenseMatrix, any': function DenseMatrix_any(x, y) {\n return matAlgo14xDs(x, y, multiplyScalar, false);\n },\n 'any, SparseMatrix': function any_SparseMatrix(x, y) {\n return matAlgo11xS0s(y, x, multiplyScalar, true);\n },\n 'any, DenseMatrix': function any_DenseMatrix(x, y) {\n return matAlgo14xDs(y, x, multiplyScalar, true);\n },\n 'Array, any': function Array_any(x, y) {\n // use matrix implementation\n return matAlgo14xDs(matrix(x), y, multiplyScalar, false).valueOf();\n },\n 'any, Array': function any_Array(x, y) {\n // use matrix implementation\n return matAlgo14xDs(matrix(y), x, multiplyScalar, true).valueOf();\n },\n 'any, any': multiplyScalar,\n 'any, any, ...any': typed.referToSelf(self => (x, y, rest) => {\n var result = self(x, y);\n for (var i = 0; i < rest.length; i++) {\n result = self(result, rest[i]);\n }\n return result;\n })\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { createMatAlgo01xDSid } from '../../type/matrix/utils/matAlgo01xDSid.js';\nimport { createMatAlgo02xDS0 } from '../../type/matrix/utils/matAlgo02xDS0.js';\nimport { createMatAlgo06xS0S0 } from '../../type/matrix/utils/matAlgo06xS0S0.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { nthRootNumber } from '../../plain/number/index.js';\nvar name = 'nthRoot';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'BigNumber', 'concat'];\nexport var createNthRoot = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n BigNumber: _BigNumber,\n concat\n } = _ref;\n var matAlgo01xDSid = createMatAlgo01xDSid({\n typed\n });\n var matAlgo02xDS0 = createMatAlgo02xDS0({\n typed,\n equalScalar\n });\n var matAlgo06xS0S0 = createMatAlgo06xS0S0({\n typed,\n equalScalar\n });\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Calculate the nth root of a value.\n * The principal nth root of a positive real number A, is the positive real\n * solution of the equation\n *\n * x^root = A\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.nthRoot(a)\n * math.nthRoot(a, root)\n *\n * Examples:\n *\n * math.nthRoot(9, 2) // returns 3 (since 3^2 == 9)\n * math.sqrt(9) // returns 3 (since 3^2 == 9)\n * math.nthRoot(64, 3) // returns 4 (since 4^3 == 64)\n *\n * See also:\n *\n * sqrt, pow\n *\n * @param {number | BigNumber | Array | Matrix | Complex} a\n * Value for which to calculate the nth root\n * @param {number | BigNumber} [root=2] The root.\n * @return {number | Complex | Array | Matrix} Returns the nth root of `a`\n */\n function complexErr() {\n throw new Error('Complex number not supported in function nthRoot. Use nthRoots instead.');\n }\n return typed(name, {\n number: nthRootNumber,\n 'number, number': nthRootNumber,\n BigNumber: x => _bigNthRoot(x, new _BigNumber(2)),\n 'BigNumber, BigNumber': _bigNthRoot,\n Complex: complexErr,\n 'Complex, number': complexErr,\n Array: typed.referTo('DenseMatrix,number', selfDn => x => selfDn(matrix(x), 2).valueOf()),\n DenseMatrix: typed.referTo('DenseMatrix,number', selfDn => x => selfDn(x, 2)),\n SparseMatrix: typed.referTo('SparseMatrix,number', selfSn => x => selfSn(x, 2)),\n 'SparseMatrix, SparseMatrix': typed.referToSelf(self => (x, y) => {\n // density must be one (no zeros in matrix)\n if (y.density() === 1) {\n // sparse + sparse\n return matAlgo06xS0S0(x, y, self);\n } else {\n // throw exception\n throw new Error('Root must be non-zero');\n }\n }),\n 'DenseMatrix, SparseMatrix': typed.referToSelf(self => (x, y) => {\n // density must be one (no zeros in matrix)\n if (y.density() === 1) {\n // dense + sparse\n return matAlgo01xDSid(x, y, self, false);\n } else {\n // throw exception\n throw new Error('Root must be non-zero');\n }\n }),\n 'Array, SparseMatrix': typed.referTo('DenseMatrix,SparseMatrix', selfDS => (x, y) => selfDS(matrix(x), y)),\n 'number | BigNumber, SparseMatrix': typed.referToSelf(self => (x, y) => {\n // density must be one (no zeros in matrix)\n if (y.density() === 1) {\n // sparse - scalar\n return matAlgo11xS0s(y, x, self, true);\n } else {\n // throw exception\n throw new Error('Root must be non-zero');\n }\n })\n }, matrixAlgorithmSuite({\n scalar: 'number | BigNumber',\n SD: matAlgo02xDS0,\n Ss: matAlgo11xS0s,\n sS: false\n }));\n\n /**\n * Calculate the nth root of a for BigNumbers, solve x^root == a\n * https://rosettacode.org/wiki/Nth_root#JavaScript\n * @param {BigNumber} a\n * @param {BigNumber} root\n * @private\n */\n function _bigNthRoot(a, root) {\n var precision = _BigNumber.precision;\n var Big = _BigNumber.clone({\n precision: precision + 2\n });\n var zero = new _BigNumber(0);\n var one = new Big(1);\n var inv = root.isNegative();\n if (inv) {\n root = root.neg();\n }\n if (root.isZero()) {\n throw new Error('Root must be non-zero');\n }\n if (a.isNegative() && !root.abs().mod(2).equals(1)) {\n throw new Error('Root must be odd when a is negative.');\n }\n\n // edge cases zero and infinity\n if (a.isZero()) {\n return inv ? new Big(Infinity) : 0;\n }\n if (!a.isFinite()) {\n return inv ? zero : a;\n }\n var x = a.abs().pow(one.div(root));\n // If a < 0, we require that root is an odd integer,\n // so (-1) ^ (1/root) = -1\n x = a.isNeg() ? x.neg() : x;\n return new _BigNumber((inv ? one.div(x) : x).toPrecision(precision));\n }\n});\nexport var createNthRootNumber = /* #__PURE__ */factory(name, ['typed'], _ref2 => {\n var {\n typed\n } = _ref2;\n return typed(name, {\n number: nthRootNumber,\n 'number, number': nthRootNumber\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { signNumber } from '../../plain/number/index.js';\nvar name = 'sign';\nvar dependencies = ['typed', 'BigNumber', 'Fraction', 'complex'];\nexport var createSign = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber: _BigNumber,\n complex,\n Fraction: _Fraction\n } = _ref;\n /**\n * Compute the sign of a value. The sign of a value x is:\n *\n * - 1 when x > 0\n * - -1 when x < 0\n * - 0 when x == 0\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.sign(x)\n *\n * Examples:\n *\n * math.sign(3.5) // returns 1\n * math.sign(-4.2) // returns -1\n * math.sign(0) // returns 0\n *\n * math.sign([3, 5, -2, 0, 2]) // returns [1, 1, -1, 0, 1]\n *\n * See also:\n *\n * abs\n *\n * @param {number | BigNumber | bigint | Fraction | Complex | Array | Matrix | Unit} x\n * The number for which to determine the sign\n * @return {number | BigNumber | bigint | Fraction | Complex | Array | Matrix | Unit}\n * The sign of `x`\n */\n return typed(name, {\n number: signNumber,\n Complex: function Complex(x) {\n return x.im === 0 ? complex(signNumber(x.re)) : x.sign();\n },\n BigNumber: function BigNumber(x) {\n return new _BigNumber(x.cmp(0));\n },\n bigint: function bigint(x) {\n return x > 0n ? 1n : x < 0n ? -1n : 0n;\n },\n Fraction: function Fraction(x) {\n return new _Fraction(x.s, 1);\n },\n // deep map collection, skip zeros since sign(0) = 0\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self, true)),\n Unit: typed.referToSelf(self => x => {\n if (!x._isDerived() && x.units[0].unit.offset !== 0) {\n throw new TypeError('sign is ambiguous for units with offset');\n }\n return typed.find(self, x.valueType())(x.value);\n })\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'sqrt';\nvar dependencies = ['config', 'typed', 'Complex'];\nexport var createSqrt = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n config,\n typed,\n Complex\n } = _ref;\n /**\n * Calculate the square root of a value.\n *\n * For matrices, if you want the matrix square root of a square matrix,\n * use the `sqrtm` function. If you wish to apply `sqrt` elementwise to\n * a matrix M, use `math.map(M, math.sqrt)`.\n *\n * Syntax:\n *\n * math.sqrt(x)\n *\n * Examples:\n *\n * math.sqrt(25) // returns 5\n * math.square(5) // returns 25\n * math.sqrt(-4) // returns Complex 2i\n *\n * See also:\n *\n * square, multiply, cube, cbrt, sqrtm\n *\n * @param {number | BigNumber | Complex | Unit} x\n * Value for which to calculate the square root.\n * @return {number | BigNumber | Complex | Unit}\n * Returns the square root of `x`\n */\n return typed('sqrt', {\n number: _sqrtNumber,\n Complex: function Complex(x) {\n return x.sqrt();\n },\n BigNumber: function BigNumber(x) {\n if (!x.isNegative() || config.predictable) {\n return x.sqrt();\n } else {\n // negative value -> downgrade to number to do complex value computation\n return _sqrtNumber(x.toNumber());\n }\n },\n Unit: function Unit(x) {\n // Someday will work for complex units when they are implemented\n return x.pow(0.5);\n }\n });\n\n /**\n * Calculate sqrt for a number\n * @param {number} x\n * @returns {number | Complex} Returns the square root of x\n * @private\n */\n function _sqrtNumber(x) {\n if (isNaN(x)) {\n return NaN;\n } else if (x >= 0 || config.predictable) {\n return Math.sqrt(x);\n } else {\n return new Complex(x, 0).sqrt();\n }\n }\n});", "import { factory } from '../../utils/factory.js';\nimport { squareNumber } from '../../plain/number/index.js';\nvar name = 'square';\nvar dependencies = ['typed'];\nexport var createSquare = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Compute the square of a value, `x * x`.\n * To avoid confusion with multiplying a square matrix by itself,\n * this function does not apply to matrices. If you wish to square\n * every element of a matrix, see the examples.\n *\n * Syntax:\n *\n * math.square(x)\n *\n * Examples:\n *\n * math.square(2) // returns number 4\n * math.square(3) // returns number 9\n * math.pow(3, 2) // returns number 9\n * math.multiply(3, 3) // returns number 9\n *\n * math.map([1, 2, 3, 4], math.square) // returns Array [1, 4, 9, 16]\n *\n * See also:\n *\n * multiply, cube, sqrt, pow\n *\n * @param {number | BigNumber | bigint | Fraction | Complex | Unit} x\n * Number for which to calculate the square\n * @return {number | BigNumber | bigint | Fraction | Complex | Unit}\n * Squared value\n */\n return typed(name, {\n number: squareNumber,\n Complex: function Complex(x) {\n return x.mul(x);\n },\n BigNumber: function BigNumber(x) {\n return x.times(x);\n },\n bigint: function bigint(x) {\n return x * x;\n },\n Fraction: function Fraction(x) {\n return x.mul(x);\n },\n Unit: function Unit(x) {\n return x.pow(2);\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { createMatAlgo01xDSid } from '../../type/matrix/utils/matAlgo01xDSid.js';\nimport { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo05xSfSf } from '../../type/matrix/utils/matAlgo05xSfSf.js';\nimport { createMatAlgo10xSids } from '../../type/matrix/utils/matAlgo10xSids.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nvar name = 'subtract';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'subtractScalar', 'unaryMinus', 'DenseMatrix', 'concat'];\nexport var createSubtract = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n subtractScalar,\n unaryMinus,\n DenseMatrix,\n concat\n } = _ref;\n // TODO: split function subtract in two: subtract and subtractScalar\n\n var matAlgo01xDSid = createMatAlgo01xDSid({\n typed\n });\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo05xSfSf = createMatAlgo05xSfSf({\n typed,\n equalScalar\n });\n var matAlgo10xSids = createMatAlgo10xSids({\n typed,\n DenseMatrix\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Subtract two values, `x - y`.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.subtract(x, y)\n *\n * Examples:\n *\n * math.subtract(5.3, 2) // returns number 3.3\n *\n * const a = math.complex(2, 3)\n * const b = math.complex(4, 1)\n * math.subtract(a, b) // returns Complex -2 + 2i\n *\n * math.subtract([5, 7, 4], 4) // returns Array [1, 3, 0]\n *\n * const c = math.unit('2.1 km')\n * const d = math.unit('500m')\n * math.subtract(c, d) // returns Unit 1.6 km\n *\n * See also:\n *\n * add\n *\n * @param {number | BigNumber | bigint | Fraction | Complex | Unit | Array | Matrix} x Initial value\n * @param {number | BigNumber | bigint | Fraction | Complex | Unit | Array | Matrix} y Value to subtract from `x`\n * @return {number | BigNumber | bigint | Fraction | Complex | Unit | Array | Matrix} Subtraction of `x` and `y`\n */\n return typed(name, {\n 'any, any': subtractScalar\n }, matrixAlgorithmSuite({\n elop: subtractScalar,\n SS: matAlgo05xSfSf,\n DS: matAlgo01xDSid,\n SD: matAlgo03xDSf,\n Ss: matAlgo12xSfs,\n sS: matAlgo10xSids\n }));\n});", "import { factory } from '../../utils/factory.js';\nimport { xgcdNumber } from '../../plain/number/index.js';\nvar name = 'xgcd';\nvar dependencies = ['typed', 'config', 'matrix', 'BigNumber'];\nexport var createXgcd = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n BigNumber\n } = _ref;\n /**\n * Calculate the extended greatest common divisor for two values.\n * See https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm.\n *\n * Syntax:\n *\n * math.xgcd(a, b)\n *\n * Examples:\n *\n * math.xgcd(8, 12) // returns [4, -1, 1]\n * math.gcd(8, 12) // returns 4\n * math.xgcd(36163, 21199) // returns [1247, -7, 12]\n *\n * See also:\n *\n * gcd, lcm\n *\n * @param {number | BigNumber} a An integer number\n * @param {number | BigNumber} b An integer number\n * @return {Array} Returns an array containing 3 integers `[div, m, n]`\n * where `div = gcd(a, b)` and `a*m + b*n = div`\n */\n return typed(name, {\n 'number, number': function number_number(a, b) {\n var res = xgcdNumber(a, b);\n return config.matrix === 'Array' ? res : matrix(res);\n },\n 'BigNumber, BigNumber': _xgcdBigNumber\n // TODO: implement support for Fraction\n });\n\n /**\n * Calculate xgcd for two BigNumbers\n * @param {BigNumber} a\n * @param {BigNumber} b\n * @return {BigNumber[]} result\n * @private\n */\n function _xgcdBigNumber(a, b) {\n // source: https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm\n var\n // used to swap two variables\n t;\n var\n // quotient\n q;\n var\n // remainder\n r;\n var zero = new BigNumber(0);\n var one = new BigNumber(1);\n var x = zero;\n var lastx = one;\n var y = one;\n var lasty = zero;\n if (!a.isInt() || !b.isInt()) {\n throw new Error('Parameters in function xgcd must be integer numbers');\n }\n while (!b.isZero()) {\n q = a.div(b).floor();\n r = a.mod(b);\n t = x;\n x = lastx.minus(q.times(x));\n lastx = t;\n t = y;\n y = lasty.minus(q.times(y));\n lasty = t;\n a = b;\n b = r;\n }\n var res;\n if (a.lt(zero)) {\n res = [a.neg(), lastx.neg(), lasty.neg()];\n } else {\n res = [a, !a.isZero() ? lastx : 0, lasty];\n }\n return config.matrix === 'Array' ? res : matrix(res);\n }\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'invmod';\nvar dependencies = ['typed', 'config', 'BigNumber', 'xgcd', 'equal', 'smaller', 'mod', 'add', 'isInteger'];\nexport var createInvmod = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n BigNumber,\n xgcd,\n equal,\n smaller,\n mod,\n add,\n isInteger\n } = _ref;\n /**\n * Calculate the (modular) multiplicative inverse of a modulo b. Solution to the equation `ax \u2263 1 (mod b)`\n * See https://en.wikipedia.org/wiki/Modular_multiplicative_inverse.\n *\n * Syntax:\n *\n * math.invmod(a, b)\n *\n * Examples:\n *\n * math.invmod(8, 12) // returns NaN\n * math.invmod(7, 13) // returns 2\n * math.invmod(15151, 15122) // returns 10429\n *\n * See also:\n *\n * gcd, xgcd\n *\n * @param {number | BigNumber} a An integer number\n * @param {number | BigNumber} b An integer number\n * @return {number | BigNumber } Returns an integer number\n * where `invmod(a,b)*a \u2263 1 (mod b)`\n */\n return typed(name, {\n 'number, number': invmod,\n 'BigNumber, BigNumber': invmod\n });\n function invmod(a, b) {\n if (!isInteger(a) || !isInteger(b)) throw new Error('Parameters in function invmod must be integer numbers');\n a = mod(a, b);\n if (equal(b, 0)) throw new Error('Divisor must be non zero');\n var res = xgcd(a, b);\n res = res.valueOf();\n var [gcd, inv] = res;\n if (!equal(gcd, BigNumber(1))) return NaN;\n inv = mod(inv, b);\n if (smaller(inv, BigNumber(0))) inv = add(inv, b);\n return inv;\n }\n});", "import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nvar name = 'matAlgo09xS0Sf';\nvar dependencies = ['typed', 'equalScalar'];\nexport var createMatAlgo09xS0Sf = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar\n } = _ref;\n /**\n * Iterates over SparseMatrix A and invokes the callback function f(Aij, Bij).\n * Callback function invoked NZA times, number of nonzero elements in A.\n *\n *\n * \u250C f(Aij, Bij) ; A(i,j) !== 0\n * C(i,j) = \u2524\n * \u2514 0 ; otherwise\n *\n *\n * @param {Matrix} a The SparseMatrix instance (A)\n * @param {Matrix} b The SparseMatrix instance (B)\n * @param {Function} callback The f(Aij,Bij) operation to invoke\n *\n * @return {Matrix} SparseMatrix (C)\n *\n * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294\n */\n return function matAlgo09xS0Sf(a, b, callback) {\n // sparse matrix arrays\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n var asize = a._size;\n var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();\n // sparse matrix arrays\n var bvalues = b._values;\n var bindex = b._index;\n var bptr = b._ptr;\n var bsize = b._size;\n var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();\n\n // validate dimensions\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n }\n\n // check rows & columns\n if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n }\n\n // rows & columns\n var rows = asize[0];\n var columns = asize[1];\n\n // datatype\n var dt;\n // equal signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n // callback signature to use\n var cf = callback;\n\n // process data types\n if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {\n // datatype\n dt = adt;\n // find signature that matches (dt, dt)\n eq = typed.find(equalScalar, [dt, dt]);\n // convert 0 to the same datatype\n zero = typed.convert(0, dt);\n // callback\n cf = typed.find(callback, [dt, dt]);\n }\n\n // result arrays\n var cvalues = avalues && bvalues ? [] : undefined;\n var cindex = [];\n var cptr = [];\n\n // workspaces\n var x = cvalues ? [] : undefined;\n // marks indicating we have a value in x for a given column\n var w = [];\n\n // vars\n var i, j, k, k0, k1;\n\n // loop columns\n for (j = 0; j < columns; j++) {\n // update cptr\n cptr[j] = cindex.length;\n // column mark\n var mark = j + 1;\n // check we need to process values\n if (x) {\n // loop B(:,j)\n for (k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) {\n // row\n i = bindex[k];\n // update workspace\n w[i] = mark;\n x[i] = bvalues[k];\n }\n }\n // loop A(:,j)\n for (k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {\n // row\n i = aindex[k];\n // check we need to process values\n if (x) {\n // b value @ i,j\n var vb = w[i] === mark ? x[i] : zero;\n // invoke f\n var vc = cf(avalues[k], vb);\n // check zero value\n if (!eq(vc, zero)) {\n // push index\n cindex.push(i);\n // push value\n cvalues.push(vc);\n }\n } else {\n // push index\n cindex.push(i);\n }\n }\n }\n // update cptr\n cptr[columns] = cindex.length;\n\n // return sparse matrix\n return a.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [rows, columns],\n datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined\n });\n };\n});", "import { factory } from '../../utils/factory.js';\nimport { createMatAlgo02xDS0 } from '../../type/matrix/utils/matAlgo02xDS0.js';\nimport { createMatAlgo09xS0Sf } from '../../type/matrix/utils/matAlgo09xS0Sf.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nvar name = 'dotMultiply';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'multiplyScalar', 'concat'];\nexport var createDotMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n multiplyScalar,\n concat\n } = _ref;\n var matAlgo02xDS0 = createMatAlgo02xDS0({\n typed,\n equalScalar\n });\n var matAlgo09xS0Sf = createMatAlgo09xS0Sf({\n typed,\n equalScalar\n });\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Multiply two matrices element wise. The function accepts both matrices and\n * scalar values.\n *\n * Syntax:\n *\n * math.dotMultiply(x, y)\n *\n * Examples:\n *\n * math.dotMultiply(2, 4) // returns 8\n *\n * a = [[9, 5], [6, 1]]\n * b = [[3, 2], [5, 2]]\n *\n * math.dotMultiply(a, b) // returns [[27, 10], [30, 2]]\n * math.multiply(a, b) // returns [[52, 28], [23, 14]]\n *\n * See also:\n *\n * multiply, divide, dotDivide\n *\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x Left hand value\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} y Right hand value\n * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} Multiplication of `x` and `y`\n */\n return typed(name, matrixAlgorithmSuite({\n elop: multiplyScalar,\n SS: matAlgo09xS0Sf,\n DS: matAlgo02xDS0,\n Ss: matAlgo11xS0s\n }));\n});", "/**\n * Bitwise and for Bignumbers\n *\n * Special Cases:\n * N & n = N\n * n & 0 = 0\n * n & -1 = n\n * n & n = n\n * I & I = I\n * -I & -I = -I\n * I & -I = 0\n * I & n = n\n * I & -n = I\n * -I & n = 0\n * -I & -n = -I\n *\n * @param {BigNumber} x\n * @param {BigNumber} y\n * @return {BigNumber} Result of `x` & `y`, is fully precise\n * @private\n */\nexport function bitAndBigNumber(x, y) {\n if (x.isFinite() && !x.isInteger() || y.isFinite() && !y.isInteger()) {\n throw new Error('Integers expected in function bitAnd');\n }\n var BigNumber = x.constructor;\n if (x.isNaN() || y.isNaN()) {\n return new BigNumber(NaN);\n }\n if (x.isZero() || y.eq(-1) || x.eq(y)) {\n return x;\n }\n if (y.isZero() || x.eq(-1)) {\n return y;\n }\n if (!x.isFinite() || !y.isFinite()) {\n if (!x.isFinite() && !y.isFinite()) {\n if (x.isNegative() === y.isNegative()) {\n return x;\n }\n return new BigNumber(0);\n }\n if (!x.isFinite()) {\n if (y.isNegative()) {\n return x;\n }\n if (x.isNegative()) {\n return new BigNumber(0);\n }\n return y;\n }\n if (!y.isFinite()) {\n if (x.isNegative()) {\n return y;\n }\n if (y.isNegative()) {\n return new BigNumber(0);\n }\n return x;\n }\n }\n return bitwise(x, y, function (a, b) {\n return a & b;\n });\n}\n\n/**\n * Bitwise not\n * @param {BigNumber} x\n * @return {BigNumber} Result of ~`x`, fully precise\n *\n */\nexport function bitNotBigNumber(x) {\n if (x.isFinite() && !x.isInteger()) {\n throw new Error('Integer expected in function bitNot');\n }\n var BigNumber = x.constructor;\n var prevPrec = BigNumber.precision;\n BigNumber.config({\n precision: 1E9\n });\n var result = x.plus(new BigNumber(1));\n result.s = -result.s || null;\n BigNumber.config({\n precision: prevPrec\n });\n return result;\n}\n\n/**\n * Bitwise OR for BigNumbers\n *\n * Special Cases:\n * N | n = N\n * n | 0 = n\n * n | -1 = -1\n * n | n = n\n * I | I = I\n * -I | -I = -I\n * I | -n = -1\n * I | -I = -1\n * I | n = I\n * -I | n = -I\n * -I | -n = -n\n *\n * @param {BigNumber} x\n * @param {BigNumber} y\n * @return {BigNumber} Result of `x` | `y`, fully precise\n */\nexport function bitOrBigNumber(x, y) {\n if (x.isFinite() && !x.isInteger() || y.isFinite() && !y.isInteger()) {\n throw new Error('Integers expected in function bitOr');\n }\n var BigNumber = x.constructor;\n if (x.isNaN() || y.isNaN()) {\n return new BigNumber(NaN);\n }\n var negOne = new BigNumber(-1);\n if (x.isZero() || y.eq(negOne) || x.eq(y)) {\n return y;\n }\n if (y.isZero() || x.eq(negOne)) {\n return x;\n }\n if (!x.isFinite() || !y.isFinite()) {\n if (!x.isFinite() && !x.isNegative() && y.isNegative() || x.isNegative() && !y.isNegative() && !y.isFinite()) {\n return negOne;\n }\n if (x.isNegative() && y.isNegative()) {\n return x.isFinite() ? x : y;\n }\n return x.isFinite() ? y : x;\n }\n return bitwise(x, y, function (a, b) {\n return a | b;\n });\n}\n\n/**\n * Applies bitwise function to numbers\n * @param {BigNumber} x\n * @param {BigNumber} y\n * @param {function (a, b)} func\n * @return {BigNumber}\n */\nexport function bitwise(x, y, func) {\n var BigNumber = x.constructor;\n var xBits, yBits;\n var xSign = +(x.s < 0);\n var ySign = +(y.s < 0);\n if (xSign) {\n xBits = decCoefficientToBinaryString(bitNotBigNumber(x));\n for (var i = 0; i < xBits.length; ++i) {\n xBits[i] ^= 1;\n }\n } else {\n xBits = decCoefficientToBinaryString(x);\n }\n if (ySign) {\n yBits = decCoefficientToBinaryString(bitNotBigNumber(y));\n for (var _i = 0; _i < yBits.length; ++_i) {\n yBits[_i] ^= 1;\n }\n } else {\n yBits = decCoefficientToBinaryString(y);\n }\n var minBits, maxBits, minSign;\n if (xBits.length <= yBits.length) {\n minBits = xBits;\n maxBits = yBits;\n minSign = xSign;\n } else {\n minBits = yBits;\n maxBits = xBits;\n minSign = ySign;\n }\n var shortLen = minBits.length;\n var longLen = maxBits.length;\n var expFuncVal = func(xSign, ySign) ^ 1;\n var outVal = new BigNumber(expFuncVal ^ 1);\n var twoPower = new BigNumber(1);\n var two = new BigNumber(2);\n var prevPrec = BigNumber.precision;\n BigNumber.config({\n precision: 1E9\n });\n while (shortLen > 0) {\n if (func(minBits[--shortLen], maxBits[--longLen]) === expFuncVal) {\n outVal = outVal.plus(twoPower);\n }\n twoPower = twoPower.times(two);\n }\n while (longLen > 0) {\n if (func(minSign, maxBits[--longLen]) === expFuncVal) {\n outVal = outVal.plus(twoPower);\n }\n twoPower = twoPower.times(two);\n }\n BigNumber.config({\n precision: prevPrec\n });\n if (expFuncVal === 0) {\n outVal.s = -outVal.s;\n }\n return outVal;\n}\n\n/* Extracted from decimal.js, and edited to specialize. */\nfunction decCoefficientToBinaryString(x) {\n // Convert to string\n var a = x.d; // array with digits\n var r = a[0] + '';\n for (var i = 1; i < a.length; ++i) {\n var s = a[i] + '';\n for (var z = 7 - s.length; z--;) {\n s = '0' + s;\n }\n r += s;\n }\n var j = r.length;\n while (r.charAt(j) === '0') {\n j--;\n }\n var xe = x.e;\n var str = r.slice(0, j + 1 || 1);\n var strL = str.length;\n if (xe > 0) {\n if (++xe > strL) {\n // Append zeros.\n xe -= strL;\n while (xe--) {\n str += '0';\n }\n } else if (xe < strL) {\n str = str.slice(0, xe) + '.' + str.slice(xe);\n }\n }\n\n // Convert from base 10 (decimal) to base 2\n var arr = [0];\n for (var _i2 = 0; _i2 < str.length;) {\n var arrL = arr.length;\n while (arrL--) {\n arr[arrL] *= 10;\n }\n arr[0] += parseInt(str.charAt(_i2++)); // convert to int\n for (var _j = 0; _j < arr.length; ++_j) {\n if (arr[_j] > 1) {\n if (arr[_j + 1] === null || arr[_j + 1] === undefined) {\n arr[_j + 1] = 0;\n }\n arr[_j + 1] += arr[_j] >> 1;\n arr[_j] &= 1;\n }\n }\n }\n return arr.reverse();\n}\n\n/**\n * Bitwise XOR for BigNumbers\n *\n * Special Cases:\n * N ^ n = N\n * n ^ 0 = n\n * n ^ n = 0\n * n ^ -1 = ~n\n * I ^ n = I\n * I ^ -n = -I\n * I ^ -I = -1\n * -I ^ n = -I\n * -I ^ -n = I\n *\n * @param {BigNumber} x\n * @param {BigNumber} y\n * @return {BigNumber} Result of `x` ^ `y`, fully precise\n *\n */\nexport function bitXor(x, y) {\n if (x.isFinite() && !x.isInteger() || y.isFinite() && !y.isInteger()) {\n throw new Error('Integers expected in function bitXor');\n }\n var BigNumber = x.constructor;\n if (x.isNaN() || y.isNaN()) {\n return new BigNumber(NaN);\n }\n if (x.isZero()) {\n return y;\n }\n if (y.isZero()) {\n return x;\n }\n if (x.eq(y)) {\n return new BigNumber(0);\n }\n var negOne = new BigNumber(-1);\n if (x.eq(negOne)) {\n return bitNotBigNumber(y);\n }\n if (y.eq(negOne)) {\n return bitNotBigNumber(x);\n }\n if (!x.isFinite() || !y.isFinite()) {\n if (!x.isFinite() && !y.isFinite()) {\n return negOne;\n }\n return new BigNumber(x.isNegative() === y.isNegative() ? Infinity : -Infinity);\n }\n return bitwise(x, y, function (a, b) {\n return a ^ b;\n });\n}\n\n/**\n * Bitwise left shift\n *\n * Special Cases:\n * n << -n = N\n * n << N = N\n * N << n = N\n * n << 0 = n\n * 0 << n = 0\n * I << I = N\n * I << n = I\n * n << I = I\n *\n * @param {BigNumber} x\n * @param {BigNumber} y\n * @return {BigNumber} Result of `x` << `y`\n *\n */\nexport function leftShiftBigNumber(x, y) {\n if (x.isFinite() && !x.isInteger() || y.isFinite() && !y.isInteger()) {\n throw new Error('Integers expected in function leftShift');\n }\n var BigNumber = x.constructor;\n if (x.isNaN() || y.isNaN() || y.isNegative() && !y.isZero()) {\n return new BigNumber(NaN);\n }\n if (x.isZero() || y.isZero()) {\n return x;\n }\n if (!x.isFinite() && !y.isFinite()) {\n return new BigNumber(NaN);\n }\n\n // Math.pow(2, y) is fully precise for y < 55, and fast\n if (y.lt(55)) {\n return x.times(Math.pow(2, y.toNumber()) + '');\n }\n return x.times(new BigNumber(2).pow(y));\n}\n\n/*\n * Special Cases:\n * n >> -n = N\n * n >> N = N\n * N >> n = N\n * I >> I = N\n * n >> 0 = n\n * I >> n = I\n * -I >> n = -I\n * -I >> I = -I\n * n >> I = I\n * -n >> I = -1\n * 0 >> n = 0\n *\n * @param {BigNumber} value\n * @param {BigNumber} value\n * @return {BigNumber} Result of `x` >> `y`\n *\n */\nexport function rightArithShiftBigNumber(x, y) {\n if (x.isFinite() && !x.isInteger() || y.isFinite() && !y.isInteger()) {\n throw new Error('Integers expected in function rightArithShift');\n }\n var BigNumber = x.constructor;\n if (x.isNaN() || y.isNaN() || y.isNegative() && !y.isZero()) {\n return new BigNumber(NaN);\n }\n if (x.isZero() || y.isZero()) {\n return x;\n }\n if (!y.isFinite()) {\n if (x.isNegative()) {\n return new BigNumber(-1);\n }\n if (!x.isFinite()) {\n return new BigNumber(NaN);\n }\n return new BigNumber(0);\n }\n\n // Math.pow(2, y) is fully precise for y < 55, and fast\n if (y.lt(55)) {\n return x.div(Math.pow(2, y.toNumber()) + '').floor();\n }\n return x.div(new BigNumber(2).pow(y)).floor();\n}", "import { bitAndBigNumber } from '../../utils/bignumber/bitwise.js';\nimport { createMatAlgo02xDS0 } from '../../type/matrix/utils/matAlgo02xDS0.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatAlgo06xS0S0 } from '../../type/matrix/utils/matAlgo06xS0S0.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { bitAndNumber } from '../../plain/number/index.js';\nvar name = 'bitAnd';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'concat'];\nexport var createBitAnd = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n concat\n } = _ref;\n var matAlgo02xDS0 = createMatAlgo02xDS0({\n typed,\n equalScalar\n });\n var matAlgo06xS0S0 = createMatAlgo06xS0S0({\n typed,\n equalScalar\n });\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Bitwise AND two values, `x & y`.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.bitAnd(x, y)\n *\n * Examples:\n *\n * math.bitAnd(53, 131) // returns number 1\n *\n * math.bitAnd([1, 12, 31], 42) // returns Array [0, 8, 10]\n *\n * See also:\n *\n * bitNot, bitOr, bitXor, leftShift, rightArithShift, rightLogShift\n *\n * @param {number | BigNumber | bigint | Array | Matrix} x First value to and\n * @param {number | BigNumber | bigint | Array | Matrix} y Second value to and\n * @return {number | BigNumber | bigint | Array | Matrix} AND of `x` and `y`\n */\n return typed(name, {\n 'number, number': bitAndNumber,\n 'BigNumber, BigNumber': bitAndBigNumber,\n 'bigint, bigint': (x, y) => x & y\n }, matrixAlgorithmSuite({\n SS: matAlgo06xS0S0,\n DS: matAlgo02xDS0,\n Ss: matAlgo11xS0s\n }));\n});", "import { bitNotBigNumber } from '../../utils/bignumber/bitwise.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { bitNotNumber } from '../../plain/number/index.js';\nvar name = 'bitNot';\nvar dependencies = ['typed'];\nexport var createBitNot = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Bitwise NOT value, `~x`.\n * For matrices, the function is evaluated element wise.\n * For units, the function is evaluated on the best prefix base.\n *\n * Syntax:\n *\n * math.bitNot(x)\n *\n * Examples:\n *\n * math.bitNot(1) // returns number -2\n *\n * math.bitNot([2, -3, 4]) // returns Array [-3, 2, -5]\n *\n * See also:\n *\n * bitAnd, bitOr, bitXor, leftShift, rightArithShift, rightLogShift\n *\n * @param {number | BigNumber | bigint | Array | Matrix} x Value to not\n * @return {number | BigNumber | bigint | Array | Matrix} NOT of `x`\n */\n return typed(name, {\n number: bitNotNumber,\n BigNumber: bitNotBigNumber,\n bigint: x => ~x,\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { bitOrBigNumber } from '../../utils/bignumber/bitwise.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatAlgo10xSids } from '../../type/matrix/utils/matAlgo10xSids.js';\nimport { createMatAlgo04xSidSid } from '../../type/matrix/utils/matAlgo04xSidSid.js';\nimport { createMatAlgo01xDSid } from '../../type/matrix/utils/matAlgo01xDSid.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { bitOrNumber } from '../../plain/number/index.js';\nvar name = 'bitOr';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'DenseMatrix', 'concat'];\nexport var createBitOr = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n DenseMatrix,\n concat\n } = _ref;\n var matAlgo01xDSid = createMatAlgo01xDSid({\n typed\n });\n var matAlgo04xSidSid = createMatAlgo04xSidSid({\n typed,\n equalScalar\n });\n var matAlgo10xSids = createMatAlgo10xSids({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Bitwise OR two values, `x | y`.\n * For matrices, the function is evaluated element wise.\n * For units, the function is evaluated on the lowest print base.\n *\n * Syntax:\n *\n * math.bitOr(x, y)\n *\n * Examples:\n *\n * math.bitOr(1, 2) // returns number 3\n *\n * math.bitOr([1, 2, 3], 4) // returns Array [5, 6, 7]\n *\n * See also:\n *\n * bitAnd, bitNot, bitXor, leftShift, rightArithShift, rightLogShift\n *\n * @param {number | BigNumber | bigint | Array | Matrix} x First value to or\n * @param {number | BigNumber | bigint | Array | Matrix} y Second value to or\n * @return {number | BigNumber | bigint | Array | Matrix} OR of `x` and `y`\n */\n return typed(name, {\n 'number, number': bitOrNumber,\n 'BigNumber, BigNumber': bitOrBigNumber,\n 'bigint, bigint': (x, y) => x | y\n }, matrixAlgorithmSuite({\n SS: matAlgo04xSidSid,\n DS: matAlgo01xDSid,\n Ss: matAlgo10xSids\n }));\n});", "import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nvar name = 'matAlgo07xSSf';\nvar dependencies = ['typed', 'DenseMatrix'];\nexport var createMatAlgo07xSSf = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n DenseMatrix\n } = _ref;\n /**\n * Iterates over SparseMatrix A and SparseMatrix B items (zero and nonzero) and invokes the callback function f(Aij, Bij).\n * Callback function invoked MxN times.\n *\n * C(i,j) = f(Aij, Bij)\n *\n * @param {Matrix} a The SparseMatrix instance (A)\n * @param {Matrix} b The SparseMatrix instance (B)\n * @param {Function} callback The f(Aij,Bij) operation to invoke\n *\n * @return {Matrix} DenseMatrix (C)\n *\n * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294\n */\n return function matAlgo07xSSf(a, b, callback) {\n // sparse matrix arrays\n var asize = a._size;\n var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();\n // sparse matrix arrays\n var bsize = b._size;\n var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();\n\n // validate dimensions\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n }\n\n // check rows & columns\n if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n }\n\n // rows & columns\n var rows = asize[0];\n var columns = asize[1];\n\n // datatype\n var dt;\n // zero value\n var zero = 0;\n // callback signature to use\n var cf = callback;\n\n // process data types\n if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {\n // datatype\n dt = adt;\n // convert 0 to the same datatype\n zero = typed.convert(0, dt);\n // callback\n cf = typed.find(callback, [dt, dt]);\n }\n\n // vars\n var i, j;\n\n // result arrays\n var cdata = [];\n // initialize c\n for (i = 0; i < rows; i++) {\n cdata[i] = [];\n }\n\n // workspaces\n var xa = [];\n var xb = [];\n // marks indicating we have a value in x for a given column\n var wa = [];\n var wb = [];\n\n // loop columns\n for (j = 0; j < columns; j++) {\n // columns mark\n var mark = j + 1;\n // scatter the values of A(:,j) into workspace\n _scatter(a, j, wa, xa, mark);\n // scatter the values of B(:,j) into workspace\n _scatter(b, j, wb, xb, mark);\n // loop rows\n for (i = 0; i < rows; i++) {\n // matrix values @ i,j\n var va = wa[i] === mark ? xa[i] : zero;\n var vb = wb[i] === mark ? xb[i] : zero;\n // invoke callback\n cdata[i][j] = cf(va, vb);\n }\n }\n\n // return dense matrix\n return new DenseMatrix({\n data: cdata,\n size: [rows, columns],\n datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined\n });\n };\n function _scatter(m, j, w, x, mark) {\n // a arrays\n var values = m._values;\n var index = m._index;\n var ptr = m._ptr;\n // loop values in column j\n for (var k = ptr[j], k1 = ptr[j + 1]; k < k1; k++) {\n // row\n var i = index[k];\n // update workspace\n w[i] = mark;\n x[i] = values[k];\n }\n }\n});", "import { bitXor as bigBitXor } from '../../utils/bignumber/bitwise.js';\nimport { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo07xSSf } from '../../type/matrix/utils/matAlgo07xSSf.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { bitXorNumber } from '../../plain/number/index.js';\nvar name = 'bitXor';\nvar dependencies = ['typed', 'matrix', 'DenseMatrix', 'concat'];\nexport var createBitXor = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n DenseMatrix,\n concat\n } = _ref;\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo07xSSf = createMatAlgo07xSSf({\n typed,\n DenseMatrix\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Bitwise XOR two values, `x ^ y`.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.bitXor(x, y)\n *\n * Examples:\n *\n * math.bitXor(1, 2) // returns number 3\n *\n * math.bitXor([2, 3, 4], 4) // returns Array [6, 7, 0]\n *\n * See also:\n *\n * bitAnd, bitNot, bitOr, leftShift, rightArithShift, rightLogShift\n *\n * @param {number | BigNumber | bigint | Array | Matrix} x First value to xor\n * @param {number | BigNumber | bigint | Array | Matrix} y Second value to xor\n * @return {number | BigNumber | bigint | Array | Matrix} XOR of `x` and `y`\n */\n return typed(name, {\n 'number, number': bitXorNumber,\n 'BigNumber, BigNumber': bigBitXor,\n 'bigint, bigint': (x, y) => x ^ y\n }, matrixAlgorithmSuite({\n SS: matAlgo07xSSf,\n DS: matAlgo03xDSf,\n Ss: matAlgo12xSfs\n }));\n});", "import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nvar name = 'arg';\nvar dependencies = ['typed'];\nexport var createArg = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Compute the argument of a complex value.\n * For a complex number `a + bi`, the argument is computed as `atan2(b, a)`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.arg(x)\n *\n * Examples:\n *\n * const a = math.complex(2, 2)\n * math.arg(a) / math.pi // returns number 0.25\n *\n * const b = math.complex('2 + 3i')\n * math.arg(b) // returns number 0.982793723247329\n * math.atan2(3, 2) // returns number 0.982793723247329\n *\n * See also:\n *\n * re, im, conj, abs\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x\n * A complex number or array with complex numbers\n * @return {number | BigNumber | Array | Matrix} The argument of x\n */\n return typed(name, {\n number: function number(x) {\n return Math.atan2(0, x);\n },\n BigNumber: function BigNumber(x) {\n return x.constructor.atan2(0, x);\n },\n Complex: function Complex(x) {\n return x.arg();\n },\n // TODO: implement BigNumber support for function arg\n\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nvar name = 'conj';\nvar dependencies = ['typed'];\nexport var createConj = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Compute the complex conjugate of a complex value.\n * If `x = a+bi`, the complex conjugate of `x` is `a - bi`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.conj(x)\n *\n * Examples:\n *\n * math.conj(math.complex('2 + 3i')) // returns Complex 2 - 3i\n * math.conj(math.complex('2 - 3i')) // returns Complex 2 + 3i\n * math.conj(math.complex('-5.2i')) // returns Complex 5.2i\n *\n * See also:\n *\n * re, im, arg, abs\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x\n * A complex number or array with complex numbers\n * @return {number | BigNumber | Complex | Array | Matrix}\n * The complex conjugate of x\n */\n return typed(name, {\n 'number | BigNumber | Fraction': x => x,\n Complex: x => x.conjugate(),\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nvar name = 'im';\nvar dependencies = ['typed'];\nexport var createIm = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Get the imaginary part of a complex number.\n * For a complex number `a + bi`, the function returns `b`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.im(x)\n *\n * Examples:\n *\n * const a = math.complex(2, 3)\n * math.re(a) // returns number 2\n * math.im(a) // returns number 3\n *\n * math.re(math.complex('-5.2i')) // returns number -5.2\n * math.re(math.complex(2.4)) // returns number 0\n *\n * See also:\n *\n * re, conj, abs, arg\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x\n * A complex number or array with complex numbers\n * @return {number | BigNumber | Array | Matrix} The imaginary part of x\n */\n return typed(name, {\n number: () => 0,\n 'BigNumber | Fraction': x => x.mul(0),\n Complex: x => x.im,\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nvar name = 're';\nvar dependencies = ['typed'];\nexport var createRe = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Get the real part of a complex number.\n * For a complex number `a + bi`, the function returns `a`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.re(x)\n *\n * Examples:\n *\n * const a = math.complex(2, 3)\n * math.re(a) // returns number 2\n * math.im(a) // returns number 3\n *\n * math.re(math.complex('-5.2i')) // returns number 0\n * math.re(math.complex(2.4)) // returns number 2.4\n *\n * See also:\n *\n * im, conj, abs, arg\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x\n * A complex number or array with complex numbers\n * @return {number | BigNumber | Array | Matrix} The real part of x\n */\n return typed(name, {\n 'number | BigNumber | Fraction': x => x,\n Complex: x => x.re,\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { notNumber } from '../../plain/number/index.js';\nvar name = 'not';\nvar dependencies = ['typed'];\nexport var createNot = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Logical `not`. Flips boolean value of a given parameter.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.not(x)\n *\n * Examples:\n *\n * math.not(2) // returns false\n * math.not(0) // returns true\n * math.not(true) // returns false\n *\n * a = [2, -7, 0]\n * math.not(a) // returns [false, false, true]\n *\n * See also:\n *\n * and, or, xor\n *\n * @param {number | BigNumber | bigint | Complex | Unit | Array | Matrix} x First value to check\n * @return {boolean | Array | Matrix}\n * Returns true when input is a zero or empty value.\n */\n return typed(name, {\n 'null | undefined': () => true,\n number: notNumber,\n Complex: function Complex(x) {\n return x.re === 0 && x.im === 0;\n },\n BigNumber: function BigNumber(x) {\n return x.isZero() || x.isNaN();\n },\n bigint: x => !x,\n Unit: typed.referToSelf(self => x => typed.find(self, x.valueType())(x.value)),\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatAlgo05xSfSf } from '../../type/matrix/utils/matAlgo05xSfSf.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { orNumber } from '../../plain/number/index.js';\nvar name = 'or';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'DenseMatrix', 'concat'];\nexport var createOr = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n DenseMatrix,\n concat\n } = _ref;\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo05xSfSf = createMatAlgo05xSfSf({\n typed,\n equalScalar\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Logical `or`. Test if at least one value is defined with a nonzero/nonempty value.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.or(x, y)\n *\n * Examples:\n *\n * math.or(2, 4) // returns true\n *\n * a = [2, 5, 0]\n * b = [0, 22, 0]\n * c = 0\n *\n * math.or(a, b) // returns [true, true, false]\n * math.or(b, c) // returns [false, true, false]\n *\n * See also:\n *\n * and, not, xor\n *\n * @param {number | BigNumber | bigint | Complex | Unit | Array | Matrix} x First value to check\n * @param {number | BigNumber | bigint | Complex | Unit | Array | Matrix} y Second value to check\n * @return {boolean | Array | Matrix}\n * Returns true when one of the inputs is defined with a nonzero/nonempty value.\n */\n return typed(name, {\n 'number, number': orNumber,\n 'Complex, Complex': function Complex_Complex(x, y) {\n return x.re !== 0 || x.im !== 0 || y.re !== 0 || y.im !== 0;\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n return !x.isZero() && !x.isNaN() || !y.isZero() && !y.isNaN();\n },\n 'bigint, bigint': orNumber,\n 'Unit, Unit': typed.referToSelf(self => (x, y) => self(x.value || 0, y.value || 0))\n }, matrixAlgorithmSuite({\n SS: matAlgo05xSfSf,\n DS: matAlgo03xDSf,\n Ss: matAlgo12xSfs\n }));\n});", "import { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo07xSSf } from '../../type/matrix/utils/matAlgo07xSSf.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { xorNumber } from '../../plain/number/index.js';\nvar name = 'xor';\nvar dependencies = ['typed', 'matrix', 'DenseMatrix', 'concat'];\nexport var createXor = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n DenseMatrix,\n concat\n } = _ref;\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo07xSSf = createMatAlgo07xSSf({\n typed,\n DenseMatrix\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Logical `xor`. Test whether one and only one value is defined with a nonzero/nonempty value.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.xor(x, y)\n *\n * Examples:\n *\n * math.xor(2, 4) // returns false\n *\n * a = [2, 0, 0]\n * b = [2, 7, 0]\n * c = 0\n *\n * math.xor(a, b) // returns [false, true, false]\n * math.xor(a, c) // returns [true, false, false]\n *\n * See also:\n *\n * and, not, or\n *\n * @param {number | BigNumber | bigint | Complex | Unit | Array | Matrix} x First value to check\n * @param {number | BigNumber | bigint | Complex | Unit | Array | Matrix} y Second value to check\n * @return {boolean | Array | Matrix}\n * Returns true when one and only one input is defined with a nonzero/nonempty value.\n */\n return typed(name, {\n 'number, number': xorNumber,\n 'Complex, Complex': function Complex_Complex(x, y) {\n return (x.re !== 0 || x.im !== 0) !== (y.re !== 0 || y.im !== 0);\n },\n 'bigint, bigint': xorNumber,\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n return (!x.isZero() && !x.isNaN()) !== (!y.isZero() && !y.isNaN());\n },\n 'Unit, Unit': typed.referToSelf(self => (x, y) => self(x.value || 0, y.value || 0))\n }, matrixAlgorithmSuite({\n SS: matAlgo07xSSf,\n DS: matAlgo03xDSf,\n Ss: matAlgo12xSfs\n }));\n});", "import { isBigNumber, isMatrix, isNumber } from '../../utils/is.js';\nimport { clone } from '../../utils/object.js';\nimport { arraySize, concat as _concat } from '../../utils/array.js';\nimport { IndexError } from '../../error/IndexError.js';\nimport { DimensionError } from '../../error/DimensionError.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'concat';\nvar dependencies = ['typed', 'matrix', 'isInteger'];\nexport var createConcat = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n isInteger\n } = _ref;\n /**\n * Concatenate two or more matrices.\n *\n * Syntax:\n *\n * math.concat(A, B, C, ...)\n * math.concat(A, B, C, ..., dim)\n *\n * Where:\n *\n * - `dim: number` is a zero-based dimension over which to concatenate the matrices.\n * By default the last dimension of the matrices.\n *\n * Examples:\n *\n * const A = [[1, 2], [5, 6]]\n * const B = [[3, 4], [7, 8]]\n *\n * math.concat(A, B) // returns [[1, 2, 3, 4], [5, 6, 7, 8]]\n * math.concat(A, B, 0) // returns [[1, 2], [5, 6], [3, 4], [7, 8]]\n * math.concat('hello', ' ', 'world') // returns 'hello world'\n *\n * See also:\n *\n * size, squeeze, subset, transpose\n *\n * @param {... Array | Matrix} args Two or more matrices\n * @return {Array | Matrix} Concatenated matrix\n */\n return typed(name, {\n // TODO: change signature to '...Array | Matrix, dim?' when supported\n '...Array | Matrix | number | BigNumber': function Array__Matrix__number__BigNumber(args) {\n var i;\n var len = args.length;\n var dim = -1; // zero-based dimension\n var prevDim;\n var asMatrix = false;\n var matrices = []; // contains multi dimensional arrays\n\n for (i = 0; i < len; i++) {\n var arg = args[i];\n\n // test whether we need to return a Matrix (if not we return an Array)\n if (isMatrix(arg)) {\n asMatrix = true;\n }\n if (isNumber(arg) || isBigNumber(arg)) {\n if (i !== len - 1) {\n throw new Error('Dimension must be specified as last argument');\n }\n\n // last argument contains the dimension on which to concatenate\n prevDim = dim;\n dim = arg.valueOf(); // change BigNumber to number\n\n if (!isInteger(dim)) {\n throw new TypeError('Integer number expected for dimension');\n }\n if (dim < 0 || i > 0 && dim > prevDim) {\n // TODO: would be more clear when throwing a DimensionError here\n throw new IndexError(dim, prevDim + 1);\n }\n } else {\n // this is a matrix or array\n var m = clone(arg).valueOf();\n var size = arraySize(m);\n matrices[i] = m;\n prevDim = dim;\n dim = size.length - 1;\n\n // verify whether each of the matrices has the same number of dimensions\n if (i > 0 && dim !== prevDim) {\n throw new DimensionError(prevDim + 1, dim + 1);\n }\n }\n }\n if (matrices.length === 0) {\n throw new SyntaxError('At least one matrix expected');\n }\n var res = matrices.shift();\n while (matrices.length) {\n res = _concat(res, matrices.shift(), dim);\n }\n return asMatrix ? matrix(res) : res;\n },\n '...string': function string(args) {\n return args.join('');\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { isMatrix } from '../../utils/is.js';\nimport { clone } from '../../utils/object.js';\nimport { validateIndex } from '../../utils/array.js';\nvar name = 'column';\nvar dependencies = ['typed', 'Index', 'matrix', 'range'];\nexport var createColumn = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Index,\n matrix,\n range\n } = _ref;\n /**\n * Return a column from a Matrix.\n *\n * Syntax:\n *\n * math.column(value, index)\n *\n * Example:\n *\n * // get a column\n * const d = [[1, 2], [3, 4]]\n * math.column(d, 1) // returns [[2], [4]]\n *\n * See also:\n *\n * row\n *\n * @param {Array | Matrix } value An array or matrix\n * @param {number} column The index of the column\n * @return {Array | Matrix} The retrieved column\n */\n return typed(name, {\n 'Matrix, number': _column,\n 'Array, number': function Array_number(value, column) {\n return _column(matrix(clone(value)), column).valueOf();\n }\n });\n\n /**\n * Retrieve a column of a matrix\n * @param {Matrix } value A matrix\n * @param {number} column The index of the column\n * @return {Matrix} The retrieved column\n */\n function _column(value, column) {\n // check dimensions\n if (value.size().length !== 2) {\n throw new Error('Only two dimensional matrix is supported');\n }\n validateIndex(column, value.size()[1]);\n var rowRange = range(0, value.size()[0]);\n var index = new Index(rowRange, column);\n var result = value.subset(index);\n return isMatrix(result) ? result : matrix([[result]]);\n }\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'count';\nvar dependencies = ['typed', 'size', 'prod'];\nexport var createCount = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n prod\n } = _ref;\n /**\n * Count the number of elements of a matrix, array or string.\n *\n * Syntax:\n *\n * math.count(x)\n *\n * Examples:\n *\n * math.count('hello world') // returns 11\n * const A = [[1, 2, 3], [4, 5, 6]]\n * math.count(A) // returns 6\n * math.count(math.range(1,6)) // returns 5\n *\n * See also:\n *\n * size\n *\n * @param {string | Array | Matrix} x A matrix or string\n * @return {number} An integer with the elements in `x`.\n */\n return typed(name, {\n string: function string(x) {\n return x.length;\n },\n 'Matrix | Array': function Matrix__Array(x) {\n return prod(size(x));\n }\n });\n});", "import { arraySize, squeeze } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'cross';\nvar dependencies = ['typed', 'matrix', 'subtract', 'multiply'];\nexport var createCross = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n subtract,\n multiply\n } = _ref;\n /**\n * Calculate the cross product for two vectors in three dimensional space.\n * The cross product of `A = [a1, a2, a3]` and `B = [b1, b2, b3]` is defined\n * as:\n *\n * cross(A, B) = [\n * a2 * b3 - a3 * b2,\n * a3 * b1 - a1 * b3,\n * a1 * b2 - a2 * b1\n * ]\n *\n * If one of the input vectors has a dimension greater than 1, the output\n * vector will be a 1x3 (2-dimensional) matrix.\n *\n * Syntax:\n *\n * math.cross(x, y)\n *\n * Examples:\n *\n * math.cross([1, 1, 0], [0, 1, 1]) // Returns [1, -1, 1]\n * math.cross([3, -3, 1], [4, 9, 2]) // Returns [-15, -2, 39]\n * math.cross([2, 3, 4], [5, 6, 7]) // Returns [-3, 6, -3]\n * math.cross([[1, 2, 3]], [[4], [5], [6]]) // Returns [[-3, 6, -3]]\n *\n * See also:\n *\n * dot, multiply\n *\n * @param {Array | Matrix} x First vector\n * @param {Array | Matrix} y Second vector\n * @return {Array | Matrix} Returns the cross product of `x` and `y`\n */\n return typed(name, {\n 'Matrix, Matrix': function Matrix_Matrix(x, y) {\n return matrix(_cross(x.toArray(), y.toArray()));\n },\n 'Matrix, Array': function Matrix_Array(x, y) {\n return matrix(_cross(x.toArray(), y));\n },\n 'Array, Matrix': function Array_Matrix(x, y) {\n return matrix(_cross(x, y.toArray()));\n },\n 'Array, Array': _cross\n });\n\n /**\n * Calculate the cross product for two arrays\n * @param {Array} x First vector\n * @param {Array} y Second vector\n * @returns {Array} Returns the cross product of x and y\n * @private\n */\n function _cross(x, y) {\n var highestDimension = Math.max(arraySize(x).length, arraySize(y).length);\n x = squeeze(x);\n y = squeeze(y);\n var xSize = arraySize(x);\n var ySize = arraySize(y);\n if (xSize.length !== 1 || ySize.length !== 1 || xSize[0] !== 3 || ySize[0] !== 3) {\n throw new RangeError('Vectors with length 3 expected ' + '(Size A = [' + xSize.join(', ') + '], B = [' + ySize.join(', ') + '])');\n }\n var product = [subtract(multiply(x[1], y[2]), multiply(x[2], y[1])), subtract(multiply(x[2], y[0]), multiply(x[0], y[2])), subtract(multiply(x[0], y[1]), multiply(x[1], y[0]))];\n if (highestDimension > 1) {\n return [product];\n } else {\n return product;\n }\n }\n});", "import { isMatrix } from '../../utils/is.js';\nimport { arraySize } from '../../utils/array.js';\nimport { isInteger } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'diag';\nvar dependencies = ['typed', 'matrix', 'DenseMatrix', 'SparseMatrix'];\nexport var createDiag = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n DenseMatrix,\n SparseMatrix\n } = _ref;\n /**\n * Create a diagonal matrix or retrieve the diagonal of a matrix\n *\n * When `x` is a vector, a matrix with vector `x` on the diagonal will be returned.\n * When `x` is a two dimensional matrix, the matrixes `k`th diagonal will be returned as vector.\n * When k is positive, the values are placed on the super diagonal.\n * When k is negative, the values are placed on the sub diagonal.\n *\n * Syntax:\n *\n * math.diag(X)\n * math.diag(X, format)\n * math.diag(X, k)\n * math.diag(X, k, format)\n *\n * Examples:\n *\n * // create a diagonal matrix\n * math.diag([1, 2, 3]) // returns [[1, 0, 0], [0, 2, 0], [0, 0, 3]]\n * math.diag([1, 2, 3], 1) // returns [[0, 1, 0, 0], [0, 0, 2, 0], [0, 0, 0, 3]]\n * math.diag([1, 2, 3], -1) // returns [[0, 0, 0], [1, 0, 0], [0, 2, 0], [0, 0, 3]]\n *\n * // retrieve the diagonal from a matrix\n * const a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]\n * math.diag(a) // returns [1, 5, 9]\n *\n * See also:\n *\n * ones, zeros, identity\n *\n * @param {Matrix | Array} x A two dimensional matrix or a vector\n * @param {number | BigNumber} [k=0] The diagonal where the vector will be filled\n * in or retrieved.\n * @param {string} [format='dense'] The matrix storage format.\n *\n * @returns {Matrix | Array} Diagonal matrix from input vector, or diagonal from input matrix.\n */\n return typed(name, {\n // FIXME: simplify this huge amount of signatures as soon as typed-function supports optional arguments\n\n Array: function Array(x) {\n return _diag(x, 0, arraySize(x), null);\n },\n 'Array, number': function Array_number(x, k) {\n return _diag(x, k, arraySize(x), null);\n },\n 'Array, BigNumber': function Array_BigNumber(x, k) {\n return _diag(x, k.toNumber(), arraySize(x), null);\n },\n 'Array, string': function Array_string(x, format) {\n return _diag(x, 0, arraySize(x), format);\n },\n 'Array, number, string': function Array_number_string(x, k, format) {\n return _diag(x, k, arraySize(x), format);\n },\n 'Array, BigNumber, string': function Array_BigNumber_string(x, k, format) {\n return _diag(x, k.toNumber(), arraySize(x), format);\n },\n Matrix: function Matrix(x) {\n return _diag(x, 0, x.size(), x.storage());\n },\n 'Matrix, number': function Matrix_number(x, k) {\n return _diag(x, k, x.size(), x.storage());\n },\n 'Matrix, BigNumber': function Matrix_BigNumber(x, k) {\n return _diag(x, k.toNumber(), x.size(), x.storage());\n },\n 'Matrix, string': function Matrix_string(x, format) {\n return _diag(x, 0, x.size(), format);\n },\n 'Matrix, number, string': function Matrix_number_string(x, k, format) {\n return _diag(x, k, x.size(), format);\n },\n 'Matrix, BigNumber, string': function Matrix_BigNumber_string(x, k, format) {\n return _diag(x, k.toNumber(), x.size(), format);\n }\n });\n\n /**\n * Creeate diagonal matrix from a vector or vice versa\n * @param {Array | Matrix} x\n * @param {number} k\n * @param {string} format Storage format for matrix. If null,\n * an Array is returned\n * @returns {Array | Matrix}\n * @private\n */\n function _diag(x, k, size, format) {\n if (!isInteger(k)) {\n throw new TypeError('Second parameter in function diag must be an integer');\n }\n var kSuper = k > 0 ? k : 0;\n var kSub = k < 0 ? -k : 0;\n\n // check dimensions\n switch (size.length) {\n case 1:\n return _createDiagonalMatrix(x, k, format, size[0], kSub, kSuper);\n case 2:\n return _getDiagonal(x, k, format, size, kSub, kSuper);\n }\n throw new RangeError('Matrix for function diag must be 2 dimensional');\n }\n function _createDiagonalMatrix(x, k, format, l, kSub, kSuper) {\n // matrix size\n var ms = [l + kSub, l + kSuper];\n if (format && format !== 'sparse' && format !== 'dense') {\n throw new TypeError(\"Unknown matrix type \".concat(format, \"\\\"\"));\n }\n\n // create diagonal matrix\n var m = format === 'sparse' ? SparseMatrix.diagonal(ms, x, k) : DenseMatrix.diagonal(ms, x, k);\n // check we need to return a matrix\n return format !== null ? m : m.valueOf();\n }\n function _getDiagonal(x, k, format, s, kSub, kSuper) {\n // check x is a Matrix\n if (isMatrix(x)) {\n // get diagonal matrix\n var dm = x.diagonal(k);\n // check we need to return a matrix\n if (format !== null) {\n // check we need to change matrix format\n if (format !== dm.storage()) {\n return matrix(dm, format);\n }\n return dm;\n }\n return dm.valueOf();\n }\n // vector size\n var n = Math.min(s[0] - kSub, s[1] - kSuper);\n // diagonal values\n var vector = [];\n // loop diagonal\n for (var i = 0; i < n; i++) {\n vector[i] = x[i + kSub][i + kSuper];\n }\n // check we need to return a matrix\n return format !== null ? matrix(vector) : vector;\n }\n});", "import { optimizeCallback } from '../../utils/optimizeCallback.js';\nimport { filter, filterRegExp } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'filter';\nvar dependencies = ['typed'];\nexport var createFilter = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Filter the items in an array or one dimensional matrix.\n *\n * Syntax:\n *\n * math.filter(x, test)\n *\n * Examples:\n *\n * function isPositive (x) {\n * return x > 0\n * }\n * math.filter([6, -2, -1, 4, 3], isPositive) // returns [6, 4, 3]\n *\n * math.filter([\"23\", \"foo\", \"100\", \"55\", \"bar\"], /[0-9]+/) // returns [\"23\", \"100\", \"55\"]\n *\n * See also:\n *\n * forEach, map, sort\n *\n * @param {Matrix | Array} x A one dimensional matrix or array to filter\n * @param {Function | RegExp} test\n * A function or regular expression to test items.\n * All entries for which `test` returns true are returned.\n * When `test` is a function, it is invoked with three parameters:\n * the value of the element, the index of the element, and the\n * matrix/array being traversed. The function must return a boolean.\n * @return {Matrix | Array} Returns the filtered matrix.\n */\n return typed('filter', {\n 'Array, function': _filterCallback,\n 'Matrix, function': function Matrix_function(x, test) {\n return x.create(_filterCallback(x.valueOf(), test), x.datatype());\n },\n 'Array, RegExp': filterRegExp,\n 'Matrix, RegExp': function Matrix_RegExp(x, test) {\n return x.create(filterRegExp(x.valueOf(), test), x.datatype());\n }\n });\n});\n\n/**\n * Filter values in a callback given a callback function\n * @param {Array} x\n * @param {Function} callback\n * @return {Array} Returns the filtered array\n * @private\n */\nfunction _filterCallback(x, callback) {\n var fastCallback = optimizeCallback(callback, x, 'filter');\n return filter(x, function (value, index, array) {\n // invoke the callback function with the right number of arguments\n return fastCallback(value, [index], array);\n });\n}", "import { flatten as flattenArray } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'flatten';\nvar dependencies = ['typed'];\nexport var createFlatten = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Flatten a multidimensional matrix into a single dimensional matrix.\n * A new matrix is returned, the original matrix is left untouched.\n *\n * Syntax:\n *\n * math.flatten(x)\n *\n * Examples:\n *\n * math.flatten([[1,2], [3,4]]) // returns [1, 2, 3, 4]\n *\n * See also:\n *\n * concat, resize, size, squeeze\n *\n * @param {Matrix | Array} x Matrix to be flattened\n * @return {Matrix | Array} Returns the flattened matrix\n */\n return typed(name, {\n Array: function Array(x) {\n return flattenArray(x);\n },\n Matrix: function Matrix(x) {\n // Return the same matrix type as x (Dense or Sparse Matrix)\n // Return the same data type as x\n return x.create(flattenArray(x.toArray()), x.datatype());\n }\n });\n});", "import { optimizeCallback } from '../../utils/optimizeCallback.js';\nimport { factory } from '../../utils/factory.js';\nimport { recurse } from '../../utils/array.js';\nvar name = 'forEach';\nvar dependencies = ['typed'];\nexport var createForEach = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Iterate over all elements of a matrix/array, and executes the given callback function.\n *\n * Syntax:\n *\n * math.forEach(x, callback)\n *\n * Examples:\n *\n * math.forEach([1, 2, 3], function(value) {\n * console.log(value)\n * })\n * // outputs 1, 2, 3\n *\n * See also:\n *\n * filter, map, sort\n *\n * @param {Matrix | Array} x The matrix to iterate on.\n * @param {Function} callback The callback function is invoked with three\n * parameters: the value of the element, the index\n * of the element, and the Matrix/array being traversed.\n */\n return typed(name, {\n 'Array, function': _forEach,\n 'Matrix, function': function Matrix_function(x, callback) {\n x.forEach(callback);\n }\n });\n});\n\n/**\n * forEach for a multidimensional array\n * @param {Array} array\n * @param {Function} callback\n * @private\n */\nfunction _forEach(array, callback) {\n recurse(array, [], array, optimizeCallback(callback, array, name));\n}", "import { factory } from '../../utils/factory.js';\nimport { getArrayDataType } from '../../utils/array.js';\nimport { typeOf } from '../../utils/is.js';\nvar name = 'getMatrixDataType';\nvar dependencies = ['typed'];\nexport var createGetMatrixDataType = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Find the data type of all elements in a matrix or array,\n * for example 'number' if all items are a number and 'Complex' if all values\n * are complex numbers.\n * If a matrix contains more than one data type, it will return 'mixed'.\n *\n * Syntax:\n *\n * math.getMatrixDataType(x)\n *\n * Examples:\n *\n * const x = [ [1, 2, 3], [4, 5, 6] ]\n * const mixedX = [ [1, true], [2, 3] ]\n * const fractionX = [ [math.fraction(1, 3)], [math.fraction(1, 3)] ]\n * const unitX = [ [math.unit('5cm')], [math.unit('5cm')] ]\n * const bigNumberX = [ [math.bignumber(1)], [math.bignumber(0)] ]\n * const sparse = math.sparse(x)\n * const dense = math.matrix(x)\n * math.getMatrixDataType(x) // returns 'number'\n * math.getMatrixDataType(sparse) // returns 'number'\n * math.getMatrixDataType(dense) // returns 'number'\n * math.getMatrixDataType(mixedX) // returns 'mixed'\n * math.getMatrixDataType(fractionX) // returns 'Fraction'\n * math.getMatrixDataType(unitX) // returns 'Unit'\n * math.getMatrixDataType(bigNumberX) // return 'BigNumber'\n *\n * See also:\n * SparseMatrix, DenseMatrix\n *\n * @param {...Matrix | Array} x The Matrix with values.\n *\n * @return {string} A string representation of the matrix type\n */\n return typed(name, {\n Array: function Array(x) {\n return getArrayDataType(x, typeOf);\n },\n Matrix: function Matrix(x) {\n return x.getDataType();\n }\n });\n});", "import { isBigNumber } from '../../utils/is.js';\nimport { resize } from '../../utils/array.js';\nimport { isInteger } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'identity';\nvar dependencies = ['typed', 'config', 'matrix', 'BigNumber', 'DenseMatrix', 'SparseMatrix'];\nexport var createIdentity = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n BigNumber,\n DenseMatrix,\n SparseMatrix\n } = _ref;\n /**\n * Create a 2-dimensional identity matrix with size m x n or n x n.\n * The matrix has ones on the diagonal and zeros elsewhere.\n *\n * Syntax:\n *\n * math.identity(n)\n * math.identity(n, format)\n * math.identity(m, n)\n * math.identity(m, n, format)\n * math.identity([m, n])\n * math.identity([m, n], format)\n *\n * Examples:\n *\n * math.identity(3) // returns [[1, 0, 0], [0, 1, 0], [0, 0, 1]]\n * math.identity(3, 2) // returns [[1, 0], [0, 1], [0, 0]]\n *\n * const A = [[1, 2, 3], [4, 5, 6]]\n * math.identity(math.size(A)) // returns [[1, 0, 0], [0, 1, 0]]\n *\n * See also:\n *\n * diag, ones, zeros, size, range\n *\n * @param {...number | Matrix | Array} size The size for the matrix\n * @param {string} [format] The Matrix storage format\n *\n * @return {Matrix | Array | number} A matrix with ones on the diagonal.\n */\n return typed(name, {\n '': function _() {\n return config.matrix === 'Matrix' ? matrix([]) : [];\n },\n string: function string(format) {\n return matrix(format);\n },\n 'number | BigNumber': function number__BigNumber(rows) {\n return _identity(rows, rows, config.matrix === 'Matrix' ? 'dense' : undefined);\n },\n 'number | BigNumber, string': function number__BigNumber_string(rows, format) {\n return _identity(rows, rows, format);\n },\n 'number | BigNumber, number | BigNumber': function number__BigNumber_number__BigNumber(rows, cols) {\n return _identity(rows, cols, config.matrix === 'Matrix' ? 'dense' : undefined);\n },\n 'number | BigNumber, number | BigNumber, string': function number__BigNumber_number__BigNumber_string(rows, cols, format) {\n return _identity(rows, cols, format);\n },\n Array: function Array(size) {\n return _identityVector(size);\n },\n 'Array, string': function Array_string(size, format) {\n return _identityVector(size, format);\n },\n Matrix: function Matrix(size) {\n return _identityVector(size.valueOf(), size.storage());\n },\n 'Matrix, string': function Matrix_string(size, format) {\n return _identityVector(size.valueOf(), format);\n }\n });\n function _identityVector(size, format) {\n switch (size.length) {\n case 0:\n return format ? matrix(format) : [];\n case 1:\n return _identity(size[0], size[0], format);\n case 2:\n return _identity(size[0], size[1], format);\n default:\n throw new Error('Vector containing two values expected');\n }\n }\n\n /**\n * Create an identity matrix\n * @param {number | BigNumber} rows\n * @param {number | BigNumber} cols\n * @param {string} [format]\n * @returns {Matrix}\n * @private\n */\n function _identity(rows, cols, format) {\n // BigNumber constructor with the right precision\n var Big = isBigNumber(rows) || isBigNumber(cols) ? BigNumber : null;\n if (isBigNumber(rows)) rows = rows.toNumber();\n if (isBigNumber(cols)) cols = cols.toNumber();\n if (!isInteger(rows) || rows < 1) {\n throw new Error('Parameters in function identity must be positive integers');\n }\n if (!isInteger(cols) || cols < 1) {\n throw new Error('Parameters in function identity must be positive integers');\n }\n var one = Big ? new BigNumber(1) : 1;\n var defaultValue = Big ? new Big(0) : 0;\n var size = [rows, cols];\n\n // check we need to return a matrix\n if (format) {\n // create diagonal matrix (use optimized implementation for storage format)\n if (format === 'sparse') {\n return SparseMatrix.diagonal(size, one, 0, defaultValue);\n }\n if (format === 'dense') {\n return DenseMatrix.diagonal(size, one, 0, defaultValue);\n }\n throw new TypeError(\"Unknown matrix type \\\"\".concat(format, \"\\\"\"));\n }\n\n // create and resize array\n var res = resize([], size, defaultValue);\n // fill in ones on the diagonal\n var minimum = rows < cols ? rows : cols;\n // fill diagonal\n for (var d = 0; d < minimum; d++) {\n res[d][d] = one;\n }\n return res;\n }\n});", "import { arraySize as size } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'kron';\nvar dependencies = ['typed', 'matrix', 'multiplyScalar'];\nexport var createKron = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n multiplyScalar\n } = _ref;\n /**\n * Calculates the Kronecker product of 2 matrices or vectors.\n *\n * NOTE: If a one dimensional vector / matrix is given, it will be\n * wrapped so its two dimensions.\n * See the examples.\n *\n * Syntax:\n *\n * math.kron(x, y)\n *\n * Examples:\n *\n * math.kron([[1, 0], [0, 1]], [[1, 2], [3, 4]])\n * // returns [ [ 1, 2, 0, 0 ], [ 3, 4, 0, 0 ], [ 0, 0, 1, 2 ], [ 0, 0, 3, 4 ] ]\n *\n * math.kron([1,1], [2,3,4])\n * // returns [ [ 2, 3, 4, 2, 3, 4 ] ]\n *\n * See also:\n *\n * multiply, dot, cross\n *\n * @param {Array | Matrix} x First vector\n * @param {Array | Matrix} y Second vector\n * @return {Array | Matrix} Returns the Kronecker product of `x` and `y`\n */\n return typed(name, {\n 'Matrix, Matrix': function Matrix_Matrix(x, y) {\n return matrix(_kron(x.toArray(), y.toArray()));\n },\n 'Matrix, Array': function Matrix_Array(x, y) {\n return matrix(_kron(x.toArray(), y));\n },\n 'Array, Matrix': function Array_Matrix(x, y) {\n return matrix(_kron(x, y.toArray()));\n },\n 'Array, Array': _kron\n });\n\n /**\n * Calculate the Kronecker product of two matrices / vectors\n * @param {Array} a First vector\n * @param {Array} b Second vector\n * @returns {Array} Returns the Kronecker product of x and y\n * @private\n */\n function _kron(a, b) {\n // Deal with the dimensions of the matricies.\n if (size(a).length === 1) {\n // Wrap it in a 2D Matrix\n a = [a];\n }\n if (size(b).length === 1) {\n // Wrap it in a 2D Matrix\n b = [b];\n }\n if (size(a).length > 2 || size(b).length > 2) {\n throw new RangeError('Vectors with dimensions greater then 2 are not supported expected ' + '(Size x = ' + JSON.stringify(a.length) + ', y = ' + JSON.stringify(b.length) + ')');\n }\n var t = [];\n var r = [];\n return a.map(function (a) {\n return b.map(function (b) {\n r = [];\n t.push(r);\n return a.map(function (y) {\n return b.map(function (x) {\n return r.push(multiplyScalar(y, x));\n });\n });\n });\n }) && t;\n }\n});", "import { optimizeCallback } from '../../utils/optimizeCallback.js';\nimport { arraySize, broadcastSizes, broadcastTo, get, recurse } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'map';\nvar dependencies = ['typed'];\nexport var createMap = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Create a new matrix or array with the results of a callback function executed on\n * each entry of a given matrix/array.\n *\n * For each entry of the input,\n *\n * the callback is invoked with 2N + 1 arguments:\n * the N values of the entry, the index at which that entry occurs, and the N full\n * broadcasted matrix/array being traversed where N is the number of matrices being traversed.\n * Note that because the matrix/array might be\n * multidimensional, the \"index\" argument is always an array of numbers giving\n * the index in each dimension. This is true even for vectors: the \"index\"\n * argument is an array of length 1, rather than simply a number.\n *\n * Syntax:\n *\n * math.map(x, callback)\n * math.map(x, y, ..., callback)\n *\n * Examples:\n *\n * math.map([1, 2, 3], function(value) {\n * return value * value\n * }) // returns [1, 4, 9]\n * math.map([1, 2], [3, 4], function(a, b) {\n * return a + b\n * }) // returns [4, 6]\n *\n * // The callback is normally called with three arguments:\n * // callback(value, index, Array)\n * // If you want to call with only one argument, use:\n * math.map([1, 2, 3], x => math.format(x)) // returns ['1', '2', '3']\n * // It can also be called with 2N + 1 arguments: for N arrays\n * // callback(value1, value2, index, BroadcastedArray1, BroadcastedArray2)\n *\n * See also:\n *\n * filter, forEach, sort\n *\n * @param {Matrix | Array} x The input to iterate on.\n * @param {Function} callback\n * The function to call (as described above) on each entry of the input\n * @return {Matrix | array}\n * Transformed map of x; always has the same type and shape as x\n */\n return typed(name, {\n 'Array, function': _mapArray,\n 'Matrix, function': function Matrix_function(x, callback) {\n return x.map(callback);\n },\n 'Array|Matrix, Array|Matrix, ...Array|Matrix|function': (A, B, rest) => _mapMultiple([A, B, ...rest.slice(0, rest.length - 1)], rest[rest.length - 1])\n });\n\n /**\n * Maps over multiple arrays or matrices.\n *\n * @param {Array} Arrays - An array of arrays or matrices to map over.\n * @param {function} multiCallback - The callback function to apply to each element.\n * @throws {Error} If the last argument is not a callback function.\n * @returns {Array|Matrix} A new array or matrix with each element being the result of the callback function.\n *\n * @example\n * _mapMultiple([[1, 2, 3], [4, 5, 6]], (a, b) => a + b); // Returns [5, 7, 9]\n */\n function _mapMultiple(Arrays, multiCallback) {\n if (typeof multiCallback !== 'function') {\n throw new Error('Last argument must be a callback function');\n }\n var firstArrayIsMatrix = Arrays[0].isMatrix;\n var newSize = broadcastSizes(...Arrays.map(M => M.isMatrix ? M.size() : arraySize(M)));\n var _get = firstArrayIsMatrix ? (matrix, idx) => matrix.get(idx) : get;\n var broadcastedArrays = firstArrayIsMatrix ? Arrays.map(M => M.isMatrix ? M.create(broadcastTo(M.toArray(), newSize), M.datatype()) : Arrays[0].create(broadcastTo(M.valueOf(), newSize))) : Arrays.map(M => M.isMatrix ? broadcastTo(M.toArray(), newSize) : broadcastTo(M, newSize));\n var callback;\n if (typed.isTypedFunction(multiCallback)) {\n var firstIndex = newSize.map(() => 0);\n var firstValues = broadcastedArrays.map(array => _get(array, firstIndex));\n var callbackCase = _getTypedCallbackCase(multiCallback, firstValues, firstIndex, broadcastedArrays);\n callback = _getLimitedCallback(callbackCase);\n } else {\n var numberOfArrays = Arrays.length;\n var _callbackCase = _getCallbackCase(multiCallback, numberOfArrays);\n callback = _getLimitedCallback(_callbackCase);\n }\n var broadcastedArraysCallback = (x, idx) => callback([x, ...broadcastedArrays.slice(1).map(Array => _get(Array, idx))], idx);\n if (firstArrayIsMatrix) {\n return broadcastedArrays[0].map(broadcastedArraysCallback);\n } else {\n return _mapArray(broadcastedArrays[0], broadcastedArraysCallback);\n }\n function _getLimitedCallback(callbackCase) {\n switch (callbackCase) {\n case 0:\n return x => multiCallback(...x);\n case 1:\n return (x, idx) => multiCallback(...x, idx);\n case 2:\n return (x, idx) => multiCallback(...x, idx, ...broadcastedArrays);\n }\n }\n function _getCallbackCase(callback, numberOfArrays) {\n if (callback.length > numberOfArrays + 1) {\n return 2;\n }\n if (callback.length === numberOfArrays + 1) {\n return 1;\n }\n return 0;\n }\n function _getTypedCallbackCase(callback, values, idx, arrays) {\n if (typed.resolve(callback, [...values, idx, ...arrays]) !== null) {\n return 2;\n }\n if (typed.resolve(callback, [...values, idx]) !== null) {\n return 1;\n }\n if (typed.resolve(callback, values) !== null) {\n return 0;\n }\n // this should never happen\n return 0;\n }\n }\n /**\n * Map for a multi dimensional array\n * @param {Array} array\n * @param {Function} callback\n * @return {Array}\n * @private\n */\n function _mapArray(array, callback) {\n return recurse(array, [], array, optimizeCallback(callback, array, name));\n }\n});", "import { factory } from '../../utils/factory.js';\nimport { isInteger } from '../../utils/number.js';\nimport { isMatrix } from '../../utils/is.js';\nvar name = 'diff';\nvar dependencies = ['typed', 'matrix', 'subtract', 'number'];\nexport var createDiff = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n subtract,\n number\n } = _ref;\n /**\n * Create a new matrix or array of the difference between elements of the given array\n * The optional dim parameter lets you specify the dimension to evaluate the difference of\n * If no dimension parameter is passed it is assumed as dimension 0\n *\n * Dimension is zero-based in javascript and one-based in the parser and can be a number or bignumber\n * Arrays must be 'rectangular' meaning arrays like [1, 2]\n * If something is passed as a matrix it will be returned as a matrix but other than that all matrices are converted to arrays\n *\n * Syntax:\n *\n * math.diff(arr)\n * math.diff(arr, dim)\n *\n * Examples:\n *\n * const arr = [1, 2, 4, 7, 0]\n * math.diff(arr) // returns [1, 2, 3, -7] (no dimension passed so 0 is assumed)\n * math.diff(math.matrix(arr)) // returns Matrix [1, 2, 3, -7]\n *\n * const arr = [[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [9, 8, 7, 6, 4]]\n * math.diff(arr) // returns [[0, 0, 0, 0, 0], [8, 6, 4, 2, -1]]\n * math.diff(arr, 0) // returns [[0, 0, 0, 0, 0], [8, 6, 4, 2, -1]]\n * math.diff(arr, 1) // returns [[1, 1, 1, 1], [1, 1, 1, 1], [-1, -1, -1, -2]]\n * math.diff(arr, math.bignumber(1)) // returns [[1, 1, 1, 1], [1, 1, 1, 1], [-1, -1, -1, -2]]\n *\n * math.diff(arr, 2) // throws RangeError as arr is 2 dimensional not 3\n * math.diff(arr, -1) // throws RangeError as negative dimensions are not allowed\n *\n * // These will all produce the same result\n * math.diff([[1, 2], [3, 4]])\n * math.diff([math.matrix([1, 2]), math.matrix([3, 4])])\n * math.diff([[1, 2], math.matrix([3, 4])])\n * math.diff([math.matrix([1, 2]), [3, 4]])\n * // They do not produce the same result as math.diff(math.matrix([[1, 2], [3, 4]])) as this returns a matrix\n *\n * See Also:\n *\n * sum\n * subtract\n * partitionSelect\n *\n * @param {Array | Matrix} arr An array or matrix\n * @param {number | BigNumber} dim Dimension\n * @return {Array | Matrix} Difference between array elements in given dimension\n */\n return typed(name, {\n 'Array | Matrix': function Array__Matrix(arr) {\n // No dimension specified => assume dimension 0\n if (isMatrix(arr)) {\n return matrix(_diff(arr.toArray()));\n } else {\n return _diff(arr);\n }\n },\n 'Array | Matrix, number': function Array__Matrix_number(arr, dim) {\n if (!isInteger(dim)) throw new RangeError('Dimension must be a whole number');\n if (isMatrix(arr)) {\n return matrix(_recursive(arr.toArray(), dim));\n } else {\n return _recursive(arr, dim);\n }\n },\n 'Array, BigNumber': typed.referTo('Array,number', selfAn => (arr, dim) => selfAn(arr, number(dim))),\n 'Matrix, BigNumber': typed.referTo('Matrix,number', selfMn => (arr, dim) => selfMn(arr, number(dim)))\n });\n\n /**\n * Recursively find the correct dimension in the array/matrix\n * Then Apply _diff to that dimension\n *\n * @param {Array} arr The array\n * @param {number} dim Dimension\n * @return {Array} resulting array\n */\n function _recursive(arr, dim) {\n if (isMatrix(arr)) {\n arr = arr.toArray(); // Makes sure arrays like [ matrix([0, 1]), matrix([1, 0]) ] are processed properly\n }\n if (!Array.isArray(arr)) {\n throw RangeError('Array/Matrix does not have that many dimensions');\n }\n if (dim > 0) {\n var result = [];\n arr.forEach(element => {\n result.push(_recursive(element, dim - 1));\n });\n return result;\n } else if (dim === 0) {\n return _diff(arr);\n } else {\n throw RangeError('Cannot have negative dimension');\n }\n }\n\n /**\n * Difference between elements in the array\n *\n * @param {Array} arr An array\n * @return {Array} resulting array\n */\n function _diff(arr) {\n var result = [];\n var size = arr.length;\n for (var i = 1; i < size; i++) {\n result.push(_ElementDiff(arr[i - 1], arr[i]));\n }\n return result;\n }\n\n /**\n * Difference between 2 objects\n *\n * @param {Object} obj1 First object\n * @param {Object} obj2 Second object\n * @return {Array} resulting array\n */\n function _ElementDiff(obj1, obj2) {\n // Convert matrices to arrays\n if (isMatrix(obj1)) obj1 = obj1.toArray();\n if (isMatrix(obj2)) obj2 = obj2.toArray();\n var obj1IsArray = Array.isArray(obj1);\n var obj2IsArray = Array.isArray(obj2);\n if (obj1IsArray && obj2IsArray) {\n return _ArrayDiff(obj1, obj2);\n }\n if (!obj1IsArray && !obj2IsArray) {\n return subtract(obj2, obj1); // Difference is (second - first) NOT (first - second)\n }\n throw TypeError('Cannot calculate difference between 1 array and 1 non-array');\n }\n\n /**\n * Difference of elements in 2 arrays\n *\n * @param {Array} arr1 Array 1\n * @param {Array} arr2 Array 2\n * @return {Array} resulting array\n */\n function _ArrayDiff(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n throw RangeError('Not all sub-arrays have the same length');\n }\n var result = [];\n var size = arr1.length;\n for (var i = 0; i < size; i++) {\n result.push(_ElementDiff(arr1[i], arr2[i]));\n }\n return result;\n }\n});", "import { isBigNumber } from '../../utils/is.js';\nimport { isInteger } from '../../utils/number.js';\nimport { resize } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'ones';\nvar dependencies = ['typed', 'config', 'matrix', 'BigNumber'];\nexport var createOnes = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n BigNumber\n } = _ref;\n /**\n * Create a matrix filled with ones. The created matrix can have one or\n * multiple dimensions.\n *\n * Syntax:\n *\n * math.ones(m)\n * math.ones(m, format)\n * math.ones(m, n)\n * math.ones(m, n, format)\n * math.ones([m, n])\n * math.ones([m, n], format)\n * math.ones([m, n, p, ...])\n * math.ones([m, n, p, ...], format)\n *\n * Examples:\n *\n * math.ones() // returns []\n * math.ones(3) // returns [1, 1, 1]\n * math.ones(3, 2) // returns [[1, 1], [1, 1], [1, 1]]\n * math.ones(3, 2, 'dense') // returns Dense Matrix [[1, 1], [1, 1], [1, 1]]\n *\n * const A = [[1, 2, 3], [4, 5, 6]]\n * math.ones(math.size(A)) // returns [[1, 1, 1], [1, 1, 1]]\n *\n * See also:\n *\n * zeros, identity, size, range\n *\n * @param {...(number|BigNumber) | Array} size The size of each dimension of the matrix\n * @param {string} [format] The Matrix storage format\n *\n * @return {Array | Matrix | number} A matrix filled with ones\n */\n return typed('ones', {\n '': function _() {\n return config.matrix === 'Array' ? _ones([]) : _ones([], 'default');\n },\n // math.ones(m, n, p, ..., format)\n // TODO: more accurate signature '...number | BigNumber, string' as soon as typed-function supports this\n '...number | BigNumber | string': function number__BigNumber__string(size) {\n var last = size[size.length - 1];\n if (typeof last === 'string') {\n var format = size.pop();\n return _ones(size, format);\n } else if (config.matrix === 'Array') {\n return _ones(size);\n } else {\n return _ones(size, 'default');\n }\n },\n Array: _ones,\n Matrix: function Matrix(size) {\n var format = size.storage();\n return _ones(size.valueOf(), format);\n },\n 'Array | Matrix, string': function Array__Matrix_string(size, format) {\n return _ones(size.valueOf(), format);\n }\n });\n\n /**\n * Create an Array or Matrix with ones\n * @param {Array} size\n * @param {string} [format='default']\n * @return {Array | Matrix}\n * @private\n */\n function _ones(size, format) {\n var hasBigNumbers = _normalize(size);\n var defaultValue = hasBigNumbers ? new BigNumber(1) : 1;\n _validate(size);\n if (format) {\n // return a matrix\n var m = matrix(format);\n if (size.length > 0) {\n return m.resize(size, defaultValue);\n }\n return m;\n } else {\n // return an Array\n var arr = [];\n if (size.length > 0) {\n return resize(arr, size, defaultValue);\n }\n return arr;\n }\n }\n\n // replace BigNumbers with numbers, returns true if size contained BigNumbers\n function _normalize(size) {\n var hasBigNumbers = false;\n size.forEach(function (value, index, arr) {\n if (isBigNumber(value)) {\n hasBigNumbers = true;\n arr[index] = value.toNumber();\n }\n });\n return hasBigNumbers;\n }\n\n // validate arguments\n function _validate(size) {\n size.forEach(function (value) {\n if (typeof value !== 'number' || !isInteger(value) || value < 0) {\n throw new Error('Parameters in function ones must be positive integers');\n }\n });\n }\n});", "export function noBignumber() {\n throw new Error('No \"bignumber\" implementation available');\n}\nexport function noFraction() {\n throw new Error('No \"fraction\" implementation available');\n}\nexport function noMatrix() {\n throw new Error('No \"matrix\" implementation available');\n}\nexport function noIndex() {\n throw new Error('No \"index\" implementation available');\n}\nexport function noSubset() {\n throw new Error('No \"matrix\" implementation available');\n}", "import { factory } from '../../utils/factory.js';\nimport { noBignumber, noMatrix } from '../../utils/noop.js';\nvar name = 'range';\nvar dependencies = ['typed', 'config', '?matrix', '?bignumber', 'smaller', 'smallerEq', 'larger', 'largerEq', 'add', 'isPositive'];\nexport var createRange = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n bignumber,\n smaller,\n smallerEq,\n larger,\n largerEq,\n add,\n isPositive\n } = _ref;\n /**\n * Create an array from a range.\n * By default, the range end is excluded. This can be customized by providing\n * an extra parameter `includeEnd`.\n *\n * Syntax:\n *\n * math.range(str [, includeEnd]) // Create a range from a string,\n * // where the string contains the\n * // start, optional step, and end,\n * // separated by a colon.\n * math.range(start, end [, includeEnd]) // Create a range with start and\n * // end and a step size of 1.\n * math.range(start, end, step [, includeEnd]) // Create a range with start, step,\n * // and end.\n *\n * Where:\n *\n * - `str: string`\n * A string 'start:end' or 'start:step:end'\n * - `start: {number | BigNumber | Unit}`\n * Start of the range\n * - `end: number | BigNumber | Unit`\n * End of the range, excluded by default, included when parameter includeEnd=true\n * - `step: number | BigNumber | Unit`\n * Step size. Default value is 1.\n * - `includeEnd: boolean`\n * Option to specify whether to include the end or not. False by default.\n *\n * Examples:\n *\n * math.range(2, 6) // [2, 3, 4, 5]\n * math.range(2, -3, -1) // [2, 1, 0, -1, -2]\n * math.range('2:1:6') // [2, 3, 4, 5]\n * math.range(2, 6, true) // [2, 3, 4, 5, 6]\n * math.range(math.unit(2, 'm'), math.unit(-3, 'm'), math.unit(-1, 'm')) // [2 m, 1 m, 0 m , -1 m, -2 m]\n *\n * See also:\n *\n * ones, zeros, size, subset\n *\n * @param {*} args Parameters describing the ranges `start`, `end`, and optional `step`.\n * @return {Array | Matrix} range\n */\n return typed(name, {\n // TODO: simplify signatures when typed-function supports default values and optional arguments\n\n // TODO: a number or boolean should not be converted to string here\n string: _strRange,\n 'string, boolean': _strRange,\n 'number, number': function number_number(start, end) {\n return _out(_range(start, end, 1, false));\n },\n 'number, number, number': function number_number_number(start, end, step) {\n return _out(_range(start, end, step, false));\n },\n 'number, number, boolean': function number_number_boolean(start, end, includeEnd) {\n return _out(_range(start, end, 1, includeEnd));\n },\n 'number, number, number, boolean': function number_number_number_boolean(start, end, step, includeEnd) {\n return _out(_range(start, end, step, includeEnd));\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(start, end) {\n var BigNumber = start.constructor;\n return _out(_range(start, end, new BigNumber(1), false));\n },\n 'BigNumber, BigNumber, BigNumber': function BigNumber_BigNumber_BigNumber(start, end, step) {\n return _out(_range(start, end, step, false));\n },\n 'BigNumber, BigNumber, boolean': function BigNumber_BigNumber_boolean(start, end, includeEnd) {\n var BigNumber = start.constructor;\n return _out(_range(start, end, new BigNumber(1), includeEnd));\n },\n 'BigNumber, BigNumber, BigNumber, boolean': function BigNumber_BigNumber_BigNumber_boolean(start, end, step, includeEnd) {\n return _out(_range(start, end, step, includeEnd));\n },\n 'Unit, Unit, Unit': function Unit_Unit_Unit(start, end, step) {\n return _out(_range(start, end, step, false));\n },\n 'Unit, Unit, Unit, boolean': function Unit_Unit_Unit_boolean(start, end, step, includeEnd) {\n return _out(_range(start, end, step, includeEnd));\n }\n });\n function _out(arr) {\n if (config.matrix === 'Matrix') {\n return matrix ? matrix(arr) : noMatrix();\n }\n return arr;\n }\n function _strRange(str, includeEnd) {\n var r = _parse(str);\n if (!r) {\n throw new SyntaxError('String \"' + str + '\" is no valid range');\n }\n if (config.number === 'BigNumber') {\n if (bignumber === undefined) {\n noBignumber();\n }\n return _out(_range(bignumber(r.start), bignumber(r.end), bignumber(r.step)), includeEnd);\n } else {\n return _out(_range(r.start, r.end, r.step, includeEnd));\n }\n }\n\n /**\n * Create a range with numbers or BigNumbers\n * @param {number | BigNumber | Unit} start\n * @param {number | BigNumber | Unit} end\n * @param {number | BigNumber | Unit} step\n * @param {boolean} includeEnd\n * @returns {Array} range\n * @private\n */\n function _range(start, end, step, includeEnd) {\n var array = [];\n var ongoing = isPositive(step) ? includeEnd ? smallerEq : smaller : includeEnd ? largerEq : larger;\n var x = start;\n while (ongoing(x, end)) {\n array.push(x);\n x = add(x, step);\n }\n return array;\n }\n\n /**\n * Parse a string into a range,\n * The string contains the start, optional step, and end, separated by a colon.\n * If the string does not contain a valid range, null is returned.\n * For example str='0:2:11'.\n * @param {string} str\n * @return {{start: number, end: number, step: number} | null} range Object containing properties start, end, step\n * @private\n */\n function _parse(str) {\n var args = str.split(':');\n\n // number\n var nums = args.map(function (arg) {\n // use Number and not parseFloat as Number returns NaN on invalid garbage in the string\n return Number(arg);\n });\n var invalid = nums.some(function (num) {\n return isNaN(num);\n });\n if (invalid) {\n return null;\n }\n switch (nums.length) {\n case 2:\n return {\n start: nums[0],\n end: nums[1],\n step: 1\n };\n case 3:\n return {\n start: nums[0],\n end: nums[2],\n step: nums[1]\n };\n default:\n return null;\n }\n }\n});", "import { reshape as arrayReshape } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'reshape';\nvar dependencies = ['typed', 'isInteger', 'matrix'];\nexport var createReshape = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n isInteger\n } = _ref;\n /**\n * Reshape a multi dimensional array to fit the specified dimensions\n *\n * Syntax:\n *\n * math.reshape(x, sizes)\n *\n * Examples:\n *\n * math.reshape([1, 2, 3, 4, 5, 6], [2, 3])\n * // returns Array [[1, 2, 3], [4, 5, 6]]\n *\n * math.reshape([[1, 2], [3, 4]], [1, 4])\n * // returns Array [[1, 2, 3, 4]]\n *\n * math.reshape([[1, 2], [3, 4]], [4])\n * // returns Array [1, 2, 3, 4]\n *\n * const x = math.matrix([1, 2, 3, 4, 5, 6, 7, 8])\n * math.reshape(x, [2, 2, 2])\n * // returns Matrix [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]\n *\n * math.reshape([1, 2, 3, 4], [-1, 2])\n * // returns Matrix [[1, 2], [3, 4]]\n *\n * See also:\n *\n * size, squeeze, resize\n *\n * @param {Array | Matrix | *} x Matrix to be reshaped\n * @param {number[]} sizes One dimensional array with integral sizes for\n * each dimension. One -1 is allowed as wildcard,\n * which calculates this dimension automatically.\n *\n * @return {* | Array | Matrix} A reshaped clone of matrix `x`\n *\n * @throws {TypeError} If `sizes` does not contain solely integers\n * @throws {DimensionError} If the product of the new dimension sizes does\n * not equal that of the old ones\n */\n return typed(name, {\n 'Matrix, Array': function Matrix_Array(x, sizes) {\n return x.reshape(sizes, true);\n },\n 'Array, Array': function Array_Array(x, sizes) {\n sizes.forEach(function (size) {\n if (!isInteger(size)) {\n throw new TypeError('Invalid size for dimension: ' + size);\n }\n });\n return arrayReshape(x, sizes);\n }\n });\n});", "import { isBigNumber, isMatrix } from '../../utils/is.js';\nimport { DimensionError } from '../../error/DimensionError.js';\nimport { ArgumentsError } from '../../error/ArgumentsError.js';\nimport { isInteger } from '../../utils/number.js';\nimport { format } from '../../utils/string.js';\nimport { clone } from '../../utils/object.js';\nimport { resize as arrayResize } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'resize';\nvar dependencies = ['config', 'matrix'];\nexport var createResize = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n config,\n matrix\n } = _ref;\n /**\n * Resize a matrix\n *\n * Syntax:\n *\n * math.resize(x, size)\n * math.resize(x, size, defaultValue)\n *\n * Examples:\n *\n * math.resize([1, 2, 3, 4, 5], [3]) // returns Array [1, 2, 3]\n * math.resize([1, 2, 3], [5], 0) // returns Array [1, 2, 3, 0, 0]\n * math.resize(2, [2, 3], 0) // returns Matrix [[2, 0, 0], [0, 0, 0]]\n * math.resize(\"hello\", [8], \"!\") // returns string 'hello!!!'\n *\n * See also:\n *\n * size, squeeze, subset, reshape\n *\n * @param {Array | Matrix | *} x Matrix to be resized\n * @param {Array | Matrix} size One dimensional array with numbers\n * @param {number | string} [defaultValue=0] Zero by default, except in\n * case of a string, in that case\n * defaultValue = ' '\n * @return {* | Array | Matrix} A resized clone of matrix `x`\n */\n // TODO: rework resize to a typed-function\n return function resize(x, size, defaultValue) {\n if (arguments.length !== 2 && arguments.length !== 3) {\n throw new ArgumentsError('resize', arguments.length, 2, 3);\n }\n if (isMatrix(size)) {\n size = size.valueOf(); // get Array\n }\n if (isBigNumber(size[0])) {\n // convert bignumbers to numbers\n size = size.map(function (value) {\n return !isBigNumber(value) ? value : value.toNumber();\n });\n }\n\n // check x is a Matrix\n if (isMatrix(x)) {\n // use optimized matrix implementation, return copy\n return x.resize(size, defaultValue, true);\n }\n if (typeof x === 'string') {\n // resize string\n return _resizeString(x, size, defaultValue);\n }\n\n // check result should be a matrix\n var asMatrix = Array.isArray(x) ? false : config.matrix !== 'Array';\n if (size.length === 0) {\n // output a scalar\n while (Array.isArray(x)) {\n x = x[0];\n }\n return clone(x);\n } else {\n // output an array/matrix\n if (!Array.isArray(x)) {\n x = [x];\n }\n x = clone(x);\n var res = arrayResize(x, size, defaultValue);\n return asMatrix ? matrix(res) : res;\n }\n };\n\n /**\n * Resize a string\n * @param {string} str\n * @param {number[]} size\n * @param {string} [defaultChar=' ']\n * @private\n */\n function _resizeString(str, size, defaultChar) {\n if (defaultChar !== undefined) {\n if (typeof defaultChar !== 'string' || defaultChar.length !== 1) {\n throw new TypeError('Single character expected as defaultValue');\n }\n } else {\n defaultChar = ' ';\n }\n if (size.length !== 1) {\n throw new DimensionError(size.length, 1);\n }\n var len = size[0];\n if (typeof len !== 'number' || !isInteger(len)) {\n throw new TypeError('Invalid size, must contain positive integers ' + '(size: ' + format(size) + ')');\n }\n if (str.length > len) {\n return str.substring(0, len);\n } else if (str.length < len) {\n var res = str;\n for (var i = 0, ii = len - str.length; i < ii; i++) {\n res += defaultChar;\n }\n return res;\n } else {\n return str;\n }\n }\n});", "import { factory } from '../../utils/factory.js';\nimport { arraySize } from '../../utils/array.js';\nvar name = 'rotate';\nvar dependencies = ['typed', 'multiply', 'rotationMatrix'];\nexport var createRotate = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n multiply,\n rotationMatrix\n } = _ref;\n /**\n * Rotate a vector of size 1x2 counter-clockwise by a given angle\n * Rotate a vector of size 1x3 counter-clockwise by a given angle around the given axis\n *\n * Syntax:\n *\n * math.rotate(w, theta)\n * math.rotate(w, theta, v)\n *\n * Examples:\n *\n * math.rotate([11, 12], math.pi / 2) // returns [-12, 11]\n * math.rotate(matrix([11, 12]), math.pi / 2) // returns [-12, 11]\n *\n * math.rotate([1, 0, 0], unit('90deg'), [0, 0, 1]) // returns [0, 1, 0]\n * math.rotate(matrix([1, 0, 0]), unit('90deg'), [0, 0, 1]) // returns Matrix [0, 1, 0]\n *\n * math.rotate([1, 0], math.complex(1 + i)) // returns [cos(1 + i) - sin(1 + i), sin(1 + i) + cos(1 + i)]\n *\n * See also:\n *\n * matrix, rotationMatrix\n *\n * @param {Array | Matrix} w Vector to rotate\n * @param {number | BigNumber | Complex | Unit} theta Rotation angle\n * @param {Array | Matrix} [v] Rotation axis\n * @return {Array | Matrix} Multiplication of the rotation matrix and w\n */\n return typed(name, {\n 'Array , number | BigNumber | Complex | Unit': function Array__number__BigNumber__Complex__Unit(w, theta) {\n _validateSize(w, 2);\n var matrixRes = multiply(rotationMatrix(theta), w);\n return matrixRes.toArray();\n },\n 'Matrix , number | BigNumber | Complex | Unit': function Matrix__number__BigNumber__Complex__Unit(w, theta) {\n _validateSize(w, 2);\n return multiply(rotationMatrix(theta), w);\n },\n 'Array, number | BigNumber | Complex | Unit, Array | Matrix': function Array_number__BigNumber__Complex__Unit_Array__Matrix(w, theta, v) {\n _validateSize(w, 3);\n var matrixRes = multiply(rotationMatrix(theta, v), w);\n return matrixRes;\n },\n 'Matrix, number | BigNumber | Complex | Unit, Array | Matrix': function Matrix_number__BigNumber__Complex__Unit_Array__Matrix(w, theta, v) {\n _validateSize(w, 3);\n return multiply(rotationMatrix(theta, v), w);\n }\n });\n function _validateSize(v, expectedSize) {\n var actualSize = Array.isArray(v) ? arraySize(v) : v.size();\n if (actualSize.length > 2) {\n throw new RangeError(\"Vector must be of dimensions 1x\".concat(expectedSize));\n }\n if (actualSize.length === 2 && actualSize[1] !== 1) {\n throw new RangeError(\"Vector must be of dimensions 1x\".concat(expectedSize));\n }\n if (actualSize[0] !== expectedSize) {\n throw new RangeError(\"Vector must be of dimensions 1x\".concat(expectedSize));\n }\n }\n});", "import { isBigNumber } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'rotationMatrix';\nvar dependencies = ['typed', 'config', 'multiplyScalar', 'addScalar', 'unaryMinus', 'norm', 'matrix', 'BigNumber', 'DenseMatrix', 'SparseMatrix', 'cos', 'sin'];\nexport var createRotationMatrix = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n multiplyScalar,\n addScalar,\n unaryMinus,\n norm,\n BigNumber,\n matrix,\n DenseMatrix,\n SparseMatrix,\n cos,\n sin\n } = _ref;\n /**\n * Create a 2-dimensional counter-clockwise rotation matrix (2x2) for a given angle (expressed in radians).\n * Create a 2-dimensional counter-clockwise rotation matrix (3x3) by a given angle (expressed in radians) around a given axis (1x3).\n *\n * Syntax:\n *\n * math.rotationMatrix(theta)\n * math.rotationMatrix(theta, format)\n * math.rotationMatrix(theta, [v])\n * math.rotationMatrix(theta, [v], format)\n *\n * Examples:\n *\n * math.rotationMatrix(math.pi / 2) // returns [[0, -1], [1, 0]]\n * math.rotationMatrix(math.bignumber(1)) // returns [[bignumber(cos(1)), bignumber(-sin(1))], [bignumber(sin(1)), bignumber(cos(1))]]\n * math.rotationMatrix(math.complex(1 + i)) // returns [[cos(1 + i), -sin(1 + i)], [sin(1 + i), cos(1 + i)]]\n * math.rotationMatrix(math.unit('1rad')) // returns [[cos(1), -sin(1)], [sin(1), cos(1)]]\n *\n * math.rotationMatrix(math.pi / 2, [0, 1, 0]) // returns [[0, 0, 1], [0, 1, 0], [-1, 0, 0]]\n * math.rotationMatrix(math.pi / 2, matrix([0, 1, 0])) // returns matrix([[0, 0, 1], [0, 1, 0], [-1, 0, 0]])\n *\n *\n * See also:\n *\n * matrix, cos, sin\n *\n *\n * @param {number | BigNumber | Complex | Unit} theta Rotation angle\n * @param {Array | Matrix} [v] Rotation axis\n * @param {string} [format] Result Matrix storage format\n * @return {Array | Matrix} Rotation matrix\n */\n\n return typed(name, {\n '': function _() {\n return config.matrix === 'Matrix' ? matrix([]) : [];\n },\n string: function string(format) {\n return matrix(format);\n },\n 'number | BigNumber | Complex | Unit': function number__BigNumber__Complex__Unit(theta) {\n return _rotationMatrix2x2(theta, config.matrix === 'Matrix' ? 'dense' : undefined);\n },\n 'number | BigNumber | Complex | Unit, string': function number__BigNumber__Complex__Unit_string(theta, format) {\n return _rotationMatrix2x2(theta, format);\n },\n 'number | BigNumber | Complex | Unit, Array': function number__BigNumber__Complex__Unit_Array(theta, v) {\n var matrixV = matrix(v);\n _validateVector(matrixV);\n return _rotationMatrix3x3(theta, matrixV, undefined);\n },\n 'number | BigNumber | Complex | Unit, Matrix': function number__BigNumber__Complex__Unit_Matrix(theta, v) {\n _validateVector(v);\n var storageType = v.storage() || (config.matrix === 'Matrix' ? 'dense' : undefined);\n return _rotationMatrix3x3(theta, v, storageType);\n },\n 'number | BigNumber | Complex | Unit, Array, string': function number__BigNumber__Complex__Unit_Array_string(theta, v, format) {\n var matrixV = matrix(v);\n _validateVector(matrixV);\n return _rotationMatrix3x3(theta, matrixV, format);\n },\n 'number | BigNumber | Complex | Unit, Matrix, string': function number__BigNumber__Complex__Unit_Matrix_string(theta, v, format) {\n _validateVector(v);\n return _rotationMatrix3x3(theta, v, format);\n }\n });\n\n /**\n * Returns 2x2 matrix of 2D rotation of angle theta\n *\n * @param {number | BigNumber | Complex | Unit} theta The rotation angle\n * @param {string} format The result Matrix storage format\n * @returns {Matrix}\n * @private\n */\n function _rotationMatrix2x2(theta, format) {\n var Big = isBigNumber(theta);\n var minusOne = Big ? new BigNumber(-1) : -1;\n var cosTheta = cos(theta);\n var sinTheta = sin(theta);\n var data = [[cosTheta, multiplyScalar(minusOne, sinTheta)], [sinTheta, cosTheta]];\n return _convertToFormat(data, format);\n }\n function _validateVector(v) {\n var size = v.size();\n if (size.length < 1 || size[0] !== 3) {\n throw new RangeError('Vector must be of dimensions 1x3');\n }\n }\n function _mul(array) {\n return array.reduce((p, curr) => multiplyScalar(p, curr));\n }\n function _convertToFormat(data, format) {\n if (format) {\n if (format === 'sparse') {\n return new SparseMatrix(data);\n }\n if (format === 'dense') {\n return new DenseMatrix(data);\n }\n throw new TypeError(\"Unknown matrix type \\\"\".concat(format, \"\\\"\"));\n }\n return data;\n }\n\n /**\n * Returns a 3x3 matrix of rotation of angle theta around vector v\n *\n * @param {number | BigNumber | Complex | Unit} theta The rotation angle\n * @param {Matrix} v The rotation axis vector\n * @param {string} format The storage format of the resulting matrix\n * @returns {Matrix}\n * @private\n */\n function _rotationMatrix3x3(theta, v, format) {\n var normV = norm(v);\n if (normV === 0) {\n throw new RangeError('Rotation around zero vector');\n }\n var Big = isBigNumber(theta) ? BigNumber : null;\n var one = Big ? new Big(1) : 1;\n var minusOne = Big ? new Big(-1) : -1;\n var vx = Big ? new Big(v.get([0]) / normV) : v.get([0]) / normV;\n var vy = Big ? new Big(v.get([1]) / normV) : v.get([1]) / normV;\n var vz = Big ? new Big(v.get([2]) / normV) : v.get([2]) / normV;\n var c = cos(theta);\n var oneMinusC = addScalar(one, unaryMinus(c));\n var s = sin(theta);\n var r11 = addScalar(c, _mul([vx, vx, oneMinusC]));\n var r12 = addScalar(_mul([vx, vy, oneMinusC]), _mul([minusOne, vz, s]));\n var r13 = addScalar(_mul([vx, vz, oneMinusC]), _mul([vy, s]));\n var r21 = addScalar(_mul([vx, vy, oneMinusC]), _mul([vz, s]));\n var r22 = addScalar(c, _mul([vy, vy, oneMinusC]));\n var r23 = addScalar(_mul([vy, vz, oneMinusC]), _mul([minusOne, vx, s]));\n var r31 = addScalar(_mul([vx, vz, oneMinusC]), _mul([minusOne, vy, s]));\n var r32 = addScalar(_mul([vy, vz, oneMinusC]), _mul([vx, s]));\n var r33 = addScalar(c, _mul([vz, vz, oneMinusC]));\n var data = [[r11, r12, r13], [r21, r22, r23], [r31, r32, r33]];\n return _convertToFormat(data, format);\n }\n});", "import { factory } from '../../utils/factory.js';\nimport { isMatrix } from '../../utils/is.js';\nimport { clone } from '../../utils/object.js';\nimport { validateIndex } from '../../utils/array.js';\nvar name = 'row';\nvar dependencies = ['typed', 'Index', 'matrix', 'range'];\nexport var createRow = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Index,\n matrix,\n range\n } = _ref;\n /**\n * Return a row from a Matrix.\n *\n * Syntax:\n *\n * math.row(value, index)\n *\n * Example:\n *\n * // get a row\n * const d = [[1, 2], [3, 4]]\n * math.row(d, 1) // returns [[3, 4]]\n *\n * See also:\n *\n * column\n *\n * @param {Array | Matrix } value An array or matrix\n * @param {number} row The index of the row\n * @return {Array | Matrix} The retrieved row\n */\n return typed(name, {\n 'Matrix, number': _row,\n 'Array, number': function Array_number(value, row) {\n return _row(matrix(clone(value)), row).valueOf();\n }\n });\n\n /**\n * Retrieve a row of a matrix\n * @param {Matrix } value A matrix\n * @param {number} row The index of the row\n * @return {Matrix} The retrieved row\n */\n function _row(value, row) {\n // check dimensions\n if (value.size().length !== 2) {\n throw new Error('Only two dimensional matrix is supported');\n }\n validateIndex(row, value.size()[0]);\n var columnRange = range(0, value.size()[1]);\n var index = new Index(row, columnRange);\n var result = value.subset(index);\n return isMatrix(result) ? result : matrix([[result]]);\n }\n});", "import { arraySize } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { noMatrix } from '../../utils/noop.js';\nvar name = 'size';\nvar dependencies = ['typed', 'config', '?matrix'];\nexport var createSize = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix\n } = _ref;\n /**\n * Calculate the size of a matrix or scalar.\n *\n * Syntax:\n *\n * math.size(x)\n *\n * Examples:\n *\n * math.size(2.3) // returns []\n * math.size('hello world') // returns [11]\n *\n * const A = [[1, 2, 3], [4, 5, 6]]\n * math.size(A) // returns [2, 3]\n * math.size(math.range(1,6).toArray()) // returns [5]\n *\n * See also:\n *\n * count, resize, squeeze, subset\n *\n * @param {boolean | number | Complex | Unit | string | Array | Matrix} x A matrix\n * @return {Array | Matrix} A vector with size of `x`.\n */\n return typed(name, {\n Matrix: function Matrix(x) {\n return x.create(x.size(), 'number');\n },\n Array: arraySize,\n string: function string(x) {\n return config.matrix === 'Array' ? [x.length] : matrix([x.length], 'dense', 'number');\n },\n 'number | Complex | BigNumber | Unit | boolean | null': function number__Complex__BigNumber__Unit__boolean__null(x) {\n // scalar\n return config.matrix === 'Array' ? [] : matrix ? matrix([], 'dense', 'number') : noMatrix();\n }\n });\n});", "import { clone } from '../../utils/object.js';\nimport { squeeze as arraySqueeze } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'squeeze';\nvar dependencies = ['typed'];\nexport var createSqueeze = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Squeeze a matrix, remove inner and outer singleton dimensions from a matrix.\n *\n * Syntax:\n *\n * math.squeeze(x)\n *\n * Examples:\n *\n * math.squeeze([3]) // returns 3\n * math.squeeze([[3]]) // returns 3\n *\n * const A = math.zeros(3, 1) // returns [[0], [0], [0]] (size 3x1)\n * math.squeeze(A) // returns [0, 0, 0] (size 3)\n *\n * const B = math.zeros(1, 3) // returns [[0, 0, 0]] (size 1x3)\n * math.squeeze(B) // returns [0, 0, 0] (size 3)\n *\n * // only inner and outer dimensions are removed\n * const C = math.zeros(2, 1, 3) // returns [[[0, 0, 0]], [[0, 0, 0]]] (size 2x1x3)\n * math.squeeze(C) // returns [[[0, 0, 0]], [[0, 0, 0]]] (size 2x1x3)\n *\n * See also:\n *\n * subset\n *\n * @param {Matrix | Array} x Matrix to be squeezed\n * @return {Matrix | Array} Squeezed matrix\n */\n return typed(name, {\n Array: function Array(x) {\n return arraySqueeze(clone(x));\n },\n Matrix: function Matrix(x) {\n var res = arraySqueeze(x.toArray());\n // FIXME: return the same type of matrix as the input\n return Array.isArray(res) ? x.create(res, x.datatype()) : res;\n },\n any: function any(x) {\n // scalar\n return clone(x);\n }\n });\n});", "import { isIndex } from '../../utils/is.js';\nimport { clone } from '../../utils/object.js';\nimport { isEmptyIndex, validateIndex, validateIndexSourceSize } from '../../utils/array.js';\nimport { getSafeProperty, setSafeProperty } from '../../utils/customs.js';\nimport { DimensionError } from '../../error/DimensionError.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'subset';\nvar dependencies = ['typed', 'matrix', 'zeros', 'add'];\nexport var createSubset = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n zeros,\n add\n } = _ref;\n /**\n * Get or set a subset of a matrix or string.\n *\n * Syntax:\n * math.subset(value, index) // retrieve a subset\n * math.subset(value, index, replacement [, defaultValue]) // replace a subset\n *\n * Examples:\n *\n * // get a subset\n * const d = [[1, 2], [3, 4]]\n * math.subset(d, math.index(1, 0)) // returns 3\n * math.subset(d, math.index([0, 1], 1)) // returns [[2], [4]]\n * math.subset(d, math.index([false, true], 0)) // returns [[3]]\n *\n * // replace a subset\n * const e = []\n * const f = math.subset(e, math.index(0, [0, 2]), [5, 6]) // f = [[5, 0, 6]]\n * const g = math.subset(f, math.index(1, 1), 7, 0) // g = [[5, 0, 6], [0, 7, 0]]\n * math.subset(g, math.index([false, true], 1), 8) // returns [[5, 0, 6], [0, 8, 0]]\n *\n * // get submatrix using ranges\n * const M = [\n * [1,2,3],\n * [4,5,6],\n * [7,8,9]\n * ]\n * math.subset(M, math.index(math.range(0,2), math.range(0,3))) // [[1, 2, 3], [4, 5, 6]]\n *\n * See also:\n *\n * size, resize, squeeze, index\n *\n * @param {Array | Matrix | string} matrix An array, matrix, or string\n * @param {Index} index\n * For each dimension of the target, specifies an index or a list of\n * indices to fetch or set. `subset` uses the cartesian product of\n * the indices specified in each dimension.\n * @param {*} [replacement] An array, matrix, or scalar.\n * If provided, the subset is replaced with replacement.\n * If not provided, the subset is returned\n * @param {*} [defaultValue=undefined] Default value, filled in on new entries when\n * the matrix is resized. If not provided,\n * math.matrix elements will be left undefined.\n * @return {Array | Matrix | string} Either the retrieved subset or the updated matrix.\n */\n\n return typed(name, {\n // get subset\n 'Matrix, Index': function Matrix_Index(value, index) {\n if (isEmptyIndex(index)) {\n return matrix();\n }\n validateIndexSourceSize(value, index);\n return value.subset(index);\n },\n 'Array, Index': typed.referTo('Matrix, Index', function (subsetRef) {\n return function (value, index) {\n var subsetResult = subsetRef(matrix(value), index);\n return index.isScalar() ? subsetResult : subsetResult.valueOf();\n };\n }),\n 'Object, Index': _getObjectProperty,\n 'string, Index': _getSubstring,\n // set subset\n 'Matrix, Index, any, any': function Matrix_Index_any_any(value, index, replacement, defaultValue) {\n if (isEmptyIndex(index)) {\n return value;\n }\n validateIndexSourceSize(value, index);\n return value.clone().subset(index, _broadcastReplacement(replacement, index), defaultValue);\n },\n 'Array, Index, any, any': typed.referTo('Matrix, Index, any, any', function (subsetRef) {\n return function (value, index, replacement, defaultValue) {\n var subsetResult = subsetRef(matrix(value), index, replacement, defaultValue);\n return subsetResult.isMatrix ? subsetResult.valueOf() : subsetResult;\n };\n }),\n 'Array, Index, any': typed.referTo('Matrix, Index, any, any', function (subsetRef) {\n return function (value, index, replacement) {\n return subsetRef(matrix(value), index, replacement, undefined).valueOf();\n };\n }),\n 'Matrix, Index, any': typed.referTo('Matrix, Index, any, any', function (subsetRef) {\n return function (value, index, replacement) {\n return subsetRef(value, index, replacement, undefined);\n };\n }),\n 'string, Index, string': _setSubstring,\n 'string, Index, string, string': _setSubstring,\n 'Object, Index, any': _setObjectProperty\n });\n\n /**\n * Broadcasts a replacment value to be the same size as index\n * @param {number | BigNumber | Array | Matrix} replacement Replacement value to try to broadcast\n * @param {*} index Index value\n * @returns broadcasted replacement that matches the size of index\n */\n\n function _broadcastReplacement(replacement, index) {\n if (typeof replacement === 'string') {\n throw new Error('can\\'t boradcast a string');\n }\n if (index._isScalar) {\n return replacement;\n }\n var indexSize = index.size();\n if (indexSize.every(d => d > 0)) {\n try {\n return add(replacement, zeros(indexSize));\n } catch (error) {\n return replacement;\n }\n } else {\n return replacement;\n }\n }\n});\n\n/**\n * Retrieve a subset of a string\n * @param {string} str string from which to get a substring\n * @param {Index} index An index or list of indices (character positions)\n * @returns {string} substring\n * @private\n */\nfunction _getSubstring(str, index) {\n if (!isIndex(index)) {\n // TODO: better error message\n throw new TypeError('Index expected');\n }\n if (isEmptyIndex(index)) {\n return '';\n }\n validateIndexSourceSize(Array.from(str), index);\n if (index.size().length !== 1) {\n throw new DimensionError(index.size().length, 1);\n }\n\n // validate whether the range is out of range\n var strLen = str.length;\n validateIndex(index.min()[0], strLen);\n validateIndex(index.max()[0], strLen);\n var range = index.dimension(0);\n var substr = '';\n range.forEach(function (v) {\n substr += str.charAt(v);\n });\n return substr;\n}\n\n/**\n * Replace a substring in a string\n * @param {string} str string to be replaced\n * @param {Index} index An index or list of indices (character positions)\n * @param {string} replacement Replacement string\n * @param {string} [defaultValue] Default value to be used when resizing\n * the string. is ' ' by default\n * @returns {string} result\n * @private\n */\nfunction _setSubstring(str, index, replacement, defaultValue) {\n if (!index || index.isIndex !== true) {\n // TODO: better error message\n throw new TypeError('Index expected');\n }\n if (isEmptyIndex(index)) {\n return str;\n }\n validateIndexSourceSize(Array.from(str), index);\n if (index.size().length !== 1) {\n throw new DimensionError(index.size().length, 1);\n }\n if (defaultValue !== undefined) {\n if (typeof defaultValue !== 'string' || defaultValue.length !== 1) {\n throw new TypeError('Single character expected as defaultValue');\n }\n } else {\n defaultValue = ' ';\n }\n var range = index.dimension(0);\n var len = range.size()[0];\n if (len !== replacement.length) {\n throw new DimensionError(range.size()[0], replacement.length);\n }\n\n // validate whether the range is out of range\n var strLen = str.length;\n validateIndex(index.min()[0]);\n validateIndex(index.max()[0]);\n\n // copy the string into an array with characters\n var chars = [];\n for (var i = 0; i < strLen; i++) {\n chars[i] = str.charAt(i);\n }\n range.forEach(function (v, i) {\n chars[v] = replacement.charAt(i[0]);\n });\n\n // initialize undefined characters with a space\n if (chars.length > strLen) {\n for (var _i = strLen - 1, _len = chars.length; _i < _len; _i++) {\n if (!chars[_i]) {\n chars[_i] = defaultValue;\n }\n }\n }\n return chars.join('');\n}\n\n/**\n * Retrieve a property from an object\n * @param {Object} object\n * @param {Index} index\n * @return {*} Returns the value of the property\n * @private\n */\nfunction _getObjectProperty(object, index) {\n if (isEmptyIndex(index)) {\n return undefined;\n }\n if (index.size().length !== 1) {\n throw new DimensionError(index.size(), 1);\n }\n var key = index.dimension(0);\n if (typeof key !== 'string') {\n throw new TypeError('String expected as index to retrieve an object property');\n }\n return getSafeProperty(object, key);\n}\n\n/**\n * Set a property on an object\n * @param {Object} object\n * @param {Index} index\n * @param {*} replacement\n * @return {*} Returns the updated object\n * @private\n */\nfunction _setObjectProperty(object, index, replacement) {\n if (isEmptyIndex(index)) {\n return object;\n }\n if (index.size().length !== 1) {\n throw new DimensionError(index.size(), 1);\n }\n var key = index.dimension(0);\n if (typeof key !== 'string') {\n throw new TypeError('String expected as index to retrieve an object property');\n }\n\n // clone the object, and apply the property to the clone\n var updated = clone(object);\n setSafeProperty(updated, key, replacement);\n return updated;\n}", "import { clone } from '../../utils/object.js';\nimport { format } from '../../utils/string.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'transpose';\nvar dependencies = ['typed', 'matrix'];\nexport var createTranspose = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix\n } = _ref;\n /**\n * Transpose a matrix. All values of the matrix are reflected over its\n * main diagonal. Only applicable to two dimensional matrices containing\n * a vector (i.e. having size `[1,n]` or `[n,1]`). One dimensional\n * vectors and scalars return the input unchanged.\n *\n * Syntax:\n *\n * math.transpose(x)\n *\n * Examples:\n *\n * const A = [[1, 2, 3], [4, 5, 6]]\n * math.transpose(A) // returns [[1, 4], [2, 5], [3, 6]]\n *\n * See also:\n *\n * diag, inv, subset, squeeze\n *\n * @param {Array | Matrix} x Matrix to be transposed\n * @return {Array | Matrix} The transposed matrix\n */\n return typed(name, {\n Array: x => transposeMatrix(matrix(x)).valueOf(),\n Matrix: transposeMatrix,\n any: clone // scalars\n });\n function transposeMatrix(x) {\n // matrix size\n var size = x.size();\n\n // result\n var c;\n\n // process dimensions\n switch (size.length) {\n case 1:\n // vector\n c = x.clone();\n break;\n case 2:\n {\n // rows and columns\n var rows = size[0];\n var columns = size[1];\n\n // check columns\n if (columns === 0) {\n // throw exception\n throw new RangeError('Cannot transpose a 2D matrix with no columns (size: ' + format(size) + ')');\n }\n\n // process storage format\n switch (x.storage()) {\n case 'dense':\n c = _denseTranspose(x, rows, columns);\n break;\n case 'sparse':\n c = _sparseTranspose(x, rows, columns);\n break;\n }\n }\n break;\n default:\n // multi dimensional\n throw new RangeError('Matrix must be a vector or two dimensional (size: ' + format(size) + ')');\n }\n return c;\n }\n function _denseTranspose(m, rows, columns) {\n // matrix array\n var data = m._data;\n // transposed matrix data\n var transposed = [];\n var transposedRow;\n // loop columns\n for (var j = 0; j < columns; j++) {\n // initialize row\n transposedRow = transposed[j] = [];\n // loop rows\n for (var i = 0; i < rows; i++) {\n // set data\n transposedRow[i] = clone(data[i][j]);\n }\n }\n // return matrix\n return m.createDenseMatrix({\n data: transposed,\n size: [columns, rows],\n datatype: m._datatype\n });\n }\n function _sparseTranspose(m, rows, columns) {\n // matrix arrays\n var values = m._values;\n var index = m._index;\n var ptr = m._ptr;\n // result matrices\n var cvalues = values ? [] : undefined;\n var cindex = [];\n var cptr = [];\n // row counts\n var w = [];\n for (var x = 0; x < rows; x++) {\n w[x] = 0;\n }\n // vars\n var p, l, j;\n // loop values in matrix\n for (p = 0, l = index.length; p < l; p++) {\n // number of values in row\n w[index[p]]++;\n }\n // cumulative sum\n var sum = 0;\n // initialize cptr with the cummulative sum of row counts\n for (var i = 0; i < rows; i++) {\n // update cptr\n cptr.push(sum);\n // update sum\n sum += w[i];\n // update w\n w[i] = cptr[i];\n }\n // update cptr\n cptr.push(sum);\n // loop columns\n for (j = 0; j < columns; j++) {\n // values & index in column\n for (var k0 = ptr[j], k1 = ptr[j + 1], k = k0; k < k1; k++) {\n // C values & index\n var q = w[index[k]]++;\n // C[j, i] = A[i, j]\n cindex[q] = j;\n // check we need to process values (pattern matrix)\n if (values) {\n cvalues[q] = clone(values[k]);\n }\n }\n }\n // return matrix\n return m.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [columns, rows],\n datatype: m._datatype\n });\n }\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'ctranspose';\nvar dependencies = ['typed', 'transpose', 'conj'];\nexport var createCtranspose = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n transpose,\n conj\n } = _ref;\n /**\n * Transpose and complex conjugate a matrix. All values of the matrix are\n * reflected over its main diagonal and then the complex conjugate is\n * taken. This is equivalent to complex conjugation for scalars and\n * vectors.\n *\n * Syntax:\n *\n * math.ctranspose(x)\n *\n * Examples:\n *\n * const A = [[1, 2, 3], [4, 5, math.complex(6,7)]]\n * math.ctranspose(A) // returns [[1, 4], [2, 5], [3, {re:6,im:7}]]\n *\n * See also:\n *\n * transpose, diag, inv, subset, squeeze\n *\n * @param {Array | Matrix} x Matrix to be ctransposed\n * @return {Array | Matrix} The ctransposed matrix\n */\n return typed(name, {\n any: function any(x) {\n return conj(transpose(x));\n }\n });\n});", "import { isBigNumber } from '../../utils/is.js';\nimport { isInteger } from '../../utils/number.js';\nimport { resize } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'zeros';\nvar dependencies = ['typed', 'config', 'matrix', 'BigNumber'];\nexport var createZeros = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n BigNumber\n } = _ref;\n /**\n * Create a matrix filled with zeros. The created matrix can have one or\n * multiple dimensions.\n *\n * Syntax:\n *\n * math.zeros(m)\n * math.zeros(m, format)\n * math.zeros(m, n)\n * math.zeros(m, n, format)\n * math.zeros([m, n])\n * math.zeros([m, n], format)\n *\n * Examples:\n *\n * math.zeros() // returns []\n * math.zeros(3) // returns [0, 0, 0]\n * math.zeros(3, 2) // returns [[0, 0], [0, 0], [0, 0]]\n * math.zeros(3, 'dense') // returns [0, 0, 0]\n *\n * const A = [[1, 2, 3], [4, 5, 6]]\n * math.zeros(math.size(A)) // returns [[0, 0, 0], [0, 0, 0]]\n *\n * See also:\n *\n * ones, identity, size, range\n *\n * @param {...(number|BigNumber) | Array} size The size of each dimension of the matrix\n * @param {string} [format] The Matrix storage format\n *\n * @return {Array | Matrix} A matrix filled with zeros\n */\n return typed(name, {\n '': function _() {\n return config.matrix === 'Array' ? _zeros([]) : _zeros([], 'default');\n },\n // math.zeros(m, n, p, ..., format)\n // TODO: more accurate signature '...number | BigNumber, string' as soon as typed-function supports this\n '...number | BigNumber | string': function number__BigNumber__string(size) {\n var last = size[size.length - 1];\n if (typeof last === 'string') {\n var format = size.pop();\n return _zeros(size, format);\n } else if (config.matrix === 'Array') {\n return _zeros(size);\n } else {\n return _zeros(size, 'default');\n }\n },\n Array: _zeros,\n Matrix: function Matrix(size) {\n var format = size.storage();\n return _zeros(size.valueOf(), format);\n },\n 'Array | Matrix, string': function Array__Matrix_string(size, format) {\n return _zeros(size.valueOf(), format);\n }\n });\n\n /**\n * Create an Array or Matrix with zeros\n * @param {Array} size\n * @param {string} [format='default']\n * @return {Array | Matrix}\n * @private\n */\n function _zeros(size, format) {\n var hasBigNumbers = _normalize(size);\n var defaultValue = hasBigNumbers ? new BigNumber(0) : 0;\n _validate(size);\n if (format) {\n // return a matrix\n var m = matrix(format);\n if (size.length > 0) {\n return m.resize(size, defaultValue);\n }\n return m;\n } else {\n // return an Array\n var arr = [];\n if (size.length > 0) {\n return resize(arr, size, defaultValue);\n }\n return arr;\n }\n }\n\n // replace BigNumbers with numbers, returns true if size contained BigNumbers\n function _normalize(size) {\n var hasBigNumbers = false;\n size.forEach(function (value, index, arr) {\n if (isBigNumber(value)) {\n hasBigNumbers = true;\n arr[index] = value.toNumber();\n }\n });\n return hasBigNumbers;\n }\n\n // validate arguments\n function _validate(size) {\n size.forEach(function (value) {\n if (typeof value !== 'number' || !isInteger(value) || value < 0) {\n throw new Error('Parameters in function zeros must be positive integers');\n }\n });\n }\n});\n\n// TODO: zeros contains almost the same code as ones. Reuse this?", "import { arraySize } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'fft';\nvar dependencies = ['typed', 'matrix', 'addScalar', 'multiplyScalar', 'divideScalar', 'exp', 'tau', 'i', 'dotDivide', 'conj', 'pow', 'ceil', 'log2'];\nexport var createFft = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n addScalar,\n multiplyScalar,\n divideScalar,\n exp,\n tau,\n i: I,\n dotDivide,\n conj,\n pow,\n ceil,\n log2\n } = _ref;\n /**\n * Calculate N-dimensional Fourier transform\n *\n * Syntax:\n *\n * math.fft(arr)\n *\n * Examples:\n *\n * math.fft([[1, 0], [1, 0]]) // returns [[{re:2, im:0}, {re:2, im:0}], [{re:0, im:0}, {re:0, im:0}]]\n *\n *\n * See Also:\n *\n * ifft\n *\n * @param {Array | Matrix} arr An array or matrix\n * @return {Array | Matrix} N-dimensional Fourier transformation of the array\n */\n return typed(name, {\n Array: _ndFft,\n Matrix: function Matrix(matrix) {\n return matrix.create(_ndFft(matrix.valueOf()), matrix.datatype());\n }\n });\n\n /**\n * Perform an N-dimensional Fourier transform\n *\n * @param {Array} arr The array\n * @return {Array} resulting array\n */\n function _ndFft(arr) {\n var size = arraySize(arr);\n if (size.length === 1) return _fft(arr, size[0]);\n // ndFft along dimension 1,...,N-1 then 1dFft along dimension 0\n return _1dFft(arr.map(slice => _ndFft(slice, size.slice(1))), 0);\n }\n\n /**\n * Perform an 1-dimensional Fourier transform\n *\n * @param {Array} arr The array\n * @param {number} dim dimension of the array to perform on\n * @return {Array} resulting array\n */\n function _1dFft(arr, dim) {\n var size = arraySize(arr);\n if (dim !== 0) return new Array(size[0]).fill(0).map((_, i) => _1dFft(arr[i], dim - 1));\n if (size.length === 1) return _fft(arr);\n function _transpose(arr) {\n // Swap first 2 dimensions\n var size = arraySize(arr);\n return new Array(size[1]).fill(0).map((_, j) => new Array(size[0]).fill(0).map((_, i) => arr[i][j]));\n }\n return _transpose(_1dFft(_transpose(arr), 1));\n }\n /**\n * Perform an 1-dimensional non-power-of-2 Fourier transform using Chirp-Z Transform\n *\n * @param {Array} arr The array\n * @return {Array} resulting array\n */\n function _czt(arr) {\n var n = arr.length;\n var w = exp(divideScalar(multiplyScalar(-1, multiplyScalar(I, tau)), n));\n var chirp = [];\n for (var i = 1 - n; i < n; i++) {\n chirp.push(pow(w, divideScalar(pow(i, 2), 2)));\n }\n var N2 = pow(2, ceil(log2(n + n - 1)));\n var xp = [...new Array(n).fill(0).map((_, i) => multiplyScalar(arr[i], chirp[n - 1 + i])), ...new Array(N2 - n).fill(0)];\n var ichirp = [...new Array(n + n - 1).fill(0).map((_, i) => divideScalar(1, chirp[i])), ...new Array(N2 - (n + n - 1)).fill(0)];\n var fftXp = _fft(xp);\n var fftIchirp = _fft(ichirp);\n var fftProduct = new Array(N2).fill(0).map((_, i) => multiplyScalar(fftXp[i], fftIchirp[i]));\n var ifftProduct = dotDivide(conj(_ndFft(conj(fftProduct))), N2);\n var ret = [];\n for (var _i = n - 1; _i < n + n - 1; _i++) {\n ret.push(multiplyScalar(ifftProduct[_i], chirp[_i]));\n }\n return ret;\n }\n /**\n * Perform an 1-dimensional Fourier transform\n *\n * @param {Array} arr The array\n * @return {Array} resulting array\n */\n function _fft(arr) {\n var len = arr.length;\n if (len === 1) return [arr[0]];\n if (len % 2 === 0) {\n var ret = [..._fft(arr.filter((_, i) => i % 2 === 0), len / 2), ..._fft(arr.filter((_, i) => i % 2 === 1), len / 2)];\n for (var k = 0; k < len / 2; k++) {\n var p = ret[k];\n var q = multiplyScalar(ret[k + len / 2], exp(multiplyScalar(multiplyScalar(tau, I), divideScalar(-k, len))));\n ret[k] = addScalar(p, q);\n ret[k + len / 2] = addScalar(p, multiplyScalar(-1, q));\n }\n return ret;\n } else {\n // use chirp-z transform for non-power-of-2 FFT\n return _czt(arr);\n }\n // throw new Error('Can only calculate FFT of power-of-two size')\n }\n});", "import { arraySize } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { isMatrix } from '../../utils/is.js';\nvar name = 'ifft';\nvar dependencies = ['typed', 'fft', 'dotDivide', 'conj'];\nexport var createIfft = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n fft,\n dotDivide,\n conj\n } = _ref;\n /**\n * Calculate N-dimensional inverse Fourier transform\n *\n * Syntax:\n *\n * math.ifft(arr)\n *\n * Examples:\n *\n * math.ifft([[2, 2], [0, 0]]) // returns [[{re:1, im:0}, {re:0, im:0}], [{re:1, im:0}, {re:0, im:0}]]\n *\n * See Also:\n *\n * fft\n *\n * @param {Array | Matrix} arr An array or matrix\n * @return {Array | Matrix} N-dimensional Fourier transformation of the array\n */\n return typed(name, {\n 'Array | Matrix': function Array__Matrix(arr) {\n var size = isMatrix(arr) ? arr.size() : arraySize(arr);\n return dotDivide(conj(fft(conj(arr))), size.reduce((acc, curr) => acc * curr, 1));\n }\n });\n});", "function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };", "import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };", "import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };", "import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport { isUnit, isNumber, isBigNumber } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'solveODE';\nvar dependencies = ['typed', 'add', 'subtract', 'multiply', 'divide', 'max', 'map', 'abs', 'isPositive', 'isNegative', 'larger', 'smaller', 'matrix', 'bignumber', 'unaryMinus'];\nexport var createSolveODE = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n subtract,\n multiply,\n divide,\n max,\n map,\n abs,\n isPositive,\n isNegative,\n larger,\n smaller,\n matrix,\n bignumber,\n unaryMinus\n } = _ref;\n /**\n * Numerical Integration of Ordinary Differential Equations\n *\n * Two variable step methods are provided:\n * - \"RK23\": Bogacki\u2013Shampine method\n * - \"RK45\": Dormand-Prince method RK5(4)7M (default)\n *\n * The arguments are expected as follows.\n *\n * - `func` should be the forcing function `f(t, y)`\n * - `tspan` should be a vector of two numbers or units `[tStart, tEnd]`\n * - `y0` the initial state values, should be a scalar or a flat array\n * - `options` should be an object with the following information:\n * - `method` ('RK45'): ['RK23', 'RK45']\n * - `tol` (1e-3): Numeric tolerance of the method, the solver keeps the error estimates less than this value\n * - `firstStep`: Initial step size\n * - `minStep`: minimum step size of the method\n * - `maxStep`: maximum step size of the method\n * - `minDelta` (0.2): minimum ratio of change for the step\n * - `maxDelta` (5): maximum ratio of change for the step\n * - `maxIter` (1e4): maximum number of iterations\n *\n * The returned value is an object with `{t, y}` please note that even though `t` means time, it can represent any other independant variable like `x`:\n * - `t` an array of size `[n]`\n * - `y` the states array can be in two ways\n * - **if `y0` is a scalar:** returns an array-like of size `[n]`\n * - **if `y0` is a flat array-like of size [m]:** returns an array like of size `[n, m]`\n *\n * Syntax:\n *\n * math.solveODE(func, tspan, y0)\n * math.solveODE(func, tspan, y0, options)\n *\n * Examples:\n *\n * function func(t, y) {return y}\n * const tspan = [0, 4]\n * const y0 = 1\n * math.solveODE(func, tspan, y0)\n * math.solveODE(func, tspan, [1, 2])\n * math.solveODE(func, tspan, y0, { method:\"RK23\", maxStep:0.1 })\n *\n * See also:\n *\n * derivative, simplifyCore\n *\n * @param {function} func The forcing function f(t,y)\n * @param {Array | Matrix} tspan The time span\n * @param {number | BigNumber | Unit | Array | Matrix} y0 The initial value\n * @param {Object} [options] Optional configuration options\n * @return {Object} Return an object with t and y values as arrays\n */\n\n function _rk(butcherTableau) {\n // generates an adaptive runge kutta method from it's butcher tableau\n\n return function (f, tspan, y0, options) {\n // adaptive runge kutta methods\n var wrongTSpan = !(tspan.length === 2 && (tspan.every(isNumOrBig) || tspan.every(isUnit)));\n if (wrongTSpan) {\n throw new Error('\"tspan\" must be an Array of two numeric values or two units [tStart, tEnd]');\n }\n var t0 = tspan[0]; // initial time\n var tf = tspan[1]; // final time\n var isForwards = larger(tf, t0);\n var firstStep = options.firstStep;\n if (firstStep !== undefined && !isPositive(firstStep)) {\n throw new Error('\"firstStep\" must be positive');\n }\n var maxStep = options.maxStep;\n if (maxStep !== undefined && !isPositive(maxStep)) {\n throw new Error('\"maxStep\" must be positive');\n }\n var minStep = options.minStep;\n if (minStep && isNegative(minStep)) {\n throw new Error('\"minStep\" must be positive or zero');\n }\n var timeVars = [t0, tf, firstStep, minStep, maxStep].filter(x => x !== undefined);\n if (!(timeVars.every(isNumOrBig) || timeVars.every(isUnit))) {\n throw new Error('Inconsistent type of \"t\" dependant variables');\n }\n var steps = 1; // divide time in this number of steps\n var tol = options.tol ? options.tol : 1e-4; // define a tolerance (must be an option)\n var minDelta = options.minDelta ? options.minDelta : 0.2;\n var maxDelta = options.maxDelta ? options.maxDelta : 5;\n var maxIter = options.maxIter ? options.maxIter : 10000; // stop inifite evaluation if something goes wrong\n var hasBigNumbers = [t0, tf, ...y0, maxStep, minStep].some(isBigNumber);\n var [a, c, b, bp] = hasBigNumbers ? [bignumber(butcherTableau.a), bignumber(butcherTableau.c), bignumber(butcherTableau.b), bignumber(butcherTableau.bp)] : [butcherTableau.a, butcherTableau.c, butcherTableau.b, butcherTableau.bp];\n var h = firstStep ? isForwards ? firstStep : unaryMinus(firstStep) : divide(subtract(tf, t0), steps); // define the first step size\n var t = [t0]; // start the time array\n var y = [y0]; // start the solution array\n\n var deltaB = subtract(b, bp); // b - bp\n\n var n = 0;\n var iter = 0;\n var ongoing = _createOngoing(isForwards);\n var trimStep = _createTrimStep(isForwards);\n // iterate unitil it reaches either the final time or maximum iterations\n while (ongoing(t[n], tf)) {\n var k = [];\n\n // trim the time step so that it doesn't overshoot\n h = trimStep(t[n], tf, h);\n\n // calculate the first value of k\n k.push(f(t[n], y[n]));\n\n // calculate the rest of the values of k\n for (var i = 1; i < c.length; ++i) {\n k.push(f(add(t[n], multiply(c[i], h)), add(y[n], multiply(h, a[i], k))));\n }\n\n // estimate the error by comparing solutions of different orders\n var TE = max(abs(map(multiply(deltaB, k), X => isUnit(X) ? X.value : X)));\n if (TE < tol && tol / TE > 1 / 4) {\n // push solution if within tol\n t.push(add(t[n], h));\n y.push(add(y[n], multiply(h, b, k)));\n n++;\n }\n\n // estimate the delta value that will affect the step size\n var delta = 0.84 * (tol / TE) ** (1 / 5);\n if (smaller(delta, minDelta)) {\n delta = minDelta;\n } else if (larger(delta, maxDelta)) {\n delta = maxDelta;\n }\n delta = hasBigNumbers ? bignumber(delta) : delta;\n h = multiply(h, delta);\n if (maxStep && larger(abs(h), maxStep)) {\n h = isForwards ? maxStep : unaryMinus(maxStep);\n } else if (minStep && smaller(abs(h), minStep)) {\n h = isForwards ? minStep : unaryMinus(minStep);\n }\n iter++;\n if (iter > maxIter) {\n throw new Error('Maximum number of iterations reached, try changing options');\n }\n }\n return {\n t,\n y\n };\n };\n }\n function _rk23(f, tspan, y0, options) {\n // Bogacki\u2013Shampine method\n\n // Define the butcher table\n var a = [[], [1 / 2], [0, 3 / 4], [2 / 9, 1 / 3, 4 / 9]];\n var c = [null, 1 / 2, 3 / 4, 1];\n var b = [2 / 9, 1 / 3, 4 / 9, 0];\n var bp = [7 / 24, 1 / 4, 1 / 3, 1 / 8];\n var butcherTableau = {\n a,\n c,\n b,\n bp\n };\n\n // Solve an adaptive step size rk method\n return _rk(butcherTableau)(f, tspan, y0, options);\n }\n function _rk45(f, tspan, y0, options) {\n // Dormand Prince method\n\n // Define the butcher tableau\n var a = [[], [1 / 5], [3 / 40, 9 / 40], [44 / 45, -56 / 15, 32 / 9], [19372 / 6561, -25360 / 2187, 64448 / 6561, -212 / 729], [9017 / 3168, -355 / 33, 46732 / 5247, 49 / 176, -5103 / 18656], [35 / 384, 0, 500 / 1113, 125 / 192, -2187 / 6784, 11 / 84]];\n var c = [null, 1 / 5, 3 / 10, 4 / 5, 8 / 9, 1, 1];\n var b = [35 / 384, 0, 500 / 1113, 125 / 192, -2187 / 6784, 11 / 84, 0];\n var bp = [5179 / 57600, 0, 7571 / 16695, 393 / 640, -92097 / 339200, 187 / 2100, 1 / 40];\n var butcherTableau = {\n a,\n c,\n b,\n bp\n };\n\n // Solve an adaptive step size rk method\n return _rk(butcherTableau)(f, tspan, y0, options);\n }\n function _solveODE(f, tspan, y0, opt) {\n var method = opt.method ? opt.method : 'RK45';\n var methods = {\n RK23: _rk23,\n RK45: _rk45\n };\n if (method.toUpperCase() in methods) {\n var methodOptions = _objectSpread({}, opt); // clone the options object\n delete methodOptions.method; // delete the method as it won't be needed\n return methods[method.toUpperCase()](f, tspan, y0, methodOptions);\n } else {\n // throw an error indicating there is no such method\n var methodsWithQuotes = Object.keys(methods).map(x => \"\\\"\".concat(x, \"\\\"\"));\n // generates a string of methods like: \"BDF\", \"RK23\" and \"RK45\"\n var availableMethodsString = \"\".concat(methodsWithQuotes.slice(0, -1).join(', '), \" and \").concat(methodsWithQuotes.slice(-1));\n throw new Error(\"Unavailable method \\\"\".concat(method, \"\\\". Available methods are \").concat(availableMethodsString));\n }\n }\n function _createOngoing(isForwards) {\n // returns the correct function to test if it's still iterating\n return isForwards ? smaller : larger;\n }\n function _createTrimStep(isForwards) {\n var outOfBounds = isForwards ? larger : smaller;\n return function (t, tf, h) {\n var next = add(t, h);\n return outOfBounds(next, tf) ? subtract(tf, t) : h;\n };\n }\n function isNumOrBig(x) {\n // checks if it's a number or bignumber\n return isBigNumber(x) || isNumber(x);\n }\n function _matrixSolveODE(f, T, y0, options) {\n // receives matrices and returns matrices\n var sol = _solveODE(f, T.toArray(), y0.toArray(), options);\n return {\n t: matrix(sol.t),\n y: matrix(sol.y)\n };\n }\n return typed('solveODE', {\n 'function, Array, Array, Object': _solveODE,\n 'function, Matrix, Matrix, Object': _matrixSolveODE,\n 'function, Array, Array': (f, T, y0) => _solveODE(f, T, y0, {}),\n 'function, Matrix, Matrix': (f, T, y0) => _matrixSolveODE(f, T, y0, {}),\n 'function, Array, number | BigNumber | Unit': (f, T, y0) => {\n var sol = _solveODE(f, T, [y0], {});\n return {\n t: sol.t,\n y: sol.y.map(Y => Y[0])\n };\n },\n 'function, Matrix, number | BigNumber | Unit': (f, T, y0) => {\n var sol = _solveODE(f, T.toArray(), [y0], {});\n return {\n t: matrix(sol.t),\n y: matrix(sol.y.map(Y => Y[0]))\n };\n },\n 'function, Array, number | BigNumber | Unit, Object': (f, T, y0, options) => {\n var sol = _solveODE(f, T, [y0], options);\n return {\n t: sol.t,\n y: sol.y.map(Y => Y[0])\n };\n },\n 'function, Matrix, number | BigNumber | Unit, Object': (f, T, y0, options) => {\n var sol = _solveODE(f, T.toArray(), [y0], options);\n return {\n t: matrix(sol.t),\n y: matrix(sol.y.map(Y => Y[0]))\n };\n }\n });\n});", "/* eslint-disable no-loss-of-precision */\n\nimport { deepMap } from '../../utils/collection.js';\nimport { sign } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'erf';\nvar dependencies = ['typed'];\nexport var createErf = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Compute the erf function of a value using a rational Chebyshev\n * approximations for different intervals of x.\n *\n * This is a translation of W. J. Cody's Fortran implementation from 1987\n * ( https://www.netlib.org/specfun/erf ). See the AMS publication\n * \"Rational Chebyshev Approximations for the Error Function\" by W. J. Cody\n * for an explanation of this process.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.erf(x)\n *\n * Examples:\n *\n * math.erf(0.2) // returns 0.22270258921047847\n * math.erf(-0.5) // returns -0.5204998778130465\n * math.erf(4) // returns 0.9999999845827421\n *\n * See also:\n * zeta\n *\n * @param {number | Array | Matrix} x A real number\n * @return {number | Array | Matrix} The erf of `x`\n */\n return typed('name', {\n number: function number(x) {\n var y = Math.abs(x);\n if (y >= MAX_NUM) {\n return sign(x);\n }\n if (y <= THRESH) {\n return sign(x) * erf1(y);\n }\n if (y <= 4.0) {\n return sign(x) * (1 - erfc2(y));\n }\n return sign(x) * (1 - erfc3(y));\n },\n 'Array | Matrix': typed.referToSelf(self => n => deepMap(n, self))\n\n // TODO: For complex numbers, use the approximation for the Faddeeva function\n // from \"More Efficient Computation of the Complex Error Function\" (AMS)\n });\n\n /**\n * Approximates the error function erf() for x <= 0.46875 using this function:\n * n\n * erf(x) = x * sum (p_j * x^(2j)) / (q_j * x^(2j))\n * j=0\n */\n function erf1(y) {\n var ysq = y * y;\n var xnum = P[0][4] * ysq;\n var xden = ysq;\n var i;\n for (i = 0; i < 3; i += 1) {\n xnum = (xnum + P[0][i]) * ysq;\n xden = (xden + Q[0][i]) * ysq;\n }\n return y * (xnum + P[0][3]) / (xden + Q[0][3]);\n }\n\n /**\n * Approximates the complement of the error function erfc() for\n * 0.46875 <= x <= 4.0 using this function:\n * n\n * erfc(x) = e^(-x^2) * sum (p_j * x^j) / (q_j * x^j)\n * j=0\n */\n function erfc2(y) {\n var xnum = P[1][8] * y;\n var xden = y;\n var i;\n for (i = 0; i < 7; i += 1) {\n xnum = (xnum + P[1][i]) * y;\n xden = (xden + Q[1][i]) * y;\n }\n var result = (xnum + P[1][7]) / (xden + Q[1][7]);\n var ysq = parseInt(y * 16) / 16;\n var del = (y - ysq) * (y + ysq);\n return Math.exp(-ysq * ysq) * Math.exp(-del) * result;\n }\n\n /**\n * Approximates the complement of the error function erfc() for x > 4.0 using\n * this function:\n *\n * erfc(x) = (e^(-x^2) / x) * [ 1/sqrt(pi) +\n * n\n * 1/(x^2) * sum (p_j * x^(-2j)) / (q_j * x^(-2j)) ]\n * j=0\n */\n function erfc3(y) {\n var ysq = 1 / (y * y);\n var xnum = P[2][5] * ysq;\n var xden = ysq;\n var i;\n for (i = 0; i < 4; i += 1) {\n xnum = (xnum + P[2][i]) * ysq;\n xden = (xden + Q[2][i]) * ysq;\n }\n var result = ysq * (xnum + P[2][4]) / (xden + Q[2][4]);\n result = (SQRPI - result) / y;\n ysq = parseInt(y * 16) / 16;\n var del = (y - ysq) * (y + ysq);\n return Math.exp(-ysq * ysq) * Math.exp(-del) * result;\n }\n});\n\n/**\n * Upper bound for the first approximation interval, 0 <= x <= THRESH\n * @constant\n */\nvar THRESH = 0.46875;\n\n/**\n * Constant used by W. J. Cody's Fortran77 implementation to denote sqrt(pi)\n * @constant\n */\nvar SQRPI = 5.6418958354775628695e-1;\n\n/**\n * Coefficients for each term of the numerator sum (p_j) for each approximation\n * interval (see W. J. Cody's paper for more details)\n * @constant\n */\nvar P = [[3.16112374387056560e00, 1.13864154151050156e02, 3.77485237685302021e02, 3.20937758913846947e03, 1.85777706184603153e-1], [5.64188496988670089e-1, 8.88314979438837594e00, 6.61191906371416295e01, 2.98635138197400131e02, 8.81952221241769090e02, 1.71204761263407058e03, 2.05107837782607147e03, 1.23033935479799725e03, 2.15311535474403846e-8], [3.05326634961232344e-1, 3.60344899949804439e-1, 1.25781726111229246e-1, 1.60837851487422766e-2, 6.58749161529837803e-4, 1.63153871373020978e-2]];\n\n/**\n * Coefficients for each term of the denominator sum (q_j) for each approximation\n * interval (see W. J. Cody's paper for more details)\n * @constant\n */\nvar Q = [[2.36012909523441209e01, 2.44024637934444173e02, 1.28261652607737228e03, 2.84423683343917062e03], [1.57449261107098347e01, 1.17693950891312499e02, 5.37181101862009858e02, 1.62138957456669019e03, 3.29079923573345963e03, 4.36261909014324716e03, 3.43936767414372164e03, 1.23033935480374942e03], [2.56852019228982242e00, 1.87295284992346047e00, 5.27905102951428412e-1, 6.05183413124413191e-2, 2.33520497626869185e-3]];\n\n/**\n * Maximum/minimum safe numbers to input to erf() (in ES6+, this number is\n * Number.[MAX|MIN]_SAFE_INTEGER). erf() for all numbers beyond this limit will\n * return 1\n */\nvar MAX_NUM = Math.pow(2, 53);", "import { factory } from '../../utils/factory.js';\nvar name = 'zeta';\nvar dependencies = ['typed', 'config', 'multiply', 'pow', 'divide', 'factorial', 'equal', 'smallerEq', 'isNegative', 'gamma', 'sin', 'subtract', 'add', '?Complex', '?BigNumber', 'pi'];\nexport var createZeta = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n multiply,\n pow,\n divide,\n factorial,\n equal,\n smallerEq,\n isNegative,\n gamma,\n sin,\n subtract,\n add,\n Complex,\n BigNumber: _BigNumber,\n pi\n } = _ref;\n /**\n * Compute the Riemann Zeta function of a value using an infinite series for\n * all of the complex plane using Riemann's Functional equation.\n *\n * Based off the paper by Xavier Gourdon and Pascal Sebah\n * ( http://numbers.computation.free.fr/Constants/Miscellaneous/zetaevaluations.pdf )\n *\n * Implementation and slight modification by Anik Patel\n *\n * Note: the implementation is accurate up to about 6 digits.\n *\n * Syntax:\n *\n * math.zeta(n)\n *\n * Examples:\n *\n * math.zeta(5) // returns 1.0369277551433895\n * math.zeta(-0.5) // returns -0.2078862249773449\n * math.zeta(math.i) // returns 0.0033002236853253153 - 0.4181554491413212i\n *\n * See also:\n * erf\n *\n * @param {number | Complex | BigNumber} s A Real, Complex or BigNumber parameter to the Riemann Zeta Function\n * @return {number | Complex | BigNumber} The Riemann Zeta of `s`\n */\n return typed(name, {\n number: s => zetaNumeric(s, value => value, () => 20),\n BigNumber: s => zetaNumeric(s, value => new _BigNumber(value), () => {\n // relTol is for example 1e-12. Extract the positive exponent 12 from that\n return Math.abs(Math.log10(config.relTol));\n }),\n Complex: zetaComplex\n });\n\n /**\n * @param {number | BigNumber} s\n * @param {(value: number) => number | BigNumber} createValue\n * @param {(value: number | BigNumber | Complex) => number} determineDigits\n * @returns {number | BigNumber}\n */\n function zetaNumeric(s, createValue, determineDigits) {\n if (equal(s, 0)) {\n return createValue(-0.5);\n }\n if (equal(s, 1)) {\n return createValue(NaN);\n }\n if (!isFinite(s)) {\n return isNegative(s) ? createValue(NaN) : createValue(1);\n }\n return zeta(s, createValue, determineDigits, s => s);\n }\n\n /**\n * @param {Complex} s\n * @returns {Complex}\n */\n function zetaComplex(s) {\n if (s.re === 0 && s.im === 0) {\n return new Complex(-0.5);\n }\n if (s.re === 1) {\n return new Complex(NaN, NaN);\n }\n if (s.re === Infinity && s.im === 0) {\n return new Complex(1);\n }\n if (s.im === Infinity || s.re === -Infinity) {\n return new Complex(NaN, NaN);\n }\n return zeta(s, value => value, s => Math.round(1.3 * 15 + 0.9 * Math.abs(s.im)), s => s.re);\n }\n\n /**\n * @param {number | BigNumber | Complex} s\n * @param {(value: number) => number | BigNumber | Complex} createValue\n * @param {(value: number | BigNumber | Complex) => number} determineDigits\n * @param {(value: number | BigNumber | Complex) => number} getRe\n * @returns {*|number}\n */\n function zeta(s, createValue, determineDigits, getRe) {\n var n = determineDigits(s);\n if (getRe(s) > -(n - 1) / 2) {\n return f(s, createValue(n), createValue);\n } else {\n // Function Equation for reflection to x < 1\n var c = multiply(pow(2, s), pow(createValue(pi), subtract(s, 1)));\n c = multiply(c, sin(multiply(divide(createValue(pi), 2), s)));\n c = multiply(c, gamma(subtract(1, s)));\n return multiply(c, zeta(subtract(1, s), createValue, determineDigits, getRe));\n }\n }\n\n /**\n * Calculate a portion of the sum\n * @param {number | BigNumber} k a positive integer\n * @param {number | BigNumber} n a positive integer\n * @return {number} the portion of the sum\n **/\n function d(k, n) {\n var S = k;\n for (var j = k; smallerEq(j, n); j = add(j, 1)) {\n var factor = divide(multiply(factorial(add(n, subtract(j, 1))), pow(4, j)), multiply(factorial(subtract(n, j)), factorial(multiply(2, j))));\n S = add(S, factor);\n }\n return multiply(n, S);\n }\n\n /**\n * Calculate the positive Riemann Zeta function\n * @param {number} s a real or complex number with s.re > 1\n * @param {number} n a positive integer\n * @param {(number) => number | BigNumber | Complex} createValue\n * @return {number} Riemann Zeta of s\n **/\n function f(s, n, createValue) {\n var c = divide(1, multiply(d(createValue(0), n), subtract(1, pow(2, subtract(1, s)))));\n var S = createValue(0);\n for (var k = createValue(1); smallerEq(k, n); k = add(k, 1)) {\n S = add(S, divide(multiply((-1) ** (k - 1), d(k, n)), pow(k, s)));\n }\n return multiply(c, S);\n }\n});", "import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'mode';\nvar dependencies = ['typed', 'isNaN', 'isNumeric'];\nexport var createMode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n isNaN,\n isNumeric\n } = _ref;\n /**\n * Computes the mode of a set of numbers or a list with values(numbers or characters).\n * If there are multiple modes, it returns a list of those values.\n *\n * Syntax:\n *\n * math.mode(a, b, c, ...)\n * math.mode(A)\n *\n * Examples:\n *\n * math.mode(2, 1, 4, 3, 1) // returns [1]\n * math.mode([1, 2.7, 3.2, 4, 2.7]) // returns [2.7]\n * math.mode(1, 4, 6, 1, 6) // returns [1, 6]\n * math.mode('a','a','b','c') // returns [\"a\"]\n * math.mode(1, 1.5, 'abc') // returns [1, 1.5, \"abc\"]\n *\n * See also:\n *\n * median,\n * mean\n *\n * @param {... *} args A single matrix\n * @return {*} The mode of all values\n */\n return typed(name, {\n 'Array | Matrix': _mode,\n '...': function _(args) {\n return _mode(args);\n }\n });\n\n /**\n * Calculates the mode in an 1-dimensional array\n * @param {Array} values\n * @return {Array} mode\n * @private\n */\n function _mode(values) {\n values = flatten(values.valueOf());\n var num = values.length;\n if (num === 0) {\n throw new Error('Cannot calculate mode of an empty array');\n }\n var count = {};\n var mode = [];\n var max = 0;\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n if (isNumeric(value) && isNaN(value)) {\n throw new Error('Cannot calculate mode of an array containing NaN values');\n }\n if (!(value in count)) {\n count[value] = 0;\n }\n count[value]++;\n if (count[value] === max) {\n mode.push(value);\n } else if (count[value] > max) {\n max = count[value];\n mode = [value];\n }\n }\n return mode;\n }\n});", "import { typeOf } from '../../../utils/is.js';\n\n/**\n * Improve error messages for statistics functions. Errors are typically\n * thrown in an internally used function like larger, causing the error\n * not to mention the function (like max) which is actually used by the user.\n *\n * @param {Error} err\n * @param {String} fnName\n * @param {*} [value]\n * @return {Error}\n */\nexport function improveErrorMessage(err, fnName, value) {\n // TODO: add information with the index (also needs transform in expression parser)\n var details;\n if (String(err).includes('Unexpected type')) {\n details = arguments.length > 2 ? ' (type: ' + typeOf(value) + ', value: ' + JSON.stringify(value) + ')' : ' (type: ' + err.data.actual + ')';\n return new TypeError('Cannot calculate ' + fnName + ', unexpected type of argument' + details);\n }\n if (String(err).includes('complex numbers')) {\n details = arguments.length > 2 ? ' (type: ' + typeOf(value) + ', value: ' + JSON.stringify(value) + ')' : '';\n return new TypeError('Cannot calculate ' + fnName + ', no ordering relation is defined for complex numbers' + details);\n }\n return err;\n}", "import { deepForEach } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { safeNumberType } from '../../utils/number.js';\nimport { improveErrorMessage } from './utils/improveErrorMessage.js';\nvar name = 'prod';\nvar dependencies = ['typed', 'config', 'multiplyScalar', 'numeric'];\nexport var createProd = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n multiplyScalar,\n numeric\n } = _ref;\n /**\n * Compute the product of a matrix or a list with values.\n * In case of a multidimensional array or matrix, the sum of all\n * elements will be calculated.\n *\n * Syntax:\n *\n * math.prod(a, b, c, ...)\n * math.prod(A)\n *\n * Examples:\n *\n * math.multiply(2, 3) // returns 6\n * math.prod(2, 3) // returns 6\n * math.prod(2, 3, 4) // returns 24\n * math.prod([2, 3, 4]) // returns 24\n * math.prod([[2, 5], [4, 3]]) // returns 120\n *\n * See also:\n *\n * mean, median, min, max, sum, std, variance\n *\n * @param {... *} args A single matrix or or multiple scalar values\n * @return {*} The product of all values\n */\n return typed(name, {\n // prod([a, b, c, d, ...])\n 'Array | Matrix': _prod,\n // prod([a, b, c, d, ...], dim)\n 'Array | Matrix, number | BigNumber': function Array__Matrix_number__BigNumber(array, dim) {\n // TODO: implement prod(A, dim)\n throw new Error('prod(A, dim) is not yet supported');\n // return reduce(arguments[0], arguments[1], math.prod)\n },\n // prod(a, b, c, d, ...)\n '...': function _(args) {\n return _prod(args);\n }\n });\n\n /**\n * Recursively calculate the product of an n-dimensional array\n * @param {Array} array\n * @return {number} prod\n * @private\n */\n function _prod(array) {\n var prod;\n deepForEach(array, function (value) {\n try {\n prod = prod === undefined ? value : multiplyScalar(prod, value);\n } catch (err) {\n throw improveErrorMessage(err, 'prod', value);\n }\n });\n\n // make sure returning numeric value: parse a string into a numeric value\n if (typeof prod === 'string') {\n prod = numeric(prod, safeNumberType(prod, config));\n }\n if (prod === undefined) {\n throw new Error('Cannot calculate prod of an empty array');\n }\n return prod;\n }\n});", "import { format as formatString } from '../../utils/string.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'format';\nvar dependencies = ['typed'];\nexport var createFormat = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Format a value of any type into a string.\n *\n * Syntax:\n *\n * math.format(value)\n * math.format(value, options)\n * math.format(value, precision)\n * math.format(value, callback)\n *\n * Where:\n *\n * - `value: *`\n * The value to be formatted\n * - `options: Object`\n * An object with formatting options. Available options:\n * - `notation: string`\n * Number notation. Choose from:\n * - `'fixed'`\n * Always use regular number notation.\n * For example `'123.40'` and `'14000000'`\n * - `'exponential'`\n * Always use exponential notation.\n * For example `'1.234e+2'` and `'1.4e+7'`\n * - `'engineering'`\n * Always use engineering notation: always have exponential notation,\n * and select the exponent to be a multiple of `3`.\n * For example `'123.4e+0'` and `'14.0e+6'`\n * - `'auto'` (default)\n * Regular number notation for numbers having an absolute value between\n * `lower` and `upper` bounds, and uses exponential notation elsewhere.\n * Lower bound is included, upper bound is excluded.\n * For example `'123.4'` and `'1.4e7'`.\n * - `'bin'`, `'oct'`, or `'hex'`\n * Format the number using binary, octal, or hexadecimal notation.\n * For example `'0b1101'` and `'0x10fe'`.\n * - `wordSize: number | BigNumber`\n * The word size in bits to use for formatting in binary, octal, or\n * hexadecimal notation. To be used only with `'bin'`, `'oct'`, or `'hex'`\n * values for `notation` option. When this option is defined the value\n * is formatted as a signed twos complement integer of the given word\n * size and the size suffix is appended to the output.\n * For example `format(-1, {notation: 'hex', wordSize: 8}) === '0xffi8'`.\n * Default value is undefined.\n * - `precision: number | BigNumber`\n * Limit the number of digits of the formatted value.\n * For regular numbers, must be a number between `0` and `16`.\n * For bignumbers, the maximum depends on the configured precision,\n * see function `config()`.\n * In case of notations `'exponential'`, `'engineering'`, and `'auto'`,\n * `precision` defines the total number of significant digits returned.\n * In case of notation `'fixed'`, `precision` defines the number of\n * significant digits after the decimal point.\n * `precision` is undefined by default.\n * - `lowerExp: number`\n * Exponent determining the lower boundary for formatting a value with\n * an exponent when `notation='auto'`. Default value is `-3`.\n * - `upperExp: number`\n * Exponent determining the upper boundary for formatting a value with\n * an exponent when `notation='auto'`. Default value is `5`.\n * - `fraction: string`. Available values: `'ratio'` (default) or `'decimal'`.\n * For example `format(fraction(1, 3))` will output `'1/3'` when `'ratio'`\n * is configured, and will output `'0.(3)'` when `'decimal'` is configured.\n * - `truncate: number`. Specifies the maximum allowed length of the\n * returned string. If it had been longer, the excess characters\n * are deleted and replaced with `'...'`.\n * - `callback: function`\n * A custom formatting function, invoked for all numeric elements in `value`,\n * for example all elements of a matrix, or the real and imaginary\n * parts of a complex number. This callback can be used to override the\n * built-in numeric notation with any type of formatting. Function `callback`\n * is called with `value` as parameter and must return a string.\n *\n * When `value` is an Object:\n *\n * - When the object contains a property `format` being a function, this function\n * is invoked as `value.format(options)` and the result is returned.\n * - When the object has its own `toString` method, this method is invoked\n * and the result is returned.\n * - In other cases the function will loop over all object properties and\n * return JSON object notation like '{\"a\": 2, \"b\": 3}'.\n *\n * When value is a function:\n *\n * - When the function has a property `syntax`, it returns this\n * syntax description.\n * - In other cases, a string `'function'` is returned.\n *\n * Examples:\n *\n * math.format(6.4) // returns '6.4'\n * math.format(1240000) // returns '1.24e+6'\n * math.format(1/3) // returns '0.3333333333333333'\n * math.format(1/3, 3) // returns '0.333'\n * math.format(21385, 2) // returns '21000'\n * math.format(12e8, {notation: 'fixed'}) // returns '1200000000'\n * math.format(2.3, {notation: 'fixed', precision: 4}) // returns '2.3000'\n * math.format(52.8, {notation: 'exponential'}) // returns '5.28e+1'\n * math.format(12400, {notation: 'engineering'}) // returns '12.4e+3'\n * math.format(2000, {lowerExp: -2, upperExp: 2}) // returns '2e+3'\n *\n * function formatCurrency(value) {\n * // return currency notation with two digits:\n * return '$' + value.toFixed(2)\n *\n * // you could also use math.format inside the callback:\n * // return '$' + math.format(value, {notation: 'fixed', precision: 2})\n * }\n * math.format([2.1, 3, 0.016], formatCurrency) // returns '[$2.10, $3.00, $0.02]'\n *\n * See also:\n *\n * print\n *\n * @param {*} value Value to be stringified\n * @param {Object | Function | number} [options] Formatting options\n * @return {string} The formatted value\n */\n return typed(name, {\n any: formatString,\n 'any, Object | function | number | BigNumber': formatString\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'bin';\nvar dependencies = ['typed', 'format'];\n\n/**\n * Format a number as binary.\n *\n * Syntax:\n *\n * math.bin(value)\n *\n * Examples:\n *\n * //the following outputs \"0b10\"\n * math.bin(2)\n *\n * See also:\n *\n * oct\n * hex\n *\n * @param {number | BigNumber} value Value to be stringified\n * @param {number | BigNumber} wordSize Optional word size (see `format`)\n * @return {string} The formatted value\n */\nexport var createBin = factory(name, dependencies, _ref => {\n var {\n typed,\n format\n } = _ref;\n return typed(name, {\n 'number | BigNumber': function number__BigNumber(n) {\n return format(n, {\n notation: 'bin'\n });\n },\n 'number | BigNumber, number | BigNumber': function number__BigNumber_number__BigNumber(n, wordSize) {\n return format(n, {\n notation: 'bin',\n wordSize\n });\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'oct';\nvar dependencies = ['typed', 'format'];\n\n/**\n * Format a number as octal.\n *\n * Syntax:\n *\n * math.oct(value)\n *\n * Examples:\n *\n * //the following outputs \"0o70\"\n * math.oct(56)\n *\n * See also:\n *\n * bin\n * hex\n *\n * @param {number | BigNumber} value Value to be stringified\n * @param {number | BigNumber} wordSize Optional word size (see `format`)\n * @return {string} The formatted value\n */\n\nexport var createOct = factory(name, dependencies, _ref => {\n var {\n typed,\n format\n } = _ref;\n return typed(name, {\n 'number | BigNumber': function number__BigNumber(n) {\n return format(n, {\n notation: 'oct'\n });\n },\n 'number | BigNumber, number | BigNumber': function number__BigNumber_number__BigNumber(n, wordSize) {\n return format(n, {\n notation: 'oct',\n wordSize\n });\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'hex';\nvar dependencies = ['typed', 'format'];\n\n/**\n * Format a number as hexadecimal.\n *\n * Syntax:\n *\n * math.hex(value)\n *\n * Examples:\n *\n * math.hex(240) // returns \"0xF0\"\n *\n * See also:\n *\n * oct\n * bin\n *\n * @param {number | BigNumber} value Value to be stringified\n * @param {number | BigNumber} wordSize Optional word size (see `format`)\n * @return {string} The formatted value\n */\nexport var createHex = factory(name, dependencies, _ref => {\n var {\n typed,\n format\n } = _ref;\n return typed(name, {\n 'number | BigNumber': function number__BigNumber(n) {\n return format(n, {\n notation: 'hex'\n });\n },\n 'number | BigNumber, number | BigNumber': function number__BigNumber_number__BigNumber(n, wordSize) {\n return format(n, {\n notation: 'hex',\n wordSize\n });\n }\n });\n});", "export var printTemplate = /\\$([\\w.]+)/g;", "import { format } from '../../utils/string.js';\nimport { isString } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nimport { printTemplate } from '../../utils/print.js';\nvar name = 'print';\nvar dependencies = ['typed'];\nexport var createPrint = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Interpolate values into a string template.\n *\n * Syntax:\n *\n * math.print(template, values)\n * math.print(template, values, precision)\n * math.print(template, values, options)\n *\n * Example usage:\n *\n * // the following outputs: 'Lucy is 5 years old'\n * math.print('Lucy is $age years old', {age: 5})\n *\n * // the following outputs: 'The value of pi is 3.141592654'\n * math.print('The value of pi is $pi', {pi: math.pi}, 10)\n *\n * // the following outputs: 'hello Mary! The date is 2013-03-23'\n * math.print('Hello $user.name! The date is $date', {\n * user: {\n * name: 'Mary',\n * },\n * date: new Date(2013, 2, 23).toISOString().substring(0, 10)\n * })\n *\n * // the following outputs: 'My favorite fruits are apples and bananas !'\n * math.print('My favorite fruits are $0 and $1 !', [\n * 'apples',\n * 'bananas'\n * ])\n *\n * See also:\n *\n * format\n *\n * @param {string} template A string containing variable placeholders.\n * @param {Object | Array | Matrix} values An object or array containing variables\n * which will be filled in in the template.\n * @param {number | Object} [options] Formatting options,\n * or the number of digits to format numbers.\n * See function math.format for a description\n * of all options.\n * @return {string} Interpolated string\n */\n return typed(name, {\n // note: Matrix will be converted automatically to an Array\n 'string, Object | Array': _print,\n 'string, Object | Array, number | Object': _print\n });\n});\n\n/**\n * Interpolate values into a string template.\n * @param {string} template\n * @param {Object} values\n * @param {number | Object} [options]\n * @returns {string} Interpolated string\n * @private\n */\nfunction _print(template, values, options) {\n return template.replace(printTemplate, function (original, key) {\n var keys = key.split('.');\n var value = values[keys.shift()];\n if (value !== undefined && value.isMatrix) {\n value = value.toArray();\n }\n while (keys.length && value !== undefined) {\n var k = keys.shift();\n value = k ? value[k] : value + '.';\n }\n if (value !== undefined) {\n if (!isString(value)) {\n return format(value, options);\n } else {\n return value;\n }\n }\n return original;\n });\n}", "import { factory } from '../../utils/factory.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nvar name = 'to';\nvar dependencies = ['typed', 'matrix', 'concat'];\nexport var createTo = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n concat\n } = _ref;\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Change the unit of a value.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.to(x, unit)\n *\n * Examples:\n *\n * math.to(math.unit('2 inch'), 'cm') // returns Unit 5.08 cm\n * math.to(math.unit('2 inch'), math.unit('cm')) // returns Unit 5.08 cm\n * math.to(math.unit(16, 'bytes'), 'bits') // returns Unit 128 bits\n *\n * See also:\n *\n * unit\n *\n * @param {Unit | Array | Matrix} x The unit to be converted.\n * @param {Unit | Array | Matrix} unit New unit. Can be a string like \"cm\"\n * or a unit without value.\n * @return {Unit | Array | Matrix} value with changed, fixed unit.\n */\n return typed(name, {\n 'Unit, Unit | string': (x, unit) => x.to(unit)\n }, matrixAlgorithmSuite({\n Ds: true\n }));\n});", "import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'isPrime';\nvar dependencies = ['typed'];\nexport var createIsPrime = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Test whether a value is prime: has no divisors other than itself and one.\n * The function supports type `number`, `bignumber`.\n *\n * The function is evaluated element-wise in case of Array or Matrix input.\n *\n * Syntax:\n *\n * math.isPrime(x)\n *\n * Examples:\n *\n * math.isPrime(3) // returns true\n * math.isPrime(-2) // returns false\n * math.isPrime(0) // returns false\n * math.isPrime(-0) // returns false\n * math.isPrime(0.5) // returns false\n * math.isPrime('2') // returns true\n * math.isPrime([2, 17, 100]) // returns [true, true, false]\n *\n * See also:\n *\n * isNumeric, isZero, isNegative, isInteger\n *\n * @param {number | BigNumber | bigint | Array | Matrix} x Value to be tested\n * @return {boolean} Returns true when `x` is larger than zero.\n * Throws an error in case of an unknown data type.\n */\n return typed(name, {\n number: function number(x) {\n if (x <= 3) {\n return x > 1;\n }\n if (x % 2 === 0 || x % 3 === 0) {\n return false;\n }\n for (var i = 5; i * i <= x; i += 6) {\n if (x % i === 0 || x % (i + 2) === 0) {\n return false;\n }\n }\n return true;\n },\n bigint: function bigint(x) {\n if (x <= 3n) {\n return x > 1n;\n }\n if (x % 2n === 0n || x % 3n === 0n) {\n return false;\n }\n for (var i = 5n; i * i <= x; i += 6n) {\n if (x % i === 0n || x % (i + 2n) === 0n) {\n return false;\n }\n }\n return true;\n },\n BigNumber: function BigNumber(n) {\n if (n.lte(3)) return n.gt(1);\n if (n.mod(2).eq(0) || n.mod(3).eq(0)) return false;\n if (n.lt(Math.pow(2, 32))) {\n var x = n.toNumber();\n for (var i = 5; i * i <= x; i += 6) {\n if (x % i === 0 || x % (i + 2) === 0) {\n return false;\n }\n }\n return true;\n }\n function modPow(base, exponent, modulus) {\n // exponent can be huge, use non-recursive variant\n var accumulator = 1;\n while (!exponent.eq(0)) {\n if (exponent.mod(2).eq(0)) {\n exponent = exponent.div(2);\n base = base.mul(base).mod(modulus);\n } else {\n exponent = exponent.sub(1);\n accumulator = base.mul(accumulator).mod(modulus);\n }\n }\n return accumulator;\n }\n\n // https://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test#Deterministic_variants\n var Decimal = n.constructor.clone({\n precision: n.toFixed(0).length * 2\n });\n n = new Decimal(n);\n var r = 0;\n var d = n.sub(1);\n while (d.mod(2).eq(0)) {\n d = d.div(2);\n r += 1;\n }\n var bases = null;\n // https://en.wikipedia.org/wiki/Miller\u2013Rabin_primality_test#Testing_against_small_sets_of_bases\n if (n.lt('3317044064679887385961981')) {\n bases = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41].filter(x => x < n);\n } else {\n var max = Math.min(n.toNumber() - 2, Math.floor(2 * Math.pow(n.toFixed(0).length * Math.log(10), 2)));\n bases = [];\n for (var _i = 2; _i <= max; _i += 1) {\n bases.push(max);\n }\n }\n for (var _i2 = 0; _i2 < bases.length; _i2 += 1) {\n var a = bases[_i2];\n var adn = modPow(n.sub(n).add(a), d, n);\n if (!adn.eq(1)) {\n for (var _i3 = 0, _x = adn; !_x.eq(n.sub(1)); _i3 += 1, _x = _x.mul(_x).mod(n)) {\n if (_i3 === r - 1) {\n return false;\n }\n }\n }\n }\n return true;\n },\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { typeOf } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nimport { noBignumber, noFraction } from '../../utils/noop.js';\nvar name = 'numeric';\nvar dependencies = ['number', '?bignumber', '?fraction'];\nexport var createNumeric = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n number: _number,\n bignumber,\n fraction\n } = _ref;\n var validInputTypes = {\n string: true,\n number: true,\n BigNumber: true,\n Fraction: true\n };\n\n // Load the conversion functions for each output type\n var validOutputTypes = {\n number: x => _number(x),\n BigNumber: bignumber ? x => bignumber(x) : noBignumber,\n bigint: x => BigInt(x),\n Fraction: fraction ? x => fraction(x) : noFraction\n };\n\n /**\n * Convert a numeric input to a specific numeric type: number, BigNumber, bigint, or Fraction.\n *\n * Syntax:\n *\n * math.numeric(x)\n *\n * Examples:\n *\n * math.numeric('4') // returns 4\n * math.numeric('4', 'number') // returns 4\n * math.numeric('4', 'bigint') // returns 4n\n * math.numeric('4', 'BigNumber') // returns BigNumber 4\n * math.numeric('4', 'Fraction') // returns Fraction 4\n * math.numeric(4, 'Fraction') // returns Fraction 4\n * math.numeric(math.fraction(2, 5), 'number') // returns 0.4\n *\n * See also:\n *\n * number, fraction, bignumber, bigint, string, format\n *\n * @param {string | number | BigNumber | bigint | Fraction } value\n * A numeric value or a string containing a numeric value\n * @param {string} outputType\n * Desired numeric output type.\n * Available values: 'number', 'BigNumber', or 'Fraction'\n * @return {number | BigNumber | bigint | Fraction}\n * Returns an instance of the numeric in the requested type\n */\n return function numeric(value) {\n var outputType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'number';\n var check = arguments.length > 2 ? arguments[2] : undefined;\n if (check !== undefined) {\n throw new SyntaxError('numeric() takes one or two arguments');\n }\n var inputType = typeOf(value);\n if (!(inputType in validInputTypes)) {\n throw new TypeError('Cannot convert ' + value + ' of type \"' + inputType + '\"; valid input types are ' + Object.keys(validInputTypes).join(', '));\n }\n if (!(outputType in validOutputTypes)) {\n throw new TypeError('Cannot convert ' + value + ' to type \"' + outputType + '\"; valid output types are ' + Object.keys(validOutputTypes).join(', '));\n }\n if (outputType === inputType) {\n return value;\n } else {\n return validOutputTypes[outputType](value);\n }\n };\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'divideScalar';\nvar dependencies = ['typed', 'numeric'];\nexport var createDivideScalar = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n numeric\n } = _ref;\n /**\n * Divide two scalar values, `x / y`.\n * This function is meant for internal use: it is used by the public functions\n * `divide` and `inv`.\n *\n * This function does not support collections (Array or Matrix).\n *\n * @param {number | BigNumber | bigint | Fraction | Complex | Unit} x Numerator\n * @param {number | BigNumber | bigint | Fraction | Complex} y Denominator\n * @return {number | BigNumber | bigint | Fraction | Complex | Unit} Quotient, `x / y`\n * @private\n */\n return typed(name, {\n 'number, number': function number_number(x, y) {\n return x / y;\n },\n 'Complex, Complex': function Complex_Complex(x, y) {\n return x.div(y);\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n return x.div(y);\n },\n 'bigint, bigint': function bigint_bigint(x, y) {\n return x / y;\n },\n 'Fraction, Fraction': function Fraction_Fraction(x, y) {\n return x.div(y);\n },\n 'Unit, number | Complex | Fraction | BigNumber | Unit': (x, y) => x.divide(y),\n 'number | Fraction | Complex | BigNumber, Unit': (x, y) => y.divideInto(x)\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { isInteger } from '../../utils/number.js';\nimport { arraySize as size } from '../../utils/array.js';\nimport { powNumber } from '../../plain/number/index.js';\nvar name = 'pow';\nvar dependencies = ['typed', 'config', 'identity', 'multiply', 'matrix', 'inv', 'fraction', 'number', 'Complex'];\nexport var createPow = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n identity,\n multiply,\n matrix,\n inv,\n number,\n fraction,\n Complex\n } = _ref;\n /**\n * Calculates the power of x to y, `x ^ y`.\n *\n * Matrix exponentiation is supported for square matrices `x` and integers `y`:\n * when `y` is nonnegative, `x` may be any square matrix; and when `y` is\n * negative, `x` must be invertible, and then this function returns\n * inv(x)^(-y).\n *\n * For cubic roots of negative numbers, the function returns the principal\n * root by default. In order to let the function return the real root,\n * math.js can be configured with `math.config({predictable: true})`.\n * To retrieve all cubic roots of a value, use `math.cbrt(x, true)`.\n *\n * Syntax:\n *\n * math.pow(x, y)\n *\n * Examples:\n *\n * math.pow(2, 3) // returns number 8\n *\n * const a = math.complex(2, 3)\n * math.pow(a, 2) // returns Complex -5 + 12i\n *\n * const b = [[1, 2], [4, 3]]\n * math.pow(b, 2) // returns Array [[9, 8], [16, 17]]\n *\n * const c = [[1, 2], [4, 3]]\n * math.pow(c, -1) // returns Array [[-0.6, 0.4], [0.8, -0.2]]\n *\n * See also:\n *\n * multiply, sqrt, cbrt, nthRoot\n *\n * @param {number | BigNumber | bigint | Complex | Unit | Array | Matrix} x The base\n * @param {number | BigNumber | bigint | Complex} y The exponent\n * @return {number | BigNumber | bigint | Complex | Array | Matrix} The value of `x` to the power `y`\n */\n return typed(name, {\n 'number, number': _pow,\n 'Complex, Complex': function Complex_Complex(x, y) {\n return x.pow(y);\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n if (y.isInteger() || x >= 0 || config.predictable) {\n return x.pow(y);\n } else {\n return new Complex(x.toNumber(), 0).pow(y.toNumber(), 0);\n }\n },\n 'bigint, bigint': (x, y) => x ** y,\n 'Fraction, Fraction': function Fraction_Fraction(x, y) {\n var result = x.pow(y);\n if (result != null) {\n return result;\n }\n if (config.predictable) {\n throw new Error('Result of pow is non-rational and cannot be expressed as a fraction');\n } else {\n return _pow(x.valueOf(), y.valueOf());\n }\n },\n 'Array, number': _powArray,\n 'Array, BigNumber': function Array_BigNumber(x, y) {\n return _powArray(x, y.toNumber());\n },\n 'Matrix, number': _powMatrix,\n 'Matrix, BigNumber': function Matrix_BigNumber(x, y) {\n return _powMatrix(x, y.toNumber());\n },\n 'Unit, number | BigNumber': function Unit_number__BigNumber(x, y) {\n return x.pow(y);\n }\n });\n\n /**\n * Calculates the power of x to y, x^y, for two numbers.\n * @param {number} x\n * @param {number} y\n * @return {number | Complex} res\n * @private\n */\n function _pow(x, y) {\n // Alternatively could define a 'realmode' config option or something, but\n // 'predictable' will work for now\n if (config.predictable && !isInteger(y) && x < 0) {\n // Check to see if y can be represented as a fraction\n try {\n var yFrac = fraction(y);\n var yNum = number(yFrac);\n if (y === yNum || Math.abs((y - yNum) / y) < 1e-14) {\n if (yFrac.d % 2 === 1) {\n return (yFrac.n % 2 === 0 ? 1 : -1) * Math.pow(-x, y);\n }\n }\n } catch (ex) {\n // fraction() throws an error if y is Infinity, etc.\n }\n\n // Unable to express y as a fraction, so continue on\n }\n\n // **for predictable mode** x^Infinity === NaN if x < -1\n // N.B. this behavour is different from `Math.pow` which gives\n // (-2)^Infinity === Infinity\n if (config.predictable && (x < -1 && y === Infinity || x > -1 && x < 0 && y === -Infinity)) {\n return NaN;\n }\n if (isInteger(y) || x >= 0 || config.predictable) {\n return powNumber(x, y);\n } else {\n // TODO: the following infinity checks are duplicated from powNumber. Deduplicate this somehow\n\n // x^Infinity === 0 if -1 < x < 1\n // A real number 0 is returned instead of complex(0)\n if (x * x < 1 && y === Infinity || x * x > 1 && y === -Infinity) {\n return 0;\n }\n return new Complex(x, 0).pow(y, 0);\n }\n }\n\n /**\n * Calculate the power of a 2d array\n * @param {Array} x must be a 2 dimensional, square matrix\n * @param {number} y a integer value (positive if `x` is not invertible)\n * @returns {Array}\n * @private\n */\n function _powArray(x, y) {\n if (!isInteger(y)) {\n throw new TypeError('For A^b, b must be an integer (value is ' + y + ')');\n }\n // verify that A is a 2 dimensional square matrix\n var s = size(x);\n if (s.length !== 2) {\n throw new Error('For A^b, A must be 2 dimensional (A has ' + s.length + ' dimensions)');\n }\n if (s[0] !== s[1]) {\n throw new Error('For A^b, A must be square (size is ' + s[0] + 'x' + s[1] + ')');\n }\n if (y < 0) {\n try {\n return _powArray(inv(x), -y);\n } catch (error) {\n if (error.message === 'Cannot calculate inverse, determinant is zero') {\n throw new TypeError('For A^b, when A is not invertible, b must be a positive integer (value is ' + y + ')');\n }\n throw error;\n }\n }\n var res = identity(s[0]).valueOf();\n var px = x;\n while (y >= 1) {\n if ((y & 1) === 1) {\n res = multiply(px, res);\n }\n y >>= 1;\n px = multiply(px, px);\n }\n return res;\n }\n\n /**\n * Calculate the power of a 2d matrix\n * @param {Matrix} x must be a 2 dimensional, square matrix\n * @param {number} y a positive, integer value\n * @returns {Matrix}\n * @private\n */\n function _powMatrix(x, y) {\n return matrix(_powArray(x.valueOf(), y));\n }\n});", "import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { nearlyEqual, splitNumber } from '../../utils/number.js';\nimport { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';\nimport { roundNumber } from '../../plain/number/index.js';\nvar NO_INT = 'Number of decimals in function round must be an integer';\nvar name = 'round';\nvar dependencies = ['typed', 'config', 'matrix', 'equalScalar', 'zeros', 'BigNumber', 'DenseMatrix'];\nexport var createRound = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n equalScalar,\n zeros,\n BigNumber: _BigNumber,\n DenseMatrix\n } = _ref;\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matAlgo14xDs = createMatAlgo14xDs({\n typed\n });\n function toExponent(epsilon) {\n return Math.abs(splitNumber(epsilon).exponent);\n }\n\n /**\n * Round a value towards the nearest rounded value.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.round(x)\n * math.round(x, n)\n * math.round(unit, valuelessUnit)\n * math.round(unit, n, valuelessUnit)\n *\n * Examples:\n *\n * math.round(3.22) // returns number 3\n * math.round(3.82) // returns number 4\n * math.round(-4.2) // returns number -4\n * math.round(-4.7) // returns number -5\n * math.round(3.22, 1) // returns number 3.2\n * math.round(3.88, 1) // returns number 3.9\n * math.round(-4.21, 1) // returns number -4.2\n * math.round(-4.71, 1) // returns number -4.7\n * math.round(math.pi, 3) // returns number 3.142\n * math.round(123.45678, 2) // returns number 123.46\n *\n * const c = math.complex(3.2, -2.7)\n * math.round(c) // returns Complex 3 - 3i\n *\n * const unit = math.unit('3.241 cm')\n * const cm = math.unit('cm')\n * const mm = math.unit('mm')\n * math.round(unit, 1, cm) // returns Unit 3.2 cm\n * math.round(unit, 1, mm) // returns Unit 32.4 mm\n *\n * math.round([3.2, 3.8, -4.7]) // returns Array [3, 4, -5]\n *\n * See also:\n *\n * ceil, fix, floor\n *\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x Value to be rounded\n * @param {number | BigNumber | Array} [n=0] Number of decimals\n * @param {Unit} [valuelessUnit] A valueless unit\n * @return {number | BigNumber | Fraction | Complex | Array | Matrix} Rounded value\n */\n return typed(name, {\n number: function number(x) {\n // Handle round off errors by first rounding to relTol precision\n var xEpsilon = roundNumber(x, toExponent(config.relTol));\n var xSelected = nearlyEqual(x, xEpsilon, config.relTol, config.absTol) ? xEpsilon : x;\n return roundNumber(xSelected);\n },\n 'number, number': function number_number(x, n) {\n // Same as number: unless user specifies more decimals than relTol\n var epsilonExponent = toExponent(config.relTol);\n if (n >= epsilonExponent) {\n return roundNumber(x, n);\n }\n var xEpsilon = roundNumber(x, epsilonExponent);\n var xSelected = nearlyEqual(x, xEpsilon, config.relTol, config.absTol) ? xEpsilon : x;\n return roundNumber(xSelected, n);\n },\n 'number, BigNumber': function number_BigNumber(x, n) {\n if (!n.isInteger()) {\n throw new TypeError(NO_INT);\n }\n return new _BigNumber(x).toDecimalPlaces(n.toNumber());\n },\n Complex: function Complex(x) {\n return x.round();\n },\n 'Complex, number': function Complex_number(x, n) {\n if (n % 1) {\n throw new TypeError(NO_INT);\n }\n return x.round(n);\n },\n 'Complex, BigNumber': function Complex_BigNumber(x, n) {\n if (!n.isInteger()) {\n throw new TypeError(NO_INT);\n }\n var _n = n.toNumber();\n return x.round(_n);\n },\n BigNumber: function BigNumber(x) {\n // Handle round off errors by first rounding to relTol precision\n var xEpsilon = new _BigNumber(x).toDecimalPlaces(toExponent(config.relTol));\n var xSelected = bigNearlyEqual(x, xEpsilon, config.relTol, config.absTol) ? xEpsilon : x;\n return xSelected.toDecimalPlaces(0);\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, n) {\n if (!n.isInteger()) {\n throw new TypeError(NO_INT);\n }\n\n // Same as BigNumber: unless user specifies more decimals than relTol\n var epsilonExponent = toExponent(config.relTol);\n if (n >= epsilonExponent) {\n return x.toDecimalPlaces(n.toNumber());\n }\n var xEpsilon = x.toDecimalPlaces(epsilonExponent);\n var xSelected = bigNearlyEqual(x, xEpsilon, config.relTol, config.absTol) ? xEpsilon : x;\n return xSelected.toDecimalPlaces(n.toNumber());\n },\n Fraction: function Fraction(x) {\n return x.round();\n },\n 'Fraction, number': function Fraction_number(x, n) {\n if (n % 1) {\n throw new TypeError(NO_INT);\n }\n return x.round(n);\n },\n 'Fraction, BigNumber': function Fraction_BigNumber(x, n) {\n if (!n.isInteger()) {\n throw new TypeError(NO_INT);\n }\n return x.round(n.toNumber());\n },\n 'Unit, number, Unit': typed.referToSelf(self => function (x, n, unit) {\n var valueless = x.toNumeric(unit);\n return unit.multiply(self(valueless, n));\n }),\n 'Unit, BigNumber, Unit': typed.referToSelf(self => (x, n, unit) => self(x, n.toNumber(), unit)),\n 'Unit, Unit': typed.referToSelf(self => (x, unit) => self(x, 0, unit)),\n 'Array | Matrix, number, Unit': typed.referToSelf(self => (x, n, unit) => {\n // deep map collection, skip zeros since round(0) = 0\n return deepMap(x, value => self(value, n, unit), true);\n }),\n 'Array | Matrix, BigNumber, Unit': typed.referToSelf(self => (x, n, unit) => self(x, n.toNumber(), unit)),\n 'Array | Matrix, Unit': typed.referToSelf(self => (x, unit) => self(x, 0, unit)),\n 'Array | Matrix': typed.referToSelf(self => x => {\n // deep map collection, skip zeros since round(0) = 0\n return deepMap(x, self, true);\n }),\n 'SparseMatrix, number | BigNumber': typed.referToSelf(self => (x, n) => {\n return matAlgo11xS0s(x, n, self, false);\n }),\n 'DenseMatrix, number | BigNumber': typed.referToSelf(self => (x, n) => {\n return matAlgo14xDs(x, n, self, false);\n }),\n 'Array, number | BigNumber': typed.referToSelf(self => (x, n) => {\n // use matrix implementation\n return matAlgo14xDs(matrix(x), n, self, false).valueOf();\n }),\n 'number | Complex | BigNumber | Fraction, SparseMatrix': typed.referToSelf(self => (x, n) => {\n // check scalar is zero\n if (equalScalar(x, 0)) {\n // do not execute algorithm, result will be a zero matrix\n return zeros(n.size(), n.storage());\n }\n return matAlgo12xSfs(n, x, self, true);\n }),\n 'number | Complex | BigNumber | Fraction, DenseMatrix': typed.referToSelf(self => (x, n) => {\n // check scalar is zero\n if (equalScalar(x, 0)) {\n // do not execute algorithm, result will be a zero matrix\n return zeros(n.size(), n.storage());\n }\n return matAlgo14xDs(n, x, self, true);\n }),\n 'number | Complex | BigNumber | Fraction, Array': typed.referToSelf(self => (x, n) => {\n // use matrix implementation\n return matAlgo14xDs(matrix(n), x, self, true).valueOf();\n })\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { logNumber } from '../../plain/number/index.js';\nvar name = 'log';\nvar dependencies = ['config', 'typed', 'divideScalar', 'Complex'];\nexport var createLog = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n divideScalar,\n Complex\n } = _ref;\n /**\n * Calculate the logarithm of a value.\n *\n * To avoid confusion with the matrix logarithm, this function does not\n * apply to matrices.\n *\n * Syntax:\n *\n * math.log(x)\n * math.log(x, base)\n *\n * Examples:\n *\n * math.log(3.5) // returns 1.252762968495368\n * math.exp(math.log(2.4)) // returns 2.4\n *\n * math.pow(10, 4) // returns 10000\n * math.log(10000, 10) // returns 4\n * math.log(10000) / math.log(10) // returns 4\n *\n * math.log(1024, 2) // returns 10\n * math.pow(2, 10) // returns 1024\n *\n * See also:\n *\n * exp, log2, log10, log1p\n *\n * @param {number | BigNumber | Complex} x\n * Value for which to calculate the logarithm.\n * @param {number | BigNumber | Complex} [base=e]\n * Optional base for the logarithm. If not provided, the natural\n * logarithm of `x` is calculated.\n * @return {number | BigNumber | Complex}\n * Returns the logarithm of `x`\n */\n return typed(name, {\n number: function number(x) {\n if (x >= 0 || config.predictable) {\n return logNumber(x);\n } else {\n // negative value -> complex value computation\n return new Complex(x, 0).log();\n }\n },\n Complex: function Complex(x) {\n return x.log();\n },\n BigNumber: function BigNumber(x) {\n if (!x.isNegative() || config.predictable) {\n return x.ln();\n } else {\n // downgrade to number, return Complex valued result\n return new Complex(x.toNumber(), 0).log();\n }\n },\n 'any, any': typed.referToSelf(self => (x, base) => {\n // calculate logarithm for a specified base, log(x, base)\n return divideScalar(self(x), self(base));\n })\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { log1p as _log1p } from '../../utils/number.js';\nvar name = 'log1p';\nvar dependencies = ['typed', 'config', 'divideScalar', 'log', 'Complex'];\nexport var createLog1p = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n divideScalar,\n log,\n Complex\n } = _ref;\n /**\n * Calculate the logarithm of a `value+1`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.log1p(x)\n * math.log1p(x, base)\n *\n * Examples:\n *\n * math.log1p(2.5) // returns 1.252762968495368\n * math.exp(math.log1p(1.4)) // returns 2.4\n *\n * math.pow(10, 4) // returns 10000\n * math.log1p(9999, 10) // returns 4\n * math.log1p(9999) / math.log(10) // returns 4\n *\n * See also:\n *\n * exp, log, log2, log10\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x\n * Value for which to calculate the logarithm of `x+1`.\n * @param {number | BigNumber | Complex} [base=e]\n * Optional base for the logarithm. If not provided, the natural\n * logarithm of `x+1` is calculated.\n * @return {number | BigNumber | Complex | Array | Matrix}\n * Returns the logarithm of `x+1`\n */\n return typed(name, {\n number: function number(x) {\n if (x >= -1 || config.predictable) {\n return _log1p(x);\n } else {\n // negative value -> complex value computation\n return _log1pComplex(new Complex(x, 0));\n }\n },\n Complex: _log1pComplex,\n BigNumber: function BigNumber(x) {\n var y = x.plus(1);\n if (!y.isNegative() || config.predictable) {\n return y.ln();\n } else {\n // downgrade to number, return Complex valued result\n return _log1pComplex(new Complex(x.toNumber(), 0));\n }\n },\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self)),\n 'any, any': typed.referToSelf(self => (x, base) => {\n // calculate logarithm for a specified base, log1p(x, base)\n return divideScalar(self(x), log(base));\n })\n });\n\n /**\n * Calculate the natural logarithm of a complex number + 1\n * @param {Complex} x\n * @returns {Complex}\n * @private\n */\n function _log1pComplex(x) {\n var xRe1p = x.re + 1;\n return new Complex(Math.log(Math.sqrt(xRe1p * xRe1p + x.im * x.im)), Math.atan2(x.im, xRe1p));\n }\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'nthRoots';\nvar dependencies = ['config', 'typed', 'divideScalar', 'Complex'];\nexport var createNthRoots = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n divideScalar,\n Complex\n } = _ref;\n /**\n * Each function here returns a real multiple of i as a Complex value.\n * @param {number} val\n * @return {Complex} val, i*val, -val or -i*val for index 0, 1, 2, 3\n */\n // This is used to fix float artifacts for zero-valued components.\n var _calculateExactResult = [function realPos(val) {\n return new Complex(val, 0);\n }, function imagPos(val) {\n return new Complex(0, val);\n }, function realNeg(val) {\n return new Complex(-val, 0);\n }, function imagNeg(val) {\n return new Complex(0, -val);\n }];\n\n /**\n * Calculate the nth root of a Complex Number a using De Movire's Theorem.\n * @param {Complex} a\n * @param {number} root\n * @return {Array} array of n Complex Roots\n */\n function _nthComplexRoots(a, root) {\n if (root < 0) throw new Error('Root must be greater than zero');\n if (root === 0) throw new Error('Root must be non-zero');\n if (root % 1 !== 0) throw new Error('Root must be an integer');\n if (a === 0 || a.abs() === 0) return [new Complex(0, 0)];\n var aIsNumeric = typeof a === 'number';\n var offset;\n // determine the offset (argument of a)/(pi/2)\n if (aIsNumeric || a.re === 0 || a.im === 0) {\n if (aIsNumeric) {\n offset = 2 * +(a < 0); // numeric value on the real axis\n } else if (a.im === 0) {\n offset = 2 * +(a.re < 0); // complex value on the real axis\n } else {\n offset = 2 * +(a.im < 0) + 1; // complex value on the imaginary axis\n }\n }\n var arg = a.arg();\n var abs = a.abs();\n var roots = [];\n var r = Math.pow(abs, 1 / root);\n for (var k = 0; k < root; k++) {\n var halfPiFactor = (offset + 4 * k) / root;\n /**\n * If (offset + 4*k)/root is an integral multiple of pi/2\n * then we can produce a more exact result.\n */\n if (halfPiFactor === Math.round(halfPiFactor)) {\n roots.push(_calculateExactResult[halfPiFactor % 4](r));\n continue;\n }\n roots.push(new Complex({\n r,\n phi: (arg + 2 * Math.PI * k) / root\n }));\n }\n return roots;\n }\n\n /**\n * Calculate the nth roots of a value.\n * An nth root of a positive real number A,\n * is a positive real solution of the equation \"x^root = A\".\n * This function returns an array of complex values.\n *\n * Syntax:\n *\n * math.nthRoots(x)\n * math.nthRoots(x, root)\n *\n * Examples:\n *\n * math.nthRoots(1)\n * // returns [\n * // {re: 1, im: 0},\n * // {re: -1, im: 0}\n * // ]\n * math.nthRoots(1, 3)\n * // returns [\n * // { re: 1, im: 0 },\n * // { re: -0.4999999999999998, im: 0.8660254037844387 },\n * // { re: -0.5000000000000004, im: -0.8660254037844385 }\n * // ]\n *\n * See also:\n *\n * nthRoot, pow, sqrt\n *\n * @param {number | BigNumber | Fraction | Complex} x Number to be rounded\n * @param {number} [root=2] Optional root, default value is 2\n * @return {number | BigNumber | Fraction | Complex} Returns the nth roots\n */\n return typed(name, {\n Complex: function Complex(x) {\n return _nthComplexRoots(x, 2);\n },\n 'Complex, number': _nthComplexRoots\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo07xSSf } from '../../type/matrix/utils/matAlgo07xSSf.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nvar name = 'dotPow';\nvar dependencies = ['typed', 'equalScalar', 'matrix', 'pow', 'DenseMatrix', 'concat'];\nexport var createDotPow = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar,\n matrix,\n pow,\n DenseMatrix,\n concat\n } = _ref;\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo07xSSf = createMatAlgo07xSSf({\n typed,\n DenseMatrix\n });\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n var powScalarSignatures = {};\n for (var signature in pow.signatures) {\n if (Object.prototype.hasOwnProperty.call(pow.signatures, signature)) {\n if (!signature.includes('Matrix') && !signature.includes('Array')) {\n powScalarSignatures[signature] = pow.signatures[signature];\n }\n }\n }\n var powScalar = typed(powScalarSignatures);\n\n /**\n * Calculates the power of x to y element wise.\n *\n * Syntax:\n *\n * math.dotPow(x, y)\n *\n * Examples:\n *\n * math.dotPow(2, 3) // returns number 8\n *\n * const a = [[1, 2], [4, 3]]\n * math.dotPow(a, 2) // returns Array [[1, 4], [16, 9]]\n * math.pow(a, 2) // returns Array [[9, 8], [16, 17]]\n *\n * See also:\n *\n * pow, sqrt, multiply\n *\n * @param {number | BigNumber | Complex | Unit | Array | Matrix} x The base\n * @param {number | BigNumber | Complex | Unit | Array | Matrix} y The exponent\n * @return {number | BigNumber | Complex | Unit | Array | Matrix} The value of `x` to the power `y`\n */\n return typed(name, matrixAlgorithmSuite({\n elop: powScalar,\n SS: matAlgo07xSSf,\n DS: matAlgo03xDSf,\n Ss: matAlgo11xS0s,\n sS: matAlgo12xSfs\n }));\n});", "import { factory } from '../../utils/factory.js';\nimport { createMatAlgo02xDS0 } from '../../type/matrix/utils/matAlgo02xDS0.js';\nimport { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo07xSSf } from '../../type/matrix/utils/matAlgo07xSSf.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nvar name = 'dotDivide';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'divideScalar', 'DenseMatrix', 'concat'];\nexport var createDotDivide = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n divideScalar,\n DenseMatrix,\n concat\n } = _ref;\n var matAlgo02xDS0 = createMatAlgo02xDS0({\n typed,\n equalScalar\n });\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo07xSSf = createMatAlgo07xSSf({\n typed,\n DenseMatrix\n });\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Divide two matrices element wise. The function accepts both matrices and\n * scalar values.\n *\n * Syntax:\n *\n * math.dotDivide(x, y)\n *\n * Examples:\n *\n * math.dotDivide(2, 4) // returns 0.5\n *\n * a = [[9, 5], [6, 1]]\n * b = [[3, 2], [5, 2]]\n *\n * math.dotDivide(a, b) // returns [[3, 2.5], [1.2, 0.5]]\n * math.divide(a, b) // returns [[1.75, 0.75], [-1.75, 2.25]]\n *\n * See also:\n *\n * divide, multiply, dotMultiply\n *\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x Numerator\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} y Denominator\n * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} Quotient, `x ./ y`\n */\n return typed(name, matrixAlgorithmSuite({\n elop: divideScalar,\n SS: matAlgo07xSSf,\n DS: matAlgo03xDSf,\n SD: matAlgo02xDS0,\n Ss: matAlgo11xS0s,\n sS: matAlgo12xSfs\n }));\n});", "import { isArray, isMatrix, isDenseMatrix, isSparseMatrix } from '../../../../utils/is.js';\nimport { arraySize } from '../../../../utils/array.js';\nimport { format } from '../../../../utils/string.js';\nexport function createSolveValidation(_ref) {\n var {\n DenseMatrix\n } = _ref;\n /**\n * Validates matrix and column vector b for backward/forward substitution algorithms.\n *\n * @param {Matrix} m An N x N matrix\n * @param {Array | Matrix} b A column vector\n * @param {Boolean} copy Return a copy of vector b\n *\n * @return {DenseMatrix} Dense column vector b\n */\n return function solveValidation(m, b, copy) {\n var mSize = m.size();\n if (mSize.length !== 2) {\n throw new RangeError('Matrix must be two dimensional (size: ' + format(mSize) + ')');\n }\n var rows = mSize[0];\n var columns = mSize[1];\n if (rows !== columns) {\n throw new RangeError('Matrix must be square (size: ' + format(mSize) + ')');\n }\n var data = [];\n if (isMatrix(b)) {\n var bSize = b.size();\n var bdata = b._data;\n\n // 1-dim vector\n if (bSize.length === 1) {\n if (bSize[0] !== rows) {\n throw new RangeError('Dimension mismatch. Matrix columns must match vector length.');\n }\n for (var i = 0; i < rows; i++) {\n data[i] = [bdata[i]];\n }\n return new DenseMatrix({\n data,\n size: [rows, 1],\n datatype: b._datatype\n });\n }\n\n // 2-dim column\n if (bSize.length === 2) {\n if (bSize[0] !== rows || bSize[1] !== 1) {\n throw new RangeError('Dimension mismatch. Matrix columns must match vector length.');\n }\n if (isDenseMatrix(b)) {\n if (copy) {\n data = [];\n for (var _i = 0; _i < rows; _i++) {\n data[_i] = [bdata[_i][0]];\n }\n return new DenseMatrix({\n data,\n size: [rows, 1],\n datatype: b._datatype\n });\n }\n return b;\n }\n if (isSparseMatrix(b)) {\n for (var _i2 = 0; _i2 < rows; _i2++) {\n data[_i2] = [0];\n }\n var values = b._values;\n var index = b._index;\n var ptr = b._ptr;\n for (var k1 = ptr[1], k = ptr[0]; k < k1; k++) {\n var _i3 = index[k];\n data[_i3][0] = values[k];\n }\n return new DenseMatrix({\n data,\n size: [rows, 1],\n datatype: b._datatype\n });\n }\n }\n throw new RangeError('Dimension mismatch. The right side has to be either 1- or 2-dimensional vector.');\n }\n if (isArray(b)) {\n var bsize = arraySize(b);\n if (bsize.length === 1) {\n if (bsize[0] !== rows) {\n throw new RangeError('Dimension mismatch. Matrix columns must match vector length.');\n }\n for (var _i4 = 0; _i4 < rows; _i4++) {\n data[_i4] = [b[_i4]];\n }\n return new DenseMatrix({\n data,\n size: [rows, 1]\n });\n }\n if (bsize.length === 2) {\n if (bsize[0] !== rows || bsize[1] !== 1) {\n throw new RangeError('Dimension mismatch. Matrix columns must match vector length.');\n }\n for (var _i5 = 0; _i5 < rows; _i5++) {\n data[_i5] = [b[_i5][0]];\n }\n return new DenseMatrix({\n data,\n size: [rows, 1]\n });\n }\n throw new RangeError('Dimension mismatch. The right side has to be either 1- or 2-dimensional vector.');\n }\n };\n}", "import { factory } from '../../../utils/factory.js';\nimport { createSolveValidation } from './utils/solveValidation.js';\nvar name = 'lsolve';\nvar dependencies = ['typed', 'matrix', 'divideScalar', 'multiplyScalar', 'subtractScalar', 'equalScalar', 'DenseMatrix'];\nexport var createLsolve = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n divideScalar,\n multiplyScalar,\n subtractScalar,\n equalScalar,\n DenseMatrix\n } = _ref;\n var solveValidation = createSolveValidation({\n DenseMatrix\n });\n\n /**\n * Finds one solution of a linear equation system by forwards substitution. Matrix must be a lower triangular matrix. Throws an error if there's no solution.\n *\n * `L * x = b`\n *\n * Syntax:\n *\n * math.lsolve(L, b)\n *\n * Examples:\n *\n * const a = [[-2, 3], [2, 1]]\n * const b = [11, 9]\n * const x = lsolve(a, b) // [[-5.5], [20]]\n *\n * See also:\n *\n * lsolveAll, lup, slu, usolve, lusolve\n *\n * @param {Matrix, Array} L A N x N matrix or array (L)\n * @param {Matrix, Array} b A column vector with the b values\n *\n * @return {DenseMatrix | Array} A column vector with the linear system solution (x)\n */\n return typed(name, {\n 'SparseMatrix, Array | Matrix': function SparseMatrix_Array__Matrix(m, b) {\n return _sparseForwardSubstitution(m, b);\n },\n 'DenseMatrix, Array | Matrix': function DenseMatrix_Array__Matrix(m, b) {\n return _denseForwardSubstitution(m, b);\n },\n 'Array, Array | Matrix': function Array_Array__Matrix(a, b) {\n var m = matrix(a);\n var r = _denseForwardSubstitution(m, b);\n return r.valueOf();\n }\n });\n function _denseForwardSubstitution(m, b) {\n // validate matrix and vector, return copy of column vector b\n b = solveValidation(m, b, true);\n var bdata = b._data;\n var rows = m._size[0];\n var columns = m._size[1];\n\n // result\n var x = [];\n var mdata = m._data;\n\n // loop columns\n for (var j = 0; j < columns; j++) {\n var bj = bdata[j][0] || 0;\n var xj = void 0;\n if (!equalScalar(bj, 0)) {\n // non-degenerate row, find solution\n\n var vjj = mdata[j][j];\n if (equalScalar(vjj, 0)) {\n throw new Error('Linear system cannot be solved since matrix is singular');\n }\n xj = divideScalar(bj, vjj);\n\n // loop rows\n for (var i = j + 1; i < rows; i++) {\n bdata[i] = [subtractScalar(bdata[i][0] || 0, multiplyScalar(xj, mdata[i][j]))];\n }\n } else {\n // degenerate row, we can choose any value\n xj = 0;\n }\n x[j] = [xj];\n }\n return new DenseMatrix({\n data: x,\n size: [rows, 1]\n });\n }\n function _sparseForwardSubstitution(m, b) {\n // validate matrix and vector, return copy of column vector b\n b = solveValidation(m, b, true);\n var bdata = b._data;\n var rows = m._size[0];\n var columns = m._size[1];\n var values = m._values;\n var index = m._index;\n var ptr = m._ptr;\n\n // result\n var x = [];\n\n // loop columns\n for (var j = 0; j < columns; j++) {\n var bj = bdata[j][0] || 0;\n if (!equalScalar(bj, 0)) {\n // non-degenerate row, find solution\n\n var vjj = 0;\n // matrix values & indices (column j)\n var jValues = [];\n var jIndices = [];\n\n // first and last index in the column\n var firstIndex = ptr[j];\n var lastIndex = ptr[j + 1];\n\n // values in column, find value at [j, j]\n for (var k = firstIndex; k < lastIndex; k++) {\n var i = index[k];\n\n // check row (rows are not sorted!)\n if (i === j) {\n vjj = values[k];\n } else if (i > j) {\n // store lower triangular\n jValues.push(values[k]);\n jIndices.push(i);\n }\n }\n\n // at this point we must have a value in vjj\n if (equalScalar(vjj, 0)) {\n throw new Error('Linear system cannot be solved since matrix is singular');\n }\n var xj = divideScalar(bj, vjj);\n for (var _k = 0, l = jIndices.length; _k < l; _k++) {\n var _i = jIndices[_k];\n bdata[_i] = [subtractScalar(bdata[_i][0] || 0, multiplyScalar(xj, jValues[_k]))];\n }\n x[j] = [xj];\n } else {\n // degenerate row, we can choose any value\n x[j] = [0];\n }\n }\n return new DenseMatrix({\n data: x,\n size: [rows, 1]\n });\n }\n});", "import { factory } from '../../../utils/factory.js';\nimport { createSolveValidation } from './utils/solveValidation.js';\nvar name = 'usolve';\nvar dependencies = ['typed', 'matrix', 'divideScalar', 'multiplyScalar', 'subtractScalar', 'equalScalar', 'DenseMatrix'];\nexport var createUsolve = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n divideScalar,\n multiplyScalar,\n subtractScalar,\n equalScalar,\n DenseMatrix\n } = _ref;\n var solveValidation = createSolveValidation({\n DenseMatrix\n });\n\n /**\n * Finds one solution of a linear equation system by backward substitution. Matrix must be an upper triangular matrix. Throws an error if there's no solution.\n *\n * `U * x = b`\n *\n * Syntax:\n *\n * math.usolve(U, b)\n *\n * Examples:\n *\n * const a = [[-2, 3], [2, 1]]\n * const b = [11, 9]\n * const x = usolve(a, b) // [[8], [9]]\n *\n * See also:\n *\n * usolveAll, lup, slu, usolve, lusolve\n *\n * @param {Matrix, Array} U A N x N matrix or array (U)\n * @param {Matrix, Array} b A column vector with the b values\n *\n * @return {DenseMatrix | Array} A column vector with the linear system solution (x)\n */\n return typed(name, {\n 'SparseMatrix, Array | Matrix': function SparseMatrix_Array__Matrix(m, b) {\n return _sparseBackwardSubstitution(m, b);\n },\n 'DenseMatrix, Array | Matrix': function DenseMatrix_Array__Matrix(m, b) {\n return _denseBackwardSubstitution(m, b);\n },\n 'Array, Array | Matrix': function Array_Array__Matrix(a, b) {\n var m = matrix(a);\n var r = _denseBackwardSubstitution(m, b);\n return r.valueOf();\n }\n });\n function _denseBackwardSubstitution(m, b) {\n // make b into a column vector\n b = solveValidation(m, b, true);\n var bdata = b._data;\n var rows = m._size[0];\n var columns = m._size[1];\n\n // result\n var x = [];\n var mdata = m._data;\n // loop columns backwards\n for (var j = columns - 1; j >= 0; j--) {\n // b[j]\n var bj = bdata[j][0] || 0;\n // x[j]\n var xj = void 0;\n if (!equalScalar(bj, 0)) {\n // value at [j, j]\n var vjj = mdata[j][j];\n if (equalScalar(vjj, 0)) {\n // system cannot be solved\n throw new Error('Linear system cannot be solved since matrix is singular');\n }\n xj = divideScalar(bj, vjj);\n\n // loop rows\n for (var i = j - 1; i >= 0; i--) {\n // update copy of b\n bdata[i] = [subtractScalar(bdata[i][0] || 0, multiplyScalar(xj, mdata[i][j]))];\n }\n } else {\n // zero value at j\n xj = 0;\n }\n // update x\n x[j] = [xj];\n }\n return new DenseMatrix({\n data: x,\n size: [rows, 1]\n });\n }\n function _sparseBackwardSubstitution(m, b) {\n // make b into a column vector\n b = solveValidation(m, b, true);\n var bdata = b._data;\n var rows = m._size[0];\n var columns = m._size[1];\n var values = m._values;\n var index = m._index;\n var ptr = m._ptr;\n\n // result\n var x = [];\n\n // loop columns backwards\n for (var j = columns - 1; j >= 0; j--) {\n var bj = bdata[j][0] || 0;\n if (!equalScalar(bj, 0)) {\n // non-degenerate row, find solution\n\n var vjj = 0;\n\n // upper triangular matrix values & index (column j)\n var jValues = [];\n var jIndices = [];\n\n // first & last indeces in column\n var firstIndex = ptr[j];\n var lastIndex = ptr[j + 1];\n\n // values in column, find value at [j, j], loop backwards\n for (var k = lastIndex - 1; k >= firstIndex; k--) {\n var i = index[k];\n\n // check row (rows are not sorted!)\n if (i === j) {\n vjj = values[k];\n } else if (i < j) {\n // store upper triangular\n jValues.push(values[k]);\n jIndices.push(i);\n }\n }\n\n // at this point we must have a value in vjj\n if (equalScalar(vjj, 0)) {\n throw new Error('Linear system cannot be solved since matrix is singular');\n }\n var xj = divideScalar(bj, vjj);\n for (var _k = 0, _lastIndex = jIndices.length; _k < _lastIndex; _k++) {\n var _i = jIndices[_k];\n bdata[_i] = [subtractScalar(bdata[_i][0], multiplyScalar(xj, jValues[_k]))];\n }\n x[j] = [xj];\n } else {\n // degenerate row, we can choose any value\n x[j] = [0];\n }\n }\n return new DenseMatrix({\n data: x,\n size: [rows, 1]\n });\n }\n});", "import { factory } from '../../../utils/factory.js';\nimport { createSolveValidation } from './utils/solveValidation.js';\nvar name = 'lsolveAll';\nvar dependencies = ['typed', 'matrix', 'divideScalar', 'multiplyScalar', 'subtractScalar', 'equalScalar', 'DenseMatrix'];\nexport var createLsolveAll = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n divideScalar,\n multiplyScalar,\n subtractScalar,\n equalScalar,\n DenseMatrix\n } = _ref;\n var solveValidation = createSolveValidation({\n DenseMatrix\n });\n\n /**\n * Finds all solutions of a linear equation system by forwards substitution. Matrix must be a lower triangular matrix.\n *\n * `L * x = b`\n *\n * Syntax:\n *\n * math.lsolveAll(L, b)\n *\n * Examples:\n *\n * const a = [[-2, 3], [2, 1]]\n * const b = [11, 9]\n * const x = lsolveAll(a, b) // [ [[-5.5], [20]] ]\n *\n * See also:\n *\n * lsolve, lup, slu, usolve, lusolve\n *\n * @param {Matrix, Array} L A N x N matrix or array (L)\n * @param {Matrix, Array} b A column vector with the b values\n *\n * @return {DenseMatrix[] | Array[]} An array of affine-independent column vectors (x) that solve the linear system\n */\n return typed(name, {\n 'SparseMatrix, Array | Matrix': function SparseMatrix_Array__Matrix(m, b) {\n return _sparseForwardSubstitution(m, b);\n },\n 'DenseMatrix, Array | Matrix': function DenseMatrix_Array__Matrix(m, b) {\n return _denseForwardSubstitution(m, b);\n },\n 'Array, Array | Matrix': function Array_Array__Matrix(a, b) {\n var m = matrix(a);\n var R = _denseForwardSubstitution(m, b);\n return R.map(r => r.valueOf());\n }\n });\n function _denseForwardSubstitution(m, b_) {\n // the algorithm is derived from\n // https://www.overleaf.com/read/csvgqdxggyjv\n\n // array of right-hand sides\n var B = [solveValidation(m, b_, true)._data.map(e => e[0])];\n var M = m._data;\n var rows = m._size[0];\n var columns = m._size[1];\n\n // loop columns\n for (var i = 0; i < columns; i++) {\n var L = B.length;\n\n // loop right-hand sides\n for (var k = 0; k < L; k++) {\n var b = B[k];\n if (!equalScalar(M[i][i], 0)) {\n // non-singular row\n\n b[i] = divideScalar(b[i], M[i][i]);\n for (var j = i + 1; j < columns; j++) {\n // b[j] -= b[i] * M[j,i]\n b[j] = subtractScalar(b[j], multiplyScalar(b[i], M[j][i]));\n }\n } else if (!equalScalar(b[i], 0)) {\n // singular row, nonzero RHS\n\n if (k === 0) {\n // There is no valid solution\n return [];\n } else {\n // This RHS is invalid but other solutions may still exist\n B.splice(k, 1);\n k -= 1;\n L -= 1;\n }\n } else if (k === 0) {\n // singular row, RHS is zero\n\n var bNew = [...b];\n bNew[i] = 1;\n for (var _j = i + 1; _j < columns; _j++) {\n bNew[_j] = subtractScalar(bNew[_j], M[_j][i]);\n }\n B.push(bNew);\n }\n }\n }\n return B.map(x => new DenseMatrix({\n data: x.map(e => [e]),\n size: [rows, 1]\n }));\n }\n function _sparseForwardSubstitution(m, b_) {\n // array of right-hand sides\n var B = [solveValidation(m, b_, true)._data.map(e => e[0])];\n var rows = m._size[0];\n var columns = m._size[1];\n var values = m._values;\n var index = m._index;\n var ptr = m._ptr;\n\n // loop columns\n for (var i = 0; i < columns; i++) {\n var L = B.length;\n\n // loop right-hand sides\n for (var k = 0; k < L; k++) {\n var b = B[k];\n\n // values & indices (column i)\n var iValues = [];\n var iIndices = [];\n\n // first & last indeces in column\n var firstIndex = ptr[i];\n var lastIndex = ptr[i + 1];\n\n // find the value at [i, i]\n var Mii = 0;\n for (var j = firstIndex; j < lastIndex; j++) {\n var J = index[j];\n // check row\n if (J === i) {\n Mii = values[j];\n } else if (J > i) {\n // store lower triangular\n iValues.push(values[j]);\n iIndices.push(J);\n }\n }\n if (!equalScalar(Mii, 0)) {\n // non-singular row\n\n b[i] = divideScalar(b[i], Mii);\n for (var _j2 = 0, _lastIndex = iIndices.length; _j2 < _lastIndex; _j2++) {\n var _J = iIndices[_j2];\n b[_J] = subtractScalar(b[_J], multiplyScalar(b[i], iValues[_j2]));\n }\n } else if (!equalScalar(b[i], 0)) {\n // singular row, nonzero RHS\n\n if (k === 0) {\n // There is no valid solution\n return [];\n } else {\n // This RHS is invalid but other solutions may still exist\n B.splice(k, 1);\n k -= 1;\n L -= 1;\n }\n } else if (k === 0) {\n // singular row, RHS is zero\n\n var bNew = [...b];\n bNew[i] = 1;\n for (var _j3 = 0, _lastIndex2 = iIndices.length; _j3 < _lastIndex2; _j3++) {\n var _J2 = iIndices[_j3];\n bNew[_J2] = subtractScalar(bNew[_J2], iValues[_j3]);\n }\n B.push(bNew);\n }\n }\n }\n return B.map(x => new DenseMatrix({\n data: x.map(e => [e]),\n size: [rows, 1]\n }));\n }\n});", "import { factory } from '../../../utils/factory.js';\nimport { createSolveValidation } from './utils/solveValidation.js';\nvar name = 'usolveAll';\nvar dependencies = ['typed', 'matrix', 'divideScalar', 'multiplyScalar', 'subtractScalar', 'equalScalar', 'DenseMatrix'];\nexport var createUsolveAll = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n divideScalar,\n multiplyScalar,\n subtractScalar,\n equalScalar,\n DenseMatrix\n } = _ref;\n var solveValidation = createSolveValidation({\n DenseMatrix\n });\n\n /**\n * Finds all solutions of a linear equation system by backward substitution. Matrix must be an upper triangular matrix.\n *\n * `U * x = b`\n *\n * Syntax:\n *\n * math.usolveAll(U, b)\n *\n * Examples:\n *\n * const a = [[-2, 3], [2, 1]]\n * const b = [11, 9]\n * const x = usolveAll(a, b) // [ [[8], [9]] ]\n *\n * See also:\n *\n * usolve, lup, slu, usolve, lusolve\n *\n * @param {Matrix, Array} U A N x N matrix or array (U)\n * @param {Matrix, Array} b A column vector with the b values\n *\n * @return {DenseMatrix[] | Array[]} An array of affine-independent column vectors (x) that solve the linear system\n */\n return typed(name, {\n 'SparseMatrix, Array | Matrix': function SparseMatrix_Array__Matrix(m, b) {\n return _sparseBackwardSubstitution(m, b);\n },\n 'DenseMatrix, Array | Matrix': function DenseMatrix_Array__Matrix(m, b) {\n return _denseBackwardSubstitution(m, b);\n },\n 'Array, Array | Matrix': function Array_Array__Matrix(a, b) {\n var m = matrix(a);\n var R = _denseBackwardSubstitution(m, b);\n return R.map(r => r.valueOf());\n }\n });\n function _denseBackwardSubstitution(m, b_) {\n // the algorithm is derived from\n // https://www.overleaf.com/read/csvgqdxggyjv\n\n // array of right-hand sides\n var B = [solveValidation(m, b_, true)._data.map(e => e[0])];\n var M = m._data;\n var rows = m._size[0];\n var columns = m._size[1];\n\n // loop columns backwards\n for (var i = columns - 1; i >= 0; i--) {\n var L = B.length;\n\n // loop right-hand sides\n for (var k = 0; k < L; k++) {\n var b = B[k];\n if (!equalScalar(M[i][i], 0)) {\n // non-singular row\n\n b[i] = divideScalar(b[i], M[i][i]);\n for (var j = i - 1; j >= 0; j--) {\n // b[j] -= b[i] * M[j,i]\n b[j] = subtractScalar(b[j], multiplyScalar(b[i], M[j][i]));\n }\n } else if (!equalScalar(b[i], 0)) {\n // singular row, nonzero RHS\n\n if (k === 0) {\n // There is no valid solution\n return [];\n } else {\n // This RHS is invalid but other solutions may still exist\n B.splice(k, 1);\n k -= 1;\n L -= 1;\n }\n } else if (k === 0) {\n // singular row, RHS is zero\n\n var bNew = [...b];\n bNew[i] = 1;\n for (var _j = i - 1; _j >= 0; _j--) {\n bNew[_j] = subtractScalar(bNew[_j], M[_j][i]);\n }\n B.push(bNew);\n }\n }\n }\n return B.map(x => new DenseMatrix({\n data: x.map(e => [e]),\n size: [rows, 1]\n }));\n }\n function _sparseBackwardSubstitution(m, b_) {\n // array of right-hand sides\n var B = [solveValidation(m, b_, true)._data.map(e => e[0])];\n var rows = m._size[0];\n var columns = m._size[1];\n var values = m._values;\n var index = m._index;\n var ptr = m._ptr;\n\n // loop columns backwards\n for (var i = columns - 1; i >= 0; i--) {\n var L = B.length;\n\n // loop right-hand sides\n for (var k = 0; k < L; k++) {\n var b = B[k];\n\n // values & indices (column i)\n var iValues = [];\n var iIndices = [];\n\n // first & last indeces in column\n var firstIndex = ptr[i];\n var lastIndex = ptr[i + 1];\n\n // find the value at [i, i]\n var Mii = 0;\n for (var j = lastIndex - 1; j >= firstIndex; j--) {\n var J = index[j];\n // check row\n if (J === i) {\n Mii = values[j];\n } else if (J < i) {\n // store upper triangular\n iValues.push(values[j]);\n iIndices.push(J);\n }\n }\n if (!equalScalar(Mii, 0)) {\n // non-singular row\n\n b[i] = divideScalar(b[i], Mii);\n\n // loop upper triangular\n for (var _j2 = 0, _lastIndex = iIndices.length; _j2 < _lastIndex; _j2++) {\n var _J = iIndices[_j2];\n b[_J] = subtractScalar(b[_J], multiplyScalar(b[i], iValues[_j2]));\n }\n } else if (!equalScalar(b[i], 0)) {\n // singular row, nonzero RHS\n\n if (k === 0) {\n // There is no valid solution\n return [];\n } else {\n // This RHS is invalid but other solutions may still exist\n B.splice(k, 1);\n k -= 1;\n L -= 1;\n }\n } else if (k === 0) {\n // singular row, RHS is zero\n\n var bNew = [...b];\n bNew[i] = 1;\n\n // loop upper triangular\n for (var _j3 = 0, _lastIndex2 = iIndices.length; _j3 < _lastIndex2; _j3++) {\n var _J2 = iIndices[_j3];\n bNew[_J2] = subtractScalar(bNew[_J2], iValues[_j3]);\n }\n B.push(bNew);\n }\n }\n }\n return B.map(x => new DenseMatrix({\n data: x.map(e => [e]),\n size: [rows, 1]\n }));\n }\n});", "import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nvar name = 'matAlgo08xS0Sid';\nvar dependencies = ['typed', 'equalScalar'];\nexport var createMatAlgo08xS0Sid = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar\n } = _ref;\n /**\n * Iterates over SparseMatrix A and SparseMatrix B nonzero items and invokes the callback function f(Aij, Bij).\n * Callback function invoked MAX(NNZA, NNZB) times\n *\n *\n * \u250C f(Aij, Bij) ; A(i,j) !== 0 && B(i,j) !== 0\n * C(i,j) = \u2524 A(i,j) ; A(i,j) !== 0 && B(i,j) === 0\n * \u2514 0 ; otherwise\n *\n *\n * @param {Matrix} a The SparseMatrix instance (A)\n * @param {Matrix} b The SparseMatrix instance (B)\n * @param {Function} callback The f(Aij,Bij) operation to invoke\n *\n * @return {Matrix} SparseMatrix (C)\n *\n * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294\n */\n return function matAlgo08xS0Sid(a, b, callback) {\n // sparse matrix arrays\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n var asize = a._size;\n var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();\n // sparse matrix arrays\n var bvalues = b._values;\n var bindex = b._index;\n var bptr = b._ptr;\n var bsize = b._size;\n var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();\n\n // validate dimensions\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n }\n\n // check rows & columns\n if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n }\n\n // sparse matrix cannot be a Pattern matrix\n if (!avalues || !bvalues) {\n throw new Error('Cannot perform operation on Pattern Sparse Matrices');\n }\n\n // rows & columns\n var rows = asize[0];\n var columns = asize[1];\n\n // datatype\n var dt;\n // equal signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n // callback signature to use\n var cf = callback;\n\n // process data types\n if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {\n // datatype\n dt = adt;\n // find signature that matches (dt, dt)\n eq = typed.find(equalScalar, [dt, dt]);\n // convert 0 to the same datatype\n zero = typed.convert(0, dt);\n // callback\n cf = typed.find(callback, [dt, dt]);\n }\n\n // result arrays\n var cvalues = [];\n var cindex = [];\n var cptr = [];\n\n // workspace\n var x = [];\n // marks indicating we have a value in x for a given column\n var w = [];\n\n // vars\n var k, k0, k1, i;\n\n // loop columns\n for (var j = 0; j < columns; j++) {\n // update cptr\n cptr[j] = cindex.length;\n // columns mark\n var mark = j + 1;\n // loop values in a\n for (k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {\n // row\n i = aindex[k];\n // mark workspace\n w[i] = mark;\n // set value\n x[i] = avalues[k];\n // add index\n cindex.push(i);\n }\n // loop values in b\n for (k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) {\n // row\n i = bindex[k];\n // check value exists in workspace\n if (w[i] === mark) {\n // evaluate callback\n x[i] = cf(x[i], bvalues[k]);\n }\n }\n // initialize first index in j\n k = cptr[j];\n // loop index in j\n while (k < cindex.length) {\n // row\n i = cindex[k];\n // value @ i\n var v = x[i];\n // check for zero value\n if (!eq(v, zero)) {\n // push value\n cvalues.push(v);\n // increment pointer\n k++;\n } else {\n // remove value @ i, do not increment pointer\n cindex.splice(k, 1);\n }\n }\n }\n // update cptr\n cptr[columns] = cindex.length;\n\n // return sparse matrix\n return a.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [rows, columns],\n datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined\n });\n };\n});", "import { factory } from '../../utils/factory.js';\nexport var createUseMatrixForArrayScalar = /* #__PURE__ */factory('useMatrixForArrayScalar', ['typed', 'matrix'], _ref => {\n var {\n typed,\n matrix\n } = _ref;\n return {\n 'Array, number': typed.referTo('DenseMatrix, number', selfDn => (x, y) => selfDn(matrix(x), y).valueOf()),\n 'Array, BigNumber': typed.referTo('DenseMatrix, BigNumber', selfDB => (x, y) => selfDB(matrix(x), y).valueOf()),\n 'number, Array': typed.referTo('number, DenseMatrix', selfnD => (x, y) => selfnD(x, matrix(y)).valueOf()),\n 'BigNumber, Array': typed.referTo('BigNumber, DenseMatrix', selfBD => (x, y) => selfBD(x, matrix(y)).valueOf())\n };\n});", "import { createMatAlgo02xDS0 } from '../../type/matrix/utils/matAlgo02xDS0.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';\nimport { createMatAlgo01xDSid } from '../../type/matrix/utils/matAlgo01xDSid.js';\nimport { createMatAlgo10xSids } from '../../type/matrix/utils/matAlgo10xSids.js';\nimport { createMatAlgo08xS0Sid } from '../../type/matrix/utils/matAlgo08xS0Sid.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { createUseMatrixForArrayScalar } from './useMatrixForArrayScalar.js';\nimport { leftShiftNumber } from '../../plain/number/index.js';\nimport { leftShiftBigNumber } from '../../utils/bignumber/bitwise.js';\nvar name = 'leftShift';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix', 'concat'];\nexport var createLeftShift = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n zeros,\n DenseMatrix,\n concat\n } = _ref;\n var matAlgo01xDSid = createMatAlgo01xDSid({\n typed\n });\n var matAlgo02xDS0 = createMatAlgo02xDS0({\n typed,\n equalScalar\n });\n var matAlgo08xS0Sid = createMatAlgo08xS0Sid({\n typed,\n equalScalar\n });\n var matAlgo10xSids = createMatAlgo10xSids({\n typed,\n DenseMatrix\n });\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matAlgo14xDs = createMatAlgo14xDs({\n typed\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n var useMatrixForArrayScalar = createUseMatrixForArrayScalar({\n typed,\n matrix\n });\n\n /**\n * Bitwise left logical shift of a value x by y number of bits, `x << y`.\n * For matrices, the function is evaluated element wise.\n * For units, the function is evaluated on the best prefix base.\n *\n * Syntax:\n *\n * math.leftShift(x, y)\n *\n * Examples:\n *\n * math.leftShift(1, 2) // returns number 4\n *\n * math.leftShift([1, 2, 4], 4) // returns Array [16, 32, 64]\n *\n * See also:\n *\n * leftShift, bitNot, bitOr, bitXor, rightArithShift, rightLogShift\n *\n * @param {number | BigNumber | bigint | Array | Matrix} x Value to be shifted\n * @param {number | BigNumber | bigint} y Amount of shifts\n * @return {number | BigNumber | bigint | Array | Matrix} `x` shifted left `y` times\n */\n return typed(name, {\n 'number, number': leftShiftNumber,\n 'BigNumber, BigNumber': leftShiftBigNumber,\n 'bigint, bigint': (x, y) => x << y,\n 'SparseMatrix, number | BigNumber': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (equalScalar(y, 0)) {\n return x.clone();\n }\n return matAlgo11xS0s(x, y, self, false);\n }),\n 'DenseMatrix, number | BigNumber': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (equalScalar(y, 0)) {\n return x.clone();\n }\n return matAlgo14xDs(x, y, self, false);\n }),\n 'number | BigNumber, SparseMatrix': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (equalScalar(x, 0)) {\n return zeros(y.size(), y.storage());\n }\n return matAlgo10xSids(y, x, self, true);\n }),\n 'number | BigNumber, DenseMatrix': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (equalScalar(x, 0)) {\n return zeros(y.size(), y.storage());\n }\n return matAlgo14xDs(y, x, self, true);\n })\n }, useMatrixForArrayScalar, matrixAlgorithmSuite({\n SS: matAlgo08xS0Sid,\n DS: matAlgo01xDSid,\n SD: matAlgo02xDS0\n }));\n});", "import { rightArithShiftBigNumber } from '../../utils/bignumber/bitwise.js';\nimport { createMatAlgo02xDS0 } from '../../type/matrix/utils/matAlgo02xDS0.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';\nimport { createMatAlgo01xDSid } from '../../type/matrix/utils/matAlgo01xDSid.js';\nimport { createMatAlgo10xSids } from '../../type/matrix/utils/matAlgo10xSids.js';\nimport { createMatAlgo08xS0Sid } from '../../type/matrix/utils/matAlgo08xS0Sid.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { createUseMatrixForArrayScalar } from './useMatrixForArrayScalar.js';\nimport { rightArithShiftNumber } from '../../plain/number/index.js';\nvar name = 'rightArithShift';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix', 'concat'];\nexport var createRightArithShift = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n zeros,\n DenseMatrix,\n concat\n } = _ref;\n var matAlgo01xDSid = createMatAlgo01xDSid({\n typed\n });\n var matAlgo02xDS0 = createMatAlgo02xDS0({\n typed,\n equalScalar\n });\n var matAlgo08xS0Sid = createMatAlgo08xS0Sid({\n typed,\n equalScalar\n });\n var matAlgo10xSids = createMatAlgo10xSids({\n typed,\n DenseMatrix\n });\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matAlgo14xDs = createMatAlgo14xDs({\n typed\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n var useMatrixForArrayScalar = createUseMatrixForArrayScalar({\n typed,\n matrix\n });\n\n /**\n * Bitwise right arithmetic shift of a value x by y number of bits, `x >> y`.\n * For matrices, the function is evaluated element wise.\n * For units, the function is evaluated on the best prefix base.\n *\n * Syntax:\n *\n * math.rightArithShift(x, y)\n *\n * Examples:\n *\n * math.rightArithShift(4, 2) // returns number 1\n *\n * math.rightArithShift([16, -32, 64], 4) // returns Array [1, -2, 4]\n *\n * See also:\n *\n * bitAnd, bitNot, bitOr, bitXor, rightArithShift, rightLogShift\n *\n * @param {number | BigNumber | bigint | Array | Matrix} x Value to be shifted\n * @param {number | BigNumber | bigint} y Amount of shifts\n * @return {number | BigNumber | bigint | Array | Matrix} `x` zero-filled shifted right `y` times\n */\n return typed(name, {\n 'number, number': rightArithShiftNumber,\n 'BigNumber, BigNumber': rightArithShiftBigNumber,\n 'bigint, bigint': (x, y) => x >> y,\n 'SparseMatrix, number | BigNumber': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (equalScalar(y, 0)) {\n return x.clone();\n }\n return matAlgo11xS0s(x, y, self, false);\n }),\n 'DenseMatrix, number | BigNumber': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (equalScalar(y, 0)) {\n return x.clone();\n }\n return matAlgo14xDs(x, y, self, false);\n }),\n 'number | BigNumber, SparseMatrix': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (equalScalar(x, 0)) {\n return zeros(y.size(), y.storage());\n }\n return matAlgo10xSids(y, x, self, true);\n }),\n 'number | BigNumber, DenseMatrix': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (equalScalar(x, 0)) {\n return zeros(y.size(), y.storage());\n }\n return matAlgo14xDs(y, x, self, true);\n })\n }, useMatrixForArrayScalar, matrixAlgorithmSuite({\n SS: matAlgo08xS0Sid,\n DS: matAlgo01xDSid,\n SD: matAlgo02xDS0\n }));\n});", "import { createMatAlgo02xDS0 } from '../../type/matrix/utils/matAlgo02xDS0.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';\nimport { createMatAlgo01xDSid } from '../../type/matrix/utils/matAlgo01xDSid.js';\nimport { createMatAlgo10xSids } from '../../type/matrix/utils/matAlgo10xSids.js';\nimport { createMatAlgo08xS0Sid } from '../../type/matrix/utils/matAlgo08xS0Sid.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { rightLogShiftNumber } from '../../plain/number/index.js';\nimport { createUseMatrixForArrayScalar } from './useMatrixForArrayScalar.js';\nvar name = 'rightLogShift';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix', 'concat'];\nexport var createRightLogShift = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n zeros,\n DenseMatrix,\n concat\n } = _ref;\n var matAlgo01xDSid = createMatAlgo01xDSid({\n typed\n });\n var matAlgo02xDS0 = createMatAlgo02xDS0({\n typed,\n equalScalar\n });\n var matAlgo08xS0Sid = createMatAlgo08xS0Sid({\n typed,\n equalScalar\n });\n var matAlgo10xSids = createMatAlgo10xSids({\n typed,\n DenseMatrix\n });\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matAlgo14xDs = createMatAlgo14xDs({\n typed\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n var useMatrixForArrayScalar = createUseMatrixForArrayScalar({\n typed,\n matrix\n });\n\n /**\n * Bitwise right logical shift of value x by y number of bits, `x >>> y`.\n * For matrices, the function is evaluated element wise.\n * For units, the function is evaluated on the best prefix base.\n *\n * Syntax:\n *\n * math.rightLogShift(x, y)\n *\n * Examples:\n *\n * math.rightLogShift(4, 2) // returns number 1\n *\n * math.rightLogShift([16, 32, 64], 4) // returns Array [1, 2, 4]\n *\n * See also:\n *\n * bitAnd, bitNot, bitOr, bitXor, leftShift, rightLogShift\n *\n * @param {number | Array | Matrix} x Value to be shifted\n * @param {number} y Amount of shifts\n * @return {number | Array | Matrix} `x` zero-filled shifted right `y` times\n */\n\n return typed(name, {\n 'number, number': rightLogShiftNumber,\n // 'BigNumber, BigNumber': ..., // TODO: implement BigNumber support for rightLogShift\n\n 'SparseMatrix, number | BigNumber': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (equalScalar(y, 0)) {\n return x.clone();\n }\n return matAlgo11xS0s(x, y, self, false);\n }),\n 'DenseMatrix, number | BigNumber': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (equalScalar(y, 0)) {\n return x.clone();\n }\n return matAlgo14xDs(x, y, self, false);\n }),\n 'number | BigNumber, SparseMatrix': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (equalScalar(x, 0)) {\n return zeros(y.size(), y.storage());\n }\n return matAlgo10xSids(y, x, self, true);\n }),\n 'number | BigNumber, DenseMatrix': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (equalScalar(x, 0)) {\n return zeros(y.size(), y.storage());\n }\n return matAlgo14xDs(y, x, self, true);\n })\n }, useMatrixForArrayScalar, matrixAlgorithmSuite({\n SS: matAlgo08xS0Sid,\n DS: matAlgo01xDSid,\n SD: matAlgo02xDS0\n }));\n});", "import { createMatAlgo02xDS0 } from '../../type/matrix/utils/matAlgo02xDS0.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';\nimport { createMatAlgo06xS0S0 } from '../../type/matrix/utils/matAlgo06xS0S0.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { andNumber } from '../../plain/number/index.js';\nvar name = 'and';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'zeros', 'not', 'concat'];\nexport var createAnd = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n zeros,\n not,\n concat\n } = _ref;\n var matAlgo02xDS0 = createMatAlgo02xDS0({\n typed,\n equalScalar\n });\n var matAlgo06xS0S0 = createMatAlgo06xS0S0({\n typed,\n equalScalar\n });\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matAlgo14xDs = createMatAlgo14xDs({\n typed\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Logical `and`. Test whether two values are both defined with a nonzero/nonempty value.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.and(x, y)\n *\n * Examples:\n *\n * math.and(2, 4) // returns true\n *\n * a = [2, 0, 0]\n * b = [3, 7, 0]\n * c = 0\n *\n * math.and(a, b) // returns [true, false, false]\n * math.and(a, c) // returns [false, false, false]\n *\n * See also:\n *\n * not, or, xor\n *\n * @param {number | BigNumber | bigint | Complex | Unit | Array | Matrix} x First value to check\n * @param {number | BigNumber | bigint | Complex | Unit | Array | Matrix} y Second value to check\n * @return {boolean | Array | Matrix}\n * Returns true when both inputs are defined with a nonzero/nonempty value.\n */\n return typed(name, {\n 'number, number': andNumber,\n 'Complex, Complex': function Complex_Complex(x, y) {\n return (x.re !== 0 || x.im !== 0) && (y.re !== 0 || y.im !== 0);\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n return !x.isZero() && !y.isZero() && !x.isNaN() && !y.isNaN();\n },\n 'bigint, bigint': andNumber,\n 'Unit, Unit': typed.referToSelf(self => (x, y) => self(x.value || 0, y.value || 0)),\n 'SparseMatrix, any': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (not(y)) {\n // return zero matrix\n return zeros(x.size(), x.storage());\n }\n return matAlgo11xS0s(x, y, self, false);\n }),\n 'DenseMatrix, any': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (not(y)) {\n // return zero matrix\n return zeros(x.size(), x.storage());\n }\n return matAlgo14xDs(x, y, self, false);\n }),\n 'any, SparseMatrix': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (not(x)) {\n // return zero matrix\n return zeros(x.size(), x.storage());\n }\n return matAlgo11xS0s(y, x, self, true);\n }),\n 'any, DenseMatrix': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (not(x)) {\n // return zero matrix\n return zeros(x.size(), x.storage());\n }\n return matAlgo14xDs(y, x, self, true);\n }),\n 'Array, any': typed.referToSelf(self => (x, y) => {\n // use matrix implementation\n return self(matrix(x), y).valueOf();\n }),\n 'any, Array': typed.referToSelf(self => (x, y) => {\n // use matrix implementation\n return self(x, matrix(y)).valueOf();\n })\n }, matrixAlgorithmSuite({\n SS: matAlgo06xS0S0,\n DS: matAlgo02xDS0\n }));\n});", "import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { nearlyEqual } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatAlgo05xSfSf } from '../../type/matrix/utils/matAlgo05xSfSf.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { createCompareUnits } from './compareUnits.js';\nvar name = 'compare';\nvar dependencies = ['typed', 'config', 'matrix', 'equalScalar', 'BigNumber', 'Fraction', 'DenseMatrix', 'concat'];\nexport var createCompare = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n equalScalar,\n matrix,\n BigNumber,\n Fraction,\n DenseMatrix,\n concat\n } = _ref;\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo05xSfSf = createMatAlgo05xSfSf({\n typed,\n equalScalar\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n var compareUnits = createCompareUnits({\n typed\n });\n\n /**\n * Compare two values. Returns 1 when x > y, -1 when x < y, and 0 when x == y.\n *\n * x and y are considered equal when the relative difference between x and y\n * is smaller than the configured absTol and relTol. The function cannot be used to\n * compare values smaller than approximately 2.22e-16.\n *\n * For matrices, the function is evaluated element wise.\n * Strings are compared by their numerical value.\n *\n * Syntax:\n *\n * math.compare(x, y)\n *\n * Examples:\n *\n * math.compare(6, 1) // returns 1\n * math.compare(2, 3) // returns -1\n * math.compare(7, 7) // returns 0\n * math.compare('10', '2') // returns 1\n * math.compare('1000', '1e3') // returns 0\n *\n * const a = math.unit('5 cm')\n * const b = math.unit('40 mm')\n * math.compare(a, b) // returns 1\n *\n * math.compare(2, [1, 2, 3]) // returns [1, 0, -1]\n *\n * See also:\n *\n * equal, unequal, smaller, smallerEq, larger, largerEq, compareNatural, compareText\n *\n * @param {number | BigNumber | bigint | Fraction | Unit | string | Array | Matrix} x First value to compare\n * @param {number | BigNumber | bigint | Fraction | Unit | string | Array | Matrix} y Second value to compare\n * @return {number | BigNumber | bigint | Fraction | Array | Matrix} Returns the result of the comparison:\n * 1 when x > y, -1 when x < y, and 0 when x == y.\n */\n return typed(name, createCompareNumber({\n typed,\n config\n }), {\n 'boolean, boolean': function boolean_boolean(x, y) {\n return x === y ? 0 : x > y ? 1 : -1;\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n return bigNearlyEqual(x, y, config.relTol, config.absTol) ? new BigNumber(0) : new BigNumber(x.cmp(y));\n },\n 'bigint, bigint': function bigint_bigint(x, y) {\n return x === y ? 0n : x > y ? 1n : -1n;\n },\n 'Fraction, Fraction': function Fraction_Fraction(x, y) {\n return new Fraction(x.compare(y));\n },\n 'Complex, Complex': function Complex_Complex() {\n throw new TypeError('No ordering relation is defined for complex numbers');\n }\n }, compareUnits, matrixAlgorithmSuite({\n SS: matAlgo05xSfSf,\n DS: matAlgo03xDSf,\n Ss: matAlgo12xSfs\n }));\n});\nexport var createCompareNumber = /* #__PURE__ */factory(name, ['typed', 'config'], _ref2 => {\n var {\n typed,\n config\n } = _ref2;\n return typed(name, {\n 'number, number': function number_number(x, y) {\n return nearlyEqual(x, y, config.relTol, config.absTol) ? 0 : x > y ? 1 : -1;\n }\n });\n});", "import naturalSort from 'javascript-natural-sort';\nimport { isDenseMatrix, isSparseMatrix, typeOf } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'compareNatural';\nvar dependencies = ['typed', 'compare'];\nexport var createCompareNatural = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n compare\n } = _ref;\n var compareBooleans = compare.signatures['boolean,boolean'];\n\n /**\n * Compare two values of any type in a deterministic, natural way.\n *\n * For numeric values, the function works the same as `math.compare`.\n * For types of values that can't be compared mathematically,\n * the function compares in a natural way.\n *\n * For numeric values, x and y are considered equal when the relative\n * difference between x and y is smaller than the configured relTol and absTol.\n * The function cannot be used to compare values smaller than\n * approximately 2.22e-16.\n *\n * For Complex numbers, first the real parts are compared. If equal,\n * the imaginary parts are compared.\n *\n * Strings are compared with a natural sorting algorithm, which\n * orders strings in a \"logic\" way following some heuristics.\n * This differs from the function `compare`, which converts the string\n * into a numeric value and compares that. The function `compareText`\n * on the other hand compares text lexically.\n *\n * Arrays and Matrices are compared value by value until there is an\n * unequal pair of values encountered. Objects are compared by sorted\n * keys until the keys or their values are unequal.\n *\n * Syntax:\n *\n * math.compareNatural(x, y)\n *\n * Examples:\n *\n * math.compareNatural(6, 1) // returns 1\n * math.compareNatural(2, 3) // returns -1\n * math.compareNatural(7, 7) // returns 0\n *\n * math.compareNatural('10', '2') // returns 1\n * math.compareText('10', '2') // returns -1\n * math.compare('10', '2') // returns 1\n *\n * math.compareNatural('Answer: 10', 'Answer: 2') // returns 1\n * math.compareText('Answer: 10', 'Answer: 2') // returns -1\n * math.compare('Answer: 10', 'Answer: 2')\n * // Error: Cannot convert \"Answer: 10\" to a number\n *\n * const a = math.unit('5 cm')\n * const b = math.unit('40 mm')\n * math.compareNatural(a, b) // returns 1\n *\n * const c = math.complex('2 + 3i')\n * const d = math.complex('2 + 4i')\n * math.compareNatural(c, d) // returns -1\n *\n * math.compareNatural([1, 2, 4], [1, 2, 3]) // returns 1\n * math.compareNatural([1, 2, 3], [1, 2]) // returns 1\n * math.compareNatural([1, 5], [1, 2, 3]) // returns 1\n * math.compareNatural([1, 2], [1, 2]) // returns 0\n *\n * math.compareNatural({a: 2}, {a: 4}) // returns -1\n *\n * See also:\n *\n * compare, compareText\n *\n * @param {*} x First value to compare\n * @param {*} y Second value to compare\n * @return {number} Returns the result of the comparison:\n * 1 when x > y, -1 when x < y, and 0 when x == y.\n */\n return typed(name, {\n 'any, any': _compareNatural\n }); // just to check # args\n\n function _compareNatural(x, y) {\n var typeX = typeOf(x);\n var typeY = typeOf(y);\n var c;\n\n // numeric types\n if ((typeX === 'number' || typeX === 'BigNumber' || typeX === 'Fraction') && (typeY === 'number' || typeY === 'BigNumber' || typeY === 'Fraction')) {\n c = compare(x, y);\n if (c.toString() !== '0') {\n // c can be number, BigNumber, or Fraction\n return c > 0 ? 1 : -1; // return a number\n } else {\n return naturalSort(typeX, typeY);\n }\n }\n\n // matrix types\n var matTypes = ['Array', 'DenseMatrix', 'SparseMatrix'];\n if (matTypes.includes(typeX) || matTypes.includes(typeY)) {\n c = compareMatricesAndArrays(_compareNatural, x, y);\n if (c !== 0) {\n return c;\n } else {\n return naturalSort(typeX, typeY);\n }\n }\n\n // in case of different types, order by name of type, i.e. 'BigNumber' < 'Complex'\n if (typeX !== typeY) {\n return naturalSort(typeX, typeY);\n }\n if (typeX === 'Complex') {\n return compareComplexNumbers(x, y);\n }\n if (typeX === 'Unit') {\n if (x.equalBase(y)) {\n return _compareNatural(x.value, y.value);\n }\n\n // compare by units\n return compareArrays(_compareNatural, x.formatUnits(), y.formatUnits());\n }\n if (typeX === 'boolean') {\n return compareBooleans(x, y);\n }\n if (typeX === 'string') {\n return naturalSort(x, y);\n }\n if (typeX === 'Object') {\n return compareObjects(_compareNatural, x, y);\n }\n if (typeX === 'null') {\n return 0;\n }\n if (typeX === 'undefined') {\n return 0;\n }\n\n // this should not occur...\n throw new TypeError('Unsupported type of value \"' + typeX + '\"');\n }\n\n /**\n * Compare mixed matrix/array types, by converting to same-shaped array.\n * This comparator is non-deterministic regarding input types.\n * @param {Array | SparseMatrix | DenseMatrix | *} x\n * @param {Array | SparseMatrix | DenseMatrix | *} y\n * @returns {number} Returns the comparison result: -1, 0, or 1\n */\n function compareMatricesAndArrays(compareNatural, x, y) {\n if (isSparseMatrix(x) && isSparseMatrix(y)) {\n return compareArrays(compareNatural, x.toJSON().values, y.toJSON().values);\n }\n if (isSparseMatrix(x)) {\n // note: convert to array is expensive\n return compareMatricesAndArrays(compareNatural, x.toArray(), y);\n }\n if (isSparseMatrix(y)) {\n // note: convert to array is expensive\n return compareMatricesAndArrays(compareNatural, x, y.toArray());\n }\n\n // convert DenseArray into Array\n if (isDenseMatrix(x)) {\n return compareMatricesAndArrays(compareNatural, x.toJSON().data, y);\n }\n if (isDenseMatrix(y)) {\n return compareMatricesAndArrays(compareNatural, x, y.toJSON().data);\n }\n\n // convert scalars to array\n if (!Array.isArray(x)) {\n return compareMatricesAndArrays(compareNatural, [x], y);\n }\n if (!Array.isArray(y)) {\n return compareMatricesAndArrays(compareNatural, x, [y]);\n }\n return compareArrays(compareNatural, x, y);\n }\n\n /**\n * Compare two Arrays\n *\n * - First, compares value by value\n * - Next, if all corresponding values are equal,\n * look at the length: longest array will be considered largest\n *\n * @param {Array} x\n * @param {Array} y\n * @returns {number} Returns the comparison result: -1, 0, or 1\n */\n function compareArrays(compareNatural, x, y) {\n // compare each value\n for (var i = 0, ii = Math.min(x.length, y.length); i < ii; i++) {\n var v = compareNatural(x[i], y[i]);\n if (v !== 0) {\n return v;\n }\n }\n\n // compare the size of the arrays\n if (x.length > y.length) {\n return 1;\n }\n if (x.length < y.length) {\n return -1;\n }\n\n // both Arrays have equal size and content\n return 0;\n }\n\n /**\n * Compare two objects\n *\n * - First, compare sorted property names\n * - Next, compare the property values\n *\n * @param {Object} x\n * @param {Object} y\n * @returns {number} Returns the comparison result: -1, 0, or 1\n */\n function compareObjects(compareNatural, x, y) {\n var keysX = Object.keys(x);\n var keysY = Object.keys(y);\n\n // compare keys\n keysX.sort(naturalSort);\n keysY.sort(naturalSort);\n var c = compareArrays(compareNatural, keysX, keysY);\n if (c !== 0) {\n return c;\n }\n\n // compare values\n for (var i = 0; i < keysX.length; i++) {\n var v = compareNatural(x[keysX[i]], y[keysY[i]]);\n if (v !== 0) {\n return v;\n }\n }\n return 0;\n }\n});\n\n/**\n * Compare two complex numbers, `x` and `y`:\n *\n * - First, compare the real values of `x` and `y`\n * - If equal, compare the imaginary values of `x` and `y`\n *\n * @params {Complex} x\n * @params {Complex} y\n * @returns {number} Returns the comparison result: -1, 0, or 1\n */\nfunction compareComplexNumbers(x, y) {\n if (x.re > y.re) {\n return 1;\n }\n if (x.re < y.re) {\n return -1;\n }\n if (x.im > y.im) {\n return 1;\n }\n if (x.im < y.im) {\n return -1;\n }\n return 0;\n}", "import { compareText as _compareText } from '../../utils/string.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nvar name = 'compareText';\nvar dependencies = ['typed', 'matrix', 'concat'];\n_compareText.signature = 'any, any';\nexport var createCompareText = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n concat\n } = _ref;\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Compare two strings lexically. Comparison is case sensitive.\n * Returns 1 when x > y, -1 when x < y, and 0 when x == y.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.compareText(x, y)\n *\n * Examples:\n *\n * math.compareText('B', 'A') // returns 1\n * math.compareText('2', '10') // returns 1\n * math.compare('2', '10') // returns -1\n * math.compareNatural('2', '10') // returns -1\n *\n * math.compareText('B', ['A', 'B', 'C']) // returns [1, 0, -1]\n *\n * See also:\n *\n * equal, equalText, compare, compareNatural\n *\n * @param {string | Array | DenseMatrix} x First string to compare\n * @param {string | Array | DenseMatrix} y Second string to compare\n * @return {number | Array | DenseMatrix} Returns the result of the comparison:\n * 1 when x > y, -1 when x < y, and 0 when x == y.\n */\n return typed(name, _compareText, matrixAlgorithmSuite({\n elop: _compareText,\n Ds: true\n }));\n});\nexport var createCompareTextNumber = /* #__PURE__ */factory(name, ['typed'], _ref2 => {\n var {\n typed\n } = _ref2;\n return typed(name, _compareText);\n});", "import { factory } from '../../utils/factory.js';\nimport { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo07xSSf } from '../../type/matrix/utils/matAlgo07xSSf.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nvar name = 'equal';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'DenseMatrix', 'concat'];\nexport var createEqual = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n DenseMatrix,\n concat\n } = _ref;\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo07xSSf = createMatAlgo07xSSf({\n typed,\n DenseMatrix\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Test whether two values are equal.\n *\n * The function tests whether the relative difference between x and y is\n * smaller than the configured relTol and absTol. The function cannot be used to\n * compare values smaller than approximately 2.22e-16.\n *\n * For matrices, the function is evaluated element wise.\n * In case of complex numbers, x.re must equal y.re, and x.im must equal y.im.\n *\n * Values `null` and `undefined` are compared strictly, thus `null` is only\n * equal to `null` and nothing else, and `undefined` is only equal to\n * `undefined` and nothing else. Strings are compared by their numerical value.\n *\n * Syntax:\n *\n * math.equal(x, y)\n *\n * Examples:\n *\n * math.equal(2 + 2, 3) // returns false\n * math.equal(2 + 2, 4) // returns true\n *\n * const a = math.unit('50 cm')\n * const b = math.unit('5 m')\n * math.equal(a, b) // returns true\n *\n * const c = [2, 5, 1]\n * const d = [2, 7, 1]\n *\n * math.equal(c, d) // returns [true, false, true]\n * math.deepEqual(c, d) // returns false\n *\n * math.equal(\"1000\", \"1e3\") // returns true\n * math.equal(0, null) // returns false\n *\n * See also:\n *\n * unequal, smaller, smallerEq, larger, largerEq, compare, deepEqual, equalText\n *\n * @param {number | BigNumber | bigint | boolean | Complex | Unit | string | Array | Matrix} x First value to compare\n * @param {number | BigNumber | bigint | boolean | Complex | Unit | string | Array | Matrix} y Second value to compare\n * @return {boolean | Array | Matrix} Returns true when the compared values are equal, else returns false\n */\n return typed(name, createEqualNumber({\n typed,\n equalScalar\n }), matrixAlgorithmSuite({\n elop: equalScalar,\n SS: matAlgo07xSSf,\n DS: matAlgo03xDSf,\n Ss: matAlgo12xSfs\n }));\n});\nexport var createEqualNumber = factory(name, ['typed', 'equalScalar'], _ref2 => {\n var {\n typed,\n equalScalar\n } = _ref2;\n return typed(name, {\n 'any, any': function any_any(x, y) {\n // strict equality for null and undefined?\n if (x === null) {\n return y === null;\n }\n if (y === null) {\n return x === null;\n }\n if (x === undefined) {\n return y === undefined;\n }\n if (y === undefined) {\n return x === undefined;\n }\n return equalScalar(x, y);\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'equalText';\nvar dependencies = ['typed', 'compareText', 'isZero'];\nexport var createEqualText = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n compareText,\n isZero\n } = _ref;\n /**\n * Check equality of two strings. Comparison is case sensitive.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.equalText(x, y)\n *\n * Examples:\n *\n * math.equalText('Hello', 'Hello') // returns true\n * math.equalText('a', 'A') // returns false\n * math.equal('2e3', '2000') // returns true\n * math.equalText('2e3', '2000') // returns false\n *\n * math.equalText('B', ['A', 'B', 'C']) // returns [false, true, false]\n *\n * See also:\n *\n * equal, compareText, compare, compareNatural\n *\n * @param {string | Array | DenseMatrix} x First string to compare\n * @param {string | Array | DenseMatrix} y Second string to compare\n * @return {number | Array | DenseMatrix} Returns true if the values are equal, and false if not.\n */\n return typed(name, {\n 'any, any': function any_any(x, y) {\n return isZero(compareText(x, y));\n }\n });\n});", "import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { nearlyEqual } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo07xSSf } from '../../type/matrix/utils/matAlgo07xSSf.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { createCompareUnits } from './compareUnits.js';\nvar name = 'smaller';\nvar dependencies = ['typed', 'config', 'matrix', 'DenseMatrix', 'concat'];\nexport var createSmaller = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n DenseMatrix,\n concat\n } = _ref;\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo07xSSf = createMatAlgo07xSSf({\n typed,\n DenseMatrix\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n var compareUnits = createCompareUnits({\n typed\n });\n\n /**\n * Test whether value x is smaller than y.\n *\n * The function returns true when x is smaller than y and the relative\n * difference between x and y is smaller than the configured relTol and absTol. The\n * function cannot be used to compare values smaller than approximately 2.22e-16.\n *\n * For matrices, the function is evaluated element wise.\n * Strings are compared by their numerical value.\n *\n * Syntax:\n *\n * math.smaller(x, y)\n *\n * Examples:\n *\n * math.smaller(2, 3) // returns true\n * math.smaller(5, 2 * 2) // returns false\n *\n * const a = math.unit('5 cm')\n * const b = math.unit('2 inch')\n * math.smaller(a, b) // returns true\n *\n * See also:\n *\n * equal, unequal, smallerEq, smaller, smallerEq, compare\n *\n * @param {number | BigNumber | bigint | Fraction | boolean | Unit | string | Array | Matrix} x First value to compare\n * @param {number | BigNumber | bigint | Fraction | boolean | Unit | string | Array | Matrix} y Second value to compare\n * @return {boolean | Array | Matrix} Returns true when the x is smaller than y, else returns false\n */\n return typed(name, createSmallerNumber({\n typed,\n config\n }), {\n 'boolean, boolean': (x, y) => x < y,\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n return x.lt(y) && !bigNearlyEqual(x, y, config.relTol, config.absTol);\n },\n 'bigint, bigint': (x, y) => x < y,\n 'Fraction, Fraction': (x, y) => x.compare(y) === -1,\n 'Complex, Complex': function Complex_Complex(x, y) {\n throw new TypeError('No ordering relation is defined for complex numbers');\n }\n }, compareUnits, matrixAlgorithmSuite({\n SS: matAlgo07xSSf,\n DS: matAlgo03xDSf,\n Ss: matAlgo12xSfs\n }));\n});\nexport var createSmallerNumber = /* #__PURE__ */factory(name, ['typed', 'config'], _ref2 => {\n var {\n typed,\n config\n } = _ref2;\n return typed(name, {\n 'number, number': function number_number(x, y) {\n return x < y && !nearlyEqual(x, y, config.relTol, config.absTol);\n }\n });\n});", "import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { nearlyEqual } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo07xSSf } from '../../type/matrix/utils/matAlgo07xSSf.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { createCompareUnits } from './compareUnits.js';\nvar name = 'smallerEq';\nvar dependencies = ['typed', 'config', 'matrix', 'DenseMatrix', 'concat'];\nexport var createSmallerEq = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n DenseMatrix,\n concat\n } = _ref;\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo07xSSf = createMatAlgo07xSSf({\n typed,\n DenseMatrix\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n var compareUnits = createCompareUnits({\n typed\n });\n\n /**\n * Test whether value x is smaller or equal to y.\n *\n * The function returns true when x is smaller than y or the relative\n * difference between x and y is smaller than the configured relTol and absTol. The\n * function cannot be used to compare values smaller than approximately 2.22e-16.\n *\n * For matrices, the function is evaluated element wise.\n * Strings are compared by their numerical value.\n *\n * Syntax:\n *\n * math.smallerEq(x, y)\n *\n * Examples:\n *\n * math.smaller(1 + 2, 3) // returns false\n * math.smallerEq(1 + 2, 3) // returns true\n *\n * See also:\n *\n * equal, unequal, smaller, larger, largerEq, compare\n *\n * @param {number | BigNumber | bigint | Fraction | boolean | Unit | string | Array | Matrix} x First value to compare\n * @param {number | BigNumber | bigint | Fraction | boolean | Unit | string | Array | Matrix} y Second value to compare\n * @return {boolean | Array | Matrix} Returns true when the x is smaller than y, else returns false\n */\n return typed(name, createSmallerEqNumber({\n typed,\n config\n }), {\n 'boolean, boolean': (x, y) => x <= y,\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n return x.lte(y) || bigNearlyEqual(x, y, config.relTol, config.absTol);\n },\n 'bigint, bigint': (x, y) => x <= y,\n 'Fraction, Fraction': (x, y) => x.compare(y) !== 1,\n 'Complex, Complex': function Complex_Complex() {\n throw new TypeError('No ordering relation is defined for complex numbers');\n }\n }, compareUnits, matrixAlgorithmSuite({\n SS: matAlgo07xSSf,\n DS: matAlgo03xDSf,\n Ss: matAlgo12xSfs\n }));\n});\nexport var createSmallerEqNumber = /* #__PURE__ */factory(name, ['typed', 'config'], _ref2 => {\n var {\n typed,\n config\n } = _ref2;\n return typed(name, {\n 'number, number': function number_number(x, y) {\n return x <= y || nearlyEqual(x, y, config.relTol, config.absTol);\n }\n });\n});", "import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { nearlyEqual } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo07xSSf } from '../../type/matrix/utils/matAlgo07xSSf.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { createCompareUnits } from './compareUnits.js';\nvar name = 'larger';\nvar dependencies = ['typed', 'config', 'matrix', 'DenseMatrix', 'concat'];\nexport var createLarger = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n DenseMatrix,\n concat\n } = _ref;\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo07xSSf = createMatAlgo07xSSf({\n typed,\n DenseMatrix\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n var compareUnits = createCompareUnits({\n typed\n });\n\n /**\n * Test whether value x is larger than y.\n *\n * The function returns true when x is larger than y and the relative\n * difference between x and y is larger than the configured relTol and absTol. The\n * function cannot be used to compare values smaller than approximately 2.22e-16.\n *\n * For matrices, the function is evaluated element wise.\n * Strings are compared by their numerical value.\n *\n * Syntax:\n *\n * math.larger(x, y)\n *\n * Examples:\n *\n * math.larger(2, 3) // returns false\n * math.larger(5, 2 + 2) // returns true\n *\n * const a = math.unit('5 cm')\n * const b = math.unit('2 inch')\n * math.larger(a, b) // returns false\n *\n * See also:\n *\n * equal, unequal, smaller, smallerEq, largerEq, compare\n *\n * @param {number | BigNumber | bigint | Fraction | boolean | Unit | string | Array | Matrix} x First value to compare\n * @param {number | BigNumber | bigint | Fraction | boolean | Unit | string | Array | Matrix} y Second value to compare\n * @return {boolean | Array | Matrix} Returns true when the x is larger than y, else returns false\n */\n return typed(name, createLargerNumber({\n typed,\n config\n }), {\n 'boolean, boolean': (x, y) => x > y,\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n return x.gt(y) && !bigNearlyEqual(x, y, config.relTol, config.absTol);\n },\n 'bigint, bigint': (x, y) => x > y,\n 'Fraction, Fraction': (x, y) => x.compare(y) === 1,\n 'Complex, Complex': function Complex_Complex() {\n throw new TypeError('No ordering relation is defined for complex numbers');\n }\n }, compareUnits, matrixAlgorithmSuite({\n SS: matAlgo07xSSf,\n DS: matAlgo03xDSf,\n Ss: matAlgo12xSfs\n }));\n});\nexport var createLargerNumber = /* #__PURE__ */factory(name, ['typed', 'config'], _ref2 => {\n var {\n typed,\n config\n } = _ref2;\n return typed(name, {\n 'number, number': function number_number(x, y) {\n return x > y && !nearlyEqual(x, y, config.relTol, config.absTol);\n }\n });\n});", "import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { nearlyEqual } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo07xSSf } from '../../type/matrix/utils/matAlgo07xSSf.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { createCompareUnits } from './compareUnits.js';\nvar name = 'largerEq';\nvar dependencies = ['typed', 'config', 'matrix', 'DenseMatrix', 'concat'];\nexport var createLargerEq = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n DenseMatrix,\n concat\n } = _ref;\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo07xSSf = createMatAlgo07xSSf({\n typed,\n DenseMatrix\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n var compareUnits = createCompareUnits({\n typed\n });\n\n /**\n * Test whether value x is larger or equal to y.\n *\n * The function returns true when x is larger than y or the relative\n * difference between x and y is smaller than the configured relTol and absTol. The\n * function cannot be used to compare values smaller than approximately 2.22e-16.\n *\n * For matrices, the function is evaluated element wise.\n * Strings are compared by their numerical value.\n *\n * Syntax:\n *\n * math.largerEq(x, y)\n *\n * Examples:\n *\n * math.larger(2, 1 + 1) // returns false\n * math.largerEq(2, 1 + 1) // returns true\n *\n * See also:\n *\n * equal, unequal, smaller, smallerEq, larger, compare\n *\n * @param {number | BigNumber | bigint | Fraction | boolean | Unit | string | Array | Matrix} x First value to compare\n * @param {number | BigNumber | bigint | Fraction | boolean | Unit | string | Array | Matrix} y Second value to compare\n * @return {boolean | Array | Matrix} Returns true when the x is larger or equal to y, else returns false\n */\n return typed(name, createLargerEqNumber({\n typed,\n config\n }), {\n 'boolean, boolean': (x, y) => x >= y,\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n return x.gte(y) || bigNearlyEqual(x, y, config.relTol, config.absTol);\n },\n 'bigint, bigint': function bigint_bigint(x, y) {\n return x >= y;\n },\n 'Fraction, Fraction': (x, y) => x.compare(y) !== -1,\n 'Complex, Complex': function Complex_Complex() {\n throw new TypeError('No ordering relation is defined for complex numbers');\n }\n }, compareUnits, matrixAlgorithmSuite({\n SS: matAlgo07xSSf,\n DS: matAlgo03xDSf,\n Ss: matAlgo12xSfs\n }));\n});\nexport var createLargerEqNumber = /* #__PURE__ */factory(name, ['typed', 'config'], _ref2 => {\n var {\n typed,\n config\n } = _ref2;\n return typed(name, {\n 'number, number': function number_number(x, y) {\n return x >= y || nearlyEqual(x, y, config.relTol, config.absTol);\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'deepEqual';\nvar dependencies = ['typed', 'equal'];\nexport var createDeepEqual = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equal\n } = _ref;\n /**\n * Test element wise whether two matrices are equal.\n * The function accepts both matrices and scalar values.\n *\n * Strings are compared by their numerical value.\n *\n * Syntax:\n *\n * math.deepEqual(x, y)\n *\n * Examples:\n *\n * math.deepEqual(2, 4) // returns false\n *\n * a = [2, 5, 1]\n * b = [2, 7, 1]\n *\n * math.deepEqual(a, b) // returns false\n * math.equal(a, b) // returns [true, false, true]\n *\n * See also:\n *\n * equal, unequal\n *\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x First matrix to compare\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} y Second matrix to compare\n * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix}\n * Returns true when the input matrices have the same size and each of their elements is equal.\n */\n return typed(name, {\n 'any, any': function any_any(x, y) {\n return _deepEqual(x.valueOf(), y.valueOf());\n }\n });\n\n /**\n * Test whether two arrays have the same size and all elements are equal\n * @param {Array | *} x\n * @param {Array | *} y\n * @return {boolean} Returns true if both arrays are deep equal\n */\n function _deepEqual(x, y) {\n if (Array.isArray(x)) {\n if (Array.isArray(y)) {\n var len = x.length;\n if (len !== y.length) {\n return false;\n }\n for (var i = 0; i < len; i++) {\n if (!_deepEqual(x[i], y[i])) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n } else {\n if (Array.isArray(y)) {\n return false;\n } else {\n return equal(x, y);\n }\n }\n }\n});", "import { factory } from '../../utils/factory.js';\nimport { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo07xSSf } from '../../type/matrix/utils/matAlgo07xSSf.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nvar name = 'unequal';\nvar dependencies = ['typed', 'config', 'equalScalar', 'matrix', 'DenseMatrix', 'concat'];\nexport var createUnequal = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n equalScalar,\n matrix,\n DenseMatrix,\n concat\n } = _ref;\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo07xSSf = createMatAlgo07xSSf({\n typed,\n DenseMatrix\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Test whether two values are unequal.\n *\n * The function tests whether the relative difference between x and y is\n * larger than the configured relTol and absTol. The function cannot be used to compare\n * values smaller than approximately 2.22e-16.\n *\n * For matrices, the function is evaluated element wise.\n * In case of complex numbers, x.re must unequal y.re, or x.im must unequal y.im.\n * Strings are compared by their numerical value.\n *\n * Values `null` and `undefined` are compared strictly, thus `null` is unequal\n * with everything except `null`, and `undefined` is unequal with everything\n * except `undefined`.\n *\n * Syntax:\n *\n * math.unequal(x, y)\n *\n * Examples:\n *\n * math.unequal(2 + 2, 3) // returns true\n * math.unequal(2 + 2, 4) // returns false\n *\n * const a = math.unit('50 cm')\n * const b = math.unit('5 m')\n * math.unequal(a, b) // returns false\n *\n * const c = [2, 5, 1]\n * const d = [2, 7, 1]\n *\n * math.unequal(c, d) // returns [false, true, false]\n * math.deepEqual(c, d) // returns false\n *\n * math.unequal(0, null) // returns true\n * See also:\n *\n * equal, deepEqual, smaller, smallerEq, larger, largerEq, compare\n *\n * @param {number | BigNumber | Fraction | boolean | Complex | Unit | string | Array | Matrix | undefined} x First value to compare\n * @param {number | BigNumber | Fraction | boolean | Complex | Unit | string | Array | Matrix | undefined} y Second value to compare\n * @return {boolean | Array | Matrix} Returns true when the compared values are unequal, else returns false\n */\n return typed(name, createUnequalNumber({\n typed,\n equalScalar\n }), matrixAlgorithmSuite({\n elop: _unequal,\n SS: matAlgo07xSSf,\n DS: matAlgo03xDSf,\n Ss: matAlgo12xSfs\n }));\n function _unequal(x, y) {\n return !equalScalar(x, y);\n }\n});\nexport var createUnequalNumber = factory(name, ['typed', 'equalScalar'], _ref2 => {\n var {\n typed,\n equalScalar\n } = _ref2;\n return typed(name, {\n 'any, any': function any_any(x, y) {\n // strict equality for null and undefined?\n if (x === null) {\n return y !== null;\n }\n if (y === null) {\n return x !== null;\n }\n if (x === undefined) {\n return y !== undefined;\n }\n if (y === undefined) {\n return x !== undefined;\n }\n return !equalScalar(x, y);\n }\n });\n});", "import { isMatrix } from '../../utils/is.js';\nimport { isInteger } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'partitionSelect';\nvar dependencies = ['typed', 'isNumeric', 'isNaN', 'compare'];\nexport var createPartitionSelect = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n isNumeric,\n isNaN,\n compare\n } = _ref;\n var asc = compare;\n var desc = (a, b) => -compare(a, b);\n\n /**\n * Partition-based selection of an array or 1D matrix.\n * Will find the kth smallest value, and mutates the input array.\n * Uses Quickselect.\n *\n * Syntax:\n *\n * math.partitionSelect(x, k)\n * math.partitionSelect(x, k, compare)\n *\n * Examples:\n *\n * math.partitionSelect([5, 10, 1], 2) // returns 10\n * math.partitionSelect(['C', 'B', 'A', 'D'], 1, math.compareText) // returns 'B'\n *\n * function sortByLength (a, b) {\n * return a.length - b.length\n * }\n * math.partitionSelect(['Langdon', 'Tom', 'Sara'], 2, sortByLength) // returns 'Langdon'\n *\n * // the input array is mutated\n * arr = [5, 2, 1]\n * math.partitionSelect(arr, 0) // returns 1, arr is now: [1, 2, 5]\n * math.partitionSelect(arr, 1, 'desc') // returns 2, arr is now: [5, 2, 1]\n *\n * See also:\n *\n * sort\n *\n * @param {Matrix | Array} x A one dimensional matrix or array to sort\n * @param {Number} k The kth smallest value to be retrieved zero-based index\n * @param {Function | 'asc' | 'desc'} [compare='asc']\n * An optional comparator function. The function is called as\n * `compare(a, b)`, and must return 1 when a > b, -1 when a < b,\n * and 0 when a == b.\n * @return {*} Returns the kth lowest value.\n */\n return typed(name, {\n 'Array | Matrix, number': function Array__Matrix_number(x, k) {\n return _partitionSelect(x, k, asc);\n },\n 'Array | Matrix, number, string': function Array__Matrix_number_string(x, k, compare) {\n if (compare === 'asc') {\n return _partitionSelect(x, k, asc);\n } else if (compare === 'desc') {\n return _partitionSelect(x, k, desc);\n } else {\n throw new Error('Compare string must be \"asc\" or \"desc\"');\n }\n },\n 'Array | Matrix, number, function': _partitionSelect\n });\n function _partitionSelect(x, k, compare) {\n if (!isInteger(k) || k < 0) {\n throw new Error('k must be a non-negative integer');\n }\n if (isMatrix(x)) {\n var size = x.size();\n if (size.length > 1) {\n throw new Error('Only one dimensional matrices supported');\n }\n return quickSelect(x.valueOf(), k, compare);\n }\n if (Array.isArray(x)) {\n return quickSelect(x, k, compare);\n }\n }\n\n /**\n * Quickselect algorithm.\n * Code adapted from:\n * https://blog.teamleadnet.com/2012/07/quick-select-algorithm-find-kth-element.html\n *\n * @param {Array} arr\n * @param {Number} k\n * @param {Function} compare\n * @private\n */\n function quickSelect(arr, k, compare) {\n if (k >= arr.length) {\n throw new Error('k out of bounds');\n }\n\n // check for NaN values since these can cause an infinite while loop\n for (var i = 0; i < arr.length; i++) {\n if (isNumeric(arr[i]) && isNaN(arr[i])) {\n return arr[i]; // return NaN\n }\n }\n var from = 0;\n var to = arr.length - 1;\n\n // if from == to we reached the kth element\n while (from < to) {\n var r = from;\n var w = to;\n var pivot = arr[Math.floor(Math.random() * (to - from + 1)) + from];\n\n // stop if the reader and writer meets\n while (r < w) {\n // arr[r] >= pivot\n if (compare(arr[r], pivot) >= 0) {\n // put the large values at the end\n var tmp = arr[w];\n arr[w] = arr[r];\n arr[r] = tmp;\n --w;\n } else {\n // the value is smaller than the pivot, skip\n ++r;\n }\n }\n\n // if we stepped up (r++) we need to step one down (arr[r] > pivot)\n if (compare(arr[r], pivot) > 0) {\n --r;\n }\n\n // the r pointer is on the end of the first k elements\n if (k <= r) {\n to = r;\n } else {\n from = r + 1;\n }\n }\n return arr[k];\n }\n});", "import { arraySize as size } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'sort';\nvar dependencies = ['typed', 'matrix', 'compare', 'compareNatural'];\nexport var createSort = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n compare,\n compareNatural\n } = _ref;\n var compareAsc = compare;\n var compareDesc = (a, b) => -compare(a, b);\n\n /**\n * Sort the items in a matrix.\n *\n * Syntax:\n *\n * math.sort(x)\n * math.sort(x, compare)\n *\n * Examples:\n *\n * math.sort([5, 10, 1]) // returns [1, 5, 10]\n * math.sort(['C', 'B', 'A', 'D'], math.compareNatural)\n * // returns ['A', 'B', 'C', 'D']\n *\n * function sortByLength (a, b) {\n * return a.length - b.length\n * }\n * math.sort(['Langdon', 'Tom', 'Sara'], sortByLength)\n * // returns ['Tom', 'Sara', 'Langdon']\n *\n * See also:\n *\n * filter, forEach, map, compare, compareNatural\n *\n * @param {Matrix | Array} x A one dimensional matrix or array to sort\n * @param {Function | 'asc' | 'desc' | 'natural'} [compare='asc']\n * An optional _comparator function or name. The function is called as\n * `compare(a, b)`, and must return 1 when a > b, -1 when a < b,\n * and 0 when a == b.\n * @return {Matrix | Array} Returns the sorted matrix.\n */\n return typed(name, {\n Array: function Array(x) {\n _arrayIsVector(x);\n return x.sort(compareAsc);\n },\n Matrix: function Matrix(x) {\n _matrixIsVector(x);\n return matrix(x.toArray().sort(compareAsc), x.storage());\n },\n 'Array, function': function Array_function(x, _comparator) {\n _arrayIsVector(x);\n return x.sort(_comparator);\n },\n 'Matrix, function': function Matrix_function(x, _comparator) {\n _matrixIsVector(x);\n return matrix(x.toArray().sort(_comparator), x.storage());\n },\n 'Array, string': function Array_string(x, order) {\n _arrayIsVector(x);\n return x.sort(_comparator(order));\n },\n 'Matrix, string': function Matrix_string(x, order) {\n _matrixIsVector(x);\n return matrix(x.toArray().sort(_comparator(order)), x.storage());\n }\n });\n\n /**\n * Get the comparator for given order ('asc', 'desc', 'natural')\n * @param {'asc' | 'desc' | 'natural'} order\n * @return {Function} Returns a _comparator function\n */\n function _comparator(order) {\n if (order === 'asc') {\n return compareAsc;\n } else if (order === 'desc') {\n return compareDesc;\n } else if (order === 'natural') {\n return compareNatural;\n } else {\n throw new Error('String \"asc\", \"desc\", or \"natural\" expected');\n }\n }\n\n /**\n * Validate whether an array is one dimensional\n * Throws an error when this is not the case\n * @param {Array} array\n * @private\n */\n function _arrayIsVector(array) {\n if (size(array).length !== 1) {\n throw new Error('One dimensional array expected');\n }\n }\n\n /**\n * Validate whether a matrix is one dimensional\n * Throws an error when this is not the case\n * @param {Matrix} matrix\n * @private\n */\n function _matrixIsVector(matrix) {\n if (matrix.size().length !== 1) {\n throw new Error('One dimensional matrix expected');\n }\n }\n});", "import { deepForEach, reduce, containsCollections } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { safeNumberType } from '../../utils/number.js';\nimport { improveErrorMessage } from './utils/improveErrorMessage.js';\nvar name = 'max';\nvar dependencies = ['typed', 'config', 'numeric', 'larger'];\nexport var createMax = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n numeric,\n larger\n } = _ref;\n /**\n * Compute the maximum value of a matrix or a list with values.\n * In case of a multidimensional array, the maximum of the flattened array\n * will be calculated. When `dim` is provided, the maximum over the selected\n * dimension will be calculated. Parameter `dim` is zero-based.\n *\n * Syntax:\n *\n * math.max(a, b, c, ...)\n * math.max(A)\n * math.max(A, dimension)\n *\n * Examples:\n *\n * math.max(2, 1, 4, 3) // returns 4\n * math.max([2, 1, 4, 3]) // returns 4\n *\n * // maximum over a specified dimension (zero-based)\n * math.max([[2, 5], [4, 3], [1, 7]], 0) // returns [4, 7]\n * math.max([[2, 5], [4, 3], [1, 7]], 1) // returns [5, 4, 7]\n *\n * math.max(2.7, 7.1, -4.5, 2.0, 4.1) // returns 7.1\n * math.min(2.7, 7.1, -4.5, 2.0, 4.1) // returns -4.5\n *\n * See also:\n *\n * mean, median, min, prod, std, sum, variance\n *\n * @param {... *} args A single matrix or or multiple scalar values\n * @return {*} The maximum value\n */\n return typed(name, {\n // max([a, b, c, d, ...])\n 'Array | Matrix': _max,\n // max([a, b, c, d, ...], dim)\n 'Array | Matrix, number | BigNumber': function Array__Matrix_number__BigNumber(array, dim) {\n return reduce(array, dim.valueOf(), _largest);\n },\n // max(a, b, c, d, ...)\n '...': function _(args) {\n if (containsCollections(args)) {\n throw new TypeError('Scalar values expected in function max');\n }\n return _max(args);\n }\n });\n\n /**\n * Return the largest of two values\n * @param {*} x\n * @param {*} y\n * @returns {*} Returns x when x is largest, or y when y is largest\n * @private\n */\n function _largest(x, y) {\n try {\n return larger(x, y) ? x : y;\n } catch (err) {\n throw improveErrorMessage(err, 'max', y);\n }\n }\n\n /**\n * Recursively calculate the maximum value in an n-dimensional array\n * @param {Array} array\n * @return {number} max\n * @private\n */\n function _max(array) {\n var res;\n deepForEach(array, function (value) {\n try {\n if (isNaN(value) && typeof value === 'number') {\n res = NaN;\n } else if (res === undefined || larger(value, res)) {\n res = value;\n }\n } catch (err) {\n throw improveErrorMessage(err, 'max', value);\n }\n });\n if (res === undefined) {\n throw new Error('Cannot calculate max of an empty array');\n }\n\n // make sure returning numeric value: parse a string into a numeric value\n if (typeof res === 'string') {\n res = numeric(res, safeNumberType(res, config));\n }\n return res;\n }\n});", "import { containsCollections, deepForEach, reduce } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { safeNumberType } from '../../utils/number.js';\nimport { improveErrorMessage } from './utils/improveErrorMessage.js';\nvar name = 'min';\nvar dependencies = ['typed', 'config', 'numeric', 'smaller'];\nexport var createMin = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n numeric,\n smaller\n } = _ref;\n /**\n * Compute the minimum value of a matrix or a list of values.\n * In case of a multidimensional array, the minimum of the flattened array\n * will be calculated. When `dim` is provided, the minimum over the selected\n * dimension will be calculated. Parameter `dim` is zero-based.\n *\n * Syntax:\n *\n * math.min(a, b, c, ...)\n * math.min(A)\n * math.min(A, dimension)\n *\n * Examples:\n *\n * math.min(2, 1, 4, 3) // returns 1\n * math.min([2, 1, 4, 3]) // returns 1\n *\n * // minimum over a specified dimension (zero-based)\n * math.min([[2, 5], [4, 3], [1, 7]], 0) // returns [1, 3]\n * math.min([[2, 5], [4, 3], [1, 7]], 1) // returns [2, 3, 1]\n *\n * math.max(2.7, 7.1, -4.5, 2.0, 4.1) // returns 7.1\n * math.min(2.7, 7.1, -4.5, 2.0, 4.1) // returns -4.5\n *\n * See also:\n *\n * mean, median, max, prod, std, sum, variance\n *\n * @param {... *} args A single matrix or or multiple scalar values\n * @return {*} The minimum value\n */\n return typed(name, {\n // min([a, b, c, d, ...])\n 'Array | Matrix': _min,\n // min([a, b, c, d, ...], dim)\n 'Array | Matrix, number | BigNumber': function Array__Matrix_number__BigNumber(array, dim) {\n return reduce(array, dim.valueOf(), _smallest);\n },\n // min(a, b, c, d, ...)\n '...': function _(args) {\n if (containsCollections(args)) {\n throw new TypeError('Scalar values expected in function min');\n }\n return _min(args);\n }\n });\n\n /**\n * Return the smallest of two values\n * @param {*} x\n * @param {*} y\n * @returns {*} Returns x when x is smallest, or y when y is smallest\n * @private\n */\n function _smallest(x, y) {\n try {\n return smaller(x, y) ? x : y;\n } catch (err) {\n throw improveErrorMessage(err, 'min', y);\n }\n }\n\n /**\n * Recursively calculate the minimum value in an n-dimensional array\n * @param {Array} array\n * @return {number} min\n * @private\n */\n function _min(array) {\n var min;\n deepForEach(array, function (value) {\n try {\n if (isNaN(value) && typeof value === 'number') {\n min = NaN;\n } else if (min === undefined || smaller(value, min)) {\n min = value;\n }\n } catch (err) {\n throw improveErrorMessage(err, 'min', value);\n }\n });\n if (min === undefined) {\n throw new Error('Cannot calculate min of an empty array');\n }\n\n // make sure returning numeric value: parse a string into a numeric value\n if (typeof min === 'string') {\n min = numeric(min, safeNumberType(min, config));\n }\n return min;\n }\n});", "import { isArray, isMatrix, isString, typeOf } from '../../utils/is.js';\nimport { clone } from '../../utils/object.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'ImmutableDenseMatrix';\nvar dependencies = ['smaller', 'DenseMatrix'];\nexport var createImmutableDenseMatrixClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n smaller,\n DenseMatrix\n } = _ref;\n function ImmutableDenseMatrix(data, datatype) {\n if (!(this instanceof ImmutableDenseMatrix)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n if (datatype && !isString(datatype)) {\n throw new Error('Invalid datatype: ' + datatype);\n }\n if (isMatrix(data) || isArray(data)) {\n // use DenseMatrix implementation\n var matrix = new DenseMatrix(data, datatype);\n // internal structures\n this._data = matrix._data;\n this._size = matrix._size;\n this._datatype = matrix._datatype;\n this._min = null;\n this._max = null;\n } else if (data && isArray(data.data) && isArray(data.size)) {\n // initialize fields from JSON representation\n this._data = data.data;\n this._size = data.size;\n this._datatype = data.datatype;\n this._min = typeof data.min !== 'undefined' ? data.min : null;\n this._max = typeof data.max !== 'undefined' ? data.max : null;\n } else if (data) {\n // unsupported type\n throw new TypeError('Unsupported type of data (' + typeOf(data) + ')');\n } else {\n // nothing provided\n this._data = [];\n this._size = [0];\n this._datatype = datatype;\n this._min = null;\n this._max = null;\n }\n }\n ImmutableDenseMatrix.prototype = new DenseMatrix();\n\n /**\n * Attach type information\n */\n ImmutableDenseMatrix.prototype.type = 'ImmutableDenseMatrix';\n ImmutableDenseMatrix.prototype.isImmutableDenseMatrix = true;\n\n /**\n * Get a subset of the matrix, or replace a subset of the matrix.\n *\n * Usage:\n * const subset = matrix.subset(index) // retrieve subset\n * const value = matrix.subset(index, replacement) // replace subset\n *\n * @param {Index} index\n * @param {Array | ImmutableDenseMatrix | *} [replacement]\n * @param {*} [defaultValue=0] Default value, filled in on new entries when\n * the matrix is resized. If not provided,\n * new matrix elements will be filled with zeros.\n */\n ImmutableDenseMatrix.prototype.subset = function (index) {\n switch (arguments.length) {\n case 1:\n {\n // use base implementation\n var m = DenseMatrix.prototype.subset.call(this, index);\n // check result is a matrix\n if (isMatrix(m)) {\n // return immutable matrix\n return new ImmutableDenseMatrix({\n data: m._data,\n size: m._size,\n datatype: m._datatype\n });\n }\n return m;\n }\n // intentional fall through\n case 2:\n case 3:\n throw new Error('Cannot invoke set subset on an Immutable Matrix instance');\n default:\n throw new SyntaxError('Wrong number of arguments');\n }\n };\n\n /**\n * Replace a single element in the matrix.\n * @param {Number[]} index Zero-based index\n * @param {*} value\n * @param {*} [defaultValue] Default value, filled in on new entries when\n * the matrix is resized. If not provided,\n * new matrix elements will be left undefined.\n * @return {ImmutableDenseMatrix} self\n */\n ImmutableDenseMatrix.prototype.set = function () {\n throw new Error('Cannot invoke set on an Immutable Matrix instance');\n };\n\n /**\n * Resize the matrix to the given size. Returns a copy of the matrix when\n * `copy=true`, otherwise return the matrix itself (resize in place).\n *\n * @param {Number[]} size The new size the matrix should have.\n * @param {*} [defaultValue=0] Default value, filled in on new entries.\n * If not provided, the matrix elements will\n * be filled with zeros.\n * @param {boolean} [copy] Return a resized copy of the matrix\n *\n * @return {Matrix} The resized matrix\n */\n ImmutableDenseMatrix.prototype.resize = function () {\n throw new Error('Cannot invoke resize on an Immutable Matrix instance');\n };\n\n /**\n * Disallows reshaping in favor of immutability.\n *\n * @throws {Error} Operation not allowed\n */\n ImmutableDenseMatrix.prototype.reshape = function () {\n throw new Error('Cannot invoke reshape on an Immutable Matrix instance');\n };\n\n /**\n * Create a clone of the matrix\n * @return {ImmutableDenseMatrix} clone\n */\n ImmutableDenseMatrix.prototype.clone = function () {\n return new ImmutableDenseMatrix({\n data: clone(this._data),\n size: clone(this._size),\n datatype: this._datatype\n });\n };\n\n /**\n * Get a JSON representation of the matrix\n * @returns {Object}\n */\n ImmutableDenseMatrix.prototype.toJSON = function () {\n return {\n mathjs: 'ImmutableDenseMatrix',\n data: this._data,\n size: this._size,\n datatype: this._datatype\n };\n };\n\n /**\n * Generate a matrix from a JSON object\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"ImmutableDenseMatrix\", data: [], size: []}`,\n * where mathjs is optional\n * @returns {ImmutableDenseMatrix}\n */\n ImmutableDenseMatrix.fromJSON = function (json) {\n return new ImmutableDenseMatrix(json);\n };\n\n /**\n * Swap rows i and j in Matrix.\n *\n * @param {Number} i Matrix row index 1\n * @param {Number} j Matrix row index 2\n *\n * @return {Matrix} The matrix reference\n */\n ImmutableDenseMatrix.prototype.swapRows = function () {\n throw new Error('Cannot invoke swapRows on an Immutable Matrix instance');\n };\n\n /**\n * Calculate the minimum value in the set\n * @return {Number | undefined} min\n */\n ImmutableDenseMatrix.prototype.min = function () {\n // check min has been calculated before\n if (this._min === null) {\n // minimum\n var m = null;\n // compute min\n this.forEach(function (v) {\n if (m === null || smaller(v, m)) {\n m = v;\n }\n });\n this._min = m !== null ? m : undefined;\n }\n return this._min;\n };\n\n /**\n * Calculate the maximum value in the set\n * @return {Number | undefined} max\n */\n ImmutableDenseMatrix.prototype.max = function () {\n // check max has been calculated before\n if (this._max === null) {\n // maximum\n var m = null;\n // compute max\n this.forEach(function (v) {\n if (m === null || smaller(m, v)) {\n m = v;\n }\n });\n this._max = m !== null ? m : undefined;\n }\n return this._max;\n };\n return ImmutableDenseMatrix;\n}, {\n isClass: true\n});", "import { isArray, isMatrix, isRange } from '../../utils/is.js';\nimport { clone } from '../../utils/object.js';\nimport { isInteger } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'Index';\nvar dependencies = ['ImmutableDenseMatrix', 'getMatrixDataType'];\nexport var createIndexClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n ImmutableDenseMatrix,\n getMatrixDataType\n } = _ref;\n /**\n * Create an index. An Index can store ranges and sets for multiple dimensions.\n * Matrix.get, Matrix.set, and math.subset accept an Index as input.\n *\n * Usage:\n * const index = new Index(range1, range2, matrix1, array1, ...)\n *\n * Where each parameter can be any of:\n * A number\n * A string (containing a name of an object property)\n * An instance of Range\n * An Array with the Set values\n * An Array with Booleans\n * A Matrix with the Set values\n * A Matrix with Booleans\n *\n * The parameters start, end, and step must be integer numbers.\n *\n * @class Index\n * @Constructor Index\n * @param {...*} ranges\n */\n function Index(ranges) {\n if (!(this instanceof Index)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n this._dimensions = [];\n this._sourceSize = [];\n this._isScalar = true;\n for (var i = 0, ii = arguments.length; i < ii; i++) {\n var arg = arguments[i];\n var argIsArray = isArray(arg);\n var argIsMatrix = isMatrix(arg);\n var sourceSize = null;\n if (isRange(arg)) {\n this._dimensions.push(arg);\n this._isScalar = false;\n } else if (argIsArray || argIsMatrix) {\n // create matrix\n var m = void 0;\n if (getMatrixDataType(arg) === 'boolean') {\n if (argIsArray) m = _createImmutableMatrix(_booleansArrayToNumbersForIndex(arg).valueOf());\n if (argIsMatrix) m = _createImmutableMatrix(_booleansArrayToNumbersForIndex(arg._data).valueOf());\n sourceSize = arg.valueOf().length;\n } else {\n m = _createImmutableMatrix(arg.valueOf());\n }\n this._dimensions.push(m);\n // size\n var size = m.size();\n // scalar\n if (size.length !== 1 || size[0] !== 1 || sourceSize !== null) {\n this._isScalar = false;\n }\n } else if (typeof arg === 'number') {\n this._dimensions.push(_createImmutableMatrix([arg]));\n } else if (typeof arg === 'string') {\n // object property (arguments.count should be 1)\n this._dimensions.push(arg);\n } else {\n throw new TypeError('Dimension must be an Array, Matrix, number, string, or Range');\n }\n this._sourceSize.push(sourceSize);\n // TODO: implement support for wildcard '*'\n }\n }\n\n /**\n * Attach type information\n */\n Index.prototype.type = 'Index';\n Index.prototype.isIndex = true;\n function _createImmutableMatrix(arg) {\n // loop array elements\n for (var i = 0, l = arg.length; i < l; i++) {\n if (typeof arg[i] !== 'number' || !isInteger(arg[i])) {\n throw new TypeError('Index parameters must be positive integer numbers');\n }\n }\n // create matrix\n return new ImmutableDenseMatrix(arg);\n }\n\n /**\n * Create a clone of the index\n * @memberof Index\n * @return {Index} clone\n */\n Index.prototype.clone = function () {\n var index = new Index();\n index._dimensions = clone(this._dimensions);\n index._isScalar = this._isScalar;\n index._sourceSize = this._sourceSize;\n return index;\n };\n\n /**\n * Create an index from an array with ranges/numbers\n * @memberof Index\n * @param {Array.} ranges\n * @return {Index} index\n * @private\n */\n Index.create = function (ranges) {\n var index = new Index();\n Index.apply(index, ranges);\n return index;\n };\n\n /**\n * Retrieve the size of the index, the number of elements for each dimension.\n * @memberof Index\n * @returns {number[]} size\n */\n Index.prototype.size = function () {\n var size = [];\n for (var i = 0, ii = this._dimensions.length; i < ii; i++) {\n var d = this._dimensions[i];\n size[i] = typeof d === 'string' ? 1 : d.size()[0];\n }\n return size;\n };\n\n /**\n * Get the maximum value for each of the indexes ranges.\n * @memberof Index\n * @returns {number[]} max\n */\n Index.prototype.max = function () {\n var values = [];\n for (var i = 0, ii = this._dimensions.length; i < ii; i++) {\n var range = this._dimensions[i];\n values[i] = typeof range === 'string' ? range : range.max();\n }\n return values;\n };\n\n /**\n * Get the minimum value for each of the indexes ranges.\n * @memberof Index\n * @returns {number[]} min\n */\n Index.prototype.min = function () {\n var values = [];\n for (var i = 0, ii = this._dimensions.length; i < ii; i++) {\n var range = this._dimensions[i];\n values[i] = typeof range === 'string' ? range : range.min();\n }\n return values;\n };\n\n /**\n * Loop over each of the ranges of the index\n * @memberof Index\n * @param {Function} callback Called for each range with a Range as first\n * argument, the dimension as second, and the\n * index object as third.\n */\n Index.prototype.forEach = function (callback) {\n for (var i = 0, ii = this._dimensions.length; i < ii; i++) {\n callback(this._dimensions[i], i, this);\n }\n };\n\n /**\n * Retrieve the dimension for the given index\n * @memberof Index\n * @param {Number} dim Number of the dimension\n * @returns {Range | null} range\n */\n Index.prototype.dimension = function (dim) {\n if (typeof dim !== 'number') {\n return null;\n }\n return this._dimensions[dim] || null;\n };\n\n /**\n * Test whether this index contains an object property\n * @returns {boolean} Returns true if the index is an object property\n */\n Index.prototype.isObjectProperty = function () {\n return this._dimensions.length === 1 && typeof this._dimensions[0] === 'string';\n };\n\n /**\n * Returns the object property name when the Index holds a single object property,\n * else returns null\n * @returns {string | null}\n */\n Index.prototype.getObjectProperty = function () {\n return this.isObjectProperty() ? this._dimensions[0] : null;\n };\n\n /**\n * Test whether this index contains only a single value.\n *\n * This is the case when the index is created with only scalar values as ranges,\n * not for ranges resolving into a single value.\n * @memberof Index\n * @return {boolean} isScalar\n */\n Index.prototype.isScalar = function () {\n return this._isScalar;\n };\n\n /**\n * Expand the Index into an array.\n * For example new Index([0,3], [2,7]) returns [[0,1,2], [2,3,4,5,6]]\n * @memberof Index\n * @returns {Array} array\n */\n Index.prototype.toArray = function () {\n var array = [];\n for (var i = 0, ii = this._dimensions.length; i < ii; i++) {\n var dimension = this._dimensions[i];\n array.push(typeof dimension === 'string' ? dimension : dimension.toArray());\n }\n return array;\n };\n\n /**\n * Get the primitive value of the Index, a two dimensional array.\n * Equivalent to Index.toArray().\n * @memberof Index\n * @returns {Array} array\n */\n Index.prototype.valueOf = Index.prototype.toArray;\n\n /**\n * Get the string representation of the index, for example '[2:6]' or '[0:2:10, 4:7, [1,2,3]]'\n * @memberof Index\n * @returns {String} str\n */\n Index.prototype.toString = function () {\n var strings = [];\n for (var i = 0, ii = this._dimensions.length; i < ii; i++) {\n var dimension = this._dimensions[i];\n if (typeof dimension === 'string') {\n strings.push(JSON.stringify(dimension));\n } else {\n strings.push(dimension.toString());\n }\n }\n return '[' + strings.join(', ') + ']';\n };\n\n /**\n * Get a JSON representation of the Index\n * @memberof Index\n * @returns {Object} Returns a JSON object structured as:\n * `{\"mathjs\": \"Index\", \"ranges\": [{\"mathjs\": \"Range\", start: 0, end: 10, step:1}, ...]}`\n */\n Index.prototype.toJSON = function () {\n return {\n mathjs: 'Index',\n dimensions: this._dimensions\n };\n };\n\n /**\n * Instantiate an Index from a JSON object\n * @memberof Index\n * @param {Object} json A JSON object structured as:\n * `{\"mathjs\": \"Index\", \"dimensions\": [{\"mathjs\": \"Range\", start: 0, end: 10, step:1}, ...]}`\n * @return {Index}\n */\n Index.fromJSON = function (json) {\n return Index.create(json.dimensions);\n };\n return Index;\n}, {\n isClass: true\n});\n\n/**\n * Receives an array of booleans and returns an array of Numbers for Index\n * @param {Array} booleanArrayIndex An array of booleans\n * @return {Array} A set of numbers ready for index\n */\nfunction _booleansArrayToNumbersForIndex(booleanArrayIndex) {\n // gets an array of booleans and returns an array of numbers\n var indexOfNumbers = [];\n booleanArrayIndex.forEach((bool, idx) => {\n if (bool) {\n indexOfNumbers.push(idx);\n }\n });\n return indexOfNumbers;\n}", "import { factory } from '../../utils/factory.js';\nvar name = 'FibonacciHeap';\nvar dependencies = ['smaller', 'larger'];\nexport var createFibonacciHeapClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n smaller,\n larger\n } = _ref;\n var oneOverLogPhi = 1.0 / Math.log((1.0 + Math.sqrt(5.0)) / 2.0);\n\n /**\n * Fibonacci Heap implementation, used interally for Matrix math.\n * @class FibonacciHeap\n * @constructor FibonacciHeap\n */\n function FibonacciHeap() {\n if (!(this instanceof FibonacciHeap)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n // initialize fields\n this._minimum = null;\n this._size = 0;\n }\n\n /**\n * Attach type information\n */\n FibonacciHeap.prototype.type = 'FibonacciHeap';\n FibonacciHeap.prototype.isFibonacciHeap = true;\n\n /**\n * Inserts a new data element into the heap. No heap consolidation is\n * performed at this time, the new node is simply inserted into the root\n * list of this heap. Running time: O(1) actual.\n * @memberof FibonacciHeap\n */\n FibonacciHeap.prototype.insert = function (key, value) {\n // create node\n var node = {\n key,\n value,\n degree: 0\n };\n // check we have a node in the minimum\n if (this._minimum) {\n // minimum node\n var minimum = this._minimum;\n // update left & right of node\n node.left = minimum;\n node.right = minimum.right;\n minimum.right = node;\n node.right.left = node;\n // update minimum node in heap if needed\n if (smaller(key, minimum.key)) {\n // node has a smaller key, use it as minimum\n this._minimum = node;\n }\n } else {\n // set left & right\n node.left = node;\n node.right = node;\n // this is the first node\n this._minimum = node;\n }\n // increment number of nodes in heap\n this._size++;\n // return node\n return node;\n };\n\n /**\n * Returns the number of nodes in heap. Running time: O(1) actual.\n * @memberof FibonacciHeap\n */\n FibonacciHeap.prototype.size = function () {\n return this._size;\n };\n\n /**\n * Removes all elements from this heap.\n * @memberof FibonacciHeap\n */\n FibonacciHeap.prototype.clear = function () {\n this._minimum = null;\n this._size = 0;\n };\n\n /**\n * Returns true if the heap is empty, otherwise false.\n * @memberof FibonacciHeap\n */\n FibonacciHeap.prototype.isEmpty = function () {\n return this._size === 0;\n };\n\n /**\n * Extracts the node with minimum key from heap. Amortized running\n * time: O(log n).\n * @memberof FibonacciHeap\n */\n FibonacciHeap.prototype.extractMinimum = function () {\n // node to remove\n var node = this._minimum;\n // check we have a minimum\n if (node === null) {\n return node;\n }\n // current minimum\n var minimum = this._minimum;\n // get number of children\n var numberOfChildren = node.degree;\n // pointer to the first child\n var x = node.child;\n // for each child of node do...\n while (numberOfChildren > 0) {\n // store node in right side\n var tempRight = x.right;\n // remove x from child list\n x.left.right = x.right;\n x.right.left = x.left;\n // add x to root list of heap\n x.left = minimum;\n x.right = minimum.right;\n minimum.right = x;\n x.right.left = x;\n // set Parent[x] to null\n x.parent = null;\n x = tempRight;\n numberOfChildren--;\n }\n // remove node from root list of heap\n node.left.right = node.right;\n node.right.left = node.left;\n // update minimum\n if (node === node.right) {\n // empty\n minimum = null;\n } else {\n // update minimum\n minimum = node.right;\n // we need to update the pointer to the root with minimum key\n minimum = _findMinimumNode(minimum, this._size);\n }\n // decrement size of heap\n this._size--;\n // update minimum\n this._minimum = minimum;\n // return node\n return node;\n };\n\n /**\n * Removes a node from the heap given the reference to the node. The trees\n * in the heap will be consolidated, if necessary. This operation may fail\n * to remove the correct element if there are nodes with key value -Infinity.\n * Running time: O(log n) amortized.\n * @memberof FibonacciHeap\n */\n FibonacciHeap.prototype.remove = function (node) {\n // decrease key value\n this._minimum = _decreaseKey(this._minimum, node, -1);\n // remove the smallest\n this.extractMinimum();\n };\n\n /**\n * Decreases the key value for a heap node, given the new value to take on.\n * The structure of the heap may be changed and will not be consolidated.\n * Running time: O(1) amortized.\n * @memberof FibonacciHeap\n */\n function _decreaseKey(minimum, node, key) {\n // set node key\n node.key = key;\n // get parent node\n var parent = node.parent;\n if (parent && smaller(node.key, parent.key)) {\n // remove node from parent\n _cut(minimum, node, parent);\n // remove all nodes from parent to the root parent\n _cascadingCut(minimum, parent);\n }\n // update minimum node if needed\n if (smaller(node.key, minimum.key)) {\n minimum = node;\n }\n // return minimum\n return minimum;\n }\n\n /**\n * The reverse of the link operation: removes node from the child list of parent.\n * This method assumes that min is non-null. Running time: O(1).\n * @memberof FibonacciHeap\n */\n function _cut(minimum, node, parent) {\n // remove node from parent children and decrement Degree[parent]\n node.left.right = node.right;\n node.right.left = node.left;\n parent.degree--;\n // reset y.child if necessary\n if (parent.child === node) {\n parent.child = node.right;\n }\n // remove child if degree is 0\n if (parent.degree === 0) {\n parent.child = null;\n }\n // add node to root list of heap\n node.left = minimum;\n node.right = minimum.right;\n minimum.right = node;\n node.right.left = node;\n // set parent[node] to null\n node.parent = null;\n // set mark[node] to false\n node.mark = false;\n }\n\n /**\n * Performs a cascading cut operation. This cuts node from its parent and then\n * does the same for its parent, and so on up the tree.\n * Running time: O(log n); O(1) excluding the recursion.\n * @memberof FibonacciHeap\n */\n function _cascadingCut(minimum, node) {\n // store parent node\n var parent = node.parent;\n // if there's a parent...\n if (!parent) {\n return;\n }\n // if node is unmarked, set it marked\n if (!node.mark) {\n node.mark = true;\n } else {\n // it's marked, cut it from parent\n _cut(minimum, node, parent);\n // cut its parent as well\n _cascadingCut(parent);\n }\n }\n\n /**\n * Make the first node a child of the second one. Running time: O(1) actual.\n * @memberof FibonacciHeap\n */\n var _linkNodes = function _linkNodes(node, parent) {\n // remove node from root list of heap\n node.left.right = node.right;\n node.right.left = node.left;\n // make node a Child of parent\n node.parent = parent;\n if (!parent.child) {\n parent.child = node;\n node.right = node;\n node.left = node;\n } else {\n node.left = parent.child;\n node.right = parent.child.right;\n parent.child.right = node;\n node.right.left = node;\n }\n // increase degree[parent]\n parent.degree++;\n // set mark[node] false\n node.mark = false;\n };\n function _findMinimumNode(minimum, size) {\n // to find trees of the same degree efficiently we use an array of length O(log n) in which we keep a pointer to one root of each degree\n var arraySize = Math.floor(Math.log(size) * oneOverLogPhi) + 1;\n // create list with initial capacity\n var array = new Array(arraySize);\n // find the number of root nodes.\n var numRoots = 0;\n var x = minimum;\n if (x) {\n numRoots++;\n x = x.right;\n while (x !== minimum) {\n numRoots++;\n x = x.right;\n }\n }\n // vars\n var y;\n // For each node in root list do...\n while (numRoots > 0) {\n // access this node's degree..\n var d = x.degree;\n // get next node\n var next = x.right;\n // check if there is a node already in array with the same degree\n while (true) {\n // get node with the same degree is any\n y = array[d];\n if (!y) {\n break;\n }\n // make one node with the same degree a child of the other, do this based on the key value.\n if (larger(x.key, y.key)) {\n var temp = y;\n y = x;\n x = temp;\n }\n // make y a child of x\n _linkNodes(y, x);\n // we have handled this degree, go to next one.\n array[d] = null;\n d++;\n }\n // save this node for later when we might encounter another of the same degree.\n array[d] = x;\n // move forward through list.\n x = next;\n numRoots--;\n }\n // Set min to null (effectively losing the root list) and reconstruct the root list from the array entries in array[].\n minimum = null;\n // loop nodes in array\n for (var i = 0; i < arraySize; i++) {\n // get current node\n y = array[i];\n if (!y) {\n continue;\n }\n // check if we have a linked list\n if (minimum) {\n // First remove node from root list.\n y.left.right = y.right;\n y.right.left = y.left;\n // now add to root list, again.\n y.left = minimum;\n y.right = minimum.right;\n minimum.right = y;\n y.right.left = y;\n // check if this is a new min.\n if (smaller(y.key, minimum.key)) {\n minimum = y;\n }\n } else {\n minimum = y;\n }\n }\n return minimum;\n }\n return FibonacciHeap;\n}, {\n isClass: true\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'Spa';\nvar dependencies = ['addScalar', 'equalScalar', 'FibonacciHeap'];\nexport var createSpaClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n addScalar,\n equalScalar,\n FibonacciHeap\n } = _ref;\n /**\n * An ordered Sparse Accumulator is a representation for a sparse vector that includes a dense array\n * of the vector elements and an ordered list of non-zero elements.\n */\n function Spa() {\n if (!(this instanceof Spa)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n // allocate vector, TODO use typed arrays\n this._values = [];\n this._heap = new FibonacciHeap();\n }\n\n /**\n * Attach type information\n */\n Spa.prototype.type = 'Spa';\n Spa.prototype.isSpa = true;\n\n /**\n * Set the value for index i.\n *\n * @param {number} i The index\n * @param {number | BigNumber | Complex} The value at index i\n */\n Spa.prototype.set = function (i, v) {\n // check we have a value @ i\n if (!this._values[i]) {\n // insert in heap\n var node = this._heap.insert(i, v);\n // set the value @ i\n this._values[i] = node;\n } else {\n // update the value @ i\n this._values[i].value = v;\n }\n };\n Spa.prototype.get = function (i) {\n var node = this._values[i];\n if (node) {\n return node.value;\n }\n return 0;\n };\n Spa.prototype.accumulate = function (i, v) {\n // node @ i\n var node = this._values[i];\n if (!node) {\n // insert in heap\n node = this._heap.insert(i, v);\n // initialize value\n this._values[i] = node;\n } else {\n // accumulate value\n node.value = addScalar(node.value, v);\n }\n };\n Spa.prototype.forEach = function (from, to, callback) {\n // references\n var heap = this._heap;\n var values = this._values;\n // nodes\n var nodes = [];\n // node with minimum key, save it\n var node = heap.extractMinimum();\n if (node) {\n nodes.push(node);\n }\n // extract nodes from heap (ordered)\n while (node && node.key <= to) {\n // check it is in range\n if (node.key >= from) {\n // check value is not zero\n if (!equalScalar(node.value, 0)) {\n // invoke callback\n callback(node.key, node.value, this);\n }\n }\n // extract next node, save it\n node = heap.extractMinimum();\n if (node) {\n nodes.push(node);\n }\n }\n // reinsert all nodes in heap\n for (var i = 0; i < nodes.length; i++) {\n // current node\n var n = nodes[i];\n // insert node in heap\n node = heap.insert(n.key, n.value);\n // update values\n values[node.key] = node;\n }\n };\n Spa.prototype.swap = function (i, j) {\n // node @ i and j\n var nodei = this._values[i];\n var nodej = this._values[j];\n // check we need to insert indeces\n if (!nodei && nodej) {\n // insert in heap\n nodei = this._heap.insert(i, nodej.value);\n // remove from heap\n this._heap.remove(nodej);\n // set values\n this._values[i] = nodei;\n this._values[j] = undefined;\n } else if (nodei && !nodej) {\n // insert in heap\n nodej = this._heap.insert(j, nodei.value);\n // remove from heap\n this._heap.remove(nodei);\n // set values\n this._values[j] = nodej;\n this._values[i] = undefined;\n } else if (nodei && nodej) {\n // swap values\n var v = nodei.value;\n nodei.value = nodej.value;\n nodej.value = v;\n }\n };\n return Spa;\n}, {\n isClass: true\n});", "// (c) 2018, Mariusz Nowak\n// SPDX-License-Identifier: ISC\n// Derived from https://github.com/medikoo/lru-queue\nexport function lruQueue(limit) {\n var size = 0;\n var base = 1;\n var queue = Object.create(null);\n var map = Object.create(null);\n var index = 0;\n var del = function del(id) {\n var oldIndex = map[id];\n if (!oldIndex) return;\n delete queue[oldIndex];\n delete map[id];\n --size;\n if (base !== oldIndex) return;\n if (!size) {\n index = 0;\n base = 1;\n return;\n }\n while (!Object.prototype.hasOwnProperty.call(queue, ++base)) {/* empty */}\n };\n limit = Math.abs(limit);\n return {\n hit: function hit(id) {\n var oldIndex = map[id];\n var nuIndex = ++index;\n queue[nuIndex] = id;\n map[id] = nuIndex;\n if (!oldIndex) {\n ++size;\n if (size <= limit) return undefined;\n id = queue[base];\n del(id);\n return id;\n }\n delete queue[oldIndex];\n if (base !== oldIndex) return undefined;\n while (!Object.prototype.hasOwnProperty.call(queue, ++base)) {/* empty */}\n return undefined;\n },\n delete: del,\n clear: function clear() {\n size = index = 0;\n base = 1;\n queue = Object.create(null);\n map = Object.create(null);\n }\n };\n}", "// function utils\n\nimport { lruQueue } from './lruQueue.js';\n\n/**\n * Memoize a given function by caching the computed result.\n * The cache of a memoized function can be cleared by deleting the `cache`\n * property of the function.\n *\n * @param {function} fn The function to be memoized.\n * Must be a pure function.\n * @param {Object} [options]\n * @param {function(args: Array): string} [options.hasher]\n * A custom hash builder. Is JSON.stringify by default.\n * @param {number | undefined} [options.limit]\n * Maximum number of values that may be cached. Undefined indicates\n * unlimited (default)\n * @return {function} Returns the memoized function\n */\nexport function memoize(fn) {\n var {\n hasher,\n limit\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n limit = limit == null ? Number.POSITIVE_INFINITY : limit;\n hasher = hasher == null ? JSON.stringify : hasher;\n return function memoize() {\n if (typeof memoize.cache !== 'object') {\n memoize.cache = {\n values: new Map(),\n lru: lruQueue(limit || Number.POSITIVE_INFINITY)\n };\n }\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n var hash = hasher(args);\n if (memoize.cache.values.has(hash)) {\n memoize.cache.lru.hit(hash);\n return memoize.cache.values.get(hash);\n }\n var newVal = fn.apply(fn, args);\n memoize.cache.values.set(hash, newVal);\n memoize.cache.values.delete(memoize.cache.lru.hit(hash));\n return newVal;\n };\n}\n\n/**\n * Memoize a given function by caching all results and the arguments,\n * and comparing against the arguments of previous results before\n * executing again.\n * This is less performant than `memoize` which calculates a hash,\n * which is very fast to compare. Use `memoizeCompare` only when it is\n * not possible to create a unique serializable hash from the function\n * arguments.\n * The isEqual function must compare two sets of arguments\n * and return true when equal (can be a deep equality check for example).\n * @param {function} fn\n * @param {function(a: *, b: *) : boolean} isEqual\n * @returns {function}\n */\nexport function memoizeCompare(fn, isEqual) {\n var memoize = function memoize() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n for (var c = 0; c < memoize.cache.length; c++) {\n var cached = memoize.cache[c];\n if (isEqual(args, cached.args)) {\n // TODO: move this cache entry to the top so recently used entries move up?\n return cached.res;\n }\n }\n var res = fn.apply(fn, args);\n memoize.cache.unshift({\n args,\n res\n });\n return res;\n };\n memoize.cache = [];\n return memoize;\n}", "import { memoize } from '../function.js';\n\n/**\n * Calculate BigNumber e\n * @param {function} BigNumber BigNumber constructor\n * @returns {BigNumber} Returns e\n */\nexport var createBigNumberE = memoize(function (BigNumber) {\n return new BigNumber(1).exp();\n}, {\n hasher\n});\n\n/**\n * Calculate BigNumber golden ratio, phi = (1+sqrt(5))/2\n * @param {function} BigNumber BigNumber constructor\n * @returns {BigNumber} Returns phi\n */\nexport var createBigNumberPhi = memoize(function (BigNumber) {\n return new BigNumber(1).plus(new BigNumber(5).sqrt()).div(2);\n}, {\n hasher\n});\n\n/**\n * Calculate BigNumber pi.\n * @param {function} BigNumber BigNumber constructor\n * @returns {BigNumber} Returns pi\n */\nexport var createBigNumberPi = memoize(function (BigNumber) {\n return BigNumber.acos(-1);\n}, {\n hasher\n});\n\n/**\n * Calculate BigNumber tau, tau = 2 * pi\n * @param {function} BigNumber BigNumber constructor\n * @returns {BigNumber} Returns tau\n */\nexport var createBigNumberTau = memoize(function (BigNumber) {\n return createBigNumberPi(BigNumber).times(2);\n}, {\n hasher\n});\n\n/**\n * Create a hash for a BigNumber constructor function. The created has is\n * the configured precision\n * @param {Array} args Supposed to contain a single entry with\n * a BigNumber constructor\n * @return {number} precision\n * @private\n */\nfunction hasher(args) {\n return args[0].precision;\n}", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport { isComplex, isUnit, typeOf } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nimport { memoize } from '../../utils/function.js';\nimport { endsWith } from '../../utils/string.js';\nimport { clone, hasOwnProperty } from '../../utils/object.js';\nimport { createBigNumberPi as createPi } from '../../utils/bignumber/constants.js';\nvar name = 'Unit';\nvar dependencies = ['?on', 'config', 'addScalar', 'subtractScalar', 'multiplyScalar', 'divideScalar', 'pow', 'abs', 'fix', 'round', 'equal', 'isNumeric', 'format', 'number', 'Complex', 'BigNumber', 'Fraction'];\nexport var createUnitClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n on,\n config,\n addScalar,\n subtractScalar,\n multiplyScalar,\n divideScalar,\n pow,\n abs,\n fix,\n round,\n equal,\n isNumeric,\n format,\n number: _number,\n Complex,\n BigNumber: _BigNumber,\n Fraction: _Fraction\n } = _ref;\n var toNumber = _number;\n /**\n * A unit can be constructed in the following ways:\n *\n * const a = new Unit(value, valuelessUnit)\n * const b = new Unit(null, valuelessUnit)\n * const c = Unit.parse(str)\n *\n * Example usage:\n *\n * const a = new Unit(5, 'cm') // 50 mm\n * const b = Unit.parse('23 kg') // 23 kg\n * const c = math.in(a, new Unit(null, 'm') // 0.05 m\n * const d = new Unit(9.81, \"m/s^2\") // 9.81 m/s^2\n *\n * @class Unit\n * @constructor Unit\n * @param {number | BigNumber | Fraction | Complex | boolean} [value] A value like 5.2\n * @param {string | Unit} valuelessUnit A unit without value. Can have prefix, like \"cm\"\n */\n function Unit(value, valuelessUnit) {\n if (!(this instanceof Unit)) {\n throw new Error('Constructor must be called with the new operator');\n }\n if (!(value === null || value === undefined || isNumeric(value) || isComplex(value))) {\n throw new TypeError('First parameter in Unit constructor must be number, BigNumber, Fraction, Complex, or undefined');\n }\n this.fixPrefix = false; // if true, function format will not search for the\n // best prefix but leave it as initially provided.\n // fixPrefix is set true by the method Unit.to\n\n // The justification behind this is that if the constructor is explicitly called,\n // the caller wishes the units to be returned exactly as supplied.\n this.skipAutomaticSimplification = true;\n if (valuelessUnit === undefined) {\n this.units = [];\n this.dimensions = BASE_DIMENSIONS.map(x => 0);\n } else if (typeof valuelessUnit === 'string') {\n var u = Unit.parse(valuelessUnit);\n this.units = u.units;\n this.dimensions = u.dimensions;\n } else if (isUnit(valuelessUnit) && valuelessUnit.value === null) {\n // clone from valuelessUnit\n this.fixPrefix = valuelessUnit.fixPrefix;\n this.skipAutomaticSimplification = valuelessUnit.skipAutomaticSimplification;\n this.dimensions = valuelessUnit.dimensions.slice(0);\n this.units = valuelessUnit.units.map(u => _extends({}, u));\n } else {\n throw new TypeError('Second parameter in Unit constructor must be a string or valueless Unit');\n }\n this.value = this._normalize(value);\n }\n\n /**\n * Attach type information\n */\n Object.defineProperty(Unit, 'name', {\n value: 'Unit'\n });\n Unit.prototype.constructor = Unit;\n Unit.prototype.type = 'Unit';\n Unit.prototype.isUnit = true;\n\n // private variables and functions for the Unit parser\n var text, index, c;\n function skipWhitespace() {\n while (c === ' ' || c === '\\t') {\n next();\n }\n }\n function isDigitDot(c) {\n return c >= '0' && c <= '9' || c === '.';\n }\n function isDigit(c) {\n return c >= '0' && c <= '9';\n }\n function next() {\n index++;\n c = text.charAt(index);\n }\n function revert(oldIndex) {\n index = oldIndex;\n c = text.charAt(index);\n }\n function parseNumber() {\n var number = '';\n var oldIndex = index;\n if (c === '+') {\n next();\n } else if (c === '-') {\n number += c;\n next();\n }\n if (!isDigitDot(c)) {\n // a + or - must be followed by a digit\n revert(oldIndex);\n return null;\n }\n\n // get number, can have a single dot\n if (c === '.') {\n number += c;\n next();\n if (!isDigit(c)) {\n // this is no legal number, it is just a dot\n revert(oldIndex);\n return null;\n }\n } else {\n while (isDigit(c)) {\n number += c;\n next();\n }\n if (c === '.') {\n number += c;\n next();\n }\n }\n while (isDigit(c)) {\n number += c;\n next();\n }\n\n // check for exponential notation like \"2.3e-4\" or \"1.23e50\"\n if (c === 'E' || c === 'e') {\n // The grammar branches here. This could either be part of an exponent or the start of a unit that begins with the letter e, such as \"4exabytes\"\n\n var tentativeNumber = '';\n var tentativeIndex = index;\n tentativeNumber += c;\n next();\n if (c === '+' || c === '-') {\n tentativeNumber += c;\n next();\n }\n\n // Scientific notation MUST be followed by an exponent (otherwise we assume it is not scientific notation)\n if (!isDigit(c)) {\n // The e or E must belong to something else, so return the number without the e or E.\n revert(tentativeIndex);\n return number;\n }\n\n // We can now safely say that this is scientific notation.\n number = number + tentativeNumber;\n while (isDigit(c)) {\n number += c;\n next();\n }\n }\n return number;\n }\n function parseUnit() {\n var unitName = '';\n\n // Alphanumeric characters only; matches [a-zA-Z0-9]\n while (isDigit(c) || Unit.isValidAlpha(c)) {\n unitName += c;\n next();\n }\n\n // Must begin with [a-zA-Z]\n var firstC = unitName.charAt(0);\n if (Unit.isValidAlpha(firstC)) {\n return unitName;\n } else {\n return null;\n }\n }\n function parseCharacter(toFind) {\n if (c === toFind) {\n next();\n return toFind;\n } else {\n return null;\n }\n }\n\n /**\n * Parse a string into a unit. The value of the unit is parsed as number,\n * BigNumber, or Fraction depending on the math.js config setting `number`.\n *\n * Throws an exception if the provided string does not contain a valid unit or\n * cannot be parsed.\n * @memberof Unit\n * @param {string} str A string like \"5.2 inch\", \"4e2 cm/s^2\"\n * @return {Unit} unit\n */\n Unit.parse = function (str, options) {\n options = options || {};\n text = str;\n index = -1;\n c = '';\n if (typeof text !== 'string') {\n throw new TypeError('Invalid argument in Unit.parse, string expected');\n }\n var unit = new Unit();\n unit.units = [];\n var powerMultiplierCurrent = 1;\n var expectingUnit = false;\n\n // A unit should follow this pattern:\n // [number] ...[ [*/] unit[^number] ]\n // unit[^number] ... [ [*/] unit[^number] ]\n\n // Rules:\n // number is any floating point number.\n // unit is any alphanumeric string beginning with an alpha. Units with names like e3 should be avoided because they look like the exponent of a floating point number!\n // The string may optionally begin with a number.\n // Each unit may optionally be followed by ^number.\n // Whitespace or a forward slash is recommended between consecutive units, although the following technically is parseable:\n // 2m^2kg/s^2\n // it is not good form. If a unit starts with e, then it could be confused as a floating point number:\n // 4erg\n\n next();\n skipWhitespace();\n\n // Optional number at the start of the string\n var valueStr = parseNumber();\n var value = null;\n if (valueStr) {\n if (config.number === 'BigNumber') {\n value = new _BigNumber(valueStr);\n } else if (config.number === 'Fraction') {\n try {\n // not all numbers can be turned in Fractions, for example very small numbers not\n value = new _Fraction(valueStr);\n } catch (err) {\n value = parseFloat(valueStr);\n }\n } else {\n // number\n value = parseFloat(valueStr);\n }\n skipWhitespace(); // Whitespace is not required here\n\n // handle multiplication or division right after the value, like '1/s'\n if (parseCharacter('*')) {\n powerMultiplierCurrent = 1;\n expectingUnit = true;\n } else if (parseCharacter('/')) {\n powerMultiplierCurrent = -1;\n expectingUnit = true;\n }\n }\n\n // Stack to keep track of powerMultipliers applied to each parentheses group\n var powerMultiplierStack = [];\n\n // Running product of all elements in powerMultiplierStack\n var powerMultiplierStackProduct = 1;\n while (true) {\n skipWhitespace();\n\n // Check for and consume opening parentheses, pushing powerMultiplierCurrent to the stack\n // A '(' will always appear directly before a unit.\n while (c === '(') {\n powerMultiplierStack.push(powerMultiplierCurrent);\n powerMultiplierStackProduct *= powerMultiplierCurrent;\n powerMultiplierCurrent = 1;\n next();\n skipWhitespace();\n }\n\n // Is there something here?\n var uStr = void 0;\n if (c) {\n var oldC = c;\n uStr = parseUnit();\n if (uStr === null) {\n throw new SyntaxError('Unexpected \"' + oldC + '\" in \"' + text + '\" at index ' + index.toString());\n }\n } else {\n // End of input.\n break;\n }\n\n // Verify the unit exists and get the prefix (if any)\n var res = _findUnit(uStr);\n if (res === null) {\n // Unit not found.\n throw new SyntaxError('Unit \"' + uStr + '\" not found.');\n }\n var power = powerMultiplierCurrent * powerMultiplierStackProduct;\n // Is there a \"^ number\"?\n skipWhitespace();\n if (parseCharacter('^')) {\n skipWhitespace();\n var p = parseNumber();\n if (p === null) {\n // No valid number found for the power!\n throw new SyntaxError('In \"' + str + '\", \"^\" must be followed by a floating-point number');\n }\n power *= p;\n }\n\n // Add the unit to the list\n unit.units.push({\n unit: res.unit,\n prefix: res.prefix,\n power\n });\n for (var i = 0; i < BASE_DIMENSIONS.length; i++) {\n unit.dimensions[i] += (res.unit.dimensions[i] || 0) * power;\n }\n\n // Check for and consume closing parentheses, popping from the stack.\n // A ')' will always follow a unit.\n skipWhitespace();\n while (c === ')') {\n if (powerMultiplierStack.length === 0) {\n throw new SyntaxError('Unmatched \")\" in \"' + text + '\" at index ' + index.toString());\n }\n powerMultiplierStackProduct /= powerMultiplierStack.pop();\n next();\n skipWhitespace();\n }\n\n // \"*\" and \"/\" should mean we are expecting something to come next.\n // Is there a forward slash? If so, negate powerMultiplierCurrent. The next unit or paren group is in the denominator.\n expectingUnit = false;\n if (parseCharacter('*')) {\n // explicit multiplication\n powerMultiplierCurrent = 1;\n expectingUnit = true;\n } else if (parseCharacter('/')) {\n // division\n powerMultiplierCurrent = -1;\n expectingUnit = true;\n } else {\n // implicit multiplication\n powerMultiplierCurrent = 1;\n }\n\n // Replace the unit into the auto unit system\n if (res.unit.base) {\n var baseDim = res.unit.base.key;\n UNIT_SYSTEMS.auto[baseDim] = {\n unit: res.unit,\n prefix: res.prefix\n };\n }\n }\n\n // Has the string been entirely consumed?\n skipWhitespace();\n if (c) {\n throw new SyntaxError('Could not parse: \"' + str + '\"');\n }\n\n // Is there a trailing slash?\n if (expectingUnit) {\n throw new SyntaxError('Trailing characters: \"' + str + '\"');\n }\n\n // Is the parentheses stack empty?\n if (powerMultiplierStack.length !== 0) {\n throw new SyntaxError('Unmatched \"(\" in \"' + text + '\"');\n }\n\n // Are there any units at all?\n if (unit.units.length === 0 && !options.allowNoUnits) {\n throw new SyntaxError('\"' + str + '\" contains no units');\n }\n unit.value = value !== undefined ? unit._normalize(value) : null;\n return unit;\n };\n\n /**\n * create a copy of this unit\n * @memberof Unit\n * @return {Unit} Returns a cloned version of the unit\n */\n Unit.prototype.clone = function () {\n var unit = new Unit();\n unit.fixPrefix = this.fixPrefix;\n unit.skipAutomaticSimplification = this.skipAutomaticSimplification;\n unit.value = clone(this.value);\n unit.dimensions = this.dimensions.slice(0);\n unit.units = [];\n for (var i = 0; i < this.units.length; i++) {\n unit.units[i] = {};\n for (var p in this.units[i]) {\n if (hasOwnProperty(this.units[i], p)) {\n unit.units[i][p] = this.units[i][p];\n }\n }\n }\n return unit;\n };\n\n /**\n * Return the type of the value of this unit\n *\n * @memberof Unit\n * @return {string} type of the value of the unit\n */\n Unit.prototype.valueType = function () {\n return typeOf(this.value);\n };\n\n /**\n * Return whether the unit is derived (such as m/s, or cm^2, but not N)\n * @memberof Unit\n * @return {boolean} True if the unit is derived\n * @private\n */\n Unit.prototype._isDerived = function () {\n if (this.units.length === 0) {\n return false;\n }\n return this.units.length > 1 || Math.abs(this.units[0].power - 1.0) > 1e-15;\n };\n\n /**\n * Normalize a value, based on its currently set unit(s)\n * @memberof Unit\n * @param {number | BigNumber | Fraction | boolean} value\n * @return {number | BigNumber | Fraction | boolean} normalized value\n * @private\n */\n Unit.prototype._normalize = function (value) {\n if (value === null || value === undefined || this.units.length === 0) {\n return value;\n }\n var res = value;\n var convert = Unit._getNumberConverter(typeOf(value)); // convert to Fraction or BigNumber if needed\n\n for (var i = 0; i < this.units.length; i++) {\n var unitValue = convert(this.units[i].unit.value);\n var unitPrefixValue = convert(this.units[i].prefix.value);\n var unitPower = convert(this.units[i].power);\n res = multiplyScalar(res, pow(multiplyScalar(unitValue, unitPrefixValue), unitPower));\n }\n return res;\n };\n\n /**\n * Denormalize a value, based on its currently set unit(s)\n * @memberof Unit\n * @param {number} value\n * @param {number} [prefixValue] Optional prefix value to be used (ignored if this is a derived unit)\n * @return {number} denormalized value\n * @private\n */\n Unit.prototype._denormalize = function (value, prefixValue) {\n if (value === null || value === undefined || this.units.length === 0) {\n return value;\n }\n var res = value;\n var convert = Unit._getNumberConverter(typeOf(value)); // convert to Fraction or BigNumber if needed\n\n for (var i = 0; i < this.units.length; i++) {\n var unitValue = convert(this.units[i].unit.value);\n var unitPrefixValue = convert(this.units[i].prefix.value);\n var unitPower = convert(this.units[i].power);\n res = divideScalar(res, pow(multiplyScalar(unitValue, unitPrefixValue), unitPower));\n }\n return res;\n };\n\n /**\n * Find a unit from a string\n * @memberof Unit\n * @param {string} str A string like 'cm' or 'inch'\n * @returns {Object | null} result When found, an object with fields unit and\n * prefix is returned. Else, null is returned.\n * @private\n */\n var _findUnit = memoize(str => {\n // First, match units names exactly. For example, a user could define 'mm' as 10^-4 m, which is silly, but then we would want 'mm' to match the user-defined unit.\n if (hasOwnProperty(UNITS, str)) {\n var unit = UNITS[str];\n var prefix = unit.prefixes[''];\n return {\n unit,\n prefix\n };\n }\n for (var _name in UNITS) {\n if (hasOwnProperty(UNITS, _name)) {\n if (endsWith(str, _name)) {\n var _unit = UNITS[_name];\n var prefixLen = str.length - _name.length;\n var prefixName = str.substring(0, prefixLen);\n var _prefix = hasOwnProperty(_unit.prefixes, prefixName) ? _unit.prefixes[prefixName] : undefined;\n if (_prefix !== undefined) {\n // store unit, prefix, and value\n return {\n unit: _unit,\n prefix: _prefix\n };\n }\n }\n }\n }\n return null;\n }, {\n hasher: args => args[0],\n limit: 100\n });\n\n /**\n * Test if the given expression is a unit.\n * The unit can have a prefix but cannot have a value.\n * @memberof Unit\n * @param {string} name A string to be tested whether it is a value less unit.\n * The unit can have prefix, like \"cm\"\n * @return {boolean} true if the given string is a unit\n */\n Unit.isValuelessUnit = function (name) {\n return _findUnit(name) !== null;\n };\n\n /**\n * check if this unit has given base unit\n * If this unit is a derived unit, this will ALWAYS return false, since by definition base units are not derived.\n * @memberof Unit\n * @param {BASE_UNIT | string | undefined} base\n */\n Unit.prototype.hasBase = function (base) {\n if (typeof base === 'string') {\n base = BASE_UNITS[base];\n }\n if (!base) {\n return false;\n }\n\n // All dimensions must be the same\n for (var i = 0; i < BASE_DIMENSIONS.length; i++) {\n if (Math.abs((this.dimensions[i] || 0) - (base.dimensions[i] || 0)) > 1e-12) {\n return false;\n }\n }\n return true;\n };\n\n /**\n * Check if this unit has a base or bases equal to another base or bases\n * For derived units, the exponent on each base also must match\n * @memberof Unit\n * @param {Unit} other\n * @return {boolean} true if equal base\n */\n Unit.prototype.equalBase = function (other) {\n // All dimensions must be the same\n for (var i = 0; i < BASE_DIMENSIONS.length; i++) {\n if (Math.abs((this.dimensions[i] || 0) - (other.dimensions[i] || 0)) > 1e-12) {\n return false;\n }\n }\n return true;\n };\n\n /**\n * Check if this unit equals another unit\n * @memberof Unit\n * @param {Unit} other\n * @return {boolean} true if both units are equal\n */\n Unit.prototype.equals = function (other) {\n return this.equalBase(other) && equal(this.value, other.value);\n };\n\n /**\n * Multiply this unit with another one or with a scalar\n * @memberof Unit\n * @param {Unit} other\n * @return {Unit} product of this unit and the other unit\n */\n Unit.prototype.multiply = function (_other) {\n var res = this.clone();\n var other = isUnit(_other) ? _other : new Unit(_other);\n for (var i = 0; i < BASE_DIMENSIONS.length; i++) {\n // Dimensions arrays may be of different lengths. Default to 0.\n res.dimensions[i] = (this.dimensions[i] || 0) + (other.dimensions[i] || 0);\n }\n\n // Append other's units list onto res\n for (var _i = 0; _i < other.units.length; _i++) {\n // Make a shallow copy of every unit\n var inverted = _objectSpread({}, other.units[_i]);\n res.units.push(inverted);\n }\n\n // If at least one operand has a value, then the result should also have a value\n if (this.value !== null || other.value !== null) {\n var valThis = this.value === null ? this._normalize(1) : this.value;\n var valOther = other.value === null ? other._normalize(1) : other.value;\n res.value = multiplyScalar(valThis, valOther);\n } else {\n res.value = null;\n }\n if (isUnit(_other)) {\n res.skipAutomaticSimplification = false;\n }\n return getNumericIfUnitless(res);\n };\n\n /**\n * Divide a number by this unit\n *\n * @memberof Unit\n * @param {numeric} numerator\n * @param {unit} result of dividing numerator by this unit\n */\n Unit.prototype.divideInto = function (numerator) {\n return new Unit(numerator).divide(this);\n };\n\n /**\n * Divide this unit by another one\n * @memberof Unit\n * @param {Unit | numeric} other\n * @return {Unit} result of dividing this unit by the other unit\n */\n Unit.prototype.divide = function (_other) {\n var res = this.clone();\n var other = isUnit(_other) ? _other : new Unit(_other);\n for (var i = 0; i < BASE_DIMENSIONS.length; i++) {\n // Dimensions arrays may be of different lengths. Default to 0.\n res.dimensions[i] = (this.dimensions[i] || 0) - (other.dimensions[i] || 0);\n }\n\n // Invert and append other's units list onto res\n for (var _i2 = 0; _i2 < other.units.length; _i2++) {\n // Make a shallow copy of every unit\n var inverted = _objectSpread(_objectSpread({}, other.units[_i2]), {}, {\n power: -other.units[_i2].power\n });\n res.units.push(inverted);\n }\n\n // If at least one operand has a value, the result should have a value\n if (this.value !== null || other.value !== null) {\n var valThis = this.value === null ? this._normalize(1) : this.value;\n var valOther = other.value === null ? other._normalize(1) : other.value;\n res.value = divideScalar(valThis, valOther);\n } else {\n res.value = null;\n }\n if (isUnit(_other)) {\n res.skipAutomaticSimplification = false;\n }\n return getNumericIfUnitless(res);\n };\n\n /**\n * Calculate the power of a unit\n * @memberof Unit\n * @param {number | Fraction | BigNumber} p\n * @returns {Unit} The result: this^p\n */\n Unit.prototype.pow = function (p) {\n var res = this.clone();\n for (var i = 0; i < BASE_DIMENSIONS.length; i++) {\n // Dimensions arrays may be of different lengths. Default to 0.\n res.dimensions[i] = (this.dimensions[i] || 0) * p;\n }\n\n // Adjust the power of each unit in the list\n for (var _i3 = 0; _i3 < res.units.length; _i3++) {\n res.units[_i3].power *= p;\n }\n if (res.value !== null) {\n res.value = pow(res.value, p);\n\n // only allow numeric output, we don't want to return a Complex number\n // if (!isNumeric(res.value)) {\n // res.value = NaN\n // }\n // Update: Complex supported now\n } else {\n res.value = null;\n }\n res.skipAutomaticSimplification = false;\n return getNumericIfUnitless(res);\n };\n\n /**\n * Return the numeric value of this unit if it is dimensionless, has a value, and config.predictable == false; or the original unit otherwise\n * @param {Unit} unit\n * @returns {number | Fraction | BigNumber | Unit} The numeric value of the unit if conditions are met, or the original unit otherwise\n */\n function getNumericIfUnitless(unit) {\n if (unit.equalBase(BASE_UNITS.NONE) && unit.value !== null && !config.predictable) {\n return unit.value;\n } else {\n return unit;\n }\n }\n\n /**\n * Calculate the absolute value of a unit\n * @memberof Unit\n * @param {number | Fraction | BigNumber} x\n * @returns {Unit} The result: |x|, absolute value of x\n */\n Unit.prototype.abs = function () {\n var ret = this.clone();\n if (ret.value !== null) {\n if (ret._isDerived() || ret.units.length === 0 || ret.units[0].unit.offset === 0) {\n ret.value = abs(ret.value);\n } else {\n // To give the correct, but unexpected, results for units with an offset.\n // For example, abs(-283.15 degC) = -263.15 degC !!!\n // We must take the offset into consideration here\n var convert = ret._numberConverter(); // convert to Fraction or BigNumber if needed\n var unitValue = convert(ret.units[0].unit.value);\n var nominalOffset = convert(ret.units[0].unit.offset);\n var unitOffset = multiplyScalar(unitValue, nominalOffset);\n ret.value = subtractScalar(abs(addScalar(ret.value, unitOffset)), unitOffset);\n }\n }\n for (var i in ret.units) {\n if (ret.units[i].unit.name === 'VA' || ret.units[i].unit.name === 'VAR') {\n ret.units[i].unit = UNITS.W;\n }\n }\n return ret;\n };\n\n /**\n * Convert the unit to a specific unit name.\n * @memberof Unit\n * @param {string | Unit} valuelessUnit A unit without value. Can have prefix, like \"cm\"\n * @returns {Unit} Returns a clone of the unit with a fixed prefix and unit.\n */\n Unit.prototype.to = function (valuelessUnit) {\n var value = this.value === null ? this._normalize(1) : this.value;\n var other;\n if (typeof valuelessUnit === 'string') {\n other = Unit.parse(valuelessUnit);\n } else if (isUnit(valuelessUnit)) {\n other = valuelessUnit.clone();\n } else {\n throw new Error('String or Unit expected as parameter');\n }\n if (!this.equalBase(other)) {\n throw new Error(\"Units do not match ('\".concat(other.toString(), \"' != '\").concat(this.toString(), \"')\"));\n }\n if (other.value !== null) {\n throw new Error('Cannot convert to a unit with a value');\n }\n if (this.value === null || this._isDerived() || this.units.length === 0 || other.units.length === 0 || this.units[0].unit.offset === other.units[0].unit.offset) {\n other.value = clone(value);\n } else {\n /* Need to adjust value by difference in offset to convert */\n var convert = Unit._getNumberConverter(typeOf(value)); // convert to Fraction or BigNumber if needed\n\n var thisUnitValue = this.units[0].unit.value;\n var thisNominalOffset = this.units[0].unit.offset;\n var thisUnitOffset = multiplyScalar(thisUnitValue, thisNominalOffset);\n var otherUnitValue = other.units[0].unit.value;\n var otherNominalOffset = other.units[0].unit.offset;\n var otherUnitOffset = multiplyScalar(otherUnitValue, otherNominalOffset);\n other.value = addScalar(value, convert(subtractScalar(thisUnitOffset, otherUnitOffset)));\n }\n other.fixPrefix = true;\n other.skipAutomaticSimplification = true;\n return other;\n };\n\n /**\n * Return the value of the unit when represented with given valueless unit\n * @memberof Unit\n * @param {string | Unit} valuelessUnit For example 'cm' or 'inch'\n * @return {number} Returns the unit value as number.\n */\n // TODO: deprecate Unit.toNumber? It's always better to use toNumeric\n Unit.prototype.toNumber = function (valuelessUnit) {\n return toNumber(this.toNumeric(valuelessUnit));\n };\n\n /**\n * Return the value of the unit in the original numeric type\n * @memberof Unit\n * @param {string | Unit} valuelessUnit For example 'cm' or 'inch'\n * @return {number | BigNumber | Fraction} Returns the unit value\n */\n Unit.prototype.toNumeric = function (valuelessUnit) {\n var other;\n if (valuelessUnit) {\n // Allow getting the numeric value without converting to a different unit\n other = this.to(valuelessUnit);\n } else {\n other = this.clone();\n }\n if (other._isDerived() || other.units.length === 0) {\n return other._denormalize(other.value);\n } else {\n return other._denormalize(other.value, other.units[0].prefix.value);\n }\n };\n\n /**\n * Get a string representation of the unit.\n * @memberof Unit\n * @return {string}\n */\n Unit.prototype.toString = function () {\n return this.format();\n };\n\n /**\n * Get a JSON representation of the unit\n * @memberof Unit\n * @returns {Object} Returns a JSON object structured as:\n * `{\"mathjs\": \"Unit\", \"value\": 2, \"unit\": \"cm\", \"fixPrefix\": false}`\n */\n Unit.prototype.toJSON = function () {\n return {\n mathjs: 'Unit',\n value: this._denormalize(this.value),\n unit: this.units.length > 0 ? this.formatUnits() : null,\n fixPrefix: this.fixPrefix\n };\n };\n\n /**\n * Instantiate a Unit from a JSON object\n * @memberof Unit\n * @param {Object} json A JSON object structured as:\n * `{\"mathjs\": \"Unit\", \"value\": 2, \"unit\": \"cm\", \"fixPrefix\": false}`\n * @return {Unit}\n */\n Unit.fromJSON = function (json) {\n var _json$unit;\n var unit = new Unit(json.value, (_json$unit = json.unit) !== null && _json$unit !== void 0 ? _json$unit : undefined);\n unit.fixPrefix = json.fixPrefix || false;\n return unit;\n };\n\n /**\n * Returns the string representation of the unit.\n * @memberof Unit\n * @return {string}\n */\n Unit.prototype.valueOf = Unit.prototype.toString;\n\n /**\n * Simplify this Unit's unit list and return a new Unit with the simplified list.\n * The returned Unit will contain a list of the \"best\" units for formatting.\n */\n Unit.prototype.simplify = function () {\n var ret = this.clone();\n var proposedUnitList = [];\n\n // Search for a matching base\n var matchingBase;\n for (var key in currentUnitSystem) {\n if (hasOwnProperty(currentUnitSystem, key)) {\n if (ret.hasBase(BASE_UNITS[key])) {\n matchingBase = key;\n break;\n }\n }\n }\n if (matchingBase === 'NONE') {\n ret.units = [];\n } else {\n var matchingUnit;\n if (matchingBase) {\n // Does the unit system have a matching unit?\n if (hasOwnProperty(currentUnitSystem, matchingBase)) {\n matchingUnit = currentUnitSystem[matchingBase];\n }\n }\n if (matchingUnit) {\n ret.units = [{\n unit: matchingUnit.unit,\n prefix: matchingUnit.prefix,\n power: 1.0\n }];\n } else {\n // Multiple units or units with powers are formatted like this:\n // 5 (kg m^2) / (s^3 mol)\n // Build an representation from the base units of the current unit system\n var missingBaseDim = false;\n for (var i = 0; i < BASE_DIMENSIONS.length; i++) {\n var baseDim = BASE_DIMENSIONS[i];\n if (Math.abs(ret.dimensions[i] || 0) > 1e-12) {\n if (hasOwnProperty(currentUnitSystem, baseDim)) {\n proposedUnitList.push({\n unit: currentUnitSystem[baseDim].unit,\n prefix: currentUnitSystem[baseDim].prefix,\n power: ret.dimensions[i] || 0\n });\n } else {\n missingBaseDim = true;\n }\n }\n }\n\n // Is the proposed unit list \"simpler\" than the existing one?\n if (proposedUnitList.length < ret.units.length && !missingBaseDim) {\n // Replace this unit list with the proposed list\n ret.units = proposedUnitList;\n }\n }\n }\n return ret;\n };\n\n /**\n * Returns a new Unit in the SI system with the same value as this one\n */\n Unit.prototype.toSI = function () {\n var ret = this.clone();\n var proposedUnitList = [];\n\n // Multiple units or units with powers are formatted like this:\n // 5 (kg m^2) / (s^3 mol)\n // Build an representation from the base units of the SI unit system\n for (var i = 0; i < BASE_DIMENSIONS.length; i++) {\n var baseDim = BASE_DIMENSIONS[i];\n if (Math.abs(ret.dimensions[i] || 0) > 1e-12) {\n if (hasOwnProperty(UNIT_SYSTEMS.si, baseDim)) {\n proposedUnitList.push({\n unit: UNIT_SYSTEMS.si[baseDim].unit,\n prefix: UNIT_SYSTEMS.si[baseDim].prefix,\n power: ret.dimensions[i] || 0\n });\n } else {\n throw new Error('Cannot express custom unit ' + baseDim + ' in SI units');\n }\n }\n }\n\n // Replace this unit list with the proposed list\n ret.units = proposedUnitList;\n ret.fixPrefix = true;\n ret.skipAutomaticSimplification = true;\n if (this.value !== null) {\n ret.value = null;\n return this.to(ret);\n }\n return ret;\n };\n\n /**\n * Get a string representation of the units of this Unit, without the value. The unit list is formatted as-is without first being simplified.\n * @memberof Unit\n * @return {string}\n */\n Unit.prototype.formatUnits = function () {\n var strNum = '';\n var strDen = '';\n var nNum = 0;\n var nDen = 0;\n for (var i = 0; i < this.units.length; i++) {\n if (this.units[i].power > 0) {\n nNum++;\n strNum += ' ' + this.units[i].prefix.name + this.units[i].unit.name;\n if (Math.abs(this.units[i].power - 1.0) > 1e-15) {\n strNum += '^' + this.units[i].power;\n }\n } else if (this.units[i].power < 0) {\n nDen++;\n }\n }\n if (nDen > 0) {\n for (var _i4 = 0; _i4 < this.units.length; _i4++) {\n if (this.units[_i4].power < 0) {\n if (nNum > 0) {\n strDen += ' ' + this.units[_i4].prefix.name + this.units[_i4].unit.name;\n if (Math.abs(this.units[_i4].power + 1.0) > 1e-15) {\n strDen += '^' + -this.units[_i4].power;\n }\n } else {\n strDen += ' ' + this.units[_i4].prefix.name + this.units[_i4].unit.name;\n strDen += '^' + this.units[_i4].power;\n }\n }\n }\n }\n // Remove leading \" \"\n strNum = strNum.substr(1);\n strDen = strDen.substr(1);\n\n // Add parans for better copy/paste back into evaluate, for example, or for better pretty print formatting\n if (nNum > 1 && nDen > 0) {\n strNum = '(' + strNum + ')';\n }\n if (nDen > 1 && nNum > 0) {\n strDen = '(' + strDen + ')';\n }\n var str = strNum;\n if (nNum > 0 && nDen > 0) {\n str += ' / ';\n }\n str += strDen;\n return str;\n };\n\n /**\n * Get a string representation of the Unit, with optional formatting options.\n * @memberof Unit\n * @param {Object | number | Function} [options] Formatting options. See\n * lib/utils/number:format for a\n * description of the available\n * options.\n * @return {string}\n */\n Unit.prototype.format = function (options) {\n // Simplfy the unit list, unless it is valueless or was created directly in the\n // constructor or as the result of to or toSI\n var simp = this.skipAutomaticSimplification || this.value === null ? this.clone() : this.simplify();\n\n // Apply some custom logic for handling VA and VAR. The goal is to express the value of the unit as a real value, if possible. Otherwise, use a real-valued unit instead of a complex-valued one.\n var isImaginary = false;\n if (typeof simp.value !== 'undefined' && simp.value !== null && isComplex(simp.value)) {\n // TODO: Make this better, for example, use relative magnitude of re and im rather than absolute\n isImaginary = Math.abs(simp.value.re) < 1e-14;\n }\n for (var i in simp.units) {\n if (hasOwnProperty(simp.units, i)) {\n if (simp.units[i].unit) {\n if (simp.units[i].unit.name === 'VA' && isImaginary) {\n simp.units[i].unit = UNITS.VAR;\n } else if (simp.units[i].unit.name === 'VAR' && !isImaginary) {\n simp.units[i].unit = UNITS.VA;\n }\n }\n }\n }\n\n // Now apply the best prefix\n // Units must have only one unit and not have the fixPrefix flag set\n if (simp.units.length === 1 && !simp.fixPrefix) {\n // Units must have integer powers, otherwise the prefix will change the\n // outputted value by not-an-integer-power-of-ten\n if (Math.abs(simp.units[0].power - Math.round(simp.units[0].power)) < 1e-14) {\n // Apply the best prefix\n simp.units[0].prefix = simp._bestPrefix();\n }\n }\n var value = simp._denormalize(simp.value);\n var str = simp.value !== null ? format(value, options || {}) : '';\n var unitStr = simp.formatUnits();\n if (simp.value && isComplex(simp.value)) {\n str = '(' + str + ')'; // Surround complex values with ( ) to enable better parsing\n }\n if (unitStr.length > 0 && str.length > 0) {\n str += ' ';\n }\n str += unitStr;\n return str;\n };\n\n /**\n * Calculate the best prefix using current value.\n * @memberof Unit\n * @returns {Object} prefix\n * @private\n */\n Unit.prototype._bestPrefix = function () {\n if (this.units.length !== 1) {\n throw new Error('Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!');\n }\n if (Math.abs(this.units[0].power - Math.round(this.units[0].power)) >= 1e-14) {\n throw new Error('Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!');\n }\n\n // find the best prefix value (resulting in the value of which\n // the absolute value of the log10 is closest to zero,\n // though with a little offset of 1.2 for nicer values: you get a\n // sequence 1mm 100mm 500mm 0.6m 1m 10m 100m 500m 0.6km 1km ...\n\n // Note: the units value can be any numeric type, but to find the best\n // prefix it's enough to work with limited precision of a regular number\n // Update: using mathjs abs since we also allow complex numbers\n var absValue = this.value !== null ? abs(this.value) : 0;\n var absUnitValue = abs(this.units[0].unit.value);\n var bestPrefix = this.units[0].prefix;\n if (absValue === 0) {\n return bestPrefix;\n }\n var power = this.units[0].power;\n var bestDiff = Math.log(absValue / Math.pow(bestPrefix.value * absUnitValue, power)) / Math.LN10 - 1.2;\n if (bestDiff > -2.200001 && bestDiff < 1.800001) return bestPrefix; // Allow the original prefix\n bestDiff = Math.abs(bestDiff);\n var prefixes = this.units[0].unit.prefixes;\n for (var p in prefixes) {\n if (hasOwnProperty(prefixes, p)) {\n var prefix = prefixes[p];\n if (prefix.scientific) {\n var diff = Math.abs(Math.log(absValue / Math.pow(prefix.value * absUnitValue, power)) / Math.LN10 - 1.2);\n if (diff < bestDiff || diff === bestDiff && prefix.name.length < bestPrefix.name.length) {\n // choose the prefix with the smallest diff, or if equal, choose the one\n // with the shortest name (can happen with SHORTLONG for example)\n bestPrefix = prefix;\n bestDiff = diff;\n }\n }\n }\n }\n return bestPrefix;\n };\n\n /**\n * Returns an array of units whose sum is equal to this unit\n * @memberof Unit\n * @param {Array} [parts] An array of strings or valueless units.\n *\n * Example:\n *\n * const u = new Unit(1, 'm')\n * u.splitUnit(['feet', 'inch'])\n * [ 3 feet, 3.3700787401575 inch ]\n *\n * @return {Array} An array of units.\n */\n Unit.prototype.splitUnit = function (parts) {\n var x = this.clone();\n var ret = [];\n for (var i = 0; i < parts.length; i++) {\n // Convert x to the requested unit\n x = x.to(parts[i]);\n if (i === parts.length - 1) break;\n\n // Get the numeric value of this unit\n var xNumeric = x.toNumeric();\n\n // Check to see if xNumeric is nearly equal to an integer,\n // since fix can incorrectly round down if there is round-off error\n var xRounded = round(xNumeric);\n var xFixed = void 0;\n var isNearlyEqual = equal(xRounded, xNumeric);\n if (isNearlyEqual) {\n xFixed = xRounded;\n } else {\n xFixed = fix(x.toNumeric());\n }\n var y = new Unit(xFixed, parts[i].toString());\n ret.push(y);\n x = subtractScalar(x, y);\n }\n\n // This little bit fixes a bug where the remainder should be 0 but is a little bit off.\n // But instead of comparing x, the remainder, with zero--we will compare the sum of\n // all the parts so far with the original value. If they are nearly equal,\n // we set the remainder to 0.\n var testSum = 0;\n for (var _i5 = 0; _i5 < ret.length; _i5++) {\n testSum = addScalar(testSum, ret[_i5].value);\n }\n if (equal(testSum, this.value)) {\n x.value = 0;\n }\n ret.push(x);\n return ret;\n };\n var PREFIXES = {\n NONE: {\n '': {\n name: '',\n value: 1,\n scientific: true\n }\n },\n SHORT: {\n '': {\n name: '',\n value: 1,\n scientific: true\n },\n da: {\n name: 'da',\n value: 1e1,\n scientific: false\n },\n h: {\n name: 'h',\n value: 1e2,\n scientific: false\n },\n k: {\n name: 'k',\n value: 1e3,\n scientific: true\n },\n M: {\n name: 'M',\n value: 1e6,\n scientific: true\n },\n G: {\n name: 'G',\n value: 1e9,\n scientific: true\n },\n T: {\n name: 'T',\n value: 1e12,\n scientific: true\n },\n P: {\n name: 'P',\n value: 1e15,\n scientific: true\n },\n E: {\n name: 'E',\n value: 1e18,\n scientific: true\n },\n Z: {\n name: 'Z',\n value: 1e21,\n scientific: true\n },\n Y: {\n name: 'Y',\n value: 1e24,\n scientific: true\n },\n R: {\n name: 'R',\n value: 1e27,\n scientific: true\n },\n Q: {\n name: 'Q',\n value: 1e30,\n scientific: true\n },\n d: {\n name: 'd',\n value: 1e-1,\n scientific: false\n },\n c: {\n name: 'c',\n value: 1e-2,\n scientific: false\n },\n m: {\n name: 'm',\n value: 1e-3,\n scientific: true\n },\n u: {\n name: 'u',\n value: 1e-6,\n scientific: true\n },\n n: {\n name: 'n',\n value: 1e-9,\n scientific: true\n },\n p: {\n name: 'p',\n value: 1e-12,\n scientific: true\n },\n f: {\n name: 'f',\n value: 1e-15,\n scientific: true\n },\n a: {\n name: 'a',\n value: 1e-18,\n scientific: true\n },\n z: {\n name: 'z',\n value: 1e-21,\n scientific: true\n },\n y: {\n name: 'y',\n value: 1e-24,\n scientific: true\n },\n r: {\n name: 'r',\n value: 1e-27,\n scientific: true\n },\n q: {\n name: 'q',\n value: 1e-30,\n scientific: true\n }\n },\n LONG: {\n '': {\n name: '',\n value: 1,\n scientific: true\n },\n deca: {\n name: 'deca',\n value: 1e1,\n scientific: false\n },\n hecto: {\n name: 'hecto',\n value: 1e2,\n scientific: false\n },\n kilo: {\n name: 'kilo',\n value: 1e3,\n scientific: true\n },\n mega: {\n name: 'mega',\n value: 1e6,\n scientific: true\n },\n giga: {\n name: 'giga',\n value: 1e9,\n scientific: true\n },\n tera: {\n name: 'tera',\n value: 1e12,\n scientific: true\n },\n peta: {\n name: 'peta',\n value: 1e15,\n scientific: true\n },\n exa: {\n name: 'exa',\n value: 1e18,\n scientific: true\n },\n zetta: {\n name: 'zetta',\n value: 1e21,\n scientific: true\n },\n yotta: {\n name: 'yotta',\n value: 1e24,\n scientific: true\n },\n ronna: {\n name: 'ronna',\n value: 1e27,\n scientific: true\n },\n quetta: {\n name: 'quetta',\n value: 1e30,\n scientific: true\n },\n deci: {\n name: 'deci',\n value: 1e-1,\n scientific: false\n },\n centi: {\n name: 'centi',\n value: 1e-2,\n scientific: false\n },\n milli: {\n name: 'milli',\n value: 1e-3,\n scientific: true\n },\n micro: {\n name: 'micro',\n value: 1e-6,\n scientific: true\n },\n nano: {\n name: 'nano',\n value: 1e-9,\n scientific: true\n },\n pico: {\n name: 'pico',\n value: 1e-12,\n scientific: true\n },\n femto: {\n name: 'femto',\n value: 1e-15,\n scientific: true\n },\n atto: {\n name: 'atto',\n value: 1e-18,\n scientific: true\n },\n zepto: {\n name: 'zepto',\n value: 1e-21,\n scientific: true\n },\n yocto: {\n name: 'yocto',\n value: 1e-24,\n scientific: true\n },\n ronto: {\n name: 'ronto',\n value: 1e-27,\n scientific: true\n },\n quecto: {\n name: 'quecto',\n value: 1e-30,\n scientific: true\n }\n },\n SQUARED: {\n '': {\n name: '',\n value: 1,\n scientific: true\n },\n da: {\n name: 'da',\n value: 1e2,\n scientific: false\n },\n h: {\n name: 'h',\n value: 1e4,\n scientific: false\n },\n k: {\n name: 'k',\n value: 1e6,\n scientific: true\n },\n M: {\n name: 'M',\n value: 1e12,\n scientific: true\n },\n G: {\n name: 'G',\n value: 1e18,\n scientific: true\n },\n T: {\n name: 'T',\n value: 1e24,\n scientific: true\n },\n P: {\n name: 'P',\n value: 1e30,\n scientific: true\n },\n E: {\n name: 'E',\n value: 1e36,\n scientific: true\n },\n Z: {\n name: 'Z',\n value: 1e42,\n scientific: true\n },\n Y: {\n name: 'Y',\n value: 1e48,\n scientific: true\n },\n R: {\n name: 'R',\n value: 1e54,\n scientific: true\n },\n Q: {\n name: 'Q',\n value: 1e60,\n scientific: true\n },\n d: {\n name: 'd',\n value: 1e-2,\n scientific: false\n },\n c: {\n name: 'c',\n value: 1e-4,\n scientific: false\n },\n m: {\n name: 'm',\n value: 1e-6,\n scientific: true\n },\n u: {\n name: 'u',\n value: 1e-12,\n scientific: true\n },\n n: {\n name: 'n',\n value: 1e-18,\n scientific: true\n },\n p: {\n name: 'p',\n value: 1e-24,\n scientific: true\n },\n f: {\n name: 'f',\n value: 1e-30,\n scientific: true\n },\n a: {\n name: 'a',\n value: 1e-36,\n scientific: true\n },\n z: {\n name: 'z',\n value: 1e-42,\n scientific: true\n },\n y: {\n name: 'y',\n value: 1e-48,\n scientific: true\n },\n r: {\n name: 'r',\n value: 1e-54,\n scientific: true\n },\n q: {\n name: 'q',\n value: 1e-60,\n scientific: true\n }\n },\n CUBIC: {\n '': {\n name: '',\n value: 1,\n scientific: true\n },\n da: {\n name: 'da',\n value: 1e3,\n scientific: false\n },\n h: {\n name: 'h',\n value: 1e6,\n scientific: false\n },\n k: {\n name: 'k',\n value: 1e9,\n scientific: true\n },\n M: {\n name: 'M',\n value: 1e18,\n scientific: true\n },\n G: {\n name: 'G',\n value: 1e27,\n scientific: true\n },\n T: {\n name: 'T',\n value: 1e36,\n scientific: true\n },\n P: {\n name: 'P',\n value: 1e45,\n scientific: true\n },\n E: {\n name: 'E',\n value: 1e54,\n scientific: true\n },\n Z: {\n name: 'Z',\n value: 1e63,\n scientific: true\n },\n Y: {\n name: 'Y',\n value: 1e72,\n scientific: true\n },\n R: {\n name: 'R',\n value: 1e81,\n scientific: true\n },\n Q: {\n name: 'Q',\n value: 1e90,\n scientific: true\n },\n d: {\n name: 'd',\n value: 1e-3,\n scientific: false\n },\n c: {\n name: 'c',\n value: 1e-6,\n scientific: false\n },\n m: {\n name: 'm',\n value: 1e-9,\n scientific: true\n },\n u: {\n name: 'u',\n value: 1e-18,\n scientific: true\n },\n n: {\n name: 'n',\n value: 1e-27,\n scientific: true\n },\n p: {\n name: 'p',\n value: 1e-36,\n scientific: true\n },\n f: {\n name: 'f',\n value: 1e-45,\n scientific: true\n },\n a: {\n name: 'a',\n value: 1e-54,\n scientific: true\n },\n z: {\n name: 'z',\n value: 1e-63,\n scientific: true\n },\n y: {\n name: 'y',\n value: 1e-72,\n scientific: true\n },\n r: {\n name: 'r',\n value: 1e-81,\n scientific: true\n },\n q: {\n name: 'q',\n value: 1e-90,\n scientific: true\n }\n },\n BINARY_SHORT_SI: {\n '': {\n name: '',\n value: 1,\n scientific: true\n },\n k: {\n name: 'k',\n value: 1e3,\n scientific: true\n },\n M: {\n name: 'M',\n value: 1e6,\n scientific: true\n },\n G: {\n name: 'G',\n value: 1e9,\n scientific: true\n },\n T: {\n name: 'T',\n value: 1e12,\n scientific: true\n },\n P: {\n name: 'P',\n value: 1e15,\n scientific: true\n },\n E: {\n name: 'E',\n value: 1e18,\n scientific: true\n },\n Z: {\n name: 'Z',\n value: 1e21,\n scientific: true\n },\n Y: {\n name: 'Y',\n value: 1e24,\n scientific: true\n }\n },\n BINARY_SHORT_IEC: {\n '': {\n name: '',\n value: 1,\n scientific: true\n },\n Ki: {\n name: 'Ki',\n value: 1024,\n scientific: true\n },\n Mi: {\n name: 'Mi',\n value: Math.pow(1024, 2),\n scientific: true\n },\n Gi: {\n name: 'Gi',\n value: Math.pow(1024, 3),\n scientific: true\n },\n Ti: {\n name: 'Ti',\n value: Math.pow(1024, 4),\n scientific: true\n },\n Pi: {\n name: 'Pi',\n value: Math.pow(1024, 5),\n scientific: true\n },\n Ei: {\n name: 'Ei',\n value: Math.pow(1024, 6),\n scientific: true\n },\n Zi: {\n name: 'Zi',\n value: Math.pow(1024, 7),\n scientific: true\n },\n Yi: {\n name: 'Yi',\n value: Math.pow(1024, 8),\n scientific: true\n }\n },\n BINARY_LONG_SI: {\n '': {\n name: '',\n value: 1,\n scientific: true\n },\n kilo: {\n name: 'kilo',\n value: 1e3,\n scientific: true\n },\n mega: {\n name: 'mega',\n value: 1e6,\n scientific: true\n },\n giga: {\n name: 'giga',\n value: 1e9,\n scientific: true\n },\n tera: {\n name: 'tera',\n value: 1e12,\n scientific: true\n },\n peta: {\n name: 'peta',\n value: 1e15,\n scientific: true\n },\n exa: {\n name: 'exa',\n value: 1e18,\n scientific: true\n },\n zetta: {\n name: 'zetta',\n value: 1e21,\n scientific: true\n },\n yotta: {\n name: 'yotta',\n value: 1e24,\n scientific: true\n }\n },\n BINARY_LONG_IEC: {\n '': {\n name: '',\n value: 1,\n scientific: true\n },\n kibi: {\n name: 'kibi',\n value: 1024,\n scientific: true\n },\n mebi: {\n name: 'mebi',\n value: Math.pow(1024, 2),\n scientific: true\n },\n gibi: {\n name: 'gibi',\n value: Math.pow(1024, 3),\n scientific: true\n },\n tebi: {\n name: 'tebi',\n value: Math.pow(1024, 4),\n scientific: true\n },\n pebi: {\n name: 'pebi',\n value: Math.pow(1024, 5),\n scientific: true\n },\n exi: {\n name: 'exi',\n value: Math.pow(1024, 6),\n scientific: true\n },\n zebi: {\n name: 'zebi',\n value: Math.pow(1024, 7),\n scientific: true\n },\n yobi: {\n name: 'yobi',\n value: Math.pow(1024, 8),\n scientific: true\n }\n },\n BTU: {\n '': {\n name: '',\n value: 1,\n scientific: true\n },\n MM: {\n name: 'MM',\n value: 1e6,\n scientific: true\n }\n }\n };\n PREFIXES.SHORTLONG = _extends({}, PREFIXES.SHORT, PREFIXES.LONG);\n PREFIXES.BINARY_SHORT = _extends({}, PREFIXES.BINARY_SHORT_SI, PREFIXES.BINARY_SHORT_IEC);\n PREFIXES.BINARY_LONG = _extends({}, PREFIXES.BINARY_LONG_SI, PREFIXES.BINARY_LONG_IEC);\n\n /* Internally, each unit is represented by a value and a dimension array. The elements of the dimensions array have the following meaning:\n * Index Dimension\n * ----- ---------\n * 0 Length\n * 1 Mass\n * 2 Time\n * 3 Current\n * 4 Temperature\n * 5 Luminous intensity\n * 6 Amount of substance\n * 7 Angle\n * 8 Bit (digital)\n * For example, the unit \"298.15 K\" is a pure temperature and would have a value of 298.15 and a dimension array of [0, 0, 0, 0, 1, 0, 0, 0, 0]. The unit \"1 cal / (gm \u00B0C)\" can be written in terms of the 9 fundamental dimensions as [length^2] / ([time^2] * [temperature]), and would a value of (after conversion to SI) 4184.0 and a dimensions array of [2, 0, -2, 0, -1, 0, 0, 0, 0].\n *\n */\n\n var BASE_DIMENSIONS = ['MASS', 'LENGTH', 'TIME', 'CURRENT', 'TEMPERATURE', 'LUMINOUS_INTENSITY', 'AMOUNT_OF_SUBSTANCE', 'ANGLE', 'BIT'];\n var BASE_UNITS = {\n NONE: {\n dimensions: [0, 0, 0, 0, 0, 0, 0, 0, 0]\n },\n MASS: {\n dimensions: [1, 0, 0, 0, 0, 0, 0, 0, 0]\n },\n LENGTH: {\n dimensions: [0, 1, 0, 0, 0, 0, 0, 0, 0]\n },\n TIME: {\n dimensions: [0, 0, 1, 0, 0, 0, 0, 0, 0]\n },\n CURRENT: {\n dimensions: [0, 0, 0, 1, 0, 0, 0, 0, 0]\n },\n TEMPERATURE: {\n dimensions: [0, 0, 0, 0, 1, 0, 0, 0, 0]\n },\n LUMINOUS_INTENSITY: {\n dimensions: [0, 0, 0, 0, 0, 1, 0, 0, 0]\n },\n AMOUNT_OF_SUBSTANCE: {\n dimensions: [0, 0, 0, 0, 0, 0, 1, 0, 0]\n },\n FORCE: {\n dimensions: [1, 1, -2, 0, 0, 0, 0, 0, 0]\n },\n SURFACE: {\n dimensions: [0, 2, 0, 0, 0, 0, 0, 0, 0]\n },\n VOLUME: {\n dimensions: [0, 3, 0, 0, 0, 0, 0, 0, 0]\n },\n ENERGY: {\n dimensions: [1, 2, -2, 0, 0, 0, 0, 0, 0]\n },\n POWER: {\n dimensions: [1, 2, -3, 0, 0, 0, 0, 0, 0]\n },\n PRESSURE: {\n dimensions: [1, -1, -2, 0, 0, 0, 0, 0, 0]\n },\n ELECTRIC_CHARGE: {\n dimensions: [0, 0, 1, 1, 0, 0, 0, 0, 0]\n },\n ELECTRIC_CAPACITANCE: {\n dimensions: [-1, -2, 4, 2, 0, 0, 0, 0, 0]\n },\n ELECTRIC_POTENTIAL: {\n dimensions: [1, 2, -3, -1, 0, 0, 0, 0, 0]\n },\n ELECTRIC_RESISTANCE: {\n dimensions: [1, 2, -3, -2, 0, 0, 0, 0, 0]\n },\n ELECTRIC_INDUCTANCE: {\n dimensions: [1, 2, -2, -2, 0, 0, 0, 0, 0]\n },\n ELECTRIC_CONDUCTANCE: {\n dimensions: [-1, -2, 3, 2, 0, 0, 0, 0, 0]\n },\n MAGNETIC_FLUX: {\n dimensions: [1, 2, -2, -1, 0, 0, 0, 0, 0]\n },\n MAGNETIC_FLUX_DENSITY: {\n dimensions: [1, 0, -2, -1, 0, 0, 0, 0, 0]\n },\n FREQUENCY: {\n dimensions: [0, 0, -1, 0, 0, 0, 0, 0, 0]\n },\n ANGLE: {\n dimensions: [0, 0, 0, 0, 0, 0, 0, 1, 0]\n },\n BIT: {\n dimensions: [0, 0, 0, 0, 0, 0, 0, 0, 1]\n }\n };\n for (var key in BASE_UNITS) {\n if (hasOwnProperty(BASE_UNITS, key)) {\n BASE_UNITS[key].key = key;\n }\n }\n var BASE_UNIT_NONE = {};\n var UNIT_NONE = {\n name: '',\n base: BASE_UNIT_NONE,\n value: 1,\n offset: 0,\n dimensions: BASE_DIMENSIONS.map(x => 0)\n };\n var UNITS = {\n // length\n meter: {\n name: 'meter',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n inch: {\n name: 'inch',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 0.0254,\n offset: 0\n },\n foot: {\n name: 'foot',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 0.3048,\n offset: 0\n },\n yard: {\n name: 'yard',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 0.9144,\n offset: 0\n },\n mile: {\n name: 'mile',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 1609.344,\n offset: 0\n },\n link: {\n name: 'link',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 0.201168,\n offset: 0\n },\n rod: {\n name: 'rod',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 5.0292,\n offset: 0\n },\n chain: {\n name: 'chain',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 20.1168,\n offset: 0\n },\n angstrom: {\n name: 'angstrom',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 1e-10,\n offset: 0\n },\n m: {\n name: 'm',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n in: {\n name: 'in',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 0.0254,\n offset: 0\n },\n ft: {\n name: 'ft',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 0.3048,\n offset: 0\n },\n yd: {\n name: 'yd',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 0.9144,\n offset: 0\n },\n mi: {\n name: 'mi',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 1609.344,\n offset: 0\n },\n li: {\n name: 'li',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 0.201168,\n offset: 0\n },\n rd: {\n name: 'rd',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 5.029210,\n offset: 0\n },\n ch: {\n name: 'ch',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 20.1168,\n offset: 0\n },\n mil: {\n name: 'mil',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 0.0000254,\n offset: 0\n },\n // 1/1000 inch\n\n // Surface\n m2: {\n name: 'm2',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.SQUARED,\n value: 1,\n offset: 0\n },\n sqin: {\n name: 'sqin',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.NONE,\n value: 0.00064516,\n offset: 0\n },\n // 645.16 mm2\n sqft: {\n name: 'sqft',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.NONE,\n value: 0.09290304,\n offset: 0\n },\n // 0.09290304 m2\n sqyd: {\n name: 'sqyd',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.NONE,\n value: 0.83612736,\n offset: 0\n },\n // 0.83612736 m2\n sqmi: {\n name: 'sqmi',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.NONE,\n value: 2589988.110336,\n offset: 0\n },\n // 2.589988110336 km2\n sqrd: {\n name: 'sqrd',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.NONE,\n value: 25.29295,\n offset: 0\n },\n // 25.29295 m2\n sqch: {\n name: 'sqch',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.NONE,\n value: 404.6873,\n offset: 0\n },\n // 404.6873 m2\n sqmil: {\n name: 'sqmil',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.NONE,\n value: 6.4516e-10,\n offset: 0\n },\n // 6.4516 * 10^-10 m2\n acre: {\n name: 'acre',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.NONE,\n value: 4046.86,\n offset: 0\n },\n // 4046.86 m2\n hectare: {\n name: 'hectare',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.NONE,\n value: 10000,\n offset: 0\n },\n // 10000 m2\n\n // Volume\n m3: {\n name: 'm3',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.CUBIC,\n value: 1,\n offset: 0\n },\n L: {\n name: 'L',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.SHORT,\n value: 0.001,\n offset: 0\n },\n // litre\n l: {\n name: 'l',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.SHORT,\n value: 0.001,\n offset: 0\n },\n // litre\n litre: {\n name: 'litre',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.LONG,\n value: 0.001,\n offset: 0\n },\n cuin: {\n name: 'cuin',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 1.6387064e-5,\n offset: 0\n },\n // 1.6387064e-5 m3\n cuft: {\n name: 'cuft',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.028316846592,\n offset: 0\n },\n // 28.316 846 592 L\n cuyd: {\n name: 'cuyd',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.764554857984,\n offset: 0\n },\n // 764.554 857 984 L\n teaspoon: {\n name: 'teaspoon',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.000005,\n offset: 0\n },\n // 5 mL\n tablespoon: {\n name: 'tablespoon',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.000015,\n offset: 0\n },\n // 15 mL\n // {name: 'cup', base: BASE_UNITS.VOLUME, prefixes: PREFIXES.NONE, value: 0.000240, offset: 0}, // 240 mL // not possible, we have already another cup\n drop: {\n name: 'drop',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 5e-8,\n offset: 0\n },\n // 0.05 mL = 5e-8 m3\n gtt: {\n name: 'gtt',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 5e-8,\n offset: 0\n },\n // 0.05 mL = 5e-8 m3\n\n // Liquid volume\n minim: {\n name: 'minim',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.000000061611519921875,\n offset: 0\n },\n // 1/61440 gallons\n fluiddram: {\n name: 'fluiddram',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.0000036966911953125,\n offset: 0\n },\n // 1/1024 gallons\n fluidounce: {\n name: 'fluidounce',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.0000295735295625,\n offset: 0\n },\n // 1/128 gallons\n gill: {\n name: 'gill',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.00011829411825,\n offset: 0\n },\n // 1/32 gallons\n cc: {\n name: 'cc',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 1e-6,\n offset: 0\n },\n // 1e-6 L\n cup: {\n name: 'cup',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.0002365882365,\n offset: 0\n },\n // 1/16 gallons\n pint: {\n name: 'pint',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.000473176473,\n offset: 0\n },\n // 1/8 gallons\n quart: {\n name: 'quart',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.000946352946,\n offset: 0\n },\n // 1/4 gallons\n gallon: {\n name: 'gallon',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.003785411784,\n offset: 0\n },\n // 3.785411784 L\n beerbarrel: {\n name: 'beerbarrel',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.117347765304,\n offset: 0\n },\n // 31 gallons\n oilbarrel: {\n name: 'oilbarrel',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.158987294928,\n offset: 0\n },\n // 42 gallons\n hogshead: {\n name: 'hogshead',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.238480942392,\n offset: 0\n },\n // 63 gallons\n\n // Mass\n g: {\n name: 'g',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.SHORT,\n value: 0.001,\n offset: 0\n },\n gram: {\n name: 'gram',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.LONG,\n value: 0.001,\n offset: 0\n },\n ton: {\n name: 'ton',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.SHORT,\n value: 907.18474,\n offset: 0\n },\n t: {\n name: 't',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.SHORT,\n value: 1000,\n offset: 0\n },\n tonne: {\n name: 'tonne',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.LONG,\n value: 1000,\n offset: 0\n },\n grain: {\n name: 'grain',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 64.79891e-6,\n offset: 0\n },\n dram: {\n name: 'dram',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 1.7718451953125e-3,\n offset: 0\n },\n ounce: {\n name: 'ounce',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 28.349523125e-3,\n offset: 0\n },\n poundmass: {\n name: 'poundmass',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 453.59237e-3,\n offset: 0\n },\n hundredweight: {\n name: 'hundredweight',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 45.359237,\n offset: 0\n },\n stick: {\n name: 'stick',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 115e-3,\n offset: 0\n },\n stone: {\n name: 'stone',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 6.35029318,\n offset: 0\n },\n gr: {\n name: 'gr',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 64.79891e-6,\n offset: 0\n },\n dr: {\n name: 'dr',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 1.7718451953125e-3,\n offset: 0\n },\n oz: {\n name: 'oz',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 28.349523125e-3,\n offset: 0\n },\n lbm: {\n name: 'lbm',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 453.59237e-3,\n offset: 0\n },\n cwt: {\n name: 'cwt',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 45.359237,\n offset: 0\n },\n // Time\n s: {\n name: 's',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n min: {\n name: 'min',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 60,\n offset: 0\n },\n h: {\n name: 'h',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 3600,\n offset: 0\n },\n second: {\n name: 'second',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n sec: {\n name: 'sec',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n minute: {\n name: 'minute',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 60,\n offset: 0\n },\n hour: {\n name: 'hour',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 3600,\n offset: 0\n },\n day: {\n name: 'day',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 86400,\n offset: 0\n },\n week: {\n name: 'week',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 7 * 86400,\n offset: 0\n },\n month: {\n name: 'month',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 2629800,\n // 1/12th of Julian year\n offset: 0\n },\n year: {\n name: 'year',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 31557600,\n // Julian year\n offset: 0\n },\n decade: {\n name: 'decade',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 315576000,\n // Julian decade\n offset: 0\n },\n century: {\n name: 'century',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 3155760000,\n // Julian century\n offset: 0\n },\n millennium: {\n name: 'millennium',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 31557600000,\n // Julian millennium\n offset: 0\n },\n // Frequency\n hertz: {\n name: 'Hertz',\n base: BASE_UNITS.FREQUENCY,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0,\n reciprocal: true\n },\n Hz: {\n name: 'Hz',\n base: BASE_UNITS.FREQUENCY,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0,\n reciprocal: true\n },\n // Angle\n rad: {\n name: 'rad',\n base: BASE_UNITS.ANGLE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n radian: {\n name: 'radian',\n base: BASE_UNITS.ANGLE,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n // deg = rad / (2*pi) * 360 = rad / 0.017453292519943295769236907684888\n deg: {\n name: 'deg',\n base: BASE_UNITS.ANGLE,\n prefixes: PREFIXES.SHORT,\n value: null,\n // will be filled in by calculateAngleValues()\n offset: 0\n },\n degree: {\n name: 'degree',\n base: BASE_UNITS.ANGLE,\n prefixes: PREFIXES.LONG,\n value: null,\n // will be filled in by calculateAngleValues()\n offset: 0\n },\n // grad = rad / (2*pi) * 400 = rad / 0.015707963267948966192313216916399\n grad: {\n name: 'grad',\n base: BASE_UNITS.ANGLE,\n prefixes: PREFIXES.SHORT,\n value: null,\n // will be filled in by calculateAngleValues()\n offset: 0\n },\n gradian: {\n name: 'gradian',\n base: BASE_UNITS.ANGLE,\n prefixes: PREFIXES.LONG,\n value: null,\n // will be filled in by calculateAngleValues()\n offset: 0\n },\n // cycle = rad / (2*pi) = rad / 6.2831853071795864769252867665793\n cycle: {\n name: 'cycle',\n base: BASE_UNITS.ANGLE,\n prefixes: PREFIXES.NONE,\n value: null,\n // will be filled in by calculateAngleValues()\n offset: 0\n },\n // arcsec = rad / (3600 * (360 / 2 * pi)) = rad / 0.0000048481368110953599358991410235795\n arcsec: {\n name: 'arcsec',\n base: BASE_UNITS.ANGLE,\n prefixes: PREFIXES.NONE,\n value: null,\n // will be filled in by calculateAngleValues()\n offset: 0\n },\n // arcmin = rad / (60 * (360 / 2 * pi)) = rad / 0.00029088820866572159615394846141477\n arcmin: {\n name: 'arcmin',\n base: BASE_UNITS.ANGLE,\n prefixes: PREFIXES.NONE,\n value: null,\n // will be filled in by calculateAngleValues()\n offset: 0\n },\n // Electric current\n A: {\n name: 'A',\n base: BASE_UNITS.CURRENT,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n ampere: {\n name: 'ampere',\n base: BASE_UNITS.CURRENT,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n // Temperature\n // K(C) = \u00B0C + 273.15\n // K(F) = (\u00B0F + 459.67) * (5 / 9)\n // K(R) = \u00B0R * (5 / 9)\n K: {\n name: 'K',\n base: BASE_UNITS.TEMPERATURE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n degC: {\n name: 'degC',\n base: BASE_UNITS.TEMPERATURE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 273.15\n },\n degF: {\n name: 'degF',\n base: BASE_UNITS.TEMPERATURE,\n prefixes: PREFIXES.SHORT,\n value: new _Fraction(5, 9),\n offset: 459.67\n },\n degR: {\n name: 'degR',\n base: BASE_UNITS.TEMPERATURE,\n prefixes: PREFIXES.SHORT,\n value: new _Fraction(5, 9),\n offset: 0\n },\n kelvin: {\n name: 'kelvin',\n base: BASE_UNITS.TEMPERATURE,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n celsius: {\n name: 'celsius',\n base: BASE_UNITS.TEMPERATURE,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 273.15\n },\n fahrenheit: {\n name: 'fahrenheit',\n base: BASE_UNITS.TEMPERATURE,\n prefixes: PREFIXES.LONG,\n value: new _Fraction(5, 9),\n offset: 459.67\n },\n rankine: {\n name: 'rankine',\n base: BASE_UNITS.TEMPERATURE,\n prefixes: PREFIXES.LONG,\n value: new _Fraction(5, 9),\n offset: 0\n },\n // amount of substance\n mol: {\n name: 'mol',\n base: BASE_UNITS.AMOUNT_OF_SUBSTANCE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n mole: {\n name: 'mole',\n base: BASE_UNITS.AMOUNT_OF_SUBSTANCE,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n // luminous intensity\n cd: {\n name: 'cd',\n base: BASE_UNITS.LUMINOUS_INTENSITY,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n candela: {\n name: 'candela',\n base: BASE_UNITS.LUMINOUS_INTENSITY,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n // TODO: units STERADIAN\n // {name: 'sr', base: BASE_UNITS.STERADIAN, prefixes: PREFIXES.NONE, value: 1, offset: 0},\n // {name: 'steradian', base: BASE_UNITS.STERADIAN, prefixes: PREFIXES.NONE, value: 1, offset: 0},\n\n // Force\n N: {\n name: 'N',\n base: BASE_UNITS.FORCE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n newton: {\n name: 'newton',\n base: BASE_UNITS.FORCE,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n dyn: {\n name: 'dyn',\n base: BASE_UNITS.FORCE,\n prefixes: PREFIXES.SHORT,\n value: 0.00001,\n offset: 0\n },\n dyne: {\n name: 'dyne',\n base: BASE_UNITS.FORCE,\n prefixes: PREFIXES.LONG,\n value: 0.00001,\n offset: 0\n },\n lbf: {\n name: 'lbf',\n base: BASE_UNITS.FORCE,\n prefixes: PREFIXES.NONE,\n value: 4.4482216152605,\n offset: 0\n },\n poundforce: {\n name: 'poundforce',\n base: BASE_UNITS.FORCE,\n prefixes: PREFIXES.NONE,\n value: 4.4482216152605,\n offset: 0\n },\n kip: {\n name: 'kip',\n base: BASE_UNITS.FORCE,\n prefixes: PREFIXES.LONG,\n value: 4448.2216,\n offset: 0\n },\n kilogramforce: {\n name: 'kilogramforce',\n base: BASE_UNITS.FORCE,\n prefixes: PREFIXES.NONE,\n value: 9.80665,\n offset: 0\n },\n // Energy\n J: {\n name: 'J',\n base: BASE_UNITS.ENERGY,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n joule: {\n name: 'joule',\n base: BASE_UNITS.ENERGY,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n erg: {\n name: 'erg',\n base: BASE_UNITS.ENERGY,\n prefixes: PREFIXES.SHORTLONG,\n // Both kiloerg and kerg are acceptable\n value: 1e-7,\n offset: 0\n },\n Wh: {\n name: 'Wh',\n base: BASE_UNITS.ENERGY,\n prefixes: PREFIXES.SHORT,\n value: 3600,\n offset: 0\n },\n BTU: {\n name: 'BTU',\n base: BASE_UNITS.ENERGY,\n prefixes: PREFIXES.BTU,\n value: 1055.05585262,\n offset: 0\n },\n eV: {\n name: 'eV',\n base: BASE_UNITS.ENERGY,\n prefixes: PREFIXES.SHORT,\n value: 1.602176565e-19,\n offset: 0\n },\n electronvolt: {\n name: 'electronvolt',\n base: BASE_UNITS.ENERGY,\n prefixes: PREFIXES.LONG,\n value: 1.602176565e-19,\n offset: 0\n },\n // Power\n W: {\n name: 'W',\n base: BASE_UNITS.POWER,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n watt: {\n name: 'watt',\n base: BASE_UNITS.POWER,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n hp: {\n name: 'hp',\n base: BASE_UNITS.POWER,\n prefixes: PREFIXES.NONE,\n value: 745.6998715386,\n offset: 0\n },\n // Electrical power units\n VAR: {\n name: 'VAR',\n base: BASE_UNITS.POWER,\n prefixes: PREFIXES.SHORT,\n value: Complex.I,\n offset: 0\n },\n VA: {\n name: 'VA',\n base: BASE_UNITS.POWER,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n // Pressure\n Pa: {\n name: 'Pa',\n base: BASE_UNITS.PRESSURE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n psi: {\n name: 'psi',\n base: BASE_UNITS.PRESSURE,\n prefixes: PREFIXES.NONE,\n value: 6894.75729276459,\n offset: 0\n },\n atm: {\n name: 'atm',\n base: BASE_UNITS.PRESSURE,\n prefixes: PREFIXES.NONE,\n value: 101325,\n offset: 0\n },\n bar: {\n name: 'bar',\n base: BASE_UNITS.PRESSURE,\n prefixes: PREFIXES.SHORTLONG,\n value: 100000,\n offset: 0\n },\n torr: {\n name: 'torr',\n base: BASE_UNITS.PRESSURE,\n prefixes: PREFIXES.NONE,\n value: 133.322,\n offset: 0\n },\n mmHg: {\n name: 'mmHg',\n base: BASE_UNITS.PRESSURE,\n prefixes: PREFIXES.NONE,\n value: 133.322,\n offset: 0\n },\n mmH2O: {\n name: 'mmH2O',\n base: BASE_UNITS.PRESSURE,\n prefixes: PREFIXES.NONE,\n value: 9.80665,\n offset: 0\n },\n cmH2O: {\n name: 'cmH2O',\n base: BASE_UNITS.PRESSURE,\n prefixes: PREFIXES.NONE,\n value: 98.0665,\n offset: 0\n },\n // Electric charge\n coulomb: {\n name: 'coulomb',\n base: BASE_UNITS.ELECTRIC_CHARGE,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n C: {\n name: 'C',\n base: BASE_UNITS.ELECTRIC_CHARGE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n // Electric capacitance\n farad: {\n name: 'farad',\n base: BASE_UNITS.ELECTRIC_CAPACITANCE,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n F: {\n name: 'F',\n base: BASE_UNITS.ELECTRIC_CAPACITANCE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n // Electric potential\n volt: {\n name: 'volt',\n base: BASE_UNITS.ELECTRIC_POTENTIAL,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n V: {\n name: 'V',\n base: BASE_UNITS.ELECTRIC_POTENTIAL,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n // Electric resistance\n ohm: {\n name: 'ohm',\n base: BASE_UNITS.ELECTRIC_RESISTANCE,\n prefixes: PREFIXES.SHORTLONG,\n // Both Mohm and megaohm are acceptable\n value: 1,\n offset: 0\n },\n /*\n * Unicode breaks in browsers if charset is not specified\n \u03A9: {\n name: '\u03A9',\n base: BASE_UNITS.ELECTRIC_RESISTANCE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n */\n // Electric inductance\n henry: {\n name: 'henry',\n base: BASE_UNITS.ELECTRIC_INDUCTANCE,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n H: {\n name: 'H',\n base: BASE_UNITS.ELECTRIC_INDUCTANCE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n // Electric conductance\n siemens: {\n name: 'siemens',\n base: BASE_UNITS.ELECTRIC_CONDUCTANCE,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n S: {\n name: 'S',\n base: BASE_UNITS.ELECTRIC_CONDUCTANCE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n // Magnetic flux\n weber: {\n name: 'weber',\n base: BASE_UNITS.MAGNETIC_FLUX,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n Wb: {\n name: 'Wb',\n base: BASE_UNITS.MAGNETIC_FLUX,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n // Magnetic flux density\n tesla: {\n name: 'tesla',\n base: BASE_UNITS.MAGNETIC_FLUX_DENSITY,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n T: {\n name: 'T',\n base: BASE_UNITS.MAGNETIC_FLUX_DENSITY,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n // Binary\n b: {\n name: 'b',\n base: BASE_UNITS.BIT,\n prefixes: PREFIXES.BINARY_SHORT,\n value: 1,\n offset: 0\n },\n bits: {\n name: 'bits',\n base: BASE_UNITS.BIT,\n prefixes: PREFIXES.BINARY_LONG,\n value: 1,\n offset: 0\n },\n B: {\n name: 'B',\n base: BASE_UNITS.BIT,\n prefixes: PREFIXES.BINARY_SHORT,\n value: 8,\n offset: 0\n },\n bytes: {\n name: 'bytes',\n base: BASE_UNITS.BIT,\n prefixes: PREFIXES.BINARY_LONG,\n value: 8,\n offset: 0\n }\n };\n\n // aliases (formerly plurals)\n // note that ALIASES is only used at creation to create more entries in UNITS by copying the aliased units\n var ALIASES = {\n meters: 'meter',\n inches: 'inch',\n feet: 'foot',\n yards: 'yard',\n miles: 'mile',\n links: 'link',\n rods: 'rod',\n chains: 'chain',\n angstroms: 'angstrom',\n lt: 'l',\n litres: 'litre',\n liter: 'litre',\n liters: 'litre',\n teaspoons: 'teaspoon',\n tablespoons: 'tablespoon',\n minims: 'minim',\n fldr: 'fluiddram',\n fluiddrams: 'fluiddram',\n floz: 'fluidounce',\n fluidounces: 'fluidounce',\n gi: 'gill',\n gills: 'gill',\n cp: 'cup',\n cups: 'cup',\n pt: 'pint',\n pints: 'pint',\n qt: 'quart',\n quarts: 'quart',\n gal: 'gallon',\n gallons: 'gallon',\n bbl: 'beerbarrel',\n beerbarrels: 'beerbarrel',\n obl: 'oilbarrel',\n oilbarrels: 'oilbarrel',\n hogsheads: 'hogshead',\n gtts: 'gtt',\n grams: 'gram',\n tons: 'ton',\n tonnes: 'tonne',\n grains: 'grain',\n drams: 'dram',\n ounces: 'ounce',\n poundmasses: 'poundmass',\n hundredweights: 'hundredweight',\n sticks: 'stick',\n lb: 'lbm',\n lbs: 'lbm',\n kips: 'kip',\n kgf: 'kilogramforce',\n acres: 'acre',\n hectares: 'hectare',\n sqfeet: 'sqft',\n sqyard: 'sqyd',\n sqmile: 'sqmi',\n sqmiles: 'sqmi',\n mmhg: 'mmHg',\n mmh2o: 'mmH2O',\n cmh2o: 'cmH2O',\n seconds: 'second',\n secs: 'second',\n minutes: 'minute',\n mins: 'minute',\n hours: 'hour',\n hr: 'hour',\n hrs: 'hour',\n days: 'day',\n weeks: 'week',\n months: 'month',\n years: 'year',\n decades: 'decade',\n centuries: 'century',\n millennia: 'millennium',\n hertz: 'hertz',\n radians: 'radian',\n degrees: 'degree',\n gradians: 'gradian',\n cycles: 'cycle',\n arcsecond: 'arcsec',\n arcseconds: 'arcsec',\n arcminute: 'arcmin',\n arcminutes: 'arcmin',\n BTUs: 'BTU',\n watts: 'watt',\n joules: 'joule',\n amperes: 'ampere',\n amps: 'ampere',\n amp: 'ampere',\n coulombs: 'coulomb',\n volts: 'volt',\n ohms: 'ohm',\n farads: 'farad',\n webers: 'weber',\n teslas: 'tesla',\n electronvolts: 'electronvolt',\n moles: 'mole',\n bit: 'bits',\n byte: 'bytes'\n };\n\n /**\n * Calculate the values for the angle units.\n * Value is calculated as number or BigNumber depending on the configuration\n * @param {{number: 'number' | 'BigNumber'}} config\n */\n function calculateAngleValues(config) {\n if (config.number === 'BigNumber') {\n var pi = createPi(_BigNumber);\n UNITS.rad.value = new _BigNumber(1);\n UNITS.deg.value = pi.div(180); // 2 * pi / 360\n UNITS.grad.value = pi.div(200); // 2 * pi / 400\n UNITS.cycle.value = pi.times(2); // 2 * pi\n UNITS.arcsec.value = pi.div(648000); // 2 * pi / 360 / 3600\n UNITS.arcmin.value = pi.div(10800); // 2 * pi / 360 / 60\n } else {\n // number\n UNITS.rad.value = 1;\n UNITS.deg.value = Math.PI / 180; // 2 * pi / 360\n UNITS.grad.value = Math.PI / 200; // 2 * pi / 400\n UNITS.cycle.value = Math.PI * 2; // 2 * pi\n UNITS.arcsec.value = Math.PI / 648000; // 2 * pi / 360 / 3600\n UNITS.arcmin.value = Math.PI / 10800; // 2 * pi / 360 / 60\n }\n\n // copy to the full names of the angles\n UNITS.radian.value = UNITS.rad.value;\n UNITS.degree.value = UNITS.deg.value;\n UNITS.gradian.value = UNITS.grad.value;\n }\n\n // apply the angle values now\n calculateAngleValues(config);\n if (on) {\n // recalculate the values on change of configuration\n on('config', function (curr, prev) {\n if (curr.number !== prev.number) {\n calculateAngleValues(curr);\n }\n });\n }\n\n /**\n * A unit system is a set of dimensionally independent base units plus a set of derived units, formed by multiplication and division of the base units, that are by convention used with the unit system.\n * A user perhaps could issue a command to select a preferred unit system, or use the default (see below).\n * Auto unit system: The default unit system is updated on the fly anytime a unit is parsed. The corresponding unit in the default unit system is updated, so that answers are given in the same units the user supplies.\n */\n var UNIT_SYSTEMS = {\n si: {\n // Base units\n NONE: {\n unit: UNIT_NONE,\n prefix: PREFIXES.NONE['']\n },\n LENGTH: {\n unit: UNITS.m,\n prefix: PREFIXES.SHORT['']\n },\n MASS: {\n unit: UNITS.g,\n prefix: PREFIXES.SHORT.k\n },\n TIME: {\n unit: UNITS.s,\n prefix: PREFIXES.SHORT['']\n },\n CURRENT: {\n unit: UNITS.A,\n prefix: PREFIXES.SHORT['']\n },\n TEMPERATURE: {\n unit: UNITS.K,\n prefix: PREFIXES.SHORT['']\n },\n LUMINOUS_INTENSITY: {\n unit: UNITS.cd,\n prefix: PREFIXES.SHORT['']\n },\n AMOUNT_OF_SUBSTANCE: {\n unit: UNITS.mol,\n prefix: PREFIXES.SHORT['']\n },\n ANGLE: {\n unit: UNITS.rad,\n prefix: PREFIXES.SHORT['']\n },\n BIT: {\n unit: UNITS.bits,\n prefix: PREFIXES.SHORT['']\n },\n // Derived units\n FORCE: {\n unit: UNITS.N,\n prefix: PREFIXES.SHORT['']\n },\n ENERGY: {\n unit: UNITS.J,\n prefix: PREFIXES.SHORT['']\n },\n POWER: {\n unit: UNITS.W,\n prefix: PREFIXES.SHORT['']\n },\n PRESSURE: {\n unit: UNITS.Pa,\n prefix: PREFIXES.SHORT['']\n },\n ELECTRIC_CHARGE: {\n unit: UNITS.C,\n prefix: PREFIXES.SHORT['']\n },\n ELECTRIC_CAPACITANCE: {\n unit: UNITS.F,\n prefix: PREFIXES.SHORT['']\n },\n ELECTRIC_POTENTIAL: {\n unit: UNITS.V,\n prefix: PREFIXES.SHORT['']\n },\n ELECTRIC_RESISTANCE: {\n unit: UNITS.ohm,\n prefix: PREFIXES.SHORT['']\n },\n ELECTRIC_INDUCTANCE: {\n unit: UNITS.H,\n prefix: PREFIXES.SHORT['']\n },\n ELECTRIC_CONDUCTANCE: {\n unit: UNITS.S,\n prefix: PREFIXES.SHORT['']\n },\n MAGNETIC_FLUX: {\n unit: UNITS.Wb,\n prefix: PREFIXES.SHORT['']\n },\n MAGNETIC_FLUX_DENSITY: {\n unit: UNITS.T,\n prefix: PREFIXES.SHORT['']\n },\n FREQUENCY: {\n unit: UNITS.Hz,\n prefix: PREFIXES.SHORT['']\n }\n }\n };\n\n // Clone to create the other unit systems\n UNIT_SYSTEMS.cgs = JSON.parse(JSON.stringify(UNIT_SYSTEMS.si));\n UNIT_SYSTEMS.cgs.LENGTH = {\n unit: UNITS.m,\n prefix: PREFIXES.SHORT.c\n };\n UNIT_SYSTEMS.cgs.MASS = {\n unit: UNITS.g,\n prefix: PREFIXES.SHORT['']\n };\n UNIT_SYSTEMS.cgs.FORCE = {\n unit: UNITS.dyn,\n prefix: PREFIXES.SHORT['']\n };\n UNIT_SYSTEMS.cgs.ENERGY = {\n unit: UNITS.erg,\n prefix: PREFIXES.NONE['']\n };\n // there are wholly 4 unique cgs systems for electricity and magnetism,\n // so let's not worry about it unless somebody complains\n\n UNIT_SYSTEMS.us = JSON.parse(JSON.stringify(UNIT_SYSTEMS.si));\n UNIT_SYSTEMS.us.LENGTH = {\n unit: UNITS.ft,\n prefix: PREFIXES.NONE['']\n };\n UNIT_SYSTEMS.us.MASS = {\n unit: UNITS.lbm,\n prefix: PREFIXES.NONE['']\n };\n UNIT_SYSTEMS.us.TEMPERATURE = {\n unit: UNITS.degF,\n prefix: PREFIXES.NONE['']\n };\n UNIT_SYSTEMS.us.FORCE = {\n unit: UNITS.lbf,\n prefix: PREFIXES.NONE['']\n };\n UNIT_SYSTEMS.us.ENERGY = {\n unit: UNITS.BTU,\n prefix: PREFIXES.BTU['']\n };\n UNIT_SYSTEMS.us.POWER = {\n unit: UNITS.hp,\n prefix: PREFIXES.NONE['']\n };\n UNIT_SYSTEMS.us.PRESSURE = {\n unit: UNITS.psi,\n prefix: PREFIXES.NONE['']\n };\n\n // Add additional unit systems here.\n\n // Choose a unit system to seed the auto unit system.\n UNIT_SYSTEMS.auto = JSON.parse(JSON.stringify(UNIT_SYSTEMS.si));\n\n // Set the current unit system\n var currentUnitSystem = UNIT_SYSTEMS.auto;\n\n /**\n * Set a unit system for formatting derived units.\n * @memberof Unit\n * @param {string} [name] The name of the unit system.\n */\n Unit.setUnitSystem = function (name) {\n if (hasOwnProperty(UNIT_SYSTEMS, name)) {\n currentUnitSystem = UNIT_SYSTEMS[name];\n } else {\n throw new Error('Unit system ' + name + ' does not exist. Choices are: ' + Object.keys(UNIT_SYSTEMS).join(', '));\n }\n };\n\n /**\n * Return the current unit system.\n * @memberof Unit\n * @return {string} The current unit system.\n */\n Unit.getUnitSystem = function () {\n for (var _key in UNIT_SYSTEMS) {\n if (hasOwnProperty(UNIT_SYSTEMS, _key)) {\n if (UNIT_SYSTEMS[_key] === currentUnitSystem) {\n return _key;\n }\n }\n }\n };\n\n /**\n * Converters to convert from number to an other numeric type like BigNumber\n * or Fraction\n */\n Unit.typeConverters = {\n BigNumber: function BigNumber(x) {\n if (x !== null && x !== void 0 && x.isFraction) return new _BigNumber(x.n).div(x.d).times(x.s);\n return new _BigNumber(x + ''); // stringify to prevent constructor error\n },\n Fraction: function Fraction(x) {\n return new _Fraction(x);\n },\n Complex: function Complex(x) {\n return x;\n },\n number: function number(x) {\n if (x !== null && x !== void 0 && x.isFraction) return _number(x);\n return x;\n }\n };\n\n /**\n * Retrieve the right converter function corresponding with this unit's\n * value\n *\n * @memberof Unit\n * @return {Function}\n */\n Unit.prototype._numberConverter = function () {\n var convert = Unit.typeConverters[this.valueType()];\n if (convert) {\n return convert;\n }\n throw new TypeError('Unsupported Unit value type \"' + this.valueType() + '\"');\n };\n\n /**\n * Retrieve the right convertor function corresponding with the type\n * of provided exampleValue.\n *\n * @param {string} type A string 'number', 'BigNumber', or 'Fraction'\n * In case of an unknown type,\n * @return {Function}\n */\n Unit._getNumberConverter = function (type) {\n if (!Unit.typeConverters[type]) {\n throw new TypeError('Unsupported type \"' + type + '\"');\n }\n return Unit.typeConverters[type];\n };\n\n // Add dimensions to each built-in unit\n for (var _key2 in UNITS) {\n if (hasOwnProperty(UNITS, _key2)) {\n var unit = UNITS[_key2];\n unit.dimensions = unit.base.dimensions;\n }\n }\n\n // Create aliases\n for (var _name2 in ALIASES) {\n if (hasOwnProperty(ALIASES, _name2)) {\n var _unit2 = UNITS[ALIASES[_name2]];\n var alias = {};\n for (var _key3 in _unit2) {\n if (hasOwnProperty(_unit2, _key3)) {\n alias[_key3] = _unit2[_key3];\n }\n }\n alias.name = _name2;\n UNITS[_name2] = alias;\n }\n }\n\n /**\n * Checks if a character is a valid latin letter (upper or lower case).\n * Note that this function can be overridden, for example to allow support of other alphabets.\n * @memberof Unit\n * @param {string} c Tested character\n * @return {boolean} true if the character is a latin letter\n */\n Unit.isValidAlpha = function isValidAlpha(c) {\n return /^[a-zA-Z]$/.test(c);\n };\n function assertUnitNameIsValid(name) {\n for (var i = 0; i < name.length; i++) {\n c = name.charAt(i);\n if (i === 0 && !Unit.isValidAlpha(c)) {\n throw new Error('Invalid unit name (must begin with alpha character): \"' + name + '\"');\n }\n if (i > 0 && !(Unit.isValidAlpha(c) || isDigit(c))) {\n throw new Error('Invalid unit name (only alphanumeric characters are allowed): \"' + name + '\"');\n }\n }\n }\n\n /**\n * Wrapper around createUnitSingle.\n * Example:\n * createUnit( {\n * foo: {\n * prefixes: 'long',\n * baseName: 'essence-of-foo'\n * },\n * bar: '40 foo',\n * baz: {\n * definition: '1 bar/hour',\n * prefixes: 'long'\n * }\n * },\n * {\n * override: true\n * })\n * @memberof Unit\n * @param {object} obj Object map. Each key becomes a unit which is defined by its value.\n * @param {object} options\n * @return {Unit} the last created unit\n */\n Unit.createUnit = function (obj, options) {\n if (typeof obj !== 'object') {\n throw new TypeError(\"createUnit expects first parameter to be of type 'Object'\");\n }\n\n // Remove all units and aliases we are overriding\n if (options && options.override) {\n for (var _key4 in obj) {\n if (hasOwnProperty(obj, _key4)) {\n Unit.deleteUnit(_key4);\n }\n if (obj[_key4].aliases) {\n for (var i = 0; i < obj[_key4].aliases.length; i++) {\n Unit.deleteUnit(obj[_key4].aliases[i]);\n }\n }\n }\n }\n\n // TODO: traverse multiple times until all units have been added\n var lastUnit;\n for (var _key5 in obj) {\n if (hasOwnProperty(obj, _key5)) {\n lastUnit = Unit.createUnitSingle(_key5, obj[_key5]);\n }\n }\n return lastUnit;\n };\n\n /**\n * Create a user-defined unit and register it with the Unit type.\n * Example:\n * createUnitSingle('knot', '0.514444444 m/s')\n *\n * @memberof Unit\n * @param {string} name The name of the new unit. Must be unique. Example: 'knot'\n * @param {string | Unit | object} definition Definition of the unit in terms\n * of existing units. For example, '0.514444444 m / s'. Can be a Unit, a string,\n * or an Object. If an Object, may have the following properties:\n * - definition {string | Unit} The definition of this unit.\n * - prefixes {string} \"none\", \"short\", \"long\", \"binary_short\", or \"binary_long\".\n * The default is \"none\".\n * - aliases {Array} Array of strings. Example: ['knots', 'kt', 'kts']\n * - offset {Numeric} An offset to apply when converting from the unit. For\n * example, the offset for celsius is 273.15 and the offset for farhenheit\n * is 459.67. Default is 0.\n * - baseName {string} If the unit's dimension does not match that of any other\n * base unit, the name of the newly create base unit. Otherwise, this property\n * has no effect.\n *\n * @return {Unit}\n */\n Unit.createUnitSingle = function (name, obj) {\n if (typeof obj === 'undefined' || obj === null) {\n obj = {};\n }\n if (typeof name !== 'string') {\n throw new TypeError(\"createUnitSingle expects first parameter to be of type 'string'\");\n }\n\n // Check collisions with existing units\n if (hasOwnProperty(UNITS, name)) {\n throw new Error('Cannot create unit \"' + name + '\": a unit with that name already exists');\n }\n\n // TODO: Validate name for collisions with other built-in functions (like abs or cos, for example), and for acceptable variable names. For example, '42' is probably not a valid unit. Nor is '%', since it is also an operator.\n\n assertUnitNameIsValid(name);\n var defUnit = null; // The Unit from which the new unit will be created.\n var aliases = [];\n var offset = 0;\n var definition;\n var prefixes;\n var baseName;\n if (obj && obj.type === 'Unit') {\n defUnit = obj.clone();\n } else if (typeof obj === 'string') {\n if (obj !== '') {\n definition = obj;\n }\n } else if (typeof obj === 'object') {\n definition = obj.definition;\n prefixes = obj.prefixes;\n offset = obj.offset;\n baseName = obj.baseName;\n if (obj.aliases) {\n aliases = obj.aliases.valueOf(); // aliases could be a Matrix, so convert to Array\n }\n } else {\n throw new TypeError('Cannot create unit \"' + name + '\" from \"' + obj.toString() + '\": expecting \"string\" or \"Unit\" or \"Object\"');\n }\n if (aliases) {\n for (var i = 0; i < aliases.length; i++) {\n if (hasOwnProperty(UNITS, aliases[i])) {\n throw new Error('Cannot create alias \"' + aliases[i] + '\": a unit with that name already exists');\n }\n }\n }\n if (definition && typeof definition === 'string' && !defUnit) {\n try {\n defUnit = Unit.parse(definition, {\n allowNoUnits: true\n });\n } catch (ex) {\n ex.message = 'Could not create unit \"' + name + '\" from \"' + definition + '\": ' + ex.message;\n throw ex;\n }\n } else if (definition && definition.type === 'Unit') {\n defUnit = definition.clone();\n }\n aliases = aliases || [];\n offset = offset || 0;\n if (prefixes && prefixes.toUpperCase) {\n prefixes = PREFIXES[prefixes.toUpperCase()] || PREFIXES.NONE;\n } else {\n prefixes = PREFIXES.NONE;\n }\n\n // If defUnit is null, it is because the user did not\n // specify a defintion. So create a new base dimension.\n var newUnit = {};\n if (!defUnit) {\n // Add a new base dimension\n baseName = baseName || name + '_STUFF'; // foo --> foo_STUFF, or the essence of foo\n if (BASE_DIMENSIONS.indexOf(baseName) >= 0) {\n throw new Error('Cannot create new base unit \"' + name + '\": a base unit with that name already exists (and cannot be overridden)');\n }\n BASE_DIMENSIONS.push(baseName);\n\n // Push 0 onto existing base units\n for (var b in BASE_UNITS) {\n if (hasOwnProperty(BASE_UNITS, b)) {\n BASE_UNITS[b].dimensions[BASE_DIMENSIONS.length - 1] = 0;\n }\n }\n\n // Add the new base unit\n var newBaseUnit = {\n dimensions: []\n };\n for (var _i6 = 0; _i6 < BASE_DIMENSIONS.length; _i6++) {\n newBaseUnit.dimensions[_i6] = 0;\n }\n newBaseUnit.dimensions[BASE_DIMENSIONS.length - 1] = 1;\n newBaseUnit.key = baseName;\n BASE_UNITS[baseName] = newBaseUnit;\n newUnit = {\n name,\n value: 1,\n dimensions: BASE_UNITS[baseName].dimensions.slice(0),\n prefixes,\n offset,\n base: BASE_UNITS[baseName]\n };\n currentUnitSystem[baseName] = {\n unit: newUnit,\n prefix: PREFIXES.NONE['']\n };\n } else {\n newUnit = {\n name,\n value: defUnit.value,\n dimensions: defUnit.dimensions.slice(0),\n prefixes,\n offset\n };\n\n // Create a new base if no matching base exists\n var anyMatch = false;\n for (var _i7 in BASE_UNITS) {\n if (hasOwnProperty(BASE_UNITS, _i7)) {\n var match = true;\n for (var j = 0; j < BASE_DIMENSIONS.length; j++) {\n if (Math.abs((newUnit.dimensions[j] || 0) - (BASE_UNITS[_i7].dimensions[j] || 0)) > 1e-12) {\n match = false;\n break;\n }\n }\n if (match) {\n anyMatch = true;\n newUnit.base = BASE_UNITS[_i7];\n break;\n }\n }\n }\n if (!anyMatch) {\n baseName = baseName || name + '_STUFF'; // foo --> foo_STUFF, or the essence of foo\n // Add the new base unit\n var _newBaseUnit = {\n dimensions: defUnit.dimensions.slice(0)\n };\n _newBaseUnit.key = baseName;\n BASE_UNITS[baseName] = _newBaseUnit;\n currentUnitSystem[baseName] = {\n unit: newUnit,\n prefix: PREFIXES.NONE['']\n };\n newUnit.base = BASE_UNITS[baseName];\n }\n }\n Unit.UNITS[name] = newUnit;\n for (var _i8 = 0; _i8 < aliases.length; _i8++) {\n var aliasName = aliases[_i8];\n var _alias = {};\n for (var _key6 in newUnit) {\n if (hasOwnProperty(newUnit, _key6)) {\n _alias[_key6] = newUnit[_key6];\n }\n }\n _alias.name = aliasName;\n Unit.UNITS[aliasName] = _alias;\n }\n\n // delete the memoization cache because we created a new unit\n delete _findUnit.cache;\n return new Unit(null, name);\n };\n Unit.deleteUnit = function (name) {\n delete Unit.UNITS[name];\n\n // delete the memoization cache because we deleted a unit\n delete _findUnit.cache;\n };\n\n // expose arrays with prefixes, dimensions, units, systems\n Unit.PREFIXES = PREFIXES;\n Unit.BASE_DIMENSIONS = BASE_DIMENSIONS;\n Unit.BASE_UNITS = BASE_UNITS;\n Unit.UNIT_SYSTEMS = UNIT_SYSTEMS;\n Unit.UNITS = UNITS;\n return Unit;\n}, {\n isClass: true\n});", "import { factory } from '../../../utils/factory.js';\nimport { deepMap } from '../../../utils/collection.js';\nvar name = 'unit';\nvar dependencies = ['typed', 'Unit'];\n\n// This function is named createUnitFunction to prevent a naming conflict with createUnit\nexport var createUnitFunction = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Unit\n } = _ref;\n /**\n * Create a unit. Depending on the passed arguments, the function\n * will create and return a new math.Unit object.\n * When a matrix is provided, all elements will be converted to units.\n *\n * Syntax:\n *\n * math.unit(unit : string)\n * math.unit(value : number, valuelessUnit : Unit)\n * math.unit(value : number, valuelessUnit : string)\n *\n * Examples:\n *\n * const kph = math.unit('km/h') // returns Unit km/h (valueless)\n * const v = math.unit(25, kph) // returns Unit 25 km/h\n * const a = math.unit(5, 'cm') // returns Unit 50 mm\n * const b = math.unit('23 kg') // returns Unit 23 kg\n * a.to('m') // returns Unit 0.05 m\n *\n * See also:\n *\n * bignumber, boolean, complex, index, matrix, number, string, createUnit\n *\n * @param {* | Array | Matrix} args A number and unit.\n * @return {Unit | Array | Matrix} The created unit\n */\n\n return typed(name, {\n Unit: function Unit(x) {\n return x.clone();\n },\n string: function string(x) {\n if (Unit.isValuelessUnit(x)) {\n return new Unit(null, x); // a pure unit\n }\n return Unit.parse(x, {\n allowNoUnits: true\n }); // a unit with value, like '5cm'\n },\n 'number | BigNumber | Fraction | Complex, string | Unit': function number__BigNumber__Fraction__Complex_string__Unit(value, unit) {\n return new Unit(value, unit);\n },\n 'number | BigNumber | Fraction': function number__BigNumber__Fraction(value) {\n // dimensionless\n return new Unit(value);\n },\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { factory } from '../../../utils/factory.js';\nvar name = 'sparse';\nvar dependencies = ['typed', 'SparseMatrix'];\nexport var createSparse = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n SparseMatrix\n } = _ref;\n /**\n * Create a Sparse Matrix. The function creates a new `math.Matrix` object from\n * an `Array`. A Matrix has utility functions to manipulate the data in the\n * matrix, like getting the size and getting or setting values in the matrix.\n * Note that a Sparse Matrix is always 2-dimensional, so for example if\n * you create one from a plain array of _n_ numbers, you get an _n_ by 1\n * Sparse \"column vector\".\n *\n * Syntax:\n *\n * math.sparse() // creates an empty sparse matrix.\n * math.sparse(data) // creates a sparse matrix with initial data.\n * math.sparse(data, 'number') // creates a sparse matrix with initial data, number datatype.\n *\n * Examples:\n *\n * let m = math.sparse([[1, 2], [3, 4]])\n * m.size() // Array [2, 2]\n * m.resize([3, 2], 5)\n * m.valueOf() // Array [[1, 2], [3, 4], [5, 5]]\n * m.get([1, 0]) // number 3\n * let v = math.sparse([0, 0, 1])\n * v.size() // Array [3, 1]\n * v.get([2, 0]) // number 1\n *\n * See also:\n *\n * bignumber, boolean, complex, index, number, string, unit, matrix\n *\n * @param {Array | Matrix} [data] A two dimensional array\n *\n * @return {Matrix} The created matrix\n */\n return typed(name, {\n '': function _() {\n return new SparseMatrix([]);\n },\n string: function string(datatype) {\n return new SparseMatrix([], datatype);\n },\n 'Array | Matrix': function Array__Matrix(data) {\n return new SparseMatrix(data);\n },\n 'Array | Matrix, string': function Array__Matrix_string(data, datatype) {\n return new SparseMatrix(data, datatype);\n }\n });\n});", "import { factory } from '../../../utils/factory.js';\nvar name = 'createUnit';\nvar dependencies = ['typed', 'Unit'];\nexport var createCreateUnit = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Unit\n } = _ref;\n /**\n * Create a user-defined unit and register it with the Unit type.\n *\n * Syntax:\n *\n * math.createUnit({\n * baseUnit1: {\n * aliases: [string, ...]\n * prefixes: object\n * },\n * unit2: {\n * definition: string,\n * aliases: [string, ...]\n * prefixes: object,\n * offset: number\n * },\n * unit3: string // Shortcut\n * })\n *\n * // Another shortcut:\n * math.createUnit(string, unit : string, [object])\n *\n * Examples:\n *\n * math.createUnit('foo')\n * math.createUnit('knot', {definition: '0.514444444 m/s', aliases: ['knots', 'kt', 'kts']})\n * math.createUnit('mph', '1 mile/hour')\n * math.createUnit('km', math.unit(1000, 'm'))\n *\n * @param {string} name The name of the new unit. Must be unique. Example: 'knot'\n * @param {string, UnitDefinition, Unit} definition Definition of the unit in terms of existing units. For example, '0.514444444 m / s'.\n * @param {Object} options (optional) An object containing any of the following properties:\n * - `prefixes {string}` \"none\", \"short\", \"long\", \"binary_short\", or \"binary_long\". The default is \"none\".\n * - `aliases {Array}` Array of strings. Example: ['knots', 'kt', 'kts']\n * - `offset {Numeric}` An offset to apply when converting from the unit. For example, the offset for celsius is 273.15. Default is 0.\n *\n * See also:\n *\n * unit\n *\n * @return {Unit} The new unit\n */\n return typed(name, {\n // General function signature. First parameter is an object where each property is the definition of a new unit. The object keys are the unit names and the values are the definitions. The values can be objects, strings, or Units. If a property is an empty object or an empty string, a new base unit is created. The second parameter is the options.\n 'Object, Object': function Object_Object(obj, options) {\n return Unit.createUnit(obj, options);\n },\n // Same as above but without the options.\n Object: function Object(obj) {\n return Unit.createUnit(obj, {});\n },\n // Shortcut method for creating one unit.\n 'string, Unit | string | Object, Object': function string_Unit__string__Object_Object(name, def, options) {\n var obj = {};\n obj[name] = def;\n return Unit.createUnit(obj, options);\n },\n // Same as above but without the options.\n 'string, Unit | string | Object': function string_Unit__string__Object(name, def) {\n var obj = {};\n obj[name] = def;\n return Unit.createUnit(obj, {});\n },\n // Without a definition, creates a base unit.\n string: function string(name) {\n var obj = {};\n obj[name] = {};\n return Unit.createUnit(obj, {});\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'acos';\nvar dependencies = ['typed', 'config', 'Complex'];\nexport var createAcos = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex\n } = _ref;\n /**\n * Calculate the inverse cosine of a value.\n *\n * To avoid confusion with the matrix arccosine, this function does not\n * apply to matrices.\n *\n * Syntax:\n *\n * math.acos(x)\n *\n * Examples:\n *\n * math.acos(0.5) // returns number 1.0471975511965979\n * math.acos(math.cos(1.5)) // returns number 1.5\n *\n * math.acos(2) // returns Complex 0 + 1.3169578969248166 i\n *\n * See also:\n *\n * cos, atan, asin\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} The arc cosine of x\n */\n return typed(name, {\n number: function number(x) {\n if (x >= -1 && x <= 1 || config.predictable) {\n return Math.acos(x);\n } else {\n return new Complex(x, 0).acos();\n }\n },\n Complex: function Complex(x) {\n return x.acos();\n },\n BigNumber: function BigNumber(x) {\n return x.acos();\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { acoshNumber } from '../../plain/number/index.js';\nvar name = 'acosh';\nvar dependencies = ['typed', 'config', 'Complex'];\nexport var createAcosh = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex\n } = _ref;\n /**\n * Calculate the hyperbolic arccos of a value,\n * defined as `acosh(x) = ln(sqrt(x^2 - 1) + x)`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.acosh(x)\n *\n * Examples:\n *\n * math.acosh(1.5) // returns 0.9624236501192069\n *\n * See also:\n *\n * cosh, asinh, atanh\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} Hyperbolic arccosine of x\n */\n return typed(name, {\n number: function number(x) {\n if (x >= 1 || config.predictable) {\n return acoshNumber(x);\n }\n if (x <= -1) {\n return new Complex(Math.log(Math.sqrt(x * x - 1) - x), Math.PI);\n }\n return new Complex(x, 0).acosh();\n },\n Complex: function Complex(x) {\n return x.acosh();\n },\n BigNumber: function BigNumber(x) {\n return x.acosh();\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { acotNumber } from '../../plain/number/index.js';\nvar name = 'acot';\nvar dependencies = ['typed', 'BigNumber'];\nexport var createAcot = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber: _BigNumber\n } = _ref;\n /**\n * Calculate the inverse cotangent of a value, defined as `acot(x) = atan(1/x)`.\n *\n * To avoid confusion with the matrix arccotanget, this function does not\n * apply to matrices.\n *\n * Syntax:\n *\n * math.acot(x)\n *\n * Examples:\n *\n * math.acot(0.5) // returns number 1.1071487177940904\n * math.acot(2) // returns number 0.4636476090008061\n * math.acot(math.cot(1.5)) // returns number 1.5\n *\n * See also:\n *\n * cot, atan\n *\n * @param {number | BigNumber| Complex} x Function input\n * @return {number | BigNumber| Complex} The arc cotangent of x\n */\n return typed(name, {\n number: acotNumber,\n Complex: function Complex(x) {\n return x.acot();\n },\n BigNumber: function BigNumber(x) {\n return new _BigNumber(1).div(x).atan();\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { acothNumber } from '../../plain/number/index.js';\nvar name = 'acoth';\nvar dependencies = ['typed', 'config', 'Complex', 'BigNumber'];\nexport var createAcoth = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex,\n BigNumber: _BigNumber\n } = _ref;\n /**\n * Calculate the inverse hyperbolic tangent of a value,\n * defined as `acoth(x) = atanh(1/x) = (ln((x+1)/x) + ln(x/(x-1))) / 2`.\n *\n * To avoid confusion with the matrix inverse hyperbolic tangent, this\n * function does not apply to matrices.\n *\n * Syntax:\n *\n * math.acoth(x)\n *\n * Examples:\n *\n * math.acoth(0.5) // returns 0.8047189562170503\n *\n * See also:\n *\n * acsch, asech\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} Hyperbolic arccotangent of x\n */\n return typed(name, {\n number: function number(x) {\n if (x >= 1 || x <= -1 || config.predictable) {\n return acothNumber(x);\n }\n return new Complex(x, 0).acoth();\n },\n Complex: function Complex(x) {\n return x.acoth();\n },\n BigNumber: function BigNumber(x) {\n return new _BigNumber(1).div(x).atanh();\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { acscNumber } from '../../plain/number/index.js';\nvar name = 'acsc';\nvar dependencies = ['typed', 'config', 'Complex', 'BigNumber'];\nexport var createAcsc = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex,\n BigNumber: _BigNumber\n } = _ref;\n /**\n * Calculate the inverse cosecant of a value, defined as `acsc(x) = asin(1/x)`.\n *\n * To avoid confusion with the matrix arccosecant, this function does not\n * apply to matrices.\n *\n * Syntax:\n *\n * math.acsc(x)\n *\n * Examples:\n *\n * math.acsc(2) // returns 0.5235987755982989\n * math.acsc(0.5) // returns Complex 1.5707963267948966 -1.3169578969248166i\n * math.acsc(math.csc(1.5)) // returns number ~1.5\n *\n * See also:\n *\n * csc, asin, asec\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} The arc cosecant of x\n */\n return typed(name, {\n number: function number(x) {\n if (x <= -1 || x >= 1 || config.predictable) {\n return acscNumber(x);\n }\n return new Complex(x, 0).acsc();\n },\n Complex: function Complex(x) {\n return x.acsc();\n },\n BigNumber: function BigNumber(x) {\n return new _BigNumber(1).div(x).asin();\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { acschNumber } from '../../plain/number/index.js';\nvar name = 'acsch';\nvar dependencies = ['typed', 'BigNumber'];\nexport var createAcsch = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber: _BigNumber\n } = _ref;\n /**\n * Calculate the inverse hyperbolic cosecant of a value,\n * defined as `acsch(x) = asinh(1/x) = ln(1/x + sqrt(1/x^2 + 1))`.\n *\n * To avoid confusion with the matrix inverse hyperbolic cosecant, this function\n * does not apply to matrices.\n *\n * Syntax:\n *\n * math.acsch(x)\n *\n * Examples:\n *\n * math.acsch(0.5) // returns 1.4436354751788103\n *\n * See also:\n *\n * asech, acoth\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} Hyperbolic arccosecant of x\n */\n return typed(name, {\n number: acschNumber,\n Complex: function Complex(x) {\n return x.acsch();\n },\n BigNumber: function BigNumber(x) {\n return new _BigNumber(1).div(x).asinh();\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { asecNumber } from '../../plain/number/index.js';\nvar name = 'asec';\nvar dependencies = ['typed', 'config', 'Complex', 'BigNumber'];\nexport var createAsec = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex,\n BigNumber: _BigNumber\n } = _ref;\n /**\n * Calculate the inverse secant of a value. Defined as `asec(x) = acos(1/x)`.\n *\n * To avoid confusion with the matrix arcsecant, this function does not\n * apply to matrices.\n *\n * Syntax:\n *\n * math.asec(x)\n *\n * Examples:\n *\n * math.asec(2) // returns 1.0471975511965979\n * math.asec(math.sec(1.5)) // returns 1.5\n *\n * math.asec(0.5) // returns Complex 0 + 1.3169578969248166i\n *\n * See also:\n *\n * acos, acot, acsc\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} The arc secant of x\n */\n return typed(name, {\n number: function number(x) {\n if (x <= -1 || x >= 1 || config.predictable) {\n return asecNumber(x);\n }\n return new Complex(x, 0).asec();\n },\n Complex: function Complex(x) {\n return x.asec();\n },\n BigNumber: function BigNumber(x) {\n return new _BigNumber(1).div(x).acos();\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { asechNumber } from '../../plain/number/index.js';\nvar name = 'asech';\nvar dependencies = ['typed', 'config', 'Complex', 'BigNumber'];\nexport var createAsech = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex,\n BigNumber: _BigNumber\n } = _ref;\n /**\n * Calculate the hyperbolic arcsecant of a value,\n * defined as `asech(x) = acosh(1/x) = ln(sqrt(1/x^2 - 1) + 1/x)`.\n *\n * To avoid confusion with the matrix hyperbolic arcsecant, this function\n * does not apply to matrices.\n *\n * Syntax:\n *\n * math.asech(x)\n *\n * Examples:\n *\n * math.asech(0.5) // returns 1.3169578969248166\n *\n * See also:\n *\n * acsch, acoth\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} Hyperbolic arcsecant of x\n */\n return typed(name, {\n number: function number(x) {\n if (x <= 1 && x >= -1 || config.predictable) {\n var xInv = 1 / x;\n if (xInv > 0 || config.predictable) {\n return asechNumber(x);\n }\n var ret = Math.sqrt(xInv * xInv - 1);\n return new Complex(Math.log(ret - xInv), Math.PI);\n }\n return new Complex(x, 0).asech();\n },\n Complex: function Complex(x) {\n return x.asech();\n },\n BigNumber: function BigNumber(x) {\n return new _BigNumber(1).div(x).acosh();\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'asin';\nvar dependencies = ['typed', 'config', 'Complex'];\nexport var createAsin = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex\n } = _ref;\n /**\n * Calculate the inverse sine of a value.\n *\n * To avoid confusion with the matric arcsine, this function does not apply\n * to matrices.\n *\n * Syntax:\n *\n * math.asin(x)\n *\n * Examples:\n *\n * math.asin(0.5) // returns number 0.5235987755982989\n * math.asin(math.sin(1.5)) // returns number ~1.5\n *\n * math.asin(2) // returns Complex 1.5707963267948966 -1.3169578969248166i\n *\n * See also:\n *\n * sin, atan, acos\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} The arc sine of x\n */\n return typed(name, {\n number: function number(x) {\n if (x >= -1 && x <= 1 || config.predictable) {\n return Math.asin(x);\n } else {\n return new Complex(x, 0).asin();\n }\n },\n Complex: function Complex(x) {\n return x.asin();\n },\n BigNumber: function BigNumber(x) {\n return x.asin();\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { asinhNumber } from '../../plain/number/index.js';\nvar name = 'asinh';\nvar dependencies = ['typed'];\nexport var createAsinh = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Calculate the hyperbolic arcsine of a value,\n * defined as `asinh(x) = ln(x + sqrt(x^2 + 1))`.\n *\n * To avoid confusion with the matrix hyperbolic arcsine, this function\n * does not apply to matrices.\n *\n * Syntax:\n *\n * math.asinh(x)\n *\n * Examples:\n *\n * math.asinh(0.5) // returns 0.48121182505960347\n *\n * See also:\n *\n * acosh, atanh\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} Hyperbolic arcsine of x\n */\n return typed('asinh', {\n number: asinhNumber,\n Complex: function Complex(x) {\n return x.asinh();\n },\n BigNumber: function BigNumber(x) {\n return x.asinh();\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'atan';\nvar dependencies = ['typed'];\nexport var createAtan = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Calculate the inverse tangent of a value.\n *\n * To avoid confusion with matrix arctangent, this function does not apply\n * to matrices.\n *\n * Syntax:\n *\n * math.atan(x)\n *\n * Examples:\n *\n * math.atan(0.5) // returns number 0.4636476090008061\n * math.atan(2) // returns number 1.1071487177940904\n * math.atan(math.tan(1.5)) // returns number 1.5\n *\n * See also:\n *\n * tan, asin, acos\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} The arc tangent of x\n */\n return typed('atan', {\n number: function number(x) {\n return Math.atan(x);\n },\n Complex: function Complex(x) {\n return x.atan();\n },\n BigNumber: function BigNumber(x) {\n return x.atan();\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { createMatAlgo02xDS0 } from '../../type/matrix/utils/matAlgo02xDS0.js';\nimport { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo09xS0Sf } from '../../type/matrix/utils/matAlgo09xS0Sf.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nvar name = 'atan2';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'BigNumber', 'DenseMatrix', 'concat'];\nexport var createAtan2 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n BigNumber,\n DenseMatrix,\n concat\n } = _ref;\n var matAlgo02xDS0 = createMatAlgo02xDS0({\n typed,\n equalScalar\n });\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo09xS0Sf = createMatAlgo09xS0Sf({\n typed,\n equalScalar\n });\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Calculate the inverse tangent function with two arguments, y/x.\n * By providing two arguments, the right quadrant of the computed angle can be\n * determined.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.atan2(y, x)\n *\n * Examples:\n *\n * math.atan2(2, 2) / math.pi // returns number 0.25\n *\n * const angle = math.unit(60, 'deg') // returns Unit 60 deg\n * const x = math.cos(angle)\n * const y = math.sin(angle)\n *\n * math.atan(2) // returns number 1.1071487177940904\n *\n * See also:\n *\n * tan, atan, sin, cos\n *\n * @param {number | Array | Matrix} y Second dimension\n * @param {number | Array | Matrix} x First dimension\n * @return {number | Array | Matrix} Four-quadrant inverse tangent\n */\n return typed(name, {\n 'number, number': Math.atan2,\n // Complex numbers doesn't seem to have a reasonable implementation of\n // atan2(). Even Matlab removed the support, after they only calculated\n // the atan only on base of the real part of the numbers and ignored\n // the imaginary.\n\n 'BigNumber, BigNumber': (y, x) => BigNumber.atan2(y, x)\n }, matrixAlgorithmSuite({\n scalar: 'number | BigNumber',\n SS: matAlgo09xS0Sf,\n DS: matAlgo03xDSf,\n SD: matAlgo02xDS0,\n Ss: matAlgo11xS0s,\n sS: matAlgo12xSfs\n }));\n});", "import { factory } from '../../utils/factory.js';\nimport { atanhNumber } from '../../plain/number/index.js';\nvar name = 'atanh';\nvar dependencies = ['typed', 'config', 'Complex'];\nexport var createAtanh = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex\n } = _ref;\n /**\n * Calculate the hyperbolic arctangent of a value,\n * defined as `atanh(x) = ln((1 + x)/(1 - x)) / 2`.\n *\n * To avoid confusion with the matrix hyperbolic arctangent, this function\n * does not apply to matrices.\n *\n * Syntax:\n *\n * math.atanh(x)\n *\n * Examples:\n *\n * math.atanh(0.5) // returns 0.5493061443340549\n *\n * See also:\n *\n * acosh, asinh\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} Hyperbolic arctangent of x\n */\n return typed(name, {\n number: function number(x) {\n if (x <= 1 && x >= -1 || config.predictable) {\n return atanhNumber(x);\n }\n return new Complex(x, 0).atanh();\n },\n Complex: function Complex(x) {\n return x.atanh();\n },\n BigNumber: function BigNumber(x) {\n return x.atanh();\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nexport var createTrigUnit = /* #__PURE__ */factory('trigUnit', ['typed'], _ref => {\n var {\n typed\n } = _ref;\n return {\n Unit: typed.referToSelf(self => x => {\n if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {\n throw new TypeError('Unit in function cot is no angle');\n }\n return typed.find(self, x.valueType())(x.value);\n })\n };\n});", "import { factory } from '../../utils/factory.js';\nimport { createTrigUnit } from './trigUnit.js';\nvar name = 'cos';\nvar dependencies = ['typed'];\nexport var createCos = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n var trigUnit = createTrigUnit({\n typed\n });\n\n /**\n * Calculate the cosine of a value.\n *\n * To avoid confusion with the matrix cosine, this function does not\n * apply to matrices.\n *\n * Syntax:\n *\n * math.cos(x)\n *\n * Examples:\n *\n * math.cos(2) // returns number -0.4161468365471422\n * math.cos(math.pi / 4) // returns number 0.7071067811865475\n * math.cos(math.unit(180, 'deg')) // returns number -1\n * math.cos(math.unit(60, 'deg')) // returns number 0.5\n *\n * const angle = 0.2\n * math.pow(math.sin(angle), 2) + math.pow(math.cos(angle), 2) // returns number ~1\n *\n * See also:\n *\n * cos, tan\n *\n * @param {number | BigNumber | Complex | Unit} x Function input\n * @return {number | BigNumber | Complex} Cosine of x\n */\n return typed(name, {\n number: Math.cos,\n 'Complex | BigNumber': x => x.cos()\n }, trigUnit);\n});", "import { factory } from '../../utils/factory.js';\nimport { cosh as coshNumber } from '../../utils/number.js';\nvar name = 'cosh';\nvar dependencies = ['typed'];\nexport var createCosh = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Calculate the hyperbolic cosine of a value,\n * defined as `cosh(x) = 1/2 * (exp(x) + exp(-x))`.\n *\n * To avoid confusion with the matrix hyperbolic cosine, this function does\n * not apply to matrices.\n *\n * Syntax:\n *\n * math.cosh(x)\n *\n * Examples:\n *\n * math.cosh(0.5) // returns number 1.1276259652063807\n *\n * See also:\n *\n * sinh, tanh\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} Hyperbolic cosine of x\n */\n return typed(name, {\n number: coshNumber,\n 'Complex | BigNumber': x => x.cosh()\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { cotNumber } from '../../plain/number/index.js';\nimport { createTrigUnit } from './trigUnit.js';\nvar name = 'cot';\nvar dependencies = ['typed', 'BigNumber'];\nexport var createCot = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber: _BigNumber\n } = _ref;\n var trigUnit = createTrigUnit({\n typed\n });\n\n /**\n * Calculate the cotangent of a value. Defined as `cot(x) = 1 / tan(x)`.\n *\n * To avoid confusion with the matrix cotangent, this function does not\n * apply to matrices.\n *\n * Syntax:\n *\n * math.cot(x)\n *\n * Examples:\n *\n * math.cot(2) // returns number -0.45765755436028577\n * 1 / math.tan(2) // returns number -0.45765755436028577\n *\n * See also:\n *\n * tan, sec, csc\n *\n * @param {number | Complex | Unit | Array | Matrix} x Function input\n * @return {number | Complex | Array | Matrix} Cotangent of x\n */\n return typed(name, {\n number: cotNumber,\n Complex: x => x.cot(),\n BigNumber: x => new _BigNumber(1).div(x.tan())\n }, trigUnit);\n});", "import { factory } from '../../utils/factory.js';\nimport { cothNumber } from '../../plain/number/index.js';\nvar name = 'coth';\nvar dependencies = ['typed', 'BigNumber'];\nexport var createCoth = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber: _BigNumber\n } = _ref;\n /**\n * Calculate the hyperbolic cotangent of a value,\n * defined as `coth(x) = 1 / tanh(x)`.\n *\n * To avoid confusion with the matrix hyperbolic cotangent, this function\n * does not apply to matrices.\n *\n * Syntax:\n *\n * math.coth(x)\n *\n * Examples:\n *\n * // coth(x) = 1 / tanh(x)\n * math.coth(2) // returns 1.0373147207275482\n * 1 / math.tanh(2) // returns 1.0373147207275482\n *\n * See also:\n *\n * sinh, tanh, cosh\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} Hyperbolic cotangent of x\n */\n return typed(name, {\n number: cothNumber,\n Complex: x => x.coth(),\n BigNumber: x => new _BigNumber(1).div(x.tanh())\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { cscNumber } from '../../plain/number/index.js';\nimport { createTrigUnit } from './trigUnit.js';\nvar name = 'csc';\nvar dependencies = ['typed', 'BigNumber'];\nexport var createCsc = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber: _BigNumber\n } = _ref;\n var trigUnit = createTrigUnit({\n typed\n });\n\n /**\n * Calculate the cosecant of a value, defined as `csc(x) = 1/sin(x)`.\n *\n * To avoid confusion with the matrix cosecant, this function does not\n * apply to matrices.\n *\n * Syntax:\n *\n * math.csc(x)\n *\n * Examples:\n *\n * math.csc(2) // returns number 1.099750170294617\n * 1 / math.sin(2) // returns number 1.099750170294617\n *\n * See also:\n *\n * sin, sec, cot\n *\n * @param {number | BigNumber | Complex | Unit} x Function input\n * @return {number | BigNumber | Complex} Cosecant of x\n */\n return typed(name, {\n number: cscNumber,\n Complex: x => x.csc(),\n BigNumber: x => new _BigNumber(1).div(x.sin())\n }, trigUnit);\n});", "import { factory } from '../../utils/factory.js';\nimport { cschNumber } from '../../plain/number/index.js';\nvar name = 'csch';\nvar dependencies = ['typed', 'BigNumber'];\nexport var createCsch = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber: _BigNumber\n } = _ref;\n /**\n * Calculate the hyperbolic cosecant of a value,\n * defined as `csch(x) = 1 / sinh(x)`.\n *\n * To avoid confusion with the matrix hyperbolic cosecant, this function\n * does not apply to matrices.\n *\n * Syntax:\n *\n * math.csch(x)\n *\n * Examples:\n *\n * // csch(x) = 1/ sinh(x)\n * math.csch(0.5) // returns 1.9190347513349437\n * 1 / math.sinh(0.5) // returns 1.9190347513349437\n *\n * See also:\n *\n * sinh, sech, coth\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} Hyperbolic cosecant of x\n */\n return typed(name, {\n number: cschNumber,\n Complex: x => x.csch(),\n BigNumber: x => new _BigNumber(1).div(x.sinh())\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { secNumber } from '../../plain/number/index.js';\nimport { createTrigUnit } from './trigUnit.js';\nvar name = 'sec';\nvar dependencies = ['typed', 'BigNumber'];\nexport var createSec = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber: _BigNumber\n } = _ref;\n var trigUnit = createTrigUnit({\n typed\n });\n\n /**\n * Calculate the secant of a value, defined as `sec(x) = 1/cos(x)`.\n *\n * To avoid confusion with the matrix secant, this function does not\n * apply to matrices.\n *\n * Syntax:\n *\n * math.sec(x)\n *\n * Examples:\n *\n * math.sec(2) // returns number -2.4029979617223822\n * 1 / math.cos(2) // returns number -2.4029979617223822\n *\n * See also:\n *\n * cos, csc, cot\n *\n * @param {number | BigNumber | Complex | Unit} x Function input\n * @return {number | BigNumber | Complex} Secant of x\n */\n return typed(name, {\n number: secNumber,\n Complex: x => x.sec(),\n BigNumber: x => new _BigNumber(1).div(x.cos())\n }, trigUnit);\n});", "import { factory } from '../../utils/factory.js';\nimport { sechNumber } from '../../plain/number/index.js';\nvar name = 'sech';\nvar dependencies = ['typed', 'BigNumber'];\nexport var createSech = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber: _BigNumber\n } = _ref;\n /**\n * Calculate the hyperbolic secant of a value,\n * defined as `sech(x) = 1 / cosh(x)`.\n *\n * To avoid confusion with the matrix hyperbolic secant, this function does\n * not apply to matrices.\n *\n * Syntax:\n *\n * math.sech(x)\n *\n * Examples:\n *\n * // sech(x) = 1/ cosh(x)\n * math.sech(0.5) // returns 0.886818883970074\n * 1 / math.cosh(0.5) // returns 0.886818883970074\n *\n * See also:\n *\n * cosh, csch, coth\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} Hyperbolic secant of x\n */\n return typed(name, {\n number: sechNumber,\n Complex: x => x.sech(),\n BigNumber: x => new _BigNumber(1).div(x.cosh())\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { createTrigUnit } from './trigUnit.js';\nvar name = 'sin';\nvar dependencies = ['typed'];\nexport var createSin = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n var trigUnit = createTrigUnit({\n typed\n });\n\n /**\n * Calculate the sine of a value.\n *\n * To avoid confusion with the matrix sine, this function does not apply\n * to matrices.\n *\n * Syntax:\n *\n * math.sin(x)\n *\n * Examples:\n *\n * math.sin(2) // returns number 0.9092974268256813\n * math.sin(math.pi / 4) // returns number 0.7071067811865475\n * math.sin(math.unit(90, 'deg')) // returns number 1\n * math.sin(math.unit(30, 'deg')) // returns number 0.5\n *\n * const angle = 0.2\n * math.pow(math.sin(angle), 2) + math.pow(math.cos(angle), 2) // returns number ~1\n *\n * See also:\n *\n * cos, tan\n *\n * @param {number | BigNumber | Complex | Unit} x Function input\n * @return {number | BigNumber | Complex} Sine of x\n */\n return typed(name, {\n number: Math.sin,\n 'Complex | BigNumber': x => x.sin()\n }, trigUnit);\n});", "import { factory } from '../../utils/factory.js';\nimport { sinhNumber } from '../../plain/number/index.js';\nvar name = 'sinh';\nvar dependencies = ['typed'];\nexport var createSinh = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Calculate the hyperbolic sine of a value,\n * defined as `sinh(x) = 1/2 * (exp(x) - exp(-x))`.\n *\n * To avoid confusion with the matrix hyperbolic sine, this function does\n * not apply to matrices.\n *\n * Syntax:\n *\n * math.sinh(x)\n *\n * Examples:\n *\n * math.sinh(0.5) // returns number 0.5210953054937474\n *\n * See also:\n *\n * cosh, tanh\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} Hyperbolic sine of x\n */\n return typed(name, {\n number: sinhNumber,\n 'Complex | BigNumber': x => x.sinh()\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { createTrigUnit } from './trigUnit.js';\nvar name = 'tan';\nvar dependencies = ['typed'];\nexport var createTan = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n var trigUnit = createTrigUnit({\n typed\n });\n\n /**\n * Calculate the tangent of a value. `tan(x)` is equal to `sin(x) / cos(x)`.\n *\n * To avoid confusion with the matrix tangent, this function does not apply\n * to matrices.\n *\n * Syntax:\n *\n * math.tan(x)\n *\n * Examples:\n *\n * math.tan(0.5) // returns number 0.5463024898437905\n * math.sin(0.5) / math.cos(0.5) // returns number 0.5463024898437905\n * math.tan(math.pi / 4) // returns number 1\n * math.tan(math.unit(45, 'deg')) // returns number 1\n *\n * See also:\n *\n * atan, sin, cos\n *\n * @param {number | BigNumber | Complex | Unit} x Function input\n * @return {number | BigNumber | Complex} Tangent of x\n */\n return typed(name, {\n number: Math.tan,\n 'Complex | BigNumber': x => x.tan()\n }, trigUnit);\n});", "import { factory } from '../../utils/factory.js';\nimport { tanh as _tanh } from '../../utils/number.js';\nvar name = 'tanh';\nvar dependencies = ['typed'];\nexport var createTanh = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Calculate the hyperbolic tangent of a value,\n * defined as `tanh(x) = (exp(2 * x) - 1) / (exp(2 * x) + 1)`.\n *\n * To avoid confusion with matrix hyperbolic tangent, this function does\n * not apply to matrices.\n *\n * Syntax:\n *\n * math.tanh(x)\n *\n * Examples:\n *\n * // tanh(x) = sinh(x) / cosh(x) = 1 / coth(x)\n * math.tanh(0.5) // returns 0.46211715726000974\n * math.sinh(0.5) / math.cosh(0.5) // returns 0.46211715726000974\n * 1 / math.coth(0.5) // returns 0.46211715726000974\n *\n * See also:\n *\n * sinh, cosh, coth\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} Hyperbolic tangent of x\n */\n return typed('tanh', {\n number: _tanh,\n 'Complex | BigNumber': x => x.tanh()\n });\n});", "import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setCartesian';\nvar dependencies = ['typed', 'size', 'subset', 'compareNatural', 'Index', 'DenseMatrix'];\nexport var createSetCartesian = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n subset,\n compareNatural,\n Index,\n DenseMatrix\n } = _ref;\n /**\n * Create the cartesian product of two (multi)sets.\n * Multi-dimension arrays will be converted to single-dimension arrays\n * and the values will be sorted in ascending order before the operation.\n *\n * Syntax:\n *\n * math.setCartesian(set1, set2)\n *\n * Examples:\n *\n * math.setCartesian([1, 2], [3, 4]) // returns [[1, 3], [1, 4], [2, 3], [2, 4]]\n * math.setCartesian([4, 3], [2, 1]) // returns [[3, 1], [3, 2], [4, 1], [4, 2]]\n *\n * See also:\n *\n * setUnion, setIntersect, setDifference, setPowerset\n *\n * @param {Array | Matrix} a1 A (multi)set\n * @param {Array | Matrix} a2 A (multi)set\n * @return {Array | Matrix} The cartesian product of two (multi)sets\n */\n return typed(name, {\n 'Array | Matrix, Array | Matrix': function Array__Matrix_Array__Matrix(a1, a2) {\n var result = [];\n if (subset(size(a1), new Index(0)) !== 0 && subset(size(a2), new Index(0)) !== 0) {\n // if any of them is empty, return empty\n var b1 = flatten(Array.isArray(a1) ? a1 : a1.toArray()).sort(compareNatural);\n var b2 = flatten(Array.isArray(a2) ? a2 : a2.toArray()).sort(compareNatural);\n result = [];\n for (var i = 0; i < b1.length; i++) {\n for (var j = 0; j < b2.length; j++) {\n result.push([b1[i], b2[j]]);\n }\n }\n }\n // return an array, if both inputs were arrays\n if (Array.isArray(a1) && Array.isArray(a2)) {\n return result;\n }\n // return a matrix otherwise\n return new DenseMatrix(result);\n }\n });\n});", "import { flatten, generalize, identify } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setDifference';\nvar dependencies = ['typed', 'size', 'subset', 'compareNatural', 'Index', 'DenseMatrix'];\nexport var createSetDifference = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n subset,\n compareNatural,\n Index,\n DenseMatrix\n } = _ref;\n /**\n * Create the difference of two (multi)sets: every element of set1, that is not the element of set2.\n * Multi-dimension arrays will be converted to single-dimension arrays before the operation.\n *\n * Syntax:\n *\n * math.setDifference(set1, set2)\n *\n * Examples:\n *\n * math.setDifference([1, 2, 3, 4], [3, 4, 5, 6]) // returns [1, 2]\n * math.setDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]]) // returns [1, 2]\n *\n * See also:\n *\n * setUnion, setIntersect, setSymDifference\n *\n * @param {Array | Matrix} a1 A (multi)set\n * @param {Array | Matrix} a2 A (multi)set\n * @return {Array | Matrix} The difference of two (multi)sets\n */\n return typed(name, {\n 'Array | Matrix, Array | Matrix': function Array__Matrix_Array__Matrix(a1, a2) {\n var result;\n if (subset(size(a1), new Index(0)) === 0) {\n // empty-anything=empty\n result = [];\n } else if (subset(size(a2), new Index(0)) === 0) {\n // anything-empty=anything\n return flatten(a1.toArray());\n } else {\n var b1 = identify(flatten(Array.isArray(a1) ? a1 : a1.toArray()).sort(compareNatural));\n var b2 = identify(flatten(Array.isArray(a2) ? a2 : a2.toArray()).sort(compareNatural));\n result = [];\n var inb2;\n for (var i = 0; i < b1.length; i++) {\n inb2 = false;\n for (var j = 0; j < b2.length; j++) {\n if (compareNatural(b1[i].value, b2[j].value) === 0 && b1[i].identifier === b2[j].identifier) {\n // the identifier is always a decimal int\n inb2 = true;\n break;\n }\n }\n if (!inb2) {\n result.push(b1[i]);\n }\n }\n }\n // return an array, if both inputs were arrays\n if (Array.isArray(a1) && Array.isArray(a2)) {\n return generalize(result);\n }\n // return a matrix otherwise\n return new DenseMatrix(generalize(result));\n }\n });\n});", "import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setDistinct';\nvar dependencies = ['typed', 'size', 'subset', 'compareNatural', 'Index', 'DenseMatrix'];\nexport var createSetDistinct = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n subset,\n compareNatural,\n Index,\n DenseMatrix\n } = _ref;\n /**\n * Collect the distinct elements of a multiset.\n * A multi-dimension array will be converted to a single-dimension array before the operation.\n *\n * Syntax:\n *\n * math.setDistinct(set)\n *\n * Examples:\n *\n * math.setDistinct([1, 1, 1, 2, 2, 3]) // returns [1, 2, 3]\n *\n * See also:\n *\n * setMultiplicity\n *\n * @param {Array | Matrix} a A multiset\n * @return {Array | Matrix} A set containing the distinc elements of the multiset\n */\n return typed(name, {\n 'Array | Matrix': function Array__Matrix(a) {\n var result;\n if (subset(size(a), new Index(0)) === 0) {\n // if empty, return empty\n result = [];\n } else {\n var b = flatten(Array.isArray(a) ? a : a.toArray()).sort(compareNatural);\n result = [];\n result.push(b[0]);\n for (var i = 1; i < b.length; i++) {\n if (compareNatural(b[i], b[i - 1]) !== 0) {\n result.push(b[i]);\n }\n }\n }\n // return an array, if the input was an array\n if (Array.isArray(a)) {\n return result;\n }\n // return a matrix otherwise\n return new DenseMatrix(result);\n }\n });\n});", "import { flatten, generalize, identify } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setIntersect';\nvar dependencies = ['typed', 'size', 'subset', 'compareNatural', 'Index', 'DenseMatrix'];\nexport var createSetIntersect = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n subset,\n compareNatural,\n Index,\n DenseMatrix\n } = _ref;\n /**\n * Create the intersection of two (multi)sets.\n * Multi-dimension arrays will be converted to single-dimension arrays before the operation.\n *\n * Syntax:\n *\n * math.setIntersect(set1, set2)\n *\n * Examples:\n *\n * math.setIntersect([1, 2, 3, 4], [3, 4, 5, 6]) // returns [3, 4]\n * math.setIntersect([[1, 2], [3, 4]], [[3, 4], [5, 6]]) // returns [3, 4]\n *\n * See also:\n *\n * setUnion, setDifference\n *\n * @param {Array | Matrix} a1 A (multi)set\n * @param {Array | Matrix} a2 A (multi)set\n * @return {Array | Matrix} The intersection of two (multi)sets\n */\n return typed(name, {\n 'Array | Matrix, Array | Matrix': function Array__Matrix_Array__Matrix(a1, a2) {\n var result;\n if (subset(size(a1), new Index(0)) === 0 || subset(size(a2), new Index(0)) === 0) {\n // of any of them is empty, return empty\n result = [];\n } else {\n var b1 = identify(flatten(Array.isArray(a1) ? a1 : a1.toArray()).sort(compareNatural));\n var b2 = identify(flatten(Array.isArray(a2) ? a2 : a2.toArray()).sort(compareNatural));\n result = [];\n for (var i = 0; i < b1.length; i++) {\n for (var j = 0; j < b2.length; j++) {\n if (compareNatural(b1[i].value, b2[j].value) === 0 && b1[i].identifier === b2[j].identifier) {\n // the identifier is always a decimal int\n result.push(b1[i]);\n break;\n }\n }\n }\n }\n // return an array, if both inputs were arrays\n if (Array.isArray(a1) && Array.isArray(a2)) {\n return generalize(result);\n }\n // return a matrix otherwise\n return new DenseMatrix(generalize(result));\n }\n });\n});", "import { flatten, identify } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setIsSubset';\nvar dependencies = ['typed', 'size', 'subset', 'compareNatural', 'Index'];\nexport var createSetIsSubset = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n subset,\n compareNatural,\n Index\n } = _ref;\n /**\n * Check whether a (multi)set is a subset of another (multi)set. (Every element of set1 is the element of set2.)\n * Multi-dimension arrays will be converted to single-dimension arrays before the operation.\n *\n * Syntax:\n *\n * math.setIsSubset(set1, set2)\n *\n * Examples:\n *\n * math.setIsSubset([1, 2], [3, 4, 5, 6]) // returns false\n * math.setIsSubset([3, 4], [3, 4, 5, 6]) // returns true\n *\n * See also:\n *\n * setUnion, setIntersect, setDifference\n *\n * @param {Array | Matrix} a1 A (multi)set\n * @param {Array | Matrix} a2 A (multi)set\n * @return {boolean} Returns true when a1 is a subset of a2, returns false otherwise\n */\n return typed(name, {\n 'Array | Matrix, Array | Matrix': function Array__Matrix_Array__Matrix(a1, a2) {\n if (subset(size(a1), new Index(0)) === 0) {\n // empty is a subset of anything\n return true;\n } else if (subset(size(a2), new Index(0)) === 0) {\n // anything is not a subset of empty\n return false;\n }\n var b1 = identify(flatten(Array.isArray(a1) ? a1 : a1.toArray()).sort(compareNatural));\n var b2 = identify(flatten(Array.isArray(a2) ? a2 : a2.toArray()).sort(compareNatural));\n var inb2;\n for (var i = 0; i < b1.length; i++) {\n inb2 = false;\n for (var j = 0; j < b2.length; j++) {\n if (compareNatural(b1[i].value, b2[j].value) === 0 && b1[i].identifier === b2[j].identifier) {\n // the identifier is always a decimal int\n inb2 = true;\n break;\n }\n }\n if (inb2 === false) {\n return false;\n }\n }\n return true;\n }\n });\n});", "import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setMultiplicity';\nvar dependencies = ['typed', 'size', 'subset', 'compareNatural', 'Index'];\nexport var createSetMultiplicity = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n subset,\n compareNatural,\n Index\n } = _ref;\n /**\n * Count the multiplicity of an element in a multiset.\n * A multi-dimension array will be converted to a single-dimension array before the operation.\n *\n * Syntax:\n *\n * math.setMultiplicity(element, set)\n *\n * Examples:\n *\n * math.setMultiplicity(1, [1, 2, 2, 4]) // returns 1\n * math.setMultiplicity(2, [1, 2, 2, 4]) // returns 2\n *\n * See also:\n *\n * setDistinct, setSize\n *\n * @param {number | BigNumber | Fraction | Complex} e An element in the multiset\n * @param {Array | Matrix} a A multiset\n * @return {number} The number of how many times the multiset contains the element\n */\n return typed(name, {\n 'number | BigNumber | Fraction | Complex, Array | Matrix': function number__BigNumber__Fraction__Complex_Array__Matrix(e, a) {\n if (subset(size(a), new Index(0)) === 0) {\n // if empty, return 0\n return 0;\n }\n var b = flatten(Array.isArray(a) ? a : a.toArray());\n var count = 0;\n for (var i = 0; i < b.length; i++) {\n if (compareNatural(b[i], e) === 0) {\n count++;\n }\n }\n return count;\n }\n });\n});", "import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setPowerset';\nvar dependencies = ['typed', 'size', 'subset', 'compareNatural', 'Index'];\nexport var createSetPowerset = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n subset,\n compareNatural,\n Index\n } = _ref;\n /**\n * Create the powerset of a (multi)set. (The powerset contains very possible subsets of a (multi)set.)\n * A multi-dimension array will be converted to a single-dimension array before the operation.\n *\n * Syntax:\n *\n * math.setPowerset(set)\n *\n * Examples:\n *\n * math.setPowerset([1, 2, 3]) // returns [[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]\n *\n * See also:\n *\n * setCartesian\n *\n * @param {Array | Matrix} a A (multi)set\n * @return {Array} The powerset of the (multi)set\n */\n return typed(name, {\n 'Array | Matrix': function Array__Matrix(a) {\n if (subset(size(a), new Index(0)) === 0) {\n // if empty, return empty\n return [];\n }\n var b = flatten(Array.isArray(a) ? a : a.toArray()).sort(compareNatural);\n var result = [];\n var number = 0;\n while (number.toString(2).length <= b.length) {\n result.push(_subset(b, number.toString(2).split('').reverse()));\n number++;\n }\n // can not return a matrix, because of the different size of the subarrays\n return _sort(result);\n }\n });\n\n // create subset\n function _subset(array, bitarray) {\n var result = [];\n for (var i = 0; i < bitarray.length; i++) {\n if (bitarray[i] === '1') {\n result.push(array[i]);\n }\n }\n return result;\n }\n\n // sort subsests by length\n function _sort(array) {\n var temp = [];\n for (var i = array.length - 1; i > 0; i--) {\n for (var j = 0; j < i; j++) {\n if (array[j].length > array[j + 1].length) {\n temp = array[j];\n array[j] = array[j + 1];\n array[j + 1] = temp;\n }\n }\n }\n return array;\n }\n});", "import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setSize';\nvar dependencies = ['typed', 'compareNatural'];\nexport var createSetSize = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n compareNatural\n } = _ref;\n /**\n * Count the number of elements of a (multi)set. When a second parameter is 'true', count only the unique values.\n * A multi-dimension array will be converted to a single-dimension array before the operation.\n *\n * Syntax:\n *\n * math.setSize(set)\n * math.setSize(set, unique)\n *\n * Examples:\n *\n * math.setSize([1, 2, 2, 4]) // returns 4\n * math.setSize([1, 2, 2, 4], true) // returns 3\n *\n * See also:\n *\n * setUnion, setIntersect, setDifference\n *\n * @param {Array | Matrix} a A multiset\n * @param {boolean} [unique] If true, only the unique values are counted. False by default\n * @return {number} The number of elements of the (multi)set\n */\n return typed(name, {\n 'Array | Matrix': function Array__Matrix(a) {\n return Array.isArray(a) ? flatten(a).length : flatten(a.toArray()).length;\n },\n 'Array | Matrix, boolean': function Array__Matrix_boolean(a, unique) {\n if (unique === false || a.length === 0) {\n return Array.isArray(a) ? flatten(a).length : flatten(a.toArray()).length;\n } else {\n var b = flatten(Array.isArray(a) ? a : a.toArray()).sort(compareNatural);\n var count = 1;\n for (var i = 1; i < b.length; i++) {\n if (compareNatural(b[i], b[i - 1]) !== 0) {\n count++;\n }\n }\n return count;\n }\n }\n });\n});", "import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setSymDifference';\nvar dependencies = ['typed', 'size', 'concat', 'subset', 'setDifference', 'Index'];\nexport var createSetSymDifference = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n concat,\n subset,\n setDifference,\n Index\n } = _ref;\n /**\n * Create the symmetric difference of two (multi)sets.\n * Multi-dimension arrays will be converted to single-dimension arrays before the operation.\n *\n * Syntax:\n *\n * math.setSymDifference(set1, set2)\n *\n * Examples:\n *\n * math.setSymDifference([1, 2, 3, 4], [3, 4, 5, 6]) // returns [1, 2, 5, 6]\n * math.setSymDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]]) // returns [1, 2, 5, 6]\n *\n * See also:\n *\n * setUnion, setIntersect, setDifference\n *\n * @param {Array | Matrix} a1 A (multi)set\n * @param {Array | Matrix} a2 A (multi)set\n * @return {Array | Matrix} The symmetric difference of two (multi)sets\n */\n return typed(name, {\n 'Array | Matrix, Array | Matrix': function Array__Matrix_Array__Matrix(a1, a2) {\n if (subset(size(a1), new Index(0)) === 0) {\n // if any of them is empty, return the other one\n return flatten(a2);\n } else if (subset(size(a2), new Index(0)) === 0) {\n return flatten(a1);\n }\n var b1 = flatten(a1);\n var b2 = flatten(a2);\n return concat(setDifference(b1, b2), setDifference(b2, b1));\n }\n });\n});", "import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setUnion';\nvar dependencies = ['typed', 'size', 'concat', 'subset', 'setIntersect', 'setSymDifference', 'Index'];\nexport var createSetUnion = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n concat,\n subset,\n setIntersect,\n setSymDifference,\n Index\n } = _ref;\n /**\n * Create the union of two (multi)sets.\n * Multi-dimension arrays will be converted to single-dimension arrays before the operation.\n *\n * Syntax:\n *\n * math.setUnion(set1, set2)\n *\n * Examples:\n *\n * math.setUnion([1, 2, 3, 4], [3, 4, 5, 6]) // returns [1, 2, 3, 4, 5, 6]\n * math.setUnion([[1, 2], [3, 4]], [[3, 4], [5, 6]]) // returns [1, 2, 3, 4, 5, 6]\n *\n * See also:\n *\n * setIntersect, setDifference\n *\n * @param {Array | Matrix} a1 A (multi)set\n * @param {Array | Matrix} a2 A (multi)set\n * @return {Array | Matrix} The union of two (multi)sets\n */\n return typed(name, {\n 'Array | Matrix, Array | Matrix': function Array__Matrix_Array__Matrix(a1, a2) {\n if (subset(size(a1), new Index(0)) === 0) {\n // if any of them is empty, return the other one\n return flatten(a2);\n } else if (subset(size(a2), new Index(0)) === 0) {\n return flatten(a1);\n }\n var b1 = flatten(a1);\n var b2 = flatten(a2);\n return concat(setSymDifference(b1, b2), setIntersect(b1, b2));\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { createMatAlgo01xDSid } from '../../type/matrix/utils/matAlgo01xDSid.js';\nimport { createMatAlgo04xSidSid } from '../../type/matrix/utils/matAlgo04xSidSid.js';\nimport { createMatAlgo10xSids } from '../../type/matrix/utils/matAlgo10xSids.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nvar name = 'add';\nvar dependencies = ['typed', 'matrix', 'addScalar', 'equalScalar', 'DenseMatrix', 'SparseMatrix', 'concat'];\nexport var createAdd = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n addScalar,\n equalScalar,\n DenseMatrix,\n SparseMatrix,\n concat\n } = _ref;\n var matAlgo01xDSid = createMatAlgo01xDSid({\n typed\n });\n var matAlgo04xSidSid = createMatAlgo04xSidSid({\n typed,\n equalScalar\n });\n var matAlgo10xSids = createMatAlgo10xSids({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n /**\n * Add two or more values, `x + y`.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.add(x, y)\n * math.add(x, y, z, ...)\n *\n * Examples:\n *\n * math.add(2, 3) // returns number 5\n * math.add(2, 3, 4) // returns number 9\n *\n * const a = math.complex(2, 3)\n * const b = math.complex(-4, 1)\n * math.add(a, b) // returns Complex -2 + 4i\n *\n * math.add([1, 2, 3], 4) // returns Array [5, 6, 7]\n *\n * const c = math.unit('5 cm')\n * const d = math.unit('2.1 mm')\n * math.add(c, d) // returns Unit 52.1 mm\n *\n * math.add(\"2.3\", \"4\") // returns number 6.3\n *\n * See also:\n *\n * subtract, sum\n *\n * @param {number | BigNumber | bigint | Fraction | Complex | Unit | Array | Matrix} x First value to add\n * @param {number | BigNumber | bigint | Fraction | Complex | Unit | Array | Matrix} y Second value to add\n * @return {number | BigNumber | bigint | Fraction | Complex | Unit | Array | Matrix} Sum of `x` and `y`\n */\n return typed(name, {\n 'any, any': addScalar,\n 'any, any, ...any': typed.referToSelf(self => (x, y, rest) => {\n var result = self(x, y);\n for (var i = 0; i < rest.length; i++) {\n result = self(result, rest[i]);\n }\n return result;\n })\n }, matrixAlgorithmSuite({\n elop: addScalar,\n DS: matAlgo01xDSid,\n SS: matAlgo04xSidSid,\n Ss: matAlgo10xSids\n }));\n});", "import { factory } from '../../utils/factory.js';\nimport { flatten } from '../../utils/array.js';\nimport { isComplex } from '../../utils/is.js';\nvar name = 'hypot';\nvar dependencies = ['typed', 'abs', 'addScalar', 'divideScalar', 'multiplyScalar', 'sqrt', 'smaller', 'isPositive'];\nexport var createHypot = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n abs,\n addScalar,\n divideScalar,\n multiplyScalar,\n sqrt,\n smaller,\n isPositive\n } = _ref;\n /**\n * Calculate the hypotenuse of a list with values. The hypotenuse is defined as:\n *\n * hypot(a, b, c, ...) = sqrt(a^2 + b^2 + c^2 + ...)\n *\n * For matrix input, the hypotenuse is calculated for all values in the matrix.\n *\n * Syntax:\n *\n * math.hypot(a, b, ...)\n * math.hypot([a, b, c, ...])\n *\n * Examples:\n *\n * math.hypot(3, 4) // 5\n * math.hypot(3, 4, 5) // 7.0710678118654755\n * math.hypot([3, 4, 5]) // 7.0710678118654755\n * math.hypot(-2) // 2\n *\n * See also:\n *\n * abs, norm\n *\n * @param {... number | BigNumber | Array | Matrix} args A list with numeric values or an Array or Matrix.\n * Matrix and Array input is flattened and returns a\n * single number for the whole matrix.\n * @return {number | BigNumber} Returns the hypothenusa of the input values.\n */\n return typed(name, {\n '... number | BigNumber': _hypot,\n Array: _hypot,\n Matrix: M => _hypot(flatten(M.toArray()))\n });\n\n /**\n * Calculate the hypotenuse for an Array with values\n * @param {Array.} args\n * @return {number | BigNumber} Returns the result\n * @private\n */\n function _hypot(args) {\n // code based on `hypot` from es6-shim:\n // https://github.com/paulmillr/es6-shim/blob/master/es6-shim.js#L1619-L1633\n var result = 0;\n var largest = 0;\n for (var i = 0; i < args.length; i++) {\n if (isComplex(args[i])) {\n throw new TypeError('Unexpected type of argument to hypot');\n }\n var value = abs(args[i]);\n if (smaller(largest, value)) {\n result = multiplyScalar(result, multiplyScalar(divideScalar(largest, value), divideScalar(largest, value)));\n result = addScalar(result, 1);\n largest = value;\n } else {\n result = addScalar(result, isPositive(value) ? multiplyScalar(divideScalar(value, largest), divideScalar(value, largest)) : value);\n }\n }\n return multiplyScalar(largest, sqrt(result));\n }\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'norm';\nvar dependencies = ['typed', 'abs', 'add', 'pow', 'conj', 'sqrt', 'multiply', 'equalScalar', 'larger', 'smaller', 'matrix', 'ctranspose', 'eigs'];\nexport var createNorm = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n abs,\n add,\n pow,\n conj,\n sqrt,\n multiply,\n equalScalar,\n larger,\n smaller,\n matrix,\n ctranspose,\n eigs\n } = _ref;\n /**\n * Calculate the norm of a number, vector or matrix.\n *\n * The second parameter p is optional. If not provided, it defaults to 2.\n *\n * Syntax:\n *\n * math.norm(x)\n * math.norm(x, p)\n *\n * Examples:\n *\n * math.abs(-3.5) // returns 3.5\n * math.norm(-3.5) // returns 3.5\n *\n * math.norm(math.complex(3, -4)) // returns 5\n *\n * math.norm([1, 2, -3], Infinity) // returns 3\n * math.norm([1, 2, -3], -Infinity) // returns 1\n *\n * math.norm([3, 4], 2) // returns 5\n *\n * math.norm([[1, 2], [3, 4]], 1) // returns 6\n * math.norm([[1, 2], [3, 4]], 'inf') // returns 7\n * math.norm([[1, 2], [3, 4]], 'fro') // returns 5.477225575051661\n *\n * See also:\n *\n * abs, hypot\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x\n * Value for which to calculate the norm\n * @param {number | BigNumber | string} [p=2]\n * Vector space.\n * Supported numbers include Infinity and -Infinity.\n * Supported strings are: 'inf', '-inf', and 'fro' (The Frobenius norm)\n * @return {number | BigNumber} the p-norm\n */\n return typed(name, {\n number: Math.abs,\n Complex: function Complex(x) {\n return x.abs();\n },\n BigNumber: function BigNumber(x) {\n // norm(x) = abs(x)\n return x.abs();\n },\n boolean: function boolean(x) {\n // norm(x) = abs(x)\n return Math.abs(x);\n },\n Array: function Array(x) {\n return _norm(matrix(x), 2);\n },\n Matrix: function Matrix(x) {\n return _norm(x, 2);\n },\n 'Array, number | BigNumber | string': function Array_number__BigNumber__string(x, p) {\n return _norm(matrix(x), p);\n },\n 'Matrix, number | BigNumber | string': function Matrix_number__BigNumber__string(x, p) {\n return _norm(x, p);\n }\n });\n\n /**\n * Calculate the plus infinity norm for a vector\n * @param {Matrix} x\n * @returns {number} Returns the norm\n * @private\n */\n function _vectorNormPlusInfinity(x) {\n // norm(x, Infinity) = max(abs(x))\n var pinf = 0;\n // skip zeros since abs(0) === 0\n x.forEach(function (value) {\n var v = abs(value);\n if (larger(v, pinf)) {\n pinf = v;\n }\n }, true);\n return pinf;\n }\n\n /**\n * Calculate the minus infinity norm for a vector\n * @param {Matrix} x\n * @returns {number} Returns the norm\n * @private\n */\n function _vectorNormMinusInfinity(x) {\n // norm(x, -Infinity) = min(abs(x))\n var ninf;\n // skip zeros since abs(0) === 0\n x.forEach(function (value) {\n var v = abs(value);\n if (!ninf || smaller(v, ninf)) {\n ninf = v;\n }\n }, true);\n return ninf || 0;\n }\n\n /**\n * Calculate the norm for a vector\n * @param {Matrix} x\n * @param {number | string} p\n * @returns {number} Returns the norm\n * @private\n */\n function _vectorNorm(x, p) {\n // check p\n if (p === Number.POSITIVE_INFINITY || p === 'inf') {\n return _vectorNormPlusInfinity(x);\n }\n if (p === Number.NEGATIVE_INFINITY || p === '-inf') {\n return _vectorNormMinusInfinity(x);\n }\n if (p === 'fro') {\n return _norm(x, 2);\n }\n if (typeof p === 'number' && !isNaN(p)) {\n // check p != 0\n if (!equalScalar(p, 0)) {\n // norm(x, p) = sum(abs(xi) ^ p) ^ 1/p\n var n = 0;\n // skip zeros since abs(0) === 0\n x.forEach(function (value) {\n n = add(pow(abs(value), p), n);\n }, true);\n return pow(n, 1 / p);\n }\n return Number.POSITIVE_INFINITY;\n }\n // invalid parameter value\n throw new Error('Unsupported parameter value');\n }\n\n /**\n * Calculate the Frobenius norm for a matrix\n * @param {Matrix} x\n * @returns {number} Returns the norm\n * @private\n */\n function _matrixNormFrobenius(x) {\n // norm(x) = sqrt(sum(diag(x'x)))\n var fro = 0;\n x.forEach(function (value, index) {\n fro = add(fro, multiply(value, conj(value)));\n });\n return abs(sqrt(fro));\n }\n\n /**\n * Calculate the norm L1 for a matrix\n * @param {Matrix} x\n * @returns {number} Returns the norm\n * @private\n */\n function _matrixNormOne(x) {\n // norm(x) = the largest column sum\n var c = [];\n // result\n var maxc = 0;\n // skip zeros since abs(0) == 0\n x.forEach(function (value, index) {\n var j = index[1];\n var cj = add(c[j] || 0, abs(value));\n if (larger(cj, maxc)) {\n maxc = cj;\n }\n c[j] = cj;\n }, true);\n return maxc;\n }\n\n /**\n * Calculate the norm L2 for a matrix\n * @param {Matrix} x\n * @returns {number} Returns the norm\n * @private\n */\n function _matrixNormTwo(x) {\n // norm(x) = sqrt( max eigenvalue of A*.A)\n var sizeX = x.size();\n if (sizeX[0] !== sizeX[1]) {\n throw new RangeError('Invalid matrix dimensions');\n }\n var tx = ctranspose(x);\n var squaredX = multiply(tx, x);\n var eigenVals = eigs(squaredX).values.toArray();\n var rho = eigenVals[eigenVals.length - 1];\n return abs(sqrt(rho));\n }\n\n /**\n * Calculate the infinity norm for a matrix\n * @param {Matrix} x\n * @returns {number} Returns the norm\n * @private\n */\n function _matrixNormInfinity(x) {\n // norm(x) = the largest row sum\n var r = [];\n // result\n var maxr = 0;\n // skip zeros since abs(0) == 0\n x.forEach(function (value, index) {\n var i = index[0];\n var ri = add(r[i] || 0, abs(value));\n if (larger(ri, maxr)) {\n maxr = ri;\n }\n r[i] = ri;\n }, true);\n return maxr;\n }\n\n /**\n * Calculate the norm for a 2D Matrix (M*N)\n * @param {Matrix} x\n * @param {number | string} p\n * @returns {number} Returns the norm\n * @private\n */\n function _matrixNorm(x, p) {\n // check p\n if (p === 1) {\n return _matrixNormOne(x);\n }\n if (p === Number.POSITIVE_INFINITY || p === 'inf') {\n return _matrixNormInfinity(x);\n }\n if (p === 'fro') {\n return _matrixNormFrobenius(x);\n }\n if (p === 2) {\n return _matrixNormTwo(x);\n } // invalid parameter value\n\n throw new Error('Unsupported parameter value ' + p);\n }\n\n /**\n * Calculate the norm for an array\n * @param {Matrix} x\n * @param {number | string} p\n * @returns {number} Returns the norm\n * @private\n */\n function _norm(x, p) {\n // size\n var sizeX = x.size();\n\n // check if it is a vector\n if (sizeX.length === 1) {\n return _vectorNorm(x, p);\n }\n // MxN matrix\n if (sizeX.length === 2) {\n if (sizeX[0] && sizeX[1]) {\n return _matrixNorm(x, p);\n } else {\n throw new RangeError('Invalid matrix dimensions');\n }\n }\n }\n});", "import { factory } from '../../utils/factory.js';\nimport { isMatrix } from '../../utils/is.js';\nvar name = 'dot';\nvar dependencies = ['typed', 'addScalar', 'multiplyScalar', 'conj', 'size'];\nexport var createDot = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n addScalar,\n multiplyScalar,\n conj,\n size\n } = _ref;\n /**\n * Calculate the dot product of two vectors. The dot product of\n * `A = [a1, a2, ..., an]` and `B = [b1, b2, ..., bn]` is defined as:\n *\n * dot(A, B) = conj(a1) * b1 + conj(a2) * b2 + ... + conj(an) * bn\n *\n * Syntax:\n *\n * math.dot(x, y)\n *\n * Examples:\n *\n * math.dot([2, 4, 1], [2, 2, 3]) // returns number 15\n * math.multiply([2, 4, 1], [2, 2, 3]) // returns number 15\n *\n * See also:\n *\n * multiply, cross\n *\n * @param {Array | Matrix} x First vector\n * @param {Array | Matrix} y Second vector\n * @return {number} Returns the dot product of `x` and `y`\n */\n return typed(name, {\n 'Array | DenseMatrix, Array | DenseMatrix': _denseDot,\n 'SparseMatrix, SparseMatrix': _sparseDot\n });\n function _validateDim(x, y) {\n var xSize = _size(x);\n var ySize = _size(y);\n var xLen, yLen;\n if (xSize.length === 1) {\n xLen = xSize[0];\n } else if (xSize.length === 2 && xSize[1] === 1) {\n xLen = xSize[0];\n } else {\n throw new RangeError('Expected a column vector, instead got a matrix of size (' + xSize.join(', ') + ')');\n }\n if (ySize.length === 1) {\n yLen = ySize[0];\n } else if (ySize.length === 2 && ySize[1] === 1) {\n yLen = ySize[0];\n } else {\n throw new RangeError('Expected a column vector, instead got a matrix of size (' + ySize.join(', ') + ')');\n }\n if (xLen !== yLen) throw new RangeError('Vectors must have equal length (' + xLen + ' != ' + yLen + ')');\n if (xLen === 0) throw new RangeError('Cannot calculate the dot product of empty vectors');\n return xLen;\n }\n function _denseDot(a, b) {\n var N = _validateDim(a, b);\n var adata = isMatrix(a) ? a._data : a;\n var adt = isMatrix(a) ? a._datatype || a.getDataType() : undefined;\n var bdata = isMatrix(b) ? b._data : b;\n var bdt = isMatrix(b) ? b._datatype || b.getDataType() : undefined;\n\n // are these 2-dimensional column vectors? (as opposed to 1-dimensional vectors)\n var aIsColumn = _size(a).length === 2;\n var bIsColumn = _size(b).length === 2;\n var add = addScalar;\n var mul = multiplyScalar;\n\n // process data types\n if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') {\n var dt = adt;\n // find signatures that matches (dt, dt)\n add = typed.find(addScalar, [dt, dt]);\n mul = typed.find(multiplyScalar, [dt, dt]);\n }\n\n // both vectors 1-dimensional\n if (!aIsColumn && !bIsColumn) {\n var c = mul(conj(adata[0]), bdata[0]);\n for (var i = 1; i < N; i++) {\n c = add(c, mul(conj(adata[i]), bdata[i]));\n }\n return c;\n }\n\n // a is 1-dim, b is column\n if (!aIsColumn && bIsColumn) {\n var _c = mul(conj(adata[0]), bdata[0][0]);\n for (var _i = 1; _i < N; _i++) {\n _c = add(_c, mul(conj(adata[_i]), bdata[_i][0]));\n }\n return _c;\n }\n\n // a is column, b is 1-dim\n if (aIsColumn && !bIsColumn) {\n var _c2 = mul(conj(adata[0][0]), bdata[0]);\n for (var _i2 = 1; _i2 < N; _i2++) {\n _c2 = add(_c2, mul(conj(adata[_i2][0]), bdata[_i2]));\n }\n return _c2;\n }\n\n // both vectors are column\n if (aIsColumn && bIsColumn) {\n var _c3 = mul(conj(adata[0][0]), bdata[0][0]);\n for (var _i3 = 1; _i3 < N; _i3++) {\n _c3 = add(_c3, mul(conj(adata[_i3][0]), bdata[_i3][0]));\n }\n return _c3;\n }\n }\n function _sparseDot(x, y) {\n _validateDim(x, y);\n var xindex = x._index;\n var xvalues = x._values;\n var yindex = y._index;\n var yvalues = y._values;\n\n // TODO optimize add & mul using datatype\n var c = 0;\n var add = addScalar;\n var mul = multiplyScalar;\n var i = 0;\n var j = 0;\n while (i < xindex.length && j < yindex.length) {\n var I = xindex[i];\n var J = yindex[j];\n if (I < J) {\n i++;\n continue;\n }\n if (I > J) {\n j++;\n continue;\n }\n if (I === J) {\n c = add(c, mul(xvalues[i], yvalues[j]));\n i++;\n j++;\n }\n }\n return c;\n }\n\n // TODO remove this once #1771 is fixed\n function _size(x) {\n return isMatrix(x) ? x.size() : size(x);\n }\n});", "import { clone } from '../../utils/object.js';\nimport { format } from '../../utils/string.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'trace';\nvar dependencies = ['typed', 'matrix', 'add'];\nexport var createTrace = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n add\n } = _ref;\n /**\n * Calculate the trace of a matrix: the sum of the elements on the main\n * diagonal of a square matrix.\n *\n * Syntax:\n *\n * math.trace(x)\n *\n * Examples:\n *\n * math.trace([[1, 2], [3, 4]]) // returns 5\n *\n * const A = [\n * [1, 2, 3],\n * [-1, 2, 3],\n * [2, 0, 3]\n * ]\n * math.trace(A) // returns 6\n *\n * See also:\n *\n * diag\n *\n * @param {Array | Matrix} x A matrix\n *\n * @return {number} The trace of `x`\n */\n return typed('trace', {\n Array: function _arrayTrace(x) {\n // use dense matrix implementation\n return _denseTrace(matrix(x));\n },\n SparseMatrix: _sparseTrace,\n DenseMatrix: _denseTrace,\n any: clone\n });\n function _denseTrace(m) {\n // matrix size & data\n var size = m._size;\n var data = m._data;\n\n // process dimensions\n switch (size.length) {\n case 1:\n // vector\n if (size[0] === 1) {\n // return data[0]\n return clone(data[0]);\n }\n throw new RangeError('Matrix must be square (size: ' + format(size) + ')');\n case 2:\n {\n // two dimensional\n var rows = size[0];\n var cols = size[1];\n if (rows === cols) {\n // calulate sum\n var sum = 0;\n // loop diagonal\n for (var i = 0; i < rows; i++) {\n sum = add(sum, data[i][i]);\n }\n // return trace\n return sum;\n } else {\n throw new RangeError('Matrix must be square (size: ' + format(size) + ')');\n }\n }\n default:\n // multi dimensional\n throw new RangeError('Matrix must be two dimensional (size: ' + format(size) + ')');\n }\n }\n function _sparseTrace(m) {\n // matrix arrays\n var values = m._values;\n var index = m._index;\n var ptr = m._ptr;\n var size = m._size;\n // check dimensions\n var rows = size[0];\n var columns = size[1];\n // matrix must be square\n if (rows === columns) {\n // calulate sum\n var sum = 0;\n // check we have data (avoid looping columns)\n if (values.length > 0) {\n // loop columns\n for (var j = 0; j < columns; j++) {\n // k0 <= k < k1 where k0 = _ptr[j] && k1 = _ptr[j+1]\n var k0 = ptr[j];\n var k1 = ptr[j + 1];\n // loop k within [k0, k1[\n for (var k = k0; k < k1; k++) {\n // row index\n var i = index[k];\n // check row\n if (i === j) {\n // accumulate value\n sum = add(sum, values[k]);\n // exit loop\n break;\n }\n if (i > j) {\n // exit loop, no value on the diagonal for column j\n break;\n }\n }\n }\n }\n // return trace\n return sum;\n }\n throw new RangeError('Matrix must be square (size: ' + format(size) + ')');\n }\n});", "import { isBigNumber, isMatrix, isArray } from '../../../utils/is.js';\nimport { factory } from '../../../utils/factory.js';\nvar name = 'index';\nvar dependencies = ['typed', 'Index'];\nexport var createIndex = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Index\n } = _ref;\n /**\n * Create an index. An Index can store ranges having start, step, and end\n * for multiple dimensions.\n * Matrix.get, Matrix.set, and math.subset accept an Index as input.\n *\n * Syntax:\n *\n * math.index(range1, range2, ...)\n *\n * Where each range can be any of:\n *\n * - A number\n * - A string for getting/setting an object property\n * - An instance of `Range`\n * - A one-dimensional Array or a Matrix with numbers or booleans\n *\n * Indexes must be zero-based, integer numbers.\n *\n * Examples:\n *\n * const b = [1, 2, 3, 4, 5]\n * math.subset(b, math.index([1, 2, 3])) // returns [2, 3, 4]\n * math.subset(b, math.index([false, true, true, true, false])) // returns [2, 3, 4]\n *\n * const a = math.matrix([[1, 2], [3, 4]])\n * a.subset(math.index(0, 1)) // returns 2\n * a.subset(math.index(0, [false, true])) // returns 2\n *\n * See also:\n *\n * bignumber, boolean, complex, matrix, number, string, unit\n *\n * @param {...*} ranges Zero or more ranges or numbers.\n * @return {Index} Returns the created index\n */\n return typed(name, {\n '...number | string | BigNumber | Range | Array | Matrix': function number__string__BigNumber__Range__Array__Matrix(args) {\n var ranges = args.map(function (arg) {\n if (isBigNumber(arg)) {\n return arg.toNumber(); // convert BigNumber to Number\n } else if (isArray(arg) || isMatrix(arg)) {\n return arg.map(function (elem) {\n // convert BigNumber to Number\n return isBigNumber(elem) ? elem.toNumber() : elem;\n });\n } else {\n return arg;\n }\n });\n var res = new Index();\n Index.apply(res, ranges);\n return res;\n }\n });\n});", "// Reserved keywords not allowed to use in the parser\nexport var keywords = new Set(['end']);", "import { isNode } from '../../utils/is.js';\nimport { keywords } from '../keywords.js';\nimport { deepStrictEqual } from '../../utils/object.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMap } from '../../utils/map.js';\nvar name = 'Node';\nvar dependencies = ['mathWithTransform'];\nexport var createNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n mathWithTransform\n } = _ref;\n /**\n * Validate the symbol names of a scope.\n * Throws an error when the scope contains an illegal symbol.\n * @param {Object} scope\n */\n function _validateScope(scope) {\n for (var symbol of [...keywords]) {\n if (scope.has(symbol)) {\n throw new Error('Scope contains an illegal symbol, \"' + symbol + '\" is a reserved keyword');\n }\n }\n }\n class Node {\n get type() {\n return 'Node';\n }\n get isNode() {\n return true;\n }\n\n /**\n * Evaluate the node\n * @param {Object} [scope] Scope to read/write variables\n * @return {*} Returns the result\n */\n evaluate(scope) {\n return this.compile().evaluate(scope);\n }\n\n /**\n * Compile the node into an optimized, evauatable JavaScript function\n * @return {{evaluate: function([Object])}} object\n * Returns an object with a function 'evaluate',\n * which can be invoked as expr.evaluate([scope: Object]),\n * where scope is an optional object with\n * variables.\n */\n compile() {\n var expr = this._compile(mathWithTransform, {});\n var args = {};\n var context = null;\n function evaluate(scope) {\n var s = createMap(scope);\n _validateScope(s);\n return expr(s, args, context);\n }\n return {\n evaluate\n };\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n throw new Error('Method _compile must be implemented by type ' + this.type);\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n // must be implemented by each of the Node implementations\n throw new Error('Cannot run forEach on a Node interface');\n }\n\n /**\n * Create a new Node whose children are the results of calling the\n * provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {OperatorNode} Returns a transformed copy of the node\n */\n map(callback) {\n // must be implemented by each of the Node implementations\n throw new Error('Cannot run map on a Node interface');\n }\n\n /**\n * Validate whether an object is a Node, for use with map\n * @param {Node} node\n * @returns {Node} Returns the input if it's a node, else throws an Error\n * @protected\n */\n _ifNode(node) {\n if (!isNode(node)) {\n throw new TypeError('Callback function must return a Node');\n }\n return node;\n }\n\n /**\n * Recursively traverse all nodes in a node tree. Executes given callback for\n * this node and each of its child nodes.\n * @param {function(node: Node, path: string, parent: Node)} callback\n * A callback called for every node in the node tree.\n */\n traverse(callback) {\n // execute callback for itself\n // eslint-disable-next-line\n callback(this, null, null);\n\n // recursively traverse over all children of a node\n function _traverse(node, callback) {\n node.forEach(function (child, path, parent) {\n callback(child, path, parent);\n _traverse(child, callback);\n });\n }\n _traverse(this, callback);\n }\n\n /**\n * Recursively transform a node tree via a transform function.\n *\n * For example, to replace all nodes of type SymbolNode having name 'x' with\n * a ConstantNode with value 2:\n *\n * const res = Node.transform(function (node, path, parent) {\n * if (node && node.isSymbolNode) && (node.name === 'x')) {\n * return new ConstantNode(2)\n * }\n * else {\n * return node\n * }\n * })\n *\n * @param {function(node: Node, path: string, parent: Node) : Node} callback\n * A mapping function accepting a node, and returning\n * a replacement for the node or the original node. The \"signature\"\n * of the callback must be:\n * callback(node: Node, index: string, parent: Node) : Node\n * @return {Node} Returns the original node or its replacement\n */\n transform(callback) {\n function _transform(child, path, parent) {\n var replacement = callback(child, path, parent);\n if (replacement !== child) {\n // stop iterating when the node is replaced\n return replacement;\n }\n return child.map(_transform);\n }\n return _transform(this, null, null);\n }\n\n /**\n * Find any node in the node tree matching given filter function. For\n * example, to find all nodes of type SymbolNode having name 'x':\n *\n * const results = Node.filter(function (node) {\n * return (node && node.isSymbolNode) && (node.name === 'x')\n * })\n *\n * @param {function(node: Node, path: string, parent: Node) : Node} callback\n * A test function returning true when a node matches, and false\n * otherwise. Function signature:\n * callback(node: Node, index: string, parent: Node) : boolean\n * @return {Node[]} nodes\n * An array with nodes matching given filter criteria\n */\n filter(callback) {\n var nodes = [];\n this.traverse(function (node, path, parent) {\n if (callback(node, path, parent)) {\n nodes.push(node);\n }\n });\n return nodes;\n }\n\n /**\n * Create a shallow clone of this node\n * @return {Node}\n */\n clone() {\n // must be implemented by each of the Node implementations\n throw new Error('Cannot clone a Node interface');\n }\n\n /**\n * Create a deep clone of this node\n * @return {Node}\n */\n cloneDeep() {\n return this.map(function (node) {\n return node.cloneDeep();\n });\n }\n\n /**\n * Deep compare this node with another node.\n * @param {Node} other\n * @return {boolean} Returns true when both nodes are of the same type and\n * contain the same values (as do their childs)\n */\n equals(other) {\n return other ? this.type === other.type && deepStrictEqual(this, other) : false;\n }\n\n /**\n * Get string representation. (wrapper function)\n *\n * This function can get an object of the following form:\n * {\n * handler: //This can be a callback function of the form\n * // \"function callback(node, options)\"or\n * // a map that maps function names (used in FunctionNodes)\n * // to callbacks\n * parenthesis: \"keep\" //the parenthesis option (This is optional)\n * }\n *\n * @param {Object} [options]\n * @return {string}\n */\n toString(options) {\n var customString = this._getCustomString(options);\n if (typeof customString !== 'undefined') {\n return customString;\n }\n return this._toString(options);\n }\n\n /**\n * Internal function to generate the string output.\n * This has to be implemented by every Node\n *\n * @throws {Error}\n */\n _toString() {\n // must be implemented by each of the Node implementations\n throw new Error('_toString not implemented for ' + this.type);\n }\n\n /**\n * Get a JSON representation of the node\n * Both .toJSON() and the static .fromJSON(json) should be implemented by all\n * implementations of Node\n * @returns {Object}\n */\n toJSON() {\n throw new Error('Cannot serialize object: toJSON not implemented by ' + this.type);\n }\n\n /**\n * Get HTML representation. (wrapper function)\n *\n * This function can get an object of the following form:\n * {\n * handler: //This can be a callback function of the form\n * // \"function callback(node, options)\" or\n * // a map that maps function names (used in FunctionNodes)\n * // to callbacks\n * parenthesis: \"keep\" //the parenthesis option (This is optional)\n * }\n *\n * @param {Object} [options]\n * @return {string}\n */\n toHTML(options) {\n var customString = this._getCustomString(options);\n if (typeof customString !== 'undefined') {\n return customString;\n }\n return this._toHTML(options);\n }\n\n /**\n * Internal function to generate the HTML output.\n * This has to be implemented by every Node\n *\n * @throws {Error}\n */\n _toHTML() {\n // must be implemented by each of the Node implementations\n throw new Error('_toHTML not implemented for ' + this.type);\n }\n\n /**\n * Get LaTeX representation. (wrapper function)\n *\n * This function can get an object of the following form:\n * {\n * handler: //This can be a callback function of the form\n * // \"function callback(node, options)\"or\n * // a map that maps function names (used in FunctionNodes)\n * // to callbacks\n * parenthesis: \"keep\" //the parenthesis option (This is optional)\n * }\n *\n * @param {Object} [options]\n * @return {string}\n */\n toTex(options) {\n var customString = this._getCustomString(options);\n if (typeof customString !== 'undefined') {\n return customString;\n }\n return this._toTex(options);\n }\n\n /**\n * Internal function to generate the LaTeX output.\n * This has to be implemented by every Node\n *\n * @param {Object} [options]\n * @throws {Error}\n */\n _toTex(options) {\n // must be implemented by each of the Node implementations\n throw new Error('_toTex not implemented for ' + this.type);\n }\n\n /**\n * Helper used by `to...` functions.\n */\n _getCustomString(options) {\n if (options && typeof options === 'object') {\n switch (typeof options.handler) {\n case 'object':\n case 'undefined':\n return;\n case 'function':\n return options.handler(this, options);\n default:\n throw new TypeError('Object or function expected as callback');\n }\n }\n }\n\n /**\n * Get identifier.\n * @return {string}\n */\n getIdentifier() {\n return this.type;\n }\n\n /**\n * Get the content of the current Node.\n * @return {Node} node\n **/\n getContent() {\n return this;\n }\n }\n return Node;\n}, {\n isClass: true,\n isNode: true\n});", "import { IndexError } from '../../../error/IndexError.js';\n\n/**\n * Transform zero-based indices to one-based indices in errors\n * @param {Error} err\n * @returns {Error | IndexError} Returns the transformed error\n */\nexport function errorTransform(err) {\n if (err && err.isIndexError) {\n return new IndexError(err.index + 1, err.min + 1, err.max !== undefined ? err.max + 1 : undefined);\n }\n return err;\n}", "import { errorTransform } from '../../transform/utils/errorTransform.js';\nimport { getSafeProperty } from '../../../utils/customs.js';\nexport function accessFactory(_ref) {\n var {\n subset\n } = _ref;\n /**\n * Retrieve part of an object:\n *\n * - Retrieve a property from an object\n * - Retrieve a part of a string\n * - Retrieve a matrix subset\n *\n * @param {Object | Array | Matrix | string} object\n * @param {Index} index\n * @return {Object | Array | Matrix | string} Returns the subset\n */\n return function access(object, index) {\n try {\n if (Array.isArray(object)) {\n return subset(object, index);\n } else if (object && typeof object.subset === 'function') {\n // Matrix\n return object.subset(index);\n } else if (typeof object === 'string') {\n // TODO: move getStringSubset into a separate util file, use that\n return subset(object, index);\n } else if (typeof object === 'object') {\n if (!index.isObjectProperty()) {\n throw new TypeError('Cannot apply a numeric index as object property');\n }\n return getSafeProperty(object, index.getObjectProperty());\n } else {\n throw new TypeError('Cannot apply index: unsupported type of object');\n }\n } catch (err) {\n throw errorTransform(err);\n }\n };\n}", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isAccessorNode, isArrayNode, isConstantNode, isFunctionNode, isIndexNode, isNode, isObjectNode, isParenthesisNode, isSymbolNode } from '../../utils/is.js';\nimport { getSafeProperty } from '../../utils/customs.js';\nimport { factory } from '../../utils/factory.js';\nimport { accessFactory } from './utils/access.js';\nvar name = 'AccessorNode';\nvar dependencies = ['subset', 'Node'];\nexport var createAccessorNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n subset,\n Node\n } = _ref;\n var access = accessFactory({\n subset\n });\n\n /**\n * Are parenthesis needed?\n * @private\n */\n function needParenthesis(node) {\n // TODO: maybe make a method on the nodes which tells whether they need parenthesis?\n return !(isAccessorNode(node) || isArrayNode(node) || isConstantNode(node) || isFunctionNode(node) || isObjectNode(node) || isParenthesisNode(node) || isSymbolNode(node));\n }\n class AccessorNode extends Node {\n /**\n * @constructor AccessorNode\n * @extends {Node}\n * Access an object property or get a matrix subset\n *\n * @param {Node} object The object from which to retrieve\n * a property or subset.\n * @param {IndexNode} index IndexNode containing ranges\n */\n constructor(object, index) {\n super();\n if (!isNode(object)) {\n throw new TypeError('Node expected for parameter \"object\"');\n }\n if (!isIndexNode(index)) {\n throw new TypeError('IndexNode expected for parameter \"index\"');\n }\n this.object = object;\n this.index = index;\n }\n\n // readonly property name\n get name() {\n if (this.index) {\n return this.index.isObjectProperty() ? this.index.getObjectProperty() : '';\n } else {\n return this.object.name || '';\n }\n }\n get type() {\n return name;\n }\n get isAccessorNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var evalObject = this.object._compile(math, argNames);\n var evalIndex = this.index._compile(math, argNames);\n if (this.index.isObjectProperty()) {\n var prop = this.index.getObjectProperty();\n return function evalAccessorNode(scope, args, context) {\n // get a property from an object evaluated using the scope.\n return getSafeProperty(evalObject(scope, args, context), prop);\n };\n } else {\n return function evalAccessorNode(scope, args, context) {\n var object = evalObject(scope, args, context);\n // we pass just object here instead of context:\n var index = evalIndex(scope, args, object);\n return access(object, index);\n };\n }\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n callback(this.object, 'object', this);\n callback(this.index, 'index', this);\n }\n\n /**\n * Create a new AccessorNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {AccessorNode} Returns a transformed copy of the node\n */\n map(callback) {\n return new AccessorNode(this._ifNode(callback(this.object, 'object', this)), this._ifNode(callback(this.index, 'index', this)));\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {AccessorNode}\n */\n clone() {\n return new AccessorNode(this.object, this.index);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string}\n */\n _toString(options) {\n var object = this.object.toString(options);\n if (needParenthesis(this.object)) {\n object = '(' + object + ')';\n }\n return object + this.index.toString(options);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string}\n */\n _toHTML(options) {\n var object = this.object.toHTML(options);\n if (needParenthesis(this.object)) {\n object = '(' + object + ')';\n }\n return object + this.index.toHTML(options);\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string}\n */\n _toTex(options) {\n var object = this.object.toTex(options);\n if (needParenthesis(this.object)) {\n object = '\\\\left(\\' + object + \\'\\\\right)';\n }\n return object + this.index.toTex(options);\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n object: this.object,\n index: this.index\n };\n }\n\n /**\n * Instantiate an AccessorNode from its JSON representation\n * @param {Object} json\n * An object structured like\n * `{\"mathjs\": \"AccessorNode\", object: ..., index: ...}`,\n * where mathjs is optional\n * @returns {AccessorNode}\n */\n static fromJSON(json) {\n return new AccessorNode(json.object, json.index);\n }\n }\n _defineProperty(AccessorNode, \"name\", name);\n return AccessorNode;\n}, {\n isClass: true,\n isNode: true\n});", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isArrayNode, isNode } from '../../utils/is.js';\nimport { map } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'ArrayNode';\nvar dependencies = ['Node'];\nexport var createArrayNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n class ArrayNode extends Node {\n /**\n * @constructor ArrayNode\n * @extends {Node}\n * Holds an 1-dimensional array with items\n * @param {Node[]} [items] 1 dimensional array with items\n */\n constructor(items) {\n super();\n this.items = items || [];\n\n // validate input\n if (!Array.isArray(this.items) || !this.items.every(isNode)) {\n throw new TypeError('Array containing Nodes expected');\n }\n }\n get type() {\n return name;\n }\n get isArrayNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var evalItems = map(this.items, function (item) {\n return item._compile(math, argNames);\n });\n var asMatrix = math.config.matrix !== 'Array';\n if (asMatrix) {\n var matrix = math.matrix;\n return function evalArrayNode(scope, args, context) {\n return matrix(map(evalItems, function (evalItem) {\n return evalItem(scope, args, context);\n }));\n };\n } else {\n return function evalArrayNode(scope, args, context) {\n return map(evalItems, function (evalItem) {\n return evalItem(scope, args, context);\n });\n };\n }\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n for (var i = 0; i < this.items.length; i++) {\n var node = this.items[i];\n callback(node, 'items[' + i + ']', this);\n }\n }\n\n /**\n * Create a new ArrayNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {ArrayNode} Returns a transformed copy of the node\n */\n map(callback) {\n var items = [];\n for (var i = 0; i < this.items.length; i++) {\n items[i] = this._ifNode(callback(this.items[i], 'items[' + i + ']', this));\n }\n return new ArrayNode(items);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {ArrayNode}\n */\n clone() {\n return new ArrayNode(this.items.slice(0));\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toString(options) {\n var items = this.items.map(function (node) {\n return node.toString(options);\n });\n return '[' + items.join(', ') + ']';\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n items: this.items\n };\n }\n\n /**\n * Instantiate an ArrayNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"ArrayNode\", items: [...]}`,\n * where mathjs is optional\n * @returns {ArrayNode}\n */\n static fromJSON(json) {\n return new ArrayNode(json.items);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toHTML(options) {\n var items = this.items.map(function (node) {\n return node.toHTML(options);\n });\n return '[' + items.join(',') + ']';\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n function itemsToTex(items, nested) {\n var mixedItems = items.some(isArrayNode) && !items.every(isArrayNode);\n var itemsFormRow = nested || mixedItems;\n var itemSep = itemsFormRow ? '&' : '\\\\\\\\';\n var itemsTex = items.map(function (node) {\n if (node.items) {\n return itemsToTex(node.items, !nested);\n } else {\n return node.toTex(options);\n }\n }).join(itemSep);\n return mixedItems || !itemsFormRow || itemsFormRow && !nested ? '\\\\begin{bmatrix}' + itemsTex + '\\\\end{bmatrix}' : itemsTex;\n }\n return itemsToTex(this.items, false);\n }\n }\n _defineProperty(ArrayNode, \"name\", name);\n return ArrayNode;\n}, {\n isClass: true,\n isNode: true\n});", "import { errorTransform } from '../../transform/utils/errorTransform.js';\nimport { setSafeProperty } from '../../../utils/customs.js';\nexport function assignFactory(_ref) {\n var {\n subset,\n matrix\n } = _ref;\n /**\n * Replace part of an object:\n *\n * - Assign a property to an object\n * - Replace a part of a string\n * - Replace a matrix subset\n *\n * @param {Object | Array | Matrix | string} object\n * @param {Index} index\n * @param {*} value\n * @return {Object | Array | Matrix | string} Returns the original object\n * except in case of a string\n */\n // TODO: change assign to return the value instead of the object\n return function assign(object, index, value) {\n try {\n if (Array.isArray(object)) {\n var result = matrix(object).subset(index, value).valueOf();\n\n // shallow copy all (updated) items into the original array\n result.forEach((item, index) => {\n object[index] = item;\n });\n return object;\n } else if (object && typeof object.subset === 'function') {\n // Matrix\n return object.subset(index, value);\n } else if (typeof object === 'string') {\n // TODO: move setStringSubset into a separate util file, use that\n return subset(object, index, value);\n } else if (typeof object === 'object') {\n if (!index.isObjectProperty()) {\n throw TypeError('Cannot apply a numeric index as object property');\n }\n setSafeProperty(object, index.getObjectProperty(), value);\n return object;\n } else {\n throw new TypeError('Cannot apply index: unsupported type of object');\n }\n } catch (err) {\n throw errorTransform(err);\n }\n };\n}", "// list of identifiers of nodes in order of their precedence\n// also contains information about left/right associativity\n// and which other operator the operator is associative with\n// Example:\n// addition is associative with addition and subtraction, because:\n// (a+b)+c=a+(b+c)\n// (a+b)-c=a+(b-c)\n//\n// postfix operators are left associative, prefix operators\n// are right associative\n//\n// It's also possible to set the following properties:\n// latexParens: if set to false, this node doesn't need to be enclosed\n// in parentheses when using LaTeX\n// latexLeftParens: if set to false, this !OperatorNode's!\n// left argument doesn't need to be enclosed\n// in parentheses\n// latexRightParens: the same for the right argument\nimport { hasOwnProperty } from '../utils/object.js';\nimport { isConstantNode, isParenthesisNode, rule2Node } from '../utils/is.js';\nexport var properties = [{\n // assignment\n AssignmentNode: {},\n FunctionAssignmentNode: {}\n}, {\n // conditional expression\n ConditionalNode: {\n latexLeftParens: false,\n latexRightParens: false,\n latexParens: false\n // conditionals don't need parentheses in LaTeX because\n // they are 2 dimensional\n }\n}, {\n // logical or\n 'OperatorNode:or': {\n op: 'or',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // logical xor\n 'OperatorNode:xor': {\n op: 'xor',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // logical and\n 'OperatorNode:and': {\n op: 'and',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // bitwise or\n 'OperatorNode:bitOr': {\n op: '|',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // bitwise xor\n 'OperatorNode:bitXor': {\n op: '^|',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // bitwise and\n 'OperatorNode:bitAnd': {\n op: '&',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // relational operators\n 'OperatorNode:equal': {\n op: '==',\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:unequal': {\n op: '!=',\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:smaller': {\n op: '<',\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:larger': {\n op: '>',\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:smallerEq': {\n op: '<=',\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:largerEq': {\n op: '>=',\n associativity: 'left',\n associativeWith: []\n },\n RelationalNode: {\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // bitshift operators\n 'OperatorNode:leftShift': {\n op: '<<',\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:rightArithShift': {\n op: '>>',\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:rightLogShift': {\n op: '>>>',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // unit conversion\n 'OperatorNode:to': {\n op: 'to',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // range\n RangeNode: {}\n}, {\n // addition, subtraction\n 'OperatorNode:add': {\n op: '+',\n associativity: 'left',\n associativeWith: ['OperatorNode:add', 'OperatorNode:subtract']\n },\n 'OperatorNode:subtract': {\n op: '-',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // multiply, divide, modulus\n 'OperatorNode:multiply': {\n op: '*',\n associativity: 'left',\n associativeWith: ['OperatorNode:multiply', 'OperatorNode:divide', 'Operator:dotMultiply', 'Operator:dotDivide']\n },\n 'OperatorNode:divide': {\n op: '/',\n associativity: 'left',\n associativeWith: [],\n latexLeftParens: false,\n latexRightParens: false,\n latexParens: false\n // fractions don't require parentheses because\n // they're 2 dimensional, so parens aren't needed\n // in LaTeX\n },\n 'OperatorNode:dotMultiply': {\n op: '.*',\n associativity: 'left',\n associativeWith: ['OperatorNode:multiply', 'OperatorNode:divide', 'OperatorNode:dotMultiply', 'OperatorNode:doDivide']\n },\n 'OperatorNode:dotDivide': {\n op: './',\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:mod': {\n op: 'mod',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // Repeat multiplication for implicit multiplication\n 'OperatorNode:multiply': {\n associativity: 'left',\n associativeWith: ['OperatorNode:multiply', 'OperatorNode:divide', 'Operator:dotMultiply', 'Operator:dotDivide']\n }\n}, {\n // unary prefix operators\n 'OperatorNode:unaryPlus': {\n op: '+',\n associativity: 'right'\n },\n 'OperatorNode:unaryMinus': {\n op: '-',\n associativity: 'right'\n },\n 'OperatorNode:bitNot': {\n op: '~',\n associativity: 'right'\n },\n 'OperatorNode:not': {\n op: 'not',\n associativity: 'right'\n }\n}, {\n // exponentiation\n 'OperatorNode:pow': {\n op: '^',\n associativity: 'right',\n associativeWith: [],\n latexRightParens: false\n // the exponent doesn't need parentheses in\n // LaTeX because it's 2 dimensional\n // (it's on top)\n },\n 'OperatorNode:dotPow': {\n op: '.^',\n associativity: 'right',\n associativeWith: []\n }\n}, {\n // factorial\n 'OperatorNode:factorial': {\n op: '!',\n associativity: 'left'\n }\n}, {\n // matrix transpose\n 'OperatorNode:ctranspose': {\n op: \"'\",\n associativity: 'left'\n }\n}];\n\n/**\n * Returns the first non-parenthesis internal node, but only\n * when the 'parenthesis' option is unset or auto.\n * @param {Node} _node\n * @param {string} parenthesis\n * @return {Node}\n */\nfunction unwrapParen(_node, parenthesis) {\n if (!parenthesis || parenthesis !== 'auto') return _node;\n var node = _node;\n while (isParenthesisNode(node)) node = node.content;\n return node;\n}\n\n/**\n * Get the precedence of a Node.\n * Higher number for higher precedence, starting with 0.\n * Returns null if the precedence is undefined.\n *\n * @param {Node} _node\n * @param {string} parenthesis\n * @param {string} implicit\n * @param {Node} parent (for determining context for implicit multiplication)\n * @return {number | null}\n */\nexport function getPrecedence(_node, parenthesis, implicit, parent) {\n var node = _node;\n if (parenthesis !== 'keep') {\n // ParenthesisNodes are only ignored when not in 'keep' mode\n node = _node.getContent();\n }\n var identifier = node.getIdentifier();\n var precedence = null;\n for (var i = 0; i < properties.length; i++) {\n if (identifier in properties[i]) {\n precedence = i;\n break;\n }\n }\n // Bump up precedence of implicit multiplication, except when preceded\n // by a \"Rule 2\" fraction ( [unaryOp]constant / constant )\n if (identifier === 'OperatorNode:multiply' && node.implicit && implicit !== 'show') {\n var leftArg = unwrapParen(node.args[0], parenthesis);\n if (!(isConstantNode(leftArg) && parent && parent.getIdentifier() === 'OperatorNode:divide' && rule2Node(unwrapParen(parent.args[0], parenthesis))) && !(leftArg.getIdentifier() === 'OperatorNode:divide' && rule2Node(unwrapParen(leftArg.args[0], parenthesis)) && isConstantNode(unwrapParen(leftArg.args[1])))) {\n precedence += 1;\n }\n }\n return precedence;\n}\n\n/**\n * Get the associativity of an operator (left or right).\n * Returns a string containing 'left' or 'right' or null if\n * the associativity is not defined.\n *\n * @param {Node} _node\n * @param {string} parenthesis\n * @return {string|null}\n * @throws {Error}\n */\nexport function getAssociativity(_node, parenthesis) {\n var node = _node;\n if (parenthesis !== 'keep') {\n // ParenthesisNodes are only ignored when not in 'keep' mode\n node = _node.getContent();\n }\n var identifier = node.getIdentifier();\n var index = getPrecedence(node, parenthesis);\n if (index === null) {\n // node isn't in the list\n return null;\n }\n var property = properties[index][identifier];\n if (hasOwnProperty(property, 'associativity')) {\n if (property.associativity === 'left') {\n return 'left';\n }\n if (property.associativity === 'right') {\n return 'right';\n }\n // associativity is invalid\n throw Error('\\'' + identifier + '\\' has the invalid associativity \\'' + property.associativity + '\\'.');\n }\n\n // associativity is undefined\n return null;\n}\n\n/**\n * Check if an operator is associative with another operator.\n * Returns either true or false or null if not defined.\n *\n * @param {Node} nodeA\n * @param {Node} nodeB\n * @param {string} parenthesis\n * @return {boolean | null}\n */\nexport function isAssociativeWith(nodeA, nodeB, parenthesis) {\n // ParenthesisNodes are only ignored when not in 'keep' mode\n var a = parenthesis !== 'keep' ? nodeA.getContent() : nodeA;\n var b = parenthesis !== 'keep' ? nodeA.getContent() : nodeB;\n var identifierA = a.getIdentifier();\n var identifierB = b.getIdentifier();\n var index = getPrecedence(a, parenthesis);\n if (index === null) {\n // node isn't in the list\n return null;\n }\n var property = properties[index][identifierA];\n if (hasOwnProperty(property, 'associativeWith') && property.associativeWith instanceof Array) {\n for (var i = 0; i < property.associativeWith.length; i++) {\n if (property.associativeWith[i] === identifierB) {\n return true;\n }\n }\n return false;\n }\n\n // associativeWith is not defined\n return null;\n}\n\n/**\n * Get the operator associated with a function name.\n * Returns a string with the operator symbol, or null if the\n * input is not the name of a function associated with an\n * operator.\n *\n * @param {string} Function name\n * @return {string | null} Associated operator symbol, if any\n */\nexport function getOperator(fn) {\n var identifier = 'OperatorNode:' + fn;\n for (var group of properties) {\n if (identifier in group) {\n return group[identifier].op;\n }\n }\n return null;\n}", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isAccessorNode, isIndexNode, isNode, isSymbolNode } from '../../utils/is.js';\nimport { getSafeProperty, setSafeProperty } from '../../utils/customs.js';\nimport { factory } from '../../utils/factory.js';\nimport { accessFactory } from './utils/access.js';\nimport { assignFactory } from './utils/assign.js';\nimport { getPrecedence } from '../operators.js';\nvar name = 'AssignmentNode';\nvar dependencies = ['subset', '?matrix',\n// FIXME: should not be needed at all, should be handled by subset\n'Node'];\nexport var createAssignmentNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n subset,\n matrix,\n Node\n } = _ref;\n var access = accessFactory({\n subset\n });\n var assign = assignFactory({\n subset,\n matrix\n });\n\n /*\n * Is parenthesis needed?\n * @param {node} node\n * @param {string} [parenthesis='keep']\n * @param {string} implicit\n * @private\n */\n function needParenthesis(node, parenthesis, implicit) {\n if (!parenthesis) {\n parenthesis = 'keep';\n }\n var precedence = getPrecedence(node, parenthesis, implicit);\n var exprPrecedence = getPrecedence(node.value, parenthesis, implicit);\n return parenthesis === 'all' || exprPrecedence !== null && exprPrecedence <= precedence;\n }\n class AssignmentNode extends Node {\n /**\n * @constructor AssignmentNode\n * @extends {Node}\n *\n * Define a symbol, like `a=3.2`, update a property like `a.b=3.2`, or\n * replace a subset of a matrix like `A[2,2]=42`.\n *\n * Syntax:\n *\n * new AssignmentNode(symbol, value)\n * new AssignmentNode(object, index, value)\n *\n * Usage:\n *\n * new AssignmentNode(new SymbolNode('a'), new ConstantNode(2)) // a=2\n * new AssignmentNode(new SymbolNode('a'),\n * new IndexNode('b'),\n * new ConstantNode(2)) // a.b=2\n * new AssignmentNode(new SymbolNode('a'),\n * new IndexNode(1, 2),\n * new ConstantNode(3)) // a[1,2]=3\n *\n * @param {SymbolNode | AccessorNode} object\n * Object on which to assign a value\n * @param {IndexNode} [index=null]\n * Index, property name or matrix index. Optional. If not provided\n * and `object` is a SymbolNode, the property is assigned to the\n * global scope.\n * @param {Node} value\n * The value to be assigned\n */\n constructor(object, index, value) {\n super();\n this.object = object;\n this.index = value ? index : null;\n this.value = value || index;\n\n // validate input\n if (!isSymbolNode(object) && !isAccessorNode(object)) {\n throw new TypeError('SymbolNode or AccessorNode expected as \"object\"');\n }\n if (isSymbolNode(object) && object.name === 'end') {\n throw new Error('Cannot assign to symbol \"end\"');\n }\n if (this.index && !isIndexNode(this.index)) {\n // index is optional\n throw new TypeError('IndexNode expected as \"index\"');\n }\n if (!isNode(this.value)) {\n throw new TypeError('Node expected as \"value\"');\n }\n }\n\n // class name for typing purposes:\n\n // readonly property name\n get name() {\n if (this.index) {\n return this.index.isObjectProperty() ? this.index.getObjectProperty() : '';\n } else {\n return this.object.name || '';\n }\n }\n get type() {\n return name;\n }\n get isAssignmentNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var evalObject = this.object._compile(math, argNames);\n var evalIndex = this.index ? this.index._compile(math, argNames) : null;\n var evalValue = this.value._compile(math, argNames);\n var name = this.object.name;\n if (!this.index) {\n // apply a variable to the scope, for example `a=2`\n if (!isSymbolNode(this.object)) {\n throw new TypeError('SymbolNode expected as object');\n }\n return function evalAssignmentNode(scope, args, context) {\n var value = evalValue(scope, args, context);\n scope.set(name, value);\n return value;\n };\n } else if (this.index.isObjectProperty()) {\n // apply an object property for example `a.b=2`\n var prop = this.index.getObjectProperty();\n return function evalAssignmentNode(scope, args, context) {\n var object = evalObject(scope, args, context);\n var value = evalValue(scope, args, context);\n setSafeProperty(object, prop, value);\n return value;\n };\n } else if (isSymbolNode(this.object)) {\n // update a matrix subset, for example `a[2]=3`\n return function evalAssignmentNode(scope, args, context) {\n var childObject = evalObject(scope, args, context);\n var value = evalValue(scope, args, context);\n // Important: we pass childObject instead of context:\n var index = evalIndex(scope, args, childObject);\n scope.set(name, assign(childObject, index, value));\n return value;\n };\n } else {\n // isAccessorNode(node.object) === true\n // update a matrix subset, for example `a.b[2]=3`\n\n // we will not use the compile function of the AccessorNode, but\n // compile it ourselves here as we need the parent object of the\n // AccessorNode:\n // wee need to apply the updated object to parent object\n var evalParentObject = this.object.object._compile(math, argNames);\n if (this.object.index.isObjectProperty()) {\n var parentProp = this.object.index.getObjectProperty();\n return function evalAssignmentNode(scope, args, context) {\n var parent = evalParentObject(scope, args, context);\n var childObject = getSafeProperty(parent, parentProp);\n // Important: we pass childObject instead of context:\n var index = evalIndex(scope, args, childObject);\n var value = evalValue(scope, args, context);\n setSafeProperty(parent, parentProp, assign(childObject, index, value));\n return value;\n };\n } else {\n // if some parameters use the 'end' parameter, we need to calculate\n // the size\n var evalParentIndex = this.object.index._compile(math, argNames);\n return function evalAssignmentNode(scope, args, context) {\n var parent = evalParentObject(scope, args, context);\n // Important: we pass parent instead of context:\n var parentIndex = evalParentIndex(scope, args, parent);\n var childObject = access(parent, parentIndex);\n // Important: we pass childObject instead of context\n var index = evalIndex(scope, args, childObject);\n var value = evalValue(scope, args, context);\n assign(parent, parentIndex, assign(childObject, index, value));\n return value;\n };\n }\n }\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n callback(this.object, 'object', this);\n if (this.index) {\n callback(this.index, 'index', this);\n }\n callback(this.value, 'value', this);\n }\n\n /**\n * Create a new AssignmentNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {AssignmentNode} Returns a transformed copy of the node\n */\n map(callback) {\n var object = this._ifNode(callback(this.object, 'object', this));\n var index = this.index ? this._ifNode(callback(this.index, 'index', this)) : null;\n var value = this._ifNode(callback(this.value, 'value', this));\n return new AssignmentNode(object, index, value);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {AssignmentNode}\n */\n clone() {\n return new AssignmentNode(this.object, this.index, this.value);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string}\n */\n _toString(options) {\n var object = this.object.toString(options);\n var index = this.index ? this.index.toString(options) : '';\n var value = this.value.toString(options);\n if (needParenthesis(this, options && options.parenthesis, options && options.implicit)) {\n value = '(' + value + ')';\n }\n return object + index + ' = ' + value;\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n object: this.object,\n index: this.index,\n value: this.value\n };\n }\n\n /**\n * Instantiate an AssignmentNode from its JSON representation\n * @param {Object} json\n * An object structured like\n * `{\"mathjs\": \"AssignmentNode\", object: ..., index: ..., value: ...}`,\n * where mathjs is optional\n * @returns {AssignmentNode}\n */\n static fromJSON(json) {\n return new AssignmentNode(json.object, json.index, json.value);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string}\n */\n _toHTML(options) {\n var object = this.object.toHTML(options);\n var index = this.index ? this.index.toHTML(options) : '';\n var value = this.value.toHTML(options);\n if (needParenthesis(this, options && options.parenthesis, options && options.implicit)) {\n value = '(' + value + ')';\n }\n return object + index + '=' + value;\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string}\n */\n _toTex(options) {\n var object = this.object.toTex(options);\n var index = this.index ? this.index.toTex(options) : '';\n var value = this.value.toTex(options);\n if (needParenthesis(this, options && options.parenthesis, options && options.implicit)) {\n value = \"\\\\left(\".concat(value, \"\\\\right)\");\n }\n return object + index + '=' + value;\n }\n }\n _defineProperty(AssignmentNode, \"name\", name);\n return AssignmentNode;\n}, {\n isClass: true,\n isNode: true\n});", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isNode } from '../../utils/is.js';\nimport { forEach, map } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'BlockNode';\nvar dependencies = ['ResultSet', 'Node'];\nexport var createBlockNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n ResultSet,\n Node\n } = _ref;\n class BlockNode extends Node {\n /**\n * @constructor BlockNode\n * @extends {Node}\n * Holds a set with blocks\n * @param {Array.<{node: Node} | {node: Node, visible: boolean}>} blocks\n * An array with blocks, where a block is constructed as an\n * Object with properties block, which is a Node, and visible,\n * which is a boolean. The property visible is optional and\n * is true by default\n */\n constructor(blocks) {\n super();\n // validate input, copy blocks\n if (!Array.isArray(blocks)) throw new Error('Array expected');\n this.blocks = blocks.map(function (block) {\n var node = block && block.node;\n var visible = block && block.visible !== undefined ? block.visible : true;\n if (!isNode(node)) throw new TypeError('Property \"node\" must be a Node');\n if (typeof visible !== 'boolean') {\n throw new TypeError('Property \"visible\" must be a boolean');\n }\n return {\n node,\n visible\n };\n });\n }\n get type() {\n return name;\n }\n get isBlockNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var evalBlocks = map(this.blocks, function (block) {\n return {\n evaluate: block.node._compile(math, argNames),\n visible: block.visible\n };\n });\n return function evalBlockNodes(scope, args, context) {\n var results = [];\n forEach(evalBlocks, function evalBlockNode(block) {\n var result = block.evaluate(scope, args, context);\n if (block.visible) {\n results.push(result);\n }\n });\n return new ResultSet(results);\n };\n }\n\n /**\n * Execute a callback for each of the child blocks of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n for (var i = 0; i < this.blocks.length; i++) {\n callback(this.blocks[i].node, 'blocks[' + i + '].node', this);\n }\n }\n\n /**\n * Create a new BlockNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {BlockNode} Returns a transformed copy of the node\n */\n map(callback) {\n var blocks = [];\n for (var i = 0; i < this.blocks.length; i++) {\n var block = this.blocks[i];\n var node = this._ifNode(callback(block.node, 'blocks[' + i + '].node', this));\n blocks[i] = {\n node,\n visible: block.visible\n };\n }\n return new BlockNode(blocks);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {BlockNode}\n */\n clone() {\n var blocks = this.blocks.map(function (block) {\n return {\n node: block.node,\n visible: block.visible\n };\n });\n return new BlockNode(blocks);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toString(options) {\n return this.blocks.map(function (param) {\n return param.node.toString(options) + (param.visible ? '' : ';');\n }).join('\\n');\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n blocks: this.blocks\n };\n }\n\n /**\n * Instantiate an BlockNode from its JSON representation\n * @param {Object} json\n * An object structured like\n * `{\"mathjs\": \"BlockNode\", blocks: [{node: ..., visible: false}, ...]}`,\n * where mathjs is optional\n * @returns {BlockNode}\n */\n static fromJSON(json) {\n return new BlockNode(json.blocks);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toHTML(options) {\n return this.blocks.map(function (param) {\n return param.node.toHTML(options) + (param.visible ? '' : ';');\n }).join('
    ');\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n return this.blocks.map(function (param) {\n return param.node.toTex(options) + (param.visible ? '' : ';');\n }).join('\\\\;\\\\;\\n');\n }\n }\n _defineProperty(BlockNode, \"name\", name);\n return BlockNode;\n}, {\n isClass: true,\n isNode: true\n});", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isBigNumber, isComplex, isNode, isUnit, typeOf } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nimport { getPrecedence } from '../operators.js';\nvar name = 'ConditionalNode';\nvar dependencies = ['Node'];\nexport var createConditionalNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n /**\n * Test whether a condition is met\n * @param {*} condition\n * @returns {boolean} true if condition is true or non-zero, else false\n */\n function testCondition(condition) {\n if (typeof condition === 'number' || typeof condition === 'boolean' || typeof condition === 'string') {\n return !!condition;\n }\n if (condition) {\n if (isBigNumber(condition)) {\n return !condition.isZero();\n }\n if (isComplex(condition)) {\n return !!(condition.re || condition.im);\n }\n if (isUnit(condition)) {\n return !!condition.value;\n }\n }\n if (condition === null || condition === undefined) {\n return false;\n }\n throw new TypeError('Unsupported type of condition \"' + typeOf(condition) + '\"');\n }\n class ConditionalNode extends Node {\n /**\n * A lazy evaluating conditional operator: 'condition ? trueExpr : falseExpr'\n *\n * @param {Node} condition Condition, must result in a boolean\n * @param {Node} trueExpr Expression evaluated when condition is true\n * @param {Node} falseExpr Expression evaluated when condition is true\n *\n * @constructor ConditionalNode\n * @extends {Node}\n */\n constructor(condition, trueExpr, falseExpr) {\n super();\n if (!isNode(condition)) {\n throw new TypeError('Parameter condition must be a Node');\n }\n if (!isNode(trueExpr)) {\n throw new TypeError('Parameter trueExpr must be a Node');\n }\n if (!isNode(falseExpr)) {\n throw new TypeError('Parameter falseExpr must be a Node');\n }\n this.condition = condition;\n this.trueExpr = trueExpr;\n this.falseExpr = falseExpr;\n }\n get type() {\n return name;\n }\n get isConditionalNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var evalCondition = this.condition._compile(math, argNames);\n var evalTrueExpr = this.trueExpr._compile(math, argNames);\n var evalFalseExpr = this.falseExpr._compile(math, argNames);\n return function evalConditionalNode(scope, args, context) {\n return testCondition(evalCondition(scope, args, context)) ? evalTrueExpr(scope, args, context) : evalFalseExpr(scope, args, context);\n };\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n callback(this.condition, 'condition', this);\n callback(this.trueExpr, 'trueExpr', this);\n callback(this.falseExpr, 'falseExpr', this);\n }\n\n /**\n * Create a new ConditionalNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {ConditionalNode} Returns a transformed copy of the node\n */\n map(callback) {\n return new ConditionalNode(this._ifNode(callback(this.condition, 'condition', this)), this._ifNode(callback(this.trueExpr, 'trueExpr', this)), this._ifNode(callback(this.falseExpr, 'falseExpr', this)));\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {ConditionalNode}\n */\n clone() {\n return new ConditionalNode(this.condition, this.trueExpr, this.falseExpr);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n */\n _toString(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var precedence = getPrecedence(this, parenthesis, options && options.implicit);\n\n // Enclose Arguments in parentheses if they are an OperatorNode\n // or have lower or equal precedence\n // NOTE: enclosing all OperatorNodes in parentheses is a decision\n // purely based on aesthetics and readability\n var condition = this.condition.toString(options);\n var conditionPrecedence = getPrecedence(this.condition, parenthesis, options && options.implicit);\n if (parenthesis === 'all' || this.condition.type === 'OperatorNode' || conditionPrecedence !== null && conditionPrecedence <= precedence) {\n condition = '(' + condition + ')';\n }\n var trueExpr = this.trueExpr.toString(options);\n var truePrecedence = getPrecedence(this.trueExpr, parenthesis, options && options.implicit);\n if (parenthesis === 'all' || this.trueExpr.type === 'OperatorNode' || truePrecedence !== null && truePrecedence <= precedence) {\n trueExpr = '(' + trueExpr + ')';\n }\n var falseExpr = this.falseExpr.toString(options);\n var falsePrecedence = getPrecedence(this.falseExpr, parenthesis, options && options.implicit);\n if (parenthesis === 'all' || this.falseExpr.type === 'OperatorNode' || falsePrecedence !== null && falsePrecedence <= precedence) {\n falseExpr = '(' + falseExpr + ')';\n }\n return condition + ' ? ' + trueExpr + ' : ' + falseExpr;\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n condition: this.condition,\n trueExpr: this.trueExpr,\n falseExpr: this.falseExpr\n };\n }\n\n /**\n * Instantiate an ConditionalNode from its JSON representation\n * @param {Object} json\n * An object structured like\n * ```\n * {\"mathjs\": \"ConditionalNode\",\n * \"condition\": ...,\n * \"trueExpr\": ...,\n * \"falseExpr\": ...}\n * ```\n * where mathjs is optional\n * @returns {ConditionalNode}\n */\n static fromJSON(json) {\n return new ConditionalNode(json.condition, json.trueExpr, json.falseExpr);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n _toHTML(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var precedence = getPrecedence(this, parenthesis, options && options.implicit);\n\n // Enclose Arguments in parentheses if they are an OperatorNode\n // or have lower or equal precedence\n // NOTE: enclosing all OperatorNodes in parentheses is a decision\n // purely based on aesthetics and readability\n var condition = this.condition.toHTML(options);\n var conditionPrecedence = getPrecedence(this.condition, parenthesis, options && options.implicit);\n if (parenthesis === 'all' || this.condition.type === 'OperatorNode' || conditionPrecedence !== null && conditionPrecedence <= precedence) {\n condition = '(' + condition + ')';\n }\n var trueExpr = this.trueExpr.toHTML(options);\n var truePrecedence = getPrecedence(this.trueExpr, parenthesis, options && options.implicit);\n if (parenthesis === 'all' || this.trueExpr.type === 'OperatorNode' || truePrecedence !== null && truePrecedence <= precedence) {\n trueExpr = '(' + trueExpr + ')';\n }\n var falseExpr = this.falseExpr.toHTML(options);\n var falsePrecedence = getPrecedence(this.falseExpr, parenthesis, options && options.implicit);\n if (parenthesis === 'all' || this.falseExpr.type === 'OperatorNode' || falsePrecedence !== null && falsePrecedence <= precedence) {\n falseExpr = '(' + falseExpr + ')';\n }\n return condition + '?' + trueExpr + ':' + falseExpr;\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n return '\\\\begin{cases} {' + this.trueExpr.toTex(options) + '}, &\\\\quad{\\\\text{if }\\\\;' + this.condition.toTex(options) + '}\\\\\\\\{' + this.falseExpr.toTex(options) + '}, &\\\\quad{\\\\text{otherwise}}\\\\end{cases}';\n }\n }\n _defineProperty(ConditionalNode, \"name\", name);\n return ConditionalNode;\n}, {\n isClass: true,\n isNode: true\n});", "/* eslint no-template-curly-in-string: \"off\" */\n\nimport escapeLatexLib from 'escape-latex';\nimport { hasOwnProperty } from './object.js';\nexport var latexSymbols = {\n // GREEK LETTERS\n Alpha: 'A',\n alpha: '\\\\alpha',\n Beta: 'B',\n beta: '\\\\beta',\n Gamma: '\\\\Gamma',\n gamma: '\\\\gamma',\n Delta: '\\\\Delta',\n delta: '\\\\delta',\n Epsilon: 'E',\n epsilon: '\\\\epsilon',\n varepsilon: '\\\\varepsilon',\n Zeta: 'Z',\n zeta: '\\\\zeta',\n Eta: 'H',\n eta: '\\\\eta',\n Theta: '\\\\Theta',\n theta: '\\\\theta',\n vartheta: '\\\\vartheta',\n Iota: 'I',\n iota: '\\\\iota',\n Kappa: 'K',\n kappa: '\\\\kappa',\n varkappa: '\\\\varkappa',\n Lambda: '\\\\Lambda',\n lambda: '\\\\lambda',\n Mu: 'M',\n mu: '\\\\mu',\n Nu: 'N',\n nu: '\\\\nu',\n Xi: '\\\\Xi',\n xi: '\\\\xi',\n Omicron: 'O',\n omicron: 'o',\n Pi: '\\\\Pi',\n pi: '\\\\pi',\n varpi: '\\\\varpi',\n Rho: 'P',\n rho: '\\\\rho',\n varrho: '\\\\varrho',\n Sigma: '\\\\Sigma',\n sigma: '\\\\sigma',\n varsigma: '\\\\varsigma',\n Tau: 'T',\n tau: '\\\\tau',\n Upsilon: '\\\\Upsilon',\n upsilon: '\\\\upsilon',\n Phi: '\\\\Phi',\n phi: '\\\\phi',\n varphi: '\\\\varphi',\n Chi: 'X',\n chi: '\\\\chi',\n Psi: '\\\\Psi',\n psi: '\\\\psi',\n Omega: '\\\\Omega',\n omega: '\\\\omega',\n // logic\n true: '\\\\mathrm{True}',\n false: '\\\\mathrm{False}',\n // other\n i: 'i',\n // TODO use \\i ??\n inf: '\\\\infty',\n Inf: '\\\\infty',\n infinity: '\\\\infty',\n Infinity: '\\\\infty',\n oo: '\\\\infty',\n lim: '\\\\lim',\n undefined: '\\\\mathbf{?}'\n};\nexport var latexOperators = {\n transpose: '^\\\\top',\n ctranspose: '^H',\n factorial: '!',\n pow: '^',\n dotPow: '.^\\\\wedge',\n // TODO find ideal solution\n unaryPlus: '+',\n unaryMinus: '-',\n bitNot: '\\\\~',\n // TODO find ideal solution\n not: '\\\\neg',\n multiply: '\\\\cdot',\n divide: '\\\\frac',\n // TODO how to handle that properly?\n dotMultiply: '.\\\\cdot',\n // TODO find ideal solution\n dotDivide: '.:',\n // TODO find ideal solution\n mod: '\\\\mod',\n add: '+',\n subtract: '-',\n to: '\\\\rightarrow',\n leftShift: '<<',\n rightArithShift: '>>',\n rightLogShift: '>>>',\n equal: '=',\n unequal: '\\\\neq',\n smaller: '<',\n larger: '>',\n smallerEq: '\\\\leq',\n largerEq: '\\\\geq',\n bitAnd: '\\\\&',\n bitXor: '\\\\underline{|}',\n bitOr: '|',\n and: '\\\\wedge',\n xor: '\\\\veebar',\n or: '\\\\vee'\n};\nexport var latexFunctions = {\n // arithmetic\n abs: {\n 1: '\\\\left|${args[0]}\\\\right|'\n },\n add: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.add, \"${args[1]}\\\\right)\")\n },\n cbrt: {\n 1: '\\\\sqrt[3]{${args[0]}}'\n },\n ceil: {\n 1: '\\\\left\\\\lceil${args[0]}\\\\right\\\\rceil'\n },\n cube: {\n 1: '\\\\left(${args[0]}\\\\right)^3'\n },\n divide: {\n 2: '\\\\frac{${args[0]}}{${args[1]}}'\n },\n dotDivide: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.dotDivide, \"${args[1]}\\\\right)\")\n },\n dotMultiply: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.dotMultiply, \"${args[1]}\\\\right)\")\n },\n dotPow: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.dotPow, \"${args[1]}\\\\right)\")\n },\n exp: {\n 1: '\\\\exp\\\\left(${args[0]}\\\\right)'\n },\n expm1: \"\\\\left(e\".concat(latexOperators.pow, \"{${args[0]}}-1\\\\right)\"),\n fix: {\n 1: '\\\\mathrm{${name}}\\\\left(${args[0]}\\\\right)'\n },\n floor: {\n 1: '\\\\left\\\\lfloor${args[0]}\\\\right\\\\rfloor'\n },\n gcd: '\\\\gcd\\\\left(${args}\\\\right)',\n hypot: '\\\\hypot\\\\left(${args}\\\\right)',\n log: {\n 1: '\\\\ln\\\\left(${args[0]}\\\\right)',\n 2: '\\\\log_{${args[1]}}\\\\left(${args[0]}\\\\right)'\n },\n log10: {\n 1: '\\\\log_{10}\\\\left(${args[0]}\\\\right)'\n },\n log1p: {\n 1: '\\\\ln\\\\left(${args[0]}+1\\\\right)',\n 2: '\\\\log_{${args[1]}}\\\\left(${args[0]}+1\\\\right)'\n },\n log2: '\\\\log_{2}\\\\left(${args[0]}\\\\right)',\n mod: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.mod, \"${args[1]}\\\\right)\")\n },\n multiply: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.multiply, \"${args[1]}\\\\right)\")\n },\n norm: {\n 1: '\\\\left\\\\|${args[0]}\\\\right\\\\|',\n 2: undefined // use default template\n },\n nthRoot: {\n 2: '\\\\sqrt[${args[1]}]{${args[0]}}'\n },\n nthRoots: {\n 2: '\\\\{y : $y^{args[1]} = {${args[0]}}\\\\}'\n },\n pow: {\n 2: \"\\\\left(${args[0]}\\\\right)\".concat(latexOperators.pow, \"{${args[1]}}\")\n },\n round: {\n 1: '\\\\left\\\\lfloor${args[0]}\\\\right\\\\rceil',\n 2: undefined // use default template\n },\n sign: {\n 1: '\\\\mathrm{${name}}\\\\left(${args[0]}\\\\right)'\n },\n sqrt: {\n 1: '\\\\sqrt{${args[0]}}'\n },\n square: {\n 1: '\\\\left(${args[0]}\\\\right)^2'\n },\n subtract: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.subtract, \"${args[1]}\\\\right)\")\n },\n unaryMinus: {\n 1: \"\".concat(latexOperators.unaryMinus, \"\\\\left(${args[0]}\\\\right)\")\n },\n unaryPlus: {\n 1: \"\".concat(latexOperators.unaryPlus, \"\\\\left(${args[0]}\\\\right)\")\n },\n // bitwise\n bitAnd: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.bitAnd, \"${args[1]}\\\\right)\")\n },\n bitNot: {\n 1: latexOperators.bitNot + '\\\\left(${args[0]}\\\\right)'\n },\n bitOr: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.bitOr, \"${args[1]}\\\\right)\")\n },\n bitXor: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.bitXor, \"${args[1]}\\\\right)\")\n },\n leftShift: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.leftShift, \"${args[1]}\\\\right)\")\n },\n rightArithShift: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.rightArithShift, \"${args[1]}\\\\right)\")\n },\n rightLogShift: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.rightLogShift, \"${args[1]}\\\\right)\")\n },\n // combinatorics\n bellNumbers: {\n 1: '\\\\mathrm{B}_{${args[0]}}'\n },\n catalan: {\n 1: '\\\\mathrm{C}_{${args[0]}}'\n },\n stirlingS2: {\n 2: '\\\\mathrm{S}\\\\left(${args}\\\\right)'\n },\n // complex\n arg: {\n 1: '\\\\arg\\\\left(${args[0]}\\\\right)'\n },\n conj: {\n 1: '\\\\left(${args[0]}\\\\right)^*'\n },\n im: {\n 1: '\\\\Im\\\\left\\\\lbrace${args[0]}\\\\right\\\\rbrace'\n },\n re: {\n 1: '\\\\Re\\\\left\\\\lbrace${args[0]}\\\\right\\\\rbrace'\n },\n // logical\n and: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.and, \"${args[1]}\\\\right)\")\n },\n not: {\n 1: latexOperators.not + '\\\\left(${args[0]}\\\\right)'\n },\n or: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.or, \"${args[1]}\\\\right)\")\n },\n xor: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.xor, \"${args[1]}\\\\right)\")\n },\n // matrix\n cross: {\n 2: '\\\\left(${args[0]}\\\\right)\\\\times\\\\left(${args[1]}\\\\right)'\n },\n ctranspose: {\n 1: \"\\\\left(${args[0]}\\\\right)\".concat(latexOperators.ctranspose)\n },\n det: {\n 1: '\\\\det\\\\left(${args[0]}\\\\right)'\n },\n dot: {\n 2: '\\\\left(${args[0]}\\\\cdot${args[1]}\\\\right)'\n },\n expm: {\n 1: '\\\\exp\\\\left(${args[0]}\\\\right)'\n },\n inv: {\n 1: '\\\\left(${args[0]}\\\\right)^{-1}'\n },\n pinv: {\n 1: '\\\\left(${args[0]}\\\\right)^{+}'\n },\n sqrtm: {\n 1: \"{${args[0]}}\".concat(latexOperators.pow, \"{\\\\frac{1}{2}}\")\n },\n trace: {\n 1: '\\\\mathrm{tr}\\\\left(${args[0]}\\\\right)'\n },\n transpose: {\n 1: \"\\\\left(${args[0]}\\\\right)\".concat(latexOperators.transpose)\n },\n // probability\n combinations: {\n 2: '\\\\binom{${args[0]}}{${args[1]}}'\n },\n combinationsWithRep: {\n 2: '\\\\left(\\\\!\\\\!{\\\\binom{${args[0]}}{${args[1]}}}\\\\!\\\\!\\\\right)'\n },\n factorial: {\n 1: \"\\\\left(${args[0]}\\\\right)\".concat(latexOperators.factorial)\n },\n gamma: {\n 1: '\\\\Gamma\\\\left(${args[0]}\\\\right)'\n },\n lgamma: {\n 1: '\\\\ln\\\\Gamma\\\\left(${args[0]}\\\\right)'\n },\n // relational\n equal: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.equal, \"${args[1]}\\\\right)\")\n },\n larger: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.larger, \"${args[1]}\\\\right)\")\n },\n largerEq: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.largerEq, \"${args[1]}\\\\right)\")\n },\n smaller: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.smaller, \"${args[1]}\\\\right)\")\n },\n smallerEq: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.smallerEq, \"${args[1]}\\\\right)\")\n },\n unequal: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.unequal, \"${args[1]}\\\\right)\")\n },\n // special\n erf: {\n 1: 'erf\\\\left(${args[0]}\\\\right)'\n },\n // statistics\n max: '\\\\max\\\\left(${args}\\\\right)',\n min: '\\\\min\\\\left(${args}\\\\right)',\n variance: '\\\\mathrm{Var}\\\\left(${args}\\\\right)',\n // trigonometry\n acos: {\n 1: '\\\\cos^{-1}\\\\left(${args[0]}\\\\right)'\n },\n acosh: {\n 1: '\\\\cosh^{-1}\\\\left(${args[0]}\\\\right)'\n },\n acot: {\n 1: '\\\\cot^{-1}\\\\left(${args[0]}\\\\right)'\n },\n acoth: {\n 1: '\\\\coth^{-1}\\\\left(${args[0]}\\\\right)'\n },\n acsc: {\n 1: '\\\\csc^{-1}\\\\left(${args[0]}\\\\right)'\n },\n acsch: {\n 1: '\\\\mathrm{csch}^{-1}\\\\left(${args[0]}\\\\right)'\n },\n asec: {\n 1: '\\\\sec^{-1}\\\\left(${args[0]}\\\\right)'\n },\n asech: {\n 1: '\\\\mathrm{sech}^{-1}\\\\left(${args[0]}\\\\right)'\n },\n asin: {\n 1: '\\\\sin^{-1}\\\\left(${args[0]}\\\\right)'\n },\n asinh: {\n 1: '\\\\sinh^{-1}\\\\left(${args[0]}\\\\right)'\n },\n atan: {\n 1: '\\\\tan^{-1}\\\\left(${args[0]}\\\\right)'\n },\n atan2: {\n 2: '\\\\mathrm{atan2}\\\\left(${args}\\\\right)'\n },\n atanh: {\n 1: '\\\\tanh^{-1}\\\\left(${args[0]}\\\\right)'\n },\n cos: {\n 1: '\\\\cos\\\\left(${args[0]}\\\\right)'\n },\n cosh: {\n 1: '\\\\cosh\\\\left(${args[0]}\\\\right)'\n },\n cot: {\n 1: '\\\\cot\\\\left(${args[0]}\\\\right)'\n },\n coth: {\n 1: '\\\\coth\\\\left(${args[0]}\\\\right)'\n },\n csc: {\n 1: '\\\\csc\\\\left(${args[0]}\\\\right)'\n },\n csch: {\n 1: '\\\\mathrm{csch}\\\\left(${args[0]}\\\\right)'\n },\n sec: {\n 1: '\\\\sec\\\\left(${args[0]}\\\\right)'\n },\n sech: {\n 1: '\\\\mathrm{sech}\\\\left(${args[0]}\\\\right)'\n },\n sin: {\n 1: '\\\\sin\\\\left(${args[0]}\\\\right)'\n },\n sinh: {\n 1: '\\\\sinh\\\\left(${args[0]}\\\\right)'\n },\n tan: {\n 1: '\\\\tan\\\\left(${args[0]}\\\\right)'\n },\n tanh: {\n 1: '\\\\tanh\\\\left(${args[0]}\\\\right)'\n },\n // unit\n to: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.to, \"${args[1]}\\\\right)\")\n },\n // utils\n numeric: function numeric(node, options) {\n // Not sure if this is strictly right but should work correctly for the vast majority of use cases.\n return node.args[0].toTex();\n },\n // type\n number: {\n 0: '0',\n 1: '\\\\left(${args[0]}\\\\right)',\n 2: '\\\\left(\\\\left(${args[0]}\\\\right)${args[1]}\\\\right)'\n },\n string: {\n 0: '\\\\mathtt{\"\"}',\n 1: '\\\\mathrm{string}\\\\left(${args[0]}\\\\right)'\n },\n bignumber: {\n 0: '0',\n 1: '\\\\left(${args[0]}\\\\right)'\n },\n bigint: {\n 0: '0',\n 1: '\\\\left(${args[0]}\\\\right)'\n },\n complex: {\n 0: '0',\n 1: '\\\\left(${args[0]}\\\\right)',\n 2: \"\\\\left(\\\\left(${args[0]}\\\\right)+\".concat(latexSymbols.i, \"\\\\cdot\\\\left(${args[1]}\\\\right)\\\\right)\")\n },\n matrix: {\n 0: '\\\\begin{bmatrix}\\\\end{bmatrix}',\n 1: '\\\\left(${args[0]}\\\\right)',\n 2: '\\\\left(${args[0]}\\\\right)'\n },\n sparse: {\n 0: '\\\\begin{bsparse}\\\\end{bsparse}',\n 1: '\\\\left(${args[0]}\\\\right)'\n },\n unit: {\n 1: '\\\\left(${args[0]}\\\\right)',\n 2: '\\\\left(\\\\left(${args[0]}\\\\right)${args[1]}\\\\right)'\n }\n};\nexport var defaultTemplate = '\\\\mathrm{${name}}\\\\left(${args}\\\\right)';\nvar latexUnits = {\n deg: '^\\\\circ'\n};\nexport function escapeLatex(string) {\n return escapeLatexLib(string, {\n preserveFormatting: true\n });\n}\n\n// @param {string} name\n// @param {boolean} isUnit\nexport function toSymbol(name, isUnit) {\n isUnit = typeof isUnit === 'undefined' ? false : isUnit;\n if (isUnit) {\n if (hasOwnProperty(latexUnits, name)) {\n return latexUnits[name];\n }\n return '\\\\mathrm{' + escapeLatex(name) + '}';\n }\n if (hasOwnProperty(latexSymbols, name)) {\n return latexSymbols[name];\n }\n return escapeLatex(name);\n}", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { format } from '../../utils/string.js';\nimport { typeOf } from '../../utils/is.js';\nimport { escapeLatex } from '../../utils/latex.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'ConstantNode';\nvar dependencies = ['Node'];\nexport var createConstantNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n class ConstantNode extends Node {\n /**\n * A ConstantNode holds a constant value like a number or string.\n *\n * Usage:\n *\n * new ConstantNode(2.3)\n * new ConstantNode('hello')\n *\n * @param {*} value Value can be any type (number, BigNumber, bigint, string, ...)\n * @constructor ConstantNode\n * @extends {Node}\n */\n constructor(value) {\n super();\n this.value = value;\n }\n get type() {\n return name;\n }\n get isConstantNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var value = this.value;\n return function evalConstantNode() {\n return value;\n };\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n // nothing to do, we don't have any children\n }\n\n /**\n * Create a new ConstantNode with children produced by the given callback.\n * Trivial because there are no children.\n * @param {function(child: Node, path: string, parent: Node) : Node} callback\n * @returns {ConstantNode} Returns a clone of the node\n */\n map(callback) {\n return this.clone();\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {ConstantNode}\n */\n clone() {\n return new ConstantNode(this.value);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n */\n _toString(options) {\n return format(this.value, options);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n _toHTML(options) {\n var value = this._toString(options);\n switch (typeOf(this.value)) {\n case 'number':\n case 'bigint':\n case 'BigNumber':\n case 'Fraction':\n return '' + value + '';\n case 'string':\n return '' + value + '';\n case 'boolean':\n return '' + value + '';\n case 'null':\n return '' + value + '';\n case 'undefined':\n return '' + value + '';\n default:\n return '' + value + '';\n }\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n value: this.value\n };\n }\n\n /**\n * Instantiate a ConstantNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"SymbolNode\", value: 2.3}`,\n * where mathjs is optional\n * @returns {ConstantNode}\n */\n static fromJSON(json) {\n return new ConstantNode(json.value);\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n var value = this._toString(options);\n var type = typeOf(this.value);\n switch (type) {\n case 'string':\n return '\\\\mathtt{' + escapeLatex(value) + '}';\n case 'number':\n case 'BigNumber':\n {\n var finite = type === 'BigNumber' ? this.value.isFinite() : isFinite(this.value);\n if (!finite) {\n return this.value.valueOf() < 0 ? '-\\\\infty' : '\\\\infty';\n }\n var index = value.toLowerCase().indexOf('e');\n if (index !== -1) {\n return value.substring(0, index) + '\\\\cdot10^{' + value.substring(index + 1) + '}';\n }\n return value;\n }\n case 'bigint':\n {\n return value.toString();\n }\n case 'Fraction':\n return this.value.toLatex();\n default:\n return value;\n }\n }\n }\n _defineProperty(ConstantNode, \"name\", name);\n return ConstantNode;\n}, {\n isClass: true,\n isNode: true\n});", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isNode } from '../../utils/is.js';\nimport { keywords } from '../keywords.js';\nimport { escape } from '../../utils/string.js';\nimport { forEach, join } from '../../utils/array.js';\nimport { toSymbol } from '../../utils/latex.js';\nimport { getPrecedence } from '../operators.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'FunctionAssignmentNode';\nvar dependencies = ['typed', 'Node'];\nexport var createFunctionAssignmentNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Node\n } = _ref;\n /**\n * Is parenthesis needed?\n * @param {Node} node\n * @param {Object} parenthesis\n * @param {string} implicit\n * @private\n */\n function needParenthesis(node, parenthesis, implicit) {\n var precedence = getPrecedence(node, parenthesis, implicit);\n var exprPrecedence = getPrecedence(node.expr, parenthesis, implicit);\n return parenthesis === 'all' || exprPrecedence !== null && exprPrecedence <= precedence;\n }\n class FunctionAssignmentNode extends Node {\n /**\n * @constructor FunctionAssignmentNode\n * @extends {Node}\n * Function assignment\n *\n * @param {string} name Function name\n * @param {string[] | Array.<{name: string, type: string}>} params\n * Array with function parameter names, or an\n * array with objects containing the name\n * and type of the parameter\n * @param {Node} expr The function expression\n */\n constructor(name, params, expr) {\n super();\n // validate input\n if (typeof name !== 'string') {\n throw new TypeError('String expected for parameter \"name\"');\n }\n if (!Array.isArray(params)) {\n throw new TypeError('Array containing strings or objects expected for parameter \"params\"');\n }\n if (!isNode(expr)) {\n throw new TypeError('Node expected for parameter \"expr\"');\n }\n if (keywords.has(name)) {\n throw new Error('Illegal function name, \"' + name + '\" is a reserved keyword');\n }\n var paramNames = new Set();\n for (var param of params) {\n var _name = typeof param === 'string' ? param : param.name;\n if (paramNames.has(_name)) {\n throw new Error(\"Duplicate parameter name \\\"\".concat(_name, \"\\\"\"));\n } else {\n paramNames.add(_name);\n }\n }\n this.name = name;\n this.params = params.map(function (param) {\n return param && param.name || param;\n });\n this.types = params.map(function (param) {\n return param && param.type || 'any';\n });\n this.expr = expr;\n }\n get type() {\n return name;\n }\n get isFunctionAssignmentNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var childArgNames = Object.create(argNames);\n forEach(this.params, function (param) {\n childArgNames[param] = true;\n });\n\n // compile the function expression with the child args\n var evalExpr = this.expr._compile(math, childArgNames);\n var name = this.name;\n var params = this.params;\n var signature = join(this.types, ',');\n var syntax = name + '(' + join(this.params, ', ') + ')';\n return function evalFunctionAssignmentNode(scope, args, context) {\n var signatures = {};\n signatures[signature] = function () {\n var childArgs = Object.create(args);\n for (var i = 0; i < params.length; i++) {\n childArgs[params[i]] = arguments[i];\n }\n return evalExpr(scope, childArgs, context);\n };\n var fn = typed(name, signatures);\n fn.syntax = syntax;\n scope.set(name, fn);\n return fn;\n };\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n callback(this.expr, 'expr', this);\n }\n\n /**\n * Create a new FunctionAssignmentNode whose children are the results of\n * calling the provided callback function for each child of the original\n * node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {FunctionAssignmentNode} Returns a transformed copy of the node\n */\n map(callback) {\n var expr = this._ifNode(callback(this.expr, 'expr', this));\n return new FunctionAssignmentNode(this.name, this.params.slice(0), expr);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {FunctionAssignmentNode}\n */\n clone() {\n return new FunctionAssignmentNode(this.name, this.params.slice(0), this.expr);\n }\n\n /**\n * get string representation\n * @param {Object} options\n * @return {string} str\n */\n _toString(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var expr = this.expr.toString(options);\n if (needParenthesis(this, parenthesis, options && options.implicit)) {\n expr = '(' + expr + ')';\n }\n return this.name + '(' + this.params.join(', ') + ') = ' + expr;\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n var types = this.types;\n return {\n mathjs: name,\n name: this.name,\n params: this.params.map(function (param, index) {\n return {\n name: param,\n type: types[index]\n };\n }),\n expr: this.expr\n };\n }\n\n /**\n * Instantiate an FunctionAssignmentNode from its JSON representation\n * @param {Object} json\n * An object structured like\n * ```\n * {\"mathjs\": \"FunctionAssignmentNode\",\n * name: ..., params: ..., expr: ...}\n * ```\n * where mathjs is optional\n * @returns {FunctionAssignmentNode}\n */\n static fromJSON(json) {\n return new FunctionAssignmentNode(json.name, json.params, json.expr);\n }\n\n /**\n * get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n _toHTML(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var params = [];\n for (var i = 0; i < this.params.length; i++) {\n params.push('' + escape(this.params[i]) + '');\n }\n var expr = this.expr.toHTML(options);\n if (needParenthesis(this, parenthesis, options && options.implicit)) {\n expr = '(' + expr + ')';\n }\n return '' + escape(this.name) + '' + '(' + params.join(',') + ')' + '=' + expr;\n }\n\n /**\n * get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var expr = this.expr.toTex(options);\n if (needParenthesis(this, parenthesis, options && options.implicit)) {\n expr = \"\\\\left(\".concat(expr, \"\\\\right)\");\n }\n return '\\\\mathrm{' + this.name + '}\\\\left(' + this.params.map(toSymbol).join(',') + '\\\\right)=' + expr;\n }\n }\n _defineProperty(FunctionAssignmentNode, \"name\", name);\n return FunctionAssignmentNode;\n}, {\n isClass: true,\n isNode: true\n});", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { map } from '../../utils/array.js';\nimport { getSafeProperty } from '../../utils/customs.js';\nimport { factory } from '../../utils/factory.js';\nimport { isArray, isConstantNode, isMatrix, isNode, isString, typeOf } from '../../utils/is.js';\nimport { escape } from '../../utils/string.js';\nvar name = 'IndexNode';\nvar dependencies = ['Node', 'size'];\nexport var createIndexNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node,\n size\n } = _ref;\n class IndexNode extends Node {\n /**\n * @constructor IndexNode\n * @extends Node\n *\n * Describes a subset of a matrix or an object property.\n * Cannot be used on its own, needs to be used within an AccessorNode or\n * AssignmentNode.\n *\n * @param {Node[]} dimensions\n * @param {boolean} [dotNotation=false]\n * Optional property describing whether this index was written using dot\n * notation like `a.b`, or using bracket notation like `a[\"b\"]`\n * (which is the default). This property is used for string conversion.\n */\n constructor(dimensions, dotNotation) {\n super();\n this.dimensions = dimensions;\n this.dotNotation = dotNotation || false;\n\n // validate input\n if (!Array.isArray(dimensions) || !dimensions.every(isNode)) {\n throw new TypeError('Array containing Nodes expected for parameter \"dimensions\"');\n }\n if (this.dotNotation && !this.isObjectProperty()) {\n throw new Error('dotNotation only applicable for object properties');\n }\n }\n get type() {\n return name;\n }\n get isIndexNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n // TODO: implement support for bignumber (currently bignumbers are silently\n // reduced to numbers when changing the value to zero-based)\n\n // TODO: Optimization: when the range values are ConstantNodes,\n // we can beforehand resolve the zero-based value\n\n // optimization for a simple object property\n var evalDimensions = map(this.dimensions, function (dimension, i) {\n var needsEnd = dimension.filter(node => node.isSymbolNode && node.name === 'end').length > 0;\n if (needsEnd) {\n // SymbolNode 'end' is used inside the index,\n // like in `A[end]` or `A[end - 2]`\n var childArgNames = Object.create(argNames);\n childArgNames.end = true;\n var _evalDimension = dimension._compile(math, childArgNames);\n return function evalDimension(scope, args, context) {\n if (!isMatrix(context) && !isArray(context) && !isString(context)) {\n throw new TypeError('Cannot resolve \"end\": ' + 'context must be a Matrix, Array, or string but is ' + typeOf(context));\n }\n var s = size(context).valueOf();\n var childArgs = Object.create(args);\n childArgs.end = s[i];\n return _evalDimension(scope, childArgs, context);\n };\n } else {\n // SymbolNode `end` not used\n return dimension._compile(math, argNames);\n }\n });\n var index = getSafeProperty(math, 'index');\n return function evalIndexNode(scope, args, context) {\n var dimensions = map(evalDimensions, function (evalDimension) {\n return evalDimension(scope, args, context);\n });\n return index(...dimensions);\n };\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n for (var i = 0; i < this.dimensions.length; i++) {\n callback(this.dimensions[i], 'dimensions[' + i + ']', this);\n }\n }\n\n /**\n * Create a new IndexNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {IndexNode} Returns a transformed copy of the node\n */\n map(callback) {\n var dimensions = [];\n for (var i = 0; i < this.dimensions.length; i++) {\n dimensions[i] = this._ifNode(callback(this.dimensions[i], 'dimensions[' + i + ']', this));\n }\n return new IndexNode(dimensions, this.dotNotation);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {IndexNode}\n */\n clone() {\n return new IndexNode(this.dimensions.slice(0), this.dotNotation);\n }\n\n /**\n * Test whether this IndexNode contains a single property name\n * @return {boolean}\n */\n isObjectProperty() {\n return this.dimensions.length === 1 && isConstantNode(this.dimensions[0]) && typeof this.dimensions[0].value === 'string';\n }\n\n /**\n * Returns the property name if IndexNode contains a property.\n * If not, returns null.\n * @return {string | null}\n */\n getObjectProperty() {\n return this.isObjectProperty() ? this.dimensions[0].value : null;\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n */\n _toString(options) {\n // format the parameters like \"[1, 0:5]\"\n return this.dotNotation ? '.' + this.getObjectProperty() : '[' + this.dimensions.join(', ') + ']';\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n dimensions: this.dimensions,\n dotNotation: this.dotNotation\n };\n }\n\n /**\n * Instantiate an IndexNode from its JSON representation\n * @param {Object} json\n * An object structured like\n * `{\"mathjs\": \"IndexNode\", dimensions: [...], dotNotation: false}`,\n * where mathjs is optional\n * @returns {IndexNode}\n */\n static fromJSON(json) {\n return new IndexNode(json.dimensions, json.dotNotation);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n _toHTML(options) {\n // format the parameters like \"[1, 0:5]\"\n var dimensions = [];\n for (var i = 0; i < this.dimensions.length; i++) {\n dimensions[i] = this.dimensions[i].toHTML();\n }\n if (this.dotNotation) {\n return '.' + '' + escape(this.getObjectProperty()) + '';\n } else {\n return '[' + dimensions.join(',') + ']';\n }\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n var dimensions = this.dimensions.map(function (range) {\n return range.toTex(options);\n });\n return this.dotNotation ? '.' + this.getObjectProperty() + '' : '_{' + dimensions.join(',') + '}';\n }\n }\n _defineProperty(IndexNode, \"name\", name);\n return IndexNode;\n}, {\n isClass: true,\n isNode: true\n});", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { getSafeProperty } from '../../utils/customs.js';\nimport { factory } from '../../utils/factory.js';\nimport { isNode } from '../../utils/is.js';\nimport { hasOwnProperty } from '../../utils/object.js';\nimport { escape, stringify } from '../../utils/string.js';\nvar name = 'ObjectNode';\nvar dependencies = ['Node'];\nexport var createObjectNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n class ObjectNode extends Node {\n /**\n * @constructor ObjectNode\n * @extends {Node}\n * Holds an object with keys/values\n * @param {Object.} [properties] object with key/value pairs\n */\n constructor(properties) {\n super();\n this.properties = properties || {};\n\n // validate input\n if (properties) {\n if (!(typeof properties === 'object') || !Object.keys(properties).every(function (key) {\n return isNode(properties[key]);\n })) {\n throw new TypeError('Object containing Nodes expected');\n }\n }\n }\n get type() {\n return name;\n }\n get isObjectNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var evalEntries = {};\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n // we stringify/parse the key here to resolve unicode characters,\n // so you cannot create a key like {\"co\\\\u006Estructor\": null}\n var stringifiedKey = stringify(key);\n var parsedKey = JSON.parse(stringifiedKey);\n var prop = getSafeProperty(this.properties, key);\n evalEntries[parsedKey] = prop._compile(math, argNames);\n }\n }\n return function evalObjectNode(scope, args, context) {\n var obj = {};\n for (var _key in evalEntries) {\n if (hasOwnProperty(evalEntries, _key)) {\n obj[_key] = evalEntries[_key](scope, args, context);\n }\n }\n return obj;\n };\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n callback(this.properties[key], 'properties[' + stringify(key) + ']', this);\n }\n }\n }\n\n /**\n * Create a new ObjectNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {ObjectNode} Returns a transformed copy of the node\n */\n map(callback) {\n var properties = {};\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n properties[key] = this._ifNode(callback(this.properties[key], 'properties[' + stringify(key) + ']', this));\n }\n }\n return new ObjectNode(properties);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {ObjectNode}\n */\n clone() {\n var properties = {};\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n properties[key] = this.properties[key];\n }\n }\n return new ObjectNode(properties);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toString(options) {\n var entries = [];\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n entries.push(stringify(key) + ': ' + this.properties[key].toString(options));\n }\n }\n return '{' + entries.join(', ') + '}';\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n properties: this.properties\n };\n }\n\n /**\n * Instantiate an OperatorNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"ObjectNode\", \"properties\": {...}}`,\n * where mathjs is optional\n * @returns {ObjectNode}\n */\n static fromJSON(json) {\n return new ObjectNode(json.properties);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toHTML(options) {\n var entries = [];\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n entries.push('' + escape(key) + '' + '' + ':' + this.properties[key].toHTML(options));\n }\n }\n return '{' + entries.join(',') + '}';\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n var entries = [];\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n entries.push('\\\\mathbf{' + key + ':} & ' + this.properties[key].toTex(options) + '\\\\\\\\');\n }\n }\n var tex = '\\\\left\\\\{\\\\begin{array}{ll}' + entries.join('\\n') + '\\\\end{array}\\\\right\\\\}';\n return tex;\n }\n }\n _defineProperty(ObjectNode, \"name\", name);\n return ObjectNode;\n}, {\n isClass: true,\n isNode: true\n});", "import { ObjectWrappingMap, PartitionedMap } from './map.js';\n\n/**\n * Create a new scope which can access the parent scope,\n * but does not affect it when written. This is suitable for variable definitions\n * within a block node, or function definition.\n *\n * If parent scope has a createSubScope method, it delegates to that. Otherwise,\n * creates an empty map, and copies the parent scope to it, adding in\n * the remaining `args`.\n *\n * @param {Map} parentScope\n * @param {Object} args\n * @returns {PartitionedMap}\n */\nexport function createSubScope(parentScope, args) {\n return new PartitionedMap(parentScope, new ObjectWrappingMap(args), new Set(Object.keys(args)));\n}", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isNode, isConstantNode, isOperatorNode, isParenthesisNode } from '../../utils/is.js';\nimport { map } from '../../utils/array.js';\nimport { createSubScope } from '../../utils/scope.js';\nimport { escape } from '../../utils/string.js';\nimport { getSafeProperty, isSafeMethod } from '../../utils/customs.js';\nimport { getAssociativity, getPrecedence, isAssociativeWith, properties } from '../operators.js';\nimport { latexOperators } from '../../utils/latex.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'OperatorNode';\nvar dependencies = ['Node'];\nexport var createOperatorNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n /**\n * Returns true if the expression starts with a constant, under\n * the current parenthesization:\n * @param {Node} expression\n * @param {string} parenthesis\n * @return {boolean}\n */\n function startsWithConstant(expr, parenthesis) {\n var curNode = expr;\n if (parenthesis === 'auto') {\n while (isParenthesisNode(curNode)) curNode = curNode.content;\n }\n if (isConstantNode(curNode)) return true;\n if (isOperatorNode(curNode)) {\n return startsWithConstant(curNode.args[0], parenthesis);\n }\n return false;\n }\n\n /**\n * Calculate which parentheses are necessary. Gets an OperatorNode\n * (which is the root of the tree) and an Array of Nodes\n * (this.args) and returns an array where 'true' means that an argument\n * has to be enclosed in parentheses whereas 'false' means the opposite.\n *\n * @param {OperatorNode} root\n * @param {string} parenthesis\n * @param {Node[]} args\n * @param {boolean} latex\n * @return {boolean[]}\n * @private\n */\n function calculateNecessaryParentheses(root, parenthesis, implicit, args, latex) {\n // precedence of the root OperatorNode\n var precedence = getPrecedence(root, parenthesis, implicit);\n var associativity = getAssociativity(root, parenthesis);\n if (parenthesis === 'all' || args.length > 2 && root.getIdentifier() !== 'OperatorNode:add' && root.getIdentifier() !== 'OperatorNode:multiply') {\n return args.map(function (arg) {\n switch (arg.getContent().type) {\n // Nodes that don't need extra parentheses\n case 'ArrayNode':\n case 'ConstantNode':\n case 'SymbolNode':\n case 'ParenthesisNode':\n return false;\n default:\n return true;\n }\n });\n }\n var result;\n switch (args.length) {\n case 0:\n result = [];\n break;\n case 1:\n // unary operators\n {\n // precedence of the operand\n var operandPrecedence = getPrecedence(args[0], parenthesis, implicit, root);\n\n // handle special cases for LaTeX, where some of the parentheses aren't needed\n if (latex && operandPrecedence !== null) {\n var operandIdentifier;\n var rootIdentifier;\n if (parenthesis === 'keep') {\n operandIdentifier = args[0].getIdentifier();\n rootIdentifier = root.getIdentifier();\n } else {\n // Ignore Parenthesis Nodes when not in 'keep' mode\n operandIdentifier = args[0].getContent().getIdentifier();\n rootIdentifier = root.getContent().getIdentifier();\n }\n if (properties[precedence][rootIdentifier].latexLeftParens === false) {\n result = [false];\n break;\n }\n if (properties[operandPrecedence][operandIdentifier].latexParens === false) {\n result = [false];\n break;\n }\n }\n if (operandPrecedence === null) {\n // if the operand has no defined precedence, no parens are needed\n result = [false];\n break;\n }\n if (operandPrecedence <= precedence) {\n // if the operands precedence is lower, parens are needed\n result = [true];\n break;\n }\n\n // otherwise, no parens needed\n result = [false];\n }\n break;\n case 2:\n // binary operators\n {\n var lhsParens; // left hand side needs parenthesis?\n // precedence of the left hand side\n var lhsPrecedence = getPrecedence(args[0], parenthesis, implicit, root);\n // is the root node associative with the left hand side\n var assocWithLhs = isAssociativeWith(root, args[0], parenthesis);\n if (lhsPrecedence === null) {\n // if the left hand side has no defined precedence, no parens are needed\n // FunctionNode for example\n lhsParens = false;\n } else if (lhsPrecedence === precedence && associativity === 'right' && !assocWithLhs) {\n // In case of equal precedence, if the root node is left associative\n // parens are **never** necessary for the left hand side.\n // If it is right associative however, parens are necessary\n // if the root node isn't associative with the left hand side\n lhsParens = true;\n } else if (lhsPrecedence < precedence) {\n lhsParens = true;\n } else {\n lhsParens = false;\n }\n var rhsParens; // right hand side needs parenthesis?\n // precedence of the right hand side\n var rhsPrecedence = getPrecedence(args[1], parenthesis, implicit, root);\n // is the root node associative with the right hand side?\n var assocWithRhs = isAssociativeWith(root, args[1], parenthesis);\n if (rhsPrecedence === null) {\n // if the right hand side has no defined precedence, no parens are needed\n // FunctionNode for example\n rhsParens = false;\n } else if (rhsPrecedence === precedence && associativity === 'left' && !assocWithRhs) {\n // In case of equal precedence, if the root node is right associative\n // parens are **never** necessary for the right hand side.\n // If it is left associative however, parens are necessary\n // if the root node isn't associative with the right hand side\n rhsParens = true;\n } else if (rhsPrecedence < precedence) {\n rhsParens = true;\n } else {\n rhsParens = false;\n }\n\n // handle special cases for LaTeX, where some of the parentheses aren't needed\n if (latex) {\n var _rootIdentifier;\n var lhsIdentifier;\n var rhsIdentifier;\n if (parenthesis === 'keep') {\n _rootIdentifier = root.getIdentifier();\n lhsIdentifier = root.args[0].getIdentifier();\n rhsIdentifier = root.args[1].getIdentifier();\n } else {\n // Ignore ParenthesisNodes when not in 'keep' mode\n _rootIdentifier = root.getContent().getIdentifier();\n lhsIdentifier = root.args[0].getContent().getIdentifier();\n rhsIdentifier = root.args[1].getContent().getIdentifier();\n }\n if (lhsPrecedence !== null) {\n if (properties[precedence][_rootIdentifier].latexLeftParens === false) {\n lhsParens = false;\n }\n if (properties[lhsPrecedence][lhsIdentifier].latexParens === false) {\n lhsParens = false;\n }\n }\n if (rhsPrecedence !== null) {\n if (properties[precedence][_rootIdentifier].latexRightParens === false) {\n rhsParens = false;\n }\n if (properties[rhsPrecedence][rhsIdentifier].latexParens === false) {\n rhsParens = false;\n }\n }\n }\n result = [lhsParens, rhsParens];\n }\n break;\n default:\n if (root.getIdentifier() === 'OperatorNode:add' || root.getIdentifier() === 'OperatorNode:multiply') {\n result = args.map(function (arg) {\n var argPrecedence = getPrecedence(arg, parenthesis, implicit, root);\n var assocWithArg = isAssociativeWith(root, arg, parenthesis);\n var argAssociativity = getAssociativity(arg, parenthesis);\n if (argPrecedence === null) {\n // if the argument has no defined precedence, no parens are needed\n return false;\n } else if (precedence === argPrecedence && associativity === argAssociativity && !assocWithArg) {\n return true;\n } else if (argPrecedence < precedence) {\n return true;\n }\n return false;\n });\n }\n break;\n }\n\n // Handles an edge case of parentheses with implicit multiplication\n // of ConstantNode.\n // In that case, parenthesize ConstantNodes that follow an unparenthesized\n // expression, even though they normally wouldn't be printed.\n if (args.length >= 2 && root.getIdentifier() === 'OperatorNode:multiply' && root.implicit && parenthesis !== 'all' && implicit === 'hide') {\n for (var i = 1; i < result.length; ++i) {\n if (startsWithConstant(args[i], parenthesis) && !result[i - 1] && (parenthesis !== 'keep' || !isParenthesisNode(args[i - 1]))) {\n result[i] = true;\n }\n }\n }\n return result;\n }\n class OperatorNode extends Node {\n /**\n * @constructor OperatorNode\n * @extends {Node}\n * An operator with two arguments, like 2+3\n *\n * @param {string} op Operator name, for example '+'\n * @param {string} fn Function name, for example 'add'\n * @param {Node[]} args Operator arguments\n * @param {boolean} [implicit] Is this an implicit multiplication?\n * @param {boolean} [isPercentage] Is this an percentage Operation?\n */\n constructor(op, fn, args, implicit, isPercentage) {\n super();\n // validate input\n if (typeof op !== 'string') {\n throw new TypeError('string expected for parameter \"op\"');\n }\n if (typeof fn !== 'string') {\n throw new TypeError('string expected for parameter \"fn\"');\n }\n if (!Array.isArray(args) || !args.every(isNode)) {\n throw new TypeError('Array containing Nodes expected for parameter \"args\"');\n }\n this.implicit = implicit === true;\n this.isPercentage = isPercentage === true;\n this.op = op;\n this.fn = fn;\n this.args = args || [];\n }\n get type() {\n return name;\n }\n get isOperatorNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n // validate fn\n if (typeof this.fn !== 'string' || !isSafeMethod(math, this.fn)) {\n if (!math[this.fn]) {\n throw new Error('Function ' + this.fn + ' missing in provided namespace \"math\"');\n } else {\n throw new Error('No access to function \"' + this.fn + '\"');\n }\n }\n var fn = getSafeProperty(math, this.fn);\n var evalArgs = map(this.args, function (arg) {\n return arg._compile(math, argNames);\n });\n if (typeof fn === 'function' && fn.rawArgs === true) {\n // pass unevaluated parameters (nodes) to the function\n // \"raw\" evaluation\n var rawArgs = this.args;\n return function evalOperatorNode(scope, args, context) {\n return fn(rawArgs, math, createSubScope(scope, args));\n };\n } else if (evalArgs.length === 1) {\n var evalArg0 = evalArgs[0];\n return function evalOperatorNode(scope, args, context) {\n return fn(evalArg0(scope, args, context));\n };\n } else if (evalArgs.length === 2) {\n var _evalArg = evalArgs[0];\n var evalArg1 = evalArgs[1];\n return function evalOperatorNode(scope, args, context) {\n return fn(_evalArg(scope, args, context), evalArg1(scope, args, context));\n };\n } else {\n return function evalOperatorNode(scope, args, context) {\n return fn.apply(null, map(evalArgs, function (evalArg) {\n return evalArg(scope, args, context);\n }));\n };\n }\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n for (var i = 0; i < this.args.length; i++) {\n callback(this.args[i], 'args[' + i + ']', this);\n }\n }\n\n /**\n * Create a new OperatorNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {OperatorNode} Returns a transformed copy of the node\n */\n map(callback) {\n var args = [];\n for (var i = 0; i < this.args.length; i++) {\n args[i] = this._ifNode(callback(this.args[i], 'args[' + i + ']', this));\n }\n return new OperatorNode(this.op, this.fn, args, this.implicit, this.isPercentage);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {OperatorNode}\n */\n clone() {\n return new OperatorNode(this.op, this.fn, this.args.slice(0), this.implicit, this.isPercentage);\n }\n\n /**\n * Check whether this is an unary OperatorNode:\n * has exactly one argument, like `-a`.\n * @return {boolean}\n * Returns true when an unary operator node, false otherwise.\n */\n isUnary() {\n return this.args.length === 1;\n }\n\n /**\n * Check whether this is a binary OperatorNode:\n * has exactly two arguments, like `a + b`.\n * @return {boolean}\n * Returns true when a binary operator node, false otherwise.\n */\n isBinary() {\n return this.args.length === 2;\n }\n\n /**\n * Get string representation.\n * @param {Object} options\n * @return {string} str\n */\n _toString(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var implicit = options && options.implicit ? options.implicit : 'hide';\n var args = this.args;\n var parens = calculateNecessaryParentheses(this, parenthesis, implicit, args, false);\n if (args.length === 1) {\n // unary operators\n var assoc = getAssociativity(this, parenthesis);\n var operand = args[0].toString(options);\n if (parens[0]) {\n operand = '(' + operand + ')';\n }\n\n // for example for \"not\", we want a space between operand and argument\n var opIsNamed = /[a-zA-Z]+/.test(this.op);\n if (assoc === 'right') {\n // prefix operator\n return this.op + (opIsNamed ? ' ' : '') + operand;\n } else if (assoc === 'left') {\n // postfix\n return operand + (opIsNamed ? ' ' : '') + this.op;\n }\n\n // fall back to postfix\n return operand + this.op;\n } else if (args.length === 2) {\n var lhs = args[0].toString(options); // left hand side\n var rhs = args[1].toString(options); // right hand side\n if (parens[0]) {\n // left hand side in parenthesis?\n lhs = '(' + lhs + ')';\n }\n if (parens[1]) {\n // right hand side in parenthesis?\n rhs = '(' + rhs + ')';\n }\n if (this.implicit && this.getIdentifier() === 'OperatorNode:multiply' && implicit === 'hide') {\n return lhs + ' ' + rhs;\n }\n return lhs + ' ' + this.op + ' ' + rhs;\n } else if (args.length > 2 && (this.getIdentifier() === 'OperatorNode:add' || this.getIdentifier() === 'OperatorNode:multiply')) {\n var stringifiedArgs = args.map(function (arg, index) {\n arg = arg.toString(options);\n if (parens[index]) {\n // put in parenthesis?\n arg = '(' + arg + ')';\n }\n return arg;\n });\n if (this.implicit && this.getIdentifier() === 'OperatorNode:multiply' && implicit === 'hide') {\n return stringifiedArgs.join(' ');\n }\n return stringifiedArgs.join(' ' + this.op + ' ');\n } else {\n // fallback to formatting as a function call\n return this.fn + '(' + this.args.join(', ') + ')';\n }\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n op: this.op,\n fn: this.fn,\n args: this.args,\n implicit: this.implicit,\n isPercentage: this.isPercentage\n };\n }\n\n /**\n * Instantiate an OperatorNode from its JSON representation\n * @param {Object} json\n * An object structured like\n * ```\n * {\"mathjs\": \"OperatorNode\",\n * \"op\": \"+\", \"fn\": \"add\", \"args\": [...],\n * \"implicit\": false,\n * \"isPercentage\":false}\n * ```\n * where mathjs is optional\n * @returns {OperatorNode}\n */\n static fromJSON(json) {\n return new OperatorNode(json.op, json.fn, json.args, json.implicit, json.isPercentage);\n }\n\n /**\n * Get HTML representation.\n * @param {Object} options\n * @return {string} str\n */\n _toHTML(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var implicit = options && options.implicit ? options.implicit : 'hide';\n var args = this.args;\n var parens = calculateNecessaryParentheses(this, parenthesis, implicit, args, false);\n if (args.length === 1) {\n // unary operators\n var assoc = getAssociativity(this, parenthesis);\n var operand = args[0].toHTML(options);\n if (parens[0]) {\n operand = '(' + operand + ')';\n }\n if (assoc === 'right') {\n // prefix operator\n return '' + escape(this.op) + '' + operand;\n } else {\n // postfix when assoc === 'left' or undefined\n return operand + '' + escape(this.op) + '';\n }\n } else if (args.length === 2) {\n // binary operatoes\n var lhs = args[0].toHTML(options); // left hand side\n var rhs = args[1].toHTML(options); // right hand side\n if (parens[0]) {\n // left hand side in parenthesis?\n lhs = '(' + lhs + ')';\n }\n if (parens[1]) {\n // right hand side in parenthesis?\n rhs = '(' + rhs + ')';\n }\n if (this.implicit && this.getIdentifier() === 'OperatorNode:multiply' && implicit === 'hide') {\n return lhs + '' + rhs;\n }\n return lhs + '' + escape(this.op) + '' + rhs;\n } else {\n var stringifiedArgs = args.map(function (arg, index) {\n arg = arg.toHTML(options);\n if (parens[index]) {\n // put in parenthesis?\n arg = '(' + arg + ')';\n }\n return arg;\n });\n if (args.length > 2 && (this.getIdentifier() === 'OperatorNode:add' || this.getIdentifier() === 'OperatorNode:multiply')) {\n if (this.implicit && this.getIdentifier() === 'OperatorNode:multiply' && implicit === 'hide') {\n return stringifiedArgs.join('');\n }\n return stringifiedArgs.join('' + escape(this.op) + '');\n } else {\n // fallback to formatting as a function call\n return '' + escape(this.fn) + '' + '(' + stringifiedArgs.join(',') + ')';\n }\n }\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var implicit = options && options.implicit ? options.implicit : 'hide';\n var args = this.args;\n var parens = calculateNecessaryParentheses(this, parenthesis, implicit, args, true);\n var op = latexOperators[this.fn];\n op = typeof op === 'undefined' ? this.op : op; // fall back to using this.op\n\n if (args.length === 1) {\n // unary operators\n var assoc = getAssociativity(this, parenthesis);\n var operand = args[0].toTex(options);\n if (parens[0]) {\n operand = \"\\\\left(\".concat(operand, \"\\\\right)\");\n }\n if (assoc === 'right') {\n // prefix operator\n return op + operand;\n } else if (assoc === 'left') {\n // postfix operator\n return operand + op;\n }\n\n // fall back to postfix\n return operand + op;\n } else if (args.length === 2) {\n // binary operators\n var lhs = args[0]; // left hand side\n var lhsTex = lhs.toTex(options);\n if (parens[0]) {\n lhsTex = \"\\\\left(\".concat(lhsTex, \"\\\\right)\");\n }\n var rhs = args[1]; // right hand side\n var rhsTex = rhs.toTex(options);\n if (parens[1]) {\n rhsTex = \"\\\\left(\".concat(rhsTex, \"\\\\right)\");\n }\n\n // handle some exceptions (due to the way LaTeX works)\n var lhsIdentifier;\n if (parenthesis === 'keep') {\n lhsIdentifier = lhs.getIdentifier();\n } else {\n // Ignore ParenthesisNodes if in 'keep' mode\n lhsIdentifier = lhs.getContent().getIdentifier();\n }\n switch (this.getIdentifier()) {\n case 'OperatorNode:divide':\n // op contains '\\\\frac' at this point\n return op + '{' + lhsTex + '}' + '{' + rhsTex + '}';\n case 'OperatorNode:pow':\n lhsTex = '{' + lhsTex + '}';\n rhsTex = '{' + rhsTex + '}';\n switch (lhsIdentifier) {\n case 'ConditionalNode': //\n case 'OperatorNode:divide':\n lhsTex = \"\\\\left(\".concat(lhsTex, \"\\\\right)\");\n }\n break;\n case 'OperatorNode:multiply':\n if (this.implicit && implicit === 'hide') {\n return lhsTex + '~' + rhsTex;\n }\n }\n return lhsTex + op + rhsTex;\n } else if (args.length > 2 && (this.getIdentifier() === 'OperatorNode:add' || this.getIdentifier() === 'OperatorNode:multiply')) {\n var texifiedArgs = args.map(function (arg, index) {\n arg = arg.toTex(options);\n if (parens[index]) {\n arg = \"\\\\left(\".concat(arg, \"\\\\right)\");\n }\n return arg;\n });\n if (this.getIdentifier() === 'OperatorNode:multiply' && this.implicit && implicit === 'hide') {\n return texifiedArgs.join('~');\n }\n return texifiedArgs.join(op);\n } else {\n // fall back to formatting as a function call\n // as this is a fallback, it doesn't use\n // fancy function names\n return '\\\\mathrm{' + this.fn + '}\\\\left(' + args.map(function (arg) {\n return arg.toTex(options);\n }).join(',') + '\\\\right)';\n }\n }\n\n /**\n * Get identifier.\n * @return {string}\n */\n getIdentifier() {\n return this.type + ':' + this.fn;\n }\n }\n _defineProperty(OperatorNode, \"name\", name);\n return OperatorNode;\n}, {\n isClass: true,\n isNode: true\n});", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isNode } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'ParenthesisNode';\nvar dependencies = ['Node'];\nexport var createParenthesisNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n class ParenthesisNode extends Node {\n /**\n * @constructor ParenthesisNode\n * @extends {Node}\n * A parenthesis node describes manual parenthesis from the user input\n * @param {Node} content\n * @extends {Node}\n */\n constructor(content) {\n super();\n // validate input\n if (!isNode(content)) {\n throw new TypeError('Node expected for parameter \"content\"');\n }\n this.content = content;\n }\n get type() {\n return name;\n }\n get isParenthesisNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n return this.content._compile(math, argNames);\n }\n\n /**\n * Get the content of the current Node.\n * @return {Node} content\n * @override\n **/\n getContent() {\n return this.content.getContent();\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n callback(this.content, 'content', this);\n }\n\n /**\n * Create a new ParenthesisNode whose child is the result of calling\n * the provided callback function on the child of this node.\n * @param {function(child: Node, path: string, parent: Node) : Node} callback\n * @returns {ParenthesisNode} Returns a clone of the node\n */\n map(callback) {\n var content = callback(this.content, 'content', this);\n return new ParenthesisNode(content);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {ParenthesisNode}\n */\n clone() {\n return new ParenthesisNode(this.content);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toString(options) {\n if (!options || options && !options.parenthesis || options && options.parenthesis === 'keep') {\n return '(' + this.content.toString(options) + ')';\n }\n return this.content.toString(options);\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n content: this.content\n };\n }\n\n /**\n * Instantiate an ParenthesisNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"ParenthesisNode\", \"content\": ...}`,\n * where mathjs is optional\n * @returns {ParenthesisNode}\n */\n static fromJSON(json) {\n return new ParenthesisNode(json.content);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toHTML(options) {\n if (!options || options && !options.parenthesis || options && options.parenthesis === 'keep') {\n return '(' + this.content.toHTML(options) + ')';\n }\n return this.content.toHTML(options);\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toTex(options) {\n if (!options || options && !options.parenthesis || options && options.parenthesis === 'keep') {\n return \"\\\\left(\".concat(this.content.toTex(options), \"\\\\right)\");\n }\n return this.content.toTex(options);\n }\n }\n _defineProperty(ParenthesisNode, \"name\", name);\n return ParenthesisNode;\n}, {\n isClass: true,\n isNode: true\n});", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isNode, isSymbolNode } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nimport { getPrecedence } from '../operators.js';\nvar name = 'RangeNode';\nvar dependencies = ['Node'];\nexport var createRangeNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n /**\n * Calculate the necessary parentheses\n * @param {Node} node\n * @param {string} parenthesis\n * @param {string} implicit\n * @return {Object} parentheses\n * @private\n */\n function calculateNecessaryParentheses(node, parenthesis, implicit) {\n var precedence = getPrecedence(node, parenthesis, implicit);\n var parens = {};\n var startPrecedence = getPrecedence(node.start, parenthesis, implicit);\n parens.start = startPrecedence !== null && startPrecedence <= precedence || parenthesis === 'all';\n if (node.step) {\n var stepPrecedence = getPrecedence(node.step, parenthesis, implicit);\n parens.step = stepPrecedence !== null && stepPrecedence <= precedence || parenthesis === 'all';\n }\n var endPrecedence = getPrecedence(node.end, parenthesis, implicit);\n parens.end = endPrecedence !== null && endPrecedence <= precedence || parenthesis === 'all';\n return parens;\n }\n class RangeNode extends Node {\n /**\n * @constructor RangeNode\n * @extends {Node}\n * create a range\n * @param {Node} start included lower-bound\n * @param {Node} end included upper-bound\n * @param {Node} [step] optional step\n */\n constructor(start, end, step) {\n super();\n // validate inputs\n if (!isNode(start)) throw new TypeError('Node expected');\n if (!isNode(end)) throw new TypeError('Node expected');\n if (step && !isNode(step)) throw new TypeError('Node expected');\n if (arguments.length > 3) throw new Error('Too many arguments');\n this.start = start; // included lower-bound\n this.end = end; // included upper-bound\n this.step = step || null; // optional step\n }\n get type() {\n return name;\n }\n get isRangeNode() {\n return true;\n }\n\n /**\n * Check whether the RangeNode needs the `end` symbol to be defined.\n * This end is the size of the Matrix in current dimension.\n * @return {boolean}\n */\n needsEnd() {\n // find all `end` symbols in this RangeNode\n var endSymbols = this.filter(function (node) {\n return isSymbolNode(node) && node.name === 'end';\n });\n return endSymbols.length > 0;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var range = math.range;\n var evalStart = this.start._compile(math, argNames);\n var evalEnd = this.end._compile(math, argNames);\n if (this.step) {\n var evalStep = this.step._compile(math, argNames);\n return function evalRangeNode(scope, args, context) {\n return range(evalStart(scope, args, context), evalEnd(scope, args, context), evalStep(scope, args, context));\n };\n } else {\n return function evalRangeNode(scope, args, context) {\n return range(evalStart(scope, args, context), evalEnd(scope, args, context));\n };\n }\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n callback(this.start, 'start', this);\n callback(this.end, 'end', this);\n if (this.step) {\n callback(this.step, 'step', this);\n }\n }\n\n /**\n * Create a new RangeNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {RangeNode} Returns a transformed copy of the node\n */\n map(callback) {\n return new RangeNode(this._ifNode(callback(this.start, 'start', this)), this._ifNode(callback(this.end, 'end', this)), this.step && this._ifNode(callback(this.step, 'step', this)));\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {RangeNode}\n */\n clone() {\n return new RangeNode(this.start, this.end, this.step && this.step);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n */\n _toString(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var parens = calculateNecessaryParentheses(this, parenthesis, options && options.implicit);\n\n // format string as start:step:stop\n var str;\n var start = this.start.toString(options);\n if (parens.start) {\n start = '(' + start + ')';\n }\n str = start;\n if (this.step) {\n var step = this.step.toString(options);\n if (parens.step) {\n step = '(' + step + ')';\n }\n str += ':' + step;\n }\n var end = this.end.toString(options);\n if (parens.end) {\n end = '(' + end + ')';\n }\n str += ':' + end;\n return str;\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n start: this.start,\n end: this.end,\n step: this.step\n };\n }\n\n /**\n * Instantiate an RangeNode from its JSON representation\n * @param {Object} json\n * An object structured like\n * `{\"mathjs\": \"RangeNode\", \"start\": ..., \"end\": ..., \"step\": ...}`,\n * where mathjs is optional\n * @returns {RangeNode}\n */\n static fromJSON(json) {\n return new RangeNode(json.start, json.end, json.step);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n _toHTML(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var parens = calculateNecessaryParentheses(this, parenthesis, options && options.implicit);\n\n // format string as start:step:stop\n var str;\n var start = this.start.toHTML(options);\n if (parens.start) {\n start = '(' + start + ')';\n }\n str = start;\n if (this.step) {\n var step = this.step.toHTML(options);\n if (parens.step) {\n step = '(' + step + ')';\n }\n str += ':' + step;\n }\n var end = this.end.toHTML(options);\n if (parens.end) {\n end = '(' + end + ')';\n }\n str += ':' + end;\n return str;\n }\n\n /**\n * Get LaTeX representation\n * @params {Object} options\n * @return {string} str\n */\n _toTex(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var parens = calculateNecessaryParentheses(this, parenthesis, options && options.implicit);\n var str = this.start.toTex(options);\n if (parens.start) {\n str = \"\\\\left(\".concat(str, \"\\\\right)\");\n }\n if (this.step) {\n var step = this.step.toTex(options);\n if (parens.step) {\n step = \"\\\\left(\".concat(step, \"\\\\right)\");\n }\n str += ':' + step;\n }\n var end = this.end.toTex(options);\n if (parens.end) {\n end = \"\\\\left(\".concat(end, \"\\\\right)\");\n }\n str += ':' + end;\n return str;\n }\n }\n _defineProperty(RangeNode, \"name\", name);\n return RangeNode;\n}, {\n isClass: true,\n isNode: true\n});", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { getPrecedence } from '../operators.js';\nimport { escape } from '../../utils/string.js';\nimport { getSafeProperty } from '../../utils/customs.js';\nimport { latexOperators } from '../../utils/latex.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'RelationalNode';\nvar dependencies = ['Node'];\nexport var createRelationalNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n var operatorMap = {\n equal: '==',\n unequal: '!=',\n smaller: '<',\n larger: '>',\n smallerEq: '<=',\n largerEq: '>='\n };\n class RelationalNode extends Node {\n /**\n * A node representing a chained conditional expression, such as 'x > y > z'\n *\n * @param {String[]} conditionals\n * An array of conditional operators used to compare the parameters\n * @param {Node[]} params\n * The parameters that will be compared\n *\n * @constructor RelationalNode\n * @extends {Node}\n */\n constructor(conditionals, params) {\n super();\n if (!Array.isArray(conditionals)) {\n throw new TypeError('Parameter conditionals must be an array');\n }\n if (!Array.isArray(params)) {\n throw new TypeError('Parameter params must be an array');\n }\n if (conditionals.length !== params.length - 1) {\n throw new TypeError('Parameter params must contain exactly one more element ' + 'than parameter conditionals');\n }\n this.conditionals = conditionals;\n this.params = params;\n }\n get type() {\n return name;\n }\n get isRelationalNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var self = this;\n var compiled = this.params.map(p => p._compile(math, argNames));\n return function evalRelationalNode(scope, args, context) {\n var evalLhs;\n var evalRhs = compiled[0](scope, args, context);\n for (var i = 0; i < self.conditionals.length; i++) {\n evalLhs = evalRhs;\n evalRhs = compiled[i + 1](scope, args, context);\n var condFn = getSafeProperty(math, self.conditionals[i]);\n if (!condFn(evalLhs, evalRhs)) {\n return false;\n }\n }\n return true;\n };\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n this.params.forEach((n, i) => callback(n, 'params[' + i + ']', this), this);\n }\n\n /**\n * Create a new RelationalNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {RelationalNode} Returns a transformed copy of the node\n */\n map(callback) {\n return new RelationalNode(this.conditionals.slice(), this.params.map((n, i) => this._ifNode(callback(n, 'params[' + i + ']', this)), this));\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {RelationalNode}\n */\n clone() {\n return new RelationalNode(this.conditionals, this.params);\n }\n\n /**\n * Get string representation.\n * @param {Object} options\n * @return {string} str\n */\n _toString(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var precedence = getPrecedence(this, parenthesis, options && options.implicit);\n var paramStrings = this.params.map(function (p, index) {\n var paramPrecedence = getPrecedence(p, parenthesis, options && options.implicit);\n return parenthesis === 'all' || paramPrecedence !== null && paramPrecedence <= precedence ? '(' + p.toString(options) + ')' : p.toString(options);\n });\n var ret = paramStrings[0];\n for (var i = 0; i < this.conditionals.length; i++) {\n ret += ' ' + operatorMap[this.conditionals[i]];\n ret += ' ' + paramStrings[i + 1];\n }\n return ret;\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n conditionals: this.conditionals,\n params: this.params\n };\n }\n\n /**\n * Instantiate a RelationalNode from its JSON representation\n * @param {Object} json\n * An object structured like\n * `{\"mathjs\": \"RelationalNode\", \"conditionals\": ..., \"params\": ...}`,\n * where mathjs is optional\n * @returns {RelationalNode}\n */\n static fromJSON(json) {\n return new RelationalNode(json.conditionals, json.params);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n _toHTML(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var precedence = getPrecedence(this, parenthesis, options && options.implicit);\n var paramStrings = this.params.map(function (p, index) {\n var paramPrecedence = getPrecedence(p, parenthesis, options && options.implicit);\n return parenthesis === 'all' || paramPrecedence !== null && paramPrecedence <= precedence ? '(' + p.toHTML(options) + ')' : p.toHTML(options);\n });\n var ret = paramStrings[0];\n for (var i = 0; i < this.conditionals.length; i++) {\n ret += '' + escape(operatorMap[this.conditionals[i]]) + '' + paramStrings[i + 1];\n }\n return ret;\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var precedence = getPrecedence(this, parenthesis, options && options.implicit);\n var paramStrings = this.params.map(function (p, index) {\n var paramPrecedence = getPrecedence(p, parenthesis, options && options.implicit);\n return parenthesis === 'all' || paramPrecedence !== null && paramPrecedence <= precedence ? '\\\\left(' + p.toTex(options) + '\\right)' : p.toTex(options);\n });\n var ret = paramStrings[0];\n for (var i = 0; i < this.conditionals.length; i++) {\n ret += latexOperators[this.conditionals[i]] + paramStrings[i + 1];\n }\n return ret;\n }\n }\n _defineProperty(RelationalNode, \"name\", name);\n return RelationalNode;\n}, {\n isClass: true,\n isNode: true\n});", "import { escape } from '../../utils/string.js';\nimport { getSafeProperty } from '../../utils/customs.js';\nimport { factory } from '../../utils/factory.js';\nimport { toSymbol } from '../../utils/latex.js';\nvar name = 'SymbolNode';\nvar dependencies = ['math', '?Unit', 'Node'];\nexport var createSymbolNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n math,\n Unit,\n Node\n } = _ref;\n /**\n * Check whether some name is a valueless unit like \"inch\".\n * @param {string} name\n * @return {boolean}\n */\n function isValuelessUnit(name) {\n return Unit ? Unit.isValuelessUnit(name) : false;\n }\n class SymbolNode extends Node {\n /**\n * @constructor SymbolNode\n * @extends {Node}\n * A symbol node can hold and resolve a symbol\n * @param {string} name\n * @extends {Node}\n */\n constructor(name) {\n super();\n // validate input\n if (typeof name !== 'string') {\n throw new TypeError('String expected for parameter \"name\"');\n }\n this.name = name;\n }\n get type() {\n return 'SymbolNode';\n }\n get isSymbolNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var name = this.name;\n if (argNames[name] === true) {\n // this is a FunctionAssignment argument\n // (like an x when inside the expression of a function\n // assignment `f(x) = ...`)\n return function (scope, args, context) {\n return getSafeProperty(args, name);\n };\n } else if (name in math) {\n return function (scope, args, context) {\n return scope.has(name) ? scope.get(name) : getSafeProperty(math, name);\n };\n } else {\n var isUnit = isValuelessUnit(name);\n return function (scope, args, context) {\n return scope.has(name) ? scope.get(name) : isUnit ? new Unit(null, name) : SymbolNode.onUndefinedSymbol(name);\n };\n }\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n // nothing to do, we don't have any children\n }\n\n /**\n * Create a new SymbolNode with children produced by the given callback.\n * Trivial since a SymbolNode has no children\n * @param {function(child: Node, path: string, parent: Node) : Node} callback\n * @returns {SymbolNode} Returns a clone of the node\n */\n map(callback) {\n return this.clone();\n }\n\n /**\n * Throws an error 'Undefined symbol {name}'\n * @param {string} name\n */\n static onUndefinedSymbol(name) {\n throw new Error('Undefined symbol ' + name);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {SymbolNode}\n */\n clone() {\n return new SymbolNode(this.name);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toString(options) {\n return this.name;\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toHTML(options) {\n var name = escape(this.name);\n if (name === 'true' || name === 'false') {\n return '' + name + '';\n } else if (name === 'i') {\n return '' + name + '';\n } else if (name === 'Infinity') {\n return '' + name + '';\n } else if (name === 'NaN') {\n return '' + name + '';\n } else if (name === 'null') {\n return '' + name + '';\n } else if (name === 'undefined') {\n return '' + name + '';\n }\n return '' + name + '';\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: 'SymbolNode',\n name: this.name\n };\n }\n\n /**\n * Instantiate a SymbolNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"SymbolNode\", name: \"x\"}`,\n * where mathjs is optional\n * @returns {SymbolNode}\n */\n static fromJSON(json) {\n return new SymbolNode(json.name);\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toTex(options) {\n var isUnit = false;\n if (typeof math[this.name] === 'undefined' && isValuelessUnit(this.name)) {\n isUnit = true;\n }\n var symbol = toSymbol(this.name, isUnit);\n if (symbol[0] === '\\\\') {\n // no space needed if the symbol starts with '\\'\n return symbol;\n }\n // the space prevents symbols from breaking stuff like '\\cdot'\n // if it's written right before the symbol\n return ' ' + symbol;\n }\n }\n return SymbolNode;\n}, {\n isClass: true,\n isNode: true\n});", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isAccessorNode, isFunctionAssignmentNode, isIndexNode, isNode, isSymbolNode } from '../../utils/is.js';\nimport { escape, format } from '../../utils/string.js';\nimport { hasOwnProperty } from '../../utils/object.js';\nimport { getSafeProperty, getSafeMethod } from '../../utils/customs.js';\nimport { createSubScope } from '../../utils/scope.js';\nimport { factory } from '../../utils/factory.js';\nimport { defaultTemplate, latexFunctions } from '../../utils/latex.js';\nvar name = 'FunctionNode';\nvar dependencies = ['math', 'Node', 'SymbolNode'];\nexport var createFunctionNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var _FunctionNode;\n var {\n math,\n Node,\n SymbolNode\n } = _ref;\n /* format to fixed length */\n var strin = entity => format(entity, {\n truncate: 78\n });\n\n /*\n * Expand a LaTeX template\n *\n * @param {string} template\n * @param {Node} node\n * @param {Object} options\n * @private\n **/\n function expandTemplate(template, node, options) {\n var latex = '';\n\n // Match everything of the form ${identifier} or ${identifier[2]} or $$\n // while submatching identifier and 2 (in the second case)\n var regex = /\\$(?:\\{([a-z_][a-z_0-9]*)(?:\\[([0-9]+)\\])?\\}|\\$)/gi;\n var inputPos = 0; // position in the input string\n var match;\n while ((match = regex.exec(template)) !== null) {\n // go through all matches\n // add everything in front of the match to the LaTeX string\n latex += template.substring(inputPos, match.index);\n inputPos = match.index;\n if (match[0] === '$$') {\n // escaped dollar sign\n latex += '$';\n inputPos++;\n } else {\n // template parameter\n inputPos += match[0].length;\n var property = node[match[1]];\n if (!property) {\n throw new ReferenceError('Template: Property ' + match[1] + ' does not exist.');\n }\n if (match[2] === undefined) {\n // no square brackets\n switch (typeof property) {\n case 'string':\n latex += property;\n break;\n case 'object':\n if (isNode(property)) {\n latex += property.toTex(options);\n } else if (Array.isArray(property)) {\n // make array of Nodes into comma separated list\n latex += property.map(function (arg, index) {\n if (isNode(arg)) {\n return arg.toTex(options);\n }\n throw new TypeError('Template: ' + match[1] + '[' + index + '] is not a Node.');\n }).join(',');\n } else {\n throw new TypeError('Template: ' + match[1] + ' has to be a Node, String or array of Nodes');\n }\n break;\n default:\n throw new TypeError('Template: ' + match[1] + ' has to be a Node, String or array of Nodes');\n }\n } else {\n // with square brackets\n if (isNode(property[match[2]] && property[match[2]])) {\n latex += property[match[2]].toTex(options);\n } else {\n throw new TypeError('Template: ' + match[1] + '[' + match[2] + '] is not a Node.');\n }\n }\n }\n }\n latex += template.slice(inputPos); // append rest of the template\n\n return latex;\n }\n class FunctionNode extends Node {\n /**\n * @constructor FunctionNode\n * @extends {./Node}\n * invoke a list with arguments on a node\n * @param {./Node | string} fn\n * Item resolving to a function on which to invoke\n * the arguments, typically a SymbolNode or AccessorNode\n * @param {./Node[]} args\n */\n constructor(fn, args) {\n super();\n if (typeof fn === 'string') {\n fn = new SymbolNode(fn);\n }\n\n // validate input\n if (!isNode(fn)) throw new TypeError('Node expected as parameter \"fn\"');\n if (!Array.isArray(args) || !args.every(isNode)) {\n throw new TypeError('Array containing Nodes expected for parameter \"args\"');\n }\n this.fn = fn;\n this.args = args || [];\n }\n\n // readonly property name\n get name() {\n return this.fn.name || '';\n }\n get type() {\n return name;\n }\n get isFunctionNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n // compile arguments\n var evalArgs = this.args.map(arg => arg._compile(math, argNames));\n if (isSymbolNode(this.fn)) {\n var _name = this.fn.name;\n if (!argNames[_name]) {\n // we can statically determine whether the function\n // has the rawArgs property\n var fn = _name in math ? getSafeProperty(math, _name) : undefined;\n var isRaw = typeof fn === 'function' && fn.rawArgs === true;\n var resolveFn = scope => {\n var value;\n if (scope.has(_name)) {\n value = scope.get(_name);\n } else if (_name in math) {\n value = getSafeProperty(math, _name);\n } else {\n return FunctionNode.onUndefinedFunction(_name);\n }\n if (typeof value === 'function') {\n return value;\n }\n throw new TypeError(\"'\".concat(_name, \"' is not a function; its value is:\\n \").concat(strin(value)));\n };\n if (isRaw) {\n // pass unevaluated parameters (nodes) to the function\n // \"raw\" evaluation\n var rawArgs = this.args;\n return function evalFunctionNode(scope, args, context) {\n var fn = resolveFn(scope);\n\n // the original function can be overwritten in the scope with a non-rawArgs function\n if (fn.rawArgs === true) {\n return fn(rawArgs, math, createSubScope(scope, args));\n } else {\n // \"regular\" evaluation\n var values = evalArgs.map(evalArg => evalArg(scope, args, context));\n return fn(...values);\n }\n };\n } else {\n // \"regular\" evaluation\n switch (evalArgs.length) {\n case 0:\n return function evalFunctionNode(scope, args, context) {\n var fn = resolveFn(scope);\n return fn();\n };\n case 1:\n return function evalFunctionNode(scope, args, context) {\n var fn = resolveFn(scope);\n var evalArg0 = evalArgs[0];\n return fn(evalArg0(scope, args, context));\n };\n case 2:\n return function evalFunctionNode(scope, args, context) {\n var fn = resolveFn(scope);\n var evalArg0 = evalArgs[0];\n var evalArg1 = evalArgs[1];\n return fn(evalArg0(scope, args, context), evalArg1(scope, args, context));\n };\n default:\n return function evalFunctionNode(scope, args, context) {\n var fn = resolveFn(scope);\n var values = evalArgs.map(evalArg => evalArg(scope, args, context));\n return fn(...values);\n };\n }\n }\n } else {\n // the function symbol is an argName\n var _rawArgs = this.args;\n return function evalFunctionNode(scope, args, context) {\n var fn = getSafeProperty(args, _name);\n if (typeof fn !== 'function') {\n throw new TypeError(\"Argument '\".concat(_name, \"' was not a function; received: \").concat(strin(fn)));\n }\n if (fn.rawArgs) {\n // \"Raw\" evaluation\n return fn(_rawArgs, math, createSubScope(scope, args));\n } else {\n var values = evalArgs.map(evalArg => evalArg(scope, args, context));\n return fn.apply(fn, values);\n }\n };\n }\n } else if (isAccessorNode(this.fn) && isIndexNode(this.fn.index) && this.fn.index.isObjectProperty()) {\n // execute the function with the right context:\n // the object of the AccessorNode\n\n var evalObject = this.fn.object._compile(math, argNames);\n var prop = this.fn.index.getObjectProperty();\n var _rawArgs2 = this.args;\n return function evalFunctionNode(scope, args, context) {\n var object = evalObject(scope, args, context);\n var fn = getSafeMethod(object, prop);\n if (fn !== null && fn !== void 0 && fn.rawArgs) {\n // \"Raw\" evaluation\n return fn(_rawArgs2, math, createSubScope(scope, args));\n } else {\n // \"regular\" evaluation\n var values = evalArgs.map(evalArg => evalArg(scope, args, context));\n return fn.apply(object, values);\n }\n };\n } else {\n // node.fn.isAccessorNode && !node.fn.index.isObjectProperty()\n // we have to dynamically determine whether the function has the\n // rawArgs property\n var fnExpr = this.fn.toString();\n var evalFn = this.fn._compile(math, argNames);\n var _rawArgs3 = this.args;\n return function evalFunctionNode(scope, args, context) {\n var fn = evalFn(scope, args, context);\n if (typeof fn !== 'function') {\n throw new TypeError(\"Expression '\".concat(fnExpr, \"' did not evaluate to a function; value is:\") + \"\\n \".concat(strin(fn)));\n }\n if (fn.rawArgs) {\n // \"Raw\" evaluation\n return fn(_rawArgs3, math, createSubScope(scope, args));\n } else {\n // \"regular\" evaluation\n var values = evalArgs.map(evalArg => evalArg(scope, args, context));\n return fn.apply(fn, values);\n }\n };\n }\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n callback(this.fn, 'fn', this);\n for (var i = 0; i < this.args.length; i++) {\n callback(this.args[i], 'args[' + i + ']', this);\n }\n }\n\n /**\n * Create a new FunctionNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {FunctionNode} Returns a transformed copy of the node\n */\n map(callback) {\n var fn = this._ifNode(callback(this.fn, 'fn', this));\n var args = [];\n for (var i = 0; i < this.args.length; i++) {\n args[i] = this._ifNode(callback(this.args[i], 'args[' + i + ']', this));\n }\n return new FunctionNode(fn, args);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {FunctionNode}\n */\n clone() {\n return new FunctionNode(this.fn, this.args.slice(0));\n }\n\n /**\n * Throws an error 'Undefined function {name}'\n * @param {string} name\n */\n\n /**\n * Get string representation. (wrapper function)\n * This overrides parts of Node's toString function.\n * If callback is an object containing callbacks, it\n * calls the correct callback for the current node,\n * otherwise it falls back to calling Node's toString\n * function.\n *\n * @param {Object} options\n * @return {string} str\n * @override\n */\n toString(options) {\n var customString;\n var name = this.fn.toString(options);\n if (options && typeof options.handler === 'object' && hasOwnProperty(options.handler, name)) {\n // callback is a map of callback functions\n customString = options.handler[name](this, options);\n }\n if (typeof customString !== 'undefined') {\n return customString;\n }\n\n // fall back to Node's toString\n return super.toString(options);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n */\n _toString(options) {\n var args = this.args.map(function (arg) {\n return arg.toString(options);\n });\n var fn = isFunctionAssignmentNode(this.fn) ? '(' + this.fn.toString(options) + ')' : this.fn.toString(options);\n\n // format the arguments like \"add(2, 4.2)\"\n return fn + '(' + args.join(', ') + ')';\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n fn: this.fn,\n args: this.args\n };\n }\n\n /**\n * Instantiate an AssignmentNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"FunctionNode\", fn: ..., args: ...}`,\n * where mathjs is optional\n * @returns {FunctionNode}\n */\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n _toHTML(options) {\n var args = this.args.map(function (arg) {\n return arg.toHTML(options);\n });\n\n // format the arguments like \"add(2, 4.2)\"\n return '' + escape(this.fn) + '(' + args.join(',') + ')';\n }\n\n /**\n * Get LaTeX representation. (wrapper function)\n * This overrides parts of Node's toTex function.\n * If callback is an object containing callbacks, it\n * calls the correct callback for the current node,\n * otherwise it falls back to calling Node's toTex\n * function.\n *\n * @param {Object} options\n * @return {string}\n */\n toTex(options) {\n var customTex;\n if (options && typeof options.handler === 'object' && hasOwnProperty(options.handler, this.name)) {\n // callback is a map of callback functions\n customTex = options.handler[this.name](this, options);\n }\n if (typeof customTex !== 'undefined') {\n return customTex;\n }\n\n // fall back to Node's toTex\n return super.toTex(options);\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n var args = this.args.map(function (arg) {\n // get LaTeX of the arguments\n return arg.toTex(options);\n });\n var latexConverter;\n if (latexFunctions[this.name]) {\n latexConverter = latexFunctions[this.name];\n }\n\n // toTex property on the function itself\n if (math[this.name] && (typeof math[this.name].toTex === 'function' || typeof math[this.name].toTex === 'object' || typeof math[this.name].toTex === 'string')) {\n // .toTex is a callback function\n latexConverter = math[this.name].toTex;\n }\n var customToTex;\n switch (typeof latexConverter) {\n case 'function':\n // a callback function\n customToTex = latexConverter(this, options);\n break;\n case 'string':\n // a template string\n customToTex = expandTemplate(latexConverter, this, options);\n break;\n case 'object':\n // an object with different \"converters\" for different\n // numbers of arguments\n switch (typeof latexConverter[args.length]) {\n case 'function':\n customToTex = latexConverter[args.length](this, options);\n break;\n case 'string':\n customToTex = expandTemplate(latexConverter[args.length], this, options);\n break;\n }\n }\n if (typeof customToTex !== 'undefined') {\n return customToTex;\n }\n return expandTemplate(defaultTemplate, this, options);\n }\n\n /**\n * Get identifier.\n * @return {string}\n */\n getIdentifier() {\n return this.type + ':' + this.name;\n }\n }\n _FunctionNode = FunctionNode;\n _defineProperty(FunctionNode, \"name\", name);\n _defineProperty(FunctionNode, \"onUndefinedFunction\", function (name) {\n throw new Error('Undefined function ' + name);\n });\n _defineProperty(FunctionNode, \"fromJSON\", function (json) {\n return new _FunctionNode(json.fn, json.args);\n });\n return FunctionNode;\n}, {\n isClass: true,\n isNode: true\n});", "import _extends from \"@babel/runtime/helpers/extends\";\nimport { factory } from '../utils/factory.js';\nimport { isAccessorNode, isConstantNode, isFunctionNode, isOperatorNode, isSymbolNode, rule2Node } from '../utils/is.js';\nimport { deepMap } from '../utils/collection.js';\nimport { safeNumberType } from '../utils/number.js';\nimport { hasOwnProperty } from '../utils/object.js';\nvar name = 'parse';\nvar dependencies = ['typed', 'numeric', 'config', 'AccessorNode', 'ArrayNode', 'AssignmentNode', 'BlockNode', 'ConditionalNode', 'ConstantNode', 'FunctionAssignmentNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'ParenthesisNode', 'RangeNode', 'RelationalNode', 'SymbolNode'];\nexport var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n numeric,\n config,\n AccessorNode,\n ArrayNode,\n AssignmentNode,\n BlockNode,\n ConditionalNode,\n ConstantNode,\n FunctionAssignmentNode,\n FunctionNode,\n IndexNode,\n ObjectNode,\n OperatorNode,\n ParenthesisNode,\n RangeNode,\n RelationalNode,\n SymbolNode\n } = _ref;\n /**\n * Parse an expression. Returns a node tree, which can be evaluated by\n * invoking node.evaluate().\n *\n * Note the evaluating arbitrary expressions may involve security risks,\n * see [https://mathjs.org/docs/expressions/security.html](https://mathjs.org/docs/expressions/security.html) for more information.\n *\n * Syntax:\n *\n * math.parse(expr)\n * math.parse(expr, options)\n * math.parse([expr1, expr2, expr3, ...])\n * math.parse([expr1, expr2, expr3, ...], options)\n *\n * Example:\n *\n * const node1 = math.parse('sqrt(3^2 + 4^2)')\n * node1.compile().evaluate() // 5\n *\n * let scope = {a:3, b:4}\n * const node2 = math.parse('a * b') // 12\n * const code2 = node2.compile()\n * code2.evaluate(scope) // 12\n * scope.a = 5\n * code2.evaluate(scope) // 20\n *\n * const nodes = math.parse(['a = 3', 'b = 4', 'a * b'])\n * nodes[2].compile().evaluate() // 12\n *\n * See also:\n *\n * evaluate, compile\n *\n * @param {string | string[] | Matrix} expr Expression to be parsed\n * @param {{nodes: Object}} [options] Available options:\n * - `nodes` a set of custom nodes\n * @return {Node | Node[]} node\n * @throws {Error}\n */\n var parse = typed(name, {\n string: function string(expression) {\n return parseStart(expression, {});\n },\n 'Array | Matrix': function Array__Matrix(expressions) {\n return parseMultiple(expressions, {});\n },\n 'string, Object': function string_Object(expression, options) {\n var extraNodes = options.nodes !== undefined ? options.nodes : {};\n return parseStart(expression, extraNodes);\n },\n 'Array | Matrix, Object': parseMultiple\n });\n function parseMultiple(expressions) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var extraNodes = options.nodes !== undefined ? options.nodes : {};\n\n // parse an array or matrix with expressions\n return deepMap(expressions, function (elem) {\n if (typeof elem !== 'string') throw new TypeError('String expected');\n return parseStart(elem, extraNodes);\n });\n }\n\n // token types enumeration\n var TOKENTYPE = {\n NULL: 0,\n DELIMITER: 1,\n NUMBER: 2,\n SYMBOL: 3,\n UNKNOWN: 4\n };\n\n // map with all delimiters\n var DELIMITERS = {\n ',': true,\n '(': true,\n ')': true,\n '[': true,\n ']': true,\n '{': true,\n '}': true,\n '\"': true,\n '\\'': true,\n ';': true,\n '+': true,\n '-': true,\n '*': true,\n '.*': true,\n '/': true,\n './': true,\n '%': true,\n '^': true,\n '.^': true,\n '~': true,\n '!': true,\n '&': true,\n '|': true,\n '^|': true,\n '=': true,\n ':': true,\n '?': true,\n '==': true,\n '!=': true,\n '<': true,\n '>': true,\n '<=': true,\n '>=': true,\n '<<': true,\n '>>': true,\n '>>>': true\n };\n\n // map with all named delimiters\n var NAMED_DELIMITERS = {\n mod: true,\n to: true,\n in: true,\n and: true,\n xor: true,\n or: true,\n not: true\n };\n var CONSTANTS = {\n true: true,\n false: false,\n null: null,\n undefined\n };\n var NUMERIC_CONSTANTS = ['NaN', 'Infinity'];\n var ESCAPE_CHARACTERS = {\n '\"': '\"',\n \"'\": \"'\",\n '\\\\': '\\\\',\n '/': '/',\n b: '\\b',\n f: '\\f',\n n: '\\n',\n r: '\\r',\n t: '\\t'\n // note that \\u is handled separately in parseStringToken()\n };\n function initialState() {\n return {\n extraNodes: {},\n // current extra nodes, must be careful not to mutate\n expression: '',\n // current expression\n comment: '',\n // last parsed comment\n index: 0,\n // current index in expr\n token: '',\n // current token\n tokenType: TOKENTYPE.NULL,\n // type of the token\n nestingLevel: 0,\n // level of nesting inside parameters, used to ignore newline characters\n conditionalLevel: null // when a conditional is being parsed, the level of the conditional is stored here\n };\n }\n\n /**\n * View upto `length` characters of the expression starting at the current character.\n *\n * @param {Object} state\n * @param {number} [length=1] Number of characters to view\n * @returns {string}\n * @private\n */\n function currentString(state, length) {\n return state.expression.substr(state.index, length);\n }\n\n /**\n * View the current character. Returns '' if end of expression is reached.\n *\n * @param {Object} state\n * @returns {string}\n * @private\n */\n function currentCharacter(state) {\n return currentString(state, 1);\n }\n\n /**\n * Get the next character from the expression.\n * The character is stored into the char c. If the end of the expression is\n * reached, the function puts an empty string in c.\n * @private\n */\n function next(state) {\n state.index++;\n }\n\n /**\n * Preview the previous character from the expression.\n * @return {string} cNext\n * @private\n */\n function prevCharacter(state) {\n return state.expression.charAt(state.index - 1);\n }\n\n /**\n * Preview the next character from the expression.\n * @return {string} cNext\n * @private\n */\n function nextCharacter(state) {\n return state.expression.charAt(state.index + 1);\n }\n\n /**\n * Get next token in the current string expr.\n * The token and token type are available as token and tokenType\n * @private\n */\n function getToken(state) {\n state.tokenType = TOKENTYPE.NULL;\n state.token = '';\n state.comment = '';\n\n // skip over ignored characters:\n while (true) {\n // comments:\n if (currentCharacter(state) === '#') {\n while (currentCharacter(state) !== '\\n' && currentCharacter(state) !== '') {\n state.comment += currentCharacter(state);\n next(state);\n }\n }\n // whitespace: space, tab, and newline when inside parameters\n if (parse.isWhitespace(currentCharacter(state), state.nestingLevel)) {\n next(state);\n } else {\n break;\n }\n }\n\n // check for end of expression\n if (currentCharacter(state) === '') {\n // token is still empty\n state.tokenType = TOKENTYPE.DELIMITER;\n return;\n }\n\n // check for new line character\n if (currentCharacter(state) === '\\n' && !state.nestingLevel) {\n state.tokenType = TOKENTYPE.DELIMITER;\n state.token = currentCharacter(state);\n next(state);\n return;\n }\n var c1 = currentCharacter(state);\n var c2 = currentString(state, 2);\n var c3 = currentString(state, 3);\n if (c3.length === 3 && DELIMITERS[c3]) {\n state.tokenType = TOKENTYPE.DELIMITER;\n state.token = c3;\n next(state);\n next(state);\n next(state);\n return;\n }\n\n // check for delimiters consisting of 2 characters\n if (c2.length === 2 && DELIMITERS[c2]) {\n state.tokenType = TOKENTYPE.DELIMITER;\n state.token = c2;\n next(state);\n next(state);\n return;\n }\n\n // check for delimiters consisting of 1 character\n if (DELIMITERS[c1]) {\n state.tokenType = TOKENTYPE.DELIMITER;\n state.token = c1;\n next(state);\n return;\n }\n\n // check for a number\n if (parse.isDigitDot(c1)) {\n state.tokenType = TOKENTYPE.NUMBER;\n\n // check for binary, octal, or hex\n var _c = currentString(state, 2);\n if (_c === '0b' || _c === '0o' || _c === '0x') {\n state.token += currentCharacter(state);\n next(state);\n state.token += currentCharacter(state);\n next(state);\n while (parse.isHexDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n if (currentCharacter(state) === '.') {\n // this number has a radix point\n state.token += '.';\n next(state);\n // get the digits after the radix\n while (parse.isHexDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n } else if (currentCharacter(state) === 'i') {\n // this number has a word size suffix\n state.token += 'i';\n next(state);\n // get the word size\n while (parse.isDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n }\n return;\n }\n\n // get number, can have a single dot\n if (currentCharacter(state) === '.') {\n state.token += currentCharacter(state);\n next(state);\n if (!parse.isDigit(currentCharacter(state))) {\n // this is no number, it is just a dot (can be dot notation)\n state.tokenType = TOKENTYPE.DELIMITER;\n return;\n }\n } else {\n while (parse.isDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n if (parse.isDecimalMark(currentCharacter(state), nextCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n }\n while (parse.isDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n // check for exponential notation like \"2.3e-4\", \"1.23e50\" or \"2e+4\"\n if (currentCharacter(state) === 'E' || currentCharacter(state) === 'e') {\n if (parse.isDigit(nextCharacter(state)) || nextCharacter(state) === '-' || nextCharacter(state) === '+') {\n state.token += currentCharacter(state);\n next(state);\n if (currentCharacter(state) === '+' || currentCharacter(state) === '-') {\n state.token += currentCharacter(state);\n next(state);\n }\n // Scientific notation MUST be followed by an exponent\n if (!parse.isDigit(currentCharacter(state))) {\n throw createSyntaxError(state, 'Digit expected, got \"' + currentCharacter(state) + '\"');\n }\n while (parse.isDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n if (parse.isDecimalMark(currentCharacter(state), nextCharacter(state))) {\n throw createSyntaxError(state, 'Digit expected, got \"' + currentCharacter(state) + '\"');\n }\n } else if (nextCharacter(state) === '.') {\n next(state);\n throw createSyntaxError(state, 'Digit expected, got \"' + currentCharacter(state) + '\"');\n }\n }\n return;\n }\n\n // check for variables, functions, named operators\n if (parse.isAlpha(currentCharacter(state), prevCharacter(state), nextCharacter(state))) {\n while (parse.isAlpha(currentCharacter(state), prevCharacter(state), nextCharacter(state)) || parse.isDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n if (hasOwnProperty(NAMED_DELIMITERS, state.token)) {\n state.tokenType = TOKENTYPE.DELIMITER;\n } else {\n state.tokenType = TOKENTYPE.SYMBOL;\n }\n return;\n }\n\n // something unknown is found, wrong characters -> a syntax error\n state.tokenType = TOKENTYPE.UNKNOWN;\n while (currentCharacter(state) !== '') {\n state.token += currentCharacter(state);\n next(state);\n }\n throw createSyntaxError(state, 'Syntax error in part \"' + state.token + '\"');\n }\n\n /**\n * Get next token and skip newline tokens\n */\n function getTokenSkipNewline(state) {\n do {\n getToken(state);\n } while (state.token === '\\n'); // eslint-disable-line no-unmodified-loop-condition\n }\n\n /**\n * Open parameters.\n * New line characters will be ignored until closeParams(state) is called\n */\n function openParams(state) {\n state.nestingLevel++;\n }\n\n /**\n * Close parameters.\n * New line characters will no longer be ignored\n */\n function closeParams(state) {\n state.nestingLevel--;\n }\n\n /**\n * Checks whether the current character `c` is a valid alpha character:\n *\n * - A latin letter (upper or lower case) Ascii: a-z, A-Z\n * - An underscore Ascii: _\n * - A dollar sign Ascii: $\n * - A latin letter with accents Unicode: \\u00C0 - \\u02AF\n * - A greek letter Unicode: \\u0370 - \\u03FF\n * - A mathematical alphanumeric symbol Unicode: \\u{1D400} - \\u{1D7FF} excluding invalid code points\n *\n * The previous and next characters are needed to determine whether\n * this character is part of a unicode surrogate pair.\n *\n * @param {string} c Current character in the expression\n * @param {string} cPrev Previous character\n * @param {string} cNext Next character\n * @return {boolean}\n */\n parse.isAlpha = function isAlpha(c, cPrev, cNext) {\n return parse.isValidLatinOrGreek(c) || parse.isValidMathSymbol(c, cNext) || parse.isValidMathSymbol(cPrev, c);\n };\n\n /**\n * Test whether a character is a valid latin, greek, or letter-like character\n * @param {string} c\n * @return {boolean}\n */\n parse.isValidLatinOrGreek = function isValidLatinOrGreek(c) {\n return /^[a-zA-Z_$\\u00C0-\\u02AF\\u0370-\\u03FF\\u2100-\\u214F]$/.test(c);\n };\n\n /**\n * Test whether two given 16 bit characters form a surrogate pair of a\n * unicode math symbol.\n *\n * https://unicode-table.com/en/\n * https://www.wikiwand.com/en/Mathematical_operators_and_symbols_in_Unicode\n *\n * Note: In ES6 will be unicode aware:\n * https://stackoverflow.com/questions/280712/javascript-unicode-regexes\n * https://mathiasbynens.be/notes/es6-unicode-regex\n *\n * @param {string} high\n * @param {string} low\n * @return {boolean}\n */\n parse.isValidMathSymbol = function isValidMathSymbol(high, low) {\n return /^[\\uD835]$/.test(high) && /^[\\uDC00-\\uDFFF]$/.test(low) && /^[^\\uDC55\\uDC9D\\uDCA0\\uDCA1\\uDCA3\\uDCA4\\uDCA7\\uDCA8\\uDCAD\\uDCBA\\uDCBC\\uDCC4\\uDD06\\uDD0B\\uDD0C\\uDD15\\uDD1D\\uDD3A\\uDD3F\\uDD45\\uDD47-\\uDD49\\uDD51\\uDEA6\\uDEA7\\uDFCC\\uDFCD]$/.test(low);\n };\n\n /**\n * Check whether given character c is a white space character: space, tab, or enter\n * @param {string} c\n * @param {number} nestingLevel\n * @return {boolean}\n */\n parse.isWhitespace = function isWhitespace(c, nestingLevel) {\n // TODO: also take '\\r' carriage return as newline? Or does that give problems on mac?\n return c === ' ' || c === '\\t' || c === '\\n' && nestingLevel > 0;\n };\n\n /**\n * Test whether the character c is a decimal mark (dot).\n * This is the case when it's not the start of a delimiter '.*', './', or '.^'\n * @param {string} c\n * @param {string} cNext\n * @return {boolean}\n */\n parse.isDecimalMark = function isDecimalMark(c, cNext) {\n return c === '.' && cNext !== '/' && cNext !== '*' && cNext !== '^';\n };\n\n /**\n * checks if the given char c is a digit or dot\n * @param {string} c a string with one character\n * @return {boolean}\n */\n parse.isDigitDot = function isDigitDot(c) {\n return c >= '0' && c <= '9' || c === '.';\n };\n\n /**\n * checks if the given char c is a digit\n * @param {string} c a string with one character\n * @return {boolean}\n */\n parse.isDigit = function isDigit(c) {\n return c >= '0' && c <= '9';\n };\n\n /**\n * checks if the given char c is a hex digit\n * @param {string} c a string with one character\n * @return {boolean}\n */\n parse.isHexDigit = function isHexDigit(c) {\n return c >= '0' && c <= '9' || c >= 'a' && c <= 'f' || c >= 'A' && c <= 'F';\n };\n\n /**\n * Start of the parse levels below, in order of precedence\n * @return {Node} node\n * @private\n */\n function parseStart(expression, extraNodes) {\n var state = initialState();\n _extends(state, {\n expression,\n extraNodes\n });\n getToken(state);\n var node = parseBlock(state);\n\n // check for garbage at the end of the expression\n // an expression ends with a empty character '' and tokenType DELIMITER\n if (state.token !== '') {\n if (state.tokenType === TOKENTYPE.DELIMITER) {\n // user entered a not existing operator like \"//\"\n\n // TODO: give hints for aliases, for example with \"<>\" give as hint \" did you mean !== ?\"\n throw createError(state, 'Unexpected operator ' + state.token);\n } else {\n throw createSyntaxError(state, 'Unexpected part \"' + state.token + '\"');\n }\n }\n return node;\n }\n\n /**\n * Parse a block with expressions. Expressions can be separated by a newline\n * character '\\n', or by a semicolon ';'. In case of a semicolon, no output\n * of the preceding line is returned.\n * @return {Node} node\n * @private\n */\n function parseBlock(state) {\n var node;\n var blocks = [];\n var visible;\n if (state.token !== '' && state.token !== '\\n' && state.token !== ';') {\n node = parseAssignment(state);\n if (state.comment) {\n node.comment = state.comment;\n }\n }\n\n // TODO: simplify this loop\n while (state.token === '\\n' || state.token === ';') {\n // eslint-disable-line no-unmodified-loop-condition\n if (blocks.length === 0 && node) {\n visible = state.token !== ';';\n blocks.push({\n node,\n visible\n });\n }\n getToken(state);\n if (state.token !== '\\n' && state.token !== ';' && state.token !== '') {\n node = parseAssignment(state);\n if (state.comment) {\n node.comment = state.comment;\n }\n visible = state.token !== ';';\n blocks.push({\n node,\n visible\n });\n }\n }\n if (blocks.length > 0) {\n return new BlockNode(blocks);\n } else {\n if (!node) {\n node = new ConstantNode(undefined);\n if (state.comment) {\n node.comment = state.comment;\n }\n }\n return node;\n }\n }\n\n /**\n * Assignment of a function or variable,\n * - can be a variable like 'a=2.3'\n * - or a updating an existing variable like 'matrix(2,3:5)=[6,7,8]'\n * - defining a function like 'f(x) = x^2'\n * @return {Node} node\n * @private\n */\n function parseAssignment(state) {\n var name, args, value, valid;\n var node = parseConditional(state);\n if (state.token === '=') {\n if (isSymbolNode(node)) {\n // parse a variable assignment like 'a = 2/3'\n name = node.name;\n getTokenSkipNewline(state);\n value = parseAssignment(state);\n return new AssignmentNode(new SymbolNode(name), value);\n } else if (isAccessorNode(node)) {\n // parse a matrix subset assignment like 'A[1,2] = 4'\n getTokenSkipNewline(state);\n value = parseAssignment(state);\n return new AssignmentNode(node.object, node.index, value);\n } else if (isFunctionNode(node) && isSymbolNode(node.fn)) {\n // parse function assignment like 'f(x) = x^2'\n valid = true;\n args = [];\n name = node.name;\n node.args.forEach(function (arg, index) {\n if (isSymbolNode(arg)) {\n args[index] = arg.name;\n } else {\n valid = false;\n }\n });\n if (valid) {\n getTokenSkipNewline(state);\n value = parseAssignment(state);\n return new FunctionAssignmentNode(name, args, value);\n }\n }\n throw createSyntaxError(state, 'Invalid left hand side of assignment operator =');\n }\n return node;\n }\n\n /**\n * conditional operation\n *\n * condition ? truePart : falsePart\n *\n * Note: conditional operator is right-associative\n *\n * @return {Node} node\n * @private\n */\n function parseConditional(state) {\n var node = parseLogicalOr(state);\n while (state.token === '?') {\n // eslint-disable-line no-unmodified-loop-condition\n // set a conditional level, the range operator will be ignored as long\n // as conditionalLevel === state.nestingLevel.\n var prev = state.conditionalLevel;\n state.conditionalLevel = state.nestingLevel;\n getTokenSkipNewline(state);\n var condition = node;\n var trueExpr = parseAssignment(state);\n if (state.token !== ':') throw createSyntaxError(state, 'False part of conditional expression expected');\n state.conditionalLevel = null;\n getTokenSkipNewline(state);\n var falseExpr = parseAssignment(state); // Note: check for conditional operator again, right associativity\n\n node = new ConditionalNode(condition, trueExpr, falseExpr);\n\n // restore the previous conditional level\n state.conditionalLevel = prev;\n }\n return node;\n }\n\n /**\n * logical or, 'x or y'\n * @return {Node} node\n * @private\n */\n function parseLogicalOr(state) {\n var node = parseLogicalXor(state);\n while (state.token === 'or') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('or', 'or', [node, parseLogicalXor(state)]);\n }\n return node;\n }\n\n /**\n * logical exclusive or, 'x xor y'\n * @return {Node} node\n * @private\n */\n function parseLogicalXor(state) {\n var node = parseLogicalAnd(state);\n while (state.token === 'xor') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('xor', 'xor', [node, parseLogicalAnd(state)]);\n }\n return node;\n }\n\n /**\n * logical and, 'x and y'\n * @return {Node} node\n * @private\n */\n function parseLogicalAnd(state) {\n var node = parseBitwiseOr(state);\n while (state.token === 'and') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('and', 'and', [node, parseBitwiseOr(state)]);\n }\n return node;\n }\n\n /**\n * bitwise or, 'x | y'\n * @return {Node} node\n * @private\n */\n function parseBitwiseOr(state) {\n var node = parseBitwiseXor(state);\n while (state.token === '|') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('|', 'bitOr', [node, parseBitwiseXor(state)]);\n }\n return node;\n }\n\n /**\n * bitwise exclusive or (xor), 'x ^| y'\n * @return {Node} node\n * @private\n */\n function parseBitwiseXor(state) {\n var node = parseBitwiseAnd(state);\n while (state.token === '^|') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('^|', 'bitXor', [node, parseBitwiseAnd(state)]);\n }\n return node;\n }\n\n /**\n * bitwise and, 'x & y'\n * @return {Node} node\n * @private\n */\n function parseBitwiseAnd(state) {\n var node = parseRelational(state);\n while (state.token === '&') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('&', 'bitAnd', [node, parseRelational(state)]);\n }\n return node;\n }\n\n /**\n * Parse a chained conditional, like 'a > b >= c'\n * @return {Node} node\n */\n function parseRelational(state) {\n var params = [parseShift(state)];\n var conditionals = [];\n var operators = {\n '==': 'equal',\n '!=': 'unequal',\n '<': 'smaller',\n '>': 'larger',\n '<=': 'smallerEq',\n '>=': 'largerEq'\n };\n while (hasOwnProperty(operators, state.token)) {\n // eslint-disable-line no-unmodified-loop-condition\n var cond = {\n name: state.token,\n fn: operators[state.token]\n };\n conditionals.push(cond);\n getTokenSkipNewline(state);\n params.push(parseShift(state));\n }\n if (params.length === 1) {\n return params[0];\n } else if (params.length === 2) {\n return new OperatorNode(conditionals[0].name, conditionals[0].fn, params);\n } else {\n return new RelationalNode(conditionals.map(c => c.fn), params);\n }\n }\n\n /**\n * Bitwise left shift, bitwise right arithmetic shift, bitwise right logical shift\n * @return {Node} node\n * @private\n */\n function parseShift(state) {\n var node, name, fn, params;\n node = parseConversion(state);\n var operators = {\n '<<': 'leftShift',\n '>>': 'rightArithShift',\n '>>>': 'rightLogShift'\n };\n while (hasOwnProperty(operators, state.token)) {\n name = state.token;\n fn = operators[name];\n getTokenSkipNewline(state);\n params = [node, parseConversion(state)];\n node = new OperatorNode(name, fn, params);\n }\n return node;\n }\n\n /**\n * conversion operators 'to' and 'in'\n * @return {Node} node\n * @private\n */\n function parseConversion(state) {\n var node, name, fn, params;\n node = parseRange(state);\n var operators = {\n to: 'to',\n in: 'to' // alias of 'to'\n };\n while (hasOwnProperty(operators, state.token)) {\n name = state.token;\n fn = operators[name];\n getTokenSkipNewline(state);\n if (name === 'in' && state.token === '') {\n // end of expression -> this is the unit 'in' ('inch')\n node = new OperatorNode('*', 'multiply', [node, new SymbolNode('in')], true);\n } else {\n // operator 'a to b' or 'a in b'\n params = [node, parseRange(state)];\n node = new OperatorNode(name, fn, params);\n }\n }\n return node;\n }\n\n /**\n * parse range, \"start:end\", \"start:step:end\", \":\", \"start:\", \":end\", etc\n * @return {Node} node\n * @private\n */\n function parseRange(state) {\n var node;\n var params = [];\n if (state.token === ':') {\n // implicit start=1 (one-based)\n node = new ConstantNode(1);\n } else {\n // explicit start\n node = parseAddSubtract(state);\n }\n if (state.token === ':' && state.conditionalLevel !== state.nestingLevel) {\n // we ignore the range operator when a conditional operator is being processed on the same level\n params.push(node);\n\n // parse step and end\n while (state.token === ':' && params.length < 3) {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n if (state.token === ')' || state.token === ']' || state.token === ',' || state.token === '') {\n // implicit end\n params.push(new SymbolNode('end'));\n } else {\n // explicit end\n params.push(parseAddSubtract(state));\n }\n }\n if (params.length === 3) {\n // params = [start, step, end]\n node = new RangeNode(params[0], params[2], params[1]); // start, end, step\n } else {\n // length === 2\n // params = [start, end]\n node = new RangeNode(params[0], params[1]); // start, end\n }\n }\n return node;\n }\n\n /**\n * add or subtract\n * @return {Node} node\n * @private\n */\n function parseAddSubtract(state) {\n var node, name, fn, params;\n node = parseMultiplyDivide(state);\n var operators = {\n '+': 'add',\n '-': 'subtract'\n };\n while (hasOwnProperty(operators, state.token)) {\n name = state.token;\n fn = operators[name];\n getTokenSkipNewline(state);\n var rightNode = parseMultiplyDivide(state);\n if (rightNode.isPercentage) {\n params = [node, new OperatorNode('*', 'multiply', [node, rightNode])];\n } else {\n params = [node, rightNode];\n }\n node = new OperatorNode(name, fn, params);\n }\n return node;\n }\n\n /**\n * multiply, divide\n * @return {Node} node\n * @private\n */\n function parseMultiplyDivide(state) {\n var node, last, name, fn;\n node = parseImplicitMultiplication(state);\n last = node;\n var operators = {\n '*': 'multiply',\n '.*': 'dotMultiply',\n '/': 'divide',\n './': 'dotDivide'\n };\n while (true) {\n if (hasOwnProperty(operators, state.token)) {\n // explicit operators\n name = state.token;\n fn = operators[name];\n getTokenSkipNewline(state);\n last = parseImplicitMultiplication(state);\n node = new OperatorNode(name, fn, [node, last]);\n } else {\n break;\n }\n }\n return node;\n }\n\n /**\n * implicit multiplication\n * @return {Node} node\n * @private\n */\n function parseImplicitMultiplication(state) {\n var node, last;\n node = parseRule2(state);\n last = node;\n while (true) {\n if (state.tokenType === TOKENTYPE.SYMBOL || state.token === 'in' && isConstantNode(node) || state.token === 'in' && isOperatorNode(node) && node.fn === 'unaryMinus' && isConstantNode(node.args[0]) || state.tokenType === TOKENTYPE.NUMBER && !isConstantNode(last) && (!isOperatorNode(last) || last.op === '!') || state.token === '(') {\n // parse implicit multiplication\n //\n // symbol: implicit multiplication like '2a', '(2+3)a', 'a b'\n // number: implicit multiplication like '(2+3)2'\n // parenthesis: implicit multiplication like '2(3+4)', '(3+4)(1+2)'\n last = parseRule2(state);\n node = new OperatorNode('*', 'multiply', [node, last], true /* implicit */);\n } else {\n break;\n }\n }\n return node;\n }\n\n /**\n * Infamous \"rule 2\" as described in https://github.com/josdejong/mathjs/issues/792#issuecomment-361065370\n * And as amended in https://github.com/josdejong/mathjs/issues/2370#issuecomment-1054052164\n * Explicit division gets higher precedence than implicit multiplication\n * when the division matches this pattern:\n * [unaryPrefixOp]?[number] / [number] [symbol]\n * @return {Node} node\n * @private\n */\n function parseRule2(state) {\n var node = parseModulusPercentage(state);\n var last = node;\n var tokenStates = [];\n while (true) {\n // Match the \"number /\" part of the pattern \"number / number symbol\"\n if (state.token === '/' && rule2Node(last)) {\n // Look ahead to see if the next token is a number\n tokenStates.push(_extends({}, state));\n getTokenSkipNewline(state);\n\n // Match the \"number / number\" part of the pattern\n if (state.tokenType === TOKENTYPE.NUMBER) {\n // Look ahead again\n tokenStates.push(_extends({}, state));\n getTokenSkipNewline(state);\n\n // Match the \"symbol\" part of the pattern, or a left parenthesis\n if (state.tokenType === TOKENTYPE.SYMBOL || state.token === '(') {\n // We've matched the pattern \"number / number symbol\".\n // Rewind once and build the \"number / number\" node; the symbol will be consumed later\n _extends(state, tokenStates.pop());\n tokenStates.pop();\n last = parseModulusPercentage(state);\n node = new OperatorNode('/', 'divide', [node, last]);\n } else {\n // Not a match, so rewind\n tokenStates.pop();\n _extends(state, tokenStates.pop());\n break;\n }\n } else {\n // Not a match, so rewind\n _extends(state, tokenStates.pop());\n break;\n }\n } else {\n break;\n }\n }\n return node;\n }\n\n /**\n * modulus and percentage\n * @return {Node} node\n * @private\n */\n function parseModulusPercentage(state) {\n var node, name, fn, params;\n node = parseUnary(state);\n var operators = {\n '%': 'mod',\n mod: 'mod'\n };\n while (hasOwnProperty(operators, state.token)) {\n name = state.token;\n fn = operators[name];\n getTokenSkipNewline(state);\n if (name === '%' && state.tokenType === TOKENTYPE.DELIMITER && state.token !== '(') {\n // If the expression contains only %, then treat that as /100\n node = new OperatorNode('/', 'divide', [node, new ConstantNode(100)], false, true);\n } else {\n params = [node, parseUnary(state)];\n node = new OperatorNode(name, fn, params);\n }\n }\n return node;\n }\n\n /**\n * Unary plus and minus, and logical and bitwise not\n * @return {Node} node\n * @private\n */\n function parseUnary(state) {\n var name, params, fn;\n var operators = {\n '-': 'unaryMinus',\n '+': 'unaryPlus',\n '~': 'bitNot',\n not: 'not'\n };\n if (hasOwnProperty(operators, state.token)) {\n fn = operators[state.token];\n name = state.token;\n getTokenSkipNewline(state);\n params = [parseUnary(state)];\n return new OperatorNode(name, fn, params);\n }\n return parsePow(state);\n }\n\n /**\n * power\n * Note: power operator is right associative\n * @return {Node} node\n * @private\n */\n function parsePow(state) {\n var node, name, fn, params;\n node = parseLeftHandOperators(state);\n if (state.token === '^' || state.token === '.^') {\n name = state.token;\n fn = name === '^' ? 'pow' : 'dotPow';\n getTokenSkipNewline(state);\n params = [node, parseUnary(state)]; // Go back to unary, we can have '2^-3'\n node = new OperatorNode(name, fn, params);\n }\n return node;\n }\n\n /**\n * Left hand operators: factorial x!, ctranspose x'\n * @return {Node} node\n * @private\n */\n function parseLeftHandOperators(state) {\n var node, name, fn, params;\n node = parseCustomNodes(state);\n var operators = {\n '!': 'factorial',\n '\\'': 'ctranspose'\n };\n while (hasOwnProperty(operators, state.token)) {\n name = state.token;\n fn = operators[name];\n getToken(state);\n params = [node];\n node = new OperatorNode(name, fn, params);\n node = parseAccessors(state, node);\n }\n return node;\n }\n\n /**\n * Parse a custom node handler. A node handler can be used to process\n * nodes in a custom way, for example for handling a plot.\n *\n * A handler must be passed as second argument of the parse function.\n * - must extend math.Node\n * - must contain a function _compile(defs: Object) : string\n * - must contain a function find(filter: Object) : Node[]\n * - must contain a function toString() : string\n * - the constructor is called with a single argument containing all parameters\n *\n * For example:\n *\n * nodes = {\n * 'plot': PlotHandler\n * }\n *\n * The constructor of the handler is called as:\n *\n * node = new PlotHandler(params)\n *\n * The handler will be invoked when evaluating an expression like:\n *\n * node = math.parse('plot(sin(x), x)', nodes)\n *\n * @return {Node} node\n * @private\n */\n function parseCustomNodes(state) {\n var params = [];\n if (state.tokenType === TOKENTYPE.SYMBOL && hasOwnProperty(state.extraNodes, state.token)) {\n var CustomNode = state.extraNodes[state.token];\n getToken(state);\n\n // parse parameters\n if (state.token === '(') {\n params = [];\n openParams(state);\n getToken(state);\n if (state.token !== ')') {\n params.push(parseAssignment(state));\n\n // parse a list with parameters\n while (state.token === ',') {\n // eslint-disable-line no-unmodified-loop-condition\n getToken(state);\n params.push(parseAssignment(state));\n }\n }\n if (state.token !== ')') {\n throw createSyntaxError(state, 'Parenthesis ) expected');\n }\n closeParams(state);\n getToken(state);\n }\n\n // create a new custom node\n // noinspection JSValidateTypes\n return new CustomNode(params);\n }\n return parseSymbol(state);\n }\n\n /**\n * parse symbols: functions, variables, constants, units\n * @return {Node} node\n * @private\n */\n function parseSymbol(state) {\n var node, name;\n if (state.tokenType === TOKENTYPE.SYMBOL || state.tokenType === TOKENTYPE.DELIMITER && state.token in NAMED_DELIMITERS) {\n name = state.token;\n getToken(state);\n if (hasOwnProperty(CONSTANTS, name)) {\n // true, false, null, ...\n node = new ConstantNode(CONSTANTS[name]);\n } else if (NUMERIC_CONSTANTS.includes(name)) {\n // NaN, Infinity\n node = new ConstantNode(numeric(name, 'number'));\n } else {\n node = new SymbolNode(name);\n }\n\n // parse function parameters and matrix index\n node = parseAccessors(state, node);\n return node;\n }\n return parseString(state);\n }\n\n /**\n * parse accessors:\n * - function invocation in round brackets (...), for example sqrt(2)\n * - index enclosed in square brackets [...], for example A[2,3]\n * - dot notation for properties, like foo.bar\n * @param {Object} state\n * @param {Node} node Node on which to apply the parameters. If there\n * are no parameters in the expression, the node\n * itself is returned\n * @param {string[]} [types] Filter the types of notations\n * can be ['(', '[', '.']\n * @return {Node} node\n * @private\n */\n function parseAccessors(state, node, types) {\n var params;\n while ((state.token === '(' || state.token === '[' || state.token === '.') && (!types || types.includes(state.token))) {\n // eslint-disable-line no-unmodified-loop-condition\n params = [];\n if (state.token === '(') {\n if (isSymbolNode(node) || isAccessorNode(node)) {\n // function invocation like fn(2, 3) or obj.fn(2, 3)\n openParams(state);\n getToken(state);\n if (state.token !== ')') {\n params.push(parseAssignment(state));\n\n // parse a list with parameters\n while (state.token === ',') {\n // eslint-disable-line no-unmodified-loop-condition\n getToken(state);\n params.push(parseAssignment(state));\n }\n }\n if (state.token !== ')') {\n throw createSyntaxError(state, 'Parenthesis ) expected');\n }\n closeParams(state);\n getToken(state);\n node = new FunctionNode(node, params);\n } else {\n // implicit multiplication like (2+3)(4+5) or sqrt(2)(1+2)\n // don't parse it here but let it be handled by parseImplicitMultiplication\n // with correct precedence\n return node;\n }\n } else if (state.token === '[') {\n // index notation like variable[2, 3]\n openParams(state);\n getToken(state);\n if (state.token !== ']') {\n params.push(parseAssignment(state));\n\n // parse a list with parameters\n while (state.token === ',') {\n // eslint-disable-line no-unmodified-loop-condition\n getToken(state);\n params.push(parseAssignment(state));\n }\n }\n if (state.token !== ']') {\n throw createSyntaxError(state, 'Parenthesis ] expected');\n }\n closeParams(state);\n getToken(state);\n node = new AccessorNode(node, new IndexNode(params));\n } else {\n // dot notation like variable.prop\n getToken(state);\n var isPropertyName = state.tokenType === TOKENTYPE.SYMBOL || state.tokenType === TOKENTYPE.DELIMITER && state.token in NAMED_DELIMITERS;\n if (!isPropertyName) {\n throw createSyntaxError(state, 'Property name expected after dot');\n }\n params.push(new ConstantNode(state.token));\n getToken(state);\n var dotNotation = true;\n node = new AccessorNode(node, new IndexNode(params, dotNotation));\n }\n }\n return node;\n }\n\n /**\n * Parse a single or double quoted string.\n * @return {Node} node\n * @private\n */\n function parseString(state) {\n var node, str;\n if (state.token === '\"' || state.token === \"'\") {\n str = parseStringToken(state, state.token);\n\n // create constant\n node = new ConstantNode(str);\n\n // parse index parameters\n node = parseAccessors(state, node);\n return node;\n }\n return parseMatrix(state);\n }\n\n /**\n * Parse a string surrounded by single or double quotes\n * @param {Object} state\n * @param {\"'\" | \"\\\"\"} quote\n * @return {string}\n */\n function parseStringToken(state, quote) {\n var str = '';\n while (currentCharacter(state) !== '' && currentCharacter(state) !== quote) {\n if (currentCharacter(state) === '\\\\') {\n next(state);\n var char = currentCharacter(state);\n var escapeChar = ESCAPE_CHARACTERS[char];\n if (escapeChar !== undefined) {\n // an escaped control character like \\\" or \\n\n str += escapeChar;\n state.index += 1;\n } else if (char === 'u') {\n // escaped unicode character\n var unicode = state.expression.slice(state.index + 1, state.index + 5);\n if (/^[0-9A-Fa-f]{4}$/.test(unicode)) {\n // test whether the string holds four hexadecimal values\n str += String.fromCharCode(parseInt(unicode, 16));\n state.index += 5;\n } else {\n throw createSyntaxError(state, \"Invalid unicode character \\\\u\".concat(unicode));\n }\n } else {\n throw createSyntaxError(state, \"Bad escape character \\\\\".concat(char));\n }\n } else {\n // any regular character\n str += currentCharacter(state);\n next(state);\n }\n }\n getToken(state);\n if (state.token !== quote) {\n throw createSyntaxError(state, \"End of string \".concat(quote, \" expected\"));\n }\n getToken(state);\n return str;\n }\n\n /**\n * parse the matrix\n * @return {Node} node\n * @private\n */\n function parseMatrix(state) {\n var array, params, rows, cols;\n if (state.token === '[') {\n // matrix [...]\n openParams(state);\n getToken(state);\n if (state.token !== ']') {\n // this is a non-empty matrix\n var row = parseRow(state);\n if (state.token === ';') {\n // 2 dimensional array\n rows = 1;\n params = [row];\n\n // the rows of the matrix are separated by dot-comma's\n while (state.token === ';') {\n // eslint-disable-line no-unmodified-loop-condition\n getToken(state);\n if (state.token !== ']') {\n params[rows] = parseRow(state);\n rows++;\n }\n }\n if (state.token !== ']') {\n throw createSyntaxError(state, 'End of matrix ] expected');\n }\n closeParams(state);\n getToken(state);\n\n // check if the number of columns matches in all rows\n cols = params[0].items.length;\n for (var r = 1; r < rows; r++) {\n if (params[r].items.length !== cols) {\n throw createError(state, 'Column dimensions mismatch ' + '(' + params[r].items.length + ' !== ' + cols + ')');\n }\n }\n array = new ArrayNode(params);\n } else {\n // 1 dimensional vector\n if (state.token !== ']') {\n throw createSyntaxError(state, 'End of matrix ] expected');\n }\n closeParams(state);\n getToken(state);\n array = row;\n }\n } else {\n // this is an empty matrix \"[ ]\"\n closeParams(state);\n getToken(state);\n array = new ArrayNode([]);\n }\n return parseAccessors(state, array);\n }\n return parseObject(state);\n }\n\n /**\n * Parse a single comma-separated row from a matrix, like 'a, b, c'\n * @return {ArrayNode} node\n */\n function parseRow(state) {\n var params = [parseAssignment(state)];\n var len = 1;\n while (state.token === ',') {\n // eslint-disable-line no-unmodified-loop-condition\n getToken(state);\n\n // parse expression\n if (state.token !== ']' && state.token !== ';') {\n params[len] = parseAssignment(state);\n len++;\n }\n }\n return new ArrayNode(params);\n }\n\n /**\n * parse an object, enclosed in angle brackets{...}, for example {value: 2}\n * @return {Node} node\n * @private\n */\n function parseObject(state) {\n if (state.token === '{') {\n openParams(state);\n var key;\n var properties = {};\n do {\n getToken(state);\n if (state.token !== '}') {\n // parse key\n if (state.token === '\"' || state.token === \"'\") {\n key = parseStringToken(state, state.token);\n } else if (state.tokenType === TOKENTYPE.SYMBOL || state.tokenType === TOKENTYPE.DELIMITER && state.token in NAMED_DELIMITERS) {\n key = state.token;\n getToken(state);\n } else {\n throw createSyntaxError(state, 'Symbol or string expected as object key');\n }\n\n // parse key/value separator\n if (state.token !== ':') {\n throw createSyntaxError(state, 'Colon : expected after object key');\n }\n getToken(state);\n\n // parse key\n properties[key] = parseAssignment(state);\n }\n } while (state.token === ','); // eslint-disable-line no-unmodified-loop-condition\n\n if (state.token !== '}') {\n throw createSyntaxError(state, 'Comma , or bracket } expected after object value');\n }\n closeParams(state);\n getToken(state);\n var node = new ObjectNode(properties);\n\n // parse index parameters\n node = parseAccessors(state, node);\n return node;\n }\n return parseNumber(state);\n }\n\n /**\n * parse a number\n * @return {Node} node\n * @private\n */\n function parseNumber(state) {\n var numberStr;\n if (state.tokenType === TOKENTYPE.NUMBER) {\n // this is a number\n numberStr = state.token;\n getToken(state);\n var numericType = safeNumberType(numberStr, config);\n var value = numeric(numberStr, numericType);\n return new ConstantNode(value);\n }\n return parseParentheses(state);\n }\n\n /**\n * parentheses\n * @return {Node} node\n * @private\n */\n function parseParentheses(state) {\n var node;\n\n // check if it is a parenthesized expression\n if (state.token === '(') {\n // parentheses (...)\n openParams(state);\n getToken(state);\n node = parseAssignment(state); // start again\n\n if (state.token !== ')') {\n throw createSyntaxError(state, 'Parenthesis ) expected');\n }\n closeParams(state);\n getToken(state);\n node = new ParenthesisNode(node);\n node = parseAccessors(state, node);\n return node;\n }\n return parseEnd(state);\n }\n\n /**\n * Evaluated when the expression is not yet ended but expected to end\n * @return {Node} res\n * @private\n */\n function parseEnd(state) {\n if (state.token === '') {\n // syntax error or unexpected end of expression\n throw createSyntaxError(state, 'Unexpected end of expression');\n } else {\n throw createSyntaxError(state, 'Value expected');\n }\n }\n\n /**\n * Shortcut for getting the current row value (one based)\n * Returns the line of the currently handled expression\n * @private\n */\n /* TODO: implement keeping track on the row number\n function row () {\n return null\n }\n */\n\n /**\n * Shortcut for getting the current col value (one based)\n * Returns the column (position) where the last state.token starts\n * @private\n */\n function col(state) {\n return state.index - state.token.length + 1;\n }\n\n /**\n * Create an error\n * @param {Object} state\n * @param {string} message\n * @return {SyntaxError} instantiated error\n * @private\n */\n function createSyntaxError(state, message) {\n var c = col(state);\n var error = new SyntaxError(message + ' (char ' + c + ')');\n error.char = c;\n return error;\n }\n\n /**\n * Create an error\n * @param {Object} state\n * @param {string} message\n * @return {Error} instantiated error\n * @private\n */\n function createError(state, message) {\n var c = col(state);\n var error = new SyntaxError(message + ' (char ' + c + ')');\n error.char = c;\n return error;\n }\n\n // Now that we can parse, automatically convert strings to Nodes by parsing\n typed.addConversion({\n from: 'string',\n to: 'Node',\n convert: parse\n });\n return parse;\n});", "import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'compile';\nvar dependencies = ['typed', 'parse'];\nexport var createCompile = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n parse\n } = _ref;\n /**\n * Parse and compile an expression.\n * Returns a an object with a function `evaluate([scope])` to evaluate the\n * compiled expression.\n *\n * Syntax:\n *\n * math.compile(expr) // returns one node\n * math.compile([expr1, expr2, expr3, ...]) // returns an array with nodes\n *\n * Examples:\n *\n * const code1 = math.compile('sqrt(3^2 + 4^2)')\n * code1.evaluate() // 5\n *\n * let scope = {a: 3, b: 4}\n * const code2 = math.compile('a * b') // 12\n * code2.evaluate(scope) // 12\n * scope.a = 5\n * code2.evaluate(scope) // 20\n *\n * const nodes = math.compile(['a = 3', 'b = 4', 'a * b'])\n * nodes[2].evaluate() // 12\n *\n * See also:\n *\n * parse, evaluate\n *\n * @param {string | string[] | Array | Matrix} expr\n * The expression to be compiled\n * @return {{evaluate: Function} | Array.<{evaluate: Function}>} code\n * An object with the compiled expression\n * @throws {Error}\n */\n return typed(name, {\n string: function string(expr) {\n return parse(expr).compile();\n },\n 'Array | Matrix': function Array__Matrix(expr) {\n return deepMap(expr, function (entry) {\n return parse(entry).compile();\n });\n }\n });\n});", "import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { createEmptyMap } from '../../utils/map.js';\nvar name = 'evaluate';\nvar dependencies = ['typed', 'parse'];\nexport var createEvaluate = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n parse\n } = _ref;\n /**\n * Evaluate an expression.\n *\n * The expression parser does not use JavaScript. Its syntax is close\n * to JavaScript but more suited for mathematical expressions.\n * See [https://mathjs.org/docs/expressions/syntax.html](https://mathjs.org/docs/expressions/syntax.html) to learn\n * the syntax and get an overview of the exact differences from JavaScript.\n *\n * Note the evaluating arbitrary expressions may involve security risks,\n * see [https://mathjs.org/docs/expressions/security.html](https://mathjs.org/docs/expressions/security.html) for more information.\n *\n * Syntax:\n *\n * math.evaluate(expr)\n * math.evaluate(expr, scope)\n * math.evaluate([expr1, expr2, expr3, ...])\n * math.evaluate([expr1, expr2, expr3, ...], scope)\n *\n * Example:\n *\n * math.evaluate('(2+3)/4') // 1.25\n * math.evaluate('sqrt(3^2 + 4^2)') // 5\n * math.evaluate('sqrt(-4)') // 2i\n * math.evaluate(['a=3', 'b=4', 'a*b']) // [3, 4, 12]\n *\n * let scope = {a:3, b:4}\n * math.evaluate('a * b', scope) // 12\n *\n * See also:\n *\n * parse, compile\n *\n * @param {string | string[] | Matrix} expr The expression to be evaluated\n * @param {Object} [scope] Scope to read/write variables\n * @return {*} The result of the expression\n * @throws {Error}\n */\n return typed(name, {\n string: function string(expr) {\n var scope = createEmptyMap();\n return parse(expr).compile().evaluate(scope);\n },\n 'string, Map | Object': function string_Map__Object(expr, scope) {\n return parse(expr).compile().evaluate(scope);\n },\n 'Array | Matrix': function Array__Matrix(expr) {\n var scope = createEmptyMap();\n return deepMap(expr, function (entry) {\n return parse(entry).compile().evaluate(scope);\n });\n },\n 'Array | Matrix, Map | Object': function Array__Matrix_Map__Object(expr, scope) {\n return deepMap(expr, function (entry) {\n return parse(entry).compile().evaluate(scope);\n });\n }\n });\n});", "import { factory } from '../utils/factory.js';\nimport { createEmptyMap, toObject } from '../utils/map.js';\nvar name = 'Parser';\nvar dependencies = ['evaluate', 'parse'];\nexport var createParserClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n evaluate,\n parse\n } = _ref;\n /**\n * @constructor Parser\n * Parser contains methods to evaluate or parse expressions, and has a number\n * of convenience methods to get, set, and remove variables from memory. Parser\n * keeps a scope containing variables in memory, which is used for all\n * evaluations.\n *\n * Methods:\n * const result = parser.evaluate(expr) // evaluate an expression\n * const value = parser.get(name) // retrieve a variable from the parser\n * const values = parser.getAll() // retrieve all defined variables\n * parser.set(name, value) // set a variable in the parser\n * parser.remove(name) // clear a variable from the\n * // parsers scope\n * parser.clear() // clear the parsers scope\n *\n * Example usage:\n * const parser = new Parser()\n * // Note: there is a convenience method which can be used instead:\n * // const parser = new math.parser()\n *\n * // evaluate expressions\n * parser.evaluate('sqrt(3^2 + 4^2)') // 5\n * parser.evaluate('sqrt(-4)') // 2i\n * parser.evaluate('2 inch in cm') // 5.08 cm\n * parser.evaluate('cos(45 deg)') // 0.7071067811865476\n *\n * // define variables and functions\n * parser.evaluate('x = 7 / 2') // 3.5\n * parser.evaluate('x + 3') // 6.5\n * parser.evaluate('f(x, y) = x^y') // f(x, y)\n * parser.evaluate('f(2, 3)') // 8\n *\n * // get and set variables and functions\n * const x = parser.get('x') // 3.5\n * const f = parser.get('f') // function\n * const g = f(3, 2) // 9\n * parser.set('h', 500)\n * const i = parser.evaluate('h / 2') // 250\n * parser.set('hello', function (name) {\n * return 'hello, ' + name + '!'\n * })\n * parser.evaluate('hello(\"user\")') // \"hello, user!\"\n *\n * // clear defined functions and variables\n * parser.clear()\n *\n */\n function Parser() {\n if (!(this instanceof Parser)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n Object.defineProperty(this, 'scope', {\n value: createEmptyMap(),\n writable: false\n });\n }\n\n /**\n * Attach type information\n */\n Parser.prototype.type = 'Parser';\n Parser.prototype.isParser = true;\n\n /**\n * Parse and evaluate the given expression\n * @param {string | string[]} expr A string containing an expression,\n * for example \"2+3\", or a list with expressions\n * @return {*} result The result, or undefined when the expression was empty\n * @throws {Error}\n */\n Parser.prototype.evaluate = function (expr) {\n // TODO: validate arguments\n return evaluate(expr, this.scope);\n };\n\n /**\n * Get a variable (a function or variable) by name from the parsers scope.\n * Returns undefined when not found\n * @param {string} name\n * @return {* | undefined} value\n */\n Parser.prototype.get = function (name) {\n // TODO: validate arguments\n if (this.scope.has(name)) {\n return this.scope.get(name);\n }\n };\n\n /**\n * Get a map with all defined variables\n * @return {Object} values\n */\n Parser.prototype.getAll = function () {\n return toObject(this.scope);\n };\n\n /**\n * Get a map with all defined variables\n * @return {Map} values\n */\n Parser.prototype.getAllAsMap = function () {\n return this.scope;\n };\n function isValidVariableName(name) {\n if (name.length === 0) {\n return false;\n }\n for (var i = 0; i < name.length; i++) {\n var cPrev = name.charAt(i - 1);\n var c = name.charAt(i);\n var cNext = name.charAt(i + 1);\n var valid = parse.isAlpha(c, cPrev, cNext) || i > 0 && parse.isDigit(c);\n if (!valid) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Set a symbol (a function or variable) by name from the parsers scope.\n * @param {string} name\n * @param {* | undefined} value\n */\n Parser.prototype.set = function (name, value) {\n if (!isValidVariableName(name)) {\n throw new Error(\"Invalid variable name: '\".concat(name, \"'. Variable names must follow the specified rules.\"));\n }\n this.scope.set(name, value);\n return value;\n };\n\n /**\n * Remove a variable from the parsers scope\n * @param {string} name\n */\n Parser.prototype.remove = function (name) {\n this.scope.delete(name);\n };\n\n /**\n * Clear the scope with variables and functions\n */\n Parser.prototype.clear = function () {\n this.scope.clear();\n };\n return Parser;\n}, {\n isClass: true\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'parser';\nvar dependencies = ['typed', 'Parser'];\nexport var createParser = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Parser\n } = _ref;\n /**\n * Create a parser. The function creates a new `math.Parser` object.\n *\n * Syntax:\n *\n * math.parser()\n *\n * Examples:\n *\n * const parser = new math.parser()\n *\n * // evaluate expressions\n * const a = parser.evaluate('sqrt(3^2 + 4^2)') // 5\n * const b = parser.evaluate('sqrt(-4)') // 2i\n * const c = parser.evaluate('2 inch in cm') // 5.08 cm\n * const d = parser.evaluate('cos(45 deg)') // 0.7071067811865476\n *\n * // define variables and functions\n * parser.evaluate('x = 7 / 2') // 3.5\n * parser.evaluate('x + 3') // 6.5\n * parser.evaluate('f(x, y) = x^y') // f(x, y)\n * parser.evaluate('f(2, 3)') // 8\n *\n * // get and set variables and functions\n * const x = parser.get('x') // 3.5\n * const f = parser.get('f') // function\n * const g = f(3, 2) // 9\n * parser.set('h', 500)\n * const i = parser.evaluate('h / 2') // 250\n * parser.set('hello', function (name) {\n * return 'hello, ' + name + '!'\n * })\n * parser.evaluate('hello(\"user\")') // \"hello, user!\"\n *\n * // clear defined functions and variables\n * parser.clear()\n *\n * See also:\n *\n * evaluate, compile, parse\n *\n * @return {Parser} Parser\n */\n return typed(name, {\n '': function _() {\n return new Parser();\n }\n });\n});", "import { clone } from '../../../utils/object.js';\nimport { factory } from '../../../utils/factory.js';\nvar name = 'lup';\nvar dependencies = ['typed', 'matrix', 'abs', 'addScalar', 'divideScalar', 'multiplyScalar', 'subtractScalar', 'larger', 'equalScalar', 'unaryMinus', 'DenseMatrix', 'SparseMatrix', 'Spa'];\nexport var createLup = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n abs,\n addScalar,\n divideScalar,\n multiplyScalar,\n subtractScalar,\n larger,\n equalScalar,\n unaryMinus,\n DenseMatrix,\n SparseMatrix,\n Spa\n } = _ref;\n /**\n * Calculate the Matrix LU decomposition with partial pivoting. Matrix `A` is decomposed in two matrices (`L`, `U`) and a\n * row permutation vector `p` where `A[p,:] = L * U`\n *\n * Syntax:\n *\n * math.lup(A)\n *\n * Example:\n *\n * const m = [[2, 1], [1, 4]]\n * const r = math.lup(m)\n * // r = {\n * // L: [[1, 0], [0.5, 1]],\n * // U: [[2, 1], [0, 3.5]],\n * // P: [0, 1]\n * // }\n *\n * See also:\n *\n * slu, lsolve, lusolve, usolve\n *\n * @param {Matrix | Array} A A two dimensional matrix or array for which to get the LUP decomposition.\n *\n * @return {{L: Array | Matrix, U: Array | Matrix, P: Array.}} The lower triangular matrix, the upper triangular matrix and the permutation matrix.\n */\n return typed(name, {\n DenseMatrix: function DenseMatrix(m) {\n return _denseLUP(m);\n },\n SparseMatrix: function SparseMatrix(m) {\n return _sparseLUP(m);\n },\n Array: function Array(a) {\n // create dense matrix from array\n var m = matrix(a);\n // lup, use matrix implementation\n var r = _denseLUP(m);\n // result\n return {\n L: r.L.valueOf(),\n U: r.U.valueOf(),\n p: r.p\n };\n }\n });\n function _denseLUP(m) {\n // rows & columns\n var rows = m._size[0];\n var columns = m._size[1];\n // minimum rows and columns\n var n = Math.min(rows, columns);\n // matrix array, clone original data\n var data = clone(m._data);\n // l matrix arrays\n var ldata = [];\n var lsize = [rows, n];\n // u matrix arrays\n var udata = [];\n var usize = [n, columns];\n // vars\n var i, j, k;\n // permutation vector\n var p = [];\n for (i = 0; i < rows; i++) {\n p[i] = i;\n }\n // loop columns\n for (j = 0; j < columns; j++) {\n // skip first column in upper triangular matrix\n if (j > 0) {\n // loop rows\n for (i = 0; i < rows; i++) {\n // min i,j\n var min = Math.min(i, j);\n // v[i, j]\n var s = 0;\n // loop up to min\n for (k = 0; k < min; k++) {\n // s = l[i, k] - data[k, j]\n s = addScalar(s, multiplyScalar(data[i][k], data[k][j]));\n }\n data[i][j] = subtractScalar(data[i][j], s);\n }\n }\n // row with larger value in cvector, row >= j\n var pi = j;\n var pabsv = 0;\n var vjj = 0;\n // loop rows\n for (i = j; i < rows; i++) {\n // data @ i, j\n var v = data[i][j];\n // absolute value\n var absv = abs(v);\n // value is greater than pivote value\n if (larger(absv, pabsv)) {\n // store row\n pi = i;\n // update max value\n pabsv = absv;\n // value @ [j, j]\n vjj = v;\n }\n }\n // swap rows (j <-> pi)\n if (j !== pi) {\n // swap values j <-> pi in p\n p[j] = [p[pi], p[pi] = p[j]][0];\n // swap j <-> pi in data\n DenseMatrix._swapRows(j, pi, data);\n }\n // check column is in lower triangular matrix\n if (j < rows) {\n // loop rows (lower triangular matrix)\n for (i = j + 1; i < rows; i++) {\n // value @ i, j\n var vij = data[i][j];\n if (!equalScalar(vij, 0)) {\n // update data\n data[i][j] = divideScalar(data[i][j], vjj);\n }\n }\n }\n }\n // loop columns\n for (j = 0; j < columns; j++) {\n // loop rows\n for (i = 0; i < rows; i++) {\n // initialize row in arrays\n if (j === 0) {\n // check row exists in upper triangular matrix\n if (i < columns) {\n // U\n udata[i] = [];\n }\n // L\n ldata[i] = [];\n }\n // check we are in the upper triangular matrix\n if (i < j) {\n // check row exists in upper triangular matrix\n if (i < columns) {\n // U\n udata[i][j] = data[i][j];\n }\n // check column exists in lower triangular matrix\n if (j < rows) {\n // L\n ldata[i][j] = 0;\n }\n continue;\n }\n // diagonal value\n if (i === j) {\n // check row exists in upper triangular matrix\n if (i < columns) {\n // U\n udata[i][j] = data[i][j];\n }\n // check column exists in lower triangular matrix\n if (j < rows) {\n // L\n ldata[i][j] = 1;\n }\n continue;\n }\n // check row exists in upper triangular matrix\n if (i < columns) {\n // U\n udata[i][j] = 0;\n }\n // check column exists in lower triangular matrix\n if (j < rows) {\n // L\n ldata[i][j] = data[i][j];\n }\n }\n }\n // l matrix\n var l = new DenseMatrix({\n data: ldata,\n size: lsize\n });\n // u matrix\n var u = new DenseMatrix({\n data: udata,\n size: usize\n });\n // p vector\n var pv = [];\n for (i = 0, n = p.length; i < n; i++) {\n pv[p[i]] = i;\n }\n // return matrices\n return {\n L: l,\n U: u,\n p: pv,\n toString: function toString() {\n return 'L: ' + this.L.toString() + '\\nU: ' + this.U.toString() + '\\nP: ' + this.p;\n }\n };\n }\n function _sparseLUP(m) {\n // rows & columns\n var rows = m._size[0];\n var columns = m._size[1];\n // minimum rows and columns\n var n = Math.min(rows, columns);\n // matrix arrays (will not be modified, thanks to permutation vector)\n var values = m._values;\n var index = m._index;\n var ptr = m._ptr;\n // l matrix arrays\n var lvalues = [];\n var lindex = [];\n var lptr = [];\n var lsize = [rows, n];\n // u matrix arrays\n var uvalues = [];\n var uindex = [];\n var uptr = [];\n var usize = [n, columns];\n // vars\n var i, j, k;\n // permutation vectors, (current index -> original index) and (original index -> current index)\n var pvCo = [];\n var pvOc = [];\n for (i = 0; i < rows; i++) {\n pvCo[i] = i;\n pvOc[i] = i;\n }\n // swap indices in permutation vectors (condition x < y)!\n var swapIndeces = function swapIndeces(x, y) {\n // find pv indeces getting data from x and y\n var kx = pvOc[x];\n var ky = pvOc[y];\n // update permutation vector current -> original\n pvCo[kx] = y;\n pvCo[ky] = x;\n // update permutation vector original -> current\n pvOc[x] = ky;\n pvOc[y] = kx;\n };\n // loop columns\n var _loop = function _loop() {\n // sparse accumulator\n var spa = new Spa();\n // check lower triangular matrix has a value @ column j\n if (j < rows) {\n // update ptr\n lptr.push(lvalues.length);\n // first value in j column for lower triangular matrix\n lvalues.push(1);\n lindex.push(j);\n }\n // update ptr\n uptr.push(uvalues.length);\n // k0 <= k < k1 where k0 = _ptr[j] && k1 = _ptr[j+1]\n var k0 = ptr[j];\n var k1 = ptr[j + 1];\n // copy column j into sparse accumulator\n for (k = k0; k < k1; k++) {\n // row\n i = index[k];\n // copy column values into sparse accumulator (use permutation vector)\n spa.set(pvCo[i], values[k]);\n }\n // skip first column in upper triangular matrix\n if (j > 0) {\n // loop rows in column j (above diagonal)\n spa.forEach(0, j - 1, function (k, vkj) {\n // loop rows in column k (L)\n SparseMatrix._forEachRow(k, lvalues, lindex, lptr, function (i, vik) {\n // check row is below k\n if (i > k) {\n // update spa value\n spa.accumulate(i, unaryMinus(multiplyScalar(vik, vkj)));\n }\n });\n });\n }\n // row with larger value in spa, row >= j\n var pi = j;\n var vjj = spa.get(j);\n var pabsv = abs(vjj);\n // loop values in spa (order by row, below diagonal)\n spa.forEach(j + 1, rows - 1, function (x, v) {\n // absolute value\n var absv = abs(v);\n // value is greater than pivote value\n if (larger(absv, pabsv)) {\n // store row\n pi = x;\n // update max value\n pabsv = absv;\n // value @ [j, j]\n vjj = v;\n }\n });\n // swap rows (j <-> pi)\n if (j !== pi) {\n // swap values j <-> pi in L\n SparseMatrix._swapRows(j, pi, lsize[1], lvalues, lindex, lptr);\n // swap values j <-> pi in U\n SparseMatrix._swapRows(j, pi, usize[1], uvalues, uindex, uptr);\n // swap values in spa\n spa.swap(j, pi);\n // update permutation vector (swap values @ j, pi)\n swapIndeces(j, pi);\n }\n // loop values in spa (order by row)\n spa.forEach(0, rows - 1, function (x, v) {\n // check we are above diagonal\n if (x <= j) {\n // update upper triangular matrix\n uvalues.push(v);\n uindex.push(x);\n } else {\n // update value\n v = divideScalar(v, vjj);\n // check value is non zero\n if (!equalScalar(v, 0)) {\n // update lower triangular matrix\n lvalues.push(v);\n lindex.push(x);\n }\n }\n });\n };\n for (j = 0; j < columns; j++) {\n _loop();\n }\n // update ptrs\n uptr.push(uvalues.length);\n lptr.push(lvalues.length);\n\n // return matrices\n return {\n L: new SparseMatrix({\n values: lvalues,\n index: lindex,\n ptr: lptr,\n size: lsize\n }),\n U: new SparseMatrix({\n values: uvalues,\n index: uindex,\n ptr: uptr,\n size: usize\n }),\n p: pvCo,\n toString: function toString() {\n return 'L: ' + this.L.toString() + '\\nU: ' + this.U.toString() + '\\nP: ' + this.p;\n }\n };\n }\n});", "import _extends from \"@babel/runtime/helpers/extends\";\nimport { factory } from '../../../utils/factory.js';\nvar name = 'qr';\nvar dependencies = ['typed', 'matrix', 'zeros', 'identity', 'isZero', 'equal', 'sign', 'sqrt', 'conj', 'unaryMinus', 'addScalar', 'divideScalar', 'multiplyScalar', 'subtractScalar', 'complex'];\nexport var createQr = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n zeros,\n identity,\n isZero,\n equal,\n sign,\n sqrt,\n conj,\n unaryMinus,\n addScalar,\n divideScalar,\n multiplyScalar,\n subtractScalar,\n complex\n } = _ref;\n /**\n * Calculate the Matrix QR decomposition. Matrix `A` is decomposed in\n * two matrices (`Q`, `R`) where `Q` is an\n * orthogonal matrix and `R` is an upper triangular matrix.\n *\n * Syntax:\n *\n * math.qr(A)\n *\n * Example:\n *\n * const m = [\n * [1, -1, 4],\n * [1, 4, -2],\n * [1, 4, 2],\n * [1, -1, 0]\n * ]\n * const result = math.qr(m)\n * // r = {\n * // Q: [\n * // [0.5, -0.5, 0.5],\n * // [0.5, 0.5, -0.5],\n * // [0.5, 0.5, 0.5],\n * // [0.5, -0.5, -0.5],\n * // ],\n * // R: [\n * // [2, 3, 2],\n * // [0, 5, -2],\n * // [0, 0, 4],\n * // [0, 0, 0]\n * // ]\n * // }\n *\n * See also:\n *\n * lup, lusolve\n *\n * @param {Matrix | Array} A A two dimensional matrix or array\n * for which to get the QR decomposition.\n *\n * @return {{Q: Array | Matrix, R: Array | Matrix}} Q: the orthogonal\n * matrix and R: the upper triangular matrix\n */\n return _extends(typed(name, {\n DenseMatrix: function DenseMatrix(m) {\n return _denseQR(m);\n },\n SparseMatrix: function SparseMatrix(m) {\n return _sparseQR(m);\n },\n Array: function Array(a) {\n // create dense matrix from array\n var m = matrix(a);\n // lup, use matrix implementation\n var r = _denseQR(m);\n // result\n return {\n Q: r.Q.valueOf(),\n R: r.R.valueOf()\n };\n }\n }), {\n _denseQRimpl\n });\n function _denseQRimpl(m) {\n // rows & columns (m x n)\n var rows = m._size[0]; // m\n var cols = m._size[1]; // n\n\n var Q = identity([rows], 'dense');\n var Qdata = Q._data;\n var R = m.clone();\n var Rdata = R._data;\n\n // vars\n var i, j, k;\n var w = zeros([rows], '');\n for (k = 0; k < Math.min(cols, rows); ++k) {\n /*\n * **k-th Household matrix**\n *\n * The matrix I - 2*v*transpose(v)\n * x = first column of A\n * x1 = first element of x\n * alpha = x1 / |x1| * |x|\n * e1 = tranpose([1, 0, 0, ...])\n * u = x - alpha * e1\n * v = u / |u|\n *\n * Household matrix = I - 2 * v * tranpose(v)\n *\n * * Initially Q = I and R = A.\n * * Household matrix is a reflection in a plane normal to v which\n * will zero out all but the top right element in R.\n * * Appplying reflection to both Q and R will not change product.\n * * Repeat this process on the (1,1) minor to get R as an upper\n * triangular matrix.\n * * Reflections leave the magnitude of the columns of Q unchanged\n * so Q remains othoganal.\n *\n */\n\n var pivot = Rdata[k][k];\n var sgn = unaryMinus(equal(pivot, 0) ? 1 : sign(pivot));\n var conjSgn = conj(sgn);\n var alphaSquared = 0;\n for (i = k; i < rows; i++) {\n alphaSquared = addScalar(alphaSquared, multiplyScalar(Rdata[i][k], conj(Rdata[i][k])));\n }\n var alpha = multiplyScalar(sgn, sqrt(alphaSquared));\n if (!isZero(alpha)) {\n // first element in vector u\n var u1 = subtractScalar(pivot, alpha);\n\n // w = v * u1 / |u| (only elements k to (rows-1) are used)\n w[k] = 1;\n for (i = k + 1; i < rows; i++) {\n w[i] = divideScalar(Rdata[i][k], u1);\n }\n\n // tau = - conj(u1 / alpha)\n var tau = unaryMinus(conj(divideScalar(u1, alpha)));\n var s = void 0;\n\n /*\n * tau and w have been choosen so that\n *\n * 2 * v * tranpose(v) = tau * w * tranpose(w)\n */\n\n /*\n * -- calculate R = R - tau * w * tranpose(w) * R --\n * Only do calculation with rows k to (rows-1)\n * Additionally columns 0 to (k-1) will not be changed by this\n * multiplication so do not bother recalculating them\n */\n for (j = k; j < cols; j++) {\n s = 0.0;\n\n // calculate jth element of [tranpose(w) * R]\n for (i = k; i < rows; i++) {\n s = addScalar(s, multiplyScalar(conj(w[i]), Rdata[i][j]));\n }\n\n // calculate the jth element of [tau * transpose(w) * R]\n s = multiplyScalar(s, tau);\n for (i = k; i < rows; i++) {\n Rdata[i][j] = multiplyScalar(subtractScalar(Rdata[i][j], multiplyScalar(w[i], s)), conjSgn);\n }\n }\n /*\n * -- calculate Q = Q - tau * Q * w * transpose(w) --\n * Q is a square matrix (rows x rows)\n * Only do calculation with columns k to (rows-1)\n * Additionally rows 0 to (k-1) will not be changed by this\n * multiplication so do not bother recalculating them\n */\n for (i = 0; i < rows; i++) {\n s = 0.0;\n\n // calculate ith element of [Q * w]\n for (j = k; j < rows; j++) {\n s = addScalar(s, multiplyScalar(Qdata[i][j], w[j]));\n }\n\n // calculate the ith element of [tau * Q * w]\n s = multiplyScalar(s, tau);\n for (j = k; j < rows; ++j) {\n Qdata[i][j] = divideScalar(subtractScalar(Qdata[i][j], multiplyScalar(s, conj(w[j]))), conjSgn);\n }\n }\n }\n }\n\n // return matrices\n return {\n Q,\n R,\n toString: function toString() {\n return 'Q: ' + this.Q.toString() + '\\nR: ' + this.R.toString();\n }\n };\n }\n function _denseQR(m) {\n var ret = _denseQRimpl(m);\n var Rdata = ret.R._data;\n if (m._data.length > 0) {\n var zero = Rdata[0][0].type === 'Complex' ? complex(0) : 0;\n for (var i = 0; i < Rdata.length; ++i) {\n for (var j = 0; j < i && j < (Rdata[0] || []).length; ++j) {\n Rdata[i][j] = zero;\n }\n }\n }\n return ret;\n }\n function _sparseQR(m) {\n throw new Error('qr not implemented for sparse matrices yet');\n }\n});", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\n\n/**\n * Permutes a sparse matrix C = P * A * Q\n *\n * @param {SparseMatrix} a The Matrix A\n * @param {Array} pinv The row permutation vector\n * @param {Array} q The column permutation vector\n * @param {boolean} values Create a pattern matrix (false), values and pattern otherwise\n *\n * @return {Matrix} C = P * A * Q, null on error\n */\nexport function csPermute(a, pinv, q, values) {\n // a arrays\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n var asize = a._size;\n var adt = a._datatype;\n // rows & columns\n var m = asize[0];\n var n = asize[1];\n // c arrays\n var cvalues = values && a._values ? [] : null;\n var cindex = []; // (aptr[n])\n var cptr = []; // (n + 1)\n // initialize vars\n var nz = 0;\n // loop columns\n for (var k = 0; k < n; k++) {\n // column k of C is column q[k] of A\n cptr[k] = nz;\n // apply column permutation\n var j = q ? q[k] : k;\n // loop values in column j of A\n for (var t0 = aptr[j], t1 = aptr[j + 1], t = t0; t < t1; t++) {\n // row i of A is row pinv[i] of C\n var r = pinv ? pinv[aindex[t]] : aindex[t];\n // index\n cindex[nz] = r;\n // check we need to populate values\n if (cvalues) {\n cvalues[nz] = avalues[t];\n }\n // increment number of nonzero elements\n nz++;\n }\n }\n // finalize the last column of C\n cptr[n] = nz;\n // return C matrix\n return a.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [m, n],\n datatype: adt\n });\n}", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\n\n/**\n * Depth-first search and postorder of a tree rooted at node j\n *\n * @param {Number} j The tree node\n * @param {Number} k\n * @param {Array} w The workspace array\n * @param {Number} head The index offset within the workspace for the head array\n * @param {Number} next The index offset within the workspace for the next array\n * @param {Array} post The post ordering array\n * @param {Number} stack The index offset within the workspace for the stack array\n */\nexport function csTdfs(j, k, w, head, next, post, stack) {\n // variables\n var top = 0;\n // place j on the stack\n w[stack] = j;\n // while (stack is not empty)\n while (top >= 0) {\n // p = top of stack\n var p = w[stack + top];\n // i = youngest child of p\n var i = w[head + p];\n if (i === -1) {\n // p has no unordered children left\n top--;\n // node p is the kth postordered node\n post[k++] = p;\n } else {\n // remove i from children of p\n w[head + p] = w[next + i];\n // increment top\n ++top;\n // start dfs on child node i\n w[stack + top] = i;\n }\n }\n return k;\n}", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\nimport { csTdfs } from './csTdfs.js';\n\n/**\n * Post order a tree of forest\n *\n * @param {Array} parent The tree or forest\n * @param {Number} n Number of columns\n */\nexport function csPost(parent, n) {\n // check inputs\n if (!parent) {\n return null;\n }\n // vars\n var k = 0;\n var j;\n // allocate result\n var post = []; // (n)\n // workspace, head: first n entries, next: next n entries, stack: last n entries\n var w = []; // (3 * n)\n var head = 0;\n var next = n;\n var stack = 2 * n;\n // initialize workspace\n for (j = 0; j < n; j++) {\n // empty linked lists\n w[head + j] = -1;\n }\n // traverse nodes in reverse order\n for (j = n - 1; j >= 0; j--) {\n // check j is a root\n if (parent[j] === -1) {\n continue;\n }\n // add j to list of its parent\n w[next + j] = w[head + parent[j]];\n w[head + parent[j]] = j;\n }\n // loop nodes\n for (j = 0; j < n; j++) {\n // skip j if it is not a root\n if (parent[j] !== -1) {\n continue;\n }\n // depth-first search\n k = csTdfs(j, k, w, head, next, post, stack);\n }\n return post;\n}", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\n\n/**\n * Computes the elimination tree of Matrix A (using triu(A)) or the\n * elimination tree of A'A without forming A'A.\n *\n * @param {Matrix} a The A Matrix\n * @param {boolean} ata A value of true the function computes the etree of A'A\n */\nexport function csEtree(a, ata) {\n // check inputs\n if (!a) {\n return null;\n }\n // a arrays\n var aindex = a._index;\n var aptr = a._ptr;\n var asize = a._size;\n // rows & columns\n var m = asize[0];\n var n = asize[1];\n\n // allocate result\n var parent = []; // (n)\n\n // allocate workspace\n var w = []; // (n + (ata ? m : 0))\n var ancestor = 0; // first n entries in w\n var prev = n; // last m entries (ata = true)\n\n var i, inext;\n\n // check we are calculating A'A\n if (ata) {\n // initialize workspace\n for (i = 0; i < m; i++) {\n w[prev + i] = -1;\n }\n }\n // loop columns\n for (var k = 0; k < n; k++) {\n // node k has no parent yet\n parent[k] = -1;\n // nor does k have an ancestor\n w[ancestor + k] = -1;\n // values in column k\n for (var p0 = aptr[k], p1 = aptr[k + 1], p = p0; p < p1; p++) {\n // row\n var r = aindex[p];\n // node\n i = ata ? w[prev + r] : r;\n // traverse from i to k\n for (; i !== -1 && i < k; i = inext) {\n // inext = ancestor of i\n inext = w[ancestor + i];\n // path compression\n w[ancestor + i] = k;\n // check no anc., parent is k\n if (inext === -1) {\n parent[i] = k;\n }\n }\n if (ata) {\n w[prev + r] = k;\n }\n }\n }\n return parent;\n}", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\n\n/**\n * Keeps entries in the matrix when the callback function returns true, removes the entry otherwise\n *\n * @param {Matrix} a The sparse matrix\n * @param {function} callback The callback function, function will be invoked with the following args:\n * - The entry row\n * - The entry column\n * - The entry value\n * - The state parameter\n * @param {any} other The state\n *\n * @return The number of nonzero elements in the matrix\n */\nexport function csFkeep(a, callback, other) {\n // a arrays\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n var asize = a._size;\n // columns\n var n = asize[1];\n // nonzero items\n var nz = 0;\n // loop columns\n for (var j = 0; j < n; j++) {\n // get current location of col j\n var p = aptr[j];\n // record new location of col j\n aptr[j] = nz;\n for (; p < aptr[j + 1]; p++) {\n // check we need to keep this item\n if (callback(aindex[p], j, avalues ? avalues[p] : 1, other)) {\n // keep A(i,j)\n aindex[nz] = aindex[p];\n // check we need to process values (pattern only)\n if (avalues) {\n avalues[nz] = avalues[p];\n }\n // increment nonzero items\n nz++;\n }\n }\n }\n // finalize A\n aptr[n] = nz;\n // trim arrays\n aindex.splice(nz, aindex.length - nz);\n // check we need to process values (pattern only)\n if (avalues) {\n avalues.splice(nz, avalues.length - nz);\n }\n // return number of nonzero items\n return nz;\n}", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\n\n/**\n * This function \"flips\" its input about the integer -1.\n *\n * @param {Number} i The value to flip\n */\nexport function csFlip(i) {\n // flip the value\n return -i - 2;\n}", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\nimport { factory } from '../../../utils/factory.js';\nimport { csFkeep } from './csFkeep.js';\nimport { csFlip } from './csFlip.js';\nimport { csTdfs } from './csTdfs.js';\nvar name = 'csAmd';\nvar dependencies = ['add', 'multiply', 'transpose'];\nexport var createCsAmd = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n add,\n multiply,\n transpose\n } = _ref;\n /**\n * Approximate minimum degree ordering. The minimum degree algorithm is a widely used\n * heuristic for finding a permutation P so that P*A*P' has fewer nonzeros in its factorization\n * than A. It is a gready method that selects the sparsest pivot row and column during the course\n * of a right looking sparse Cholesky factorization.\n *\n * @param {Number} order 0: Natural, 1: Cholesky, 2: LU, 3: QR\n * @param {Matrix} m Sparse Matrix\n */\n return function csAmd(order, a) {\n // check input parameters\n if (!a || order <= 0 || order > 3) {\n return null;\n }\n // a matrix arrays\n var asize = a._size;\n // rows and columns\n var m = asize[0];\n var n = asize[1];\n // initialize vars\n var lemax = 0;\n // dense threshold\n var dense = Math.max(16, 10 * Math.sqrt(n));\n dense = Math.min(n - 2, dense);\n // create target matrix C\n var cm = _createTargetMatrix(order, a, m, n, dense);\n // drop diagonal entries\n csFkeep(cm, _diag, null);\n // C matrix arrays\n var cindex = cm._index;\n var cptr = cm._ptr;\n\n // number of nonzero elements in C\n var cnz = cptr[n];\n\n // allocate result (n+1)\n var P = [];\n\n // create workspace (8 * (n + 1))\n var W = [];\n var len = 0; // first n + 1 entries\n var nv = n + 1; // next n + 1 entries\n var next = 2 * (n + 1); // next n + 1 entries\n var head = 3 * (n + 1); // next n + 1 entries\n var elen = 4 * (n + 1); // next n + 1 entries\n var degree = 5 * (n + 1); // next n + 1 entries\n var w = 6 * (n + 1); // next n + 1 entries\n var hhead = 7 * (n + 1); // last n + 1 entries\n\n // use P as workspace for last\n var last = P;\n\n // initialize quotient graph\n var mark = _initializeQuotientGraph(n, cptr, W, len, head, last, next, hhead, nv, w, elen, degree);\n\n // initialize degree lists\n var nel = _initializeDegreeLists(n, cptr, W, degree, elen, w, dense, nv, head, last, next);\n\n // minimum degree node\n var mindeg = 0;\n\n // vars\n var i, j, k, k1, k2, e, pj, ln, nvi, pk, eln, p1, p2, pn, h, d;\n\n // while (selecting pivots) do\n while (nel < n) {\n // select node of minimum approximate degree. amd() is now ready to start eliminating the graph. It first\n // finds a node k of minimum degree and removes it from its degree list. The variable nel keeps track of thow\n // many nodes have been eliminated.\n for (k = -1; mindeg < n && (k = W[head + mindeg]) === -1; mindeg++);\n if (W[next + k] !== -1) {\n last[W[next + k]] = -1;\n }\n // remove k from degree list\n W[head + mindeg] = W[next + k];\n // elenk = |Ek|\n var elenk = W[elen + k];\n // # of nodes k represents\n var nvk = W[nv + k];\n // W[nv + k] nodes of A eliminated\n nel += nvk;\n\n // Construct a new element. The new element Lk is constructed in place if |Ek| = 0. nv[i] is\n // negated for all nodes i in Lk to flag them as members of this set. Each node i is removed from the\n // degree lists. All elements e in Ek are absorved into element k.\n var dk = 0;\n // flag k as in Lk\n W[nv + k] = -nvk;\n var p = cptr[k];\n // do in place if W[elen + k] === 0\n var pk1 = elenk === 0 ? p : cnz;\n var pk2 = pk1;\n for (k1 = 1; k1 <= elenk + 1; k1++) {\n if (k1 > elenk) {\n // search the nodes in k\n e = k;\n // list of nodes starts at cindex[pj]\n pj = p;\n // length of list of nodes in k\n ln = W[len + k] - elenk;\n } else {\n // search the nodes in e\n e = cindex[p++];\n pj = cptr[e];\n // length of list of nodes in e\n ln = W[len + e];\n }\n for (k2 = 1; k2 <= ln; k2++) {\n i = cindex[pj++];\n // check node i dead, or seen\n if ((nvi = W[nv + i]) <= 0) {\n continue;\n }\n // W[degree + Lk] += size of node i\n dk += nvi;\n // negate W[nv + i] to denote i in Lk\n W[nv + i] = -nvi;\n // place i in Lk\n cindex[pk2++] = i;\n if (W[next + i] !== -1) {\n last[W[next + i]] = last[i];\n }\n // check we need to remove i from degree list\n if (last[i] !== -1) {\n W[next + last[i]] = W[next + i];\n } else {\n W[head + W[degree + i]] = W[next + i];\n }\n }\n if (e !== k) {\n // absorb e into k\n cptr[e] = csFlip(k);\n // e is now a dead element\n W[w + e] = 0;\n }\n }\n // cindex[cnz...nzmax] is free\n if (elenk !== 0) {\n cnz = pk2;\n }\n // external degree of k - |Lk\\i|\n W[degree + k] = dk;\n // element k is in cindex[pk1..pk2-1]\n cptr[k] = pk1;\n W[len + k] = pk2 - pk1;\n // k is now an element\n W[elen + k] = -2;\n\n // Find set differences. The scan1 function now computes the set differences |Le \\ Lk| for all elements e. At the start of the\n // scan, no entry in the w array is greater than or equal to mark.\n\n // clear w if necessary\n mark = _wclear(mark, lemax, W, w, n);\n // scan 1: find |Le\\Lk|\n for (pk = pk1; pk < pk2; pk++) {\n i = cindex[pk];\n // check if W[elen + i] empty, skip it\n if ((eln = W[elen + i]) <= 0) {\n continue;\n }\n // W[nv + i] was negated\n nvi = -W[nv + i];\n var wnvi = mark - nvi;\n // scan Ei\n for (p = cptr[i], p1 = cptr[i] + eln - 1; p <= p1; p++) {\n e = cindex[p];\n if (W[w + e] >= mark) {\n // decrement |Le\\Lk|\n W[w + e] -= nvi;\n } else if (W[w + e] !== 0) {\n // ensure e is a live element, 1st time e seen in scan 1\n W[w + e] = W[degree + e] + wnvi;\n }\n }\n }\n\n // degree update\n // The second pass computes the approximate degree di, prunes the sets Ei and Ai, and computes a hash\n // function h(i) for all nodes in Lk.\n\n // scan2: degree update\n for (pk = pk1; pk < pk2; pk++) {\n // consider node i in Lk\n i = cindex[pk];\n p1 = cptr[i];\n p2 = p1 + W[elen + i] - 1;\n pn = p1;\n // scan Ei\n for (h = 0, d = 0, p = p1; p <= p2; p++) {\n e = cindex[p];\n // check e is an unabsorbed element\n if (W[w + e] !== 0) {\n // dext = |Le\\Lk|\n var dext = W[w + e] - mark;\n if (dext > 0) {\n // sum up the set differences\n d += dext;\n // keep e in Ei\n cindex[pn++] = e;\n // compute the hash of node i\n h += e;\n } else {\n // aggressive absorb. e->k\n cptr[e] = csFlip(k);\n // e is a dead element\n W[w + e] = 0;\n }\n }\n }\n // W[elen + i] = |Ei|\n W[elen + i] = pn - p1 + 1;\n var p3 = pn;\n var p4 = p1 + W[len + i];\n // prune edges in Ai\n for (p = p2 + 1; p < p4; p++) {\n j = cindex[p];\n // check node j dead or in Lk\n var nvj = W[nv + j];\n if (nvj <= 0) {\n continue;\n }\n // degree(i) += |j|\n d += nvj;\n // place j in node list of i\n cindex[pn++] = j;\n // compute hash for node i\n h += j;\n }\n // check for mass elimination\n if (d === 0) {\n // absorb i into k\n cptr[i] = csFlip(k);\n nvi = -W[nv + i];\n // |Lk| -= |i|\n dk -= nvi;\n // |k| += W[nv + i]\n nvk += nvi;\n nel += nvi;\n W[nv + i] = 0;\n // node i is dead\n W[elen + i] = -1;\n } else {\n // update degree(i)\n W[degree + i] = Math.min(W[degree + i], d);\n // move first node to end\n cindex[pn] = cindex[p3];\n // move 1st el. to end of Ei\n cindex[p3] = cindex[p1];\n // add k as 1st element in of Ei\n cindex[p1] = k;\n // new len of adj. list of node i\n W[len + i] = pn - p1 + 1;\n // finalize hash of i\n h = (h < 0 ? -h : h) % n;\n // place i in hash bucket\n W[next + i] = W[hhead + h];\n W[hhead + h] = i;\n // save hash of i in last[i]\n last[i] = h;\n }\n }\n // finalize |Lk|\n W[degree + k] = dk;\n lemax = Math.max(lemax, dk);\n // clear w\n mark = _wclear(mark + lemax, lemax, W, w, n);\n\n // Supernode detection. Supernode detection relies on the hash function h(i) computed for each node i.\n // If two nodes have identical adjacency lists, their hash functions wil be identical.\n for (pk = pk1; pk < pk2; pk++) {\n i = cindex[pk];\n // check i is dead, skip it\n if (W[nv + i] >= 0) {\n continue;\n }\n // scan hash bucket of node i\n h = last[i];\n i = W[hhead + h];\n // hash bucket will be empty\n W[hhead + h] = -1;\n for (; i !== -1 && W[next + i] !== -1; i = W[next + i], mark++) {\n ln = W[len + i];\n eln = W[elen + i];\n for (p = cptr[i] + 1; p <= cptr[i] + ln - 1; p++) {\n W[w + cindex[p]] = mark;\n }\n var jlast = i;\n // compare i with all j\n for (j = W[next + i]; j !== -1;) {\n var ok = W[len + j] === ln && W[elen + j] === eln;\n for (p = cptr[j] + 1; ok && p <= cptr[j] + ln - 1; p++) {\n // compare i and j\n if (W[w + cindex[p]] !== mark) {\n ok = 0;\n }\n }\n // check i and j are identical\n if (ok) {\n // absorb j into i\n cptr[j] = csFlip(i);\n W[nv + i] += W[nv + j];\n W[nv + j] = 0;\n // node j is dead\n W[elen + j] = -1;\n // delete j from hash bucket\n j = W[next + j];\n W[next + jlast] = j;\n } else {\n // j and i are different\n jlast = j;\n j = W[next + j];\n }\n }\n }\n }\n\n // Finalize new element. The elimination of node k is nearly complete. All nodes i in Lk are scanned one last time.\n // Node i is removed from Lk if it is dead. The flagged status of nv[i] is cleared.\n for (p = pk1, pk = pk1; pk < pk2; pk++) {\n i = cindex[pk];\n // check i is dead, skip it\n if ((nvi = -W[nv + i]) <= 0) {\n continue;\n }\n // restore W[nv + i]\n W[nv + i] = nvi;\n // compute external degree(i)\n d = W[degree + i] + dk - nvi;\n d = Math.min(d, n - nel - nvi);\n if (W[head + d] !== -1) {\n last[W[head + d]] = i;\n }\n // put i back in degree list\n W[next + i] = W[head + d];\n last[i] = -1;\n W[head + d] = i;\n // find new minimum degree\n mindeg = Math.min(mindeg, d);\n W[degree + i] = d;\n // place i in Lk\n cindex[p++] = i;\n }\n // # nodes absorbed into k\n W[nv + k] = nvk;\n // length of adj list of element k\n if ((W[len + k] = p - pk1) === 0) {\n // k is a root of the tree\n cptr[k] = -1;\n // k is now a dead element\n W[w + k] = 0;\n }\n if (elenk !== 0) {\n // free unused space in Lk\n cnz = p;\n }\n }\n\n // Postordering. The elimination is complete, but no permutation has been computed. All that is left\n // of the graph is the assembly tree (ptr) and a set of dead nodes and elements (i is a dead node if\n // nv[i] is zero and a dead element if nv[i] > 0). It is from this information only that the final permutation\n // is computed. The tree is restored by unflipping all of ptr.\n\n // fix assembly tree\n for (i = 0; i < n; i++) {\n cptr[i] = csFlip(cptr[i]);\n }\n for (j = 0; j <= n; j++) {\n W[head + j] = -1;\n }\n // place unordered nodes in lists\n for (j = n; j >= 0; j--) {\n // skip if j is an element\n if (W[nv + j] > 0) {\n continue;\n }\n // place j in list of its parent\n W[next + j] = W[head + cptr[j]];\n W[head + cptr[j]] = j;\n }\n // place elements in lists\n for (e = n; e >= 0; e--) {\n // skip unless e is an element\n if (W[nv + e] <= 0) {\n continue;\n }\n if (cptr[e] !== -1) {\n // place e in list of its parent\n W[next + e] = W[head + cptr[e]];\n W[head + cptr[e]] = e;\n }\n }\n // postorder the assembly tree\n for (k = 0, i = 0; i <= n; i++) {\n if (cptr[i] === -1) {\n k = csTdfs(i, k, W, head, next, P, w);\n }\n }\n // remove last item in array\n P.splice(P.length - 1, 1);\n // return P\n return P;\n };\n\n /**\n * Creates the matrix that will be used by the approximate minimum degree ordering algorithm. The function accepts the matrix M as input and returns a permutation\n * vector P. The amd algorithm operates on a symmetrix matrix, so one of three symmetric matrices is formed.\n *\n * Order: 0\n * A natural ordering P=null matrix is returned.\n *\n * Order: 1\n * Matrix must be square. This is appropriate for a Cholesky or LU factorization.\n * P = M + M'\n *\n * Order: 2\n * Dense columns from M' are dropped, M recreated from M'. This is appropriatefor LU factorization of unsymmetric matrices.\n * P = M' * M\n *\n * Order: 3\n * This is best used for QR factorization or LU factorization is matrix M has no dense rows. A dense row is a row with more than 10*sqr(columns) entries.\n * P = M' * M\n */\n function _createTargetMatrix(order, a, m, n, dense) {\n // compute A'\n var at = transpose(a);\n\n // check order = 1, matrix must be square\n if (order === 1 && n === m) {\n // C = A + A'\n return add(a, at);\n }\n\n // check order = 2, drop dense columns from M'\n if (order === 2) {\n // transpose arrays\n var tindex = at._index;\n var tptr = at._ptr;\n // new column index\n var p2 = 0;\n // loop A' columns (rows)\n for (var j = 0; j < m; j++) {\n // column j of AT starts here\n var p = tptr[j];\n // new column j starts here\n tptr[j] = p2;\n // skip dense col j\n if (tptr[j + 1] - p > dense) {\n continue;\n }\n // map rows in column j of A\n for (var p1 = tptr[j + 1]; p < p1; p++) {\n tindex[p2++] = tindex[p];\n }\n }\n // finalize AT\n tptr[m] = p2;\n // recreate A from new transpose matrix\n a = transpose(at);\n // use A' * A\n return multiply(at, a);\n }\n\n // use A' * A, square or rectangular matrix\n return multiply(at, a);\n }\n\n /**\n * Initialize quotient graph. There are four kind of nodes and elements that must be represented:\n *\n * - A live node is a node i (or a supernode) that has not been selected as a pivot nad has not been merged into another supernode.\n * - A dead node i is one that has been removed from the graph, having been absorved into r = flip(ptr[i]).\n * - A live element e is one that is in the graph, having been formed when node e was selected as the pivot.\n * - A dead element e is one that has benn absorved into a subsequent element s = flip(ptr[e]).\n */\n function _initializeQuotientGraph(n, cptr, W, len, head, last, next, hhead, nv, w, elen, degree) {\n // Initialize quotient graph\n for (var k = 0; k < n; k++) {\n W[len + k] = cptr[k + 1] - cptr[k];\n }\n W[len + n] = 0;\n // initialize workspace\n for (var i = 0; i <= n; i++) {\n // degree list i is empty\n W[head + i] = -1;\n last[i] = -1;\n W[next + i] = -1;\n // hash list i is empty\n W[hhead + i] = -1;\n // node i is just one node\n W[nv + i] = 1;\n // node i is alive\n W[w + i] = 1;\n // Ek of node i is empty\n W[elen + i] = 0;\n // degree of node i\n W[degree + i] = W[len + i];\n }\n // clear w\n var mark = _wclear(0, 0, W, w, n);\n // n is a dead element\n W[elen + n] = -2;\n // n is a root of assembly tree\n cptr[n] = -1;\n // n is a dead element\n W[w + n] = 0;\n // return mark\n return mark;\n }\n\n /**\n * Initialize degree lists. Each node is placed in its degree lists. Nodes of zero degree are eliminated immediately. Nodes with\n * degree >= dense are alsol eliminated and merged into a placeholder node n, a dead element. Thes nodes will appera last in the\n * output permutation p.\n */\n function _initializeDegreeLists(n, cptr, W, degree, elen, w, dense, nv, head, last, next) {\n // result\n var nel = 0;\n // loop columns\n for (var i = 0; i < n; i++) {\n // degree @ i\n var d = W[degree + i];\n // check node i is empty\n if (d === 0) {\n // element i is dead\n W[elen + i] = -2;\n nel++;\n // i is a root of assembly tree\n cptr[i] = -1;\n W[w + i] = 0;\n } else if (d > dense) {\n // absorb i into element n\n W[nv + i] = 0;\n // node i is dead\n W[elen + i] = -1;\n nel++;\n cptr[i] = csFlip(n);\n W[nv + n]++;\n } else {\n var h = W[head + d];\n if (h !== -1) {\n last[h] = i;\n }\n // put node i in degree list d\n W[next + i] = W[head + d];\n W[head + d] = i;\n }\n }\n return nel;\n }\n function _wclear(mark, lemax, W, w, n) {\n if (mark < 2 || mark + lemax < 0) {\n for (var k = 0; k < n; k++) {\n if (W[w + k] !== 0) {\n W[w + k] = 1;\n }\n }\n mark = 2;\n }\n // at this point, W [0..n-1] < mark holds\n return mark;\n }\n function _diag(i, j) {\n return i !== j;\n }\n});", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\n\n/**\n * This function determines if j is a leaf of the ith row subtree.\n * Consider A(i,j), node j in ith row subtree and return lca(jprev,j)\n *\n * @param {Number} i The ith row subtree\n * @param {Number} j The node to test\n * @param {Array} w The workspace array\n * @param {Number} first The index offset within the workspace for the first array\n * @param {Number} maxfirst The index offset within the workspace for the maxfirst array\n * @param {Number} prevleaf The index offset within the workspace for the prevleaf array\n * @param {Number} ancestor The index offset within the workspace for the ancestor array\n *\n * @return {Object}\n */\nexport function csLeaf(i, j, w, first, maxfirst, prevleaf, ancestor) {\n var s, sparent;\n\n // our result\n var jleaf = 0;\n var q;\n\n // check j is a leaf\n if (i <= j || w[first + j] <= w[maxfirst + i]) {\n return -1;\n }\n // update max first[j] seen so far\n w[maxfirst + i] = w[first + j];\n // jprev = previous leaf of ith subtree\n var jprev = w[prevleaf + i];\n w[prevleaf + i] = j;\n\n // check j is first or subsequent leaf\n if (jprev === -1) {\n // 1st leaf, q = root of ith subtree\n jleaf = 1;\n q = i;\n } else {\n // update jleaf\n jleaf = 2;\n // q = least common ancester (jprev,j)\n for (q = jprev; q !== w[ancestor + q]; q = w[ancestor + q]);\n for (s = jprev; s !== q; s = sparent) {\n // path compression\n sparent = w[ancestor + s];\n w[ancestor + s] = q;\n }\n }\n return {\n jleaf,\n q\n };\n}", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\nimport { factory } from '../../../utils/factory.js';\nimport { csLeaf } from './csLeaf.js';\nvar name = 'csCounts';\nvar dependencies = ['transpose'];\nexport var createCsCounts = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n transpose\n } = _ref;\n /**\n * Computes the column counts using the upper triangular part of A.\n * It transposes A internally, none of the input parameters are modified.\n *\n * @param {Matrix} a The sparse matrix A\n *\n * @param {Matrix} ata Count the columns of A'A instead\n *\n * @return An array of size n of the column counts or null on error\n */\n return function (a, parent, post, ata) {\n // check inputs\n if (!a || !parent || !post) {\n return null;\n }\n // a matrix arrays\n var asize = a._size;\n // rows and columns\n var m = asize[0];\n var n = asize[1];\n // variables\n var i, j, k, J, p, p0, p1;\n\n // workspace size\n var s = 4 * n + (ata ? n + m + 1 : 0);\n // allocate workspace\n var w = []; // (s)\n var ancestor = 0; // first n entries\n var maxfirst = n; // next n entries\n var prevleaf = 2 * n; // next n entries\n var first = 3 * n; // next n entries\n var head = 4 * n; // next n + 1 entries (used when ata is true)\n var next = 5 * n + 1; // last entries in workspace\n // clear workspace w[0..s-1]\n for (k = 0; k < s; k++) {\n w[k] = -1;\n }\n\n // allocate result\n var colcount = []; // (n)\n\n // AT = A'\n var at = transpose(a);\n // at arrays\n var tindex = at._index;\n var tptr = at._ptr;\n\n // find w[first + j]\n for (k = 0; k < n; k++) {\n j = post[k];\n // colcount[j]=1 if j is a leaf\n colcount[j] = w[first + j] === -1 ? 1 : 0;\n for (; j !== -1 && w[first + j] === -1; j = parent[j]) {\n w[first + j] = k;\n }\n }\n\n // initialize ata if needed\n if (ata) {\n // invert post\n for (k = 0; k < n; k++) {\n w[post[k]] = k;\n }\n // loop rows (columns in AT)\n for (i = 0; i < m; i++) {\n // values in column i of AT\n for (k = n, p0 = tptr[i], p1 = tptr[i + 1], p = p0; p < p1; p++) {\n k = Math.min(k, w[tindex[p]]);\n }\n // place row i in linked list k\n w[next + i] = w[head + k];\n w[head + k] = i;\n }\n }\n\n // each node in its own set\n for (i = 0; i < n; i++) {\n w[ancestor + i] = i;\n }\n for (k = 0; k < n; k++) {\n // j is the kth node in postordered etree\n j = post[k];\n // check j is not a root\n if (parent[j] !== -1) {\n colcount[parent[j]]--;\n }\n\n // J=j for LL'=A case\n for (J = ata ? w[head + k] : j; J !== -1; J = ata ? w[next + J] : -1) {\n for (p = tptr[J]; p < tptr[J + 1]; p++) {\n i = tindex[p];\n var r = csLeaf(i, j, w, first, maxfirst, prevleaf, ancestor);\n // check A(i,j) is in skeleton\n if (r.jleaf >= 1) {\n colcount[j]++;\n }\n // check account for overlap in q\n if (r.jleaf === 2) {\n colcount[r.q]--;\n }\n }\n }\n if (parent[j] !== -1) {\n w[ancestor + j] = parent[j];\n }\n }\n // sum up colcount's of each child\n for (j = 0; j < n; j++) {\n if (parent[j] !== -1) {\n colcount[parent[j]] += colcount[j];\n }\n }\n return colcount;\n };\n});", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\nimport { csPermute } from './csPermute.js';\nimport { csPost } from './csPost.js';\nimport { csEtree } from './csEtree.js';\nimport { createCsAmd } from './csAmd.js';\nimport { createCsCounts } from './csCounts.js';\nimport { factory } from '../../../utils/factory.js';\nvar name = 'csSqr';\nvar dependencies = ['add', 'multiply', 'transpose'];\nexport var createCsSqr = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n add,\n multiply,\n transpose\n } = _ref;\n var csAmd = createCsAmd({\n add,\n multiply,\n transpose\n });\n var csCounts = createCsCounts({\n transpose\n });\n\n /**\n * Symbolic ordering and analysis for QR and LU decompositions.\n *\n * @param {Number} order The ordering strategy (see csAmd for more details)\n * @param {Matrix} a The A matrix\n * @param {boolean} qr Symbolic ordering and analysis for QR decomposition (true) or\n * symbolic ordering and analysis for LU decomposition (false)\n *\n * @return {Object} The Symbolic ordering and analysis for matrix A\n */\n return function csSqr(order, a, qr) {\n // a arrays\n var aptr = a._ptr;\n var asize = a._size;\n // columns\n var n = asize[1];\n // vars\n var k;\n // symbolic analysis result\n var s = {};\n // fill-reducing ordering\n s.q = csAmd(order, a);\n // validate results\n if (order && !s.q) {\n return null;\n }\n // QR symbolic analysis\n if (qr) {\n // apply permutations if needed\n var c = order ? csPermute(a, null, s.q, 0) : a;\n // etree of C'*C, where C=A(:,q)\n s.parent = csEtree(c, 1);\n // post order elimination tree\n var post = csPost(s.parent, n);\n // col counts chol(C'*C)\n s.cp = csCounts(c, s.parent, post, 1);\n // check we have everything needed to calculate number of nonzero elements\n if (c && s.parent && s.cp && _vcount(c, s)) {\n // calculate number of nonzero elements\n for (s.unz = 0, k = 0; k < n; k++) {\n s.unz += s.cp[k];\n }\n }\n } else {\n // for LU factorization only, guess nnz(L) and nnz(U)\n s.unz = 4 * aptr[n] + n;\n s.lnz = s.unz;\n }\n // return result S\n return s;\n };\n\n /**\n * Compute nnz(V) = s.lnz, s.pinv, s.leftmost, s.m2 from A and s.parent\n */\n function _vcount(a, s) {\n // a arrays\n var aptr = a._ptr;\n var aindex = a._index;\n var asize = a._size;\n // rows & columns\n var m = asize[0];\n var n = asize[1];\n // initialize s arrays\n s.pinv = []; // (m + n)\n s.leftmost = []; // (m)\n // vars\n var parent = s.parent;\n var pinv = s.pinv;\n var leftmost = s.leftmost;\n // workspace, next: first m entries, head: next n entries, tail: next n entries, nque: next n entries\n var w = []; // (m + 3 * n)\n var next = 0;\n var head = m;\n var tail = m + n;\n var nque = m + 2 * n;\n // vars\n var i, k, p, p0, p1;\n // initialize w\n for (k = 0; k < n; k++) {\n // queue k is empty\n w[head + k] = -1;\n w[tail + k] = -1;\n w[nque + k] = 0;\n }\n // initialize row arrays\n for (i = 0; i < m; i++) {\n leftmost[i] = -1;\n }\n // loop columns backwards\n for (k = n - 1; k >= 0; k--) {\n // values & index for column k\n for (p0 = aptr[k], p1 = aptr[k + 1], p = p0; p < p1; p++) {\n // leftmost[i] = min(find(A(i,:)))\n leftmost[aindex[p]] = k;\n }\n }\n // scan rows in reverse order\n for (i = m - 1; i >= 0; i--) {\n // row i is not yet ordered\n pinv[i] = -1;\n k = leftmost[i];\n // check row i is empty\n if (k === -1) {\n continue;\n }\n // first row in queue k\n if (w[nque + k]++ === 0) {\n w[tail + k] = i;\n }\n // put i at head of queue k\n w[next + i] = w[head + k];\n w[head + k] = i;\n }\n s.lnz = 0;\n s.m2 = m;\n // find row permutation and nnz(V)\n for (k = 0; k < n; k++) {\n // remove row i from queue k\n i = w[head + k];\n // count V(k,k) as nonzero\n s.lnz++;\n // add a fictitious row\n if (i < 0) {\n i = s.m2++;\n }\n // associate row i with V(:,k)\n pinv[i] = k;\n // skip if V(k+1:m,k) is empty\n if (--nque[k] <= 0) {\n continue;\n }\n // nque[k] is nnz (V(k+1:m,k))\n s.lnz += w[nque + k];\n // move all rows to parent of k\n var pa = parent[k];\n if (pa !== -1) {\n if (w[nque + pa] === 0) {\n w[tail + pa] = w[tail + k];\n }\n w[next + w[tail + k]] = w[head + pa];\n w[head + pa] = w[next + i];\n w[nque + pa] += w[nque + k];\n }\n }\n for (i = 0; i < m; i++) {\n if (pinv[i] < 0) {\n pinv[i] = k++;\n }\n }\n return true;\n }\n});", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\n\n/**\n * Checks if the node at w[j] is marked\n *\n * @param {Array} w The array\n * @param {Number} j The array index\n */\nexport function csMarked(w, j) {\n // check node is marked\n return w[j] < 0;\n}", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\n\nimport { csFlip } from './csFlip.js';\n\n/**\n * Marks the node at w[j]\n *\n * @param {Array} w The array\n * @param {Number} j The array index\n */\nexport function csMark(w, j) {\n // mark w[j]\n w[j] = csFlip(w[j]);\n}", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\nimport { csFlip } from './csFlip.js';\n\n/**\n * Flips the value if it is negative of returns the same value otherwise.\n *\n * @param {Number} i The value to flip\n */\nexport function csUnflip(i) {\n // flip the value if it is negative\n return i < 0 ? csFlip(i) : i;\n}", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\nimport { csMarked } from './csMarked.js';\nimport { csMark } from './csMark.js';\nimport { csUnflip } from './csUnflip.js';\n\n/**\n * Depth-first search computes the nonzero pattern xi of the directed graph G (Matrix) starting\n * at nodes in B (see csReach()).\n *\n * @param {Number} j The starting node for the DFS algorithm\n * @param {Matrix} g The G matrix to search, ptr array modified, then restored\n * @param {Number} top Start index in stack xi[top..n-1]\n * @param {Number} k The kth column in B\n * @param {Array} xi The nonzero pattern xi[top] .. xi[n - 1], an array of size = 2 * n\n * The first n entries is the nonzero pattern, the last n entries is the stack\n * @param {Array} pinv The inverse row permutation vector, must be null for L * x = b\n *\n * @return {Number} New value of top\n */\nexport function csDfs(j, g, top, xi, pinv) {\n // g arrays\n var index = g._index;\n var ptr = g._ptr;\n var size = g._size;\n // columns\n var n = size[1];\n // vars\n var i, p, p2;\n // initialize head\n var head = 0;\n // initialize the recursion stack\n xi[0] = j;\n // loop\n while (head >= 0) {\n // get j from the top of the recursion stack\n j = xi[head];\n // apply permutation vector\n var jnew = pinv ? pinv[j] : j;\n // check node j is marked\n if (!csMarked(ptr, j)) {\n // mark node j as visited\n csMark(ptr, j);\n // update stack (last n entries in xi)\n xi[n + head] = jnew < 0 ? 0 : csUnflip(ptr[jnew]);\n }\n // node j done if no unvisited neighbors\n var done = 1;\n // examine all neighbors of j, stack (last n entries in xi)\n for (p = xi[n + head], p2 = jnew < 0 ? 0 : csUnflip(ptr[jnew + 1]); p < p2; p++) {\n // consider neighbor node i\n i = index[p];\n // check we have visited node i, skip it\n if (csMarked(ptr, i)) {\n continue;\n }\n // pause depth-first search of node j, update stack (last n entries in xi)\n xi[n + head] = p;\n // start dfs at node i\n xi[++head] = i;\n // node j is not done\n done = 0;\n // break, to start dfs(i)\n break;\n }\n // check depth-first search at node j is done\n if (done) {\n // remove j from the recursion stack\n head--;\n // and place in the output stack\n xi[--top] = j;\n }\n }\n return top;\n}", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\n\nimport { csMarked } from './csMarked.js';\nimport { csMark } from './csMark.js';\nimport { csDfs } from './csDfs.js';\n\n/**\n * The csReach function computes X = Reach(B), where B is the nonzero pattern of the n-by-1\n * sparse column of vector b. The function returns the set of nodes reachable from any node in B. The\n * nonzero pattern xi of the solution x to the sparse linear system Lx=b is given by X=Reach(B).\n *\n * @param {Matrix} g The G matrix\n * @param {Matrix} b The B matrix\n * @param {Number} k The kth column in B\n * @param {Array} xi The nonzero pattern xi[top] .. xi[n - 1], an array of size = 2 * n\n * The first n entries is the nonzero pattern, the last n entries is the stack\n * @param {Array} pinv The inverse row permutation vector\n *\n * @return {Number} The index for the nonzero pattern\n */\nexport function csReach(g, b, k, xi, pinv) {\n // g arrays\n var gptr = g._ptr;\n var gsize = g._size;\n // b arrays\n var bindex = b._index;\n var bptr = b._ptr;\n // columns\n var n = gsize[1];\n // vars\n var p, p0, p1;\n // initialize top\n var top = n;\n // loop column indeces in B\n for (p0 = bptr[k], p1 = bptr[k + 1], p = p0; p < p1; p++) {\n // node i\n var i = bindex[p];\n // check node i is marked\n if (!csMarked(gptr, i)) {\n // start a dfs at unmarked node i\n top = csDfs(i, g, top, xi, pinv);\n }\n }\n // loop columns from top -> n - 1\n for (p = top; p < n; p++) {\n // restore G\n csMark(gptr, xi[p]);\n }\n return top;\n}", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\nimport { csReach } from './csReach.js';\nimport { factory } from '../../../utils/factory.js';\nvar name = 'csSpsolve';\nvar dependencies = ['divideScalar', 'multiply', 'subtract'];\nexport var createCsSpsolve = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n divideScalar,\n multiply,\n subtract\n } = _ref;\n /**\n * The function csSpsolve() computes the solution to G * x = bk, where bk is the\n * kth column of B. When lo is true, the function assumes G = L is lower triangular with the\n * diagonal entry as the first entry in each column. When lo is true, the function assumes G = U\n * is upper triangular with the diagonal entry as the last entry in each column.\n *\n * @param {Matrix} g The G matrix\n * @param {Matrix} b The B matrix\n * @param {Number} k The kth column in B\n * @param {Array} xi The nonzero pattern xi[top] .. xi[n - 1], an array of size = 2 * n\n * The first n entries is the nonzero pattern, the last n entries is the stack\n * @param {Array} x The soluton to the linear system G * x = b\n * @param {Array} pinv The inverse row permutation vector, must be null for L * x = b\n * @param {boolean} lo The lower (true) upper triangular (false) flag\n *\n * @return {Number} The index for the nonzero pattern\n */\n return function csSpsolve(g, b, k, xi, x, pinv, lo) {\n // g arrays\n var gvalues = g._values;\n var gindex = g._index;\n var gptr = g._ptr;\n var gsize = g._size;\n // columns\n var n = gsize[1];\n // b arrays\n var bvalues = b._values;\n var bindex = b._index;\n var bptr = b._ptr;\n // vars\n var p, p0, p1, q;\n // xi[top..n-1] = csReach(B(:,k))\n var top = csReach(g, b, k, xi, pinv);\n // clear x\n for (p = top; p < n; p++) {\n x[xi[p]] = 0;\n }\n // scatter b\n for (p0 = bptr[k], p1 = bptr[k + 1], p = p0; p < p1; p++) {\n x[bindex[p]] = bvalues[p];\n }\n // loop columns\n for (var px = top; px < n; px++) {\n // x array index for px\n var j = xi[px];\n // apply permutation vector (U x = b), j maps to column J of G\n var J = pinv ? pinv[j] : j;\n // check column J is empty\n if (J < 0) {\n continue;\n }\n // column value indeces in G, p0 <= p < p1\n p0 = gptr[J];\n p1 = gptr[J + 1];\n // x(j) /= G(j,j)\n x[j] = divideScalar(x[j], gvalues[lo ? p0 : p1 - 1]);\n // first entry L(j,j)\n p = lo ? p0 + 1 : p0;\n q = lo ? p1 : p1 - 1;\n // loop\n for (; p < q; p++) {\n // row\n var i = gindex[p];\n // x(i) -= G(i,j) * x(j)\n x[i] = subtract(x[i], multiply(gvalues[p], x[j]));\n }\n }\n // return top of stack\n return top;\n };\n});", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\n\nimport { factory } from '../../../utils/factory.js';\nimport { createCsSpsolve } from './csSpsolve.js';\nvar name = 'csLu';\nvar dependencies = ['abs', 'divideScalar', 'multiply', 'subtract', 'larger', 'largerEq', 'SparseMatrix'];\nexport var createCsLu = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n abs,\n divideScalar,\n multiply,\n subtract,\n larger,\n largerEq,\n SparseMatrix\n } = _ref;\n var csSpsolve = createCsSpsolve({\n divideScalar,\n multiply,\n subtract\n });\n\n /**\n * Computes the numeric LU factorization of the sparse matrix A. Implements a Left-looking LU factorization\n * algorithm that computes L and U one column at a tume. At the kth step, it access columns 1 to k-1 of L\n * and column k of A. Given the fill-reducing column ordering q (see parameter s) computes L, U and pinv so\n * L * U = A(p, q), where p is the inverse of pinv.\n *\n * @param {Matrix} m The A Matrix to factorize\n * @param {Object} s The symbolic analysis from csSqr(). Provides the fill-reducing\n * column ordering q\n * @param {Number} tol Partial pivoting threshold (1 for partial pivoting)\n *\n * @return {Number} The numeric LU factorization of A or null\n */\n return function csLu(m, s, tol) {\n // validate input\n if (!m) {\n return null;\n }\n // m arrays\n var size = m._size;\n // columns\n var n = size[1];\n // symbolic analysis result\n var q;\n var lnz = 100;\n var unz = 100;\n // update symbolic analysis parameters\n if (s) {\n q = s.q;\n lnz = s.lnz || lnz;\n unz = s.unz || unz;\n }\n // L arrays\n var lvalues = []; // (lnz)\n var lindex = []; // (lnz)\n var lptr = []; // (n + 1)\n // L\n var L = new SparseMatrix({\n values: lvalues,\n index: lindex,\n ptr: lptr,\n size: [n, n]\n });\n // U arrays\n var uvalues = []; // (unz)\n var uindex = []; // (unz)\n var uptr = []; // (n + 1)\n // U\n var U = new SparseMatrix({\n values: uvalues,\n index: uindex,\n ptr: uptr,\n size: [n, n]\n });\n // inverse of permutation vector\n var pinv = []; // (n)\n // vars\n var i, p;\n // allocate arrays\n var x = []; // (n)\n var xi = []; // (2 * n)\n // initialize variables\n for (i = 0; i < n; i++) {\n // clear workspace\n x[i] = 0;\n // no rows pivotal yet\n pinv[i] = -1;\n // no cols of L yet\n lptr[i + 1] = 0;\n }\n // reset number of nonzero elements in L and U\n lnz = 0;\n unz = 0;\n // compute L(:,k) and U(:,k)\n for (var k = 0; k < n; k++) {\n // update ptr\n lptr[k] = lnz;\n uptr[k] = unz;\n // apply column permutations if needed\n var col = q ? q[k] : k;\n // solve triangular system, x = L\\A(:,col)\n var top = csSpsolve(L, m, col, xi, x, pinv, 1);\n // find pivot\n var ipiv = -1;\n var a = -1;\n // loop xi[] from top -> n\n for (p = top; p < n; p++) {\n // x[i] is nonzero\n i = xi[p];\n // check row i is not yet pivotal\n if (pinv[i] < 0) {\n // absolute value of x[i]\n var xabs = abs(x[i]);\n // check absoulte value is greater than pivot value\n if (larger(xabs, a)) {\n // largest pivot candidate so far\n a = xabs;\n ipiv = i;\n }\n } else {\n // x(i) is the entry U(pinv[i],k)\n uindex[unz] = pinv[i];\n uvalues[unz++] = x[i];\n }\n }\n // validate we found a valid pivot\n if (ipiv === -1 || a <= 0) {\n return null;\n }\n // update actual pivot column, give preference to diagonal value\n if (pinv[col] < 0 && largerEq(abs(x[col]), multiply(a, tol))) {\n ipiv = col;\n }\n // the chosen pivot\n var pivot = x[ipiv];\n // last entry in U(:,k) is U(k,k)\n uindex[unz] = k;\n uvalues[unz++] = pivot;\n // ipiv is the kth pivot row\n pinv[ipiv] = k;\n // first entry in L(:,k) is L(k,k) = 1\n lindex[lnz] = ipiv;\n lvalues[lnz++] = 1;\n // L(k+1:n,k) = x / pivot\n for (p = top; p < n; p++) {\n // row\n i = xi[p];\n // check x(i) is an entry in L(:,k)\n if (pinv[i] < 0) {\n // save unpermuted row in L\n lindex[lnz] = i;\n // scale pivot column\n lvalues[lnz++] = divideScalar(x[i], pivot);\n }\n // x[0..n-1] = 0 for next k\n x[i] = 0;\n }\n }\n // update ptr\n lptr[n] = lnz;\n uptr[n] = unz;\n // fix row indices of L for final pinv\n for (p = 0; p < lnz; p++) {\n lindex[p] = pinv[lindex[p]];\n }\n // trim arrays\n lvalues.splice(lnz, lvalues.length - lnz);\n lindex.splice(lnz, lindex.length - lnz);\n uvalues.splice(unz, uvalues.length - unz);\n uindex.splice(unz, uindex.length - unz);\n // return LU factor\n return {\n L,\n U,\n pinv\n };\n };\n});", "import { isInteger } from '../../../utils/number.js';\nimport { factory } from '../../../utils/factory.js';\nimport { createCsSqr } from '../sparse/csSqr.js';\nimport { createCsLu } from '../sparse/csLu.js';\nvar name = 'slu';\nvar dependencies = ['typed', 'abs', 'add', 'multiply', 'transpose', 'divideScalar', 'subtract', 'larger', 'largerEq', 'SparseMatrix'];\nexport var createSlu = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n abs,\n add,\n multiply,\n transpose,\n divideScalar,\n subtract,\n larger,\n largerEq,\n SparseMatrix\n } = _ref;\n var csSqr = createCsSqr({\n add,\n multiply,\n transpose\n });\n var csLu = createCsLu({\n abs,\n divideScalar,\n multiply,\n subtract,\n larger,\n largerEq,\n SparseMatrix\n });\n\n /**\n * Calculate the Sparse Matrix LU decomposition with full pivoting. Sparse Matrix `A` is decomposed in two matrices (`L`, `U`) and two permutation vectors (`pinv`, `q`) where\n *\n * `P * A * Q = L * U`\n *\n * Syntax:\n *\n * math.slu(A, order, threshold)\n *\n * Examples:\n *\n * const A = math.sparse([[4,3], [6, 3]])\n * math.slu(A, 1, 0.001)\n * // returns:\n * // {\n * // L: [[1, 0], [1.5, 1]]\n * // U: [[4, 3], [0, -1.5]]\n * // p: [0, 1]\n * // q: [0, 1]\n * // }\n *\n * See also:\n *\n * lup, lsolve, usolve, lusolve\n *\n * @param {SparseMatrix} A A two dimensional sparse matrix for which to get the LU decomposition.\n * @param {Number} order The Symbolic Ordering and Analysis order:\n * 0 - Natural ordering, no permutation vector q is returned\n * 1 - Matrix must be square, symbolic ordering and analisis is performed on M = A + A'\n * 2 - Symbolic ordering and analisis is performed on M = A' * A. Dense columns from A' are dropped, A recreated from A'.\n * This is appropriatefor LU factorization of unsymmetric matrices.\n * 3 - Symbolic ordering and analisis is performed on M = A' * A. This is best used for LU factorization is matrix M has no dense rows.\n * A dense row is a row with more than 10*sqr(columns) entries.\n * @param {Number} threshold Partial pivoting threshold (1 for partial pivoting)\n *\n * @return {Object} The lower triangular matrix, the upper triangular matrix and the permutation vectors.\n */\n return typed(name, {\n 'SparseMatrix, number, number': function SparseMatrix_number_number(a, order, threshold) {\n // verify order\n if (!isInteger(order) || order < 0 || order > 3) {\n throw new Error('Symbolic Ordering and Analysis order must be an integer number in the interval [0, 3]');\n }\n // verify threshold\n if (threshold < 0 || threshold > 1) {\n throw new Error('Partial pivoting threshold must be a number from 0 to 1');\n }\n\n // perform symbolic ordering and analysis\n var s = csSqr(order, a, false);\n\n // perform lu decomposition\n var f = csLu(a, s, threshold);\n\n // return decomposition\n return {\n L: f.L,\n U: f.U,\n p: f.pinv,\n q: s.q,\n toString: function toString() {\n return 'L: ' + this.L.toString() + '\\nU: ' + this.U.toString() + '\\np: ' + this.p.toString() + (this.q ? '\\nq: ' + this.q.toString() : '') + '\\n';\n }\n };\n }\n });\n});", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\n\n/**\n * Permutes a vector; x = P'b. In MATLAB notation, x(p)=b.\n *\n * @param {Array} p The permutation vector of length n. null value denotes identity\n * @param {Array} b The input vector\n *\n * @return {Array} The output vector x = P'b\n */\nexport function csIpvec(p, b) {\n // vars\n var k;\n var n = b.length;\n var x = [];\n // check permutation vector was provided, p = null denotes identity\n if (p) {\n // loop vector\n for (k = 0; k < n; k++) {\n // apply permutation\n x[p[k]] = b[k];\n }\n } else {\n // loop vector\n for (k = 0; k < n; k++) {\n // x[i] = b[i]\n x[k] = b[k];\n }\n }\n return x;\n}", "import { isArray, isMatrix } from '../../../utils/is.js';\nimport { factory } from '../../../utils/factory.js';\nimport { createSolveValidation } from './utils/solveValidation.js';\nimport { csIpvec } from '../sparse/csIpvec.js';\nvar name = 'lusolve';\nvar dependencies = ['typed', 'matrix', 'lup', 'slu', 'usolve', 'lsolve', 'DenseMatrix'];\nexport var createLusolve = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n lup,\n slu,\n usolve,\n lsolve,\n DenseMatrix\n } = _ref;\n var solveValidation = createSolveValidation({\n DenseMatrix\n });\n\n /**\n * Solves the linear system `A * x = b` where `A` is an [n x n] matrix and `b` is a [n] column vector.\n *\n * Syntax:\n *\n * math.lusolve(A, b) // returns column vector with the solution to the linear system A * x = b\n * math.lusolve(lup, b) // returns column vector with the solution to the linear system A * x = b, lup = math.lup(A)\n *\n * Examples:\n *\n * const m = [[1, 0, 0, 0], [0, 2, 0, 0], [0, 0, 3, 0], [0, 0, 0, 4]]\n *\n * const x = math.lusolve(m, [-1, -1, -1, -1]) // x = [[-1], [-0.5], [-1/3], [-0.25]]\n *\n * const f = math.lup(m)\n * const x1 = math.lusolve(f, [-1, -1, -1, -1]) // x1 = [[-1], [-0.5], [-1/3], [-0.25]]\n * const x2 = math.lusolve(f, [1, 2, 1, -1]) // x2 = [[1], [1], [1/3], [-0.25]]\n *\n * const a = [[-2, 3], [2, 1]]\n * const b = [11, 9]\n * const x = math.lusolve(a, b) // [[2], [5]]\n *\n * See also:\n *\n * lup, slu, lsolve, usolve\n *\n * @param {Matrix | Array | Object} A Invertible Matrix or the Matrix LU decomposition\n * @param {Matrix | Array} b Column Vector\n * @param {number} [order] The Symbolic Ordering and Analysis order, see slu for details. Matrix must be a SparseMatrix\n * @param {Number} [threshold] Partial pivoting threshold (1 for partial pivoting), see slu for details. Matrix must be a SparseMatrix.\n *\n * @return {DenseMatrix | Array} Column vector with the solution to the linear system A * x = b\n */\n return typed(name, {\n 'Array, Array | Matrix': function Array_Array__Matrix(a, b) {\n a = matrix(a);\n var d = lup(a);\n var x = _lusolve(d.L, d.U, d.p, null, b);\n return x.valueOf();\n },\n 'DenseMatrix, Array | Matrix': function DenseMatrix_Array__Matrix(a, b) {\n var d = lup(a);\n return _lusolve(d.L, d.U, d.p, null, b);\n },\n 'SparseMatrix, Array | Matrix': function SparseMatrix_Array__Matrix(a, b) {\n var d = lup(a);\n return _lusolve(d.L, d.U, d.p, null, b);\n },\n 'SparseMatrix, Array | Matrix, number, number': function SparseMatrix_Array__Matrix_number_number(a, b, order, threshold) {\n var d = slu(a, order, threshold);\n return _lusolve(d.L, d.U, d.p, d.q, b);\n },\n 'Object, Array | Matrix': function Object_Array__Matrix(d, b) {\n return _lusolve(d.L, d.U, d.p, d.q, b);\n }\n });\n function _toMatrix(a) {\n if (isMatrix(a)) {\n return a;\n }\n if (isArray(a)) {\n return matrix(a);\n }\n throw new TypeError('Invalid Matrix LU decomposition');\n }\n function _lusolve(l, u, p, q, b) {\n // verify decomposition\n l = _toMatrix(l);\n u = _toMatrix(u);\n\n // apply row permutations if needed (b is a DenseMatrix)\n if (p) {\n b = solveValidation(l, b, true);\n b._data = csIpvec(p, b._data);\n }\n\n // use forward substitution to resolve L * y = b\n var y = lsolve(l, b);\n // use backward substitution to resolve U * x = y\n var x = usolve(u, y);\n\n // apply column permutations if needed (x is a DenseMatrix)\n if (q) {\n x._data = csIpvec(q, x._data);\n }\n return x;\n }\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'polynomialRoot';\nvar dependencies = ['typed', 'isZero', 'equalScalar', 'add', 'subtract', 'multiply', 'divide', 'sqrt', 'unaryMinus', 'cbrt', 'typeOf', 'im', 're'];\nexport var createPolynomialRoot = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n isZero,\n equalScalar,\n add,\n subtract,\n multiply,\n divide,\n sqrt,\n unaryMinus,\n cbrt,\n typeOf,\n im,\n re\n } = _ref;\n /**\n * Finds the numerical values of the distinct roots of a polynomial with real or complex coefficients.\n * Currently operates only on linear, quadratic, and cubic polynomials using the standard\n * formulas for the roots.\n *\n * Syntax:\n *\n * math.polynomialRoot(constant, linearCoeff, quadraticCoeff, cubicCoeff)\n *\n * Examples:\n * // linear\n * math.polynomialRoot(6, 3) // [-2]\n * math.polynomialRoot(math.complex(6,3), 3) // [-2 - i]\n * math.polynomialRoot(math.complex(6,3), math.complex(2,1)) // [-3 + 0i]\n * // quadratic\n * math.polynomialRoot(2, -3, 1) // [2, 1]\n * math.polynomialRoot(8, 8, 2) // [-2]\n * math.polynomialRoot(-2, 0, 1) // [1.4142135623730951, -1.4142135623730951]\n * math.polynomialRoot(2, -2, 1) // [1 + i, 1 - i]\n * math.polynomialRoot(math.complex(1,3), math.complex(-3, -2), 1) // [2 + i, 1 + i]\n * // cubic\n * math.polynomialRoot(-6, 11, -6, 1) // [1, 3, 2]\n * math.polynomialRoot(-8, 0, 0, 1) // [-1 - 1.7320508075688774i, 2, -1 + 1.7320508075688774i]\n * math.polynomialRoot(0, 8, 8, 2) // [0, -2]\n * math.polynomialRoot(1, 1, 1, 1) // [-1 + 0i, 0 - i, 0 + i]\n *\n * See also:\n * cbrt, sqrt\n *\n * @param {... number | Complex} coeffs\n * The coefficients of the polynomial, starting with with the constant coefficent, followed\n * by the linear coefficient and subsequent coefficients of increasing powers.\n * @return {Array} The distinct roots of the polynomial\n */\n\n return typed(name, {\n 'number|Complex, ...number|Complex': (constant, restCoeffs) => {\n var coeffs = [constant, ...restCoeffs];\n while (coeffs.length > 0 && isZero(coeffs[coeffs.length - 1])) {\n coeffs.pop();\n }\n if (coeffs.length < 2) {\n throw new RangeError(\"Polynomial [\".concat(constant, \", \").concat(restCoeffs, \"] must have a non-zero non-constant coefficient\"));\n }\n switch (coeffs.length) {\n case 2:\n // linear\n return [unaryMinus(divide(coeffs[0], coeffs[1]))];\n case 3:\n {\n // quadratic\n var [c, b, a] = coeffs;\n var denom = multiply(2, a);\n var d1 = multiply(b, b);\n var d2 = multiply(4, a, c);\n if (equalScalar(d1, d2)) return [divide(unaryMinus(b), denom)];\n var discriminant = sqrt(subtract(d1, d2));\n return [divide(subtract(discriminant, b), denom), divide(subtract(unaryMinus(discriminant), b), denom)];\n }\n case 4:\n {\n // cubic, cf. https://en.wikipedia.org/wiki/Cubic_equation\n var [d, _c, _b, _a] = coeffs;\n var _denom = unaryMinus(multiply(3, _a));\n var D0_1 = multiply(_b, _b);\n var D0_2 = multiply(3, _a, _c);\n var D1_1 = add(multiply(2, _b, _b, _b), multiply(27, _a, _a, d));\n var D1_2 = multiply(9, _a, _b, _c);\n if (equalScalar(D0_1, D0_2) && equalScalar(D1_1, D1_2)) {\n return [divide(_b, _denom)];\n }\n var Delta0 = subtract(D0_1, D0_2);\n var Delta1 = subtract(D1_1, D1_2);\n var discriminant1 = add(multiply(18, _a, _b, _c, d), multiply(_b, _b, _c, _c));\n var discriminant2 = add(multiply(4, _b, _b, _b, d), multiply(4, _a, _c, _c, _c), multiply(27, _a, _a, d, d));\n if (equalScalar(discriminant1, discriminant2)) {\n return [divide(subtract(multiply(4, _a, _b, _c), add(multiply(9, _a, _a, d), multiply(_b, _b, _b))), multiply(_a, Delta0)),\n // simple root\n divide(subtract(multiply(9, _a, d), multiply(_b, _c)), multiply(2, Delta0)) // double root\n ];\n }\n // OK, we have three distinct roots\n var Ccubed;\n if (equalScalar(D0_1, D0_2)) {\n Ccubed = Delta1;\n } else {\n Ccubed = divide(add(Delta1, sqrt(subtract(multiply(Delta1, Delta1), multiply(4, Delta0, Delta0, Delta0)))), 2);\n }\n var allRoots = true;\n var rawRoots = cbrt(Ccubed, allRoots).toArray().map(C => divide(add(_b, C, divide(Delta0, C)), _denom));\n return rawRoots.map(r => {\n if (typeOf(r) === 'Complex' && equalScalar(re(r), re(r) + im(r))) {\n return re(r);\n }\n return r;\n });\n }\n default:\n throw new RangeError(\"only implemented for cubic or lower-order polynomials, not \".concat(coeffs));\n }\n }\n });\n});", "import { isHelp } from '../utils/is.js';\nimport { clone } from '../utils/object.js';\nimport { format } from '../utils/string.js';\nimport { factory } from '../utils/factory.js';\nvar name = 'Help';\nvar dependencies = ['evaluate'];\nexport var createHelpClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n evaluate\n } = _ref;\n /**\n * Documentation object\n * @param {Object} doc Object containing properties:\n * {string} name\n * {string} category\n * {string} description\n * {string[]} syntax\n * {string[]} examples\n * {string[]} seealso\n * @constructor\n */\n function Help(doc) {\n if (!(this instanceof Help)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n if (!doc) throw new Error('Argument \"doc\" missing');\n this.doc = doc;\n }\n\n /**\n * Attach type information\n */\n Help.prototype.type = 'Help';\n Help.prototype.isHelp = true;\n\n /**\n * Generate a string representation of the Help object\n * @return {string} Returns a string\n * @private\n */\n Help.prototype.toString = function () {\n var doc = this.doc || {};\n var desc = '\\n';\n if (doc.name) {\n desc += 'Name: ' + doc.name + '\\n\\n';\n }\n if (doc.category) {\n desc += 'Category: ' + doc.category + '\\n\\n';\n }\n if (doc.description) {\n desc += 'Description:\\n ' + doc.description + '\\n\\n';\n }\n if (doc.syntax) {\n desc += 'Syntax:\\n ' + doc.syntax.join('\\n ') + '\\n\\n';\n }\n if (doc.examples) {\n desc += 'Examples:\\n';\n\n // after evaluating the examples, we restore config in case the examples\n // did change the config.\n var configChanged = false;\n var originalConfig = evaluate('config()');\n var scope = {\n config: newConfig => {\n configChanged = true;\n return evaluate('config(newConfig)', {\n newConfig\n });\n }\n };\n for (var i = 0; i < doc.examples.length; i++) {\n var expr = doc.examples[i];\n desc += ' ' + expr + '\\n';\n var res = void 0;\n try {\n // note: res can be undefined when `expr` is an empty string\n res = evaluate(expr, scope);\n } catch (e) {\n res = e;\n }\n if (res !== undefined && !isHelp(res)) {\n desc += ' ' + format(res, {\n precision: 14\n }) + '\\n';\n }\n }\n desc += '\\n';\n if (configChanged) {\n evaluate('config(originalConfig)', {\n originalConfig\n });\n }\n }\n if (doc.mayThrow && doc.mayThrow.length) {\n desc += 'Throws: ' + doc.mayThrow.join(', ') + '\\n\\n';\n }\n if (doc.seealso && doc.seealso.length) {\n desc += 'See also: ' + doc.seealso.join(', ') + '\\n';\n }\n return desc;\n };\n\n /**\n * Export the help object to JSON\n */\n Help.prototype.toJSON = function () {\n var obj = clone(this.doc);\n obj.mathjs = 'Help';\n return obj;\n };\n\n /**\n * Instantiate a Help object from a JSON object\n * @param {Object} json\n * @returns {Help} Returns a new Help object\n */\n Help.fromJSON = function (json) {\n var doc = {};\n Object.keys(json).filter(prop => prop !== 'mathjs').forEach(prop => {\n doc[prop] = json[prop];\n });\n return new Help(doc);\n };\n\n /**\n * Returns a string representation of the Help object\n */\n Help.prototype.valueOf = Help.prototype.toString;\n return Help;\n}, {\n isClass: true\n});", "import { isChain } from '../../utils/is.js';\nimport { format } from '../../utils/string.js';\nimport { hasOwnProperty, lazy } from '../../utils/object.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'Chain';\nvar dependencies = ['?on', 'math', 'typed'];\nexport var createChainClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n on,\n math,\n typed\n } = _ref;\n /**\n * @constructor Chain\n * Wrap any value in a chain, allowing to perform chained operations on\n * the value.\n *\n * All methods available in the math.js library can be called upon the chain,\n * and then will be evaluated with the value itself as first argument.\n * The chain can be closed by executing chain.done(), which will return\n * the final value.\n *\n * The Chain has a number of special functions:\n * - done() Finalize the chained operation and return the\n * chain's value.\n * - valueOf() The same as done()\n * - toString() Returns a string representation of the chain's value.\n *\n * @param {*} [value]\n */\n function Chain(value) {\n if (!(this instanceof Chain)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n if (isChain(value)) {\n this.value = value.value;\n } else {\n this.value = value;\n }\n }\n\n /**\n * Attach type information\n */\n Chain.prototype.type = 'Chain';\n Chain.prototype.isChain = true;\n\n /**\n * Close the chain. Returns the final value.\n * Does the same as method valueOf()\n * @returns {*} value\n */\n Chain.prototype.done = function () {\n return this.value;\n };\n\n /**\n * Close the chain. Returns the final value.\n * Does the same as method done()\n * @returns {*} value\n */\n Chain.prototype.valueOf = function () {\n return this.value;\n };\n\n /**\n * Get a string representation of the value in the chain\n * @returns {string}\n */\n Chain.prototype.toString = function () {\n return format(this.value);\n };\n\n /**\n * Get a JSON representation of the chain\n * @returns {Object}\n */\n Chain.prototype.toJSON = function () {\n return {\n mathjs: 'Chain',\n value: this.value\n };\n };\n\n /**\n * Instantiate a Chain from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"Chain\", value: ...}`,\n * where mathjs is optional\n * @returns {Chain}\n */\n Chain.fromJSON = function (json) {\n return new Chain(json.value);\n };\n\n /**\n * Create a proxy method for the chain\n * @param {string} name\n * @param {Function} fn The function to be proxied\n * If fn is no function, it is silently ignored.\n * @private\n */\n function createProxy(name, fn) {\n if (typeof fn === 'function') {\n Chain.prototype[name] = chainify(fn);\n }\n }\n\n /**\n * Create a proxy method for the chain\n * @param {string} name\n * @param {function} resolver The function resolving with the\n * function to be proxied\n * @private\n */\n function createLazyProxy(name, resolver) {\n lazy(Chain.prototype, name, function outerResolver() {\n var fn = resolver();\n if (typeof fn === 'function') {\n return chainify(fn);\n }\n return undefined; // if not a function, ignore\n });\n }\n\n /**\n * Make a function chainable\n * @param {function} fn\n * @return {Function} chain function\n * @private\n */\n function chainify(fn) {\n return function () {\n // Here, `this` will be the context of a Chain instance\n if (arguments.length === 0) {\n return new Chain(fn(this.value));\n }\n var args = [this.value];\n for (var i = 0; i < arguments.length; i++) {\n args[i + 1] = arguments[i];\n }\n if (typed.isTypedFunction(fn)) {\n var sigObject = typed.resolve(fn, args);\n // We want to detect if a rest parameter has matched across the\n // value in the chain and the current arguments of this call.\n // That is the case if and only if the matching signature has\n // exactly one parameter (which then must be a rest parameter\n // as it is matching at least two actual arguments).\n if (sigObject.params.length === 1) {\n throw new Error('chain function ' + fn.name + ' cannot match rest parameter between chain value and additional arguments.');\n }\n return new Chain(sigObject.implementation.apply(fn, args));\n }\n return new Chain(fn.apply(fn, args));\n };\n }\n\n /**\n * Create a proxy for a single method, or an object with multiple methods.\n * Example usage:\n *\n * Chain.createProxy('add', function add (x, y) {...})\n * Chain.createProxy({\n * add: function add (x, y) {...},\n * subtract: function subtract (x, y) {...}\n * }\n *\n * @param {string | Object} arg0 A name (string), or an object with\n * functions\n * @param {*} [arg1] A function, when arg0 is a name\n */\n Chain.createProxy = function (arg0, arg1) {\n if (typeof arg0 === 'string') {\n // createProxy(name, value)\n createProxy(arg0, arg1);\n } else {\n var _loop = function _loop(_name) {\n if (hasOwnProperty(arg0, _name) && excludedNames[_name] === undefined) {\n createLazyProxy(_name, () => arg0[_name]);\n }\n };\n // createProxy(values)\n for (var _name in arg0) {\n _loop(_name);\n }\n }\n };\n var excludedNames = {\n expression: true,\n docs: true,\n type: true,\n classes: true,\n json: true,\n error: true,\n isChain: true // conflicts with the property isChain of a Chain instance\n };\n\n // create proxy for everything that is in math.js\n Chain.createProxy(math);\n\n // register on the import event, automatically add a proxy for every imported function.\n if (on) {\n on('import', function (name, resolver, path) {\n if (!path) {\n // an imported function (not a data type or something special)\n createLazyProxy(name, resolver);\n }\n });\n }\n return Chain;\n}, {\n isClass: true\n});", "export var eDocs = {\n name: 'e',\n category: 'Constants',\n syntax: ['e'],\n description: 'Euler\\'s number, the base of the natural logarithm. Approximately equal to 2.71828',\n examples: ['e', 'e ^ 2', 'exp(2)', 'log(e)'],\n seealso: ['exp']\n};", "export var falseDocs = {\n name: 'false',\n category: 'Constants',\n syntax: ['false'],\n description: 'Boolean value false',\n examples: ['false'],\n seealso: ['true']\n};", "export var iDocs = {\n name: 'i',\n category: 'Constants',\n syntax: ['i'],\n description: 'Imaginary unit, defined as i*i=-1. A complex number is described as a + b*i, where a is the real part, and b is the imaginary part.',\n examples: ['i', 'i * i', 'sqrt(-1)'],\n seealso: []\n};", "export var InfinityDocs = {\n name: 'Infinity',\n category: 'Constants',\n syntax: ['Infinity'],\n description: 'Infinity, a number which is larger than the maximum number that can be handled by a floating point number.',\n examples: ['Infinity', '1 / 0'],\n seealso: []\n};", "export var LN10Docs = {\n name: 'LN10',\n category: 'Constants',\n syntax: ['LN10'],\n description: 'Returns the natural logarithm of 10, approximately equal to 2.302',\n examples: ['LN10', 'log(10)'],\n seealso: []\n};", "export var LN2Docs = {\n name: 'LN2',\n category: 'Constants',\n syntax: ['LN2'],\n description: 'Returns the natural logarithm of 2, approximately equal to 0.693',\n examples: ['LN2', 'log(2)'],\n seealso: []\n};", "export var LOG10EDocs = {\n name: 'LOG10E',\n category: 'Constants',\n syntax: ['LOG10E'],\n description: 'Returns the base-10 logarithm of E, approximately equal to 0.434',\n examples: ['LOG10E', 'log(e, 10)'],\n seealso: []\n};", "export var LOG2EDocs = {\n name: 'LOG2E',\n category: 'Constants',\n syntax: ['LOG2E'],\n description: 'Returns the base-2 logarithm of E, approximately equal to 1.442',\n examples: ['LOG2E', 'log(e, 2)'],\n seealso: []\n};", "export var NaNDocs = {\n name: 'NaN',\n category: 'Constants',\n syntax: ['NaN'],\n description: 'Not a number',\n examples: ['NaN', '0 / 0'],\n seealso: []\n};", "export var nullDocs = {\n name: 'null',\n category: 'Constants',\n syntax: ['null'],\n description: 'Value null',\n examples: ['null'],\n seealso: ['true', 'false']\n};", "export var phiDocs = {\n name: 'phi',\n category: 'Constants',\n syntax: ['phi'],\n description: 'Phi is the golden ratio. Two quantities are in the golden ratio if their ratio is the same as the ratio of their sum to the larger of the two quantities. Phi is defined as `(1 + sqrt(5)) / 2` and is approximately 1.618034...',\n examples: ['phi'],\n seealso: []\n};", "export var piDocs = {\n name: 'pi',\n category: 'Constants',\n syntax: ['pi'],\n description: 'The number pi is a mathematical constant that is the ratio of a circle\\'s circumference to its diameter, and is approximately equal to 3.14159',\n examples: ['pi', 'sin(pi/2)'],\n seealso: ['tau']\n};", "export var SQRT12Docs = {\n name: 'SQRT1_2',\n category: 'Constants',\n syntax: ['SQRT1_2'],\n description: 'Returns the square root of 1/2, approximately equal to 0.707',\n examples: ['SQRT1_2', 'sqrt(1/2)'],\n seealso: []\n};", "export var SQRT2Docs = {\n name: 'SQRT2',\n category: 'Constants',\n syntax: ['SQRT2'],\n description: 'Returns the square root of 2, approximately equal to 1.414',\n examples: ['SQRT2', 'sqrt(2)'],\n seealso: []\n};", "export var tauDocs = {\n name: 'tau',\n category: 'Constants',\n syntax: ['tau'],\n description: 'Tau is the ratio constant of a circle\\'s circumference to radius, equal to 2 * pi, approximately 6.2832.',\n examples: ['tau', '2 * pi'],\n seealso: ['pi']\n};", "export var trueDocs = {\n name: 'true',\n category: 'Constants',\n syntax: ['true'],\n description: 'Boolean value true',\n examples: ['true'],\n seealso: ['false']\n};", "export var versionDocs = {\n name: 'version',\n category: 'Constants',\n syntax: ['version'],\n description: 'A string with the version number of math.js',\n examples: ['version'],\n seealso: []\n};", "export var bignumberDocs = {\n name: 'bignumber',\n category: 'Construction',\n syntax: ['bignumber(x)'],\n description: 'Create a big number from a number or string.',\n examples: ['0.1 + 0.2', 'bignumber(0.1) + bignumber(0.2)', 'bignumber(\"7.2\")', 'bignumber(\"7.2e500\")', 'bignumber([0.1, 0.2, 0.3])'],\n seealso: ['boolean', 'bigint', 'complex', 'fraction', 'index', 'matrix', 'string', 'unit']\n};", "export var bigintDocs = {\n name: 'bigint',\n category: 'Construction',\n syntax: ['bigint(x)'],\n description: 'Create a bigint, an integer with an arbitrary number of digits, from a number or string.',\n examples: ['123123123123123123 # a large number will lose digits', 'bigint(\"123123123123123123\")', 'bignumber([\"1\", \"3\", \"5\"])'],\n seealso: ['boolean', 'bignumber', 'number', 'complex', 'fraction', 'index', 'matrix', 'string', 'unit']\n};", "export var booleanDocs = {\n name: 'boolean',\n category: 'Construction',\n syntax: ['x', 'boolean(x)'],\n description: 'Convert a string or number into a boolean.',\n examples: ['boolean(0)', 'boolean(1)', 'boolean(3)', 'boolean(\"true\")', 'boolean(\"false\")', 'boolean([1, 0, 1, 1])'],\n seealso: ['bignumber', 'complex', 'index', 'matrix', 'number', 'string', 'unit']\n};", "export var complexDocs = {\n name: 'complex',\n category: 'Construction',\n syntax: ['complex()', 'complex(re, im)', 'complex(string)'],\n description: 'Create a complex number.',\n examples: ['complex()', 'complex(2, 3)', 'complex(\"7 - 2i\")'],\n seealso: ['bignumber', 'boolean', 'index', 'matrix', 'number', 'string', 'unit']\n};", "export var createUnitDocs = {\n name: 'createUnit',\n category: 'Construction',\n syntax: ['createUnit(definitions)', 'createUnit(name, definition)'],\n description: 'Create a user-defined unit and register it with the Unit type.',\n examples: ['createUnit(\"foo\")', 'createUnit(\"knot\", {definition: \"0.514444444 m/s\", aliases: [\"knots\", \"kt\", \"kts\"]})', 'createUnit(\"mph\", \"1 mile/hour\")'],\n seealso: ['unit', 'splitUnit']\n};", "export var fractionDocs = {\n name: 'fraction',\n category: 'Construction',\n syntax: ['fraction(num)', 'fraction(matrix)', 'fraction(num,den)', 'fraction({n: num, d: den})'],\n description: 'Create a fraction from a number or from integer numerator and denominator.',\n examples: ['fraction(0.125)', 'fraction(1, 3) + fraction(2, 5)', 'fraction({n: 333, d: 53})', 'fraction([sqrt(9), sqrt(10), sqrt(11)])'],\n seealso: ['bignumber', 'boolean', 'complex', 'index', 'matrix', 'string', 'unit']\n};", "export var indexDocs = {\n name: 'index',\n category: 'Construction',\n syntax: ['[start]', '[start:end]', '[start:step:end]', '[start1, start 2, ...]', '[start1:end1, start2:end2, ...]', '[start1:step1:end1, start2:step2:end2, ...]'],\n description: 'Create an index to get or replace a subset of a matrix',\n examples: ['A = [1, 2, 3; 4, 5, 6]', 'A[1, :]', 'A[1, 2] = 50', 'A[1:2, 1:2] = 1', 'B = [1, 2, 3]', 'B[B>1 and B<3]'],\n seealso: ['bignumber', 'boolean', 'complex', 'matrix,', 'number', 'range', 'string', 'unit']\n};", "export var matrixDocs = {\n name: 'matrix',\n category: 'Construction',\n syntax: ['[]', '[a1, b1, ...; a2, b2, ...]', 'matrix()', 'matrix(\"dense\")', 'matrix([...])'],\n description: 'Create a matrix.',\n examples: ['[]', '[1, 2, 3]', '[1, 2, 3; 4, 5, 6]', 'matrix()', 'matrix([3, 4])', 'matrix([3, 4; 5, 6], \"sparse\")', 'matrix([3, 4; 5, 6], \"sparse\", \"number\")'],\n seealso: ['bignumber', 'boolean', 'complex', 'index', 'number', 'string', 'unit', 'sparse']\n};", "export var numberDocs = {\n name: 'number',\n category: 'Construction',\n syntax: ['x', 'number(x)', 'number(unit, valuelessUnit)'],\n description: 'Create a number or convert a string or boolean into a number.',\n examples: ['2', '2e3', '4.05', 'number(2)', 'number(\"7.2\")', 'number(true)', 'number([true, false, true, true])', 'number(unit(\"52cm\"), \"m\")'],\n seealso: ['bignumber', 'bigint', 'boolean', 'complex', 'fraction', 'index', 'matrix', 'string', 'unit']\n};", "export var sparseDocs = {\n name: 'sparse',\n category: 'Construction',\n syntax: ['sparse()', 'sparse([a1, b1, ...; a1, b2, ...])', 'sparse([a1, b1, ...; a1, b2, ...], \"number\")'],\n description: 'Create a sparse matrix.',\n examples: ['sparse()', 'sparse([3, 4; 5, 6])', 'sparse([3, 0; 5, 0], \"number\")'],\n seealso: ['bignumber', 'boolean', 'complex', 'index', 'number', 'string', 'unit', 'matrix']\n};", "export var splitUnitDocs = {\n name: 'splitUnit',\n category: 'Construction',\n syntax: ['splitUnit(unit: Unit, parts: Unit[])'],\n description: 'Split a unit in an array of units whose sum is equal to the original unit.',\n examples: ['splitUnit(1 m, [\"feet\", \"inch\"])'],\n seealso: ['unit', 'createUnit']\n};", "export var stringDocs = {\n name: 'string',\n category: 'Construction',\n syntax: ['\"text\"', 'string(x)'],\n description: 'Create a string or convert a value to a string',\n examples: ['\"Hello World!\"', 'string(4.2)', 'string(3 + 2i)'],\n seealso: ['bignumber', 'boolean', 'complex', 'index', 'matrix', 'number', 'unit']\n};", "export var unitDocs = {\n name: 'unit',\n category: 'Construction',\n syntax: ['value unit', 'unit(value, unit)', 'unit(string)'],\n description: 'Create a unit.',\n examples: ['5.5 mm', '3 inch', 'unit(7.1, \"kilogram\")', 'unit(\"23 deg\")'],\n seealso: ['bignumber', 'boolean', 'complex', 'index', 'matrix', 'number', 'string']\n};", "export var configDocs = {\n name: 'config',\n category: 'Core',\n syntax: ['config()', 'config(options)'],\n description: 'Get configuration or change configuration.',\n examples: ['config()', '1/3 + 1/4', 'config({number: \"Fraction\"})', '1/3 + 1/4'],\n seealso: []\n};", "export var importDocs = {\n name: 'import',\n category: 'Core',\n syntax: ['import(functions)', 'import(functions, options)'],\n description: 'Import functions or constants from an object.',\n examples: ['import({myFn: f(x)=x^2, myConstant: 32 })', 'myFn(2)', 'myConstant'],\n seealso: []\n};", "export var typedDocs = {\n name: 'typed',\n category: 'Core',\n syntax: ['typed(signatures)', 'typed(name, signatures)'],\n description: 'Create a typed function.',\n examples: ['double = typed({ \"number\": f(x)=x+x, \"string\": f(x)=concat(x,x) })', 'double(2)', 'double(\"hello\")'],\n seealso: []\n};", "export var derivativeDocs = {\n name: 'derivative',\n category: 'Algebra',\n syntax: ['derivative(expr, variable)', 'derivative(expr, variable, {simplify: boolean})'],\n description: 'Takes the derivative of an expression expressed in parser Nodes. The derivative will be taken over the supplied variable in the second parameter. If there are multiple variables in the expression, it will return a partial derivative.',\n examples: ['derivative(\"2x^3\", \"x\")', 'derivative(\"2x^3\", \"x\", {simplify: false})', 'derivative(\"2x^2 + 3x + 4\", \"x\")', 'derivative(\"sin(2x)\", \"x\")', 'f = parse(\"x^2 + x\")', 'x = parse(\"x\")', 'df = derivative(f, x)', 'df.evaluate({x: 3})'],\n seealso: ['simplify', 'parse', 'evaluate']\n};", "export var leafCountDocs = {\n name: 'leafCount',\n category: 'Algebra',\n syntax: ['leafCount(expr)'],\n description: 'Computes the number of leaves in the parse tree of the given expression',\n examples: ['leafCount(\"e^(i*pi)-1\")', 'leafCount(parse(\"{a: 22/7, b: 10^(1/2)}\"))'],\n seealso: ['simplify']\n};", "export var lsolveDocs = {\n name: 'lsolve',\n category: 'Algebra',\n syntax: ['x=lsolve(L, b)'],\n description: 'Finds one solution of the linear system L * x = b where L is an [n x n] lower triangular matrix and b is a [n] column vector.',\n examples: ['a = [-2, 3; 2, 1]', 'b = [11, 9]', 'x = lsolve(a, b)'],\n seealso: ['lsolveAll', 'lup', 'lusolve', 'usolve', 'matrix', 'sparse']\n};", "export var lsolveAllDocs = {\n name: 'lsolveAll',\n category: 'Algebra',\n syntax: ['x=lsolveAll(L, b)'],\n description: 'Finds all solutions of the linear system L * x = b where L is an [n x n] lower triangular matrix and b is a [n] column vector.',\n examples: ['a = [-2, 3; 2, 1]', 'b = [11, 9]', 'x = lsolve(a, b)'],\n seealso: ['lsolve', 'lup', 'lusolve', 'usolve', 'matrix', 'sparse']\n};", "export var lupDocs = {\n name: 'lup',\n category: 'Algebra',\n syntax: ['lup(m)'],\n description: 'Calculate the Matrix LU decomposition with partial pivoting. Matrix A is decomposed in three matrices (L, U, P) where P * A = L * U',\n examples: ['lup([[2, 1], [1, 4]])', 'lup(matrix([[2, 1], [1, 4]]))', 'lup(sparse([[2, 1], [1, 4]]))'],\n seealso: ['lusolve', 'lsolve', 'usolve', 'matrix', 'sparse', 'slu', 'qr']\n};", "export var lusolveDocs = {\n name: 'lusolve',\n category: 'Algebra',\n syntax: ['x=lusolve(A, b)', 'x=lusolve(lu, b)'],\n description: 'Solves the linear system A * x = b where A is an [n x n] matrix and b is a [n] column vector.',\n examples: ['a = [-2, 3; 2, 1]', 'b = [11, 9]', 'x = lusolve(a, b)'],\n seealso: ['lup', 'slu', 'lsolve', 'usolve', 'matrix', 'sparse']\n};", "export var polynomialRootDocs = {\n name: 'polynomialRoot',\n category: 'Algebra',\n syntax: ['x=polynomialRoot(-6, 3)', 'x=polynomialRoot(4, -4, 1)', 'x=polynomialRoot(-8, 12, -6, 1)'],\n description: 'Finds the roots of a univariate polynomial given by its coefficients starting from constant, linear, and so on, increasing in degree.',\n examples: ['a = polynomialRoot(-6, 11, -6, 1)'],\n seealso: ['cbrt', 'sqrt']\n};", "export var qrDocs = {\n name: 'qr',\n category: 'Algebra',\n syntax: ['qr(A)'],\n description: 'Calculates the Matrix QR decomposition. Matrix `A` is decomposed in two matrices (`Q`, `R`) where `Q` is an orthogonal matrix and `R` is an upper triangular matrix.',\n examples: ['qr([[1, -1, 4], [1, 4, -2], [1, 4, 2], [1, -1, 0]])'],\n seealso: ['lup', 'slu', 'matrix']\n};", "export var rationalizeDocs = {\n name: 'rationalize',\n category: 'Algebra',\n syntax: ['rationalize(expr)', 'rationalize(expr, scope)', 'rationalize(expr, scope, detailed)'],\n description: 'Transform a rationalizable expression in a rational fraction. If rational fraction is one variable polynomial then converts the numerator and denominator in canonical form, with decreasing exponents, returning the coefficients of numerator.',\n examples: ['rationalize(\"2x/y - y/(x+1)\")', 'rationalize(\"2x/y - y/(x+1)\", true)'],\n seealso: ['simplify']\n};", "export var resolveDocs = {\n name: 'resolve',\n category: 'Algebra',\n syntax: ['resolve(node, scope)'],\n description: 'Recursively substitute variables in an expression tree.',\n examples: ['resolve(parse(\"1 + x\"), { x: 7 })', 'resolve(parse(\"size(text)\"), { text: \"Hello World\" })', 'resolve(parse(\"x + y\"), { x: parse(\"3z\") })', 'resolve(parse(\"3x\"), { x: parse(\"y+z\"), z: parse(\"w^y\") })'],\n seealso: ['simplify', 'evaluate'],\n mayThrow: ['ReferenceError']\n};", "export var simplifyDocs = {\n name: 'simplify',\n category: 'Algebra',\n syntax: ['simplify(expr)', 'simplify(expr, rules)'],\n description: 'Simplify an expression tree.',\n examples: ['simplify(\"3 + 2 / 4\")', 'simplify(\"2x + x\")', 'f = parse(\"x * (x + 2 + x)\")', 'simplified = simplify(f)', 'simplified.evaluate({x: 2})'],\n seealso: ['simplifyCore', 'derivative', 'evaluate', 'parse', 'rationalize', 'resolve']\n};", "export var simplifyConstantDocs = {\n name: 'simplifyConstant',\n category: 'Algebra',\n syntax: ['simplifyConstant(expr)', 'simplifyConstant(expr, options)'],\n description: 'Replace constant subexpressions of node with their values.',\n examples: ['simplifyConstant(\"(3-3)*x\")', 'simplifyConstant(parse(\"z-cos(tau/8)\"))'],\n seealso: ['simplify', 'simplifyCore', 'evaluate']\n};", "export var simplifyCoreDocs = {\n name: 'simplifyCore',\n category: 'Algebra',\n syntax: ['simplifyCore(node)'],\n description: 'Perform simple one-pass simplifications on an expression tree.',\n examples: ['simplifyCore(parse(\"0*x\"))', 'simplifyCore(parse(\"(x+0)*2\"))'],\n seealso: ['simplify', 'simplifyConstant', 'evaluate']\n};", "export var sluDocs = {\n name: 'slu',\n category: 'Algebra',\n syntax: ['slu(A, order, threshold)'],\n description: 'Calculate the Matrix LU decomposition with full pivoting. Matrix A is decomposed in two matrices (L, U) and two permutation vectors (pinv, q) where P * A * Q = L * U',\n examples: ['slu(sparse([4.5, 0, 3.2, 0; 3.1, 2.9, 0, 0.9; 0, 1.7, 3, 0; 3.5, 0.4, 0, 1]), 1, 0.001)'],\n seealso: ['lusolve', 'lsolve', 'usolve', 'matrix', 'sparse', 'lup', 'qr']\n};", "export var symbolicEqualDocs = {\n name: 'symbolicEqual',\n category: 'Algebra',\n syntax: ['symbolicEqual(expr1, expr2)', 'symbolicEqual(expr1, expr2, options)'],\n description: 'Returns true if the difference of the expressions simplifies to 0',\n examples: ['symbolicEqual(\"x*y\",\"y*x\")', 'symbolicEqual(\"abs(x^2)\", \"x^2\")', 'symbolicEqual(\"abs(x)\", \"x\", {context: {abs: {trivial: true}}})'],\n seealso: ['simplify', 'evaluate']\n};", "export var usolveDocs = {\n name: 'usolve',\n category: 'Algebra',\n syntax: ['x=usolve(U, b)'],\n description: 'Finds one solution of the linear system U * x = b where U is an [n x n] upper triangular matrix and b is a [n] column vector.',\n examples: ['x=usolve(sparse([1, 1, 1, 1; 0, 1, 1, 1; 0, 0, 1, 1; 0, 0, 0, 1]), [1; 2; 3; 4])'],\n seealso: ['usolveAll', 'lup', 'lusolve', 'lsolve', 'matrix', 'sparse']\n};", "export var usolveAllDocs = {\n name: 'usolveAll',\n category: 'Algebra',\n syntax: ['x=usolve(U, b)'],\n description: 'Finds all solutions of the linear system U * x = b where U is an [n x n] upper triangular matrix and b is a [n] column vector.',\n examples: ['x=usolve(sparse([1, 1, 1, 1; 0, 1, 1, 1; 0, 0, 1, 1; 0, 0, 0, 1]), [1; 2; 3; 4])'],\n seealso: ['usolve', 'lup', 'lusolve', 'lsolve', 'matrix', 'sparse']\n};", "export var absDocs = {\n name: 'abs',\n category: 'Arithmetic',\n syntax: ['abs(x)'],\n description: 'Compute the absolute value.',\n examples: ['abs(3.5)', 'abs(-4.2)'],\n seealso: ['sign']\n};", "export var addDocs = {\n name: 'add',\n category: 'Operators',\n syntax: ['x + y', 'add(x, y)'],\n description: 'Add two values.',\n examples: ['a = 2.1 + 3.6', 'a - 3.6', '3 + 2i', '3 cm + 2 inch', '\"2.3\" + \"4\"'],\n seealso: ['subtract']\n};", "export var cbrtDocs = {\n name: 'cbrt',\n category: 'Arithmetic',\n syntax: ['cbrt(x)', 'cbrt(x, allRoots)'],\n description: 'Compute the cubic root value. If x = y * y * y, then y is the cubic root of x. When `x` is a number or complex number, an optional second argument `allRoots` can be provided to return all three cubic roots. If not provided, the principal root is returned',\n examples: ['cbrt(64)', 'cube(4)', 'cbrt(-8)', 'cbrt(2 + 3i)', 'cbrt(8i)', 'cbrt(8i, true)', 'cbrt(27 m^3)'],\n seealso: ['square', 'sqrt', 'cube', 'multiply']\n};", "export var ceilDocs = {\n name: 'ceil',\n category: 'Arithmetic',\n syntax: ['ceil(x)'],\n description: 'Round a value towards plus infinity. If x is complex, both real and imaginary part are rounded towards plus infinity.',\n examples: ['ceil(3.2)', 'ceil(3.8)', 'ceil(-4.2)'],\n seealso: ['floor', 'fix', 'round']\n};", "export var cubeDocs = {\n name: 'cube',\n category: 'Arithmetic',\n syntax: ['cube(x)'],\n description: 'Compute the cube of a value. The cube of x is x * x * x.',\n examples: ['cube(2)', '2^3', '2 * 2 * 2'],\n seealso: ['multiply', 'square', 'pow']\n};", "export var divideDocs = {\n name: 'divide',\n category: 'Operators',\n syntax: ['x / y', 'divide(x, y)'],\n description: 'Divide two values.',\n examples: ['a = 2 / 3', 'a * 3', '4.5 / 2', '3 + 4 / 2', '(3 + 4) / 2', '18 km / 4.5'],\n seealso: ['multiply']\n};", "export var dotDivideDocs = {\n name: 'dotDivide',\n category: 'Operators',\n syntax: ['x ./ y', 'dotDivide(x, y)'],\n description: 'Divide two values element wise.',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'b = [2, 1, 1; 3, 2, 5]', 'a ./ b'],\n seealso: ['multiply', 'dotMultiply', 'divide']\n};", "export var dotMultiplyDocs = {\n name: 'dotMultiply',\n category: 'Operators',\n syntax: ['x .* y', 'dotMultiply(x, y)'],\n description: 'Multiply two values element wise.',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'b = [2, 1, 1; 3, 2, 5]', 'a .* b'],\n seealso: ['multiply', 'divide', 'dotDivide']\n};", "export var dotPowDocs = {\n name: 'dotPow',\n category: 'Operators',\n syntax: ['x .^ y', 'dotPow(x, y)'],\n description: 'Calculates the power of x to y element wise.',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'a .^ 2'],\n seealso: ['pow']\n};", "export var expDocs = {\n name: 'exp',\n category: 'Arithmetic',\n syntax: ['exp(x)'],\n description: 'Calculate the exponent of a value.',\n examples: ['exp(1.3)', 'e ^ 1.3', 'log(exp(1.3))', 'x = 2.4', '(exp(i*x) == cos(x) + i*sin(x)) # Euler\\'s formula'],\n seealso: ['expm', 'expm1', 'pow', 'log']\n};", "export var expmDocs = {\n name: 'expm',\n category: 'Arithmetic',\n syntax: ['exp(x)'],\n description: 'Compute the matrix exponential, expm(A) = e^A. ' + 'The matrix must be square. ' + 'Not to be confused with exp(a), which performs element-wise exponentiation.',\n examples: ['expm([[0,2],[0,0]])'],\n seealso: ['exp']\n};", "export var expm1Docs = {\n name: 'expm1',\n category: 'Arithmetic',\n syntax: ['expm1(x)'],\n description: 'Calculate the value of subtracting 1 from the exponential value.',\n examples: ['expm1(2)', 'pow(e, 2) - 1', 'log(expm1(2) + 1)'],\n seealso: ['exp', 'pow', 'log']\n};", "export var fixDocs = {\n name: 'fix',\n category: 'Arithmetic',\n syntax: ['fix(x)'],\n description: 'Round a value towards zero. If x is complex, both real and imaginary part are rounded towards zero.',\n examples: ['fix(3.2)', 'fix(3.8)', 'fix(-4.2)', 'fix(-4.8)'],\n seealso: ['ceil', 'floor', 'round']\n};", "export var floorDocs = {\n name: 'floor',\n category: 'Arithmetic',\n syntax: ['floor(x)'],\n description: 'Round a value towards minus infinity.If x is complex, both real and imaginary part are rounded towards minus infinity.',\n examples: ['floor(3.2)', 'floor(3.8)', 'floor(-4.2)'],\n seealso: ['ceil', 'fix', 'round']\n};", "export var gcdDocs = {\n name: 'gcd',\n category: 'Arithmetic',\n syntax: ['gcd(a, b)', 'gcd(a, b, c, ...)'],\n description: 'Compute the greatest common divisor.',\n examples: ['gcd(8, 12)', 'gcd(-4, 6)', 'gcd(25, 15, -10)'],\n seealso: ['lcm', 'xgcd']\n};", "export var hypotDocs = {\n name: 'hypot',\n category: 'Arithmetic',\n syntax: ['hypot(a, b, c, ...)', 'hypot([a, b, c, ...])'],\n description: 'Calculate the hypotenuse of a list with values.',\n examples: ['hypot(3, 4)', 'sqrt(3^2 + 4^2)', 'hypot(-2)', 'hypot([3, 4, 5])'],\n seealso: ['abs', 'norm']\n};", "export var invmodDocs = {\n name: 'invmod',\n category: 'Arithmetic',\n syntax: ['invmod(a, b)'],\n description: 'Calculate the (modular) multiplicative inverse of a modulo b. Solution to the equation ax \u2263 1 (mod b)',\n examples: ['invmod(8, 12)', 'invmod(7, 13)', 'invmod(15151, 15122)'],\n seealso: ['gcd', 'xgcd']\n};", "export var lcmDocs = {\n name: 'lcm',\n category: 'Arithmetic',\n syntax: ['lcm(x, y)'],\n description: 'Compute the least common multiple.',\n examples: ['lcm(4, 6)', 'lcm(6, 21)', 'lcm(6, 21, 5)'],\n seealso: ['gcd']\n};", "export var logDocs = {\n name: 'log',\n category: 'Arithmetic',\n syntax: ['log(x)', 'log(x, base)'],\n description: 'Compute the logarithm of a value. If no base is provided, the natural logarithm of x is calculated. If base if provided, the logarithm is calculated for the specified base. log(x, base) is defined as log(x) / log(base).',\n examples: ['log(3.5)', 'a = log(2.4)', 'exp(a)', '10 ^ 4', 'log(10000, 10)', 'log(10000) / log(10)', 'b = log(1024, 2)', '2 ^ b'],\n seealso: ['exp', 'log1p', 'log2', 'log10']\n};", "export var log10Docs = {\n name: 'log10',\n category: 'Arithmetic',\n syntax: ['log10(x)'],\n description: 'Compute the 10-base logarithm of a value.',\n examples: ['log10(0.00001)', 'log10(10000)', '10 ^ 4', 'log(10000) / log(10)', 'log(10000, 10)'],\n seealso: ['exp', 'log']\n};", "export var log1pDocs = {\n name: 'log1p',\n category: 'Arithmetic',\n syntax: ['log1p(x)', 'log1p(x, base)'],\n description: 'Calculate the logarithm of a `value+1`',\n examples: ['log1p(2.5)', 'exp(log1p(1.4))', 'pow(10, 4)', 'log1p(9999, 10)', 'log1p(9999) / log(10)'],\n seealso: ['exp', 'log', 'log2', 'log10']\n};", "export var log2Docs = {\n name: 'log2',\n category: 'Arithmetic',\n syntax: ['log2(x)'],\n description: 'Calculate the 2-base of a value. This is the same as calculating `log(x, 2)`.',\n examples: ['log2(0.03125)', 'log2(16)', 'log2(16) / log2(2)', 'pow(2, 4)'],\n seealso: ['exp', 'log1p', 'log', 'log10']\n};", "export var modDocs = {\n name: 'mod',\n category: 'Operators',\n syntax: ['x % y', 'x mod y', 'mod(x, y)'],\n description: 'Calculates the modulus, the remainder of an integer division.',\n examples: ['7 % 3', '11 % 2', '10 mod 4', 'isOdd(x) = x % 2', 'isOdd(2)', 'isOdd(3)'],\n seealso: ['divide']\n};", "export var multiplyDocs = {\n name: 'multiply',\n category: 'Operators',\n syntax: ['x * y', 'multiply(x, y)'],\n description: 'multiply two values.',\n examples: ['a = 2.1 * 3.4', 'a / 3.4', '2 * 3 + 4', '2 * (3 + 4)', '3 * 2.1 km'],\n seealso: ['divide']\n};", "export var normDocs = {\n name: 'norm',\n category: 'Arithmetic',\n syntax: ['norm(x)', 'norm(x, p)'],\n description: 'Calculate the norm of a number, vector or matrix.',\n examples: ['abs(-3.5)', 'norm(-3.5)', 'norm(3 - 4i)', 'norm([1, 2, -3], Infinity)', 'norm([1, 2, -3], -Infinity)', 'norm([3, 4], 2)', 'norm([[1, 2], [3, 4]], 1)', 'norm([[1, 2], [3, 4]], \"inf\")', 'norm([[1, 2], [3, 4]], \"fro\")']\n};", "export var nthRootDocs = {\n name: 'nthRoot',\n category: 'Arithmetic',\n syntax: ['nthRoot(a)', 'nthRoot(a, root)'],\n description: 'Calculate the nth root of a value. ' + 'The principal nth root of a positive real number A, ' + 'is the positive real solution of the equation \"x^root = A\".',\n examples: ['4 ^ 3', 'nthRoot(64, 3)', 'nthRoot(9, 2)', 'sqrt(9)'],\n seealso: ['nthRoots', 'pow', 'sqrt']\n};", "export var nthRootsDocs = {\n name: 'nthRoots',\n category: 'Arithmetic',\n syntax: ['nthRoots(A)', 'nthRoots(A, root)'],\n description: '' + 'Calculate the nth roots of a value. ' + 'An nth root of a positive real number A, ' + 'is a positive real solution of the equation \"x^root = A\". ' + 'This function returns an array of complex values.',\n examples: ['nthRoots(1)', 'nthRoots(1, 3)'],\n seealso: ['sqrt', 'pow', 'nthRoot']\n};", "export var powDocs = {\n name: 'pow',\n category: 'Operators',\n syntax: ['x ^ y', 'pow(x, y)'],\n description: 'Calculates the power of x to y, x^y.',\n examples: ['2^3', '2*2*2', '1 + e ^ (pi * i)', 'pow([[1, 2], [4, 3]], 2)', 'pow([[1, 2], [4, 3]], -1)'],\n seealso: ['multiply', 'nthRoot', 'nthRoots', 'sqrt']\n};", "export var roundDocs = {\n name: 'round',\n category: 'Arithmetic',\n syntax: ['round(x)', 'round(x, n)', 'round(unit, valuelessUnit)', 'round(unit, n, valuelessUnit)'],\n description: 'round a value towards the nearest integer.If x is complex, both real and imaginary part are rounded towards the nearest integer. When n is specified, the value is rounded to n decimals.',\n examples: ['round(3.2)', 'round(3.8)', 'round(-4.2)', 'round(-4.8)', 'round(pi, 3)', 'round(123.45678, 2)', 'round(3.241cm, 2, cm)', 'round([3.2, 3.8, -4.7])'],\n seealso: ['ceil', 'floor', 'fix']\n};", "export var signDocs = {\n name: 'sign',\n category: 'Arithmetic',\n syntax: ['sign(x)'],\n description: 'Compute the sign of a value. The sign of a value x is 1 when x>1, -1 when x<0, and 0 when x=0.',\n examples: ['sign(3.5)', 'sign(-4.2)', 'sign(0)'],\n seealso: ['abs']\n};", "export var sqrtDocs = {\n name: 'sqrt',\n category: 'Arithmetic',\n syntax: ['sqrt(x)'],\n description: 'Compute the square root value. If x = y * y, then y is the square root of x.',\n examples: ['sqrt(25)', '5 * 5', 'sqrt(-1)'],\n seealso: ['square', 'sqrtm', 'multiply', 'nthRoot', 'nthRoots', 'pow']\n};", "export var sqrtmDocs = {\n name: 'sqrtm',\n category: 'Arithmetic',\n syntax: ['sqrtm(x)'],\n description: 'Calculate the principal square root of a square matrix. The principal square root matrix `X` of another matrix `A` is such that `X * X = A`.',\n examples: ['sqrtm([[33, 24], [48, 57]])'],\n seealso: ['sqrt', 'abs', 'square', 'multiply']\n};", "export var sylvesterDocs = {\n name: 'sylvester',\n category: 'Algebra',\n syntax: ['sylvester(A,B,C)'],\n description: 'Solves the real-valued Sylvester equation AX+XB=C for X',\n examples: ['sylvester([[-1, -2], [1, 1]], [[-2, 1], [-1, 2]], [[-3, 2], [3, 0]])', 'A = [[-1, -2], [1, 1]]; B = [[2, -1], [1, -2]]; C = [[-3, 2], [3, 0]]', 'sylvester(A, B, C)'],\n seealso: ['schur', 'lyap']\n};", "export var schurDocs = {\n name: 'schur',\n category: 'Algebra',\n syntax: ['schur(A)'],\n description: 'Performs a real Schur decomposition of the real matrix A = UTU\\'',\n examples: ['schur([[1, 0], [-4, 3]])', 'A = [[1, 0], [-4, 3]]', 'schur(A)'],\n seealso: ['lyap', 'sylvester']\n};", "export var lyapDocs = {\n name: 'lyap',\n category: 'Algebra',\n syntax: ['lyap(A,Q)'],\n description: 'Solves the Continuous-time Lyapunov equation AP+PA\\'+Q=0 for P',\n examples: ['lyap([[-2, 0], [1, -4]], [[3, 1], [1, 3]])', 'A = [[-2, 0], [1, -4]]', 'Q = [[3, 1], [1, 3]]', 'lyap(A,Q)'],\n seealso: ['schur', 'sylvester']\n};", "export var squareDocs = {\n name: 'square',\n category: 'Arithmetic',\n syntax: ['square(x)'],\n description: 'Compute the square of a value. The square of x is x * x.',\n examples: ['square(3)', 'sqrt(9)', '3^2', '3 * 3'],\n seealso: ['multiply', 'pow', 'sqrt', 'cube']\n};", "export var subtractDocs = {\n name: 'subtract',\n category: 'Operators',\n syntax: ['x - y', 'subtract(x, y)'],\n description: 'subtract two values.',\n examples: ['a = 5.3 - 2', 'a + 2', '2/3 - 1/6', '2 * 3 - 3', '2.1 km - 500m'],\n seealso: ['add']\n};", "export var unaryMinusDocs = {\n name: 'unaryMinus',\n category: 'Operators',\n syntax: ['-x', 'unaryMinus(x)'],\n description: 'Inverse the sign of a value. Converts booleans and strings to numbers.',\n examples: ['-4.5', '-(-5.6)', '-\"22\"'],\n seealso: ['add', 'subtract', 'unaryPlus']\n};", "export var unaryPlusDocs = {\n name: 'unaryPlus',\n category: 'Operators',\n syntax: ['+x', 'unaryPlus(x)'],\n description: 'Converts booleans and strings to numbers.',\n examples: ['+true', '+\"2\"'],\n seealso: ['add', 'subtract', 'unaryMinus']\n};", "export var xgcdDocs = {\n name: 'xgcd',\n category: 'Arithmetic',\n syntax: ['xgcd(a, b)'],\n description: 'Calculate the extended greatest common divisor for two values. The result is an array [d, x, y] with 3 entries, where d is the greatest common divisor, and d = x * a + y * b.',\n examples: ['xgcd(8, 12)', 'gcd(8, 12)', 'xgcd(36163, 21199)'],\n seealso: ['gcd', 'lcm']\n};", "export var bitAndDocs = {\n name: 'bitAnd',\n category: 'Bitwise',\n syntax: ['x & y', 'bitAnd(x, y)'],\n description: 'Bitwise AND operation. Performs the logical AND operation on each pair of the corresponding bits of the two given values by multiplying them. If both bits in the compared position are 1, the bit in the resulting binary representation is 1, otherwise, the result is 0',\n examples: ['5 & 3', 'bitAnd(53, 131)', '[1, 12, 31] & 42'],\n seealso: ['bitNot', 'bitOr', 'bitXor', 'leftShift', 'rightArithShift', 'rightLogShift']\n};", "export var bitNotDocs = {\n name: 'bitNot',\n category: 'Bitwise',\n syntax: ['~x', 'bitNot(x)'],\n description: 'Bitwise NOT operation. Performs a logical negation on each bit of the given value. Bits that are 0 become 1, and those that are 1 become 0.',\n examples: ['~1', '~2', 'bitNot([2, -3, 4])'],\n seealso: ['bitAnd', 'bitOr', 'bitXor', 'leftShift', 'rightArithShift', 'rightLogShift']\n};", "export var bitOrDocs = {\n name: 'bitOr',\n category: 'Bitwise',\n syntax: ['x | y', 'bitOr(x, y)'],\n description: 'Bitwise OR operation. Performs the logical inclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if the first bit is 1 or the second bit is 1 or both bits are 1, otherwise, the result is 0.',\n examples: ['5 | 3', 'bitOr([1, 2, 3], 4)'],\n seealso: ['bitAnd', 'bitNot', 'bitXor', 'leftShift', 'rightArithShift', 'rightLogShift']\n};", "export var bitXorDocs = {\n name: 'bitXor',\n category: 'Bitwise',\n syntax: ['bitXor(x, y)'],\n description: 'Bitwise XOR operation, exclusive OR. Performs the logical exclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if only the first bit is 1 or only the second bit is 1, but will be 0 if both are 0 or both are 1.',\n examples: ['bitOr(1, 2)', 'bitXor([2, 3, 4], 4)'],\n seealso: ['bitAnd', 'bitNot', 'bitOr', 'leftShift', 'rightArithShift', 'rightLogShift']\n};", "export var leftShiftDocs = {\n name: 'leftShift',\n category: 'Bitwise',\n syntax: ['x << y', 'leftShift(x, y)'],\n description: 'Bitwise left logical shift of a value x by y number of bits.',\n examples: ['4 << 1', '8 >> 1'],\n seealso: ['bitAnd', 'bitNot', 'bitOr', 'bitXor', 'rightArithShift', 'rightLogShift']\n};", "export var rightArithShiftDocs = {\n name: 'rightArithShift',\n category: 'Bitwise',\n syntax: ['x >> y', 'rightArithShift(x, y)'],\n description: 'Bitwise right arithmetic shift of a value x by y number of bits.',\n examples: ['8 >> 1', '4 << 1', '-12 >> 2'],\n seealso: ['bitAnd', 'bitNot', 'bitOr', 'bitXor', 'leftShift', 'rightLogShift']\n};", "export var rightLogShiftDocs = {\n name: 'rightLogShift',\n category: 'Bitwise',\n syntax: ['x >>> y', 'rightLogShift(x, y)'],\n description: 'Bitwise right logical shift of a value x by y number of bits.',\n examples: ['8 >>> 1', '4 << 1', '-12 >>> 2'],\n seealso: ['bitAnd', 'bitNot', 'bitOr', 'bitXor', 'leftShift', 'rightArithShift']\n};", "export var bellNumbersDocs = {\n name: 'bellNumbers',\n category: 'Combinatorics',\n syntax: ['bellNumbers(n)'],\n description: 'The Bell Numbers count the number of partitions of a set. A partition is a pairwise disjoint subset of S whose union is S. `bellNumbers` only takes integer arguments. The following condition must be enforced: n >= 0.',\n examples: ['bellNumbers(3)', 'bellNumbers(8)'],\n seealso: ['stirlingS2']\n};", "export var catalanDocs = {\n name: 'catalan',\n category: 'Combinatorics',\n syntax: ['catalan(n)'],\n description: 'The Catalan Numbers enumerate combinatorial structures of many different types. catalan only takes integer arguments. The following condition must be enforced: n >= 0.',\n examples: ['catalan(3)', 'catalan(8)'],\n seealso: ['bellNumbers']\n};", "export var compositionDocs = {\n name: 'composition',\n category: 'Combinatorics',\n syntax: ['composition(n, k)'],\n description: 'The composition counts of n into k parts. composition only takes integer arguments. The following condition must be enforced: k <= n.',\n examples: ['composition(5, 3)'],\n seealso: ['combinations']\n};", "export var stirlingS2Docs = {\n name: 'stirlingS2',\n category: 'Combinatorics',\n syntax: ['stirlingS2(n, k)'],\n description: 'he Stirling numbers of the second kind, counts the number of ways to partition a set of n labelled objects into k nonempty unlabelled subsets. `stirlingS2` only takes integer arguments. The following condition must be enforced: k <= n. If n = k or k = 1, then s(n,k) = 1.',\n examples: ['stirlingS2(5, 3)'],\n seealso: ['bellNumbers']\n};", "export var argDocs = {\n name: 'arg',\n category: 'Complex',\n syntax: ['arg(x)'],\n description: 'Compute the argument of a complex value. If x = a+bi, the argument is computed as atan2(b, a).',\n examples: ['arg(2 + 2i)', 'atan2(3, 2)', 'arg(2 + 3i)'],\n seealso: ['re', 'im', 'conj', 'abs']\n};", "export var conjDocs = {\n name: 'conj',\n category: 'Complex',\n syntax: ['conj(x)'],\n description: 'Compute the complex conjugate of a complex value. If x = a+bi, the complex conjugate is a-bi.',\n examples: ['conj(2 + 3i)', 'conj(2 - 3i)', 'conj(-5.2i)'],\n seealso: ['re', 'im', 'abs', 'arg']\n};", "export var imDocs = {\n name: 'im',\n category: 'Complex',\n syntax: ['im(x)'],\n description: 'Get the imaginary part of a complex number.',\n examples: ['im(2 + 3i)', 're(2 + 3i)', 'im(-5.2i)', 'im(2.4)'],\n seealso: ['re', 'conj', 'abs', 'arg']\n};", "export var reDocs = {\n name: 're',\n category: 'Complex',\n syntax: ['re(x)'],\n description: 'Get the real part of a complex number.',\n examples: ['re(2 + 3i)', 'im(2 + 3i)', 're(-5.2i)', 're(2.4)'],\n seealso: ['im', 'conj', 'abs', 'arg']\n};", "export var evaluateDocs = {\n name: 'evaluate',\n category: 'Expression',\n syntax: ['evaluate(expression)', 'evaluate(expression, scope)', 'evaluate([expr1, expr2, expr3, ...])', 'evaluate([expr1, expr2, expr3, ...], scope)'],\n description: 'Evaluate an expression or an array with expressions.',\n examples: ['evaluate(\"2 + 3\")', 'evaluate(\"sqrt(16)\")', 'evaluate(\"2 inch to cm\")', 'evaluate(\"sin(x * pi)\", { \"x\": 1/2 })', 'evaluate([\"width=2\", \"height=4\",\"width*height\"])'],\n seealso: []\n};", "export var helpDocs = {\n name: 'help',\n category: 'Expression',\n syntax: ['help(object)', 'help(string)'],\n description: 'Display documentation on a function or data type.',\n examples: ['help(sqrt)', 'help(\"complex\")'],\n seealso: []\n};", "export var distanceDocs = {\n name: 'distance',\n category: 'Geometry',\n syntax: ['distance([x1, y1], [x2, y2])', 'distance([[x1, y1], [x2, y2]])'],\n description: 'Calculates the Euclidean distance between two points.',\n examples: ['distance([0,0], [4,4])', 'distance([[0,0], [4,4]])'],\n seealso: []\n};", "export var intersectDocs = {\n name: 'intersect',\n category: 'Geometry',\n syntax: ['intersect(expr1, expr2, expr3, expr4)', 'intersect(expr1, expr2, expr3)'],\n description: 'Computes the intersection point of lines and/or planes.',\n examples: ['intersect([0, 0], [10, 10], [10, 0], [0, 10])', 'intersect([1, 0, 1], [4, -2, 2], [1, 1, 1, 6])'],\n seealso: []\n};", "export var andDocs = {\n name: 'and',\n category: 'Logical',\n syntax: ['x and y', 'and(x, y)'],\n description: 'Logical and. Test whether two values are both defined with a nonzero/nonempty value.',\n examples: ['true and false', 'true and true', '2 and 4'],\n seealso: ['not', 'or', 'xor']\n};", "export var notDocs = {\n name: 'not',\n category: 'Logical',\n syntax: ['not x', 'not(x)'],\n description: 'Logical not. Flips the boolean value of given argument.',\n examples: ['not true', 'not false', 'not 2', 'not 0'],\n seealso: ['and', 'or', 'xor']\n};", "export var orDocs = {\n name: 'or',\n category: 'Logical',\n syntax: ['x or y', 'or(x, y)'],\n description: 'Logical or. Test if at least one value is defined with a nonzero/nonempty value.',\n examples: ['true or false', 'false or false', '0 or 4'],\n seealso: ['not', 'and', 'xor']\n};", "export var xorDocs = {\n name: 'xor',\n category: 'Logical',\n syntax: ['x xor y', 'xor(x, y)'],\n description: 'Logical exclusive or, xor. Test whether one and only one value is defined with a nonzero/nonempty value.',\n examples: ['true xor false', 'false xor false', 'true xor true', '0 xor 4'],\n seealso: ['not', 'and', 'or']\n};", "export var columnDocs = {\n name: 'column',\n category: 'Matrix',\n syntax: ['column(x, index)'],\n description: 'Return a column from a matrix or array.',\n examples: ['A = [[1, 2], [3, 4]]', 'column(A, 1)', 'column(A, 2)'],\n seealso: ['row', 'matrixFromColumns']\n};", "export var concatDocs = {\n name: 'concat',\n category: 'Matrix',\n syntax: ['concat(A, B, C, ...)', 'concat(A, B, C, ..., dim)'],\n description: 'Concatenate matrices. By default, the matrices are concatenated by the last dimension. The dimension on which to concatenate can be provided as last argument.',\n examples: ['A = [1, 2; 5, 6]', 'B = [3, 4; 7, 8]', 'concat(A, B)', 'concat(A, B, 1)', 'concat(A, B, 2)'],\n seealso: ['det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};", "export var countDocs = {\n name: 'count',\n category: 'Matrix',\n syntax: ['count(x)'],\n description: 'Count the number of elements of a matrix, array or string.',\n examples: ['a = [1, 2; 3, 4; 5, 6]', 'count(a)', 'size(a)', 'count(\"hello world\")'],\n seealso: ['size']\n};", "export var crossDocs = {\n name: 'cross',\n category: 'Matrix',\n syntax: ['cross(A, B)'],\n description: 'Calculate the cross product for two vectors in three dimensional space.',\n examples: ['cross([1, 1, 0], [0, 1, 1])', 'cross([3, -3, 1], [4, 9, 2])', 'cross([2, 3, 4], [5, 6, 7])'],\n seealso: ['multiply', 'dot']\n};", "export var ctransposeDocs = {\n name: 'ctranspose',\n category: 'Matrix',\n syntax: ['x\\'', 'ctranspose(x)'],\n description: 'Complex Conjugate and Transpose a matrix',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'a\\'', 'ctranspose(a)'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'zeros']\n};", "export var detDocs = {\n name: 'det',\n category: 'Matrix',\n syntax: ['det(x)'],\n description: 'Calculate the determinant of a matrix',\n examples: ['det([1, 2; 3, 4])', 'det([-2, 2, 3; -1, 1, 3; 2, 0, -1])'],\n seealso: ['concat', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};", "export var diagDocs = {\n name: 'diag',\n category: 'Matrix',\n syntax: ['diag(x)', 'diag(x, k)'],\n description: 'Create a diagonal matrix or retrieve the diagonal of a matrix. When x is a vector, a matrix with the vector values on the diagonal will be returned. When x is a matrix, a vector with the diagonal values of the matrix is returned. When k is provided, the k-th diagonal will be filled in or retrieved, if k is positive, the values are placed on the super diagonal. When k is negative, the values are placed on the sub diagonal.',\n examples: ['diag(1:3)', 'diag(1:3, 1)', 'a = [1, 2, 3; 4, 5, 6; 7, 8, 9]', 'diag(a)'],\n seealso: ['concat', 'det', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};", "export var diffDocs = {\n name: 'diff',\n category: 'Matrix',\n syntax: ['diff(arr)', 'diff(arr, dim)'],\n description: ['Create a new matrix or array with the difference of the passed matrix or array.', 'Dim parameter is optional and used to indicate the dimension of the array/matrix to apply the difference', 'If no dimension parameter is passed it is assumed as dimension 0', 'Dimension is zero-based in javascript and one-based in the parser', 'Arrays must be \\'rectangular\\' meaning arrays like [1, 2]', 'If something is passed as a matrix it will be returned as a matrix but other than that all matrices are converted to arrays'],\n examples: ['A = [1, 2, 4, 7, 0]', 'diff(A)', 'diff(A, 1)', 'B = [[1, 2], [3, 4]]', 'diff(B)', 'diff(B, 1)', 'diff(B, 2)', 'diff(B, bignumber(2))', 'diff([[1, 2], matrix([3, 4])], 2)'],\n seealso: ['subtract', 'partitionSelect']\n};", "export var dotDocs = {\n name: 'dot',\n category: 'Matrix',\n syntax: ['dot(A, B)', 'A * B'],\n description: 'Calculate the dot product of two vectors. ' + 'The dot product of A = [a1, a2, a3, ..., an] and B = [b1, b2, b3, ..., bn] ' + 'is defined as dot(A, B) = a1 * b1 + a2 * b2 + a3 * b3 + ... + an * bn',\n examples: ['dot([2, 4, 1], [2, 2, 3])', '[2, 4, 1] * [2, 2, 3]'],\n seealso: ['multiply', 'cross']\n};", "export var eigsDocs = {\n name: 'eigs',\n category: 'Matrix',\n syntax: ['eigs(x)'],\n description: 'Calculate the eigenvalues and optionally eigenvectors of a square matrix',\n examples: ['eigs([[5, 2.3], [2.3, 1]])', 'eigs([[1, 2, 3], [4, 5, 6], [7, 8, 9]], { precision: 1e-6, eigenvectors: false })'],\n seealso: ['inv']\n};", "export var filterDocs = {\n name: 'filter',\n category: 'Matrix',\n syntax: ['filter(x, test)'],\n description: 'Filter items in a matrix.',\n examples: ['isPositive(x) = x > 0', 'filter([6, -2, -1, 4, 3], isPositive)', 'filter([6, -2, 0, 1, 0], x != 0)'],\n seealso: ['sort', 'map', 'forEach']\n};", "export var flattenDocs = {\n name: 'flatten',\n category: 'Matrix',\n syntax: ['flatten(x)'],\n description: 'Flatten a multi dimensional matrix into a single dimensional matrix.',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'size(a)', 'b = flatten(a)', 'size(b)'],\n seealso: ['concat', 'resize', 'size', 'squeeze']\n};", "export var forEachDocs = {\n name: 'forEach',\n category: 'Matrix',\n syntax: ['forEach(x, callback)'],\n description: 'Iterates over all elements of a matrix/array, and executes the given callback function.',\n examples: ['numberOfPets = {}', 'addPet(n) = numberOfPets[n] = (numberOfPets[n] ? numberOfPets[n]:0 ) + 1;', 'forEach([\"Dog\",\"Cat\",\"Cat\"], addPet)', 'numberOfPets'],\n seealso: ['map', 'sort', 'filter']\n};", "export var getMatrixDataTypeDocs = {\n name: 'getMatrixDataType',\n category: 'Matrix',\n syntax: ['getMatrixDataType(x)'],\n description: 'Find the data type of all elements in a matrix or array, ' + 'for example \"number\" if all items are a number ' + 'and \"Complex\" if all values are complex numbers. ' + 'If a matrix contains more than one data type, it will return \"mixed\".',\n examples: ['getMatrixDataType([1, 2, 3])', 'getMatrixDataType([[5 cm], [2 inch]])', 'getMatrixDataType([1, \"text\"])', 'getMatrixDataType([1, bignumber(4)])'],\n seealso: ['matrix', 'sparse', 'typeOf']\n};", "export var identityDocs = {\n name: 'identity',\n category: 'Matrix',\n syntax: ['identity(n)', 'identity(m, n)', 'identity([m, n])'],\n description: 'Returns the identity matrix with size m-by-n. The matrix has ones on the diagonal and zeros elsewhere.',\n examples: ['identity(3)', 'identity(3, 5)', 'a = [1, 2, 3; 4, 5, 6]', 'identity(size(a))'],\n seealso: ['concat', 'det', 'diag', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};", "export var invDocs = {\n name: 'inv',\n category: 'Matrix',\n syntax: ['inv(x)'],\n description: 'Calculate the inverse of a matrix',\n examples: ['inv([1, 2; 3, 4])', 'inv(4)', '1 / 4'],\n seealso: ['concat', 'det', 'diag', 'identity', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};", "export var pinvDocs = {\n name: 'pinv',\n category: 'Matrix',\n syntax: ['pinv(x)'],\n description: 'Calculate the Moore\u2013Penrose inverse of a matrix',\n examples: ['pinv([1, 2; 3, 4])', 'pinv([[1, 0], [0, 1], [0, 1]])', 'pinv(4)'],\n seealso: ['inv']\n};", "export var kronDocs = {\n name: 'kron',\n category: 'Matrix',\n syntax: ['kron(x, y)'],\n description: 'Calculates the Kronecker product of 2 matrices or vectors.',\n examples: ['kron([[1, 0], [0, 1]], [[1, 2], [3, 4]])', 'kron([1,1], [2,3,4])'],\n seealso: ['multiply', 'dot', 'cross']\n};", "export var mapDocs = {\n name: 'map',\n category: 'Matrix',\n syntax: ['map(x, callback)', 'map(x, y, ..., callback)'],\n description: 'Create a new matrix or array with the results of the callback function executed on each entry of the matrix/array or the matrices/arrays.',\n examples: ['map([1, 2, 3], square)', 'map([1, 2], [3, 4], f(a,b) = a + b)'],\n seealso: ['filter', 'forEach']\n};", "export var matrixFromColumnsDocs = {\n name: 'matrixFromColumns',\n category: 'Matrix',\n syntax: ['matrixFromColumns(...arr)', 'matrixFromColumns(row1, row2)', 'matrixFromColumns(row1, row2, row3)'],\n description: 'Create a dense matrix from vectors as individual columns.',\n examples: ['matrixFromColumns([1, 2, 3], [[4],[5],[6]])'],\n seealso: ['matrix', 'matrixFromRows', 'matrixFromFunction', 'zeros']\n};", "export var matrixFromFunctionDocs = {\n name: 'matrixFromFunction',\n category: 'Matrix',\n syntax: ['matrixFromFunction(size, fn)', 'matrixFromFunction(size, fn, format)', 'matrixFromFunction(size, fn, format, datatype)', 'matrixFromFunction(size, format, fn)', 'matrixFromFunction(size, format, datatype, fn)'],\n description: 'Create a matrix by evaluating a generating function at each index.',\n examples: ['f(I) = I[1] - I[2]', 'matrixFromFunction([3,3], f)', 'g(I) = I[1] - I[2] == 1 ? 4 : 0', 'matrixFromFunction([100, 100], \"sparse\", g)', 'matrixFromFunction([5], random)'],\n seealso: ['matrix', 'matrixFromRows', 'matrixFromColumns', 'zeros']\n};", "export var matrixFromRowsDocs = {\n name: 'matrixFromRows',\n category: 'Matrix',\n syntax: ['matrixFromRows(...arr)', 'matrixFromRows(row1, row2)', 'matrixFromRows(row1, row2, row3)'],\n description: 'Create a dense matrix from vectors as individual rows.',\n examples: ['matrixFromRows([1, 2, 3], [[4],[5],[6]])'],\n seealso: ['matrix', 'matrixFromColumns', 'matrixFromFunction', 'zeros']\n};", "export var onesDocs = {\n name: 'ones',\n category: 'Matrix',\n syntax: ['ones(m)', 'ones(m, n)', 'ones(m, n, p, ...)', 'ones([m])', 'ones([m, n])', 'ones([m, n, p, ...])'],\n description: 'Create a matrix containing ones.',\n examples: ['ones(3)', 'ones(3, 5)', 'ones([2,3]) * 4.5', 'a = [1, 2, 3; 4, 5, 6]', 'ones(size(a))'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};", "export var partitionSelectDocs = {\n name: 'partitionSelect',\n category: 'Matrix',\n syntax: ['partitionSelect(x, k)', 'partitionSelect(x, k, compare)'],\n description: 'Partition-based selection of an array or 1D matrix. Will find the kth smallest value, and mutates the input array. Uses Quickselect.',\n examples: ['partitionSelect([5, 10, 1], 2)', 'partitionSelect([\"C\", \"B\", \"A\", \"D\"], 1, compareText)', 'arr = [5, 2, 1]', 'partitionSelect(arr, 0) # returns 1, arr is now: [1, 2, 5]', 'arr', 'partitionSelect(arr, 1, \\'desc\\') # returns 2, arr is now: [5, 2, 1]', 'arr'],\n seealso: ['sort']\n};", "export var rangeDocs = {\n name: 'range',\n category: 'Type',\n syntax: ['start:end', 'start:step:end', 'range(start, end)', 'range(start, end, step)', 'range(string)'],\n description: 'Create a range. Lower bound of the range is included, upper bound is excluded.',\n examples: ['1:5', '3:-1:-3', 'range(3, 7)', 'range(0, 12, 2)', 'range(\"4:10\")', 'range(1m, 1m, 3m)', 'a = [1, 2, 3, 4; 5, 6, 7, 8]', 'a[1:2, 1:2]'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};", "export var reshapeDocs = {\n name: 'reshape',\n category: 'Matrix',\n syntax: ['reshape(x, sizes)'],\n description: 'Reshape a multi dimensional array to fit the specified dimensions.',\n examples: ['reshape([1, 2, 3, 4, 5, 6], [2, 3])', 'reshape([[1, 2], [3, 4]], [1, 4])', 'reshape([[1, 2], [3, 4]], [4])', 'reshape([1, 2, 3, 4], [-1, 2])'],\n seealso: ['size', 'squeeze', 'resize']\n};", "export var resizeDocs = {\n name: 'resize',\n category: 'Matrix',\n syntax: ['resize(x, size)', 'resize(x, size, defaultValue)'],\n description: 'Resize a matrix.',\n examples: ['resize([1,2,3,4,5], [3])', 'resize([1,2,3], [5])', 'resize([1,2,3], [5], -1)', 'resize(2, [2, 3])', 'resize(\"hello\", [8], \"!\")'],\n seealso: ['size', 'subset', 'squeeze', 'reshape']\n};", "export var rotateDocs = {\n name: 'rotate',\n category: 'Matrix',\n syntax: ['rotate(w, theta)', 'rotate(w, theta, v)'],\n description: 'Returns a 2-D rotation matrix (2x2) for a given angle (in radians). ' + 'Returns a 2-D rotation matrix (3x3) of a given angle (in radians) around given axis.',\n examples: ['rotate([1, 0], pi / 2)', 'rotate(matrix([1, 0]), unit(\"35deg\"))', 'rotate([1, 0, 0], unit(\"90deg\"), [0, 0, 1])', 'rotate(matrix([1, 0, 0]), unit(\"90deg\"), matrix([0, 0, 1]))'],\n seealso: ['matrix', 'rotationMatrix']\n};", "export var rotationMatrixDocs = {\n name: 'rotationMatrix',\n category: 'Matrix',\n syntax: ['rotationMatrix(theta)', 'rotationMatrix(theta, v)', 'rotationMatrix(theta, v, format)'],\n description: 'Returns a 2-D rotation matrix (2x2) for a given angle (in radians). ' + 'Returns a 2-D rotation matrix (3x3) of a given angle (in radians) around given axis.',\n examples: ['rotationMatrix(pi / 2)', 'rotationMatrix(unit(\"45deg\"), [0, 0, 1])', 'rotationMatrix(1, matrix([0, 0, 1]), \"sparse\")'],\n seealso: ['cos', 'sin']\n};", "export var rowDocs = {\n name: 'row',\n category: 'Matrix',\n syntax: ['row(x, index)'],\n description: 'Return a row from a matrix or array.',\n examples: ['A = [[1, 2], [3, 4]]', 'row(A, 1)', 'row(A, 2)'],\n seealso: ['column', 'matrixFromRows']\n};", "export var sizeDocs = {\n name: 'size',\n category: 'Matrix',\n syntax: ['size(x)'],\n description: 'Calculate the size of a matrix.',\n examples: ['size(2.3)', 'size(\"hello world\")', 'a = [1, 2; 3, 4; 5, 6]', 'size(a)', 'size(1:6)'],\n seealso: ['concat', 'count', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};", "export var sortDocs = {\n name: 'sort',\n category: 'Matrix',\n syntax: ['sort(x)', 'sort(x, compare)'],\n description: 'Sort the items in a matrix. Compare can be a string \"asc\", \"desc\", \"natural\", or a custom sort function.',\n examples: ['sort([5, 10, 1])', 'sort([\"C\", \"B\", \"A\", \"D\"], \"natural\")', 'sortByLength(a, b) = size(a)[1] - size(b)[1]', 'sort([\"Langdon\", \"Tom\", \"Sara\"], sortByLength)', 'sort([\"10\", \"1\", \"2\"], \"natural\")'],\n seealso: ['map', 'filter', 'forEach']\n};", "export var squeezeDocs = {\n name: 'squeeze',\n category: 'Matrix',\n syntax: ['squeeze(x)'],\n description: 'Remove inner and outer singleton dimensions from a matrix.',\n examples: ['a = zeros(3,2,1)', 'size(squeeze(a))', 'b = zeros(1,1,3)', 'size(squeeze(b))'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'subset', 'trace', 'transpose', 'zeros']\n};", "export var subsetDocs = {\n name: 'subset',\n category: 'Matrix',\n syntax: ['value(index)', 'value(index) = replacement', 'subset(value, [index])', 'subset(value, [index], replacement)'],\n description: 'Get or set a subset of the entries of a matrix or ' + 'characters of a string. ' + 'Indexes are one-based. There should be one index specification for ' + 'each dimension of the target. Each specification can be a single ' + 'index, a list of indices, or a range in colon notation `l:u`. ' + 'In a range, both the lower bound l and upper bound u are included; ' + 'and if a bound is omitted it defaults to the most extreme valid value. ' + 'The cartesian product of the indices specified in each dimension ' + 'determines the target of the operation.',\n examples: ['d = [1, 2; 3, 4]', 'e = []', 'e[1, 1:2] = [5, 6]', 'e[2, :] = [7, 8]', 'f = d * e', 'f[2, 1]', 'f[:, 1]', 'f[[1,2], [1,3]] = [9, 10; 11, 12]', 'f'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'trace', 'transpose', 'zeros']\n};", "export var traceDocs = {\n name: 'trace',\n category: 'Matrix',\n syntax: ['trace(A)'],\n description: 'Calculate the trace of a matrix: the sum of the elements on the main diagonal of a square matrix.',\n examples: ['A = [1, 2, 3; -1, 2, 3; 2, 0, 3]', 'trace(A)'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'transpose', 'zeros']\n};", "export var transposeDocs = {\n name: 'transpose',\n category: 'Matrix',\n syntax: ['x\\'', 'transpose(x)'],\n description: 'Transpose a matrix',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'a\\'', 'transpose(a)'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'zeros']\n};", "export var zerosDocs = {\n name: 'zeros',\n category: 'Matrix',\n syntax: ['zeros(m)', 'zeros(m, n)', 'zeros(m, n, p, ...)', 'zeros([m])', 'zeros([m, n])', 'zeros([m, n, p, ...])'],\n description: 'Create a matrix containing zeros.',\n examples: ['zeros(3)', 'zeros(3, 5)', 'a = [1, 2, 3; 4, 5, 6]', 'zeros(size(a))'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose']\n};", "export var fftDocs = {\n name: 'fft',\n category: 'Matrix',\n syntax: ['fft(x)'],\n description: 'Calculate N-dimensional Fourier transform',\n examples: ['fft([[1, 0], [1, 0]])'],\n seealso: ['ifft']\n};", "export var ifftDocs = {\n name: 'ifft',\n category: 'Matrix',\n syntax: ['ifft(x)'],\n description: 'Calculate N-dimensional inverse Fourier transform',\n examples: ['ifft([[2, 2], [0, 0]])'],\n seealso: ['fft']\n};", "export var combinationsDocs = {\n name: 'combinations',\n category: 'Probability',\n syntax: ['combinations(n, k)'],\n description: 'Compute the number of combinations of n items taken k at a time',\n examples: ['combinations(7, 5)'],\n seealso: ['combinationsWithRep', 'permutations', 'factorial']\n};", "export var combinationsWithRepDocs = {\n name: 'combinationsWithRep',\n category: 'Probability',\n syntax: ['combinationsWithRep(n, k)'],\n description: 'Compute the number of combinations of n items taken k at a time with replacements.',\n examples: ['combinationsWithRep(7, 5)'],\n seealso: ['combinations', 'permutations', 'factorial']\n};", "export var factorialDocs = {\n name: 'factorial',\n category: 'Probability',\n syntax: ['n!', 'factorial(n)'],\n description: 'Compute the factorial of a value',\n examples: ['5!', '5 * 4 * 3 * 2 * 1', '3!'],\n seealso: ['combinations', 'combinationsWithRep', 'permutations', 'gamma']\n};", "export var gammaDocs = {\n name: 'gamma',\n category: 'Probability',\n syntax: ['gamma(n)'],\n description: 'Compute the gamma function. For small values, the Lanczos approximation is used, and for large values the extended Stirling approximation.',\n examples: ['gamma(4)', '3!', 'gamma(1/2)', 'sqrt(pi)'],\n seealso: ['factorial']\n};", "export var lgammaDocs = {\n name: 'lgamma',\n category: 'Probability',\n syntax: ['lgamma(n)'],\n description: 'Logarithm of the gamma function for real, positive numbers and complex numbers, ' + 'using Lanczos approximation for numbers and Stirling series for complex numbers.',\n examples: ['lgamma(4)', 'lgamma(1/2)', 'lgamma(i)', 'lgamma(complex(1.1, 2))'],\n seealso: ['gamma']\n};", "export var kldivergenceDocs = {\n name: 'kldivergence',\n category: 'Probability',\n syntax: ['kldivergence(x, y)'],\n description: 'Calculate the Kullback-Leibler (KL) divergence between two distributions.',\n examples: ['kldivergence([0.7,0.5,0.4], [0.2,0.9,0.5])'],\n seealso: []\n};", "export var multinomialDocs = {\n name: 'multinomial',\n category: 'Probability',\n syntax: ['multinomial(A)'],\n description: 'Multinomial Coefficients compute the number of ways of picking a1, a2, ..., ai unordered outcomes from `n` possibilities. multinomial takes one array of integers as an argument. The following condition must be enforced: every ai > 0.',\n examples: ['multinomial([1, 2, 1])'],\n seealso: ['combinations', 'factorial']\n};", "export var permutationsDocs = {\n name: 'permutations',\n category: 'Probability',\n syntax: ['permutations(n)', 'permutations(n, k)'],\n description: 'Compute the number of permutations of n items taken k at a time',\n examples: ['permutations(5)', 'permutations(5, 3)'],\n seealso: ['combinations', 'combinationsWithRep', 'factorial']\n};", "export var pickRandomDocs = {\n name: 'pickRandom',\n category: 'Probability',\n syntax: ['pickRandom(array)', 'pickRandom(array, number)', 'pickRandom(array, weights)', 'pickRandom(array, number, weights)', 'pickRandom(array, weights, number)'],\n description: 'Pick a random entry from a given array.',\n examples: ['pickRandom(0:10)', 'pickRandom([1, 3, 1, 6])', 'pickRandom([1, 3, 1, 6], 2)', 'pickRandom([1, 3, 1, 6], [2, 3, 2, 1])', 'pickRandom([1, 3, 1, 6], 2, [2, 3, 2, 1])', 'pickRandom([1, 3, 1, 6], [2, 3, 2, 1], 2)'],\n seealso: ['random', 'randomInt']\n};", "export var randomDocs = {\n name: 'random',\n category: 'Probability',\n syntax: ['random()', 'random(max)', 'random(min, max)', 'random(size)', 'random(size, max)', 'random(size, min, max)'],\n description: 'Return a random number.',\n examples: ['random()', 'random(10, 20)', 'random([2, 3])'],\n seealso: ['pickRandom', 'randomInt']\n};", "export var randomIntDocs = {\n name: 'randomInt',\n category: 'Probability',\n syntax: ['randomInt(max)', 'randomInt(min, max)', 'randomInt(size)', 'randomInt(size, max)', 'randomInt(size, min, max)'],\n description: 'Return a random integer number',\n examples: ['randomInt(10, 20)', 'randomInt([2, 3], 10)'],\n seealso: ['pickRandom', 'random']\n};", "export var compareDocs = {\n name: 'compare',\n category: 'Relational',\n syntax: ['compare(x, y)'],\n description: 'Compare two values. ' + 'Returns 1 when x > y, -1 when x < y, and 0 when x == y.',\n examples: ['compare(2, 3)', 'compare(3, 2)', 'compare(2, 2)', 'compare(5cm, 40mm)', 'compare(2, [1, 2, 3])'],\n seealso: ['equal', 'unequal', 'smaller', 'smallerEq', 'largerEq', 'compareNatural', 'compareText']\n};", "export var compareNaturalDocs = {\n name: 'compareNatural',\n category: 'Relational',\n syntax: ['compareNatural(x, y)'],\n description: 'Compare two values of any type in a deterministic, natural way. ' + 'Returns 1 when x > y, -1 when x < y, and 0 when x == y.',\n examples: ['compareNatural(2, 3)', 'compareNatural(3, 2)', 'compareNatural(2, 2)', 'compareNatural(5cm, 40mm)', 'compareNatural(\"2\", \"10\")', 'compareNatural(2 + 3i, 2 + 4i)', 'compareNatural([1, 2, 4], [1, 2, 3])', 'compareNatural([1, 5], [1, 2, 3])', 'compareNatural([1, 2], [1, 2])', 'compareNatural({a: 2}, {a: 4})'],\n seealso: ['equal', 'unequal', 'smaller', 'smallerEq', 'largerEq', 'compare', 'compareText']\n};", "export var compareTextDocs = {\n name: 'compareText',\n category: 'Relational',\n syntax: ['compareText(x, y)'],\n description: 'Compare two strings lexically. Comparison is case sensitive. ' + 'Returns 1 when x > y, -1 when x < y, and 0 when x == y.',\n examples: ['compareText(\"B\", \"A\")', 'compareText(\"A\", \"B\")', 'compareText(\"A\", \"A\")', 'compareText(\"2\", \"10\")', 'compare(\"2\", \"10\")', 'compare(2, 10)', 'compareNatural(\"2\", \"10\")', 'compareText(\"B\", [\"A\", \"B\", \"C\"])'],\n seealso: ['compare', 'compareNatural']\n};", "export var deepEqualDocs = {\n name: 'deepEqual',\n category: 'Relational',\n syntax: ['deepEqual(x, y)'],\n description: 'Check equality of two matrices element wise. Returns true if the size of both matrices is equal and when and each of the elements are equal.',\n examples: ['deepEqual([1,3,4], [1,3,4])', 'deepEqual([1,3,4], [1,3])'],\n seealso: ['equal', 'unequal', 'smaller', 'larger', 'smallerEq', 'largerEq', 'compare']\n};", "export var equalDocs = {\n name: 'equal',\n category: 'Relational',\n syntax: ['x == y', 'equal(x, y)'],\n description: 'Check equality of two values. Returns true if the values are equal, and false if not.',\n examples: ['2+2 == 3', '2+2 == 4', 'a = 3.2', 'b = 6-2.8', 'a == b', '50cm == 0.5m'],\n seealso: ['unequal', 'smaller', 'larger', 'smallerEq', 'largerEq', 'compare', 'deepEqual', 'equalText']\n};", "export var equalTextDocs = {\n name: 'equalText',\n category: 'Relational',\n syntax: ['equalText(x, y)'],\n description: 'Check equality of two strings. Comparison is case sensitive. Returns true if the values are equal, and false if not.',\n examples: ['equalText(\"Hello\", \"Hello\")', 'equalText(\"a\", \"A\")', 'equal(\"2e3\", \"2000\")', 'equalText(\"2e3\", \"2000\")', 'equalText(\"B\", [\"A\", \"B\", \"C\"])'],\n seealso: ['compare', 'compareNatural', 'compareText', 'equal']\n};", "export var largerDocs = {\n name: 'larger',\n category: 'Relational',\n syntax: ['x > y', 'larger(x, y)'],\n description: 'Check if value x is larger than y. Returns true if x is larger than y, and false if not.',\n examples: ['2 > 3', '5 > 2*2', 'a = 3.3', 'b = 6-2.8', '(a > b)', '(b < a)', '5 cm > 2 inch'],\n seealso: ['equal', 'unequal', 'smaller', 'smallerEq', 'largerEq', 'compare']\n};", "export var largerEqDocs = {\n name: 'largerEq',\n category: 'Relational',\n syntax: ['x >= y', 'largerEq(x, y)'],\n description: 'Check if value x is larger or equal to y. Returns true if x is larger or equal to y, and false if not.',\n examples: ['2 >= 1+1', '2 > 1+1', 'a = 3.2', 'b = 6-2.8', '(a >= b)'],\n seealso: ['equal', 'unequal', 'smallerEq', 'smaller', 'compare']\n};", "export var smallerDocs = {\n name: 'smaller',\n category: 'Relational',\n syntax: ['x < y', 'smaller(x, y)'],\n description: 'Check if value x is smaller than value y. Returns true if x is smaller than y, and false if not.',\n examples: ['2 < 3', '5 < 2*2', 'a = 3.3', 'b = 6-2.8', '(a < b)', '5 cm < 2 inch'],\n seealso: ['equal', 'unequal', 'larger', 'smallerEq', 'largerEq', 'compare']\n};", "export var smallerEqDocs = {\n name: 'smallerEq',\n category: 'Relational',\n syntax: ['x <= y', 'smallerEq(x, y)'],\n description: 'Check if value x is smaller or equal to value y. Returns true if x is smaller than y, and false if not.',\n examples: ['2 <= 1+1', '2 < 1+1', 'a = 3.2', 'b = 6-2.8', '(a <= b)'],\n seealso: ['equal', 'unequal', 'larger', 'smaller', 'largerEq', 'compare']\n};", "export var unequalDocs = {\n name: 'unequal',\n category: 'Relational',\n syntax: ['x != y', 'unequal(x, y)'],\n description: 'Check unequality of two values. Returns true if the values are unequal, and false if they are equal.',\n examples: ['2+2 != 3', '2+2 != 4', 'a = 3.2', 'b = 6-2.8', 'a != b', '50cm != 0.5m', '5 cm != 2 inch'],\n seealso: ['equal', 'smaller', 'larger', 'smallerEq', 'largerEq', 'compare', 'deepEqual']\n};", "export var setCartesianDocs = {\n name: 'setCartesian',\n category: 'Set',\n syntax: ['setCartesian(set1, set2)'],\n description: 'Create the cartesian product of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays and the values will be sorted in ascending order before the operation.',\n examples: ['setCartesian([1, 2], [3, 4])'],\n seealso: ['setUnion', 'setIntersect', 'setDifference', 'setPowerset']\n};", "export var setDifferenceDocs = {\n name: 'setDifference',\n category: 'Set',\n syntax: ['setDifference(set1, set2)'],\n description: 'Create the difference of two (multi)sets: every element of set1, that is not the element of set2. Multi-dimension arrays will be converted to single-dimension arrays before the operation.',\n examples: ['setDifference([1, 2, 3, 4], [3, 4, 5, 6])', 'setDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]])'],\n seealso: ['setUnion', 'setIntersect', 'setSymDifference']\n};", "export var setDistinctDocs = {\n name: 'setDistinct',\n category: 'Set',\n syntax: ['setDistinct(set)'],\n description: 'Collect the distinct elements of a multiset. A multi-dimension array will be converted to a single-dimension array before the operation.',\n examples: ['setDistinct([1, 1, 1, 2, 2, 3])'],\n seealso: ['setMultiplicity']\n};", "export var setIntersectDocs = {\n name: 'setIntersect',\n category: 'Set',\n syntax: ['setIntersect(set1, set2)'],\n description: 'Create the intersection of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.',\n examples: ['setIntersect([1, 2, 3, 4], [3, 4, 5, 6])', 'setIntersect([[1, 2], [3, 4]], [[3, 4], [5, 6]])'],\n seealso: ['setUnion', 'setDifference']\n};", "export var setIsSubsetDocs = {\n name: 'setIsSubset',\n category: 'Set',\n syntax: ['setIsSubset(set1, set2)'],\n description: 'Check whether a (multi)set is a subset of another (multi)set: every element of set1 is the element of set2. Multi-dimension arrays will be converted to single-dimension arrays before the operation.',\n examples: ['setIsSubset([1, 2], [3, 4, 5, 6])', 'setIsSubset([3, 4], [3, 4, 5, 6])'],\n seealso: ['setUnion', 'setIntersect', 'setDifference']\n};", "export var setMultiplicityDocs = {\n name: 'setMultiplicity',\n category: 'Set',\n syntax: ['setMultiplicity(element, set)'],\n description: 'Count the multiplicity of an element in a multiset. A multi-dimension array will be converted to a single-dimension array before the operation.',\n examples: ['setMultiplicity(1, [1, 2, 2, 4])', 'setMultiplicity(2, [1, 2, 2, 4])'],\n seealso: ['setDistinct', 'setSize']\n};", "export var setPowersetDocs = {\n name: 'setPowerset',\n category: 'Set',\n syntax: ['setPowerset(set)'],\n description: 'Create the powerset of a (multi)set: the powerset contains very possible subsets of a (multi)set. A multi-dimension array will be converted to a single-dimension array before the operation.',\n examples: ['setPowerset([1, 2, 3])'],\n seealso: ['setCartesian']\n};", "export var setSizeDocs = {\n name: 'setSize',\n category: 'Set',\n syntax: ['setSize(set)', 'setSize(set, unique)'],\n description: 'Count the number of elements of a (multi)set. When the second parameter \"unique\" is true, count only the unique values. A multi-dimension array will be converted to a single-dimension array before the operation.',\n examples: ['setSize([1, 2, 2, 4])', 'setSize([1, 2, 2, 4], true)'],\n seealso: ['setUnion', 'setIntersect', 'setDifference']\n};", "export var setSymDifferenceDocs = {\n name: 'setSymDifference',\n category: 'Set',\n syntax: ['setSymDifference(set1, set2)'],\n description: 'Create the symmetric difference of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.',\n examples: ['setSymDifference([1, 2, 3, 4], [3, 4, 5, 6])', 'setSymDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]])'],\n seealso: ['setUnion', 'setIntersect', 'setDifference']\n};", "export var setUnionDocs = {\n name: 'setUnion',\n category: 'Set',\n syntax: ['setUnion(set1, set2)'],\n description: 'Create the union of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.',\n examples: ['setUnion([1, 2, 3, 4], [3, 4, 5, 6])', 'setUnion([[1, 2], [3, 4]], [[3, 4], [5, 6]])'],\n seealso: ['setIntersect', 'setDifference']\n};", "export var zpk2tfDocs = {\n name: 'zpk2tf',\n category: 'Signal',\n syntax: ['zpk2tf(z, p, k)'],\n description: 'Compute the transfer function of a zero-pole-gain model.',\n examples: ['zpk2tf([1, 2], [-1, -2], 1)', 'zpk2tf([1, 2], [-1, -2])', 'zpk2tf([1 - 3i, 2 + 2i], [-1, -2])'],\n seealso: []\n};", "export var freqzDocs = {\n name: 'freqz',\n category: 'Signal',\n syntax: ['freqz(b, a)', 'freqz(b, a, w)'],\n description: 'Calculates the frequency response of a filter given its numerator and denominator coefficients.',\n examples: ['freqz([1, 2], [1, 2, 3])', 'freqz([1, 2], [1, 2, 3], [0, 1])', 'freqz([1, 2], [1, 2, 3], 512)'],\n seealso: []\n};", "export var erfDocs = {\n name: 'erf',\n category: 'Special',\n syntax: ['erf(x)'],\n description: 'Compute the erf function of a value using a rational Chebyshev approximations for different intervals of x',\n examples: ['erf(0.2)', 'erf(-0.5)', 'erf(4)'],\n seealso: []\n};", "export var zetaDocs = {\n name: 'zeta',\n category: 'Special',\n syntax: ['zeta(s)'],\n description: 'Compute the Riemann Zeta Function using an infinite series and Riemann\\'s Functional Equation for the entire complex plane',\n examples: ['zeta(0.2)', 'zeta(-0.5)', 'zeta(4)'],\n seealso: []\n};", "export var madDocs = {\n name: 'mad',\n category: 'Statistics',\n syntax: ['mad(a, b, c, ...)', 'mad(A)'],\n description: 'Compute the median absolute deviation of a matrix or a list with values. The median absolute deviation is defined as the median of the absolute deviations from the median.',\n examples: ['mad(10, 20, 30)', 'mad([1, 2, 3])'],\n seealso: ['mean', 'median', 'std', 'abs']\n};", "export var maxDocs = {\n name: 'max',\n category: 'Statistics',\n syntax: ['max(a, b, c, ...)', 'max(A)', 'max(A, dimension)'],\n description: 'Compute the maximum value of a list of values.',\n examples: ['max(2, 3, 4, 1)', 'max([2, 3, 4, 1])', 'max([2, 5; 4, 3])', 'max([2, 5; 4, 3], 1)', 'max([2, 5; 4, 3], 2)', 'max(2.7, 7.1, -4.5, 2.0, 4.1)', 'min(2.7, 7.1, -4.5, 2.0, 4.1)'],\n seealso: ['mean', 'median', 'min', 'prod', 'std', 'sum', 'variance']\n};", "export var meanDocs = {\n name: 'mean',\n category: 'Statistics',\n syntax: ['mean(a, b, c, ...)', 'mean(A)', 'mean(A, dimension)'],\n description: 'Compute the arithmetic mean of a list of values.',\n examples: ['mean(2, 3, 4, 1)', 'mean([2, 3, 4, 1])', 'mean([2, 5; 4, 3])', 'mean([2, 5; 4, 3], 1)', 'mean([2, 5; 4, 3], 2)', 'mean([1.0, 2.7, 3.2, 4.0])'],\n seealso: ['max', 'median', 'min', 'prod', 'std', 'sum', 'variance']\n};", "export var medianDocs = {\n name: 'median',\n category: 'Statistics',\n syntax: ['median(a, b, c, ...)', 'median(A)'],\n description: 'Compute the median of all values. The values are sorted and the middle value is returned. In case of an even number of values, the average of the two middle values is returned.',\n examples: ['median(5, 2, 7)', 'median([3, -1, 5, 7])'],\n seealso: ['max', 'mean', 'min', 'prod', 'std', 'sum', 'variance', 'quantileSeq']\n};", "export var minDocs = {\n name: 'min',\n category: 'Statistics',\n syntax: ['min(a, b, c, ...)', 'min(A)', 'min(A, dimension)'],\n description: 'Compute the minimum value of a list of values.',\n examples: ['min(2, 3, 4, 1)', 'min([2, 3, 4, 1])', 'min([2, 5; 4, 3])', 'min([2, 5; 4, 3], 1)', 'min([2, 5; 4, 3], 2)', 'min(2.7, 7.1, -4.5, 2.0, 4.1)', 'max(2.7, 7.1, -4.5, 2.0, 4.1)'],\n seealso: ['max', 'mean', 'median', 'prod', 'std', 'sum', 'variance']\n};", "export var modeDocs = {\n name: 'mode',\n category: 'Statistics',\n syntax: ['mode(a, b, c, ...)', 'mode(A)', 'mode(A, a, b, B, c, ...)'],\n description: 'Computes the mode of all values as an array. In case mode being more than one, multiple values are returned in an array.',\n examples: ['mode(2, 1, 4, 3, 1)', 'mode([1, 2.7, 3.2, 4, 2.7])', 'mode(1, 4, 6, 1, 6)'],\n seealso: ['max', 'mean', 'min', 'median', 'prod', 'std', 'sum', 'variance']\n};", "export var prodDocs = {\n name: 'prod',\n category: 'Statistics',\n syntax: ['prod(a, b, c, ...)', 'prod(A)'],\n description: 'Compute the product of all values.',\n examples: ['prod(2, 3, 4)', 'prod([2, 3, 4])', 'prod([2, 5; 4, 3])'],\n seealso: ['max', 'mean', 'min', 'median', 'min', 'std', 'sum', 'variance']\n};", "export var quantileSeqDocs = {\n name: 'quantileSeq',\n category: 'Statistics',\n syntax: ['quantileSeq(A, prob[, sorted])', 'quantileSeq(A, [prob1, prob2, ...][, sorted])', 'quantileSeq(A, N[, sorted])'],\n description: 'Compute the prob order quantile of a matrix or a list with values. The sequence is sorted and the middle value is returned. Supported types of sequence values are: Number, BigNumber, Unit Supported types of probability are: Number, BigNumber. \\n\\nIn case of a (multi dimensional) array or matrix, the prob order quantile of all elements will be calculated.',\n examples: ['quantileSeq([3, -1, 5, 7], 0.5)', 'quantileSeq([3, -1, 5, 7], [1/3, 2/3])', 'quantileSeq([3, -1, 5, 7], 2)', 'quantileSeq([-1, 3, 5, 7], 0.5, true)'],\n seealso: ['mean', 'median', 'min', 'max', 'prod', 'std', 'sum', 'variance']\n};", "export var stdDocs = {\n name: 'std',\n category: 'Statistics',\n syntax: ['std(a, b, c, ...)', 'std(A)', 'std(A, dimension)', 'std(A, normalization)', 'std(A, dimension, normalization)'],\n description: 'Compute the standard deviation of all values, defined as std(A) = sqrt(variance(A)). Optional parameter normalization can be \"unbiased\" (default), \"uncorrected\", or \"biased\".',\n examples: ['std(2, 4, 6)', 'std([2, 4, 6, 8])', 'std([2, 4, 6, 8], \"uncorrected\")', 'std([2, 4, 6, 8], \"biased\")', 'std([1, 2, 3; 4, 5, 6])'],\n seealso: ['max', 'mean', 'min', 'median', 'prod', 'sum', 'variance']\n};", "export var cumSumDocs = {\n name: 'cumsum',\n category: 'Statistics',\n syntax: ['cumsum(a, b, c, ...)', 'cumsum(A)'],\n description: 'Compute the cumulative sum of all values.',\n examples: ['cumsum(2, 3, 4, 1)', 'cumsum([2, 3, 4, 1])', 'cumsum([1, 2; 3, 4])', 'cumsum([1, 2; 3, 4], 1)', 'cumsum([1, 2; 3, 4], 2)'],\n seealso: ['max', 'mean', 'median', 'min', 'prod', 'std', 'sum', 'variance']\n};", "export var sumDocs = {\n name: 'sum',\n category: 'Statistics',\n syntax: ['sum(a, b, c, ...)', 'sum(A)', 'sum(A, dimension)'],\n description: 'Compute the sum of all values.',\n examples: ['sum(2, 3, 4, 1)', 'sum([2, 3, 4, 1])', 'sum([2, 5; 4, 3])'],\n seealso: ['max', 'mean', 'median', 'min', 'prod', 'std', 'sum', 'variance']\n};", "export var varianceDocs = {\n name: 'variance',\n category: 'Statistics',\n syntax: ['variance(a, b, c, ...)', 'variance(A)', 'variance(A, dimension)', 'variance(A, normalization)', 'variance(A, dimension, normalization)'],\n description: 'Compute the variance of all values. Optional parameter normalization can be \"unbiased\" (default), \"uncorrected\", or \"biased\".',\n examples: ['variance(2, 4, 6)', 'variance([2, 4, 6, 8])', 'variance([2, 4, 6, 8], \"uncorrected\")', 'variance([2, 4, 6, 8], \"biased\")', 'variance([1, 2, 3; 4, 5, 6])'],\n seealso: ['max', 'mean', 'min', 'median', 'min', 'prod', 'std', 'sum']\n};", "export var corrDocs = {\n name: 'corr',\n category: 'Statistics',\n syntax: ['corr(A,B)'],\n description: 'Compute the correlation coefficient of a two list with values, For matrices, the matrix correlation coefficient is calculated.',\n examples: ['corr([2, 4, 6, 8],[1, 2, 3, 6])', 'corr(matrix([[1, 2.2, 3, 4.8, 5], [1, 2, 3, 4, 5]]), matrix([[4, 5.3, 6.6, 7, 8], [1, 2, 3, 4, 5]]))'],\n seealso: ['max', 'mean', 'min', 'median', 'min', 'prod', 'std', 'sum']\n};", "export var acosDocs = {\n name: 'acos',\n category: 'Trigonometry',\n syntax: ['acos(x)'],\n description: 'Compute the inverse cosine of a value in radians.',\n examples: ['acos(0.5)', 'acos(cos(2.3))'],\n seealso: ['cos', 'atan', 'asin']\n};", "export var acoshDocs = {\n name: 'acosh',\n category: 'Trigonometry',\n syntax: ['acosh(x)'],\n description: 'Calculate the hyperbolic arccos of a value, defined as `acosh(x) = ln(sqrt(x^2 - 1) + x)`.',\n examples: ['acosh(1.5)'],\n seealso: ['cosh', 'asinh', 'atanh']\n};", "export var acotDocs = {\n name: 'acot',\n category: 'Trigonometry',\n syntax: ['acot(x)'],\n description: 'Calculate the inverse cotangent of a value.',\n examples: ['acot(0.5)', 'acot(cot(0.5))', 'acot(2)'],\n seealso: ['cot', 'atan']\n};", "export var acothDocs = {\n name: 'acoth',\n category: 'Trigonometry',\n syntax: ['acoth(x)'],\n description: 'Calculate the inverse hyperbolic tangent of a value, defined as `acoth(x) = (ln((x+1)/x) + ln(x/(x-1))) / 2`.',\n examples: ['acoth(2)', 'acoth(0.5)'],\n seealso: ['acsch', 'asech']\n};", "export var acscDocs = {\n name: 'acsc',\n category: 'Trigonometry',\n syntax: ['acsc(x)'],\n description: 'Calculate the inverse cotangent of a value.',\n examples: ['acsc(2)', 'acsc(csc(0.5))', 'acsc(0.5)'],\n seealso: ['csc', 'asin', 'asec']\n};", "export var acschDocs = {\n name: 'acsch',\n category: 'Trigonometry',\n syntax: ['acsch(x)'],\n description: 'Calculate the inverse hyperbolic cosecant of a value, defined as `acsch(x) = ln(1/x + sqrt(1/x^2 + 1))`.',\n examples: ['acsch(0.5)'],\n seealso: ['asech', 'acoth']\n};", "export var asecDocs = {\n name: 'asec',\n category: 'Trigonometry',\n syntax: ['asec(x)'],\n description: 'Calculate the inverse secant of a value.',\n examples: ['asec(0.5)', 'asec(sec(0.5))', 'asec(2)'],\n seealso: ['acos', 'acot', 'acsc']\n};", "export var asechDocs = {\n name: 'asech',\n category: 'Trigonometry',\n syntax: ['asech(x)'],\n description: 'Calculate the inverse secant of a value.',\n examples: ['asech(0.5)'],\n seealso: ['acsch', 'acoth']\n};", "export var asinDocs = {\n name: 'asin',\n category: 'Trigonometry',\n syntax: ['asin(x)'],\n description: 'Compute the inverse sine of a value in radians.',\n examples: ['asin(0.5)', 'asin(sin(0.5))'],\n seealso: ['sin', 'acos', 'atan']\n};", "export var asinhDocs = {\n name: 'asinh',\n category: 'Trigonometry',\n syntax: ['asinh(x)'],\n description: 'Calculate the hyperbolic arcsine of a value, defined as `asinh(x) = ln(x + sqrt(x^2 + 1))`.',\n examples: ['asinh(0.5)'],\n seealso: ['acosh', 'atanh']\n};", "export var atanDocs = {\n name: 'atan',\n category: 'Trigonometry',\n syntax: ['atan(x)'],\n description: 'Compute the inverse tangent of a value in radians.',\n examples: ['atan(0.5)', 'atan(tan(0.5))'],\n seealso: ['tan', 'acos', 'asin']\n};", "export var atan2Docs = {\n name: 'atan2',\n category: 'Trigonometry',\n syntax: ['atan2(y, x)'],\n description: 'Computes the principal value of the arc tangent of y/x in radians.',\n examples: ['atan2(2, 2) / pi', 'angle = 60 deg in rad', 'x = cos(angle)', 'y = sin(angle)', 'atan2(y, x)'],\n seealso: ['sin', 'cos', 'tan']\n};", "export var atanhDocs = {\n name: 'atanh',\n category: 'Trigonometry',\n syntax: ['atanh(x)'],\n description: 'Calculate the hyperbolic arctangent of a value, defined as `atanh(x) = ln((1 + x)/(1 - x)) / 2`.',\n examples: ['atanh(0.5)'],\n seealso: ['acosh', 'asinh']\n};", "export var cosDocs = {\n name: 'cos',\n category: 'Trigonometry',\n syntax: ['cos(x)'],\n description: 'Compute the cosine of x in radians.',\n examples: ['cos(2)', 'cos(pi / 4) ^ 2', 'cos(180 deg)', 'cos(60 deg)', 'sin(0.2)^2 + cos(0.2)^2'],\n seealso: ['acos', 'sin', 'tan']\n};", "export var coshDocs = {\n name: 'cosh',\n category: 'Trigonometry',\n syntax: ['cosh(x)'],\n description: 'Compute the hyperbolic cosine of x in radians.',\n examples: ['cosh(0.5)'],\n seealso: ['sinh', 'tanh', 'coth']\n};", "export var cotDocs = {\n name: 'cot',\n category: 'Trigonometry',\n syntax: ['cot(x)'],\n description: 'Compute the cotangent of x in radians. Defined as 1/tan(x)',\n examples: ['cot(2)', '1 / tan(2)'],\n seealso: ['sec', 'csc', 'tan']\n};", "export var cothDocs = {\n name: 'coth',\n category: 'Trigonometry',\n syntax: ['coth(x)'],\n description: 'Compute the hyperbolic cotangent of x in radians.',\n examples: ['coth(2)', '1 / tanh(2)'],\n seealso: ['sech', 'csch', 'tanh']\n};", "export var cscDocs = {\n name: 'csc',\n category: 'Trigonometry',\n syntax: ['csc(x)'],\n description: 'Compute the cosecant of x in radians. Defined as 1/sin(x)',\n examples: ['csc(2)', '1 / sin(2)'],\n seealso: ['sec', 'cot', 'sin']\n};", "export var cschDocs = {\n name: 'csch',\n category: 'Trigonometry',\n syntax: ['csch(x)'],\n description: 'Compute the hyperbolic cosecant of x in radians. Defined as 1/sinh(x)',\n examples: ['csch(2)', '1 / sinh(2)'],\n seealso: ['sech', 'coth', 'sinh']\n};", "export var secDocs = {\n name: 'sec',\n category: 'Trigonometry',\n syntax: ['sec(x)'],\n description: 'Compute the secant of x in radians. Defined as 1/cos(x)',\n examples: ['sec(2)', '1 / cos(2)'],\n seealso: ['cot', 'csc', 'cos']\n};", "export var sechDocs = {\n name: 'sech',\n category: 'Trigonometry',\n syntax: ['sech(x)'],\n description: 'Compute the hyperbolic secant of x in radians. Defined as 1/cosh(x)',\n examples: ['sech(2)', '1 / cosh(2)'],\n seealso: ['coth', 'csch', 'cosh']\n};", "export var sinDocs = {\n name: 'sin',\n category: 'Trigonometry',\n syntax: ['sin(x)'],\n description: 'Compute the sine of x in radians.',\n examples: ['sin(2)', 'sin(pi / 4) ^ 2', 'sin(90 deg)', 'sin(30 deg)', 'sin(0.2)^2 + cos(0.2)^2'],\n seealso: ['asin', 'cos', 'tan']\n};", "export var sinhDocs = {\n name: 'sinh',\n category: 'Trigonometry',\n syntax: ['sinh(x)'],\n description: 'Compute the hyperbolic sine of x in radians.',\n examples: ['sinh(0.5)'],\n seealso: ['cosh', 'tanh']\n};", "export var tanDocs = {\n name: 'tan',\n category: 'Trigonometry',\n syntax: ['tan(x)'],\n description: 'Compute the tangent of x in radians.',\n examples: ['tan(0.5)', 'sin(0.5) / cos(0.5)', 'tan(pi / 4)', 'tan(45 deg)'],\n seealso: ['atan', 'sin', 'cos']\n};", "export var tanhDocs = {\n name: 'tanh',\n category: 'Trigonometry',\n syntax: ['tanh(x)'],\n description: 'Compute the hyperbolic tangent of x in radians.',\n examples: ['tanh(0.5)', 'sinh(0.5) / cosh(0.5)'],\n seealso: ['sinh', 'cosh']\n};", "export var toDocs = {\n name: 'to',\n category: 'Units',\n syntax: ['x to unit', 'to(x, unit)'],\n description: 'Change the unit of a value.',\n examples: ['5 inch to cm', '3.2kg to g', '16 bytes in bits'],\n seealso: []\n};", "export var binDocs = {\n name: 'bin',\n category: 'Utils',\n syntax: ['bin(value)'],\n description: 'Format a number as binary',\n examples: ['bin(2)'],\n seealso: ['oct', 'hex']\n};", "export var cloneDocs = {\n name: 'clone',\n category: 'Utils',\n syntax: ['clone(x)'],\n description: 'Clone a variable. Creates a copy of primitive variables, and a deep copy of matrices',\n examples: ['clone(3.5)', 'clone(2 - 4i)', 'clone(45 deg)', 'clone([1, 2; 3, 4])', 'clone(\"hello world\")'],\n seealso: []\n};", "export var formatDocs = {\n name: 'format',\n category: 'Utils',\n syntax: ['format(value)', 'format(value, precision)'],\n description: 'Format a value of any type as string.',\n examples: ['format(2.3)', 'format(3 - 4i)', 'format([])', 'format(pi, 3)'],\n seealso: ['print']\n};", "export var hasNumericValueDocs = {\n name: 'hasNumericValue',\n category: 'Utils',\n syntax: ['hasNumericValue(x)'],\n description: 'Test whether a value is an numeric value. ' + 'In case of a string, true is returned if the string contains a numeric value.',\n examples: ['hasNumericValue(2)', 'hasNumericValue(\"2\")', 'isNumeric(\"2\")', 'hasNumericValue(0)', 'hasNumericValue(bignumber(500))', 'hasNumericValue(fraction(0.125))', 'hasNumericValue(2 + 3i)', 'hasNumericValue([2.3, \"foo\", false])'],\n seealso: ['isInteger', 'isZero', 'isNegative', 'isPositive', 'isNaN', 'isNumeric']\n};", "export var hexDocs = {\n name: 'hex',\n category: 'Utils',\n syntax: ['hex(value)'],\n description: 'Format a number as hexadecimal',\n examples: ['hex(240)'],\n seealso: ['bin', 'oct']\n};", "export var isIntegerDocs = {\n name: 'isInteger',\n category: 'Utils',\n syntax: ['isInteger(x)'],\n description: 'Test whether a value is an integer number.',\n examples: ['isInteger(2)', 'isInteger(3.5)', 'isInteger([3, 0.5, -2])'],\n seealso: ['isNegative', 'isNumeric', 'isPositive', 'isZero']\n};", "export var isNaNDocs = {\n name: 'isNaN',\n category: 'Utils',\n syntax: ['isNaN(x)'],\n description: 'Test whether a value is NaN (not a number)',\n examples: ['isNaN(2)', 'isNaN(0 / 0)', 'isNaN(NaN)', 'isNaN(Infinity)'],\n seealso: ['isNegative', 'isNumeric', 'isPositive', 'isZero']\n};", "export var isNegativeDocs = {\n name: 'isNegative',\n category: 'Utils',\n syntax: ['isNegative(x)'],\n description: 'Test whether a value is negative: smaller than zero.',\n examples: ['isNegative(2)', 'isNegative(0)', 'isNegative(-4)', 'isNegative([3, 0.5, -2])'],\n seealso: ['isInteger', 'isNumeric', 'isPositive', 'isZero']\n};", "export var isNumericDocs = {\n name: 'isNumeric',\n category: 'Utils',\n syntax: ['isNumeric(x)'],\n description: 'Test whether a value is a numeric value. ' + 'Returns true when the input is a number, BigNumber, Fraction, or boolean.',\n examples: ['isNumeric(2)', 'isNumeric(\"2\")', 'hasNumericValue(\"2\")', 'isNumeric(0)', 'isNumeric(bignumber(500))', 'isNumeric(fraction(0.125))', 'isNumeric(2 + 3i)', 'isNumeric([2.3, \"foo\", false])'],\n seealso: ['isInteger', 'isZero', 'isNegative', 'isPositive', 'isNaN', 'hasNumericValue']\n};", "export var isPositiveDocs = {\n name: 'isPositive',\n category: 'Utils',\n syntax: ['isPositive(x)'],\n description: 'Test whether a value is positive: larger than zero.',\n examples: ['isPositive(2)', 'isPositive(0)', 'isPositive(-4)', 'isPositive([3, 0.5, -2])'],\n seealso: ['isInteger', 'isNumeric', 'isNegative', 'isZero']\n};", "export var isPrimeDocs = {\n name: 'isPrime',\n category: 'Utils',\n syntax: ['isPrime(x)'],\n description: 'Test whether a value is prime: has no divisors other than itself and one.',\n examples: ['isPrime(3)', 'isPrime(-2)', 'isPrime([2, 17, 100])'],\n seealso: ['isInteger', 'isNumeric', 'isNegative', 'isZero']\n};", "export var isZeroDocs = {\n name: 'isZero',\n category: 'Utils',\n syntax: ['isZero(x)'],\n description: 'Test whether a value is zero.',\n examples: ['isZero(2)', 'isZero(0)', 'isZero(-4)', 'isZero([3, 0, -2, 0])'],\n seealso: ['isInteger', 'isNumeric', 'isNegative', 'isPositive']\n};", "export var numericDocs = {\n name: 'numeric',\n category: 'Utils',\n syntax: ['numeric(x)'],\n description: 'Convert a numeric input to a specific numeric type: number, BigNumber, bigint, or Fraction.',\n examples: ['numeric(\"4\")', 'numeric(\"4\", \"number\")', 'numeric(\"4\", \"bigint\")', 'numeric(\"4\", \"BigNumber\")', 'numeric(\"4\", \"Fraction\")', 'numeric(4, \"Fraction\")', 'numeric(fraction(2, 5), \"number\")'],\n seealso: ['number', 'bigint', 'fraction', 'bignumber', 'string', 'format']\n};", "export var octDocs = {\n name: 'oct',\n category: 'Utils',\n syntax: ['oct(value)'],\n description: 'Format a number as octal',\n examples: ['oct(56)'],\n seealso: ['bin', 'hex']\n};", "export var printDocs = {\n name: 'print',\n category: 'Utils',\n syntax: ['print(template, values)', 'print(template, values, precision)'],\n description: 'Interpolate values into a string template.',\n examples: ['print(\"Lucy is $age years old\", {age: 5})', 'print(\"The value of pi is $pi\", {pi: pi}, 3)', 'print(\"Hello, $user.name!\", {user: {name: \"John\"}})', 'print(\"Values: $1, $2, $3\", [6, 9, 4])'],\n seealso: ['format']\n};", "export var typeOfDocs = {\n name: 'typeOf',\n category: 'Utils',\n syntax: ['typeOf(x)'],\n description: 'Get the type of a variable.',\n examples: ['typeOf(3.5)', 'typeOf(2 - 4i)', 'typeOf(45 deg)', 'typeOf(\"hello world\")'],\n seealso: ['getMatrixDataType']\n};", "export var solveODEDocs = {\n name: 'solveODE',\n category: 'Numeric',\n syntax: ['solveODE(func, tspan, y0)', 'solveODE(func, tspan, y0, options)'],\n description: 'Numerical Integration of Ordinary Differential Equations.',\n examples: ['f(t,y) = y', 'tspan = [0, 4]', 'solveODE(f, tspan, 1)', 'solveODE(f, tspan, [1, 2])', 'solveODE(f, tspan, 1, { method:\"RK23\", maxStep:0.1 })'],\n seealso: ['derivative', 'simplifyCore']\n};", "import { eDocs } from './constants/e.js';\nimport { falseDocs } from './constants/false.js';\nimport { iDocs } from './constants/i.js';\nimport { InfinityDocs } from './constants/Infinity.js';\nimport { LN10Docs } from './constants/LN10.js';\nimport { LN2Docs } from './constants/LN2.js';\nimport { LOG10EDocs } from './constants/LOG10E.js';\nimport { LOG2EDocs } from './constants/LOG2E.js';\nimport { NaNDocs } from './constants/NaN.js';\nimport { nullDocs } from './constants/null.js';\nimport { phiDocs } from './constants/phi.js';\nimport { piDocs } from './constants/pi.js';\nimport { SQRT12Docs } from './constants/SQRT1_2.js';\nimport { SQRT2Docs } from './constants/SQRT2.js';\nimport { tauDocs } from './constants/tau.js';\nimport { trueDocs } from './constants/true.js';\nimport { versionDocs } from './constants/version.js';\nimport { bignumberDocs } from './construction/bignumber.js';\nimport { bigintDocs } from './construction/bigint.js';\nimport { booleanDocs } from './construction/boolean.js';\nimport { complexDocs } from './construction/complex.js';\nimport { createUnitDocs } from './construction/createUnit.js';\nimport { fractionDocs } from './construction/fraction.js';\nimport { indexDocs } from './construction/index.js';\nimport { matrixDocs } from './construction/matrix.js';\nimport { numberDocs } from './construction/number.js';\nimport { sparseDocs } from './construction/sparse.js';\nimport { splitUnitDocs } from './construction/splitUnit.js';\nimport { stringDocs } from './construction/string.js';\nimport { unitDocs } from './construction/unit.js';\nimport { configDocs } from './core/config.js';\nimport { importDocs } from './core/import.js';\nimport { typedDocs } from './core/typed.js';\nimport { derivativeDocs } from './function/algebra/derivative.js';\nimport { leafCountDocs } from './function/algebra/leafCount.js';\nimport { lsolveDocs } from './function/algebra/lsolve.js';\nimport { lsolveAllDocs } from './function/algebra/lsolveAll.js';\nimport { lupDocs } from './function/algebra/lup.js';\nimport { lusolveDocs } from './function/algebra/lusolve.js';\nimport { polynomialRootDocs } from './function/algebra/polynomialRoot.js';\nimport { qrDocs } from './function/algebra/qr.js';\nimport { rationalizeDocs } from './function/algebra/rationalize.js';\nimport { resolveDocs } from './function/algebra/resolve.js';\nimport { simplifyDocs } from './function/algebra/simplify.js';\nimport { simplifyConstantDocs } from './function/algebra/simplifyConstant.js';\nimport { simplifyCoreDocs } from './function/algebra/simplifyCore.js';\nimport { sluDocs } from './function/algebra/slu.js';\nimport { symbolicEqualDocs } from './function/algebra/symbolicEqual.js';\nimport { usolveDocs } from './function/algebra/usolve.js';\nimport { usolveAllDocs } from './function/algebra/usolveAll.js';\nimport { absDocs } from './function/arithmetic/abs.js';\nimport { addDocs } from './function/arithmetic/add.js';\nimport { cbrtDocs } from './function/arithmetic/cbrt.js';\nimport { ceilDocs } from './function/arithmetic/ceil.js';\nimport { cubeDocs } from './function/arithmetic/cube.js';\nimport { divideDocs } from './function/arithmetic/divide.js';\nimport { dotDivideDocs } from './function/arithmetic/dotDivide.js';\nimport { dotMultiplyDocs } from './function/arithmetic/dotMultiply.js';\nimport { dotPowDocs } from './function/arithmetic/dotPow.js';\nimport { expDocs } from './function/arithmetic/exp.js';\nimport { expmDocs } from './function/arithmetic/expm.js';\nimport { expm1Docs } from './function/arithmetic/expm1.js';\nimport { fixDocs } from './function/arithmetic/fix.js';\nimport { floorDocs } from './function/arithmetic/floor.js';\nimport { gcdDocs } from './function/arithmetic/gcd.js';\nimport { hypotDocs } from './function/arithmetic/hypot.js';\nimport { invmodDocs } from './function/arithmetic/invmod.js';\nimport { lcmDocs } from './function/arithmetic/lcm.js';\nimport { logDocs } from './function/arithmetic/log.js';\nimport { log10Docs } from './function/arithmetic/log10.js';\nimport { log1pDocs } from './function/arithmetic/log1p.js';\nimport { log2Docs } from './function/arithmetic/log2.js';\nimport { modDocs } from './function/arithmetic/mod.js';\nimport { multiplyDocs } from './function/arithmetic/multiply.js';\nimport { normDocs } from './function/arithmetic/norm.js';\nimport { nthRootDocs } from './function/arithmetic/nthRoot.js';\nimport { nthRootsDocs } from './function/arithmetic/nthRoots.js';\nimport { powDocs } from './function/arithmetic/pow.js';\nimport { roundDocs } from './function/arithmetic/round.js';\nimport { signDocs } from './function/arithmetic/sign.js';\nimport { sqrtDocs } from './function/arithmetic/sqrt.js';\nimport { sqrtmDocs } from './function/arithmetic/sqrtm.js';\nimport { sylvesterDocs } from './function/algebra/sylvester.js';\nimport { schurDocs } from './function/algebra/schur.js';\nimport { lyapDocs } from './function/algebra/lyap.js';\nimport { squareDocs } from './function/arithmetic/square.js';\nimport { subtractDocs } from './function/arithmetic/subtract.js';\nimport { unaryMinusDocs } from './function/arithmetic/unaryMinus.js';\nimport { unaryPlusDocs } from './function/arithmetic/unaryPlus.js';\nimport { xgcdDocs } from './function/arithmetic/xgcd.js';\nimport { bitAndDocs } from './function/bitwise/bitAnd.js';\nimport { bitNotDocs } from './function/bitwise/bitNot.js';\nimport { bitOrDocs } from './function/bitwise/bitOr.js';\nimport { bitXorDocs } from './function/bitwise/bitXor.js';\nimport { leftShiftDocs } from './function/bitwise/leftShift.js';\nimport { rightArithShiftDocs } from './function/bitwise/rightArithShift.js';\nimport { rightLogShiftDocs } from './function/bitwise/rightLogShift.js';\nimport { bellNumbersDocs } from './function/combinatorics/bellNumbers.js';\nimport { catalanDocs } from './function/combinatorics/catalan.js';\nimport { compositionDocs } from './function/combinatorics/composition.js';\nimport { stirlingS2Docs } from './function/combinatorics/stirlingS2.js';\nimport { argDocs } from './function/complex/arg.js';\nimport { conjDocs } from './function/complex/conj.js';\nimport { imDocs } from './function/complex/im.js';\nimport { reDocs } from './function/complex/re.js';\nimport { evaluateDocs } from './function/expression/evaluate.js';\nimport { helpDocs } from './function/expression/help.js';\nimport { distanceDocs } from './function/geometry/distance.js';\nimport { intersectDocs } from './function/geometry/intersect.js';\nimport { andDocs } from './function/logical/and.js';\nimport { notDocs } from './function/logical/not.js';\nimport { orDocs } from './function/logical/or.js';\nimport { xorDocs } from './function/logical/xor.js';\nimport { columnDocs } from './function/matrix/column.js';\nimport { concatDocs } from './function/matrix/concat.js';\nimport { countDocs } from './function/matrix/count.js';\nimport { crossDocs } from './function/matrix/cross.js';\nimport { ctransposeDocs } from './function/matrix/ctranspose.js';\nimport { detDocs } from './function/matrix/det.js';\nimport { diagDocs } from './function/matrix/diag.js';\nimport { diffDocs } from './function/matrix/diff.js';\nimport { dotDocs } from './function/matrix/dot.js';\nimport { eigsDocs } from './function/matrix/eigs.js';\nimport { filterDocs } from './function/matrix/filter.js';\nimport { flattenDocs } from './function/matrix/flatten.js';\nimport { forEachDocs } from './function/matrix/forEach.js';\nimport { getMatrixDataTypeDocs } from './function/matrix/getMatrixDataType.js';\nimport { identityDocs } from './function/matrix/identity.js';\nimport { invDocs } from './function/matrix/inv.js';\nimport { pinvDocs } from './function/matrix/pinv.js';\nimport { kronDocs } from './function/matrix/kron.js';\nimport { mapDocs } from './function/matrix/map.js';\nimport { matrixFromColumnsDocs } from './function/matrix/matrixFromColumns.js';\nimport { matrixFromFunctionDocs } from './function/matrix/matrixFromFunction.js';\nimport { matrixFromRowsDocs } from './function/matrix/matrixFromRows.js';\nimport { onesDocs } from './function/matrix/ones.js';\nimport { partitionSelectDocs } from './function/matrix/partitionSelect.js';\nimport { rangeDocs } from './function/matrix/range.js';\nimport { reshapeDocs } from './function/matrix/reshape.js';\nimport { resizeDocs } from './function/matrix/resize.js';\nimport { rotateDocs } from './function/matrix/rotate.js';\nimport { rotationMatrixDocs } from './function/matrix/rotationMatrix.js';\nimport { rowDocs } from './function/matrix/row.js';\nimport { sizeDocs } from './function/matrix/size.js';\nimport { sortDocs } from './function/matrix/sort.js';\nimport { squeezeDocs } from './function/matrix/squeeze.js';\nimport { subsetDocs } from './function/matrix/subset.js';\nimport { traceDocs } from './function/matrix/trace.js';\nimport { transposeDocs } from './function/matrix/transpose.js';\nimport { zerosDocs } from './function/matrix/zeros.js';\nimport { fftDocs } from './function/matrix/fft.js';\nimport { ifftDocs } from './function/matrix/ifft.js';\nimport { combinationsDocs } from './function/probability/combinations.js';\nimport { combinationsWithRepDocs } from './function/probability/combinationsWithRep.js';\nimport { factorialDocs } from './function/probability/factorial.js';\nimport { gammaDocs } from './function/probability/gamma.js';\nimport { lgammaDocs } from './function/probability/lgamma.js';\nimport { kldivergenceDocs } from './function/probability/kldivergence.js';\nimport { multinomialDocs } from './function/probability/multinomial.js';\nimport { permutationsDocs } from './function/probability/permutations.js';\nimport { pickRandomDocs } from './function/probability/pickRandom.js';\nimport { randomDocs } from './function/probability/random.js';\nimport { randomIntDocs } from './function/probability/randomInt.js';\nimport { compareDocs } from './function/relational/compare.js';\nimport { compareNaturalDocs } from './function/relational/compareNatural.js';\nimport { compareTextDocs } from './function/relational/compareText.js';\nimport { deepEqualDocs } from './function/relational/deepEqual.js';\nimport { equalDocs } from './function/relational/equal.js';\nimport { equalTextDocs } from './function/relational/equalText.js';\nimport { largerDocs } from './function/relational/larger.js';\nimport { largerEqDocs } from './function/relational/largerEq.js';\nimport { smallerDocs } from './function/relational/smaller.js';\nimport { smallerEqDocs } from './function/relational/smallerEq.js';\nimport { unequalDocs } from './function/relational/unequal.js';\nimport { setCartesianDocs } from './function/set/setCartesian.js';\nimport { setDifferenceDocs } from './function/set/setDifference.js';\nimport { setDistinctDocs } from './function/set/setDistinct.js';\nimport { setIntersectDocs } from './function/set/setIntersect.js';\nimport { setIsSubsetDocs } from './function/set/setIsSubset.js';\nimport { setMultiplicityDocs } from './function/set/setMultiplicity.js';\nimport { setPowersetDocs } from './function/set/setPowerset.js';\nimport { setSizeDocs } from './function/set/setSize.js';\nimport { setSymDifferenceDocs } from './function/set/setSymDifference.js';\nimport { setUnionDocs } from './function/set/setUnion.js';\nimport { zpk2tfDocs } from './function/signal/zpk2tf.js';\nimport { freqzDocs } from './function/signal/freqz.js';\nimport { erfDocs } from './function/special/erf.js';\nimport { zetaDocs } from './function/special/zeta.js';\nimport { madDocs } from './function/statistics/mad.js';\nimport { maxDocs } from './function/statistics/max.js';\nimport { meanDocs } from './function/statistics/mean.js';\nimport { medianDocs } from './function/statistics/median.js';\nimport { minDocs } from './function/statistics/min.js';\nimport { modeDocs } from './function/statistics/mode.js';\nimport { prodDocs } from './function/statistics/prod.js';\nimport { quantileSeqDocs } from './function/statistics/quantileSeq.js';\nimport { stdDocs } from './function/statistics/std.js';\nimport { cumSumDocs } from './function/statistics/cumsum.js';\nimport { sumDocs } from './function/statistics/sum.js';\nimport { varianceDocs } from './function/statistics/variance.js';\nimport { corrDocs } from './function/statistics/corr.js';\nimport { acosDocs } from './function/trigonometry/acos.js';\nimport { acoshDocs } from './function/trigonometry/acosh.js';\nimport { acotDocs } from './function/trigonometry/acot.js';\nimport { acothDocs } from './function/trigonometry/acoth.js';\nimport { acscDocs } from './function/trigonometry/acsc.js';\nimport { acschDocs } from './function/trigonometry/acsch.js';\nimport { asecDocs } from './function/trigonometry/asec.js';\nimport { asechDocs } from './function/trigonometry/asech.js';\nimport { asinDocs } from './function/trigonometry/asin.js';\nimport { asinhDocs } from './function/trigonometry/asinh.js';\nimport { atanDocs } from './function/trigonometry/atan.js';\nimport { atan2Docs } from './function/trigonometry/atan2.js';\nimport { atanhDocs } from './function/trigonometry/atanh.js';\nimport { cosDocs } from './function/trigonometry/cos.js';\nimport { coshDocs } from './function/trigonometry/cosh.js';\nimport { cotDocs } from './function/trigonometry/cot.js';\nimport { cothDocs } from './function/trigonometry/coth.js';\nimport { cscDocs } from './function/trigonometry/csc.js';\nimport { cschDocs } from './function/trigonometry/csch.js';\nimport { secDocs } from './function/trigonometry/sec.js';\nimport { sechDocs } from './function/trigonometry/sech.js';\nimport { sinDocs } from './function/trigonometry/sin.js';\nimport { sinhDocs } from './function/trigonometry/sinh.js';\nimport { tanDocs } from './function/trigonometry/tan.js';\nimport { tanhDocs } from './function/trigonometry/tanh.js';\nimport { toDocs } from './function/units/to.js';\nimport { binDocs } from './function/utils/bin.js';\nimport { cloneDocs } from './function/utils/clone.js';\nimport { formatDocs } from './function/utils/format.js';\nimport { hasNumericValueDocs } from './function/utils/hasNumericValue.js';\nimport { hexDocs } from './function/utils/hex.js';\nimport { isIntegerDocs } from './function/utils/isInteger.js';\nimport { isNaNDocs } from './function/utils/isNaN.js';\nimport { isNegativeDocs } from './function/utils/isNegative.js';\nimport { isNumericDocs } from './function/utils/isNumeric.js';\nimport { isPositiveDocs } from './function/utils/isPositive.js';\nimport { isPrimeDocs } from './function/utils/isPrime.js';\nimport { isZeroDocs } from './function/utils/isZero.js';\nimport { numericDocs } from './function/utils/numeric.js';\nimport { octDocs } from './function/utils/oct.js';\nimport { printDocs } from './function/utils/print.js';\nimport { typeOfDocs } from './function/utils/typeOf.js';\nimport { solveODEDocs } from './function/numeric/solveODE.js';\nexport var embeddedDocs = {\n // construction functions\n bignumber: bignumberDocs,\n bigint: bigintDocs,\n boolean: booleanDocs,\n complex: complexDocs,\n createUnit: createUnitDocs,\n fraction: fractionDocs,\n index: indexDocs,\n matrix: matrixDocs,\n number: numberDocs,\n sparse: sparseDocs,\n splitUnit: splitUnitDocs,\n string: stringDocs,\n unit: unitDocs,\n // constants\n e: eDocs,\n E: eDocs,\n false: falseDocs,\n i: iDocs,\n Infinity: InfinityDocs,\n LN2: LN2Docs,\n LN10: LN10Docs,\n LOG2E: LOG2EDocs,\n LOG10E: LOG10EDocs,\n NaN: NaNDocs,\n null: nullDocs,\n pi: piDocs,\n PI: piDocs,\n phi: phiDocs,\n SQRT1_2: SQRT12Docs,\n SQRT2: SQRT2Docs,\n tau: tauDocs,\n true: trueDocs,\n version: versionDocs,\n // physical constants\n // TODO: more detailed docs for physical constants\n speedOfLight: {\n description: 'Speed of light in vacuum',\n examples: ['speedOfLight']\n },\n gravitationConstant: {\n description: 'Newtonian constant of gravitation',\n examples: ['gravitationConstant']\n },\n planckConstant: {\n description: 'Planck constant',\n examples: ['planckConstant']\n },\n reducedPlanckConstant: {\n description: 'Reduced Planck constant',\n examples: ['reducedPlanckConstant']\n },\n magneticConstant: {\n description: 'Magnetic constant (vacuum permeability)',\n examples: ['magneticConstant']\n },\n electricConstant: {\n description: 'Electric constant (vacuum permeability)',\n examples: ['electricConstant']\n },\n vacuumImpedance: {\n description: 'Characteristic impedance of vacuum',\n examples: ['vacuumImpedance']\n },\n coulomb: {\n description: 'Coulomb\\'s constant',\n examples: ['coulomb']\n },\n elementaryCharge: {\n description: 'Elementary charge',\n examples: ['elementaryCharge']\n },\n bohrMagneton: {\n description: 'Bohr magneton',\n examples: ['bohrMagneton']\n },\n conductanceQuantum: {\n description: 'Conductance quantum',\n examples: ['conductanceQuantum']\n },\n inverseConductanceQuantum: {\n description: 'Inverse conductance quantum',\n examples: ['inverseConductanceQuantum']\n },\n // josephson: {description: 'Josephson constant', examples: ['josephson']},\n magneticFluxQuantum: {\n description: 'Magnetic flux quantum',\n examples: ['magneticFluxQuantum']\n },\n nuclearMagneton: {\n description: 'Nuclear magneton',\n examples: ['nuclearMagneton']\n },\n klitzing: {\n description: 'Von Klitzing constant',\n examples: ['klitzing']\n },\n bohrRadius: {\n description: 'Bohr radius',\n examples: ['bohrRadius']\n },\n classicalElectronRadius: {\n description: 'Classical electron radius',\n examples: ['classicalElectronRadius']\n },\n electronMass: {\n description: 'Electron mass',\n examples: ['electronMass']\n },\n fermiCoupling: {\n description: 'Fermi coupling constant',\n examples: ['fermiCoupling']\n },\n fineStructure: {\n description: 'Fine-structure constant',\n examples: ['fineStructure']\n },\n hartreeEnergy: {\n description: 'Hartree energy',\n examples: ['hartreeEnergy']\n },\n protonMass: {\n description: 'Proton mass',\n examples: ['protonMass']\n },\n deuteronMass: {\n description: 'Deuteron Mass',\n examples: ['deuteronMass']\n },\n neutronMass: {\n description: 'Neutron mass',\n examples: ['neutronMass']\n },\n quantumOfCirculation: {\n description: 'Quantum of circulation',\n examples: ['quantumOfCirculation']\n },\n rydberg: {\n description: 'Rydberg constant',\n examples: ['rydberg']\n },\n thomsonCrossSection: {\n description: 'Thomson cross section',\n examples: ['thomsonCrossSection']\n },\n weakMixingAngle: {\n description: 'Weak mixing angle',\n examples: ['weakMixingAngle']\n },\n efimovFactor: {\n description: 'Efimov factor',\n examples: ['efimovFactor']\n },\n atomicMass: {\n description: 'Atomic mass constant',\n examples: ['atomicMass']\n },\n avogadro: {\n description: 'Avogadro\\'s number',\n examples: ['avogadro']\n },\n boltzmann: {\n description: 'Boltzmann constant',\n examples: ['boltzmann']\n },\n faraday: {\n description: 'Faraday constant',\n examples: ['faraday']\n },\n firstRadiation: {\n description: 'First radiation constant',\n examples: ['firstRadiation']\n },\n loschmidt: {\n description: 'Loschmidt constant at T=273.15 K and p=101.325 kPa',\n examples: ['loschmidt']\n },\n gasConstant: {\n description: 'Gas constant',\n examples: ['gasConstant']\n },\n molarPlanckConstant: {\n description: 'Molar Planck constant',\n examples: ['molarPlanckConstant']\n },\n molarVolume: {\n description: 'Molar volume of an ideal gas at T=273.15 K and p=101.325 kPa',\n examples: ['molarVolume']\n },\n sackurTetrode: {\n description: 'Sackur-Tetrode constant at T=1 K and p=101.325 kPa',\n examples: ['sackurTetrode']\n },\n secondRadiation: {\n description: 'Second radiation constant',\n examples: ['secondRadiation']\n },\n stefanBoltzmann: {\n description: 'Stefan-Boltzmann constant',\n examples: ['stefanBoltzmann']\n },\n wienDisplacement: {\n description: 'Wien displacement law constant',\n examples: ['wienDisplacement']\n },\n // spectralRadiance: {description: 'First radiation constant for spectral radiance', examples: ['spectralRadiance']},\n\n molarMass: {\n description: 'Molar mass constant',\n examples: ['molarMass']\n },\n molarMassC12: {\n description: 'Molar mass constant of carbon-12',\n examples: ['molarMassC12']\n },\n gravity: {\n description: 'Standard acceleration of gravity (standard acceleration of free-fall on Earth)',\n examples: ['gravity']\n },\n planckLength: {\n description: 'Planck length',\n examples: ['planckLength']\n },\n planckMass: {\n description: 'Planck mass',\n examples: ['planckMass']\n },\n planckTime: {\n description: 'Planck time',\n examples: ['planckTime']\n },\n planckCharge: {\n description: 'Planck charge',\n examples: ['planckCharge']\n },\n planckTemperature: {\n description: 'Planck temperature',\n examples: ['planckTemperature']\n },\n // functions - algebra\n derivative: derivativeDocs,\n lsolve: lsolveDocs,\n lsolveAll: lsolveAllDocs,\n lup: lupDocs,\n lusolve: lusolveDocs,\n leafCount: leafCountDocs,\n polynomialRoot: polynomialRootDocs,\n resolve: resolveDocs,\n simplify: simplifyDocs,\n simplifyConstant: simplifyConstantDocs,\n simplifyCore: simplifyCoreDocs,\n symbolicEqual: symbolicEqualDocs,\n rationalize: rationalizeDocs,\n slu: sluDocs,\n usolve: usolveDocs,\n usolveAll: usolveAllDocs,\n qr: qrDocs,\n // functions - arithmetic\n abs: absDocs,\n add: addDocs,\n cbrt: cbrtDocs,\n ceil: ceilDocs,\n cube: cubeDocs,\n divide: divideDocs,\n dotDivide: dotDivideDocs,\n dotMultiply: dotMultiplyDocs,\n dotPow: dotPowDocs,\n exp: expDocs,\n expm: expmDocs,\n expm1: expm1Docs,\n fix: fixDocs,\n floor: floorDocs,\n gcd: gcdDocs,\n hypot: hypotDocs,\n lcm: lcmDocs,\n log: logDocs,\n log2: log2Docs,\n log1p: log1pDocs,\n log10: log10Docs,\n mod: modDocs,\n multiply: multiplyDocs,\n norm: normDocs,\n nthRoot: nthRootDocs,\n nthRoots: nthRootsDocs,\n pow: powDocs,\n round: roundDocs,\n sign: signDocs,\n sqrt: sqrtDocs,\n sqrtm: sqrtmDocs,\n square: squareDocs,\n subtract: subtractDocs,\n unaryMinus: unaryMinusDocs,\n unaryPlus: unaryPlusDocs,\n xgcd: xgcdDocs,\n invmod: invmodDocs,\n // functions - bitwise\n bitAnd: bitAndDocs,\n bitNot: bitNotDocs,\n bitOr: bitOrDocs,\n bitXor: bitXorDocs,\n leftShift: leftShiftDocs,\n rightArithShift: rightArithShiftDocs,\n rightLogShift: rightLogShiftDocs,\n // functions - combinatorics\n bellNumbers: bellNumbersDocs,\n catalan: catalanDocs,\n composition: compositionDocs,\n stirlingS2: stirlingS2Docs,\n // functions - core\n config: configDocs,\n import: importDocs,\n typed: typedDocs,\n // functions - complex\n arg: argDocs,\n conj: conjDocs,\n re: reDocs,\n im: imDocs,\n // functions - expression\n evaluate: evaluateDocs,\n help: helpDocs,\n // functions - geometry\n distance: distanceDocs,\n intersect: intersectDocs,\n // functions - logical\n and: andDocs,\n not: notDocs,\n or: orDocs,\n xor: xorDocs,\n // functions - matrix\n concat: concatDocs,\n count: countDocs,\n cross: crossDocs,\n column: columnDocs,\n ctranspose: ctransposeDocs,\n det: detDocs,\n diag: diagDocs,\n diff: diffDocs,\n dot: dotDocs,\n getMatrixDataType: getMatrixDataTypeDocs,\n identity: identityDocs,\n filter: filterDocs,\n flatten: flattenDocs,\n forEach: forEachDocs,\n inv: invDocs,\n pinv: pinvDocs,\n eigs: eigsDocs,\n kron: kronDocs,\n matrixFromFunction: matrixFromFunctionDocs,\n matrixFromRows: matrixFromRowsDocs,\n matrixFromColumns: matrixFromColumnsDocs,\n map: mapDocs,\n ones: onesDocs,\n partitionSelect: partitionSelectDocs,\n range: rangeDocs,\n resize: resizeDocs,\n reshape: reshapeDocs,\n rotate: rotateDocs,\n rotationMatrix: rotationMatrixDocs,\n row: rowDocs,\n size: sizeDocs,\n sort: sortDocs,\n squeeze: squeezeDocs,\n subset: subsetDocs,\n trace: traceDocs,\n transpose: transposeDocs,\n zeros: zerosDocs,\n fft: fftDocs,\n ifft: ifftDocs,\n sylvester: sylvesterDocs,\n schur: schurDocs,\n lyap: lyapDocs,\n // functions - numeric\n solveODE: solveODEDocs,\n // functions - probability\n combinations: combinationsDocs,\n combinationsWithRep: combinationsWithRepDocs,\n // distribution: distributionDocs,\n factorial: factorialDocs,\n gamma: gammaDocs,\n kldivergence: kldivergenceDocs,\n lgamma: lgammaDocs,\n multinomial: multinomialDocs,\n permutations: permutationsDocs,\n pickRandom: pickRandomDocs,\n random: randomDocs,\n randomInt: randomIntDocs,\n // functions - relational\n compare: compareDocs,\n compareNatural: compareNaturalDocs,\n compareText: compareTextDocs,\n deepEqual: deepEqualDocs,\n equal: equalDocs,\n equalText: equalTextDocs,\n larger: largerDocs,\n largerEq: largerEqDocs,\n smaller: smallerDocs,\n smallerEq: smallerEqDocs,\n unequal: unequalDocs,\n // functions - set\n setCartesian: setCartesianDocs,\n setDifference: setDifferenceDocs,\n setDistinct: setDistinctDocs,\n setIntersect: setIntersectDocs,\n setIsSubset: setIsSubsetDocs,\n setMultiplicity: setMultiplicityDocs,\n setPowerset: setPowersetDocs,\n setSize: setSizeDocs,\n setSymDifference: setSymDifferenceDocs,\n setUnion: setUnionDocs,\n // functions - signal\n zpk2tf: zpk2tfDocs,\n freqz: freqzDocs,\n // functions - special\n erf: erfDocs,\n zeta: zetaDocs,\n // functions - statistics\n cumsum: cumSumDocs,\n mad: madDocs,\n max: maxDocs,\n mean: meanDocs,\n median: medianDocs,\n min: minDocs,\n mode: modeDocs,\n prod: prodDocs,\n quantileSeq: quantileSeqDocs,\n std: stdDocs,\n sum: sumDocs,\n variance: varianceDocs,\n corr: corrDocs,\n // functions - trigonometry\n acos: acosDocs,\n acosh: acoshDocs,\n acot: acotDocs,\n acoth: acothDocs,\n acsc: acscDocs,\n acsch: acschDocs,\n asec: asecDocs,\n asech: asechDocs,\n asin: asinDocs,\n asinh: asinhDocs,\n atan: atanDocs,\n atanh: atanhDocs,\n atan2: atan2Docs,\n cos: cosDocs,\n cosh: coshDocs,\n cot: cotDocs,\n coth: cothDocs,\n csc: cscDocs,\n csch: cschDocs,\n sec: secDocs,\n sech: sechDocs,\n sin: sinDocs,\n sinh: sinhDocs,\n tan: tanDocs,\n tanh: tanhDocs,\n // functions - units\n to: toDocs,\n // functions - utils\n clone: cloneDocs,\n format: formatDocs,\n bin: binDocs,\n oct: octDocs,\n hex: hexDocs,\n isNaN: isNaNDocs,\n isInteger: isIntegerDocs,\n isNegative: isNegativeDocs,\n isNumeric: isNumericDocs,\n hasNumericValue: hasNumericValueDocs,\n isPositive: isPositiveDocs,\n isPrime: isPrimeDocs,\n isZero: isZeroDocs,\n print: printDocs,\n typeOf: typeOfDocs,\n numeric: numericDocs\n};", "import { factory } from '../../utils/factory.js';\nimport { getSafeProperty } from '../../utils/customs.js';\nimport { embeddedDocs } from '../embeddedDocs/embeddedDocs.js';\nimport { hasOwnProperty } from '../../utils/object.js';\nvar name = 'help';\nvar dependencies = ['typed', 'mathWithTransform', 'Help'];\nexport var createHelp = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n mathWithTransform,\n Help\n } = _ref;\n /**\n * Retrieve help on a function or data type.\n * Help files are retrieved from the embedded documentation in math.docs.\n *\n * Syntax:\n *\n * math.help(search)\n *\n * Examples:\n *\n * console.log(math.help('sin').toString())\n * console.log(math.help(math.add).toString())\n * console.log(math.help(math.add).toJSON())\n *\n * @param {Function | string | Object} search A function or function name\n * for which to get help\n * @return {Help} A help object\n */\n return typed(name, {\n any: function any(search) {\n var prop;\n var searchName = search;\n if (typeof search !== 'string') {\n for (prop in mathWithTransform) {\n // search in functions and constants\n if (hasOwnProperty(mathWithTransform, prop) && search === mathWithTransform[prop]) {\n searchName = prop;\n break;\n }\n }\n\n /* TODO: implement help for data types\n if (!text) {\n // search data type\n for (prop in math.type) {\n if (hasOwnProperty(math, prop)) {\n if (search === math.type[prop]) {\n text = prop\n break\n }\n }\n }\n }\n */\n }\n var doc = getSafeProperty(embeddedDocs, searchName);\n if (!doc) {\n var searchText = typeof searchName === 'function' ? searchName.name : searchName;\n throw new Error('No documentation found on \"' + searchText + '\"');\n }\n return new Help(doc);\n }\n });\n});", "import { factory } from '../../../utils/factory.js';\nvar name = 'chain';\nvar dependencies = ['typed', 'Chain'];\nexport var createChain = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Chain\n } = _ref;\n /**\n * Wrap any value in a chain, allowing to perform chained operations on\n * the value.\n *\n * All methods available in the math.js library can be called upon the chain,\n * and then will be evaluated with the value itself as first argument.\n * The chain can be closed by executing `chain.done()`, which returns\n * the final value.\n *\n * The chain has a number of special functions:\n *\n * - `done()` Finalize the chain and return the chain's value.\n * - `valueOf()` The same as `done()`\n * - `toString()` Executes `math.format()` onto the chain's value, returning\n * a string representation of the value.\n *\n * Syntax:\n *\n * math.chain(value)\n *\n * Examples:\n *\n * math.chain(3)\n * .add(4)\n * .subtract(2)\n * .done() // 5\n *\n * math.chain( [[1, 2], [3, 4]] )\n * .subset(math.index(0, 0), 8)\n * .multiply(3)\n * .done() // [[24, 6], [9, 12]]\n *\n * @param {*} [value] A value of any type on which to start a chained operation.\n * @return {math.Chain} The created chain\n */\n return typed(name, {\n '': function _() {\n return new Chain();\n },\n any: function any(value) {\n return new Chain(value);\n }\n });\n});", "import { isMatrix } from '../../utils/is.js';\nimport { clone } from '../../utils/object.js';\nimport { format } from '../../utils/string.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'det';\nvar dependencies = ['typed', 'matrix', 'subtractScalar', 'multiply', 'divideScalar', 'isZero', 'unaryMinus'];\nexport var createDet = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n subtractScalar,\n multiply,\n divideScalar,\n isZero,\n unaryMinus\n } = _ref;\n /**\n * Calculate the determinant of a matrix.\n *\n * Syntax:\n *\n * math.det(x)\n *\n * Examples:\n *\n * math.det([[1, 2], [3, 4]]) // returns -2\n *\n * const A = [\n * [-2, 2, 3],\n * [-1, 1, 3],\n * [2, 0, -1]\n * ]\n * math.det(A) // returns 6\n *\n * See also:\n *\n * inv\n *\n * @param {Array | Matrix} x A matrix\n * @return {number} The determinant of `x`\n */\n return typed(name, {\n any: function any(x) {\n return clone(x);\n },\n 'Array | Matrix': function det(x) {\n var size;\n if (isMatrix(x)) {\n size = x.size();\n } else if (Array.isArray(x)) {\n x = matrix(x);\n size = x.size();\n } else {\n // a scalar\n size = [];\n }\n switch (size.length) {\n case 0:\n // scalar\n return clone(x);\n case 1:\n // vector\n if (size[0] === 1) {\n return clone(x.valueOf()[0]);\n }\n if (size[0] === 0) {\n return 1; // det of an empty matrix is per definition 1\n } else {\n throw new RangeError('Matrix must be square ' + '(size: ' + format(size) + ')');\n }\n case 2:\n {\n // two-dimensional array\n var rows = size[0];\n var cols = size[1];\n if (rows === cols) {\n return _det(x.clone().valueOf(), rows, cols);\n }\n if (cols === 0) {\n return 1; // det of an empty matrix is per definition 1\n } else {\n throw new RangeError('Matrix must be square ' + '(size: ' + format(size) + ')');\n }\n }\n default:\n // multi dimensional array\n throw new RangeError('Matrix must be two dimensional ' + '(size: ' + format(size) + ')');\n }\n }\n });\n\n /**\n * Calculate the determinant of a matrix\n * @param {Array[]} matrix A square, two dimensional matrix\n * @param {number} rows Number of rows of the matrix (zero-based)\n * @param {number} cols Number of columns of the matrix (zero-based)\n * @returns {number} det\n * @private\n */\n function _det(matrix, rows, cols) {\n if (rows === 1) {\n // this is a 1 x 1 matrix\n return clone(matrix[0][0]);\n } else if (rows === 2) {\n // this is a 2 x 2 matrix\n // the determinant of [a11,a12;a21,a22] is det = a11*a22-a21*a12\n return subtractScalar(multiply(matrix[0][0], matrix[1][1]), multiply(matrix[1][0], matrix[0][1]));\n } else {\n // Bareiss algorithm\n // this algorithm have same complexity as LUP decomposition (O(n^3))\n // but it preserve precision of floating point more relative to the LUP decomposition\n var negated = false;\n var rowIndices = new Array(rows).fill(0).map((_, i) => i); // matrix index of row i\n for (var k = 0; k < rows; k++) {\n var k_ = rowIndices[k];\n if (isZero(matrix[k_][k])) {\n var _k = void 0;\n for (_k = k + 1; _k < rows; _k++) {\n if (!isZero(matrix[rowIndices[_k]][k])) {\n k_ = rowIndices[_k];\n rowIndices[_k] = rowIndices[k];\n rowIndices[k] = k_;\n negated = !negated;\n break;\n }\n }\n if (_k === rows) return matrix[k_][k]; // some zero of the type\n }\n var piv = matrix[k_][k];\n var piv_ = k === 0 ? 1 : matrix[rowIndices[k - 1]][k - 1];\n for (var i = k + 1; i < rows; i++) {\n var i_ = rowIndices[i];\n for (var j = k + 1; j < rows; j++) {\n matrix[i_][j] = divideScalar(subtractScalar(multiply(matrix[i_][j], piv), multiply(matrix[i_][k], matrix[k_][j])), piv_);\n }\n }\n }\n var det = matrix[rowIndices[rows - 1]][rows - 1];\n return negated ? unaryMinus(det) : det;\n }\n }\n});", "import { isMatrix } from '../../utils/is.js';\nimport { arraySize } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { format } from '../../utils/string.js';\nvar name = 'inv';\nvar dependencies = ['typed', 'matrix', 'divideScalar', 'addScalar', 'multiply', 'unaryMinus', 'det', 'identity', 'abs'];\nexport var createInv = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n divideScalar,\n addScalar,\n multiply,\n unaryMinus,\n det,\n identity,\n abs\n } = _ref;\n /**\n * Calculate the inverse of a square matrix.\n *\n * Syntax:\n *\n * math.inv(x)\n *\n * Examples:\n *\n * math.inv([[1, 2], [3, 4]]) // returns [[-2, 1], [1.5, -0.5]]\n * math.inv(4) // returns 0.25\n * 1 / 4 // returns 0.25\n *\n * See also:\n *\n * det, transpose\n *\n * @param {number | Complex | Array | Matrix} x Matrix to be inversed\n * @return {number | Complex | Array | Matrix} The inverse of `x`.\n */\n return typed(name, {\n 'Array | Matrix': function Array__Matrix(x) {\n var size = isMatrix(x) ? x.size() : arraySize(x);\n switch (size.length) {\n case 1:\n // vector\n if (size[0] === 1) {\n if (isMatrix(x)) {\n return matrix([divideScalar(1, x.valueOf()[0])]);\n } else {\n return [divideScalar(1, x[0])];\n }\n } else {\n throw new RangeError('Matrix must be square ' + '(size: ' + format(size) + ')');\n }\n case 2:\n // two dimensional array\n {\n var rows = size[0];\n var cols = size[1];\n if (rows === cols) {\n if (isMatrix(x)) {\n return matrix(_inv(x.valueOf(), rows, cols), x.storage());\n } else {\n // return an Array\n return _inv(x, rows, cols);\n }\n } else {\n throw new RangeError('Matrix must be square ' + '(size: ' + format(size) + ')');\n }\n }\n default:\n // multi dimensional array\n throw new RangeError('Matrix must be two dimensional ' + '(size: ' + format(size) + ')');\n }\n },\n any: function any(x) {\n // scalar\n return divideScalar(1, x); // FIXME: create a BigNumber one when configured for bignumbers\n }\n });\n\n /**\n * Calculate the inverse of a square matrix\n * @param {Array[]} mat A square matrix\n * @param {number} rows Number of rows\n * @param {number} cols Number of columns, must equal rows\n * @return {Array[]} inv Inverse matrix\n * @private\n */\n function _inv(mat, rows, cols) {\n var r, s, f, value, temp;\n if (rows === 1) {\n // this is a 1 x 1 matrix\n value = mat[0][0];\n if (value === 0) {\n throw Error('Cannot calculate inverse, determinant is zero');\n }\n return [[divideScalar(1, value)]];\n } else if (rows === 2) {\n // this is a 2 x 2 matrix\n var d = det(mat);\n if (d === 0) {\n throw Error('Cannot calculate inverse, determinant is zero');\n }\n return [[divideScalar(mat[1][1], d), divideScalar(unaryMinus(mat[0][1]), d)], [divideScalar(unaryMinus(mat[1][0]), d), divideScalar(mat[0][0], d)]];\n } else {\n // this is a matrix of 3 x 3 or larger\n // calculate inverse using gauss-jordan elimination\n // https://en.wikipedia.org/wiki/Gaussian_elimination\n // http://mathworld.wolfram.com/MatrixInverse.html\n // http://math.uww.edu/~mcfarlat/inverse.htm\n\n // make a copy of the matrix (only the arrays, not of the elements)\n var A = mat.concat();\n for (r = 0; r < rows; r++) {\n A[r] = A[r].concat();\n }\n\n // create an identity matrix which in the end will contain the\n // matrix inverse\n var B = identity(rows).valueOf();\n\n // loop over all columns, and perform row reductions\n for (var c = 0; c < cols; c++) {\n // Pivoting: Swap row c with row r, where row r contains the largest element A[r][c]\n var ABig = abs(A[c][c]);\n var rBig = c;\n r = c + 1;\n while (r < rows) {\n if (abs(A[r][c]) > ABig) {\n ABig = abs(A[r][c]);\n rBig = r;\n }\n r++;\n }\n if (ABig === 0) {\n throw Error('Cannot calculate inverse, determinant is zero');\n }\n r = rBig;\n if (r !== c) {\n temp = A[c];\n A[c] = A[r];\n A[r] = temp;\n temp = B[c];\n B[c] = B[r];\n B[r] = temp;\n }\n\n // eliminate non-zero values on the other rows at column c\n var Ac = A[c];\n var Bc = B[c];\n for (r = 0; r < rows; r++) {\n var Ar = A[r];\n var Br = B[r];\n if (r !== c) {\n // eliminate value at column c and row r\n if (Ar[c] !== 0) {\n f = divideScalar(unaryMinus(Ar[c]), Ac[c]);\n\n // add (f * row c) to row r to eliminate the value\n // at column c\n for (s = c; s < cols; s++) {\n Ar[s] = addScalar(Ar[s], multiply(f, Ac[s]));\n }\n for (s = 0; s < cols; s++) {\n Br[s] = addScalar(Br[s], multiply(f, Bc[s]));\n }\n }\n } else {\n // normalize value at Acc to 1,\n // divide each value on row r with the value at Acc\n f = Ac[c];\n for (s = c; s < cols; s++) {\n Ar[s] = divideScalar(Ar[s], f);\n }\n for (s = 0; s < cols; s++) {\n Br[s] = divideScalar(Br[s], f);\n }\n }\n }\n }\n return B;\n }\n }\n});", "import { isMatrix } from '../../utils/is.js';\nimport { arraySize } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { format } from '../../utils/string.js';\nimport { clone } from '../../utils/object.js';\nvar name = 'pinv';\nvar dependencies = ['typed', 'matrix', 'inv', 'deepEqual', 'equal', 'dotDivide', 'dot', 'ctranspose', 'divideScalar', 'multiply', 'add', 'Complex'];\nexport var createPinv = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n inv,\n deepEqual,\n equal,\n dotDivide,\n dot,\n ctranspose,\n divideScalar,\n multiply,\n add,\n Complex\n } = _ref;\n /**\n * Calculate the Moore\u2013Penrose inverse of a matrix.\n *\n * Syntax:\n *\n * math.pinv(x)\n *\n * Examples:\n *\n * math.pinv([[1, 2], [3, 4]]) // returns [[-2, 1], [1.5, -0.5]]\n * math.pinv([[1, 0], [0, 1], [0, 1]]) // returns [[1, 0, 0], [0, 0.5, 0.5]]\n * math.pinv(4) // returns 0.25\n *\n * See also:\n *\n * inv\n *\n * @param {number | Complex | Array | Matrix} x Matrix to be inversed\n * @return {number | Complex | Array | Matrix} The inverse of `x`.\n */\n return typed(name, {\n 'Array | Matrix': function Array__Matrix(x) {\n var size = isMatrix(x) ? x.size() : arraySize(x);\n switch (size.length) {\n case 1:\n // vector\n if (_isZeros(x)) return ctranspose(x); // null vector\n if (size[0] === 1) {\n return inv(x); // invertible matrix\n } else {\n return dotDivide(ctranspose(x), dot(x, x));\n }\n case 2:\n // two dimensional array\n {\n if (_isZeros(x)) return ctranspose(x); // zero matrixx\n var rows = size[0];\n var cols = size[1];\n if (rows === cols) {\n try {\n return inv(x); // invertible matrix\n } catch (err) {\n if (err instanceof Error && err.message.match(/Cannot calculate inverse, determinant is zero/)) {\n // Expected\n } else {\n throw err;\n }\n }\n }\n if (isMatrix(x)) {\n return matrix(_pinv(x.valueOf(), rows, cols), x.storage());\n } else {\n // return an Array\n return _pinv(x, rows, cols);\n }\n }\n default:\n // multi dimensional array\n throw new RangeError('Matrix must be two dimensional ' + '(size: ' + format(size) + ')');\n }\n },\n any: function any(x) {\n // scalar\n if (equal(x, 0)) return clone(x); // zero\n return divideScalar(1, x);\n }\n });\n\n /**\n * Calculate the Moore\u2013Penrose inverse of a matrix\n * @param {Array[]} mat A matrix\n * @param {number} rows Number of rows\n * @param {number} cols Number of columns\n * @return {Array[]} pinv Pseudoinverse matrix\n * @private\n */\n function _pinv(mat, rows, cols) {\n var {\n C,\n F\n } = _rankFact(mat, rows, cols); // TODO: Use SVD instead (may improve precision)\n var Cpinv = multiply(inv(multiply(ctranspose(C), C)), ctranspose(C));\n var Fpinv = multiply(ctranspose(F), inv(multiply(F, ctranspose(F))));\n return multiply(Fpinv, Cpinv);\n }\n\n /**\n * Calculate the reduced row echelon form of a matrix\n *\n * Modified from https://rosettacode.org/wiki/Reduced_row_echelon_form\n *\n * @param {Array[]} mat A matrix\n * @param {number} rows Number of rows\n * @param {number} cols Number of columns\n * @return {Array[]} Reduced row echelon form\n * @private\n */\n function _rref(mat, rows, cols) {\n var M = clone(mat);\n var lead = 0;\n for (var r = 0; r < rows; r++) {\n if (cols <= lead) {\n return M;\n }\n var i = r;\n while (_isZero(M[i][lead])) {\n i++;\n if (rows === i) {\n i = r;\n lead++;\n if (cols === lead) {\n return M;\n }\n }\n }\n [M[i], M[r]] = [M[r], M[i]];\n var val = M[r][lead];\n for (var j = 0; j < cols; j++) {\n M[r][j] = dotDivide(M[r][j], val);\n }\n for (var _i = 0; _i < rows; _i++) {\n if (_i === r) continue;\n val = M[_i][lead];\n for (var _j = 0; _j < cols; _j++) {\n M[_i][_j] = add(M[_i][_j], multiply(-1, multiply(val, M[r][_j])));\n }\n }\n lead++;\n }\n return M;\n }\n\n /**\n * Calculate the rank factorization of a matrix\n *\n * @param {Array[]} mat A matrix (M)\n * @param {number} rows Number of rows\n * @param {number} cols Number of columns\n * @return {{C: Array, F: Array}} rank factorization where M = C F\n * @private\n */\n function _rankFact(mat, rows, cols) {\n var rref = _rref(mat, rows, cols);\n var C = mat.map((_, i) => _.filter((_, j) => j < rows && !_isZero(dot(rref[j], rref[j]))));\n var F = rref.filter((_, i) => !_isZero(dot(rref[i], rref[i])));\n return {\n C,\n F\n };\n }\n function _isZero(x) {\n return equal(add(x, Complex(1, 1)), add(0, Complex(1, 1)));\n }\n function _isZeros(arr) {\n return deepEqual(add(arr, Complex(1, 1)), add(multiply(arr, 0), Complex(1, 1)));\n }\n});", "import { clone } from '../../../utils/object.js';\nexport function createComplexEigs(_ref) {\n var {\n addScalar,\n subtract,\n flatten,\n multiply,\n multiplyScalar,\n divideScalar,\n sqrt,\n abs,\n bignumber,\n diag,\n size,\n reshape,\n inv,\n qr,\n usolve,\n usolveAll,\n equal,\n complex,\n larger,\n smaller,\n matrixFromColumns,\n dot\n } = _ref;\n /**\n * @param {number[][]} arr the matrix to find eigenvalues of\n * @param {number} N size of the matrix\n * @param {number|BigNumber} prec precision, anything lower will be considered zero\n * @param {'number'|'BigNumber'|'Complex'} type\n * @param {boolean} findVectors should we find eigenvectors?\n *\n * @returns {{ values: number[], vectors: number[][] }}\n */\n function complexEigs(arr, N, prec, type) {\n var findVectors = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n // TODO check if any row/col are zero except the diagonal\n\n // make sure corresponding rows and columns have similar magnitude\n // important because of numerical stability\n // MODIFIES arr by side effect!\n var R = balance(arr, N, prec, type, findVectors);\n\n // R is the row transformation matrix\n // arr = A' = R A R^-1, A is the original matrix\n // (if findVectors is false, R is undefined)\n // (And so to return to original matrix: A = R^-1 arr R)\n\n // TODO if magnitudes of elements vary over many orders,\n // move greatest elements to the top left corner\n\n // using similarity transformations, reduce the matrix\n // to Hessenberg form (upper triangular plus one subdiagonal row)\n // updates the transformation matrix R with new row operationsq\n // MODIFIES arr by side effect!\n reduceToHessenberg(arr, N, prec, type, findVectors, R);\n // still true that original A = R^-1 arr R)\n\n // find eigenvalues\n var {\n values,\n C\n } = iterateUntilTriangular(arr, N, prec, type, findVectors);\n\n // values is the list of eigenvalues, C is the column\n // transformation matrix that transforms arr, the hessenberg\n // matrix, to upper triangular\n // (So U = C^-1 arr C and the relationship between current arr\n // and original A is unchanged.)\n\n if (findVectors) {\n var eigenvectors = findEigenvectors(arr, N, C, R, values, prec, type);\n return {\n values,\n eigenvectors\n };\n }\n return {\n values\n };\n }\n\n /**\n * @param {number[][]} arr\n * @param {number} N\n * @param {number} prec\n * @param {'number'|'BigNumber'|'Complex'} type\n * @returns {number[][]}\n */\n function balance(arr, N, prec, type, findVectors) {\n var big = type === 'BigNumber';\n var cplx = type === 'Complex';\n var realzero = big ? bignumber(0) : 0;\n var one = big ? bignumber(1) : cplx ? complex(1) : 1;\n var realone = big ? bignumber(1) : 1;\n\n // base of the floating-point arithmetic\n var radix = big ? bignumber(10) : 2;\n var radixSq = multiplyScalar(radix, radix);\n\n // the diagonal transformation matrix R\n var Rdiag;\n if (findVectors) {\n Rdiag = Array(N).fill(one);\n }\n\n // this isn't the only time we loop thru the matrix...\n var last = false;\n while (!last) {\n // ...haha I'm joking! unless...\n last = true;\n for (var i = 0; i < N; i++) {\n // compute the taxicab norm of i-th column and row\n // TODO optimize for complex numbers\n var colNorm = realzero;\n var rowNorm = realzero;\n for (var j = 0; j < N; j++) {\n if (i === j) continue;\n colNorm = addScalar(colNorm, abs(arr[j][i]));\n rowNorm = addScalar(rowNorm, abs(arr[i][j]));\n }\n if (!equal(colNorm, 0) && !equal(rowNorm, 0)) {\n // find integer power closest to balancing the matrix\n // (we want to scale only by integer powers of radix,\n // so that we don't lose any precision due to round-off)\n\n var f = realone;\n var c = colNorm;\n var rowDivRadix = divideScalar(rowNorm, radix);\n var rowMulRadix = multiplyScalar(rowNorm, radix);\n while (smaller(c, rowDivRadix)) {\n c = multiplyScalar(c, radixSq);\n f = multiplyScalar(f, radix);\n }\n while (larger(c, rowMulRadix)) {\n c = divideScalar(c, radixSq);\n f = divideScalar(f, radix);\n }\n\n // check whether balancing is needed\n // condition = (c + rowNorm) / f < 0.95 * (colNorm + rowNorm)\n var condition = smaller(divideScalar(addScalar(c, rowNorm), f), multiplyScalar(addScalar(colNorm, rowNorm), 0.95));\n\n // apply balancing similarity transformation\n if (condition) {\n // we should loop once again to check whether\n // another rebalancing is needed\n last = false;\n var g = divideScalar(1, f);\n for (var _j = 0; _j < N; _j++) {\n if (i === _j) {\n continue;\n }\n arr[i][_j] = multiplyScalar(arr[i][_j], g);\n arr[_j][i] = multiplyScalar(arr[_j][i], f);\n }\n\n // keep track of transformations\n if (findVectors) {\n Rdiag[i] = multiplyScalar(Rdiag[i], g);\n }\n }\n }\n }\n }\n\n // return the diagonal row transformation matrix\n return findVectors ? diag(Rdiag) : null;\n }\n\n /**\n * @param {number[][]} arr\n * @param {number} N\n * @param {number} prec\n * @param {'number'|'BigNumber'|'Complex'} type\n * @param {boolean} findVectors\n * @param {number[][]} R the row transformation matrix that will be modified\n */\n function reduceToHessenberg(arr, N, prec, type, findVectors, R) {\n var big = type === 'BigNumber';\n var cplx = type === 'Complex';\n var zero = big ? bignumber(0) : cplx ? complex(0) : 0;\n if (big) {\n prec = bignumber(prec);\n }\n for (var i = 0; i < N - 2; i++) {\n // Find the largest subdiag element in the i-th col\n\n var maxIndex = 0;\n var max = zero;\n for (var j = i + 1; j < N; j++) {\n var el = arr[j][i];\n if (smaller(abs(max), abs(el))) {\n max = el;\n maxIndex = j;\n }\n }\n\n // This col is pivoted, no need to do anything\n if (smaller(abs(max), prec)) {\n continue;\n }\n if (maxIndex !== i + 1) {\n // Interchange maxIndex-th and (i+1)-th row\n var tmp1 = arr[maxIndex];\n arr[maxIndex] = arr[i + 1];\n arr[i + 1] = tmp1;\n\n // Interchange maxIndex-th and (i+1)-th column\n for (var _j2 = 0; _j2 < N; _j2++) {\n var tmp2 = arr[_j2][maxIndex];\n arr[_j2][maxIndex] = arr[_j2][i + 1];\n arr[_j2][i + 1] = tmp2;\n }\n\n // keep track of transformations\n if (findVectors) {\n var tmp3 = R[maxIndex];\n R[maxIndex] = R[i + 1];\n R[i + 1] = tmp3;\n }\n }\n\n // Reduce following rows and columns\n for (var _j3 = i + 2; _j3 < N; _j3++) {\n var n = divideScalar(arr[_j3][i], max);\n if (n === 0) {\n continue;\n }\n\n // from j-th row subtract n-times (i+1)th row\n for (var k = 0; k < N; k++) {\n arr[_j3][k] = subtract(arr[_j3][k], multiplyScalar(n, arr[i + 1][k]));\n }\n\n // to (i+1)th column add n-times j-th column\n for (var _k = 0; _k < N; _k++) {\n arr[_k][i + 1] = addScalar(arr[_k][i + 1], multiplyScalar(n, arr[_k][_j3]));\n }\n\n // keep track of transformations\n if (findVectors) {\n for (var _k2 = 0; _k2 < N; _k2++) {\n R[_j3][_k2] = subtract(R[_j3][_k2], multiplyScalar(n, R[i + 1][_k2]));\n }\n }\n }\n }\n return R;\n }\n\n /**\n * @returns {{values: values, C: Matrix}}\n * @see Press, Wiliams: Numerical recipes in Fortran 77\n * @see https://en.wikipedia.org/wiki/QR_algorithm\n */\n function iterateUntilTriangular(A, N, prec, type, findVectors) {\n var big = type === 'BigNumber';\n var cplx = type === 'Complex';\n var one = big ? bignumber(1) : cplx ? complex(1) : 1;\n if (big) {\n prec = bignumber(prec);\n }\n\n // The Francis Algorithm\n // The core idea of this algorithm is that doing successive\n // A' = QtAQ transformations will eventually converge to block-\n // upper-triangular with diagonal blocks either 1x1 or 2x2.\n // The Q here is the one from the QR decomposition, A = QR.\n // Since the eigenvalues of a block-upper-triangular matrix are\n // the eigenvalues of its diagonal blocks and we know how to find\n // eigenvalues of a 2x2 matrix, we know the eigenvalues of A.\n\n var arr = clone(A);\n\n // the list of converged eigenvalues\n var lambdas = [];\n\n // size of arr, which will get smaller as eigenvalues converge\n var n = N;\n\n // the diagonal of the block-diagonal matrix that turns\n // converged 2x2 matrices into upper triangular matrices\n var Sdiag = [];\n\n // N\u00D7N matrix describing the overall transformation done during the QR algorithm\n var Qtotal = findVectors ? diag(Array(N).fill(one)) : undefined;\n\n // nxn matrix describing the QR transformations done since last convergence\n var Qpartial = findVectors ? diag(Array(n).fill(one)) : undefined;\n\n // last eigenvalue converged before this many steps\n var lastConvergenceBefore = 0;\n while (lastConvergenceBefore <= 100) {\n lastConvergenceBefore += 1;\n\n // TODO if the convergence is slow, do something clever\n\n // Perform the factorization\n\n var k = arr[n - 1][n - 1]; // TODO this is apparently a somewhat\n // old-fashioned choice; ideally set close to an eigenvalue, or\n // perhaps better yet switch to the implicit QR version that is sometimes\n // specifically called the \"Francis algorithm\" that is alluded to\n // in the following TODO. (Or perhaps we switch to an independently\n // optimized third-party package for the linear algebra operations...)\n\n for (var i = 0; i < n; i++) {\n arr[i][i] = subtract(arr[i][i], k);\n }\n\n // TODO do an implicit QR transformation\n var {\n Q,\n R\n } = qr(arr);\n arr = multiply(R, Q);\n for (var _i = 0; _i < n; _i++) {\n arr[_i][_i] = addScalar(arr[_i][_i], k);\n }\n\n // keep track of transformations\n if (findVectors) {\n Qpartial = multiply(Qpartial, Q);\n }\n\n // The rightmost diagonal element converged to an eigenvalue\n if (n === 1 || smaller(abs(arr[n - 1][n - 2]), prec)) {\n lastConvergenceBefore = 0;\n lambdas.push(arr[n - 1][n - 1]);\n\n // keep track of transformations\n if (findVectors) {\n Sdiag.unshift([[1]]);\n inflateMatrix(Qpartial, N);\n Qtotal = multiply(Qtotal, Qpartial);\n if (n > 1) {\n Qpartial = diag(Array(n - 1).fill(one));\n }\n }\n\n // reduce the matrix size\n n -= 1;\n arr.pop();\n for (var _i2 = 0; _i2 < n; _i2++) {\n arr[_i2].pop();\n }\n\n // The rightmost diagonal 2x2 block converged\n } else if (n === 2 || smaller(abs(arr[n - 2][n - 3]), prec)) {\n lastConvergenceBefore = 0;\n var ll = eigenvalues2x2(arr[n - 2][n - 2], arr[n - 2][n - 1], arr[n - 1][n - 2], arr[n - 1][n - 1]);\n lambdas.push(...ll);\n\n // keep track of transformations\n if (findVectors) {\n Sdiag.unshift(jordanBase2x2(arr[n - 2][n - 2], arr[n - 2][n - 1], arr[n - 1][n - 2], arr[n - 1][n - 1], ll[0], ll[1], prec, type));\n inflateMatrix(Qpartial, N);\n Qtotal = multiply(Qtotal, Qpartial);\n if (n > 2) {\n Qpartial = diag(Array(n - 2).fill(one));\n }\n }\n\n // reduce the matrix size\n n -= 2;\n arr.pop();\n arr.pop();\n for (var _i3 = 0; _i3 < n; _i3++) {\n arr[_i3].pop();\n arr[_i3].pop();\n }\n }\n if (n === 0) {\n break;\n }\n }\n\n // standard sorting\n lambdas.sort((a, b) => +subtract(abs(a), abs(b)));\n\n // the algorithm didn't converge\n if (lastConvergenceBefore > 100) {\n var err = Error('The eigenvalues failed to converge. Only found these eigenvalues: ' + lambdas.join(', '));\n err.values = lambdas;\n err.vectors = [];\n throw err;\n }\n\n // combine the overall QR transformation Qtotal with the subsequent\n // transformation S that turns the diagonal 2x2 blocks to upper triangular\n var C = findVectors ? multiply(Qtotal, blockDiag(Sdiag, N)) : undefined;\n return {\n values: lambdas,\n C\n };\n }\n\n /**\n * @param {Matrix} A hessenberg-form matrix\n * @param {number} N size of A\n * @param {Matrix} C column transformation matrix that turns A into upper triangular\n * @param {Matrix} R similarity that turns original matrix into A\n * @param {number[]} values array of eigenvalues of A\n * @param {'number'|'BigNumber'|'Complex'} type\n * @returns {number[][]} eigenvalues\n */\n function findEigenvectors(A, N, C, R, values, prec, type) {\n var Cinv = inv(C);\n var U = multiply(Cinv, A, C);\n var big = type === 'BigNumber';\n var cplx = type === 'Complex';\n var zero = big ? bignumber(0) : cplx ? complex(0) : 0;\n var one = big ? bignumber(1) : cplx ? complex(1) : 1;\n\n // turn values into a kind of \"multiset\"\n // this way it is easier to find eigenvectors\n var uniqueValues = [];\n var multiplicities = [];\n for (var lambda of values) {\n var i = indexOf(uniqueValues, lambda, equal);\n if (i === -1) {\n uniqueValues.push(lambda);\n multiplicities.push(1);\n } else {\n multiplicities[i] += 1;\n }\n }\n\n // find eigenvectors by solving U \u2212 lambdaE = 0\n // TODO replace with an iterative eigenvector algorithm\n // (this one might fail for imprecise eigenvalues)\n\n var vectors = [];\n var len = uniqueValues.length;\n var b = Array(N).fill(zero);\n var E = diag(Array(N).fill(one));\n var _loop = function _loop() {\n var lambda = uniqueValues[_i4];\n var S = subtract(U, multiply(lambda, E)); // the characteristic matrix\n\n var solutions = usolveAll(S, b);\n solutions.shift(); // ignore the null vector\n\n // looks like we missed something, try inverse iteration\n // But if that fails, just presume that the original matrix truly\n // was defective.\n while (solutions.length < multiplicities[_i4]) {\n var approxVec = inverseIterate(S, N, solutions, prec, type);\n if (approxVec === null) {\n break;\n } // no more vectors were found\n solutions.push(approxVec);\n }\n\n // Transform back into original array coordinates\n var correction = multiply(inv(R), C);\n solutions = solutions.map(v => multiply(correction, v));\n vectors.push(...solutions.map(v => ({\n value: lambda,\n vector: flatten(v)\n })));\n };\n for (var _i4 = 0; _i4 < len; _i4++) {\n _loop();\n }\n return vectors;\n }\n\n /**\n * Compute the eigenvalues of an 2x2 matrix\n * @return {[number,number]}\n */\n function eigenvalues2x2(a, b, c, d) {\n // lambda_+- = 1/2 trA +- 1/2 sqrt( tr^2 A - 4 detA )\n var trA = addScalar(a, d);\n var detA = subtract(multiplyScalar(a, d), multiplyScalar(b, c));\n var x = multiplyScalar(trA, 0.5);\n var y = multiplyScalar(sqrt(subtract(multiplyScalar(trA, trA), multiplyScalar(4, detA))), 0.5);\n return [addScalar(x, y), subtract(x, y)];\n }\n\n /**\n * For an 2x2 matrix compute the transformation matrix S,\n * so that SAS^-1 is an upper triangular matrix\n * @return {[[number,number],[number,number]]}\n * @see https://math.berkeley.edu/~ogus/old/Math_54-05/webfoils/jordan.pdf\n * @see http://people.math.harvard.edu/~knill/teaching/math21b2004/exhibits/2dmatrices/index.html\n */\n function jordanBase2x2(a, b, c, d, l1, l2, prec, type) {\n var big = type === 'BigNumber';\n var cplx = type === 'Complex';\n var zero = big ? bignumber(0) : cplx ? complex(0) : 0;\n var one = big ? bignumber(1) : cplx ? complex(1) : 1;\n\n // matrix is already upper triangular\n // return an identity matrix\n if (smaller(abs(c), prec)) {\n return [[one, zero], [zero, one]];\n }\n\n // matrix is diagonalizable\n // return its eigenvectors as columns\n if (larger(abs(subtract(l1, l2)), prec)) {\n return [[subtract(l1, d), subtract(l2, d)], [c, c]];\n }\n\n // matrix is not diagonalizable\n // compute diagonal elements of N = A - lambdaI\n var na = subtract(a, l1);\n var nd = subtract(d, l1);\n\n // col(N,2) = 0 implies S = ( col(N,1), e_1 )\n // col(N,2) != 0 implies S = ( col(N,2), e_2 )\n\n if (smaller(abs(b), prec) && smaller(abs(nd), prec)) {\n return [[na, one], [c, zero]];\n } else {\n return [[b, zero], [nd, one]];\n }\n }\n\n /**\n * Enlarge the matrix from nxn to NxN, setting the new\n * elements to 1 on diagonal and 0 elsewhere\n */\n function inflateMatrix(arr, N) {\n // add columns\n for (var i = 0; i < arr.length; i++) {\n arr[i].push(...Array(N - arr[i].length).fill(0));\n }\n\n // add rows\n for (var _i5 = arr.length; _i5 < N; _i5++) {\n arr.push(Array(N).fill(0));\n arr[_i5][_i5] = 1;\n }\n return arr;\n }\n\n /**\n * Create a block-diagonal matrix with the given square matrices on the diagonal\n * @param {Matrix[] | number[][][]} arr array of matrices to be placed on the diagonal\n * @param {number} N the size of the resulting matrix\n */\n function blockDiag(arr, N) {\n var M = [];\n for (var i = 0; i < N; i++) {\n M[i] = Array(N).fill(0);\n }\n var I = 0;\n for (var sub of arr) {\n var n = sub.length;\n for (var _i6 = 0; _i6 < n; _i6++) {\n for (var j = 0; j < n; j++) {\n M[I + _i6][I + j] = sub[_i6][j];\n }\n }\n I += n;\n }\n return M;\n }\n\n /**\n * Finds the index of an element in an array using a custom equality function\n * @template T\n * @param {Array} arr array in which to search\n * @param {T} el the element to find\n * @param {function(T, T): boolean} fn the equality function, first argument is an element of `arr`, the second is always `el`\n * @returns {number} the index of `el`, or -1 when it's not in `arr`\n */\n function indexOf(arr, el, fn) {\n for (var i = 0; i < arr.length; i++) {\n if (fn(arr[i], el)) {\n return i;\n }\n }\n return -1;\n }\n\n /**\n * Provided a near-singular upper-triangular matrix A and a list of vectors,\n * finds an eigenvector of A with the smallest eigenvalue, which is orthogonal\n * to each vector in the list\n * @template T\n * @param {T[][]} A near-singular square matrix\n * @param {number} N dimension\n * @param {T[][]} orthog list of vectors\n * @param {number} prec epsilon\n * @param {'number'|'BigNumber'|'Complex'} type\n * @return {T[] | null} eigenvector\n *\n * @see Numerical Recipes for Fortran 77 \u2013 11.7 Eigenvalues or Eigenvectors by Inverse Iteration\n */\n function inverseIterate(A, N, orthog, prec, type) {\n var largeNum = type === 'BigNumber' ? bignumber(1000) : 1000;\n var b; // the vector\n\n // you better choose a random vector before I count to five\n var i = 0;\n for (; i < 5; ++i) {\n b = randomOrthogonalVector(N, orthog, type);\n try {\n b = usolve(A, b);\n } catch (_unused) {\n // That direction didn't work, likely because the original matrix\n // was defective. But still make the full number of tries...\n continue;\n }\n if (larger(norm(b), largeNum)) {\n break;\n }\n }\n if (i >= 5) {\n return null; // couldn't find any orthogonal vector in the image\n }\n\n // you better converge before I count to ten\n i = 0;\n while (true) {\n var c = usolve(A, b);\n if (smaller(norm(orthogonalComplement(b, [c])), prec)) {\n break;\n }\n if (++i >= 10) {\n return null;\n }\n b = normalize(c);\n }\n return b;\n }\n\n /**\n * Generates a random unit vector of dimension N, orthogonal to each vector in the list\n * @template T\n * @param {number} N dimension\n * @param {T[][]} orthog list of vectors\n * @param {'number'|'BigNumber'|'Complex'} type\n * @returns {T[]} random vector\n */\n function randomOrthogonalVector(N, orthog, type) {\n var big = type === 'BigNumber';\n var cplx = type === 'Complex';\n\n // generate random vector with the correct type\n var v = Array(N).fill(0).map(_ => 2 * Math.random() - 1);\n if (big) {\n v = v.map(n => bignumber(n));\n }\n if (cplx) {\n v = v.map(n => complex(n));\n }\n\n // project to orthogonal complement\n v = orthogonalComplement(v, orthog);\n\n // normalize\n return normalize(v, type);\n }\n\n /**\n * Project vector v to the orthogonal complement of an array of vectors\n */\n function orthogonalComplement(v, orthog) {\n var vectorShape = size(v);\n for (var w of orthog) {\n w = reshape(w, vectorShape); // make sure this is just a vector computation\n // v := v \u2212 (w, v)/|w|^2 w\n v = subtract(v, multiply(divideScalar(dot(w, v), dot(w, w)), w));\n }\n return v;\n }\n\n /**\n * Calculate the norm of a vector.\n * We can't use math.norm because factory can't handle circular dependency.\n * Seriously, I'm really fed up with factory.\n */\n function norm(v) {\n return abs(sqrt(dot(v, v)));\n }\n\n /**\n * Normalize a vector\n * @template T\n * @param {T[]} v\n * @param {'number'|'BigNumber'|'Complex'} type\n * @returns {T[]} normalized vec\n */\n function normalize(v, type) {\n var big = type === 'BigNumber';\n var cplx = type === 'Complex';\n var one = big ? bignumber(1) : cplx ? complex(1) : 1;\n return multiply(divideScalar(one, norm(v)), v);\n }\n return complexEigs;\n}", "import { clone } from '../../../utils/object.js';\nexport function createRealSymmetric(_ref) {\n var {\n config,\n addScalar,\n subtract,\n abs,\n atan,\n cos,\n sin,\n multiplyScalar,\n inv,\n bignumber,\n multiply,\n add\n } = _ref;\n /**\n * @param {number[] | BigNumber[]} arr\n * @param {number} N\n * @param {number} prec\n * @param {'number' | 'BigNumber'} type\n */\n function main(arr, N) {\n var prec = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : config.relTol;\n var type = arguments.length > 3 ? arguments[3] : undefined;\n var computeVectors = arguments.length > 4 ? arguments[4] : undefined;\n if (type === 'number') {\n return diag(arr, prec, computeVectors);\n }\n if (type === 'BigNumber') {\n return diagBig(arr, prec, computeVectors);\n }\n throw TypeError('Unsupported data type: ' + type);\n }\n\n // diagonalization implementation for number (efficient)\n function diag(x, precision, computeVectors) {\n var N = x.length;\n var e0 = Math.abs(precision / N);\n var psi;\n var Sij;\n if (computeVectors) {\n Sij = new Array(N);\n // Sij is Identity Matrix\n for (var i = 0; i < N; i++) {\n Sij[i] = Array(N).fill(0);\n Sij[i][i] = 1.0;\n }\n }\n // initial error\n var Vab = getAij(x);\n while (Math.abs(Vab[1]) >= Math.abs(e0)) {\n var _i = Vab[0][0];\n var j = Vab[0][1];\n psi = getTheta(x[_i][_i], x[j][j], x[_i][j]);\n x = x1(x, psi, _i, j);\n if (computeVectors) Sij = Sij1(Sij, psi, _i, j);\n Vab = getAij(x);\n }\n var Ei = Array(N).fill(0); // eigenvalues\n for (var _i2 = 0; _i2 < N; _i2++) {\n Ei[_i2] = x[_i2][_i2];\n }\n return sorting(clone(Ei), Sij, computeVectors);\n }\n\n // diagonalization implementation for bigNumber\n function diagBig(x, precision, computeVectors) {\n var N = x.length;\n var e0 = abs(precision / N);\n var psi;\n var Sij;\n if (computeVectors) {\n Sij = new Array(N);\n // Sij is Identity Matrix\n for (var i = 0; i < N; i++) {\n Sij[i] = Array(N).fill(0);\n Sij[i][i] = 1.0;\n }\n }\n // initial error\n var Vab = getAijBig(x);\n while (abs(Vab[1]) >= abs(e0)) {\n var _i3 = Vab[0][0];\n var j = Vab[0][1];\n psi = getThetaBig(x[_i3][_i3], x[j][j], x[_i3][j]);\n x = x1Big(x, psi, _i3, j);\n if (computeVectors) Sij = Sij1Big(Sij, psi, _i3, j);\n Vab = getAijBig(x);\n }\n var Ei = Array(N).fill(0); // eigenvalues\n for (var _i4 = 0; _i4 < N; _i4++) {\n Ei[_i4] = x[_i4][_i4];\n }\n // return [clone(Ei), clone(Sij)]\n return sorting(clone(Ei), Sij, computeVectors);\n }\n\n // get angle\n function getTheta(aii, ajj, aij) {\n var denom = ajj - aii;\n if (Math.abs(denom) <= config.relTol) {\n return Math.PI / 4.0;\n } else {\n return 0.5 * Math.atan(2.0 * aij / (ajj - aii));\n }\n }\n\n // get angle\n function getThetaBig(aii, ajj, aij) {\n var denom = subtract(ajj, aii);\n if (abs(denom) <= config.relTol) {\n return bignumber(-1).acos().div(4);\n } else {\n return multiplyScalar(0.5, atan(multiply(2.0, aij, inv(denom))));\n }\n }\n\n // update eigvec\n function Sij1(Sij, theta, i, j) {\n var N = Sij.length;\n var c = Math.cos(theta);\n var s = Math.sin(theta);\n var Ski = Array(N).fill(0);\n var Skj = Array(N).fill(0);\n for (var k = 0; k < N; k++) {\n Ski[k] = c * Sij[k][i] - s * Sij[k][j];\n Skj[k] = s * Sij[k][i] + c * Sij[k][j];\n }\n for (var _k = 0; _k < N; _k++) {\n Sij[_k][i] = Ski[_k];\n Sij[_k][j] = Skj[_k];\n }\n return Sij;\n }\n // update eigvec for overlap\n function Sij1Big(Sij, theta, i, j) {\n var N = Sij.length;\n var c = cos(theta);\n var s = sin(theta);\n var Ski = Array(N).fill(bignumber(0));\n var Skj = Array(N).fill(bignumber(0));\n for (var k = 0; k < N; k++) {\n Ski[k] = subtract(multiplyScalar(c, Sij[k][i]), multiplyScalar(s, Sij[k][j]));\n Skj[k] = addScalar(multiplyScalar(s, Sij[k][i]), multiplyScalar(c, Sij[k][j]));\n }\n for (var _k2 = 0; _k2 < N; _k2++) {\n Sij[_k2][i] = Ski[_k2];\n Sij[_k2][j] = Skj[_k2];\n }\n return Sij;\n }\n\n // update matrix\n function x1Big(Hij, theta, i, j) {\n var N = Hij.length;\n var c = bignumber(cos(theta));\n var s = bignumber(sin(theta));\n var c2 = multiplyScalar(c, c);\n var s2 = multiplyScalar(s, s);\n var Aki = Array(N).fill(bignumber(0));\n var Akj = Array(N).fill(bignumber(0));\n // 2cs Hij\n var csHij = multiply(bignumber(2), c, s, Hij[i][j]);\n // Aii\n var Aii = addScalar(subtract(multiplyScalar(c2, Hij[i][i]), csHij), multiplyScalar(s2, Hij[j][j]));\n var Ajj = add(multiplyScalar(s2, Hij[i][i]), csHij, multiplyScalar(c2, Hij[j][j]));\n // 0 to i\n for (var k = 0; k < N; k++) {\n Aki[k] = subtract(multiplyScalar(c, Hij[i][k]), multiplyScalar(s, Hij[j][k]));\n Akj[k] = addScalar(multiplyScalar(s, Hij[i][k]), multiplyScalar(c, Hij[j][k]));\n }\n // Modify Hij\n Hij[i][i] = Aii;\n Hij[j][j] = Ajj;\n Hij[i][j] = bignumber(0);\n Hij[j][i] = bignumber(0);\n // 0 to i\n for (var _k3 = 0; _k3 < N; _k3++) {\n if (_k3 !== i && _k3 !== j) {\n Hij[i][_k3] = Aki[_k3];\n Hij[_k3][i] = Aki[_k3];\n Hij[j][_k3] = Akj[_k3];\n Hij[_k3][j] = Akj[_k3];\n }\n }\n return Hij;\n }\n\n // update matrix\n function x1(Hij, theta, i, j) {\n var N = Hij.length;\n var c = Math.cos(theta);\n var s = Math.sin(theta);\n var c2 = c * c;\n var s2 = s * s;\n var Aki = Array(N).fill(0);\n var Akj = Array(N).fill(0);\n // Aii\n var Aii = c2 * Hij[i][i] - 2 * c * s * Hij[i][j] + s2 * Hij[j][j];\n var Ajj = s2 * Hij[i][i] + 2 * c * s * Hij[i][j] + c2 * Hij[j][j];\n // 0 to i\n for (var k = 0; k < N; k++) {\n Aki[k] = c * Hij[i][k] - s * Hij[j][k];\n Akj[k] = s * Hij[i][k] + c * Hij[j][k];\n }\n // Modify Hij\n Hij[i][i] = Aii;\n Hij[j][j] = Ajj;\n Hij[i][j] = 0;\n Hij[j][i] = 0;\n // 0 to i\n for (var _k4 = 0; _k4 < N; _k4++) {\n if (_k4 !== i && _k4 !== j) {\n Hij[i][_k4] = Aki[_k4];\n Hij[_k4][i] = Aki[_k4];\n Hij[j][_k4] = Akj[_k4];\n Hij[_k4][j] = Akj[_k4];\n }\n }\n return Hij;\n }\n\n // get max off-diagonal value from Upper Diagonal\n function getAij(Mij) {\n var N = Mij.length;\n var maxMij = 0;\n var maxIJ = [0, 1];\n for (var i = 0; i < N; i++) {\n for (var j = i + 1; j < N; j++) {\n if (Math.abs(maxMij) < Math.abs(Mij[i][j])) {\n maxMij = Math.abs(Mij[i][j]);\n maxIJ = [i, j];\n }\n }\n }\n return [maxIJ, maxMij];\n }\n\n // get max off-diagonal value from Upper Diagonal\n function getAijBig(Mij) {\n var N = Mij.length;\n var maxMij = 0;\n var maxIJ = [0, 1];\n for (var i = 0; i < N; i++) {\n for (var j = i + 1; j < N; j++) {\n if (abs(maxMij) < abs(Mij[i][j])) {\n maxMij = abs(Mij[i][j]);\n maxIJ = [i, j];\n }\n }\n }\n return [maxIJ, maxMij];\n }\n\n // sort results\n function sorting(E, S, computeVectors) {\n var N = E.length;\n var values = Array(N);\n var vecs;\n if (computeVectors) {\n vecs = Array(N);\n for (var k = 0; k < N; k++) {\n vecs[k] = Array(N);\n }\n }\n for (var i = 0; i < N; i++) {\n var minID = 0;\n var minE = E[0];\n for (var j = 0; j < E.length; j++) {\n if (abs(E[j]) < abs(minE)) {\n minID = j;\n minE = E[minID];\n }\n }\n values[i] = E.splice(minID, 1)[0];\n if (computeVectors) {\n for (var _k5 = 0; _k5 < N; _k5++) {\n vecs[i][_k5] = S[_k5][minID];\n S[_k5].splice(minID, 1);\n }\n }\n }\n if (!computeVectors) return {\n values\n };\n var eigenvectors = vecs.map((vector, i) => ({\n value: values[i],\n vector\n }));\n return {\n values,\n eigenvectors\n };\n }\n return main;\n}", "import _extends from \"@babel/runtime/helpers/extends\";\nimport { factory } from '../../utils/factory.js';\nimport { format } from '../../utils/string.js';\nimport { createComplexEigs } from './eigs/complexEigs.js';\nimport { createRealSymmetric } from './eigs/realSymmetric.js';\nimport { typeOf, isNumber, isBigNumber, isComplex, isFraction } from '../../utils/is.js';\nvar name = 'eigs';\n\n// The absolute state of math.js's dependency system:\nvar dependencies = ['config', 'typed', 'matrix', 'addScalar', 'equal', 'subtract', 'abs', 'atan', 'cos', 'sin', 'multiplyScalar', 'divideScalar', 'inv', 'bignumber', 'multiply', 'add', 'larger', 'column', 'flatten', 'number', 'complex', 'sqrt', 'diag', 'size', 'reshape', 'qr', 'usolve', 'usolveAll', 'im', 're', 'smaller', 'matrixFromColumns', 'dot'];\nexport var createEigs = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n config,\n typed,\n matrix,\n addScalar,\n subtract,\n equal,\n abs,\n atan,\n cos,\n sin,\n multiplyScalar,\n divideScalar,\n inv,\n bignumber,\n multiply,\n add,\n larger,\n column,\n flatten,\n number,\n complex,\n sqrt,\n diag,\n size,\n reshape,\n qr,\n usolve,\n usolveAll,\n im,\n re,\n smaller,\n matrixFromColumns,\n dot\n } = _ref;\n var doRealSymmetric = createRealSymmetric({\n config,\n addScalar,\n subtract,\n column,\n flatten,\n equal,\n abs,\n atan,\n cos,\n sin,\n multiplyScalar,\n inv,\n bignumber,\n complex,\n multiply,\n add\n });\n var doComplexEigs = createComplexEigs({\n config,\n addScalar,\n subtract,\n multiply,\n multiplyScalar,\n flatten,\n divideScalar,\n sqrt,\n abs,\n bignumber,\n diag,\n size,\n reshape,\n qr,\n inv,\n usolve,\n usolveAll,\n equal,\n complex,\n larger,\n smaller,\n matrixFromColumns,\n dot\n });\n\n /**\n * Compute eigenvalues and optionally eigenvectors of a square matrix.\n * The eigenvalues are sorted by their absolute value, ascending, and\n * returned as a vector in the `values` property of the returned project.\n * An eigenvalue with algebraic multiplicity k will be listed k times, so\n * that the returned `values` vector always has length equal to the size\n * of the input matrix.\n *\n * The `eigenvectors` property of the return value provides the eigenvectors.\n * It is an array of plain objects: the `value` property of each gives the\n * associated eigenvalue, and the `vector` property gives the eigenvector\n * itself. Note that the same `value` property will occur as many times in\n * the list provided by `eigenvectors` as the geometric multiplicity of\n * that value.\n *\n * If the algorithm fails to converge, it will throw an error \u2013\n * in that case, however, you may still find useful information\n * in `err.values` and `err.vectors`.\n *\n * Note that the 'precision' option does not directly specify the _accuracy_\n * of the returned eigenvalues. Rather, it determines how small an entry\n * of the iterative approximations to an upper triangular matrix must be\n * in order to be considered zero. The actual accuracy of the returned\n * eigenvalues may be greater or less than the precision, depending on the\n * conditioning of the matrix and how far apart or close the actual\n * eigenvalues are. Note that currently, relatively simple, \"traditional\"\n * methods of eigenvalue computation are being used; this is not a modern,\n * high-precision eigenvalue computation. That said, it should typically\n * produce fairly reasonable results.\n *\n * Syntax:\n *\n * math.eigs(x, [prec])\n * math.eigs(x, {options})\n *\n * Examples:\n *\n * const { eigs, multiply, column, transpose, matrixFromColumns } = math\n * const H = [[5, 2.3], [2.3, 1]]\n * const ans = eigs(H) // returns {values: [E1,E2...sorted], eigenvectors: [{value: E1, vector: v2}, {value: e, vector: v2}, ...]\n * const E = ans.values\n * const V = ans.eigenvectors\n * multiply(H, V[0].vector)) // returns multiply(E[0], V[0].vector))\n * const U = matrixFromColumns(...V.map(obj => obj.vector))\n * const UTxHxU = multiply(transpose(U), H, U) // diagonalizes H if possible\n * E[0] == UTxHxU[0][0] // returns true always\n *\n * // Compute only approximate eigenvalues:\n * const {values} = eigs(H, {eigenvectors: false, precision: 1e-6})\n *\n * See also:\n *\n * inv\n *\n * @param {Array | Matrix} x Matrix to be diagonalized\n *\n * @param {number | BigNumber | OptsObject} [opts] Object with keys `precision`, defaulting to config.relTol, and `eigenvectors`, defaulting to true and specifying whether to compute eigenvectors. If just a number, specifies precision.\n * @return {{values: Array|Matrix, eigenvectors?: Array}} Object containing an array of eigenvalues and an array of {value: number|BigNumber, vector: Array|Matrix} objects. The eigenvectors property is undefined if eigenvectors were not requested.\n *\n */\n return typed('eigs', {\n // The conversion to matrix in the first two implementations,\n // just to convert back to an array right away in\n // computeValuesAndVectors, is unfortunate, and should perhaps be\n // streamlined. It is done because the Matrix object carries some\n // type information about its entries, and so constructing the matrix\n // is a roundabout way of doing type detection.\n Array: function Array(x) {\n return doEigs(matrix(x));\n },\n 'Array, number|BigNumber': function Array_numberBigNumber(x, prec) {\n return doEigs(matrix(x), {\n precision: prec\n });\n },\n 'Array, Object'(x, opts) {\n return doEigs(matrix(x), opts);\n },\n Matrix: function Matrix(mat) {\n return doEigs(mat, {\n matricize: true\n });\n },\n 'Matrix, number|BigNumber': function Matrix_numberBigNumber(mat, prec) {\n return doEigs(mat, {\n precision: prec,\n matricize: true\n });\n },\n 'Matrix, Object': function Matrix_Object(mat, opts) {\n var useOpts = {\n matricize: true\n };\n _extends(useOpts, opts);\n return doEigs(mat, useOpts);\n }\n });\n function doEigs(mat) {\n var _opts$precision;\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var computeVectors = 'eigenvectors' in opts ? opts.eigenvectors : true;\n var prec = (_opts$precision = opts.precision) !== null && _opts$precision !== void 0 ? _opts$precision : config.relTol;\n var result = computeValuesAndVectors(mat, prec, computeVectors);\n if (opts.matricize) {\n result.values = matrix(result.values);\n if (computeVectors) {\n result.eigenvectors = result.eigenvectors.map(_ref2 => {\n var {\n value,\n vector\n } = _ref2;\n return {\n value,\n vector: matrix(vector)\n };\n });\n }\n }\n if (computeVectors) {\n Object.defineProperty(result, 'vectors', {\n enumerable: false,\n // to make sure that the eigenvectors can still be\n // converted to string.\n get: () => {\n throw new Error('eigs(M).vectors replaced with eigs(M).eigenvectors');\n }\n });\n }\n return result;\n }\n function computeValuesAndVectors(mat, prec, computeVectors) {\n var arr = mat.toArray(); // NOTE: arr is guaranteed to be unaliased\n // and so safe to modify in place\n var asize = mat.size();\n if (asize.length !== 2 || asize[0] !== asize[1]) {\n throw new RangeError(\"Matrix must be square (size: \".concat(format(asize), \")\"));\n }\n var N = asize[0];\n if (isReal(arr, N, prec)) {\n coerceReal(arr, N); // modifies arr by side effect\n\n if (isSymmetric(arr, N, prec)) {\n var _type = coerceTypes(mat, arr, N); // modifies arr by side effect\n return doRealSymmetric(arr, N, prec, _type, computeVectors);\n }\n }\n var type = coerceTypes(mat, arr, N); // modifies arr by side effect\n return doComplexEigs(arr, N, prec, type, computeVectors);\n }\n\n /** @return {boolean} */\n function isSymmetric(arr, N, prec) {\n for (var i = 0; i < N; i++) {\n for (var j = i; j < N; j++) {\n // TODO proper comparison of bignum and frac\n if (larger(bignumber(abs(subtract(arr[i][j], arr[j][i]))), prec)) {\n return false;\n }\n }\n }\n return true;\n }\n\n /** @return {boolean} */\n function isReal(arr, N, prec) {\n for (var i = 0; i < N; i++) {\n for (var j = 0; j < N; j++) {\n // TODO proper comparison of bignum and frac\n if (larger(bignumber(abs(im(arr[i][j]))), prec)) {\n return false;\n }\n }\n }\n return true;\n }\n function coerceReal(arr, N) {\n for (var i = 0; i < N; i++) {\n for (var j = 0; j < N; j++) {\n arr[i][j] = re(arr[i][j]);\n }\n }\n }\n\n /** @return {'number' | 'BigNumber' | 'Complex'} */\n function coerceTypes(mat, arr, N) {\n /** @type {string} */\n var type = mat.datatype();\n if (type === 'number' || type === 'BigNumber' || type === 'Complex') {\n return type;\n }\n var hasNumber = false;\n var hasBig = false;\n var hasComplex = false;\n for (var i = 0; i < N; i++) {\n for (var j = 0; j < N; j++) {\n var el = arr[i][j];\n if (isNumber(el) || isFraction(el)) {\n hasNumber = true;\n } else if (isBigNumber(el)) {\n hasBig = true;\n } else if (isComplex(el)) {\n hasComplex = true;\n } else {\n throw TypeError('Unsupported type in Matrix: ' + typeOf(el));\n }\n }\n }\n if (hasBig && hasComplex) {\n console.warn('Complex BigNumbers not supported, this operation will lose precission.');\n }\n if (hasComplex) {\n for (var _i = 0; _i < N; _i++) {\n for (var _j = 0; _j < N; _j++) {\n arr[_i][_j] = complex(arr[_i][_j]);\n }\n }\n return 'Complex';\n }\n if (hasBig) {\n for (var _i2 = 0; _i2 < N; _i2++) {\n for (var _j2 = 0; _j2 < N; _j2++) {\n arr[_i2][_j2] = bignumber(arr[_i2][_j2]);\n }\n }\n return 'BigNumber';\n }\n if (hasNumber) {\n for (var _i3 = 0; _i3 < N; _i3++) {\n for (var _j3 = 0; _j3 < N; _j3++) {\n arr[_i3][_j3] = number(arr[_i3][_j3]);\n }\n }\n return 'number';\n } else {\n throw TypeError('Matrix contains unsupported types only.');\n }\n }\n});", "import { isSparseMatrix } from '../../utils/is.js';\nimport { format } from '../../utils/string.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'expm';\nvar dependencies = ['typed', 'abs', 'add', 'identity', 'inv', 'multiply'];\nexport var createExpm = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n abs,\n add,\n identity,\n inv,\n multiply\n } = _ref;\n /**\n * Compute the matrix exponential, expm(A) = e^A. The matrix must be square.\n * Not to be confused with exp(a), which performs element-wise\n * exponentiation.\n *\n * The exponential is calculated using the Pad\u00E9 approximant with scaling and\n * squaring; see \"Nineteen Dubious Ways to Compute the Exponential of a\n * Matrix,\" by Moler and Van Loan.\n *\n * Syntax:\n *\n * math.expm(x)\n *\n * Examples:\n *\n * const A = [[0,2],[0,0]]\n * math.expm(A) // returns [[1,2],[0,1]]\n *\n * See also:\n *\n * exp\n *\n * @param {Matrix} x A square Matrix\n * @return {Matrix} The exponential of x\n */\n return typed(name, {\n Matrix: function Matrix(A) {\n // Check matrix size\n var size = A.size();\n if (size.length !== 2 || size[0] !== size[1]) {\n throw new RangeError('Matrix must be square ' + '(size: ' + format(size) + ')');\n }\n var n = size[0];\n\n // Desired accuracy of the approximant (The actual accuracy\n // will be affected by round-off error)\n var eps = 1e-15;\n\n // The Pad\u00E9 approximant is not so accurate when the values of A\n // are \"large\", so scale A by powers of two. Then compute the\n // exponential, and square the result repeatedly according to\n // the identity e^A = (e^(A/m))^m\n\n // Compute infinity-norm of A, ||A||, to see how \"big\" it is\n var infNorm = infinityNorm(A);\n\n // Find the optimal scaling factor and number of terms in the\n // Pad\u00E9 approximant to reach the desired accuracy\n var params = findParams(infNorm, eps);\n var q = params.q;\n var j = params.j;\n\n // The Pade approximation to e^A is:\n // Rqq(A) = Dqq(A) ^ -1 * Nqq(A)\n // where\n // Nqq(A) = sum(i=0, q, (2q-i)!p! / [ (2q)!i!(q-i)! ] A^i\n // Dqq(A) = sum(i=0, q, (2q-i)!q! / [ (2q)!i!(q-i)! ] (-A)^i\n\n // Scale A by 1 / 2^j\n var Apos = multiply(A, Math.pow(2, -j));\n\n // The i=0 term is just the identity matrix\n var N = identity(n);\n var D = identity(n);\n\n // Initialization (i=0)\n var factor = 1;\n\n // Initialization (i=1)\n var AposToI = Apos; // Cloning not necessary\n var alternate = -1;\n for (var i = 1; i <= q; i++) {\n if (i > 1) {\n AposToI = multiply(AposToI, Apos);\n alternate = -alternate;\n }\n factor = factor * (q - i + 1) / ((2 * q - i + 1) * i);\n N = add(N, multiply(factor, AposToI));\n D = add(D, multiply(factor * alternate, AposToI));\n }\n var R = multiply(inv(D), N);\n\n // Square j times\n for (var _i = 0; _i < j; _i++) {\n R = multiply(R, R);\n }\n return isSparseMatrix(A) ? A.createSparseMatrix(R) : R;\n }\n });\n function infinityNorm(A) {\n var n = A.size()[0];\n var infNorm = 0;\n for (var i = 0; i < n; i++) {\n var rowSum = 0;\n for (var j = 0; j < n; j++) {\n rowSum += abs(A.get([i, j]));\n }\n infNorm = Math.max(rowSum, infNorm);\n }\n return infNorm;\n }\n\n /**\n * Find the best parameters for the Pade approximant given\n * the matrix norm and desired accuracy. Returns the first acceptable\n * combination in order of increasing computational load.\n */\n function findParams(infNorm, eps) {\n var maxSearchSize = 30;\n for (var k = 0; k < maxSearchSize; k++) {\n for (var q = 0; q <= k; q++) {\n var j = k - q;\n if (errorEstimate(infNorm, q, j) < eps) {\n return {\n q,\n j\n };\n }\n }\n }\n throw new Error('Could not find acceptable parameters to compute the matrix exponential (try increasing maxSearchSize in expm.js)');\n }\n\n /**\n * Returns the estimated error of the Pade approximant for the given\n * parameters.\n */\n function errorEstimate(infNorm, q, j) {\n var qfac = 1;\n for (var i = 2; i <= q; i++) {\n qfac *= i;\n }\n var twoqfac = qfac;\n for (var _i2 = q + 1; _i2 <= 2 * q; _i2++) {\n twoqfac *= _i2;\n }\n var twoqp1fac = twoqfac * (2 * q + 1);\n return 8.0 * Math.pow(infNorm / Math.pow(2, j), 2 * q) * qfac * qfac / (twoqfac * twoqp1fac);\n }\n});", "import { isMatrix } from '../../utils/is.js';\nimport { format } from '../../utils/string.js';\nimport { arraySize } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'sqrtm';\nvar dependencies = ['typed', 'abs', 'add', 'multiply', 'map', 'sqrt', 'subtract', 'inv', 'size', 'max', 'identity'];\nexport var createSqrtm = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n abs,\n add,\n multiply,\n map,\n sqrt,\n subtract,\n inv,\n size,\n max,\n identity\n } = _ref;\n var _maxIterations = 1e3;\n var _tolerance = 1e-6;\n\n /**\n * Calculate the principal square root matrix using the Denman\u2013Beavers iterative method\n *\n * https://en.wikipedia.org/wiki/Square_root_of_a_matrix#By_Denman\u2013Beavers_iteration\n *\n * @param {Array | Matrix} A The square matrix `A`\n * @return {Array | Matrix} The principal square root of matrix `A`\n * @private\n */\n function _denmanBeavers(A) {\n var error;\n var iterations = 0;\n var Y = A;\n var Z = identity(size(A));\n do {\n var Yk = Y;\n Y = multiply(0.5, add(Yk, inv(Z)));\n Z = multiply(0.5, add(Z, inv(Yk)));\n error = max(abs(subtract(Y, Yk)));\n if (error > _tolerance && ++iterations > _maxIterations) {\n throw new Error('computing square root of matrix: iterative method could not converge');\n }\n } while (error > _tolerance);\n return Y;\n }\n\n /**\n * Calculate the principal square root of a square matrix.\n * The principal square root matrix `X` of another matrix `A` is such that `X * X = A`.\n *\n * https://en.wikipedia.org/wiki/Square_root_of_a_matrix\n *\n * Syntax:\n *\n * math.sqrtm(A)\n *\n * Examples:\n *\n * math.sqrtm([[33, 24], [48, 57]]) // returns [[5, 2], [4, 7]]\n *\n * See also:\n *\n * sqrt, pow\n *\n * @param {Array | Matrix} A The square matrix `A`\n * @return {Array | Matrix} The principal square root of matrix `A`\n */\n return typed(name, {\n 'Array | Matrix': function Array__Matrix(A) {\n var size = isMatrix(A) ? A.size() : arraySize(A);\n switch (size.length) {\n case 1:\n // Single element Array | Matrix\n if (size[0] === 1) {\n return map(A, sqrt);\n } else {\n throw new RangeError('Matrix must be square ' + '(size: ' + format(size) + ')');\n }\n case 2:\n {\n // Two-dimensional Array | Matrix\n var rows = size[0];\n var cols = size[1];\n if (rows === cols) {\n return _denmanBeavers(A);\n } else {\n throw new RangeError('Matrix must be square ' + '(size: ' + format(size) + ')');\n }\n }\n default:\n // Multi dimensional array\n throw new RangeError('Matrix must be at most two dimensional ' + '(size: ' + format(size) + ')');\n }\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'sylvester';\nvar dependencies = ['typed', 'schur', 'matrixFromColumns', 'matrix', 'multiply', 'range', 'concat', 'transpose', 'index', 'subset', 'add', 'subtract', 'identity', 'lusolve', 'abs'];\nexport var createSylvester = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n schur,\n matrixFromColumns,\n matrix,\n multiply,\n range,\n concat,\n transpose,\n index,\n subset,\n add,\n subtract,\n identity,\n lusolve,\n abs\n } = _ref;\n /**\n *\n * Solves the real-valued Sylvester equation AX+XB=C for X, where A, B and C are\n * matrices of appropriate dimensions, being A and B squared. Notice that other\n * equivalent definitions for the Sylvester equation exist and this function\n * assumes the one presented in the original publication of the the Bartels-\n * Stewart algorithm, which is implemented by this function.\n * https://en.wikipedia.org/wiki/Sylvester_equation\n *\n * Syntax:\n *\n * math.sylvester(A, B, C)\n *\n * Examples:\n *\n * const A = [[-1, -2], [1, 1]]\n * const B = [[2, -1], [1, -2]]\n * const C = [[-3, 2], [3, 0]]\n * math.sylvester(A, B, C) // returns DenseMatrix [[-0.25, 0.25], [1.5, -1.25]]\n *\n * See also:\n *\n * schur, lyap\n *\n * @param {Matrix | Array} A Matrix A\n * @param {Matrix | Array} B Matrix B\n * @param {Matrix | Array} C Matrix C\n * @return {Matrix | Array} Matrix X, solving the Sylvester equation\n */\n return typed(name, {\n 'Matrix, Matrix, Matrix': _sylvester,\n 'Array, Matrix, Matrix': function Array_Matrix_Matrix(A, B, C) {\n return _sylvester(matrix(A), B, C);\n },\n 'Array, Array, Matrix': function Array_Array_Matrix(A, B, C) {\n return _sylvester(matrix(A), matrix(B), C);\n },\n 'Array, Matrix, Array': function Array_Matrix_Array(A, B, C) {\n return _sylvester(matrix(A), B, matrix(C));\n },\n 'Matrix, Array, Matrix': function Matrix_Array_Matrix(A, B, C) {\n return _sylvester(A, matrix(B), C);\n },\n 'Matrix, Array, Array': function Matrix_Array_Array(A, B, C) {\n return _sylvester(A, matrix(B), matrix(C));\n },\n 'Matrix, Matrix, Array': function Matrix_Matrix_Array(A, B, C) {\n return _sylvester(A, B, matrix(C));\n },\n 'Array, Array, Array': function Array_Array_Array(A, B, C) {\n return _sylvester(matrix(A), matrix(B), matrix(C)).toArray();\n }\n });\n function _sylvester(A, B, C) {\n var n = B.size()[0];\n var m = A.size()[0];\n var sA = schur(A);\n var F = sA.T;\n var U = sA.U;\n var sB = schur(multiply(-1, B));\n var G = sB.T;\n var V = sB.U;\n var D = multiply(multiply(transpose(U), C), V);\n var all = range(0, m);\n var y = [];\n var hc = (a, b) => concat(a, b, 1);\n var vc = (a, b) => concat(a, b, 0);\n for (var k = 0; k < n; k++) {\n if (k < n - 1 && abs(subset(G, index(k + 1, k))) > 1e-5) {\n var RHS = vc(subset(D, index(all, k)), subset(D, index(all, k + 1)));\n for (var j = 0; j < k; j++) {\n RHS = add(RHS, vc(multiply(y[j], subset(G, index(j, k))), multiply(y[j], subset(G, index(j, k + 1)))));\n }\n var gkk = multiply(identity(m), multiply(-1, subset(G, index(k, k))));\n var gmk = multiply(identity(m), multiply(-1, subset(G, index(k + 1, k))));\n var gkm = multiply(identity(m), multiply(-1, subset(G, index(k, k + 1))));\n var gmm = multiply(identity(m), multiply(-1, subset(G, index(k + 1, k + 1))));\n var LHS = vc(hc(add(F, gkk), gmk), hc(gkm, add(F, gmm)));\n var yAux = lusolve(LHS, RHS);\n y[k] = yAux.subset(index(range(0, m), 0));\n y[k + 1] = yAux.subset(index(range(m, 2 * m), 0));\n k++;\n } else {\n var _RHS = subset(D, index(all, k));\n for (var _j = 0; _j < k; _j++) {\n _RHS = add(_RHS, multiply(y[_j], subset(G, index(_j, k))));\n }\n var _gkk = subset(G, index(k, k));\n var _LHS = subtract(F, multiply(_gkk, identity(m)));\n y[k] = lusolve(_LHS, _RHS);\n }\n }\n var Y = matrix(matrixFromColumns(...y));\n var X = multiply(U, multiply(Y, transpose(V)));\n return X;\n }\n});", "import { factory } from '../../../utils/factory.js';\nvar name = 'schur';\nvar dependencies = ['typed', 'matrix', 'identity', 'multiply', 'qr', 'norm', 'subtract'];\nexport var createSchur = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n identity,\n multiply,\n qr,\n norm,\n subtract\n } = _ref;\n /**\n *\n * Performs a real Schur decomposition of the real matrix A = UTU' where U is orthogonal\n * and T is upper quasi-triangular.\n * https://en.wikipedia.org/wiki/Schur_decomposition\n *\n * Syntax:\n *\n * math.schur(A)\n *\n * Examples:\n *\n * const A = [[1, 0], [-4, 3]]\n * math.schur(A) // returns {T: [[3, 4], [0, 1]], R: [[0, 1], [-1, 0]]}\n *\n * See also:\n *\n * sylvester, lyap, qr\n *\n * @param {Array | Matrix} A Matrix A\n * @return {{U: Array | Matrix, T: Array | Matrix}} Object containing both matrix U and T of the Schur Decomposition A=UTU'\n */\n return typed(name, {\n Array: function Array(X) {\n var r = _schur(matrix(X));\n return {\n U: r.U.valueOf(),\n T: r.T.valueOf()\n };\n },\n Matrix: function Matrix(X) {\n return _schur(X);\n }\n });\n function _schur(X) {\n var n = X.size()[0];\n var A = X;\n var U = identity(n);\n var k = 0;\n var A0;\n do {\n A0 = A;\n var QR = qr(A);\n var Q = QR.Q;\n var R = QR.R;\n A = multiply(R, Q);\n U = multiply(U, Q);\n if (k++ > 100) {\n break;\n }\n } while (norm(subtract(A, A0)) > 1e-4);\n return {\n U,\n T: A\n };\n }\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'lyap';\nvar dependencies = ['typed', 'matrix', 'sylvester', 'multiply', 'transpose'];\nexport var createLyap = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n sylvester,\n multiply,\n transpose\n } = _ref;\n /**\n *\n * Solves the Continuous-time Lyapunov equation AP+PA'+Q=0 for P, where\n * Q is an input matrix. When Q is symmetric, P is also symmetric. Notice\n * that different equivalent definitions exist for the Continuous-time\n * Lyapunov equation.\n * https://en.wikipedia.org/wiki/Lyapunov_equation\n *\n * Syntax:\n *\n * math.lyap(A, Q)\n *\n * Examples:\n *\n * const A = [[-2, 0], [1, -4]]\n * const Q = [[3, 1], [1, 3]]\n * const P = math.lyap(A, Q)\n *\n * See also:\n *\n * sylvester, schur\n *\n * @param {Matrix | Array} A Matrix A\n * @param {Matrix | Array} Q Matrix Q\n * @return {Matrix | Array} Matrix P solution to the Continuous-time Lyapunov equation AP+PA'=Q\n */\n return typed(name, {\n 'Matrix, Matrix': function Matrix_Matrix(A, Q) {\n return sylvester(A, transpose(A), multiply(-1, Q));\n },\n 'Array, Matrix': function Array_Matrix(A, Q) {\n return sylvester(matrix(A), transpose(matrix(A)), multiply(-1, Q));\n },\n 'Matrix, Array': function Matrix_Array(A, Q) {\n return sylvester(A, transpose(matrix(A)), matrix(multiply(-1, Q)));\n },\n 'Array, Array': function Array_Array(A, Q) {\n return sylvester(matrix(A), transpose(matrix(A)), matrix(multiply(-1, Q))).toArray();\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { extend } from '../../utils/object.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';\nvar name = 'divide';\nvar dependencies = ['typed', 'matrix', 'multiply', 'equalScalar', 'divideScalar', 'inv'];\nexport var createDivide = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n multiply,\n equalScalar,\n divideScalar,\n inv\n } = _ref;\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matAlgo14xDs = createMatAlgo14xDs({\n typed\n });\n\n /**\n * Divide two values, `x / y`.\n * To divide matrices, `x` is multiplied with the inverse of `y`: `x * inv(y)`.\n *\n * Syntax:\n *\n * math.divide(x, y)\n *\n * Examples:\n *\n * math.divide(2, 3) // returns number 0.6666666666666666\n *\n * const a = math.complex(5, 14)\n * const b = math.complex(4, 1)\n * math.divide(a, b) // returns Complex 2 + 3i\n *\n * const c = [[7, -6], [13, -4]]\n * const d = [[1, 2], [4, 3]]\n * math.divide(c, d) // returns Array [[-9, 4], [-11, 6]]\n *\n * const e = math.unit('18 km')\n * math.divide(e, 4.5) // returns Unit 4 km\n *\n * See also:\n *\n * multiply\n *\n * @param {number | BigNumber | bigint | Fraction | Complex | Unit | Array | Matrix} x Numerator\n * @param {number | BigNumber | bigint | Fraction | Complex | Array | Matrix} y Denominator\n * @return {number | BigNumber | bigint | Fraction | Complex | Unit | Array | Matrix} Quotient, `x / y`\n */\n return typed('divide', extend({\n // we extend the signatures of divideScalar with signatures dealing with matrices\n\n 'Array | Matrix, Array | Matrix': function Array__Matrix_Array__Matrix(x, y) {\n // TODO: implement matrix right division using pseudo inverse\n // https://www.mathworks.nl/help/matlab/ref/mrdivide.html\n // https://www.gnu.org/software/octave/doc/interpreter/Arithmetic-Ops.html\n // https://stackoverflow.com/questions/12263932/how-does-gnu-octave-matrix-division-work-getting-unexpected-behaviour\n return multiply(x, inv(y));\n },\n 'DenseMatrix, any': function DenseMatrix_any(x, y) {\n return matAlgo14xDs(x, y, divideScalar, false);\n },\n 'SparseMatrix, any': function SparseMatrix_any(x, y) {\n return matAlgo11xS0s(x, y, divideScalar, false);\n },\n 'Array, any': function Array_any(x, y) {\n // use matrix implementation\n return matAlgo14xDs(matrix(x), y, divideScalar, false).valueOf();\n },\n 'any, Array | Matrix': function any_Array__Matrix(x, y) {\n return multiply(x, inv(y));\n }\n }, divideScalar.signatures));\n});", "import { isBigNumber } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'distance';\nvar dependencies = ['typed', 'addScalar', 'subtractScalar', 'divideScalar', 'multiplyScalar', 'deepEqual', 'sqrt', 'abs'];\nexport var createDistance = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n addScalar,\n subtractScalar,\n multiplyScalar,\n divideScalar,\n deepEqual,\n sqrt,\n abs\n } = _ref;\n /**\n * Calculates:\n * The eucledian distance between two points in N-dimensional spaces.\n * Distance between point and a line in 2 and 3 dimensional spaces.\n * Pairwise distance between a set of 2D or 3D points\n * NOTE:\n * When substituting coefficients of a line(a, b and c), use ax + by + c = 0 instead of ax + by = c\n * For parametric equation of a 3D line, x0, y0, z0, a, b, c are from: (x\u2212x0, y\u2212y0, z\u2212z0) = t(a, b, c)\n *\n * Syntax:\n *\n * math.distance([x1,y1], [x2,y2])\n * math.distance({pointOneX, pointOneY}, {pointTwoX, pointTwoY})\n * math.distance([x1,y1,z1], [x2,y2,z2])\n * math.distance({pointOneX, pointOneY, pointOneZ}, {pointTwoX, pointTwoY, pointTwoZ})\n * math.distance([x1,y1,z1,a1], [x2,y2,z2,a2])\n * math.distance([[x1,y1], [x2,y2], [x3,y3]])\n * math.distance([[x1,y1,z1], [x2,y2,z2], [x3,y3,z3]])\n * math.distance([pointX,pointY], [a,b,c])\n * math.distance([pointX,pointY], [lineOnePtX,lineOnePtY], [lineTwoPtX,lineTwoPtY])\n * math.distance({pointX, pointY}, {lineOnePtX, lineOnePtY}, {lineTwoPtX, lineTwoPtY})\n * math.distance([pointX,pointY,pointZ], [x0, y0, z0, a, b, c])\n * math.distance({pointX, pointY, pointZ}, {x0, y0, z0, a, b, c})\n *\n * Examples:\n * math.distance([0,0], [4,4]) // Returns 5.656854249492381\n * math.distance(\n * {pointOneX: 0, pointOneY: 0},\n * {pointTwoX: 10, pointTwoY: 10}) // Returns 14.142135623730951\n * math.distance([1, 0, 1], [4, -2, 2]) // Returns 3.7416573867739413\n * math.distance(\n * {pointOneX: 4, pointOneY: 5, pointOneZ: 8},\n * {pointTwoX: 2, pointTwoY: 7, pointTwoZ: 9}) // Returns 3\n * math.distance([1, 0, 1, 0], [0, -1, 0, -1]) // Returns 2\n * math.distance([[1, 2], [1, 2], [1, 3]]) // Returns [0, 1, 1]\n * math.distance([[1,2,4], [1,2,6], [8,1,3]]) // Returns [2, 7.14142842854285, 7.681145747868608]\n * math.distance([10, 10], [8, 1, 3]) // Returns 11.535230316796387\n * math.distance([0, 0], [3, 0], [0, 4]) // Returns 2.4\n * math.distance(\n * {pointX: 0, pointY: 0},\n * {lineOnePtX: 3, lineOnePtY: 0},\n * {lineTwoPtX: 0, lineTwoPtY: 4}) // Returns 2.4\n * math.distance([2, 3, 1], [1, 1, 2, 5, 0, 1]) // Returns 2.3204774044612857\n * math.distance(\n * {pointX: 2, pointY: 3, pointZ: 1},\n * {x0: 1, y0: 1, z0: 2, a: 5, b: 0, c: 1}) // Returns 2.3204774044612857\n *\n * @param {Array | Matrix | Object} x Co-ordinates of first point\n * @param {Array | Matrix | Object} y Co-ordinates of second point\n * @return {Number | BigNumber} Returns the distance from two/three points\n */\n return typed(name, {\n 'Array, Array, Array': function Array_Array_Array(x, y, z) {\n // Point to Line 2D (x=Point, y=LinePoint1, z=LinePoint2)\n if (x.length === 2 && y.length === 2 && z.length === 2) {\n if (!_2d(x)) {\n throw new TypeError('Array with 2 numbers or BigNumbers expected for first argument');\n }\n if (!_2d(y)) {\n throw new TypeError('Array with 2 numbers or BigNumbers expected for second argument');\n }\n if (!_2d(z)) {\n throw new TypeError('Array with 2 numbers or BigNumbers expected for third argument');\n }\n if (deepEqual(y, z)) {\n throw new TypeError('LinePoint1 should not be same with LinePoint2');\n }\n var xCoeff = subtractScalar(z[1], y[1]);\n var yCoeff = subtractScalar(y[0], z[0]);\n var constant = subtractScalar(multiplyScalar(z[0], y[1]), multiplyScalar(y[0], z[1]));\n return _distancePointLine2D(x[0], x[1], xCoeff, yCoeff, constant);\n } else {\n throw new TypeError('Invalid Arguments: Try again');\n }\n },\n 'Object, Object, Object': function Object_Object_Object(x, y, z) {\n if (Object.keys(x).length === 2 && Object.keys(y).length === 2 && Object.keys(z).length === 2) {\n if (!_2d(x)) {\n throw new TypeError('Values of pointX and pointY should be numbers or BigNumbers');\n }\n if (!_2d(y)) {\n throw new TypeError('Values of lineOnePtX and lineOnePtY should be numbers or BigNumbers');\n }\n if (!_2d(z)) {\n throw new TypeError('Values of lineTwoPtX and lineTwoPtY should be numbers or BigNumbers');\n }\n if (deepEqual(_objectToArray(y), _objectToArray(z))) {\n throw new TypeError('LinePoint1 should not be same with LinePoint2');\n }\n if ('pointX' in x && 'pointY' in x && 'lineOnePtX' in y && 'lineOnePtY' in y && 'lineTwoPtX' in z && 'lineTwoPtY' in z) {\n var xCoeff = subtractScalar(z.lineTwoPtY, y.lineOnePtY);\n var yCoeff = subtractScalar(y.lineOnePtX, z.lineTwoPtX);\n var constant = subtractScalar(multiplyScalar(z.lineTwoPtX, y.lineOnePtY), multiplyScalar(y.lineOnePtX, z.lineTwoPtY));\n return _distancePointLine2D(x.pointX, x.pointY, xCoeff, yCoeff, constant);\n } else {\n throw new TypeError('Key names do not match');\n }\n } else {\n throw new TypeError('Invalid Arguments: Try again');\n }\n },\n 'Array, Array': function Array_Array(x, y) {\n // Point to Line 2D (x=[pointX, pointY], y=[x-coeff, y-coeff, const])\n if (x.length === 2 && y.length === 3) {\n if (!_2d(x)) {\n throw new TypeError('Array with 2 numbers or BigNumbers expected for first argument');\n }\n if (!_3d(y)) {\n throw new TypeError('Array with 3 numbers or BigNumbers expected for second argument');\n }\n return _distancePointLine2D(x[0], x[1], y[0], y[1], y[2]);\n } else if (x.length === 3 && y.length === 6) {\n // Point to Line 3D\n if (!_3d(x)) {\n throw new TypeError('Array with 3 numbers or BigNumbers expected for first argument');\n }\n if (!_parametricLine(y)) {\n throw new TypeError('Array with 6 numbers or BigNumbers expected for second argument');\n }\n return _distancePointLine3D(x[0], x[1], x[2], y[0], y[1], y[2], y[3], y[4], y[5]);\n } else if (x.length === y.length && x.length > 0) {\n // Point to Point N-dimensions\n if (!_containsOnlyNumbers(x)) {\n throw new TypeError('All values of an array should be numbers or BigNumbers');\n }\n if (!_containsOnlyNumbers(y)) {\n throw new TypeError('All values of an array should be numbers or BigNumbers');\n }\n return _euclideanDistance(x, y);\n } else {\n throw new TypeError('Invalid Arguments: Try again');\n }\n },\n 'Object, Object': function Object_Object(x, y) {\n if (Object.keys(x).length === 2 && Object.keys(y).length === 3) {\n if (!_2d(x)) {\n throw new TypeError('Values of pointX and pointY should be numbers or BigNumbers');\n }\n if (!_3d(y)) {\n throw new TypeError('Values of xCoeffLine, yCoeffLine and constant should be numbers or BigNumbers');\n }\n if ('pointX' in x && 'pointY' in x && 'xCoeffLine' in y && 'yCoeffLine' in y && 'constant' in y) {\n return _distancePointLine2D(x.pointX, x.pointY, y.xCoeffLine, y.yCoeffLine, y.constant);\n } else {\n throw new TypeError('Key names do not match');\n }\n } else if (Object.keys(x).length === 3 && Object.keys(y).length === 6) {\n // Point to Line 3D\n if (!_3d(x)) {\n throw new TypeError('Values of pointX, pointY and pointZ should be numbers or BigNumbers');\n }\n if (!_parametricLine(y)) {\n throw new TypeError('Values of x0, y0, z0, a, b and c should be numbers or BigNumbers');\n }\n if ('pointX' in x && 'pointY' in x && 'x0' in y && 'y0' in y && 'z0' in y && 'a' in y && 'b' in y && 'c' in y) {\n return _distancePointLine3D(x.pointX, x.pointY, x.pointZ, y.x0, y.y0, y.z0, y.a, y.b, y.c);\n } else {\n throw new TypeError('Key names do not match');\n }\n } else if (Object.keys(x).length === 2 && Object.keys(y).length === 2) {\n // Point to Point 2D\n if (!_2d(x)) {\n throw new TypeError('Values of pointOneX and pointOneY should be numbers or BigNumbers');\n }\n if (!_2d(y)) {\n throw new TypeError('Values of pointTwoX and pointTwoY should be numbers or BigNumbers');\n }\n if ('pointOneX' in x && 'pointOneY' in x && 'pointTwoX' in y && 'pointTwoY' in y) {\n return _euclideanDistance([x.pointOneX, x.pointOneY], [y.pointTwoX, y.pointTwoY]);\n } else {\n throw new TypeError('Key names do not match');\n }\n } else if (Object.keys(x).length === 3 && Object.keys(y).length === 3) {\n // Point to Point 3D\n if (!_3d(x)) {\n throw new TypeError('Values of pointOneX, pointOneY and pointOneZ should be numbers or BigNumbers');\n }\n if (!_3d(y)) {\n throw new TypeError('Values of pointTwoX, pointTwoY and pointTwoZ should be numbers or BigNumbers');\n }\n if ('pointOneX' in x && 'pointOneY' in x && 'pointOneZ' in x && 'pointTwoX' in y && 'pointTwoY' in y && 'pointTwoZ' in y) {\n return _euclideanDistance([x.pointOneX, x.pointOneY, x.pointOneZ], [y.pointTwoX, y.pointTwoY, y.pointTwoZ]);\n } else {\n throw new TypeError('Key names do not match');\n }\n } else {\n throw new TypeError('Invalid Arguments: Try again');\n }\n },\n Array: function Array(arr) {\n if (!_pairwise(arr)) {\n throw new TypeError('Incorrect array format entered for pairwise distance calculation');\n }\n return _distancePairwise(arr);\n }\n });\n function _isNumber(a) {\n // distance supports numbers and bignumbers\n return typeof a === 'number' || isBigNumber(a);\n }\n function _2d(a) {\n // checks if the number of arguments are correct in count and are valid (should be numbers)\n if (a.constructor !== Array) {\n a = _objectToArray(a);\n }\n return _isNumber(a[0]) && _isNumber(a[1]);\n }\n function _3d(a) {\n // checks if the number of arguments are correct in count and are valid (should be numbers)\n if (a.constructor !== Array) {\n a = _objectToArray(a);\n }\n return _isNumber(a[0]) && _isNumber(a[1]) && _isNumber(a[2]);\n }\n function _containsOnlyNumbers(a) {\n // checks if the number of arguments are correct in count and are valid (should be numbers)\n if (!Array.isArray(a)) {\n a = _objectToArray(a);\n }\n return a.every(_isNumber);\n }\n function _parametricLine(a) {\n if (a.constructor !== Array) {\n a = _objectToArray(a);\n }\n return _isNumber(a[0]) && _isNumber(a[1]) && _isNumber(a[2]) && _isNumber(a[3]) && _isNumber(a[4]) && _isNumber(a[5]);\n }\n function _objectToArray(o) {\n var keys = Object.keys(o);\n var a = [];\n for (var i = 0; i < keys.length; i++) {\n a.push(o[keys[i]]);\n }\n return a;\n }\n function _pairwise(a) {\n // checks for valid arguments passed to _distancePairwise(Array)\n if (a[0].length === 2 && _isNumber(a[0][0]) && _isNumber(a[0][1])) {\n if (a.some(aI => aI.length !== 2 || !_isNumber(aI[0]) || !_isNumber(aI[1]))) {\n return false;\n }\n } else if (a[0].length === 3 && _isNumber(a[0][0]) && _isNumber(a[0][1]) && _isNumber(a[0][2])) {\n if (a.some(aI => aI.length !== 3 || !_isNumber(aI[0]) || !_isNumber(aI[1]) || !_isNumber(aI[2]))) {\n return false;\n }\n } else {\n return false;\n }\n return true;\n }\n function _distancePointLine2D(x, y, a, b, c) {\n var num = abs(addScalar(addScalar(multiplyScalar(a, x), multiplyScalar(b, y)), c));\n var den = sqrt(addScalar(multiplyScalar(a, a), multiplyScalar(b, b)));\n return divideScalar(num, den);\n }\n function _distancePointLine3D(x, y, z, x0, y0, z0, a, b, c) {\n var num = [subtractScalar(multiplyScalar(subtractScalar(y0, y), c), multiplyScalar(subtractScalar(z0, z), b)), subtractScalar(multiplyScalar(subtractScalar(z0, z), a), multiplyScalar(subtractScalar(x0, x), c)), subtractScalar(multiplyScalar(subtractScalar(x0, x), b), multiplyScalar(subtractScalar(y0, y), a))];\n num = sqrt(addScalar(addScalar(multiplyScalar(num[0], num[0]), multiplyScalar(num[1], num[1])), multiplyScalar(num[2], num[2])));\n var den = sqrt(addScalar(addScalar(multiplyScalar(a, a), multiplyScalar(b, b)), multiplyScalar(c, c)));\n return divideScalar(num, den);\n }\n function _euclideanDistance(x, y) {\n var vectorSize = x.length;\n var result = 0;\n var diff = 0;\n for (var i = 0; i < vectorSize; i++) {\n diff = subtractScalar(x[i], y[i]);\n result = addScalar(multiplyScalar(diff, diff), result);\n }\n return sqrt(result);\n }\n function _distancePairwise(a) {\n var result = [];\n var pointA = [];\n var pointB = [];\n for (var i = 0; i < a.length - 1; i++) {\n for (var j = i + 1; j < a.length; j++) {\n if (a[0].length === 2) {\n pointA = [a[i][0], a[i][1]];\n pointB = [a[j][0], a[j][1]];\n } else if (a[0].length === 3) {\n pointA = [a[i][0], a[i][1], a[i][2]];\n pointB = [a[j][0], a[j][1], a[j][2]];\n }\n result.push(_euclideanDistance(pointA, pointB));\n }\n }\n return result;\n }\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'intersect';\nvar dependencies = ['typed', 'config', 'abs', 'add', 'addScalar', 'matrix', 'multiply', 'multiplyScalar', 'divideScalar', 'subtract', 'smaller', 'equalScalar', 'flatten', 'isZero', 'isNumeric'];\nexport var createIntersect = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n abs,\n add,\n addScalar,\n matrix,\n multiply,\n multiplyScalar,\n divideScalar,\n subtract,\n smaller,\n equalScalar,\n flatten,\n isZero,\n isNumeric\n } = _ref;\n /**\n * Calculates the point of intersection of two lines in two or three dimensions\n * and of a line and a plane in three dimensions. The inputs are in the form of\n * arrays or 1 dimensional matrices. The line intersection functions return null\n * if the lines do not meet.\n *\n * Note: Fill the plane coefficients as `x + y + z = c` and not as `x + y + z + c = 0`.\n *\n * Syntax:\n *\n * math.intersect(endPoint1Line1, endPoint2Line1, endPoint1Line2, endPoint2Line2)\n * math.intersect(endPoint1, endPoint2, planeCoefficients)\n *\n * Examples:\n *\n * math.intersect([0, 0], [10, 10], [10, 0], [0, 10]) // Returns [5, 5]\n * math.intersect([0, 0, 0], [10, 10, 0], [10, 0, 0], [0, 10, 0]) // Returns [5, 5, 0]\n * math.intersect([1, 0, 1], [4, -2, 2], [1, 1, 1, 6]) // Returns [7, -4, 3]\n *\n * @param {Array | Matrix} w Co-ordinates of first end-point of first line\n * @param {Array | Matrix} x Co-ordinates of second end-point of first line\n * @param {Array | Matrix} y Co-ordinates of first end-point of second line\n * OR Co-efficients of the plane's equation\n * @param {Array | Matrix} z Co-ordinates of second end-point of second line\n * OR undefined if the calculation is for line and plane\n * @return {Array} Returns the point of intersection of lines/lines-planes\n */\n return typed('intersect', {\n 'Array, Array, Array': _AAA,\n 'Array, Array, Array, Array': _AAAA,\n 'Matrix, Matrix, Matrix': function Matrix_Matrix_Matrix(x, y, plane) {\n var arr = _AAA(x.valueOf(), y.valueOf(), plane.valueOf());\n return arr === null ? null : matrix(arr);\n },\n 'Matrix, Matrix, Matrix, Matrix': function Matrix_Matrix_Matrix_Matrix(w, x, y, z) {\n // TODO: output matrix type should match input matrix type\n var arr = _AAAA(w.valueOf(), x.valueOf(), y.valueOf(), z.valueOf());\n return arr === null ? null : matrix(arr);\n }\n });\n function _AAA(x, y, plane) {\n x = _coerceArr(x);\n y = _coerceArr(y);\n plane = _coerceArr(plane);\n if (!_3d(x)) {\n throw new TypeError('Array with 3 numbers or BigNumbers expected for first argument');\n }\n if (!_3d(y)) {\n throw new TypeError('Array with 3 numbers or BigNumbers expected for second argument');\n }\n if (!_4d(plane)) {\n throw new TypeError('Array with 4 numbers expected as third argument');\n }\n return _intersectLinePlane(x[0], x[1], x[2], y[0], y[1], y[2], plane[0], plane[1], plane[2], plane[3]);\n }\n function _AAAA(w, x, y, z) {\n w = _coerceArr(w);\n x = _coerceArr(x);\n y = _coerceArr(y);\n z = _coerceArr(z);\n if (w.length === 2) {\n if (!_2d(w)) {\n throw new TypeError('Array with 2 numbers or BigNumbers expected for first argument');\n }\n if (!_2d(x)) {\n throw new TypeError('Array with 2 numbers or BigNumbers expected for second argument');\n }\n if (!_2d(y)) {\n throw new TypeError('Array with 2 numbers or BigNumbers expected for third argument');\n }\n if (!_2d(z)) {\n throw new TypeError('Array with 2 numbers or BigNumbers expected for fourth argument');\n }\n return _intersect2d(w, x, y, z);\n } else if (w.length === 3) {\n if (!_3d(w)) {\n throw new TypeError('Array with 3 numbers or BigNumbers expected for first argument');\n }\n if (!_3d(x)) {\n throw new TypeError('Array with 3 numbers or BigNumbers expected for second argument');\n }\n if (!_3d(y)) {\n throw new TypeError('Array with 3 numbers or BigNumbers expected for third argument');\n }\n if (!_3d(z)) {\n throw new TypeError('Array with 3 numbers or BigNumbers expected for fourth argument');\n }\n return _intersect3d(w[0], w[1], w[2], x[0], x[1], x[2], y[0], y[1], y[2], z[0], z[1], z[2]);\n } else {\n throw new TypeError('Arrays with two or thee dimensional points expected');\n }\n }\n\n /** Coerce row and column 2-dim arrays to 1-dim array */\n function _coerceArr(arr) {\n // row matrix\n if (arr.length === 1) return arr[0];\n\n // column matrix\n if (arr.length > 1 && Array.isArray(arr[0])) {\n if (arr.every(el => Array.isArray(el) && el.length === 1)) return flatten(arr);\n }\n return arr;\n }\n function _2d(x) {\n return x.length === 2 && isNumeric(x[0]) && isNumeric(x[1]);\n }\n function _3d(x) {\n return x.length === 3 && isNumeric(x[0]) && isNumeric(x[1]) && isNumeric(x[2]);\n }\n function _4d(x) {\n return x.length === 4 && isNumeric(x[0]) && isNumeric(x[1]) && isNumeric(x[2]) && isNumeric(x[3]);\n }\n function _intersect2d(p1a, p1b, p2a, p2b) {\n var o1 = p1a;\n var o2 = p2a;\n var d1 = subtract(o1, p1b);\n var d2 = subtract(o2, p2b);\n var det = subtract(multiplyScalar(d1[0], d2[1]), multiplyScalar(d2[0], d1[1]));\n if (isZero(det)) return null;\n if (smaller(abs(det), config.relTol)) {\n return null;\n }\n var d20o11 = multiplyScalar(d2[0], o1[1]);\n var d21o10 = multiplyScalar(d2[1], o1[0]);\n var d20o21 = multiplyScalar(d2[0], o2[1]);\n var d21o20 = multiplyScalar(d2[1], o2[0]);\n var t = divideScalar(addScalar(subtract(subtract(d20o11, d21o10), d20o21), d21o20), det);\n return add(multiply(d1, t), o1);\n }\n function _intersect3dHelper(a, b, c, d, e, f, g, h, i, j, k, l) {\n // (a - b)*(c - d) + (e - f)*(g - h) + (i - j)*(k - l)\n var add1 = multiplyScalar(subtract(a, b), subtract(c, d));\n var add2 = multiplyScalar(subtract(e, f), subtract(g, h));\n var add3 = multiplyScalar(subtract(i, j), subtract(k, l));\n return addScalar(addScalar(add1, add2), add3);\n }\n function _intersect3d(x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4) {\n var d1343 = _intersect3dHelper(x1, x3, x4, x3, y1, y3, y4, y3, z1, z3, z4, z3);\n var d4321 = _intersect3dHelper(x4, x3, x2, x1, y4, y3, y2, y1, z4, z3, z2, z1);\n var d1321 = _intersect3dHelper(x1, x3, x2, x1, y1, y3, y2, y1, z1, z3, z2, z1);\n var d4343 = _intersect3dHelper(x4, x3, x4, x3, y4, y3, y4, y3, z4, z3, z4, z3);\n var d2121 = _intersect3dHelper(x2, x1, x2, x1, y2, y1, y2, y1, z2, z1, z2, z1);\n var numerator = subtract(multiplyScalar(d1343, d4321), multiplyScalar(d1321, d4343));\n var denominator = subtract(multiplyScalar(d2121, d4343), multiplyScalar(d4321, d4321));\n if (isZero(denominator)) return null;\n var ta = divideScalar(numerator, denominator);\n var tb = divideScalar(addScalar(d1343, multiplyScalar(ta, d4321)), d4343);\n var pax = addScalar(x1, multiplyScalar(ta, subtract(x2, x1)));\n var pay = addScalar(y1, multiplyScalar(ta, subtract(y2, y1)));\n var paz = addScalar(z1, multiplyScalar(ta, subtract(z2, z1)));\n var pbx = addScalar(x3, multiplyScalar(tb, subtract(x4, x3)));\n var pby = addScalar(y3, multiplyScalar(tb, subtract(y4, y3)));\n var pbz = addScalar(z3, multiplyScalar(tb, subtract(z4, z3)));\n if (equalScalar(pax, pbx) && equalScalar(pay, pby) && equalScalar(paz, pbz)) {\n return [pax, pay, paz];\n } else {\n return null;\n }\n }\n function _intersectLinePlane(x1, y1, z1, x2, y2, z2, x, y, z, c) {\n var x1x = multiplyScalar(x1, x);\n var x2x = multiplyScalar(x2, x);\n var y1y = multiplyScalar(y1, y);\n var y2y = multiplyScalar(y2, y);\n var z1z = multiplyScalar(z1, z);\n var z2z = multiplyScalar(z2, z);\n var numerator = subtract(subtract(subtract(c, x1x), y1y), z1z);\n var denominator = subtract(subtract(subtract(addScalar(addScalar(x2x, y2y), z2z), x1x), y1y), z1z);\n var t = divideScalar(numerator, denominator);\n var px = addScalar(x1, multiplyScalar(t, subtract(x2, x1)));\n var py = addScalar(y1, multiplyScalar(t, subtract(y2, y1)));\n var pz = addScalar(z1, multiplyScalar(t, subtract(z2, z1)));\n return [px, py, pz];\n // TODO: Add cases when line is parallel to the plane:\n // (a) no intersection,\n // (b) line contained in plane\n }\n});", "import { containsCollections, deepForEach, reduce } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { safeNumberType } from '../../utils/number.js';\nimport { improveErrorMessage } from './utils/improveErrorMessage.js';\nvar name = 'sum';\nvar dependencies = ['typed', 'config', 'add', 'numeric'];\nexport var createSum = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n add,\n numeric\n } = _ref;\n /**\n * Compute the sum of a matrix or a list with values.\n * In case of a multidimensional array or matrix, the sum of all\n * elements will be calculated.\n *\n * Syntax:\n *\n * math.sum(a, b, c, ...)\n * math.sum(A)\n * math.sum(A, dimension)\n *\n * Examples:\n *\n * math.sum(2, 1, 4, 3) // returns 10\n * math.sum([2, 1, 4, 3]) // returns 10\n * math.sum([[2, 5], [4, 3], [1, 7]]) // returns 22\n *\n * See also:\n *\n * mean, median, min, max, prod, std, variance, cumsum\n *\n * @param {... *} args A single matrix or multiple scalar values\n * @return {*} The sum of all values\n */\n return typed(name, {\n // sum([a, b, c, d, ...])\n 'Array | Matrix': _sum,\n // sum([a, b, c, d, ...], dim)\n 'Array | Matrix, number | BigNumber': _nsumDim,\n // sum(a, b, c, d, ...)\n '...': function _(args) {\n if (containsCollections(args)) {\n throw new TypeError('Scalar values expected in function sum');\n }\n return _sum(args);\n }\n });\n\n /**\n * Recursively calculate the sum of an n-dimensional array\n * @param {Array | Matrix} array\n * @return {number} sum\n * @private\n */\n function _sum(array) {\n var sum;\n deepForEach(array, function (value) {\n try {\n sum = sum === undefined ? value : add(sum, value);\n } catch (err) {\n throw improveErrorMessage(err, 'sum', value);\n }\n });\n\n // make sure returning numeric value: parse a string into a numeric value\n if (sum === undefined) {\n sum = numeric(0, config.number);\n }\n if (typeof sum === 'string') {\n sum = numeric(sum, safeNumberType(sum, config));\n }\n return sum;\n }\n function _nsumDim(array, dim) {\n try {\n var sum = reduce(array, dim, add);\n return sum;\n } catch (err) {\n throw improveErrorMessage(err, 'sum');\n }\n }\n});", "import { containsCollections } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { _switch } from '../../utils/switch.js';\nimport { improveErrorMessage } from './utils/improveErrorMessage.js';\nimport { arraySize } from '../../utils/array.js';\nimport { IndexError } from '../../error/IndexError.js';\nvar name = 'cumsum';\nvar dependencies = ['typed', 'add', 'unaryPlus'];\nexport var createCumSum = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n unaryPlus\n } = _ref;\n /**\n * Compute the cumulative sum of a matrix or a list with values.\n * In case of a (multi dimensional) array or matrix, the cumulative sums\n * along a specified dimension (defaulting to the first) will be calculated.\n *\n * Syntax:\n *\n * math.cumsum(a, b, c, ...)\n * math.cumsum(A)\n *\n * Examples:\n *\n * math.cumsum(2, 1, 4, 3) // returns [2, 3, 7, 10]\n * math.cumsum([2, 1, 4, 3]) // returns [2, 3, 7, 10]\n * math.cumsum([[1, 2], [3, 4]]) // returns [[1, 2], [4, 6]]\n * math.cumsum([[1, 2], [3, 4]], 0) // returns [[1, 2], [4, 6]]\n * math.cumsum([[1, 2], [3, 4]], 1) // returns [[1, 3], [3, 7]]\n * math.cumsum([[2, 5], [4, 3], [1, 7]]) // returns [[2, 5], [6, 8], [7, 15]]\n *\n * See also:\n *\n * mean, median, min, max, prod, std, variance, sum\n *\n * @param {... *} args A single matrix or or multiple scalar values\n * @return {*} The cumulative sum of all values\n */\n return typed(name, {\n // sum([a, b, c, d, ...])\n Array: _cumsum,\n Matrix: function Matrix(matrix) {\n return matrix.create(_cumsum(matrix.valueOf(), matrix.datatype()));\n },\n // sum([a, b, c, d, ...], dim)\n 'Array, number | BigNumber': _ncumSumDim,\n 'Matrix, number | BigNumber': function Matrix_number__BigNumber(matrix, dim) {\n return matrix.create(_ncumSumDim(matrix.valueOf(), dim), matrix.datatype());\n },\n // cumsum(a, b, c, d, ...)\n '...': function _(args) {\n if (containsCollections(args)) {\n throw new TypeError('All values expected to be scalar in function cumsum');\n }\n return _cumsum(args);\n }\n });\n\n /**\n * Recursively calculate the cumulative sum of an n-dimensional array\n * @param {Array} array\n * @return {number} cumsum\n * @private\n */\n function _cumsum(array) {\n try {\n return _cumsummap(array);\n } catch (err) {\n throw improveErrorMessage(err, name);\n }\n }\n function _cumsummap(array) {\n if (array.length === 0) {\n return [];\n }\n var sums = [unaryPlus(array[0])]; // unaryPlus converts to number if need be\n for (var i = 1; i < array.length; ++i) {\n // Must use add below and not addScalar for the case of summing a\n // 2+-dimensional array along the 0th dimension (the row vectors,\n // or higher-d analogues, are literally added to each other).\n sums.push(add(sums[i - 1], array[i]));\n }\n return sums;\n }\n function _ncumSumDim(array, dim) {\n var size = arraySize(array);\n if (dim < 0 || dim >= size.length) {\n // TODO: would be more clear when throwing a DimensionError here\n throw new IndexError(dim, size.length);\n }\n try {\n return _cumsumDimensional(array, dim);\n } catch (err) {\n throw improveErrorMessage(err, name);\n }\n }\n\n /* Possible TODO: Refactor _reduce in collection.js to be able to work here as well */\n function _cumsumDimensional(mat, dim) {\n var i, ret, tran;\n if (dim <= 0) {\n var initialValue = mat[0][0];\n if (!Array.isArray(initialValue)) {\n return _cumsummap(mat);\n } else {\n tran = _switch(mat);\n ret = [];\n for (i = 0; i < tran.length; i++) {\n ret[i] = _cumsumDimensional(tran[i], dim - 1);\n }\n return ret;\n }\n } else {\n ret = [];\n for (i = 0; i < mat.length; i++) {\n ret[i] = _cumsumDimensional(mat[i], dim - 1);\n }\n return ret;\n }\n }\n});", "import { containsCollections, deepForEach, reduce } from '../../utils/collection.js';\nimport { arraySize } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { improveErrorMessage } from './utils/improveErrorMessage.js';\nvar name = 'mean';\nvar dependencies = ['typed', 'add', 'divide'];\nexport var createMean = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n divide\n } = _ref;\n /**\n * Compute the mean value of matrix or a list with values.\n * In case of a multidimensional array, the mean of the flattened array\n * will be calculated. When `dim` is provided, the maximum over the selected\n * dimension will be calculated. Parameter `dim` is zero-based.\n *\n * Syntax:\n *\n * math.mean(a, b, c, ...)\n * math.mean(A)\n * math.mean(A, dimension)\n *\n * Examples:\n *\n * math.mean(2, 1, 4, 3) // returns 2.5\n * math.mean([1, 2.7, 3.2, 4]) // returns 2.725\n *\n * math.mean([[2, 5], [6, 3], [1, 7]], 0) // returns [3, 5]\n * math.mean([[2, 5], [6, 3], [1, 7]], 1) // returns [3.5, 4.5, 4]\n *\n * See also:\n *\n * median, min, max, sum, prod, std, variance\n *\n * @param {... *} args A single matrix or or multiple scalar values\n * @return {*} The mean of all values\n */\n return typed(name, {\n // mean([a, b, c, d, ...])\n 'Array | Matrix': _mean,\n // mean([a, b, c, d, ...], dim)\n 'Array | Matrix, number | BigNumber': _nmeanDim,\n // mean(a, b, c, d, ...)\n '...': function _(args) {\n if (containsCollections(args)) {\n throw new TypeError('Scalar values expected in function mean');\n }\n return _mean(args);\n }\n });\n\n /**\n * Calculate the mean value in an n-dimensional array, returning a\n * n-1 dimensional array\n * @param {Array} array\n * @param {number} dim\n * @return {number} mean\n * @private\n */\n function _nmeanDim(array, dim) {\n try {\n var sum = reduce(array, dim, add);\n var s = Array.isArray(array) ? arraySize(array) : array.size();\n return divide(sum, s[dim]);\n } catch (err) {\n throw improveErrorMessage(err, 'mean');\n }\n }\n\n /**\n * Recursively calculate the mean value in an n-dimensional array\n * @param {Array} array\n * @return {number} mean\n * @private\n */\n function _mean(array) {\n var sum;\n var num = 0;\n deepForEach(array, function (value) {\n try {\n sum = sum === undefined ? value : add(sum, value);\n num++;\n } catch (err) {\n throw improveErrorMessage(err, 'mean', value);\n }\n });\n if (num === 0) {\n throw new Error('Cannot calculate the mean of an empty array');\n }\n return divide(sum, num);\n }\n});", "import { containsCollections } from '../../utils/collection.js';\nimport { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { improveErrorMessage } from './utils/improveErrorMessage.js';\nvar name = 'median';\nvar dependencies = ['typed', 'add', 'divide', 'compare', 'partitionSelect'];\nexport var createMedian = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n divide,\n compare,\n partitionSelect\n } = _ref;\n /**\n * Recursively calculate the median of an n-dimensional array\n * @param {Array} array\n * @return {Number} median\n * @private\n */\n function _median(array) {\n try {\n array = flatten(array.valueOf());\n var num = array.length;\n if (num === 0) {\n throw new Error('Cannot calculate median of an empty array');\n }\n if (num % 2 === 0) {\n // even: return the average of the two middle values\n var mid = num / 2 - 1;\n var right = partitionSelect(array, mid + 1);\n\n // array now partitioned at mid + 1, take max of left part\n var left = array[mid];\n for (var i = 0; i < mid; ++i) {\n if (compare(array[i], left) > 0) {\n left = array[i];\n }\n }\n return middle2(left, right);\n } else {\n // odd: return the middle value\n var m = partitionSelect(array, (num - 1) / 2);\n return middle(m);\n }\n } catch (err) {\n throw improveErrorMessage(err, 'median');\n }\n }\n\n // helper function to type check the middle value of the array\n var middle = typed({\n 'number | BigNumber | Complex | Unit': function number__BigNumber__Complex__Unit(value) {\n return value;\n }\n });\n\n // helper function to type check the two middle value of the array\n var middle2 = typed({\n 'number | BigNumber | Complex | Unit, number | BigNumber | Complex | Unit': function number__BigNumber__Complex__Unit_number__BigNumber__Complex__Unit(left, right) {\n return divide(add(left, right), 2);\n }\n });\n\n /**\n * Compute the median of a matrix or a list with values. The values are\n * sorted and the middle value is returned. In case of an even number of\n * values, the average of the two middle values is returned.\n * Supported types of values are: Number, BigNumber, Unit\n *\n * In case of a (multi dimensional) array or matrix, the median of all\n * elements will be calculated.\n *\n * Syntax:\n *\n * math.median(a, b, c, ...)\n * math.median(A)\n *\n * Examples:\n *\n * math.median(5, 2, 7) // returns 5\n * math.median([3, -1, 5, 7]) // returns 4\n *\n * See also:\n *\n * mean, min, max, sum, prod, std, variance, quantileSeq\n *\n * @param {... *} args A single matrix or or multiple scalar values\n * @return {*} The median\n */\n return typed(name, {\n // median([a, b, c, d, ...])\n 'Array | Matrix': _median,\n // median([a, b, c, d, ...], dim)\n 'Array | Matrix, number | BigNumber': function Array__Matrix_number__BigNumber(array, dim) {\n // TODO: implement median(A, dim)\n throw new Error('median(A, dim) is not yet supported');\n // return reduce(arguments[0], arguments[1], ...)\n },\n // median(a, b, c, d, ...)\n '...': function _(args) {\n if (containsCollections(args)) {\n throw new TypeError('Scalar values expected in function median');\n }\n return _median(args);\n }\n });\n});", "import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { improveErrorMessage } from './utils/improveErrorMessage.js';\nvar name = 'mad';\nvar dependencies = ['typed', 'abs', 'map', 'median', 'subtract'];\nexport var createMad = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n abs,\n map,\n median,\n subtract\n } = _ref;\n /**\n * Compute the median absolute deviation of a matrix or a list with values.\n * The median absolute deviation is defined as the median of the absolute\n * deviations from the median.\n *\n * Syntax:\n *\n * math.mad(a, b, c, ...)\n * math.mad(A)\n *\n * Examples:\n *\n * math.mad(10, 20, 30) // returns 10\n * math.mad([1, 2, 3]) // returns 1\n * math.mad([[1, 2, 3], [4, 5, 6]]) // returns 1.5\n *\n * See also:\n *\n * median, mean, std, abs\n *\n * @param {Array | Matrix} array\n * A single matrix or multiple scalar values.\n * @return {*} The median absolute deviation.\n */\n return typed(name, {\n // mad([a, b, c, d, ...])\n 'Array | Matrix': _mad,\n // mad(a, b, c, d, ...)\n '...': function _(args) {\n return _mad(args);\n }\n });\n function _mad(array) {\n array = flatten(array.valueOf());\n if (array.length === 0) {\n throw new Error('Cannot calculate median absolute deviation (mad) of an empty array');\n }\n try {\n var med = median(array);\n return median(map(array, function (value) {\n return abs(subtract(value, med));\n }));\n } catch (err) {\n if (err instanceof TypeError && err.message.includes('median')) {\n throw new TypeError(err.message.replace('median', 'mad'));\n } else {\n throw improveErrorMessage(err, 'mad');\n }\n }\n }\n});", "import { deepForEach } from '../../utils/collection.js';\nimport { isBigNumber } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nimport { improveErrorMessage } from './utils/improveErrorMessage.js';\nvar DEFAULT_NORMALIZATION = 'unbiased';\nvar name = 'variance';\nvar dependencies = ['typed', 'add', 'subtract', 'multiply', 'divide', 'apply', 'isNaN'];\nexport var createVariance = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n subtract,\n multiply,\n divide,\n apply,\n isNaN\n } = _ref;\n /**\n * Compute the variance of a matrix or a list with values.\n * In case of a multidimensional array or matrix, the variance over all\n * elements will be calculated.\n *\n * Additionally, it is possible to compute the variance along the rows\n * or columns of a matrix by specifying the dimension as the second argument.\n *\n * Optionally, the type of normalization can be specified as the final\n * parameter. The parameter `normalization` can be one of the following values:\n *\n * - 'unbiased' (default) The sum of squared errors is divided by (n - 1)\n * - 'uncorrected' The sum of squared errors is divided by n\n * - 'biased' The sum of squared errors is divided by (n + 1)\n *\n *\n * Note that older browser may not like the variable name `var`. In that\n * case, the function can be called as `math['var'](...)` instead of\n * `math.var(...)`.\n *\n * Syntax:\n *\n * math.variance(a, b, c, ...)\n * math.variance(A)\n * math.variance(A, normalization)\n * math.variance(A, dimension)\n * math.variance(A, dimension, normalization)\n *\n * Examples:\n *\n * math.variance(2, 4, 6) // returns 4\n * math.variance([2, 4, 6, 8]) // returns 6.666666666666667\n * math.variance([2, 4, 6, 8], 'uncorrected') // returns 5\n * math.variance([2, 4, 6, 8], 'biased') // returns 4\n *\n * math.variance([[1, 2, 3], [4, 5, 6]]) // returns 3.5\n * math.variance([[1, 2, 3], [4, 6, 8]], 0) // returns [4.5, 8, 12.5]\n * math.variance([[1, 2, 3], [4, 6, 8]], 1) // returns [1, 4]\n * math.variance([[1, 2, 3], [4, 6, 8]], 1, 'biased') // returns [0.5, 2]\n *\n * See also:\n *\n * mean, median, max, min, prod, std, sum\n *\n * @param {Array | Matrix} array\n * A single matrix or or multiple scalar values\n * @param {string} [normalization='unbiased']\n * Determines how to normalize the variance.\n * Choose 'unbiased' (default), 'uncorrected', or 'biased'.\n * @param dimension {number | BigNumber}\n * Determines the axis to compute the variance for a matrix\n * @return {*} The variance\n */\n return typed(name, {\n // variance([a, b, c, d, ...])\n 'Array | Matrix': function Array__Matrix(array) {\n return _var(array, DEFAULT_NORMALIZATION);\n },\n // variance([a, b, c, d, ...], normalization)\n 'Array | Matrix, string': _var,\n // variance([a, b, c, c, ...], dim)\n 'Array | Matrix, number | BigNumber': function Array__Matrix_number__BigNumber(array, dim) {\n return _varDim(array, dim, DEFAULT_NORMALIZATION);\n },\n // variance([a, b, c, c, ...], dim, normalization)\n 'Array | Matrix, number | BigNumber, string': _varDim,\n // variance(a, b, c, d, ...)\n '...': function _(args) {\n return _var(args, DEFAULT_NORMALIZATION);\n }\n });\n\n /**\n * Recursively calculate the variance of an n-dimensional array\n * @param {Array} array\n * @param {string} normalization\n * Determines how to normalize the variance:\n * - 'unbiased' The sum of squared errors is divided by (n - 1)\n * - 'uncorrected' The sum of squared errors is divided by n\n * - 'biased' The sum of squared errors is divided by (n + 1)\n * @return {number | BigNumber} variance\n * @private\n */\n function _var(array, normalization) {\n var sum;\n var num = 0;\n if (array.length === 0) {\n throw new SyntaxError('Function variance requires one or more parameters (0 provided)');\n }\n\n // calculate the mean and number of elements\n deepForEach(array, function (value) {\n try {\n sum = sum === undefined ? value : add(sum, value);\n num++;\n } catch (err) {\n throw improveErrorMessage(err, 'variance', value);\n }\n });\n if (num === 0) throw new Error('Cannot calculate variance of an empty array');\n var mean = divide(sum, num);\n\n // calculate the variance\n sum = undefined;\n deepForEach(array, function (value) {\n var diff = subtract(value, mean);\n sum = sum === undefined ? multiply(diff, diff) : add(sum, multiply(diff, diff));\n });\n if (isNaN(sum)) {\n return sum;\n }\n switch (normalization) {\n case 'uncorrected':\n return divide(sum, num);\n case 'biased':\n return divide(sum, num + 1);\n case 'unbiased':\n {\n var zero = isBigNumber(sum) ? sum.mul(0) : 0;\n return num === 1 ? zero : divide(sum, num - 1);\n }\n default:\n throw new Error('Unknown normalization \"' + normalization + '\". ' + 'Choose \"unbiased\" (default), \"uncorrected\", or \"biased\".');\n }\n }\n function _varDim(array, dim, normalization) {\n try {\n if (array.length === 0) {\n throw new SyntaxError('Function variance requires one or more parameters (0 provided)');\n }\n return apply(array, dim, x => _var(x, normalization));\n } catch (err) {\n throw improveErrorMessage(err, 'variance');\n }\n }\n});", "import { isNumber } from '../../utils/is.js';\nimport { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { createApply } from '../matrix/apply.js';\nvar name = 'quantileSeq';\nvar dependencies = ['typed', '?bignumber', 'add', 'subtract', 'divide', 'multiply', 'partitionSelect', 'compare', 'isInteger', 'smaller', 'smallerEq', 'larger'];\nexport var createQuantileSeq = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n bignumber,\n add,\n subtract,\n divide,\n multiply,\n partitionSelect,\n compare,\n isInteger,\n smaller,\n smallerEq,\n larger\n } = _ref;\n var apply = createApply({\n typed,\n isInteger\n });\n\n /**\n * Compute the prob order quantile of a matrix or a list with values.\n * The sequence is sorted and the middle value is returned.\n * Supported types of sequence values are: Number, BigNumber, Unit\n * Supported types of probability are: Number, BigNumber\n *\n * In case of a multidimensional array or matrix, the prob order quantile\n * of all elements will be calculated.\n *\n * Syntax:\n *\n * math.quantileSeq(A, prob[, sorted])\n * math.quantileSeq(A, [prob1, prob2, ...][, sorted])\n * math.quantileSeq(A, N[, sorted])\n *\n * Examples:\n *\n * math.quantileSeq([3, -1, 5, 7], 0.5) // returns 4\n * math.quantileSeq([3, -1, 5, 7], [1/3, 2/3]) // returns [3, 5]\n * math.quantileSeq([3, -1, 5, 7], 2) // returns [3, 5]\n * math.quantileSeq([-1, 3, 5, 7], 0.5, true) // returns 4\n *\n * See also:\n *\n * median, mean, min, max, sum, prod, std, variance\n *\n * @param {Array, Matrix} data A single matrix or Array\n * @param {Number, BigNumber, Array} probOrN prob is the order of the quantile, while N is\n * the amount of evenly distributed steps of\n * probabilities; only one of these options can\n * be provided\n * @param {Boolean} sorted=false is data sorted in ascending order\n * @return {Number, BigNumber, Unit, Array} Quantile(s)\n */\n return typed(name, {\n 'Array | Matrix, number | BigNumber': (data, p) => _quantileSeqProbNumber(data, p, false),\n 'Array | Matrix, number | BigNumber, number': (data, prob, dim) => _quantileSeqDim(data, prob, false, dim, _quantileSeqProbNumber),\n 'Array | Matrix, number | BigNumber, boolean': _quantileSeqProbNumber,\n 'Array | Matrix, number | BigNumber, boolean, number': (data, prob, sorted, dim) => _quantileSeqDim(data, prob, sorted, dim, _quantileSeqProbNumber),\n 'Array | Matrix, Array | Matrix': (data, p) => _quantileSeqProbCollection(data, p, false),\n 'Array | Matrix, Array | Matrix, number': (data, prob, dim) => _quantileSeqDim(data, prob, false, dim, _quantileSeqProbCollection),\n 'Array | Matrix, Array | Matrix, boolean': _quantileSeqProbCollection,\n 'Array | Matrix, Array | Matrix, boolean, number': (data, prob, sorted, dim) => _quantileSeqDim(data, prob, sorted, dim, _quantileSeqProbCollection)\n });\n function _quantileSeqDim(data, prob, sorted, dim, fn) {\n return apply(data, dim, x => fn(x, prob, sorted));\n }\n function _quantileSeqProbNumber(data, probOrN, sorted) {\n var probArr;\n var dataArr = data.valueOf();\n if (smaller(probOrN, 0)) {\n throw new Error('N/prob must be non-negative');\n }\n if (smallerEq(probOrN, 1)) {\n // quantileSeq([a, b, c, d, ...], prob[,sorted])\n return isNumber(probOrN) ? _quantileSeq(dataArr, probOrN, sorted) : bignumber(_quantileSeq(dataArr, probOrN, sorted));\n }\n if (larger(probOrN, 1)) {\n // quantileSeq([a, b, c, d, ...], N[,sorted])\n if (!isInteger(probOrN)) {\n throw new Error('N must be a positive integer');\n }\n\n // largest possible Array length is 2^32-1\n // 2^32 < 10^15, thus safe conversion guaranteed\n if (larger(probOrN, 4294967295)) {\n throw new Error('N must be less than or equal to 2^32-1, as that is the maximum length of an Array');\n }\n var nPlusOne = add(probOrN, 1);\n probArr = [];\n for (var i = 0; smaller(i, probOrN); i++) {\n var prob = divide(i + 1, nPlusOne);\n probArr.push(_quantileSeq(dataArr, prob, sorted));\n }\n return isNumber(probOrN) ? probArr : bignumber(probArr);\n }\n }\n\n /**\n * Calculate the prob order quantile of an n-dimensional array.\n *\n * @param {Array, Matrix} array\n * @param {Array, Matrix} prob\n * @param {Boolean} sorted\n * @return {Number, BigNumber, Unit} prob order quantile\n * @private\n */\n\n function _quantileSeqProbCollection(data, probOrN, sorted) {\n var dataArr = data.valueOf();\n // quantileSeq([a, b, c, d, ...], [prob1, prob2, ...][,sorted])\n var probOrNArr = probOrN.valueOf();\n var probArr = [];\n for (var i = 0; i < probOrNArr.length; ++i) {\n probArr.push(_quantileSeq(dataArr, probOrNArr[i], sorted));\n }\n return probArr;\n }\n\n /**\n * Calculate the prob order quantile of an n-dimensional array.\n *\n * @param {Array} array\n * @param {Number, BigNumber} prob\n * @param {Boolean} sorted\n * @return {Number, BigNumber, Unit} prob order quantile\n * @private\n */\n function _quantileSeq(array, prob, sorted) {\n var flat = flatten(array);\n var len = flat.length;\n if (len === 0) {\n throw new Error('Cannot calculate quantile of an empty sequence');\n }\n var index = isNumber(prob) ? prob * (len - 1) : prob.times(len - 1);\n var integerPart = isNumber(prob) ? Math.floor(index) : index.floor().toNumber();\n var fracPart = isNumber(prob) ? index % 1 : index.minus(integerPart);\n if (isInteger(index)) {\n return sorted ? flat[index] : partitionSelect(flat, isNumber(prob) ? index : index.valueOf());\n }\n var left;\n var right;\n if (sorted) {\n left = flat[integerPart];\n right = flat[integerPart + 1];\n } else {\n right = partitionSelect(flat, integerPart + 1);\n\n // max of partition is kth largest\n left = flat[integerPart];\n for (var i = 0; i < integerPart; ++i) {\n if (compare(flat[i], left) > 0) {\n left = flat[i];\n }\n }\n }\n // Q(prob) = (1-f)*A[floor(index)] + f*A[floor(index)+1]\n return add(multiply(left, subtract(1, fracPart)), multiply(right, fracPart));\n }\n});", "import { factory } from '../../utils/factory.js';\nimport { isCollection } from '../../utils/is.js';\nvar name = 'std';\nvar dependencies = ['typed', 'map', 'sqrt', 'variance'];\nexport var createStd = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n map,\n sqrt,\n variance\n } = _ref;\n /**\n * Compute the standard deviation of a matrix or a list with values.\n * The standard deviations is defined as the square root of the variance:\n * `std(A) = sqrt(variance(A))`.\n * In case of a (multi dimensional) array or matrix, the standard deviation\n * over all elements will be calculated by default, unless an axis is specified\n * in which case the standard deviation will be computed along that axis.\n *\n * Additionally, it is possible to compute the standard deviation along the rows\n * or columns of a matrix by specifying the dimension as the second argument.\n *\n * Optionally, the type of normalization can be specified as the final\n * parameter. The parameter `normalization` can be one of the following values:\n *\n * - 'unbiased' (default) The sum of squared errors is divided by (n - 1)\n * - 'uncorrected' The sum of squared errors is divided by n\n * - 'biased' The sum of squared errors is divided by (n + 1)\n *\n *\n * Syntax:\n *\n * math.std(a, b, c, ...)\n * math.std(A)\n * math.std(A, normalization)\n * math.std(A, dimension)\n * math.std(A, dimension, normalization)\n *\n * Examples:\n *\n * math.std(2, 4, 6) // returns 2\n * math.std([2, 4, 6, 8]) // returns 2.581988897471611\n * math.std([2, 4, 6, 8], 'uncorrected') // returns 2.23606797749979\n * math.std([2, 4, 6, 8], 'biased') // returns 2\n *\n * math.std([[1, 2, 3], [4, 5, 6]]) // returns 1.8708286933869707\n * math.std([[1, 2, 3], [4, 6, 8]], 0) // returns [2.1213203435596424, 2.8284271247461903, 3.5355339059327378]\n * math.std([[1, 2, 3], [4, 6, 8]], 1) // returns [1, 2]\n * math.std([[1, 2, 3], [4, 6, 8]], 1, 'biased') // returns [0.7071067811865476, 1.4142135623730951]\n *\n * See also:\n *\n * mean, median, max, min, prod, sum, variance\n *\n * @param {Array | Matrix} array\n * A single matrix or or multiple scalar values\n * @param {string} [normalization='unbiased']\n * Determines how to normalize the variance.\n * Choose 'unbiased' (default), 'uncorrected', or 'biased'.\n * @param dimension {number | BigNumber}\n * Determines the axis to compute the standard deviation for a matrix\n * @return {*} The standard deviation\n */\n return typed(name, {\n // std([a, b, c, d, ...])\n 'Array | Matrix': _std,\n // std([a, b, c, d, ...], normalization)\n 'Array | Matrix, string': _std,\n // std([a, b, c, c, ...], dim)\n 'Array | Matrix, number | BigNumber': _std,\n // std([a, b, c, c, ...], dim, normalization)\n 'Array | Matrix, number | BigNumber, string': _std,\n // std(a, b, c, d, ...)\n '...': function _(args) {\n return _std(args);\n }\n });\n function _std(array, normalization) {\n if (array.length === 0) {\n throw new SyntaxError('Function std requires one or more parameters (0 provided)');\n }\n try {\n var v = variance.apply(null, arguments);\n if (isCollection(v)) {\n return map(v, sqrt);\n } else {\n return sqrt(v);\n }\n } catch (err) {\n if (err instanceof TypeError && err.message.includes(' variance')) {\n throw new TypeError(err.message.replace(' variance', ' std'));\n } else {\n throw err;\n }\n }\n }\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'corr';\nvar dependencies = ['typed', 'matrix', 'mean', 'sqrt', 'sum', 'add', 'subtract', 'multiply', 'pow', 'divide'];\nexport var createCorr = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n sqrt,\n sum,\n add,\n subtract,\n multiply,\n pow,\n divide\n } = _ref;\n /**\n * Compute the correlation coefficient of a two list with values, For matrices, the matrix correlation coefficient is calculated.\n *\n * Syntax:\n *\n * math.corr(A, B)\n *\n * Examples:\n *\n * math.corr([1, 2, 3, 4, 5], [4, 5, 6, 7, 8]) // returns 1\n * math.corr([1, 2.2, 3, 4.8, 5], [4, 5.3, 6.6, 7, 8]) //returns 0.9569941688503644\n * math.corr([[1, 2.2, 3, 4.8, 5], [4, 5.3, 6.6, 7, 8]],[[1, 2.2, 3, 4.8, 5], [4, 5.3, 6.6, 7, 8]]) // returns [1,1]\n *\n * See also:\n *\n * median, mean, min, max, sum, prod, std, variance\n *\n * @param {Array | Matrix} A The first array or matrix to compute correlation coefficient\n * @param {Array | Matrix} B The second array or matrix to compute correlation coefficient\n * @return {*} The correlation coefficient\n */\n return typed(name, {\n 'Array, Array': function Array_Array(A, B) {\n return _corr(A, B);\n },\n 'Matrix, Matrix': function Matrix_Matrix(A, B) {\n var res = _corr(A.toArray(), B.toArray());\n return Array.isArray(res) ? matrix(res) : res;\n }\n });\n /**\n * Calculate the correlation coefficient between two arrays or matrices.\n * @param {Array | Matrix} A\n * @param {Array | Matrix} B\n * @return {*} correlation coefficient\n * @private\n */\n function _corr(A, B) {\n var correlations = [];\n if (Array.isArray(A[0]) && Array.isArray(B[0])) {\n if (A.length !== B.length) {\n throw new SyntaxError('Dimension mismatch. Array A and B must have the same length.');\n }\n for (var i = 0; i < A.length; i++) {\n if (A[i].length !== B[i].length) {\n throw new SyntaxError('Dimension mismatch. Array A and B must have the same number of elements.');\n }\n correlations.push(correlation(A[i], B[i]));\n }\n return correlations;\n } else {\n if (A.length !== B.length) {\n throw new SyntaxError('Dimension mismatch. Array A and B must have the same number of elements.');\n }\n return correlation(A, B);\n }\n }\n function correlation(A, B) {\n var n = A.length;\n var sumX = sum(A);\n var sumY = sum(B);\n var sumXY = A.reduce((acc, x, index) => add(acc, multiply(x, B[index])), 0);\n var sumXSquare = sum(A.map(x => pow(x, 2)));\n var sumYSquare = sum(B.map(y => pow(y, 2)));\n var numerator = subtract(multiply(n, sumXY), multiply(sumX, sumY));\n var denominator = sqrt(multiply(subtract(multiply(n, sumXSquare), pow(sumX, 2)), subtract(multiply(n, sumYSquare), pow(sumY, 2))));\n return divide(numerator, denominator);\n }\n});", "import { factory } from '../../utils/factory.js';\nimport { combinationsNumber } from '../../plain/number/combinations.js';\nvar name = 'combinations';\nvar dependencies = ['typed'];\nexport var createCombinations = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Compute the number of ways of picking `k` unordered outcomes from `n`\n * possibilities.\n *\n * Combinations only takes integer arguments.\n * The following condition must be enforced: k <= n.\n *\n * Syntax:\n *\n * math.combinations(n, k)\n *\n * Examples:\n *\n * math.combinations(7, 5) // returns 21\n *\n * See also:\n *\n * combinationsWithRep, permutations, factorial\n *\n * @param {number | BigNumber} n Total number of objects in the set\n * @param {number | BigNumber} k Number of objects in the subset\n * @return {number | BigNumber} Number of possible combinations.\n */\n return typed(name, {\n 'number, number': combinationsNumber,\n 'BigNumber, BigNumber': function BigNumber_BigNumber(n, k) {\n var BigNumber = n.constructor;\n var result, i;\n var nMinusk = n.minus(k);\n var one = new BigNumber(1);\n if (!isPositiveInteger(n) || !isPositiveInteger(k)) {\n throw new TypeError('Positive integer value expected in function combinations');\n }\n if (k.gt(n)) {\n throw new TypeError('k must be less than n in function combinations');\n }\n result = one;\n if (k.lt(nMinusk)) {\n for (i = one; i.lte(nMinusk); i = i.plus(one)) {\n result = result.times(k.plus(i)).dividedBy(i);\n }\n } else {\n for (i = one; i.lte(k); i = i.plus(one)) {\n result = result.times(nMinusk.plus(i)).dividedBy(i);\n }\n }\n return result;\n }\n\n // TODO: implement support for collection in combinations\n });\n});\n\n/**\n * Test whether BigNumber n is a positive integer\n * @param {BigNumber} n\n * @returns {boolean} isPositiveInteger\n */\nfunction isPositiveInteger(n) {\n return n.isInteger() && n.gte(0);\n}", "import { factory } from '../../utils/factory.js';\nimport { isInteger } from '../../utils/number.js';\nimport { product } from '../../utils/product.js';\nvar name = 'combinationsWithRep';\nvar dependencies = ['typed'];\nexport var createCombinationsWithRep = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Compute the number of ways of picking `k` unordered outcomes from `n`\n * possibilities, allowing individual outcomes to be repeated more than once.\n *\n * CombinationsWithRep only takes integer arguments.\n * The following condition must be enforced: k <= n + k -1.\n *\n * Syntax:\n *\n * math.combinationsWithRep(n, k)\n *\n * Examples:\n *\n * math.combinationsWithRep(7, 5) // returns 462\n *\n * See also:\n *\n * combinations, permutations, factorial\n *\n * @param {number | BigNumber} n Total number of objects in the set\n * @param {number | BigNumber} k Number of objects in the subset\n * @return {number | BigNumber} Number of possible combinations with replacement.\n */\n return typed(name, {\n 'number, number': function number_number(n, k) {\n if (!isInteger(n) || n < 0) {\n throw new TypeError('Positive integer value expected in function combinationsWithRep');\n }\n if (!isInteger(k) || k < 0) {\n throw new TypeError('Positive integer value expected in function combinationsWithRep');\n }\n if (n < 1) {\n throw new TypeError('k must be less than or equal to n + k - 1');\n }\n if (k < n - 1) {\n var _prodrange = product(n, n + k - 1);\n return _prodrange / product(1, k);\n }\n var prodrange = product(k + 1, n + k - 1);\n return prodrange / product(1, n - 1);\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(n, k) {\n var BigNumber = n.constructor;\n var result, i;\n var one = new BigNumber(1);\n var nMinusOne = n.minus(one);\n if (!isPositiveInteger(n) || !isPositiveInteger(k)) {\n throw new TypeError('Positive integer value expected in function combinationsWithRep');\n }\n if (n.lt(one)) {\n throw new TypeError('k must be less than or equal to n + k - 1 in function combinationsWithRep');\n }\n result = one;\n if (k.lt(nMinusOne)) {\n for (i = one; i.lte(nMinusOne); i = i.plus(one)) {\n result = result.times(k.plus(i)).dividedBy(i);\n }\n } else {\n for (i = one; i.lte(k); i = i.plus(one)) {\n result = result.times(nMinusOne.plus(i)).dividedBy(i);\n }\n }\n return result;\n }\n });\n});\n\n/**\n * Test whether BigNumber n is a positive integer\n * @param {BigNumber} n\n * @returns {boolean} isPositiveInteger\n */\nfunction isPositiveInteger(n) {\n return n.isInteger() && n.gte(0);\n}", "import { factory } from '../../utils/factory.js';\nimport { gammaG, gammaNumber, gammaP } from '../../plain/number/index.js';\nvar name = 'gamma';\nvar dependencies = ['typed', 'config', 'multiplyScalar', 'pow', 'BigNumber', 'Complex'];\nexport var createGamma = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n multiplyScalar,\n pow,\n BigNumber: _BigNumber,\n Complex\n } = _ref;\n /**\n * Compute the gamma function of a value using Lanczos approximation for\n * small values, and an extended Stirling approximation for large values.\n *\n * To avoid confusion with the matrix Gamma function, this function does\n * not apply to matrices.\n *\n * Syntax:\n *\n * math.gamma(n)\n *\n * Examples:\n *\n * math.gamma(5) // returns 24\n * math.gamma(-0.5) // returns -3.5449077018110335\n * math.gamma(math.i) // returns -0.15494982830180973 - 0.49801566811835596i\n *\n * See also:\n *\n * combinations, factorial, permutations\n *\n * @param {number | BigNumber | Complex} n A real or complex number\n * @return {number | BigNumber | Complex} The gamma of `n`\n */\n\n function gammaComplex(n) {\n if (n.im === 0) {\n return gammaNumber(n.re);\n }\n\n // Lanczos approximation doesn't work well with real part lower than 0.5\n // So reflection formula is required\n if (n.re < 0.5) {\n // Euler's reflection formula\n // gamma(1-z) * gamma(z) = PI / sin(PI * z)\n // real part of Z should not be integer [sin(PI) == 0 -> 1/0 - undefined]\n // thanks to imperfect sin implementation sin(PI * n) != 0\n // we can safely use it anyway\n var _t = new Complex(1 - n.re, -n.im);\n var r = new Complex(Math.PI * n.re, Math.PI * n.im);\n return new Complex(Math.PI).div(r.sin()).div(gammaComplex(_t));\n }\n\n // Lanczos approximation\n // z -= 1\n n = new Complex(n.re - 1, n.im);\n\n // x = gammaPval[0]\n var x = new Complex(gammaP[0], 0);\n // for (i, gammaPval) in enumerate(gammaP):\n for (var i = 1; i < gammaP.length; ++i) {\n // x += gammaPval / (z + i)\n var gammaPval = new Complex(gammaP[i], 0);\n x = x.add(gammaPval.div(n.add(i)));\n }\n // t = z + gammaG + 0.5\n var t = new Complex(n.re + gammaG + 0.5, n.im);\n\n // y = sqrt(2 * pi) * t ** (z + 0.5) * exp(-t) * x\n var twoPiSqrt = Math.sqrt(2 * Math.PI);\n var tpow = t.pow(n.add(0.5));\n var expt = t.neg().exp();\n\n // y = [x] * [sqrt(2 * pi)] * [t ** (z + 0.5)] * [exp(-t)]\n return x.mul(twoPiSqrt).mul(tpow).mul(expt);\n }\n return typed(name, {\n number: gammaNumber,\n Complex: gammaComplex,\n BigNumber: function BigNumber(n) {\n if (n.isInteger()) {\n return n.isNegative() || n.isZero() ? new _BigNumber(Infinity) : bigFactorial(n.minus(1));\n }\n if (!n.isFinite()) {\n return new _BigNumber(n.isNegative() ? NaN : Infinity);\n }\n throw new Error('Integer BigNumber expected');\n }\n });\n\n /**\n * Calculate factorial for a BigNumber\n * @param {BigNumber} n\n * @returns {BigNumber} Returns the factorial of n\n */\n function bigFactorial(n) {\n if (n < 8) {\n return new _BigNumber([1, 1, 2, 6, 24, 120, 720, 5040][n]);\n }\n var precision = config.precision + (Math.log(n.toNumber()) | 0);\n var Big = _BigNumber.clone({\n precision\n });\n if (n % 2 === 1) {\n return n.times(bigFactorial(new _BigNumber(n - 1)));\n }\n var p = n;\n var prod = new Big(n);\n var sum = n.toNumber();\n while (p > 2) {\n p -= 2;\n sum += p;\n prod = prod.times(sum);\n }\n return new _BigNumber(prod.toPrecision(_BigNumber.precision));\n }\n});", "/* eslint-disable no-loss-of-precision */\n\n// References\n// ----------\n// [1] Hare, \"Computing the Principal Branch of log-Gamma\", Journal of Algorithms, 1997.\n// [2] https://math.stackexchange.com/questions/1338753/how-do-i-calculate-values-for-gamma-function-with-complex-arguments\n\nimport { lgammaNumber, lnSqrt2PI } from '../../plain/number/index.js';\nimport { factory } from '../../utils/factory.js';\nimport { copysign } from '../../utils/number.js';\nvar name = 'lgamma';\nvar dependencies = ['Complex', 'typed'];\nexport var createLgamma = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Complex,\n typed\n } = _ref;\n // Stirling series is non-convergent, we need to use the recurrence `lgamma(z) = lgamma(z+1) - log z` to get\n // sufficient accuracy.\n //\n // These two values are copied from Scipy implementation:\n // https://github.com/scipy/scipy/blob/v1.8.0/scipy/special/_loggamma.pxd#L37\n var SMALL_RE = 7;\n var SMALL_IM = 7;\n\n /**\n * The coefficients are B[2*n]/(2*n*(2*n - 1)) where B[2*n] is the (2*n)th Bernoulli number. See (1.1) in [1].\n *\n * If you cannot access the paper, can also get these values from the formula in [2].\n *\n * 1 / 12 = 0.00833333333333333333333333333333\n * 1 / 360 = 0.00277777777777777777777777777778\n * ...\n * 3617 / 133400 = 0.02955065359477124183006535947712\n */\n var coeffs = [-2.955065359477124183e-2, 6.4102564102564102564e-3, -1.9175269175269175269e-3, 8.4175084175084175084e-4, -5.952380952380952381e-4, 7.9365079365079365079e-4, -2.7777777777777777778e-3, 8.3333333333333333333e-2];\n\n /**\n * Logarithm of the gamma function for real, positive numbers and complex numbers,\n * using Lanczos approximation for numbers and Stirling series for complex numbers.\n *\n * Syntax:\n *\n * math.lgamma(n)\n *\n * Examples:\n *\n * math.lgamma(5) // returns 3.178053830347945\n * math.lgamma(0) // returns Infinity\n * math.lgamma(-0.5) // returns NaN\n * math.lgamma(math.i) // returns -0.6509231993018536 - 1.8724366472624294i\n *\n * See also:\n *\n * gamma\n *\n * @param {number | Complex} n A real or complex number\n * @return {number | Complex} The log gamma of `n`\n */\n return typed(name, {\n number: lgammaNumber,\n Complex: lgammaComplex,\n BigNumber: function BigNumber() {\n throw new Error(\"mathjs doesn't yet provide an implementation of the algorithm lgamma for BigNumber\");\n }\n });\n function lgammaComplex(n) {\n var TWOPI = 6.2831853071795864769252842; // 2*pi\n var LOGPI = 1.1447298858494001741434262; // log(pi)\n\n var REFLECTION = 0.1;\n if (n.isNaN()) {\n return new Complex(NaN, NaN);\n } else if (n.im === 0) {\n return new Complex(lgammaNumber(n.re), 0);\n } else if (n.re >= SMALL_RE || Math.abs(n.im) >= SMALL_IM) {\n return lgammaStirling(n);\n } else if (n.re <= REFLECTION) {\n // Reflection formula. see Proposition 3.1 in [1]\n var tmp = copysign(TWOPI, n.im) * Math.floor(0.5 * n.re + 0.25);\n var a = n.mul(Math.PI).sin().log();\n var b = lgammaComplex(new Complex(1 - n.re, -n.im));\n return new Complex(LOGPI, tmp).sub(a).sub(b);\n } else if (n.im >= 0) {\n return lgammaRecurrence(n);\n } else {\n return lgammaRecurrence(n.conjugate()).conjugate();\n }\n }\n function lgammaStirling(z) {\n // formula ref in [2]\n // computation ref:\n // https://github.com/scipy/scipy/blob/v1.8.0/scipy/special/_loggamma.pxd#L101\n\n // left part\n\n // x (log(x) - 1) + 1/2 (log(2PI) - log(x))\n // => (x - 0.5) * log(x) - x + log(2PI) / 2\n var leftPart = z.sub(0.5).mul(z.log()).sub(z).add(lnSqrt2PI);\n\n // right part\n\n var rz = new Complex(1, 0).div(z);\n var rzz = rz.div(z);\n var a = coeffs[0];\n var b = coeffs[1];\n var r = 2 * rzz.re;\n var s = rzz.re * rzz.re + rzz.im * rzz.im;\n for (var i = 2; i < 8; i++) {\n var tmp = b;\n b = -s * a + coeffs[i];\n a = r * a + tmp;\n }\n var rightPart = rz.mul(rzz.mul(a).add(b));\n\n // plus left and right\n\n return leftPart.add(rightPart);\n }\n function lgammaRecurrence(z) {\n // computation ref:\n // https://github.com/scipy/scipy/blob/v1.8.0/scipy/special/_loggamma.pxd#L78\n\n var signflips = 0;\n var sb = 0;\n var shiftprod = z;\n z = z.add(1);\n while (z.re <= SMALL_RE) {\n shiftprod = shiftprod.mul(z);\n var nsb = shiftprod.im < 0 ? 1 : 0;\n if (nsb !== 0 && sb === 0) signflips++;\n sb = nsb;\n z = z.add(1);\n }\n return lgammaStirling(z).sub(shiftprod.log()).sub(new Complex(0, signflips * 2 * Math.PI * 1));\n }\n});", "import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'factorial';\nvar dependencies = ['typed', 'gamma'];\nexport var createFactorial = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n gamma\n } = _ref;\n /**\n * Compute the factorial of a value\n *\n * Factorial only supports an integer value as argument.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.factorial(n)\n *\n * Examples:\n *\n * math.factorial(5) // returns 120\n * math.factorial(3) // returns 6\n *\n * See also:\n *\n * combinations, combinationsWithRep, gamma, permutations\n *\n * @param {number | BigNumber | Array | Matrix} n An integer number\n * @return {number | BigNumber | Array | Matrix} The factorial of `n`\n */\n return typed(name, {\n number: function number(n) {\n if (n < 0) {\n throw new Error('Value must be non-negative');\n }\n return gamma(n + 1);\n },\n BigNumber: function BigNumber(n) {\n if (n.isNegative()) {\n throw new Error('Value must be non-negative');\n }\n return gamma(n.plus(1));\n },\n 'Array | Matrix': typed.referToSelf(self => n => deepMap(n, self))\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'kldivergence';\nvar dependencies = ['typed', 'matrix', 'divide', 'sum', 'multiply', 'map', 'dotDivide', 'log', 'isNumeric'];\nexport var createKldivergence = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n divide,\n sum,\n multiply,\n map,\n dotDivide,\n log,\n isNumeric\n } = _ref;\n /**\n * Calculate the Kullback-Leibler (KL) divergence between two distributions\n *\n * Syntax:\n *\n * math.kldivergence(x, y)\n *\n * Examples:\n *\n * math.kldivergence([0.7,0.5,0.4], [0.2,0.9,0.5]) //returns 0.24376698773121153\n *\n *\n * @param {Array | Matrix} q First vector\n * @param {Array | Matrix} p Second vector\n * @return {number} Returns distance between q and p\n */\n return typed(name, {\n 'Array, Array': function Array_Array(q, p) {\n return _kldiv(matrix(q), matrix(p));\n },\n 'Matrix, Array': function Matrix_Array(q, p) {\n return _kldiv(q, matrix(p));\n },\n 'Array, Matrix': function Array_Matrix(q, p) {\n return _kldiv(matrix(q), p);\n },\n 'Matrix, Matrix': function Matrix_Matrix(q, p) {\n return _kldiv(q, p);\n }\n });\n function _kldiv(q, p) {\n var plength = p.size().length;\n var qlength = q.size().length;\n if (plength > 1) {\n throw new Error('first object must be one dimensional');\n }\n if (qlength > 1) {\n throw new Error('second object must be one dimensional');\n }\n if (plength !== qlength) {\n throw new Error('Length of two vectors must be equal');\n }\n\n // Before calculation, apply normalization\n var sumq = sum(q);\n if (sumq === 0) {\n throw new Error('Sum of elements in first object must be non zero');\n }\n var sump = sum(p);\n if (sump === 0) {\n throw new Error('Sum of elements in second object must be non zero');\n }\n var qnorm = divide(q, sum(q));\n var pnorm = divide(p, sum(p));\n var result = sum(multiply(qnorm, map(dotDivide(qnorm, pnorm), x => log(x))));\n if (isNumeric(result)) {\n return result;\n } else {\n return Number.NaN;\n }\n }\n});", "import { deepForEach } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'multinomial';\nvar dependencies = ['typed', 'add', 'divide', 'multiply', 'factorial', 'isInteger', 'isPositive'];\nexport var createMultinomial = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n divide,\n multiply,\n factorial,\n isInteger,\n isPositive\n } = _ref;\n /**\n * Multinomial Coefficients compute the number of ways of picking a1, a2, ..., ai unordered outcomes from `n` possibilities.\n *\n * multinomial takes one array of integers as an argument.\n * The following condition must be enforced: every ai <= 0\n *\n * Syntax:\n *\n * math.multinomial(a) // a is an array type\n *\n * Examples:\n *\n * math.multinomial([1,2,1]) // returns 12\n *\n * See also:\n *\n * combinations, factorial\n *\n * @param {number[] | BigNumber[]} a Integer numbers of objects in the subset\n * @return {Number | BigNumber} Multinomial coefficient.\n */\n return typed(name, {\n 'Array | Matrix': function Array__Matrix(a) {\n var sum = 0;\n var denom = 1;\n deepForEach(a, function (ai) {\n if (!isInteger(ai) || !isPositive(ai)) {\n throw new TypeError('Positive integer value expected in function multinomial');\n }\n sum = add(sum, ai);\n denom = multiply(denom, factorial(ai));\n });\n return divide(factorial(sum), denom);\n }\n });\n});", "import { isInteger } from '../../utils/number.js';\nimport { product } from '../../utils/product.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'permutations';\nvar dependencies = ['typed', 'factorial'];\nexport var createPermutations = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n factorial\n } = _ref;\n /**\n * Compute the number of ways of obtaining an ordered subset of `k` elements\n * from a set of `n` elements.\n *\n * Permutations only takes integer arguments.\n * The following condition must be enforced: k <= n.\n *\n * Syntax:\n *\n * math.permutations(n)\n * math.permutations(n, k)\n *\n * Examples:\n *\n * math.permutations(5) // 120\n * math.permutations(5, 3) // 60\n *\n * See also:\n *\n * combinations, combinationsWithRep, factorial\n *\n * @param {number | BigNumber} n The number of objects in total\n * @param {number | BigNumber} [k] The number of objects in the subset\n * @return {number | BigNumber} The number of permutations\n */\n return typed(name, {\n 'number | BigNumber': factorial,\n 'number, number': function number_number(n, k) {\n if (!isInteger(n) || n < 0) {\n throw new TypeError('Positive integer value expected in function permutations');\n }\n if (!isInteger(k) || k < 0) {\n throw new TypeError('Positive integer value expected in function permutations');\n }\n if (k > n) {\n throw new TypeError('second argument k must be less than or equal to first argument n');\n }\n // Permute n objects, k at a time\n return product(n - k + 1, n);\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(n, k) {\n var result, i;\n if (!isPositiveInteger(n) || !isPositiveInteger(k)) {\n throw new TypeError('Positive integer value expected in function permutations');\n }\n if (k.gt(n)) {\n throw new TypeError('second argument k must be less than or equal to first argument n');\n }\n var one = n.mul(0).add(1);\n result = one;\n for (i = n.minus(k).plus(1); i.lte(n); i = i.plus(1)) {\n result = result.times(i);\n }\n return result;\n }\n\n // TODO: implement support for collection in permutations\n });\n});\n\n/**\n * Test whether BigNumber n is a positive integer\n * @param {BigNumber} n\n * @returns {boolean} isPositiveInteger\n */\nfunction isPositiveInteger(n) {\n return n.isInteger() && n.gte(0);\n}", "import seedrandom from 'seedrandom';\nvar singletonRandom = /* #__PURE__ */seedrandom(Date.now());\nexport function createRng(randomSeed) {\n var random;\n\n // create a new random generator with given seed\n function setSeed(seed) {\n random = seed === null ? singletonRandom : seedrandom(String(seed));\n }\n\n // initialize a seeded pseudo random number generator with config's random seed\n setSeed(randomSeed);\n\n // wrapper function so the rng can be updated via generator\n function rng() {\n return random();\n }\n return rng;\n}", "import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { isMatrix, isNumber } from '../../utils/is.js';\nimport { createRng } from './util/seededRNG.js';\nvar name = 'pickRandom';\nvar dependencies = ['typed', 'config', '?on'];\nexport var createPickRandom = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n on\n } = _ref;\n // seeded pseudo random number generator\n var rng = createRng(config.randomSeed);\n if (on) {\n on('config', function (curr, prev) {\n if (curr.randomSeed !== prev.randomSeed) {\n rng = createRng(curr.randomSeed);\n }\n });\n }\n\n /**\n * Random pick one or more values from a one dimensional array.\n * Array elements are picked using a random function with uniform or weighted distribution.\n *\n * Syntax:\n *\n * math.pickRandom(array)\n * math.pickRandom(array, number)\n * math.pickRandom(array, weights)\n * math.pickRandom(array, number, weights)\n * math.pickRandom(array, weights, number)\n * math.pickRandom(array, { weights, number, elementWise })\n *\n * Examples:\n *\n * math.pickRandom([3, 6, 12, 2]) // returns one of the values in the array\n * math.pickRandom([3, 6, 12, 2], 2) // returns an array of two of the values in the array\n * math.pickRandom([3, 6, 12, 2], { number: 2 }) // returns an array of two of the values in the array\n * math.pickRandom([3, 6, 12, 2], [1, 3, 2, 1]) // returns one of the values in the array with weighted distribution\n * math.pickRandom([3, 6, 12, 2], 2, [1, 3, 2, 1]) // returns an array of two of the values in the array with weighted distribution\n * math.pickRandom([3, 6, 12, 2], [1, 3, 2, 1], 2) // returns an array of two of the values in the array with weighted distribution\n *\n * math.pickRandom([{x: 1.0, y: 2.0}, {x: 1.1, y: 2.0}], { elementWise: false })\n * // returns one of the items in the array\n *\n * See also:\n *\n * random, randomInt\n *\n * @param {Array | Matrix} array A one dimensional array\n * @param {Int} number An int or float\n * @param {Array | Matrix} weights An array of ints or floats\n * @return {number | Array} Returns a single random value from array when number is undefined.\n * Returns an array with the configured number of elements when number is defined.\n */\n return typed(name, {\n 'Array | Matrix': function Array__Matrix(possibles) {\n return _pickRandom(possibles, {});\n },\n 'Array | Matrix, Object': function Array__Matrix_Object(possibles, options) {\n return _pickRandom(possibles, options);\n },\n 'Array | Matrix, number': function Array__Matrix_number(possibles, number) {\n return _pickRandom(possibles, {\n number\n });\n },\n 'Array | Matrix, Array | Matrix': function Array__Matrix_Array__Matrix(possibles, weights) {\n return _pickRandom(possibles, {\n weights\n });\n },\n 'Array | Matrix, Array | Matrix, number': function Array__Matrix_Array__Matrix_number(possibles, weights, number) {\n return _pickRandom(possibles, {\n number,\n weights\n });\n },\n 'Array | Matrix, number, Array | Matrix': function Array__Matrix_number_Array__Matrix(possibles, number, weights) {\n return _pickRandom(possibles, {\n number,\n weights\n });\n }\n });\n\n /**\n * @param {Array | Matrix} possibles\n * @param {{\n * number?: number,\n * weights?: Array | Matrix,\n * elementWise: boolean\n * }} options\n * @returns {number | Array}\n * @private\n */\n function _pickRandom(possibles, _ref2) {\n var {\n number,\n weights,\n elementWise = true\n } = _ref2;\n var single = typeof number === 'undefined';\n if (single) {\n number = 1;\n }\n var createMatrix = isMatrix(possibles) ? possibles.create : isMatrix(weights) ? weights.create : null;\n possibles = possibles.valueOf(); // get Array\n if (weights) {\n weights = weights.valueOf(); // get Array\n }\n if (elementWise === true) {\n possibles = flatten(possibles);\n weights = flatten(weights);\n }\n var totalWeights = 0;\n if (typeof weights !== 'undefined') {\n if (weights.length !== possibles.length) {\n throw new Error('Weights must have the same length as possibles');\n }\n for (var i = 0, len = weights.length; i < len; i++) {\n if (!isNumber(weights[i]) || weights[i] < 0) {\n throw new Error('Weights must be an array of positive numbers');\n }\n totalWeights += weights[i];\n }\n }\n var length = possibles.length;\n var result = [];\n var pick;\n while (result.length < number) {\n if (typeof weights === 'undefined') {\n pick = possibles[Math.floor(rng() * length)];\n } else {\n var randKey = rng() * totalWeights;\n for (var _i = 0, _len = possibles.length; _i < _len; _i++) {\n randKey -= weights[_i];\n if (randKey < 0) {\n pick = possibles[_i];\n break;\n }\n }\n }\n result.push(pick);\n }\n return single ? result[0] : createMatrix ? createMatrix(result) : result;\n }\n});", "/**\n * This is a util function for generating a random matrix recursively.\n * @param {number[]} size\n * @param {function} random\n * @returns {Array}\n */\nexport function randomMatrix(size, random) {\n var data = [];\n size = size.slice(0);\n if (size.length > 1) {\n for (var i = 0, length = size.shift(); i < length; i++) {\n data.push(randomMatrix(size, random));\n }\n } else {\n for (var _i = 0, _length = size.shift(); _i < _length; _i++) {\n data.push(random());\n }\n }\n return data;\n}", "import { factory } from '../../utils/factory.js';\nimport { isMatrix } from '../../utils/is.js';\nimport { createRng } from './util/seededRNG.js';\nimport { randomMatrix } from './util/randomMatrix.js';\nvar name = 'random';\nvar dependencies = ['typed', 'config', '?on'];\nexport var createRandom = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n on\n } = _ref;\n // seeded pseudo random number generator\n var rng = createRng(config.randomSeed);\n if (on) {\n on('config', function (curr, prev) {\n if (curr.randomSeed !== prev.randomSeed) {\n rng = createRng(curr.randomSeed);\n }\n });\n }\n\n /**\n * Return a random number larger or equal to `min` and smaller than `max`\n * using a uniform distribution.\n *\n * Syntax:\n *\n * math.random() // generate a random number between 0 and 1\n * math.random(max) // generate a random number between 0 and max\n * math.random(min, max) // generate a random number between min and max\n * math.random(size) // generate a matrix with random numbers between 0 and 1\n * math.random(size, max) // generate a matrix with random numbers between 0 and max\n * math.random(size, min, max) // generate a matrix with random numbers between min and max\n *\n * Examples:\n *\n * math.random() // returns a random number between 0 and 1\n * math.random(100) // returns a random number between 0 and 100\n * math.random(30, 40) // returns a random number between 30 and 40\n * math.random([2, 3]) // returns a 2x3 matrix with random numbers between 0 and 1\n *\n * See also:\n *\n * randomInt, pickRandom\n *\n * @param {Array | Matrix} [size] If provided, an array or matrix with given\n * size and filled with random values is returned\n * @param {number} [min] Minimum boundary for the random value, included\n * @param {number} [max] Maximum boundary for the random value, excluded\n * @return {number | Array | Matrix} A random number\n */\n return typed(name, {\n '': () => _random(0, 1),\n number: max => _random(0, max),\n 'number, number': (min, max) => _random(min, max),\n 'Array | Matrix': size => _randomMatrix(size, 0, 1),\n 'Array | Matrix, number': (size, max) => _randomMatrix(size, 0, max),\n 'Array | Matrix, number, number': (size, min, max) => _randomMatrix(size, min, max)\n });\n function _randomMatrix(size, min, max) {\n var res = randomMatrix(size.valueOf(), () => _random(min, max));\n return isMatrix(size) ? size.create(res, 'number') : res;\n }\n function _random(min, max) {\n return min + rng() * (max - min);\n }\n});\n\n// number only implementation of random, no matrix support\n// TODO: there is quite some duplicate code in both createRandom and createRandomNumber, can we improve that?\nexport var createRandomNumber = /* #__PURE__ */factory(name, ['typed', 'config', '?on'], _ref2 => {\n var {\n typed,\n config,\n on,\n matrix\n } = _ref2;\n // seeded pseudo random number generator1\n var rng = createRng(config.randomSeed);\n if (on) {\n on('config', function (curr, prev) {\n if (curr.randomSeed !== prev.randomSeed) {\n rng = createRng(curr.randomSeed);\n }\n });\n }\n return typed(name, {\n '': () => _random(0, 1),\n number: max => _random(0, max),\n 'number, number': (min, max) => _random(min, max)\n });\n function _random(min, max) {\n return min + rng() * (max - min);\n }\n});", "import { factory } from '../../utils/factory.js';\nimport { randomMatrix } from './util/randomMatrix.js';\nimport { createRng } from './util/seededRNG.js';\nimport { isMatrix } from '../../utils/is.js';\nvar name = 'randomInt';\nvar dependencies = ['typed', 'config', '?on'];\nexport var createRandomInt = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n on\n } = _ref;\n // seeded pseudo random number generator\n var rng = createRng(config.randomSeed);\n if (on) {\n on('config', function (curr, prev) {\n if (curr.randomSeed !== prev.randomSeed) {\n rng = createRng(curr.randomSeed);\n }\n });\n }\n\n /**\n * Return a random integer number larger or equal to `min` and smaller than `max`\n * using a uniform distribution.\n *\n * Syntax:\n *\n * math.randomInt() // generate a random integer between 0 and 1\n * math.randomInt(max) // generate a random integer between 0 and max\n * math.randomInt(min, max) // generate a random integer between min and max\n * math.randomInt(size) // generate a matrix with random integer between 0 and 1\n * math.randomInt(size, max) // generate a matrix with random integer between 0 and max\n * math.randomInt(size, min, max) // generate a matrix with random integer between min and max\n *\n * Examples:\n *\n * math.randomInt(100) // returns a random integer between 0 and 100\n * math.randomInt(30, 40) // returns a random integer between 30 and 40\n * math.randomInt([2, 3]) // returns a 2x3 matrix with random integers between 0 and 1\n *\n * See also:\n *\n * random, pickRandom\n *\n * @param {Array | Matrix} [size] If provided, an array or matrix with given\n * size and filled with random values is returned\n * @param {number} [min] Minimum boundary for the random value, included\n * @param {number} [max] Maximum boundary for the random value, excluded\n * @return {number | Array | Matrix} A random integer value\n */\n return typed(name, {\n '': () => _randomInt(0, 1),\n number: max => _randomInt(0, max),\n 'number, number': (min, max) => _randomInt(min, max),\n 'Array | Matrix': size => _randomIntMatrix(size, 0, 1),\n 'Array | Matrix, number': (size, max) => _randomIntMatrix(size, 0, max),\n 'Array | Matrix, number, number': (size, min, max) => _randomIntMatrix(size, min, max)\n });\n function _randomIntMatrix(size, min, max) {\n var res = randomMatrix(size.valueOf(), () => _randomInt(min, max));\n return isMatrix(size) ? size.create(res, 'number') : res;\n }\n function _randomInt(min, max) {\n return Math.floor(min + rng() * (max - min));\n }\n});", "import { factory } from '../../utils/factory.js';\nimport { isNumber } from '../../utils/is.js';\nvar name = 'stirlingS2';\nvar dependencies = ['typed', 'addScalar', 'subtractScalar', 'multiplyScalar', 'divideScalar', 'pow', 'factorial', 'combinations', 'isNegative', 'isInteger', 'number', '?bignumber', 'larger'];\nexport var createStirlingS2 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n addScalar,\n subtractScalar,\n multiplyScalar,\n divideScalar,\n pow,\n factorial,\n combinations,\n isNegative,\n isInteger,\n number,\n bignumber,\n larger\n } = _ref;\n var smallCache = [];\n var bigCache = [];\n /**\n * The Stirling numbers of the second kind, counts the number of ways to partition\n * a set of n labelled objects into k nonempty unlabelled subsets.\n * stirlingS2 only takes integer arguments.\n * The following condition must be enforced: k <= n.\n *\n * If n = k or k = 1 <= n, then s(n,k) = 1\n * If k = 0 < n, then s(n,k) = 0\n *\n * Note that if either n or k is supplied as a BigNumber, the result will be\n * as well.\n *\n * Syntax:\n *\n * math.stirlingS2(n, k)\n *\n * Examples:\n *\n * math.stirlingS2(5, 3) //returns 25\n *\n * See also:\n *\n * bellNumbers\n *\n * @param {Number | BigNumber} n Total number of objects in the set\n * @param {Number | BigNumber} k Number of objects in the subset\n * @return {Number | BigNumber} S(n,k)\n */\n return typed(name, {\n 'number | BigNumber, number | BigNumber': function number__BigNumber_number__BigNumber(n, k) {\n if (!isInteger(n) || isNegative(n) || !isInteger(k) || isNegative(k)) {\n throw new TypeError('Non-negative integer value expected in function stirlingS2');\n } else if (larger(k, n)) {\n throw new TypeError('k must be less than or equal to n in function stirlingS2');\n }\n var big = !(isNumber(n) && isNumber(k));\n var cache = big ? bigCache : smallCache;\n var make = big ? bignumber : number;\n var nn = number(n);\n var nk = number(k);\n /* See if we already have the value: */\n if (cache[nn] && cache[nn].length > nk) {\n return cache[nn][nk];\n }\n /* Fill the cache */\n for (var m = 0; m <= nn; ++m) {\n if (!cache[m]) {\n cache[m] = [m === 0 ? make(1) : make(0)];\n }\n if (m === 0) continue;\n var row = cache[m];\n var prev = cache[m - 1];\n for (var i = row.length; i <= m && i <= nk; ++i) {\n if (i === m) {\n row[i] = 1;\n } else {\n row[i] = addScalar(multiplyScalar(make(i), prev[i]), prev[i - 1]);\n }\n }\n }\n return cache[nn][nk];\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'bellNumbers';\nvar dependencies = ['typed', 'addScalar', 'isNegative', 'isInteger', 'stirlingS2'];\nexport var createBellNumbers = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n addScalar,\n isNegative,\n isInteger,\n stirlingS2\n } = _ref;\n /**\n * The Bell Numbers count the number of partitions of a set. A partition is a pairwise disjoint subset of S whose union is S.\n * bellNumbers only takes integer arguments.\n * The following condition must be enforced: n >= 0\n *\n * Syntax:\n *\n * math.bellNumbers(n)\n *\n * Examples:\n *\n * math.bellNumbers(3) // returns 5\n * math.bellNumbers(8) // returns 4140\n *\n * See also:\n *\n * stirlingS2\n *\n * @param {Number | BigNumber} n Total number of objects in the set\n * @return {Number | BigNumber} B(n)\n */\n return typed(name, {\n 'number | BigNumber': function number__BigNumber(n) {\n if (!isInteger(n) || isNegative(n)) {\n throw new TypeError('Non-negative integer value expected in function bellNumbers');\n }\n\n // Sum (k=0, n) S(n,k).\n var result = 0;\n for (var i = 0; i <= n; i++) {\n result = addScalar(result, stirlingS2(n, i));\n }\n return result;\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'catalan';\nvar dependencies = ['typed', 'addScalar', 'divideScalar', 'multiplyScalar', 'combinations', 'isNegative', 'isInteger'];\nexport var createCatalan = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n addScalar,\n divideScalar,\n multiplyScalar,\n combinations,\n isNegative,\n isInteger\n } = _ref;\n /**\n * The Catalan Numbers enumerate combinatorial structures of many different types.\n * catalan only takes integer arguments.\n * The following condition must be enforced: n >= 0\n *\n * Syntax:\n *\n * math.catalan(n)\n *\n * Examples:\n *\n * math.catalan(3) // returns 5\n * math.catalan(8) // returns 1430\n *\n * See also:\n *\n * bellNumbers\n *\n * @param {Number | BigNumber} n nth Catalan number\n * @return {Number | BigNumber} Cn(n)\n */\n return typed(name, {\n 'number | BigNumber': function number__BigNumber(n) {\n if (!isInteger(n) || isNegative(n)) {\n throw new TypeError('Non-negative integer value expected in function catalan');\n }\n return divideScalar(combinations(multiplyScalar(n, 2), n), addScalar(n, 1));\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'composition';\nvar dependencies = ['typed', 'addScalar', 'combinations', 'isNegative', 'isPositive', 'isInteger', 'larger'];\nexport var createComposition = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n addScalar,\n combinations,\n isPositive,\n isNegative,\n isInteger,\n larger\n } = _ref;\n /**\n * The composition counts of n into k parts.\n *\n * composition only takes integer arguments.\n * The following condition must be enforced: k <= n.\n *\n * Syntax:\n *\n * math.composition(n, k)\n *\n * Examples:\n *\n * math.composition(5, 3) // returns 6\n *\n * See also:\n *\n * combinations\n *\n * @param {Number | BigNumber} n Total number of objects in the set\n * @param {Number | BigNumber} k Number of objects in the subset\n * @return {Number | BigNumber} Returns the composition counts of n into k parts.\n */\n return typed(name, {\n 'number | BigNumber, number | BigNumber': function number__BigNumber_number__BigNumber(n, k) {\n if (!isInteger(n) || !isPositive(n) || !isInteger(k) || !isPositive(k)) {\n throw new TypeError('Positive integer value expected in function composition');\n } else if (larger(k, n)) {\n throw new TypeError('k must be less than or equal to n in function composition');\n }\n return combinations(addScalar(n, -1), addScalar(k, -1));\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'leafCount';\nvar dependencies = ['parse', 'typed'];\nexport var createLeafCount = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n parse,\n typed\n } = _ref;\n // This does the real work, but we don't have to recurse through\n // a typed call if we separate it out\n function countLeaves(node) {\n var count = 0;\n node.forEach(n => {\n count += countLeaves(n);\n });\n return count || 1;\n }\n\n /**\n * Gives the number of \"leaf nodes\" in the parse tree of the given expression\n * A leaf node is one that has no subexpressions, essentially either a\n * symbol or a constant. Note that `5!` has just one leaf, the '5'; the\n * unary factorial operator does not add a leaf. On the other hand,\n * function symbols do add leaves, so `sin(x)/cos(x)` has four leaves.\n *\n * The `simplify()` function should generally not increase the `leafCount()`\n * of an expression, although currently there is no guarantee that it never\n * does so. In many cases, `simplify()` reduces the leaf count.\n *\n * Syntax:\n *\n * math.leafCount(expr)\n *\n * Examples:\n *\n * math.leafCount('x') // 1\n * math.leafCount(math.parse('a*d-b*c')) // 4\n * math.leafCount('[a,b;c,d][0,1]') // 6\n *\n * See also:\n *\n * simplify\n *\n * @param {Node|string} expr The expression to count the leaves of\n *\n * @return {number} The number of leaves of `expr`\n *\n */\n return typed(name, {\n Node: function Node(expr) {\n return countLeaves(expr);\n }\n });\n});", "import { isConstantNode, isFunctionNode, isOperatorNode, isParenthesisNode } from '../../../utils/is.js';\nexport { isConstantNode, isSymbolNode as isVariableNode } from '../../../utils/is.js';\nexport function isNumericNode(x) {\n return isConstantNode(x) || isOperatorNode(x) && x.isUnary() && isConstantNode(x.args[0]);\n}\nexport function isConstantExpression(x) {\n if (isConstantNode(x)) {\n // Basic Constant types\n return true;\n }\n if ((isFunctionNode(x) || isOperatorNode(x)) && x.args.every(isConstantExpression)) {\n // Can be constant depending on arguments\n return true;\n }\n if (isParenthesisNode(x) && isConstantExpression(x.content)) {\n // Parenthesis are transparent\n return true;\n }\n return false; // Probably missing some edge cases\n}", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport { isFunctionNode, isOperatorNode, isParenthesisNode } from '../../../utils/is.js';\nimport { factory } from '../../../utils/factory.js';\nimport { hasOwnProperty } from '../../../utils/object.js';\nvar name = 'simplifyUtil';\nvar dependencies = ['FunctionNode', 'OperatorNode', 'SymbolNode'];\nexport var createUtil = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n FunctionNode,\n OperatorNode,\n SymbolNode\n } = _ref;\n // TODO commutative/associative properties rely on the arguments\n // e.g. multiply is not commutative for matrices\n // The properties should be calculated from an argument to simplify, or possibly something in math.config\n // the other option is for typed() to specify a return type so that we can evaluate the type of arguments\n\n /* So that properties of an operator fit on one line: */\n var T = true;\n var F = false;\n var defaultName = 'defaultF';\n var defaultContext = {\n /* */add: {\n trivial: T,\n total: T,\n commutative: T,\n associative: T\n },\n /**/unaryPlus: {\n trivial: T,\n total: T,\n commutative: T,\n associative: T\n },\n /* */subtract: {\n trivial: F,\n total: T,\n commutative: F,\n associative: F\n },\n /* */multiply: {\n trivial: T,\n total: T,\n commutative: T,\n associative: T\n },\n /* */divide: {\n trivial: F,\n total: T,\n commutative: F,\n associative: F\n },\n /* */paren: {\n trivial: T,\n total: T,\n commutative: T,\n associative: F\n },\n /* */defaultF: {\n trivial: F,\n total: T,\n commutative: F,\n associative: F\n }\n };\n var realContext = {\n divide: {\n total: F\n },\n log: {\n total: F\n }\n };\n var positiveContext = {\n subtract: {\n total: F\n },\n abs: {\n trivial: T\n },\n log: {\n total: T\n }\n };\n function hasProperty(nodeOrName, property) {\n var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultContext;\n var name = defaultName;\n if (typeof nodeOrName === 'string') {\n name = nodeOrName;\n } else if (isOperatorNode(nodeOrName)) {\n name = nodeOrName.fn.toString();\n } else if (isFunctionNode(nodeOrName)) {\n name = nodeOrName.name;\n } else if (isParenthesisNode(nodeOrName)) {\n name = 'paren';\n }\n if (hasOwnProperty(context, name)) {\n var properties = context[name];\n if (hasOwnProperty(properties, property)) {\n return properties[property];\n }\n if (hasOwnProperty(defaultContext, name)) {\n return defaultContext[name][property];\n }\n }\n if (hasOwnProperty(context, defaultName)) {\n var _properties = context[defaultName];\n if (hasOwnProperty(_properties, property)) {\n return _properties[property];\n }\n return defaultContext[defaultName][property];\n }\n /* name not found in context and context has no global default */\n /* So use default context. */\n if (hasOwnProperty(defaultContext, name)) {\n var _properties2 = defaultContext[name];\n if (hasOwnProperty(_properties2, property)) {\n return _properties2[property];\n }\n }\n return defaultContext[defaultName][property];\n }\n function isCommutative(node) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultContext;\n return hasProperty(node, 'commutative', context);\n }\n function isAssociative(node) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultContext;\n return hasProperty(node, 'associative', context);\n }\n\n /**\n * Merge the given contexts, with primary overriding secondary\n * wherever they might conflict\n */\n function mergeContext(primary, secondary) {\n var merged = _objectSpread({}, primary);\n for (var prop in secondary) {\n if (hasOwnProperty(primary, prop)) {\n merged[prop] = _objectSpread(_objectSpread({}, secondary[prop]), primary[prop]);\n } else {\n merged[prop] = secondary[prop];\n }\n }\n return merged;\n }\n\n /**\n * Flatten all associative operators in an expression tree.\n * Assumes parentheses have already been removed.\n */\n function flatten(node, context) {\n if (!node.args || node.args.length === 0) {\n return node;\n }\n node.args = allChildren(node, context);\n for (var i = 0; i < node.args.length; i++) {\n flatten(node.args[i], context);\n }\n }\n\n /**\n * Get the children of a node as if it has been flattened.\n * TODO implement for FunctionNodes\n */\n function allChildren(node, context) {\n var op;\n var children = [];\n var _findChildren = function findChildren(node) {\n for (var i = 0; i < node.args.length; i++) {\n var child = node.args[i];\n if (isOperatorNode(child) && op === child.op) {\n _findChildren(child);\n } else {\n children.push(child);\n }\n }\n };\n if (isAssociative(node, context)) {\n op = node.op;\n _findChildren(node);\n return children;\n } else {\n return node.args;\n }\n }\n\n /**\n * Unflatten all flattened operators to a right-heavy binary tree.\n */\n function unflattenr(node, context) {\n if (!node.args || node.args.length === 0) {\n return;\n }\n var makeNode = createMakeNodeFunction(node);\n var l = node.args.length;\n for (var i = 0; i < l; i++) {\n unflattenr(node.args[i], context);\n }\n if (l > 2 && isAssociative(node, context)) {\n var curnode = node.args.pop();\n while (node.args.length > 0) {\n curnode = makeNode([node.args.pop(), curnode]);\n }\n node.args = curnode.args;\n }\n }\n\n /**\n * Unflatten all flattened operators to a left-heavy binary tree.\n */\n function unflattenl(node, context) {\n if (!node.args || node.args.length === 0) {\n return;\n }\n var makeNode = createMakeNodeFunction(node);\n var l = node.args.length;\n for (var i = 0; i < l; i++) {\n unflattenl(node.args[i], context);\n }\n if (l > 2 && isAssociative(node, context)) {\n var curnode = node.args.shift();\n while (node.args.length > 0) {\n curnode = makeNode([curnode, node.args.shift()]);\n }\n node.args = curnode.args;\n }\n }\n function createMakeNodeFunction(node) {\n if (isOperatorNode(node)) {\n return function (args) {\n try {\n return new OperatorNode(node.op, node.fn, args, node.implicit);\n } catch (err) {\n console.error(err);\n return [];\n }\n };\n } else {\n return function (args) {\n return new FunctionNode(new SymbolNode(node.name), args);\n };\n }\n }\n return {\n createMakeNodeFunction,\n hasProperty,\n isCommutative,\n isAssociative,\n mergeContext,\n flatten,\n allChildren,\n unflattenr,\n unflattenl,\n defaultContext,\n realContext,\n positiveContext\n };\n});", "import { isParenthesisNode } from '../../utils/is.js';\nimport { isConstantNode, isVariableNode, isNumericNode, isConstantExpression } from './simplify/wildcards.js';\nimport { factory } from '../../utils/factory.js';\nimport { createUtil } from './simplify/util.js';\nimport { hasOwnProperty } from '../../utils/object.js';\nimport { createEmptyMap, createMap } from '../../utils/map.js';\nvar name = 'simplify';\nvar dependencies = ['typed', 'parse', 'equal', 'resolve', 'simplifyConstant', 'simplifyCore', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'ParenthesisNode', 'SymbolNode'];\nexport var createSimplify = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n parse,\n equal,\n resolve,\n simplifyConstant,\n simplifyCore,\n AccessorNode,\n ArrayNode,\n ConstantNode,\n FunctionNode,\n IndexNode,\n ObjectNode,\n OperatorNode,\n ParenthesisNode,\n SymbolNode\n } = _ref;\n var {\n hasProperty,\n isCommutative,\n isAssociative,\n mergeContext,\n flatten,\n unflattenr,\n unflattenl,\n createMakeNodeFunction,\n defaultContext,\n realContext,\n positiveContext\n } = createUtil({\n FunctionNode,\n OperatorNode,\n SymbolNode\n });\n\n /**\n * Simplify an expression tree.\n *\n * A list of rules are applied to an expression, repeating over the list until\n * no further changes are made.\n * It's possible to pass a custom set of rules to the function as second\n * argument. A rule can be specified as an object, string, or function:\n *\n * const rules = [\n * { l: 'n1*n3 + n2*n3', r: '(n1+n2)*n3' },\n * 'n1*n3 + n2*n3 -> (n1+n2)*n3',\n * function (node) {\n * // ... return a new node or return the node unchanged\n * return node\n * }\n * ]\n *\n * String and object rules consist of a left and right pattern. The left is\n * used to match against the expression and the right determines what matches\n * are replaced with. The main difference between a pattern and a normal\n * expression is that variables starting with the following characters are\n * interpreted as wildcards:\n *\n * - 'n' - Matches any node [Node]\n * - 'c' - Matches a constant literal (5 or 3.2) [ConstantNode]\n * - 'cl' - Matches a constant literal; same as c [ConstantNode]\n * - 'cd' - Matches a decimal literal (5 or -3.2) [ConstantNode or unaryMinus wrapping a ConstantNode]\n * - 'ce' - Matches a constant expression (-5 or \u221A3) [Expressions consisting of only ConstantNodes, functions, and operators]\n * - 'v' - Matches a variable; anything not matched by c (-5 or x) [Node that is not a ConstantNode]\n * - 'vl' - Matches a variable literal (x or y) [SymbolNode]\n * - 'vd' - Matches a non-decimal expression; anything not matched by cd (x or \u221A3) [Node that is not a ConstantNode or unaryMinus that is wrapping a ConstantNode]\n * - 've' - Matches a variable expression; anything not matched by ce (x or 2x) [Expressions that contain a SymbolNode or other non-constant term]\n *\n * The default list of rules is exposed on the function as `simplify.rules`\n * and can be used as a basis to built a set of custom rules. Note that since\n * the `simplifyCore` function is in the default list of rules, by default\n * simplify will convert any function calls in the expression that have\n * operator equivalents to their operator forms.\n *\n * To specify a rule as a string, separate the left and right pattern by '->'\n * When specifying a rule as an object, the following keys are meaningful:\n * - l - the left pattern\n * - r - the right pattern\n * - s - in lieu of l and r, the string form that is broken at -> to give them\n * - repeat - whether to repeat this rule until the expression stabilizes\n * - assuming - gives a context object, as in the 'context' option to\n * simplify. Every property in the context object must match the current\n * context in order, or else the rule will not be applied.\n * - imposeContext - gives a context object, as in the 'context' option to\n * simplify. Any settings specified will override the incoming context\n * for all matches of this rule.\n *\n * For more details on the theory, see:\n *\n * - [Strategies for simplifying math expressions (Stackoverflow)](https://stackoverflow.com/questions/7540227/strategies-for-simplifying-math-expressions)\n * - [Symbolic computation - Simplification (Wikipedia)](https://en.wikipedia.org/wiki/Symbolic_computation#Simplification)\n *\n * An optional `options` argument can be passed as last argument of `simplify`.\n * Currently available options (defaults in parentheses):\n * - `consoleDebug` (false): whether to write the expression being simplified\n * and any changes to it, along with the rule responsible, to console\n * - `context` (simplify.defaultContext): an object giving properties of\n * each operator, which determine what simplifications are allowed. The\n * currently meaningful properties are commutative, associative,\n * total (whether the operation is defined for all arguments), and\n * trivial (whether the operation applied to a single argument leaves\n * that argument unchanged). The default context is very permissive and\n * allows almost all simplifications. Only properties differing from\n * the default need to be specified; the default context is used as a\n * fallback. Additional contexts `simplify.realContext` and\n * `simplify.positiveContext` are supplied to cause simplify to perform\n * just simplifications guaranteed to preserve all values of the expression\n * assuming all variables and subexpressions are real numbers or\n * positive real numbers, respectively. (Note that these are in some cases\n * more restrictive than the default context; for example, the default\n * context will allow `x/x` to simplify to 1, whereas\n * `simplify.realContext` will not, as `0/0` is not equal to 1.)\n * - `exactFractions` (true): whether to try to convert all constants to\n * exact rational numbers.\n * - `fractionsLimit` (10000): when `exactFractions` is true, constants will\n * be expressed as fractions only when both numerator and denominator\n * are smaller than `fractionsLimit`.\n *\n * Syntax:\n *\n * math.simplify(expr)\n * math.simplify(expr, rules)\n * math.simplify(expr, rules)\n * math.simplify(expr, rules, scope)\n * math.simplify(expr, rules, scope, options)\n * math.simplify(expr, scope)\n * math.simplify(expr, scope, options)\n *\n * Examples:\n *\n * math.simplify('2 * 1 * x ^ (2 - 1)') // Node \"2 * x\"\n * math.simplify('2 * 3 * x', {x: 4}) // Node \"24\"\n * const f = math.parse('2 * 1 * x ^ (2 - 1)')\n * math.simplify(f) // Node \"2 * x\"\n * math.simplify('0.4 * x', {}, {exactFractions: true}) // Node \"x * 2 / 5\"\n * math.simplify('0.4 * x', {}, {exactFractions: false}) // Node \"0.4 * x\"\n *\n * See also:\n *\n * simplifyCore, derivative, evaluate, parse, rationalize, resolve\n *\n * @param {Node | string} expr\n * The expression to be simplified\n * @param {SimplifyRule[]} [rules]\n * Optional list with custom rules\n * @param {Object} [scope] Optional scope with variables\n * @param {SimplifyOptions} [options] Optional configuration settings\n * @return {Node} Returns the simplified form of `expr`\n */\n typed.addConversion({\n from: 'Object',\n to: 'Map',\n convert: createMap\n });\n var simplify = typed('simplify', {\n Node: _simplify,\n 'Node, Map': (expr, scope) => _simplify(expr, false, scope),\n 'Node, Map, Object': (expr, scope, options) => _simplify(expr, false, scope, options),\n 'Node, Array': _simplify,\n 'Node, Array, Map': _simplify,\n 'Node, Array, Map, Object': _simplify\n });\n typed.removeConversion({\n from: 'Object',\n to: 'Map',\n convert: createMap\n });\n simplify.defaultContext = defaultContext;\n simplify.realContext = realContext;\n simplify.positiveContext = positiveContext;\n function removeParens(node) {\n return node.transform(function (node) {\n return isParenthesisNode(node) ? removeParens(node.content) : node;\n });\n }\n\n // All constants that are allowed in rules\n var SUPPORTED_CONSTANTS = {\n true: true,\n false: true,\n e: true,\n i: true,\n Infinity: true,\n LN2: true,\n LN10: true,\n LOG2E: true,\n LOG10E: true,\n NaN: true,\n phi: true,\n pi: true,\n SQRT1_2: true,\n SQRT2: true,\n tau: true\n // null: false,\n // undefined: false,\n // version: false,\n };\n\n // Array of strings, used to build the ruleSet.\n // Each l (left side) and r (right side) are parsed by\n // the expression parser into a node tree.\n // Left hand sides are matched to subtrees within the\n // expression to be parsed and replaced with the right\n // hand side.\n // TODO: Add support for constraints on constants (either in the form of a '=' expression or a callback [callback allows things like comparing symbols alphabetically])\n // To evaluate lhs constants for rhs constants, use: { l: 'c1+c2', r: 'c3', evaluate: 'c3 = c1 + c2' }. Multiple assignments are separated by ';' in block format.\n // It is possible to get into an infinite loop with conflicting rules\n simplify.rules = [simplifyCore,\n // { l: 'n+0', r: 'n' }, // simplifyCore\n // { l: 'n^0', r: '1' }, // simplifyCore\n // { l: '0*n', r: '0' }, // simplifyCore\n // { l: 'n/n', r: '1'}, // simplifyCore\n // { l: 'n^1', r: 'n' }, // simplifyCore\n // { l: '+n1', r:'n1' }, // simplifyCore\n // { l: 'n--n1', r:'n+n1' }, // simplifyCore\n {\n l: 'log(e)',\n r: '1'\n },\n // temporary rules\n // Note initially we tend constants to the right because like-term\n // collection prefers the left, and we would rather collect nonconstants\n {\n s: 'n-n1 -> n+-n1',\n // temporarily replace 'subtract' so we can further flatten the 'add' operator\n assuming: {\n subtract: {\n total: true\n }\n }\n }, {\n s: 'n-n -> 0',\n // partial alternative when we can't always subtract\n assuming: {\n subtract: {\n total: false\n }\n }\n }, {\n s: '-(cl*v) -> v * (-cl)',\n // make non-constant terms positive\n assuming: {\n multiply: {\n commutative: true\n },\n subtract: {\n total: true\n }\n }\n }, {\n s: '-(cl*v) -> (-cl) * v',\n // non-commutative version, part 1\n assuming: {\n multiply: {\n commutative: false\n },\n subtract: {\n total: true\n }\n }\n }, {\n s: '-(v*cl) -> v * (-cl)',\n // non-commutative version, part 2\n assuming: {\n multiply: {\n commutative: false\n },\n subtract: {\n total: true\n }\n }\n }, {\n l: '-(n1/n2)',\n r: '-n1/n2'\n }, {\n l: '-v',\n r: 'v * (-1)'\n },\n // finish making non-constant terms positive\n {\n l: '(n1 + n2)*(-1)',\n r: 'n1*(-1) + n2*(-1)',\n repeat: true\n },\n // expand negations to achieve as much sign cancellation as possible\n {\n l: 'n/n1^n2',\n r: 'n*n1^-n2'\n },\n // temporarily replace 'divide' so we can further flatten the 'multiply' operator\n {\n l: 'n/n1',\n r: 'n*n1^-1'\n }, {\n s: '(n1*n2)^n3 -> n1^n3 * n2^n3',\n assuming: {\n multiply: {\n commutative: true\n }\n }\n }, {\n s: '(n1*n2)^(-1) -> n2^(-1) * n1^(-1)',\n assuming: {\n multiply: {\n commutative: false\n }\n }\n },\n // expand nested exponentiation\n {\n s: '(n ^ n1) ^ n2 -> n ^ (n1 * n2)',\n assuming: {\n divide: {\n total: true\n }\n } // 1/(1/n) = n needs 1/n to exist\n },\n // collect like factors; into a sum, only do this for nonconstants\n {\n l: ' vd * ( vd * n1 + n2)',\n r: 'vd^2 * n1 + vd * n2'\n }, {\n s: ' vd * (vd^n4 * n1 + n2) -> vd^(1+n4) * n1 + vd * n2',\n assuming: {\n divide: {\n total: true\n }\n } // v*1/v = v^(1+-1) needs 1/v\n }, {\n s: 'vd^n3 * ( vd * n1 + n2) -> vd^(n3+1) * n1 + vd^n3 * n2',\n assuming: {\n divide: {\n total: true\n }\n }\n }, {\n s: 'vd^n3 * (vd^n4 * n1 + n2) -> vd^(n3+n4) * n1 + vd^n3 * n2',\n assuming: {\n divide: {\n total: true\n }\n }\n }, {\n l: 'n*n',\n r: 'n^2'\n }, {\n s: 'n * n^n1 -> n^(n1+1)',\n assuming: {\n divide: {\n total: true\n }\n } // n*1/n = n^(-1+1) needs 1/n\n }, {\n s: 'n^n1 * n^n2 -> n^(n1+n2)',\n assuming: {\n divide: {\n total: true\n }\n } // ditto for n^2*1/n^2\n },\n // Unfortunately, to deal with more complicated cancellations, it\n // becomes necessary to simplify constants twice per pass. It's not\n // terribly expensive compared to matching rules, so this should not\n // pose a performance problem.\n simplifyConstant,\n // First: before collecting like terms\n\n // collect like terms\n {\n s: 'n+n -> 2*n',\n assuming: {\n add: {\n total: true\n }\n } // 2 = 1 + 1 needs to exist\n }, {\n l: 'n+-n',\n r: '0'\n }, {\n l: 'vd*n + vd',\n r: 'vd*(n+1)'\n },\n // NOTE: leftmost position is special:\n {\n l: 'n3*n1 + n3*n2',\n r: 'n3*(n1+n2)'\n },\n // All sub-monomials tried there.\n {\n l: 'n3^(-n4)*n1 + n3 * n2',\n r: 'n3^(-n4)*(n1 + n3^(n4+1) *n2)'\n }, {\n l: 'n3^(-n4)*n1 + n3^n5 * n2',\n r: 'n3^(-n4)*(n1 + n3^(n4+n5)*n2)'\n },\n // noncommutative additional cases (term collection & factoring)\n {\n s: 'n*vd + vd -> (n+1)*vd',\n assuming: {\n multiply: {\n commutative: false\n }\n }\n }, {\n s: 'vd + n*vd -> (1+n)*vd',\n assuming: {\n multiply: {\n commutative: false\n }\n }\n }, {\n s: 'n1*n3 + n2*n3 -> (n1+n2)*n3',\n assuming: {\n multiply: {\n commutative: false\n }\n }\n }, {\n s: 'n^n1 * n -> n^(n1+1)',\n assuming: {\n divide: {\n total: true\n },\n multiply: {\n commutative: false\n }\n }\n }, {\n s: 'n1*n3^(-n4) + n2 * n3 -> (n1 + n2*n3^(n4 + 1))*n3^(-n4)',\n assuming: {\n multiply: {\n commutative: false\n }\n }\n }, {\n s: 'n1*n3^(-n4) + n2 * n3^n5 -> (n1 + n2*n3^(n4 + n5))*n3^(-n4)',\n assuming: {\n multiply: {\n commutative: false\n }\n }\n }, {\n l: 'n*cd + cd',\n r: '(n+1)*cd'\n }, {\n s: 'cd*n + cd -> cd*(n+1)',\n assuming: {\n multiply: {\n commutative: false\n }\n }\n }, {\n s: 'cd + cd*n -> cd*(1+n)',\n assuming: {\n multiply: {\n commutative: false\n }\n }\n }, simplifyConstant,\n // Second: before returning expressions to \"standard form\"\n\n // make factors positive (and undo 'make non-constant terms positive')\n {\n s: '(-n)*n1 -> -(n*n1)',\n assuming: {\n subtract: {\n total: true\n }\n }\n }, {\n s: 'n1*(-n) -> -(n1*n)',\n // in case * non-commutative\n assuming: {\n subtract: {\n total: true\n },\n multiply: {\n commutative: false\n }\n }\n },\n // final ordering of constants\n {\n s: 'ce+ve -> ve+ce',\n assuming: {\n add: {\n commutative: true\n }\n },\n imposeContext: {\n add: {\n commutative: false\n }\n }\n }, {\n s: 'vd*cd -> cd*vd',\n assuming: {\n multiply: {\n commutative: true\n }\n },\n imposeContext: {\n multiply: {\n commutative: false\n }\n }\n },\n // undo temporary rules\n // { l: '(-1) * n', r: '-n' }, // #811 added test which proved this is redundant\n {\n l: 'n+-n1',\n r: 'n-n1'\n },\n // undo replace 'subtract'\n {\n l: 'n+-(n1)',\n r: 'n-(n1)'\n }, {\n s: 'n*(n1^-1) -> n/n1',\n // undo replace 'divide'; for * commutative\n assuming: {\n multiply: {\n commutative: true\n }\n } // o.w. / not conventional\n }, {\n s: 'n*n1^-n2 -> n/n1^n2',\n assuming: {\n multiply: {\n commutative: true\n }\n } // o.w. / not conventional\n }, {\n s: 'n^-1 -> 1/n',\n assuming: {\n multiply: {\n commutative: true\n }\n } // o.w. / not conventional\n }, {\n l: 'n^1',\n r: 'n'\n },\n // can be produced by power cancellation\n {\n s: 'n*(n1/n2) -> (n*n1)/n2',\n // '*' before '/'\n assuming: {\n multiply: {\n associative: true\n }\n }\n }, {\n s: 'n-(n1+n2) -> n-n1-n2',\n // '-' before '+'\n assuming: {\n addition: {\n associative: true,\n commutative: true\n }\n }\n },\n // { l: '(n1/n2)/n3', r: 'n1/(n2*n3)' },\n // { l: '(n*n1)/(n*n2)', r: 'n1/n2' },\n\n // simplifyConstant can leave an extra factor of 1, which can always\n // be eliminated, since the identity always commutes\n {\n l: '1*n',\n r: 'n',\n imposeContext: {\n multiply: {\n commutative: true\n }\n }\n }, {\n s: 'n1/(n2/n3) -> (n1*n3)/n2',\n assuming: {\n multiply: {\n associative: true\n }\n }\n }, {\n l: 'n1/(-n2)',\n r: '-n1/n2'\n }];\n\n /**\n * Takes any rule object as allowed by the specification in simplify\n * and puts it in a standard form used by applyRule\n */\n function _canonicalizeRule(ruleObject, context) {\n var newRule = {};\n if (ruleObject.s) {\n var lr = ruleObject.s.split('->');\n if (lr.length === 2) {\n newRule.l = lr[0];\n newRule.r = lr[1];\n } else {\n throw SyntaxError('Could not parse rule: ' + ruleObject.s);\n }\n } else {\n newRule.l = ruleObject.l;\n newRule.r = ruleObject.r;\n }\n newRule.l = removeParens(parse(newRule.l));\n newRule.r = removeParens(parse(newRule.r));\n for (var prop of ['imposeContext', 'repeat', 'assuming']) {\n if (prop in ruleObject) {\n newRule[prop] = ruleObject[prop];\n }\n }\n if (ruleObject.evaluate) {\n newRule.evaluate = parse(ruleObject.evaluate);\n }\n if (isAssociative(newRule.l, context)) {\n var nonCommutative = !isCommutative(newRule.l, context);\n var leftExpandsym;\n // Gen. the LHS placeholder used in this NC-context specific expansion rules\n if (nonCommutative) leftExpandsym = _getExpandPlaceholderSymbol();\n var makeNode = createMakeNodeFunction(newRule.l);\n var expandsym = _getExpandPlaceholderSymbol();\n newRule.expanded = {};\n newRule.expanded.l = makeNode([newRule.l, expandsym]);\n // Push the expandsym into the deepest possible branch.\n // This helps to match the newRule against nodes returned from getSplits() later on.\n flatten(newRule.expanded.l, context);\n unflattenr(newRule.expanded.l, context);\n newRule.expanded.r = makeNode([newRule.r, expandsym]);\n\n // In and for a non-commutative context, attempting with yet additional expansion rules makes\n // way for more matches cases of multi-arg expressions; such that associative rules (such as\n // 'n*n -> n^2') can be applied to exprs. such as 'a * b * b' and 'a * b * b * a'.\n if (nonCommutative) {\n // 'Non-commutative' 1: LHS (placeholder) only\n newRule.expandedNC1 = {};\n newRule.expandedNC1.l = makeNode([leftExpandsym, newRule.l]);\n newRule.expandedNC1.r = makeNode([leftExpandsym, newRule.r]);\n // 'Non-commutative' 2: farmost LHS and RHS placeholders\n newRule.expandedNC2 = {};\n newRule.expandedNC2.l = makeNode([leftExpandsym, newRule.expanded.l]);\n newRule.expandedNC2.r = makeNode([leftExpandsym, newRule.expanded.r]);\n }\n }\n return newRule;\n }\n\n /**\n * Parse the string array of rules into nodes\n *\n * Example syntax for rules:\n *\n * Position constants to the left in a product:\n * { l: 'n1 * c1', r: 'c1 * n1' }\n * n1 is any Node, and c1 is a ConstantNode.\n *\n * Apply difference of squares formula:\n * { l: '(n1 - n2) * (n1 + n2)', r: 'n1^2 - n2^2' }\n * n1, n2 mean any Node.\n *\n * Short hand notation:\n * 'n1 * c1 -> c1 * n1'\n */\n function _buildRules(rules, context) {\n // Array of rules to be used to simplify expressions\n var ruleSet = [];\n for (var i = 0; i < rules.length; i++) {\n var rule = rules[i];\n var newRule = void 0;\n var ruleType = typeof rule;\n switch (ruleType) {\n case 'string':\n rule = {\n s: rule\n };\n /* falls through */\n case 'object':\n newRule = _canonicalizeRule(rule, context);\n break;\n case 'function':\n newRule = rule;\n break;\n default:\n throw TypeError('Unsupported type of rule: ' + ruleType);\n }\n // console.log('Adding rule: ' + rules[i])\n // console.log(newRule)\n ruleSet.push(newRule);\n }\n return ruleSet;\n }\n var _lastsym = 0;\n function _getExpandPlaceholderSymbol() {\n return new SymbolNode('_p' + _lastsym++);\n }\n function _simplify(expr, rules) {\n var scope = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : createEmptyMap();\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var debug = options.consoleDebug;\n rules = _buildRules(rules || simplify.rules, options.context);\n var res = resolve(expr, scope);\n res = removeParens(res);\n var visited = {};\n var str = res.toString({\n parenthesis: 'all'\n });\n while (!visited[str]) {\n visited[str] = true;\n _lastsym = 0; // counter for placeholder symbols\n var laststr = str;\n if (debug) console.log('Working on: ', str);\n for (var i = 0; i < rules.length; i++) {\n var rulestr = '';\n if (typeof rules[i] === 'function') {\n res = rules[i](res, options);\n if (debug) rulestr = rules[i].name;\n } else {\n flatten(res, options.context);\n res = applyRule(res, rules[i], options.context);\n if (debug) {\n rulestr = \"\".concat(rules[i].l.toString(), \" -> \").concat(rules[i].r.toString());\n }\n }\n if (debug) {\n var newstr = res.toString({\n parenthesis: 'all'\n });\n if (newstr !== laststr) {\n console.log('Applying', rulestr, 'produced', newstr);\n laststr = newstr;\n }\n }\n /* Use left-heavy binary tree internally,\n * since custom rule functions may expect it\n */\n unflattenl(res, options.context);\n }\n str = res.toString({\n parenthesis: 'all'\n });\n }\n return res;\n }\n function mapRule(nodes, rule, context) {\n var resNodes = nodes;\n if (nodes) {\n for (var i = 0; i < nodes.length; ++i) {\n var newNode = applyRule(nodes[i], rule, context);\n if (newNode !== nodes[i]) {\n if (resNodes === nodes) {\n resNodes = nodes.slice();\n }\n resNodes[i] = newNode;\n }\n }\n }\n return resNodes;\n }\n\n /**\n * Returns a simplfied form of node, or the original node if no simplification was possible.\n *\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} node\n * @param {Object | Function} rule\n * @param {Object} context -- information about assumed properties of operators\n * @return {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} The simplified form of `expr`, or the original node if no simplification was possible.\n */\n function applyRule(node, rule, context) {\n // console.log('Entering applyRule(\"', rule.l.toString({parenthesis:'all'}), '->', rule.r.toString({parenthesis:'all'}), '\",', node.toString({parenthesis:'all'}),')')\n\n // check that the assumptions for this rule are satisfied by the current\n // context:\n if (rule.assuming) {\n for (var symbol in rule.assuming) {\n for (var property in rule.assuming[symbol]) {\n if (hasProperty(symbol, property, context) !== rule.assuming[symbol][property]) {\n return node;\n }\n }\n }\n }\n var mergedContext = mergeContext(rule.imposeContext, context);\n\n // Do not clone node unless we find a match\n var res = node;\n\n // First replace our child nodes with their simplified versions\n // If a child could not be simplified, applying the rule to it\n // will have no effect since the node is returned unchanged\n if (res instanceof OperatorNode || res instanceof FunctionNode) {\n var newArgs = mapRule(res.args, rule, context);\n if (newArgs !== res.args) {\n res = res.clone();\n res.args = newArgs;\n }\n } else if (res instanceof ParenthesisNode) {\n if (res.content) {\n var newContent = applyRule(res.content, rule, context);\n if (newContent !== res.content) {\n res = new ParenthesisNode(newContent);\n }\n }\n } else if (res instanceof ArrayNode) {\n var newItems = mapRule(res.items, rule, context);\n if (newItems !== res.items) {\n res = new ArrayNode(newItems);\n }\n } else if (res instanceof AccessorNode) {\n var newObj = res.object;\n if (res.object) {\n newObj = applyRule(res.object, rule, context);\n }\n var newIndex = res.index;\n if (res.index) {\n newIndex = applyRule(res.index, rule, context);\n }\n if (newObj !== res.object || newIndex !== res.index) {\n res = new AccessorNode(newObj, newIndex);\n }\n } else if (res instanceof IndexNode) {\n var newDims = mapRule(res.dimensions, rule, context);\n if (newDims !== res.dimensions) {\n res = new IndexNode(newDims);\n }\n } else if (res instanceof ObjectNode) {\n var changed = false;\n var newProps = {};\n for (var prop in res.properties) {\n newProps[prop] = applyRule(res.properties[prop], rule, context);\n if (newProps[prop] !== res.properties[prop]) {\n changed = true;\n }\n }\n if (changed) {\n res = new ObjectNode(newProps);\n }\n }\n\n // Try to match a rule against this node\n var repl = rule.r;\n var matches = _ruleMatch(rule.l, res, mergedContext)[0];\n\n // If the rule is associative operator, we can try matching it while allowing additional terms.\n // This allows us to match rules like 'n+n' to the expression '(1+x)+x' or even 'x+1+x' if the operator is commutative.\n if (!matches && rule.expanded) {\n repl = rule.expanded.r;\n matches = _ruleMatch(rule.expanded.l, res, mergedContext)[0];\n }\n // Additional, non-commutative context expansion-rules\n if (!matches && rule.expandedNC1) {\n repl = rule.expandedNC1.r;\n matches = _ruleMatch(rule.expandedNC1.l, res, mergedContext)[0];\n if (!matches) {\n // Existence of NC1 implies NC2\n repl = rule.expandedNC2.r;\n matches = _ruleMatch(rule.expandedNC2.l, res, mergedContext)[0];\n }\n }\n if (matches) {\n // const before = res.toString({parenthesis: 'all'})\n\n // Create a new node by cloning the rhs of the matched rule\n // we keep any implicit multiplication state if relevant\n var implicit = res.implicit;\n res = repl.clone();\n if (implicit && 'implicit' in repl) {\n res.implicit = true;\n }\n\n // Replace placeholders with their respective nodes without traversing deeper into the replaced nodes\n res = res.transform(function (node) {\n if (node.isSymbolNode && hasOwnProperty(matches.placeholders, node.name)) {\n return matches.placeholders[node.name].clone();\n } else {\n return node;\n }\n });\n\n // const after = res.toString({parenthesis: 'all'})\n // console.log('Simplified ' + before + ' to ' + after)\n }\n if (rule.repeat && res !== node) {\n res = applyRule(res, rule, context);\n }\n return res;\n }\n\n /**\n * Get (binary) combinations of a flattened binary node\n * e.g. +(node1, node2, node3) -> [\n * +(node1, +(node2, node3)),\n * +(node2, +(node1, node3)),\n * +(node3, +(node1, node2))]\n *\n */\n function getSplits(node, context) {\n var res = [];\n var right, rightArgs;\n var makeNode = createMakeNodeFunction(node);\n if (isCommutative(node, context)) {\n for (var i = 0; i < node.args.length; i++) {\n rightArgs = node.args.slice(0);\n rightArgs.splice(i, 1);\n right = rightArgs.length === 1 ? rightArgs[0] : makeNode(rightArgs);\n res.push(makeNode([node.args[i], right]));\n }\n } else {\n // Keep order, but try all parenthesizations\n for (var _i = 1; _i < node.args.length; _i++) {\n var left = node.args[0];\n if (_i > 1) {\n left = makeNode(node.args.slice(0, _i));\n }\n rightArgs = node.args.slice(_i);\n right = rightArgs.length === 1 ? rightArgs[0] : makeNode(rightArgs);\n res.push(makeNode([left, right]));\n }\n }\n return res;\n }\n\n /**\n * Returns the set union of two match-placeholders or null if there is a conflict.\n */\n function mergeMatch(match1, match2) {\n var res = {\n placeholders: {}\n };\n\n // Some matches may not have placeholders; this is OK\n if (!match1.placeholders && !match2.placeholders) {\n return res;\n } else if (!match1.placeholders) {\n return match2;\n } else if (!match2.placeholders) {\n return match1;\n }\n\n // Placeholders with the same key must match exactly\n for (var key in match1.placeholders) {\n if (hasOwnProperty(match1.placeholders, key)) {\n res.placeholders[key] = match1.placeholders[key];\n if (hasOwnProperty(match2.placeholders, key)) {\n if (!_exactMatch(match1.placeholders[key], match2.placeholders[key])) {\n return null;\n }\n }\n }\n }\n for (var _key in match2.placeholders) {\n if (hasOwnProperty(match2.placeholders, _key)) {\n res.placeholders[_key] = match2.placeholders[_key];\n }\n }\n return res;\n }\n\n /**\n * Combine two lists of matches by applying mergeMatch to the cartesian product of two lists of matches.\n * Each list represents matches found in one child of a node.\n */\n function combineChildMatches(list1, list2) {\n var res = [];\n if (list1.length === 0 || list2.length === 0) {\n return res;\n }\n var merged;\n for (var i1 = 0; i1 < list1.length; i1++) {\n for (var i2 = 0; i2 < list2.length; i2++) {\n merged = mergeMatch(list1[i1], list2[i2]);\n if (merged) {\n res.push(merged);\n }\n }\n }\n return res;\n }\n\n /**\n * Combine multiple lists of matches by applying mergeMatch to the cartesian product of two lists of matches.\n * Each list represents matches found in one child of a node.\n * Returns a list of unique matches.\n */\n function mergeChildMatches(childMatches) {\n if (childMatches.length === 0) {\n return childMatches;\n }\n var sets = childMatches.reduce(combineChildMatches);\n var uniqueSets = [];\n var unique = {};\n for (var i = 0; i < sets.length; i++) {\n var s = JSON.stringify(sets[i]);\n if (!unique[s]) {\n unique[s] = true;\n uniqueSets.push(sets[i]);\n }\n }\n return uniqueSets;\n }\n\n /**\n * Determines whether node matches rule.\n *\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} rule\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} node\n * @param {Object} context -- provides assumed properties of operators\n * @param {Boolean} isSplit -- whether we are in process of splitting an\n * n-ary operator node into possible binary combinations.\n * Defaults to false.\n * @return {Object} Information about the match, if it exists.\n */\n function _ruleMatch(rule, node, context, isSplit) {\n // console.log('Entering _ruleMatch(' + JSON.stringify(rule) + ', ' + JSON.stringify(node) + ')')\n // console.log('rule = ' + rule)\n // console.log('node = ' + node)\n\n // console.log('Entering _ruleMatch(', rule.toString({parenthesis:'all'}), ', ', node.toString({parenthesis:'all'}), ', ', context, ')')\n var res = [{\n placeholders: {}\n }];\n if (rule instanceof OperatorNode && node instanceof OperatorNode || rule instanceof FunctionNode && node instanceof FunctionNode) {\n // If the rule is an OperatorNode or a FunctionNode, then node must match exactly\n if (rule instanceof OperatorNode) {\n if (rule.op !== node.op || rule.fn !== node.fn) {\n return [];\n }\n } else if (rule instanceof FunctionNode) {\n if (rule.name !== node.name) {\n return [];\n }\n }\n\n // rule and node match. Search the children of rule and node.\n if (node.args.length === 1 && rule.args.length === 1 || !isAssociative(node, context) && node.args.length === rule.args.length || isSplit) {\n // Expect non-associative operators to match exactly,\n // except in any order if operator is commutative\n var childMatches = [];\n for (var i = 0; i < rule.args.length; i++) {\n var childMatch = _ruleMatch(rule.args[i], node.args[i], context);\n if (childMatch.length === 0) {\n // Child did not match, so stop searching immediately\n break;\n }\n // The child matched, so add the information returned from the child to our result\n childMatches.push(childMatch);\n }\n if (childMatches.length !== rule.args.length) {\n if (!isCommutative(node, context) ||\n // exact match in order needed\n rule.args.length === 1) {\n // nothing to commute\n return [];\n }\n if (rule.args.length > 2) {\n /* Need to generate all permutations and try them.\n * It's a bit complicated, and unlikely to come up since there\n * are very few ternary or higher operators. So punt for now.\n */\n throw new Error('permuting >2 commutative non-associative rule arguments not yet implemented');\n }\n /* Exactly two arguments, try them reversed */\n var leftMatch = _ruleMatch(rule.args[0], node.args[1], context);\n if (leftMatch.length === 0) {\n return [];\n }\n var rightMatch = _ruleMatch(rule.args[1], node.args[0], context);\n if (rightMatch.length === 0) {\n return [];\n }\n childMatches = [leftMatch, rightMatch];\n }\n res = mergeChildMatches(childMatches);\n } else if (node.args.length >= 2 && rule.args.length === 2) {\n // node is flattened, rule is not\n // Associative operators/functions can be split in different ways so we check if the rule\n // matches for each of them and return their union.\n var splits = getSplits(node, context);\n var splitMatches = [];\n for (var _i2 = 0; _i2 < splits.length; _i2++) {\n var matchSet = _ruleMatch(rule, splits[_i2], context, true); // recursing at the same tree depth here\n splitMatches = splitMatches.concat(matchSet);\n }\n return splitMatches;\n } else if (rule.args.length > 2) {\n throw Error('Unexpected non-binary associative function: ' + rule.toString());\n } else {\n // Incorrect number of arguments in rule and node, so no match\n return [];\n }\n } else if (rule instanceof SymbolNode) {\n // If the rule is a SymbolNode, then it carries a special meaning\n // according to the first one or two characters of the symbol node name.\n // These meanings are expalined in the documentation for simplify()\n if (rule.name.length === 0) {\n throw new Error('Symbol in rule has 0 length...!?');\n }\n if (SUPPORTED_CONSTANTS[rule.name]) {\n // built-in constant must match exactly\n if (rule.name !== node.name) {\n return [];\n }\n } else {\n // wildcards are composed of up to two alphabetic or underscore characters\n switch (rule.name[1] >= 'a' && rule.name[1] <= 'z' ? rule.name.substring(0, 2) : rule.name[0]) {\n case 'n':\n case '_p':\n // rule matches _anything_, so assign this node to the rule.name placeholder\n // Assign node to the rule.name placeholder.\n // Our parent will check for matches among placeholders.\n res[0].placeholders[rule.name] = node;\n break;\n case 'c':\n case 'cl':\n // rule matches a ConstantNode\n if (isConstantNode(node)) {\n res[0].placeholders[rule.name] = node;\n } else {\n // mis-match: rule does not encompass current node\n return [];\n }\n break;\n case 'v':\n // rule matches anything other than a ConstantNode\n if (!isConstantNode(node)) {\n res[0].placeholders[rule.name] = node;\n } else {\n // mis-match: rule does not encompass current node\n return [];\n }\n break;\n case 'vl':\n // rule matches VariableNode\n if (isVariableNode(node)) {\n res[0].placeholders[rule.name] = node;\n } else {\n // mis-match: rule does not encompass current node\n return [];\n }\n break;\n case 'cd':\n // rule matches a ConstantNode or unaryMinus-wrapped ConstantNode\n if (isNumericNode(node)) {\n res[0].placeholders[rule.name] = node;\n } else {\n // mis-match: rule does not encompass current node\n return [];\n }\n break;\n case 'vd':\n // rule matches anything other than a ConstantNode or unaryMinus-wrapped ConstantNode\n if (!isNumericNode(node)) {\n res[0].placeholders[rule.name] = node;\n } else {\n // mis-match: rule does not encompass current node\n return [];\n }\n break;\n case 'ce':\n // rule matches expressions that have a constant value\n if (isConstantExpression(node)) {\n res[0].placeholders[rule.name] = node;\n } else {\n // mis-match: rule does not encompass current node\n return [];\n }\n break;\n case 've':\n // rule matches expressions that do not have a constant value\n if (!isConstantExpression(node)) {\n res[0].placeholders[rule.name] = node;\n } else {\n // mis-match: rule does not encompass current node\n return [];\n }\n break;\n default:\n throw new Error('Invalid symbol in rule: ' + rule.name);\n }\n }\n } else if (rule instanceof ConstantNode) {\n // Literal constant must match exactly\n if (!equal(rule.value, node.value)) {\n return [];\n }\n } else {\n // Some other node was encountered which we aren't prepared for, so no match\n return [];\n }\n\n // It's a match!\n\n // console.log('_ruleMatch(' + rule.toString() + ', ' + node.toString() + ') found a match')\n return res;\n }\n\n /**\n * Determines whether p and q (and all their children nodes) are identical.\n *\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} p\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} q\n * @return {Object} Information about the match, if it exists.\n */\n function _exactMatch(p, q) {\n if (p instanceof ConstantNode && q instanceof ConstantNode) {\n if (!equal(p.value, q.value)) {\n return false;\n }\n } else if (p instanceof SymbolNode && q instanceof SymbolNode) {\n if (p.name !== q.name) {\n return false;\n }\n } else if (p instanceof OperatorNode && q instanceof OperatorNode || p instanceof FunctionNode && q instanceof FunctionNode) {\n if (p instanceof OperatorNode) {\n if (p.op !== q.op || p.fn !== q.fn) {\n return false;\n }\n } else if (p instanceof FunctionNode) {\n if (p.name !== q.name) {\n return false;\n }\n }\n if (p.args.length !== q.args.length) {\n return false;\n }\n for (var i = 0; i < p.args.length; i++) {\n if (!_exactMatch(p.args[i], q.args[i])) {\n return false;\n }\n }\n } else {\n return false;\n }\n return true;\n }\n return simplify;\n});", "import { isFraction, isMatrix, isNode, isArrayNode, isConstantNode, isIndexNode, isObjectNode, isOperatorNode } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nimport { safeNumberType } from '../../utils/number.js';\nimport { createUtil } from './simplify/util.js';\nimport { noBignumber, noFraction } from '../../utils/noop.js';\nvar name = 'simplifyConstant';\nvar dependencies = ['typed', 'config', 'mathWithTransform', 'matrix', '?fraction', '?bignumber', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'SymbolNode'];\nexport var createSimplifyConstant = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n mathWithTransform,\n matrix,\n fraction,\n bignumber,\n AccessorNode,\n ArrayNode,\n ConstantNode,\n FunctionNode,\n IndexNode,\n ObjectNode,\n OperatorNode,\n SymbolNode\n } = _ref;\n var {\n isCommutative,\n isAssociative,\n allChildren,\n createMakeNodeFunction\n } = createUtil({\n FunctionNode,\n OperatorNode,\n SymbolNode\n });\n\n /**\n * simplifyConstant() takes a mathjs expression (either a Node representing\n * a parse tree or a string which it parses to produce a node), and replaces\n * any subexpression of it consisting entirely of constants with the computed\n * value of that subexpression.\n *\n * Syntax:\n *\n * math.simplifyConstant(expr)\n * math.simplifyConstant(expr, options)\n *\n * Examples:\n *\n * math.simplifyConstant('x + 4*3/6') // Node \"x + 2\"\n * math.simplifyConstant('z cos(0)') // Node \"z 1\"\n * math.simplifyConstant('(5.2 + 1.08)t', {exactFractions: false}) // Node \"6.28 t\"\n *\n * See also:\n *\n * simplify, simplifyCore, resolve, derivative\n *\n * @param {Node | string} node\n * The expression to be simplified\n * @param {Object} options\n * Simplification options, as per simplify()\n * @return {Node} Returns expression with constant subexpressions evaluated\n */\n var simplifyConstant = typed('simplifyConstant', {\n Node: node => _ensureNode(foldFraction(node, {})),\n 'Node, Object': function Node_Object(expr, options) {\n return _ensureNode(foldFraction(expr, options));\n }\n });\n function _removeFractions(thing) {\n if (isFraction(thing)) {\n return thing.valueOf();\n }\n if (thing instanceof Array) {\n return thing.map(_removeFractions);\n }\n if (isMatrix(thing)) {\n return matrix(_removeFractions(thing.valueOf()));\n }\n return thing;\n }\n function _eval(fnname, args, options) {\n try {\n return mathWithTransform[fnname].apply(null, args);\n } catch (ignore) {\n // sometimes the implicit type conversion causes the evaluation to fail, so we'll try again after removing Fractions\n args = args.map(_removeFractions);\n return _toNumber(mathWithTransform[fnname].apply(null, args), options);\n }\n }\n var _toNode = typed({\n Fraction: _fractionToNode,\n number: function number(n) {\n if (n < 0) {\n return unaryMinusNode(new ConstantNode(-n));\n }\n return new ConstantNode(n);\n },\n BigNumber: function BigNumber(n) {\n if (n < 0) {\n return unaryMinusNode(new ConstantNode(-n));\n }\n return new ConstantNode(n); // old parameters: (n.toString(), 'number')\n },\n bigint: function bigint(n) {\n if (n < 0n) {\n return unaryMinusNode(new ConstantNode(-n));\n }\n return new ConstantNode(n);\n },\n Complex: function Complex(s) {\n throw new Error('Cannot convert Complex number to Node');\n },\n string: function string(s) {\n return new ConstantNode(s);\n },\n Matrix: function Matrix(m) {\n return new ArrayNode(m.valueOf().map(e => _toNode(e)));\n }\n });\n function _ensureNode(thing) {\n if (isNode(thing)) {\n return thing;\n }\n return _toNode(thing);\n }\n\n // convert a number to a fraction only if it can be expressed exactly,\n // and when both numerator and denominator are small enough\n function _exactFraction(n, options) {\n var exactFractions = options && options.exactFractions !== false;\n if (exactFractions && isFinite(n) && fraction) {\n var f = fraction(n);\n var fractionsLimit = options && typeof options.fractionsLimit === 'number' ? options.fractionsLimit : Infinity; // no limit by default\n\n if (f.valueOf() === n && f.n < fractionsLimit && f.d < fractionsLimit) {\n return f;\n }\n }\n return n;\n }\n\n // Convert numbers to a preferred number type in preference order: Fraction, number, Complex\n // BigNumbers are left alone\n var _toNumber = typed({\n 'string, Object': function string_Object(s, options) {\n var numericType = safeNumberType(s, config);\n if (numericType === 'BigNumber') {\n if (bignumber === undefined) {\n noBignumber();\n }\n return bignumber(s);\n } else if (numericType === 'bigint') {\n return BigInt(s);\n } else if (numericType === 'Fraction') {\n if (fraction === undefined) {\n noFraction();\n }\n return fraction(s);\n } else {\n var n = parseFloat(s);\n return _exactFraction(n, options);\n }\n },\n 'Fraction, Object': function Fraction_Object(s, options) {\n return s;\n },\n // we don't need options here\n\n 'BigNumber, Object': function BigNumber_Object(s, options) {\n return s;\n },\n // we don't need options here\n\n 'number, Object': function number_Object(s, options) {\n return _exactFraction(s, options);\n },\n 'bigint, Object': function bigint_Object(s, options) {\n return s;\n },\n 'Complex, Object': function Complex_Object(s, options) {\n if (s.im !== 0) {\n return s;\n }\n return _exactFraction(s.re, options);\n },\n 'Matrix, Object': function Matrix_Object(s, options) {\n return matrix(_exactFraction(s.valueOf()));\n },\n 'Array, Object': function Array_Object(s, options) {\n return s.map(_exactFraction);\n }\n });\n function unaryMinusNode(n) {\n return new OperatorNode('-', 'unaryMinus', [n]);\n }\n function _fractionToNode(f) {\n var n;\n var vn = f.s * f.n;\n if (vn < 0) {\n n = new OperatorNode('-', 'unaryMinus', [new ConstantNode(-vn)]);\n } else {\n n = new ConstantNode(vn);\n }\n if (f.d === 1) {\n return n;\n }\n return new OperatorNode('/', 'divide', [n, new ConstantNode(f.d)]);\n }\n\n /* Handles constant indexing of ArrayNodes, matrices, and ObjectNodes */\n function _foldAccessor(obj, index, options) {\n if (!isIndexNode(index)) {\n // don't know what to do with that...\n return new AccessorNode(_ensureNode(obj), _ensureNode(index));\n }\n if (isArrayNode(obj) || isMatrix(obj)) {\n var remainingDims = Array.from(index.dimensions);\n /* We will resolve constant indices one at a time, looking\n * just in the first or second dimensions because (a) arrays\n * of more than two dimensions are likely rare, and (b) pulling\n * out the third or higher dimension would be pretty intricate.\n * The price is that we miss simplifying [..3d array][x,y,1]\n */\n while (remainingDims.length > 0) {\n if (isConstantNode(remainingDims[0]) && typeof remainingDims[0].value !== 'string') {\n var first = _toNumber(remainingDims.shift().value, options);\n if (isArrayNode(obj)) {\n obj = obj.items[first - 1];\n } else {\n // matrix\n obj = obj.valueOf()[first - 1];\n if (obj instanceof Array) {\n obj = matrix(obj);\n }\n }\n } else if (remainingDims.length > 1 && isConstantNode(remainingDims[1]) && typeof remainingDims[1].value !== 'string') {\n var second = _toNumber(remainingDims[1].value, options);\n var tryItems = [];\n var fromItems = isArrayNode(obj) ? obj.items : obj.valueOf();\n for (var item of fromItems) {\n if (isArrayNode(item)) {\n tryItems.push(item.items[second - 1]);\n } else if (isMatrix(obj)) {\n tryItems.push(item[second - 1]);\n } else {\n break;\n }\n }\n if (tryItems.length === fromItems.length) {\n if (isArrayNode(obj)) {\n obj = new ArrayNode(tryItems);\n } else {\n // matrix\n obj = matrix(tryItems);\n }\n remainingDims.splice(1, 1);\n } else {\n // extracting slice along 2nd dimension failed, give up\n break;\n }\n } else {\n // neither 1st or 2nd dimension is constant, give up\n break;\n }\n }\n if (remainingDims.length === index.dimensions.length) {\n /* No successful constant indexing */\n return new AccessorNode(_ensureNode(obj), index);\n }\n if (remainingDims.length > 0) {\n /* Indexed some but not all dimensions */\n index = new IndexNode(remainingDims);\n return new AccessorNode(_ensureNode(obj), index);\n }\n /* All dimensions were constant, access completely resolved */\n return obj;\n }\n if (isObjectNode(obj) && index.dimensions.length === 1 && isConstantNode(index.dimensions[0])) {\n var key = index.dimensions[0].value;\n if (key in obj.properties) {\n return obj.properties[key];\n }\n return new ConstantNode(); // undefined\n }\n /* Don't know how to index this sort of obj, at least not with this index */\n return new AccessorNode(_ensureNode(obj), index);\n }\n\n /*\n * Create a binary tree from a list of Fractions and Nodes.\n * Tries to fold Fractions by evaluating them until the first Node in the list is hit, so\n * `args` should be sorted to have the Fractions at the start (if the operator is commutative).\n * @param args - list of Fractions and Nodes\n * @param fn - evaluator for the binary operation evaluator that accepts two Fractions\n * @param makeNode - creates a binary OperatorNode/FunctionNode from a list of child Nodes\n * if args.length is 1, returns args[0]\n * @return - Either a Node representing a binary expression or Fraction\n */\n function foldOp(fn, args, makeNode, options) {\n var first = args.shift();\n\n // In the following reduction, sofar always has one of the three following\n // forms: [NODE], [CONSTANT], or [NODE, CONSTANT]\n var reduction = args.reduce((sofar, next) => {\n if (!isNode(next)) {\n var last = sofar.pop();\n if (isNode(last)) {\n return [last, next];\n }\n // Two constants in a row, try to fold them into one\n try {\n sofar.push(_eval(fn, [last, next], options));\n return sofar;\n } catch (ignoreandcontinue) {\n sofar.push(last);\n // fall through to Node case\n }\n }\n\n // Encountered a Node, or failed folding --\n // collapse everything so far into a single tree:\n sofar.push(_ensureNode(sofar.pop()));\n var newtree = sofar.length === 1 ? sofar[0] : makeNode(sofar);\n return [makeNode([newtree, _ensureNode(next)])];\n }, [first]);\n if (reduction.length === 1) {\n return reduction[0];\n }\n // Might end up with a tree and a constant at the end:\n return makeNode([reduction[0], _toNode(reduction[1])]);\n }\n\n // destroys the original node and returns a folded one\n function foldFraction(node, options) {\n switch (node.type) {\n case 'SymbolNode':\n return node;\n case 'ConstantNode':\n switch (typeof node.value) {\n case 'number':\n return _toNumber(node.value, options);\n case 'bigint':\n return _toNumber(node.value, options);\n case 'string':\n return node.value;\n default:\n if (!isNaN(node.value)) return _toNumber(node.value, options);\n }\n return node;\n case 'FunctionNode':\n if (mathWithTransform[node.name] && mathWithTransform[node.name].rawArgs) {\n return node;\n }\n {\n // Process operators as OperatorNode\n var operatorFunctions = ['add', 'multiply'];\n if (!operatorFunctions.includes(node.name)) {\n var args = node.args.map(arg => foldFraction(arg, options));\n\n // If all args are numbers\n if (!args.some(isNode)) {\n try {\n return _eval(node.name, args, options);\n } catch (ignoreandcontinue) {}\n }\n\n // Size of a matrix does not depend on entries\n if (node.name === 'size' && args.length === 1 && isArrayNode(args[0])) {\n var sz = [];\n var section = args[0];\n while (isArrayNode(section)) {\n sz.push(section.items.length);\n section = section.items[0];\n }\n return matrix(sz);\n }\n\n // Convert all args to nodes and construct a symbolic function call\n return new FunctionNode(node.name, args.map(_ensureNode));\n } else {\n // treat as operator\n }\n }\n /* falls through */\n case 'OperatorNode':\n {\n var fn = node.fn.toString();\n var _args;\n var res;\n var makeNode = createMakeNodeFunction(node);\n if (isOperatorNode(node) && node.isUnary()) {\n _args = [foldFraction(node.args[0], options)];\n if (!isNode(_args[0])) {\n res = _eval(fn, _args, options);\n } else {\n res = makeNode(_args);\n }\n } else if (isAssociative(node, options.context)) {\n _args = allChildren(node, options.context);\n _args = _args.map(arg => foldFraction(arg, options));\n if (isCommutative(fn, options.context)) {\n // commutative binary operator\n var consts = [];\n var vars = [];\n for (var i = 0; i < _args.length; i++) {\n if (!isNode(_args[i])) {\n consts.push(_args[i]);\n } else {\n vars.push(_args[i]);\n }\n }\n if (consts.length > 1) {\n res = foldOp(fn, consts, makeNode, options);\n vars.unshift(res);\n res = foldOp(fn, vars, makeNode, options);\n } else {\n // we won't change the children order since it's not neccessary\n res = foldOp(fn, _args, makeNode, options);\n }\n } else {\n // non-commutative binary operator\n res = foldOp(fn, _args, makeNode, options);\n }\n } else {\n // non-associative binary operator\n _args = node.args.map(arg => foldFraction(arg, options));\n res = foldOp(fn, _args, makeNode, options);\n }\n return res;\n }\n case 'ParenthesisNode':\n // remove the uneccessary parenthesis\n return foldFraction(node.content, options);\n case 'AccessorNode':\n return _foldAccessor(foldFraction(node.object, options), foldFraction(node.index, options), options);\n case 'ArrayNode':\n {\n var foldItems = node.items.map(item => foldFraction(item, options));\n if (foldItems.some(isNode)) {\n return new ArrayNode(foldItems.map(_ensureNode));\n }\n /* All literals -- return a Matrix so we can operate on it */\n return matrix(foldItems);\n }\n case 'IndexNode':\n {\n return new IndexNode(node.dimensions.map(n => simplifyConstant(n, options)));\n }\n case 'ObjectNode':\n {\n var foldProps = {};\n for (var prop in node.properties) {\n foldProps[prop] = simplifyConstant(node.properties[prop], options);\n }\n return new ObjectNode(foldProps);\n }\n case 'AssignmentNode':\n /* falls through */\n case 'BlockNode':\n /* falls through */\n case 'FunctionAssignmentNode':\n /* falls through */\n case 'RangeNode':\n /* falls through */\n case 'ConditionalNode':\n /* falls through */\n default:\n throw new Error(\"Unimplemented node type in simplifyConstant: \".concat(node.type));\n }\n }\n return simplifyConstant;\n});", "import { isAccessorNode, isArrayNode, isConstantNode, isFunctionNode, isIndexNode, isObjectNode, isOperatorNode } from '../../utils/is.js';\nimport { getOperator } from '../../expression/operators.js';\nimport { createUtil } from './simplify/util.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'simplifyCore';\nvar dependencies = ['typed', 'parse', 'equal', 'isZero', 'add', 'subtract', 'multiply', 'divide', 'pow', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'ParenthesisNode', 'SymbolNode'];\nexport var createSimplifyCore = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n parse,\n equal,\n isZero,\n add,\n subtract,\n multiply,\n divide,\n pow,\n AccessorNode,\n ArrayNode,\n ConstantNode,\n FunctionNode,\n IndexNode,\n ObjectNode,\n OperatorNode,\n ParenthesisNode,\n SymbolNode\n } = _ref;\n var node0 = new ConstantNode(0);\n var node1 = new ConstantNode(1);\n var nodeT = new ConstantNode(true);\n var nodeF = new ConstantNode(false);\n // test if a node will always have a boolean value (true/false)\n // not sure if this list is complete\n function isAlwaysBoolean(node) {\n return isOperatorNode(node) && ['and', 'not', 'or'].includes(node.op);\n }\n var {\n hasProperty,\n isCommutative\n } = createUtil({\n FunctionNode,\n OperatorNode,\n SymbolNode\n });\n /**\n * simplifyCore() performs single pass simplification suitable for\n * applications requiring ultimate performance. To roughly summarize,\n * it handles cases along the lines of simplifyConstant() but where\n * knowledge of a single argument is sufficient to determine the value.\n * In contrast, simplify() extends simplifyCore() with additional passes\n * to provide deeper simplification (such as gathering like terms).\n *\n * Specifically, simplifyCore:\n *\n * * Converts all function calls with operator equivalents to their\n * operator forms.\n * * Removes operators or function calls that are guaranteed to have no\n * effect (such as unary '+').\n * * Removes double unary '-', '~', and 'not'\n * * Eliminates addition/subtraction of 0 and multiplication/division/powers\n * by 1 or 0.\n * * Converts addition of a negation into subtraction.\n * * Eliminates logical operations with constant true or false leading\n * arguments.\n * * Puts constants on the left of a product, if multiplication is\n * considered commutative by the options (which is the default)\n *\n * Syntax:\n *\n * math.simplifyCore(expr)\n * math.simplifyCore(expr, options)\n *\n * Examples:\n *\n * const f = math.parse('2 * 1 * x ^ (1 - 0)')\n * math.simplifyCore(f) // Node \"2 * x\"\n * math.simplify('2 * 1 * x ^ (1 - 0)', [math.simplifyCore]) // Node \"2 * x\"\n *\n * See also:\n *\n * simplify, simplifyConstant, resolve, derivative\n *\n * @param {Node | string} node\n * The expression to be simplified\n * @param {Object} options\n * Simplification options, as per simplify()\n * @return {Node} Returns expression with basic simplifications applied\n */\n function _simplifyCore(nodeToSimplify) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var context = options ? options.context : undefined;\n if (hasProperty(nodeToSimplify, 'trivial', context)) {\n // This node does nothing if it has only one argument, so if so,\n // return that argument simplified\n if (isFunctionNode(nodeToSimplify) && nodeToSimplify.args.length === 1) {\n return _simplifyCore(nodeToSimplify.args[0], options);\n }\n // For other node types, we try the generic methods\n var simpChild = false;\n var childCount = 0;\n nodeToSimplify.forEach(c => {\n ++childCount;\n if (childCount === 1) {\n simpChild = _simplifyCore(c, options);\n }\n });\n if (childCount === 1) {\n return simpChild;\n }\n }\n var node = nodeToSimplify;\n if (isFunctionNode(node)) {\n var op = getOperator(node.name);\n if (op) {\n // Replace FunctionNode with a new OperatorNode\n if (node.args.length > 2 && hasProperty(node, 'associative', context)) {\n // unflatten into binary operations since that's what simplifyCore handles\n while (node.args.length > 2) {\n var last = node.args.pop();\n var seclast = node.args.pop();\n node.args.push(new OperatorNode(op, node.name, [last, seclast]));\n }\n }\n node = new OperatorNode(op, node.name, node.args);\n } else {\n return new FunctionNode(_simplifyCore(node.fn), node.args.map(n => _simplifyCore(n, options)));\n }\n }\n if (isOperatorNode(node) && node.isUnary()) {\n var a0 = _simplifyCore(node.args[0], options);\n if (node.op === '~') {\n // bitwise not\n if (isOperatorNode(a0) && a0.isUnary() && a0.op === '~') {\n return a0.args[0];\n }\n }\n if (node.op === 'not') {\n // logical not\n if (isOperatorNode(a0) && a0.isUnary() && a0.op === 'not') {\n // Has the effect of turning the argument into a boolean\n // So can only eliminate the double negation if\n // the inside is already boolean\n if (isAlwaysBoolean(a0.args[0])) {\n return a0.args[0];\n }\n }\n }\n var finish = true;\n if (node.op === '-') {\n // unary minus\n if (isOperatorNode(a0)) {\n if (a0.isBinary() && a0.fn === 'subtract') {\n node = new OperatorNode('-', 'subtract', [a0.args[1], a0.args[0]]);\n finish = false; // continue to process the new binary node\n }\n if (a0.isUnary() && a0.op === '-') {\n return a0.args[0];\n }\n }\n }\n if (finish) return new OperatorNode(node.op, node.fn, [a0]);\n }\n if (isOperatorNode(node) && node.isBinary()) {\n var _a = _simplifyCore(node.args[0], options);\n var a1 = _simplifyCore(node.args[1], options);\n if (node.op === '+') {\n if (isConstantNode(_a) && isZero(_a.value)) {\n return a1;\n }\n if (isConstantNode(a1) && isZero(a1.value)) {\n return _a;\n }\n if (isOperatorNode(a1) && a1.isUnary() && a1.op === '-') {\n a1 = a1.args[0];\n node = new OperatorNode('-', 'subtract', [_a, a1]);\n }\n }\n if (node.op === '-') {\n if (isOperatorNode(a1) && a1.isUnary() && a1.op === '-') {\n return _simplifyCore(new OperatorNode('+', 'add', [_a, a1.args[0]]), options);\n }\n if (isConstantNode(_a) && isZero(_a.value)) {\n return _simplifyCore(new OperatorNode('-', 'unaryMinus', [a1]));\n }\n if (isConstantNode(a1) && isZero(a1.value)) {\n return _a;\n }\n return new OperatorNode(node.op, node.fn, [_a, a1]);\n }\n if (node.op === '*') {\n if (isConstantNode(_a)) {\n if (isZero(_a.value)) {\n return node0;\n } else if (equal(_a.value, 1)) {\n return a1;\n }\n }\n if (isConstantNode(a1)) {\n if (isZero(a1.value)) {\n return node0;\n } else if (equal(a1.value, 1)) {\n return _a;\n }\n if (isCommutative(node, context)) {\n return new OperatorNode(node.op, node.fn, [a1, _a], node.implicit); // constants on left\n }\n }\n return new OperatorNode(node.op, node.fn, [_a, a1], node.implicit);\n }\n if (node.op === '/') {\n if (isConstantNode(_a) && isZero(_a.value)) {\n return node0;\n }\n if (isConstantNode(a1) && equal(a1.value, 1)) {\n return _a;\n }\n return new OperatorNode(node.op, node.fn, [_a, a1]);\n }\n if (node.op === '^') {\n if (isConstantNode(a1)) {\n if (isZero(a1.value)) {\n return node1;\n } else if (equal(a1.value, 1)) {\n return _a;\n }\n }\n }\n if (node.op === 'and') {\n if (isConstantNode(_a)) {\n if (_a.value) {\n if (isAlwaysBoolean(a1)) return a1;\n if (isConstantNode(a1)) {\n return a1.value ? nodeT : nodeF;\n }\n } else {\n return nodeF;\n }\n }\n if (isConstantNode(a1)) {\n if (a1.value) {\n if (isAlwaysBoolean(_a)) return _a;\n } else {\n return nodeF;\n }\n }\n }\n if (node.op === 'or') {\n if (isConstantNode(_a)) {\n if (_a.value) {\n return nodeT;\n } else {\n if (isAlwaysBoolean(a1)) return a1;\n }\n }\n if (isConstantNode(a1)) {\n if (a1.value) {\n return nodeT;\n } else {\n if (isAlwaysBoolean(_a)) return _a;\n }\n }\n }\n return new OperatorNode(node.op, node.fn, [_a, a1]);\n }\n if (isOperatorNode(node)) {\n return new OperatorNode(node.op, node.fn, node.args.map(a => _simplifyCore(a, options)));\n }\n if (isArrayNode(node)) {\n return new ArrayNode(node.items.map(n => _simplifyCore(n, options)));\n }\n if (isAccessorNode(node)) {\n return new AccessorNode(_simplifyCore(node.object, options), _simplifyCore(node.index, options));\n }\n if (isIndexNode(node)) {\n return new IndexNode(node.dimensions.map(n => _simplifyCore(n, options)));\n }\n if (isObjectNode(node)) {\n var newProps = {};\n for (var prop in node.properties) {\n newProps[prop] = _simplifyCore(node.properties[prop], options);\n }\n return new ObjectNode(newProps);\n }\n // cannot simplify\n return node;\n }\n return typed(name, {\n Node: _simplifyCore,\n 'Node,Object': _simplifyCore\n });\n});", "import { createMap } from '../../utils/map.js';\nimport { isFunctionNode, isNode, isOperatorNode, isParenthesisNode, isSymbolNode } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'resolve';\nvar dependencies = ['typed', 'parse', 'ConstantNode', 'FunctionNode', 'OperatorNode', 'ParenthesisNode'];\nexport var createResolve = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n parse,\n ConstantNode,\n FunctionNode,\n OperatorNode,\n ParenthesisNode\n } = _ref;\n /**\n * resolve(expr, scope) replaces variable nodes with their scoped values\n *\n * Syntax:\n *\n * math.resolve(expr, scope)\n *\n * Examples:\n *\n * math.resolve('x + y', {x:1, y:2}) // Node '1 + 2'\n * math.resolve(math.parse('x+y'), {x:1, y:2}) // Node '1 + 2'\n * math.simplify('x+y', {x:2, y: math.parse('x+x')}).toString() // \"6\"\n *\n * See also:\n *\n * simplify, evaluate\n *\n * @param {Node | Node[]} node\n * The expression tree (or trees) to be simplified\n * @param {Object} scope\n * Scope specifying variables to be resolved\n * @return {Node | Node[]} Returns `node` with variables recursively substituted.\n * @throws {ReferenceError}\n * If there is a cyclic dependency among the variables in `scope`,\n * resolution is impossible and a ReferenceError is thrown.\n */\n function _resolve(node, scope) {\n var within = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Set();\n // note `within`:\n // `within` is not documented, since it is for internal cycle\n // detection only\n if (!scope) {\n return node;\n }\n if (isSymbolNode(node)) {\n if (within.has(node.name)) {\n var variables = Array.from(within).join(', ');\n throw new ReferenceError(\"recursive loop of variable definitions among {\".concat(variables, \"}\"));\n }\n var value = scope.get(node.name);\n if (isNode(value)) {\n var nextWithin = new Set(within);\n nextWithin.add(node.name);\n return _resolve(value, scope, nextWithin);\n } else if (typeof value === 'number') {\n return parse(String(value));\n } else if (value !== undefined) {\n return new ConstantNode(value);\n } else {\n return node;\n }\n } else if (isOperatorNode(node)) {\n var args = node.args.map(function (arg) {\n return _resolve(arg, scope, within);\n });\n return new OperatorNode(node.op, node.fn, args, node.implicit);\n } else if (isParenthesisNode(node)) {\n return new ParenthesisNode(_resolve(node.content, scope, within));\n } else if (isFunctionNode(node)) {\n var _args = node.args.map(function (arg) {\n return _resolve(arg, scope, within);\n });\n return new FunctionNode(node.name, _args);\n }\n\n // Otherwise just recursively resolve any children (might also work\n // for some of the above special cases)\n return node.map(child => _resolve(child, scope, within));\n }\n return typed('resolve', {\n Node: _resolve,\n 'Node, Map | null | undefined': _resolve,\n 'Node, Object': (n, scope) => _resolve(n, createMap(scope)),\n // For arrays and matrices, we map `self` rather than `_resolve`\n // because resolve is fairly expensive anyway, and this way\n // we get nice error messages if one entry in the array has wrong type.\n 'Array | Matrix': typed.referToSelf(self => A => A.map(n => self(n))),\n 'Array | Matrix, null | undefined': typed.referToSelf(self => A => A.map(n => self(n))),\n 'Array, Object': typed.referTo('Array,Map', selfAM => (A, scope) => selfAM(A, createMap(scope))),\n 'Matrix, Object': typed.referTo('Matrix,Map', selfMM => (A, scope) => selfMM(A, createMap(scope))),\n 'Array | Matrix, Map': typed.referToSelf(self => (A, scope) => A.map(n => self(n, scope)))\n });\n});", "import { isConstantNode } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'symbolicEqual';\nvar dependencies = ['parse', 'simplify', 'typed', 'OperatorNode'];\nexport var createSymbolicEqual = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n parse,\n simplify,\n typed,\n OperatorNode\n } = _ref;\n /**\n * Attempts to determine if two expressions are symbolically equal, i.e.\n * one is the result of valid algebraic manipulations on the other.\n * Currently, this simply checks if the difference of the two expressions\n * simplifies down to 0. So there are two important caveats:\n * 1. whether two expressions are symbolically equal depends on the\n * manipulations allowed. Therefore, this function takes an optional\n * third argument, which are the options that control the behavior\n * as documented for the `simplify()` function.\n * 2. it is in general intractable to find the minimal simplification of\n * an arbitrarily complicated expression. So while a `true` value\n * of `symbolicEqual` ensures that the two expressions can be manipulated\n * to match each other, a `false` value does not absolutely rule this out.\n *\n * Syntax:\n *\n * math.symbolicEqual(expr1, expr2)\n * math.symbolicEqual(expr1, expr2, options)\n *\n * Examples:\n *\n * math.symbolicEqual('x*y', 'y*x') // Returns true\n * math.symbolicEqual('x*y', 'y*x', {context: {multiply: {commutative: false}}}) // Returns false\n * math.symbolicEqual('x/y', '(y*x^(-1))^(-1)') // Returns true\n * math.symbolicEqual('abs(x)','x') // Returns false\n * math.symbolicEqual('abs(x)','x', simplify.positiveContext) // Returns true\n *\n * See also:\n *\n * simplify, evaluate\n *\n * @param {Node|string} expr1 The first expression to compare\n * @param {Node|string} expr2 The second expression to compare\n * @param {Object} [options] Optional option object, passed to simplify\n * @returns {boolean}\n * Returns true if a valid manipulation making the expressions equal\n * is found.\n */\n function _symbolicEqual(e1, e2) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var diff = new OperatorNode('-', 'subtract', [e1, e2]);\n var simplified = simplify(diff, {}, options);\n return isConstantNode(simplified) && !simplified.value;\n }\n return typed(name, {\n 'Node, Node': _symbolicEqual,\n 'Node, Node, Object': _symbolicEqual\n });\n});", "import { isConstantNode, typeOf } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nimport { safeNumberType } from '../../utils/number.js';\nvar name = 'derivative';\nvar dependencies = ['typed', 'config', 'parse', 'simplify', 'equal', 'isZero', 'numeric', 'ConstantNode', 'FunctionNode', 'OperatorNode', 'ParenthesisNode', 'SymbolNode'];\nexport var createDerivative = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n parse,\n simplify,\n equal,\n isZero,\n numeric,\n ConstantNode,\n FunctionNode,\n OperatorNode,\n ParenthesisNode,\n SymbolNode\n } = _ref;\n /**\n * Takes the derivative of an expression expressed in parser Nodes.\n * The derivative will be taken over the supplied variable in the\n * second parameter. If there are multiple variables in the expression,\n * it will return a partial derivative.\n *\n * This uses rules of differentiation which can be found here:\n *\n * - [Differentiation rules (Wikipedia)](https://en.wikipedia.org/wiki/Differentiation_rules)\n *\n * Syntax:\n *\n * math.derivative(expr, variable)\n * math.derivative(expr, variable, options)\n *\n * Examples:\n *\n * math.derivative('x^2', 'x') // Node '2 * x'\n * math.derivative('x^2', 'x', {simplify: false}) // Node '2 * 1 * x ^ (2 - 1)'\n * math.derivative('sin(2x)', 'x')) // Node '2 * cos(2 * x)'\n * math.derivative('2*x', 'x').evaluate() // number 2\n * math.derivative('x^2', 'x').evaluate({x: 4}) // number 8\n * const f = math.parse('x^2')\n * const x = math.parse('x')\n * math.derivative(f, x) // Node {2 * x}\n *\n * See also:\n *\n * simplify, parse, evaluate\n *\n * @param {Node | string} expr The expression to differentiate\n * @param {SymbolNode | string} variable The variable over which to differentiate\n * @param {{simplify: boolean}} [options]\n * There is one option available, `simplify`, which\n * is true by default. When false, output will not\n * be simplified.\n * @return {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} The derivative of `expr`\n */\n function plainDerivative(expr, variable) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n simplify: true\n };\n var constNodes = {};\n constTag(constNodes, expr, variable.name);\n var res = _derivative(expr, constNodes);\n return options.simplify ? simplify(res) : res;\n }\n function parseIdentifier(string) {\n var symbol = parse(string);\n if (!symbol.isSymbolNode) {\n throw new TypeError('Invalid variable. ' + \"Cannot parse \".concat(JSON.stringify(string), \" into a variable in function derivative\"));\n }\n return symbol;\n }\n var derivative = typed(name, {\n 'Node, SymbolNode': plainDerivative,\n 'Node, SymbolNode, Object': plainDerivative,\n 'Node, string': (node, symbol) => plainDerivative(node, parseIdentifier(symbol)),\n 'Node, string, Object': (node, symbol, options) => plainDerivative(node, parseIdentifier(symbol), options)\n\n /* TODO: implement and test syntax with order of derivatives -> implement as an option {order: number}\n 'Node, SymbolNode, ConstantNode': function (expr, variable, {order}) {\n let res = expr\n for (let i = 0; i < order; i++) {\n let constNodes = {}\n constTag(constNodes, expr, variable.name)\n res = _derivative(res, constNodes)\n }\n return res\n }\n */\n });\n derivative._simplify = true;\n derivative.toTex = function (deriv) {\n return _derivTex.apply(null, deriv.args);\n };\n\n // FIXME: move the toTex method of derivative to latex.js. Difficulty is that it relies on parse.\n // NOTE: the optional \"order\" parameter here is currently unused\n var _derivTex = typed('_derivTex', {\n 'Node, SymbolNode': function Node_SymbolNode(expr, x) {\n if (isConstantNode(expr) && typeOf(expr.value) === 'string') {\n return _derivTex(parse(expr.value).toString(), x.toString(), 1);\n } else {\n return _derivTex(expr.toTex(), x.toString(), 1);\n }\n },\n 'Node, ConstantNode': function Node_ConstantNode(expr, x) {\n if (typeOf(x.value) === 'string') {\n return _derivTex(expr, parse(x.value));\n } else {\n throw new Error(\"The second parameter to 'derivative' is a non-string constant\");\n }\n },\n 'Node, SymbolNode, ConstantNode': function Node_SymbolNode_ConstantNode(expr, x, order) {\n return _derivTex(expr.toString(), x.name, order.value);\n },\n 'string, string, number': function string_string_number(expr, x, order) {\n var d;\n if (order === 1) {\n d = '{d\\\\over d' + x + '}';\n } else {\n d = '{d^{' + order + '}\\\\over d' + x + '^{' + order + '}}';\n }\n return d + \"\\\\left[\".concat(expr, \"\\\\right]\");\n }\n });\n\n /**\n * Does a depth-first search on the expression tree to identify what Nodes\n * are constants (e.g. 2 + 2), and stores the ones that are constants in\n * constNodes. Classification is done as follows:\n *\n * 1. ConstantNodes are constants.\n * 2. If there exists a SymbolNode, of which we are differentiating over,\n * in the subtree it is not constant.\n *\n * @param {Object} constNodes Holds the nodes that are constant\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} node\n * @param {string} varName Variable that we are differentiating\n * @return {boolean} if node is constant\n */\n // TODO: can we rewrite constTag into a pure function?\n var constTag = typed('constTag', {\n 'Object, ConstantNode, string': function Object_ConstantNode_string(constNodes, node) {\n constNodes[node] = true;\n return true;\n },\n 'Object, SymbolNode, string': function Object_SymbolNode_string(constNodes, node, varName) {\n // Treat other variables like constants. For reasoning, see:\n // https://en.wikipedia.org/wiki/Partial_derivative\n if (node.name !== varName) {\n constNodes[node] = true;\n return true;\n }\n return false;\n },\n 'Object, ParenthesisNode, string': function Object_ParenthesisNode_string(constNodes, node, varName) {\n return constTag(constNodes, node.content, varName);\n },\n 'Object, FunctionAssignmentNode, string': function Object_FunctionAssignmentNode_string(constNodes, node, varName) {\n if (!node.params.includes(varName)) {\n constNodes[node] = true;\n return true;\n }\n return constTag(constNodes, node.expr, varName);\n },\n 'Object, FunctionNode | OperatorNode, string': function Object_FunctionNode__OperatorNode_string(constNodes, node, varName) {\n if (node.args.length > 0) {\n var isConst = constTag(constNodes, node.args[0], varName);\n for (var i = 1; i < node.args.length; ++i) {\n isConst = constTag(constNodes, node.args[i], varName) && isConst;\n }\n if (isConst) {\n constNodes[node] = true;\n return true;\n }\n }\n return false;\n }\n });\n\n /**\n * Applies differentiation rules.\n *\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} node\n * @param {Object} constNodes Holds the nodes that are constant\n * @return {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} The derivative of `expr`\n */\n var _derivative = typed('_derivative', {\n 'ConstantNode, Object': function ConstantNode_Object(node) {\n return createConstantNode(0);\n },\n 'SymbolNode, Object': function SymbolNode_Object(node, constNodes) {\n if (constNodes[node] !== undefined) {\n return createConstantNode(0);\n }\n return createConstantNode(1);\n },\n 'ParenthesisNode, Object': function ParenthesisNode_Object(node, constNodes) {\n return new ParenthesisNode(_derivative(node.content, constNodes));\n },\n 'FunctionAssignmentNode, Object': function FunctionAssignmentNode_Object(node, constNodes) {\n if (constNodes[node] !== undefined) {\n return createConstantNode(0);\n }\n return _derivative(node.expr, constNodes);\n },\n 'FunctionNode, Object': function FunctionNode_Object(node, constNodes) {\n if (constNodes[node] !== undefined) {\n return createConstantNode(0);\n }\n var arg0 = node.args[0];\n var arg1;\n var div = false; // is output a fraction?\n var negative = false; // is output negative?\n\n var funcDerivative;\n switch (node.name) {\n case 'cbrt':\n // d/dx(cbrt(x)) = 1 / (3x^(2/3))\n div = true;\n funcDerivative = new OperatorNode('*', 'multiply', [createConstantNode(3), new OperatorNode('^', 'pow', [arg0, new OperatorNode('/', 'divide', [createConstantNode(2), createConstantNode(3)])])]);\n break;\n case 'sqrt':\n case 'nthRoot':\n // d/dx(sqrt(x)) = 1 / (2*sqrt(x))\n if (node.args.length === 1) {\n div = true;\n funcDerivative = new OperatorNode('*', 'multiply', [createConstantNode(2), new FunctionNode('sqrt', [arg0])]);\n } else if (node.args.length === 2) {\n // Rearrange from nthRoot(x, a) -> x^(1/a)\n arg1 = new OperatorNode('/', 'divide', [createConstantNode(1), node.args[1]]);\n\n // Is a variable?\n constNodes[arg1] = constNodes[node.args[1]];\n return _derivative(new OperatorNode('^', 'pow', [arg0, arg1]), constNodes);\n }\n break;\n case 'log10':\n arg1 = createConstantNode(10);\n /* fall through! */\n case 'log':\n if (!arg1 && node.args.length === 1) {\n // d/dx(log(x)) = 1 / x\n funcDerivative = arg0.clone();\n div = true;\n } else if (node.args.length === 1 && arg1 || node.args.length === 2 && constNodes[node.args[1]] !== undefined) {\n // d/dx(log(x, c)) = 1 / (x*ln(c))\n funcDerivative = new OperatorNode('*', 'multiply', [arg0.clone(), new FunctionNode('log', [arg1 || node.args[1]])]);\n div = true;\n } else if (node.args.length === 2) {\n // d/dx(log(f(x), g(x))) = d/dx(log(f(x)) / log(g(x)))\n return _derivative(new OperatorNode('/', 'divide', [new FunctionNode('log', [arg0]), new FunctionNode('log', [node.args[1]])]), constNodes);\n }\n break;\n case 'pow':\n if (node.args.length === 2) {\n constNodes[arg1] = constNodes[node.args[1]];\n // Pass to pow operator node parser\n return _derivative(new OperatorNode('^', 'pow', [arg0, node.args[1]]), constNodes);\n }\n break;\n case 'exp':\n // d/dx(e^x) = e^x\n funcDerivative = new FunctionNode('exp', [arg0.clone()]);\n break;\n case 'sin':\n // d/dx(sin(x)) = cos(x)\n funcDerivative = new FunctionNode('cos', [arg0.clone()]);\n break;\n case 'cos':\n // d/dx(cos(x)) = -sin(x)\n funcDerivative = new OperatorNode('-', 'unaryMinus', [new FunctionNode('sin', [arg0.clone()])]);\n break;\n case 'tan':\n // d/dx(tan(x)) = sec(x)^2\n funcDerivative = new OperatorNode('^', 'pow', [new FunctionNode('sec', [arg0.clone()]), createConstantNode(2)]);\n break;\n case 'sec':\n // d/dx(sec(x)) = sec(x)tan(x)\n funcDerivative = new OperatorNode('*', 'multiply', [node, new FunctionNode('tan', [arg0.clone()])]);\n break;\n case 'csc':\n // d/dx(csc(x)) = -csc(x)cot(x)\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [node, new FunctionNode('cot', [arg0.clone()])]);\n break;\n case 'cot':\n // d/dx(cot(x)) = -csc(x)^2\n negative = true;\n funcDerivative = new OperatorNode('^', 'pow', [new FunctionNode('csc', [arg0.clone()]), createConstantNode(2)]);\n break;\n case 'asin':\n // d/dx(asin(x)) = 1 / sqrt(1 - x^2)\n div = true;\n funcDerivative = new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [createConstantNode(1), new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)])])]);\n break;\n case 'acos':\n // d/dx(acos(x)) = -1 / sqrt(1 - x^2)\n div = true;\n negative = true;\n funcDerivative = new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [createConstantNode(1), new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)])])]);\n break;\n case 'atan':\n // d/dx(atan(x)) = 1 / (x^2 + 1)\n div = true;\n funcDerivative = new OperatorNode('+', 'add', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)]);\n break;\n case 'asec':\n // d/dx(asec(x)) = 1 / (|x|*sqrt(x^2 - 1))\n div = true;\n funcDerivative = new OperatorNode('*', 'multiply', [new FunctionNode('abs', [arg0.clone()]), new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)])])]);\n break;\n case 'acsc':\n // d/dx(acsc(x)) = -1 / (|x|*sqrt(x^2 - 1))\n div = true;\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [new FunctionNode('abs', [arg0.clone()]), new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)])])]);\n break;\n case 'acot':\n // d/dx(acot(x)) = -1 / (x^2 + 1)\n div = true;\n negative = true;\n funcDerivative = new OperatorNode('+', 'add', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)]);\n break;\n case 'sinh':\n // d/dx(sinh(x)) = cosh(x)\n funcDerivative = new FunctionNode('cosh', [arg0.clone()]);\n break;\n case 'cosh':\n // d/dx(cosh(x)) = sinh(x)\n funcDerivative = new FunctionNode('sinh', [arg0.clone()]);\n break;\n case 'tanh':\n // d/dx(tanh(x)) = sech(x)^2\n funcDerivative = new OperatorNode('^', 'pow', [new FunctionNode('sech', [arg0.clone()]), createConstantNode(2)]);\n break;\n case 'sech':\n // d/dx(sech(x)) = -sech(x)tanh(x)\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [node, new FunctionNode('tanh', [arg0.clone()])]);\n break;\n case 'csch':\n // d/dx(csch(x)) = -csch(x)coth(x)\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [node, new FunctionNode('coth', [arg0.clone()])]);\n break;\n case 'coth':\n // d/dx(coth(x)) = -csch(x)^2\n negative = true;\n funcDerivative = new OperatorNode('^', 'pow', [new FunctionNode('csch', [arg0.clone()]), createConstantNode(2)]);\n break;\n case 'asinh':\n // d/dx(asinh(x)) = 1 / sqrt(x^2 + 1)\n div = true;\n funcDerivative = new FunctionNode('sqrt', [new OperatorNode('+', 'add', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)])]);\n break;\n case 'acosh':\n // d/dx(acosh(x)) = 1 / sqrt(x^2 - 1); XXX potentially only for x >= 1 (the real spectrum)\n div = true;\n funcDerivative = new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)])]);\n break;\n case 'atanh':\n // d/dx(atanh(x)) = 1 / (1 - x^2)\n div = true;\n funcDerivative = new OperatorNode('-', 'subtract', [createConstantNode(1), new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)])]);\n break;\n case 'asech':\n // d/dx(asech(x)) = -1 / (x*sqrt(1 - x^2))\n div = true;\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [arg0.clone(), new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [createConstantNode(1), new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)])])])]);\n break;\n case 'acsch':\n // d/dx(acsch(x)) = -1 / (|x|*sqrt(x^2 + 1))\n div = true;\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [new FunctionNode('abs', [arg0.clone()]), new FunctionNode('sqrt', [new OperatorNode('+', 'add', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)])])]);\n break;\n case 'acoth':\n // d/dx(acoth(x)) = -1 / (1 - x^2)\n div = true;\n negative = true;\n funcDerivative = new OperatorNode('-', 'subtract', [createConstantNode(1), new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)])]);\n break;\n case 'abs':\n // d/dx(abs(x)) = abs(x)/x\n funcDerivative = new OperatorNode('/', 'divide', [new FunctionNode(new SymbolNode('abs'), [arg0.clone()]), arg0.clone()]);\n break;\n case 'gamma': // Needs digamma function, d/dx(gamma(x)) = gamma(x)digamma(x)\n default:\n throw new Error('Cannot process function \"' + node.name + '\" in derivative: ' + 'the function is not supported, undefined, or the number of arguments passed to it are not supported');\n }\n var op, func;\n if (div) {\n op = '/';\n func = 'divide';\n } else {\n op = '*';\n func = 'multiply';\n }\n\n /* Apply chain rule to all functions:\n F(x) = f(g(x))\n F'(x) = g'(x)*f'(g(x)) */\n var chainDerivative = _derivative(arg0, constNodes);\n if (negative) {\n chainDerivative = new OperatorNode('-', 'unaryMinus', [chainDerivative]);\n }\n return new OperatorNode(op, func, [chainDerivative, funcDerivative]);\n },\n 'OperatorNode, Object': function OperatorNode_Object(node, constNodes) {\n if (constNodes[node] !== undefined) {\n return createConstantNode(0);\n }\n if (node.op === '+') {\n // d/dx(sum(f(x)) = sum(f'(x))\n return new OperatorNode(node.op, node.fn, node.args.map(function (arg) {\n return _derivative(arg, constNodes);\n }));\n }\n if (node.op === '-') {\n // d/dx(+/-f(x)) = +/-f'(x)\n if (node.isUnary()) {\n return new OperatorNode(node.op, node.fn, [_derivative(node.args[0], constNodes)]);\n }\n\n // Linearity of differentiation, d/dx(f(x) +/- g(x)) = f'(x) +/- g'(x)\n if (node.isBinary()) {\n return new OperatorNode(node.op, node.fn, [_derivative(node.args[0], constNodes), _derivative(node.args[1], constNodes)]);\n }\n }\n if (node.op === '*') {\n // d/dx(c*f(x)) = c*f'(x)\n var constantTerms = node.args.filter(function (arg) {\n return constNodes[arg] !== undefined;\n });\n if (constantTerms.length > 0) {\n var nonConstantTerms = node.args.filter(function (arg) {\n return constNodes[arg] === undefined;\n });\n var nonConstantNode = nonConstantTerms.length === 1 ? nonConstantTerms[0] : new OperatorNode('*', 'multiply', nonConstantTerms);\n var newArgs = constantTerms.concat(_derivative(nonConstantNode, constNodes));\n return new OperatorNode('*', 'multiply', newArgs);\n }\n\n // Product Rule, d/dx(f(x)*g(x)) = f'(x)*g(x) + f(x)*g'(x)\n return new OperatorNode('+', 'add', node.args.map(function (argOuter) {\n return new OperatorNode('*', 'multiply', node.args.map(function (argInner) {\n return argInner === argOuter ? _derivative(argInner, constNodes) : argInner.clone();\n }));\n }));\n }\n if (node.op === '/' && node.isBinary()) {\n var arg0 = node.args[0];\n var arg1 = node.args[1];\n\n // d/dx(f(x) / c) = f'(x) / c\n if (constNodes[arg1] !== undefined) {\n return new OperatorNode('/', 'divide', [_derivative(arg0, constNodes), arg1]);\n }\n\n // Reciprocal Rule, d/dx(c / f(x)) = -c(f'(x)/f(x)^2)\n if (constNodes[arg0] !== undefined) {\n return new OperatorNode('*', 'multiply', [new OperatorNode('-', 'unaryMinus', [arg0]), new OperatorNode('/', 'divide', [_derivative(arg1, constNodes), new OperatorNode('^', 'pow', [arg1.clone(), createConstantNode(2)])])]);\n }\n\n // Quotient rule, d/dx(f(x) / g(x)) = (f'(x)g(x) - f(x)g'(x)) / g(x)^2\n return new OperatorNode('/', 'divide', [new OperatorNode('-', 'subtract', [new OperatorNode('*', 'multiply', [_derivative(arg0, constNodes), arg1.clone()]), new OperatorNode('*', 'multiply', [arg0.clone(), _derivative(arg1, constNodes)])]), new OperatorNode('^', 'pow', [arg1.clone(), createConstantNode(2)])]);\n }\n if (node.op === '^' && node.isBinary()) {\n var _arg = node.args[0];\n var _arg2 = node.args[1];\n if (constNodes[_arg] !== undefined) {\n // If is secretly constant; 0^f(x) = 1 (in JS), 1^f(x) = 1\n if (isConstantNode(_arg) && (isZero(_arg.value) || equal(_arg.value, 1))) {\n return createConstantNode(0);\n }\n\n // d/dx(c^f(x)) = c^f(x)*ln(c)*f'(x)\n return new OperatorNode('*', 'multiply', [node, new OperatorNode('*', 'multiply', [new FunctionNode('log', [_arg.clone()]), _derivative(_arg2.clone(), constNodes)])]);\n }\n if (constNodes[_arg2] !== undefined) {\n if (isConstantNode(_arg2)) {\n // If is secretly constant; f(x)^0 = 1 -> d/dx(1) = 0\n if (isZero(_arg2.value)) {\n return createConstantNode(0);\n }\n // Ignore exponent; f(x)^1 = f(x)\n if (equal(_arg2.value, 1)) {\n return _derivative(_arg, constNodes);\n }\n }\n\n // Elementary Power Rule, d/dx(f(x)^c) = c*f'(x)*f(x)^(c-1)\n var powMinusOne = new OperatorNode('^', 'pow', [_arg.clone(), new OperatorNode('-', 'subtract', [_arg2, createConstantNode(1)])]);\n return new OperatorNode('*', 'multiply', [_arg2.clone(), new OperatorNode('*', 'multiply', [_derivative(_arg, constNodes), powMinusOne])]);\n }\n\n // Functional Power Rule, d/dx(f^g) = f^g*[f'*(g/f) + g'ln(f)]\n return new OperatorNode('*', 'multiply', [new OperatorNode('^', 'pow', [_arg.clone(), _arg2.clone()]), new OperatorNode('+', 'add', [new OperatorNode('*', 'multiply', [_derivative(_arg, constNodes), new OperatorNode('/', 'divide', [_arg2.clone(), _arg.clone()])]), new OperatorNode('*', 'multiply', [_derivative(_arg2, constNodes), new FunctionNode('log', [_arg.clone()])])])]);\n }\n throw new Error('Cannot process operator \"' + node.op + '\" in derivative: ' + 'the operator is not supported, undefined, or the number of arguments passed to it are not supported');\n }\n });\n\n /**\n * Helper function to create a constant node with a specific type\n * (number, BigNumber, Fraction)\n * @param {number} value\n * @param {string} [valueType]\n * @return {ConstantNode}\n */\n function createConstantNode(value, valueType) {\n return new ConstantNode(numeric(value, valueType || safeNumberType(String(value), config)));\n }\n return derivative;\n});", "import { isInteger } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'rationalize';\nvar dependencies = ['config', 'typed', 'equal', 'isZero', 'add', 'subtract', 'multiply', 'divide', 'pow', 'parse', 'simplifyConstant', 'simplifyCore', 'simplify', '?bignumber', '?fraction', 'mathWithTransform', 'matrix', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'SymbolNode', 'ParenthesisNode'];\nexport var createRationalize = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n config,\n typed,\n equal,\n isZero,\n add,\n subtract,\n multiply,\n divide,\n pow,\n parse,\n simplifyConstant,\n simplifyCore,\n simplify,\n fraction,\n bignumber,\n mathWithTransform,\n matrix,\n AccessorNode,\n ArrayNode,\n ConstantNode,\n FunctionNode,\n IndexNode,\n ObjectNode,\n OperatorNode,\n SymbolNode,\n ParenthesisNode\n } = _ref;\n /**\n * Transform a rationalizable expression in a rational fraction.\n * If rational fraction is one variable polynomial then converts\n * the numerator and denominator in canonical form, with decreasing\n * exponents, returning the coefficients of numerator.\n *\n * Syntax:\n *\n * math.rationalize(expr)\n * math.rationalize(expr, detailed)\n * math.rationalize(expr, scope)\n * math.rationalize(expr, scope, detailed)\n *\n * Examples:\n *\n * math.rationalize('sin(x)+y')\n * // Error: There is an unsolved function call\n * math.rationalize('2x/y - y/(x+1)')\n * // (2*x^2-y^2+2*x)/(x*y+y)\n * math.rationalize('(2x+1)^6')\n * // 64*x^6+192*x^5+240*x^4+160*x^3+60*x^2+12*x+1\n * math.rationalize('2x/( (2x-1) / (3x+2) ) - 5x/ ( (3x+4) / (2x^2-5) ) + 3')\n * // -20*x^4+28*x^3+104*x^2+6*x-12)/(6*x^2+5*x-4)\n * math.rationalize('x/(1-x)/(x-2)/(x-3)/(x-4) + 2x/ ( (1-2x)/(2-3x) )/ ((3-4x)/(4-5x) )') =\n * // (-30*x^7+344*x^6-1506*x^5+3200*x^4-3472*x^3+1846*x^2-381*x)/\n * // (-8*x^6+90*x^5-383*x^4+780*x^3-797*x^2+390*x-72)\n *\n * math.rationalize('x+x+x+y',{y:1}) // 3*x+1\n * math.rationalize('x+x+x+y',{}) // 3*x+y\n *\n * const ret = math.rationalize('x+x+x+y',{},true)\n * // ret.expression=3*x+y, ret.variables = [\"x\",\"y\"]\n * const ret = math.rationalize('-2+5x^2',{},true)\n * // ret.expression=5*x^2-2, ret.variables = [\"x\"], ret.coefficients=[-2,0,5]\n *\n * See also:\n *\n * simplify\n *\n * @param {Node|string} expr The expression to check if is a polynomial expression\n * @param {Object|boolean} optional scope of expression or true for already evaluated rational expression at input\n * @param {Boolean} detailed optional True if return an object, false if return expression node (default)\n *\n * @return {Object | Node} The rational polynomial of `expr` or an object\n * `{expression, numerator, denominator, variables, coefficients}`, where\n * `expression` is a `Node` with the node simplified expression,\n * `numerator` is a `Node` with the simplified numerator of expression,\n * `denominator` is a `Node` or `boolean` with the simplified denominator or `false` (if there is no denominator),\n * `variables` is an array with variable names,\n * and `coefficients` is an array with coefficients of numerator sorted by increased exponent\n * {Expression Node} node simplified expression\n *\n */\n function _rationalize(expr) {\n var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var detailed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var setRules = rulesRationalize(); // Rules for change polynomial in near canonical form\n var polyRet = polynomial(expr, scope, true, setRules.firstRules); // Check if expression is a rationalizable polynomial\n var nVars = polyRet.variables.length;\n var noExactFractions = {\n exactFractions: false\n };\n var withExactFractions = {\n exactFractions: true\n };\n expr = polyRet.expression;\n if (nVars >= 1) {\n // If expression in not a constant\n expr = expandPower(expr); // First expand power of polynomials (cannot be made from rules!)\n var sBefore; // Previous expression\n var rules;\n var eDistrDiv = true;\n var redoInic = false;\n // Apply the initial rules, including succ div rules:\n expr = simplify(expr, setRules.firstRules, {}, noExactFractions);\n var s;\n while (true) {\n // Alternate applying successive division rules and distr.div.rules\n // until there are no more changes:\n rules = eDistrDiv ? setRules.distrDivRules : setRules.sucDivRules;\n expr = simplify(expr, rules, {}, withExactFractions);\n eDistrDiv = !eDistrDiv; // Swap between Distr.Div and Succ. Div. Rules\n\n s = expr.toString();\n if (s === sBefore) {\n break; // No changes : end of the loop\n }\n redoInic = true;\n sBefore = s;\n }\n if (redoInic) {\n // Apply first rules again without succ div rules (if there are changes)\n expr = simplify(expr, setRules.firstRulesAgain, {}, noExactFractions);\n }\n // Apply final rules:\n expr = simplify(expr, setRules.finalRules, {}, noExactFractions);\n } // NVars >= 1\n\n var coefficients = [];\n var retRationalize = {};\n if (expr.type === 'OperatorNode' && expr.isBinary() && expr.op === '/') {\n // Separate numerator from denominator\n if (nVars === 1) {\n expr.args[0] = polyToCanonical(expr.args[0], coefficients);\n expr.args[1] = polyToCanonical(expr.args[1]);\n }\n if (detailed) {\n retRationalize.numerator = expr.args[0];\n retRationalize.denominator = expr.args[1];\n }\n } else {\n if (nVars === 1) {\n expr = polyToCanonical(expr, coefficients);\n }\n if (detailed) {\n retRationalize.numerator = expr;\n retRationalize.denominator = null;\n }\n }\n // nVars\n\n if (!detailed) return expr;\n retRationalize.coefficients = coefficients;\n retRationalize.variables = polyRet.variables;\n retRationalize.expression = expr;\n return retRationalize;\n }\n return typed(name, {\n Node: _rationalize,\n 'Node, boolean': (expr, detailed) => _rationalize(expr, {}, detailed),\n 'Node, Object': _rationalize,\n 'Node, Object, boolean': _rationalize\n }); // end of typed rationalize\n\n /**\n * Function to simplify an expression using an optional scope and\n * return it if the expression is a polynomial expression, i.e.\n * an expression with one or more variables and the operators\n * +, -, *, and ^, where the exponent can only be a positive integer.\n *\n * Syntax:\n *\n * polynomial(expr,scope,extended, rules)\n *\n * @param {Node | string} expr The expression to simplify and check if is polynomial expression\n * @param {object} scope Optional scope for expression simplification\n * @param {boolean} extended Optional. Default is false. When true allows divide operator.\n * @param {array} rules Optional. Default is no rule.\n *\n *\n * @return {Object}\n * {Object} node: node simplified expression\n * {Array} variables: variable names\n */\n function polynomial(expr, scope, extended, rules) {\n var variables = [];\n var node = simplify(expr, rules, scope, {\n exactFractions: false\n }); // Resolves any variables and functions with all defined parameters\n extended = !!extended;\n var oper = '+-*' + (extended ? '/' : '');\n recPoly(node);\n var retFunc = {};\n retFunc.expression = node;\n retFunc.variables = variables;\n return retFunc;\n\n // -------------------------------------------------------------------------------------------------------\n\n /**\n * Function to simplify an expression using an optional scope and\n * return it if the expression is a polynomial expression, i.e.\n * an expression with one or more variables and the operators\n * +, -, *, and ^, where the exponent can only be a positive integer.\n *\n * Syntax:\n *\n * recPoly(node)\n *\n *\n * @param {Node} node The current sub tree expression in recursion\n *\n * @return nothing, throw an exception if error\n */\n function recPoly(node) {\n var tp = node.type; // node type\n if (tp === 'FunctionNode') {\n // No function call in polynomial expression\n throw new Error('There is an unsolved function call');\n } else if (tp === 'OperatorNode') {\n if (node.op === '^') {\n // TODO: handle negative exponents like in '1/x^(-2)'\n if (node.args[1].type !== 'ConstantNode' || !isInteger(parseFloat(node.args[1].value))) {\n throw new Error('There is a non-integer exponent');\n } else {\n recPoly(node.args[0]);\n }\n } else {\n if (!oper.includes(node.op)) {\n throw new Error('Operator ' + node.op + ' invalid in polynomial expression');\n }\n for (var i = 0; i < node.args.length; i++) {\n recPoly(node.args[i]);\n }\n } // type of operator\n } else if (tp === 'SymbolNode') {\n var _name = node.name; // variable name\n var pos = variables.indexOf(_name);\n if (pos === -1) {\n // new variable in expression\n variables.push(_name);\n }\n } else if (tp === 'ParenthesisNode') {\n recPoly(node.content);\n } else if (tp !== 'ConstantNode') {\n throw new Error('type ' + tp + ' is not allowed in polynomial expression');\n }\n } // end of recPoly\n } // end of polynomial\n\n // ---------------------------------------------------------------------------------------\n /**\n * Return a rule set to rationalize an polynomial expression in rationalize\n *\n * Syntax:\n *\n * rulesRationalize()\n *\n * @return {array} rule set to rationalize an polynomial expression\n */\n function rulesRationalize() {\n var oldRules = [simplifyCore,\n // sCore\n {\n l: 'n+n',\n r: '2*n'\n }, {\n l: 'n+-n',\n r: '0'\n }, simplifyConstant,\n // sConstant\n {\n l: 'n*(n1^-1)',\n r: 'n/n1'\n }, {\n l: 'n*n1^-n2',\n r: 'n/n1^n2'\n }, {\n l: 'n1^-1',\n r: '1/n1'\n }, {\n l: 'n*(n1/n2)',\n r: '(n*n1)/n2'\n }, {\n l: '1*n',\n r: 'n'\n }];\n var rulesFirst = [{\n l: '(-n1)/(-n2)',\n r: 'n1/n2'\n },\n // Unary division\n {\n l: '(-n1)*(-n2)',\n r: 'n1*n2'\n },\n // Unary multiplication\n {\n l: 'n1--n2',\n r: 'n1+n2'\n },\n // '--' elimination\n {\n l: 'n1-n2',\n r: 'n1+(-n2)'\n },\n // Subtraction turn into add with un\uFFFDry minus\n {\n l: '(n1+n2)*n3',\n r: '(n1*n3 + n2*n3)'\n },\n // Distributive 1\n {\n l: 'n1*(n2+n3)',\n r: '(n1*n2+n1*n3)'\n },\n // Distributive 2\n {\n l: 'c1*n + c2*n',\n r: '(c1+c2)*n'\n },\n // Joining constants\n {\n l: 'c1*n + n',\n r: '(c1+1)*n'\n },\n // Joining constants\n {\n l: 'c1*n - c2*n',\n r: '(c1-c2)*n'\n },\n // Joining constants\n {\n l: 'c1*n - n',\n r: '(c1-1)*n'\n },\n // Joining constants\n {\n l: 'v/c',\n r: '(1/c)*v'\n },\n // variable/constant (new!)\n {\n l: 'v/-c',\n r: '-(1/c)*v'\n },\n // variable/constant (new!)\n {\n l: '-v*-c',\n r: 'c*v'\n },\n // Inversion constant and variable 1\n {\n l: '-v*c',\n r: '-c*v'\n },\n // Inversion constant and variable 2\n {\n l: 'v*-c',\n r: '-c*v'\n },\n // Inversion constant and variable 3\n {\n l: 'v*c',\n r: 'c*v'\n },\n // Inversion constant and variable 4\n {\n l: '-(-n1*n2)',\n r: '(n1*n2)'\n },\n // Unary propagation\n {\n l: '-(n1*n2)',\n r: '(-n1*n2)'\n },\n // Unary propagation\n {\n l: '-(-n1+n2)',\n r: '(n1-n2)'\n },\n // Unary propagation\n {\n l: '-(n1+n2)',\n r: '(-n1-n2)'\n },\n // Unary propagation\n {\n l: '(n1^n2)^n3',\n r: '(n1^(n2*n3))'\n },\n // Power to Power\n {\n l: '-(-n1/n2)',\n r: '(n1/n2)'\n },\n // Division and Unary\n {\n l: '-(n1/n2)',\n r: '(-n1/n2)'\n }]; // Divisao and Unary\n\n var rulesDistrDiv = [{\n l: '(n1/n2 + n3/n4)',\n r: '((n1*n4 + n3*n2)/(n2*n4))'\n },\n // Sum of fractions\n {\n l: '(n1/n2 + n3)',\n r: '((n1 + n3*n2)/n2)'\n },\n // Sum fraction with number 1\n {\n l: '(n1 + n2/n3)',\n r: '((n1*n3 + n2)/n3)'\n }]; // Sum fraction with number 1\n\n var rulesSucDiv = [{\n l: '(n1/(n2/n3))',\n r: '((n1*n3)/n2)'\n },\n // Division simplification\n {\n l: '(n1/n2/n3)',\n r: '(n1/(n2*n3))'\n }];\n var setRules = {}; // rules set in 4 steps.\n\n // All rules => infinite loop\n // setRules.allRules =oldRules.concat(rulesFirst,rulesDistrDiv,rulesSucDiv)\n\n setRules.firstRules = oldRules.concat(rulesFirst, rulesSucDiv); // First rule set\n setRules.distrDivRules = rulesDistrDiv; // Just distr. div. rules\n setRules.sucDivRules = rulesSucDiv; // Jus succ. div. rules\n setRules.firstRulesAgain = oldRules.concat(rulesFirst); // Last rules set without succ. div.\n\n // Division simplification\n\n // Second rule set.\n // There is no aggregate expression with parentesis, but the only variable can be scattered.\n setRules.finalRules = [simplifyCore,\n // simplify.rules[0]\n {\n l: 'n*-n',\n r: '-n^2'\n },\n // Joining multiply with power 1\n {\n l: 'n*n',\n r: 'n^2'\n },\n // Joining multiply with power 2\n simplifyConstant,\n // simplify.rules[14] old 3rd index in oldRules\n {\n l: 'n*-n^n1',\n r: '-n^(n1+1)'\n },\n // Joining multiply with power 3\n {\n l: 'n*n^n1',\n r: 'n^(n1+1)'\n },\n // Joining multiply with power 4\n {\n l: 'n^n1*-n^n2',\n r: '-n^(n1+n2)'\n },\n // Joining multiply with power 5\n {\n l: 'n^n1*n^n2',\n r: 'n^(n1+n2)'\n },\n // Joining multiply with power 6\n {\n l: 'n^n1*-n',\n r: '-n^(n1+1)'\n },\n // Joining multiply with power 7\n {\n l: 'n^n1*n',\n r: 'n^(n1+1)'\n },\n // Joining multiply with power 8\n {\n l: 'n^n1/-n',\n r: '-n^(n1-1)'\n },\n // Joining multiply with power 8\n {\n l: 'n^n1/n',\n r: 'n^(n1-1)'\n },\n // Joining division with power 1\n {\n l: 'n/-n^n1',\n r: '-n^(1-n1)'\n },\n // Joining division with power 2\n {\n l: 'n/n^n1',\n r: 'n^(1-n1)'\n },\n // Joining division with power 3\n {\n l: 'n^n1/-n^n2',\n r: 'n^(n1-n2)'\n },\n // Joining division with power 4\n {\n l: 'n^n1/n^n2',\n r: 'n^(n1-n2)'\n },\n // Joining division with power 5\n {\n l: 'n1+(-n2*n3)',\n r: 'n1-n2*n3'\n },\n // Solving useless parenthesis 1\n {\n l: 'v*(-c)',\n r: '-c*v'\n },\n // Solving useless unary 2\n {\n l: 'n1+-n2',\n r: 'n1-n2'\n },\n // Solving +- together (new!)\n {\n l: 'v*c',\n r: 'c*v'\n },\n // inversion constant with variable\n {\n l: '(n1^n2)^n3',\n r: '(n1^(n2*n3))'\n } // Power to Power\n ];\n return setRules;\n } // End rulesRationalize\n\n // ---------------------------------------------------------------------------------------\n /**\n * Expand recursively a tree node for handling with expressions with exponents\n * (it's not for constants, symbols or functions with exponents)\n * PS: The other parameters are internal for recursion\n *\n * Syntax:\n *\n * expandPower(node)\n *\n * @param {Node} node Current expression node\n * @param {node} parent Parent current node inside the recursion\n * @param (int} Parent number of chid inside the rercursion\n *\n * @return {node} node expression with all powers expanded.\n */\n function expandPower(node, parent, indParent) {\n var tp = node.type;\n var internal = arguments.length > 1; // TRUE in internal calls\n\n if (tp === 'OperatorNode' && node.isBinary()) {\n var does = false;\n var val;\n if (node.op === '^') {\n // First operator: Parenthesis or UnaryMinus\n if ((node.args[0].type === 'ParenthesisNode' || node.args[0].type === 'OperatorNode') && node.args[1].type === 'ConstantNode') {\n // Second operator: Constant\n val = parseFloat(node.args[1].value);\n does = val >= 2 && isInteger(val);\n }\n }\n if (does) {\n // Exponent >= 2\n // Before:\n // operator A --> Subtree\n // parent pow\n // constant\n //\n if (val > 2) {\n // Exponent > 2,\n // AFTER: (exponent > 2)\n // operator A --> Subtree\n // parent *\n // deep clone (operator A --> Subtree\n // pow\n // constant - 1\n //\n var nEsqTopo = node.args[0];\n var nDirTopo = new OperatorNode('^', 'pow', [node.args[0].cloneDeep(), new ConstantNode(val - 1)]);\n node = new OperatorNode('*', 'multiply', [nEsqTopo, nDirTopo]);\n } else {\n // Expo = 2 - no power\n // AFTER: (exponent = 2)\n // operator A --> Subtree\n // parent oper\n // deep clone (operator A --> Subtree)\n //\n node = new OperatorNode('*', 'multiply', [node.args[0], node.args[0].cloneDeep()]);\n }\n if (internal) {\n // Change parent references in internal recursive calls\n if (indParent === 'content') {\n parent.content = node;\n } else {\n parent.args[indParent] = node;\n }\n }\n } // does\n } // binary OperatorNode\n\n if (tp === 'ParenthesisNode') {\n // Recursion\n expandPower(node.content, node, 'content');\n } else if (tp !== 'ConstantNode' && tp !== 'SymbolNode') {\n for (var i = 0; i < node.args.length; i++) {\n expandPower(node.args[i], node, i);\n }\n }\n if (!internal) {\n // return the root node\n return node;\n }\n } // End expandPower\n\n // ---------------------------------------------------------------------------------------\n /**\n * Auxilary function for rationalize\n * Convert near canonical polynomial in one variable in a canonical polynomial\n * with one term for each exponent in decreasing order\n *\n * Syntax:\n *\n * polyToCanonical(node [, coefficients])\n *\n * @param {Node | string} expr The near canonical polynomial expression to convert in a a canonical polynomial expression\n *\n * The string or tree expression needs to be at below syntax, with free spaces:\n * ( (^(-)? | [+-]? )cte (*)? var (^expo)? | cte )+\n * Where 'var' is one variable with any valid name\n * 'cte' are real numeric constants with any value. It can be omitted if equal than 1\n * 'expo' are integers greater than 0. It can be omitted if equal than 1.\n *\n * @param {array} coefficients Optional returns coefficients sorted by increased exponent\n *\n *\n * @return {node} new node tree with one variable polynomial or string error.\n */\n function polyToCanonical(node, coefficients) {\n if (coefficients === undefined) {\n coefficients = [];\n } // coefficients.\n\n coefficients[0] = 0; // index is the exponent\n var o = {};\n o.cte = 1;\n o.oper = '+';\n\n // fire: mark with * or ^ when finds * or ^ down tree, reset to \"\" with + and -.\n // It is used to deduce the exponent: 1 for *, 0 for \"\".\n o.fire = '';\n var maxExpo = 0; // maximum exponent\n var varname = ''; // variable name\n\n recurPol(node, null, o);\n maxExpo = coefficients.length - 1;\n var first = true;\n var no;\n for (var i = maxExpo; i >= 0; i--) {\n if (coefficients[i] === 0) continue;\n var n1 = new ConstantNode(first ? coefficients[i] : Math.abs(coefficients[i]));\n var op = coefficients[i] < 0 ? '-' : '+';\n if (i > 0) {\n // Is not a constant without variable\n var n2 = new SymbolNode(varname);\n if (i > 1) {\n var n3 = new ConstantNode(i);\n n2 = new OperatorNode('^', 'pow', [n2, n3]);\n }\n if (coefficients[i] === -1 && first) {\n n1 = new OperatorNode('-', 'unaryMinus', [n2]);\n } else if (Math.abs(coefficients[i]) === 1) {\n n1 = n2;\n } else {\n n1 = new OperatorNode('*', 'multiply', [n1, n2]);\n }\n }\n if (first) {\n no = n1;\n } else if (op === '+') {\n no = new OperatorNode('+', 'add', [no, n1]);\n } else {\n no = new OperatorNode('-', 'subtract', [no, n1]);\n }\n first = false;\n } // for\n\n if (first) {\n return new ConstantNode(0);\n } else {\n return no;\n }\n\n /**\n * Recursive auxilary function inside polyToCanonical for\n * converting expression in canonical form\n *\n * Syntax:\n *\n * recurPol(node, noPai, obj)\n *\n * @param {Node} node The current subpolynomial expression\n * @param {Node | Null} noPai The current parent node\n * @param {object} obj Object with many internal flags\n *\n * @return {} No return. If error, throws an exception\n */\n function recurPol(node, noPai, o) {\n var tp = node.type;\n if (tp === 'FunctionNode') {\n // ***** FunctionName *****\n // No function call in polynomial expression\n throw new Error('There is an unsolved function call');\n } else if (tp === 'OperatorNode') {\n // ***** OperatorName *****\n if (!'+-*^'.includes(node.op)) throw new Error('Operator ' + node.op + ' invalid');\n if (noPai !== null) {\n // -(unary),^ : children of *,+,-\n if ((node.fn === 'unaryMinus' || node.fn === 'pow') && noPai.fn !== 'add' && noPai.fn !== 'subtract' && noPai.fn !== 'multiply') {\n throw new Error('Invalid ' + node.op + ' placing');\n }\n\n // -,+,* : children of +,-\n if ((node.fn === 'subtract' || node.fn === 'add' || node.fn === 'multiply') && noPai.fn !== 'add' && noPai.fn !== 'subtract') {\n throw new Error('Invalid ' + node.op + ' placing');\n }\n\n // -,+ : first child\n if ((node.fn === 'subtract' || node.fn === 'add' || node.fn === 'unaryMinus') && o.noFil !== 0) {\n throw new Error('Invalid ' + node.op + ' placing');\n }\n } // Has parent\n\n // Firers: ^,* Old: ^,&,-(unary): firers\n if (node.op === '^' || node.op === '*') {\n o.fire = node.op;\n }\n for (var _i = 0; _i < node.args.length; _i++) {\n // +,-: reset fire\n if (node.fn === 'unaryMinus') o.oper = '-';\n if (node.op === '+' || node.fn === 'subtract') {\n o.fire = '';\n o.cte = 1; // default if there is no constant\n o.oper = _i === 0 ? '+' : node.op;\n }\n o.noFil = _i; // number of son\n recurPol(node.args[_i], node, o);\n } // for in children\n } else if (tp === 'SymbolNode') {\n // ***** SymbolName *****\n if (node.name !== varname && varname !== '') {\n throw new Error('There is more than one variable');\n }\n varname = node.name;\n if (noPai === null) {\n coefficients[1] = 1;\n return;\n }\n\n // ^: Symbol is First child\n if (noPai.op === '^' && o.noFil !== 0) {\n throw new Error('In power the variable should be the first parameter');\n }\n\n // *: Symbol is Second child\n if (noPai.op === '*' && o.noFil !== 1) {\n throw new Error('In multiply the variable should be the second parameter');\n }\n\n // Symbol: firers '',* => it means there is no exponent above, so it's 1 (cte * var)\n if (o.fire === '' || o.fire === '*') {\n if (maxExpo < 1) coefficients[1] = 0;\n coefficients[1] += o.cte * (o.oper === '+' ? 1 : -1);\n maxExpo = Math.max(1, maxExpo);\n }\n } else if (tp === 'ConstantNode') {\n var valor = parseFloat(node.value);\n if (noPai === null) {\n coefficients[0] = valor;\n return;\n }\n if (noPai.op === '^') {\n // cte: second child of power\n if (o.noFil !== 1) throw new Error('Constant cannot be powered');\n if (!isInteger(valor) || valor <= 0) {\n throw new Error('Non-integer exponent is not allowed');\n }\n for (var _i2 = maxExpo + 1; _i2 < valor; _i2++) coefficients[_i2] = 0;\n if (valor > maxExpo) coefficients[valor] = 0;\n coefficients[valor] += o.cte * (o.oper === '+' ? 1 : -1);\n maxExpo = Math.max(valor, maxExpo);\n return;\n }\n o.cte = valor;\n\n // Cte: firer '' => There is no exponent and no multiplication, so the exponent is 0.\n if (o.fire === '') {\n coefficients[0] += o.cte * (o.oper === '+' ? 1 : -1);\n }\n } else {\n throw new Error('Type ' + tp + ' is not allowed');\n }\n } // End of recurPol\n } // End of polyToCanonical\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'zpk2tf';\nvar dependencies = ['typed', 'add', 'multiply', 'Complex', 'number'];\nexport var createZpk2tf = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n multiply,\n Complex,\n number\n } = _ref;\n /**\n * Compute the transfer function of a zero-pole-gain model.\n *\n * Syntax:\n * math.zpk2tf(z, p, k)\n *\n * Examples:\n * math.zpk2tf([1, 2], [-1, -2], 1) // returns [[1, -3, 2], [1, 3, 2]]\n *\n * See also:\n * freqz\n *\n * @param {Array} z Array of zeros values\n * @param {Array} p Array of poles values\n * @param {number} k Gain value\n * @return {Array} Two dimensional array containing the numerator (first row) and denominator (second row) polynomials\n *\n */\n return typed(name, {\n 'Array,Array,number': function ArrayArrayNumber(z, p, k) {\n return _zpk2tf(z, p, k);\n },\n 'Array,Array': function ArrayArray(z, p) {\n return _zpk2tf(z, p, 1);\n },\n 'Matrix,Matrix,number': function MatrixMatrixNumber(z, p, k) {\n return _zpk2tf(z.valueOf(), p.valueOf(), k);\n },\n 'Matrix,Matrix': function MatrixMatrix(z, p) {\n return _zpk2tf(z.valueOf(), p.valueOf(), 1);\n }\n });\n function _zpk2tf(z, p, k) {\n // if z is bignumber, convert it to number\n if (z.some(el => el.type === 'BigNumber')) {\n z = z.map(el => number(el));\n }\n // if p is bignumber, convert it to number\n if (p.some(el => el.type === 'BigNumber')) {\n p = p.map(el => number(el));\n }\n var num = [Complex(1, 0)];\n var den = [Complex(1, 0)];\n for (var i = 0; i < z.length; i++) {\n var zero = z[i];\n if (typeof zero === 'number') zero = Complex(zero, 0);\n num = _multiply(num, [Complex(1, 0), Complex(-zero.re, -zero.im)]);\n }\n for (var _i = 0; _i < p.length; _i++) {\n var pole = p[_i];\n if (typeof pole === 'number') pole = Complex(pole, 0);\n den = _multiply(den, [Complex(1, 0), Complex(-pole.re, -pole.im)]);\n }\n for (var _i2 = 0; _i2 < num.length; _i2++) {\n num[_i2] = multiply(num[_i2], k);\n }\n return [num, den];\n }\n function _multiply(a, b) {\n var c = [];\n for (var i = 0; i < a.length + b.length - 1; i++) {\n c[i] = Complex(0, 0);\n for (var j = 0; j < a.length; j++) {\n if (i - j >= 0 && i - j < b.length) {\n c[i] = add(c[i], multiply(a[j], b[i - j]));\n }\n }\n }\n return c;\n }\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'freqz';\nvar dependencies = ['typed', 'add', 'multiply', 'Complex', 'divide', 'matrix'];\nexport var createFreqz = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n multiply,\n Complex,\n divide,\n matrix\n } = _ref;\n /**\n * Calculates the frequency response of a filter given its numerator and denominator coefficients.\n *\n * Syntax:\n * math.freqz(b, a)\n * math.freqz(b, a, w)\n *\n * Examples:\n * math.freqz([1, 2], [1, 2, 3], 4) // returns { h: [0.5 + 0i, 0.4768589245763655 + 0.2861153547458193i, 0.25000000000000006 + 0.75i, -0.770976571635189 + 0.4625859429811135i], w: [0, 0.7853981633974483, 1.5707963267948966, 2.356194490192345 ] }\n * math.freqz([1, 2], [1, 2, 3], [0, 1]) // returns { h: [0.5 + 0i, 0.45436781 + 0.38598051i], w: [0, 1] }\n *\n * See also:\n * zpk2tf\n *\n * @param {Array.} b The numerator coefficients of the filter.\n * @param {Array.} a The denominator coefficients of the filter.\n * @param {Array.} [w] A vector of frequencies (in radians/sample) at which the frequency response is to be computed or the number of points to compute (if a number is not provided, the default is 512 points)\n * @returns {Object} An object with two properties: h, a vector containing the complex frequency response, and w, a vector containing the normalized frequencies (in radians/sample) at which the response was computed.\n *\n *\n */\n return typed(name, {\n 'Array, Array': function Array_Array(b, a) {\n var w = createBins(512);\n return _freqz(b, a, w);\n },\n 'Array, Array, Array': function Array_Array_Array(b, a, w) {\n return _freqz(b, a, w);\n },\n 'Array, Array, number': function Array_Array_number(b, a, w) {\n if (w < 0) {\n throw new Error('w must be a positive number');\n }\n var w2 = createBins(w);\n return _freqz(b, a, w2);\n },\n 'Matrix, Matrix': function Matrix_Matrix(b, a) {\n // console.log('here')\n var _w = createBins(512);\n var {\n w,\n h\n } = _freqz(b.valueOf(), a.valueOf(), _w);\n return {\n w: matrix(w),\n h: matrix(h)\n };\n },\n 'Matrix, Matrix, Matrix': function Matrix_Matrix_Matrix(b, a, w) {\n var {\n h\n } = _freqz(b.valueOf(), a.valueOf(), w.valueOf());\n return {\n h: matrix(h),\n w: matrix(w)\n };\n },\n 'Matrix, Matrix, number': function Matrix_Matrix_number(b, a, w) {\n if (w < 0) {\n throw new Error('w must be a positive number');\n }\n var _w = createBins(w);\n var {\n h\n } = _freqz(b.valueOf(), a.valueOf(), _w);\n return {\n h: matrix(h),\n w: matrix(_w)\n };\n }\n });\n function _freqz(b, a, w) {\n var num = [];\n var den = [];\n for (var i = 0; i < w.length; i++) {\n var sumNum = Complex(0, 0);\n var sumDen = Complex(0, 0);\n for (var j = 0; j < b.length; j++) {\n sumNum = add(sumNum, multiply(b[j], Complex(Math.cos(-j * w[i]), Math.sin(-j * w[i]))));\n }\n for (var _j = 0; _j < a.length; _j++) {\n sumDen = add(sumDen, multiply(a[_j], Complex(Math.cos(-_j * w[i]), Math.sin(-_j * w[i]))));\n }\n num.push(sumNum);\n den.push(sumDen);\n }\n var h = [];\n for (var _i = 0; _i < num.length; _i++) {\n h.push(divide(num[_i], den[_i]));\n }\n return {\n h,\n w\n };\n }\n function createBins(n) {\n var bins = [];\n for (var i = 0; i < n; i++) {\n bins.push(i / n * Math.PI);\n }\n return bins;\n }\n});", "import { factory } from '../utils/factory.js';\nvar name = 'reviver';\nvar dependencies = ['classes'];\nexport var createReviver = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n classes\n } = _ref;\n /**\n * Instantiate mathjs data types from their JSON representation\n * @param {string} key\n * @param {*} value\n * @returns {*} Returns the revived object\n */\n return function reviver(key, value) {\n var constructor = classes[value && value.mathjs];\n if (constructor && typeof constructor.fromJSON === 'function') {\n return constructor.fromJSON(value);\n }\n return value;\n };\n});", "import { factory } from '../utils/factory.js';\nvar name = 'replacer';\nvar dependencies = [];\nexport var createReplacer = /* #__PURE__ */factory(name, dependencies, () => {\n /**\n * Stringify data types into their JSON representation.\n * Most data types can be serialized using their `.toJSON` method,\n * but not all, for example the number `Infinity`. For these cases you have\n * to use the replacer. Example usage:\n *\n * JSON.stringify([2, Infinity], math.replacer)\n *\n * @param {string} key\n * @param {*} value\n * @returns {*} Returns the replaced object\n */\n return function replacer(key, value) {\n // the numeric values Infinitiy, -Infinity, and NaN cannot be serialized to JSON\n if (typeof value === 'number' && (!isFinite(value) || isNaN(value))) {\n return {\n mathjs: 'number',\n value: String(value)\n };\n }\n if (typeof value === 'bigint') {\n return {\n mathjs: 'bigint',\n value: String(value)\n };\n }\n return value;\n };\n});", "export var version = '13.2.1';\n// Note: This file is automatically generated when building math.js.\n// Changes made in this file will be overwritten.", "import { factory } from './utils/factory.js';\nimport { version } from './version.js';\nimport { createBigNumberE, createBigNumberPhi, createBigNumberPi, createBigNumberTau } from './utils/bignumber/constants.js';\nimport { pi, tau, e, phi } from './plain/number/index.js';\nexport var createTrue = /* #__PURE__ */factory('true', [], () => true);\nexport var createFalse = /* #__PURE__ */factory('false', [], () => false);\nexport var createNull = /* #__PURE__ */factory('null', [], () => null);\nexport var createInfinity = /* #__PURE__ */recreateFactory('Infinity', ['config', '?BigNumber'], _ref => {\n var {\n config,\n BigNumber\n } = _ref;\n return config.number === 'BigNumber' ? new BigNumber(Infinity) : Infinity;\n});\nexport var createNaN = /* #__PURE__ */recreateFactory('NaN', ['config', '?BigNumber'], _ref2 => {\n var {\n config,\n BigNumber\n } = _ref2;\n return config.number === 'BigNumber' ? new BigNumber(NaN) : NaN;\n});\nexport var createPi = /* #__PURE__ */recreateFactory('pi', ['config', '?BigNumber'], _ref3 => {\n var {\n config,\n BigNumber\n } = _ref3;\n return config.number === 'BigNumber' ? createBigNumberPi(BigNumber) : pi;\n});\nexport var createTau = /* #__PURE__ */recreateFactory('tau', ['config', '?BigNumber'], _ref4 => {\n var {\n config,\n BigNumber\n } = _ref4;\n return config.number === 'BigNumber' ? createBigNumberTau(BigNumber) : tau;\n});\nexport var createE = /* #__PURE__ */recreateFactory('e', ['config', '?BigNumber'], _ref5 => {\n var {\n config,\n BigNumber\n } = _ref5;\n return config.number === 'BigNumber' ? createBigNumberE(BigNumber) : e;\n});\n\n// golden ratio, (1+sqrt(5))/2\nexport var createPhi = /* #__PURE__ */recreateFactory('phi', ['config', '?BigNumber'], _ref6 => {\n var {\n config,\n BigNumber\n } = _ref6;\n return config.number === 'BigNumber' ? createBigNumberPhi(BigNumber) : phi;\n});\nexport var createLN2 = /* #__PURE__ */recreateFactory('LN2', ['config', '?BigNumber'], _ref7 => {\n var {\n config,\n BigNumber\n } = _ref7;\n return config.number === 'BigNumber' ? new BigNumber(2).ln() : Math.LN2;\n});\nexport var createLN10 = /* #__PURE__ */recreateFactory('LN10', ['config', '?BigNumber'], _ref8 => {\n var {\n config,\n BigNumber\n } = _ref8;\n return config.number === 'BigNumber' ? new BigNumber(10).ln() : Math.LN10;\n});\nexport var createLOG2E = /* #__PURE__ */recreateFactory('LOG2E', ['config', '?BigNumber'], _ref9 => {\n var {\n config,\n BigNumber\n } = _ref9;\n return config.number === 'BigNumber' ? new BigNumber(1).div(new BigNumber(2).ln()) : Math.LOG2E;\n});\nexport var createLOG10E = /* #__PURE__ */recreateFactory('LOG10E', ['config', '?BigNumber'], _ref10 => {\n var {\n config,\n BigNumber\n } = _ref10;\n return config.number === 'BigNumber' ? new BigNumber(1).div(new BigNumber(10).ln()) : Math.LOG10E;\n});\nexport var createSQRT1_2 = /* #__PURE__ */recreateFactory(\n// eslint-disable-line camelcase\n'SQRT1_2', ['config', '?BigNumber'], _ref11 => {\n var {\n config,\n BigNumber\n } = _ref11;\n return config.number === 'BigNumber' ? new BigNumber('0.5').sqrt() : Math.SQRT1_2;\n});\nexport var createSQRT2 = /* #__PURE__ */recreateFactory('SQRT2', ['config', '?BigNumber'], _ref12 => {\n var {\n config,\n BigNumber\n } = _ref12;\n return config.number === 'BigNumber' ? new BigNumber(2).sqrt() : Math.SQRT2;\n});\nexport var createI = /* #__PURE__ */recreateFactory('i', ['Complex'], _ref13 => {\n var {\n Complex\n } = _ref13;\n return Complex.I;\n});\n\n// for backward compatibility with v5\nexport var createUppercasePi = /* #__PURE__ */factory('PI', ['pi'], _ref14 => {\n var {\n pi\n } = _ref14;\n return pi;\n});\nexport var createUppercaseE = /* #__PURE__ */factory('E', ['e'], _ref15 => {\n var {\n e\n } = _ref15;\n return e;\n});\nexport var createVersion = /* #__PURE__ */factory('version', [], () => version);\n\n// helper function to create a factory with a flag recreateOnConfigChange\n// idea: allow passing optional properties to be attached to the factory function as 4th argument?\nfunction recreateFactory(name, dependencies, create) {\n return factory(name, dependencies, create, {\n recreateOnConfigChange: true\n });\n}", "import { factory } from '../../utils/factory.js';\n\n// Source: https://en.wikipedia.org/wiki/Physical_constant\n\n// Universal constants\nexport var createSpeedOfLight = /* #__PURE__ */unitFactory('speedOfLight', '299792458', 'm s^-1');\nexport var createGravitationConstant = /* #__PURE__ */unitFactory('gravitationConstant', '6.67430e-11', 'm^3 kg^-1 s^-2');\nexport var createPlanckConstant = /* #__PURE__ */unitFactory('planckConstant', '6.62607015e-34', 'J s');\nexport var createReducedPlanckConstant = /* #__PURE__ */unitFactory('reducedPlanckConstant', '1.0545718176461565e-34', 'J s');\n\n// Electromagnetic constants\nexport var createMagneticConstant = /* #__PURE__ */unitFactory('magneticConstant', '1.25663706212e-6', 'N A^-2');\nexport var createElectricConstant = /* #__PURE__ */unitFactory('electricConstant', '8.8541878128e-12', 'F m^-1');\nexport var createVacuumImpedance = /* #__PURE__ */unitFactory('vacuumImpedance', '376.730313667', 'ohm');\nexport var createCoulomb = /* #__PURE__ */unitFactory('coulomb', '8.987551792261171e9', 'N m^2 C^-2');\nexport var createElementaryCharge = /* #__PURE__ */unitFactory('elementaryCharge', '1.602176634e-19', 'C');\nexport var createBohrMagneton = /* #__PURE__ */unitFactory('bohrMagneton', '9.2740100783e-24', 'J T^-1');\nexport var createConductanceQuantum = /* #__PURE__ */unitFactory('conductanceQuantum', '7.748091729863649e-5', 'S');\nexport var createInverseConductanceQuantum = /* #__PURE__ */unitFactory('inverseConductanceQuantum', '12906.403729652257', 'ohm');\nexport var createMagneticFluxQuantum = /* #__PURE__ */unitFactory('magneticFluxQuantum', '2.0678338484619295e-15', 'Wb');\nexport var createNuclearMagneton = /* #__PURE__ */unitFactory('nuclearMagneton', '5.0507837461e-27', 'J T^-1');\nexport var createKlitzing = /* #__PURE__ */unitFactory('klitzing', '25812.807459304513', 'ohm');\nexport var createJosephson = /* #__PURE__ */unitFactory('josephson', '4.835978484169836e14 Hz V', 'Hz V^-1'); // TODO: support for Hz needed\n\n// Atomic and nuclear constants\nexport var createBohrRadius = /* #__PURE__ */unitFactory('bohrRadius', '5.29177210903e-11', 'm');\nexport var createClassicalElectronRadius = /* #__PURE__ */unitFactory('classicalElectronRadius', '2.8179403262e-15', 'm');\nexport var createElectronMass = /* #__PURE__ */unitFactory('electronMass', '9.1093837015e-31', 'kg');\nexport var createFermiCoupling = /* #__PURE__ */unitFactory('fermiCoupling', '1.1663787e-5', 'GeV^-2');\nexport var createFineStructure = numberFactory('fineStructure', 7.2973525693e-3);\nexport var createHartreeEnergy = /* #__PURE__ */unitFactory('hartreeEnergy', '4.3597447222071e-18', 'J');\nexport var createProtonMass = /* #__PURE__ */unitFactory('protonMass', '1.67262192369e-27', 'kg');\nexport var createDeuteronMass = /* #__PURE__ */unitFactory('deuteronMass', '3.3435830926e-27', 'kg');\nexport var createNeutronMass = /* #__PURE__ */unitFactory('neutronMass', '1.6749271613e-27', 'kg');\nexport var createQuantumOfCirculation = /* #__PURE__ */unitFactory('quantumOfCirculation', '3.6369475516e-4', 'm^2 s^-1');\nexport var createRydberg = /* #__PURE__ */unitFactory('rydberg', '10973731.568160', 'm^-1');\nexport var createThomsonCrossSection = /* #__PURE__ */unitFactory('thomsonCrossSection', '6.6524587321e-29', 'm^2');\nexport var createWeakMixingAngle = numberFactory('weakMixingAngle', 0.22290);\nexport var createEfimovFactor = numberFactory('efimovFactor', 22.7);\n\n// Physico-chemical constants\nexport var createAtomicMass = /* #__PURE__ */unitFactory('atomicMass', '1.66053906660e-27', 'kg');\nexport var createAvogadro = /* #__PURE__ */unitFactory('avogadro', '6.02214076e23', 'mol^-1');\nexport var createBoltzmann = /* #__PURE__ */unitFactory('boltzmann', '1.380649e-23', 'J K^-1');\nexport var createFaraday = /* #__PURE__ */unitFactory('faraday', '96485.33212331001', 'C mol^-1');\nexport var createFirstRadiation = /* #__PURE__ */unitFactory('firstRadiation', '3.7417718521927573e-16', 'W m^2');\n// TODO spectralRadiance = 1.1910429723971881e-16 W m^2 sr^-1\nexport var createLoschmidt = /* #__PURE__ */unitFactory('loschmidt', '2.686780111798444e25', 'm^-3');\nexport var createGasConstant = /* #__PURE__ */unitFactory('gasConstant', '8.31446261815324', 'J K^-1 mol^-1');\nexport var createMolarPlanckConstant = /* #__PURE__ */unitFactory('molarPlanckConstant', '3.990312712893431e-10', 'J s mol^-1');\nexport var createMolarVolume = /* #__PURE__ */unitFactory('molarVolume', '0.022413969545014137', 'm^3 mol^-1');\nexport var createSackurTetrode = numberFactory('sackurTetrode', -1.16487052358);\nexport var createSecondRadiation = /* #__PURE__ */unitFactory('secondRadiation', '0.014387768775039337', 'm K');\nexport var createStefanBoltzmann = /* #__PURE__ */unitFactory('stefanBoltzmann', '5.67037441918443e-8', 'W m^-2 K^-4');\nexport var createWienDisplacement = /* #__PURE__ */unitFactory('wienDisplacement', '2.897771955e-3', 'm K');\n\n// Adopted values\nexport var createMolarMass = /* #__PURE__ */unitFactory('molarMass', '0.99999999965e-3', 'kg mol^-1');\nexport var createMolarMassC12 = /* #__PURE__ */unitFactory('molarMassC12', '11.9999999958e-3', 'kg mol^-1');\nexport var createGravity = /* #__PURE__ */unitFactory('gravity', '9.80665', 'm s^-2');\n// atm is defined in Unit.js\n\n// Natural units\nexport var createPlanckLength = /* #__PURE__ */unitFactory('planckLength', '1.616255e-35', 'm');\nexport var createPlanckMass = /* #__PURE__ */unitFactory('planckMass', '2.176435e-8', 'kg');\nexport var createPlanckTime = /* #__PURE__ */unitFactory('planckTime', '5.391245e-44', 's');\nexport var createPlanckCharge = /* #__PURE__ */unitFactory('planckCharge', '1.87554603778e-18', 'C');\nexport var createPlanckTemperature = /* #__PURE__ */unitFactory('planckTemperature', '1.416785e+32', 'K');\n\n// helper function to create a factory function which creates a physical constant,\n// a Unit with either a number value or a BigNumber value depending on the configuration\nfunction unitFactory(name, valueStr, unitStr) {\n var dependencies = ['config', 'Unit', 'BigNumber'];\n return factory(name, dependencies, _ref => {\n var {\n config,\n Unit,\n BigNumber\n } = _ref;\n // Note that we can parse into number or BigNumber.\n // We do not parse into Fractions as that doesn't make sense: we would lose precision of the values\n // Therefore we dont use Unit.parse()\n var value = config.number === 'BigNumber' ? new BigNumber(valueStr) : parseFloat(valueStr);\n var unit = new Unit(value, unitStr);\n unit.fixPrefix = true;\n return unit;\n });\n}\n\n// helper function to create a factory function which creates a numeric constant,\n// either a number or BigNumber depending on the configuration\nfunction numberFactory(name, value) {\n var dependencies = ['config', 'BigNumber'];\n return factory(name, dependencies, _ref2 => {\n var {\n config,\n BigNumber\n } = _ref2;\n return config.number === 'BigNumber' ? new BigNumber(value) : value;\n });\n}", "import { errorTransform } from './utils/errorTransform.js';\nimport { factory } from '../../utils/factory.js';\nimport { createApply } from '../../function/matrix/apply.js';\nimport { isBigNumber, isNumber } from '../../utils/is.js';\nvar name = 'apply';\nvar dependencies = ['typed', 'isInteger'];\n\n/**\n * Attach a transform function to math.apply\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function apply\n * from one-based to zero based\n */\nexport var createApplyTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n isInteger\n } = _ref;\n var apply = createApply({\n typed,\n isInteger\n });\n\n // @see: comment of concat itself\n return typed('apply', {\n '...any': function any(args) {\n // change dim from one-based to zero-based\n var dim = args[1];\n if (isNumber(dim)) {\n args[1] = dim - 1;\n } else if (isBigNumber(dim)) {\n args[1] = dim.minus(1);\n }\n try {\n return apply.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});", "import { errorTransform } from './utils/errorTransform.js';\nimport { factory } from '../../utils/factory.js';\nimport { createColumn } from '../../function/matrix/column.js';\nimport { isNumber } from '../../utils/is.js';\nvar name = 'column';\nvar dependencies = ['typed', 'Index', 'matrix', 'range'];\n\n/**\n * Attach a transform function to matrix.column\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `index` parameter of function column\n * from zero-based to one-based\n */\nexport var createColumnTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Index,\n matrix,\n range\n } = _ref;\n var column = createColumn({\n typed,\n Index,\n matrix,\n range\n });\n\n // @see: comment of column itself\n return typed('column', {\n '...any': function any(args) {\n // change last argument from zero-based to one-based\n var lastIndex = args.length - 1;\n var last = args[lastIndex];\n if (isNumber(last)) {\n args[lastIndex] = last - 1;\n }\n try {\n return column.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});", "import { isSymbolNode } from '../../../utils/is.js';\nimport { PartitionedMap } from '../../../utils/map.js';\n\n/**\n * Compile an inline expression like \"x > 0\"\n * @param {Node} expression\n * @param {Object} math\n * @param {Map} scope\n * @return {function} Returns a function with one argument which fills in the\n * undefined variable (like \"x\") and evaluates the expression\n */\nexport function compileInlineExpression(expression, math, scope) {\n // find an undefined symbol\n var symbol = expression.filter(function (node) {\n return isSymbolNode(node) && !(node.name in math) && !scope.has(node.name);\n })[0];\n if (!symbol) {\n throw new Error('No undefined variable found in inline expression \"' + expression + '\"');\n }\n\n // create a test function for this equation\n var name = symbol.name; // variable name\n var argsScope = new Map();\n var subScope = new PartitionedMap(scope, argsScope, new Set([name]));\n var eq = expression.compile();\n return function inlineExpression(x) {\n argsScope.set(name, x);\n return eq.evaluate(subScope);\n };\n}", "import { factory } from '../../../utils/factory.js';\nvar name = 'transformCallback';\nvar dependencies = ['typed'];\nexport var createTransformCallback = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Transforms the given callback function based on its type and number of arrays.\n *\n * @param {Function} callback - The callback function to transform.\n * @param {number} numberOfArrays - The number of arrays to pass to the callback function.\n * @returns {*} - The transformed callback function.\n */\n return function (callback, numberOfArrays) {\n if (typed.isTypedFunction(callback)) {\n return _transformTypedCallbackFunction(callback, numberOfArrays);\n } else {\n return _transformCallbackFunction(callback, callback.length, numberOfArrays);\n }\n };\n\n /**\n * Transforms the given typed callback function based on the number of arrays.\n *\n * @param {Function} typedFunction - The typed callback function to transform.\n * @param {number} numberOfArrays - The number of arrays to pass to the callback function.\n * @returns {*} - The transformed callback function.\n */\n function _transformTypedCallbackFunction(typedFunction, numberOfArrays) {\n var signatures = Object.fromEntries(Object.entries(typedFunction.signatures).map(_ref2 => {\n var [signature, callbackFunction] = _ref2;\n var numberOfCallbackInputs = signature.split(',').length;\n if (typed.isTypedFunction(callbackFunction)) {\n return [signature, _transformTypedCallbackFunction(callbackFunction, numberOfArrays)];\n } else {\n return [signature, _transformCallbackFunction(callbackFunction, numberOfCallbackInputs, numberOfArrays)];\n }\n }));\n if (typeof typedFunction.name === 'string') {\n return typed(typedFunction.name, signatures);\n } else {\n return typed(signatures);\n }\n }\n});\n\n/**\n * Transforms the callback function based on the number of callback inputs and arrays.\n * There are three cases:\n * 1. The callback function has N arguments.\n * 2. The callback function has N+1 arguments.\n * 3. The callback function has 2N+1 arguments.\n *\n * @param {Function} callbackFunction - The callback function to transform.\n * @param {number} numberOfCallbackInputs - The number of callback inputs.\n * @param {number} numberOfArrays - The number of arrays.\n * @returns {Function} The transformed callback function.\n */\nfunction _transformCallbackFunction(callbackFunction, numberOfCallbackInputs, numberOfArrays) {\n if (numberOfCallbackInputs === numberOfArrays) {\n return callbackFunction;\n } else if (numberOfCallbackInputs === numberOfArrays + 1) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var vals = args.slice(0, numberOfArrays);\n var idx = _transformDims(args[numberOfArrays]);\n return callbackFunction(...vals, idx);\n };\n } else if (numberOfCallbackInputs > numberOfArrays + 1) {\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n var vals = args.slice(0, numberOfArrays);\n var idx = _transformDims(args[numberOfArrays]);\n var rest = args.slice(numberOfArrays + 1);\n return callbackFunction(...vals, idx, ...rest);\n };\n } else {\n return callbackFunction;\n }\n}\n\n/**\n * Transforms the dimensions by adding 1 to each dimension.\n *\n * @param {Array} dims - The dimensions to transform.\n * @returns {Array} The transformed dimensions.\n */\nfunction _transformDims(dims) {\n return dims.map(dim => dim + 1);\n}", "import { createFilter } from '../../function/matrix/filter.js';\nimport { factory } from '../../utils/factory.js';\nimport { isFunctionAssignmentNode, isSymbolNode } from '../../utils/is.js';\nimport { compileInlineExpression } from './utils/compileInlineExpression.js';\nimport { createTransformCallback } from './utils/transformCallback.js';\nvar name = 'filter';\nvar dependencies = ['typed'];\nexport var createFilterTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Attach a transform function to math.filter\n * Adds a property transform containing the transform function.\n *\n * This transform adds support for equations as test function for math.filter,\n * so you can do something like 'filter([3, -2, 5], x > 0)'.\n */\n function filterTransform(args, math, scope) {\n var filter = createFilter({\n typed\n });\n var transformCallback = createTransformCallback({\n typed\n });\n if (args.length === 0) {\n return filter();\n }\n var x = args[0];\n if (args.length === 1) {\n return filter(x);\n }\n var N = args.length - 1;\n var callback = args[N];\n if (x) {\n x = _compileAndEvaluate(x, scope);\n }\n if (callback) {\n if (isSymbolNode(callback) || isFunctionAssignmentNode(callback)) {\n // a function pointer, like filter([3, -2, 5], myTestFunction)\n callback = _compileAndEvaluate(callback, scope);\n } else {\n // an expression like filter([3, -2, 5], x > 0)\n callback = compileInlineExpression(callback, math, scope);\n }\n }\n return filter(x, transformCallback(callback, N));\n }\n filterTransform.rawArgs = true;\n function _compileAndEvaluate(arg, scope) {\n return arg.compile().evaluate(scope);\n }\n return filterTransform;\n}, {\n isTransformFunction: true\n});", "import { createForEach } from '../../function/matrix/forEach.js';\nimport { createTransformCallback } from './utils/transformCallback.js';\nimport { factory } from '../../utils/factory.js';\nimport { isFunctionAssignmentNode, isSymbolNode } from '../../utils/is.js';\nimport { compileInlineExpression } from './utils/compileInlineExpression.js';\nvar name = 'forEach';\nvar dependencies = ['typed'];\nexport var createForEachTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Attach a transform function to math.forEach\n * Adds a property transform containing the transform function.\n *\n * This transform creates a one-based index instead of a zero-based index\n */\n var forEach = createForEach({\n typed\n });\n var transformCallback = createTransformCallback({\n typed\n });\n function forEachTransform(args, math, scope) {\n if (args.length === 0) {\n return forEach();\n }\n var x = args[0];\n if (args.length === 1) {\n return forEach(x);\n }\n var N = args.length - 1;\n var callback = args[N];\n if (x) {\n x = _compileAndEvaluate(x, scope);\n }\n if (callback) {\n if (isSymbolNode(callback) || isFunctionAssignmentNode(callback)) {\n // a function pointer, like filter([3, -2, 5], myTestFunction)\n callback = _compileAndEvaluate(callback, scope);\n } else {\n // an expression like filter([3, -2, 5], x > 0)\n callback = compileInlineExpression(callback, math, scope);\n }\n }\n return forEach(x, transformCallback(callback, N));\n }\n forEachTransform.rawArgs = true;\n function _compileAndEvaluate(arg, scope) {\n return arg.compile().evaluate(scope);\n }\n return forEachTransform;\n}, {\n isTransformFunction: true\n});", "import { isArray, isBigNumber, isMatrix, isNumber, isRange } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'index';\nvar dependencies = ['Index', 'getMatrixDataType'];\nexport var createIndexTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Index,\n getMatrixDataType\n } = _ref;\n /**\n * Attach a transform function to math.index\n * Adds a property transform containing the transform function.\n *\n * This transform creates a one-based index instead of a zero-based index\n */\n return function indexTransform() {\n var args = [];\n for (var i = 0, ii = arguments.length; i < ii; i++) {\n var arg = arguments[i];\n\n // change from one-based to zero based, convert BigNumber to number and leave Array of Booleans as is\n if (isRange(arg)) {\n arg.start--;\n arg.end -= arg.step > 0 ? 0 : 2;\n } else if (arg && arg.isSet === true) {\n arg = arg.map(function (v) {\n return v - 1;\n });\n } else if (isArray(arg) || isMatrix(arg)) {\n if (getMatrixDataType(arg) !== 'boolean') {\n arg = arg.map(function (v) {\n return v - 1;\n });\n }\n } else if (isNumber(arg)) {\n arg--;\n } else if (isBigNumber(arg)) {\n arg = arg.toNumber() - 1;\n } else if (typeof arg === 'string') {\n // leave as is\n } else {\n throw new TypeError('Dimension must be an Array, Matrix, number, string, or Range');\n }\n args[i] = arg;\n }\n var res = new Index();\n Index.apply(res, args);\n return res;\n };\n}, {\n isTransformFunction: true\n});", "import { factory } from '../../utils/factory.js';\nimport { isFunctionAssignmentNode, isSymbolNode } from '../../utils/is.js';\nimport { createMap } from '../../function/matrix/map.js';\nimport { compileInlineExpression } from './utils/compileInlineExpression.js';\nimport { createTransformCallback } from './utils/transformCallback.js';\nvar name = 'map';\nvar dependencies = ['typed'];\nexport var createMapTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Attach a transform function to math.map\n * Adds a property transform containing the transform function.\n *\n * This transform creates a one-based index instead of a zero-based index\n */\n var map = createMap({\n typed\n });\n var transformCallback = createTransformCallback({\n typed\n });\n function mapTransform(args, math, scope) {\n if (args.length === 0) {\n return map();\n }\n if (args.length === 1) {\n return map(args[0]);\n }\n var N = args.length - 1;\n var X = args.slice(0, N);\n var callback = args[N];\n X = X.map(arg => _compileAndEvaluate(arg, scope));\n if (callback) {\n if (isSymbolNode(callback) || isFunctionAssignmentNode(callback)) {\n // a function pointer, like filter([3, -2, 5], myTestFunction)\n callback = _compileAndEvaluate(callback, scope);\n } else {\n // an expression like filter([3, -2, 5], x > 0)\n callback = compileInlineExpression(callback, math, scope);\n }\n }\n return map(...X, transformCallback(callback, N));\n function _compileAndEvaluate(arg, scope) {\n return arg.compile().evaluate(scope);\n }\n }\n mapTransform.rawArgs = true;\n return mapTransform;\n}, {\n isTransformFunction: true\n});", "import { isNumber, isBigNumber } from '../../../utils/is.js';\n/**\n * Change last argument dim from one-based to zero-based.\n */\nexport function dimToZeroBase(dim) {\n if (isNumber(dim)) {\n return dim - 1;\n } else if (isBigNumber(dim)) {\n return dim.minus(1);\n } else {\n return dim;\n }\n}\nexport function isNumberOrBigNumber(n) {\n return isNumber(n) || isBigNumber(n);\n}", "import { isCollection } from '../../../utils/is.js';\nimport { dimToZeroBase, isNumberOrBigNumber } from './dimToZeroBase.js';\n/**\n * Change last argument dim from one-based to zero-based.\n */\nexport function lastDimToZeroBase(args) {\n if (args.length === 2 && isCollection(args[0])) {\n args = args.slice();\n var dim = args[1];\n if (isNumberOrBigNumber(dim)) {\n args[1] = dimToZeroBase(dim);\n }\n }\n return args;\n}", "import { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createMax } from '../../function/statistics/max.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\nvar name = 'max';\nvar dependencies = ['typed', 'config', 'numeric', 'larger'];\nexport var createMaxTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n numeric,\n larger\n } = _ref;\n var max = createMax({\n typed,\n config,\n numeric,\n larger\n });\n\n /**\n * Attach a transform function to math.max\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function max\n * from one-based to zero based\n */\n return typed('max', {\n '...any': function any(args) {\n args = lastDimToZeroBase(args);\n try {\n return max.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});", "import { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createMean } from '../../function/statistics/mean.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\nvar name = 'mean';\nvar dependencies = ['typed', 'add', 'divide'];\nexport var createMeanTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n divide\n } = _ref;\n var mean = createMean({\n typed,\n add,\n divide\n });\n\n /**\n * Attach a transform function to math.mean\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function mean\n * from one-based to zero based\n */\n return typed('mean', {\n '...any': function any(args) {\n args = lastDimToZeroBase(args);\n try {\n return mean.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});", "import { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createMin } from '../../function/statistics/min.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\nvar name = 'min';\nvar dependencies = ['typed', 'config', 'numeric', 'smaller'];\nexport var createMinTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n numeric,\n smaller\n } = _ref;\n var min = createMin({\n typed,\n config,\n numeric,\n smaller\n });\n\n /**\n * Attach a transform function to math.min\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function min\n * from one-based to zero based\n */\n return typed('min', {\n '...any': function any(args) {\n args = lastDimToZeroBase(args);\n try {\n return min.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});", "import { factory } from '../../utils/factory.js';\nimport { createRange } from '../../function/matrix/range.js';\nvar name = 'range';\nvar dependencies = ['typed', 'config', '?matrix', '?bignumber', 'smaller', 'smallerEq', 'larger', 'largerEq', 'add', 'isPositive'];\nexport var createRangeTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n bignumber,\n smaller,\n smallerEq,\n larger,\n largerEq,\n add,\n isPositive\n } = _ref;\n var range = createRange({\n typed,\n config,\n matrix,\n bignumber,\n smaller,\n smallerEq,\n larger,\n largerEq,\n add,\n isPositive\n });\n\n /**\n * Attach a transform function to math.range\n * Adds a property transform containing the transform function.\n *\n * This transform creates a range which includes the end value\n */\n return typed('range', {\n '...any': function any(args) {\n var lastIndex = args.length - 1;\n var last = args[lastIndex];\n if (typeof last !== 'boolean') {\n // append a parameter includeEnd=true\n args.push(true);\n }\n return range.apply(null, args);\n }\n });\n}, {\n isTransformFunction: true\n});", "import { factory } from '../../utils/factory.js';\nimport { createRow } from '../../function/matrix/row.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { isNumber } from '../../utils/is.js';\nvar name = 'row';\nvar dependencies = ['typed', 'Index', 'matrix', 'range'];\n\n/**\n * Attach a transform function to matrix.column\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `index` parameter of function column\n * from zero-based to one-based\n */\nexport var createRowTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Index,\n matrix,\n range\n } = _ref;\n var row = createRow({\n typed,\n Index,\n matrix,\n range\n });\n\n // @see: comment of row itself\n return typed('row', {\n '...any': function any(args) {\n // change last argument from zero-based to one-based\n var lastIndex = args.length - 1;\n var last = args[lastIndex];\n if (isNumber(last)) {\n args[lastIndex] = last - 1;\n }\n try {\n return row.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});", "import { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createSubset } from '../../function/matrix/subset.js';\nvar name = 'subset';\nvar dependencies = ['typed', 'matrix', 'zeros', 'add'];\nexport var createSubsetTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n zeros,\n add\n } = _ref;\n var subset = createSubset({\n typed,\n matrix,\n zeros,\n add\n });\n\n /**\n * Attach a transform function to math.subset\n * Adds a property transform containing the transform function.\n *\n * This transform creates a range which includes the end value\n */\n return typed('subset', {\n '...any': function any(args) {\n try {\n return subset.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});", "import { isBigNumber, isNumber } from '../../utils/is.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { factory } from '../../utils/factory.js';\nimport { createConcat } from '../../function/matrix/concat.js';\nvar name = 'concat';\nvar dependencies = ['typed', 'matrix', 'isInteger'];\nexport var createConcatTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n isInteger\n } = _ref;\n var concat = createConcat({\n typed,\n matrix,\n isInteger\n });\n\n /**\n * Attach a transform function to math.range\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function concat\n * from one-based to zero based\n */\n return typed('concat', {\n '...any': function any(args) {\n // change last argument from one-based to zero-based\n var lastIndex = args.length - 1;\n var last = args[lastIndex];\n if (isNumber(last)) {\n args[lastIndex] = last - 1;\n } else if (isBigNumber(last)) {\n args[lastIndex] = last.minus(1);\n }\n try {\n return concat.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});", "import { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createDiff } from '../../function/matrix/diff.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\nvar name = 'diff';\nvar dependencies = ['typed', 'matrix', 'subtract', 'number', 'bignumber'];\nexport var createDiffTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n subtract,\n number,\n bignumber\n } = _ref;\n var diff = createDiff({\n typed,\n matrix,\n subtract,\n number,\n bignumber\n });\n\n /**\n * Attach a transform function to math.diff\n * Adds a property transform containing the transform function.\n *\n * This transform creates a range which includes the end value\n */\n return typed(name, {\n '...any': function any(args) {\n args = lastDimToZeroBase(args);\n try {\n return diff.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});", "import { factory } from '../../utils/factory.js';\nimport { createStd } from '../../function/statistics/std.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\nvar name = 'std';\nvar dependencies = ['typed', 'map', 'sqrt', 'variance'];\n\n/**\n * Attach a transform function to math.std\n * Adds a property transform containing the transform function.\n *\n * This transform changed the `dim` parameter of function std\n * from one-based to zero based\n */\nexport var createStdTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n map,\n sqrt,\n variance\n } = _ref;\n var std = createStd({\n typed,\n map,\n sqrt,\n variance\n });\n return typed('std', {\n '...any': function any(args) {\n args = lastDimToZeroBase(args);\n try {\n return std.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});", "import { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createSum } from '../../function/statistics/sum.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\n\n/**\n * Attach a transform function to math.sum\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function sum\n * from one-based to zero based\n */\nvar name = 'sum';\nvar dependencies = ['typed', 'config', 'add', 'numeric'];\nexport var createSumTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n add,\n numeric\n } = _ref;\n var sum = createSum({\n typed,\n config,\n add,\n numeric\n });\n return typed(name, {\n '...any': function any(args) {\n args = lastDimToZeroBase(args);\n try {\n return sum.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});", "import { factory } from '../../utils/factory.js';\nimport { createQuantileSeq } from '../../function/statistics/quantileSeq.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\nvar name = 'quantileSeq';\nvar dependencies = ['typed', 'bignumber', 'add', 'subtract', 'divide', 'multiply', 'partitionSelect', 'compare', 'isInteger', 'smaller', 'smallerEq', 'larger'];\n\n/**\n * Attach a transform function to math.quantileSeq\n * Adds a property transform containing the transform function.\n *\n * This transform changed the `dim` parameter of function std\n * from one-based to zero based\n */\nexport var createQuantileSeqTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n bignumber,\n add,\n subtract,\n divide,\n multiply,\n partitionSelect,\n compare,\n isInteger,\n smaller,\n smallerEq,\n larger\n } = _ref;\n var quantileSeq = createQuantileSeq({\n typed,\n bignumber,\n add,\n subtract,\n divide,\n multiply,\n partitionSelect,\n compare,\n isInteger,\n smaller,\n smallerEq,\n larger\n });\n return typed('quantileSeq', {\n 'Array | Matrix, number | BigNumber': quantileSeq,\n 'Array | Matrix, number | BigNumber, number': (arr, prob, dim) => quantileSeq(arr, prob, dimToZeroBase(dim)),\n 'Array | Matrix, number | BigNumber, boolean': quantileSeq,\n 'Array | Matrix, number | BigNumber, boolean, number': (arr, prob, sorted, dim) => quantileSeq(arr, prob, sorted, dimToZeroBase(dim)),\n 'Array | Matrix, Array | Matrix': quantileSeq,\n 'Array | Matrix, Array | Matrix, number': (data, prob, dim) => quantileSeq(data, prob, dimToZeroBase(dim)),\n 'Array | Matrix, Array | Matrix, boolean': quantileSeq,\n 'Array | Matrix, Array | Matrix, boolean, number': (data, prob, sorted, dim) => quantileSeq(data, prob, sorted, dimToZeroBase(dim))\n });\n function dimToZeroBase(dim) {\n // TODO: find a better way, maybe lastDimToZeroBase could apply to more cases.\n return lastDimToZeroBase([[], dim])[1];\n }\n}, {\n isTransformFunction: true\n});", "import { isBigNumber, isCollection, isNumber } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createCumSum } from '../../function/statistics/cumsum.js';\n\n/**\n * Attach a transform function to math.sum\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function sum\n * from one-based to zero based\n */\nvar name = 'cumsum';\nvar dependencies = ['typed', 'add', 'unaryPlus'];\nexport var createCumSumTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n unaryPlus\n } = _ref;\n var cumsum = createCumSum({\n typed,\n add,\n unaryPlus\n });\n return typed(name, {\n '...any': function any(args) {\n // change last argument dim from one-based to zero-based\n if (args.length === 2 && isCollection(args[0])) {\n var dim = args[1];\n if (isNumber(dim)) {\n args[1] = dim - 1;\n } else if (isBigNumber(dim)) {\n args[1] = dim.minus(1);\n }\n }\n try {\n return cumsum.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});", "import { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createVariance } from '../../function/statistics/variance.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\nvar name = 'variance';\nvar dependencies = ['typed', 'add', 'subtract', 'multiply', 'divide', 'apply', 'isNaN'];\n\n/**\n * Attach a transform function to math.var\n * Adds a property transform containing the transform function.\n *\n * This transform changed the `dim` parameter of function var\n * from one-based to zero based\n */\nexport var createVarianceTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n subtract,\n multiply,\n divide,\n apply,\n isNaN\n } = _ref;\n var variance = createVariance({\n typed,\n add,\n subtract,\n multiply,\n divide,\n apply,\n isNaN\n });\n return typed(name, {\n '...any': function any(args) {\n args = lastDimToZeroBase(args);\n try {\n return variance.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});", "import { createPrint } from '../../function/string/print.js';\nimport { factory } from '../../utils/factory.js';\nimport { printTemplate } from '../../utils/print.js';\nvar name = 'print';\nvar dependencies = ['typed', 'matrix', 'zeros', 'add'];\nexport var createPrintTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n zeros,\n add\n } = _ref;\n var print = createPrint({\n typed,\n matrix,\n zeros,\n add\n });\n return typed(name, {\n 'string, Object | Array': function string_Object__Array(template, values) {\n return print(_convertTemplateToZeroBasedIndex(template), values);\n },\n 'string, Object | Array, number | Object': function string_Object__Array_number__Object(template, values, options) {\n return print(_convertTemplateToZeroBasedIndex(template), values, options);\n }\n });\n function _convertTemplateToZeroBasedIndex(template) {\n return template.replace(printTemplate, x => {\n var parts = x.slice(1).split('.');\n var result = parts.map(function (part) {\n if (!isNaN(part) && part.length > 0) {\n return parseInt(part) - 1;\n } else {\n return part;\n }\n });\n return '$' + result.join('.');\n });\n }\n}, {\n isTransformFunction: true\n});", "import { createAnd } from '../../function/logical/and.js';\nimport { factory } from '../../utils/factory.js';\nimport { isCollection } from '../../utils/is.js';\nvar name = 'and';\nvar dependencies = ['typed', 'matrix', 'zeros', 'add', 'equalScalar', 'not', 'concat'];\nexport var createAndTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n zeros,\n not,\n concat\n } = _ref;\n var and = createAnd({\n typed,\n matrix,\n equalScalar,\n zeros,\n not,\n concat\n });\n function andTransform(args, math, scope) {\n var condition1 = args[0].compile().evaluate(scope);\n if (!isCollection(condition1) && !and(condition1, true)) {\n return false;\n }\n var condition2 = args[1].compile().evaluate(scope);\n return and(condition1, condition2);\n }\n andTransform.rawArgs = true;\n return andTransform;\n}, {\n isTransformFunction: true\n});", "import { createOr } from '../../function/logical/or.js';\nimport { factory } from '../../utils/factory.js';\nimport { isCollection } from '../../utils/is.js';\nvar name = 'or';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'DenseMatrix', 'concat'];\nexport var createOrTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n DenseMatrix,\n concat\n } = _ref;\n var or = createOr({\n typed,\n matrix,\n equalScalar,\n DenseMatrix,\n concat\n });\n function orTransform(args, math, scope) {\n var condition1 = args[0].compile().evaluate(scope);\n if (!isCollection(condition1) && or(condition1, false)) {\n return true;\n }\n var condition2 = args[1].compile().evaluate(scope);\n return or(condition1, condition2);\n }\n orTransform.rawArgs = true;\n return orTransform;\n}, {\n isTransformFunction: true\n});", "import { createBitAnd } from '../../function/bitwise/bitAnd.js';\nimport { factory } from '../../utils/factory.js';\nimport { isCollection } from '../../utils/is.js';\nvar name = 'bitAnd';\nvar dependencies = ['typed', 'matrix', 'zeros', 'add', 'equalScalar', 'not', 'concat'];\nexport var createBitAndTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n zeros,\n not,\n concat\n } = _ref;\n var bitAnd = createBitAnd({\n typed,\n matrix,\n equalScalar,\n zeros,\n not,\n concat\n });\n function bitAndTransform(args, math, scope) {\n var condition1 = args[0].compile().evaluate(scope);\n if (!isCollection(condition1)) {\n if (isNaN(condition1)) {\n return NaN;\n }\n if (condition1 === 0 || condition1 === false) {\n return 0;\n }\n }\n var condition2 = args[1].compile().evaluate(scope);\n return bitAnd(condition1, condition2);\n }\n bitAndTransform.rawArgs = true;\n return bitAndTransform;\n}, {\n isTransformFunction: true\n});", "import { createBitOr } from '../../function/bitwise/bitOr.js';\nimport { factory } from '../../utils/factory.js';\nimport { isCollection } from '../../utils/is.js';\nvar name = 'bitOr';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'DenseMatrix', 'concat'];\nexport var createBitOrTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n DenseMatrix,\n concat\n } = _ref;\n var bitOr = createBitOr({\n typed,\n matrix,\n equalScalar,\n DenseMatrix,\n concat\n });\n function bitOrTransform(args, math, scope) {\n var condition1 = args[0].compile().evaluate(scope);\n if (!isCollection(condition1)) {\n if (isNaN(condition1)) {\n return NaN;\n }\n if (condition1 === -1) {\n return -1;\n }\n if (condition1 === true) {\n return 1;\n }\n }\n var condition2 = args[1].compile().evaluate(scope);\n return bitOr(condition1, condition2);\n }\n bitOrTransform.rawArgs = true;\n return bitOrTransform;\n}, {\n isTransformFunction: true\n});", "// creating all factories here in a separate file is needed to get tree-shaking working\nimport * as allFactories from '../factoriesAny.js';\nexport var all = allFactories;", "import _extends from \"@babel/runtime/helpers/extends\";\nimport typedFunction from 'typed-function';\nimport { ArgumentsError } from '../error/ArgumentsError.js';\nimport { DimensionError } from '../error/DimensionError.js';\nimport { IndexError } from '../error/IndexError.js';\nimport { factory, isFactory } from '../utils/factory.js';\nimport { isAccessorNode, isArray, isArrayNode, isAssignmentNode, isBigInt, isBigNumber, isBlockNode, isBoolean, isChain, isCollection, isComplex, isConditionalNode, isConstantNode, isDate, isDenseMatrix, isFraction, isFunction, isFunctionAssignmentNode, isFunctionNode, isHelp, isIndex, isIndexNode, isMap, isMatrix, isNode, isNull, isNumber, isObject, isObjectNode, isObjectWrappingMap, isOperatorNode, isParenthesisNode, isPartitionedMap, isRange, isRangeNode, isRegExp, isRelationalNode, isResultSet, isSparseMatrix, isString, isSymbolNode, isUndefined, isUnit } from '../utils/is.js';\nimport { deepFlatten, isLegacyFactory } from '../utils/object.js';\nimport * as emitter from './../utils/emitter.js';\nimport { DEFAULT_CONFIG } from './config.js';\nimport { configFactory } from './function/config.js';\nimport { importFactory } from './function/import.js';\n\n/**\n * Create a mathjs instance from given factory functions and optionally config\n *\n * Usage:\n *\n * const mathjs1 = create({ createAdd, createMultiply, ...})\n * const config = { number: 'BigNumber' }\n * const mathjs2 = create(all, config)\n *\n * @param {Object} [factories] An object with factory functions\n * The object can contain nested objects,\n * all nested objects will be flattened.\n * @param {Object} [config] Available options:\n * {number} relTol\n * Minimum relative difference between two\n * compared values, used by all comparison functions.\n * {number} absTol\n * Minimum absolute difference between two\n * compared values, used by all comparison functions.\n * {string} matrix\n * A string 'Matrix' (default) or 'Array'.\n * {string} number\n * A string 'number' (default), 'BigNumber', or 'Fraction'\n * {number} precision\n * The number of significant digits for BigNumbers.\n * Not applicable for Numbers.\n * {boolean} predictable\n * Predictable output type of functions. When true,\n * output type depends only on the input types. When\n * false (default), output type can vary depending\n * on input values. For example `math.sqrt(-4)`\n * returns `complex('2i')` when predictable is false, and\n * returns `NaN` when true.\n * {string} randomSeed\n * Random seed for seeded pseudo random number generator.\n * Set to null to randomly seed.\n * @returns {Object} Returns a bare-bone math.js instance containing\n * functions:\n * - `import` to add new functions\n * - `config` to change configuration\n * - `on`, `off`, `once`, `emit` for events\n */\nexport function create(factories, config) {\n var configInternal = _extends({}, DEFAULT_CONFIG, config);\n\n // simple test for ES5 support\n if (typeof Object.create !== 'function') {\n throw new Error('ES5 not supported by this JavaScript engine. ' + 'Please load the es5-shim and es5-sham library for compatibility.');\n }\n\n // create the mathjs instance\n var math = emitter.mixin({\n // only here for backward compatibility for legacy factory functions\n isNumber,\n isComplex,\n isBigNumber,\n isBigInt,\n isFraction,\n isUnit,\n isString,\n isArray,\n isMatrix,\n isCollection,\n isDenseMatrix,\n isSparseMatrix,\n isRange,\n isIndex,\n isBoolean,\n isResultSet,\n isHelp,\n isFunction,\n isDate,\n isRegExp,\n isObject,\n isMap,\n isPartitionedMap,\n isObjectWrappingMap,\n isNull,\n isUndefined,\n isAccessorNode,\n isArrayNode,\n isAssignmentNode,\n isBlockNode,\n isConditionalNode,\n isConstantNode,\n isFunctionAssignmentNode,\n isFunctionNode,\n isIndexNode,\n isNode,\n isObjectNode,\n isOperatorNode,\n isParenthesisNode,\n isRangeNode,\n isRelationalNode,\n isSymbolNode,\n isChain\n });\n\n // load config function and apply provided config\n math.config = configFactory(configInternal, math.emit);\n math.expression = {\n transform: {},\n mathWithTransform: {\n config: math.config\n }\n };\n\n // cached factories and instances used by function load\n var legacyFactories = [];\n var legacyInstances = [];\n\n /**\n * Load a function or data type from a factory.\n * If the function or data type already exists, the existing instance is\n * returned.\n * @param {Function} factory\n * @returns {*}\n */\n function load(factory) {\n if (isFactory(factory)) {\n return factory(math);\n }\n var firstProperty = factory[Object.keys(factory)[0]];\n if (isFactory(firstProperty)) {\n return firstProperty(math);\n }\n if (!isLegacyFactory(factory)) {\n console.warn('Factory object with properties `type`, `name`, and `factory` expected', factory);\n throw new Error('Factory object with properties `type`, `name`, and `factory` expected');\n }\n var index = legacyFactories.indexOf(factory);\n var instance;\n if (index === -1) {\n // doesn't yet exist\n if (factory.math === true) {\n // pass with math namespace\n instance = factory.factory(math.type, configInternal, load, math.typed, math);\n } else {\n instance = factory.factory(math.type, configInternal, load, math.typed);\n }\n\n // append to the cache\n legacyFactories.push(factory);\n legacyInstances.push(instance);\n } else {\n // already existing function, return the cached instance\n instance = legacyInstances[index];\n }\n return instance;\n }\n var importedFactories = {};\n\n // load the import function\n function lazyTyped() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return math.typed.apply(math.typed, args);\n }\n lazyTyped.isTypedFunction = typedFunction.isTypedFunction;\n var internalImport = importFactory(lazyTyped, load, math, importedFactories);\n math.import = internalImport;\n\n // listen for changes in config, import all functions again when changed\n // TODO: move this listener into the import function?\n math.on('config', () => {\n Object.values(importedFactories).forEach(factory => {\n if (factory && factory.meta && factory.meta.recreateOnConfigChange) {\n // FIXME: only re-create when the current instance is the same as was initially created\n // FIXME: delete the functions/constants before importing them again?\n internalImport(factory, {\n override: true\n });\n }\n });\n });\n\n // the create function exposed on the mathjs instance is bound to\n // the factory functions passed before\n math.create = create.bind(null, factories);\n\n // export factory function\n math.factory = factory;\n\n // import the factory functions like createAdd as an array instead of object,\n // else they will get a different naming (`createAdd` instead of `add`).\n math.import(Object.values(deepFlatten(factories)));\n math.ArgumentsError = ArgumentsError;\n math.DimensionError = DimensionError;\n math.IndexError = IndexError;\n return math;\n}", "import Emitter from 'tiny-emitter';\n\n/**\n * Extend given object with emitter functions `on`, `off`, `once`, `emit`\n * @param {Object} obj\n * @return {Object} obj\n */\nexport function mixin(obj) {\n // create event emitter\n var emitter = new Emitter();\n\n // bind methods to obj (we don't want to expose the emitter.e Array...)\n obj.on = emitter.on.bind(emitter);\n obj.off = emitter.off.bind(emitter);\n obj.once = emitter.once.bind(emitter);\n obj.emit = emitter.emit.bind(emitter);\n return obj;\n}", "import { isBigNumber, isComplex, isFraction, isMatrix, isUnit } from '../../utils/is.js';\nimport { isFactory, stripOptionalNotation } from '../../utils/factory.js';\nimport { hasOwnProperty, lazy } from '../../utils/object.js';\nimport { ArgumentsError } from '../../error/ArgumentsError.js';\nexport function importFactory(typed, load, math, importedFactories) {\n /**\n * Import functions from an object or a module.\n *\n * This function is only available on a mathjs instance created using `create`.\n *\n * Syntax:\n *\n * math.import(functions)\n * math.import(functions, options)\n *\n * Where:\n *\n * - `functions: Object`\n * An object with functions or factories to be imported.\n * - `options: Object` An object with import options. Available options:\n * - `override: boolean`\n * If true, existing functions will be overwritten. False by default.\n * - `silent: boolean`\n * If true, the function will not throw errors on duplicates or invalid\n * types. False by default.\n * - `wrap: boolean`\n * If true, the functions will be wrapped in a wrapper function\n * which converts data types like Matrix to primitive data types like Array.\n * The wrapper is needed when extending math.js with libraries which do not\n * support these data type. False by default.\n *\n * Examples:\n *\n * import { create, all } from 'mathjs'\n * import * as numbers from 'numbers'\n *\n * // create a mathjs instance\n * const math = create(all)\n *\n * // define new functions and variables\n * math.import({\n * myvalue: 42,\n * hello: function (name) {\n * return 'hello, ' + name + '!'\n * }\n * })\n *\n * // use the imported function and variable\n * math.myvalue * 2 // 84\n * math.hello('user') // 'hello, user!'\n *\n * // import the npm module 'numbers'\n * // (must be installed first with `npm install numbers`)\n * math.import(numbers, {wrap: true})\n *\n * math.fibonacci(7) // returns 13\n *\n * @param {Object | Array} functions Object with functions to be imported.\n * @param {Object} [options] Import options.\n */\n function mathImport(functions, options) {\n var num = arguments.length;\n if (num !== 1 && num !== 2) {\n throw new ArgumentsError('import', num, 1, 2);\n }\n if (!options) {\n options = {};\n }\n function flattenImports(flatValues, value, name) {\n if (Array.isArray(value)) {\n value.forEach(item => flattenImports(flatValues, item));\n } else if (typeof value === 'object') {\n for (var _name in value) {\n if (hasOwnProperty(value, _name)) {\n flattenImports(flatValues, value[_name], _name);\n }\n }\n } else if (isFactory(value) || name !== undefined) {\n var flatName = isFactory(value) ? isTransformFunctionFactory(value) ? value.fn + '.transform' // TODO: this is ugly\n : value.fn : name;\n\n // we allow importing the same function twice if it points to the same implementation\n if (hasOwnProperty(flatValues, flatName) && flatValues[flatName] !== value && !options.silent) {\n throw new Error('Cannot import \"' + flatName + '\" twice');\n }\n flatValues[flatName] = value;\n } else {\n if (!options.silent) {\n throw new TypeError('Factory, Object, or Array expected');\n }\n }\n }\n var flatValues = {};\n flattenImports(flatValues, functions);\n for (var name in flatValues) {\n if (hasOwnProperty(flatValues, name)) {\n // console.log('import', name)\n var value = flatValues[name];\n if (isFactory(value)) {\n // we ignore name here and enforce the name of the factory\n // maybe at some point we do want to allow overriding it\n // in that case we can implement an option overrideFactoryNames: true\n _importFactory(value, options);\n } else if (isSupportedType(value)) {\n _import(name, value, options);\n } else {\n if (!options.silent) {\n throw new TypeError('Factory, Object, or Array expected');\n }\n }\n }\n }\n }\n\n /**\n * Add a property to the math namespace\n * @param {string} name\n * @param {*} value\n * @param {Object} options See import for a description of the options\n * @private\n */\n function _import(name, value, options) {\n // TODO: refactor this function, it's to complicated and contains duplicate code\n if (options.wrap && typeof value === 'function') {\n // create a wrapper around the function\n value = _wrap(value);\n }\n\n // turn a plain function with a typed-function signature into a typed-function\n if (hasTypedFunctionSignature(value)) {\n value = typed(name, {\n [value.signature]: value\n });\n }\n if (typed.isTypedFunction(math[name]) && typed.isTypedFunction(value)) {\n if (options.override) {\n // give the typed function the right name\n value = typed(name, value.signatures);\n } else {\n // merge the existing and typed function\n value = typed(math[name], value);\n }\n math[name] = value;\n delete importedFactories[name];\n _importTransform(name, value);\n math.emit('import', name, function resolver() {\n return value;\n });\n return;\n }\n if (math[name] === undefined || options.override) {\n math[name] = value;\n delete importedFactories[name];\n _importTransform(name, value);\n math.emit('import', name, function resolver() {\n return value;\n });\n return;\n }\n if (!options.silent) {\n throw new Error('Cannot import \"' + name + '\": already exists');\n }\n }\n function _importTransform(name, value) {\n if (value && typeof value.transform === 'function') {\n math.expression.transform[name] = value.transform;\n if (allowedInExpressions(name)) {\n math.expression.mathWithTransform[name] = value.transform;\n }\n } else {\n // remove existing transform\n delete math.expression.transform[name];\n if (allowedInExpressions(name)) {\n math.expression.mathWithTransform[name] = value;\n }\n }\n }\n function _deleteTransform(name) {\n delete math.expression.transform[name];\n if (allowedInExpressions(name)) {\n math.expression.mathWithTransform[name] = math[name];\n } else {\n delete math.expression.mathWithTransform[name];\n }\n }\n\n /**\n * Create a wrapper a round an function which converts the arguments\n * to their primitive values (like convert a Matrix to Array)\n * @param {Function} fn\n * @return {Function} Returns the wrapped function\n * @private\n */\n function _wrap(fn) {\n var wrapper = function wrapper() {\n var args = [];\n for (var i = 0, len = arguments.length; i < len; i++) {\n var arg = arguments[i];\n args[i] = arg && arg.valueOf();\n }\n return fn.apply(math, args);\n };\n if (fn.transform) {\n wrapper.transform = fn.transform;\n }\n return wrapper;\n }\n\n /**\n * Import an instance of a factory into math.js\n * @param {function(scope: object)} factory\n * @param {Object} options See import for a description of the options\n * @param {string} [name=factory.name] Optional custom name\n * @private\n */\n function _importFactory(factory, options) {\n var name = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : factory.fn;\n if (name.includes('.')) {\n throw new Error('Factory name should not contain a nested path. ' + 'Name: ' + JSON.stringify(name));\n }\n var namespace = isTransformFunctionFactory(factory) ? math.expression.transform : math;\n var existingTransform = name in math.expression.transform;\n var existing = hasOwnProperty(namespace, name) ? namespace[name] : undefined;\n var resolver = function resolver() {\n // collect all dependencies, handle finding both functions and classes and other special cases\n var dependencies = {};\n factory.dependencies.map(stripOptionalNotation).forEach(dependency => {\n if (dependency.includes('.')) {\n throw new Error('Factory dependency should not contain a nested path. ' + 'Name: ' + JSON.stringify(dependency));\n }\n if (dependency === 'math') {\n dependencies.math = math;\n } else if (dependency === 'mathWithTransform') {\n dependencies.mathWithTransform = math.expression.mathWithTransform;\n } else if (dependency === 'classes') {\n // special case for json reviver\n dependencies.classes = math;\n } else {\n dependencies[dependency] = math[dependency];\n }\n });\n var instance = /* #__PURE__ */factory(dependencies);\n if (instance && typeof instance.transform === 'function') {\n throw new Error('Transforms cannot be attached to factory functions. ' + 'Please create a separate function for it with export const path = \"expression.transform\"');\n }\n if (existing === undefined || options.override) {\n return instance;\n }\n if (typed.isTypedFunction(existing) && typed.isTypedFunction(instance)) {\n // merge the existing and new typed function\n return typed(existing, instance);\n }\n if (options.silent) {\n // keep existing, ignore imported function\n return existing;\n } else {\n throw new Error('Cannot import \"' + name + '\": already exists');\n }\n };\n\n // TODO: add unit test with non-lazy factory\n if (!factory.meta || factory.meta.lazy !== false) {\n lazy(namespace, name, resolver);\n\n // FIXME: remove the `if (existing &&` condition again. Can we make sure subset is loaded before subset.transform? (Name collision, and no dependencies between the two)\n if (existing && existingTransform) {\n _deleteTransform(name);\n } else {\n if (isTransformFunctionFactory(factory) || factoryAllowedInExpressions(factory)) {\n lazy(math.expression.mathWithTransform, name, () => namespace[name]);\n }\n }\n } else {\n namespace[name] = resolver();\n\n // FIXME: remove the `if (existing &&` condition again. Can we make sure subset is loaded before subset.transform? (Name collision, and no dependencies between the two)\n if (existing && existingTransform) {\n _deleteTransform(name);\n } else {\n if (isTransformFunctionFactory(factory) || factoryAllowedInExpressions(factory)) {\n lazy(math.expression.mathWithTransform, name, () => namespace[name]);\n }\n }\n }\n\n // TODO: improve factories, store a list with imports instead which can be re-played\n importedFactories[name] = factory;\n math.emit('import', name, resolver);\n }\n\n /**\n * Check whether given object is a type which can be imported\n * @param {Function | number | string | boolean | null | Unit | Complex} object\n * @return {boolean}\n * @private\n */\n function isSupportedType(object) {\n return typeof object === 'function' || typeof object === 'number' || typeof object === 'string' || typeof object === 'boolean' || object === null || isUnit(object) || isComplex(object) || isBigNumber(object) || isFraction(object) || isMatrix(object) || Array.isArray(object);\n }\n function hasTypedFunctionSignature(fn) {\n return typeof fn === 'function' && typeof fn.signature === 'string';\n }\n function allowedInExpressions(name) {\n return !hasOwnProperty(unsafe, name);\n }\n function factoryAllowedInExpressions(factory) {\n return !factory.fn.includes('.') &&\n // FIXME: make checking on path redundant, check on meta data instead\n !hasOwnProperty(unsafe, factory.fn) && (!factory.meta || !factory.meta.isClass);\n }\n function isTransformFunctionFactory(factory) {\n return factory !== undefined && factory.meta !== undefined && factory.meta.isTransformFunction === true || false;\n }\n\n // namespaces and functions not available in the parser for safety reasons\n var unsafe = {\n expression: true,\n type: true,\n docs: true,\n error: true,\n json: true,\n chain: true // chain method not supported. Note that there is a unit chain too.\n };\n return mathImport;\n}", "import jStat from 'jstat';\nimport bessel from 'bessel';\n\nconst nil = new Error('#NULL!');\nconst div0 = new Error('#DIV/0!');\nconst value = new Error('#VALUE!');\nconst ref = new Error('#REF!');\nconst name = new Error('#NAME?');\nconst num = new Error('#NUM!');\nconst na = new Error('#N/A');\nconst error = new Error('#ERROR!');\nconst data = new Error('#GETTING_DATA');\n\nvar errors = /*#__PURE__*/Object.freeze({\n __proto__: null,\n data: data,\n div0: div0,\n error: error,\n na: na,\n name: name,\n nil: nil,\n num: num,\n ref: ref,\n value: value\n});\n\nconst defaultOperator = '=';\nconst validSymbols = ['>', '>=', '<', '<=', '=', '<>'];\nconst _TOKEN_TYPE_OPERATOR = 'operator';\nconst _TOKEN_TYPE_LITERAL = 'literal';\nconst SUPPORTED_TOKENS = [_TOKEN_TYPE_OPERATOR, _TOKEN_TYPE_LITERAL];\n\nconst TOKEN_TYPE_OPERATOR = _TOKEN_TYPE_OPERATOR;\nconst TOKEN_TYPE_LITERAL = _TOKEN_TYPE_LITERAL;\n\n/**\n * Create token which describe passed symbol/value.\n *\n * @param {String} value Value/Symbol to describe.\n * @param {String} type Type of the token 'operator' or 'literal'.\n * @return {Object}\n */\nfunction createToken(value, type) {\n if (SUPPORTED_TOKENS.indexOf(type) === -1) {\n throw new Error('Unsupported token type: ' + type)\n }\n\n return {\n value: value,\n type: type\n }\n}\n\n/**\n * Tries to cast numeric values to their type passed as a string.\n *\n * @param {*} value\n * @return {*}\n */\nfunction castValueToCorrectType(value) {\n if (typeof value !== 'string') {\n return value\n }\n\n if (/^\\d+(\\.\\d+)?$/.test(value)) {\n value = value.indexOf('.') === -1 ? parseInt(value, 10) : parseFloat(value);\n }\n\n return value\n}\n\n/**\n * Generate stream of tokens from passed expression.\n *\n * @param {String} expression\n * @return {String[]}\n */\nfunction tokenizeExpression(expression) {\n const expressionLength = expression.length;\n const tokens = [];\n let cursorIndex = 0;\n let processedValue = '';\n let processedSymbol = '';\n\n while (cursorIndex < expressionLength) {\n const char = expression.charAt(cursorIndex);\n\n switch (char) {\n case '>':\n case '<':\n case '=':\n processedSymbol = processedSymbol + char;\n\n if (processedValue.length > 0) {\n tokens.push(processedValue);\n processedValue = '';\n }\n\n break\n default:\n if (processedSymbol.length > 0) {\n tokens.push(processedSymbol);\n processedSymbol = '';\n }\n\n processedValue = processedValue + char;\n break\n }\n\n cursorIndex++;\n }\n\n if (processedValue.length > 0) {\n tokens.push(processedValue);\n }\n\n if (processedSymbol.length > 0) {\n tokens.push(processedSymbol);\n }\n\n return tokens\n}\n\n/**\n * Analyze and convert tokens to an object which describes their meaning.\n *\n * @param {String[]} tokens\n * @return {Object[]}\n */\nfunction analyzeTokens(tokens) {\n let literalValue = '';\n const analyzedTokens = [];\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n\n if (i === 0 && validSymbols.indexOf(token) >= 0) {\n analyzedTokens.push(createToken(token, TOKEN_TYPE_OPERATOR));\n } else {\n literalValue += token;\n }\n }\n\n if (literalValue.length > 0) {\n analyzedTokens.push(createToken(castValueToCorrectType(literalValue), TOKEN_TYPE_LITERAL));\n }\n\n if (analyzedTokens.length > 0 && analyzedTokens[0].type !== TOKEN_TYPE_OPERATOR) {\n analyzedTokens.unshift(createToken(defaultOperator, TOKEN_TYPE_OPERATOR));\n }\n\n return analyzedTokens\n}\n\n/**\n * Compute/Evaluate an expression passed as an array of tokens.\n *\n * @param {Object[]} tokens\n * @return {Boolean}\n */\nfunction computeExpression(tokens) {\n const values = [];\n let operator;\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n\n switch (token.type) {\n case TOKEN_TYPE_OPERATOR:\n operator = token.value;\n break\n case TOKEN_TYPE_LITERAL:\n values.push(token.value);\n break\n }\n }\n\n return evaluate(values, operator)\n}\n\n/**\n * Evaluate values based on passed math operator.\n *\n * @param {*} values\n * @param {String} operator\n * @return {Boolean}\n */\nfunction evaluate(values, operator) {\n let result = false;\n\n switch (operator) {\n case '>':\n result = values[0] > values[1];\n break\n case '>=':\n result = values[0] >= values[1];\n break\n case '<':\n result = values[0] < values[1];\n break\n case '<=':\n result = values[0] <= values[1];\n break\n case '=':\n result = values[0] == values[1];\n break\n case '<>':\n result = values[0] != values[1];\n break\n }\n\n return result\n}\n\nfunction parse(expression) {\n return analyzeTokens(tokenizeExpression(expression))\n}\n\nconst compute = computeExpression;\n\n// Arrays\nfunction argsToArray(args) {\n const result = [];\n\n arrayEach(args, (value) => {\n result.push(value);\n });\n\n return result\n}\n\nfunction arrayEach(array, iteratee) {\n let index = -1;\n const length = array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break\n }\n }\n\n return array\n}\n\nfunction arrayValuesToNumbers(arr) {\n let n = arr.length;\n let el;\n\n while (n--) {\n el = arr[n];\n\n if (typeof el === 'number') {\n continue\n }\n\n if (el === true) {\n arr[n] = 1;\n continue\n }\n\n if (el === false) {\n arr[n] = 0;\n continue\n }\n\n if (typeof el === 'string') {\n const number = parseNumber(el);\n\n arr[n] = number instanceof Error ? 0 : number;\n }\n }\n\n return arr\n}\n\nfunction fillMatrix(matrix, fill_value) {\n if (!matrix) {\n return value\n }\n\n if (!matrix.every((el) => Array.isArray(el)) || matrix.length === 0) {\n matrix = [[...matrix]];\n }\n\n matrix.map((arr, i) => {\n arr.map((a, j) => {\n if (!a) {\n matrix[i][j] = 0;\n }\n });\n });\n\n const longestArrayIndex = matrix.reduce((acc, arr, i) => (arr.length > matrix[acc].length ? i : acc), 0);\n const longestArrayLength = matrix[longestArrayIndex].length;\n\n return matrix.map((el) => [...el, ...Array(longestArrayLength - el.length).fill(0)])\n}\n\nfunction flatten() {\n let result;\n\n if (arguments.length === 1) {\n const argument = arguments[0];\n result = isArrayLike(argument) ? argsToArray.apply(null, arguments) : [argument];\n } else {\n result = Array.from(arguments);\n }\n\n while (!isFlat(result)) {\n result = flattenShallow(result);\n }\n\n return result\n}\n\nfunction flattenShallow(array) {\n if (!array || !array.reduce) {\n return [array]\n }\n\n return array.reduce((a, b) => {\n const aIsArray = Array.isArray(a);\n const bIsArray = Array.isArray(b);\n\n if (aIsArray && bIsArray) {\n return a.concat(b)\n }\n\n if (aIsArray) {\n a.push(b);\n\n return a\n }\n\n if (bIsArray) {\n return [a].concat(b)\n }\n\n return [a, b]\n })\n}\n\nfunction initial(array, idx) {\n idx = idx || 1;\n\n if (!array || typeof array.slice !== 'function') {\n return array\n }\n\n return array.slice(0, array.length - idx)\n}\n\nfunction isArrayLike(a) {\n return a != null && typeof a.length === 'number' && typeof a !== 'string'\n}\n\nfunction isFlat(array) {\n if (!array) {\n return false\n }\n\n for (let i = 0; i < array.length; ++i) {\n if (Array.isArray(array[i])) {\n return false\n }\n }\n\n return true\n}\n\nfunction rest(array, idx) {\n idx = idx || 1;\n\n if (!array || typeof array.slice !== 'function') {\n return array\n }\n\n return array.slice(idx)\n}\n\nfunction transpose(matrix) {\n if (!matrix) {\n return value\n }\n\n return matrix[0].map((col, i) => matrix.map((row) => row[i]))\n}\n\n// Databases\nfunction findField(database, title) {\n let index = null;\n\n arrayEach(database, (value, i) => {\n if (value[0] === title) {\n index = i;\n\n return false\n }\n });\n\n // Return error if the input field title is incorrect\n if (index == null) {\n return value\n }\n\n return index\n}\n\n// Errors\nfunction anyError() {\n for (let n = 0; n < arguments.length; n++) {\n if (arguments[n] instanceof Error) {\n return arguments[n]\n }\n }\n\n return undefined\n}\n\nfunction anyIsError() {\n let n = arguments.length;\n\n while (n--) {\n if (arguments[n] instanceof Error) {\n return true\n }\n }\n\n return false\n}\n\n// Numbers\nfunction cleanFloat(number) {\n const power = 1e14;\n\n return Math.round(number * power) / power\n}\n\nfunction numbers() {\n const possibleNumbers = flatten.apply(null, arguments);\n\n return possibleNumbers.filter((el) => typeof el === 'number')\n}\n\nfunction serialNumberToDate(serial) {\n if (serial < 60) {\n serial += 1;\n }\n\n const utc_days = Math.floor(serial - 25569);\n const utc_value = utc_days * 86400;\n const date_info = new Date(utc_value * 1000);\n const fractional_day = serial - Math.floor(serial) + 0.0000001;\n\n let total_seconds = Math.floor(86400 * fractional_day);\n\n const seconds = total_seconds % 60;\n\n total_seconds -= seconds;\n\n const hours = Math.floor(total_seconds / (60 * 60));\n const minutes = Math.floor(total_seconds / 60) % 60;\n let days = date_info.getUTCDate();\n let month = date_info.getUTCMonth();\n\n if (serial >= 60 && serial < 61) {\n days = 29;\n month = 1;\n }\n\n return new Date(date_info.getUTCFullYear(), month, days, hours, minutes, seconds)\n}\n\n// Parsers\nfunction parseBool(bool) {\n if (typeof bool === 'boolean') {\n return bool\n }\n\n if (bool instanceof Error) {\n return bool\n }\n\n if (typeof bool === 'number') {\n return bool !== 0\n }\n\n if (typeof bool === 'string') {\n const up = bool.toUpperCase();\n\n if (up === 'TRUE') {\n return true\n }\n\n if (up === 'FALSE') {\n return false\n }\n }\n\n if (bool instanceof Date && !isNaN(bool)) {\n return true\n }\n\n return value\n}\n\nfunction parseDate(date) {\n if (!isNaN(date)) {\n if (date instanceof Date) {\n return new Date(date)\n }\n\n const d = parseFloat(date);\n\n if (d < 0 || d >= 2958466) {\n return num\n }\n\n return serialNumberToDate(d)\n }\n\n if (typeof date === 'string') {\n date = /(\\d{4})-(\\d\\d?)-(\\d\\d?)$/.test(date) ? new Date(date + 'T00:00:00.000') : new Date(date);\n\n if (!isNaN(date)) {\n return date\n }\n }\n\n return value\n}\n\nfunction parseDateArray(arr) {\n let len = arr.length;\n let parsed;\n\n while (len--) {\n parsed = parseDate(arr[len]);\n\n if (parsed === value) {\n return parsed\n }\n\n arr[len] = parsed;\n }\n\n return arr\n}\n\nfunction parseNumber(string) {\n if (string instanceof Error) {\n return string\n }\n\n if (string === undefined || string === null) {\n return 0\n }\n\n if (typeof string === 'boolean') {\n string = +string;\n }\n\n if (!isNaN(string) && string !== '') {\n return parseFloat(string)\n }\n\n return value\n}\n\nfunction parseNumberArray(arr) {\n let len;\n\n if (!arr || (len = arr.length) === 0) {\n return value\n }\n\n let parsed;\n\n while (len--) {\n if (arr[len] instanceof Error) {\n return arr[len]\n }\n\n parsed = parseNumber(arr[len]);\n\n if (parsed instanceof Error) {\n return parsed\n }\n\n arr[len] = parsed;\n }\n\n return arr\n}\n\nfunction parseString(string) {\n if (string instanceof Error) {\n return string\n }\n\n if (string === undefined || string === null) {\n return ''\n }\n\n return string.toString()\n}\n\n// Strings\nfunction anyIsString() {\n let n = arguments.length;\n\n while (n--) {\n if (typeof arguments[n] === 'string') {\n return true\n }\n }\n\n return false\n}\n\n// Misc\n//Filters values from a given range based on multiple criteria.\n//Returns an array containing the values that satisfy all the specified criteria.\nfunction applyCriteria() {\n const args = argsToArray(arguments);\n const range = parseNumberArray(flatten(args.shift()));\n if (range instanceof Error) {\n return range\n }\n\n const criterias = args;\n const criteriaLength = criterias.length / 2;\n\n for (let i = 0; i < criteriaLength; i++) {\n criterias[i * 2] = flatten(criterias[i * 2]);\n }\n\n let values = [];\n\n for (let i = 0; i < range.length; i++) {\n let isMetCondition = false;\n\n for (let j = 0; j < criteriaLength; j++) {\n const valueToTest = criterias[j * 2][i];\n const criteria = criterias[j * 2 + 1];\n const isWildcard = criteria === void 0 || criteria === '*';\n let computedResult = false;\n\n if (isWildcard) {\n computedResult = true;\n } else {\n const tokenizedCriteria = parse(criteria + '');\n const tokens = [createToken(valueToTest, TOKEN_TYPE_LITERAL)].concat(\n tokenizedCriteria\n );\n\n computedResult = compute(tokens);\n }\n\n // Criterias are calculated as AND so any `false` breaks the loop as unmeet condition\n if (!computedResult) {\n isMetCondition = false;\n break\n }\n\n isMetCondition = true;\n }\n\n if (isMetCondition) {\n values.push(range[i]);\n }\n }\n return values\n}\n\nfunction isDefined(arg) {\n return arg !== undefined && arg !== null\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns information about the formatting, location, or contents of a value.\n *\n * Category: Information\n *\n * @returns\n */\nfunction CELL() {\n throw new Error('CELL is not implemented')\n}\n\nconst ERROR = {};\n\nERROR.TYPE = (error_val) => {\n switch (error_val) {\n case nil:\n return 1\n case div0:\n return 2\n case value:\n return 3\n case ref:\n return 4\n case name:\n return 5\n case num:\n return 6\n case na:\n return 7\n case data:\n return 8\n }\n\n return na\n};\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns information about the current operating environment.\n *\n * Category: Information\n *\n * @returns\n */\nfunction INFO() {\n throw new Error('INFO is not implemented')\n}\n\n/**\n * Returns TRUE if the value is blank.\n *\n * Category: Information\n *\n * @param {*} value The value that you want tested. The value argument can be a blank (empty value), error, logical value, text, number, or reference value, or a name referring to any of these.\n * @returns\n */\nfunction ISBLANK(value) {\n return value === null\n}\n\n/**\n * Returns TRUE if the value is any error value except #N/A.\n *\n * Category: Information\n *\n * @param {*} value The value that you want tested. The value argument can be a blank (empty value), error, logical value, text, number, or reference value, or a name referring to any of these.\n * @returns\n */\nfunction ISERR(value$1) {\n return (\n [value, ref, div0, num, name, nil].indexOf(value$1) >= 0 ||\n (typeof value$1 === 'number' && (isNaN(value$1) || !isFinite(value$1)))\n )\n}\n\n/**\n * Returns TRUE if the value is any error value.\n *\n * Category: Information\n *\n * @param {*} value The value that you want tested. The value argument can be a blank (empty value), error, logical value, text, number, or reference value, or a name referring to any of these.\n * @returns\n */\nfunction ISERROR(value) {\n return ISERR(value) || value === na\n}\n\n/**\n * Returns TRUE if the number is even.\n *\n * Category: Information\n *\n * @param {*} number The value to test. If number is not an integer, it is truncated.\n * @returns\n */\nfunction ISEVEN(number) {\n return !(Math.floor(Math.abs(number)) & 1)\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns TRUE if there is a reference to a value that contains a formula.\n *\n * Category: Information\n *\n * @param {*} reference Reference is a reference to the value you want to test. Reference can be a value reference, a formula, or a name that refers to a value.\n * @returns\n */\nfunction ISFORMULA() {\n throw new Error('ISFORMULA is not implemented')\n}\n\n/**\n * Returns TRUE if the value is a logical value.\n *\n * Category: Information\n *\n * @param {*} value The value that you want tested. The value argument can be a blank (empty value), error, logical value, text, number, or reference value, or a name referring to any of these.\n * @returns\n */\nfunction ISLOGICAL(value) {\n return value === true || value === false\n}\n\n/**\n * Returns TRUE if the value is the #N/A error value.\n *\n * Category: Information\n *\n * @param {*} value The value that you want tested. The value argument can be a blank (empty value), error, logical value, text, number, or reference value, or a name referring to any of these.\n * @returns\n */\nfunction ISNA(value) {\n return value === na\n}\n\n/**\n * Returns TRUE if the value is not text.\n *\n * Category: Information\n *\n * @param {*} value The value that you want tested. The value argument can be a blank (empty value), error, logical value, text, number, or reference value, or a name referring to any of these.\n * @returns\n */\nfunction ISNONTEXT(value) {\n return typeof value !== 'string'\n}\n\n/**\n * Returns TRUE if the value is a number.\n *\n * Category: Information\n *\n * @param {*} value The value that you want tested. The value argument can be a blank (empty value), error, logical value, text, number, or reference value, or a name referring to any of these.\n * @returns\n */\nfunction ISNUMBER(value) {\n return typeof value === 'number' && !isNaN(value) && isFinite(value)\n}\n\n/**\n * Returns TRUE if the number is odd.\n *\n * Category: Information\n *\n * @param {*} value The value that you want tested. The value argument can be a blank (empty value), error, logical value, text, number, or reference value, or a name referring to any of these.\n * @returns\n */\nfunction ISODD(value) {\n return !!(Math.floor(Math.abs(value)) & 1)\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns TRUE if the value is a reference.\n *\n * Category: Information\n *\n * @param {*} value The value that you want tested. The value argument can be a blank (empty value), error, logical value, text, number, or reference value, or a name referring to any of these.\n * @returns\n */\nfunction ISREF() {\n throw new Error('ISREF is not implemented')\n}\n\n/**\n * Returns TRUE if the value is text.\n *\n * Category: Information\n *\n * @param {*} value The value that you want tested. The value argument can be a blank (empty value), error, logical value, text, number, or reference value, or a name referring to any of these.\n * @returns\n */\nfunction ISTEXT(value) {\n return typeof value === 'string'\n}\n\n/**\n * Returns a value converted to a number.\n *\n * Category: Information\n *\n * @param {*} value The value you want converted. N converts values listed in the following table.\n * @returns\n */\nfunction N(value) {\n if (ISNUMBER(value)) {\n return value\n }\n\n if (value instanceof Date) {\n return value.getTime()\n }\n\n if (value === true) {\n return 1\n }\n\n if (value === false) {\n return 0\n }\n\n if (ISERROR(value)) {\n return value\n }\n\n return 0\n}\n\n/**\n * Returns the error value #N/A.\n *\n * Category: Information\n *\n * @returns\n */\nfunction NA() {\n return na\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the sheet number of the referenced sheet.\n *\n * Category: Information\n *\n * @param {*} value Optional. Value is the name of a sheet or a reference for which you want the sheet number. If value is omitted, SHEET returns the number of the sheet that contains the function.\n * @returns\n */\nfunction SHEET() {\n throw new Error('SHEET is not implemented')\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the number of sheets in a reference.\n *\n * Category: Information\n *\n * @param {*} reference Optional. Reference is a reference for which you want to know the number of sheets it contains. If Reference is omitted, SHEETS returns the number of sheets in the workbook that contains the function.\n * @returns\n */\nfunction SHEETS() {\n throw new Error('SHEETS is not implemented')\n}\n\n/**\n * Returns a number indicating the data type of a value.\n *\n * Category: Information\n *\n * @param {*} value Can be any Microsoft Excel value, such as a number, text, logical value, and so on.\n * @returns\n */\nfunction TYPE(value) {\n if (ISNUMBER(value)) {\n return 1\n }\n\n if (ISTEXT(value)) {\n return 2\n }\n\n if (ISLOGICAL(value)) {\n return 4\n }\n\n if (ISERROR(value)) {\n return 16\n }\n\n if (Array.isArray(value)) {\n return 64\n }\n}\n\n/**\n * Chooses a value from a list of values.\n *\n * Category: Lookup and reference\n *\n * @param {*} index_num Specifies which value argument is selected. Index_num must be a number between 1 and 254, or a formula or reference to a value containing a number between 1 and 254. If index_num is 1, CHOOSE returns value1; if it is 2, CHOOSE returns value2; and so on. If index_num is less than 1 or greater than the number of the last value in the list, CHOOSE returns the #VALUE! error value. If index_num is a fraction, it is truncated to the lowest integer before being used.\n - If index_num is 1, CHOOSE returns value1; if it is 2, CHOOSE returns value2; and so on.\n - If index_num is less than 1 or greater than the number of the last value in the list, CHOOSE returns the #VALUE! error value.\n - If index_num is a fraction, it is truncated to the lowest integer before being used.\n * @param {*} args value1, value2, ... Value 1 is required, subsequent values are optional. 1 to 254 value arguments from which CHOOSE selects a value or an action to perform based on index_num. The arguments can be numbers, value references, defined names, formulas, functions, or text.\n * @returns\n */\nfunction CHOOSE() {\n if (arguments.length < 2) {\n return na\n }\n\n const index = arguments[0];\n\n if (index < 1 || index > 254) {\n return value\n }\n\n if (arguments.length < index + 1) {\n return value\n }\n\n return arguments[index]\n}\n\n/**\n * Returns the column number of a reference.\n *\n * Category: Lookup and reference\n *\n * @param {*} reference the value or range of values for which you want to return the column number.\n * @param {*} index\n * @returns\n */\nfunction COLUMN(reference, index) {\n if (arguments.length !== 2) {\n return na\n }\n\n if (index < 0) {\n return num\n }\n\n if (!(reference instanceof Array) || typeof index !== 'number') {\n return value\n }\n\n if (reference.length === 0) {\n return undefined\n }\n\n return jStat.col(reference, index)\n}\n\n/**\n * Returns the number of columns in a reference.\n *\n * Category: Lookup and reference\n *\n * @param {*} array An array or array formula, or a reference to a range of values for which you want the number of columns.\n * @returns\n */\nfunction COLUMNS(array) {\n if (arguments.length !== 1) {\n return na\n }\n\n if (!(array instanceof Array)) {\n return value\n }\n\n if (array.length === 0) {\n return 0\n }\n\n return jStat.cols(array)\n}\n\n/**\n * Looks in the top row of an array and returns the value of the indicated value.\n *\n * Category: Lookup and reference\n *\n * @param {*} lookup_value The value to be found in the first row of the table. Lookup_value can be a value, a reference, or a text string.\n * @param {*} table_array A table of information in which data is looked up. Use a reference to a range or a range name.\n * @param {*} row_index_num The row number in table_array from which the matching value will be returned. A row_index_num of 1 returns the first row value in table_array, a row_index_num of 2 returns the second row value in table_array, and so on. If row_index_num is less than 1, HLOOKUP returns the #VALUE! error value; if row_index_num is greater than the number of rows on table_array, HLOOKUP returns the #REF! error value.\n * @param {*} range_lookup Optional. A logical value that specifies whether you want HLOOKUP to find an exact match or an approximate match. If TRUE or omitted, an approximate match is returned. In other words, if an exact match is not found, the next largest value that is less than lookup_value is returned. If FALSE, HLOOKUP will find an exact match. If one is not found, the error value #N/A is returned.\n * @returns\n */\nfunction HLOOKUP(lookup_value, table_array, row_index_num, range_lookup) {\n return VLOOKUP(lookup_value, transpose(table_array), row_index_num, range_lookup)\n}\n\n/**\n * Uses an index to choose a value from a reference or array.\n *\n * Category: Lookup and reference\n *\n * @param {*} array A range of values or an array constant.\n - If array contains only one row or column, the corresponding row_num or column_num argument is optional.\n - If array has more than one row and more than one column, and only row_num or column_num is used, INDEX returns an array of the entire row or column in array.\n * @param {*} row_num Required, unless column_num is present. Selects the row in array from which to return a value. If row_num is omitted, column_num is required.\n * @param {*} column_num Optional. Selects the column in array from which to return a value. If column_num is omitted, row_num is required.\n * @returns\n */\nfunction INDEX(array, row_num, column_num) {\n const someError = anyError(array, row_num, column_num);\n\n if (someError) {\n return someError\n }\n\n if (!Array.isArray(array)) {\n return value\n }\n\n const isOneDimensionRange = array.length > 0 && !Array.isArray(array[0]);\n\n if (isOneDimensionRange && !column_num) {\n column_num = row_num;\n row_num = 1;\n } else {\n column_num = column_num || 1;\n row_num = row_num || 1;\n }\n\n if (column_num < 0 || row_num < 0) {\n return value\n }\n\n if (isOneDimensionRange && row_num === 1 && column_num <= array.length) {\n return array[column_num - 1]\n } else if (row_num <= array.length && column_num <= array[row_num - 1].length) {\n return array[row_num - 1][column_num - 1]\n }\n\n return ref\n}\n\n/**\n * Looks up values in a vector or array.\n *\n * Category: Lookup and reference\n *\n * @param {*} lookup_value A value that LOOKUP searches for in an array. The lookup_value argument can be a number, text, a logical value, or a name or reference that refers to a value.\n - If LOOKUP can't find the value of lookup_value, it uses the largest value in the array that is less than or equal to lookup_value.\n - If the value of lookup_value is smaller than the smallest value in the first row or column (depending on the array dimensions), LOOKUP returns the #N/A error value.\n * @param {*} array A range of values that contains text, numbers, or logical values that you want to compare with lookup_value. The array form of LOOKUP is very similar to the HLOOKUP and VLOOKUP functions. The difference is that HLOOKUP searches for the value of lookup_value in the first row, VLOOKUP searches in the first column, and LOOKUP searches according to the dimensions of array.\n* @param {*} result_array Optional. A range that contains only one row or column. The result_array argument must be the same size as lookup_value. It has to be the same size.\n * @returns\n */\nfunction LOOKUP(lookup_value, array, result_array) {\n array = flatten(array);\n result_array = result_array ? flatten(result_array) : array;\n\n const isNumberLookup = typeof lookup_value === 'number';\n let result = na;\n\n for (let i = 0; i < array.length; i++) {\n if (array[i] === lookup_value) {\n return result_array[i]\n } else if (\n (isNumberLookup && array[i] <= lookup_value) ||\n (typeof array[i] === 'string' && array[i].localeCompare(lookup_value) < 0)\n ) {\n result = result_array[i];\n } else if (isNumberLookup && array[i] > lookup_value) {\n return result\n }\n }\n\n return result\n}\n\n/**\n * Looks up values in a reference or array.\n *\n * Category: Lookup and reference\n *\n * @param {*} lookup_value The value that you want to match in lookup_array. For example, when you look up someone's number in a telephone book, you are using the person's name as the lookup value, but the telephone number is the value you want.The lookup_value argument can be a value (number, text, or logical value) or a value reference to a number, text, or logical value.\n * @param {*} lookup_array The range of values being searched.\n * @param {*} match_type Optional. The number -1, 0, or 1. The match_type argument specifies how Excel matches lookup_value with values in lookup_array. The default value for this argument is 1.\n * @returns\n */\nfunction MATCH(lookup_value, lookup_array, match_type) {\n if ((!lookup_value && lookup_value !== 0) || !lookup_array) {\n return na\n }\n\n if (arguments.length === 2) {\n match_type = 1;\n }\n\n lookup_array = flatten(lookup_array);\n\n if (!(lookup_array instanceof Array)) {\n return na\n }\n\n if (match_type !== -1 && match_type !== 0 && match_type !== 1) {\n return na\n }\n\n let index;\n let indexValue;\n\n for (let idx = 0; idx < lookup_array.length; idx++) {\n if (match_type === 1) {\n if (lookup_array[idx] === lookup_value) {\n return idx + 1\n } else if (lookup_array[idx] < lookup_value) {\n if (!indexValue) {\n index = idx + 1;\n indexValue = lookup_array[idx];\n } else if (lookup_array[idx] > indexValue) {\n index = idx + 1;\n indexValue = lookup_array[idx];\n }\n }\n } else if (match_type === 0) {\n if (typeof lookup_value === 'string' && typeof lookup_array[idx] === 'string') {\n const lookupValueStr = lookup_value\n .toLowerCase()\n .replace(/\\?/g, '.')\n .replace(/\\*/g, '.*')\n .replace(/~/g, '\\\\')\n .replace(/\\+/g, '\\\\+')\n .replace(/\\(/g, '\\\\(')\n .replace(/\\)/g, '\\\\)')\n .replace(/\\[/g, '\\\\[')\n .replace(/\\]/g, '\\\\]');\n\n const regex = new RegExp('^' + lookupValueStr + '$');\n\n if (regex.test(lookup_array[idx].toLowerCase())) {\n return idx + 1\n }\n } else {\n if (lookup_array[idx] === lookup_value) {\n return idx + 1\n }\n }\n } else if (match_type === -1) {\n if (lookup_array[idx] === lookup_value) {\n return idx + 1\n } else if (lookup_array[idx] > lookup_value) {\n if (!indexValue) {\n index = idx + 1;\n indexValue = lookup_array[idx];\n } else if (lookup_array[idx] < indexValue) {\n index = idx + 1;\n indexValue = lookup_array[idx];\n }\n }\n }\n }\n\n return index || na\n}\n\n/**\n * Returns the number of rows in a reference.\n *\n * Category: Lookup and reference\n *\n * @param {*} array An array, an array formula, or a reference to a range of values for which you want the number of rows.\n * @returns\n */\nfunction ROWS(array) {\n if (arguments.length !== 1) {\n return na\n }\n\n if (!(array instanceof Array)) {\n return value\n }\n\n if (array.length === 0) {\n return 0\n }\n\n return jStat.rows(array)\n}\n/**\n * Returns a sorted array of the elements in an array. The returned array is the same shape as the provided array argument.\n *\n * Category: Lookup and reference\n *\n * @param {*} array Array to sort\n * @param {*} sort_index Optional. A number indicating the row or column to sort by\n * @param {*} sort_order Optional. A number indicating the desired sort order; 1 for ascending order (default), -1 for descending order\n * @param {*} by_col Optional. A logical value indicating the desired sort direction; FALSE to sort by row (default), TRUE to sort by column\n * @returns\n */\nfunction SORT(array, sort_index = 1, sort_order = 1, by_col = false) {\n if (!array || !Array.isArray(array)) {\n return na\n }\n\n if (array.length === 0) {\n return 0\n }\n\n sort_index = parseNumber(sort_index);\n if (!sort_index || sort_index < 1) {\n return value\n }\n\n sort_order = parseNumber(sort_order);\n if (sort_order !== 1 && sort_order !== -1) {\n return value\n }\n\n by_col = parseBool(by_col);\n if (typeof by_col !== 'boolean') {\n return name\n }\n\n const sortArray = (arr) =>\n arr.sort((a, b) => {\n a = parseString(a[sort_index - 1]);\n b = parseString(b[sort_index - 1]);\n\n return sort_order === 1 ? (a < b ? sort_order * -1 : sort_order) : a > b ? sort_order : sort_order * -1\n });\n\n const matrix = fillMatrix(array);\n const result = by_col ? transpose(matrix) : matrix;\n\n return sort_index >= 1 && sort_index <= result[0].length\n ? by_col\n ? transpose(sortArray(result))\n : sortArray(result)\n : value\n}\n\n/**\n * Returns the transpose of an array.\n *\n * Category: Lookup and reference\n *\n * @param {*} array An array or range of values on a worksheet that you want to transpose. The transpose of an array is created by using the first row of the array as the first column of the new array, the second row of the array as the second column of the new array, and so on. If you're not sure of how to enter an array formula, see Create an array formula.\n * @returns\n */\nfunction TRANSPOSE(array) {\n if (!array) {\n return na\n }\n\n const matrix = fillMatrix(array);\n\n return transpose(matrix)\n}\n\n/**\n * Returns a list of unique values in a list or range.\n *\n * Category: Lookup and reference\n *\n * @returns\n */\nfunction UNIQUE() {\n const result = [];\n\n for (let i = 0; i < arguments.length; ++i) {\n let hasElement = false;\n const element = arguments[i];\n\n // Check if we've already seen this element.\n\n for (let j = 0; j < result.length; ++j) {\n hasElement = result[j] === element;\n\n if (hasElement) {\n break\n }\n }\n\n // If we did not find it, add it to the result.\n if (!hasElement) {\n result.push(element);\n }\n }\n\n return result\n}\n\n/**\n * Looks in the first column of an array and moves across the row to return the value of a value.\n *\n * Category: Lookup and reference\n *\n * @param {*} lookup_value The value to be found in the first row of the table. Lookup_value can be a value, a reference, or a text string.\n * @param {*} table_array A table of information in which data is looked up. Use a reference to a range or a range name.\n * @param {*} col_index_num The row number in table_array from which the matching value will be returned. A row_index_num of 1 returns the first row value in table_array, a row_index_num of 2 returns the second row value in table_array, and so on. If row_index_num is less than 1, HLOOKUP returns the #VALUE! error value; if row_index_num is greater than the number of rows on table_array, HLOOKUP returns the #REF! error value.\n * @param {*} range_lookup Optional. A logical value that specifies whether you want HLOOKUP to find an exact match or an approximate match. If TRUE or omitted, an approximate match is returned. In other words, if an exact match is not found, the next largest value that is less than lookup_value is returned. If FALSE, HLOOKUP will find an exact match. If one is not found, the error value #N/A is returned.\n * @returns\n */\nfunction VLOOKUP(lookup_value, table_array, col_index_num, range_lookup) {\n if (!table_array || !col_index_num) {\n return na\n }\n\n range_lookup = !(range_lookup === 0 || range_lookup === false);\n\n let result = na;\n let exactMatchOnly = false;\n\n const isNumberLookup = typeof lookup_value === 'number';\n const lookupValue = typeof lookup_value === 'string' ? lookup_value.toLowerCase() : lookup_value;\n\n for (let i = 0; i < table_array.length; i++) {\n const row = table_array[i];\n const rowValue = typeof row[0] === 'string' ? row[0].toLowerCase() : row[0];\n\n if (rowValue === lookupValue) {\n result = col_index_num < row.length + 1 ? row[col_index_num - 1] : ref;\n break\n } else if (\n !exactMatchOnly &&\n ((isNumberLookup && range_lookup && rowValue <= lookup_value) ||\n (range_lookup && typeof rowValue === 'string' && rowValue.localeCompare(lookup_value) < 0))\n ) {\n result = col_index_num < row.length + 1 ? row[col_index_num - 1] : ref;\n }\n\n if (isNumberLookup && rowValue > lookup_value) {\n exactMatchOnly = true;\n }\n }\n\n return result\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Changes full-width (double-byte) English letters or katakana within a character string to half-width (single-byte) characters.\n *\n * Category: Text\n *\n * @param {*} text The text or a reference to a value that contains the text you want to change. If text does not contain any full-width letters, text is not changed.\n * @returns\n */\nfunction ASC() {\n throw new Error('ASC is not implemented')\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Converts a number to text, using the \u00DF (baht) currency format.\n *\n * Category: Text\n *\n * @param {*} number A number you want to convert to text, or a reference to a value containing a number, or a formula that evaluates to a number.\n * @returns\n */\nfunction BAHTTEXT() {\n throw new Error('BAHTTEXT is not implemented')\n}\n\n/**\n * Returns the character specified by the code number.\n *\n * Category: Text\n *\n * @param {*} number A number between 1 and 255 specifying which character you want. The character is from the character set used by your computer. Note: Excel for the web supports only CHAR(9), CHAR(10), CHAR(13), and CHAR(32) and above.\n * @returns\n */\nfunction CHAR(number) {\n number = parseNumber(number);\n\n if (number === 0) {\n return value\n }\n\n if (number instanceof Error) {\n return number\n }\n\n return String.fromCharCode(number)\n}\n\n/**\n * Removes all nonprintable characters from text.\n *\n * Category: Text\n *\n * @param {*} text Any worksheet information from which you want to remove nonprintable characters.\n * @returns\n */\nfunction CLEAN(text) {\n if (anyIsError(text)) {\n return text\n }\n\n text = text || '';\n const re = /[\\0-\\x1F]/g;\n\n return text.replace(re, '')\n}\n\n/**\n * Returns a numeric code for the first character in a text string.\n *\n * Category: Text\n *\n * @param {*} text The text for which you want the code of the first character.\n * @returns\n */\nfunction CODE(text) {\n if (anyIsError(text)) {\n return text\n }\n\n text = text || '';\n let result = text.charCodeAt(0);\n\n if (isNaN(result)) {\n result = value;\n }\n\n return result\n}\n\n/**\n * Joins several text items into one text item.\n *\n * Category: Text\n *\n * @returns\n */\nfunction CONCATENATE() {\n const args = flatten(arguments);\n const someError = anyError.apply(undefined, args);\n\n if (someError) {\n return someError\n }\n\n let trueFound = 0;\n\n while ((trueFound = args.indexOf(true)) > -1) {\n args[trueFound] = 'TRUE';\n }\n\n let falseFound = 0;\n\n while ((falseFound = args.indexOf(false)) > -1) {\n args[falseFound] = 'FALSE';\n }\n\n return args.join('')\n}\n\nconst CONCAT = CONCATENATE;\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Changes half-width (single-byte) English letters or katakana within a character string to full-width (double-byte) characters.\n *\n * Category: Text\n *\n * @param {*} text The text or a reference to a value that contains the text you want to change. If text does not contain any half-width English letters or katakana, text is not changed.\n * @returns\n */\nfunction DBCS() {\n throw new Error('DBCS is not implemented')\n}\n\n/**\n * Converts a number to text, using the $ (dollar) currency format.\n *\n * Category: Text\n *\n * @param {*} number A number, a reference to a value containing a number, or a formula that evaluates to a number.\n * @param {*} decimals Optional. The number of digits to the right of the decimal point. If this is negative, the number is rounded to the left of the decimal point. If you omit decimals, it is assumed to be 2.\n * @returns\n */\nfunction DOLLAR(number, decimals = 2) {\n number = parseNumber(number);\n if (isNaN(number)) {\n return value\n }\n\n number = ROUND(number, decimals);\n\n const options = {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: decimals >= 0 ? decimals : 0,\n maximumFractionDigits: decimals >= 0 ? decimals : 0\n };\n\n const formattedNumber = number.toLocaleString('en-US', options);\n\n if (number < 0) {\n return '$(' + formattedNumber.slice(2) + ')'\n }\n\n return formattedNumber\n}\n\n/**\n * Checks to see if two text values are identical.\n *\n * Category: Text\n *\n * @param {*} text1 The first text string.\n * @param {*} text2 The second text string.\n * @returns\n */\nfunction EXACT(text1, text2) {\n if (arguments.length !== 2) {\n return na\n }\n\n const someError = anyError(text1, text2);\n\n if (someError) {\n return someError\n }\n\n text1 = parseString(text1);\n text2 = parseString(text2);\n\n return text1 === text2\n}\n\n/**\n * Locate one text string within a second text string, and return the number of the starting position of the first text string from the first character of the second text string.\n *\n * Category: Text\n *\n * @param {*} find_text The text you want to find.\n * @param {*} within_text The text containing the text you want to find.\n * @param {*} start_num Optional. Specifies the character at which to start the search. The first character in within_text is character number 1. If you omit start_num, it is assumed to be 1.\n * @returns\n */\nfunction FIND(find_text, within_text, start_num) {\n if (arguments.length < 2) {\n return na\n }\n\n find_text = parseString(find_text);\n within_text = parseString(within_text);\n start_num = start_num === undefined ? 0 : start_num;\n const found_index = within_text.indexOf(find_text, start_num - 1);\n\n if (found_index === -1) {\n return value\n }\n\n return found_index + 1\n}\n\n/**\n * Formats a number as text with a fixed number of decimals.\n *\n * Category: Text\n *\n * @param {*} number The number you want to round and convert to text.\n * @param {*} decimals Optional. The number of digits to the right of the decimal point.\n * @param {*} no_commas Optional. A logical value that, if TRUE, prevents FIXED from including commas in the returned text.\n * @returns\n */\nfunction FIXED(number, decimals = 2, no_commas = false) {\n number = parseNumber(number);\n if (isNaN(number)) {\n return value\n }\n\n decimals = parseNumber(decimals);\n if (isNaN(decimals)) {\n return value\n }\n\n if (decimals < 0) {\n const factor = Math.pow(10, -decimals);\n number = Math.round(number / factor) * factor;\n } else {\n number = number.toFixed(decimals);\n }\n\n if (no_commas) {\n number = number.toString().replace(/,/g, '');\n } else {\n const parts = number.toString().split('.');\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+$)/g, ',');\n number = parts.join('.');\n }\n\n return number\n}\n\n/**\n * Returns the leftmost characters from a text value.\n *\n * Category: Text\n *\n * @param {*} text The text string that contains the characters you want to extract.\n * @param {*} num_chars Optional. Specifies the number of characters you want LEFT to extract.\n * @returns\n */\nfunction LEFT(text, num_chars) {\n const someError = anyError(text, num_chars);\n\n if (someError) {\n return someError\n }\n\n text = parseString(text);\n num_chars = num_chars === undefined ? 1 : num_chars;\n num_chars = parseNumber(num_chars);\n\n if (num_chars instanceof Error || typeof text !== 'string') {\n return value\n }\n\n return text.substring(0, num_chars)\n}\n\n/**\n * Returns the number of characters in a text string\n *\n * Category: Text\n *\n * @param {*} text The text whose length you want to find. Spaces count as characters.\n * @returns\n */\nfunction LEN(text) {\n if (arguments.length === 0) {\n return error\n }\n\n if (text instanceof Error) {\n return text\n }\n\n if (Array.isArray(text)) {\n return value\n }\n\n const textAsString = parseString(text);\n\n return textAsString.length\n}\n\n/**\n * Converts text to lowercase.\n *\n * Category: Text\n *\n * @param {*} text The text you want to convert to lowercase. LOWER does not change characters in text that are not letters.\n * @returns\n */\nfunction LOWER(text) {\n if (arguments.length !== 1) {\n return value\n }\n\n text = parseString(text);\n\n if (anyIsError(text)) {\n return text\n }\n\n return text.toLowerCase()\n}\n\n/**\n * Returns a specific number of characters from a text string starting at the position you specify\n *\n * Category: Text\n *\n * @param {*} text The text string containing the characters you want to extract.\n * @param {*} start_num The position of the first character you want to extract in text. The first character in text has start_num 1, and so on.\n * @param {*} num_chars Specifies the number of characters you want MID to return from text.\n * @returns\n */\nfunction MID(text, start_num, num_chars) {\n if (start_num === undefined || start_num === null) {\n return value\n }\n\n start_num = parseNumber(start_num);\n num_chars = parseNumber(num_chars);\n\n if (anyIsError(start_num, num_chars) || typeof text !== 'string') {\n return num_chars\n }\n\n const begin = start_num - 1;\n const end = begin + num_chars;\n\n return text.substring(begin, end)\n}\n\n// TODO\n/**\n * Converts text to number in a locale-independent manner.\n *\n * Category: Text\n *\n * @param {*} text The text to convert to a number.\n * @param {*} decimal_separator Optional. The character used to separate the integer and fractional part of the result.\n * @param {*} group_separator Optional. The character used to separate groupings of numbers, such as thousands from hundreds and millions from thousands.\n * @returns\n */\nfunction NUMBERVALUE(text, decimal_separator, group_separator) {\n text = isDefined(text) ? text : '';\n\n if (typeof text === 'number') {\n return text\n }\n\n if (typeof text !== 'string') {\n return na\n }\n\n decimal_separator = typeof decimal_separator === 'undefined' ? '.' : decimal_separator;\n group_separator = typeof group_separator === 'undefined' ? ',' : group_separator;\n\n return Number(text.replace(decimal_separator, '.').replace(group_separator, ''))\n}\n\n// TODO\n/**\n * -- Not implemented --\n */\nfunction PRONETIC() {\n throw new Error('PRONETIC is not implemented')\n}\n\n/**\n * Capitalizes the first letter in each word of a text value.\n *\n * Category: Text\n *\n * @param {*} text Text enclosed in quotation marks, a formula that returns text, or a reference to a value containing the text you want to partially capitalize.\n * @returns\n */\nfunction PROPER(text) {\n if (anyIsError(text)) {\n return text\n }\n\n if (isNaN(text) && typeof text === 'number') {\n return value\n }\n\n text = parseString(text);\n\n return text.replace(/\\w\\S*/g, (txt) => txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase())\n}\n\n/**\n * Replaces characters within text\n *\n * Category: Text\n *\n * @param {*} old_text Text in which you want to replace some characters.\n * @param {*} num_chars The number of characters in old_text that you want REPLACE to replace with new_text.\n * @param {*} length he number of characters in old_text that you want REPLACEB to replace with new_text.\n * @param {*} new_text he text that will replace characters in old_text.\n * @returns\n */\nfunction REPLACE(old_text, num_chars, length, new_text) {\n num_chars = parseNumber(num_chars);\n length = parseNumber(length);\n\n if (anyIsError(num_chars, length) || typeof old_text !== 'string' || typeof new_text !== 'string') {\n return value\n }\n\n return old_text.substr(0, num_chars - 1) + new_text + old_text.substr(num_chars - 1 + length)\n}\n\n/**\n * Repeats text a given number of times.\n *\n * Category: Text\n *\n * @param {*} text The text you want to repeat.\n * @param {*} number_times A positive number specifying the number of times to repeat text.\n * @returns\n */\nfunction REPT(text, number_times) {\n const someError = anyError(text, number_times);\n\n if (someError) {\n return someError\n }\n\n text = parseString(text);\n number_times = parseNumber(number_times);\n\n if (number_times instanceof Error) {\n return number_times\n }\n\n return new Array(number_times + 1).join(text)\n}\n\n/**\n * Returns the rightmost characters from a text value\n *\n * Category: Text\n *\n * @param {*} text The text string containing the characters you want to extract.\n * @param {*} num_chars Optional. Specifies the number of characters you want RIGHT to extract.\n * @returns\n */\nfunction RIGHT(text, num_chars) {\n const someError = anyError(text, num_chars);\n\n if (someError) {\n return someError\n }\n\n text = parseString(text);\n num_chars = num_chars === undefined ? 1 : num_chars;\n num_chars = parseNumber(num_chars);\n\n if (num_chars instanceof Error) {\n return num_chars\n }\n\n return text.substring(text.length - num_chars)\n}\n\n/**\n * Finds one text value within another (not case-sensitive)\n *\n * Category: Text\n *\n * @param {*} find_text The text that you want to find.\n * @param {*} within_text The text in which you want to search for the value of the find_text argument.\n * @param {*} start_num Optional. The character number in the within_text argument at which you want to start searching.\n * @returns\n */\nfunction SEARCH(find_text, within_text, start_num) {\n let foundAt;\n\n if (typeof find_text !== 'string' || typeof within_text !== 'string') {\n return value\n }\n\n start_num = start_num === undefined ? 0 : start_num;\n foundAt = within_text.toLowerCase().indexOf(find_text.toLowerCase(), start_num - 1) + 1;\n\n return foundAt === 0 ? value : foundAt\n}\n\n/**\n * Substitutes new text for old text in a text string.\n *\n * Category: Text\n *\n * @param {*} text The text or the reference to a value containing text for which you want to substitute characters.\n * @param {*} old_text The text you want to replace.\n * @param {*} new_text The text you want to replace old_text with.\n * @param {*} instance_num Optional. Specifies which occurrence of old_text you want to replace with new_text. If you specify instance_num, only that instance of old_text is replaced. Otherwise, every occurrence of old_text in text is changed to new_text.\n * @returns\n */\nfunction SUBSTITUTE(text, old_text, new_text, instance_num) {\n if (arguments.length < 3) {\n return na\n }\n\n if (!text || !old_text) {\n return text\n } else if (instance_num === undefined) {\n return text.split(old_text).join(new_text)\n } else {\n instance_num = Math.floor(Number(instance_num));\n\n if (Number.isNaN(instance_num) || instance_num <= 0) {\n return value\n }\n\n let index = 0;\n let i = 0;\n\n while (index > -1 && text.indexOf(old_text, index) > -1) {\n index = text.indexOf(old_text, index + 1);\n i++;\n\n if (index > -1 && i === instance_num) {\n return text.substring(0, index) + new_text + text.substring(index + old_text.length)\n }\n }\n\n return text\n }\n}\n\n/**\n * Converts its arguments to text.\n *\n * Category: Text\n *\n * @param {*} value The value you want to test.\n * @returns\n */\nfunction T(value) {\n if (value instanceof Error) {\n return value\n }\n\n return typeof value === 'string' ? value : ''\n}\n\n/**\n * Formats a number and converts it to text.\n *\n * Category: Text\n *\n * @param {*} value A numeric value that you want to be converted into text.\n * @param {*} format_text A text string that defines the formatting that you want to be applied to the supplied value.\n * @returns\n */\nfunction TEXT(value$1, format_text) {\n if (value$1 === undefined || value$1 instanceof Error || format_text instanceof Error) {\n return na\n }\n\n if (value$1 instanceof Date) {\n return value$1.toISOString().slice(0, 10)\n }\n\n if (format_text === undefined || format_text === null) {\n return ''\n }\n\n if (typeof format_text === 'number') {\n return String(format_text)\n }\n\n if (typeof format_text !== 'string') {\n return value\n }\n\n const currencySymbol = format_text.startsWith('$') ? '$' : '';\n const isPercent = format_text.endsWith('%');\n format_text = format_text.replace(/%/g, '').replace(/\\$/g, '');\n\n // count all 0s after the decimal point\n const decimalPlaces = format_text.includes('.') ? format_text.split('.')[1].match(/0/g).length : 0;\n\n const noCommas = !format_text.includes(',');\n\n if (isPercent) {\n value$1 = value$1 * 100;\n }\n\n value$1 = FIXED(value$1, decimalPlaces, noCommas);\n\n if (value$1.startsWith('-')) {\n value$1 = value$1.replace('-', '');\n value$1 = '-' + currencySymbol + value$1;\n } else {\n value$1 = currencySymbol + value$1;\n }\n\n if (isPercent) {\n value$1 = value$1 + '%';\n }\n\n return value$1\n}\n\n/**\n * Combines the text from multiple ranges and/or strings.\n *\n * Category: Text\n * @param {*} delimiter A text string, either empty, or one or more characters enclosed by double quotes, or a reference to a valid text string. If a number is supplied, it will be treated as text.\n * @param {*} ignore_empty If TRUE, ignores empty values.\n * @param {*} args Text item to be joined. A text string, or array of strings, such as a range of values.\n * @returns\n */\nfunction TEXTJOIN(delimiter, ignore_empty, ...args) {\n if (typeof ignore_empty !== 'boolean') {\n ignore_empty = parseBool(ignore_empty);\n }\n\n if (arguments.length < 3) {\n return na\n }\n\n delimiter = delimiter !== null && delimiter !== undefined ? delimiter : '';\n\n let flatArgs = flatten(args);\n let textToJoin = ignore_empty ? flatArgs.filter((text) => text) : flatArgs;\n\n if (Array.isArray(delimiter)) {\n delimiter = flatten(delimiter);\n\n let chunks = textToJoin.map((item) => [item]);\n let index = 0;\n\n for (let i = 0; i < chunks.length - 1; i++) {\n chunks[i].push(delimiter[index]);\n index++;\n\n if (index === delimiter.length) {\n index = 0;\n }\n }\n\n textToJoin = flatten(chunks);\n\n return textToJoin.join('')\n }\n\n return textToJoin.join(delimiter)\n}\n\n/**\n * Removes spaces from text.\n *\n * Category: Text\n *\n * @param {*} text The text from which you want spaces removed.\n * @returns\n */\nfunction TRIM(text) {\n text = parseString(text);\n\n if (text instanceof Error) {\n return text\n }\n\n return text.replace(/\\s+/g, ' ').trim()\n}\n\nconst UNICHAR = CHAR;\n\nconst UNICODE = CODE;\n\n/**\n * Converts text to uppercase.\n *\n * Category: Text\n *\n * @param {*} text The text you want converted to uppercase. Text can be a reference or text string.\n * @returns\n */\nfunction UPPER(text) {\n text = parseString(text);\n\n if (text instanceof Error) {\n return text\n }\n\n return text.toUpperCase()\n}\n\n/**\n * Converts a text argument to a number.\n *\n * Category: Text\n *\n * @param {*} text The text enclosed in quotation marks or a reference to a value containing the text you want to convert.\n * @returns\n */\nfunction VALUE(text) {\n const anyError$1 = anyError(text);\n\n if (anyError$1) {\n return anyError$1\n }\n\n if (typeof text === 'number') {\n return text\n }\n\n if (!isDefined(text)) {\n text = '';\n }\n\n if (typeof text !== 'string') {\n return value\n }\n\n const isPercent = /(%)$/.test(text) || /^(%)/.test(text);\n text = text.replace(/^[^0-9-]{0,3}/, '');\n text = text.replace(/[^0-9]{0,3}$/, '');\n text = text.replace(/[ ,]/g, '');\n\n if (text === '') {\n return 0\n }\n\n let output = Number(text);\n\n if (isNaN(output)) {\n return value\n }\n\n output = output || 0;\n\n if (isPercent) {\n output = output * 0.01;\n }\n\n return output\n}\n\nconst SQRT2PI = 2.5066282746310002;\n\n/**\n * Returns the average of the absolute deviations of data points from their mean.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Number1 is required, subsequent numbers are optional. 1 to 255 arguments for which you want the average of the absolute deviations. You can also use a single array or a reference to an array instead of arguments separated by commas.\n * @returns\n */\nfunction AVEDEV() {\n const flatArguments = flatten(arguments);\n const flatArgumentsDefined = flatArguments.filter(isDefined);\n\n if (flatArgumentsDefined.length === 0) {\n return num\n }\n\n const range = parseNumberArray(flatArgumentsDefined);\n\n if (range instanceof Error) {\n return range\n }\n\n return jStat.sum(jStat(range).subtract(jStat.mean(range)).abs()[0]) / range.length\n}\n\n/**\n * Returns the average of its arguments.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ...Numbers, value references or ranges for which you want the average.\n * @returns\n */\nfunction AVERAGE() {\n const flatArguments = flatten(arguments);\n const flatArgumentsDefined = flatArguments.filter(isDefined);\n\n if (flatArgumentsDefined.length === 0) {\n return div0\n }\n\n const someError = anyError.apply(undefined, flatArgumentsDefined);\n\n if (someError) {\n return someError\n }\n\n const range = numbers(flatArgumentsDefined);\n const n = range.length;\n\n let sum = 0;\n let count = 0;\n let result;\n\n for (let i = 0; i < n; i++) {\n sum += range[i];\n count += 1;\n }\n\n result = sum / count;\n\n if (isNaN(result)) {\n result = num;\n }\n\n return result\n}\n\n/**\n * Returns the average of its arguments, including numbers, text, and logical values.\n *\n * Category: Statistical\n *\n * @param {*} args value1, value2, ... Value1 is required, subsequent values are optional. 1 to 255 values, ranges of values, or values for which you want the average.\n * @returns\n */\nfunction AVERAGEA() {\n const flatArguments = flatten(arguments);\n const flatArgumentsDefined = flatArguments.filter(isDefined);\n\n if (flatArgumentsDefined.length === 0) {\n return div0\n }\n\n const someError = anyError.apply(undefined, flatArgumentsDefined);\n\n if (someError) {\n return someError\n }\n\n const range = flatArgumentsDefined;\n const n = range.length;\n\n let sum = 0;\n let count = 0;\n let result;\n\n for (let i = 0; i < n; i++) {\n const el = range[i];\n\n if (typeof el === 'number') {\n sum += el;\n }\n\n if (el === true) {\n sum++;\n }\n\n if (el !== null) {\n count++;\n }\n }\n\n result = sum / count;\n\n if (isNaN(result)) {\n result = num;\n }\n\n return result\n}\n\n/**\n * Returns the average (arithmetic mean) of all the values in a range that meet a given criteria.\n *\n * Category: Statistical\n *\n * @param {*} range One or more values to average, including numbers or names, arrays, or references that contain numbers.\n * @param {*} criteria The criteria in the form of a number, expression, value reference, or text that defines which values are averaged.\n * @param {*} average_range Optional. The actual set of values to average. If omitted, range is used.\n * @returns\n */\nfunction AVERAGEIF(range, criteria, average_range) {\n if (arguments.length <= 1) {\n return na\n }\n\n average_range = average_range || range;\n\n const flatAverageRange = flatten(average_range);\n const flatAverageRangeDefined = flatAverageRange.filter(isDefined);\n\n average_range = parseNumberArray(flatAverageRangeDefined);\n range = flatten(range);\n\n if (average_range instanceof Error) {\n return average_range\n }\n\n let average_count = 0;\n let result = 0;\n\n const isWildcard = criteria === void 0 || criteria === '*';\n const tokenizedCriteria = isWildcard ? null : parse(criteria + '');\n\n for (let i = 0; i < range.length; i++) {\n const value = range[i];\n\n if (isWildcard) {\n result += average_range[i];\n average_count++;\n } else {\n const tokens = [createToken(value, TOKEN_TYPE_LITERAL)].concat(tokenizedCriteria);\n\n if (compute(tokens)) {\n result += average_range[i];\n average_count++;\n }\n }\n }\n\n return result / average_count\n}\n\n/**\n * Returns the average (arithmetic mean) of all values that meet multiple criteria.\n *\n * Category: Statistical\n *\n * @param {*} args One or more values to average, including numbers or names, arrays, or references that contain numbers.\n * @returns\n */\nfunction AVERAGEIFS() {\n // Does not work with multi dimensional ranges yet!\n // http://office.microsoft.com/en-001/excel-help/averageifs-function-HA010047493.aspx\n const values = applyCriteria(...arguments);\n const result = values.reduce((acc, value) => acc + value, 0);\n const average = result / values.length;\n\n return isNaN(average) ? 0 : average\n}\n\nconst BETA = {};\n\n/**\n * Returns the beta cumulative distribution function.\n *\n * Category: Statistical\n *\n * @param {*} x The value between A and B at which to evaluate the function\n * @param {*} alpha A parameter of the distribution.\n * @param {*} beta A parameter of the distribution.\n * @param {*} cumulative A logical value that determines the form of the function. If cumulative is TRUE, BETA.DIST returns the cumulative distribution function; if FALSE, it returns the probability density function.\n * @param {*} a Optional. A lower bound to the interval of x.\n * @param {*} b Optional. An upper bound to the interval of x.\n * @returns\n */\nBETA.DIST = function (x, alpha, beta, cumulative, a, b) {\n if (arguments.length < 4) {\n return value\n }\n\n a = a === undefined ? 0 : a;\n b = b === undefined ? 1 : b;\n\n x = parseNumber(x);\n alpha = parseNumber(alpha);\n beta = parseNumber(beta);\n a = parseNumber(a);\n b = parseNumber(b);\n\n if (anyIsError(x, alpha, beta, a, b)) {\n return value\n }\n\n x = (x - a) / (b - a);\n\n return cumulative ? jStat.beta.cdf(x, alpha, beta) : jStat.beta.pdf(x, alpha, beta)\n};\n\n/**\n * Returns the inverse of the cumulative distribution function for a specified beta distribution.\n *\n * Category: Statistical\n *\n * @param {*} probability A probability associated with the beta distribution.\n * @param {*} alpha A parameter of the distribution.\n * @param {*} beta A parameter the distribution.\n * @param {*} a Optional. A lower bound to the interval of x.\n * @param {*} b Optional. An upper bound to the interval of x.\n * @returns\n */\nBETA.INV = (probability, alpha, beta, a, b) => {\n a = a === undefined ? 0 : a;\n b = b === undefined ? 1 : b;\n probability = parseNumber(probability);\n alpha = parseNumber(alpha);\n beta = parseNumber(beta);\n a = parseNumber(a);\n b = parseNumber(b);\n\n if (anyIsError(probability, alpha, beta, a, b)) {\n return value\n }\n\n return jStat.beta.inv(probability, alpha, beta) * (b - a) + a\n};\n\nconst BINOM = {};\n\n/**\n * Returns the individual term binomial distribution probability.\n *\n * Category: Statistical\n *\n * @param {*} number_s The number of successes in trials.\n * @param {*} trials The number of independent trials.\n * @param {*} probability_s The probability of success on each trial.\n * @param {*} cumulative A logical value that determines the form of the function. If cumulative is TRUE, then BINOM.DIST returns the cumulative distribution function, which is the probability that there are at most number_s successes; if FALSE, it returns the probability mass function, which is the probability that there are number_s successes.\n * @returns\n */\nBINOM.DIST = (number_s, trials, probability_s, cumulative) => {\n number_s = parseNumber(number_s);\n trials = parseNumber(trials);\n probability_s = parseNumber(probability_s);\n cumulative = parseNumber(cumulative);\n\n if (anyIsError(number_s, trials, probability_s, cumulative)) {\n return value\n }\n\n return cumulative\n ? jStat.binomial.cdf(number_s, trials, probability_s)\n : jStat.binomial.pdf(number_s, trials, probability_s)\n};\n\n/**\n * Returns the probability of a trial result using a binomial distribution.\n *\n * Category: Statistical\n *\n * @param {*} trials The number of independent trials. Must be greater than or equal to 0.\n * @param {*} probability_s The probability of success in each trial. Must be greater than or equal to 0 and less than or equal to 1.\n * @param {*} number_s The number of successes in trials. Must be greater than or equal to 0 and less than or equal to Trials.\n * @param {*} number_s2 Optional. If provided, returns the probability that the number of successful trials will fall between Number_s and number_s2. Must be greater than or equal to Number_s and less than or equal to Trials.\n * @returns\n */\nBINOM.DIST.RANGE = (trials, probability_s, number_s, number_s2) => {\n number_s2 = number_s2 === undefined ? number_s : number_s2;\n\n trials = parseNumber(trials);\n probability_s = parseNumber(probability_s);\n number_s = parseNumber(number_s);\n number_s2 = parseNumber(number_s2);\n\n if (anyIsError(trials, probability_s, number_s, number_s2)) {\n return value\n }\n\n let result = 0;\n\n for (let i = number_s; i <= number_s2; i++) {\n result += COMBIN(trials, i) * Math.pow(probability_s, i) * Math.pow(1 - probability_s, trials - i);\n }\n\n return result\n};\n\n/**\n * Returns the smallest value for which the cumulative binomial distribution is less than or equal to a criterion value.\n *\n * Category: Statistical\n *\n * @param {*} trials The number of Bernoulli trials.\n * @param {*} probability_s The probability of a success on each trial.\n * @param {*} alpha The criterion value.\n * @returns\n */\nBINOM.INV = (trials, probability_s, alpha) => {\n trials = parseNumber(trials);\n probability_s = parseNumber(probability_s);\n alpha = parseNumber(alpha);\n\n if (anyIsError(trials, probability_s, alpha)) {\n return value\n }\n\n let x = 0;\n\n while (x <= trials) {\n if (jStat.binomial.cdf(x, trials, probability_s) >= alpha) {\n return x\n }\n\n x++;\n }\n};\n\nconst CHISQ = {};\n\n/**\n * Returns the cumulative beta probability density function.\n *\n * Category: Statistical\n *\n * @param {*} x The value at which you want to evaluate the distribution.\n * @param {*} deg_freedom The number of degrees of freedom.\n * @param {*} cumulative A logical value that determines the form of the function. If cumulative is TRUE, CHISQ.DIST returns the cumulative distribution function; if FALSE, it returns the probability density function.\n * @returns\n */\nCHISQ.DIST = (x, deg_freedom, cumulative) => {\n x = parseNumber(x);\n deg_freedom = parseNumber(deg_freedom);\n\n if (anyIsError(x, deg_freedom)) {\n return value\n }\n\n return cumulative ? jStat.chisquare.cdf(x, deg_freedom) : jStat.chisquare.pdf(x, deg_freedom)\n};\n\n/**\n * Returns the one-tailed probability of the chi-squared distribution.\n *\n * Category: Statistical\n *\n * @param {*} x The value at which you want to evaluate the distribution.\n * @param {*} deg_freedom The number of degrees of freedom.\n * @returns\n */\nCHISQ.DIST.RT = (x, deg_freedom) => {\n if (!x | !deg_freedom) {\n return na\n }\n\n if (x < 1 || deg_freedom > Math.pow(10, 10)) {\n return num\n }\n\n if (typeof x !== 'number' || typeof deg_freedom !== 'number') {\n return value\n }\n\n return 1 - jStat.chisquare.cdf(x, deg_freedom)\n};\n\n/**\n * Returns the cumulative beta probability density function.\n *\n * Category: Statistical\n *\n * @param {*} probability A probability associated with the chi-squared distribution.\n * @param {*} deg_freedom The number of degrees of freedom.\n * @returns\n */\nCHISQ.INV = (probability, deg_freedom) => {\n probability = parseNumber(probability);\n deg_freedom = parseNumber(deg_freedom);\n\n if (anyIsError(probability, deg_freedom)) {\n return value\n }\n\n return jStat.chisquare.inv(probability, deg_freedom)\n};\n\n/**\n * Returns the inverse of the one-tailed probability of the chi-squared distribution.\n *\n * Category: Statistical\n *\n * @param {*} probability A probability associated with the chi-squared distribution.\n * @param {*} deg_freedom The number of degrees of freedom.\n * @returns\n */\nCHISQ.INV.RT = (probability, deg_freedom) => {\n if (!probability | !deg_freedom) {\n return na\n }\n\n if (probability < 0 || probability > 1 || deg_freedom < 1 || deg_freedom > Math.pow(10, 10)) {\n return num\n }\n\n if (typeof probability !== 'number' || typeof deg_freedom !== 'number') {\n return value\n }\n\n return jStat.chisquare.inv(1.0 - probability, deg_freedom)\n};\n\n/**\n * Returns the test for independence.\n *\n * Category: Statistical\n *\n * @param {*} actual_range The range of data that contains observations to test against expected values.\n * @param {*} expected_range The range of data that contains the ratio of the product of row totals and column totals to the grand total.\n * @returns\n */\nCHISQ.TEST = function (actual_range, expected_range) {\n if (arguments.length !== 2) {\n return na\n }\n\n if (!(actual_range instanceof Array) || !(expected_range instanceof Array)) {\n return value\n }\n\n if (actual_range.length !== expected_range.length) {\n return value\n }\n\n if (actual_range[0] && expected_range[0] && actual_range[0].length !== expected_range[0].length) {\n return value\n }\n\n const row = actual_range.length;\n\n let tmp, i, j;\n\n // Convert single-dimension array into two-dimension array\n\n for (i = 0; i < row; i++) {\n if (!(actual_range[i] instanceof Array)) {\n tmp = actual_range[i];\n\n actual_range[i] = [];\n actual_range[i].push(tmp);\n }\n\n if (!(expected_range[i] instanceof Array)) {\n tmp = expected_range[i];\n\n expected_range[i] = [];\n expected_range[i].push(tmp);\n }\n }\n\n const col = actual_range[0].length;\n const dof = col === 1 ? row - 1 : (row - 1) * (col - 1);\n\n let xsqr = 0;\n\n const Pi = Math.PI;\n\n for (i = 0; i < row; i++) {\n for (j = 0; j < col; j++) {\n xsqr += Math.pow(actual_range[i][j] - expected_range[i][j], 2) / expected_range[i][j];\n }\n }\n\n // Get independency by X square and its degree of freedom\n function ChiSq(xsqr, dof) {\n let p = Math.exp(-0.5 * xsqr);\n\n if (dof % 2 === 1) {\n p = p * Math.sqrt((2 * xsqr) / Pi);\n }\n\n let k = dof;\n\n while (k >= 2) {\n p = (p * xsqr) / k;\n k = k - 2;\n }\n\n let t = p;\n let a = dof;\n\n while (t > 0.0000000001 * p) {\n a = a + 2;\n t = (t * xsqr) / a;\n p = p + t;\n }\n\n return 1 - p\n }\n\n return Math.round(ChiSq(xsqr, dof) * 1000000) / 1000000\n};\n\nconst CONFIDENCE = {};\n\n/**\n * Returns the confidence interval for a population mean.\n *\n * Category: Statistical\n *\n * @param {*} alpha The significance level used to compute the confidence level. The confidence level equals 100*(1 - alpha)%, or in other words, an alpha of 0.05 indicates a 95 percent confidence level.\n * @param {*} standard_dev The population standard deviation for the data range and is assumed to be known.\n * @param {*} size The sample size.\n * @returns\n */\nCONFIDENCE.NORM = (alpha, standard_dev, size) => {\n alpha = parseNumber(alpha);\n standard_dev = parseNumber(standard_dev);\n size = parseNumber(size);\n\n if (anyIsError(alpha, standard_dev, size)) {\n return value\n }\n\n return jStat.normalci(1, alpha, standard_dev, size)[1] - 1\n};\n\n/**\n * Returns the confidence interval for a population mean, using a Student's t distribution.\n *\n * Category: Statistical\n *\n * @param {*} alpha The significance level used to compute the confidence level. The confidence level equals 100*(1 - alpha)%, or in other words, an alpha of 0.05 indicates a 95 percent confidence level.\n * @param {*} standard_dev The population standard deviation for the data range and is assumed to be known.\n * @param {*} size The sample size.\n * @returns\n */\nCONFIDENCE.T = (alpha, standard_dev, size) => {\n alpha = parseNumber(alpha);\n standard_dev = parseNumber(standard_dev);\n size = parseNumber(size);\n\n if (anyIsError(alpha, standard_dev, size)) {\n return value\n }\n\n return jStat.tci(1, alpha, standard_dev, size)[1] - 1\n};\n\n/**\n * Returns the correlation coefficient between two data sets.\n *\n * Category: Statistical\n *\n * @param {*} array1 A range of value values.\n * @param {*} array2 A second range of value values.\n * @returns\n */\nfunction CORREL(array1, array2) {\n array1 = parseNumberArray(flatten(array1));\n array2 = parseNumberArray(flatten(array2));\n\n if (anyIsError(array1, array2)) {\n return value\n }\n\n return jStat.corrcoeff(array1, array2)\n}\n\n/**\n * Counts how many numbers are in the list of arguments.\n *\n * Category: Statistical\n *\n * @param {*} args Cell reference, or range within which you want to count numbers.count numbers.\n * @returns\n */\nfunction COUNT() {\n const flatArguments = flatten(arguments);\n\n return numbers(flatArguments).length\n}\n\n/**\n * Counts how many values are in the list of arguments.\n *\n * Category: Statistical\n *\n * @param {*} args Arguments representing the values that you want to count.\n * @returns\n */\nfunction COUNTA() {\n const flatArguments = flatten(arguments);\n\n return flatArguments.length - COUNTBLANK(flatArguments)\n}\n\n/**\n * Counts the number of blank values within a range.\n *\n * Category: Statistical\n *\n * @param {*} args The range from which you want to count the blank values.\n * @returns\n */\nfunction COUNTBLANK() {\n const range = flatten(arguments);\n\n let blanks = 0;\n let element;\n\n for (let i = 0; i < range.length; i++) {\n element = range[i];\n\n if (element === undefined || element === null || element === '') {\n blanks++;\n }\n }\n\n return blanks\n}\n\n/**\n * Counts the number of values within a range that meet the given criteria.\n *\n * Category: Statistical\n *\n * @returns\n */\nfunction COUNTIF(range, criteria) {\n range = flatten(range);\n\n const isWildcard = criteria === void 0 || criteria === '*';\n\n if (isWildcard) {\n return range.length\n }\n\n let matches = 0;\n\n const tokenizedCriteria = parse(criteria + '');\n\n for (let i = 0; i < range.length; i++) {\n const value = range[i];\n const tokens = [createToken(value, TOKEN_TYPE_LITERAL)].concat(tokenizedCriteria);\n\n if (compute(tokens)) {\n matches++;\n }\n }\n\n return matches\n}\n\n/**\n * Counts the number of values within a range that meet multiple criteria.\n *\n * Category: Statistical\n *\n * @param {*} args Range in which to evaluate the associated criteria.\n * @returns\n */\nfunction COUNTIFS() {\n const args = argsToArray(arguments);\n const results = new Array(flatten(args[0]).length);\n\n for (let i = 0; i < results.length; i++) {\n results[i] = true;\n }\n\n for (let i = 0; i < args.length; i += 2) {\n const range = flatten(args[i]);\n const criteria = args[i + 1];\n const isWildcard = criteria === void 0 || criteria === '*';\n\n if (!isWildcard) {\n const tokenizedCriteria = parse(criteria + '');\n\n for (let j = 0; j < range.length; j++) {\n const value = range[j];\n const tokens = [createToken(value, TOKEN_TYPE_LITERAL)].concat(tokenizedCriteria);\n\n results[j] = results[j] && compute(tokens);\n }\n }\n }\n\n let result = 0;\n\n for (let i = 0; i < results.length; i++) {\n if (results[i]) {\n result++;\n }\n }\n\n return result\n}\n\nconst COVARIANCE = {};\n\n/**\n * Returns covariance, the average of the products of paired deviations.\n *\n * Category: Statistical\n *\n * @param {*} array1 The first value range of integers.\n * @param {*} array2 The second value range of integers.\n * @returns\n */\nCOVARIANCE.P = (array1, array2) => {\n array1 = parseNumberArray(flatten(array1));\n array2 = parseNumberArray(flatten(array2));\n\n if (anyIsError(array1, array2)) {\n return value\n }\n\n const mean1 = jStat.mean(array1);\n const mean2 = jStat.mean(array2);\n\n let result = 0;\n\n const n = array1.length;\n\n for (let i = 0; i < n; i++) {\n result += (array1[i] - mean1) * (array2[i] - mean2);\n }\n\n return result / n\n};\n\n/**\n * Returns the sample covariance, the average of the products deviations for each data point pair in two data sets.\n *\n * Category: Statistical\n *\n * @param {*} array1 The first value range of integers.\n * @param {*} array2 The second value range of integers.\n * @returns\n */\nCOVARIANCE.S = (array1, array2) => {\n array1 = parseNumberArray(flatten(array1));\n array2 = parseNumberArray(flatten(array2));\n\n if (anyIsError(array1, array2)) {\n return value\n }\n\n return jStat.covariance(array1, array2)\n};\n\n/**\n * Returns the sum of squares of deviations.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Number1 is required, subsequent numbers are optional. 1 to 255 arguments for which you want to calculate the sum of squared deviations. You can also use a single array or a reference to an array instead of arguments separated by commas.\n * @returns\n */\nfunction DEVSQ() {\n const range = parseNumberArray(flatten(arguments));\n\n if (range instanceof Error) {\n return range\n }\n\n const mean = jStat.mean(range);\n\n let result = 0;\n\n for (let i = 0; i < range.length; i++) {\n result += Math.pow(range[i] - mean, 2);\n }\n\n return result\n}\n\nconst EXPON = {};\n\n/**\n * Returns the exponential distribution.\n *\n * Category: Statistical\n *\n * @param {*} x The value of the function.\n * @param {*} lambda The parameter value.\n * @param {*} cumulative A logical value that indicates which form of the exponential function to provide. If cumulative is TRUE, EXPON.DIST returns the cumulative distribution function; if FALSE, it returns the probability density function.\n * @returns\n */\nEXPON.DIST = (x, lambda, cumulative) => {\n x = parseNumber(x);\n lambda = parseNumber(lambda);\n\n if (anyIsError(x, lambda)) {\n return value\n }\n\n return cumulative ? jStat.exponential.cdf(x, lambda) : jStat.exponential.pdf(x, lambda)\n};\n\nconst F = {};\n\n/**\n * Returns the F probability distribution.\n *\n * Category: Statistical\n *\n * @param {*} x The value at which to evaluate the function.\n * @param {*} deg_freedom1 The numerator degrees of freedom.\n * @param {*} deg_freedom2 The denominator degrees of freedom.\n * @param {*} cumulative A logical value that determines the form of the function. If cumulative is TRUE, F.DIST returns the cumulative distribution function; if FALSE, it returns the probability density function.\n * @returns\n */\nF.DIST = (x, deg_freedom1, deg_freedom2, cumulative) => {\n x = parseNumber(x);\n deg_freedom1 = parseNumber(deg_freedom1);\n deg_freedom2 = parseNumber(deg_freedom2);\n\n if (anyIsError(x, deg_freedom1, deg_freedom2)) {\n return value\n }\n\n return cumulative\n ? jStat.centralF.cdf(x, deg_freedom1, deg_freedom2)\n : jStat.centralF.pdf(x, deg_freedom1, deg_freedom2)\n};\n\n/**\n * Returns the F probability distribution.\n *\n * Category: Statistical\n *\n * @param {*} x The value at which to evaluate the function.\n * @param {*} deg_freedom1 The numerator degrees of freedom.\n * @param {*} deg_freedom2 The denominator degrees of freedom.\n * @returns\n */\nF.DIST.RT = function (x, deg_freedom1, deg_freedom2) {\n if (arguments.length !== 3) {\n return na\n }\n\n if (x < 0 || deg_freedom1 < 1 || deg_freedom2 < 1) {\n return num\n }\n\n if (typeof x !== 'number' || typeof deg_freedom1 !== 'number' || typeof deg_freedom2 !== 'number') {\n return value\n }\n\n return 1 - jStat.centralF.cdf(x, deg_freedom1, deg_freedom2)\n};\n\n/**\n * Returns the inverse of the F probability distribution.\n *\n * Category: Statistical\n *\n * @param {*} probability A probability associated with the F cumulative distribution.\n * @param {*} deg_freedom1 The numerator degrees of freedom.\n * @param {*} deg_freedom2 The denominator degrees of freedom.\n * @returns\n */\nF.INV = (probability, deg_freedom1, deg_freedom2) => {\n probability = parseNumber(probability);\n deg_freedom1 = parseNumber(deg_freedom1);\n deg_freedom2 = parseNumber(deg_freedom2);\n\n if (anyIsError(probability, deg_freedom1, deg_freedom2)) {\n return value\n }\n\n if (probability <= 0.0 || probability > 1.0) {\n return num\n }\n\n return jStat.centralF.inv(probability, deg_freedom1, deg_freedom2)\n};\n\n/**\n * Returns the inverse of the F probability distribution.\n *\n * Category: Statistical\n *\n * @param {*} probability A probability associated with the F cumulative distribution.\n * @param {*} deg_freedom1 The numerator degrees of freedom.\n * @param {*} deg_freedom2 The denominator degrees of freedom.\n * @returns\n */\nF.INV.RT = function (probability, deg_freedom1, deg_freedom2) {\n if (arguments.length !== 3) {\n return na\n }\n\n if (\n probability < 0 ||\n probability > 1 ||\n deg_freedom1 < 1 ||\n deg_freedom1 > Math.pow(10, 10) ||\n deg_freedom2 < 1 ||\n deg_freedom2 > Math.pow(10, 10)\n ) {\n return num\n }\n\n if (typeof probability !== 'number' || typeof deg_freedom1 !== 'number' || typeof deg_freedom2 !== 'number') {\n return value\n }\n\n return jStat.centralF.inv(1.0 - probability, deg_freedom1, deg_freedom2)\n};\n\n/**\n * Returns the result of an F-test.\n *\n * Category: Statistical\n *\n * @param {*} array1 The first array or range of data.\n * @param {*} array2 The second array or range of data.\n * @returns\n */\nF.TEST = (array1, array2) => {\n if (!array1 || !array2) {\n return na\n }\n\n if (!(array1 instanceof Array) || !(array2 instanceof Array)) {\n return na\n }\n\n if (array1.length < 2 || array2.length < 2) {\n return div0\n }\n\n const sumOfSquares = (values, x1) => {\n let sum = 0;\n\n for (let i = 0; i < values.length; i++) {\n sum += Math.pow(values[i] - x1, 2);\n }\n\n return sum\n };\n\n const x1 = SUM(array1) / array1.length;\n const x2 = SUM(array2) / array2.length;\n const sum1 = sumOfSquares(array1, x1) / (array1.length - 1);\n const sum2 = sumOfSquares(array2, x2) / (array2.length - 1);\n\n return sum1 / sum2\n};\n\n/**\n * Returns the Fisher transformation.\n *\n * Category: Statistical\n *\n * @param {*} x A numeric value for which you want the transformation.\n * @returns\n */\nfunction FISHER(x) {\n x = parseNumber(x);\n\n if (x instanceof Error) {\n return x\n }\n\n return Math.log((1 + x) / (1 - x)) / 2\n}\n\n/**\n * Returns the inverse of the Fisher transformation.\n *\n * Category: Statistical\n *\n * @param {*} y The value for which you want to perform the inverse of the transformation.\n * @returns\n */\nfunction FISHERINV(y) {\n y = parseNumber(y);\n\n if (y instanceof Error) {\n return y\n }\n\n const e2y = Math.exp(2 * y);\n\n return (e2y - 1) / (e2y + 1)\n}\n\n/**\n * Returns a value along a linear trend.\n *\n * Category: Statistical\n *\n * @param {*} x The data point for which you want to predict a value.\n * @param {*} known_ys The dependent array or range of data.\n * @param {*} known_xs The independent array or range of data.\n * @returns\n */\nfunction FORECAST(x, known_ys, known_xs) {\n x = parseNumber(x);\n known_ys = parseNumberArray(flatten(known_ys));\n known_xs = parseNumberArray(flatten(known_xs));\n\n if (anyIsError(x, known_ys, known_xs)) {\n return value\n }\n\n const xmean = jStat.mean(known_xs);\n const ymean = jStat.mean(known_ys);\n\n const n = known_xs.length;\n\n let num = 0;\n let den = 0;\n\n for (let i = 0; i < n; i++) {\n num += (known_xs[i] - xmean) * (known_ys[i] - ymean);\n den += Math.pow(known_xs[i] - xmean, 2);\n }\n\n const b = num / den;\n const a = ymean - b * xmean;\n\n return a + b * x\n}\n\n/**\n * Returns a frequency distribution as a vertical array.\n *\n * Category: Statistical\n *\n * @param {*} data_array An array of or reference to a set of values for which you want to count frequencies. If data_array contains no values, FREQUENCY returns an array of zeros.\n * @param {*} bins_array An array of or reference to intervals into which you want to group the values in data_array. If bins_array contains no values, FREQUENCY returns the number of elements in data_array.\n * @returns\n */\nfunction FREQUENCY(data_array, bins_array) {\n data_array = parseNumberArray(flatten(data_array));\n bins_array = parseNumberArray(flatten(bins_array));\n\n if (anyIsError(data_array, bins_array)) {\n return value\n }\n\n const n = data_array.length;\n const b = bins_array.length;\n const r = [];\n\n for (let i = 0; i <= b; i++) {\n r[i] = 0;\n\n for (let j = 0; j < n; j++) {\n if (i === 0) {\n if (data_array[j] <= bins_array[0]) {\n r[0] += 1;\n }\n } else if (i < b) {\n if (data_array[j] > bins_array[i - 1] && data_array[j] <= bins_array[i]) {\n r[i] += 1;\n }\n } else if (i === b) {\n if (data_array[j] > bins_array[b - 1]) {\n r[b] += 1;\n }\n }\n }\n }\n\n return r\n}\n\n/**\n * Returns the Gamma function value.\n *\n * Category: Statistical\n *\n * @param {*} number Returns a number.\n * @returns\n */\nfunction GAMMA(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n if (number === 0) {\n return num\n }\n\n if (parseInt(number, 10) === number && number < 0) {\n return num\n }\n\n return jStat.gammafn(number)\n}\n\n/**\n * Returns the gamma distribution.\n *\n * Category: Statistical\n *\n * @param {*} x The value at which you want to evaluate the distribution.\n * @param {*} alpha A parameter to the distribution.\n * @param {*} beta A parameter to the distribution. If beta = 1, GAMMA.DIST returns the standard gamma distribution.\n * @param {*} cumulative A logical value that determines the form of the function. If cumulative is TRUE, GAMMA.DIST returns the cumulative distribution function; if FALSE, it returns the probability density function.\n * @returns\n */\nGAMMA.DIST = function (value$1, alpha, beta, cumulative) {\n if (arguments.length !== 4) {\n return na\n }\n\n if (value$1 < 0 || alpha <= 0 || beta <= 0) {\n return value\n }\n\n if (typeof value$1 !== 'number' || typeof alpha !== 'number' || typeof beta !== 'number') {\n return value\n }\n\n return cumulative ? jStat.gamma.cdf(value$1, alpha, beta, true) : jStat.gamma.pdf(value$1, alpha, beta, false)\n};\n\n/**\n * Returns the inverse of the gamma cumulative distribution.\n *\n * Category: Statistical\n *\n * @param {*} probability The probability associated with the gamma distribution.\n * @param {*} alpha A parameter to the distribution.\n * @param {*} beta A parameter to the distribution. If beta = 1, GAMMA.INV returns the standard gamma distribution.\n * @returns\n */\nGAMMA.INV = function (probability, alpha, beta) {\n if (arguments.length !== 3) {\n return na\n }\n\n if (probability < 0 || probability > 1 || alpha <= 0 || beta <= 0) {\n return num\n }\n\n if (typeof probability !== 'number' || typeof alpha !== 'number' || typeof beta !== 'number') {\n return value\n }\n\n return jStat.gamma.inv(probability, alpha, beta)\n};\n\n/**\n * Returns the natural logarithm of the gamma function, \u0393(x).\n *\n * Category: Statistical\n *\n * @param {*} x The value for which you want to calculate GAMMALN.\n * @returns\n */\nfunction GAMMALN(x) {\n x = parseNumber(x);\n\n if (x instanceof Error) {\n return x\n }\n\n return jStat.gammaln(x)\n}\n\n/**\n * Returns the natural logarithm of the gamma function, \u0393(x).\n *\n * Category: Statistical\n *\n * @param {*} x The value for which you want to calculate GAMMALN.PRECISE.\n * @returns\n */\nGAMMALN.PRECISE = function (x) {\n if (arguments.length !== 1) {\n return na\n }\n\n if (x <= 0) {\n return num\n }\n\n if (typeof x !== 'number') {\n return value\n }\n\n return jStat.gammaln(x)\n};\n\n/**\n * Returns 0.5 less than the standard normal cumulative distribution.\n *\n * Category: Statistical\n *\n * @param {*} z Returns a number.\n * @returns\n */\nfunction GAUSS(z) {\n z = parseNumber(z);\n\n if (z instanceof Error) {\n return z\n }\n\n return jStat.normal.cdf(z, 0, 1) - 0.5\n}\n\n/**\n * Returns the geometric mean.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Number1 is required, subsequent numbers are optional. 1 to 255 arguments for which you want to calculate the mean. You can also use a single array or a reference to an array instead of arguments separated by commas.\n * @returns\n */\nfunction GEOMEAN() {\n const args = parseNumberArray(flatten(arguments));\n\n if (args instanceof Error) {\n return args\n }\n\n return jStat.geomean(args)\n}\n\n/**\n * Returns values along an exponential trend.\n *\n * Category: Statistical\n *\n * @param {*} known_y The set of y-values you already know in the relationship y = b*m^x.\n - If the array known_y's is in a single column, then each column of known_x's is interpreted as a separate variable.\n - If the array known_y's is in a single row, then each row of known_x's is interpreted as a separate variable.\n - If any of the numbers in known_y's is 0 or negative, GROWTH returns the #NUM! error value.\n * @param {*} known_x Optional. An optional set of x-values that you may already know in the relationship y = b*m^x.\n - The array known_x's can include one or more sets of variables. If only one variable is used, known_y's and known_x's can be ranges of any shape, as long as they have equal dimensions. If more than one variable is used, known_y's must be a vector (that is, a range with a height of one row or a width of one column).\n - If known_x's is omitted, it is assumed to be the array {1,2,3,...} that is the same size as known_y's.\n * @param {*} new_x Optional. Are new x-values for which you want GROWTH to return corresponding y-values.\n - new_x's must include a column (or row) for each independent variable, just as known_x's does. So, if known_y's is in a single column, known_x's and new_x's must have the same number of columns. If known_y's is in a single row, known_x's and new_x's must have the same number of rows.\n - If new_x's is omitted, it is assumed to be the same as known_x's.\n - If both known_x's and new_x's are omitted, they are assumed to be the array {1,2,3,...} that is the same size as known_y's.\n * @param {*} use_const Optional. A logical value specifying whether to force the constant b to equal 1. If const is TRUE or omitted, b is calculated normally. If const is FALSE, b is set equal to 1 and the m-values are adjusted so that y = m^x.\n - If const is TRUE or omitted, b is calculated normally.\n - If const is FALSE, b is set equal to 1 and the m-values are adjusted so that y = m^x.\n * @returns\n */\nfunction GROWTH(known_y, known_x, new_x, use_const) {\n // Credits: Ilmari Karonen (http://stackoverflow.com/questions/14161990/how-to-implement-growth-function-in-javascript)\n known_y = parseNumberArray(flatten(known_y));\n\n if (known_y instanceof Error) {\n return known_y\n }\n\n // Default values for optional parameters:\n let i;\n\n if (known_x === undefined) {\n known_x = [];\n\n for (i = 1; i <= known_y.length; i++) {\n known_x.push(i);\n }\n }\n\n if (new_x === undefined) {\n new_x = known_x;\n }\n\n known_x = parseNumberArray(flatten(known_x));\n new_x = parseNumberArray(flatten(new_x));\n\n if (anyIsError(known_x, new_x)) {\n return value\n }\n\n if (use_const === undefined) {\n use_const = true;\n }\n\n // Calculate sums over the data:\n const n = known_y.length;\n\n let avg_x = 0;\n let avg_y = 0;\n let avg_xy = 0;\n let avg_xx = 0;\n\n for (i = 0; i < n; i++) {\n const x = known_x[i];\n const y = Math.log(known_y[i]);\n\n avg_x += x;\n avg_y += y;\n avg_xy += x * y;\n avg_xx += x * x;\n }\n\n avg_x /= n;\n avg_y /= n;\n avg_xy /= n;\n avg_xx /= n;\n\n // Compute linear regression coefficients:\n let beta;\n let alpha;\n\n if (use_const) {\n beta = (avg_xy - avg_x * avg_y) / (avg_xx - avg_x * avg_x);\n alpha = avg_y - beta * avg_x;\n } else {\n beta = avg_xy / avg_xx;\n alpha = 0;\n }\n\n // Compute and return result array:\n const new_y = [];\n\n for (i = 0; i < new_x.length; i++) {\n new_y.push(Math.exp(alpha + beta * new_x[i]));\n }\n\n return new_y\n}\n\n/**\n * Returns the harmonic mean.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Number1 is required, subsequent numbers are optional. 1 to 255 arguments for which you want to calculate the mean. You can also use a single array or a reference to an array instead of arguments separated by commas.\n * @returns\n */\nfunction HARMEAN() {\n const range = parseNumberArray(flatten(arguments));\n\n if (range instanceof Error) {\n return range\n }\n\n const n = range.length;\n\n let den = 0;\n\n for (let i = 0; i < n; i++) {\n den += 1 / range[i];\n }\n\n return n / den\n}\n\nconst HYPGEOM = {};\n\n/**\n * Returns the hypergeometric distribution.\n *\n * Category: Statistical\n *\n * @param {*} sample_s The number of successes in the sample.\n * @param {*} number_sample The size of the sample.\n * @param {*} population_s The number of successes in the population.\n * @param {*} number_pop The population size.\n * @param {*} cumulative A logical value that determines the form of the function. If cumulative is TRUE, then HYPGEOM.DIST returns the cumulative distribution function; if FALSE, it returns the probability mass function.\n * @returns\n */\nHYPGEOM.DIST = (sample_s, number_sample, population_s, number_pop, cumulative) => {\n sample_s = parseNumber(sample_s);\n number_sample = parseNumber(number_sample);\n population_s = parseNumber(population_s);\n number_pop = parseNumber(number_pop);\n\n if (anyIsError(sample_s, number_sample, population_s, number_pop)) {\n return value\n }\n\n function pdf(x, n, M, N) {\n return (COMBIN(M, x) * COMBIN(N - M, n - x)) / COMBIN(N, n)\n }\n\n function cdf(x, n, M, N) {\n let result = 0;\n\n for (let i = 0; i <= x; i++) {\n result += pdf(i, n, M, N);\n }\n\n return result\n }\n\n return cumulative\n ? cdf(sample_s, number_sample, population_s, number_pop)\n : pdf(sample_s, number_sample, population_s, number_pop)\n};\n\n/**\n * Returns the intercept of the linear regression line.\n *\n * Category: Statistical\n *\n * @param {*} known_y The dependent set of observations or data.\n * @param {*} known_x The independent set of observations or data.\n * @returns\n */\nfunction INTERCEPT(known_y, known_x) {\n known_y = parseNumberArray(known_y);\n known_x = parseNumberArray(known_x);\n\n if (anyIsError(known_y, known_x)) {\n return value\n }\n\n if (known_y.length !== known_x.length) {\n return na\n }\n\n return FORECAST(0, known_y, known_x)\n}\n\n/**\n * Returns the kurtosis of a data set.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Number1 is required, subsequent numbers are optional. 1 to 255 arguments for which you want to calculate kurtosis. You can also use a single array or a reference to an array instead of arguments separated by commas.\n * @returns\n */\nfunction KURT() {\n const range = parseNumberArray(flatten(arguments));\n\n if (range instanceof Error) {\n return range\n }\n\n const mean = jStat.mean(range);\n const n = range.length;\n\n let sigma = 0;\n\n for (let i = 0; i < n; i++) {\n sigma += Math.pow(range[i] - mean, 4);\n }\n\n sigma = sigma / Math.pow(jStat.stdev(range, true), 4);\n\n return ((n * (n + 1)) / ((n - 1) * (n - 2) * (n - 3))) * sigma - (3 * (n - 1) * (n - 1)) / ((n - 2) * (n - 3))\n}\n\n/**\n * Returns the k-th largest value in a data set.\n *\n * Category: Statistical\n *\n * @param {*} array The array or range of data for which you want to determine the k-th largest value.\n * @param {*} k The position (from the largest) in the array or value range of data to return.\n * @returns\n */\nfunction LARGE(array, k) {\n const someError = anyError.apply(undefined, array);\n\n if (someError) {\n return someError\n }\n\n if (anyIsError(k)) {\n return k\n }\n\n array = numbers(flatten(array));\n k = parseNumber(k);\n\n if (k < 0 || array.length < k) {\n return value\n }\n\n return array.sort((a, b) => b - a)[k - 1]\n}\n\n/**\n * Returns the parameters of a linear trend.\n *\n * Category: Statistical\n *\n * @param {*} known_y The set of y-values that you already know in the relationship y = mx + b.\n - If the range of known_y's is in a single column, each column of known_x's is interpreted as a separate variable.\n - If the range of known_y's is contained in a single row, each row of known_x's is interpreted as a separate variable.\n * @param {*} known_x Optional. A set of x-values that you may already know in the relationship y = mx + b.\n - The range of known_x's can include one or more sets of variables. If only one variable is used, known_y's and known_x's can be ranges of any shape, as long as they have equal dimensions. If more than one variable is used, known_y's must be a vector (that is, a range with a height of one row or a width of one column).\n - If known_x's is omitted, it is assumed to be the array {1,2,3,...} that is the same size as known_y's.\n * @returns\n */\nfunction LINEST(known_y, known_x) {\n known_y = parseNumberArray(flatten(known_y));\n known_x = parseNumberArray(flatten(known_x));\n\n if (anyIsError(known_y, known_x)) {\n return value\n }\n\n const ymean = jStat.mean(known_y);\n const xmean = jStat.mean(known_x);\n const n = known_x.length;\n\n let num = 0;\n let den = 0;\n\n for (let i = 0; i < n; i++) {\n num += (known_x[i] - xmean) * (known_y[i] - ymean);\n den += Math.pow(known_x[i] - xmean, 2);\n }\n\n const m = num / den;\n const b = ymean - m * xmean;\n\n return [m, b]\n}\n\n// According to Microsoft:\n// http://office.microsoft.com/en-us/starter-help/logest-function-HP010342665.aspx\n// LOGEST returns are based on the following linear model:\n// ln y = x1 ln m1 + ... + xn ln mn + ln b\n/**\n * Returns the parameters of an exponential trend.\n *\n * Category: Statistical\n *\n * @param {*} known_y The set of y-values you already know in the relationship y = b*m^x.\n - If the array known_y's is in a single column, then each column of known_x's is interpreted as a separate variable.\n - If the array known_y's is in a single row, then each row of known_x's is interpreted as a separate variable.\n * @param {*} known_x Optional. An optional set of x-values that you may already know in the relationship y = b*m^x.\n - The array known_x's can include one or more sets of variables. If only one variable is used, known_y's and known_x's can be ranges of any shape, as long as they have equal dimensions. If more than one variable is used, known_y's must be a range of values with a height of one row or a width of one column (which is also known as a vector).\n - If known_x's is omitted, it is assumed to be the array {1,2,3,...} that is the same size as known_y's.\n * @returns\n */\nfunction LOGEST(known_y, known_x) {\n known_y = parseNumberArray(flatten(known_y));\n known_x = parseNumberArray(flatten(known_x));\n\n if (anyIsError(known_y, known_x)) {\n return value\n }\n\n if (known_y.length !== known_x.length) {\n return value\n }\n\n for (let i = 0; i < known_y.length; i++) {\n known_y[i] = Math.log(known_y[i]);\n }\n\n const result = LINEST(known_y, known_x);\n\n result[0] = Math.round(Math.exp(result[0]) * 1000000) / 1000000;\n result[1] = Math.round(Math.exp(result[1]) * 1000000) / 1000000;\n\n return result\n}\n\nconst LOGNORM = {};\n\n/**\n * Returns the cumulative lognormal distribution.\n *\n * Category: Statistical\n *\n * @param {*} x The value at which to evaluate the function.\n * @param {*} mean The mean of ln(x).\n * @param {*} standard_dev The standard deviation of ln(x).\n * @param {*} cumulative A logical value that determines the form of the function. If cumulative is TRUE, LOGNORM.DIST returns the cumulative distribution function; if FALSE, it returns the probability density function.\n * @returns\n */\nLOGNORM.DIST = (x, mean, standard_dev, cumulative) => {\n x = parseNumber(x);\n mean = parseNumber(mean);\n standard_dev = parseNumber(standard_dev);\n\n if (anyIsError(x, mean, standard_dev)) {\n return value\n }\n\n return cumulative ? jStat.lognormal.cdf(x, mean, standard_dev) : jStat.lognormal.pdf(x, mean, standard_dev)\n};\n\n/**\n * Returns the inverse of the lognormal cumulative distribution.\n *\n * Category: Statistical\n *\n * @param {*} probability A probability associated with the lognormal distribution.\n * @param {*} mean The mean of ln(x).\n * @param {*} standard_dev The standard deviation of ln(x).\n * @returns\n */\nLOGNORM.INV = (probability, mean, standard_dev) => {\n probability = parseNumber(probability);\n mean = parseNumber(mean);\n standard_dev = parseNumber(standard_dev);\n\n if (anyIsError(probability, mean, standard_dev)) {\n return value\n }\n\n return jStat.lognormal.inv(probability, mean, standard_dev)\n};\n\n/**\n * Returns the maximum value in a list of arguments.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Number1 is required, subsequent numbers are optional. 1 to 255 numbers for which you want to find the maximum value.\n * @returns\n */\nfunction MAX() {\n const flatArguments = flatten(arguments);\n const someError = anyError.apply(undefined, flatArguments);\n\n if (someError) {\n return someError\n }\n\n const range = numbers(flatArguments);\n\n return range.length === 0 ? 0 : Math.max.apply(Math, range)\n}\n\n/**\n * Returns the maximum value in a list of arguments, including numbers, text, and logical values.\n *\n * Category: Statistical\n *\n * @param {*} args value1, value2,... Number arguments 2 to 255 for which you want to find the largest value.\n * @returns\n */\nfunction MAXA() {\n const flatArguments = flatten(arguments);\n const someError = anyError.apply(undefined, flatArguments);\n\n if (someError) {\n return someError\n }\n\n let range = arrayValuesToNumbers(flatArguments);\n\n range = range.map((value) => (value === undefined || value === null ? 0 : value));\n\n return range.length === 0 ? 0 : Math.max.apply(Math, range)\n}\n\n/**\n * Returns the maximum of all values in a range that meet multiple criteria.\n *\n * Category: Statistical\n *\n * @returns\n */\nfunction MAXIFS() {\n const values = applyCriteria(...arguments);\n\n return values.length === 0 ? 0 : Math.max.apply(Math, values)\n}\n\n/**\n * Returns the median of the given numbers.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Number1 is required, subsequent numbers are optional. 1 to 255 numbers for which you want the median.\n * @returns\n */\nfunction MEDIAN() {\n const flatArguments = flatten(arguments);\n const someError = anyError.apply(undefined, flatArguments);\n\n if (someError) {\n return someError\n }\n\n const range = arrayValuesToNumbers(flatArguments);\n\n let result = jStat.median(range);\n\n if (isNaN(result)) {\n result = num;\n }\n\n return result\n}\n\n/**\n * Returns the minimum value in a list of arguments.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Number1 is optional, subsequent numbers are optional. 1 to 255 numbers for which you want to find the minimum value.\n * @returns\n */\nfunction MIN() {\n const flatArguments = flatten(arguments);\n const someError = anyError.apply(undefined, flatArguments);\n\n if (someError) {\n return someError\n }\n\n const range = numbers(flatArguments);\n\n return range.length === 0 ? 0 : Math.min.apply(Math, range)\n}\n\n/**\n * Returns the smallest value in a list of arguments, including numbers, text, and logical values.\n *\n * Category: Statistical\n *\n * @param {*} args value1, value2, ... Value1 is required, subsequent values are optional. 1 to 255 values for which you want to find the smallest value.\n * @returns\n */\nfunction MINA() {\n const flatArguments = flatten(arguments);\n const someError = anyError.apply(undefined, flatArguments);\n\n if (someError) {\n return someError\n }\n\n let range = arrayValuesToNumbers(flatArguments);\n\n range = range.map((value) => (value === undefined || value === null ? 0 : value));\n\n return range.length === 0 ? 0 : Math.min.apply(Math, range)\n}\n\n/**\n * Returns the minimum of all values in a range that meet multiple criteria.\n *\n * Category: Statistical\n *\n * @returns\n */\nfunction MINIFS() {\n const values = applyCriteria(...arguments);\n\n return values.length === 0 ? 0 : Math.min.apply(Math, values)\n}\n\nconst MODE = {};\n\n/**\n * Returns a vertical array of the most frequently occurring, or repetitive values in an array or range of data.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Number arguments 2 to 254 for which you want to calculate the mode. You can also use a single array or a reference to an array instead of arguments separated by commas.\n * @returns\n */\nMODE.MULT = function () {\n // Credits: Ro\u00F6na\u00E4n\n const range = parseNumberArray(flatten(arguments));\n\n if (range instanceof Error) {\n return range\n }\n\n const n = range.length;\n const count = {};\n\n let maxItems = [];\n let max = 0;\n let currentItem;\n\n for (let i = 0; i < n; i++) {\n currentItem = range[i];\n count[currentItem] = count[currentItem] ? count[currentItem] + 1 : 1;\n\n if (count[currentItem] > max) {\n max = count[currentItem];\n maxItems = [];\n }\n\n if (count[currentItem] === max) {\n maxItems[maxItems.length] = currentItem;\n }\n }\n\n return maxItems\n};\n\n/**\n * Returns the most common value in a data set.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Arguments 2 to 254 for which you want to calculate the mode. You can also use a single array or a reference to an array instead of arguments separated by commas.\n * @returns\n */\nMODE.SNGL = function () {\n const range = parseNumberArray(flatten(arguments));\n\n if (range instanceof Error) {\n return range\n }\n\n return MODE.MULT(range).sort((a, b) => a - b)[0]\n};\n\nconst NEGBINOM = {};\n\n/**\n * Returns the negative binomial distribution.\n *\n * Category: Statistical\n *\n * @param {*} number_f The number of failures.\n * @param {*} number_s The threshold number of successes.\n * @param {*} probability_s The probability of a success.\n * @param {*} cumulative A logical value that determines the form of the function. If cumulative is TRUE, NEGBINOM.DIST returns the cumulative distribution function; if FALSE, it returns the probability density function.\n * @returns\n */\nNEGBINOM.DIST = (number_f, number_s, probability_s, cumulative) => {\n number_f = parseNumber(number_f);\n number_s = parseNumber(number_s);\n probability_s = parseNumber(probability_s);\n\n if (anyIsError(number_f, number_s, probability_s)) {\n return value\n }\n\n return cumulative\n ? jStat.negbin.cdf(number_f, number_s, probability_s)\n : jStat.negbin.pdf(number_f, number_s, probability_s)\n};\n\nconst NORM = {};\n\n/**\n * Returns the normal cumulative distribution.\n *\n * Category: Statistical\n *\n * @param {*} x The value for which you want the distribution.\n * @param {*} mean The arithmetic mean of the distribution.\n * @param {*} standard_dev The standard deviation of the distribution.\n * @param {*} cumulative A logical value that determines the form of the function. If cumulative is TRUE, NORM.DIST returns the cumulative distribution function; if FALSE, it returns the probability density function.\n * @returns\n */\nNORM.DIST = (x, mean, standard_dev, cumulative) => {\n x = parseNumber(x);\n mean = parseNumber(mean);\n standard_dev = parseNumber(standard_dev);\n\n if (anyIsError(x, mean, standard_dev)) {\n return value\n }\n\n if (standard_dev <= 0) {\n return num\n }\n\n // Return normal distribution computed by jStat [http://jstat.org]\n return cumulative ? jStat.normal.cdf(x, mean, standard_dev) : jStat.normal.pdf(x, mean, standard_dev)\n};\n\n/**\n * Returns the inverse of the normal cumulative distribution.\n *\n * Category: Statistical\n *\n * @param {*} probability A probability corresponding to the normal distribution.\n * @param {*} mean The arithmetic mean of the distribution.\n * @param {*} standard_dev The standard deviation of the distribution.\n * @returns\n */\nNORM.INV = (probability, mean, standard_dev) => {\n probability = parseNumber(probability);\n mean = parseNumber(mean);\n standard_dev = parseNumber(standard_dev);\n\n if (anyIsError(probability, mean, standard_dev)) {\n return value\n }\n\n return jStat.normal.inv(probability, mean, standard_dev)\n};\n\nNORM.S = {};\n\n/**\n * Returns the standard normal cumulative distribution.\n *\n * Category: Statistical\n *\n * @param {*} z The value for which you want the distribution.\n * @param {*} cumulative Cumulative is a logical value that determines the form of the function. If cumulative is TRUE, NORMS.DIST returns the cumulative distribution function; if FALSE, it returns the probability mass function.\n * @returns\n */\nNORM.S.DIST = (z, cumulative) => {\n z = parseNumber(z);\n\n if (z instanceof Error) {\n return value\n }\n\n return cumulative ? jStat.normal.cdf(z, 0, 1) : jStat.normal.pdf(z, 0, 1)\n};\n\n/**\n * Returns the inverse of the standard normal cumulative distribution.\n *\n * Category: Statistical\n *\n * @param {*} probability A probability corresponding to the normal distribution.\n * @returns\n */\nNORM.S.INV = (probability) => {\n probability = parseNumber(probability);\n\n if (probability instanceof Error) {\n return value\n }\n\n return jStat.normal.inv(probability, 0, 1)\n};\n\n/**\n * Returns the Pearson product moment correlation coefficient.\n *\n * Category: Statistical\n *\n * @param {*} array1 A set of independent values.\n * @param {*} array2 A set of dependent values.\n * @returns\n */\nfunction PEARSON(array1, array2) {\n array2 = parseNumberArray(flatten(array2));\n array1 = parseNumberArray(flatten(array1));\n\n if (anyIsError(array2, array1)) {\n return value\n }\n\n const xmean = jStat.mean(array1);\n const ymean = jStat.mean(array2);\n const n = array1.length;\n\n let num = 0;\n let den1 = 0;\n let den2 = 0;\n\n for (let i = 0; i < n; i++) {\n num += (array1[i] - xmean) * (array2[i] - ymean);\n den1 += Math.pow(array1[i] - xmean, 2);\n den2 += Math.pow(array2[i] - ymean, 2);\n }\n\n return num / Math.sqrt(den1 * den2)\n}\n\nconst PERCENTILE = {};\n\n/**\n * Returns the k-th percentile of values in a range, where k is in the range 0..1, exclusive.\n *\n * Category: Statistical\n *\n * @returns\n */\nPERCENTILE.EXC = (array, k) => {\n array = parseNumberArray(flatten(array));\n k = parseNumber(k);\n\n if (anyIsError(array, k)) {\n return value\n }\n\n array = array.sort((a, b) => a - b);\n\n const n = array.length;\n\n if (k < 1 / (n + 1) || k > 1 - 1 / (n + 1)) {\n return num\n }\n\n const l = k * (n + 1) - 1;\n const fl = Math.floor(l);\n\n return cleanFloat(l === fl ? array[l] : array[fl] + (l - fl) * (array[fl + 1] - array[fl]))\n};\n\n/**\n * Returns the k-th percentile of values in a range.\n *\n * Category: Statistical\n *\n * @param {*} array The array or range of data that defines relative standing.\n * @param {*} k The percentile value in the range 0..1, inclusive.\n * @returns\n */\nPERCENTILE.INC = (array, k) => {\n array = parseNumberArray(flatten(array));\n k = parseNumber(k);\n\n if (anyIsError(array, k)) {\n return value\n }\n\n array = array.sort((a, b) => a - b);\n\n const n = array.length;\n const l = k * (n - 1);\n const fl = Math.floor(l);\n\n return cleanFloat(l === fl ? array[l] : array[fl] + (l - fl) * (array[fl + 1] - array[fl]))\n};\n\nconst PERCENTRANK = {};\n\n/**\n * Returns the rank of a value in a data set as a percentage (0..1, exclusive) of the data set.\n *\n * Category: Statistical\n *\n * @param {*} array The array or range of data with numeric values that defines relative standing\n * @param {*} x The value for which you want to know the rank.\n * @param {*} significance Optional. A value that identifies the number of significant digits for the returned percentage value. If omitted, PERCENTRANK.EXC uses three digits (0.xxx).\n * @returns\n */\nPERCENTRANK.EXC = (array, x, significance) => {\n significance = significance === undefined ? 3 : significance;\n array = parseNumberArray(flatten(array));\n x = parseNumber(x);\n significance = parseNumber(significance);\n\n if (anyIsError(array, x, significance)) {\n return value\n }\n\n array = array.sort((a, b) => a - b);\n\n const uniques = UNIQUE.apply(null, array);\n const n = array.length;\n const m = uniques.length;\n const power = Math.pow(10, significance);\n\n let result = 0;\n let match = false;\n let i = 0;\n\n while (!match && i < m) {\n if (x === uniques[i]) {\n result = (array.indexOf(uniques[i]) + 1) / (n + 1);\n match = true;\n } else if (x >= uniques[i] && (x < uniques[i + 1] || i === m - 1)) {\n result = (array.indexOf(uniques[i]) + 1 + (x - uniques[i]) / (uniques[i + 1] - uniques[i])) / (n + 1);\n match = true;\n }\n\n i++;\n }\n\n return Math.floor(result * power) / power\n};\n\n/**\n * Returns the percentage rank of a value in a data set.\n *\n * Category: Statistical\n *\n * @param {*} array The array or range of data with numeric values that defines relative standing.\n * @param {*} x The value for which you want to know the rank.\n * @param {*} significance Optional. A value that identifies the number of significant digits for the returned percentage value. If omitted, PERCENTRANK.INC uses three digits (0.xxx).\n * @returns\n */\nPERCENTRANK.INC = (array, x, significance) => {\n significance = significance === undefined ? 3 : significance;\n array = parseNumberArray(flatten(array));\n x = parseNumber(x);\n significance = parseNumber(significance);\n\n if (anyIsError(array, x, significance)) {\n return value\n }\n\n array = array.sort((a, b) => a - b);\n\n const uniques = UNIQUE.apply(null, array);\n const n = array.length;\n const m = uniques.length;\n const power = Math.pow(10, significance);\n\n let result = 0;\n let match = false;\n let i = 0;\n\n while (!match && i < m) {\n if (x === uniques[i]) {\n result = array.indexOf(uniques[i]) / (n - 1);\n match = true;\n } else if (x >= uniques[i] && (x < uniques[i + 1] || i === m - 1)) {\n result = (array.indexOf(uniques[i]) + (x - uniques[i]) / (uniques[i + 1] - uniques[i])) / (n - 1);\n match = true;\n }\n\n i++;\n }\n\n return Math.floor(result * power) / power\n};\n\n/**\n * Returns the number of permutations for a given number of objects.\n *\n * Category: Statistical\n *\n * @param {*} number An integer that describes the number of objects.\n * @param {*} number_chosen An integer that describes the number of objects in each permutation.\n * @returns\n */\nfunction PERMUT(number, number_chosen) {\n number = parseNumber(number);\n number_chosen = parseNumber(number_chosen);\n\n if (anyIsError(number, number_chosen)) {\n return value\n }\n\n return FACT(number) / FACT(number - number_chosen)\n}\n\n/**\n * Returns the number of permutations for a given number of objects (with repetitions) that can be selected from the total objects.\n *\n * Category: Statistical\n *\n * @param {*} number An integer that describes the total number of objects.\n * @param {*} number_chosen An integer that describes the number of objects in each permutation.\n * @returns\n */\nfunction PERMUTATIONA(number, number_chosen) {\n number = parseNumber(number);\n number_chosen = parseNumber(number_chosen);\n\n if (anyIsError(number, number_chosen)) {\n return value\n }\n\n return Math.pow(number, number_chosen)\n}\n\n/**\n * Returns the value of the density function for a standard normal distribution.\n *\n * Category: Statistical\n *\n * @param {*} x X is the number for which you want the density of the standard normal distribution.\n * @returns\n */\nfunction PHI(x) {\n x = parseNumber(x);\n\n if (x instanceof Error) {\n return value\n }\n\n return Math.exp(-0.5 * x * x) / SQRT2PI\n}\n\nconst POISSON = {};\n\n/**\n * Returns the Poisson distribution.\n *\n * Category: Statistical\n *\n * @param {*} x The number of events.\n * @param {*} mean The expected numeric value.\n * @param {*} cumulative A logical value that determines the form of the probability distribution returned. If cumulative is TRUE, POISSON.DIST returns the cumulative Poisson probability that the number of random events occurring will be between zero and x inclusive; if FALSE, it returns the Poisson probability mass function that the number of events occurring will be exactly x.\n * @returns\n */\nPOISSON.DIST = (x, mean, cumulative) => {\n x = parseNumber(x);\n mean = parseNumber(mean);\n\n if (anyIsError(x, mean)) {\n return value\n }\n\n return cumulative ? jStat.poisson.cdf(x, mean) : jStat.poisson.pdf(x, mean)\n};\n\n/**\n * Returns the probability that values in a range are between two limits.\n *\n * Category: Statistical\n *\n * @param {*} x_range The range of numeric values of x with which there are associated probabilities.\n * @param {*} prob_range A set of probabilities associated with values in x_range.\n * @param {*} lower_limit Optional. The lower bound on the value for which you want a probability.\n * @param {*} upper_limit Optional. The optional upper bound on the value for which you want a probability.\n * @returns\n */\nfunction PROB(x_range, prob_range, lower_limit, upper_limit) {\n if (lower_limit === undefined) {\n return 0\n }\n\n upper_limit = upper_limit === undefined ? lower_limit : upper_limit;\n\n x_range = parseNumberArray(flatten(x_range));\n prob_range = parseNumberArray(flatten(prob_range));\n lower_limit = parseNumber(lower_limit);\n upper_limit = parseNumber(upper_limit);\n\n if (anyIsError(x_range, prob_range, lower_limit, upper_limit)) {\n return value\n }\n\n if (lower_limit === upper_limit) {\n return x_range.indexOf(lower_limit) >= 0 ? prob_range[x_range.indexOf(lower_limit)] : 0\n }\n\n const sorted = x_range.sort((a, b) => a - b);\n const n = sorted.length;\n\n let result = 0;\n\n for (let i = 0; i < n; i++) {\n if (sorted[i] >= lower_limit && sorted[i] <= upper_limit) {\n result += prob_range[x_range.indexOf(sorted[i])];\n }\n }\n\n return result\n}\n\nconst QUARTILE = {};\n\n/**\n * Returns the quartile of the data set, based on percentile values from 0..1, exclusive.\n *\n * Category: Statistical\n *\n * @param {*} array The array or value range of numeric values for which you want the quartile value.\n * @param {*} quart Indicates which value to return.\n * @returns\n */\nQUARTILE.EXC = (range, quart) => {\n range = parseNumberArray(numbers(flatten(range)));\n quart = parseNumber(quart);\n\n if (anyIsError(range, quart)) {\n return value\n }\n\n switch (quart) {\n case 1:\n return PERCENTILE.EXC(range, 0.25)\n case 2:\n return PERCENTILE.EXC(range, 0.5)\n case 3:\n return PERCENTILE.EXC(range, 0.75)\n default:\n return num\n }\n};\n\n/**\n * Returns the quartile of a data set.\n *\n * Category: Statistical\n *\n * @param {*} array The array or value range of numeric values for which you want the quartile value.\n * @param {*} quart Indicates which value to return.\n * @returns\n */\nQUARTILE.INC = (range, quart) => {\n range = parseNumberArray(numbers(flatten(range)));\n quart = parseNumber(quart);\n\n if (anyIsError(range, quart)) {\n return value\n }\n\n switch (quart) {\n case 1:\n return PERCENTILE.INC(range, 0.25)\n case 2:\n return PERCENTILE.INC(range, 0.5)\n case 3:\n return PERCENTILE.INC(range, 0.75)\n default:\n return num\n }\n};\n\nconst RANK = {};\n\n/**\n * Returns the rank of a number in a list of numbers.\n *\n * Category: Statistical\n *\n * @param {*} number The number whose rank you want to find.\n * @param {*} ref An array of, or a reference to, a list of numbers. Nonnumeric values in Ref are ignored.\n * @param {*} order Optional. A number specifying how to rank number.\n * @returns\n */\nRANK.AVG = (number, ref, order) => {\n number = parseNumber(number);\n ref = parseNumberArray(flatten(ref));\n\n if (anyIsError(number, ref)) {\n return value\n }\n\n ref = flatten(ref);\n order = order || false;\n\n const sort = order ? (a, b) => a - b : (a, b) => b - a;\n\n ref = ref.sort(sort);\n\n const length = ref.length;\n\n let count = 0;\n\n for (let i = 0; i < length; i++) {\n if (ref[i] === number) {\n count++;\n }\n }\n\n return count > 1 ? (2 * ref.indexOf(number) + count + 1) / 2 : ref.indexOf(number) + 1\n};\n\n/**\n * Returns the rank of a number in a list of numbers.\n *\n * Category: Statistical\n *\n * @param {*} number The number whose rank you want to find.\n * @param {*} ref An array of, or a reference to, a list of numbers. Non-numeric values in Ref are ignored.\n * @param {*} order Optional. A number specifying how to rank number.\n * @returns\n */\nRANK.EQ = (number, ref, order) => {\n number = parseNumber(number);\n ref = parseNumberArray(flatten(ref));\n\n if (anyIsError(number, ref)) {\n return value\n }\n\n order = order || false;\n\n const sort = order ? (a, b) => a - b : (a, b) => b - a;\n\n ref = ref.sort(sort);\n\n return ref.indexOf(number) + 1\n};\n\n/**\n * Returns the row number of a reference.\n *\n * Category: Lookup and reference\n *\n * @param {*} reference the value or range of values for which you want the row number.\n * @param {*} index\n * @returns\n */\nfunction ROW(reference, index) {\n if (arguments.length !== 2) {\n return na\n }\n\n if (index < 0) {\n return num\n }\n\n if (!(reference instanceof Array) || typeof index !== 'number') {\n return value\n }\n\n if (reference.length === 0) {\n return undefined\n }\n\n return jStat.row(reference, index)\n}\n\n/**\n * Returns the square of the Pearson product moment correlation coefficient.\n *\n * Category: Statistical\n *\n * @param {*} known_y An array or range of data points.\n * @param {*} known_x An array or range of data points.\n * @returns\n */\nfunction RSQ(known_y, known_x) {\n // no need to flatten here, PEARSON will take care of that\n known_y = parseNumberArray(flatten(known_y));\n known_x = parseNumberArray(flatten(known_x));\n\n if (anyIsError(known_y, known_x)) {\n return value\n }\n\n return Math.pow(PEARSON(known_y, known_x), 2)\n}\n\n/**\n * Returns the skewness of a distribution.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Number1 is required, subsequent numbers are optional. 1 to 255 arguments for which you want to calculate skewness. You can also use a single array or a reference to an array instead of arguments separated by commas.\n * @returns\n */\nfunction SKEW() {\n const range = parseNumberArray(flatten(arguments));\n\n if (range instanceof Error) {\n return range\n }\n\n const mean = jStat.mean(range);\n const n = range.length;\n\n let sigma = 0;\n\n for (let i = 0; i < n; i++) {\n sigma += Math.pow(range[i] - mean, 3);\n }\n\n return (n * sigma) / ((n - 1) * (n - 2) * Math.pow(jStat.stdev(range, true), 3))\n}\n\n/**\n * Returns the skewness of a distribution based on a population.\n *\n * Category: Statistical\n *\n * @returns\n */\nSKEW.P = function () {\n const range = parseNumberArray(flatten(arguments));\n\n if (range instanceof Error) {\n return range\n }\n\n const mean = jStat.mean(range);\n const n = range.length;\n\n let m2 = 0;\n let m3 = 0;\n\n for (let i = 0; i < n; i++) {\n m3 += Math.pow(range[i] - mean, 3);\n m2 += Math.pow(range[i] - mean, 2);\n }\n\n m3 = m3 / n;\n m2 = m2 / n;\n\n return m3 / Math.pow(m2, 3 / 2)\n};\n\n/**\n * Returns the slope of the linear regression line.\n *\n * Category: Statistical\n *\n * @param {*} known_y An array or value range of numeric dependent data points.\n * @param {*} known_x The set of independent data points.\n * @returns\n */\nfunction SLOPE(known_y, known_x) {\n known_y = parseNumberArray(flatten(known_y));\n known_x = parseNumberArray(flatten(known_x));\n\n if (anyIsError(known_y, known_x)) {\n return value\n }\n\n const xmean = jStat.mean(known_x);\n const ymean = jStat.mean(known_y);\n const n = known_x.length;\n\n let num = 0;\n let den = 0;\n\n for (let i = 0; i < n; i++) {\n num += (known_x[i] - xmean) * (known_y[i] - ymean);\n den += Math.pow(known_x[i] - xmean, 2);\n }\n\n return num / den\n}\n\n/**\n * Returns the k-th smallest value in a data set.\n *\n * Category: Statistical\n *\n * @param {*} array An array or range of numerical data for which you want to determine the k-th smallest value.\n * @param {*} k The position (from the smallest) in the array or range of data to return.\n * @returns\n */\nfunction SMALL(array, k) {\n array = parseNumberArray(flatten(array));\n k = parseNumber(k);\n\n if (anyIsError(array, k)) {\n return array\n }\n\n return array.sort((a, b) => a - b)[k - 1]\n}\n\n/**\n * Returns a normalized value.\n *\n * Category: Statistical\n *\n * @param {*} x The value you want to normalize.\n * @param {*} mean The arithmetic mean of the distribution.\n * @param {*} standard_dev The standard deviation of the distribution.\n * @returns\n */\nfunction STANDARDIZE(x, mean, standard_dev) {\n x = parseNumber(x);\n mean = parseNumber(mean);\n standard_dev = parseNumber(standard_dev);\n\n if (anyIsError(x, mean, standard_dev)) {\n return value\n }\n\n return (x - mean) / standard_dev\n}\n\nconst STDEV = {};\n\n/**\n * Calculates standard deviation based on the entire population.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Number arguments 2 to 254 corresponding to a population. You can also use a single array or a reference to an array instead of arguments separated by commas.\n * @returns\n */\nSTDEV.P = function () {\n const v = VAR.P.apply(this, arguments);\n\n let result = Math.sqrt(v);\n\n if (isNaN(result)) {\n result = num;\n }\n\n return result\n};\n\n/**\n * Estimates standard deviation based on a sample.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Number arguments 2 to 254 corresponding to a sample of a population. You can also use a single array or a reference to an array instead of arguments separated by commas.\n * @returns\n */\nSTDEV.S = function () {\n const v = VAR.S.apply(this, arguments);\n const result = Math.sqrt(v);\n\n return result\n};\n\n/**\n * Estimates standard deviation based on a sample, including numbers, text, and logical values.\n *\n * Category: Statistical\n *\n * @param {*} args value1, value2, ... Value1 is required, subsequent values are optional. 1 to 255 values corresponding to a sample of a population. You can also use a single array or a reference to an array instead of arguments separated by commas.\n * @returns\n */\nfunction STDEVA() {\n const v = VARA.apply(this, arguments);\n const result = Math.sqrt(v);\n\n return result\n}\n\n/**\n * Calculates standard deviation based on the entire population, including numbers, text, and logical values.\n *\n * Category: Statistical\n *\n * @param {*} args value1, value2, ... Value1 is required, subsequent values are optional. 1 to 255 values corresponding to a population. You can also use a single array or a reference to an array instead of arguments separated by commas.\n * @returns\n */\nfunction STDEVPA() {\n const v = VARPA.apply(this, arguments);\n\n let result = Math.sqrt(v);\n\n if (isNaN(result)) {\n result = num;\n }\n\n return result\n}\n\n/**\n * Returns the standard error of the predicted y-value for each x in the regression.\n *\n * Category: Statistical\n *\n * @param {*} known_y An array or range of dependent data points.\n * @param {*} known_x An array or range of independent data points.\n * @returns\n */\nfunction STEYX(known_y, known_x) {\n known_y = parseNumberArray(flatten(known_y));\n known_x = parseNumberArray(flatten(known_x));\n\n if (anyIsError(known_y, known_x)) {\n return value\n }\n\n const xmean = jStat.mean(known_x);\n const ymean = jStat.mean(known_y);\n const n = known_x.length;\n\n let lft = 0;\n let num = 0;\n let den = 0;\n\n for (let i = 0; i < n; i++) {\n lft += Math.pow(known_y[i] - ymean, 2);\n num += (known_x[i] - xmean) * (known_y[i] - ymean);\n den += Math.pow(known_x[i] - xmean, 2);\n }\n\n return Math.sqrt((lft - (num * num) / den) / (n - 2))\n}\n\n/**\n * Returns the Percentage Points (probability) for the Student t-distribution.\n *\n * Category: Statistical\n *\n * @param {*} x The numeric value at which to evaluate the distribution\n * @param {*} deg_freedom An integer indicating the number of degrees of freedom.\n * @param {*} cumulative A logical value that determines the form of the function. If cumulative is TRUE, T.DIST returns the cumulative distribution function; if FALSE, it returns the probability density function.\n * @returns\n */\nT.DIST = (x, deg_freedom, cumulative) => {\n if (cumulative !== 1 && cumulative !== 2) {\n return num\n }\n\n return cumulative === 1 ? T.DIST.RT(x, deg_freedom) : T.DIST['2T'](x, deg_freedom)\n};\n\n/**\n * Returns the Percentage Points (probability) for the Student t-distribution\n *\n * Category: Statistical\n *\n * @param {*} x The numeric value at which to evaluate the distribution.\n * @param {*} deg_freedom An integer indicating the number of degrees of freedom.\n * @returns\n */\nT.DIST['2T'] = function (x, deg_freedom) {\n if (arguments.length !== 2) {\n return na\n }\n\n if (x < 0 || deg_freedom < 1) {\n return num\n }\n\n if (typeof x !== 'number' || typeof deg_freedom !== 'number') {\n return value\n }\n\n return (1 - jStat.studentt.cdf(x, deg_freedom)) * 2\n};\n\n/**\n * Returns the Student's t-distribution.\n *\n * Category: Statistical\n *\n * @param {*} x The numeric value at which to evaluate the distribution.\n * @param {*} deg_freedom An integer indicating the number of degrees of freedom.\n * @returns\n */\nT.DIST.RT = function (x, deg_freedom) {\n if (arguments.length !== 2) {\n return na\n }\n\n if (x < 0 || deg_freedom < 1) {\n return num\n }\n\n if (typeof x !== 'number' || typeof deg_freedom !== 'number') {\n return value\n }\n\n return 1 - jStat.studentt.cdf(x, deg_freedom)\n};\n\n/**\n * Returns the t-value of the Student's t-distribution as a function of the probability and the degrees of freedom.\n *\n * Category: Statistical\n *\n * @param {*} probability The probability associated with the Student's t-distribution.\n * @param {*} deg_freedom The number of degrees of freedom with which to characterize the distribution.\n * @returns\n */\nT.INV = (probability, deg_freedom) => {\n probability = parseNumber(probability);\n deg_freedom = parseNumber(deg_freedom);\n\n if (anyIsError(probability, deg_freedom)) {\n return value\n }\n\n return jStat.studentt.inv(probability, deg_freedom)\n};\n\n/**\n * Returns the inverse of the Student's t-distribution\n *\n * Category: Statistical\n *\n * @param {*} probability The probability associated with the Student's t-distribution.\n * @param {*} deg_freedom The number of degrees of freedom with which to characterize the distribution.\n * @returns\n */\nT.INV['2T'] = (probability, deg_freedom) => {\n probability = parseNumber(probability);\n deg_freedom = parseNumber(deg_freedom);\n\n if (probability <= 0 || probability > 1 || deg_freedom < 1) {\n return num\n }\n\n if (anyIsError(probability, deg_freedom)) {\n return value\n }\n\n return Math.abs(jStat.studentt.inv(probability / 2, deg_freedom))\n};\n\n// The algorithm can be found here:\n// http://www.chem.uoa.gr/applets/AppletTtest/Appl_Ttest2.html\n/**\n * Returns the probability associated with a Student's t-test.\n *\n * Category: Statistical\n *\n * @param {*} array1 The first data set.\n * @param {*} array2 The second data set.\n * @returns\n */\nT.TEST = (array1, array2) => {\n array1 = parseNumberArray(flatten(array1));\n array2 = parseNumberArray(flatten(array2));\n\n if (anyIsError(array1, array2)) {\n return value\n }\n\n const mean_x = jStat.mean(array1);\n const mean_y = jStat.mean(array2);\n\n let s_x = 0;\n let s_y = 0;\n let i;\n\n for (i = 0; i < array1.length; i++) {\n s_x += Math.pow(array1[i] - mean_x, 2);\n }\n\n for (i = 0; i < array2.length; i++) {\n s_y += Math.pow(array2[i] - mean_y, 2);\n }\n\n s_x = s_x / (array1.length - 1);\n s_y = s_y / (array2.length - 1);\n\n const t = Math.abs(mean_x - mean_y) / Math.sqrt(s_x / array1.length + s_y / array2.length);\n\n return T.DIST['2T'](t, array1.length + array2.length - 2)\n};\n\n/**\n * Returns values along a linear trend.\n *\n * Category: Statistical\n *\n * @param {*} known_ys The set of y-values you already know in the relationship y = mx + b\n * @param {*} known_xs An optional set of x-values that you may already know in the relationship y = mx + b\n * @param {*} new_xs Optional. New x-values for which you want TREND to return corresponding y-values.\n * @returns\n */\nfunction TREND(known_ys, known_xs, new_xs) {\n known_ys = parseNumberArray(flatten(known_ys));\n known_xs = parseNumberArray(flatten(known_xs));\n new_xs = parseNumberArray(flatten(new_xs));\n\n if (anyIsError(known_ys, known_xs, new_xs)) {\n return value\n }\n\n const linest = LINEST(known_ys, known_xs);\n const m = linest[0];\n const b = linest[1];\n const result = [];\n\n new_xs.forEach((x) => {\n result.push(m * x + b);\n });\n\n return result\n}\n\n/**\n * Returns the mean of the interior of a data set.\n *\n * Category: Statistical\n *\n * @param {*} array The array or range of values to trim and average.\n * @param {*} percent The fractional number of data points to exclude from the calculation. For example, if percent = 0.2, 4 points are trimmed from a data set of 20 points (20 x 0.2): 2 from the top and 2 from the bottom of the set.\n * @returns\n */\nfunction TRIMMEAN(range, percent) {\n range = parseNumberArray(flatten(range));\n percent = parseNumber(percent);\n\n if (anyIsError(range, percent)) {\n return value\n }\n\n const trim = FLOOR(range.length * percent, 2) / 2;\n\n return jStat.mean(\n initial(\n rest(\n range.sort((a, b) => a - b),\n trim\n ),\n trim\n )\n )\n}\n\nconst VAR = {};\n\n/**\n * Calculates variance based on the entire population.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Number arguments 2 to 254 corresponding to a population.\n * @returns\n */\nVAR.P = function () {\n const range = numbers(flatten(arguments));\n const n = range.length;\n\n let sigma = 0;\n\n const mean = AVERAGE(range);\n\n let result;\n\n for (let i = 0; i < n; i++) {\n sigma += Math.pow(range[i] - mean, 2);\n }\n\n result = sigma / n;\n\n if (isNaN(result)) {\n result = num;\n }\n\n return result\n};\n\n/**\n * Estimates variance based on a sample.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Number arguments 2 to 254 corresponding to a sample of a population.\n * @returns\n */\nVAR.S = function () {\n const range = numbers(flatten(arguments));\n const n = range.length;\n\n let sigma = 0;\n\n const mean = AVERAGE(range);\n\n for (let i = 0; i < n; i++) {\n sigma += Math.pow(range[i] - mean, 2);\n }\n\n return sigma / (n - 1)\n};\n\n/**\n * Estimates variance based on a sample, including numbers, text, and logical values.\n *\n * Category: Statistical\n *\n * @param {*} args value1, value2, ... Value1 is required, subsequent values are optional. 1 to 255 value arguments corresponding to a sample of a population.\n * @returns\n */\nfunction VARA() {\n const range = flatten(arguments);\n const n = range.length;\n\n let sigma = 0;\n let count = 0;\n\n const mean = AVERAGEA(range);\n\n for (let i = 0; i < n; i++) {\n const el = range[i];\n\n if (typeof el === 'number') {\n sigma += Math.pow(el - mean, 2);\n } else if (el === true) {\n sigma += Math.pow(1 - mean, 2);\n } else {\n sigma += Math.pow(0 - mean, 2);\n }\n\n if (el !== null) {\n count++;\n }\n }\n\n return sigma / (count - 1)\n}\n\n/**\n * Calculates variance based on the entire population, including numbers, text, and logical values.\n *\n * Category: Statistical\n *\n * @param {*} args value1, value2, ... Value1 is required, subsequent values are optional. 1 to 255 value arguments corresponding to a population.\n * @returns\n */\nfunction VARPA() {\n const range = flatten(arguments);\n const n = range.length;\n\n let sigma = 0;\n let count = 0;\n\n const mean = AVERAGEA(range);\n\n let result;\n\n for (let i = 0; i < n; i++) {\n const el = range[i];\n\n if (typeof el === 'number') {\n sigma += Math.pow(el - mean, 2);\n } else if (el === true) {\n sigma += Math.pow(1 - mean, 2);\n } else {\n sigma += Math.pow(0 - mean, 2);\n }\n\n if (el !== null) {\n count++;\n }\n }\n\n result = sigma / count;\n\n if (isNaN(result)) {\n result = num;\n }\n\n return result\n}\n\nconst WEIBULL = {};\n\n/**\n * Returns the Weibull distribution.\n *\n * Category: Statistical\n *\n * @param {*} x The value at which to evaluate the function.\n * @param {*} alpha A parameter to the distribution.\n * @param {*} beta A parameter to the distribution.\n * @param {*} cumulative Determines the form of the function.\n * @returns\n */\nWEIBULL.DIST = (x, alpha, beta, cumulative) => {\n x = parseNumber(x);\n alpha = parseNumber(alpha);\n beta = parseNumber(beta);\n\n if (anyIsError(x, alpha, beta)) {\n return value\n }\n\n return cumulative\n ? 1 - Math.exp(-Math.pow(x / beta, alpha))\n : (Math.pow(x, alpha - 1) * Math.exp(-Math.pow(x / beta, alpha)) * alpha) / Math.pow(beta, alpha)\n};\n\nconst Z = {};\n\n/**\n * Returns the one-tailed probability-value of a z-test.\n *\n * Category: Statistical\n *\n * @param {*} array The array or range of data against which to test x.\n * @param {*} x The value to test.\n * @param {*} sigma Optional. The population (known) standard deviation. If omitted, the sample standard deviation is used.\n * @returns\n */\nZ.TEST = (array, x, sigma) => {\n array = parseNumberArray(flatten(array));\n x = parseNumber(x);\n\n if (anyIsError(array, x)) {\n return value\n }\n\n sigma = sigma || STDEV.S(array);\n\n const n = array.length;\n\n return 1 - NORM.S.DIST((AVERAGE(array) - x) / (sigma / Math.sqrt(n)), true)\n};\n\n/**\n * Returns the absolute value of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The real number of which you want the absolute value.\n * @returns\n */\nfunction ABS(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n const result = Math.abs(number);\n\n return result\n}\n\n/**\n * Returns the arccosine of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The cosine of the angle you want and must be from -1 to 1.\n * @returns\n */\nfunction ACOS(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n let result = Math.acos(number);\n\n if (isNaN(result)) {\n result = num;\n }\n\n return result\n}\n\n/**\n * Returns the inverse hyperbolic cosine of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number Any real number equal to or greater than 1.\n * @returns\n */\nfunction ACOSH(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n let result = Math.log(number + Math.sqrt(number * number - 1));\n\n if (isNaN(result)) {\n result = num;\n }\n\n return result\n}\n\n/**\n * Returns the arccotangent of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number Number is the cotangent of the angle you want. This must be a real number.\n * @returns\n */\nfunction ACOT(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n const result = Math.atan(1 / number);\n\n return result\n}\n\n/**\n * Returns the hyperbolic arccotangent of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The absolute value of Number must be greater than 1.\n * @returns\n */\nfunction ACOTH(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n let result = 0.5 * Math.log((number + 1) / (number - 1));\n\n if (isNaN(result)) {\n result = num;\n }\n\n return result\n}\n\n// TODO: use options\n/**\n * Returns an aggregate in a list or database.\n *\n * Category: Math and trigonometry\n *\n * @param {*} function_num A number 1 to 19 that specifies which function to use.\n * @param {*} options A numerical value that determines which values to ignore in the evaluation range for the function. Note: The function will not ignore hidden rows, nested subtotals or nested aggregates if the array argument includes a calculation, for example: =AGGREGATE(14,3,A1:A100*(A1:A100>0),1)\n * @param {*} ref1 The first numeric argument for functions that take multiple numeric arguments for which you want the aggregate value.\n * @param {*} ref2 Optional. Numeric arguments 2 to 253 for which you want the aggregate value. For functions that take an array, ref1 is an array, an array formula, or a reference to a range of values for which you want the aggregate value. Ref2 is a second argument that is required for certain functions.\n * @returns\n */\nfunction AGGREGATE(function_num, options, ref1, ref2) {\n function_num = parseNumber(function_num);\n options = parseNumber(function_num);\n\n if (anyIsError(function_num, options)) {\n return value\n }\n\n switch (function_num) {\n case 1:\n return AVERAGE(ref1)\n case 2:\n return COUNT(ref1)\n case 3:\n return COUNTA(ref1)\n case 4:\n return MAX(ref1)\n case 5:\n return MIN(ref1)\n case 6:\n return PRODUCT(ref1)\n case 7:\n return STDEV.S(ref1)\n case 8:\n return STDEV.P(ref1)\n case 9:\n return SUM(ref1)\n case 10:\n return VAR.S(ref1)\n case 11:\n return VAR.P(ref1)\n case 12:\n return MEDIAN(ref1)\n case 13:\n return MODE.SNGL(ref1)\n case 14:\n return LARGE(ref1, ref2)\n case 15:\n return SMALL(ref1, ref2)\n case 16:\n return PERCENTILE.INC(ref1, ref2)\n case 17:\n return QUARTILE.INC(ref1, ref2)\n case 18:\n return PERCENTILE.EXC(ref1, ref2)\n case 19:\n return QUARTILE.EXC(ref1, ref2)\n }\n}\n\n/**\n * Converts a Roman number to Arabic, as a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} text A string enclosed in quotation marks, an empty string (\"\"), or a reference to a value containing text.\n * @returns\n */\nfunction ARABIC(text) {\n if (text === undefined || text === null) {\n return 0\n }\n\n if (text instanceof Error) {\n return text\n }\n\n // Credits: Rafa? Kukawski\n if (!/^M*(?:D?C{0,3}|C[MD])(?:L?X{0,3}|X[CL])(?:V?I{0,3}|I[XV])$/.test(text)) {\n return value\n }\n\n let r = 0;\n text.replace(/[MDLV]|C[MD]?|X[CL]?|I[XV]?/g, (i) => {\n r += {\n M: 1000,\n CM: 900,\n D: 500,\n CD: 400,\n C: 100,\n XC: 90,\n L: 50,\n XL: 40,\n X: 10,\n IX: 9,\n V: 5,\n IV: 4,\n I: 1\n }[i];\n });\n\n return r\n}\n\n/**\n * Returns the arcsine of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The sine of the angle you want and must be from -1 to 1.\n * @returns\n */\nfunction ASIN(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n let result = Math.asin(number);\n\n if (isNaN(result)) {\n result = num;\n }\n\n return result\n}\n\n/**\n * Returns the inverse hyperbolic sine of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number Any real number.\n * @returns\n */\nfunction ASINH(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n return Math.log(number + Math.sqrt(number * number + 1))\n}\n\n/**\n * Returns the arctangent of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The tangent of the angle you want.\n * @returns\n */\nfunction ATAN(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n return Math.atan(number)\n}\n\n/**\n * Returns the arctangent from x- and y-coordinates.\n *\n * Category: Math and trigonometry\n *\n * @param {*} x_num The x-coordinate of the point.\n * @param {*} y_num The y-coordinate of the point.\n * @returns\n */\nfunction ATAN2(x_num, y_num) {\n x_num = parseNumber(x_num);\n y_num = parseNumber(y_num);\n const anyError$1 = anyError(x_num, y_num);\n\n if (anyError$1) {\n return anyError$1\n }\n\n return Math.atan2(x_num, y_num)\n}\n\n/**\n * Returns the inverse hyperbolic tangent of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number Any real number between 1 and -1.\n * @returns\n */\nfunction ATANH(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n let result = Math.log((1 + number) / (1 - number)) / 2;\n\n if (isNaN(result)) {\n result = num;\n }\n\n return result\n}\n\n/**\n * Converts a number into a text representation with the given radix (base).\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The number that you want to convert. Must be an integer greater than or equal to 0 and less than 2^53.\n * @param {*} radix The base radix that you want to convert the number into. Must be an integer greater than or equal to 2 and less than or equal to 36.\n * @param {*} min_length Optional. The minimum length of the returned string. Must be an integer greater than or equal to 0.\n * @returns\n */\nfunction BASE(number, radix, min_length) {\n number = parseNumber(number);\n radix = parseNumber(radix);\n min_length = parseNumber(min_length);\n const anyError$1 = anyError(number, radix, min_length);\n\n if (anyError$1) {\n return anyError$1\n }\n\n if (radix === 0) {\n return num\n }\n\n const result = number.toString(radix);\n\n return new Array(Math.max(min_length + 1 - result.length, 0)).join('0') + result\n}\n\n/**\n * Rounds a number to the nearest integer or to the nearest multiple of significance.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The value you want to round.\n * @param {*} significance The multiple to which you want to round.\n * @param {*} mode Optional. For negative numbers, controls whether Number is rounded toward or away from zero.\n * @returns\n */\nfunction CEILING(number, significance, mode) {\n number = parseNumber(number);\n significance = parseNumber(significance);\n mode = parseNumber(mode);\n const anyError$1 = anyError(number, significance, mode);\n\n if (anyError$1) {\n return anyError$1\n }\n\n if (significance === 0) {\n return 0\n }\n\n significance = Math.abs(significance);\n const precision = -Math.floor(Math.log(significance) / Math.log(10));\n\n if (number >= 0) {\n return ROUND(Math.ceil(number / significance) * significance, precision)\n } else {\n if (mode === 0) {\n return -ROUND(Math.floor(Math.abs(number) / significance) * significance, precision)\n } else {\n return -ROUND(Math.ceil(Math.abs(number) / significance) * significance, precision)\n }\n }\n}\n\nCEILING.MATH = CEILING;\n\nCEILING.PRECISE = CEILING;\n\n/**\n * Returns the number of combinations for a given number of objects.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The number of items.\n * @param {*} number_chosen The number of items in each combination.\n * @returns\n */\nfunction COMBIN(number, number_chosen) {\n number = parseNumber(number);\n number_chosen = parseNumber(number_chosen);\n const anyError$1 = anyError(number, number_chosen);\n\n if (anyError$1) {\n return anyError$1\n }\n\n if (number < number_chosen) {\n return num\n }\n\n return FACT(number) / (FACT(number_chosen) * FACT(number - number_chosen))\n}\n\n/**\n * Returns the number of combinations with repetitions for a given number of items.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number Must be greater than or equal to 0, and greater than or equal to Number_chosen. Non-integer values are truncated.\n * @param {*} number_chosen Must be greater than or equal to 0. Non-integer values are truncated.\n * @returns\n */\nfunction COMBINA(number, number_chosen) {\n number = parseNumber(number);\n number_chosen = parseNumber(number_chosen);\n const anyError$1 = anyError(number, number_chosen);\n\n if (anyError$1) {\n return anyError$1\n }\n\n if (number < number_chosen) {\n return num\n }\n\n return number === 0 && number_chosen === 0 ? 1 : COMBIN(number + number_chosen - 1, number - 1)\n}\n\n/**\n * Returns the cosine of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The angle in radians for which you want the cosine.\n * @returns\n */\nfunction COS(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n return Math.cos(number)\n}\n\n/**\n * Returns the hyperbolic cosine of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number Any real number for which you want to find the hyperbolic cosine.\n * @returns\n */\nfunction COSH(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n return (Math.exp(number) + Math.exp(-number)) / 2\n}\n\n/**\n * Returns the hyperbolic cosine of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The angle in radians for which you want the cotangent.\n * @returns\n */\nfunction COT(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n if (number === 0) {\n return div0\n }\n\n return 1 / Math.tan(number)\n}\n\n/**\n * Returns the cotangent of an angle.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number\n * @returns\n */\nfunction COTH(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n if (number === 0) {\n return div0\n }\n\n const e2 = Math.exp(2 * number);\n\n return (e2 + 1) / (e2 - 1)\n}\n\n/**\n * Returns the cosecant of an angle.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number\n * @returns\n */\nfunction CSC(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n if (number === 0) {\n return div0\n }\n\n return 1 / Math.sin(number)\n}\n\n/**\n * Returns the hyperbolic cosecant of an angle.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number\n * @returns\n */\nfunction CSCH(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n if (number === 0) {\n return div0\n }\n\n return 2 / (Math.exp(number) - Math.exp(-number))\n}\n\n/**\n * Converts a text representation of a number in a given base into a decimal number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} text\n * @param {*} radix Radix must be an integer.\n * @returns\n */\nfunction DECIMAL(text, radix) {\n if (arguments.length < 2) {\n return na\n }\n\n text = text || '0';\n radix = parseNumber(radix);\n const anyError$1 = anyError(text, radix);\n\n if (anyError$1) {\n return anyError$1\n }\n\n if (radix === 0) {\n return num\n }\n\n const result = parseInt(text, radix);\n\n if (isNaN(result)) {\n return num\n }\n\n return result\n}\n\n/**\n * Converts radians to degrees.\n *\n * Category: Math and trigonometry\n *\n * @param {*} angle The angle in radians that you want to convert.\n * @returns\n */\nfunction DEGREES(angle) {\n angle = parseNumber(angle);\n\n if (angle instanceof Error) {\n return angle\n }\n\n return (angle * 180) / Math.PI\n}\n\n/**\n * Rounds a number up to the nearest even integer.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The value to round.\n * @returns\n */\nfunction EVEN(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n return CEILING(number, -2, -1)\n}\n\n/**\n * Returns e raised to the power of a given number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The exponent applied to the base e.\n * @returns\n */\nfunction EXP(number) {\n if (arguments.length < 1) {\n return na\n }\n\n if (arguments.length > 1) {\n return error\n }\n\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n number = Math.exp(number);\n\n return number\n}\n\nconst MEMOIZED_FACT = [];\n/**\n * Returns the factorial of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The nonnegative number for which you want the factorial. If number is not an integer, it is truncated.\n * @returns\n */\nfunction FACT(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n const n = Math.floor(number);\n\n if (n === 0 || n === 1) {\n return 1\n } else if (MEMOIZED_FACT[n] > 0) {\n return MEMOIZED_FACT[n]\n } else {\n MEMOIZED_FACT[n] = FACT(n - 1) * n;\n\n return MEMOIZED_FACT[n]\n }\n}\n\n/**\n * Returns the double factorial of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The value for which to return the double factorial. If number is not an integer, it is truncated.\n * @returns\n */\nfunction FACTDOUBLE(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n const n = Math.floor(number);\n\n return n <= 0 ? 1 : n * FACTDOUBLE(n - 2)\n}\n\n/**\n * Rounds a number down, toward zero.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The numeric value you want to round.\n * @param {*} significance The multiple to which you want to round.\n * @returns\n */\nfunction FLOOR(number, significance) {\n number = parseNumber(number);\n significance = parseNumber(significance);\n const anyError$1 = anyError(number, significance);\n\n if (anyError$1) {\n return anyError$1\n }\n\n if (significance === 0) {\n return 0\n }\n\n if (!(number >= 0 && significance > 0) && !(number <= 0 && significance < 0)) {\n return num\n }\n\n significance = Math.abs(significance);\n const precision = -Math.floor(Math.log(significance) / Math.log(10));\n\n return number >= 0\n ? ROUND(Math.floor(number / significance) * significance, precision)\n : -ROUND(Math.ceil(Math.abs(number) / significance), precision)\n}\n\n// TODO: Verify\n\n/**\n * Rounds a number down, to the nearest integer or to the nearest multiple of significance.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The number to be rounded down.\n * @param {*} significance Optional. The multiple to which you want to round.\n * @param {*} mode Optional. The direction (toward or away from 0) to round negative numbers.\n * @returns\n */\nFLOOR.MATH = (number, significance, mode) => {\n if (significance instanceof Error) {\n return significance\n }\n\n significance = significance === undefined ? 0 : significance;\n\n number = parseNumber(number);\n significance = parseNumber(significance);\n mode = parseNumber(mode);\n const anyError$1 = anyError(number, significance, mode);\n\n if (anyError$1) {\n return anyError$1\n }\n\n if (significance === 0) {\n return 0\n }\n\n significance = significance ? Math.abs(significance) : 1;\n const precision = -Math.floor(Math.log(significance) / Math.log(10));\n\n if (number >= 0) {\n return ROUND(Math.floor(number / significance) * significance, precision)\n } else if (mode === 0 || mode === undefined) {\n return -ROUND(Math.ceil(Math.abs(number) / significance) * significance, precision)\n }\n\n return -ROUND(Math.floor(Math.abs(number) / significance) * significance, precision)\n};\n\n// Deprecated\n\n/**\n * Rounds a number the nearest integer or to the nearest multiple of significance. Regardless of the sign of the number, the number is rounded up.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The value to be rounded.\n * @param {*} significance Optional. The multiple to which number is to be rounded. If significance is omitted, its default value is 1.\n * @returns\n */\nFLOOR.PRECISE = FLOOR['MATH'];\n\n// adapted http://rosettacode.org/wiki/Greatest_common_divisor#JavaScript\n/**\n * Returns the greatest common divisor.\n *\n * Category: Math and trigonometry\n *\n * @param {*} args number1, number2, ... Number1 is required, subsequent numbers are optional. 1 to 255 values. If any value is not an integer, it is truncated.\n * @returns\n */\nfunction GCD() {\n const range = parseNumberArray(flatten(arguments));\n\n if (range instanceof Error) {\n return range\n }\n\n const n = range.length;\n const r0 = range[0];\n let x = r0 < 0 ? -r0 : r0;\n\n for (let i = 1; i < n; i++) {\n const ri = range[i];\n let y = ri < 0 ? -ri : ri;\n\n while (x && y) {\n if (x > y) {\n x %= y;\n } else {\n y %= x;\n }\n }\n\n x += y;\n }\n\n return x\n}\n\n/**\n * Rounds a number down to the nearest integer.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The real number you want to round down to an integer.\n * @returns\n */\nfunction INT(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n return Math.floor(number)\n}\n\n// TODO: verify\nconst ISO = {\n CEILING: CEILING\n};\n\n/**\n * Returns the least common multiple.\n *\n * Category: Math and trigonometry\n *\n * @param {*} args number1, number2,... Number1 is required, subsequent numbers are optional. 1 to 255 values for which you want the least common multiple. If value is not an integer, it is truncated.\n * @returns\n */\nfunction LCM() {\n // Credits: Jonas Raoni Soares Silva\n const o = parseNumberArray(flatten(arguments));\n\n if (o instanceof Error) {\n return o\n }\n\n for (var i, j, n, d, r = 1; (n = o.pop()) !== undefined; ) {\n if (n === 0) {\n return 0\n }\n\n while (n > 1) {\n if (n % 2) {\n for (i = 3, j = Math.floor(Math.sqrt(n)); i <= j && n % i; i += 2) {\n // empty\n }\n\n d = i <= j ? i : n;\n } else {\n d = 2;\n }\n\n for (n /= d, r *= d, i = o.length; i; o[--i] % d === 0 && (o[i] /= d) === 1 && o.splice(i, 1)) {\n // empty\n }\n }\n }\n\n return r\n}\n\n/**\n * Returns the natural logarithm of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The positive real number for which you want the natural logarithm.\n * @returns\n */\nfunction LN(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n if (number === 0) {\n return num\n }\n\n return Math.log(number)\n}\n\n/**\n * Returns the logarithm of a number to a specified base.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The positive real number for which you want the logarithm.\n * @param {*} base Optional. The base of the logarithm. If base is omitted, it is assumed to be 10.\n * @returns\n */\nfunction LOG(number, base) {\n number = parseNumber(number);\n base = base ? parseNumber(base) : 10;\n const anyError$1 = anyError(number, base);\n if (anyError$1) {\n return anyError$1\n }\n\n if (number === 0 || base === 0) {\n return num\n }\n\n return Math.log(number) / Math.log(base)\n}\n\n/**\n * Returns the base-10 logarithm of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The positive real number for which you want the base-10 logarithm.\n * @returns\n */\nfunction LOG10(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n if (number === 0) {\n return num\n }\n\n return Math.log(number) / Math.log(10)\n}\n\n/**\n * Returns the matrix product of two arrays. The result is an array with the same number of rows as array1 and the same number of columns as array2.\n *\n * Category: Math and trigonometry\n *\n * @param {*} array1 Required. 1st array you want to multiply.\n * @param {*} array2 Required. 2nd array you want to multiply.\n * @returns\n */\nfunction MMULT(array1, array2) {\n if (\n //Arguments are not arrays\n !Array.isArray(array1) ||\n !Array.isArray(array2) ||\n // There are empty arrays\n array1.some((el) => !el.length) ||\n array2.some((el) => !el.length) ||\n // Not all array elements are numbers\n flattenShallow(array1).some((el) => typeof el !== 'number') ||\n flattenShallow(array2).some((el) => typeof el !== 'number') ||\n // Number of columns in array1 is different from the number of rows in array2\n array1[0].length !== array2.length\n ) {\n return value\n }\n\n const matrix = Array(array1.length)\n .fill(0)\n .map(() => Array(array2[0].length).fill(0));\n\n return matrix.map((row, i) => row.map((_, j) => array1[i].reduce((sum, el, k) => sum + el * array2[k][j], 0)))\n}\n\n/**\n * Returns the remainder from division.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The number for which you want to find the remainder.\n * @param {*} divisor The number by which you want to divide number.\n * @returns\n */\nfunction MOD(number, divisor) {\n number = parseNumber(number);\n divisor = parseNumber(divisor);\n const anyError$1 = anyError(number, divisor);\n\n if (anyError$1) {\n return anyError$1\n }\n\n if (divisor === 0) {\n return div0\n }\n\n let modulus = Math.abs(number % divisor);\n modulus = number < 0 ? divisor - modulus : modulus;\n\n return divisor > 0 ? modulus : -modulus\n}\n\n/**\n * Returns a number rounded to the desired multiple.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The value to round.\n * @param {*} multiple The multiple to which you want to round number.\n * @returns\n */\nfunction MROUND(number, multiple) {\n number = parseNumber(number);\n multiple = parseNumber(multiple);\n const anyError$1 = anyError(number, multiple);\n\n if (anyError$1) {\n return anyError$1\n }\n\n if (number * multiple === 0) {\n return 0\n }\n\n if (number * multiple < 0) {\n return num\n }\n\n return Math.round(number / multiple) * multiple\n}\n\n/**\n * Returns the multinomial of a set of numbers.\n *\n * Category: Math and trigonometry\n *\n * @param {*} args number1, number2, ... Number1 is required, subsequent numbers are optional. 1 to 255 values for which you want the multinomial.\n * @returns\n */\nfunction MULTINOMIAL() {\n const args = parseNumberArray(flatten(arguments));\n\n if (args instanceof Error) {\n return args\n }\n\n let sum = 0;\n let divisor = 1;\n\n for (let i = 0; i < args.length; i++) {\n sum += args[i];\n divisor *= FACT(args[i]);\n }\n\n return FACT(sum) / divisor\n}\n\n/**\n * Returns the unit matrix for the specified dimension.\n *\n * Category: Math and trigonometry\n *\n * @param {*} dimension Required. Dimension is an integer specifying the dimension of the unit matrix that you want to return. It returns an array. The dimension has to be greater than zero.\n * @returns\n */\nfunction MUNIT(dimension) {\n if (arguments.length > 1) {\n return na\n }\n\n dimension = parseInt(dimension);\n\n if (!dimension || dimension <= 0) {\n return value\n }\n\n return Array(dimension)\n .fill(0)\n .map(() => Array(dimension).fill(0))\n .map((el, i) => {\n el[i] = 1;\n return el\n })\n}\n\n/**\n * Rounds a number up to the nearest odd integer.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number: The value to round.\n * @returns\n */\nfunction ODD(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n let temp = Math.ceil(Math.abs(number));\n temp = temp & 1 ? temp : temp + 1;\n\n return number >= 0 ? temp : -temp\n}\n\n/**\n * Returns the value of pi.\n *\n * Category: Math and trigonometry\n *\n * @returns\n */\nfunction PI() {\n return Math.PI\n}\n\n/**\n * Returns the result of a number raised to a power.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The base number. It can be any real number.\n * @param {*} power The exponent to which the base number is raised.\n * @returns\n */\nfunction POWER(number, power) {\n number = parseNumber(number);\n power = parseNumber(power);\n const anyError$1 = anyError(number, power);\n\n if (anyError$1) {\n return anyError$1\n }\n\n if (number === 0 && power === 0) {\n return num\n }\n\n const result = Math.pow(number, power);\n\n if (isNaN(result)) {\n return num\n }\n\n return result\n}\n\n/**\n * Multiplies its arguments.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number1 The first number or range that you want to multiply.\n * @param {*} args number2, ... Optional. Additional numbers or ranges that you want to multiply, up to a maximum of 255 arguments.\n * @returns\n */\nfunction PRODUCT() {\n const flatArguments = flatten(arguments);\n const flatArgumentsDefined = flatArguments.filter((arg) => arg !== undefined && arg !== null);\n\n if (flatArgumentsDefined.length === 0) {\n return 0\n }\n\n const args = parseNumberArray(flatArgumentsDefined);\n\n if (args instanceof Error) {\n return args\n }\n\n let result = 1;\n\n for (let i = 0; i < args.length; i++) {\n result *= args[i];\n }\n\n return result\n}\n\n/**\n * Returns the integer portion of a division.\n *\n * Category: Math and trigonometry\n *\n * @param {*} numerator The dividend.\n * @param {*} denominator The divisor.\n * @returns\n */\nfunction QUOTIENT(numerator, denominator) {\n numerator = parseNumber(numerator);\n denominator = parseNumber(denominator);\n const anyError$1 = anyError(numerator, denominator);\n\n if (anyError$1) {\n return anyError$1\n }\n\n return parseInt(numerator / denominator, 10)\n}\n\n/**\n * Converts degrees to radians.\n *\n * Category: Math and trigonometry\n *\n * @param {*} angle An angle in degrees that you want to convert.\n * @returns\n */\nfunction RADIANS(angle) {\n angle = parseNumber(angle);\n\n if (angle instanceof Error) {\n return angle\n }\n\n return (angle * Math.PI) / 180\n}\n\n/**\n * Returns a random number between 0 and 1.\n *\n * Category: Math and trigonometry\n *\n * @returns\n */\nfunction RAND() {\n return Math.random()\n}\n\n/**\n * Returns a random number between the numbers you specify.\n *\n * Category: Math and trigonometry\n *\n * @param {*} bottom The smallest integer RANDBETWEEN will return.\n * @param {*} top The largest integer RANDBETWEEN will return.\n * @returns\n */\nfunction RANDBETWEEN(bottom, top) {\n bottom = parseNumber(bottom);\n top = parseNumber(top);\n const anyError$1 = anyError(bottom, top);\n\n if (anyError$1) {\n return anyError$1\n }\n // Creative Commons Attribution 3.0 License\n // Copyright (c) 2012 eqcode\n\n return bottom + Math.ceil((top - bottom + 1) * Math.random()) - 1\n}\n\n// TODO\n/**\n * Converts an arabic numeral to roman, as text.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The Arabic numeral you want converted.\n * @returns\n */\nfunction ROMAN(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n // The MIT License\n // Copyright (c) 2008 Steven Levithan\n const digits = String(number).split('');\n const key = [\n '',\n 'C',\n 'CC',\n 'CCC',\n 'CD',\n 'D',\n 'DC',\n 'DCC',\n 'DCCC',\n 'CM',\n '',\n 'X',\n 'XX',\n 'XXX',\n 'XL',\n 'L',\n 'LX',\n 'LXX',\n 'LXXX',\n 'XC',\n '',\n 'I',\n 'II',\n 'III',\n 'IV',\n 'V',\n 'VI',\n 'VII',\n 'VIII',\n 'IX'\n ];\n let roman = '';\n let i = 3;\n\n while (i--) {\n roman = (key[+digits.pop() + i * 10] || '') + roman;\n }\n\n return new Array(+digits.join('') + 1).join('M') + roman\n}\n\n/**\n * Rounds a number to a specified number of digits.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The number that you want to round.\n * @param {*} num_digits The number of digits to which you want to round the number argument.\n * @returns\n */\nfunction ROUND(number, num_digits) {\n number = parseNumber(number);\n num_digits = parseNumber(num_digits);\n const anyError$1 = anyError(number, num_digits);\n\n if (anyError$1) {\n return anyError$1\n }\n\n return Number(Math.round(Number(number + 'e' + num_digits)) + 'e' + num_digits * -1)\n}\n\n/**\n * Rounds a number down, toward zero.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number Any real number that you want rounded down.\n * @param {*} num_digits The number of digits to which you want to round number.\n * @returns\n */\nfunction ROUNDDOWN(number, num_digits) {\n number = parseNumber(number);\n num_digits = parseNumber(num_digits);\n const anyError$1 = anyError(number, num_digits);\n\n if (anyError$1) {\n return anyError$1\n }\n\n const sign = number > 0 ? 1 : -1;\n\n return (sign * Math.floor(Math.abs(number) * Math.pow(10, num_digits))) / Math.pow(10, num_digits)\n}\n\n/**\n * Rounds a number up, away from zero.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number Any real number that you want rounded up.\n * @param {*} num_digits The number of digits to which you want to round number.\n * @returns\n */\nfunction ROUNDUP(number, num_digits) {\n number = parseNumber(number);\n num_digits = parseNumber(num_digits);\n const anyError$1 = anyError(number, num_digits);\n\n if (anyError$1) {\n return anyError$1\n }\n\n const sign = number > 0 ? 1 : -1;\n\n return (sign * Math.ceil(Math.abs(number) * Math.pow(10, num_digits))) / Math.pow(10, num_digits)\n}\n\n/**\n * Returns the secant of an angle.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The angle in radians for which you want the secant.\n * @returns\n */\nfunction SEC(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n return 1 / Math.cos(number)\n}\n\n/**\n * Returns the hyperbolic secant of an angle.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The angle in radians for which you want the hyperbolic secant.\n * @returns\n */\nfunction SECH(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n return 2 / (Math.exp(number) + Math.exp(-number))\n}\n\n/**\n * Returns the sum of a power series based on the formula.\n *\n * Category: Math and trigonometry\n *\n * @param {*} x The input value to the power series.\n * @param {*} n The initial power to which you want to raise x.\n * @param {*} m The step by which to increase n for each term in the series.\n * @param {*} coefficients A set of coefficients by which each successive power of x is multiplied. The number of values in coefficients determines the number of terms in the power series. For example, if there are three values in coefficients, then there will be three terms in the power series.\n * @returns\n */\nfunction SERIESSUM(x, n, m, coefficients) {\n x = parseNumber(x);\n n = parseNumber(n);\n m = parseNumber(m);\n coefficients = parseNumberArray(coefficients);\n\n if (anyIsError(x, n, m, coefficients)) {\n return value\n }\n\n let result = coefficients[0] * Math.pow(x, n);\n\n for (let i = 1; i < coefficients.length; i++) {\n result += coefficients[i] * Math.pow(x, n + i * m);\n }\n\n return result\n}\n\n/**\n * Returns the sign of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number Any real number.\n * @returns\n */\nfunction SIGN(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n if (number < 0) {\n return -1\n } else if (number === 0) {\n return 0\n } else {\n return 1\n }\n}\n\n/**\n * Returns the sine of the given angle.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The angle in radians for which you want the sine.\n * @returns\n */\nfunction SIN(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n return Math.sin(number)\n}\n\n/**\n * Returns the hyperbolic sine of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number Any real number.\n * @returns\n */\nfunction SINH(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n return (Math.exp(number) - Math.exp(-number)) / 2\n}\n\n/**\n * Returns a positive square root.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The number for which you want the square root.\n * @returns\n */\nfunction SQRT(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n if (number < 0) {\n return num\n }\n\n return Math.sqrt(number)\n}\n\n/**\n * Returns the square root of (number * pi).\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The number by which pi is multiplied.\n * @returns\n */\nfunction SQRTPI(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n return Math.sqrt(number * Math.PI)\n}\n\n/**\n * Returns a subtotal in a list or database.\n *\n * Category: Math and trigonometry\n *\n * @param {*} function_num The number 1-11 or 101-111 that specifies the function to use for the subtotal. 1-11 includes manually-hidden rows, while 101-111 excludes them; filtered-out values are always excluded.\n * @param {*} ref1 The first named range or reference for which you want the subtotal.\n * @returns\n */\nfunction SUBTOTAL(function_num, ref1) {\n function_num = parseNumber(function_num);\n\n if (function_num instanceof Error) {\n return function_num\n }\n\n switch (function_num) {\n case 1:\n return AVERAGE(ref1)\n case 2:\n return COUNT(ref1)\n case 3:\n return COUNTA(ref1)\n case 4:\n return MAX(ref1)\n case 5:\n return MIN(ref1)\n case 6:\n return PRODUCT(ref1)\n case 7:\n return STDEV.S(ref1)\n case 8:\n return STDEV.P(ref1)\n case 9:\n return SUM(ref1)\n case 10:\n return VAR.S(ref1)\n case 11:\n return VAR.P(ref1)\n // no hidden values for us\n case 101:\n return AVERAGE(ref1)\n case 102:\n return COUNT(ref1)\n case 103:\n return COUNTA(ref1)\n case 104:\n return MAX(ref1)\n case 105:\n return MIN(ref1)\n case 106:\n return PRODUCT(ref1)\n case 107:\n return STDEV.S(ref1)\n case 108:\n return STDEV.P(ref1)\n case 109:\n return SUM(ref1)\n case 110:\n return VAR.S(ref1)\n case 111:\n return VAR.P(ref1)\n }\n}\n\n/**\n * Adds its arguments.\n *\n * Category: Math and trigonometry\n *\n * @returns\n */\nfunction SUM() {\n let result = 0;\n\n arrayEach(argsToArray(arguments), (value) => {\n if (result instanceof Error) {\n return false\n } else if (value instanceof Error) {\n result = value;\n } else if (typeof value === 'number') {\n result += value;\n } else if (typeof value === 'string') {\n const parsed = parseFloat(value);\n\n !isNaN(parsed) && (result += parsed);\n } else if (Array.isArray(value)) {\n const inner_result = SUM.apply(null, value);\n\n if (inner_result instanceof Error) {\n result = inner_result;\n } else {\n result += inner_result;\n }\n }\n });\n\n return result\n}\n\n/**\n * Adds the values specified by a given criteria.\n *\n * Category: Math and trigonometry\n *\n * @param {*} range The range of values that you want evaluated by criteria. Cells in each range must be numbers or names, arrays, or references that contain numbers. Blank and text values are ignored.\n * @param {*} criteria The criteria in the form of a number, expression, a value reference, text, or a function that defines which values will be added.\n * @param {*} sum_range Optional. The actual values to add, if you want to add values other than those specified in the range argument. If the sum_range argument is omitted, Excel adds the values that are specified in the range argument (the same values to which the criteria is applied). Sum_range should be the same size and shape as range. If it isn't, performance may suffer, and the formula will sum a range of values that starts with the first value in sum_range but has the same dimensions as range.\n * @returns\n */\nfunction SUMIF(range, criteria, sum_range) {\n range = flatten(range);\n\n sum_range = sum_range ? flatten(sum_range) : range;\n\n if (range instanceof Error) {\n return range\n }\n\n if (criteria === undefined || criteria === null || criteria instanceof Error) {\n return 0\n }\n\n let result = 0;\n const isWildcard = criteria === '*';\n const tokenizedCriteria = isWildcard ? null : parse(criteria + '');\n\n for (let i = 0; i < range.length; i++) {\n const value = range[i];\n const sumValue = sum_range[i];\n\n if (isWildcard) {\n result += value;\n } else {\n const tokens = [createToken(value, TOKEN_TYPE_LITERAL)].concat(tokenizedCriteria);\n\n result += compute(tokens) ? sumValue : 0;\n }\n }\n\n return result\n}\n\n/**\n * Adds the values in a range that meet multiple criteria.\n *\n * Category: Math and trigonometry\n *\n * @returns\n */\nfunction SUMIFS() {\n const values = applyCriteria(...arguments);\n return SUM(values)\n}\n\n/**\n * Returns the sum of the products of corresponding array components.\n *\n * Category: Math and trigonometry\n *\n * @returns\n */\nfunction SUMPRODUCT() {\n if (!arguments || arguments.length === 0) {\n return value\n }\n\n const arrays = arguments.length + 1;\n let result = 0;\n let product;\n let k;\n let _i;\n let _ij;\n\n for (let i = 0; i < arguments[0].length; i++) {\n if (!(arguments[0][i] instanceof Array)) {\n product = 1;\n\n for (k = 1; k < arrays; k++) {\n const _i_arg = arguments[k - 1][i];\n\n if (_i_arg instanceof Error) {\n return _i_arg\n }\n\n _i = parseNumber(_i_arg);\n\n if (_i instanceof Error) {\n return _i\n }\n\n product *= _i;\n }\n\n result += product;\n } else {\n for (let j = 0; j < arguments[0][i].length; j++) {\n product = 1;\n\n for (k = 1; k < arrays; k++) {\n const _ij_arg = arguments[k - 1][i][j];\n\n if (_ij_arg instanceof Error) {\n return _ij_arg\n }\n\n _ij = parseNumber(_ij_arg);\n\n if (_ij instanceof Error) {\n return _ij\n }\n\n product *= _ij;\n }\n\n result += product;\n }\n }\n }\n\n return result\n}\n\n/**\n * Returns the sum of the squares of the arguments.\n *\n * Category: Math and trigonometry\n *\n * @param {*} args number1, number2, ... Number1 is required, subsequent numbers are optional. 1 to 255 arguments for which you want the sum of the squares. You can also use a single array or a reference to an array instead of arguments separated by commas.\n * @returns\n */\nfunction SUMSQ() {\n const numbers = parseNumberArray(flatten(arguments));\n\n if (numbers instanceof Error) {\n return numbers\n }\n\n let result = 0;\n const length = numbers.length;\n\n for (let i = 0; i < length; i++) {\n result += ISNUMBER(numbers[i]) ? numbers[i] * numbers[i] : 0;\n }\n\n return result\n}\n\n/**\n * Returns the sum of the difference of squares of corresponding values in two arrays.\n *\n * Category: Math and trigonometry\n *\n * @param {*} array_x The first array or range of values.\n * @param {*} array_y The second array or range of values.\n * @returns\n */\nfunction SUMX2MY2(array_x, array_y) {\n array_x = parseNumberArray(flatten(array_x));\n array_y = parseNumberArray(flatten(array_y));\n\n if (anyIsError(array_x, array_y)) {\n return value\n }\n\n let result = 0;\n\n for (let i = 0; i < array_x.length; i++) {\n result += array_x[i] * array_x[i] - array_y[i] * array_y[i];\n }\n\n return result\n}\n\n/**\n * Returns the sum of the sum of squares of corresponding values in two arrays.\n *\n * Category: Math and trigonometry\n *\n * @param {*} array_x The first array or range of values.\n * @param {*} array_y The second array or range of values.\n * @returns\n */\nfunction SUMX2PY2(array_x, array_y) {\n array_x = parseNumberArray(flatten(array_x));\n array_y = parseNumberArray(flatten(array_y));\n\n if (anyIsError(array_x, array_y)) {\n return value\n }\n\n let result = 0;\n array_x = parseNumberArray(flatten(array_x));\n array_y = parseNumberArray(flatten(array_y));\n\n for (let i = 0; i < array_x.length; i++) {\n result += array_x[i] * array_x[i] + array_y[i] * array_y[i];\n }\n\n return result\n}\n\n/**\n * Returns the sum of squares of differences of corresponding values in two arrays.\n *\n * Category: Math and trigonometry\n *\n * @param {*} array_x The first array or range of values.\n * @param {*} array_y The second array or range of values.\n * @returns\n */\nfunction SUMXMY2(array_x, array_y) {\n array_x = parseNumberArray(flatten(array_x));\n array_y = parseNumberArray(flatten(array_y));\n\n if (anyIsError(array_x, array_y)) {\n return value\n }\n\n let result = 0;\n array_x = flatten(array_x);\n array_y = flatten(array_y);\n\n for (let i = 0; i < array_x.length; i++) {\n result += Math.pow(array_x[i] - array_y[i], 2);\n }\n\n return result\n}\n\n/**\n * Returns the tangent of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The angle in radians for which you want the tangent.\n * @returns\n */\nfunction TAN(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n return Math.tan(number)\n}\n\n/**\n * Returns the hyperbolic tangent of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number Any real number.\n * @returns\n */\nfunction TANH(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n const e2 = Math.exp(2 * number);\n\n return (e2 - 1) / (e2 + 1)\n}\n\n/**\n * Truncates a number to an integer.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The number you want to truncate.\n * @param {*} num_digits Optional. A number specifying the precision of the truncation. The default value for num_digits is 0 (zero).\n * @returns\n */\nfunction TRUNC(number, num_digits) {\n number = parseNumber(number);\n num_digits = parseNumber(num_digits);\n const anyError$1 = anyError(number, num_digits);\n\n if (anyError$1) {\n return anyError$1\n }\n\n const sign = number > 0 ? 1 : -1;\n\n return (sign * Math.floor(Math.abs(number) * Math.pow(10, num_digits))) / Math.pow(10, num_digits)\n}\n\n/**\n * Following functions are part of Formula.js only and not found in Excel.\n * Purpose of these functions is to implement an Excel like behaviour for fundamental math symbols such as +, -, /, *, etc.\n */\n\n/**\n * Formula.js only.\n *\n * @param {*} num1\n * @param {*} num2\n * @returns\n */\nfunction ADD(num1, num2) {\n if (arguments.length !== 2) {\n return na\n }\n\n num1 = parseNumber(num1);\n num2 = parseNumber(num2);\n const anyError$1 = anyError(num1, num2);\n\n if (anyError$1) {\n return anyError$1\n }\n\n return num1 + num2\n}\n\n/**\n * Formula.js only\n *\n * @param {*} dividend\n * @param {*} divisor\n * @returns\n */\nfunction DIVIDE(dividend, divisor) {\n if (arguments.length !== 2) {\n return na\n }\n\n dividend = parseNumber(dividend);\n divisor = parseNumber(divisor);\n const anyError$1 = anyError(dividend, divisor);\n\n if (anyError$1) {\n return anyError$1\n }\n\n if (divisor === 0) {\n return div0\n }\n\n return dividend / divisor\n}\n\n/**\n * Formula.js only\n *\n * @param {*} value1\n * @param {*} value2\n * @returns\n */\nfunction EQ(value1, value2) {\n if (arguments.length !== 2) {\n return na\n }\n\n if (value1 instanceof Error) {\n return value1\n }\n\n if (value2 instanceof Error) {\n return value2\n }\n\n if (value1 === null) {\n value1 = undefined;\n }\n\n if (value2 === null) {\n value2 = undefined;\n }\n\n return value1 === value2\n}\n\n/**\n * Formula.js only\n *\n * @param {*} num1\n * @param {*} num2\n * @returns\n */\nfunction GT(num1, num2) {\n if (arguments.length !== 2) {\n return na\n }\n\n if (num1 instanceof Error) {\n return num1\n }\n\n if (num2 instanceof Error) {\n return num2\n }\n\n if (anyIsString(num1, num2)) {\n num1 = parseString(num1);\n num2 = parseString(num2);\n } else {\n num1 = parseNumber(num1);\n num2 = parseNumber(num2);\n }\n\n const anyError$1 = anyError(num1, num2);\n\n if (anyError$1) {\n return anyError$1\n }\n\n return num1 > num2\n}\n\n/**\n * Formula.js only\n *\n * @param {*} num1\n * @param {*} num2\n * @returns\n */\nfunction GTE(num1, num2) {\n if (arguments.length !== 2) {\n return na\n }\n\n if (anyIsString(num1, num2)) {\n num1 = parseString(num1);\n num2 = parseString(num2);\n } else {\n num1 = parseNumber(num1);\n num2 = parseNumber(num2);\n }\n\n const anyError$1 = anyError(num1, num2);\n\n if (anyError$1) {\n return anyError$1\n }\n\n return num1 >= num2\n}\n\n/**\n * Formula.js only\n *\n * @param {*} num1\n * @param {*} num2\n * @returns\n */\nfunction LT(num1, num2) {\n if (arguments.length !== 2) {\n return na\n }\n\n if (anyIsString(num1, num2)) {\n num1 = parseString(num1);\n num2 = parseString(num2);\n } else {\n num1 = parseNumber(num1);\n num2 = parseNumber(num2);\n }\n\n const anyError$1 = anyError(num1, num2);\n\n if (anyError$1) {\n return anyError$1\n }\n\n return num1 < num2\n}\n\n/**\n * Formula.js only\n *\n * @param {*} num1\n * @param {*} num2\n * @returns\n */\nfunction LTE(num1, num2) {\n if (arguments.length !== 2) {\n return na\n }\n\n if (anyIsString(num1, num2)) {\n num1 = parseString(num1);\n num2 = parseString(num2);\n } else {\n num1 = parseNumber(num1);\n num2 = parseNumber(num2);\n }\n\n const anyError$1 = anyError(num1, num2);\n\n if (anyError$1) {\n return anyError$1\n }\n\n return num1 <= num2\n}\n\n/**\n * Formula.js only\n *\n * @param {*} num1\n * @param {*} num2\n * @returns\n */\nfunction MINUS(num1, num2) {\n if (arguments.length !== 2) {\n return na\n }\n\n num1 = parseNumber(num1);\n num2 = parseNumber(num2);\n const anyError$1 = anyError(num1, num2);\n\n if (anyError$1) {\n return anyError$1\n }\n\n return num1 - num2\n}\n\n/**\n * Formula.js only\n *\n * @param {*} factor1\n * @param {*} factor2\n * @returns\n */\nfunction MULTIPLY(factor1, factor2) {\n if (arguments.length !== 2) {\n return na\n }\n\n factor1 = parseNumber(factor1);\n factor2 = parseNumber(factor2);\n const anyError$1 = anyError(factor1, factor2);\n\n if (anyError$1) {\n return anyError$1\n }\n\n return factor1 * factor2\n}\n\n/**\n * Formula.js only\n *\n * @param {*} value1\n * @param {*} value2\n * @returns\n */\nfunction NE(value1, value2) {\n if (arguments.length !== 2) {\n return na\n }\n\n if (value1 instanceof Error) {\n return value1\n }\n\n if (value2 instanceof Error) {\n return value2\n }\n\n if (value1 === null) {\n value1 = undefined;\n }\n\n if (value2 === null) {\n value2 = undefined;\n }\n\n return value1 !== value2\n}\n\n/**\n * Formula.js only\n *\n * @param {*} base\n * @param {*} exponent\n * @returns\n */\nfunction POW(base, exponent) {\n if (arguments.length !== 2) {\n return na\n }\n\n return POWER(base, exponent)\n}\n\nvar symbols = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ADD: ADD,\n DIVIDE: DIVIDE,\n EQ: EQ,\n GT: GT,\n GTE: GTE,\n LT: LT,\n LTE: LTE,\n MINUS: MINUS,\n MULTIPLY: MULTIPLY,\n NE: NE,\n POW: POW\n});\n\nconst d1900 = new Date(Date.UTC(1900, 0, 1));\nconst WEEK_STARTS = [\n undefined,\n 0,\n 1,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 0\n];\nconst WEEK_TYPES = [\n [],\n [1, 2, 3, 4, 5, 6, 7],\n [7, 1, 2, 3, 4, 5, 6],\n [6, 0, 1, 2, 3, 4, 5],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [7, 1, 2, 3, 4, 5, 6],\n [6, 7, 1, 2, 3, 4, 5],\n [5, 6, 7, 1, 2, 3, 4],\n [4, 5, 6, 7, 1, 2, 3],\n [3, 4, 5, 6, 7, 1, 2],\n [2, 3, 4, 5, 6, 7, 1],\n [1, 2, 3, 4, 5, 6, 7]\n];\nconst WEEKEND_TYPES = [\n [],\n [6, 0],\n [0, 1],\n [1, 2],\n [2, 3],\n [3, 4],\n [4, 5],\n [5, 6],\n undefined,\n undefined,\n undefined,\n [0, 0],\n [1, 1],\n [2, 2],\n [3, 3],\n [4, 4],\n [5, 5],\n [6, 6]\n];\n\n/**\n * Returns the serial number of a particular date.\n *\n * Category: Date and time\n *\n * @param {*} year Year\n * @param {*} month Month\n * @param {*} day Day\n * @returns\n */\nfunction DATE(year, month, day) {\n let result;\n\n year = parseNumber(year);\n month = parseNumber(month);\n day = parseNumber(day);\n\n if (anyIsError(year, month, day)) {\n result = value;\n } else {\n result = new Date(year, month - 1, day);\n\n if (result.getFullYear() < 0) {\n result = num;\n }\n }\n\n return result\n}\n\n/**\n * Calculates the number of days, months, or years between two dates. This function is useful in formulas where you need to calculate an age.\n *\n * Category: Date and time\n *\n * @param {*} start_date A date that represents the first, or starting date of a given period.\n * @param {*} end_date A date that represents the last, or ending, date of the period.\n * @param {*} unit The type of information that you want returned, where:\n - \"Y\": The number of complete years in the period.\n - \"M\": The number of complete months in the period.\n - \"D\": The number of days in the period.\n - \"MD\": The difference between the days in start_date and end_date. The months and years of the dates are ignored.\n - \"YM\": The difference between the months in start_date and end_date. The days and years of the dates are ignored\n - \"YD\": The difference between the days of start_date and end_date. The years of the dates are ignored.\n * @returns\n */\nfunction DATEDIF(start_date, end_date, unit) {\n unit = unit.toUpperCase();\n start_date = parseDate(start_date);\n end_date = parseDate(end_date);\n\n const start_date_year = start_date.getFullYear();\n const start_date_month = start_date.getMonth();\n const start_date_day = start_date.getDate();\n const end_date_year = end_date.getFullYear();\n const end_date_month = end_date.getMonth();\n const end_date_day = end_date.getDate();\n\n let result;\n\n switch (unit) {\n case 'Y':\n result = Math.floor(YEARFRAC(start_date, end_date));\n break\n case 'D':\n result = DAYS(end_date, start_date);\n break\n case 'M':\n result = end_date_month - start_date_month + 12 * (end_date_year - start_date_year);\n\n if (end_date_day < start_date_day) {\n result--;\n }\n\n break\n case 'MD':\n if (start_date_day <= end_date_day) {\n result = end_date_day - start_date_day;\n } else {\n if (end_date_month === 0) {\n start_date.setFullYear(end_date_year - 1);\n start_date.setMonth(12);\n } else {\n start_date.setFullYear(end_date_year);\n start_date.setMonth(end_date_month - 1);\n }\n\n result = DAYS(end_date, start_date);\n }\n\n break\n case 'YM':\n result = end_date_month - start_date_month + 12 * (end_date_year - start_date_year);\n\n if (end_date_day < start_date_day) {\n result--;\n }\n\n result = result % 12;\n break\n case 'YD':\n if (end_date_month > start_date_month || (end_date_month === start_date_month && end_date_day < start_date_day)) {\n start_date.setFullYear(end_date_year);\n } else {\n start_date.setFullYear(end_date_year - 1);\n }\n\n result = DAYS(end_date, start_date);\n break\n }\n\n return result\n}\n\n/**\n * Converts a date in the form of text to a serial number.\n *\n * Category: Date and time\n *\n * @param {*} date_text Text that represents a date in an Excel date format, or a reference to a value that contains text that represents a date in an Excel date format.\n * @returns\n */\nfunction DATEVALUE(date_text) {\n if (typeof date_text !== 'string') {\n return value\n }\n\n const date = Date.parse(date_text);\n\n if (isNaN(date)) {\n return value\n }\n\n return new Date(date_text)\n}\n\n/**\n * Converts a serial number to a day of the month.\n *\n * Category: Date and time\n *\n * @param {*} serial_number The date of the day you are trying to find.\n * @returns\n */\nfunction DAY(serial_number) {\n const date = parseDate(serial_number);\n\n if (date instanceof Error) {\n return date\n }\n\n return date.getDate()\n}\n\nfunction startOfDay(date) {\n const newDate = new Date(date);\n newDate.setHours(0, 0, 0, 0);\n\n return newDate\n}\n\n/**\n * Returns the number of days between two dates.\n *\n * Category: Date and time\n *\n * @param {*} end_date Start_date and End_date are the two dates between which you want to know the number of days.\n * @param {*} start_date Start_date and End_date are the two dates between which you want to know the number of days.\n * @returns\n */\nfunction DAYS(end_date, start_date) {\n end_date = parseDate(end_date);\n start_date = parseDate(start_date);\n\n if (end_date instanceof Error) {\n return end_date\n }\n\n if (start_date instanceof Error) {\n return start_date\n }\n\n return serial(startOfDay(end_date)) - serial(startOfDay(start_date))\n}\n\n/**\n * Calculates the number of days between two dates based on a 360-day year.\n *\n * Category: Date and time\n *\n * @param {*} start_date A date that represents the start date. If start_date occurs after end_date, the DAYS360 function returns a negative number.\n * @param {*} end_date A date that represents the end date.\n * @param {*} method Optional. A logical value that specifies whether to use the U.S. or European method in the calculation.\n * @returns\n */\nfunction DAYS360(start_date, end_date, method) {\n method = parseBool(method || 'false');\n start_date = parseDate(start_date);\n end_date = parseDate(end_date);\n\n if (start_date instanceof Error) {\n return start_date\n }\n\n if (end_date instanceof Error) {\n return end_date\n }\n\n if (method instanceof Error) {\n return method\n }\n\n const sm = start_date.getMonth();\n let em = end_date.getMonth();\n let sd, ed;\n\n if (method) {\n sd = start_date.getDate() === 31 ? 30 : start_date.getDate();\n ed = end_date.getDate() === 31 ? 30 : end_date.getDate();\n } else {\n const smd = new Date(start_date.getFullYear(), sm + 1, 0).getDate();\n const emd = new Date(end_date.getFullYear(), em + 1, 0).getDate();\n sd = start_date.getDate() === smd ? 30 : start_date.getDate();\n\n if (end_date.getDate() === emd) {\n if (sd < 30) {\n em++;\n ed = 1;\n } else {\n ed = 30;\n }\n } else {\n ed = end_date.getDate();\n }\n }\n\n return 360 * (end_date.getFullYear() - start_date.getFullYear()) + 30 * (em - sm) + (ed - sd)\n}\n\n/**\n * Returns the serial number of the date that is the indicated number of months before or after the start date.\n *\n * Category: Date and time\n *\n * @param {*} start_date A date that represents the start date.\n * @param {*} months The number of months before or after start_date. A positive value for months yields a future date; a negative value yields a past date.\n * @returns\n */\nfunction EDATE(start_date, months) {\n start_date = parseDate(start_date);\n\n if (start_date instanceof Error) {\n return start_date\n }\n\n if (isNaN(months)) {\n return value\n }\n\n // store the day and temporarily set to 1, which is safe\n let storedDay = start_date.getDate();\n start_date.setDate(1);\n\n months = parseInt(months, 10);\n start_date.setMonth(start_date.getMonth() + months);\n\n let targetMonth = start_date.getMonth();\n\n // if storedDay > 28 then we need to check end-of-month scenarios\n if (storedDay > 28) {\n let daysInTargetMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][targetMonth];\n\n // if target month is February, check for a leap year\n let targetYear = start_date.getFullYear();\n if (targetMonth === 1 && ((targetYear % 4 === 0 && targetYear % 100 !== 0) || targetYear % 400 === 0)) {\n daysInTargetMonth = 29;\n }\n storedDay = Math.min(storedDay, daysInTargetMonth);\n }\n\n start_date.setDate(storedDay);\n\n return start_date\n}\n\n/**\n * Returns the serial number of the last day of the month before or after a specified number of months.\n *\n * Category: Date and time\n *\n * @param {*} start_date A date that represents the starting date.\n * @param {*} months The number of months before or after start_date. A positive value for months yields a future date; a negative value yields a past date.\n * @returns\n */\nfunction EOMONTH(start_date, months) {\n start_date = parseDate(start_date);\n\n if (start_date instanceof Error) {\n return start_date\n }\n\n if (isNaN(months)) {\n return value\n }\n\n months = parseInt(months, 10);\n\n return new Date(start_date.getFullYear(), start_date.getMonth() + months + 1, 0)\n}\n\n/**\n * Converts a serial number to an hour.\n *\n * Category: Date and time\n *\n * @param {*} serial_number The time that contains the hour you want to find. Times may be entered as text strings within quotation marks (for example, \"6:45 PM\"), as decimal numbers (for example, 0.78125, which represents 6:45 PM), or as results of other formulas or functions (for example, TIMEVALUE(\"6:45 PM\")).\n * @returns\n */\nfunction HOUR(serial_number) {\n serial_number = parseDate(serial_number);\n\n if (serial_number instanceof Error) {\n return serial_number\n }\n\n return serial_number.getHours()\n}\n\n/**\n * Returns the number of the ISO week number of the year for a given date.\n *\n * Category: Date and time\n *\n * @param {*} date Date is the date-time code used by Excel for date and time calculation.\n * @returns\n */\nfunction ISOWEEKNUM(date) {\n date = parseDate(date);\n\n if (date instanceof Error) {\n return date\n }\n\n date = startOfDay(date);\n date.setDate(date.getDate() + 4 - (date.getDay() || 7));\n const yearStart = new Date(date.getFullYear(), 0, 1);\n\n return Math.ceil(((date - yearStart) / 86400000 + 1) / 7)\n}\n\n/**\n * Converts a serial number to a minute.\n *\n * Category: Date and time\n *\n * @param {*} serial_number The time that contains the minute you want to find. Times may be entered as text strings within quotation marks (for example, \"6:45 PM\"), as decimal numbers (for example, 0.78125, which represents 6:45 PM), or as results of other formulas or functions (for example, TIMEVALUE(\"6:45 PM\")).\n * @returns\n */\nfunction MINUTE(serial_number) {\n serial_number = parseDate(serial_number);\n\n if (serial_number instanceof Error) {\n return serial_number\n }\n\n return serial_number.getMinutes()\n}\n\n/**\n * Converts a serial number to a month.\n *\n * Category: Date and time\n *\n * @param {*} serial_number The date of the month you are trying to find.\n * @returns\n */\nfunction MONTH(serial_number) {\n serial_number = parseDate(serial_number);\n\n if (serial_number instanceof Error) {\n return serial_number\n }\n\n return serial_number.getMonth() + 1\n}\n\n/**\n * Returns the number of whole workdays between two dates.\n *\n * Category: Date and time\n *\n * @param {*} start_date A date that represents the start date.\n * @param {*} end_date A date that represents the end date.\n * @param {*} holidays Optional. An optional range of one or more dates to exclude from the working calendar, such as state and federal holidays and floating holidays. The list can be either a range of values that contains the dates or an array constant of the serial numbers that represent the dates.\n * @returns\n */\nfunction NETWORKDAYS(start_date, end_date, holidays) {\n return NETWORKDAYS.INTL(start_date, end_date, 1, holidays)\n}\n\n/**\n * Returns the number of whole workdays between two dates using parameters to indicate which and how many days are weekend days.\n *\n * Category: Date and time\n *\n * @param {*} start_date The date for from which the difference is to be computed. The start_date can be earlier than, the same as, or later than the end_date.\n * @param {*} end_date The date for to which the difference is to be computed.\n * @param {*} weekend Optional. Indicates the days of the week that are weekend days and are not included in the number of whole working days between start_date and end_date. Weekend is a weekend number or string that specifies when weekends occur. Weekend number values indicate the following weekend days:\n * @param {*} holidays Optional. An optional set of one or more dates that are to be excluded from the working day calendar. holidays shall be a range of values that contain the dates, or an array constant of the serial values that represent those dates. The ordering of dates or serial values in holidays can be arbitrary.\n * @returns\n */\nNETWORKDAYS.INTL = (start_date, end_date, weekend, holidays) => {\n start_date = parseDate(start_date);\n\n if (start_date instanceof Error) {\n return start_date\n }\n\n end_date = parseDate(end_date);\n\n if (end_date instanceof Error) {\n return end_date\n }\n\n let isMask = false;\n const maskDays = [];\n const maskIndex = [1, 2, 3, 4, 5, 6, 0];\n const maskRegex = new RegExp('^[0|1]{7}$');\n\n if (weekend === undefined) {\n weekend = WEEKEND_TYPES[1];\n } else if (typeof weekend === 'string' && maskRegex.test(weekend)) {\n isMask = true;\n weekend = weekend.split('');\n\n for (let i = 0; i < weekend.length; i++) {\n if (weekend[i] === '1') {\n maskDays.push(maskIndex[i]);\n }\n }\n } else {\n weekend = WEEKEND_TYPES[weekend];\n }\n\n if (!(weekend instanceof Array)) {\n return value\n }\n\n if (holidays === undefined) {\n holidays = [];\n } else if (!(holidays instanceof Array)) {\n holidays = [holidays];\n }\n\n for (let i = 0; i < holidays.length; i++) {\n const h = parseDate(holidays[i]);\n\n if (h instanceof Error) {\n return h\n }\n\n holidays[i] = h;\n }\n\n const days = Math.round((end_date - start_date) / (1000 * 60 * 60 * 24)) + 1;\n let total = days;\n const day = start_date;\n\n for (let i = 0; i < days; i++) {\n const d = new Date().getTimezoneOffset() > 0 ? day.getUTCDay() : day.getDay();\n let dec = isMask ? maskDays.includes(d) : d === weekend[0] || d === weekend[1];\n\n for (let j = 0; j < holidays.length; j++) {\n const holiday = holidays[j];\n\n if (\n holiday.getDate() === day.getDate() &&\n holiday.getMonth() === day.getMonth() &&\n holiday.getFullYear() === day.getFullYear()\n ) {\n dec = true;\n break\n }\n }\n\n if (dec) {\n total--;\n }\n\n day.setDate(day.getDate() + 1);\n }\n\n return total\n};\n\n/**\n * Returns the serial number of the current date and time.\n *\n * Category: Date and time\n *\n * @returns\n */\nfunction NOW() {\n return new Date()\n}\n\n/**\n * Converts a serial number to a second.\n *\n * Category: Date and time\n *\n * @param {*} serial_number The time that contains the seconds you want to find. Times may be entered as text strings within quotation marks (for example, \"6:45 PM\"), as decimal numbers (for example, 0.78125, which represents 6:45 PM), or as results of other formulas or functions (for example, TIMEVALUE(\"6:45 PM\")).\n * @returns\n */\nfunction SECOND(serial_number) {\n serial_number = parseDate(serial_number);\n\n if (serial_number instanceof Error) {\n return serial_number\n }\n\n return serial_number.getSeconds()\n}\n\n/**\n * Returns the serial number of a particular time.\n *\n * Category: Date and time\n *\n * @param {*} hour A number from 0 (zero) to 32767 representing the hour. Any value greater than 23 will be divided by 24 and the remainder will be treated as the hour value. For example, TIME(27,0,0) = TIME(3,0,0) = .125 or 3:00 AM.\n * @param {*} minute A number from 0 to 32767 representing the minute. Any value greater than 59 will be converted to hours and minutes. For example, TIME(0,750,0) = TIME(12,30,0) = .520833 or 12:30 PM.\n * @param {*} second A number from 0 to 32767 representing the second. Any value greater than 59 will be converted to hours, minutes, and seconds. For example, TIME(0,0,2000) = TIME(0,33,22) = .023148 or 12:33:20 AM\n * @returns\n */\nfunction TIME(hour, minute, second) {\n hour = parseNumber(hour);\n minute = parseNumber(minute);\n second = parseNumber(second);\n\n if (anyIsError(hour, minute, second)) {\n return value\n }\n\n if (hour < 0 || minute < 0 || second < 0) {\n return num\n }\n\n return (3600 * hour + 60 * minute + second) / 86400\n}\n\n/**\n * Converts a time in the form of text to a serial number.\n *\n * Category: Date and time\n *\n * @param {*} time_text A text string that represents a time in any one of the Microsoft Excel time formats; for example, \"6:45 PM\" and \"18:45\" text strings within quotation marks that represent time.\n * @returns\n */\nfunction TIMEVALUE(time_text) {\n time_text = parseDate(time_text);\n\n if (time_text instanceof Error) {\n return time_text\n }\n\n return (3600 * time_text.getHours() + 60 * time_text.getMinutes() + time_text.getSeconds()) / 86400\n}\n\n/**\n * Returns the serial number of today's date.\n *\n * Category: Date and time\n *\n * @returns\n */\nfunction TODAY() {\n return startOfDay(new Date())\n}\n\n/**\n * Converts a serial number to a day of the week.\n *\n * Category: Date and time\n *\n * @param {*} serial_number A sequential number that represents the date of the day you are trying to find.\n * @param {*} return_type Optional. A number that determines the type of return value.\n * @returns\n */\nfunction WEEKDAY(serial_number, return_type) {\n serial_number = parseDate(serial_number);\n\n if (serial_number instanceof Error) {\n return serial_number\n }\n\n if (return_type === undefined) {\n return_type = 1;\n }\n\n const day = serial_number.getDay();\n\n return WEEK_TYPES[return_type][day]\n}\n\n/**\n * Converts a serial number to a number representing where the week falls numerically with a year.\n *\n * Category: Date and time\n *\n * @param {*} serial_number A date within the week.\n * @param {*} return_type Optional. A number that determines on which day the week begins. The default is 1.\n * @returns\n */\nfunction WEEKNUM(serial_number, return_type) {\n serial_number = parseDate(serial_number);\n\n if (serial_number instanceof Error) {\n return serial_number\n }\n\n if (return_type === undefined) {\n return_type = 1;\n }\n\n if (return_type === 21) {\n return ISOWEEKNUM(serial_number)\n }\n\n const week_start = WEEK_STARTS[return_type];\n let jan = new Date(serial_number.getFullYear(), 0, 1);\n const inc = jan.getDay() < week_start ? 1 : 0;\n jan -= Math.abs(jan.getDay() - week_start) * 24 * 60 * 60 * 1000;\n\n return Math.floor((serial_number - jan) / (1000 * 60 * 60 * 24) / 7 + 1) + inc\n}\n\n/**\n * Returns the serial number of the date before or after a specified number of workdays.\n *\n * Category: Date and time\n *\n * @param {*} start_date A date that represents the start date.\n * @param {*} days The number of nonweekend and nonholiday days before or after start_date. A positive value for days yields a future date; a negative value yields a past date.\n * @param {*} holidays Optional. An optional list of one or more dates to exclude from the working calendar, such as state and federal holidays and floating holidays. The list can be either a range of values that contain the dates or an array constant of the serial numbers that represent the dates.\n * @returns\n */\nfunction WORKDAY(start_date, days, holidays) {\n return WORKDAY.INTL(start_date, days, 1, holidays)\n}\n\n/**\n * Returns the serial number of the date before or after a specified number of workdays using parameters to indicate which and how many days are weekend days.\n *\n * Category: Date and time\n *\n * @param {*} start_date The start date, truncated to integer.\n * @param {*} days The number of workdays before or after the start_date. A positive value yields a future date; a negative value yields a past date; a zero value yields the start_date. Day-offset is truncated to an integer.\n * @param {*} weekend Optional. Indicates the days of the week that are weekend days and are not considered working days. Weekend is a weekend number or string that specifies when weekends occur. Weekend number values indicate the following weekend days:\n * @param {*} holidays Optional. An optional set of one or more dates that are to be excluded from the working day calendar. Holidays shall be a range of values that contain the dates, or an array constant of the serial values that represent those dates. The ordering of dates or serial values in holidays can be arbitrary.\n * @returns\n */\nWORKDAY.INTL = (start_date, days, weekend, holidays) => {\n start_date = parseDate(start_date);\n\n if (start_date instanceof Error) {\n return start_date\n }\n\n days = parseNumber(days);\n\n if (days instanceof Error) {\n return days\n }\n\n if (weekend === undefined) {\n weekend = WEEKEND_TYPES[1];\n } else {\n weekend = WEEKEND_TYPES[weekend];\n }\n\n if (!(weekend instanceof Array)) {\n return value\n }\n\n if (holidays === undefined) {\n holidays = [];\n } else if (!(holidays instanceof Array)) {\n holidays = [holidays];\n }\n\n for (let i = 0; i < holidays.length; i++) {\n const h = parseDate(holidays[i]);\n\n if (h instanceof Error) {\n return h\n }\n\n holidays[i] = h;\n }\n\n let d = 0;\n\n const sign = Math.sign(days);\n\n while (d < days * sign) {\n start_date.setDate(start_date.getDate() + sign);\n\n const day = start_date.getDay();\n\n if (day === weekend[0] || day === weekend[1]) {\n continue\n }\n\n for (let j = 0; j < holidays.length; j++) {\n const holiday = holidays[j];\n\n if (\n holiday.getDate() === start_date.getDate() &&\n holiday.getMonth() === start_date.getMonth() &&\n holiday.getFullYear() === start_date.getFullYear()\n ) {\n d--;\n break\n }\n }\n\n d++;\n }\n\n // EXCEL does not recognize dates before 1900.\n if (start_date.getFullYear() < 1900) {\n return value\n }\n\n return start_date\n};\n\n/**\n * Converts a serial number to a year.\n *\n * Category: Date and time\n *\n * @param {*} serial_number The date of the year you want to find.\n * @returns\n */\nfunction YEAR(serial_number) {\n serial_number = parseDate(serial_number);\n\n if (serial_number instanceof Error) {\n return serial_number\n }\n\n return serial_number.getFullYear()\n}\n\nfunction isLeapYear(year) {\n return new Date(year, 1, 29).getMonth() === 1\n}\n\n// TODO : Use DAYS ?\nfunction daysBetween(start_date, end_date) {\n return Math.ceil((end_date - start_date) / 1000 / 60 / 60 / 24)\n}\n\n/**\n * Returns the year fraction representing the number of whole days between start_date and end_date.\n *\n * Category: Date and time\n *\n * @param {*} start_date A date that represents the start date.\n * @param {*} end_date A date that represents the end date.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction YEARFRAC(start_date, end_date, basis) {\n start_date = parseDate(start_date);\n\n if (start_date instanceof Error) {\n return start_date\n }\n\n end_date = parseDate(end_date);\n\n if (end_date instanceof Error) {\n return end_date\n }\n\n basis = basis || 0;\n let sd = start_date.getDate();\n const sm = start_date.getMonth() + 1;\n const sy = start_date.getFullYear();\n let ed = end_date.getDate();\n const em = end_date.getMonth() + 1;\n const ey = end_date.getFullYear();\n\n switch (basis) {\n case 0:\n // US (NASD) 30/360\n if (sd === 31 && ed === 31) {\n sd = 30;\n ed = 30;\n } else if (sd === 31) {\n sd = 30;\n } else if (sd === 30 && ed === 31) {\n ed = 30;\n }\n\n return (ed + em * 30 + ey * 360 - (sd + sm * 30 + sy * 360)) / 360\n case 1: {\n // Actual/actual\n const feb29Between = (date1, date2) => {\n const year1 = date1.getFullYear();\n const mar1year1 = new Date(year1, 2, 1);\n\n if (isLeapYear(year1) && date1 < mar1year1 && date2 >= mar1year1) {\n return true\n }\n\n const year2 = date2.getFullYear();\n const mar1year2 = new Date(year2, 2, 1);\n\n return isLeapYear(year2) && date2 >= mar1year2 && date1 < mar1year2\n };\n\n let ylength = 365;\n\n if (sy === ey || (sy + 1 === ey && (sm > em || (sm === em && sd >= ed)))) {\n if ((sy === ey && isLeapYear(sy)) || feb29Between(start_date, end_date) || (em === 1 && ed === 29)) {\n ylength = 366;\n }\n\n return daysBetween(start_date, end_date) / ylength\n }\n\n const years = ey - sy + 1;\n const days = (new Date(ey + 1, 0, 1) - new Date(sy, 0, 1)) / 1000 / 60 / 60 / 24;\n const average = days / years;\n\n return daysBetween(start_date, end_date) / average\n }\n\n case 2:\n // Actual/360\n\n return daysBetween(start_date, end_date) / 360\n case 3:\n // Actual/365\n\n return daysBetween(start_date, end_date) / 365\n case 4:\n // European 30/360\n\n return (ed + em * 30 + ey * 360 - (sd + sm * 30 + sy * 360)) / 360\n }\n}\n\nfunction serial(date) {\n const addOn = date > -2203891200000 ? 2 : 1;\n\n return Math.ceil((date - d1900) / 86400000) + addOn\n}\n\nfunction isValidBinaryNumber(number) {\n return /^[01]{1,10}$/.test(number)\n}\n\n/**\n * Returns the modified Bessel function In(x).\n *\n * Category: Engineering\n *\n * @param {*} x The value at which to evaluate the function.\n * @param {*} n The order of the Bessel function. If n is not an integer, it is truncated.\n * @returns\n */\nfunction BESSELI(x, n) {\n x = parseNumber(x);\n n = parseNumber(n);\n\n if (anyIsError(x, n)) {\n return value\n }\n\n return bessel.besseli(x, n)\n}\n\n/**\n * Returns the Bessel function Jn(x).\n *\n * Category: Engineering\n *\n * @param {*} x The value at which to evaluate the function.\n * @param {*} n The order of the Bessel function. If n is not an integer, it is truncated.\n * @returns\n */\nfunction BESSELJ(x, n) {\n x = parseNumber(x);\n n = parseNumber(n);\n\n if (anyIsError(x, n)) {\n return value\n }\n\n return bessel.besselj(x, n)\n}\n\n/**\n * Returns the modified Bessel function Kn(x).\n *\n * Category: Engineering\n *\n * @param {*} x The value at which to evaluate the function.\n * @param {*} n The order of the function. If n is not an integer, it is truncated.\n * @returns\n */\nfunction BESSELK(x, n) {\n x = parseNumber(x);\n n = parseNumber(n);\n\n if (anyIsError(x, n)) {\n return value\n }\n\n return bessel.besselk(x, n)\n}\n\n/**\n * Returns the Bessel function Yn(x).\n *\n * Category: Engineering\n *\n * @param {*} x The value at which to evaluate the function.\n * @param {*} n The order of the function. If n is not an integer, it is truncated.\n * @returns\n */\nfunction BESSELY(x, n) {\n x = parseNumber(x);\n n = parseNumber(n);\n\n if (anyIsError(x, n)) {\n return value\n }\n\n return bessel.bessely(x, n)\n}\n\n/**\n * Converts a binary number to decimal.\n *\n * Category: Engineering\n *\n * @param {*} number The binary number you want to convert. Number cannot contain more than 10 characters (10 bits). The most significant bit of number is the sign bit. The remaining 9 bits are magnitude bits. Negative numbers are represented using two's-complement notation.\n * @returns\n */\nfunction BIN2DEC(number) {\n // Return error if number is not binary or contains more than 10 characters (10 digits)\n if (!isValidBinaryNumber(number)) {\n return num\n }\n\n // Convert binary number to decimal\n const result = parseInt(number, 2);\n\n // Handle negative numbers\n const stringified = number.toString();\n\n if (stringified.length === 10 && stringified.substring(0, 1) === '1') {\n return parseInt(stringified.substring(1), 2) - 512\n } else {\n return result\n }\n}\n\n/**\n * Converts a binary number to hexadecimal.\n *\n * Category: Engineering\n *\n * @param {*} number The binary number you want to convert. Number cannot contain more than 10 characters (10 bits). The most significant bit of number is the sign bit. The remaining 9 bits are magnitude bits. Negative numbers are represented using two's-complement notation.\n * @param {*} places Optional. The number of characters to use. If places is omitted, BIN2HEX uses the minimum number of characters necessary. Places is useful for padding the return value with leading 0s (zeros).\n * @returns\n */\nfunction BIN2HEX(number, places) {\n // Return error if number is not binary or contains more than 10 characters (10 digits)\n if (!isValidBinaryNumber(number)) {\n return num\n }\n\n // Ignore places and return a 10-character hexadecimal number if number is negative\n const stringified = number.toString();\n\n if (stringified.length === 10 && stringified.substring(0, 1) === '1') {\n return (1099511627264 + parseInt(stringified.substring(1), 2)).toString(16)\n }\n\n // Convert binary number to hexadecimal\n const result = parseInt(number, 2).toString(16);\n\n // Return hexadecimal number using the minimum number of characters necessary if places is undefined\n if (places === undefined) {\n return result\n } else {\n // Return error if places is nonnumeric\n if (isNaN(places)) {\n return value\n }\n\n // Return error if places is negative\n if (places < 0) {\n return num\n }\n\n // Truncate places in case it is not an integer\n places = Math.floor(places);\n\n // Pad return value with leading 0s (zeros) if necessary (using Underscore.string)\n return places >= result.length ? REPT('0', places - result.length) + result : num\n }\n}\n\n/**\n * Converts a binary number to octal.\n *\n * Category: Engineering\n *\n * @param {*} number The binary number you want to convert. Number cannot contain more than 10 characters (10 bits). The most significant bit of number is the sign bit. The remaining 9 bits are magnitude bits. Negative numbers are represented using two's-complement notation.\n * @param {*} places Optional. The number of characters to use. If places is omitted, BIN2OCT uses the minimum number of characters necessary. Places is useful for padding the return value with leading 0s (zeros).\n * @returns\n */\nfunction BIN2OCT(number, places) {\n // Return error if number is not binary or contains more than 10 characters (10 digits)\n if (!isValidBinaryNumber(number)) {\n return num\n }\n\n // Ignore places and return a 10-character octal number if number is negative\n const stringified = number.toString();\n\n if (stringified.length === 10 && stringified.substring(0, 1) === '1') {\n return (1073741312 + parseInt(stringified.substring(1), 2)).toString(8)\n }\n\n // Convert binary number to octal\n const result = parseInt(number, 2).toString(8);\n\n // Return octal number using the minimum number of characters necessary if places is undefined\n if (places === undefined) {\n return result\n } else {\n // Return error if places is nonnumeric\n if (isNaN(places)) {\n return value\n }\n\n // Return error if places is negative\n if (places < 0) {\n return num\n }\n\n // Truncate places in case it is not an integer\n places = Math.floor(places);\n\n // Pad return value with leading 0s (zeros) if necessary (using Underscore.string)\n return places >= result.length ? REPT('0', places - result.length) + result : num\n }\n}\n\n/**\n * Returns a 'Bitwise And' of two numbers.\n *\n * Category: Engineering\n *\n * @param {*} number1 Must be in decimal form and greater than or equal to 0.\n * @param {*} number2 Must be in decimal form and greater than or equal to 0.\n * @returns\n */\nfunction BITAND(number1, number2) {\n // Return error if either number is a non-numeric value\n number1 = parseNumber(number1);\n number2 = parseNumber(number2);\n\n if (anyIsError(number1, number2)) {\n return value\n }\n\n // Return error if either number is less than 0\n if (number1 < 0 || number2 < 0) {\n return num\n }\n\n // Return error if either number is a non-integer\n if (Math.floor(number1) !== number1 || Math.floor(number2) !== number2) {\n return num\n }\n\n // Return error if either number is greater than (2^48)-1\n if (number1 > 281474976710655 || number2 > 281474976710655) {\n return num\n }\n\n // Return bitwise AND of two numbers\n return number1 & number2\n}\n\n/**\n * Returns a value number shifted left by shift_amount bits.\n *\n * Category: Engineering\n *\n * @param {*} number Number must be an integer greater than or equal to 0.\n * @param {*} shift_amount Shift_amount must be an integer.\n * @returns\n */\nfunction BITLSHIFT(number, shift_amount) {\n number = parseNumber(number);\n shift_amount = parseNumber(shift_amount);\n\n if (anyIsError(number, shift_amount)) {\n return value\n }\n\n // Return error if number is less than 0\n if (number < 0) {\n return num\n }\n\n // Return error if number is a non-integer\n if (Math.floor(number) !== number) {\n return num\n }\n\n // Return error if number is greater than (2^48)-1\n if (number > 281474976710655) {\n return num\n }\n\n // Return error if the absolute value of shift is greater than 53\n if (Math.abs(shift_amount) > 53) {\n return num\n }\n\n // Return number shifted by shift bits to the left or to the right if shift is negative\n return shift_amount >= 0 ? number << shift_amount : number >> -shift_amount\n}\n\n/**\n * Returns a bitwise OR of 2 numbers.\n *\n * Category: Engineering\n *\n * @param {*} number1 Must be in decimal form and greater than or equal to 0.\n * @param {*} number2 Must be in decimal form and greater than or equal to 0.\n * @returns\n */\nfunction BITOR(number1, number2) {\n number1 = parseNumber(number1);\n number2 = parseNumber(number2);\n\n if (anyIsError(number1, number2)) {\n return value\n }\n\n // Return error if either number is less than 0\n if (number1 < 0 || number2 < 0) {\n return num\n }\n\n // Return error if either number is a non-integer\n if (Math.floor(number1) !== number1 || Math.floor(number2) !== number2) {\n return num\n }\n\n // Return error if either number is greater than (2^48)-1\n if (number1 > 281474976710655 || number2 > 281474976710655) {\n return num\n }\n\n // Return bitwise OR of two numbers\n return number1 | number2\n}\n\n/**\n * Returns a value number shifted right by shift_amount bits.\n *\n * Category: Engineering\n *\n * @param {*} number Must be an integer greater than or equal to 0.\n * @param {*} shift_amount Must be an integer.\n * @returns\n */\nfunction BITRSHIFT(number, shift_amount) {\n number = parseNumber(number);\n shift_amount = parseNumber(shift_amount);\n\n if (anyIsError(number, shift_amount)) {\n return value\n }\n\n // Return error if number is less than 0\n if (number < 0) {\n return num\n }\n\n // Return error if number is a non-integer\n if (Math.floor(number) !== number) {\n return num\n }\n\n // Return error if number is greater than (2^48)-1\n if (number > 281474976710655) {\n return num\n }\n\n // Return error if the absolute value of shift is greater than 53\n if (Math.abs(shift_amount) > 53) {\n return num\n }\n\n // Return number shifted by shift bits to the right or to the left if shift is negative\n return shift_amount >= 0 ? number >> shift_amount : number << -shift_amount\n}\n\n/**\n * Returns a bitwise 'Exclusive Or' of two numbers.\n *\n * Category: Engineering\n *\n * @param {*} number1 Must be greater than or equal to 0.\n * @param {*} number2 Must be greater than or equal to 0.\n * @returns\n */\nfunction BITXOR(number1, number2) {\n number1 = parseNumber(number1);\n number2 = parseNumber(number2);\n\n if (anyIsError(number1, number2)) {\n return value\n }\n\n // Return error if either number is less than 0\n if (number1 < 0 || number2 < 0) {\n return num\n }\n\n // Return error if either number is a non-integer\n if (Math.floor(number1) !== number1 || Math.floor(number2) !== number2) {\n return num\n }\n\n // Return error if either number is greater than (2^48)-1\n if (number1 > 281474976710655 || number2 > 281474976710655) {\n return num\n }\n\n // Return bitwise XOR of two numbers\n return number1 ^ number2\n}\n\n/**\n * Converts real and imaginary coefficients into a complex number.\n *\n * Category: Engineering\n *\n * @param {*} real_num The real coefficient of the complex number.\n * @param {*} i_num The imaginary coefficient of the complex number.\n * @param {*} suffix Optional. The suffix for the imaginary component of the complex number. If omitted, suffix is assumed to be \"i\".\n * @returns\n */\nfunction COMPLEX(real_num, i_num, suffix) {\n real_num = parseNumber(real_num);\n i_num = parseNumber(i_num);\n\n if (anyIsError(real_num, i_num)) {\n return real_num\n }\n\n // Set suffix\n suffix = suffix === undefined ? 'i' : suffix;\n\n // Return error if suffix is neither \"i\" nor \"j\"\n if (suffix !== 'i' && suffix !== 'j') {\n return value\n }\n\n // Return complex number\n if (real_num === 0 && i_num === 0) {\n return 0\n } else if (real_num === 0) {\n return i_num === 1 ? suffix : i_num.toString() + suffix\n } else if (i_num === 0) {\n return real_num.toString()\n } else {\n const sign = i_num > 0 ? '+' : '';\n return real_num.toString() + sign + (i_num === 1 ? suffix : i_num.toString() + suffix)\n }\n}\n\n/**\n * Converts a number from one measurement system to another.\n *\n * Category: Engineering\n *\n * @param {*} number is the value in from_units to convert.\n * @param {*} from_unit is the units for number.\n * @param {*} to_unit is the units for the result. CONVERT accepts the following text values (in quotation marks) for from_unit and to_unit.\n * @returns\n */\nfunction CONVERT(number, from_unit, to_unit) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n // List of units supported by CONVERT and units defined by the International System of Units\n // [Name, Symbol, Alternate symbols, Quantity, ISU, CONVERT, Conversion ratio]\n const units = [\n ['a.u. of action', '?', null, 'action', false, false, 1.05457168181818e-34],\n ['a.u. of charge', 'e', null, 'electric_charge', false, false, 1.60217653141414e-19],\n ['a.u. of energy', 'Eh', null, 'energy', false, false, 4.35974417757576e-18],\n ['a.u. of length', 'a?', null, 'length', false, false, 5.29177210818182e-11],\n ['a.u. of mass', 'm?', null, 'mass', false, false, 9.10938261616162e-31],\n ['a.u. of time', '?/Eh', null, 'time', false, false, 2.41888432650516e-17],\n ['admiralty knot', 'admkn', null, 'speed', false, true, 0.514773333],\n ['ampere', 'A', null, 'electric_current', true, false, 1],\n ['ampere per meter', 'A/m', null, 'magnetic_field_intensity', true, false, 1],\n ['\u00E5ngstr\u00F6m', '\u00C5', ['ang'], 'length', false, true, 1e-10],\n ['are', 'ar', null, 'area', false, true, 100],\n ['astronomical unit', 'ua', null, 'length', false, false, 1.49597870691667e-11],\n ['bar', 'bar', null, 'pressure', false, false, 100000],\n ['barn', 'b', null, 'area', false, false, 1e-28],\n ['becquerel', 'Bq', null, 'radioactivity', true, false, 1],\n ['bit', 'bit', ['b'], 'information', false, true, 1],\n ['btu', 'BTU', ['btu'], 'energy', false, true, 1055.05585262],\n ['byte', 'byte', null, 'information', false, true, 8],\n ['candela', 'cd', null, 'luminous_intensity', true, false, 1],\n ['candela per square metre', 'cd/m?', null, 'luminance', true, false, 1],\n ['coulomb', 'C', null, 'electric_charge', true, false, 1],\n ['cubic \u00E5ngstr\u00F6m', 'ang3', ['ang^3'], 'volume', false, true, 1e-30],\n ['cubic foot', 'ft3', ['ft^3'], 'volume', false, true, 0.028316846592],\n ['cubic inch', 'in3', ['in^3'], 'volume', false, true, 0.000016387064],\n ['cubic light-year', 'ly3', ['ly^3'], 'volume', false, true, 8.46786664623715e-47],\n ['cubic metre', 'm3', ['m^3'], 'volume', true, true, 1],\n ['cubic mile', 'mi3', ['mi^3'], 'volume', false, true, 4168181825.44058],\n ['cubic nautical mile', 'Nmi3', ['Nmi^3'], 'volume', false, true, 6352182208],\n ['cubic Pica', 'Pica3', ['Picapt3', 'Pica^3', 'Picapt^3'], 'volume', false, true, 7.58660370370369e-8],\n ['cubic yard', 'yd3', ['yd^3'], 'volume', false, true, 0.764554857984],\n ['cup', 'cup', null, 'volume', false, true, 0.0002365882365],\n ['dalton', 'Da', ['u'], 'mass', false, false, 1.66053886282828e-27],\n ['day', 'd', ['day'], 'time', false, true, 86400],\n ['degree', '\u00B0', null, 'angle', false, false, 0.0174532925199433],\n ['degrees Rankine', 'Rank', null, 'temperature', false, true, 0.555555555555556],\n ['dyne', 'dyn', ['dy'], 'force', false, true, 0.00001],\n ['electronvolt', 'eV', ['ev'], 'energy', false, true, 1.60217656514141],\n ['ell', 'ell', null, 'length', false, true, 1.143],\n ['erg', 'erg', ['e'], 'energy', false, true, 1e-7],\n ['farad', 'F', null, 'electric_capacitance', true, false, 1],\n ['fluid ounce', 'oz', null, 'volume', false, true, 0.0000295735295625],\n ['foot', 'ft', null, 'length', false, true, 0.3048],\n ['foot-pound', 'flb', null, 'energy', false, true, 1.3558179483314],\n ['gal', 'Gal', null, 'acceleration', false, false, 0.01],\n ['gallon', 'gal', null, 'volume', false, true, 0.003785411784],\n ['gauss', 'G', ['ga'], 'magnetic_flux_density', false, true, 1],\n ['grain', 'grain', null, 'mass', false, true, 0.0000647989],\n ['gram', 'g', null, 'mass', false, true, 0.001],\n ['gray', 'Gy', null, 'absorbed_dose', true, false, 1],\n ['gross registered ton', 'GRT', ['regton'], 'volume', false, true, 2.8316846592],\n ['hectare', 'ha', null, 'area', false, true, 10000],\n ['henry', 'H', null, 'inductance', true, false, 1],\n ['hertz', 'Hz', null, 'frequency', true, false, 1],\n ['horsepower', 'HP', ['h'], 'power', false, true, 745.69987158227],\n ['horsepower-hour', 'HPh', ['hh', 'hph'], 'energy', false, true, 2684519.538],\n ['hour', 'h', ['hr'], 'time', false, true, 3600],\n ['imperial gallon (U.K.)', 'uk_gal', null, 'volume', false, true, 0.00454609],\n ['imperial hundredweight', 'lcwt', ['uk_cwt', 'hweight'], 'mass', false, true, 50.802345],\n ['imperial quart (U.K)', 'uk_qt', null, 'volume', false, true, 0.0011365225],\n ['imperial ton', 'brton', ['uk_ton', 'LTON'], 'mass', false, true, 1016.046909],\n ['inch', 'in', null, 'length', false, true, 0.0254],\n ['international acre', 'uk_acre', null, 'area', false, true, 4046.8564224],\n ['IT calorie', 'cal', null, 'energy', false, true, 4.1868],\n ['joule', 'J', null, 'energy', true, true, 1],\n ['katal', 'kat', null, 'catalytic_activity', true, false, 1],\n ['kelvin', 'K', ['kel'], 'temperature', true, true, 1],\n ['kilogram', 'kg', null, 'mass', true, true, 1],\n ['knot', 'kn', null, 'speed', false, true, 0.514444444444444],\n ['light-year', 'ly', null, 'length', false, true, 9460730472580800],\n ['litre', 'L', ['l', 'lt'], 'volume', false, true, 0.001],\n ['lumen', 'lm', null, 'luminous_flux', true, false, 1],\n ['lux', 'lx', null, 'illuminance', true, false, 1],\n ['maxwell', 'Mx', null, 'magnetic_flux', false, false, 1e-18],\n ['measurement ton', 'MTON', null, 'volume', false, true, 1.13267386368],\n ['meter per hour', 'm/h', ['m/hr'], 'speed', false, true, 0.00027777777777778],\n ['meter per second', 'm/s', ['m/sec'], 'speed', true, true, 1],\n ['meter per second squared', 'm?s??', null, 'acceleration', true, false, 1],\n ['parsec', 'pc', ['parsec'], 'length', false, true, 30856775814671900],\n ['meter squared per second', 'm?/s', null, 'kinematic_viscosity', true, false, 1],\n ['metre', 'm', null, 'length', true, true, 1],\n ['miles per hour', 'mph', null, 'speed', false, true, 0.44704],\n ['millimetre of mercury', 'mmHg', null, 'pressure', false, false, 133.322],\n ['minute', '?', null, 'angle', false, false, 0.000290888208665722],\n ['minute', 'min', ['mn'], 'time', false, true, 60],\n ['modern teaspoon', 'tspm', null, 'volume', false, true, 0.000005],\n ['mole', 'mol', null, 'amount_of_substance', true, false, 1],\n ['morgen', 'Morgen', null, 'area', false, true, 2500],\n ['n.u. of action', '?', null, 'action', false, false, 1.05457168181818e-34],\n ['n.u. of mass', 'm?', null, 'mass', false, false, 9.10938261616162e-31],\n ['n.u. of speed', 'c?', null, 'speed', false, false, 299792458],\n ['n.u. of time', '?/(me?c??)', null, 'time', false, false, 1.28808866778687e-21],\n ['nautical mile', 'M', ['Nmi'], 'length', false, true, 1852],\n ['newton', 'N', null, 'force', true, true, 1],\n ['\u0153rsted', 'Oe ', null, 'magnetic_field_intensity', false, false, 79.5774715459477],\n ['ohm', '\u03A9', null, 'electric_resistance', true, false, 1],\n ['ounce mass', 'ozm', null, 'mass', false, true, 0.028349523125],\n ['pascal', 'Pa', null, 'pressure', true, false, 1],\n ['pascal second', 'Pa?s', null, 'dynamic_viscosity', true, false, 1],\n ['pferdest\u00E4rke', 'PS', null, 'power', false, true, 735.49875],\n ['phot', 'ph', null, 'illuminance', false, false, 0.0001],\n ['pica (1/6 inch)', 'pica', null, 'length', false, true, 0.00035277777777778],\n ['pica (1/72 inch)', 'Pica', ['Picapt'], 'length', false, true, 0.00423333333333333],\n ['poise', 'P', null, 'dynamic_viscosity', false, false, 0.1],\n ['pond', 'pond', null, 'force', false, true, 0.00980665],\n ['pound force', 'lbf', null, 'force', false, true, 4.4482216152605],\n ['pound mass', 'lbm', null, 'mass', false, true, 0.45359237],\n ['quart', 'qt', null, 'volume', false, true, 0.000946352946],\n ['radian', 'rad', null, 'angle', true, false, 1],\n ['second', '?', null, 'angle', false, false, 0.00000484813681109536],\n ['second', 's', ['sec'], 'time', true, true, 1],\n ['short hundredweight', 'cwt', ['shweight'], 'mass', false, true, 45.359237],\n ['siemens', 'S', null, 'electrical_conductance', true, false, 1],\n ['sievert', 'Sv', null, 'equivalent_dose', true, false, 1],\n ['slug', 'sg', null, 'mass', false, true, 14.59390294],\n ['square \u00E5ngstr\u00F6m', 'ang2', ['ang^2'], 'area', false, true, 1e-20],\n ['square foot', 'ft2', ['ft^2'], 'area', false, true, 0.09290304],\n ['square inch', 'in2', ['in^2'], 'area', false, true, 0.00064516],\n ['square light-year', 'ly2', ['ly^2'], 'area', false, true, 8.95054210748189e31],\n ['square meter', 'm?', null, 'area', true, true, 1],\n ['square mile', 'mi2', ['mi^2'], 'area', false, true, 2589988.110336],\n ['square nautical mile', 'Nmi2', ['Nmi^2'], 'area', false, true, 3429904],\n ['square Pica', 'Pica2', ['Picapt2', 'Pica^2', 'Picapt^2'], 'area', false, true, 0.00001792111111111],\n ['square yard', 'yd2', ['yd^2'], 'area', false, true, 0.83612736],\n ['statute mile', 'mi', null, 'length', false, true, 1609.344],\n ['steradian', 'sr', null, 'solid_angle', true, false, 1],\n ['stilb', 'sb', null, 'luminance', false, false, 0.0001],\n ['stokes', 'St', null, 'kinematic_viscosity', false, false, 0.0001],\n ['stone', 'stone', null, 'mass', false, true, 6.35029318],\n ['tablespoon', 'tbs', null, 'volume', false, true, 0.0000147868],\n ['teaspoon', 'tsp', null, 'volume', false, true, 0.00000492892],\n ['tesla', 'T', null, 'magnetic_flux_density', true, true, 1],\n ['thermodynamic calorie', 'c', null, 'energy', false, true, 4.184],\n ['ton', 'ton', null, 'mass', false, true, 907.18474],\n ['tonne', 't', null, 'mass', false, false, 1000],\n ['U.K. pint', 'uk_pt', null, 'volume', false, true, 0.00056826125],\n ['U.S. bushel', 'bushel', null, 'volume', false, true, 0.03523907],\n ['U.S. oil barrel', 'barrel', null, 'volume', false, true, 0.158987295],\n ['U.S. pint', 'pt', ['us_pt'], 'volume', false, true, 0.000473176473],\n ['U.S. survey mile', 'survey_mi', null, 'length', false, true, 1609.347219],\n ['U.S. survey/statute acre', 'us_acre', null, 'area', false, true, 4046.87261],\n ['volt', 'V', null, 'voltage', true, false, 1],\n ['watt', 'W', null, 'power', true, true, 1],\n ['watt-hour', 'Wh', ['wh'], 'energy', false, true, 3600],\n ['weber', 'Wb', null, 'magnetic_flux', true, false, 1],\n ['yard', 'yd', null, 'length', false, true, 0.9144],\n ['year', 'yr', null, 'time', false, true, 31557600]\n ];\n\n // Binary prefixes\n // [Name, Prefix power of 2 value, Previx value, Abbreviation, Derived from]\n const binary_prefixes = {\n Yi: ['yobi', 80, 1208925819614629174706176, 'Yi', 'yotta'],\n Zi: ['zebi', 70, 1180591620717411303424, 'Zi', 'zetta'],\n Ei: ['exbi', 60, 1152921504606846976, 'Ei', 'exa'],\n Pi: ['pebi', 50, 1125899906842624, 'Pi', 'peta'],\n Ti: ['tebi', 40, 1099511627776, 'Ti', 'tera'],\n Gi: ['gibi', 30, 1073741824, 'Gi', 'giga'],\n Mi: ['mebi', 20, 1048576, 'Mi', 'mega'],\n ki: ['kibi', 10, 1024, 'ki', 'kilo']\n };\n\n // Unit prefixes\n // [Name, Multiplier, Abbreviation]\n const unit_prefixes = {\n Y: ['yotta', 1e24, 'Y'],\n Z: ['zetta', 1e21, 'Z'],\n E: ['exa', 1e18, 'E'],\n P: ['peta', 1e15, 'P'],\n T: ['tera', 1e12, 'T'],\n G: ['giga', 1e9, 'G'],\n M: ['mega', 1e6, 'M'],\n k: ['kilo', 1e3, 'k'],\n h: ['hecto', 1e2, 'h'],\n e: ['dekao', 1e1, 'e'],\n d: ['deci', 1e-1, 'd'],\n c: ['centi', 1e-2, 'c'],\n m: ['milli', 1e-3, 'm'],\n u: ['micro', 1e-6, 'u'],\n n: ['nano', 1e-9, 'n'],\n p: ['pico', 1e-12, 'p'],\n f: ['femto', 1e-15, 'f'],\n a: ['atto', 1e-18, 'a'],\n z: ['zepto', 1e-21, 'z'],\n y: ['yocto', 1e-24, 'y']\n };\n\n // Initialize units and multipliers\n let from = null;\n let to = null;\n let base_from_unit = from_unit;\n let base_to_unit = to_unit;\n let from_multiplier = 1;\n let to_multiplier = 1;\n let alt;\n\n // Lookup from and to units\n for (let i = 0; i < units.length; i++) {\n alt = units[i][2] === null ? [] : units[i][2];\n\n if (units[i][1] === base_from_unit || alt.indexOf(base_from_unit) >= 0) {\n from = units[i];\n }\n\n if (units[i][1] === base_to_unit || alt.indexOf(base_to_unit) >= 0) {\n to = units[i];\n }\n }\n\n // Lookup from prefix\n if (from === null) {\n const from_binary_prefix = binary_prefixes[from_unit.substring(0, 2)];\n let from_unit_prefix = unit_prefixes[from_unit.substring(0, 1)];\n\n // Handle dekao unit prefix (only unit prefix with two characters)\n if (from_unit.substring(0, 2) === 'da') {\n from_unit_prefix = ['dekao', 1e1, 'da'];\n }\n\n // Handle binary prefixes first (so that 'Yi' is processed before 'Y')\n if (from_binary_prefix) {\n from_multiplier = from_binary_prefix[2];\n base_from_unit = from_unit.substring(2);\n } else if (from_unit_prefix) {\n from_multiplier = from_unit_prefix[1];\n base_from_unit = from_unit.substring(from_unit_prefix[2].length);\n }\n\n // Lookup from unit\n for (let j = 0; j < units.length; j++) {\n alt = units[j][2] === null ? [] : units[j][2];\n\n if (units[j][1] === base_from_unit || alt.indexOf(base_from_unit) >= 0) {\n from = units[j];\n }\n }\n }\n\n // Lookup to prefix\n if (to === null) {\n const to_binary_prefix = binary_prefixes[to_unit.substring(0, 2)];\n let to_unit_prefix = unit_prefixes[to_unit.substring(0, 1)];\n\n // Handle dekao unit prefix (only unit prefix with two characters)\n if (to_unit.substring(0, 2) === 'da') {\n to_unit_prefix = ['dekao', 1e1, 'da'];\n }\n\n // Handle binary prefixes first (so that 'Yi' is processed before 'Y')\n if (to_binary_prefix) {\n to_multiplier = to_binary_prefix[2];\n base_to_unit = to_unit.substring(2);\n } else if (to_unit_prefix) {\n to_multiplier = to_unit_prefix[1];\n base_to_unit = to_unit.substring(to_unit_prefix[2].length);\n }\n\n // Lookup to unit\n for (let k = 0; k < units.length; k++) {\n alt = units[k][2] === null ? [] : units[k][2];\n\n if (units[k][1] === base_to_unit || alt.indexOf(base_to_unit) >= 0) {\n to = units[k];\n }\n }\n }\n\n // Return error if a unit does not exist\n if (from === null || to === null) {\n return na\n }\n\n // Return error if units represent different quantities\n if (from[3] !== to[3]) {\n return na\n }\n\n // Return converted number\n return (number * from[6] * from_multiplier) / (to[6] * to_multiplier)\n}\n\n/**\n * Converts a decimal number to binary.\n *\n * Category: Engineering\n *\n * @param {*} number The decimal integer you want to convert. If number is negative, valid place values are ignored and DEC2BIN returns a 10-character (10-bit) binary number in which the most significant bit is the sign bit. The remaining 9 bits are magnitude bits. Negative numbers are represented using two's-complement notation.\n * @param {*} places Optional. The number of characters to use. If places is omitted, DEC2BIN uses the minimum number of characters necessary. Places is useful for padding the return value with leading 0s (zeros).\n * @returns\n */\nfunction DEC2BIN(number, places) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n // Return error if number is not decimal, is lower than -512, or is greater than 511\n if (!/^-?[0-9]{1,3}$/.test(number) || number < -512 || number > 511) {\n return num\n }\n\n // Ignore places and return a 10-character binary number if number is negative\n if (number < 0) {\n return '1' + REPT('0', 9 - (512 + number).toString(2).length) + (512 + number).toString(2)\n }\n\n // Convert decimal number to binary\n const result = parseInt(number, 10).toString(2);\n\n // Return binary number using the minimum number of characters necessary if places is undefined\n if (typeof places === 'undefined') {\n return result\n } else {\n // Return error if places is nonnumeric\n if (isNaN(places)) {\n return value\n }\n\n // Return error if places is negative\n if (places < 0) {\n return num\n }\n\n // Truncate places in case it is not an integer\n places = Math.floor(places);\n\n // Pad return value with leading 0s (zeros) if necessary (using Underscore.string)\n return places >= result.length ? REPT('0', places - result.length) + result : num\n }\n}\n\n/**\n * Converts a decimal number to hexadecimal.\n *\n * Category: Engineering\n *\n * @param {*} number The decimal integer you want to convert. If number is negative, places is ignored and DEC2HEX returns a 10-character (40-bit) hexadecimal number in which the most significant bit is the sign bit. The remaining 39 bits are magnitude bits. Negative numbers are represented using two's-complement notation.\n * @param {*} places Optional. The number of characters to use. If places is omitted, DEC2HEX uses the minimum number of characters necessary. Places is useful for padding the return value with leading 0s (zeros).\n * @returns\n */\nfunction DEC2HEX(number, places) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n // Return error if number is not decimal, is lower than -549755813888, or is greater than 549755813887\n if (!/^-?[0-9]{1,12}$/.test(number) || number < -549755813888 || number > 549755813887) {\n return num\n }\n\n // Ignore places and return a 10-character hexadecimal number if number is negative\n if (number < 0) {\n return (1099511627776 + number).toString(16)\n }\n\n // Convert decimal number to hexadecimal\n const result = parseInt(number, 10).toString(16);\n\n // Return hexadecimal number using the minimum number of characters necessary if places is undefined\n if (typeof places === 'undefined') {\n return result\n } else {\n // Return error if places is nonnumeric\n if (isNaN(places)) {\n return value\n }\n\n // Return error if places is negative\n if (places < 0) {\n return num\n }\n\n // Truncate places in case it is not an integer\n places = Math.floor(places);\n\n // Pad return value with leading 0s (zeros) if necessary (using Underscore.string)\n return places >= result.length ? REPT('0', places - result.length) + result : num\n }\n}\n\n/**\n * Converts a decimal number to octal.\n *\n * Category: Engineering\n *\n * @param {*} number The decimal integer you want to convert. If number is negative, places is ignored and DEC2OCT returns a 10-character (30-bit) octal number in which the most significant bit is the sign bit. The remaining 29 bits are magnitude bits. Negative numbers are represented using two's-complement notation.\n * @param {*} places Optional. The number of characters to use. If places is omitted, DEC2OCT uses the minimum number of characters necessary. Places is useful for padding the return value with leading 0s (zeros).\n * @returns\n */\nfunction DEC2OCT(number, places) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n // Return error if number is not decimal, is lower than -549755813888, or is greater than 549755813887\n if (!/^-?[0-9]{1,9}$/.test(number) || number < -536870912 || number > 536870911) {\n return num\n }\n\n // Ignore places and return a 10-character octal number if number is negative\n if (number < 0) {\n return (1073741824 + number).toString(8)\n }\n\n // Convert decimal number to octal\n const result = parseInt(number, 10).toString(8);\n\n // Return octal number using the minimum number of characters necessary if places is undefined\n if (typeof places === 'undefined') {\n return result\n } else {\n // Return error if places is nonnumeric\n if (isNaN(places)) {\n return value\n }\n\n // Return error if places is negative\n if (places < 0) {\n return num\n }\n\n // Truncate places in case it is not an integer\n places = Math.floor(places);\n\n // Pad return value with leading 0s (zeros) if necessary (using Underscore.string)\n return places >= result.length ? REPT('0', places - result.length) + result : num\n }\n}\n\n/**\n * Tests whether two values are equal.\n *\n * Category: Engineering\n *\n * @param {*} number1 The first number.\n * @param {*} number2 Optional. The second number. If omitted, number2 is assumed to be zero.\n * @returns\n */\nfunction DELTA(number1, number2) {\n // Set number2 to zero if undefined\n number2 = number2 === undefined ? 0 : number2;\n number1 = parseNumber(number1);\n number2 = parseNumber(number2);\n\n if (anyIsError(number1, number2)) {\n return value\n }\n\n // Return delta\n return number1 === number2 ? 1 : 0\n}\n\n// TODO: why is upper_bound not used ? The excel documentation has no examples with upper_bound\n/**\n * Returns the error function.\n *\n * Category: Engineering\n *\n * @param {*} lower_limit The lower bound for integrating ERF.\n * @param {*} upper_limit Optional. The upper bound for integrating ERF. If omitted, ERF integrates between zero and lower_limit.\n * @returns\n */\nfunction ERF(lower_limit, upper_limit) {\n // Set number2 to zero if undefined\n upper_limit = upper_limit === undefined ? 0 : upper_limit;\n\n lower_limit = parseNumber(lower_limit);\n upper_limit = parseNumber(upper_limit);\n\n if (anyIsError(lower_limit, upper_limit)) {\n return value\n }\n\n return jStat.erf(lower_limit)\n}\n\n// TODO\n\n/**\n * -- Not implemented --\n *\n * Returns the error function.\n *\n * Category: Engineering\n *\n * @param {*} x The lower bound for integrating ERF.PRECISE.\n * @returns\n */\nERF.PRECISE = () => {\n throw new Error('ERF.PRECISE is not implemented')\n};\n\n/**\n * Returns the complementary error function.\n *\n * Category: Engineering\n *\n * @param {*} x The lower bound for integrating ERFC.\n * @returns\n */\nfunction ERFC(x) {\n // Return error if x is not a number\n if (isNaN(x)) {\n return value\n }\n\n return jStat.erfc(x)\n}\n\n// TODO\n\n/**\n * -- Not implemented --\n *\n * Returns the complementary ERF function integrated between x and infinity.\n *\n * Category: Engineering\n *\n * @param {*} x The lower bound for integrating ERFC.PRECISE.\n * @returns\n */\nERFC.PRECISE = () => {\n throw new Error('ERFC.PRECISE is not implemented')\n};\n\n/**\n * Tests whether a number is greater than a threshold value.\n *\n * Category: Engineering\n *\n * @param {*} number The value to test against step.\n * @param {*} step Optional. The threshold value. If you omit a value for step, GESTEP uses zero.\n * @returns\n */\nfunction GESTEP(number, step) {\n step = step || 0;\n number = parseNumber(number);\n\n if (anyIsError(step, number)) {\n return number\n }\n\n // Return delta\n return number >= step ? 1 : 0\n}\n\n/**\n * Converts a hexadecimal number to binary.\n *\n * Category: Engineering\n *\n * @param {*} number The hexadecimal number you want to convert. Number cannot contain more than 10 characters. The most significant bit of number is the sign bit (40th bit from the right). The remaining 9 bits are magnitude bits. Negative numbers are represented using two's-complement notation.\n * @param {*} places Optional. The number of characters to use. If places is omitted, HEX2BIN uses the minimum number of characters necessary. Places is useful for padding the return value with leading 0s (zeros).\n * @returns\n */\nfunction HEX2BIN(number, places) {\n // Return error if number is not hexadecimal or contains more than ten characters (10 digits)\n if (!/^[0-9A-Fa-f]{1,10}$/.test(number)) {\n return num\n }\n\n // Check if number is negative\n const negative = !!(number.length === 10 && number.substring(0, 1).toLowerCase() === 'f');\n\n // Convert hexadecimal number to decimal\n const decimal = negative ? parseInt(number, 16) - 1099511627776 : parseInt(number, 16);\n\n // Return error if number is lower than -512 or greater than 511\n if (decimal < -512 || decimal > 511) {\n return num\n }\n\n // Ignore places and return a 10-character binary number if number is negative\n if (negative) {\n return '1' + REPT('0', 9 - (512 + decimal).toString(2).length) + (512 + decimal).toString(2)\n }\n\n // Convert decimal number to binary\n const result = decimal.toString(2);\n\n // Return binary number using the minimum number of characters necessary if places is undefined\n if (places === undefined) {\n return result\n } else {\n // Return error if places is nonnumeric\n if (isNaN(places)) {\n return value\n }\n\n // Return error if places is negative\n if (places < 0) {\n return num\n }\n\n // Truncate places in case it is not an integer\n places = Math.floor(places);\n\n // Pad return value with leading 0s (zeros) if necessary (using Underscore.string)\n return places >= result.length ? REPT('0', places - result.length) + result : num\n }\n}\n\n/**\n * Converts a hexadecimal number to decimal.\n *\n * Category: Engineering\n *\n * @param {*} number The hexadecimal number you want to convert. Number cannot contain more than 10 characters (40 bits). The most significant bit of number is the sign bit. The remaining 39 bits are magnitude bits. Negative numbers are represented using two's-complement notation.\n * @returns\n */\nfunction HEX2DEC(number) {\n // Return error if number is not hexadecimal or contains more than ten characters (10 digits)\n if (!/^[0-9A-Fa-f]{1,10}$/.test(number)) {\n return num\n }\n\n // Convert hexadecimal number to decimal\n const decimal = parseInt(number, 16);\n\n // Return decimal number\n return decimal >= 549755813888 ? decimal - 1099511627776 : decimal\n}\n\n/**\n * Converts a hexadecimal number to octal.\n *\n * Category: Engineering\n *\n * @param {*} number The hexadecimal number you want to convert. Number cannot contain more than 10 characters. The most significant bit of number is the sign bit. The remaining 39 bits are magnitude bits. Negative numbers are represented using two's-complement notation.\n * @param {*} places Optional. The number of characters to use. If places is omitted, HEX2OCT uses the minimum number of characters necessary. Places is useful for padding the return value with leading 0s (zeros).\n * @returns\n */\nfunction HEX2OCT(number, places) {\n // Return error if number is not hexadecimal or contains more than ten characters (10 digits)\n if (!/^[0-9A-Fa-f]{1,10}$/.test(number)) {\n return num\n }\n\n // Convert hexadecimal number to decimal\n const decimal = parseInt(number, 16);\n\n // Return error if number is positive and greater than 0x1fffffff (536870911)\n if (decimal > 536870911 && decimal < 1098974756864) {\n return num\n }\n\n // Ignore places and return a 10-character octal number if number is negative\n if (decimal >= 1098974756864) {\n return (decimal - 1098437885952).toString(8)\n }\n\n // Convert decimal number to octal\n const result = decimal.toString(8);\n\n // Return octal number using the minimum number of characters necessary if places is undefined\n if (places === undefined) {\n return result\n } else {\n // Return error if places is nonnumeric\n if (isNaN(places)) {\n return value\n }\n\n // Return error if places is negative\n if (places < 0) {\n return num\n }\n\n // Truncate places in case it is not an integer\n places = Math.floor(places);\n\n // Pad return value with leading 0s (zeros) if necessary (using Underscore.string)\n return places >= result.length ? REPT('0', places - result.length) + result : num\n }\n}\n\n/**\n * Returns the absolute value (modulus) of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the absolute value.\n * @returns\n */\nfunction IMABS(inumber) {\n // Lookup real and imaginary coefficients using exports.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n // Return error if either coefficient is not a number\n if (anyIsError(x, y)) {\n return value\n }\n\n // Return absolute value of complex number\n return Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2))\n}\n\n/**\n * Returns the imaginary coefficient of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the imaginary coefficient.\n * @returns\n */\nfunction IMAGINARY(inumber) {\n if (inumber === undefined || inumber === true || inumber === false) {\n return value\n }\n\n // Return 0 if inumber is equal to 0\n if (inumber === 0 || inumber === '0') {\n return 0\n }\n\n // Handle special cases\n if (['i', 'j'].indexOf(inumber) >= 0) {\n return 1\n }\n\n // Force string type\n inumber = inumber + '';\n\n // Normalize imaginary coefficient\n inumber = inumber.replace('+i', '+1i').replace('-i', '-1i').replace('+j', '+1j').replace('-j', '-1j');\n\n // Lookup sign\n let plus = inumber.indexOf('+');\n let minus = inumber.indexOf('-');\n\n if (plus === 0) {\n plus = inumber.indexOf('+', 1);\n }\n\n if (minus === 0) {\n minus = inumber.indexOf('-', 1);\n }\n\n // Lookup imaginary unit\n const last = inumber.substring(inumber.length - 1, inumber.length);\n const unit = last === 'i' || last === 'j';\n\n if (plus >= 0 || minus >= 0) {\n // Return error if imaginary unit is neither i nor j\n if (!unit) {\n return num\n }\n\n // Return imaginary coefficient of complex number\n if (plus >= 0) {\n return isNaN(inumber.substring(0, plus)) || isNaN(inumber.substring(plus + 1, inumber.length - 1))\n ? num\n : Number(inumber.substring(plus + 1, inumber.length - 1))\n } else {\n return isNaN(inumber.substring(0, minus)) || isNaN(inumber.substring(minus + 1, inumber.length - 1))\n ? num\n : -Number(inumber.substring(minus + 1, inumber.length - 1))\n }\n } else {\n if (unit) {\n return isNaN(inumber.substring(0, inumber.length - 1)) ? num : inumber.substring(0, inumber.length - 1)\n } else {\n return isNaN(inumber) ? num : 0\n }\n }\n}\n\n/**\n * Returns the argument theta, an angle expressed in radians.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the argument .\n * @returns\n */\nfunction IMARGUMENT(inumber) {\n // Lookup real and imaginary coefficients using exports.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n // Return error if either coefficient is not a number\n if (anyIsError(x, y)) {\n return value\n }\n\n // Return error if inumber is equal to zero\n if (x === 0 && y === 0) {\n return div0\n }\n\n // Return PI/2 if x is equal to zero and y is positive\n if (x === 0 && y > 0) {\n return Math.PI / 2\n }\n\n // Return -PI/2 if x is equal to zero and y is negative\n if (x === 0 && y < 0) {\n return -Math.PI / 2\n }\n\n // Return zero if x is negative and y is equal to zero\n if (y === 0 && x > 0) {\n return 0\n }\n\n // Return zero if x is negative and y is equal to zero\n if (y === 0 && x < 0) {\n return -Math.PI\n }\n\n // Return argument of complex number\n if (x > 0) {\n return Math.atan(y / x)\n } else if (x < 0 && y >= 0) {\n return Math.atan(y / x) + Math.PI\n } else {\n return Math.atan(y / x) - Math.PI\n }\n}\n\n/**\n * Returns the complex conjugate of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the conjugate.\n * @returns\n */\nfunction IMCONJUGATE(inumber) {\n // Lookup real and imaginary coefficients using exports.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(x, y)) {\n return value\n }\n\n // Lookup imaginary unit\n let unit = inumber.substring(inumber.length - 1);\n unit = unit === 'i' || unit === 'j' ? unit : 'i';\n\n // Return conjugate of complex number\n return y !== 0 ? COMPLEX(x, -y, unit) : inumber\n}\n\n/**\n * Returns the cosine of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the cosine.\n * @returns\n */\nfunction IMCOS(inumber) {\n // Lookup real and imaginary coefficients using exports.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(x, y)) {\n return value\n }\n\n // Lookup imaginary unit\n let unit = inumber.substring(inumber.length - 1);\n unit = unit === 'i' || unit === 'j' ? unit : 'i';\n\n // Return cosine of complex number\n return COMPLEX(\n (Math.cos(x) * (Math.exp(y) + Math.exp(-y))) / 2,\n (-Math.sin(x) * (Math.exp(y) - Math.exp(-y))) / 2,\n unit\n )\n}\n\n/**\n * Returns the hyperbolic cosine of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the hyperbolic cosine.\n * @returns\n */\nfunction IMCOSH(inumber) {\n // Lookup real and imaginary coefficients using exports.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(x, y)) {\n return value\n }\n\n // Lookup imaginary unit\n let unit = inumber.substring(inumber.length - 1);\n unit = unit === 'i' || unit === 'j' ? unit : 'i';\n\n // Return hyperbolic cosine of complex number\n return COMPLEX(\n (Math.cos(y) * (Math.exp(x) + Math.exp(-x))) / 2,\n (Math.sin(y) * (Math.exp(x) - Math.exp(-x))) / 2,\n unit\n )\n}\n\n/**\n * Returns the cotangent of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the cotangent.\n * @returns\n */\nfunction IMCOT(inumber) {\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(x, y)) {\n return value\n }\n\n // Return cotangent of complex number\n return IMDIV(IMCOS(inumber), IMSIN(inumber))\n}\n\n/**\n * Returns the quotient of two complex numbers.\n *\n * Category: Engineering\n *\n * @param {*} inumber1 The complex numerator or dividend.\n * @param {*} inumber2 The complex denominator or divisor.\n * @returns\n */\nfunction IMDIV(inumber1, inumber2) {\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const a = IMREAL(inumber1);\n const b = IMAGINARY(inumber1);\n const c = IMREAL(inumber2);\n const d = IMAGINARY(inumber2);\n\n if (anyIsError(a, b, c, d)) {\n return value\n }\n\n // Lookup imaginary unit\n const unit1 = inumber1.substring(inumber1.length - 1);\n const unit2 = inumber2.substring(inumber2.length - 1);\n let unit = 'i';\n\n if (unit1 === 'j') {\n unit = 'j';\n } else if (unit2 === 'j') {\n unit = 'j';\n }\n\n // Return error if inumber2 is null\n if (c === 0 && d === 0) {\n return num\n }\n\n // Return exponential of complex number\n const den = c * c + d * d;\n return COMPLEX((a * c + b * d) / den, (b * c - a * d) / den, unit)\n}\n\n/**\n * Returns the exponential of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the exponential.\n * @returns\n */\nfunction IMEXP(inumber) {\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(x, y)) {\n return value\n }\n\n // Lookup imaginary unit\n let unit = inumber.substring(inumber.length - 1);\n unit = unit === 'i' || unit === 'j' ? unit : 'i';\n\n // Return exponential of complex number\n const e = Math.exp(x);\n return COMPLEX(e * Math.cos(y), e * Math.sin(y), unit)\n}\n\n/**\n * Returns the natural logarithm of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the natural logarithm.\n * @returns\n */\nfunction IMLN(inumber) {\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(x, y)) {\n return value\n }\n\n // Lookup imaginary unit\n let unit = inumber.substring(inumber.length - 1);\n unit = unit === 'i' || unit === 'j' ? unit : 'i';\n\n // Return exponential of complex number\n return COMPLEX(Math.log(Math.sqrt(x * x + y * y)), Math.atan(y / x), unit)\n}\n\n/**\n * Returns the base-10 logarithm of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the common logarithm.\n * @returns\n */\nfunction IMLOG10(inumber) {\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(x, y)) {\n return value\n }\n\n // Lookup imaginary unit\n let unit = inumber.substring(inumber.length - 1);\n unit = unit === 'i' || unit === 'j' ? unit : 'i';\n\n // Return exponential of complex number\n return COMPLEX(Math.log(Math.sqrt(x * x + y * y)) / Math.log(10), Math.atan(y / x) / Math.log(10), unit)\n}\n\n/**\n * Returns the base-2 logarithm of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the base-2 logarithm.\n * @returns\n */\nfunction IMLOG2(inumber) {\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(x, y)) {\n return value\n }\n\n // Lookup imaginary unit\n let unit = inumber.substring(inumber.length - 1);\n unit = unit === 'i' || unit === 'j' ? unit : 'i';\n\n // Return exponential of complex number\n return COMPLEX(Math.log(Math.sqrt(x * x + y * y)) / Math.log(2), Math.atan(y / x) / Math.log(2), unit)\n}\n\n/**\n * Returns a complex number raised to an integer power.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number you want to raise to a power.\n * @param {*} number The power to which you want to raise the complex number.\n * @returns\n */\nfunction IMPOWER(inumber, number) {\n number = parseNumber(number);\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(number, x, y)) {\n return value\n }\n\n // Lookup imaginary unit\n let unit = inumber.substring(inumber.length - 1);\n unit = unit === 'i' || unit === 'j' ? unit : 'i';\n\n // Calculate power of modulus\n const p = Math.pow(IMABS(inumber), number);\n\n // Calculate argument\n const t = IMARGUMENT(inumber);\n\n // Return exponential of complex number\n return COMPLEX(p * Math.cos(number * t), p * Math.sin(number * t), unit)\n}\n\n/**\n * Returns the product of complex numbers.\n *\n * Category: Engineering\n *\n * @param {*} args inumber1, [inumber2], \u2026 Inumber1 is required, subsequent inumbers are not. 1 to 255 complex numbers to multiply.\n * @returns\n */\nfunction IMPRODUCT() {\n // Initialize result\n let result = arguments[0];\n\n if (!arguments.length) {\n return value\n }\n\n // Loop on all numbers\n for (let i = 1; i < arguments.length; i++) {\n // Lookup coefficients of two complex numbers\n const a = IMREAL(result);\n const b = IMAGINARY(result);\n const c = IMREAL(arguments[i]);\n const d = IMAGINARY(arguments[i]);\n\n if (anyIsError(a, b, c, d)) {\n return value\n }\n\n // Complute product of two complex numbers\n result = COMPLEX(a * c - b * d, a * d + b * c);\n }\n\n // Return product of complex numbers\n return result\n}\n\n/**\n * Returns the real coefficient of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the real coefficient.\n * @returns\n */\nfunction IMREAL(inumber) {\n if (inumber === undefined || inumber === true || inumber === false) {\n return value\n }\n\n // Return 0 if inumber is equal to 0\n if (inumber === 0 || inumber === '0') {\n return 0\n }\n\n // Handle special cases\n if (['i', '+i', '1i', '+1i', '-i', '-1i', 'j', '+j', '1j', '+1j', '-j', '-1j'].indexOf(inumber) >= 0) {\n return 0\n }\n\n // Force String type\n inumber = inumber + '';\n\n // Lookup sign\n let plus = inumber.indexOf('+');\n let minus = inumber.indexOf('-');\n\n if (plus === 0) {\n plus = inumber.indexOf('+', 1);\n }\n\n if (minus === 0) {\n minus = inumber.indexOf('-', 1);\n }\n\n // Lookup imaginary unit\n const last = inumber.substring(inumber.length - 1, inumber.length);\n const unit = last === 'i' || last === 'j';\n\n if (plus >= 0 || minus >= 0) {\n // Return error if imaginary unit is neither i nor j\n if (!unit) {\n return num\n }\n\n // Return real coefficient of complex number\n if (plus >= 0) {\n return isNaN(inumber.substring(0, plus)) || isNaN(inumber.substring(plus + 1, inumber.length - 1))\n ? num\n : Number(inumber.substring(0, plus))\n } else {\n return isNaN(inumber.substring(0, minus)) || isNaN(inumber.substring(minus + 1, inumber.length - 1))\n ? num\n : Number(inumber.substring(0, minus))\n }\n } else {\n if (unit) {\n return isNaN(inumber.substring(0, inumber.length - 1)) ? num : 0\n } else {\n return isNaN(inumber) ? num : inumber\n }\n }\n}\n\n/**\n * Returns the secant of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the secant.\n * @returns\n */\nfunction IMSEC(inumber) {\n // Return error if inumber is a logical value\n if (inumber === true || inumber === false) {\n return value\n }\n\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(x, y)) {\n return value\n }\n\n // Return secant of complex number\n return IMDIV('1', IMCOS(inumber))\n}\n\n/**\n * Returns the hyperbolic secant of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the hyperbolic secant.\n * @returns\n */\nfunction IMSECH(inumber) {\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(x, y)) {\n return value\n }\n\n // Return hyperbolic secant of complex number\n return IMDIV('1', IMCOSH(inumber))\n}\n\n/**\n * Returns the sine of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the sine.\n * @returns\n */\nfunction IMSIN(inumber) {\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(x, y)) {\n return value\n }\n\n // Lookup imaginary unit\n let unit = inumber.substring(inumber.length - 1);\n unit = unit === 'i' || unit === 'j' ? unit : 'i';\n\n // Return sine of complex number\n return COMPLEX(\n (Math.sin(x) * (Math.exp(y) + Math.exp(-y))) / 2,\n (Math.cos(x) * (Math.exp(y) - Math.exp(-y))) / 2,\n unit\n )\n}\n\n/**\n * Returns the hyperbolic sine of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the hyperbolic sine.\n * @returns\n */\nfunction IMSINH(inumber) {\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(x, y)) {\n return value\n }\n\n // Lookup imaginary unit\n let unit = inumber.substring(inumber.length - 1);\n unit = unit === 'i' || unit === 'j' ? unit : 'i';\n\n // Return hyperbolic sine of complex number\n return COMPLEX(\n (Math.cos(y) * (Math.exp(x) - Math.exp(-x))) / 2,\n (Math.sin(y) * (Math.exp(x) + Math.exp(-x))) / 2,\n unit\n )\n}\n\n/**\n * Returns the square root of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the square root.\n * @returns\n */\nfunction IMSQRT(inumber) {\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(x, y)) {\n return value\n }\n\n // Lookup imaginary unit\n let unit = inumber.substring(inumber.length - 1);\n unit = unit === 'i' || unit === 'j' ? unit : 'i';\n\n // Calculate power of modulus\n const s = Math.sqrt(IMABS(inumber));\n\n // Calculate argument\n const t = IMARGUMENT(inumber);\n\n // Return exponential of complex number\n return COMPLEX(s * Math.cos(t / 2), s * Math.sin(t / 2), unit)\n}\n\n/**\n * Returns the cosecant of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the cosecant.\n * @returns\n */\nfunction IMCSC(inumber) {\n // Return error if inumber is a logical value\n if (inumber === true || inumber === false) {\n return value\n }\n\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n // Return error if either coefficient is not a number\n if (anyIsError(x, y)) {\n return num\n }\n\n // Return cosecant of complex number\n return IMDIV('1', IMSIN(inumber))\n}\n\n/**\n * Returns the hyperbolic cosecant of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the hyperbolic cosecant.\n * @returns\n */\nfunction IMCSCH(inumber) {\n // Return error if inumber is a logical value\n if (inumber === true || inumber === false) {\n return value\n }\n\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n // Return error if either coefficient is not a number\n if (anyIsError(x, y)) {\n return num\n }\n\n // Return hyperbolic cosecant of complex number\n return IMDIV('1', IMSINH(inumber))\n}\n\n/**\n * Returns the difference between two complex numbers.\n *\n * Category: Engineering\n *\n * @param {*} inumber1 The complex number from which to subtract inumber2.\n * @param {*} inumber2 The complex number to subtract from inumber1.\n * @returns\n */\nfunction IMSUB(inumber1, inumber2) {\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const a = IMREAL(inumber1);\n const b = IMAGINARY(inumber1);\n const c = IMREAL(inumber2);\n const d = IMAGINARY(inumber2);\n\n if (anyIsError(a, b, c, d)) {\n return value\n }\n\n // Lookup imaginary unit\n const unit1 = inumber1.substring(inumber1.length - 1);\n const unit2 = inumber2.substring(inumber2.length - 1);\n let unit = 'i';\n\n if (unit1 === 'j') {\n unit = 'j';\n } else if (unit2 === 'j') {\n unit = 'j';\n }\n\n // Return _ of two complex numbers\n return COMPLEX(a - c, b - d, unit)\n}\n\n/**\n * Returns the sum of complex numbers.\n *\n * Category: Engineering\n *\n * @param {*} args inumber1, [inumber2], ... Inumber1 is required, subsequent numbers are not. 1 to 255 complex numbers to add.\n * @returns\n */\nfunction IMSUM() {\n if (!arguments.length) {\n return value\n }\n\n const args = flatten(arguments);\n\n // Initialize result\n let result = args[0];\n\n // Loop on all numbers\n for (let i = 1; i < args.length; i++) {\n // Lookup coefficients of two complex numbers\n const a = IMREAL(result);\n const b = IMAGINARY(result);\n const c = IMREAL(args[i]);\n const d = IMAGINARY(args[i]);\n\n if (anyIsError(a, b, c, d)) {\n return value\n }\n\n // Complute product of two complex numbers\n result = COMPLEX(a + c, b + d);\n }\n\n // Return sum of complex numbers\n return result\n}\n\n/**\n * Returns the tangent of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the tangent.\n * @returns\n */\nfunction IMTAN(inumber) {\n // Return error if inumber is a logical value\n if (inumber === true || inumber === false) {\n return value\n }\n\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(x, y)) {\n return value\n }\n\n // Return tangent of complex number\n return IMDIV(IMSIN(inumber), IMCOS(inumber))\n}\n\n/**\n * Converts an octal number to binary.\n *\n * Category: Engineering\n *\n * @param {*} number The octal number you want to convert. Number may not contain more than 10 characters. The most significant bit of number is the sign bit. The remaining 29 bits are magnitude bits. Negative numbers are represented using two's-complement notation.\n * @param {*} places Optional. The number of characters to use. If places is omitted, OCT2BIN uses the minimum number of characters necessary. Places is useful for padding the return value with leading 0s (zeros).\n * @returns\n */\nfunction OCT2BIN(number, places) {\n // Return error if number is not hexadecimal or contains more than ten characters (10 digits)\n if (!/^[0-7]{1,10}$/.test(number)) {\n return num\n }\n\n // Check if number is negative\n const negative = !!(number.length === 10 && number.substring(0, 1) === '7');\n\n // Convert octal number to decimal\n const decimal = negative ? parseInt(number, 8) - 1073741824 : parseInt(number, 8);\n\n // Return error if number is lower than -512 or greater than 511\n if (decimal < -512 || decimal > 511) {\n return num\n }\n\n // Ignore places and return a 10-character binary number if number is negative\n if (negative) {\n return '1' + REPT('0', 9 - (512 + decimal).toString(2).length) + (512 + decimal).toString(2)\n }\n\n // Convert decimal number to binary\n const result = decimal.toString(2);\n\n // Return binary number using the minimum number of characters necessary if places is undefined\n if (typeof places === 'undefined') {\n return result\n } else {\n // Return error if places is nonnumeric\n if (isNaN(places)) {\n return value\n }\n\n // Return error if places is negative\n if (places < 0) {\n return num\n }\n\n // Truncate places in case it is not an integer\n places = Math.floor(places);\n\n // Pad return value with leading 0s (zeros) if necessary (using Underscore.string)\n return places >= result.length ? REPT('0', places - result.length) + result : num\n }\n}\n\n/**\n * Converts an octal number to decimal.\n *\n * Category: Engineering\n *\n * @param {*} number The octal number you want to convert. Number may not contain more than 10 octal characters (30 bits). The most significant bit of number is the sign bit. The remaining 29 bits are magnitude bits. Negative numbers are represented using two's-complement notation.\n * @returns\n */\nfunction OCT2DEC(number) {\n // Return error if number is not octal or contains more than ten characters (10 digits)\n if (!/^[0-7]{1,10}$/.test(number)) {\n return num\n }\n\n // Convert octal number to decimal\n const decimal = parseInt(number, 8);\n\n // Return decimal number\n return decimal >= 536870912 ? decimal - 1073741824 : decimal\n}\n\n/**\n * Converts an octal number to hexadecimal.\n *\n * Category: Engineering\n *\n * @param {*} number The octal number you want to convert. Number may not contain more than 10 octal characters (30 bits). The most significant bit of number is the sign bit. The remaining 29 bits are magnitude bits. Negative numbers are represented using two's-complement notation.\n * @param {*} places Optional. The number of characters to use. If places is omitted, OCT2HEX uses the minimum number of characters necessary. Places is useful for padding the return value with leading 0s (zeros).\n * @returns\n */\nfunction OCT2HEX(number, places) {\n // Return error if number is not octal or contains more than ten characters (10 digits)\n if (!/^[0-7]{1,10}$/.test(number)) {\n return num\n }\n\n // Convert octal number to decimal\n const decimal = parseInt(number, 8);\n\n // Ignore places and return a 10-character octal number if number is negative\n if (decimal >= 536870912) {\n return 'ff' + (decimal + 3221225472).toString(16)\n }\n\n // Convert decimal number to hexadecimal\n const result = decimal.toString(16);\n\n // Return hexadecimal number using the minimum number of characters necessary if places is undefined\n if (places === undefined) {\n return result\n } else {\n // Return error if places is nonnumeric\n if (isNaN(places)) {\n return value\n }\n\n // Return error if places is negative\n if (places < 0) {\n return num\n }\n\n // Truncate places in case it is not an integer\n places = Math.floor(places);\n\n // Pad return value with leading 0s (zeros) if necessary (using Underscore.string)\n return places >= result.length ? REPT('0', places - result.length) + result : num\n }\n}\n\nconst BETADIST = BETA.DIST;\nconst BETAINV = BETA.INV;\nconst BINOMDIST = BINOM.DIST;\nconst CEILINGMATH = CEILING.MATH;\nconst CEILINGPRECISE = CEILING.PRECISE;\nconst CHIDIST = CHISQ.DIST;\nconst CHIDISTRT = CHISQ.DIST.RT;\nconst CHIINV = CHISQ.INV;\nconst CHIINVRT = CHISQ.INV.RT;\nconst CHITEST = CHISQ.TEST;\nconst COVAR = COVARIANCE.P;\nconst COVARIANCEP = COVARIANCE.P;\nconst COVARIANCES = COVARIANCE.S;\nconst CRITBINOM = BINOM.INV;\nconst ERFCPRECISE = ERFC.PRECISE;\nconst ERFPRECISE = ERF.PRECISE;\nconst EXPONDIST = EXPON.DIST;\nconst FDIST = F.DIST;\nconst FDISTRT = F.DIST.RT;\nconst FINV = F.INV;\nconst FINVRT = F.INV.RT;\nconst FLOORMATH = FLOOR.MATH;\nconst FLOORPRECISE = FLOOR.PRECISE;\nconst FTEST = F.TEST;\nconst GAMMADIST = GAMMA.DIST;\nconst GAMMAINV = GAMMA.INV;\nconst GAMMALNPRECISE = GAMMALN.PRECISE;\nconst HYPGEOMDIST = HYPGEOM.DIST;\nconst LOGINV = LOGNORM.INV;\nconst LOGNORMDIST = LOGNORM.DIST;\nconst LOGNORMINV = LOGNORM.INV;\nconst MODEMULT = MODE.MULT;\nconst MODESNGL = MODE.SNGL;\nconst NEGBINOMDIST = NEGBINOM.DIST;\nconst NETWORKDAYSINTL = NETWORKDAYS.INTL;\nconst NORMDIST = NORM.DIST;\nconst NORMINV = NORM.INV;\nconst NORMSDIST = NORM.S.DIST;\nconst NORMSINV = NORM.S.INV;\nconst PERCENTILEEXC = PERCENTILE.EXC;\nconst PERCENTILEINC = PERCENTILE.INC;\nconst PERCENTRANKEXC = PERCENTRANK.EXC;\nconst PERCENTRANKINC = PERCENTRANK.INC;\nconst POISSONDIST = POISSON.DIST;\nconst QUARTILEEXC = QUARTILE.EXC;\nconst QUARTILEINC = QUARTILE.INC;\nconst RANKAVG = RANK.AVG;\nconst RANKEQ = RANK.EQ;\nconst SKEWP = SKEW.P;\nconst STDEVP = STDEV.P;\nconst STDEVS = STDEV.S;\nconst TDIST = T.DIST;\nconst TDISTRT = T.DIST.RT;\nconst TINV = T.INV;\nconst TTEST = T.TEST;\nconst VARP = VAR.P;\nconst VARS = VAR.S;\nconst WEIBULLDIST = WEIBULL.DIST;\nconst WORKDAYINTL = WORKDAY.INTL;\nconst ZTEST = Z.TEST;\n\nfunction compact(array) {\n const result = [];\n\n arrayEach(array, (value) => {\n if (value) {\n result.push(value);\n }\n });\n\n return result\n}\n\nfunction findResultIndex(database, criterias) {\n const matches = {};\n\n for (let i = 1; i < database[0].length; ++i) {\n matches[i] = true;\n }\n\n let maxCriteriaLength = criterias[0].length;\n\n for (let i = 1; i < criterias.length; ++i) {\n if (criterias[i].length > maxCriteriaLength) {\n maxCriteriaLength = criterias[i].length;\n }\n }\n\n for (let k = 1; k < database.length; ++k) {\n for (let l = 1; l < database[k].length; ++l) {\n let currentCriteriaResult = false;\n let hasMatchingCriteria = false;\n\n for (let j = 0; j < criterias.length; ++j) {\n const criteria = criterias[j];\n\n if (criteria.length < maxCriteriaLength) {\n continue\n }\n\n const criteriaField = criteria[0];\n\n if (database[k][0] !== criteriaField) {\n continue\n }\n\n hasMatchingCriteria = true;\n\n for (let p = 1; p < criteria.length; ++p) {\n if (!currentCriteriaResult) {\n const isWildcard = criteria[p] === void 0 || criteria[p] === '*';\n\n if (isWildcard) {\n currentCriteriaResult = true;\n } else {\n const tokenizedCriteria = parse(criteria[p] + '');\n const tokens = [createToken(database[k][l], TOKEN_TYPE_LITERAL)].concat(\n tokenizedCriteria\n );\n\n currentCriteriaResult = compute(tokens);\n }\n }\n }\n }\n\n if (hasMatchingCriteria) {\n matches[l] = matches[l] && currentCriteriaResult;\n }\n }\n }\n\n const result = [];\n\n for (let n = 0; n < database[0].length; ++n) {\n if (matches[n]) {\n result.push(n - 1);\n }\n }\n\n return result\n}\n\n// Database functions\n/**\n * Returns the average of selected database entries.\n *\n * Category: Database\n *\n * @param {*} database Range of values that makes up the list or database. A database is a list of related data in which rows of related information are records, and columns of data are fields. The first row of the list contains labels for each column.\n * @param {*} field Indicates which column is used in the function. Enter the column label enclosed between double quotation marks, such as \"Age\" or \"Yield,\" or a number (without quotation marks) that represents the position of the column within the list: 1 for the first column, 2 for the second column, and so on.\n * @param {*} criteria Range of values that contains the conditions you specify. You can use any range for the criteria argument, as long as it includes at least one column label and at least one value below the column label in which you specify a condition for the column.\n * @returns\n */\nfunction DAVERAGE(database, field, criteria) {\n // Return error if field is not a number and not a string\n if (isNaN(field) && typeof field !== 'string') {\n return value\n }\n\n const resultIndexes = findResultIndex(database, criteria);\n let targetFields = [];\n\n if (typeof field === 'string') {\n const index = findField(database, field);\n targetFields = rest(database[index]);\n } else {\n targetFields = rest(database[field]);\n }\n\n let sum = 0;\n\n arrayEach(resultIndexes, (value) => {\n sum += targetFields[value];\n });\n\n return resultIndexes.length === 0 ? div0 : sum / resultIndexes.length\n}\n\n/**\n * Counts the values that contain numbers in a database.\n *\n * Category: Database\n *\n * @param {*} database The range of values that makes up the list or database. A database is a list of related data in which rows of related information are records, and columns of data are fields. The first row of the list contains labels for each column.\n * @param {*} field Indicates which column is used in the function. Enter the column label enclosed between double quotation marks, such as \"Age\" or \"Yield,\" or a number (without quotation marks) that represents the position of the column within the list: 1 for the first column, 2 for the second column, and so on.\n * @param {*} criteria The range of values that contains the conditions that you specify. You can use any range for the criteria argument, as long as the argument includes at least one column label and at least one value below the column label in which you specify a condition for the column.\n * @returns\n */\nfunction DCOUNT(database, field, criteria) {\n // Return error if field is not a number and not a string\n if (isNaN(field) && typeof field !== 'string') {\n return value\n }\n\n const resultIndexes = findResultIndex(database, criteria);\n let targetFields = [];\n\n if (typeof field === 'string') {\n const index = findField(database, field);\n targetFields = rest(database[index]);\n } else {\n targetFields = rest(database[field]);\n }\n\n const targetValues = [];\n\n arrayEach(resultIndexes, (value) => {\n targetValues.push(targetFields[value]);\n });\n\n return COUNT(targetValues)\n}\n\n/**\n * Counts nonblank values in a database.\n *\n * Category: Database\n *\n * @param {*} database The range of values that makes up the list or database. A database is a list of related data in which rows of related information are records, and columns of data are fields. The first row of the list contains labels for each column.\n * @param {*} field Optional. Indicates which column is used in the function. Enter the column label enclosed between double quotation marks, such as \"Age\" or \"Yield,\" or a number (without quotation marks) that represents the position of the column within the list: 1 for the first column, 2 for the second column, and so on.\n * @param {*} criteria The range of values that contains the conditions that you specify. You can use any range for the criteria argument, as long as it includes at least one column label and at least one value below the column label in which you specify a condition for the column.\n * @returns\n */\nfunction DCOUNTA(database, field, criteria) {\n // Return error if field is not a number and not a string\n if (isNaN(field) && typeof field !== 'string') {\n return value\n }\n\n const resultIndexes = findResultIndex(database, criteria);\n let targetFields = [];\n\n if (typeof field === 'string') {\n const index = findField(database, field);\n targetFields = rest(database[index]);\n } else {\n targetFields = rest(database[field]);\n }\n\n const targetValues = [];\n\n arrayEach(resultIndexes, (value) => {\n targetValues.push(targetFields[value]);\n });\n\n return COUNTA(targetValues)\n}\n\n/**\n * Extracts from a database a single record that matches the specified criteria.\n *\n * Category: Database\n *\n * @param {*} database The range of values that makes up the list or database. A database is a list of related data in which rows of related information are records, and columns of data are fields. The first row of the list contains labels for each column.\n * @param {*} field Indicates which column is used in the function. Enter the column label enclosed between double quotation marks, such as \"Age\" or \"Yield,\" or a number (without quotation marks) that represents the position of the column within the list: 1 for the first column, 2 for the second column, and so on.\n * @param {*} criteria The range of values that contains the conditions that you specify. You can use any range for the criteria argument, as long as it includes at least one column label and at least one value below the column label in which you specify a condition for the column.\n * @returns\n */\nfunction DGET(database, field, criteria) {\n // Return error if field is not a number and not a string\n if (isNaN(field) && typeof field !== 'string') {\n return value\n }\n\n const resultIndexes = findResultIndex(database, criteria);\n let targetFields = [];\n\n if (typeof field === 'string') {\n const index = findField(database, field);\n targetFields = rest(database[index]);\n } else {\n targetFields = rest(database[field]);\n }\n\n // Return error if no record meets the criteria\n if (resultIndexes.length === 0) {\n return value\n }\n // Returns the #NUM! error value because more than one record meets the\n // criteria\n if (resultIndexes.length > 1) {\n return num\n }\n\n return targetFields[resultIndexes[0]]\n}\n\n/**\n * Returns the maximum value from selected database entries.\n *\n * Category: Database\n *\n * @param {*} database The range of values that makes up the list or database. A database is a list of related data in which rows of related information are records, and columns of data are fields. The first row of the list contains labels for each column.\n * @param {*} field Indicates which column is used in the function. Enter the column label enclosed between double quotation marks, such as \"Age\" or \"Yield,\" or a number (without quotation marks) that represents the position of the column within the list: 1 for the first column, 2 for the second column, and so on.\n * @param {*} criteria The range of values that contains the conditions that you specify. You can use any range for the criteria argument, as long as it includes at least one column label and at least one value below the column label in which you specify a condition for the column.\n * @returns\n */\nfunction DMAX(database, field, criteria) {\n // Return error if field is not a number and not a string\n\n if (isNaN(field) && typeof field !== 'string') {\n return value\n }\n\n const resultIndexes = findResultIndex(database, criteria);\n let targetFields = [];\n\n if (typeof field === 'string') {\n const index = findField(database, field);\n targetFields = rest(database[index]);\n } else {\n targetFields = rest(database[field]);\n }\n\n let maxValue = targetFields[resultIndexes[0]];\n\n arrayEach(resultIndexes, (value) => {\n if (maxValue < targetFields[value]) {\n maxValue = targetFields[value];\n }\n });\n\n return maxValue\n}\n\n/**\n * Returns the minimum value from selected database entries.\n *\n * Category: Database\n *\n * @param {*} database The range of values that makes up the list or database. A database is a list of related data in which rows of related information are records, and columns of data are fields. The first row of the list contains labels for each column.\n * @param {*} field Indicates which column is used in the function. Enter the column label enclosed between double quotation marks, such as \"Age\" or \"Yield,\" or a number (without quotation marks) that represents the position of the column within the list: 1 for the first column, 2 for the second column, and so on.\n * @param {*} criteria The range of values that contains the conditions that you specify. You can use any range for the criteria argument, as long as it includes at least one column label and at least one value below the column label in which you specify a condition for the column.\n * @returns\n */\nfunction DMIN(database, field, criteria) {\n // Return error if field is not a number and not a string\n if (isNaN(field) && typeof field !== 'string') {\n return value\n }\n\n const resultIndexes = findResultIndex(database, criteria);\n let targetFields = [];\n\n if (typeof field === 'string') {\n const index = findField(database, field);\n targetFields = rest(database[index]);\n } else {\n targetFields = rest(database[field]);\n }\n\n let minValue = targetFields[resultIndexes[0]];\n\n arrayEach(resultIndexes, (value) => {\n if (minValue > targetFields[value]) {\n minValue = targetFields[value];\n }\n });\n\n return minValue\n}\n\n/**\n * Multiplies the values in a particular field of records that match the criteria in a database.\n *\n * Category: Database\n *\n * @param {*} database The range of values that makes up the list or database. A database is a list of related data in which rows of related information are records, and columns of data are fields. The first row of the list contains labels for each column.\n * @param {*} field Indicates which column is used in the function. Enter the column label enclosed between double quotation marks, such as \"Age\" or \"Yield,\" or a number (without quotation marks) that represents the position of the column within the list: 1 for the first column, 2 for the second column, and so on.\n * @param {*} criteria The range of values that contains the conditions that you specify. You can use any range for the criteria argument, as long as it includes at least one column label and at least one value below the column label in which you specify a condition for the column.\n * @returns\n */\nfunction DPRODUCT(database, field, criteria) {\n // Return error if field is not a number and not a string\n if (isNaN(field) && typeof field !== 'string') {\n return value\n }\n\n const resultIndexes = findResultIndex(database, criteria);\n let targetFields = [];\n\n if (typeof field === 'string') {\n const index = findField(database, field);\n targetFields = rest(database[index]);\n } else {\n targetFields = rest(database[field]);\n }\n\n let targetValues = [];\n\n arrayEach(resultIndexes, (value) => {\n targetValues.push(targetFields[value]);\n });\n targetValues = compact(targetValues);\n\n let result = 1;\n\n arrayEach(targetValues, (value) => {\n result *= value;\n });\n\n return result\n}\n\n/**\n * Estimates the standard deviation based on a sample of selected database entries.\n *\n * Category: Database\n *\n * @param {*} database The range of values that makes up the list or database. A database is a list of related data in which rows of related information are records, and columns of data are fields. The first row of the list contains labels for each column.\n * @param {*} field Indicates which column is used in the function. Enter the column label enclosed between double quotation marks, such as \"Age\" or \"Yield,\" or a number (without quotation marks) that represents the position of the column within the list: 1 for the first column, 2 for the second column, and so on.\n * @param {*} criteria The range of values that contains the conditions that you specify. You can use any range for the criteria argument, as long as it includes at least one column label and at least one value below the column label in which you specify a condition for the column.\n * @returns\n */\nfunction DSTDEV(database, field, criteria) {\n // Return error if field is not a number and not a string\n if (isNaN(field) && typeof field !== 'string') {\n return value\n }\n\n const resultIndexes = findResultIndex(database, criteria);\n let targetFields = [];\n\n if (typeof field === 'string') {\n const index = findField(database, field);\n targetFields = rest(database[index]);\n } else {\n targetFields = rest(database[field]);\n }\n\n let targetValues = [];\n\n arrayEach(resultIndexes, (value) => {\n targetValues.push(targetFields[value]);\n });\n\n targetValues = compact(targetValues);\n\n return STDEV.S(targetValues)\n}\n\n/**\n * Calculates the standard deviation based on the entire population of selected database entries.\n *\n * Category: Database\n *\n * @param {*} database The range of values that makes up the list or database. A database is a list of related data in which rows of related information are records, and columns of data are fields. The first row of the list contains labels for each column.\n * @param {*} field Indicates which column is used in the function. Enter the column label enclosed between double quotation marks, such as \"Age\" or \"Yield,\" or a number (without quotation marks) that represents the position of the column within the list: 1 for the first column, 2 for the second column, and so on.\n * @param {*} criteria The range of values that contains the conditions that you specify. You can use any range for the criteria argument, as long as it includes at least one column label and at least one value below the column label in which you specify a condition for the column.\n * @returns\n */\nfunction DSTDEVP(database, field, criteria) {\n // Return error if field is not a number and not a string\n if (isNaN(field) && typeof field !== 'string') {\n return value\n }\n\n const resultIndexes = findResultIndex(database, criteria);\n let targetFields = [];\n\n if (typeof field === 'string') {\n const index = findField(database, field);\n targetFields = rest(database[index]);\n } else {\n targetFields = rest(database[field]);\n }\n\n let targetValues = [];\n\n arrayEach(resultIndexes, (value) => {\n targetValues.push(targetFields[value]);\n });\n\n targetValues = compact(targetValues);\n\n return STDEV.P(targetValues)\n}\n\n/**\n * Adds the numbers in the field column of records in the database that match the criteria.\n *\n * Category: Database\n *\n * @param {*} database The range of values that makes up the list or database. A database is a list of related data in which rows of related information are records, and columns of data are fields. The first row of the list contains labels for each column.\n * @param {*} field Indicates which column is used in the function. Enter the column label enclosed between double quotation marks, such as \"Age\" or \"Yield,\" or a number (without quotation marks) that represents the position of the column within the list: 1 for the first column, 2 for the second column, and so on.\n * @param {*} criteria Is the range of values that contains the conditions that you specify. You can use any range for the criteria argument, as long as it includes at least one column label and at least one value below the column label in which you specify a condition for the column.\n * @returns\n */\nfunction DSUM(database, field, criteria) {\n // Return error if field is not a number and not a string\n if (isNaN(field) && typeof field !== 'string') {\n return value\n }\n\n const resultIndexes = findResultIndex(database, criteria);\n let targetFields = [];\n\n if (typeof field === 'string') {\n const index = findField(database, field);\n targetFields = rest(database[index]);\n } else {\n targetFields = rest(database[field]);\n }\n\n const targetValues = [];\n\n arrayEach(resultIndexes, (value) => {\n targetValues.push(targetFields[value]);\n });\n\n return SUM(targetValues)\n}\n\n/**\n * Estimates variance based on a sample from selected database entries.\n *\n * Category: Database\n *\n * @param {*} database The range of values that makes up the list or database. A database is a list of related data in which rows of related information are records, and columns of data are fields. The first row of the list contains labels for each column.\n * @param {*} field Indicates which column is used in the function. Enter the column label enclosed between double quotation marks, such as \"Age\" or \"Yield,\" or a number (without quotation marks) that represents the position of the column within the list: 1 for the first column, 2 for the second column, and so on.\n * @param {*} criteria The range of values that contains the conditions that you specify. You can use any range for the criteria argument, as long as it includes at least one column label and at least one value below the column label in which you specify a condition for the column.\n * @returns\n */\nfunction DVAR(database, field, criteria) {\n // Return error if field is not a number and not a string\n if (isNaN(field) && typeof field !== 'string') {\n return value\n }\n\n const resultIndexes = findResultIndex(database, criteria);\n let targetFields = [];\n\n if (typeof field === 'string') {\n const index = findField(database, field);\n targetFields = rest(database[index]);\n } else {\n targetFields = rest(database[field]);\n }\n\n const targetValues = [];\n\n arrayEach(resultIndexes, (value) => {\n targetValues.push(targetFields[value]);\n });\n\n return VAR.S(targetValues)\n}\n\n/**\n * Calculates variance based on the entire population of selected database entries.\n *\n * Category: Database\n *\n * @param {*} database The range of values that makes up the list or database. A database is a list of related data in which rows of related information are records, and columns of data are fields. The first row of the list contains labels for each column.\n * @param {*} field Indicates which column is used in the function. Enter the column label enclosed between double quotation marks, such as \"Age\" or \"Yield,\" or a number (without quotation marks) that represents the position of the column within the list: 1 for the first column, 2 for the second column, and so on.\n * @param {*} criteria The range of values that contains the conditions that you specify. You can use any range for the criteria argument, as long as it includes at least one column label and at least one value below the column label in which you specify a condition for the column.\n * @returns\n */\nfunction DVARP(database, field, criteria) {\n // Return error if field is not a number and not a string\n\n if (isNaN(field) && typeof field !== 'string') {\n return value\n }\n\n const resultIndexes = findResultIndex(database, criteria);\n let targetFields = [];\n\n if (typeof field === 'string') {\n const index = findField(database, field);\n targetFields = rest(database[index]);\n } else {\n targetFields = rest(database[field]);\n }\n\n const targetValues = [];\n\n arrayEach(resultIndexes, (value) => {\n targetValues.push(targetFields[value]);\n });\n\n return VAR.P(targetValues)\n}\n\nfunction validDate(d) {\n return d && d.getTime && !isNaN(d.getTime())\n}\n\nfunction ensureDate(d) {\n return d instanceof Date ? d : new Date(d)\n}\n\n// Calculate last coupon date before settlement\nfunction lastCoupDateBeforeSettlement(settlement, maturity, frequency) {\n let date = parseDate(maturity);\n date.setFullYear(settlement.getFullYear());\n\n if (date < settlement) {\n date.setFullYear(date.getFullYear() + 1);\n }\n\n // Adjust the date based on the coupon frequency until date is later than settlement\n while (date > settlement) {\n date.setMonth(date.getMonth() + -12 / frequency);\n }\n\n return date\n}\n\nfunction validateFrequency(frequency) {\n frequency = parseNumber(frequency);\n\n // Return error if frequency is neither 1, 2, or 4\n if ([1, 2, 4].indexOf(frequency) === -1) {\n return num\n }\n\n return frequency\n}\n\nfunction validateBasis(basis) {\n basis = parseNumber(basis);\n\n // Return error if basis is neither 0, 1, 2, 3, or 4\n if ([0, 1, 2, 3, 4].indexOf(basis) === -1) {\n return num\n }\n\n return basis\n}\n\n/**\n * Returns the accrued interest for a security that pays periodic interest.\n *\n * Category: Financial\n *\n * @param {*} issue The security's issue date.\n * @param {*} first_interest The security's first interest date.\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} rate The security's annual coupon rate.\n * @param {*} par The security's par value. If you omit par, ACCRINT uses $1,000.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @param {*} calc_method Optional. Not implemented in formulajs. A logical value that specifies the way to calculate the total accrued interest when the date of settlement is later than the date of first_interest. A value of TRUE (1) returns the total accrued interest from issue to settlement. A value of FALSE (0) returns the accrued interest from first_interest to settlement. If you do not enter the argument, it defaults to TRUE.\n * @returns\n */\nfunction ACCRINT(issue, first_interest, settlement, rate, par, frequency, basis) {\n // Return error if either date is invalid\n issue = ensureDate(issue);\n first_interest = ensureDate(first_interest);\n settlement = ensureDate(settlement);\n frequency = validateFrequency(frequency);\n basis = validateBasis(basis);\n\n if (anyError(frequency, basis)) {\n return num\n }\n\n if (!validDate(issue) || !validDate(first_interest) || !validDate(settlement)) {\n return value\n }\n\n // Return error if either rate or par are lower than or equal to zero\n if (rate <= 0 || par <= 0) {\n return num\n }\n\n // Return error if settlement is before or equal to issue\n if (settlement <= issue) {\n return num\n }\n\n // Set default values\n par = par || 0;\n basis = basis || 0;\n\n // Compute accrued interest\n return par * rate * YEARFRAC(issue, settlement, basis)\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the accrued interest for a security that pays interest at maturity.\n *\n * Category: Financial\n *\n * @param {*} issue The security's issue date.\n * @param {*} settlement The security's maturity date.\n * @param {*} rate The security's annual coupon rate.\n * @param {*} par The security's par value. If you omit par, ACCRINTM uses $1,000.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction ACCRINTM() {\n throw new Error('ACCRINTM is not implemented')\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the depreciation for each accounting period by using a depreciation coefficient.\n *\n * Category: Financial\n *\n * @param {*} cost The cost of the asset.\n * @param {*} date_purchased The date of the purchase of the asset.\n * @param {*} first_period The date of the end of the first period.\n * @param {*} salvage The salvage value at the end of the life of the asset.\n * @param {*} period The period.\n * @param {*} rate The rate of depreciation.\n * @param {*} basis Optional. The year basis to be used.\n * @returns\n */\nfunction AMORDEGRC() {\n throw new Error('AMORDEGRC is not implemented')\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the depreciation for each accounting period.\n *\n * Category: Financial\n *\n * @param {*} cost The cost of the asset.\n * @param {*} date_purchased The date of the purchase of the asset.\n * @param {*} first_period The date of the end of the first period.\n * @param {*} salvage The salvage value at the end of the life of the asset.\n * @param {*} period The period.\n * @param {*} rate The rate of depreciation.\n * @param {*} basis Optional. The year basis to be used.\n * @returns\n */\nfunction AMORLINC() {\n throw new Error('AMORLINC is not implemented')\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the number of days from the beginning of the coupon period to the settlement date.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction COUPDAYBS() {\n throw new Error('COUPDAYBS is not implemented')\n}\n\n/**\n *\n * Returns the number of days in the coupon period that contains the settlement date.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction COUPDAYS(settlement, maturity, frequency, basis) {\n basis = validateBasis(basis);\n frequency = validateFrequency(frequency);\n settlement = parseDate(settlement);\n maturity = parseDate(maturity);\n\n if (anyError(settlement, maturity)) {\n return value\n }\n\n if (anyError(frequency, basis) || settlement >= maturity) {\n return num\n }\n\n if (basis === 1) {\n let date = lastCoupDateBeforeSettlement(settlement, maturity, frequency);\n let nextDate = parseDate(date);\n\n // Set month of the nextDate to the next coupon month\n nextDate.setMonth(nextDate.getMonth() + 12 / frequency);\n\n return DATEDIF(date, nextDate, 'D')\n }\n\n let numOfDays;\n\n switch (basis) {\n case 0:\n case 2:\n case 4:\n numOfDays = 360;\n break\n case 3:\n numOfDays = 365;\n break\n default:\n return num\n }\n\n return numOfDays / frequency\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the number of days from the settlement date to the next coupon date.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction COUPDAYSNC() {\n throw new Error('COUPDAYSNC is not implemented')\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the next coupon date after the settlement date.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction COUPNCD() {\n throw new Error('COUPNCD is not implemented')\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the number of coupons payable between the settlement date and maturity date.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction COUPNUM() {\n throw new Error('COUPNUM is not implemented')\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the previous coupon date before the settlement date.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction COUPPCD() {\n throw new Error('COUPPCD is not implemented')\n}\n\n/**\n * Returns the cumulative interest paid between two periods.\n *\n * Category: Financial\n *\n * @param {*} rate The interest rate.\n * @param {*} nper The total number of payment periods.\n * @param {*} pv The present value.\n * @param {*} start_period The first period in the calculation. Payment periods are numbered beginning with 1.\n * @param {*} end_period The last period in the calculation.\n * @param {*} type The timing of the payment.\n * @returns\n */\nfunction CUMIPMT(rate, nper, pv, start_period, end_period, type) {\n rate = parseNumber(rate);\n nper = parseNumber(nper);\n pv = parseNumber(pv);\n\n if (anyIsError(rate, nper, pv)) {\n return value\n }\n\n if (rate <= 0 || nper <= 0 || pv <= 0) {\n return num\n }\n\n if (start_period < 1 || end_period < 1 || start_period > end_period) {\n return num\n }\n\n if (type !== 0 && type !== 1) {\n return num\n }\n\n const payment = PMT(rate, nper, pv, 0, type);\n let interest = 0;\n\n if (start_period === 1) {\n if (type === 0) {\n interest = -pv;\n }\n\n start_period++;\n }\n\n for (let i = start_period; i <= end_period; i++) {\n interest += type === 1 ? FV(rate, i - 2, payment, pv, 1) - payment : FV(rate, i - 1, payment, pv, 0);\n }\n\n interest *= rate;\n\n return interest\n}\n\n/**\n * Returns the cumulative principal paid on a loan between two periods.\n *\n * Category: Financial\n *\n * @param {*} rate The interest rate.\n * @param {*} nper The total number of payment periods.\n * @param {*} pv The present value.\n * @param {*} start_period The first period in the calculation. Payment periods are numbered beginning with 1.\n * @param {*} end_period The last period in the calculation.\n * @param {*} type The timing of the payment.\n * @returns\n */\nfunction CUMPRINC(rate, nper, pv, start_period, end, type) {\n // Credits: algorithm inspired by Apache OpenOffice\n // Credits: Hannes Stiebitzhofer for the translations of function and variable names\n rate = parseNumber(rate);\n nper = parseNumber(nper);\n pv = parseNumber(pv);\n\n if (anyIsError(rate, nper, pv)) {\n return value\n }\n\n // Return error if either rate, nper, or value are lower than or equal to zero\n if (rate <= 0 || nper <= 0 || pv <= 0) {\n return num\n }\n\n // Return error if start < 1, end < 1, or start > end\n if (start_period < 1 || end < 1 || start_period > end) {\n return num\n }\n\n // Return error if type is neither 0 nor 1\n if (type !== 0 && type !== 1) {\n return num\n }\n\n // Compute cumulative principal\n const payment = PMT(rate, nper, pv, 0, type);\n let principal = 0;\n\n if (start_period === 1) {\n principal = type === 0 ? payment + pv * rate : payment;\n\n start_period++;\n }\n\n for (let i = start_period; i <= end; i++) {\n principal +=\n type > 0\n ? payment - (FV(rate, i - 2, payment, pv, 1) - payment) * rate\n : payment - FV(rate, i - 1, payment, pv, 0) * rate;\n }\n\n // Return cumulative principal\n return principal\n}\n\n/**\n * Returns the depreciation of an asset for a specified period by using the fixed-declining balance method.\n *\n * Category: Financial\n *\n * @param {*} cost The initial cost of the asset.\n * @param {*} salvage The value at the end of the depreciation (sometimes called the salvage value of the asset).\n * @param {*} life The number of periods over which the asset is being depreciated (sometimes called the useful life of the asset).\n * @param {*} period The period for which you want to calculate the depreciation. Period must use the same units as life.\n * @param {*} month Optional. The number of months in the first year. If month is omitted, it is assumed to be 12.\n * @returns\n */\nfunction DB(cost, salvage, life, period, month) {\n // Initialize month\n month = month === undefined ? 12 : month;\n\n cost = parseNumber(cost);\n salvage = parseNumber(salvage);\n life = parseNumber(life);\n period = parseNumber(period);\n month = parseNumber(month);\n\n if (anyIsError(cost, salvage, life, period, month)) {\n return value\n }\n\n // Return error if any of the parameters is negative\n if (cost < 0 || salvage < 0 || life < 0 || period < 0) {\n return num\n }\n\n // Return error if month is not an integer between 1 and 12\n if ([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12].indexOf(month) === -1) {\n return num\n }\n\n // Return error if period is greater than life\n if (period > life) {\n return num\n }\n\n // Return 0 (zero) if salvage is greater than or equal to cost\n if (salvage >= cost) {\n return 0\n }\n\n // Rate is rounded to three decimals places\n const rate = (1 - Math.pow(salvage / cost, 1 / life)).toFixed(3);\n\n // Compute initial depreciation\n const initial = (cost * rate * month) / 12;\n\n // Compute total depreciation\n let total = initial;\n let current = 0;\n const ceiling = period === life ? life - 1 : period;\n\n for (let i = 2; i <= ceiling; i++) {\n current = (cost - total) * rate;\n total += current;\n }\n\n // Depreciation for the first and last periods are special cases\n if (period === 1) {\n // First period\n return initial\n } else if (period === life) {\n // Last period\n\n return (cost - total) * rate\n } else {\n return current\n }\n}\n\n/**\n * Returns the depreciation of an asset for a specified period by using the double-declining balance method or some other method that you specify.\n *\n * Category: Financial\n *\n * @param {*} cost The initial cost of the asset.\n * @param {*} salvage The value at the end of the depreciation (sometimes called the salvage value of the asset). This value can be 0.\n * @param {*} life The number of periods over which the asset is being depreciated (sometimes called the useful life of the asset).\n * @param {*} period The period for which you want to calculate the depreciation. Period must use the same units as life.\n * @param {*} factor Optional. The rate at which the balance declines. If factor is omitted, it is assumed to be 2 (the double-declining balance method).\n * @returns\n */\nfunction DDB(cost, salvage, life, period, factor) {\n // Initialize factor\n factor = factor === undefined ? 2 : factor;\n\n cost = parseNumber(cost);\n salvage = parseNumber(salvage);\n life = parseNumber(life);\n period = parseNumber(period);\n factor = parseNumber(factor);\n\n if (anyIsError(cost, salvage, life, period, factor)) {\n return value\n }\n\n // Return error if any of the parameters is negative or if factor is null\n if (cost < 0 || salvage < 0 || life < 0 || period < 0 || factor <= 0) {\n return num\n }\n\n // Return error if period is greater than life\n if (period > life) {\n return num\n }\n\n // Return 0 (zero) if salvage is greater than or equal to cost\n if (salvage >= cost) {\n return 0\n }\n\n // Compute depreciation\n let total = 0;\n let current = 0;\n\n for (let i = 1; i <= period; i++) {\n current = Math.min((cost - total) * (factor / life), cost - salvage - total);\n total += current;\n }\n\n // Return depreciation\n return current\n}\n\n/**\n * Returns the discount rate for a security.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} pr The security's price per $100 face value.\n * @param {*} redemption The security's redemption value per $100 face value.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction DISC(settlement, maturity, pr, redemption, basis) {\n settlement = parseDate(settlement);\n maturity = parseDate(maturity);\n pr = parseNumber(pr);\n redemption = parseNumber(redemption);\n basis = parseNumber(basis);\n\n basis = basis || 0;\n\n if (anyIsError(settlement, maturity, pr, redemption, basis)) {\n return value\n }\n\n if (pr <= 0 || redemption <= 0) {\n return num\n }\n\n if (settlement >= maturity) {\n return value\n }\n\n let basisVal, diff;\n switch (basis) {\n case 0:\n basisVal = 360;\n diff = DAYS360(settlement, maturity, false);\n break\n case 1:\n basisVal = 365;\n diff = DATEDIF(settlement, maturity, 'D');\n break\n case 2:\n basisVal = 360;\n diff = DATEDIF(settlement, maturity, 'D');\n break\n case 3:\n basisVal = 365;\n diff = DATEDIF(settlement, maturity, 'D');\n break\n case 4:\n basisVal = 360;\n diff = DAYS360(settlement, maturity, true);\n break\n default:\n return num\n }\n\n return (((redemption - pr) / redemption) * basisVal) / diff\n}\n\n/**\n * Converts a dollar price, expressed as a fraction, into a dollar price, expressed as a decimal number.\n *\n * Category: Financial\n *\n * @param {*} fractional_dollar A number expressed as an integer part and a fraction part, separated by a decimal symbol.\n * @param {*} fraction The integer to use in the denominator of the fraction.\n * @returns\n */\nfunction DOLLARDE(fractional_dollar, fraction) {\n // Credits: algorithm inspired by Apache OpenOffice\n fractional_dollar = parseNumber(fractional_dollar);\n fraction = parseNumber(fraction);\n\n if (anyIsError(fractional_dollar, fraction)) {\n return value\n }\n\n // Return error if fraction is negative\n if (fraction < 0) {\n return num\n }\n\n // Return error if fraction is greater than or equal to 0 and less than 1\n if (fraction >= 0 && fraction < 1) {\n return div0\n }\n\n // Truncate fraction if it is not an integer\n fraction = parseInt(fraction, 10);\n\n // Compute integer part\n let result = parseInt(fractional_dollar, 10);\n\n // Add decimal part\n result += ((fractional_dollar % 1) * Math.pow(10, Math.ceil(Math.log(fraction) / Math.LN10))) / fraction;\n\n // Round result\n const power = Math.pow(10, Math.ceil(Math.log(fraction) / Math.LN2) + 1);\n result = Math.round(result * power) / power;\n\n // Return converted dollar price\n return result\n}\n\n/**\n * Converts a dollar price, expressed as a decimal number, into a dollar price, expressed as a fraction.\n *\n * Category: Financial\n *\n * @param {*} decimal_dollar A decimal number.\n * @param {*} fraction The integer to use in the denominator of a fraction.\n * @returns\n */\nfunction DOLLARFR(decimal_dollar, fraction) {\n // Credits: algorithm inspired by Apache OpenOffice\n decimal_dollar = parseNumber(decimal_dollar);\n fraction = parseNumber(fraction);\n\n if (anyIsError(decimal_dollar, fraction)) {\n return value\n }\n\n // Return error if fraction is negative\n if (fraction < 0) {\n return num\n }\n\n // Return error if fraction is greater than or equal to 0 and less than 1\n if (fraction >= 0 && fraction < 1) {\n return div0\n }\n\n // Truncate fraction if it is not an integer\n fraction = parseInt(fraction, 10);\n\n // Compute integer part\n let result = parseInt(decimal_dollar, 10);\n\n // Add decimal part\n result += (decimal_dollar % 1) * Math.pow(10, -Math.ceil(Math.log(fraction) / Math.LN10)) * fraction;\n\n // Return converted dollar price\n return result\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the annual duration of a security with periodic interest payments.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} coupon The security's annual coupon rate.\n * @param {*} yld The security's annual yield.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction DURATION() {\n throw new Error('DURATION is not implemented')\n}\n\n/**\n * Returns the effective annual interest rate.\n *\n * Category: Financial\n *\n * @param {*} nominal_rate The nominal interest rate.\n * @param {*} npery The number of compounding periods per year.\n * @returns\n */\nfunction EFFECT(nominal_rate, npery) {\n nominal_rate = parseNumber(nominal_rate);\n npery = parseNumber(npery);\n\n if (anyIsError(nominal_rate, npery)) {\n return value\n }\n\n // Return error if rate <=0 or periods < 1\n if (nominal_rate <= 0 || npery < 1) {\n return num\n }\n\n // Truncate periods if it is not an integer\n npery = parseInt(npery, 10);\n\n // Return effective annual interest rate\n return Math.pow(1 + nominal_rate / npery, npery) - 1\n}\n\n/**\n * Returns the future value of an investment.\n *\n * Category: Financial\n *\n * @param {*} rate The interest rate per period.\n * @param {*} nper The total number of payment periods in an annuity.\n * @param {*} pmt The payment made each period; it cannot change over the life of the annuity. Typically, pmt contains principal and interest but no other fees or taxes. If pmt is omitted, you must include the pv argument.\n * @param {*} pv Optional. The present value, or the lump-sum amount that a series of future payments is worth right now. If pv is omitted, it is assumed to be 0 (zero), and you must include the pmt argument.\n * @param {*} type Optional. The number 0 or 1 and indicates when payments are due. If type is omitted, it is assumed to be 0.\n * @returns\n */\nfunction FV(rate, nper, payment, value$1, type) {\n // Credits: algorithm inspired by Apache OpenOffice\n value$1 = value$1 || 0;\n type = type || 0;\n\n rate = parseNumber(rate);\n nper = parseNumber(nper);\n payment = parseNumber(payment);\n value$1 = parseNumber(value$1);\n type = parseNumber(type);\n\n if (anyIsError(rate, nper, payment, value$1, type)) {\n return value\n }\n\n // Return future value\n let result;\n\n if (rate === 0) {\n result = value$1 + payment * nper;\n } else {\n const term = Math.pow(1 + rate, nper);\n\n result =\n type === 1\n ? value$1 * term + (payment * (1 + rate) * (term - 1)) / rate\n : value$1 * term + (payment * (term - 1)) / rate;\n }\n\n return -result\n}\n\n/**\n * Returns the future value of an initial principal after applying a series of compound interest rates.\n *\n * Category: Financial\n *\n * @param {*} principal The present value.\n * @param {*} schedule An array of interest rates to apply.\n * @returns\n */\nfunction FVSCHEDULE(principal, schedule) {\n principal = parseNumber(principal);\n schedule = parseNumberArray(flatten(schedule));\n\n if (anyIsError(principal, schedule)) {\n return value\n }\n\n const n = schedule.length;\n let future = principal;\n\n // Apply all interests in schedule\n\n for (let i = 0; i < n; i++) {\n // Apply scheduled interest\n future *= 1 + schedule[i];\n }\n\n // Return future value\n return future\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the interest rate for a fully invested security.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} investment The amount invested in the security.\n * @param {*} redemption The amount to be received at maturity.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction INTRATE() {\n throw new Error('INTRATE is not implemented')\n}\n\n/**\n * Returns the interest payment for an investment for a given period.\n *\n * Category: Financial\n *\n * @param {*} rate The interest rate per period.\n * @param {*} per The period for which you want to find the interest and must be in the range 1 to nper.\n * @param {*} nper The total number of payment periods in an annuity.\n * @param {*} pv The present value, or the lump-sum amount that a series of future payments is worth right now.\n * @param {*} fv Optional. The future value, or a cash balance you want to attain after the last payment is made. If fv is omitted, it is assumed to be 0 (the future value of a loan, for example, is 0).\n * @param {*} type Optional. The number 0 or 1 and indicates when payments are due. If type is omitted, it is assumed to be 0.\n * @returns\n */\nfunction IPMT(rate, per, nper, pv, fv, type) {\n // Credits: algorithm inspired by Apache OpenOffice\n fv = fv || 0;\n type = type || 0;\n\n rate = parseNumber(rate);\n per = parseNumber(per);\n nper = parseNumber(nper);\n pv = parseNumber(pv);\n fv = parseNumber(fv);\n type = parseNumber(type);\n\n if (anyIsError(rate, per, nper, pv, fv, type)) {\n return value\n }\n\n // Compute payment\n const payment = PMT(rate, nper, pv, fv, type);\n\n // Compute interest\n let interest =\n per === 1\n ? type === 1\n ? 0\n : -pv\n : type === 1\n ? FV(rate, per - 2, payment, pv, 1) - payment\n : FV(rate, per - 1, payment, pv, 0);\n\n // Return interest\n return interest * rate\n}\n\n/**\n * Returns the internal rate of return for a series of cash flows.\n *\n * Category: Financial\n *\n * @param {*} values An array or a reference to values that contain numbers for which you want to calculate the internal rate of return.\n - Values must contain at least one positive value and one negative value to calculate the internal rate of return.\n - IRR uses the order of values to interpret the order of cash flows. Be sure to enter your payment and income values in the sequence you want.\n - If an array or reference argument contains text, logical values, or empty values, those values are ignored.\n * @param {*} guess Optional. A number that you guess is close to the result of IRR.\n - Microsoft Excel uses an iterative technique for calculating IRR. Starting with guess, IRR cycles through the calculation until the result is accurate within 0.00001 percent. If IRR can't find a result that works after 20 tries, the #NUM! error value is returned.\n - In most cases you do not need to provide guess for the IRR calculation. If guess is omitted, it is assumed to be 0.1 (10 percent).\n - If IRR gives the #NUM! error value, or if the result is not close to what you expected, try again with a different value for guess.\n * @returns\n */\nfunction IRR(values, guess) {\n // Credits: algorithm inspired by Apache OpenOffice\n guess = guess || 0;\n\n values = parseNumberArray(flatten(values));\n guess = parseNumber(guess);\n\n if (anyIsError(values, guess)) {\n return value\n }\n\n // Calculates the resulting amount\n const irrResult = (values, dates, rate) => {\n const r = rate + 1;\n let result = values[0];\n\n for (let i = 1; i < values.length; i++) {\n result += values[i] / Math.pow(r, (dates[i] - dates[0]) / 365);\n }\n\n return result\n };\n\n // Calculates the first derivation\n const irrResultDeriv = (values, dates, rate) => {\n const r = rate + 1;\n let result = 0;\n\n for (let i = 1; i < values.length; i++) {\n const frac = (dates[i] - dates[0]) / 365;\n result -= (frac * values[i]) / Math.pow(r, frac + 1);\n }\n\n return result\n };\n\n // Initialize dates and check that values contains at least one positive value and one negative value\n const dates = [];\n let positive = false;\n let negative = false;\n\n for (let i = 0; i < values.length; i++) {\n dates[i] = i === 0 ? 0 : dates[i - 1] + 365;\n\n if (values[i] > 0) {\n positive = true;\n }\n\n if (values[i] < 0) {\n negative = true;\n }\n }\n\n // Return error if values does not contain at least one positive value and one negative value\n if (!positive || !negative) {\n return num\n }\n\n // Initialize guess and resultRate\n guess = guess === undefined ? 0.1 : guess;\n let resultRate = guess;\n\n // Set maximum epsilon for end of iteration\n const epsMax = 1e-10;\n\n // Implement Newton's method\n let newRate, epsRate, resultValue;\n let contLoop = true;\n do {\n resultValue = irrResult(values, dates, resultRate);\n newRate = resultRate - resultValue / irrResultDeriv(values, dates, resultRate);\n epsRate = Math.abs(newRate - resultRate);\n resultRate = newRate;\n contLoop = epsRate > epsMax && Math.abs(resultValue) > epsMax;\n } while (contLoop)\n\n // Return internal rate of return\n return resultRate\n}\n\n/**\n * Calculates the interest paid during a specific period of an investment.\n *\n * Category: Financial\n *\n * @param {*} rate The interest rate for the investment.\n * @param {*} per The period for which you want to find the interest, and must be between 1 and Nper.\n * @param {*} nper The total number of payment periods for the investment.\n * @param {*} pv The present value of the investment. For a loan, Pv is the loan amount.\n *\n * @returns\n */\nfunction ISPMT(rate, per, nper, pv) {\n rate = parseNumber(rate);\n per = parseNumber(per);\n nper = parseNumber(nper);\n pv = parseNumber(pv);\n\n if (anyIsError(rate, per, nper, pv)) {\n return value\n }\n\n // Return interest\n return pv * rate * (per / nper - 1)\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the Macauley modified duration for a security with an assumed par value of $100.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} coupon The security's annual coupon rate.\n * @param {*} yld The security's annual yield.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction MDURATION() {\n throw new Error('MDURATION is not implemented')\n}\n\n/**\n * Returns the internal rate of return where positive and negative cash flows are financed at different rates.\n *\n * Category: Financial\n *\n * @param {*} values An array or a reference to values that contain numbers. These numbers represent a series of payments (negative values) and income (positive values) occurring at regular periods.\n - Values must contain at least one positive value and one negative value to calculate the modified internal rate of return. Otherwise, MIRR returns the #DIV/0! error value.\n - If an array or reference argument contains text, logical values, or empty values, those values are ignored; however, values with the value zero are included.\n * @param {*} finance_rate The interest rate you pay on the money used in the cash flows.\n * @param {*} reinvest_rate The interest rate you receive on the cash flows as you reinvest them.\n * @returns\n */\nfunction MIRR(values, finance_rate, reinvest_rate) {\n values = parseNumberArray(flatten(values));\n finance_rate = parseNumber(finance_rate);\n reinvest_rate = parseNumber(reinvest_rate);\n\n if (anyIsError(values, finance_rate, reinvest_rate)) {\n return value\n }\n\n // Initialize number of values\n const n = values.length;\n\n // Lookup payments (negative values) and incomes (positive values)\n const payments = [];\n const incomes = [];\n\n for (let i = 0; i < n; i++) {\n if (values[i] < 0) {\n payments.push(values[i]);\n } else {\n incomes.push(values[i]);\n }\n }\n\n // Return modified internal rate of return\n const num = -NPV(reinvest_rate, incomes) * Math.pow(1 + reinvest_rate, n - 1);\n const den = NPV(finance_rate, payments) * (1 + finance_rate);\n\n return Math.pow(num / den, 1 / (n - 1)) - 1\n}\n\n/**\n * Returns the annual nominal interest rate.\n *\n * Category: Financial\n *\n * @param {*} effect_rate The effective interest rate.\n * @param {*} npery The number of compounding periods per year.\n * @returns\n */\nfunction NOMINAL(effect_rate, npery) {\n effect_rate = parseNumber(effect_rate);\n npery = parseNumber(npery);\n\n if (anyIsError(effect_rate, npery)) {\n return value\n }\n\n // Return error if rate <=0 or periods < 1\n if (effect_rate <= 0 || npery < 1) {\n return num\n }\n\n // Truncate periods if it is not an integer\n npery = parseInt(npery, 10);\n\n // Return nominal annual interest rate\n return (Math.pow(effect_rate + 1, 1 / npery) - 1) * npery\n}\n\n/**\n * Returns the number of periods for an investment.\n *\n * Category: Financial\n *\n * @param {*} rate The interest rate per period.\n * @param {*} pmt The payment made each period; it cannot change over the life of the annuity. Typically, pmt contains principal and interest but no other fees or taxes.\n * @param {*} pv The present value, or the lump-sum amount that a series of future payments is worth right now.\n * @param {*} fv Optional. The future value, or a cash balance you want to attain after the last payment is made. If fv is omitted, it is assumed to be 0 (the future value of a loan, for example, is 0).\n * @param {*} type Optional. The number 0 or 1 and indicates when payments are due.\n * @returns\n */\nfunction NPER(rate, pmt, pv, fv, type) {\n type = type === undefined ? 0 : type;\n fv = fv === undefined ? 0 : fv;\n\n rate = parseNumber(rate);\n pmt = parseNumber(pmt);\n pv = parseNumber(pv);\n fv = parseNumber(fv);\n type = parseNumber(type);\n\n if (anyIsError(rate, pmt, pv, fv, type)) {\n return value\n }\n\n if (rate === 0) {\n return -(pv + fv) / pmt\n } else {\n const num = pmt * (1 + rate * type) - fv * rate;\n const den = pv * rate + pmt * (1 + rate * type);\n\n return Math.log(num / den) / Math.log(1 + rate)\n }\n}\n\n/**\n * Returns the net present value of an investment based on a series of periodic cash flows and a discount rate.\n *\n * Category: Financial\n *\n * @param {*} rate The rate of discount over the length of one period.\n * @param {*} args value1, value2, ... Value1 is required, subsequent values are optional. 1 to 254 arguments representing the payments and income.\n - value1, value2, ... must be equally spaced in time and occur at the end of each period.\n - NPV uses the order of value1, value2, ... to interpret the order of cash flows. Be sure to enter your payment and income values in the correct sequence.\n - Arguments that are empty values, logical values, or text representations of numbers, error values, or text that cannot be translated into numbers are ignored.\n - If an argument is an array or reference, only numbers in that array or reference are counted. Empty values, logical values, text, or error values in the array or reference are ignored.\n * @returns\n */\nfunction NPV() {\n const args = parseNumberArray(flatten(arguments));\n\n if (args instanceof Error) {\n return args\n }\n\n // Lookup rate\n const rate = args[0];\n\n // Initialize net present value\n let value = 0;\n\n // Loop on all values\n for (let j = 1; j < args.length; j++) {\n value += args[j] / Math.pow(1 + rate, j);\n }\n\n // Return net present value\n return value\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the price per $100 face value of a security with an odd first period.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} issue The security's issue date.\n * @param {*} first_coupon The security's first coupon date.\n * @param {*} rate The security's interest rate.\n * @param {*} yld The security's annual yield.\n * @param {*} redemption The security's redemption value per $100 face value.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction ODDFPRICE() {\n throw new Error('ODDFPRICE is not implemented')\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the yield of a security with an odd first period.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} issue The security's issue date.\n * @param {*} first_coupon The security's first coupon date.\n * @param {*} rate The security's interest rate.\n * @param {*} pr The security's price.\n * @param {*} redemption The security's redemption value per $100 face value.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction ODDFYIELD() {\n throw new Error('ODDFYIELD is not implemented')\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the price per $100 face value of a security with an odd last period.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} last_interest The security's last coupon date.\n * @param {*} rate The security's interest rate.\n * @param {*} yld The security's annual yield.\n * @param {*} redemption The security's redemption value per $100 face value.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction ODDLPRICE() {\n throw new Error('ODDLPRICE is not implemented')\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the yield of a security with an odd last period.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} last_interest The security's last coupon date.\n * @param {*} rate The security's interest rate\n * @param {*} pr The security's price.\n * @param {*} redemption The security's redemption value per $100 face value.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction ODDLYIELD() {\n throw new Error('ODDLYIELD is not implemented')\n}\n\n/**\n * Returns the number of periods required by an investment to reach a specified value.\n *\n * Category: Financial\n *\n * @param {*} rate Rate is the interest rate per period.\n * @param {*} pv Pv is the present value of the investment.\n * @param {*} fv Fv is the desired future value of the investment.\n * @returns\n */\nfunction PDURATION(rate, pv, fv) {\n rate = parseNumber(rate);\n pv = parseNumber(pv);\n fv = parseNumber(fv);\n\n if (anyIsError(rate, pv, fv)) {\n return value\n }\n\n // Return error if rate <=0\n if (rate <= 0) {\n return num\n }\n\n // Return number of periods\n return (Math.log(fv) - Math.log(pv)) / Math.log(1 + rate)\n}\n\n/**\n * Returns the periodic payment for an annuity.\n *\n * Category: Financial\n *\n * @param {*} rate The interest rate for the loan.\n * @param {*} nper The total number of payments for the loan.\n * @param {*} pv The present value, or the total amount that a series of future payments is worth now; also known as the principal.\n * @param {*} fv Optional. The future value, or a cash balance you want to attain after the last payment is made. If fv is omitted, it is assumed to be 0 (zero), that is, the future value of a loan is 0.\n * @param {*} type Optional. The number 0 (zero) or 1 and indicates when payments are due.\n * @returns\n */\nfunction PMT(rate, nper, pv, fv, type) {\n // Credits: algorithm inspired by Apache OpenOffice\n fv = fv || 0;\n type = type || 0;\n\n rate = parseNumber(rate);\n nper = parseNumber(nper);\n pv = parseNumber(pv);\n fv = parseNumber(fv);\n type = parseNumber(type);\n\n if (anyIsError(rate, nper, pv, fv, type)) {\n return value\n }\n\n // Return payment\n let result;\n\n if (rate === 0) {\n result = (pv + fv) / nper;\n } else {\n const term = Math.pow(1 + rate, nper);\n\n result =\n type === 1\n ? ((fv * rate) / (term - 1) + (pv * rate) / (1 - 1 / term)) / (1 + rate)\n : (fv * rate) / (term - 1) + (pv * rate) / (1 - 1 / term);\n }\n\n return -result\n}\n\n/**\n * Returns the payment on the principal for an investment for a given period.\n *\n * Category: Financial\n *\n * @param {*} rate The interest rate per period.\n * @param {*} per Specifies the period and must be in the range 1 to nper.\n * @param {*} nper The total number of payment periods in an annuity.\n * @param {*} pv The present value \u2014 the total amount that a series of future payments is worth now.\n * @param {*} fv Optional. The future value, or a cash balance you want to attain after the last payment is made. If fv is omitted, it is assumed to be 0 (zero), that is, the future value of a loan is 0.\n * @param {*} type Optional. The number 0 or 1 and indicates when payments are due.\n * @returns\n */\nfunction PPMT(rate, per, nper, pv, fv, type) {\n fv = fv || 0;\n type = type || 0;\n\n rate = parseNumber(rate);\n nper = parseNumber(nper);\n pv = parseNumber(pv);\n fv = parseNumber(fv);\n type = parseNumber(type);\n\n if (anyIsError(rate, nper, pv, fv, type)) {\n return value\n }\n\n return PMT(rate, nper, pv, fv, type) - IPMT(rate, per, nper, pv, fv, type)\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the price per $100 face value of a security that pays periodic interest.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} rate The security's annual coupon rate.\n * @param {*} yld The security's annual yield.\n * @param {*} redemption The security's redemption value per $100 face value.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction PRICE() {\n throw new Error('PRICE is not implemented')\n}\n\n/**\n * Returns the price per $100 face value of a discounted security.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} discount The security's discount rate.\n * @param {*} redemption The security's redemption value per $100 face value.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction PRICEDISC(settlement, maturity, discount, redemption, basis) {\n settlement = parseDate(settlement);\n maturity = parseDate(maturity);\n discount = parseNumber(discount);\n redemption = parseNumber(redemption);\n basis = parseNumber(basis);\n\n basis = basis || 0;\n\n if (anyIsError(settlement, maturity, discount, redemption, basis)) {\n return value\n }\n\n if (discount <= 0 || redemption <= 0) {\n return num\n }\n\n if (settlement >= maturity) {\n return value\n }\n\n let basisVal, diff;\n switch (basis) {\n case 0:\n basisVal = 360;\n diff = DAYS360(settlement, maturity, false);\n break\n case 1:\n basisVal = 365;\n diff = DATEDIF(settlement, maturity, 'D');\n break\n case 2:\n basisVal = 360;\n diff = DATEDIF(settlement, maturity, 'D');\n break\n case 3:\n basisVal = 365;\n diff = DATEDIF(settlement, maturity, 'D');\n break\n case 4:\n basisVal = 360;\n diff = DAYS360(settlement, maturity, true);\n break\n default:\n return num\n }\n\n return redemption - (discount * redemption * diff) / basisVal\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the price per $100 face value of a security that pays interest at maturity.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} issue The security's issue date, expressed as a serial date number.\n * @param {*} rate The security's interest rate at date of issue.\n * @param {*} yld The security's annual yield.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction PRICEMAT() {\n throw new Error('PRICEMAT is not implemented')\n}\n\n/**\n * Returns the present value of an investment.\n *\n * Category: Financial\n *\n * @param {*} rate The interest rate per period. For example, if you obtain an automobile loan at a 10 percent annual interest rate and make monthly payments, your interest rate per month is 10%/12, or 0.83%. You would enter 10%/12, or 0.83%, or 0.0083, into the formula as the rate.\n * @param {*} nper The total number of payment periods in an annuity. For example, if you get a four-year car loan and make monthly payments, your loan has 4*12 (or 48) periods. You would enter 48 into the formula for nper.\n * @param {*} pmt The payment made each period and cannot change over the life of the annuity. Typically, pmt includes principal and interest but no other fees or taxes. For example, the monthly payments on a $10,000, four-year car loan at 12 percent are $263.33. You would enter -263.33 into the formula as the pmt. If pmt is omitted, you must include the fv argument.\n * @param {*} fv Optional. The future value, or a cash balance you want to attain after the last payment is made. If fv is omitted, it is assumed to be 0 (the future value of a loan, for example, is 0). For example, if you want to save $50,000 to pay for a special project in 18 years, then $50,000 is the future value. You could then make a conservative guess at an interest rate and determine how much you must save each month. If fv is omitted, you must include the pmt argument.\n * @param {*} type Optional. The number 0 or 1 and indicates when payments are due.\n * @returns\n */\nfunction PV(rate, per, pmt, fv, type) {\n fv = fv || 0;\n type = type || 0;\n\n rate = parseNumber(rate);\n per = parseNumber(per);\n pmt = parseNumber(pmt);\n fv = parseNumber(fv);\n type = parseNumber(type);\n\n if (anyIsError(rate, per, pmt, fv, type)) {\n return value\n }\n\n // Return present value\n return rate === 0\n ? -pmt * per - fv\n : (((1 - Math.pow(1 + rate, per)) / rate) * pmt * (1 + rate * type) - fv) / Math.pow(1 + rate, per)\n}\n\n/**\n * Returns the interest rate per period of an annuity.\n *\n * Category: Financial\n *\n * @param {*} nper The total number of payment periods in an annuity.\n * @param {*} pmt The payment made each period and cannot change over the life of the annuity. Typically, pmt includes principal and interest but no other fees or taxes. If pmt is omitted, you must include the fv argument.\n * @param {*} pv The present value \u2014 the total amount that a series of future payments is worth now.\n * @param {*} fv Optional. The future value, or a cash balance you want to attain after the last payment is made. If fv is omitted, it is assumed to be 0 (the future value of a loan, for example, is 0). If fv is omitted, you must include the pmt argument.\n * @param {*} type Optional. The number 0 or 1 and indicates when payments are due.\n * @param {*} guess Optional. Your guess for what the rate will be. If you omit guess, it is assumed to be 10 percent. If RATE does not converge, try different values for guess. RATE usually converges if guess is between 0 and 1.\n - If you omit guess, it is assumed to be 10 percent.\n - If RATE does not converge, try different values for guess. RATE usually converges if guess is between 0 and 1.\n * @returns\n */\nfunction RATE(nper, pmt, pv, fv, type, guess) {\n guess = guess === undefined ? 0.1 : guess;\n fv = fv === undefined ? 0 : fv;\n type = type === undefined ? 0 : type;\n\n nper = parseNumber(nper);\n pmt = parseNumber(pmt);\n pv = parseNumber(pv);\n fv = parseNumber(fv);\n type = parseNumber(type);\n guess = parseNumber(guess);\n\n if (anyIsError(nper, pmt, pv, fv, type, guess)) {\n return value\n }\n\n const epsMax = 1e-10;\n const iterMax = 100;\n let rate = guess;\n\n type = type ? 1 : 0;\n\n for (let i = 0; i < iterMax; i++) {\n if (rate <= -1) {\n return num\n }\n\n let y, f;\n\n if (Math.abs(rate) < epsMax) {\n y = pv * (1 + nper * rate) + pmt * (1 + rate * type) * nper + fv;\n } else {\n f = Math.pow(1 + rate, nper);\n y = pv * f + pmt * (1 / rate + type) * (f - 1) + fv;\n }\n\n if (Math.abs(y) < epsMax) {\n return rate\n }\n\n let dy;\n\n if (Math.abs(rate) < epsMax) {\n dy = pv * nper + pmt * type * nper;\n } else {\n f = Math.pow(1 + rate, nper);\n const df = nper * Math.pow(1 + rate, nper - 1);\n dy = pv * df + pmt * (1 / rate + type) * df + pmt * (-1 / (rate * rate)) * (f - 1);\n }\n\n rate -= y / dy;\n }\n\n return rate\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the amount received at maturity for a fully invested security.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} investment The amount invested in the security.\n * @param {*} discount The security's discount rate.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction RECEIVED() {\n throw new Error('RECEIVED is not implemented')\n}\n\n/**\n * Returns an equivalent interest rate for the growth of an investment.\n *\n * Category: Financial\n *\n * @param {*} nper Nper is the number of periods for the investment.\n * @param {*} pv Pv is the present value of the investment.\n * @param {*} fv Fv is the future value of the investment.\n * @returns\n */\nfunction RRI(nper, pv, fv) {\n nper = parseNumber(nper);\n pv = parseNumber(pv);\n fv = parseNumber(fv);\n\n if (anyIsError(nper, pv, fv)) {\n return value\n }\n\n // Return error if nper or present is equal to 0 (zero)\n if (nper === 0 || pv === 0) {\n return num\n }\n\n // Return equivalent interest rate\n return Math.pow(fv / pv, 1 / nper) - 1\n}\n\n/**\n * Returns the straight-line depreciation of an asset for one period.\n *\n * Category: Financial\n *\n * @param {*} cost The initial cost of the asset.\n * @param {*} salvage The value at the end of the depreciation (sometimes called the salvage value of the asset).\n * @param {*} life The number of periods over which the asset is depreciated (sometimes called the useful life of the asset).\n * @returns\n */\nfunction SLN(cost, salvage, life) {\n cost = parseNumber(cost);\n salvage = parseNumber(salvage);\n life = parseNumber(life);\n\n if (anyIsError(cost, salvage, life)) {\n return value\n }\n\n // Return error if life equal to 0 (zero)\n if (life === 0) {\n return num\n }\n\n // Return straight-line depreciation\n return (cost - salvage) / life\n}\n\n/**\n * Returns the sum-of-years' digits depreciation of an asset for a specified period.\n *\n * Category: Financial\n *\n * @param {*} cost The initial cost of the asset.\n * @param {*} salvage The value at the end of the depreciation (sometimes called the salvage value of the asset).\n * @param {*} life The number of periods over which the asset is depreciated (sometimes called the useful life of the asset).\n * @param {*} per The period and must use the same units as life.\n * @returns\n */\nfunction SYD(cost, salvage, life, per) {\n // Return error if any of the parameters is not a number\n cost = parseNumber(cost);\n salvage = parseNumber(salvage);\n life = parseNumber(life);\n per = parseNumber(per);\n\n if (anyIsError(cost, salvage, life, per)) {\n return value\n }\n\n // Return error if life equal to 0 (zero)\n if (life === 0) {\n return num\n }\n\n // Return error if period is lower than 1 or greater than life\n if (per < 1 || per > life) {\n return num\n }\n\n // Truncate period if it is not an integer\n per = parseInt(per, 10);\n\n // Return straight-line depreciation\n return ((cost - salvage) * (life - per + 1) * 2) / (life * (life + 1))\n}\n\n/**\n * Returns the bond-equivalent yield for a Treasury bill.\n *\n * Category: Financial\n *\n * @param {*} settlement The Treasury bill's settlement date. The security settlement date is the date after the issue date when the Treasury bill is traded to the buyer.\n * @param {*} maturity The Treasury bill's maturity date. The maturity date is the date when the Treasury bill expires.\n * @param {*} discount The Treasury bill's discount rate.\n * @returns\n */\nfunction TBILLEQ(settlement, maturity, discount) {\n settlement = parseDate(settlement);\n maturity = parseDate(maturity);\n discount = parseNumber(discount);\n\n if (anyIsError(settlement, maturity, discount)) {\n return value\n }\n\n // Return error if discount is lower than or equal to zero\n if (discount <= 0) {\n return num\n }\n\n // Return error if settlement is greater than maturity\n if (settlement > maturity) {\n return num\n }\n\n // Return error if maturity is more than one year after settlement\n if (maturity - settlement > 365 * 24 * 60 * 60 * 1000) {\n return num\n }\n\n // Return bond-equivalent yield\n return (365 * discount) / (360 - discount * DAYS360(settlement, maturity, false))\n}\n\n/**\n * Returns the price per $100 face value for a Treasury bill.\n *\n * Category: Financial\n *\n * @param {*} settlement The Treasury bill's settlement date. The security settlement date is the date after the issue date when the Treasury bill is traded to the buyer.\n * @param {*} maturity The Treasury bill's maturity date. The maturity date is the date when the Treasury bill expires.\n * @param {*} discount The Treasury bill's discount rate.\n * @returns\n */\nfunction TBILLPRICE(settlement, maturity, discount) {\n settlement = parseDate(settlement);\n maturity = parseDate(maturity);\n discount = parseNumber(discount);\n\n if (anyIsError(settlement, maturity, discount)) {\n return value\n }\n\n // Return error if discount is lower than or equal to zero\n if (discount <= 0) {\n return num\n }\n\n // Return error if settlement is greater than maturity\n if (settlement > maturity) {\n return num\n }\n\n // Return error if maturity is more than one year after settlement\n if (maturity - settlement > 365 * 24 * 60 * 60 * 1000) {\n return num\n }\n\n // Return bond-equivalent yield\n return 100 * (1 - (discount * DAYS360(settlement, maturity, false)) / 360)\n}\n\n/**\n * Returns the yield for a Treasury bill.\n *\n * Category: Financial\n *\n * @param {*} settlement The Treasury bill's settlement date. The security settlement date is the date after the issue date when the Treasury bill is traded to the buyer.\n * @param {*} maturity The Treasury bill's maturity date. The maturity date is the date when the Treasury bill expires.\n * @param {*} pr The Treasury bill's price per $100 face value.\n * @returns\n */\nfunction TBILLYIELD(settlement, maturity, pr) {\n settlement = parseDate(settlement);\n maturity = parseDate(maturity);\n pr = parseNumber(pr);\n\n if (anyIsError(settlement, maturity, pr)) {\n return value\n }\n\n // Return error if price is lower than or equal to zero\n if (pr <= 0) {\n return num\n }\n\n // Return error if settlement is greater than maturity\n if (settlement > maturity) {\n return num\n }\n\n // Return error if maturity is more than one year after settlement\n if (maturity - settlement > 365 * 24 * 60 * 60 * 1000) {\n return num\n }\n\n // Return bond-equivalent yield\n return ((100 - pr) * 360) / (pr * DAYS360(settlement, maturity, false))\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the depreciation of an asset for a specified or partial period by using a declining balance method.\n *\n * Category: Financial\n *\n * @param {*} cost The initial cost of the asset.\n * @param {*} salvage The value at the end of the depreciation (sometimes called the salvage value of the asset). This value can be 0.\n * @param {*} life The number of periods over which the asset is depreciated (sometimes called the useful life of the asset).\n * @param {*} start_period The starting period for which you want to calculate the depreciation. Start_period must use the same units as life.\n * @param {*} end_period The ending period for which you want to calculate the depreciation. End_period must use the same units as life.\n * @param {*} factor Optional. The rate at which the balance declines. If factor is omitted, it is assumed to be 2 (the double-declining balance method). Change factor if you do not want to use the double-declining balance method. For a description of the double-declining balance method, see DDB.\n * @param {*} no_switch Optional. A logical value specifying whether to switch to straight-line depreciation when depreciation is greater than the declining balance calculation.\n - If no_switch is TRUE, Microsoft Excel does not switch to straight-line depreciation even when the depreciation is greater than the declining balance calculation.\n - If no_switch is FALSE or omitted, Excel switches to straight-line depreciation when depreciation is greater than the declining balance calculation.\n * @returns\n */\nfunction VDB() {\n throw new Error('VDB is not implemented')\n}\n\n/**\n * Returns the internal rate of return for a schedule of cash flows that is not necessarily periodic.\n *\n * Category: Financial\n *\n * @param {*} values A series of cash flows that corresponds to a schedule of payments in dates. The first payment is optional and corresponds to a cost or payment that occurs at the beginning of the investment. If the first value is a cost or payment, it must be a negative value. All succeeding payments are discounted based on a 365-day year. The series of values must contain at least one positive and one negative value.\n * @param {*} dates A schedule of payment dates that corresponds to the cash flow payments. Dates may occur in any order. Dates should be entered by using the DATE function, or as results of other formulas or functions. For example, use DATE(2008,5,23) for the 23rd day of May, 2008. Problems can occur if dates are entered as text. .\n * @param {*} guess Optional. A number that you guess is close to the result of XIRR.\n * @returns\n */\nfunction XIRR(values, dates, guess) {\n // Credits: algorithm inspired by Apache OpenOffice\n values = parseNumberArray(flatten(values));\n dates = parseDateArray(flatten(dates));\n guess = parseNumber(guess);\n\n if (anyIsError(values, dates, guess)) {\n return value\n }\n\n // Calculates the resulting amount\n const irrResult = (values, dates, rate) => {\n const r = rate + 1;\n let result = values[0];\n\n for (let i = 1; i < values.length; i++) {\n result += values[i] / Math.pow(r, DAYS(dates[i], dates[0]) / 365);\n }\n\n return result\n };\n\n // Calculates the first derivation\n const irrResultDeriv = (values, dates, rate) => {\n const r = rate + 1;\n let result = 0;\n\n for (let i = 1; i < values.length; i++) {\n const frac = DAYS(dates[i], dates[0]) / 365;\n result -= (frac * values[i]) / Math.pow(r, frac + 1);\n }\n\n return result\n };\n\n // Check that values contains at least one positive value and one negative value\n let positive = false;\n let negative = false;\n\n for (let i = 0; i < values.length; i++) {\n if (values[i] > 0) {\n positive = true;\n }\n\n if (values[i] < 0) {\n negative = true;\n }\n }\n\n // Return error if values does not contain at least one positive value and one negative value\n if (!positive || !negative) {\n return num\n }\n\n // Initialize guess and resultRate\n guess = guess || 0.1;\n let resultRate = guess;\n\n // Set maximum epsilon for end of iteration\n const epsMax = 1e-10;\n\n // Implement Newton's method\n let newRate, epsRate, resultValue;\n let contLoop = true;\n\n do {\n resultValue = irrResult(values, dates, resultRate);\n newRate = resultRate - resultValue / irrResultDeriv(values, dates, resultRate);\n epsRate = Math.abs(newRate - resultRate);\n resultRate = newRate;\n contLoop = epsRate > epsMax && Math.abs(resultValue) > epsMax;\n } while (contLoop)\n\n // Return internal rate of return\n return resultRate\n}\n\n/**\n * Returns the net present value for a schedule of cash flows that is not necessarily periodic.\n *\n * Category: Financial\n *\n * @param {*} rate The discount rate to apply to the cash flows.\n * @param {*} values A series of cash flows that corresponds to a schedule of payments in dates. The first payment is optional and corresponds to a cost or payment that occurs at the beginning of the investment. If the first value is a cost or payment, it must be a negative value. All succeeding payments are discounted based on a 365-day year. The series of values must contain at least one positive value and one negative value.\n * @param {*} dates A schedule of payment dates that corresponds to the cash flow payments. The first payment date indicates the beginning of the schedule of payments. All other dates must be later than this date, but they may occur in any order.\n * @returns\n */\nfunction XNPV(rate, values, dates) {\n rate = parseNumber(rate);\n values = parseNumberArray(flatten(values));\n dates = parseDateArray(flatten(dates));\n\n if (anyIsError(rate, values, dates)) {\n return value\n }\n\n let result = 0;\n\n for (let i = 0; i < values.length; i++) {\n result += values[i] / Math.pow(1 + rate, DAYS(dates[i], dates[0]) / 365);\n }\n\n return result\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the yield on a security that pays periodic interest.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} rate The security's annual coupon rate.\n * @param {*} pr The security's price per $100 face value.\n * @param {*} redemption The security's redemption value per $100 face value.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction YIELD() {\n throw new Error('YIELD is not implemented')\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the annual yield for a discounted security; for example, a Treasury bill.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} pr The security's price per $100 face value.\n * @param {*} redemption The security's redemption value per $100 face value.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction YIELDDISC() {\n throw new Error('YIELDDISC is not implemented')\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the annual yield of a security that pays interest at maturity.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} issue The security's issue date, expressed as a serial date number.\n * @param {*} rate The security's interest rate at date of issue.\n * @param {*} pr The security's price per $100 face value.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction YIELDMAT() {\n throw new Error('YIELDMAT is not implemented')\n}\n\n/**\n * Returns TRUE if all of its arguments are TRUE.\n *\n * Category: Logical\n *\n * @returns\n */\nfunction AND() {\n const args = flatten(arguments);\n let result = value;\n\n for (let i = 0; i < args.length; i++) {\n if (args[i] instanceof Error) {\n return args[i]\n }\n\n if (args[i] === undefined || args[i] === null || typeof args[i] === 'string') {\n continue\n }\n\n if (result === value) {\n result = true;\n }\n\n if (!args[i]) {\n result = false;\n }\n }\n\n return result\n}\n\n/**\n * Returns the logical value FALSE.\n *\n * Category: Logical\n *\n * @returns\n */\nfunction FALSE() {\n return false\n}\n\n/**\n * Specifies a logical test to perform.\n *\n * Category: Logical\n *\n * @param {*} logical_test\n * @param {*} value_if_true\n * @param {*} value_if_false\n *\n * @returns\n */\nfunction IF(logical_test, value_if_true, value_if_false) {\n if (logical_test instanceof Error) {\n return logical_test\n }\n\n value_if_true = arguments.length >= 2 ? value_if_true : true;\n\n if (value_if_true === undefined || value_if_true === null) {\n value_if_true = 0;\n }\n\n value_if_false = arguments.length === 3 ? value_if_false : false;\n\n if (value_if_false === undefined || value_if_false === null) {\n value_if_false = 0;\n }\n\n return logical_test ? value_if_true : value_if_false\n}\n\n/**\n * Checks whether one or more conditions are met and returns a value that corresponds to the first TRUE condition.\n *\n * Category: Logical\n *\n * @returns\n */\nfunction IFS() {\n for (let i = 0; i < arguments.length / 2; i++) {\n if (arguments[i * 2]) {\n return arguments[i * 2 + 1]\n }\n }\n\n return na\n}\n\n/**\n * Returns a value you specify if a formula evaluates to an error; otherwise, returns the result of the formula.\n *\n * Category: Logical\n *\n * @param {*} value The argument that is checked for an error.\n * @param {*} value_if_error The value to return if the formula evaluates to an error. The following error types are evaluated: #N/A, #VALUE!, #REF!, #DIV/0!, #NUM!, #NAME?, or #NULL!.\n * @returns\n */\nfunction IFERROR(value, value_if_error) {\n if (ISERROR(value)) {\n return value_if_error\n }\n\n return value\n}\n\n/**\n * Returns the value you specify if the expression resolves to #N/A, otherwise returns the result of the expression.\n *\n * Category: Logical\n *\n * @returns\n */\nfunction IFNA(value, value_if_na) {\n return value === na ? value_if_na : value\n}\n\n/**\n * Reverses the logic of its argument.\n *\n * Category: Logical\n *\n * @returns\n */\nfunction NOT(logical) {\n if (typeof logical === 'string') {\n return value\n }\n\n if (logical instanceof Error) {\n return logical\n }\n\n return !logical\n}\n\n/**\n * Returns TRUE if any argument is TRUE.\n *\n * Category: Logical\n *\n * @returns\n */\nfunction OR() {\n const args = flatten(arguments);\n let result = value;\n\n for (let i = 0; i < args.length; i++) {\n if (args[i] instanceof Error) {\n return args[i]\n }\n\n if (args[i] === undefined || args[i] === null || typeof args[i] === 'string') {\n continue\n }\n\n if (result === value) {\n result = false;\n }\n\n if (args[i]) {\n result = true;\n }\n }\n\n return result\n}\n\n/**\n * Returns the logical value TRUE.\n *\n * Category: Logical\n *\n * @returns\n */\nfunction TRUE() {\n return true\n}\n\n/**\n * Returns a logical exclusive OR of all arguments.\n *\n * Category: Logical\n *\n * @param {*} args logical1, logical2,\u2026 Logical 1 is required, subsequent logical values are optional. 1 to 254 conditions you want to test that can be either TRUE or FALSE, and can be logical values, arrays, or references.\n * @returns\n */\nfunction XOR() {\n const args = flatten(arguments);\n let result = value;\n\n for (let i = 0; i < args.length; i++) {\n if (args[i] instanceof Error) {\n return args[i]\n }\n\n if (args[i] === undefined || args[i] === null || typeof args[i] === 'string') {\n continue\n }\n\n if (result === value) {\n result = 0;\n }\n\n if (args[i]) {\n result++;\n }\n }\n\n if (result === value) {\n return result\n }\n\n return !!(Math.floor(Math.abs(result)) & 1)\n}\n\n/**\n * Evaluates an expression against a list of values and returns the result corresponding to the first matching value. If there is no match, an optional default value may be returned.\n *\n * Category: Logical\n *\n * @returns\n */\nfunction SWITCH() {\n let result;\n\n if (arguments.length > 0) {\n const targetValue = arguments[0];\n const argc = arguments.length - 1;\n const switchCount = Math.floor(argc / 2);\n let switchSatisfied = false;\n const hasDefaultClause = argc % 2 !== 0;\n const defaultClause = argc % 2 === 0 ? null : arguments[arguments.length - 1];\n\n if (switchCount) {\n for (let index = 0; index < switchCount; index++) {\n if (targetValue === arguments[index * 2 + 1]) {\n result = arguments[index * 2 + 2];\n switchSatisfied = true;\n break\n }\n }\n }\n\n if (!switchSatisfied) {\n result = hasDefaultClause ? defaultClause : na;\n }\n } else {\n result = value;\n }\n\n return result\n}\n\nconst utils = { errors, symbols };\n\nexport { ABS, ACCRINT, ACCRINTM, ACOS, ACOSH, ACOT, ACOTH, AGGREGATE, AMORDEGRC, AMORLINC, AND, ARABIC, ASC, ASIN, ASINH, ATAN, ATAN2, ATANH, AVEDEV, AVERAGE, AVERAGEA, AVERAGEIF, AVERAGEIFS, BAHTTEXT, BASE, BESSELI, BESSELJ, BESSELK, BESSELY, BETA, BETADIST, BETAINV, BIN2DEC, BIN2HEX, BIN2OCT, BINOM, BINOMDIST, BITAND, BITLSHIFT, BITOR, BITRSHIFT, BITXOR, CEILING, CEILINGMATH, CEILINGPRECISE, CELL, CHAR, CHIDIST, CHIDISTRT, CHIINV, CHIINVRT, CHISQ, CHITEST, CHOOSE, CLEAN, CODE, COLUMN, COLUMNS, COMBIN, COMBINA, COMPLEX, CONCAT, CONCATENATE, CONFIDENCE, CONVERT, CORREL, COS, COSH, COT, COTH, COUNT, COUNTA, COUNTBLANK, COUNTIF, COUNTIFS, COUPDAYBS, COUPDAYS, COUPDAYSNC, COUPNCD, COUPNUM, COUPPCD, COVAR, COVARIANCE, COVARIANCEP, COVARIANCES, CRITBINOM, CSC, CSCH, CUMIPMT, CUMPRINC, DATE, DATEDIF, DATEVALUE, DAVERAGE, DAY, DAYS, DAYS360, DB, DBCS, DCOUNT, DCOUNTA, DDB, DEC2BIN, DEC2HEX, DEC2OCT, DECIMAL, DEGREES, DELTA, DEVSQ, DGET, DISC, DMAX, DMIN, DOLLAR, DOLLARDE, DOLLARFR, DPRODUCT, DSTDEV, DSTDEVP, DSUM, DURATION, DVAR, DVARP, EDATE, EFFECT, EOMONTH, ERF, ERFC, ERFCPRECISE, ERFPRECISE, ERROR, EVEN, EXACT, EXP, EXPON, EXPONDIST, F, FACT, FACTDOUBLE, FALSE, FDIST, FDISTRT, FIND, FINV, FINVRT, FISHER, FISHERINV, FIXED, FLOOR, FLOORMATH, FLOORPRECISE, FORECAST, FREQUENCY, FTEST, FV, FVSCHEDULE, GAMMA, GAMMADIST, GAMMAINV, GAMMALN, GAMMALNPRECISE, GAUSS, GCD, GEOMEAN, GESTEP, GROWTH, HARMEAN, HEX2BIN, HEX2DEC, HEX2OCT, HLOOKUP, HOUR, HYPGEOM, HYPGEOMDIST, IF, IFERROR, IFNA, IFS, IMABS, IMAGINARY, IMARGUMENT, IMCONJUGATE, IMCOS, IMCOSH, IMCOT, IMCSC, IMCSCH, IMDIV, IMEXP, IMLN, IMLOG10, IMLOG2, IMPOWER, IMPRODUCT, IMREAL, IMSEC, IMSECH, IMSIN, IMSINH, IMSQRT, IMSUB, IMSUM, IMTAN, INDEX, INFO, INT, INTERCEPT, INTRATE, IPMT, IRR, ISBLANK, ISERR, ISERROR, ISEVEN, ISFORMULA, ISLOGICAL, ISNA, ISNONTEXT, ISNUMBER, ISO, ISODD, ISOWEEKNUM, ISPMT, ISREF, ISTEXT, KURT, LARGE, LCM, LEFT, LEN, LINEST, LN, LOG, LOG10, LOGEST, LOGINV, LOGNORM, LOGNORMDIST, LOGNORMINV, LOOKUP, LOWER, MATCH, MAX, MAXA, MAXIFS, MDURATION, MEDIAN, MID, MIN, MINA, MINIFS, MINUTE, MIRR, MMULT, MOD, MODE, MODEMULT, MODESNGL, MONTH, MROUND, MULTINOMIAL, MUNIT, N, NA, NEGBINOM, NEGBINOMDIST, NETWORKDAYS, NETWORKDAYSINTL, NOMINAL, NORM, NORMDIST, NORMINV, NORMSDIST, NORMSINV, NOT, NOW, NPER, NPV, NUMBERVALUE, OCT2BIN, OCT2DEC, OCT2HEX, ODD, ODDFPRICE, ODDFYIELD, ODDLPRICE, ODDLYIELD, OR, PDURATION, PEARSON, PERCENTILE, PERCENTILEEXC, PERCENTILEINC, PERCENTRANK, PERCENTRANKEXC, PERCENTRANKINC, PERMUT, PERMUTATIONA, PHI, PI, PMT, POISSON, POISSONDIST, POWER, PPMT, PRICE, PRICEDISC, PRICEMAT, PROB, PRODUCT, PRONETIC, PROPER, PV, QUARTILE, QUARTILEEXC, QUARTILEINC, QUOTIENT, RADIANS, RAND, RANDBETWEEN, RANK, RANKAVG, RANKEQ, RATE, RECEIVED, REPLACE, REPT, RIGHT, ROMAN, ROUND, ROUNDDOWN, ROUNDUP, ROW, ROWS, RRI, RSQ, SEARCH, SEC, SECH, SECOND, SERIESSUM, SHEET, SHEETS, SIGN, SIN, SINH, SKEW, SKEWP, SLN, SLOPE, SMALL, SORT, SQRT, SQRTPI, STANDARDIZE, STDEV, STDEVA, STDEVP, STDEVPA, STDEVS, STEYX, SUBSTITUTE, SUBTOTAL, SUM, SUMIF, SUMIFS, SUMPRODUCT, SUMSQ, SUMX2MY2, SUMX2PY2, SUMXMY2, SWITCH, SYD, T, TAN, TANH, TBILLEQ, TBILLPRICE, TBILLYIELD, TDIST, TDISTRT, TEXT, TEXTJOIN, TIME, TIMEVALUE, TINV, TODAY, TRANSPOSE, TREND, TRIM, TRIMMEAN, TRUE, TRUNC, TTEST, TYPE, UNICHAR, UNICODE, UNIQUE, UPPER, VALUE, VAR, VARA, VARP, VARPA, VARS, VDB, VLOOKUP, WEEKDAY, WEEKNUM, WEIBULL, WEIBULLDIST, WORKDAY, WORKDAYINTL, XIRR, XNPV, XOR, YEAR, YEARFRAC, YIELD, YIELDDISC, YIELDMAT, Z, ZTEST, utils };\n", "import { $, app, store } from './common'\nimport { cm, numaraHints, keywords } from './editor'\nimport { checkLocale } from './utils'\n\nimport { DateTime } from 'luxon'\nimport { all, create, factory } from 'mathjs'\n\nimport * as formulajs from '@formulajs/formulajs'\n\nexport const math = create(all)\n\n// Import Formula.js into MathJs\nmath.import(factory('xls', [], () => formulajs))\n\n// Expose math to global scope for use in function-plot.\nwindow.math = math\n\nconst nowFormat = 'D t'\nconst nowDayFormat = 'ccc, D t'\n\nconst todayFormat = 'D'\nconst todayDayFormat = 'ccc, D'\n\n/** Calculate answers. */\nexport function calculate() {\n if (app.refreshCM) {\n cm.refresh()\n }\n\n let answers = ''\n let answerCopy = ''\n\n const avgs = []\n const totals = []\n const subtotals = []\n\n const dateTime = DateTime.now().setLocale(app.settings.locale)\n\n app.mathScope = {}\n app.mathScope.now = dateTime.toFormat(app.settings.dateDay ? nowDayFormat : nowFormat)\n app.mathScope.today = dateTime.toFormat(app.settings.dateDay ? todayDayFormat : todayFormat)\n\n $('#clearButton').setAttribute('disabled', cm.getValue() === '')\n $('#copyButton').setAttribute('disabled', cm.getValue() === '')\n\n cm.eachLine((cmLine) => {\n const cmLineNo = cm.getLineNumber(cmLine)\n const lineNo = cmLineNo + 1\n\n let answer = ''\n let line = cmLine.text.trim().split('//')[0].split('#')[0]\n\n cm.removeLineClass(cmLine, 'gutter', 'lineNoError')\n\n if (app.settings.rulers) {\n cm.removeLineClass(cmLine, 'wrap', 'noRuler')\n cm.addLineClass(cmLine, 'wrap', 'ruler')\n } else {\n cm.removeLineClass(cmLine, 'wrap', 'ruler')\n cm.addLineClass(cmLine, 'wrap', 'noRuler')\n }\n\n if (line) {\n try {\n line =\n lineNo > 1 &&\n line.charAt(0).match(/[+\\-*/]/) &&\n cm.getLine(lineNo - 2).length > 0 &&\n app.settings.contPrevLine\n ? app.mathScope.ans + line\n : line\n\n if (checkLocale()) {\n line = line.replace(/[,;]/g, (match) => (match === ',' ? '.' : ','))\n }\n\n app.mathScope.avg = math.evaluate(avgs.length > 0 ? '(' + math.mean(avgs) + ')' : '0')\n app.mathScope.total = math.evaluate(totals.length > 0 ? '(' + totals.join('+') + ')' : '0')\n app.mathScope.subtotal = math.evaluate(subtotals.length > 0 ? '(' + subtotals.join('+') + ')' : '0')\n\n try {\n answer = math.evaluate(line, app.mathScope)\n } catch {\n answer = evaluate(line)\n }\n\n if (answer || answer === 0) {\n app.mathScope._ = answer\n app.mathScope.ans = answer\n app.mathScope['line' + lineNo] = answer\n\n if (typeof answer === 'number') {\n avgs.push(answer)\n totals.push(answer)\n subtotals.push(answer)\n }\n\n answer = math.format(answer, {\n notation: app.settings.notation,\n lowerExp: +app.settings.expLower,\n upperExp: +app.settings.expUpper\n })\n\n const answerCopyInit = answer\n\n answer = formatAnswer(answer, false)\n answerCopy = formatAnswer(answerCopyInit, true)\n\n if (answer.match(/\\w\\(x\\)/)) {\n const plotAns = (/\\w\\(x\\)$/.test(answer) && line !== 'ans' ? line : answer).replace(/\\s+/g, '')\n\n app.mathScope.ans = plotAns\n app.mathScope['line' + lineNo] = plotAns\n\n answer = `Plot`\n }\n } else {\n subtotals.length = 0\n\n answer = ''\n }\n } catch (error) {\n if (app.settings.lineErrors) {\n cm.addLineClass(cmLineNo, 'gutter', 'lineNoError')\n\n answer = `Error`\n }\n }\n } else {\n subtotals.length = 0\n }\n\n const lineHeight = cm.display.lineDiv.children[cmLineNo].clientHeight\n\n answers += `\n ${answer}\n
    `\n })\n\n $('#output').innerHTML = answers\n\n const scopeKeywords = keywords.map((key) => key.text)\n const vars = Object.keys(app.mathScope).filter((scope) => !scopeKeywords.includes(scope))\n\n vars.forEach((v) => {\n if (!numaraHints.some((hint) => hint.text === v) && v !== 'line' + cm.lineCount()) {\n numaraHints.push({ text: v, desc: 'Variable', className: 'cm-variable' })\n }\n })\n\n if (app.activePage) {\n const pages = store.get('pages')\n const page = pages.find((page) => page.id === app.activePage)\n\n page.data = cm.getValue()\n page.history = cm.getHistory()\n\n store.set('pages', pages)\n }\n}\n\n/** Secondary evaluate method to try if math.evaluate fails */\nfunction evaluate(line) {\n if (line.match(/:/)) {\n try {\n math.evaluate(line.split(':')[0])\n } catch {\n line = line.substring(line.indexOf(':') + 1)\n }\n }\n\n const dateTimeReg =\n /[+-] * .* *(millisecond|second|minute|hour|day|week|month|quarter|year|decade|century|centuries|millennium|millennia)s?/g\n\n if (line.match(dateTimeReg)) {\n line = line.replace('now', app.mathScope.now).replace('today', app.mathScope.today)\n\n const lineDate = line.replace(dateTimeReg, '').trim()\n const lineDateRight = line.replace(lineDate, '').trim()\n const locale = { locale: app.settings.locale }\n const lineDateNow = DateTime.fromFormat(lineDate, app.settings.dateDay ? nowDayFormat : nowFormat, locale)\n const lineDateToday = DateTime.fromFormat(lineDate, app.settings.dateDay ? todayDayFormat : todayFormat, locale)\n const lineDateTime = lineDateNow.isValid ? lineDateNow : lineDateToday.isValid ? lineDateToday : false\n const rightOfDate = String(math.evaluate(lineDateRight + ' to hours', app.mathScope))\n const durHrs = Number(rightOfDate.split(' ')[0])\n\n if (lineDateTime) {\n const dtLine = lineDateTime\n .plus({ hours: durHrs })\n .toFormat(\n lineDateNow.isValid\n ? app.settings.dateDay\n ? nowDayFormat\n : nowFormat\n : app.settings.dateDay\n ? todayDayFormat\n : todayFormat\n )\n\n line = `\"${dtLine}\"`\n } else {\n return 'Invalid Date'\n }\n }\n\n const pcntOfReg = /%[ ]*of[ ]*/g\n const pcntOfValReg = /[\\w.]*%[ ]*of[ ]*/g\n\n if (line.match(pcntOfValReg)) {\n line = line.replaceAll(pcntOfReg, '/100*')\n }\n\n return math.evaluate(line, app.mathScope)\n}\n\nfunction stripAnswer(answer) {\n let t = answer.length\n\n if (answer.charAt(0) === '\"') {\n answer = answer.substring(1, t--)\n }\n\n if (answer.charAt(--t) === '\"') {\n answer = answer.substring(0, t)\n }\n\n return answer\n}\n\n/**\n * Format answer.\n *\n * @param {*} answer Value to format.\n * @param {boolean} separator Include thousands separator - True|False\n * @returns\n */\nexport function formatAnswer(answer, separator) {\n answer = String(answer)\n\n if (['bin', 'hex', 'oct'].includes(app.settings.notation)) {\n return stripAnswer(answer)\n }\n\n const a = answer.trim().split(' ')[0]\n const b = answer.replace(a, '')\n const digits = {\n maximumFractionDigits: app.settings.precision,\n useGrouping: separator ? app.settings.copyThouSep : app.settings.thouSep\n }\n\n const formattedAnswer =\n !a.includes('e') && !isNaN(a)\n ? Number(a).toLocaleString(app.settings.locale, digits) + b\n : a.match(/e[+-]?\\d+/) && !isNaN(a.split('e')[0])\n ? Number(a.split('e')[0]).toLocaleString(app.settings.locale, digits) + 'e' + answer.split('e')[1]\n : stripAnswer(answer)\n\n return formattedAnswer\n}\n", "import { $, app, store } from './common'\nimport { calculate, formatAnswer, math } from './eval'\n\nimport * as formulajs from '@formulajs/formulajs'\n\nimport UIkit from 'uikit'\n\nimport CodeMirror from 'codemirror'\n\nimport 'codemirror/mode/javascript/javascript'\nimport 'codemirror/addon/dialog/dialog'\nimport 'codemirror/addon/display/placeholder'\nimport 'codemirror/addon/edit/closebrackets'\nimport 'codemirror/addon/edit/matchbrackets'\nimport 'codemirror/addon/hint/show-hint'\nimport 'codemirror/addon/search/jump-to-line'\nimport 'codemirror/addon/search/search'\nimport 'codemirror/addon/search/searchcursor'\n\n/** CodeMirror input panel. */\nexport const cm = CodeMirror.fromTextArea($('#inputArea'), {\n autofocus: true,\n coverGutterNextToScrollbar: true,\n extraKeys: { 'Ctrl-Space': 'autocomplete' },\n flattenSpans: true,\n mode: 'numara',\n smartIndent: false,\n theme: 'numara',\n viewportMargin: Infinity\n})\n\n// User defined functions and units editors\nconst udOptions = {\n autoCloseBrackets: true,\n autofocus: true,\n mode: 'javascript',\n tabSize: 2\n}\n\nconst udfPlaceholder = 'xyz: (x, y, z) => {\\n\\treturn x+y+z\\n},\\n\\nmyConstant: 123'\nconst uduPlaceholder = 'foo: \"18 foot\",\\nbar: \"40 foo\"'\n\n$('#udfInput').setAttribute('placeholder', udfPlaceholder)\n$('#uduInput').setAttribute('placeholder', uduPlaceholder)\n\nexport const udfInput = CodeMirror.fromTextArea($('#udfInput'), udOptions)\nexport const uduInput = CodeMirror.fromTextArea($('#uduInput'), udOptions)\n\n/**\n * Refresh editor and focus.\n *\n * @param {CodeMirror} editor CodeMirror instance to refresh\n */\nexport function refreshEditor(editor) {\n editor.refresh()\n\n setTimeout(() => {\n editor.focus()\n }, 100)\n}\n\n// Codemirror syntax templates\nCodeMirror.defineMode('numara', () => ({\n token: (stream) => {\n if (stream.match(/\\/\\/.*/) || stream.match(/#.*/)) {\n return 'comment'\n }\n\n if (stream.match(/\\d/)) {\n return 'number'\n }\n\n if (stream.match(/(?:\\+|-|\\*|\\/|,|;|\\.|:|@|~|=|>|<|&|\\||`|'|\\^|\\?|!|%)/)) {\n return 'operator'\n }\n\n if (stream.match(/\\b(?:xls.)\\b/)) {\n return 'formulajs'\n }\n\n stream.eatWhile(/\\w/)\n\n const cmStream = stream.current()\n\n if (\n app.settings.currency &&\n (Object.keys(app.currencyRates).some((curr) => app.currencyRates[curr].code === cmStream) || cmStream === 'USD')\n ) {\n return 'currency'\n }\n\n if (typeof math[cmStream] === 'function' && Object.getOwnPropertyNames(math[cmStream]).includes('signatures')) {\n return 'function'\n }\n\n if (app.udfList.includes(cmStream)) {\n return 'udf'\n }\n\n if (app.uduList.includes(cmStream)) {\n return 'udu'\n }\n\n if (cmStream.match(/\\b(?:_|ans|total|subtotal|avg|today|now)\\b/)) {\n return 'keyword'\n }\n\n if (cmStream.match(/\\b(?:line\\d+)\\b/)) {\n return 'lineNo'\n }\n\n if (typeof formulajs[cmStream] === 'function' && stream.string.startsWith('xls.')) {\n return 'excel'\n }\n\n try {\n const val = math.evaluate(cmStream)\n const par = math.parse(cmStream)\n\n if (val.units && val) {\n return 'unit'\n }\n\n if (par.isSymbolNode && val) {\n return 'constant'\n }\n } catch {\n /** Ignore catch */\n }\n\n try {\n math.evaluate(cmStream)\n } catch {\n return 'variable'\n }\n\n stream.next()\n\n return 'space'\n }\n}))\n\nCodeMirror.defineMode('plain', () => ({\n token: (stream) => {\n stream.next()\n\n return 'text'\n }\n}))\n\n// Codemirror autocomplete hints\nexport const numaraHints = []\n\nexport const keywords = [\n { text: '_', desc: 'Answer from last calculated line' },\n { text: 'ans', desc: 'Answer from last calculated line' },\n { text: 'avg', desc: 'Average of previous line values. Numbers only.' },\n { text: 'now', desc: 'Current date and time' },\n { text: 'subtotal', desc: 'Total of all lines in previous block. Numbers only.' },\n { text: 'today', desc: 'Current date' },\n { text: 'total', desc: 'Total of previous line values. Numbers only.' }\n]\n\nkeywords.forEach((key) => {\n key.className = 'cm-keyword'\n numaraHints.push(key)\n})\n\nObject.getOwnPropertyNames(math).forEach((f) => {\n if (typeof math[f] === 'function' && Object.getOwnPropertyNames(math[f]).includes('signatures')) {\n numaraHints.push({ text: f, className: 'cm-function' })\n }\n})\n\nObject.keys(formulajs).forEach((f) => {\n numaraHints.push({ text: 'xls.' + f, className: 'cm-excel' })\n})\n\nObject.values(math.Unit.UNITS).flatMap((unit) => {\n Object.values(unit.prefixes).forEach((prefix) => {\n const unitBase = unit.base.key.replaceAll('_', ' ').toLowerCase()\n const unitCat = unitBase.charAt(0).toUpperCase() + unitBase.slice(1)\n\n numaraHints.push({ text: prefix.name + unit.name, desc: unitCat + ' unit', className: 'cm-unit' })\n })\n})\n\nCodeMirror.registerHelper('hint', 'numaraHints', (editor) => {\n const cmCursor = editor.getCursor()\n const cmCursorLine = editor.getLine(cmCursor.line)\n\n let start = cmCursor.ch\n let end = start\n\n while (end < cmCursorLine.length && /[\\w.$]/.test(cmCursorLine.charAt(end))) {\n ++end\n }\n\n while (start && /[\\w.$]/.test(cmCursorLine.charAt(start - 1))) {\n --start\n }\n\n let curStr = cmCursorLine.slice(start, end)\n let curWord = start !== end && curStr\n\n const curWordRegex = new RegExp('^' + curWord, 'i')\n\n curWord = !curStr.endsWith('.') || curStr === 'xls.'\n\n return {\n list: !curWord\n ? []\n : numaraHints.filter(({ text }) => text.match(curWordRegex)).sort((a, b) => a.text.localeCompare(b.text)),\n from: CodeMirror.Pos(cmCursor.line, start),\n to: CodeMirror.Pos(cmCursor.line, end)\n }\n})\n\nCodeMirror.commands.autocomplete = (cm) => {\n CodeMirror.showHint(cm, CodeMirror.hint.numaraHints, {\n completeSingle: false,\n extraKeys: { Enter: 'newline' }\n })\n}\n\n// Force editor line bottom alignment\nfunction cmForceBottom() {\n const lineTop = cm.display.lineDiv.children[cm.getCursor().line].getBoundingClientRect().top\n const barTop = $('.CodeMirror-hscrollbar').getBoundingClientRect().top\n const lineHeight = +app.settings.lineHeight.replace('px', '') + 1\n\n if (barTop - lineTop < lineHeight) {\n $('#output').scrollTop = $('#output').scrollTop + (lineHeight - (barTop - lineTop))\n }\n}\n\n// Codemirror handlers\ncm.on('changes', calculate)\n\ncm.on('inputRead', (cm) => {\n if (app.settings.autocomplete) {\n CodeMirror.commands.autocomplete(cm)\n }\n})\n\ncm.on('cursorActivity', (cm) => {\n const activeLine = cm.getCursor().line\n\n cm.eachLine((line) => {\n const cmLineNo = cm.getLineNumber(line)\n\n if (cmLineNo === activeLine) {\n cm.addLineClass(cmLineNo, 'gutter', 'activeLine')\n } else {\n cm.removeLineClass(cmLineNo, 'gutter', 'activeLine')\n }\n })\n\n setTimeout(cmForceBottom, 20)\n\n const pages = store.get('pages')\n const page = pages.find((page) => page.id == app.activePage)\n\n page.cursor = cm.getCursor()\n\n store.set('pages', pages)\n})\n\ncm.on('gutterClick', (cm, line) => {\n const lineNo = line + 1\n\n cm.replaceSelection('line' + lineNo)\n})\n\ncm.on('scrollCursorIntoView', cmForceBottom)\n\n// Tooltips\nconst ttPos = (el) => (el.nodeName.toLowerCase() === 'li' ? 'right' : 'top-left')\n\ndocument.addEventListener('mouseover', (event) => {\n if (app.settings.keywordTips && event.target.classList[0]?.startsWith('cm-')) {\n switch (event.target.classList[0]) {\n case 'cm-function':\n try {\n const tip = JSON.parse(JSON.stringify(math.help(event.target.innerText).toJSON()))\n\n UIkit.tooltip(event.target, {\n pos: ttPos(event.target),\n title: tip.description\n })\n } catch {\n UIkit.tooltip(event.target, {\n pos: ttPos(event.target),\n title: 'Description not available'\n })\n }\n\n break\n\n case 'cm-udf':\n UIkit.tooltip(event.target, {\n pos: ttPos(event.target),\n title: 'User defined function'\n })\n\n break\n\n case 'cm-udu':\n UIkit.tooltip(event.target, {\n pos: ttPos(event.target),\n title: 'User defined unit'\n })\n\n break\n\n case 'cm-currency':\n try {\n const currency = event.target.innerText\n const currencyName = currency === 'USD' ? 'U.S. Dollar' : app.currencyRates[currency.toLowerCase()].name\n\n UIkit.tooltip(event.target, {\n pos: ttPos(event.target),\n title: currencyName\n })\n } catch {\n UIkit.tooltip(event.target, {\n pos: ttPos(event.target),\n title: 'Description not available'\n })\n }\n\n break\n\n case 'cm-unit': {\n UIkit.tooltip(event.target, {\n pos: ttPos(event.target),\n title: numaraHints.find((hint) => hint.text === event.target.innerText).desc\n })\n\n break\n }\n\n case 'cm-constant':\n try {\n UIkit.tooltip(event.target, {\n pos: ttPos(event.target),\n title: math.help(event.target.innerText).doc.description + ' (Constant)'\n })\n } catch {\n /* No tooltip */\n }\n\n break\n\n case 'cm-variable':\n if (app.mathScope[event.target.innerText] && typeof app.mathScope[event.target.innerText] !== 'function') {\n let varTooltip\n\n try {\n varTooltip = formatAnswer(math.evaluate(event.target.innerText, app.mathScope))\n } catch {\n varTooltip = 'Undefined'\n }\n\n UIkit.tooltip(event.target, {\n pos: ttPos(event.target),\n title: varTooltip\n })\n }\n\n break\n\n case 'cm-lineNo': {\n let tooltip\n\n try {\n tooltip =\n typeof app.mathScope[event.target.innerText] === 'function'\n ? 'Function'\n : formatAnswer(math.evaluate(event.target.innerText, app.mathScope))\n } catch {\n tooltip = 'Undefined'\n }\n\n UIkit.tooltip(event.target, {\n pos: ttPos(event.target),\n title: tooltip\n })\n\n break\n }\n\n case 'cm-keyword':\n UIkit.tooltip(event.target, {\n pos: ttPos(event.target),\n title: keywords.filter((key) => event.target.innerText === key.text)[0].desc\n })\n\n break\n\n case 'cm-formulajs':\n UIkit.tooltip(event.target, {\n pos: ttPos(event.target),\n title: 'Formulajs'\n })\n\n break\n\n case 'cm-excel':\n UIkit.tooltip(event.target, {\n pos: ttPos(event.target),\n title: 'Excel function'\n })\n\n break\n }\n\n UIkit.tooltip(event.target).show()\n }\n})\n", "import { $, $all } from './common'\nimport { cm, udfInput, uduInput } from './editor'\nimport { notify } from './modal'\nimport { isElectron } from './utils'\n\n/** Main context menus */\nfunction inputContext() {\n setTimeout(() => {\n const index = cm.getCursor().line\n const line = cm.getLine(index)\n const answer = $('#output').children[index].innerText\n const isEmpty = cm.getValue() === ''\n const isLine = line.length > 0\n const isSelection = cm.somethingSelected()\n const isMultiLine =\n cm.listSelections().length > 1 || cm.listSelections()[0].anchor.line !== cm.listSelections()[0].head.line\n const hasAnswer = answer !== '' && answer !== 'Error' && answer !== 'Plot'\n\n numara.inputContextMenu(index, isEmpty, isLine, isSelection, isMultiLine, hasAnswer)\n }, 20)\n}\n\n/** Output panel context menu. */\nfunction outputContext(event) {\n const answer = event.srcElement.innerText\n const index = event.srcElement.dataset.line || event.srcElement.parentElement.dataset.line || cm.lastLine()\n const hasAnswer = index !== null && answer !== '' && answer !== 'Error' && answer !== 'Plot'\n const isEmpty = cm.getValue() === ''\n\n numara.outputContextMenu(index, isEmpty, hasAnswer)\n}\n\n/** Textbox context menu. */\nfunction textboxContext() {\n setTimeout(() => {\n numara.textboxContextMenu()\n }, 20)\n}\n\n/** Copy line answer. */\nfunction copyLine(event, index) {\n index = +index\n\n const line = cm.getLine(index).trim()\n\n navigator.clipboard.writeText(line).then(notify(`Copied Line ${index + 1} to clipboard.`))\n}\n\n/** Copy line answer. */\nfunction copyAnswer(event, index, withLines) {\n index = +index\n\n const line = cm.getLine(index).trim()\n const answer = $('#output').children[index].children[0].dataset.copy\n const copiedText = withLines ? `${line} = ${answer}` : `${answer}`\n\n navigator.clipboard\n .writeText(copiedText)\n .then(notify(withLines ? `Copied Line ${index + 1} with answer to clipboard.` : `Copied '${answer}' to clipboard.`))\n}\n\n/** Copy all inputs. */\nfunction copyAllLines() {\n if (cm.getValue() === '') {\n notify('Nothing to copy.')\n } else {\n navigator.clipboard.writeText(cm.getValue()).then(notify('Copied all lines to clipboard.'))\n }\n}\n\n/** Copy all answers. */\nfunction copyAllAnswers() {\n if (cm.getValue() === '') {\n notify('Nothing to copy.')\n } else {\n let copiedOutputs = ''\n\n cm.eachLine((line) => {\n const index = cm.getLineNumber(line)\n\n copiedOutputs += `${$('#output').children[index].innerText}\\n`\n })\n\n navigator.clipboard.writeText(copiedOutputs).then(notify('Copied all answers to clipboard.'))\n }\n}\n\n/** Copy page. */\nexport function copyAll() {\n if (cm.getValue() === '') {\n notify('Nothing to copy.')\n } else {\n let copiedCalc = ''\n\n cm.eachLine((line) => {\n const index = cm.getLineNumber(line)\n\n line = line.text.trim()\n\n copiedCalc += line\n ? line.match(/^(#|\\/\\/)/)\n ? `${line}\\n`\n : `${line} = ${$('#output').children[index].innerText}\\n`\n : '\\n'\n })\n\n navigator.clipboard.writeText(copiedCalc).then(notify('Copied page to clipboard.'))\n }\n}\n\n// Context menus\nif (isElectron) {\n cm.on('contextmenu', inputContext)\n\n udfInput.on('contextmenu', textboxContext)\n uduInput.on('contextmenu', textboxContext)\n\n $('#output').addEventListener('contextmenu', outputContext)\n\n $all('.textBox').forEach((el) => {\n el.addEventListener('contextmenu', textboxContext)\n })\n\n numara.copyLine(copyLine)\n numara.copyAnswer(copyAnswer)\n numara.copyLineWithAnswer(copyAnswer)\n numara.copyAllLines(copyAllLines)\n numara.copyAllAnswers(copyAllAnswers)\n numara.copyAll(copyAll)\n}\n", "{\n \"name\": \"numara\",\n \"productName\": \"Numara\",\n \"description\": \"Numara Calculator\",\n \"version\": \"5.7.0\",\n \"author\": {\n \"name\": \"Timur Atalay\",\n \"email\": \"mail@numara.io\",\n \"url\": \"https://numara.io\"\n },\n \"license\": \"MIT\",\n \"homepage\": \"https://github.com/bornova/numara-calculator\",\n \"main\": \"src/main.js\",\n \"type\": \"module\",\n \"scripts\": {\n \"prebuild\": \"npm run prettier && npm run lint\",\n \"build\": \"node build.js\",\n \"dist\": \"npm run build && electron-builder\",\n \"lint\": \"eslint .\",\n \"lint:fix\": \"eslint --fix .\",\n \"prettier\": \"prettier --check .\",\n \"prettier:fix\": \"prettier --write .\",\n \"publish\": \"npm run build && electron-builder --x64 --arm64 -p always\",\n \"test\": \"npm run build && electron .\",\n \"wiki\": \"node src/misc/wiki.js\"\n },\n \"devDependencies\": {\n \"@eslint/js\": \"^9.14.0\",\n \"@formulajs/formulajs\": \"^4.4.8\",\n \"@melloware/coloris\": \"^0.24.0\",\n \"codemirror\": \"^5.65.18\",\n \"deep-diff\": \"^1.0.2\",\n \"electron\": \"^33.2.0\",\n \"electron-builder\": \"^25.1.8\",\n \"esbuild\": \"^0.24.0\",\n \"eslint\": \"^9.14.0\",\n \"fs-extra\": \"^11.2.0\",\n \"function-plot\": \"^1.25.1\",\n \"lucide\": \"^0.453.0\",\n \"luxon\": \"^3.5.0\",\n \"mathjs\": \"^13.2.1\",\n \"prettier\": \"^3.3.3\",\n \"tinykeys\": \"^3.0.0\",\n \"uikit\": \"^3.21.13\"\n },\n \"dependencies\": {\n \"electron-log\": \"^5.2.2\",\n \"electron-store\": \"^10.0.0\",\n \"electron-updater\": \"^6.3.9\"\n }\n}\n", "import { $, app, store } from './common'\nimport { math } from './eval'\n\nimport { productName } from './../../package.json'\n\nimport functionPlot from 'function-plot'\n\n/** Plot function. */\nexport function plot() {\n $('#plotTitle').innerHTML = app.plotFunction\n\n const f = math.simplify(app.plotFunction.split('=')[1], app.mathScope).toString()\n\n let domain = math.abs(math.evaluate(f, { x: 0 })) * 2\n\n if (domain === Infinity || domain === 0) {\n domain = 10\n }\n\n const xDomain = app.activePlot ? app.activePlot.meta.xScale.domain() : [-domain, domain]\n const yDomain = app.activePlot ? app.activePlot.meta.yScale.domain() : [-domain, domain]\n\n app.activePlot = functionPlot.default({\n data: [\n {\n derivative: app.settings.plotDerivative\n ? { fn: math.derivative(f, 'x').toString(), updateOnMouseMove: true }\n : false,\n fn: f,\n graphType: 'polyline',\n sampler: 'builtIn'\n }\n ],\n grid: app.settings.plotGrid,\n height: $('#plot').clientHeight,\n target: '#plot',\n tip: {\n xLine: app.settings.plotCross,\n yLine: app.settings.plotCross\n },\n width: $('#plot').clientWidth,\n xAxis: { domain: xDomain },\n yAxis: { domain: yDomain }\n })\n}\n\n$('#plotCrossModal').addEventListener('click', () => {\n app.settings.plotCross = $('#plotCrossModal').checked\n\n store.set('settings', app.settings)\n\n plot()\n})\n\n$('#plotDerivativeModal').addEventListener('click', () => {\n app.settings.plotDerivative = $('#plotDerivativeModal').checked\n\n store.set('settings', app.settings)\n\n plot()\n})\n\n$('#plotGridModal').addEventListener('click', () => {\n app.settings.plotGrid = $('#plotGridModal').checked\n\n store.set('settings', app.settings)\n\n plot()\n})\n\n$('#exportPlot').addEventListener('click', () => {\n $('.function-plot').setAttribute('xmlns', 'http://www.w3.org/2000/svg')\n\n const fileName = productName + ' Plot ' + app.plotFunction\n const preface = '\\r\\n'\n const svgData = $('.function-plot').outerHTML\n const svgBlob = new Blob([preface, svgData], { type: 'image/svg+xml;charset=utf-8' })\n const downloadLink = document.createElement('a')\n\n downloadLink.href = URL.createObjectURL(svgBlob)\n downloadLink.download = fileName\n downloadLink.click()\n\n setTimeout(() => URL.revokeObjectURL(downloadLink.href), 60000)\n})\n\n$('#resetPlot').addEventListener('click', () => {\n app.activePlot = null\n\n plot()\n})\n", "import { $, app, store } from './common'\nimport { cm, numaraHints } from './editor'\nimport { calculate, math } from './eval'\nimport { notify } from './modal'\n\nmath.createUnit('USD')\n\nnumaraHints.push({ text: 'USD', desc: 'U.S. Dollar', className: 'cm-currency' })\n\n/** Get exchange rates. */\nexport function getRates() {\n const url = 'https://www.floatrates.com/widget/1030/cfc5515dfc13ada8d7b0e50b8143d55f/usd.json'\n\n if (navigator.onLine) {\n $('#lastUpdated').innerHTML = '
    '\n\n fetch(url)\n .then((response) => response.json())\n .then((rates) => {\n app.currencyRates = rates\n\n Object.keys(rates).forEach((currency) => {\n math.createUnit(\n rates[currency].code,\n { definition: math.unit(rates[currency].inverseRate + 'USD') },\n { override: true }\n )\n\n if (!numaraHints.some((hint) => hint.text === rates[currency].code)) {\n numaraHints.push({ text: rates[currency].code, desc: rates[currency].name, className: 'cm-currency' })\n }\n\n store.set('rateDate', rates[currency].date)\n })\n\n $('#lastUpdated').innerHTML = store.get('rateDate')\n\n cm.setOption('mode', app.settings.syntax ? 'numara' : 'plain')\n\n calculate()\n })\n .catch((error) => {\n $('#lastUpdated').innerHTML = 'n/a'\n\n notify('Failed to get exchange rates (' + error + ')', 'warning')\n })\n } else {\n $('#lastUpdated').innerHTML = 'No internet connection.'\n\n notify('No internet connection. Could not update exchange rates.', 'warning')\n }\n}\n", "import { colors } from './colors'\nimport { $, $all, app, store } from './common'\nimport { cm, udfInput, uduInput } from './editor'\nimport { calculate, math } from './eval'\nimport { getRates } from './forex'\nimport { generateIcons } from './icons'\nimport { confirm, showError } from './modal'\nimport { checkLocale, checkSize, getTheme, isElectron } from './utils'\n\nimport DeepDiff from 'deep-diff'\n\n/** Show/hide Defaults link. */\nfunction checkDefaults() {\n $('#defaultSettingsButton').style.display = DeepDiff.diff(app.settings, settings.defaults) ? 'inline' : 'none'\n}\n\n/** Show warning if big number option is selected. */\nfunction bigNumberWarning() {\n $('#bigNumWarn').style.display = app.settings.numericOutput === 'BigNumber' ? 'inline-block' : 'none'\n}\n\n/** Show warning if locale uses comma as decimal point separator. */\nfunction localeWarning() {\n $('#localeWarn').style.display = checkLocale() ? 'inline-block' : 'none'\n}\n\n/** Check for app settings modifications. */\nfunction checkMods(key) {\n $('#' + key + 'Mod').style.display = app.settings[key] !== settings.defaults[key] ? 'inline-block' : 'none'\n}\n\n/** Check for app settings schema changes. */\nfunction checkSchema() {\n app.settings = store.get('settings')\n\n DeepDiff.observableDiff(app.settings, settings.defaults, (d) => {\n if (d.kind !== 'E') {\n DeepDiff.applyChange(app.settings, settings.defaults, d)\n\n store.set('settings', app.settings)\n }\n })\n}\n\nlet updateIterval\n\nexport const settings = {\n /** Default settings. */\n defaults: {\n alwaysOnTop: false,\n autocomplete: true,\n closeBrackets: true,\n contPrevLine: true,\n copyThouSep: false,\n currency: true,\n currencyInterval: '0',\n dateDay: false,\n divider: true,\n expLower: '-12',\n expUpper: '12',\n fontSize: '1.1rem',\n fontWeight: '400',\n inputWidth: 60,\n keywordTips: true,\n lineErrors: true,\n lineHeight: '24px',\n lineNumbers: true,\n lineWrap: true,\n locale: 'system',\n matchBrackets: true,\n matrixType: 'Matrix',\n notation: 'auto',\n notifyDuration: '5000',\n notifyLocation: 'bottom-center',\n numericOutput: 'number',\n plotCross: false,\n plotDerivative: false,\n plotGrid: false,\n precision: '4',\n predictable: false,\n rulers: false,\n syntax: true,\n theme: 'system',\n thouSep: true\n },\n\n /** Initialize settings. */\n initialize: () => {\n if (store.get('settings')) {\n checkSchema()\n } else {\n store.set('settings', settings.defaults)\n }\n\n app.settings = store.get('settings')\n\n // Get exchange rates\n if (app.settings.currency) {\n getRates()\n }\n\n // Start required line height fix\n if (app.settings.lineHeight.endsWith('em')) {\n switch (app.settings.lineHeight) {\n case '1.5em':\n app.settings.lineHeight = '16px'\n break\n case '1.75em':\n app.settings.lineHeight = '20px'\n break\n case '2em':\n app.settings.lineHeight = '24px'\n break\n case '2.5em':\n app.settings.lineHeight = '28px'\n break\n case '3em':\n app.settings.lineHeight = '32px'\n break\n }\n\n store.set('settings', app.settings)\n }\n // End fix\n\n settings.apply()\n\n $all('.settingItem').forEach((item) => {\n const span = document.createElement('span')\n const icon = document.createElement('span')\n\n icon.setAttribute('data-lucide', 'dot')\n\n span.setAttribute('id', item.getAttribute('id') + 'Mod')\n span.setAttribute('class', item.getAttribute('type') === 'checkbox' ? 'settingModToggle' : 'settingMod')\n\n span.appendChild(icon)\n\n span.addEventListener('click', () => {\n const key = item.getAttribute('id')\n\n app.settings[key] = settings.defaults[key]\n\n settings.prep()\n settings.save()\n settings.apply()\n })\n\n if (item.getAttribute('type') === 'checkbox') {\n item.parentElement.before(span)\n } else {\n item.before(span)\n }\n\n generateIcons()\n })\n },\n\n /** Prepare settings dialog items. */\n prep: () => {\n const locales = [\n ['System', 'system'],\n ['Chinese (PRC)', 'zh-CN'],\n ['English (Canada)', 'en-CA'],\n ['English (UK)', 'en-GB'],\n ['English (US)', 'en-US'],\n ['French (France)', 'fr-FR'],\n ['German (Germany)', 'de-DE'],\n ['Italian (Italy)', 'it-IT'],\n ['Japanese (Japan)', 'ja-JP'],\n ['Portuguese (Brazil)', 'pt-BR'],\n ['Russian (Russia)', 'ru-RU'],\n ['Spanish (Mexico)', 'es-MX'],\n ['Spanish (Spain)', 'es-ES'],\n ['Turkish (Turkey)', 'tr-TR']\n ]\n\n const matrixTypes = ['Matrix', 'Array']\n const numericOutputs = ['number', 'BigNumber', 'Fraction']\n const notations = ['auto', 'engineering', 'exponential', 'fixed', '-', 'bin', 'hex', 'oct']\n\n $('#locale').innerHTML = ''\n\n for (const l of locales) {\n $('#locale').innerHTML += ``\n }\n\n $('#precision-label').innerHTML = app.settings.precision\n $('#expLower-label').innerHTML = app.settings.expLower\n $('#expUpper-label').innerHTML = app.settings.expUpper\n\n $('#numericOutput').innerHTML = ''\n\n for (const n of numericOutputs) {\n $('#numericOutput').innerHTML += ``\n }\n\n $('#notation').innerHTML = ''\n\n for (const n of notations) {\n $('#notation').innerHTML +=\n n === '-'\n ? ''\n : ``\n }\n\n $('#matrixType').innerHTML = ''\n\n for (const m of matrixTypes) {\n $('#matrixType').innerHTML += ``\n }\n\n $('#lastUpdated').innerHTML = app.settings.currency ? store.get('rateDate') : ''\n $('#currencyUpdate').style.visibility = app.settings.currency ? 'visible' : 'hidden'\n\n Object.keys(app.settings).forEach((key) => {\n const el = $('#' + key)\n\n if (el) {\n if (el.getAttribute('type') === 'checkbox') {\n el.checked = app.settings[key]\n } else {\n el.value = app.settings[key]\n }\n\n checkMods(key)\n }\n })\n\n checkSize()\n checkDefaults()\n localeWarning()\n bigNumberWarning()\n\n settings.toggleSubs()\n },\n\n /** Apply settings. */\n apply: () => {\n const appTheme = getTheme()\n\n $('#style').setAttribute('href', 'css/' + appTheme + '.css')\n $('#numaraLogo').setAttribute('src', 'assets/logo-' + appTheme + '.png')\n\n setTimeout(() => {\n colors.apply()\n }, 50)\n\n const udfuTheme =\n app.settings.theme === 'system'\n ? isElectron\n ? numara.isDark()\n ? 'material-darker'\n : 'default'\n : 'default'\n : app.settings.theme === 'light'\n ? 'default'\n : 'material-darker'\n\n udfInput.setOption('theme', udfuTheme)\n uduInput.setOption('theme', udfuTheme)\n\n if (isElectron) {\n numara.setTheme(app.settings.theme)\n numara.setOnTop(app.settings.alwaysOnTop)\n }\n\n const elements = $all('.panelFont, .input .CodeMirror')\n\n for (const el of elements) {\n el.style.fontSize = app.settings.fontSize\n el.style.fontWeight = app.settings.fontWeight\n el.style.setProperty('line-height', app.settings.lineHeight, 'important')\n }\n\n $('#input').style.width = (app.settings.divider ? app.settings.inputWidth : settings.defaults.inputWidth) + '%'\n $('#panelDivider').style.display = app.settings.divider ? 'block' : 'none'\n $('#output').style.textAlign = app.settings.divider ? 'left' : 'right'\n\n cm.setOption('mode', app.settings.syntax ? 'numara' : 'plain')\n cm.setOption('lineNumbers', app.settings.lineNumbers)\n cm.setOption('lineWrapping', app.settings.lineWrap)\n cm.setOption('matchBrackets', app.settings.syntax && app.settings.matchBrackets ? { maxScanLines: 1 } : false)\n cm.setOption('autoCloseBrackets', app.settings.closeBrackets)\n\n math.config({\n matrix: app.settings.matrixType,\n number: app.settings.numericOutput,\n predictable: app.settings.predictable\n })\n\n if (app.settings.currency) {\n if (app.settings.currencyInterval === '0') {\n clearInterval(updateIterval)\n store.set('rateInterval', false)\n } else {\n clearInterval(updateIterval)\n updateIterval = setInterval(getRates, +app.settings.currencyInterval)\n store.set('rateInterval', true)\n }\n }\n\n if (app.settings.currencyInterval === '0') {\n clearInterval(updateIterval)\n } else {\n clearInterval(updateIterval)\n updateIterval = setInterval(getRates, +app.settings.currencyInterval)\n }\n\n setTimeout(calculate, 10)\n },\n\n /** Save settings to local storage. */\n save: () => {\n Object.keys(app.settings).forEach((key) => {\n const el = $('#' + key)\n\n if (el) {\n app.settings[key] = el.getAttribute('type') === 'checkbox' ? el.checked : el.value\n\n checkMods(key)\n }\n })\n\n if (!$('#currency').checked) {\n localStorage.removeItem('rateDate')\n\n app.currencyRates = {}\n }\n\n $('#currencyUpdate').style.visibility = $('#currency').checked ? 'visible' : 'hidden'\n $('#currencyWarn').style.display = app.settings.currency ? 'none' : 'inline-block'\n\n if (!store.get('rateDate') && app.settings.currency) {\n getRates()\n }\n\n checkDefaults()\n localeWarning()\n bigNumberWarning()\n\n settings.toggleSubs()\n\n store.set('settings', app.settings)\n },\n\n /** Toggle settings sliders to enabled/disabled based on parent setting. */\n toggleSubs: () => {\n $('#expUpper').disabled = app.settings.notation !== 'auto'\n $('#expLower').disabled = app.settings.notation !== 'auto'\n $('#keywordTips').disabled = !app.settings.syntax\n $('#matchBrackets').disabled = !app.settings.syntax\n $('#copyThouSep').disabled = !app.settings.thouSep\n $('#currencyInterval').disabled = !app.settings.currency\n $('#updateRatesLink').dataset.enabled = app.settings.currency\n\n $('#expUpper').parentNode.style.opacity = app.settings.notation === 'auto' ? '1' : '0.5'\n $('#expLower').parentNode.style.opacity = app.settings.notation === 'auto' ? '1' : '0.5'\n $('#keywordTips').parentNode.style.opacity = app.settings.syntax ? '1' : '0.5'\n $('#matchBrackets').parentNode.style.opacity = app.settings.syntax ? '1' : '0.5'\n $('#copyThouSep').parentNode.style.opacity = app.settings.thouSep ? '1' : '0.5'\n\n $('#expUpperMod').style.pointerEvents = app.settings.notation === 'auto' ? 'auto' : 'none'\n $('#expLowerMod').style.pointerEvents = app.settings.notation === 'auto' ? 'auto' : 'none'\n $('#keywordTipsMod').style.pointerEvents = app.settings.syntax ? 'auto' : 'none'\n $('#matchBracketsMod').style.pointerEvents = app.settings.syntax ? 'auto' : 'none'\n $('#copyThouSepMod').style.pointerEvents = app.settings.thouSep ? 'auto' : 'none'\n\n $('#expUpperMod').parentNode.style.opacity = app.settings.notation === 'auto' ? '1' : '0.5'\n $('#expLowerMod').parentNode.style.opacity = app.settings.notation === 'auto' ? '1' : '0.5'\n $('#keywordTipsMod').parentNode.style.opacity = app.settings.syntax ? '1' : '0.5'\n $('#matchBracketsMod').parentNode.style.opacity = app.settings.syntax ? '1' : '0.5'\n $('#copyThouSepMod').parentNode.style.opacity = app.settings.thouSep ? '1' : '0.5'\n }\n}\n\n$('#defaultSettingsButton').addEventListener('click', () => {\n confirm('All settings will revert back to defaults.', () => {\n app.settings = JSON.parse(JSON.stringify(settings.defaults))\n app.colors = JSON.parse(JSON.stringify(colors.defaults))\n\n store.set('settings', app.settings)\n store.set('colors', app.colors)\n\n settings.prep()\n settings.save()\n settings.apply()\n })\n})\n\n$('#dialog-settings-reset').addEventListener('click', () => {\n confirm('All user settings and data will be lost.', () => {\n if (isElectron) {\n numara.resetApp()\n } else {\n localStorage.clear()\n location.reload()\n }\n })\n})\n\nif (isElectron) {\n $('#resetSizeButton').addEventListener('click', numara.resetSize)\n}\n\n$('#localeWarn').addEventListener('click', () => {\n showError(\n 'Caution: Locale',\n `Your locale (${app.settings.locale}) uses comma (,) as decimal separator. Therefore, you must use semicolon (;) as argument separator when using functions.

    Ex. sum(1;3) // 4`\n )\n})\n\n$('#bigNumWarn').addEventListener('click', () => {\n showError(\n 'Caution: BigNumber Limitations',\n `Using the BigNumber may break function plotting and is not compatible with some math functions. \n It may also cause unexpected behavior and affect overall performance.

    \n Read more on BigNumbers`\n )\n})\n\n$('#currencyWarn').addEventListener('click', () => {\n showError('App restart needed', `Currencies used in existing calculations will be removed after app restart.`)\n})\n\n$('#precision').addEventListener('input', () => {\n $('#precision-label').innerHTML = $('#precision').value\n})\n\n$('#expLower').addEventListener('input', () => {\n $('#expLower-label').innerHTML = $('#expLower').value\n})\n\n$('#expUpper').addEventListener('input', () => {\n $('#expUpper-label').innerHTML = $('#expUpper').value\n})\n\n$('#updateRatesLink').addEventListener('click', getRates)\n\n$all('.settingItem').forEach((el) => {\n el.addEventListener('change', () => {\n settings.save()\n settings.apply()\n })\n})\n", "import { $, $all, app, store } from './common'\nimport { cm } from './editor'\nimport { generateIcons } from './icons'\nimport { confirm, modal, notify } from './modal'\nimport { isElectron } from './utils'\n\nimport { DateTime } from 'luxon'\n\nimport UIkit from 'uikit'\n\n/** Migrate old saved calculations to pages */\nexport function migrateSaved() {\n const saved = store.get('saved')\n const pages = store.get('pages')\n\n if (saved) {\n Object.entries(saved).forEach(([id, val]) => {\n pages.push({ id, name: val[0], data: val[1] })\n })\n\n store.set('pages', pages)\n\n localStorage.removeItem('saved')\n }\n}\n\n/** Get page name/number to use */\nexport function getPageName() {\n const pages = store.get('pages')\n\n let pageNo = 1\n\n if (pages) {\n const regex = new RegExp(/\\b(Page \\d+)$\\b/)\n const pageNos = pages\n .filter((page) => regex.test(page.name.trim()))\n .map((page) => +page.name.split(' ')[1])\n .sort((a, b) => a - b)\n\n const max = Math.max(...pageNos)\n\n if (pageNos[0] === 1) {\n for (let i = 0; i < max; i++) {\n if (pageNos[i + 1] !== pageNos[i] + 1) {\n pageNo = pageNos[i] + 1\n break\n }\n }\n }\n }\n\n return 'Page ' + pageNo\n}\n\n/** Get last page from store */\nexport const lastPage = () => store.get('lastPage')\n\n/** Populate the page list in side bar */\nexport function populatePages() {\n const pages = store.get('pages')\n\n if (!pages || pages.length === 0) {\n defaultPage()\n }\n\n $('#pageList').innerHTML = ''\n\n pages.forEach((page) => {\n const pageListItem = document.createElement('div')\n\n pageListItem.id = page.id\n pageListItem.classList.add(\n 'pageListItem',\n 'uk-flex',\n 'uk-flex-middle',\n app.activePage === page.id ? 'activePage' : 'inactivePage'\n )\n pageListItem.innerHTML = `\n
    \n
    ${page.name}
    \n
    ${DateTime.fromFormat(page.id, 'yyyyMMddHHmmssSSS').toFormat('FF')}
    \n
    \n
    \n \n
    \n
    Rename
    \n
    Duplicate
    \n
    Delete
    \n
    \n
    \n `\n\n pageListItem.addEventListener('click', (event) => {\n if (event.target.parentNode.dataset.action === 'load') {\n loadPage(page.id)\n\n UIkit.offcanvas('#sidePanel').hide()\n }\n\n switch (event.target.dataset.action) {\n case 'rename':\n UIkit.dropdown(event.target.parentNode).hide(0)\n renamePage(page.id)\n break\n case 'delete':\n deletePage(page.id)\n break\n case 'duplicate':\n duplicatePage(page.id)\n break\n }\n })\n\n $('#pageList').appendChild(pageListItem)\n })\n\n generateIcons()\n}\n\n/**\n * Load page\n *\n * @param {string} pageId Id of the page to load\n */\nexport function loadPage(pageId) {\n const page = store.get('pages').find((page) => page.id === pageId)\n const cursor = page.cursor\n\n app.activePage = pageId\n\n store.set('lastPage', pageId)\n\n $('#pageName').innerHTML = page.name\n $('#pageName').title = page.name\n\n cm.setValue(page.data)\n\n if (page.history) {\n cm.setHistory(page.history)\n }\n\n cm.execCommand('goLineEnd')\n\n if (cursor) {\n cm.setCursor(cursor)\n\n setTimeout(() => {\n try {\n cm.scrollIntoView({ ch: cursor.ch, line: cursor.line + 1 })\n } catch {\n cm.scrollIntoView(cursor)\n }\n }, 100)\n }\n\n populatePages()\n}\n\n/** Generate default page */\nexport function defaultPage() {\n const pageId = DateTime.local().toFormat('yyyyMMddHHmmssSSS')\n const pageName = getPageName()\n\n store.set('pages', [{ id: pageId, name: pageName, data: store.get('input') || '' }])\n\n localStorage.removeItem('input')\n\n loadPage(pageId)\n}\n\n/**\n * Create new page\n *\n * @param {boolean} isImport Is the new page imported? true | false\n */\nexport function newPage(isImport) {\n const pageId = DateTime.local().toFormat('yyyyMMddHHmmssSSS')\n const pages = store.get('pages')\n const pageName =\n $('#newPageTitleInput').value.replace(/<|>/g, '').trim() || (isImport ? 'Imported page' : getPageName())\n\n const pageNames = pages.map((p) => p.name)\n\n if (pageNames.includes(pageName)) {\n notify(`\"${pageName}\" already exists. Please choose a different page name.`, 'danger')\n return\n }\n\n app.activePage = pageId\n\n pages.push({ id: pageId, name: pageName, data: '' })\n\n store.set('pages', pages)\n store.set('lastPage', pageId)\n\n cm.setValue('')\n\n populatePages()\n\n $('#pageName').innerHTML = pageName\n\n modal.hide('#dialog-newPage')\n}\n\n/**\n * Delete page\n *\n * @param {string} pageId Id of the page to delete\n */\nexport function deletePage(pageId) {\n let pages = store.get('pages')\n\n confirm('\"' + pages.find((page) => page.id === pageId).name + '\" will be deleted.', () => {\n pages = pages.filter((page) => page.id !== pageId)\n\n store.set('pages', pages)\n\n if (pages.length === 0) {\n defaultPage()\n } else if (pageId === app.activePage) {\n loadPage(pages.pop().id)\n }\n\n populatePages()\n })\n}\n\n/**\n * Rename page\n *\n * @param {string} pageId Id of the page to rename\n */\nexport function renamePage(pageId) {\n const pages = store.get('pages')\n const page = pages.find((page) => page.id === pageId)\n\n $('#renamePageTitleInput').value = page.name\n\n modal.show('#dialog-renamePage')\n\n function rename() {\n page.name = $('#renamePageTitleInput').value.replace(/<|>/g, '').trim() || getPageName()\n\n store.set('pages', pages)\n\n populatePages()\n\n $('#pageName').innerHTML = page.name\n\n modal.hide('#dialog-renamePage')\n\n $('#dialog-renamePage-save').removeEventListener('click', rename)\n }\n\n $('#dialog-renamePage-save').addEventListener('click', rename)\n}\n\n/**\n * Duplicate page\n *\n * @param {string} pageId Id of the page to duplicate\n */\nexport function duplicatePage(pageId) {\n const dupPageId = DateTime.local().toFormat('yyyyMMddHHmmssSSS')\n const pages = store.get('pages')\n const dupPage = pages.find((page) => page.id === pageId)\n const dupPageData = dupPage.data\n const dupPageName = dupPage.name + ' (copy)'\n\n app.activePage = dupPageId\n\n pages.push({ id: dupPageId, name: dupPageName, data: dupPageData })\n\n store.set('pages', pages)\n\n loadPage(dupPageId)\n}\n\n/** Sort page list\n *\n * @param {string} by Sort by argument - oldnew | newold | az | za\n */\nexport function sortPages(by) {\n const pages = store.get('pages')\n\n let sortedPages\n\n switch (by) {\n case 'oldnew':\n sortedPages = pages.sort((a, b) => a.id - b.id)\n break\n case 'newold':\n sortedPages = pages.sort((a, b) => b.id - a.id)\n break\n case 'az':\n sortedPages = pages.sort((a, b) => a.name.localeCompare(b.name))\n break\n case 'za':\n sortedPages = pages.sort((a, b) => b.name.localeCompare(a.name))\n break\n }\n\n store.set('pages', sortedPages)\n\n populatePages()\n\n UIkit.dropdown('#sortDropdown').hide(0)\n}\n\n/** Sort page list after drag */\nexport function pageOrder() {\n const pages = store.get('pages')\n const pageList = $all('#pageList > div')\n const orderedPages = [...pageList].map((el) => pages.find((page) => page.id === el.getAttribute('id')))\n\n store.set('pages', orderedPages)\n}\n\nexport function deleteAllPages() {\n confirm('All pages will be deleted permanently.', () => {\n store.set('pages', [])\n\n defaultPage()\n\n populatePages()\n })\n}\n\nfunction newPageDialog() {\n $('#newPageTitleInput').value = ''\n $('#newPageTitleInput').focus()\n\n modal.show('#dialog-newPage')\n}\n\n$('#newPageButton').addEventListener('click', newPageDialog)\n\n$('#newPageButtonSP').addEventListener('click', newPageDialog)\n\n$('#dialog-newPage-save').addEventListener('click', () => {\n newPage(false)\n})\n\n$('#newPageTitleInput').addEventListener('keyup', (event) => {\n if (event.key === 'Enter' || event.keyCode === 13) {\n $('#dialog-newPage-save').click()\n }\n})\n\n$('#deleteAllPagesButton').addEventListener('click', deleteAllPages)\n\n$('#renamePageTitleInput').addEventListener('keyup', (event) => {\n if (event.key === 'Enter' || event.keyCode === 13) {\n $('#dialog-renamePage-save').click()\n }\n})\n\n$('#sortOldNew').addEventListener('click', () => {\n sortPages('oldnew')\n})\n\n$('#sortNewOld').addEventListener('click', () => {\n sortPages('newold')\n})\n\n$('#sortAZ').addEventListener('click', () => {\n sortPages('az')\n})\n\n$('#sortZA').addEventListener('click', () => {\n sortPages('za')\n})\n\n$('#closeSidePanelButton').addEventListener('click', () => {\n UIkit.offcanvas('#sidePanel').hide()\n})\n\n$('#printButton').addEventListener('click', () => {\n window.print()\n})\n\nif (isElectron) {\n // Import calculations from file\n $('#importButton').addEventListener('click', numara.import)\n\n numara.importData((event, data, msg) => {\n newPage(true)\n\n cm.setValue(data)\n\n notify(msg, 'success')\n })\n\n numara.importDataError((event, error) => {\n notify(error, 'danger')\n })\n\n numara.main.import(numara.import)\n\n // Export calculations to file\n $('#exportButton').addEventListener('click', () => {\n const pages = store.get('pages')\n const page = pages.find((page) => page.id === app.activePage).name\n numara.export(page, cm.getValue())\n })\n\n numara.exportData((event, msg) => {\n notify(msg, 'success')\n })\n\n numara.exportDataError((event, error) => {\n notify(error, 'danger')\n })\n\n numara.main.export(() => {\n numara.export($('#newPageTitleInput').value, cm.getValue())\n })\n\n // Print window from main\n numara.main.print(() => {\n UIkit.offcanvas('#sidePanel').hide()\n\n window.print()\n })\n} else {\n $all('#exportButton, #importButton, #spDivider').forEach((el) => el.remove())\n}\n", "import { $, app, store } from './common'\nimport { udfInput, uduInput } from './editor'\nimport { showError } from './modal'\n\n/**\n * User defined functions and units.\n *\n * @param {string} input User defined function or unit to apply.\n * @param {string} type 'func' | 'unit'\n */\nexport function applyUdfu(input, type) {\n return new Promise(function (resolve, reject) {\n try {\n const loadUD =\n type === 'func'\n ? new Function(`'use strict'; let window; let numara; math.import({${input}}, {override: true})`)\n : new Function(`'use strict'; let window; let numara; math.createUnit({${input}}, {override: true})`)\n\n loadUD()\n\n const UDFunc = new Function(`'use strict'; return {${input}}`)\n\n for (const f in UDFunc()) {\n app[type === 'func' ? 'udfList' : 'uduList'].push(f)\n }\n\n store.set(type === 'func' ? 'udf' : 'udu', input)\n\n resolve()\n } catch (error) {\n reject(error)\n }\n })\n}\n\n$('#dialog-udfu-save-f').addEventListener('click', () => {\n applyUdfu(udfInput.getValue().trim(), 'func')\n .then(() => {\n location.reload()\n })\n .catch((error) => {\n showError(error.name, error.message)\n })\n})\n\n$('#dialog-udfu-save-u').addEventListener('click', () => {\n applyUdfu(uduInput.getValue().trim(), 'unit')\n .then(() => {\n location.reload()\n })\n .catch((error) => {\n showError(error.name, error.message)\n })\n})\n", "/**\n * A single press of a keybinding sequence\n */\nexport type KeyBindingPress = [mods: string[], key: string | RegExp]\n\n/**\n * A map of keybinding strings to event handlers.\n */\nexport interface KeyBindingMap {\n\t[keybinding: string]: (event: KeyboardEvent) => void\n}\n\nexport interface KeyBindingHandlerOptions {\n\t/**\n\t * Keybinding sequences will wait this long between key presses before\n\t * cancelling (default: 1000).\n\t *\n\t * **Note:** Setting this value too low (i.e. `300`) will be too fast for many\n\t * of your users.\n\t */\n\ttimeout?: number\n}\n\n/**\n * Options to configure the behavior of keybindings.\n */\nexport interface KeyBindingOptions extends KeyBindingHandlerOptions {\n\t/**\n\t * Key presses will listen to this event (default: \"keydown\").\n\t */\n\tevent?: \"keydown\" | \"keyup\"\n\n\t/**\n\t * Key presses will use a capture listener (default: false)\n\t */\n\tcapture?: boolean\n}\n\n/**\n * These are the modifier keys that change the meaning of keybindings.\n *\n * Note: Ignoring \"AltGraph\" because it is covered by the others.\n */\nlet KEYBINDING_MODIFIER_KEYS = [\"Shift\", \"Meta\", \"Alt\", \"Control\"]\n\n/**\n * Keybinding sequences should timeout if individual key presses are more than\n * 1s apart by default.\n */\nlet DEFAULT_TIMEOUT = 1000\n\n/**\n * Keybinding sequences should bind to this event by default.\n */\nlet DEFAULT_EVENT = \"keydown\" as const\n\n/**\n * Platform detection code.\n * @see https://github.com/jamiebuilds/tinykeys/issues/184\n */\nlet PLATFORM = typeof navigator === \"object\" ? navigator.platform : \"\"\nlet APPLE_DEVICE = /Mac|iPod|iPhone|iPad/.test(PLATFORM)\n\n/**\n * An alias for creating platform-specific keybinding aliases.\n */\nlet MOD = APPLE_DEVICE ? \"Meta\" : \"Control\"\n\n/**\n * Meaning of `AltGraph`, from MDN:\n * - Windows: Both Alt and Ctrl keys are pressed, or AltGr key is pressed\n * - Mac: ⌥ Option key pressed\n * - Linux: Level 3 Shift key (or Level 5 Shift key) pressed\n * - Android: Not supported\n * @see https://github.com/jamiebuilds/tinykeys/issues/185\n */\nlet ALT_GRAPH_ALIASES =\n\tPLATFORM === \"Win32\" ? [\"Control\", \"Alt\"] : APPLE_DEVICE ? [\"Alt\"] : []\n\n/**\n * There's a bug in Chrome that causes event.getModifierState not to exist on\n * KeyboardEvent's for F1/F2/etc keys.\n */\nfunction getModifierState(event: KeyboardEvent, mod: string) {\n\treturn typeof event.getModifierState === \"function\"\n\t\t? event.getModifierState(mod) ||\n\t\t\t\t(ALT_GRAPH_ALIASES.includes(mod) && event.getModifierState(\"AltGraph\"))\n\t\t: false\n}\n\n/**\n * Parses a \"Key Binding String\" into its parts\n *\n * grammar = ``\n * = ` ...`\n * = `` or `+`\n * = `++...`\n * = `` or `` (case-insensitive)\n * = `()` -> `/^$/` (case-sensitive)\n */\nexport function parseKeybinding(str: string): KeyBindingPress[] {\n\treturn str\n\t\t.trim()\n\t\t.split(\" \")\n\t\t.map(press => {\n\t\t\tlet mods = press.split(/\\b\\+/)\n\t\t\tlet key: string | RegExp = mods.pop() as string\n\t\t\tlet match = key.match(/^\\((.+)\\)$/)\n\t\t\tif (match) {\n\t\t\t\tkey = new RegExp(`^${match[1]}$`)\n\t\t\t}\n\t\t\tmods = mods.map(mod => (mod === \"$mod\" ? MOD : mod))\n\t\t\treturn [mods, key]\n\t\t})\n}\n\n/**\n * This tells us if a single keyboard event matches a single keybinding press.\n */\nexport function matchKeyBindingPress(\n\tevent: KeyboardEvent,\n\t[mods, key]: KeyBindingPress,\n): boolean {\n\t// prettier-ignore\n\treturn !(\n\t\t// Allow either the `event.key` or the `event.code`\n\t\t// MDN event.key: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key\n\t\t// MDN event.code: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code\n\t\t(\n\t\t\tkey instanceof RegExp ? !(key.test(event.key) || key.test(event.code)) :\n\t\t\t(key.toUpperCase() !== event.key.toUpperCase() &&\n\t\t\tkey !== event.code)\n\t\t) ||\n\n\t\t// Ensure all the modifiers in the keybinding are pressed.\n\t\tmods.find(mod => {\n\t\t\treturn !getModifierState(event, mod)\n\t\t}) ||\n\n\t\t// KEYBINDING_MODIFIER_KEYS (Shift/Control/etc) change the meaning of a\n\t\t// keybinding. So if they are pressed but aren't part of the current\n\t\t// keybinding press, then we don't have a match.\n\t\tKEYBINDING_MODIFIER_KEYS.find(mod => {\n\t\t\treturn !mods.includes(mod) && key !== mod && getModifierState(event, mod)\n\t\t})\n\t)\n}\n\n/**\n * Creates an event listener for handling keybindings.\n *\n * @example\n * ```js\n * import { createKeybindingsHandler } from \"../src/keybindings\"\n *\n * let handler = createKeybindingsHandler({\n * \t\"Shift+d\": () => {\n * \t\talert(\"The 'Shift' and 'd' keys were pressed at the same time\")\n * \t},\n * \t\"y e e t\": () => {\n * \t\talert(\"The keys 'y', 'e', 'e', and 't' were pressed in order\")\n * \t},\n * \t\"$mod+d\": () => {\n * \t\talert(\"Either 'Control+d' or 'Meta+d' were pressed\")\n * \t},\n * })\n *\n * window.addEvenListener(\"keydown\", handler)\n * ```\n */\nexport function createKeybindingsHandler(\n\tkeyBindingMap: KeyBindingMap,\n\toptions: KeyBindingHandlerOptions = {},\n): EventListener {\n\tlet timeout = options.timeout ?? DEFAULT_TIMEOUT\n\n\tlet keyBindings = Object.keys(keyBindingMap).map(key => {\n\t\treturn [parseKeybinding(key), keyBindingMap[key]] as const\n\t})\n\n\tlet possibleMatches = new Map()\n\tlet timer: number | null = null\n\n\treturn event => {\n\t\t// Ensure and stop any event that isn't a full keyboard event.\n\t\t// Autocomplete option navigation and selection would fire a instanceof Event,\n\t\t// instead of the expected KeyboardEvent\n\t\tif (!(event instanceof KeyboardEvent)) {\n\t\t\treturn\n\t\t}\n\n\t\tkeyBindings.forEach(keyBinding => {\n\t\t\tlet sequence = keyBinding[0]\n\t\t\tlet callback = keyBinding[1]\n\n\t\t\tlet prev = possibleMatches.get(sequence)\n\t\t\tlet remainingExpectedPresses = prev ? prev : sequence\n\t\t\tlet currentExpectedPress = remainingExpectedPresses[0]\n\n\t\t\tlet matches = matchKeyBindingPress(event, currentExpectedPress)\n\n\t\t\tif (!matches) {\n\t\t\t\t// Modifier keydown events shouldn't break sequences\n\t\t\t\t// Note: This works because:\n\t\t\t\t// - non-modifiers will always return false\n\t\t\t\t// - if the current keypress is a modifier then it will return true when we check its state\n\t\t\t\t// MDN: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/getModifierState\n\t\t\t\tif (!getModifierState(event, event.key)) {\n\t\t\t\t\tpossibleMatches.delete(sequence)\n\t\t\t\t}\n\t\t\t} else if (remainingExpectedPresses.length > 1) {\n\t\t\t\tpossibleMatches.set(sequence, remainingExpectedPresses.slice(1))\n\t\t\t} else {\n\t\t\t\tpossibleMatches.delete(sequence)\n\t\t\t\tcallback(event)\n\t\t\t}\n\t\t})\n\n\t\tif (timer) {\n\t\t\tclearTimeout(timer)\n\t\t}\n\n\t\ttimer = setTimeout(possibleMatches.clear.bind(possibleMatches), timeout)\n\t}\n}\n\n/**\n * Subscribes to keybindings.\n *\n * Returns an unsubscribe method.\n *\n * @example\n * ```js\n * import { tinykeys } from \"../src/tinykeys\"\n *\n * tinykeys(window, {\n * \t\"Shift+d\": () => {\n * \t\talert(\"The 'Shift' and 'd' keys were pressed at the same time\")\n * \t},\n * \t\"y e e t\": () => {\n * \t\talert(\"The keys 'y', 'e', 'e', and 't' were pressed in order\")\n * \t},\n * \t\"$mod+d\": () => {\n * \t\talert(\"Either 'Control+d' or 'Meta+d' were pressed\")\n * \t},\n * })\n * ```\n */\nexport function tinykeys(\n\ttarget: Window | HTMLElement,\n\tkeyBindingMap: KeyBindingMap,\n\t{ event = DEFAULT_EVENT, capture, timeout }: KeyBindingOptions = {},\n): () => void {\n\tlet onKeyEvent = createKeybindingsHandler(keyBindingMap, { timeout })\n\ttarget.addEventListener(event, onKeyEvent, capture)\n\treturn () => {\n\t\ttarget.removeEventListener(event, onKeyEvent, capture)\n\t}\n}\n", "import { checkColorChange, colors } from './colors'\nimport { $, $all, app, store } from './common'\nimport { copyAll } from './context'\nimport { cm, refreshEditor, udfInput, uduInput } from './editor'\nimport { calculate } from './eval'\nimport { generateIcons } from './icons'\nimport { modal, notify, showError } from './modal'\nimport { plot } from './plot'\nimport { settings } from './settings'\nimport { defaultPage, lastPage, loadPage, migrateSaved, getPageName, pageOrder, populatePages } from './pages'\nimport { applyUdfu } from './userDefined'\nimport { checkSize, checkUpdates, isMac, isElectron, toggleMinMax } from './utils'\n\nimport { author, description, homepage, name, version } from './../../package.json'\n\nimport { tinykeys } from 'tinykeys'\n\nimport UIkit from 'uikit'\n\ndocument.title = description\n\n// Set theme and maximize if needed\nif (isElectron) {\n numara.themeUpdate(settings.apply)\n numara.fullscreen()\n}\n\n// Set headers\nif (isElectron && !isMac) {\n $('#header-mac').remove()\n $('#header-win').style.display = 'block'\n $('#header-win-title').innerHTML = name\n\n $('#max').style.display = numara.isMaximized() ? 'none' : 'block'\n $('#unmax').style.display = numara.isMaximized() ? 'block' : 'none'\n\n $('#min').addEventListener('click', numara.minimize)\n $('#max').addEventListener('click', numara.maximize)\n $('#unmax').addEventListener('click', numara.unmaximize)\n $('#close').addEventListener('click', numara.close)\n\n numara.isMax((event, isMax) => {\n $('#unmax').style.display = isMax ? 'block' : 'none'\n $('#max').style.display = isMax ? 'none' : 'block'\n })\n\n $('#header-win').addEventListener('dblclick', toggleMinMax)\n} else {\n $('#header-win').remove()\n $('#header-mac').style.display = 'block'\n $('#header-mac-title').innerHTML = name\n\n if (isElectron) {\n $('#header-mac').addEventListener('dblclick', toggleMinMax)\n }\n}\n\n// Generate app icons\ngenerateIcons()\n\n// Initialize theme colors\ncolors.initialize()\ncolors.apply()\n\n// Initialize settings\nsettings.initialize()\nsettings.apply()\n\n// Set user defined values\nif (!store.get('pages')) {\n defaultPage()\n} else {\n app.activePage = lastPage()\n loadPage(lastPage())\n}\n\nmigrateSaved()\n\n// Set user defined values\nif (!store.get('udf')) {\n store.set('udf', '')\n}\n\nif (!store.get('udu')) {\n store.set('udu', '')\n}\n\napplyUdfu(store.get('udf'), 'func')\napplyUdfu(store.get('udu'), 'unit')\n\n// Populate saved calculation\npopulatePages()\n\n// Action buttons\n$('#clearButton').addEventListener('click', () => {\n if (cm.getValue() !== '') {\n cm.setValue('')\n cm.focus()\n\n calculate()\n }\n})\n\n$('#copyButton').addEventListener('click', () => {\n copyAll()\n})\n\n$('#udfuButton').addEventListener('click', () => {\n modal.show('#dialog-udfu')\n})\n\n$('#settingsButton').addEventListener('click', () => {\n modal.show('#dialog-settings')\n})\n\n// Set app info\n$('#dialog-about-copyright').innerHTML = `Copyright \u00A9\uFE0F ${new Date().getFullYear()} ${author.name}`\n$('#dialog-about-appVersion').innerHTML = isElectron\n ? `Version ${version}`\n : `Version ${version}\n `\n$('#gitLink').setAttribute('href', homepage)\n$('#webLink').setAttribute('href', author.url)\n$('#licenseLink').setAttribute('href', homepage + '/blob/master/LICENSE')\n$('#helpLink').setAttribute('href', homepage + '/wiki')\n\nif (isElectron) {\n $('#logsLink').parentElement.style.display = 'block'\n $('#logsLink').addEventListener('click', numara.openLogs)\n}\n\n$('#aboutButton').addEventListener('click', () => {\n modal.show('#dialog-about')\n})\n\n// Output panel actions\n$('#output').addEventListener('click', (event) => {\n switch (event.target.className) {\n case 'answer':\n navigator.clipboard.writeText(event.target.dataset.copy)\n\n notify(`Copied '${event.target.dataset.copy}' to clipboard.`)\n\n break\n case 'plotButton': {\n const func = event.target.getAttribute('data-func')\n\n app.plotFunction = func.startsWith('line') ? app.mathScope[func] : func\n\n try {\n $('#plotCrossModal').checked = app.settings.plotCross\n $('#plotDerivativeModal').checked = app.settings.plotDerivative\n $('#plotGridModal').checked = app.settings.plotGrid\n\n plot()\n\n modal.show('#dialog-plot')\n } catch (error) {\n showError('Error', error)\n }\n\n break\n }\n case 'lineError':\n showError('Error on Line ' + event.target.getAttribute('data-line'), event.target.getAttribute('data-error'))\n\n break\n }\n\n event.stopPropagation()\n})\n\n// Clear input selections when clicked in output panel\n$('#output').addEventListener('mousedown', () => {\n const sels = document.getElementsByClassName('CodeMirror-selected')\n\n while (sels[0]) {\n sels[0].classList.remove('CodeMirror-selected')\n }\n})\n\n// Panel resizer\nlet resizeDelay\nlet isResizing = false\n\nconst panel = $('#panel')\nconst divider = $('#panelDivider')\n\n// Set divider tooltip.\nconst dividerTooltip = () => {\n divider.title =\n $('#input').style.width === settings.defaults.inputWidth + '%' ? 'Drag to resize' : 'Double click to reset position'\n}\n\ndivider.addEventListener('dblclick', () => {\n app.settings.inputWidth = settings.defaults.inputWidth\n\n store.set('settings', app.settings)\n\n settings.apply()\n\n dividerTooltip()\n})\n\ndivider.addEventListener('mousedown', (event) => {\n isResizing = event.target === divider\n})\n\n$('#panel').addEventListener('mouseup', () => {\n isResizing = false\n})\n\n$('#panel').addEventListener('mousemove', (event) => {\n if (isResizing) {\n const offset = app.settings.lineNumbers ? 12 : 27\n const pointerRelativeXpos = event.clientX - panel.offsetLeft - offset\n const iWidth = (pointerRelativeXpos / panel.clientWidth) * 100\n const inputWidth = iWidth < 0 ? 0 : iWidth > 100 ? 100 : iWidth\n\n $('#input').style.width = inputWidth + '%'\n\n app.settings.inputWidth = inputWidth\n\n store.set('settings', app.settings)\n\n clearTimeout(resizeDelay)\n\n resizeDelay = setTimeout(calculate, 10)\n }\n\n dividerTooltip()\n})\n\n// Tooltip defaults\nUIkit.mixin({ data: { offset: 5 } }, 'tooltip')\n\n// Initiate theme dialog\nUIkit.util.on('#dialog-theme', 'shown', checkColorChange)\n\n// Initiate settings dialog\nUIkit.util.on('#dialog-settings', 'beforeshow', settings.prep)\n\nlet udTab = 1\n\n// Prepare user defined dialog inputs\nUIkit.util.on('#dialog-udfu', 'shown', (event) => {\n if (event.target.id === 'dialog-udfu') {\n const udf = store.get('udf').trim()\n const udu = store.get('udu').trim()\n\n refreshEditor(udTab === 1 ? udfInput : uduInput)\n\n udfInput.setValue(udf)\n uduInput.setValue(udu)\n }\n})\n\nUIkit.util.on('#udfTab', 'shown', () => {\n udTab = 1\n refreshEditor(udfInput)\n})\n\nUIkit.util.on('#uduTab', 'shown', () => {\n udTab = 2\n refreshEditor(uduInput)\n})\n\n// Focus on input when dialog is closed\nUIkit.util.on('.modal', 'hidden', () => {\n setTimeout(() => {\n cm.focus()\n }, 100)\n})\n\n// Plot dialog\nUIkit.util.on('#dialog-plot', 'shown', plot)\nUIkit.util.on('#dialog-plot', 'hide', () => {\n app.activePlot = false\n})\n\n// Save page sort order after move\nUIkit.util.on('#pageList', 'moved', () => {\n pageOrder()\n populatePages()\n})\n\n// Save dialog title focus on shown\nUIkit.util.on('#dialog-newPage', 'shown', () => {\n $('#newPageTitleInput').setAttribute('placeholder', getPageName())\n $('#newPageTitleInput').focus()\n})\n\n// Focus rename input on show\nUIkit.util.on('#dialog-renamePage', 'shown', () => {\n setTimeout(() => {\n $('#renamePageTitleInput').focus()\n $('#renamePageTitleInput').select()\n }, 20)\n})\n\nUIkit.util.on('#sidePanel', 'hidden', () => {\n setTimeout(() => {\n cm.focus()\n }, 20)\n})\n\n// Prevent CM refresh if keydown\ndocument.addEventListener('keydown', (event) => {\n app.refreshCM = !event.repeat\n})\n\ndocument.addEventListener('keyup', () => {\n app.refreshCM = true\n})\n\n// Relayout plot on window resize\nlet windowResizeDelay\n\nwindow.addEventListener('resize', () => {\n if (app.activePlot && $('#dialog-plot').classList.contains('uk-open')) {\n plot()\n }\n\n clearTimeout(windowResizeDelay)\n\n windowResizeDelay = setTimeout(calculate, 10)\n\n checkSize()\n})\n\n// Sync scroll\nlet inputScroll = false\nlet outputScroll = false\n\nconst inputPanel = $('.CodeMirror-scroll')\nconst outputPanel = $('#output')\n\ninputPanel.addEventListener('scroll', () => {\n if (!inputScroll) {\n outputScroll = true\n\n outputPanel.scrollTop = inputPanel.scrollTop\n }\n\n inputScroll = false\n})\n\noutputPanel.addEventListener('scroll', () => {\n if (!outputScroll) {\n inputScroll = true\n\n inputPanel.scrollTop = outputPanel.scrollTop\n }\n\n outputScroll = false\n\n $('#scrollTop').style.display = outputPanel.scrollTop > 50 ? 'block' : 'none'\n})\n\n$('#scrollTop').addEventListener('click', () => {\n inputPanel.scroll({ top: 0, behavior: 'smooth' })\n outputPanel.scroll({ top: 0, behavior: 'smooth' })\n})\n\n// Keyboard shortcuts\nconst keys = {\n clearButton: ['$mod+D'],\n newPageButton: ['$mod+N'],\n printButton: ['$mod+P'],\n sidePanelButton: ['Shift+TAB']\n}\n\nfor (const [button, command] of Object.entries(keys)) {\n tinykeys(window, {\n [command]: (event) => {\n event.preventDefault()\n\n if ($all('.uk-open').length === 0) {\n $('#' + button).click()\n } else if ($('#sidePanel').classList.contains('uk-open') && !$('#dialog-newPage').classList.contains('uk-open')) {\n $('#closeSidePanelButton').click()\n }\n }\n })\n}\n\n// Check for updates.\ncheckUpdates()\n\n// Restart button if update is installed\n$('#updateButton').addEventListener('click', () => {\n numara.updateApp()\n})\n\n// Developer Tools\nif (isElectron) {\n $('#dialog-about-appVersion').addEventListener('click', (event) => {\n if (event.detail === 9) {\n numara.openDevTools()\n }\n })\n}\n\n// Print\nwindow.addEventListener('beforeprint', () => {\n const printArea = document.createElement('div')\n\n printArea.setAttribute('id', 'printArea')\n printArea.className = 'printArea'\n printArea.innerHTML = `\n
    ${name}
    \n `\n\n document.body.appendChild(printArea)\n\n cm.eachLine((line) => {\n const lineNo = cm.getLineNumber(line)\n const input = cm.getLine(lineNo)\n const answer = $('#output').children[lineNo].innerText\n const row = `\n \n ${app.settings.lineNumbers ? '' : ''}\n \n \n `\n\n $('#printPage').innerHTML += row\n })\n\n printArea.innerHTML += `
    ' + (lineNo + 1) + '${input}${answer}
    `\n})\n\nwindow.addEventListener('afterprint', () => {\n $('#printArea').remove()\n})\n\nsetTimeout(() => {\n cm.focus()\n}, 500)\n"], - "mappings": ";;;;;;;;;irBAAA,IAAAA,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EAEC,SAAUC,EAAQC,EAAS,CACxB,OAAOH,IAAY,UAAY,OAAOC,GAAW,IAAcA,GAAO,QAAUE,EAAQ,EACxF,OAAO,QAAW,YAAc,OAAO,IAAM,OAAO,QAASA,CAAO,GACnED,EAAS,OAAO,WAAe,IAAc,WAAaA,GAAU,KAAMA,EAAO,MAAQC,EAAQ,EACtG,GAAGH,GAAO,UAAY,CAAE,aAEpB,GAAM,CAAE,eAAAI,EAAgB,SAAAC,CAAS,EAAI,OAAO,UAC5C,SAASC,EAAOC,EAAKC,EAAK,CACxB,OAAOJ,EAAe,KAAKG,EAAKC,CAAG,CACrC,CACA,IAAMC,EAAc,aACdC,EAAYC,GAASC,GAAQA,EAAI,QAAQH,EAAa,KAAK,EAAE,YAAY,CAAC,EAC1EI,EAAa,SACbC,EAAWH,GACdC,IAASA,EAAI,OAAO,CAAC,EAAE,YAAY,EAAIA,EAAI,MAAM,CAAC,GAAG,QAAQC,EAAY,CAACE,EAAGC,IAAMA,EAAE,YAAY,CAAC,CACrG,EACMC,EAAUN,GAASC,GAAQA,EAAI,OAAO,CAAC,EAAE,YAAY,EAAIA,EAAI,MAAM,CAAC,CAAC,EAC3E,SAASM,EAAWN,EAAKO,EAAQ,CAC/B,IAAIC,EACJ,OAAQA,EAA4BR,GAAI,aAAe,KAAO,OAASQ,EAAG,KAAKR,EAAKO,CAAM,CAC5F,CACA,SAASE,EAAST,EAAKO,EAAQ,CAC7B,IAAIC,EACJ,OAAQA,EAA4BR,GAAI,WAAa,KAAO,OAASQ,EAAG,KAAKR,EAAKO,CAAM,CAC1F,CACA,SAASG,EAASf,EAAKY,EAAQ,CAC7B,IAAIC,EACJ,OAAQA,EAA4Bb,GAAI,WAAa,KAAO,OAASa,EAAG,KAAKb,EAAKY,CAAM,CAC1F,CACA,SAASI,EAAUC,EAAOC,EAAW,CACnC,IAAIL,EACJ,OAAQA,EAA8BI,GAAM,YAAc,KAAO,OAASJ,EAAG,KAAKI,EAAOC,CAAS,CACpG,CACA,GAAM,CAAE,QAAAC,EAAS,KAAMC,CAAQ,EAAI,MAC7B,CAAE,OAAAC,CAAO,EAAI,OACnB,SAASC,EAAWtB,EAAK,CACvB,OAAO,OAAOA,GAAQ,UACxB,CACA,SAASuB,EAASvB,EAAK,CACrB,OAAOA,IAAQ,MAAQ,OAAOA,GAAQ,QACxC,CACA,SAASwB,EAAcxB,EAAK,CAC1B,OAAOF,EAAS,KAAKE,CAAG,IAAM,iBAChC,CACA,SAASyB,EAASzB,EAAK,CACrB,OAAOuB,EAASvB,CAAG,GAAKA,IAAQA,EAAI,MACtC,CACA,SAAS0B,EAAW1B,EAAK,CACvB,OAAO2B,EAAS3B,CAAG,IAAM,CAC3B,CACA,SAAS4B,EAAO5B,EAAK,CACnB,OAAO2B,EAAS3B,CAAG,GAAK,CAC1B,CACA,SAAS6B,EAAU7B,EAAK,CACtB,OAAO2B,EAAS3B,CAAG,IAAM,CAC3B,CACA,SAAS2B,EAAS3B,EAAK,CACrB,MAAO,CAACyB,EAASzB,CAAG,GAAKuB,EAASvB,CAAG,GAAKA,EAAI,QAChD,CACA,SAAS8B,EAAUC,EAAO,CACxB,OAAO,OAAOA,GAAU,SAC1B,CACA,SAASC,EAASD,EAAO,CACvB,OAAO,OAAOA,GAAU,QAC1B,CACA,SAASE,EAASF,EAAO,CACvB,OAAO,OAAOA,GAAU,QAC1B,CACA,SAASG,EAAUH,EAAO,CACxB,OAAOE,EAASF,CAAK,GAAKC,EAASD,CAAK,GAAK,CAAC,MAAMA,EAAQ,WAAWA,CAAK,CAAC,CAC/E,CACA,SAASI,EAAQnC,EAAK,CACpB,MAAO,EAAEmB,EAAQnB,CAAG,EAAIA,EAAI,OAASuB,EAASvB,CAAG,GAAI,OAAO,KAAKA,CAAG,EAAE,OACxE,CACA,SAASoC,EAAYL,EAAO,CAC1B,OAAOA,IAAU,MACnB,CACA,SAASM,EAAUN,EAAO,CACxB,OAAOD,EAAUC,CAAK,EAAIA,EAAQA,IAAU,QAAUA,IAAU,KAAOA,IAAU,GAAK,GAAOA,IAAU,SAAWA,IAAU,IAAM,GAAQA,CAC5I,CACA,SAASO,EAASP,EAAO,CACvB,IAAMQ,EAAS,OAAOR,CAAK,EAC3B,OAAO,MAAMQ,CAAM,EAAI,GAAQA,CACjC,CACA,SAASC,EAAQT,EAAO,CACtB,OAAO,WAAWA,CAAK,GAAK,CAC9B,CACA,SAASU,EAAOC,EAAS,CACvB,OAAOA,GAAWC,EAAQD,CAAO,EAAE,CAAC,CACtC,CACA,SAASC,EAAQD,EAAS,CACxB,OAAOd,EAAOc,CAAO,EAAI,CAACA,CAAO,EAAI,MAAM,KAAKA,GAAW,CAAC,CAAC,EAAE,OAAOd,CAAM,CAC9E,CACA,SAASgB,GAASF,EAAS,CACzB,GAAIjB,EAASiB,CAAO,EAClB,OAAOA,EAETA,EAAUD,EAAOC,CAAO,EACxB,IAAMG,EAAWnB,EAAWgB,CAAO,EAAIA,EAAqCA,GAAQ,cACpF,OAAoCG,GAAS,aAAgB,MAC/D,CACA,SAASC,EAAQf,EAAOgB,EAAO,CAC7B,OAAOhB,IAAUgB,GAASxB,EAASQ,CAAK,GAAKR,EAASwB,CAAK,GAAK,OAAO,KAAKhB,CAAK,EAAE,SAAW,OAAO,KAAKgB,CAAK,EAAE,QAAUC,GAAKjB,EAAO,CAACkB,EAAKhD,IAAQgD,IAAQF,EAAM9C,CAAG,CAAC,CACzK,CACA,SAASiD,GAAKnB,EAAOoB,EAAGC,EAAG,CACzB,OAAOrB,EAAM,QAAQ,IAAI,OAAO,GAAGoB,CAAC,IAAIC,CAAC,GAAI,GAAG,EAAIC,GAAUA,IAAUF,EAAIC,EAAID,CAAC,CACnF,CACA,SAASG,GAAKrC,EAAO,CACnB,OAAOA,EAAMA,EAAM,OAAS,CAAC,CAC/B,CACA,SAAS+B,GAAKhD,EAAKuD,EAAI,CACrB,QAAWtD,KAAOD,EAChB,GAAcuD,EAAGvD,EAAIC,CAAG,EAAGA,CAAG,IAA1B,GACF,MAAO,GAGX,MAAO,EACT,CACA,SAASuD,GAAOvC,EAAOwC,EAAM,CAC3B,OAAOxC,EAAM,MAAM,EAAE,KACnB,CAAC,CAAE,CAACwC,GAAOC,EAAQ,CAAE,EAAG,CAAE,CAACD,GAAOE,EAAQ,CAAE,IAAMD,EAAQC,EAAQ,EAAIA,EAAQD,EAAQ,GAAK,CAC7F,CACF,CACA,SAASE,GAAM3C,EAAO4C,EAAU,CAC9B,OAAO5C,EAAM,OACX,CAAC6C,EAAKC,IAASD,EAAMtB,EAAQlB,EAAWuC,CAAQ,EAAIA,EAASE,CAAI,EAAIA,EAAKF,CAAQ,CAAC,EACnF,CACF,CACF,CACA,SAASG,GAAS/C,EAAOwC,EAAM,CAC7B,IAAMQ,EAAuB,IAAI,IACjC,OAAOhD,EAAM,OAAO,CAAC,CAAE,CAACwC,GAAOS,CAAM,IAAMD,EAAK,IAAIC,CAAK,EAAI,GAAQD,EAAK,IAAIC,CAAK,CAAC,CACtF,CACA,SAASC,GAAKnE,EAAKoE,EAAO,CACxB,OAAOA,EAAM,OAAO,CAACC,EAAKZ,KAAU,CAAE,GAAGY,EAAK,CAACZ,CAAI,EAAGzD,EAAIyD,CAAI,CAAE,GAAI,CAAC,CAAC,CACxE,CACA,SAASa,GAAM/B,EAAQgC,EAAM,EAAGC,EAAM,EAAG,CACvC,OAAO,KAAK,IAAI,KAAK,IAAIlC,EAASC,CAAM,GAAK,EAAGgC,CAAG,EAAGC,CAAG,CAC3D,CACA,SAASC,IAAO,CAChB,CACA,SAASC,MAAiBC,EAAO,CAC/B,MAAO,CACL,CAAC,SAAU,KAAK,EAChB,CAAC,QAAS,MAAM,CAClB,EAAE,MACA,CAAC,CAACC,EAASC,CAAO,IAAM,KAAK,IAAI,GAAGF,EAAM,IAAI,CAAC,CAAE,CAACC,GAAUL,CAAI,IAAMA,CAAG,CAAC,EAAI,KAAK,IAAI,GAAGI,EAAM,IAAI,CAAC,CAAE,CAACE,GAAUL,CAAI,IAAMA,CAAG,CAAC,EAAI,CACtI,CACF,CACA,SAASM,GAAYC,EAAOC,EAAM,CAChC,OAAOD,EAAM,GAAKC,EAAK,OAASD,EAAM,GAAKC,EAAK,MAAQD,EAAM,GAAKC,EAAK,QAAUD,EAAM,GAAKC,EAAK,GACpG,CACA,SAASC,GAAMC,EAAYzB,EAAM1B,EAAO,CACtC,IAAMoD,EAAQ1B,IAAS,QAAU,SAAW,QAC5C,MAAO,CACL,CAAC0B,CAAK,EAAGD,EAAWzB,CAAI,EAAI,KAAK,MAAM1B,EAAQmD,EAAWC,CAAK,EAAID,EAAWzB,CAAI,CAAC,EAAIyB,EAAWC,CAAK,EACvG,CAAC1B,CAAI,EAAG1B,CACV,CACF,CACA,SAASqD,GAAQF,EAAYG,EAAe,CAC1CH,EAAa,CAAE,GAAGA,CAAW,EAC7B,QAAWzB,KAAQyB,EACjBA,EAAaA,EAAWzB,CAAI,EAAI4B,EAAc5B,CAAI,EAAIwB,GAAMC,EAAYzB,EAAM4B,EAAc5B,CAAI,CAAC,EAAIyB,EAEvG,OAAOA,CACT,CACA,SAASI,GAAQJ,EAAYG,EAAe,CAC1CH,EAAaE,GAAQF,EAAYG,CAAa,EAC9C,QAAW5B,KAAQyB,EACjBA,EAAaA,EAAWzB,CAAI,EAAI4B,EAAc5B,CAAI,EAAIwB,GAAMC,EAAYzB,EAAM4B,EAAc5B,CAAI,CAAC,EAAIyB,EAEvG,OAAOA,CACT,CACA,IAAMK,GAAa,CAAE,MAAAN,GAAO,QAAAG,GAAS,MAAOE,EAAQ,EACpD,SAASE,GAASC,EAAGC,EAAUC,EAAU,EAAGC,EAAS,GAAO,CAC1DF,EAAW/C,EAAQ+C,CAAQ,EAC3B,GAAM,CAAE,OAAAG,CAAO,EAAIH,EACnB,OAAKG,GAGLJ,EAAIvD,EAAUuD,CAAC,EAAInD,EAASmD,CAAC,EAAIA,IAAM,OAASE,EAAU,EAAIF,IAAM,WAAaE,EAAU,EAAIF,IAAM,OAASI,EAAS,EAAIH,EAAS,QAAQjD,EAAOgD,CAAC,CAAC,EACjJG,EACKtB,GAAMmB,EAAG,EAAGI,EAAS,CAAC,GAE/BJ,GAAKI,EACEJ,EAAI,EAAIA,EAAII,EAASJ,IAPnB,EAQX,CACA,SAASrF,GAAQ0F,EAAI,CACnB,IAAMC,EAAwB,OAAO,OAAO,IAAI,EAChD,MAAO,CAAC9F,KAAQ+F,IAASD,EAAM9F,CAAG,IAAM8F,EAAM9F,CAAG,EAAI6F,EAAG7F,EAAK,GAAG+F,CAAI,EACtE,CAEA,SAASC,GAASvD,KAAYwD,EAAS,CACrC,QAAWC,KAAQxD,EAAQD,CAAO,EAAG,CACnC,IAAM0D,EAAMC,GAAUH,CAAO,EAAE,OAAQI,GAAQ,CAACC,GAASJ,EAAMG,CAAG,CAAC,EAC/DF,EAAI,QACND,EAAK,UAAU,IAAI,GAAGC,CAAG,CAE7B,CACF,CACA,SAASI,GAAY9D,KAAYwD,EAAS,CACxC,QAAWC,KAAQxD,EAAQD,CAAO,EAAG,CACnC,IAAM+D,EAASJ,GAAUH,CAAO,EAAE,OAAQI,GAAQC,GAASJ,EAAMG,CAAG,CAAC,EACjEG,EAAO,QACTN,EAAK,UAAU,OAAO,GAAGM,CAAM,CAEnC,CACF,CACA,SAASC,GAAahE,EAASiE,EAAUC,EAAU,CACjDA,EAAWP,GAAUO,CAAQ,EAC7BD,EAAWN,GAAUM,CAAQ,EAAE,OAAQL,GAAQ,CAACvF,EAAS6F,EAAUN,CAAG,CAAC,EACvEE,GAAY9D,EAASiE,CAAQ,EAC7BV,GAASvD,EAASkE,CAAQ,CAC5B,CACA,SAASL,GAAS7D,EAAS4D,EAAK,CAC9B,OAACA,CAAG,EAAID,GAAUC,CAAG,EACd3D,EAAQD,CAAO,EAAE,KAAMyD,GAASA,EAAK,UAAU,SAASG,CAAG,CAAC,CACrE,CACA,SAASO,GAAYnE,EAAS4D,EAAKQ,EAAO,CACxC,IAAMZ,EAAUG,GAAUC,CAAG,EACxBlE,EAAY0E,CAAK,IACpBA,EAAQ,CAAC,CAACA,GAEZ,QAAWX,KAAQxD,EAAQD,CAAO,EAChC,QAAWqE,KAAQb,EACjBC,EAAK,UAAU,OAAOY,EAAMD,CAAK,CAGvC,CACA,SAAST,GAAUhG,EAAK,CACtB,OAAOA,EAAMc,EAAQd,CAAG,EAAIA,EAAI,IAAIgG,EAAS,EAAE,KAAK,EAAI,OAAOhG,CAAG,EAAE,MAAM,GAAG,EAAE,OAAO,OAAO,EAAI,CAAC,CACpG,CAEA,SAAS2G,GAAKtE,EAASuE,EAAMlF,EAAO,CAClC,IAAIlB,EACJ,GAAIU,EAAS0F,CAAI,EAAG,CAClB,QAAWhH,KAAOgH,EAChBD,GAAKtE,EAASzC,EAAKgH,EAAKhH,CAAG,CAAC,EAE9B,MACF,CACA,GAAImC,EAAYL,CAAK,EACnB,OAAQlB,EAAK4B,EAAOC,CAAO,IAAM,KAAO,OAAS7B,EAAG,aAAaoG,CAAI,EAErE,QAAWC,KAAMvE,EAAQD,CAAO,EAC1BpB,EAAWS,CAAK,IAClBA,EAAQA,EAAM,KAAKmF,EAAIF,GAAKE,EAAID,CAAI,CAAC,GAEnClF,IAAU,KACZoF,GAAWD,EAAID,CAAI,EAEnBC,EAAG,aAAaD,EAAMlF,CAAK,CAInC,CACA,SAASqF,GAAQ1E,EAASuE,EAAM,CAC9B,OAAOtE,EAAQD,CAAO,EAAE,KAAM2E,GAAaA,EAAS,aAAaJ,CAAI,CAAC,CACxE,CACA,SAASE,GAAWzE,EAASuE,EAAM,CACjCtE,EAAQD,CAAO,EAAE,QAAS2E,GAAaA,EAAS,gBAAgBJ,CAAI,CAAC,CACvE,CACA,SAASK,GAAK5E,EAAS6E,EAAW,CAChC,QAAWN,IAAQ,CAACM,EAAW,QAAQA,CAAS,EAAE,EAChD,GAAIH,GAAQ1E,EAASuE,CAAI,EACvB,OAAOD,GAAKtE,EAASuE,CAAI,CAG/B,CAEA,IAAMO,GAAY,OAAO,OAAW,IAC9BC,GAAQD,IAAa,SAAS,MAAQ,MACtCE,GAAWF,IAAa,iBAAkB,OAC1CG,GAAmBH,IAAa,OAAO,aACvCI,GAAgBD,GAAmB,cAAgBD,GAAW,aAAe,YAC7EG,GAAgBF,GAAmB,cAAgBD,GAAW,YAAc,YAC5EI,GAAcH,GAAmB,YAAcD,GAAW,WAAa,UACvEK,GAAeJ,GAAmB,eAAiBD,GAAW,GAAK,aACnEM,GAAeL,GAAmB,eAAiBD,GAAW,GAAK,aACnEO,GAAgBN,GAAmB,gBAAkB,cAErDO,EAAe,CACnB,KAAM,GACN,KAAM,GACN,GAAI,GACJ,IAAK,GACL,MAAO,GACP,GAAI,GACJ,IAAK,GACL,MAAO,GACP,OAAQ,GACR,KAAM,GACN,KAAM,GACN,MAAO,GACP,OAAQ,GACR,MAAO,GACP,IAAK,EACP,EACA,SAASC,GAAczF,EAAS,CAC9B,OAAOC,EAAQD,CAAO,EAAE,KAAM2E,GAAaa,EAAab,EAAS,QAAQ,YAAY,CAAC,CAAC,CACzF,CACA,IAAMe,GAAcZ,IAAa,QAAQ,UAAU,iBAAmB,UAAW,CAC/E,OAAO,KAAK,aAAe,KAAK,cAAgB,KAAK,eAAe,EAAE,MACxE,EACA,SAASa,GAAU3F,EAAS,CAC1B,OAAOC,EAAQD,CAAO,EAAE,KAAM2E,GAAae,GAAY,KAAKf,CAAQ,CAAC,CACvE,CACA,IAAMiB,GAAW,+BACjB,SAASC,GAAQ7F,EAAS,CACxB,OAAOC,EAAQD,CAAO,EAAE,KAAM2E,GAAamB,GAAQnB,EAAUiB,EAAQ,CAAC,CACxE,CACA,IAAMG,GAAe,GAAGH,EAAQ,sBAChC,SAASI,GAAYhG,EAAS,CAC5B,OAAO8F,GAAQ9F,EAAS+F,EAAY,CACtC,CACA,SAASE,GAAOjG,EAAS,CACvB,IAAI7B,EACJ,OAAQA,EAAK4B,EAAOC,CAAO,IAAM,KAAO,OAAS7B,EAAG,aACtD,CACA,SAAS+H,GAASlG,EAASmG,EAAU,CACnC,OAAOlG,EAAQD,CAAO,EAAE,OAAQ2E,GAAamB,GAAQnB,EAAUwB,CAAQ,CAAC,CAC1E,CACA,SAASL,GAAQ9F,EAASmG,EAAU,CAClC,OAAOlG,EAAQD,CAAO,EAAE,KAAM2E,GAAaA,EAAS,QAAQwB,CAAQ,CAAC,CACvE,CACA,SAASC,GAAQpG,EAASmG,EAAU,CAClC,IAAMnD,EAAW,CAAC,EAClB,KAAOhD,EAAUiG,GAAOjG,CAAO,IACzB,CAACmG,GAAYL,GAAQ9F,EAASmG,CAAQ,IACxCnD,EAAS,KAAKhD,CAAO,EAGzB,OAAOgD,CACT,CACA,SAASqD,GAASrG,EAASmG,EAAU,CACnCnG,EAAUD,EAAOC,CAAO,EACxB,IAAMsG,EAAYtG,EAAUtB,EAAQsB,EAAQ,QAAQ,EAAI,CAAC,EACzD,OAAOmG,EAAWD,GAASI,EAAWH,CAAQ,EAAIG,CACpD,CACA,SAASC,GAAMvG,EAASwG,EAAK,CAC3B,OAAOA,EAAMvG,EAAQD,CAAO,EAAE,QAAQD,EAAOyG,CAAG,CAAC,EAAIH,GAASJ,GAAOjG,CAAO,CAAC,EAAE,QAAQA,CAAO,CAChG,CACA,SAASyG,GAAiBjC,EAAI,CAC5B,OAAAA,EAAKzE,EAAOyE,CAAE,EACPA,GAAM,CAAC,SAAU,WAAY,QAAQ,EAAE,MAAOkC,GAASlC,EAAGkC,CAAI,IAAM,SAASA,CAAI,CAAC,CAC3F,CACA,SAASC,GAAmBnC,EAAI,CAC9B,GAAIiC,GAAiBjC,CAAE,EAAG,CACxB,GAAM,CAAE,KAAAoC,EAAM,cAAAC,CAAc,EAAI9G,EAAOyE,CAAE,EACnCsC,EAAK,mBAAmBF,CAAI,EAAE,MAAM,CAAC,EAC3C,OAAOC,EAAc,eAAeC,CAAE,GAAKD,EAAc,kBAAkBC,CAAE,EAAE,CAAC,CAClF,CACF,CAEA,SAASC,GAAMZ,EAAUa,EAAS,CAChC,OAAOC,GAAKd,EAAUe,GAAWf,EAAUa,CAAO,CAAC,CACrD,CACA,SAASG,GAAShB,EAAUa,EAAS,CACnC,OAAOI,GAAQjB,EAAUe,GAAWf,EAAUa,CAAO,CAAC,CACxD,CACA,SAASC,GAAKd,EAAUa,EAAS,CAC/B,OAAOjH,EAAOsH,GAAOlB,EAAUpG,EAAOiH,CAAO,EAAG,eAAe,CAAC,CAClE,CACA,SAASI,GAAQjB,EAAUa,EAAS,CAClC,OAAO/G,EAAQoH,GAAOlB,EAAUpG,EAAOiH,CAAO,EAAG,kBAAkB,CAAC,CACtE,CACA,SAASE,GAAWf,EAAUa,EAAU,SAAU,CAChD,OAAOhI,EAAWgI,CAAO,GAAKM,GAAcnB,CAAQ,EAAE,kBAAoBa,EAAUA,EAAQ,aAC9F,CACA,IAAMO,GAAY,gCACZC,GAAkB,qBAClBF,GAAgB5J,GAASyI,GAAa,CAC1C,IAAIsB,EAAoB,GACxB,GAAI,CAACtB,GAAY,CAAC7G,EAAS6G,CAAQ,EACjC,MAAO,CAAC,EAEV,IAAMuB,EAAY,CAAC,EACnB,QAASC,KAAOxB,EAAS,MAAMqB,EAAe,EAC5CG,EAAMA,EAAI,KAAK,EAAE,QAAQJ,GAAW,MAAM,EAC1CE,IAAsBA,EAAoB,CAAC,IAAK,IAAK,IAAK,IAAK,GAAG,EAAE,SAASE,EAAI,CAAC,CAAC,GACnFD,EAAU,KAAKC,CAAG,EAEpB,MAAO,CACL,SAAUD,EAAU,KAAK,GAAG,EAC5B,UAAAA,EACA,kBAAAD,CACF,CACF,CAAC,EACKG,GAAa,kBACbC,GAAwBnK,GAASyI,GAAa,CAClDA,EAAWA,EAAS,MAAM,CAAC,EAAE,KAAK,EAClC,GAAM,CAAC2B,CAAQ,EAAI3B,EAAS,MAAMyB,EAAU,EAC5C,MAAO,CAACE,EAAU3B,EAAS,MAAM2B,EAAS,OAAS,CAAC,CAAC,CACvD,CAAC,EACD,SAAST,GAAOlB,EAAUa,EAAU,SAAUe,EAAS,CACrD,IAAMC,EAASV,GAAcnB,CAAQ,EACrC,GAAI,CAAC6B,EAAO,kBACV,OAAOA,EAAO,SAAWC,GAASjB,EAASe,EAASC,EAAO,QAAQ,EAAI7B,EAEzEA,EAAW,GACX,IAAM+B,EAAWF,EAAO,UAAU,SAAW,EAC7C,QAASL,KAAOK,EAAO,UAAW,CAChC,IAAIG,GACAC,GAAMpB,EAQV,GAPIW,EAAI,CAAC,IAAM,MACb,CAACQ,GAAaR,CAAG,EAAIE,GAAsBF,CAAG,EAC9CS,GAAMpB,EAAQ,cAAc,QAAQmB,EAAW,EAC3C,CAACR,GAAOO,IAIVE,IAAOT,EAAI,CAAC,IAAM,MACpB,CAACQ,GAAaR,CAAG,EAAIE,GAAsBF,CAAG,EAC9CS,GAAMA,GAAI,uBACVA,GAAMtC,GAAQsC,GAAKD,EAAW,EAAIC,GAAM,KACpC,CAACT,GAAOO,GACV,OAAOE,GAGX,GAAKA,GAGL,IAAIF,EACF,OAAIP,EAAI,CAAC,IAAM,KAAOA,EAAI,CAAC,IAAM,KAC/BA,EAAM,uBAAuBpB,GAAM6B,EAAG,EAAI,CAAC,KAAKT,CAAG,GACnDS,GAAMA,GAAI,eACDT,EAAI,CAAC,IAAM,MACpBA,EAAM,UAAUA,CAAG,IAEdM,GAASG,GAAKL,EAASJ,CAAG,EAEnCxB,GAAY,GAAGA,EAAW,IAAM,EAAE,GAAGkC,GAAQD,EAAG,CAAC,IAAIT,CAAG,GAC1D,CACA,OAAK3I,EAAWgI,CAAO,IACrBA,EAAUA,EAAQ,eAEbiB,GAASjB,EAASe,EAAS5B,CAAQ,CAC5C,CACA,SAAS8B,GAASjB,EAASe,EAAS5B,EAAU,CAC5C,GAAI,CACF,OAAOa,EAAQe,CAAO,EAAE5B,CAAQ,CAClC,MAAY,CACV,OAAO,IACT,CACF,CACA,SAASkC,GAAQrI,EAAS,CACxB,IAAMsI,EAAQ,CAAC,EACf,KAAOtI,EAAQ,YAAY,CACzB,IAAM8G,EAAKxC,GAAKtE,EAAS,IAAI,EAC7B,GAAI8G,EAAI,CACNwB,EAAM,QAAQ,IAAIC,GAAOzB,CAAE,CAAC,EAAE,EAC9B,KACF,KAAO,CACL,GAAI,CAAE,QAAA0B,CAAQ,EAAIxI,EACdwI,IAAY,SACdA,GAAW,cAAcjC,GAAMvG,CAAO,EAAI,CAAC,KAE7CsI,EAAM,QAAQE,CAAO,EACrBxI,EAAUA,EAAQ,UACpB,CACF,CACA,OAAOsI,EAAM,KAAK,KAAK,CACzB,CACA,SAASC,GAAOE,EAAK,CACnB,OAAOnJ,EAASmJ,CAAG,EAAI,IAAI,OAAOA,CAAG,EAAI,EAC3C,CAEA,SAASC,MAAMpF,EAAM,CACnB,GAAI,CAACqF,EAASC,EAAOzC,EAAU0C,EAAUC,EAAa,EAAK,EAAIC,GAAQzF,CAAI,EACvEuF,EAAS,OAAS,IACpBA,EAAWG,GAAOH,CAAQ,GAEMC,GAAW,OAC3CD,EAAWI,GAAWJ,CAAQ,GAE5B1C,IACF0C,EAAWK,GAAS/C,EAAU0C,CAAQ,GAExC,QAAWM,MAAQP,EACjB,QAAWQ,MAAUT,EACnBS,GAAO,iBAAiBD,GAAMN,EAAUC,CAAU,EAGtD,MAAO,IAAMO,GAAIV,EAASC,EAAOC,EAAUC,CAAU,CACvD,CACA,SAASO,MAAO/F,EAAM,CACpB,GAAI,CAACqF,EAASC,EAAO,CAAEC,EAAUC,EAAa,EAAK,EAAIC,GAAQzF,CAAI,EACnE,QAAW6F,KAAQP,EACjB,QAAWQ,MAAUT,EACnBS,GAAO,oBAAoBD,EAAMN,EAAUC,CAAU,CAG3D,CACA,SAASQ,MAAQhG,EAAM,CACrB,GAAM,CAACtD,EAAS4I,EAAOzC,EAAU0C,EAAUC,EAAa,GAAOS,EAAS,EAAIR,GAAQzF,CAAI,EAClFkG,GAAOd,GACX1I,EACA4I,EACAzC,EACCsD,IAAM,CACL,IAAMC,GAAS,CAACH,IAAaA,GAAUE,EAAC,EACpCC,KACFF,GAAK,EACLX,EAASY,GAAGC,EAAM,EAEtB,EACAZ,CACF,EACA,OAAOU,EACT,CACA,SAASG,GAAQhB,EAASiB,EAAOC,EAAS,CACxC,OAAOC,GAAenB,CAAO,EAAE,MAC5BS,GAAWA,EAAO,cAAcW,GAAYH,EAAO,GAAM,GAAMC,CAAO,CAAC,CAC1E,CACF,CACA,SAASE,GAAYN,EAAGO,EAAU,GAAMC,EAAa,GAAOJ,EAAS,CACnE,OAAIvK,EAASmK,CAAC,IACZA,EAAI,IAAI,YAAYA,EAAG,CAAE,QAAAO,EAAS,WAAAC,EAAY,OAAQJ,CAAQ,CAAC,GAE1DJ,CACT,CACA,SAASV,GAAQzF,EAAM,CACrB,OAAAA,EAAK,CAAC,EAAIwG,GAAexG,EAAK,CAAC,CAAC,EAC5BhE,EAASgE,EAAK,CAAC,CAAC,IAClBA,EAAK,CAAC,EAAIA,EAAK,CAAC,EAAE,MAAM,GAAG,GAEzB1E,EAAW0E,EAAK,CAAC,CAAC,GACpBA,EAAK,OAAO,EAAG,EAAG,EAAK,EAElBA,CACT,CACA,SAAS4F,GAAS/C,EAAU0C,EAAU,CACpC,OAAQY,GAAM,CACZ,IAAMxG,EAAUkD,EAAS,CAAC,IAAM,IAAMiB,GAAQjB,EAAUsD,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAMzJ,GAAYA,EAAQ,SAASyJ,EAAE,MAAM,CAAC,EAAIA,EAAE,OAAO,QAAQtD,CAAQ,EACxJlD,IACFwG,EAAE,QAAUxG,EACZ4F,EAAS,KAAK,KAAMY,CAAC,EACrB,OAAOA,EAAE,QAEb,CACF,CACA,SAAST,GAAOH,EAAU,CACxB,OAAQY,GAAMhL,EAAQgL,EAAE,MAAM,EAAIZ,EAASY,EAAG,GAAGA,EAAE,MAAM,EAAIZ,EAASY,CAAC,CACzE,CACA,SAASR,GAAWJ,EAAU,CAC5B,OAAO,SAASY,EAAG,CACjB,GAAIA,EAAE,SAAWA,EAAE,eAAiBA,EAAE,SAAWA,EAAE,QACjD,OAAOZ,EAAS,KAAK,KAAMY,CAAC,CAEhC,CACF,CACA,SAASS,GAAcd,EAAQ,CAC7B,OAAOA,GAAU,qBAAsBA,CACzC,CACA,SAASe,EAAcf,EAAQ,CAC7B,OAAOc,GAAcd,CAAM,EAAIA,EAASrJ,EAAOqJ,CAAM,CACvD,CACA,SAASU,GAAeV,EAAQ,CAC9B,OAAO3K,EAAQ2K,CAAM,EAAIA,EAAO,IAAIe,CAAa,EAAE,OAAO,OAAO,EAAI7K,EAAS8J,CAAM,EAAIhC,GAAQgC,CAAM,EAAIc,GAAcd,CAAM,EAAI,CAACA,CAAM,EAAInJ,EAAQmJ,CAAM,CAC7J,CACA,SAASgB,GAAQX,EAAG,CAClB,OAAOA,EAAE,cAAgB,SAAW,CAAC,CAACA,EAAE,OAC1C,CACA,SAASY,GAAYZ,EAAG,CACtB,IAAItL,EAAImM,EACR,GAAM,CAAE,QAASC,EAAG,QAASC,CAAE,IAAMrM,EAAKsL,EAAE,UAAY,KAAO,OAAStL,EAAG,CAAC,MAAQmM,EAAKb,EAAE,iBAAmB,KAAO,OAASa,EAAG,CAAC,IAAMb,EACxI,MAAO,CAAE,EAAAc,EAAG,EAAAC,CAAE,CAChB,CAEA,IAAMC,GAAY,CAChB,4BAA6B,GAC7B,eAAgB,GAChB,eAAgB,GAChB,YAAa,GACb,cAAe,GACf,cAAe,GACf,cAAe,GACf,QAAS,GACT,MAAO,GACP,QAAS,GACT,mBAAoB,GACpB,oBAAqB,GACrB,OAAQ,GACR,UAAW,GACX,KAAM,EACR,EACA,SAAShC,GAAIzI,EAAS0K,EAAUrL,EAAOsL,EAAU,CAC/C,IAAM3H,EAAW/C,EAAQD,CAAO,EAChC,QAAW2E,KAAY3B,EACrB,GAAI1D,EAASoL,CAAQ,EAAG,CAEtB,GADAA,EAAWE,GAASF,CAAQ,EACxBhL,EAAYL,CAAK,EACnB,OAAO,iBAAiBsF,CAAQ,EAAE,iBAAiB+F,CAAQ,EAE3D/F,EAAS,MAAM,YACb+F,EACAlL,EAAUH,CAAK,GAAK,CAACoL,GAAUC,CAAQ,EAAI,GAAGrL,CAAK,KAAOA,GAASE,EAASF,CAAK,EAAIA,EAAQ,GAC7FsL,CACF,CAEJ,SAAWlM,EAAQiM,CAAQ,EAAG,CAC5B,IAAMhJ,GAAQ,CAAC,EACf,QAAWX,MAAQ2J,EACjBhJ,GAAMX,EAAI,EAAI0H,GAAI9D,EAAU5D,EAAI,EAElC,OAAOW,EACT,SAAW7C,EAAS6L,CAAQ,EAC1B,QAAW3J,MAAQ2J,EACjBjC,GAAI9D,EAAU5D,GAAM2J,EAAS3J,EAAI,EAAG1B,CAAK,EAI/C,OAAO2D,EAAS,CAAC,CACnB,CACA,IAAM4H,GAAWlN,GAAS6G,GAAS,CACjC,GAAItG,EAAWsG,EAAM,IAAI,EACvB,OAAOA,EAETA,EAAO9G,EAAU8G,CAAI,EACrB,GAAM,CAAE,MAAAsG,CAAM,EAAI,SAAS,gBAC3B,GAAItG,KAAQsG,EACV,OAAOtG,EAET,QAAWuG,IAAU,CAAC,SAAU,KAAK,EAAG,CACtC,IAAMC,EAAe,IAAID,CAAM,IAAIvG,CAAI,GACvC,GAAIwG,KAAgBF,EAClB,OAAOE,CAEX,CACF,CAAC,EAEKC,GAAgB,gBAChBC,GAAgB,gBAChBC,GAAqB,qBAC3B,SAASC,GAAanL,EAAS0B,EAAO0J,EAAW,IAAKC,EAAS,SAAU,CACvE,OAAAD,EAAW,KAAK,MAAMA,CAAQ,EACvB,QAAQ,IACbnL,EAAQD,CAAO,EAAE,IACd2E,GAAa,IAAI,QAAQ,CAAC2G,EAASC,KAAW,CAC7C,QAAWhH,MAAQ7C,EACjB+G,GAAI9D,EAAUJ,EAAI,EAEpB,IAAMiH,GAAQ,WAAW,IAAM7B,GAAQhF,EAAUsG,EAAa,EAAGG,CAAQ,EACzE9B,GACE3E,EACA,CAACsG,GAAeC,EAAkB,EAClC,CAAC,CAAE,KAAA/B,EAAK,IAAM,CACZ,aAAaqC,EAAK,EAClB1H,GAAYa,EAAUqG,EAAa,EACnCvC,GAAI9D,EAAU,CACZ,mBAAoB,GACpB,mBAAoB,GACpB,yBAA0B,EAC5B,CAAC,EACDwE,KAAS+B,GAAqBK,GAAO,EAAID,EAAQ3G,CAAQ,CAC3D,EACA,CAAE,KAAM,EAAK,CACf,EACApB,GAASoB,EAAUqG,EAAa,EAChCvC,GAAI9D,EAAU,CACZ,mBAAoB,OAAO,KAAKjD,CAAK,EAAE,IAAIkJ,EAAQ,EAAE,KAAK,GAAG,EAC7D,mBAAoB,GAAGQ,CAAQ,KAC/B,yBAA0BC,EAC1B,GAAG3J,CACL,CAAC,CACH,CAAC,CACH,CACF,CACF,CACA,IAAM+J,GAAa,CACjB,MAAON,GACP,MAAM,KAAKnL,EAAS,CAClB2J,GAAQ3J,EAASiL,EAAa,EAC9B,MAAM,QAAQ,QAAQ,CACxB,EACA,MAAM,OAAOjL,EAAS,CACpB2J,GAAQ3J,EAASkL,EAAkB,EACnC,MAAM,QAAQ,QAAQ,CACxB,EACA,WAAWlL,EAAS,CAClB,OAAO6D,GAAS7D,EAASgL,EAAa,CACxC,CACF,EACMU,GAAe,eACfC,GAAe,eACfC,GAAoB,oBAC1B,SAASC,GAAU7L,EAAS8L,EAAWV,EAAW,IAAKW,EAAQC,EAAK,CAClE,OAAO,QAAQ,IACb/L,EAAQD,CAAO,EAAE,IACd2E,GAAa,IAAI,QAAQ,CAAC2G,GAASC,KAAW,CACzC1H,GAASc,EAAU+G,EAAY,GACjC/B,GAAQhF,EAAUiH,EAAiB,EAErC,IAAMpI,GAAU,CACdsI,EACAJ,GACA,GAAGA,EAAY,IAAIM,EAAM,QAAU,OAAO,GAC1CD,GAAU,uBAAuBA,CAAM,GACvCC,GAAO,GAAGN,EAAY,UACxB,EACMF,GAAQ,WAAW,IAAM7B,GAAQhF,EAAUgH,EAAY,EAAGP,CAAQ,EACxE9B,GACE3E,EACA,CAACgH,GAAcC,EAAiB,EAChC,CAAC,CAAE,KAAAzC,EAAK,IAAM,CACZ,aAAaqC,EAAK,EAClBrC,KAASyC,GAAoBL,GAAO,EAAID,GAAQ3G,CAAQ,EACxD8D,GAAI9D,EAAU,oBAAqB,EAAE,EACrCb,GAAYa,EAAUnB,EAAO,CAC/B,EACA,CAAE,KAAM,EAAK,CACf,EACAiF,GAAI9D,EAAU,oBAAqB,GAAGyG,CAAQ,IAAI,EAClD7H,GAASoB,EAAUnB,EAAO,CAC5B,CAAC,CACH,CACF,CACF,CACA,IAAMyI,GAAY,CAChB,GAAIJ,GACJ,IAAI7L,EAAS8L,EAAWV,EAAUW,EAAQ,CACxC,OAAOF,GAAU7L,EAAS8L,EAAWV,EAAUW,EAAQ,EAAI,CAC7D,EACA,WAAW/L,EAAS,CAClB,OAAO6D,GAAS7D,EAAS0L,EAAY,CACvC,EACA,OAAO1L,EAAS,CACd2J,GAAQ3J,EAAS4L,EAAiB,CACpC,CACF,EAEA,SAASM,GAAM9I,EAAI,CACjB,GAAI,SAAS,aAAe,UAAW,CACrCA,EAAG,EACH,MACF,CACAkG,GAAK,SAAU,mBAAoBlG,CAAE,CACvC,CACA,SAAS+I,GAAMnM,KAAYoM,EAAU,CACnC,OAAOA,EAAS,KAAM5D,GAAY,CAChC,IAAIrK,EACJ,QAASA,EAAgC6B,GAAQ,UAAY,KAAO,OAAS7B,EAAG,YAAY,KAAOqK,EAAQ,YAAY,CACzH,CAAC,CACH,CACA,SAAS6D,GAAMrM,EAAS,CACtB,OAAAA,EAAUsM,GAAEtM,CAAO,EACnBA,EAAQ,UAAY,GACbA,CACT,CACA,SAASuM,GAAKC,EAASC,EAAO,CAC5B,OAAO/M,EAAY+M,CAAK,EAAIH,GAAEE,CAAO,EAAE,UAAYE,GAAOL,GAAMG,CAAO,EAAGC,CAAK,CACjF,CACA,IAAME,GAAUC,GAAQ,SAAS,EAC3BF,GAASE,GAAQ,QAAQ,EACzBC,GAASD,GAAQ,QAAQ,EACzBE,GAAQF,GAAQ,OAAO,EAC7B,SAASA,GAAQxJ,EAAI,CACnB,OAAO,SAASoD,EAAKxG,EAAS,CAC5B,IAAI7B,EACJ,IAAM4O,EAAQ9M,EAAQX,EAASU,CAAO,EAAIgN,GAAShN,CAAO,EAAIA,CAAO,EACrE,OAAC7B,EAAKmO,GAAE9F,CAAG,IAAM,MAAgBrI,EAAGiF,CAAE,EAAE,GAAG2J,CAAK,EACzCE,GAAaF,CAAK,CAC3B,CACF,CACA,SAASG,GAASlN,EAAS,CACzBC,EAAQD,CAAO,EAAE,QAAS2E,GAAaA,EAAS,OAAO,CAAC,CAC1D,CACA,SAASwI,GAAQnN,EAASoN,EAAW,CAEnC,IADAA,EAAYrN,EAAO8M,GAAO7M,EAASoN,CAAS,CAAC,EACtCA,EAAU,mBACfA,EAAYA,EAAU,kBAExB,OAAAV,GAAOU,EAAWpN,CAAO,EAClBoN,CACT,CACA,SAASC,GAAUrN,EAASoN,EAAW,CACrC,OAAOnN,EACLA,EAAQD,CAAO,EAAE,IACd2E,GAAaA,EAAS,cAAc,EAAIwI,GAAQzO,EAAQiG,EAAS,UAAU,EAAGyI,CAAS,EAAIV,GAAO/H,EAAUyI,CAAS,CACxH,CACF,CACF,CACA,SAASE,GAAOtN,EAAS,CACvBC,EAAQD,CAAO,EAAE,IAAIiG,EAAM,EAAE,OAAO,CAAC5G,EAAOkH,EAAOgH,IAASA,EAAK,QAAQlO,CAAK,IAAMkH,CAAK,EAAE,QAASiG,GAAYA,EAAQ,YAAY,GAAGA,EAAQ,UAAU,CAAC,CAC5J,CACA,IAAMgB,GAAc,6BACpB,SAASR,GAASP,EAAO,CACvB,IAAM3G,EAAU0H,GAAY,KAAKf,CAAK,EACtC,GAAI3G,EACF,OAAO,SAAS,cAAcA,EAAQ,CAAC,CAAC,EAE1C,IAAM2H,EAAY,SAAS,cAAc,UAAU,EACnD,OAAAA,EAAU,UAAYhB,EAAM,KAAK,EAC1BQ,GAAaQ,EAAU,QAAQ,UAAU,CAClD,CACA,SAASR,GAAaF,EAAO,CAC3B,OAAOA,EAAM,OAAS,EAAIA,EAAQA,EAAM,CAAC,CAC3C,CACA,SAASW,GAAMjK,EAAML,EAAI,CACvB,GAAKjE,EAAUsE,CAAI,EAKnB,IAFAL,EAAGK,CAAI,EACPA,EAAOA,EAAK,kBACLA,GACLiK,GAAMjK,EAAML,CAAE,EACdK,EAAOA,EAAK,kBAEhB,CACA,SAAS6I,GAAEnG,EAAUa,EAAS,CAC5B,OAAO2G,GAAOxH,CAAQ,EAAIpG,EAAOiN,GAAS7G,CAAQ,CAAC,EAAIc,GAAKd,EAAUa,CAAO,CAC/E,CACA,SAAS4G,GAAGzH,EAAUa,EAAS,CAC7B,OAAO2G,GAAOxH,CAAQ,EAAIlG,EAAQ+M,GAAS7G,CAAQ,CAAC,EAAIiB,GAAQjB,EAAUa,CAAO,CACnF,CACA,SAAS2G,GAAOhQ,EAAK,CACnB,OAAO2B,EAAS3B,CAAG,GAAKM,EAAWN,EAAI,KAAK,EAAG,GAAG,CACpD,CAEA,IAAMkQ,GAAS,CACb,MAAO,CAAC,OAAQ,OAAO,EACvB,OAAQ,CAAC,MAAO,QAAQ,CAC1B,EACA,SAASC,GAAa9N,EAAS,CAC7B,IAAMsC,EAAOnD,EAAUa,CAAO,EAAID,EAAOC,CAAO,EAAE,sBAAsB,EAAI,CAAE,OAAQ+N,GAAO/N,CAAO,EAAG,MAAOgO,GAAMhO,CAAO,EAAG,IAAK,EAAG,KAAM,CAAE,EAC9I,MAAO,CACL,OAAQsC,EAAK,OACb,MAAOA,EAAK,MACZ,IAAKA,EAAK,IACV,KAAMA,EAAK,KACX,OAAQA,EAAK,IAAMA,EAAK,OACxB,MAAOA,EAAK,KAAOA,EAAK,KAC1B,CACF,CACA,SAAS2L,GAAOjO,EAASkO,EAAa,CAChCA,GACFzF,GAAIzI,EAAS,CAAE,KAAM,EAAG,IAAK,CAAE,CAAC,EAElC,IAAMmO,EAAgBL,GAAa9N,CAAO,EAC1C,GAAIA,EAAS,CACX,GAAM,CAAE,QAAAoO,EAAS,QAAAC,CAAQ,EAAInO,GAASF,CAAO,EACvCsO,EAAW,CAAE,OAAQF,EAAS,MAAOC,CAAQ,EACnD,QAAWE,MAAOV,GAChB,QAAW9M,MAAQ8M,GAAOU,EAAG,EAC3BJ,EAAcpN,EAAI,GAAKuN,EAASC,EAAG,CAGzC,CACA,GAAI,CAACL,EACH,OAAOC,EAET,QAAWpN,IAAQ,CAAC,OAAQ,KAAK,EAC/B0H,GAAIzI,EAASe,EAAMmN,EAAYnN,CAAI,EAAIoN,EAAcpN,CAAI,CAAC,CAE9D,CACA,SAAS+G,GAAS9H,EAAS,CACzB,GAAI,CAAE,IAAAwO,EAAK,KAAAC,CAAK,EAAIR,GAAOjO,CAAO,EAC5B,CACJ,cAAe,CAAE,KAAA0O,EAAM,gBAAAC,CAAgB,EACvC,aAAAC,CACF,EAAI7O,EAAOC,CAAO,EACdiG,GAAS2I,GAAgBD,EAC7B,KAAO1I,KAAWA,KAAWyI,GAAQzI,KAAW0I,IAAoBlG,GAAIxC,GAAQ,UAAU,IAAM,UAC9FA,GAASA,GAAO,WAElB,GAAI9G,EAAU8G,EAAM,EAAG,CACrB,IAAM4I,GAAeZ,GAAOhI,EAAM,EAClCuI,GAAOK,GAAa,IAAM/O,EAAQ2I,GAAIxC,GAAQ,gBAAgB,CAAC,EAC/DwI,GAAQI,GAAa,KAAO/O,EAAQ2I,GAAIxC,GAAQ,iBAAiB,CAAC,CACpE,CACA,MAAO,CACL,IAAKuI,EAAM1O,EAAQ2I,GAAIzI,EAAS,WAAW,CAAC,EAC5C,KAAMyO,EAAO3O,EAAQ2I,GAAIzI,EAAS,YAAY,CAAC,CACjD,CACF,CACA,SAAS8O,GAAe9O,EAAS,CAC/BA,EAAUD,EAAOC,CAAO,EACxB,IAAM+O,EAAU,CAAC/O,EAAQ,UAAWA,EAAQ,UAAU,EACtD,KAAOA,EAAUA,EAAQ,cAGvB,GAFA+O,EAAQ,CAAC,GAAK/O,EAAQ,UAAYF,EAAQ2I,GAAIzI,EAAS,gBAAgB,CAAC,EACxE+O,EAAQ,CAAC,GAAK/O,EAAQ,WAAaF,EAAQ2I,GAAIzI,EAAS,iBAAiB,CAAC,EACtEyI,GAAIzI,EAAS,UAAU,IAAM,QAAS,CACxC,IAAMgP,EAAM9O,GAASF,CAAO,EAC5B,OAAA+O,EAAQ,CAAC,GAAKC,EAAI,QAClBD,EAAQ,CAAC,GAAKC,EAAI,QACXD,CACT,CAEF,OAAOA,CACT,CACA,IAAMhB,GAASkB,GAAU,QAAQ,EAC3BjB,GAAQiB,GAAU,OAAO,EAC/B,SAASA,GAAUlO,EAAM,CACvB,IAAM6J,EAAW5M,EAAQ+C,CAAI,EAC7B,MAAO,CAACf,EAASX,IAAU,CACzB,GAAIK,EAAYL,CAAK,EAAG,CACtB,GAAIN,EAASiB,CAAO,EAClB,OAAOA,EAAQ,QAAQ4K,CAAQ,EAAE,EAEnC,GAAI5L,EAAWgB,CAAO,EAAG,CACvB,IAAMkP,EAAMlP,EAAQ,gBACpB,OAAO,KAAK,IAAIkP,EAAI,SAAStE,CAAQ,EAAE,EAAGsE,EAAI,SAAStE,CAAQ,EAAE,CAAC,CACpE,CACA,OAAA5K,EAAUD,EAAOC,CAAO,EACxBX,EAAQoJ,GAAIzI,EAASe,CAAI,EACzB1B,EAAQA,IAAU,OAASW,EAAQ,SAAS4K,CAAQ,EAAE,EAAI9K,EAAQT,CAAK,GAAK,EACrEA,EAAQ8P,GAAenP,EAASe,CAAI,CAC7C,KACE,QAAO0H,GACLzI,EACAe,EACA,CAAC1B,GAASA,IAAU,EAAI,GAAK,CAACA,EAAQ8P,GAAenP,EAASe,CAAI,EAAI,IACxE,CAEJ,CACF,CACA,SAASoO,GAAenP,EAASe,EAAMqO,EAAS,aAAc,CAC5D,OAAO3G,GAAIzI,EAAS,WAAW,IAAMoP,EAASlO,GAC5C2M,GAAO9M,CAAI,EACVsO,GAAUvP,EAAQ2I,GAAIzI,EAAS,WAAWqP,CAAK,EAAE,CAAC,EAAIvP,EAAQ2I,GAAIzI,EAAS,UAAUqP,CAAK,QAAQ,CAAC,CACtG,EAAI,CACN,CACA,SAASC,GAAaC,EAAK,CACzB,QAAWhB,KAAOV,GAChB,QAAW9K,KAAK8K,GAAOU,CAAG,EACxB,GAAIV,GAAOU,CAAG,EAAExL,CAAC,IAAMwM,EACrB,OAAO1B,GAAOU,CAAG,EAAE,EAAIxL,CAAC,EAI9B,OAAOwM,CACT,CACA,SAASC,GAAKnQ,EAAOqL,EAAW,QAAS1K,EAAU,OAAQyP,EAAY,GAAO,CAC5E,OAAKnQ,EAASD,CAAK,EAGZ6B,GAAMwO,GAAUrQ,CAAK,EAAIsQ,GAAW,CACzC,IAAMC,EAAOC,GAAUF,CAAM,EAC7B,OAAOC,EAAOE,GACZF,IAAS,KAAOG,GAAkB,EAAIH,IAAS,KAAO5B,GAAM9N,GAASF,CAAO,CAAC,EAAIyP,EAAYzP,EAAQ,SAAShC,EAAQ0M,CAAQ,CAAC,EAAE,EAAIoD,GAAa9N,CAAO,EAAE0K,CAAQ,EACnKiF,CACF,EAAIA,CACN,CAAC,EARQ7P,EAAQT,CAAK,CASxB,CACA,IAAM2Q,GAAS,kCACTN,GAAYhS,GAASuS,GAASA,EAAK,SAAS,EAAE,QAAQ,MAAO,EAAE,EAAE,MAAMD,EAAM,GAAK,CAAC,CAAC,EACpFE,GAAW,eACXL,GAAYnS,GAASC,IAASA,EAAI,MAAMuS,EAAQ,GAAK,CAAC,GAAG,CAAC,CAAC,EACjE,SAASJ,GAAQK,EAAM9Q,EAAO,CAC5B,OAAO8Q,EAAOrQ,EAAQT,CAAK,EAAI,GACjC,CACA,IAAI+Q,GACAC,GACJ,SAASN,IAAoB,CAC3B,OAAIK,KAGCC,KACHA,GAAO/D,GAAE,OAAO,EAChB7D,GAAI4H,GAAM,CACR,OAAQ,QACR,SAAU,OACZ,CAAC,EACD3H,GAAG,OAAQ,SAAU,IAAM0H,GAAK,IAAI,GAEtC1D,GAAO,SAAS,KAAM2D,EAAI,EAC1BD,GAAKC,GAAK,aACVnD,GAASmD,EAAI,EACND,GACT,CAEA,IAAME,GAAU,CAAE,KAAAC,GAAM,MAAAC,GAAO,MAAAC,GAAO,MAAAC,EAAM,EACtCC,GAAQ,CAAC,EACTC,GAAS,CAAC,EAChB,SAASL,GAAKM,EAAM,CAClB,OAAAF,GAAM,KAAKE,CAAI,EACfC,GAAc,EACPD,CACT,CACA,SAASL,GAAMK,EAAM,CACnB,OAAAD,GAAO,KAAKC,CAAI,EAChBC,GAAc,EACPD,CACT,CACA,SAASJ,GAAMI,EAAM,CACnB9M,GAAO4M,GAAOE,CAAI,EAClB9M,GAAO6M,GAAQC,CAAI,CACrB,CACA,IAAIE,GAAY,GAChB,SAASL,IAAQ,CACfM,GAASL,EAAK,EACdK,GAASJ,GAAO,OAAO,CAAC,CAAC,EACzBG,GAAY,IACRJ,GAAM,QAAUC,GAAO,SACzBE,GAAc,CAElB,CACA,SAASA,IAAgB,CAClBC,KACHA,GAAY,GACZ,eAAeL,EAAK,EAExB,CACA,SAASM,GAASC,EAAO,CACvB,IAAIJ,EACJ,KAAOA,EAAOI,EAAM,MAAM,GACxB,GAAI,CACFJ,EAAK,CACP,OAASpH,EAAG,CACV,QAAQ,MAAMA,CAAC,CACjB,CAEJ,CACA,SAAS1F,GAAOxF,EAAO8C,EAAM,CAC3B,IAAMkF,EAAQhI,EAAM,QAAQ8C,CAAI,EAChC,MAAO,CAACkF,GAAShI,EAAM,OAAOgI,EAAO,CAAC,CACxC,CAEA,MAAM2K,EAAa,CACjB,MAAO,CACL,KAAK,UAAY,CAAC,EAClB,IAAIpJ,EACJ,KAAK,OAASY,GAAG,SAAU,YAAce,GAAM3B,EAAWuC,GAAYZ,CAAC,CAAC,EACxE,KAAK,SAAW,YAAY,IAAM,CAC3B3B,IAGL,KAAK,UAAU,KAAKA,CAAQ,EACxB,KAAK,UAAU,OAAS,GAC1B,KAAK,UAAU,MAAM,EAEzB,EAAG,EAAE,CACP,CACA,QAAS,CACP,IAAI3J,GACHA,EAAK,KAAK,SAAW,MAAgBA,EAAG,KAAK,IAAI,EAClD,cAAc,KAAK,QAAQ,CAC7B,CACA,QAAQiL,EAAQ,CACd,GAAI,CAAC,KAAK,WAAa,KAAK,UAAU,OAAS,EAC7C,MAAO,GAET,IAAM+H,EAAIrD,GAAa1E,CAAM,EACvB,CAAE,KAAAqF,EAAM,MAAA2C,EAAO,IAAA5C,EAAK,OAAA6C,EAAO,EAAIF,EAC/B,CAACG,EAAY,EAAI,KAAK,UACtBxJ,GAAWlH,GAAK,KAAK,SAAS,EAC9B2Q,GAAO,CAACD,GAAcxJ,EAAQ,EACpC,OAAI1F,GAAY0F,GAAUqJ,CAAC,EAClB,GAES,CAChB,CACE,CAAE,EAAG1C,EAAM,EAAGD,CAAI,EAClB,CAAE,EAAG4C,EAAO,EAAGC,EAAO,CACxB,EACA,CACE,CAAE,EAAG5C,EAAM,EAAG4C,EAAO,EACrB,CAAE,EAAGD,EAAO,EAAG5C,CAAI,CACrB,CACF,EACiB,KAAMgD,IAAa,CAClC,IAAMC,GAAeC,GAAUH,GAAMC,EAAQ,EAC7C,OAAOC,IAAgBrP,GAAYqP,GAAcN,CAAC,CACpD,CAAC,CACH,CACF,CACA,SAASO,GAAU,CAAC,CAAE,EAAGC,EAAIC,CAAM,EAAG,CAAE,EAAGC,EAAI,EAAGC,CAAG,CAAC,EAAG,CAAC,CAAE,EAAGC,EAAI,EAAGC,CAAG,EAAG,CAAE,EAAGC,GAAI,EAAGC,EAAG,CAAC,EAAG,CAC7F,IAAMC,IAAeD,GAAKF,IAAOH,EAAKF,IAAOM,GAAKF,IAAOD,EAAKF,GAC9D,GAAIO,KAAgB,EAClB,MAAO,GAET,IAAMC,KAAOH,GAAKF,IAAOH,EAAKI,IAAOE,GAAKF,IAAOL,EAAKI,IAAOI,GAC7D,OAAIC,GAAK,EACA,GAEF,CAAE,EAAGT,EAAKS,IAAMP,EAAKF,GAAK,EAAGC,EAAKQ,IAAMN,EAAKF,EAAI,CAC1D,CAEA,SAASS,GAAoB1J,EAAS9H,EAAIyR,EAAU,CAAC,EAAG,CAAE,aAAAC,EAAe,EAAK,EAAI,CAAC,EAAG,CACpF,IAAMC,EAAW,IAAI,qBACnBD,EAAe,CAACE,EAASC,KAAc,CACjCD,EAAQ,KAAME,IAAUA,GAAM,cAAc,GAC9C9R,EAAG4R,EAASC,EAAS,CAEzB,EAAI7R,EACJyR,CACF,EACA,QAAW9N,KAAMvE,EAAQ0I,CAAO,EAC9B6J,EAAS,QAAQhO,CAAE,EAErB,OAAOgO,CACT,CACA,IAAMI,GAAoB9N,IAAa,OAAO,eAC9C,SAAS+N,GAAclK,EAAS9H,EAAIyR,EAAU,CAAE,IAAK,YAAa,EAAG,CACnE,GAAIM,GACF,OAAOE,GAAU,eAAgBnK,EAAS9H,EAAIyR,CAAO,EAEvD,IAAMjJ,EAAM,CAACX,GAAG,OAAQ,cAAe7H,CAAE,EAAG6H,GAAG,SAAU,sBAAuB7H,EAAI,EAAI,CAAC,EACzF,MAAO,CAAE,WAAY,IAAMwI,EAAI,IAAK0J,GAAQA,EAAI,CAAC,CAAE,CACrD,CACA,SAASC,GAAsBnS,EAAI,CACjC,MAAO,CAAE,WAAY6H,GAAG,CAAC,OAAQ,OAAO,cAAc,EAAG,SAAU7H,CAAE,CAAE,CACzE,CACA,SAASoS,GAAgBtK,EAAS9H,EAAIyR,EAAS,CAC7C,OAAOQ,GAAU,iBAAkBnK,EAAS9H,EAAIyR,CAAO,CACzD,CACA,SAASQ,GAAUI,EAAUvK,EAAS9H,EAAIyR,EAAS,CACjD,IAAME,EAAW,IAAIU,EAASrS,CAAE,EAChC,QAAW2D,KAAMvE,EAAQ0I,CAAO,EAC9B6J,EAAS,QAAQhO,EAAI8N,CAAO,EAE9B,OAAOE,CACT,CAEA,SAASW,GAAK3O,EAAI,CACZ4O,GAAS5O,CAAE,GACb6O,GAAK7O,EAAI,CAAE,KAAM,YAAa,OAAQ,MAAO,CAAC,EAE5C8O,GAAQ9O,CAAE,GACZA,EAAG,KAAK,EAAE,MAAMzC,EAAI,CAExB,CACA,SAASwR,GAAM/O,EAAI,CACb4O,GAAS5O,CAAE,GACb6O,GAAK7O,EAAI,CAAE,KAAM,aAAc,OAAQ,OAAQ,CAAC,EAE9C8O,GAAQ9O,CAAE,GACZA,EAAG,MAAM,CAEb,CACA,SAASgP,GAAKhP,EAAI,CACZ4O,GAAS5O,CAAE,GACb6O,GAAK7O,EAAI,CAAE,KAAM,OAAQ,OAAQ,YAAa,MAAO,CAAE,CAAC,EAEtD8O,GAAQ9O,CAAE,IACZA,EAAG,MAAQ,GAEf,CACA,SAASiP,GAAQjP,EAAI,CACnB,OAAO8O,GAAQ9O,CAAE,GAAK4O,GAAS5O,CAAE,CACnC,CACA,SAAS8O,GAAQ9O,EAAI,CACnB,OAAO2H,GAAM3H,EAAI,OAAO,CAC1B,CACA,SAAS4O,GAAS5O,EAAI,CACpB,OAAO2H,GAAM3H,EAAI,QAAQ,IAAMkP,GAAUlP,CAAE,GAAKmP,GAAQnP,CAAE,EAC5D,CACA,SAASkP,GAAUlP,EAAI,CACrB,MAAO,CAAC,CAACA,EAAG,IAAI,MACd,4EACF,CACF,CACA,SAASmP,GAAQnP,EAAI,CACnB,MAAO,CAAC,CAACA,EAAG,IAAI,MAAM,uBAAuB,CAC/C,CACA,eAAe6O,GAAK7O,EAAIoP,EAAK,CAC3B,MAAMC,GAAUrP,CAAE,EAClBsP,GAAKtP,EAAIoP,CAAG,CACd,CACA,SAASE,GAAKtP,EAAIoP,EAAK,CACrBpP,EAAG,cAAc,YAAY,KAAK,UAAU,CAAE,MAAO,UAAW,GAAGoP,CAAI,CAAC,EAAG,GAAG,CAChF,CACA,IAAMG,GAAW,YACbC,GAAU,EACd,SAASH,GAAUrP,EAAI,CACrB,GAAIA,EAAGuP,EAAQ,EACb,OAAOvP,EAAGuP,EAAQ,EAEpB,IAAME,EAAUP,GAAUlP,CAAE,EACtB0P,EAAQP,GAAQnP,CAAE,EAClBsC,EAAK,EAAEkN,GACTG,EACJ,OAAO3P,EAAGuP,EAAQ,EAAI,IAAI,QAASzI,GAAY,CAC7C2I,GAAW3K,GAAK9E,EAAI,OAAQ,IAAM,CAChC,IAAMqE,GAAW,IAAMiL,GAAKtP,EAAI,CAAE,MAAO,YAAa,GAAAsC,CAAG,CAAC,EAC1DqN,EAAS,YAAYtL,GAAU,GAAG,EAClCA,GAAS,CACX,CAAC,EACDS,GAAK,OAAQ,UAAWgC,EAAS,GAAO,CAAC,CAAE,KAAA1G,EAAK,IAAM,CACpD,GAAI,CACF,OAAAA,GAAO,KAAK,MAAMA,EAAI,EACfqP,GAAoCrP,IAAK,KAAQkC,GAAMlC,GAAK,QAAU,WAAasP,GAAS,OAA+BtP,IAAK,SAAS,IAAMkC,CACxJ,MAAY,CACZ,CACF,CAAC,EACDtC,EAAG,IAAM,GAAGA,EAAG,GAAG,GAAGnG,EAASmG,EAAG,IAAK,GAAG,EAAI,IAAM,GAAG,GAAGyP,EAAU,gBAAkB,mBAAmBnN,CAAE,EAAE,EAC9G,CAAC,EAAE,KAAK,IAAM,cAAcqN,CAAM,CAAC,CACrC,CAEA,SAASC,GAASpU,EAASqU,EAAY,EAAGC,EAAa,EAAG,CACxD,OAAK3O,GAAU3F,CAAO,EAGfgC,GACL,GAAGuS,GAAgBvU,CAAO,EAAE,IAAKwM,GAAY,CAC3C,GAAM,CAAE,IAAAgC,EAAK,KAAAC,EAAM,OAAA4C,GAAQ,MAAAD,EAAM,EAAIoD,GAAehI,CAAO,EAC3D,MAAO,CACL,IAAKgC,EAAM6F,EACX,KAAM5F,EAAO6F,EACb,OAAQjD,GAASgD,EACjB,MAAOjD,GAAQkD,CACjB,CACF,CAAC,EAAE,OAAOrG,GAAOjO,CAAO,CAAC,CAC3B,EAZS,EAaX,CACA,SAASyU,GAAezU,EAAS,CAAE,OAAQsO,EAAW,CAAE,EAAI,CAAC,EAAG,CAC9D,IAAMoG,EAAW/O,GAAU3F,CAAO,EAAI2U,GAAc3U,EAAS,GAAO,CAAC,QAAQ,CAAC,EAAI,CAAC,EACnF,OAAO0U,EAAS,OACd,CAACtR,GAAIwR,GAAe7R,KAAM,CACxB,GAAM,CAAE,UAAA8R,GAAW,aAAAC,GAAc,aAAAC,EAAa,EAAIH,GAC5CI,GAAWR,GAAeI,EAAa,EACvCK,GAAYH,GAAeE,GAAS,OACpC,CAAE,OAAQE,GAAU,IAAKC,EAAM,EAAIT,EAAS3R,GAAI,CAAC,EAAIyR,GAAeE,EAAS3R,GAAI,CAAC,CAAC,EAAIkL,GAAOjO,CAAO,EACvGwO,GAAM,KAAK,KAAK2G,GAAQH,GAAS,IAAM1G,EAAWuG,EAAS,EAC/D,OAAIvG,EAAW,GAAKyG,GAAeG,GAAW5G,EAC5CE,IAAOF,EAEPA,EAAW,EAETE,GAAMyG,IACR3G,GAAYE,GAAMyG,GAClBzG,GAAMyG,IACGzG,GAAM,IACfF,GAAYE,GACZA,GAAM,GAED,IAAM4G,EAASR,GAAepG,GAAMqG,GAAW7U,EAASiV,EAAS,EAAE,KAAK7R,EAAE,CACnF,EACA,IAAM,QAAQ,QAAQ,CACxB,EAAE,EACF,SAASgS,EAASzQ,GAAU6J,GAAK6G,GAAUJ,GAAW,CACpD,OAAO,IAAI,QAAS3J,IAAY,CAC9B,IAAMgK,GAAS3Q,GAAS,UAClByG,GAAWmK,EAAY,KAAK,IAAI/G,EAAG,CAAC,EACpCgH,GAAQ,KAAK,IAAI,EACjBC,GAAqBC,GAAiB/Q,EAAQ,IAAMA,GACpDgR,GAAY1H,GAAOoH,EAAQ,EAAE,KAAOI,GAAqB,EAAIH,IAC/DM,GAAO,EACPC,GAAS,IACZ,SAASC,IAAO,CACf,IAAMhG,GAAUiG,EAAKnU,IAAO,KAAK,IAAI,EAAI4T,IAASpK,EAAQ,CAAC,EACvD4K,GAAO,EACPtB,EAAS,CAAC,IAAM/P,IAAY2Q,GAAS9G,GAAMyG,KAC7Ce,GAAO/H,GAAOoH,EAAQ,EAAE,KAAOI,GAAqB,EAAI9Q,GAAS,WAAagR,GAAY7H,GAAamI,GAAmBZ,EAAQ,CAAC,EAAE,QAEnI5M,GAAI9D,GAAU,gBAAgB,IAAM,QACtC8D,GAAI9D,GAAU,iBAAkB,MAAM,EAExCA,GAAS,UAAY2Q,IAAU9G,GAAMwH,IAAQlG,GAC7CrH,GAAI9D,GAAU,iBAAkB,EAAE,EAC9BmL,KAAY,IAAM8F,KAASI,IAAQ,CAACH,MACtCvK,GAAQ,GAERsK,GAAOI,GACP,sBAAsBF,EAAI,EAE9B,GAAG,CACL,CAAC,CACH,CACA,SAASP,EAAYW,GAAM,CACzB,MAAO,IAAK,KAAK,IAAIA,GAAM,IAAK,CAClC,CACA,SAASH,EAAKI,GAAG,CACf,MAAO,KAAO,EAAI,KAAK,IAAI,KAAK,GAAKA,EAAC,EACxC,CACF,CACA,SAASC,GAAapW,EAASqW,EAAc,EAAGC,EAAY,EAAG,CAC7D,GAAI,CAAC3Q,GAAU3F,CAAO,EACpB,MAAO,GAET,IAAM4U,EAAgB2B,GAAavW,EAAS,EAAI,EAC1C,CAAE,aAAA8U,EAAc,UAAAD,CAAU,EAAID,EAC9B,CAAE,OAAQ4B,EAAe,EAAIhC,GAAeI,CAAa,EACzDK,GAAYH,EAAe0B,GAC3BC,GAAmB3H,GAAe9O,CAAO,EAAE,CAAC,EAAI8O,GAAe8F,CAAa,EAAE,CAAC,EAC/EY,GAAQ,KAAK,IAAI,EAAGiB,GAAmBD,GAAiBH,CAAW,EACnEK,GAAM,KAAK,IAAIzB,GAAWwB,GAAmBzW,EAAQ,aAAesW,CAAS,EACnF,OAAOd,GAAQkB,GAAM9U,IAAOiT,EAAYW,KAAUkB,GAAMlB,GAAM,EAAI,CACpE,CACA,SAASb,GAAc3U,EAAS2W,EAAa,GAAOjV,EAAQ,CAAC,EAAG,CAC9D,IAAMkV,EAAWlB,GAAiB1V,CAAO,EACrC6W,EAAYzQ,GAAQpG,CAAO,EAAE,QAAQ,EACzC6W,EAAYA,EAAU,MAAMA,EAAU,QAAQD,CAAQ,EAAI,CAAC,EAC3D,IAAME,EAAaxY,EAAUuY,EAAYrS,IAAOiE,GAAIjE,GAAI,UAAU,IAAM,OAAO,EAC/E,MAAI,CAACsS,IACHD,EAAYA,EAAU,MAAMC,CAAU,GAEjC,CAACF,CAAQ,EAAE,OAChBC,EAAU,OACPrK,IAAY/D,GAAI+D,GAAS,UAAU,EAAE,MAAM,GAAG,EAAE,KAAMzL,IAAS1C,EAAS,CAAC,OAAQ,SAAU,GAAGqD,CAAK,EAAGX,EAAI,CAAC,IAAM,CAAC4V,GAAcnK,GAAQ,aAAegI,GAAehI,EAAO,EAAE,OAClL,CACF,EAAE,QAAQ,CACZ,CACA,SAAS+J,MAAgBjT,EAAM,CAC7B,OAAOqR,GAAc,GAAGrR,CAAI,EAAE,CAAC,CACjC,CACA,SAASiR,GAAgBvU,EAAS,CAChC,OAAO2U,GAAc3U,EAAS,GAAO,CAAC,SAAU,MAAM,CAAC,CACzD,CACA,SAASwU,GAAeI,EAAe,CACrC,IAAMmC,EAAS7W,GAAS0U,CAAa,EAC/BoC,EAA2BtB,GAAiBd,CAAa,EACzDqC,EAAY,CAAC/X,EAAO0V,CAAa,GAAKA,EAAc,SAASoC,CAAwB,EAC3F,GAAIC,GAAaF,EAAO,eAAgB,CACtC,GAAI,CAAE,OAAAhJ,GAAQ,MAAAC,GAAO,MAAAkJ,GAAO,QAAS1I,GAAK,SAAUC,EAAK,EAAIsI,EAAO,eACpE,OAAAhJ,GAAS,KAAK,MAAMA,GAASmJ,EAAK,EAClClJ,GAAQ,KAAK,MAAMA,GAAQkJ,EAAK,EACzB,CAAE,OAAAnJ,GAAQ,MAAAC,GAAO,IAAAQ,GAAK,KAAAC,GAAM,OAAQD,GAAMT,GAAQ,MAAOU,GAAOT,EAAM,CAC/E,CACA,IAAI1L,EAAO2L,GAAOgJ,EAAYF,EAASnC,CAAa,EACpD,GAAInM,GAAImM,EAAe,SAAS,IAAM,SACpC,OAAOtS,EAET,GAAM,CAAE,KAAAoM,EAAM,gBAAAC,EAAgB,EAAIoI,EAAO,SACnCI,GAAkBF,EAAYD,IAA6BrI,IACjEqI,EAAyB,aAAetI,EAAK,aAAesI,EAA2BtI,EAAOkG,EAC9F,OAAS,CAAC7T,GAAMwN,GAAKiH,GAAOkB,EAAG,GAAK,CAClC,CAAC,QAAS,IAAK,OAAQ,OAAO,EAC9B,CAAC,SAAU,IAAK,MAAO,QAAQ,CACjC,EAAG,CACD,IAAMU,GAAW9U,EAAKvB,EAAI,EAAI,EAC9BuB,EAAKkT,EAAK,GAAK1V,EAAQ2I,GAAI0O,GAAiB,UAAU3B,EAAK,QAAQ,CAAC,EACpElT,EAAKvB,EAAI,EAAIuB,EAAKiM,EAAG,EAAI4I,GAAgB,SAASnZ,EAAQ+C,EAAI,CAAC,EAAE,GAAKqW,GAAWA,GAAW,GAAM,CAACA,GAAW,EAAIA,GAAW,GAC7H9U,EAAKoU,EAAG,EAAIpU,EAAKvB,EAAI,EAAIuB,EAAKkT,EAAK,CACrC,CACA,OAAOlT,CACT,CACA,SAAS2T,GAAmB7M,EAAQ,CAClC,GAAM,CAAE,KAAAqF,EAAM,MAAAT,EAAO,IAAAQ,CAAI,EAAIV,GAAa1E,CAAM,EAChD,QAAWtB,KAAY0G,EAAM,CAAC,EAAGA,CAAG,EAAI,CAAC,CAAC,EAAG,CAC3C,IAAI6I,EACJ,QAAW7S,MAAMtE,GAASkJ,CAAM,EAAE,SAAS,kBAAkBqF,EAAOT,EAAQ,EAAGlG,CAAQ,EACjF,CAACtD,GAAG,SAAS4E,CAAM,GACvB,CAACvF,GAASW,GAAI,oBAAoB,IAAM8S,GAAY9S,GAAI,OAAO,GAAK+S,GAClEnR,GAAQgD,CAAM,EAAE,QAAQ,EAAE,KACvBoD,IAAY,CAACA,GAAQ,SAAShI,EAAE,GAAK,CAAC8S,GAAY9K,GAAS,QAAQ,CACtE,CACF,EAAI+K,GAAO/S,EAAE,GAAK8S,GAAY9S,GAAI,QAAQ,GAAKyB,GAAOzB,EAAE,EAAE,SAAS4E,CAAM,KAAO,CAACiO,GAAWvJ,GAAauJ,CAAO,EAAE,OAASvJ,GAAatJ,EAAE,EAAE,UAC1I6S,EAAU7S,IAGd,GAAI6S,EACF,OAAOA,CAEX,CACF,CACA,SAASE,GAAOvX,EAAS,CACvB,OAAOF,EAAQ2I,GAAIzI,EAAS,QAAQ,CAAC,CACvC,CACA,SAASsX,GAAYtX,EAAS8H,EAAU,CACtC,OAAOW,GAAIzI,EAAS,UAAU,IAAM8H,CACtC,CACA,SAAS4N,GAAiB1V,EAAS,CACjC,OAAOE,GAASF,CAAO,EAAE,SAAS,gBACpC,CAEA,IAAMwX,GAAO,CACX,CAAC,QAAS,IAAK,OAAQ,OAAO,EAC9B,CAAC,SAAU,IAAK,MAAO,QAAQ,CACjC,EACA,SAASC,GAAWzX,EAASoJ,EAAQkJ,EAAS,CAC5CA,EAAU,CACR,OAAQ,CACN,QAAS,CAAC,OAAQ,KAAK,EACvB,OAAQ,CAAC,OAAQ,KAAK,EACtB,GAAGA,EAAQ,MACb,EACA,OAAQ,CAAC,EAAG,CAAC,EACb,UAAW,CAAC,EACZ,GAAGA,CACL,EACK7T,EAAQ2K,CAAM,IACjBA,EAAS,CAACA,EAAQA,CAAM,GAE1B6E,GAAOjO,EAAS0X,GAAY1X,EAASoJ,EAAQkJ,CAAO,CAAC,CACvD,CACA,SAASoF,GAAY1X,EAASoJ,EAAQkJ,EAAS,CAC7C,IAAMxK,EAAW6P,GAAS3X,EAASoJ,EAAQkJ,CAAO,EAC5C,CAAE,SAAAsF,EAAU,eAAAC,EAAiB,EAAG,UAAAC,EAAU,EAAIxF,EAChDxD,GAAiBhH,EACrB,OAAW,CAAC/E,GAAG,CAAChC,GAAM,CAAEyU,GAAOkB,EAAG,CAAC,IAAK,OAAO,QAAQc,EAAI,EAAG,CAC5D,IAAMxC,GAAW+C,GAAc/X,EAASoJ,EAAOrG,EAAC,EAAG8U,EAAgBD,EAAU7U,EAAC,EAC9E,GAAIiV,GAASlQ,EAAUkN,GAAUjS,EAAC,EAChC,SAEF,IAAIuL,GAAW,EACf,GAAIwJ,GAAU/U,EAAC,IAAM,OAAQ,CAC3B,IAAMkV,GAAS3F,EAAQ,OAAO,OAAOvP,EAAC,EACtC,GAAIkV,KAAWvB,IAAO5O,EAAS4O,EAAG,GAAK1B,GAAS0B,EAAG,GAAKuB,KAAWzC,IAAS1N,EAAS0N,EAAK,GAAKR,GAASQ,EAAK,EAC3G,SAEFlH,GAAW4J,GAAKlY,EAASoJ,EAAQkJ,EAASvP,EAAC,EAAEyS,EAAK,EAAI1N,EAAS0N,EAAK,EACpE,IAAM2C,GAAaC,GAAcpY,EAASoJ,EAAOrG,EAAC,EAAG8U,EAAgB9U,EAAC,EACtE,GAAI,CAACiV,GAASK,GAAYvQ,EAAUwG,GAAUvL,EAAC,EAAGoV,GAAYpV,EAAC,EAAG,CAChE,GAAIiV,GAASlQ,EAAUqQ,GAAYpV,EAAC,EAClC,SAEF,GAAIuP,EAAQ,UACV,MAAO,GAET,IAAMgG,GAASC,GAASvY,EAASoJ,EAAQkJ,CAAO,EAChD,GAAIgG,IAAUN,GAASM,GAAQH,GAAY,EAAIpV,EAAC,EAC9C,OAAOuV,GAET,QACF,CACF,SAAWR,GAAU/U,EAAC,IAAM,QAAS,CACnC,IAAMyV,GAAYvK,GAAO7E,EAAOrG,EAAC,CAAC,EAC5B,CAAE,OAAQ0V,EAAS,EAAInG,EAC7BhE,GAAW1M,GACTA,GAAMkG,EAAS0N,EAAK,EAAGR,GAASQ,EAAK,EAAGR,GAAS0B,EAAG,EAAI5O,EAAS/G,EAAI,CAAC,EACtEyX,GAAUhD,EAAK,EAAI1N,EAAS/G,EAAI,EAAI0X,GAAS1V,EAAC,EAC9CyV,GAAU9B,EAAG,EAAI+B,GAAS1V,EAAC,CAC7B,EAAI+E,EAAS0N,EAAK,CACpB,CACA1G,GAAiBuJ,GAAYvJ,GAAgBR,GAAUvL,EAAC,CAC1D,CACA,OAAO+L,EACT,CACA,SAAS6I,GAAS3X,EAASoJ,EAAQkJ,EAAS,CAC1C,GAAI,CAAE,OAAA2F,EAAQ,OAAQ3J,CAAS,EAAI,CACjC,OAAQ,CACN,QAAS,CAAC,OAAQ,KAAK,EACvB,OAAQ,CAAC,OAAQ,KAAK,EACtB,GAAGgE,EAAQ,MACb,EACA,OAAQ,CAAC,EAAG,CAAC,EACb,GAAGA,CACL,EACImG,EAAWxK,GAAOjO,CAAO,EAC7B,OAAW,CAAC+C,GAAG,CAAChC,GAAM,CAAEyU,GAAOkB,EAAG,CAAC,IAAK,OAAO,QAAQc,EAAI,EAAG,CAC5D,IAAMkB,GAAeT,EAAO,OAAOlV,EAAC,IAAMkV,EAAO,QAAQlV,EAAC,EAAIyR,GAAepL,EAAOrG,EAAC,CAAC,EAAIkL,GAAO7E,EAAOrG,EAAC,CAAC,EAC1G0V,EAAWJ,GACTI,EACAC,GAAalD,EAAK,EAAIiD,EAASjD,EAAK,EAAImD,GAAOV,EAAO,OAAOlV,EAAC,EAAG2T,GAAKgC,GAAa3X,EAAI,CAAC,EAAI4X,GAAOV,EAAO,QAAQlV,EAAC,EAAG2T,GAAK+B,EAAS1X,EAAI,CAAC,GAAI,CAACuN,EAASvL,EAAC,EACxJA,EACF,CACF,CACA,OAAO0V,CACT,CACA,SAASJ,GAAYvQ,EAAUiH,EAAShM,EAAG,CACzC,GAAM,CAAC,CAAEwL,EAAKiH,EAAOkB,CAAG,EAAIc,GAAKzU,CAAC,EAC5BuV,GAAS,CAAE,GAAGxQ,CAAS,EAC7B,OAAAwQ,GAAO9C,CAAK,EAAI1N,EAASyG,CAAG,EAAIzG,EAAS0N,CAAK,EAAIzG,EAClDuJ,GAAO5B,CAAG,GAAK3H,EACRuJ,EACT,CACA,SAASK,GAAOV,EAAQvB,EAAKkC,EAAK,CAChC,OAAOX,IAAW,SAAWW,EAAM,EAAIX,IAAWvB,EAAMkC,EAAM,CAChE,CACA,SAASb,GAAc/X,EAASoJ,EAAQyO,EAAgBD,EAAU7U,EAAG,CACnE,IAAIiS,EAAW6D,GAAoB,GAAGC,GAAoB9Y,EAASoJ,CAAM,EAAE,IAAIoL,EAAc,CAAC,EAC9F,OAAIqD,IACF7C,EAASwC,GAAKzU,CAAC,EAAE,CAAC,CAAC,GAAK8U,EACxB7C,EAASwC,GAAKzU,CAAC,EAAE,CAAC,CAAC,GAAK8U,GAEtBD,IACF5C,EAAW6D,GACT7D,EACA/G,GAAOxP,EAAQmZ,CAAQ,EAAIA,EAAS7U,CAAC,EAAI6U,CAAQ,CACnD,GAEK5C,CACT,CACA,SAASoD,GAAcpY,EAASoJ,EAAQyO,EAAgB9U,EAAG,CACzD,GAAM,CAAChC,EAAMgY,EAAMvD,GAAOkB,EAAG,EAAIc,GAAKzU,CAAC,EACjC,CAAC6R,EAAa,EAAIkE,GAAoB9Y,EAASoJ,CAAM,EACrD4L,GAAWR,GAAeI,EAAa,EAC7C,MAAI,CAAC,OAAQ,QAAQ,EAAE,SAASnM,GAAImM,GAAe,YAAYmE,CAAI,EAAE,CAAC,IACpE/D,GAASQ,EAAK,GAAKZ,GAAc,SAAS5W,EAAQwX,EAAK,CAAC,EAAE,EAC1DR,GAAS0B,EAAG,EAAI1B,GAASQ,EAAK,EAAIZ,GAAc,SAAS5W,EAAQ+C,CAAI,CAAC,EAAE,GAE1EiU,GAASQ,EAAK,GAAKqC,EACnB7C,GAAS0B,EAAG,GAAKmB,EACV7C,EACT,CACA,SAAS8D,GAAoB9Y,EAASoJ,EAAQ,CAC5C,OAAOmL,GAAgBnL,CAAM,EAAE,OAAQnD,GAAWA,EAAO,SAASjG,CAAO,CAAC,CAC5E,CACA,SAAS6Y,MAAuB5W,EAAO,CACrC,IAAI+W,EAAO,CAAC,EACZ,QAAW1W,KAAQL,EACjB,OAAW,CAAC,CAAE,CAAEuT,EAAOkB,CAAG,IAAKc,GAC7BwB,EAAKxD,CAAK,EAAI,KAAK,IAAIwD,EAAKxD,CAAK,GAAK,EAAGlT,EAAKkT,CAAK,CAAC,EACpDwD,EAAKtC,CAAG,EAAI,KAAK,IAAI,GAAG,CAACsC,EAAKtC,CAAG,EAAGpU,EAAKoU,CAAG,CAAC,EAAE,OAAO,OAAO,CAAC,EAGlE,OAAOsC,CACT,CACA,SAAShB,GAASiB,EAAWC,EAAWnW,EAAG,CACzC,GAAM,CAAC,CAAE,CAAEyS,EAAOkB,CAAG,EAAIc,GAAKzU,CAAC,EAC/B,OAAOkW,EAAUzD,CAAK,GAAK0D,EAAU1D,CAAK,GAAKyD,EAAUvC,CAAG,GAAKwC,EAAUxC,CAAG,CAChF,CACA,SAASwB,GAAKlY,EAASoJ,EAAQ,CAAE,OAAQ2F,EAAS,OAAAkJ,CAAO,EAAGlV,EAAG,CAC7D,OAAO4U,GAAS3X,EAASoJ,EAAQ,CAC/B,OAAQ,CACN,QAAS+P,GAAWlB,EAAO,QAASlV,CAAC,EACrC,OAAQoW,GAAWlB,EAAO,OAAQlV,CAAC,CACrC,EACA,OAAQqW,GAAWrK,EAAShM,CAAC,CAC/B,CAAC,CACH,CACA,SAASwV,GAASvY,EAASoJ,EAAQkJ,EAAS,CAC1C,OAAOoF,GAAY1X,EAASoJ,EAAQ,CAClC,GAAGkJ,EACH,OAAQ,CACN,QAASA,EAAQ,OAAO,QAAQ,IAAI+G,EAAc,EAAE,QAAQ,EAC5D,OAAQ/G,EAAQ,OAAO,OAAO,IAAI+G,EAAc,EAAE,QAAQ,CAC5D,EACA,OAAQ/G,EAAQ,OAAO,QAAQ,EAC/B,UAAWA,EAAQ,UAAU,QAAQ,EACrC,UAAW,EACb,CAAC,CACH,CACA,SAAS6G,GAAWlB,EAAQlV,EAAG,CAC7B,IAAMuW,EAAY,CAAC,GAAGrB,CAAM,EACtB1R,EAAQiR,GAAKzU,CAAC,EAAE,QAAQkV,EAAOlV,CAAC,CAAC,EACvC,MAAI,CAACwD,IACH+S,EAAUvW,CAAC,EAAIyU,GAAKzU,CAAC,EAAE,EAAIwD,EAAQ,EAAI,CAAC,GAEnC+S,CACT,CACA,SAASD,GAAetY,EAAM,CAC5B,QAASgC,EAAI,EAAGA,EAAIyU,GAAK,OAAQzU,IAAK,CACpC,IAAMwD,EAAQiR,GAAKzU,CAAC,EAAE,QAAQhC,CAAI,EAClC,GAAI,CAACwF,EACH,OAAOiR,GAAK,EAAIzU,CAAC,EAAEwD,EAAQ,EAAI,CAAC,CAEpC,CACF,CACA,SAAS6S,GAAWrK,EAAShM,EAAG,CAC9B,OAAAgM,EAAU,CAAC,GAAGA,CAAO,EACrBA,EAAQhM,CAAC,GAAK,GACPgM,CACT,CAEA,IAAIwK,GAAoB,OAAO,OAAO,CAClC,UAAW,KACX,EAAGjN,GACH,GAAIsB,GACJ,UAAW3B,GACX,WAAYpJ,GACZ,aAAcqO,GACd,WAAYzF,GACZ,SAAUlI,GACV,MAAOuJ,GACP,OAAQJ,GACR,MAAOgB,GACP,OAAQ/O,EACR,KAAM2F,GACN,OAAQuI,GACR,eAAgBsC,GAChB,SAAUtR,EACV,SAAUwI,GACV,MAAOzE,GACP,YAAamI,GACb,IAAKtB,GACL,KAAM7D,GACN,WAAYkJ,GACZ,KAAMxN,GACN,MAAO+L,GACP,SAAUjO,EACV,OAAQmK,GACR,QAAS+H,GACT,OAAQpK,GACR,KAAMe,GACN,QAASG,GACT,UAAW9I,EACX,aAAcgR,GACd,SAAUtC,GACV,mBAAoBiJ,GACpB,YAAa5L,GACb,SAAUvH,GACV,mBAAoB6D,GACpB,QAASjC,GACT,SAAUb,GACV,OAAQxG,EACR,SAAU2H,GACV,OAAQ+I,GACR,KAAMxB,GACN,UAAW9O,EACX,UAAWqH,GACX,SAAUzG,EACV,MAAOkI,GACP,cAAevE,GACf,QAASvD,EACT,UAAWW,EACX,WAAYJ,EACZ,UAAWG,EACX,QAASM,EACT,QAASW,EACT,YAAa4F,GACb,WAAYpH,EACZ,SAAUwV,GACV,QAASvO,GACT,OAAQ3G,EACR,SAAUK,EACV,UAAWC,EACX,SAAUX,EACV,cAAeC,EACf,MAAOiG,GACP,iBAAkB0B,GAClB,SAAUnH,EACV,MAAO6M,GACP,QAAS/B,GACT,YAAa1K,EACb,QAAS+T,GACT,UAAW9N,GACX,cAAeF,GACf,SAAU1G,EACV,KAAM6B,GACN,QAASkF,GACT,QAASpI,GACT,KAAM8V,GACN,KAAMzR,GACN,oBAAqBsQ,GACrB,gBAAiBY,GACjB,cAAeJ,GACf,sBAAuBG,GACvB,IAAK3J,GACL,OAAQ4E,GACR,eAAgBa,GAChB,eAAgB0F,GAChB,GAAI9L,GACJ,KAAMY,GACN,gBAAiBiL,GACjB,OAAQtO,GACR,QAASG,GACT,MAAOmN,GACP,KAAM9R,GACN,KAAM0R,GACN,YAAa/Q,GACb,cAAemD,GACf,YAAaL,GACb,aAAcG,GACd,aAAcC,GACd,YAAaH,GACb,UAAWC,GACX,SAAU0C,GACV,WAAY2P,GACZ,QAAS9K,GACT,SAAU/B,GACV,MAAO7D,GACP,SAAUI,GACV,MAAO+E,GACP,OAAQgB,GACR,WAAYzI,GACZ,YAAaX,GACb,aAAcE,GACd,eAAgByQ,GAChB,aAAc8B,GACd,cAAe5B,GACf,aAAcyB,GACd,aAAcrQ,GACd,SAAUH,GACV,OAAQ9E,GACR,WAAY7C,EACZ,MAAOiD,GACP,KAAMV,GACN,QAAS9B,EACT,UAAWiB,EACX,eAAgBmK,GAChB,QAAShK,EACT,OAAQC,EACR,QAASE,EACT,SAAUL,EACV,KAAM4P,GACN,SAAUtP,GACV,YAAaiE,GACb,QAASwF,GACT,QAAS3L,EACT,SAAUsD,GACV,OAAQgM,GACR,MAAOU,GACP,QAASb,GACT,UAAWE,EACf,CAAC,EAEGmM,GAAQ,CACV,WAAY,CACVjW,GAAS,KAAK,IAAK,KAAK,SAAS,EAAE,CACrC,CACF,EAEA,IAAMkW,GAAQ,CAAC,OAAQ,QAAS,UAAW,SAAS,EACpD,IAAIC,GAAY,CACd,OAAQ,CAACF,EAAK,EACd,MAAO,CACL,KAAM,OACN,WAAY,OACZ,KAAM,MACR,EACA,KAAM,CACJ,KAAM,GACN,WAAY,uBACZ,KAAM,OACR,EACA,WAAY,CACVlV,GAAK,KAAK,IAAK,OAAQ,KAAK,IAAI,EAChC,KAAK,KAAOxE,EAAQ,KAAK,MAAM,KAAK,OAAO,IAAI,CAAC,EAChD,KAAK,IAAM,GACX,KAAK,MAAM,CACb,EACA,cAAe,CACb,KAAK,KAAK,CACZ,EACA,OAAQ,CACN,KAAM,mBACN,GAAI,IAAM,SACV,SAAU,CACJ,SAAS,OACX,KAAK,KAAK,EAEV,KAAK,MAAM,CAEf,CACF,EACA,QAAS,CACP,OAAQ,CACN,KAAK,KAAK,EACV,KAAK,OAAO,EACP,KAAK,QACR6J,GAAQ,KAAK,IAAK,gBAAgB,EAClC,KAAK,MAAQ,YAAY,KAAK,OAAQ,GAAG,EAE7C,EACA,MAAO,CACD,KAAK,QACP,cAAc,KAAK,KAAK,EACxBA,GAAQ,KAAK,IAAK,eAAe,EACjC,KAAK,MAAQ,KAEjB,EACA,QAAS,CACP,IAAMgQ,EAAWC,GAAY,KAAK,IAAI,EACjCD,EAAS,QACZ,KAAK,KAAK,EACL,KAAK,MACRhQ,GAAQ,KAAK,IAAK,cAAc,EAChC,KAAK,IAAM,KAGf,QAAWiG,KAAQ6J,GAAO,CACxB,IAAMjV,EAAK8H,GAAE,KAAK,WAAW,QAAQ,SAAUsD,CAAI,EAAG,KAAK,GAAG,EAC9D,GAAI,CAACpL,EACH,SAEF,IAAIqV,EAAS,KAAK,MAAMF,EAAS/J,CAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EAAG,GAAG,EAC9DpL,EAAG,cAAgBqV,IACrBA,EAASA,EAAO,MAAM,EAAE,EACpBA,EAAO,SAAWrV,EAAG,SAAS,QAChC+H,GAAK/H,EAAIqV,EAAO,IAAI,IAAM,eAAe,EAAE,KAAK,EAAE,CAAC,EAErDA,EAAO,QAAQ,CAACC,EAAO/W,IAAMyB,EAAG,SAASzB,CAAC,EAAE,YAAc+W,CAAK,EAEnE,CACF,CACF,CACF,EACA,SAASF,GAAYG,EAAM,CACzB,IAAMC,EAAQ,KAAK,IAAI,EAAGD,EAAO,KAAK,IAAI,CAAC,EAAI,IAC/C,MAAO,CACL,MAAAC,EACA,QAASA,EAAQ,GACjB,QAASA,EAAQ,GAAK,GACtB,MAAOA,EAAQ,GAAK,GAAK,GACzB,KAAMA,EAAQ,GAAK,GAAK,EAC1B,CACF,CAEA,IAAMC,GAAS,CAAC,EAChBA,GAAO,OAASA,GAAO,MAAQA,GAAO,QAAUA,GAAO,QAAUA,GAAO,cAAgBA,GAAO,UAAYA,GAAO,iBAAmBA,GAAO,aAAeA,GAAO,QAAUC,GAC5KD,GAAO,KAAO,SAASE,EAAWC,EAAU,CAC1C,OAAOA,IAAa,IAASF,GAAYE,GAAYD,CAAS,CAChE,EACAF,GAAO,OAAS,SAASE,EAAWC,EAAU,CAC5C,OAAOtZ,GACLoZ,GAAYC,EAAWvb,EAAWwb,CAAQ,EAAI,CAAE,KAAMA,CAAS,EAAIA,CAAQ,EAC3E,OACF,CACF,EACAH,GAAO,MAAQ,SAASE,EAAWC,EAAU,CAC3C,GAAI3b,EAAQ2b,CAAQ,EAAG,CACrB,IAAM/a,EAAQ,CAAC,EACf,QAAW9B,KAAO6c,EAChB/a,EAAM9B,CAAG,EAAI,OAEf6c,EAAW/a,CACb,CACA,OAAO4a,GAAO,QAAQE,EAAWC,CAAQ,CAC3C,EACAH,GAAO,SAAWA,GAAO,QAAU,SAASE,EAAWC,EAAU,CAC/D,OAAOA,EAAWD,EAAY,CAAE,GAAGA,EAAW,GAAGC,CAAS,EAAIA,EAAWD,CAC3E,EACAF,GAAO,KAAOA,GAAO,KAAO,SAASE,EAAWC,EAAUC,EAAI,CAC5D,OAAKA,EAWEC,GAAYH,EAAWC,EAAUC,CAAE,EAVnCD,EAGAD,EAGE,SAASI,EAAK,CACnB,OAAOD,GAAYH,EAAWC,EAAUG,CAAG,CAC7C,EAJSH,EAHAD,CAUb,EACA,SAASG,GAAYH,EAAWC,EAAUC,EAAI,CAC5C,OAAOJ,GAAO,SACZrb,EAAWub,CAAS,EAAIA,EAAU,KAAKE,EAAIA,CAAE,EAAIF,EACjDvb,EAAWwb,CAAQ,EAAIA,EAAS,KAAKC,EAAIA,CAAE,EAAID,CACjD,CACF,CACA,SAASF,GAAYC,EAAWC,EAAU,CACxC,OAAAD,EAAYA,GAAa,CAAC1b,EAAQ0b,CAAS,EAAI,CAACA,CAAS,EAAIA,EACtDC,EAAWD,EAAYA,EAAU,OAAOC,CAAQ,EAAI3b,EAAQ2b,CAAQ,EAAIA,EAAW,CAACA,CAAQ,EAAID,CACzG,CACA,SAASK,GAAaL,EAAWC,EAAU,CACzC,OAAO1a,EAAY0a,CAAQ,EAAID,EAAYC,CAC7C,CACA,SAASK,GAAaxU,EAAQyU,EAAOL,EAAI,CACvC,IAAM/H,EAAU,CAAC,EAOjB,GANI1T,EAAW8b,CAAK,IAClBA,EAAQA,EAAM,SAEZA,EAAM,UACRzU,EAASwU,GAAaxU,EAAQyU,EAAM,QAASL,CAAE,GAE7CK,EAAM,OACR,QAAWC,KAASD,EAAM,OACxBzU,EAASwU,GAAaxU,EAAQ0U,EAAON,CAAE,EAG3C,QAAW9c,KAAO0I,EAChB2U,EAASrd,CAAG,EAEd,QAAWA,KAAOmd,EACXrd,EAAO4I,EAAQ1I,CAAG,GACrBqd,EAASrd,CAAG,EAGhB,SAASqd,EAASrd,EAAK,CACrB+U,EAAQ/U,CAAG,GAAK0c,GAAO1c,CAAG,GAAKid,IAAcvU,EAAO1I,CAAG,EAAGmd,EAAMnd,CAAG,EAAG8c,CAAE,CAC1E,CACA,OAAO/H,CACT,CACA,SAASuI,GAAavI,EAAShP,EAAO,CAAC,EAAG,CACxC,GAAI,CACF,OAAOgP,EAAUrU,EAAWqU,EAAS,GAAG,EAAI,KAAK,MAAMA,CAAO,EAAIhP,EAAK,QAAU,CAACjF,EAASiU,EAAS,GAAG,EAAI,CAAE,CAAChP,EAAK,CAAC,CAAC,EAAGgP,CAAQ,EAAIA,EAAQ,MAAM,GAAG,EAAE,OAAO,CAACwI,EAAUC,IAAW,CAClL,GAAM,CAACxd,EAAK8B,CAAK,EAAI0b,EAAO,MAAM,OAAO,EACzC,OAAIxd,GAAO,CAACmC,EAAYL,CAAK,IAC3Byb,EAASvd,EAAI,KAAK,CAAC,EAAI8B,EAAM,KAAK,GAE7Byb,CACT,EAAG,CAAC,CAAC,EAAI,CAAC,CACZ,MAAY,CACV,MAAO,CAAC,CACV,CACF,CACA,SAASE,GAAS7R,EAAM9J,EAAO,CAC7B,OAAI8J,IAAS,QACJxJ,EAAUN,CAAK,EACb8J,IAAS,OACXvJ,EAASP,CAAK,EACZ8J,IAAS,OACX8R,GAAO5b,CAAK,EACV8J,IAAS,QAAU7J,EAASD,CAAK,EACnCwb,GAAaxb,CAAK,EAEpB8J,EAAOA,EAAK9J,CAAK,EAAIA,CAC9B,CACA,IAAM6b,GAAS,eACf,SAASD,GAAO5b,EAAO,CACrB,OAAOZ,EAAQY,CAAK,EAAIA,EAAQC,EAASD,CAAK,EAAIA,EAAM,MAAM6b,EAAM,EAAE,IAAKvL,GAAWnQ,EAAUmQ,CAAM,EAAI/P,EAAS+P,CAAM,EAAIhQ,EAAUgQ,EAAO,KAAK,CAAC,CAAC,EAAI,CAACtQ,CAAK,CACjK,CAEA,SAAS8b,GAAYC,EAAU,CAC7BA,EAAS,MAAQ,CAAC,EAClBA,EAAS,SAAW,CAAC,GAAGA,EAAS,SAAS,QAAU,CAAC,CAAC,EACtDA,EAAS,YAAY,KAAK,IAAMA,EAAS,SAAWA,EAAS,MAAQ,IAAI,CAC3E,CACA,SAASC,GAAcD,EAAUE,EAAQ,CACvCF,EAAS,SAAS,QAAQE,CAAM,CAClC,CACA,SAASC,GAAWH,EAAU3R,EAAI,SAAU,CACrC2R,EAAS,YAGTA,EAAS,SAAS,SAGlBA,EAAS,UACZA,EAAS,QAA0B,IAAI,IACvC9K,GAAQ,KAAK,IAAM,CACb8K,EAAS,YACXI,GAAWJ,EAAUA,EAAS,OAAO,EAEvCA,EAAS,QAAU,IACrB,CAAC,GAEHA,EAAS,QAAQ,IAAI3R,EAAE,MAAQA,CAAC,EAClC,CACA,SAAS+R,GAAWJ,EAAUxS,EAAO,CACnC,OAAW,CAAE,KAAA2H,EAAM,MAAAC,EAAO,OAAAiL,EAAS,CAAC,CAAE,IAAKL,EAAS,SAAU,CAC5D,GAAI,CAACxS,EAAM,IAAI,QAAQ,GAAK,CAAC6S,EAAO,KAAMtS,IAASP,EAAM,IAAIO,EAAI,CAAC,EAChE,SAEF,IAAIO,EACA6G,IACF7G,EAAS6G,EAAK,KAAK6K,EAAUA,EAAS,MAAOxS,CAAK,EAC9Cc,GAAU5K,EAAc4K,CAAM,GAChC/K,EAAOyc,EAAS,MAAO1R,CAAM,GAG7B8G,GAAS9G,IAAW,IACtB4G,GAAQ,MAAM,IAAM,CACd8K,EAAS,YACX5K,EAAM,KAAK4K,EAAUA,EAAS,MAAOxS,CAAK,CAE9C,CAAC,CAEL,CACF,CAEA,SAAS8S,GAAOpJ,EAAS,CACvB,OAAOqJ,GAAQ9I,GAAeP,EAAS,QAAQ,CACjD,CACA,SAASb,GAAaa,EAAS,CAC7B,OAAOqJ,GAAQtJ,GAAqBC,CAAO,CAC7C,CACA,SAASsJ,GAAStJ,EAAS,CACzB,OAAOqJ,GAAQ1I,GAAiBX,CAAO,CACzC,CACA,SAASuJ,GAASvJ,EAAU,CAAC,EAAG,CAC9B,OAAOb,GAAa,CAClB,QAAS,SAASgB,EAASD,EAAU,CACnC,GAAM,CAAE,QAAA7J,EAAU,KAAK,IAAK,QAAAmT,EAAU,CAAE,EAAIxJ,EAC5C,QAAW9N,KAAMvE,EAAQrB,EAAW+J,CAAO,EAAIA,EAAQ,IAAI,EAAIA,CAAO,EACpEiF,GAAG,mBAAoBpJ,CAAE,EAAE,MAAM,EAAGsX,EAAU,CAAC,EAAE,QAASC,IAAQtX,GAAWsX,GAAK,SAAS,CAAC,EAE9F,QAAWvX,KAAMiO,EAAQ,OAAO,CAAC,CAAE,eAAAuJ,EAAe,IAAMA,EAAc,EAAE,IAAI,CAAC,CAAE,OAAA5S,EAAO,IAAMA,EAAM,EAChGoJ,EAAS,UAAUhO,CAAE,CAEzB,EACA,GAAG8N,CACL,CAAC,CACH,CACA,SAAS0C,GAAS1C,EAAS,CACzB,OAAOqJ,GAAQ,CAACvS,EAAQ6S,IAAYjJ,GAAsBiJ,CAAO,EAAG3J,EAAS,QAAQ,CACvF,CACA,SAAS4J,GAAS5J,EAAS,CACzB,OAAOqJ,GACL,CAACvS,EAAQ6S,KAAa,CACpB,WAAYvT,GAAGyT,GAAgB/S,CAAM,EAAG,SAAU6S,EAAS,CAAE,QAAS,EAAK,CAAC,CAC9E,GACA3J,EACA,QACF,CACF,CACA,SAAS8J,GAAM9J,EAAS,CACtB,MAAO,CACL,QAAQlJ,EAAQ6S,EAAS,CACvB,MAAO,CACL,QAASla,GACT,UAAWA,GACX,WAAY2G,GAAGU,EAAQlE,GAAe+W,EAAS,CAAE,QAAS,EAAK,CAAC,CAClE,CACF,EACA,QAAQxS,EAAG,CACT,GAAI,CAACW,GAAQX,CAAC,EACZ,OAEF,IAAM8F,EAAMlF,GAAYZ,CAAC,EACnBL,EAAS,YAAaK,EAAE,OAASA,EAAE,OAASxD,GAAOwD,EAAE,MAAM,EACjEH,GAAK,SAAU,GAAGlE,EAAW,IAAIG,EAAa,UAAY8W,GAAO,CAC/D,GAAM,CAAE,EAAA9R,EAAG,EAAAC,EAAE,EAAIH,GAAYgS,CAAE,GAC3BA,EAAG,OAAS,UAAYjT,GAAUmB,GAAK,KAAK,IAAIgF,EAAI,EAAIhF,CAAC,EAAI,KAAOC,IAAK,KAAK,IAAI+E,EAAI,EAAI/E,EAAC,EAAI,MACjG,WAAW,IAAM,CACfb,GAAQP,EAAQ,OAAO,EACvBO,GAAQP,EAAQ,QAAQkT,GAAe/M,EAAI,EAAGA,EAAI,EAAGhF,EAAGC,EAAC,CAAC,EAAE,CAC9D,CAAC,CAEL,CAAC,CACH,EACA,GAAG8H,CACL,CACF,CACA,SAASqJ,GAAQY,EAAUjK,EAASkK,EAAM,CACxC,MAAO,CACL,QAASD,EACT,SAAU,CACRhB,GAAW,KAAMiB,CAAI,CACvB,EACA,GAAGlK,CACL,CACF,CACA,SAASgK,GAAe3K,EAAIC,EAAIC,EAAIC,EAAI,CACtC,OAAO,KAAK,IAAIH,EAAKE,CAAE,GAAK,KAAK,IAAID,EAAKE,CAAE,EAAIH,EAAKE,EAAK,EAAI,OAAS,QAAUD,EAAKE,EAAK,EAAI,KAAO,MACxG,CACA,SAASqK,GAAgBnZ,EAAU,CACjC,OAAO/C,EAAQ+C,CAAQ,EAAE,IAAKS,GAAS,CACrC,GAAM,CAAE,cAAAoD,CAAc,EAAIpD,EACpB+I,EAAU+J,GAAa9S,EAAM,EAAI,EACvC,OAAO+I,IAAY3F,EAAc,iBAAmBA,EAAgB2F,CACtE,CAAC,CACH,CAEA,IAAIiQ,GAAS,CACX,MAAO,CACL,OAAQ,OACR,YAAa,OACf,EACA,KAAM,CACJ,OAAQ,sBACR,YAAa,iBACf,EACA,QAAS,CACPb,GAAS,CACP,QAAS,CACP,UAAW,EACb,CACF,CAAC,EACDA,GAAS,CACP,QAAS,CACP,WAAY,GACZ,gBAAiB,CAAC,OAAO,CAC3B,EACA,OAAQ,CAAC,CAAE,IAAAc,CAAI,IAAM,CAACA,EAAK,GAAGrW,GAASqW,CAAG,CAAC,CAC7C,CAAC,EACDhB,GAAO,CACL,OAAQ,CAAC,CAAE,IAAAgB,CAAI,IAAM,CAACA,EAAK,GAAGrW,GAASqW,CAAG,CAAC,CAC7C,CAAC,CACH,EACA,OAAQ,CACN,MAAO,CACL,MAAO,CACL,KAAMC,GAAQtW,GAAS,KAAK,GAAG,CAAC,CAClC,CACF,EACA,MAAM,CAAE,KAAAuW,CAAK,EAAG,CACd,QAAWC,KAAOD,EAChB,QAAWpY,KAAMqY,EACf1Y,GAAYK,EAAI,KAAK,OAAQoY,EAAK,CAAC,IAAMC,CAAG,EAC5C1Y,GAAYK,EAAI,KAAK,YAAaqY,EAAI9X,GAAQ8X,EAAI,OAAS,EAAI,CAAC,IAAMrY,CAAE,CAG9E,EACA,OAAQ,CAAC,QAAQ,CACnB,CACF,EACA,SAASmY,GAAQ3Z,EAAU,CACzB,IAAM8Z,EAAS,CAAC,CAAC,CAAC,EACZC,EAAa/Z,EAAS,KAC1B,CAACwB,EAAIzB,IAAMA,GAAKC,EAASD,EAAI,CAAC,EAAE,eAAiByB,EAAG,YACtD,EACA,QAAWA,KAAMxB,EAAU,CACzB,GAAI,CAAC2C,GAAUnB,CAAE,EACf,SAEF,IAAMyJ,EAAS+O,GAAUxY,EAAIuY,CAAU,EACvC,QAASha,EAAI+Z,EAAO,OAAS,EAAG/Z,GAAK,EAAGA,IAAK,CAC3C,IAAME,GAAU6Z,EAAO/Z,CAAC,EACxB,GAAI,CAACE,GAAQ,CAAC,EAAG,CACfA,GAAQ,KAAKuB,CAAE,EACf,KACF,CACA,IAAMyY,GAAgBD,GAAU/Z,GAAQ,CAAC,EAAG8Z,CAAU,EACtD,GAAI9O,EAAO,KAAOgP,GAAc,OAAS,GAAKhP,EAAO,MAAQgP,GAAc,IAAK,CAC9EH,EAAO,KAAK,CAACtY,CAAE,CAAC,EAChB,KACF,CACA,GAAIyJ,EAAO,OAAS,EAAIgP,GAAc,KAAOhP,EAAO,MAAQgP,GAAc,IAAK,CAC7E,IAAIC,GAAIja,GAAQ,OAAS,EACzB,KAAOia,IAAK,EAAGA,KAAK,CAClB,IAAMC,GAAiBH,GAAU/Z,GAAQia,EAAC,EAAGH,CAAU,EACvD,GAAI9O,EAAO,MAAQkP,GAAe,KAChC,KAEJ,CACAla,GAAQ,OAAOia,GAAI,EAAG,EAAG1Y,CAAE,EAC3B,KACF,CACA,GAAIzB,IAAM,EAAG,CACX+Z,EAAO,QAAQ,CAACtY,CAAE,CAAC,EACnB,KACF,CACF,CACF,CACA,OAAOsY,CACT,CACA,SAASE,GAAUhd,EAASiO,EAAS,GAAO,CAC1C,GAAI,CAAE,UAAAoG,EAAW,WAAAC,EAAY,aAAAS,EAAc,YAAAqI,CAAY,EAAIpd,EAC3D,OAAIiO,IACF,CAACoG,EAAWC,CAAU,EAAIxF,GAAe9O,CAAO,GAE3C,CACL,IAAKqU,EACL,KAAMC,EACN,OAAQD,EAAYU,EACpB,MAAOT,EAAa8I,CACtB,CACF,CAEA,eAAeC,GAAMC,EAAQlU,EAAQgC,EAAU,CAC7C,MAAMmS,GAAW,EACjB,IAAIxQ,EAAQ1G,GAAS+C,CAAM,EACrBoU,EAAezQ,EAAM,IAAKvI,IAAOiZ,GAAWjZ,GAAI,EAAI,CAAC,EACrDkZ,EAAc,CAAE,GAAGjV,GAAIW,EAAQ,CAAC,SAAU,SAAS,CAAC,EAAG,QAAS,OAAQ,EACxET,GAAUoE,EAAM,OAAO3D,CAAM,EACnC,MAAM,QAAQ,IAAIT,GAAQ,IAAI8C,GAAW,MAAM,CAAC,EAChDhD,GAAIE,GAAS,qBAAsB,MAAM,EACzC,MAAM2U,EAAO,EACbvQ,EAAQA,EAAM,OAAO1G,GAAS+C,CAAM,EAAE,OAAQ5E,IAAO,CAACnG,EAAS0O,EAAOvI,EAAE,CAAC,CAAC,EAC1E,MAAM,QAAQ,QAAQ,EACtBiE,GAAIE,GAAS,qBAAsB,EAAE,EACrC,IAAMgV,GAAcrZ,GAAK8E,EAAQ,OAAO,EAClCwU,GAAgBnV,GAAIW,EAAQ,CAAC,SAAU,SAAS,CAAC,EACjD,CAACyU,GAASC,EAAS,EAAIC,GAAmB3U,EAAQ2D,EAAOyQ,CAAY,EACrEQ,GAAUjR,EAAM,IAAKvI,KAAQ,CAAE,MAAOF,GAAKE,GAAI,OAAO,CAAE,EAAE,EAChEuI,EAAM,QAAQ,CAACvI,GAAIzB,KAAM+a,GAAU/a,EAAC,GAAK0F,GAAIjE,GAAIsZ,GAAU/a,EAAC,CAAC,CAAC,EAC9D0F,GAAIW,EAAQsU,CAAW,EACvB/T,GAAQP,EAAQ,QAAQ,EACxB,MAAMmU,GAAW,EACjB,IAAMU,GAAclR,EAAM,IAAI,CAACvI,GAAIzB,KAAMkD,GAAOzB,EAAE,IAAM4E,GAAUqC,GAAW,MAAMjH,GAAIqZ,GAAQ9a,EAAC,EAAGqI,EAAU,MAAM,CAAC,EAAE,OAAOK,GAAW,MAAMrC,EAAQwU,GAAexS,EAAU,MAAM,CAAC,EACtL,GAAI,CACF,MAAM,QAAQ,IAAI6S,EAAW,EAC7BlR,EAAM,QAAQ,CAACvI,GAAIzB,KAAM,CACvBuB,GAAKE,GAAIwZ,GAAQjb,EAAC,CAAC,EACfkD,GAAOzB,EAAE,IAAM4E,GACjBX,GAAIjE,GAAI,UAAWqZ,GAAQ9a,EAAC,EAAE,UAAY,EAAI,OAAS,EAAE,CAE7D,CAAC,EACDuB,GAAK8E,EAAQ,QAASuU,EAAW,CACnC,MAAY,CACVrZ,GAAKyI,EAAO,QAAS,EAAE,EACvBmR,GAAW9U,EAAQsU,CAAW,CAChC,CACF,CACA,SAASD,GAAWjZ,EAAI2Z,EAAS,CAC/B,IAAM5G,EAAS9O,GAAIjE,EAAI,QAAQ,EAC/B,OAAOmB,GAAUnB,CAAE,EAAI,CACrB,QAAS,GACT,QAAS2Z,EAAU1V,GAAIjE,EAAI,SAAS,EAAI,IACxC,cAAe,OACf,SAAU,WACV,OAAQ+S,IAAW,OAAShR,GAAM/B,CAAE,EAAI+S,EACxC,GAAG6G,GAAsB5Z,CAAE,CAC7B,EAAI,EACN,CACA,SAASuZ,GAAmB3U,EAAQ2D,EAAOyQ,EAAc,CACvD,IAAMK,EAAU9Q,EAAM,IACpB,CAACvI,EAAIzB,KAAMkD,GAAOzB,CAAE,GAAKzB,MAAKya,EAAeA,EAAaza,EAAC,EAAI4C,GAAUnB,CAAE,EAAI4Z,GAAsB5Z,CAAE,EAAI,CAAE,QAAS,CAAE,EAAI,CAAE,QAASmB,GAAUnB,CAAE,EAAI,EAAI,CAAE,EAAI,EACnK,EACMsZ,EAAYD,EAAQ,IAAI,CAACnc,EAAOqB,KAAM,CAC1C,IAAMsb,GAAOpY,GAAO8G,EAAMhK,EAAC,CAAC,IAAMqG,IAAWoU,EAAaza,EAAC,GAAK0a,GAAW1Q,EAAMhK,EAAC,CAAC,GACnF,GAAI,CAACsb,GACH,MAAO,GAET,GAAI,CAAC3c,EACH,OAAO2c,GAAK,gBACH,EAAE,YAAa3c,GAAQ,CAChC,GAAM,CAAE,QAAAyc,EAAQ,EAAIE,GAChBF,GAAU,EACZzc,EAAM,QAAU,EAEhB,OAAO2c,GAAK,OAEhB,CACA,OAAOA,EACT,CAAC,EACD,MAAO,CAACR,EAASC,CAAS,CAC5B,CACA,SAASI,GAAW1Z,EAAI9C,EAAO,CAC7B,QAAWX,KAAQW,EACjB+G,GAAIjE,EAAIzD,EAAM,EAAE,CAEpB,CACA,SAASqd,GAAsB5Z,EAAI,CACjC,GAAM,CAAE,OAAAuJ,EAAQ,MAAAC,CAAM,EAAIF,GAAatJ,CAAE,EACzC,MAAO,CACL,OAAAuJ,EACA,MAAAC,EACA,UAAW,GACX,GAAGlG,GAAStD,CAAE,EACd,GAAGiE,GAAIjE,EAAI,CAAC,YAAa,YAAY,CAAC,CACxC,CACF,CACA,SAAS+Y,IAAa,CACpB,OAAO,IAAI,QAASjS,GAAY,sBAAsBA,CAAO,CAAC,CAChE,CAEA,IAAMgT,GAAW,sBACXC,GAAW,sBACjB,SAASC,GAAKlB,EAAQlU,EAAQgC,EAAUqT,EAAU,EAAG,CACnD,IAAMlY,EAAQmY,GAAgBtV,EAAQ,EAAI,EACpCuV,EAAU,CAAE,QAAS,CAAE,EACvBC,GAAW,CAAE,QAAS,CAAE,EACxBC,GAAezb,IAAO,IAAMmD,IAAUmY,GAAgBtV,CAAM,EAAIhG,GAAG,EAAI,QAAQ,OAAO,EACtF0b,GAAUD,GAAY,SAAY,CACtCtb,GAAS6F,EAAQkV,EAAQ,EACzB,MAAM,QAAQ,IACZS,GAAmB3V,CAAM,EAAE,IACzB,CAACsR,GAAO3X,KAAM,IAAI,QACfuI,IAAY,WACX,IAAMG,GAAW,MAAMiP,GAAOkE,GAAUxT,EAAW,EAAG,MAAM,EAAE,KAC5DE,EACF,EACAvI,GAAI0b,CACN,CACF,CACF,CACF,EACA3a,GAAYsF,EAAQkV,EAAQ,CAC9B,CAAC,EACKU,GAAUH,GAAY,SAAY,CACtC,IAAMI,GAAYlR,GAAO3E,CAAM,EAC/B7F,GAAS6F,EAAQmV,EAAQ,EACzBjB,EAAO,EACP7U,GAAIpC,GAAS+C,CAAM,EAAG,CAAE,QAAS,CAAE,CAAC,EACpC,MAAMmU,GAAW,EACjB,IAAMxQ,GAAQ1G,GAAS+C,CAAM,EACvB8V,GAAYnR,GAAO3E,CAAM,EAC/BX,GAAIW,EAAQ,eAAgB,YAAY,EACxC2E,GAAO3E,EAAQ6V,EAAS,EACxB,IAAME,GAAkBJ,GAAmB3V,CAAM,EACjDX,GAAIsE,GAAO6R,EAAQ,EACnB,IAAMX,GAAckB,GAAgB,IAAI,MAAOzE,GAAO3X,KAAM,CAC1D,MAAMqc,GAAarc,GAAI0b,CAAO,EAC9B,MAAMhT,GAAW,MAAMiP,GAAOiE,EAASvT,EAAW,EAAG,MAAM,CAC7D,CAAC,EACG6T,KAAcC,IAChBjB,GAAY,KACVxS,GAAW,MACTrC,EACA,CAAE,OAAQ8V,EAAU,EACpB9T,EAAW,EAAI+T,GAAgB,OAASV,EACxC,MACF,CACF,EAEF,MAAM,QAAQ,IAAIR,EAAW,EAAE,KAAK,IAAM,CACxCna,GAAYsF,EAAQmV,EAAQ,EACxBhY,IAAUmY,GAAgBtV,CAAM,IAClCX,GAAIW,EAAQ,CAAE,OAAQ,GAAI,aAAc,EAAG,CAAC,EAC5CX,GAAIsE,GAAO,CAAE,QAAS,EAAG,CAAC,EAC1B,OAAO3D,EAAO,QAAQ,WAE1B,CAAC,CACH,CAAC,EACD,OAAOvF,GAASuF,EAAQkV,EAAQ,EAAIe,GAAkBjW,CAAM,EAAE,KAAK4V,EAAO,EAAInb,GAASuF,EAAQmV,EAAQ,EAAIc,GAAkBjW,CAAM,EAAE,KAAK0V,EAAO,EAAE,KAAKE,EAAO,EAAIF,GAAQ,EAAE,KAAKE,EAAO,CAC3L,CACA,SAASN,GAAgBtV,EAAQkW,EAAM,CACrC,OAAIA,IACFlW,EAAO,QAAQ,WAAa,EAAIsV,GAAgBtV,CAAM,GAEjDxJ,EAASwJ,EAAO,QAAQ,UAAU,GAAK,CAChD,CACA,SAASiW,GAAkBjW,EAAQ,CACjC,OAAO,QAAQ,IACb/C,GAAS+C,CAAM,EAAE,OAAOqC,GAAW,UAAU,EAAE,IAC5CjH,GAAO,IAAI,QAAS8G,GAAYhC,GAAK9E,EAAI,mCAAoC8G,CAAO,CAAC,CACxF,CACF,CACF,CACA,SAASyT,GAAmB3V,EAAQ,CAClC,OAAOuT,GAAQtW,GAAS+C,CAAM,CAAC,EAAE,KAAK,EAAE,OAAOzD,EAAS,CAC1D,CACA,SAASyZ,GAAaG,EAAS,CAC7B,OAAO,IAAI,QAASjU,GAAY,WAAWA,EAASiU,CAAO,CAAC,CAC9D,CAEA,IAAIC,GAAU,CACZ,MAAO,CACL,SAAU,OACV,UAAW,OACb,EACA,KAAM,CACJ,SAAU,IACV,UAAW,OACb,EACA,QAAS,CACP,QAAQlC,EAAQlU,EAAS,KAAK,IAAK,CACjC,IAAM7E,EAAO,KAAK,UAKlB,OAJoBA,IAAS,OAASia,GAAOja,IAAS,eAAiB,IAAIjB,IAASkb,GAAK,GAAGlb,EAAM,EAAE,EAAIiB,EAAO8Y,GAAQ,KACrHC,EAAO,EACA,QAAQ,QAAQ,IAENA,EAAQlU,EAAQ,KAAK,QAAQ,EAAE,MAAMrH,EAAI,CAC9D,CACF,CACF,EAEA,IAAM0d,GAAS,CACb,IAAK,EACL,IAAK,GACL,MAAO,GACP,IAAK,GACL,KAAM,GACN,KAAM,GACN,GAAI,GACJ,MAAO,GACP,KAAM,EACR,EAEA,IAAIC,GAAS,CACX,OAAQ,CAACF,EAAO,EAChB,KAAM,SACN,MAAO,CACL,OAAQ,OACR,UAAW,OACb,EACA,KAAM,CACJ,OAAQ,GACR,UAAW,GACX,SAAU,oBACV,IAAK,YACL,SAAU,GACZ,EACA,SAAU,CACR,SAAU,CAAC,CAAE,OAAApW,CAAO,EAAGsT,IAAQ9O,GAAG,GAAGxE,CAAM,OAAQsT,CAAG,EACtD,QAAS,CAAC,CAAE,SAAAiD,CAAS,EAAGjD,IAAQ9O,GAAG,IAAI+R,CAAQ,WAAWA,CAAQ,IAAKjD,CAAG,CAC5E,EACA,MAAO,CACL,QAAQkD,EAAS,CACf,KAAK,YAAY,EACjB,IAAMC,EAAUjS,GAAG,KAAK,UAAW,KAAK,GAAG,EAC3C,QAAWkS,KAAUF,EAAS,CACxB,KAAK,YAAc,IACrBzb,GAAY2b,EAAQ,KAAK,IAAKzhB,EAASwhB,EAASC,CAAM,CAAC,EAEzD,IAAMC,EAASC,GAAWF,CAAM,EAC5B3T,GAAM4T,EAAQ,GAAG,GACnBzb,GAAKyb,EAAQ,OAAQ,QAAQ,CAEjC,CACF,EACA,SAASE,EAAMrK,EAAM,CACfA,GACF,KAAK,YAAY,CAErB,CACF,EACA,OAAQ,CACN,KAAM,gBACN,SAAU,CAAC,CAAE,SAAA+J,CAAS,IAAM,IAAIA,CAAQ,WAAWA,CAAQ,IAC3D,QAAQlW,EAAG,CACLA,EAAE,OAAS,WAAaA,EAAE,UAAYgW,GAAO,OAG7ChW,EAAE,OAAO,QAAQ,UAAU,IAC7BA,EAAE,eAAe,EACjB,KAAK,MAAMA,EAAE,OAAO,EAExB,CACF,EACA,QAAS,CACP,MAAMjF,EAAI,CACR,IAAM0b,EAAY,KAAK,SAAS,EAC1BC,EAAWC,GAAW5b,EAAI,KAAK,SAAU,KAAK,SAAS,CAAC,EACzD6b,GAAaH,EAAWC,CAAQ,GACnC,KAAK,SAASA,CAAQ,CAE1B,EACA,UAAW,CACT,OAAO,KAAK,QAAQ,OAAQ9e,GAASwC,GAASxC,EAAM,KAAK,GAAG,CAAC,EAAE,OAAO,CAACif,EAAO9b,IAAO4b,GAAW5b,EAAI,KAAK,SAAU8b,CAAK,EAAG,CACzH,OAAQ,CAAE,GAAI,EAAG,EACjB,KAAM,CAAC,CACT,CAAC,CACH,EACA,MAAM,SAASA,EAAOC,EAAU,GAAM,CACpCD,EAAQ,CAAE,OAAQ,CAAE,GAAI,EAAG,EAAG,KAAM,CAAC,EAAG,GAAGA,CAAM,EACjD3W,GAAQ,KAAK,IAAK,eAAgB,CAAC,KAAM2W,CAAK,CAAC,EAC/C,QAAWR,KAAU,KAAK,QACxB3b,GAAY2b,EAAQ,KAAK,IAAKU,GAAYV,EAAQ,KAAK,SAAUQ,CAAK,CAAC,EAEzE,MAAM,QAAQ,IACZ1S,GAAG,KAAK,OAAQ,KAAK,GAAG,EAAE,IAAKxE,GAAW,CACxC,IAAMqX,EAAW,IAAMC,GAAWJ,EAAOlX,EAAQ/C,GAAS+C,CAAM,CAAC,EACjE,OAAOmX,EAAU,KAAK,QAAQE,EAAUrX,CAAM,EAAIqX,EAAS,CAC7D,CAAC,CACH,EACA9W,GAAQ,KAAK,IAAK,cAAe,CAAC,IAAI,CAAC,CACzC,EACA,aAAc,CACZ2G,GAAQ,MAAM,IAAM,KAAK,SAAS,KAAK,SAAS,EAAG,EAAK,CAAC,CAC3D,CACF,CACF,EACA,SAASqQ,GAAUnc,EAAIoc,EAAO,CAC5B,OAAO/F,GAAajW,GAAKJ,EAAIoc,CAAK,EAAG,CAAC,QAAQ,CAAC,CACjD,CACA,SAASP,GAAaQ,EAAQC,EAAQ,CACpC,MAAO,CAAC,SAAU,MAAM,EAAE,MAAO/f,GAASX,EAAQygB,EAAO9f,CAAI,EAAG+f,EAAO/f,CAAI,CAAC,CAAC,CAC/E,CACA,SAAS2f,GAAWJ,EAAOlX,EAAQ/C,EAAU,CAC3C,QAAW7B,KAAM6B,EACfoC,GACEjE,EACA,UACA,OAAO,OAAO8b,EAAM,MAAM,EAAE,MAAOna,IAAa,CAACA,IAAYL,GAAQtB,EAAI2B,EAAQ,CAAC,EAAI,GAAK,MAC7F,EAEF,GAAM,CAAC4a,EAAMC,CAAK,EAAIV,EAAM,KAC5B,GAAIS,EAAM,CACR,IAAMjE,EAASmE,GAAU5a,EAAU0a,EAAMC,CAAK,EACzC5gB,EAAQ0c,EAAQzW,CAAQ,GAC3BqG,GAAOtD,EAAQ0T,CAAM,CAEzB,CACF,CACA,SAASsD,GAAW5b,EAAIoc,EAAON,EAAO,CACpC,GAAM,CAAE,OAAAZ,EAAQ,MAAAwB,EAAO,KAAAH,EAAM,MAAAC,GAAQ,KAAM,EAAIL,GAAUnc,EAAIoc,CAAK,EAClE,OAAIlB,GAAUhgB,EAAYqhB,CAAI,KACxBG,EACExB,GACF,OAAOY,EAAM,OAAO,EAAE,EACtBA,EAAM,OAAOY,CAAK,EAAIxB,IAEtB,OAAOY,EAAM,OAAOY,CAAK,GACrBzhB,EAAQ6gB,EAAM,MAAM,GAAK,KAAMA,EAAM,UACvCA,EAAM,OAAS,CAAE,GAAIZ,GAAU,EAAG,IAItCY,EAAM,OAAS,CAAE,GAAIZ,GAAU,EAAG,GAGjChgB,EAAYqhB,CAAI,IACnBT,EAAM,KAAO,CAACS,EAAMC,EAAK,GAEpBV,CACT,CACA,SAASE,GAAYhc,EAAIoc,EAAO,CAAE,OAAQO,EAAc,CAAE,GAAI,EAAG,EAAG,KAAM,CAACC,EAAWC,CAAU,CAAE,EAAG,CACnG,GAAM,CAAE,OAAA3B,EAAS,GAAI,MAAAwB,GAAQ,GAAI,KAAAH,GAAM,MAAAC,GAAQ,KAAM,EAAIL,GAAUnc,EAAIoc,CAAK,EAC5E,OAAOlhB,EAAYqhB,EAAI,EAAIG,MAASC,GAAezB,IAAWyB,EAAYD,EAAK,GAAK,CAACxB,GAAUwB,IAAS,EAAEA,MAASC,IAAgB,CAACA,EAAY,EAAE,EAAIC,IAAcL,IAAQM,IAAeL,EAC7L,CACA,SAASC,GAAUlU,EAAOgU,EAAMC,EAAO,CACrC,MAAO,CAAC,GAAGjU,CAAK,EAAE,KAChB,CAACtM,EAAGC,IAAMkE,GAAKnE,EAAGsgB,CAAI,EAAE,cAAcnc,GAAKlE,EAAGqgB,CAAI,EAAG,OAAQ,CAAE,QAAS,EAAK,CAAC,GAAKC,IAAU,OAAS,GACxG,CACF,CACA,SAAShB,GAAWxb,EAAI,CACtB,OAAO8H,GAAE,WAAY9H,CAAE,GAAKA,CAC9B,CAEA,IAAI8c,GACJ,SAASC,GAAwB/c,EAAI,CACnC,IAAM6E,EAAMX,GACVlE,EACA,aACCiF,GAAM,CACL,GAAIA,EAAE,cAAc,SAAW,GAAK3D,GAAQ2D,EAAE,OAAQ,oBAAoB,EACxE,OAEF,IAAImM,EAAOvL,GAAYZ,CAAC,EAAE,EACpB+X,EAAU9Y,GACdlE,EACA,YACC6X,IAAO,CACN,IAAM9M,GAAMlF,GAAYgS,EAAE,EAAE,EACxB9M,KAAQqG,IAGZA,EAAOrG,GACFoF,GAAc0H,GAAG,MAAM,EAAE,KAAM9F,IAAiB,CACnD,GAAI,CAAC/R,EAAG,SAAS+R,EAAY,EAC3B,MAAO,GAET,GAAI,CAAE,aAAAzB,GAAc,aAAA2M,EAAa,EAAIlL,GACrC,OAAOkL,GAAe3M,EACxB,CAAC,GACCuH,GAAG,eAAe,EAEtB,EACA,CAAE,QAAS,EAAM,CACnB,EACA/S,GAAK9E,EAAI,6BAA8Bgd,EAAS,CAAE,QAAS,EAAK,CAAC,CACnE,EACA,CAAE,QAAS,EAAK,CAClB,EACA,GAAIF,GACF,OAAOjY,EAETiY,GAAY,GACZ,GAAM,CAAE,iBAAA5L,CAAiB,EAAI,SAC7B,OAAAjN,GAAIiN,EAAkB,CACpB,UAAW,IAAI,SAAS,WAAY,MAAM,EAAI,OAAS,SACvD,YAAa,OACb,aAAc1H,GAAM,MAAM,EAAI0H,EAAiB,aAAe,EAChE,CAAC,EACM,IAAM,CACX4L,GAAY,GACZjY,EAAI,EACJZ,GAAIiN,EAAkB,CAAE,UAAW,GAAI,YAAa,GAAI,aAAc,EAAG,CAAC,CAC5E,CACF,CAEA,IAAIgM,GAAY,CACd,MAAO,CACL,UAAW,OACb,EACA,KAAM,CACJ,UAAW,EACb,EACA,SAAU,CACR,UAAU,CAAE,UAAAjU,CAAU,EAAG,CACvB,OAAOA,IAAc,IAAQ,KAAK,YAAcA,GAAanB,GAAEmB,CAAS,CAC1E,CACF,CACF,EAEIkU,GAAY,CACd,MAAO,CACL,IAAK,QACL,UAAW,OACX,SAAU,OACV,SAAU,OACV,OAAQ,OACR,WAAY,MACd,EACA,KAAM,CACJ,IAAK,GACL,UAAW,CAAC,EAAK,EACjB,SAAU,IACV,SAAU,GACV,OAAQ,GACR,WAAY,OACZ,SAAU,qBACV,SAAU,oBACZ,EACA,SAAU,CACR,aAAc,CAAC,CAAE,UAAA7V,CAAU,IAAM,CAAC,CAACA,EAAU,CAAC,EAC9C,cAAe,CAAC,CAAE,UAAAA,CAAU,IAAM,CAAC,QAAS,QAAQ,EAAE,KAAM8V,GAAe3jB,EAAW6N,EAAU,CAAC,EAAG8V,CAAU,CAAC,CACjH,EACA,QAAS,CACP,MAAM,cAAcjZ,EAASmX,EAAQS,EAAS,CAC5C,GAAI,CACF,aAAM,QAAQ,IACZtgB,EAAQ0I,CAAO,EAAE,IAAKnE,GAAO,CAC3B,IAAMqd,EAAOziB,EAAU0gB,CAAM,EAAIA,EAAS,CAAC,KAAK,UAAUtb,CAAE,EAC5D,GAAI,CAACmF,GAAQnF,EAAI,SAASqd,EAAO,OAAS,MAAM,GAAI,CAAC,IAAI,CAAC,EACxD,OAAO,QAAQ,OAAO,EAExB,IAAMC,GAAWljB,EAAW2hB,CAAO,EAAIA,EAAUA,IAAY,IAAS,CAAC,KAAK,aAAewB,GAAgB,KAAK,cAAgBC,GAAmBC,IAAiBzd,EAAIqd,EAAM,IAAI,EAC5Kje,GAAMie,EAAO,KAAK,SAAW,KAAK,SACxCte,GAASiB,EAAIZ,EAAG,EAChB+F,GAAQnF,EAAIqd,EAAO,OAAS,OAAQ,CAAC,IAAI,CAAC,EAC1C,IAAMK,GAAO,IAAM,CACjBpe,GAAYU,EAAIZ,EAAG,EACnB+F,GAAQnF,EAAIqd,EAAO,QAAU,SAAU,CAAC,IAAI,CAAC,CAC/C,EACA,OAAOC,EAAUA,EAAQ,KAAKI,GAAM,KAClCpe,GAAYU,EAAIZ,EAAG,EACZ,QAAQ,OAAO,EACvB,EAAIse,GAAK,CACZ,CAAC,CACH,EACO,EACT,MAAY,CACV,MAAO,EACT,CACF,EACA,UAAU1d,EAAK,KAAK,IAAK,CACvB,OAAAA,EAAKzE,EAAOyE,CAAE,EACPX,GAASW,EAAI,KAAK,QAAQ,EAAI,GAAOX,GAASW,EAAI,KAAK,QAAQ,EAAI,GAAQ,KAAK,IAAMX,GAASW,EAAI,KAAK,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC,EAAImB,GAAUnB,CAAE,CAClJ,EACA,QAAQA,EAAI2d,EAAS,CACnB,GAAI,CAAC3d,EACH,OAEF2d,EAAU,EAAQA,EAClB,IAAIC,EACA,KAAK,KACPA,EAAU/jB,EAAS,KAAK,IAAK,GAAG,GAAK8jB,IAAYte,GAASW,EAAI,KAAK,GAAG,EACtE4d,GAAWje,GAAYK,EAAI,KAAK,IAAKnG,EAAS,KAAK,IAAK,GAAG,EAAI,OAAS8jB,CAAO,IAE/EC,EAAUD,IAAY3d,EAAG,OACzB4d,IAAY5d,EAAG,OAAS,CAAC2d,IAEvBC,GACFzY,GAAQnF,EAAI,UAAW,CAAC2d,EAAS,IAAI,CAAC,EAExCvU,GAAG,cAAepJ,CAAE,EAAE,KAAMuX,GAAQpW,GAAUoW,CAAG,EAAIA,EAAI,MAAM,GAAK,GAAOA,EAAI,KAAK,CAAC,CACvF,CACF,CACF,EACA,SAASgG,GAAcvd,EAAIqd,EAAM,CAAE,QAAAQ,CAAQ,EAAG,CAC5C,OAAApW,GAAU,OAAOzH,CAAE,EACnBiH,GAAW,OAAOjH,CAAE,EACb6d,EAAQ7d,EAAIqd,CAAI,CACzB,CACA,eAAeG,GAAiBxd,EAAIqd,EAAM,CAAE,UAAA/V,EAAW,SAAAV,EAAU,SAAAkX,EAAU,WAAAV,EAAY,QAAAS,EAAQ,EAAG,CAChG,IAAIlkB,GACJ,GAAM,CAACokB,GAAO,SAAUC,GAAY,KAAK,IAAMrkB,GAAK2N,EAAU,CAAC,IAAM,KAAO,OAAS3N,GAAG,MAAM,GAAG,IAAM,CAAC,EAClGqZ,GAAO,CACX,CAAC,OAAQ,OAAO,EAChB,CAAC,MAAO,QAAQ,CAClB,EACMjJ,GAAMiJ,GAAKnZ,EAASmZ,GAAK,CAAC,EAAGgL,EAAS,EAAI,EAAI,CAAC,EAC/C9L,GAAMnI,GAAI,CAAC,IAAMiU,GAEjBC,GADQ,CAAC,QAAS,QAAQ,EACVjL,GAAK,QAAQjJ,EAAG,CAAC,EACjCmU,GAAa,UAAUnU,GAAI,CAAC,CAAC,GAC7BoU,GAAkB,UAAUH,EAAS,GACvCI,GAAa9U,GAAatJ,CAAE,EAAEie,EAAO,EACnCI,GAAapX,GAAW,WAAWjH,CAAE,EAC3C,MAAMiH,GAAW,OAAOjH,CAAE,EACtBqd,GACFQ,GAAQ7d,EAAI,EAAI,EAElB,IAAMse,GAAY,OAAO,YACvB,CACE,UACA,SACA,QACA,SACA,WACA,YACA,YACA,YACAJ,GACAC,EACF,EAAE,IAAKplB,IAAQ,CAACA,GAAKiH,EAAG,MAAMjH,EAAG,CAAC,CAAC,CACrC,EACMqb,GAAM9K,GAAatJ,CAAE,EACrBue,GAAgBjjB,EAAQ2I,GAAIjE,EAAIke,EAAU,CAAC,EAC3CM,GAAcljB,EAAQ2I,GAAIjE,EAAIme,EAAe,CAAC,EAC9CM,GAASrK,GAAI6J,EAAO,EAAIO,GAC1B,CAACH,IAAc,CAAChB,IAClBe,IAAcI,IAEhB,GAAM,CAACE,EAAO,EAAI7V,GAAU7I,EAAI,OAAO,EACvCiE,GAAIya,GAAS,CACX,UAAW,aACX,OAAQtK,GAAI,OACZ,MAAOA,GAAI,MACX,GAAGnQ,GAAIjE,EAAI,CACT,WACA,UACA,YACA,cACA,eACA,aACA,cACAme,EACF,CAAC,CACH,CAAC,EACDla,GAAIjE,EAAI,CACN,QAAS,EACT,OAAQ,EACR,SAAU,EACV,UAAW,EACX,CAACme,EAAe,EAAG,EACnB,MAAO/J,GAAI,MACX,OAAQA,GAAI,OACZ,SAAU,SACV,CAAC6J,EAAO,EAAGG,EACb,CAAC,EACD,IAAM9S,GAAU8S,GAAaK,GAC7B7X,GAAYkX,EAAWW,GAAS7X,IAAayW,EAAO,EAAI/R,GAAUA,IAClE,IAAMqT,GAAW,CAAE,CAACV,EAAO,EAAGZ,EAAOoB,GAAS,CAAE,EAC5CvM,KACFjO,GAAIjE,EAAIke,GAAYO,GAASL,GAAaG,EAAa,EACvDI,GAAST,EAAU,EAAIb,EAAOkB,GAAgBE,GAASF,IAErD,CAACrM,GAAM6L,KAAS,WAClB9Z,GAAIya,GAASR,GAAY,CAACO,GAASL,EAAU,EAC7CnX,GAAW,MAAMyX,GAAS,CAAE,CAACR,EAAU,EAAGb,EAAO,EAAI,CAACoB,EAAO,EAAG7X,EAAUwW,CAAU,GAEtF,GAAI,CACF,MAAMnW,GAAW,MAAMjH,EAAI2e,GAAU/X,EAAUwW,CAAU,CAC3D,QAAE,CACAnZ,GAAIjE,EAAIse,EAAS,EACjBxV,GAAO4V,GAAQ,UAAU,EACpBrB,GACHQ,GAAQ7d,EAAI,EAAK,CAErB,CACF,CACA,SAASyd,GAAgBzd,EAAIqd,EAAMuB,EAAK,CACtC,GAAM,CAAE,UAAAtX,EAAW,SAAAV,EAAU,QAAAiX,CAAQ,EAAIe,EACzC,OAAIvB,GACFQ,EAAQ7d,EAAI,EAAI,EACTyH,GAAU,GAAGzH,EAAIsH,EAAU,CAAC,EAAGV,EAAUgY,EAAI,MAAM,GAErDnX,GAAU,IAAIzH,EAAIsH,EAAU,CAAC,GAAKA,EAAU,CAAC,EAAGV,EAAUgY,EAAI,MAAM,EAAE,KAC3E,IAAMf,EAAQ7d,EAAI,EAAK,CACzB,CACF,CAEA,IAAM6e,GAAW,CAAC,EAClB,IAAIC,GAAQ,CACV,OAAQ,CAAC9J,GAAOkI,GAAWC,EAAS,EACpC,MAAO,CACL,SAAU,OACV,SAAU,OACV,SAAU,QACV,QAAS,QACT,MAAO,QACP,KAAM,MACR,EACA,KAAM,CACJ,IAAK,UACL,SAAU,GACV,QAAS,GACT,QAAS,GACT,MAAO,GACP,KAAM,QACR,EACA,SAAU,CACR,MAAO,CAAC,CAAE,SAAA4B,CAAS,EAAG7G,IAAQpQ,GAAEiX,EAAU7G,CAAG,EAC7C,mBAAoB,CAClB,OAAO,KAAK,KACd,EACA,QAAQ,CAAE,QAAA8G,CAAQ,EAAG,CACnB,OAAOA,GAAW,KAAK,KACzB,CACF,EACA,WAAY,CACVlf,GAAK,KAAK,OAAS,KAAK,IAAK,OAAQ,KAAK,IAAI,EAC1C,KAAK,SACPA,GAAK,KAAK,OAAS,KAAK,IAAK,aAAc,EAAI,CAEnD,EACA,kBAAmB,CACbjG,EAASglB,GAAU,IAAI,GACzB,KAAK,cAAc,KAAK,IAAK,GAAO,EAAK,CAE7C,EACA,OAAQ,CACN,CACE,KAAM,QACN,SAAU,CAAC,CAAE,SAAAI,CAAS,IAAM,GAAGA,CAAQ,gBACvC,QAAQha,EAAG,CACT,GAAM,CAAE,QAAAxG,EAAS,iBAAAygB,CAAiB,EAAIja,EAChC,CAAE,KAAA7C,CAAK,EAAI3D,EACb,CAACygB,GAAoB9c,GAAQH,GAAiBxD,CAAO,GAAK,CAAC,KAAK,IAAI,SAASqJ,GAAE1F,CAAI,CAAC,EACtF,KAAK,KAAK,EACDd,GAAQ7C,EAAS,KAAK,QAAQ,IACvCwG,EAAE,eAAe,EACjB,KAAK,KAAK,EAEd,CACF,EACA,CACE,KAAM,SACN,KAAM,GACN,QAAQA,EAAG,CACLA,EAAE,mBAGNA,EAAE,eAAe,EACb,KAAK,UAAU,IAAMpL,EAASglB,GAAU,IAAI,GAC9C,KAAK,OAAO,EAEhB,CACF,EACA,CACE,KAAM,aACN,KAAM,GACN,QAAQ5Z,EAAG,CACT,GAAIpL,EAASglB,GAAU,IAAI,EACzB,MAAO,GAEL,CAAC,KAAK,OAASA,GAAS,QAC1B,QAAQ,IAAIA,GAAS,IAAKM,GAAUA,EAAM,KAAK,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,EACjEla,EAAE,eAAe,GAEjB4Z,GAAS,KAAK,IAAI,CAEtB,CACF,EACA,CACE,KAAM,OACN,KAAM,GACN,SAAU,CACJ,KAAK,OACP5a,GAAI,KAAK,IAAK,SAAU3I,EAAQ2I,GAAI,KAAK,IAAK,QAAQ,CAAC,EAAI4a,GAAS,MAAM,EAE5E,IAAMO,EAAW,CACf,KAAK,SAAWC,GAAuB,IAAI,EAC3C,KAAK,SAAWtC,GAAwB,KAAK,GAAG,EAChD,KAAK,SAAWuC,GAA2B,IAAI,EAC/C,KAAK,UAAYC,GAAoB,IAAI,CAC3C,EACAza,GACE,KAAK,IACL,SACA,IAAMsa,EAAS,QAAS3H,GAAYA,GAAWA,EAAQ,CAAC,EACxD,CAAE,KAAM,EAAK,CACf,EACA1Y,GAAS,SAAS,gBAAiB,KAAK,OAAO,CACjD,CACF,EACA,CACE,KAAM,QACN,KAAM,GACN,SAAU,CACHyC,GAAY,KAAK,GAAG,GACvB1B,GAAK,KAAK,IAAK,WAAY,IAAI,EAE5BwB,GAAQ,KAAK,IAAK,eAAe,GACpC,KAAK,IAAI,MAAM,CAEnB,CACF,EACA,CACE,KAAM,SACN,KAAM,GACN,SAAU,CACJzH,EAASglB,GAAU,IAAI,GACzBA,GAAS,OAAOA,GAAS,QAAQ,IAAI,EAAG,CAAC,EAE3C5a,GAAI,KAAK,IAAK,SAAU,EAAE,EACrB4a,GAAS,KAAMM,GAAUA,EAAM,UAAY,KAAK,OAAO,GAC1D7f,GAAY,SAAS,gBAAiB,KAAK,OAAO,CAEtD,CACF,CACF,EACA,QAAS,CACP,QAAS,CACP,OAAO,KAAK,UAAU,EAAI,KAAK,KAAK,EAAI,KAAK,KAAK,CACpD,EACA,MAAO,CACL,OAAI,KAAK,WAAamC,GAAO,KAAK,GAAG,IAAM,KAAK,WAC9CyG,GAAO,KAAK,UAAW,KAAK,GAAG,EACxB,IAAI,QACRpB,GAAY,sBAAsB,IAAM,KAAK,KAAK,EAAE,KAAKA,CAAO,CAAC,CACpE,GAEK,KAAK,cAAc,KAAK,IAAK,GAAM0Y,EAAS,CACrD,EACA,MAAO,CACL,OAAO,KAAK,cAAc,KAAK,IAAK,GAAOA,EAAS,CACtD,CACF,CACF,EACA,SAASA,GAAUxf,EAAIqd,EAAM,CAAE,kBAAAoC,EAAmB,QAAA5B,CAAQ,EAAG,CAC3D,OAAO,IAAI,QACT,CAAC/W,EAASC,IAAWjC,GAAK9E,EAAI,YAAa,IAAM,CAC/C,IAAIrG,IACHA,GAAKqG,EAAG,UAAY,MAAgBrG,GAAG,KAAKqG,CAAE,EAC/CA,EAAG,QAAU+G,EACb8W,EAAQ7d,EAAIqd,CAAI,EAChB,IAAMxY,GAAMC,GACV2a,EACA,kBACA,IAAM,CACJ3a,GAAK2a,EAAmB,iCAAkC3Y,EAAS,CACjE,KAAM,EACR,CAAC,EACD,aAAaE,EAAK,CACpB,EACA,CAAE,KAAM,EAAK,CACf,EACMA,GAAQ,WACZ,IAAM,CACJnC,GAAI,EACJiC,EAAQ,CACV,EACA4Y,GAAKzb,GAAIwb,EAAmB,oBAAoB,CAAC,CACnD,CACF,CAAC,CACH,EAAE,KAAK,IAAM,OAAOzf,EAAG,OAAO,CAChC,CACA,SAAS0f,GAAKC,EAAM,CAClB,OAAOA,EAAO/lB,EAAS+lB,EAAM,IAAI,EAAIrkB,EAAQqkB,CAAI,EAAIrkB,EAAQqkB,CAAI,EAAI,IAAM,CAC7E,CACA,SAASN,GAAuBF,EAAO,CACrC,OAAOjb,GAAG,SAAU,UAAYe,GAAM,CAChC7I,GAAKyiB,EAAQ,IAAMM,GAAS,CAACA,EAAM,IAAI,SAASla,EAAE,MAAM,GAC1Dka,EAAM,IAAI,MAAM,CAEpB,CAAC,CACH,CACA,SAASG,GAA2BH,EAAO,CACzC,OAAOjb,GAAG,SAAUxD,GAAe,CAAC,CAAE,OAAAkE,CAAO,IAAM,CAC7CxI,GAAKyiB,EAAQ,IAAMM,GAASA,EAAM,SAAW,CAACA,EAAM,IAAI,SAASva,CAAM,GAAKua,EAAM,MAAM,SAASva,CAAM,GAG3GE,GACE,SACA,GAAGlE,EAAW,IAAIG,EAAa,UAC/B,CAAC,CAAE,iBAAAme,EAAkB,KAAAva,EAAM,OAAQib,CAAU,IAAM,CAC7C,CAACV,GAAoBva,IAAS/D,IAAegE,IAAWgb,GAC1DT,EAAM,KAAK,CAEf,EACA,EACF,CACF,CAAC,CACH,CACA,SAASI,GAAoBJ,EAAO,CAClC,OAAOjb,GAAG,SAAU,UAAYe,GAAM,CAChCA,EAAE,UAAY,IAAM7I,GAAKyiB,EAAQ,IAAMM,GACzCA,EAAM,KAAK,CAEf,CAAC,CACH,CAEA,IAAIU,GAAe,CACjB,MAAO,CACL,KAAK9V,EAAK,CACR,MAAO,CAAC,CAAE,UAAW+V,GAAU/V,EAAM,IAAI,CAAE,EAAG,CAAE,UAAW+V,GAAU,CAAE,CAAC,CAC1E,EACA,QAAQrhB,EAAS,CACf,OAAOshB,GAAWthB,CAAO,CAC3B,EACA,UAAU6M,EAASvB,EAAK,CACtB,MAAO,CACL,CAAE,UAAW+V,GAAU/V,EAAM,KAAOuB,CAAO,CAAE,EAC7C,CAAE,UAAWwU,GAAU/V,EAAM,KAAO,EAAIuB,EAAQ,CAAE,CACpD,CACF,CACF,CACF,EACA,SAASyU,GAAW/f,EAAI,CACtB,OAAO,KAAK,IAAI,IAAI,UAAUiE,GAAIjE,EAAI,WAAW,CAAC,EAAE,IAAMA,EAAG,WAAW,CAC1E,CACA,SAAS8f,GAAUjlB,EAAQ,EAAGuQ,EAAO,IAAK,CACxC,OAAAvQ,GAASA,EAAQuQ,EAAO,GACjB,eAAevQ,CAAK,SAC7B,CACA,SAASmlB,GAAQnlB,EAAO,CACtB,MAAO,WAAWA,CAAK,KAAKA,CAAK,MACnC,CAEA,SAASolB,GAAe7O,EAAM0J,EAAM/Q,EAAK,CAAE,UAAAzC,EAAW,OAAA4Y,CAAO,EAAG,CAC9D,GAAM,CAAE,QAAA5U,EAAS,UAAAwU,GAAW,KAAAzC,GAAO9f,EAAK,EAAI+J,EACtCpK,GAAQmgB,GAAKtT,CAAG,EAChB,CAAE,QAAAuT,GAAS,QAAAxW,EAAQ,EAAIqZ,GAAc,EAC3C,MAAO,CACL,IAAApW,EACA,KAAKnD,GAAUwZ,GAAW,EAAGC,GAAQ,CACnC,IAAMxZ,GAASwZ,GAAS,SAAWH,EACnC,OAAAtZ,IAAY,KAAK,MAAMA,GAAWxJ,GAAMgjB,GAAU,GAAI,CAAC,CAAC,EACxD,KAAK,UAAUA,EAAQ,EACvBE,GAAcxF,EAAM,SAAU,CAAE,QAASsF,GAAU,SAAAxZ,GAAU,OAAAC,GAAQ,IAAAkD,CAAI,CAAC,EAC1EuW,GAAclP,EAAM,UAAW,CAAE,QAAS,EAAIgP,GAAU,SAAAxZ,GAAU,OAAAC,GAAQ,IAAAkD,CAAI,CAAC,EAC/E,QAAQ,IAAI,CACV9C,GAAW,MAAM6T,EAAM5d,GAAM,CAAC,EAAG0J,GAAUC,EAAM,EACjDI,GAAW,MAAMmK,EAAMlU,GAAM,CAAC,EAAG0J,GAAUC,EAAM,CACnD,CAAC,EAAE,KAAK,IAAM,CACZ,KAAK,MAAM,EACXC,GAAQ,CACV,EAAGvJ,EAAI,EACA+f,EACT,EACA,QAAS,CACP,OAAOrW,GAAW,OAAO,CAAC6T,EAAM1J,CAAI,CAAC,CACvC,EACA,OAAQ,CACN,QAAW7U,MAAQW,GAAM,CAAC,EACxB+G,GAAI,CAAC6W,EAAM1J,CAAI,EAAG7U,GAAM,EAAE,CAE9B,EACA,MAAM,QAAQqK,GAAUwZ,GAAW,KAAK,QAAQ,EAAG,CACjD,aAAM,KAAK,OAAO,EACX,KAAK,KAAKxZ,GAAUwZ,GAAU,EAAI,CAC3C,EACA,UAAUA,GAAU,CAClB,KAAK,MAAM,EACX,IAAMG,GAAST,GAAUM,GAAUrW,CAAG,EACtC9F,GAAI6W,EAAMyF,GAAO,CAAC,CAAC,EACnBtc,GAAImN,EAAMmP,GAAO,CAAC,CAAC,EACnBD,GAAcxF,EAAM,kBAAmB,CAAE,QAASsF,GAAU,IAAArW,CAAI,CAAC,EACjEuW,GAAclP,EAAM,mBAAoB,CAAE,QAAS,EAAIgP,GAAU,IAAArW,CAAI,CAAC,CACxE,EACA,SAAU,CACR,OAAOuB,EAAQ8F,GAAQ0J,EAAMA,EAAM/Q,CAAG,CACxC,EACA,aAAc,CACZ,OAA+BqH,GAAK,WACtC,CACF,CACF,CACA,SAASkP,GAActgB,EAAI2E,EAAMvE,EAAM,CACrC+E,GAAQnF,EAAIuF,GAAYZ,EAAM,GAAO,GAAOvE,CAAI,CAAC,CACnD,CACA,SAAS+f,IAAgB,CACvB,IAAIrZ,EACJ,MAAO,CAAE,QAAS,IAAI,QAAS3J,GAAQ2J,EAAU3J,CAAG,EAAG,QAAA2J,CAAQ,CACjE,CAEA,IAAI0Z,GAAO,CACT,MAAO,CACL,KAAM,MACR,EACA,KAAM,CACJ,KAAM,IACR,EACA,QAAS,CACP,EAAEznB,KAAQ0nB,EAAQ,CAChB,IAAI9mB,EAAImM,EAAI4a,EACZ,IAAIniB,EAAI,EACR,QAASmiB,IAAO/mB,EAAK,KAAK,OAAS,KAAO,OAASA,EAAGZ,CAAG,MAAQ+M,EAAK,KAAK,SAAS,OAAS,KAAO,OAASA,EAAG/M,CAAG,KAAO,KAAO,OAAS2nB,EAAG,QAC3I,MACA,IAAMD,EAAOliB,GAAG,GAAK,EACvB,IAAM,EACR,CACF,CACF,EAEIoiB,GAAiB,CACnB,MAAO,CACL,SAAU,QACV,iBAAkB,OAClB,aAAc,OAChB,EACA,KAAM,CACJ,SAAU,GACV,iBAAkB,IAClB,aAAc,EAChB,EACA,WAAY,CACV7gB,GAAK,KAAK,KAAM,YAAa,KAAK,SAAW,MAAQ,QAAQ,EAC7D,KAAK,UAAY,KAAK,cAAc,CACtC,EACA,cAAe,CACb,KAAK,aAAa,CACpB,EACA,QAAS,CACPA,GAAK,KAAK,OAAQ,WAAY,IAAI,CACpC,EACA,OAAQ,CACN,CACE,KAAM,mBACN,GAAI,IAAM,SACV,OAAQ,CAAC,CAAE,SAAA8gB,CAAS,IAAMA,EAC1B,SAAU,CACJ,SAAS,OACX,KAAK,aAAa,EAElB,KAAK,cAAc,CAEvB,CACF,CACF,EACA,QAAS,CACP,eAAgB,CACd,KAAK,aAAa,EAClB,KAAK,SAAW,YAAY,IAAM,CAC1B,KAAK,MAAM,QAAU,KAAK,WAAatf,GAAQ,KAAK,IAAK,eAAe,GAAK,CAACA,GAAQ,KAAK,IAAK,QAAQ,GAAK,KAAK,cAAgBA,GAAQ,KAAK,IAAK,QAAQ,GAChK,KAAK,KAAK,MAAM,CAEpB,EAAG,KAAK,gBAAgB,CAC1B,EACA,cAAe,CACb,cAAc,KAAK,QAAQ,CAC7B,CACF,CACF,EAEA,IAAMuf,GAAiB,CAAE,QAAS,GAAO,QAAS,EAAK,EACjDC,GAAmB,CAAE,QAAS,GAAM,QAAS,EAAK,EAClDC,GAAc,uBACdC,GAAc,sBACdC,GAAY,kDACZC,GAAgBjc,GAAMA,EAAE,eAAe,EAC7C,IAAIkc,GAAa,CACf,MAAO,CACL,UAAW,OACb,EACA,KAAM,CACJ,UAAW,GACX,UAAW,EACb,EACA,SAAU,CACR,QAAWpoB,IAAO,CAAC,QAAS,OAAQ,KAAK,EAAG,CAC1C,IAAM6F,EAAK,KAAK7F,CAAG,EACnB,KAAKA,CAAG,EAAKkM,GAAM,CACjB,IAAM8F,EAAMlF,GAAYZ,CAAC,EAAE,GAAK1E,GAAQ,GAAK,GAC7C,KAAK,QAAUwK,IAAQ,KAAK,IAAM,KAAK,QAAU,KAAK,IACtD,KAAK,IAAMA,EACXnM,EAAGqG,CAAC,CACN,CACF,CACF,EACA,OAAQ,CACN,CACE,KAAM8b,GACN,QAAS,GACT,SAAU,CAAC,CAAE,QAAAK,CAAQ,IAAM,GAAGA,CAAO,OACrC,QAAQnc,EAAG,CACL,CAAC,KAAK,WAAa,KAAK,UAAY,CAACW,GAAQX,CAAC,GAAKoc,GAAkBpc,EAAE,MAAM,GAAKA,EAAE,OAAO,QAAQ7D,EAAQ,GAAK6D,EAAE,OAAS,GAAK,KAAK,OAAS,GAGlJ,KAAK,MAAMA,CAAC,CACd,CACF,EACA,CACE,KAAM,YACN,QAAQA,EAAG,CACTA,EAAE,eAAe,CACnB,CACF,EACA,CAEE,KAAM+b,GACN,GAAI,CAAC,CAAE,KAAAvF,CAAK,IAAMA,EAClB,QAASle,GACT,GAAGsjB,EACL,CACF,EACA,QAAS,CACP,OAAQ,CACN,KAAK,KAAO,KAAK,IACb,KAAK,eACP,KAAK,QAAU,KAAK,cAAc,QAAQ,EAC1C,KAAK,MAAQ,KAAK,cAAc,YAAY,EAAI,KAAK,QAAU,KAAK,IACpE,KAAK,cAAc,OAAO,EAC1B,KAAK,cAAc,UAAU,KAAK,OAAO,EACzC,KAAK,SAAW,GAChB,KAAK,MAAQ,CAAC,GAEd,KAAK,UAAY,KAAK,MAExB3c,GAAG,SAAU8c,GAAa,KAAK,KAAMH,EAAc,EACnD3c,GAAG,SAAU+c,GAAW,KAAK,IAAKH,EAAgB,EAClD7c,GAAI,KAAK,KAAM,aAAc,MAAM,CACrC,EACA,KAAKgB,EAAG,CACN,IAAMqc,EAAW,KAAK,IAAM,KAAK,KACjC,GAAIA,IAAa,GAAK,KAAK,UAAY,KAAK,KAAO,CAAC,KAAK,UAAY,KAAK,IAAIA,CAAQ,EAAI,KAAK,UAC7F,OAEG,KAAK,UACRpd,GAAG,KAAK,KAAM,QAASgd,GAAcL,EAAc,EAErD5b,EAAE,YAAcA,EAAE,eAAe,EACjC,KAAK,SAAW,GAChB,KAAK,IAAMqc,EAAW,EAAI,EAAI,GAC9B,GAAI,CAAE,OAAAC,EAAQ,UAAAC,CAAU,EAAI,KACxBC,EAAM,KAAK,IAAIH,CAAQ,EACvBI,EAAY,KAAK,SAASF,EAAY,KAAK,GAAG,EAC9ChY,GAAQmY,GAAY,KAAK,KAAMH,EAAWE,CAAS,EACvD,KAAOA,IAAcF,GAAaC,EAAMjY,IACtC,KAAK,MAAQA,GAAQ,KAAK,IAC1BgY,EAAYE,EACZD,GAAOjY,GACPkY,EAAY,KAAK,SAASF,EAAY,KAAK,GAAG,EAC9ChY,GAAQmY,GAAY,KAAK,KAAMH,EAAWE,CAAS,EAErD,KAAK,QAAUD,EAAMjY,GACrB,IAAM4H,GAAOmQ,EAAOC,CAAS,EACvB1G,GAAOyG,EAAOG,CAAS,EACvB9D,GAAU,KAAK,QAAU8D,EACzBE,GAAOJ,IAAcE,EACvBG,GACJ,QAAWtjB,KAAK,CAAC,KAAK,MAAO,KAAK,SAAS,EACpC1E,EAAS,CAAC6nB,EAAWF,CAAS,EAAGjjB,EAAC,IACrC4G,GAAQoc,EAAOhjB,EAAC,EAAG,aAAc,CAAC,IAAI,CAAC,EACnCqjB,KACFC,GAAY,GACZ,KAAK,UAAYL,KAInB,KAAK,QAAUA,GAAa,KAAK,YAAcA,GAAaK,KAC9D1c,GAAQoc,EAAO,KAAK,KAAK,EAAG,YAAa,CAAC,IAAI,CAAC,EAE7C3D,KACF,KAAK,UAAY4D,EACjB,KAAK,MAAQE,EACRE,KACHzc,GAAQiM,GAAM,iBAAkB,CAAC,IAAI,CAAC,EACtCjM,GAAQiM,GAAM,WAAY,CAAC,IAAI,CAAC,GAElCjM,GAAQ2V,GAAM,iBAAkB,CAAC,IAAI,CAAC,EACtC3V,GAAQ2V,GAAM,WAAY,CAAC,IAAI,CAAC,GAElC,KAAK,cAAgB,KAAK,WAAW,KAAK,IAAI,KAAK,OAAO,EAAG1J,GAAM,CAACwQ,IAAQ9G,EAAI,CAClF,EACA,KAAM,CAGJ,GAFAjW,GAAI,SAAUmc,GAAa,KAAK,KAAMH,EAAc,EACpDhc,GAAI,SAAUoc,GAAW,KAAK,IAAKH,EAAgB,EAC/C,KAAK,SAEP,GADA,KAAK,SAAW,KACZ,KAAK,QAAU,KAAK,UACtB,KAAK,QAAU,EAAI,KAAK,QACxB,KAAK,KAAO,GACZ,KAAK,MAAM,GAAO,KAAK,MAAO,EAAI,EAClC,KAAK,cAAgB,SAChB,CACL,IAAMgB,GAAavhB,GAAQ,KAAK,KAAOA,GAAQ,EAAI,IAAM,KAAK,KAAO,GAAM,KAAK,QAAU,KAAK,IAC/F,KAAK,MAAQuhB,EAAY,KAAK,MAAQ,KAAK,UACvCA,IACF,KAAK,QAAU,EAAI,KAAK,SAE1B,KAAK,KACH,KAAK,IAAM,GAAK,CAACA,GAAa,KAAK,IAAM,GAAKA,EAAY,OAAS,WACnE,EACF,CACF,CAEF,WAAW,IAAMjd,GAAI,KAAK,KAAM,QAASqc,GAAcL,EAAc,CAAC,EACtE5c,GAAI,KAAK,KAAM,CAAE,WAAY,EAAG,CAAC,EACjC,KAAK,KAAO,KAAK,QAAU,IAC7B,CACF,CACF,EACA,SAAS0d,GAAYvQ,EAAM0J,EAAM,CAC/B,OAAO,KAAK,iBAAiB1J,EAAMA,IAAS0J,GAAQA,CAAI,EAAE,YAAY,GAAK,KAAK,OAAO1J,CAAI,EAAE,WAC/F,CACA,SAASiQ,GAAkBrhB,EAAI,CAC7B,OAAOiE,GAAIjE,EAAI,YAAY,IAAM,QAAU9F,EAAQ8F,EAAG,UAAU,EAAE,KAAMuX,GAAQA,EAAI,WAAa,GAAKA,EAAI,YAAY,KAAK,CAAC,CAC9H,CAEA,SAASwK,GAAYnL,EAAU,CAC7BA,EAAS,SAAW,CAAC,EACrB,QAAWoL,KAAWpL,EAAS,SAAS,OAAS,CAAC,EAChD,OAAW,CAAC7W,EAAMkiB,CAAK,IAAK,OAAO,QAAQD,CAAO,EAChDE,GAActL,EAAUqL,EAAOliB,CAAI,EAGvC6W,EAAS,SAAW,EACtB,CACA,SAASsL,GAActL,EAAUqL,EAAOliB,EAAM,CAC5C6W,EAAS,SAAS,KAAK,CACrB,KAAA7W,EACA,GAAGzF,EAAc2nB,CAAK,EAAIA,EAAQ,CAAE,QAASA,CAAM,CACrD,CAAC,CACH,CACA,SAASE,GAAWvL,EAAUwL,EAAQ,CACpC,OAAW,CAAE,KAAAriB,EAAM,QAAA0X,EAAS,UAAA4K,EAAY,EAAK,IAAKzL,EAAS,UACrDA,EAAS,UAAYyL,GAAaxpB,EAAOupB,EAAQriB,CAAI,GAAK,CAACnE,EAAQwmB,EAAOriB,CAAI,EAAG6W,EAAS7W,CAAI,CAAC,IACjG0X,EAAQ,KAAKb,EAAUA,EAAS7W,CAAI,EAAGqiB,EAAOriB,CAAI,CAAC,EAGvD6W,EAAS,SAAW,EACtB,CAEA,SAAS0L,GAAa1L,EAAU,CAC9B,GAAM,CAAE,SAAA2L,CAAS,EAAI3L,EAAS,SAE9B,GADAA,EAAS,UAAY,CAAC,EAClB2L,EACF,QAAWxpB,KAAOwpB,EAChBC,GAAiB5L,EAAU7d,EAAKwpB,EAASxpB,CAAG,CAAC,CAGnD,CACA,IAAM0pB,GAAkB,CAAE,QAAS,GAAM,UAAW,EAAK,EACzD,SAASD,GAAiB5L,EAAU7d,EAAKsD,EAAI,CAC3Cua,EAAS,aAAe,GACxB,OAAO,eAAeA,EAAU7d,EAAK,CACnC,WAAY,GACZ,KAAM,CACJ,GAAM,CAAE,UAAA2pB,EAAW,OAAAC,EAAQ,IAAAzK,CAAI,EAAItB,EACnC,GAAI,CAAC/d,EAAO6pB,EAAW3pB,CAAG,IACxB2pB,EAAU3pB,CAAG,GAAKsD,EAAG,KAAOA,GAAI,KAAKua,EAAU+L,EAAQzK,CAAG,EACtD7b,EAAG,SAAWua,EAAS,mBAAmB,CAC5C,IAAMjV,GAAWtF,EAAG,QAAQ,KAAKua,EAAU+L,CAAM,EACjD/L,EAAS,kBAAkB,QACzB,CAAC,IAAK,IAAK,GAAG,EAAE,SAASjV,GAAS,CAAC,CAAC,EAAIuW,EAAI,cAAgBA,EAAI,YAAY,EAC5EuK,EACF,CACF,CAEF,OAAOC,EAAU3pB,CAAG,CACtB,EACA,IAAI8B,EAAO,CACT,GAAM,CAAE,UAAA6nB,CAAU,EAAI9L,EACtB8L,EAAU3pB,CAAG,EAAIsD,EAAG,IAAMA,EAAG,IAAI,KAAKua,EAAU/b,CAAK,EAAIA,EACrDK,EAAYwnB,EAAU3pB,CAAG,CAAC,GAC5B,OAAO2pB,EAAU3pB,CAAG,CAExB,CACF,CAAC,CACH,CACA,SAAS6pB,GAAoBhM,EAAU,CAChCA,EAAS,eAGdC,GAAcD,EAAU,CACtB,KAAM,IAAMuL,GAAWvL,EAAUiM,GAAcjM,CAAQ,CAAC,EACxD,OAAQ,CAAC,SAAU,UAAU,CAC/B,CAAC,EACDA,EAAS,kBAAoBnI,GAC3BmI,EAAS,IACT,IAAMG,GAAWH,EAAU,UAAU,EACrC6L,EACF,EACA7L,EAAS,YAAY,KAAK,IAAM,CAC9BA,EAAS,kBAAkB,WAAW,EACtCA,EAAS,kBAAoB,KAC7BiM,GAAcjM,CAAQ,CACxB,CAAC,EACH,CACA,SAASiM,GAAcjM,EAAU,CAC/B,IAAMwL,EAAS,CAAE,GAAGxL,EAAS,SAAU,EACvC,OAAAA,EAAS,UAAY,CAAC,EACfwL,CACT,CAEA,SAASU,GAAWlM,EAAU,CAC5B,QAAWxR,KAASwR,EAAS,SAAS,QAAU,CAAC,EAC/C,GAAI/d,EAAOuM,EAAO,SAAS,EACzB2d,GAAcnM,EAAUxR,CAAK,MAE7B,SAAWrM,KAAOqM,EAChB2d,GAAcnM,EAAUxR,EAAMrM,CAAG,EAAGA,CAAG,CAI/C,CACA,SAASgqB,GAAcnM,EAAUxR,EAAOrM,EAAK,CAC3C,GAAI,CAAE,KAAAgH,EAAM,GAAAC,EAAI,QAAAyX,EAAS,QAAAuL,GAAS,QAAAC,GAAS,SAAAve,GAAU,OAAAwW,GAAQ,KAAAnS,EAAK,EAAIzO,EAAc8K,CAAK,EAAIA,EAAQ,CAAE,KAAMrM,EAAK,QAASqM,CAAM,EACjIpF,EAAK5F,EAAW4F,CAAE,EAAIA,EAAG,KAAK4W,EAAUA,CAAQ,EAAI5W,GAAM4W,EAAS,IAC/D,GAAC5W,GAAM/F,EAAQ+F,CAAE,GAAK,CAACA,EAAG,QAAUkb,IAAU,CAACA,GAAO,KAAKtE,EAAUA,CAAQ,IAGjFA,EAAS,YAAY,KACnB1S,GACElE,EACAD,EACA2E,GAAW5J,EAAS4J,EAAQ,EAAIA,GAAWA,GAAS,KAAKkS,EAAUA,CAAQ,EAAI,KAC/E9b,EAAS2c,CAAO,EAAIb,EAASa,CAAO,EAAIA,EAAQ,KAAKb,CAAQ,EAC7D,CAAE,QAAAqM,GAAS,QAAAD,GAAS,KAAAja,EAAK,CAC3B,CACF,CACF,CAEA,SAASma,GAActM,EAAU,CAC/B,QAAW5I,KAAY4I,EAAS,SAAS,SAAW,CAAC,EACnDuM,GAAmBvM,EAAU5I,CAAQ,CAEzC,CACA,SAASmV,GAAmBvM,EAAUwM,EAAY,CAChD,GAAI,CAAE,QAAAjM,EAAS,OAAAvS,EAASgS,EAAS,IAAK,QAAAa,EAAS,QAAA3J,EAAS,OAAAoN,GAAQ,KAAApc,EAAK,EAAIskB,EACzE,GAAIlI,IAAU,CAACA,GAAO,KAAKtE,EAAUA,CAAQ,EAC3C,OAEF,IAAM7d,GAAM,WAAW6d,EAAS,YAAY,MAAM,GAC9Cxc,EAAWwK,CAAM,GAAK,CAAC/L,EAAO+d,EAAU7d,EAAG,GAC7CypB,GAAiB5L,EAAU7d,GAAK,IAAM,CACpC,IAAMsqB,GAAWze,EAAO,KAAKgS,EAAUA,CAAQ,EAC/C,OAAO3c,EAAQopB,EAAQ,EAAI5nB,EAAQ4nB,EAAQ,EAAIA,EACjD,CAAC,EAEH5L,EAAU3c,EAAS2c,CAAO,EAAIb,EAASa,CAAO,EAAIA,EAAQ,KAAKb,CAAQ,EACnExc,EAAW0T,CAAO,IACpBA,EAAUA,EAAQ,KAAK8I,EAAUA,CAAQ,GAE3C,IAAMzS,GAAUtL,EAAO+d,EAAU7d,EAAG,EAAI6d,EAAS7d,EAAG,EAAI6L,EAClDoJ,GAAWmJ,EAAQhT,GAASsT,EAAS3J,EAAShP,EAAI,EACpD1E,EAAWwK,CAAM,GAAK3K,EAAQ2c,EAAS7d,EAAG,CAAC,GAC7CmpB,GACEtL,EACA,CAAE,QAAS0M,GAActV,GAAUF,CAAO,EAAG,UAAW,EAAM,EAC9D/U,EACF,EAEF6d,EAAS,YAAY,KAAK,IAAM5I,GAAS,WAAW,CAAC,CACvD,CACA,SAASsV,GAActV,EAAUF,EAAS,CACxC,MAAO,CAAC3J,EAASiN,IAAS,CACxB,QAAWxM,KAAUwM,EACdvX,EAASsK,EAASS,CAAM,IACvBoJ,EAAS,UACXA,EAAS,UAAUpJ,CAAM,EAChBoJ,EAAS,SAClBA,EAAS,WAAW,GAI1B,QAAWpJ,KAAUT,GACf,CAACtK,EAASuX,EAAMxM,CAAM,GAAK,CAACoJ,EAAS,YACvCA,EAAS,QAAQpJ,EAAQkJ,CAAO,CAGtC,CACF,CAEA,SAASyV,GAAU3M,EAAU,CAC3B,GAAM,CAAE,SAAA4M,EAAU,OAAAb,CAAO,EAAI/L,EACvB1Z,EAAQumB,GAASD,CAAQ,EAC/BrpB,EAAOwoB,EAAQzlB,CAAK,EACpB,GAAM,CAAE,SAAAqlB,EAAU,QAAAmB,CAAQ,EAAIF,EAC9B,QAASzqB,MAAO4pB,EACV5pB,MAAOmE,IAAU,CAACqlB,GAAY,CAAC1pB,EAAO0pB,EAAUxpB,EAAG,KAAO,CAAC2qB,GAAW,CAAC7qB,EAAO6qB,EAAS3qB,EAAG,KAC5F6d,EAAS7d,EAAG,EAAI4pB,EAAO5pB,EAAG,EAGhC,CACA,SAAS0qB,GAASE,EAAM,CACtB,IAAMC,EAAS,CAAC,EACV,CAAE,KAAA9kB,EAAO,CAAC,EAAG,MAAA5B,EAAQ,CAAC,EAAG,GAAA8C,EAAI,GAAAsC,CAAG,EAAIqhB,EAC1C,GAAI,CAACzmB,EACH,OAAO0mB,EAET,QAAW7qB,MAAOmE,EAAO,CACvB,IAAMX,GAAOtD,EAAUF,EAAG,EACtB8B,GAAQuF,GAAKJ,EAAIzD,EAAI,EACrBrB,EAAYL,EAAK,IAGrBA,GAAQqC,EAAMnE,EAAG,IAAM,SAAW8B,KAAU,GAAK,GAAO2b,GAAStZ,EAAMnE,EAAG,EAAG8B,EAAK,EAC9E,EAAA0B,KAAS,UAAY9C,EAAWoB,GAAO,GAAG,KAG9C+oB,EAAO7qB,EAAG,EAAI8B,IAChB,CACA,IAAMiT,GAAUuI,GAAajW,GAAKJ,EAAIsC,CAAE,EAAGxD,CAAI,EAC/C,QAAW/F,MAAO+U,GAAS,CACzB,IAAMvR,GAAOlD,EAASN,EAAG,EACpBmC,EAAYgC,EAAMX,EAAI,CAAC,IAC1BqnB,EAAOrnB,EAAI,EAAIia,GAAStZ,EAAMX,EAAI,EAAGuR,GAAQ/U,EAAG,CAAC,EAErD,CACA,OAAO6qB,CACT,CACA,IAAMC,GAAgB3qB,GAAQ,CAACoJ,EAAIpF,IAAU,CAC3C,IAAM4mB,EAAa,OAAO,KAAK5mB,CAAK,EAC9Bge,EAAS4I,EAAW,OAAOxhB,CAAE,EAAE,IAAKvJ,GAAQ,CAACE,EAAUF,CAAG,EAAG,QAAQE,EAAUF,CAAG,CAAC,EAAE,CAAC,EAAE,KAAK,EACnG,MAAO,CAAE,WAAA+qB,EAAY,OAAA5I,CAAO,CAC9B,CAAC,EACD,SAAS6I,GAAkBnN,EAAU,CACnC,GAAM,CAAE,SAAA4M,EAAU,OAAAb,CAAO,EAAI/L,EACvB,CAAE,GAAAtU,EAAI,MAAApF,EAAO,GAAA8C,CAAG,EAAIwjB,EAC1B,GAAI,CAACtmB,EACH,OAEF,GAAM,CAAE,WAAA4mB,GAAY,OAAA5I,EAAO,EAAI2I,GAAcvhB,EAAIpF,CAAK,EAChD8Q,GAAW,IAAI,iBAAkBgW,IAAY,CACjD,IAAM5jB,GAAOqjB,GAASD,CAAQ,EAC1BQ,GAAQ,KAAK,CAAC,CAAE,cAAAC,EAAc,IAAM,CACtC,IAAM1nB,GAAO0nB,GAAc,QAAQ,QAAS,EAAE,EAC9C,OAAQ1nB,KAAS+F,EAAKwhB,GAAa,CAACzqB,EAASkD,EAAI,EAAGlD,EAAS4qB,EAAa,CAAC,GAAG,KAC3EpZ,IAAU,CAAC3P,EAAYkF,GAAKyK,EAAK,CAAC,GAAKzK,GAAKyK,EAAK,IAAM8X,EAAO9X,EAAK,CACtE,CACF,CAAC,GACC+L,EAAS,OAAO,CAEpB,CAAC,EACD5I,GAAS,QAAQhO,EAAI,CACnB,WAAY,GACZ,gBAAiBkb,EACnB,CAAC,EACDtE,EAAS,YAAY,KAAK,IAAM5I,GAAS,WAAW,CAAC,CACvD,CAEA,SAASkW,GAAStN,EAAUuN,EAAM,CAChC,IAAIxqB,GACHA,EAAKid,EAAS,SAASuN,CAAI,IAAM,MAAgBxqB,EAAG,QAAS8d,GAAYA,EAAQ,KAAKb,CAAQ,CAAC,CAClG,CACA,SAASwN,GAAcxN,EAAU,CAC3BA,EAAS,aAGb2M,GAAU3M,CAAQ,EAClBsN,GAAStN,EAAU,eAAe,EAClCA,EAAS,WAAa,GACtBA,EAAS,YAAc,CAAC,EACxBkM,GAAWlM,CAAQ,EACnBD,GAAYC,CAAQ,EACpBmL,GAAYnL,CAAQ,EACpBsM,GAActM,CAAQ,EACtBmN,GAAkBnN,CAAQ,EAC1BgM,GAAoBhM,CAAQ,EAC5BsN,GAAStN,EAAU,WAAW,EAC9BG,GAAWH,CAAQ,EACrB,CACA,SAASyN,GAAiBzN,EAAU,CAC7BA,EAAS,aAGdsN,GAAStN,EAAU,kBAAkB,EACrCA,EAAS,YAAY,QAAS/R,GAAQA,EAAI,CAAC,EAC3C+R,EAAS,YAAc,KACvBsN,GAAStN,EAAU,cAAc,EACjCA,EAAS,WAAa,GACxB,CAEA,IAAI0N,GAAM,EACV,SAASC,GAAO3N,EAAU9I,EAAU,CAAC,EAAG,CACtCA,EAAQ,KAAO0W,GAAc1W,EAAS8I,EAAS,YAAY,OAAO,EAClEA,EAAS,SAAWX,GAAaW,EAAS,YAAY,QAAS9I,EAAS8I,CAAQ,EAChFA,EAAS,OAAS,CAAC,EACnBA,EAAS,KAAO0N,KAChBG,GAAS7N,CAAQ,EACjB8N,GAAY9N,CAAQ,EACpB0L,GAAa1L,CAAQ,EACrBsN,GAAStN,EAAU,SAAS,EACxB9I,EAAQ,IACV8I,EAAS,OAAO9I,EAAQ,EAAE,CAE9B,CACA,SAAS2W,GAAS7N,EAAU,CAC1B,GAAM,CAAE,KAAAxW,EAAO,CAAC,CAAE,EAAIwW,EAAS,SAC/B,QAAW7d,KAAOqH,EAChBwW,EAAS,OAAO7d,CAAG,EAAI6d,EAAS7d,CAAG,EAAIqH,EAAKrH,CAAG,CAEnD,CACA,SAAS2rB,GAAY9N,EAAU,CAC7B,GAAM,CAAE,QAAA8M,CAAQ,EAAI9M,EAAS,SAC7B,GAAI8M,EACF,QAAW3qB,KAAO2qB,EAChB9M,EAAS7d,CAAG,EAAI2qB,EAAQ3qB,CAAG,EAAE,KAAK6d,CAAQ,CAGhD,CACA,SAAS4N,GAAc,CAAE,KAAApkB,EAAO,CAAC,CAAE,EAAG,CAAE,KAAAtB,EAAO,CAAC,EAAG,MAAA5B,EAAQ,CAAC,CAAE,EAAG,CAC3DjD,EAAQmG,CAAI,IACdA,EAAOA,EAAK,MAAM,EAAGtB,EAAK,MAAM,EAAE,OAAO,CAAC6lB,EAAO9pB,EAAOkH,KAClDzH,EAAcO,CAAK,EACrBV,EAAOwqB,EAAO9pB,CAAK,EAEnB8pB,EAAM7lB,EAAKiD,CAAK,CAAC,EAAIlH,EAEhB8pB,GACN,CAAC,CAAC,GAEP,QAAW5rB,KAAOqH,EACZlF,EAAYkF,EAAKrH,CAAG,CAAC,EACvB,OAAOqH,EAAKrH,CAAG,EACNmE,EAAMnE,CAAG,IAClBqH,EAAKrH,CAAG,EAAIyd,GAAStZ,EAAMnE,CAAG,EAAGqH,EAAKrH,CAAG,CAAC,GAG9C,OAAOqH,CACT,CAEA,IAAMwkB,GAAM,SAAS9W,EAAS,CAC5ByW,GAAO,KAAMzW,CAAO,CACtB,EACA8W,GAAI,KAAO7P,GACX6P,GAAI,QAAU,CAAC,EACfA,GAAI,QAAU,UAEd,IAAMC,GAAS,MACTC,GAAO,YACPC,GAAe,CAAC,EACtB,SAASC,GAAUjlB,EAAM+N,EAAS,CAChC,IAAInU,EAAImM,EACR,IAAMxD,EAAKuiB,GAAS5rB,EAAU8G,CAAI,EAClC,GAAI,CAAC+N,EACH,OAAKiX,GAAaziB,CAAE,EAAE,UACpByiB,GAAaziB,CAAE,EAAIsiB,GAAI,OAAOG,GAAaziB,CAAE,CAAC,GAEzCyiB,GAAaziB,CAAE,EAExBvC,EAAO1G,EAAS0G,CAAI,EACpB6kB,GAAI7kB,CAAI,EAAI,CAACvE,GAAS4E,KAAS6kB,GAAgBllB,EAAMvE,GAAS4E,EAAI,EAClE,IAAM8kB,GAAOvrB,EAAKmU,EAAQ,UAAY,KAAOnU,EAAK,CAAE,GAAGmU,CAAQ,EAC/D,OAAAoX,EAAI,GAAK5iB,EACT4iB,EAAI,KAAOnlB,GACV+F,EAAKof,EAAI,UAAY,MAAgBpf,EAAG,KAAKof,EAAKN,GAAKM,EAAKnlB,CAAI,EAC7D6kB,GAAI,cAAgB,CAACM,EAAI,YAC3B,sBAAsB,IAAMD,GAAgBllB,EAAM,IAAIuC,CAAE,WAAWA,CAAE,GAAG,CAAC,EAEpEyiB,GAAaziB,CAAE,EAAI4iB,CAC5B,CACA,SAASD,GAAgBllB,EAAMvE,EAAS4E,KAAStB,EAAM,CACrD,IAAMqmB,EAAYH,GAAUjlB,CAAI,EAChC,OAAOolB,EAAU,QAAQ,WAAa,IAAIA,EAAU,CAAE,KAAM7qB,EAAckB,CAAO,EAAIA,EAAU,CAACA,EAAS4E,EAAM,GAAGtB,CAAI,CAAE,CAAC,EAAItD,EAAU4N,GAAG5N,CAAO,EAAE,IAAI4pB,CAAI,EAAE,CAAC,EAAIA,EAAK,EACvK,SAASA,EAAKjlB,GAAU,CACtB,IAAMyW,GAAWyO,GAAallB,GAAUJ,CAAI,EAC5C,GAAI6W,GACF,GAAIxW,EACFwW,GAAS,SAAS,MAElB,QAAOA,GAGX,OAAO,IAAIuO,EAAU,CAAE,GAAIhlB,GAAU,KAAAC,CAAK,CAAC,CAC7C,CACF,CACA,SAASklB,GAAc9pB,EAAS,CAC9B,OAAmCA,IAAQspB,EAAI,GAAM,CAAC,CACxD,CACA,SAASO,GAAa7pB,EAASuE,EAAM,CACnC,OAAOulB,GAAc9pB,CAAO,EAAEuE,CAAI,CACpC,CACA,SAASwlB,GAAgB/pB,EAASob,EAAU,CACrCpb,EAAQspB,EAAI,IACftpB,EAAQspB,EAAI,EAAI,CAAC,GAEnBtpB,EAAQspB,EAAI,EAAElO,EAAS,SAAS,IAAI,EAAIA,CAC1C,CACA,SAAS4O,GAAkBhqB,EAASob,EAAU,CAC5C,IAAIjd,GACHA,EAAK6B,EAAQspB,EAAI,IAAM,MAAc,OAAOnrB,EAAGid,EAAS,SAAS,IAAI,EAClE3b,EAAQO,EAAQspB,EAAI,CAAC,GACvB,OAAOtpB,EAAQspB,EAAI,CAEvB,CAEA,SAASW,GAAUb,EAAK,CACtBA,EAAI,UAAYI,GAChBJ,EAAI,cAAgBU,GACpBV,EAAI,aAAeS,GACnBT,EAAI,OAAS9N,GACb8N,EAAI,IAAM,SAASc,EAAQ,CACzB,GAAI,CAAAA,EAAO,UAGX,OAAAA,EAAO,KAAK,KAAM,IAAI,EACtBA,EAAO,UAAY,GACZ,IACT,EACAd,EAAI,MAAQ,SAASzO,EAAOwP,EAAY,CACtCA,GAAc7qB,EAAS6qB,CAAU,EAAI,KAAK,UAAUA,CAAU,EAAIA,IAAe,KACjFA,EAAW,QAAU1P,GAAa0P,EAAW,QAASxP,CAAK,CAC7D,EACAyO,EAAI,OAAS,SAAS9W,EAAS,CAC7BA,IAAYA,EAAU,CAAC,GACvB,IAAM8X,EAAQ,KACRC,EAAM,SAAwBvP,GAAU,CAC5CiO,GAAO,KAAMjO,EAAQ,CACvB,EACA,OAAAuP,EAAI,UAAY,OAAO,OAAOD,EAAM,SAAS,EAC7CC,EAAI,UAAU,YAAcA,EAC5BA,EAAI,QAAU5P,GAAa2P,EAAM,QAAS9X,CAAO,EACjD+X,EAAI,MAAQD,EACZC,EAAI,OAASD,EAAM,OACZC,CACT,EACA,IAAI5c,EACJ,OAAO,eAAe2b,EAAK,YAAa,CACtC,KAAM,CACJ,OAAO3b,GAAa,SAAS,IAC/B,EACA,IAAIzN,EAAS,CACXyN,EAAYnB,GAAEtM,CAAO,CACvB,CACF,CAAC,CACH,CACA,SAASsb,GAAOtb,EAASyJ,EAAG,CAC1BzJ,EAAUA,EAAUD,EAAOC,CAAO,EAAI,SAAS,KAC/C,QAAWsqB,KAAYlkB,GAAQpG,CAAO,EAAE,QAAQ,EAC9CuqB,GAAcD,EAAU7gB,CAAC,EAE3BiE,GAAM1N,EAAU2E,GAAa4lB,GAAc5lB,EAAU8E,CAAC,CAAC,CACzD,CACA,SAAS8gB,GAAcvqB,EAASyJ,EAAG,CACjC,IAAM+gB,EAAaV,GAAc9pB,CAAO,EACxC,QAAWuE,KAAQimB,EACjBjP,GAAWiP,EAAWjmB,CAAI,EAAGkF,CAAC,CAElC,CAEA,SAASghB,GAAYrB,EAAK,CACxBA,EAAI,UAAU,OAAS,SAAS5kB,EAAI,CAClC,IAAM4W,EAAW,KACjB2O,GAAgBvlB,EAAI4W,CAAQ,EAC5BA,EAAS,SAAS,GAAK5W,EACnB,SAAS,SAASA,CAAE,GACtBokB,GAAcxN,CAAQ,CAE1B,EACAgO,EAAI,UAAU,SAAW,SAASsB,EAAW,GAAO,CAClD,IAAMtP,EAAW,KACX,CAAE,GAAA5W,CAAG,EAAI4W,EAAS,SACpB5W,GACFqkB,GAAiBzN,CAAQ,EAE3BsN,GAAStN,EAAU,SAAS,EAC5B4O,GAAkBxlB,EAAI4W,CAAQ,EAC1BsP,GACFxd,GAASkO,EAAS,GAAG,CAEzB,EACAgO,EAAI,UAAU,QAAUK,GACxBL,EAAI,UAAU,MAAQ,SAAS3f,EAAG,CAChC8R,GAAW,KAAM9R,CAAC,CACpB,EACA2f,EAAI,UAAU,QAAU,SAASppB,EAAU,KAAK,IAAKyJ,EAAG,CACtD6R,GAAOtb,EAASyJ,CAAC,CACnB,EACA2f,EAAI,UAAU,OAAS,UAAW,CAChCP,GAAiB,IAAI,EACrBD,GAAc,IAAI,CACpB,EACAQ,EAAI,UAAU,cAAgBS,GAC9B,OAAO,iBAAiBT,EAAI,UAAW,CACrC,IAAK,CACH,KAAM,CACJ,OAAO,KAAK,SAAS,EACvB,CACF,EACA,WAAY,OAAO,yBAAyBA,EAAK,WAAW,CAC9D,CAAC,CACH,CACA,IAAItiB,GAAK,EACT,SAAS6jB,GAAWvP,EAAU5W,EAAK,KAAM,CACvC,OAA8BA,GAAG,IAAO,GAAG4W,EAAS,SAAS,EAAE,IAAItU,IAAI,EACzE,CAEA,IAAI8jB,GAAY,CACd,KAAM,CACJ,KAAM,aACN,SAAU,iBACV,OAAQ,WACR,WAAY,WACZ,KAAM,QACR,EACA,KAAM,CACJ,OAAQ,GACR,KAAM,QACR,EACA,SAAU,CACR,IAAK,CAAC,CAAE,OAAAC,CAAO,EAAGnO,IAAQpQ,GAAEue,EAAQnO,CAAG,EACvC,aAAc,CACZ,OAAOrW,GAAS,KAAK,GAAG,CAC1B,EACA,WAAY,CAAC,CAAE,SAAAsZ,CAAS,IAAM,IAAIA,CAAQ,WAAWA,CAAQ,IAC7D,SAAS7hB,EAAG4e,EAAK,CACf,OAAO9O,GAAG,KAAK,WAAY8O,CAAG,CAChC,CACF,EACA,MAAO,CACL,IAAIoO,EAAKlV,EAAM,CACbtR,GAAKwmB,EAAK,OAAQ,SAAS,EAC3B,KAAK,YAAY,EACblV,GACF,KAAK,MAAM,CAEf,EACA,KAAKqK,EAAM,CACL9T,GAAM8T,EAAM,IAAI,GAClB3b,GAAK2b,EAAM,OAAQ,cAAc,CAErC,EACA,YAAY3Z,EAAW,CACrBhC,GAAKgC,EAAW,OAAQ,cAAc,EACtC,KAAK,YAAY,EACjB,KAAK,UAAU,CACjB,EACA,SAASykB,EAAO,CACd,QAAWvmB,KAAMumB,EAAO,CACtB,IAAMnX,EAAMhP,GAAKJ,EAAI,KAAK,QAAQ,EAC5Bub,EAASzT,GAAE,WAAY9H,CAAE,GAAKA,EAChCwmB,EACAC,EAAe,KACnB,GAAIzrB,EAAUoU,CAAG,EAAG,CAClB,IAAMvS,GAAOzB,EAASgU,CAAG,EACnByJ,GAAQ,KAAK,OAAOhc,EAAI,EAC1Bgc,KACGA,GAAM,KACTA,GAAM,GAAKsN,GAAW,KAAMtN,EAAK,GAEnC4N,EAAe5N,GAAM,IAEvB2N,EAAY,KAAK,EAAE,SAAUlrB,EAAQ8T,CAAG,EAAI,CAAC,EAC7CtP,GAAKyb,EAAQ,OAAQ,KAAK,CAC5B,MACM,KAAK,OACF,KAAK,KAAK,KACb,KAAK,KAAK,GAAK4K,GAAW,KAAM,KAAK,IAAI,GAE3CM,EAAe,KAAK,KAAK,IAE3BD,EAAY,KAAK,EAAEpX,CAAG,EAExBtP,GAAKyb,EAAQ,CACX,gBAAiBkL,EACjB,aAAc3mB,GAAKyb,EAAQ,YAAY,GAAKiL,CAC9C,CAAC,CACH,CACF,EACA,OAAOjF,EAAQ,CACbA,EAAO,QACL,CAAC1I,EAAOta,IAAMuB,GAAK+Y,EAAO,CACxB,KAAM,KAAK,IAAM,WAAa,QAC9B,aAAc,KAAK,EAAE,aAActa,EAAI,EAAG,KAAK,MAAM,EACrD,uBAAwB,KAAK,IAAM,KAAO,OAC5C,CAAC,CACH,EACA,KAAK,YAAY,CACnB,CACF,EACA,WAAY,CACVuB,GAAK,KAAK,IAAK,CACb,KAAM,KAAK,KACX,uBAAwB,UAC1B,CAAC,CACH,EACA,OAAQ,CACN,CACE,OAAQ,CACN,KAAK,SAAS,OAAO,KAAK,GAAG,EAAE,QAASE,GAAOA,IAAOA,EAAG,OAAS,CAAC,KAAK,SAAS,EACjF,KAAK,UAAU,CACjB,EACA,OAAQ,CAAC,QAAQ,CACnB,CACF,EACA,OAAQ,CACN,CACE,KAAM,gBACN,SAAU,CAAC,CAAE,WAAA0mB,CAAW,IAAMA,EAC9B,OAAQ,CAAC,CAAE,SAAAC,CAAS,IAAM,CAACA,EAC3B,QAAQ1hB,EAAG,CACLA,EAAE,OAAO,QAAQ,UAAU,IAAMA,EAAE,OAAS,SAAWA,EAAE,UAAYgW,GAAO,SAC9EhW,EAAE,eAAe,EACjB,KAAK,KAAK7E,GAAK6E,EAAE,QAAS,KAAK,QAAQ,CAAC,EAE5C,CACF,EACA,CACE,KAAM,WACN,QAAS,WACX,EACA,CACE,KAAM,UACN,SAAU,CAAC,CAAE,WAAAyhB,CAAW,IAAMA,EAC9B,OAAQ,CAAC,CAAE,SAAAC,CAAS,IAAM,CAACA,EAC3B,QAAQ1hB,EAAG,CACT,GAAM,CAAE,QAAAxG,EAAS,QAAAmoB,CAAQ,EAAI3hB,EACvBmK,EAAMhP,GAAK3B,EAAS,KAAK,QAAQ,EACvC,GAAI,CAACzD,EAAUoU,CAAG,EAChB,OAEF,IAAI7Q,EAAIqoB,IAAY3L,GAAO,KAAO,EAAI2L,IAAY3L,GAAO,IAAM,OAAS2L,IAAY3L,GAAO,KAAO,WAAa2L,IAAY3L,GAAO,MAAQ,OAAS,GAC/I,CAAC1c,IACH0G,EAAE,eAAe,EACjB,KAAK,KAAK1G,CAAC,EAEf,CACF,CACF,EACA,QAAS,CACP,WAAY,CACV,IAAMwD,EAAQ,KAAK,cAAc,EACjC,QAAW/B,KAAM,KAAK,SAAU,CAC9B,IAAMoP,EAAMhP,GAAKJ,EAAI,KAAK,QAAQ,EAC5Bub,EAASzT,GAAE,WAAY9H,CAAE,GAAKA,EACpC,GAAIhF,EAAUoU,CAAG,EAAG,CAElB,IAAMyX,EADOzrB,EAASgU,CAAG,IACDrN,EACxBpC,GAAYK,EAAI,KAAK,UAAW6mB,CAAM,EACtClnB,GAAY4b,EAAQ,cAAe,KAAK,QAAQ,EAChDzb,GAAKyb,EAAQ,CACX,gBAAiBsL,EACjB,SAAUA,GAAU,CAAC,KAAK,SAAW,KAAO,EAC9C,CAAC,EACGA,GAAUtL,GAAUja,GAAQG,GAAOzB,CAAE,EAAG,eAAe,GACzDub,EAAO,MAAM,CAEjB,MACE5b,GACEK,EACA,eACA,KAAK,SAAWoP,IAAQ,YAAcrN,IAAU,GAAKqN,IAAQ,QAAUrN,GAAS,KAAK,SACvF,CAEJ,CACF,EACA,aAAc,CACZ,GAAI,CAAC,KAAK,IACR,OAEF,IAAMD,EAAY,CAAC,EACnB,QAASvD,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAAK,CACpC,IAAM6d,EAAQ,GAAG,KAAK,QAAQ,KAAK7d,CAAC,IACpCuD,EAAUvD,CAAC,EAAI,KAAK,YAAY,SAAUyB,GAAOA,EAAG,QAAQ,IAAIoc,CAAK,GAAG,CAAC,GAAKtU,GAAE,OAAOsU,CAAK,oBAAoB,CAClH,CACKxgB,EAAQkG,EAAW,KAAK,WAAW,GACtCiG,GAAK,KAAK,IAAKjG,CAAS,CAE5B,CACF,CACF,EAEA,IAAMglB,GAAc,uCACdC,GAAe,qCACrB,IAAIC,GAAS,CACX,OAAQ,CAACrG,GAAgBQ,GAAYiF,GAAW5F,EAAI,EACpD,MAAO,CACL,aAAc,OACd,OAAQ,OACR,MAAO,OACP,OAAQ,QACR,SAAU,MACZ,EACA,KAAM,KAAO,CACX,OAAQ,OACR,OAAQ,GACR,SAAU,EACV,MAAO,EACP,UAAW,GACX,MAAO,CAAC,EACR,QAAS,EACT,UAAW,YACX,aAAc,GACd,SAAU,iBACV,SAAU,iBACV,eAAgB,kBAChB,aAAc,GACd,kBAAmB,CAAC,CACtB,GACA,WAAY,CACV,KAAK,UAAY,GACjB,KAAK,MAAQ,KAAK,cAAc,KAAK,OAAO,KAAK,EACjD,KAAK,MAAQ,CAAC,CAChB,EACA,cAAe,CACblhB,GAAY,KAAK,OAAQ,KAAK,SAAS,CACzC,EACA,SAAU,CACR,SAAU,CAAC,CAAE,SAAAwe,CAAS,EAAG5F,IAAQ+O,GAAQ/O,EAAI,YAAc4F,CAAQ,EACnE,KAAM,CAAC,CAAE,QAAAsD,CAAQ,EAAGlJ,IAAQpQ,GAAEsZ,EAASlJ,CAAG,EAC1C,UAAW,CACT,OAAO,KAAK,OAAS,CACvB,EACA,QAAS,CACP,OAAOrW,GAAS,KAAK,IAAI,CAC3B,EACA,QAAS,CACP,OAAO,KAAK,OAAO,MACrB,CACF,EACA,MAAO,CACL,OAAO0f,EAAQnQ,EAAM,CACfA,GACF,KAAK,MAAM,CAEf,CACF,EACA,OAAQ,CACN,SAAS,CAAE,OAAAxM,CAAO,EAAG,CACnB7F,GAAS6F,EAAQ,KAAK,SAAU,KAAK,cAAc,CACrD,EACA,UAAU,CAAE,OAAAA,CAAO,EAAG,CACpBtF,GAAYsF,EAAQ,KAAK,QAAQ,CACnC,EACA,SAAS,CAAE,OAAAA,CAAO,EAAG,CACnB7F,GAAS6F,EAAQ,KAAK,QAAQ,CAChC,EACA,WAAW,CAAE,OAAAA,CAAO,EAAG,CACrBtF,GAAYsF,EAAQ,KAAK,SAAU,KAAK,cAAc,CACxD,CACF,EACA,QAAS,CACP,KAAK7C,EAAOnC,EAAQ,GAAO,CACzB,IAAIjG,EACJ,GAAI,KAAK,UAAY,CAAC,KAAK,QAAU,KAAK,SACxC,OAEF,GAAM,CAAE,MAAAutB,CAAM,EAAI,KACZC,EAAavnB,EAAQ,EAAIsnB,EAAM,OAC/BE,EAAQ,IAAM,CAClBF,EAAM,OAAOC,EAAY,CAAC,EACtBD,EAAM,QACR,KAAK,KAAKA,EAAM,MAAM,EAAG,EAAI,CAEjC,EAEA,GADAA,EAAMtnB,EAAQ,UAAY,MAAM,EAAEmC,CAAK,EACnC,CAACnC,GAASsnB,EAAM,OAAS,EAAG,CAC1BA,EAAM,SAAW,KAClBvtB,EAAK,KAAK,gBAAkB,MAAgBA,EAAG,QAAQ,KAAK,IAAI,KAAK,SAAU,GAAG,CAAC,GAEtF,MACF,CACA,IAAM6nB,GAAY,KAAK,SAAS,KAAK,KAAK,EACpCpQ,GAAO/R,GAAS,KAAK,OAAQ,KAAK,SAAS,GAAK,KAAK,OAAOmiB,EAAS,EACrEE,GAAY,KAAK,SAAS3f,EAAO,KAAK,KAAK,EAC3C+Y,GAAO,KAAK,OAAO4G,EAAS,EAClC,GAAItQ,KAAS0J,GAAM,CACjBsM,EAAM,EACN,MACF,CAIA,GAHA,KAAK,IAAMC,GAAatlB,EAAOyf,EAAS,EACxC,KAAK,UAAYA,GACjB,KAAK,MAAQE,GACTtQ,IAAQ,CAACjM,GAAQiM,GAAM,iBAAkB,CAAC,IAAI,CAAC,GAAK,CAACjM,GAAQ2V,GAAM,iBAAkB,CAAC,KAAM1J,EAAI,CAAC,EAAG,CACtG,KAAK,MAAQ,KAAK,UAClBgW,EAAM,EACN,MACF,CACA,IAAM9J,GAAU,KAAK,MAAMlM,GAAM0J,GAAMlb,CAAK,EAAE,KAAK,IAAM,CACvDwR,IAAQjM,GAAQiM,GAAM,aAAc,CAAC,IAAI,CAAC,EAC1CjM,GAAQ2V,GAAM,YAAa,CAAC,IAAI,CAAC,EACjCoM,EAAM,MAAM,EACZ,KAAK,cAAgB,KACjBA,EAAM,QACR,sBAAsB,IAAMA,EAAM,QAAU,KAAK,KAAKA,EAAM,MAAM,EAAG,EAAI,CAAC,CAE9E,CAAC,EACD,OAAA9V,IAAQjM,GAAQiM,GAAM,WAAY,CAAC,IAAI,CAAC,EACxCjM,GAAQ2V,GAAM,WAAY,CAAC,IAAI,CAAC,EACzBwC,EACT,EACA,SAASvb,EAAQ,KAAK,MAAOqP,EAAO,KAAK,MAAO,CAC9C,OAAOhU,GACLkB,GAASyD,EAAO,KAAK,OAAQqP,EAAM,KAAK,MAAM,EAC9C,EACA,KAAK,IAAI,EAAG,KAAK,QAAQ,CAC3B,CACF,EACA,cAAcrP,EAAQ,KAAK,MAAOyf,EAAY,KAAK,UAAW,CAC5D,OAAO,KAAK,SAASzf,EAAOyf,CAAS,CACvC,EACA,MAAM,MAAMpQ,EAAM0J,EAAMlb,EAAO,CAK7B,GAJA,KAAK,cAAgB,KAAK,iBAAiBwR,EAAM0J,EAAM,KAAK,IAAK,CAC/D,OAAQlb,EAAQkb,EAAK,YAAc,IAAMgM,GAAcC,GAAe,KAAK,OAC3E,GAAG,KAAK,iBACV,CAAC,EACG,CAACnnB,GAAS,CAACwR,EAAM,CACnB,KAAK,WAAW,CAAC,EACjB,MACF,CACA,GAAM,CAAE,OAAAzS,CAAO,EAAI,KAAK,MACxB,OAAO,KAAK,cAAcA,EAAS,EAAI,UAAY,MAAM,EACvDA,EAAS,EAAI,KAAK,IAAI,KAAK,SAAU,GAAK,IAAMA,EAAS,EAAE,EAAI,KAAK,SACpE,KAAK,OACP,CACF,EACA,WAAW2M,EAAS8F,EAAO,KAAK,UAAW0J,EAAO,KAAK,MAAO,CAC5D,IAAMwM,EAAe,KAAK,iBAAiBlW,IAAS0J,EAAO,GAAQ1J,EAAM0J,CAAI,EAC7E,OAAAwM,EAAa,UAAUhc,CAAO,EACvBgc,CACT,EACA,iBAAiBlW,EAAO,KAAK,UAAW0J,EAAO,KAAK,MAAO/Q,EAAM,KAAK,KAAO,EAAG+D,EAAU,KAAK,kBAAmB,CAChH,OAAO,IAAI,KAAK,aACd/S,EAASqW,CAAI,EAAI,KAAK,OAAOA,CAAI,EAAIA,EACrCrW,EAAS+f,CAAI,EAAI,KAAK,OAAOA,CAAI,EAAIA,EACrC/Q,GAAOxJ,GAAQ,GAAK,GACpBuN,CACF,CACF,CACF,CACF,EACA,SAASuZ,GAAatlB,EAAOyf,EAAW,CACtC,OAAOzf,IAAU,OAAS,EAAIA,IAAU,YAAkBA,EAAQyf,EAAb,GAA8B,CACrF,CACA,SAASyF,GAAQlhB,EAAG,CAClB,MAAO,IAAMA,EAAI,GACnB,CAEA,IAAIwhB,GAAY,CACd,OAAQ,CAACP,EAAM,EACf,MAAO,CACL,UAAW,MACb,EACA,KAAM,CACJ,UAAW,QACX,aAAc,uBACd,WAAYnH,GACZ,aAAcI,EAChB,EACA,SAAU,CACR,UAAU,CAAE,UAAA3Y,EAAW,WAAYkgB,CAAY,EAAG,CAChD,MAAO,CAAE,GAAGA,EAAYlgB,CAAS,GAAKkgB,EAAY,MAAO,KAAMlgB,CAAU,CAC3E,EACA,mBAAoB,CAClB,MAAO,CAAE,UAAW,KAAK,SAAU,CACrC,CACF,EACA,QAAS4P,GAAO,EAChB,OAAQ,CACN,eAAe,CAAE,OAAAtS,CAAO,EAAG,CACzB7F,GAAS6F,EAAQ,KAAK,SAAS,CACjC,EACA,UAAU,CAAE,OAAAA,CAAO,EAAG,CACpB7F,GAAS6F,EAAQ,KAAK,YAAY,CACpC,EACA,WAAW,CAAE,OAAAA,CAAO,EAAG,CACrBtF,GAAYsF,EAAQ,KAAK,UAAW,KAAK,YAAY,CACvD,CACF,CACF,EAEI6iB,GAAe,CACjB,GAAG5H,GACH,KAAM,CACJ,MAAO,CACL,MAAO,CAAC,CAAE,QAAS,CAAE,EAAG,CAAE,QAAS,CAAE,CAAC,CACxC,EACA,QAAQphB,EAAS,CACf,MAAO,GAAIwF,GAAIxF,EAAS,SAAS,CACnC,EACA,UAAU6M,EAAS,CACjB,MAAO,CAAC,CAAE,QAAS,EAAIA,CAAQ,EAAG,CAAE,QAASA,CAAQ,CAAC,CACxD,CACF,EACA,MAAO,CACL,MAAO,CACL,MAAO,CACL,CAAE,QAAS,EAAG,UAAW0U,GAAQ,EAAI,EAAG,CAAE,EAC1C,CAAE,QAAS,EAAG,UAAWA,GAAQ,CAAC,CAAE,CACtC,CACF,EACA,QAAQvhB,EAAS,CACf,MAAO,GAAIwF,GAAIxF,EAAS,SAAS,CACnC,EACA,UAAU6M,EAAS,CACjB,MAAO,CACL,CAAE,QAAS,EAAIA,EAAS,UAAW0U,GAAQ,EAAI,GAAM1U,CAAO,CAAE,EAC9D,CAAE,QAASA,EAAS,UAAW0U,GAAQ,EAAI,GAAM,GAAM1U,CAAO,CAAE,CAClE,CACF,CACF,CACF,EAEIoc,GAAgB,CAClB,OAAQ,CAAC5I,GAAOyI,EAAS,EACzB,WAAY,GACZ,MAAO,CACL,cAAe,OACf,QAAS,OACT,cAAe,QACf,SAAU,MACZ,EACA,KAAM,KAAO,CACX,QAAS,EACT,cAAe,GACf,cAAe,IACf,MAAO,CAAC,EACR,IAAK,UACL,QAAS,mBACT,QAAS,qBACT,SAAU,mBACV,SAAU,kBACV,WAAY,uBACZ,aAAc,GACd,SAAU,EACV,WAAYE,GACZ,SAAU,6tBACZ,GACA,SAAU,CACR,IAAMvP,EAAMpQ,GAAE,KAAK,QAAQ,EACrB2T,EAAO3T,GAAE,KAAK,QAASoQ,CAAG,EAChC,KAAK,MAAM,QAAQ,IAAMhQ,GAAOuT,EAAM,OAAO,CAAC,EAC9C,IAAMkM,EAAQ7f,GAAE,aAAcoQ,CAAG,EAC3B0P,EAAa,KAAK,EAAE,OAAO,EAC7BD,GAASC,IACXD,EAAM,QAAQ,KAAO,KAAK,UAAU,CAAE,MAAOC,CAAW,CAAC,GAE3D,KAAK,OAAO1f,GAAO,KAAK,UAAWgQ,CAAG,CAAC,CACzC,EACA,OAAQ,CACN,CACE,KAAM,GAAGvX,EAAa,IAAID,EAAa,WACvC,QAAS,cACX,EACA,CACE,KAAM,QACN,KAAM,GACN,SAAU,CAAC,CAAE,QAAA0gB,CAAQ,IAAM,GAAGA,CAAO,OACrC,QAAQnc,EAAG,CACJA,EAAE,kBACL,KAAK,KAAK,CAEd,CACF,EACA,CACE,KAAM,QACN,KAAM,GACN,QAAS,cACX,EACA,CACE,KAAM,OACN,KAAM,GACN,SAAU,CACR,KAAK,aAAa,EAClB3F,GAAY,KAAK,OAAQ,KAAK,SAAS,EACvC2H,GAAW,KAAK,KAAK,MAAM,CAC7B,CACF,EACA,CACE,KAAM,SACN,KAAM,GACN,SAAU,CACR,KAAK,SAAS,EAAI,CACpB,CACF,EACA,CACE,KAAM,QACN,GAAI,IAAM,SACV,QAAQ,CAAE,QAAA2f,CAAQ,EAAG,CACnB,GAAI,CAAC,KAAK,UAAU,KAAK,GAAG,GAAK,CAAC,KAAK,UACrC,OAEF,IAAIroB,EAAI,GACJqoB,IAAY3L,GAAO,KACrB1c,EAAI,WACKqoB,IAAY3L,GAAO,MAC5B1c,EAAI,OACKqoB,IAAY3L,GAAO,KAC5B1c,EAAI,EACKqoB,IAAY3L,GAAO,MAC5B1c,EAAI,QAEF,CAACA,GACH,KAAK,KAAKA,CAAC,CAEf,CACF,EACA,CACE,KAAM,iBACN,QAAQ0G,EAAG,CACL,KAAK,UAAU,IAGnB,KAAK,UAAY,GACjBA,EAAE,eAAe,EACjB,KAAK,cAAc,KAAK,IAAK,GAAM,EAAK,EACxC,KAAK,UAAYwiB,GAAa,MAC9BnoB,GAAY2F,EAAE,OAAQ,KAAK,SAAS,EACpC,KAAK,MAAM,OAAO,EAAG,EAAG,KAAK,KAAK,EACpC,CACF,EACA,CACE,KAAM,WACN,SAAU,CACR8C,GAAKD,GAAE,KAAK,WAAY,KAAK,GAAG,EAAG,KAAK,QAAQ,EAAE,SAAW,EAAE,EAC/D,QAAS4Q,EAAI,CAAC,KAAK,QAASA,GAAK,KAAK,QAASA,IAC7C,KAAK,SAAS,KAAK,MAAQA,CAAC,CAEhC,CACF,EACA,CACE,KAAM,YACN,SAAU,CACR,KAAK,UAAY,KAAK,OAAO,SAC/B,CACF,EACA,CACE,KAAM,WACN,MAAM,QAAQpf,EAAGuD,EAAM,CACrB,GAAM,CAAE,OAAQgrB,EAAK,KAAAljB,EAAM,IAAAmjB,EAAM,GAAI,OAAAC,EAAQ,MAAAC,GAAQ,CAAC,CAAE,EAAInrB,EAE5D,GADA,KAAK,QAAQA,EAAM,0BAA0B,EACzC,CAACgrB,EACH,OAEF,IAAIvmB,GACE2mB,GAAc,CAClB,gBAAiB,GACjB,MAAO,2CACP,gBAAiB,GACjB,WAAY,GAAG,KAAK,aAAa,EACnC,EACA,GAAItjB,IAAS,SAAWkjB,EAAI,MAAM,+CAA+C,EAAG,CAClF,IAAMK,GAAMC,GAAS,MAAO,CAAE,IAAAN,EAAK,IAAAC,EAAK,GAAGE,EAAM,CAAC,EAClD9jB,GAAGgkB,GAAK,OAAQ,IAAM,KAAK,QAAQrrB,EAAMqrB,EAAG,CAAC,EAC7ChkB,GAAGgkB,GAAK,QAAS,IAAM,KAAK,SAASrrB,CAAI,CAAC,CAC5C,SAAW8H,IAAS,SAAWkjB,EAAI,MAAM,yBAAyB,EAAG,CACnE,IAAMO,GAAQD,GAAS,QAAS,CAC9B,IAAAN,EACA,OAAAE,EACA,SAAU,GACV,YAAa,GACb,WAAY,GAAG,KAAK,aAAa,GACjC,GAAGC,EACL,CAAC,EACD9jB,GAAGkkB,GAAO,iBAAkB,IAAM,KAAK,QAAQvrB,EAAMurB,EAAK,CAAC,EAC3DlkB,GAAGkkB,GAAO,QAAS,IAAM,KAAK,SAASvrB,CAAI,CAAC,CAC9C,SAAW8H,IAAS,UAAYkjB,EAAI,MAAM,qBAAqB,EAC7D,KAAK,QACHhrB,EACAsrB,GAAS,SAAU,CACjB,IAAAN,EACA,gBAAiB,GACjB,MAAO,qBACP,GAAGG,EACL,CAAC,CACH,UACS1mB,GAAUumB,EAAI,MACvB,2FACF,EACE,KAAK,QACHhrB,EACAsrB,GAAS,SAAU,CACjB,IAAK,sBAAsB7mB,GAAQ,CAAC,GAAK,EAAE,cAAcA,GAAQ,CAAC,CAAC,GAAGA,GAAQ,CAAC,EAAI,IAAIA,GAAQ,CAAC,CAAC,GAAK,EAAE,GACxG,MAAO,KACP,OAAQ,KACR,GAAG2mB,GACH,GAAGD,EACL,CAAC,CACH,UACS1mB,GAAUumB,EAAI,MAAM,uCAAuC,EACpE,GAAI,CACF,GAAM,CAAE,OAAAte,GAAQ,MAAAC,EAAM,EAAI,MAAO,MAAM,MACrC,uDAAuD,UACzDqe,CACF,CAAC,GACG,CAAE,YAAa,MAAO,CACxB,GAAG,KAAK,EACR,KAAK,QACHhrB,EACAsrB,GAAS,SAAU,CACjB,IAAK,kCAAkC7mB,GAAQ,CAAC,CAAC,GAAGA,GAAQ,CAAC,EAAI,IAAIA,GAAQ,CAAC,CAAC,GAAK,EAAE,GACtF,MAAAkI,GACA,OAAAD,GACA,GAAG0e,GACH,GAAGD,EACL,CAAC,CACH,CACF,MAAY,CACV,KAAK,SAASnrB,CAAI,CACpB,CAEJ,CACF,CACF,EACA,QAAS,CACP,SAASkF,EAAQ,KAAK,MAAO,CAC3B,IAAMlF,EAAO,KAAK,QAAQkF,CAAK,EAC1B,KAAK,SAASlF,CAAI,EAAE,mBACvBsI,GAAQ,KAAK,IAAK,WAAY,CAACtI,CAAI,CAAC,CAExC,EACA,QAAQkF,EAAQ,KAAK,MAAO,CAC1B,OAAO,KAAK,MAAMzD,GAASyD,EAAO,KAAK,MAAM,CAAC,CAChD,EACA,QAAQlF,EAAMwrB,EAAS,CACrBljB,GAAQ,KAAK,IAAK,aAAc,CAAC,KAAM4C,GAAK,KAAK,SAASlL,CAAI,EAAGwrB,CAAO,CAAC,CAAC,CAC5E,EACA,SAASxrB,EAAM,CACb,OAAO,KAAK,OAAO,KAAK,MAAM,QAAQA,CAAI,CAAC,CAC7C,EACA,SAASA,EAAM,CACb,KAAK,QAAQA,EAAM,8CAA8C,CACnE,EACA,cAAe,CACb,aAAa,KAAK,aAAa,EAC/B,KAAK,cAAgB,WAAW,KAAK,aAAc,KAAK,aAAa,EACrEkC,GAAS,KAAK,IAAK,YAAa,sBAAsB,CACxD,EACA,cAAe,CACbO,GAAY,KAAK,IAAK,YAAa,sBAAsB,CAC3D,CACF,CACF,EACA,SAAS6oB,GAASG,EAAKN,EAAO,CAC5B,IAAMhoB,EAAKwI,GAAS,IAAI8f,CAAG,GAAG,EAC9B,OAAAxoB,GAAKE,EAAIgoB,CAAK,EACPhoB,CACT,CAEA,IAAIuoB,GAAW,CACb,QAASC,GACT,MAAO,CAAE,OAAQ,MAAO,EACxB,KAAM,CAAE,OAAQ,GAAI,EACpB,SAAU,CACR,QAAS,CAAC,CAAE,OAAAlN,CAAO,EAAGpD,IAAQ9O,GAAGkS,EAAQpD,CAAG,CAC9C,EACA,MAAO,CACL,QAAQkD,EAAS,CACf,KAAK,KAAK,EACV,QAAWE,KAAUF,EACfzT,GAAM2T,EAAQ,GAAG,GACnBxb,GAAKwb,EAAQ,OAAQ,QAAQ,CAGnC,CACF,EACA,cAAe,CACb,KAAK,KAAK,CACZ,EACA,OAAQ,CACN,KAAM,QACN,SAAU,CAAC,CAAE,OAAAA,CAAO,IAAM,GAAGA,CAAM,qBACnC,QAAQrW,EAAG,CACJA,EAAE,mBACLA,EAAE,eAAe,EACjB,KAAK,KAAKA,EAAE,OAAO,EAEvB,CACF,EACA,QAAS,CACP,KAAKlD,EAAO,CACV,IAAMwkB,EAAQzpB,GAAS,KAAK,QAAQ,IAAI2rB,EAAM,EAAG,QAAQ,EACzD,GAAI9tB,EAAUoH,CAAK,EAAG,CACpB,GAAM,CAAE,OAAA2mB,CAAO,EAAID,GAAO1mB,CAAK,EAC/BA,EAAQjI,EAAUysB,EAAO,CAAC,CAAE,OAAQsB,CAAI,IAAMa,IAAWb,CAAG,CAC9D,CACA,YAAK,MAAQ,KAAK,OAAS,KAAK,QAAQ,gBAAiB,CAAE,GAAG,KAAK,OAAQ,MAAAtB,CAAM,CAAC,EAClFriB,GAAG,KAAK,MAAM,IAAK,SAAU,IAAM,KAAK,MAAQ,IAAI,EAC7C,KAAK,MAAM,KAAKnC,CAAK,CAC9B,EACA,MAAO,CACL,IAAIpI,EACJ,OAAQA,EAAK,KAAK,QAAU,KAAO,OAASA,EAAG,KAAK,CACtD,CACF,CACF,EACA,SAAS6uB,GAAUG,EAAOC,EAAU,CAC7BD,EAAM,eACTA,EAAM,UAAU,gBAAiBjB,EAAa,EAEhDvtB,EAAOyuB,EAAS,MAAOD,EAAM,UAAU,eAAe,EAAE,QAAQ,KAAK,CACvE,CACA,SAASF,GAAOzoB,EAAI,CAClB,IAAMnD,EAAO,CAAC,EACd,QAAWuf,IAAS,CAAC,OAAQ,UAAW,OAAQ,SAAU,MAAO,OAAO,EACtEvf,EAAKuf,IAAU,OAAS,SAAWA,CAAK,EAAIhc,GAAKJ,EAAIoc,CAAK,EAE5D,OAAAvf,EAAK,MAAQwZ,GAAaxZ,EAAK,KAAK,EAC7BA,CACT,CAEA,IAAIgsB,GAAe,CACjB,OAAQ,CAAC3L,EAAS,EAClB,WAAY,GACZ,KAAM,CAAC,UAAW,QAAQ,EAC1B,KAAM,CACJ,QAAS,GACT,OAAQ,GACR,QAAS,IACT,MAAO,GACP,IAAK,aACL,aAAc,kBACd,SAAU,wBACV,OAAQ,yBACV,EACA,QAAS4L,GACT,SAAU,CACR,WAAY,CAAC,CAAE,IAAA/d,CAAI,IAAM,UAAUA,EAAI,MAAM,aAAa,EAAE,CAAC,CAAC,GAC9D,YAAa,CACX,MAAO,CAAE,QAAS,EAAG,CAAC,KAAK,UAAU,EAAG,CAAC,KAAK,IAAI,YAAa,CACjE,CACF,EACA,SAAU,CACR,IAAMge,EAAW,GAAG,KAAK,YAAY,IAAI,KAAK,GAAG,GAC3CC,EAAgB,QAAQ,KAAK,YAAY,aACzC/f,EAAYnB,GAAE,IAAIihB,CAAQ,IAAIC,CAAa,IAAK,KAAK,SAAS,GAAK9gB,GACvE,KAAK,UACL,eAAe,KAAK,YAAY,IAAI6gB,CAAQ,KAAKC,CAAa,SAChE,EACA,KAAK,OACH9gB,GACEe,EACA,eAAe,KAAK,MAAM,GAAG,KAAK,OAAS,IAAI,KAAK,MAAM,IAAI,KAAK,MAAM,GAAK,EAAE,kCAAkC,KAAK,QAAQ,6BAA6B,KAAK,OAAO,eAC1K,CACF,CACF,EACA,MAAM,WAAY,CAChB,IAAMggB,EAAS3tB,EAAQ2I,GAAI,KAAK,IAAK,KAAK,UAAU,CAAC,EACrD,MAAMgD,GAAW,MAAMhD,GAAI,KAAK,IAAK,KAAK,UAAU,EAAG,CACrD,QAAS,EACT,CAAC,KAAK,UAAU,EAAGglB,CACrB,CAAC,EACG,KAAK,UACP,KAAK,MAAQ,WAAW,KAAK,MAAO,KAAK,OAAO,EAEpD,EACA,OAAQ,CACN,MAAMhkB,EAAG,CACHA,EAAE,OAAO,QAAQ,wBAAwB,GAC3CA,EAAE,eAAe,EAEnB,KAAK,MAAM,CACb,EACA,CAACpE,EAAY,GAAI,CACX,KAAK,OACP,aAAa,KAAK,KAAK,CAE3B,EACA,CAACC,EAAY,GAAI,CACX,KAAK,UACP,KAAK,MAAQ,WAAW,KAAK,MAAO,KAAK,OAAO,EAEpD,CACF,EACA,QAAS,CACP,MAAM,MAAMuhB,EAAW,CACrB,IAAM6G,EAAYlpB,GAAO,CACvB,IAAMiJ,EAAYxH,GAAOzB,CAAE,EAC3BmF,GAAQnF,EAAI,QAAS,CAAC,IAAI,CAAC,EAC3B0I,GAAS1I,CAAE,EACwBiJ,GAAU,cAAc,GACzDP,GAASO,CAAS,CAEtB,EACI,KAAK,OACP,aAAa,KAAK,KAAK,EAEpBoZ,GACH,MAAMpb,GAAW,MAAM,KAAK,IAAK,KAAK,UAAU,EAElDiiB,EAAS,KAAK,GAAG,CACnB,CACF,CACF,EACA,SAASJ,GAAUH,EAAO,CACxBA,EAAM,aAAa,SAAW,SAASjM,EAAO2F,EAAW,CACvDnZ,GAAM,SAAS,KAAOlJ,GAAO,CAC3B,IAAM6oB,EAAeF,EAAM,aAAa3oB,EAAI,cAAc,EACtD6oB,IAAiB,CAACnM,GAASA,IAAUmM,EAAa,QACpDA,EAAa,MAAMxG,CAAS,CAEhC,CAAC,CACH,CACF,CAEA,IAAI8G,GAAQ,CACV,MAAO,CACL,MAAO,OACT,EACA,KAAM,CACJ,MAAO,EACT,EACA,WAAY,CACV,IAAMC,EAAQC,GAAQ,KAAK,MAAO,KAAK,GAAG,EAE1C,GADA,KAAK,WAAa,GACdD,EAAO,CACT,KAAK,SAAW,OAAO,WAAWA,CAAK,EACvC,IAAM3R,EAAU,IAAM,CACpB,KAAK,WAAa,KAAK,SAAS,QAChCtS,GAAQ,KAAK,IAAKI,GAAY,cAAe,GAAO,GAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAC5E,EACA,KAAK,YAAcrB,GAAG,KAAK,SAAU,SAAU,IAAM,CACnDuT,EAAQ,EACR,KAAK,MAAM,QAAQ,CACrB,CAAC,EACDA,EAAQ,CACV,CACF,EACA,cAAe,CACb,IAAI9d,GACHA,EAAK,KAAK,cAAgB,MAAgBA,EAAG,KAAK,IAAI,CACzD,CACF,EACA,SAAS0vB,GAAQxuB,EAAOW,EAAS,CAC/B,GAAIV,EAASD,CAAK,GAChB,GAAIpB,EAAWoB,EAAO,GAAG,EACvBA,EAAQS,EAAQ2I,GAAIzI,EAAS,mBAAmBX,EAAM,MAAM,CAAC,CAAC,EAAE,CAAC,UACxD,MAAMA,CAAK,EACpB,OAAOA,EAGX,OAAOA,GAASG,EAAUH,CAAK,EAAI,eAAeA,CAAK,MAAQ,EACjE,CAEA,SAASyuB,GAAiBtpB,EAAI,CAC5B,OAAOmB,GAAUnB,CAAE,EAAI,KAAK,KAC1B,KAAK,IAAI,EAAG,GAAGoJ,GAAG,WAAYpJ,CAAE,EAAE,IAAKupB,GAAW,CAChD,IAAI5vB,EACJ,QAASA,EAAK4vB,EAAO,iBAAmB,KAAO,OAAS5vB,EAAG,KAAK4vB,CAAM,IAAM,CAC9E,CAAC,CAAC,CACJ,EAAI,CACN,CAEA,IAAMrsB,GAAQ,CACZ,EAAGssB,GACH,EAAGA,GACH,OAAQA,GACR,MAAOA,GACP,MAAOC,GACP,gBAAiBA,GACjB,YAAaA,GACb,KAAMxN,GACN,IAAKA,GACL,SAAUA,GACV,UAAWA,GACX,OAAQA,GACR,SAAUA,GACV,MAAOA,GACP,QAASyN,GACT,OAAQC,GACR,IAAKC,GACL,IAAKA,EACP,EACM,CAAE,KAAAC,EAAK,EAAI,OACjB,IAAIC,GAAW,CACb,OAAQ,CAACX,EAAK,EACd,MAAOY,GAAWF,GAAK3sB,EAAK,EAAG,MAAM,EACrC,KAAM6sB,GAAWF,GAAK3sB,EAAK,EAAG,MAAM,EACpC,SAAU,CACR,MAAM8sB,EAAY9R,EAAK,CACrB,IAAM+R,EAAQ,CAAC,EACf,QAAW1tB,KAAQytB,EACbztB,KAAQW,IAAS,CAAChC,EAAY8uB,EAAWztB,CAAI,CAAC,IAChD0tB,EAAM1tB,CAAI,EAAIytB,EAAWztB,CAAI,EAAE,MAAM,GAGzC,IAAM2I,EAAS,CAAC,EAChB,QAAW3I,KAAQ0tB,EACjB/kB,EAAO3I,CAAI,EAAIW,GAAMX,CAAI,EAAEA,EAAM2b,EAAK+R,EAAM1tB,CAAI,EAAG0tB,CAAK,EAE1D,OAAO/kB,CACT,CACF,EACA,OAAQ,CACN,MAAO,CACL,KAAK,MAAM,CACb,CACF,EACA,QAAS,CACP,OAAQ,CACN,QAAW3I,KAAQ,KAAK,OAAO,CAAC,EAC9B0H,GAAI,KAAK,IAAK1H,EAAM,EAAE,CAE1B,EACA,OAAO+O,EAAS,CACd,IAAM4e,EAAO,CAAC,EACd,QAAW3tB,KAAQ,KAAK,MACtB,KAAK,MAAMA,CAAI,EAAE2tB,EAAM9sB,GAAMkO,CAAO,CAAC,EAEvC,OAAA4e,EAAK,WAAa,OAAO,KAAKA,CAAI,EAAE,IAAI9jB,EAAQ,EAAE,KAAK,GAAG,EACnD8jB,CACT,CACF,CACF,EACA,SAASV,GAAYjtB,EAAMyD,EAAIiqB,EAAO,CACpC,IAAI7e,EAAO+e,GAAQF,CAAK,GAAK,CAAE,EAAG,KAAM,EAAG,KAAM,OAAQ,KAAM,EAAE1tB,CAAI,GAAK,GACtE6tB,EACJ,OAAI7tB,IAAS,KAAOA,IAAS,KAC3BA,EAAO,YAAY/C,EAAQ+C,CAAI,CAAC,GAChC6tB,EAAgBC,GAAS/uB,EAAQA,EAAQ+uB,CAAI,EAAE,QAAQjf,IAAS,KAAO,EAAI,CAAC,CAAC,GACpE7O,IAAS,UAClB6O,EAAO,GACPgf,EAAgBC,GAAS,CACvB,IAAI1wB,GACJ,OAAOwwB,GAAQ,CAACE,CAAI,CAAC,EAAIrf,GAAKqf,EAAM,QAASrqB,EAAI,EAAI,EAAIA,EAAG,UAAWrG,GAAK0wB,EAAK,WAAa,MAAgB1wB,GAAG,KAAK0wB,EAAM,IAAI,EAAK,SAAW,OAAO,EAAE,EAAI/uB,EAAQ+uB,CAAI,CAC3K,GAEEJ,EAAM,SAAW,GACnBA,EAAM,QAAQ1tB,IAAS,QAAU,EAAI,CAAC,EAExC0tB,EAAQK,GAAWL,EAAOG,CAAY,EAC/B,CAACF,EAAM5e,KAAY,CACxB4e,EAAK,UAAY,GAAGA,EAAK,WAAa,EAAE,IAAI3tB,CAAI,IAAIguB,GAASN,EAAO3e,EAAO,CAAC,GAAGF,CAAI,GACrF,CACF,CACA,SAASqe,GAAQltB,EAAMyD,EAAIiqB,EAAO,CAChC,OAAIA,EAAM,SAAW,GACnBA,EAAM,QAAQO,GAAYxqB,EAAIzD,EAAM,EAAE,CAAC,EAEzC0tB,EAAQK,GAAWL,EAAQI,GAASI,GAAWzqB,EAAIqqB,CAAI,CAAC,EACjD,CAACH,EAAM5e,IAAY,CACxB,GAAM,CAAC0F,EAAOkB,GAAKvF,EAAC,EAAI+d,GAAQT,EAAO3e,CAAO,EACxCzQ,GAAQmW,EAAM,IAAI,CAAC7F,GAAQ5M,MAC/B4M,IAAUwB,IAAKuF,GAAI3T,EAAC,EAAI4M,IACjB5M,KAAM,EAAIjD,EAAQ6P,EAAM,EAAI,SAASA,GAAQ,EAAE,EACvD,EAAE,KAAK,GAAG,EACX+e,EAAK3tB,CAAI,EAAI,QAAQ1B,EAAK,GAC5B,CACF,CACA,SAAS4vB,GAAWzqB,EAAI2qB,EAAO,CAC7B,OAAOH,GAAYxqB,EAAI,QAAS2qB,CAAK,EAAE,MAAM,QAAQ,EAAE,MAAM,EAAG,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,EAAG,CAAC,EAAE,IAAIrvB,CAAO,CACvG,CACA,SAAS2gB,GAAS1f,EAAMyD,EAAIiqB,EAAO,CAC7BA,EAAM,SAAW,GACnBA,EAAM,QAAQ,CAAC,EAEjB,IAAM7e,EAAO+e,GAAQF,CAAK,GAAK,CAAE,KAAM,KAAM,IAAK,KAAM,EAAE1tB,CAAI,GAAK,IACnE,OAAAA,EAAO,CAAE,SAAU,UAAW,IAAK,YAAa,EAAEA,CAAI,GAAKA,EAC3D0tB,EAAQK,GAAWL,CAAK,EACjB,CAACC,EAAM5e,IAAY,CACxB,IAAMzQ,GAAQ0vB,GAASN,EAAO3e,CAAO,EACrC4e,EAAK,OAAS,GAAGA,EAAK,QAAU,EAAE,IAAI3tB,CAAI,IAAI1B,GAAQuQ,CAAI,GAC5D,CACF,CACA,SAASse,GAAUntB,EAAMyD,EAAIiqB,EAAO,CAClC,OAAIA,EAAM,SAAW,GACnBA,EAAM,QAAQO,GAAYxqB,EAAIzD,EAAM,EAAE,CAAC,EAEzC0tB,EAAQK,GAAWL,CAAK,EACjB,CAACC,EAAM5e,IAAY,CACxB4e,EAAK3tB,CAAI,EAAIguB,GAASN,EAAO3e,CAAO,CACtC,CACF,CACA,SAASqe,GAASptB,EAAMyD,EAAIiqB,EAAO,CAC7BA,EAAM,SAAW,GACnBA,EAAM,QAAQ,CAAC,EAEjB,IAAM7e,EAAO+e,GAAQF,CAAK,EACpBtrB,EAAS2qB,GAAiBtpB,CAAE,EAKlC,OAJAiqB,EAAQK,GAAWL,EAAM,QAAQ,EAAII,IACnCA,EAAO/uB,EAAQ+uB,CAAI,EACZjf,IAAS,IAAMif,EAAO1rB,EAAS,IAAM0rB,EAC7C,EACIJ,EAAM,KAAK,CAAC,CAACpvB,CAAK,IAAMA,CAAK,GAGlCoJ,GAAIjE,EAAI,kBAAmBrB,CAAM,EAC1B,CAACurB,EAAM5e,KAAY,CACxB4e,EAAK,iBAAmBK,GAASN,EAAO3e,EAAO,CACjD,GALS/N,EAMX,CACA,SAASqsB,GAAartB,EAAMyD,EAAIiqB,EAAO1J,EAAQ,CACzC0J,EAAM,SAAW,GACnBA,EAAM,QAAQ,CAAC,EAEjB,IAAMnqB,EAAOvD,IAAS,MAAQ,SAAW,QACzCgkB,EAAOhkB,CAAI,EAAI+tB,GAAWL,EAAQI,IAASrf,GAAKqf,GAAMvqB,EAAME,CAAE,CAAC,EAC/D,IAAM4qB,EAAU,CAAC,MAAO,KAAK,EAAE,OAAQ/f,IAAUA,MAAS0V,CAAM,EAChE,GAAIqK,EAAQ,SAAW,GAAKruB,IAAS,MACnC,OAAOgB,GAET,GAAIitB,GAAYxqB,EAAI,iBAAkB,EAAE,IAAM,QAC5C,OAAO6qB,GAAkBtuB,EAAMyD,EAAIiqB,EAAO1J,CAAM,EAElD,IAAMuK,GAAY,CAAC,EACnB,QAAWjgB,MAAS+f,EAClBE,GAAUjgB,EAAK,EAAIkgB,GAAiB/qB,EAAI6K,EAAK,EAE/C,OAAOmgB,GAAmBJ,EAASE,GAAWvK,CAAM,CACtD,CACA,SAASsK,GAAkBtuB,EAAMyD,EAAIiqB,EAAO1J,EAAQ,CAClD,IAAM0K,EAAWC,GAA6BlrB,CAAE,EAChD,GAAI,CAACirB,EAAS,MACZ,OAAO1tB,GAET,IAAM4tB,EAAQ,CACZ,MAAOnrB,EAAG,YACV,OAAQA,EAAG,YACb,EACM4qB,GAAU,CAAC,MAAO,KAAK,EAAE,OAAQ/f,IAAUA,MAAS0V,CAAM,EAC1DuK,GAAY,CAAC,EACnB,QAAWjgB,MAAS+f,GAAS,CAC3B,IAAMxI,GAAS7B,EAAO1V,EAAK,EAAE,IAAI,CAAC,CAAChQ,EAAK,IAAMA,EAAK,EAC7CwC,GAAM,KAAK,IAAI,GAAG+kB,EAAM,EACxB9kB,GAAM,KAAK,IAAI,GAAG8kB,EAAM,EACxBgJ,GAAOhJ,GAAO,QAAQ/kB,EAAG,EAAI+kB,GAAO,QAAQ9kB,EAAG,EAC/CkU,GAAOlU,GAAMD,GACnBytB,GAAUjgB,EAAK,EAAI,IAAIugB,GAAO,CAAC5Z,GAAO,IAAM4Z,GAAO/tB,GAAMC,GAAI,KAC7D6tB,EAAMtgB,KAAU,MAAQ,SAAW,OAAO,GAAK2G,EACjD,CACA,IAAM4C,GAAM/V,GAAW,MAAM4sB,EAAUE,CAAK,EAC5C,QAAWtgB,MAAS+f,GAAS,CAC3B,IAAM9qB,GAAO+K,KAAU,MAAQ,SAAW,QACpCwgB,GAAWjX,GAAItU,EAAI,EAAIqrB,EAAMrrB,EAAI,EACvCgrB,GAAUjgB,EAAK,EAAI,OAAOkgB,GAAiB/qB,EAAI6K,EAAK,CAAC,KAAKwgB,EAAQ,SAASP,GAAUjgB,EAAK,CAAC,EAC7F,CACA,IAAMjM,GAAKosB,GAAmBJ,GAASE,GAAWvK,CAAM,EACxD,MAAO,CAAC2J,GAAM5e,KAAY,CACxB1M,GAAGsrB,GAAM5e,EAAO,EAChB4e,GAAK,eAAiB,GAAG9V,GAAI,KAAK,MAAMA,GAAI,MAAM,KAClD8V,GAAK,iBAAmB,WAC1B,CACF,CACA,SAASa,GAAiB/qB,EAAIzD,EAAM,CAClC,OAAOiuB,GAAYxqB,EAAI,uBAAuBzD,EAAK,MAAM,EAAE,CAAC,GAAI,EAAE,CACpE,CACA,SAASyuB,GAAmBJ,EAASE,EAAWvK,EAAQ,CACtD,OAAO,SAAS2J,EAAM5e,EAAS,CAC7B,QAAW/O,KAAQquB,EAAS,CAC1B,IAAM/vB,GAAQ0vB,GAAShK,EAAOhkB,CAAI,EAAG+O,CAAO,EAC5C4e,EAAK,uBAAuB3tB,EAAK,MAAM,EAAE,CAAC,EAAE,EAAI,QAAQuuB,EAAUvuB,CAAI,CAAC,MAAM1B,EAAK,KACpF,CACF,CACF,CACA,IAAMywB,GAAU,CAAC,EACXttB,GAAa,CAAC,EACpB,SAASktB,GAA6BlrB,EAAI,CACxC,IAAM6nB,EAAM5jB,GAAIjE,EAAI,iBAAiB,EAAE,QAAQ,gCAAiC,IAAI,EACpF,GAAIhC,GAAW6pB,CAAG,EAChB,OAAO7pB,GAAW6pB,CAAG,EAEvB,IAAM0D,EAAQ,IAAI,MAClB,OAAI1D,IACF0D,EAAM,IAAM1D,EACR,CAAC0D,EAAM,cAAgB,CAACD,GAAQzD,CAAG,IACrC/iB,GAAKymB,EAAO,aAAc,IAAM,CAC9BvtB,GAAW6pB,CAAG,EAAI2D,GAAaD,CAAK,EACpCpmB,GAAQnF,EAAIuF,GAAY,OAAQ,EAAK,CAAC,CACxC,CAAC,EACD+lB,GAAQzD,CAAG,EAAI,GACR2D,GAAaD,CAAK,GAGtBvtB,GAAW6pB,CAAG,EAAI2D,GAAaD,CAAK,CAC7C,CACA,SAASC,GAAaD,EAAO,CAC3B,MAAO,CACL,MAAOA,EAAM,aACb,OAAQA,EAAM,aAChB,CACF,CACA,SAASjB,GAAWL,EAAOrrB,EAAKtD,EAAS,CACvC,IAAM4J,EAAS,CAAC,EACV,CAAE,OAAAvG,CAAO,EAAIsrB,EACfwB,EAAY,EAChB,QAASltB,EAAI,EAAGA,EAAII,EAAQJ,IAAK,CAC/B,GAAI,CAAC1D,GAAOyQ,EAAO,EAAIxQ,EAASmvB,EAAM1rB,CAAC,CAAC,EAAI0rB,EAAM1rB,CAAC,EAAE,KAAK,EAAE,MAAM,cAAc,EAAI,CAAC0rB,EAAM1rB,CAAC,CAAC,EAkB7F,GAjBA1D,GAAQ+D,EAAG/D,EAAK,EAChByQ,GAAUA,GAAUhQ,EAAQgQ,EAAO,EAAI,IAAM,KACzC/M,IAAM,EACJ+M,KAAY,KACdA,GAAU,EACDA,IACTpG,EAAO,KAAK,CAACrK,GAAO,CAAC,CAAC,EAEf0D,IAAMI,EAAS,IACpB2M,KAAY,KACdA,GAAU,EACDA,KAAY,IACrBpG,EAAO,KAAK,CAACrK,GAAOyQ,EAAO,CAAC,EAC5BA,GAAU,IAGdpG,EAAO,KAAK,CAACrK,GAAOyQ,EAAO,CAAC,EACxBA,KAAY,KACdmgB,YACSA,EAAW,CACpB,IAAMC,GAAcxmB,EAAO3G,EAAIktB,EAAY,CAAC,EAAE,CAAC,EACzC9e,IAAKrB,GAAUogB,KAAgBD,EAAY,GACjD,QAAS/S,GAAI+S,EAAW/S,GAAI,EAAGA,KAC7BxT,EAAO3G,EAAIma,EAAC,EAAE,CAAC,EAAIgT,GAAc/e,IAAK8e,EAAY/S,GAAI,GAExD+S,EAAY,CACd,CACF,CACA,OAAOvmB,CACT,CACA,SAASwlB,GAAQT,EAAO3e,EAAS,CAC/B,IAAMvJ,EAAQjI,EAAUmwB,EAAM,MAAM,CAAC,EAAG,CAAC,CAAC,CAAE0B,CAAa,IAAMrgB,GAAWqgB,CAAa,EAAI,EAC3F,MAAO,CACL1B,EAAMloB,EAAQ,CAAC,EAAE,CAAC,EAClBkoB,EAAMloB,CAAK,EAAE,CAAC,GACbuJ,EAAU2e,EAAMloB,EAAQ,CAAC,EAAE,CAAC,IAAMkoB,EAAMloB,CAAK,EAAE,CAAC,EAAIkoB,EAAMloB,EAAQ,CAAC,EAAE,CAAC,EACzE,CACF,CACA,SAASwoB,GAASN,EAAO3e,EAAS,CAChC,GAAM,CAAC0F,EAAOkB,EAAKvF,CAAC,EAAI+d,GAAQT,EAAO3e,CAAO,EAC9C,OAAO0F,EAAQ,KAAK,IAAIA,EAAQkB,CAAG,EAAIvF,GAAKqE,EAAQkB,EAAM,EAAI,GAChE,CACA,IAAM0Z,GAAS,yBACf,SAASzB,GAAQF,EAAO4B,EAAa,CACnC,IAAIlyB,EACJ,QAAW0wB,KAAQJ,EAAO,CACxB,IAAM9tB,GAASxC,EAAK0wB,EAAK,QAAU,KAAO,OAAS1wB,EAAG,KAAK0wB,EAAMuB,EAAM,EACvE,GAAIzvB,EACF,OAAOA,EAAM,CAAC,CAElB,CACA,OAAO0vB,CACT,CACA,SAASrB,GAAYxqB,EAAIzD,EAAM1B,EAAO,CACpC,IAAMuW,EAAOpR,EAAG,MAAMzD,CAAI,EACpBR,EAAMkI,GAAIA,GAAIjE,EAAIzD,EAAM1B,CAAK,EAAG0B,CAAI,EAC1C,OAAAyD,EAAG,MAAMzD,CAAI,EAAI6U,EACVrV,CACT,CACA,SAASguB,GAAW+B,EAAOjxB,EAAO,CAChC,OAAOixB,EAAM,OAAO,CAAC1rB,EAAM7D,KACzB6D,EAAK7D,CAAI,EAAI1B,EACNuF,GACN,CAAC,CAAC,CACP,CACA,SAASmR,GAAKjG,EAAS4U,EAAQ,CAC7B,OAAOA,GAAU,EAAI,KAAK,IAAI5U,EAAS4U,EAAS,CAAC,EAAI,EAAI,KAAK,IAAI,EAAI5U,EAAS,EAAI4U,CAAM,CAC3F,CAEA,IAAIyG,GAAW,CACb,OAAQ,CAACmD,EAAQ,EACjB,MAAO,CACL,OAAQ,OACR,SAAU,OAEV,OAAQ,OACR,MAAO,OACP,IAAK,MACP,EACA,KAAM,CACJ,OAAQ,GACR,SAAU,EACV,OAAQ,EACR,MAAO,EACP,IAAK,CACP,EACA,SAAU,CACR,OAAQ,CAAC,CAAE,OAAAllB,CAAO,EAAGsT,IAAQ6T,GAAiBnnB,GAAUrC,GAAMqC,EAAQsT,CAAG,GAAKA,CAAG,EACjF,MAAM,CAAE,MAAAlH,CAAM,EAAG,CACf,OAAOhG,GAAKgG,EAAO,SAAU,KAAK,OAAQ,EAAI,CAChD,EACA,IAAI,CAAE,IAAAkB,EAAK,SAAU8Z,CAAU,EAAG,CAChC,OAAOhhB,GACLkH,IAAQ8Z,GAAa,EAAIA,GAAa,MAAQ,GAAGA,CAAS,MAAMA,CAAS,IACzE,SACA,KAAK,OACL,EACF,CACF,CACF,EACA,QAAS,CACPxb,GAAS,EACTkH,GAAS,CAAE,OAAQ,CAAC,CAAE,OAAA9S,CAAO,IAAMA,CAAO,CAAC,EAC3CsS,GAAO,CAAE,OAAQ,CAAC,CAAE,IAAAgB,EAAK,OAAAtT,CAAO,IAAM,CAACsT,EAAKtT,EAAQmN,GAAanN,EAAQ,EAAI,CAAC,CAAE,CAAC,CACnF,EACA,OAAQ,CACN,KAAK,CAAE,QAAA0G,CAAQ,EAAGlH,EAAO,CAIvB,GAHKA,EAAM,IAAI,QAAQ,IACrBkH,EAAU,IAER,CAACnK,GAAU,KAAK,GAAG,EACrB,MAAO,GAET,GAAI,CAAC,KAAK,WACR,OAEF,IAAMiQ,EAAO9F,EACb,OAAAA,EAAUiG,GAAKK,GAAa,KAAK,OAAQ,KAAK,MAAO,KAAK,GAAG,EAAG,KAAK,MAAM,EACpE,CACL,QAAAtG,EACA,MAAO8F,IAAS9F,EAAU,GAAQ,KAAK,OAAOA,CAAO,CACvD,CACF,EACA,MAAM,CAAE,MAAAjF,CAAM,EAAG,CACf,GAAI,CAAC,KAAK,WAAY,CACpB,KAAK,MAAM,EACX,MACF,CACAA,GAASpC,GAAI,KAAK,IAAKoC,CAAK,CAC9B,EACA,OAAQ,CAAC,SAAU,QAAQ,CAC7B,CACF,EACA,SAAS0lB,GAAiB/rB,EAAI,CAC5B,OAAOA,EAAK,cAAeA,EAAKA,EAAK+rB,GAAiBtqB,GAAOzB,CAAE,CAAC,EAAI,SAAS,eAC/E,CAEA,IAAIisB,GAAiB,CACnB,MAAO,CACL,SAAU,QACV,eAAgB,QAChB,cAAe,OACf,YAAa,OACb,eAAgB,MAClB,EACA,KAAM,CACJ,SAAU,GACV,eAAgB,GAChB,cAAe,EACf,YAAa,EACb,eAAgB,CAClB,EACA,QAAS,CACP/U,GAAO,CACL,OAAQ,CAAC,CAAE,IAAAgB,EAAK,eAAAgU,CAAe,IAAM,CAAChU,EAAKgU,CAAc,EACzD,OAAQ,CAAC,CAAE,SAAAvF,CAAS,IAAMA,CAC5B,CAAC,EACDjP,GAAS,CAAE,OAAQ,CAAC,CAAE,SAAAiP,CAAS,IAAMA,CAAS,CAAC,CACjD,EACA,SAAU,CACR,eAAe,CAAE,eAAAuF,CAAe,EAAGhU,EAAK,CACtC,OAAOgU,GAAkB3pB,GAAM2pB,EAAgBhU,CAAG,GAAK,KAAK,IAC9D,CACF,EACA,OAAQ,CACN,MAAO,CACL,GAAI,CAAC,KAAK,SACR,MAAO,GAET,IAAMtT,EAAS,KAAK,eACpB,GAAI,CAACA,EACH,MAAO,GAET,IAAMoM,EAAQhG,GAAK,KAAK,cAAe,SAAUpG,EAAQ,EAAI,EACvDsN,EAAMlH,GAAK,KAAK,YAAa,SAAUpG,EAAQ,EAAI,EACnD0G,EAAUiG,GAAKK,GAAahN,EAAQoM,EAAOkB,CAAG,EAAG,KAAK,cAAc,EAC1E,MAAO,CAAE,SAAU,KAAK,WAAW5G,CAAO,CAAE,CAC9C,EACA,MAAM,CAAE,SAAAqb,CAAS,EAAG,CAClB,GAAM,CAACnF,EAAW2K,CAAY,EAAIxF,EAC5BjF,EAAY,KAAK,cAAcF,EAAY,KAAK,KAAK2K,CAAY,CAAC,EAClE/a,EAAO,KAAK,OAAOoQ,CAAS,EAC5B1G,EAAO,KAAK,OAAO4G,CAAS,EAC5B,CAAE,YAAA0K,GAAa,aAAAC,GAAc,YAAAC,GAAa,cAAAC,EAAc,EAAIC,GAAY,IAAI,EAClF,GAAI,CAAC,KAAK,UACR,QAAWjuB,MAAqB,IAAI,IAAI,CAAC,KAAK,MAAO,KAAK,SAAS,CAAC,EAC7D1E,EAAS,CAAC6nB,EAAWF,CAAS,EAAGjjB,EAAC,IACrC+tB,GAAY,KAAK,OAAO/tB,EAAC,CAAC,EAC1BguB,GAAc,KAAK,OAAOhuB,EAAC,CAAC,GAIlC,IAAMqf,GAAU,KAAK,YAAc4D,GAAa,KAAK,QAAUE,EAC/D,KAAK,IAAM,EACX,KAAK,UAAYF,EACjB,KAAK,MAAQE,EACTtQ,IAAS0J,GACXwR,GAAYlb,CAAI,EAElBgb,GAAYtR,CAAI,EACZ8C,IACFyO,GAAajb,CAAI,EAEnB,KAAK,WAAWA,IAAS0J,EAAO,EAAIqR,EAAc/a,EAAM0J,CAAI,CAC9D,EACA,OAAQ,CAAC,SAAU,QAAQ,CAC7B,EACA,QAAS,CACP,WAAWxP,EAAS,CAClB,IAAMvJ,EAAQuJ,GAAW,KAAK,OAAS,GACvC,MAAO,CAAC,KAAK,MAAMvJ,CAAK,EAAGA,EAAQ,CAAC,CACtC,CACF,CACF,EACA,SAASyqB,GAAY5N,EAAK,CACxB,GAAM,CAAE,eAAA6N,EAAgB,SAAA1S,EAAU,SAAAD,CAAS,EAAI8E,EAC/C,MAAO,CAAE,YAAAwN,EAAa,aAAAC,EAAc,YAAAC,GAAa,cAAAC,EAAc,EAC/D,SAASH,EAAYpsB,GAAI,CACnBX,GAASW,GAAI8Z,CAAQ,IACvBwS,GAAYtsB,EAAE,EACdusB,GAAcvsB,EAAE,GAEbX,GAASW,GAAIysB,CAAc,IAC9BtnB,GAAQnF,GAAI,iBAAkB,CAAC4e,CAAG,CAAC,EACnCzZ,GAAQnF,GAAI,WAAY,CAAC4e,CAAG,CAAC,EAEjC,CACA,SAASyN,EAAarsB,GAAI,CACpBX,GAASW,GAAI+Z,CAAQ,GACvB5U,GAAQnF,GAAI,YAAa,CAAC4e,CAAG,CAAC,CAElC,CACA,SAAS0N,GAAYtsB,GAAI,CAClBX,GAASW,GAAIysB,CAAc,GAC9BL,EAAYpsB,EAAE,EAEZX,GAASW,GAAI+Z,CAAQ,GACvBsS,EAAarsB,EAAE,EAEZX,GAASW,GAAI8Z,CAAQ,IACxB3U,GAAQnF,GAAI,iBAAkB,CAAC4e,CAAG,CAAC,EACnCzZ,GAAQnF,GAAI,WAAY,CAAC4e,CAAG,CAAC,EAEjC,CACA,SAAS2N,GAAcvsB,GAAI,CACrBX,GAASW,GAAI8Z,CAAQ,GACvB3U,GAAQnF,GAAI,aAAc,CAAC4e,CAAG,CAAC,CAEnC,CACF,CAEA,IAAI8N,GAAiB,CACnB,OAAQ,CACN,OAAQ,CACN,GAAI,KAAK,MAAM,QAAU,KAAK,UAAY,KAAK,SAC7C,OAEF,IAAM3qB,EAAQ,KAAK,cAAc,EAC7B,CAAC,CAAC,KAAK,WAAa,KAAK,QAAUA,EACrC,KAAK,KAAKA,CAAK,EAEf,KAAK,WAAW,CAAC,CAErB,EACA,OAAQ,CAAC,QAAQ,CACnB,CACF,EAEI4qB,GAAgB,CAClB,QAAStV,GAAS,CAChB,OAAQ,CAAC,CAAE,OAAAkK,CAAO,IAAMA,EACxB,QAAU3K,GAAaA,EAAS,kBAAkB,CACpD,CAAC,EACD,QAAS,CACP,mBAAoB,CAClB,MAAO,CAAC,EAAG,EAAE,EAAE,IAAKrY,GAAM,KAAK,OAAO,KAAK,SAAS,KAAK,MAAQA,CAAC,CAAC,CAAC,CACtE,CACF,CACF,EAEA,SAASquB,GAAaxb,EAAM0J,EAAM/Q,EAAK,CAAE,OAAA8iB,EAAQ,OAAA3M,EAAQ,KAAAzE,CAAK,EAAG,CAC/D,IAAM5B,GAAOzI,EAAO0b,GAAQ1b,EAAMqK,EAAMoR,CAAM,EAAIC,GAAQhS,EAAMW,EAAMoR,CAAM,EAAIvjB,GAAawR,CAAI,EAAE,MAAQ/Q,EACrGgjB,GAAKjS,EAAOgS,GAAQhS,EAAMW,EAAMoR,CAAM,EAAIhT,GAAOvQ,GAAa8H,CAAI,EAAE,MAAQrH,GAAOxJ,GAAQ,GAAK,GAChG,CAAE,QAAA+c,GAAS,QAAAxW,EAAQ,EAAIqZ,GAAc,EAC3C,MAAO,CACL,IAAApW,EACA,KAAKnD,GAAU0E,GAAU,EAAG+U,GAAQ,CAClC,IAAMxZ,GAASwZ,GAAS,SAAWH,EACnC,OAAAtZ,IAAY,KAAK,MAAMA,GAAWxJ,GAAMkO,GAAS,GAAI,CAAC,CAAC,EACvDrH,GAAIwX,EAAM,qBAAsB,MAAM,EACtC,KAAK,UAAUnQ,EAAO,EACtBrH,GAAIwX,EAAM,qBAAsB,EAAE,EAClCnQ,GAAU8F,EAAO9F,GAAUlO,GAAMkO,GAAS,EAAG,CAAC,EAC9CgV,GAAc,KAAK,UAAU,EAAG,SAAU,CAAE,QAAAhV,GAAS,SAAA1E,GAAU,OAAAC,GAAQ,IAAAkD,CAAI,CAAC,EAC5EqH,GAAQkP,GAAc,KAAK,UAAU,EAAI,EAAG,UAAW,CACrD,QAAS,EAAIhV,GACb,SAAA1E,GACA,OAAAC,GACA,IAAAkD,CACF,CAAC,EACD9C,GAAW,MACTwU,EACA,CAAE,UAAWqE,GAAU,CAACiN,IAAMxsB,GAAQ,GAAK,GAAI,IAAI,CAAE,EACrDqG,GACAC,EACF,EAAE,KAAKC,GAASvJ,EAAI,EACb+f,EACT,EACA,QAAS,CACP,OAAOrW,GAAW,OAAOwU,CAAI,CAC/B,EACA,OAAQ,CACNxX,GAAIwX,EAAM,YAAa,EAAE,CAC3B,EACA,MAAM,QAAQ7U,GAAU0E,GAAU,KAAK,QAAQ,EAAG,CAChD,aAAM,KAAK,OAAO,EACX,KAAK,KAAK1E,GAAU0E,GAAS,EAAI,CAC1C,EACA,UAAUA,GAAS,CACjB,GAAIA,KAAY,KAAK,QAAQ,EAC3B,OAEF,IAAMgW,GAAW,KAAK,YAAY,EAAIvX,GAAOxJ,GAAQ,GAAK,GAC1D0D,GACEwX,EACA,YACAqE,GACE1iB,GACE,CAAC2vB,IAAMzL,GAAWA,GAAWhW,IAC7B,CAAC0hB,GAASvR,CAAI,EACdnS,GAAamS,CAAI,EAAE,KACrB,GAAKlb,GAAQ,GAAK,GAClB,IACF,CACF,EACA,IAAM8a,GAAU,KAAK,WAAW,EAC1B4R,GAAS,KAAK,UAAU,EACxBC,GAAU,KAAK,UAAU,EAAI,EACnC5hB,GAAU8F,EAAOhU,GAAMkO,GAAS,GAAI,CAAC,EAAI,EACzC,QAAWuN,MAAShX,GAAS4Z,CAAI,EAAG,CAClC,IAAM0R,GAAWtzB,EAASwhB,GAASxC,EAAK,EAClCuU,GAAOvU,KAAUoU,GACjBI,GAAQxU,KAAUqU,GAClBI,GAAcF,IAAQ,CAACC,KAAUF,IAAYpjB,GAAOxJ,GAAQ,GAAK,KAAO,GAAKgtB,GAAU1U,GAAO4C,CAAI,EAAI8R,GAAUnc,GAAQ0J,CAAI,GAClIwF,GAAczH,GAAO,gBAAgByU,GAAc,KAAO,KAAK,GAAI,CACjE,IAAAvjB,EACA,QAASsjB,GAAQ,EAAI/hB,GAAU8hB,GAAO9hB,GAAU6hB,GAAW,EAAI,CACjE,CAAC,CACH,CACF,EACA,SAAU,CACR,OAAO,KAAK,KACT,IAAI,UAAUlpB,GAAIwX,EAAM,WAAW,CAAC,EAAE,KAAOlb,GAAQ,GAAK,GAAKsZ,KAASkT,GAAKlT,GAChF,CACF,EACA,aAAc,CACZ,OAAO,KAAK,IAAIkT,GAAKlT,EAAI,CAC3B,EACA,UAAUrS,GAAM,GAAO,CACrB,IAAI6T,GAAU,KAAK,WAAW,EAC1BmS,GAAcC,GAAOhS,EAAMqR,GAAQhS,GAAQ1J,EAAMqK,EAAMoR,CAAM,CAAC,EAClE,GAAIrlB,GAAK,CACP,IAAMkmB,GAAOrS,GACbA,GAAUmS,GACVA,GAAcE,EAChB,CACA,OAAOF,GAAY1zB,EAAU0zB,GAAcxtB,IAAO,CAACnG,EAASwhB,GAASrb,EAAE,CAAC,CAAC,CAC3E,EACA,YAAa,CACX,OAAOytB,GAAOhS,EAAMqR,GAAQ1b,GAAQ0J,EAAMW,EAAMoR,CAAM,CAAC,CACzD,CACF,CACF,CACA,SAASC,GAAQ9sB,EAAIyb,EAAMoR,EAAQ,CACjC,IAAM5iB,EAAOsjB,GAAUvtB,EAAIyb,CAAI,EAC/B,OAAOoR,EAAS5iB,EAAO0jB,GAAS3tB,EAAIyb,CAAI,EAAI,KAAK,IAAIxR,EAAM2jB,GAAOnS,CAAI,CAAC,CACzE,CACA,SAASmS,GAAOnS,EAAM,CACpB,OAAO,KAAK,IAAI,EAAGuR,GAASvR,CAAI,EAAInS,GAAamS,CAAI,EAAE,KAAK,CAC9D,CACA,SAASuR,GAASvR,EAAM1Z,EAAO,CAC7B,OAAOrF,GAAMmF,GAAS4Z,CAAI,EAAE,MAAM,EAAG1Z,CAAK,EAAI/B,GAAOsJ,GAAatJ,CAAE,EAAE,KAAK,CAC7E,CACA,SAAS2tB,GAAS3tB,EAAIyb,EAAM,CAC1B,OAAOnS,GAAamS,CAAI,EAAE,MAAQ,EAAInS,GAAatJ,CAAE,EAAE,MAAQ,CACjE,CACA,SAASutB,GAAUvtB,EAAIyb,EAAM,CAC3B,OAAOzb,IAAOsD,GAAStD,CAAE,EAAE,MAAQO,GAAQ+I,GAAatJ,CAAE,EAAE,MAAQsJ,GAAamS,CAAI,EAAE,MAAQ,KAAOlb,GAAQ,GAAK,IAAM,CAC3H,CACA,SAASktB,GAAOhS,EAAMoS,EAAU,CAC9BA,GAAY,EACZ,IAAMC,EAAYxkB,GAAamS,CAAI,EAAE,MAC/BsS,EAAYF,EAAWC,EAAY,EACzC,OAAOjsB,GAAS4Z,CAAI,EAAE,OAAQ5C,GAAU,CACtC,IAAMmV,EAAYT,GAAU1U,EAAO4C,CAAI,EACjCwS,GAAaD,EAAY,KAAK,IAAI1kB,GAAauP,CAAK,EAAE,MAAOiV,CAAS,EAC5E,OAAOE,GAAaH,GAAYI,IAAcF,CAChD,CAAC,CACH,CAEA,IAAIG,GAAS,CACX,OAAQ,CAAClZ,GAAOgS,GAAQ0F,GAAgBT,GAAgBU,EAAa,EACrE,MAAO,CACL,OAAQ,QACR,KAAM,QACN,OAAQ,MACV,EACA,KAAM,CACJ,OAAQ,GACR,KAAM,GACN,SAAU,iBACV,QAAS,mBACT,OAAQ,iBACR,aAAc,sBACd,OAAQ,MACR,aAAAC,EACF,EACA,SAAU,CACR,OAAO,CAAE,OAAAluB,CAAO,EAAG,CACjB,OAAOA,GAAUyvB,GAAS,KAAK,KAAM,KAAK,MAAM,CAClD,EACA,UAAW,CACT,GAAI,CAAC,KAAK,QAAU,KAAK,QAAU,CAAC,KAAK,KACvC,OAAO,KAAK,OAAS,EAEvB,GAAI,KAAK,OACP,OAAO/xB,GAAK,KAAK,IAAI,EAEvB,IAAIgyB,EAAM,EACJ9wB,EAAMswB,GAAO,KAAK,IAAI,EACtB7rB,EAAQjI,EAAU,KAAK,OAASkG,GAAO,CAC3C,GAAIouB,GAAO9wB,EAAM,KACf,MAAO,GAET8wB,GAAO9kB,GAAatJ,CAAE,EAAE,KAC1B,CAAC,EACD,MAAO,CAAC+B,EAAQA,EAAQ,KAAK,OAAS,CACxC,EACA,KAAK,CAAE,KAAMssB,CAAQ,EAAG,CACtB,GAAI,CAACA,GAAW,KAAK,SACnB,OAEF,IAAIpkB,EAAO,EACLqkB,EAAO,CAAC,EACR9kB,EAAQF,GAAa,KAAK,IAAI,EAAE,MACtC,QAAS/K,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAAK,CACpC,IAAMgwB,EAAajlB,GAAa,KAAK,OAAO/K,CAAC,CAAC,EAAE,MAC5C0L,EAAOskB,EAAa/kB,IACtBS,EAAO,GAEL,KAAK,OACHA,EAAOT,EAAQ,GAAKS,EAAOskB,EAAajlB,GAAa,KAAK,OAAOhL,GAASC,EAAI,EAAG,KAAK,MAAM,CAAC,CAAC,EAAE,MAAQ,EAAIiL,EAAQ,IACtH8kB,EAAK,KAAK/vB,CAAC,EACX0L,EAAOT,EAAQ,EAAI+kB,EAAa,GAEzBtkB,IAAS,GAClBqkB,EAAK,KAAK,KAAK,IAAI/vB,EAAG,KAAK,QAAQ,CAAC,EAEtC0L,GAAQskB,CACV,CACA,GAAID,EAAK,OACP,OAAOA,CAEX,EACA,mBAAoB,CAClB,MAAO,CACL,OAAQ,KAAK,OACb,KAAM,KAAK,IACb,CACF,EACA,QAAS,CACP,OAAOzsB,GAAS,KAAK,IAAI,EAAE,OAAOV,EAAS,CAC7C,CACF,EACA,WAAY,CACVxB,GAAY,KAAK,IAAK,KAAK,aAAc,CAACmI,GAAE,IAAI,KAAK,YAAY,GAAI,KAAK,GAAG,CAAC,CAChF,EACA,QAASoP,GAAO,CACd,OAAQ,CAAC,CAAE,OAAAqK,EAAQ,IAAArJ,CAAI,IAAM,CAACA,EAAK,GAAGqJ,CAAM,CAC9C,CAAC,EACD,OAAQ,CACN,OAAQ,CACN,QAAWvhB,KAAM,KAAK,SAAU,CAC9B,IAAM+B,EAAQ3G,EAASgF,GAAKJ,EAAI,KAAK,QAAQ,CAAC,EAC1C+B,IAAU,KACZ/B,EAAG,OAAS,CAAC,KAAK,UAAY+B,EAAQ,KAAK,UAAY,KAAK,MAAQ,CAAClI,EAAS,KAAK,KAAMkI,CAAK,EAElG,CACA,KAAK,QAAQ,EACR,KAAK,UACR,KAAK,WAAW,CAAC,EAEnB,KAAK,oBAAoB,CAC3B,EACA,OAAQ,CAAC,QAAQ,CACnB,EACA,OAAQ,CACN,eAAekD,EAAG,CACZ,CAAC,KAAK,UAAY,KAAK,MAAQ,KAAK,MAAM,OAAS,GAAK,CAACpL,EAAS,KAAK,KAAM,KAAK,KAAK,IACzF,KAAK,MAAQ,KAAK,cAAc,GAElC,IAAM2X,EAAO,KAAK,IAChB,KAAK,MAAQ,KAAK,WAAa,KAAK,IAAM,GAAK,KAAK,MAAQ,KAAK,WAAa,KAAK,IAAM,GAAK,KAAK,MAAQ,KAAK,WAAa,KAAK,SAAW,GAAK,KAAK,IAAM,EAC/J,EACA,GAAI,CAAC,KAAK,UAAYA,EAAO,EAAG,CAC9B,QAASjT,EAAI,EAAGA,EAAIiT,EAAMjT,IACxB,KAAK,MAAM,OAAO,EAAG,EAAG,KAAK,IAAM,EAAI,OAAS,UAAU,EAE5D0G,EAAE,eAAe,EACjB,MACF,CACA,IAAMlD,EAAQ,KAAK,IAAM,GAAK,CAAC,KAAK,OAAO,KAAK,SAAS,EAAI,KAAK,MAAQ,KAAK,UACzEysB,EAAWxB,GAAS,KAAK,IAAI,EAAI,KAAK,OAC5C,KAAK,SAAW/F,GAAQuH,EAAW,KAAK,QAAQ,GAAKllB,GAAa,KAAK,OAAOvH,CAAK,CAAC,EAAE,MAAQysB,GAC9F,KAAK,QAAQ,CACf,EACA,UAAW,CACL,CAAC,KAAK,WACRzvB,GAAS,KAAK,iBAAiB,EAAE,UAAU,EAAG,KAAK,SAAS,EAE9D,KAAK,oBAAoB,KAAK,SAAS,CACzC,EACA,WAAY,CACV,KAAK,oBAAoB,CAC3B,CACF,EACA,QAAS,CACP,SAAU,CACR,GAAI,KAAK,OAAQ,CACfkF,GAAI,KAAK,OAAQ,QAAS,EAAE,EAC5B,MACF,CACA,IAAMlC,EAAQ,KAAK,IAAM,GAAK,KAAK,OAAO,KAAK,SAAS,EAAI,KAAK,UAAY,KAAK,MAQlF,GAPA,KAAK,OAAO,QACV,CAAC8W,EAAOta,IAAM0F,GACZ4U,EACA,QACA,KAAK,IAAM,GAAKta,EAAIwD,EAAQ,EAAI,KAAK,IAAM,GAAKxD,GAAK,KAAK,MAAQ,GAAK,EACzE,CACF,EACI,CAAC,KAAK,QAAU,CAAC,KAAK,OACxB,OAEF,IAAMuc,EAAO,KAAK,OAAO/Y,CAAK,EAC1ByH,EAAQF,GAAa,KAAK,IAAI,EAAE,MAAQ,EAAIA,GAAawR,CAAI,EAAE,MAAQ,EACvEpC,EAAI,EACR,KAAOlP,EAAQ,GAAG,CAChB,IAAMilB,EAAa,KAAK,SAAS,EAAE/V,EAAI3W,EAAOA,CAAK,EAC7C8W,EAAQ,KAAK,OAAO4V,CAAU,EACpCxqB,GAAI4U,EAAO,QAAS4V,EAAa1sB,EAAQ,GAAK,EAAE,EAChDyH,GAASF,GAAauP,CAAK,EAAE,KAC/B,CACF,EACA,oBAAoB6V,EAAe,KAAK,MAAO,CAC7C,IAAIrT,EAAU,KAAK,iBAAiBqT,CAAY,EAAE,WAAW,EACzD,KAAK,SAAW,QAClBrT,EAAU,CAAC,KAAK,OAAO,KAAK,cAAcqT,CAAY,CAAC,CAAC,GAE1D,IAAMC,EAAgB,CACpB,KAAK,UACL,CAAC,KAAK,MAAQ90B,EAAS,KAAK,KAAMyB,EAAQ,KAAK,KAAK,CAAC,EAAI,KAAK,aAAe,EAC/E,EACA,QAAWud,KAAS,KAAK,OAAQ,CAC/B,IAAMgO,EAAShtB,EAASwhB,EAASxC,CAAK,EACtClZ,GAAYkZ,EAAO8V,EAAe9H,CAAM,EACxC/mB,GAAK+Y,EAAO,cAAe,CAACgO,CAAM,EAClC,QAAW+H,KAAaxlB,GAAG7H,GAAcsX,CAAK,EACvChgB,EAAO+1B,EAAW,WAAW,IAChCA,EAAU,UAAY9uB,GAAK8uB,EAAW,UAAU,GAElD9uB,GAAK8uB,EAAW,WAAY/H,EAAS+H,EAAU,UAAY,EAAE,CAEjE,CACF,EACA,cAAc7sB,EAAQ,KAAK,MAAOyf,EAAY,KAAK,UAAW,CAE5D,GADAzf,EAAQ,KAAK,SAASA,EAAOyf,CAAS,EAClC,CAAC,KAAK,KACR,OAAOzf,EAET,IAAIqP,EACJ,EAAG,CACD,GAAIvX,EAAS,KAAK,KAAMkI,CAAK,EAC3B,OAAOA,EAETqP,EAAOrP,EACPA,EAAQ,KAAK,SAASA,EAAQ,KAAK,IAAKyf,CAAS,CACnD,OAASzf,IAAUqP,GACnB,OAAOrP,CACT,EACA,mBAAoB,CAClB,GAAM,CAAE,MAAAyH,CAAM,EAAIF,GAAa,KAAK,IAAI,EAClCW,EAAO,CAACT,EACRoD,EAAQpD,EAAQ,EAChB+kB,EAAajlB,GAAa,KAAK,OAAO,KAAK,KAAK,CAAC,EAAE,MACnD0kB,EAAY,KAAK,OAASxkB,EAAQ,EAAI+kB,EAAa,EAAI,EACvDhN,EAAyB,IAAI,IACnC,QAAWhjB,KAAK,CAAC,GAAI,CAAC,EAAG,CACvB,IAAIswB,GAAcb,GAAazvB,GAAI,EAAIgwB,EAAa,GAChD7V,GAAI,EACR,EAAG,CACD,IAAMG,GAAQ,KAAK,OAAO,KAAK,SAAS,KAAK,MAAQta,GAAIma,KAAMna,EAAC,CAAC,EACjEswB,IAAevlB,GAAauP,EAAK,EAAE,MAAQta,GAC3CgjB,EAAO,IAAI1I,EAAK,CAClB,OAAS,KAAK,OAASH,IAAKmW,GAAc5kB,GAAQ4kB,GAAcjiB,EAClE,CACA,OAAO,MAAM,KAAK2U,CAAM,CAC1B,EACA,WAAWjW,EAAS,CAClB,IAAIvJ,EAAQ,GACN+sB,EAAa,KAAK,OAAS9B,GAAS,KAAK,IAAI,GAAK1jB,GAAa,KAAK,OAAO,CAAC,CAAC,EAAE,MAAQ,EAAIA,GAAalN,GAAK,KAAK,MAAM,CAAC,EAAE,MAAQ,GAAK4wB,GAAS,KAAK,KAAM,KAAK,QAAQ,EAC3Ktb,EAAOpG,EAAUwjB,EACjB3C,EAAe,EACnB,EAAG,CACD,IAAMoC,EAAajlB,GAAa,KAAK,OAAO,EAAEvH,CAAK,CAAC,EAAE,MAChDgtB,GAAY,KAAK,OAASR,EAAa,EAAIjlB,GAAa,KAAK,OAAOvH,EAAQ,CAAC,CAAC,EAAE,MAAQ,EAAIwsB,EAClGpC,EAAeza,EAAOqd,GAAY,EAClCrd,GAAQqd,EACV,OAASrd,GAAQ,GAAK3P,EAAQ,KAAK,UACnC,MAAO,CAACA,EAAOoqB,CAAY,CAC7B,CACF,CACF,EACA,SAASgC,GAAS1S,EAAMoR,EAAQ,CAC9B,GAAI,CAACpR,GAAQA,EAAK,OAAS,EACzB,MAAO,GAET,GAAM,CAAE,MAAOqS,CAAU,EAAIxkB,GAAamS,CAAI,EAC9C,GAAI,CAACoR,EACH,OAAO,KAAK,KAAKG,GAASvR,CAAI,CAAC,EAAI,KAAK,MAAMqS,EAAYkB,GAAcvT,CAAI,CAAC,EAE/E,IAAM8F,EAAS1f,GAAS4Z,CAAI,EACtBwT,EAAW,KAAK,MAAMnB,EAAY,CAAC,EACzC,QAAW/rB,KAASwf,EAAQ,CAC1B,IAAM1I,GAAQ0I,EAAOxf,CAAK,EACpBwsB,GAAajlB,GAAauP,EAAK,EAAE,MACjCqW,GAA+B,IAAI,IAAI,CAACrW,EAAK,CAAC,EAChDrH,GAAO,EACX,QAAWjT,KAAK,CAAC,GAAI,CAAC,EAAG,CACvB,IAAI0L,GAAOskB,GAAa,EACpB7V,GAAI,EACR,KAAOzO,GAAOglB,GAAU,CACtB,IAAME,GAAY5N,EAAOjjB,GAAS,CAACyD,EAAQxD,GAAIma,KAAMna,GAAGgjB,CAAM,CAAC,EAC/D,GAAI2N,GAAa,IAAIC,EAAS,EAC5B,MAAO,GAETllB,IAAQX,GAAa6lB,EAAS,EAAE,MAChCD,GAAa,IAAIC,EAAS,CAC5B,CACA3d,GAAO,KAAK,IACVA,GACA+c,GAAa,EAAIjlB,GAAaiY,EAAOjjB,GAAS,CAACyD,EAAQxD,GAAGgjB,CAAM,CAAC,CAAC,EAAE,MAAQ,GAAKtX,GAAOglB,EAC1F,CACF,CACA,GAAI,KAAK,MAAMzd,EAAI,EAAI9U,GACrB6kB,EAAO,OAAQ6N,IAAW,CAACF,GAAa,IAAIE,EAAM,CAAC,EAClDA,IAAW9lB,GAAa8lB,EAAM,EAAE,KACnC,EACE,MAAO,EAEX,CACA,MAAO,EACT,CACA,SAASJ,GAAcvT,EAAM,CAC3B,OAAO,KAAK,IAAI,EAAG,GAAG5Z,GAAS4Z,CAAI,EAAE,IAAKzb,GAAOsJ,GAAatJ,CAAE,EAAE,KAAK,CAAC,CAC1E,CAEA,IAAIqvB,GAAiB,CACnB,OAAQ,CAACvF,EAAQ,EACjB,eAAgB,CACd,KAAK,KAAO,KAAK,IAAI,QAAQ,IAAI,KAAK,SAAS,GAAG,QAAQ,WAAY,OAAO,CAAC,MAAM,CACtF,EACA,cAAe,CACb,KAAK,KAAO,IACd,EACA,OAAQ,CACN,CACE,KAAM,iBACN,KAAM,GACN,GAAI,CAAC,CAAE,KAAAjtB,CAAK,IAAMA,EAClB,QAAQ,CAAE,KAAA8H,EAAM,OAAQ,CAAE,QAAA2G,EAAS,SAAA1E,EAAU,OAAAC,EAAQ,IAAAkD,CAAI,CAAE,EAAG,CAC5D+B,GAAQ,KAAK,IAAM,CACjB,GAAI,CAAC,KAAK,WACR,OAEF,IAAMwN,EAAY,KAAK,OAAOgW,GAAkB3qB,EAAMoF,EAAKuB,CAAO,CAAC,EAC7D+N,GAAU,KAAK,OAAO+T,GAAKzoB,CAAI,EAAI,GAAMoF,EAAM,EAAI,EAAI,CAAC,EAC9D+B,GAAQ,MAAM,IAAM,CAClB7H,GAAI,KAAK,IAAKqV,CAAS,EACvBrS,GAAW,MAAM,KAAK,IAAKoS,GAASzS,EAAUC,CAAM,EAAE,MAAMtJ,EAAI,CAClE,CAAC,CACH,CAAC,CACH,CACF,EACA,CACE,KAAM,mCACN,KAAM,GACN,GAAI,CAAC,CAAE,KAAAV,CAAK,IAAMA,EAClB,SAAU,CACRoK,GAAW,OAAO,KAAK,GAAG,CAC5B,CACF,EACA,CACE,KAAM,mCACN,KAAM,GACN,GAAI,CAAC,CAAE,KAAApK,CAAK,IAAMA,EAClB,QAAQ,CAAE,KAAA8H,EAAM,OAAQ,CAAE,QAAA2G,EAAS,IAAAvB,CAAI,CAAE,EAAG,CAC1C+B,GAAQ,KAAK,IAAM,CACjB,GAAI,CAAC,KAAK,WAAY,CACpB,KAAK,MAAM,EACX,MACF,CACA,IAAM5O,EAAQ,KAAK,OAAOoyB,GAAkB3qB,EAAMoF,EAAKuB,CAAO,CAAC,EAC/DQ,GAAQ,MAAM,IAAM7H,GAAI,KAAK,IAAK/G,CAAK,CAAC,CAC1C,CAAC,CACH,CACF,CACF,CACF,EACA,SAASkwB,GAAKzoB,EAAM,CAClB,OAAO/K,EAAS+K,EAAM,IAAI,CAC5B,CACA,SAAS2qB,GAAkB3qB,EAAMoF,EAAKuB,EAAS,CAC7C,OAAAA,GAAW,EACJ8hB,GAAKzoB,CAAI,EAAIoF,EAAM,EAAIuB,EAAU,EAAIA,CAC9C,CAEA,IAAIikB,GAAa,CACf,GAAG1P,GACH,KAAM,CACJ,MAAO,CACL,MAAO,CAAC,CAAE,QAAS,EAAG,OAAQ,CAAE,EAAG,CAAE,OAAQ,EAAG,CAAC,CACnD,EACA,QAAQphB,EAAS,CACf,MAAO,GAAIwF,GAAIxF,EAAS,SAAS,CACnC,EACA,UAAU6M,EAAS,CACjB,MAAO,CAAC,CAAE,QAAS,EAAIA,EAAS,OAAQ,CAAE,EAAG,CAAE,OAAQ,EAAG,CAAC,CAC7D,CACF,EACA,MAAO,CACL,MAAO,CACL,MAAO,CAAC,CAAE,QAAS,EAAG,UAAW0U,GAAQ,EAAI,EAAG,EAAG,OAAQ,CAAE,EAAG,CAAE,OAAQ,EAAG,CAAC,CAChF,EACA,QAAQvhB,EAAS,CACf,MAAO,GAAIwF,GAAIxF,EAAS,SAAS,CACnC,EACA,UAAU6M,EAAS,CACjB,MAAO,CACL,CAAE,QAAS,EAAIA,EAAS,UAAW0U,GAAQ,EAAI,GAAM1U,CAAO,EAAG,OAAQ,CAAE,EACzE,CAAE,OAAQ,EAAG,CACf,CACF,CACF,EACA,KAAM,CACJ,KAAKvB,EAAK,CACR,OAAOA,EAAM,EAAI,CACf,CAAE,UAAW+V,GAAU,EAAE,EAAG,OAAQ,EAAG,EACvC,CAAE,UAAWA,GAAU,EAAG,OAAQ,CAAE,CACtC,EAAI,CACF,CAAE,UAAWA,GAAU,IAAI,EAAG,OAAQ,CAAE,EACxC,CAAE,UAAWA,GAAU,EAAG,OAAQ,EAAG,CACvC,CACF,EACA,QAAQrhB,EAASqc,EAAM/Q,EAAK,CAC1B,OAAOA,EAAM,EAAI,EAAIgW,GAAWjF,CAAI,EAAIiF,GAAWthB,CAAO,CAC5D,EACA,UAAU6M,EAASvB,EAAK,CACtB,OAAOA,EAAM,EAAI,CACf,CAAE,UAAW+V,GAAU,GAAKxU,CAAO,EAAG,OAAQ,EAAG,EACjD,CAAE,UAAWwU,GAAU,MAAQ,EAAIxU,EAAQ,EAAG,OAAQ,CAAE,CAC1D,EAAI,CACF,CAAE,UAAWwU,GAAU,CAACxU,EAAU,GAAG,EAAG,OAAQ,CAAE,EAClD,CAAE,UAAWwU,GAAU,IAAM,EAAIxU,EAAQ,EAAG,OAAQ,EAAG,CACzD,CACF,CACF,EACA,KAAM,CACJ,KAAKvB,EAAK,CACR,OAAOA,EAAM,EAAI,CACf,CAAE,UAAW+V,GAAU,GAAG,EAAG,OAAQ,CAAE,EACvC,CAAE,UAAWA,GAAU,EAAG,OAAQ,EAAG,CACvC,EAAI,CACF,CAAE,UAAWA,GAAU,GAAG,EAAG,OAAQ,EAAG,EACxC,CAAE,UAAWA,GAAU,EAAG,OAAQ,CAAE,CACtC,CACF,EACA,QAAQrhB,EAASqc,EAAM/Q,EAAK,CAC1B,OAAOA,EAAM,EAAI,EAAIgW,GAAWjF,CAAI,EAAIiF,GAAWthB,CAAO,CAC5D,EACA,UAAU6M,EAASvB,EAAK,CACtB,OAAOA,EAAM,EAAI,CACf,CAAE,UAAW+V,GAAUxU,EAAU,GAAG,EAAG,OAAQ,CAAE,EACjD,CAAE,UAAWwU,GAAU,KAAO,EAAIxU,EAAQ,EAAG,OAAQ,EAAG,CAC1D,EAAI,CACF,CAAE,UAAWwU,GAAU,IAAMxU,CAAO,EAAG,OAAQ,EAAG,EAClD,CAAE,UAAWwU,GAAU,KAAO,EAAIxU,EAAQ,EAAG,OAAQ,CAAE,CACzD,CACF,CACF,CACF,EAEIkkB,GAAY,CACd,OAAQ,CAACxa,GAAOuS,GAAWmF,GAAgBT,GAAgBU,EAAa,EACxE,MAAO,CACL,MAAO,OACP,UAAW,OACX,UAAW,MACb,EACA,KAAM,CACJ,MAAO,OACP,UAAW,OACX,UAAW,OACX,QAAS,sBACT,SAAU,oBACV,OAAQ,oBACR,WAAA4C,EACF,EACA,MAAO,CACL,KAAK9T,EAAM,CACTxX,GAAIwX,EAAM,CACR,YAAa,KAAK,MAAQ,KAAK,MAAM,QAAQ,IAAK,GAAG,EAAI,OACzD,UAAW,KAAK,UAChB,UAAW,KAAK,UAChB,SAAU,OACV,SAAU,MACZ,CAAC,CACH,CACF,EACA,QAAS,CACP,mBAAoB,CAClB,MAAO,CAAC,EAAG,EAAE,EAAE,IAAKld,GAAM,KAAK,OAAO,KAAK,SAAS,KAAK,MAAQA,CAAC,CAAC,CAAC,CACtE,CACF,CACF,EAEIkxB,GAAW,CACb,OAAQ,CAACza,GAAOgG,EAAO,EACvB,MAAO,CACL,MAAO,OACP,UAAW,OACX,QAAS,OACT,eAAgB,OAChB,QAAS,OACT,aAAc,OACd,QAAS,OACT,UAAW,OACX,SAAU,OACV,UAAW,OACX,OAAQ,MACV,EACA,KAAM,CACJ,MAAO,GACP,UAAW,EACX,QAAS,mBACT,eAAgB,0BAChB,QAAS,mBACT,aAAc,UACd,QAAS,cACT,UAAW,qBACX,SAAU,oBACV,UAAW,GACX,OAAQ,GACR,IAAK,CAAC,CACR,EACA,OAAQ,CACN,KAAMta,GACN,QAAS,GACT,QAAS,MACX,EACA,SAAU,CACR,OAAQ,CAACpH,EAAG4e,KAASA,EAAI,SAAW,CAACA,CAAG,GAAG,CAAC,EAC5C,OAAQ,CACN,OAAOrW,GAAS,KAAK,MAAM,CAC7B,EACA,SAAU,CACR,MAAO,CAAC,KAAK,MAAM,MACrB,EACA,QAAQ,CAAE,OAAA6tB,CAAO,EAAGxX,EAAK,CACvB,OAAOwX,EAAStmB,GAAGsmB,EAAQxX,CAAG,EAAI,KAAK,KACzC,CACF,EACA,MAAO,CACL,QAAQrQ,EAAO,CACblI,GAAY,KAAK,OAAQ,KAAK,SAAUkI,CAAK,CAC/C,EACA,QAAQ8nB,EAASve,EAAM,CACrBnN,GAAImN,EAAM,CAAE,YAAa,GAAI,WAAY,EAAG,CAAC,EAC7CnN,GAAI0rB,EAAS,CAAE,YAAa,OAAQ,WAAY,MAAO,CAAC,CAC1D,CACF,EACA,OAAQ,CACN,MAAMvvB,EAAM,CACV,GAAI,CAAC,KAAK,MAAQ,CAACqB,GAAO,KAAK,WAAW,EACxC,OAEF,GAAM,CACJ,IAAK,CAAE,EAAAsE,EAAG,EAAAC,CAAE,EACZ,OAAQ,CAAE,UAAA6J,EAAW,WAAAC,CAAW,EAChC,YAAA8f,CACF,EAAI,KACJ3rB,GAAI,KAAK,KAAM,CACb,IAAK+B,EAAI6J,EACT,KAAM9J,EAAI+J,CACZ,CAAC,EACD,IAAM2f,GAAW,KAAK,YAAY,SAAS,iBAAiB1pB,EAAGC,CAAC,CAAC,EACjE,GAAI,CAACypB,GACH,OAEF,GAAM,CAAE,MAAAlJ,EAAM,EAAIkJ,GAClB,GAAIlJ,GAAM,KAAKtf,GAAW,UAAU,EAClC,OAEF,IAAMrC,GAASirB,GAAWtJ,GAAO,CAAE,EAAAxgB,EAAG,EAAAC,CAAE,CAAC,EACzC,GAAIugB,GAAM,SAAW,CAAC3hB,IAAUA,KAAWgrB,GACzC,OAEF,IAAME,GAAW,KAAK,YAAYF,CAAW,EACvCG,GAAeC,GACnBP,GAAS,OACT7qB,GACAgrB,EACA7pB,EACAC,EACAypB,KAAaK,IAAY1vB,EAAK,QAAUwE,EAC1C,EACImrB,KAAiB,KAGjBA,IAAgBH,IAAgBG,KAGhCN,KAAaK,IACfA,GAAS,OAAOF,CAAW,EAC3BxvB,EAAK,MAAQwE,IAEb,OAAOxE,EAAK,MAEdqvB,GAAS,OAAOG,EAAaG,EAAY,EACzC,KAAK,QAAQ,IAAIN,EAAQ,GAC3B,EACA,OAAQ,CAAC,MAAM,CACjB,EACA,QAAS,CACP,KAAKxqB,EAAG,CACN,GAAM,CAAE,OAAAL,EAAQ,OAAA2W,EAAQ,iBAAA2D,CAAiB,EAAIja,EACvC,CAAC2qB,CAAW,EAAI,KAAK,MAAM,OAAQ5vB,GAAOA,EAAG,SAAS4E,CAAM,CAAC,EAC/D,CAACgrB,GAAe1Q,GAAoB3D,EAAS,GAAKla,GAAQuD,CAAM,GAAKA,EAAO,QAAQ,IAAI,KAAK,SAAS,EAAE,GAAK,KAAK,QAAU,CAACA,EAAO,QAAQ,KAAK,MAAM,IAG3JK,EAAE,eAAe,EACjB,KAAK,IAAMY,GAAYZ,CAAC,EACxB,KAAK,QAA0B,IAAI,IAAI,CAAC,IAAI,CAAC,EAC7C,KAAK,YAAc2qB,EACnB,KAAK,OAAS,CAAE,OAAAhrB,EAAQ,MAAO7C,GAAM6tB,CAAW,EAAG,GAAG,KAAK,GAAI,EAC/D1rB,GAAG,SAAUvD,GAAe,KAAK,IAAI,EACrCuD,GAAG,SAAUtD,GAAa,KAAK,GAAG,EAC7B,KAAK,WACR,KAAK,MAAMqE,CAAC,EAEhB,EACA,MAAMA,EAAG,CACP,KAAK,KAAOgrB,GAAW,KAAK,WAAY,KAAK,WAAW,EACxD,GAAM,CAAE,KAAAhmB,EAAM,IAAAD,CAAI,EAAIV,GAAa,KAAK,WAAW,EACnDnP,EAAO,KAAK,OAAQ,CAAE,WAAY,KAAK,IAAI,EAAI8P,EAAM,UAAW,KAAK,IAAI,EAAID,CAAI,CAAC,EAClFjL,GAAS,KAAK,KAAM,KAAK,QAAS,KAAK,SAAS,EAChDA,GAAS,KAAK,YAAa,KAAK,cAAc,EAC9CA,GAAS,KAAK,MAAO,KAAK,OAAO,EACjCA,GAAS,SAAS,gBAAiB,KAAK,YAAY,EACpDoG,GAAQ,KAAK,IAAK,QAAS,CAAC,KAAM,KAAK,WAAW,CAAC,EACnD+qB,GAAY,KAAK,GAAG,EACpB,KAAK,KAAKjrB,CAAC,CACb,EACA,KAAMkrB,GAAS,SAASlrB,EAAG,CACzB9K,EAAO,KAAK,IAAK0L,GAAYZ,CAAC,CAAC,EAC3B,CAAC,KAAK,OAAS,KAAK,IAAI,KAAK,IAAI,EAAI,KAAK,OAAO,CAAC,EAAI,KAAK,WAAa,KAAK,IAAI,KAAK,IAAI,EAAI,KAAK,OAAO,CAAC,EAAI,KAAK,YACtH,KAAK,MAAMA,CAAC,EAEd,KAAK,MAAM,MAAM,CACnB,CAAC,EACD,KAAM,CAGJ,GAFAJ,GAAI,SAAUlE,GAAe,KAAK,IAAI,EACtCkE,GAAI,SAAUjE,GAAa,KAAK,GAAG,EAC/B,CAAC,KAAK,KACR,OAEFwvB,GAAc,EACd,IAAMX,EAAW,KAAK,YAAY,KAAK,WAAW,EAC9C,OAASA,EACP,KAAK,OAAO,QAAU1tB,GAAM,KAAK,WAAW,GAC9CoD,GAAQ,KAAK,IAAK,QAAS,CAAC,KAAM,KAAK,WAAW,CAAC,GAGrDA,GAAQsqB,EAAS,IAAK,QAAS,CAACA,EAAU,KAAK,WAAW,CAAC,EAC3DtqB,GAAQ,KAAK,IAAK,UAAW,CAAC,KAAM,KAAK,WAAW,CAAC,GAEvDA,GAAQ,KAAK,IAAK,OAAQ,CAAC,KAAM,KAAK,WAAW,CAAC,EAClDuD,GAAS,KAAK,IAAI,EAClB,KAAK,KAAO,KACZ,OAAW,CAAE,eAAA2nB,EAAgB,QAAAC,CAAQ,IAAK,KAAK,QAC7C,QAAWC,KAAa,KAAK,QAC3BjxB,GAAYixB,EAAU,MAAOF,EAAgBC,CAAO,EAGxD,KAAK,QAAU,KACfhxB,GAAY,SAAS,gBAAiB,KAAK,YAAY,CACzD,EACA,OAAO9D,EAASoJ,EAAQ,CACtB7F,GAAS,KAAK,MAAO,KAAK,OAAO,EAC7B6F,GAAUA,EAAO,yBAA2BpJ,EAC9C,KAAK,QAAQ,IAAM6M,GAAOzD,EAAQpJ,CAAO,CAAC,EACjC,CAACoJ,GAAU,KAAK,OAAO,mBAAqBpJ,GACrD,KAAK,QAAQ,IAAM0M,GAAO,KAAK,OAAQ1M,CAAO,CAAC,CAEnD,EACA,OAAOA,EAAS,CACV,KAAK,OAAO,SAASA,CAAO,GAC9B,KAAK,QAAQ,IAAMkN,GAASlN,CAAO,CAAC,CAExC,EACA,YAAYA,EAAS,CACnB,EAAG,CACD,IAAMi0B,EAAW,KAAK,cAAcj0B,EAAS,UAAU,EACvD,GAAIi0B,IAAaA,IAAa,MAAQ,KAAK,QAAU,IAASA,EAAS,QAAU,KAAK,OACpF,OAAOA,CAEX,OAASj0B,EAAUiG,GAAOjG,CAAO,EACnC,CACF,CACF,EACA,IAAIg1B,GACJ,SAASN,GAAYnlB,EAAK,CACxB,IAAI3O,EAAO,KAAK,IAAI,EACpBo0B,GAAa,YAAY,IAAM,CAC7B,GAAI,CAAE,EAAAzqB,EAAG,EAAAC,CAAE,EAAI+E,EACf/E,GAAK,SAAS,iBAAiB,UAC/B,IAAM0L,GAAQ,KAAK,IAAI,EAAItV,GAAQ,GACnCA,EAAO,KAAK,IAAI,EAChB+T,GAAc,SAAS,iBAAiBpK,EAAGgF,EAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAMqH,GAAa,CAC9E,GAAI,CAAE,UAAWtB,GAAQ,aAAAR,EAAa,EAAI8B,EACpC,CAAE,IAAApI,GAAK,OAAA6C,GAAQ,OAAQ4jB,EAAQ,EAAIzgB,GAAeoC,CAAQ,EAChE,GAAIpI,GAAMhE,GAAKgE,GAAM,GAAKhE,EACxB8K,IAAUY,UACD7E,GAAS7G,GAAK6G,GAAS,GAAK7G,EACrC8K,IAAUY,MAEV,QAEF,GAAIZ,GAAS,GAAKA,GAASR,GAAemgB,GACxC,OAAAre,EAAS,UAAYtB,GACd,EAEX,CAAC,CACH,EAAG,EAAE,CACP,CACA,SAASsf,IAAgB,CACvB,cAAcI,EAAU,CAC1B,CACA,SAASP,GAAWhnB,EAAWzN,EAAS,CACtC,IAAIk1B,EACJ,GAAI/oB,GAAMnM,EAAS,KAAM,IAAI,EAAG,CAC9Bk1B,EAAQ5oB,GAAE,OAAO,EACjBI,GAAOwoB,EAAOl1B,EAAQ,UAAU,EAAI,EAAE,QAAQ,EAC9C,QAAW6E,KAAa7E,EAAQ,kBAAkB,EAChDsE,GAAK4wB,EAAOrwB,EAAW7E,EAAQ,aAAa6E,CAAS,CAAC,CAE1D,MACEqwB,EAAQl1B,EAAQ,UAAU,EAAI,EAEhC,OAAA0M,GAAOe,EAAWynB,CAAK,EACvBzsB,GAAIysB,EAAO,SAAU,IAAK,WAAW,EACrCzsB,GAAIysB,EAAO,CACT,UAAW,aACX,MAAOl1B,EAAQ,YACf,OAAQA,EAAQ,aAChB,QAASyI,GAAIzI,EAAS,SAAS,CACjC,CAAC,EACD+N,GAAOmnB,EAAM,kBAAmBnnB,GAAO/N,EAAQ,iBAAiB,CAAC,EAC1Dk1B,CACT,CACA,SAASb,GAAWtJ,EAAO1oB,EAAO,CAChC,OAAO0oB,EAAMzsB,EAAUysB,EAAQ1pB,GAASe,GAAYC,EAAOyL,GAAazM,CAAI,CAAC,CAAC,CAAC,CACjF,CACA,SAASmzB,GAAiBvU,EAAM7W,EAAQgrB,EAAa7pB,EAAGC,EAAG2qB,EAAU,CACnE,GAAI,CAAC9uB,GAAS4Z,CAAI,EAAE,OAClB,OAEF,IAAM3d,GAAOwL,GAAa1E,CAAM,EAChC,GAAI,CAAC+rB,EACH,OAAKC,GAAanV,EAAMmU,CAAW,GAC1B5pB,EAAIlI,GAAK,IAAMA,GAAK,OAAS,EAE/B8G,EAF4CA,EAAO,mBAI5D,IAAMisB,GAAkBvnB,GAAasmB,CAAW,EAC1CkB,GAAUC,GACd,CAACjzB,GAAK,IAAKA,GAAK,MAAM,EACtB,CAAC+yB,GAAgB,IAAKA,GAAgB,MAAM,CAC9C,EACM,CAACG,GAAYC,GAAYjT,GAAWkT,EAAO,EAAIJ,GAAU,CAAC/qB,EAAG,QAAS,OAAQ,OAAO,EAAI,CAACC,EAAG,SAAU,MAAO,QAAQ,EACtHwL,GAAOqf,GAAgBI,EAAU,EAAInzB,GAAKmzB,EAAU,EAAInzB,GAAKmzB,EAAU,EAAIJ,GAAgBI,EAAU,EAAI,EAC/G,OAAIJ,GAAgB7S,EAAS,EAAIlgB,GAAKkgB,EAAS,EACzCxM,IAAQwf,GAAalzB,GAAKkgB,EAAS,EAAIxM,GAClC,GAEF5M,EAAO,mBAEZ4M,IAAQwf,GAAalzB,GAAKozB,EAAO,EAAI1f,GAChC,GAEF5M,CACT,CACA,SAASgsB,GAAanV,EAAMmU,EAAa,CACvC,IAAMuB,EAAStvB,GAAS4Z,CAAI,EAAE,SAAW,EACrC0V,GACFjpB,GAAOuT,EAAMmU,CAAW,EAE1B,IAAMrJ,EAAQ1kB,GAAS4Z,CAAI,EACrB2V,EAAgB7K,EAAM,KAAK,CAACvmB,EAAIzB,KAAM,CAC1C,IAAM8yB,GAAQ/nB,GAAatJ,CAAE,EAC7B,OAAOumB,EAAM,MAAMhoB,GAAI,CAAC,EAAE,KAAMgZ,IAAQ,CACtC,IAAM+Z,GAAQhoB,GAAaiO,EAAG,EAC9B,MAAO,CAACwZ,GAAe,CAACM,GAAM,KAAMA,GAAM,KAAK,EAAG,CAACC,GAAM,KAAMA,GAAM,KAAK,CAAC,CAC7E,CAAC,CACH,CAAC,EACD,OAAIH,GACFzoB,GAASknB,CAAW,EAEfwB,CACT,CACA,SAASL,GAAeQ,EAAOC,EAAO,CACpC,OAAOD,EAAM,CAAC,EAAIC,EAAM,CAAC,GAAKA,EAAM,CAAC,EAAID,EAAM,CAAC,CAClD,CACA,SAASpB,GAASvxB,EAAI,CACpB,IAAI6yB,EACJ,OAAO,YAAY3yB,EAAM,CAClB2yB,IACHA,EAAY,GACZ7yB,EAAG,KAAK,KAAM,GAAGE,CAAI,EACrB,sBAAsB,IAAM2yB,EAAY,EAAK,EAEjD,CACF,CAEA,IAAIC,GAAW,CACb,MAAO,CACL,IAAK,OACL,OAAQ,QACR,KAAM,QACN,MAAO,QACP,MAAO,OACT,EACA,KAAM,CACJ,IAAK,UAAUnxB,GAAQ,QAAU,MAAM,GACvC,OAAQ,GACR,KAAM,GACN,MAAO,GACP,MAAO,EACT,EACA,WAAY,CACV,KAAK,IAAM,KAAK,OAAO,IAAI,MAAM,GAAG,EAAE,OAAO,QAAQ,EAAE,MAAM,EAAG,CAAC,EACjE,CAAC,KAAK,IAAK,KAAK,KAAK,EAAI,KAAK,IAC9B,KAAK,KAAO1G,EAAS,CAAC,MAAO,QAAQ,EAAG,KAAK,GAAG,EAAI,IAAM,GAC5D,EACA,QAAS,CACP,WAAW2B,EAASoJ,EAAQwO,EAAU,CACpC,IAAI3J,EAAS,CAAC,KAAK,kBAAkBjO,CAAO,EAAG,KAAK,eAAeA,CAAO,CAAC,EACrE8X,EAAY,CAAC,KAAK,MAAQ,OAAQ,KAAK,OAAS,OAAO,EACvDG,EAAS,CACb,QAAS,CAAC,KAAK,MAAQ,KAAK,IAAM3I,GAAa,KAAK,GAAG,EAAG,KAAK,KAAK,EACpE,OAAQ,CAAC,KAAK,IAAK,KAAK,KAAK,CAC/B,EACA,GAAI,KAAK,OAAS,IAAK,CACrB,QAAWvO,MAAQkX,EACjBA,EAAOlX,EAAI,EAAE,QAAQ,EAEvBkN,EAAO,QAAQ,EACf6J,EAAU,QAAQ,CACpB,CACA,IAAMqe,GAAwBC,GAAoBp2B,CAAO,EACnDq2B,GAAQvoB,GAAa9N,CAAO,EAClCyI,GAAIzI,EAAS,CAAE,IAAK,CAACq2B,GAAM,OAAQ,KAAM,CAACA,GAAM,KAAM,CAAC,EACvD5e,GAAWzX,EAASoJ,EAAQ,CAC1B,OAAA6O,EACA,OAAAhK,EACA,SAAA2J,EACA,UAAAE,EACA,eAAgB,KAAK,kBAAkB9X,CAAO,CAChD,CAAC,EACDm2B,GAAsB,CACxB,EACA,kBAAkBn2B,EAAU,KAAK,IAAK,CACpC,OAAOwP,GACL,KAAK,SAAW,GAAQ/G,GAAIzI,EAAS,sBAAsB,EAAI,KAAK,OACpE,KAAK,OAAS,IAAM,QAAU,SAC9BA,CACF,GAAK3B,EAAS,CAAC,OAAQ,KAAK,EAAG,KAAK,GAAG,EAAI,GAAK,IAAM,KAAK,MAAQ,GAAK,EAC1E,EACA,eAAe2B,EAAU,KAAK,IAAK,CACjC,OAAO,KAAK,QAAU,SAAW,EAAIwP,GACnC/G,GAAIzI,EAAS,4BAA4B,EACzC,KAAK,OAAS,IAAM,QAAU,SAC9BA,CACF,GAAK3B,EAAS,CAAC,OAAQ,KAAK,EAAG,KAAK,KAAK,EAAI,EAAI,GACnD,EACA,kBAAkB2B,EAAS,CACzB,OAAOwP,GAAK/G,GAAIzI,EAAS,+BAA+B,CAAC,CAC3D,CACF,CACF,EACA,SAASo2B,GAAoBp2B,EAAS,CACpC,IAAM4U,EAAgB2B,GAAavW,CAAO,EACpC,CAAE,UAAA6U,CAAU,EAAID,EACtB,MAAO,IAAM,CACPC,IAAcD,EAAc,YAC9BA,EAAc,UAAYC,EAE9B,CACF,CAEA,IAAIyhB,GAAU,CACZ,OAAQ,CAAC5U,GAAWC,GAAWuU,EAAQ,EACvC,KAAM,CACJ,IAAK,MACL,UAAW,CAAC,uBAAuB,EACnC,SAAU,IACV,IAAK,WACP,EACA,WAAY,CACVK,GAAc,KAAK,GAAG,CACxB,EACA,cAAe,CACb,KAAK,KAAK,CACZ,EACA,QAAS,CACP,MAAO,CACL,GAAI,KAAK,UAAU,KAAK,SAAW,IAAI,EACrC,OAEF,GAAM,CAAE,MAAAC,EAAQ,EAAG,MAAAC,CAAM,EAAIC,GAAW,KAAK,QAAQ,EACrD,GAAI,CAACD,EACH,OAEF,IAAME,EAAYryB,GAAK,KAAK,IAAK,OAAO,EAClC+E,EAAMX,GAAG,KAAK,IAAK,CAAC,OAAQpD,EAAY,EAAImE,GAAM,CAACW,GAAQX,CAAC,GAAK,KAAK,KAAK,CAAC,EAClF,KAAK,MAAQ,IAAM,CACjBnF,GAAK,KAAK,IAAK,CAAE,MAAOqyB,EAAW,mBAAoB,IAAK,CAAC,EAC7DttB,EAAI,CACN,EACA,IAAMvC,EAAK6jB,GAAW,IAAI,EAC1BrmB,GAAK,KAAK,IAAK,CAAE,MAAO,KAAM,mBAAoBwC,CAAG,CAAC,EACtD,aAAa,KAAK,SAAS,EAC3B,KAAK,UAAY,WAAW,IAAM,KAAK,MAAM2vB,EAAO3vB,CAAE,EAAG0vB,CAAK,CAChE,EACA,MAAM,MAAO,CACX,IAAIr4B,EACA2H,GAAQ,KAAK,IAAK,aAAa,IAGnC,aAAa,KAAK,SAAS,EACvB,KAAK,UAAU,KAAK,SAAW,IAAI,GACrC,MAAM,KAAK,cAAc,KAAK,QAAS,GAAO,EAAK,GAEpD3H,EAAK,KAAK,QAAU,MAAgBA,EAAG,KAAK,IAAI,EACjD+O,GAAS,KAAK,OAAO,EACrB,KAAK,QAAU,KACjB,EACA,MAAM,MAAMupB,EAAO3vB,EAAI,CACrB,KAAK,QAAU4F,GACb,KAAK,UACL,YAAY5F,CAAE,eAAe,KAAK,SAAS,IAAI,oCAAoC,KAAK,SAAS,IAAI,WAAW2vB,CAAK,eACvH,EACA/tB,GAAG,KAAK,QAAS,UAAW,CAACe,EAAG0Y,IAAY,CAC1C,GAAI,CAACA,EACH,OAEF,IAAM7G,EAAS,IAAM,KAAK,WAAW,KAAK,QAAS,KAAK,GAAG,EAC3DA,EAAO,EACP,GAAM,CAAC/M,EAAKqoB,EAAK,EAAIC,GAAa,KAAK,QAAS,KAAK,IAAK,KAAK,GAAG,EAClE,KAAK,OAAS,KAAK,OAAS,IAAM,GAAGvnB,GAAaf,CAAG,CAAC,IAAIqoB,EAAK,GAAK,GAAGA,EAAK,IAAItnB,GAAaf,CAAG,CAAC,GACjG,IAAMqV,GAAW,CACfta,GACE,SACA,WAAWpE,EAAa,GACxB,KAAK,KACL,GACCmX,IAAOA,GAAG,OAASnX,IAAiB,CAAC,KAAK,IAAI,SAASmX,GAAG,MAAM,GAAKA,GAAG,OAAS,WAAaA,GAAG,UAAYoD,GAAO,GACvH,EACA/W,GAAG,CAAC,SAAU,GAAG6L,GAAgB,KAAK,GAAG,CAAC,EAAG,SAAU+G,EAAQ,CAC7D,QAAS,EACX,CAAC,CACH,EACAhS,GAAK,KAAK,QAAS,OAAQ,IAAMsa,GAAS,QAAS3H,IAAYA,GAAQ,CAAC,EAAG,CACzE,KAAM,EACR,CAAC,CACH,CAAC,EACI,MAAM,KAAK,cAAc,KAAK,QAAS,EAAI,GAC9C,KAAK,KAAK,CAEd,CACF,EACA,OAAQ,CAGN,CAAC,SAAS5W,EAAY,IAAIH,EAAa,EAAE,EAAEuE,EAAG,EACxC,CAACW,GAAQX,CAAC,GAAKA,EAAE,OAASvE,KAC5B,KAAK,KAAK,CAEd,CACF,CACF,EACA,SAASqxB,GAAc/xB,EAAI,CACpBwB,GAAYxB,CAAE,GACjBF,GAAKE,EAAI,WAAY,GAAG,CAE5B,CACA,SAASqyB,GAAaryB,EAAI4E,EAAQ,CAACmF,EAAKqoB,CAAK,EAAG,CAC9C,IAAMne,EAAWxK,GAAOzJ,CAAE,EACpBkU,EAAezK,GAAO7E,CAAM,EAC5BolB,GAAa,CACjB,CAAC,OAAQ,OAAO,EAChB,CAAC,MAAO,QAAQ,CAClB,EACA,QAAWzJ,MAAUyJ,GAAY,CAC/B,GAAI/V,EAASsM,GAAO,CAAC,CAAC,GAAKrM,EAAaqM,GAAO,CAAC,CAAC,EAAG,CAClDxW,EAAMwW,GAAO,CAAC,EACd,KACF,CACA,GAAItM,EAASsM,GAAO,CAAC,CAAC,GAAKrM,EAAaqM,GAAO,CAAC,CAAC,EAAG,CAClDxW,EAAMwW,GAAO,CAAC,EACd,KACF,CACF,CAEA,OAAA6R,GADcv4B,EAASmwB,GAAW,CAAC,EAAGjgB,CAAG,EAAIigB,GAAW,CAAC,EAAIA,GAAW,CAAC,GAC3D,KAAMztB,IAAS0X,EAAS1X,EAAI,IAAM2X,EAAa3X,EAAI,CAAC,GAAK,SAChE,CAACwN,EAAKqoB,CAAK,CACpB,CACA,SAASF,GAAWpkB,EAAS,CAC3B,GAAM,CAAE,GAAA9N,EAAI,GAAAsC,EAAI,KAAMshB,CAAO,EAAI9V,EACjC,MAAO,CAAC,QAAS,OAAO,EAAE,OAAO,CAAChV,EAAKC,KAAS,CAAE,CAACA,CAAG,EAAGqH,GAAKJ,EAAIjH,CAAG,EAAG,GAAGD,CAAI,GAAI,CACjF,GAAGud,GAAajW,GAAKJ,EAAIsC,CAAE,EAAG,CAAC,OAAO,CAAC,EACvC,GAAGshB,CACL,CAAC,CACH,CAEA,IAAI0O,GAAS,CACX,OAAQ,CAAC9R,EAAI,EACb,KAAM,CACJ,YAAa,wBACb,YAAa,wBACb,YAAa,qCACf,EACA,MAAO,CACL,MAAO,OACP,YAAa,OACb,WAAY,OACZ,QAAS,OACT,OAAQ,OACR,KAAM,OACN,SAAU,QACV,KAAM,OACN,OAAQ,OACR,KAAM,OACN,IAAK,MACP,EACA,KAAM,CACJ,MAAO,GACP,YAAa,cACb,WAAY,EACZ,QAAS,EACT,OAAQ,OACR,KAAM,GACN,SAAU,GACV,KAAM,UACN,OAAQ,CAAC,EACT,KAAM,GACN,IAAK,GACL,MAAOjjB,GACP,UAAWA,GACX,WAAYA,GACZ,SAAUA,GACV,YAAaA,GACb,MAAOA,GACP,KAAMA,GACN,KAAMA,GACN,QAASA,GACT,UAAWA,GACX,SAAUA,EACZ,EACA,OAAQ,CACN,OAAO0H,EAAG,CACH3D,GAAQ2D,EAAE,OAAQ,oBAAoB,IAG3CA,EAAE,eAAe,EACbA,EAAE,OAAO,OACX,KAAK,OAAOA,EAAE,OAAO,KAAK,EAE5BA,EAAE,OAAO,MAAQ,GACnB,EACA,KAAKA,EAAG,CACNolB,GAAKplB,CAAC,EACN,IAAMstB,EAAWttB,EAAE,aACestB,GAAS,QAG3CjzB,GAAY,KAAK,IAAK,KAAK,WAAW,EACtC,KAAK,OAAOizB,EAAS,KAAK,EAC5B,EACA,UAAUttB,EAAG,CACXolB,GAAKplB,CAAC,CACR,EACA,SAASA,EAAG,CACVolB,GAAKplB,CAAC,EACNlG,GAAS,KAAK,IAAK,KAAK,WAAW,CACrC,EACA,UAAUkG,EAAG,CACXolB,GAAKplB,CAAC,EACN3F,GAAY,KAAK,IAAK,KAAK,WAAW,CACxC,CACF,EACA,QAAS,CACP,MAAM,OAAOkzB,EAAO,CAElB,GADAA,EAAQt4B,EAAQs4B,CAAK,EACjB,CAACA,EAAM,OACT,OAEFrtB,GAAQ,KAAK,IAAK,SAAU,CAACqtB,CAAK,CAAC,EACnC,QAAWC,KAAQD,EAAO,CACxB,GAAI,KAAK,SAAW,KAAK,QAAU,IAAMC,EAAK,KAAM,CAClD,KAAK,KAAK,KAAK,EAAE,cAAe,KAAK,OAAO,CAAC,EAC7C,MACF,CACA,GAAI,KAAK,OAAS,CAACC,GAAQ,KAAK,MAAOD,EAAK,IAAI,EAAG,CACjD,KAAK,KAAK,KAAK,EAAE,cAAe,KAAK,KAAK,CAAC,EAC3C,MACF,CACA,GAAI,KAAK,MAAQ,CAACC,GAAQ,KAAK,KAAMD,EAAK,IAAI,EAAG,CAC/C,KAAK,KAAK,KAAK,EAAE,cAAe,KAAK,IAAI,CAAC,EAC1C,MACF,CACF,CACK,KAAK,WACRD,EAAQA,EAAM,MAAM,EAAG,CAAC,GAE1B,KAAK,UAAU,KAAMA,CAAK,EAC1B,IAAMG,EAASC,GAAMJ,EAAO,KAAK,UAAU,EACrCF,EAAS,MAAOO,GAAW,CAC/B,IAAMzyB,EAAO,IAAI,SACjByyB,EAAO,QAASJ,GAASryB,EAAK,OAAO,KAAK,KAAMqyB,CAAI,CAAC,EACrD,QAAW15B,KAAO,KAAK,OACrBqH,EAAK,OAAOrH,EAAK,KAAK,OAAOA,CAAG,CAAC,EAEnC,GAAI,CACF,IAAM+5B,EAAM,MAAMC,GAAK,KAAK,IAAK,CAC/B,KAAA3yB,EACA,OAAQ,KAAK,OACb,aAAc,KAAK,KACnB,WAAa4yB,IAAQ,CACnB,GAAM,CAAE,IAAKC,EAAK,EAAID,GACtB9uB,GAAG+uB,GAAK,OAAQ,WAAY,KAAK,QAAQ,EACzC,QAAWtuB,KAAQ,CAAC,YAAa,OAAQ,UAAW,OAAO,EACzDT,GAAG+uB,GAAMtuB,GAAK,YAAY,EAAG,KAAKA,EAAI,CAAC,EAEzC,OAAO,KAAK,WAAWquB,EAAG,CAC5B,CACF,CAAC,EACD,KAAK,SAASF,CAAG,EACbH,EAAO,OACT,MAAML,EAAOK,EAAO,MAAM,CAAC,EAE3B,KAAK,YAAYG,CAAG,CAExB,OAAS7tB,EAAG,CACV,KAAK,MAAMA,CAAC,CACd,CACF,EACA,MAAMqtB,EAAOK,EAAO,MAAM,CAAC,CAC7B,CACF,CACF,EACA,SAASD,GAAQQ,EAASnmB,EAAM,CAC9B,OAAOA,EAAK,MACV,IAAI,OACF,IAAImmB,EAAQ,QAAQ,MAAO,KAAK,EAAE,QAAQ,QAAS,eAAe,EAAE,QAAQ,MAAO,SAAS,EAAE,QAAQ,cAAe,KAAK,CAAC,IAC3H,GACF,CACF,CACF,CACA,SAASN,GAAMJ,EAAOW,EAAM,CAC1B,IAAMR,EAAS,CAAC,EAChB,QAASp0B,EAAI,EAAGA,EAAIi0B,EAAM,OAAQj0B,GAAK40B,EACrCR,EAAO,KAAKH,EAAM,MAAMj0B,EAAGA,EAAI40B,CAAI,CAAC,EAEtC,OAAOR,CACT,CACA,SAAStI,GAAKplB,EAAG,CACfA,EAAE,eAAe,EACjBA,EAAE,gBAAgB,CACpB,CACA,eAAe8tB,GAAKK,EAAKtlB,EAAS,CAChC,IAAMklB,EAAM,CACV,KAAM,KACN,OAAQ,MACR,QAAS,CAAC,EACV,IAAK,IAAI,eACT,WAAYz1B,GACZ,aAAc,GACd,GAAGuQ,CACL,EACA,aAAMklB,EAAI,WAAWA,CAAG,EACjBK,GAAKD,EAAKJ,CAAG,CACtB,CACA,SAASK,GAAKD,EAAKJ,EAAK,CACtB,OAAO,IAAI,QAAQ,CAAClsB,EAASC,IAAW,CACtC,GAAM,CAAE,IAAA+rB,CAAI,EAAIE,EAChB,QAAWz2B,KAAQy2B,EACjB,GAAIz2B,KAAQu2B,EACV,GAAI,CACFA,EAAIv2B,CAAI,EAAIy2B,EAAIz2B,CAAI,CACtB,MAAY,CACZ,CAGJu2B,EAAI,KAAKE,EAAI,OAAO,YAAY,EAAGI,CAAG,EACtC,QAAWE,KAAUN,EAAI,QACvBF,EAAI,iBAAiBQ,EAAQN,EAAI,QAAQM,CAAM,CAAC,EAElDpvB,GAAG4uB,EAAK,OAAQ,IAAM,CAChBA,EAAI,SAAW,GAAKA,EAAI,QAAU,KAAOA,EAAI,OAAS,KAAOA,EAAI,SAAW,IAC9EhsB,EAAQgsB,CAAG,EAEX/rB,EACE5M,EAAO,MAAM24B,EAAI,UAAU,EAAG,CAC5B,IAAAA,EACA,OAAQA,EAAI,MACd,CAAC,CACH,CAEJ,CAAC,EACD5uB,GAAG4uB,EAAK,QAAS,IAAM/rB,EAAO5M,EAAO,MAAM,eAAe,EAAG,CAAE,IAAA24B,CAAI,CAAC,CAAC,CAAC,EACtE5uB,GAAG4uB,EAAK,UAAW,IAAM/rB,EAAO5M,EAAO,MAAM,iBAAiB,EAAG,CAAE,IAAA24B,CAAI,CAAC,CAAC,CAAC,EAC1EA,EAAI,KAAKE,EAAI,IAAI,CACnB,CAAC,CACH,CAEA,IAAIO,GAA4B,OAAO,OAAO,CAC1C,UAAW,KACX,UAAWre,GACX,OAAQgG,GACR,SAAUqN,GACV,cAAeb,GACf,aAAcmB,GACd,SAAUlC,GACV,OAAQuH,GACR,eAAgBmB,GAChB,UAAWG,GACX,kBAAmBH,GACnB,SAAUI,GACV,QAASqC,GACT,OAAQQ,EACZ,CAAC,EAED,SAASkB,GAAK5O,EAAK,CACbtkB,IAAa,OAAO,mBAClB,SAAS,KACX,sBAAsB,IAAM8kB,GAAKR,CAAG,CAAC,EAErC,IAAI,iBAAiB,CAACZ,EAAShW,IAAa,CACtC,SAAS,OACXoX,GAAKR,CAAG,EACR5W,EAAS,WAAW,EAExB,CAAC,EAAE,QAAQ,SAAS,gBAAiB,CAAE,UAAW,EAAK,CAAC,EAG9D,CACA,SAASoX,GAAKR,EAAK,CACjBzf,GAAQ,SAAU,aAAcyf,CAAG,EAC/B,SAAS,MACX1b,GAAM,SAAS,KAAMuqB,EAAO,EAE9B,IAAI,iBAAkBzP,GAAYA,EAAQ,QAAQ0P,EAAsB,CAAC,EAAE,QAAQ,SAAU,CAC3F,QAAS,GACT,UAAW,EACb,CAAC,EACD,IAAI,iBAAkB1P,GAAYA,EAAQ,QAAQ2P,EAAsB,CAAC,EAAE,QAAQ,SAAU,CAC3F,QAAS,GACT,WAAY,EACd,CAAC,EACD/O,EAAI,aAAe,EACrB,CACA,SAAS8O,GAAuB,CAAE,WAAAE,EAAY,aAAAC,CAAa,EAAG,CAC5D,QAAW50B,KAAQ20B,EACjB1qB,GAAMjK,EAAMw0B,EAAO,EAErB,QAAWx0B,KAAQ40B,EACjB3qB,GAAMjK,EAAM60B,EAAU,CAE1B,CACA,SAASH,GAAuB,CAAE,OAAA/uB,EAAQ,cAAAqf,CAAc,EAAG,CACzD,IAAItqB,EACJ,IAAMoG,EAAOg0B,GAAiB9P,CAAa,EACvClkB,IACEG,GAAQ0E,EAAQqf,CAAa,EAC/BgB,GAAgBllB,EAAM6E,CAAM,GAE3BjL,EAAK0rB,GAAazgB,EAAQ7E,CAAI,IAAM,MAAgBpG,EAAG,SAAS,EAGvE,CACA,SAAS85B,GAAQx0B,EAAM,CACrB,IAAM+0B,EAAc1O,GAAcrmB,CAAI,EACtC,QAAWc,KAAQi0B,EACjB5P,GAAc4P,EAAYj0B,CAAI,CAAC,EAEjC,QAAWkkB,KAAiBhlB,EAAK,kBAAkB,EAAG,CACpD,IAAMc,EAAOg0B,GAAiB9P,CAAa,EAC3ClkB,GAAQklB,GAAgBllB,EAAMd,CAAI,CACpC,CACF,CACA,SAAS60B,GAAW70B,EAAM,CACxB,IAAM+0B,EAAc1O,GAAcrmB,CAAI,EACtC,QAAWc,KAAQi0B,EACjB3P,GAAiB2P,EAAYj0B,CAAI,CAAC,CAEtC,CACA,SAASg0B,GAAiB1zB,EAAW,CAC/B5G,EAAW4G,EAAW,OAAO,IAC/BA,EAAYA,EAAU,MAAM,CAAC,GAE/B,IAAMue,EAAMmG,GAAa1kB,CAAS,EAClC,OAAOue,IAAQA,EAAI,SAAWA,GAAK,IACrC,CAEA6G,GAAUb,EAAG,EACbqB,GAAYrB,EAAG,EAEf,IAAIqP,GAAY,CACd,OAAQ,CAACjf,GAAOmI,EAAS,EACzB,MAAO,CACL,UAAW,QACX,QAAS,OACT,OAAQ,KACR,YAAa,QACb,SAAU,QACV,OAAQ,OACR,QAAS,OACT,OAAQ,MACV,EACA,KAAM,CACJ,QAAS,MACT,OAAQ,GACR,UAAW,GACX,YAAa,GACb,SAAU,GACV,QAAS,UACT,OAAQ,wBACR,QAAS,0BACT,OAAQ,CACV,EACA,SAAU,CACR,MAAO,CAAC,CAAE,QAAAhZ,CAAQ,EAAG+T,IAAQ9O,GAAGjF,EAAS+T,CAAG,EAC5C,QAAQ,CAAE,OAAAoD,CAAO,EAAG,CAClB,OAAO,KAAK,MAAM,IAAKze,GAASiL,GAAEwT,EAAQze,CAAI,CAAC,CACjD,EACA,SAAS,CAAE,QAAAwrB,CAAQ,EAAG,CACpB,OAAO,KAAK,MAAM,IAAKxrB,GAAS,CAC9B,IAAIlD,EACJ,QAASA,EAAKkD,EAAK,WAAa,KAAO,OAASlD,EAAG,oBAAsBmO,GAAEugB,EAASxrB,CAAI,CAC1F,CAAC,CACH,CACF,EACA,MAAO,CACL,MAAM0pB,EAAOnV,EAAM,CACjB,GAAIA,GAAQ/R,GAASknB,EAAO,KAAK,OAAO,EACtC,OAEF,IAAMM,EAAS,KAAK,SAAW,IAASN,EAAM,OAAO,KAAK,MAAM,CAAC,GAAK,CAAC,KAAK,aAAeA,EAAM,CAAC,EAC9FM,GACF,KAAK,OAAOA,EAAQ,EAAK,CAE7B,EACA,SAAU,CACR,KAAK,MAAM,CACb,EACA,SAASN,EAAO,CACd,QAAWvmB,KAAMumB,EAAO,CACtB,IAAM2N,EAAS70B,GACb,KAAK,MAAM,KAAMxC,GAASA,EAAK,SAASmD,CAAE,CAAC,EAC3C,KAAK,OACP,EACAm0B,GAAKn0B,EAAI,CAACk0B,CAAM,CAClB,CACA,KAAK,MAAM,CACb,CACF,EACA,QAAS7c,GAAS,EAClB,OAAQ,CACN,CACE,KAAM,gBACN,SAAU,CAAC,CAAE,QAAAlT,EAAS,OAAAwe,CAAO,IAAM,GAAGxe,CAAO,IAAIwe,EAAO,MAAM,GAC9D,MAAM,QAAQ1d,EAAG,CACf,IAAItL,EACAsL,EAAE,OAAS,WAAaA,EAAE,UAAYgW,GAAO,QAGjDhW,EAAE,eAAe,GAChBtL,EAAK,KAAK,OAAS,MAAgBA,EAAG,KAAK,IAAI,EAChD,KAAK,KAAOy6B,GAAmBnvB,EAAE,MAAM,EACvC,MAAM,KAAK,OAAOlD,GAAM,KAAK,QAASkD,EAAE,OAAO,CAAC,EAChD,KAAK,KAAK,EACZ,CACF,EACA,CACE,KAAM,eACN,KAAM,GACN,SAAU,CAAC,CAAE,QAAAd,CAAQ,IAAMA,EAC3B,SAAU,CACR,KAAK,MAAM,CACb,CACF,CACF,EACA,QAAS,CACP,IAAMkwB,EAAc3yB,GAAS,KAAK,MAAO,IAAI,KAAK,OAAO,EAAE,EAC3D,QAAW4yB,KAAU,KAAK,MAAO,CAC/B,IAAMhZ,EAAS,KAAK,QAAQgZ,CAAM,EAC5BjM,EAAU,KAAK,SAASiM,CAAM,EACpC,GAAI,CAAChZ,GAAU,CAAC+M,EACd,SAEF/M,EAAO,GAAK6K,GAAW,KAAM7K,CAAM,EACnC+M,EAAQ,GAAKlC,GAAW,KAAMkC,CAAO,EACrC,IAAMxB,EAAShtB,EAASw6B,EAAa,KAAK,MAAMC,CAAM,CAAC,EACvDx0B,GAAKwb,EAAQ,CACX,KAAM3T,GAAM2T,EAAQ,GAAG,EAAI,SAAW,KACtC,gBAAiB+M,EAAQ,GACzB,gBAAiBxB,EACjB,gBAAiB,CAAC,KAAK,aAAewN,EAAY,OAAS,GAAKxN,CAClE,CAAC,EACD/mB,GAAKuoB,EAAS,CAAE,KAAM,SAAU,kBAAmB/M,EAAO,EAAG,CAAC,EAC1D3T,GAAM0gB,EAAS,IAAI,GACrBvoB,GAAK+B,GAASwmB,CAAO,EAAG,OAAQ,cAAc,CAElD,CACF,EACA,QAAS,CACP,OAAOxrB,EAAMkf,EAAS,CACpBlf,EAAO,KAAK,MAAMyB,GAASzB,EAAM,KAAK,KAAK,CAAC,EAC5C,IAAI0pB,EAAQ,CAAC1pB,CAAI,EACXw3B,EAAc3yB,GAAS,KAAK,MAAO,IAAI,KAAK,OAAO,EAAE,EAI3D,GAHI,CAAC,KAAK,UAAY,CAAC7H,EAASw6B,EAAa9N,EAAM,CAAC,CAAC,IACnDA,EAAQA,EAAM,OAAO8N,CAAW,GAE9B,GAAC,KAAK,aAAeA,EAAY,OAAS,GAAKx6B,EAASw6B,EAAax3B,CAAI,GAG7E,OAAO,QAAQ,IACb0pB,EAAM,IACHvmB,GAAO,KAAK,cAAcA,EAAI,CAACnG,EAASw6B,EAAar0B,CAAE,EAAG,CAACuX,EAAK8F,KAAS,CAExE,GADA1d,GAAY4X,EAAK,KAAK,QAAS8F,EAAI,EAC/BtB,IAAY,IAAS,CAAC,KAAK,UAAW,CACxCoY,GAAKrsB,GAAE,KAAK,QAASyP,CAAG,EAAG,CAAC8F,EAAI,EAChC,MACF,CACA,OAAOD,GAAW7F,EAAK8F,GAAM,IAAI,CACnC,CAAC,CACH,CACF,CACF,CACF,CACF,EACA,SAAS8W,GAAKn0B,EAAIu0B,EAAO,CACvBv0B,IAAOA,EAAG,OAASu0B,EACrB,CACA,eAAenX,GAAWpd,EAAIqd,EAAM,CAAE,QAAAgL,EAAS,SAAAzhB,EAAU,SAAAkX,EAAU,WAAY0W,CAAY,EAAG,CAC5F,IAAI76B,GACJ0uB,IAAY1uB,GAAKqG,EAAG,WAAa,KAAO,OAASrG,GAAG,oBAAsBmO,GAAEugB,EAASroB,CAAE,EAClFA,EAAG,WACNA,EAAG,SAAW2I,GAAQ0f,EAAS,OAAO,GAExC,IAAM3J,GAAU1e,EAAG,SACnBiE,GAAIya,GAAS,WAAY,QAAQ,EACjC,IAAM+V,GAAgBn5B,EAAQ2I,GAAIya,GAAS,QAAQ,CAAC,EACpD,MAAMzX,GAAW,OAAOyX,EAAO,EAC/ByV,GAAK9L,EAAS,EAAK,EACnB,IAAMqM,GAAYh4B,GAAM,CAAC,YAAa,cAAc,EAAIH,IAAS0H,GAAIokB,EAAS9rB,EAAI,CAAC,EAAI+M,GAAa+e,CAAO,EAAE,OACvG/c,GAAUmpB,GAAgBC,GAChC9tB,GAAYkX,EAAW4W,GAAY9tB,IAAayW,EAAO,EAAI/R,GAAUA,IACrErH,GAAIya,GAAS,SAAU+V,EAAa,EACpC,MAAMxtB,GAAW,MAAMyX,GAAS,CAAE,OAAQrB,EAAOqX,GAAY,CAAE,EAAG9tB,EAAU4tB,CAAW,EACvF1rB,GAAOuf,CAAO,EACd,OAAOroB,EAAG,SACLqd,GACH8W,GAAK9L,EAAS,EAAI,CAEtB,CACA,SAAS+L,GAAmBp0B,EAAI,CAC9B,IAAMoQ,EAAgB2B,GAAa/R,EAAI,EAAI,EACvC20B,EACJ,OAAC,SAAS7jB,GAAS,CACjB6jB,EAAQ,sBAAsB,IAAM,CAClC,GAAM,CAAE,IAAA3qB,CAAI,EAAIV,GAAatJ,CAAE,EAC3BgK,EAAM,IACRoG,EAAc,WAAapG,GAE7B8G,EAAO,CACT,CAAC,CACH,EAAG,EACI,IAAM,sBAAsB,IAAM,qBAAqB6jB,CAAK,CAAC,CACtE,CAEA,IAAIC,GAAQ,CACV,OAAQ,CAAC5f,GAAOmI,EAAS,EACzB,KAAM,YACN,MAAO,CACL,UAAW,QACX,MAAO,MACT,EACA,KAAM,CACJ,UAAW,GACX,SAAU,kBACV,SAAU,GACZ,EACA,OAAQ,CACN,KAAM,QACN,SAAU,CAAC,CAAE,SAAA8B,CAAS,IAAMA,EAC5B,QAAQha,EAAG,CACTA,EAAE,eAAe,EACjB,KAAK,MAAM,CACb,CACF,EACA,QAAS,CACP,MAAM,OAAQ,CACZ,MAAM,KAAK,cAAc,KAAK,IAAK,GAAO8W,EAAO,EACjD,KAAK,SAAS,EAAI,CACpB,CACF,CACF,EACA,SAASA,GAAQ/b,EAAIqd,EAAM,CAAE,SAAAzW,EAAU,WAAAwW,EAAY,SAAAU,CAAS,EAAG,CAC7D,IAAMvU,EAASjO,EAAQ2I,GAAIjE,EAAI,QAAQ,CAAC,EACxC,OAAAiE,GAAIjE,EAAI,SAAUuJ,CAAM,EACjBtC,GAAW,MAChBjH,EACA,CACE,OAAQ,EACR,UAAW,EACX,aAAc,EACd,WAAY,EACZ,cAAe,EACf,UAAW,EACX,aAAc,EACd,QAAS,CACX,EACA8d,EAAWvU,EAAS3C,EACpBwW,CACF,CACF,CAEA,IAAIyX,GAAQ,CACV,KAAM,WACN,MAAO,CACL,SAAU,QACV,SAAU,OACZ,EACA,KAAM,CACJ,SAAU,GACV,SAAU,EACZ,EACA,eAAgB,CACV,KAAK,WAAa,UAAY,CAAC30B,GAAQ,KAAK,IAAK,SAAS,IAC5D,KAAK,IAAI,QAAU,QAEjByH,GAAM,KAAK,IAAK,QAAQ,GAAK,CAACzH,GAAQ,KAAK,IAAK,OAAO,IACzD,KAAK,IAAI,MAAQ,YAEf,KAAK,WAAa,UAChByH,GAAM,KAAK,IAAK,OAAO,EACzB,KAAK,IAAI,SAAW,EAEpB,KAAK,SAAW,IAGhB,KAAK,UACPqH,GAAK,KAAK,GAAG,CAEjB,EACA,OAAQ,CACN,CACE,KAAM,GAAGnO,EAAY,WACrB,OAAQ,CAAC,CAAE,SAAA+f,CAAS,IAAM/mB,EAAS+mB,EAAU,OAAO,EACpD,QAAQ3b,EAAG,CACL,CAACW,GAAQX,CAAC,GAAK,CAAC6vB,GAAU,KAAK,GAAG,EACpCnmB,GAAK,KAAK,GAAG,EAEbI,GAAM,KAAK,GAAG,CAElB,CACF,EACA,CACE,KAAM,GAAGjO,EAAY,YACrB,OAAQ,CAAC,CAAE,SAAA8f,CAAS,IAAM/mB,EAAS+mB,EAAU,OAAO,EACpD,QAAQ3b,EAAG,CACJW,GAAQX,CAAC,GACZ8J,GAAM,KAAK,GAAG,CAElB,CACF,CACF,EACA,QAAS,CACP9B,GAAa,CACX,OAAQ,CAAC,CAAE,IAAAiL,EAAK,SAAA0I,CAAS,IAAMA,IAAa,SAAW3R,GAAQiJ,CAAG,EAClE,QAAQ,CAAC,CAAE,eAAAV,CAAe,CAAC,EAAG,CACvB,SAAS,oBACRA,EACE,KAAK,UACP7I,GAAK,KAAK,GAAG,EAGfI,GAAM,KAAK,GAAG,EAGpB,EACA,KAAM,CAAE,aAAc,EAAM,EAC5B,QAAS,CAAC,CAAE,IAAAmJ,EAAK,SAAA0I,CAAS,KAAO,CAAE,KAAMA,IAAa,SAAW,KAAOnf,GAAOyW,CAAG,CAAE,EACtF,CAAC,CACH,CACF,EACA,SAAS4c,GAAUC,EAAS,CAC1B,MAAO,CAACA,EAAQ,QAAU,CAACA,EAAQ,KACrC,CAEA,IAAIC,GAAQ,CACV,OAAQ,CAACH,EAAK,EACd,MAAO,CACL,MAAO,OACP,OAAQ,MACV,EACA,KAAM,CACJ,SAAU,EACZ,EACA,SAAU,CACR,KAAK,aAAeltB,GAAM,KAAK,IAAK,MAAO,OAAO,CACpD,EACA,QAASuP,GAAO,CACd,OAAQ,CAAC,CAAE,IAAAgB,CAAI,IAAM+c,GAAoB/c,CAAG,GAAKzW,GAAOyW,CAAG,EAC3D,OAAQ,CAAC,CAAE,aAAAgd,CAAa,IAAM,CAACA,CACjC,CAAC,EACD,OAAQ,CACN,MAAO,CACL,GAAI,KAAK,aACP,MAAO,GAET,GAAM,CAAE,MAAAn3B,EAAO,MAAAi3B,CAAM,EAAI32B,GACnB,CAAE,IAAA6Z,EAAK,MAAA1O,EAAO,OAAAD,CAAO,EAAI,KAC3B6K,EAAM,CAAE,MAAA5K,EAAO,OAAAD,CAAO,EAC1B,GAAI,CAACC,GAAS,CAACD,EAAQ,CACrB,IAAM4rB,GAAY,CAChB,MAAOjd,EAAI,cAAgBA,EAAI,YAAcA,EAAI,YACjD,OAAQA,EAAI,eAAiBA,EAAI,aAAeA,EAAI,YACtD,EACI1O,EACF4K,EAAMrW,EAAMo3B,GAAW,QAAS3rB,CAAK,EAC5BD,EACT6K,EAAMrW,EAAMo3B,GAAW,SAAU5rB,CAAM,EAEvC6K,EAAM+gB,EAEV,CACA,GAAM,CAAE,aAAcC,GAAa,YAAaC,EAAW,EAAIJ,GAAoB/c,CAAG,GAAKzW,GAAOyW,CAAG,EAC/Fod,GAAWN,EAAM5gB,EAAK,CAAE,MAAOihB,GAAY,OAAQD,EAAY,CAAC,EACtE,MAAI,CAACE,GAAS,OAAS,CAACA,GAAS,OACxB,GAEFA,EACT,EACA,MAAM,CAAE,OAAA/rB,EAAQ,MAAAC,CAAM,EAAG,CACvBvF,GAAI,KAAK,IAAK,CAAE,OAAAsF,EAAQ,MAAAC,CAAM,CAAC,CACjC,EACA,OAAQ,CAAC,QAAQ,CACnB,CACF,EACA,SAASyrB,GAAoBj1B,EAAI,CAC/B,KAAOA,EAAKyB,GAAOzB,CAAE,GACnB,GAAIiE,GAAIjE,EAAI,UAAU,IAAM,SAC1B,OAAOA,CAGb,CAEA,IAAI6mB,GACJ,IAAI0O,GAAO,CACT,OAAQ,CAACrY,GAAWwU,GAAUvU,EAAS,EACvC,KAAM,MACN,MAAO,CACL,KAAM,OACN,OAAQ,QACR,SAAU,QACV,UAAW,QACX,UAAW,QACX,OAAQ,QACR,QAAS,QACT,QAAS,QACT,QAAS,QACT,UAAW,OACX,UAAW,OACX,WAAY,QACZ,QAAS,OACT,WAAY,QACZ,SAAU,QACV,cAAe,OACjB,EACA,KAAM,CACJ,KAAM,CAAC,QAAS,OAAO,EACvB,OAAQ,MACR,SAAU,GACV,UAAW,GACX,UAAW,GACX,OAAQ,GACR,QAAS,GACT,QAAS,GACT,QAAS,GACT,UAAW,EACX,UAAW,IACX,WAAY,GACZ,QAAS,GACT,WAAY,GACZ,SAAU,GACV,UAAW,CAAC,mBAAmB,EAC/B,IAAK,UACL,UAAW,GACX,cAAe,EACjB,EACA,SAAU,CACR,SAAS,CAAE,SAAA/J,EAAU,UAAAoiB,EAAW,UAAAC,CAAU,EAAGvd,EAAK,CAChD,MAAO,CACL3V,GAAMizB,GAAapiB,EAAU8E,CAAG,GAAK,OACrC3V,GAAMkzB,GAAariB,EAAU8E,CAAG,GAAK,MACvC,CACF,EACA,OAAO,CAAE,OAAAtT,EAAQ,QAAA8wB,EAAS,QAAAC,CAAQ,EAAGzd,EAAK,CACxC,OAAAwd,IAAYA,EAAU9wB,GAAU,KAAK,UACrC+wB,IAAYA,EAAU/wB,GAAU,KAAK,UAC9B,CACL8wB,IAAY,GAAO,OAASnzB,GAAMmzB,EAASxd,CAAG,EAC9Cyd,IAAY,GAAO,OAASpzB,GAAMozB,EAASzd,CAAG,CAChD,CACF,CACF,EACA,SAAU,CACR,KAAK,QAAU,IAAIxL,EACrB,EACA,eAAgB,CACd,KAAK,QAAU,KAAK,OAAO,SAAW,KAAK,SAAS,EACtD,EACA,WAAY,CACV3N,GAAS,KAAK,IAAK,UAAW,KAAK,OAAO,EACtC,KAAK,QAAU,CAAC,KAAK,WACvB,KAAK,SAAW62B,GAAsB,IAAI,GAE5C,KAAK,OAAS34B,GAAK,KAAK,IAAI,MAAO,CAAC,QAAS,QAAQ,CAAC,CACxD,EACA,cAAe,CACT,KAAK,SAAS,IAChB,KAAK,KAAK,EAAK,EACf4pB,GAAS,MAEX5iB,GAAI,KAAK,IAAK,KAAK,MAAM,CAC3B,EACA,OAAQ,CACN,CACE,KAAM,QACN,SAAU,IAAM,iBAChB,QAAQgB,EAAG,CACTA,EAAE,eAAe,EACjB,KAAK,KAAK,EAAK,CACjB,CACF,EACA,CACE,KAAM,QACN,SAAU,IAAM,eAChB,QAAQ,CAAE,iBAAAia,EAAkB,QAAAzgB,CAAQ,EAAG,CACrC,GAAM,CAAE,KAAA2D,CAAK,EAAI3D,EACb,CAACygB,GAAoB9c,GAAQH,GAAiBxD,CAAO,GAAK,CAAC,KAAK,IAAI,SAASqJ,GAAE1F,CAAI,CAAC,GACtF,KAAK,KAAK,EAAK,CAEnB,CACF,EACA,CACE,KAAM,eACN,SAAU,CACR,KAAK,KAAK,EAAK,CACjB,CACF,EACA,CACE,KAAM,SACN,KAAM,GACN,QAAQ6C,EAAGqW,EAAQ,CACjBrW,EAAE,eAAe,EACb,KAAK,UAAU,EACjB,KAAK,KAAK,EAAK,EAEf,KAAK,KAA+BqW,GAAO,IAAK,EAAK,CAEzD,CACF,EACA,CACE,KAAM,aACN,KAAM,GACN,QAAQrW,EAAGqW,EAAQ,CACjBrW,EAAE,eAAe,EACjB,KAAK,KAA+BqW,GAAO,GAAG,CAChD,CACF,EACA,CACE,KAAM,aACN,KAAM,GACN,QAAQrW,EAAG,CACTA,EAAE,eAAe,EACZ3D,GAAQ,KAAK,IAAK,eAAe,GACpC,KAAK,KAAK,CAEd,CACF,EACA,CACE,KAAM,GAAGT,EAAY,WACrB,OAAQ,CAAC,CAAE,KAAAkd,CAAK,IAAMlkB,EAASkkB,EAAM,OAAO,EAC5C,QAAQ9Y,EAAG,CACJW,GAAQX,CAAC,GACZ,KAAK,YAAY,CAErB,CACF,EACA,CACE,KAAM,GAAGnE,EAAY,YACrB,OAAQ,CAAC,CAAE,KAAAid,CAAK,IAAMlkB,EAASkkB,EAAM,OAAO,EAC5C,QAAQ9Y,EAAG,CACL,CAACW,GAAQX,CAAC,GAAKA,EAAE,eACnB,KAAK,KAAK,CAEd,CACF,EACA,CACE,KAAM,UACN,KAAM,GACN,QAAQA,EAAG0Y,EAAS,CACdA,IACF,KAAK,YAAY,EACjB,KAAK,SAAS,EAElB,CACF,EACA,CACE,KAAM,OACN,KAAM,GACN,SAAU,CACRkJ,GAAS,KACT,KAAK,QAAQ,KAAK,EAClB/mB,GAAK,KAAK,SAAU,gBAAiB,EAAI,EACzC,IAAMsf,EAAW,CACfyW,GAAgB,IAAI,EACpBC,GAAkB,IAAI,EACtBC,GAAyB,IAAI,EAC7B,KAAK,YAAcC,GAAgB,IAAI,EACvC,KAAK,eAAiBC,GAAqB,IAAI,CACjD,EACAnxB,GAAK,KAAK,IAAK,OAAQ,IAAMsa,EAAS,QAAS3H,GAAYA,GAAWA,EAAQ,CAAC,EAAG,CAChF,KAAM,EACR,CAAC,EACI,KAAK,UACR3S,GAAK,KAAK,IAAK,SAAUiY,GAAwB,KAAK,GAAG,EAAG,CAAE,KAAM,EAAK,CAAC,CAE9E,CACF,EACA,CACE,KAAM,aACN,KAAM,GACN,QAAS,aACX,EACA,CACE,KAAM,OACN,QAAQ,CAAE,OAAAnY,CAAO,EAAG,CAClB,GAAI,KAAK,MAAQA,EAAQ,CACvBiiB,GAASA,KAAW,MAAQ,KAAK,IAAI,SAASjiB,CAAM,GAAK,KAAK,UAAU,EAAI,KAAOiiB,GACnF,MACF,CACAA,GAAS,KAAK,SAAS,EAAI,KAAOA,GAClC,KAAK,QAAQ,OAAO,EACpB/mB,GAAK,KAAK,SAAU,gBAAiB,IAAI,CAC3C,CACF,CACF,EACA,OAAQ,CACN,OAAQ,CACF,KAAK,UAAU,GAAK,CAACT,GAAS,KAAK,IAAK,KAAK,QAAQ,GACvD,KAAK,SAAS,CAElB,CACF,EACA,QAAS,CACP,KAAKuF,EAAS,KAAK,SAAUotB,EAAQ,GAAM,CAMzC,GALI,KAAK,UAAU,GAAKptB,GAAU,KAAK,UAAYA,IAAW,KAAK,UACjE,KAAK,KAAK,GAAO,EAAK,EAExB,KAAK,SAAWA,EAChB,KAAK,YAAY,EACb,MAAK,SAAS,EAGlB,IAAIiiB,GAAQ,CACV,GAAImL,GAASnL,GAAO,WAAW,EAAG,CAChC,KAAK,UAAY,WAAW,IAAMvlB,GAAQsD,EAAQ,QAAQ,GAAK,KAAK,KAAK,EAAG,EAAE,EAC9E,MACF,CACA,IAAIwM,EACJ,KAAOyV,IAAUzV,IAASyV,IAAU,CAACA,GAAO,IAAI,SAAS,KAAK,GAAG,GAC/DzV,EAAOyV,GACPA,GAAO,KAAK,GAAO,EAAK,CAE5B,CACI,KAAK,WAAaplB,GAAO,KAAK,GAAG,IAAM,KAAK,WAC9CyG,GAAO,KAAK,UAAW,KAAK,GAAG,EAEjC,KAAK,UAAY,WACf,IAAM,KAAK,cAAc,KAAK,IAAK,EAAI,EACvC8pB,GAAS,KAAK,WAAa,CAC7B,EACF,EACA,KAAKA,EAAQ,GAAMjW,EAAU,GAAM,CACjC,IAAMoY,EAAO,IAAM,KAAK,cAAc,KAAK,IAAK,GAAO,KAAK,YAAcpY,CAAO,EACjF,KAAK,YAAY,EACjB,KAAK,cAAgBiW,EACjBA,GAAS,KAAK,WAAW,EAC3B,KAAK,UAAY,WAAW,KAAK,KAAM,EAAE,EAChCA,GAAS,KAAK,UACvB,KAAK,UAAY,WAAWmC,EAAM,KAAK,SAAS,EAEhDA,EAAK,CAET,EACA,aAAc,CACZ,aAAa,KAAK,SAAS,EAC3B,aAAa,KAAK,SAAS,EAC3B,KAAK,UAAY,KACjB,KAAK,UAAY,IACnB,EACA,UAAW,CACT,OAAOtN,KAAW,IACpB,EACA,YAAa,CACX,MAAO,CAAC,KAAK,IAAK,GAAGzd,GAAG,WAAY,KAAK,GAAG,CAAC,EAAE,KAAMpJ,GAAO,KAAK,QAAQ,QAAQA,CAAE,CAAC,CACtF,EACA,UAAW,CACT,IAAM2xB,EAAwBC,GAAoB,KAAK,GAAG,EAC1DtyB,GAAY,KAAK,IAAK,eAAe,EACrC2E,GAAI,KAAK,IAAK,KAAK,MAAM,EACzB,KAAK,IAAI,OAAS,GAClB,IAAMiyB,EAAY,KAAK,OAAO,IAAKtxB,GAAWuxB,GAAc,KAAK,IAAKvxB,CAAM,CAAC,EACvEyO,EAAiB,KAAK,kBAAkB,KAAK,GAAG,EAChDL,EAAO,CACX,CAAC,EAAG,CAAC,IAAK,QAAS,OAAQ,OAAO,CAAC,EACnC,CAAC,EAAG,CAAC,IAAK,SAAU,MAAO,QAAQ,CAAC,CACtC,EACA,OAAW,CAACzU,EAAG,CAACgW,GAAMhY,EAAI,CAAC,IAAKyW,EAC1B,KAAK,OAASuB,IAAQ1a,EAAS,CAAC0a,GAAM,EAAI,EAAG,KAAK,OAAO,GAC3DtQ,GAAI,KAAK,IAAK,CACZ,CAAC1H,EAAI,EAAG,KAAK,IACXkN,GAAO,KAAK,SAASlL,CAAC,CAAC,EAAEhC,EAAI,EAC7B25B,EAAU33B,CAAC,EAAEhC,EAAI,EAAI,EAAI8W,CAC3B,EACA,CAAC,YAAYkB,EAAI,EAAE,EAAG,MACxB,CAAC,EAGL,IAAM6hB,EAAWF,EAAU,CAAC,EAAE,MAAQ,EAAI7iB,EAC1C,KAAK,IAAI,OAAS,GAClBpP,GAAI,KAAK,IAAK,WAAY,EAAE,EACxB,KAAK,IAAI,YAAcmyB,GACzBr3B,GAAS,KAAK,IAAK,eAAe,EAEpCkF,GAAI,KAAK,IAAK,WAAYmyB,CAAQ,EAClC,KAAK,WAAW,KAAK,IAAK,KAAK,OAAQ,KAAK,QAAQ,EACpD,OAAW,CAAC73B,EAAG,CAACgW,GAAMhY,GAAMyU,GAAOkB,EAAG,CAAC,IAAKc,EAC1C,GAAI,KAAK,OAASuB,IAAQ1a,EAAS,CAAC0a,GAAM,EAAI,EAAG,KAAK,OAAO,EAAG,CAC9D,IAAM8hB,GAAiB,KAAK,IAAI,KAAK,kBAAkB,CAAC,EAClDniB,GAAezK,GAAO,KAAK,OAAOlL,CAAC,CAAC,EACpC0V,GAAWxK,GAAO,KAAK,GAAG,EAChCxF,GAAI,KAAK,IAAK,CACZ,CAAC1H,EAAI,GAAI2X,GAAalD,EAAK,EAAIiD,GAASjD,EAAK,EAAIkD,GAAa,KAAK,MAAQhC,GAAMlB,EAAK,EAAI,KAAK,IAC7FvH,GAAO,KAAK,SAASlL,CAAC,CAAC,EAAEyS,EAAK,EAC9BklB,EAAU33B,CAAC,EAAEyS,EAAK,EAAIqC,CACxB,EAAI,KAAK,IACP5J,GAAO,KAAK,SAASlL,CAAC,CAAC,EAAE2T,EAAG,EAC5BgkB,EAAU33B,CAAC,EAAE2T,EAAG,EAAImB,CACtB,EAAIa,GAAa,KAAK,MAAQlD,GAAQkB,EAAG,GAAKmkB,GAC9C,CAAC,YAAY9hB,EAAI,EAAE,EAAG,MACxB,CAAC,EACD,KAAK,WAAW,KAAK,IAAK,KAAK,OAAQ,KAAK,QAAQ,CACtD,CAEFod,EAAsB,CACxB,CACF,CACF,EACA,SAASwE,GAAcn2B,EAAI4E,EAAQ,CACjC,OAAOoL,GAAeD,GAAgBnL,CAAM,EAAE,KAAMoD,GAAYA,EAAQ,SAAShI,CAAE,CAAC,CAAC,CACvF,CACA,SAAS41B,GAAsBL,EAAM,CACnC,GAAM,CAAE,IAAArd,CAAI,EAAIqd,EAAK,QAAQ,SAAUhzB,GAAMgzB,EAAK,OAAQA,EAAK,GAAG,EAAG,CACnE,OAAQA,EAAK,IACb,KAAMA,EAAK,IACb,CAAC,EACD,OAAAz1B,GAAKoY,EAAK,gBAAiB,EAAI,EACxBA,CACT,CACA,SAAS2d,GAAgBN,EAAM,CAC7B,IAAMze,EAAS,IAAMye,EAAK,MAAM,EAC1B1wB,EAAM,CACV2J,GAAsBsI,CAAM,EAC5BzI,GAAc0B,GAAgBwlB,EAAK,GAAG,EAAE,OAAOA,EAAK,MAAM,EAAGze,CAAM,CACrE,EACA,MAAO,IAAMjS,EAAI,IAAKmJ,GAAaA,EAAS,WAAW,CAAC,CAC1D,CACA,SAASgoB,GAAgBT,EAAM32B,EAAK,IAAM22B,EAAK,MAAM,EAAG,CACtD,OAAOrxB,GAAG,CAAC,SAAU,GAAG6L,GAAgBwlB,EAAK,GAAG,CAAC,EAAG,SAAU32B,EAAI,CAChE,QAAS,EACX,CAAC,CACH,CACA,SAASk3B,GAAkBP,EAAM,CAC/B,OAAOrxB,GAAG,SAAU,UAAYe,GAAM,CAChCA,EAAE,UAAYgW,GAAO,KACvBsa,EAAK,KAAK,EAAK,CAEnB,CAAC,CACH,CACA,SAASU,GAAqBV,EAAM,CAClC,OAAOS,GAAgBT,EAAM,IAAMA,EAAK,KAAK,EAAK,CAAC,CACrD,CACA,SAASQ,GAAyBR,EAAM,CACtC,OAAOrxB,GAAG,SAAUxD,GAAe,CAAC,CAAE,OAAAkE,CAAO,IAAM,CAC7C2wB,EAAK,IAAI,SAAS3wB,CAAM,GAG5BE,GACE,SACA,GAAGlE,EAAW,IAAIG,EAAa,UAC/B,CAAC,CAAE,iBAAAme,EAAkB,KAAAva,EAAM,OAAQib,CAAU,IAAM,CACjD,IAAIjmB,EACA,CAACulB,GAAoBva,IAAS/D,IAAegE,IAAWgb,GAAa,GAAGjmB,EAAK47B,EAAK,WAAa,MAAgB57B,EAAG,SAASiL,CAAM,IACnI2wB,EAAK,KAAK,EAAK,CAEnB,EACA,EACF,CACF,CAAC,CACH,CAEA,IAAIe,GAAU,CACZ,OAAQ,CAACthB,GAAOkI,EAAS,EACzB,MAAO,CACL,MAAO,OACP,QAAS,OACT,SAAU,QACV,QAAS,QACT,cAAe,QACf,SAAU,OACV,KAAM,QACN,OAAQ,QACR,QAAS,QACT,UAAW,QACX,UAAW,QACX,OAAQ,QACR,QAAS,QACT,QAAS,QACT,UAAW,QACX,WAAY,QACZ,cAAe,OACjB,EACA,KAAM,CACJ,MAAO3c,GAAQ,QAAU,OACzB,QAAS,cACT,WAAY,qBACZ,SAAU,GACV,QAAS,GACT,cAAe,GACf,SAAU,IACV,UAAW,GACX,WAAY,yBACd,EACA,SAAU,CACR,cAAe,CAAC,CAAE,cAAAg2B,CAAc,EAAGre,IAAQ3V,GAAMg0B,EAAere,CAAG,GAAKA,EACxE,QAAQ,CAAE,QAAAse,CAAQ,EAAG,CACnB,OAAKA,GAGLA,EAAU,KAAK,UAAYj0B,GAAMi0B,EAAS,KAAK,GAAG,GAAK1uB,GAAE,MAAM,KAAK,UAAU,GAAI,KAAK,GAAG,EACnF0uB,IAAoB,KAAK,SAAW1uB,GAAE,aAAa,IAHjD,IAIX,EACA,cAAcxO,EAAG4e,EAAK,CACpB,OAAO,KAAK,WAAaA,CAC3B,EACA,UAAU,CAAE,QAAAue,CAAQ,EAAGve,EAAK,CAC1B,IAAIve,EACJ,IAAM+8B,EAAYttB,GAAG,IAAIqtB,CAAO,GAAIve,CAAG,EACvC,GAAI,KAAK,gBAAkBA,EACzB,QAAWlY,KAAMoJ,GAAG,IAAIqtB,CAAO,GAAI,KAAK,aAAa,EAAG,CACtD,IAAM7xB,GAAUjL,EAAK,KAAK,YAAYqG,CAAE,IAAM,KAAO,OAASrG,EAAG,SAC7D,CAACE,EAAS68B,EAAW12B,CAAE,GAAK4E,GAAU,KAAK,IAAI,SAASA,CAAM,GAChE8xB,EAAU,KAAK12B,CAAE,CAErB,CAEF,OAAO02B,CACT,EACA,MAAM,CAAE,WAAAhQ,CAAW,EAAGxO,EAAK,CACzB,OAAO9O,GAAGsd,EAAYxO,CAAG,CAC3B,CACF,EACA,MAAO,CACL,QAAQse,EAAS,CACfz3B,GACEy3B,EACA,aACA,iBACA,KAAK,WACL,MAAM,KAAK,SAAS,IAAI,UAC1B,CACF,EACA,WAAY,CACV,KAAK,oBAAoB,CAC3B,CACF,EACA,WAAY,CACV,KAAK,oBAAoB,CAC3B,EACA,cAAe,CACb9tB,GAAS,KAAK,QAAQ,EACtB,OAAO,KAAK,QACd,EACA,OAAQ,CACN,CACE,KAAM,oBACN,SAAU,CAAC,CAAE,WAAAge,CAAW,IAAMA,EAC9B,QAAQ,CAAE,QAAAjoB,CAAQ,EAAG,CACnB,IAAMk4B,EAAU,KAAK,UAAU,EAC3BA,GAAW98B,EAAS88B,EAAQ,KAAM,OAAO,GAAKA,EAAQ,UAAY,CAACl4B,EAAQ,SAASk4B,EAAQ,QAAQ,GAAK,CAACA,EAAQ,WAAW,GAC/HA,EAAQ,KAAK,EAAK,CAEtB,CACF,EACA,CACE,KAAM,UACN,KAAM,GACN,SAAU,CAAC,CAAE,WAAAjQ,CAAW,IAAMA,EAC9B,QAAQzhB,EAAG,CACT,IAAItL,EACJ,GAAM,CAAE,QAAA8E,EAAS,QAAAmoB,CAAQ,EAAI3hB,EACvB0xB,EAAU,KAAK,UAAU,EAC3B/P,IAAY3L,GAAO,MAAoC0b,GAAQ,WAAcl4B,IAC/EwG,EAAE,eAAe,GAChBtL,EAAKmO,GAAEvG,GAAco1B,EAAQ,GAAG,IAAM,MAAgBh9B,EAAG,MAAM,GAElEi9B,GAAwB3xB,EAAG,KAAK,MAAO0xB,CAAO,CAChD,CACF,EACA,CACE,KAAM,UACN,GAAI,CAAC,CAAE,cAAAE,CAAc,IAAMA,EAC3B,SAAU,CAAC,CAAE,QAAAJ,CAAQ,IAAM,IAAIA,CAAO,GACtC,QAAQxxB,EAAG,CACT,IAAItL,EACJ,GAAM,CAAE,QAAA8E,EAAS,QAAAmoB,EAAS,OAAAhiB,CAAO,EAAIK,EACrC,GAAI5D,GAAQuD,CAAM,GAAK,CAAC/K,EAAS,KAAK,UAAW4E,CAAO,EACtD,OAEF,IAAMk4B,EAAU,KAAK,UAAU,EAC3B7b,GAAO,GAYX,GAXI8L,IAAY3L,GAAO,KACrBH,GAAO,EACE8L,IAAY3L,GAAO,IAC5BH,GAAO,OACE8L,IAAY3L,GAAO,GAC5BH,GAAO,WACE8L,IAAY3L,GAAO,KAC5BH,GAAO,OACE8L,IAAY3L,GAAO,OAC3BthB,EAAKg9B,EAAQ,WAAa,MAAgBh9B,EAAG,MAAM,GAElD,CAACmhB,GAAM,CACT7V,EAAE,eAAe,EACjB,IAAMzG,GAAW4K,GAAG7H,GAAc9C,CAAO,EACzCD,GAASF,GACPwc,GACAtc,GACA1E,EAAU0E,GAAWwB,IAAOsB,GAAQtB,GAAI,QAAQ,CAAC,CACnD,CAAC,EAAE,MAAM,CACX,CACA42B,GAAwB3xB,EAAG,KAAK,MAAO0xB,CAAO,CAChD,CACF,EACA,CACE,KAAM,aACN,GAAI,CAAC,CAAE,QAAAH,CAAQ,IAAMA,EACrB,OAAQ,CAAC,CAAE,QAAAA,CAAQ,IAAMA,EACzB,SAAU,CACR,IAAMG,EAAU,KAAK,UAAU,EAC3BA,GAAW98B,EAAS88B,EAAQ,KAAM,OAAO,GAAK,CAAC,KAAK,UAAU,KAAM32B,GAAOsB,GAAQtB,EAAI,QAAQ,CAAC,GAClG22B,EAAQ,KAAK,CAEjB,CACF,EACA,CACE,KAAM,aACN,GAAI,CAAC,CAAE,cAAAE,CAAc,IAAMA,EAC3B,OAAQ,CAAC,CAAE,QAAAL,CAAQ,IAAMA,EACzB,QAAQ,CAAE,OAAA5xB,CAAO,EAAG,CACb,KAAK,cAAcA,CAAM,IAG1B,KAAK,QAAQ,yBAA2B,KAAK,eAC/C0D,GAAM,KAAK,cAAe,KAAK,OAAO,EAExCvJ,GAAS6F,EAAQ,GAAG,KAAK,OAAO,UAAU,EAC5C,CACF,EACA,CACE,KAAM,OACN,GAAI,CAAC,CAAE,cAAAiyB,CAAc,IAAMA,EAC3B,OAAQ,CAAC,CAAE,QAAAL,CAAQ,IAAMA,EACzB,QAAQ,CAAE,OAAA5xB,CAAO,EAAG,CAClB,GAAI,CAAC,KAAK,cAAcA,CAAM,EAC5B,OAEF,IAAM2wB,EAAO,KAAK,YAAY3wB,CAAM,EAC9BkyB,EAAe,IAAM,CACzB,IAAMC,EAAY,KAAK,IACrB,GAAGn1B,GAAQgD,EAAQ,IAAI,KAAK,OAAO,EAAE,EAAE,OAAOA,CAAM,EAAE,IAAK5E,GAAOyJ,GAAOzJ,CAAE,EAAE,MAAM,CACrF,EACAyJ,GAAO,KAAK,QAAS,CACnB,KAAMA,GAAO,KAAK,OAAO,EAAE,KAC3B,IAAK,KAAK,iBAAiB8rB,EAAK,kBAAkB,CAAC,CACrD,CAAC,EACD,KAAK,aACHwB,EAAYttB,GAAO,KAAK,OAAO,EAAE,IAAMnO,EAAQ2I,GAAIW,EAAQ,cAAc,CAAC,EAC1EA,CACF,CACF,EACA,KAAK,UAAYyJ,GAAc,CAACknB,EAAK,IAAK,GAAGA,EAAK,MAAM,EAAGuB,CAAY,EACvEA,EAAa,CACf,CACF,EACA,CACE,KAAM,aACN,GAAI,CAAC,CAAE,cAAAD,CAAc,IAAMA,EAC3B,OAAQ,CAAC,CAAE,QAAAL,CAAQ,IAAMA,EACzB,QAAQvxB,EAAG,CACT,IAAM0xB,EAAU,KAAK,UAAU,EAC3Br1B,GAAQ,KAAK,QAAS,QAAQ,GAAKq1B,EAAQ,MAAQ1xB,EAAE,QAAU,KAAK,cAAc0xB,EAAQ,GAAG,GAAK98B,EAAS88B,EAAQ,KAAM,OAAO,GAAKA,EAAQ,eAAiB,CAAC,KAAK,MAAM,KAAM32B,GAAO22B,EAAQ,WAAa32B,GAAMsB,GAAQtB,EAAI,QAAQ,CAAC,GACzOiF,EAAE,eAAe,CAErB,CACF,EACA,CACE,KAAM,OACN,GAAI,CAAC,CAAE,cAAA4xB,CAAc,IAAMA,EAC3B,OAAQ,CAAC,CAAE,QAAAL,CAAQ,IAAMA,EACzB,QAAQ,CAAE,OAAA5xB,CAAO,EAAG,CAClB,IAAIjL,EACJ,GAAI,CAAC,KAAK,cAAciL,CAAM,EAC5B,QAEDjL,EAAK,KAAK,YAAc,MAAgBA,EAAG,WAAW,EACvD,IAAMg9B,EAAU,KAAK,UAAU,GAC3B,CAACA,GAAWA,EAAQ,MAAQ/xB,IAC9B,KAAK,aAAa,CAAC,CAEvB,CACF,CACF,EACA,QAAS,CACP,WAAY,CACV,IAAIjL,EACJ,OAAOE,EAAS,KAAK,WAAYF,EAAKktB,KAAW,KAAO,OAASltB,EAAG,GAAG,GAAKktB,EAC9E,EACA,MAAM,aAAanM,EAAW1a,EAAI,CAChC,GAAM,CAAE,QAAAw2B,CAAQ,EAAI,KACd/b,EAAYlR,GAAOitB,CAAO,EAGhC,GAFAx2B,EAAKya,EAAYC,GAAa1a,EAC9B,MAAMiH,GAAW,OAAO,CAACjH,EAAIw2B,CAAO,CAAC,EACjCx2B,EAAI,CACN,IAAMwR,EAAO/H,GAAOzJ,CAAE,EAAE,IAAMyJ,GAAO+sB,CAAO,EAAE,IAAM/b,EAChDjJ,EAAO,GACTvN,GAAIjE,EAAI,kBAAmB,GAAGwR,EAAOkJ,EAAY,KAAK,QAAQ,IAAI,CAEtE,CACAzW,GAAIjE,EAAI,WAAY,2BAA2Bya,CAAS,QAAQA,CAAS,KAAK,EAC9ElR,GAAOitB,EAAS/b,CAAS,EACzB,MAAM,QAAQ,IAAI,CAChBxT,GAAW,MAAMuvB,EAAS,CAAE,OAAQ9b,CAAU,EAAG,KAAK,QAAQ,EAC9DzT,GAAW,MACTjH,EACA,CAAE,SAAU,2BAA2B0a,CAAS,QAAQA,CAAS,KAAM,EACvE,KAAK,QACP,EAAE,QAAQ,IAAMzW,GAAIjE,EAAI,CAAE,SAAU,GAAI,gBAAiB,EAAG,CAAC,CAAC,CAChE,CAAC,EAAE,MAAMzC,EAAI,CACf,EACA,YAAYyC,EAAI,CACd,OAAO,KAAK,cAAcA,EAAI,MAAM,GAAK,KAAK,cAAcA,EAAI,UAAU,CAC5E,EACA,cAAcA,EAAI,CAChB,OAAOnG,EAAS,KAAK,UAAWmG,CAAE,GAAKX,GAASW,EAAI,KAAK,OAAO,CAClE,EACA,iBAAiB6P,EAAW,CAC1B,GAAM,CAAE,IAAAqI,EAAK,OAAAtT,EAAQ,QAAA+wB,CAAQ,EAAI,KAC3B,CAAE,IAAA3rB,EAAK,OAAQymB,CAAQ,EAAIhnB,GAAOlH,GAAMozB,GAAW/wB,GAAUsT,EAAKA,CAAG,CAAC,EAC5E,OAAOlO,EAAMymB,EAAU5gB,CACzB,EACA,qBAAsB,CACpB,KAAK,QACH,OACA,KAAK,UAAU,OAAQ7P,GAAO,CAAC,KAAK,YAAYA,CAAE,CAAC,EACnD,CACE,GAAG,KAAK,OACR,KAAM,GACN,MAAO,GACP,IAAK,UAAU,KAAK,KAAK,GACzB,SAAU,KAAK,WAAa,GAAO,KAAK,IAAM,KAAK,QACrD,CACF,CACF,CACF,CACF,EACA,SAAS42B,GAAwB3xB,EAAGmW,EAASub,EAAS,CACpD,IAAIh9B,EAAImM,EAAI4a,EACZ,GAAM,CAAE,QAAAjiB,GAAS,QAAAmoB,EAAQ,EAAI3hB,EACzB6V,GAAO,GACP8L,KAAY3L,GAAO,KACrBH,GAAO,EACE8L,KAAY3L,GAAO,IAC5BH,GAAO,OACE8L,KAAY3L,GAAO,KAC5BH,GAAO,WACE8L,KAAY3L,GAAO,MAC5BH,GAAO,OACE8L,KAAY3L,GAAO,OAC3BthB,EAAKg9B,EAAQ,WAAa,MAAgBh9B,EAAG,MAAM,GACnDmM,EAAK6wB,EAAQ,OAAS,MAAgB7wB,EAAG,KAAK6wB,EAAS,EAAK,GAE3D,CAAC7b,KACH7V,EAAE,eAAe,GAChByb,EAAKiW,EAAQ,OAAS,MAAgBjW,EAAG,KAAKiW,EAAS,EAAK,EAC7Dvb,EAAQ9c,GAASwc,GAAMM,EAASA,EAAQ,QAAQub,EAAQ,UAAYl4B,EAAO,CAAC,CAAC,EAAE,MAAM,EAEzF,CAEA,IAAIu4B,GAAa,CACf,OAAQ,CAAChiB,EAAK,EACd,KAAM,SACN,MAAO,CACL,OAAQ,OACV,EACA,KAAM,CACJ,OAAQ,EACV,EACA,SAAU,CACR,MAAO,CAAC1b,EAAG4e,IAAQpQ,GAAE1G,GAAU8W,CAAG,EAClC,OAAQ,CACN,OAAO,KAAK,MAAM,kBACpB,EACA,OAAO,CAAE,OAAAtT,CAAO,EAAGsT,EAAK,CACtB,OAAOtT,IAAWA,IAAW,IAAQnD,GAAO,KAAK,KAAK,IAAMyW,GAAO,KAAK,MAAM,oBAAsBpQ,GAAElD,EAAQsT,CAAG,EACnH,CACF,EACA,QAAS,CACP,IAAIve,EACJ,GAAM,CAAE,OAAAiL,EAAQ,MAAAqyB,CAAM,EAAI,KAC1B,GAAI,CAACryB,EACH,OAEF,IAAI2R,EACEha,EAAO8E,GAAQuD,CAAM,EAAI,QAAU,cACnCwM,EAAOxM,EAAOrI,CAAI,EAClB1B,IAAUlB,EAAKs9B,EAAM,QAAU,MAAgBt9B,EAAG,CAAC,EAAKs9B,EAAM,MAAM,CAAC,EAAE,KAAO31B,GAAQ21B,EAAO,QAAQ,IAAM1gB,EAASnN,GAAG,SAAU6tB,CAAK,EAAE,OAAQj3B,IAAOA,GAAG,QAAQ,EAAE,CAAC,GAAKuW,EAAO,YAAc0gB,EAAM,MACvM7lB,IAASvW,KACX+J,EAAOrI,CAAI,EAAI1B,GAEnB,EACA,OAAQ,CACN,CACE,KAAM,SACN,SAAU,CACR,KAAK,MAAM,CACb,CACF,EACA,CACE,KAAM,QACN,GAAI,CAAC,CAAE,IAAAqd,CAAI,IAAMA,EAAI,QAAQ,MAAM,EACnC,SAAU,CACR,KAAK,MAAM,CACb,CACF,CACF,CACF,EAEIgf,GAAO,CACT,QAASjf,GACT,OAAQ,CAACjD,EAAK,EACd,KAAM,OACN,MAAO,CACL,QAAS,QACT,SAAU,OACV,cAAe,OACf,YAAa,OACb,gBAAiB,OACnB,EACA,KAAM,CACJ,OAAQ,iBACR,SAAU,gBACV,QAAS,GACT,SAAU,EACV,cAAe,EACf,YAAa,EACb,gBAAiB,EACnB,EACA,WAAY,CACV,KAAK,SAAWjW,GAAS,KAAK,IAAK,cAAe,kBAAkB,CACtE,EACA,QAAS2Y,GAAS,CAAE,OAAQ,CAAC,CAAE,SAAAiP,EAAU,gBAAAwQ,CAAgB,IAAMxQ,GAAYwQ,CAAgB,CAAC,EAC5F,OAAQ,CACN,CACE,MAAM,CAAE,KAAA/e,CAAK,EAAG,CACdzY,GAAY,KAAK,IAAK,KAAK,SAAU,CAACyY,EAAK,KAAMC,GAAQA,EAAI,OAAS,CAAC,CAAC,CAC1E,EACA,OAAQ,CAAC,QAAQ,CACnB,EACA,CACE,KAAKjY,EAAM,CACT,GAAM,CAAE,KAAAgY,CAAK,EAAIhY,EACb,CAAE,QAAAg3B,EAAS,SAAAzQ,EAAU,gBAAAwQ,EAAiB,OAAAlO,CAAO,EAAI,KAErD,GADAtC,EAAW,KAAK,IAAI,EAAG3b,GAAK2b,CAAQ,CAAC,EACjC,EAAEyQ,GAAWzQ,GAAYwQ,IAAoBE,GAAmBjf,CAAI,GAAKA,EAAK,CAAC,EAAE,KACnF,CAACpY,GAAIzB,KAAM6Z,EAAK,KAAMC,IAAQA,GAAI9Z,EAAC,GAAK8Z,GAAI9Z,EAAC,EAAE,cAAgByB,GAAG,WAAW,CAC/E,EACE,OAAOI,EAAK,WAAaA,EAAK,cAAgB,GAEhD,IAAIk3B,GAASC,GAAUnf,EAAM6Q,CAAM,EAC/BuO,GACAC,GACAL,EACF,CAACI,GAASC,EAAU,EAAIC,GAAatf,EAAMkf,GAAQF,IAAY,MAAM,EAErEI,GAAUG,GAAUvf,CAAI,EAE1B,IAAMwf,GAAgBJ,GAAQ,IAC3BK,IAAWn7B,GAAMm7B,GAAQ,cAAc,EAAIP,IAAUO,GAAO,OAAS,EACxE,EACMtuB,GAAS,KAAK,IAAI,EAAG,GAAGquB,EAAa,EACvCE,GACAC,GACAC,GACJ,OAAIrR,GAAYwQ,KACdW,GAAgBF,GAAc,IAC5B,CAACK,GAAK15B,KAAM44B,EAAkB5tB,GAAS0uB,GAAMtR,EAAWA,GAAYpoB,GAAI,GAAK,EAC/E,EACK44B,IACHxQ,EAAW,KAAK,IACd,GAAGiR,GAAc,IAAI,CAACK,GAAK15B,KAAM05B,GAAMH,GAAcv5B,EAAC,EAAIgL,EAAM,CAClE,GAEFwuB,GAAgB/sB,GAAK,KAAK,cAAe,SAAU,KAAK,IAAK,EAAI,EACjEgtB,GAAchtB,GAAK,KAAK,YAAa,SAAU,KAAK,IAAK,EAAI,GAExD,CACL,QAAAwsB,GACA,WAAAC,GACA,cAAAK,GACA,cAAAC,GACA,YAAAC,GACA,QAASrR,EACT,OAAQ8Q,GAAaluB,GAAS,EAChC,CACF,EACA,MAAM,CAAE,OAAAA,EAAQ,QAAA2uB,CAAQ,EAAG,CACzBj0B,GAAI,KAAK,IAAK,gBAAiBi0B,GAAW,EAAE,EAC5C3uB,IAAW,IAAStF,GAAI,KAAK,IAAK,SAAUsF,CAAM,CACpD,EACA,OAAQ,CAAC,QAAQ,CACnB,EACA,CACE,KAAK,CAAE,KAAA6O,EAAM,cAAA0f,EAAe,cAAAC,EAAe,YAAAC,CAAY,EAAG,CACxD,MAAO,CACL,SAAUF,GAAiB,CAACT,GAAmBjf,CAAI,EAAIxG,GAAa,KAAK,IAAKmmB,EAAeC,CAAW,EAAI,EAC9G,CACF,EACA,MAAM,CAAE,QAAAR,EAAS,SAAAW,EAAU,cAAAL,EAAe,WAAAL,CAAW,EAAG,CAClD,CAACU,GAAY,CAACV,GAGlBD,EAAQ,QACN,CAACK,EAAQt5B,IAAMs5B,EAAO,QAAQ,CAAC73B,GAAI0Y,KAAM,CACvC,GAAI,CAAC3S,GAAGC,EAAC,EAAIyxB,GAAcA,EAAWl5B,CAAC,EAAEma,EAAC,GAAK,CAAC,EAAG,CAAC,EAChDyf,IACFnyB,IAAKmyB,EAAWL,EAAcv5B,CAAC,GAEjC0F,GAAIjE,GAAI,YAAa,aAAa+F,EAAC,OAAOC,EAAC,KAAK,CAClD,CAAC,CACH,CACF,EACA,OAAQ,CAAC,SAAU,QAAQ,CAC7B,CACF,CACF,EACA,SAASqxB,GAAmBjf,EAAM,CAChC,OAAOA,EAAK,KAAK,EAAE,KAAMpY,GAAOiE,GAAIjE,EAAI,UAAU,IAAM,UAAU,CACpE,CACA,SAAS03B,GAAatf,EAAMkf,EAAQxc,EAAM,CACxC,IAAM0c,EAAU,CAAC,EACXC,EAAa,CAAC,EACdG,EAAgB,MAAMxf,EAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAC9CggB,GAAa,EACjB,QAAS/f,MAAOD,EAAM,CAChB7X,KACF8X,GAAMA,GAAI,QAAQ,GAEpB,IAAI9O,GAAS,EACb,QAAWmP,MAAKL,GAAK,CACnB,GAAM,CAAE,YAAAO,GAAa,aAAArI,EAAa,EAAI8H,GAAIK,EAAC,EACrC3W,GAAQ+Y,EAAOpC,GAAIkf,EAAc,QAAQ,KAAK,IAAI,GAAGA,CAAa,CAAC,EACzES,GAAKb,EAASz1B,GAAOsW,GAAIK,EAAC,CAAC,EAC3B2f,GAAKZ,EAAY11B,GAAO,EACrBA,GAAQ2W,IAAKE,IAAerY,GAAQ,GAAK,GAC1Cq3B,EAAc71B,EAAK,EAAIq2B,EACzB,CAAC,EACDR,EAAc71B,EAAK,GAAKwO,GAAe+mB,EACvC/tB,GAAS,KAAK,IAAIA,GAAQgH,EAAY,CACxC,CACA6nB,IAAc7uB,GAAS+tB,CACzB,CACA,MAAO,CAACE,EAASC,CAAU,CAC7B,CACA,SAASF,GAAUnf,EAAMhZ,EAAK,CAC5B,IAAMH,EAAOmZ,EAAK,KAAK,EAAE,KAAMpY,GAAOX,GAASW,EAAIZ,CAAG,CAAC,EACvD,OAAO9D,EAAQ2D,EAAOgF,GAAIhF,EAAM,WAAW,EAAIgF,GAAImU,EAAK,CAAC,EAAE,CAAC,EAAG,aAAa,CAAC,CAC/E,CACA,SAASuf,GAAUvf,EAAM,CACvB,IAAMof,EAAU,CAAC,EACjB,QAAWnf,KAAOD,EAChB,QAAW7Z,KAAK8Z,EACdggB,GAAKb,EAASj5B,EAAG8Z,EAAI9Z,CAAC,CAAC,EAG3B,OAAOi5B,CACT,CACA,SAASa,GAAKt+B,EAAOgI,EAAOlH,EAAO,CAC5Bd,EAAMgI,CAAK,IACdhI,EAAMgI,CAAK,EAAI,CAAC,GAElBhI,EAAMgI,CAAK,EAAE,KAAKlH,CAAK,CACzB,CAEA,IAAIy9B,GAAc,CAChB,KAAM,SACN,MAAO,CACL,OAAQ,OACR,IAAK,OACP,EACA,KAAM,CACJ,OAAQ,MACR,IAAK,EACP,EACA,SAAU,CACR,SAAU,CAAC,CAAE,OAAA1zB,CAAO,EAAGsT,IAAQ9O,GAAGxE,EAAQsT,CAAG,CAC/C,EACA,QAAShB,GAAO,CACd,OAAQ,CAAC,CAAE,IAAAgB,EAAK,SAAA1Z,CAAS,IAAMA,EAAS,OAAO,CAAC+5B,EAAWv4B,IAAOu4B,EAAU,OAAOv4B,EAAI,GAAGA,EAAG,QAAQ,EAAG,CAACkY,CAAG,CAAC,CAC/G,CAAC,EACD,OAAQ,CAEN,KAAM,cACN,GAAI,IAAM,SAAS,MACnB,SAAU,CACR,KAAK,MAAM,QAAQ,CACrB,CACF,EACA,OAAQ,CACN,MAAO,CACL,MAAO,CACL,MAAO,KAAK,IAAMC,GAAQ,KAAK,QAAQ,EAAI,CAAC,KAAK,QAAQ,GAAG,IAAIhc,EAAK,CACvE,CACF,EACA,MAAM,CAAE,KAAAic,CAAK,EAAG,CACd,OAAW,CAAE,QAAAogB,EAAS,SAAAh6B,CAAS,IAAK4Z,EAClC5Z,EAAS,QAAQ,CAACwB,EAAIzB,IAAM0F,GAAIjE,EAAI,YAAaw4B,EAAQj6B,CAAC,CAAC,CAAC,CAEhE,EACA,OAAQ,CAAC,QAAQ,CACnB,CACF,EACA,SAASpC,GAAMqC,EAAU,CACvB,GAAIA,EAAS,OAAS,EACpB,MAAO,CAAE,QAAS,CAAC,EAAE,EAAG,SAAAA,CAAS,EAEnC,IAAIg6B,EAAUh6B,EAAS,IAAIi6B,EAAS,EAC9Bn7B,EAAM,KAAK,IAAI,GAAGk7B,CAAO,EAC/B,MAAO,CACL,QAASh6B,EAAS,IAAI,CAACwB,EAAIzB,IAAMi6B,EAAQj6B,CAAC,EAAE,QAAQ,CAAC,IAAMjB,EAAI,QAAQ,CAAC,EAAI,GAAKA,CAAG,EACpF,SAAAkB,CACF,CACF,CACA,SAASi6B,GAAUj9B,EAAS,CAC1B,IAAM6K,EAAQpJ,GAAKzB,EAAQ,MAAO,CAAC,UAAW,WAAW,CAAC,EACrD2F,GAAU3F,CAAO,GACpByI,GAAIzI,EAAS,UAAW,QAAS,WAAW,EAE9CyI,GAAIzI,EAAS,YAAa,EAAE,EAC5B,IAAM+N,EAASD,GAAa9N,CAAO,EAAE,OAASmP,GAAenP,EAAS,SAAU,aAAa,EAC7F,OAAAyI,GAAIzI,EAAS6K,CAAK,EACXkD,CACT,CAEA,IAAImvB,GAAoB,CACtB,KAAM,SACN,MAAO,CACL,OAAQ,MACV,EACA,KAAM,CACJ,OAAQ,EACV,EACA,SAAU,CACR,OAAQ,CACN,IAAK,CAAC,CAAE,OAAA9zB,CAAO,EAAGsT,IAAQ3V,GAAMqC,EAAQsT,CAAG,EAC3C,QAAS,CAAC,CAAE,OAAAtT,CAAO,IAAMA,CAC3B,CACF,EACA,QAASsS,GAAO,CAAE,OAAQ,CAAC,CAAE,OAAAtS,CAAO,IAAMA,CAAO,CAAC,EAClD,OAAQ,CACN,MAAO,CACL,OAAO,KAAK,OAAS,CAAE,OAAQ,KAAK,OAAO,YAAa,EAAI,EAC9D,EACA,MAAM,CAAE,OAAA2E,CAAO,EAAG,CAChBtF,GAAI,KAAK,IAAK,CAAE,UAAWsF,CAAO,CAAC,CACrC,EACA,OAAQ,CAAC,QAAQ,CACnB,CACF,EAEIovB,GAAiB,CACnB,MAAO,CACL,OAAQ,QACR,UAAW,QACX,aAAc,QACd,UAAW,MACb,EACA,KAAM,CACJ,OAAQ,GACR,UAAW,GACX,aAAc,GACd,UAAW,CACb,EAEA,QAAS,CACPnoB,GAAS,CAAE,OAAQ,CAAC,CAAE,OAAAooB,CAAO,IAAMA,CAAO,CAAC,EAC3C1hB,GAAO,CAAE,OAAQ,CAAC,CAAE,IAAAgB,CAAI,IAAM/H,GAAc+H,CAAG,CAAE,CAAC,CACpD,EACA,OAAQ,CACN,MAAO,CACL,GAAI,CAAC/W,GAAU,KAAK,GAAG,EACrB,MAAO,GAET,IAAI03B,EAAY,GACVC,EAAMnuB,GAAe,KAAK,IAAK,SAAU,aAAa,EACtD,CAAE,KAAAT,EAAM,iBAAAgH,CAAiB,EAAI,SAC7Bd,EAAgB2B,GAAa,KAAK,GAAG,EACrC,CAAE,OAAQC,CAAe,EAAIhC,GACjCI,IAAkBlG,EAAOgH,EAAmBd,CAC9C,EACMa,GAAqBC,IAAqBd,GAAiBlG,IAASkG,EAE1E,GADAyoB,EAAY,QAAQ5nB,GAAqB,QAAU,GAAGe,CAAc,IAAI,GACpE,KAAK,OAAQ,CACf,IAAMR,GAAOlI,GAAa8G,CAAa,EAAE,OAAS9G,GAAa,KAAK,GAAG,EAAE,OACzEuvB,GAAa,MAAMrnB,EAAI,IACzB,KAAO,CACL,GAAI,KAAK,UACP,GAAIP,GAAoB,CACtB,IAAM8nB,GAAc,KAAK,YAAc,GAAO,KAAK,IAAMx2B,GAAM,KAAK,UAAW,KAAK,GAAG,EACjF,CAAE,IAAAyH,EAAI,EAAIP,GAAOsvB,EAAW,EAClCF,GAAa7uB,GAAM,GAAKA,GAAMgI,EAAiB,EAAI,MAAMhI,EAAG,KAAO,EACrE,MACE6uB,GAAa,MAAMluB,GAAeyF,EAAe,SAAUnM,GAAImM,EAAe,WAAW,CAAC,CAAC,KAG3F,KAAK,eAAiB,GACxByoB,GAAa,MAAMvvB,GAAa,KAAK,IAAI,kBAAkB,EAAE,MAAM,KAC1DtO,EAAU,KAAK,YAAY,EACpC69B,GAAa,MAAM,KAAK,YAAY,KAC3B,KAAK,cAAgBj/B,EAAS,KAAK,aAAc,IAAI,EAC9Di/B,GAAa,MAAMv9B,EAAQ,KAAK,YAAY,CAAC,KACpCR,EAAS,KAAK,YAAY,IACnC+9B,GAAa,MAAMvvB,GAAa/G,GAAM,KAAK,aAAc,KAAK,GAAG,CAAC,EAAE,MAAM,KAE9E,CACA,OAAAs2B,GAAa,GAAGC,EAAM,MAAMA,CAAG,KAAO,EAAE,IACjC,CAAE,UAAAD,CAAU,CACrB,EACA,MAAM,CAAE,UAAAA,CAAU,EAAG,CACnB50B,GAAI,KAAK,IAAK,YAAa,OAAO,KAAK,WAAa,CAAC,OAAO40B,CAAS,GAAG,CAC1E,EACA,OAAQ,CAAC,QAAQ,CACnB,CACF,EAEIG,GAAY,6NAEZC,GAAa,6NAEbC,GAAiB,6IAEjBC,GAAS,2IAETC,GAAqB,wIAErBC,GAAgB,6IAEhBC,GAAmB,6IAEnBC,GAAmB,4mCAEnBC,GAAc,6IAEdC,GAAiB,qIAEjBC,GAAqB,qIAErBC,GAAa,kNAEbC,GAAc,gOAEdC,GAAe,+NAEfC,GAAoB,yJAEpBC,GAAe,qJAEfC,EAAwB,0JAExBC,EAAmB,sJAEnBC,EAAU,mHAEVC,EAAQ,uIAERC,EAAM,CACR,KAAM,MACN,MAAO,CACL,MAAO,OACP,OAAQ,OACR,MAAO,MACT,EACA,KAAM,CACJ,MAAO,CACT,EACA,WAAY,CACV,KAAK,IAAM,KAAK,OAAO,EAAE,KAAMp6B,GAAO,CACpC,GAAI,CAAC,KAAK,WACR,OAEF,IAAMq6B,EAAMC,EAAUt6B,EAAI,KAAK,GAAG,EAClC,OAAI,KAAK,OAASq6B,IAAQ,KAAK,OAC7B3xB,GAAS,KAAK,KAAK,EAErB6xB,EAAoB,KAAK,KAAMF,EAAKr6B,CAAE,EAC/B,KAAK,MAAQq6B,CACtB,EAAG98B,EAAI,CACT,EACA,cAAe,CACb,KAAK,IAAI,KAAM88B,GAAQ,CACjB,KAAK,aAGLp5B,GAAc,KAAK,GAAG,IACxB,KAAK,IAAI,OAAS,IAEpByH,GAAS2xB,CAAG,EACZ,KAAK,MAAQ,KACf,CAAC,EACD,KAAK,IAAM,IACb,EACA,QAAS,CACP,MAAM,QAAS,CACf,CACF,CACF,EACA,SAASC,EAAUt6B,EAAIw6B,EAAM,CAC3B,GAAIv5B,GAAcu5B,CAAI,GAAK7yB,GAAM6yB,EAAM,QAAQ,EAAG,CAChDA,EAAK,OAAS,GACd,IAAM1f,EAAO0f,EAAK,mBAClB,OAAOC,EAAOz6B,EAAI8a,CAAI,EAAIA,EAAOxS,GAAMkyB,EAAMx6B,CAAE,CACjD,CACA,IAAM5D,EAAOo+B,EAAK,iBAClB,OAAOC,EAAOz6B,EAAI5D,CAAI,EAAIA,EAAO8L,GAAOsyB,EAAMx6B,CAAE,CAClD,CACA,SAASy6B,EAAOz6B,EAAInE,EAAO,CACzB,OAAO8L,GAAM3H,EAAI,KAAK,GAAK2H,GAAM9L,EAAO,KAAK,GAAKmE,EAAG,YAAcnE,EAAM,SAC3E,CACA,SAAS0+B,EAAoBv6B,EAAIgC,EAAK,CACpC,IAAM9E,EAAQ,CAAC,QAAS,QAAQ,EAC5Bc,EAAad,EAAM,IAAKX,GAAS,KAAKA,CAAI,CAAC,EAC1CyB,EAAW,KAAMjC,GAAQA,CAAG,IAC/BiC,EAAad,EAAM,IAAKX,GAASuD,GAAKkC,EAAKzF,CAAI,CAAC,GAElD,IAAMm+B,EAAU56B,GAAKkC,EAAK,SAAS,EAC/B04B,GAAW,CAAC18B,EAAW,KAAMjC,GAAQA,CAAG,IAC1CiC,EAAa08B,EAAQ,MAAM,GAAG,EAAE,MAAM,CAAC,GAEzC18B,EAAW,QAAQ,CAACjC,EAAKwC,KAAMuB,GAAKE,EAAI9C,EAAMqB,EAAC,EAAGjD,EAAQS,CAAG,EAAI,KAAK,OAAS,IAAI,CAAC,CACtF,CAEA,IAAIs+B,EAAM,CACR,OAAQ,CAACD,CAAG,EACZ,KAAM,MACN,MAAO,CACL,IAAK,OACL,KAAM,OACN,WAAY,OACZ,gBAAiB,OACnB,EACA,KAAM,CACJ,gBAAiB,EACnB,EACA,QAAS,CACPhjB,GAAS,CACP,MAAM,SAAU,CACd,IAAMijB,EAAM,MAAM,KAAK,IACnBA,GACFM,EAAgB,KAAK,KAAMN,CAAG,CAElC,EACA,QAAS,CACP,WAAY,GACZ,gBAAiB,CAAC,KAAM,QAAS,OAAO,CAC1C,CACF,CAAC,CACH,EACA,MAAM,WAAY,CACZxgC,EAAS,KAAK,IAAK,GAAG,IACxB,CAAC,KAAK,IAAK,KAAK,IAAI,EAAI,KAAK,IAAI,MAAM,GAAG,GAE5C,IAAMwgC,EAAM,MAAM,KAAK,IACnBA,IACFM,EAAgB,KAAK,KAAMN,CAAG,EAC1B,KAAK,iBACPO,GAAeP,CAAG,EAGxB,EACA,QAAS,CACP,MAAM,QAAS,CACb,OAAI1yB,GAAM,KAAK,IAAK,KAAK,GAAK,CAAC,KAAK,IAAI,UAAY,KAAK,IAAI,UAAY,QACvE,MAAM,IAAI,QAASb,GAAYhC,GAAK,KAAK,IAAK,OAAQgC,CAAO,CAAC,EAEzD+zB,GAAS,MAAMC,GAAQ,KAAK,GAAG,EAAG,KAAK,IAAI,GAAK,QAAQ,OAAO,gBAAgB,CACxF,CACF,CACF,EACA,SAASH,EAAgB36B,EAAI,CAC3B,GAAM,CAAE,IAAAkY,CAAI,EAAI,KAChBnZ,GAASiB,EAAIF,GAAKoY,EAAK,OAAO,EAAG,QAAQ,EACzC,QAAS3Z,EAAI,EAAGA,EAAI2Z,EAAI,MAAM,OAAQ3Z,IAAK,CACzC,IAAMhC,EAAO2b,EAAI,MAAM3Z,CAAC,EACxB0F,GAAIjE,EAAIzD,EAAM0H,GAAIiU,EAAK3b,CAAI,CAAC,CAC9B,CACA,QAAW8D,KAAa,KAAK,WAAY,CACvC,GAAM,CAAC9D,EAAM1B,CAAK,EAAI,KAAK,WAAWwF,CAAS,EAAE,MAAM,IAAK,CAAC,EAC7DP,GAAKE,EAAIzD,EAAM1B,CAAK,CACtB,CACK,KAAK,IAAI,IACZoF,GAAWD,EAAI,IAAI,CAEvB,CACA,IAAM86B,GAAU5hC,GAAQ,MAAO2uB,GACzBA,EACEpuB,EAAWouB,EAAK,OAAO,EAClB,mBAAmBA,EAAI,MAAM,GAAG,EAAE,CAAC,CAAC,GAEnC,MAAM,MAAMA,CAAG,GAAG,KAAK,EAG1B,QAAQ,OAAO,CAEzB,EACD,SAASgT,GAASR,EAAKU,EAAM,CAC3B,OAAIA,GAAQlhC,EAASwgC,EAAK,SAAS,IACjCA,EAAMW,GAAaX,CAAG,EAAEU,CAAI,GAAKV,GAE5BY,GAAYZ,CAAG,CACxB,CACA,IAAMa,GAAW,iDACXF,GAAe9hC,GAAQ,SAASmhC,EAAK,CACzC,IAAMc,EAAU,CAAC,EACjBD,GAAS,UAAY,EACrB,IAAI/+B,EACJ,KAAOA,EAAQ++B,GAAS,KAAKb,CAAG,GAC9Bc,EAAQh/B,EAAM,CAAC,CAAC,EAAI,QAAQA,EAAM,CAAC,CAAC,OAEtC,OAAOg/B,CACT,CAAC,EACD,SAASP,GAAe56B,EAAI,CAC1B,IAAMrB,EAAS2qB,GAAiBtpB,CAAE,EAC9BrB,GACFsF,GAAIjE,EAAI,wBAAyBrB,CAAM,CAE3C,CACA,SAASs8B,GAAYG,EAAQ,CAC3B,IAAMnyB,EAAY,SAAS,cAAc,UAAU,EACnD,OAAAA,EAAU,UAAYmyB,EACfnyB,EAAU,QAAQ,iBAC3B,CAEA,IAAMoyB,GAAQ,CACZ,QAAAnB,EACA,MAAAC,EACA,OAAAhB,GACA,aAAcH,GACd,cAAeC,GACf,mBAAoBC,GACpB,kBAAmBG,GACnB,wBAAyBD,GACzB,qBAAsBE,GACtB,qBAAsBC,GACtB,eAAgBC,GAChB,kBAAmBC,GACnB,sBAAuBC,GACvB,cAAeC,GACf,gBAAiBE,GACjB,eAAgBD,GAChB,qBAAsBD,GACtB,gBAAiBI,GACjB,sBAAuBD,GACvB,oBAAqBG,EACrB,0BAA2BD,CAC7B,EACMsB,GAAO,CACX,QAASC,GACT,OAAQ,CAACnB,CAAG,EACZ,KAAM,OACN,MAAO,CAAE,KAAM,MAAO,EACtB,OAAQ,GACR,eAAgB,CACdr7B,GAAS,KAAK,IAAK,SAAS,CAC9B,EACA,QAAS,CACP,MAAM,QAAS,CACb,IAAMg8B,EAAOS,GAAQ,KAAK,IAAI,EAC9B,GAAI,CAACT,EACH,KAAM,kBAER,OAAOA,CACT,CACF,CACF,EACMU,GAAgB,CACpB,KAAM,GACN,QAASH,GACT,KAAOzlB,IAAQ,CACb,KAAM5c,EAAU4c,EAAG,YAAY,QAAQ,IAAI,CAC7C,GACA,eAAgB,CACd9W,GAAS,KAAK,IAAK,KAAK,SAAS,EAAE,CACrC,CACF,EACM28B,GAAgB,CACpB,QAASD,GACT,eAAgB,CACd,IAAMV,EAAO,KAAK,OAAO,KACzB,KAAK,KAAO,KAAK,IAAI,QAAQ,iBAAiB,EAAI,GAAGA,CAAI,SAAWA,CACtE,CACF,EACMY,GAAS,CACb,QAASF,GACT,OAAQ,CAACjb,EAAI,EACb,KAAM,CAAE,OAAQ,cAAe,OAAQ,eAAgB,EACvD,eAAgB,CACd,IAAMob,EAAWv8B,GAAS,KAAK,IAAK,kBAAkB,GAAKA,GAAS,KAAK,IAAK,kBAAkB,EAEhG,GADA,KAAK,KAAOu8B,EAAW,qBAAuBv8B,GAAS,KAAK,IAAK,gBAAgB,GAAK,KAAK,IAAI,QAAQ,kBAAkB,EAAI,eAAiB,KAAK,IAAI,QAAQ,mBAAmB,EAAI,gBAAkB,KAAK,OAAO,KAChN,CAAAa,GAAQ,KAAK,IAAK,YAAY,EAGlC,GAAI07B,EAAU,CACZ,IAAMC,EAAQ,KAAK,EAAE,QAAQ,EAC7B/7B,GAAK,KAAK,IAAK,aAAc+7B,CAAK,CACpC,KAAO,CACL,IAAMtgB,EAAS,KAAK,IAAI,QAAQ,UAAU,EAC1C,GAAIA,EAAQ,CACV,IAAMsgB,EAAQ,KAAK,EAAE,QAAQ,EAC7B/7B,GAAKyb,EAAQ,aAAcsgB,CAAK,CAClC,CACF,CACF,CACF,EACMC,GAAU,CACd,QAASL,GACT,eAAgB,CACd37B,GAAK,KAAK,IAAK,OAAQ,QAAQ,CACjC,EACA,QAAS,CACP,MAAM,QAAS,CACb,IAAMi7B,EAAO,MAAMO,GAAK,QAAQ,OAAO,KAAK,IAAI,EAChD,OAAI,KAAK,QAAU,GACjBr3B,GAAI6D,GAAE,SAAUizB,CAAI,EAAG,cAAe,EAAI,KAAK,KAAK,EAE/CA,CACT,CACF,CACF,EACMgB,GAAkB,CACtB,QAASN,GACT,OAAQ,CAACjb,EAAI,EACb,eAAgB,CACd,IAAMjF,EAAS,KAAK,IAAI,QAAQ,UAAU,EAC1Czb,GAAKyb,EAAQ,OAAQ,KAAK,OAAS,MAAQ5T,GAAM4T,EAAQ,GAAG,EAAI,SAAW,KAAK,IAAI,EACpF,IAAMsgB,EAAQ,KAAK,EAAE,OAAO,EACxBA,GAAS,CAAC37B,GAAQqb,EAAQ,YAAY,GACxCzb,GAAKyb,EAAQ,aAAcsgB,CAAK,CAEpC,CACF,EACMG,GAAW,CACf,QAASD,GACT,eAAgB,CACdh9B,GAAS,KAAK,IAAK,aAAa,EAChC,IAAMg8B,EAAO,KAAK,OAAO,KACzB,KAAK,KAAO17B,GAAS,KAAK,IAAK,mBAAmB,EAAI,GAAG07B,CAAI,SAAWA,CAC1E,CACF,EACMkB,GAAmB,CACvB,QAASF,GACT,KAAM,CAAE,MAAO,WAAY,CAC7B,EACMG,GAAQ,CACZ,QAASH,GACT,KAAM,CAAE,MAAO,OAAQ,EACvB,eAAgB,CACd,KAAK,KAAO,SAAS18B,GAAS,KAAK,IAAK,gBAAgB,EAAI,QAAU,MAAM,EAC9E,CACF,EACM88B,GAAS,CACb,QAASJ,GACT,KAAM,CAAE,MAAO,MAAO,CACxB,EACMK,GAAQ,CACZ,QAASL,GACT,KAAM,CAAE,MAAO,aAAc,CAC/B,EACMM,GAAiB,CACrB,QAASN,GACT,KAAM,CAAE,MAAO,WAAY,EAC3B,KAAM,CAAE,KAAM,IAAK,CACrB,EACMO,GAAqB,CACzB,QAASP,GACT,KAAM,CAAE,MAAO,eAAgB,EAC/B,KAAM,CAAE,KAAM,IAAK,CACrB,EACMv4B,GAAS,CAAC,EAChB,SAAS+3B,GAAU5S,EAAO,CACxBA,EAAM,KAAK,IAAM,CAAC5oB,EAAMs6B,IAAQ,CAC9B,IAAMkC,EAAQzhC,EAASiF,CAAI,EAAI,CAAE,CAACA,CAAI,EAAGs6B,CAAI,EAAIt6B,EACjDjE,GAAKygC,EAAO,CAACC,EAAMC,IAAU,CAC3BpB,GAAMoB,CAAK,EAAID,EACf,OAAOh5B,GAAOi5B,CAAK,CACrB,CAAC,EACG9T,EAAM,cACRzf,GACE,SAAS,KACRlJ,GAAOlE,GAAK6sB,EAAM,cAAc3oB,CAAE,EAAI4e,GAAQ,CAC7CA,EAAI,SAAS,QAAUA,EAAI,QAAQ2d,GAAS3d,EAAI,OAAO,CACzD,CAAC,CACH,CAEJ,CACF,CACA,IAAM8d,GAAU,CAAE,QAAS,GAAI,EAC/B,SAASlB,GAAQT,EAAM,CAErB,OADAA,EAAO2B,GAAQ3B,CAAI,GAAKA,EACnBM,GAAMN,CAAI,GAGVv3B,GAAOu3B,CAAI,IACdv3B,GAAOu3B,CAAI,EAAIE,GAAYI,GAAMsB,GAAS5B,CAAI,CAAC,GAAKM,GAAMN,CAAI,CAAC,GAE1Dv3B,GAAOu3B,CAAI,EAAE,UAAU,EAAI,GALzB,IAMX,CACA,SAAS4B,GAAS5B,EAAM,CACtB,OAAOx6B,GAAQvE,GAAKA,GAAK++B,EAAM,OAAQ,OAAO,EAAG,WAAY,MAAM,EAAIA,CACzE,CAEA,IAAI7S,GAAM,CACR,KAAM,UACN,MAAO,CACL,QAAS,OACT,QAAS,OACT,OAAQ,OACR,OAAQ,OACR,QAAS,MACX,EACA,KAAM,CACJ,QAAS,GACT,QAAS,GACT,OAAQ,MACR,OAAQ,GACR,QAAS,MACX,EACA,WAAY,CACN,KAAK,UAAY,OACnB,KAAK,KAAK,EACD0U,GAAM,KAAK,GAAG,IACvB,KAAK,IAAI,QAAU,OACnBC,GAAY,KAAK,GAAG,EAExB,EACA,cAAe,CACT,KAAK,MACP,KAAK,IAAI,OAAS,IAEpB,OAAO,KAAK,GACd,EACA,QAAS5vB,GAAa,CACpB,QAAQgB,EAASD,EAAU,CACzB,KAAK,KAAK,EACVA,EAAS,WAAW,CACtB,EACA,QAAS,CAAC,CAAE,OAAAib,CAAO,KAAO,CAAE,WAAYA,CAAO,GAC/C,OAAQ,CAAC,CAAE,QAAAqC,CAAQ,IAAMA,IAAY,OACrC,OAAQ,CAAC,CAAE,IAAApT,EAAK,OAAAyK,CAAO,IAAMA,EAAO,OAAS,CAACzK,EAAK,GAAGvV,GAASggB,EAAO,OAAQzK,CAAG,CAAC,EAAIA,CACxF,CAAC,EACD,QAAS,CACP,MAAO,CACL,GAAI,KAAK,IACP,OAAO,KAAK,IAEd,IAAMqT,EAAQqR,GAAM,KAAK,GAAG,EAAI,KAAK,IAAME,GAAoB,KAAK,IAAK,KAAK,QAAS,KAAK,OAAO,EACnG,OAAA78B,GAAWsrB,EAAO,SAAS,EAC3BsR,GAAY,KAAK,IAAKtR,EAAM,UAAU,EAC/B,KAAK,IAAMA,CACpB,CACF,CACF,EACA,SAASsR,GAAY78B,EAAI6nB,EAAK,CAC5B,GAAI+U,GAAM58B,CAAE,EAAG,CACb,IAAM+8B,EAAat7B,GAAOzB,CAAE,GACX2H,GAAMo1B,EAAY,SAAS,EAAIl7B,GAASk7B,CAAU,EAAI,CAAC/8B,CAAE,GACjE,QAASuX,GAAQylB,GAAezlB,EAAKA,CAAG,CAAC,CACpD,MAAWsQ,GACM,CAAChuB,EAASmG,EAAG,MAAM,gBAAiB6nB,CAAG,IAEpD5jB,GAAIjE,EAAI,kBAAmB,OAAO+D,GAAO8jB,CAAG,CAAC,GAAG,EAChD1iB,GAAQnF,EAAIuF,GAAY,OAAQ,EAAK,CAAC,EAG5C,CACA,IAAM03B,GAAW,CAAC,WAAY,cAAe,OAAO,EACpD,SAASD,GAAeE,EAAUrsB,EAAU,CAC1C,QAAWtU,KAAQ0gC,GAAU,CAC3B,IAAMpiC,EAAQuF,GAAK88B,EAAU3gC,CAAI,EAC7B1B,GACFiF,GAAK+Q,EAAUtU,EAAK,QAAQ,YAAa,EAAE,EAAG1B,CAAK,CAEvD,CACF,CACA,SAASiiC,GAAoB98B,EAAI6nB,EAAKsV,EAAS,CAC7C,IAAMjV,EAAM,IAAI,MAChB,OAAAkV,GAAclV,EAAKiV,CAAO,EAC1BH,GAAeh9B,EAAIkoB,CAAG,EACtBA,EAAI,OAAS,IAAM,CACjB2U,GAAY78B,EAAIkoB,EAAI,UAAU,CAChC,EACApoB,GAAKooB,EAAK,MAAOL,CAAG,EACbK,CACT,CACA,SAASkV,GAAclV,EAAKiV,EAAS,CAEnC,GADAA,EAAUE,GAAaF,CAAO,EAC1BA,EAAQ,OAAQ,CAClB,IAAMG,EAAU90B,GAAS,WAAW,EACpC,QAAWwf,KAASmV,EAAS,CAC3B,IAAMzU,EAASlgB,GAAS,UAAU,EAClC1I,GAAK4oB,EAAQV,CAAK,EAClB9f,GAAOo1B,EAAS5U,CAAM,CACxB,CACAxgB,GAAOo1B,EAASpV,CAAG,CACrB,CACF,CACA,SAASmV,GAAaF,EAAS,CAC7B,GAAI,CAACA,EACH,MAAO,CAAC,EAEV,GAAI1jC,EAAW0jC,EAAS,GAAG,EACzB,GAAI,CACFA,EAAU,KAAK,MAAMA,CAAO,CAC9B,MAAY,CACVA,EAAU,CAAC,CACb,MAEAA,EAAU9mB,GAAa8mB,CAAO,EAEhC,OAAKljC,EAAQkjC,CAAO,IAClBA,EAAU,CAACA,CAAO,GAEbA,EAAQ,OAAQzU,GAAW,CAACztB,EAAQytB,CAAM,CAAC,CACpD,CACA,SAASkU,GAAM58B,EAAI,CACjB,OAAO2H,GAAM3H,EAAI,KAAK,CACxB,CAEA,IAAIu9B,GAAU,CACZ,MAAO,CACL,OAAQ,OACR,UAAW,MACb,EACA,KAAM,CACJ,OAAQ,GACR,UAAW,EACb,EACA,SAAU,CACR,OAAQ,CAAC,CAAE,OAAA34B,CAAO,EAAGsT,IAAQtT,EAASwE,GAAGxE,EAAQsT,CAAG,EAAIA,CAC1D,EACA,QAAS,CACPjL,GAAa,CACX,QAAQgB,EAAS,CACf,KAAK,eAAiBA,EAAQ,KAAK,CAAC,CAAE,eAAAuJ,CAAe,IAAMA,CAAc,EACzE,KAAK,MAAM,CACb,EACA,OAAQ,CAAC,CAAE,OAAA5S,CAAO,IAAMA,EACxB,KAAM,CAAE,aAAc,EAAM,CAC9B,CAAC,EACDwS,GAAS,CACP,OAAQ,CAAC,CAAE,OAAAxS,CAAO,IAAMA,EACxB,QAAS,CAAE,WAAY,GAAM,gBAAiB,CAAC,OAAO,EAAG,kBAAmB,EAAK,CACnF,CAAC,EACD,CACE,OAAQ,CAAC,CAAE,OAAAA,CAAO,IAAMA,EACxB,QAAS,CAACA,EAAQ6S,IAAY,CAC5B,IAAMzJ,EAAWK,GACf,CAAC,GAAG5S,EAAQmJ,CAAM,EAAG,SAAS,eAAe,EAC7C6S,CACF,EACMpT,EAAW,CACfH,GAAG,SAAU,8BAA+BuT,EAAS,CACnD,QAAS,GACT,QAAS,EACX,CAAC,EACDvT,GAAG,SAAU,4BAA8Be,IACzCwS,EAAQ,EACDzJ,EAAS,QAAQ/I,EAAE,MAAM,EACjC,EACDf,GAAG,SAAU,8CAAgDe,IAC3DwS,EAAQ,EACDzJ,EAAS,UAAU/I,EAAE,MAAM,EACnC,CACH,EACA,MAAO,CACL,QAAS+I,EAAS,QAAQ,KAAKA,CAAQ,EACvC,UAAWA,EAAS,UAAU,KAAKA,CAAQ,EAC3C,YAAa,CACXA,EAAS,WAAW,EACpB3J,EAAS,IAAKQ,GAAQA,EAAI,CAAC,CAC7B,CACF,CACF,EACA,SAAU,CACR,KAAK,MAAM,CACb,CACF,CACF,EACA,OAAQ,CACN,MAAO,CACL,GAAI,CAAC,KAAK,eACR,MAAO,GAET,QAAWD,KAAUnJ,EAAQ,KAAK,MAAM,EAAG,CACzC,IAAIkvB,EAAQ,CAAC,KAAK,WAAarpB,GAAQsD,EAAQ,KAAK,SAAS,EAAI44B,GAAgB54B,CAAM,EAAI,GACvF+lB,IAAU,IACZnrB,GAAaoF,EAAQ,mBAAoB+lB,CAAK,CAElD,CACF,CACF,CACF,EACA,SAAS6S,GAAgB54B,EAAQ,CAC/B,IAAMwP,EAAM9K,GAAa1E,CAAM,EACzB4L,EAAWlH,GAAa,MAAM,EACpC,GAAI,CAAC9L,GAAc4W,EAAK5D,CAAQ,EAC9B,MAAO,GAET,GAAM,CAAE,KAAAvG,EAAM,IAAAD,EAAK,OAAAT,EAAQ,MAAAC,EAAM,EAAI4K,EACjChY,GACJ,QAAWkP,KAAW,CAAC,IAAM,GAAK,GAAI,EAAG,CACvC,IAAM9M,GAAWoG,EAAO,cAAc,kBACpC,KAAK,IAAI,EAAG,KAAK,IAAIqF,EAAOT,GAAQ8B,GAASkF,EAAS,MAAQ,CAAC,CAAC,EAChE,KAAK,IAAI,EAAG,KAAK,IAAIxG,EAAMT,EAAS,EAAGiH,EAAS,OAAS,CAAC,CAAC,CAC7D,EACA,QAAWhV,MAAWgD,GAAU,CAC9B,GAAIoG,EAAO,SAASpJ,EAAO,GAAK,CAACiiC,GAAgBjiC,EAAO,GAAKA,GAAQ,QAAQ,mBAAmB,GAAKgD,GAAS,KAAMwB,IAAOxE,KAAYwE,IAAMsB,GAAQtB,GAAI,mBAAmB,CAAC,EAC3K,SAEF,IAAM2qB,GAAQ1mB,GAAIzI,GAAS,cAAc,EACzC,GAAImvB,GAAO,CACT,GAAIA,KAAUvuB,GACZ,MAAO,MAAMuuB,EAAK,GAEpBvuB,GAAOuuB,GACP,KACF,CACF,CACF,CACA,OAAOvuB,GAAO,MAAMA,EAAI,GAAK,EAC/B,CACA,SAASqhC,GAAgBjiC,EAAS,CAChC,GAAIyI,GAAIzI,EAAS,YAAY,IAAM,UACjC,MAAO,GAET,KAAOA,GAAS,CACd,GAAIyI,GAAIzI,EAAS,SAAS,IAAM,IAC9B,MAAO,GAETA,EAAUiG,GAAOjG,CAAO,CAC1B,CACA,MAAO,EACT,CAEA,IAAIkiC,GAAS,CACX,OAAQ,CAAC1oB,GAAOmU,EAAK,EACrB,MAAO,CACL,KAAM,MACR,EACA,KAAM,CACJ,KAAM,GACN,WAAY,iBACZ,QAAS,iBACT,SAAU,WACZ,EACA,SAAU,CACR,KAAM,CAAC,CAAE,KAAAwU,CAAK,EAAGzlB,IAAQylB,GAAQ15B,GAAIiU,EAAK,0BAA0B,CACtE,EACA,WAAY,CACV,CAAC,KAAK,OAAO,EAAIrP,GAAU,KAAK,IAAK,gBAAgB,KAAK,UAAU,IAAI,CAC1E,EACA,cAAe,CACbC,GAAO,KAAK,QAAQ,UAAU,CAChC,EACA,QAASoO,GAAO,EAChB,OAAQ,CACN,MAAO,CAEL,MAAO,CACL,MAFY,KAAK,MAAM,KAAK,IAAI,YAAc,CAAC,EAG/C,KAAM,KAAK,KACX,KAAM,CAAC,KAAK,UACd,CACF,EACA,MAAM,CAAE,MAAA1N,EAAO,KAAAm0B,EAAM,KAAAxJ,CAAK,EAAG,CAC3Bx0B,GAAY,KAAK,QAAS,KAAK,QAASw0B,CAAI,EAC5Cr0B,GAAK,KAAK,QAAS,KAAK,SAAU,IAAI,MAAM0J,CAAK,EAAE,KAAKm0B,CAAI,CAAC,CAC/D,EACA,OAAQ,CAAC,QAAQ,CACnB,CACF,EAEIxe,GAAQ,CACV,QAAAye,IACA,OAAQ,CAAC9e,EAAK,EACd,KAAM,CACJ,QAAS,gBACT,SAAU,mBACV,SAAU,2BACZ,EACA,OAAQ,CACN,CACE,KAAM,uCACN,QAAS,GACT,QAAQ7Z,EAAG,CACL0C,GAAM1C,EAAE,OAAQ,OAAO,GAAK,KAAK,UAAU,GAAK,CAAC,SAAS,mBAC5D,KAAK,KAAK,CAEd,CACF,EACA,CACE,KAAM,OACN,KAAM,GACN,SAAU,CACJ5F,GAAS,KAAK,MAAO,yBAAyB,EAChDN,GAAS,KAAK,IAAK,SAAS,EAE5BkF,GAAI,KAAK,IAAK,UAAW,OAAO,EAElCsF,GAAO,KAAK,GAAG,CACjB,CACF,EACA,CACE,KAAM,SACN,KAAM,GACN,SAAU,CACRtF,GAAI,KAAK,IAAK,UAAW,EAAE,EAC3B3E,GAAY,KAAK,IAAK,SAAS,CACjC,CACF,CACF,CACF,EACA,SAASs+B,IAAQ,CAAE,MAAAze,CAAM,EAAG,CAC1BA,EAAM,OAAS,SAASkJ,EAASva,EAAS,CACxC,IAAM+vB,EAAS1e,EAAMrX,GAAE,qCAAqCugB,CAAO,cAAc,EAAG,CAClF,MAAO,GACP,KAAM,cACN,GAAGva,CACL,CAAC,EACD,OAAA+vB,EAAO,KAAK,EACZ35B,GACE25B,EAAO,IACP,SACA,SAAY,CACV,MAAM,QAAQ,QAAQ,EACtBA,EAAO,SAAS,EAAI,CACtB,EACA,CAAE,KAAM,EAAK,CACf,EACOA,CACT,EACA1e,EAAM,MAAQ,SAAS2e,EAAShwB,EAAS,CACvC,OAAOiwB,EACL,CAAC,CAAE,KAAAC,CAAK,IAAM,8BAA8BljC,EAASgjC,CAAO,EAAIA,EAAU/1B,GAAK+1B,CAAO,CAAC,2HAA2HE,EAAK,EAAE,mBACzNlwB,CACF,CACF,EACAqR,EAAM,QAAU,SAAS2e,EAAShwB,EAAS,CACzC,OAAOiwB,EACL,CAAC,CAAE,KAAAC,CAAK,IAAM,qCAAqCljC,EAASgjC,CAAO,EAAIA,EAAU/1B,GAAK+1B,CAAO,CAAC,+HAA+HE,EAAK,MAAM,mEAAmEA,EAAK,EAAE,2BAClTlwB,EACA,IAAM,QAAQ,OAAO,CACvB,CACF,EACAqR,EAAM,OAAS,SAAS2e,EAASjjC,EAAOiT,EAAS,CAC/C,IAAMwP,EAAUygB,EACd,CAAC,CAAE,KAAAC,EAAK,IAAM,qEAAqEljC,EAASgjC,CAAO,EAAIA,EAAU/1B,GAAK+1B,CAAO,CAAC,2KAA2KE,GAAK,MAAM,yDAAyDA,GAAK,EAAE,2BACpXlwB,EACA,IAAM,KACN,IAAMmpB,GAAM,KACd,EACM,CAAE,IAAA/e,EAAI,EAAIoF,EAAQ,OAClB2Z,GAAQnvB,GAAE,QAASoQ,EAAG,EAC5B,OAAA+e,GAAM,MAAQp8B,GAAS,GACvBqJ,GAAGgU,GAAK,OAAQ,IAAM+e,GAAM,OAAO,CAAC,EAC7B3Z,CACT,EACA6B,EAAM,KAAO,CACX,GAAI,KACJ,OAAQ,QACV,EACA,SAAS4e,EAAWE,EAAMnwB,EAASowB,EAAS3gC,GAAM4gC,EAAW5gC,GAAM,CACjEuQ,EAAU,CACR,QAAS,GACT,SAAU,GACV,GAAGA,EACH,KAAM,CAAE,GAAGqR,EAAM,KAAM,GAA8BrR,GAAQ,IAAK,CACpE,EACA,IAAM+vB,GAAS1e,EAAM,OAAO8e,EAAKnwB,CAAO,EAAGA,CAAO,EAClD,OAAO3T,EACL,IAAI,QAAS2M,IAAY,CACvB,IAAMjC,GAAMX,GAAG25B,GAAO,IAAK,OAAQ,IAAM/2B,GAAQo3B,EAAO,CAAC,CAAC,EAC1Dh6B,GAAG25B,GAAO,IAAK,SAAU,OAAS54B,IAAM,CACtCA,GAAE,eAAe,EACjB6B,GAAQq3B,EAASN,EAAM,CAAC,EACxBh5B,GAAI,EACJg5B,GAAO,KAAK,CACd,CAAC,CACH,CAAC,EACD,CAAE,OAAAA,EAAO,CACX,CACF,CACF,CAEA,IAAIvX,IAAM,CACR,QAAS2N,GACT,KAAM,CACJ,QAAS,eACT,OAAQ,MACR,QAAS,MACX,CACF,EAEA,IAAMmK,GAAuB,wBAC7B,IAAIC,IAAS,CACX,QAAS/H,GACT,MAAO,CACL,uBAAwB,OAC1B,EACA,KAAM,CACJ,QAAS,qBACT,WAAY,4HAEZ,uBAAwB,EAC1B,EACA,SAAU,CACR,gBAAiB,CAACh9B,EAAG4e,IAAQA,EAAI,QAAQ,sBAAsB,CACjE,EACA,MAAO,CACL,OAAQ,CACN,IAAMomB,EAAUj/B,GAAS,KAAK,IAAK,mBAAmB,EAChDk/B,EAAan1B,GAAG,oDAAqD,KAAK,GAAG,EACnF,QAAWH,KAAas1B,EAAY,CAClC,IAAMhY,EAAQ+X,EAAUl1B,GAAG,8DAA+DH,CAAS,EAAE,OAAS,GAC9GhF,GAAIgF,EAAW,WAAYsd,CAAK,CAClC,CACF,CACF,EACA,OAAQ,CACN,CACE,KAAM,OACN,GAAI,CAAC,CAAE,cAAAsQ,CAAc,IAAMA,EAC3B,QAAQ,CAAE,OAAAjyB,CAAO,EAAG,CACd,KAAK,mBAAmBA,CAAM,IAAM,UAAYvF,GAAS,KAAK,gBAAiB++B,EAAoB,IACrG9+B,GAAY,KAAK,gBAAiB8+B,EAAoB,EACtD,KAAK,aAAe,GAExB,CACF,EACA,CACE,KAAM,OACN,GAAI,CAAC,CAAE,cAAAvH,CAAc,IAAMA,EAC3B,MAAM,SAAU,CACd,MAAM2H,IAAe,EACjB,CAAC,KAAK,UAAU,GAAK,KAAK,eAC5Bz/B,GAAS,KAAK,gBAAiBq/B,EAAoB,EACnD,KAAK,aAAe,KAExB,CACF,CACF,EACA,QAAS,CACP,mBAAmBp+B,EAAI,CACrB,GAAI,CAAC,KAAK,gBACR,OAEF,GAAI,KAAK,SAAW,KAAK,cAAcA,CAAE,EACvC,OAAO,KAAK,uBAEd,IAAMu1B,EAAO,KAAK,YAAYv1B,CAAE,EAChC,GAAIu1B,GAAQl2B,GAASW,EAAI,YAAY,EACnC,OAAOu1B,EAAK,MAAQ,SAAW,QAEnC,EACA,iBAAiB1lB,EAAW,CAC1B,GAAM,CAAE,IAAA7F,EAAK,OAAAT,CAAO,EAAIE,GAAO,KAAK,eAAe,EACnD,OAAOO,GAAO,KAAK,yBAA2B,SAAW,EAAIT,EAASsG,EACxE,CACF,CACF,EACA,SAAS2uB,KAAiB,CACxB,OAAO,IAAI,QAAS13B,GAAY,WAAWA,CAAO,CAAC,CACrD,CAEA,IAAI23B,IAAY,CACd,OAAQ,CAAC3f,EAAK,EACd,KAAM,OACN,MAAO,CACL,KAAM,OACN,KAAM,QACN,QAAS,QACT,QAAS,OACX,EACA,KAAM,CACJ,KAAM,QACN,KAAM,GACN,QAAS,GACT,QAAS,oBACT,aAAc,yBACd,SAAU,oBACV,QAAS,oBACT,sBAAuB,mCACvB,oBAAqB,6BACrB,QAAS,eACT,WAAY,uBACZ,SAAU,sBACV,UAAW,GACX,QAAS,EACX,EACA,SAAU,CACR,QAAS,CAAC,CAAE,KAAApL,EAAM,QAAAgrB,CAAQ,IAAMhrB,EAAOgrB,EAAU,GACjD,WAAY,CAAC,CAAE,QAAAC,EAAS,WAAAC,CAAW,IAAMD,EAAUC,EAAa,GAChE,QAAS,CAAC,CAAE,KAAA7gB,EAAM,QAAA8gB,CAAQ,IAAM,GAAGA,CAAO,IAAI9gB,CAAI,GAClD,oBAAqB,CAAC,CAAE,KAAAA,EAAM,oBAAA+gB,CAAoB,IAAM/gB,IAAS,QAAUA,IAAS,SAAW,GAAK+gB,EACpG,sBAAuB,CAAC,CAAE,KAAA/gB,EAAM,sBAAAghB,CAAsB,IAAMhhB,IAAS,QAAUA,IAAS,SAAW,GAAKghB,EACxG,kBAAkB,CAAE,KAAAhhB,CAAK,EAAG,CAC1B,OAAOA,IAAS,SAAWtc,GAAO,KAAK,KAAK,EAAI,KAAK,KACvD,CACF,EACA,QAASmW,GAAM,CAAE,OAAQ,CAAC,CAAE,QAAAonB,CAAQ,IAAMA,CAAQ,CAAC,EACnD,OAAQ,CACN,MAAO,CACD,KAAK,UAAU,GAAK,CAAC79B,GAAU,KAAK,GAAG,GACzC,KAAK,KAAK,CAEd,EACA,OAAQ,CAAC,QAAQ,CACnB,EACA,OAAQ,CACN,CACE,KAAM,YACN,KAAM,GACN,QAAS,GACT,OAAQ,CAAC,CAAE,QAAAw9B,CAAQ,IAAMA,EACzB,QAAQ15B,EAAG,CACTA,EAAE,YAAcA,EAAE,eAAe,CACnC,CACF,EACA,CACE,KAAM,OACN,KAAM,GACN,SAAU,CACJ,KAAK,OAAS,UAAY,CAAC5F,GAASoC,GAAO,KAAK,KAAK,EAAG,KAAK,OAAO,GACtE1C,GAAS4J,GAAQ,KAAK,MAAO,OAAO,EAAG,KAAK,OAAO,EAErD,GAAM,CAAE,KAAAuB,EAAM,iBAAAgH,CAAiB,EAAI,SACnCnS,GAASmL,EAAM,KAAK,aAAc,KAAK,OAAO,EAC9CjG,GAAIiG,EAAM,cAAe,kBAAkB,EAC3CjG,GAAI,KAAK,IAAK,UAAW,OAAO,EAChCA,GAAI,KAAK,MAAO,WAAYiN,EAAiB,WAAW,EACxDnS,GAAS,KAAK,IAAK,KAAK,UAAU,EAClCA,GACE,KAAK,MACL,KAAK,oBACL,KAAK,OAAS,SAAW,GAAK,KAAK,OACrC,EACAwK,GAAOW,CAAI,EACXnL,GAASmL,EAAM,KAAK,qBAAqB,EACzC,KAAK,uBAAyB+0B,IAAkB,CAClD,CACF,EACA,CACE,KAAM,OACN,KAAM,GACN,SAAU,CACR3/B,GAAY,SAAS,KAAM,KAAK,qBAAqB,EACrD2E,GAAI,SAAS,KAAM,cAAe,EAAE,CACtC,CACF,EACA,CACE,KAAM,SACN,KAAM,GACN,SAAU,CACR,KAAK,uBAAyBi7B,IAAgB,EAC1C,KAAK,OAAS,UAAY7/B,GAASoC,GAAO,KAAK,KAAK,EAAG,KAAK,OAAO,GACrEqH,GAAO,KAAK,KAAK,EAEnBxJ,GAAY,KAAK,MAAO,KAAK,oBAAqB,KAAK,OAAO,EAC9DA,GAAY,KAAK,IAAK,KAAK,UAAU,EACrC2E,GAAI,KAAK,IAAK,UAAW,EAAE,EAC3BA,GAAI,KAAK,MAAO,WAAY,EAAE,EAC9B3E,GAAY,SAAS,KAAM,KAAK,aAAc,KAAK,OAAO,CAC5D,CACF,EACA,CACE,KAAM,uBACN,QAAQ2F,EAAG,CACL,KAAK,UAAU,GAAKrL,EAASqL,EAAE,KAAM,MAAM,EAAI,KAAK,MACtD,KAAK,KAAK,CAEd,CACF,CACF,CACF,EACA,SAASg6B,KAAoB,CAC3BE,GAAY,EAAE,SAAW,kBAC3B,CACA,SAASD,KAAkB,CACzB,IAAM1uB,EAAW2uB,GAAY,EAC7B3uB,EAAS,QAAUA,EAAS,QAAQ,QAAQ,oBAAqB,EAAE,CACrE,CACA,SAAS2uB,IAAc,CACrB,OAAOr3B,GAAE,wBAAyB,SAAS,IAAI,GAAKI,GAAO,SAAS,KAAM,wBAAwB,CACpG,CAEA,IAAIk3B,IAAe,CACjB,OAAQ,CAACpqB,EAAK,EACd,MAAO,CACL,aAAc,OACd,WAAY,OACZ,UAAW,MACb,EACA,KAAM,CACJ,aAAc,YACd,WAAY,mBACZ,UAAW,GACb,EACA,SAAU,CACR,UAAW,CAAC,CAAE,aAAAqqB,CAAa,EAAGnnB,IAAQA,EAAI,QAAQmnB,CAAY,EAC9D,QAAS,CAAC,CAAE,WAAAC,CAAW,EAAGpnB,IAAQA,EAAI,QAAQonB,CAAU,CAC1D,EACA,QAASpoB,GAAO,CACd,OAAQ,CAAC,CAAE,UAAAjO,EAAW,QAAAof,CAAQ,IAAM,CAACpf,EAAWof,CAAO,CACzD,CAAC,EACD,OAAQ,CACN,MAAO,CACL,MAAI,CAAC,KAAK,SAAW,CAAC,KAAK,WAAa,CAAClnB,GAAU,KAAK,GAAG,EAClD,GAEF,CACL,IAAK,KAAK,IACR,KAAK,UACLoI,GAAO,KAAK,SAAS,GAAKD,GAAa,KAAK,OAAO,EAAE,OAASC,GAAO,KAAK,GAAG,EAC/E,CACF,CACF,EACA,MAAM,CAAE,IAAAjM,CAAI,EAAG,CACb2G,GAAI,KAAK,IAAK,CAAE,UAAW,KAAK,UAAW,UAAW3G,CAAI,CAAC,CAC7D,EACA,OAAQ,CAAC,QAAQ,CACnB,CACF,EAEIiiC,IAAa,CACf,MAAO,CAAC,QAAS,QAAQ,EACzB,WAAY,CACVxgC,GAAS,KAAK,IAAK,qBAAqB,EACxCkF,GAAI,KAAK,IAAK,cAAe,GAAG,KAAK,KAAK,IAAI,KAAK,MAAM,EAAE,CAC7D,CACF,EAEI6M,IAAS,CACX,MAAO,CACL,OAAQ,MACV,EACA,KAAM,CACJ,OAAQ,CACV,EACA,WAAY,CACV0uB,IAAc,IAAI,CACpB,EACA,cAAe,CACbC,IAAgB,IAAI,CACtB,EACA,QAAS,CACP,MAAM,SAASz/B,EAAI,CACjBA,EAAKA,GAAM8H,GAAE9H,CAAE,GAAK,SAAS,KACzBmF,GAAQ,KAAK,IAAK,eAAgB,CAAC,KAAMnF,CAAE,CAAC,IAC9C,MAAMiQ,GAAejQ,EAAI,CAAE,OAAQ,KAAK,MAAO,CAAC,EAChDmF,GAAQ,KAAK,IAAK,WAAY,CAAC,KAAMnF,CAAE,CAAC,EAE5C,CACF,CACF,EACA,IAAM0/B,GAA4B,IAAI,IACtC,SAASF,IAAc5gB,EAAK,CACrB8gB,GAAU,MACbx7B,GAAG,SAAU,QAASy7B,EAAY,EAEpCD,GAAU,IAAI9gB,CAAG,CACnB,CACA,SAAS6gB,IAAgB7gB,EAAK,CAC5B8gB,GAAU,OAAO9gB,CAAG,EACf8gB,GAAU,MACb76B,GAAI,SAAU,QAAS86B,EAAY,CAEvC,CACA,SAASA,GAAa16B,EAAG,CACvB,GAAI,CAAAA,EAAE,iBAGN,QAAW2R,KAAY8oB,GACjB9oB,EAAS,IAAI,SAAS3R,EAAE,MAAM,GAAKhD,GAAiB2U,EAAS,GAAG,IAClE3R,EAAE,eAAe,EACb,OAAO,SAAS,OAAS2R,EAAS,IAAI,MACxC,OAAO,QAAQ,UAAU,CAAC,EAAG,GAAIA,EAAS,IAAI,IAAI,EAEpDA,EAAS,SAASzU,GAAmByU,EAAS,GAAG,CAAC,EAGxD,CAEA,IAAMgpB,GAAY,sBAClB,IAAIC,IAAY,CACd,KAAM,MACN,MAAO,CACL,IAAK,OACL,OAAQ,OACR,OAAQ,QACR,OAAQ,OACR,OAAQ,QACR,MAAO,MACT,EACA,KAAM,KAAO,CACX,IAAK,GACL,OAAQ,GACR,OAAQ,GACR,OAAQ,OACR,OAAQ,GACR,MAAO,CACT,GACA,SAAU,CACR,SAAU,CAAC,CAAE,OAAAj7B,CAAO,EAAGsT,IAAQtT,EAASwE,GAAGxE,EAAQsT,CAAG,EAAI,CAACA,CAAG,CAChE,EACA,MAAO,CACL,SAAS1Z,EAAU,CACb,KAAK,QACPyF,GAAIvC,GAASlD,EAAU,SAASohC,EAAS,GAAG,EAAG,UAAW,CAAC,CAE/D,CACF,EACA,WAAY,CACV,KAAK,YAA8B,IAAI,GACzC,EACA,cAAe,CACb,OAAW,CAAC5/B,EAAI8b,CAAK,IAAK,KAAK,YAAY,QAAQ,EACjDxc,GAAYU,EAAI4/B,GAAqC9jB,GAAM,KAAQ,EAAE,EAEvE,OAAO,KAAK,WACd,EACA,QAAS7O,GAAa,CACpB,OAAQ,CAAC,CAAE,SAAAzO,CAAS,IAAMA,EAC1B,QAAQwlB,EAAS,CACf,IAAMxlB,EAAW,KAAK,YACtB,OAAW,CAAE,OAAQwB,EAAI,eAAAwX,CAAe,IAAKwM,EAAS,CAC/CxlB,EAAS,IAAIwB,CAAE,GAClBxB,EAAS,IAAIwB,EAAI,CACf,IAAKI,GAAKJ,EAAI,oBAAoB,GAAK,KAAK,GAC9C,CAAC,EAEH,IAAM8b,EAAQtd,EAAS,IAAIwB,CAAE,EACzB,CAAC,KAAK,QAAU8b,EAAM,OAG1BA,EAAM,KAAOtE,EACf,CACA,KAAK,MAAM,CACb,EACA,QAAS,CAAC,CAAE,OAAAyR,CAAO,KAAO,CAAE,WAAYA,CAAO,GAC/C,KAAM,CAAE,aAAc,EAAM,CAC9B,CAAC,EACD,OAAQ,CACN,CACE,MAAM7oB,EAAM,CACV,OAAW,CAACJ,EAAI8b,CAAK,IAAK,KAAK,YAAY,QAAQ,EAC7CA,EAAM,MAAQ,CAACA,EAAM,QAAU,CAACA,EAAM,QACxCA,EAAM,OAAS,GACf1b,EAAK,SAAWA,EAAK,SAAW,QAAQ,QAAQ,GAAG,KAAK,IAAM,IAAI,QAAS0G,GAAY,WAAWA,EAAS,KAAK,KAAK,CAAC,CAAC,EAAE,KAAK,IAAM,CAClI,KAAK,OAAO9G,EAAI,EAAI,EACpB,WAAW,IAAM,CACf8b,EAAM,OAAS,GACf,KAAK,MAAM,CACb,EAAG,GAAG,CACR,CAAC,GACQ,CAACA,EAAM,MAAQA,EAAM,QAAU,CAACA,EAAM,QAAU,KAAK,QAC9D,KAAK,OAAO9b,EAAI,EAAK,CAG3B,CACF,CACF,EACA,QAAS,CACP,OAAOA,EAAI8/B,EAAQ,CACjB,IAAInmC,EAAImM,EACR,IAAMgW,GAASniB,EAAK,KAAK,cAAgB,KAAO,OAASA,EAAG,IAAIqG,CAAE,EAClE,GAAI,CAAC8b,EACH,QAEDhW,EAAKgW,EAAM,MAAQ,MAAgBhW,EAAG,KAAKgW,CAAK,EACjD7X,GAAIjE,EAAI,UAAW,CAAC8/B,GAAU,KAAK,OAAS,EAAI,EAAE,EAClDngC,GAAYK,EAAI4/B,GAAWE,CAAM,EACjCngC,GAAYK,EAAI8b,EAAM,GAAG,EACzB,IAAI3f,EACJ,GAAIA,EAAQ2f,EAAM,IAAI,MAAM,wBAAwB,EAAG,CACrD,IAAMikB,GAAyB,IAAMzgC,GAAYU,EAAI7D,CAAK,EACtD2jC,EACFhkB,EAAM,IAAMhX,GAAK9E,EAAI,+BAAgC+/B,GAAwB,CAC3E,KAAM,EACR,CAAC,EAEDA,GAAuB,CAE3B,CACA56B,GAAQnF,EAAI8/B,EAAS,SAAW,SAAS,EACzChkB,EAAM,OAASgkB,CACjB,CACF,CACF,EAEIE,IAAe,CACjB,MAAO,CACL,IAAK,OACL,QAAS,QACT,OAAQ,QACR,OAAQ,OACR,OAAQ,MACV,EACA,KAAM,CACJ,IAAK,YACL,QAAS,GACT,OAAQ,GACR,OAAQ,+BACR,OAAQ,CACV,EACA,SAAU,CACR,MAAO,CAAC,CAAE,OAAAp7B,CAAO,EAAGsT,IAAQ9O,GAAGxE,EAAQsT,CAAG,EAAE,OAAQlY,GAAOiC,GAAiBjC,CAAE,CAAC,EAC/E,SAAS,CAAE,QAAAigC,CAAQ,EAAG,CACpB,OAAO,KAAK,MAAM,IAAKjgC,GAAOA,EAAG,QAAQigC,GAAW,GAAG,CAAC,CAC1D,CACF,EACA,MAAO,CACL,MAAMC,EAAO,CACP,KAAK,QACP,KAAK,QAAQ,SAAUA,EAAO,CAAE,OAAQ,KAAK,MAAO,CAAC,CAEzD,CACF,EACA,QAAS,CAACjzB,GAAa,EAAGyK,GAAS,CAAC,EACpC,OAAQ,CACN,CACE,MAAO,CACL,IAAMvT,EAAU,KAAK,MAAM,IAAKnE,IAAOmC,GAAmBnC,EAAE,GAAKA,GAAG,aAAa,EAC3E,CAAE,OAAArB,CAAO,EAAIwF,EACnB,GAAI,CAACxF,GAAU,CAACwC,GAAU,KAAK,GAAG,EAChC,MAAO,GAET,IAAMiP,EAAgB2B,GAAa5N,EAAS,EAAI,EAC1C,CAAE,UAAAkM,EAAW,aAAAC,CAAa,EAAIF,EAC9BI,EAAWR,GAAeI,CAAa,EACvC9S,GAAMgT,EAAeE,EAAS,OAChCqW,GAAS,GACb,GAAIxW,GAAa/S,GACfupB,GAASloB,EAAS,MACb,CACL,IAAMmL,GAAW,KAAK,OAASR,GAAamI,GAAmB,CAAC,EAAE,OAASjB,EAAS,OAAS,GAC7F,QAASjS,GAAI,EAAGA,GAAI4F,EAAQ,QACtB,EAAAsF,GAAOtF,EAAQ5F,EAAC,CAAC,EAAE,IAAMiS,EAAS,IAAM1G,GAAW,GADrBvL,KAIlCsoB,GAAS,CAACtoB,EAEd,CACA,MAAO,CAAE,OAAAsoB,EAAO,CAClB,EACA,MAAM,CAAE,OAAAA,CAAO,EAAG,CAChB,IAAMjJ,EAAUiJ,IAAW,IAAS,CAACxnB,GAAS,KAAK,SAASwnB,CAAM,EAAG,KAAK,GAAG,EAC7E,KAAK,MAAM,QAAS7mB,GAAOA,EAAG,KAAK,CAAC,EACpC,QAASzB,EAAI,EAAGA,EAAI,KAAK,SAAS,OAAQA,IACxCoB,GAAY,KAAK,SAASpB,CAAC,EAAG,KAAK,IAAK,CAACA,IAAMsoB,CAAM,EAEnDjJ,GACFzY,GAAQ,KAAK,IAAK,SAAU,CAAC0hB,EAAQ,KAAK,SAASA,CAAM,CAAC,CAAC,CAE/D,EACA,OAAQ,CAAC,SAAU,QAAQ,CAC7B,CACF,CACF,EAEIsZ,IAAS,CACX,OAAQ,CAACnrB,GAAOmU,EAAK,EACrB,MAAO,CACL,SAAU,OACV,IAAK,KACL,OAAQ,KACR,MAAO,KACP,IAAK,KACL,OAAQ,OACR,aAAc,QACd,UAAW,OACX,UAAW,OACX,YAAa,OACb,SAAU,OACV,SAAU,OACV,UAAW,OACX,SAAU,QACV,aAAc,MAChB,EACA,KAAM,CACJ,SAAU,MACV,IAAK,GACL,OAAQ,GACR,MAAO,GACP,IAAK,GACL,OAAQ,EACR,aAAc,GACd,UAAW,GACX,UAAW,YACX,YAAa,GACb,SAAU,kBACV,SAAU,kBACV,UAAW,GACX,SAAU,GACV,aAAc,EAChB,EACA,SAAU,CACR,OAAQ,CAAC,CAAE,UAAAiX,CAAU,EAAGloB,IAAQkoB,GAAat4B,GAAEs4B,EAAWloB,CAAG,GAAKA,CACpE,EACA,WAAY,CACV,KAAK,MAAQmoB,GAAO,KAAK,OAAS,KAAK,GAAG,EAC1C,KAAK,IAAMA,GAAO,KAAK,KAAO,KAAK,MAAM,EACzC,KAAK,YAAcv4B,GAAE,2BAA4B,KAAK,GAAG,GAAKA,GAAE,2CAA2C,EAC3G,KAAK,QAAU,GACf,KAAK,UAAU,EAAK,CACtB,EACA,kBAAmB,CACb,KAAK,UACP,KAAK,KAAK,EACVxI,GAAY,KAAK,OAAQ,KAAK,WAAW,GAE3C8nB,GAAM,KAAK,GAAG,EACd1e,GAAS,KAAK,WAAW,EACzB,KAAK,YAAc,IACrB,EACA,QAAS,CACP8H,GAAS,EACTkH,GAAS,CAAE,OAAQ,IAAM,SAAS,gBAAiB,CAAC,EACpDR,GAAO,CACL,OAAQ,CAAC,CAAE,IAAAgB,CAAI,IAAM,CAACA,EAAKooB,GAAiBpoB,CAAG,EAAG,SAAS,gBAAgB,EAC3E,QAAQjK,EAAS,CACf,KAAK,MACH,KAAK,MAAM,SAAWA,EAAQ,KAAK,CAAC,CAAE,OAAArJ,CAAO,IAAMA,IAAW07B,GAAiB,KAAK,GAAG,CAAC,EAAI,SAAW,QACzG,EACA,KAAK,MAAM,QAAU,EACvB,CACF,CAAC,CACH,EACA,OAAQ,CACN,CACE,KAAM,2BACN,GAAI,IAAM,OACV,OAAQ,CAAC,CAAE,aAAApsB,CAAa,IAAMA,IAAiB,GAC/C,SAAU,CACR,GAAM,CAAE,iBAAAhD,CAAiB,EAAI,SACzB,CAAC,SAAS,MAAQA,EAAiB,YAAc,GAGrD,WAAW,IAAM,CACf,IAAMgD,EAAezK,GAAO3B,GAAE,SAAS,IAAI,CAAC,EACtCmM,EAAWxK,GAAO,KAAK,GAAG,EAC5B,KAAK,SAAWjM,GAAc0W,EAAcD,CAAQ,IACtD/C,EAAiB,UAAY,KAAK,KAChCgD,EAAa,IAAMD,EAAS,OAASjJ,GAAK,KAAK,aAAc,SAAU,KAAK,WAAW,EAAIA,GAAK,KAAK,OAAQ,SAAU,KAAK,WAAW,CACzI,EAEJ,CAAC,CACH,CACF,CACF,EACA,OAAQ,CACN,CACE,KAAK,CAAE,OAAQu1B,EAAU,MAAA/2B,EAAO,OAAAyf,EAAQ,OAAAkX,CAAO,EAAG/7B,EAAO,CAEvD,GADA,KAAK,SAAW,CAAC,KAAK,YAAc,CAACjD,GAAU,KAAK,GAAG,GAAK,CAAC,KAAK,IAAI,aAClE,KAAK,SACP,OAEF,IAAMq/B,EAAkBj3B,GAAO,MAAM,EAC/Bk3B,GAAkB,KAAK,IAC3B,EACA,SAAS,iBAAiB,aAAeD,CAC3C,EACA,GAAI,CAACC,GAAiB,CACpB,KAAK,SAAW,GAChB,MACF,CACA,IAAMtM,GAAO,KAAK,SAAW/vB,EAAM,IAAI,QAAQ,EAC3C+vB,KACFuM,GAAkB,KAAK,MAAM,EAC7B,KAAK,KAAK,GAEP,KAAK,SACP,CAAE,OAAQH,EAAU,MAAA/2B,CAAM,EAAIF,GAAa,KAAK,GAAG,EACpD2f,EAAShlB,GAAI,KAAK,IAAK,QAAQ,GAE7BkwB,IACF,KAAK,KAAK,EAEZ,IAAMnI,GAAYhhB,GAAK,QAAS,QAAQ,EACpC1H,GAAW,KAAK,SAChB,KAAK,cAAgBi9B,EAAWvU,KAClC1oB,GAAWA,KAAa,MAAQ,SAAW,OAE7C,IAAMq9B,GAAmB,KAAK,QAAU,KAAK,YAAc,KAAK,IAC5DC,GAAW51B,GAAK,KAAK,OAAQ,SAAUm1B,EAAS,KAAK,IAAMQ,EAAgB,EAC3Er9B,KAAa,WAAai9B,EAAWC,GAAmB,KAAK,gBAC/DI,IAAYJ,EAAkBD,GAEhC,IAAMlV,GAAW,KAAK,aAAe,EAAI,KAAK,IAAI,EAAGkV,EAAWK,GAAW5U,EAAS,EAC9E6U,GAAYp3B,GAAOk3B,EAAgB,EAAE,IAC3C,IAAI,UAAU18B,GAAI08B,GAAkB,WAAW,CAAC,EAAE,IAC5CjwB,GAAWpH,GAAa,KAAK,GAAG,EAAE,OAClC0H,IAAS,KAAK,QAAU,GAAQ6vB,GAAYC,GAAU,KAAK,MAAO,KAAK,IAAKD,EAAS,GAAKD,GAC1F1uB,GAAM,KAAK,MAAQ,GAAQuuB,GAAkB,KAAK,IACtDA,GACAK,GAAU,KAAK,IAAK,KAAK,IAAKD,GAAYN,EAAU,EAAI,EAAI7vB,GAAWkwB,GAAWvV,EACpF,EACA,OAAA8U,EAAS,CAAC,KAAK,UAAYnvB,GAAQ4vB,KAAaC,IAAa3uB,KAAQ,KAAK,IACxEuuB,GACAK,GAAU,GAAM,KAAK,IAAK,EAAG,EAAI,EAAIpwB,GAAWkwB,GAAWvV,EAC7D,GAAKpnB,GAAIq8B,GAAiB,KAAK,GAAG,EAAG,WAAW,IAAM,SAC/C,CACL,MAAAtvB,GACA,IAAAkB,GACA,OAAQ0uB,GACR,SAAAvV,GACA,OAAQkV,EACR,SAAA7vB,GACA,MAAAlH,EACA,OAAAyf,EACA,IAAK3e,GAAeq2B,EAAgB,EAAE,CAAC,EACvC,OAAAR,EACA,SAAUnU,GACV,gBAAAyU,EACF,CACF,EACA,MAAM,CAAE,OAAAl3B,EAAQ,MAAAC,EAAO,OAAAyf,EAAQ,OAAAxf,EAAQ,OAAA02B,CAAO,EAAG,CAI/C,IAHI,KAAK,UAAYA,GAAU,CAAC,KAAK,UACnC/Y,GAAM,KAAK,GAAG,EAEZ,KAAK,SACP,OAEE+Y,IACF52B,EAASC,EAAQyf,EAAS,EAC1BhlB,GAAI,KAAK,IAAK,CAAE,SAAU,SAAU,IAAKwF,CAAO,CAAC,GAEnD,GAAM,CAAE,YAAAmmB,CAAY,EAAI,KACxB3rB,GAAI2rB,EAAa,CAAE,OAAArmB,EAAQ,MAAAC,EAAO,OAAAyf,CAAO,CAAC,GACtCxnB,GAAOmuB,CAAW,IAAMnuB,GAAO,KAAK,GAAG,GAAK0+B,EAASp+B,GAAM6tB,CAAW,EAAI7tB,GAAM,KAAK,GAAG,MACzFo+B,EAAS93B,GAASC,IAAO,KAAK,IAAKsnB,CAAW,EAC/CA,EAAY,OAAS,GAEzB,EACA,OAAQ,CAAC,QAAQ,CACnB,EACA,CACE,KAAK,CACH,OAAQmR,EAAa,EACrB,IAAKC,EAAU,OACf,SAAA3V,EACA,eAAA4V,EAAiB,EACjB,MAAAjwB,EACA,IAAAkB,EACA,SAAAxB,GACA,OAAAnH,GACA,OAAA42B,GACA,gBAAAM,EACF,EAAG,CACD,IAAMS,GAAU,KAAK,IAAI,SAAS,iBAAiB,UAAWT,EAAe,EACvE12B,GAAMg3B,GAAcG,GAAU,OAAS,KACvCP,GAAmB,KAAK,QAAU,KAAK,YAAc,KAAK,IAChE,MAAO,CACL,IAAA52B,GACA,QAAAi3B,EACA,OAAQE,GACR,WAAAH,EACA,MAAOG,GAAUz3B,GAAOk3B,EAAgB,EAAE,KAAOR,GAAS,KAAK,IAAI52B,GAAQmH,EAAQ,EAAInH,IACvF,gBAAiBE,GAAOk3B,GAAiB,YAAY,EAAE,IACvD,eAAgBvjC,GACd6jC,EAAiB7jC,GAAM8jC,GAASlwB,EAAOkB,CAAG,EAAI9U,GAAM2jC,EAAY/vB,EAAOkB,CAAG,EAC1E,EACAmZ,CACF,CACF,CACF,EACA,MAAMjrB,EAAMgE,EAAO,CACjB,IAAM+8B,EAAiB/8B,EAAM,IAAI,QAAQ,EACnC,CACJ,cAAAg9B,EAAgB,EAChB,IAAAr3B,EACA,QAAAi3B,EACA,OAAQE,GACR,WAAAH,GAAa,EACb,IAAA/2B,GACA,MAAAgH,GACA,MAAAqwB,EACF,EAAIjhC,EACJ,GAAI8gC,GAAU,GAAKA,KAAYH,IAAcI,GAAkB,KAAK,UAAY,CAACA,GAAkB,CAAC,KAAK,QACvG,OAEF,IAAMG,GAAM,KAAK,IAAI,EAKrB,IAJIA,GAAMF,EAAgB,KAAOr3B,IAAQi3B,KACvC5gC,EAAK,WAAa8gC,GAClB9gC,EAAK,cAAgBkhC,IAEnB,OAAK,UAAY,CAAC,KAAK,SAAW,KAAK,IAAIlhC,EAAK,WAAa8gC,EAAO,GAAK,IAAM,KAAK,IAAIH,GAAaG,EAAO,GAAK,IAGrH,GAAI,KAAK,UAAYA,GAAUlwB,IAAS,KAAK,WAAakwB,IAAWlwB,IAASjH,IAAQ,QAAUo3B,GAAkBp3B,IAAQ,MAAQ,CAAC,KAAK,SAAW,CAACs3B,IAAQ,CAC1J,GAAI,CAAC,KAAK,QAAS,CACb55B,GAAU,WAAW,KAAK,GAAG,GAAKuC,GAAMk3B,KAC1Cz5B,GAAU,OAAO,KAAK,GAAG,EACzB,KAAK,KAAK,GAEZ,MACF,CACA,GAAI,KAAK,WAAa45B,GAAO,CAC3B,GAAIhiC,GAAS,KAAK,IAAK,oBAAoB,EACzC,OAEFoI,GAAU,IAAI,KAAK,IAAK,KAAK,SAAS,EAAE,KAAK,IAAM,KAAK,KAAK,EAAGlK,EAAI,CACtE,MACE,KAAK,KAAK,CAEd,MAAW,KAAK,QACd,KAAK,OAAO,EACH,KAAK,WAAa8jC,IAC3B,KAAK,KAAK,EACV55B,GAAU,GAAG,KAAK,IAAK,KAAK,SAAS,EAAE,MAAMlK,EAAI,IAEjDmjC,GAAkB,KAAK,MAAM,EAC7B,KAAK,KAAK,EAEd,EACA,OAAQ,CAAC,SAAU,iBAAkB,QAAQ,CAC/C,CACF,EACA,QAAS,CACP,MAAO,CACL,KAAK,QAAU,GACf,KAAK,OAAO,EACZ,KAAK,YAAY,OAAS,EAC5B,EACA,MAAO,CACL,GAAM,CAAE,OAAAj3B,EAAQ,OAAA02B,CAAO,EAAI,KAAK,MAChC,KAAK,UAAU,EAAK,EACpB7gC,GAAY,KAAK,IAAK,KAAK,SAAU,KAAK,QAAQ,EAC9C6gC,EACFl8B,GAAI,KAAK,IAAK,MAAOwF,CAAM,EAE3BxF,GAAI,KAAK,IAAK,CACZ,SAAU,GACV,IAAK,GACL,MAAO,GACP,UAAW,EACb,CAAC,EAEH,KAAK,YAAY,OAAS,GAC1B,KAAK,QAAU,EACjB,EACA,QAAS,CACP,GAAI,CACF,MAAAuF,EACA,OAAQ03B,EAAU,EAClB,SAAA7V,EACA,eAAA4V,EAAiB,EACjB,MAAAjwB,EACA,IAAAkB,EACA,OAAAzI,GACA,gBAAA83B,GACA,OAAApB,GACA,MAAAkB,EACF,EAAI,KAAK,MACHxa,GAAS7V,IAAU,GAAKkwB,EAAUlwB,EACxC,GAAI,CAACmvB,GAAQ,CACX,IAAI78B,GAAW,QACX49B,EAAUhvB,IACZzI,IAAUyI,EAAMqvB,GAAkBN,EAAiB5V,EACnD/nB,GAAW,YAEbW,GAAI,KAAK,IAAK,CAAE,SAAAX,GAAU,MAAAkG,EAAO,UAAW,CAAE,EAAG,WAAW,CAC9D,CACAvF,GAAI,KAAK,IAAK,MAAOwF,GAASw3B,CAAc,EAC5C,KAAK,UAAUpa,EAAM,EACrBlnB,GAAY,KAAK,IAAK,KAAK,SAAU0hC,EAAK,EAC1CtiC,GAAS,KAAK,IAAK,KAAK,QAAQ,CAClC,EACA,UAAU8nB,EAAQ,CAChB,IAAMzV,EAAO,KAAK,OAClB,KAAK,OAASyV,EACVA,GACFrnB,GAAa,KAAK,OAAQ,KAAK,YAAa,KAAK,SAAS,EAC1D4R,IAASyV,GAAU1hB,GAAQ,KAAK,IAAK,QAAQ,IAE7C3F,GAAa,KAAK,OAAQ,KAAK,UAAW,KAAK,WAAW,EACtD4R,IAASyV,IACX6Z,GAAkB,KAAK,MAAM,EAC7Bv7B,GAAQ,KAAK,IAAK,UAAU,GAGlC,CACF,CACF,EACA,SAAS27B,GAAUjmC,EAAOmF,EAAIwhC,EAAYtJ,EAAS,CACjD,GAAI,CAACr9B,EACH,MAAO,GAET,GAAIG,EAAUH,CAAK,GAAKC,EAASD,CAAK,GAAKA,EAAM,MAAM,OAAO,EAC5D,OAAO2mC,EAAax2B,GAAKnQ,EAAO,SAAUmF,EAAI,EAAI,EAC7C,CACL,IAAMyhC,EAAa5mC,IAAU,GAAOylC,GAAiBtgC,CAAE,EAAIuC,GAAM1H,EAAOmF,CAAE,EAC1E,OAAOyJ,GAAOg4B,CAAU,EAAE,QAAUvJ,GAA0CuJ,GAAW,SAASzhC,CAAE,EAAK1E,EAAQ2I,GAAIw9B,EAAY,eAAe,CAAC,EAAInmC,EAAQ2I,GAAIw9B,EAAY,mBAAmB,CAAC,EAAI,EACvM,CACF,CACA,SAASpB,GAAOxlC,EAAO,CACrB,OAAIA,IAAU,OACL,GACEA,IAAU,QACZ,GAEFA,CACT,CACA,SAASusB,GAAMpnB,EAAI,CACjBiE,GAAIjE,EAAI,CAAE,SAAU,GAAI,IAAK,GAAI,UAAW,GAAI,MAAO,EAAG,CAAC,CAC7D,CACA,IAAM0hC,GAAuB,wBAC7B,SAAShB,GAAkBllC,EAAS,CAC7B6D,GAAS7D,EAASkmC,EAAoB,IACzC3iC,GAASvD,EAASkmC,EAAoB,EACtC,sBAAsB,IAAMpiC,GAAY9D,EAASkmC,EAAoB,CAAC,EAE1E,CACA,SAASpB,GAAiB9kC,EAAS,CACjC,KAAOA,EAAUiG,GAAOjG,CAAO,GAC7B,GAAI2F,GAAU3F,CAAO,EACnB,OAAOA,CAGb,CAEA,IAAMmmC,GAAc,2CACpB,IAAIC,GAAW,CACb,OAAQ,CAACzkB,EAAS,EAClB,KAAM,UACN,MAAO,CACL,QAAS,OACT,OAAQ,OACR,QAAS,OACT,OAAQ,OACR,YAAa,QACb,QAAS,OACX,EACA,KAAM,CACJ,QAAS,gBACT,OAAQ,qBACR,QAAS,GACT,OAAQ,EACR,IAAK,YACL,SAAU,mBACV,YAAa,UACb,YAAa,GACb,QAAS,EACX,EACA,SAAU,CACR,SAAU,CACR,IAAK,CAAC,CAAE,QAAAsW,CAAQ,EAAGvb,IAAQvV,GAAS8wB,EAASvb,CAAG,EAChD,QAAS,CAAC,CAAE,QAAAub,CAAQ,IAAMA,CAC5B,EACA,iBAAkB,CAChB,OAAO,KAAK,SAAS,IAAKzzB,GAAO6B,GAAS7B,CAAE,CAAC,EAAE,KAAK,CACtD,EACA,QAAS,CAAC,CAAE,OAAAsb,CAAO,EAAGpD,IAAQ9O,GAAGkS,EAAQpD,CAAG,EAC5C,SAAS5e,EAAG4e,EAAK,CACf,OAAOrW,GAASqW,CAAG,EAAE,OAClBhC,GAAU,KAAK,QAAQ,KAAMoF,GAAWpF,EAAM,SAASoF,CAAM,CAAC,CACjE,CACF,CACF,EACA,MAAO,CACL,SAASumB,EAAU,CACb,KAAK,SACP59B,GAAI49B,EAAU,cAAe,kBAAkB,EAEjD,KAAK,MAAM,CACb,EACA,iBAAkB,CAChB,IAAI9/B,EAAQ,KAAK,IAAI,EAAG,KAAK,MAAM,CAAC,EACpC,QAAW/B,KAAM,KAAK,SACpB6B,GAAS7B,CAAE,EAAE,QAAQ,CAACkW,EAAO3X,IAAMoB,GAAYuW,EAAO,KAAK,IAAK3X,IAAMwD,CAAK,CAAC,EAE9E,KAAK,MAAM,CACb,EACA,QAAQqZ,EAAS,CACf,KAAK,MAAM,EACX,IAAMyL,EAAS,KAAK,MAAM,EAC1B,KAAK,KAAK,CAACA,EAASA,EAASzL,EAAQ,KAAK,MAAM,GAAKA,EAAQ,CAAC,CAAC,CACjE,CACF,EACA,WAAY,CACVtb,GAAK,KAAK,IAAK,OAAQ,SAAS,CAClC,EACA,QAAS,CACPuX,GAAS,CAAE,QAAS,CAAC,CAAE,gBAAAyqB,CAAgB,IAAMA,CAAgB,CAAC,EAC9DlqB,GAAM,CAAE,OAAQ,CAAC,CAAE,SAAAiqB,CAAS,IAAMA,EAAU,OAAQ,CAAC,CAAE,QAAA7C,CAAQ,IAAMA,CAAQ,CAAC,CAChF,EACA,OAAQ,CACN,CACE,KAAM,gBACN,SAAU,CAAC,CAAE,OAAA1jB,CAAO,IAAMA,EAC1B,QAAQrW,EAAG,CACL,CAAC3D,GAAQ2D,EAAE,QAAS08B,EAAW,IAAM18B,EAAE,OAAS,SAAWA,EAAE,UAAYgW,GAAO,SAClFhW,EAAE,eAAe,EACjB,KAAK,KAAKA,EAAE,OAAO,EAEvB,CACF,EACA,CACE,KAAM,UACN,SAAU,CAAC,CAAE,OAAAqW,CAAO,IAAMA,EAC1B,QAAQrW,EAAG,CACT,GAAM,CAAE,QAAAxG,EAAS,QAAAmoB,CAAQ,EAAI3hB,EACvB88B,EAAazgC,GAAQ,KAAK,IAAK,KAAK,WAAW,EACjD/C,EAAIqoB,IAAY3L,GAAO,KAAO,EAAI2L,IAAY3L,GAAO,IAAM,OAAS2L,IAAY3L,GAAO,MAAQ,CAAC8mB,GAAcnb,IAAY3L,GAAO,IAAM8mB,EAAa,WAAanb,IAAY3L,GAAO,OAAS,CAAC8mB,GAAcnb,IAAY3L,GAAO,MAAQ8mB,EAAa,OAAS,GACjQ,GAAI,CAACxjC,EAAG,CACN0G,EAAE,eAAe,EACjB,IAAMmW,EAAU,KAAK,QAAQ,OAAQpb,IAAO,CAACsB,GAAQtB,GAAI2hC,EAAW,CAAC,EAC/D7mB,GAAOM,EAAQ9c,GAASC,EAAG6c,EAASA,EAAQ,QAAQ3c,CAAO,CAAC,CAAC,EACnEqc,GAAK,MAAM,EACP,KAAK,aACP,KAAK,KAAKA,EAAI,CAElB,CACF,CACF,EACA,CACE,KAAM,QACN,GAAI,CAAC,CAAE,IAAA5C,EAAK,SAAA2pB,EAAU,QAAAG,CAAQ,IAAMH,EAAS,OAAOG,EAAUr/B,GAASq/B,EAAS9pB,CAAG,EAAI,CAAC,CAAC,EACzF,SAAU,CAAC,CAAE,SAAAiD,CAAS,IAAM,IAAIA,CAAQ,WAAWA,CAAQ,IAC3D,QAAQlW,EAAG,CACLA,EAAE,OAAO,QAAQ,UAAU,IAC7BA,EAAE,eAAe,EACjB,KAAK,KAAK7E,GAAK6E,EAAE,QAAS,KAAK,QAAQ,CAAC,EAE5C,CACF,EACA,CACE,KAAM,uBACN,OAAQ,CAAC,CAAE,QAAA+5B,CAAQ,IAAMA,EACzB,GAAI,CAAC,CAAE,SAAA6C,CAAS,IAAMA,EACtB,QAAQ,CAAE,KAAAl9B,CAAK,EAAG,CAChB,KAAK,KAAK/K,EAAS+K,EAAM,MAAM,EAAI,OAAS,UAAU,CACxD,CACF,CACF,EACA,QAAS,CACP,IAAIhL,EACJ,QAAWqG,KAAM,KAAK,SAChB2H,GAAM3H,EAAI,IAAI,GAChBF,GAAKE,EAAI,OAAQ,cAAc,EAGnCF,GAAK+B,GAAS,KAAK,GAAG,EAAG,OAAQ,cAAc,EAC/C,QAAWE,KAAS,KAAK,QAAS,CAChC,IAAMuZ,EAAS,KAAK,QAAQvZ,CAAK,EAC3BlF,GAAQlD,EAAK,KAAK,SAAS,CAAC,IAAM,KAAO,OAASA,EAAG,SAASoI,CAAK,EACzEjC,GAAKwb,EAAQ,OAAQ,KAAK,EACrBze,IAGLye,EAAO,GAAK6K,GAAW,KAAM7K,CAAM,EACnCze,EAAK,GAAKspB,GAAW,KAAMtpB,CAAI,EAC/BiD,GAAKwb,EAAQ,gBAAiBze,EAAK,EAAE,EACrCiD,GAAKjD,EAAM,CAAE,KAAM,WAAY,kBAAmBye,EAAO,EAAG,CAAC,EAC/D,CACAxb,GAAK,KAAK,IAAK,mBAAoBwB,GAAQ,KAAK,IAAK,KAAK,WAAW,EAAI,WAAa,IAAI,CAC5F,EACA,QAAS,CACP,OAAQ,CACN,OAAOxH,EAAU,KAAK,SAAWkG,GAAOX,GAASW,EAAI,KAAK,GAAG,CAAC,CAChE,EACA,KAAKnD,EAAM,CACT,IAAMue,EAAU,KAAK,QAAQ,OAAQpb,IAAO,CAACsB,GAAQtB,GAAI2hC,EAAW,CAAC,EAC/DvwB,EAAO,KAAK,MAAM,EAClB0J,EAAOxc,GACX,CAAC5D,EAAOmC,CAAI,GAAKhD,EAASuhB,EAASve,CAAI,EAAIA,EAAO,EAClDue,EACA9c,GAAS,KAAK,QAAQ8S,CAAI,EAAGgK,CAAO,CACtC,EACMyL,EAASvoB,GAAS8c,EAAQN,CAAI,EAAG,KAAK,OAAO,EACnD,KAAK,SAAS,QAAQ,CAAC5E,GAAO3X,KAAM,CAClCoB,GAAYuW,GAAO,KAAK,IAAK2Q,IAAWtoB,EAAC,EACzCuB,GAAK,KAAK,QAAQvB,EAAC,EAAG,CACpB,gBAAiBsoB,IAAWtoB,GAC5B,SAAUsoB,IAAWtoB,GAAI,KAAO,EAClC,CAAC,CACH,CAAC,EACD,IAAMwd,EAAU3K,GAAQ,GAAKA,IAAS0J,EACtC,KAAK,SAAS,QAAQ,MAAO,CAAE,SAAUhZ,EAAU,IAAM,CACvD,IAAMuZ,GAAUnhB,EAAQ4H,EAAS,EAAE,OACjC,CAACoU,GAAO3X,KAAMA,KAAMsoB,GAAUxnB,GAAS6W,GAAO,KAAK,GAAG,CACxD,EACI,MAAM,KAAK,cAAcmF,GAAS,GAAOU,CAAO,GAClD,MAAM,KAAK,cAAcja,GAAU+kB,CAAM,EAAG,GAAM9K,CAAO,CAE7D,CAAC,CACH,CACF,CACF,EAEIkmB,IAAM,CACR,OAAQ,CAACjtB,EAAK,EACd,QAAS4sB,GACT,MAAO,CACL,MAAO,OACT,EACA,KAAM,CACJ,MAAO,IACP,SAAU,cACV,YAAa,4BACf,EACA,WAAY,CACV,IAAMxiC,EAAMC,GAAS,KAAK,IAAK,aAAa,EAAI,cAAgBA,GAAS,KAAK,IAAK,cAAc,EAAI,eAAiB,GAClHD,GACF,KAAK,QAAQ,SAAU,KAAK,IAAK,CAAE,IAAAA,EAAK,KAAM,QAAS,MAAO,KAAK,KAAM,CAAC,CAE9E,CACF,EAEA,IAAM8iC,IAAY,GAClB,IAAI5mB,IAAS,CACX,OAAQ,CAAC6N,GAAOhM,EAAS,EACzB,KAAM,SACN,MAAO,CACL,KAAM,OACN,OAAQ,KACR,KAAM,OACN,OAAQ,OACV,EACA,KAAM,CACJ,KAAM,GACN,OAAQ,GACR,KAAM,QACN,OAAQ,EACV,EACA,SAAU,CACR,OAAQ,CACN,IAAK,CAAC,CAAE,OAAAvY,CAAO,EAAGsT,KAChBtT,EAASjC,GAASiC,GAAUsT,EAAI,KAAMA,CAAG,EAClCtT,EAAO,OAASA,EAAS,CAACsT,CAAG,GAEtC,QAAS,CAAC,CAAE,OAAAtT,CAAO,IAAMA,CAC3B,CACF,EACA,WAAY,CACL/K,EAAS,KAAK,KAAM,OAAO,IACzB2H,GAAY,KAAK,GAAG,GACvB1B,GAAK,KAAK,IAAK,WAAY,GAAG,EAE5B,CAAC,KAAK,KAAO6H,GAAM,KAAK,IAAK,GAAG,GAClC7H,GAAK,KAAK,IAAK,OAAQ,QAAQ,EAGrC,EACA,QAASuX,GAAS,CAAE,QAAS,CAAC,CAAE,OAAAzS,CAAO,IAAMA,CAAO,CAAC,EACrD,OAAQ,CACN,CACE,KAAMlE,GACN,OAAQ,CAAC,CAAE,KAAAqd,CAAK,IAAMlkB,EAASkkB,EAAM,OAAO,EAC5C,QAAQ9Y,EAAG,CACT,KAAK,cAAgB,KACjB,GAACW,GAAQX,CAAC,GAAKrK,EAAU,KAAK,UAAU,GAAK,KAAK,IAAI,YAG1DuK,GAAQ,KAAK,IAAK,OAAO,EACzBL,GACE,SACApE,GACA,IAAMyE,GAAQ,KAAK,IAAK,MAAM,EAC9B,GACC0S,GAAO,CAAC,KAAK,IAAI,SAASA,EAAG,MAAM,CACtC,EACIhe,EAAS,KAAK,KAAM,OAAO,IAC7B,KAAK,cAAgB,IAEzB,CACF,EACA,CAGE,KAAM,yBAAyBgH,EAAY,IAAIC,EAAY,cAC3D,OAAQ,CAAC,CAAE,KAAAid,CAAK,IAAMlkB,EAASkkB,EAAM,OAAO,EAC5C,QAAQ9Y,EAAG,CACT,GAAIW,GAAQX,CAAC,GAAK,KAAK,IAAI,SACzB,OAEF,IAAMoY,EAAOxjB,EAAS,CAAC,aAAcgH,GAAc,OAAO,EAAGoE,EAAE,IAAI,EAC7Dk9B,EAAW,KAAK,UAAU,KAAK,MAAM,EAC3C,GAAI,CAAC9kB,IAAS,CAACziB,EAAU,KAAK,UAAU,GAAKqK,EAAE,OAAS,QAAU3D,GAAQ,KAAK,IAAK,QAAQ,GAAK2D,EAAE,OAAS,QAAU3D,GAAQ,KAAK,IAAK,QAAQ,GAAI,CAC9I6gC,IAAa,KAAK,aACpB,KAAK,WAAa,MAEpB,MACF,CACI9kB,GAAQziB,EAAU,KAAK,UAAU,GAAKunC,IAAa,KAAK,aAG5D,KAAK,WAAa9kB,EAAO8kB,EAAW,KACpC,KAAK,OAAO,SAAS9kB,EAAO,OAAS,MAAM,EAAE,EAC/C,CACF,EACA,CACE,KAAM,UACN,OAAQ,CAAC,CAAE,IAAAnF,EAAK,KAAA6F,CAAK,IAAMlkB,EAASkkB,EAAM,OAAO,GAAK,CAACpW,GAAMuQ,EAAK,OAAO,EACzE,QAAQjT,EAAG,CACLA,EAAE,UAAYi9B,MAChBj9B,EAAE,eAAe,EACjB,KAAK,IAAI,MAAM,EAEnB,CACF,EACA,CACE,KAAM,QACN,OAAQ,CAAC,CAAE,KAAA8Y,CAAK,IAAM,CAAC,QAAS,OAAO,EAAE,KAAMqkB,GAAMvoC,EAASkkB,EAAMqkB,CAAC,CAAC,EACtE,QAAQn9B,EAAG,CACT,IAAIo9B,GACA,KAAK,eAAiBp9B,EAAE,OAAO,QAAQ,yBAAyB,IAAMo9B,EAAOp9B,EAAE,OAAO,QAAQ,SAAS,KAAO,CAAC,KAAK,UAAU,KAAK,MAAM,GAAKo9B,EAAK,MAAQ/gC,GAAQ,KAAK,OAAQ+gC,EAAK,IAAI,KAC3Lp9B,EAAE,eAAe,EAEf,CAAC,KAAK,eAAiBpL,EAAS,KAAK,KAAM,OAAO,GACpD,KAAK,OAAO,CAEhB,CACF,EACA,CACE,KAAM,cACN,OAAQ,CAAC,CAAE,KAAAkkB,CAAK,IAAMlkB,EAASkkB,EAAM,OAAO,EAC5C,GAAI,CAAC,CAAE,OAAAnZ,CAAO,IAAMA,EACpB,QAAQK,EAAGq9B,EAAU,CACfA,EAAS,QAAU,KAAK,UAAU,KAAK,MAAM,GAC/C,KAAK,OAAO,CAEhB,CACF,CACF,EACA,QAAS,CACP,MAAM,OAAO39B,EAAM,CACjB,GAAI,CAACQ,GAAQ,KAAK,OAAQR,GAAQ,SAAU,CAAC,IAAI,CAAC,EAChD,OAKF,GAHIzE,GAAQ,KAAK,IAAK,eAAe,GACnCJ,GAAK,KAAK,IAAK,gBAAiB,CAAC,KAAK,UAAU,KAAK,MAAM,CAAC,EAE1D,CAAC,KAAK,OACR,OAAO,KAAK,cAAc,KAAK,MAAM,EAEvC,IAAMyiC,EAAU,KAAK,OAAO,OAAQviC,GAAOX,GAASW,EAAI,KAAK,QAAQ,CAAC,EACtE,GAAIuiC,EAAQ,OAAQ,CAClB,QAAWviC,KAAM,KAAK,OAAQ,CAC5B,IAAMwiC,EAAY3oC,EAAS0oC,EAASviC,CAAE,EACtC,KAAK,cAAcA,EAAIwiC,EAAWA,CAAS,CAC7C,CACA,MACF,CACA,IAAM7kB,EAAU,KAAK,OAAO,OAAO,KAAK,SAAS,EAC7C,MAAM,KAAK,cAAcA,EAAS,EAAK,GACzC,MAAM,KAAK,cACT,KAAK,OAAO,OAAQ3d,GAAO,CAACnG,EAAS8jB,EAAS3d,CAAE,CAAC,EACjD,EACF,CAEJ,CACF,CACF,EAEIgmB,IAA0B,OAAO,OAAO,CACxC,UAAW,KACX,UAAWiO,GACX,MAAOW,GACP,MAAOsH,GACP,MAAOlH,GACP,KAAMO,GACN,eAAgBkG,GAChB,SAAUlG,GACV,QAASe,GACT,WAAYU,GACZ,KAAME,GACN,YAAaoB,GACb,kBAAmBI,GACnB,eAAgBC,GAChB,KAAM2C,GACN,IAAKpT,GACL,QAASqV,GACT,OAAQG,GACR,OAAQzlB,GACR,OAAQkkB,GACR,MAAOhd,GACP,IAAKmH,IACL,cAAeoV,GACf,OAAQ2C,IACR,iBAAkB5C,GAClB,iBAAkBQ,GAClB,UAAWwC,IACX,aAAcW,IACd,YAAa3D,GACb,eAAgBY,GAChB,mBAAoBC,GACpB,WAAYiD,IACZ,OAAQzuB,IACR,UAAW+uB,IACX,aAAcG,IACd,WAAYrE,GACZ,aAAcK,GACd,iBAAkBA,GAClB,QAASF,GACT,OAAQqE,IACR,IAAK9F,EACL,SAAUuH,GACV,IAAKK,IACL,OAAQ3mB,IACR,MAAO8gB,GACP,MAAOvH,EACX,CAAC,EAED,OAAA/4B,GAAKkqB,IAAY,CAAChB,EAAWjlB,IAAS6kB,GAAI,UAAU7kB,EAAMilB,CAAS,CAAC,EACpEwO,GAAK5O,EAAG,EAER9oB,GAAKy3B,GAAc,CAACvO,EAAWjlB,IAAS6kB,GAAI,UAAU7kB,EAAMilB,CAAS,CAAC,EAE/DJ,EAEX,CAAE,IChjTF,IAAA6d,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EAAE,SAASC,EAAMC,EAAS,CACxB,IAAIC,EAAWD,EAAQD,CAAI,EAE3B,GAAI,OAAO,QAAW,YAAc,OAAO,IAEvC,OAAO,WAAY,UAAW,CAC1B,OAAOE,CACX,CAAC,UACM,OAAOJ,IAAY,UAAY,OAAO,WAAc,UAAY,UAAU,QAAQ,MAAM,cAAc,EAE7GC,GAAO,QAAUG,MACd,CAEH,IAAIC,EAAYH,EAAK,SACrBE,EAAS,WAAa,UAAW,CAC7B,OAAIF,EAAK,WAAaE,IAClBF,EAAK,SAAWG,GAEbD,CACX,EACAF,EAAK,SAAWE,CACpB,CACF,GAAEJ,GAAM,SAASE,EAAM,CACrB,IAAII,EAAa,CAAC,IAAK,IAAK,IAAK,GAAG,EAGpC,SAASC,EAASC,EAAMC,EAAW,CACjCD,EAAK,OAASC,EACdD,EAAK,UAAY,OAAO,OAAOC,EAAU,UAAW,CAClD,YAAa,CACX,MAAOD,EACP,WAAY,GACZ,SAAU,GACV,aAAc,EAChB,CACF,CAAC,CACH,CAEA,SAASE,EAAKC,EAAMC,EAAM,CACxB,OAAO,eAAe,KAAM,OAAQ,CAClC,MAAOD,EACP,WAAY,EACd,CAAC,EACGC,GAAQA,EAAK,QACf,OAAO,eAAe,KAAM,OAAQ,CAClC,MAAOA,EACP,WAAY,EACd,CAAC,CAEL,CAEA,SAASC,EAASD,EAAME,EAAQC,EAAO,CACrCF,EAAS,OAAO,KAAK,KAAM,IAAKD,CAAI,EACpC,OAAO,eAAe,KAAM,MAAO,CACjC,MAAOE,EACP,WAAY,EACd,CAAC,EACD,OAAO,eAAe,KAAM,MAAO,CACjC,MAAOC,EACP,WAAY,EACd,CAAC,CACH,CACAR,EAASM,EAAUH,CAAI,EAEvB,SAASM,EAAQJ,EAAMG,EAAO,CAC5BC,EAAQ,OAAO,KAAK,KAAM,IAAKJ,CAAI,EACnC,OAAO,eAAe,KAAM,MAAO,CACjC,MAAOG,EACP,WAAY,EACd,CAAC,CACH,CACAR,EAASS,EAASN,CAAI,EAEtB,SAASO,EAAYL,EAAMG,EAAO,CAChCE,EAAY,OAAO,KAAK,KAAM,IAAKL,CAAI,EACvC,OAAO,eAAe,KAAM,MAAO,CACjC,MAAOG,EACP,WAAY,EACd,CAAC,CACH,CACAR,EAASU,EAAaP,CAAI,EAE1B,SAASQ,EAAUN,EAAMO,EAAOC,EAAM,CACpCF,EAAU,OAAO,KAAK,KAAM,IAAKN,CAAI,EACrC,OAAO,eAAe,KAAM,QAAS,CACnC,MAAOO,EACP,WAAY,EACd,CAAC,EACD,OAAO,eAAe,KAAM,OAAQ,CAClC,MAAOC,EACP,WAAY,EACd,CAAC,CACH,CACAb,EAASW,EAAWR,CAAI,EAExB,SAASW,EAAYC,EAAKC,EAAMC,EAAI,CAClC,IAAIC,EAAOH,EAAI,OAAOE,GAAMD,GAAQ,GAAKD,EAAI,MAAM,EACnD,OAAAA,EAAI,OAASC,EAAO,EAAID,EAAI,OAASC,EAAOA,EAC5CD,EAAI,KAAK,MAAMA,EAAKG,CAAI,EACjBH,CACT,CAEA,SAASI,EAAWC,EAAS,CAC3B,IAAIC,EAAO,OAAOD,EAClB,OAAIC,IAAS,SACJA,EAGLD,IAAY,KACP,OACEA,IAAY,KACd,OACE,MAAM,QAAQA,CAAO,EACvB,QACE,OAAO,UAAU,SAAS,KAAKA,CAAO,IAAM,gBAC9C,OACE,OAAOA,EAAQ,UAAa,YAAc,UAAU,KAAKA,EAAQ,SAAS,CAAC,EAC7E,SAEF,QACT,CAGA,SAASE,EAAeC,EAAQ,CAC9B,IAAIC,EAAO,EACX,GAAID,EAAO,SAAW,EAAK,OAAOC,EAClC,QAASC,EAAI,EAAGA,EAAIF,EAAO,OAAQE,IAAK,CACtC,IAAIC,EAAOH,EAAO,WAAWE,CAAC,EAC9BD,GAASA,GAAQ,GAAKA,EAAQE,EAC9BF,EAAOA,EAAOA,CAChB,CACA,OAAOA,CACT,CAIA,SAASG,EAAwBC,EAAQ,CACvC,IAAIC,EAAQ,EACRR,EAAOF,EAAWS,CAAM,EAE5B,GAAIP,IAAS,QAAS,CACpBO,EAAO,QAAQ,SAAUf,EAAM,CAE7BgB,GAASF,EAAwBd,CAAI,CACvC,CAAC,EAED,IAAIiB,EAAc,uBAAyBD,EAAQ,IACnD,OAAOA,EAAQP,EAAeQ,CAAW,CAC3C,CAEA,GAAIT,IAAS,SAAU,CACrB,QAASU,KAAOH,EACd,GAAIA,EAAO,eAAeG,CAAG,EAAG,CAC9B,IAAIC,EAAiB,wBAA0BD,EAAM,iBAAmBJ,EAAwBC,EAAOG,CAAG,CAAC,EAAI,IAC/GF,GAASP,EAAeU,CAAc,CACxC,CAGF,OAAOH,CACT,CAGA,IAAII,EAAe,WAAaZ,EAAO,aAAeO,EAAS,IAC/D,OAAOC,EAAQP,EAAeW,CAAY,CAC5C,CAEA,SAASpC,EAASqC,EAAKC,EAAKC,EAASC,EAAWhC,EAAM0B,EAAKO,EAAOC,EAAkB,CAClFH,EAAUA,GAAW,CAAC,EACtB/B,EAAOA,GAAQ,CAAC,EAChBiC,EAAQA,GAAS,CAAC,EAClB,IAAIE,EAAcnC,EAAK,MAAM,CAAC,EAC9B,GAAI,OAAO0B,EAAQ,KAAeA,IAAQ,KAAM,CAC9C,GAAIM,EAAW,CACb,GAAI,OAAQA,GAAe,YAAcA,EAAUG,EAAaT,CAAG,EACjE,OACK,GAAI,OAAQM,GAAe,SAAU,CAC1C,GAAIA,EAAU,WAAaA,EAAU,UAAUG,EAAaT,CAAG,EAC7D,OAEF,GAAIM,EAAU,UAAW,CACvB,IAAII,EAAMJ,EAAU,UAAUG,EAAaT,EAAKG,EAAKC,CAAG,EACpDM,IACFP,EAAMO,EAAI,CAAC,EACXN,EAAMM,EAAI,CAAC,EAEf,CACF,CACF,CACAD,EAAY,KAAKT,CAAG,CACtB,CAGIZ,EAAWe,CAAG,IAAM,UAAYf,EAAWgB,CAAG,IAAM,WACtDD,EAAMA,EAAI,SAAS,EACnBC,EAAMA,EAAI,SAAS,GAGrB,IAAIO,EAAQ,OAAOR,EACfS,EAAQ,OAAOR,EACfV,GAAGmB,EAAGC,GAAGC,GAETC,GAAWL,IAAU,aACtBJ,GAAUA,EAAM,OAAS,GAAMA,EAAMA,EAAM,OAAS,CAAC,EAAE,KACtD,OAAO,yBAAyBA,EAAMA,EAAM,OAAS,CAAC,EAAE,IAAKP,CAAG,EAChEiB,GAAWL,IAAU,aACtBL,GAAUA,EAAM,OAAS,GAAMA,EAAMA,EAAM,OAAS,CAAC,EAAE,KACtD,OAAO,yBAAyBA,EAAMA,EAAM,OAAS,CAAC,EAAE,IAAKP,CAAG,EAEpE,GAAI,CAACgB,IAAYC,GACfZ,EAAQ,KAAK,IAAI3B,EAAQ+B,EAAaL,CAAG,CAAC,UACjC,CAACa,IAAYD,GACtBX,EAAQ,KAAK,IAAI1B,EAAY8B,EAAaN,CAAG,CAAC,UACrCf,EAAWe,CAAG,IAAMf,EAAWgB,CAAG,EAC3CC,EAAQ,KAAK,IAAI9B,EAASkC,EAAaN,EAAKC,CAAG,CAAC,UACvChB,EAAWe,CAAG,IAAM,QAAWA,EAAMC,IAAS,EACvDC,EAAQ,KAAK,IAAI9B,EAASkC,EAAaN,EAAKC,CAAG,CAAC,UACvCO,IAAU,UAAYR,IAAQ,MAAQC,IAAQ,KAAM,CAC7D,IAAKV,GAAIa,EAAM,OAAS,EAAGb,GAAI,GAAI,EAAEA,GACnC,GAAIa,EAAMb,EAAC,EAAE,MAAQS,EAAK,CACxBY,GAAQ,GACR,KACF,CAEF,GAAKA,GA6CMZ,IAAQC,GAEjBC,EAAQ,KAAK,IAAI9B,EAASkC,EAAaN,EAAKC,CAAG,CAAC,MA/CtC,CAEV,GADAG,EAAM,KAAK,CAAE,IAAKJ,EAAK,IAAKC,CAAI,CAAC,EAC7B,MAAM,QAAQD,CAAG,EAAG,CAatB,IAXIK,IACFL,EAAI,KAAK,SAAUe,GAAGC,GAAG,CACvB,OAAOvB,EAAwBsB,EAAC,EAAItB,EAAwBuB,EAAC,CAC/D,CAAC,EAEDf,EAAI,KAAK,SAAUc,GAAGC,GAAG,CACvB,OAAOvB,EAAwBsB,EAAC,EAAItB,EAAwBuB,EAAC,CAC/D,CAAC,GAEHzB,GAAIU,EAAI,OAAS,EACjBS,EAAIV,EAAI,OAAS,EACVT,GAAImB,GACTR,EAAQ,KAAK,IAAIzB,EAAU6B,EAAaf,GAAG,IAAIhB,EAAQ,OAAW0B,EAAIV,IAAG,CAAC,CAAC,CAAC,EAE9E,KAAOmB,EAAInB,IACTW,EAAQ,KAAK,IAAIzB,EAAU6B,EAAaI,EAAG,IAAIlC,EAAY,OAAWwB,EAAIU,GAAG,CAAC,CAAC,CAAC,EAElF,KAAOnB,IAAK,EAAG,EAAEA,GACf5B,EAASqC,EAAIT,EAAC,EAAGU,EAAIV,EAAC,EAAGW,EAASC,EAAWG,EAAaf,GAAGa,EAAOC,CAAgB,CAExF,KAAO,CACL,IAAIY,GAAQ,OAAO,KAAKjB,CAAG,EACvBkB,GAAQ,OAAO,KAAKjB,CAAG,EAC3B,IAAKV,GAAI,EAAGA,GAAI0B,GAAM,OAAQ,EAAE1B,GAC9BoB,GAAIM,GAAM1B,EAAC,EACXqB,GAAQM,GAAM,QAAQP,EAAC,EACnBC,IAAS,GACXjD,EAASqC,EAAIW,EAAC,EAAGV,EAAIU,EAAC,EAAGT,EAASC,EAAWG,EAAaK,GAAGP,EAAOC,CAAgB,EACpFa,GAAMN,EAAK,EAAI,MAEfjD,EAASqC,EAAIW,EAAC,EAAG,OAAWT,EAASC,EAAWG,EAAaK,GAAGP,EAAOC,CAAgB,EAG3F,IAAKd,GAAI,EAAGA,GAAI2B,GAAM,OAAQ,EAAE3B,GAC9BoB,GAAIO,GAAM3B,EAAC,EACPoB,IACFhD,EAAS,OAAWsC,EAAIU,EAAC,EAAGT,EAASC,EAAWG,EAAaK,GAAGP,EAAOC,CAAgB,CAG7F,CACAD,EAAM,OAASA,EAAM,OAAS,CAChC,CAIF,MAAWJ,IAAQC,IACXO,IAAU,UAAY,MAAMR,CAAG,GAAK,MAAMC,CAAG,GACjDC,EAAQ,KAAK,IAAI9B,EAASkC,EAAaN,EAAKC,CAAG,CAAC,EAGtD,CAEA,SAASkB,EAAenB,EAAKC,EAAKmB,EAAUjB,EAAWE,EAAkB,CACvE,IAAIH,EAAU,CAAC,EAEf,GADAvC,EAASqC,EAAKC,EAAKC,EAASC,EAAW,KAAM,KAAM,KAAME,CAAgB,EACrEe,EACF,QAAS7B,EAAI,EAAGA,EAAIW,EAAQ,OAAQ,EAAEX,EACpC6B,EAASlB,EAAQX,CAAC,CAAC,EAGvB,OAAOW,CACT,CAEA,SAASmB,EAAyBrB,EAAKC,EAAKC,EAASC,EAAWhC,EAAM0B,EAAKO,EAAO,CAChF,OAAOzC,EAASqC,EAAKC,EAAKC,EAASC,EAAWhC,EAAM0B,EAAKO,EAAO,EAAI,CACtE,CAEA,SAASkB,EAAetB,EAAKC,EAAKE,EAAWR,EAAO,CAClD,IAAIyB,EAAYzB,EACd,SAAU4B,EAAY,CAChBA,GACF5B,EAAM,KAAK4B,CAAU,CAEzB,EAAI,OACFrB,EAAUiB,EAAenB,EAAKC,EAAKmB,EAAUjB,CAAS,EAC1D,OAAQR,IAAkBO,EAAQ,OAAUA,EAAU,OACxD,CAEA,SAASsB,EAA+BxB,EAAKC,EAAKE,EAAWR,EAAO,CAClE,IAAIyB,EAAYzB,EACd,SAAU4B,EAAY,CAChBA,GACF5B,EAAM,KAAK4B,CAAU,CAEzB,EAAI,OACFrB,EAAUiB,EAAenB,EAAKC,EAAKmB,EAAUjB,EAAW,EAAI,EAChE,OAAQR,IAAkBO,EAAQ,OAAUA,EAAU,OACxD,CAEA,SAASuB,EAAiB5C,EAAKH,EAAOgD,EAAQ,CAC5C,GAAIA,EAAO,MAAQA,EAAO,KAAK,OAAQ,CACrC,IAAIC,EAAK9C,EAAIH,CAAK,EAChBa,EAAGqC,EAAIF,EAAO,KAAK,OAAS,EAC9B,IAAKnC,EAAI,EAAGA,EAAIqC,EAAGrC,IACjBoC,EAAKA,EAAGD,EAAO,KAAKnC,CAAC,CAAC,EAExB,OAAQmC,EAAO,KAAM,CACnB,IAAK,IACHD,EAAiBE,EAAGD,EAAO,KAAKnC,CAAC,CAAC,EAAGmC,EAAO,MAAOA,EAAO,IAAI,EAC9D,MACF,IAAK,IACH,OAAOC,EAAGD,EAAO,KAAKnC,CAAC,CAAC,EACxB,MACF,IAAK,IACL,IAAK,IACHoC,EAAGD,EAAO,KAAKnC,CAAC,CAAC,EAAImC,EAAO,IAC5B,KACJ,CACF,KACE,QAAQA,EAAO,KAAM,CACnB,IAAK,IACHD,EAAiB5C,EAAIH,CAAK,EAAGgD,EAAO,MAAOA,EAAO,IAAI,EACtD,MACF,IAAK,IACH7C,EAAMD,EAAYC,EAAKH,CAAK,EAC5B,MACF,IAAK,IACL,IAAK,IACHG,EAAIH,CAAK,EAAIgD,EAAO,IACpB,KACJ,CAEF,OAAO7C,CACT,CAEA,SAASgD,EAAYC,EAAQC,EAAQL,EAAQ,CAI3C,GAHI,OAAOA,EAAW,KAAeK,GAAU,CAAClE,EAAW,QAAQkE,EAAO,IAAI,IAC5EL,EAASK,GAEPD,GAAUJ,GAAUA,EAAO,KAAM,CAInC,QAHIC,EAAKG,EACPvC,EAAI,GACJyC,EAAON,EAAO,KAAOA,EAAO,KAAK,OAAS,EAAI,EACzC,EAAEnC,EAAIyC,GACP,OAAOL,EAAGD,EAAO,KAAKnC,CAAC,CAAC,EAAM,MAChCoC,EAAGD,EAAO,KAAKnC,CAAC,CAAC,EAAK,OAAOmC,EAAO,KAAKnC,EAAI,CAAC,EAAM,KAAe,OAAOmC,EAAO,KAAKnC,EAAI,CAAC,GAAM,SAAY,CAAC,EAAI,CAAC,GAErHoC,EAAKA,EAAGD,EAAO,KAAKnC,CAAC,CAAC,EAExB,OAAQmC,EAAO,KAAM,CACnB,IAAK,IACCA,EAAO,MAAQ,OAAOC,EAAGD,EAAO,KAAKnC,CAAC,CAAC,EAAM,MAC/CoC,EAAGD,EAAO,KAAKnC,CAAC,CAAC,EAAI,CAAC,GAExBkC,EAAiBC,EAAO,KAAOC,EAAGD,EAAO,KAAKnC,CAAC,CAAC,EAAIoC,EAAID,EAAO,MAAOA,EAAO,IAAI,EACjF,MACF,IAAK,IACH,OAAOC,EAAGD,EAAO,KAAKnC,CAAC,CAAC,EACxB,MACF,IAAK,IACL,IAAK,IACHoC,EAAGD,EAAO,KAAKnC,CAAC,CAAC,EAAImC,EAAO,IAC5B,KACJ,CACF,CACF,CAEA,SAASO,EAAkBpD,EAAKH,EAAOgD,EAAQ,CAC7C,GAAIA,EAAO,MAAQA,EAAO,KAAK,OAAQ,CAErC,IAAIC,EAAK9C,EAAIH,CAAK,EAChBa,EAAGqC,EAAIF,EAAO,KAAK,OAAS,EAC9B,IAAKnC,EAAI,EAAGA,EAAIqC,EAAGrC,IACjBoC,EAAKA,EAAGD,EAAO,KAAKnC,CAAC,CAAC,EAExB,OAAQmC,EAAO,KAAM,CACnB,IAAK,IACHO,EAAkBN,EAAGD,EAAO,KAAKnC,CAAC,CAAC,EAAGmC,EAAO,MAAOA,EAAO,IAAI,EAC/D,MACF,IAAK,IACHC,EAAGD,EAAO,KAAKnC,CAAC,CAAC,EAAImC,EAAO,IAC5B,MACF,IAAK,IACHC,EAAGD,EAAO,KAAKnC,CAAC,CAAC,EAAImC,EAAO,IAC5B,MACF,IAAK,IACH,OAAOC,EAAGD,EAAO,KAAKnC,CAAC,CAAC,EACxB,KACJ,CACF,KAEE,QAAQmC,EAAO,KAAM,CACnB,IAAK,IACHO,EAAkBpD,EAAIH,CAAK,EAAGgD,EAAO,MAAOA,EAAO,IAAI,EACvD,MACF,IAAK,IACH7C,EAAIH,CAAK,EAAIgD,EAAO,IACpB,MACF,IAAK,IACH7C,EAAIH,CAAK,EAAIgD,EAAO,IACpB,MACF,IAAK,IACH7C,EAAMD,EAAYC,EAAKH,CAAK,EAC5B,KACJ,CAEF,OAAOG,CACT,CAEA,SAASqD,EAAaJ,EAAQC,EAAQL,EAAQ,CAC5C,GAAII,GAAUC,GAAUL,GAAUA,EAAO,KAAM,CAC7C,IAAIC,EAAKG,EACPvC,EAAGqC,EAEL,IADAA,EAAIF,EAAO,KAAK,OAAS,EACpBnC,EAAI,EAAGA,EAAIqC,EAAGrC,IACb,OAAOoC,EAAGD,EAAO,KAAKnC,CAAC,CAAC,EAAM,MAChCoC,EAAGD,EAAO,KAAKnC,CAAC,CAAC,EAAI,CAAC,GAExBoC,EAAKA,EAAGD,EAAO,KAAKnC,CAAC,CAAC,EAExB,OAAQmC,EAAO,KAAM,CACnB,IAAK,IAGHO,EAAkBN,EAAGD,EAAO,KAAKnC,CAAC,CAAC,EAAGmC,EAAO,MAAOA,EAAO,IAAI,EAC/D,MACF,IAAK,IAEHC,EAAGD,EAAO,KAAKnC,CAAC,CAAC,EAAImC,EAAO,IAC5B,MACF,IAAK,IAEHC,EAAGD,EAAO,KAAKnC,CAAC,CAAC,EAAImC,EAAO,IAC5B,MACF,IAAK,IAEH,OAAOC,EAAGD,EAAO,KAAKnC,CAAC,CAAC,EACxB,KACJ,CACF,CACF,CAEA,SAAS4C,EAAUL,EAAQC,EAAQK,EAAQ,CACzC,GAAIN,GAAUC,EAAQ,CACpB,IAAIM,EAAW,SAAUX,EAAQ,EAC3B,CAACU,GAAUA,EAAON,EAAQC,EAAQL,CAAM,IAC1CG,EAAYC,EAAQC,EAAQL,CAAM,CAEtC,EACAP,EAAeW,EAAQC,EAAQM,CAAQ,CACzC,CACF,CAEA,cAAO,iBAAiBf,EAAgB,CAEtC,KAAM,CACJ,MAAOA,EACP,WAAY,EACd,EACA,qBAAsB,CACpB,MAAOE,EACP,WAAY,EACd,EACA,eAAgB,CACd,MAAOL,EACP,WAAY,EACd,EACA,+BAAgC,CAC9B,MAAOE,EACP,WAAY,EACd,EACA,eAAgB,CACd,MAAO5B,EACP,WAAY,EACd,EACA,UAAW,CACT,MAAO0C,EACP,WAAY,EACd,EACA,YAAa,CACX,MAAON,EACP,WAAY,EACd,EACA,aAAc,CACZ,MAAOK,EACP,WAAY,EACd,EACA,WAAY,CACV,MAAO,UAAY,CACjB,OAAO,OAAO,UAAc,GAC9B,EACA,WAAY,EACd,CACF,CAAC,EAGDZ,EAAe,SAAWA,EAOtB7D,IACFA,EAAK,SAAW6D,GAGXA,CACT,CAAC,oOC7gBD,SAASgB,GAAK,CACZ,MAAO,EACT,CACA,SAASC,GAAQ,CACf,MAAO,EACT,CACA,SAASC,GAAQ,CAEjB,CACA,IAAMC,EAAqB,oCA0C3B,SAASC,GAAS,CAMhB,SAASC,EAAcC,GAAG,CACxB,OAAO,OAAOA,IAAM,UAAYA,KAAM,MAAQA,GAAE,cAAgB,MACpE,CACE,IAAMC,EAAS,CAAC,CACd,KAAM,SACN,KAAM,SAAUD,GAAG,CACjB,OAAO,OAAOA,IAAM,QAC1B,CACA,EAAK,CACD,KAAM,SACN,KAAM,SAAUA,GAAG,CACjB,OAAO,OAAOA,IAAM,QAC1B,CACA,EAAK,CACD,KAAM,UACN,KAAM,SAAUA,GAAG,CACjB,OAAO,OAAOA,IAAM,SAC1B,CACA,EAAK,CACD,KAAM,WACN,KAAM,SAAUA,GAAG,CACjB,OAAO,OAAOA,IAAM,UAC1B,CACA,EAAK,CACD,KAAM,QACN,KAAM,MAAM,OAChB,EAAK,CACD,KAAM,OACN,KAAM,SAAUA,GAAG,CACjB,OAAOA,cAAa,IAC1B,CACA,EAAK,CACD,KAAM,SACN,KAAM,SAAUA,GAAG,CACjB,OAAOA,cAAa,MAC1B,CACA,EAAK,CACD,KAAM,SACN,KAAMD,CACV,EAAK,CACD,KAAM,OACN,KAAM,SAAUC,GAAG,CACjB,OAAOA,KAAM,IACnB,CACA,EAAK,CACD,KAAM,YACN,KAAM,SAAUA,GAAG,CACjB,OAAOA,KAAM,MACnB,CACA,CAAG,EACKE,EAAU,CACd,KAAM,MACN,KAAMR,EACN,MAAO,EACX,EAOMS,EACAC,EAGAC,EAAe,EAIfC,EAAQ,CACV,YAAa,CACjB,EASE,SAASC,EAASC,GAAU,CAC1B,IAAMC,GAAON,EAAQ,IAAIK,EAAQ,EACjC,GAAIC,GACF,OAAOA,GAGT,IAAIC,GAAU,iBAAmBF,GAAW,IACtCG,GAAOH,GAAS,YAAW,EAC7BI,GACJ,IAAKA,MAAaR,EAChB,GAAIQ,GAAU,YAAW,IAAOD,GAAM,CACpCD,IAAW,mBAAqBE,GAAY,MAC5C,KACR,CAEI,MAAM,IAAI,UAAUF,EAAO,CAC/B,CAeE,SAASG,EAASC,GAAO,CACvB,IAAIC,GAAa,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,MAC/EC,GAAcD,GAAaR,EAASQ,EAAU,EAAE,MAAQX,EAAS,OACjEa,GAAW,CAAA,EACjB,QAASC,GAAI,EAAGA,GAAIJ,GAAM,OAAQ,EAAEI,GAAG,CACrC,GAAI,CAACJ,GAAMI,EAAC,GAAK,OAAOJ,GAAMI,EAAC,EAAE,MAAS,UAAY,OAAOJ,GAAMI,EAAC,EAAE,MAAS,WAC7E,MAAM,IAAI,UAAU,gEAAgE,EAEtF,IAAMV,GAAWM,GAAMI,EAAC,EAAE,KAC1B,GAAIf,EAAQ,IAAIK,EAAQ,EACtB,MAAM,IAAI,UAAU,wBAA0BA,GAAW,GAAG,EAE9DS,GAAS,KAAKT,EAAQ,EACtBL,EAAQ,IAAIK,GAAU,CACpB,KAAMA,GACN,KAAMM,GAAMI,EAAC,EAAE,KACf,MAAOJ,GAAMI,EAAC,EAAE,MAChB,MAAOF,GAAcE,GACrB,cAAe,CAAA,CACvB,CAAO,CACP,CAEI,IAAMC,GAAgBf,EAAS,MAAMY,EAAW,EAChDZ,EAAWA,EAAS,MAAM,EAAGY,EAAW,EAAE,OAAOC,EAAQ,EAAE,OAAOE,EAAa,EAE/E,QAASD,GAAIF,GAAcC,GAAS,OAAQC,GAAId,EAAS,OAAQ,EAAEc,GACjEf,EAAQ,IAAIC,EAASc,EAAC,CAAC,EAAE,MAAQA,EAEvC,CAQE,SAASE,GAAQ,CACfjB,EAAU,IAAI,IACdC,EAAW,CAAA,EACXC,EAAe,EACfQ,EAAS,CAACX,CAAO,EAAG,EAAK,CAC7B,CAGEkB,EAAK,EACLP,EAASZ,CAAM,EAKf,SAASoB,GAAmB,CAC1B,IAAIb,GACJ,IAAKA,MAAYJ,EACfD,EAAQ,IAAIK,EAAQ,EAAE,cAAgB,CAAA,EAExCH,EAAe,CACnB,CAQE,SAASiB,EAAcC,GAAO,CAC5B,IAAMC,GAAUpB,EAAS,OAAOO,IAAQ,CACtC,IAAMF,GAAON,EAAQ,IAAIQ,EAAI,EAC7B,MAAO,CAACF,GAAK,OAASA,GAAK,KAAKc,EAAK,CAC3C,CAAK,EACD,OAAIC,GAAQ,OACHA,GAEF,CAAC,KAAK,CACjB,CAOE,SAASC,EAAgBC,GAAQ,CAC/B,OAAOA,IAAU,OAAOA,IAAW,YAAc,uBAAwBA,EAC7E,CAoCE,SAASC,EAAcC,GAAIC,GAAWC,GAAS,CAC7C,GAAI,CAACL,EAAgBG,EAAE,EACrB,MAAM,IAAI,UAAU/B,CAAkB,EAIxC,IAAMkC,GAAQD,IAAWA,GAAQ,MAC3BE,GAAkB,MAAM,QAAQH,EAAS,EAAIA,GAAU,KAAK,GAAG,EAAIA,GACnEI,GAASC,EAAeF,EAAe,EACvCG,GAAqBC,EAAgBH,EAAM,EAGjD,GAAI,CAACF,IAASI,MAAsBP,GAAG,WAAY,CAEjD,IAAMS,GAAQT,GAAG,mBAAmB,aAAa,IAAIO,EAAkB,EACvE,GAAIE,GACF,OAAOA,EAEf,CAMI,IAAMC,GAAUL,GAAO,OACnBM,EACJ,GAAIR,GAAO,CACTQ,EAAsB,CAAA,EACtB,IAAI5B,GACJ,IAAKA,MAAQiB,GAAG,WACdW,EAAoB,KAAKX,GAAG,mBAAmB,aAAa,IAAIjB,EAAI,CAAC,CAE7E,MACM4B,EAAsBX,GAAG,mBAAmB,WAE9C,QAASV,GAAI,EAAGA,GAAIoB,GAAS,EAAEpB,GAAG,CAChC,IAAMsB,GAAOP,GAAOf,EAAC,EACfuB,GAAqB,CAAA,EACvBC,GACJ,IAAKA,MAAeH,EAAqB,CACvC,IAAMI,GAAOC,EAAgBF,GAAY,OAAQxB,EAAC,EAClD,GAAI,GAACyB,IAAQH,GAAK,WAAa,CAACG,GAAK,WAGrC,IAAI,CAACA,GAAK,OAAQ,CAEhB,IAAME,GAAYC,EAAaH,EAAI,EACnC,GAAIH,GAAK,MAAM,KAAKO,IAAS,CAACF,GAAU,IAAIE,GAAM,IAAI,CAAC,EACrD,QAEZ,CAEQN,GAAmB,KAAKC,EAAW,EAC3C,CAEM,GADAH,EAAsBE,GAClBF,EAAoB,SAAW,EAAG,KAC5C,CAEI,IAAIS,GACJ,IAAKA,MAAaT,EAChB,GAAIS,GAAU,OAAO,QAAUV,GAC7B,OAAOU,GAGX,MAAM,IAAI,UAAU,oCAAsCpB,GAAG,MAAQ,WAAa,IAAMQ,EAAgBH,GAAQ,IAAI,EAAI,IAAI,CAChI,CA4BE,SAASgB,EAAKrB,GAAIC,GAAWC,GAAS,CACpC,OAAOH,EAAcC,GAAIC,GAAWC,EAAO,EAAE,cACjD,CAQE,SAASoB,EAAQ3B,GAAOf,GAAU,CAEhC,IAAMC,GAAOF,EAASC,EAAQ,EAC9B,GAAIC,GAAK,KAAKc,EAAK,EACjB,OAAOA,GAET,IAAM4B,GAAc1C,GAAK,cACzB,GAAI0C,GAAY,SAAW,EACzB,MAAM,IAAI,MAAM,+BAAiC3C,GAAW,WAAW,EAEzE,QAASU,GAAI,EAAGA,GAAIiC,GAAY,OAAQjC,KAEtC,GADiBX,EAAS4C,GAAYjC,EAAC,EAAE,IAAI,EAChC,KAAKK,EAAK,EACrB,OAAO4B,GAAYjC,EAAC,EAAE,QAAQK,EAAK,EAGvC,MAAM,IAAI,MAAM,kBAAoBA,GAAQ,OAASf,EAAQ,CACjE,CAQE,SAAS4B,EAAgBH,GAAQ,CAC/B,IAAImB,GAAY,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,IACpF,OAAOnB,GAAO,IAAIoB,IAAKA,GAAE,IAAI,EAAE,KAAKD,EAAS,CACjD,CAOE,SAASE,EAAWC,GAAO,CACzB,IAAMC,GAAYD,GAAM,QAAQ,KAAK,IAAM,EAErCE,IADSD,GAAoBD,GAAM,OAAS,EAAIA,GAAM,MAAM,CAAC,EAAI,MAA5CA,IACJ,MAAM,GAAG,EAAE,IAAIG,IAAKnD,EAASmD,GAAE,KAAI,CAAE,CAAC,EACzDC,GAAS,GACTC,GAAYJ,GAAY,MAAQ,GAapC,MAAO,CACL,MAbiBC,GAAS,IAAI,SAAUhD,GAAM,CAC9C,OAAAkD,GAASlD,GAAK,OAASkD,GACvBC,IAAanD,GAAK,KAAO,IAClB,CACL,KAAMA,GAAK,KACX,UAAWA,GAAK,MAChB,KAAMA,GAAK,KACX,MAAOA,GAAK,MACZ,WAAY,KACZ,gBAAiB,EACzB,CACA,CAAK,EAGC,KAAMmD,GAAU,MAAM,EAAG,EAAE,EAE3B,OAAAD,GACA,cAAe,GACf,UAAAH,EACN,CACA,CAQE,SAASK,EAAYN,GAAO,CAC1B,IAAMO,GAAYP,GAAM,MAAM,IAAIQ,IAAKA,GAAE,IAAI,EACvCC,GAAsBC,GAAqBH,EAAS,EACtDH,GAASJ,GAAM,OACfW,GAAUX,GAAM,KACdY,GAAmBH,GAAoB,IAAI,SAAUI,GAAY,CACrE,IAAM3D,GAAOF,EAAS6D,GAAW,IAAI,EACrC,OAAAT,GAASlD,GAAK,OAASkD,GACvBO,IAAW,IAAME,GAAW,KACrB,CACL,KAAMA,GAAW,KACjB,UAAW3D,GAAK,MAChB,KAAMA,GAAK,KACX,MAAOA,GAAK,MACZ,WAAA2D,GACA,gBAAiBA,GAAW,KACpC,CACA,CAAK,EACD,MAAO,CACL,MAAOb,GAAM,MAAM,OAAOY,EAAgB,EAC1C,KAAMD,GACN,OAAAP,GACA,cAAeQ,GAAiB,OAAS,EACzC,UAAWZ,GAAM,SACvB,CACA,CASE,SAAST,EAAaS,GAAO,CAC3B,OAAKA,GAAM,UACTA,GAAM,QAAU,IAAI,IACpBA,GAAM,MAAM,QAAQ9C,IAAQ8C,GAAM,QAAQ,IAAI9C,GAAK,IAAI,CAAC,GAEnD8C,GAAM,OACjB,CASE,SAASrB,EAAemC,GAAc,CACpC,IAAMpC,GAAS,CAAA,EACf,GAAI,OAAOoC,IAAiB,SAC1B,MAAM,IAAI,UAAU,4BAA4B,EAElD,IAAMxC,GAAYwC,GAAa,KAAI,EACnC,GAAIxC,KAAc,GAChB,OAAOI,GAET,IAAMqC,GAAYzC,GAAU,MAAM,GAAG,EACrC,QAASX,GAAI,EAAGA,GAAIoD,GAAU,OAAQ,EAAEpD,GAAG,CACzC,IAAMqD,GAAcjB,EAAWgB,GAAUpD,EAAC,EAAE,KAAI,CAAE,EAClD,GAAIqD,GAAY,WAAarD,KAAMoD,GAAU,OAAS,EACpD,MAAM,IAAI,YAAY,8BAAgCA,GAAUpD,EAAC,EAAI,wCAA6C,EAGpH,GAAIqD,GAAY,MAAM,SAAW,EAC/B,OAAO,KAETtC,GAAO,KAAKsC,EAAW,CAC7B,CACI,OAAOtC,EACX,CAOE,SAASuC,EAAavC,GAAQ,CAC5B,IAAMsB,GAAQkB,GAAKxC,EAAM,EACzB,OAAOsB,GAAQA,GAAM,UAAY,EACrC,CAQE,SAASmB,EAAYnB,GAAO,CAC1B,GAAI,CAACA,IAASA,GAAM,MAAM,SAAW,EAEnC,OAAO7D,EACF,GAAI6D,GAAM,MAAM,SAAW,EAChC,OAAOhD,EAASgD,GAAM,MAAM,CAAC,EAAE,IAAI,EAAE,KAChC,GAAIA,GAAM,MAAM,SAAW,EAAG,CACnC,IAAMoB,GAAQpE,EAASgD,GAAM,MAAM,CAAC,EAAE,IAAI,EAAE,KACtCqB,GAAQrE,EAASgD,GAAM,MAAM,CAAC,EAAE,IAAI,EAAE,KAC5C,OAAO,SAAYvD,GAAG,CACpB,OAAO2E,GAAM3E,EAAC,GAAK4E,GAAM5E,EAAC,CAClC,CACA,KAAW,CAEL,IAAM6E,GAAQtB,GAAM,MAAM,IAAI,SAAU9C,GAAM,CAC5C,OAAOF,EAASE,GAAK,IAAI,EAAE,IACnC,CAAO,EACD,OAAO,SAAYT,GAAG,CACpB,QAASkB,GAAI,EAAGA,GAAI2D,GAAM,OAAQ3D,KAChC,GAAI2D,GAAM3D,EAAC,EAAElB,EAAC,EACZ,MAAO,GAGX,MAAO,EACf,CACA,CACA,CAOE,SAAS8E,EAAa7C,GAAQ,CAC5B,IAAI4C,GAAOF,GAAOC,GAClB,GAAIJ,EAAavC,EAAM,EAAG,CAExB4C,GAAQE,GAAQ9C,EAAM,EAAE,IAAIyC,CAAW,EACvC,IAAMM,GAAWH,GAAM,OACjBI,GAAWP,EAAYD,GAAKxC,EAAM,CAAC,EACnCiD,GAAgB,SAAUC,GAAM,CACpC,QAASjE,EAAI8D,GAAU9D,EAAIiE,GAAK,OAAQjE,IACtC,GAAI,CAAC+D,GAASE,GAAKjE,CAAC,CAAC,EACnB,MAAO,GAGX,MAAO,EACf,EACM,OAAO,SAAkBiE,EAAM,CAC7B,QAASjE,GAAI,EAAGA,GAAI2D,GAAM,OAAQ3D,KAChC,GAAI,CAAC2D,GAAM3D,EAAC,EAAEiE,EAAKjE,EAAC,CAAC,EACnB,MAAO,GAGX,OAAOgE,GAAcC,CAAI,GAAKA,EAAK,QAAUH,GAAW,CAChE,CACA,KAEM,QAAI/C,GAAO,SAAW,EACb,SAAkBkD,GAAM,CAC7B,OAAOA,GAAK,SAAW,CACjC,EACiBlD,GAAO,SAAW,GAC3B0C,GAAQD,EAAYzC,GAAO,CAAC,CAAC,EACtB,SAAkBkD,GAAM,CAC7B,OAAOR,GAAMQ,GAAK,CAAC,CAAC,GAAKA,GAAK,SAAW,CACnD,GACiBlD,GAAO,SAAW,GAC3B0C,GAAQD,EAAYzC,GAAO,CAAC,CAAC,EAC7B2C,GAAQF,EAAYzC,GAAO,CAAC,CAAC,EACtB,SAAkBkD,GAAM,CAC7B,OAAOR,GAAMQ,GAAK,CAAC,CAAC,GAAKP,GAAMO,GAAK,CAAC,CAAC,GAAKA,GAAK,SAAW,CACrE,IAGQN,GAAQ5C,GAAO,IAAIyC,CAAW,EACvB,SAAkBS,GAAM,CAC7B,QAASjE,GAAI,EAAGA,GAAI2D,GAAM,OAAQ3D,KAChC,GAAI,CAAC2D,GAAM3D,EAAC,EAAEiE,GAAKjE,EAAC,CAAC,EACnB,MAAO,GAGX,OAAOiE,GAAK,SAAWN,GAAM,MACvC,EAGA,CAUE,SAASjC,EAAgBX,GAAQmD,GAAO,CACtC,OAAOA,GAAQnD,GAAO,OAASA,GAAOmD,EAAK,EAAIZ,EAAavC,EAAM,EAAIwC,GAAKxC,EAAM,EAAI,IACzF,CAQE,SAASoD,EAAkBpD,GAAQmD,GAAO,CACxC,IAAM7B,GAAQX,EAAgBX,GAAQmD,EAAK,EAC3C,OAAK7B,GAGET,EAAaS,EAAK,EAFhB,IAAI,GAGjB,CAOE,SAAS+B,EAAY7E,GAAM,CACzB,OAAOA,GAAK,aAAe,MAAQA,GAAK,aAAe,MAC3D,CASE,SAAS8E,EAAoBC,GAAYJ,GAAO,CAC9C,IAAMK,GAAU,IAAI,IACpB,OAAAD,GAAW,QAAQ3D,IAAa,CAC9B,IAAM6D,GAAWL,EAAkBxD,GAAU,OAAQuD,EAAK,EACtDzE,GACJ,IAAKA,MAAQ+E,GACXD,GAAQ,IAAI9E,EAAI,CAExB,CAAK,EACM8E,GAAQ,IAAI,KAAK,EAAI,CAAC,KAAK,EAAI,MAAM,KAAKA,EAAO,CAC5D,CAUE,SAASE,GAAYhF,GAAMwE,GAAMK,GAAY,CAC3C,IAAII,GAAKC,GACHC,GAAQnF,IAAQ,UAGlBoF,GAAqBP,GACrBJ,GACJ,IAAKA,GAAQ,EAAGA,GAAQD,GAAK,OAAQC,KAAS,CAC5C,IAAMY,GAAmB,CAAA,EAQzB,GAPAD,GAAmB,QAAQlE,IAAa,CACtC,IAAM0B,GAAQX,EAAgBf,GAAU,OAAQuD,EAAK,EAC/Ca,GAAOvB,EAAYnB,EAAK,GACzB6B,GAAQvD,GAAU,OAAO,QAAU2C,EAAa3C,GAAU,MAAM,IAAMoE,GAAKd,GAAKC,EAAK,CAAC,GACzFY,GAAiB,KAAKnE,EAAS,CAEzC,CAAO,EACGmE,GAAiB,SAAW,GAG9B,GADAH,GAAWN,EAAoBQ,GAAoBX,EAAK,EACpDS,GAAS,OAAS,EAAG,CACvB,IAAMK,GAAc5E,EAAc6D,GAAKC,EAAK,CAAC,EAC7C,OAAAQ,GAAM,IAAI,UAAU,2CAA6CE,GAAQ,eAAiBD,GAAS,KAAK,MAAM,EAAI,aAAeK,GAAY,KAAK,KAAK,EAAI,YAAcd,GAAQ,GAAG,EACpLQ,GAAI,KAAO,CACT,SAAU,YACV,GAAIE,GACJ,MAAAV,GACA,OAAQc,GACR,SAAAL,EACZ,EACiBD,EACjB,OAEQG,GAAqBC,EAE7B,CAGI,IAAMG,EAAUJ,GAAmB,IAAI,SAAUlE,GAAW,CAC1D,OAAO2C,EAAa3C,GAAU,MAAM,EAAI,IAAWA,GAAU,OAAO,MAC1E,CAAK,EACD,GAAIsD,GAAK,OAAS,KAAK,IAAI,MAAM,KAAMgB,CAAO,EAC5C,OAAAN,GAAWN,EAAoBQ,GAAoBX,EAAK,EACxDQ,GAAM,IAAI,UAAU,iCAAmCE,GAAQ,eAAiBD,GAAS,KAAK,MAAM,EAAI,YAAcV,GAAK,OAAS,GAAG,EACvIS,GAAI,KAAO,CACT,SAAU,aACV,GAAIE,GACJ,MAAOX,GAAK,OACZ,SAAAU,EACR,EACaD,GAIT,IAAMQ,GAAY,KAAK,IAAI,MAAM,KAAMD,CAAO,EAC9C,GAAIhB,GAAK,OAASiB,GAChB,OAAAR,GAAM,IAAI,UAAU,kCAAoCE,GAAQ,eAAiBM,GAAY,aAAejB,GAAK,OAAS,GAAG,EAC7HS,GAAI,KAAO,CACT,SAAU,cACV,GAAIE,GACJ,MAAOX,GAAK,OACZ,eAAgBiB,EACxB,EACaR,GAIT,IAAMS,GAAW,CAAA,EACjB,QAASnF,GAAI,EAAGA,GAAIiE,GAAK,OAAQ,EAAEjE,GACjCmF,GAAS,KAAK/E,EAAc6D,GAAKjE,EAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAEhD,OAAA0E,GAAM,IAAI,UAAU,sBAAwBS,GAAS,KAAK,IAAI,EAAI,4DAA8DP,GAAQ,GAAG,EAC3IF,GAAI,KAAO,CACT,SAAU,WACV,OAAQS,EACd,EACWT,EACX,CAOE,SAASU,EAAmB/C,GAAO,CACjC,IAAIgD,GAAMnG,EAAS,OAAS,EAC5B,QAASc,GAAI,EAAGA,GAAIqC,GAAM,MAAM,OAAQrC,KAClCoE,EAAY/B,GAAM,MAAMrC,EAAC,CAAC,IAC5BqF,GAAM,KAAK,IAAIA,GAAKhD,GAAM,MAAMrC,EAAC,EAAE,SAAS,GAGhD,OAAOqF,EACX,CAQE,SAASC,GAAyBjD,GAAO,CACvC,IAAIgD,GAAMlG,EAAe,EACzB,QAASa,GAAI,EAAGA,GAAIqC,GAAM,MAAM,OAAQrC,KACjCoE,EAAY/B,GAAM,MAAMrC,EAAC,CAAC,IAC7BqF,GAAM,KAAK,IAAIA,GAAKhD,GAAM,MAAMrC,EAAC,EAAE,eAAe,GAGtD,OAAOqF,EACX,CAUE,SAASE,GAAcC,GAAQC,GAAQ,CAGrC,GAAID,GAAO,QACT,GAAI,CAACC,GAAO,OACV,MAAO,WAEAA,GAAO,OAChB,MAAO,GAIT,GAAID,GAAO,WACT,GAAI,CAACC,GAAO,UACV,MAAO,WAEAA,GAAO,UAChB,MAAO,GAIT,GAAID,GAAO,eACT,GAAI,CAACC,GAAO,cACV,MAAO,WAEAA,GAAO,cAChB,MAAO,GAIT,IAAMC,GAAWN,EAAmBI,EAAM,EAAIJ,EAAmBK,EAAM,EACvE,GAAIC,GAAW,EACb,MAAO,GAET,GAAIA,GAAW,EACb,MAAO,GAIT,IAAMC,GAAWL,GAAyBE,EAAM,EAAIF,GAAyBG,EAAM,EACnF,OAAIE,GAAW,EACN,GAELA,GAAW,EACN,EAIF,CACX,CAUE,SAASC,GAAkBC,GAAYC,GAAY,CACjD,IAAMC,GAAQF,GAAW,OACnBG,GAAQF,GAAW,OACnBG,GAAQ1C,GAAKwC,EAAK,EAClBG,GAAQ3C,GAAKyC,EAAK,EAClBG,GAAW7C,EAAayC,EAAK,EAC7BK,GAAW9C,EAAa0C,EAAK,EAGnC,GAAIG,IAAYF,GAAM,QACpB,GAAI,CAACG,IAAY,CAACF,GAAM,OACtB,MAAO,WAEAE,IAAYF,GAAM,OAC3B,MAAO,GAIT,IAAIG,EAAO,EACPC,GAAQ,EACRC,GACJ,IAAKA,MAAOR,GACNQ,GAAI,QAAQ,EAAEF,EACdE,GAAI,eAAe,EAAED,GAE3B,IAAIE,GAAO,EACPC,GAAQ,EACZ,IAAKF,MAAOP,GACNO,GAAI,QAAQ,EAAEC,GACdD,GAAI,eAAe,EAAEE,GAE3B,GAAIJ,IAASG,GACX,OAAOH,EAAOG,GAIhB,GAAIL,IAAYF,GAAM,eACpB,GAAI,CAACG,IAAY,CAACF,GAAM,cACtB,MAAO,WAEAE,IAAYF,GAAM,cAC3B,MAAO,GAIT,GAAII,KAAUG,GACZ,OAAOH,GAAQG,GAIjB,GAAIN,IACF,GAAI,CAACC,GACH,MAAO,WAEAA,GACT,MAAO,GAIT,IAAMM,IAAmBX,GAAM,OAASC,GAAM,SAAWG,GAAW,GAAK,GACzE,GAAIO,KAAoB,EACtB,OAAOA,GAOT,IAAMC,GAAc,CAAA,EAChBC,GAAK,EACT,QAAS5G,GAAI,EAAGA,GAAI+F,GAAM,OAAQ,EAAE/F,GAAG,CACrC,IAAM6G,GAAiBtB,GAAcQ,GAAM/F,EAAC,EAAGgG,GAAMhG,EAAC,CAAC,EACvD2G,GAAY,KAAKE,EAAc,EAC/BD,IAAMC,EACZ,CACI,GAAID,KAAO,EACT,OAAOA,GAOT,IAAIE,GACJ,IAAKA,MAAKH,GACR,GAAIG,KAAM,EACR,OAAOA,GAKX,MAAO,EACX,CAUE,SAAS/D,GAAqBH,GAAW,CACvC,GAAIA,GAAU,SAAW,EACvB,MAAO,CAAA,EAET,IAAMhD,GAAQgD,GAAU,IAAIvD,CAAQ,EAChCuD,GAAU,OAAS,GACrBhD,GAAM,KAAK,CAACmH,GAAIC,KAAOD,GAAG,MAAQC,GAAG,KAAK,EAE5C,IAAI1G,GAAUV,GAAM,CAAC,EAAE,cACvB,GAAIgD,GAAU,SAAW,EACvB,OAAOtC,GAETA,GAAUA,GAAQ,OAAO,CAAA,CAAE,EAG3B,IAAM2G,GAAa,IAAI,IAAIrE,EAAS,EACpC,QAAS5C,GAAI,EAAGA,GAAIJ,GAAM,OAAQ,EAAEI,GAAG,CACrC,IAAIkH,GACJ,IAAKA,MAAYtH,GAAMI,EAAC,EAAE,cACnBiH,GAAW,IAAIC,GAAS,IAAI,IAC/B5G,GAAQ,KAAK4G,EAAQ,EACrBD,GAAW,IAAIC,GAAS,IAAI,EAGtC,CACI,OAAO5G,EACX,CAUE,SAAS6G,GAAyBpG,GAAQL,GAAI,CAC5C,IAAI0G,GAAY1G,GAIhB,GAAIK,GAAO,KAAKoB,IAAKA,GAAE,aAAa,EAAG,CACrC,IAAMG,GAAYgB,EAAavC,EAAM,EAC/BsG,GAAsBtG,GAAO,IAAIuG,EAAoB,EAC3DF,GAAY,UAAuB,CACjC,IAAMnD,GAAO,CAAA,EACPV,EAAOjB,GAAY,UAAU,OAAS,EAAI,UAAU,OAC1D,QAAStC,GAAI,EAAGA,GAAIuD,EAAMvD,KACxBiE,GAAKjE,EAAC,EAAIqH,GAAoBrH,EAAC,EAAE,UAAUA,EAAC,CAAC,EAE/C,OAAIsC,KACF2B,GAAKV,CAAI,EAAI,UAAUA,CAAI,EAAE,IAAI8D,GAAoB9D,CAAI,CAAC,GAErD7C,GAAG,MAAM,KAAMuD,EAAI,CAClC,CACA,CACI,IAAIsD,GAAeH,GACnB,GAAI9D,EAAavC,EAAM,EAAG,CACxB,IAAMyG,GAASzG,GAAO,OAAS,EAC/BwG,GAAe,UAAgC,CAC7C,OAAOH,GAAU,MAAM,KAAMK,GAAM,UAAW,EAAGD,EAAM,EAAE,OAAO,CAACC,GAAM,UAAWD,EAAM,CAAC,CAAC,CAAC,CACnG,CACA,CACI,OAAOD,EACX,CAQE,SAASD,GAAqBjF,GAAO,CACnC,IAAIoB,GAAOC,GAAOgE,GAAaC,GACzBhE,GAAQ,CAAA,EACR1B,GAAc,CAAA,EASpB,OARAI,GAAM,MAAM,QAAQ,SAAU9C,GAAM,CAC9BA,GAAK,aACPoE,GAAM,KAAKtE,EAASE,GAAK,WAAW,IAAI,EAAE,IAAI,EAC9C0C,GAAY,KAAK1C,GAAK,WAAW,OAAO,EAEhD,CAAK,EAGO0C,GAAY,OAAM,CACxB,IAAK,GACH,OAAO,SAAoB2F,EAAK,CAC9B,OAAOA,CACjB,EACM,IAAK,GACH,OAAAnE,GAAQE,GAAM,CAAC,EACf+D,GAAczF,GAAY,CAAC,EACpB,SAAoB2F,EAAK,CAC9B,OAAInE,GAAMmE,CAAG,EACJF,GAAYE,CAAG,EAEjBA,CACjB,EACM,IAAK,GACH,OAAAnE,GAAQE,GAAM,CAAC,EACfD,GAAQC,GAAM,CAAC,EACf+D,GAAczF,GAAY,CAAC,EAC3B0F,GAAc1F,GAAY,CAAC,EACpB,SAAoB2F,EAAK,CAC9B,OAAInE,GAAMmE,CAAG,EACJF,GAAYE,CAAG,EAEpBlE,GAAMkE,CAAG,EACJD,GAAYC,CAAG,EAEjBA,CACjB,EACM,QACE,OAAO,SAAoBA,EAAK,CAC9B,QAAS5H,GAAI,EAAGA,GAAIiC,GAAY,OAAQjC,KACtC,GAAI2D,GAAM3D,EAAC,EAAE4H,CAAG,EACd,OAAO3F,GAAYjC,EAAC,EAAE4H,CAAG,EAG7B,OAAOA,CACjB,CACA,CACA,CAmBE,SAASC,GAAY9G,GAAQ,CAC3B,SAAS+G,GAAa/G,GAAQmD,GAAO6D,GAAa,CAChD,GAAI7D,GAAQnD,GAAO,OAAQ,CACzB,IAAMsB,GAAQtB,GAAOmD,EAAK,EACtB8D,GAAkB,CAAA,EACtB,GAAI3F,GAAM,UAAW,CAGnB,IAAM4F,GAAa5F,GAAM,MAAM,OAAO+B,CAAW,EAC7C6D,GAAW,OAAS5F,GAAM,MAAM,QAClC2F,GAAgB,KAAK,CACnB,MAAOC,GACP,KAAM,MAAQA,GAAW,IAAIpF,GAAKA,EAAE,IAAI,EAAE,KAAK,GAAG,EAClD,OAAQoF,GAAW,KAAKpF,GAAKA,EAAE,KAAK,EACpC,cAAe,GACf,UAAW,EACzB,CAAa,EAEHmF,GAAgB,KAAK3F,EAAK,CACpC,MAEU2F,GAAkB3F,GAAM,MAAM,IAAI,SAAU9C,GAAM,CAChD,MAAO,CACL,MAAO,CAACA,EAAI,EACZ,KAAMA,GAAK,KACX,OAAQA,GAAK,MACb,cAAeA,GAAK,WACpB,UAAW,EACzB,CACA,CAAW,EAIH,OAAO2I,GAAQF,GAAiB,SAAUG,GAAW,CACnD,OAAOL,GAAa/G,GAAQmD,GAAQ,EAAG6D,GAAY,OAAO,CAACI,EAAS,CAAC,CAAC,CAChF,CAAS,CACT,KAEQ,OAAO,CAACJ,EAAW,CAE3B,CACI,OAAOD,GAAa/G,GAAQ,EAAG,CAAA,CAAE,CACrC,CAQE,SAASqH,GAAYC,GAASC,GAAS,CACrC,IAAMC,GAAK,KAAK,IAAIF,GAAQ,OAAQC,GAAQ,MAAM,EAClD,QAAStI,GAAI,EAAGA,GAAIuI,GAAIvI,KAAK,CAC3B,IAAMwI,EAAWrE,EAAkBkE,GAASrI,EAAC,EACvCyI,GAAWtE,EAAkBmE,GAAStI,EAAC,EACzC0I,GAAU,GACVjJ,GACJ,IAAKA,MAAQgJ,GACX,GAAID,EAAS,IAAI/I,EAAI,EAAG,CACtBiJ,GAAU,GACV,KACV,CAEM,GAAI,CAACA,GACH,MAAO,EAEf,CACI,IAAMC,GAAON,GAAQ,OACfO,GAAON,GAAQ,OACfO,GAAavF,EAAa+E,EAAO,EACjCS,GAAaxF,EAAagF,EAAO,EACvC,OAAOO,GAAaC,GAAaH,KAASC,GAAOA,IAAQD,GAAOG,GAAaH,IAAQC,GAAOD,KAASC,EACzG,CAUE,SAASG,GAAiBC,GAAc,CACtC,OAAOA,GAAa,IAAItI,IAClBuI,GAAcvI,EAAE,EACXwI,GAAYxI,GAAG,YAAY,QAAQ,EAExCyI,GAAUzI,EAAE,EACP0I,GAAY1I,GAAG,QAAQ,WAAYA,GAAG,QAAQ,QAAQ,EAExDA,EACR,CACL,CAaE,SAAS2I,GAAmBC,GAAYN,GAAcO,GAAc,CAClE,IAAMC,GAAqB,CAAA,EACvBC,GACJ,IAAKA,MAAaH,GAAY,CAC5B,IAAII,GAAaH,GAAaE,EAAS,EACvC,GAAI,OAAOC,IAAe,SACxB,MAAM,IAAI,UAAU,2CAA6CD,GAAY,GAAG,EAGlF,GADAC,GAAaV,GAAaU,EAAU,EAChC,OAAOA,IAAe,WACxB,MAAO,GAETF,GAAmB,KAAKE,EAAU,CACxC,CACI,OAAOF,EACX,CAaE,SAASG,GAAkBX,GAAcO,GAAcK,GAAM,CAC3D,IAAMC,GAAoBd,GAAiBC,EAAY,EACjDc,GAAa,IAAI,MAAMD,GAAkB,MAAM,EAAE,KAAK,EAAK,EAC7DE,GAAiB,GACrB,KAAOA,IAAgB,CACrBA,GAAiB,GACjB,IAAIC,GAAkB,GACtB,QAAShK,GAAI,EAAGA,GAAI6J,GAAkB,OAAQ,EAAE7J,GAAG,CACjD,GAAI8J,GAAW9J,EAAC,EAAG,SACnB,IAAMU,EAAKmJ,GAAkB7J,EAAC,EAC9B,GAAIiJ,GAAcvI,CAAE,EAClBmJ,GAAkB7J,EAAC,EAAIU,EAAG,YAAY,SAASkJ,EAAI,EAEnDC,GAAkB7J,EAAC,EAAE,YAAcU,EAAG,YACtCoJ,GAAW9J,EAAC,EAAI,GAChBgK,GAAkB,WACTb,GAAUzI,CAAE,EAAG,CACxB,IAAM8I,GAAqBH,GAAmB3I,EAAG,QAAQ,WAAYmJ,GAAmBN,EAAY,EAChGC,IACFK,GAAkB7J,EAAC,EAAIU,EAAG,QAAQ,SAAS,MAAM,KAAM8I,EAAkB,EAEzEK,GAAkB7J,EAAC,EAAE,QAAUU,EAAG,QAClCoJ,GAAW9J,EAAC,EAAI,GAChBgK,GAAkB,IAElBD,GAAiB,EAE7B,CACA,CACM,GAAIC,IAAmBD,GACrB,MAAM,IAAI,YAAY,wDAAwD,CAEtF,CACI,OAAOF,EACX,CASE,SAASI,GAAuBC,GAAe,CAI7C,IAAMC,GAAsB,4BAC5B,OAAO,KAAKD,EAAa,EAAE,QAAQvJ,IAAa,CAC9C,IAAMD,GAAKwJ,GAAcvJ,EAAS,EAClC,GAAIwJ,GAAoB,KAAKzJ,GAAG,SAAQ,CAAE,EACxC,MAAM,IAAI,YAAY,kIAA4I,CAE1K,CAAK,CACL,CAYE,SAAS0J,GAAoB3K,GAAM4K,GAAkB,CAEnD,GADAjL,EAAM,cACF,OAAO,KAAKiL,EAAgB,EAAE,SAAW,EAC3C,MAAM,IAAI,YAAY,wBAAwB,EAE5CjL,EAAM,2BACR6K,GAAuBI,EAAgB,EAIzC,IAAMC,GAAe,CAAA,EACfC,GAAoB,CAAA,EACpBL,GAAgB,CAAA,EAChBM,GAAwB,CAAA,EAC1B7J,GACJ,IAAKA,MAAa0J,GAAkB,CAElC,GAAI,CAAC,OAAO,UAAU,eAAe,KAAKA,GAAkB1J,EAAS,EACnE,SAGF,IAAMI,EAASC,EAAeL,EAAS,EACvC,GAAI,CAACI,EAAQ,SAEbuJ,GAAa,QAAQ,SAAUG,GAAI,CACjC,GAAIrC,GAAYqC,GAAI1J,CAAM,EACxB,MAAM,IAAI,UAAU,2BAA6BG,EAAgBuJ,EAAE,EAAI,UAAYvJ,EAAgBH,CAAM,EAAI,IAAI,CAE3H,CAAO,EACDuJ,GAAa,KAAKvJ,CAAM,EAExB,IAAM2J,GAAgBH,GAAkB,OACxCA,GAAkB,KAAKF,GAAiB1J,EAAS,CAAC,EAClD,IAAMgK,GAAmB5J,EAAO,IAAI4B,CAAW,EAE3CiI,GACJ,IAAKA,MAAM/C,GAAY8C,EAAgB,EAAG,CACxC,IAAME,GAAS3J,EAAgB0J,EAAE,EACjCJ,GAAsB,KAAK,CACzB,OAAQI,GACR,KAAMC,GACN,GAAIH,EACd,CAAS,EACGE,GAAG,MAAMzI,IAAK,CAACA,GAAE,aAAa,IAChC+H,GAAcW,EAAM,EAAIH,GAElC,CACA,CACIF,GAAsB,KAAK5E,EAAiB,EAG5C,IAAMiE,GAAoBF,GAAkBY,GAAmBL,GAAeY,EAAU,EAGpFtI,EACJ,IAAKA,KAAK0H,GACJ,OAAO,UAAU,eAAe,KAAKA,GAAe1H,CAAC,IACvD0H,GAAc1H,CAAC,EAAIqH,GAAkBK,GAAc1H,CAAC,CAAC,GAGzD,IAAM8B,GAAa,CAAA,EACbyG,GAAuB,IAAI,IACjC,IAAKvI,KAAKgI,GAIHO,GAAqB,IAAIvI,EAAE,IAAI,IAClCA,EAAE,GAAKqH,GAAkBrH,EAAE,EAAE,EAC7B8B,GAAW,KAAK9B,CAAC,EACjBuI,GAAqB,IAAIvI,EAAE,KAAMA,CAAC,GAKtC,IAAMwI,GAAM1G,GAAW,CAAC,GAAKA,GAAW,CAAC,EAAE,OAAO,QAAU,GAAK,CAAChB,EAAagB,GAAW,CAAC,EAAE,MAAM,EAC7F2G,GAAM3G,GAAW,CAAC,GAAKA,GAAW,CAAC,EAAE,OAAO,QAAU,GAAK,CAAChB,EAAagB,GAAW,CAAC,EAAE,MAAM,EAC7F4G,GAAM5G,GAAW,CAAC,GAAKA,GAAW,CAAC,EAAE,OAAO,QAAU,GAAK,CAAChB,EAAagB,GAAW,CAAC,EAAE,MAAM,EAC7F6G,GAAM7G,GAAW,CAAC,GAAKA,GAAW,CAAC,EAAE,OAAO,QAAU,GAAK,CAAChB,EAAagB,GAAW,CAAC,EAAE,MAAM,EAC7F8G,GAAM9G,GAAW,CAAC,GAAKA,GAAW,CAAC,EAAE,OAAO,QAAU,GAAK,CAAChB,EAAagB,GAAW,CAAC,EAAE,MAAM,EAC7F+G,GAAM/G,GAAW,CAAC,GAAKA,GAAW,CAAC,EAAE,OAAO,QAAU,GAAK,CAAChB,EAAagB,GAAW,CAAC,EAAE,MAAM,EAC7FgH,GAAQN,IAAOC,IAAOC,IAAOC,IAAOC,IAAOC,GAGjD,QAASrL,EAAI,EAAGA,EAAIsE,GAAW,OAAQ,EAAEtE,EACvCsE,GAAWtE,CAAC,EAAE,KAAO4D,EAAaU,GAAWtE,CAAC,EAAE,MAAM,EAExD,IAAMuL,GAASP,GAAMxH,EAAYc,GAAW,CAAC,EAAE,OAAO,CAAC,CAAC,EAAI7F,EACtD+M,GAASP,GAAMzH,EAAYc,GAAW,CAAC,EAAE,OAAO,CAAC,CAAC,EAAI7F,EACtDgN,GAASP,GAAM1H,EAAYc,GAAW,CAAC,EAAE,OAAO,CAAC,CAAC,EAAI7F,EACtDiN,GAASP,GAAM3H,EAAYc,GAAW,CAAC,EAAE,OAAO,CAAC,CAAC,EAAI7F,EACtDkN,GAASP,GAAM5H,EAAYc,GAAW,CAAC,EAAE,OAAO,CAAC,CAAC,EAAI7F,EACtDmN,GAASP,GAAM7H,EAAYc,GAAW,CAAC,EAAE,OAAO,CAAC,CAAC,EAAI7F,EACtDoN,GAASb,GAAMxH,EAAYc,GAAW,CAAC,EAAE,OAAO,CAAC,CAAC,EAAI7F,EACtDqN,GAASb,GAAMzH,EAAYc,GAAW,CAAC,EAAE,OAAO,CAAC,CAAC,EAAI7F,EACtDsN,GAASb,GAAM1H,EAAYc,GAAW,CAAC,EAAE,OAAO,CAAC,CAAC,EAAI7F,EACtDuN,GAASb,GAAM3H,EAAYc,GAAW,CAAC,EAAE,OAAO,CAAC,CAAC,EAAI7F,EACtDwN,GAASb,GAAM5H,EAAYc,GAAW,CAAC,EAAE,OAAO,CAAC,CAAC,EAAI7F,EACtDyN,GAASb,GAAM7H,EAAYc,GAAW,CAAC,EAAE,OAAO,CAAC,CAAC,EAAI7F,EAG5D,QAASuB,EAAI,EAAGA,EAAIsE,GAAW,OAAQ,EAAEtE,EACvCsE,GAAWtE,CAAC,EAAE,eAAiBmH,GAAyB7C,GAAWtE,CAAC,EAAE,OAAQsE,GAAWtE,CAAC,EAAE,EAAE,EAEhG,IAAMmM,GAAMnB,GAAM1G,GAAW,CAAC,EAAE,eAAiB5F,EAC3C0N,GAAMnB,GAAM3G,GAAW,CAAC,EAAE,eAAiB5F,EAC3C2N,GAAMnB,GAAM5G,GAAW,CAAC,EAAE,eAAiB5F,EAC3C4N,GAAMnB,GAAM7G,GAAW,CAAC,EAAE,eAAiB5F,EAC3C6N,GAAMnB,GAAM9G,GAAW,CAAC,EAAE,eAAiB5F,EAC3C8N,GAAMnB,GAAM/G,GAAW,CAAC,EAAE,eAAiB5F,EAC3C+N,GAAOzB,GAAM1G,GAAW,CAAC,EAAE,OAAO,OAAS,GAC3CqE,GAAOsC,GAAM3G,GAAW,CAAC,EAAE,OAAO,OAAS,GAC3CsE,GAAOsC,GAAM5G,GAAW,CAAC,EAAE,OAAO,OAAS,GAC3CoI,GAAOvB,GAAM7G,GAAW,CAAC,EAAE,OAAO,OAAS,GAC3CqI,GAAOvB,GAAM9G,GAAW,CAAC,EAAE,OAAO,OAAS,GAC3CsI,GAAOvB,GAAM/G,GAAW,CAAC,EAAE,OAAO,OAAS,GAG3CuI,GAASvB,GAAQ,EAAI,EACrBwB,GAAOxI,GAAW,OAElBX,GAAQW,GAAW,IAAI9B,GAAKA,EAAE,IAAI,EAClCuK,GAAMzI,GAAW,IAAI9B,GAAKA,EAAE,cAAc,EAC1CwK,GAAU,UAAmB,CAGjC,QAAShN,GAAI6M,GAAQ7M,GAAI8M,GAAM9M,KAC7B,GAAI2D,GAAM3D,EAAC,EAAE,SAAS,EACpB,OAAO+M,GAAI/M,EAAC,EAAE,MAAM,KAAM,SAAS,EAGvC,OAAOZ,EAAM,WAAWK,GAAM,UAAW6E,EAAU,CACzD,EAII,SAASwG,GAAWmC,EAAMC,GAAM,CAG9B,OAAI,UAAU,SAAWT,IAAQlB,GAAO0B,CAAI,GAAKpB,GAAOqB,EAAI,EACnDf,GAAI,MAAM,KAAM,SAAS,EAE9B,UAAU,SAAWxD,IAAQ6C,GAAOyB,CAAI,GAAKnB,GAAOoB,EAAI,EACnDd,GAAI,MAAM,KAAM,SAAS,EAE9B,UAAU,SAAWxD,IAAQ6C,GAAOwB,CAAI,GAAKlB,GAAOmB,EAAI,EACnDb,GAAI,MAAM,KAAM,SAAS,EAE9B,UAAU,SAAWK,IAAQhB,GAAOuB,CAAI,GAAKjB,GAAOkB,EAAI,EACnDZ,GAAI,MAAM,KAAM,SAAS,EAE9B,UAAU,SAAWK,IAAQhB,GAAOsB,CAAI,GAAKhB,GAAOiB,EAAI,EACnDX,GAAI,MAAM,KAAM,SAAS,EAE9B,UAAU,SAAWK,IAAQhB,GAAOqB,CAAI,GAAKf,GAAOgB,EAAI,EACnDV,GAAI,MAAM,KAAM,SAAS,EAE3BQ,GAAQ,MAAM,KAAM,SAAS,CAC1C,CAGI,GAAI,CACF,OAAO,eAAelC,GAAY,OAAQ,CACxC,MAAOrL,EACf,CAAO,CACP,MAAkB,CAIlB,CAKI,OAAAqL,GAAW,WAAaZ,GAIxBY,GAAW,mBAAqB,CAC9B,WAAAxG,GACA,aAAcyG,EACpB,EACWD,EACX,CAQE,SAASqC,GAAY1N,GAAMwE,GAAMK,GAAY,CAC3C,MAAMG,GAAYhF,GAAMwE,GAAMK,EAAU,CAC5C,CAOE,SAAST,GAAQuJ,GAAK,CACpB,OAAO3F,GAAM2F,GAAK,EAAGA,GAAI,OAAS,CAAC,CACvC,CAOE,SAAS7J,GAAK6J,GAAK,CACjB,OAAOA,GAAIA,GAAI,OAAS,CAAC,CAC7B,CASE,SAAS3F,GAAM2F,GAAKC,GAAOC,GAAK,CAC9B,OAAO,MAAM,UAAU,MAAM,KAAKF,GAAKC,GAAOC,EAAG,CACrD,CASE,SAASC,GAAYH,GAAKrI,GAAM,CAC9B,QAAS/E,GAAI,EAAGA,GAAIoN,GAAI,OAAQpN,KAC9B,GAAI+E,GAAKqI,GAAIpN,EAAC,CAAC,EACb,OAAOoN,GAAIpN,EAAC,CAIpB,CASE,SAASkI,GAAQkF,GAAKI,GAAU,CAC9B,OAAO,MAAM,UAAU,OAAO,MAAM,CAAA,EAAIJ,GAAI,IAAII,EAAQ,CAAC,CAC7D,CAaE,SAASC,IAAU,CACjB,IAAMnE,GAAazF,GAAQ,SAAS,EAAE,IAAIrB,IAAKtB,EAAgBF,EAAewB,EAAC,CAAC,CAAC,EAC3EgL,GAAWjK,GAAK,SAAS,EAC/B,GAAI,OAAOiK,IAAa,WACtB,MAAM,IAAI,UAAU,6CAA6C,EAEnE,OAAOpE,GAAYE,GAAYkE,EAAQ,CAC3C,CACE,SAASpE,GAAYE,GAAYkE,GAAU,CACzC,MAAO,CACL,QAAS,CACP,WAAAlE,GACA,SAAAkE,EACR,CACA,CACA,CAQE,SAAStE,GAAYsE,GAAU,CAC7B,GAAI,OAAOA,IAAa,WACtB,MAAM,IAAI,UAAU,8CAA8C,EAEpE,MAAO,CACL,YAAa,CACX,SAAAA,EACR,CACA,CACA,CASE,SAASrE,GAAUuE,GAAY,CAC7B,OAAOA,IAAc,OAAOA,GAAW,SAAY,UAAY,MAAM,QAAQA,GAAW,QAAQ,UAAU,GAAK,OAAOA,GAAW,QAAQ,UAAa,UAC1J,CASE,SAASzE,GAAcyE,GAAY,CACjC,OAAOA,IAAc,OAAOA,GAAW,aAAgB,UAAY,OAAOA,GAAW,YAAY,UAAa,UAClH,CAUE,SAASC,GAAUC,GAAW5K,GAAS,CACrC,GAAI,CAAC4K,GACH,OAAO5K,GAET,GAAIA,IAAWA,KAAY4K,GAAW,CACpC,IAAMlJ,GAAM,IAAI,MAAM,0CAA4CkJ,GAAY,aAAe5K,GAAU,GAAG,EAC1G,MAAA0B,GAAI,KAAO,CACT,OAAQ1B,GACR,SAAU4K,EAClB,EACYlJ,EACZ,CACI,OAAOkJ,EACX,CAQE,SAASC,GAAcC,GAAK,CAC1B,IAAIrO,GACJ,QAAWsO,MAAOD,GAGZ,OAAO,UAAU,eAAe,KAAKA,GAAKC,EAAG,IAAMxN,EAAgBuN,GAAIC,EAAG,CAAC,GAAK,OAAOD,GAAIC,EAAG,EAAE,WAAc,YAChHtO,GAAOkO,GAAUlO,GAAMqO,GAAIC,EAAG,EAAE,IAAI,GAGxC,OAAOtO,EACX,CASE,SAASuO,GAAgBC,GAAMC,GAAQ,CACrC,IAAIH,GACJ,IAAKA,MAAOG,GACV,GAAI,OAAO,UAAU,eAAe,KAAKA,GAAQH,EAAG,EAAG,CACrD,GAAIA,MAAOE,IACLC,GAAOH,EAAG,IAAME,GAAKF,EAAG,EAAG,CAC7B,IAAMrJ,GAAM,IAAI,MAAM,cAAgBqJ,GAAM,oBAAoB,EAChE,MAAArJ,GAAI,KAAO,CACT,UAAWqJ,GACX,eAAgBG,GAAOH,EAAG,EAC1B,aAAcE,GAAKF,EAAG,CACpC,EACkBrJ,EAClB,CAGQuJ,GAAKF,EAAG,EAAIG,GAAOH,EAAG,CAC9B,CAEA,CACE,IAAMI,GAAY/O,EAwBlBA,EAAQ,SAAUgP,GAAW,CAC3B,IAAMC,GAAQ,OAAOD,IAAc,SAC7Bf,GAAQgB,GAAQ,EAAI,EACtB5O,GAAO4O,GAAQD,GAAY,GACzBE,GAAgB,CAAA,EACtB,QAAStO,GAAIqN,GAAOrN,GAAI,UAAU,OAAQ,EAAEA,GAAG,CAC7C,IAAMuO,GAAO,UAAUvO,EAAC,EACpBwO,GAAkB,CAAA,EAClBC,EAiBJ,GAhBI,OAAOF,IAAS,YAClBE,EAAWF,GAAK,KACZ,OAAOA,GAAK,WAAc,SAE5BC,GAAgBD,GAAK,SAAS,EAAIA,GACzBhO,EAAgBgO,EAAI,IAE7BC,GAAkBD,GAAK,aAEhB1P,EAAc0P,EAAI,IAE3BC,GAAkBD,GACbF,KACHI,EAAWZ,GAAcU,EAAI,IAG7B,OAAO,KAAKC,EAAe,EAAE,SAAW,EAAG,CAC7C,IAAM9J,GAAM,IAAI,UAAU,gCAAoC1E,GAAI,4FAAiG,EACnK,MAAA0E,GAAI,KAAO,CACT,MAAO1E,GACP,SAAUuO,EACpB,EACc7J,EACd,CACW2J,KACH5O,GAAOkO,GAAUlO,GAAMgP,CAAQ,GAEjCT,GAAgBM,GAAeE,EAAe,CACpD,CACI,OAAOpE,GAAoB3K,IAAQ,GAAI6O,EAAa,CACxD,EACElP,EAAM,OAASR,EACfQ,EAAM,YAAc+O,GAAU,YAC9B/O,EAAM,WAAa+N,GACnB/N,EAAM,mBAAqB+N,GAC3B/N,EAAM,YAAcqF,GACpBrF,EAAM,MAAQc,EACdd,EAAM,iBAAmBe,EACzBf,EAAM,SAAWO,EACjBP,EAAM,UAAYC,EAClBD,EAAM,QAAUqO,GAChBrO,EAAM,YAAc8J,GACpB9J,EAAM,QAAU4C,EAChB5C,EAAM,cAAgBqB,EACtBrB,EAAM,KAAO2C,EACb3C,EAAM,gBAAkBmB,EACxBnB,EAAM,0BAA4B,GAUlCA,EAAM,QAAU,SAAUG,GAAMmP,GAAkB,CAChD,IAAIC,GAAS,MACTD,KAAqB,IAASzP,EAAQ,IAAI,QAAQ,IACpD0P,GAAS,UAEXvP,EAAM,SAAS,CAACG,EAAI,EAAGoP,EAAM,CACjC,EASE,SAASC,GAAoB1L,GAAY,CACvC,GAAI,CAACA,IAAc,OAAOA,GAAW,MAAS,UAAY,OAAOA,GAAW,IAAO,UAAY,OAAOA,GAAW,SAAY,WAC3H,MAAM,IAAI,UAAU,+EAA+E,EAErG,GAAIA,GAAW,KAAOA,GAAW,KAC/B,MAAM,IAAI,YAAY,sCAAwCA,GAAW,KAAO,cAAc,CAEpG,CAUE,OAAA9D,EAAM,cAAgB,SAAU8D,GAAY,CAC1C,IAAItC,GAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAChF,SAAU,EAChB,EACIgO,GAAoB1L,EAAU,EAC9B,IAAM2L,GAAKxP,EAAS6D,GAAW,EAAE,EAC3B4L,GAAWD,GAAG,cAAc,KAAKE,IAASA,GAAM,OAAS7L,GAAW,IAAI,EAC9E,GAAI4L,GACF,GAAIlO,IAAWA,GAAQ,SACrBxB,EAAM,iBAAiB,CACrB,KAAM0P,GAAS,KACf,GAAI5L,GAAW,GACf,QAAS4L,GAAS,OAC5B,CAAS,MAED,OAAM,IAAI,MAAM,uCAAyC5L,GAAW,KAAO,SAAW2L,GAAG,KAAO,GAAG,EAGvGA,GAAG,cAAc,KAAK,CACpB,KAAM3L,GAAW,KACjB,QAASA,GAAW,QACpB,MAAO/D,GACb,CAAK,CACL,EAUEC,EAAM,eAAiB,SAAU6C,GAAarB,GAAS,CACrDqB,GAAY,QAAQiB,IAAc9D,EAAM,cAAc8D,GAAYtC,EAAO,CAAC,CAC9E,EAWExB,EAAM,iBAAmB,SAAU8D,GAAY,CAC7C0L,GAAoB1L,EAAU,EAC9B,IAAM2L,GAAKxP,EAAS6D,GAAW,EAAE,EAC3B8L,GAAqBzB,GAAYsB,GAAG,cAAe/H,IAAKA,GAAE,OAAS5D,GAAW,IAAI,EACxF,GAAI,CAAC8L,GACH,MAAM,IAAI,MAAM,iDAAmD9L,GAAW,KAAO,OAASA,GAAW,EAAE,EAE7G,GAAI8L,GAAmB,UAAY9L,GAAW,QAC5C,MAAM,IAAI,MAAM,yDAAyD,EAE3E,IAAMgB,GAAQ2K,GAAG,cAAc,QAAQG,EAAkB,EACzDH,GAAG,cAAc,OAAO3K,GAAO,CAAC,CACpC,EAYE9E,EAAM,QAAU,SAAU6P,GAAIC,GAAS,CACrC,GAAI,CAAC3O,EAAgB0O,EAAE,EACrB,MAAM,IAAI,UAAUtQ,CAAkB,EAExC,IAAMwQ,GAAOF,GAAG,mBAAmB,WACnC,QAASjP,GAAI,EAAGA,GAAImP,GAAK,OAAQ,EAAEnP,GACjC,GAAImP,GAAKnP,EAAC,EAAE,KAAKkP,EAAO,EACtB,OAAOC,GAAKnP,EAAC,EAGjB,OAAO,IACX,EACSZ,CACT,CACA,IAAAgQ,EAAexQ,EAAM,eCj3DrB,IAAAyQ,GAAAC,GAAA,CAAAC,IAAAC,KAAA,CAKAA,GAAO,QAAU,SAASC,EAAaC,EAAGC,EAAG,CAC5C,aACA,IAAIC,EAAK,8EACRC,EAAM,iBACNC,EAAM,iHACNC,EAAM,iBACNC,EAAM,KACNC,EAAI,SAASC,EAAG,CAAE,OAAOT,EAAY,cAAgB,GAAKS,GAAG,YAAY,GAAK,GAAKA,CAAG,EAEtFC,EAAIF,EAAEP,CAAC,EAAE,QAAQG,EAAK,EAAE,GAAK,GAC7BO,EAAIH,EAAEN,CAAC,EAAE,QAAQE,EAAK,EAAE,GAAK,GAE7BQ,EAAKF,EAAE,QAAQP,EAAI,QAAQ,EAAE,QAAQ,MAAM,EAAE,EAAE,QAAQ,MAAM,EAAE,EAAE,MAAM,IAAI,EAC3EU,EAAKF,EAAE,QAAQR,EAAI,QAAQ,EAAE,QAAQ,MAAM,EAAE,EAAE,QAAQ,MAAM,EAAE,EAAE,MAAM,IAAI,EAE3EW,EAAK,SAASJ,EAAE,MAAMJ,CAAG,EAAG,EAAE,GAAMM,EAAG,SAAW,GAAKF,EAAE,MAAML,CAAG,GAAK,KAAK,MAAMK,CAAC,EACnFK,EAAK,SAASJ,EAAE,MAAML,CAAG,EAAG,EAAE,GAAKQ,GAAMH,EAAE,MAAMN,CAAG,GAAK,KAAK,MAAMM,CAAC,GAAK,KAC1EK,EAAQC,EAET,GAAIF,EAAI,CACP,GAAKD,EAAKC,EAAO,MAAO,GACnB,GAAKD,EAAKC,EAAO,MAAO,EAC9B,CAEA,QAAQG,EAAK,EAAGC,EAAK,KAAK,IAAIP,EAAG,OAAQC,EAAG,MAAM,EAAGK,EAAOC,EAAMD,IAAQ,CAKzE,GAHAF,EAAS,EAAEJ,EAAGM,CAAI,GAAK,IAAI,MAAMX,CAAG,GAAK,WAAWK,EAAGM,CAAI,CAAC,GAAKN,EAAGM,CAAI,GAAK,EAC7ED,EAAS,EAAEJ,EAAGK,CAAI,GAAK,IAAI,MAAMX,CAAG,GAAK,WAAWM,EAAGK,CAAI,CAAC,GAAKL,EAAGK,CAAI,GAAK,EAEzE,MAAMF,CAAM,IAAM,MAAMC,CAAM,EAAK,OAAQ,MAAMD,CAAM,EAAK,EAAI,GAMpE,GAJS,OAAOA,GAAW,OAAOC,IACjCD,GAAU,GACVC,GAAU,IAEPD,EAASC,EAAU,MAAO,GAC9B,GAAID,EAASC,EAAU,MAAO,EAC/B,CACA,MAAO,EACR,IC5CA,IAAAG,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cAKA,IAAIC,GAAW,OAAO,QAAU,SAAUC,EAAQ,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIC,EAAS,UAAUD,CAAC,EAAG,QAASE,KAAOD,EAAc,OAAO,UAAU,eAAe,KAAKA,EAAQC,CAAG,IAAKH,EAAOG,CAAG,EAAID,EAAOC,CAAG,EAAO,CAAE,OAAOH,CAAQ,EAE3PI,IAAiB,CACnB,IAAK,MACL,IAAK,MACL,KAAM,oBACN,IAAK,MACL,EAAG,MACH,IAAK,MACL,IAAK,MACL,IAAK,sBACL,EAAG,MACH,IAAK,oBACP,EACIC,IAAgB,CAClB,SAAU,OACV,SAAU,QACV,IAAK,IACL,IAAM,YACN,OAAQ,cACR,KAAM,aACR,EAEIC,IAAqB,SAA4BF,EAAgBC,EAAe,CAClF,OAAON,GAAS,CAAC,EAAGK,EAAgBC,CAAa,CACnD,EAUAP,GAAO,QAAU,SAAUS,EAAK,CAmC9B,QAlCIC,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAC,EAC5EC,EAAwBD,EAAK,mBAC7BE,EAAqBD,IAA0B,OAAY,GAAQA,EACnEE,EAAmBH,EAAK,YACxBI,EAAcD,IAAqB,OAAYL,IAAqBK,EAEpEE,EAAa,OAAON,CAAG,EACvBO,EAAS,GAETC,EAAUH,EAAYb,GAAS,CAAC,EAAGK,GAAc,EAAGM,EAAqBX,GAAS,CAAC,EAAGM,GAAa,EAAI,CAAC,CAAC,EACzGW,EAAa,OAAO,KAAKD,CAAO,EAMhCE,EAAQ,UAAiB,CAC3B,IAAIC,EAAmB,GACvBF,EAAW,QAAQ,SAAUb,EAAKgB,EAAO,CACnCD,GAGAL,EAAW,QAAUV,EAAI,QAAUU,EAAW,MAAM,EAAGV,EAAI,MAAM,IAAMA,IACzEW,GAAUC,EAAQC,EAAWG,CAAK,CAAC,EACnCN,EAAaA,EAAW,MAAMV,EAAI,OAAQU,EAAW,MAAM,EAC3DK,EAAmB,GAEvB,CAAC,EACIA,IACHJ,GAAUD,EAAW,MAAM,EAAG,CAAC,EAC/BA,EAAaA,EAAW,MAAM,EAAGA,EAAW,MAAM,EAEtD,EAEOA,GACLI,EAAM,EAER,OAAOH,CACT,IC/EA,IAAAM,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EA2BC,SAASC,EAAQD,EAAQE,EAAQ,CAElC,SAASC,EAAKC,EAAM,CAClB,IAAIC,EAAK,KAAMC,EAAOC,EAAK,EAE3BF,EAAG,KAAO,UAAW,CACnB,IAAIG,EAAI,QAAUH,EAAG,GAAKA,EAAG,EAAI,sBACjC,OAAAA,EAAG,GAAKA,EAAG,GACXA,EAAG,GAAKA,EAAG,GACJA,EAAG,GAAKG,GAAKH,EAAG,EAAIG,EAAI,EACjC,EAGAH,EAAG,EAAI,EACPA,EAAG,GAAKC,EAAK,GAAG,EAChBD,EAAG,GAAKC,EAAK,GAAG,EAChBD,EAAG,GAAKC,EAAK,GAAG,EAChBD,EAAG,IAAMC,EAAKF,CAAI,EACdC,EAAG,GAAK,IAAKA,EAAG,IAAM,GAC1BA,EAAG,IAAMC,EAAKF,CAAI,EACdC,EAAG,GAAK,IAAKA,EAAG,IAAM,GAC1BA,EAAG,IAAMC,EAAKF,CAAI,EACdC,EAAG,GAAK,IAAKA,EAAG,IAAM,GAC1BC,EAAO,IACT,CAEA,SAASG,EAAKC,EAAGF,EAAG,CAClB,OAAAA,EAAE,EAAIE,EAAE,EACRF,EAAE,GAAKE,EAAE,GACTF,EAAE,GAAKE,EAAE,GACTF,EAAE,GAAKE,EAAE,GACFF,CACT,CAEA,SAASG,EAAKP,EAAMQ,EAAM,CACxB,IAAIC,EAAK,IAAIV,EAAKC,CAAI,EAClBU,EAAQF,GAAQA,EAAK,MACrBG,EAAOF,EAAG,KACd,OAAAE,EAAK,MAAQ,UAAW,CAAE,OAAQF,EAAG,KAAK,EAAI,WAAe,CAAG,EAChEE,EAAK,OAAS,UAAW,CACvB,OAAOA,EAAK,GAAKA,EAAK,EAAI,QAAW,GAAK,qBAC5C,EACAA,EAAK,MAAQA,EACTD,IACE,OAAOA,GAAU,UAAUL,EAAKK,EAAOD,CAAE,EAC7CE,EAAK,MAAQ,UAAW,CAAE,OAAON,EAAKI,EAAI,CAAC,CAAC,CAAG,GAE1CE,CACT,CAEA,SAASR,GAAO,CACd,IAAIS,EAAI,WAEJV,EAAO,SAASW,EAAM,CACxBA,EAAO,OAAOA,CAAI,EAClB,QAASC,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAAK,CACpCF,GAAKC,EAAK,WAAWC,CAAC,EACtB,IAAIC,EAAI,mBAAsBH,EAC9BA,EAAIG,IAAM,EACVA,GAAKH,EACLG,GAAKH,EACLA,EAAIG,IAAM,EACVA,GAAKH,EACLA,GAAKG,EAAI,UACX,CACA,OAAQH,IAAM,GAAK,qBACrB,EAEA,OAAOV,CACT,CAGIN,GAAUA,EAAO,QACnBA,EAAO,QAAUW,EACRT,GAAUA,EAAO,IAC1BA,EAAO,UAAW,CAAE,OAAOS,CAAM,CAAC,EAElC,KAAK,KAAOA,CAGd,GACEZ,GACC,OAAOC,IAAW,UAAYA,GAC9B,OAAO,QAAW,YAAc,MACnC,IC/GA,IAAAoB,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EAGC,SAASC,EAAQD,EAAQE,EAAQ,CAElC,SAASC,EAAOC,EAAM,CACpB,IAAIC,EAAK,KAAMC,EAAU,GAEzBD,EAAG,EAAI,EACPA,EAAG,EAAI,EACPA,EAAG,EAAI,EACPA,EAAG,EAAI,EAGPA,EAAG,KAAO,UAAW,CACnB,IAAIE,EAAIF,EAAG,EAAKA,EAAG,GAAK,GACxB,OAAAA,EAAG,EAAIA,EAAG,EACVA,EAAG,EAAIA,EAAG,EACVA,EAAG,EAAIA,EAAG,EACHA,EAAG,GAAMA,EAAG,IAAM,GAAME,EAAKA,IAAM,CAC5C,EAEIH,KAAUA,EAAO,GAEnBC,EAAG,EAAID,EAGPE,GAAWF,EAIb,QAASI,EAAI,EAAGA,EAAIF,EAAQ,OAAS,GAAIE,IACvCH,EAAG,GAAKC,EAAQ,WAAWE,CAAC,EAAI,EAChCH,EAAG,KAAK,CAEZ,CAEA,SAASI,EAAKC,EAAGH,EAAG,CAClB,OAAAA,EAAE,EAAIG,EAAE,EACRH,EAAE,EAAIG,EAAE,EACRH,EAAE,EAAIG,EAAE,EACRH,EAAE,EAAIG,EAAE,EACDH,CACT,CAEA,SAASI,EAAKP,EAAMQ,EAAM,CACxB,IAAIC,EAAK,IAAIV,EAAOC,CAAI,EACpBU,EAAQF,GAAQA,EAAK,MACrBG,EAAO,UAAW,CAAE,OAAQF,EAAG,KAAK,IAAM,GAAK,UAAa,EAChE,OAAAE,EAAK,OAAS,UAAW,CACvB,EACE,KAAIC,EAAMH,EAAG,KAAK,IAAM,GACpBI,GAAOJ,EAAG,KAAK,IAAM,GAAK,WAC1BK,GAAUF,EAAMC,IAAQ,GAAK,UAC1BC,IAAW,GACpB,OAAOA,CACT,EACAH,EAAK,MAAQF,EAAG,KAChBE,EAAK,MAAQA,EACTD,IACE,OAAOA,GAAU,UAAUL,EAAKK,EAAOD,CAAE,EAC7CE,EAAK,MAAQ,UAAW,CAAE,OAAON,EAAKI,EAAI,CAAC,CAAC,CAAG,GAE1CE,CACT,CAEIf,GAAUA,EAAO,QACnBA,EAAO,QAAUW,EACRT,GAAUA,EAAO,IAC1BA,EAAO,UAAW,CAAE,OAAOS,CAAM,CAAC,EAElC,KAAK,OAASA,CAGhB,GACEZ,GACC,OAAOC,IAAW,UAAYA,GAC9B,OAAO,QAAW,YAAc,MACnC,IC9EA,IAAAmB,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EAGC,SAASC,EAAQD,EAAQE,EAAQ,CAElC,SAASC,EAAOC,EAAM,CACpB,IAAIC,EAAK,KAAMC,EAAU,GAGzBD,EAAG,KAAO,UAAW,CACnB,IAAIE,EAAKF,EAAG,EAAKA,EAAG,IAAM,EAC1B,OAAAA,EAAG,EAAIA,EAAG,EAAGA,EAAG,EAAIA,EAAG,EAAGA,EAAG,EAAIA,EAAG,EAAGA,EAAG,EAAIA,EAAG,GACzCA,EAAG,EAAKA,EAAG,EAAI,OAAS,IAC5BA,EAAG,EAAKA,EAAG,EAAKA,EAAG,GAAK,GAAOE,EAAKA,GAAK,IAAO,CACtD,EAEAF,EAAG,EAAI,EACPA,EAAG,EAAI,EACPA,EAAG,EAAI,EACPA,EAAG,EAAI,EACPA,EAAG,EAAI,EAEHD,KAAUA,EAAO,GAEnBC,EAAG,EAAID,EAGPE,GAAWF,EAIb,QAASI,EAAI,EAAGA,EAAIF,EAAQ,OAAS,GAAIE,IACvCH,EAAG,GAAKC,EAAQ,WAAWE,CAAC,EAAI,EAC5BA,GAAKF,EAAQ,SACfD,EAAG,EAAIA,EAAG,GAAK,GAAKA,EAAG,IAAM,GAE/BA,EAAG,KAAK,CAEZ,CAEA,SAASI,EAAKC,EAAGH,EAAG,CAClB,OAAAA,EAAE,EAAIG,EAAE,EACRH,EAAE,EAAIG,EAAE,EACRH,EAAE,EAAIG,EAAE,EACRH,EAAE,EAAIG,EAAE,EACRH,EAAE,EAAIG,EAAE,EACRH,EAAE,EAAIG,EAAE,EACDH,CACT,CAEA,SAASI,EAAKP,EAAMQ,EAAM,CACxB,IAAIC,EAAK,IAAIV,EAAOC,CAAI,EACpBU,EAAQF,GAAQA,EAAK,MACrBG,EAAO,UAAW,CAAE,OAAQF,EAAG,KAAK,IAAM,GAAK,UAAa,EAChE,OAAAE,EAAK,OAAS,UAAW,CACvB,EACE,KAAIC,EAAMH,EAAG,KAAK,IAAM,GACpBI,GAAOJ,EAAG,KAAK,IAAM,GAAK,WAC1BK,GAAUF,EAAMC,IAAQ,GAAK,UAC1BC,IAAW,GACpB,OAAOA,CACT,EACAH,EAAK,MAAQF,EAAG,KAChBE,EAAK,MAAQA,EACTD,IACE,OAAOA,GAAU,UAAUL,EAAKK,EAAOD,CAAE,EAC7CE,EAAK,MAAQ,UAAW,CAAE,OAAON,EAAKI,EAAI,CAAC,CAAC,CAAG,GAE1CE,CACT,CAEIf,GAAUA,EAAO,QACnBA,EAAO,QAAUW,EACRT,GAAUA,EAAO,IAC1BA,EAAO,UAAW,CAAE,OAAOS,CAAM,CAAC,EAElC,KAAK,OAASA,CAGhB,GACEZ,GACC,OAAOC,IAAW,UAAYA,GAC9B,OAAO,QAAW,YAAc,MACnC,ICnFA,IAAAmB,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EAKC,SAASC,EAAQD,EAAQE,EAAQ,CAElC,SAASC,EAAOC,EAAM,CACpB,IAAIC,EAAK,KAGTA,EAAG,KAAO,UAAW,CAEnB,IAAIC,EAAID,EAAG,EAAGE,EAAIF,EAAG,EAAGG,EAAGC,EAAGC,EAC9B,OAAAF,EAAIF,EAAEC,CAAC,EAAGC,GAAMA,IAAM,EAAIC,EAAID,EAAKA,GAAK,GACxCA,EAAIF,EAAGC,EAAI,EAAK,CAAC,EAAGE,GAAKD,EAAKA,IAAM,GACpCA,EAAIF,EAAGC,EAAI,EAAK,CAAC,EAAGE,GAAKD,EAAKA,IAAM,EACpCA,EAAIF,EAAGC,EAAI,EAAK,CAAC,EAAGE,GAAKD,EAAKA,GAAK,EACnCA,EAAIF,EAAGC,EAAI,EAAK,CAAC,EAAGC,EAAIA,EAAKA,GAAK,GAAKC,GAAKD,EAAKA,GAAK,EACtDF,EAAEC,CAAC,EAAIE,EACPJ,EAAG,EAAKE,EAAI,EAAK,EACVE,CACT,EAEA,SAASE,EAAKN,EAAID,EAAM,CACtB,IAAIQ,EAAGF,EAAGJ,EAAI,CAAC,EAEf,GAAIF,KAAUA,EAAO,GAEnBM,EAAIJ,EAAE,CAAC,EAAIF,MAIX,KADAA,EAAO,GAAKA,EACPQ,EAAI,EAAGA,EAAIR,EAAK,OAAQ,EAAEQ,EAC7BN,EAAEM,EAAI,CAAC,EAAKN,EAAEM,EAAI,CAAC,GAAK,GACnBR,EAAK,WAAWQ,CAAC,EAAIN,EAAGM,EAAI,EAAK,CAAC,GAAK,GAIhD,KAAON,EAAE,OAAS,GAAGA,EAAE,KAAK,CAAC,EAC7B,IAAKM,EAAI,EAAGA,EAAI,GAAKN,EAAEM,CAAC,IAAM,EAAG,EAAEA,EAAE,CAOrC,IANIA,GAAK,EAAGF,EAAIJ,EAAE,CAAC,EAAI,GAASI,EAAIJ,EAAEM,CAAC,EAEvCP,EAAG,EAAIC,EACPD,EAAG,EAAI,EAGFO,EAAI,IAAKA,EAAI,EAAG,EAAEA,EACrBP,EAAG,KAAK,CAEZ,CAEAM,EAAKN,EAAID,CAAI,CACf,CAEA,SAASS,EAAKC,EAAGN,EAAG,CAClB,OAAAA,EAAE,EAAIM,EAAE,EAAE,MAAM,EAChBN,EAAE,EAAIM,EAAE,EACDN,CACT,CAEA,SAASO,EAAKX,EAAMY,EAAM,CACpBZ,GAAQ,OAAMA,EAAO,CAAE,IAAI,MAC/B,IAAIa,EAAK,IAAId,EAAOC,CAAI,EACpBc,EAAQF,GAAQA,EAAK,MACrBG,EAAO,UAAW,CAAE,OAAQF,EAAG,KAAK,IAAM,GAAK,UAAa,EAChE,OAAAE,EAAK,OAAS,UAAW,CACvB,EACE,KAAIC,EAAMH,EAAG,KAAK,IAAM,GACpBI,GAAOJ,EAAG,KAAK,IAAM,GAAK,WAC1BK,GAAUF,EAAMC,IAAQ,GAAK,UAC1BC,IAAW,GACpB,OAAOA,CACT,EACAH,EAAK,MAAQF,EAAG,KAChBE,EAAK,MAAQA,EACTD,IACEA,EAAM,GAAGL,EAAKK,EAAOD,CAAE,EAC3BE,EAAK,MAAQ,UAAW,CAAE,OAAON,EAAKI,EAAI,CAAC,CAAC,CAAG,GAE1CE,CACT,CAEInB,GAAUA,EAAO,QACnBA,EAAO,QAAUe,EACRb,GAAUA,EAAO,IAC1BA,EAAO,UAAW,CAAE,OAAOa,CAAM,CAAC,EAElC,KAAK,UAAYA,CAGnB,GACEhB,GACC,OAAOC,IAAW,UAAYA,GAC9B,OAAO,QAAW,YAAc,MACnC,IC/FA,IAAAuB,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EAyBC,SAASC,EAAQD,EAAQE,EAAQ,CAElC,SAASC,EAAOC,EAAM,CACpB,IAAIC,EAAK,KAGTA,EAAG,KAAO,UAAW,CACnB,IAAIC,EAAID,EAAG,EACPE,EAAIF,EAAG,EAAGG,EAAIH,EAAG,EAAGI,EAAGC,EAE3B,OAAAL,EAAG,EAAIC,EAAKA,EAAI,WAAc,EAE9BI,EAAIH,EAAGC,EAAI,GAAM,GAAG,EACpBC,EAAIF,EAAEC,EAAMA,EAAI,EAAK,GAAI,EACzBE,GAAKA,GAAK,GACVD,GAAKA,GAAK,GACVC,GAAKA,IAAM,GACXD,GAAKA,IAAM,GAEXC,EAAIH,EAAEC,CAAC,EAAIE,EAAID,EACfJ,EAAG,EAAIG,EAECE,GAAKJ,EAAKA,IAAM,IAAQ,CAClC,EAEA,SAASK,EAAKN,EAAID,EAAM,CACtB,IAAIK,EAAGC,EAAGF,EAAGI,EAAGN,EAAGC,EAAI,CAAC,EAAGM,EAAQ,IAYnC,IAXIT,KAAUA,EAAO,IAEnBM,EAAIN,EACJA,EAAO,OAGPA,EAAOA,EAAO,KACdM,EAAI,EACJG,EAAQ,KAAK,IAAIA,EAAOT,EAAK,MAAM,GAGhCI,EAAI,EAAGI,EAAI,IAAKA,EAAIC,EAAO,EAAED,EAE5BR,IAAMM,GAAKN,EAAK,YAAYQ,EAAI,IAAMR,EAAK,MAAM,GAEjDQ,IAAM,IAAGN,EAAII,GACjBA,GAAKA,GAAK,GACVA,GAAKA,IAAM,GACXA,GAAKA,GAAK,EACVA,GAAKA,IAAM,GACPE,GAAK,IACPN,EAAKA,EAAI,WAAc,EACvBG,EAAKF,EAAEK,EAAI,GAAG,GAAMF,EAAIJ,EACxBE,EAAUC,GAAL,EAAUD,EAAI,EAAI,GAW3B,IAPIA,GAAK,MACPD,GAAGH,GAAQA,EAAK,QAAU,GAAK,GAAG,EAAI,IAKxCI,EAAI,IACCI,EAAI,EAAI,IAAKA,EAAI,EAAG,EAAEA,EACzBF,EAAIH,EAAGC,EAAI,GAAM,GAAG,EACpBC,EAAIF,EAAEC,EAAMA,EAAI,EAAK,GAAI,EACzBE,GAAKA,GAAK,GACVD,GAAKA,GAAK,GACVC,GAAKA,IAAM,GACXD,GAAKA,IAAM,GACXF,EAAEC,CAAC,EAAIE,EAAID,EAGbJ,EAAG,EAAIC,EACPD,EAAG,EAAIE,EACPF,EAAG,EAAIG,CACT,CAEAG,EAAKN,EAAID,CAAI,CACf,CAEA,SAASU,EAAKC,EAAGN,EAAG,CAClB,OAAAA,EAAE,EAAIM,EAAE,EACRN,EAAE,EAAIM,EAAE,EACRN,EAAE,EAAIM,EAAE,EAAE,MAAM,EACTN,CACT,CAEA,SAASO,EAAKZ,EAAMa,EAAM,CACpBb,GAAQ,OAAMA,EAAO,CAAE,IAAI,MAC/B,IAAIc,EAAK,IAAIf,EAAOC,CAAI,EACpBe,EAAQF,GAAQA,EAAK,MACrBG,EAAO,UAAW,CAAE,OAAQF,EAAG,KAAK,IAAM,GAAK,UAAa,EAChE,OAAAE,EAAK,OAAS,UAAW,CACvB,EACE,KAAIC,EAAMH,EAAG,KAAK,IAAM,GACpBI,GAAOJ,EAAG,KAAK,IAAM,GAAK,WAC1BK,GAAUF,EAAMC,IAAQ,GAAK,UAC1BC,IAAW,GACpB,OAAOA,CACT,EACAH,EAAK,MAAQF,EAAG,KAChBE,EAAK,MAAQA,EACTD,IACEA,EAAM,GAAGL,EAAKK,EAAOD,CAAE,EAC3BE,EAAK,MAAQ,UAAW,CAAE,OAAON,EAAKI,EAAI,CAAC,CAAC,CAAG,GAE1CE,CACT,CAEIpB,GAAUA,EAAO,QACnBA,EAAO,QAAUgB,EACRd,GAAUA,EAAO,IAC1BA,EAAO,UAAW,CAAE,OAAOc,CAAM,CAAC,EAElC,KAAK,QAAUA,CAGjB,GACEjB,GACC,OAAOC,IAAW,UAAYA,GAC9B,OAAO,QAAW,YAAc,MACnC,ICjJA,IAAAwB,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EAIC,SAASC,EAAQD,EAAQE,EAAQ,CAElC,SAASC,EAAOC,EAAM,CACpB,IAAIC,EAAK,KAAMC,EAAU,GAGzBD,EAAG,KAAO,UAAW,CACnB,IAAIE,EAAIF,EAAG,EAAGG,EAAIH,EAAG,EAAGI,EAAIJ,EAAG,EAAGK,EAAIL,EAAG,EACzC,OAAAE,EAAKA,GAAK,GAAOA,IAAM,EAAKC,EAC5BA,EAAKA,EAAIC,EAAK,EACdA,EAAKA,GAAK,GAAOA,IAAM,EAAKC,EAC5BA,EAAKA,EAAIH,EAAK,EACdF,EAAG,EAAIE,EAAKA,GAAK,GAAOA,IAAM,GAAMC,EACpCH,EAAG,EAAIG,EAAKA,EAAIC,EAAK,EACrBJ,EAAG,EAAKI,GAAK,GAAOD,IAAM,GAAME,EACzBL,EAAG,EAAKK,EAAIH,EAAK,CAC1B,EAkBAF,EAAG,EAAI,EACPA,EAAG,EAAI,EACPA,EAAG,EAAI,YACPA,EAAG,EAAI,WAEHD,IAAS,KAAK,MAAMA,CAAI,GAE1BC,EAAG,EAAKD,EAAO,WAAe,EAC9BC,EAAG,EAAID,EAAO,GAGdE,GAAWF,EAIb,QAASO,EAAI,EAAGA,EAAIL,EAAQ,OAAS,GAAIK,IACvCN,EAAG,GAAKC,EAAQ,WAAWK,CAAC,EAAI,EAChCN,EAAG,KAAK,CAEZ,CAEA,SAASO,EAAKC,EAAGC,EAAG,CAClB,OAAAA,EAAE,EAAID,EAAE,EACRC,EAAE,EAAID,EAAE,EACRC,EAAE,EAAID,EAAE,EACRC,EAAE,EAAID,EAAE,EACDC,CACT,CAEA,SAASC,EAAKX,EAAMY,EAAM,CACxB,IAAIC,EAAK,IAAId,EAAOC,CAAI,EACpBc,EAAQF,GAAQA,EAAK,MACrBG,EAAO,UAAW,CAAE,OAAQF,EAAG,KAAK,IAAM,GAAK,UAAa,EAChE,OAAAE,EAAK,OAAS,UAAW,CACvB,EACE,KAAIC,EAAMH,EAAG,KAAK,IAAM,GACpBI,GAAOJ,EAAG,KAAK,IAAM,GAAK,WAC1BK,GAAUF,EAAMC,IAAQ,GAAK,UAC1BC,IAAW,GACpB,OAAOA,CACT,EACAH,EAAK,MAAQF,EAAG,KAChBE,EAAK,MAAQA,EACTD,IACE,OAAOA,GAAU,UAAUN,EAAKM,EAAOD,CAAE,EAC7CE,EAAK,MAAQ,UAAW,CAAE,OAAOP,EAAKK,EAAI,CAAC,CAAC,CAAG,GAE1CE,CACT,CAEInB,GAAUA,EAAO,QACnBA,EAAO,QAAUe,EACRb,GAAUA,EAAO,IAC1BA,EAAO,UAAW,CAAE,OAAOa,CAAM,CAAC,EAElC,KAAK,OAASA,CAGhB,GACEhB,GACC,OAAOC,IAAW,UAAYA,GAC9B,OAAO,QAAW,YAAc,MACnC,sBCpGA,IAAAuB,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EAwBC,SAAUC,EAAQC,EAAMC,EAAM,CAK/B,IAAIC,EAAQ,IACRC,EAAS,EACTC,EAAS,GACTC,EAAU,SACVC,EAAaL,EAAK,IAAIC,EAAOC,CAAM,EACnCI,EAAeN,EAAK,IAAI,EAAGG,CAAM,EACjCI,EAAWD,EAAe,EAC1BE,EAAOP,EAAQ,EACfQ,EAMJ,SAASC,EAAWC,EAAMC,EAASC,EAAU,CAC3C,IAAIC,EAAM,CAAC,EACXF,EAAWA,GAAW,GAAQ,CAAE,QAAS,EAAK,EAAKA,GAAW,CAAC,EAG/D,IAAIG,EAAYC,EAAOC,EACrBL,EAAQ,QAAU,CAACD,EAAMO,EAASnB,CAAI,CAAC,EACtCY,GAAgBQ,EAAS,EAAU,CAAC,EAAGL,CAAG,EAGzCM,EAAO,IAAIC,EAAKP,CAAG,EAInBQ,EAAO,UAAW,CAIpB,QAHIC,EAAIH,EAAK,EAAElB,CAAM,EACjBsB,EAAInB,EACJoB,EAAI,EACDF,EAAIjB,GACTiB,GAAKA,EAAIE,GAAKxB,EACduB,GAAKvB,EACLwB,EAAIL,EAAK,EAAE,CAAC,EAEd,KAAOG,GAAKhB,GACVgB,GAAK,EACLC,GAAK,EACLC,KAAO,EAET,OAAQF,EAAIE,GAAKD,CACnB,EAEA,OAAAF,EAAK,MAAQ,UAAW,CAAE,OAAOF,EAAK,EAAE,CAAC,EAAI,CAAG,EAChDE,EAAK,MAAQ,UAAW,CAAE,OAAOF,EAAK,EAAE,CAAC,EAAI,UAAa,EAC1DE,EAAK,OAASA,EAGdN,EAAOE,EAASE,EAAK,CAAC,EAAGrB,CAAI,GAGrBa,EAAQ,MAAQC,GACpB,SAASS,EAAMX,EAAMe,EAAcC,EAAO,CAUxC,OATIA,IAEEA,EAAM,GAAKC,EAAKD,EAAOP,CAAI,EAE/BE,EAAK,MAAQ,UAAW,CAAE,OAAOM,EAAKR,EAAM,CAAC,CAAC,CAAG,GAK/CM,GAAgB1B,EAAKI,CAAO,EAAIkB,EAAaX,GAIrCW,CACd,GACJA,EACAP,EACA,WAAYH,EAAUA,EAAQ,OAAU,MAAQZ,EAChDY,EAAQ,KAAK,CACf,CAYA,SAASS,EAAKP,EAAK,CACjB,IAAIe,EAAGC,EAAShB,EAAI,OAChBiB,EAAK,KAAMC,EAAI,EAAGC,EAAIF,EAAG,EAAIA,EAAG,EAAI,EAAGG,EAAIH,EAAG,EAAI,CAAC,EAMvD,IAHKD,IAAUhB,EAAM,CAACgB,GAAQ,GAGvBE,EAAI/B,GACTiC,EAAEF,CAAC,EAAIA,IAET,IAAKA,EAAI,EAAGA,EAAI/B,EAAO+B,IACrBE,EAAEF,CAAC,EAAIE,EAAED,EAAIzB,EAAQyB,EAAInB,EAAIkB,EAAIF,CAAM,GAAKD,EAAIK,EAAEF,CAAC,EAAG,EACtDE,EAAED,CAAC,EAAIJ,GAIRE,EAAG,EAAI,SAASI,EAAO,CAItB,QAFIN,EAAGO,EAAI,EACPJ,EAAID,EAAG,EAAGE,EAAIF,EAAG,EAAGG,EAAIH,EAAG,EACxBI,KACLN,EAAIK,EAAEF,EAAIxB,EAAQwB,EAAI,CAAE,EACxBI,EAAIA,EAAInC,EAAQiC,EAAE1B,GAAS0B,EAAEF,CAAC,EAAIE,EAAED,EAAIzB,EAAQyB,EAAIJ,CAAE,IAAMK,EAAED,CAAC,EAAIJ,EAAG,EAExE,OAAAE,EAAG,EAAIC,EAAGD,EAAG,EAAIE,EACVG,CAIT,GAAGnC,CAAK,CACV,CAMA,SAAS2B,EAAKS,EAAGR,EAAG,CAClB,OAAAA,EAAE,EAAIQ,EAAE,EACRR,EAAE,EAAIQ,EAAE,EACRR,EAAE,EAAIQ,EAAE,EAAE,MAAM,EACTR,CACT,CAMA,SAASZ,EAAQqB,EAAKC,EAAO,CAC3B,IAAIC,EAAS,CAAC,EAAGC,EAAO,OAAOH,EAAMI,EACrC,GAAIH,GAASE,GAAO,SAClB,IAAKC,KAAQJ,EACX,GAAI,CAAEE,EAAO,KAAKvB,EAAQqB,EAAII,CAAI,EAAGH,EAAQ,CAAC,CAAC,CAAG,MAAY,CAAC,CAGnE,OAAQC,EAAO,OAASA,EAASC,GAAO,SAAWH,EAAMA,EAAM,IACjE,CAOA,SAAStB,EAAOL,EAAMG,EAAK,CAEzB,QADI6B,EAAahC,EAAO,GAAIiC,EAAOX,EAAI,EAChCA,EAAIU,EAAW,QACpB7B,EAAIN,EAAOyB,CAAC,EACVzB,GAASoC,GAAS9B,EAAIN,EAAOyB,CAAC,EAAI,IAAMU,EAAW,WAAWV,GAAG,EAErE,OAAOf,EAASJ,CAAG,CACrB,CAOA,SAASK,GAAW,CAClB,GAAI,CACF,IAAI0B,EACJ,OAAIpC,IAAeoC,EAAMpC,EAAW,aAElCoC,EAAMA,EAAI5C,CAAK,GAEf4C,EAAM,IAAI,WAAW5C,CAAK,GACzBH,EAAO,QAAUA,EAAO,UAAU,gBAAgB+C,CAAG,GAEjD3B,EAAS2B,CAAG,CACrB,MAAY,CACV,IAAIC,EAAUhD,EAAO,UACjBiD,EAAUD,GAAWA,EAAQ,QACjC,MAAO,CAAC,CAAC,IAAI,KAAMhD,EAAQiD,EAASjD,EAAO,OAAQoB,EAASnB,CAAI,CAAC,CACnE,CACF,CAMA,SAASmB,EAAS8B,EAAG,CACnB,OAAO,OAAO,aAAa,MAAM,EAAGA,CAAC,CACvC,CAeA,GANAhC,EAAOhB,EAAK,OAAO,EAAGD,CAAI,EAMrB,OAAOF,IAAW,UAAYA,GAAO,QAAS,CACjDA,GAAO,QAAUa,EAEjB,GAAI,CACFD,EAAa,IACf,MAAa,CAAC,CAChB,MAAY,OAAO,QAAW,YAAc,OAAO,IACjD,OAAO,UAAW,CAAE,OAAOC,CAAY,CAAC,EAGxCV,EAAK,OAASI,CAAO,EAAIM,CAK3B,GAGG,OAAO,KAAS,IAAe,KAAOd,GACvC,CAAC,EACD,IACF,IC5PA,IAAAqD,GAAAC,GAAA,CAAAC,IAAAC,KAAA,CAYA,IAAIC,IAAO,KAKPC,IAAS,KAKTC,IAAS,KAQTC,IAAY,KASZC,IAAU,KAOVC,IAAS,KAITC,GAAK,KAETA,GAAG,KAAON,IACVM,GAAG,OAASL,IACZK,GAAG,OAASJ,IACZI,GAAG,UAAYH,IACfG,GAAG,QAAUF,IACbE,GAAG,OAASD,IAEZN,GAAO,QAAUO,KC3DjB,IAAAC,GAAAC,GAAA,CAAAC,IAAAC,KAAA,UAASC,IAAK,CAGd,CAEAA,GAAE,UAAY,CACZ,GAAI,SAAUC,EAAMC,EAAUC,EAAK,CACjC,IAAIC,EAAI,KAAK,IAAM,KAAK,EAAI,CAAC,GAE7B,OAACA,EAAEH,CAAI,IAAMG,EAAEH,CAAI,EAAI,CAAC,IAAI,KAAK,CAC/B,GAAIC,EACJ,IAAKC,CACP,CAAC,EAEM,IACT,EAEA,KAAM,SAAUF,EAAMC,EAAUC,EAAK,CACnC,IAAIE,EAAO,KACX,SAASC,GAAY,CACnBD,EAAK,IAAIJ,EAAMK,CAAQ,EACvBJ,EAAS,MAAMC,EAAK,SAAS,CAC/B,CAEA,OAAAG,EAAS,EAAIJ,EACN,KAAK,GAAGD,EAAMK,EAAUH,CAAG,CACpC,EAEA,KAAM,SAAUF,EAAM,CACpB,IAAIM,EAAO,CAAC,EAAE,MAAM,KAAK,UAAW,CAAC,EACjCC,IAAW,KAAK,IAAM,KAAK,EAAI,CAAC,IAAIP,CAAI,GAAK,CAAC,GAAG,MAAM,EACvDQ,EAAI,EACJC,EAAMF,EAAO,OAEjB,IAAKC,EAAGA,EAAIC,EAAKD,IACfD,EAAOC,CAAC,EAAE,GAAG,MAAMD,EAAOC,CAAC,EAAE,IAAKF,CAAI,EAGxC,OAAO,IACT,EAEA,IAAK,SAAUN,EAAMC,EAAU,CAC7B,IAAIE,EAAI,KAAK,IAAM,KAAK,EAAI,CAAC,GACzBO,EAAOP,EAAEH,CAAI,EACbW,EAAa,CAAC,EAElB,GAAID,GAAQT,EACV,QAASO,EAAI,EAAGC,EAAMC,EAAK,OAAQF,EAAIC,EAAKD,IACtCE,EAAKF,CAAC,EAAE,KAAOP,GAAYS,EAAKF,CAAC,EAAE,GAAG,IAAMP,GAC9CU,EAAW,KAAKD,EAAKF,CAAC,CAAC,EAQ7B,OAACG,EAAW,OACRR,EAAEH,CAAI,EAAIW,EACV,OAAOR,EAAEH,CAAI,EAEV,IACT,CACF,EAEAF,GAAO,QAAUC,GACjBD,GAAO,QAAQ,YAAcC,KClE7B,IAAAa,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EAAC,SAAUC,EAAQC,EAAS,CACpB,OAAOH,IAAY,SACnBC,GAAO,QAAUE,EAAQ,EAClB,OAAO,QAAW,YAAc,OAAO,IAC9C,OAAOA,CAAO,EAEdD,EAAO,MAAQC,EAAQ,CAE/B,GAAGH,GAAM,UAAY,CACrB,IAAII,EAAS,SAASC,EAAMC,EAAW,CAGvC,IAAIC,EAAS,MAAM,UAAU,OACzBC,EAAQ,MAAM,UAAU,MACxBC,EAAW,OAAO,UAAU,SAIhC,SAASC,EAAQC,EAAGC,EAAG,CACrB,IAAIC,EAAMF,EAAIC,EAAID,EAAIC,EACtB,OAAOP,EAAK,IAAI,GACA,GAAK,CAAC,EAAEA,EAAK,IAAMQ,EAAM,EAAKA,EAAM,CAACA,CAAI,EAAIR,EAAK,OAAO,CAC3E,CAGA,IAAIS,EAAU,MAAM,SAAW,SAAiBC,EAAK,CACnD,OAAON,EAAS,KAAKM,CAAG,IAAM,gBAChC,EAGA,SAASC,EAAWD,EAAK,CACvB,OAAON,EAAS,KAAKM,CAAG,IAAM,mBAChC,CAGA,SAASE,EAASC,EAAK,CACrB,OAAQ,OAAOA,GAAQ,SAAYA,EAAMA,IAAQ,EAAI,EACvD,CAIA,SAASC,EAASC,EAAK,CACrB,OAAOb,EAAO,MAAM,CAAC,EAAGa,CAAG,CAC7B,CAIA,SAAShB,GAAQ,CACf,OAAO,IAAIA,EAAM,MAAM,SAAS,CAClC,CAIAA,EAAM,GAAKA,EAAM,UAKjBA,EAAM,MAAQ,SAAeiB,EAAM,CAEjC,GAAIP,EAAQO,EAAK,CAAC,CAAC,EAEjB,GAAIP,EAAQO,EAAK,CAAC,EAAE,CAAC,CAAC,EAAG,CAEnBL,EAAWK,EAAK,CAAC,CAAC,IACpBA,EAAK,CAAC,EAAIjB,EAAM,IAAIiB,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,GAEtC,QAASC,EAAI,EAAGA,EAAID,EAAK,CAAC,EAAE,OAAQC,IAClC,KAAKA,CAAC,EAAID,EAAK,CAAC,EAAEC,CAAC,EACrB,KAAK,OAASD,EAAK,CAAC,EAAE,MAGxB,MACE,KAAK,CAAC,EAAIL,EAAWK,EAAK,CAAC,CAAC,EAAIjB,EAAM,IAAIiB,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,EAAIA,EAAK,CAAC,EACpE,KAAK,OAAS,UAIPJ,EAASI,EAAK,CAAC,CAAC,EACzB,KAAK,CAAC,EAAIjB,EAAM,IAAI,MAAM,KAAMiB,CAAI,EACpC,KAAK,OAAS,MAGT,IAAIA,EAAK,CAAC,YAAajB,EAE5B,OAAOA,EAAMiB,EAAK,CAAC,EAAE,QAAQ,CAAC,EAM9B,KAAK,CAAC,EAAI,CAAC,EACX,KAAK,OAAS,EAGhB,OAAO,IACT,EACAjB,EAAM,MAAM,UAAYA,EAAM,UAC9BA,EAAM,MAAM,YAAcA,EAK1BA,EAAM,MAAQ,CACZ,QAASM,EACT,QAASI,EACT,WAAYE,EACZ,SAAUC,EACV,SAAUE,CACZ,EAGAf,EAAM,WAAaC,EAAK,OACxBD,EAAM,UAAY,SAAmBmB,EAAI,CACvC,GAAI,OAAOA,GAAO,WAChB,MAAM,IAAI,UAAU,sBAAsB,EAC5CnB,EAAM,WAAamB,CACrB,EAKAnB,EAAM,OAAS,SAAgBoB,EAAK,CAClC,IAAIF,EAAGG,EAEP,GAAI,UAAU,SAAW,EAAG,CAC1B,IAAKA,KAAKD,EACRpB,EAAMqB,CAAC,EAAID,EAAIC,CAAC,EAClB,OAAO,IACT,CAEA,IAAKH,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAChC,IAAKG,KAAK,UAAUH,CAAC,EACnBE,EAAIC,CAAC,EAAI,UAAUH,CAAC,EAAEG,CAAC,EAG3B,OAAOD,CACT,EAIApB,EAAM,KAAO,SAAcgB,EAAK,CAC9B,OAAOA,EAAI,QAAU,CACvB,EAIAhB,EAAM,KAAO,SAAcgB,EAAK,CAC9B,OAAOA,EAAI,CAAC,EAAE,QAAU,CAC1B,EAIAhB,EAAM,WAAa,SAAoBgB,EAAK,CAC1C,MAAO,CACL,KAAMhB,EAAM,KAAKgB,CAAG,EACpB,KAAMhB,EAAM,KAAKgB,CAAG,CACtB,CACF,EAIAhB,EAAM,IAAM,SAAagB,EAAKM,EAAO,CACnC,OAAIZ,EAAQY,CAAK,EACRA,EAAM,IAAI,SAASJ,EAAG,CAC3B,OAAOlB,EAAM,IAAIgB,EAAKE,CAAC,CACzB,CAAC,EAEIF,EAAIM,CAAK,CAClB,EAKAtB,EAAM,KAAO,SAAcgB,EAAKE,EAAG,CACjC,OAAOlB,EAAM,IAAIgB,EAAKE,CAAC,CACzB,EAKAlB,EAAM,IAAM,SAAagB,EAAKM,EAAO,CACnC,GAAIZ,EAAQY,CAAK,EAAG,CAClB,IAAIC,EAASvB,EAAM,OAAOgB,EAAI,MAAM,EAAE,IAAI,UAAW,CACnD,OAAO,IAAI,MAAMM,EAAM,MAAM,CAC/B,CAAC,EACD,OAAAA,EAAM,QAAQ,SAASE,EAAKN,EAAE,CAC5BlB,EAAM,OAAOgB,EAAI,MAAM,EAAE,QAAQ,SAASK,EAAG,CAC3CE,EAAOF,CAAC,EAAEH,CAAC,EAAIF,EAAIK,CAAC,EAAEG,CAAG,CAC3B,CAAC,CACH,CAAC,EACMD,CACT,CAEA,QADIE,EAAS,IAAI,MAAMT,EAAI,MAAM,EACxBE,EAAI,EAAGA,EAAIF,EAAI,OAAQE,IAC9BO,EAAOP,CAAC,EAAI,CAACF,EAAIE,CAAC,EAAEI,CAAK,CAAC,EAC5B,OAAOG,CACT,EAKAzB,EAAM,KAAO,SAAcgB,EAAKE,EAAG,CACjC,OAAOlB,EAAM,IAAIgB,EAAKE,CAAC,EAAE,IAAI,SAASQ,EAAE,CAAE,OAAOA,EAAE,CAAC,CAAE,CAAC,CACzD,EAIA1B,EAAM,KAAO,SAAcgB,EAAK,CAG9B,QAFIW,EAAO3B,EAAM,KAAKgB,CAAG,EACrBY,EAAM,IAAI,MAAMD,CAAI,EACfE,EAAM,EAAGA,EAAMF,EAAME,IAC5BD,EAAIC,CAAG,EAAI,CAACb,EAAIa,CAAG,EAAEA,CAAG,CAAC,EAC3B,OAAOD,CACT,EAIA5B,EAAM,SAAW,SAAkBgB,EAAK,CAGtC,QAFIW,EAAO3B,EAAM,KAAKgB,CAAG,EAAI,EACzBY,EAAM,IAAI,MAAMD,CAAI,EACfT,EAAI,EAAGS,GAAQ,EAAGA,IAAQT,IACjCU,EAAIV,CAAC,EAAI,CAACF,EAAIE,CAAC,EAAES,CAAI,CAAC,EACxB,OAAOC,CACT,EAGA5B,EAAM,UAAY,SAAmBgB,EAAK,CACxC,IAAII,EAAM,CAAC,EACPU,EAAQC,EAAMC,EAAMX,EAAGH,EAS3B,IANKR,EAAQM,EAAI,CAAC,CAAC,IACjBA,EAAM,CAACA,CAAG,GAEZe,EAAOf,EAAI,OACXgB,EAAOhB,EAAI,CAAC,EAAE,OAETE,EAAI,EAAGA,EAAIc,EAAMd,IAAK,CAEzB,IADAY,EAAS,IAAI,MAAMC,CAAI,EAClBV,EAAI,EAAGA,EAAIU,EAAMV,IACpBS,EAAOT,CAAC,EAAIL,EAAIK,CAAC,EAAEH,CAAC,EACtBE,EAAI,KAAKU,CAAM,CACjB,CAGA,OAAOV,EAAI,SAAW,EAAIA,EAAI,CAAC,EAAIA,CACrC,EAKApB,EAAM,IAAM,SAAagB,EAAKiB,EAAMC,EAAS,CAC3C,IAAIL,EAAKF,EAAMQ,EAAMP,EAAKQ,EAS1B,IAPK1B,EAAQM,EAAI,CAAC,CAAC,IACjBA,EAAM,CAACA,CAAG,GAEZW,EAAOX,EAAI,OACXmB,EAAOnB,EAAI,CAAC,EAAE,OACdY,EAAMM,EAAUlB,EAAM,IAAI,MAAMW,CAAI,EAE/BE,EAAM,EAAGA,EAAMF,EAAME,IAIxB,IAFKD,EAAIC,CAAG,IACVD,EAAIC,CAAG,EAAI,IAAI,MAAMM,CAAI,GACtBC,EAAM,EAAGA,EAAMD,EAAMC,IACxBR,EAAIC,CAAG,EAAEO,CAAG,EAAIH,EAAKjB,EAAIa,CAAG,EAAEO,CAAG,EAAGP,EAAKO,CAAG,EAGhD,OAAOR,EAAI,SAAW,EAAIA,EAAI,CAAC,EAAIA,CACrC,EAIA5B,EAAM,UAAY,SAAmBgB,EAAKiB,EAAMC,EAAS,CACvD,IAAIL,EAAKF,EAAMQ,EAAMP,EAAKQ,EAS1B,IAPK1B,EAAQM,EAAI,CAAC,CAAC,IACjBA,EAAM,CAACA,CAAG,GAEZW,EAAOX,EAAI,OACXmB,EAAOnB,EAAI,CAAC,EAAE,OACdY,EAAMM,EAAUlB,EAAM,IAAI,MAAMW,CAAI,EAE/BE,EAAM,EAAGA,EAAMF,EAAME,IAMxB,IAJKD,EAAIC,CAAG,IACVD,EAAIC,CAAG,EAAI,IAAI,MAAMM,CAAI,GACvBA,EAAO,IACTP,EAAIC,CAAG,EAAE,CAAC,EAAIb,EAAIa,CAAG,EAAE,CAAC,GACrBO,EAAM,EAAGA,EAAMD,EAAMC,IACxBR,EAAIC,CAAG,EAAEO,CAAG,EAAIH,EAAKL,EAAIC,CAAG,EAAEO,EAAI,CAAC,EAAGpB,EAAIa,CAAG,EAAEO,CAAG,CAAC,EAEvD,OAAOR,EAAI,SAAW,EAAIA,EAAI,CAAC,EAAIA,CACrC,EAIA5B,EAAM,MAAQ,SAAegB,EAAKiB,EAAM,CACtC,OAAOjC,EAAM,IAAIgB,EAAKiB,EAAM,EAAI,CAClC,EAIAjC,EAAM,OAAS,SAAiB+B,EAAMC,EAAMC,EAAM,CAChD,IAAIL,EAAM,IAAI,MAAMG,CAAI,EACpBb,EAAGG,EAOP,IALIT,EAAWoB,CAAI,IACjBC,EAAOD,EACPA,EAAOD,GAGJb,EAAI,EAAGA,EAAIa,EAAMb,IAEpB,IADAU,EAAIV,CAAC,EAAI,IAAI,MAAMc,CAAI,EAClBX,EAAI,EAAGA,EAAIW,EAAMX,IACpBO,EAAIV,CAAC,EAAEG,CAAC,EAAIY,EAAKf,EAAGG,CAAC,EAGzB,OAAOO,CACT,EAGA,SAASS,GAAU,CAAE,MAAO,EAAG,CAI/BrC,EAAM,MAAQ,SAAe+B,EAAMC,EAAM,CACvC,OAAKnB,EAASmB,CAAI,IAChBA,EAAOD,GACF/B,EAAM,OAAO+B,EAAMC,EAAMK,CAAO,CACzC,EAGA,SAASC,GAAS,CAAE,MAAO,EAAG,CAI9BtC,EAAM,KAAO,SAAc+B,EAAMC,EAAM,CACrC,OAAKnB,EAASmB,CAAI,IAChBA,EAAOD,GACF/B,EAAM,OAAO+B,EAAMC,EAAMM,CAAM,CACxC,EAIAtC,EAAM,KAAO,SAAc+B,EAAMC,EAAM,CACrC,OAAKnB,EAASmB,CAAI,IAChBA,EAAOD,GACF/B,EAAM,OAAO+B,EAAMC,EAAMhC,EAAM,UAAU,CAClD,EAGA,SAASuC,EAASrB,EAAGG,EAAG,CAAE,OAAOH,IAAMG,EAAI,EAAI,CAAG,CAIlDrB,EAAM,SAAW,SAAkB+B,EAAMC,EAAM,CAC7C,OAAKnB,EAASmB,CAAI,IAChBA,EAAOD,GACF/B,EAAM,OAAO+B,EAAMC,EAAMO,CAAQ,CAC1C,EAIAvC,EAAM,UAAY,SAAmBgB,EAAK,CACxC,IAAIwB,EAAOxB,EAAI,OACXa,EAAKO,EAET,GAAIpB,EAAI,SAAWA,EAAI,CAAC,EAAE,OACxB,MAAO,GAET,IAAKa,EAAM,EAAGA,EAAMW,EAAMX,IACxB,IAAKO,EAAM,EAAGA,EAAMI,EAAMJ,IACxB,GAAIpB,EAAIoB,CAAG,EAAEP,CAAG,IAAMb,EAAIa,CAAG,EAAEO,CAAG,EAChC,MAAO,GAGb,MAAO,EACT,EAIApC,EAAM,MAAQ,SAAegB,EAAK,CAChC,OAAOhB,EAAM,MAAMgB,EAAKqB,CAAO,CACjC,EAIArC,EAAM,IAAM,SAAayC,EAAKC,EAAKC,EAAQV,EAAM,CAC1CrB,EAAWqB,CAAI,IAClBA,EAAO,IAET,IAAIjB,EAAM,CAAC,EACP4B,EAAQtC,EAAQmC,EAAKC,CAAG,EACxBG,GAAQH,EAAME,EAAQH,EAAMG,KAAWD,EAAS,GAAKC,GACrDE,EAAUL,EACVM,EAIJ,IAAKA,EAAM,EACND,GAAWJ,GAAOK,EAAMJ,EACxBI,IAAOD,GAAWL,EAAMG,EAAQC,EAAOD,EAAQG,GAAOH,EACzD5B,EAAI,KAAMiB,EAAOA,EAAKa,EAASC,CAAG,EAAID,CAAQ,EAGhD,OAAO9B,CACT,EAMAhB,EAAM,OAAS,SAAgBgD,EAAOC,EAAKJ,EAAM,CAC/C,IAAIK,EAAK,CAAC,EACNhC,EAMJ,GALA2B,EAAOA,GAAQ,EACXI,IAAQ/C,IACV+C,EAAMD,EACNA,EAAQ,GAENA,IAAUC,GAAOJ,IAAS,EAC5B,MAAO,CAAC,EAEV,GAAIG,EAAQC,GAAOJ,EAAO,EACxB,MAAO,CAAC,EAEV,GAAIG,EAAQC,GAAOJ,EAAO,EACxB,MAAO,CAAC,EAEV,GAAIA,EAAO,EACT,IAAK3B,EAAI8B,EAAO9B,EAAI+B,EAAK/B,GAAK2B,EAC5BK,EAAG,KAAKhC,CAAC,MAGX,KAAKA,EAAI8B,EAAO9B,EAAI+B,EAAK/B,GAAK2B,EAC5BK,EAAG,KAAKhC,CAAC,EAGb,OAAOgC,CACT,EAOAlD,EAAM,MAAS,UAAU,CACvB,SAASmD,EAAOC,EAAMJ,EAAOC,EAAKJ,EAAM,CAEtC,IAAI3B,EACAgC,EAAK,CAAC,EACNP,EAASS,EAAK,OAClB,GAAIJ,IAAU9C,GAAa+C,IAAQ/C,GAAa2C,IAAS3C,EACvD,OAAOF,EAAM,KAAKoD,CAAI,EAQxB,GALAJ,EAAQA,GAAS,EACjBC,EAAMA,GAAOG,EAAK,OAClBJ,EAAQA,GAAS,EAAIA,EAAQL,EAASK,EACtCC,EAAMA,GAAO,EAAIA,EAAMN,EAASM,EAChCJ,EAAOA,GAAQ,EACXG,IAAUC,GAAOJ,IAAS,EAC5B,MAAO,CAAC,EAEV,GAAIG,EAAQC,GAAOJ,EAAO,EACxB,MAAO,CAAC,EAEV,GAAIG,EAAQC,GAAOJ,EAAO,EACxB,MAAO,CAAC,EAEV,GAAIA,EAAO,EACT,IAAK3B,EAAI8B,EAAO9B,EAAI+B,EAAK/B,GAAK2B,EAC5BK,EAAG,KAAKE,EAAKlC,CAAC,CAAC,MAGjB,KAAKA,EAAI8B,EAAO9B,EAAI+B,EAAI/B,GAAK2B,EAC3BK,EAAG,KAAKE,EAAKlC,CAAC,CAAC,EAGnB,OAAOgC,CACT,CAEA,SAAS9C,EAAMgD,EAAMC,EAAS,CAC5B,IAAIC,EAAUC,EAEd,GADAF,EAAUA,GAAW,CAAC,EAClBxC,EAASwC,EAAQ,GAAG,EAAG,CACzB,GAAIxC,EAASwC,EAAQ,GAAG,EACtB,OAAOD,EAAKC,EAAQ,GAAG,EAAEA,EAAQ,GAAG,EACtC,IAAIxB,EAAM7B,EAAM,KAAKoD,EAAMC,EAAQ,GAAG,EACtC,OAAAC,EAAWD,EAAQ,KAAO,CAAC,EACpBF,EAAOtB,EAAKyB,EAAS,MAAOA,EAAS,IAAKA,EAAS,IAAI,CAChE,CAEA,GAAIzC,EAASwC,EAAQ,GAAG,EAAG,CACzB,IAAIjB,EAAMpC,EAAM,KAAKoD,EAAMC,EAAQ,GAAG,EACtC,OAAAE,EAAWF,EAAQ,KAAO,CAAC,EACpBF,EAAOf,EAAKmB,EAAS,MAAOA,EAAS,IAAKA,EAAS,IAAI,CAChE,CAEAA,EAAWF,EAAQ,KAAO,CAAC,EAC3BC,EAAWD,EAAQ,KAAO,CAAC,EAC3B,IAAItB,EAAOoB,EAAOC,EAAMG,EAAS,MAAOA,EAAS,IAAKA,EAAS,IAAI,EACnE,OAAOxB,EAAK,IAAI,SAASF,EAAK,CAC5B,OAAOsB,EAAOtB,EAAKyB,EAAS,MAAOA,EAAS,IAAKA,EAAS,IAAI,CAChE,CAAC,CACH,CAEA,OAAOlD,CACT,EAAE,EAMFJ,EAAM,YAAc,SAAqBwD,EAAGH,EAASI,EAAG,CACtD,IAAIC,EAAIC,EACR,GAAI9C,EAASwC,EAAQ,GAAG,EAAG,CACzB,GAAIxC,EAASwC,EAAQ,GAAG,EACtB,OAAOG,EAAEH,EAAQ,GAAG,EAAEA,EAAQ,GAAG,EAAII,EACvCJ,EAAQ,IAAMA,EAAQ,KAAO,CAAC,EAC9BA,EAAQ,IAAI,MAAQA,EAAQ,IAAI,OAAS,EACzCA,EAAQ,IAAI,IAAMA,EAAQ,IAAI,KAAOG,EAAE,CAAC,EAAE,OAC1CH,EAAQ,IAAI,KAAOA,EAAQ,IAAI,MAAQ,EACvCK,EAAK1D,EAAM,OAAOqD,EAAQ,IAAI,MACRpD,EAAK,IAAIuD,EAAE,OAAQH,EAAQ,IAAI,GAAG,EAClCA,EAAQ,IAAI,IAAI,EACtC,IAAI7C,EAAI6C,EAAQ,IAChB,OAAAK,EAAG,QAAQ,SAASnD,EAAGW,EAAG,CACxBsC,EAAEhD,CAAC,EAAED,CAAC,EAAIkD,EAAEvC,CAAC,CACf,CAAC,EACMsC,CACT,CAEA,GAAI3C,EAASwC,EAAQ,GAAG,EAAG,CACzBA,EAAQ,IAAMA,EAAQ,KAAO,CAAC,EAC9BA,EAAQ,IAAI,MAAQA,EAAQ,IAAI,OAAS,EACzCA,EAAQ,IAAI,IAAMA,EAAQ,IAAI,KAAOG,EAAE,OACvCH,EAAQ,IAAI,KAAOA,EAAQ,IAAI,MAAQ,EACvCM,EAAK3D,EAAM,OAAOqD,EAAQ,IAAI,MACRpD,EAAK,IAAIuD,EAAE,CAAC,EAAE,OAAQH,EAAQ,IAAI,GAAG,EACrCA,EAAQ,IAAI,IAAI,EACtC,IAAI9C,EAAI8C,EAAQ,IAChB,OAAAM,EAAG,QAAQ,SAASnD,EAAGa,EAAG,CACxBmC,EAAEhD,CAAC,EAAED,CAAC,EAAIkD,EAAEpC,CAAC,CACf,CAAC,EACMmC,CACT,CAEA,OAAIC,EAAE,CAAC,EAAE,SAAWvD,IAClBuD,EAAI,CAACA,CAAC,GAERJ,EAAQ,IAAI,MAAQA,EAAQ,IAAI,OAAS,EACzCA,EAAQ,IAAI,IAAMA,EAAQ,IAAI,KAAOG,EAAE,OACvCH,EAAQ,IAAI,KAAOA,EAAQ,IAAI,MAAQ,EACvCA,EAAQ,IAAI,MAAQA,EAAQ,IAAI,OAAS,EACzCA,EAAQ,IAAI,IAAMA,EAAQ,IAAI,KAAOG,EAAE,CAAC,EAAE,OAC1CH,EAAQ,IAAI,KAAOA,EAAQ,IAAI,MAAQ,EACvCM,EAAK3D,EAAM,OAAOqD,EAAQ,IAAI,MACRpD,EAAK,IAAIuD,EAAE,OAAQH,EAAQ,IAAI,GAAG,EAClCA,EAAQ,IAAI,IAAI,EACtCK,EAAK1D,EAAM,OAAOqD,EAAQ,IAAI,MACRpD,EAAK,IAAIuD,EAAE,CAAC,EAAE,OAAQH,EAAQ,IAAI,GAAG,EACrCA,EAAQ,IAAI,IAAI,EACtCM,EAAG,QAAQ,SAASnD,EAAGU,EAAG,CACxBwC,EAAG,QAAQ,SAASnD,EAAGc,EAAG,CACxBmC,EAAEhD,CAAC,EAAED,CAAC,EAAIkD,EAAEvC,CAAC,EAAEG,CAAC,CAClB,CAAC,CACH,CAAC,EACMmC,CACT,EAKAxD,EAAM,SAAW,SAAkB4D,EAAW,CAC5C,IAAIC,EAAM7D,EAAM,MAAM4D,EAAU,OAAQA,EAAU,MAAM,EACxD,OAAAA,EAAU,QAAQ,SAASE,EAAG5C,EAAG,CAC/B2C,EAAI3C,CAAC,EAAEA,CAAC,EAAI4C,CACd,CAAC,EACMD,CACT,EAIA7D,EAAM,KAAO,SAAcwD,EAAG,CAC5B,OAAOA,EAAE,IAAI,SAAS3B,EAAK,CACzB,OAAIhB,EAASgB,CAAG,EACPA,EACFA,EAAI,IAAI,SAASiC,EAAG,CACzB,OAAOA,CACT,CAAC,CACH,CAAC,CACH,EAQA,IAAIC,EAAS/D,EAAM,UAGnB,OAAA+D,EAAO,OAAS,EAKhBA,EAAO,KAAO,MAAM,UAAU,KAC9BA,EAAO,KAAO,MAAM,UAAU,KAC9BA,EAAO,OAAS,MAAM,UAAU,OAChCA,EAAO,MAAQ,MAAM,UAAU,MAI/BA,EAAO,QAAU,UAAmB,CAClC,OAAO,KAAK,OAAS,EAAI3D,EAAM,KAAK,IAAI,EAAIA,EAAM,KAAK,IAAI,EAAE,CAAC,CAChE,EAIA2D,EAAO,IAAM,SAAa9B,EAAMC,EAAS,CACvC,OAAOlC,EAAMA,EAAM,IAAI,KAAMiC,EAAMC,CAAO,CAAC,CAC7C,EAIA6B,EAAO,UAAY,SAAmB9B,EAAMC,EAAS,CACnD,OAAOlC,EAAMA,EAAM,UAAU,KAAMiC,EAAMC,CAAO,CAAC,CACnD,EAIA6B,EAAO,MAAQ,SAAe9B,EAAM,CAClC,OAAAjC,EAAM,MAAM,KAAMiC,CAAI,EACf,IACT,EAIC,SAAS+B,EAAO,CACf,QAAS9C,EAAI,EAAGA,EAAI8C,EAAM,OAAQ9C,KAAM,SAAS+C,EAAU,CACzDF,EAAOE,CAAQ,EAAI,SAAShC,EAAM,CAChC,IAAIiC,EAAO,KACXC,EAEA,OAAIlC,GACF,WAAW,UAAW,CACpBA,EAAK,KAAKiC,EAAMH,EAAOE,CAAQ,EAAE,KAAKC,CAAI,CAAC,CAC7C,CAAC,EACM,OAETC,EAAUnE,EAAMiE,CAAQ,EAAE,IAAI,EACvBvD,EAAQyD,CAAO,EAAInE,EAAMmE,CAAO,EAAIA,EAC7C,CACF,GAAGH,EAAM9C,CAAC,CAAC,CACb,EAAG,+DAA+D,MAAM,GAAG,CAAC,EAI3E,SAAS8C,EAAO,CACf,QAAS9C,EAAI,EAAGA,EAAI8C,EAAM,OAAQ9C,KAAM,SAAS+C,EAAU,CACzDF,EAAOE,CAAQ,EAAI,SAAS3C,EAAOW,EAAM,CACvC,IAAIiC,EAAO,KAEX,OAAIjC,GACF,WAAW,UAAW,CACpBA,EAAK,KAAKiC,EAAMH,EAAOE,CAAQ,EAAE,KAAKC,EAAM5C,CAAK,CAAC,CACpD,CAAC,EACM,MAEFtB,EAAMA,EAAMiE,CAAQ,EAAE,KAAM3C,CAAK,CAAC,CAC3C,CACF,GAAG0C,EAAM9C,CAAC,CAAC,CACb,EAAG,UAAU,MAAM,GAAG,CAAC,EAItB,SAAS8C,EAAO,CACf,QAAS9C,EAAI,EAAGA,EAAI8C,EAAM,OAAQ9C,KAAM,SAAS+C,EAAU,CACzDF,EAAOE,CAAQ,EAAI,UAAW,CAC5B,OAAOjE,EAAMA,EAAMiE,CAAQ,EAAE,MAAM,KAAM,SAAS,CAAC,CACrD,CACF,GAAGD,EAAM9C,CAAC,CAAC,CACb,EAAG,kCAAkC,MAAM,GAAG,CAAC,EAIxClB,CAEP,EAAE,IAAI,EACN,OAAC,SAASA,EAAOC,EAAM,CAEvB,IAAIW,EAAaZ,EAAM,MAAM,WAG7B,SAASoE,EAAO1C,EAAG2C,EAAG,CAAE,OAAO3C,EAAI2C,CAAG,CAEtC,SAASC,EAAK3D,EAAK8B,EAAKC,EAAK,CAC3B,OAAOzC,EAAK,IAAIwC,EAAKxC,EAAK,IAAIU,EAAK+B,CAAG,CAAC,CACzC,CAIA1C,EAAM,IAAM,SAAagB,EAAK,CAG5B,QAFIuD,EAAM,EACNrD,EAAIF,EAAI,OACL,EAAEE,GAAK,GACZqD,GAAOvD,EAAIE,CAAC,EACd,OAAOqD,CACT,EAIAvE,EAAM,QAAU,SAAiBgB,EAAK,CAGpC,QAFIuD,EAAM,EACNrD,EAAIF,EAAI,OACL,EAAEE,GAAK,GACZqD,GAAOvD,EAAIE,CAAC,EAAIF,EAAIE,CAAC,EACvB,OAAOqD,CACT,EAIAvE,EAAM,SAAW,SAAkBgB,EAAK,CAKtC,QAJIwD,EAAOxE,EAAM,KAAKgB,CAAG,EACrBuD,EAAM,EACNrD,EAAIF,EAAI,OACRyD,EACG,EAAEvD,GAAK,GACZuD,EAAMzD,EAAIE,CAAC,EAAIsD,EACfD,GAAOE,EAAMA,EAEf,OAAOF,CACT,EAGAvE,EAAM,OAAS,SAAgBgB,EAAK,CAGlC,QAFIuD,EAAM,EACNrD,EAAIF,EAAI,OACL,EAAEE,GAAK,GACZqD,GAAOvD,EAAIE,CAAC,EACd,OAAOqD,CACT,EAGAvE,EAAM,QAAU,SAAiBgB,EAAK,CAGpC,QAFI0D,EAAO,EACPxD,EAAIF,EAAI,OACL,EAAEE,GAAK,GACZwD,GAAQ1D,EAAIE,CAAC,EACf,OAAOwD,CACT,EAIA1E,EAAM,IAAM,SAAagB,EAAK,CAG5B,QAFI2D,EAAM3D,EAAI,CAAC,EACXE,EAAI,EACD,EAAEA,EAAIF,EAAI,QACXA,EAAIE,CAAC,EAAIyD,IACXA,EAAM3D,EAAIE,CAAC,GACf,OAAOyD,CACT,EAIA3E,EAAM,IAAM,SAAagB,EAAK,CAG5B,QAFI4D,EAAO5D,EAAI,CAAC,EACZE,EAAI,EACD,EAAEA,EAAIF,EAAI,QACXA,EAAIE,CAAC,EAAI0D,IACXA,EAAO5D,EAAIE,CAAC,GAChB,OAAO0D,CACT,EAIA5E,EAAM,OAAS,SAAgBgB,EAAK,CAElC,QADI6D,EAAO,CAAC,EAAGC,EAAO,CAAC,EACf5D,EAAI,EAAGA,EAAIF,EAAI,OAAQE,IACxB2D,EAAK7D,EAAIE,CAAC,CAAC,IACd2D,EAAK7D,EAAIE,CAAC,CAAC,EAAI,GACf4D,EAAK,KAAK9D,EAAIE,CAAC,CAAC,GAGpB,OAAO4D,CACT,EAIA9E,EAAM,KAAO,SAAcgB,EAAK,CAC9B,OAAOhB,EAAM,IAAIgB,CAAG,EAAIA,EAAI,MAC9B,EAIAhB,EAAM,UAAY,SAAmBgB,EAAK,CACxC,OAAOhB,EAAM,SAASgB,CAAG,EAAIA,EAAI,MACnC,EAIAhB,EAAM,QAAU,SAAiBgB,EAAK,CACpC,IAAI+D,EAAO/D,EAAI,IAAIf,EAAK,GAAG,EACvB+E,EAAahF,EAAM,KAAK+E,CAAI,EAChC,OAAO9E,EAAK,IAAI+E,CAAU,CAC5B,EAIAhF,EAAM,OAAS,SAAgBgB,EAAK,CAClC,IAAIiE,EAASjE,EAAI,OACb8D,EAAO9D,EAAI,MAAM,EAAE,KAAKoD,CAAM,EAElC,OAASa,EAAS,EAEdH,EAAMG,EAAS,EAAK,CAAE,GADrBH,EAAMG,EAAS,EAAK,CAAE,EAAIH,EAAMG,EAAS,CAAE,GAAK,CAEvD,EAIAjF,EAAM,OAAS,SAAgBgB,EAAK,CAClC,OAAOhB,EAAM,UAAUgB,EAAK,SAAUU,EAAG2C,EAAG,CAAE,OAAO3C,EAAI2C,CAAG,CAAC,CAC/D,EAIArE,EAAM,QAAU,SAAiBgB,EAAK,CACpC,OAAOhB,EAAM,UAAUgB,EAAK,SAAUU,EAAG2C,EAAG,CAAE,OAAO3C,EAAI2C,CAAG,CAAC,CAC/D,EAIArE,EAAM,KAAO,SAAcgB,EAAK,CAC9B,IAAIkE,EAAQ,CAAC,EACTC,EAASnE,EAAI,OACbE,EACJ,IAAKA,EAAI,EAAGA,EAAIiE,EAAQjE,IACtBgE,EAAM,KAAKlE,EAAIE,CAAC,EAAIF,EAAIE,EAAI,CAAC,CAAC,EAChC,OAAOgE,CACT,EAIAlF,EAAM,KAAO,SAAUgB,EAAK,CAC1B,IAAIE,EACAkE,EAAkB,CAAC,EACnBC,EAAe,CAAC,EACpB,IAAKnE,EAAI,EAAGA,EAAIF,EAAI,OAAQE,IAAK,CAC/B,IAAIoE,EAAStE,EAAIE,CAAC,EACdmE,EAAaC,CAAM,EACrBD,EAAaC,CAAM,KAEnBD,EAAaC,CAAM,EAAI,EACvBF,EAAgB,KAAKE,CAAM,EAE/B,CAEA,IAAIC,EAAwBH,EAAgB,KAAKhB,CAAM,EACnDoB,EAAc,CAAC,EACfC,EAAc,EAClB,IAAKvE,EAAI,EAAGA,EAAIqE,EAAsB,OAAQrE,IAAK,CACjD,IAAIoE,EAASC,EAAsBrE,CAAC,EAChCwE,EAAQL,EAAaC,CAAM,EAC3BK,EAAQF,EACRG,EAAOH,EAAcC,EAAQ,EAC7BG,GAAQF,EAAQC,GAAQ,EAC5BJ,EAAYF,CAAM,EAAIO,EACtBJ,GAAeC,CACjB,CAEA,OAAO1E,EAAI,IAAI,SAAUsE,EAAQ,CAC/B,OAAOE,EAAYF,CAAM,CAC3B,CAAC,CACH,EAMAtF,EAAM,KAAO,SAAcgB,EAAK,CAC9B,IAAImE,EAASnE,EAAI,OACb8D,EAAO9D,EAAI,MAAM,EAAE,KAAKoD,CAAM,EAC9BsB,EAAQ,EACRI,EAAW,EACXC,EAAc,EACdC,EAAW,CAAC,EACZ9E,EAEJ,IAAKA,EAAI,EAAGA,EAAIiE,EAAQjE,IAClB4D,EAAK5D,CAAC,IAAM4D,EAAK5D,EAAI,CAAC,EACxBwE,KAEIA,EAAQI,GACVE,EAAW,CAAClB,EAAK5D,CAAC,CAAC,EACnB4E,EAAWJ,EACXK,EAAc,GAGPL,IAAUI,IACjBE,EAAS,KAAKlB,EAAK5D,CAAC,CAAC,EACrB6E,KAGFL,EAAQ,GAIZ,OAAOK,IAAgB,EAAIC,EAAS,CAAC,EAAIA,CAC3C,EAIAhG,EAAM,MAAQ,SAAegB,EAAK,CAChC,OAAOhB,EAAM,IAAIgB,CAAG,EAAIhB,EAAM,IAAIgB,CAAG,CACvC,EAIAhB,EAAM,SAAW,SAAkBgB,EAAKiF,EAAM,CAC5C,OAAOjG,EAAM,SAASgB,CAAG,GAAKA,EAAI,QAAUiF,EAAO,EAAI,GACzD,EAGAjG,EAAM,eAAiB,SAAwBgB,EAAK,CAClD,IAAIkF,EAAWlF,EAAI,OAAO,SAAUU,EAAGyE,EAAS,CAAC,OAAOzE,EAAI1B,EAAM,SAASmG,CAAO,CAAE,EAAG,CAAC,EACpFT,EAAQ1E,EAAI,OAAO,SAAUU,EAAGyE,EAAS,CAAC,OAAOzE,EAAIyE,EAAQ,MAAO,EAAG,CAAC,EAC5E,OAAOD,GAAYR,EAAQ1E,EAAI,OACjC,EAGAhB,EAAM,UAAY,SAAUgB,EAAK,CAI/B,QAHIwD,EAAOxE,EAAM,KAAKgB,CAAG,EACrBiE,EAASjE,EAAI,OACboF,EAAM,IAAI,MAAMnB,CAAM,EACjB/D,EAAI,EAAGA,EAAI+D,EAAQ/D,IAC1BkF,EAAIlF,CAAC,EAAIF,EAAIE,CAAC,EAAIsD,EAEpB,OAAO4B,CACT,EAIApG,EAAM,MAAQ,SAAegB,EAAKiF,EAAM,CACtC,OAAOhG,EAAK,KAAKD,EAAM,SAASgB,EAAKiF,CAAI,CAAC,CAC5C,EAGAjG,EAAM,YAAc,SAAqBgB,EAAK,CAC5C,OAAOf,EAAK,KAAKD,EAAM,eAAegB,CAAG,CAAC,CAC5C,EAGAhB,EAAM,QAAU,SAAiBgB,EAAK,CAGpC,QAFIwD,EAAOxE,EAAM,KAAKgB,CAAG,EACrBU,EAAI,CAAC,EACAR,EAAIF,EAAI,OAAS,EAAGE,GAAK,EAAGA,IACnCQ,EAAE,KAAKzB,EAAK,IAAIe,EAAIE,CAAC,EAAIsD,CAAI,CAAC,EAEhC,OAAOxE,EAAM,KAAK0B,CAAC,CACrB,EAIA1B,EAAM,OAAS,SAAgBgB,EAAK,CAGlC,QAFIqF,EAASrG,EAAM,OAAOgB,CAAG,EACzBU,EAAI,CAAC,EACAR,EAAIF,EAAI,OAAS,EAAGE,GAAK,EAAGA,IACnCQ,EAAE,KAAKzB,EAAK,IAAIe,EAAIE,CAAC,EAAImF,CAAM,CAAC,EAElC,OAAOrG,EAAM,OAAO0B,CAAC,CACvB,EAIA1B,EAAM,SAAW,SAAkBgB,EAAK,CACtC,OAAOhB,EAAM,MAAMgB,CAAG,EAAIhB,EAAM,KAAKgB,CAAG,CAC1C,EAIAhB,EAAM,UAAY,SAAmBgB,EAAK,CACxC,IAAIiE,EAASjE,EAAI,OACb8D,EAAO9D,EAAI,MAAM,EAAE,KAAKoD,CAAM,EAClC,MAAO,CACLU,EAAM7E,EAAK,MAAOgF,EAAU,CAAC,EAAI,CAAE,EACnCH,EAAM7E,EAAK,MAAOgF,EAAU,CAAC,EAAI,CAAE,EACnCH,EAAM7E,EAAK,MAAOgF,EAAU,EAAI,CAAC,EAAI,CAAE,CACzC,CACF,EAKAjF,EAAM,UAAY,SAAmBgB,EAAKsF,EAAgBC,EAAQC,EAAO,CACvE,IAAIC,EAAczF,EAAI,MAAM,EAAE,KAAKoD,CAAM,EACrCsC,EAAe,CAACJ,EAAe,MAAM,EACrC/F,EAAIS,EAAI,OACRE,EAAGyF,EAAGnG,EAAGoG,EAAOC,EAAGC,EAOvB,IALI,OAAOP,EAAW,MACpBA,EAAS,EAAI,GACX,OAAOC,EAAU,MACnBA,EAAQ,EAAI,GAETtF,EAAI,EAAGA,EAAIoF,EAAe,OAAQpF,IACrCyF,EAAIL,EAAepF,CAAC,EACpBV,EAAI+F,EAASI,GAAK,EAAIJ,EAASC,GAC/BI,EAAQrG,EAAIoG,EAAInG,EAChBqG,EAAI5G,EAAK,MAAMqE,EAAKsC,EAAO,EAAGrG,EAAI,CAAC,CAAC,EACpCuG,EAAQxC,EAAKsC,EAAQC,EAAG,EAAG,CAAC,EAC5BH,EAAaxF,CAAC,GAAK,EAAI4F,GAASL,EAAYI,EAAI,CAAC,EAAIC,EAAQL,EAAYI,CAAC,EAG5E,OAAOH,CACT,EAIA1G,EAAM,WAAa,SAAoBgB,EAAK6F,EAAGE,EAAW,CACxD,IAAIjC,EAAO9D,EAAI,MAAM,EAAE,KAAKoD,CAAM,EAC9B4C,EAAYH,GAAK/B,EAAK,QAAUiC,EAAY,EAAI,MAAQA,EAAY,EAAI,GACxEzF,EAAQ,SAAS0F,CAAS,EAC1BC,EAAOD,EAAY1F,EACvB,OAAIA,EAAQ,EAAIwD,EAAK,OACZA,EAAKxD,EAAQ,CAAC,EAAI2F,GAAQnC,EAAKxD,CAAK,EAAIwD,EAAKxD,EAAQ,CAAC,GAEtDwD,EAAKxD,EAAQ,CAAC,CAEzB,EAKAtB,EAAM,kBAAoB,SAA2BgB,EAAKkG,EAAOC,EAAM,CACrE,IAAIC,EAAU,EACVC,EAAMrG,EAAI,OACVsG,EAAS,GACTC,EAAOrG,EAKX,IAHIiG,IAAS,WACXG,EAAS,IAENpG,EAAI,EAAGA,EAAImG,EAAKnG,IACnBqG,EAAQvG,EAAIE,CAAC,GACRoG,GAAUC,EAAQL,GAClB,CAACI,GAAUC,GAASL,IACvBE,IAIJ,OAAOA,EAAUC,CACnB,EAIArH,EAAM,UAAY,SAAmBgB,EAAKwG,EAAQ,CAChDA,EAASA,GAAU,EACnB,IAAI7B,EAAQ3F,EAAM,IAAIgB,CAAG,EACrByG,GAAYzH,EAAM,IAAIgB,CAAG,EAAI2E,GAAS6B,EACtCH,EAAMrG,EAAI,OACV0G,EAAO,CAAC,EACRxG,EAEJ,IAAKA,EAAI,EAAGA,EAAIsG,EAAQtG,IACtBwG,EAAKxG,CAAC,EAAI,EACZ,IAAKA,EAAI,EAAGA,EAAImG,EAAKnG,IACnBwG,EAAKzH,EAAK,IAAIA,EAAK,OAAQe,EAAIE,CAAC,EAAIyE,GAAS8B,CAAS,EAAGD,EAAS,CAAC,CAAC,GAAK,EAE3E,OAAOE,CACT,EAIA1H,EAAM,WAAa,SAAoB2H,EAAMC,EAAM,CACjD,IAAIC,EAAI7H,EAAM,KAAK2H,CAAI,EACnBG,EAAI9H,EAAM,KAAK4H,CAAI,EACnBG,EAAUJ,EAAK,OACfK,EAAS,IAAI,MAAMD,CAAO,EAC1B7G,EAEJ,IAAKA,EAAI,EAAGA,EAAI6G,EAAS7G,IACvB8G,EAAO9G,CAAC,GAAKyG,EAAKzG,CAAC,EAAI2G,IAAMD,EAAK1G,CAAC,EAAI4G,GAEzC,OAAO9H,EAAM,IAAIgI,CAAM,GAAKD,EAAU,EACxC,EAIA/H,EAAM,UAAY,SAAmB2H,EAAMC,EAAM,CAC/C,OAAO5H,EAAM,WAAW2H,EAAMC,CAAI,EAC9B5H,EAAM,MAAM2H,EAAM,CAAC,EACnB3H,EAAM,MAAM4H,EAAM,CAAC,CACzB,EAGA5H,EAAM,cAAiB,SAAU2H,EAAMC,EAAM,CAC3C,OAAAD,EAAO3H,EAAM,KAAK2H,CAAI,EACtBC,EAAO5H,EAAM,KAAK4H,CAAI,EAEf5H,EAAM,UAAU2H,EAAMC,CAAI,CACnC,EAIA5H,EAAM,WAAa,SAAoBgB,EAAKT,EAAG,CAM7C,QALI0H,EAAKjI,EAAM,KAAKgB,CAAG,EACnBkH,EAAQlI,EAAM,MAAMgB,CAAG,EACvBqG,EAAMrG,EAAI,OACVmH,EAAU,EAELjH,EAAI,EAAGA,EAAImG,EAAKnG,IACvBiH,GAAWlI,EAAK,KAAKe,EAAIE,CAAC,EAAI+G,GAAMC,EAAO3H,CAAC,EAE9C,OAAO4H,EAAUnH,EAAI,MACvB,EAGAhB,EAAM,SAAW,SAAkBgB,EAAK,CACtC,OAAOhB,EAAM,WAAWgB,EAAK,CAAC,CAChC,EAGAhB,EAAM,SAAW,SAAkBgB,EAAK,CACtC,OAAOhB,EAAM,WAAWgB,EAAK,CAAC,EAAI,CACpC,EAGA,IAAI+C,EAAS/D,EAAM,WAQlB,SAASgE,EAAO,CACf,QAAS9C,EAAI,EAAGA,EAAI8C,EAAM,OAAQ9C,KAAM,SAAS+C,EAAU,CAGzDF,EAAOE,CAAQ,EAAI,SAASmE,EAAUnG,EAAM,CAC1C,IAAIjB,EAAM,CAAC,EACPE,EAAI,EACJmH,EAAU,KAOd,GALIzH,EAAWwH,CAAQ,IACrBnG,EAAOmG,EACPA,EAAW,IAGTnG,EACF,kBAAW,UAAW,CACpBA,EAAK,KAAKoG,EAAStE,EAAOE,CAAQ,EAAE,KAAKoE,EAASD,CAAQ,CAAC,CAC7D,CAAC,EACM,KAGT,GAAI,KAAK,OAAS,EAAG,CAEnB,IADAC,EAAUD,IAAa,GAAO,KAAO,KAAK,UAAU,EAC7ClH,EAAImH,EAAQ,OAAQnH,IACzBF,EAAIE,CAAC,EAAIlB,EAAMiE,CAAQ,EAAEoE,EAAQnH,CAAC,CAAC,EACrC,OAAOF,CACT,CAEA,OAAOhB,EAAMiE,CAAQ,EAAE,KAAK,CAAC,EAAGmE,CAAQ,CAC1C,CACF,GAAGpE,EAAM9C,CAAC,CAAC,CACb,GAAI,iBAAkB,MAAM,GAAG,CAAC,EAI/B,SAAS8C,EAAO,CACf,QAAS9C,EAAI,EAAGA,EAAI8C,EAAM,OAAQ9C,KAAM,SAAS+C,EAAU,CAGzDF,EAAOE,CAAQ,EAAI,SAASmE,EAAUnG,EAAM,CAC1C,IAAIjB,EAAM,CAAC,EACPE,EAAI,EACJmH,EAAU,KAOd,GALIzH,EAAWwH,CAAQ,IACrBnG,EAAOmG,EACPA,EAAW,IAGTnG,EACF,kBAAW,UAAW,CACpBA,EAAK,KAAKoG,EAAStE,EAAOE,CAAQ,EAAE,KAAKoE,EAASD,CAAQ,CAAC,CAC7D,CAAC,EACM,KAGT,GAAI,KAAK,OAAS,EAAG,CAGnB,IAFInE,IAAa,WACfoE,EAAUD,IAAa,GAAO,KAAO,KAAK,UAAU,GAC/ClH,EAAImH,EAAQ,OAAQnH,IACzBF,EAAIE,CAAC,EAAIlB,EAAMiE,CAAQ,EAAEoE,EAAQnH,CAAC,CAAC,EACrC,OAAOkH,IAAa,GACdpI,EAAMiE,CAAQ,EAAEjE,EAAM,MAAM,SAASgB,CAAG,CAAC,EACzCA,CACR,CAEA,OAAOhB,EAAMiE,CAAQ,EAAE,KAAK,CAAC,EAAGmE,CAAQ,CAC1C,CACF,GAAGpE,EAAM9C,CAAC,CAAC,CACb,EAAI,+LAEyD,MAAM,GAAG,CAAC,EAKtE,SAAS8C,EAAO,CACf,QAAS9C,EAAI,EAAGA,EAAI8C,EAAM,OAAQ9C,KAAM,SAAS+C,EAAU,CACzDF,EAAOE,CAAQ,EAAI,UAAW,CAC5B,IAAIjD,EAAM,CAAC,EACPE,EAAI,EACJmH,EAAU,KACVpH,EAAO,MAAM,UAAU,MAAM,KAAK,SAAS,EAC3CqH,EAIJ,GAAI1H,EAAWK,EAAKA,EAAK,OAAS,CAAC,CAAC,EAAG,CACrCqH,EAAmBrH,EAAKA,EAAK,OAAS,CAAC,EACvC,IAAIsH,EAAatH,EAAK,MAAM,EAAGA,EAAK,OAAS,CAAC,EAE9C,kBAAW,UAAW,CACpBqH,EAAiB,KAAKD,EACAtE,EAAOE,CAAQ,EAAE,MAAMoE,EAASE,CAAU,CAAC,CACnE,CAAC,EACM,IAGT,KAAO,CACLD,EAAmB,OACnB,IAAIE,EAAkB,SAAyBC,EAAQ,CACrD,OAAOzI,EAAMiE,CAAQ,EAAE,MAAMoE,EAAS,CAACI,CAAM,EAAE,OAAOxH,CAAI,CAAC,CAC7D,CACF,CAGA,GAAI,KAAK,OAAS,EAAG,CAEnB,IADAoH,EAAUA,EAAQ,UAAU,EACrBnH,EAAImH,EAAQ,OAAQnH,IACzBF,EAAIE,CAAC,EAAIsH,EAAgBH,EAAQnH,CAAC,CAAC,EACrC,OAAOF,CACT,CAGA,OAAOwH,EAAgB,KAAK,CAAC,CAAC,CAChC,CACF,GAAGxE,EAAM9C,CAAC,CAAC,CACb,EAAG,8BAA8B,MAAM,GAAG,CAAC,CAE3C,EAAElB,EAAO,IAAI,EAEZ,SAASA,EAAOC,EAAM,CAGvBD,EAAM,QAAU,SAAiB0I,EAAG,CAClC,IAAIrH,EAAI,EACJsH,EAAM,CACR,kBAAmB,mBAAoB,kBACvC,mBAAoB,oBAAuB,kBAC7C,EACIC,EAAM,kBACNC,EAAIC,EAAGrE,EAGX,IAFAA,GAAOqE,EAAID,EAAKH,GAAK,IACrBjE,IAAQoE,EAAK,IAAO5I,EAAK,IAAIwE,CAAG,EACzBpD,EAAI,EAAGA,IACZuH,GAAOD,EAAItH,CAAC,EAAI,EAAEyH,EACpB,OAAO7I,EAAK,IAAI,mBAAqB2I,EAAMC,CAAE,EAAIpE,CACnD,EAOAzE,EAAM,OAAS,SAAgB0I,EAAG,CAChC,IAAIK,EAAIC,EAAIC,EAAIC,EAAIC,EAChBtC,EAAGtG,EAEHmB,EAAI,CAAC,mBAAuB,qBACxB,qBAAuB,sBACvB,qBAAuB,qBACvB,mBAAuB,oBACvB,kBAAuB,gBAAqB,EAGpD,GAFAqH,EAAKL,EACLnI,EAAI,EACCmI,GAAK,GAASA,GAAK,EACpB,MAAO,GASX,IAPIA,GAAK,IACLnI,EAAIN,EAAK,MAAM,EAAIyI,CAAC,EACpBK,EAAKL,EAAInI,GAEbyI,EAAK,GAAOD,EAAKA,GACjBE,EAAK,EAAIhJ,EAAK,GACdkJ,EAAMzH,EAAE,CAAC,EACJmF,EAAI,EAAGA,GAAK,EAAGA,IAChBsC,GAAOH,EACPG,GAAOzH,EAAEmF,CAAC,EAGd,GADAqC,EAAKC,EAAMJ,EAAK,GAAM9I,EAAK,IAAIgJ,CAAE,GAAKF,EAAK,IAAO9I,EAAK,IAAI8I,CAAE,EAAIA,EAC7DL,GAAK,EACL,IAAK7B,EAAI,EAAGA,GAAKtG,EAAGsG,IAChBqC,GAAMjJ,EAAK,IAAI8I,EAAK,CAAG,EACvBA,GAAM,EAGd,OAAOG,CACT,EAGAlJ,EAAM,QAAU,SAAiB0I,EAAG,CAClC,IAAI/B,EAAI,CAAC,mBAAoB,kBAAmB,oBACvC,kBAAmB,kBAAmB,oBACtC,oBAAqB,iBAC9B,EACIyC,EAAI,CAAC,kBAAmB,mBAAoB,oBACvC,mBAAoB,kBAAoB,kBACxC,mBAAoB,kBAAkB,EAC3CC,EAAO,GACP9I,EAAI,EACJ+I,EAAO,EACPC,EAAO,EACPT,EAAIJ,EACJxH,EAAGsI,EAAGC,EAAI7H,EACd,GAAI8G,EAAI,kBACN,MAAO,KAET,GAAII,GAAK,EAEP,GADAlH,EAAMkH,EAAI,EAAI,OACVlH,EACFyH,GAAUP,EAAI,EAAS,GAAJ,GAAU7I,EAAK,GAAKA,EAAK,IAAIA,EAAK,GAAK2B,CAAG,EAC7DkH,EAAI,EAAIA,MAER,OAAO,KASX,IANAW,EAAKX,EACDA,EAAI,EACNU,EAAIV,IAEJU,GAAKV,GAAKvI,GAAKuI,EAAI,GAAK,GAAK,EAE1B5H,EAAI,EAAGA,EAAI,EAAG,EAAEA,EACnBqI,GAAQA,EAAO5C,EAAEzF,CAAC,GAAKsI,EACvBF,EAAOA,EAAOE,EAAIJ,EAAElI,CAAC,EAGvB,GADAU,EAAM2H,EAAOD,EAAO,EAChBG,EAAKX,EACPlH,GAAO6H,UACEA,EAAKX,EACd,IAAK5H,EAAI,EAAGA,EAAIX,EAAG,EAAEW,EACnBU,GAAOkH,EACPA,IAGJ,OAAIO,IACFzH,EAAMyH,EAAOzH,GAERA,CACT,EAKA5B,EAAM,OAAS,SAAgB0B,EAAGgH,EAAG,CACnC,OAAO1I,EAAM,YAAY0B,EAAGgH,CAAC,EAAI1I,EAAM,QAAQ0B,CAAC,CAClD,EAIA1B,EAAM,YAAc,SAAqB0B,EAAGgH,EAAG,CAC7C,IAAIgB,EAAM1J,EAAM,QAAQ0B,CAAC,EACrBiI,EAAKjI,EACL6C,EAAM,EAAI7C,EACVkI,EAAMrF,EACNF,EAAIqE,EAAI,EAAIhH,EACZmI,EAAI,EAAI,MACRC,EAAI,EAAIzF,EACR0F,EAAID,EACJ5I,EAAI,EAEJ8I,EAAQ,CAAC,EAAE/J,EAAK,IAAKyB,GAAK,EAAKA,EAAI,EAAIA,CAAC,EAAI,IAAMA,EAAI,GAAM,IAC5DuI,EAEJ,GAAIvB,EAAI,GAAKhH,GAAK,EAChB,MAAO,KACF,GAAIgH,EAAIhH,EAAI,EAAG,CACpB,KAAOR,GAAK8I,EAAO9I,IACjBqD,GAAOqF,GAAOlB,EAAI,EAAEiB,EAEtB,OAAQpF,EAAMtE,EAAK,IAAI,CAACyI,EAAIhH,EAAIzB,EAAK,IAAIyI,CAAC,EAAKgB,CAAI,CACrD,CAEA,KAAOxI,GAAK8I,EAAO9I,IACjB+I,EAAK,CAAC/I,GAAKA,EAAIQ,GACf2C,GAAK,EACLyF,EAAIG,EAAKH,EAAIzF,EACbwF,EAAIxF,EAAI4F,EAAKJ,EACbC,EAAI,EAAIA,EACRC,GAAKD,EAAID,EAGX,MAAQ,GAAIE,EAAI9J,EAAK,IAAI,CAACyI,EAAIhH,EAAIzB,EAAK,IAAIyI,CAAC,EAAKgB,CAAI,CACvD,EAGA1J,EAAM,YAAc,SAAqBO,EAAG,CAC1C,OAAOA,EAAI,EAAI,IAAMP,EAAM,QAAQO,EAAI,CAAC,CAC1C,EAGAP,EAAM,UAAY,SAAmBO,EAAG,CACtC,OAAOA,EAAI,EAAI,IAAMP,EAAM,QAAQO,EAAI,CAAC,CAC1C,EAGAP,EAAM,YAAc,SAAqBO,EAAGC,EAAG,CAE7C,OAAQD,EAAI,KAAOC,EAAI,IACjBP,EAAK,IAAID,EAAM,cAAcO,EAAGC,CAAC,CAAC,EACjCR,EAAM,UAAUO,CAAC,EAAIP,EAAM,UAAUQ,CAAC,EAAKR,EAAM,UAAUO,EAAIC,CAAC,CACzE,EAGAR,EAAM,cAAgB,SAAuBO,EAAGC,EAAE,CAChD,OAAOR,EAAM,YAAYO,CAAC,EAAIP,EAAM,YAAYQ,CAAC,EAAIR,EAAM,YAAYO,EAAIC,CAAC,CAC9E,EAIAR,EAAM,YAAc,SAAqBO,EAAGC,EAAG,CAC7C,OAAOR,EAAM,UAAUO,CAAC,EAAIP,EAAM,UAAUO,EAAIC,CAAC,CACnD,EAIAR,EAAM,OAAS,SAAgB0I,EAAGI,EAAG,CAEnC,GAAI,EAAAJ,GAAK,GAAKI,GAAK,GAGnB,OAAQJ,EAAII,EAAI,IACV7I,EAAK,IAAID,EAAM,OAAO0I,EAAGI,CAAC,CAAC,EAC3B9I,EAAM,QAAQ0I,CAAC,EAAI1I,EAAM,QAAQ8I,CAAC,EAAI9I,EAAM,QAAQ0I,EAAII,CAAC,CACjE,EAIA9I,EAAM,OAAS,SAAgB0I,EAAGI,EAAG,CACnC,OAAO9I,EAAM,QAAQ0I,CAAC,EAAI1I,EAAM,QAAQ8I,CAAC,EAAI9I,EAAM,QAAQ0I,EAAII,CAAC,CAClE,EAKA9I,EAAM,OAAS,SAAgB0I,EAAGhH,EAAG2C,EAAG,CACtC,IAAI6F,EAAQ,MACR1J,EAAI,EACJ2J,EAAMzI,EAAI2C,EACV+F,EAAM1I,EAAI,EACV2I,EAAM3I,EAAI,EACVmI,EAAI,EACJC,EAAI,EAAIK,EAAMzB,EAAI0B,EAClBE,EAAIC,EAAIX,EAAKG,EAQjB,IALI9J,EAAK,IAAI6J,CAAC,EAAII,IAChBJ,EAAII,GACNJ,EAAI,EAAIA,EACRC,EAAID,EAEGtJ,GAAK,MACV8J,EAAK,EAAI9J,EACT+J,EAAK/J,GAAK6D,EAAI7D,GAAKkI,IAAM2B,EAAMC,IAAO5I,EAAI4I,IAE1CR,EAAI,EAAIS,EAAKT,EACT7J,EAAK,IAAI6J,CAAC,EAAII,IAChBJ,EAAII,GACNL,EAAI,EAAIU,EAAKV,EACT5J,EAAK,IAAI4J,CAAC,EAAIK,IAChBL,EAAIK,GACNJ,EAAI,EAAIA,EACRC,GAAKD,EAAID,EACTU,EAAK,EAAE7I,EAAIlB,IAAM2J,EAAM3J,GAAKkI,IAAMhH,EAAI4I,IAAOF,EAAME,IAEnDR,EAAI,EAAIS,EAAKT,EACT7J,EAAK,IAAI6J,CAAC,EAAII,IAChBJ,EAAII,GACNL,EAAI,EAAIU,EAAKV,EACT5J,EAAK,IAAI4J,CAAC,EAAIK,IAChBL,EAAIK,GACNJ,EAAI,EAAIA,EACRF,EAAME,EAAID,EACVE,GAAKH,EACD,EAAA3J,EAAK,IAAI2J,EAAM,CAAG,EAAI,OAvBXpJ,IAuBf,CAIF,OAAOuJ,CACT,EAIA/J,EAAM,UAAY,SAAmB2G,EAAGjF,EAAG,CACzC,IAAIL,EAAI,EACJmJ,EAAK9I,EAAI,EACT+I,EAAM,KACNC,EAAM1K,EAAM,QAAQ0B,CAAC,EACrBgH,EAAGiC,EAAK7G,EAAG+D,EAAG+C,EAAIC,EAAMC,EAE5B,GAAInE,GAAK,EACP,OAAO1G,EAAK,IAAI,IAAKyB,EAAI,IAAMzB,EAAK,KAAKyB,CAAC,CAAC,EAC7C,GAAIiF,GAAK,EACP,MAAO,GAmBT,IAlBIjF,EAAI,GACNmJ,EAAO5K,EAAK,IAAIuK,CAAE,EAClBM,EAAO7K,EAAK,IAAIuK,GAAMK,EAAO,GAAKH,CAAG,EACrCE,EAAMjE,EAAI,GAAOA,EAAI,EAAIA,EACzB7C,EAAI7D,EAAK,KAAK,GAAKA,EAAK,IAAI2K,CAAE,CAAC,EAC/BlC,GAAK,QAAU5E,EAAI,SAAY,EAAIA,GAAK,OAAUA,EAAI,SAAYA,EAC9D6C,EAAI,KACN+B,EAAI,CAACA,GACPA,EAAIzI,EAAK,IAAI,KACAyB,EAAIzB,EAAK,IAAI,EAAI,GAAK,EAAIyB,GAAKgH,GAAK,EAAIzI,EAAK,KAAKyB,CAAC,GAAI,CAAC,CAAC,IAEtEoC,EAAI,EAAIpC,GAAK,KAAQA,EAAI,KACrBiF,EAAI7C,EACN4E,EAAIzI,EAAK,IAAI0G,EAAI7C,EAAG,EAAIpC,CAAC,EAEzBgH,EAAI,EAAIzI,EAAK,IAAI,GAAK0G,EAAI7C,IAAM,EAAIA,EAAE,GAGpCzC,EAAI,GAAIA,IAAK,CACjB,GAAIqH,GAAK,EACP,MAAO,GAUT,GATAiC,EAAM3K,EAAM,YAAY0B,EAAGgH,CAAC,EAAI/B,EAC5BjF,EAAI,EACNoC,EAAIgH,EAAO7K,EAAK,IAAI,EAAEyI,EAAI8B,GAAMA,GAAMvK,EAAK,IAAIyI,CAAC,EAAImC,EAAK,EAEzD/G,EAAI7D,EAAK,IAAI,CAACyI,EAAI8B,EAAKvK,EAAK,IAAIyI,CAAC,EAAIgC,CAAG,EAC1C7C,EAAI8C,EAAM7G,EACV4E,GAAM5E,EAAI+D,GAAK,EAAI,GAAM5H,EAAK,IAAI,EAAG4H,IAAMnG,EAAI,GAAKgH,EAAI,EAAE,GACtDA,GAAK,IACPA,EAAI,IAAOA,EAAI5E,IACb7D,EAAK,IAAI6D,CAAC,EAAI2G,EAAM/B,EACtB,KACJ,CAEA,OAAOA,CACT,EAIA1I,EAAM,IAAM,SAAa0I,EAAG,CAC1B,IAAIC,EAAM,CAAC,oBAAqB,kBAAuB,oBAC5C,oBAAuB,qBAAsB,oBAC7C,mBAAoB,oBAAqB,mBACzC,iBAAmB,gBAAiB,iBACpC,eAAgB,eAAgB,eAChC,eAAiB,aAAe,YAChC,aAAe,WAAa,WAC5B,YAAc,QAAU,SACxB,UAAY,QAAU,QACtB,OAAQ,EACftH,EAAIsH,EAAI,OAAS,EACjBoC,EAAQ,GACRjB,EAAI,EACJkB,EAAK,EACLlH,EAAGmH,EAAIxG,EAAK7C,EAUhB,IARI8G,EAAI,IACNA,EAAI,CAACA,EACLqC,EAAQ,IAGVjH,EAAI,GAAK,EAAI4E,GACbuC,EAAK,EAAInH,EAAI,EAEPzC,EAAI,EAAGA,IACXoD,EAAMqF,EACNA,EAAImB,EAAKnB,EAAIkB,EAAKrC,EAAItH,CAAC,EACvB2J,EAAKvG,EAGP,OAAA7C,EAAMkC,EAAI7D,EAAK,IAAI,CAACyI,EAAIA,EAAI,IAAOC,EAAI,CAAC,EAAIsC,EAAKnB,GAAKkB,CAAE,EACjDD,EAAQnJ,EAAM,EAAI,EAAIA,CAC/B,EAIA5B,EAAM,KAAO,SAAc0I,EAAG,CAC5B,MAAO,GAAI1I,EAAM,IAAI0I,CAAC,CACxB,EAIA1I,EAAM,QAAU,SAAiB2G,EAAG,CAClC,IAAItF,EAAI,EACJqH,EAAGiC,EAAK7G,EAAG8G,EACf,GAAIjE,GAAK,EACP,MAAO,KACT,GAAIA,GAAK,EACP,MAAO,KAKT,IAJAiE,EAAMjE,EAAI,EAAKA,EAAI,EAAIA,EACvB7C,EAAI7D,EAAK,KAAK,GAAKA,EAAK,IAAI2K,EAAK,CAAC,CAAC,EACnClC,EAAI,UAAa,QAAU5E,EAAI,SACd,EAAIA,GAAK,OAAUA,EAAI,SAAYA,GAC7CzC,EAAI,EAAGA,IACZsJ,EAAM3K,EAAM,KAAK0I,CAAC,EAAIkC,EACtBlC,GAAKiC,GAAO,mBAAsB1K,EAAK,IAAI,CAACyI,EAAIA,CAAC,EAAIA,EAAIiC,GAE3D,OAAQhE,EAAI,EAAK+B,EAAI,CAACA,CACxB,EAIA1I,EAAM,SAAW,SAAkB2G,EAAGjF,EAAG2C,EAAG,CAC1C,IAAIoG,EAAM,KACND,EAAK9I,EAAI,EACTwJ,EAAK7G,EAAI,EACThD,EAAI,EACJ8J,EAAKC,EAAKR,EAAI9G,EAAG+D,EAAG8C,EAAKjC,EAAG2C,EAAItB,EAAGuB,EAAGR,EAC1C,GAAInE,GAAK,EACP,MAAO,GACT,GAAIA,GAAK,EACP,MAAO,GAwBT,IAvBIjF,GAAK,GAAK2C,GAAK,GACjBuG,EAAMjE,EAAI,GAAOA,EAAI,EAAIA,EACzB7C,EAAI7D,EAAK,KAAK,GAAKA,EAAK,IAAI2K,CAAE,CAAC,EAC/BlC,GAAK,QAAU5E,EAAI,SAAY,EAAIA,GAAI,OAAUA,EAAI,SAAYA,EAC7D6C,EAAI,KACN+B,EAAI,CAACA,GACP2C,GAAM3C,EAAIA,EAAI,GAAK,EACnBqB,EAAI,GAAK,GAAK,EAAIrI,EAAI,GAAM,GAAK,EAAI2C,EAAI,IACzCiH,EAAK5C,EAAIzI,EAAK,KAAKoL,EAAKtB,CAAC,EAAIA,GAAM,GAAK,EAAI1F,EAAI,GAAK,GAAK,EAAI3C,EAAI,KAC7D2J,EAAK,EAAI,EAAI,GAAK,EAAItB,IAC3BrB,EAAIhH,GAAKA,EAAI2C,EAAIpE,EAAK,IAAI,EAAIqL,CAAC,KAE/BH,EAAMlL,EAAK,IAAIyB,GAAKA,EAAI2C,EAAE,EAC1B+G,EAAMnL,EAAK,IAAIoE,GAAK3C,EAAI2C,EAAE,EAC1BP,EAAI7D,EAAK,IAAIyB,EAAIyJ,CAAG,EAAIzJ,EACxBmG,EAAI5H,EAAK,IAAIoE,EAAI+G,CAAG,EAAI/G,EACxBiH,EAAIxH,EAAI+D,EACJlB,EAAI7C,EAAIwH,EACV5C,EAAIzI,EAAK,IAAIyB,EAAI4J,EAAI3E,EAAG,EAAIjF,CAAC,EAE7BgH,EAAI,EAAIzI,EAAK,IAAIoE,EAAIiH,GAAK,EAAI3E,GAAI,EAAItC,CAAC,GAE3CyG,EAAO,CAAC9K,EAAM,QAAQ0B,CAAC,EAAI1B,EAAM,QAAQqE,CAAC,EAAIrE,EAAM,QAAQ0B,EAAI2C,CAAC,EAC3DhD,EAAI,GAAIA,IAAK,CACjB,GAAIqH,IAAM,GAAKA,IAAM,EACnB,OAAOA,EAST,GARAiC,EAAM3K,EAAM,MAAM0I,EAAGhH,EAAG2C,CAAC,EAAIsC,EAC7B7C,EAAI7D,EAAK,IAAIuK,EAAKvK,EAAK,IAAIyI,CAAC,EAAIwC,EAAKjL,EAAK,IAAI,EAAIyI,CAAC,EAAIoC,CAAI,EAC3DjD,EAAI8C,EAAM7G,EACV4E,GAAM5E,EAAI+D,GAAK,EAAI,GAAM5H,EAAK,IAAI,EAAG4H,GAAK2C,EAAK9B,EAAIwC,GAAM,EAAIxC,GAAG,GAC5DA,GAAK,IACPA,EAAI,IAAOA,EAAI5E,IACb4E,GAAK,IACPA,EAAI,IAAOA,EAAI5E,EAAI,IACjB7D,EAAK,IAAI6D,CAAC,EAAI2G,EAAM/B,GAAKrH,EAAI,EAC/B,KACJ,CACA,OAAOqH,CACT,EAIA1I,EAAM,MAAQ,SAAe0I,EAAGhH,EAAG2C,EAAG,CAEpC,IAAIkH,EAAM7C,IAAM,GAAKA,IAAM,EAAM,EAC/BzI,EAAK,IAAID,EAAM,QAAQ0B,EAAI2C,CAAC,EAAIrE,EAAM,QAAQ0B,CAAC,EACtC1B,EAAM,QAAQqE,CAAC,EAAI3C,EAAIzB,EAAK,IAAIyI,CAAC,EAAIrE,EACrCpE,EAAK,IAAI,EAAIyI,CAAC,CAAC,EAC1B,OAAIA,EAAI,GAAKA,EAAI,EACR,GACLA,GAAKhH,EAAI,IAAMA,EAAI2C,EAAI,GAElBkH,EAAKvL,EAAM,OAAO0I,EAAGhH,EAAG2C,CAAC,EAAI3C,EAE/B,EAAI6J,EAAKvL,EAAM,OAAO,EAAI0I,EAAGrE,EAAG3C,CAAC,EAAI2C,CAC9C,EAKArE,EAAM,MAAQ,SAAeO,EAAGC,EAAG,CACjC,IAAIqH,EAAGC,EAAGY,EAAGI,EAAGM,EAGhB,GAFK5I,IACHA,EAAID,GACFA,EACF,OAAOP,EAAM,OAAOO,EAAGC,EAAG,UAAW,CAAE,OAAOR,EAAM,MAAM,CAAG,CAAC,EAChE,GACE6H,EAAI7H,EAAM,WAAW,EACrB8H,EAAI,QAAU9H,EAAM,WAAW,EAAI,IACnC0I,EAAIb,EAAI,QACRiB,EAAI7I,EAAK,IAAI6H,CAAC,EAAI,QAClBsB,EAAIV,EAAIA,EAAII,GAAK,KAAUA,EAAI,OAAUJ,SAClCU,EAAI,SAAYA,EAAI,QAAWtB,EAAIA,EAAI,GAAK7H,EAAK,IAAI4H,CAAC,EAAIA,EAAIA,IACvE,OAAOC,EAAID,CACb,EAIA7H,EAAM,MAAQ,SAAewL,EAAOjL,EAAGC,EAAG,CACxC,IAAIiL,EAAQD,EACRhB,EAAIkB,EAAI7D,EAAGC,EAAGY,EAAG7E,EAKrB,GAJKrD,IACHA,EAAID,GACDiL,IACHA,EAAQ,GACNjL,EACF,OAAAsD,EAAM7D,EAAM,MAAMO,EAAEC,CAAC,EACrBqD,EAAI,MAAM,UAAW,CAAE,OAAO7D,EAAM,MAAMwL,CAAK,CAAG,CAAC,EAC5C3H,EAEL2H,EAAQ,IACVA,GAAS,GACXhB,EAAKgB,EAAQ,EAAI,EACjBE,EAAK,EAAIzL,EAAK,KAAK,EAAIuK,CAAE,EACzB,EAAG,CACD,GACE9B,EAAI1I,EAAM,MAAM,EAChB8H,EAAI,EAAI4D,EAAKhD,QACPZ,GAAK,GACbA,EAAIA,EAAIA,EAAIA,EACZD,EAAI7H,EAAM,WAAW,CACvB,OAAQ6H,EAAI,EAAI,KAAQ5H,EAAK,IAAIyI,EAAG,CAAC,GAC7BzI,EAAK,IAAI4H,CAAC,EAAI,GAAMa,EAAEA,EAAI8B,GAAM,EAAI1C,EAAI7H,EAAK,IAAI6H,CAAC,IAE1D,GAAI0D,GAASC,EACX,OAAOjB,EAAK1C,EAEd,GACED,EAAI7H,EAAM,WAAW,QACf6H,IAAM,GACd,OAAO5H,EAAK,IAAI4H,EAAG,EAAI4D,CAAK,EAAIjB,EAAK1C,CACvC,EAIC,SAAS9D,EAAO,CACf,QAAS,EAAI,EAAG,EAAIA,EAAM,OAAQ,KAAM,SAASC,EAAU,CACzDjE,EAAM,GAAGiE,CAAQ,EAAI,UAAW,CAC9B,OAAOjE,EACHA,EAAM,IAAI,KAAM,SAASuH,EAAO,CAAE,OAAOvH,EAAMiE,CAAQ,EAAEsD,CAAK,CAAG,CAAC,CAAC,CACzE,CACF,GAAGvD,EAAM,CAAC,CAAC,CACb,EAAG,wCAAwC,MAAM,GAAG,CAAC,EAGpD,SAASA,EAAO,CACf,QAAS,EAAI,EAAG,EAAIA,EAAM,OAAQ,KAAM,SAASC,EAAU,CACzDjE,EAAM,GAAGiE,CAAQ,EAAI,UAAW,CAC9B,OAAOjE,EAAMA,EAAMiE,CAAQ,EAAE,MAAM,KAAM,SAAS,CAAC,CACrD,CACF,GAAGD,EAAM,CAAC,CAAC,CACb,EAAG,QAAQ,MAAM,GAAG,CAAC,CAErB,EAAEhE,EAAO,IAAI,EACZ,SAASA,EAAOC,EAAM,EAGtB,SAASmD,EAAM,CACd,QAASlC,EAAI,EAAGA,EAAIkC,EAAK,OAAQlC,KAAM,SAASe,EAAM,CAEpDjC,EAAMiC,CAAI,EAAI,SAAS,EAAEP,EAAG2C,EAAGwF,EAAG,CAChC,OAAM,gBAAgB,GAEtB,KAAK,GAAKnI,EACV,KAAK,GAAK2C,EACV,KAAK,GAAKwF,EACH,MAJE,IAAI,EAAEnI,EAAG2C,EAAGwF,CAAC,CAKxB,EAEA7J,EAAM,GAAGiC,CAAI,EAAI,SAASP,EAAG2C,EAAGwF,EAAG,CACjC,IAAI8B,EAAU3L,EAAMiC,CAAI,EAAEP,EAAG2C,EAAGwF,CAAC,EACjC,OAAA8B,EAAQ,KAAO,KACRA,CACT,EAEA3L,EAAMiC,CAAI,EAAE,UAAU,OAAS,SAASjB,EAAK,CAC3C,IAAIU,EAAI,KAAK,GACT2C,EAAI,KAAK,GACTwF,EAAI,KAAK,GACb,OAAI7I,EACKhB,EAAM,MAAMgB,EAAK,UAAW,CACjC,OAAOhB,EAAMiC,CAAI,EAAE,OAAOP,EAAG2C,EAAGwF,CAAC,CACnC,CAAC,EAEM7J,EAAMiC,CAAI,EAAE,OAAOP,EAAG2C,EAAGwF,CAAC,CACrC,EAEC,SAAS+B,EAAM,CACd,QAAS1K,EAAI,EAAGA,EAAI0K,EAAK,OAAQ1K,KAAM,SAAS2K,EAAQ,CACtD7L,EAAMiC,CAAI,EAAE,UAAU4J,CAAM,EAAI,SAASnD,EAAG,CAC1C,IAAIhH,EAAI,KAAK,GACT2C,EAAI,KAAK,GACTwF,EAAI,KAAK,GAGb,MAFI,CAACnB,GAAKA,IAAM,IACdA,EAAI,KAAK,MACP,OAAOA,GAAM,SACR1I,EAAM,GAAG,IAAI,KAAK0I,EAAG,SAASA,EAAG,CACtC,OAAO1I,EAAMiC,CAAI,EAAE4J,CAAM,EAAEnD,EAAGhH,EAAG2C,EAAGwF,CAAC,CACvC,CAAC,EAEI7J,EAAMiC,CAAI,EAAE4J,CAAM,EAAEnD,EAAGhH,EAAG2C,EAAGwF,CAAC,CACvC,CACF,GAAG+B,EAAK1K,CAAC,CAAC,CACZ,EAAG,cAAc,MAAM,GAAG,CAAC,EAE1B,SAAS0K,EAAM,CACd,QAAS1K,EAAI,EAAGA,EAAI0K,EAAK,OAAQ1K,KAAM,SAAS2K,EAAQ,CACtD7L,EAAMiC,CAAI,EAAE,UAAU4J,CAAM,EAAI,UAAW,CACzC,OAAO7L,EAAMiC,CAAI,EAAE4J,CAAM,EAAE,KAAK,GAAI,KAAK,GAAI,KAAK,EAAE,CACtD,CACF,GAAGD,EAAK1K,CAAC,CAAC,CACZ,EAAG,4BAA4B,MAAM,GAAG,CAAC,CAC3C,GAAGkC,EAAKlC,CAAC,CAAC,CACZ,GACE,sMAGA,MAAM,GAAG,CAAC,EAKZlB,EAAM,OAAOA,EAAM,KAAM,CACvB,IAAK,SAAa0I,EAAGoD,EAAOC,EAAM,CAEhC,OAAIrD,EAAI,GAAKA,EAAI,EACR,EAELoD,GAAS,GAAKC,GAAQ,EACjB,EAELD,EAAQ,KAAOC,EAAO,IAChB9L,EAAK,IAAIyI,EAAGoD,EAAQ,CAAC,EAAI7L,EAAK,IAAI,EAAIyI,EAAGqD,EAAO,CAAC,EACrD/L,EAAM,OAAO8L,EAAOC,CAAI,EAErB9L,EAAK,KAAK6L,EAAQ,GAAK7L,EAAK,IAAIyI,CAAC,GACvBqD,EAAO,GAAK9L,EAAK,IAAI,EAAIyI,CAAC,EAC3B1I,EAAM,OAAO8L,EAAOC,CAAI,CAAC,CAE7C,EAEA,IAAK,SAAarD,EAAGoD,EAAOC,EAAM,CAChC,OAAQrD,EAAI,GAAKA,EAAI,GAAMA,EAAI,GAAK,EAAI1I,EAAM,MAAM0I,EAAGoD,EAAOC,CAAI,CACpE,EAEA,IAAK,SAAarD,EAAGoD,EAAOC,EAAM,CAChC,OAAO/L,EAAM,SAAS0I,EAAGoD,EAAOC,CAAI,CACtC,EAEA,KAAM,SAAcD,EAAOC,EAAM,CAC/B,OAAOD,GAASA,EAAQC,EAC1B,EAEA,OAAQ,SAAgBD,EAAOC,EAAM,CACnC,OAAO/L,EAAM,SAAS,GAAK8L,EAAOC,CAAI,CACxC,EAEA,KAAM,SAAcD,EAAOC,EAAM,CAC/B,OAAQD,EAAQ,IAAQA,EAAQC,EAAO,EACzC,EAGA,OAAQ,SAAgBD,EAAOC,EAAM,CACnC,IAAIlE,EAAI7H,EAAM,MAAM8L,CAAK,EACzB,OAAOjE,GAAKA,EAAI7H,EAAM,MAAM+L,CAAI,EAClC,EAEA,SAAU,SAAkBD,EAAOC,EAAM,CACvC,OAAQD,EAAQC,GAAS9L,EAAK,IAAI6L,EAAQC,EAAM,CAAC,GAAKD,EAAQC,EAAO,GACvE,CACF,CAAC,EAGD/L,EAAM,OAAOA,EAAM,SAAU,CAI3B,IAAK,SAAa0I,EAAGsD,EAAKC,EAAK,CAC7B,IAAI,EAAG7C,EAAG8C,EAEV,OAAIxD,EAAI,EACC,EAELsD,GAAO,EACLtD,IAAM,GAAKsD,EAAM,EACZ,IAELtD,IAAM,GAAKsD,IAAQ,EACd,EAED,EAAIhM,EAAM,OAAOgM,EAAM,EAAGC,EAAM,CAAC,EACjChM,EAAK,IAAI+L,EAAMC,EAAKD,EAAM,CAAC,EAC3B/L,EAAK,IAAIyI,EAAIsD,EAAI,EAAK,CAAC,EACvB/L,EAAK,IAAK,EAAK+L,EAAMC,EAAOvD,EAAI,EAAEsD,EAAMC,GAAO,CAAC,GAG1D,EAAKD,EAAMtD,GAAMuD,EAAMvD,EAAIsD,GAC3B5C,EAAI6C,GAAOA,EAAMvD,EAAIsD,GACrBE,EAAIF,EAAM5C,EAAI,EACP8C,EAAIlM,EAAM,SAAS,KAAKgM,EAAM,GAAK,GAAIA,EAAMC,EAAM,GAAK,EAAG,CAAC,EACrE,EAEA,IAAK,SAAavD,EAAGsD,EAAKC,EAAK,CAC7B,OAAIvD,EAAI,EACC,EACF1I,EAAM,MAAOgM,EAAMtD,GAAMsD,EAAMtD,EAAIuD,GAAMD,EAAM,EAAGC,EAAM,CAAC,CAClE,EAEA,IAAK,SAAavD,EAAGsD,EAAKC,EAAK,CAC7B,OAAOA,GAAOD,GAAO,EAAIhM,EAAM,SAAS0I,EAAGsD,EAAM,EAAGC,EAAM,CAAC,EAAI,GACjE,EAEA,KAAM,SAAcD,EAAKC,EAAK,CAC5B,OAAQA,EAAM,EAAKA,GAAOA,EAAM,GAAK,MACvC,EAEA,KAAM,SAAcD,EAAKC,EAAK,CAC5B,OAAQD,EAAM,EAAMC,GAAOD,EAAM,IAAOA,GAAOC,EAAM,IAAM,MAC7D,EAGA,OAAQ,SAAgBD,EAAKC,EAAK,CAChC,IAAIE,EAAKnM,EAAM,MAAMgM,EAAM,CAAC,EAAI,EAC5BhD,EAAKhJ,EAAM,MAAMiM,EAAM,CAAC,EAAI,EAChC,OAAQE,EAAKH,GAAQhD,EAAKiD,EAC5B,EAEA,SAAU,SAAkBD,EAAKC,EAAK,CACpC,GAAI,EAAAA,GAAO,GAEX,MAAO,GAAIA,EAAMA,GAAOD,EAAMC,EAAM,IAC/BD,GAAOC,EAAM,IAAMA,EAAM,IAAMA,EAAM,GAC5C,CACF,CAAC,EAIDjM,EAAM,OAAOA,EAAM,OAAQ,CACzB,IAAK,SAAa0I,EAAG0D,EAAOC,EAAO,CACjC,OAAIA,EAAQ,EAAY,EAEhBA,GAASpM,EAAK,IAAIyI,EAAI0D,EAAO,CAAC,EAAInM,EAAK,IAAIoM,EAAO,CAAC,GAAMpM,EAAK,EACxE,EAEA,IAAK,SAAayI,EAAG0D,EAAOC,EAAO,CACjC,OAAOpM,EAAK,MAAMyI,EAAI0D,GAASC,CAAK,EAAIpM,EAAK,GAAK,EACpD,EAEA,IAAK,SAAS0G,EAAGyF,EAAOC,EAAO,CAC7B,OAAOD,EAAQC,EAAQpM,EAAK,IAAIA,EAAK,IAAM0G,EAAI,GAAI,CACrD,EAEA,OAAQ,SAAgByF,EAAkB,CACxC,OAAOA,CACT,EAEA,KAAM,SAAcA,EAAkB,CACpC,OAAOA,CACT,EAEA,OAAQ,SAAgBA,EAAOC,EAAO,CACpC,OAAOrM,EAAM,MAAM,EACfC,EAAK,KAAK,GAAK,EAAID,EAAM,MAAM,EAAG,EAAE,EAAIqM,EAAQD,CACtD,CACF,CAAC,EAKDpM,EAAM,OAAOA,EAAM,UAAW,CAC5B,IAAK,SAAa0I,EAAG4D,EAAK,CACxB,OAAI5D,EAAI,EACC,EACDA,IAAM,GAAK4D,IAAQ,EAAK,GAC5BrM,EAAK,KAAKqM,EAAM,EAAI,GAAKrM,EAAK,IAAIyI,CAAC,EAAIA,EAAI,EAAK4D,EAAM,EAC7CrM,EAAK,IAAI,CAAC,EAAID,EAAM,QAAQsM,EAAM,CAAC,CAAC,CACnD,EAEA,IAAK,SAAa5D,EAAG4D,EAAK,CACxB,OAAI5D,EAAI,EACC,EACF1I,EAAM,YAAYsM,EAAM,EAAG5D,EAAI,CAAC,CACzC,EAEA,IAAK,SAAS/B,EAAG2F,EAAK,CACpB,MAAO,GAAItM,EAAM,UAAU2G,EAAG,GAAM2F,CAAG,CACzC,EAEA,KAAO,SAASA,EAAK,CACnB,OAAOA,CACT,EAGA,OAAQ,SAAgBA,EAAK,CAC3B,OAAOA,EAAMrM,EAAK,IAAI,EAAK,GAAK,EAAIqM,GAAO,CAAC,CAC9C,EAEA,KAAM,SAAcA,EAAK,CACvB,OAAQA,EAAM,EAAI,EAAKA,EAAM,EAAI,CACnC,EAEA,OAAQ,SAAgBA,EAAK,CAC3B,OAAOtM,EAAM,MAAMsM,EAAM,CAAC,EAAI,CAChC,EAEA,SAAU,SAAkBA,EAAK,CAC/B,MAAO,GAAIA,CACb,CACF,CAAC,EAKDtM,EAAM,OAAOA,EAAM,YAAa,CAC9B,IAAK,SAAa0I,EAAG6D,EAAM,CACzB,OAAO7D,EAAI,EAAI,EAAI6D,EAAOtM,EAAK,IAAI,CAACsM,EAAO7D,CAAC,CAC9C,EAEA,IAAK,SAAaA,EAAG6D,EAAM,CACzB,OAAO7D,EAAI,EAAI,EAAI,EAAIzI,EAAK,IAAI,CAACsM,EAAO7D,CAAC,CAC3C,EAEA,IAAK,SAAS/B,EAAG4F,EAAM,CACrB,MAAO,CAACtM,EAAK,IAAI,EAAI0G,CAAC,EAAI4F,CAC5B,EAEA,KAAO,SAASA,EAAM,CACpB,MAAO,GAAIA,CACb,EAEA,OAAQ,SAAUA,EAAM,CACtB,MAAQ,GAAIA,EAAQtM,EAAK,IAAI,CAAC,CAChC,EAEA,KAAM,UAAwB,CAC5B,MAAO,EACT,EAEA,OAAQ,SAAgBsM,EAAM,CAC5B,MAAO,GAAKA,EAAOtM,EAAK,IAAID,EAAM,WAAW,CAAC,CAChD,EAEA,SAAW,SAASuM,EAAM,CACxB,OAAOtM,EAAK,IAAIsM,EAAM,EAAE,CAC1B,CACF,CAAC,EAKDvM,EAAM,OAAOA,EAAM,MAAO,CACxB,IAAK,SAAa0I,EAAG8C,EAAOa,EAAO,CACjC,OAAI3D,EAAI,EACC,EACDA,IAAM,GAAK8C,IAAU,EAAK,EAAIa,EAC9BpM,EAAK,KAAKuL,EAAQ,GAAKvL,EAAK,IAAIyI,CAAC,EAAIA,EAAI2D,EACjCrM,EAAM,QAAQwL,CAAK,EAAIA,EAAQvL,EAAK,IAAIoM,CAAK,CAAC,CAChE,EAEA,IAAK,SAAa3D,EAAG8C,EAAOa,EAAO,CACjC,OAAI3D,EAAI,EACC,EACF1I,EAAM,YAAYwL,EAAO9C,EAAI2D,CAAK,CAC3C,EAEA,IAAK,SAAS1F,EAAG6E,EAAOa,EAAO,CAC7B,OAAOrM,EAAM,UAAU2G,EAAG6E,CAAK,EAAIa,CACrC,EAEA,KAAO,SAASb,EAAOa,EAAO,CAC5B,OAAOb,EAAQa,CACjB,EAEA,KAAM,SAAcb,EAAOa,EAAO,CAChC,GAAGb,EAAQ,EAAG,OAAQA,EAAQ,GAAKa,CAErC,EAEA,OAAQ,SAAgBb,EAAOa,EAAO,CACpC,OAAOrM,EAAM,MAAMwL,CAAK,EAAIa,CAC9B,EAEA,SAAU,SAAkBb,EAAOa,EAAO,CACxC,OAAOb,EAAQa,EAAQA,CACzB,CACF,CAAC,EAGDrM,EAAM,OAAOA,EAAM,SAAU,CAC3B,IAAK,SAAa0I,EAAG8C,EAAOa,EAAO,CACjC,OAAI3D,GAAK,EACA,EACFzI,EAAK,IAAI,EAAEuL,EAAQ,GAAKvL,EAAK,IAAIyI,CAAC,EAAI2D,EAAQ3D,EACrC1I,EAAM,QAAQwL,CAAK,EAAIA,EAAQvL,EAAK,IAAIoM,CAAK,CAAC,CAChE,EAEA,IAAK,SAAa3D,EAAG8C,EAAOa,EAAO,CACjC,OAAI3D,GAAK,EACA,EACF,EAAI1I,EAAM,YAAYwL,EAAOa,EAAQ3D,CAAC,CAC/C,EAEA,IAAK,SAAS/B,EAAG6E,EAAOa,EAAO,CAC7B,OAAOA,EAAQrM,EAAM,UAAU,EAAI2G,EAAG6E,CAAK,CAC7C,EAEA,KAAO,SAASA,EAAOa,EAAO,CAC5B,OAAQb,EAAQ,EAAKa,GAASb,EAAQ,GAAK,MAC7C,EAEA,KAAM,SAAcA,EAAOa,EAAO,CAChC,OAAOA,GAASb,EAAQ,EAC1B,EAEA,OAAQ,SAAgBA,EAAOa,EAAO,CACpC,OAAOA,EAAQrM,EAAM,MAAMwL,CAAK,CAClC,EAEA,SAAU,SAAkBA,EAAOa,EAAO,CACxC,GAAI,EAAAb,GAAS,GAEb,OAAOa,EAAQA,IAAUb,EAAQ,IAAMA,EAAQ,IAAMA,EAAQ,GAC/D,CACF,CAAC,EAIDxL,EAAM,OAAOA,EAAM,YAAa,CAC9B,IAAK,SAAa0I,EAAGoD,EAAOC,EAAM,CAChC,OAAIrD,IAAM,GAAKoD,IAAU,EAChBC,EACArD,IAAM,GAAKqD,IAAS,EACpBD,EACF7L,EAAK,IAAIA,EAAK,IAAI6L,CAAK,EAAI7L,EAAK,IAAI8L,CAAI,GAAKD,EAAQ,GAC5C7L,EAAK,IAAIyI,CAAC,GAAKqD,EAAO,GACtB9L,EAAK,IAAI,EAAIA,EAAK,IAAIyI,EAAGoD,CAAK,CAAC,CAAC,CAClD,EAEA,IAAK,SAAapD,EAAGoD,EAAOC,EAAM,CAChC,OAAIrD,EAAI,EACC,EACAA,EAAI,EACJ,EACD,EAAIzI,EAAK,IAAI,EAAIA,EAAK,IAAIyI,EAAGoD,CAAK,EAAGC,CAAI,CACnD,EAEA,IAAK,SAAapF,EAAGmF,EAAOC,EAAM,CAChC,OAAO9L,EAAK,IAAI,EAAIA,EAAK,IAAI,EAAI0G,EAAG,EAAIoF,CAAI,EAAG,EAAID,CAAK,CAC1D,EAEA,KAAO,SAASA,EAAOC,EAAM,CAC3B,OAAQA,EAAO/L,EAAM,QAAQ,EAAI,EAAI8L,CAAK,EAClC9L,EAAM,QAAQ+L,CAAI,EAAM/L,EAAM,QAAQ,EAAI,EAAI8L,EAAQC,CAAI,CACpE,EAEA,OAAQ,SAAgBD,EAAOC,EAAM,CACnC,OAAO9L,EAAK,IAAI,EAAIA,EAAK,IAAI,EAAG,GAAK8L,CAAI,EAAG,EAAID,CAAK,CACvD,EAEA,KAAM,SAAcA,EAAOC,EAAM,CAC/B,GAAMD,GAAS,GAAKC,GAAQ,GAAMD,IAAU,GAAKC,IAAS,EAE1D,OAAO9L,EAAK,KAAK6L,EAAQ,IAAMA,EAAQC,EAAO,GAAI,EAAID,CAAK,CAC7D,EAEA,SAAU,UAAmC,CAC3C,MAAM,IAAI,MAAM,8BAA8B,CAEhD,CACF,CAAC,EAKD9L,EAAM,OAAOA,EAAM,UAAW,CAC5B,IAAK,SAAa0I,EAAGT,EAAIC,EAAO,CAC9B,OAAIQ,GAAK,EACA,EACFzI,EAAK,IAAI,CAACA,EAAK,IAAIyI,CAAC,EAAI,GAAMzI,EAAK,IAAI,EAAIA,EAAK,EAAE,EACzCA,EAAK,IAAIiI,CAAK,EAAIjI,EAAK,IAAIA,EAAK,IAAIyI,CAAC,EAAIT,EAAI,CAAC,GAC7C,EAAIC,EAAQA,EAAM,CACrC,EAEA,IAAK,SAAaQ,EAAGT,EAAIC,EAAO,CAC9B,OAAIQ,EAAI,EACC,EACF,GACF,GAAM1I,EAAM,KAAKC,EAAK,IAAIyI,CAAC,EAAIT,GAAMhI,EAAK,KAAK,EAAIiI,EAAQA,CAAK,CAAC,CACxE,EAEA,IAAK,SAASvB,EAAGsB,EAAIC,EAAO,CAC1B,OAAOjI,EAAK,IAAI,oBAAuBiI,EAAQlI,EAAM,QAAQ,EAAI2G,CAAC,EAAIsB,CAAE,CAC1E,EAEA,KAAM,SAAcA,EAAIC,EAAO,CAC7B,OAAOjI,EAAK,IAAIgI,EAAKC,EAAQA,EAAQ,CAAC,CACxC,EAEA,OAAQ,SAAgBD,EAAe,CACrC,OAAOhI,EAAK,IAAIgI,CAAE,CACpB,EAEA,KAAM,SAAcA,EAAIC,EAAO,CAC7B,OAAOjI,EAAK,IAAIgI,EAAKC,EAAQA,CAAK,CACpC,EAEA,OAAQ,SAAgBD,EAAIC,EAAO,CACjC,OAAOjI,EAAK,IAAID,EAAM,MAAM,EAAIkI,EAAQD,CAAE,CAC5C,EAEA,SAAU,SAAkBA,EAAIC,EAAO,CACrC,OAAQjI,EAAK,IAAIiI,EAAQA,CAAK,EAAI,GAAKjI,EAAK,IAAI,EAAIgI,EAAKC,EAAQA,CAAK,CACxE,CACF,CAAC,EAKDlI,EAAM,OAAOA,EAAM,YAAa,CAC9B,IAAK,SAAa0I,EAAG4D,EAAKE,EAAK,CAC7B,IAAIC,EAAM,MACV,OAAIxM,EAAK,IAAIuM,CAAG,EAAIC,EACXzM,EAAM,SAAS,IAAI0I,EAAG4D,CAAG,EAE9BrM,EAAK,IAAIyI,CAAC,EAAI+D,EACTxM,EAAK,IAAID,EAAM,SAASsM,EAAM,GAAK,CAAC,EAAIE,EAAMA,EAAM,EAC3C,GAAMvM,EAAK,IAAIA,EAAK,GAAKqM,CAAG,EAAItM,EAAM,QAAQsM,EAAM,CAAC,CAAC,EAIjEA,EAAM5D,GACR1I,EAAM,YAAY,IAAI0I,EAAIzI,EAAK,KAAK,EAAI,EAAIqM,CAAG,EAAGA,EAAI,EAAGE,CAAG,EAC5DxM,EAAM,YAAY,IAAI0I,EAAG4D,EAAKE,CAAG,EACxC,EAEA,IAAK,SAAa9D,EAAG4D,EAAKE,EAAK,CAC7B,IAAIC,EAAM,MACNC,EAAiB,IAErB,GAAIzM,EAAK,IAAIuM,CAAG,EAAIC,EAClB,OAAOzM,EAAM,SAAS,IAAI0I,EAAG4D,CAAG,EAGlC,IAAIK,EAAO,GACPjE,EAAI,IACNiE,EAAO,GACPH,EAAM,CAACA,GAYT,QATII,EAAO5M,EAAM,OAAO,IAAI,CAACwM,EAAK,EAAG,CAAC,EAClCjF,EAAQkF,EAAM,EAEdI,EAAYtF,EACZuB,EAAIJ,EAAIA,GAAKA,EAAIA,EAAI4D,GACrBjL,EAAI,EACJsF,EAAI1G,EAAK,IAAI,CAACuM,EAAMA,EAAM,CAAC,EAC3BpD,EAAInJ,EAAK,IAAI,CAACuM,EAAMA,EAAM,EAAI,GAAMvM,EAAK,IAAI,CAAC,EACjCD,EAAM,QAAQ,EAAI,CAAC,CAAC,EAAIwM,EAClCnL,EAAIqL,GAAkBG,EAAYJ,GAAOlF,EAAQkF,GACtDI,EAAYtF,EACRlG,EAAI,IACNsF,GAAM6F,EAAMA,GAAQ,EAAInL,GACxB+H,GAAMoD,EAAMA,GAAQ,GAAKnL,EAAI,EAAI,KAEnCkG,EAAQZ,EAAI3G,EAAM,KAAK,IAAI8I,EAAGzH,EAAI,GAAKiL,EAAM,CAAC,EAC1ClD,EAAIpJ,EAAM,KAAK,IAAI8I,EAAGzH,EAAE,EAAGiL,EAAI,CAAC,EACpCM,GAAQ,GAAMrF,EACdlG,IAGF,OAAOsL,EAAQ,EAAIC,EAAQA,CAC7B,CACF,CAAC,EAID5M,EAAM,OAAOA,EAAM,OAAQ,CACzB,IAAK,SAAa0I,EAAGlE,EAAMsI,EAAK,CAC9B,OAAO7M,EAAK,IAAI,IAAOA,EAAK,IAAI,EAAIA,EAAK,EAAE,EAC3BA,EAAK,IAAI6M,CAAG,EAAI7M,EAAK,IAAIyI,EAAIlE,EAAM,CAAC,GAAK,EAAIsI,EAAMA,EAAI,CACzE,EAEA,IAAK,SAAapE,EAAGlE,EAAMsI,EAAK,CAC9B,MAAO,KAAO,EAAI9M,EAAM,KAAK0I,EAAIlE,GAAQvE,EAAK,KAAK,EAAI6M,EAAMA,CAAG,CAAC,EACnE,EAEA,IAAK,SAASnG,EAAGnC,EAAMsI,EAAK,CAC1B,MAAO,oBAAuBA,EAAM9M,EAAM,QAAQ,EAAI2G,CAAC,EAAInC,CAC7D,EAEA,KAAO,SAASA,EAAe,CAC7B,OAAOA,CACT,EAEA,OAAQ,SAAgBA,EAAe,CACrC,OAAOA,CACT,EAEA,KAAM,SAAUA,EAAe,CAC7B,OAAOA,CACT,EAEA,OAAQ,SAAgBA,EAAMsI,EAAK,CACjC,OAAO9M,EAAM,MAAM,EAAI8M,EAAMtI,CAC/B,EAEA,SAAW,SAASA,EAAMsI,EAAK,CAC7B,OAAOA,EAAMA,CACf,CACF,CAAC,EAKD9M,EAAM,OAAOA,EAAM,OAAQ,CACzB,IAAK,SAAa0I,EAAG2D,EAAOb,EAAO,CACjC,OAAI9C,EAAI2D,EACC,EACDb,EAAQvL,EAAK,IAAIoM,EAAOb,CAAK,EAAKvL,EAAK,IAAIyI,EAAG8C,EAAQ,CAAC,CACjE,EAEA,IAAK,SAAa9C,EAAG2D,EAAOb,EAAO,CACjC,OAAI9C,EAAI2D,EACC,EACF,EAAIpM,EAAK,IAAIoM,EAAQ3D,EAAG8C,CAAK,CACtC,EAEA,IAAK,SAAa7E,EAAG0F,EAAOb,EAAO,CACjC,OAAOa,EAAQpM,EAAK,IAAI,EAAI0G,EAAG,EAAI6E,CAAK,CAC1C,EAEA,KAAM,SAAca,EAAOb,EAAO,CAChC,GAAI,EAAAA,GAAS,GAEb,OAAQA,EAAQvL,EAAK,IAAIoM,EAAOb,CAAK,GAAMA,EAAQ,EACrD,EAEA,OAAQ,SAAgBa,EAAOb,EAAO,CACpC,OAAOa,GAASb,EAAQvL,EAAK,MAC/B,EAEA,KAAM,SAAcoM,EAAkB,CACpC,OAAOA,CACT,EAEA,SAAW,SAASA,EAAOb,EAAO,CAChC,GAAI,EAAAA,GAAS,GAEb,OAAQa,EAAMA,EAAQb,GAAUvL,EAAK,IAAIuL,EAAQ,EAAG,CAAC,GAAKA,EAAQ,GACpE,CACF,CAAC,EAKDxL,EAAM,OAAOA,EAAM,SAAU,CAC3B,IAAK,SAAa0I,EAAG4D,EAAK,CACxB,OAAAA,EAAMA,EAAM,MAAQ,MAAQA,EACpB,GAAGrM,EAAK,KAAKqM,CAAG,EAAItM,EAAM,OAAO,GAAKsM,EAAI,CAAC,GAC/CrM,EAAK,IAAI,EAAMyI,EAAIA,EAAK4D,EAAM,GAAGA,EAAM,GAAK,EAAE,CACpD,EAEA,IAAK,SAAa5D,EAAG4D,EAAK,CACxB,IAAIS,EAAOT,EAAM,EACjB,OAAOtM,EAAM,OAAO0I,EAAIzI,EAAK,KAAKyI,EAAIA,EAAI4D,CAAG,IACzB,EAAIrM,EAAK,KAAKyI,EAAIA,EAAI4D,CAAG,GAAIS,EAAMA,CAAI,CAC7D,EAEA,IAAK,SAASpG,EAAG2F,EAAK,CACpB,IAAI5D,EAAI1I,EAAM,SAAS,EAAIC,EAAK,IAAI0G,EAAG,EAAIA,CAAC,EAAG,GAAM2F,EAAK,EAAG,EAC7D,OAAA5D,EAAIzI,EAAK,KAAKqM,GAAO,EAAI5D,GAAKA,CAAC,EACvB/B,EAAI,GAAO+B,EAAI,CAACA,CAC1B,EAEA,KAAM,SAAc4D,EAAK,CACvB,OAAQA,EAAM,EAAK,EAAI,MACzB,EAEA,OAAQ,UAAyB,CAC/B,MAAO,EACT,EAEA,KAAM,UAAuB,CAC3B,MAAO,EACT,EAEA,OAAQ,SAAgBA,EAAK,CAC3B,OAAOtM,EAAM,MAAM,EAAIC,EAAK,KAAKqM,GAAO,EAAItM,EAAM,MAAMsM,EAAM,CAAC,EAAE,CACnE,EAEA,SAAU,SAAkBA,EAAK,CAC/B,OAAQA,EAAO,EAAKA,GAAOA,EAAM,GAAMA,EAAM,EAAK,IAAW,MAC/D,CACF,CAAC,EAKDtM,EAAM,OAAOA,EAAM,QAAS,CAC1B,IAAK,SAAa0I,EAAG2D,EAAOb,EAAO,CACjC,OAAI9C,EAAI,GAAK2D,EAAQ,GAAKb,EAAQ,EACzB,EACDA,EAAQa,EAASpM,EAAK,IAAKyI,EAAI2D,EAASb,EAAQ,CAAE,EACtDvL,EAAK,IAAI,CAAEA,EAAK,IAAKyI,EAAI2D,EAAQb,CAAK,CAAE,CAC9C,EAEA,IAAK,SAAa9C,EAAG2D,EAAOb,EAAO,CACjC,OAAO9C,EAAI,EAAI,EAAI,EAAIzI,EAAK,IAAI,CAACA,EAAK,IAAKyI,EAAI2D,EAAQb,CAAK,CAAC,CAC/D,EAEA,IAAK,SAAS7E,EAAG0F,EAAOb,EAAO,CAC7B,OAAOa,EAAQpM,EAAK,IAAI,CAACA,EAAK,IAAI,EAAI0G,CAAC,EAAG,EAAI6E,CAAK,CACrD,EAEA,KAAO,SAASa,EAAOb,EAAO,CAC5B,OAAOa,EAAQrM,EAAM,QAAQ,EAAI,EAAIwL,CAAK,CAC5C,EAEA,OAAQ,SAAgBa,EAAOb,EAAO,CACpC,OAAOa,EAAQpM,EAAK,IAAIA,EAAK,IAAI,CAAC,EAAG,EAAIuL,CAAK,CAChD,EAEA,KAAM,SAAca,EAAOb,EAAO,CAChC,OAAIA,GAAS,EACJ,EACFa,EAAQpM,EAAK,KAAKuL,EAAQ,GAAKA,EAAO,EAAIA,CAAK,CACxD,EAEA,OAAQ,SAAgBa,EAAOb,EAAO,CACpC,OAAOa,EAAQpM,EAAK,IAAI,CAACA,EAAK,IAAID,EAAM,WAAW,CAAC,EAAG,EAAIwL,CAAK,CAClE,EAEA,SAAU,SAAkBa,EAAOb,EAAO,CACxC,OAAOa,EAAQA,EAAQrM,EAAM,QAAQ,EAAI,EAAIwL,CAAK,EAC9CvL,EAAK,IAAID,EAAM,QAAQ,KAAKqM,EAAOb,CAAK,EAAG,CAAC,CAClD,CACF,CAAC,EAKDxL,EAAM,OAAOA,EAAM,QAAS,CAC1B,IAAK,SAAa0I,EAAGhH,EAAG2C,EAAG,CACzB,OAAQqE,EAAIhH,GAAKgH,EAAIrE,EAAK,EAAI,GAAKA,EAAI3C,EACzC,EAEA,IAAK,SAAagH,EAAGhH,EAAG2C,EAAG,CACzB,OAAIqE,EAAIhH,EACC,EACAgH,EAAIrE,GACHqE,EAAIhH,IAAM2C,EAAI3C,GACjB,CACT,EAEA,IAAK,SAASiF,EAAG,EAAGtC,EAAG,CACrB,OAAO,EAAKsC,GAAKtC,EAAI,EACvB,EAEA,KAAM,SAAc,EAAGA,EAAG,CACxB,MAAO,KAAO,EAAIA,EACpB,EAEA,OAAQ,SAAgB,EAAGA,EAAG,CAC5B,OAAOrE,EAAM,KAAK,EAAGqE,CAAC,CACxB,EAEA,KAAM,UAAwB,CAC5B,MAAM,IAAI,MAAM,6BAA6B,CAC/C,EAEA,OAAQ,SAAgB,EAAGA,EAAG,CAC5B,OAAQ,EAAI,EAAIA,EAAI,GAAMA,EAAI,EAAI,EAAI,IAAM,EAAIrE,EAAM,WAAW,EAAI,EACvE,EAEA,SAAU,SAAkB,EAAGqE,EAAG,CAChC,OAAOpE,EAAK,IAAIoE,EAAI,EAAG,CAAC,EAAI,EAC9B,CACF,CAAC,EAID,SAAS2I,EAAOtE,EAAG,EAAGrE,EAAG4I,EAAK,CAS5B,QARIC,EAAK,EACLC,EAAK,EACL3C,EAAK,EACLU,EAAK,EACLkC,EAAK,EACL1B,EAAK,EACL2B,EAEGpN,EAAK,KAAKuK,EAAKkB,GAAMlB,CAAE,EAAIyC,GAChCvB,EAAKlB,EACL6C,EAAK,EAAE,EAAID,IAAO,EAAI/I,EAAI+I,GAAM1E,GAAK,EAAI,EAAI0E,IAAO,EAAI,EAAIA,EAAK,GACjEF,EAAK1C,EAAK6C,EAAKH,EACfC,EAAKjC,EAAKmC,EAAKF,EACfC,EAAKA,EAAK,EACVC,EAAKD,GAAM/I,EAAI+I,GAAM1E,GAAK,EAAI,EAAI0E,EAAK,IAAM,EAAI,EAAIA,GACrD5C,EAAK0C,EAAKG,EAAK7C,EACfU,EAAKiC,EAAKE,EAAKnC,EACfgC,EAAKA,EAAKhC,EACViC,EAAKA,EAAKjC,EACVV,EAAKA,EAAKU,EACVA,EAAK,EAGP,OAAOV,EAAK,CACd,CAIAxK,EAAM,OAAOA,EAAM,SAAU,CAC3B,IAAK,SAAa6G,EAAGtG,EAAGoG,EAAG,CACzB,OAAQA,IAAM,GAAKA,IAAM,EACrBpG,EAAIoG,IAAOE,EAAI,EAAI,EACrB7G,EAAM,YAAYO,EAAGsG,CAAC,EAAI5G,EAAK,IAAI0G,EAAGE,CAAC,EAAI5G,EAAK,IAAI,EAAI0G,EAAGpG,EAAIsG,CAAC,CACpE,EAEA,IAAK,SAAa6B,EAAGnI,EAAGoG,EAAG,CACzB,IAAI2G,EACAL,EAAM,MAEV,GAAIvE,EAAI,EACN,MAAO,GACT,GAAIA,GAAKnI,EACP,MAAO,GACT,GAAIoG,EAAI,GAAKA,EAAI,GAAKpG,GAAK,EACzB,MAAO,KAETmI,EAAIzI,EAAK,MAAMyI,CAAC,EAChB,IAAIc,EAAI7C,EACJjF,EAAIgH,EAAI,EACRrE,EAAI9D,EAAImI,EACR6E,EAAI7L,EAAI2C,EACRkH,EAAKtL,EAAK,IAAID,EAAM,QAAQuN,CAAC,EAAIvN,EAAM,QAAQqE,CAAC,EAClCrE,EAAM,QAAQ0B,CAAC,EAAIA,EAAIzB,EAAK,IAAIuJ,CAAC,EAAInF,EAAIpE,EAAK,IAAI,EAAIuJ,CAAC,CAAC,EAE1E,OAAIA,GAAK9H,EAAI,IAAM6L,EAAI,GACrBD,EAAU/B,EAAKyB,EAAOxD,EAAG9H,EAAG2C,EAAG4I,CAAG,EAElCK,EAAU,EAAI/B,EAAKyB,EAAO,EAAIxD,EAAGnF,EAAG3C,EAAGuL,CAAG,EAErChN,EAAK,OAAO,EAAIqN,IAAY,EAAIL,EAAI,GAAK,EAAIA,EACtD,CACF,CAAC,EAKDjN,EAAM,OAAOA,EAAM,OAAQ,CACzB,IAAK,SAAa6G,EAAG2G,EAAG7G,EAAG,CACzB,OAAIE,IAAMA,IAAM,EACP,GACLA,EAAI,EACC,EACF7G,EAAM,YAAY6G,EAAI2G,EAAI,EAAGA,EAAI,CAAC,EACrCvN,EAAK,IAAI,EAAI0G,EAAGE,CAAC,EAAI5G,EAAK,IAAI0G,EAAG6G,CAAC,CACxC,EAEA,IAAK,SAAa9E,EAAG8E,EAAG7G,EAAG,CACzB,IAAIpC,EAAM,EACVsC,EAAI,EACJ,GAAI6B,EAAI,EAAG,MAAO,GAClB,KAAO7B,GAAK6B,EAAG7B,IACbtC,GAAOvE,EAAM,OAAO,IAAI6G,EAAG2G,EAAG7G,CAAC,EAEjC,OAAOpC,CACT,CACF,CAAC,EAKDvE,EAAM,OAAOA,EAAM,QAAS,CAC1B,IAAK,SAAa6G,EAAG4G,EAAGjN,EAAGD,EAAG,CAU5B,GAAGsG,IAAMA,EAAI,EACX,MAAO,GACF,GAAGA,EAAI,GAAKA,EAAIrG,GAAKiN,EAAIlN,GAE9B,MAAO,GACF,GAAGsG,EAAItG,GAAKsG,EAAIrG,EAErB,MAAO,GACF,GAAIA,EAAI,EAAIiN,EAGjB,OAAGlN,EAAI,EAAIkN,EAGFzN,EAAM,QAAQ,IAAIyN,EAAIjN,EAAID,EAAIsG,EAAG4G,EAAGA,EAAIjN,EAAGiN,EAAIlN,CAAC,EAIhDP,EAAM,QAAQ,IAAIO,EAAIsG,EAAG4G,EAAGA,EAAIjN,EAAGD,CAAC,EAGxC,GAAGA,EAAI,EAAIkN,EAGhB,OAAOzN,EAAM,QAAQ,IAAIQ,EAAIqG,EAAG4G,EAAGjN,EAAGiN,EAAIlN,CAAC,EAEtC,GAAGC,EAAID,EAGZ,OAAOP,EAAM,QAAQ,IAAI6G,EAAG4G,EAAGlN,EAAGC,CAAC,EAkBnC,QALIkN,EAAY,EAGZC,EAAc,EAEVzM,EAAI,EAAGA,EAAI2F,EAAG3F,IAAK,CAGzB,KAAMwM,EAAY,GAAKC,EAAcpN,GAInCmN,GAAa,EAAKlN,GAAKiN,EAAIE,GAG3BA,IAKFD,IAAcnN,EAAIW,IAAMV,EAAIU,KAAOA,EAAI,IAAMuM,EAAIjN,EAAID,EAAIW,EAAI,GAC/D,CAEA,KAAMyM,EAAcpN,EAAGoN,IAErBD,GAAa,EAAKlN,GAAKiN,EAAIE,GAI7B,OAAO1N,EAAK,IAAI,EAAGA,EAAK,IAAI,EAAGyN,CAAS,CAAC,CAE7C,EAEA,IAAK,SAAahF,EAAG+E,EAAGjN,EAAGD,EAAG,CAY5B,GAAGmI,EAAI,GAAKA,EAAIlI,GAAKiN,EAAIlN,GAEvB,MAAO,GACF,GAAGmI,GAAKnI,GAAKmI,GAAKlI,EAEvB,MAAO,GACF,GAAIA,EAAI,EAAIiN,EAGjB,OAAGlN,EAAI,EAAIkN,EAGFzN,EAAM,QAAQ,IAAIyN,EAAIjN,EAAID,EAAImI,EAAG+E,EAAGA,EAAIjN,EAAGiN,EAAIlN,CAAC,EAIhD,EAAIP,EAAM,QAAQ,IAAIO,EAAImI,EAAI,EAAG+E,EAAGA,EAAIjN,EAAGD,CAAC,EAGhD,GAAGA,EAAI,EAAIkN,EAGhB,MAAO,GAAIzN,EAAM,QAAQ,IAAIQ,EAAIkI,EAAI,EAAG+E,EAAGjN,EAAGiN,EAAIlN,CAAC,EAE9C,GAAGC,EAAID,EAGZ,OAAOP,EAAM,QAAQ,IAAI0I,EAAG+E,EAAGlN,EAAGC,CAAC,EAqBnC,QATIoN,EAAY,EAIZF,EAAY,EAGZC,EAAc,EAEVzM,EAAI,EAAGA,EAAIwH,EAAGxH,IAAK,CAGzB,KAAM0M,EAAY,GAAKD,EAAcpN,GAAG,CAItC,IAAIsN,EAAS,EAAKrN,GAAKiN,EAAIE,GAE3BD,GAAaG,EACbD,GAAaC,EAGbF,GACF,CAIAD,IAAcnN,EAAIW,IAAMV,EAAIU,KAAOA,EAAI,IAAMuM,EAAIjN,EAAID,EAAIW,EAAI,IAG7D0M,GAAaF,CACf,CAEA,KAAMC,EAAcpN,EAAGoN,IAErBC,GAAa,EAAKpN,GAAKiN,EAAIE,GAI7B,OAAO1N,EAAK,IAAI,EAAGA,EAAK,IAAI,EAAG2N,CAAS,CAAC,CAE7C,CACF,CAAC,EAKD5N,EAAM,OAAOA,EAAM,QAAS,CAC1B,IAAK,SAAa6G,EAAGiH,EAAG,CACtB,OAAIA,EAAI,GAAMjH,EAAI,IAAO,GAAKA,EAAI,EACzB,EAGF5G,EAAK,IAAI6N,EAAGjH,CAAC,EAAI5G,EAAK,IAAI,CAAC6N,CAAC,EAAI9N,EAAM,UAAU6G,CAAC,CAC1D,EAEA,IAAK,SAAa6B,EAAGoF,EAAG,CACtB,IAAIC,EAAS,CAAC,EACdlH,EAAI,EACJ,GAAI6B,EAAI,EAAG,MAAO,GAClB,KAAO7B,GAAK6B,EAAG7B,IACbkH,EAAO,KAAK/N,EAAM,QAAQ,IAAI6G,EAAGiH,CAAC,CAAC,EAErC,OAAO9N,EAAM,IAAI+N,CAAM,CACzB,EAEA,KAAO,SAASD,EAAG,CACjB,OAAOA,CACT,EAEA,SAAW,SAASA,EAAG,CACrB,OAAOA,CACT,EAEA,YAAa,SAAqBA,EAAG,CACnC,IAAInH,EAAI,EAAGE,EAAI,EAAGmH,EAAI/N,EAAK,IAAI,CAAC6N,CAAC,EACjC,GACEjH,IACAF,GAAK3G,EAAM,WAAW,QACf2G,EAAIqH,GACb,OAAOnH,EAAI,CACb,EAEA,YAAa,SAAqBiH,EAAG,CACnC,IAAIG,EAAMH,EACNjH,EACAqH,EAAGC,EAAGC,EAAMC,EAAQ3M,EAAG2C,EAAGiK,EAAUC,EAAIC,EAS5C,IAPAJ,EAAOnO,EAAK,KAAKgO,CAAG,EACpBI,EAASpO,EAAK,IAAIgO,CAAG,EACrB5J,EAAI,KAAQ,KAAO+J,EACnB1M,EAAI,MAAS,OAAU2C,EACvBiK,EAAW,OAAS,QAAUjK,EAAI,KAClCkK,EAAK,MAAS,QAAUlK,EAAI,KAElB,CAKR,GAJA6J,EAAIjO,EAAK,OAAO,EAAI,GACpBkO,EAAIlO,EAAK,OAAO,EAChBuO,EAAK,GAAMvO,EAAK,IAAIiO,CAAC,EACrBrH,EAAI5G,EAAK,OAAO,EAAIyB,EAAI8M,EAAKnK,GAAK6J,EAAID,EAAM,GAAI,EAC3CO,GAAM,KAAUL,GAAKI,EACtB,OAAO1H,EAEX,GAAK,EAAAA,EAAI,GAAQ2H,EAAK,MAAWL,EAAIK,IAKhCvO,EAAK,IAAIkO,CAAC,EAAIlO,EAAK,IAAIqO,CAAQ,EAAIrO,EAAK,IAAIyB,GAAK8M,EAAKA,GAAMnK,CAAC,GAAO,CAAC4J,EAAMpH,EAAIwH,EAASrO,EAAM,OAAO6G,EAAI,CAAC,EAC3G,OAAOA,CAEb,CACF,EAEA,OAAQ,SAAgBiH,EAAG,CACzB,OAAIA,EAAI,GACC,KAAK,YAAYA,CAAC,EAElB,KAAK,YAAYA,CAAC,CAC7B,CACF,CAAC,EAGD9N,EAAM,OAAOA,EAAM,WAAY,CAC7B,IAAK,SAAa0I,EAAGhH,EAAG2C,EAAGwF,EAAG,CAC5B,OAAIxF,GAAK3C,GAAKmI,EAAInI,GAAKmI,EAAIxF,EAClB,IAEHqE,EAAIhH,GAAKgH,EAAIrE,EACR,EACEqE,EAAImB,EACH,GAAKnB,EAAIhH,KAAQ2C,EAAI3C,IAAMmI,EAAInI,IAChCgH,IAAMmB,EACL,GAAKxF,EAAI3C,GAET,GAAK2C,EAAIqE,KAAQrE,EAAI3C,IAAM2C,EAAIwF,GAG/C,EAEA,IAAK,SAAanB,EAAGhH,EAAG2C,EAAGwF,EAAG,CAC5B,OAAIxF,GAAK3C,GAAKmI,EAAInI,GAAKmI,EAAIxF,EAClB,IACLqE,GAAKhH,EACA,EACAgH,GAAKrE,EACL,EACLqE,GAAKmB,EACA5J,EAAK,IAAIyI,EAAIhH,EAAG,CAAC,IAAM2C,EAAI3C,IAAMmI,EAAInI,IAErC,EAAIzB,EAAK,IAAIoE,EAAIqE,EAAG,CAAC,IAAMrE,EAAI3C,IAAM2C,EAAIwF,GACpD,EAEA,IAAK,SAAalD,EAAGjF,EAAG2C,EAAGwF,EAAG,CAC5B,OAAIxF,GAAK3C,GAAKmI,EAAInI,GAAKmI,EAAIxF,EAClB,IAEHsC,IAAOkD,EAAInI,IAAM2C,EAAI3C,GAChBA,GAAK2C,EAAI3C,GAAKzB,EAAK,KAAK0G,IAAMkD,EAAInI,IAAM2C,EAAI3C,GAAG,EAE/CA,GAAK2C,EAAI3C,IAAM,EAAIzB,EAAK,MAAM,EAAI0G,IAAM,GAAMkD,EAAInI,IAAM2C,EAAI3C,GAAI,EAG7E,EAEA,KAAM,SAAc,EAAG2C,EAAGwF,EAAG,CAC3B,OAAQ,EAAIxF,EAAIwF,GAAK,CACvB,EAEA,OAAQ,SAAgB,EAAGxF,EAAGwF,EAAG,CAC/B,GAAIA,IAAM,EAAIxF,GAAK,EACjB,OAAOA,EAAIpE,EAAK,MAAMoE,EAAI,IAAMA,EAAIwF,EAAE,EAAI5J,EAAK,KAAK,CAAC,EAChD,GAAI4J,GAAK,EAAIxF,GAAK,EACvB,OAAO,EAAIpE,EAAK,MAAMoE,EAAI,IAAMwF,EAAI,EAAE,EAAI5J,EAAK,KAAK,CAAC,CAEzD,EAEA,KAAM,SAAc,EAAGoE,EAAGwF,EAAG,CAC3B,OAAOA,CACT,EAEA,OAAQ,SAAgB,EAAGxF,EAAGwF,EAAG,CAC/B,IAAIhC,EAAI7H,EAAM,WAAW,EACzB,OAAI6H,GAAMgC,EAAI,IAAMxF,EAAI,GACf,EAAIpE,EAAK,KAAK4H,GAAKxD,EAAI,IAAMwF,EAAI,EAAE,EACrCxF,EAAIpE,EAAK,MAAM,EAAI4H,IAAMxD,EAAI,IAAMA,EAAIwF,EAAE,CAClD,EAEA,SAAU,SAAkB,EAAGxF,EAAGwF,EAAG,CACnC,OAAQ,EAAI,EAAIxF,EAAIA,EAAIwF,EAAIA,EAAI,EAAIxF,EAAI,EAAIwF,EAAIxF,EAAIwF,GAAK,EAC3D,CACF,CAAC,EAID7J,EAAM,OAAOA,EAAM,QAAS,CAC1B,IAAK,SAAa0I,EAAGhH,EAAG2C,EAAG,CACzB,OAAIA,GAAK3C,EAAU,IAEXgH,GAAKhH,GAAKgH,GAAKrE,EAAK,EACzB,EAAIpE,EAAK,GACRA,EAAK,IAAIA,EAAK,IAAIoE,EAAI3C,EAAG,CAAC,EAChBzB,EAAK,IAAI,EAAIyI,EAAIhH,EAAI2C,EAAG,CAAC,EAAG,GAAI,CAChD,EAEA,IAAK,SAAaqE,EAAGhH,EAAG2C,EAAG,CACzB,OAAIqE,EAAIhH,EACC,EACAgH,EAAIrE,EACH,EAAIpE,EAAK,GAAMA,EAAK,KAAKA,EAAK,MAAMyI,EAAIhH,IAAI2C,EAAI3C,EAAE,CAAC,EACtD,CACT,EAEA,IAAK,SAASiF,EAAG,EAAGtC,EAAG,CACrB,OAAO,GAAK,GAAM,GAAMpE,EAAK,IAAIA,EAAK,GAAK0G,CAAC,IAAMtC,EAAI,EACxD,EAEA,KAAM,SAAc,EAAGA,EAAG,CACxB,OAAIA,GAAK,EAAU,KACX,EAAIA,GAAK,CACnB,EAEA,OAAQ,SAAgB,EAAGA,EAAG,CAC5B,OAAIA,GAAK,EAAU,KACX,EAAIA,GAAK,CACnB,EAEA,KAAM,UAAwB,CAC5B,MAAM,IAAI,MAAM,6BAA6B,CAC/C,EAEA,OAAQ,SAAgB,EAAGA,EAAG,CAC5B,OAAS,EAAIA,GAAK,GAAOA,EAAI,GAAK,EAChCpE,EAAK,IAAI,EAAIA,EAAK,GAAKD,EAAM,QAAQ,OAAO,EAAG,CAAC,CAAC,CACrD,EAEA,SAAU,SAAkB,EAAGqE,EAAG,CAChC,OAAIA,GAAK,EAAU,IACZpE,EAAK,IAAIoE,EAAI,EAAG,CAAC,EAAI,CAC9B,CACF,CAAC,EAGD,SAASoK,EAAY/F,EAAG,CAAE,OAAOA,EAAIzI,EAAK,IAAIyI,CAAC,CAAG,CAElD1I,EAAM,OAAOA,EAAM,QAAS,CAC1B,IAAK,SAAa0I,EAAGT,EAAI5D,EAAG,CAC1B,OAAQA,GAAK,EAAK,EAAKpE,EAAK,IAAI,CAACA,EAAK,IAAIyI,EAAIT,CAAE,EAAI5D,CAAC,GAAM,EAAIA,EACjE,EAEA,IAAK,SAAaqE,EAAGT,EAAI5D,EAAG,CAC1B,OAAIA,GAAK,EAAY,EAElBqE,EAAIT,EACE,GAAMhI,EAAK,KAAKyI,EAAIT,GAAM5D,CAAC,EAE3B,EAAI,GAAMpE,EAAK,IAAI,EAAGyI,EAAIT,GAAM5D,CAAC,CAE5C,EAEA,KAAM,SAAS4D,EAAW,CACxB,OAAOA,CACT,EAEA,OAAQ,SAASA,EAAW,CAC1B,OAAOA,CACT,EAEA,KAAM,SAASA,EAAW,CACxB,OAAOA,CACT,EAEA,SAAU,SAASA,EAAI5D,EAAG,CACxB,MAAO,GAAIA,EAAIA,CACjB,EAEA,OAAQ,SAAgB4D,EAAI5D,EAAG,CAC7B,IAAIwD,EAAI7H,EAAM,WAAW,EAAI,GAE7B,OAAOiI,EAAM5D,EAAIoK,EAAY5G,CAAC,EAAI5H,EAAK,IAAI,EAAK,EAAIA,EAAK,IAAI4H,CAAC,CAAE,CAClE,CACF,CAAC,EAED,SAAS6G,EAAWpD,EAAGqD,EAAIC,EAAI,CAC7B,IAAIC,EAAO,GACPC,EAAQ,EAERC,EAAK,IACLC,EAAK,IACLC,EAAK,GACLC,EAAO,EACPC,EAAO,EACPC,EAAS,EACTC,EAAS,EACTC,EAAO,CACT,kBACA,kBACA,kBACA,kBACA,kBACA,iBACF,EACIC,EAAO,CACT,mBACA,mBACA,mBACA,mBACA,kBACA,kBACF,EAEIC,EAAOlE,EAAI,GAKf,GAAIkE,GAAQN,EACV,MAAO,GAKT,IAAIO,EAAO,EAAIzP,EAAM,OAAO,IAAIwP,EAAM,EAAG,EAAG,EAAG,CAAC,EAAI,EAEhDC,GAAQxP,EAAK,IAAI+O,EAAKJ,CAAE,EAC1Ba,EAAOxP,EAAK,IAAIwP,EAAMb,CAAE,EAExBa,EAAO,EAKT,IAAIC,EACApE,EAAI6D,EACNO,EAAQN,EAERM,EAAQL,EAkBV,QARIM,EAAMH,EACNI,GAAQV,EAAKM,GAAQE,EACrBG,EAAMF,EAAMC,EACZE,EAAS,EAITC,EAAMnB,EAAK,EACNoB,EAAK,EAAGA,GAAMN,EAAOM,IAAM,CAQlC,QAPIC,EAAQ,EACRvO,EAAI,IAAOmO,EAAMF,GAIjBtL,EAAI,IAAOwL,EAAMF,GAEZO,EAAK,EAAGA,GAAMrB,EAAMqB,IAAM,CACjC,IAAI7O,GAAGwH,EACHiG,EAAQoB,GACV7O,GAAKwN,EAAOqB,EAAM,EAClBrH,EAAKyG,EAAKjO,GAAE,CAAC,IAEbA,GAAI6O,EACJrH,EAAK,CAACyG,EAAKjO,GAAE,CAAC,GAEhB,IAAIwI,GAAIxF,EAAIwE,EACRsH,GAAKzO,EAAImI,GAKTuG,GAAQD,GAAKA,GACjB,GAAIC,GAAQnB,EACV,MAEF,IAAIoB,GAAQ,EAAIrQ,EAAM,OAAO,IAAImQ,GAAI,EAAG,EAAG,EAAG,CAAC,EAC3CG,GAAQ,EAAItQ,EAAM,OAAO,IAAImQ,GAAI7E,EAAG,EAAG,EAAG,CAAC,EAK3CiF,GAAUF,GAAQ,GAAQC,GAAS,GACnCC,IAAUtQ,EAAK,IAAI8O,EAAKgB,CAAG,IAC7BQ,GAAUhB,EAAKlO,GAAE,CAAC,EAAIpB,EAAK,IAAI,EAAE,GAAMmQ,GAAM,EAAKnQ,EAAK,IAAIsQ,GAAQR,CAAG,EACtEE,GAASM,GAEb,CACAN,GAAY,EAAM5L,EAAKuK,EAAM3O,EAAK,KAAK,EAAIA,EAAK,EAAE,EAClD6P,GAAUG,EACVN,EAAME,EACNA,GAAOD,CACT,CAIA,OADAH,GAAQK,EACJL,GAAQxP,EAAK,IAAI8O,EAAKJ,CAAE,EACnB,GAETc,EAAOxP,EAAK,IAAIwP,EAAMd,CAAE,EACpBc,GAAQ,EACH,EACFA,EACT,CAEA,SAASe,EAAU7J,EAAGkD,EAAG/B,EAAG,CAC1B,IAAI2I,EAAK,cACLC,EAAK,cACLC,EAAK,GACLC,EAAK,cACLC,EAAK,eACLC,EAAK,cACLC,EAAK,eACLC,EAAK,aACLC,EAAK,kBACLC,EAAK,eACLC,EAAK,MACLC,EAAK,MACLC,EAAK,MACLC,EAAK,MACLC,EAAK,OACLC,EAAO,IAEPC,EAAK,GAAM,GAAM9K,EACjB8C,EAAKxJ,EAAK,KAAKA,EAAK,IAAI,GAAOwR,EAAKA,EAAG,CAAC,EACxC3N,EAAI2F,MAAUA,EAAKwH,EAAKF,GAAMtH,EAAKoH,GAAMpH,EAAKkH,GAAMlH,EAAKgH,OACnDhH,EAAKyH,EAAKF,GAAMvH,EAAKqH,GAAMrH,EAAKmH,GAAMnH,EAAKiH,GACjD5I,EAAI0J,IAAM1N,IAAMA,EAAIA,EAAIA,EAAIA,GAAKgE,EAAI,GACzC,IAAIsB,EAAI+H,EAAKC,EAAKtN,EAClB,OAAIgE,EAAI0J,IAAMpI,GAAK,CAACiI,EAAKvJ,EAAIwJ,EAAKxN,EAAIgE,GAC/BhE,GAAKsF,EAAInJ,EAAK,IAAI4J,EAAI,CAAG,EAAI0H,EACtC,CAEAvR,EAAM,OAAOA,EAAM,MAAO,CACxB,IAAK,SAAaoJ,EAAGsI,EAAQC,EAAI,CAE/B,IAAIhD,EAAK,EACLC,EAAK8C,EAELE,EAAQ,GACRC,EAAS,EAETC,EAAO,IACPC,EAAO,MACPC,EAAQ,IACRC,EAAQ,IACRC,EAAQ,IACRC,EAAQ,KACRC,EAAQ,EACRC,EAAQ,GACRC,EAAQ,IACRC,EAAQ,KACRC,EAAQ,CACV,kBACA,kBACA,kBACA,iBACA,kBACA,mBACA,kBACA,kBACF,EACIC,EAAQ,CACV,oBACA,oBACA,mBACA,mBACA,mBACA,mBACA,mBACA,iBACF,EAEA,GAAIrJ,GAAK,EACP,MAAO,GAKT,GAAIuI,EAAK,GAAKhD,EAAK,GAAKC,EAAK,EAAG,MAAO,KAEvC,GAAI,CAAC,OAAO,SAASxF,CAAC,EACpB,MAAO,GAET,GAAIuI,EAAKQ,EACP,OAAOzD,EAAWtF,EAAGuF,EAAIC,CAAE,EAI7B,IAAI8D,EAAKf,EAAK,GACVgB,EAASD,EAAKzS,EAAK,IAAI0R,CAAE,EAAMA,EAAK1R,EAAK,IAAI,CAAC,EAAMD,EAAM,QAAQ0S,CAAE,EACpEE,EAAMF,EAAK,EAMXG,EAAMlB,EAAK,IACXmB,EACKnB,GAAMK,EAAOc,EAAOV,EACpBT,GAAMM,EAAOa,EAAOT,EACpBV,GAAMO,EAAOY,EAAOR,EACPQ,EAAOP,EAE7BI,GAAQ1S,EAAK,IAAI6S,CAAI,EAMrB,QAFIC,EAAM,EAED7R,EAAI,EAAGA,GAAK,GAAIA,IAAK,CAQ5B,QAPI8R,GAAQ,EAKRC,GAAQ,EAAI/R,EAAI,GAAK4R,EAEhB5C,GAAK,EAAGA,IAAM0B,EAAO1B,KAAM,CAClC,IAAI7O,GAAG6R,GACHrB,EAAS3B,IACX7O,GAAI6O,GAAK2B,EAAS,EAClBqB,GAAMP,EAAQC,EAAM3S,EAAK,IAAIgT,EAAQT,EAAMnR,EAAC,EAAIyR,CAAK,GAC5CN,EAAMnR,EAAC,EAAIyR,EAAQG,GAAQJ,IAEpCxR,GAAI6O,GAAK,EACTgD,GAAMP,EAAQC,EAAM3S,EAAK,IAAIgT,EAAQT,EAAMnR,EAAC,EAAIyR,CAAK,GAC5CN,EAAMnR,EAAC,EAAIyR,EAAQG,GAAQJ,GAItC,IAAIrD,GACJ,GAAI0D,IAAMpB,EAAM,CACVD,EAAS3B,GACXV,GAAOpG,EAAInJ,EAAK,MAAOuS,EAAMnR,EAAC,EAAIyR,EAAQG,GAAQ,EAAG,EAErDzD,GAAOpG,EAAInJ,EAAK,MAAO,EAAEuS,EAAMnR,EAAC,EAAIyR,GAASG,GAAQ,EAAG,EAK1D,IAAIE,GAAOzE,EAAWc,GAAMb,EAAIC,CAAE,EAC9BwE,GAAUD,GAAOV,EAAMpR,EAAC,EAAKpB,EAAK,IAAIiT,EAAE,EAC5CF,IAASI,EACX,CAGF,CAKA,GAAIlS,EAAI4R,GAAQ,GAAOE,IAASjB,EAC9B,MAKFgB,GAAOC,EACT,CAEA,GAAIA,GAAQjB,EACV,MAAM,IAAI,MAAM,8BAA8B,EAEhD,OAAIgB,EAAM,IACRA,EAAM,GACDA,CACT,EAEA,IAAK,SAASpM,EAAG+K,EAAQC,EAAI,CAE3B,IAAIhD,EAAK,EACLC,EAAK8C,EAELzE,EAAM,KACNoG,EAAU,GAGd,GAAI1B,EAAK,GAAKhD,EAAK,GAAKC,EAAK,EAAG,MAAO,KAEvC,GAAIjI,EAAI,GAAKA,EAAI,EAAG,MAAO,KAC3B,GAAIA,IAAM,EAAG,MAAO,GACpB,GAAIA,IAAM,EAAG,MAAO,KAIpB,IAAIoC,EAAKyH,EAAU7J,EAAGiI,EAAI+C,CAAE,EAIxB2B,EAAQtT,EAAM,MAAM,IAAI+I,EAAI2I,EAAQC,CAAE,EAAIhL,EAO1CwF,EACAmH,EAAQ,EACVnH,EAAKlM,EAAK,IAAI,EAAK8I,EAAK,CAAG,EAE3BoD,EAAKpD,EAAK,EAMZ,QALIwK,EAAQvT,EAAM,MAAM,IAAImM,EAAIuF,EAAQC,CAAE,EAAIhL,EAI1CoM,EACIS,EAAO,EAAGA,EAAOH,EAASG,IAAQ,CACxCT,EAAM5G,EAAOoH,GAASpH,EAAKpD,IAAQwK,EAAQD,GAC3CA,EAAQC,EAIRxK,EAAKoD,EACD4G,EAAM,IACRA,EAAM,EACNQ,EAAQ,CAAC5M,GAIX4M,EAAQvT,EAAM,MAAM,IAAI+S,EAAKrB,EAAQC,CAAE,EAAIhL,EAC3CwF,EAAK4G,EAKL,IAAIU,EAAOxT,EAAK,IAAIkM,EAAKpD,CAAE,EAC3B,GAAI0K,EAAOxG,EACT,OAAO8F,CACX,CAEA,MAAM,IAAI,MAAM,8BAA8B,CAChD,CACF,CAAC,CAED,EAAE/S,EAAO,IAAI,EAIZ,SAASA,EAAOC,EAAM,CAEvB,IAAIyT,EAAO,MAAM,UAAU,KACvBhT,EAAUV,EAAM,MAAM,QAE1B,SAAS2T,EAAShT,EAAK,CACrB,OAAOD,EAAQC,CAAG,GAAKA,aAAeX,CACxC,CAEAA,EAAM,OAAO,CAGX,IAAK,SAAagB,EAAKL,EAAK,CAE1B,OAAIgT,EAAShT,CAAG,GACTgT,EAAShT,EAAI,CAAC,CAAC,IAAGA,EAAM,CAAEA,CAAI,GAC5BX,EAAM,IAAIgB,EAAK,SAASuG,EAAO1F,EAAKO,EAAK,CAC9C,OAAOmF,EAAQ5G,EAAIkB,CAAG,EAAEO,CAAG,CAC7B,CAAC,GAEIpC,EAAM,IAAIgB,EAAK,SAASuG,EAAO,CAAE,OAAOA,EAAQ5G,CAAK,CAAC,CAC/D,EAGA,SAAU,SAAkBK,EAAKL,EAAK,CAEpC,OAAIgT,EAAShT,CAAG,GACTgT,EAAShT,EAAI,CAAC,CAAC,IAAGA,EAAM,CAAEA,CAAI,GAC5BX,EAAM,IAAIgB,EAAK,SAASuG,EAAO1F,EAAKO,EAAK,CAC9C,OAAOmF,EAAQ5G,EAAIkB,CAAG,EAAEO,CAAG,GAAK,CAClC,CAAC,GAEIpC,EAAM,IAAIgB,EAAK,SAASuG,EAAO,CAAE,OAAOA,EAAQ5G,CAAK,CAAC,CAC/D,EAGA,OAAQ,SAAgBK,EAAKL,EAAK,CAChC,OAAIgT,EAAShT,CAAG,GACTgT,EAAShT,EAAI,CAAC,CAAC,IAAGA,EAAM,CAAEA,CAAI,GAC5BX,EAAM,SAASgB,EAAKhB,EAAM,IAAIW,CAAG,CAAC,GAEpCX,EAAM,IAAIgB,EAAK,SAASuG,EAAO,CAAE,OAAOA,EAAQ5G,CAAK,CAAC,CAC/D,EAGA,SAAU,SAAkBK,EAAKL,EAAK,CACpC,IAAIkB,EAAKO,EAAKwR,EAAUrP,EAAK5C,EAAMQ,EAAMP,EAAKiS,EAE9C,GAAI7S,EAAI,SAAW,QAAaL,EAAI,SAAW,OAC7C,OAAOK,EAAML,EAMf,GAJAgB,EAAOX,EAAI,OACXmB,EAAOnB,EAAI,CAAC,EAAE,OACdY,EAAM5B,EAAM,MAAM2B,EAAMiS,EAAYD,EAAShT,CAAG,EAAKA,EAAI,CAAC,EAAE,OAASwB,CAAI,EACzE0R,EAAU,EACNF,EAAShT,CAAG,EAAG,CACjB,KAAOkT,EAAUD,EAAUC,IACzB,IAAKhS,EAAM,EAAGA,EAAMF,EAAME,IAAO,CAE/B,IADA0C,EAAM,EACDnC,EAAM,EAAGA,EAAMD,EAAMC,IAC1BmC,GAAOvD,EAAIa,CAAG,EAAEO,CAAG,EAAIzB,EAAIyB,CAAG,EAAEyR,CAAO,EACvCjS,EAAIC,CAAG,EAAEgS,CAAO,EAAItP,CACtB,CAEF,OAAQ5C,IAAS,GAAKkS,IAAY,EAAKjS,EAAI,CAAC,EAAE,CAAC,EAAIA,CACrD,CACA,OAAO5B,EAAM,IAAIgB,EAAK,SAASuG,EAAO,CAAE,OAAOA,EAAQ5G,CAAK,CAAC,CAC/D,EAOA,MAAM,SAAe6C,EAAGC,EAAG,CACzB,OAAOzD,EAAM,SAASwD,EAAE,IAAI,SAASM,EAAE,CAAE,MAAO,CAACA,CAAC,CAAE,CAAC,EAAG,CAACL,CAAC,CAAC,CAC7D,EAIA,IAAK,SAAazC,EAAKL,EAAK,CACrBgT,EAAS3S,EAAI,CAAC,CAAC,IAAGA,EAAM,CAAEA,CAAI,GAC9B2S,EAAShT,EAAI,CAAC,CAAC,IAAGA,EAAM,CAAEA,CAAI,GASnC,QAPImT,EAAQ9S,EAAI,CAAC,EAAE,SAAW,GAAKA,EAAI,SAAW,EAAKhB,EAAM,UAAUgB,CAAG,EAAIA,EAC9E+S,EAASpT,EAAI,CAAC,EAAE,SAAW,GAAKA,EAAI,SAAW,EAAKX,EAAM,UAAUW,CAAG,EAAIA,EAC3EiB,EAAM,CAAC,EACPC,EAAM,EACNF,EAAOmS,EAAK,OACZ3R,EAAO2R,EAAK,CAAC,EAAE,OACfvP,EAAKnC,EACEP,EAAMF,EAAME,IAAO,CAGxB,IAFAD,EAAIC,CAAG,EAAI,CAAC,EACZ0C,EAAM,EACDnC,EAAM,EAAGA,EAAMD,EAAMC,IAC1BmC,GAAOuP,EAAKjS,CAAG,EAAEO,CAAG,EAAI2R,EAAMlS,CAAG,EAAEO,CAAG,EACtCR,EAAIC,CAAG,EAAI0C,CACb,CACA,OAAQ3C,EAAI,SAAW,EAAKA,EAAI,CAAC,EAAIA,CACvC,EAGA,IAAK,SAAaZ,EAAKL,EAAK,CAC1B,OAAOX,EAAM,IAAIgB,EAAK,SAASuG,EAAO,CAAE,OAAOtH,EAAK,IAAIsH,EAAO5G,CAAG,CAAG,CAAC,CACxE,EAGA,IAAK,SAAaK,EAAK,CACrB,OAAOhB,EAAM,IAAIgB,EAAK,SAASuG,EAAO,CAAE,OAAOtH,EAAK,IAAIsH,CAAK,CAAG,CAAC,CACnE,EAGA,IAAK,SAAavG,EAAK,CACrB,OAAOhB,EAAM,IAAIgB,EAAK,SAASuG,EAAO,CAAE,OAAOtH,EAAK,IAAIsH,CAAK,CAAG,CAAC,CACnE,EAGA,IAAK,SAAavG,EAAK,CACrB,OAAOhB,EAAM,IAAIgB,EAAK,SAASuG,EAAO,CAAE,OAAOtH,EAAK,IAAIsH,CAAK,CAAG,CAAC,CACnE,EAIA,KAAM,SAAcvG,EAAK2F,EAAG,CAC1B,IAAIqN,EAAQ,EACZ9S,EAAI,EAMJ,IAJI,MAAMyF,CAAC,IAAGA,EAAI,GAEdgN,EAAS3S,EAAI,CAAC,CAAC,IAAGA,EAAMA,EAAI,CAAC,GAE1BE,EAAIF,EAAI,OAAQE,IACrB8S,GAAS/T,EAAK,IAAIA,EAAK,IAAIe,EAAIE,CAAC,CAAC,EAAGyF,CAAC,EAEvC,OAAO1G,EAAK,IAAI+T,EAAO,EAAIrN,CAAC,CAC9B,EAIA,MAAO,SAAe3F,EAAKL,EAAK,CAC9B,OAAOV,EAAK,KAAKD,EAAM,IAAIgB,EAAKL,CAAG,GAAKX,EAAM,KAAKgB,CAAG,EAAIhB,EAAM,KAAKW,CAAG,EAAE,CAC5E,EAIA,IAAK,SAAae,EAAG2C,EAAG,CACtB,IAAI4P,EAAS,CAAC,EACV/S,EACJ,IAAKA,EAAI,EAAGA,EAAIQ,EAAE,OAAQR,IACxB+S,EAAO,KAAKvS,EAAER,CAAC,EAAE,MAAM,CAAC,EAE1B,IAAKA,EAAI,EAAGA,EAAI+S,EAAO,OAAQ/S,IAC7BwS,EAAK,MAAMO,EAAO/S,CAAC,EAAGmD,EAAEnD,CAAC,CAAC,EAE5B,OAAO+S,CACT,EAKA,IAAK,SAAavS,EAAG,CAUnB,QATIK,EAAOL,EAAE,OACTM,EAAON,EAAE,CAAC,EAAE,OACZ2C,EAAIrE,EAAM,SAAS+B,EAAMC,CAAI,EAC7B6H,EAAI7J,EAAM,aAAa0B,EAAG2C,CAAC,EAC3B6P,EAAS,CAAC,EACVhT,EAAI,EACJG,EAGGH,EAAIa,EAAMb,IAEf,IADAgT,EAAOhT,CAAC,EAAI,CAAC,EACRG,EAAIW,EAAMX,EAAIwI,EAAE,CAAC,EAAE,OAAQxI,IAC9B6S,EAAOhT,CAAC,EAAEG,EAAIW,CAAI,EAAI6H,EAAE3I,CAAC,EAAEG,CAAC,EAEhC,OAAO6S,CACT,EAGA,IAAK,SAASC,EAAIzS,EAAG,CACnB,GAAIA,EAAE,SAAW,EACf,OAAOA,EAAE,CAAC,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAE,CAAC,EAI7C,QADI0S,EAAc,EACTlT,EAAI,EAAGA,EAAIQ,EAAE,OAAQR,IAAK,CAGjC,QADImT,EAAY,CAAC,EACRxS,EAAM,EAAGA,EAAMH,EAAE,OAAQG,IAAO,CACvCwS,EAAUxS,EAAM,CAAC,EAAI,CAAC,EACtB,QAASO,EAAM,EAAGA,EAAMV,EAAE,OAAQU,IAC5BA,EAAMlB,EACRmT,EAAUxS,EAAM,CAAC,EAAEO,CAAG,EAAIV,EAAEG,CAAG,EAAEO,CAAG,EAC3BA,EAAMlB,IACfmT,EAAUxS,EAAM,CAAC,EAAEO,EAAM,CAAC,EAAIV,EAAEG,CAAG,EAAEO,CAAG,EAG9C,CAGA,IAAIkS,EAAOpT,EAAI,EAAI,GAAK,EACxBkT,GAAeD,EAAIE,CAAS,EAAI3S,EAAE,CAAC,EAAER,CAAC,EAAIoT,CAC5C,CAEA,OAAOF,CACT,EAEA,kBAAmB,SAA2B1S,EAAG2C,EAAG,CAClD,IAAInD,EAAI,EACRG,EAAI,EACJd,EAAImB,EAAE,OACNlB,EAAIkB,EAAE,CAAC,EAAE,OACTmM,EAAS,EACTtJ,EAAM,EACNmE,EAAI,CAAC,EACL6L,EAAMC,EAAOC,EAAM5N,EAGnB,IAFAnF,EAAI1B,EAAM,IAAI0B,EAAG2C,CAAC,EAClBkQ,EAAO7S,EAAE,CAAC,EAAE,OACRR,EAAI,EAAGA,EAAIX,EAAGW,IAAK,CAGrB,IAFAsT,EAAQ9S,EAAER,CAAC,EAAEA,CAAC,EACdG,EAAIH,EACC2F,EAAI3F,EAAI,EAAG2F,EAAIrG,EAAGqG,IACjB2N,EAAQvU,EAAK,IAAIyB,EAAEmF,CAAC,EAAE3F,CAAC,CAAC,IAC1BsT,EAAQ9S,EAAEmF,CAAC,EAAE3F,CAAC,EACdG,EAAIwF,GAGR,GAAIxF,GAAKH,EACP,IAAI2F,EAAI,EAAGA,EAAI0N,EAAM1N,IACnB4N,EAAO/S,EAAER,CAAC,EAAE2F,CAAC,EACbnF,EAAER,CAAC,EAAE2F,CAAC,EAAInF,EAAEL,CAAC,EAAEwF,CAAC,EAChBnF,EAAEL,CAAC,EAAEwF,CAAC,EAAI4N,EAGd,IAAKpT,EAAIH,EAAI,EAAGG,EAAId,EAAGc,IAErB,IADAwM,EAASnM,EAAEL,CAAC,EAAEH,CAAC,EAAIQ,EAAER,CAAC,EAAEA,CAAC,EACrB2F,EAAI3F,EAAG2F,EAAI0N,EAAM1N,IACnBnF,EAAEL,CAAC,EAAEwF,CAAC,EAAInF,EAAEL,CAAC,EAAEwF,CAAC,EAAIgH,EAASnM,EAAER,CAAC,EAAE2F,CAAC,CAGzC,CACA,IAAK3F,EAAIX,EAAI,EAAGW,GAAK,EAAGA,IAAK,CAE3B,IADAqD,EAAM,EACDlD,EAAIH,EAAI,EAAGG,GAAId,EAAI,EAAGc,IACzBkD,EAAMA,EAAMmE,EAAErH,CAAC,EAAIK,EAAER,CAAC,EAAEG,CAAC,EAE3BqH,EAAExH,CAAC,GAAIQ,EAAER,CAAC,EAAEqT,EAAO,CAAC,EAAIhQ,GAAO7C,EAAER,CAAC,EAAEA,CAAC,CACvC,CACA,OAAOwH,CACT,EAEA,aAAc,SAAsBhH,EAAG2C,EAAG,CACxC,IAAI7D,EAAIR,EAAM,IAAI0B,EAAG2C,CAAC,EAClB0F,EAAIvJ,EAAE,OACN8K,EAAI9K,EAAE,CAAC,EAAE,OACTqJ,EAAI,EACJnB,EAAGI,EAAG4L,EAEV,IAAK5L,EAAI,EAAGA,EAAIiB,EAAGjB,IAAK,CACtB,IAAI6L,EAAS7L,EACb,IAAK4L,EAAK5L,EAAE,EAAG4L,EAAK3K,EAAG2K,IACjBzU,EAAK,IAAIO,EAAEkU,CAAE,EAAE5L,CAAC,CAAC,EAAI7I,EAAK,IAAIO,EAAEmU,CAAM,EAAE7L,CAAC,CAAC,IAC5C6L,EAASD,GAEb,IAAIjQ,EAAMjE,EAAEsI,CAAC,EAGb,IAFAtI,EAAEsI,CAAC,EAAItI,EAAEmU,CAAM,EACfnU,EAAEmU,CAAM,EAAIlQ,EACPiQ,EAAK5L,EAAE,EAAG4L,EAAK3K,EAAG2K,IAErB,IADA7K,EAAIrJ,EAAEkU,CAAE,EAAE5L,CAAC,EAAItI,EAAEsI,CAAC,EAAEA,CAAC,EAChBJ,EAAII,EAAGJ,EAAI4C,EAAG5C,IACjBlI,EAAEkU,CAAE,EAAEhM,CAAC,GAAKlI,EAAEsI,CAAC,EAAEJ,CAAC,EAAImB,CAG5B,CAEA,IAAKf,EAAIiB,EAAE,EAAGjB,GAAK,EAAGA,IAAK,CAEzB,IADAe,EAAIrJ,EAAEsI,CAAC,EAAEA,CAAC,EACL4L,EAAK,EAAGA,EAAK5L,EAAG4L,IACnB,IAAKhM,EAAI4C,EAAE,EAAG5C,EAAII,EAAE,EAAGJ,IACrBlI,EAAEkU,CAAE,EAAEhM,CAAC,GAAKlI,EAAEsI,CAAC,EAAEJ,CAAC,EAAIlI,EAAEkU,CAAE,EAAE5L,CAAC,EAAIe,EAIrC,IADArJ,EAAEsI,CAAC,EAAEA,CAAC,GAAKe,EACNnB,EAAIqB,EAAGrB,EAAI4C,EAAG5C,IACjBlI,EAAEsI,CAAC,EAAEJ,CAAC,GAAKmB,CAEf,CACA,OAAOrJ,CACT,EAYA,YAAa,SAAqBgD,EAAGa,EAAG,CACtC,IAAI7B,EAAOgB,EAAE,CAAC,EAAE,OACZkF,EAAI1I,EAAM,MAAM,EAAGwC,CAAI,EAAE,CAAC,EAC1BoS,EACAC,EAAc,GAclB,OAZIxQ,EAAE,CAAC,EAAE,QAAU,OACjBA,EAAIA,EAAE,IAAI,SAASnD,EAAE,CAAE,OAAOA,EAAE,CAAC,CAAE,CAAC,EACpC2T,EAAc,IAGhB7U,EAAM,OAAOwC,EAAO,EAAG,GAAI,EAAE,EAAE,QAAQ,SAAStB,EAAG,CACjD0T,EAAQ5U,EAAM,OAAOkB,EAAI,EAAGsB,CAAI,EAAE,IAAI,SAASnB,EAAG,CAChD,OAAOqH,EAAErH,CAAC,EAAImC,EAAEtC,CAAC,EAAEG,CAAC,CACtB,CAAC,EACDqH,EAAExH,CAAC,GAAKmD,EAAEnD,CAAC,EAAIlB,EAAM,IAAI4U,CAAK,GAAKpR,EAAEtC,CAAC,EAAEA,CAAC,CAC3C,CAAC,EAEG2T,EACKnM,EAAE,IAAI,SAASxH,EAAE,CAAE,MAAO,CAACA,CAAC,CAAE,CAAC,EACjCwH,CACT,EAEA,aAAc,SAAsBlF,EAAGa,EAAG,CAExC,IAAI7B,EAAOgB,EAAE,CAAC,EAAE,OACZkF,EAAI1I,EAAM,MAAM,EAAGwC,CAAI,EAAE,CAAC,EAC1BoS,EAEAC,EAAY,GAahB,OAZIxQ,EAAE,CAAC,EAAE,QAAU,OACjBA,EAAIA,EAAE,IAAI,SAASnD,EAAE,CAAE,OAAOA,EAAE,CAAC,CAAE,CAAC,EACpC2T,EAAc,IAGhB7U,EAAM,OAAOwC,CAAI,EAAE,QAAQ,SAAStB,EAAG,CACrC0T,EAAQ5U,EAAM,OAAOkB,CAAC,EAAE,IAAI,SAASG,EAAG,CACtC,OAAOmC,EAAEtC,CAAC,EAAEG,CAAC,EAAIqH,EAAErH,CAAC,CACtB,CAAC,EACDqH,EAAExH,CAAC,GAAKmD,EAAEnD,CAAC,EAAIlB,EAAM,IAAI4U,CAAK,GAAKpR,EAAEtC,CAAC,EAAEA,CAAC,CAC3C,CAAC,EAEG2T,EACKnM,EAAE,IAAI,SAASxH,EAAE,CAAE,MAAO,CAACA,CAAC,CAAE,CAAC,EACjCwH,CACT,EAOA,GAAI,SAAYlF,EAAG,CACjB,IAAIhB,EAAOgB,EAAE,OAETwK,EAAIhO,EAAM,SAASwC,CAAI,EACvBsS,EAAI9U,EAAM,MAAMwD,EAAE,OAAQA,EAAE,CAAC,EAAE,MAAM,EACrCoR,EACJ,OAAA5U,EAAM,OAAOwC,CAAI,EAAE,QAAQ,SAASsB,EAAG,CACrCgR,EAAE,CAAC,EAAEhR,CAAC,EAAIN,EAAE,CAAC,EAAEM,CAAC,CAClB,CAAC,EACD9D,EAAM,OAAO,EAAGwC,CAAI,EAAE,QAAQ,SAASsL,EAAG,CACxC9N,EAAM,OAAO8N,CAAC,EAAE,QAAQ,SAAS5M,EAAG,CAClC0T,EAAQ5U,EAAM,OAAOkB,CAAC,EAAE,IAAI,SAASgP,EAAI,CACvC,OAAOlC,EAAEF,CAAC,EAAEoC,CAAE,EAAI4E,EAAE5E,CAAE,EAAEhP,CAAC,CAC3B,CAAC,EACD8M,EAAEF,CAAC,EAAE5M,CAAC,GAAKsC,EAAEsK,CAAC,EAAE5M,CAAC,EAAIlB,EAAM,IAAI4U,CAAK,GAAKE,EAAE5T,CAAC,EAAEA,CAAC,CACjD,CAAC,EACDlB,EAAM,OAAO8N,EAAGtL,CAAI,EAAE,QAAQ,SAASnB,EAAG,CACxCuT,EAAQ5U,EAAM,OAAO8N,CAAC,EAAE,IAAI,SAASoC,EAAI,CACvC,OAAOlC,EAAEF,CAAC,EAAEoC,CAAE,EAAI4E,EAAE5E,CAAE,EAAE7O,CAAC,CAC3B,CAAC,EACDyT,EAAEhH,CAAC,EAAEzM,CAAC,EAAImC,EAAEoR,EAAM,MAAM,EAAEvT,CAAC,EAAIrB,EAAM,IAAI4U,CAAK,CAChD,CAAC,CACH,CAAC,EACM,CAAC5G,EAAG8G,CAAC,CACd,EAKA,SAAU,SAAkBtR,EAAG,CAC7B,IAAIhB,EAAOgB,EAAE,OACTuR,EAAI/U,EAAM,MAAMwD,EAAE,OAAQA,EAAE,CAAC,EAAE,MAAM,EACrCoR,EACJ,OAAA5U,EAAM,OAAOwC,CAAI,EAAE,QAAQ,SAAStB,EAAG,CACrC0T,EAAQ5U,EAAM,OAAOkB,CAAC,EAAE,IAAI,SAAS4C,EAAG,CACtC,OAAO7D,EAAK,IAAI8U,EAAE7T,CAAC,EAAE4C,CAAC,EAAE,CAAC,CAC3B,CAAC,EACDiR,EAAE7T,CAAC,EAAEA,CAAC,EAAIjB,EAAK,KAAKuD,EAAEtC,CAAC,EAAEA,CAAC,EAAIlB,EAAM,IAAI4U,CAAK,CAAC,EAC9C5U,EAAM,OAAOkB,EAAI,EAAGsB,CAAI,EAAE,QAAQ,SAASnB,EAAG,CAC5CuT,EAAQ5U,EAAM,OAAOkB,CAAC,EAAE,IAAI,SAAS4C,EAAG,CACtC,OAAOiR,EAAE7T,CAAC,EAAE4C,CAAC,EAAIiR,EAAE1T,CAAC,EAAEyC,CAAC,CACzB,CAAC,EACDiR,EAAE1T,CAAC,EAAEH,CAAC,GAAKsC,EAAEtC,CAAC,EAAEG,CAAC,EAAIrB,EAAM,IAAI4U,CAAK,GAAKG,EAAE7T,CAAC,EAAEA,CAAC,CACjD,CAAC,CACH,CAAC,EACM6T,CACT,EAGA,aAAc,SAAsBrT,EAAG2C,EAAGqE,EAAG8E,EAAG,CAQ9C,QAPItM,EAAI,EACJG,EAAI,EACJd,EAAImB,EAAE,OACNoM,EAAI,CAAC,EACLjG,EAAI,CAAC,EACLiC,EAAI,CAAC,EACLkL,EAAInL,EAAGE,EAAGkL,EACP/T,EAAIX,EAAGW,IAIZ,IAHA4M,EAAE5M,CAAC,EAAI,CAAC,EACR2G,EAAE3G,CAAC,EAAI,CAAC,EACR4I,EAAE5I,CAAC,EAAI,CAAC,EACHG,EAAI,EAAGA,EAAId,EAAGc,IACbH,EAAIG,GACNyM,EAAE5M,CAAC,EAAEG,CAAC,EAAIK,EAAER,CAAC,EAAEG,CAAC,EAChBwG,EAAE3G,CAAC,EAAEG,CAAC,EAAIyI,EAAE5I,CAAC,EAAEG,CAAC,EAAI,GACXH,EAAIG,GACbwG,EAAE3G,CAAC,EAAEG,CAAC,EAAIK,EAAER,CAAC,EAAEG,CAAC,EAChByM,EAAE5M,CAAC,EAAEG,CAAC,EAAIyI,EAAE5I,CAAC,EAAEG,CAAC,EAAI,IAEpByI,EAAE5I,CAAC,EAAEG,CAAC,EAAIK,EAAER,CAAC,EAAEG,CAAC,EAChByM,EAAE5M,CAAC,EAAEG,CAAC,EAAIwG,EAAE3G,CAAC,EAAEG,CAAC,EAAI,GAS1B,IALA0I,EAAI/J,EAAM,SAASA,EAAM,SAASA,EAAM,IAAI8J,CAAC,EAAG9J,EAAM,IAAI8N,EAAGjG,CAAC,CAAC,EAAG,EAAE,EACpEgC,EAAI7J,EAAM,SAASA,EAAM,IAAI8J,CAAC,EAAGzF,CAAC,EAClC2Q,EAAKtM,EACLuM,EAAKjV,EAAM,IAAIA,EAAM,SAAS+J,EAAGrB,CAAC,EAAGmB,CAAC,EACtC3I,EAAI,EACGjB,EAAK,IAAID,EAAM,KAAKA,EAAM,SAASiV,EAAGD,CAAE,CAAC,CAAC,EAAIxH,GACnDwH,EAAKC,EACLA,EAAKjV,EAAM,IAAIA,EAAM,SAAS+J,EAAGiL,CAAE,EAAGnL,CAAC,EACvC3I,IAEF,OAAO+T,CACT,EAEA,aAAc,SAAsBvT,EAAG2C,EAAGqE,EAAG8E,EAAG,CAO9C,QANItM,EAAI,EACJX,EAAImB,EAAE,OACNoM,EAAI,CAAC,EACLjG,EAAI,CAAC,EACLiC,EAAI,CAAC,EACLzI,EAAG2T,EAAInL,EAAGE,EAAGkL,EACV/T,EAAIX,EAAGW,IAIZ,IAHA4M,EAAE5M,CAAC,EAAI,CAAC,EACR2G,EAAE3G,CAAC,EAAI,CAAC,EACR4I,EAAE5I,CAAC,EAAI,CAAC,EACHG,EAAI,EAAGA,EAAId,EAAGc,IACbH,EAAIG,GACNyM,EAAE5M,CAAC,EAAEG,CAAC,EAAIK,EAAER,CAAC,EAAEG,CAAC,EAChBwG,EAAE3G,CAAC,EAAEG,CAAC,EAAIyI,EAAE5I,CAAC,EAAEG,CAAC,EAAI,GACXH,EAAIG,GACbwG,EAAE3G,CAAC,EAAEG,CAAC,EAAIK,EAAER,CAAC,EAAEG,CAAC,EAChByM,EAAE5M,CAAC,EAAEG,CAAC,EAAIyI,EAAE5I,CAAC,EAAEG,CAAC,EAAI,IAEpByI,EAAE5I,CAAC,EAAEG,CAAC,EAAIK,EAAER,CAAC,EAAEG,CAAC,EAChByM,EAAE5M,CAAC,EAAEG,CAAC,EAAIwG,EAAE3G,CAAC,EAAEG,CAAC,EAAI,GAS1B,IALA0I,EAAI/J,EAAM,SAASA,EAAM,SAASA,EAAM,IAAIA,EAAM,IAAI8J,EAAGgE,CAAC,CAAC,EAAGjG,CAAC,EAAG,EAAE,EACpEgC,EAAI7J,EAAM,SAASA,EAAM,IAAIA,EAAM,IAAI8J,EAAGgE,CAAC,CAAC,EAAGzJ,CAAC,EAChD2Q,EAAKtM,EACLuM,EAAKjV,EAAM,IAAIA,EAAM,SAAS+J,EAAGrB,CAAC,EAAGmB,CAAC,EACtC3I,EAAI,EACGjB,EAAK,IAAID,EAAM,KAAKA,EAAM,SAASiV,EAAID,CAAE,CAAC,CAAC,EAAIxH,GACpDwH,EAAKC,EACLA,EAAKjV,EAAM,IAAIA,EAAM,SAAS+J,EAAGiL,CAAE,EAAGnL,CAAC,EACvC3I,EAAIA,EAAI,EAEV,OAAO+T,CACT,EAEA,IAAK,SAAavT,EAAG2C,EAAGqE,EAAG8E,EAAGlC,EAAG,CAO/B,QANIpK,EAAI,EACJX,EAAImB,EAAE,OACNoM,EAAI,CAAC,EACLjG,EAAI,CAAC,EACLiC,EAAI,CAAC,EACLzI,EAAG2T,EAAInL,EAAGE,EAAGkL,EACV/T,EAAIX,EAAGW,IAIZ,IAHA4M,EAAE5M,CAAC,EAAI,CAAC,EACR2G,EAAE3G,CAAC,EAAI,CAAC,EACR4I,EAAE5I,CAAC,EAAI,CAAC,EACHG,EAAI,EAAGA,EAAId,EAAGc,IACbH,EAAIG,GACNyM,EAAE5M,CAAC,EAAEG,CAAC,EAAIK,EAAER,CAAC,EAAEG,CAAC,EAChBwG,EAAE3G,CAAC,EAAEG,CAAC,EAAIyI,EAAE5I,CAAC,EAAEG,CAAC,EAAI,GACXH,EAAIG,GACbwG,EAAE3G,CAAC,EAAEG,CAAC,EAAIK,EAAER,CAAC,EAAEG,CAAC,EAChByM,EAAE5M,CAAC,EAAEG,CAAC,EAAIyI,EAAE5I,CAAC,EAAEG,CAAC,EAAI,IAEpByI,EAAE5I,CAAC,EAAEG,CAAC,EAAIK,EAAER,CAAC,EAAEG,CAAC,EAChByM,EAAE5M,CAAC,EAAEG,CAAC,EAAIwG,EAAE3G,CAAC,EAAEG,CAAC,EAAI,GAY1B,IARA0I,EAAI/J,EAAM,SAASA,EAAM,IAAIA,EAAM,IAAI8J,EAAG9J,EAAM,SAAS8N,EAAGxC,CAAC,CAAC,CAAC,EAC5CtL,EAAM,SAASA,EAAM,SAAS8J,EAAG,EAAIwB,CAAC,EACvBtL,EAAM,SAAS6H,EAAGyD,CAAC,CAAC,CAAC,EACvDzB,EAAI7J,EAAM,SAASA,EAAM,SAASA,EAAM,IAAIA,EAAM,IAAI8J,EAClD9J,EAAM,SAAS8N,EAAGxC,CAAC,CAAC,CAAC,EAAGjH,CAAC,EAAGiH,CAAC,EACjC0J,EAAKtM,EACLuM,EAAKjV,EAAM,IAAIA,EAAM,SAAS+J,EAAGrB,CAAC,EAAGmB,CAAC,EACtC3I,EAAI,EACGjB,EAAK,IAAID,EAAM,KAAKA,EAAM,SAASiV,EAAID,CAAE,CAAC,CAAC,EAAIxH,GACpDwH,EAAKC,EACLA,EAAKjV,EAAM,IAAIA,EAAM,SAAS+J,EAAGiL,CAAE,EAAGnL,CAAC,EACvC3I,IAEF,OAAO+T,CACT,EAEA,YAAa,SAAqBvT,EAAG,CAOnC,QANIlB,EAAIkB,EAAE,OACNnB,EAAImB,EAAE,CAAC,EAAE,OACTR,EAAI,EACJoK,EAAI,CAAC,EACL3E,EAAI,CAAC,EACLmF,EAAO0B,EAAG3G,EAAGxF,EAAGwM,EACb3M,EAAIV,EAAI,EAAGU,IAAK,CAErB,IADA4K,EAAQ,EACHzK,EAAIH,EAAI,EAAGG,EAAId,EAAGc,IACvByK,GAAUpK,EAAEL,CAAC,EAAEH,CAAC,EAAIQ,EAAEL,CAAC,EAAEH,CAAC,EAM1B,IALA2M,EAAUnM,EAAER,EAAI,CAAC,EAAEA,CAAC,EAAI,EAAK,GAAK,EAClC4K,EAAQ+B,EAAS5N,EAAK,KAAK6L,CAAK,EAChC0B,EAAIvN,EAAK,MAAQ6L,EAAQA,EAASpK,EAAER,EAAI,CAAC,EAAEA,CAAC,EAAI4K,GAAS,CAAE,EAC3DR,EAAItL,EAAM,MAAMQ,EAAG,CAAC,EACpB8K,EAAEpK,EAAI,CAAC,EAAE,CAAC,GAAKQ,EAAER,EAAI,CAAC,EAAEA,CAAC,EAAI4K,IAAU,EAAI0B,GACtC3G,EAAI3F,EAAI,EAAG2F,EAAIrG,EAAGqG,IAAKyE,EAAEzE,CAAC,EAAE,CAAC,EAAInF,EAAEmF,CAAC,EAAE3F,CAAC,GAAK,EAAIsM,GACrD7G,EAAI3G,EAAM,SAASA,EAAM,SAASQ,EAAGD,CAAC,EAClCP,EAAM,SAASA,EAAM,SAASsL,EAAGtL,EAAM,UAAUsL,CAAC,CAAC,EAAG,CAAC,CAAC,EAC5D5J,EAAI1B,EAAM,SAAS2G,EAAG3G,EAAM,SAAS0B,EAAGiF,CAAC,CAAC,CAC5C,CACA,OAAOjF,CACT,EAKA,GAAK,UAAW,CAOd,IAAI6C,EAAQvE,EAAM,IACdkV,EAAQlV,EAAM,OAElB,SAASmV,EAAIzM,EAAG,CAId,IAAInI,EAAImI,EAAE,OACN,EAAIA,EAAE,CAAC,EAAE,OAET8E,EAAIxN,EAAM,MAAM,EAAG,CAAC,EACxB0I,EAAI1I,EAAM,KAAK0I,CAAC,EAEhB,IAAIxH,EAAEG,EAAEwF,EACR,IAAIxF,EAAI,EAAGA,EAAI,EAAGA,IAAI,CAIpB,IAHAmM,EAAEnM,CAAC,EAAEA,CAAC,EAAIpB,EAAK,KAAKsE,EAAI2Q,EAAM3U,CAAC,EAAE,IAAI,SAASW,EAAE,CAC9C,OAAOwH,EAAExH,CAAC,EAAEG,CAAC,EAAIqH,EAAExH,CAAC,EAAEG,CAAC,CACzB,CAAC,CAAC,CAAC,EACCH,EAAI,EAAGA,EAAIX,EAAGW,IAChBwH,EAAExH,CAAC,EAAEG,CAAC,EAAIqH,EAAExH,CAAC,EAAEG,CAAC,EAAImM,EAAEnM,CAAC,EAAEA,CAAC,EAE5B,IAAIwF,EAAIxF,EAAE,EAAGwF,EAAI,EAAGA,IAIlB,IAHA2G,EAAEnM,CAAC,EAAEwF,CAAC,EAAItC,EAAI2Q,EAAM3U,CAAC,EAAE,IAAI,SAASW,EAAE,CACpC,OAAOwH,EAAExH,CAAC,EAAEG,CAAC,EAAIqH,EAAExH,CAAC,EAAE2F,CAAC,CACzB,CAAC,CAAC,EACE3F,EAAI,EAAGA,EAAIX,EAAGW,IAChBwH,EAAExH,CAAC,EAAE2F,CAAC,EAAI6B,EAAExH,CAAC,EAAE2F,CAAC,EAAI6B,EAAExH,CAAC,EAAEG,CAAC,EAAEmM,EAAEnM,CAAC,EAAEwF,CAAC,CAGxC,CACA,MAAO,CAAC6B,EAAG8E,CAAC,CACd,CAEA,OAAO2H,CACT,EAAE,EAEF,MAAQ,UAAW,CAIjB,SAASC,EAAI5R,EAAG,CACdA,EAAIxD,EAAM,KAAKwD,CAAC,EAChB,IAAIhB,EAAOgB,EAAE,OACT6R,EAAIrV,EAAM,SAASwC,CAAI,EAC3B,OAAAxC,EAAM,OAAOwC,EAAO,EAAG,GAAI,EAAE,EAAE,QAAQ,SAAStB,EAAG,CACjDlB,EAAM,YACFqV,EAAG,CAAE,IAAKnU,CAAE,EAAGlB,EAAM,OAAOA,EAAM,MAAMqV,EAAG,CAAE,IAAKnU,CAAE,CAAC,EAAGsC,EAAEtC,CAAC,EAAEA,CAAC,CAAC,CAAC,EACpElB,EAAM,YACFwD,EAAG,CAAE,IAAKtC,CAAE,EAAGlB,EAAM,OAAOA,EAAM,MAAMwD,EAAG,CAAE,IAAKtC,CAAE,CAAC,EAAGsC,EAAEtC,CAAC,EAAEA,CAAC,CAAC,CAAC,EACpElB,EAAM,OAAOkB,CAAC,EAAE,QAAQ,SAASG,EAAG,CAClC,IAAIwI,EAAI7J,EAAM,SAASwD,EAAEnC,CAAC,EAAEH,CAAC,EAAG,EAAE,EAC9BoU,EAAKtV,EAAM,MAAMwD,EAAG,CAAE,IAAKnC,CAAE,CAAC,EAC9BkU,EAAMvV,EAAM,SAASA,EAAM,MAAMwD,EAAG,CAAE,IAAKtC,CAAE,CAAC,EAAG2I,CAAC,EACtD7J,EAAM,YAAYwD,EAAG,CAAE,IAAKnC,CAAE,EAAGrB,EAAM,IAAIsV,EAAIC,CAAG,CAAC,EACnD,IAAIC,EAAKxV,EAAM,MAAMqV,EAAG,CAAE,IAAKhU,CAAE,CAAC,EAC9BoU,EAAMzV,EAAM,SAASA,EAAM,MAAMqV,EAAG,CAAE,IAAKnU,CAAE,CAAC,EAAG2I,CAAC,EACtD7J,EAAM,YAAYqV,EAAG,CAAE,IAAKhU,CAAE,EAAGrB,EAAM,IAAIwV,EAAIC,CAAG,CAAC,CACrD,CAAC,CACH,CAAC,EACMJ,CACT,CAEA,SAASK,EAASlS,EAAGa,EAAE,CACrB,IAAIsR,EAAa,GACbtR,EAAE,CAAC,EAAE,SAAW,SAElBA,EAAIA,EAAE,IAAI,SAASqE,EAAE,CAAE,MAAO,CAACA,CAAC,CAAE,CAAC,EACnCiN,EAAa,IAEf,IAAIC,EAAK5V,EAAM,GAAGwD,CAAC,EACfqS,EAAID,EAAG,CAAC,EACRd,EAAIc,EAAG,CAAC,EACRE,EAAQtS,EAAE,CAAC,EAAE,OACbuS,EAAK/V,EAAM,MAAM6V,EAAE,CAAC,IAAI,CAAC,IAAIC,CAAK,CAAC,CAAC,EACpCE,EAAKhW,EAAM,MAAM8U,EAAE,CAAC,IAAI,CAAC,IAAIgB,CAAK,CAAC,CAAC,EACpCG,EAAKb,EAAIY,CAAE,EACXE,EAAKlW,EAAM,UAAU+V,CAAE,EAExBG,EAAG,CAAC,EAAE,SAAW,SAClBA,EAAK,CAACA,CAAE,GAGV,IAAIxN,EAAI1I,EAAM,SAASA,EAAM,SAASiW,EAAIC,CAAE,EAAG7R,CAAC,EAOhD,OALGqE,EAAE,SAAW,SACdA,EAAI,CAAC,CAACA,CAAC,CAAC,GAINiN,EACKjN,EAAE,IAAI,SAASxH,EAAE,CAAE,OAAOA,EAAE,CAAC,CAAE,CAAC,EAClCwH,CACT,CAEA,OAAOgN,CACT,EAAE,EAEF,OAAQ,SAAgBhU,EAAG,CAOzB,QANIyU,EAAY,EACZ5V,EAAImB,EAAE,OACN0U,EAAIpW,EAAM,SAASO,EAAGA,CAAC,EACvB8V,EAAK,CAAC,EACNhS,EAAGnD,EAAGG,EAAGsF,EAAGyC,EAAGkN,EAAOC,EAAOhJ,EAE1B4I,IAAc,GAAG,CAItB,IAHAG,EAAQ5U,EAAE,CAAC,EAAE,CAAC,EACdiF,EAAI,EACJyC,EAAI,EACClI,EAAI,EAAGA,EAAIX,EAAGW,IACjB,IAAKG,EAAI,EAAGA,EAAId,EAAGc,IACbH,GAAKG,GACHiV,EAAQrW,EAAK,IAAIyB,EAAER,CAAC,EAAEG,CAAC,CAAC,IAC1BiV,EAAQrW,EAAK,IAAIyB,EAAER,CAAC,EAAEG,CAAC,CAAC,EACxBsF,EAAIzF,EACJkI,EAAI/H,GAmBZ,IAdIK,EAAEiF,CAAC,EAAEA,CAAC,IAAMjF,EAAE0H,CAAC,EAAEA,CAAC,EACpBmN,EAAS7U,EAAEiF,CAAC,EAAEyC,CAAC,EAAI,EAAKnJ,EAAK,GAAK,EAAI,CAACA,EAAK,GAAK,EAEjDsW,EAAQtW,EAAK,KAAK,EAAIyB,EAAEiF,CAAC,EAAEyC,CAAC,GAAK1H,EAAEiF,CAAC,EAAEA,CAAC,EAAIjF,EAAE0H,CAAC,EAAEA,CAAC,EAAE,EAAI,EACzDmE,EAAIvN,EAAM,SAASO,EAAGA,CAAC,EACvBgN,EAAE5G,CAAC,EAAEA,CAAC,EAAI1G,EAAK,IAAIsW,CAAK,EACxBhJ,EAAE5G,CAAC,EAAEyC,CAAC,EAAI,CAACnJ,EAAK,IAAIsW,CAAK,EACzBhJ,EAAEnE,CAAC,EAAEzC,CAAC,EAAI1G,EAAK,IAAIsW,CAAK,EACxBhJ,EAAEnE,CAAC,EAAEA,CAAC,EAAInJ,EAAK,IAAIsW,CAAK,EAExBH,EAAIpW,EAAM,SAASoW,EAAG7I,CAAC,EACvBlJ,EAAIrE,EAAM,SAASA,EAAM,SAASA,EAAM,IAAIuN,CAAC,EAAG7L,CAAC,EAAG6L,CAAC,EACrD7L,EAAI2C,EACJ8R,EAAY,EACPjV,EAAI,EAAGA,EAAIX,EAAGW,IACjB,IAAKG,EAAI,EAAGA,EAAId,EAAGc,IACbH,GAAKG,GAAKpB,EAAK,IAAIyB,EAAER,CAAC,EAAEG,CAAC,CAAC,EAAI,OAChC8U,EAAY,EAIpB,CACA,IAAKjV,EAAI,EAAGA,EAAIX,EAAGW,IAAKmV,EAAG,KAAK3U,EAAER,CAAC,EAAEA,CAAC,CAAC,EAEvC,MAAO,CAACkV,EAAGC,CAAE,CACf,EAEA,WAAY,SAAoBnK,EAAGnC,EAAGpD,EAAG6P,EAAKC,EAAKC,EAAO,CACxD,IAAIC,EAAIC,EAAIC,EAAMC,EAAIC,EACtB,GAAIL,IAAU,EACZ,KAAOF,GAAO7P,GACZgQ,EAAK5M,EAAImC,EAAEsK,EAAKC,CAAG,EACnBG,EAAK7M,EAAImC,EAAEsK,EAAMzM,EAAG0M,EAAME,CAAE,EAC5BE,EAAOJ,GAAOE,EAAKC,GAAM,EACzBH,EAAMI,EACNL,EAAMA,EAAMzM,EAGhB,GAAI2M,IAAU,EACZ,KAAOF,GAAO7P,GACZgQ,EAAK5M,EAAImC,EAAEsK,EAAKC,CAAG,EACnBG,EAAK7M,EAAImC,EAAEsK,EAAMzM,EAAI,EAAG0M,EAAME,EAAK,CAAC,EACpCG,EAAK/M,EAAImC,EAAEsK,EAAMzM,EAAI,EAAG0M,EAAMG,EAAK,CAAC,EACpCG,EAAKhN,EAAImC,EAAEsK,EAAKzM,EAAG0M,EAAMK,CAAE,EAC3BD,EAAOJ,GAAOE,EAAK,EAAIC,EAAK,EAAIE,EAAKC,GAAM,EAC3CN,EAAMI,EACNL,EAAMA,EAAMzM,EAGhB,OAAO0M,CACT,EAEA,QAAS,SAAiBvK,EAAG,EAAG7H,EAAGqS,EAAO,CAOxC,QANIxV,EAAI,EACJ,GAAKmD,EAAI,GAAK,EACdqE,EAAI,CAAC,EACLsO,EAAK,CAAC,EACNC,EAAI,CAAC,EACLzW,EAAGgK,EAAInJ,EAAGwF,EAAGwO,EACVnU,EAAIwV,EAAQ,GAAG,CAEpB,IADArB,EAAInJ,EAAE,CAAC,EACF7K,EAAI,EAAGwF,EAAI,EAAGxF,GAAKgD,EAAGhD,EAAIA,EAAI,EAAGwF,IAAK6B,EAAE7B,CAAC,EAAIxF,EAElD,IADAb,EAAIkI,EAAE,OACDrH,EAAI,EAAGA,EAAIb,EAAI,EAAGa,IACrBgU,IAAQhU,EAAI,IAAO,EAAK,EAAI,GAAK6K,EAAExD,EAAErH,CAAC,CAAC,EAEzCgU,EAAK,EAAI,GAAMA,EAAInJ,EAAE7H,CAAC,GACtB4S,EAAE/V,CAAC,EAAImU,EACP,GAAK,EACLnU,GACF,CAGA,IAFAsJ,EAAKyM,EAAE,OACPzW,EAAI,EACGgK,IAAO,GAAG,CACf,IAAKnJ,EAAI,EAAGA,EAAImJ,EAAK,EAAGnJ,IACxB2V,EAAG3V,CAAC,GAAMpB,EAAK,IAAI,EAAGO,CAAC,EAAKyW,EAAE5V,EAAI,CAAC,EAAI4V,EAAE5V,CAAC,IAAMpB,EAAK,IAAI,EAAGO,CAAC,EAAI,GACjEgK,EAAKwM,EAAG,OACRC,EAAID,EACJA,EAAK,CAAC,EACNxW,GACF,CACA,OAAOyW,CACT,EAEA,WAAY,SAAoBC,EAAGhL,EAAGxD,EAAGqB,EAAG,CAC1C,SAASoN,EAAID,EAAGxO,EAAG,CAIjB,QAHIxH,EAAI,EACJX,EAAI2W,EAAE,OACNvQ,EACGzF,EAAIX,EAAGW,IACRgW,EAAEhW,CAAC,IAAMwH,IAAG/B,EAAIzF,GACtB,OAAOyF,CACT,CAMA,QALIyQ,EAAQnX,EAAK,IAAIyI,EAAIwO,EAAEC,EAAID,EAAGxO,CAAC,EAAI,CAAC,CAAC,EACrCxH,EAAI,EACJ+V,EAAI,CAAC,EACLD,EAAK,CAAC,EACNK,EAAI3C,EAAIlU,EAAGkB,EAAGL,EACX0I,GAAKqN,GACVC,EAAKF,EAAID,EAAGxO,EAAIqB,CAAC,EACjB2K,EAAKyC,EAAID,EAAGxO,CAAC,EACbuO,EAAE/V,CAAC,GAAKgL,EAAEmL,CAAE,EAAI,EAAInL,EAAEwI,CAAE,EAAIxI,EAAE,EAAIwI,EAAK2C,CAAE,IAAMtN,EAAIA,GACnDA,GAAK,EACL7I,IAIF,IAFAQ,EAAIuV,EAAE,OACNzW,EAAI,EACGkB,GAAK,GAAG,CACb,IAAKL,EAAI,EAAGA,EAAIK,EAAI,EAAGL,IACrB2V,EAAG3V,CAAC,GAAMpB,EAAK,IAAI,EAAGO,CAAC,EAAKyW,EAAE5V,EAAI,CAAC,EAAI4V,EAAE5V,CAAC,IAAMpB,EAAK,IAAI,EAAGO,CAAC,EAAI,GACnEkB,EAAIsV,EAAG,OACPC,EAAID,EACJA,EAAK,CAAC,EACNxW,GACF,CACA,OAAOyW,CACT,EAEA,QAAS,SAAiB/K,EAAG,EAAG7H,EAAG9D,EAAG,CAQpC,QAPIwJ,GAAK1F,EAAI,GAAK9D,EACd8U,EAAInJ,EAAE,CAAC,EACPxD,EAAI,CAAC,EACLrH,EAAI,EACJwF,EAAI,EACJ3F,EAAI,EACJV,EACGa,GAAKgD,EAAGhD,EAAIA,EAAI0I,EAAGlD,IACxB6B,EAAE7B,CAAC,EAAIxF,EAET,IADAb,EAAIkI,EAAE,OACCxH,EAAIV,EAAI,EAAGU,IAChBmU,IAAOnU,EAAI,IAAM,EAAK,EAAI,GAAKgL,EAAExD,EAAExH,CAAC,CAAC,EAEvC,OAAQ6I,EAAI,GAAMsL,EAAInJ,EAAE7H,CAAC,EAC3B,EAEA,QAAS,SAAiB6S,EAAGI,EAAGC,EAAIhQ,EAAO,CASzC,QARIhH,EAAI2W,EAAE,OACNvQ,EAAI,EACJzF,EAAI,EACJ4M,EAAI,CAAC,EACL0J,EAAK,CAAC,EACNhU,EAAI,CAAC,EACLC,EAAI,CAAC,EACLpC,EACGH,EAAIX,EAAGW,IAAK,CAEjB,IADA4M,EAAE5M,CAAC,EAAI,EACFG,EAAI,EAAGA,EAAId,EAAGc,IACbH,GAAKG,IAAGyM,EAAE5M,CAAC,IAAMqG,EAAQ2P,EAAE7V,CAAC,IAAM6V,EAAEhW,CAAC,EAAIgW,EAAE7V,CAAC,IAGlD,IADAmW,EAAGtW,CAAC,EAAI,EACHG,EAAI,EAAGA,EAAId,EAAGc,IACbH,GAAKG,IAAGmW,EAAGtW,CAAC,GAAK,GAAKgW,EAAGhW,CAAC,EAAIgW,EAAE7V,CAAC,IAEvCmC,EAAEtC,CAAC,GAAK,EAAI,GAAKqG,EAAQ2P,EAAEhW,CAAC,GAAKsW,EAAGtW,CAAC,IAAM4M,EAAE5M,CAAC,EAAI4M,EAAE5M,CAAC,GACrDuC,EAAEvC,CAAC,GAAKqG,EAAQ2P,EAAEhW,CAAC,IAAM4M,EAAE5M,CAAC,EAAI4M,EAAE5M,CAAC,GACnCyF,GAAMnD,EAAEtC,CAAC,EAAIoW,EAAEpW,CAAC,EAAIuC,EAAEvC,CAAC,EAAIqW,EAAGrW,CAAC,CACjC,CACA,OAAOyF,CACT,EAEA,SAAU,SAAkBuQ,EAAGI,EAAG/P,EAAO,CAKvC,QAJIZ,EAAI,EACJzF,EAAI,EACJG,EAAGyM,EACHvN,EAAI2W,EAAE,OACHhW,EAAIX,EAAGW,IAAK,CAEjB,IADA4M,EAAIwJ,EAAEpW,CAAC,EACFG,EAAI,EAAGA,EAAId,EAAGc,IAEbH,GAAKG,IAAGyM,IAAMvG,EAAQ2P,EAAE7V,CAAC,IAAM6V,EAAEhW,CAAC,EAAIgW,EAAE7V,CAAC,IAG/CsF,GAAKmH,CACP,CACA,OAAOnH,CACT,EAEA,aAAc,SAAsBuQ,EAAGI,EAAG/P,EAAO,CAU/C,QATIhH,EAAI2W,EAAE,OACNhW,EAAI,EAAGG,EACPmC,EAAI,CAAC,EACLC,EAAI,CAAC,EACLqI,EAAQ,CAAC,EACTjC,EAAI,CAAC,EACLE,EAAI,CAAC,EACL1F,EAAI,CAAC,EACLyF,EAAI,CAAC,EACF5I,EAAIX,EAAI,EAAGW,IAChB6I,EAAE7I,CAAC,EAAIgW,EAAEhW,EAAI,CAAC,EAAIgW,EAAEhW,CAAC,EAEvB,IADA4K,EAAM,CAAC,EAAI,EACN5K,EAAI,EAAGA,EAAIX,EAAI,EAAGW,IACrB4K,EAAM5K,CAAC,EAAK,EAAI6I,EAAE7I,CAAC,GAAMoW,EAAEpW,EAAI,CAAC,EAAIoW,EAAEpW,CAAC,GAClC,EAAI6I,EAAE7I,EAAE,CAAC,GAAMoW,EAAEpW,CAAC,EAAIoW,EAAEpW,EAAE,CAAC,GAElC,IAAKA,EAAI,EAAGA,EAAIX,EAAI,EAAGW,IACrBsC,EAAEtC,CAAC,EAAI,CAAC,EACRuC,EAAEvC,CAAC,EAAI,CAAC,EACRsC,EAAEtC,CAAC,EAAEA,EAAE,CAAC,EAAI6I,EAAE7I,EAAE,CAAC,EACjBsC,EAAEtC,CAAC,EAAEA,CAAC,EAAI,GAAK6I,EAAE7I,EAAI,CAAC,EAAI6I,EAAE7I,CAAC,GAC7BsC,EAAEtC,CAAC,EAAEA,EAAE,CAAC,EAAI6I,EAAE7I,CAAC,EACfuC,EAAEvC,CAAC,EAAE,CAAC,EAAI4K,EAAM5K,CAAC,EAGnB,IADA2I,EAAI7J,EAAM,SAASA,EAAM,IAAIwD,CAAC,EAAGC,CAAC,EAC7BpC,EAAI,EAAGA,EAAId,EAAI,EAAGc,IACrBgD,EAAEhD,CAAC,GAAKiW,EAAEjW,EAAI,CAAC,EAAIiW,EAAEjW,CAAC,GAAK0I,EAAE1I,CAAC,EAAI0I,EAAE1I,CAAC,GAAKwI,EAAExI,EAAI,CAAC,EAAE,CAAC,EAAI,EAAIwI,EAAExI,CAAC,EAAE,CAAC,GAAK,EACvEyI,EAAEzI,CAAC,GAAKwI,EAAExI,EAAI,CAAC,EAAE,CAAC,EAAIwI,EAAExI,CAAC,EAAE,CAAC,IAAM,EAAI0I,EAAE1I,CAAC,GAE3C,IAAKA,EAAI,EAAGA,EAAId,GACV,EAAA2W,EAAE7V,CAAC,EAAIkG,GADMlG,IACjB,CAEF,OAAAA,GAAK,EACEiW,EAAEjW,CAAC,GAAKkG,EAAQ2P,EAAE7V,CAAC,GAAKgD,EAAEhD,CAAC,EAAIrB,EAAM,GAAGuH,EAAM2P,EAAE7V,CAAC,CAAC,EACrDwI,EAAExI,CAAC,GAAKkG,EAAQ2P,EAAE7V,CAAC,GAAKrB,EAAM,GAAGuH,EAAQ2P,EAAE7V,CAAC,CAAC,EAAIyI,EAAEzI,CAAC,CAC1D,EAEA,iBAAkB,UAA4B,CAC5C,MAAM,IAAI,MAAM,sCAAsC,CACxD,EAEA,IAAK,SAAa6V,EAAG,CACnB,IAAI1W,EAAI0W,EAAE,OACN3W,EAAI2W,EAAE,CAAC,EAAE,OACThW,EAAI,EACJG,EAAGoW,EACH5P,EAAI,CAAC,EACL6P,EAAI,CAAC,EACLxD,EAAS,CAAC,EACVyD,EAAQ,CAAC,EACTC,EAAI,CAAC,EACLC,EAAK,CAAC,EACNpU,EAAI,CAAC,EACLqU,EAAI,CAAC,EACL3J,EAAI,CAAC,EACL4J,EAAK,CAAC,EACV,IAAK7W,EAAI,EAAGA,EAAIV,EAAGU,IACjB2G,EAAE3G,CAAC,EAAIlB,EAAM,IAAIkX,EAAEhW,CAAC,CAAC,EAAIX,EAE3B,IAAKW,EAAI,EAAGA,EAAIX,EAAGW,IAEjB,IADAuC,EAAEvC,CAAC,EAAI,CAAC,EACJG,EAAI,EAAGA,EAAIb,EAAGa,IAChBoC,EAAEvC,CAAC,EAAEG,CAAC,EAAI6V,EAAE7V,CAAC,EAAEH,CAAC,EAAI2G,EAAExG,CAAC,EAI3B,IADAoC,EAAIzD,EAAM,UAAUyD,CAAC,EAChBvC,EAAI,EAAGA,EAAIV,EAAGU,IAEjB,IADA4W,EAAE5W,CAAC,EAAI,CAAC,EACHG,EAAI,EAAGA,EAAIb,EAAGa,IACjByW,EAAE5W,CAAC,EAAEG,CAAC,EAAKrB,EAAM,IAAI,CAACyD,EAAEvC,CAAC,CAAC,EAAG,CAACuC,EAAEpC,CAAC,CAAC,CAAC,GAAMd,EAAI,GAOjD,IAJA2T,EAASlU,EAAM,OAAO8X,CAAC,EACvB3J,EAAI+F,EAAO,CAAC,EACZwD,EAAIxD,EAAO,CAAC,EACZ6D,EAAK/X,EAAM,UAAUmO,CAAC,EACjBjN,EAAI,EAAGA,EAAIwW,EAAE,OAAQxW,IACxB,IAAKG,EAAIH,EAAGG,EAAIqW,EAAE,OAAQrW,IACrBqW,EAAExW,CAAC,EAAIwW,EAAErW,CAAC,IACXoW,EAAQC,EAAExW,CAAC,EACXwW,EAAExW,CAAC,EAAIwW,EAAErW,CAAC,EACVqW,EAAErW,CAAC,EAAIoW,EACPE,EAAQI,EAAG7W,CAAC,EACZ6W,EAAG7W,CAAC,EAAI6W,EAAG1W,CAAC,EACZ0W,EAAG1W,CAAC,EAAIsW,GAKd,IADAE,EAAK7X,EAAM,UAAUyD,CAAC,EACjBvC,EAAI,EAAGA,EAAIV,EAAGU,IAEjB,IADA0W,EAAE1W,CAAC,EAAI,CAAC,EACHG,EAAI,EAAGA,EAAIwW,EAAG,OAAQxW,IACzBuW,EAAE1W,CAAC,EAAEG,CAAC,EAAIrB,EAAM,IAAI,CAAC+X,EAAG7W,CAAC,CAAC,EAAG,CAAC2W,EAAGxW,CAAC,CAAC,CAAC,EAGxC,MAAO,CAAC6V,EAAGQ,EAAGK,EAAIH,CAAC,CACrB,CACF,CAAC,EAGA,SAAS5T,EAAO,CACf,QAAS9C,EAAI,EAAGA,EAAI8C,EAAM,OAAQ9C,KAAM,SAAS+C,EAAU,CACzDjE,EAAM,GAAGiE,CAAQ,EAAI,SAAStD,EAAKsB,EAAM,CACvC,IAAIoG,EAAU,KAEd,OAAIpG,GACF,WAAW,UAAW,CACpBA,EAAK,KAAKoG,EAASrI,EAAM,GAAGiE,CAAQ,EAAE,KAAKoE,EAAS1H,CAAG,CAAC,CAC1D,EAAG,EAAE,EACE,MAEL,OAAOX,EAAMiE,CAAQ,EAAE,KAAMtD,CAAG,GAAM,SACjCX,EAAMiE,CAAQ,EAAE,KAAMtD,CAAG,EAEzBX,EAAMA,EAAMiE,CAAQ,EAAE,KAAMtD,CAAG,CAAC,CAC3C,CACF,GAAEqD,EAAM9C,CAAC,CAAC,CACZ,EAAE,8DAA8D,MAAM,GAAG,CAAC,CAE1E,EAAElB,EAAO,IAAI,EACZ,SAASA,EAAOC,EAAM,CAEvB,IAAIG,EAAQ,CAAC,EAAE,MACXS,EAAWb,EAAM,MAAM,SACvBU,EAAUV,EAAM,MAAM,QAI1BA,EAAM,OAAO,CAIX,OAAQ,UAAkB,CACxB,IAAIiB,EAAOb,EAAM,KAAK,SAAS,EAC/B,OAAIS,EAASI,EAAK,CAAC,CAAC,GACVA,EAAK,CAAC,EAAIA,EAAK,CAAC,GAAKA,EAAK,CAAC,GAE7BA,EAAK,CAAC,EAAIjB,EAAM,KAAKiB,EAAK,CAAC,CAAC,GAAKjB,EAAM,MAAMiB,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,CACvE,EAMA,MAAO,UAAiB,CACtB,IAAIA,EAAOb,EAAM,KAAK,SAAS,EAC3BoJ,EACJ,OAAI9I,EAAQO,EAAK,CAAC,CAAC,GAEjBuI,EAAIxJ,EAAM,OAAOiB,EAAK,CAAC,EAAEA,EAAK,CAAC,EAAEA,EAAK,CAAC,CAAC,EAChCA,EAAK,CAAC,IAAM,EACjBjB,EAAM,OAAO,IAAI,CAACC,EAAK,IAAIuJ,CAAC,EAAG,EAAG,CAAC,EACnCxJ,EAAM,OAAO,IAAI,CAACC,EAAK,IAAIuJ,CAAC,EAAG,EAAG,CAAC,EAAE,GAEpCvI,EAAK,OAAS,GAEhBuI,EAAIxJ,EAAM,OAAOiB,EAAK,CAAC,EAAEA,EAAK,CAAC,EAAEA,EAAK,CAAC,CAAC,EAChCA,EAAK,CAAC,IAAM,EACjBjB,EAAM,OAAO,IAAI,CAACC,EAAK,IAAIuJ,CAAC,EAAE,EAAE,CAAC,EACjCxJ,EAAM,OAAO,IAAI,CAACC,EAAK,IAAIuJ,CAAC,EAAE,EAAE,CAAC,EAAG,IAGvCA,EAAIvI,EAAK,CAAC,EACFA,EAAK,CAAC,IAAM,EACjBjB,EAAM,OAAO,IAAI,CAACC,EAAK,IAAIuJ,CAAC,EAAE,EAAE,CAAC,EACjCxJ,EAAM,OAAO,IAAI,CAACC,EAAK,IAAIuJ,CAAC,EAAE,EAAE,CAAC,EAAE,EAG5C,CACF,CAAC,EAEDxJ,EAAM,OAAOA,EAAM,GAAI,CACrB,OAAQ,SAAgBuH,EAAOtB,EAAM,CACnC,OAAQsB,EAAQ,KAAK,KAAK,GAAK,KAAK,MAAMtB,CAAI,CAChD,EAEA,MAAO,SAAesB,EAAOyQ,EAAO/R,EAAM,CACxC,IAAIgS,EAAShY,EAAK,IAAI,KAAK,OAAOsH,EAAOtB,CAAI,CAAC,EAC9C,OAAQ+R,IAAU,EACfhY,EAAM,OAAO,IAAI,CAACiY,EAAQ,EAAG,CAAC,EAC9BjY,EAAM,OAAO,IAAI,CAACiY,EAAQ,EAAG,CAAC,EAAI,CACvC,CACF,CAAC,EAGDjY,EAAM,OAAO,CAIX,OAAQ,UAAkB,CACxB,IAAIiB,EAAOb,EAAM,KAAK,SAAS,EAC/B,OAAQa,EAAK,SAAW,GACpBA,EAAK,CAAC,EAAIA,EAAK,CAAC,IAAMA,EAAK,CAAC,EAAIhB,EAAK,KAAKgB,EAAK,CAAC,CAAC,IACjDA,EAAK,CAAC,EAAIjB,EAAM,KAAKiB,EAAK,CAAC,CAAC,IAC5BjB,EAAM,MAAMiB,EAAK,CAAC,EAAG,EAAI,EAAIhB,EAAK,KAAKgB,EAAK,CAAC,EAAE,MAAM,EAC3D,EAMA,MAAO,UAAiB,CACtB,IAAIA,EAAOb,EAAM,KAAK,SAAS,EAC3B8X,EACJ,OAAIjX,EAAK,SAAW,GAClBiX,EAASjY,EAAK,IAAID,EAAM,OAAOiB,EAAK,CAAC,EAAGA,EAAK,CAAC,EAAGA,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,CAAC,EAC1DA,EAAK,CAAC,IAAM,EACjBjB,EAAM,SAAS,IAAI,CAACkY,EAAQjX,EAAK,CAAC,EAAE,CAAC,EACrCjB,EAAM,SAAS,IAAI,CAACkY,EAAQjX,EAAK,CAAC,EAAE,CAAC,EAAE,GAExCJ,EAASI,EAAK,CAAC,CAAC,GAClBiX,EAASjY,EAAK,IAAIgB,EAAK,CAAC,CAAC,EACjBA,EAAK,CAAC,GAAK,EAChBjB,EAAM,SAAS,IAAI,CAACkY,EAAQjX,EAAK,CAAC,EAAE,CAAC,EACrCjB,EAAM,SAAS,IAAI,CAACkY,EAAQjX,EAAK,CAAC,EAAE,CAAC,EAAI,IAE9CiX,EAASjY,EAAK,IAAID,EAAM,OAAOiB,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,CAAC,EACxCA,EAAK,CAAC,GAAK,EAChBjB,EAAM,SAAS,IAAI,CAACkY,EAAQjX,EAAK,CAAC,EAAE,OAAO,CAAC,EAC5CjB,EAAM,SAAS,IAAI,CAACkY,EAAQjX,EAAK,CAAC,EAAE,OAAO,CAAC,EAAI,EACrD,CACF,CAAC,EAEDjB,EAAM,OAAOA,EAAM,GAAI,CACrB,OAAQ,SAAgBuH,EAAO,CAC7B,OAAQA,EAAQ,KAAK,KAAK,IAAM,KAAK,MAAM,EAAI,EAAItH,EAAK,KAAK,KAAK,KAAK,CAAC,EAC1E,EAEA,MAAO,SAAesH,EAAOyQ,EAAO,CAClC,OAAQA,IAAU,EACf,EAAIhY,EAAM,SAAS,IAAIC,EAAK,IAAI,KAAK,OAAOsH,CAAK,CAAC,EAAG,KAAK,KAAK,EAAE,CAAC,EAClEvH,EAAM,SAAS,IAAI,CAACC,EAAK,IAAI,KAAK,OAAOsH,CAAK,CAAC,EAAG,KAAK,KAAK,EAAE,CAAC,EAAE,CACtE,CACF,CAAC,EAGDvH,EAAM,OAAO,CAKX,YAAa,UAAuB,CAClC,IAAIiB,EAAOb,EAAM,KAAK,SAAS,EAC/B+X,EAAQC,EAAQC,EAAUC,EAAcC,EAASC,EAAUtX,EAAGG,EAC9D,GAAIJ,EAAK,SAAW,EAAG,CAErB,IADAsX,EAAU,IAAI,MAAMtX,EAAK,CAAC,EAAE,MAAM,EAC7BC,EAAI,EAAGA,EAAID,EAAK,CAAC,EAAE,OAAQC,IAC9BqX,EAAQrX,CAAC,EAAID,EAAK,CAAC,EAAEC,CAAC,EAExBD,EAAOsX,CACT,CAGA,IADAH,EAAS,IAAI,MACRlX,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAC3BkX,EAASA,EAAO,OAAOnX,EAAKC,CAAC,CAAC,EAKhC,IAHAmX,EAAWrY,EAAM,KAAKoY,CAAM,EAE5BD,EAAS,EACJjX,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAC3BiX,EAASA,EAASlX,EAAKC,CAAC,EAAE,OAASjB,EAAK,IAAID,EAAM,KAAKiB,EAAKC,CAAC,CAAC,EAAImX,EAAU,CAAC,EAK/E,IAHAF,GAAWlX,EAAK,OAAS,EAEzBuX,EAAW,EACNtX,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAE3B,IADAoX,EAAetY,EAAM,KAAKiB,EAAKC,CAAC,CAAC,EAC5BG,EAAI,EAAGA,EAAIJ,EAAKC,CAAC,EAAE,OAAQG,IAC9BmX,GAAYvY,EAAK,IAAIgB,EAAKC,CAAC,EAAEG,CAAC,EAAIiX,EAAc,CAAC,EAGrD,OAAAE,GAAaJ,EAAO,OAASnX,EAAK,OAC3BkX,EAASK,CAClB,EAKA,WAAY,UAAsB,CAChC,IAAIvX,EAAOb,EAAM,KAAK,SAAS,EAC/B4L,EAAKC,EAAK1L,EAAGW,EACb,GAAIL,EAASI,EAAK,CAAC,CAAC,EAClB,MAAO,GAAIjB,EAAM,SAAS,IAAIiB,EAAK,CAAC,EAAGA,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,EAEzD,IAAIwX,EAAczY,EAAM,YAAYiB,CAAI,EAGxC,IAFA+K,EAAM/K,EAAK,OAAS,EACpBV,EAAI,EACCW,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAC3BX,EAAIA,EAAIU,EAAKC,CAAC,EAAE,OAElB,OAAA+K,EAAM1L,EAAIyL,EAAM,EACT,EAAIhM,EAAM,SAAS,IAAIyY,EAAazM,EAAKC,CAAG,CACrD,EAEA,MAAO,SAAeyM,EAAQ1M,EAAKC,EAAK,CACtC,MAAO,GAAIjM,EAAM,SAAS,IAAI0Y,EAAQ1M,EAAKC,CAAG,CAChD,CACF,CAAC,EAEDjM,EAAM,OAAOA,EAAM,GAAI,CACrB,YAAa,UAAuB,CAClC,OAAOA,EAAM,YAAY,KAAK,QAAQ,CAAC,CACzC,EAEA,UAAW,UAAqB,CAC9B,IAAIO,EAAI,EACJW,EACJ,IAAKA,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAC3BX,EAAIA,EAAI,KAAKW,CAAC,EAAE,OAElB,OAAOlB,EAAM,MAAM,KAAK,YAAY,EAAG,KAAK,OAAS,EAAGO,EAAI,KAAK,MAAM,CACzE,CACF,CAAC,EAGDP,EAAM,OAAO,CAIX,OAAQ,UAAkB,CACxB,IAAIiB,EAAOb,EAAM,KAAK,SAAS,EAC3BuY,EAAOC,EAAOC,EAAIC,EAAIC,EAC1B,OAAIlY,EAASI,EAAK,CAAC,CAAC,GAChB0X,EAAQ1X,EAAK,CAAC,EACd2X,EAAQ3X,EAAK,CAAC,EACd4X,EAAK5X,EAAK,CAAC,EACX6X,EAAK7X,EAAK,CAAC,EACX8X,EAAK9X,EAAK,CAAC,IAEX0X,EAAQ3Y,EAAM,KAAKiB,EAAK,CAAC,CAAC,EAC1B2X,EAAQ5Y,EAAM,KAAKiB,EAAK,CAAC,CAAC,EAC1B4X,EAAK5X,EAAK,CAAC,EAAE,OACb6X,EAAK7X,EAAK,CAAC,EAAE,OACb8X,EAAK9X,EAAK,CAAC,GAERhB,EAAK,IAAI0Y,EAAQC,CAAK,GAAKG,EAAK9Y,EAAK,MAAM,EAAI4Y,EAAK,EAAIC,GAAM,CAAC,EACxE,EAMA,MAAO,UAAiB,CACtB,IAAI7X,EAAOb,EAAM,KAAK,SAAS,EAE3B4Y,EACA/X,EAAK,SAAW,GAClB+X,EAAS/X,EAAK,CAAC,EACfA,EAAOA,EAAK,MAAM,CAAC,GACVA,EAAK,SAAW,GACzB+X,EAAShZ,EAAM,OAAOiB,EAAK,CAAC,EAAGA,EAAK,CAAC,EAAGA,EAAK,CAAC,EAAGA,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,EACjEA,EAAOA,EAAK,MAAM,CAAC,IAEnB+X,EAAShZ,EAAM,OAAOiB,EAAK,CAAC,EAAGA,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,EAC/CA,EAAOA,EAAK,MAAM,CAAC,GAGrB,IAAIV,EAAIU,EAAK,CAAC,EACV4F,EAAI5F,EAAK,CAAC,EAEd,MAAO,GAAIjB,EAAM,MAAM,IAAIgZ,EAAQnS,EAAGtG,EAAIsG,CAAC,CAC7C,EAEA,SAAU,SAAkBoS,EAAQ,CAMlC,QALIF,EAAK/Y,EAAM,YAAYiZ,CAAM,EAC7BC,EAAQD,EAAO,IAAI,SAAUjY,EAAK,CAAC,OAAOhB,EAAM,KAAKgB,CAAG,CAAE,CAAC,EAC3DT,EAAI0Y,EAAO,OAAO,SAAU1Y,EAAGS,EAAK,CAAC,OAAOT,EAAIS,EAAI,MAAO,EAAG,CAAC,EAE/DmD,EAAU,CAAC,EACNjD,EAAI,EAAGA,EAAI+X,EAAO,OAAQ,EAAE/X,EACjC,QAASG,EAAIH,EAAI,EAAGG,EAAI4X,EAAO,OAAQ,EAAE5X,EAAG,CACxC,IAAIsF,EAAI3G,EAAM,MAAMkZ,EAAMhY,CAAC,EAAGgY,EAAM7X,CAAC,EAAG4X,EAAO/X,CAAC,EAAE,OAAQ+X,EAAO5X,CAAC,EAAE,OAAQ0X,EAAIxY,EAAG0Y,EAAO,MAAM,EAChG9U,EAAQ,KAAK,CAAC,CAACjD,EAAGG,CAAC,EAAGsF,CAAC,CAAC,CAC5B,CAGJ,OAAOxC,CACT,CACF,CAAC,EAGDnE,EAAM,OAAO,CAIX,SAAU,UAAoB,CAC5B,IAAIiB,EAAOb,EAAM,KAAK,SAAS,EAC/B2S,EAAM,IAAI,MAAM,CAAC,EACjBoG,EACA,OAAIlY,EAAK,SAAW,EAClBkY,EAASlZ,EAAK,IAAID,EAAM,OAAO,IAAIiB,EAAK,CAAC,EAAI,EAAG,EAAG,CAAC,EAClCA,EAAK,CAAC,EAAIhB,EAAK,KAAKgB,EAAK,CAAC,CAAC,CAAC,EAE9CkY,EAASlZ,EAAK,IAAID,EAAM,OAAO,IAAIiB,EAAK,CAAC,EAAI,EAAG,EAAG,CAAC,EAClCjB,EAAM,MAAMiB,EAAK,CAAC,CAAC,EAAIhB,EAAK,KAAKgB,EAAK,CAAC,EAAE,MAAM,CAAC,EAEpE8R,EAAI,CAAC,EAAI9R,EAAK,CAAC,EAAIkY,EACnBpG,EAAI,CAAC,EAAI9R,EAAK,CAAC,EAAIkY,EACZpG,CACT,EAKA,IAAK,UAAe,CAClB,IAAI9R,EAAOb,EAAM,KAAK,SAAS,EAC/B2S,EAAM,IAAI,MAAM,CAAC,EACjBoG,EACA,OAAIlY,EAAK,SAAW,EAClBkY,EAASlZ,EAAK,IAAID,EAAM,SAAS,IAAIiB,EAAK,CAAC,EAAI,EAAGA,EAAK,CAAC,EAAI,CAAC,EAC3CA,EAAK,CAAC,EAAIhB,EAAK,KAAKgB,EAAK,CAAC,CAAC,CAAC,EAE9CkY,EAASlZ,EAAK,IAAID,EAAM,SAAS,IAAIiB,EAAK,CAAC,EAAI,EAAGA,EAAK,CAAC,EAAE,OAAS,CAAC,EAClDjB,EAAM,MAAMiB,EAAK,CAAC,EAAG,EAAI,EAAIhB,EAAK,KAAKgB,EAAK,CAAC,EAAE,MAAM,CAAC,EAE1E8R,EAAI,CAAC,EAAI9R,EAAK,CAAC,EAAIkY,EACnBpG,EAAI,CAAC,EAAI9R,EAAK,CAAC,EAAIkY,EACZpG,CACT,EAEA,YAAa,SAAqBqG,EAAQtN,EAAO,CAC/C,OAAOsN,EAAStN,CAClB,CACF,CAAC,EAED9L,EAAM,OAAOA,EAAM,GAAI,CACrB,SAAU,SAAkBuH,EAAOuE,EAAO,CACxC,OAAO9L,EAAM,SAASuH,EAAOuE,EAAO,KAAK,QAAQ,CAAC,CACpD,EAEA,IAAK,SAAavE,EAAOuE,EAAO,CAC9B,OAAO9L,EAAM,IAAIuH,EAAOuE,EAAO,KAAK,QAAQ,CAAC,CAC/C,CACF,CAAC,EAGD,SAASuN,EAAwB1I,EAAIkI,EAAIhI,EAAIiI,EAAI,CAC/C,GAAInI,EAAK,GAAKE,EAAK,GAAKF,GAAM,GAAKE,GAAM,EACvC,MAAM,IAAI,MAAM,sDAAsD,EAExE,IAAIyI,GAAU3I,EAAKkI,EAAKhI,EAAKiI,IAAOD,EAAKC,GACrCS,EAAKtZ,EAAK,KAAKqZ,GAAU,EAAIA,IAAY,EAAET,EAAO,EAAEC,EAAI,EAC5D,OAAQnI,EAAKE,GAAM0I,CACrB,CAGAvZ,EAAM,OAAOA,EAAM,GAAI,CACrB,gCAAiC,SAAyC2Q,EAAIkI,EAAIhI,EAAIiI,EAAI,CACxF,IAAItP,EAAI6P,EAAwB1I,EAAIkI,EAAIhI,EAAIiI,CAAE,EAC9C,OAAO9Y,EAAM,MAAMwJ,EAAG,CAAC,CACzB,EAEA,gCAAiC,SAAyCmH,EAAIkI,EAAIhI,EAAIiI,EAAI,CACxF,IAAItP,EAAI6P,EAAwB1I,EAAIkI,EAAIhI,EAAIiI,CAAE,EAC9C,OAAO9Y,EAAM,MAAMwJ,EAAG,CAAC,CACzB,CACF,CAAC,CAED,EAAExJ,EAAO,IAAI,EACbA,EAAM,OAAU,UAAU,CACxB,SAASwZ,EAAYC,EAAM,CACzB,IAAIC,EAAYD,EAAK,CAAC,EAAE,OACpBE,EAAY3Z,EAAM,OAAO0Z,CAAS,EAAE,IAAI,SAASE,EAAa,CAChE,IAAIC,EACA7Z,EAAM,OAAO0Z,CAAS,EAAE,OAAO,SAASxY,EAAE,CAAC,OAAOA,IAAI0Y,CAAW,CAAC,EACtE,OAAOE,EAAI9Z,EAAM,IAAIyZ,EAAMG,CAAW,EAAE,IAAI,SAASlR,EAAE,CAAE,OAAOA,EAAE,CAAC,CAAE,CAAC,EAC3D1I,EAAM,IAAIyZ,EAAMI,CAAU,CAAC,CACxC,CAAC,EACD,OAAOF,CACT,CAMA,SAASG,EAAIC,EAAON,EAAM,CACxB,IAAIO,EAAOD,EAAM,OACbE,EAAWR,EAAK,CAAC,EAAE,OAAS,EAC5BS,EAAWF,EAAKC,EAAW,EAC3BE,EAAOna,EAAM,MAAMyZ,EAAMM,CAAK,EAC9BK,EACApa,EAAM,SAASyZ,EAAMU,EAAK,IAAI,SAASzR,EAAG,CAAE,MAAO,CAACA,CAAC,CAAE,CAAC,CAAC,EACpD,IAAI,SAAS/B,EAAG,CAAE,OAAOA,EAAE,CAAC,CAAE,CAAC,EACpC0T,EAAQra,EAAM,SAAS+Z,EAAOK,CAAO,EACrCE,EAAOta,EAAM,KAAK+Z,CAAK,EAKvBQ,EAAMva,EAAM,IAAIoa,EAAQ,IAAI,SAASlO,EAAG,CAC1C,OAAO,KAAK,IAAIA,EAAIoO,EAAM,CAAC,CAC7B,CAAC,CAAC,EACEE,EAAMxa,EAAM,IAAI+Z,EAAM,IAAI,SAASjR,EAAG5H,EAAG,CAC3C,OAAO,KAAK,IAAI4H,EAAIsR,EAAQlZ,CAAC,EAAG,CAAC,CACnC,CAAC,CAAC,EACEuZ,EAAMF,EAAMC,EACZE,EAAMH,EAAME,EAChB,MAAO,CACH,KAAKhB,EACL,MAAMM,EACN,KAAKC,EACL,SAASC,EACT,SAASC,EACT,KAAKC,EACL,QAAQC,EACR,MAAMC,EACN,KAAKC,EACL,IAAIG,EACJ,IAAIF,EACJ,IAAIC,EACJ,GAAGE,CACP,CACF,CAIA,SAASC,EAAOC,EAAO,CACrB,IAAIC,EAAerB,EAAYoB,EAAM,IAAI,EAErCE,EAAW,KAAK,KAAKF,EAAM,IAAOA,EAAM,QAAS,EACjDG,EAAYF,EAAa,IAAI,SAASG,EAAK,CAC7C,IAAIP,EAAMO,EAAI,IACVN,EAAKM,EAAI,GACb,OAAOF,EAAW,KAAK,KAAKL,GAAO,EAAIC,EAAG,CAC5C,CAAC,EACGO,EAAaL,EAAM,KAAK,IAAI,SAAST,EAAMjZ,EAAG,CAChD,OAAQiZ,EAAO,GAAKY,EAAU7Z,CAAC,CACjC,CAAC,EACGga,EAASD,EAAW,IAAI,SAASnX,EAAG,CACtC,IAAIqX,EAAUnb,EAAM,SAAS,IAAI8D,EAAG8W,EAAM,QAAQ,EAClD,OAAQO,EAAU,GAAM,EAAIA,EAAUA,GAAW,CACnD,CAAC,EACGtR,EAAI7J,EAAM,SAAS,IAAI,KAAO4a,EAAM,QAAQ,EAC5CQ,EAAaR,EAAM,KAAK,IAAI,SAAST,EAAMjZ,EAAG,CAChD,IAAI4I,EAAID,EAAIkR,EAAU7Z,CAAC,EACvB,MAAO,CAACiZ,EAAOrQ,EAAGqQ,EAAOrQ,CAAC,CAC5B,CAAC,EACD,MAAO,CACH,GAAIiR,EACJ,EAAGE,EACHC,EACA,SAAUJ,EACV,WAAYM,CAChB,CACF,CAEA,SAASC,EAAOT,EAAO,CACrB,IAAIU,EACCV,EAAM,GAAKA,EAAM,WAAc,EAAIA,EAAM,IAAMA,EAAM,UACtDW,EAAO,SAAS7S,EAAGmQ,EAAIC,EAAI,CAC7B,OAAO9Y,EAAM,KAAK,IAAI0I,GAAKoQ,EAAKD,EAAKnQ,GAAImQ,EAAK,EAAGC,EAAK,CAAC,CACzD,EACIM,EAAS,EAAImC,EAAKD,EAAaV,EAAM,SAAUA,EAAM,QAAQ,EACjE,MAAO,CAAE,YAAaU,EAAa,OAAQlC,CAAO,CACpD,CAEA,SAASoC,EAASzB,EAAON,EAAM,CAC7B,IAAImB,EAAQd,EAAIC,EAAMN,CAAI,EACtBgC,EAAQd,EAAOC,CAAK,EACpBc,EAAQL,EAAOT,CAAK,EAGpBe,EACA,GAAK,EAAIf,EAAM,MAAQA,EAAM,KAAO,GAAMA,EAAM,UACpD,OAAAA,EAAM,EAAIa,EACVb,EAAM,EAAIc,EACVd,EAAM,UAAYe,EACXf,CACT,CAEA,MAAO,CAAE,IAAKY,CAAS,CACzB,EAAG,EAYHxb,EAAM,OAAO,CACX,aAAc,UAAuB,CAMnC,QADI4b,EAAa,IAAI,MAAM,UAAU,MAAM,EACnC1a,EAAE,EAAEA,EAAE,UAAU,OAAOA,IAAI,CACjC,IAAI2a,EAAQ,CAAC,CAAC,EACdD,EAAW1a,CAAC,EAAG2a,EAAM,OAAO,UAAU3a,CAAC,CAAC,CAC1C,CACA,OAAOlB,EAAM4b,CAAU,CAEzB,EAEA,cAAe,UAAyB,CAItC,QADIA,EAAa,IAAI,MAAM,UAAU,CAAC,EAAE,MAAM,EACtC1a,EAAE,EAAEA,EAAE,UAAU,CAAC,EAAE,OAAOA,IAAI,CACpC,IAAI2a,EAAQ,CAAC,CAAC,EACdD,EAAW1a,CAAC,EAAG2a,EAAM,OAAO,UAAU,CAAC,EAAE3a,CAAC,CAAC,CAC7C,CACA,OAAOlB,EAAM4b,CAAU,CAEzB,EAEA,cAAe,SAAuBE,EAAM,CAG1C,QADIC,EAAO,IAAI,MAAMD,EAAK,MAAM,EACxB,EAAE,EAAE,EAAEA,EAAK,OAAO,IACxBC,EAAK,CAAC,EAAID,EAAK,CAAC,EAElB,OAAO9b,EAAM,cAAc+b,CAAI,CAEjC,EAEA,aAAc,SAAsBF,EAAM,CACxC,OAAO7b,EAAM6b,CAAK,EAAE,UAAU,CAChC,EAEA,cAAe,SAAuBC,EAAK,CACzC,OAAOA,EAAK,UAAU,CACxB,EAEA,WAAY,SAAoBtY,EAAEC,EAAE,CAClC,IAAI,EAAGpC,EAAGwF,EAAGqN,EAAQ3P,EACrB,GAAIf,EAAE,KAAK,GAAKC,EAAE,KAAK,EAAG,CACxB,GAAGA,EAAE,KAAK,EAAE,EAAE,CAEZ,IADAyQ,EAAS,CAAC,EACL,EAAI,EAAG,EAAI1Q,EAAE,KAAK,EAAG,IAExB,IADA0Q,EAAO,CAAC,EAAI,CAAC,EACR7S,EAAI,EAAGA,EAAIoC,EAAE,KAAK,EAAGpC,IAAK,CAE7B,IADAkD,EAAM,EACDsC,EAAI,EAAGA,EAAIrD,EAAE,KAAK,EAAGqD,IACxBtC,GAAOf,EAAE,QAAQ,EAAE,CAAC,EAAEqD,CAAC,EAAIpD,EAAE,QAAQ,EAAEoD,CAAC,EAAExF,CAAC,EAE7C6S,EAAO,CAAC,EAAE7S,CAAC,EAAIkD,CACjB,CAEF,OAAOvE,EAAMkU,CAAM,CACrB,CAEA,IADAA,EAAS,CAAC,EACL,EAAI,EAAG,EAAI1Q,EAAE,KAAK,EAAG,IAExB,IADA0Q,EAAO,CAAC,EAAI,CAAC,EACR7S,EAAI,EAAGA,EAAIoC,EAAE,KAAK,EAAGpC,IAAK,CAE7B,IADAkD,EAAM,EACDsC,EAAI,EAAGA,EAAIrD,EAAE,KAAK,EAAGqD,IACxBtC,GAAOf,EAAE,QAAQ,EAAE,CAAC,EAAEqD,CAAC,EAAIpD,EAAE,QAAQ,EAAEpC,CAAC,EAE1C6S,EAAO,CAAC,EAAE7S,CAAC,EAAIkD,CACjB,CAEF,OAAOvE,EAAMkU,CAAM,CACrB,CACF,EAIA,QAAS,SAAiB8H,EAAMC,EAAM,CAGpC,IAAIC,EAAWlc,EAAM,YAAYgc,CAAK,EAElCG,EAAUH,EAAM,UAAU,EAC1BI,EAAOpc,EAAM,WAAWA,EAAMkc,CAAQ,EAAEC,CAAO,EACnD,OAAOnc,EAAM,WAAWoc,EAAKH,CAAK,CAEpC,EAEA,SAAU,SAAkBD,EAAMC,EAAMjE,EAAM,CAC5C,IAAIjM,EAAO/L,EAAM,QAAQgc,EAAMC,CAAK,EAEhCI,EAAU,CAAC,EACfA,EAAQ,MAAQ,CAAC,EACjB,IAAIC,EAAWtc,EAAM,SAASgc,EAAOjQ,CAAI,EACzCsQ,EAAQ,KAAOC,EACf,IAAIC,EAAWN,EAAM,KAAK,EAC1BI,EAAQ,MAAM,UAAYrc,EAAM,UAAUic,EAAOK,CAAQ,EAEzDD,EAAQ,MAAM,IAAMrc,EAAM,IAAIsc,EAAUC,CAAQ,EAChDF,EAAQ,MAAM,IAAMA,EAAQ,MAAM,KAAOL,EAAM,CAAC,EAAE,OAAS,GAE3DK,EAAQ,MAAM,IAAMrc,EAAM,IAAIic,EAAOK,CAAQ,EAC7CD,EAAQ,MAAM,IACVA,EAAQ,MAAM,KAAOJ,EAAM,QAAUD,EAAM,CAAC,EAAE,OAAS,GAAK,GAEhEK,EAAQ,MAAM,IAAMrc,EAAM,IAAIic,EAAOM,CAAQ,EAC7CF,EAAQ,MAAM,IAAMA,EAAQ,MAAM,KAAOJ,EAAM,OAAS,GAExDI,EAAQ,MAAM,GAAK,EAAKA,EAAQ,MAAM,IAAMA,EAAQ,MAAM,IACtDA,EAAQ,MAAM,GAAK,IAAGA,EAAQ,MAAM,GAAK,GAE7CA,EAAQ,MAAM,OAASA,EAAQ,MAAM,IAAMA,EAAQ,MAAM,IACzDA,EAAQ,MAAM,OACVrc,EAAM,WAAWqc,EAAQ,MAAM,OACdL,EAAM,CAAC,EAAE,OAAS,EAClBC,EAAM,QAAUD,EAAM,CAAC,EAAE,OAAS,GAAK,CAAC,EAE7DK,EAAQ,MAAM,KAAO,KAAK,KAAKA,EAAQ,MAAM,GAAG,EAEhDA,EAAQ,MAAM,MAAQ,EAAKA,EAAQ,MAAM,IAAMA,EAAQ,MAAM,IACzDA,EAAQ,MAAM,MAAQ,IAAGA,EAAQ,MAAM,MAAQ,GAEnDA,EAAQ,MAAQ,IAAI,MAAML,EAAM,CAAC,EAAE,MAAM,EAIzC,QAHIQ,EAAQxc,EAAM,YAAYgc,CAAK,EAC/BS,EAAKC,EAAIjL,EAELvQ,EAAE,EAAGA,EAAE6K,EAAK,OAAO7K,IACzBub,EAAI,KAAK,KAAKJ,EAAQ,MAAM,IAAM,KAAK,IAAIG,EAAMtb,CAAC,EAAEA,CAAC,CAAC,CAAC,EACvDwb,EAAI,KAAK,IAAI3Q,EAAK7K,CAAC,EAAIub,CAAG,EAC1BhL,EAAIzR,EAAM,MAAM0c,EAAIT,EAAM,OAASD,EAAM,CAAC,EAAE,OAAS,EAAGhE,CAAK,EAE7DqE,EAAQ,MAAMnb,CAAC,EAAE,CAAC6K,EAAK7K,CAAC,EAAGub,EAAKC,EAAIjL,CAAE,EAGxC,OAAA4K,EAAQ,QAAUtQ,EACXsQ,CACT,EAEA,SAAU,SAAkBL,EAAM,CAChC,OAAOhc,EAAM,WAAWgc,EAAM,UAAU,EAAEA,CAAK,CACjD,EAGA,YAAa,SAAqBA,EAAM,CACtC,IAAIW,EAAQ3c,EAAM,WAAWgc,EAAM,UAAU,EAAEA,CAAK,EAChDE,EAAWlc,EAAM,IAAI2c,CAAK,EAC9B,OAAOT,CACT,EAEA,SAAU,SAAkBF,EAAOjQ,EAAM,CACvC,IAAI6Q,EAAO5c,EAAM,WAAWgc,EAAOjQ,CAAI,EACvC,OAAO,IAAI/L,EAAM4c,CAAI,CACvB,EAEA,UAAW,SAAmBX,EAAOK,EAAU,CAC7C,OAAOtc,EAAM,eAAeic,EAAOK,CAAQ,CAC7C,EAEA,IAAK,SAAaA,EAAUC,EAAU,CAEpC,QADIM,EAAM,EACF3b,EAAI,EAAGA,EAAIob,EAAS,OAAQpb,IAClC2b,GAAO,KAAK,IAAIP,EAASpb,CAAC,EAAIqb,EAAU,CAAC,EAE3C,OAAOM,CACT,EAEA,IAAK,SAAaZ,EAAOK,EAAU,CAEjC,QADIQ,EAAM,EACF5b,EAAI,EAAGA,EAAI+a,EAAM,OAAQ/a,IAC/B4b,GAAO,KAAK,IAAIb,EAAM/a,CAAC,EAAIob,EAASpb,CAAC,EAAG,CAAC,EAE3C,OAAO4b,CACT,EAEA,IAAK,SAAab,EAAOM,EAAU,CAEjC,QADIQ,EAAM,EACF7b,EAAI,EAAGA,EAAI+a,EAAM,OAAQ/a,IAC/B6b,GAAO,KAAK,IAAId,EAAM/a,CAAC,EAAIqb,EAAU,CAAC,EAExC,OAAOQ,CACT,EAEA,eAAgB,SAAwBvZ,EAAEC,EAAE,CAE1C,QADIsP,EAAM,IAAI,MAAMvP,EAAE,MAAM,EACpBtC,EAAE,EAAEA,EAAEsC,EAAE,OAAOtC,IAAI,CACzB6R,EAAI7R,CAAC,EAAI,IAAI,MAAMsC,EAAEtC,CAAC,EAAE,MAAM,EAC9B,QAAQG,EAAE,EAAEA,EAAEmC,EAAEtC,CAAC,EAAE,OAAOG,IACxB0R,EAAI7R,CAAC,EAAEG,CAAC,EAAEmC,EAAEtC,CAAC,EAAEG,CAAC,EAAEoC,EAAEvC,CAAC,EAAEG,CAAC,CAE5B,CACA,OAAOrB,EAAM+S,CAAG,CAClB,CACF,CAAC,EAEC/S,EAAM,MAAQA,EAEPA,CACT,CAAC,ICt4JD,IAAAgd,GAAAC,GAAAC,IAAA,CAGA,IAAIC,IACH,SAAUC,EAAS,CAEf,OAAO,qBAAyB,IACjB,OAAOF,IAApB,SACDE,EAAQF,EAAO,EACS,OAAO,QAAtB,YAAgC,OAAO,IAChD,OAAO,UAAY,CACjB,IAAIG,EAAS,CAAC,EACd,OAAAD,EAAQC,CAAM,EACPA,CACT,CAAC,EAEDD,EAAQD,GAAS,CAAC,CAAC,EAGrBC,EAAQD,GAAS,CAAC,CAAC,CAGvB,GAAE,SAASA,EAAQ,CACnBA,EAAO,QAAU,QACjB,IAAIG,EAAI,KAER,SAASC,EAAQC,EAAKC,EAAG,CAAE,QAAQC,EAAI,EAAGC,EAAI,EAAGD,EAAIF,EAAI,OAAQ,EAAEE,EAAGC,EAAIF,EAAIE,EAAIH,EAAIE,CAAC,EAAG,OAAOC,CAAG,CACpG,SAASC,EAAaC,EAAGC,EAAGC,EAAIC,EAAIC,EAAM,CACxC,GAAGH,IAAM,EAAG,OAAOC,EACnB,GAAGD,IAAM,EAAG,OAAOE,EAEnB,QADIE,EAAM,EAAIL,EAAGM,EAAKH,EACdI,EAAI,EAAGA,EAAIN,EAAG,EAAEM,EACtBD,EAAKH,EAAKI,EAAIF,EAAMD,EAAOF,EAC3BA,EAAKC,EAAIA,EAAKG,EAEhB,OAAOA,CACT,CACA,SAASE,EAAaC,EAASC,EAASC,EAAMC,EAASR,EAAM,CAC3D,OAAO,SAAgBJ,EAAEC,EAAG,CAC1B,GAAGW,EAAS,CACV,GAAGZ,IAAM,EAAG,OAAQY,GAAW,EAAI,KAAY,IAC1C,GAAGZ,EAAI,EAAG,MAAO,IACxB,CACA,GAAGC,IAAM,EAAG,OAAOQ,EAAQT,CAAC,EAC5B,GAAGC,IAAM,EAAG,OAAOS,EAAQV,CAAC,EAC5B,GAAGC,EAAI,EAAG,MAAO,KACjBA,GAAG,EACH,IAAIY,EAAKJ,EAAQT,CAAC,EAAGc,EAAKJ,EAAQV,CAAC,EACnC,OAAOD,EAAaC,EAAGC,EAAGY,EAAIC,EAAIV,CAAI,CACxC,CACF,CACA,IAAIW,EAAW,UAAW,CACxB,IAAIC,EAAI,WAEJC,EAAS,CAAC,YAAe,aAAgB,cAAa,eAAc,YAAa,YAAY,EAAE,QAAQ,EACvGC,EAAS,CAAC,YAAe,WAAc,cAAa,YAAa,YAAa,CAAG,EAAE,QAAQ,EAC3FC,EAAS,CAAC,EAAK,eAAkB,eAAiB,gBAAkB,cAAe,EAAE,QAAQ,EAC7FC,EAAS,CAAC,cAAkB,eAAiB,gBAAkB,eAAiB,cAAe,EAAE,QAAQ,EAE7G,SAASX,EAAQT,EAAG,CAClB,IAAIqB,EAAE,EAAGC,EAAG,EAAGC,EAAG,EAAGC,EAAIxB,EAAIA,EAC7B,GAAGA,EAAI,EACLsB,EAAK5B,EAAQuB,EAAQO,CAAC,EACtBD,EAAK7B,EAAQwB,EAAQM,CAAC,EACtBH,EAAIC,EAAKC,MACJ,CACL,IAAIE,EAAKzB,EAAI,WACbwB,EAAI,GAAKA,EACTF,EAAK5B,EAAQyB,EAAQK,CAAC,EACtBD,EAAK7B,EAAQ0B,EAAQI,CAAC,EACtBH,EAAI5B,EAAE,KAAKuB,EAAEhB,CAAC,GAAGP,EAAE,IAAIgC,CAAE,EAAEH,EAAG7B,EAAE,IAAIgC,CAAE,EAAEF,EAAG,EAAEvB,EAC/C,CACA,OAAOqB,CACT,CAEA,IAAIK,EAAS,CAAC,YAAe,YAAe,cAAa,eAAc,WAAa,YAAY,EAAE,QAAQ,EACtGC,EAAS,CAAC,aAAgB,WAAc,cAAa,YAAa,YAAa,CAAG,EAAE,QAAQ,EAC5FC,EAAS,CAAC,EAAK,UAAa,gBAAkB,eAAiB,cAAe,EAAE,QAAQ,EACxFC,EAAS,CAAC,aAAe,gBAAkB,eAAiB,cAAgB,aAAc,EAAE,QAAQ,EAExG,SAASnB,EAAQV,EAAG,CAClB,IAAIqB,EAAE,EAAGC,EAAG,EAAGC,EAAG,EAAGC,EAAIxB,EAAEA,EAAGyB,EAAKhC,EAAE,IAAIO,CAAC,EAAI,YAC9C,OAAG,KAAK,IAAIA,CAAC,EAAG,GACdsB,EAAKtB,EAAEN,EAAQgC,EAAQF,CAAC,EACxBD,EAAK7B,EAAQiC,EAAQH,CAAC,EACtBH,EAAIC,EAAKC,IAETC,EAAI,GAAKA,EACTF,EAAG5B,EAAQkC,EAAQJ,CAAC,EACpBD,EAAG7B,EAAQmC,EAAQL,CAAC,EACpBH,EAAE5B,EAAE,KAAKuB,EAAEvB,EAAE,IAAIO,CAAC,CAAC,GAAGP,EAAE,IAAIgC,CAAE,EAAEH,EAAG7B,EAAE,IAAIgC,CAAE,EAAEF,EAAG,EAAE9B,EAAE,IAAIO,CAAC,GACtDA,EAAI,IAAGqB,EAAI,CAACA,IAEVA,CACT,CAEA,OAAO,SAASN,EAAQf,EAAGC,EAAG,CAE5B,GADAA,EAAI,KAAK,MAAMA,CAAC,EACb,CAAC,SAASD,CAAC,EAAG,OAAO,MAAMA,CAAC,EAAIA,EAAI,EACvC,GAAGC,EAAI,EAAG,OAASA,EAAE,EAAG,GAAG,GAAGc,EAAQf,EAAG,CAACC,CAAC,EAC3C,GAAGD,EAAI,EAAG,OAASC,EAAE,EAAG,GAAG,GAAGc,EAAQ,CAACf,EAAGC,CAAC,EAC3C,GAAGA,IAAM,EAAG,OAAOQ,EAAQT,CAAC,EAC5B,GAAGC,IAAM,EAAG,OAAOS,EAAQV,CAAC,EAC5B,GAAGA,IAAM,EAAG,MAAO,GAEnB,IAAI8B,EAAI,EACR,GAAG9B,EAAIC,EACL6B,EAAM/B,EAAaC,EAAGC,EAAGQ,EAAQT,CAAC,EAAGU,EAAQV,CAAC,EAAE,EAAE,MAC7C,CAML,QALI+B,EAAE,EAAEtC,EAAE,OAAOQ,EAAER,EAAE,MAAMA,EAAE,KAAK,GAAGQ,CAAC,CAAC,GAAG,CAAC,EACvC+B,EAAK,GACLC,EAAI,EAAKC,EAAI,EACbC,EAAG,EAAKC,EAAM,EACdC,EAAM,EAAIrC,EACLsC,EAAEP,EAAEO,EAAE,EAAEA,IACfF,EAAIE,EAAED,EAAIF,EAAGF,EACbA,EAAIE,EACJA,EAAGC,EACC3C,EAAE,IAAI0C,CAAE,EAAI,OACdA,GAAM,MACNF,GAAO,MACPH,GAAO,MACPI,GAAO,OAELF,IAAME,GAAOC,GACjBH,EAAK,CAACA,EACFM,GAAKrC,IAAG6B,EAAIG,GAElBC,EAAI,EAAIA,EAAIC,EACZL,GAAOI,CACT,CACA,OAAOJ,CACT,CACF,EAAG,EACCS,EAAW,UAAW,CACxB,IAAIvB,EAAI,WAEJC,EAAS,CAAC,YAAe,WAAc,eAAc,cAAa,aAAc,WAAW,EAAE,QAAQ,EACrGC,EAAS,CAAC,YAAe,cAAa,cAAa,WAAa,YAAa,CAAG,EAAE,QAAQ,EAC1FC,EAAS,CAAC,EAAK,eAAkB,eAAiB,gBAAkB,cAAe,EAAE,QAAQ,EAC7FC,EAAS,CAAC,cAAkB,eAAiB,gBAAkB,eAAiB,cAAe,EAAE,QAAQ,EAE7G,SAASX,EAAQT,EAAG,CAClB,IAAIqB,EAAE,EAAGC,EAAG,EAAGC,EAAG,EAAGC,EAAIxB,EAAIA,EAAGyB,EAAKzB,EAAI,WACzC,OAAGA,EAAI,GACLsB,EAAK5B,EAAQuB,EAAQO,CAAC,EACtBD,EAAK7B,EAAQwB,EAAQM,CAAC,EACtBH,EAAIC,EAAGC,EAAKP,EAAID,EAAQf,EAAE,CAAC,EAAIP,EAAE,IAAIO,CAAC,IAEtCwB,EAAI,GAAKA,EACTF,EAAK5B,EAAQyB,EAAQK,CAAC,EACtBD,EAAK7B,EAAQ0B,EAAQI,CAAC,EACtBH,EAAI5B,EAAE,KAAKuB,EAAEhB,CAAC,GAAGP,EAAE,IAAIgC,CAAE,EAAEH,EAAG7B,EAAE,IAAIgC,CAAE,EAAEF,EAAG,EAAEvB,IAExCqB,CACT,CAEA,IAAIK,EAAS,CAAC,cAAkB,YAAiB,aAAkB,cAAgB,eAAiB,WAAc,EAAE,QAAQ,EACxHC,EAAS,CAAC,YAAiB,aAAiB,WAAiB,cAAgB,WAAgB,YAAgB,CAAC,EAAE,QAAQ,EACxHC,EAAS,CAAC,EAAK,UAAa,gBAAkB,eAAiB,cAAe,EAAE,QAAQ,EACxFC,EAAS,CAAC,aAAe,gBAAkB,eAAiB,cAAgB,aAAc,EAAE,QAAQ,EAExG,SAASnB,EAAQV,EAAG,CAClB,IAAIqB,EAAE,EAAGC,EAAG,EAAGC,EAAG,EAAGC,EAAIxB,EAAEA,EAAGyB,EAAKzB,EAAI,YACvC,OAAGA,EAAI,GACLsB,EAAKtB,EAAEN,EAAQgC,EAAQF,CAAC,EACxBD,EAAK7B,EAAQiC,EAAQH,CAAC,EACtBH,EAAIC,EAAGC,EAAKP,GAAKD,EAAQf,EAAE,CAAC,EAAIP,EAAE,IAAIO,CAAC,EAAI,EAAIA,KAE/CwB,EAAI,GAAKA,EACTF,EAAG5B,EAAQkC,EAAQJ,CAAC,EACpBD,EAAG7B,EAAQmC,EAAQL,CAAC,EACpBH,EAAE5B,EAAE,KAAKuB,EAAEhB,CAAC,GAAGP,EAAE,IAAIgC,CAAE,EAAEH,EAAG7B,EAAE,IAAIgC,CAAE,EAAEF,EAAG,EAAEvB,IAEtCqB,CACT,CAEA,OAAOb,EAAaC,EAASC,EAAS,UAAW,EAAG,EAAE,CACxD,EAAG,EACC8B,EAAW,UAAW,CACxB,IAAIC,EAAO,CAAC,EAAK,UAAW,UAAW,UAAW,SAAW,SAAa,QAAU,EAAE,QAAQ,EAC1FC,EAAO,CAAC,UAAY,UAAc,UAAa,WAAc,UAAa,WAAe,UAAc,WAAe,SAAW,EAAE,QAAQ,EAE/I,SAASjC,EAAQT,EAAG,CAClB,OAAGA,GAAK,KAAaN,EAAQ+C,EAAMzC,EAAEA,GAAG,KAAK,KAAK,EAC3CP,EAAE,IAAIA,EAAE,IAAIO,CAAC,CAAC,EAAEP,EAAE,KAAKA,EAAE,IAAIO,CAAC,CAAC,EAAEN,EAAQgD,EAAM,KAAKjD,EAAE,IAAIO,CAAC,CAAC,CACrE,CAEA,IAAI2C,EAAO,CAAC,GAAK,UAAY,UAAY,UAAY,UAAc,UAAa,QAAU,EAAE,QAAQ,EAChGC,EAAO,CAAC,UAAY,WAAe,WAAc,UAAa,WAAe,UAAc,WAAe,UAAc,UAAY,EAAE,QAAQ,EAElJ,SAASlC,EAAQV,EAAG,CAClB,OAAGA,EAAI,KAAaA,EAAIN,EAAQiD,EAAM3C,EAAEA,GAAG,KAAK,KAAK,GAC7CA,EAAI,EAAI,GAAK,GAAKP,EAAE,IAAIA,EAAE,IAAIO,CAAC,CAAC,EAAEP,EAAE,KAAKA,EAAE,IAAIO,CAAC,CAAC,EAAEN,EAAQkD,EAAM,KAAKnD,EAAE,IAAIO,CAAC,CAAC,CACxF,CAEA,OAAO,SAASwC,EAAQxC,EAAGC,EAAG,CAE5B,GADAA,EAAI,KAAK,MAAMA,CAAC,EACbA,IAAM,EAAG,OAAOQ,EAAQT,CAAC,EAC5B,GAAGC,IAAM,EAAG,OAAOS,EAAQV,CAAC,EAC5B,GAAGC,EAAI,EAAG,MAAO,KACjB,GAAGR,EAAE,IAAIO,CAAC,IAAM,EAAG,MAAO,GAC1B,GAAGA,GAAK,IAAU,MAAO,KAEzB,IAAI8B,EAAM,EAAKQ,EAAGD,EAAM,EAAI5C,EAAE,IAAIO,CAAC,EAAG6C,EAAM,EAAKC,EAAG,EAAKC,EAAI,EACzDhB,EAAE,EAAEtC,EAAE,OAAOQ,EAAER,EAAE,MAAMA,EAAE,KAAK,GAAGQ,CAAC,CAAC,GAAG,CAAC,EAC3C,IAAKqC,EAAEP,EAAEO,EAAE,EAAEA,IACXS,EAAIT,EAAED,EAAIS,EAAKD,EACfA,EAAIC,EAAIA,EAAGC,EACPtD,EAAE,IAAIqD,CAAE,EAAI,OACdA,GAAM,MACND,GAAO,MACPf,GAAO,OAENQ,GAAKrC,IAAG6B,EAAMe,GAEnB,OAAAf,GAAOU,EAAQxC,EAAG,CAAC,EAAI8C,EAChB9C,EAAI,GAAMC,EAAE,EAAK,CAAC6B,EAAMA,CACjC,CAEF,EAAG,EAECkB,EAAW,UAAW,CACxB,IAAIP,EAAO,CAAC,WAAa,SAAY,UAAY,SAAc,UAAa,QAAY,KAAO,EAAE,QAAQ,EACrGC,EAAO,CAAC,WAAY,WAAe,UAAc,WAAe,UAAa,UAAc,QAAU,EAAE,QAAQ,EAEnH,SAASjC,EAAQT,EAAG,CAClB,OAAGA,GAAK,EAAU,CAACP,EAAE,IAAIO,EAAE,CAAC,EAAIwC,EAAQxC,EAAE,CAAC,EAAIN,EAAQ+C,EAAMzC,EAAEA,EAAE,CAAC,EAC3DP,EAAE,IAAI,CAACO,CAAC,EAAIP,EAAE,KAAKO,CAAC,EAAIN,EAAQgD,EAAM,EAAE1C,CAAC,CAClD,CAEA,IAAI2C,EAAO,CAAC,EAAK,UAAY,WAAa,WAAa,WAAe,WAAc,QAAU,EAAE,QAAQ,EACpGC,EAAO,CAAC,WAAY,UAAY,UAAe,UAAc,WAAc,UAAa,SAAW,EAAE,QAAQ,EAEjH,SAASlC,EAAQV,EAAG,CAClB,OAAGA,GAAK,EAAUP,EAAE,IAAIO,EAAE,CAAC,EAAIwC,EAAQxC,EAAE,CAAC,EAAK,EAAEA,EAAKN,EAAQiD,EAAM3C,EAAEA,EAAE,CAAC,EAClEP,EAAE,IAAI,CAACO,CAAC,EAAEP,EAAE,KAAKO,CAAC,EAAEN,EAAQkD,EAAM,EAAE5C,CAAC,CAC9C,CAEA,OAAOQ,EAAaC,EAASC,EAAS,UAAW,EAAG,CAAC,CACvD,EAAG,EACHpB,EAAO,QAAUyB,EACjBzB,EAAO,QAAUiD,EACjBjD,EAAO,QAAUkD,EACjBlD,EAAO,QAAU0D,CACjB,CAAC,ICrPD,IAAAC,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EASC,SAAUC,EAAQC,EAAS,CAC1B,OAAOH,IAAY,UAAY,OAAOC,GAAW,IAAcA,GAAO,QAAUE,EAAQ,EACxF,OAAO,QAAW,YAAc,OAAO,IAAM,OAAOA,CAAO,GAC1DD,EAASA,GAAU,KAAMA,EAAO,WAAaC,EAAQ,EACxD,GAAEH,GAAO,UAAY,CAAE,aAIrB,IAAII,EAAY,UAAU,UACtBC,EAAW,UAAU,SAErBC,EAAQ,aAAa,KAAKF,CAAS,EACnCG,EAAY,UAAU,KAAKH,CAAS,EACpCI,EAAU,wCAAwC,KAAKJ,CAAS,EAChEK,EAAO,cAAc,KAAKL,CAAS,EACnCM,EAAKH,GAAaC,GAAWC,EAC7BE,EAAaD,IAAOH,EAAY,SAAS,cAAgB,EAAI,EAAEE,GAAQD,GAAS,CAAC,GACjFI,EAAS,CAACH,GAAQ,WAAW,KAAKL,CAAS,EAC3CS,EAAWD,GAAU,eAAe,KAAKR,CAAS,EAClDU,EAAS,CAACL,GAAQ,gBAAgB,KAAKL,CAAS,EAChDW,EAAiBD,GAAU,CAACA,EAAO,CAAC,EACpCE,EAAS,UAAU,KAAKZ,CAAS,EACjCa,EAAS,iBAAiB,KAAK,UAAU,MAAM,EAC/CC,EAAqB,+BAA+B,KAAKd,CAAS,EAClEe,EAAU,YAAY,KAAKf,CAAS,EAEpCgB,EAAMH,IAAW,cAAc,KAAKb,CAAS,GAAK,UAAU,eAAiB,GAC7EiB,EAAU,UAAU,KAAKjB,CAAS,EAElCkB,EAASF,GAAOC,GAAW,mDAAmD,KAAKjB,CAAS,EAC5FmB,EAAMH,GAAO,MAAM,KAAKf,CAAQ,EAChCmB,EAAW,WAAW,KAAKpB,CAAS,EACpCqB,EAAU,OAAO,KAAKpB,CAAQ,EAE9BqB,EAAiBV,GAAUZ,EAAU,MAAM,qBAAqB,EAChEsB,IAAkBA,EAAiB,OAAOA,EAAe,CAAC,CAAC,GAC3DA,GAAkBA,GAAkB,KAAMV,EAAS,GAAOJ,EAAS,IAEvE,IAAIe,EAAcJ,IAAQV,GAAYG,IAAWU,GAAkB,MAAQA,EAAiB,QACxFE,EAAoBtB,GAAUI,GAAMC,GAAc,EAEtD,SAASkB,EAAUC,EAAK,CAAE,OAAO,IAAI,OAAO,UAAYA,EAAM,eAAe,CAAE,CAE/E,IAAIC,EAAU,SAASC,EAAMF,EAAK,CAChC,IAAIG,EAAUD,EAAK,UACfE,EAAQL,EAAUC,CAAG,EAAE,KAAKG,CAAO,EACvC,GAAIC,EAAO,CACT,IAAIC,EAAQF,EAAQ,MAAMC,EAAM,MAAQA,EAAM,CAAC,EAAE,MAAM,EACvDF,EAAK,UAAYC,EAAQ,MAAM,EAAGC,EAAM,KAAK,GAAKC,EAAQD,EAAM,CAAC,EAAIC,EAAQ,GAC/E,CACF,EAEA,SAASC,EAAeC,EAAG,CACzB,QAASC,EAAQD,EAAE,WAAW,OAAQC,EAAQ,EAAG,EAAEA,EAC/CD,EAAE,YAAYA,EAAE,UAAU,EAC9B,OAAOA,CACT,CAEA,SAASE,EAAqBC,EAAQH,EAAG,CACvC,OAAOD,EAAeI,CAAM,EAAE,YAAYH,CAAC,CAC7C,CAEA,SAASI,EAAIC,EAAKC,EAASC,EAAWC,EAAO,CAC3C,IAAIR,EAAI,SAAS,cAAcK,CAAG,EAGlC,GAFIE,IAAaP,EAAE,UAAYO,GAC3BC,IAASR,EAAE,MAAM,QAAUQ,GAC3B,OAAOF,GAAW,SAAYN,EAAE,YAAY,SAAS,eAAeM,CAAO,CAAC,UACvEA,EAAW,QAASG,EAAI,EAAGA,EAAIH,EAAQ,OAAQ,EAAEG,EAAKT,EAAE,YAAYM,EAAQG,CAAC,CAAC,EACvF,OAAOT,CACT,CAEA,SAASU,EAAKL,EAAKC,EAASC,EAAWC,EAAO,CAC5C,IAAIR,EAAII,EAAIC,EAAKC,EAASC,EAAWC,CAAK,EAC1C,OAAAR,EAAE,aAAa,OAAQ,cAAc,EAC9BA,CACT,CAEA,IAAIW,EACA,SAAS,YAAeA,EAAQ,SAAShB,EAAMiB,EAAOC,EAAKC,EAAS,CACtE,IAAIC,EAAI,SAAS,YAAY,EAC7B,OAAAA,EAAE,OAAOD,GAAWnB,EAAMkB,CAAG,EAC7BE,EAAE,SAASpB,EAAMiB,CAAK,EACfG,CACT,EACOJ,EAAQ,SAAShB,EAAMiB,EAAOC,EAAK,CACxC,IAAIE,EAAI,SAAS,KAAK,gBAAgB,EACtC,GAAI,CAAEA,EAAE,kBAAkBpB,EAAK,UAAU,CAAG,MACnC,CAAE,OAAOoB,CAAE,CACpB,OAAAA,EAAE,SAAS,EAAI,EACfA,EAAE,QAAQ,YAAaF,CAAG,EAC1BE,EAAE,UAAU,YAAaH,CAAK,EACvBG,CACT,EAEA,SAASC,EAASb,EAAQc,EAAO,CAG/B,GAFIA,EAAM,UAAY,IAClBA,EAAQA,EAAM,YACdd,EAAO,SACP,OAAOA,EAAO,SAASc,CAAK,EAChC,EAEE,IADIA,EAAM,UAAY,KAAMA,EAAQA,EAAM,MACtCA,GAASd,EAAU,MAAO,SACvBc,EAAQA,EAAM,WACzB,CAEA,SAASC,EAAUC,EAAU,CAI3B,IAAIC,EAAMD,EAAS,eAAiBA,EAChCE,EACJ,GAAI,CACFA,EAAgBF,EAAS,aAC3B,MAAW,CACTE,EAAgBD,EAAI,MAAQ,IAC9B,CACA,KAAOC,GAAiBA,EAAc,YAAcA,EAAc,WAAW,eACzEA,EAAgBA,EAAc,WAAW,cAC7C,OAAOA,CACT,CAEA,SAASC,GAAS3B,EAAMF,EAAK,CAC3B,IAAIG,EAAUD,EAAK,UACdH,EAAUC,CAAG,EAAE,KAAKG,CAAO,IAAKD,EAAK,YAAcC,EAAU,IAAM,IAAMH,EAChF,CACA,SAAS8B,EAAYC,EAAGC,EAAG,CAEzB,QADIC,EAAKF,EAAE,MAAM,GAAG,EACXf,EAAI,EAAGA,EAAIiB,EAAG,OAAQjB,IACvBiB,EAAGjB,CAAC,GAAK,CAACjB,EAAUkC,EAAGjB,CAAC,CAAC,EAAE,KAAKgB,CAAC,IAAKA,GAAK,IAAMC,EAAGjB,CAAC,GAC7D,OAAOgB,CACT,CAEA,IAAIE,GAAc,SAAShC,EAAM,CAAEA,EAAK,OAAO,CAAG,EAC9CZ,EACA4C,GAAc,SAAShC,EAAM,CAAEA,EAAK,eAAiB,EAAGA,EAAK,aAAeA,EAAK,MAAM,MAAQ,EAC1FtB,IACLsD,GAAc,SAAShC,EAAM,CAAE,GAAI,CAAEA,EAAK,OAAO,CAAG,MAAY,CAAC,CAAE,GAEvE,SAASyB,GAAIQ,EAAI,CAAE,OAAOA,EAAG,QAAQ,QAAQ,aAAc,CAE3D,SAASC,GAAKD,EAAI,CAChB,OAAOT,GAASS,EAAG,QAAQ,OAAO,CACpC,CAEA,SAAST,GAASW,EAAS,CAEzB,OAAOA,EAAQ,YAAcA,EAAQ,YAAY,EAAIA,EAAQ,aAC/D,CAEA,SAASC,GAAIH,EAAI,CAAE,OAAOR,GAAIQ,CAAE,EAAE,WAAY,CAE9C,SAASI,GAAKC,EAAG,CACf,IAAIC,EAAO,MAAM,UAAU,MAAM,KAAK,UAAW,CAAC,EAClD,OAAO,UAAU,CAAC,OAAOD,EAAE,MAAM,KAAMC,CAAI,CAAC,CAC9C,CAEA,SAASC,GAAQC,EAAKC,EAAQC,EAAW,CAClCD,IAAUA,EAAS,CAAC,GACzB,QAASE,KAAQH,EACTA,EAAI,eAAeG,CAAI,IAAMD,IAAc,IAAS,CAACD,EAAO,eAAeE,CAAI,KACjFF,EAAOE,CAAI,EAAIH,EAAIG,CAAI,GAC7B,OAAOF,CACT,CAIA,SAASG,GAAYC,EAAQ5B,EAAK6B,EAASC,EAAYC,EAAY,CAC7D/B,GAAO,OACTA,EAAM4B,EAAO,OAAO,aAAa,EAC7B5B,GAAO,KAAMA,EAAM4B,EAAO,SAEhC,QAAShC,EAAIkC,GAAc,EAAGE,EAAID,GAAc,IAAK,CACnD,IAAIE,EAAUL,EAAO,QAAQ,IAAMhC,CAAC,EACpC,GAAIqC,EAAU,GAAKA,GAAWjC,EAC1B,OAAOgC,GAAKhC,EAAMJ,GACtBoC,GAAKC,EAAUrC,EACfoC,GAAKH,EAAWG,EAAIH,EACpBjC,EAAIqC,EAAU,CAChB,CACF,CAEA,IAAIC,GAAU,UAAW,CACvB,KAAK,GAAK,KACV,KAAK,EAAI,KACT,KAAK,KAAO,EACZ,KAAK,QAAUf,GAAK,KAAK,UAAW,IAAI,CAC1C,EACAe,GAAQ,UAAU,UAAY,SAAUC,EAAM,CAC5CA,EAAK,GAAK,EACNA,EAAK,MAAQ,CAAC,IAAI,KACpBA,EAAK,EAAE,EAEP,WAAWA,EAAK,QAASA,EAAK,KAAO,CAAC,IAAI,IAAI,CAElD,EACAD,GAAQ,UAAU,IAAM,SAAUE,EAAIhB,EAAG,CACvC,KAAK,EAAIA,EACT,IAAIiB,EAAO,CAAC,IAAI,KAAOD,GACnB,CAAC,KAAK,IAAMC,EAAO,KAAK,QAC1B,aAAa,KAAK,EAAE,EACpB,KAAK,GAAK,WAAW,KAAK,QAASD,CAAE,EACrC,KAAK,KAAOC,EAEhB,EAEA,SAASC,GAAQC,EAAOhD,EAAK,CAC3B,QAASK,EAAI,EAAGA,EAAI2C,EAAM,OAAQ,EAAE3C,EAChC,GAAI2C,EAAM3C,CAAC,GAAKL,EAAO,OAAOK,EAClC,MAAO,EACT,CAGA,IAAI4C,GAAc,GAIdC,GAAO,CAAC,SAAU,UAAU,CAAC,MAAO,iBAAiB,CAAC,EAGtDC,GAAiB,CAAC,OAAQ,EAAK,EAAGC,GAAY,CAAC,OAAQ,QAAQ,EAAGC,GAAW,CAAC,OAAQ,OAAO,EAIjG,SAASC,GAAWjB,EAAQkB,EAAMjB,EAAS,CACzC,QAASkB,EAAM,EAAGC,EAAM,IAAK,CAC3B,IAAIf,EAAUL,EAAO,QAAQ,IAAMmB,CAAG,EAClCd,GAAW,KAAMA,EAAUL,EAAO,QACtC,IAAIqB,EAAUhB,EAAUc,EACxB,GAAId,GAAWL,EAAO,QAAUoB,EAAMC,GAAWH,EAC7C,OAAOC,EAAM,KAAK,IAAIE,EAASH,EAAOE,CAAG,EAI7C,GAHAA,GAAOf,EAAUc,EACjBC,GAAOnB,EAAWmB,EAAMnB,EACxBkB,EAAMd,EAAU,EACZe,GAAOF,EAAQ,OAAOC,CAC5B,CACF,CAEA,IAAIG,GAAY,CAAC,EAAE,EACnB,SAASC,GAASnB,EAAG,CACnB,KAAOkB,GAAU,QAAUlB,GACvBkB,GAAU,KAAKE,GAAIF,EAAS,EAAI,GAAG,EACvC,OAAOA,GAAUlB,CAAC,CACpB,CAEA,SAASoB,GAAIC,EAAK,CAAE,OAAOA,EAAIA,EAAI,OAAO,CAAC,CAAE,CAE7C,SAASC,GAAIf,EAAOnB,EAAG,CAErB,QADImC,EAAM,CAAC,EACF3D,EAAI,EAAGA,EAAI2C,EAAM,OAAQ3C,IAAO2D,EAAI3D,CAAC,EAAIwB,EAAEmB,EAAM3C,CAAC,EAAGA,CAAC,EAC/D,OAAO2D,CACT,CAEA,SAASC,GAAajB,EAAOkB,EAAOC,EAAO,CAEzC,QADIX,EAAM,EAAGY,EAAWD,EAAMD,CAAK,EAC5BV,EAAMR,EAAM,QAAUmB,EAAMnB,EAAMQ,CAAG,CAAC,GAAKY,GAAYZ,IAC9DR,EAAM,OAAOQ,EAAK,EAAGU,CAAK,CAC5B,CAEA,SAASG,IAAU,CAAC,CAEpB,SAASC,GAAUC,EAAMC,EAAO,CAC9B,IAAIC,EACJ,OAAI,OAAO,OACTA,EAAO,OAAO,OAAOF,CAAI,GAEzBF,GAAQ,UAAYE,EACpBE,EAAO,IAAIJ,IAETG,GAASzC,GAAQyC,EAAOC,CAAI,EACzBA,CACT,CAEA,IAAIC,GAA6B,4GACjC,SAASC,GAAgBC,EAAI,CAC3B,MAAO,KAAK,KAAKA,CAAE,GAAKA,EAAK,SAC1BA,EAAG,YAAY,GAAKA,EAAG,YAAY,GAAKF,GAA2B,KAAKE,CAAE,EAC/E,CACA,SAASC,GAAWD,EAAIE,EAAQ,CAC9B,OAAKA,EACDA,EAAO,OAAO,QAAQ,KAAK,EAAI,IAAMH,GAAgBC,CAAE,EAAY,GAChEE,EAAO,KAAKF,CAAE,EAFCD,GAAgBC,CAAE,CAG1C,CAEA,SAASG,GAAQ/C,EAAK,CACpB,QAASS,KAAKT,EAAO,GAAIA,EAAI,eAAeS,CAAC,GAAKT,EAAIS,CAAC,EAAK,MAAO,GACnE,MAAO,EACT,CAOA,IAAIuC,GAAiB,64DACrB,SAASC,GAAgBL,EAAI,CAAE,OAAOA,EAAG,WAAW,CAAC,GAAK,KAAOI,GAAe,KAAKJ,CAAE,CAAE,CAGzF,SAASM,GAAmBC,EAAK3B,EAAK4B,EAAK,CACzC,MAAQA,EAAM,EAAI5B,EAAM,EAAIA,EAAM2B,EAAI,SAAWF,GAAgBE,EAAI,OAAO3B,CAAG,CAAC,GAAKA,GAAO4B,EAC5F,OAAO5B,CACT,CAKA,SAAS6B,GAAUC,EAAMC,EAAMC,EAAI,CAIjC,QADIJ,EAAMG,EAAOC,EAAK,GAAK,IAClB,CACP,GAAID,GAAQC,EAAM,OAAOD,EACzB,IAAIE,GAAQF,EAAOC,GAAM,EAAGE,EAAMN,EAAM,EAAI,KAAK,KAAKK,CAAI,EAAI,KAAK,MAAMA,CAAI,EAC7E,GAAIC,GAAOH,EAAQ,OAAOD,EAAKI,CAAG,EAAIH,EAAOC,EACzCF,EAAKI,CAAG,EAAKF,EAAKE,EACfH,EAAOG,EAAMN,CACtB,CACF,CAIA,SAASO,GAAoBC,EAAOL,EAAMC,EAAI3D,EAAG,CAC/C,GAAI,CAAC+D,EAAS,OAAO/D,EAAE0D,EAAMC,EAAI,MAAO,CAAC,EAEzC,QADIK,EAAQ,GACHxF,EAAI,EAAGA,EAAIuF,EAAM,OAAQ,EAAEvF,EAAG,CACrC,IAAIyF,EAAOF,EAAMvF,CAAC,GACdyF,EAAK,KAAON,GAAMM,EAAK,GAAKP,GAAQA,GAAQC,GAAMM,EAAK,IAAMP,KAC/D1D,EAAE,KAAK,IAAIiE,EAAK,KAAMP,CAAI,EAAG,KAAK,IAAIO,EAAK,GAAIN,CAAE,EAAGM,EAAK,OAAS,EAAI,MAAQ,MAAOzF,CAAC,EACtFwF,EAAQ,GAEZ,CACKA,GAAShE,EAAE0D,EAAMC,EAAI,KAAK,CACjC,CAEA,IAAIO,GAAY,KAChB,SAASC,GAAcJ,EAAOhB,EAAIqB,EAAQ,CACxC,IAAIJ,EACJE,GAAY,KACZ,QAAS1F,EAAI,EAAGA,EAAIuF,EAAM,OAAQ,EAAEvF,EAAG,CACrC,IAAI6F,EAAMN,EAAMvF,CAAC,EACjB,GAAI6F,EAAI,KAAOtB,GAAMsB,EAAI,GAAKtB,EAAM,OAAOvE,EACvC6F,EAAI,IAAMtB,IACRsB,EAAI,MAAQA,EAAI,IAAMD,GAAU,SAAYJ,EAAQxF,EACjD0F,GAAY1F,GAEjB6F,EAAI,MAAQtB,IACVsB,EAAI,MAAQA,EAAI,IAAMD,GAAU,SAAYJ,EAAQxF,EACjD0F,GAAY1F,EAEvB,CACA,OAAOwF,GAAwBE,EACjC,CAyBA,IAAII,GAAgB,UAAW,CAE7B,IAAIC,EAAW,2PAEXC,EAAc,6PAClB,SAASC,EAASC,EAAM,CACtB,OAAIA,GAAQ,IAAeH,EAAS,OAAOG,CAAI,EACtC,MAASA,GAAQA,GAAQ,KAAgB,IACzC,MAASA,GAAQA,GAAQ,KAAgBF,EAAY,OAAOE,EAAO,IAAK,EACxE,MAASA,GAAQA,GAAQ,KAAgB,IACzC,MAAUA,GAAQA,GAAQ,KAAiB,IAC3CA,GAAQ,KAAiB,IACpB,GAChB,CAEA,IAAIC,EAAS,4CACTC,EAAY,SAAUC,EAAW,QAASC,EAAe,SAAUC,EAAc,OAErF,SAASC,EAASC,EAAOvB,GAAMC,GAAI,CACjC,KAAK,MAAQsB,EACb,KAAK,KAAOvB,GAAM,KAAK,GAAKC,EAC9B,CAEA,OAAO,SAASL,EAAK4B,GAAW,CAC9B,IAAIC,GAAYD,IAAa,MAAQ,IAAM,IAE3C,GAAI5B,EAAI,QAAU,GAAK4B,IAAa,OAAS,CAACP,EAAO,KAAKrB,CAAG,EAAK,MAAO,GAEzE,QADI8B,GAAM9B,EAAI,OAAQ+B,GAAQ,CAAC,EACtB7G,GAAI,EAAGA,GAAI4G,GAAK,EAAE5G,GACvB6G,GAAM,KAAKZ,EAASnB,EAAI,WAAW9E,EAAC,CAAC,CAAC,EAM1C,QAAS8G,GAAM,EAAGC,GAAOJ,GAAWG,GAAMF,GAAK,EAAEE,GAAK,CACpD,IAAIE,GAAOH,GAAMC,EAAG,EAChBE,IAAQ,IAAOH,GAAMC,EAAG,EAAIC,GACzBA,GAAOC,EAChB,CAOA,QAASC,GAAM,EAAGpB,GAAMc,GAAWM,GAAML,GAAK,EAAEK,GAAK,CACnD,IAAIC,GAASL,GAAMI,EAAG,EAClBC,IAAU,KAAOrB,IAAO,IAAOgB,GAAMI,EAAG,EAAI,IACvCZ,EAAS,KAAKa,EAAM,IAAKrB,GAAMqB,GAAYA,IAAU,MAAOL,GAAMI,EAAG,EAAI,KACpF,CAKA,QAASE,GAAM,EAAGC,GAASP,GAAM,CAAC,EAAGM,GAAMP,GAAM,EAAG,EAAEO,GAAK,CACzD,IAAIE,GAASR,GAAMM,EAAG,EAClBE,IAAU,KAAOD,IAAU,KAAOP,GAAMM,GAAI,CAAC,GAAK,IAAON,GAAMM,EAAG,EAAI,IACjEE,IAAU,KAAOD,IAAUP,GAAMM,GAAI,CAAC,IACrCC,IAAU,KAAOA,IAAU,OAAQP,GAAMM,EAAG,EAAIC,IAC1DA,GAASC,EACX,CAMA,QAASC,GAAM,EAAGA,GAAMV,GAAK,EAAEU,GAAK,CAClC,IAAIC,GAASV,GAAMS,EAAG,EACtB,GAAIC,IAAU,IAAOV,GAAMS,EAAG,EAAI,YACzBC,IAAU,IAAK,CACtB,IAAInH,GAAO,OACX,IAAKA,GAAMkH,GAAM,EAAGlH,GAAMwG,IAAOC,GAAMzG,EAAG,GAAK,IAAK,EAAEA,GAAK,CAE3D,QADIoH,GAAWF,IAAOT,GAAMS,GAAI,CAAC,GAAK,KAASlH,GAAMwG,IAAOC,GAAMzG,EAAG,GAAK,IAAO,IAAM,IAC9EqH,GAAIH,GAAKG,GAAIrH,GAAK,EAAEqH,GAAKZ,GAAMY,EAAC,EAAID,GAC7CF,GAAMlH,GAAM,CACd,CACF,CAKA,QAASsH,GAAM,EAAGC,GAAQhB,GAAWe,GAAMd,GAAK,EAAEc,GAAK,CACrD,IAAIE,GAASf,GAAMa,EAAG,EAClBC,IAAS,KAAOC,IAAU,IAAOf,GAAMa,EAAG,EAAI,IACzCrB,EAAS,KAAKuB,EAAM,IAAKD,GAAQC,GAC5C,CAQA,QAASC,GAAM,EAAGA,GAAMjB,GAAK,EAAEiB,GAC7B,GAAIzB,EAAU,KAAKS,GAAMgB,EAAG,CAAC,EAAG,CAC9B,IAAIC,GAAS,OACb,IAAKA,GAAQD,GAAM,EAAGC,GAAQlB,IAAOR,EAAU,KAAKS,GAAMiB,EAAK,CAAC,EAAG,EAAEA,GAAO,CAI5E,QAHIC,IAAUF,GAAMhB,GAAMgB,GAAI,CAAC,EAAIlB,KAAc,IAC7CtH,IAASyI,GAAQlB,GAAMC,GAAMiB,EAAK,EAAInB,KAAc,IACpDqB,GAAYD,IAAU1I,GAAS0I,GAAS,IAAM,IAAOpB,GAChDsB,GAAMJ,GAAKI,GAAMH,GAAO,EAAEG,GAAOpB,GAAMoB,EAAG,EAAID,GACvDH,GAAMC,GAAQ,CAChB,CASF,QADIvC,GAAQ,CAAC,EAAG2C,GACPC,GAAM,EAAGA,GAAMvB,IACtB,GAAIN,EAAa,KAAKO,GAAMsB,EAAG,CAAC,EAAG,CACjC,IAAIhI,GAAQgI,GACZ,IAAK,EAAEA,GAAKA,GAAMvB,IAAON,EAAa,KAAKO,GAAMsB,EAAG,CAAC,EAAG,EAAEA,GAAK,CAC/D5C,GAAM,KAAK,IAAIiB,EAAS,EAAGrG,GAAOgI,EAAG,CAAC,CACxC,KAAO,CACL,IAAIhF,GAAMgF,GAAKC,GAAK7C,GAAM,OAAQ8C,GAAQ3B,IAAa,MAAQ,EAAI,EACnE,IAAK,EAAEyB,GAAKA,GAAMvB,IAAOC,GAAMsB,EAAG,GAAK,IAAK,EAAEA,GAAK,CACnD,QAASG,GAAMnF,GAAKmF,GAAMH,IACxB,GAAI5B,EAAY,KAAKM,GAAMyB,EAAG,CAAC,EAAG,CAC5BnF,GAAMmF,KAAO/C,GAAM,OAAO6C,GAAI,EAAG,IAAI5B,EAAS,EAAGrD,GAAKmF,EAAG,CAAC,EAAGF,IAAMC,IACvE,IAAIE,GAASD,GACb,IAAK,EAAEA,GAAKA,GAAMH,IAAO5B,EAAY,KAAKM,GAAMyB,EAAG,CAAC,EAAG,EAAEA,GAAK,CAC9D/C,GAAM,OAAO6C,GAAI,EAAG,IAAI5B,EAAS,EAAG+B,GAAQD,EAAG,CAAC,EAChDF,IAAMC,GACNlF,GAAMmF,EACR,KAAS,EAAEA,GAETnF,GAAMgF,IAAO5C,GAAM,OAAO6C,GAAI,EAAG,IAAI5B,EAAS,EAAGrD,GAAKgF,EAAG,CAAC,CAChE,CAEF,OAAIzB,IAAa,QACXnB,GAAM,CAAC,EAAE,OAAS,IAAM2C,GAAIpD,EAAI,MAAM,MAAM,KAC9CS,GAAM,CAAC,EAAE,KAAO2C,GAAE,CAAC,EAAE,OACrB3C,GAAM,QAAQ,IAAIiB,EAAS,EAAG,EAAG0B,GAAE,CAAC,EAAE,MAAM,CAAC,GAE3C1E,GAAI+B,EAAK,EAAE,OAAS,IAAM2C,GAAIpD,EAAI,MAAM,MAAM,KAChDtB,GAAI+B,EAAK,EAAE,IAAM2C,GAAE,CAAC,EAAE,OACtB3C,GAAM,KAAK,IAAIiB,EAAS,EAAGI,GAAMsB,GAAE,CAAC,EAAE,OAAQtB,EAAG,CAAC,IAI/CF,IAAa,MAAQnB,GAAM,QAAQ,EAAIA,EAChD,CACF,EAAG,EAKH,SAASiD,GAASC,EAAM/B,EAAW,CACjC,IAAInB,EAAQkD,EAAK,MACjB,OAAIlD,GAAS,OAAQA,EAAQkD,EAAK,MAAQ3C,GAAa2C,EAAK,KAAM/B,CAAS,GACpEnB,CACT,CAOA,IAAImD,GAAa,CAAC,EAEdC,EAAK,SAASC,EAAS5B,EAAMxF,EAAG,CAClC,GAAIoH,EAAQ,iBACVA,EAAQ,iBAAiB5B,EAAMxF,EAAG,EAAK,UAC9BoH,EAAQ,YACjBA,EAAQ,YAAY,KAAO5B,EAAMxF,CAAC,MAC7B,CACL,IAAIkC,EAAMkF,EAAQ,YAAcA,EAAQ,UAAY,CAAC,GACrDlF,EAAIsD,CAAI,GAAKtD,EAAIsD,CAAI,GAAK0B,IAAY,OAAOlH,CAAC,CAChD,CACF,EAEA,SAASqH,GAAYD,EAAS5B,EAAM,CAClC,OAAO4B,EAAQ,WAAaA,EAAQ,UAAU5B,CAAI,GAAK0B,EACzD,CAEA,SAASI,GAAIF,EAAS5B,EAAMxF,EAAG,CAC7B,GAAIoH,EAAQ,oBACVA,EAAQ,oBAAoB5B,EAAMxF,EAAG,EAAK,UACjCoH,EAAQ,YACjBA,EAAQ,YAAY,KAAO5B,EAAMxF,CAAC,MAC7B,CACL,IAAIkC,EAAMkF,EAAQ,UAAWnF,EAAMC,GAAOA,EAAIsD,CAAI,EAClD,GAAIvD,EAAK,CACP,IAAIsF,EAAQrG,GAAQe,EAAKjC,CAAC,EACtBuH,EAAQ,KACRrF,EAAIsD,CAAI,EAAIvD,EAAI,MAAM,EAAGsF,CAAK,EAAE,OAAOtF,EAAI,MAAMsF,EAAQ,CAAC,CAAC,EACjE,CACF,CACF,CAEA,SAASC,GAAOJ,EAAS5B,EAAsB,CAC7C,IAAIiC,EAAWJ,GAAYD,EAAS5B,CAAI,EACxC,GAAKiC,EAAS,OAEd,QADIxH,EAAO,MAAM,UAAU,MAAM,KAAK,UAAW,CAAC,EACzCzB,EAAI,EAAGA,EAAIiJ,EAAS,OAAQ,EAAEjJ,EAAKiJ,EAASjJ,CAAC,EAAE,MAAM,KAAMyB,CAAI,CAC1E,CAKA,SAASyH,GAAe/H,EAAI5B,EAAG4J,EAAU,CACvC,OAAI,OAAO5J,GAAK,WACZA,EAAI,CAAC,KAAMA,EAAG,eAAgB,UAAW,CAAE,KAAK,iBAAmB,EAAM,CAAC,GAC9EyJ,GAAO7H,EAAIgI,GAAY5J,EAAE,KAAM4B,EAAI5B,CAAC,EAC7B6J,GAAmB7J,CAAC,GAAKA,EAAE,gBACpC,CAEA,SAAS8J,GAAqBlI,EAAI,CAChC,IAAIsC,EAAMtC,EAAG,WAAaA,EAAG,UAAU,eACvC,GAAKsC,EAEL,QADI6F,EAAMnI,EAAG,MAAM,yBAA2BA,EAAG,MAAM,uBAAyB,CAAC,GACxEnB,EAAI,EAAGA,EAAIyD,EAAI,OAAQ,EAAEzD,EAAS0C,GAAQ4G,EAAK7F,EAAIzD,CAAC,CAAC,GAAK,IAC/DsJ,EAAI,KAAK7F,EAAIzD,CAAC,CAAC,CACrB,CAEA,SAASuJ,GAAWX,EAAS5B,EAAM,CACjC,OAAO6B,GAAYD,EAAS5B,CAAI,EAAE,OAAS,CAC7C,CAIA,SAASwC,GAAWC,EAAM,CACxBA,EAAK,UAAU,GAAK,SAASzC,EAAMxF,EAAG,CAACmH,EAAG,KAAM3B,EAAMxF,CAAC,CAAE,EACzDiI,EAAK,UAAU,IAAM,SAASzC,EAAMxF,EAAG,CAACsH,GAAI,KAAM9B,EAAMxF,CAAC,CAAE,CAC7D,CAKA,SAASkI,GAAiBnK,EAAG,CACvBA,EAAE,eAAkBA,EAAE,eAAe,EAClCA,EAAE,YAAc,EACzB,CACA,SAASoK,GAAkBpK,EAAG,CACxBA,EAAE,gBAAmBA,EAAE,gBAAgB,EACpCA,EAAE,aAAe,EAC1B,CACA,SAAS6J,GAAmB7J,EAAG,CAC7B,OAAOA,EAAE,kBAAoB,KAAOA,EAAE,iBAAmBA,EAAE,aAAe,EAC5E,CACA,SAASqK,GAAOrK,EAAG,CAACmK,GAAiBnK,CAAC,EAAGoK,GAAkBpK,CAAC,CAAE,CAE9D,SAASsK,GAAStK,EAAG,CAAC,OAAOA,EAAE,QAAUA,EAAE,UAAU,CACrD,SAASuK,GAASvK,EAAG,CACnB,IAAIyB,EAAIzB,EAAE,MACV,OAAIyB,GAAK,OACHzB,EAAE,OAAS,EAAKyB,EAAI,EACfzB,EAAE,OAAS,EAAKyB,EAAI,EACpBzB,EAAE,OAAS,IAAKyB,EAAI,IAE3BvC,GAAOc,EAAE,SAAWyB,GAAK,IAAKA,EAAI,GAC/BA,CACT,CAGA,IAAI+I,GAAc,UAAW,CAG3B,GAAInM,GAAMC,EAAa,EAAK,MAAO,GACnC,IAAImM,EAAMrK,EAAI,KAAK,EACnB,MAAO,cAAeqK,GAAO,aAAcA,CAC7C,EAAE,EAEEC,GACJ,SAASC,GAAiBC,EAAS,CACjC,GAAIF,IAAiB,KAAM,CACzB,IAAIG,EAAOzK,EAAI,OAAQ,QAAQ,EAC/BF,EAAqB0K,EAASxK,EAAI,OAAQ,CAACyK,EAAM,SAAS,eAAe,GAAG,CAAC,CAAC,CAAC,EAC3ED,EAAQ,WAAW,cAAgB,IACnCF,GAAgBG,EAAK,aAAe,GAAKA,EAAK,aAAe,GAAK,EAAExM,GAAMC,EAAa,GAC7F,CACA,IAAIqB,EAAO+K,GAAgBtK,EAAI,OAAQ,QAAQ,EAC7CA,EAAI,OAAQ,OAAU,KAAM,uDAAuD,EACrF,OAAAT,EAAK,aAAa,UAAW,EAAE,EACxBA,CACT,CAGA,IAAImL,GACJ,SAASC,GAAgBH,EAAS,CAChC,GAAIE,IAAgB,KAAQ,OAAOA,GACnC,IAAIE,EAAM9K,EAAqB0K,EAAS,SAAS,eAAe,UAAU,CAAC,EACvEK,EAAKtK,EAAMqK,EAAK,EAAG,CAAC,EAAE,sBAAsB,EAC5CE,EAAKvK,EAAMqK,EAAK,EAAG,CAAC,EAAE,sBAAsB,EAEhD,OADAjL,EAAe6K,CAAO,EAClB,CAACK,GAAMA,EAAG,MAAQA,EAAG,MAAgB,GAClCH,GAAgBI,EAAG,MAAQD,EAAG,MAAQ,CAC/C,CAIA,IAAIE,GAAiB;AAAA;AAAA,GAAQ,MAAM,IAAI,EAAE,QAAU,EAAI,SAAU1I,EAAQ,CAEvE,QADImB,EAAM,EAAGwH,EAAS,CAAC,EAAGC,EAAI5I,EAAO,OAC9BmB,GAAOyH,GAAG,CACf,IAAIC,EAAK7I,EAAO,QAAQ;AAAA,EAAMmB,CAAG,EAC7B0H,GAAM,KAAMA,EAAK7I,EAAO,QAC5B,IAAIyG,EAAOzG,EAAO,MAAMmB,EAAKnB,EAAO,OAAO6I,EAAK,CAAC,GAAK,KAAOA,EAAK,EAAIA,CAAE,EACpEC,EAAKrC,EAAK,QAAQ,IAAI,EACtBqC,GAAM,IACRH,EAAO,KAAKlC,EAAK,MAAM,EAAGqC,CAAE,CAAC,EAC7B3H,GAAO2H,EAAK,IAEZH,EAAO,KAAKlC,CAAI,EAChBtF,EAAM0H,EAAK,EAEf,CACA,OAAOF,CACT,EAAI,SAAU3I,EAAQ,CAAE,OAAOA,EAAO,MAAM,UAAU,CAAG,EAErD+I,GAAe,OAAO,aAAe,SAAUC,EAAI,CACrD,GAAI,CAAE,OAAOA,EAAG,gBAAkBA,EAAG,YAAa,MACzC,CAAE,MAAO,EAAM,CAC1B,EAAI,SAAUA,EAAI,CAChB,IAAI9K,EACJ,GAAI,CAACA,EAAQ8K,EAAG,cAAc,UAAU,YAAY,CAAE,MAC7C,CAAC,CACV,MAAI,CAAC9K,GAASA,EAAM,cAAc,GAAK8K,EAAa,GAC7C9K,EAAM,iBAAiB,aAAcA,CAAK,GAAK,CACxD,EAEI+K,GAAgB,UAAY,CAC9B,IAAI1L,EAAII,EAAI,KAAK,EACjB,MAAI,WAAYJ,EAAY,IAC5BA,EAAE,aAAa,SAAU,SAAS,EAC3B,OAAOA,EAAE,QAAU,WAC5B,EAAG,EAEC2L,GAAiB,KACrB,SAASC,GAAkBhB,EAAS,CAClC,GAAIe,IAAkB,KAAQ,OAAOA,GACrC,IAAIhM,EAAOO,EAAqB0K,EAASxK,EAAI,OAAQ,GAAG,CAAC,EACrDyL,EAASlM,EAAK,sBAAsB,EACpCmM,EAAYnL,EAAMhB,EAAM,EAAG,CAAC,EAAE,sBAAsB,EACxD,OAAOgM,GAAiB,KAAK,IAAIE,EAAO,KAAOC,EAAU,IAAI,EAAI,CACnE,CAGA,IAAIC,GAAQ,CAAC,EAAGC,GAAY,CAAC,EAK7B,SAASC,GAAWC,EAAMC,EAAM,CAC1B,UAAU,OAAS,IACnBA,EAAK,aAAe,MAAM,UAAU,MAAM,KAAK,UAAW,CAAC,GAC/DJ,GAAMG,CAAI,EAAIC,CAChB,CAEA,SAASC,GAAWC,EAAMC,EAAM,CAC9BN,GAAUK,CAAI,EAAIC,CACpB,CAIA,SAASC,GAAYD,EAAM,CACzB,GAAI,OAAOA,GAAQ,UAAYN,GAAU,eAAeM,CAAI,EAC1DA,EAAON,GAAUM,CAAI,UACZA,GAAQ,OAAOA,EAAK,MAAQ,UAAYN,GAAU,eAAeM,EAAK,IAAI,EAAG,CACtF,IAAIrG,EAAQ+F,GAAUM,EAAK,IAAI,EAC3B,OAAOrG,GAAS,WAAYA,EAAQ,CAAC,KAAMA,CAAK,GACpDqG,EAAO5H,GAAUuB,EAAOqG,CAAI,EAC5BA,EAAK,KAAOrG,EAAM,IACpB,KAAO,IAAI,OAAOqG,GAAQ,UAAY,0BAA0B,KAAKA,CAAI,EACvE,OAAOC,GAAY,iBAAiB,EAC/B,GAAI,OAAOD,GAAQ,UAAY,2BAA2B,KAAKA,CAAI,EACxE,OAAOC,GAAY,kBAAkB,EAEvC,OAAI,OAAOD,GAAQ,SAAmB,CAAC,KAAMA,CAAI,EACnCA,GAAQ,CAAC,KAAM,MAAM,CACrC,CAIA,SAASE,GAAQC,EAASH,EAAM,CAC9BA,EAAOC,GAAYD,CAAI,EACvB,IAAII,EAAWX,GAAMO,EAAK,IAAI,EAC9B,GAAI,CAACI,EAAY,OAAOF,GAAQC,EAAS,YAAY,EACrD,IAAIE,EAAUD,EAASD,EAASH,CAAI,EACpC,GAAIM,GAAe,eAAeN,EAAK,IAAI,EAAG,CAC5C,IAAIO,EAAOD,GAAeN,EAAK,IAAI,EACnC,QAAS/J,KAAQsK,EACVA,EAAK,eAAetK,CAAI,IACzBoK,EAAQ,eAAepK,CAAI,IAAKoK,EAAQ,IAAMpK,CAAI,EAAIoK,EAAQpK,CAAI,GACtEoK,EAAQpK,CAAI,EAAIsK,EAAKtK,CAAI,EAE7B,CAGA,GAFAoK,EAAQ,KAAOL,EAAK,KAChBA,EAAK,aAAcK,EAAQ,WAAaL,EAAK,YAC7CA,EAAK,UAAa,QAASQ,KAAUR,EAAK,UAC1CK,EAAQG,CAAM,EAAIR,EAAK,UAAUQ,CAAM,EAE3C,OAAOH,CACT,CAIA,IAAIC,GAAiB,CAAC,EACtB,SAASG,GAAWZ,EAAMa,EAAY,CACpC,IAAIH,EAAOD,GAAe,eAAeT,CAAI,EAAIS,GAAeT,CAAI,EAAKS,GAAeT,CAAI,EAAI,CAAC,EACjGhK,GAAQ6K,EAAYH,CAAI,CAC1B,CAEA,SAASI,GAAUd,EAAMe,EAAO,CAC9B,GAAIA,IAAU,GAAQ,OAAOA,EAC7B,GAAIf,EAAK,UAAa,OAAOA,EAAK,UAAUe,CAAK,EACjD,IAAIC,EAAS,CAAC,EACd,QAAStK,KAAKqK,EAAO,CACnB,IAAIE,EAAMF,EAAMrK,CAAC,EACbuK,aAAe,QAASA,EAAMA,EAAI,OAAO,CAAC,CAAC,GAC/CD,EAAOtK,CAAC,EAAIuK,CACd,CACA,OAAOD,CACT,CAIA,SAASE,GAAUlB,EAAMe,EAAO,CAE9B,QADII,EACGnB,EAAK,YACVmB,EAAOnB,EAAK,UAAUe,CAAK,EACvB,GAACI,GAAQA,EAAK,MAAQnB,KAC1Be,EAAQI,EAAK,MACbnB,EAAOmB,EAAK,KAEd,OAAOA,GAAQ,CAAC,KAAMnB,EAAM,MAAOe,CAAK,CAC1C,CAEA,SAASK,GAAWpB,EAAMqB,EAAIC,EAAI,CAChC,OAAOtB,EAAK,WAAaA,EAAK,WAAWqB,EAAIC,CAAE,EAAI,EACrD,CAOA,IAAIC,GAAe,SAASjL,EAAQC,EAASiL,EAAY,CACvD,KAAK,IAAM,KAAK,MAAQ,EACxB,KAAK,OAASlL,EACd,KAAK,QAAUC,GAAW,EAC1B,KAAK,cAAgB,KAAK,gBAAkB,EAC5C,KAAK,UAAY,EACjB,KAAK,WAAaiL,CACpB,EAEAD,GAAa,UAAU,IAAM,UAAY,CAAC,OAAO,KAAK,KAAO,KAAK,OAAO,MAAM,EAC/EA,GAAa,UAAU,IAAM,UAAY,CAAC,OAAO,KAAK,KAAO,KAAK,SAAS,EAC3EA,GAAa,UAAU,KAAO,UAAY,CAAC,OAAO,KAAK,OAAO,OAAO,KAAK,GAAG,GAAK,MAAS,EAC3FA,GAAa,UAAU,KAAO,UAAY,CACxC,GAAI,KAAK,IAAM,KAAK,OAAO,OACvB,OAAO,KAAK,OAAO,OAAO,KAAK,KAAK,CAC1C,EACAA,GAAa,UAAU,IAAM,SAAU7N,EAAO,CAC5C,IAAImF,EAAK,KAAK,OAAO,OAAO,KAAK,GAAG,EAChC4I,EAGJ,GAFI,OAAO/N,GAAS,SAAY+N,EAAK5I,GAAMnF,EACpC+N,EAAK5I,IAAOnF,EAAM,KAAOA,EAAM,KAAKmF,CAAE,EAAInF,EAAMmF,CAAE,GACrD4I,EAAK,QAAE,KAAK,IAAY5I,CAC9B,EACA0I,GAAa,UAAU,SAAW,SAAU7N,EAAO,CAEjD,QADIe,EAAQ,KAAK,IACV,KAAK,IAAIf,CAAK,GAAE,CACvB,OAAO,KAAK,IAAMe,CACpB,EACA8M,GAAa,UAAU,SAAW,UAAY,CAE5C,QADI9M,EAAQ,KAAK,IACV,aAAa,KAAK,KAAK,OAAO,OAAO,KAAK,GAAG,CAAC,GAAK,EAAE,KAAK,IACjE,OAAO,KAAK,IAAMA,CACpB,EACA8M,GAAa,UAAU,UAAY,UAAY,CAAC,KAAK,IAAM,KAAK,OAAO,MAAO,EAC9EA,GAAa,UAAU,OAAS,SAAU1I,EAAI,CAC5C,IAAIiB,EAAQ,KAAK,OAAO,QAAQjB,EAAI,KAAK,GAAG,EAC5C,GAAIiB,EAAQ,GAAK,YAAK,IAAMA,EAAc,EAC5C,EACAyH,GAAa,UAAU,OAAS,SAAU7K,EAAG,CAAC,KAAK,KAAOA,CAAE,EAC5D6K,GAAa,UAAU,OAAS,UAAY,CAC1C,OAAI,KAAK,cAAgB,KAAK,QAC5B,KAAK,gBAAkBlL,GAAY,KAAK,OAAQ,KAAK,MAAO,KAAK,QAAS,KAAK,cAAe,KAAK,eAAe,EAClH,KAAK,cAAgB,KAAK,OAErB,KAAK,iBAAmB,KAAK,UAAYA,GAAY,KAAK,OAAQ,KAAK,UAAW,KAAK,OAAO,EAAI,EAC3G,EACAkL,GAAa,UAAU,YAAc,UAAY,CAC/C,OAAOlL,GAAY,KAAK,OAAQ,KAAM,KAAK,OAAO,GAC/C,KAAK,UAAYA,GAAY,KAAK,OAAQ,KAAK,UAAW,KAAK,OAAO,EAAI,EAC/E,EACAkL,GAAa,UAAU,MAAQ,SAAUG,EAASC,EAASC,EAAiB,CAC1E,GAAI,OAAOF,GAAW,SAAU,CAC9B,IAAIG,EAAQ,SAAUzI,EAAK,CAAE,OAAOwI,EAAkBxI,EAAI,YAAY,EAAIA,CAAK,EAC3E0I,EAAS,KAAK,OAAO,OAAO,KAAK,IAAKJ,EAAQ,MAAM,EACxD,GAAIG,EAAMC,CAAM,GAAKD,EAAMH,CAAO,EAChC,OAAIC,IAAY,KAAS,KAAK,KAAOD,EAAQ,QACtC,EAEX,KAAO,CACL,IAAIhO,EAAQ,KAAK,OAAO,MAAM,KAAK,GAAG,EAAE,MAAMgO,CAAO,EACrD,OAAIhO,GAASA,EAAM,MAAQ,EAAY,MACnCA,GAASiO,IAAY,KAAS,KAAK,KAAOjO,EAAM,CAAC,EAAE,QAChDA,EACT,CACF,EACA6N,GAAa,UAAU,QAAU,UAAW,CAAC,OAAO,KAAK,OAAO,MAAM,KAAK,MAAO,KAAK,GAAG,CAAC,EAC3FA,GAAa,UAAU,eAAiB,SAAU7K,EAAGqL,EAAO,CAC1D,KAAK,WAAarL,EAClB,GAAI,CAAE,OAAOqL,EAAM,CAAE,QACrB,CAAU,KAAK,WAAarL,CAAG,CACjC,EACA6K,GAAa,UAAU,UAAY,SAAU7K,EAAG,CAC9C,IAAIsL,EAAS,KAAK,WAClB,OAAOA,GAAUA,EAAO,UAAUtL,CAAC,CACrC,EACA6K,GAAa,UAAU,UAAY,UAAY,CAC7C,IAAIS,EAAS,KAAK,WAClB,OAAOA,GAAUA,EAAO,UAAU,KAAK,GAAG,CAC5C,EAGA,SAASC,GAAQhN,EAAKyB,EAAG,CAEvB,GADAA,GAAKzB,EAAI,MACLyB,EAAI,GAAKA,GAAKzB,EAAI,KAAQ,MAAM,IAAI,MAAM,qBAAuByB,EAAIzB,EAAI,OAAS,mBAAmB,EAEzG,QADIiN,EAAQjN,EACL,CAACiN,EAAM,OACZ,QAAS5N,EAAI,GAAI,EAAEA,EAAG,CACpB,IAAIQ,EAAQoN,EAAM,SAAS5N,CAAC,EAAG6N,EAAKrN,EAAM,UAAU,EACpD,GAAI4B,EAAIyL,EAAI,CAAED,EAAQpN,EAAO,KAAM,CACnC4B,GAAKyL,CACP,CAEF,OAAOD,EAAM,MAAMxL,CAAC,CACtB,CAIA,SAAS0L,GAAWnN,EAAKR,EAAOC,EAAK,CACnC,IAAIuD,EAAM,CAAC,EAAGvB,EAAIjC,EAAM,KACxB,OAAAQ,EAAI,KAAKR,EAAM,KAAMC,EAAI,KAAO,EAAG,SAAUqI,EAAM,CACjD,IAAIsF,EAAOtF,EAAK,KACZrG,GAAKhC,EAAI,OAAQ2N,EAAOA,EAAK,MAAM,EAAG3N,EAAI,EAAE,GAC5CgC,GAAKjC,EAAM,OAAQ4N,EAAOA,EAAK,MAAM5N,EAAM,EAAE,GACjDwD,EAAI,KAAKoK,CAAI,EACb,EAAE3L,CACJ,CAAC,EACMuB,CACT,CAEA,SAASqK,GAASrN,EAAKuE,EAAMC,EAAI,CAC/B,IAAIxB,EAAM,CAAC,EACX,OAAAhD,EAAI,KAAKuE,EAAMC,EAAI,SAAUsD,EAAM,CAAE9E,EAAI,KAAK8E,EAAK,IAAI,CAAG,CAAC,EACpD9E,CACT,CAIA,SAASsK,GAAiBxF,EAAMyF,EAAQ,CACtC,IAAIC,EAAOD,EAASzF,EAAK,OACzB,GAAI0F,EAAQ,QAAS/L,EAAIqG,EAAMrG,EAAGA,EAAIA,EAAE,OAAUA,EAAE,QAAU+L,CAChE,CAIA,SAASC,EAAO3F,EAAM,CACpB,GAAIA,EAAK,QAAU,KAAQ,OAAO,KAElC,QADI5C,EAAM4C,EAAK,OAAQ4F,EAAK3L,GAAQmD,EAAI,MAAO4C,CAAI,EAC1CmF,EAAQ/H,EAAI,OAAQ+H,EAAO/H,EAAM+H,EAAOA,EAAQA,EAAM,OAC7D,QAAS5N,EAAI,EACP4N,EAAM,SAAS5N,CAAC,GAAK6F,EADV,EAAE7F,EAEjBqO,GAAMT,EAAM,SAAS5N,CAAC,EAAE,UAAU,EAGtC,OAAOqO,EAAKxI,EAAI,KAClB,CAIA,SAASyI,GAAaV,EAAOW,EAAG,CAC9B,IAAInM,EAAIwL,EAAM,MACdY,EAAO,EAAG,CACR,QAAS1H,EAAM,EAAGA,EAAM8G,EAAM,SAAS,OAAQ,EAAE9G,EAAK,CACpD,IAAItG,EAAQoN,EAAM,SAAS9G,CAAG,EAAGvC,EAAK/D,EAAM,OAC5C,GAAI+N,EAAIhK,EAAI,CAAEqJ,EAAQpN,EAAO,SAASgO,CAAM,CAC5CD,GAAKhK,EACLnC,GAAK5B,EAAM,UAAU,CACvB,CACA,OAAO4B,CACT,OAAS,CAACwL,EAAM,OAEhB,QADI5N,EAAI,EACDA,EAAI4N,EAAM,MAAM,OAAQ,EAAE5N,EAAG,CAClC,IAAIyI,EAAOmF,EAAM,MAAM5N,CAAC,EAAGyO,EAAKhG,EAAK,OACrC,GAAI8F,EAAIE,EAAM,MACdF,GAAKE,CACP,CACA,OAAOrM,EAAIpC,CACb,CAEA,SAAS0O,GAAO/N,EAAKiK,EAAG,CAAC,OAAOA,GAAKjK,EAAI,OAASiK,EAAIjK,EAAI,MAAQA,EAAI,IAAI,CAE1E,SAASgO,GAAc3C,EAAShM,EAAG,CACjC,OAAO,OAAOgM,EAAQ,oBAAoBhM,EAAIgM,EAAQ,eAAe,CAAC,CACxE,CAGA,SAAS4C,GAAInG,EAAMlE,EAAIqB,EAAQ,CAG7B,GAFKA,IAAW,SAASA,EAAS,MAE9B,EAAE,gBAAgBgJ,IAAQ,OAAO,IAAIA,GAAInG,EAAMlE,EAAIqB,CAAM,EAC7D,KAAK,KAAO6C,EACZ,KAAK,GAAKlE,EACV,KAAK,OAASqB,CAChB,CAIA,SAASiJ,GAAI9N,EAAGC,EAAG,CAAE,OAAOD,EAAE,KAAOC,EAAE,MAAQD,EAAE,GAAKC,EAAE,EAAG,CAE3D,SAAS8N,GAAe/N,EAAGC,EAAG,CAAE,OAAOD,EAAE,QAAUC,EAAE,QAAU6N,GAAI9N,EAAGC,CAAC,GAAK,CAAE,CAE9E,SAAS+N,GAAQC,EAAG,CAAC,OAAOJ,GAAII,EAAE,KAAMA,EAAE,EAAE,CAAC,CAC7C,SAASC,GAAOlO,EAAGC,EAAG,CAAE,OAAO6N,GAAI9N,EAAGC,CAAC,EAAI,EAAIA,EAAID,CAAE,CACrD,SAASmO,GAAOnO,EAAGC,EAAG,CAAE,OAAO6N,GAAI9N,EAAGC,CAAC,EAAI,EAAID,EAAIC,CAAE,CAIrD,SAASmO,GAASxO,EAAKyB,EAAG,CAAC,OAAO,KAAK,IAAIzB,EAAI,MAAO,KAAK,IAAIyB,EAAGzB,EAAI,MAAQA,EAAI,KAAO,CAAC,CAAC,CAAC,CAC5F,SAASyO,GAAQzO,EAAKwC,EAAK,CACzB,GAAIA,EAAI,KAAOxC,EAAI,MAAS,OAAOiO,GAAIjO,EAAI,MAAO,CAAC,EACnD,IAAI0O,EAAO1O,EAAI,MAAQA,EAAI,KAAO,EAClC,OAAIwC,EAAI,KAAOkM,EAAeT,GAAIS,EAAM1B,GAAQhN,EAAK0O,CAAI,EAAE,KAAK,MAAM,EAC/DC,GAAUnM,EAAKwK,GAAQhN,EAAKwC,EAAI,IAAI,EAAE,KAAK,MAAM,CAC1D,CACA,SAASmM,GAAUnM,EAAKoM,EAAS,CAC/B,IAAIhL,EAAKpB,EAAI,GACb,OAAIoB,GAAM,MAAQA,EAAKgL,EAAkBX,GAAIzL,EAAI,KAAMoM,CAAO,EACrDhL,EAAK,EAAYqK,GAAIzL,EAAI,KAAM,CAAC,EAC3BA,CAChB,CACA,SAASqM,GAAa7O,EAAKgC,EAAO,CAEhC,QADIgB,EAAM,CAAC,EACF3D,EAAI,EAAGA,EAAI2C,EAAM,OAAQ3C,IAAO2D,EAAI3D,CAAC,EAAIoP,GAAQzO,EAAKgC,EAAM3C,CAAC,CAAC,EACvE,OAAO2D,CACT,CAEA,IAAI8L,GAAe,SAAShD,EAAOiD,EAAW,CAC5C,KAAK,MAAQjD,EACb,KAAK,UAAYiD,CACnB,EAEIC,GAAU,SAAShP,EAAK8L,EAAOhE,EAAMiH,EAAW,CAClD,KAAK,MAAQjD,EACb,KAAK,IAAM9L,EACX,KAAK,KAAO8H,EACZ,KAAK,aAAeiH,GAAa,EACjC,KAAK,WAAa,KAClB,KAAK,aAAe,CACtB,EAEAC,GAAQ,UAAU,UAAY,SAAUvN,EAAG,CACzC,IAAIqG,EAAO,KAAK,IAAI,QAAQ,KAAK,KAAOrG,CAAC,EACzC,OAAIqG,GAAQ,MAAQrG,EAAI,KAAK,eAAgB,KAAK,aAAeA,GAC1DqG,CACT,EAEAkH,GAAQ,UAAU,UAAY,SAAUvN,EAAG,CACzC,GAAI,CAAC,KAAK,WAAc,OAAO,KAC/B,KAAO,KAAK,WAAW,KAAK,YAAY,GAAKA,GACzC,KAAK,cAAgB,EACzB,IAAI4E,EAAO,KAAK,WAAW,KAAK,aAAe,CAAC,EAChD,MAAO,CAAC,KAAMA,GAAQA,EAAK,QAAQ,kBAAmB,EAAE,EAChD,KAAM,KAAK,WAAW,KAAK,YAAY,EAAI5E,CAAC,CACtD,EAEAuN,GAAQ,UAAU,SAAW,UAAY,CACvC,KAAK,OACD,KAAK,aAAe,GAAK,KAAK,cACpC,EAEAA,GAAQ,UAAY,SAAUhP,EAAKiP,EAAOnH,EAAM,CAC9C,OAAImH,aAAiBH,GACV,IAAIE,GAAQhP,EAAK6L,GAAU7L,EAAI,KAAMiP,EAAM,KAAK,EAAGnH,EAAMmH,EAAM,SAAS,EAExE,IAAID,GAAQhP,EAAK6L,GAAU7L,EAAI,KAAMiP,CAAK,EAAGnH,CAAI,CAC9D,EAEAkH,GAAQ,UAAU,KAAO,SAAUE,EAAM,CACvC,IAAIpD,EAAQoD,IAAS,GAAQrD,GAAU,KAAK,IAAI,KAAM,KAAK,KAAK,EAAI,KAAK,MACzE,OAAO,KAAK,aAAe,EAAI,IAAIiD,GAAahD,EAAO,KAAK,YAAY,EAAIA,CAC9E,EAOA,SAASqD,GAAc3O,EAAIsH,EAAMsH,EAASC,EAAY,CAGpD,IAAIC,EAAK,CAAC9O,EAAG,MAAM,OAAO,EAAG+O,EAAc,CAAC,EAE5CC,GAAQhP,EAAIsH,EAAK,KAAMtH,EAAG,IAAI,KAAM4O,EAAS,SAAU3P,EAAKL,GAAO,CAAE,OAAOkQ,EAAG,KAAK7P,EAAKL,EAAK,CAAG,EACzFmQ,EAAaF,CAAU,EAkC/B,QAjCIvD,EAAQsD,EAAQ,MAGhBK,EAAO,SAAWC,EAAI,CACxBN,EAAQ,WAAaE,EACrB,IAAIK,GAAUnP,EAAG,MAAM,SAASkP,CAAC,EAAGrQ,GAAI,EAAGoI,GAAK,EAChD2H,EAAQ,MAAQ,GAChBI,GAAQhP,EAAIsH,EAAK,KAAM6H,GAAQ,KAAMP,EAAS,SAAU3P,GAAKL,GAAO,CAGlE,QAFII,GAAQH,GAELoI,GAAKhI,IAAK,CACf,IAAImQ,GAAQN,EAAGjQ,EAAC,EACZuQ,GAAQnQ,IACR6P,EAAG,OAAOjQ,GAAG,EAAGI,GAAK6P,EAAGjQ,GAAE,CAAC,EAAGuQ,EAAK,EACvCvQ,IAAK,EACLoI,GAAK,KAAK,IAAIhI,GAAKmQ,EAAK,CAC1B,CACA,GAAKxQ,GACL,GAAIuQ,GAAQ,OACVL,EAAG,OAAO9P,GAAOH,GAAIG,GAAOC,GAAK,WAAaL,EAAK,EACnDC,GAAIG,GAAQ,MAEZ,MAAOA,GAAQH,GAAGG,IAAS,EAAG,CAC5B,IAAI0F,GAAMoK,EAAG9P,GAAM,CAAC,EACpB8P,EAAG9P,GAAM,CAAC,GAAK0F,GAAMA,GAAM,IAAM,IAAM,WAAa9F,EACtD,CAEJ,EAAGmQ,CAAW,EACdH,EAAQ,MAAQtD,EAChBsD,EAAQ,WAAa,KACrBA,EAAQ,aAAe,CACzB,EAESM,EAAI,EAAGA,EAAIlP,EAAG,MAAM,SAAS,OAAQ,EAAEkP,EAAGD,EAAMC,CAAE,EAE3D,MAAO,CAAC,OAAQJ,EAAI,QAASC,EAAY,SAAWA,EAAY,UAAYA,EAAc,IAAI,CAChG,CAEA,SAASM,GAAcrP,EAAIsH,EAAMgI,EAAgB,CAC/C,GAAI,CAAChI,EAAK,QAAUA,EAAK,OAAO,CAAC,GAAKtH,EAAG,MAAM,QAAS,CACtD,IAAI4O,EAAUW,GAAiBvP,EAAIiN,EAAO3F,CAAI,CAAC,EAC3CkI,EAAalI,EAAK,KAAK,OAAStH,EAAG,QAAQ,oBAAsBqL,GAAUrL,EAAG,IAAI,KAAM4O,EAAQ,KAAK,EACrGpF,EAASmF,GAAc3O,EAAIsH,EAAMsH,CAAO,EACxCY,IAAcZ,EAAQ,MAAQY,GAClClI,EAAK,WAAasH,EAAQ,KAAK,CAACY,CAAU,EAC1ClI,EAAK,OAASkC,EAAO,OACjBA,EAAO,QAAWlC,EAAK,aAAekC,EAAO,QACxClC,EAAK,eAAgBA,EAAK,aAAe,MAC9CgI,IAAmBtP,EAAG,IAAI,oBAC1BA,EAAG,IAAI,aAAe,KAAK,IAAIA,EAAG,IAAI,aAAc,EAAEA,EAAG,IAAI,iBAAiB,EACpF,CACA,OAAOsH,EAAK,MACd,CAEA,SAASiI,GAAiBvP,EAAIiB,EAAGwO,EAAS,CACxC,IAAIjQ,EAAMQ,EAAG,IAAK0P,EAAU1P,EAAG,QAC/B,GAAI,CAACR,EAAI,KAAK,WAAc,OAAO,IAAIgP,GAAQhP,EAAK,GAAMyB,CAAC,EAC3D,IAAIjC,EAAQ2Q,GAAc3P,EAAIiB,EAAGwO,CAAO,EACpChB,EAAQzP,EAAQQ,EAAI,OAASgN,GAAQhN,EAAKR,EAAQ,CAAC,EAAE,WACrD4P,EAAUH,EAAQD,GAAQ,UAAUhP,EAAKiP,EAAOzP,CAAK,EAAI,IAAIwP,GAAQhP,EAAKmM,GAAWnM,EAAI,IAAI,EAAGR,CAAK,EAEzG,OAAAQ,EAAI,KAAKR,EAAOiC,EAAG,SAAUqG,EAAM,CACjCsI,GAAY5P,EAAIsH,EAAK,KAAMsH,CAAO,EAClC,IAAI5M,EAAM4M,EAAQ,KAClBtH,EAAK,WAAatF,GAAOf,EAAI,GAAKe,EAAM,GAAK,GAAKA,GAAO0N,EAAQ,UAAY1N,EAAM0N,EAAQ,OAASd,EAAQ,KAAK,EAAI,KACrHA,EAAQ,SAAS,CACnB,CAAC,EACGa,IAAWjQ,EAAI,aAAeoP,EAAQ,MACnCA,CACT,CAKA,SAASgB,GAAY5P,EAAI4M,EAAMgC,EAASiB,EAAS,CAC/C,IAAItF,EAAOvK,EAAG,IAAI,KACd8P,EAAS,IAAIhE,GAAac,EAAM5M,EAAG,QAAQ,QAAS4O,CAAO,EAG/D,IAFAkB,EAAO,MAAQA,EAAO,IAAMD,GAAW,EACnCjD,GAAQ,IAAMmD,GAAcxF,EAAMqE,EAAQ,KAAK,EAC5C,CAACkB,EAAO,IAAI,GACjBE,GAAUzF,EAAMuF,EAAQlB,EAAQ,KAAK,EACrCkB,EAAO,MAAQA,EAAO,GAE1B,CAEA,SAASC,GAAcxF,EAAMe,EAAO,CAClC,GAAIf,EAAK,UAAa,OAAOA,EAAK,UAAUe,CAAK,EACjD,GAAKf,EAAK,UACV,KAAI+B,EAAQb,GAAUlB,EAAMe,CAAK,EACjC,GAAIgB,EAAM,KAAK,UAAa,OAAOA,EAAM,KAAK,UAAUA,EAAM,KAAK,EACrE,CAEA,SAAS0D,GAAUzF,EAAMuF,EAAQxE,EAAOgB,EAAO,CAC7C,QAASzN,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACvByN,IAASA,EAAM,CAAC,EAAIb,GAAUlB,EAAMe,CAAK,EAAE,MAC/C,IAAI1M,EAAQ2L,EAAK,MAAMuF,EAAQxE,CAAK,EACpC,GAAIwE,EAAO,IAAMA,EAAO,MAAS,OAAOlR,CAC1C,CACA,MAAM,IAAI,MAAM,QAAU2L,EAAK,KAAO,4BAA4B,CACpE,CAEA,IAAI0F,GAAQ,SAASH,EAAQjK,EAAMyF,EAAO,CACxC,KAAK,MAAQwE,EAAO,MAAO,KAAK,IAAMA,EAAO,IAC7C,KAAK,OAASA,EAAO,QAAQ,EAC7B,KAAK,KAAOjK,GAAQ,KACpB,KAAK,MAAQyF,CACf,EAGA,SAAS4E,GAAUlQ,EAAIgC,EAAKyN,EAASU,EAAS,CAC5C,IAAI3Q,EAAMQ,EAAG,IAAKuK,EAAO/K,EAAI,KAAMZ,EACnCoD,EAAMiM,GAAQzO,EAAKwC,CAAG,EACtB,IAAIsF,EAAOkF,GAAQhN,EAAKwC,EAAI,IAAI,EAAG4M,EAAUW,GAAiBvP,EAAIgC,EAAI,KAAMyN,CAAO,EAC/EK,EAAS,IAAIhE,GAAaxE,EAAK,KAAMtH,EAAG,QAAQ,QAAS4O,CAAO,EAAGwB,GAEvE,IADID,IAAWC,GAAS,CAAC,IACjBD,GAAWL,EAAO,IAAM9N,EAAI,KAAO,CAAC8N,EAAO,IAAI,GACrDA,EAAO,MAAQA,EAAO,IACtBlR,EAAQoR,GAAUzF,EAAMuF,EAAQlB,EAAQ,KAAK,EACzCuB,GAAWC,GAAO,KAAK,IAAIH,GAAMH,EAAQlR,EAAOyM,GAAU7L,EAAI,KAAMoP,EAAQ,KAAK,CAAC,CAAC,EAEzF,OAAOuB,EAAUC,GAAS,IAAIH,GAAMH,EAAQlR,EAAOgQ,EAAQ,KAAK,CAClE,CAEA,SAASyB,GAAmBxK,EAAMyK,EAAQ,CACxC,GAAIzK,EAAQ,OAAS,CACnB,IAAI0K,EAAY1K,EAAK,MAAM,mCAAmC,EAC9D,GAAI,CAAC0K,EAAa,MAClB1K,EAAOA,EAAK,MAAM,EAAG0K,EAAU,KAAK,EAAI1K,EAAK,MAAM0K,EAAU,MAAQA,EAAU,CAAC,EAAE,MAAM,EACxF,IAAI5P,EAAO4P,EAAU,CAAC,EAAI,UAAY,YAClCD,EAAO3P,CAAI,GAAK,KAChB2P,EAAO3P,CAAI,EAAI4P,EAAU,CAAC,EACnB,IAAI,OAAO,YAAcA,EAAU,CAAC,EAAI,WAAW,EAAG,KAAKD,EAAO3P,CAAI,CAAC,IAC9E2P,EAAO3P,CAAI,GAAK,IAAM4P,EAAU,CAAC,EACvC,CACA,OAAO1K,CACT,CAGA,SAASmJ,GAAQhP,EAAI4M,EAAMrC,EAAMqE,EAASvO,EAAG0O,EAAaF,EAAY,CACpE,IAAI2B,EAAejG,EAAK,aACpBiG,GAAgB,OAAQA,EAAexQ,EAAG,QAAQ,cACtD,IAAIyQ,EAAW,EAAGC,EAAW,KACzBZ,GAAS,IAAIhE,GAAac,EAAM5M,EAAG,QAAQ,QAAS4O,CAAO,EAAGhQ,GAC9D0N,GAAQtM,EAAG,QAAQ,cAAgB,CAAC,IAAI,EAE5C,IADI4M,GAAQ,IAAMyD,GAAmBN,GAAcxF,EAAMqE,EAAQ,KAAK,EAAGG,CAAW,EAC7E,CAACe,GAAO,IAAI,GAAG,CASpB,GARIA,GAAO,IAAM9P,EAAG,QAAQ,oBAC1BwQ,EAAe,GACX3B,GAAce,GAAY5P,EAAI4M,EAAMgC,EAASkB,GAAO,GAAG,EAC3DA,GAAO,IAAMlD,EAAK,OAClBhO,GAAQ,MAERA,GAAQyR,GAAmBL,GAAUzF,EAAMuF,GAAQlB,EAAQ,MAAOtC,EAAK,EAAGyC,CAAW,EAEnFzC,GAAO,CACT,IAAIqE,GAAQrE,GAAM,CAAC,EAAE,KACjBqE,KAAS/R,GAAQ,MAAQA,GAAQ+R,GAAQ,IAAM/R,GAAQ+R,IAC7D,CACA,GAAI,CAACH,GAAgBE,GAAY9R,GAAO,CACtC,KAAO6R,EAAWX,GAAO,OACvBW,EAAW,KAAK,IAAIX,GAAO,MAAOW,EAAW,GAAI,EACjDpQ,EAAEoQ,EAAUC,CAAQ,EAEtBA,EAAW9R,EACb,CACAkR,GAAO,MAAQA,GAAO,GACxB,CACA,KAAOW,EAAWX,GAAO,KAAK,CAI5B,IAAI9N,GAAM,KAAK,IAAI8N,GAAO,IAAKW,EAAW,GAAI,EAC9CpQ,EAAE2B,GAAK0O,CAAQ,EACfD,EAAWzO,EACb,CACF,CAOA,SAAS2N,GAAc3P,EAAIiB,EAAGwO,EAAS,CAGrC,QAFImB,EAAWC,EAASrR,EAAMQ,EAAG,IAC7B8Q,EAAMrB,EAAU,GAAKxO,GAAKjB,EAAG,IAAI,KAAK,UAAY,IAAO,KACpD+Q,EAAS9P,EAAG8P,EAASD,EAAK,EAAEC,EAAQ,CAC3C,GAAIA,GAAUvR,EAAI,MAAS,OAAOA,EAAI,MACtC,IAAI8H,EAAOkF,GAAQhN,EAAKuR,EAAS,CAAC,EAAG7S,EAAQoJ,EAAK,WAClD,GAAIpJ,IAAU,CAACuR,GAAWsB,GAAU7S,aAAiBoQ,GAAepQ,EAAM,UAAY,IAAMsB,EAAI,cAC5F,OAAOuR,EACX,IAAIC,GAAWpQ,GAAY0G,EAAK,KAAM,KAAMtH,EAAG,QAAQ,OAAO,GAC1D6Q,GAAW,MAAQD,EAAYI,MACjCH,EAAUE,EAAS,EACnBH,EAAYI,GAEhB,CACA,OAAOH,CACT,CAEA,SAASI,GAAgBzR,EAAKyB,EAAG,CAE/B,GADAzB,EAAI,aAAe,KAAK,IAAIA,EAAI,aAAcyB,CAAC,EAC3C,EAAAzB,EAAI,kBAAoByB,EAAI,IAEhC,SADIjC,EAAQQ,EAAI,MACP8H,EAAOrG,EAAI,EAAGqG,EAAOtI,EAAOsI,IAAQ,CAC3C,IAAImH,EAAQjC,GAAQhN,EAAK8H,CAAI,EAAE,WAI/B,GAAImH,IAAU,EAAEA,aAAiBH,KAAiBhH,EAAOmH,EAAM,UAAYxN,GAAI,CAC7EjC,EAAQsI,EAAO,EACf,KACF,CACF,CACA9H,EAAI,kBAAoB,KAAK,IAAIA,EAAI,kBAAmBR,CAAK,EAC/D,CAGA,IAAIkS,GAAmB,GAAOC,GAAoB,GAElD,SAASC,IAAmB,CAC1BF,GAAmB,EACrB,CAEA,SAASG,IAAoB,CAC3BF,GAAoB,EACtB,CAIA,SAASG,GAAWC,EAAQxN,EAAMC,EAAI,CACpC,KAAK,OAASuN,EACd,KAAK,KAAOxN,EAAM,KAAK,GAAKC,CAC9B,CAGA,SAASwN,GAAiBC,EAAOF,EAAQ,CACvC,GAAIE,EAAS,QAAS5S,EAAI,EAAGA,EAAI4S,EAAM,OAAQ,EAAE5S,EAAG,CAClD,IAAI6S,EAAOD,EAAM5S,CAAC,EAClB,GAAI6S,EAAK,QAAUH,EAAU,OAAOG,CACtC,CACF,CAIA,SAASC,GAAiBF,EAAOC,EAAM,CAErC,QADIvS,EACKN,EAAI,EAAGA,EAAI4S,EAAM,OAAQ,EAAE5S,EAC5B4S,EAAM5S,CAAC,GAAK6S,IAASvS,IAAMA,EAAI,CAAC,IAAI,KAAKsS,EAAM5S,CAAC,CAAC,EACzD,OAAOM,CACT,CAGA,SAASyS,GAActK,EAAMoK,EAAMG,EAAI,CACrC,IAAIC,EAAWD,GAAM,OAAO,UAAYA,EAAG,cAAgBA,EAAG,YAAc,IAAI,UAC5EC,GAAYxK,EAAK,aAAewK,EAAS,IAAIxK,EAAK,WAAW,EAC/DA,EAAK,YAAY,KAAKoK,CAAI,GAE1BpK,EAAK,YAAcA,EAAK,YAAcA,EAAK,YAAY,OAAO,CAACoK,CAAI,CAAC,EAAI,CAACA,CAAI,EACzEI,GAAYA,EAAS,IAAIxK,EAAK,WAAW,GAE/CoK,EAAK,OAAO,WAAWpK,CAAI,CAC7B,CAMA,SAASyK,GAAkBC,EAAKC,EAASC,EAAU,CACjD,IAAIC,EACJ,GAAIH,EAAO,QAASnT,EAAI,EAAGA,EAAImT,EAAI,OAAQ,EAAEnT,EAAG,CAC9C,IAAI6S,EAAOM,EAAInT,CAAC,EAAG0S,EAASG,EAAK,OAC7BU,EAAeV,EAAK,MAAQ,OAASH,EAAO,cAAgBG,EAAK,MAAQO,EAAUP,EAAK,KAAOO,GACnG,GAAIG,GAAgBV,EAAK,MAAQO,GAAWV,EAAO,MAAQ,aAAe,CAACW,GAAY,CAACR,EAAK,OAAO,YAAa,CAC/G,IAAIW,EAAYX,EAAK,IAAM,OAASH,EAAO,eAAiBG,EAAK,IAAMO,EAAUP,EAAK,GAAKO,IACzFE,IAAOA,EAAK,CAAC,IAAI,KAAK,IAAIb,GAAWC,EAAQG,EAAK,KAAMW,EAAY,KAAOX,EAAK,EAAE,CAAC,CACvF,CACF,CACA,OAAOS,CACT,CACA,SAASG,GAAiBN,EAAKO,EAAOL,EAAU,CAC9C,IAAIC,EACJ,GAAIH,EAAO,QAASnT,EAAI,EAAGA,EAAImT,EAAI,OAAQ,EAAEnT,EAAG,CAC9C,IAAI6S,EAAOM,EAAInT,CAAC,EAAG0S,EAASG,EAAK,OAC7BW,EAAYX,EAAK,IAAM,OAASH,EAAO,eAAiBG,EAAK,IAAMa,EAAQb,EAAK,GAAKa,GACzF,GAAIF,GAAaX,EAAK,MAAQa,GAAShB,EAAO,MAAQ,aAAe,CAACW,GAAYR,EAAK,OAAO,YAAa,CACzG,IAAIU,EAAeV,EAAK,MAAQ,OAASH,EAAO,cAAgBG,EAAK,MAAQa,EAAQb,EAAK,KAAOa,IAC/FJ,IAAOA,EAAK,CAAC,IAAI,KAAK,IAAIb,GAAWC,EAAQa,EAAe,KAAOV,EAAK,KAAOa,EAC3Cb,EAAK,IAAM,KAAO,KAAOA,EAAK,GAAKa,CAAK,CAAC,CACjF,CACF,CACA,OAAOJ,CACT,CAQA,SAASK,GAAuBhT,EAAKiT,EAAQ,CAC3C,GAAIA,EAAO,KAAQ,OAAO,KAC1B,IAAIC,EAAWnF,GAAO/N,EAAKiT,EAAO,KAAK,IAAI,GAAKjG,GAAQhN,EAAKiT,EAAO,KAAK,IAAI,EAAE,YAC3EE,EAAUpF,GAAO/N,EAAKiT,EAAO,GAAG,IAAI,GAAKjG,GAAQhN,EAAKiT,EAAO,GAAG,IAAI,EAAE,YAC1E,GAAI,CAACC,GAAY,CAACC,EAAW,OAAO,KAEpC,IAAIV,EAAUQ,EAAO,KAAK,GAAIF,EAAQE,EAAO,GAAG,GAAIP,EAAWxE,GAAI+E,EAAO,KAAMA,EAAO,EAAE,GAAK,EAE1FG,EAAQb,GAAkBW,EAAUT,EAASC,CAAQ,EACrDhE,EAAOoE,GAAiBK,EAASJ,EAAOL,CAAQ,EAGhDW,EAAWJ,EAAO,KAAK,QAAU,EAAGK,GAASzQ,GAAIoQ,EAAO,IAAI,EAAE,QAAUI,EAAWZ,EAAU,GACjG,GAAIW,EAEF,QAAS/T,GAAI,EAAGA,GAAI+T,EAAM,OAAQ,EAAE/T,GAAG,CACrC,IAAI6S,GAAOkB,EAAM/T,EAAC,EAClB,GAAI6S,GAAK,IAAM,KAAM,CACnB,IAAIrN,GAAQmN,GAAiBtD,EAAMwD,GAAK,MAAM,EACzCrN,GACIwO,IAAYnB,GAAK,GAAKrN,GAAM,IAAM,KAAO,KAAOA,GAAM,GAAKyO,IADtDpB,GAAK,GAAKO,CAE1B,CACF,CAEF,GAAI/D,EAEF,QAASvI,GAAM,EAAGA,GAAMuI,EAAK,OAAQ,EAAEvI,GAAK,CAC1C,IAAIoN,GAAS7E,EAAKvI,EAAG,EAErB,GADIoN,GAAO,IAAM,OAAQA,GAAO,IAAMD,IAClCC,GAAO,MAAQ,KAAM,CACvB,IAAIC,GAAUxB,GAAiBoB,EAAOG,GAAO,MAAM,EAC9CC,KACHD,GAAO,KAAOD,GACVD,IAAaD,IAAUA,EAAQ,CAAC,IAAI,KAAKG,EAAM,EAEvD,MACEA,GAAO,MAAQD,GACXD,IAAaD,IAAUA,EAAQ,CAAC,IAAI,KAAKG,EAAM,CAEvD,CAGEH,IAASA,EAAQK,GAAgBL,CAAK,GACtC1E,GAAQA,GAAQ0E,IAAS1E,EAAO+E,GAAgB/E,CAAI,GAExD,IAAIgF,GAAa,CAACN,CAAK,EACvB,GAAI,CAACC,EAAU,CAEb,IAAIM,GAAMV,EAAO,KAAK,OAAS,EAAGW,GAClC,GAAID,GAAM,GAAKP,EACX,QAAS9M,GAAM,EAAGA,GAAM8M,EAAM,OAAQ,EAAE9M,GAClC8M,EAAM9M,EAAG,EAAE,IAAM,OAClBsN,KAAeA,GAAa,CAAC,IAAI,KAAK,IAAI9B,GAAWsB,EAAM9M,EAAG,EAAE,OAAQ,KAAM,IAAI,CAAC,EAC5F,QAASE,GAAM,EAAGA,GAAMmN,GAAK,EAAEnN,GAC3BkN,GAAW,KAAKE,EAAU,EAC9BF,GAAW,KAAKhF,CAAI,CACtB,CACA,OAAOgF,EACT,CAIA,SAASD,GAAgBxB,EAAO,CAC9B,QAAS5S,EAAI,EAAGA,EAAI4S,EAAM,OAAQ,EAAE5S,EAAG,CACrC,IAAI6S,EAAOD,EAAM5S,CAAC,EACd6S,EAAK,MAAQ,MAAQA,EAAK,MAAQA,EAAK,IAAMA,EAAK,OAAO,iBAAmB,IAC5ED,EAAM,OAAO5S,IAAK,CAAC,CACzB,CACA,OAAK4S,EAAM,OACJA,EADqB,IAE9B,CAGA,SAAS4B,GAAqB7T,EAAKuE,EAAMC,EAAI,CAC3C,IAAIsP,EAAU,KAQd,GAPA9T,EAAI,KAAKuE,EAAK,KAAMC,EAAG,KAAO,EAAG,SAAUsD,GAAM,CAC/C,GAAIA,GAAK,YAAe,QAASzI,GAAI,EAAGA,GAAIyI,GAAK,YAAY,OAAQ,EAAEzI,GAAG,CACxE,IAAI0U,GAAOjM,GAAK,YAAYzI,EAAC,EAAE,OAC3B0U,GAAK,WAAa,CAACD,GAAW/R,GAAQ+R,EAASC,EAAI,GAAK,MACvDD,IAAYA,EAAU,CAAC,IAAI,KAAKC,EAAI,CAC3C,CACF,CAAC,EACG,CAACD,EAAW,OAAO,KAEvB,QADIE,EAAQ,CAAC,CAAC,KAAMzP,EAAM,GAAIC,CAAE,CAAC,EACxBnF,EAAI,EAAGA,EAAIyU,EAAQ,OAAQ,EAAEzU,EAEpC,QADI4U,EAAKH,EAAQzU,CAAC,EAAGkI,EAAI0M,EAAG,KAAK,CAAC,EACzBnN,EAAI,EAAGA,EAAIkN,EAAM,OAAQ,EAAElN,EAAG,CACrC,IAAIoN,EAAIF,EAAMlN,CAAC,EACf,GAAI,EAAAoH,GAAIgG,EAAE,GAAI3M,EAAE,IAAI,EAAI,GAAK2G,GAAIgG,EAAE,KAAM3M,EAAE,EAAE,EAAI,GACjD,KAAI4M,GAAW,CAACrN,EAAG,CAAC,EAAGsN,GAAQlG,GAAIgG,EAAE,KAAM3M,EAAE,IAAI,EAAG8M,GAAMnG,GAAIgG,EAAE,GAAI3M,EAAE,EAAE,GACpE6M,GAAQ,GAAK,CAACH,EAAG,eAAiB,CAACG,KACnCD,GAAS,KAAK,CAAC,KAAMD,EAAE,KAAM,GAAI3M,EAAE,IAAI,CAAC,GACxC8M,GAAM,GAAK,CAACJ,EAAG,gBAAkB,CAACI,KAClCF,GAAS,KAAK,CAAC,KAAM5M,EAAE,GAAI,GAAI2M,EAAE,EAAE,CAAC,EACxCF,EAAM,OAAO,MAAMA,EAAOG,EAAQ,EAClCrN,GAAKqN,GAAS,OAAS,EACzB,CAEF,OAAOH,CACT,CAGA,SAASM,GAAkBxM,EAAM,CAC/B,IAAImK,EAAQnK,EAAK,YACjB,GAAKmK,EACL,SAAS5S,EAAI,EAAGA,EAAI4S,EAAM,OAAQ,EAAE5S,EAChC4S,EAAM5S,CAAC,EAAE,OAAO,WAAWyI,CAAI,EACnCA,EAAK,YAAc,KACrB,CACA,SAASyM,GAAkBzM,EAAMmK,EAAO,CACtC,GAAKA,EACL,SAAS5S,EAAI,EAAGA,EAAI4S,EAAM,OAAQ,EAAE5S,EAChC4S,EAAM5S,CAAC,EAAE,OAAO,WAAWyI,CAAI,EACnCA,EAAK,YAAcmK,EACrB,CAIA,SAASuC,GAAUzC,EAAQ,CAAE,OAAOA,EAAO,cAAgB,GAAK,CAAE,CAClE,SAAS0C,GAAW1C,EAAQ,CAAE,OAAOA,EAAO,eAAiB,EAAI,CAAE,CAKnE,SAAS2C,GAAwBtU,EAAGC,EAAG,CACrC,IAAIsU,EAAUvU,EAAE,MAAM,OAASC,EAAE,MAAM,OACvC,GAAIsU,GAAW,EAAK,OAAOA,EAC3B,IAAIC,EAAOxU,EAAE,KAAK,EAAGyU,EAAOxU,EAAE,KAAK,EAC/ByU,EAAU5G,GAAI0G,EAAK,KAAMC,EAAK,IAAI,GAAKL,GAAUpU,CAAC,EAAIoU,GAAUnU,CAAC,EACrE,GAAIyU,EAAW,MAAO,CAACA,EACvB,IAAIC,EAAQ7G,GAAI0G,EAAK,GAAIC,EAAK,EAAE,GAAKJ,GAAWrU,CAAC,EAAIqU,GAAWpU,CAAC,EACjE,OAAI0U,GACG1U,EAAE,GAAKD,EAAE,EAClB,CAIA,SAAS4U,GAAoBlN,EAAMtI,EAAO,CACxC,IAAIyV,EAAMtD,IAAqB7J,EAAK,YAAajD,EACjD,GAAIoQ,EAAO,QAASC,EAAM,OAAS7V,EAAI,EAAGA,EAAI4V,EAAI,OAAQ,EAAE5V,EAC1D6V,EAAKD,EAAI5V,CAAC,EACN6V,EAAG,OAAO,YAAc1V,EAAQ0V,EAAG,KAAOA,EAAG,KAAO,OACnD,CAACrQ,GAAS6P,GAAwB7P,EAAOqQ,EAAG,MAAM,EAAI,KACvDrQ,EAAQqQ,EAAG,QAEjB,OAAOrQ,CACT,CACA,SAASsQ,GAAqBrN,EAAM,CAAE,OAAOkN,GAAoBlN,EAAM,EAAI,CAAE,CAC7E,SAASsN,GAAmBtN,EAAM,CAAE,OAAOkN,GAAoBlN,EAAM,EAAK,CAAE,CAE5E,SAASuN,GAAoBvN,EAAMlE,EAAI,CACrC,IAAIqR,EAAMtD,IAAqB7J,EAAK,YAAajD,EACjD,GAAIoQ,EAAO,QAAS5V,EAAI,EAAGA,EAAI4V,EAAI,OAAQ,EAAE5V,EAAG,CAC9C,IAAI6V,EAAKD,EAAI5V,CAAC,EACV6V,EAAG,OAAO,YAAcA,EAAG,MAAQ,MAAQA,EAAG,KAAOtR,KAAQsR,EAAG,IAAM,MAAQA,EAAG,GAAKtR,KACrF,CAACiB,GAAS6P,GAAwB7P,EAAOqQ,EAAG,MAAM,EAAI,KAAMrQ,EAAQqQ,EAAG,OAC9E,CACA,OAAOrQ,CACT,CAKA,SAASyQ,GAA0BtV,EAAKyN,EAAQlJ,EAAMC,EAAIuN,EAAQ,CAChE,IAAIjK,EAAOkF,GAAQhN,EAAKyN,CAAM,EAC1BwH,EAAMtD,IAAqB7J,EAAK,YACpC,GAAImN,EAAO,QAAS5V,EAAI,EAAGA,EAAI4V,EAAI,OAAQ,EAAE5V,EAAG,CAC9C,IAAI6V,EAAKD,EAAI5V,CAAC,EACd,GAAK6V,EAAG,OAAO,UACf,KAAIrQ,EAAQqQ,EAAG,OAAO,KAAK,CAAC,EACxBJ,GAAU5G,GAAIrJ,EAAM,KAAMN,CAAI,GAAKiQ,GAAUU,EAAG,MAAM,EAAIV,GAAUzC,CAAM,EAC1EgD,GAAQ7G,GAAIrJ,EAAM,GAAIL,CAAE,GAAKiQ,GAAWS,EAAG,MAAM,EAAIT,GAAW1C,CAAM,EAC1E,GAAI,EAAA+C,IAAW,GAAKC,IAAS,GAAKD,IAAW,GAAKC,IAAS,KACvDD,IAAW,IAAMI,EAAG,OAAO,gBAAkBnD,EAAO,cAAgB7D,GAAIrJ,EAAM,GAAIN,CAAI,GAAK,EAAI2J,GAAIrJ,EAAM,GAAIN,CAAI,EAAI,IACrHuQ,IAAW,IAAMI,EAAG,OAAO,gBAAkBnD,EAAO,cAAgB7D,GAAIrJ,EAAM,KAAML,CAAE,GAAK,EAAI0J,GAAIrJ,EAAM,KAAML,CAAE,EAAI,IACrH,MAAO,GACb,CACF,CAMA,SAAS+Q,GAAWzN,EAAM,CAExB,QADI0N,EACGA,EAASL,GAAqBrN,CAAI,GACrCA,EAAO0N,EAAO,KAAK,GAAI,EAAI,EAAE,KACjC,OAAO1N,CACT,CAEA,SAAS2N,GAAc3N,EAAM,CAE3B,QADI0N,EACGA,EAASJ,GAAmBtN,CAAI,GACnCA,EAAO0N,EAAO,KAAK,EAAG,EAAI,EAAE,KAChC,OAAO1N,CACT,CAIA,SAAS4N,GAAoB5N,EAAM,CAEjC,QADI0N,EAAQG,EACLH,EAASJ,GAAmBtN,CAAI,GACrCA,EAAO0N,EAAO,KAAK,EAAG,EAAI,EAAE,MAC1BG,IAAUA,EAAQ,CAAC,IAAI,KAAK7N,CAAI,EAEpC,OAAO6N,CACT,CAIA,SAASC,GAAa5V,EAAK6V,EAAO,CAChC,IAAI/N,EAAOkF,GAAQhN,EAAK6V,CAAK,EAAGC,EAAMP,GAAWzN,CAAI,EACrD,OAAIA,GAAQgO,EAAcD,EACnBpI,EAAOqI,CAAG,CACnB,CAIA,SAASC,GAAgB/V,EAAK6V,EAAO,CACnC,GAAIA,EAAQ7V,EAAI,SAAS,EAAK,OAAO6V,EACrC,IAAI/N,EAAOkF,GAAQhN,EAAK6V,CAAK,EAAGL,EAChC,GAAI,CAACQ,GAAahW,EAAK8H,CAAI,EAAK,OAAO+N,EACvC,KAAOL,EAASJ,GAAmBtN,CAAI,GACnCA,EAAO0N,EAAO,KAAK,EAAG,EAAI,EAAE,KAChC,OAAO/H,EAAO3F,CAAI,EAAI,CACxB,CAKA,SAASkO,GAAahW,EAAK8H,EAAM,CAC/B,IAAImN,EAAMtD,IAAqB7J,EAAK,YACpC,GAAImN,GAAO,QAASC,EAAM,OAAS7V,EAAI,EAAGA,EAAI4V,EAAI,OAAQ,EAAE5V,EAE1D,GADA6V,EAAKD,EAAI5V,CAAC,EACN,EAAC6V,EAAG,OAAO,UACf,IAAIA,EAAG,MAAQ,KAAQ,MAAO,GAC9B,GAAI,CAAAA,EAAG,OAAO,YACVA,EAAG,MAAQ,GAAKA,EAAG,OAAO,eAAiBe,GAAkBjW,EAAK8H,EAAMoN,CAAE,EAC1E,MAAO,IAEf,CACA,SAASe,GAAkBjW,EAAK8H,EAAMoK,EAAM,CAC1C,GAAIA,EAAK,IAAM,KAAM,CACnB,IAAIzS,EAAMyS,EAAK,OAAO,KAAK,EAAG,EAAI,EAClC,OAAO+D,GAAkBjW,EAAKP,EAAI,KAAMuS,GAAiBvS,EAAI,KAAK,YAAayS,EAAK,MAAM,CAAC,CAC7F,CACA,GAAIA,EAAK,OAAO,gBAAkBA,EAAK,IAAMpK,EAAK,KAAK,OACnD,MAAO,GACX,QAASoN,EAAM,OAAS7V,EAAI,EAAGA,EAAIyI,EAAK,YAAY,OAAQ,EAAEzI,EAE5D,GADA6V,EAAKpN,EAAK,YAAYzI,CAAC,EACnB6V,EAAG,OAAO,WAAa,CAACA,EAAG,OAAO,YAAcA,EAAG,MAAQhD,EAAK,KAC/DgD,EAAG,IAAM,MAAQA,EAAG,IAAMhD,EAAK,QAC/BgD,EAAG,OAAO,eAAiBhD,EAAK,OAAO,iBACxC+D,GAAkBjW,EAAK8H,EAAMoN,CAAE,EAAK,MAAO,EAEnD,CAGA,SAASgB,GAAaC,EAAS,CAC7BA,EAAUZ,GAAWY,CAAO,EAG5B,QADIvI,EAAI,EAAGX,EAAQkJ,EAAQ,OAClB9W,EAAI,EAAGA,EAAI4N,EAAM,MAAM,OAAQ,EAAE5N,EAAG,CAC3C,IAAIyI,EAAOmF,EAAM,MAAM5N,CAAC,EACxB,GAAIyI,GAAQqO,EAAW,MAChBvI,GAAK9F,EAAK,MACnB,CACA,QAASoM,EAAIjH,EAAM,OAAQiH,EAAGjH,EAAQiH,EAAGA,EAAIjH,EAAM,OACjD,QAAS9G,EAAM,EAAGA,EAAM+N,EAAE,SAAS,OAAQ,EAAE/N,EAAK,CAChD,IAAIjB,EAAMgP,EAAE,SAAS/N,CAAG,EACxB,GAAIjB,GAAO+H,EAAS,MACbW,GAAK1I,EAAI,MAClB,CAEF,OAAO0I,CACT,CAKA,SAASwI,GAAWtO,EAAM,CACxB,GAAIA,EAAK,QAAU,EAAK,MAAO,GAE/B,QADI7B,EAAM6B,EAAK,KAAK,OAAQ0N,EAAQtQ,EAAM4C,EACnC0N,EAASL,GAAqBjQ,CAAG,GAAG,CACzC,IAAIL,EAAQ2Q,EAAO,KAAK,EAAG,EAAI,EAC/BtQ,EAAML,EAAM,KAAK,KACjBoB,GAAOpB,EAAM,KAAK,GAAKA,EAAM,GAAG,EAClC,CAEA,IADAK,EAAM4C,EACC0N,EAASJ,GAAmBlQ,CAAG,GAAG,CACvC,IAAIsO,EAAUgC,EAAO,KAAK,EAAG,EAAI,EACjCvP,GAAOf,EAAI,KAAK,OAASsO,EAAQ,KAAK,GACtCtO,EAAMsO,EAAQ,GAAG,KACjBvN,GAAOf,EAAI,KAAK,OAASsO,EAAQ,GAAG,EACtC,CACA,OAAOvN,CACT,CAGA,SAASoQ,GAAY7V,EAAI,CACvB,IAAI,EAAIA,EAAG,QAASR,EAAMQ,EAAG,IAC7B,EAAE,QAAUwM,GAAQhN,EAAKA,EAAI,KAAK,EAClC,EAAE,cAAgBoW,GAAW,EAAE,OAAO,EACtC,EAAE,eAAiB,GACnBpW,EAAI,KAAK,SAAU8H,EAAM,CACvB,IAAI7B,EAAMmQ,GAAWtO,CAAI,EACrB7B,EAAM,EAAE,gBACV,EAAE,cAAgBA,EAClB,EAAE,QAAU6B,EAEhB,CAAC,CACH,CAMA,IAAIwO,GAAO,SAASlJ,EAAMmJ,EAAaC,EAAgB,CACrD,KAAK,KAAOpJ,EACZmH,GAAkB,KAAMgC,CAAW,EACnC,KAAK,OAASC,EAAiBA,EAAe,IAAI,EAAI,CACxD,EAEAF,GAAK,UAAU,OAAS,UAAY,CAAE,OAAO7I,EAAO,IAAI,CAAE,EAC1D5E,GAAWyN,EAAI,EAKf,SAASG,GAAW3O,EAAMsF,EAAMmJ,EAAaC,EAAgB,CAC3D1O,EAAK,KAAOsF,EACRtF,EAAK,aAAcA,EAAK,WAAa,MACrCA,EAAK,SAAUA,EAAK,OAAS,MAC7BA,EAAK,OAAS,OAAQA,EAAK,MAAQ,MACvCwM,GAAkBxM,CAAI,EACtByM,GAAkBzM,EAAMyO,CAAW,EACnC,IAAIG,EAAYF,EAAiBA,EAAe1O,CAAI,EAAI,EACpD4O,GAAa5O,EAAK,QAAUwF,GAAiBxF,EAAM4O,CAAS,CAClE,CAGA,SAASC,GAAY7O,EAAM,CACzBA,EAAK,OAAS,KACdwM,GAAkBxM,CAAI,CACxB,CAKA,IAAI8O,GAAoB,CAAC,EAAGC,GAA4B,CAAC,EACzD,SAASC,GAAoB1X,EAAOiM,EAAS,CAC3C,GAAI,CAACjM,GAAS,QAAQ,KAAKA,CAAK,EAAK,OAAO,KAC5C,IAAI2X,EAAQ1L,EAAQ,aAAewL,GAA4BD,GAC/D,OAAOG,EAAM3X,CAAK,IACf2X,EAAM3X,CAAK,EAAIA,EAAM,QAAQ,OAAQ,OAAO,EACjD,CAOA,SAAS4X,GAAiBxW,EAAIyW,EAAU,CAItC,IAAI/X,EAAUI,EAAK,OAAQ,KAAM,KAAMnC,EAAS,sBAAwB,IAAI,EACxE+Z,EAAU,CAAC,IAAK5X,EAAK,MAAO,CAACJ,CAAO,EAAG,iBAAiB,EAAG,QAASA,EACzD,IAAK,EAAG,IAAK,EAAG,GAAIsB,EACpB,cAAe,GACf,YAAaA,EAAG,UAAU,cAAc,CAAC,EACxDyW,EAAS,QAAU,CAAC,EAGpB,QAAS5X,EAAI,EAAGA,IAAM4X,EAAS,KAAOA,EAAS,KAAK,OAAS,GAAI5X,IAAK,CACpE,IAAIyI,EAAOzI,EAAI4X,EAAS,KAAK5X,EAAI,CAAC,EAAI4X,EAAS,KAAMrS,EAAS,OAC9DsS,EAAQ,IAAM,EACdA,EAAQ,SAAWC,GAGfxN,GAAgBnJ,EAAG,QAAQ,OAAO,IAAMoE,EAAQiD,GAASC,EAAMtH,EAAG,IAAI,SAAS,KAC/E0W,EAAQ,SAAWE,GAAkBF,EAAQ,SAAUtS,CAAK,GAChEsS,EAAQ,IAAM,CAAC,EACf,IAAIG,EAAsBJ,GAAYzW,EAAG,QAAQ,kBAAoBiN,EAAO3F,CAAI,EAChFwP,GAAkBxP,EAAMoP,EAASrH,GAAcrP,EAAIsH,EAAMuP,CAAmB,CAAC,EACzEvP,EAAK,eACHA,EAAK,aAAa,UAClBoP,EAAQ,QAAU/W,EAAY2H,EAAK,aAAa,QAASoP,EAAQ,SAAW,EAAE,GAC9EpP,EAAK,aAAa,YAClBoP,EAAQ,UAAY/W,EAAY2H,EAAK,aAAa,UAAWoP,EAAQ,WAAa,EAAE,IAItFA,EAAQ,IAAI,QAAU,GACtBA,EAAQ,IAAI,KAAK,EAAG,EAAGA,EAAQ,QAAQ,YAAY3N,GAAiB/I,EAAG,QAAQ,OAAO,CAAC,CAAC,EAGxFnB,GAAK,GACP4X,EAAS,QAAQ,IAAMC,EAAQ,IAC/BD,EAAS,QAAQ,MAAQ,CAAC,KAE/BA,EAAS,QAAQ,OAASA,EAAS,QAAQ,KAAO,CAAC,IAAI,KAAKC,EAAQ,GAAG,GAChED,EAAS,QAAQ,SAAWA,EAAS,QAAQ,OAAS,CAAC,IAAI,KAAK,CAAC,CAAC,EAExE,CAGA,GAAI9Z,EAAQ,CACV,IAAIuR,EAAOwI,EAAQ,QAAQ,WACvB,aAAa,KAAKxI,EAAK,SAAS,GAAMA,EAAK,eAAiBA,EAAK,cAAc,SAAS,KACxFwI,EAAQ,QAAQ,UAAY,mBAClC,CAEA,OAAA7O,GAAO7H,EAAI,aAAcA,EAAIyW,EAAS,KAAMC,EAAQ,GAAG,EACnDA,EAAQ,IAAI,YACZA,EAAQ,UAAY/W,EAAY+W,EAAQ,IAAI,UAAWA,EAAQ,WAAa,EAAE,GAE3EA,CACT,CAEA,SAASK,GAA8B3T,EAAI,CACzC,IAAI4T,EAAQxY,EAAI,OAAQ,SAAU,gBAAgB,EAClD,OAAAwY,EAAM,MAAQ,MAAQ5T,EAAG,WAAW,CAAC,EAAE,SAAS,EAAE,EAClD4T,EAAM,aAAa,aAAcA,EAAM,KAAK,EACrCA,CACT,CAIA,SAASL,GAAWD,EAAS9J,EAAMhO,EAAOqY,EAAYC,EAAUC,EAAKC,EAAY,CAC/E,GAAKxK,EACL,KAAIyK,EAAcX,EAAQ,YAAcY,GAAY1K,EAAM8J,EAAQ,aAAa,EAAI9J,EAC/E2K,EAAUb,EAAQ,GAAG,MAAM,aAAcc,EAAW,GACpD9Y,GACJ,GAAI,CAAC6Y,EAAQ,KAAK3K,CAAI,EACpB8J,EAAQ,KAAO9J,EAAK,OACpBlO,GAAU,SAAS,eAAe2Y,CAAW,EAC7CX,EAAQ,IAAI,KAAKA,EAAQ,IAAKA,EAAQ,IAAM9J,EAAK,OAAQlO,EAAO,EAC5DjC,GAAMC,EAAa,IAAK8a,EAAW,IACvCd,EAAQ,KAAO9J,EAAK,WACf,CACLlO,GAAU,SAAS,uBAAuB,EAE1C,QADIsD,GAAM,IACG,CACXuV,EAAQ,UAAYvV,GACpB,IAAI+E,GAAIwQ,EAAQ,KAAK3K,CAAI,EACrB1K,GAAU6E,GAAIA,GAAE,MAAQ/E,GAAM4K,EAAK,OAAS5K,GAChD,GAAIE,GAAS,CACX,IAAIkH,GAAM,SAAS,eAAeiO,EAAY,MAAMrV,GAAKA,GAAME,EAAO,CAAC,EACnEzF,GAAMC,EAAa,EAAKgC,GAAQ,YAAYF,EAAI,OAAQ,CAAC4K,EAAG,CAAC,CAAC,EAC3D1K,GAAQ,YAAY0K,EAAG,EAC9BsN,EAAQ,IAAI,KAAKA,EAAQ,IAAKA,EAAQ,IAAMxU,GAASkH,EAAG,EACxDsN,EAAQ,KAAOxU,GACfwU,EAAQ,KAAOxU,EACjB,CACA,GAAI,CAAC6E,GAAK,MACV/E,IAAOE,GAAU,EACjB,IAAIuV,GAAS,OACb,GAAI1Q,GAAE,CAAC,GAAK,IAAM,CAChB,IAAIjG,GAAU4V,EAAQ,GAAG,QAAQ,QAASgB,GAAW5W,GAAU4V,EAAQ,IAAM5V,GAC7E2W,GAAQ/Y,GAAQ,YAAYF,EAAI,OAAQ4D,GAASsV,EAAQ,EAAG,QAAQ,CAAC,EACrED,GAAM,aAAa,OAAQ,cAAc,EACzCA,GAAM,aAAa,UAAW,GAAI,EAClCf,EAAQ,KAAOgB,EACjB,MAAW3Q,GAAE,CAAC,GAAK,MAAQA,GAAE,CAAC,GAAK;AAAA,GACjC0Q,GAAQ/Y,GAAQ,YAAYF,EAAI,OAAQuI,GAAE,CAAC,GAAK,KAAO,SAAW,SAAU,gBAAgB,CAAC,EAC7F0Q,GAAM,aAAa,UAAW1Q,GAAE,CAAC,CAAC,EAClC2P,EAAQ,KAAO,IAEfe,GAAQf,EAAQ,GAAG,QAAQ,uBAAuB3P,GAAE,CAAC,CAAC,EACtD0Q,GAAM,aAAa,UAAW1Q,GAAE,CAAC,CAAC,EAC9BtK,GAAMC,EAAa,EAAKgC,GAAQ,YAAYF,EAAI,OAAQ,CAACiZ,EAAK,CAAC,CAAC,EAC7D/Y,GAAQ,YAAY+Y,EAAK,EAChCf,EAAQ,KAAO,GAEjBA,EAAQ,IAAI,KAAKA,EAAQ,IAAKA,EAAQ,IAAM,EAAGe,EAAK,EACpDf,EAAQ,KACV,CACF,CAEA,GADAA,EAAQ,cAAgBW,EAAY,WAAWzK,EAAK,OAAS,CAAC,GAAK,GAC/DhO,GAASqY,GAAcC,GAAYM,GAAYL,GAAOC,EAAY,CACpE,IAAIO,GAAY/Y,GAAS,GACrBqY,IAAcU,IAAaV,GAC3BC,IAAYS,IAAaT,GAC7B,IAAIF,GAAQxY,EAAI,OAAQ,CAACE,EAAO,EAAGiZ,GAAWR,CAAG,EACjD,GAAIC,EACF,QAASQ,MAAQR,EAAkBA,EAAW,eAAeQ,EAAI,GAAKA,IAAQ,SAAWA,IAAQ,SAC7FZ,GAAM,aAAaY,GAAMR,EAAWQ,EAAI,CAAC,EAE/C,OAAOlB,EAAQ,QAAQ,YAAYM,EAAK,CAC1C,CACAN,EAAQ,QAAQ,YAAYhY,EAAO,EACrC,CAIA,SAAS4Y,GAAY1K,EAAMiL,EAAgB,CACzC,GAAIjL,EAAK,OAAS,GAAK,CAAC,KAAK,KAAKA,CAAI,EAAK,OAAOA,EAElD,QADIkL,EAAcD,EAAgBrO,EAAS,GAClC3K,EAAI,EAAGA,EAAI+N,EAAK,OAAQ/N,IAAK,CACpC,IAAIuE,EAAKwJ,EAAK,OAAO/N,CAAC,EAClBuE,GAAM,KAAO0U,IAAgBjZ,GAAK+N,EAAK,OAAS,GAAKA,EAAK,WAAW/N,EAAI,CAAC,GAAK,MAC/EuE,EAAK,QACToG,GAAUpG,EACV0U,EAAc1U,GAAM,GACtB,CACA,OAAOoG,CACT,CAIA,SAASoN,GAAkBtK,EAAOlI,EAAO,CACvC,OAAO,SAAUsS,EAAS9J,EAAMhO,EAAOqY,EAAYC,EAAUC,EAAKC,EAAY,CAC5ExY,EAAQA,EAAQA,EAAQ,mBAAqB,kBAE7C,QADII,EAAQ0X,EAAQ,IAAKzX,GAAMD,EAAQ4N,EAAK,SACnC,CAGP,QADItI,GAAQ,OACHzF,GAAI,EAAGA,GAAIuF,EAAM,SACxBE,GAAOF,EAAMvF,EAAC,EACV,EAAAyF,GAAK,GAAKtF,GAASsF,GAAK,MAAQtF,IAFJH,KAEhC,CAEF,GAAIyF,GAAK,IAAMrF,GAAO,OAAOqN,EAAMoK,EAAS9J,EAAMhO,EAAOqY,EAAYC,EAAUC,EAAKC,CAAU,EAC9F9K,EAAMoK,EAAS9J,EAAK,MAAM,EAAGtI,GAAK,GAAKtF,CAAK,EAAGJ,EAAOqY,EAAY,KAAME,EAAKC,CAAU,EACvFH,EAAa,KACbrK,EAAOA,EAAK,MAAMtI,GAAK,GAAKtF,CAAK,EACjCA,EAAQsF,GAAK,EACf,CACF,CACF,CAEA,SAASyT,GAAmBrB,EAASsB,EAAMzG,EAAQ0G,EAAc,CAC/D,IAAIC,EAAS,CAACD,GAAgB1G,EAAO,WACjC2G,GAAUxB,EAAQ,IAAI,KAAKA,EAAQ,IAAKA,EAAQ,IAAMsB,EAAME,CAAM,EAClE,CAACD,GAAgBvB,EAAQ,GAAG,QAAQ,MAAM,wBACvCwB,IACDA,EAASxB,EAAQ,QAAQ,YAAY,SAAS,cAAc,MAAM,CAAC,GACvEwB,EAAO,aAAa,YAAa3G,EAAO,EAAE,GAExC2G,IACFxB,EAAQ,GAAG,QAAQ,MAAM,cAAcwB,CAAM,EAC7CxB,EAAQ,QAAQ,YAAYwB,CAAM,GAEpCxB,EAAQ,KAAOsB,EACftB,EAAQ,cAAgB,EAC1B,CAIA,SAASI,GAAkBxP,EAAMoP,EAASyB,EAAQ,CAChD,IAAI1G,EAAQnK,EAAK,YAAa8Q,EAAU9Q,EAAK,KAAML,EAAK,EACxD,GAAI,CAACwK,EAAO,CACV,QAAS9L,EAAM,EAAGA,EAAMwS,EAAO,OAAQxS,GAAK,EACxC+Q,EAAQ,SAASA,EAAS0B,EAAQ,MAAMnR,EAAIA,EAAKkR,EAAOxS,CAAG,CAAC,EAAG2Q,GAAoB6B,EAAOxS,EAAI,CAAC,EAAG+Q,EAAQ,GAAG,OAAO,CAAC,EACzH,MACF,CAIA,QAFIjR,EAAM2S,EAAQ,OAAQpW,EAAM,EAAGnD,EAAI,EAAG+N,GAAO,GAAIhO,GAAOuY,GACxDkB,GAAa,EAAGC,GAAWC,GAAcC,GAAgBC,GAAWrB,KAC/D,CACP,GAAIiB,IAAcrW,EAAK,CACrBsW,GAAYC,GAAeC,GAAiBrB,GAAM,GAClDC,GAAa,KACbqB,GAAY,KAAMJ,GAAa,IAE/B,QADIK,GAAiB,CAAC,EAAGC,GAAa,OAC7BrS,GAAI,EAAGA,GAAImL,EAAM,OAAQ,EAAEnL,GAAG,CACrC,IAAIoO,GAAKjD,EAAMnL,EAAC,EAAGS,GAAI2N,GAAG,OAC1B,GAAI3N,GAAE,MAAQ,YAAc2N,GAAG,MAAQ1S,GAAO+E,GAAE,WAC9C2R,GAAe,KAAK3R,EAAC,UACZ2N,GAAG,MAAQ1S,IAAQ0S,GAAG,IAAM,MAAQA,GAAG,GAAK1S,GAAO+E,GAAE,WAAa2N,GAAG,IAAM1S,GAAO0S,GAAG,MAAQ1S,GAAM,CAY5G,GAXI0S,GAAG,IAAM,MAAQA,GAAG,IAAM1S,GAAOqW,GAAa3D,GAAG,KACnD2D,GAAa3D,GAAG,GAChB6D,GAAe,IAEbxR,GAAE,YAAauR,IAAa,IAAMvR,GAAE,WACpCA,GAAE,MAAOoQ,IAAOA,GAAMA,GAAM,IAAM,IAAMpQ,GAAE,KAC1CA,GAAE,YAAc2N,GAAG,MAAQ1S,IAAOwW,IAAkB,IAAMzR,GAAE,YAC5DA,GAAE,UAAY2N,GAAG,IAAM2D,KAAeM,KAAcA,GAAY,CAAC,IAAI,KAAK5R,GAAE,SAAU2N,GAAG,EAAE,EAG3F3N,GAAE,SAAUqQ,KAAeA,GAAa,CAAC,IAAI,MAAQrQ,GAAE,OACvDA,GAAE,WACJ,QAAS6Q,MAAQ7Q,GAAE,YACdqQ,KAAeA,GAAa,CAAC,IAAIQ,EAAI,EAAI7Q,GAAE,WAAW6Q,EAAI,EAE7D7Q,GAAE,YAAc,CAAC0R,IAAavE,GAAwBuE,GAAU,OAAQ1R,EAAC,EAAI,KAC7E0R,GAAY/D,GAClB,MAAWA,GAAG,KAAO1S,GAAOqW,GAAa3D,GAAG,OAC1C2D,GAAa3D,GAAG,KAEpB,CACA,GAAIiE,GAAa,QAAS7R,GAAM,EAAGA,GAAM6R,GAAU,OAAQ7R,IAAO,EAC1D6R,GAAU7R,GAAM,CAAC,GAAKuR,KAAcE,IAAgB,IAAMI,GAAU7R,EAAG,GAE/E,GAAI,CAAC2R,IAAaA,GAAU,MAAQzW,EAAO,QAASmF,GAAM,EAAGA,GAAMuR,GAAe,OAAQ,EAAEvR,GACxF4Q,GAAmBrB,EAAS,EAAGgC,GAAevR,EAAG,CAAC,EACtD,GAAIsR,KAAcA,GAAU,MAAQ,IAAMzW,EAAK,CAG7C,GAFA+V,GAAmBrB,GAAU+B,GAAU,IAAM,KAAOhT,EAAM,EAAIgT,GAAU,IAAMzW,EAC3DyW,GAAU,OAAQA,GAAU,MAAQ,IAAI,EACvDA,GAAU,IAAM,KAAQ,OACxBA,GAAU,IAAMzW,IAAOyW,GAAY,GACzC,CACF,CACA,GAAIzW,GAAOyD,EAAO,MAGlB,QADImT,GAAO,KAAK,IAAInT,EAAK4S,EAAU,IACtB,CACX,GAAIzL,GAAM,CACR,IAAI3N,GAAM+C,EAAM4K,GAAK,OACrB,GAAI,CAAC6L,GAAW,CACd,IAAII,GAAY5Z,GAAM2Z,GAAOhM,GAAK,MAAM,EAAGgM,GAAO5W,CAAG,EAAI4K,GACzD8J,EAAQ,SAASA,EAASmC,GAAWja,GAAQA,GAAQ0Z,GAAYA,GAChDE,GAAgBxW,EAAM6W,GAAU,QAAUR,GAAaE,GAAe,GAAIpB,GAAKC,EAAU,CAC5G,CACA,GAAInY,IAAO2Z,GAAM,CAAChM,GAAOA,GAAK,MAAMgM,GAAO5W,CAAG,EAAGA,EAAM4W,GAAM,KAAK,CAClE5W,EAAM/C,GACNuZ,GAAiB,EACnB,CACA5L,GAAOwL,EAAQ,MAAMnR,EAAIA,EAAKkR,EAAOtZ,GAAG,CAAC,EACzCD,GAAQ0X,GAAoB6B,EAAOtZ,GAAG,EAAG6X,EAAQ,GAAG,OAAO,CAC7D,CACF,CACF,CAMA,SAASoC,GAAStZ,EAAK8H,EAAM+N,EAAO,CAElC,KAAK,KAAO/N,EAEZ,KAAK,KAAO4N,GAAoB5N,CAAI,EAEpC,KAAK,KAAO,KAAK,KAAO2F,EAAO5K,GAAI,KAAK,IAAI,CAAC,EAAIgT,EAAQ,EAAI,EAC7D,KAAK,KAAO,KAAK,KAAO,KACxB,KAAK,OAASG,GAAahW,EAAK8H,CAAI,CACtC,CAGA,SAASyR,GAAe/Y,EAAI+D,EAAMC,EAAI,CAEpC,QADIxC,EAAQ,CAAC,EAAGwX,EACPhX,EAAM+B,EAAM/B,EAAMgC,EAAIhC,EAAMgX,EAAS,CAC5C,IAAIC,EAAO,IAAIH,GAAS9Y,EAAG,IAAKwM,GAAQxM,EAAG,IAAKgC,CAAG,EAAGA,CAAG,EACzDgX,EAAUhX,EAAMiX,EAAK,KACrBzX,EAAM,KAAKyX,CAAI,CACjB,CACA,OAAOzX,CACT,CAEA,IAAI0X,GAAiB,KAErB,SAASC,GAActH,EAAI,CACrBqH,GACFA,GAAe,IAAI,KAAKrH,CAAE,EAE1BA,EAAG,UAAYqH,GAAiB,CAC9B,IAAK,CAACrH,CAAE,EACR,iBAAkB,CAAC,CACrB,CAEJ,CAEA,SAASuH,GAAoBC,EAAO,CAGlC,IAAIC,EAAYD,EAAM,iBAAkBxa,EAAI,EAC5C,EAAG,CACD,KAAOA,EAAIya,EAAU,OAAQza,IACzBya,EAAUza,CAAC,EAAE,KAAK,IAAI,EAC1B,QAASyH,EAAI,EAAGA,EAAI+S,EAAM,IAAI,OAAQ/S,IAAK,CACzC,IAAIuL,EAAKwH,EAAM,IAAI/S,CAAC,EACpB,GAAIuL,EAAG,uBACH,KAAOA,EAAG,qBAAuBA,EAAG,uBAAuB,QACzDA,EAAG,uBAAuBA,EAAG,sBAAsB,EAAE,KAAK,KAAMA,EAAG,EAAE,CAC7E,CACF,OAAShT,EAAIya,EAAU,OACzB,CAEA,SAASC,GAAgB1H,EAAI2H,EAAO,CAClC,IAAIH,EAAQxH,EAAG,UACf,GAAKwH,EAEL,GAAI,CAAED,GAAoBC,CAAK,CAAG,QAClC,CACEH,GAAiB,KACjBM,EAAMH,CAAK,CACb,CACF,CAEA,IAAII,GAAyB,KAS7B,SAASC,GAAYjS,EAAS5B,EAAsB,CAClD,IAAIvD,EAAMoF,GAAYD,EAAS5B,CAAI,EACnC,GAAKvD,EAAI,OACT,KAAIhC,EAAO,MAAM,UAAU,MAAM,KAAK,UAAW,CAAC,EAAGqZ,EACjDT,GACFS,EAAOT,GAAe,iBACbO,GACTE,EAAOF,IAEPE,EAAOF,GAAyB,CAAC,EACjC,WAAWG,GAAmB,CAAC,GAMjC,QAJI3K,EAAO,SAAWpQ,EAAI,CACxB8a,EAAK,KAAK,UAAY,CAAE,OAAOrX,EAAIzD,CAAC,EAAE,MAAM,KAAMyB,CAAI,CAAG,CAAC,CAC5D,EAESzB,EAAI,EAAGA,EAAIyD,EAAI,OAAQ,EAAEzD,EAChCoQ,EAAMpQ,CAAE,EACZ,CAEA,SAAS+a,IAAoB,CAC3B,IAAIC,EAAUJ,GACdA,GAAyB,KACzB,QAAS5a,EAAI,EAAGA,EAAIgb,EAAQ,OAAQ,EAAEhb,EAAKgb,EAAQhb,CAAC,EAAE,CACxD,CAKA,SAASib,GAAqB9Z,EAAIyW,EAAUpB,EAAO0E,EAAM,CACvD,QAASzT,EAAI,EAAGA,EAAImQ,EAAS,QAAQ,OAAQnQ,IAAK,CAChD,IAAIT,EAAO4Q,EAAS,QAAQnQ,CAAC,EACzBT,GAAQ,OAAUmU,GAAeha,EAAIyW,CAAQ,EACxC5Q,GAAQ,SAAYoU,GAAiBja,EAAIyW,EAAUpB,EAAO0E,CAAI,EAC9DlU,GAAQ,QAAWqU,GAAkBla,EAAIyW,CAAQ,EACjD5Q,GAAQ,UAAYsU,GAAkBna,EAAIyW,EAAUsD,CAAI,CACnE,CACAtD,EAAS,QAAU,IACrB,CAIA,SAAS2D,GAAkB3D,EAAU,CACnC,OAAIA,EAAS,MAAQA,EAAS,OAC5BA,EAAS,KAAOjY,EAAI,MAAO,KAAM,KAAM,oBAAoB,EACvDiY,EAAS,KAAK,YACdA,EAAS,KAAK,WAAW,aAAaA,EAAS,KAAMA,EAAS,IAAI,EACtEA,EAAS,KAAK,YAAYA,EAAS,IAAI,EACnCha,GAAMC,EAAa,IAAK+Z,EAAS,KAAK,MAAM,OAAS,IAEpDA,EAAS,IAClB,CAEA,SAAS4D,GAAqBra,EAAIyW,EAAU,CAC1C,IAAI5Y,EAAM4Y,EAAS,QAAUA,EAAS,QAAU,KAAOA,EAAS,KAAK,SAAW,IAAMA,EAAS,KAAK,QAEpG,GADI5Y,IAAOA,GAAO,8BACd4Y,EAAS,WACP5Y,EAAO4Y,EAAS,WAAW,UAAY5Y,GACpC4Y,EAAS,WAAW,WAAW,YAAYA,EAAS,UAAU,EAAGA,EAAS,WAAa,cACrF5Y,EAAK,CACd,IAAIyc,EAAOF,GAAkB3D,CAAQ,EACrCA,EAAS,WAAa6D,EAAK,aAAa9b,EAAI,MAAO,KAAMX,CAAG,EAAGyc,EAAK,UAAU,EAC9Eta,EAAG,QAAQ,MAAM,cAAcyW,EAAS,UAAU,CACpD,CACF,CAIA,SAAS8D,GAAeva,EAAIyW,EAAU,CACpC,IAAI+D,EAAMxa,EAAG,QAAQ,iBACrB,OAAIwa,GAAOA,EAAI,MAAQ/D,EAAS,MAC9BzW,EAAG,QAAQ,iBAAmB,KAC9ByW,EAAS,QAAU+D,EAAI,QAChBA,EAAI,OAENhE,GAAiBxW,EAAIyW,CAAQ,CACtC,CAKA,SAASuD,GAAeha,EAAIyW,EAAU,CACpC,IAAI5Y,EAAM4Y,EAAS,KAAK,UACpBgE,EAAQF,GAAeva,EAAIyW,CAAQ,EACnCA,EAAS,MAAQA,EAAS,OAAQA,EAAS,KAAOgE,EAAM,KAC5DhE,EAAS,KAAK,WAAW,aAAagE,EAAM,IAAKhE,EAAS,IAAI,EAC9DA,EAAS,KAAOgE,EAAM,IAClBA,EAAM,SAAWhE,EAAS,SAAWgE,EAAM,WAAahE,EAAS,WACnEA,EAAS,QAAUgE,EAAM,QACzBhE,EAAS,UAAYgE,EAAM,UAC3BP,GAAkBla,EAAIyW,CAAQ,GACrB5Y,IACT4Y,EAAS,KAAK,UAAY5Y,EAE9B,CAEA,SAASqc,GAAkBla,EAAIyW,EAAU,CACvC4D,GAAqBra,EAAIyW,CAAQ,EAC7BA,EAAS,KAAK,UACd2D,GAAkB3D,CAAQ,EAAE,UAAYA,EAAS,KAAK,UACjDA,EAAS,MAAQA,EAAS,OAC/BA,EAAS,KAAK,UAAY,IAC9B,IAAIiE,EAAYjE,EAAS,UAAYA,EAAS,UAAY,KAAOA,EAAS,KAAK,WAAa,IAAMA,EAAS,KAAK,UAChHA,EAAS,KAAK,UAAYiE,GAAa,EACzC,CAEA,SAAST,GAAiBja,EAAIyW,EAAUpB,EAAO0E,EAAM,CASnD,GARItD,EAAS,SACXA,EAAS,KAAK,YAAYA,EAAS,MAAM,EACzCA,EAAS,OAAS,MAEhBA,EAAS,mBACXA,EAAS,KAAK,YAAYA,EAAS,gBAAgB,EACnDA,EAAS,iBAAmB,MAE1BA,EAAS,KAAK,YAAa,CAC7B,IAAI6D,EAAOF,GAAkB3D,CAAQ,EACrCA,EAAS,iBAAmBjY,EAAI,MAAO,KAAM,gCAAkCiY,EAAS,KAAK,YAC5D,UAAYzW,EAAG,QAAQ,YAAc+Z,EAAK,SAAW,CAACA,EAAK,kBAAoB,cAAiBA,EAAK,iBAAoB,IAAK,EAC/J/Z,EAAG,QAAQ,MAAM,cAAcyW,EAAS,gBAAgB,EACxD6D,EAAK,aAAa7D,EAAS,iBAAkBA,EAAS,IAAI,CAC5D,CACA,IAAInD,EAAUmD,EAAS,KAAK,cAC5B,GAAIzW,EAAG,QAAQ,aAAesT,EAAS,CACrC,IAAIqH,EAASP,GAAkB3D,CAAQ,EACnCmE,EAAanE,EAAS,OAASjY,EAAI,MAAO,KAAM,4BAA8B,UAAYwB,EAAG,QAAQ,YAAc+Z,EAAK,SAAW,CAACA,EAAK,kBAAoB,IAAK,EAWtK,GAVAa,EAAW,aAAa,cAAe,MAAM,EAC7C5a,EAAG,QAAQ,MAAM,cAAc4a,CAAU,EACzCD,EAAO,aAAaC,EAAYnE,EAAS,IAAI,EACzCA,EAAS,KAAK,cACdmE,EAAW,WAAa,IAAMnE,EAAS,KAAK,aAC5CzW,EAAG,QAAQ,cAAgB,CAACsT,GAAW,CAACA,EAAQ,wBAAwB,KACxEmD,EAAS,WAAamE,EAAW,YACjCpc,EAAI,MAAOgP,GAAcxN,EAAG,QAASqV,CAAK,EACtC,8CACC,SAAY0E,EAAK,WAAW,wBAAwB,EAAK,cAAiB/Z,EAAG,QAAQ,kBAAqB,IAAK,CAAC,GACrHsT,EAAW,QAASuH,EAAI,EAAGA,EAAI7a,EAAG,QAAQ,YAAY,OAAQ,EAAE6a,EAAG,CACrE,IAAIC,EAAK9a,EAAG,QAAQ,YAAY6a,CAAC,EAAE,UAAWxW,GAAQiP,EAAQ,eAAewH,CAAE,GAAKxH,EAAQwH,CAAE,EAC1FzW,IACAuW,EAAW,YAAYpc,EAAI,MAAO,CAAC6F,EAAK,EAAG,wBACjB,SAAY0V,EAAK,WAAWe,CAAE,EAAK,cAAiBf,EAAK,YAAYe,CAAE,EAAK,IAAK,CAAC,CAClH,CACF,CACF,CAEA,SAASX,GAAkBna,EAAIyW,EAAUsD,EAAM,CACzCtD,EAAS,YAAaA,EAAS,UAAY,MAE/C,QADIsE,EAAWnd,EAAU,uBAAuB,EACvCG,EAAO0Y,EAAS,KAAK,WAAYuE,EAAQ,OAASjd,EAAMA,EAAOid,EACtEA,EAAOjd,EAAK,YACRgd,EAAS,KAAKhd,EAAK,SAAS,GAAK0Y,EAAS,KAAK,YAAY1Y,CAAI,EAErEkd,GAAkBjb,EAAIyW,EAAUsD,CAAI,CACtC,CAGA,SAASmB,GAAiBlb,EAAIyW,EAAUpB,EAAO0E,EAAM,CACnD,IAAIU,EAAQF,GAAeva,EAAIyW,CAAQ,EACvC,OAAAA,EAAS,KAAOA,EAAS,KAAOgE,EAAM,IAClCA,EAAM,UAAWhE,EAAS,QAAUgE,EAAM,SAC1CA,EAAM,YAAahE,EAAS,UAAYgE,EAAM,WAElDP,GAAkBla,EAAIyW,CAAQ,EAC9BwD,GAAiBja,EAAIyW,EAAUpB,EAAO0E,CAAI,EAC1CkB,GAAkBjb,EAAIyW,EAAUsD,CAAI,EAC7BtD,EAAS,IAClB,CAIA,SAASwE,GAAkBjb,EAAIyW,EAAUsD,EAAM,CAE7C,GADAoB,GAAqBnb,EAAIyW,EAAS,KAAMA,EAAUsD,EAAM,EAAI,EACxDtD,EAAS,KAAQ,QAAS5X,EAAI,EAAGA,EAAI4X,EAAS,KAAK,OAAQ5X,IAC3Dsc,GAAqBnb,EAAIyW,EAAS,KAAK5X,CAAC,EAAG4X,EAAUsD,EAAM,EAAK,CACtE,CAEA,SAASoB,GAAqBnb,EAAIsH,EAAMmP,EAAUsD,EAAMqB,EAAY,CAClE,GAAK9T,EAAK,QAEV,QADIgT,EAAOF,GAAkB3D,CAAQ,EAC5B5X,EAAI,EAAGwc,EAAK/T,EAAK,QAASzI,EAAIwc,EAAG,OAAQ,EAAExc,EAAG,CACrD,IAAIqZ,EAASmD,EAAGxc,CAAC,EAAGd,EAAOS,EAAI,MAAO,CAAC0Z,EAAO,IAAI,EAAG,yBAA2BA,EAAO,UAAY,IAAMA,EAAO,UAAY,GAAG,EAC1HA,EAAO,mBAAqBna,EAAK,aAAa,mBAAoB,MAAM,EAC7Eud,GAAmBpD,EAAQna,EAAM0Y,EAAUsD,CAAI,EAC/C/Z,EAAG,QAAQ,MAAM,cAAcjC,CAAI,EAC/Bqd,GAAclD,EAAO,MACrBoC,EAAK,aAAavc,EAAM0Y,EAAS,QAAUA,EAAS,IAAI,EAExD6D,EAAK,YAAYvc,CAAI,EACzB2b,GAAYxB,EAAQ,QAAQ,CAC9B,CACF,CAEA,SAASoD,GAAmBpD,EAAQna,EAAM0Y,EAAUsD,EAAM,CACxD,GAAI7B,EAAO,UAAW,EACvBzB,EAAS,YAAcA,EAAS,UAAY,CAAC,IAAI,KAAK1Y,CAAI,EACvD,IAAIwd,EAAQxB,EAAK,aACjBhc,EAAK,MAAM,KAAOgc,EAAK,SAAW,KAC7B7B,EAAO,cACVqD,GAASxB,EAAK,iBACdhc,EAAK,MAAM,YAAcgc,EAAK,iBAAmB,MAEnDhc,EAAK,MAAM,MAAQwd,EAAQ,IAC7B,CACIrD,EAAO,cACTna,EAAK,MAAM,OAAS,EACpBA,EAAK,MAAM,SAAW,WACjBma,EAAO,YAAana,EAAK,MAAM,WAAa,CAACgc,EAAK,iBAAmB,MAE9E,CAEA,SAASyB,GAAatD,EAAQ,CAC5B,GAAIA,EAAO,QAAU,KAAQ,OAAOA,EAAO,OAC3C,IAAIlY,EAAKkY,EAAO,IAAI,GACpB,GAAI,CAAClY,EAAM,MAAO,GAClB,GAAI,CAACZ,EAAS,SAAS,KAAM8Y,EAAO,IAAI,EAAG,CACzC,IAAIuD,EAAc,sBACdvD,EAAO,cACPuD,GAAe,iBAAmBzb,EAAG,QAAQ,QAAQ,YAAc,OACnEkY,EAAO,YACPuD,GAAe,UAAYzb,EAAG,QAAQ,QAAQ,YAAc,OAChE1B,EAAqB0B,EAAG,QAAQ,QAASxB,EAAI,MAAO,CAAC0Z,EAAO,IAAI,EAAG,KAAMuD,CAAW,CAAC,CACvF,CACA,OAAOvD,EAAO,OAASA,EAAO,KAAK,WAAW,YAChD,CAGA,SAASwD,GAAchM,EAAStR,EAAG,CACjC,QAAS6C,EAAIyH,GAAStK,CAAC,EAAG6C,GAAKyO,EAAQ,QAASzO,EAAIA,EAAE,WACpD,GAAI,CAACA,GAAMA,EAAE,UAAY,GAAKA,EAAE,aAAa,kBAAkB,GAAK,QAC/DA,EAAE,YAAcyO,EAAQ,OAASzO,GAAKyO,EAAQ,MAC/C,MAAO,EAEf,CAIA,SAASiM,GAAWjM,EAAS,CAAC,OAAOA,EAAQ,UAAU,SAAS,CAChE,SAASkM,GAAYlM,EAAS,CAAC,OAAOA,EAAQ,MAAM,aAAeA,EAAQ,UAAU,YAAY,CACjG,SAASmM,GAASnM,EAAS,CACzB,GAAIA,EAAQ,eAAkB,OAAOA,EAAQ,eAC7C,IAAItR,EAAIE,EAAqBoR,EAAQ,QAASlR,EAAI,MAAO,IAAK,sBAAsB,CAAC,EACjFI,EAAQ,OAAO,iBAAmB,OAAO,iBAAiBR,CAAC,EAAIA,EAAE,aACjE0d,EAAO,CAAC,KAAM,SAASld,EAAM,WAAW,EAAG,MAAO,SAASA,EAAM,YAAY,CAAC,EAClF,MAAI,CAAC,MAAMkd,EAAK,IAAI,GAAK,CAAC,MAAMA,EAAK,KAAK,IAAKpM,EAAQ,eAAiBoM,GACjEA,CACT,CAEA,SAASC,GAAU/b,EAAI,CAAE,OAAOyB,GAAczB,EAAG,QAAQ,cAAe,CACxE,SAASgc,GAAahc,EAAI,CACxB,OAAOA,EAAG,QAAQ,SAAS,YAAc+b,GAAU/b,CAAE,EAAIA,EAAG,QAAQ,QACtE,CACA,SAASic,GAAcjc,EAAI,CACzB,OAAOA,EAAG,QAAQ,SAAS,aAAe+b,GAAU/b,CAAE,EAAIA,EAAG,QAAQ,SACvE,CAMA,SAASkc,GAAkBlc,EAAIyW,EAAU0F,EAAM,CAC7C,IAAIC,EAAWpc,EAAG,QAAQ,aACtBqc,EAAWD,GAAYJ,GAAahc,CAAE,EAC1C,GAAI,CAACyW,EAAS,QAAQ,SAAW2F,GAAY3F,EAAS,QAAQ,OAAS4F,EAAU,CAC/E,IAAIC,EAAU7F,EAAS,QAAQ,QAAU,CAAC,EAC1C,GAAI2F,EAAU,CACZ3F,EAAS,QAAQ,MAAQ4F,EAEzB,QADIE,EAAQ9F,EAAS,KAAK,WAAW,eAAe,EAC3C5X,EAAI,EAAGA,EAAI0d,EAAM,OAAS,EAAG1d,IAAK,CACzC,IAAI6F,EAAM6X,EAAM1d,CAAC,EAAGmc,EAAOuB,EAAM1d,EAAI,CAAC,EAClC,KAAK,IAAI6F,EAAI,OAASsW,EAAK,MAAM,EAAI,GACrCsB,EAAQ,MAAM5X,EAAI,OAASsW,EAAK,KAAO,EAAImB,EAAK,GAAG,CACzD,CACF,CACAG,EAAQ,KAAKH,EAAK,OAASA,EAAK,GAAG,CACrC,CACF,CAKA,SAASK,GAAgB/F,EAAUnP,EAAM+N,EAAO,CAC9C,GAAIoB,EAAS,MAAQnP,EACjB,MAAO,CAAC,IAAKmP,EAAS,QAAQ,IAAK,MAAOA,EAAS,QAAQ,KAAK,EACpE,GAAIA,EAAS,KAAM,CACjB,QAAS5X,EAAI,EAAGA,EAAI4X,EAAS,KAAK,OAAQ5X,IACtC,GAAI4X,EAAS,KAAK5X,CAAC,GAAKyI,EACtB,MAAO,CAAC,IAAKmP,EAAS,QAAQ,KAAK5X,CAAC,EAAG,MAAO4X,EAAS,QAAQ,OAAO5X,CAAC,CAAC,EAC9E,QAAS8G,EAAM,EAAGA,EAAM8Q,EAAS,KAAK,OAAQ9Q,IAC1C,GAAIsH,EAAOwJ,EAAS,KAAK9Q,CAAG,CAAC,EAAI0P,EAC/B,MAAO,CAAC,IAAKoB,EAAS,QAAQ,KAAK9Q,CAAG,EAAG,MAAO8Q,EAAS,QAAQ,OAAO9Q,CAAG,EAAG,OAAQ,EAAI,CAClG,CACF,CAIA,SAAS8W,GAA0Bzc,EAAIsH,EAAM,CAC3CA,EAAOyN,GAAWzN,CAAI,EACtB,IAAI+N,EAAQpI,EAAO3F,CAAI,EACnB2R,EAAOjZ,EAAG,QAAQ,iBAAmB,IAAI8Y,GAAS9Y,EAAG,IAAKsH,EAAM+N,CAAK,EACzE4D,EAAK,MAAQ5D,EACb,IAAIoF,EAAQxB,EAAK,MAAQzC,GAAiBxW,EAAIiZ,CAAI,EAClD,OAAAA,EAAK,KAAOwB,EAAM,IAClBnc,EAAqB0B,EAAG,QAAQ,YAAaya,EAAM,GAAG,EAC/CxB,CACT,CAIA,SAASyD,GAAY1c,EAAIsH,EAAMlE,EAAIuZ,EAAM,CACvC,OAAOC,GAAoB5c,EAAI6c,GAAsB7c,EAAIsH,CAAI,EAAGlE,EAAIuZ,CAAI,CAC1E,CAGA,SAASG,GAAgB9c,EAAIqV,EAAO,CAClC,GAAIA,GAASrV,EAAG,QAAQ,UAAYqV,EAAQrV,EAAG,QAAQ,OACnD,OAAOA,EAAG,QAAQ,KAAK+c,GAAc/c,EAAIqV,CAAK,CAAC,EACnD,IAAImF,EAAMxa,EAAG,QAAQ,iBACrB,GAAIwa,GAAOnF,GAASmF,EAAI,OAASnF,EAAQmF,EAAI,MAAQA,EAAI,KACrD,OAAOA,CACb,CAOA,SAASqC,GAAsB7c,EAAIsH,EAAM,CACvC,IAAI+N,EAAQpI,EAAO3F,CAAI,EACnB2R,EAAO6D,GAAgB9c,EAAIqV,CAAK,EAChC4D,GAAQ,CAACA,EAAK,KAChBA,EAAO,KACEA,GAAQA,EAAK,UACtBa,GAAqB9Z,EAAIiZ,EAAM5D,EAAO2H,GAAchd,CAAE,CAAC,EACvDA,EAAG,MAAM,YAAc,IAEpBiZ,IACDA,EAAOwD,GAA0Bzc,EAAIsH,CAAI,GAE7C,IAAIoE,EAAO8Q,GAAgBvD,EAAM3R,EAAM+N,CAAK,EAC5C,MAAO,CACL,KAAM/N,EAAM,KAAM2R,EAAM,KAAM,KAC9B,IAAKvN,EAAK,IAAK,MAAOA,EAAK,MAAO,OAAQA,EAAK,OAC/C,WAAY,EACd,CACF,CAIA,SAASkR,GAAoB5c,EAAIid,EAAU7Z,EAAIuZ,EAAMO,EAAW,CAC1DD,EAAS,SAAU7Z,EAAK,IAC5B,IAAI+Z,EAAM/Z,GAAMuZ,GAAQ,IAAKtY,EAC7B,OAAI4Y,EAAS,MAAM,eAAeE,CAAG,EACnC9Y,EAAQ4Y,EAAS,MAAME,CAAG,GAErBF,EAAS,OACVA,EAAS,KAAOA,EAAS,KAAK,KAAK,sBAAsB,GACxDA,EAAS,aACZf,GAAkBlc,EAAIid,EAAS,KAAMA,EAAS,IAAI,EAClDA,EAAS,WAAa,IAExB5Y,EAAQ+Y,GAAiBpd,EAAIid,EAAU7Z,EAAIuZ,CAAI,EAC1CtY,EAAM,QAAS4Y,EAAS,MAAME,CAAG,EAAI9Y,IAErC,CAAC,KAAMA,EAAM,KAAM,MAAOA,EAAM,MAC/B,IAAK6Y,EAAY7Y,EAAM,KAAOA,EAAM,IACpC,OAAQ6Y,EAAY7Y,EAAM,QAAUA,EAAM,MAAM,CAC1D,CAEA,IAAIgZ,GAAW,CAAC,KAAM,EAAG,MAAO,EAAG,IAAK,EAAG,OAAQ,CAAC,EAEpD,SAASC,GAAuB/a,EAAKa,EAAIuZ,EAAM,CAI7C,QAHI5e,EAAMiB,EAAOC,EAAKse,EAAUC,EAAQC,EAG/B5e,EAAI,EAAGA,EAAI0D,EAAI,OAAQ1D,GAAK,EAcnC,GAbA2e,EAASjb,EAAI1D,CAAC,EACd4e,EAAOlb,EAAI1D,EAAI,CAAC,EACZuE,EAAKoa,GACPxe,EAAQ,EAAGC,EAAM,EACjBse,EAAW,QACFna,EAAKqa,GACdze,EAAQoE,EAAKoa,EACbve,EAAMD,EAAQ,IACLH,GAAK0D,EAAI,OAAS,GAAKa,GAAMqa,GAAQlb,EAAI1D,EAAI,CAAC,EAAIuE,KAC3DnE,EAAMwe,EAAOD,EACbxe,EAAQC,EAAM,EACVmE,GAAMqa,IAAQF,EAAW,UAE3Bve,GAAS,KAAM,CAIjB,GAHAjB,EAAOwE,EAAI1D,EAAI,CAAC,EACZ2e,GAAUC,GAAQd,IAAS5e,EAAK,WAAa,OAAS,WACtDwf,EAAWZ,GACXA,GAAQ,QAAU3d,GAAS,EAC3B,KAAOH,GAAK0D,EAAI1D,EAAI,CAAC,GAAK0D,EAAI1D,EAAI,CAAC,GAAK0D,EAAI1D,EAAI,CAAC,EAAE,YACnDd,EAAOwE,GAAK1D,GAAK,GAAK,CAAC,EACvB0e,EAAW,OAEf,GAAIZ,GAAQ,SAAW3d,GAASye,EAAOD,EACnC,KAAO3e,EAAI0D,EAAI,OAAS,GAAKA,EAAI1D,EAAI,CAAC,GAAK0D,EAAI1D,EAAI,CAAC,GAAK,CAAC0D,EAAI1D,EAAI,CAAC,EAAE,YACrEd,EAAOwE,GAAK1D,GAAK,GAAK,CAAC,EACvB0e,EAAW,QAEf,KACF,CAEF,MAAO,CAAC,KAAMxf,EAAM,MAAOiB,EAAO,IAAKC,EAAK,SAAUse,EAAU,WAAYC,EAAQ,SAAUC,CAAI,CACpG,CAEA,SAASC,GAAcnB,EAAOI,EAAM,CAClC,IAAIR,EAAOkB,GACX,GAAIV,GAAQ,OAAU,QAAS9d,EAAI,EAAGA,EAAI0d,EAAM,SACzCJ,EAAOI,EAAM1d,CAAC,GAAG,MAAQsd,EAAK,MADmBtd,IACtD,KACS,SAAS8G,EAAM4W,EAAM,OAAS,EAAG5W,GAAO,IAC5CwW,EAAOI,EAAM5W,CAAG,GAAG,MAAQwW,EAAK,MADexW,IACpD,CAEF,OAAOwW,CACT,CAEA,SAASiB,GAAiBpd,EAAIid,EAAU7Z,EAAIuZ,EAAM,CAChD,IAAIgB,EAAQL,GAAuBL,EAAS,IAAK7Z,EAAIuZ,CAAI,EACrD5e,EAAO4f,EAAM,KAAM3e,EAAQ2e,EAAM,MAAO1e,EAAM0e,EAAM,IAAKJ,EAAWI,EAAM,SAE1ExB,EACJ,GAAIpe,EAAK,UAAY,EAAG,CACtB,QAAS4H,GAAM,EAAGA,GAAM,EAAGA,KAAO,CAChC,KAAO3G,GAASyE,GAAgBwZ,EAAS,KAAK,KAAK,OAAOU,EAAM,WAAa3e,CAAK,CAAC,GAAK,EAAEA,EAC1F,KAAO2e,EAAM,WAAa1e,EAAM0e,EAAM,UAAYla,GAAgBwZ,EAAS,KAAK,KAAK,OAAOU,EAAM,WAAa1e,CAAG,CAAC,GAAK,EAAEA,EAK1H,GAJIxC,GAAMC,EAAa,GAAKsC,GAAS,GAAKC,GAAO0e,EAAM,SAAWA,EAAM,WACpExB,EAAOpe,EAAK,WAAW,sBAAsB,EAE7Coe,EAAOuB,GAAc3e,EAAMhB,EAAMiB,EAAOC,CAAG,EAAE,eAAe,EAAG0d,CAAI,EACnER,EAAK,MAAQA,EAAK,OAASnd,GAAS,EAAK,MAC7CC,EAAMD,EACNA,EAAQA,EAAQ,EAChBue,EAAW,OACb,CACI9gB,GAAMC,EAAa,KAAMyf,EAAOyB,GAA0B5d,EAAG,QAAQ,QAASmc,CAAI,EACxF,KAAO,CACDnd,EAAQ,IAAKue,EAAWZ,EAAO,SACnC,IAAIJ,GACAvc,EAAG,QAAQ,eAAiBuc,GAAQxe,EAAK,eAAe,GAAG,OAAS,EACpEoe,EAAOI,GAAMI,GAAQ,QAAUJ,GAAM,OAAS,EAAI,CAAC,EAEnDJ,EAAOpe,EAAK,sBAAsB,CACxC,CACA,GAAItB,GAAMC,EAAa,GAAK,CAACsC,IAAU,CAACmd,GAAQ,CAACA,EAAK,MAAQ,CAACA,EAAK,OAAQ,CAC1E,IAAI0B,GAAQ9f,EAAK,WAAW,eAAe,EAAE,CAAC,EAC1C8f,GACA1B,EAAO,CAAC,KAAM0B,GAAM,KAAM,MAAOA,GAAM,KAAOC,GAAU9d,EAAG,OAAO,EAAG,IAAK6d,GAAM,IAAK,OAAQA,GAAM,MAAM,EAEzG1B,EAAOkB,EACb,CAMA,QAJIU,GAAO5B,EAAK,IAAMc,EAAS,KAAK,IAAKe,GAAO7B,EAAK,OAASc,EAAS,KAAK,IACxE/Y,IAAO6Z,GAAOC,IAAQ,EACtB1B,GAAUW,EAAS,KAAK,QAAQ,QAChCpe,GAAI,EACDA,GAAIyd,GAAQ,OAAS,GACpB,EAAApY,GAAMoY,GAAQzd,EAAC,GADQA,KAC3B,CACJ,IAAIof,GAAMpf,GAAIyd,GAAQzd,GAAI,CAAC,EAAI,EAAGqf,GAAM5B,GAAQzd,EAAC,EAC7C2K,GAAS,CAAC,MAAO+T,GAAY,QAAUpB,EAAK,MAAQA,EAAK,MAAQc,EAAS,KAAK,KACrE,OAAQM,GAAY,OAASpB,EAAK,KAAOA,EAAK,OAASc,EAAS,KAAK,KACrE,IAAKgB,GAAK,OAAQC,EAAG,EACnC,MAAI,CAAC/B,EAAK,MAAQ,CAACA,EAAK,QAAS3S,GAAO,MAAQ,IAC3CxJ,EAAG,QAAQ,4BAA6BwJ,GAAO,KAAOuU,GAAMvU,GAAO,QAAUwU,IAE3ExU,EACT,CAIA,SAASoU,GAA0B5U,EAASmT,EAAM,CAChD,GAAI,CAAC,OAAO,QAAU,OAAO,aAAe,MACxC,OAAO,aAAe,OAAO,YAAc,CAACnS,GAAkBhB,CAAO,EACrE,OAAOmT,EACX,IAAIgC,EAAS,OAAO,YAAc,OAAO,WACrCC,EAAS,OAAO,YAAc,OAAO,WACzC,MAAO,CAAC,KAAMjC,EAAK,KAAOgC,EAAQ,MAAOhC,EAAK,MAAQgC,EAC9C,IAAKhC,EAAK,IAAMiC,EAAQ,OAAQjC,EAAK,OAASiC,CAAM,CAC9D,CAEA,SAASC,GAA6B5H,EAAU,CAC9C,GAAIA,EAAS,UACXA,EAAS,QAAQ,MAAQ,CAAC,EAC1BA,EAAS,QAAQ,QAAU,KACvBA,EAAS,MAAQ,QAAS5X,EAAI,EAAGA,EAAI4X,EAAS,KAAK,OAAQ5X,IAC3D4X,EAAS,QAAQ,OAAO5X,CAAC,EAAI,CAAC,CAEtC,CAEA,SAASyf,GAA0Bte,EAAI,CACrCA,EAAG,QAAQ,gBAAkB,KAC7B7B,EAAe6B,EAAG,QAAQ,WAAW,EACrC,QAASnB,EAAI,EAAGA,EAAImB,EAAG,QAAQ,KAAK,OAAQnB,IACxCwf,GAA6Bre,EAAG,QAAQ,KAAKnB,CAAC,CAAC,CACrD,CAEA,SAAS0f,GAAYve,EAAI,CACvBse,GAA0Bte,CAAE,EAC5BA,EAAG,QAAQ,gBAAkBA,EAAG,QAAQ,iBAAmBA,EAAG,QAAQ,eAAiB,KAClFA,EAAG,QAAQ,eAAgBA,EAAG,QAAQ,eAAiB,IAC5DA,EAAG,QAAQ,aAAe,IAC5B,CAEA,SAASwe,GAAYhf,EAAK,CAIxB,OAAI3C,GAAUO,EAAkB,EAAEoC,EAAI,KAAK,sBAAsB,EAAE,KAAO,SAAS,iBAAiBA,EAAI,IAAI,EAAE,UAAU,GACjHA,EAAI,YAAY,cAAgBA,EAAI,iBAAmBA,EAAI,MAAM,UAC1E,CACA,SAASif,GAAYjf,EAAK,CACxB,OAAI3C,GAAUO,EAAkB,EAAEoC,EAAI,KAAK,sBAAsB,EAAE,IAAM,SAAS,iBAAiBA,EAAI,IAAI,EAAE,SAAS,GAC/GA,EAAI,YAAY,cAAgBA,EAAI,iBAAmBA,EAAI,MAAM,SAC1E,CAEA,SAASkf,GAAgB/I,EAAS,CAChC,IAAIgJ,EAAM5J,GAAWY,CAAO,EACxBiJ,EAAUD,EAAI,QACd5R,EAAS,EACb,GAAI6R,EAAW,QAAS/f,EAAI,EAAGA,EAAI+f,EAAQ,OAAQ,EAAE/f,EAAS+f,EAAQ/f,CAAC,EAAE,QACrEkO,GAAUyO,GAAaoD,EAAQ/f,CAAC,CAAC,GACrC,OAAOkO,CACT,CAMA,SAAS8R,GAAgB7e,EAAI2V,EAASwG,EAAMvN,EAASkQ,EAAgB,CACnE,GAAI,CAACA,EAAgB,CACnB,IAAI/R,EAAS2R,GAAgB/I,CAAO,EACpCwG,EAAK,KAAOpP,EAAQoP,EAAK,QAAUpP,CACrC,CACA,GAAI6B,GAAW,OAAU,OAAOuN,EAC3BvN,IAAWA,EAAU,SAC1B,IAAImQ,EAAOrJ,GAAaC,CAAO,EAG/B,GAFI/G,GAAW,QAAWmQ,GAAQpD,GAAW3b,EAAG,OAAO,EAChD+e,GAAQ/e,EAAG,QAAQ,WACtB4O,GAAW,QAAUA,GAAW,SAAU,CAC5C,IAAIoQ,EAAOhf,EAAG,QAAQ,UAAU,sBAAsB,EACtD+e,GAAQC,EAAK,KAAOpQ,GAAW,SAAW,EAAI6P,GAAYjf,GAAIQ,CAAE,CAAC,GACjE,IAAIif,EAAOD,EAAK,MAAQpQ,GAAW,SAAW,EAAI4P,GAAYhf,GAAIQ,CAAE,CAAC,GACrEmc,EAAK,MAAQ8C,EAAM9C,EAAK,OAAS8C,CACnC,CACA,OAAA9C,EAAK,KAAO4C,EAAM5C,EAAK,QAAU4C,EAC1B5C,CACT,CAIA,SAAS+C,GAAgBlf,EAAImf,EAAQvQ,EAAS,CAC5C,GAAIA,GAAW,MAAS,OAAOuQ,EAC/B,IAAIC,EAAOD,EAAO,KAAMlB,EAAMkB,EAAO,IAErC,GAAIvQ,GAAW,OACbwQ,GAAQZ,GAAYhf,GAAIQ,CAAE,CAAC,EAC3Bie,GAAOQ,GAAYjf,GAAIQ,CAAE,CAAC,UACjB4O,GAAW,SAAW,CAACA,EAAS,CACzC,IAAIyQ,EAAWrf,EAAG,QAAQ,MAAM,sBAAsB,EACtDof,GAAQC,EAAS,KACjBpB,GAAOoB,EAAS,GAClB,CAEA,IAAIC,EAAetf,EAAG,QAAQ,UAAU,sBAAsB,EAC9D,MAAO,CAAC,KAAMof,EAAOE,EAAa,KAAM,IAAKrB,EAAMqB,EAAa,GAAG,CACrE,CAEA,SAASC,GAAWvf,EAAIgC,EAAK4M,EAAS+G,EAASgH,EAAM,CACnD,OAAKhH,IAAWA,EAAUnJ,GAAQxM,EAAG,IAAKgC,EAAI,IAAI,GAC3C6c,GAAgB7e,EAAI2V,EAAS+G,GAAY1c,EAAI2V,EAAS3T,EAAI,GAAI2a,CAAI,EAAG/N,CAAO,CACrF,CAkBA,SAAS4Q,GAAaxf,EAAIgC,EAAK4M,EAAS+G,EAAS8J,EAAiBvC,EAAW,CAC3EvH,EAAUA,GAAWnJ,GAAQxM,EAAG,IAAKgC,EAAI,IAAI,EACxCyd,IAAmBA,EAAkB5C,GAAsB7c,EAAI2V,CAAO,GAC3E,SAAS+J,EAAItc,GAAIuc,GAAO,CACtB,IAAI5Y,GAAI6V,GAAoB5c,EAAIyf,EAAiBrc,GAAIuc,GAAQ,QAAU,OAAQzC,CAAS,EACxF,OAAIyC,GAAS5Y,GAAE,KAAOA,GAAE,MAAgBA,GAAE,MAAQA,GAAE,KAC7C8X,GAAgB7e,EAAI2V,EAAS5O,GAAG6H,CAAO,CAChD,CACA,IAAIxK,EAAQiD,GAASsO,EAAS3V,EAAG,IAAI,SAAS,EAAGoD,EAAKpB,EAAI,GAAIyC,EAASzC,EAAI,OAQ3E,GAPIoB,GAAMuS,EAAQ,KAAK,QACrBvS,EAAKuS,EAAQ,KAAK,OAClBlR,EAAS,UACArB,GAAM,IACfA,EAAK,EACLqB,EAAS,SAEP,CAACL,EAAS,OAAOsb,EAAIjb,GAAU,SAAWrB,EAAK,EAAIA,EAAIqB,GAAU,QAAQ,EAE7E,SAASmb,GAAQxc,GAAIyc,GAASC,GAAQ,CACpC,IAAIxb,GAAOF,EAAMyb,EAAO,EAAGF,GAAQrb,GAAK,OAAS,EACjD,OAAOob,EAAII,GAAS1c,GAAK,EAAIA,GAAIuc,IAASG,EAAM,CAClD,CACA,IAAID,GAAUrb,GAAcJ,EAAOhB,EAAIqB,CAAM,EACzCsb,GAAQxb,GACRiH,GAAMoU,GAAQxc,EAAIyc,GAASpb,GAAU,QAAQ,EACjD,OAAIsb,IAAS,OAAQvU,GAAI,MAAQoU,GAAQxc,EAAI2c,GAAOtb,GAAU,QAAQ,GAC/D+G,EACT,CAIA,SAASwU,GAAehgB,EAAIgC,EAAK,CAC/B,IAAIod,EAAO,EACXpd,EAAMiM,GAAQjO,EAAG,IAAKgC,CAAG,EACpBhC,EAAG,QAAQ,eAAgBof,EAAOtB,GAAU9d,EAAG,OAAO,EAAIgC,EAAI,IACnE,IAAI2T,EAAUnJ,GAAQxM,EAAG,IAAKgC,EAAI,IAAI,EAClCic,EAAMvI,GAAaC,CAAO,EAAIgG,GAAW3b,EAAG,OAAO,EACvD,MAAO,CAAC,KAAMof,EAAM,MAAOA,EAAM,IAAKnB,EAAK,OAAQA,EAAMtI,EAAQ,MAAM,CACzE,CAQA,SAASsK,GAAY3Y,EAAMlE,EAAIqB,EAAQyb,EAASC,EAAM,CACpD,IAAIne,EAAMyL,GAAInG,EAAMlE,EAAIqB,CAAM,EAC9B,OAAAzC,EAAI,KAAOme,EACPD,IAAWle,EAAI,QAAUke,GACtBle,CACT,CAIA,SAASoe,GAAWpgB,EAAI6N,EAAGwS,EAAG,CAC5B,IAAI7gB,EAAMQ,EAAG,IAEb,GADAqgB,GAAKrgB,EAAG,QAAQ,WACZqgB,EAAI,EAAK,OAAOJ,GAAYzgB,EAAI,MAAO,EAAG,KAAM,GAAI,EAAE,EAC1D,IAAI6V,EAAQlI,GAAa3N,EAAK6gB,CAAC,EAAGnS,EAAO1O,EAAI,MAAQA,EAAI,KAAO,EAChE,GAAI6V,EAAQnH,EACR,OAAO+R,GAAYzgB,EAAI,MAAQA,EAAI,KAAO,EAAGgN,GAAQhN,EAAK0O,CAAI,EAAE,KAAK,OAAQ,KAAM,EAAG,CAAC,EACvFL,EAAI,IAAKA,EAAI,GAGjB,QADI8H,EAAUnJ,GAAQhN,EAAK6V,CAAK,IACvB,CACP,IAAIhR,EAAQic,GAAgBtgB,EAAI2V,EAASN,EAAOxH,EAAGwS,CAAC,EAChD5H,EAAY5D,GAAoBc,EAAStR,EAAM,IAAMA,EAAM,KAAO,GAAKA,EAAM,QAAU,EAAI,EAAI,EAAE,EACrG,GAAI,CAACoU,EAAa,OAAOpU,EACzB,IAAIkc,EAAW9H,EAAU,KAAK,CAAC,EAC/B,GAAI8H,EAAS,MAAQlL,EAAS,OAAOkL,EACrC5K,EAAUnJ,GAAQhN,EAAK6V,EAAQkL,EAAS,IAAI,CAC9C,CACF,CAEA,SAASC,GAAkBxgB,EAAI2V,EAAS8J,EAAiBY,EAAG,CAC1DA,GAAK3B,GAAgB/I,CAAO,EAC5B,IAAI1W,EAAM0W,EAAQ,KAAK,OACnB8K,EAAQ5c,GAAU,SAAUT,EAAI,CAAE,OAAOwZ,GAAoB5c,EAAIyf,EAAiBrc,EAAK,CAAC,EAAE,QAAUid,CAAG,EAAGphB,EAAK,CAAC,EACpH,OAAAA,EAAM4E,GAAU,SAAUT,EAAI,CAAE,OAAOwZ,GAAoB5c,EAAIyf,EAAiBrc,CAAE,EAAE,IAAMid,CAAG,EAAGI,EAAOxhB,CAAG,EACnG,CAAC,MAAOwhB,EAAO,IAAKxhB,CAAG,CAChC,CAEA,SAASyhB,GAAsB1gB,EAAI2V,EAAS8J,EAAiBhf,EAAQ,CAC9Dgf,IAAmBA,EAAkB5C,GAAsB7c,EAAI2V,CAAO,GAC3E,IAAIgL,EAAY9B,GAAgB7e,EAAI2V,EAASiH,GAAoB5c,EAAIyf,EAAiBhf,CAAM,EAAG,MAAM,EAAE,IACvG,OAAO+f,GAAkBxgB,EAAI2V,EAAS8J,EAAiBkB,CAAS,CAClE,CAIA,SAASC,GAAWC,EAAKhT,EAAGwS,EAAGjB,EAAM,CACnC,OAAOyB,EAAI,QAAUR,EAAI,GAAQQ,EAAI,IAAMR,EAAI,IAAQjB,EAAOyB,EAAI,KAAOA,EAAI,OAAShT,CACxF,CAEA,SAASyS,GAAgBtgB,EAAI2V,EAAS1I,EAAQY,EAAGwS,EAAG,CAElDA,GAAK3K,GAAaC,CAAO,EACzB,IAAI8J,EAAkB5C,GAAsB7c,EAAI2V,CAAO,EAGnD6F,EAAekD,GAAgB/I,CAAO,EACtC8K,EAAQ,EAAGxhB,EAAM0W,EAAQ,KAAK,OAAQmL,EAAM,GAE5C1c,GAAQiD,GAASsO,EAAS3V,EAAG,IAAI,SAAS,EAG9C,GAAIoE,GAAO,CACT,IAAIE,IAAQtE,EAAG,QAAQ,aAAe+gB,GAAwBC,IAChDhhB,EAAI2V,EAAS1I,EAAQwS,EAAiBrb,GAAOyJ,EAAGwS,CAAC,EAC/DS,EAAMxc,GAAK,OAAS,EAKpBmc,EAAQK,EAAMxc,GAAK,KAAOA,GAAK,GAAK,EACpCrF,EAAM6hB,EAAMxc,GAAK,GAAKA,GAAK,KAAO,CACpC,CAKA,IAAI2c,GAAW,KAAMC,GAAY,KAC7B9d,GAAKS,GAAU,SAAUT,GAAI,CAC/B,IAAIyd,GAAMjE,GAAoB5c,EAAIyf,EAAiBrc,EAAE,EAErD,OADAyd,GAAI,KAAOrF,EAAcqF,GAAI,QAAUrF,EAClCoF,GAAWC,GAAKhT,EAAGwS,EAAG,EAAK,GAC5BQ,GAAI,KAAOR,GAAKQ,GAAI,MAAQhT,IAC9BoT,GAAW7d,GACX8d,GAAYL,IAEP,IALqC,EAM9C,EAAGJ,EAAOxhB,CAAG,EAETkiB,GAAO1c,GAAQyb,GAAU,GAE7B,GAAIgB,GAAW,CAEb,IAAIE,GAASvT,EAAIqT,GAAU,KAAOA,GAAU,MAAQrT,EAAGwT,GAAUD,IAAUN,EAC3E1d,GAAK6d,IAAYI,GAAU,EAAI,GAC/B5c,GAAS4c,GAAU,QAAU,SAC7BF,GAAQC,GAASF,GAAU,KAAOA,GAAU,KAC9C,KAAO,CAED,CAACJ,IAAQ1d,IAAMnE,GAAOmE,IAAMqd,IAAUrd,KAI1CqB,GAASrB,IAAM,EAAI,QAAUA,IAAMuS,EAAQ,KAAK,OAAS,SACtDiH,GAAoB5c,EAAIyf,EAAiBrc,IAAM0d,EAAM,EAAI,EAAE,EAAE,OAAStF,GAAgB6E,GAAMS,EAC7F,QAAU,SAGZ,IAAI3B,GAASK,GAAaxf,EAAIyN,GAAIR,EAAQ7J,GAAIqB,EAAM,EAAG,OAAQkR,EAAS8J,CAAe,EACvF0B,GAAQhC,GAAO,KACfe,GAAUG,EAAIlB,GAAO,IAAM,GAAKkB,GAAKlB,GAAO,OAAS,EAAI,CAC3D,CAEA,OAAA/b,GAAKM,GAAmBiS,EAAQ,KAAMvS,GAAI,CAAC,EACpC6c,GAAYhT,EAAQ7J,GAAIqB,GAAQyb,GAASrS,EAAIsT,EAAK,CAC3D,CAEA,SAASH,GAAehhB,EAAI2V,EAAS1I,EAAQwS,EAAiBrb,EAAOyJ,EAAGwS,EAAG,CAKzE,IAAIzY,EAAQ/D,GAAU,SAAUhF,GAAG,CACjC,IAAIyF,GAAOF,EAAMvF,EAAC,EAAGiiB,GAAMxc,GAAK,OAAS,EACzC,OAAOsc,GAAWpB,GAAaxf,EAAIyN,GAAIR,EAAQ6T,GAAMxc,GAAK,GAAKA,GAAK,KAAMwc,GAAM,SAAW,OAAO,EACnE,OAAQnL,EAAS8J,CAAe,EAAG5R,EAAGwS,EAAG,EAAI,CAC9E,EAAG,EAAGjc,EAAM,OAAS,CAAC,EAClBE,EAAOF,EAAMwD,CAAK,EAItB,GAAIA,EAAQ,EAAG,CACb,IAAIkZ,EAAMxc,EAAK,OAAS,EACpBtF,GAAQwgB,GAAaxf,EAAIyN,GAAIR,EAAQ6T,EAAMxc,EAAK,KAAOA,EAAK,GAAIwc,EAAM,QAAU,QAAQ,EACnE,OAAQnL,EAAS8J,CAAe,EACrDmB,GAAW5hB,GAAO6O,EAAGwS,EAAG,EAAI,GAAKrhB,GAAM,IAAMqhB,IAC7C/b,EAAOF,EAAMwD,EAAQ,CAAC,EAC5B,CACA,OAAOtD,CACT,CAEA,SAASyc,GAAsB/gB,EAAI2V,EAAS2L,EAAS7B,EAAiBrb,EAAOyJ,EAAGwS,EAAG,CAQjF,IAAI1B,EAAM6B,GAAkBxgB,EAAI2V,EAAS8J,EAAiBY,CAAC,EACvDI,EAAQ9B,EAAI,MACZ1f,EAAM0f,EAAI,IACV,KAAK,KAAKhJ,EAAQ,KAAK,OAAO1W,EAAM,CAAC,CAAC,GAAKA,IAE/C,QADIqF,GAAO,KAAMid,GAAc,KACtB1iB,GAAI,EAAGA,GAAIuF,EAAM,OAAQvF,KAAK,CACrC,IAAI6U,GAAItP,EAAMvF,EAAC,EACf,GAAI,EAAA6U,GAAE,MAAQzU,GAAOyU,GAAE,IAAM+M,GAC7B,KAAIK,GAAMpN,GAAE,OAAS,EACjB8N,GAAO5E,GAAoB5c,EAAIyf,EAAiBqB,GAAM,KAAK,IAAI7hB,EAAKyU,GAAE,EAAE,EAAI,EAAI,KAAK,IAAI+M,EAAO/M,GAAE,IAAI,CAAC,EAAE,MAGzG+N,GAAOD,GAAO3T,EAAIA,EAAI2T,GAAO,IAAMA,GAAO3T,GAC1C,CAACvJ,IAAQid,GAAcE,MACzBnd,GAAOoP,GACP6N,GAAcE,IAElB,CACA,OAAKnd,KAAQA,GAAOF,EAAMA,EAAM,OAAS,CAAC,GAEtCE,GAAK,KAAOmc,IAASnc,GAAO,CAAC,KAAMmc,EAAO,GAAInc,GAAK,GAAI,MAAOA,GAAK,KAAK,GACxEA,GAAK,GAAKrF,IAAOqF,GAAO,CAAC,KAAMA,GAAK,KAAM,GAAIrF,EAAK,MAAOqF,GAAK,KAAK,GACjEA,EACT,CAEA,IAAIod,GAEJ,SAASC,GAAWjS,EAAS,CAC3B,GAAIA,EAAQ,kBAAoB,KAAQ,OAAOA,EAAQ,iBACvD,GAAIgS,IAAe,KAAM,CACvBA,GAAcljB,EAAI,MAAO,KAAM,sBAAsB,EAGrD,QAASK,EAAI,EAAGA,EAAI,GAAI,EAAEA,EACxB6iB,GAAY,YAAY,SAAS,eAAe,GAAG,CAAC,EACpDA,GAAY,YAAYljB,EAAI,IAAI,CAAC,EAEnCkjB,GAAY,YAAY,SAAS,eAAe,GAAG,CAAC,CACtD,CACApjB,EAAqBoR,EAAQ,QAASgS,EAAW,EACjD,IAAI3U,EAAS2U,GAAY,aAAe,GACxC,OAAI3U,EAAS,IAAK2C,EAAQ,iBAAmB3C,GAC7C5O,EAAeuR,EAAQ,OAAO,EACvB3C,GAAU,CACnB,CAGA,SAAS+Q,GAAUpO,EAAS,CAC1B,GAAIA,EAAQ,iBAAmB,KAAQ,OAAOA,EAAQ,gBACtD,IAAIkS,EAASpjB,EAAI,OAAQ,YAAY,EACjCqjB,EAAMrjB,EAAI,MAAO,CAACojB,CAAM,EAAG,sBAAsB,EACrDtjB,EAAqBoR,EAAQ,QAASmS,CAAG,EACzC,IAAI1F,EAAOyF,EAAO,sBAAsB,EAAGrG,GAASY,EAAK,MAAQA,EAAK,MAAQ,GAC9E,OAAIZ,EAAQ,IAAK7L,EAAQ,gBAAkB6L,GACpCA,GAAS,EAClB,CAIA,SAASyB,GAAchd,EAAI,CAGzB,QAFI,EAAIA,EAAG,QAASof,EAAO,CAAC,EAAG7D,EAAQ,CAAC,EACpCuG,EAAa,EAAE,QAAQ,WAClB7gB,EAAI,EAAE,QAAQ,WAAYpC,EAAI,EAAGoC,EAAGA,EAAIA,EAAE,YAAa,EAAEpC,EAAG,CACnE,IAAIic,EAAK9a,EAAG,QAAQ,YAAYnB,CAAC,EAAE,UACnCugB,EAAKtE,CAAE,EAAI7Z,EAAE,WAAaA,EAAE,WAAa6gB,EACzCvG,EAAMT,CAAE,EAAI7Z,EAAE,WAChB,CACA,MAAO,CAAC,SAAU8gB,GAAqB,CAAC,EAChC,iBAAkB,EAAE,QAAQ,YAC5B,WAAY3C,EACZ,YAAa7D,EACb,aAAc,EAAE,QAAQ,WAAW,CAC7C,CAKA,SAASwG,GAAqBrS,EAAS,CACrC,OAAOA,EAAQ,SAAS,sBAAsB,EAAE,KAAOA,EAAQ,MAAM,sBAAsB,EAAE,IAC/F,CAKA,SAASsG,GAAehW,EAAI,CAC1B,IAAIgiB,EAAKL,GAAW3hB,EAAG,OAAO,EAAGoc,EAAWpc,EAAG,QAAQ,aACnDiiB,EAAU7F,GAAY,KAAK,IAAI,EAAGpc,EAAG,QAAQ,SAAS,YAAc8d,GAAU9d,EAAG,OAAO,EAAI,CAAC,EACjG,OAAO,SAAUsH,EAAM,CACrB,GAAIkO,GAAaxV,EAAG,IAAKsH,CAAI,EAAK,MAAO,GAEzC,IAAI4a,EAAgB,EACpB,GAAI5a,EAAK,QAAW,QAASzI,EAAI,EAAGA,EAAIyI,EAAK,QAAQ,OAAQzI,IACvDyI,EAAK,QAAQzI,CAAC,EAAE,SAAUqjB,GAAiB5a,EAAK,QAAQzI,CAAC,EAAE,QAGjE,OAAIud,EACO8F,GAAiB,KAAK,KAAK5a,EAAK,KAAK,OAAS2a,CAAO,GAAK,GAAKD,EAE/DE,EAAgBF,CAC7B,CACF,CAEA,SAASG,GAAoBniB,EAAI,CAC/B,IAAIR,EAAMQ,EAAG,IAAKoiB,EAAMpM,GAAehW,CAAE,EACzCR,EAAI,KAAK,SAAU8H,EAAM,CACvB,IAAI4O,EAAYkM,EAAI9a,CAAI,EACpB4O,GAAa5O,EAAK,QAAUwF,GAAiBxF,EAAM4O,CAAS,CAClE,CAAC,CACH,CAOA,SAASmM,GAAariB,EAAI5B,EAAGkkB,EAASC,EAAS,CAC7C,IAAI7S,EAAU1P,EAAG,QACjB,GAAI,CAACsiB,GAAW5Z,GAAStK,CAAC,EAAE,aAAa,gBAAgB,GAAK,OAAU,OAAO,KAE/E,IAAIyP,EAAGwS,EAAGmC,EAAQ9S,EAAQ,UAAU,sBAAsB,EAE1D,GAAI,CAAE7B,EAAIzP,EAAE,QAAUokB,EAAM,KAAMnC,EAAIjiB,EAAE,QAAUokB,EAAM,GAAK,MACjD,CAAE,OAAO,IAAK,CAC1B,IAAIrD,EAASiB,GAAWpgB,EAAI6N,EAAGwS,CAAC,EAAG/Y,EACnC,GAAIib,GAAWpD,EAAO,KAAO,IAAM7X,EAAOkF,GAAQxM,EAAG,IAAKmf,EAAO,IAAI,EAAE,MAAM,QAAUA,EAAO,GAAI,CAChG,IAAIsD,GAAU7hB,GAAY0G,EAAMA,EAAK,OAAQtH,EAAG,QAAQ,OAAO,EAAIsH,EAAK,OACxE6X,EAAS1R,GAAI0R,EAAO,KAAM,KAAK,IAAI,EAAG,KAAK,OAAOtR,EAAIgO,GAAS7b,EAAG,OAAO,EAAE,MAAQ8d,GAAU9d,EAAG,OAAO,CAAC,EAAIyiB,EAAO,CAAC,CACtH,CACA,OAAOtD,CACT,CAIA,SAASpC,GAAc/c,EAAIiB,EAAG,CAG5B,GAFIA,GAAKjB,EAAG,QAAQ,SACpBiB,GAAKjB,EAAG,QAAQ,SACZiB,EAAI,GAAK,OAAO,KAEpB,QADIgY,EAAOjZ,EAAG,QAAQ,KACbnB,EAAI,EAAGA,EAAIoa,EAAK,OAAQpa,IAE/B,GADAoC,GAAKgY,EAAKpa,CAAC,EAAE,KACToC,EAAI,EAAK,OAAOpC,CAExB,CAQA,SAAS6jB,GAAU1iB,EAAI+D,EAAMC,EAAI2e,EAAS,CACpC5e,GAAQ,OAAQA,EAAO/D,EAAG,IAAI,OAC9BgE,GAAM,OAAQA,EAAKhE,EAAG,IAAI,MAAQA,EAAG,IAAI,MACxC2iB,IAAWA,EAAU,GAE1B,IAAIjT,EAAU1P,EAAG,QAOjB,GANI2iB,GAAW3e,EAAK0L,EAAQ,SACvBA,EAAQ,mBAAqB,MAAQA,EAAQ,kBAAoB3L,KAClE2L,EAAQ,kBAAoB3L,GAEhC/D,EAAG,MAAM,YAAc,GAEnB+D,GAAQ2L,EAAQ,OACdyB,IAAqBiE,GAAapV,EAAG,IAAK+D,CAAI,EAAI2L,EAAQ,QAC1DkT,GAAU5iB,CAAE,UACPgE,GAAM0L,EAAQ,SACnByB,IAAqBoE,GAAgBvV,EAAG,IAAKgE,EAAK2e,CAAO,EAAIjT,EAAQ,SACvEkT,GAAU5iB,CAAE,GAEZ0P,EAAQ,UAAYiT,EACpBjT,EAAQ,QAAUiT,WAEX5e,GAAQ2L,EAAQ,UAAY1L,GAAM0L,EAAQ,OACnDkT,GAAU5iB,CAAE,UACH+D,GAAQ2L,EAAQ,SAAU,CACnC,IAAImT,EAAMC,GAAiB9iB,EAAIgE,EAAIA,EAAK2e,EAAS,CAAC,EAC9CE,GACFnT,EAAQ,KAAOA,EAAQ,KAAK,MAAMmT,EAAI,KAAK,EAC3CnT,EAAQ,SAAWmT,EAAI,MACvBnT,EAAQ,QAAUiT,GAElBC,GAAU5iB,CAAE,CAEhB,SAAWgE,GAAM0L,EAAQ,OAAQ,CAC/B,IAAIqT,EAAQD,GAAiB9iB,EAAI+D,EAAMA,EAAM,EAAE,EAC3Cgf,GACFrT,EAAQ,KAAOA,EAAQ,KAAK,MAAM,EAAGqT,EAAM,KAAK,EAChDrT,EAAQ,OAASqT,EAAM,OAEvBH,GAAU5iB,CAAE,CAEhB,KAAO,CACL,IAAIgjB,EAASF,GAAiB9iB,EAAI+D,EAAMA,EAAM,EAAE,EAC5Ckf,EAASH,GAAiB9iB,EAAIgE,EAAIA,EAAK2e,EAAS,CAAC,EACjDK,GAAUC,GACZvT,EAAQ,KAAOA,EAAQ,KAAK,MAAM,EAAGsT,EAAO,KAAK,EAC9C,OAAOjK,GAAe/Y,EAAIgjB,EAAO,MAAOC,EAAO,KAAK,CAAC,EACrD,OAAOvT,EAAQ,KAAK,MAAMuT,EAAO,KAAK,CAAC,EAC1CvT,EAAQ,QAAUiT,GAElBC,GAAU5iB,CAAE,CAEhB,CAEA,IAAIwa,EAAM9K,EAAQ,iBACd8K,IACExW,EAAKwW,EAAI,MACTA,EAAI,OAASmI,EACR5e,EAAOyW,EAAI,MAAQA,EAAI,OAC5B9K,EAAQ,iBAAmB,MAEnC,CAIA,SAASwT,GAAcljB,EAAIsH,EAAMzB,EAAM,CACrC7F,EAAG,MAAM,YAAc,GACvB,IAAI0P,EAAU1P,EAAG,QAASwa,EAAMxa,EAAG,QAAQ,iBAI3C,GAHIwa,GAAOlT,GAAQkT,EAAI,OAASlT,EAAOkT,EAAI,MAAQA,EAAI,OACnD9K,EAAQ,iBAAmB,MAE3B,EAAApI,EAAOoI,EAAQ,UAAYpI,GAAQoI,EAAQ,QAC/C,KAAI+G,EAAW/G,EAAQ,KAAKqN,GAAc/c,EAAIsH,CAAI,CAAC,EACnD,GAAImP,EAAS,MAAQ,KACrB,KAAInU,EAAMmU,EAAS,UAAYA,EAAS,QAAU,CAAC,GAC/ClV,GAAQe,EAAKuD,CAAI,GAAK,IAAMvD,EAAI,KAAKuD,CAAI,GAC/C,CAGA,SAAS+c,GAAU5iB,EAAI,CACrBA,EAAG,QAAQ,SAAWA,EAAG,QAAQ,OAASA,EAAG,IAAI,MACjDA,EAAG,QAAQ,KAAO,CAAC,EACnBA,EAAG,QAAQ,WAAa,CAC1B,CAEA,SAAS8iB,GAAiB9iB,EAAImjB,EAAMC,EAAMxf,EAAK,CAC7C,IAAIgE,EAAQmV,GAAc/c,EAAImjB,CAAI,EAAGnW,EAAMiM,EAAOjZ,EAAG,QAAQ,KAC7D,GAAI,CAACmR,IAAqBiS,GAAQpjB,EAAG,IAAI,MAAQA,EAAG,IAAI,KACpD,MAAO,CAAC,MAAO4H,EAAO,MAAOwb,CAAI,EAErC,QADIniB,EAAIjB,EAAG,QAAQ,SACVnB,EAAI,EAAGA,EAAI+I,EAAO/I,IACvBoC,GAAKgY,EAAKpa,CAAC,EAAE,KACjB,GAAIoC,GAAKkiB,EAAM,CACb,GAAIvf,EAAM,EAAG,CACX,GAAIgE,GAASqR,EAAK,OAAS,EAAK,OAAO,KACvCjM,EAAQ/L,EAAIgY,EAAKrR,CAAK,EAAE,KAAQub,EAChCvb,GACF,MACEoF,EAAO/L,EAAIkiB,EAEbA,GAAQnW,EAAMoW,GAAQpW,CACxB,CACA,KAAOoI,GAAapV,EAAG,IAAKojB,CAAI,GAAKA,GAAM,CACzC,GAAIxb,IAAUhE,EAAM,EAAI,EAAIqV,EAAK,OAAS,GAAM,OAAO,KACvDmK,GAAQxf,EAAMqV,EAAKrR,GAAShE,EAAM,EAAI,EAAI,EAAE,EAAE,KAC9CgE,GAAShE,CACX,CACA,MAAO,CAAC,MAAOgE,EAAO,MAAOwb,CAAI,CACnC,CAIA,SAASC,GAAWrjB,EAAI+D,EAAMC,EAAI,CAChC,IAAI0L,EAAU1P,EAAG,QAASiZ,EAAOvJ,EAAQ,KACrCuJ,EAAK,QAAU,GAAKlV,GAAQ2L,EAAQ,QAAU1L,GAAM0L,EAAQ,UAC9DA,EAAQ,KAAOqJ,GAAe/Y,EAAI+D,EAAMC,CAAE,EAC1C0L,EAAQ,SAAW3L,IAEf2L,EAAQ,SAAW3L,EACnB2L,EAAQ,KAAOqJ,GAAe/Y,EAAI+D,EAAM2L,EAAQ,QAAQ,EAAE,OAAOA,EAAQ,IAAI,EACxEA,EAAQ,SAAW3L,IACxB2L,EAAQ,KAAOA,EAAQ,KAAK,MAAMqN,GAAc/c,EAAI+D,CAAI,CAAC,GAC7D2L,EAAQ,SAAW3L,EACf2L,EAAQ,OAAS1L,EACjB0L,EAAQ,KAAOA,EAAQ,KAAK,OAAOqJ,GAAe/Y,EAAI0P,EAAQ,OAAQ1L,CAAE,CAAC,EACpE0L,EAAQ,OAAS1L,IACtB0L,EAAQ,KAAOA,EAAQ,KAAK,MAAM,EAAGqN,GAAc/c,EAAIgE,CAAE,CAAC,IAEhE0L,EAAQ,OAAS1L,CACnB,CAIA,SAASsf,GAAetjB,EAAI,CAE1B,QADIiZ,EAAOjZ,EAAG,QAAQ,KAAMujB,EAAQ,EAC3B1kB,EAAI,EAAGA,EAAIoa,EAAK,OAAQpa,IAAK,CACpC,IAAI4X,EAAWwC,EAAKpa,CAAC,EACjB,CAAC4X,EAAS,SAAW,CAACA,EAAS,MAAQA,EAAS,UAAY,EAAE8M,CACpE,CACA,OAAOA,CACT,CAEA,SAASC,GAAgBxjB,EAAI,CAC3BA,EAAG,QAAQ,MAAM,cAAcA,EAAG,QAAQ,MAAM,iBAAiB,CAAC,CACpE,CAEA,SAASyjB,GAAiBzjB,EAAI0jB,EAAS,CAChCA,IAAY,SAASA,EAAU,IAEpC,IAAIlkB,EAAMQ,EAAG,IAAKwJ,EAAS,CAAC,EACxBma,EAAcna,EAAO,QAAU,SAAS,uBAAuB,EAC/Doa,EAAcpa,EAAO,UAAY,SAAS,uBAAuB,EAEjEqa,EAAe7jB,EAAG,QAAQ,cAC1B6jB,IAAgBH,EAAU,IAC9B,QAAS7kB,EAAI,EAAGA,EAAIW,EAAI,IAAI,OAAO,OAAQX,IACzC,GAAI,GAAC6kB,GAAW7kB,GAAKW,EAAI,IAAI,WAC7B,KAAIT,EAAQS,EAAI,IAAI,OAAOX,CAAC,EAC5B,GAAI,EAAAE,EAAM,KAAK,EAAE,MAAQiB,EAAG,QAAQ,QAAUjB,EAAM,GAAG,EAAE,KAAOiB,EAAG,QAAQ,UAC3E,KAAIyY,EAAY1Z,EAAM,MAAM,EAC5B,GAAI8kB,EAAc,CAChB,IAAIC,GAAOD,EAAa7jB,EAAIjB,CAAK,EAC7B+kB,IAAQC,GAAoB/jB,EAAI8jB,GAAMH,CAAW,CACvD,MAAWlL,GAAazY,EAAG,QAAQ,0BACjC+jB,GAAoB/jB,EAAIjB,EAAM,KAAM4kB,CAAW,EAE5ClL,GACDuL,GAAmBhkB,EAAIjB,EAAO6kB,CAAW,GAE/C,OAAOpa,CACT,CAGA,SAASua,GAAoB/jB,EAAI8jB,EAAMxT,EAAQ,CAC7C,IAAItO,EAAMwd,GAAaxf,EAAI8jB,EAAM,MAAO,KAAM,KAAM,CAAC9jB,EAAG,QAAQ,yBAAyB,EAErFikB,EAAS3T,EAAO,YAAY9R,EAAI,MAAO,OAAU,mBAAmB,CAAC,EAKzE,GAJAylB,EAAO,MAAM,KAAOjiB,EAAI,KAAO,KAC/BiiB,EAAO,MAAM,IAAMjiB,EAAI,IAAM,KAC7BiiB,EAAO,MAAM,OAAS,KAAK,IAAI,EAAGjiB,EAAI,OAASA,EAAI,GAAG,EAAIhC,EAAG,QAAQ,aAAe,KAEhF,oBAAoB,KAAKA,EAAG,kBAAkB,EAAE,SAAS,EAAG,CAC9D,IAAIkkB,EAAU3E,GAAWvf,EAAI8jB,EAAM,MAAO,KAAM,IAAI,EAChDvI,EAAQ2I,EAAQ,MAAQA,EAAQ,KACpCD,EAAO,MAAM,OAAS1I,EAAQ,EAAIA,EAAQvb,EAAG,iBAAiB,GAAK,IACrE,CAEA,GAAIgC,EAAI,MAAO,CAEb,IAAImiB,EAAc7T,EAAO,YAAY9R,EAAI,MAAO,OAAU,8CAA8C,CAAC,EACzG2lB,EAAY,MAAM,QAAU,GAC5BA,EAAY,MAAM,KAAOniB,EAAI,MAAM,KAAO,KAC1CmiB,EAAY,MAAM,IAAMniB,EAAI,MAAM,IAAM,KACxCmiB,EAAY,MAAM,QAAUniB,EAAI,MAAM,OAASA,EAAI,MAAM,KAAO,IAAM,IACxE,CACF,CAEA,SAASoiB,GAAUxkB,EAAGC,EAAG,CAAE,OAAOD,EAAE,IAAMC,EAAE,KAAOD,EAAE,KAAOC,EAAE,IAAK,CAGnE,SAASmkB,GAAmBhkB,EAAIjB,EAAOuR,EAAQ,CAC7C,IAAIZ,EAAU1P,EAAG,QAASR,EAAMQ,EAAG,IAC/BqkB,EAAW,SAAS,uBAAuB,EAC3CC,EAAUzI,GAAS7b,EAAG,OAAO,EAAGukB,EAAWD,EAAQ,KACnDE,EAAY,KAAK,IAAI9U,EAAQ,WAAYsM,GAAahc,CAAE,EAAI0P,EAAQ,MAAM,UAAU,EAAI4U,EAAQ,MAChGG,EAASjlB,EAAI,WAAa,MAE9B,SAASklB,GAAItF,GAAMnB,GAAK1C,GAAOoJ,GAAQ,CACjC1G,GAAM,IAAKA,GAAM,GACrBA,GAAM,KAAK,MAAMA,EAAG,EACpB0G,GAAS,KAAK,MAAMA,EAAM,EAC1BN,EAAS,YAAY7lB,EAAI,MAAO,KAAM,sBAAwB,6BAA+B4gB,GAAO;AAAA,oCAA4CnB,GAAM,eAAiB1C,IAAgBiJ,EAAYpF,IAAgB;AAAA,wCAAgDuF,GAAS1G,IAAO,IAAK,CAAC,CAC3R,CAEA,SAAS2G,GAAYtd,GAAMud,GAASC,GAAO,CACzC,IAAInP,GAAUnJ,GAAQhN,EAAK8H,EAAI,EAC3Byd,GAAUpP,GAAQ,KAAK,OACvB3W,GAAOC,GACX,SAASkgB,GAAO/b,GAAIuZ,GAAM,CACxB,OAAO4C,GAAWvf,EAAIyN,GAAInG,GAAMlE,EAAE,EAAG,MAAOuS,GAASgH,EAAI,CAC3D,CAEA,SAASqI,GAAMhjB,GAAK4B,GAAKqhB,GAAM,CAC7B,IAAIC,GAASxE,GAAsB1gB,EAAI2V,GAAS,KAAM3T,EAAG,EACrDrB,GAAQiD,IAAO,QAAWqhB,IAAQ,SAAW,OAAS,QACtD7hB,GAAK6hB,IAAQ,QAAUC,GAAO,MAAQA,GAAO,KAAO,KAAK,KAAKvP,GAAQ,KAAK,OAAOuP,GAAO,IAAM,CAAC,CAAC,EAAI,EAAI,GAC7G,OAAO/F,GAAO/b,GAAIzC,EAAI,EAAEA,EAAI,CAC9B,CAEA,IAAIyD,GAAQiD,GAASsO,GAASnW,EAAI,SAAS,EAC3C,OAAA2E,GAAoBC,GAAOygB,IAAW,EAAGC,IAAgBC,GAAiB,SAAUhhB,GAAMC,GAAIJ,GAAK/E,GAAG,CACpG,IAAIiiB,GAAMld,IAAO,MACbuhB,GAAUhG,GAAOpb,GAAM+c,GAAM,OAAS,OAAO,EAC7CsE,GAAQjG,GAAOnb,GAAK,EAAG8c,GAAM,QAAU,MAAM,EAE7CuE,GAAYR,IAAW,MAAQ9gB,IAAQ,EAAGuhB,GAAUR,IAAS,MAAQ9gB,IAAM+gB,GAC3EnS,GAAQ/T,IAAK,EAAGqP,GAAO,CAAC9J,IAASvF,IAAKuF,GAAM,OAAS,EACzD,GAAIghB,GAAM,IAAMD,GAAQ,KAAO,EAAG,CAChC,IAAII,IAAYd,EAASY,GAAYC,KAAY1S,GAC7C4S,IAAaf,EAASa,GAAUD,KAAcnX,GAC9CkR,GAAOmG,GAAWhB,GAAYzD,GAAMqE,GAAUC,IAAO,KACrDzF,GAAQ6F,GAAYhB,GAAa1D,GAAMsE,GAAQD,IAAS,MAC5DT,GAAItF,GAAM+F,GAAQ,IAAKxF,GAAQP,GAAM+F,GAAQ,MAAM,CACrD,KAAO,CACL,IAAIM,GAASC,GAAUC,GAASC,GAC5B9E,IACF2E,GAAUhB,GAAUY,IAAazS,GAAQ2R,EAAWY,GAAQ,KAC5DO,GAAWjB,EAASD,EAAYQ,GAAMjhB,GAAMH,GAAK,QAAQ,EACzD+hB,GAAUlB,EAASF,EAAWS,GAAMhhB,GAAIJ,GAAK,OAAO,EACpDgiB,GAAWnB,GAAUa,IAAWpX,GAAOsW,EAAYY,GAAM,QAEzDK,GAAWhB,EAAoBO,GAAMjhB,GAAMH,GAAK,QAAQ,EAApC2gB,EACpBmB,GAAW,CAACjB,GAAUY,IAAazS,GAAQ4R,EAAYW,GAAQ,MAC/DQ,GAAU,CAAClB,GAAUa,IAAWpX,GAAOqW,EAAWa,GAAM,KACxDQ,GAAYnB,EAAqBO,GAAMhhB,GAAIJ,GAAK,OAAO,EAAlC4gB,GAEvBE,GAAIe,GAASN,GAAQ,IAAKO,GAAWD,GAASN,GAAQ,MAAM,EACxDA,GAAQ,OAASC,GAAM,KAAOV,GAAIH,EAAUY,GAAQ,OAAQ,KAAMC,GAAM,GAAG,EAC/EV,GAAIiB,GAASP,GAAM,IAAKQ,GAAWD,GAASP,GAAM,MAAM,CAC1D,EAEI,CAACpmB,IAASolB,GAAUe,GAASnmB,EAAK,EAAI,KAAKA,GAAQmmB,IACnDf,GAAUgB,GAAOpmB,EAAK,EAAI,IAAKA,GAAQomB,KACvC,CAACnmB,IAAOmlB,GAAUe,GAASlmB,EAAG,EAAI,KAAKA,GAAMkmB,IAC7Cf,GAAUgB,GAAOnmB,EAAG,EAAI,IAAKA,GAAMmmB,GACzC,CAAC,EACM,CAAC,MAAOpmB,GAAO,IAAKC,EAAG,CAChC,CAEA,IAAI4mB,GAAQ9mB,EAAM,KAAK,EAAG+mB,GAAM/mB,EAAM,GAAG,EACzC,GAAI8mB,GAAM,MAAQC,GAAI,KACpBlB,GAAYiB,GAAM,KAAMA,GAAM,GAAIC,GAAI,EAAE,MACnC,CACL,IAAIC,GAAWvZ,GAAQhN,EAAKqmB,GAAM,IAAI,EAAGG,GAASxZ,GAAQhN,EAAKsmB,GAAI,IAAI,EACnEG,GAAclR,GAAWgR,EAAQ,GAAKhR,GAAWiR,EAAM,EACvDE,GAAUtB,GAAYiB,GAAM,KAAMA,GAAM,GAAII,GAAcF,GAAS,KAAK,OAAS,EAAI,IAAI,EAAE,IAC3FI,GAAavB,GAAYkB,GAAI,KAAMG,GAAc,EAAI,KAAMH,GAAI,EAAE,EAAE,MACnEG,KACEC,GAAQ,IAAMC,GAAW,IAAM,GACjCzB,GAAIwB,GAAQ,MAAOA,GAAQ,IAAK,KAAMA,GAAQ,MAAM,EACpDxB,GAAIH,EAAU4B,GAAW,IAAKA,GAAW,KAAMA,GAAW,MAAM,GAEhEzB,GAAIwB,GAAQ,MAAOA,GAAQ,IAAKC,GAAW,KAAOD,GAAQ,MAAOA,GAAQ,MAAM,GAG/EA,GAAQ,OAASC,GAAW,KAC5BzB,GAAIH,EAAU2B,GAAQ,OAAQ,KAAMC,GAAW,GAAG,CACxD,CAEA7V,EAAO,YAAY+T,CAAQ,CAC7B,CAGA,SAAS+B,GAAapmB,EAAI,CACxB,GAAKA,EAAG,MAAM,QACd,KAAI0P,EAAU1P,EAAG,QACjB,cAAc0P,EAAQ,OAAO,EAC7B,IAAIlI,EAAK,GACTkI,EAAQ,UAAU,MAAM,WAAa,GACjC1P,EAAG,QAAQ,gBAAkB,EAC7B0P,EAAQ,QAAU,YAAY,UAAY,CACrC1P,EAAG,SAAS,GAAKqmB,GAAOrmB,CAAE,EAC/B0P,EAAQ,UAAU,MAAM,YAAclI,EAAK,CAACA,GAAM,GAAK,QACzD,EAAGxH,EAAG,QAAQ,eAAe,EACtBA,EAAG,QAAQ,gBAAkB,IAClC0P,EAAQ,UAAU,MAAM,WAAa,UAC3C,CAEA,SAAS4W,GAAYtmB,EAAI,CAClBA,EAAG,SAAS,IACfA,EAAG,QAAQ,MAAM,MAAM,EAClBA,EAAG,MAAM,SAAWumB,GAAQvmB,CAAE,EAEvC,CAEA,SAASwmB,GAAexmB,EAAI,CAC1BA,EAAG,MAAM,kBAAoB,GAC7B,WAAW,UAAY,CAAMA,EAAG,MAAM,oBACpCA,EAAG,MAAM,kBAAoB,GACzBA,EAAG,MAAM,SAAWqmB,GAAOrmB,CAAE,EACjC,EAAG,GAAG,CACV,CAEA,SAASumB,GAAQvmB,EAAI5B,EAAG,CAClB4B,EAAG,MAAM,mBAAqB,CAACA,EAAG,MAAM,eAAgBA,EAAG,MAAM,kBAAoB,IAErFA,EAAG,QAAQ,UAAY,aACtBA,EAAG,MAAM,UACZ6H,GAAO7H,EAAI,QAASA,EAAI5B,CAAC,EACzB4B,EAAG,MAAM,QAAU,GACnBN,GAASM,EAAG,QAAQ,QAAS,oBAAoB,EAI7C,CAACA,EAAG,OAASA,EAAG,QAAQ,mBAAqBA,EAAG,IAAI,MACtDA,EAAG,QAAQ,MAAM,MAAM,EACnBrD,GAAU,WAAW,UAAY,CAAE,OAAOqD,EAAG,QAAQ,MAAM,MAAM,EAAI,CAAG,EAAG,EAAE,GAEnFA,EAAG,QAAQ,MAAM,cAAc,GAEjComB,GAAapmB,CAAE,EACjB,CACA,SAASqmB,GAAOrmB,EAAI5B,EAAG,CACjB4B,EAAG,MAAM,oBAETA,EAAG,MAAM,UACX6H,GAAO7H,EAAI,OAAQA,EAAI5B,CAAC,EACxB4B,EAAG,MAAM,QAAU,GACnBlC,EAAQkC,EAAG,QAAQ,QAAS,oBAAoB,GAElD,cAAcA,EAAG,QAAQ,OAAO,EAChC,WAAW,UAAY,CAAOA,EAAG,MAAM,UAAWA,EAAG,QAAQ,MAAQ,GAAS,EAAG,GAAG,EACtF,CAIA,SAASymB,GAAwBzmB,EAAI,CAMnC,QALI0P,EAAU1P,EAAG,QACb0mB,EAAahX,EAAQ,QAAQ,UAC7BiX,EAAU,KAAK,IAAI,EAAGjX,EAAQ,SAAS,sBAAsB,EAAE,GAAG,EAClEkX,EAAYlX,EAAQ,QAAQ,sBAAsB,EAAE,IACpDmX,EAAa,EACRhoB,EAAI,EAAGA,EAAI6Q,EAAQ,KAAK,OAAQ7Q,IAAK,CAC5C,IAAI6F,EAAMgL,EAAQ,KAAK7Q,CAAC,EAAGud,EAAWpc,EAAG,QAAQ,aAC7C+M,EAAU,OAASwO,GAAQ,EAC/B,GAAI,CAAA7W,EAAI,OAER,IADAkiB,GAAaliB,EAAI,KAAK,OAClBjI,GAAMC,EAAa,EAAG,CACxB,IAAIwhB,GAAMxZ,EAAI,KAAK,UAAYA,EAAI,KAAK,aACxCqI,EAASmR,GAAMwI,EACfA,EAAaxI,EACf,KAAO,CACL,IAAI2C,GAAMnc,EAAI,KAAK,sBAAsB,EACzCqI,EAAS8T,GAAI,OAASA,GAAI,IAGtB,CAACzE,GAAY1X,EAAI,KAAK,aACtB6W,GAAQ7W,EAAI,KAAK,WAAW,sBAAsB,EAAE,MAAQmc,GAAI,KAAO,EAC7E,CACA,IAAI7T,GAAOtI,EAAI,KAAK,OAASqI,EAC7B,IAAIC,GAAO,MAAQA,GAAO,SACpB4Z,EAAYD,IAAWE,GAAc7Z,IACzCF,GAAiBpI,EAAI,KAAMqI,CAAM,EACjC+Z,GAAmBpiB,EAAI,IAAI,EACvBA,EAAI,MAAQ,QAAS4B,GAAI,EAAGA,GAAI5B,EAAI,KAAK,OAAQ4B,KACjDwgB,GAAmBpiB,EAAI,KAAK4B,EAAC,CAAC,EAEpC,GAAIiV,GAAQvb,EAAG,QAAQ,WAAY,CACjC,IAAI+mB,GAAU,KAAK,KAAKxL,GAAQuC,GAAU9d,EAAG,OAAO,CAAC,EACjD+mB,GAAU/mB,EAAG,QAAQ,gBACvBA,EAAG,QAAQ,cAAgB+mB,GAC3B/mB,EAAG,QAAQ,QAAU0E,EAAI,KACzB1E,EAAG,QAAQ,eAAiB,GAEhC,EACF,CACI,KAAK,IAAI6mB,CAAU,EAAI,IAAKnX,EAAQ,SAAS,WAAamX,EAChE,CAIA,SAASC,GAAmBxf,EAAM,CAChC,GAAIA,EAAK,QAAW,QAASzI,EAAI,EAAGA,EAAIyI,EAAK,QAAQ,OAAQ,EAAEzI,EAAG,CAChE,IAAImoB,EAAI1f,EAAK,QAAQzI,CAAC,EAAGN,EAASyoB,EAAE,KAAK,WACrCzoB,IAAUyoB,EAAE,OAASzoB,EAAO,aAClC,CACF,CAKA,SAAS0oB,GAAavX,EAASlQ,EAAK0nB,EAAU,CAC5C,IAAIjJ,EAAMiJ,GAAYA,EAAS,KAAO,KAAO,KAAK,IAAI,EAAGA,EAAS,GAAG,EAAIxX,EAAQ,SAAS,UAC1FuO,EAAM,KAAK,MAAMA,EAAMtC,GAAWjM,CAAO,CAAC,EAC1C,IAAIiV,EAASuC,GAAYA,EAAS,QAAU,KAAOA,EAAS,OAASjJ,EAAMvO,EAAQ,QAAQ,aAEvF3L,EAAOoJ,GAAa3N,EAAKye,CAAG,EAAGja,EAAKmJ,GAAa3N,EAAKmlB,CAAM,EAGhE,GAAIuC,GAAYA,EAAS,OAAQ,CAC/B,IAAIC,EAAaD,EAAS,OAAO,KAAK,KAAME,EAAWF,EAAS,OAAO,GAAG,KACtEC,EAAapjB,GACfA,EAAOojB,EACPnjB,EAAKmJ,GAAa3N,EAAKkW,GAAalJ,GAAQhN,EAAK2nB,CAAU,CAAC,EAAIzX,EAAQ,QAAQ,YAAY,GACnF,KAAK,IAAI0X,EAAU5nB,EAAI,SAAS,CAAC,GAAKwE,IAC/CD,EAAOoJ,GAAa3N,EAAKkW,GAAalJ,GAAQhN,EAAK4nB,CAAQ,CAAC,EAAI1X,EAAQ,QAAQ,YAAY,EAC5F1L,EAAKojB,EAET,CACA,MAAO,CAAC,KAAMrjB,EAAM,GAAI,KAAK,IAAIC,EAAID,EAAO,CAAC,CAAC,CAChD,CAMA,SAASsjB,GAAkBrnB,EAAImc,EAAM,CACnC,GAAI,CAAApU,GAAe/H,EAAI,sBAAsB,EAE7C,KAAI0P,EAAU1P,EAAG,QAAS6gB,EAAMnR,EAAQ,MAAM,sBAAsB,EAAG4X,EAAW,KAC9E9nB,EAAMkQ,EAAQ,QAAQ,cAG1B,GAFIyM,EAAK,IAAM0E,EAAI,IAAM,EAAKyG,EAAW,GAChCnL,EAAK,OAAS0E,EAAI,KAAOrhB,EAAI,YAAY,aAAeA,EAAI,gBAAgB,gBAAiB8nB,EAAW,IAC7GA,GAAY,MAAQ,CAACpqB,EAAS,CAChC,IAAIqqB,EAAa/oB,EAAI,MAAO,SAAU,KAAO;AAAA,iCAAyD2d,EAAK,IAAMzM,EAAQ,WAAaiM,GAAW3b,EAAG,OAAO,GAAK;AAAA,oCAA4Cmc,EAAK,OAASA,EAAK,IAAMJ,GAAU/b,CAAE,EAAI0P,EAAQ,WAAa;AAAA,iCAA0CyM,EAAK,KAAQ,cAAiB,KAAK,IAAI,EAAGA,EAAK,MAAQA,EAAK,IAAI,EAAK,KAAM,EAC/Xnc,EAAG,QAAQ,UAAU,YAAYunB,CAAU,EAC3CA,EAAW,eAAeD,CAAQ,EAClCtnB,EAAG,QAAQ,UAAU,YAAYunB,CAAU,CAC7C,EACF,CAKA,SAASC,GAAkBxnB,EAAIgC,EAAK/C,EAAKwoB,EAAQ,CAC3CA,GAAU,OAAQA,EAAS,GAC/B,IAAItL,EACA,CAACnc,EAAG,QAAQ,cAAgBgC,GAAO/C,IAIrCA,EAAM+C,EAAI,QAAU,SAAWyL,GAAIzL,EAAI,KAAMA,EAAI,GAAK,EAAG,QAAQ,EAAIA,EACrEA,EAAMA,EAAI,GAAKyL,GAAIzL,EAAI,KAAMA,EAAI,QAAU,SAAWA,EAAI,GAAK,EAAIA,EAAI,GAAI,OAAO,EAAIA,GAExF,QAAS0lB,EAAQ,EAAGA,EAAQ,EAAGA,IAAS,CACtC,IAAIC,EAAU,GACVxI,EAASK,GAAaxf,EAAIgC,CAAG,EAC7B4lB,EAAY,CAAC3oB,GAAOA,GAAO+C,EAAMmd,EAASK,GAAaxf,EAAIf,CAAG,EAClEkd,EAAO,CAAC,KAAM,KAAK,IAAIgD,EAAO,KAAMyI,EAAU,IAAI,EAC1C,IAAK,KAAK,IAAIzI,EAAO,IAAKyI,EAAU,GAAG,EAAIH,EAC3C,MAAO,KAAK,IAAItI,EAAO,KAAMyI,EAAU,IAAI,EAC3C,OAAQ,KAAK,IAAIzI,EAAO,OAAQyI,EAAU,MAAM,EAAIH,CAAM,EAClE,IAAII,EAAYC,GAAmB9nB,EAAImc,CAAI,EACvC4L,GAAW/nB,EAAG,IAAI,UAAWgoB,GAAYhoB,EAAG,IAAI,WASpD,GARI6nB,EAAU,WAAa,OACzBI,GAAgBjoB,EAAI6nB,EAAU,SAAS,EACnC,KAAK,IAAI7nB,EAAG,IAAI,UAAY+nB,EAAQ,EAAI,IAAKJ,EAAU,KAEzDE,EAAU,YAAc,OAC1BK,GAAcloB,EAAI6nB,EAAU,UAAU,EAClC,KAAK,IAAI7nB,EAAG,IAAI,WAAagoB,EAAS,EAAI,IAAKL,EAAU,KAE3D,CAACA,EAAW,KAClB,CACA,OAAOxL,CACT,CAGA,SAASgM,GAAenoB,EAAImc,EAAM,CAChC,IAAI0L,EAAYC,GAAmB9nB,EAAImc,CAAI,EACvC0L,EAAU,WAAa,MAAQI,GAAgBjoB,EAAI6nB,EAAU,SAAS,EACtEA,EAAU,YAAc,MAAQK,GAAcloB,EAAI6nB,EAAU,UAAU,CAC5E,CAMA,SAASC,GAAmB9nB,EAAImc,EAAM,CACpC,IAAIzM,EAAU1P,EAAG,QAASooB,EAAazG,GAAW3hB,EAAG,OAAO,EACxDmc,EAAK,IAAM,IAAKA,EAAK,IAAM,GAC/B,IAAIkM,EAAYroB,EAAG,OAASA,EAAG,MAAM,WAAa,KAAOA,EAAG,MAAM,UAAY0P,EAAQ,SAAS,UAC3F4Y,EAASrM,GAAcjc,CAAE,EAAGwJ,EAAS,CAAC,EACtC2S,EAAK,OAASA,EAAK,IAAMmM,IAAUnM,EAAK,OAASA,EAAK,IAAMmM,GAChE,IAAIC,EAAYvoB,EAAG,IAAI,OAAS4b,GAAYlM,CAAO,EAC/C8Y,EAAQrM,EAAK,IAAMiM,EAAYK,EAAWtM,EAAK,OAASoM,EAAYH,EACxE,GAAIjM,EAAK,IAAMkM,EACb7e,EAAO,UAAYgf,EAAQ,EAAIrM,EAAK,YAC3BA,EAAK,OAASkM,EAAYC,EAAQ,CAC3C,IAAII,GAAS,KAAK,IAAIvM,EAAK,KAAMsM,EAAWF,EAAYpM,EAAK,QAAUmM,CAAM,EACzEI,IAAUL,IAAa7e,EAAO,UAAYkf,GAChD,CAEA,IAAIC,GAAc3oB,EAAG,QAAQ,YAAc,EAAI0P,EAAQ,QAAQ,YAC3DkZ,GAAa5oB,EAAG,OAASA,EAAG,MAAM,YAAc,KAAOA,EAAG,MAAM,WAAa0P,EAAQ,SAAS,WAAaiZ,GAC3GE,GAAU7M,GAAahc,CAAE,EAAI0P,EAAQ,QAAQ,YAC7CoZ,GAAU3M,EAAK,MAAQA,EAAK,KAAO0M,GACvC,OAAIC,KAAW3M,EAAK,MAAQA,EAAK,KAAO0M,IACpC1M,EAAK,KAAO,GACZ3S,EAAO,WAAa,EACf2S,EAAK,KAAOyM,GACjBpf,EAAO,WAAa,KAAK,IAAI,EAAG2S,EAAK,KAAOwM,IAAeG,GAAU,EAAI,GAAG,EACvE3M,EAAK,MAAQ0M,GAAUD,GAAa,IACzCpf,EAAO,WAAa2S,EAAK,OAAS2M,GAAU,EAAI,IAAMD,IACnDrf,CACT,CAIA,SAASuf,GAAe/oB,EAAIie,EAAK,CAC3BA,GAAO,OACX+K,GAAmBhpB,CAAE,EACrBA,EAAG,MAAM,WAAaA,EAAG,MAAM,WAAa,KAAOA,EAAG,IAAI,UAAYA,EAAG,MAAM,WAAaie,EAC9F,CAIA,SAASgL,GAAoBjpB,EAAI,CAC/BgpB,GAAmBhpB,CAAE,EACrB,IAAI0E,EAAM1E,EAAG,UAAU,EACvBA,EAAG,MAAM,YAAc,CAAC,KAAM0E,EAAK,GAAIA,EAAK,OAAQ1E,EAAG,QAAQ,kBAAkB,CACnF,CAEA,SAASkpB,GAAelpB,EAAI6N,EAAGwS,EAAG,EAC5BxS,GAAK,MAAQwS,GAAK,OAAQ2I,GAAmBhpB,CAAE,EAC/C6N,GAAK,OAAQ7N,EAAG,MAAM,WAAa6N,GACnCwS,GAAK,OAAQrgB,EAAG,MAAM,UAAYqgB,EACxC,CAEA,SAAS8I,GAAcnpB,EAAIjB,EAAO,CAChCiqB,GAAmBhpB,CAAE,EACrBA,EAAG,MAAM,YAAcjB,CACzB,CAMA,SAASiqB,GAAmBhpB,EAAI,CAC9B,IAAIjB,EAAQiB,EAAG,MAAM,YACrB,GAAIjB,EAAO,CACTiB,EAAG,MAAM,YAAc,KACvB,IAAI+D,EAAOic,GAAehgB,EAAIjB,EAAM,IAAI,EAAGiF,EAAKgc,GAAehgB,EAAIjB,EAAM,EAAE,EAC3EqqB,GAAoBppB,EAAI+D,EAAMC,EAAIjF,EAAM,MAAM,CAChD,CACF,CAEA,SAASqqB,GAAoBppB,EAAI+D,EAAMC,EAAIyjB,EAAQ,CACjD,IAAI4B,EAAOvB,GAAmB9nB,EAAI,CAChC,KAAM,KAAK,IAAI+D,EAAK,KAAMC,EAAG,IAAI,EACjC,IAAK,KAAK,IAAID,EAAK,IAAKC,EAAG,GAAG,EAAIyjB,EAClC,MAAO,KAAK,IAAI1jB,EAAK,MAAOC,EAAG,KAAK,EACpC,OAAQ,KAAK,IAAID,EAAK,OAAQC,EAAG,MAAM,EAAIyjB,CAC7C,CAAC,EACDyB,GAAelpB,EAAIqpB,EAAK,WAAYA,EAAK,SAAS,CACpD,CAIA,SAASpB,GAAgBjoB,EAAIwL,EAAK,CAC5B,KAAK,IAAIxL,EAAG,IAAI,UAAYwL,CAAG,EAAI,IAClCnP,GAASitB,GAAoBtpB,EAAI,CAAC,IAAKwL,CAAG,CAAC,EAChD+d,GAAavpB,EAAIwL,EAAK,EAAI,EACtBnP,GAASitB,GAAoBtpB,CAAE,EACnCwpB,GAAYxpB,EAAI,GAAG,EACrB,CAEA,SAASupB,GAAavpB,EAAIwL,EAAKie,EAAa,CAC1Cje,EAAM,KAAK,IAAI,EAAG,KAAK,IAAIxL,EAAG,QAAQ,SAAS,aAAeA,EAAG,QAAQ,SAAS,aAAcwL,CAAG,CAAC,EAChG,EAAAxL,EAAG,QAAQ,SAAS,WAAawL,GAAO,CAACie,KAC7CzpB,EAAG,IAAI,UAAYwL,EACnBxL,EAAG,QAAQ,WAAW,aAAawL,CAAG,EAClCxL,EAAG,QAAQ,SAAS,WAAawL,IAAOxL,EAAG,QAAQ,SAAS,UAAYwL,GAC9E,CAIA,SAAS0c,GAAcloB,EAAIwL,EAAKke,EAAYD,EAAa,CACvDje,EAAM,KAAK,IAAI,EAAG,KAAK,IAAIA,EAAKxL,EAAG,QAAQ,SAAS,YAAcA,EAAG,QAAQ,SAAS,WAAW,CAAC,EAC7F,GAAA0pB,EAAale,GAAOxL,EAAG,IAAI,WAAa,KAAK,IAAIA,EAAG,IAAI,WAAawL,CAAG,EAAI,IAAM,CAACie,KACxFzpB,EAAG,IAAI,WAAawL,EACpBme,GAAkB3pB,CAAE,EAChBA,EAAG,QAAQ,SAAS,YAAcwL,IAAOxL,EAAG,QAAQ,SAAS,WAAawL,GAC9ExL,EAAG,QAAQ,WAAW,cAAcwL,CAAG,EACzC,CAMA,SAASoe,GAAqB5pB,EAAI,CAChC,IAAI,EAAIA,EAAG,QAAS6pB,EAAU,EAAE,QAAQ,YACpCC,EAAO,KAAK,MAAM9pB,EAAG,IAAI,OAAS4b,GAAY5b,EAAG,OAAO,CAAC,EAC7D,MAAO,CACL,aAAc,EAAE,SAAS,aACzB,WAAY,EAAE,QAAQ,aACtB,YAAa,EAAE,SAAS,YAAa,YAAa,EAAE,SAAS,YAC7D,UAAW,EAAE,QAAQ,YACrB,QAASA,EAAG,QAAQ,YAAc6pB,EAAU,EAC5C,UAAWC,EACX,aAAcA,EAAO/N,GAAU/b,CAAE,EAAI,EAAE,UACvC,eAAgB,EAAE,eAClB,YAAa6pB,CACf,CACF,CAEA,IAAIE,GAAmB,SAASpM,EAAOqM,EAAQhqB,EAAI,CACjD,KAAK,GAAKA,EACV,IAAIiqB,EAAO,KAAK,KAAOzrB,EAAI,MAAO,CAACA,EAAI,MAAO,KAAM,KAAM,gBAAgB,CAAC,EAAG,uBAAuB,EACjG0rB,EAAQ,KAAK,MAAQ1rB,EAAI,MAAO,CAACA,EAAI,MAAO,KAAM,KAAM,+BAA+B,CAAC,EAAG,uBAAuB,EACtHyrB,EAAK,SAAWC,EAAM,SAAW,GACjCvM,EAAMsM,CAAI,EAAGtM,EAAMuM,CAAK,EAExB1iB,EAAGyiB,EAAM,SAAU,UAAY,CACzBA,EAAK,cAAgBD,EAAOC,EAAK,UAAW,UAAU,CAC5D,CAAC,EACDziB,EAAG0iB,EAAO,SAAU,UAAY,CAC1BA,EAAM,aAAeF,EAAOE,EAAM,WAAY,YAAY,CAChE,CAAC,EAED,KAAK,iBAAmB,GAEpBztB,GAAMC,EAAa,IAAK,KAAK,MAAM,MAAM,UAAY,KAAK,KAAK,MAAM,SAAW,OACtF,EAEAqtB,GAAiB,UAAU,OAAS,SAAU/gB,EAAS,CACrD,IAAImhB,EAASnhB,EAAQ,YAAcA,EAAQ,YAAc,EACrDohB,EAASphB,EAAQ,aAAeA,EAAQ,aAAe,EACvDqhB,EAASrhB,EAAQ,eAErB,GAAIohB,EAAQ,CACV,KAAK,KAAK,MAAM,QAAU,QAC1B,KAAK,KAAK,MAAM,OAASD,EAASE,EAAS,KAAO,IAClD,IAAIC,EAActhB,EAAQ,YAAcmhB,EAASE,EAAS,GAE1D,KAAK,KAAK,WAAW,MAAM,OACzB,KAAK,IAAI,EAAGrhB,EAAQ,aAAeA,EAAQ,aAAeshB,CAAW,EAAI,IAC7E,MACE,KAAK,KAAK,UAAY,EACtB,KAAK,KAAK,MAAM,QAAU,GAC1B,KAAK,KAAK,WAAW,MAAM,OAAS,IAGtC,GAAIH,EAAQ,CACV,KAAK,MAAM,MAAM,QAAU,QAC3B,KAAK,MAAM,MAAM,MAAQC,EAASC,EAAS,KAAO,IAClD,KAAK,MAAM,MAAM,KAAOrhB,EAAQ,QAAU,KAC1C,IAAIuhB,EAAavhB,EAAQ,UAAYA,EAAQ,SAAWohB,EAASC,EAAS,GAC1E,KAAK,MAAM,WAAW,MAAM,MAC1B,KAAK,IAAI,EAAGrhB,EAAQ,YAAcA,EAAQ,YAAcuhB,CAAU,EAAI,IAC1E,MACE,KAAK,MAAM,MAAM,QAAU,GAC3B,KAAK,MAAM,WAAW,MAAM,MAAQ,IAGtC,MAAI,CAAC,KAAK,kBAAoBvhB,EAAQ,aAAe,IAC/CqhB,GAAU,GAAK,KAAK,cAAc,EACtC,KAAK,iBAAmB,IAGnB,CAAC,MAAOD,EAASC,EAAS,EAAG,OAAQF,EAASE,EAAS,CAAC,CACjE,EAEAN,GAAiB,UAAU,cAAgB,SAAU/nB,EAAK,CACpD,KAAK,MAAM,YAAcA,IAAO,KAAK,MAAM,WAAaA,GACxD,KAAK,cAAgB,KAAK,mBAAmB,KAAK,MAAO,KAAK,aAAc,OAAO,CACzF,EAEA+nB,GAAiB,UAAU,aAAe,SAAU/nB,EAAK,CACnD,KAAK,KAAK,WAAaA,IAAO,KAAK,KAAK,UAAYA,GACpD,KAAK,aAAe,KAAK,mBAAmB,KAAK,KAAM,KAAK,YAAa,MAAM,CACrF,EAEA+nB,GAAiB,UAAU,cAAgB,UAAY,CACrD,IAAI/C,EAAI1pB,GAAO,CAACL,EAAqB,OAAS,OAC9C,KAAK,MAAM,MAAM,OAAS,KAAK,KAAK,MAAM,MAAQ+pB,EAClD,KAAK,MAAM,MAAM,WAAa,KAAK,KAAK,MAAM,WAAa,SAC3D,KAAK,aAAe,IAAI7lB,GACxB,KAAK,YAAc,IAAIA,EACzB,EAEA4oB,GAAiB,UAAU,mBAAqB,SAAUS,EAAKC,EAAO5kB,EAAM,CAC1E2kB,EAAI,MAAM,WAAa,GACvB,SAASE,GAAe,CAOtB,IAAI7J,EAAM2J,EAAI,sBAAsB,EAChChsB,EAAMqH,GAAQ,OAAS,SAAS,iBAAiBgb,EAAI,MAAQ,GAAIA,EAAI,IAAMA,EAAI,QAAU,CAAC,EACxF,SAAS,kBAAkBA,EAAI,MAAQA,EAAI,MAAQ,EAAGA,EAAI,OAAS,CAAC,EACtEriB,GAAOgsB,EAAOA,EAAI,MAAM,WAAa,SAClCC,EAAM,IAAI,IAAMC,CAAY,CACrC,CACAD,EAAM,IAAI,IAAMC,CAAY,CAC9B,EAEAX,GAAiB,UAAU,MAAQ,UAAY,CAC7C,IAAIxrB,EAAS,KAAK,MAAM,WACxBA,EAAO,YAAY,KAAK,KAAK,EAC7BA,EAAO,YAAY,KAAK,IAAI,CAC9B,EAEA,IAAIosB,GAAiB,UAAY,CAAC,EAElCA,GAAe,UAAU,OAAS,UAAY,CAAE,MAAO,CAAC,OAAQ,EAAG,MAAO,CAAC,CAAE,EAC7EA,GAAe,UAAU,cAAgB,UAAY,CAAC,EACtDA,GAAe,UAAU,aAAe,UAAY,CAAC,EACrDA,GAAe,UAAU,MAAQ,UAAY,CAAC,EAE9C,SAASC,GAAiB5qB,EAAIgJ,EAAS,CAChCA,IAAWA,EAAU4gB,GAAqB5pB,CAAE,GACjD,IAAI6qB,EAAa7qB,EAAG,QAAQ,SAAU8qB,EAAc9qB,EAAG,QAAQ,UAC/D+qB,GAAsB/qB,EAAIgJ,CAAO,EACjC,QAASnK,EAAI,EAAGA,EAAI,GAAKgsB,GAAc7qB,EAAG,QAAQ,UAAY8qB,GAAe9qB,EAAG,QAAQ,UAAWnB,IAC7FgsB,GAAc7qB,EAAG,QAAQ,UAAYA,EAAG,QAAQ,cAChDymB,GAAwBzmB,CAAE,EAC9B+qB,GAAsB/qB,EAAI4pB,GAAqB5pB,CAAE,CAAC,EAClD6qB,EAAa7qB,EAAG,QAAQ,SAAU8qB,EAAc9qB,EAAG,QAAQ,SAE/D,CAIA,SAAS+qB,GAAsB/qB,EAAIgJ,EAAS,CAC1C,IAAIgiB,EAAIhrB,EAAG,QACPirB,EAAQD,EAAE,WAAW,OAAOhiB,CAAO,EAEvCgiB,EAAE,MAAM,MAAM,cAAgBA,EAAE,SAAWC,EAAM,OAAS,KAC1DD,EAAE,MAAM,MAAM,eAAiBA,EAAE,UAAYC,EAAM,QAAU,KAC7DD,EAAE,aAAa,MAAM,aAAeC,EAAM,OAAS,uBAE/CA,EAAM,OAASA,EAAM,QACvBD,EAAE,gBAAgB,MAAM,QAAU,QAClCA,EAAE,gBAAgB,MAAM,OAASC,EAAM,OAAS,KAChDD,EAAE,gBAAgB,MAAM,MAAQC,EAAM,MAAQ,MACvCD,EAAE,gBAAgB,MAAM,QAAU,GACvCC,EAAM,QAAUjrB,EAAG,QAAQ,4BAA8BA,EAAG,QAAQ,aACtEgrB,EAAE,aAAa,MAAM,QAAU,QAC/BA,EAAE,aAAa,MAAM,OAASC,EAAM,OAAS,KAC7CD,EAAE,aAAa,MAAM,MAAQhiB,EAAQ,YAAc,MAC5CgiB,EAAE,aAAa,MAAM,QAAU,EAC1C,CAEA,IAAIE,GAAiB,CAAC,OAAUnB,GAAkB,KAAQY,EAAc,EAExE,SAASQ,GAAenrB,EAAI,CACtBA,EAAG,QAAQ,aACbA,EAAG,QAAQ,WAAW,MAAM,EACxBA,EAAG,QAAQ,WAAW,UACtBlC,EAAQkC,EAAG,QAAQ,QAASA,EAAG,QAAQ,WAAW,QAAQ,GAGhEA,EAAG,QAAQ,WAAa,IAAIkrB,GAAelrB,EAAG,QAAQ,cAAc,EAAE,SAAUjC,EAAM,CACpFiC,EAAG,QAAQ,QAAQ,aAAajC,EAAMiC,EAAG,QAAQ,eAAe,EAEhEwH,EAAGzJ,EAAM,YAAa,UAAY,CAC5BiC,EAAG,MAAM,SAAW,WAAW,UAAY,CAAE,OAAOA,EAAG,QAAQ,MAAM,MAAM,CAAG,EAAG,CAAC,CACxF,CAAC,EACDjC,EAAK,aAAa,iBAAkB,MAAM,CAC5C,EAAG,SAAUiE,EAAKopB,EAAM,CAClBA,GAAQ,aAAgBlD,GAAcloB,EAAIgC,CAAG,EAC1CimB,GAAgBjoB,EAAIgC,CAAG,CAChC,EAAGhC,CAAE,EACDA,EAAG,QAAQ,WAAW,UACtBN,GAASM,EAAG,QAAQ,QAASA,EAAG,QAAQ,WAAW,QAAQ,CACjE,CAQA,IAAIqrB,GAAW,EAEf,SAASC,GAAetrB,EAAI,CAC1BA,EAAG,MAAQ,CACT,GAAIA,EACJ,YAAa,GACb,YAAaA,EAAG,IAAI,OACpB,YAAa,GACb,YAAa,EACb,OAAQ,GACR,WAAY,KACZ,uBAAwB,KACxB,qBAAsB,EACtB,iBAAkB,GAClB,cAAe,GACf,WAAY,KAAM,UAAW,KAC7B,YAAa,KACb,MAAO,GACP,GAAI,EAAEqrB,GACN,WAAY,IACd,EACAlS,GAAcnZ,EAAG,KAAK,CACxB,CAGA,SAASurB,GAAavrB,EAAI,CACxB,IAAI6R,EAAK7R,EAAG,MACR6R,GAAM0H,GAAgB1H,EAAI,SAAUwH,EAAO,CAC7C,QAASxa,EAAI,EAAGA,EAAIwa,EAAM,IAAI,OAAQxa,IAClCwa,EAAM,IAAIxa,CAAC,EAAE,GAAG,MAAQ,KAC5B2sB,GAAcnS,CAAK,CACrB,CAAC,CACH,CAIA,SAASmS,GAAcnS,EAAO,CAE5B,QADIoS,EAAMpS,EAAM,IACPxa,EAAI,EAAGA,EAAI4sB,EAAI,OAAQ5sB,IAC5B6sB,GAAgBD,EAAI5sB,CAAC,CAAC,EAC1B,QAAS8G,EAAM,EAAGA,EAAM8lB,EAAI,OAAQ9lB,IAChCgmB,GAAgBF,EAAI9lB,CAAG,CAAC,EAC5B,QAASG,EAAM,EAAGA,EAAM2lB,EAAI,OAAQ3lB,IAChC8lB,GAAgBH,EAAI3lB,CAAG,CAAC,EAC5B,QAASE,EAAM,EAAGA,EAAMylB,EAAI,OAAQzlB,IAChC6lB,GAAgBJ,EAAIzlB,CAAG,CAAC,EAC5B,QAASG,EAAM,EAAGA,EAAMslB,EAAI,OAAQtlB,IAChC2lB,GAAoBL,EAAItlB,CAAG,CAAC,CAClC,CAEA,SAASulB,GAAgB7Z,EAAI,CAC3B,IAAI7R,EAAK6R,EAAG,GAAInC,EAAU1P,EAAG,QAC7B+rB,GAAoB/rB,CAAE,EAClB6R,EAAG,eAAiBgE,GAAY7V,CAAE,EAEtC6R,EAAG,WAAaA,EAAG,aAAeA,EAAG,aAAeA,EAAG,WAAa,MAClEA,EAAG,cAAgBA,EAAG,YAAY,KAAK,KAAOnC,EAAQ,UACnCmC,EAAG,YAAY,GAAG,MAAQnC,EAAQ,SACrDA,EAAQ,gBAAkB1P,EAAG,QAAQ,aACvC6R,EAAG,OAASA,EAAG,YACb,IAAIma,GAAchsB,EAAI6R,EAAG,YAAc,CAAC,IAAKA,EAAG,UAAW,OAAQA,EAAG,WAAW,EAAGA,EAAG,WAAW,CACtG,CAEA,SAAS8Z,GAAgB9Z,EAAI,CAC3BA,EAAG,eAAiBA,EAAG,YAAcoa,GAAsBpa,EAAG,GAAIA,EAAG,MAAM,CAC7E,CAEA,SAAS+Z,GAAgB/Z,EAAI,CAC3B,IAAI7R,EAAK6R,EAAG,GAAInC,EAAU1P,EAAG,QACzB6R,EAAG,gBAAkB4U,GAAwBzmB,CAAE,EAEnD6R,EAAG,WAAa+X,GAAqB5pB,CAAE,EAKnC0P,EAAQ,gBAAkB,CAAC1P,EAAG,QAAQ,eACxC6R,EAAG,cAAgB6K,GAAY1c,EAAI0P,EAAQ,QAASA,EAAQ,QAAQ,KAAK,MAAM,EAAE,KAAO,EACxF1P,EAAG,QAAQ,WAAa6R,EAAG,cAC3BA,EAAG,WAAW,YACZ,KAAK,IAAInC,EAAQ,SAAS,YAAaA,EAAQ,MAAM,WAAamC,EAAG,cAAgBkK,GAAU/b,CAAE,EAAIA,EAAG,QAAQ,QAAQ,EAC1H6R,EAAG,cAAgB,KAAK,IAAI,EAAGnC,EAAQ,MAAM,WAAamC,EAAG,cAAgBmK,GAAahc,CAAE,CAAC,IAG3F6R,EAAG,gBAAkBA,EAAG,oBACxBA,EAAG,kBAAoBnC,EAAQ,MAAM,iBAAiB,EAC5D,CAEA,SAASmc,GAAgBha,EAAI,CAC3B,IAAI7R,EAAK6R,EAAG,GAERA,EAAG,eAAiB,OACtB7R,EAAG,QAAQ,MAAM,MAAM,SAAW6R,EAAG,cAAgB,KACjDA,EAAG,cAAgB7R,EAAG,IAAI,YAC1BkoB,GAAcloB,EAAI,KAAK,IAAIA,EAAG,QAAQ,SAAS,WAAY6R,EAAG,aAAa,EAAG,EAAI,EACtF7R,EAAG,QAAQ,eAAiB,IAG9B,IAAIksB,EAAYra,EAAG,OAASA,EAAG,OAASvS,EAAUW,GAAKD,CAAE,CAAC,EACtD6R,EAAG,mBACH7R,EAAG,QAAQ,MAAM,cAAc6R,EAAG,kBAAmBqa,CAAS,GAC9Dra,EAAG,gBAAkBA,EAAG,aAAe7R,EAAG,IAAI,SAC9C4qB,GAAiB5qB,EAAI6R,EAAG,UAAU,EAClCA,EAAG,gBACHsa,GAAkBnsB,EAAI6R,EAAG,UAAU,EAEnCA,EAAG,kBAAoBuU,GAAapmB,CAAE,EAEtCA,EAAG,MAAM,SAAW6R,EAAG,aACvB7R,EAAG,QAAQ,MAAM,MAAM6R,EAAG,MAAM,EAChCqa,GAAa5F,GAAYzU,EAAG,EAAE,CACpC,CAEA,SAASia,GAAoBja,EAAI,CAC/B,IAAI7R,EAAK6R,EAAG,GAAInC,EAAU1P,EAAG,QAASR,EAAMQ,EAAG,IAa/C,GAXI6R,EAAG,gBAAkBua,GAAkBpsB,EAAI6R,EAAG,MAAM,EAGpDnC,EAAQ,aAAe,OAASmC,EAAG,WAAa,MAAQA,EAAG,YAAc,MAAQA,EAAG,eACpFnC,EAAQ,YAAcA,EAAQ,YAAc,MAG5CmC,EAAG,WAAa,MAAQ0X,GAAavpB,EAAI6R,EAAG,UAAWA,EAAG,WAAW,EAErEA,EAAG,YAAc,MAAQqW,GAAcloB,EAAI6R,EAAG,WAAY,GAAM,EAAI,EAEpEA,EAAG,YAAa,CAClB,IAAIsK,EAAOqL,GAAkBxnB,EAAIiO,GAAQzO,EAAKqS,EAAG,YAAY,IAAI,EACpC5D,GAAQzO,EAAKqS,EAAG,YAAY,EAAE,EAAGA,EAAG,YAAY,MAAM,EACnFwV,GAAkBrnB,EAAImc,CAAI,CAC5B,CAIA,IAAIkQ,EAASxa,EAAG,mBAAoBya,EAAWza,EAAG,qBAClD,GAAIwa,EAAU,QAASxtB,EAAI,EAAGA,EAAIwtB,EAAO,OAAQ,EAAExtB,EAC1CwtB,EAAOxtB,CAAC,EAAE,MAAM,QAAUgJ,GAAOwkB,EAAOxtB,CAAC,EAAG,MAAM,EAC3D,GAAIytB,EAAY,QAAS3mB,EAAM,EAAGA,EAAM2mB,EAAS,OAAQ,EAAE3mB,EACnD2mB,EAAS3mB,CAAG,EAAE,MAAM,QAAUkC,GAAOykB,EAAS3mB,CAAG,EAAG,QAAQ,EAEhE+J,EAAQ,QAAQ,eAChBlQ,EAAI,UAAYQ,EAAG,QAAQ,SAAS,WAGpC6R,EAAG,YACHhK,GAAO7H,EAAI,UAAWA,EAAI6R,EAAG,UAAU,EACvCA,EAAG,QACHA,EAAG,OAAO,OAAO,CACvB,CAGA,SAAS0a,GAAQvsB,EAAIK,EAAG,CACtB,GAAIL,EAAG,MAAS,OAAOK,EAAE,EACzBirB,GAAetrB,CAAE,EACjB,GAAI,CAAE,OAAOK,EAAE,CAAE,QACjB,CAAUkrB,GAAavrB,CAAE,CAAG,CAC9B,CAEA,SAASwsB,GAAUxsB,EAAIK,EAAG,CACxB,OAAO,UAAW,CAChB,GAAIL,EAAG,MAAS,OAAOK,EAAE,MAAML,EAAI,SAAS,EAC5CsrB,GAAetrB,CAAE,EACjB,GAAI,CAAE,OAAOK,EAAE,MAAML,EAAI,SAAS,CAAE,QACpC,CAAUurB,GAAavrB,CAAE,CAAG,CAC9B,CACF,CAGA,SAASysB,GAASpsB,EAAG,CACnB,OAAO,UAAW,CAChB,GAAI,KAAK,MAAS,OAAOA,EAAE,MAAM,KAAM,SAAS,EAChDirB,GAAe,IAAI,EACnB,GAAI,CAAE,OAAOjrB,EAAE,MAAM,KAAM,SAAS,CAAE,QACtC,CAAUkrB,GAAa,IAAI,CAAG,CAChC,CACF,CACA,SAASmB,GAAYrsB,EAAG,CACtB,OAAO,UAAW,CAChB,IAAIL,EAAK,KAAK,GACd,GAAI,CAACA,GAAMA,EAAG,MAAS,OAAOK,EAAE,MAAM,KAAM,SAAS,EACrDirB,GAAetrB,CAAE,EACjB,GAAI,CAAE,OAAOK,EAAE,MAAM,KAAM,SAAS,CAAE,QACtC,CAAUkrB,GAAavrB,CAAE,CAAG,CAC9B,CACF,CAIA,SAASwpB,GAAYxpB,EAAIsB,EAAM,CACzBtB,EAAG,IAAI,kBAAoBA,EAAG,QAAQ,QACtCA,EAAG,MAAM,UAAU,IAAIsB,EAAMlB,GAAKusB,GAAiB3sB,CAAE,CAAC,CAC5D,CAEA,SAAS2sB,GAAgB3sB,EAAI,CAC3B,IAAIR,EAAMQ,EAAG,IACb,GAAI,EAAAR,EAAI,mBAAqBQ,EAAG,QAAQ,QACxC,KAAIf,EAAM,CAAC,IAAI,KAAOe,EAAG,QAAQ,SAC7B4O,EAAUW,GAAiBvP,EAAIR,EAAI,iBAAiB,EACpDotB,EAAe,CAAC,EAEpBptB,EAAI,KAAKoP,EAAQ,KAAM,KAAK,IAAIpP,EAAI,MAAQA,EAAI,KAAMQ,EAAG,QAAQ,OAAS,GAAG,EAAG,SAAUsH,EAAM,CAC9F,GAAIsH,EAAQ,MAAQ5O,EAAG,QAAQ,SAAU,CACvC,IAAI6sB,EAAYvlB,EAAK,OACjBkI,EAAalI,EAAK,KAAK,OAAStH,EAAG,QAAQ,mBAAqBqL,GAAU7L,EAAI,KAAMoP,EAAQ,KAAK,EAAI,KACrGke,EAAcne,GAAc3O,EAAIsH,EAAMsH,EAAS,EAAI,EACnDY,IAAcZ,EAAQ,MAAQY,GAClClI,EAAK,OAASwlB,EAAY,OAC1B,IAAIC,EAASzlB,EAAK,aAAc0lB,GAASF,EAAY,QACjDE,GAAU1lB,EAAK,aAAe0lB,GACzBD,IAAUzlB,EAAK,aAAe,MAGvC,QAFI2lB,GAAW,CAACJ,GAAaA,EAAU,QAAUvlB,EAAK,OAAO,QAC3DylB,GAAUC,KAAW,CAACD,GAAU,CAACC,IAAUD,EAAO,SAAWC,GAAO,SAAWD,EAAO,WAAaC,GAAO,WACnGnuB,GAAI,EAAG,CAACouB,IAAYpuB,GAAIguB,EAAU,OAAQ,EAAEhuB,GAAKouB,GAAWJ,EAAUhuB,EAAC,GAAKyI,EAAK,OAAOzI,EAAC,EAC9FouB,IAAYL,EAAa,KAAKhe,EAAQ,IAAI,EAC9CtH,EAAK,WAAasH,EAAQ,KAAK,EAC/BA,EAAQ,SAAS,CACnB,MACMtH,EAAK,KAAK,QAAUtH,EAAG,QAAQ,oBAC/B4P,GAAY5P,EAAIsH,EAAK,KAAMsH,CAAO,EACtCtH,EAAK,WAAasH,EAAQ,KAAO,GAAK,EAAIA,EAAQ,KAAK,EAAI,KAC3DA,EAAQ,SAAS,EAEnB,GAAI,CAAC,IAAI,KAAO3P,EACd,OAAAuqB,GAAYxpB,EAAIA,EAAG,QAAQ,SAAS,EAC7B,EAEX,CAAC,EACDR,EAAI,kBAAoBoP,EAAQ,KAChCpP,EAAI,aAAe,KAAK,IAAIA,EAAI,aAAcoP,EAAQ,IAAI,EACtDge,EAAa,QAAUL,GAAQvsB,EAAI,UAAY,CACjD,QAASnB,EAAI,EAAGA,EAAI+tB,EAAa,OAAQ/tB,IACrCqkB,GAAcljB,EAAI4sB,EAAa/tB,CAAC,EAAG,MAAM,CAC/C,CAAC,EACH,CAIA,IAAImtB,GAAgB,SAAShsB,EAAIknB,EAAUgG,EAAO,CAChD,IAAIxd,EAAU1P,EAAG,QAEjB,KAAK,SAAWknB,EAEhB,KAAK,QAAUD,GAAavX,EAAS1P,EAAG,IAAKknB,CAAQ,EACrD,KAAK,eAAiB,CAACxX,EAAQ,QAAQ,YACvC,KAAK,cAAgBA,EAAQ,QAAQ,aACrC,KAAK,aAAeA,EAAQ,QAAQ,YACpC,KAAK,gBAAkBsM,GAAahc,CAAE,EACtC,KAAK,MAAQktB,EACb,KAAK,KAAOlQ,GAAchd,CAAE,EAC5B,KAAK,OAAS,CAAC,CACjB,EAEAgsB,GAAc,UAAU,OAAS,SAAUvkB,EAAS5B,EAAM,CACpDuC,GAAWX,EAAS5B,CAAI,GACxB,KAAK,OAAO,KAAK,SAAS,CAChC,EACAmmB,GAAc,UAAU,OAAS,UAAY,CAC3C,QAASntB,EAAI,EAAGA,EAAI,KAAK,OAAO,OAAQA,IACpCgJ,GAAO,MAAM,KAAM,KAAK,OAAOhJ,CAAC,CAAC,CACvC,EAEA,SAASktB,GAAoB/rB,EAAI,CAC/B,IAAI0P,EAAU1P,EAAG,QACb,CAAC0P,EAAQ,mBAAqBA,EAAQ,SAAS,cACjDA,EAAQ,eAAiBA,EAAQ,SAAS,YAAcA,EAAQ,SAAS,YACzEA,EAAQ,aAAa,MAAM,OAASqM,GAAU/b,CAAE,EAAI,KACpD0P,EAAQ,MAAM,MAAM,aAAe,CAACA,EAAQ,eAAiB,KAC7DA,EAAQ,MAAM,MAAM,iBAAmBqM,GAAU/b,CAAE,EAAI,KACvD0P,EAAQ,kBAAoB,GAEhC,CAEA,SAASyd,GAAkBntB,EAAI,CAC7B,GAAIA,EAAG,SAAS,EAAK,OAAO,KAC5B,IAAIotB,EAAS9tB,EAAUW,GAAKD,CAAE,CAAC,EAC/B,GAAI,CAACotB,GAAU,CAAChuB,EAASY,EAAG,QAAQ,QAASotB,CAAM,EAAK,OAAO,KAC/D,IAAI5jB,EAAS,CAAC,UAAW4jB,CAAM,EAC/B,GAAI,OAAO,aAAc,CACvB,IAAIC,EAAMltB,GAAIH,CAAE,EAAE,aAAa,EAC3BqtB,EAAI,YAAcA,EAAI,QAAUjuB,EAASY,EAAG,QAAQ,QAASqtB,EAAI,UAAU,IAC7E7jB,EAAO,WAAa6jB,EAAI,WACxB7jB,EAAO,aAAe6jB,EAAI,aAC1B7jB,EAAO,UAAY6jB,EAAI,UACvB7jB,EAAO,YAAc6jB,EAAI,YAE7B,CACA,OAAO7jB,CACT,CAEA,SAAS8jB,GAAiBC,EAAU,CAClC,GAAI,GAACA,GAAY,CAACA,EAAS,WAAaA,EAAS,WAAajuB,EAAUC,GAASguB,EAAS,SAAS,CAAC,KACpGA,EAAS,UAAU,MAAM,EACrB,CAAC,qBAAqB,KAAKA,EAAS,UAAU,QAAQ,GACtDA,EAAS,YAAcnuB,EAAS,SAAS,KAAMmuB,EAAS,UAAU,GAAKnuB,EAAS,SAAS,KAAMmuB,EAAS,SAAS,GAAG,CACtH,IAAI/tB,EAAM+tB,EAAS,UAAU,cACzBF,EAAM7tB,EAAI,YAAY,aAAa,EAAGT,EAAQS,EAAI,YAAY,EAClET,EAAM,OAAOwuB,EAAS,WAAYA,EAAS,YAAY,EACvDxuB,EAAM,SAAS,EAAK,EACpBsuB,EAAI,gBAAgB,EACpBA,EAAI,SAAStuB,CAAK,EAClBsuB,EAAI,OAAOE,EAAS,UAAWA,EAAS,WAAW,CACrD,CACF,CAKA,SAAStB,GAAsBjsB,EAAIwtB,EAAQ,CACzC,IAAI9d,EAAU1P,EAAG,QAASR,EAAMQ,EAAG,IAEnC,GAAIwtB,EAAO,eACT,OAAA5K,GAAU5iB,CAAE,EACL,GAIT,GAAI,CAACwtB,EAAO,OACRA,EAAO,QAAQ,MAAQ9d,EAAQ,UAAY8d,EAAO,QAAQ,IAAM9d,EAAQ,SACvEA,EAAQ,mBAAqB,MAAQA,EAAQ,mBAAqBA,EAAQ,SAC3EA,EAAQ,cAAgBA,EAAQ,MAAQ4T,GAAetjB,CAAE,GAAK,EAC9D,MAAO,GAEPytB,GAA2BztB,CAAE,IAC/B4iB,GAAU5iB,CAAE,EACZwtB,EAAO,KAAOxQ,GAAchd,CAAE,GAIhC,IAAIf,EAAMO,EAAI,MAAQA,EAAI,KACtBuE,EAAO,KAAK,IAAIypB,EAAO,QAAQ,KAAOxtB,EAAG,QAAQ,eAAgBR,EAAI,KAAK,EAC1EwE,EAAK,KAAK,IAAI/E,EAAKuuB,EAAO,QAAQ,GAAKxtB,EAAG,QAAQ,cAAc,EAChE0P,EAAQ,SAAW3L,GAAQA,EAAO2L,EAAQ,SAAW,KAAM3L,EAAO,KAAK,IAAIvE,EAAI,MAAOkQ,EAAQ,QAAQ,GACtGA,EAAQ,OAAS1L,GAAM0L,EAAQ,OAAS1L,EAAK,KAAMA,EAAK,KAAK,IAAI/E,EAAKyQ,EAAQ,MAAM,GACpFyB,KACFpN,EAAOqR,GAAapV,EAAG,IAAK+D,CAAI,EAChCC,EAAKuR,GAAgBvV,EAAG,IAAKgE,CAAE,GAGjC,IAAI0pB,EAAY3pB,GAAQ2L,EAAQ,UAAY1L,GAAM0L,EAAQ,QACxDA,EAAQ,gBAAkB8d,EAAO,eAAiB9d,EAAQ,eAAiB8d,EAAO,aACpFnK,GAAWrjB,EAAI+D,EAAMC,CAAE,EAEvB0L,EAAQ,WAAagG,GAAalJ,GAAQxM,EAAG,IAAK0P,EAAQ,QAAQ,CAAC,EAEnE1P,EAAG,QAAQ,MAAM,MAAM,IAAM0P,EAAQ,WAAa,KAElD,IAAIie,EAAWrK,GAAetjB,CAAE,EAChC,GAAI,CAAC0tB,GAAaC,GAAY,GAAK,CAACH,EAAO,OAAS9d,EAAQ,cAAgBA,EAAQ,OAC/EA,EAAQ,mBAAqB,MAAQA,EAAQ,mBAAqBA,EAAQ,QAC3E,MAAO,GAIX,IAAIke,EAAcT,GAAkBntB,CAAE,EACtC,OAAI2tB,EAAW,IAAKje,EAAQ,QAAQ,MAAM,QAAU,QACpDme,GAAa7tB,EAAI0P,EAAQ,kBAAmB8d,EAAO,IAAI,EACnDG,EAAW,IAAKje,EAAQ,QAAQ,MAAM,QAAU,IACpDA,EAAQ,aAAeA,EAAQ,KAG/B4d,GAAiBM,CAAW,EAI5BzvB,EAAeuR,EAAQ,SAAS,EAChCvR,EAAeuR,EAAQ,YAAY,EACnCA,EAAQ,QAAQ,MAAM,OAASA,EAAQ,MAAM,MAAM,UAAY,EAE3Dge,IACFhe,EAAQ,eAAiB8d,EAAO,cAChC9d,EAAQ,cAAgB8d,EAAO,aAC/BhE,GAAYxpB,EAAI,GAAG,GAGrB0P,EAAQ,kBAAoB,KAErB,EACT,CAEA,SAAS0c,GAAkBpsB,EAAIwtB,EAAQ,CAGrC,QAFItG,EAAWsG,EAAO,SAEb5a,EAAQ,IAAOA,EAAQ,GAAO,CACrC,GAAI,CAACA,GAAS,CAAC5S,EAAG,QAAQ,cAAgBwtB,EAAO,iBAAmBxR,GAAahc,CAAE,GAOjF,GALIknB,GAAYA,EAAS,KAAO,OAC5BA,EAAW,CAAC,IAAK,KAAK,IAAIlnB,EAAG,IAAI,OAAS4b,GAAY5b,EAAG,OAAO,EAAIic,GAAcjc,CAAE,EAAGknB,EAAS,GAAG,CAAC,GAGxGsG,EAAO,QAAUvG,GAAajnB,EAAG,QAASA,EAAG,IAAKknB,CAAQ,EACtDsG,EAAO,QAAQ,MAAQxtB,EAAG,QAAQ,UAAYwtB,EAAO,QAAQ,IAAMxtB,EAAG,QAAQ,OAC9E,WACK4S,IACT4a,EAAO,QAAUvG,GAAajnB,EAAG,QAASA,EAAG,IAAKknB,CAAQ,GAE5D,GAAI,CAAC+E,GAAsBjsB,EAAIwtB,CAAM,EAAK,MAC1C/G,GAAwBzmB,CAAE,EAC1B,IAAI8tB,EAAalE,GAAqB5pB,CAAE,EACxCwjB,GAAgBxjB,CAAE,EAClB4qB,GAAiB5qB,EAAI8tB,CAAU,EAC/B3B,GAAkBnsB,EAAI8tB,CAAU,EAChCN,EAAO,MAAQ,EACjB,CAEAA,EAAO,OAAOxtB,EAAI,SAAUA,CAAE,GAC1BA,EAAG,QAAQ,UAAYA,EAAG,QAAQ,kBAAoBA,EAAG,QAAQ,QAAUA,EAAG,QAAQ,kBACxFwtB,EAAO,OAAOxtB,EAAI,iBAAkBA,EAAIA,EAAG,QAAQ,SAAUA,EAAG,QAAQ,MAAM,EAC9EA,EAAG,QAAQ,iBAAmBA,EAAG,QAAQ,SAAUA,EAAG,QAAQ,eAAiBA,EAAG,QAAQ,OAE9F,CAEA,SAASspB,GAAoBtpB,EAAIknB,EAAU,CACzC,IAAIsG,EAAS,IAAIxB,GAAchsB,EAAIknB,CAAQ,EAC3C,GAAI+E,GAAsBjsB,EAAIwtB,CAAM,EAAG,CACrC/G,GAAwBzmB,CAAE,EAC1BosB,GAAkBpsB,EAAIwtB,CAAM,EAC5B,IAAIM,EAAalE,GAAqB5pB,CAAE,EACxCwjB,GAAgBxjB,CAAE,EAClB4qB,GAAiB5qB,EAAI8tB,CAAU,EAC/B3B,GAAkBnsB,EAAI8tB,CAAU,EAChCN,EAAO,OAAO,CAChB,CACF,CAMA,SAASK,GAAa7tB,EAAI+tB,EAAmBhU,EAAM,CACjD,IAAIrK,EAAU1P,EAAG,QAASguB,EAAchuB,EAAG,QAAQ,YAC/CiuB,EAAYve,EAAQ,QAAShL,EAAMupB,EAAU,WAEjD,SAASC,EAAGnwB,GAAM,CAChB,IAAIid,GAAOjd,GAAK,YAEhB,OAAIpB,GAAUW,GAAO0C,EAAG,QAAQ,oBAAsBjC,GAClDA,GAAK,MAAM,QAAU,OAErBA,GAAK,WAAW,YAAYA,EAAI,EAC7Bid,EACT,CAKA,QAHI/B,EAAOvJ,EAAQ,KAAM2F,EAAQ3F,EAAQ,SAGhC7Q,GAAI,EAAGA,GAAIoa,EAAK,OAAQpa,KAAK,CACpC,IAAI4X,GAAWwC,EAAKpa,EAAC,EACrB,GAAI,CAAA4X,GAAS,OAAe,GAAI,CAACA,GAAS,MAAQA,GAAS,KAAK,YAAcwX,EAAW,CACvF,IAAIlwB,GAAOmd,GAAiBlb,EAAIyW,GAAUpB,EAAO0E,CAAI,EACrDkU,EAAU,aAAalwB,GAAM2G,CAAG,CAClC,KAAO,CACL,KAAOA,GAAO+R,GAAS,MAAQ/R,EAAMwpB,EAAGxpB,CAAG,EAC3C,IAAIypB,GAAeH,GAAeD,GAAqB,MACrDA,GAAqB1Y,GAASoB,GAAS,WACrCA,GAAS,UACPlV,GAAQkV,GAAS,QAAS,QAAQ,EAAI,KAAM0X,GAAe,IAC/DrU,GAAqB9Z,EAAIyW,GAAUpB,EAAO0E,CAAI,GAE5CoU,KACFhwB,EAAesY,GAAS,UAAU,EAClCA,GAAS,WAAW,YAAY,SAAS,eAAejJ,GAAcxN,EAAG,QAASqV,CAAK,CAAC,CAAC,GAE3F3Q,EAAM+R,GAAS,KAAK,WACtB,CACApB,GAASoB,GAAS,IACpB,CACA,KAAO/R,GAAOA,EAAMwpB,EAAGxpB,CAAG,CAC5B,CAEA,SAAS0pB,GAAkB1e,EAAS,CAClC,IAAI6L,EAAQ7L,EAAQ,QAAQ,YAC5BA,EAAQ,MAAM,MAAM,WAAa6L,EAAQ,KAEzC7B,GAAYhK,EAAS,gBAAiBA,CAAO,CAC/C,CAEA,SAASyc,GAAkBnsB,EAAIgJ,EAAS,CACtChJ,EAAG,QAAQ,MAAM,MAAM,UAAYgJ,EAAQ,UAAY,KACvDhJ,EAAG,QAAQ,aAAa,MAAM,IAAMgJ,EAAQ,UAAY,KACxDhJ,EAAG,QAAQ,QAAQ,MAAM,OAAUgJ,EAAQ,UAAYhJ,EAAG,QAAQ,UAAY+b,GAAU/b,CAAE,EAAK,IACjG,CAIA,SAAS2pB,GAAkB3pB,EAAI,CAC7B,IAAI0P,EAAU1P,EAAG,QAASiZ,EAAOvJ,EAAQ,KACzC,GAAI,GAACA,EAAQ,eAAiB,CAACA,EAAQ,QAAQ,YAAc,CAAC1P,EAAG,QAAQ,cAGzE,SAFIquB,EAAOtM,GAAqBrS,CAAO,EAAIA,EAAQ,SAAS,WAAa1P,EAAG,IAAI,WAC5E6pB,EAAUna,EAAQ,QAAQ,YAAa0P,EAAOiP,EAAO,KAChDxvB,EAAI,EAAGA,EAAIoa,EAAK,OAAQpa,IAAO,GAAI,CAACoa,EAAKpa,CAAC,EAAE,OAAQ,CACvDmB,EAAG,QAAQ,cACTiZ,EAAKpa,CAAC,EAAE,SACRoa,EAAKpa,CAAC,EAAE,OAAO,MAAM,KAAOugB,GAC5BnG,EAAKpa,CAAC,EAAE,mBACRoa,EAAKpa,CAAC,EAAE,iBAAiB,MAAM,KAAOugB,IAE5C,IAAIkP,EAAQrV,EAAKpa,CAAC,EAAE,UACpB,GAAIyvB,EAAS,QAAShoB,EAAI,EAAGA,EAAIgoB,EAAM,OAAQhoB,IAC3CgoB,EAAMhoB,CAAC,EAAE,MAAM,KAAO8Y,CAC5B,CACIpf,EAAG,QAAQ,cACX0P,EAAQ,QAAQ,MAAM,KAAQ2e,EAAOxE,EAAW,MACtD,CAKA,SAAS4D,GAA2BztB,EAAI,CACtC,GAAI,CAACA,EAAG,QAAQ,YAAe,MAAO,GACtC,IAAIR,EAAMQ,EAAG,IAAKkO,EAAOV,GAAcxN,EAAG,QAASR,EAAI,MAAQA,EAAI,KAAO,CAAC,EAAGkQ,EAAU1P,EAAG,QAC3F,GAAIkO,EAAK,QAAUwB,EAAQ,aAAc,CACvC,IAAIzG,EAAOyG,EAAQ,QAAQ,YAAYlR,EAAI,MAAO,CAACA,EAAI,MAAO0P,CAAI,CAAC,EACxB,6CAA6C,CAAC,EACrFqgB,EAAStlB,EAAK,WAAW,YAAaqb,EAAUrb,EAAK,YAAcslB,EACvE,OAAA7e,EAAQ,WAAW,MAAM,MAAQ,GACjCA,EAAQ,kBAAoB,KAAK,IAAI6e,EAAQ7e,EAAQ,WAAW,YAAc4U,CAAO,EAAI,EACzF5U,EAAQ,aAAeA,EAAQ,kBAAoB4U,EACnD5U,EAAQ,aAAeA,EAAQ,kBAAoBxB,EAAK,OAAS,GACjEwB,EAAQ,WAAW,MAAM,MAAQA,EAAQ,aAAe,KACxD0e,GAAkBpuB,EAAG,OAAO,EACrB,EACT,CACA,MAAO,EACT,CAEA,SAASwuB,GAAWC,EAAST,EAAa,CAExC,QADIxkB,EAAS,CAAC,EAAGklB,EAAiB,GACzB7vB,EAAI,EAAGA,EAAI4vB,EAAQ,OAAQ5vB,IAAK,CACvC,IAAIyL,EAAOmkB,EAAQ5vB,CAAC,EAAGD,EAAQ,KAE/B,GADI,OAAO0L,GAAQ,WAAY1L,EAAQ0L,EAAK,MAAOA,EAAOA,EAAK,WAC3DA,GAAQ,yBACV,GAAK0jB,EACEU,EAAiB,OADJ,UAGtBllB,EAAO,KAAK,CAAC,UAAWc,EAAM,MAAO1L,CAAK,CAAC,CAC7C,CACA,OAAIovB,GAAe,CAACU,GAAkBllB,EAAO,KAAK,CAAC,UAAW,yBAA0B,MAAO,IAAI,CAAC,EAC7FA,CACT,CAIA,SAASmlB,GAAcjf,EAAS,CAC9B,IAAI+e,EAAU/e,EAAQ,QAASkf,EAAQlf,EAAQ,YAC/CvR,EAAeswB,CAAO,EACtB/e,EAAQ,WAAa,KACrB,QAAS7Q,EAAI,EAAGA,EAAI+vB,EAAM,OAAQ,EAAE/vB,EAAG,CACrC,IAAI8f,EAAMiQ,EAAM/vB,CAAC,EACbF,EAAYggB,EAAI,UAChB/f,EAAQ+f,EAAI,MACZkQ,EAAOJ,EAAQ,YAAYjwB,EAAI,MAAO,KAAM,qBAAuBG,CAAS,CAAC,EAC7EC,IAASiwB,EAAK,MAAM,QAAUjwB,GAC9BD,GAAa,2BACf+Q,EAAQ,WAAamf,EACrBA,EAAK,MAAM,OAASnf,EAAQ,cAAgB,GAAK,KAErD,CACA+e,EAAQ,MAAM,QAAUG,EAAM,OAAS,GAAK,OAC5CR,GAAkB1e,CAAO,CAC3B,CAEA,SAASof,GAAc9uB,EAAI,CACzB2uB,GAAc3uB,EAAG,OAAO,EACxB0iB,GAAU1iB,CAAE,EACZ2pB,GAAkB3pB,CAAE,CACtB,CAMA,SAAS+uB,GAAQpR,EAAOne,EAAKwvB,EAAOnkB,EAAS,CAC3C,IAAImgB,EAAI,KACR,KAAK,MAAQgE,EAGbhE,EAAE,gBAAkBxsB,EAAI,MAAO,KAAM,6BAA6B,EAClEwsB,EAAE,gBAAgB,aAAa,iBAAkB,MAAM,EAGvDA,EAAE,aAAexsB,EAAI,MAAO,KAAM,0BAA0B,EAC5DwsB,EAAE,aAAa,aAAa,iBAAkB,MAAM,EAEpDA,EAAE,QAAUlsB,EAAK,MAAO,KAAM,iBAAiB,EAE/CksB,EAAE,aAAexsB,EAAI,MAAO,KAAM,KAAM,gCAAgC,EACxEwsB,EAAE,UAAYxsB,EAAI,MAAO,KAAM,oBAAoB,EAEnDwsB,EAAE,QAAUxsB,EAAI,MAAO,KAAM,oBAAoB,EAEjDwsB,EAAE,YAAcxsB,EAAI,MAAO,KAAM,oBAAoB,EAErDwsB,EAAE,UAAYlsB,EAAK,MAAO,CAACksB,EAAE,QAASA,EAAE,YAAaA,EAAE,aAAcA,EAAE,UAAWA,EAAE,OAAO,EACzE,KAAM,mCAAmC,EAC3D,IAAI7V,EAAQrW,EAAK,MAAO,CAACksB,EAAE,SAAS,EAAG,kBAAkB,EAEzDA,EAAE,MAAQxsB,EAAI,MAAO,CAAC2W,CAAK,EAAG,KAAM,oBAAoB,EAExD6V,EAAE,MAAQxsB,EAAI,MAAO,CAACwsB,EAAE,KAAK,EAAG,kBAAkB,EAClDA,EAAE,WAAa,KAIfA,EAAE,aAAexsB,EAAI,MAAO,KAAM,KAAM,+BAAiCiD,GAAc,iBAAiB,EAExGupB,EAAE,QAAUxsB,EAAI,MAAO,KAAM,oBAAoB,EACjDwsB,EAAE,WAAa,KAEfA,EAAE,SAAWxsB,EAAI,MAAO,CAACwsB,EAAE,MAAOA,EAAE,aAAcA,EAAE,OAAO,EAAG,mBAAmB,EACjFA,EAAE,SAAS,aAAa,WAAY,IAAI,EAExCA,EAAE,QAAUxsB,EAAI,MAAO,CAACwsB,EAAE,gBAAiBA,EAAE,aAAcA,EAAE,QAAQ,EAAG,YAAY,EAEhFnuB,GAAUC,GAAkB,MAAOkuB,EAAE,QAAQ,MAAM,SAAW,cAIlEA,EAAE,QAAQ,aAAa,YAAa,IAAI,EAGpCvuB,GAAMC,EAAa,IAAKsuB,EAAE,QAAQ,MAAM,OAAS,GAAIA,EAAE,SAAS,MAAM,aAAe,GACrF,CAACruB,GAAU,EAAEN,GAASgB,KAAW2tB,EAAE,SAAS,UAAY,IAExDrN,IACEA,EAAM,YAAeA,EAAM,YAAYqN,EAAE,OAAO,EAC7CrN,EAAMqN,EAAE,OAAO,GAIxBA,EAAE,SAAWA,EAAE,OAASxrB,EAAI,MAC5BwrB,EAAE,iBAAmBA,EAAE,eAAiBxrB,EAAI,MAE5CwrB,EAAE,KAAO,CAAC,EACVA,EAAE,aAAe,KAGjBA,EAAE,iBAAmB,KAErBA,EAAE,WAAa,EACfA,EAAE,eAAiBA,EAAE,cAAgB,EACrCA,EAAE,kBAAoB,KAEtBA,EAAE,eAAiBA,EAAE,UAAYA,EAAE,SAAW,EAC9CA,EAAE,kBAAoB,GAItBA,EAAE,aAAeA,EAAE,kBAAoBA,EAAE,aAAe,KAIxDA,EAAE,aAAe,GAEjBA,EAAE,gBAAkBA,EAAE,iBAAmBA,EAAE,eAAiB,KAI5DA,EAAE,QAAU,KACZA,EAAE,cAAgB,EAClBA,EAAE,eAAiB,GAGnBA,EAAE,QAAUA,EAAE,QAAUA,EAAE,YAAcA,EAAE,YAAc,KAGxDA,EAAE,MAAQ,GAIVA,EAAE,kBAAoB,KAEtBA,EAAE,YAAc,KAEhBA,EAAE,YAAcwD,GAAW3jB,EAAQ,QAASA,EAAQ,WAAW,EAC/D8jB,GAAc3D,CAAC,EAEfgE,EAAM,KAAKhE,CAAC,CACd,CAaA,IAAIiE,GAAe,EAAGC,GAAqB,KAKvCzyB,EAAMyyB,GAAqB,KACtB7yB,EAAS6yB,GAAqB,GAC9BryB,EAAUqyB,GAAqB,IAC/BlyB,IAAUkyB,GAAqB,GAAG,GAE3C,SAASC,GAAgB/wB,EAAG,CAC1B,IAAIgxB,EAAKhxB,EAAE,YAAaixB,EAAKjxB,EAAE,YAC/B,OAAIgxB,GAAM,MAAQhxB,EAAE,QAAUA,EAAE,MAAQA,EAAE,kBAAmBgxB,EAAKhxB,EAAE,QAChEixB,GAAM,MAAQjxB,EAAE,QAAUA,EAAE,MAAQA,EAAE,cAAiBixB,EAAKjxB,EAAE,OACzDixB,GAAM,OAAQA,EAAKjxB,EAAE,YACvB,CAAC,EAAGgxB,EAAI,EAAGC,CAAE,CACtB,CACA,SAASC,GAAiBlxB,EAAG,CAC3B,IAAImxB,EAAQJ,GAAgB/wB,CAAC,EAC7B,OAAAmxB,EAAM,GAAKL,GACXK,EAAM,GAAKL,GACJK,CACT,CAEA,SAASC,GAAcxvB,EAAI5B,EAAG,CAIxBvB,GAAUC,GAAkB,MAC1BkD,EAAG,QAAQ,kBAAoB,KAAQA,EAAG,QAAQ,MAAM,MAAM,cAAgB,OAC3E,aAAaA,EAAG,QAAQ,gBAAgB,EAC/CA,EAAG,QAAQ,iBAAmB,WAAW,UAAY,CACnDA,EAAG,QAAQ,iBAAmB,KAC9BA,EAAG,QAAQ,MAAM,MAAM,cAAgB,EACzC,EAAG,GAAG,GAER,IAAIuvB,EAAQJ,GAAgB/wB,CAAC,EAAGgxB,EAAKG,EAAM,EAAGF,EAAKE,EAAM,EACrDE,EAAgBP,GAChB9wB,EAAE,YAAc,IAClBgxB,EAAKhxB,EAAE,OACPixB,EAAKjxB,EAAE,OACPqxB,EAAgB,GAGlB,IAAI/f,EAAU1P,EAAG,QAASgqB,EAASta,EAAQ,SAEvCggB,EAAa1F,EAAO,YAAcA,EAAO,YACzC2F,EAAa3F,EAAO,aAAeA,EAAO,aAC9C,GAAMoF,GAAMM,GAAcL,GAAMM,EAMhC,IAAIN,GAAM/xB,GAAOX,GACf0Q,EAAO,QAAS3I,GAAMtG,EAAE,OAAQ6a,GAAOvJ,EAAQ,KAAMhL,IAAOslB,EAAQtlB,GAAMA,GAAI,WAC5E,QAAS7F,GAAI,EAAGA,GAAIoa,GAAK,OAAQpa,KAC/B,GAAIoa,GAAKpa,EAAC,EAAE,MAAQ6F,GAAK,CACvB1E,EAAG,QAAQ,mBAAqB0E,GAChC,MAAM2I,CACR,EAWN,GAAI+hB,GAAM,CAAC/yB,GAAS,CAACU,GAAU0yB,GAAiB,KAAM,CAChDJ,GAAMM,GACN1H,GAAgBjoB,EAAI,KAAK,IAAI,EAAGgqB,EAAO,UAAYqF,EAAKI,CAAa,CAAC,EAC1EvH,GAAcloB,EAAI,KAAK,IAAI,EAAGgqB,EAAO,WAAaoF,EAAKK,CAAa,CAAC,GAKjE,CAACJ,GAAOA,GAAMM,IACdpnB,GAAiBnK,CAAC,EACtBsR,EAAQ,YAAc,KACtB,MACF,CAIA,GAAI2f,GAAMI,GAAiB,KAAM,CAC/B,IAAIG,GAASP,EAAKI,EACdxR,GAAMje,EAAG,IAAI,UAAWke,GAAMD,GAAMvO,EAAQ,QAAQ,aACpDkgB,GAAS,EAAK3R,GAAM,KAAK,IAAI,EAAGA,GAAM2R,GAAS,EAAE,EAC9C1R,GAAM,KAAK,IAAIle,EAAG,IAAI,OAAQke,GAAM0R,GAAS,EAAE,EACtDtG,GAAoBtpB,EAAI,CAAC,IAAKie,GAAK,OAAQC,EAAG,CAAC,CACjD,CAEI+Q,GAAe,IAAM7wB,EAAE,YAAc,IACnCsR,EAAQ,aAAe,MACzBA,EAAQ,YAAcsa,EAAO,WAAYta,EAAQ,YAAcsa,EAAO,UACtEta,EAAQ,QAAU0f,EAAI1f,EAAQ,QAAU2f,EACxC,WAAW,UAAY,CACrB,GAAI3f,EAAQ,aAAe,KAC3B,KAAImgB,GAAS7F,EAAO,WAAata,EAAQ,YACrCogB,GAAS9F,EAAO,UAAYta,EAAQ,YACpCqgB,GAAUD,IAAUpgB,EAAQ,SAAWogB,GAASpgB,EAAQ,SACzDmgB,IAAUngB,EAAQ,SAAWmgB,GAASngB,EAAQ,QACjDA,EAAQ,YAAcA,EAAQ,YAAc,KACvCqgB,KACLb,IAAsBA,GAAqBD,GAAec,KAAWd,GAAe,GACpF,EAAEA,IACJ,EAAG,GAAG,IAENvf,EAAQ,SAAW0f,EAAI1f,EAAQ,SAAW2f,IAGhD,CAOA,IAAIW,GAAY,SAASC,EAAQC,EAAW,CAC1C,KAAK,OAASD,EACd,KAAK,UAAYC,CACnB,EAEAF,GAAU,UAAU,QAAU,UAAY,CAAE,OAAO,KAAK,OAAO,KAAK,SAAS,CAAE,EAE/EA,GAAU,UAAU,OAAS,SAAUjQ,EAAO,CAC5C,GAAIA,GAAS,KAAQ,MAAO,GAC5B,GAAIA,EAAM,WAAa,KAAK,WAAaA,EAAM,OAAO,QAAU,KAAK,OAAO,OAAU,MAAO,GAC7F,QAASlhB,EAAI,EAAGA,EAAI,KAAK,OAAO,OAAQA,IAAK,CAC3C,IAAIsxB,EAAO,KAAK,OAAOtxB,CAAC,EAAGuxB,EAAQrQ,EAAM,OAAOlhB,CAAC,EACjD,GAAI,CAAC8O,GAAewiB,EAAK,OAAQC,EAAM,MAAM,GAAK,CAACziB,GAAewiB,EAAK,KAAMC,EAAM,IAAI,EAAK,MAAO,EACrG,CACA,MAAO,EACT,EAEAJ,GAAU,UAAU,SAAW,UAAY,CAEzC,QADIxtB,EAAM,CAAC,EACF3D,EAAI,EAAGA,EAAI,KAAK,OAAO,OAAQA,IACpC2D,EAAI3D,CAAC,EAAI,IAAIwxB,GAAMziB,GAAQ,KAAK,OAAO/O,CAAC,EAAE,MAAM,EAAG+O,GAAQ,KAAK,OAAO/O,CAAC,EAAE,IAAI,CAAC,EACnF,OAAO,IAAImxB,GAAUxtB,EAAK,KAAK,SAAS,CAC1C,EAEAwtB,GAAU,UAAU,kBAAoB,UAAY,CAClD,QAASnxB,EAAI,EAAGA,EAAI,KAAK,OAAO,OAAQA,IACpC,GAAI,CAAC,KAAK,OAAOA,CAAC,EAAE,MAAM,EAAK,MAAO,GAC1C,MAAO,EACT,EAEAmxB,GAAU,UAAU,SAAW,SAAUhuB,EAAK/C,EAAK,CAC5CA,IAAOA,EAAM+C,GAClB,QAASnD,EAAI,EAAGA,EAAI,KAAK,OAAO,OAAQA,IAAK,CAC3C,IAAIE,EAAQ,KAAK,OAAOF,CAAC,EACzB,GAAI6O,GAAIzO,EAAKF,EAAM,KAAK,CAAC,GAAK,GAAK2O,GAAI1L,EAAKjD,EAAM,GAAG,CAAC,GAAK,EACvD,OAAOF,CACb,CACA,MAAO,EACT,EAEA,IAAIwxB,GAAQ,SAASzO,EAAQkC,EAAM,CACjC,KAAK,OAASlC,EAAQ,KAAK,KAAOkC,CACpC,EAEAuM,GAAM,UAAU,KAAO,UAAY,CAAE,OAAOtiB,GAAO,KAAK,OAAQ,KAAK,IAAI,CAAE,EAC3EsiB,GAAM,UAAU,GAAK,UAAY,CAAE,OAAOviB,GAAO,KAAK,OAAQ,KAAK,IAAI,CAAE,EACzEuiB,GAAM,UAAU,MAAQ,UAAY,CAAE,OAAO,KAAK,KAAK,MAAQ,KAAK,OAAO,MAAQ,KAAK,KAAK,IAAM,KAAK,OAAO,EAAG,EAKlH,SAASC,GAAmBtwB,EAAIiwB,EAAQC,EAAW,CACjD,IAAIK,EAAWvwB,GAAMA,EAAG,QAAQ,mBAC5BwwB,EAAOP,EAAOC,CAAS,EAC3BD,EAAO,KAAK,SAAUrwB,GAAGC,GAAG,CAAE,OAAO6N,GAAI9N,GAAE,KAAK,EAAGC,GAAE,KAAK,CAAC,CAAG,CAAC,EAC/DqwB,EAAY3uB,GAAQ0uB,EAAQO,CAAI,EAChC,QAAS3xB,EAAI,EAAGA,EAAIoxB,EAAO,OAAQpxB,IAAK,CACtC,IAAI6F,EAAMurB,EAAOpxB,CAAC,EAAG+G,EAAOqqB,EAAOpxB,EAAI,CAAC,EACpCmO,EAAOU,GAAI9H,EAAK,GAAG,EAAGlB,EAAI,KAAK,CAAC,EACpC,GAAI6rB,GAAY,CAAC7rB,EAAI,MAAM,EAAIsI,EAAO,EAAIA,GAAQ,EAAG,CACnD,IAAIjJ,EAAOgK,GAAOnI,EAAK,KAAK,EAAGlB,EAAI,KAAK,CAAC,EAAGV,GAAK8J,GAAOlI,EAAK,GAAG,EAAGlB,EAAI,GAAG,CAAC,EACvE+rB,GAAM7qB,EAAK,MAAM,EAAIlB,EAAI,KAAK,GAAKA,EAAI,KAAOkB,EAAK,KAAK,GAAKA,EAAK,KAClE/G,GAAKqxB,GAAa,EAAEA,EACxBD,EAAO,OAAO,EAAEpxB,EAAG,EAAG,IAAIwxB,GAAMI,GAAMzsB,GAAKD,EAAM0sB,GAAM1sB,EAAOC,EAAE,CAAC,CACnE,CACF,CACA,OAAO,IAAIgsB,GAAUC,EAAQC,CAAS,CACxC,CAEA,SAASQ,GAAgB9O,EAAQkC,EAAM,CACrC,OAAO,IAAIkM,GAAU,CAAC,IAAIK,GAAMzO,EAAQkC,GAAQlC,CAAM,CAAC,EAAG,CAAC,CAC7D,CAIA,SAAS+O,GAAUle,EAAQ,CACzB,OAAKA,EAAO,KACLhF,GAAIgF,EAAO,KAAK,KAAOA,EAAO,KAAK,OAAS,EACxCpQ,GAAIoQ,EAAO,IAAI,EAAE,QAAUA,EAAO,KAAK,QAAU,EAAIA,EAAO,KAAK,GAAK,EAAE,EAFxDA,EAAO,EAGpC,CAIA,SAASme,GAAgB5uB,EAAKyQ,EAAQ,CACpC,GAAI/E,GAAI1L,EAAKyQ,EAAO,IAAI,EAAI,EAAK,OAAOzQ,EACxC,GAAI0L,GAAI1L,EAAKyQ,EAAO,EAAE,GAAK,EAAK,OAAOke,GAAUle,CAAM,EAEvD,IAAInL,EAAOtF,EAAI,KAAOyQ,EAAO,KAAK,QAAUA,EAAO,GAAG,KAAOA,EAAO,KAAK,MAAQ,EAAGrP,EAAKpB,EAAI,GAC7F,OAAIA,EAAI,MAAQyQ,EAAO,GAAG,OAAQrP,GAAMutB,GAAUle,CAAM,EAAE,GAAKA,EAAO,GAAG,IAClEhF,GAAInG,EAAMlE,CAAE,CACrB,CAEA,SAASytB,GAAsBrxB,EAAKiT,EAAQ,CAE1C,QADIjQ,EAAM,CAAC,EACF3D,EAAI,EAAGA,EAAIW,EAAI,IAAI,OAAO,OAAQX,IAAK,CAC9C,IAAIE,EAAQS,EAAI,IAAI,OAAOX,CAAC,EAC5B2D,EAAI,KAAK,IAAI6tB,GAAMO,GAAgB7xB,EAAM,OAAQ0T,CAAM,EACpCme,GAAgB7xB,EAAM,KAAM0T,CAAM,CAAC,CAAC,CACzD,CACA,OAAO6d,GAAmB9wB,EAAI,GAAIgD,EAAKhD,EAAI,IAAI,SAAS,CAC1D,CAEA,SAASsxB,GAAU9uB,EAAKgQ,EAAKG,EAAI,CAC/B,OAAInQ,EAAI,MAAQgQ,EAAI,KACTvE,GAAI0E,EAAG,KAAMnQ,EAAI,GAAKgQ,EAAI,GAAKG,EAAG,EAAE,EAEpC1E,GAAI0E,EAAG,MAAQnQ,EAAI,KAAOgQ,EAAI,MAAOhQ,EAAI,EAAE,CACxD,CAIA,SAAS+uB,GAAmBvxB,EAAKwxB,EAASC,EAAM,CAG9C,QAFIzuB,EAAM,CAAC,EACP0uB,EAAUzjB,GAAIjO,EAAI,MAAO,CAAC,EAAG2xB,EAAUD,EAClCryB,EAAI,EAAGA,EAAImyB,EAAQ,OAAQnyB,IAAK,CACvC,IAAI4T,EAASue,EAAQnyB,CAAC,EAClBkF,EAAO+sB,GAAUre,EAAO,KAAMye,EAASC,CAAO,EAC9CntB,EAAK8sB,GAAUH,GAAUle,CAAM,EAAGye,EAASC,CAAO,EAGtD,GAFAD,EAAUze,EAAO,GACjB0e,EAAUntB,EACNitB,GAAQ,SAAU,CACpB,IAAIlyB,GAAQS,EAAI,IAAI,OAAOX,CAAC,EAAG4xB,GAAM/iB,GAAI3O,GAAM,KAAMA,GAAM,MAAM,EAAI,EACrEyD,EAAI3D,CAAC,EAAI,IAAIwxB,GAAMI,GAAMzsB,EAAKD,EAAM0sB,GAAM1sB,EAAOC,CAAE,CACrD,MACExB,EAAI3D,CAAC,EAAI,IAAIwxB,GAAMtsB,EAAMA,CAAI,CAEjC,CACA,OAAO,IAAIisB,GAAUxtB,EAAKhD,EAAI,IAAI,SAAS,CAC7C,CAIA,SAAS4xB,GAASpxB,EAAI,CACpBA,EAAG,IAAI,KAAO4K,GAAQ5K,EAAG,QAASA,EAAG,IAAI,UAAU,EACnDqxB,GAAerxB,CAAE,CACnB,CAEA,SAASqxB,GAAerxB,EAAI,CAC1BA,EAAG,IAAI,KAAK,SAAUsH,EAAM,CACtBA,EAAK,aAAcA,EAAK,WAAa,MACrCA,EAAK,SAAUA,EAAK,OAAS,KACnC,CAAC,EACDtH,EAAG,IAAI,aAAeA,EAAG,IAAI,kBAAoBA,EAAG,IAAI,MACxDwpB,GAAYxpB,EAAI,GAAG,EACnBA,EAAG,MAAM,UACLA,EAAG,OAAS0iB,GAAU1iB,CAAE,CAC9B,CAOA,SAASsxB,GAAkB9xB,EAAKiT,EAAQ,CACtC,OAAOA,EAAO,KAAK,IAAM,GAAKA,EAAO,GAAG,IAAM,GAAKpQ,GAAIoQ,EAAO,IAAI,GAAK,KACpE,CAACjT,EAAI,IAAMA,EAAI,GAAG,QAAQ,sBAC/B,CAGA,SAAS+xB,GAAU/xB,EAAKiT,EAAQsD,EAAaC,EAAgB,CAC3D,SAASwb,EAASvwB,GAAG,CAAC,OAAO8U,EAAcA,EAAY9U,EAAC,EAAI,IAAI,CAChE,SAASusB,EAAOlmB,GAAMsF,GAAM6E,GAAO,CACjCwE,GAAW3O,GAAMsF,GAAM6E,GAAOuE,CAAc,EAC5C0D,GAAYpS,GAAM,SAAUA,GAAMmL,CAAM,CAC1C,CACA,SAASgf,EAASzyB,GAAOC,GAAK,CAE5B,QADIuK,GAAS,CAAC,EACL3K,GAAIG,GAAOH,GAAII,GAAK,EAAEJ,GAC3B2K,GAAO,KAAK,IAAIsM,GAAKlJ,EAAK/N,EAAC,EAAG2yB,EAAS3yB,EAAC,EAAGmX,CAAc,CAAC,EAC9D,OAAOxM,EACT,CAEA,IAAIzF,EAAO0O,EAAO,KAAMzO,EAAKyO,EAAO,GAAI7F,EAAO6F,EAAO,KAClDif,GAAYllB,GAAQhN,EAAKuE,EAAK,IAAI,EAAG4tB,GAAWnlB,GAAQhN,EAAKwE,EAAG,IAAI,EACpE4tB,GAAWvvB,GAAIuK,CAAI,EAAGilB,GAAYL,EAAS5kB,EAAK,OAAS,CAAC,EAAGklB,GAAS9tB,EAAG,KAAOD,EAAK,KAGzF,GAAI0O,EAAO,KACTjT,EAAI,OAAO,EAAGiyB,EAAS,EAAG7kB,EAAK,MAAM,CAAC,EACtCpN,EAAI,OAAOoN,EAAK,OAAQpN,EAAI,KAAOoN,EAAK,MAAM,UACrC0kB,GAAkB9xB,EAAKiT,CAAM,EAAG,CAGzC,IAAIsf,GAAQN,EAAS,EAAG7kB,EAAK,OAAS,CAAC,EACvC4gB,EAAOmE,GAAUA,GAAS,KAAME,EAAS,EACrCC,IAAUtyB,EAAI,OAAOuE,EAAK,KAAM+tB,EAAM,EACtCC,GAAM,QAAUvyB,EAAI,OAAOuE,EAAK,KAAMguB,EAAK,CACjD,SAAWL,IAAaC,GACtB,GAAI/kB,EAAK,QAAU,EACjB4gB,EAAOkE,GAAWA,GAAU,KAAK,MAAM,EAAG3tB,EAAK,EAAE,EAAI6tB,GAAWF,GAAU,KAAK,MAAM1tB,EAAG,EAAE,EAAG6tB,EAAS,MACjG,CACL,IAAIG,GAAUP,EAAS,EAAG7kB,EAAK,OAAS,CAAC,EACzColB,GAAQ,KAAK,IAAIlc,GAAK8b,GAAWF,GAAU,KAAK,MAAM1tB,EAAG,EAAE,EAAG6tB,GAAW7b,CAAc,CAAC,EACxFwX,EAAOkE,GAAWA,GAAU,KAAK,MAAM,EAAG3tB,EAAK,EAAE,EAAI6I,EAAK,CAAC,EAAG4kB,EAAS,CAAC,CAAC,EACzEhyB,EAAI,OAAOuE,EAAK,KAAO,EAAGiuB,EAAO,CACnC,SACSplB,EAAK,QAAU,EACxB4gB,EAAOkE,GAAWA,GAAU,KAAK,MAAM,EAAG3tB,EAAK,EAAE,EAAI6I,EAAK,CAAC,EAAI+kB,GAAS,KAAK,MAAM3tB,EAAG,EAAE,EAAGwtB,EAAS,CAAC,CAAC,EACtGhyB,EAAI,OAAOuE,EAAK,KAAO,EAAG+tB,EAAM,MAC3B,CACLtE,EAAOkE,GAAWA,GAAU,KAAK,MAAM,EAAG3tB,EAAK,EAAE,EAAI6I,EAAK,CAAC,EAAG4kB,EAAS,CAAC,CAAC,EACzEhE,EAAOmE,GAAUC,GAAWD,GAAS,KAAK,MAAM3tB,EAAG,EAAE,EAAG6tB,EAAS,EACjE,IAAII,GAAUR,EAAS,EAAG7kB,EAAK,OAAS,CAAC,EACrCklB,GAAS,GAAKtyB,EAAI,OAAOuE,EAAK,KAAO,EAAG+tB,GAAS,CAAC,EACtDtyB,EAAI,OAAOuE,EAAK,KAAO,EAAGkuB,EAAO,CACnC,CAEAvY,GAAYla,EAAK,SAAUA,EAAKiT,CAAM,CACxC,CAGA,SAASyf,GAAW1yB,EAAKa,EAAG8xB,EAAgB,CAC1C,SAASC,EAAU5yB,EAAK6yB,EAAMC,EAAY,CACxC,GAAI9yB,EAAI,OAAU,QAASX,EAAI,EAAGA,EAAIW,EAAI,OAAO,OAAQ,EAAEX,EAAG,CAC5D,IAAI0zB,EAAM/yB,EAAI,OAAOX,CAAC,EACtB,GAAI0zB,EAAI,KAAOF,EACf,KAAIG,EAASF,GAAcC,EAAI,WAC3BJ,GAAkB,CAACK,IACvBnyB,EAAEkyB,EAAI,IAAKC,CAAM,EACjBJ,EAAUG,EAAI,IAAK/yB,EAAKgzB,CAAM,GAChC,CACF,CACAJ,EAAU5yB,EAAK,KAAM,EAAI,CAC3B,CAGA,SAASizB,GAAUzyB,EAAIR,EAAK,CAC1B,GAAIA,EAAI,GAAM,MAAM,IAAI,MAAM,kCAAkC,EAChEQ,EAAG,IAAMR,EACTA,EAAI,GAAKQ,EACTmiB,GAAoBniB,CAAE,EACtBoxB,GAASpxB,CAAE,EACX0yB,GAAkB1yB,CAAE,EACpBA,EAAG,QAAQ,UAAYR,EAAI,UACtBQ,EAAG,QAAQ,cAAgB6V,GAAY7V,CAAE,EAC9CA,EAAG,QAAQ,KAAOR,EAAI,WACtBkjB,GAAU1iB,CAAE,CACd,CAEA,SAAS0yB,GAAkB1yB,EAAI,EAC9BA,EAAG,IAAI,WAAa,MAAQN,GAAW5B,GAASkC,EAAG,QAAQ,QAAS,gBAAgB,CACrF,CAEA,SAAS2yB,GAAiB3yB,EAAI,CAC5BusB,GAAQvsB,EAAI,UAAY,CACtB0yB,GAAkB1yB,CAAE,EACpB0iB,GAAU1iB,CAAE,CACd,CAAC,CACH,CAEA,SAAS4yB,GAAQhtB,EAAM,CAIrB,KAAK,KAAO,CAAC,EAAG,KAAK,OAAS,CAAC,EAC/B,KAAK,UAAYA,EAAOA,EAAK,UAAY,IAGzC,KAAK,YAAc,KAAK,YAAc,EACtC,KAAK,OAAS,KAAK,UAAY,KAC/B,KAAK,WAAa,KAAK,cAAgB,KAEvC,KAAK,WAAa,KAAK,cAAgBA,EAAOA,EAAK,cAAgB,CACrE,CAIA,SAASitB,GAAwBrzB,EAAKiT,EAAQ,CAC5C,IAAIqgB,EAAa,CAAC,KAAMllB,GAAQ6E,EAAO,IAAI,EAAG,GAAIke,GAAUle,CAAM,EAAG,KAAM9F,GAAWnN,EAAKiT,EAAO,KAAMA,EAAO,EAAE,CAAC,EAClH,OAAAsgB,GAAiBvzB,EAAKszB,EAAYrgB,EAAO,KAAK,KAAMA,EAAO,GAAG,KAAO,CAAC,EACtEyf,GAAW1yB,EAAK,SAAUA,EAAK,CAAE,OAAOuzB,GAAiBvzB,EAAKszB,EAAYrgB,EAAO,KAAK,KAAMA,EAAO,GAAG,KAAO,CAAC,CAAG,EAAG,EAAI,EACjHqgB,CACT,CAIA,SAASE,GAAqBxxB,EAAO,CACnC,KAAOA,EAAM,QAAQ,CACnB,IAAI0M,EAAO7L,GAAIb,CAAK,EACpB,GAAI0M,EAAK,OAAU1M,EAAM,IAAI,MACtB,MACT,CACF,CAIA,SAASyxB,GAAgBC,EAAMhG,EAAO,CACpC,GAAIA,EACF,OAAA8F,GAAqBE,EAAK,IAAI,EACvB7wB,GAAI6wB,EAAK,IAAI,EACf,GAAIA,EAAK,KAAK,QAAU,CAAC7wB,GAAI6wB,EAAK,IAAI,EAAE,OAC7C,OAAO7wB,GAAI6wB,EAAK,IAAI,EACf,GAAIA,EAAK,KAAK,OAAS,GAAK,CAACA,EAAK,KAAKA,EAAK,KAAK,OAAS,CAAC,EAAE,OAClE,OAAAA,EAAK,KAAK,IAAI,EACP7wB,GAAI6wB,EAAK,IAAI,CAExB,CAKA,SAASC,GAAmB3zB,EAAKiT,EAAQ2gB,EAAUC,EAAM,CACvD,IAAIH,EAAO1zB,EAAI,QACf0zB,EAAK,OAAO,OAAS,EACrB,IAAI5xB,EAAO,CAAC,IAAI,KAAMoD,EAClBwJ,EAEJ,IAAKglB,EAAK,QAAUG,GACfH,EAAK,YAAczgB,EAAO,QAAUA,EAAO,SACzCA,EAAO,OAAO,OAAO,CAAC,GAAK,KAAOygB,EAAK,YAAc5xB,GAAQ9B,EAAI,GAAKA,EAAI,GAAG,QAAQ,kBAAoB,MAC1GiT,EAAO,OAAO,OAAO,CAAC,GAAK,QAC5B/N,EAAMuuB,GAAgBC,EAAMA,EAAK,QAAUG,CAAI,GAElDnlB,EAAO7L,GAAIqC,EAAI,OAAO,EAClBgJ,GAAI+E,EAAO,KAAMA,EAAO,EAAE,GAAK,GAAK/E,GAAI+E,EAAO,KAAMvE,EAAK,EAAE,GAAK,EAGnEA,EAAK,GAAKyiB,GAAUle,CAAM,EAG1B/N,EAAI,QAAQ,KAAKmuB,GAAwBrzB,EAAKiT,CAAM,CAAC,MAElD,CAEL,IAAI7L,EAASvE,GAAI6wB,EAAK,IAAI,EAM1B,KALI,CAACtsB,GAAU,CAACA,EAAO,SACnB0sB,GAAuB9zB,EAAI,IAAK0zB,EAAK,IAAI,EAC7CxuB,EAAM,CAAC,QAAS,CAACmuB,GAAwBrzB,EAAKiT,CAAM,CAAC,EAC9C,WAAYygB,EAAK,UAAU,EAClCA,EAAK,KAAK,KAAKxuB,CAAG,EACXwuB,EAAK,KAAK,OAASA,EAAK,WAC7BA,EAAK,KAAK,MAAM,EACXA,EAAK,KAAK,CAAC,EAAE,QAAUA,EAAK,KAAK,MAAM,CAEhD,CACAA,EAAK,KAAK,KAAKE,CAAQ,EACvBF,EAAK,WAAa,EAAEA,EAAK,cACzBA,EAAK,YAAcA,EAAK,YAAc5xB,EACtC4xB,EAAK,OAASA,EAAK,UAAYG,EAC/BH,EAAK,WAAaA,EAAK,cAAgBzgB,EAAO,OAEzCvE,GAAQrG,GAAOrI,EAAK,cAAc,CACzC,CAEA,SAAS+zB,GAA0B/zB,EAAKg0B,EAAQ5tB,EAAMynB,EAAK,CACzD,IAAIjqB,EAAKowB,EAAO,OAAO,CAAC,EACxB,OAAOpwB,GAAM,KACXA,GAAM,KACNwC,EAAK,OAAO,QAAUynB,EAAI,OAAO,QACjCznB,EAAK,kBAAkB,GAAKynB,EAAI,kBAAkB,GAClD,IAAI,KAAO7tB,EAAI,QAAQ,cAAgBA,EAAI,GAAKA,EAAI,GAAG,QAAQ,kBAAoB,IACvF,CAMA,SAASi0B,GAAsBj0B,EAAK6tB,EAAKgG,EAAMxoB,EAAS,CACtD,IAAIqoB,EAAO1zB,EAAI,QAASg0B,EAAS3oB,GAAWA,EAAQ,OAMhDwoB,GAAQH,EAAK,WACZM,GAAUN,EAAK,eAAiBM,IAC/BN,EAAK,aAAeA,EAAK,aAAeA,EAAK,YAAcM,GAC3DD,GAA0B/zB,EAAKg0B,EAAQnxB,GAAI6wB,EAAK,IAAI,EAAG7F,CAAG,GAC5D6F,EAAK,KAAKA,EAAK,KAAK,OAAS,CAAC,EAAI7F,EAElCiG,GAAuBjG,EAAK6F,EAAK,IAAI,EAEzCA,EAAK,YAAc,CAAC,IAAI,KACxBA,EAAK,cAAgBM,EACrBN,EAAK,UAAYG,EACbxoB,GAAWA,EAAQ,YAAc,IACjCmoB,GAAqBE,EAAK,MAAM,CACtC,CAEA,SAASI,GAAuBjG,EAAKqG,EAAM,CACzC,IAAIzV,EAAM5b,GAAIqxB,CAAI,EACZzV,GAAOA,EAAI,QAAUA,EAAI,OAAOoP,CAAG,GACrCqG,EAAK,KAAKrG,CAAG,CACnB,CAGA,SAAS0F,GAAiBvzB,EAAKiT,EAAQ1O,EAAMC,EAAI,CAC/C,IAAI2vB,EAAWlhB,EAAO,SAAWjT,EAAI,EAAE,EAAGyB,EAAI,EAC9CzB,EAAI,KAAK,KAAK,IAAIA,EAAI,MAAOuE,CAAI,EAAG,KAAK,IAAIvE,EAAI,MAAQA,EAAI,KAAMwE,CAAE,EAAG,SAAUsD,EAAM,CAClFA,EAAK,eACJqsB,IAAaA,EAAWlhB,EAAO,SAAWjT,EAAI,EAAE,EAAI,CAAC,IAAIyB,CAAC,EAAIqG,EAAK,aACxE,EAAErG,CACJ,CAAC,CACH,CAIA,SAAS2yB,GAAmBniB,EAAO,CACjC,GAAI,CAACA,EAAS,OAAO,KAErB,QADIjP,EACK3D,EAAI,EAAGA,EAAI4S,EAAM,OAAQ,EAAE5S,EAC9B4S,EAAM5S,CAAC,EAAE,OAAO,kBAA0B2D,IAAOA,EAAMiP,EAAM,MAAM,EAAG5S,CAAC,GAClE2D,GAAOA,EAAI,KAAKiP,EAAM5S,CAAC,CAAC,EAEnC,OAAQ2D,EAAcA,EAAI,OAASA,EAAM,KAA3BiP,CAChB,CAGA,SAASoiB,GAAYr0B,EAAKiT,EAAQ,CAChC,IAAIpO,EAAQoO,EAAO,SAAWjT,EAAI,EAAE,EACpC,GAAI,CAAC6E,EAAS,OAAO,KAErB,QADI8N,EAAK,CAAC,EACDtT,EAAI,EAAGA,EAAI4T,EAAO,KAAK,OAAQ,EAAE5T,EACtCsT,EAAG,KAAKyhB,GAAmBvvB,EAAMxF,CAAC,CAAC,CAAC,EACxC,OAAOsT,CACT,CAMA,SAAS2hB,GAAct0B,EAAKiT,EAAQ,CAClC,IAAIT,EAAM6hB,GAAYr0B,EAAKiT,CAAM,EAC7BshB,EAAYvhB,GAAuBhT,EAAKiT,CAAM,EAClD,GAAI,CAACT,EAAO,OAAO+hB,EACnB,GAAI,CAACA,EAAa,OAAO/hB,EAEzB,QAASnT,EAAI,EAAGA,EAAImT,EAAI,OAAQ,EAAEnT,EAAG,CACnC,IAAIm1B,EAAShiB,EAAInT,CAAC,EAAGo1B,EAAaF,EAAUl1B,CAAC,EAC7C,GAAIm1B,GAAUC,EACZxiB,EAAO,QAASnL,EAAI,EAAGA,EAAI2tB,EAAW,OAAQ,EAAE3tB,EAAG,CAEjD,QADIoL,EAAOuiB,EAAW3tB,CAAC,EACduU,EAAI,EAAGA,EAAImZ,EAAO,OAAQ,EAAEnZ,EACjC,GAAImZ,EAAOnZ,CAAC,EAAE,QAAUnJ,EAAK,OAAU,SAASD,EACpDuiB,EAAO,KAAKtiB,CAAI,CAClB,MACSuiB,IACTjiB,EAAInT,CAAC,EAAIo1B,EAEb,CACA,OAAOjiB,CACT,CAIA,SAASkiB,GAAiBC,EAAQC,EAAUC,EAAgB,CAE1D,QADI3lB,EAAO,CAAC,EACH7P,EAAI,EAAGA,EAAIs1B,EAAO,OAAQ,EAAEt1B,EAAG,CACtC,IAAIy1B,EAAQH,EAAOt1B,CAAC,EACpB,GAAIy1B,EAAM,OAAQ,CAChB5lB,EAAK,KAAK2lB,EAAiBrE,GAAU,UAAU,SAAS,KAAKsE,CAAK,EAAIA,CAAK,EAC3E,QACF,CACA,IAAItD,EAAUsD,EAAM,QAASC,EAAa,CAAC,EAC3C7lB,EAAK,KAAK,CAAC,QAAS6lB,CAAU,CAAC,EAC/B,QAASjuB,EAAI,EAAGA,EAAI0qB,EAAQ,OAAQ,EAAE1qB,EAAG,CACvC,IAAImM,EAASue,EAAQ1qB,CAAC,EAAGS,GAAK,OAE9B,GADAwtB,EAAW,KAAK,CAAC,KAAM9hB,EAAO,KAAM,GAAIA,EAAO,GAAI,KAAMA,EAAO,IAAI,CAAC,EACjE2hB,EAAY,QAASzzB,MAAQ8R,GAAc1L,GAAIpG,GAAK,MAAM,eAAe,IACvEY,GAAQ6yB,EAAU,OAAOrtB,GAAE,CAAC,CAAC,CAAC,EAAI,KACpC1E,GAAIkyB,CAAU,EAAE5zB,EAAI,EAAI8R,EAAO9R,EAAI,EACnC,OAAO8R,EAAO9R,EAAI,EAGxB,CACF,CACA,OAAO+N,CACT,CAUA,SAAS8lB,GAAYz1B,EAAO+kB,EAAM/D,EAAO0U,EAAQ,CAC/C,GAAIA,EAAQ,CACV,IAAI7S,EAAS7iB,EAAM,OACnB,GAAIghB,EAAO,CACT,IAAI2U,EAAYhnB,GAAIoW,EAAMlC,CAAM,EAAI,EAChC8S,GAAchnB,GAAIqS,EAAO6B,CAAM,EAAI,GACrCA,EAASkC,EACTA,EAAO/D,GACE2U,GAAchnB,GAAIoW,EAAM/D,CAAK,EAAI,IAC1C+D,EAAO/D,EAEX,CACA,OAAO,IAAIsQ,GAAMzO,EAAQkC,CAAI,CAC/B,KACE,QAAO,IAAIuM,GAAMtQ,GAAS+D,EAAMA,CAAI,CAExC,CAGA,SAAS6Q,GAAgBn1B,EAAKskB,EAAM/D,EAAOlV,EAAS4pB,EAAQ,CACtDA,GAAU,OAAQA,EAASj1B,EAAI,KAAOA,EAAI,GAAG,QAAQ,OAASA,EAAI,SACtEo1B,GAAap1B,EAAK,IAAIwwB,GAAU,CAACwE,GAAYh1B,EAAI,IAAI,QAAQ,EAAGskB,EAAM/D,EAAO0U,CAAM,CAAC,EAAG,CAAC,EAAG5pB,CAAO,CACpG,CAIA,SAASgqB,GAAiBr1B,EAAKs1B,EAAOjqB,EAAS,CAG7C,QAFIrI,EAAM,CAAC,EACPiyB,EAASj1B,EAAI,KAAOA,EAAI,GAAG,QAAQ,OAASA,EAAI,QAC3CX,EAAI,EAAGA,EAAIW,EAAI,IAAI,OAAO,OAAQX,IACvC2D,EAAI3D,CAAC,EAAI21B,GAAYh1B,EAAI,IAAI,OAAOX,CAAC,EAAGi2B,EAAMj2B,CAAC,EAAG,KAAM41B,CAAM,EAClE,IAAIM,EAASzE,GAAmB9wB,EAAI,GAAIgD,EAAKhD,EAAI,IAAI,SAAS,EAC9Do1B,GAAap1B,EAAKu1B,EAAQlqB,CAAO,CACnC,CAGA,SAASmqB,GAAoBx1B,EAAKX,EAAGE,EAAO8L,EAAS,CACnD,IAAIolB,EAASzwB,EAAI,IAAI,OAAO,MAAM,CAAC,EACnCywB,EAAOpxB,CAAC,EAAIE,EACZ61B,GAAap1B,EAAK8wB,GAAmB9wB,EAAI,GAAIywB,EAAQzwB,EAAI,IAAI,SAAS,EAAGqL,CAAO,CAClF,CAGA,SAASoqB,GAAmBz1B,EAAKoiB,EAAQkC,EAAMjZ,EAAS,CACtD+pB,GAAap1B,EAAKkxB,GAAgB9O,EAAQkC,CAAI,EAAGjZ,CAAO,CAC1D,CAIA,SAASqqB,GAAsB11B,EAAK6tB,EAAKxiB,EAAS,CAChD,IAAIrK,EAAM,CACR,OAAQ6sB,EAAI,OACZ,OAAQ,SAAS4C,EAAQ,CACvB,KAAK,OAAS,CAAC,EACf,QAASpxB,EAAI,EAAGA,EAAIoxB,EAAO,OAAQpxB,IAC/B,KAAK,OAAOA,CAAC,EAAI,IAAIwxB,GAAMpiB,GAAQzO,EAAKywB,EAAOpxB,CAAC,EAAE,MAAM,EAC/BoP,GAAQzO,EAAKywB,EAAOpxB,CAAC,EAAE,IAAI,CAAC,CAC3D,EACA,OAAQgM,GAAWA,EAAQ,MAC7B,EAGA,OAFAhD,GAAOrI,EAAK,wBAAyBA,EAAKgB,CAAG,EACzChB,EAAI,IAAMqI,GAAOrI,EAAI,GAAI,wBAAyBA,EAAI,GAAIgB,CAAG,EAC7DA,EAAI,QAAU6sB,EAAI,OAAiBiD,GAAmB9wB,EAAI,GAAIgB,EAAI,OAAQA,EAAI,OAAO,OAAS,CAAC,EACrF6sB,CAChB,CAEA,SAAS8H,GAA2B31B,EAAK6tB,EAAKxiB,EAAS,CACrD,IAAIuqB,EAAO51B,EAAI,QAAQ,KAAM0O,EAAO7L,GAAI+yB,CAAI,EACxClnB,GAAQA,EAAK,QACfknB,EAAKA,EAAK,OAAS,CAAC,EAAI/H,EACxBgI,GAAmB71B,EAAK6tB,EAAKxiB,CAAO,GAEpC+pB,GAAap1B,EAAK6tB,EAAKxiB,CAAO,CAElC,CAGA,SAAS+pB,GAAap1B,EAAK6tB,EAAKxiB,EAAS,CACvCwqB,GAAmB71B,EAAK6tB,EAAKxiB,CAAO,EACpC4oB,GAAsBj0B,EAAKA,EAAI,IAAKA,EAAI,GAAKA,EAAI,GAAG,MAAM,GAAK,IAAKqL,CAAO,CAC7E,CAEA,SAASwqB,GAAmB71B,EAAK6tB,EAAKxiB,EAAS,EACzCzC,GAAW5I,EAAK,uBAAuB,GAAKA,EAAI,IAAM4I,GAAW5I,EAAI,GAAI,uBAAuB,KAChG6tB,EAAM6H,GAAsB11B,EAAK6tB,EAAKxiB,CAAO,GAEjD,IAAI8R,EAAO9R,GAAWA,EAAQ,OAC3B6C,GAAI2f,EAAI,QAAQ,EAAE,KAAM7tB,EAAI,IAAI,QAAQ,EAAE,IAAI,EAAI,EAAI,GAAK,GAC9D81B,GAAkB91B,EAAK+1B,GAAsB/1B,EAAK6tB,EAAK1Q,EAAM,EAAI,CAAC,EAE9D,EAAE9R,GAAWA,EAAQ,SAAW,KAAUrL,EAAI,IAAMA,EAAI,GAAG,UAAU,UAAU,GAAK,YACpFypB,GAAoBzpB,EAAI,EAAE,CAChC,CAEA,SAAS81B,GAAkB91B,EAAK6tB,EAAK,CAC/BA,EAAI,OAAO7tB,EAAI,GAAG,IAEtBA,EAAI,IAAM6tB,EAEN7tB,EAAI,KACNA,EAAI,GAAG,MAAM,YAAc,EAC3BA,EAAI,GAAG,MAAM,iBAAmB,GAChC0I,GAAqB1I,EAAI,EAAE,GAE7Bka,GAAYla,EAAK,iBAAkBA,CAAG,EACxC,CAIA,SAASg2B,GAAiBh2B,EAAK,CAC7B81B,GAAkB91B,EAAK+1B,GAAsB/1B,EAAKA,EAAI,IAAK,KAAM,EAAK,CAAC,CACzE,CAIA,SAAS+1B,GAAsB/1B,EAAK6tB,EAAK1Q,EAAM8Y,EAAU,CAEvD,QADIjzB,EACK3D,EAAI,EAAGA,EAAIwuB,EAAI,OAAO,OAAQxuB,IAAK,CAC1C,IAAIE,EAAQsuB,EAAI,OAAOxuB,CAAC,EACpBmT,EAAMqb,EAAI,OAAO,QAAU7tB,EAAI,IAAI,OAAO,QAAUA,EAAI,IAAI,OAAOX,CAAC,EACpE62B,EAAYC,GAAWn2B,EAAKT,EAAM,OAAQiT,GAAOA,EAAI,OAAQ2K,EAAM8Y,CAAQ,EAC3EG,EAAU72B,EAAM,MAAQA,EAAM,OAAS22B,EAAYC,GAAWn2B,EAAKT,EAAM,KAAMiT,GAAOA,EAAI,KAAM2K,EAAM8Y,CAAQ,GAC9GjzB,GAAOkzB,GAAa32B,EAAM,QAAU62B,GAAW72B,EAAM,QAClDyD,IAAOA,EAAM6qB,EAAI,OAAO,MAAM,EAAGxuB,CAAC,GACvC2D,EAAI3D,CAAC,EAAI,IAAIwxB,GAAMqF,EAAWE,CAAO,EAEzC,CACA,OAAOpzB,EAAM8tB,GAAmB9wB,EAAI,GAAIgD,EAAK6qB,EAAI,SAAS,EAAIA,CAChE,CAEA,SAASwI,GAAgBr2B,EAAKwC,EAAK8zB,EAAQlyB,EAAK6xB,EAAU,CACxD,IAAInuB,EAAOkF,GAAQhN,EAAKwC,EAAI,IAAI,EAChC,GAAIsF,EAAK,YAAe,QAASzI,EAAI,EAAGA,EAAIyI,EAAK,YAAY,OAAQ,EAAEzI,EAAG,CACxE,IAAI6V,EAAKpN,EAAK,YAAYzI,CAAC,EAAGkI,EAAI2N,EAAG,OAKjCqhB,EAAqB,eAAgBhvB,EAAK,CAACA,EAAE,WAAaA,EAAE,cAC5DivB,GAAsB,gBAAiBjvB,EAAK,CAACA,EAAE,YAAcA,EAAE,eAEnE,IAAK2N,EAAG,MAAQ,OAASqhB,EAAoBrhB,EAAG,MAAQ1S,EAAI,GAAK0S,EAAG,KAAO1S,EAAI,OAC1E0S,EAAG,IAAM,OAASshB,GAAqBthB,EAAG,IAAM1S,EAAI,GAAK0S,EAAG,GAAK1S,EAAI,KAAM,CAC9E,GAAIyzB,IACF5tB,GAAOd,EAAG,mBAAmB,EACzBA,EAAE,mBACJ,GAAKO,EAAK,YACL,CAAC,EAAEzI,EAAG,QAAQ,KADM,OAI7B,GAAI,CAACkI,EAAE,OAAU,SAEjB,GAAI+uB,EAAQ,CACV,IAAIG,GAAOlvB,EAAE,KAAKnD,EAAM,EAAI,EAAI,EAAE,EAAGoJ,GAAQ,OAG7C,IAFIpJ,EAAM,EAAIoyB,GAAqBD,KAC/BE,GAAOC,GAAQ12B,EAAKy2B,GAAM,CAACryB,EAAKqyB,IAAQA,GAAK,MAAQj0B,EAAI,KAAOsF,EAAO,IAAI,GAC3E2uB,IAAQA,GAAK,MAAQj0B,EAAI,OAASgL,GAAOU,GAAIuoB,GAAMH,CAAM,KAAOlyB,EAAM,EAAIoJ,GAAO,EAAIA,GAAO,GAC5F,OAAO6oB,GAAgBr2B,EAAKy2B,GAAMj0B,EAAK4B,EAAK6xB,CAAQ,CAC1D,CAEA,IAAIU,GAAMpvB,EAAE,KAAKnD,EAAM,EAAI,GAAK,CAAC,EACjC,OAAIA,EAAM,EAAImyB,EAAoBC,MAC9BG,GAAMD,GAAQ12B,EAAK22B,GAAKvyB,EAAKuyB,GAAI,MAAQn0B,EAAI,KAAOsF,EAAO,IAAI,GAC5D6uB,GAAMN,GAAgBr2B,EAAK22B,GAAKn0B,EAAK4B,EAAK6xB,CAAQ,EAAI,IAC/D,CACF,CACA,OAAOzzB,CACT,CAGA,SAAS2zB,GAAWn2B,EAAKwC,EAAK8zB,EAAQnZ,EAAM8Y,EAAU,CACpD,IAAI7xB,EAAM+Y,GAAQ,EACdtY,EAAQwxB,GAAgBr2B,EAAKwC,EAAK8zB,EAAQlyB,EAAK6xB,CAAQ,GACtD,CAACA,GAAYI,GAAgBr2B,EAAKwC,EAAK8zB,EAAQlyB,EAAK,EAAI,GACzDiyB,GAAgBr2B,EAAKwC,EAAK8zB,EAAQ,CAAClyB,EAAK6xB,CAAQ,GAC/C,CAACA,GAAYI,GAAgBr2B,EAAKwC,EAAK8zB,EAAQ,CAAClyB,EAAK,EAAI,EAC9D,OAAKS,IACH7E,EAAI,SAAW,GACRiO,GAAIjO,EAAI,MAAO,CAAC,EAG3B,CAEA,SAAS02B,GAAQ12B,EAAKwC,EAAK4B,EAAK0D,EAAM,CACpC,OAAI1D,EAAM,GAAK5B,EAAI,IAAM,EACnBA,EAAI,KAAOxC,EAAI,MAAgByO,GAAQzO,EAAKiO,GAAIzL,EAAI,KAAO,CAAC,CAAC,EACnD,KACL4B,EAAM,GAAK5B,EAAI,KAAOsF,GAAQkF,GAAQhN,EAAKwC,EAAI,IAAI,GAAG,KAAK,OAChEA,EAAI,KAAOxC,EAAI,MAAQA,EAAI,KAAO,EAAYiO,GAAIzL,EAAI,KAAO,EAAG,CAAC,EACvD,KAEP,IAAIyL,GAAIzL,EAAI,KAAMA,EAAI,GAAK4B,CAAG,CAEzC,CAEA,SAASwyB,GAAUp2B,EAAI,CACrBA,EAAG,aAAayN,GAAIzN,EAAG,UAAU,EAAG,CAAC,EAAGyN,GAAIzN,EAAG,SAAS,CAAC,EAAG2B,EAAc,CAC5E,CAKA,SAAS00B,GAAa72B,EAAKiT,EAAQ+a,EAAQ,CACzC,IAAIhtB,EAAM,CACR,SAAU,GACV,KAAMiS,EAAO,KACb,GAAIA,EAAO,GACX,KAAMA,EAAO,KACb,OAAQA,EAAO,OACf,OAAQ,UAAY,CAAE,OAAOjS,EAAI,SAAW,EAAM,CACpD,EAUA,OATIgtB,IAAUhtB,EAAI,OAAS,SAAUuD,EAAMC,EAAI4I,EAAM4mB,EAAQ,CACvDzvB,IAAQvD,EAAI,KAAOyN,GAAQzO,EAAKuE,CAAI,GACpCC,IAAMxD,EAAI,GAAKyN,GAAQzO,EAAKwE,CAAE,GAC9B4I,IAAQpM,EAAI,KAAOoM,GACnB4mB,IAAW,SAAahzB,EAAI,OAASgzB,EAC3C,GACA3rB,GAAOrI,EAAK,eAAgBA,EAAKgB,CAAG,EAChChB,EAAI,IAAMqI,GAAOrI,EAAI,GAAI,eAAgBA,EAAI,GAAIgB,CAAG,EAEpDA,EAAI,UACFhB,EAAI,KAAMA,EAAI,GAAG,MAAM,YAAc,GAClC,MAEF,CAAC,KAAMgB,EAAI,KAAM,GAAIA,EAAI,GAAI,KAAMA,EAAI,KAAM,OAAQA,EAAI,MAAM,CACxE,CAIA,SAAS81B,GAAW92B,EAAKiT,EAAQ8jB,EAAgB,CAC/C,GAAI/2B,EAAI,GAAI,CACV,GAAI,CAACA,EAAI,GAAG,MAAS,OAAOgtB,GAAUhtB,EAAI,GAAI82B,EAAU,EAAE92B,EAAKiT,EAAQ8jB,CAAc,EACrF,GAAI/2B,EAAI,GAAG,MAAM,cAAiB,MACpC,CAEA,GAAI,GAAA4I,GAAW5I,EAAK,cAAc,GAAKA,EAAI,IAAM4I,GAAW5I,EAAI,GAAI,cAAc,KAChFiT,EAAS4jB,GAAa72B,EAAKiT,EAAQ,EAAI,EACnC,CAACA,IAKP,KAAI+jB,EAAQtlB,IAAoB,CAACqlB,GAAkBljB,GAAqB7T,EAAKiT,EAAO,KAAMA,EAAO,EAAE,EACnG,GAAI+jB,EACF,QAAS33B,EAAI23B,EAAM,OAAS,EAAG33B,GAAK,EAAG,EAAEA,EACrC43B,GAAgBj3B,EAAK,CAAC,KAAMg3B,EAAM33B,CAAC,EAAE,KAAM,GAAI23B,EAAM33B,CAAC,EAAE,GAAI,KAAMA,EAAI,CAAC,EAAE,EAAI4T,EAAO,KAAM,OAAQA,EAAO,MAAM,CAAC,OAEpHgkB,GAAgBj3B,EAAKiT,CAAM,EAE/B,CAEA,SAASgkB,GAAgBj3B,EAAKiT,EAAQ,CACpC,GAAI,EAAAA,EAAO,KAAK,QAAU,GAAKA,EAAO,KAAK,CAAC,GAAK,IAAM/E,GAAI+E,EAAO,KAAMA,EAAO,EAAE,GAAK,GACtF,KAAI2gB,EAAWvC,GAAsBrxB,EAAKiT,CAAM,EAChD0gB,GAAmB3zB,EAAKiT,EAAQ2gB,EAAU5zB,EAAI,GAAKA,EAAI,GAAG,MAAM,GAAK,GAAG,EAExEk3B,GAAoBl3B,EAAKiT,EAAQ2gB,EAAU5gB,GAAuBhT,EAAKiT,CAAM,CAAC,EAC9E,IAAIkkB,EAAU,CAAC,EAEfzE,GAAW1yB,EAAK,SAAUA,EAAK8yB,EAAY,CACrC,CAACA,GAAc/wB,GAAQo1B,EAASn3B,EAAI,OAAO,GAAK,KAClDo3B,GAAWp3B,EAAI,QAASiT,CAAM,EAC9BkkB,EAAQ,KAAKn3B,EAAI,OAAO,GAE1Bk3B,GAAoBl3B,EAAKiT,EAAQ,KAAMD,GAAuBhT,EAAKiT,CAAM,CAAC,CAC5E,CAAC,EACH,CAGA,SAASokB,GAAsBr3B,EAAKqG,EAAMixB,EAAoB,CAC5D,IAAIC,EAAWv3B,EAAI,IAAMA,EAAI,GAAG,MAAM,cACtC,GAAI,EAAAu3B,GAAY,CAACD,GAQjB,SANI5D,EAAO1zB,EAAI,QAAS80B,EAAOlB,EAAW5zB,EAAI,IAC1Cw3B,EAASnxB,GAAQ,OAASqtB,EAAK,KAAOA,EAAK,OAAQQ,EAAO7tB,GAAQ,OAASqtB,EAAK,OAASA,EAAK,KAI9Fr0B,EAAI,EACDA,EAAIm4B,EAAO,SAChB1C,EAAQ0C,EAAOn4B,CAAC,EACZ,EAAAi4B,EAAqBxC,EAAM,QAAU,CAACA,EAAM,OAAO90B,EAAI,GAAG,EAAI,CAAC80B,EAAM,SAFjDz1B,IAExB,CAGF,GAAIA,GAAKm4B,EAAO,OAGhB,KAFA9D,EAAK,WAAaA,EAAK,cAAgB,OAIrC,GADAoB,EAAQ0C,EAAO,IAAI,EACf1C,EAAM,OAAQ,CAEhB,GADAhB,GAAuBgB,EAAOZ,CAAI,EAC9BoD,GAAsB,CAACxC,EAAM,OAAO90B,EAAI,GAAG,EAAG,CAChDo1B,GAAap1B,EAAK80B,EAAO,CAAC,UAAW,EAAK,CAAC,EAC3C,MACF,CACAlB,EAAWkB,CACb,SAAWyC,EAAU,CACnBC,EAAO,KAAK1C,CAAK,EACjB,MACF,KAAS,OAKX,IAAI2C,GAAc,CAAC,EACnB3D,GAAuBF,EAAUM,CAAI,EACrCA,EAAK,KAAK,CAAC,QAASuD,GAAa,WAAY/D,EAAK,UAAU,CAAC,EAC7DA,EAAK,WAAaoB,EAAM,YAAc,EAAEpB,EAAK,cA6B7C,QA3BIgE,GAAS9uB,GAAW5I,EAAK,cAAc,GAAKA,EAAI,IAAM4I,GAAW5I,EAAI,GAAI,cAAc,EAEvFyP,GAAO,SAAWpQ,GAAI,CACxB,IAAI4T,GAAS6hB,EAAM,QAAQz1B,EAAC,EAE5B,GADA4T,GAAO,OAAS5M,EACZqxB,IAAU,CAACb,GAAa72B,EAAKiT,GAAQ,EAAK,EAC5C,OAAAukB,EAAO,OAAS,EACT,CAAC,EAGVC,GAAY,KAAKpE,GAAwBrzB,EAAKiT,EAAM,CAAC,EAErD,IAAIvU,GAAQW,GAAIgyB,GAAsBrxB,EAAKiT,EAAM,EAAIpQ,GAAI20B,CAAM,EAC/DN,GAAoBl3B,EAAKiT,GAAQvU,GAAO41B,GAAct0B,EAAKiT,EAAM,CAAC,EAC9D,CAAC5T,IAAKW,EAAI,IAAMA,EAAI,GAAG,eAAe,CAAC,KAAMiT,GAAO,KAAM,GAAIke,GAAUle,EAAM,CAAC,CAAC,EACpF,IAAIkkB,GAAU,CAAC,EAGfzE,GAAW1yB,EAAK,SAAUA,GAAK8yB,GAAY,CACrC,CAACA,IAAc/wB,GAAQo1B,GAASn3B,GAAI,OAAO,GAAK,KAClDo3B,GAAWp3B,GAAI,QAASiT,EAAM,EAC9BkkB,GAAQ,KAAKn3B,GAAI,OAAO,GAE1Bk3B,GAAoBl3B,GAAKiT,GAAQ,KAAMqhB,GAAct0B,GAAKiT,EAAM,CAAC,CACnE,CAAC,CACH,EAES9M,GAAM2uB,EAAM,QAAQ,OAAS,EAAG3uB,IAAO,EAAG,EAAEA,GAAK,CACxD,IAAIwxB,GAAWloB,GAAMtJ,EAAI,EAEzB,GAAKwxB,GAAW,OAAOA,GAAS,CAClC,GACF,CAIA,SAASC,GAAS53B,EAAK63B,EAAU,CAC/B,GAAIA,GAAY,IAChB73B,EAAI,OAAS63B,EACb73B,EAAI,IAAM,IAAIwwB,GAAUztB,GAAI/C,EAAI,IAAI,OAAQ,SAAUT,EAAO,CAAE,OAAO,IAAIsxB,GACxE5iB,GAAI1O,EAAM,OAAO,KAAOs4B,EAAUt4B,EAAM,OAAO,EAAE,EACjD0O,GAAI1O,EAAM,KAAK,KAAOs4B,EAAUt4B,EAAM,KAAK,EAAE,CAC/C,CAAG,CAAC,EAAGS,EAAI,IAAI,SAAS,EACpBA,EAAI,IAAI,CACVkjB,GAAUljB,EAAI,GAAIA,EAAI,MAAOA,EAAI,MAAQ63B,EAAUA,CAAQ,EAC3D,QAASrM,EAAIxrB,EAAI,GAAG,QAASiK,EAAIuhB,EAAE,SAAUvhB,EAAIuhB,EAAE,OAAQvhB,IACvDyZ,GAAc1jB,EAAI,GAAIiK,EAAG,QAAQ,CACvC,CACF,CAIA,SAASitB,GAAoBl3B,EAAKiT,EAAQ2gB,EAAU3hB,EAAO,CACzD,GAAIjS,EAAI,IAAM,CAACA,EAAI,GAAG,MAClB,OAAOgtB,GAAUhtB,EAAI,GAAIk3B,EAAmB,EAAEl3B,EAAKiT,EAAQ2gB,EAAU3hB,CAAK,EAE9E,GAAIgB,EAAO,GAAG,KAAOjT,EAAI,MAAO,CAC9B43B,GAAS53B,EAAKiT,EAAO,KAAK,OAAS,GAAKA,EAAO,GAAG,KAAOA,EAAO,KAAK,KAAK,EAC1E,MACF,CACA,GAAI,EAAAA,EAAO,KAAK,KAAOjT,EAAI,SAAS,GAGpC,IAAIiT,EAAO,KAAK,KAAOjT,EAAI,MAAO,CAChC,IAAI83B,EAAQ7kB,EAAO,KAAK,OAAS,GAAKjT,EAAI,MAAQiT,EAAO,KAAK,MAC9D2kB,GAAS53B,EAAK83B,CAAK,EACnB7kB,EAAS,CAAC,KAAMhF,GAAIjO,EAAI,MAAO,CAAC,EAAG,GAAIiO,GAAIgF,EAAO,GAAG,KAAO6kB,EAAO7kB,EAAO,GAAG,EAAE,EACrE,KAAM,CAACpQ,GAAIoQ,EAAO,IAAI,CAAC,EAAG,OAAQA,EAAO,MAAM,CAC3D,CACA,IAAIvE,EAAO1O,EAAI,SAAS,EACpBiT,EAAO,GAAG,KAAOvE,IACnBuE,EAAS,CAAC,KAAMA,EAAO,KAAM,GAAIhF,GAAIS,EAAM1B,GAAQhN,EAAK0O,CAAI,EAAE,KAAK,MAAM,EAC/D,KAAM,CAACuE,EAAO,KAAK,CAAC,CAAC,EAAG,OAAQA,EAAO,MAAM,GAGzDA,EAAO,QAAU9F,GAAWnN,EAAKiT,EAAO,KAAMA,EAAO,EAAE,EAElD2gB,IAAYA,EAAWvC,GAAsBrxB,EAAKiT,CAAM,GACzDjT,EAAI,GAAM+3B,GAA4B/3B,EAAI,GAAIiT,EAAQhB,CAAK,EACxD8f,GAAU/xB,EAAKiT,EAAQhB,CAAK,EACnC4jB,GAAmB71B,EAAK4zB,EAAUzxB,EAAc,EAE5CnC,EAAI,UAAYm2B,GAAWn2B,EAAKiO,GAAIjO,EAAI,UAAU,EAAG,CAAC,CAAC,IACvDA,EAAI,SAAW,IACrB,CAIA,SAAS+3B,GAA4Bv3B,EAAIyS,EAAQhB,EAAO,CACtD,IAAIjS,EAAMQ,EAAG,IAAK0P,EAAU1P,EAAG,QAAS+D,EAAO0O,EAAO,KAAMzO,EAAKyO,EAAO,GAEpE+kB,EAAqB,GAAOC,EAAkB1zB,EAAK,KAClD/D,EAAG,QAAQ,eACdy3B,EAAkBxqB,EAAO8H,GAAWvI,GAAQhN,EAAKuE,EAAK,IAAI,CAAC,CAAC,EAC5DvE,EAAI,KAAKi4B,EAAiBzzB,EAAG,KAAO,EAAG,SAAUsD,GAAM,CACrD,GAAIA,IAAQoI,EAAQ,QAClB,OAAA8nB,EAAqB,GACd,EAEX,CAAC,GAGCh4B,EAAI,IAAI,SAASiT,EAAO,KAAMA,EAAO,EAAE,EAAI,IAC3CvK,GAAqBlI,CAAE,EAE3BuxB,GAAU/xB,EAAKiT,EAAQhB,EAAOuE,GAAehW,CAAE,CAAC,EAE3CA,EAAG,QAAQ,eACdR,EAAI,KAAKi4B,EAAiB1zB,EAAK,KAAO0O,EAAO,KAAK,OAAQ,SAAUnL,GAAM,CACxE,IAAI7B,GAAMmQ,GAAWtO,EAAI,EACrB7B,GAAMiK,EAAQ,gBAChBA,EAAQ,QAAUpI,GAClBoI,EAAQ,cAAgBjK,GACxBiK,EAAQ,eAAiB,GACzB8nB,EAAqB,GAEzB,CAAC,EACGA,IAAsBx3B,EAAG,MAAM,cAAgB,KAGrDiR,GAAgBzR,EAAKuE,EAAK,IAAI,EAC9BylB,GAAYxpB,EAAI,GAAG,EAEnB,IAAI2iB,EAAUlQ,EAAO,KAAK,QAAUzO,EAAG,KAAOD,EAAK,MAAQ,EAEvD0O,EAAO,KACPiQ,GAAU1iB,CAAE,EACP+D,EAAK,MAAQC,EAAG,MAAQyO,EAAO,KAAK,QAAU,GAAK,CAAC6e,GAAkBtxB,EAAG,IAAKyS,CAAM,EACzFyQ,GAAcljB,EAAI+D,EAAK,KAAM,MAAM,EAEnC2e,GAAU1iB,EAAI+D,EAAK,KAAMC,EAAG,KAAO,EAAG2e,CAAO,EAEjD,IAAI+U,GAAiBtvB,GAAWpI,EAAI,SAAS,EAAG23B,GAAgBvvB,GAAWpI,EAAI,QAAQ,EACvF,GAAI23B,IAAiBD,GAAgB,CACnC,IAAIl3B,GAAM,CACR,KAAMuD,EAAM,GAAIC,EAChB,KAAMyO,EAAO,KACb,QAASA,EAAO,QAChB,OAAQA,EAAO,MACjB,EACIklB,IAAiBje,GAAY1Z,EAAI,SAAUA,EAAIQ,EAAG,EAClDk3B,KAAmB13B,EAAG,MAAM,aAAeA,EAAG,MAAM,WAAa,CAAC,IAAI,KAAKQ,EAAG,CACpF,CACAR,EAAG,QAAQ,kBAAoB,IACjC,CAEA,SAAS43B,GAAap4B,EAAKuF,EAAMhB,EAAMC,EAAIwvB,EAAQ,CACjD,IAAIqE,EAEC7zB,IAAMA,EAAKD,GACZ2J,GAAI1J,EAAID,CAAI,EAAI,IAAM8zB,EAAS,CAAC7zB,EAAID,CAAI,EAAGA,EAAO8zB,EAAO,CAAC,EAAG7zB,EAAK6zB,EAAO,CAAC,GAC1E,OAAO9yB,GAAQ,WAAYA,EAAOvF,EAAI,WAAWuF,CAAI,GACzDuxB,GAAW92B,EAAK,CAAC,KAAMuE,EAAM,GAAIC,EAAI,KAAMe,EAAM,OAAQyuB,CAAM,CAAC,CAClE,CAIA,SAASsE,GAAoB91B,EAAK+B,EAAMC,EAAIgJ,EAAM,CAC5ChJ,EAAKhC,EAAI,KACXA,EAAI,MAAQgL,EACHjJ,EAAO/B,EAAI,OACpBA,EAAI,KAAO+B,EACX/B,EAAI,GAAK,EAEb,CASA,SAAS+1B,GAAgBv2B,EAAOuC,EAAMC,EAAIgJ,EAAM,CAC9C,QAASnO,EAAI,EAAGA,EAAI2C,EAAM,OAAQ,EAAE3C,EAAG,CACrC,IAAIm5B,EAAMx2B,EAAM3C,CAAC,EAAGmN,EAAK,GACzB,GAAIgsB,EAAI,OAAQ,CACTA,EAAI,SAAUA,EAAMx2B,EAAM3C,CAAC,EAAIm5B,EAAI,SAAS,EAAGA,EAAI,OAAS,IACjE,QAAS1xB,EAAI,EAAGA,EAAI0xB,EAAI,OAAO,OAAQ1xB,IACrCwxB,GAAoBE,EAAI,OAAO1xB,CAAC,EAAE,OAAQvC,EAAMC,EAAIgJ,CAAI,EACxD8qB,GAAoBE,EAAI,OAAO1xB,CAAC,EAAE,KAAMvC,EAAMC,EAAIgJ,CAAI,EAExD,QACF,CACA,QAASlG,EAAM,EAAGA,EAAMkxB,EAAI,QAAQ,OAAQ,EAAElxB,EAAK,CACjD,IAAIpC,EAAMszB,EAAI,QAAQlxB,CAAG,EACzB,GAAI9C,EAAKU,EAAI,KAAK,KAChBA,EAAI,KAAO+I,GAAI/I,EAAI,KAAK,KAAOsI,EAAMtI,EAAI,KAAK,EAAE,EAChDA,EAAI,GAAK+I,GAAI/I,EAAI,GAAG,KAAOsI,EAAMtI,EAAI,GAAG,EAAE,UACjCX,GAAQW,EAAI,GAAG,KAAM,CAC9BsH,EAAK,GACL,KACF,CACF,CACKA,IACHxK,EAAM,OAAO,EAAG3C,EAAI,CAAC,EACrBA,EAAI,EAER,CACF,CAEA,SAAS+3B,GAAW1D,EAAMzgB,EAAQ,CAChC,IAAI1O,EAAO0O,EAAO,KAAK,KAAMzO,EAAKyO,EAAO,GAAG,KAAMzF,EAAOyF,EAAO,KAAK,QAAUzO,EAAKD,GAAQ,EAC5Fg0B,GAAgB7E,EAAK,KAAMnvB,EAAMC,EAAIgJ,CAAI,EACzC+qB,GAAgB7E,EAAK,OAAQnvB,EAAMC,EAAIgJ,CAAI,CAC7C,CAKA,SAASirB,GAAWz4B,EAAK04B,EAAQC,EAAYtmB,EAAI,CAC/C,IAAI3E,EAAKgrB,EAAQ5wB,EAAO4wB,EAGxB,OAFI,OAAOA,GAAU,SAAY5wB,EAAOkF,GAAQhN,EAAKwO,GAASxO,EAAK04B,CAAM,CAAC,EACnEhrB,EAAKD,EAAOirB,CAAM,EACrBhrB,GAAM,KAAe,MACrB2E,EAAGvK,EAAM4F,CAAE,GAAK1N,EAAI,IAAM0jB,GAAc1jB,EAAI,GAAI0N,EAAIirB,CAAU,EAC3D7wB,EACT,CAeA,SAAS8wB,GAAUjjB,EAAO,CACxB,KAAK,MAAQA,EACb,KAAK,OAAS,KAEd,QADIpI,EAAS,EACJlO,EAAI,EAAGA,EAAIsW,EAAM,OAAQ,EAAEtW,EAClCsW,EAAMtW,CAAC,EAAE,OAAS,KAClBkO,GAAUoI,EAAMtW,CAAC,EAAE,OAErB,KAAK,OAASkO,CAChB,CAEAqrB,GAAU,UAAY,CACpB,UAAW,UAAW,CAAE,OAAO,KAAK,MAAM,MAAO,EAGjD,YAAa,SAASnxB,EAAIhG,EAAG,CAC3B,QAASpC,EAAIoI,EAAI7I,EAAI6I,EAAKhG,EAAGpC,EAAIT,EAAG,EAAES,EAAG,CACvC,IAAIyI,EAAO,KAAK,MAAMzI,CAAC,EACvB,KAAK,QAAUyI,EAAK,OACpB6O,GAAY7O,CAAI,EAChBoS,GAAYpS,EAAM,QAAQ,CAC5B,CACA,KAAK,MAAM,OAAOL,EAAIhG,CAAC,CACzB,EAGA,SAAU,SAASkU,EAAO,CACxBA,EAAM,KAAK,MAAMA,EAAO,KAAK,KAAK,CACpC,EAIA,YAAa,SAASlO,EAAIkO,EAAOpI,EAAQ,CACvC,KAAK,QAAUA,EACf,KAAK,MAAQ,KAAK,MAAM,MAAM,EAAG9F,CAAE,EAAE,OAAOkO,CAAK,EAAE,OAAO,KAAK,MAAM,MAAMlO,CAAE,CAAC,EAC9E,QAASpI,EAAI,EAAGA,EAAIsW,EAAM,OAAQ,EAAEtW,EAAKsW,EAAMtW,CAAC,EAAE,OAAS,IAC7D,EAGA,MAAO,SAASoI,EAAIhG,EAAG4Q,EAAI,CACzB,QAASzT,EAAI6I,EAAKhG,EAAGgG,EAAK7I,EAAG,EAAE6I,EAC3B,GAAI4K,EAAG,KAAK,MAAM5K,CAAE,CAAC,EAAK,MAAO,EACvC,CACF,EAEA,SAASoxB,GAAYC,EAAU,CAC7B,KAAK,SAAWA,EAEhB,QADItgB,EAAO,EAAGjL,EAAS,EACdlO,EAAI,EAAGA,EAAIy5B,EAAS,OAAQ,EAAEz5B,EAAG,CACxC,IAAIuE,EAAKk1B,EAASz5B,CAAC,EACnBmZ,GAAQ5U,EAAG,UAAU,EAAG2J,GAAU3J,EAAG,OACrCA,EAAG,OAAS,IACd,CACA,KAAK,KAAO4U,EACZ,KAAK,OAASjL,EACd,KAAK,OAAS,IAChB,CAEAsrB,GAAY,UAAY,CACtB,UAAW,UAAW,CAAE,OAAO,KAAK,IAAK,EAEzC,YAAa,SAASpxB,EAAIhG,EAAG,CAC3B,KAAK,MAAQA,EACb,QAASpC,EAAI,EAAGA,EAAI,KAAK,SAAS,OAAQ,EAAEA,EAAG,CAC7C,IAAIQ,EAAQ,KAAK,SAASR,CAAC,EAAG6N,EAAKrN,EAAM,UAAU,EACnD,GAAI4H,EAAKyF,EAAI,CACX,IAAIwhB,EAAK,KAAK,IAAIjtB,EAAGyL,EAAKzF,CAAE,EAAG2f,EAAYvnB,EAAM,OAIjD,GAHAA,EAAM,YAAY4H,EAAIinB,CAAE,EACxB,KAAK,QAAUtH,EAAYvnB,EAAM,OAC7BqN,GAAMwhB,IAAM,KAAK,SAAS,OAAOrvB,IAAK,CAAC,EAAGQ,EAAM,OAAS,OACxD4B,GAAKitB,IAAO,EAAK,MACtBjnB,EAAK,CACP,MAASA,GAAMyF,CACjB,CAGA,GAAI,KAAK,KAAOzL,EAAI,KACf,KAAK,SAAS,OAAS,GAAK,EAAE,KAAK,SAAS,CAAC,YAAam3B,KAAa,CAC1E,IAAIjjB,EAAQ,CAAC,EACb,KAAK,SAASA,CAAK,EACnB,KAAK,SAAW,CAAC,IAAIijB,GAAUjjB,CAAK,CAAC,EACrC,KAAK,SAAS,CAAC,EAAE,OAAS,IAC5B,CACF,EAEA,SAAU,SAASA,EAAO,CACxB,QAAStW,EAAI,EAAGA,EAAI,KAAK,SAAS,OAAQ,EAAEA,EAAK,KAAK,SAASA,CAAC,EAAE,SAASsW,CAAK,CAClF,EAEA,YAAa,SAASlO,EAAIkO,EAAOpI,EAAQ,CACvC,KAAK,MAAQoI,EAAM,OACnB,KAAK,QAAUpI,EACf,QAASlO,EAAI,EAAGA,EAAI,KAAK,SAAS,OAAQ,EAAEA,EAAG,CAC7C,IAAIQ,EAAQ,KAAK,SAASR,CAAC,EAAG6N,EAAKrN,EAAM,UAAU,EACnD,GAAI4H,GAAMyF,EAAI,CAEZ,GADArN,EAAM,YAAY4H,EAAIkO,EAAOpI,CAAM,EAC/B1N,EAAM,OAASA,EAAM,MAAM,OAAS,GAAI,CAI1C,QADIk5B,EAAYl5B,EAAM,MAAM,OAAS,GAAK,GACjC2C,EAAMu2B,EAAWv2B,EAAM3C,EAAM,MAAM,QAAS,CACnD,IAAIm5B,EAAO,IAAIJ,GAAU/4B,EAAM,MAAM,MAAM2C,EAAKA,GAAO,EAAE,CAAC,EAC1D3C,EAAM,QAAUm5B,EAAK,OACrB,KAAK,SAAS,OAAO,EAAE35B,EAAG,EAAG25B,CAAI,EACjCA,EAAK,OAAS,IAChB,CACAn5B,EAAM,MAAQA,EAAM,MAAM,MAAM,EAAGk5B,CAAS,EAC5C,KAAK,WAAW,CAClB,CACA,KACF,CACAtxB,GAAMyF,CACR,CACF,EAGA,WAAY,UAAW,CACrB,GAAI,OAAK,SAAS,QAAU,IAC5B,KAAI+rB,EAAK,KACT,EAAG,CACD,IAAIC,EAAUD,EAAG,SAAS,OAAOA,EAAG,SAAS,OAAS,EAAG,CAAC,EACtDE,EAAU,IAAIN,GAAYK,CAAO,EACrC,GAAKD,EAAG,OAKF,CACJA,EAAG,MAAQE,EAAQ,KACnBF,EAAG,QAAUE,EAAQ,OACrB,IAAIC,EAAUr3B,GAAQk3B,EAAG,OAAO,SAAUA,CAAE,EAC5CA,EAAG,OAAO,SAAS,OAAOG,EAAU,EAAG,EAAGD,CAAO,CACnD,KAVgB,CACd,IAAIjqB,EAAO,IAAI2pB,GAAYI,EAAG,QAAQ,EACtC/pB,EAAK,OAAS+pB,EACdA,EAAG,SAAW,CAAC/pB,EAAMiqB,CAAO,EAC5BF,EAAK/pB,CACR,CAMCiqB,EAAQ,OAASF,EAAG,MACtB,OAASA,EAAG,SAAS,OAAS,IAC9BA,EAAG,OAAO,WAAW,EACvB,EAEA,MAAO,SAASxxB,EAAIhG,EAAG4Q,EAAI,CACzB,QAAShT,EAAI,EAAGA,EAAI,KAAK,SAAS,OAAQ,EAAEA,EAAG,CAC7C,IAAIQ,EAAQ,KAAK,SAASR,CAAC,EAAG6N,EAAKrN,EAAM,UAAU,EACnD,GAAI4H,EAAKyF,EAAI,CACX,IAAImsB,EAAO,KAAK,IAAI53B,EAAGyL,EAAKzF,CAAE,EAC9B,GAAI5H,EAAM,MAAM4H,EAAI4xB,EAAMhnB,CAAE,EAAK,MAAO,GACxC,IAAK5Q,GAAK43B,IAAS,EAAK,MACxB5xB,EAAK,CACP,MAASA,GAAMyF,CACjB,CACF,CACF,EAIA,IAAIosB,GAAa,SAASt5B,EAAKzB,EAAM8M,EAAS,CAC5C,GAAIA,EAAW,QAASkuB,KAAOluB,EAAeA,EAAQ,eAAekuB,CAAG,IACpE,KAAKA,CAAG,EAAIluB,EAAQkuB,CAAG,GAC3B,KAAK,IAAMv5B,EACX,KAAK,KAAOzB,CACd,EAEA+6B,GAAW,UAAU,MAAQ,UAAY,CACvC,IAAI94B,EAAK,KAAK,IAAI,GAAIqb,EAAK,KAAK,KAAK,QAAS/T,EAAO,KAAK,KAAM4F,EAAKD,EAAO3F,CAAI,EAChF,GAAI,EAAA4F,GAAM,MAAQ,CAACmO,GACnB,SAASxc,EAAI,EAAGA,EAAIwc,EAAG,OAAQ,EAAExc,EAASwc,EAAGxc,CAAC,GAAK,MAAQwc,EAAG,OAAOxc,IAAK,CAAC,EACtEwc,EAAG,SAAU/T,EAAK,QAAU,MACjC,IAAIyF,EAASyO,GAAa,IAAI,EAC9B1O,GAAiBxF,EAAM,KAAK,IAAI,EAAGA,EAAK,OAASyF,CAAM,CAAC,EACpD/M,IACFusB,GAAQvsB,EAAI,UAAY,CACtBg5B,GAA6Bh5B,EAAIsH,EAAM,CAACyF,CAAM,EAC9CmW,GAAcljB,EAAIkN,EAAI,QAAQ,CAChC,CAAC,EACDwM,GAAY1Z,EAAI,oBAAqBA,EAAI,KAAMkN,CAAE,GAErD,EAEA4rB,GAAW,UAAU,QAAU,UAAY,CACvC,IAAIG,EAAS,KAEXC,EAAO,KAAK,OAAQl5B,EAAK,KAAK,IAAI,GAAIsH,EAAO,KAAK,KACtD,KAAK,OAAS,KACd,IAAI0F,EAAOwO,GAAa,IAAI,EAAI0d,EAC3BlsB,IACAwI,GAAa,KAAK,IAAKlO,CAAI,GAAKwF,GAAiBxF,EAAMA,EAAK,OAAS0F,CAAI,EAC1EhN,GACFusB,GAAQvsB,EAAI,UAAY,CACtBA,EAAG,MAAM,YAAc,GACvBg5B,GAA6Bh5B,EAAIsH,EAAM0F,CAAI,EAC3C0M,GAAY1Z,EAAI,oBAAqBA,EAAIi5B,EAAQhsB,EAAO3F,CAAI,CAAC,CAC/D,CAAC,EAEL,EACAe,GAAWywB,EAAU,EAErB,SAASE,GAA6Bh5B,EAAIsH,EAAM0F,EAAM,CAChD0I,GAAapO,CAAI,GAAMtH,EAAG,OAASA,EAAG,MAAM,WAAcA,EAAG,IAAI,YACjE+oB,GAAe/oB,EAAIgN,CAAI,CAC7B,CAEA,SAASmsB,GAAc35B,EAAK04B,EAAQn6B,EAAM8M,EAAS,CACjD,IAAIqN,EAAS,IAAI4gB,GAAWt5B,EAAKzB,EAAM8M,CAAO,EAC1C7K,EAAKR,EAAI,GACb,OAAIQ,GAAMkY,EAAO,YAAalY,EAAG,QAAQ,aAAe,IACxDi4B,GAAWz4B,EAAK04B,EAAQ,SAAU,SAAU5wB,EAAM,CAChD,IAAIsX,EAAUtX,EAAK,UAAYA,EAAK,QAAU,CAAC,GAI/C,GAHI4Q,EAAO,UAAY,KAAQ0G,EAAQ,KAAK1G,CAAM,EAC3C0G,EAAQ,OAAO,KAAK,IAAIA,EAAQ,OAAQ,KAAK,IAAI,EAAG1G,EAAO,QAAQ,CAAC,EAAG,EAAGA,CAAM,EACvFA,EAAO,KAAO5Q,EACVtH,GAAM,CAACwV,GAAahW,EAAK8H,CAAI,EAAG,CAClC,IAAI8xB,EAAe1jB,GAAapO,CAAI,EAAI9H,EAAI,UAC5CsN,GAAiBxF,EAAMA,EAAK,OAASkU,GAAatD,CAAM,CAAC,EACrDkhB,GAAgBrQ,GAAe/oB,EAAIkY,EAAO,MAAM,EACpDlY,EAAG,MAAM,YAAc,EACzB,CACA,MAAO,EACT,CAAC,EACGA,GAAM0Z,GAAY1Z,EAAI,kBAAmBA,EAAIkY,EAAQ,OAAOggB,GAAU,SAAWA,EAASjrB,EAAOirB,CAAM,CAAC,EACrGhgB,CACT,CAiBA,IAAImhB,GAAe,EAEfC,GAAa,SAAS95B,EAAKqG,EAAM,CACnC,KAAK,MAAQ,CAAC,EACd,KAAK,KAAOA,EACZ,KAAK,IAAMrG,EACX,KAAK,GAAK,EAAE65B,EACd,EAGAC,GAAW,UAAU,MAAQ,UAAY,CACvC,GAAI,MAAK,kBACT,KAAIt5B,EAAK,KAAK,IAAI,GAAIu5B,EAASv5B,GAAM,CAACA,EAAG,MAEzC,GADIu5B,GAAUjO,GAAetrB,CAAE,EAC3BoI,GAAW,KAAM,OAAO,EAAG,CAC7B,IAAI/D,EAAQ,KAAK,KAAK,EAClBA,GAASqV,GAAY,KAAM,QAASrV,EAAM,KAAMA,EAAM,EAAE,CAC9D,CAEA,QADIm1B,EAAM,KAAMC,EAAM,KACb56B,EAAI,EAAGA,EAAI,KAAK,MAAM,OAAQ,EAAEA,EAAG,CAC1C,IAAIyI,EAAO,KAAK,MAAMzI,CAAC,EACnB6S,EAAOF,GAAiBlK,EAAK,YAAa,IAAI,EAC9CtH,GAAM,CAAC,KAAK,UAAakjB,GAAcljB,EAAIiN,EAAO3F,CAAI,EAAG,MAAM,EAC1DtH,IACH0R,EAAK,IAAM,OAAQ+nB,EAAMxsB,EAAO3F,CAAI,GACpCoK,EAAK,MAAQ,OAAQ8nB,EAAMvsB,EAAO3F,CAAI,IAE5CA,EAAK,YAAcqK,GAAiBrK,EAAK,YAAaoK,CAAI,EACtDA,EAAK,MAAQ,MAAQ,KAAK,WAAa,CAAC8D,GAAa,KAAK,IAAKlO,CAAI,GAAKtH,GACxE8M,GAAiBxF,EAAMqa,GAAW3hB,EAAG,OAAO,CAAC,CACnD,CACA,GAAIA,GAAM,KAAK,WAAa,CAACA,EAAG,QAAQ,aAAgB,QAAS2F,EAAM,EAAGA,EAAM,KAAK,MAAM,OAAQ,EAAEA,EAAK,CACxG,IAAI+zB,EAAS3kB,GAAW,KAAK,MAAMpP,CAAG,CAAC,EAAGF,GAAMmQ,GAAW8jB,CAAM,EAC7Dj0B,GAAMzF,EAAG,QAAQ,gBACnBA,EAAG,QAAQ,QAAU05B,EACrB15B,EAAG,QAAQ,cAAgByF,GAC3BzF,EAAG,QAAQ,eAAiB,GAEhC,CAEIw5B,GAAO,MAAQx5B,GAAM,KAAK,WAAa0iB,GAAU1iB,EAAIw5B,EAAKC,EAAM,CAAC,EACrE,KAAK,MAAM,OAAS,EACpB,KAAK,kBAAoB,GACrB,KAAK,QAAU,KAAK,IAAI,WAC1B,KAAK,IAAI,SAAW,GAChBz5B,GAAMw1B,GAAiBx1B,EAAG,GAAG,GAE/BA,GAAM0Z,GAAY1Z,EAAI,gBAAiBA,EAAI,KAAMw5B,EAAKC,CAAG,EACzDF,GAAUhO,GAAavrB,CAAE,EACzB,KAAK,QAAU,KAAK,OAAO,MAAM,EACvC,EAOAs5B,GAAW,UAAU,KAAO,SAAUrU,EAAMtP,EAAS,CAC/CsP,GAAQ,MAAQ,KAAK,MAAQ,aAAcA,EAAO,GAEtD,QADIlhB,EAAMC,EACDnF,EAAI,EAAGA,EAAI,KAAK,MAAM,OAAQ,EAAEA,EAAG,CAC1C,IAAIyI,EAAO,KAAK,MAAMzI,CAAC,EACnB6S,EAAOF,GAAiBlK,EAAK,YAAa,IAAI,EAClD,GAAIoK,EAAK,MAAQ,OACf3N,EAAO0J,GAAIkI,EAAUrO,EAAO2F,EAAO3F,CAAI,EAAGoK,EAAK,IAAI,EAC/CuT,GAAQ,IAAM,OAAOlhB,EAE3B,GAAI2N,EAAK,IAAM,OACb1N,EAAKyJ,GAAIkI,EAAUrO,EAAO2F,EAAO3F,CAAI,EAAGoK,EAAK,EAAE,EAC3CuT,GAAQ,GAAK,OAAOjhB,CAE5B,CACA,OAAOD,GAAQ,CAAC,KAAMA,EAAM,GAAIC,CAAE,CACpC,EAIAs1B,GAAW,UAAU,QAAU,UAAY,CACvC,IAAIL,EAAS,KAEXj3B,EAAM,KAAK,KAAK,GAAI,EAAI,EAAGkW,EAAS,KAAMlY,EAAK,KAAK,IAAI,GACxD,CAACgC,GAAO,CAAChC,GACbusB,GAAQvsB,EAAI,UAAY,CACtB,IAAIsH,EAAOtF,EAAI,KAAMqT,EAAQpI,EAAOjL,EAAI,IAAI,EACxCiX,EAAO6D,GAAgB9c,EAAIqV,CAAK,EAMpC,GALI4D,IACFoF,GAA6BpF,CAAI,EACjCjZ,EAAG,MAAM,iBAAmBA,EAAG,MAAM,YAAc,IAErDA,EAAG,MAAM,cAAgB,GACrB,CAACwV,GAAa0C,EAAO,IAAK5Q,CAAI,GAAK4Q,EAAO,QAAU,KAAM,CAC5D,IAAI0O,EAAY1O,EAAO,OACvBA,EAAO,OAAS,KAChB,IAAIyhB,EAAUne,GAAatD,CAAM,EAAI0O,EACjC+S,GACA7sB,GAAiBxF,EAAMA,EAAK,OAASqyB,CAAO,CAClD,CACAjgB,GAAY1Z,EAAI,gBAAiBA,EAAIi5B,CAAM,CAC7C,CAAC,CACH,EAEAK,GAAW,UAAU,WAAa,SAAUhyB,EAAM,CAChD,GAAI,CAAC,KAAK,MAAM,QAAU,KAAK,IAAI,GAAI,CACrC,IAAIuK,EAAK,KAAK,IAAI,GAAG,OACjB,CAACA,EAAG,oBAAsBtQ,GAAQsQ,EAAG,mBAAoB,IAAI,GAAK,MACjEA,EAAG,uBAAyBA,EAAG,qBAAuB,CAAC,IAAI,KAAK,IAAI,CAC3E,CACA,KAAK,MAAM,KAAKvK,CAAI,CACtB,EAEAgyB,GAAW,UAAU,WAAa,SAAUhyB,EAAM,CAEhD,GADA,KAAK,MAAM,OAAO/F,GAAQ,KAAK,MAAO+F,CAAI,EAAG,CAAC,EAC1C,CAAC,KAAK,MAAM,QAAU,KAAK,IAAI,GAAI,CACrC,IAAIuK,EAAK,KAAK,IAAI,GAAG,OACnBA,EAAG,qBAAuBA,EAAG,mBAAqB,CAAC,IAAI,KAAK,IAAI,CACpE,CACF,EACAxJ,GAAWixB,EAAU,EAGrB,SAASM,GAASp6B,EAAKuE,EAAMC,EAAI6G,EAAShF,EAAM,CAI9C,GAAIgF,GAAWA,EAAQ,OAAU,OAAOgvB,GAAer6B,EAAKuE,EAAMC,EAAI6G,EAAShF,CAAI,EAEnF,GAAIrG,EAAI,IAAM,CAACA,EAAI,GAAG,MAAS,OAAOgtB,GAAUhtB,EAAI,GAAIo6B,EAAQ,EAAEp6B,EAAKuE,EAAMC,EAAI6G,EAAShF,CAAI,EAE9F,IAAI0L,EAAS,IAAI+nB,GAAW95B,EAAKqG,CAAI,EAAGmH,EAAOU,GAAI3J,EAAMC,CAAE,EAG3D,GAFI6G,GAAWtK,GAAQsK,EAAS0G,EAAQ,EAAK,EAEzCvE,EAAO,GAAKA,GAAQ,GAAKuE,EAAO,iBAAmB,GACnD,OAAOA,EAQX,GAPIA,EAAO,eAETA,EAAO,UAAY,GACnBA,EAAO,WAAazS,EAAK,OAAQ,CAACyS,EAAO,YAAY,EAAG,mBAAmB,EACtE1G,EAAQ,mBAAqB0G,EAAO,WAAW,aAAa,mBAAoB,MAAM,EACvF1G,EAAQ,aAAc0G,EAAO,WAAW,WAAa,KAEvDA,EAAO,UAAW,CACpB,GAAIuD,GAA0BtV,EAAKuE,EAAK,KAAMA,EAAMC,EAAIuN,CAAM,GAC1DxN,EAAK,MAAQC,EAAG,MAAQ8Q,GAA0BtV,EAAKwE,EAAG,KAAMD,EAAMC,EAAIuN,CAAM,EAChF,MAAM,IAAI,MAAM,kEAAkE,EACtFF,GAAkB,CACpB,CAEIE,EAAO,cACP4hB,GAAmB3zB,EAAK,CAAC,KAAMuE,EAAM,GAAIC,EAAI,OAAQ,UAAU,EAAGxE,EAAI,IAAK,GAAG,EAElF,IAAIs6B,EAAU/1B,EAAK,KAAM/D,EAAKR,EAAI,GAAIu6B,EA0BtC,GAzBAv6B,EAAI,KAAKs6B,EAAS91B,EAAG,KAAO,EAAG,SAAUsD,GAAM,CACzCtH,GAAMuR,EAAO,WAAa,CAACvR,EAAG,QAAQ,cAAgB+U,GAAWzN,EAAI,GAAKtH,EAAG,QAAQ,UACrF+5B,EAAgB,IAChBxoB,EAAO,WAAauoB,GAAW/1B,EAAK,MAAQ+I,GAAiBxF,GAAM,CAAC,EACxEsK,GAActK,GAAM,IAAIgK,GAAWC,EACAuoB,GAAW/1B,EAAK,KAAOA,EAAK,GAAK,KACjC+1B,GAAW91B,EAAG,KAAOA,EAAG,GAAK,IAAI,EAAGxE,EAAI,IAAMA,EAAI,GAAG,KAAK,EAC7F,EAAEs6B,CACJ,CAAC,EAEGvoB,EAAO,WAAa/R,EAAI,KAAKuE,EAAK,KAAMC,EAAG,KAAO,EAAG,SAAUsD,GAAM,CACnEkO,GAAahW,EAAK8H,EAAI,GAAKwF,GAAiBxF,GAAM,CAAC,CACzD,CAAC,EAEGiK,EAAO,cAAgB/J,EAAG+J,EAAQ,oBAAqB,UAAY,CAAE,OAAOA,EAAO,MAAM,CAAG,CAAC,EAE7FA,EAAO,WACTH,GAAiB,GACb5R,EAAI,QAAQ,KAAK,QAAUA,EAAI,QAAQ,OAAO,SAC9CA,EAAI,aAAa,GAEnB+R,EAAO,YACTA,EAAO,GAAK,EAAE8nB,GACd9nB,EAAO,OAAS,IAEdvR,EAAI,CAGN,GADI+5B,IAAiB/5B,EAAG,MAAM,cAAgB,IAC1CuR,EAAO,UACPmR,GAAU1iB,EAAI+D,EAAK,KAAMC,EAAG,KAAO,CAAC,UAC/BuN,EAAO,WAAaA,EAAO,YAAcA,EAAO,UAAYA,EAAO,KACnEA,EAAO,YAAcA,EAAO,MACjC,QAAS1S,GAAIkF,EAAK,KAAMlF,IAAKmF,EAAG,KAAMnF,KAAOqkB,GAAcljB,EAAInB,GAAG,MAAM,EACxE0S,EAAO,QAAUikB,GAAiBx1B,EAAG,GAAG,EAC5C0Z,GAAY1Z,EAAI,cAAeA,EAAIuR,CAAM,CAC3C,CACA,OAAOA,CACT,CAOA,IAAIyoB,GAAmB,SAAS1mB,EAASoQ,EAAS,CAChD,KAAK,QAAUpQ,EACf,KAAK,QAAUoQ,EACf,QAAS7kB,EAAI,EAAGA,EAAIyU,EAAQ,OAAQ,EAAEzU,EAClCyU,EAAQzU,CAAC,EAAE,OAAS,IAC1B,EAEAm7B,GAAiB,UAAU,MAAQ,UAAY,CAC7C,GAAI,MAAK,kBACT,MAAK,kBAAoB,GACzB,QAASn7B,EAAI,EAAGA,EAAI,KAAK,QAAQ,OAAQ,EAAEA,EACvC,KAAK,QAAQA,CAAC,EAAE,MAAM,EAC1B6a,GAAY,KAAM,OAAO,EAC3B,EAEAsgB,GAAiB,UAAU,KAAO,SAAU/U,EAAMtP,EAAS,CACzD,OAAO,KAAK,QAAQ,KAAKsP,EAAMtP,CAAO,CACxC,EACAtN,GAAW2xB,EAAgB,EAE3B,SAASH,GAAer6B,EAAKuE,EAAMC,EAAI6G,EAAShF,EAAM,CACpDgF,EAAUtK,GAAQsK,CAAO,EACzBA,EAAQ,OAAS,GACjB,IAAIyI,EAAU,CAACsmB,GAASp6B,EAAKuE,EAAMC,EAAI6G,EAAShF,CAAI,CAAC,EAAG6d,EAAUpQ,EAAQ,CAAC,EACvE4E,EAASrN,EAAQ,WACrB,OAAAqnB,GAAW1yB,EAAK,SAAUA,EAAK,CACzB0Y,IAAUrN,EAAQ,WAAaqN,EAAO,UAAU,EAAI,GACxD5E,EAAQ,KAAKsmB,GAASp6B,EAAKyO,GAAQzO,EAAKuE,CAAI,EAAGkK,GAAQzO,EAAKwE,CAAE,EAAG6G,EAAShF,CAAI,CAAC,EAC/E,QAAShH,EAAI,EAAGA,EAAIW,EAAI,OAAO,OAAQ,EAAEX,EACrC,GAAIW,EAAI,OAAOX,CAAC,EAAE,SAAY,OAClC6kB,EAAUrhB,GAAIiR,CAAO,CACvB,CAAC,EACM,IAAI0mB,GAAiB1mB,EAASoQ,CAAO,CAC9C,CAEA,SAASuW,GAAkBz6B,EAAK,CAC9B,OAAOA,EAAI,UAAUiO,GAAIjO,EAAI,MAAO,CAAC,EAAGA,EAAI,QAAQiO,GAAIjO,EAAI,SAAS,CAAC,CAAC,EAAG,SAAUuH,EAAG,CAAE,OAAOA,EAAE,MAAQ,CAAC,CAC7G,CAEA,SAASmzB,GAAkB16B,EAAK8T,EAAS,CACvC,QAASzU,EAAI,EAAGA,EAAIyU,EAAQ,OAAQzU,IAAK,CACvC,IAAI0S,EAAS+B,EAAQzU,CAAC,EAAGmD,EAAMuP,EAAO,KAAK,EACvC4oB,EAAQ36B,EAAI,QAAQwC,EAAI,IAAI,EAAGo4B,EAAM56B,EAAI,QAAQwC,EAAI,EAAE,EAC3D,GAAI0L,GAAIysB,EAAOC,CAAG,EAAG,CACnB,IAAIC,EAAUT,GAASp6B,EAAK26B,EAAOC,EAAK7oB,EAAO,QAASA,EAAO,QAAQ,IAAI,EAC3EA,EAAO,QAAQ,KAAK8oB,CAAO,EAC3BA,EAAQ,OAAS9oB,CACnB,CACF,CACF,CAEA,SAAS+oB,GAAoBhnB,EAAS,CAapC,QAZIrE,EAAO,SAAWpQ,EAAI,CACxB,IAAI0S,EAAS+B,EAAQzU,CAAC,EAAG07B,EAAS,CAAChpB,EAAO,QAAQ,GAAG,EACrD2gB,GAAW3gB,EAAO,QAAQ,IAAK,SAAUyZ,EAAG,CAAE,OAAOuP,EAAO,KAAKvP,CAAC,CAAG,CAAC,EACtE,QAAS1kB,EAAI,EAAGA,EAAIiL,EAAO,QAAQ,OAAQjL,IAAK,CAC9C,IAAIk0B,EAAYjpB,EAAO,QAAQjL,CAAC,EAC5B/E,GAAQg5B,EAAQC,EAAU,GAAG,GAAK,KACpCA,EAAU,OAAS,KACnBjpB,EAAO,QAAQ,OAAOjL,IAAK,CAAC,EAEhC,CACF,EAESzH,EAAI,EAAGA,EAAIyU,EAAQ,OAAQzU,IAAKoQ,EAAMpQ,CAAE,CACnD,CAEA,IAAI47B,GAAY,EACZC,GAAM,SAAS9tB,EAAMrC,EAAMmnB,EAAWiJ,EAASp1B,EAAW,CAC5D,GAAI,EAAE,gBAAgBm1B,IAAQ,OAAO,IAAIA,GAAI9tB,EAAMrC,EAAMmnB,EAAWiJ,EAASp1B,CAAS,EAClFmsB,GAAa,OAAQA,EAAY,GAErC2G,GAAY,KAAK,KAAM,CAAC,IAAID,GAAU,CAAC,IAAItiB,GAAK,GAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAC5D,KAAK,MAAQ4b,EACb,KAAK,UAAY,KAAK,WAAa,EACnC,KAAK,SAAW,GAChB,KAAK,gBAAkB,EACvB,KAAK,aAAe,KAAK,kBAAoBA,EAC7C,IAAI1yB,EAAQyO,GAAIikB,EAAW,CAAC,EAC5B,KAAK,IAAMhB,GAAgB1xB,CAAK,EAChC,KAAK,QAAU,IAAI4zB,GAAQ,IAAI,EAC/B,KAAK,GAAK,EAAE6H,GACZ,KAAK,WAAalwB,EAClB,KAAK,QAAUowB,EACf,KAAK,UAAap1B,GAAa,MAAS,MAAQ,MAChD,KAAK,OAAS,GAEV,OAAOqH,GAAQ,WAAYA,EAAO,KAAK,WAAWA,CAAI,GAC1D2kB,GAAU,KAAM,CAAC,KAAMvyB,EAAO,GAAIA,EAAO,KAAM4N,CAAI,CAAC,EACpDgoB,GAAa,KAAMlE,GAAgB1xB,CAAK,EAAG2C,EAAc,CAC3D,EAEA+4B,GAAI,UAAY53B,GAAUu1B,GAAY,UAAW,CAC/C,YAAaqC,GAKb,KAAM,SAAS32B,EAAMC,EAAI6N,EAAI,CACvBA,EAAM,KAAK,MAAM9N,EAAO,KAAK,MAAOC,EAAKD,EAAM8N,CAAE,EAC9C,KAAK,MAAM,KAAK,MAAO,KAAK,MAAQ,KAAK,KAAM9N,CAAI,CAC5D,EAGA,OAAQ,SAASkD,EAAIkO,EAAO,CAE1B,QADIpI,EAAS,EACJlO,EAAI,EAAGA,EAAIsW,EAAM,OAAQ,EAAEtW,EAAKkO,GAAUoI,EAAMtW,CAAC,EAAE,OAC5D,KAAK,YAAYoI,EAAK,KAAK,MAAOkO,EAAOpI,CAAM,CACjD,EACA,OAAQ,SAAS9F,EAAIhG,EAAG,CAAE,KAAK,YAAYgG,EAAK,KAAK,MAAOhG,CAAC,CAAG,EAKhE,SAAU,SAAS05B,EAAS,CAC1B,IAAIxlB,EAAQtI,GAAS,KAAM,KAAK,MAAO,KAAK,MAAQ,KAAK,IAAI,EAC7D,OAAI8tB,IAAY,GAAgBxlB,EACzBA,EAAM,KAAKwlB,GAAW,KAAK,cAAc,CAAC,CACnD,EACA,SAAUjO,GAAY,SAAS3nB,EAAM,CACnC,IAAIkZ,EAAMxQ,GAAI,KAAK,MAAO,CAAC,EAAGS,EAAO,KAAK,MAAQ,KAAK,KAAO,EAC9DooB,GAAW,KAAM,CAAC,KAAMrY,EAAK,GAAIxQ,GAAIS,EAAM1B,GAAQ,KAAM0B,CAAI,EAAE,KAAK,MAAM,EACxD,KAAM,KAAK,WAAWnJ,CAAI,EAAG,OAAQ,WAAY,KAAM,EAAI,EAAG,EAAI,EAChF,KAAK,IAAMmkB,GAAe,KAAK,GAAI,EAAG,CAAC,EAC3C0L,GAAa,KAAMlE,GAAgBzS,CAAG,EAAGtc,EAAc,CACzD,CAAC,EACD,aAAc,SAASoD,EAAMhB,EAAMC,EAAIwvB,EAAQ,CAC7CzvB,EAAOkK,GAAQ,KAAMlK,CAAI,EACzBC,EAAKA,EAAKiK,GAAQ,KAAMjK,CAAE,EAAID,EAC9B6zB,GAAa,KAAM7yB,EAAMhB,EAAMC,EAAIwvB,CAAM,CAC3C,EACA,SAAU,SAASzvB,EAAMC,EAAI22B,EAAS,CACpC,IAAIxlB,EAAQxI,GAAW,KAAMsB,GAAQ,KAAMlK,CAAI,EAAGkK,GAAQ,KAAMjK,CAAE,CAAC,EACnE,OAAI22B,IAAY,GAAgBxlB,EAC5BwlB,IAAY,GAAaxlB,EAAM,KAAK,EAAE,EACnCA,EAAM,KAAKwlB,GAAW,KAAK,cAAc,CAAC,CACnD,EAEA,QAAS,SAASrzB,EAAM,CAAC,IAAImC,EAAI,KAAK,cAAcnC,CAAI,EAAG,OAAOmC,GAAKA,EAAE,IAAI,EAE7E,cAAe,SAASnC,EAAM,CAAC,GAAIiG,GAAO,KAAMjG,CAAI,EAAK,OAAOkF,GAAQ,KAAMlF,CAAI,CAAG,EACrF,cAAe,SAASA,EAAM,CAAC,OAAO2F,EAAO3F,CAAI,CAAC,EAElD,yBAA0B,SAASA,EAAM,CACvC,OAAI,OAAOA,GAAQ,WAAYA,EAAOkF,GAAQ,KAAMlF,CAAI,GACjDyN,GAAWzN,CAAI,CACxB,EAEA,UAAW,UAAW,CAAC,OAAO,KAAK,IAAI,EACvC,UAAW,UAAW,CAAC,OAAO,KAAK,KAAK,EACxC,SAAU,UAAW,CAAC,OAAO,KAAK,MAAQ,KAAK,KAAO,CAAC,EAEvD,QAAS,SAAStF,EAAK,CAAC,OAAOiM,GAAQ,KAAMjM,CAAG,CAAC,EAEjD,UAAW,SAAShD,EAAO,CACzB,IAAID,EAAQ,KAAK,IAAI,QAAQ,EAAGiD,EAChC,OAAIhD,GAAS,MAAQA,GAAS,OAAUgD,EAAMjD,EAAM,KAC3CC,GAAS,SAAYgD,EAAMjD,EAAM,OACjCC,GAAS,OAASA,GAAS,MAAQA,IAAU,GAASgD,EAAMjD,EAAM,GAAG,EACvEiD,EAAMjD,EAAM,KAAK,EACjBiD,CACT,EACA,eAAgB,UAAW,CAAE,OAAO,KAAK,IAAI,MAAO,EACpD,kBAAmB,UAAW,CAAC,OAAO,KAAK,IAAI,kBAAkB,CAAC,EAElE,UAAW0qB,GAAY,SAASplB,EAAMlE,EAAIyH,EAAS,CACjDoqB,GAAmB,KAAMhnB,GAAQ,KAAM,OAAO3G,GAAQ,SAAWmG,GAAInG,EAAMlE,GAAM,CAAC,EAAIkE,CAAI,EAAG,KAAMuD,CAAO,CAC5G,CAAC,EACD,aAAc6hB,GAAY,SAAS9K,EAAQkC,EAAMjZ,EAAS,CACxDoqB,GAAmB,KAAMhnB,GAAQ,KAAM2T,CAAM,EAAG3T,GAAQ,KAAM6V,GAAQlC,CAAM,EAAG/W,CAAO,CACxF,CAAC,EACD,gBAAiB6hB,GAAY,SAAS5I,EAAM/D,EAAOlV,EAAS,CAC1D8pB,GAAgB,KAAM1mB,GAAQ,KAAM6V,CAAI,EAAG/D,GAAS9R,GAAQ,KAAM8R,CAAK,EAAGlV,CAAO,CACnF,CAAC,EACD,iBAAkB6hB,GAAY,SAASoI,EAAOjqB,EAAS,CACrDgqB,GAAiB,KAAMxmB,GAAa,KAAMymB,CAAK,EAAGjqB,CAAO,CAC3D,CAAC,EACD,mBAAoB6hB,GAAY,SAASrsB,EAAGwK,EAAS,CACnD,IAAIiqB,EAAQvyB,GAAI,KAAK,IAAI,OAAQlC,CAAC,EAClCw0B,GAAiB,KAAMxmB,GAAa,KAAMymB,CAAK,EAAGjqB,CAAO,CAC3D,CAAC,EACD,cAAe6hB,GAAY,SAASuD,EAAQvM,EAAS7Y,EAAS,CAC5D,GAAKolB,EAAO,OAEZ,SADIztB,EAAM,CAAC,EACF3D,EAAI,EAAGA,EAAIoxB,EAAO,OAAQpxB,IAC/B2D,EAAI3D,CAAC,EAAI,IAAIwxB,GAAMpiB,GAAQ,KAAMgiB,EAAOpxB,CAAC,EAAE,MAAM,EAChCoP,GAAQ,KAAMgiB,EAAOpxB,CAAC,EAAE,MAAQoxB,EAAOpxB,CAAC,EAAE,MAAM,CAAC,EAClE6kB,GAAW,OAAQA,EAAU,KAAK,IAAIuM,EAAO,OAAS,EAAG,KAAK,IAAI,SAAS,GAC/E2E,GAAa,KAAMtE,GAAmB,KAAK,GAAI9tB,EAAKkhB,CAAO,EAAG7Y,CAAO,EACvE,CAAC,EACD,aAAc6hB,GAAY,SAAS9K,EAAQkC,EAAMjZ,EAAS,CACxD,IAAIolB,EAAS,KAAK,IAAI,OAAO,MAAM,CAAC,EACpCA,EAAO,KAAK,IAAII,GAAMpiB,GAAQ,KAAM2T,CAAM,EAAG3T,GAAQ,KAAM6V,GAAQlC,CAAM,CAAC,CAAC,EAC3EgT,GAAa,KAAMtE,GAAmB,KAAK,GAAIL,EAAQA,EAAO,OAAS,CAAC,EAAGplB,CAAO,CACpF,CAAC,EAED,aAAc,SAAS8vB,EAAS,CAE9B,QADI1K,EAAS,KAAK,IAAI,OAAQ9a,EACrBtW,EAAI,EAAGA,EAAIoxB,EAAO,OAAQpxB,IAAK,CACtC,IAAIwuB,EAAM1gB,GAAW,KAAMsjB,EAAOpxB,CAAC,EAAE,KAAK,EAAGoxB,EAAOpxB,CAAC,EAAE,GAAG,CAAC,EAC3DsW,EAAQA,EAAQA,EAAM,OAAOkY,CAAG,EAAIA,CACtC,CACA,OAAIsN,IAAY,GAAgBxlB,EAClBA,EAAM,KAAKwlB,GAAW,KAAK,cAAc,CAAC,CAC1D,EACA,cAAe,SAASA,EAAS,CAE/B,QADInnB,EAAQ,CAAC,EAAGyc,EAAS,KAAK,IAAI,OACzBpxB,EAAI,EAAGA,EAAIoxB,EAAO,OAAQpxB,IAAK,CACtC,IAAIwuB,EAAM1gB,GAAW,KAAMsjB,EAAOpxB,CAAC,EAAE,KAAK,EAAGoxB,EAAOpxB,CAAC,EAAE,GAAG,CAAC,EACvD87B,IAAY,KAAStN,EAAMA,EAAI,KAAKsN,GAAW,KAAK,cAAc,CAAC,GACvEnnB,EAAM3U,CAAC,EAAIwuB,CACb,CACA,OAAO7Z,CACT,EACA,iBAAkB,SAASzO,EAAMwY,EAAUiW,EAAQ,CAEjD,QADIoH,EAAM,CAAC,EACF/7B,EAAI,EAAGA,EAAI,KAAK,IAAI,OAAO,OAAQA,IACxC+7B,EAAI/7B,CAAC,EAAIkG,EACb,KAAK,kBAAkB61B,EAAKrd,EAAUiW,GAAU,QAAQ,CAC1D,EACA,kBAAmB9G,GAAY,SAAS3nB,EAAMwY,EAAUiW,EAAQ,CAE9D,QADIxC,EAAU,CAAC,EAAG3D,EAAM,KAAK,IACpBxuB,EAAI,EAAGA,EAAIwuB,EAAI,OAAO,OAAQxuB,IAAK,CAC1C,IAAIE,EAAQsuB,EAAI,OAAOxuB,CAAC,EACxBmyB,EAAQnyB,CAAC,EAAI,CAAC,KAAME,EAAM,KAAK,EAAG,GAAIA,EAAM,GAAG,EAAG,KAAM,KAAK,WAAWgG,EAAKlG,CAAC,CAAC,EAAG,OAAQ20B,CAAM,CAClG,CAEA,QADIuB,EAASxX,GAAYA,GAAY,OAASwT,GAAmB,KAAMC,EAASzT,CAAQ,EAC/E5X,EAAMqrB,EAAQ,OAAS,EAAGrrB,GAAO,EAAGA,IACzC2wB,GAAW,KAAMtF,EAAQrrB,CAAG,CAAC,EAC7BovB,EAAUI,GAA2B,KAAMJ,CAAM,EAC5C,KAAK,IAAM9L,GAAoB,KAAK,EAAE,CACjD,CAAC,EACD,KAAMyD,GAAY,UAAW,CAACmK,GAAsB,KAAM,MAAM,CAAE,CAAC,EACnE,KAAMnK,GAAY,UAAW,CAACmK,GAAsB,KAAM,MAAM,CAAE,CAAC,EACnE,cAAenK,GAAY,UAAW,CAACmK,GAAsB,KAAM,OAAQ,EAAI,CAAE,CAAC,EAClF,cAAenK,GAAY,UAAW,CAACmK,GAAsB,KAAM,OAAQ,EAAI,CAAE,CAAC,EAElF,aAAc,SAASrrB,EAAK,CAAC,KAAK,OAASA,CAAI,EAC/C,aAAc,UAAW,CAAC,OAAO,KAAK,MAAM,EAE5C,YAAa,UAAW,CAEtB,QADI0nB,EAAO,KAAK,QAASkC,EAAO,EAAGyF,EAAS,EACnCh8B,EAAI,EAAGA,EAAIq0B,EAAK,KAAK,OAAQr0B,IAAYq0B,EAAK,KAAKr0B,CAAC,EAAE,QAAU,EAAEu2B,EAC3E,QAASzvB,EAAM,EAAGA,EAAMutB,EAAK,OAAO,OAAQvtB,IAAcutB,EAAK,OAAOvtB,CAAG,EAAE,QAAU,EAAEk1B,EACvF,MAAO,CAAC,KAAMzF,EAAM,KAAMyF,CAAM,CAClC,EACA,aAAc,UAAW,CACvB,IAAI5B,EAAS,KAEb,KAAK,QAAU,IAAIrG,GAAQ,KAAK,OAAO,EACvCV,GAAW,KAAM,SAAU1yB,EAAK,CAAE,OAAOA,EAAI,QAAUy5B,EAAO,OAAS,EAAG,EAAI,CAChF,EAEA,UAAW,UAAW,CACpB,KAAK,gBAAkB,KAAK,iBAAiB,EAAI,CACnD,EACA,iBAAkB,SAAS6B,EAAY,CACrC,OAAIA,IACA,KAAK,QAAQ,OAAS,KAAK,QAAQ,UAAY,KAAK,QAAQ,WAAa,MACtE,KAAK,QAAQ,UACtB,EACA,QAAS,SAAUC,EAAK,CACtB,OAAO,KAAK,QAAQ,aAAeA,GAAO,KAAK,gBACjD,EAEA,WAAY,UAAW,CACrB,MAAO,CAAC,KAAM7G,GAAiB,KAAK,QAAQ,IAAI,EACxC,OAAQA,GAAiB,KAAK,QAAQ,MAAM,CAAC,CACvD,EACA,WAAY,SAAS8G,EAAU,CAC7B,IAAI9H,EAAO,KAAK,QAAU,IAAIN,GAAQ,KAAK,OAAO,EAClDM,EAAK,KAAOgB,GAAiB8G,EAAS,KAAK,MAAM,CAAC,EAAG,KAAM,EAAI,EAC/D9H,EAAK,OAASgB,GAAiB8G,EAAS,OAAO,MAAM,CAAC,EAAG,KAAM,EAAI,CACrE,EAEA,gBAAiBtO,GAAY,SAASplB,EAAM2zB,EAAUv4B,EAAO,CAC3D,OAAOu1B,GAAW,KAAM3wB,EAAM,SAAU,SAAUA,EAAM,CACtD,IAAIgM,EAAUhM,EAAK,gBAAkBA,EAAK,cAAgB,CAAC,GAC3D,OAAAgM,EAAQ2nB,CAAQ,EAAIv4B,EAChB,CAACA,GAASa,GAAQ+P,CAAO,IAAKhM,EAAK,cAAgB,MAChD,EACT,CAAC,CACH,CAAC,EAED,YAAaolB,GAAY,SAASuO,EAAU,CAC1C,IAAIhC,EAAS,KAEb,KAAK,KAAK,SAAU3xB,EAAM,CACpBA,EAAK,eAAiBA,EAAK,cAAc2zB,CAAQ,GACnDhD,GAAWgB,EAAQ3xB,EAAM,SAAU,UAAY,CAC7C,OAAAA,EAAK,cAAc2zB,CAAQ,EAAI,KAC3B13B,GAAQ+D,EAAK,aAAa,IAAKA,EAAK,cAAgB,MACjD,EACT,CAAC,CAEL,CAAC,CACH,CAAC,EAED,SAAU,SAASA,EAAM,CACvB,IAAIrG,EACJ,GAAI,OAAOqG,GAAQ,UAIjB,GAHI,CAACiG,GAAO,KAAMjG,CAAI,IACtBrG,EAAIqG,EACJA,EAAOkF,GAAQ,KAAMlF,CAAI,EACrB,CAACA,GAAQ,OAAO,aAEpBrG,EAAIgM,EAAO3F,CAAI,EACXrG,GAAK,KAAQ,OAAO,KAE1B,MAAO,CAAC,KAAMA,EAAG,OAAQqG,EAAM,KAAMA,EAAK,KAAM,cAAeA,EAAK,cAC5D,UAAWA,EAAK,UAAW,QAASA,EAAK,QAAS,UAAWA,EAAK,UAClE,QAASA,EAAK,OAAO,CAC/B,EAEA,aAAcolB,GAAY,SAASwL,EAAQgD,EAAOr9B,EAAK,CACrD,OAAOo6B,GAAW,KAAMC,EAAQgD,GAAS,SAAW,SAAW,QAAS,SAAU5zB,EAAM,CACtF,IAAI3G,EAAOu6B,GAAS,OAAS,YAClBA,GAAS,aAAe,UACxBA,GAAS,SAAW,cAAgB,YAC/C,GAAI,CAAC5zB,EAAK3G,CAAI,EAAK2G,EAAK3G,CAAI,EAAI9C,MAC3B,IAAID,EAAUC,CAAG,EAAE,KAAKyJ,EAAK3G,CAAI,CAAC,EAAK,MAAO,GAC5C2G,EAAK3G,CAAI,GAAK,IAAM9C,EAC3B,MAAO,EACT,CAAC,CACH,CAAC,EACD,gBAAiB6uB,GAAY,SAASwL,EAAQgD,EAAOr9B,EAAK,CACxD,OAAOo6B,GAAW,KAAMC,EAAQgD,GAAS,SAAW,SAAW,QAAS,SAAU5zB,EAAM,CACtF,IAAI3G,EAAOu6B,GAAS,OAAS,YAClBA,GAAS,aAAe,UACxBA,GAAS,SAAW,cAAgB,YAC3Cx2B,EAAM4C,EAAK3G,CAAI,EACnB,GAAK+D,EACA,GAAI7G,GAAO,KAAQyJ,EAAK3G,CAAI,EAAI,SAChC,CACH,IAAI0D,EAAQK,EAAI,MAAM9G,EAAUC,CAAG,CAAC,EACpC,GAAI,CAACwG,EAAS,MAAO,GACrB,IAAIpF,EAAMoF,EAAM,MAAQA,EAAM,CAAC,EAAE,OACjCiD,EAAK3G,CAAI,EAAI+D,EAAI,MAAM,EAAGL,EAAM,KAAK,GAAK,CAACA,EAAM,OAASpF,GAAOyF,EAAI,OAAS,GAAK,KAAOA,EAAI,MAAMzF,CAAG,GAAK,IAC9G,KAPY,OAAO,GAQnB,MAAO,EACT,CAAC,CACH,CAAC,EAED,cAAeytB,GAAY,SAASwL,EAAQn6B,EAAM8M,EAAS,CACzD,OAAOsuB,GAAc,KAAMjB,EAAQn6B,EAAM8M,CAAO,CAClD,CAAC,EACD,iBAAkB,SAASqN,EAAQ,CAAEA,EAAO,MAAM,CAAG,EAErD,SAAU,SAASnU,EAAMC,EAAI6G,EAAS,CACpC,OAAO+uB,GAAS,KAAM3rB,GAAQ,KAAMlK,CAAI,EAAGkK,GAAQ,KAAMjK,CAAE,EAAG6G,EAASA,GAAWA,EAAQ,MAAQ,OAAO,CAC3G,EACA,YAAa,SAAS7I,EAAK6I,EAAS,CAClC,IAAIswB,EAAW,CAAC,aAActwB,IAAYA,EAAQ,UAAY,KAAOA,EAAQ,OAASA,GACtE,WAAYA,GAAWA,EAAQ,WAC/B,eAAgB,GAAO,OAAQA,GAAWA,EAAQ,OAClD,kBAAmBA,GAAWA,EAAQ,iBAAiB,EACvE,OAAA7I,EAAMiM,GAAQ,KAAMjM,CAAG,EAChB43B,GAAS,KAAM53B,EAAKA,EAAKm5B,EAAU,UAAU,CACtD,EACA,YAAa,SAASn5B,EAAK,CACzBA,EAAMiM,GAAQ,KAAMjM,CAAG,EACvB,IAAIsR,EAAU,CAAC,EAAG7B,EAAQjF,GAAQ,KAAMxK,EAAI,IAAI,EAAE,YAClD,GAAIyP,EAAS,QAAS5S,EAAI,EAAGA,EAAI4S,EAAM,OAAQ,EAAE5S,EAAG,CAClD,IAAI6S,EAAOD,EAAM5S,CAAC,GACb6S,EAAK,MAAQ,MAAQA,EAAK,MAAQ1P,EAAI,MACtC0P,EAAK,IAAM,MAAQA,EAAK,IAAM1P,EAAI,KACnCsR,EAAQ,KAAK5B,EAAK,OAAO,QAAUA,EAAK,MAAM,CACpD,CACA,OAAO4B,CACT,EACA,UAAW,SAASvP,EAAMC,EAAIkzB,EAAQ,CACpCnzB,EAAOkK,GAAQ,KAAMlK,CAAI,EAAGC,EAAKiK,GAAQ,KAAMjK,CAAE,EACjD,IAAIK,EAAQ,CAAC,EAAG4I,EAASlJ,EAAK,KAC9B,YAAK,KAAKA,EAAK,KAAMC,EAAG,KAAO,EAAG,SAAUsD,EAAM,CAChD,IAAImK,EAAQnK,EAAK,YACjB,GAAImK,EAAS,QAAS5S,EAAI,EAAGA,EAAI4S,EAAM,OAAQ5S,IAAK,CAClD,IAAI6S,EAAOD,EAAM5S,CAAC,EACd,EAAE6S,EAAK,IAAM,MAAQzE,GAAUlJ,EAAK,MAAQA,EAAK,IAAM2N,EAAK,IAC1DA,EAAK,MAAQ,MAAQzE,GAAUlJ,EAAK,MACpC2N,EAAK,MAAQ,MAAQzE,GAAUjJ,EAAG,MAAQ0N,EAAK,MAAQ1N,EAAG,MAC3D,CAACkzB,GAAUA,EAAOxlB,EAAK,MAAM,IAC9BrN,EAAM,KAAKqN,EAAK,OAAO,QAAUA,EAAK,MAAM,CAClD,CACA,EAAEzE,CACJ,CAAC,EACM5I,CACT,EACA,YAAa,UAAW,CACtB,IAAIiP,EAAU,CAAC,EACf,YAAK,KAAK,SAAUhM,EAAM,CACxB,IAAImN,EAAMnN,EAAK,YACf,GAAImN,EAAO,QAAS5V,EAAI,EAAGA,EAAI4V,EAAI,OAAQ,EAAE5V,EACrC4V,EAAI5V,CAAC,EAAE,MAAQ,MAAQyU,EAAQ,KAAKmB,EAAI5V,CAAC,EAAE,MAAM,CAC3D,CAAC,EACMyU,CACT,EAEA,aAAc,SAAS3L,EAAK,CAC1B,IAAIvE,EAAI6J,EAAS,KAAK,MAAOmuB,EAAU,KAAK,cAAc,EAAE,OAC5D,YAAK,KAAK,SAAU9zB,EAAM,CACxB,IAAIoF,EAAKpF,EAAK,KAAK,OAAS8zB,EAC5B,GAAI1uB,EAAK/E,EAAO,OAAAvE,EAAKuE,EAAY,GACjCA,GAAO+E,EACP,EAAEO,CACJ,CAAC,EACMgB,GAAQ,KAAMR,GAAIR,EAAQ7J,CAAE,CAAC,CACtC,EACA,aAAc,SAAU+b,EAAQ,CAC9BA,EAASlR,GAAQ,KAAMkR,CAAM,EAC7B,IAAIvX,EAAQuX,EAAO,GACnB,GAAIA,EAAO,KAAO,KAAK,OAASA,EAAO,GAAK,EAAK,MAAO,GACxD,IAAIic,EAAU,KAAK,cAAc,EAAE,OACnC,YAAK,KAAK,KAAK,MAAOjc,EAAO,KAAM,SAAU7X,EAAM,CACjDM,GAASN,EAAK,KAAK,OAAS8zB,CAC9B,CAAC,EACMxzB,CACT,EAEA,KAAM,SAASyzB,EAAa,CAC1B,IAAI77B,EAAM,IAAIk7B,GAAI7tB,GAAS,KAAM,KAAK,MAAO,KAAK,MAAQ,KAAK,IAAI,EACjD,KAAK,WAAY,KAAK,MAAO,KAAK,QAAS,KAAK,SAAS,EAC3E,OAAArN,EAAI,UAAY,KAAK,UAAWA,EAAI,WAAa,KAAK,WACtDA,EAAI,IAAM,KAAK,IACfA,EAAI,OAAS,GACT67B,IACF77B,EAAI,QAAQ,UAAY,KAAK,QAAQ,UACrCA,EAAI,WAAW,KAAK,WAAW,CAAC,GAE3BA,CACT,EAEA,UAAW,SAASqL,EAAS,CACtBA,IAAWA,EAAU,CAAC,GAC3B,IAAI9G,EAAO,KAAK,MAAOC,EAAK,KAAK,MAAQ,KAAK,KAC1C6G,EAAQ,MAAQ,MAAQA,EAAQ,KAAO9G,IAAQA,EAAO8G,EAAQ,MAC9DA,EAAQ,IAAM,MAAQA,EAAQ,GAAK7G,IAAMA,EAAK6G,EAAQ,IAC1D,IAAI6D,EAAO,IAAIgsB,GAAI7tB,GAAS,KAAM9I,EAAMC,CAAE,EAAG6G,EAAQ,MAAQ,KAAK,WAAY9G,EAAM,KAAK,QAAS,KAAK,SAAS,EAChH,OAAI8G,EAAQ,aAAc6D,EAAK,QAAU,KAAK,UAC1C,KAAK,SAAW,KAAK,OAAS,CAAC,IAAI,KAAK,CAAC,IAAKA,EAAM,WAAY7D,EAAQ,UAAU,CAAC,EACvF6D,EAAK,OAAS,CAAC,CAAC,IAAK,KAAM,SAAU,GAAM,WAAY7D,EAAQ,UAAU,CAAC,EAC1EqvB,GAAkBxrB,EAAMurB,GAAkB,IAAI,CAAC,EACxCvrB,CACT,EACA,UAAW,SAASqR,EAAO,CAEzB,GADIA,aAAiBub,KAAcvb,EAAQA,EAAM,KAC7C,KAAK,OAAU,QAASlhB,EAAI,EAAGA,EAAI,KAAK,OAAO,OAAQ,EAAEA,EAAG,CAC9D,IAAI08B,EAAO,KAAK,OAAO18B,CAAC,EACxB,GAAI08B,EAAK,KAAOxb,EAChB,MAAK,OAAO,OAAOlhB,EAAG,CAAC,EACvBkhB,EAAM,UAAU,IAAI,EACpBua,GAAoBL,GAAkB,IAAI,CAAC,EAC3C,MACF,CAEA,GAAIla,EAAM,SAAW,KAAK,QAAS,CACjC,IAAIyb,EAAW,CAACzb,EAAM,EAAE,EACxBmS,GAAWnS,EAAO,SAAUvgB,EAAK,CAAE,OAAOg8B,EAAS,KAAKh8B,EAAI,EAAE,CAAG,EAAG,EAAI,EACxEugB,EAAM,QAAU,IAAI6S,GAAQ,IAAI,EAChC7S,EAAM,QAAQ,KAAOmU,GAAiB,KAAK,QAAQ,KAAMsH,CAAQ,EACjEzb,EAAM,QAAQ,OAASmU,GAAiB,KAAK,QAAQ,OAAQsH,CAAQ,CACvE,CACF,EACA,eAAgB,SAASn7B,EAAG,CAAC6xB,GAAW,KAAM7xB,CAAC,CAAE,EAEjD,QAAS,UAAW,CAAC,OAAO,KAAK,IAAI,EACrC,UAAW,UAAW,CAAC,OAAO,KAAK,EAAE,EAErC,WAAY,SAASsD,EAAK,CACxB,OAAI,KAAK,QAAkBA,EAAI,MAAM,KAAK,OAAO,EAC1C4F,GAAe5F,CAAG,CAC3B,EACA,cAAe,UAAW,CAAE,OAAO,KAAK,SAAW;AAAA,CAAK,EAExD,aAAc+oB,GAAY,SAAU9oB,EAAK,CACnCA,GAAO,QAASA,EAAM,OACtBA,GAAO,KAAK,YAChB,KAAK,UAAYA,EACjB,KAAK,KAAK,SAAU0D,EAAM,CAAE,OAAOA,EAAK,MAAQ,IAAM,CAAC,EACnD,KAAK,IAAMqrB,GAAiB,KAAK,EAAE,EACzC,CAAC,CACH,CAAC,EAGD+H,GAAI,UAAU,SAAWA,GAAI,UAAU,KAIvC,IAAIe,GAAW,EAEf,SAASC,GAAOt9B,EAAG,CACjB,IAAI4B,EAAK,KAET,GADA27B,GAAgB37B,CAAE,EACd,EAAA+H,GAAe/H,EAAI5B,CAAC,GAAKsd,GAAc1b,EAAG,QAAS5B,CAAC,GAExD,CAAAmK,GAAiBnK,CAAC,EACd3B,IAAMg/B,GAAW,CAAC,IAAI,MAC1B,IAAIz5B,EAAMqgB,GAAariB,EAAI5B,EAAG,EAAI,EAAGw9B,EAAQx9B,EAAE,aAAa,MAC5D,GAAI,GAAC4D,GAAOhC,EAAG,WAAW,GAG1B,GAAI47B,GAASA,EAAM,QAAU,OAAO,YAAc,OAAO,KAkCvD,QAjCI36B,EAAI26B,EAAM,OAAQhvB,EAAO,MAAM3L,CAAC,EAAG46B,EAAO,EAC1CC,EAAsC,UAAY,CAChD,EAAED,GAAQ56B,GACZurB,GAAUxsB,EAAI,UAAY,CACxBgC,EAAMiM,GAAQjO,EAAG,IAAKgC,CAAG,EACzB,IAAIyQ,GAAS,CAAC,KAAMzQ,EAAK,GAAIA,EACf,KAAMhC,EAAG,IAAI,WACT4M,EAAK,OAAO,SAAUmvB,GAAG,CAAE,OAAOA,IAAK,IAAM,CAAC,EAAE,KAAK/7B,EAAG,IAAI,cAAc,CAAC,CAAC,EAChF,OAAQ,OAAO,EAC7Bs2B,GAAWt2B,EAAG,IAAKyS,EAAM,EACzB0iB,GAA2Bn1B,EAAG,IAAK0wB,GAAgBziB,GAAQjO,EAAG,IAAKgC,CAAG,EAAGiM,GAAQjO,EAAG,IAAK2wB,GAAUle,EAAM,CAAC,CAAC,CAAC,CAC9G,CAAC,EAAE,CAEP,EACIupB,EAAmB,SAAUC,GAAMp9B,GAAG,CACxC,GAAImB,EAAG,QAAQ,oBACXuB,GAAQvB,EAAG,QAAQ,mBAAoBi8B,GAAK,IAAI,GAAK,GAAI,CAC3DH,EAAoC,EACpC,MACF,CACA,IAAII,GAAS,IAAI,WACjBA,GAAO,QAAU,UAAY,CAAE,OAAOJ,EAAoC,CAAG,EAC7EI,GAAO,OAAS,UAAY,CAC1B,IAAIx9B,GAAUw9B,GAAO,OACrB,GAAI,0BAA0B,KAAKx9B,EAAO,EAAG,CAC3Co9B,EAAoC,EACpC,MACF,CACAlvB,EAAK/N,EAAC,EAAIH,GACVo9B,EAAoC,CACtC,EACAI,GAAO,WAAWD,EAAI,CACxB,EACSp9B,EAAI,EAAGA,EAAI+8B,EAAM,OAAQ/8B,IAAOm9B,EAAiBJ,EAAM/8B,CAAC,EAAGA,CAAC,MAChE,CAEL,GAAImB,EAAG,MAAM,cAAgBA,EAAG,IAAI,IAAI,SAASgC,CAAG,EAAI,GAAI,CAC1DhC,EAAG,MAAM,aAAa5B,CAAC,EAEvB,WAAW,UAAY,CAAE,OAAO4B,EAAG,QAAQ,MAAM,MAAM,CAAG,EAAG,EAAE,EAC/D,MACF,CACA,GAAI,CACF,IAAIm8B,GAAS/9B,EAAE,aAAa,QAAQ,MAAM,EAC1C,GAAI+9B,GAAQ,CACV,IAAIC,GAIJ,GAHIp8B,EAAG,MAAM,cAAgB,CAACA,EAAG,MAAM,aAAa,OAChDo8B,GAAWp8B,EAAG,eAAe,GACjCq1B,GAAmBr1B,EAAG,IAAK0wB,GAAgB1uB,EAAKA,CAAG,CAAC,EAChDo6B,GAAY,QAASz2B,GAAM,EAAGA,GAAMy2B,GAAS,OAAQ,EAAEz2B,GACvDiyB,GAAa53B,EAAG,IAAK,GAAIo8B,GAASz2B,EAAG,EAAE,OAAQy2B,GAASz2B,EAAG,EAAE,KAAM,MAAM,EAC7E3F,EAAG,iBAAiBm8B,GAAQ,SAAU,OAAO,EAC7Cn8B,EAAG,QAAQ,MAAM,MAAM,CACzB,CACF,MACU,CAAC,CACb,EACF,CAEA,SAASq8B,GAAYr8B,EAAI5B,EAAG,CAC1B,GAAI3B,IAAO,CAACuD,EAAG,MAAM,cAAgB,CAAC,IAAI,KAAOy7B,GAAW,KAAM,CAAEhzB,GAAOrK,CAAC,EAAG,MAAO,CACtF,GAAI,EAAA2J,GAAe/H,EAAI5B,CAAC,GAAKsd,GAAc1b,EAAG,QAAS5B,CAAC,KAExDA,EAAE,aAAa,QAAQ,OAAQ4B,EAAG,aAAa,CAAC,EAChD5B,EAAE,aAAa,cAAgB,WAI3BA,EAAE,aAAa,cAAgB,CAACpB,GAAQ,CAC1C,IAAIs/B,EAAM99B,EAAI,MAAO,KAAM,KAAM,mCAAmC,EACpE89B,EAAI,IAAM,6EACNv/B,IACFu/B,EAAI,MAAQA,EAAI,OAAS,EACzBt8B,EAAG,QAAQ,QAAQ,YAAYs8B,CAAG,EAElCA,EAAI,KAAOA,EAAI,WAEjBl+B,EAAE,aAAa,aAAak+B,EAAK,EAAG,CAAC,EACjCv/B,GAAUu/B,EAAI,WAAW,YAAYA,CAAG,CAC9C,CACF,CAEA,SAASC,GAAWv8B,EAAI5B,EAAG,CACzB,IAAI4D,EAAMqgB,GAAariB,EAAI5B,CAAC,EAC5B,GAAK4D,EACL,KAAIw6B,EAAO,SAAS,uBAAuB,EAC3CzY,GAAoB/jB,EAAIgC,EAAKw6B,CAAI,EAC5Bx8B,EAAG,QAAQ,aACdA,EAAG,QAAQ,WAAaxB,EAAI,MAAO,KAAM,2CAA2C,EACpFwB,EAAG,QAAQ,UAAU,aAAaA,EAAG,QAAQ,WAAYA,EAAG,QAAQ,SAAS,GAE/E1B,EAAqB0B,EAAG,QAAQ,WAAYw8B,CAAI,EAClD,CAEA,SAASb,GAAgB37B,EAAI,CACvBA,EAAG,QAAQ,aACbA,EAAG,QAAQ,UAAU,YAAYA,EAAG,QAAQ,UAAU,EACtDA,EAAG,QAAQ,WAAa,KAE5B,CAMA,SAASy8B,GAAkBp8B,EAAG,CAC5B,GAAK,SAAS,uBAEd,SADIq8B,EAAU,SAAS,uBAAuB,YAAY,EAAGC,EAAU,CAAC,EAC/D99B,EAAI,EAAGA,EAAI69B,EAAQ,OAAQ79B,IAAK,CACvC,IAAImB,EAAK08B,EAAQ79B,CAAC,EAAE,WAChBmB,GAAM28B,EAAQ,KAAK38B,CAAE,CAC3B,CACI28B,EAAQ,QAAUA,EAAQ,CAAC,EAAE,UAAU,UAAY,CACrD,QAAS99B,EAAI,EAAGA,EAAI89B,EAAQ,OAAQ99B,IAAOwB,EAAEs8B,EAAQ99B,CAAC,CAAC,CACzD,CAAC,EACH,CAEA,IAAI+9B,GAAoB,GACxB,SAASC,IAAuB,CAC1BD,KACJE,GAAuB,EACvBF,GAAoB,GACtB,CACA,SAASE,IAAyB,CAEhC,IAAIC,EACJv1B,EAAG,OAAQ,SAAU,UAAY,CAC3Bu1B,GAAe,OAAQA,EAAc,WAAW,UAAY,CAC9DA,EAAc,KACdN,GAAkBO,EAAQ,CAC5B,EAAG,GAAG,EACR,CAAC,EAEDx1B,EAAG,OAAQ,OAAQ,UAAY,CAAE,OAAOi1B,GAAkBpW,EAAM,CAAG,CAAC,CACtE,CAEA,SAAS2W,GAASh9B,EAAI,CACpB,IAAI,EAAIA,EAAG,QAEX,EAAE,gBAAkB,EAAE,iBAAmB,EAAE,eAAiB,KAC5D,EAAE,kBAAoB,GACtBA,EAAG,QAAQ,CACb,CAcA,QAZIi9B,GAAW,CACb,EAAG,QAAS,EAAG,YAAa,EAAG,MAAO,GAAI,QAAS,GAAI,QAAS,GAAI,OAAQ,GAAI,MAChF,GAAI,QAAS,GAAI,WAAY,GAAI,MAAO,GAAI,QAAS,GAAI,SAAU,GAAI,WAAY,GAAI,MACvF,GAAI,OAAQ,GAAI,OAAQ,GAAI,KAAM,GAAI,QAAS,GAAI,OAAQ,GAAI,YAAa,GAAI,SAChF,GAAI,SAAU,GAAI,IAAK,GAAI,IAAK,GAAI,MAAO,GAAI,MAAO,GAAI,MAC1D,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,aACvD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC/F,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,KAAM,MAAO,OAAQ,MAAO,OAAQ,MAAO,QAAS,MAAO,SAClG,MAAO,OAAQ,MAAO,MAAO,MAAO,SAAU,MAAO,WAAY,MAAO,QAC1E,EAGSp+B,GAAI,EAAGA,GAAI,GAAIA,KAAOo+B,GAASp+B,GAAI,EAAE,EAAIo+B,GAASp+B,GAAI,EAAE,EAAI,OAAOA,EAAC,EAE7E,QAAS8G,GAAM,GAAIA,IAAO,GAAIA,KAASs3B,GAASt3B,EAAG,EAAI,OAAO,aAAaA,EAAG,EAE9E,QAASG,GAAM,EAAGA,IAAO,GAAIA,KAASm3B,GAASn3B,GAAM,GAAG,EAAIm3B,GAASn3B,GAAM,KAAK,EAAI,IAAMA,GAE1F,IAAIo3B,GAAS,CAAC,EAEdA,GAAO,MAAQ,CACb,KAAQ,aAAc,MAAS,cAAe,GAAM,WAAY,KAAQ,aACxE,IAAO,YAAa,KAAQ,mBAAoB,OAAU,WAAY,SAAY,aAClF,OAAU,eAAgB,UAAa,gBAAiB,kBAAmB,gBAC3E,IAAO,aAAc,YAAa,aAClC,MAAS,mBAAoB,OAAU,kBACvC,IAAO,iBACT,EAIAA,GAAO,UAAY,CACjB,SAAU,YAAa,SAAU,aAAc,SAAU,OAAQ,eAAgB,OAAQ,SAAU,OACnG,YAAa,aAAc,WAAY,WAAY,UAAW,WAAY,YAAa,aACvF,YAAa,cAAe,aAAc,eAAgB,WAAY,cAAe,YAAa,YAClG,iBAAkB,iBAAkB,cAAe,gBAAiB,SAAU,OAAQ,SAAU,OAChG,SAAU,WAAY,eAAgB,WAAY,eAAgB,UAAW,eAAgB,aAC7F,SAAU,aAAc,SAAU,aAClC,SAAU,gBAAiB,eAAgB,gBAAiB,QAAS,gBACrE,YAAe,OACjB,EAEAA,GAAO,OAAS,CACd,SAAU,cAAe,SAAU,aAAc,SAAU,WAAY,SAAU,aACjF,SAAU,cAAe,SAAU,YAAa,SAAU,aAAc,eAAgB,WACxF,SAAU,eAAgB,SAAU,gBAAiB,gBAAiB,gBAAiB,SAAU,WACjG,SAAU,iBAAkB,SAAU,UACxC,EACAA,GAAO,WAAa,CAClB,QAAS,YAAa,QAAS,aAAc,QAAS,OAAQ,cAAe,OAAQ,QAAS,OAC9F,WAAY,aAAc,SAAU,aAAc,UAAW,WAAY,WAAY,WAAY,WAAY,cAC7G,YAAa,eAAgB,WAAY,aAAc,YAAa,cAAe,gBAAiB,iBACpG,qBAAsB,gBAAiB,aAAc,gBAAiB,QAAS,OAAQ,QAAS,OAChG,QAAS,WAAY,cAAe,WAAY,YAAa,UAAW,kBAAmB,aAC3F,QAAS,aAAc,QAAS,aAAc,gBAAiB,qBAAsB,aAAc,sBACnG,QAAS,gBAAiB,cAAe,gBAAiB,UAAW,aAAc,YAAa,WAChG,YAAe,CAAC,QAAS,QAAQ,CACnC,EACAA,GAAO,QAAa5/B,EAAM4/B,GAAO,WAAaA,GAAO,UAIrD,SAASC,GAAiB7yB,EAAM,CAC9B,IAAIkJ,EAAQlJ,EAAK,MAAM,QAAQ,EAC/BA,EAAOkJ,EAAMA,EAAM,OAAS,CAAC,EAE7B,QADI4pB,EAAKC,EAAM/F,EAAOgG,EACbz+B,EAAI,EAAGA,EAAI2U,EAAM,OAAS,EAAG3U,IAAK,CACzC,IAAI0+B,EAAM/pB,EAAM3U,CAAC,EACjB,GAAI,kBAAkB,KAAK0+B,CAAG,EAAKD,EAAM,WAChC,YAAY,KAAKC,CAAG,EAAKH,EAAM,WAC/B,sBAAsB,KAAKG,CAAG,EAAKF,EAAO,WAC1C,cAAc,KAAKE,CAAG,EAAKjG,EAAQ,OACrC,OAAM,IAAI,MAAM,+BAAiCiG,CAAG,CAC7D,CACA,OAAIH,IAAO9yB,EAAO,OAASA,GACvB+yB,IAAQ/yB,EAAO,QAAUA,GACzBgzB,IAAOhzB,EAAO,OAASA,GACvBgtB,IAAShtB,EAAO,SAAWA,GACxBA,CACT,CAOA,SAASkzB,GAAgBC,EAAQ,CAC/B,IAAI/uB,EAAO,CAAC,EACZ,QAASgvB,KAAWD,EAAU,GAAIA,EAAO,eAAeC,CAAO,EAAG,CAChE,IAAIh7B,EAAQ+6B,EAAOC,CAAO,EAC1B,GAAI,mCAAmC,KAAKA,CAAO,EAAK,SACxD,GAAIh7B,GAAS,MAAO,CAAE,OAAO+6B,EAAOC,CAAO,EAAG,QAAS,CAGvD,QADIC,EAAOp7B,GAAIm7B,EAAQ,MAAM,GAAG,EAAGP,EAAgB,EAC1Ct+B,EAAI,EAAGA,EAAI8+B,EAAK,OAAQ9+B,IAAK,CACpC,IAAI2M,EAAO,OAASlB,EAAQ,OACxBzL,GAAK8+B,EAAK,OAAS,GACrBrzB,EAAOqzB,EAAK,KAAK,GAAG,EACpBnyB,EAAM9I,IAEN4H,EAAOqzB,EAAK,MAAM,EAAG9+B,EAAI,CAAC,EAAE,KAAK,GAAG,EACpC2M,EAAM,OAER,IAAI5F,EAAO8I,EAAKpE,CAAI,EACpB,GAAI,CAAC1E,EAAQ8I,EAAKpE,CAAI,EAAIkB,UACjB5F,GAAQ4F,EAAO,MAAM,IAAI,MAAM,6BAA+BlB,CAAI,CAC7E,CACA,OAAOmzB,EAAOC,CAAO,CACvB,CACA,QAAS/8B,KAAQ+N,EAAQ+uB,EAAO98B,CAAI,EAAI+N,EAAK/N,CAAI,EACjD,OAAO88B,CACT,CAEA,SAASG,GAAUzgB,EAAK5a,EAAK21B,EAAQtpB,EAAS,CAC5CrM,EAAMs7B,GAAUt7B,CAAG,EACnB,IAAI8B,EAAQ9B,EAAI,KAAOA,EAAI,KAAK4a,EAAKvO,CAAO,EAAIrM,EAAI4a,CAAG,EACvD,GAAI9Y,IAAU,GAAS,MAAO,UAC9B,GAAIA,IAAU,MAAS,MAAO,QAC9B,GAAIA,GAAS,MAAQ6zB,EAAO7zB,CAAK,EAAK,MAAO,UAE7C,GAAI9B,EAAI,YAAa,CACnB,GAAI,OAAO,UAAU,SAAS,KAAKA,EAAI,WAAW,GAAK,iBACnD,OAAOq7B,GAAUzgB,EAAK5a,EAAI,YAAa21B,EAAQtpB,CAAO,EAC1D,QAAS/P,EAAI,EAAGA,EAAI0D,EAAI,YAAY,OAAQ1D,IAAK,CAC/C,IAAI2K,EAASo0B,GAAUzgB,EAAK5a,EAAI,YAAY1D,CAAC,EAAGq5B,EAAQtpB,CAAO,EAC/D,GAAIpF,EAAU,OAAOA,CACvB,CACF,CACF,CAIA,SAASs0B,GAAcp7B,EAAO,CAC5B,IAAI4H,EAAO,OAAO5H,GAAS,SAAWA,EAAQu6B,GAASv6B,EAAM,OAAO,EACpE,OAAO4H,GAAQ,QAAUA,GAAQ,OAASA,GAAQ,SAAWA,GAAQ,KACvE,CAEA,SAASyzB,GAAiBzzB,EAAMgqB,EAAO0J,EAAS,CAC9C,IAAIj7B,EAAOuH,EACX,OAAIgqB,EAAM,QAAUvxB,GAAQ,QAASuH,EAAO,OAASA,IAChD5M,EAAc42B,EAAM,QAAUA,EAAM,UAAYvxB,GAAQ,SAAUuH,EAAO,QAAUA,IACnF5M,EAAc42B,EAAM,QAAUA,EAAM,UAAYvxB,GAAQ,QAASuH,EAAO,OAASA,GAClF,CAAC0zB,GAAW1J,EAAM,UAAYvxB,GAAQ,UAAWuH,EAAO,SAAWA,GAChEA,CACT,CAGA,SAAS2zB,GAAQ3J,EAAO0J,EAAS,CAC/B,GAAIjhC,GAAUu3B,EAAM,SAAW,IAAMA,EAAM,KAAW,MAAO,GAC7D,IAAIhqB,EAAO2yB,GAAS3I,EAAM,OAAO,EACjC,OAAIhqB,GAAQ,MAAQgqB,EAAM,YAAsB,IAG5CA,EAAM,SAAW,GAAKA,EAAM,OAAQhqB,EAAOgqB,EAAM,MAC9CyJ,GAAiBzzB,EAAMgqB,EAAO0J,CAAO,EAC9C,CAEA,SAASH,GAAUryB,EAAK,CACtB,OAAO,OAAOA,GAAO,SAAW0xB,GAAO1xB,CAAG,EAAIA,CAChD,CAIA,SAAS0yB,GAAoBl+B,EAAIm+B,EAAS,CAIxC,QAHIlO,EAASjwB,EAAG,IAAI,IAAI,OAAQo+B,EAAO,CAAC,EAG/Bv/B,EAAI,EAAGA,EAAIoxB,EAAO,OAAQpxB,IAAK,CAEtC,QADIw/B,EAASF,EAAQlO,EAAOpxB,CAAC,CAAC,EACvBu/B,EAAK,QAAU1wB,GAAI2wB,EAAO,KAAMh8B,GAAI+7B,CAAI,EAAE,EAAE,GAAK,GAAG,CACzD,IAAIE,EAAWF,EAAK,IAAI,EACxB,GAAI1wB,GAAI4wB,EAAS,KAAMD,EAAO,IAAI,EAAI,EAAG,CACvCA,EAAO,KAAOC,EAAS,KACvB,KACF,CACF,CACAF,EAAK,KAAKC,CAAM,CAClB,CAEA9R,GAAQvsB,EAAI,UAAY,CACtB,QAASnB,EAAIu/B,EAAK,OAAS,EAAGv/B,GAAK,EAAGA,IAClC+4B,GAAa53B,EAAG,IAAK,GAAIo+B,EAAKv/B,CAAC,EAAE,KAAMu/B,EAAKv/B,CAAC,EAAE,GAAI,SAAS,EAChEoqB,GAAoBjpB,CAAE,CACxB,CAAC,CACH,CAEA,SAASu+B,GAAkBj3B,EAAMlE,EAAIQ,EAAK,CACxC,IAAInD,EAASiD,GAAmB4D,EAAK,KAAMlE,EAAKQ,EAAKA,CAAG,EACxD,OAAOnD,EAAS,GAAKA,EAAS6G,EAAK,KAAK,OAAS,KAAO7G,CAC1D,CAEA,SAAS+9B,GAAcl3B,EAAMtI,EAAO4E,EAAK,CACvC,IAAIR,EAAKm7B,GAAkBj3B,EAAMtI,EAAM,GAAI4E,CAAG,EAC9C,OAAOR,GAAM,KAAO,KAAO,IAAIqK,GAAIzO,EAAM,KAAMoE,EAAIQ,EAAM,EAAI,QAAU,QAAQ,CACjF,CAEA,SAAS66B,GAAUC,EAAU1+B,EAAI2V,EAAS1I,EAAQrJ,EAAK,CACrD,GAAI86B,EAAU,CACR1+B,EAAG,IAAI,WAAa,QAAS4D,EAAM,CAACA,GACxC,IAAIQ,EAAQiD,GAASsO,EAAS3V,EAAG,IAAI,SAAS,EAC9C,GAAIoE,EAAO,CACT,IAAIE,EAAOV,EAAM,EAAIvB,GAAI+B,CAAK,EAAIA,EAAM,CAAC,EACrCu6B,EAAsB/6B,EAAM,IAAOU,EAAK,OAAS,GACjDG,EAASk6B,EAAqB,QAAU,SACxCv7B,EAOJ,GAAIkB,EAAK,MAAQ,GAAKtE,EAAG,IAAI,WAAa,MAAO,CAC/C,IAAI4+B,GAAO/hB,GAAsB7c,EAAI2V,CAAO,EAC5CvS,EAAKQ,EAAM,EAAI+R,EAAQ,KAAK,OAAS,EAAI,EACzC,IAAIgL,GAAY/D,GAAoB5c,EAAI4+B,GAAMx7B,CAAE,EAAE,IAClDA,EAAKS,GAAU,SAAUT,GAAI,CAAE,OAAOwZ,GAAoB5c,EAAI4+B,GAAMx7B,EAAE,EAAE,KAAOud,EAAW,EAAI/c,EAAM,IAAOU,EAAK,OAAS,GAAKA,EAAK,KAAOA,EAAK,GAAK,EAAGlB,CAAE,EACrJqB,GAAU,WAAYrB,EAAKm7B,GAAkB5oB,EAASvS,EAAI,CAAC,EACjE,MAASA,EAAKQ,EAAM,EAAIU,EAAK,GAAKA,EAAK,KACvC,OAAO,IAAImJ,GAAIR,EAAQ7J,EAAIqB,CAAM,CACnC,CACF,CACA,OAAO,IAAIgJ,GAAIR,EAAQrJ,EAAM,EAAI+R,EAAQ,KAAK,OAAS,EAAG/R,EAAM,EAAI,SAAW,OAAO,CACxF,CAEA,SAASi7B,GAAa7+B,EAAIsH,EAAMtI,EAAO4E,EAAK,CAC1C,IAAIk7B,EAAOz3B,GAASC,EAAMtH,EAAG,IAAI,SAAS,EAC1C,GAAI,CAAC8+B,EAAQ,OAAON,GAAcl3B,EAAMtI,EAAO4E,CAAG,EAC9C5E,EAAM,IAAMsI,EAAK,KAAK,QACxBtI,EAAM,GAAKsI,EAAK,KAAK,OACrBtI,EAAM,OAAS,UACNA,EAAM,IAAM,IACrBA,EAAM,GAAK,EACXA,EAAM,OAAS,SAEjB,IAAI6gB,EAAUrb,GAAcs6B,EAAM9/B,EAAM,GAAIA,EAAM,MAAM,EAAGsF,EAAOw6B,EAAKjf,CAAO,EAC9E,GAAI7f,EAAG,IAAI,WAAa,OAASsE,EAAK,MAAQ,GAAK,IAAMV,EAAM,EAAIU,EAAK,GAAKtF,EAAM,GAAKsF,EAAK,KAAOtF,EAAM,IAGxG,OAAOw/B,GAAcl3B,EAAMtI,EAAO4E,CAAG,EAGvC,IAAIm7B,EAAK,SAAU/8B,GAAK4B,GAAK,CAAE,OAAO26B,GAAkBj3B,EAAMtF,cAAeyL,GAAMzL,GAAI,GAAKA,GAAK4B,EAAG,CAAG,EACnGg7B,EACAI,EAAuB,SAAU57B,GAAI,CACvC,OAAKpD,EAAG,QAAQ,cAChB4+B,EAAOA,GAAQ/hB,GAAsB7c,EAAIsH,CAAI,EACtCoZ,GAAsB1gB,EAAIsH,EAAMs3B,EAAMx7B,EAAE,GAFR,CAAC,MAAO,EAAG,IAAKkE,EAAK,KAAK,MAAM,CAGzE,EACIkZ,GAAoBwe,EAAqBhgC,EAAM,QAAU,SAAW+/B,EAAG//B,EAAO,EAAE,EAAIA,EAAM,EAAE,EAEhG,GAAIgB,EAAG,IAAI,WAAa,OAASsE,EAAK,OAAS,EAAG,CAChD,IAAIq6B,GAAsBr6B,EAAK,OAAS,GAAOV,EAAM,EACjDR,GAAK27B,EAAG//B,EAAO2/B,GAAqB,EAAI,EAAE,EAC9C,GAAIv7B,IAAM,OAAUu7B,GAAwEv7B,IAAMkB,EAAK,IAAMlB,IAAMod,GAAkB,IAA5Fpd,IAAMkB,EAAK,MAAQlB,IAAMod,GAAkB,OAAuD,CAEzI,IAAI/b,GAASk6B,GAAqB,SAAW,QAC7C,OAAO,IAAIlxB,GAAIzO,EAAM,KAAMoE,GAAIqB,EAAM,CACvC,CACF,CAKA,IAAIw6B,GAAqB,SAAUpf,GAASjc,GAAK4c,GAAmB,CAKlE,QAJI0e,GAAS,SAAU97B,GAAIu7B,GAAoB,CAAE,OAAOA,GACpD,IAAIlxB,GAAIzO,EAAM,KAAM+/B,EAAG37B,GAAI,CAAC,EAAG,QAAQ,EACvC,IAAIqK,GAAIzO,EAAM,KAAMoE,GAAI,OAAO,CAAG,EAE/Byc,IAAW,GAAKA,GAAUif,EAAK,OAAQjf,IAAWjc,GAAK,CAC5D,IAAIU,GAAOw6B,EAAKjf,EAAO,EACnB8e,GAAsB/6B,GAAM,IAAOU,GAAK,OAAS,GACjDlB,GAAKu7B,GAAqBne,GAAkB,MAAQue,EAAGve,GAAkB,IAAK,EAAE,EAGpF,GAFIlc,GAAK,MAAQlB,IAAMA,GAAKkB,GAAK,KACjClB,GAAKu7B,GAAqBr6B,GAAK,KAAOy6B,EAAGz6B,GAAK,GAAI,EAAE,EAChDkc,GAAkB,OAASpd,IAAMA,GAAKod,GAAkB,KAAO,OAAO0e,GAAO97B,GAAIu7B,EAAkB,CACzG,CACF,EAGIQ,GAAMF,GAAmBpf,EAAUjc,EAAKA,EAAK4c,EAAiB,EAClE,GAAI2e,GAAO,OAAOA,GAGlB,IAAIC,GAASx7B,EAAM,EAAI4c,GAAkB,IAAMue,EAAGve,GAAkB,MAAO,EAAE,EAC7E,OAAI4e,IAAU,MAAQ,EAAEx7B,EAAM,GAAKw7B,IAAU93B,EAAK,KAAK,UACrD63B,GAAMF,GAAmBr7B,EAAM,EAAI,EAAIk7B,EAAK,OAAS,EAAGl7B,EAAKo7B,EAAqBI,EAAM,CAAC,EACrFD,IAAcA,GAIb,IACT,CAIA,IAAIE,GAAW,CACb,UAAWjJ,GACX,gBAAiB,SAAUp2B,EAAI,CAAE,OAAOA,EAAG,aAAaA,EAAG,UAAU,QAAQ,EAAGA,EAAG,UAAU,MAAM,EAAG2B,EAAc,CAAG,EACvH,SAAU,SAAU3B,EAAI,CAAE,OAAOk+B,GAAoBl+B,EAAI,SAAUjB,EAAO,CACxE,GAAIA,EAAM,MAAM,EAAG,CACjB,IAAI0G,EAAM+G,GAAQxM,EAAG,IAAKjB,EAAM,KAAK,IAAI,EAAE,KAAK,OAChD,OAAIA,EAAM,KAAK,IAAM0G,GAAO1G,EAAM,KAAK,KAAOiB,EAAG,SAAS,EAC/C,CAAC,KAAMjB,EAAM,KAAM,GAAI0O,GAAI1O,EAAM,KAAK,KAAO,EAAG,CAAC,CAAC,EAElD,CAAC,KAAMA,EAAM,KAAM,GAAI0O,GAAI1O,EAAM,KAAK,KAAM0G,CAAG,CAAC,CAC7D,KACE,OAAO,CAAC,KAAM1G,EAAM,KAAK,EAAG,GAAIA,EAAM,GAAG,CAAC,CAE9C,CAAC,CAAG,EACJ,WAAY,SAAUiB,EAAI,CAAE,OAAOk+B,GAAoBl+B,EAAI,SAAUjB,EAAO,CAAE,MAAQ,CACpF,KAAM0O,GAAI1O,EAAM,KAAK,EAAE,KAAM,CAAC,EAC9B,GAAIkP,GAAQjO,EAAG,IAAKyN,GAAI1O,EAAM,GAAG,EAAE,KAAO,EAAG,CAAC,CAAC,CACjD,CAAI,CAAC,CAAG,EACR,YAAa,SAAUiB,EAAI,CAAE,OAAOk+B,GAAoBl+B,EAAI,SAAUjB,EAAO,CAAE,MAAQ,CACrF,KAAM0O,GAAI1O,EAAM,KAAK,EAAE,KAAM,CAAC,EAAG,GAAIA,EAAM,KAAK,CAClD,CAAI,CAAC,CAAG,EACR,mBAAoB,SAAUiB,EAAI,CAAE,OAAOk+B,GAAoBl+B,EAAI,SAAUjB,EAAO,CAClF,IAAIkf,EAAMje,EAAG,WAAWjB,EAAM,KAAM,KAAK,EAAE,IAAM,EAC7CugC,EAAUt/B,EAAG,WAAW,CAAC,KAAM,EAAG,IAAKie,CAAG,EAAG,KAAK,EACtD,MAAO,CAAC,KAAMqhB,EAAS,GAAIvgC,EAAM,KAAK,CAAC,CACzC,CAAC,CAAG,EACJ,oBAAqB,SAAUiB,EAAI,CAAE,OAAOk+B,GAAoBl+B,EAAI,SAAUjB,EAAO,CACnF,IAAIkf,EAAMje,EAAG,WAAWjB,EAAM,KAAM,KAAK,EAAE,IAAM,EAC7CwgC,EAAWv/B,EAAG,WAAW,CAAC,KAAMA,EAAG,QAAQ,QAAQ,YAAc,IAAK,IAAKie,CAAG,EAAG,KAAK,EAC1F,MAAO,CAAC,KAAMlf,EAAM,KAAK,EAAG,GAAIwgC,CAAS,CAC3C,CAAC,CAAG,EACJ,KAAM,SAAUv/B,EAAI,CAAE,OAAOA,EAAG,KAAK,CAAG,EACxC,KAAM,SAAUA,EAAI,CAAE,OAAOA,EAAG,KAAK,CAAG,EACxC,cAAe,SAAUA,EAAI,CAAE,OAAOA,EAAG,cAAc,CAAG,EAC1D,cAAe,SAAUA,EAAI,CAAE,OAAOA,EAAG,cAAc,CAAG,EAC1D,WAAY,SAAUA,EAAI,CAAE,OAAOA,EAAG,gBAAgByN,GAAIzN,EAAG,UAAU,EAAG,CAAC,CAAC,CAAG,EAC/E,SAAU,SAAUA,EAAI,CAAE,OAAOA,EAAG,gBAAgByN,GAAIzN,EAAG,SAAS,CAAC,CAAC,CAAG,EACzE,YAAa,SAAUA,EAAI,CAAE,OAAOA,EAAG,mBAAmB,SAAUjB,EAAO,CAAE,OAAOygC,GAAUx/B,EAAIjB,EAAM,KAAK,IAAI,CAAG,EAClH,CAAC,OAAQ,QAAS,KAAM,CAAC,CAC3B,CAAG,EACH,iBAAkB,SAAUiB,EAAI,CAAE,OAAOA,EAAG,mBAAmB,SAAUjB,EAAO,CAAE,OAAO0gC,GAAez/B,EAAIjB,EAAM,IAAI,CAAG,EACvH,CAAC,OAAQ,QAAS,KAAM,CAAC,CAC3B,CAAG,EACH,UAAW,SAAUiB,EAAI,CAAE,OAAOA,EAAG,mBAAmB,SAAUjB,EAAO,CAAE,OAAO2gC,GAAQ1/B,EAAIjB,EAAM,KAAK,IAAI,CAAG,EAC9G,CAAC,OAAQ,QAAS,KAAM,EAAE,CAC5B,CAAG,EACH,YAAa,SAAUiB,EAAI,CAAE,OAAOA,EAAG,mBAAmB,SAAUjB,EAAO,CACzE,IAAIkf,EAAMje,EAAG,aAAajB,EAAM,KAAM,KAAK,EAAE,IAAM,EACnD,OAAOiB,EAAG,WAAW,CAAC,KAAMA,EAAG,QAAQ,QAAQ,YAAc,IAAK,IAAKie,CAAG,EAAG,KAAK,CACpF,EAAGpc,EAAQ,CAAG,EACd,WAAY,SAAU7B,EAAI,CAAE,OAAOA,EAAG,mBAAmB,SAAUjB,EAAO,CACxE,IAAIkf,EAAMje,EAAG,aAAajB,EAAM,KAAM,KAAK,EAAE,IAAM,EACnD,OAAOiB,EAAG,WAAW,CAAC,KAAM,EAAG,IAAKie,CAAG,EAAG,KAAK,CACjD,EAAGpc,EAAQ,CAAG,EACd,gBAAiB,SAAU7B,EAAI,CAAE,OAAOA,EAAG,mBAAmB,SAAUjB,EAAO,CAC7E,IAAIkf,EAAMje,EAAG,aAAajB,EAAM,KAAM,KAAK,EAAE,IAAM,EAC/CiD,EAAMhC,EAAG,WAAW,CAAC,KAAM,EAAG,IAAKie,CAAG,EAAG,KAAK,EAClD,OAAIjc,EAAI,GAAKhC,EAAG,QAAQgC,EAAI,IAAI,EAAE,OAAO,IAAI,EAAYy9B,GAAez/B,EAAIjB,EAAM,IAAI,EAC/EiD,CACT,EAAGH,EAAQ,CAAG,EACd,SAAU,SAAU7B,EAAI,CAAE,OAAOA,EAAG,MAAM,GAAI,MAAM,CAAG,EACvD,WAAY,SAAUA,EAAI,CAAE,OAAOA,EAAG,MAAM,EAAG,MAAM,CAAG,EACxD,SAAU,SAAUA,EAAI,CAAE,OAAOA,EAAG,MAAM,GAAI,MAAM,CAAG,EACvD,WAAY,SAAUA,EAAI,CAAE,OAAOA,EAAG,MAAM,EAAG,MAAM,CAAG,EACxD,WAAY,SAAUA,EAAI,CAAE,OAAOA,EAAG,MAAM,GAAI,MAAM,CAAG,EACzD,YAAa,SAAUA,EAAI,CAAE,OAAOA,EAAG,MAAM,EAAG,MAAM,CAAG,EACzD,aAAc,SAAUA,EAAI,CAAE,OAAOA,EAAG,MAAM,GAAI,QAAQ,CAAG,EAC7D,cAAe,SAAUA,EAAI,CAAE,OAAOA,EAAG,MAAM,EAAG,QAAQ,CAAG,EAC7D,WAAY,SAAUA,EAAI,CAAE,OAAOA,EAAG,MAAM,GAAI,MAAM,CAAG,EACzD,aAAc,SAAUA,EAAI,CAAE,OAAOA,EAAG,MAAM,EAAG,OAAO,CAAG,EAC3D,YAAa,SAAUA,EAAI,CAAE,OAAOA,EAAG,MAAM,GAAI,OAAO,CAAG,EAC3D,YAAa,SAAUA,EAAI,CAAE,OAAOA,EAAG,MAAM,EAAG,MAAM,CAAG,EACzD,cAAe,SAAUA,EAAI,CAAE,OAAOA,EAAG,QAAQ,GAAI,WAAW,CAAG,EACnE,aAAc,SAAUA,EAAI,CAAE,OAAOA,EAAG,QAAQ,EAAG,MAAM,CAAG,EAC5D,cAAe,SAAUA,EAAI,CAAE,OAAOA,EAAG,QAAQ,GAAI,MAAM,CAAG,EAC9D,aAAc,SAAUA,EAAI,CAAE,OAAOA,EAAG,QAAQ,EAAG,MAAM,CAAG,EAC5D,eAAgB,SAAUA,EAAI,CAAE,OAAOA,EAAG,QAAQ,GAAI,OAAO,CAAG,EAChE,cAAe,SAAUA,EAAI,CAAE,OAAOA,EAAG,QAAQ,EAAG,OAAO,CAAG,EAC9D,WAAY,SAAUA,EAAI,CAAE,OAAOA,EAAG,gBAAgB,OAAO,CAAG,EAChE,WAAY,SAAUA,EAAI,CAAE,OAAOA,EAAG,gBAAgB,KAAK,CAAG,EAC9D,WAAY,SAAUA,EAAI,CAAE,OAAOA,EAAG,gBAAgB,UAAU,CAAG,EACnE,UAAW,SAAUA,EAAI,CAAE,OAAOA,EAAG,iBAAiB,GAAI,CAAG,EAC7D,cAAe,SAAUA,EAAI,CAE3B,QADI2/B,EAAS,CAAC,EAAG1P,EAASjwB,EAAG,eAAe,EAAGc,EAAUd,EAAG,QAAQ,QAC3DnB,EAAI,EAAGA,EAAIoxB,EAAO,OAAQpxB,IAAK,CACtC,IAAImD,EAAMiuB,EAAOpxB,CAAC,EAAE,KAAK,EACrBoD,EAAMrB,GAAYZ,EAAG,QAAQgC,EAAI,IAAI,EAAGA,EAAI,GAAIlB,CAAO,EAC3D6+B,EAAO,KAAKv9B,GAAStB,EAAUmB,EAAMnB,CAAO,CAAC,CAC/C,CACAd,EAAG,kBAAkB2/B,CAAM,CAC7B,EACA,WAAY,SAAU3/B,EAAI,CACpBA,EAAG,kBAAkB,EAAKA,EAAG,gBAAgB,KAAK,EAC/CA,EAAG,YAAY,WAAW,CACnC,EAQA,eAAgB,SAAUA,EAAI,CAAE,OAAOusB,GAAQvsB,EAAI,UAAY,CAE7D,QADIiwB,EAASjwB,EAAG,eAAe,EAAG+0B,EAAS,CAAC,EACnCl2B,EAAI,EAAGA,EAAIoxB,EAAO,OAAQpxB,IACjC,GAAKoxB,EAAOpxB,CAAC,EAAE,MAAM,EACrB,KAAI6F,EAAMurB,EAAOpxB,CAAC,EAAE,KAAMyI,EAAOkF,GAAQxM,EAAG,IAAK0E,EAAI,IAAI,EAAE,KAC3D,GAAI4C,GAEF,GADI5C,EAAI,IAAM4C,EAAK,SAAU5C,EAAM,IAAI+I,GAAI/I,EAAI,KAAMA,EAAI,GAAK,CAAC,GAC3DA,EAAI,GAAK,EACXA,EAAM,IAAI+I,GAAI/I,EAAI,KAAMA,EAAI,GAAK,CAAC,EAClC1E,EAAG,aAAasH,EAAK,OAAO5C,EAAI,GAAK,CAAC,EAAI4C,EAAK,OAAO5C,EAAI,GAAK,CAAC,EAChD+I,GAAI/I,EAAI,KAAMA,EAAI,GAAK,CAAC,EAAGA,EAAK,YAAY,UACnDA,EAAI,KAAO1E,EAAG,IAAI,MAAO,CAClC,IAAI4F,EAAO4G,GAAQxM,EAAG,IAAK0E,EAAI,KAAO,CAAC,EAAE,KACrCkB,IACFlB,EAAM,IAAI+I,GAAI/I,EAAI,KAAM,CAAC,EACzB1E,EAAG,aAAasH,EAAK,OAAO,CAAC,EAAItH,EAAG,IAAI,cAAc,EACtC4F,EAAK,OAAOA,EAAK,OAAS,CAAC,EAC3B6H,GAAI/I,EAAI,KAAO,EAAGkB,EAAK,OAAS,CAAC,EAAGlB,EAAK,YAAY,EAEzE,EAEFqwB,EAAO,KAAK,IAAI1E,GAAM3rB,EAAKA,CAAG,CAAC,EAEjC1E,EAAG,cAAc+0B,CAAM,CACzB,CAAC,CAAG,EACJ,iBAAkB,SAAU/0B,EAAI,CAAE,OAAOusB,GAAQvsB,EAAI,UAAY,CAE/D,QADI4/B,EAAO5/B,EAAG,eAAe,EACpBnB,EAAI+gC,EAAK,OAAS,EAAG/gC,GAAK,EAAGA,IAClCmB,EAAG,aAAaA,EAAG,IAAI,cAAc,EAAG4/B,EAAK/gC,CAAC,EAAE,OAAQ+gC,EAAK/gC,CAAC,EAAE,KAAM,QAAQ,EAClF+gC,EAAO5/B,EAAG,eAAe,EACzB,QAAS2F,EAAM,EAAGA,EAAMi6B,EAAK,OAAQj6B,IACjC3F,EAAG,WAAW4/B,EAAKj6B,CAAG,EAAE,KAAK,EAAE,KAAM,KAAM,EAAI,EACnDsjB,GAAoBjpB,CAAE,CACxB,CAAC,CAAG,EACJ,SAAU,SAAUA,EAAI,CAAE,OAAOA,EAAG,iBAAiB;AAAA,EAAM,OAAO,CAAG,EACrE,gBAAiB,SAAUA,EAAI,CAAE,OAAOA,EAAG,gBAAgB,CAAG,CAChE,EAGA,SAASw/B,GAAUx/B,EAAIqV,EAAO,CAC5B,IAAI/N,EAAOkF,GAAQxM,EAAG,IAAKqV,CAAK,EAC5BqkB,EAAS3kB,GAAWzN,CAAI,EAC5B,OAAIoyB,GAAUpyB,IAAQ+N,EAAQpI,EAAOysB,CAAM,GACpC+E,GAAU,GAAMz+B,EAAI05B,EAAQrkB,EAAO,CAAC,CAC7C,CACA,SAASqqB,GAAQ1/B,EAAIqV,EAAO,CAC1B,IAAI/N,EAAOkF,GAAQxM,EAAG,IAAKqV,CAAK,EAC5BqkB,EAASzkB,GAAc3N,CAAI,EAC/B,OAAIoyB,GAAUpyB,IAAQ+N,EAAQpI,EAAOysB,CAAM,GACpC+E,GAAU,GAAMz+B,EAAIsH,EAAM+N,EAAO,EAAE,CAC5C,CACA,SAASoqB,GAAez/B,EAAIgC,EAAK,CAC/B,IAAIhD,EAAQwgC,GAAUx/B,EAAIgC,EAAI,IAAI,EAC9BsF,EAAOkF,GAAQxM,EAAG,IAAKhB,EAAM,IAAI,EACjCoF,EAAQiD,GAASC,EAAMtH,EAAG,IAAI,SAAS,EAC3C,GAAI,CAACoE,GAASA,EAAM,CAAC,EAAE,OAAS,EAAG,CACjC,IAAIy7B,EAAa,KAAK,IAAI7gC,EAAM,GAAIsI,EAAK,KAAK,OAAO,IAAI,CAAC,EACtDw4B,EAAO99B,EAAI,MAAQhD,EAAM,MAAQgD,EAAI,IAAM69B,GAAc79B,EAAI,GACjE,OAAOyL,GAAIzO,EAAM,KAAM8gC,EAAO,EAAID,EAAY7gC,EAAM,MAAM,CAC5D,CACA,OAAOA,CACT,CAGA,SAAS+gC,GAAgB//B,EAAIggC,EAAOC,EAAW,CAC7C,GAAI,OAAOD,GAAS,WAClBA,EAAQX,GAASW,CAAK,EAClB,CAACA,GAAS,MAAO,GAIvBhgC,EAAG,QAAQ,MAAM,aAAa,EAC9B,IAAIkgC,EAAYlgC,EAAG,QAAQ,MAAOo1B,EAAO,GACzC,GAAI,CACEp1B,EAAG,WAAW,IAAKA,EAAG,MAAM,cAAgB,IAC5CigC,IAAajgC,EAAG,QAAQ,MAAQ,IACpCo1B,EAAO4K,EAAMhgC,CAAE,GAAK0B,EACtB,QAAE,CACA1B,EAAG,QAAQ,MAAQkgC,EACnBlgC,EAAG,MAAM,cAAgB,EAC3B,CACA,OAAOo1B,CACT,CAEA,SAAS+K,GAAmBngC,EAAIsK,EAAM4tB,EAAQ,CAC5C,QAASr5B,EAAI,EAAGA,EAAImB,EAAG,MAAM,QAAQ,OAAQnB,IAAK,CAChD,IAAI2K,EAASo0B,GAAUtzB,EAAMtK,EAAG,MAAM,QAAQnB,CAAC,EAAGq5B,EAAQl4B,CAAE,EAC5D,GAAIwJ,EAAU,OAAOA,CACvB,CACA,OAAQxJ,EAAG,QAAQ,WAAa49B,GAAUtzB,EAAMtK,EAAG,QAAQ,UAAWk4B,EAAQl4B,CAAE,GAC3E49B,GAAUtzB,EAAMtK,EAAG,QAAQ,OAAQk4B,EAAQl4B,CAAE,CACpD,CAKA,IAAIogC,GAAU,IAAIj/B,GAElB,SAASk/B,GAAYrgC,EAAIsK,EAAMlM,EAAG85B,EAAQ,CACxC,IAAIoI,EAAMtgC,EAAG,MAAM,OACnB,GAAIsgC,EAAK,CACP,GAAIxC,GAAcxzB,CAAI,EAAK,MAAO,UAUlC,GATI,MAAM,KAAKA,CAAI,EACftK,EAAG,MAAM,OAAS,KAElBogC,GAAQ,IAAI,GAAI,UAAY,CACxBpgC,EAAG,MAAM,QAAUsgC,IACrBtgC,EAAG,MAAM,OAAS,KAClBA,EAAG,QAAQ,MAAM,MAAM,EAE3B,CAAC,EACCugC,GAAiBvgC,EAAIsgC,EAAM,IAAMh2B,EAAMlM,EAAG85B,CAAM,EAAK,MAAO,EAClE,CACA,OAAOqI,GAAiBvgC,EAAIsK,EAAMlM,EAAG85B,CAAM,CAC7C,CAEA,SAASqI,GAAiBvgC,EAAIsK,EAAMlM,EAAG85B,EAAQ,CAC7C,IAAI1uB,EAAS22B,GAAmBngC,EAAIsK,EAAM4tB,CAAM,EAEhD,OAAI1uB,GAAU,UACVxJ,EAAG,MAAM,OAASsK,GAClBd,GAAU,WACVkQ,GAAY1Z,EAAI,aAAcA,EAAIsK,EAAMlM,CAAC,GAEzCoL,GAAU,WAAaA,GAAU,WACnCjB,GAAiBnK,CAAC,EAClBgoB,GAAapmB,CAAE,GAGV,CAAC,CAACwJ,CACX,CAGA,SAASg3B,GAAiBxgC,EAAI5B,EAAG,CAC/B,IAAIkM,EAAO2zB,GAAQ7/B,EAAG,EAAI,EAC1B,OAAKkM,EAEDlM,EAAE,UAAY,CAAC4B,EAAG,MAAM,OAInBqgC,GAAYrgC,EAAI,SAAWsK,EAAMlM,EAAG,SAAUyB,EAAG,CAAE,OAAOkgC,GAAgB//B,EAAIH,EAAG,EAAI,CAAG,CAAC,GACzFwgC,GAAYrgC,EAAIsK,EAAMlM,EAAG,SAAUyB,EAAG,CACpC,GAAI,OAAOA,GAAK,SAAW,WAAW,KAAKA,CAAC,EAAIA,EAAE,OAC9C,OAAOkgC,GAAgB//B,EAAIH,CAAC,CAClC,CAAC,EAEDwgC,GAAYrgC,EAAIsK,EAAMlM,EAAG,SAAUyB,EAAG,CAAE,OAAOkgC,GAAgB//B,EAAIH,CAAC,CAAG,CAAC,EAZ7D,EActB,CAGA,SAAS4gC,GAAkBzgC,EAAI5B,EAAGgF,EAAI,CACpC,OAAOi9B,GAAYrgC,EAAI,IAAMoD,EAAK,IAAKhF,EAAG,SAAUyB,EAAG,CAAE,OAAOkgC,GAAgB//B,EAAIH,EAAG,EAAI,CAAG,CAAC,CACjG,CAEA,IAAI6gC,GAAiB,KACrB,SAASC,GAAUviC,EAAG,CACpB,IAAI4B,EAAK,KACT,GAAI,EAAA5B,EAAE,QAAUA,EAAE,QAAU4B,EAAG,QAAQ,MAAM,SAAS,KACtDA,EAAG,MAAM,MAAQV,EAAUW,GAAKD,CAAE,CAAC,EAC/B,CAAA+H,GAAe/H,EAAI5B,CAAC,GAExB,CAAI3B,GAAMC,EAAa,IAAM0B,EAAE,SAAW,KAAMA,EAAE,YAAc,IAChE,IAAI2G,EAAO3G,EAAE,QACb4B,EAAG,QAAQ,MAAQ+E,GAAQ,IAAM3G,EAAE,SACnC,IAAIwiC,EAAUJ,GAAiBxgC,EAAI5B,CAAC,EAChCrB,IACF2jC,GAAiBE,EAAU77B,EAAO,KAE9B,CAAC67B,GAAW77B,GAAQ,IAAM,CAAC+E,KAAiBxM,EAAMc,EAAE,QAAUA,EAAE,UAChE4B,EAAG,iBAAiB,GAAI,KAAM,KAAK,GAErC3D,GAAS,CAACiB,GAAO,CAACsjC,GAAW77B,GAAQ,IAAM3G,EAAE,UAAY,CAACA,EAAE,SAAW,SAAS,aAChF,SAAS,YAAY,KAAK,EAG1B2G,GAAQ,IAAM,CAAC,2BAA2B,KAAK/E,EAAG,QAAQ,QAAQ,SAAS,GAC3E6gC,GAAc7gC,CAAE,EACtB,CAEA,SAAS6gC,GAAc7gC,EAAI,CACzB,IAAI8gC,EAAU9gC,EAAG,QAAQ,QACzBN,GAASohC,EAAS,sBAAsB,EAExC,SAASC,EAAG3iC,EAAG,EACTA,EAAE,SAAW,IAAM,CAACA,EAAE,UACxBN,EAAQgjC,EAAS,sBAAsB,EACvCn5B,GAAI,SAAU,QAASo5B,CAAE,EACzBp5B,GAAI,SAAU,YAAao5B,CAAE,EAEjC,CACAv5B,EAAG,SAAU,QAASu5B,CAAE,EACxBv5B,EAAG,SAAU,YAAau5B,CAAE,CAC9B,CAEA,SAASC,GAAQ5iC,EAAG,CACdA,EAAE,SAAW,KAAM,KAAK,IAAI,IAAI,MAAQ,IAC5C2J,GAAe,KAAM3J,CAAC,CACxB,CAEA,SAAS6iC,GAAW7iC,EAAG,CACrB,IAAI4B,EAAK,KACT,GAAI,EAAA5B,EAAE,QAAUA,EAAE,QAAU4B,EAAG,QAAQ,MAAM,SAAS,IAClD,EAAA0b,GAAc1b,EAAG,QAAS5B,CAAC,GAAK2J,GAAe/H,EAAI5B,CAAC,GAAKA,EAAE,SAAW,CAACA,EAAE,QAAUd,GAAOc,EAAE,SAChG,KAAI8iC,EAAU9iC,EAAE,QAAS+iC,EAAW/iC,EAAE,SACtC,GAAIrB,GAAUmkC,GAAWR,GAAgB,CAACA,GAAiB,KAAMn4B,GAAiBnK,CAAC,EAAG,MAAM,CAC5F,GAAK,EAAArB,IAAW,CAACqB,EAAE,OAASA,EAAE,MAAQ,KAAQoiC,GAAiBxgC,EAAI5B,CAAC,GACpE,KAAIgF,EAAK,OAAO,aAAa+9B,GAAmBD,CAAkB,EAE9D99B,GAAM,OACNq9B,GAAkBzgC,EAAI5B,EAAGgF,CAAE,GAC/BpD,EAAG,QAAQ,MAAM,WAAW5B,CAAC,IAC/B,CAEA,IAAIgjC,GAAoB,IAEpBC,GAAY,SAAS//B,EAAMU,EAAKs/B,EAAQ,CAC1C,KAAK,KAAOhgC,EACZ,KAAK,IAAMU,EACX,KAAK,OAASs/B,CAChB,EAEAD,GAAU,UAAU,QAAU,SAAU//B,EAAMU,EAAKs/B,EAAQ,CACzD,OAAO,KAAK,KAAOF,GAAoB9/B,GACrCoM,GAAI1L,EAAK,KAAK,GAAG,GAAK,GAAKs/B,GAAU,KAAK,MAC9C,EAEA,IAAIC,GAAWC,GACf,SAASC,GAAYz/B,EAAKs/B,EAAQ,CAChC,IAAII,EAAM,CAAC,IAAI,KACf,OAAIF,IAAmBA,GAAgB,QAAQE,EAAK1/B,EAAKs/B,CAAM,GAC7DC,GAAYC,GAAkB,KACvB,UACED,IAAaA,GAAU,QAAQG,EAAK1/B,EAAKs/B,CAAM,GACxDE,GAAkB,IAAIH,GAAUK,EAAK1/B,EAAKs/B,CAAM,EAChDC,GAAY,KACL,WAEPA,GAAY,IAAIF,GAAUK,EAAK1/B,EAAKs/B,CAAM,EAC1CE,GAAkB,KACX,SAEX,CAOA,SAASG,GAAYvjC,EAAG,CACtB,IAAI4B,EAAK,KAAM0P,EAAU1P,EAAG,QAC5B,GAAI,EAAA+H,GAAe/H,EAAI5B,CAAC,GAAKsR,EAAQ,aAAeA,EAAQ,MAAM,cAAc,GAIhF,IAHAA,EAAQ,MAAM,aAAa,EAC3BA,EAAQ,MAAQtR,EAAE,SAEdsd,GAAchM,EAAStR,CAAC,EAAG,CACxBzB,IAGH+S,EAAQ,SAAS,UAAY,GAC7B,WAAW,UAAY,CAAE,OAAOA,EAAQ,SAAS,UAAY,EAAM,EAAG,GAAG,GAE3E,MACF,CACA,GAAI,CAAAkyB,GAAc5hC,EAAI5B,CAAC,EACvB,KAAI4D,EAAMqgB,GAAariB,EAAI5B,CAAC,EAAGkjC,EAAS34B,GAASvK,CAAC,EAAGyjC,EAAS7/B,EAAMy/B,GAAYz/B,EAAKs/B,CAAM,EAAI,SAC/FnhC,GAAIH,CAAE,EAAE,MAAM,EAGVshC,GAAU,GAAKthC,EAAG,MAAM,eACxBA,EAAG,MAAM,cAAc5B,CAAC,EAExB,EAAA4D,GAAO8/B,GAAmB9hC,EAAIshC,EAAQt/B,EAAK6/B,EAAQzjC,CAAC,KAEpDkjC,GAAU,EACRt/B,EAAO+/B,GAAe/hC,EAAIgC,EAAK6/B,EAAQzjC,CAAC,EACnCsK,GAAStK,CAAC,GAAKsR,EAAQ,UAAYnH,GAAiBnK,CAAC,EACrDkjC,GAAU,GACft/B,GAAO2yB,GAAgB30B,EAAG,IAAKgC,CAAG,EACtC,WAAW,UAAY,CAAE,OAAO0N,EAAQ,MAAM,MAAM,CAAG,EAAG,EAAE,GACnD4xB,GAAU,IACf3jC,EAAqBqC,EAAG,QAAQ,MAAM,cAAc5B,CAAC,EAClDooB,GAAexmB,CAAE,KAE5B,CAEA,SAAS8hC,GAAmB9hC,EAAIshC,EAAQt/B,EAAK6/B,EAAQvN,EAAO,CAC1D,IAAIhqB,EAAO,QACX,OAAIu3B,GAAU,SAAYv3B,EAAO,SAAWA,EACnCu3B,GAAU,WAAYv3B,EAAO,SAAWA,GACjDA,GAAQg3B,GAAU,EAAI,OAASA,GAAU,EAAI,SAAW,SAAWh3B,EAE5D+1B,GAAYrgC,EAAK+9B,GAAiBzzB,EAAMgqB,CAAK,EAAGA,EAAO,SAAU0L,EAAO,CAE7E,GADI,OAAOA,GAAS,WAAYA,EAAQX,GAASW,CAAK,GAClD,CAACA,EAAS,MAAO,GACrB,IAAI5K,EAAO,GACX,GAAI,CACEp1B,EAAG,WAAW,IAAKA,EAAG,MAAM,cAAgB,IAChDo1B,EAAO4K,EAAMhgC,EAAIgC,CAAG,GAAKN,EAC3B,QAAE,CACA1B,EAAG,MAAM,cAAgB,EAC3B,CACA,OAAOo1B,CACT,CAAC,CACH,CAEA,SAAS4M,GAAehiC,EAAI6hC,EAAQvN,EAAO,CACzC,IAAI2N,EAASjiC,EAAG,UAAU,gBAAgB,EACtC0C,EAAQu/B,EAASA,EAAOjiC,EAAI6hC,EAAQvN,CAAK,EAAI,CAAC,EAClD,GAAI5xB,EAAM,MAAQ,KAAM,CACtB,IAAIyZ,EAAO5e,EAAW+2B,EAAM,UAAYA,EAAM,QAAUA,EAAM,OAC9D5xB,EAAM,KAAOyZ,EAAO,YAAc0lB,GAAU,SAAW,OAASA,GAAU,SAAW,OAAS,MAChG,CACA,OAAIn/B,EAAM,QAAU,MAAQ1C,EAAG,IAAI,UAAU0C,EAAM,OAAS1C,EAAG,IAAI,QAAUs0B,EAAM,UAC/E5xB,EAAM,QAAU,OAAQA,EAAM,OAASpF,EAAMg3B,EAAM,QAAUA,EAAM,SACnE5xB,EAAM,YAAc,OAAQA,EAAM,WAAa,EAAEpF,EAAMg3B,EAAM,OAASA,EAAM,UACzE5xB,CACT,CAEA,SAASq/B,GAAe/hC,EAAIgC,EAAK6/B,EAAQvN,EAAO,CAC1C73B,EAAM,WAAW2D,GAAKkmB,GAAatmB,CAAE,EAAG,CAAC,EACtCA,EAAG,MAAM,MAAQV,EAAUW,GAAKD,CAAE,CAAC,EAE1C,IAAIkiC,EAAWF,GAAehiC,EAAI6hC,EAAQvN,CAAK,EAE3CjH,EAAMrtB,EAAG,IAAI,IAAKmiC,EAClBniC,EAAG,QAAQ,UAAY4I,IAAe,CAAC5I,EAAG,WAAW,GACrD6hC,GAAU,WAAaM,EAAY9U,EAAI,SAASrrB,CAAG,GAAK,KACvD0L,IAAKy0B,EAAY9U,EAAI,OAAO8U,CAAS,GAAG,KAAK,EAAGngC,CAAG,EAAI,GAAKA,EAAI,KAAO,KACvE0L,GAAIy0B,EAAU,GAAG,EAAGngC,CAAG,EAAI,GAAKA,EAAI,KAAO,GAC5CogC,GAAoBpiC,EAAIs0B,EAAOtyB,EAAKkgC,CAAQ,EAE5CG,GAAiBriC,EAAIs0B,EAAOtyB,EAAKkgC,CAAQ,CAC/C,CAIA,SAASE,GAAoBpiC,EAAIs0B,EAAOtyB,EAAKkgC,EAAU,CACrD,IAAIxyB,EAAU1P,EAAG,QAASsiC,EAAQ,GAC9BC,EAAU/V,GAAUxsB,EAAI,SAAU5B,EAAG,CACnCzB,IAAU+S,EAAQ,SAAS,UAAY,IAC3C1P,EAAG,MAAM,aAAe,GACpBA,EAAG,MAAM,oBACPA,EAAG,SAAS,EAAKA,EAAG,MAAM,kBAAoB,GAC3CwmB,GAAexmB,CAAE,GAE1B2H,GAAI+H,EAAQ,QAAQ,cAAe,UAAW6yB,CAAO,EACrD56B,GAAI+H,EAAQ,QAAQ,cAAe,YAAa8yB,CAAS,EACzD76B,GAAI+H,EAAQ,SAAU,YAAa+yB,CAAS,EAC5C96B,GAAI+H,EAAQ,SAAU,OAAQ6yB,CAAO,EAChCD,IACH/5B,GAAiBnK,CAAC,EACb8jC,EAAS,QACVvN,GAAgB30B,EAAG,IAAKgC,EAAK,KAAM,KAAMkgC,EAAS,MAAM,EAEvDvlC,GAAU,CAACK,GAAWP,GAAMC,GAAc,EAC3C,WAAW,UAAY,CAACgT,EAAQ,QAAQ,cAAc,KAAK,MAAM,CAAC,cAAe,EAAI,CAAC,EAAGA,EAAQ,MAAM,MAAM,CAAE,EAAG,EAAE,EAEpHA,EAAQ,MAAM,MAAM,EAE5B,CAAC,EACG8yB,EAAY,SAASE,EAAI,CAC3BJ,EAAQA,GAAS,KAAK,IAAIhO,EAAM,QAAUoO,EAAG,OAAO,EAAI,KAAK,IAAIpO,EAAM,QAAUoO,EAAG,OAAO,GAAK,EAClG,EACID,EAAY,UAAY,CAAE,OAAOH,EAAQ,EAAM,EAE/C3lC,IAAU+S,EAAQ,SAAS,UAAY,IAC3C1P,EAAG,MAAM,aAAeuiC,EACxBA,EAAQ,KAAO,CAACL,EAAS,WACzB16B,EAAGkI,EAAQ,QAAQ,cAAe,UAAW6yB,CAAO,EACpD/6B,EAAGkI,EAAQ,QAAQ,cAAe,YAAa8yB,CAAS,EACxDh7B,EAAGkI,EAAQ,SAAU,YAAa+yB,CAAS,EAC3Cj7B,EAAGkI,EAAQ,SAAU,OAAQ6yB,CAAO,EAEpCviC,EAAG,MAAM,kBAAoB,GAC7B,WAAW,UAAY,CAAE,OAAO0P,EAAQ,MAAM,MAAM,CAAG,EAAG,EAAE,EAExDA,EAAQ,SAAS,UAAYA,EAAQ,SAAS,SAAS,CAC7D,CAEA,SAASizB,GAAa3iC,EAAIgC,EAAK4gC,EAAM,CACnC,GAAIA,GAAQ,OAAU,OAAO,IAAIvS,GAAMruB,EAAKA,CAAG,EAC/C,GAAI4gC,GAAQ,OAAU,OAAO5iC,EAAG,WAAWgC,CAAG,EAC9C,GAAI4gC,GAAQ,OAAU,OAAO,IAAIvS,GAAM5iB,GAAIzL,EAAI,KAAM,CAAC,EAAGiM,GAAQjO,EAAG,IAAKyN,GAAIzL,EAAI,KAAO,EAAG,CAAC,CAAC,CAAC,EAC9F,IAAIwH,EAASo5B,EAAK5iC,EAAIgC,CAAG,EACzB,OAAO,IAAIquB,GAAM7mB,EAAO,KAAMA,EAAO,EAAE,CACzC,CAGA,SAAS64B,GAAiBriC,EAAIs0B,EAAOt1B,EAAOkjC,EAAU,CAChDzlC,GAAM+pB,GAAexmB,CAAE,EAC3B,IAAI0P,EAAU1P,EAAG,QAASR,EAAMQ,EAAG,IACnCuI,GAAiB+rB,CAAK,EAEtB,IAAIuO,EAAUC,EAAUC,EAAWvjC,EAAI,IAAKywB,EAAS8S,EAAS,OAY9D,GAXIb,EAAS,QAAU,CAACA,EAAS,QAC/BY,EAAWtjC,EAAI,IAAI,SAASR,CAAK,EAC7B8jC,EAAW,GACXD,EAAW5S,EAAO6S,CAAQ,EAE1BD,EAAW,IAAIxS,GAAMrxB,EAAOA,CAAK,IAErC6jC,EAAWrjC,EAAI,IAAI,QAAQ,EAC3BsjC,EAAWtjC,EAAI,IAAI,WAGjB0iC,EAAS,MAAQ,YACdA,EAAS,SAAUW,EAAW,IAAIxS,GAAMrxB,EAAOA,CAAK,GACzDA,EAAQqjB,GAAariB,EAAIs0B,EAAO,GAAM,EAAI,EAC1CwO,EAAW,OACN,CACL,IAAI/jC,GAAQ4jC,GAAa3iC,EAAIhB,EAAOkjC,EAAS,IAAI,EAC7CA,EAAS,OACTW,EAAWrO,GAAYqO,EAAU9jC,GAAM,OAAQA,GAAM,KAAMmjC,EAAS,MAAM,EAE1EW,EAAW9jC,EACjB,CAEKmjC,EAAS,OAIHY,GAAY,IACrBA,EAAW7S,EAAO,OAClB2E,GAAap1B,EAAK8wB,GAAmBtwB,EAAIiwB,EAAO,OAAO,CAAC4S,CAAQ,CAAC,EAAGC,CAAQ,EAC/D,CAAC,OAAQ,GAAO,OAAQ,QAAQ,CAAC,GACrC7S,EAAO,OAAS,GAAKA,EAAO6S,CAAQ,EAAE,MAAM,GAAKZ,EAAS,MAAQ,QAAU,CAACA,EAAS,QAC/FtN,GAAap1B,EAAK8wB,GAAmBtwB,EAAIiwB,EAAO,MAAM,EAAG6S,CAAQ,EAAE,OAAO7S,EAAO,MAAM6S,EAAW,CAAC,CAAC,EAAG,CAAC,EAC3F,CAAC,OAAQ,GAAO,OAAQ,QAAQ,CAAC,EAC9CC,EAAWvjC,EAAI,KAEfw1B,GAAoBx1B,EAAKsjC,EAAUD,EAAUjhC,EAAS,GAZtDkhC,EAAW,EACXlO,GAAap1B,EAAK,IAAIwwB,GAAU,CAAC6S,CAAQ,EAAG,CAAC,EAAGjhC,EAAS,EACzDmhC,EAAWvjC,EAAI,KAajB,IAAIwjC,GAAUhkC,EACd,SAASikC,GAASjhC,GAAK,CACrB,GAAI0L,GAAIs1B,GAAShhC,EAAG,GAAK,EAGzB,GAFAghC,GAAUhhC,GAENkgC,EAAS,MAAQ,YAAa,CAKhC,QAJIjS,GAAS,CAAC,EAAGnvB,GAAUd,EAAG,QAAQ,QAClCkjC,GAAWtiC,GAAY4L,GAAQhN,EAAKR,EAAM,IAAI,EAAE,KAAMA,EAAM,GAAI8B,EAAO,EACvEqiC,GAASviC,GAAY4L,GAAQhN,EAAKwC,GAAI,IAAI,EAAE,KAAMA,GAAI,GAAIlB,EAAO,EACjEse,GAAO,KAAK,IAAI8jB,GAAUC,EAAM,EAAGxjB,GAAQ,KAAK,IAAIujB,GAAUC,EAAM,EAC/D77B,GAAO,KAAK,IAAItI,EAAM,KAAMgD,GAAI,IAAI,EAAG/C,GAAM,KAAK,IAAIe,EAAG,SAAS,EAAG,KAAK,IAAIhB,EAAM,KAAMgD,GAAI,IAAI,CAAC,EACvGsF,IAAQrI,GAAKqI,KAAQ,CACxB,IAAIsF,GAAOJ,GAAQhN,EAAK8H,EAAI,EAAE,KAAMg4B,GAAUx9B,GAAW8K,GAAMwS,GAAMte,EAAO,EACxEse,IAAQO,GACRsQ,GAAO,KAAK,IAAII,GAAM5iB,GAAInG,GAAMg4B,EAAO,EAAG7xB,GAAInG,GAAMg4B,EAAO,CAAC,CAAC,EACxD1yB,GAAK,OAAS0yB,IACnBrP,GAAO,KAAK,IAAII,GAAM5iB,GAAInG,GAAMg4B,EAAO,EAAG7xB,GAAInG,GAAMxF,GAAW8K,GAAM+S,GAAO7e,EAAO,CAAC,CAAC,CAAC,CAC5F,CACKmvB,GAAO,QAAUA,GAAO,KAAK,IAAII,GAAMrxB,EAAOA,CAAK,CAAC,EACzD41B,GAAap1B,EAAK8wB,GAAmBtwB,EAAI+iC,EAAS,OAAO,MAAM,EAAGD,CAAQ,EAAE,OAAO7S,EAAM,EAAG6S,CAAQ,EACvF,CAAC,OAAQ,SAAU,OAAQ,EAAK,CAAC,EAC9C9iC,EAAG,eAAegC,EAAG,CACvB,KAAO,CACL,IAAIohC,GAAWP,EACX9jC,GAAQ4jC,GAAa3iC,EAAIgC,GAAKkgC,EAAS,IAAI,EAC3CtgB,GAASwhB,GAAS,OAAQtf,GAC1BpW,GAAI3O,GAAM,OAAQ6iB,EAAM,EAAI,GAC9BkC,GAAO/kB,GAAM,KACb6iB,GAAS7T,GAAOq1B,GAAS,KAAK,EAAGrkC,GAAM,MAAM,IAE7C+kB,GAAO/kB,GAAM,OACb6iB,GAAS9T,GAAOs1B,GAAS,GAAG,EAAGrkC,GAAM,IAAI,GAE3C,IAAIskC,GAAWN,EAAS,OAAO,MAAM,CAAC,EACtCM,GAASP,CAAQ,EAAIQ,GAAatjC,EAAI,IAAIqwB,GAAMpiB,GAAQzO,EAAKoiB,EAAM,EAAGkC,EAAI,CAAC,EAC3E8Q,GAAap1B,EAAK8wB,GAAmBtwB,EAAIqjC,GAAUP,CAAQ,EAAGlhC,EAAS,CACzE,CACF,CAEA,IAAI2hC,GAAa7zB,EAAQ,QAAQ,sBAAsB,EAKnD8zB,GAAU,EAEd,SAAS/O,GAAOr2B,GAAG,CACjB,IAAIqlC,GAAW,EAAED,GACb9+B,GAAM2d,GAAariB,EAAI5B,GAAG,GAAM8jC,EAAS,MAAQ,WAAW,EAChE,GAAKx9B,GACL,GAAIgJ,GAAIhJ,GAAKs+B,EAAO,GAAK,EAAG,CAC1BhjC,EAAG,MAAM,MAAQV,EAAUW,GAAKD,CAAE,CAAC,EACnCijC,GAASv+B,EAAG,EACZ,IAAIg/B,GAAUzc,GAAavX,EAASlQ,CAAG,GACnCkF,GAAI,MAAQg/B,GAAQ,IAAMh/B,GAAI,KAAOg/B,GAAQ,OAC7C,WAAWlX,GAAUxsB,EAAI,UAAY,CAAKwjC,IAAWC,IAAYhP,GAAOr2B,EAAC,CAAI,CAAC,EAAG,GAAG,CAC1F,KAAO,CACL,IAAI8hB,GAAU9hB,GAAE,QAAUmlC,GAAW,IAAM,IAAMnlC,GAAE,QAAUmlC,GAAW,OAAS,GAAK,EAClFrjB,IAAW,WAAWsM,GAAUxsB,EAAI,UAAY,CAC9CwjC,IAAWC,KACf/zB,EAAQ,SAAS,WAAawQ,GAC9BuU,GAAOr2B,EAAC,EACV,CAAC,EAAG,EAAE,CACR,CACF,CAEA,SAASg3B,GAAKh3B,GAAG,CACf4B,EAAG,MAAM,cAAgB,GACzBwjC,GAAU,IAINplC,KACFmK,GAAiBnK,EAAC,EAClBsR,EAAQ,MAAM,MAAM,GAEtB/H,GAAI+H,EAAQ,QAAQ,cAAe,YAAai0B,EAAI,EACpDh8B,GAAI+H,EAAQ,QAAQ,cAAe,UAAWqxB,EAAE,EAChDvhC,EAAI,QAAQ,cAAgB,IAC9B,CAEA,IAAImkC,GAAOnX,GAAUxsB,EAAI,SAAU5B,GAAG,CAChCA,GAAE,UAAY,GAAK,CAACuK,GAASvK,EAAC,EAAKg3B,GAAKh3B,EAAC,EACtCq2B,GAAOr2B,EAAC,CACjB,CAAC,EACG2iC,GAAKvU,GAAUxsB,EAAIo1B,EAAI,EAC3Bp1B,EAAG,MAAM,cAAgB+gC,GACzBv5B,EAAGkI,EAAQ,QAAQ,cAAe,YAAai0B,EAAI,EACnDn8B,EAAGkI,EAAQ,QAAQ,cAAe,UAAWqxB,EAAE,CACjD,CAIA,SAASuC,GAAatjC,EAAIjB,EAAO,CAC/B,IAAI6iB,EAAS7iB,EAAM,OACf+kB,EAAO/kB,EAAM,KACb6kC,EAAap3B,GAAQxM,EAAG,IAAK4hB,EAAO,IAAI,EAC5C,GAAIlU,GAAIkU,EAAQkC,CAAI,GAAK,GAAKlC,EAAO,QAAUkC,EAAK,OAAU,OAAO/kB,EACrE,IAAIqF,EAAQiD,GAASu8B,CAAU,EAC/B,GAAI,CAACx/B,EAAS,OAAOrF,EACrB,IAAI6I,EAAQpD,GAAcJ,EAAOwd,EAAO,GAAIA,EAAO,MAAM,EAAGtd,EAAOF,EAAMwD,CAAK,EAC9E,GAAItD,EAAK,MAAQsd,EAAO,IAAMtd,EAAK,IAAMsd,EAAO,GAAM,OAAO7iB,EAC7D,IAAI8kC,EAAWj8B,GAAUtD,EAAK,MAAQsd,EAAO,KAAQtd,EAAK,OAAS,GAAK,EAAI,GAC5E,GAAIu/B,GAAY,GAAKA,GAAYz/B,EAAM,OAAU,OAAOrF,EAIxD,IAAIwlB,EACJ,GAAIT,EAAK,MAAQlC,EAAO,KACtB2C,GAAYT,EAAK,KAAOlC,EAAO,OAAS5hB,EAAG,IAAI,WAAa,MAAQ,EAAI,IAAM,MACzE,CACL,IAAI8jC,GAAYt/B,GAAcJ,EAAO0f,EAAK,GAAIA,EAAK,MAAM,EACrDlgB,GAAMkgC,GAAYl8B,IAAUkc,EAAK,GAAKlC,EAAO,KAAOtd,EAAK,OAAS,EAAI,GAAK,GAC3Ew/B,IAAaD,EAAW,GAAKC,IAAaD,EAC1Ctf,EAAW3gB,GAAM,EAEjB2gB,EAAW3gB,GAAM,CACvB,CAEA,IAAImgC,GAAU3/B,EAAMy/B,GAAYtf,EAAW,GAAK,EAAE,EAC9CxgB,GAAOwgB,IAAawf,GAAQ,OAAS,GACrC3gC,GAAKW,GAAOggC,GAAQ,KAAOA,GAAQ,GAAIt/B,GAASV,GAAO,QAAU,SACrE,OAAO6d,EAAO,IAAMxe,IAAMwe,EAAO,QAAUnd,GAAS1F,EAAQ,IAAIsxB,GAAM,IAAI5iB,GAAImU,EAAO,KAAMxe,GAAIqB,EAAM,EAAGqf,CAAI,CAC9G,CAKA,SAASkgB,GAAYhkC,EAAI5B,EAAGyH,EAAMo+B,EAAS,CACzC,IAAIC,EAAIC,EACR,GAAI/lC,EAAE,QACJ8lC,EAAK9lC,EAAE,QAAQ,CAAC,EAAE,QAClB+lC,EAAK/lC,EAAE,QAAQ,CAAC,EAAE,YAElB,IAAI,CAAE8lC,EAAK9lC,EAAE,QAAS+lC,EAAK/lC,EAAE,OAAS,MAC3B,CAAE,MAAO,EAAM,CAE5B,GAAI8lC,GAAM,KAAK,MAAMlkC,EAAG,QAAQ,QAAQ,sBAAsB,EAAE,KAAK,EAAK,MAAO,GAC7EikC,GAAW17B,GAAiBnK,CAAC,EAEjC,IAAIsR,EAAU1P,EAAG,QACbokC,EAAU10B,EAAQ,QAAQ,sBAAsB,EAEpD,GAAIy0B,EAAKC,EAAQ,QAAU,CAACh8B,GAAWpI,EAAI6F,CAAI,EAAK,OAAOoC,GAAmB7J,CAAC,EAC/E+lC,GAAMC,EAAQ,IAAM10B,EAAQ,WAE5B,QAAS7Q,EAAI,EAAGA,EAAImB,EAAG,QAAQ,YAAY,OAAQ,EAAEnB,EAAG,CACtD,IAAIwlC,EAAI30B,EAAQ,QAAQ,WAAW7Q,CAAC,EACpC,GAAIwlC,GAAKA,EAAE,sBAAsB,EAAE,OAASH,EAAI,CAC9C,IAAI58B,GAAO6F,GAAanN,EAAG,IAAKmkC,CAAE,EAC9BG,GAAStkC,EAAG,QAAQ,YAAYnB,CAAC,EACrC,OAAAgJ,GAAO7H,EAAI6F,EAAM7F,EAAIsH,GAAMg9B,GAAO,UAAWlmC,CAAC,EACvC6J,GAAmB7J,CAAC,CAC7B,CACF,CACF,CAEA,SAASwjC,GAAc5hC,EAAI5B,EAAG,CAC5B,OAAO4lC,GAAYhkC,EAAI5B,EAAG,cAAe,EAAI,CAC/C,CAOA,SAASmmC,GAAcvkC,EAAI5B,EAAG,CACxBsd,GAAc1b,EAAG,QAAS5B,CAAC,GAAKomC,GAAoBxkC,EAAI5B,CAAC,GACzD2J,GAAe/H,EAAI5B,EAAG,aAAa,GAClCT,GAAqBqC,EAAG,QAAQ,MAAM,cAAc5B,CAAC,CAC5D,CAEA,SAASomC,GAAoBxkC,EAAI5B,EAAG,CAClC,OAAKgK,GAAWpI,EAAI,mBAAmB,EAChCgkC,GAAYhkC,EAAI5B,EAAG,oBAAqB,EAAK,EADD,EAErD,CAEA,SAASqmC,GAAazkC,EAAI,CACxBA,EAAG,QAAQ,QAAQ,UAAYA,EAAG,QAAQ,QAAQ,UAAU,QAAQ,eAAgB,EAAE,EACpFA,EAAG,QAAQ,MAAM,QAAQ,aAAc,QAAQ,EACjDue,GAAYve,CAAE,CAChB,CAEA,IAAI0kC,GAAO,CAAC,SAAU,UAAU,CAAC,MAAO,iBAAiB,CAAC,EAEtDC,GAAW,CAAC,EACZC,GAAiB,CAAC,EAEtB,SAASC,GAAcvJ,EAAY,CACjC,IAAIsJ,EAAiBtJ,EAAW,eAEhC,SAAS2G,EAAO33B,EAAMw6B,EAAO5M,EAAQ6M,EAAW,CAC9CzJ,EAAW,SAAShxB,CAAI,EAAIw6B,EACxB5M,IAAU0M,EAAet6B,CAAI,EAC/By6B,EAAY,SAAU/kC,EAAIwL,EAAKwG,EAAK,CAAKA,GAAO0yB,IAAQxM,EAAOl4B,EAAIwL,EAAKwG,CAAG,CAAI,EAAIkmB,EACvF,CAEAoD,EAAW,aAAe2G,EAG1B3G,EAAW,KAAOoJ,GAIlBzC,EAAO,QAAS,GAAI,SAAUjiC,EAAIwL,EAAK,CAAE,OAAOxL,EAAG,SAASwL,CAAG,CAAG,EAAG,EAAI,EACzEy2B,EAAO,OAAQ,KAAM,SAAUjiC,EAAIwL,EAAK,CACtCxL,EAAG,IAAI,WAAawL,EACpB4lB,GAASpxB,CAAE,CACb,EAAG,EAAI,EAEPiiC,EAAO,aAAc,EAAG7Q,GAAU,EAAI,EACtC6Q,EAAO,iBAAkB,EAAK,EAC9BA,EAAO,cAAe,EAAI,EAC1BA,EAAO,UAAW,EAAG,SAAUjiC,EAAI,CACjCqxB,GAAerxB,CAAE,EACjBue,GAAYve,CAAE,EACd0iB,GAAU1iB,CAAE,CACd,EAAG,EAAI,EAEPiiC,EAAO,gBAAiB,KAAM,SAAUjiC,EAAIwL,EAAK,CAE/C,GADAxL,EAAG,IAAI,QAAUwL,EACb,EAACA,EACL,KAAIw5B,EAAY,CAAC,EAAG/3B,EAASjN,EAAG,IAAI,MACpCA,EAAG,IAAI,KAAK,SAAUsH,EAAM,CAC1B,QAAStF,EAAM,IAAK,CAClB,IAAIqC,GAAQiD,EAAK,KAAK,QAAQkE,EAAKxJ,CAAG,EACtC,GAAIqC,IAAS,GAAM,MACnBrC,EAAMqC,GAAQmH,EAAI,OAClBw5B,EAAU,KAAKv3B,GAAIR,EAAQ5I,EAAK,CAAC,CACnC,CACA4I,GACF,CAAC,EACD,QAASpO,EAAImmC,EAAU,OAAS,EAAGnmC,GAAK,EAAGA,IACvC+4B,GAAa53B,EAAG,IAAKwL,EAAKw5B,EAAUnmC,CAAC,EAAG4O,GAAIu3B,EAAUnmC,CAAC,EAAE,KAAMmmC,EAAUnmC,CAAC,EAAE,GAAK2M,EAAI,MAAM,CAAC,EAClG,CAAC,EACDy2B,EAAO,eAAgB,2HAA4H,SAAUjiC,EAAIwL,EAAKwG,EAAK,CACzKhS,EAAG,MAAM,aAAe,IAAI,OAAOwL,EAAI,QAAUA,EAAI,KAAK,GAAI,EAAI,GAAK,MAAQ,GAAG,EAC9EwG,GAAO0yB,IAAQ1kC,EAAG,QAAQ,CAChC,CAAC,EACDiiC,EAAO,yBAA0BlrB,GAA+B,SAAU/W,EAAI,CAAE,OAAOA,EAAG,QAAQ,CAAG,EAAG,EAAI,EAC5GiiC,EAAO,gBAAiB,EAAI,EAC5BA,EAAO,aAAc5kC,EAAS,kBAAoB,WAAY,UAAY,CACxE,MAAM,IAAI,MAAM,yDAAyD,CAC3E,EAAG,EAAI,EACP4kC,EAAO,aAAc,GAAO,SAAUjiC,EAAIwL,EAAK,CAAE,OAAOxL,EAAG,cAAc,EAAE,WAAawL,CAAK,EAAG,EAAI,EACpGy2B,EAAO,cAAe,GAAO,SAAUjiC,EAAIwL,EAAK,CAAE,OAAOxL,EAAG,cAAc,EAAE,YAAcwL,CAAK,EAAG,EAAI,EACtGy2B,EAAO,iBAAkB,GAAO,SAAUjiC,EAAIwL,EAAK,CAAE,OAAOxL,EAAG,cAAc,EAAE,eAAiBwL,CAAK,EAAG,EAAI,EAC5Gy2B,EAAO,kBAAmB,CAACzkC,CAAO,EAClCykC,EAAO,wBAAyB,EAAI,EAEpCA,EAAO,QAAS,UAAW,SAAUjiC,EAAI,CACvCykC,GAAazkC,CAAE,EACf8uB,GAAc9uB,CAAE,CAClB,EAAG,EAAI,EACPiiC,EAAO,SAAU,UAAW,SAAUjiC,EAAIwL,EAAKwG,EAAK,CAClD,IAAIgJ,EAAO6iB,GAAUryB,CAAG,EACpB5F,EAAOoM,GAAO0yB,IAAQ7G,GAAU7rB,CAAG,EACnCpM,GAAQA,EAAK,QAAUA,EAAK,OAAO5F,EAAIgb,CAAI,EAC3CA,EAAK,QAAUA,EAAK,OAAOhb,EAAI4F,GAAQ,IAAI,CACjD,CAAC,EACDq8B,EAAO,YAAa,IAAI,EACxBA,EAAO,iBAAkB,IAAI,EAE7BA,EAAO,eAAgB,GAAOgD,GAAiB,EAAI,EACnDhD,EAAO,UAAW,CAAC,EAAG,SAAUjiC,EAAIwL,EAAK,CACvCxL,EAAG,QAAQ,YAAcwuB,GAAWhjB,EAAKxL,EAAG,QAAQ,WAAW,EAC/D8uB,GAAc9uB,CAAE,CAClB,EAAG,EAAI,EACPiiC,EAAO,cAAe,GAAM,SAAUjiC,EAAIwL,EAAK,CAC7CxL,EAAG,QAAQ,QAAQ,MAAM,KAAOwL,EAAMuW,GAAqB/hB,EAAG,OAAO,EAAI,KAAO,IAChFA,EAAG,QAAQ,CACb,EAAG,EAAI,EACPiiC,EAAO,6BAA8B,GAAO,SAAUjiC,EAAI,CAAE,OAAO4qB,GAAiB5qB,CAAE,CAAG,EAAG,EAAI,EAChGiiC,EAAO,iBAAkB,SAAU,SAAUjiC,EAAI,CAC/CmrB,GAAenrB,CAAE,EACjB4qB,GAAiB5qB,CAAE,EACnBA,EAAG,QAAQ,WAAW,aAAaA,EAAG,IAAI,SAAS,EACnDA,EAAG,QAAQ,WAAW,cAAcA,EAAG,IAAI,UAAU,CACvD,EAAG,EAAI,EACPiiC,EAAO,cAAe,GAAO,SAAUjiC,EAAIwL,EAAK,CAC9CxL,EAAG,QAAQ,YAAcwuB,GAAWxuB,EAAG,QAAQ,QAASwL,CAAG,EAC3DsjB,GAAc9uB,CAAE,CAClB,EAAG,EAAI,EACPiiC,EAAO,kBAAmB,EAAGnT,GAAe,EAAI,EAChDmT,EAAO,sBAAuB,SAAUiD,EAAS,CAAE,OAAOA,CAAS,EAAGpW,GAAe,EAAI,EACzFmT,EAAO,0BAA2B,GAAOze,GAAiB,EAAI,EAE9Dye,EAAO,8BAA+B,EAAI,EAC1CA,EAAO,kBAAmB,EAAI,EAC9BA,EAAO,yBAA0B,EAAI,EACrCA,EAAO,qBAAsB,EAAK,EAElCA,EAAO,WAAY,GAAO,SAAUjiC,EAAIwL,EAAK,CACvCA,GAAO,aACT6a,GAAOrmB,CAAE,EACTA,EAAG,QAAQ,MAAM,KAAK,GAExBA,EAAG,QAAQ,MAAM,gBAAgBwL,CAAG,CACtC,CAAC,EAEDy2B,EAAO,oBAAqB,KAAM,SAAUjiC,EAAIwL,EAAK,CACnDA,EAAOA,IAAQ,GAAM,KAAOA,EAC5BxL,EAAG,QAAQ,MAAM,yBAAyBwL,CAAG,CAC/C,CAAC,EAEDy2B,EAAO,eAAgB,GAAO,SAAUjiC,EAAIwL,EAAK,CAAMA,GAAOxL,EAAG,QAAQ,MAAM,MAAM,CAAI,EAAG,EAAI,EAChGiiC,EAAO,WAAY,GAAMkD,EAAe,EACxClD,EAAO,qBAAsB,IAAI,EAEjCA,EAAO,kBAAmB,GAAG,EAC7BA,EAAO,qBAAsB,CAAC,EAC9BA,EAAO,eAAgB,EAAGze,GAAiB,EAAI,EAC/Cye,EAAO,4BAA6B,GAAMze,GAAiB,EAAI,EAC/Dye,EAAO,WAAY,GAAG,EACtBA,EAAO,YAAa,GAAG,EACvBA,EAAO,eAAgB,GAAM5Q,GAAgB,EAAI,EACjD4Q,EAAO,eAAgB,GAAO5Q,GAAgB,EAAI,EAClD4Q,EAAO,eAAgB,GAAG,EAC1BA,EAAO,YAAa,IAAK,SAAUjiC,EAAIwL,EAAK,CAAE,OAAOxL,EAAG,IAAI,QAAQ,UAAYwL,CAAK,CAAC,EACtFy2B,EAAO,oBAAqB,IAAI,EAChCA,EAAO,iBAAkB,GAAI,SAAUjiC,EAAI,CAAE,OAAOA,EAAG,QAAQ,CAAG,EAAG,EAAI,EACzEiiC,EAAO,qBAAsB,IAAO5Q,GAAgB,EAAI,EACxD4Q,EAAO,sBAAuB,GAAM,SAAUjiC,EAAIwL,EAAK,CAChDA,GAAOxL,EAAG,QAAQ,MAAM,cAAc,CAC7C,CAAC,EAEDiiC,EAAO,WAAY,KAAM,SAAUjiC,EAAIwL,EAAK,CAAE,OAAOxL,EAAG,QAAQ,MAAM,SAAS,EAAE,SAAWwL,GAAO,EAAI,CAAC,EACxGy2B,EAAO,YAAa,IAAI,EACxBA,EAAO,YAAa,MAAO,SAAUjiC,EAAIwL,EAAK,CAAE,OAAOxL,EAAG,IAAI,aAAawL,CAAG,CAAG,EAAG,EAAI,EACxFy2B,EAAO,UAAW,IAAI,CACxB,CAEA,SAASkD,GAAgBnlC,EAAI0C,EAAOsP,EAAK,CACvC,IAAIozB,EAAQpzB,GAAOA,GAAO0yB,GAC1B,GAAI,CAAChiC,GAAS,CAAC0iC,EAAO,CACpB,IAAIC,EAAQrlC,EAAG,QAAQ,cACnBslC,EAAS5iC,EAAQ8E,EAAKG,GAC1B29B,EAAOtlC,EAAG,QAAQ,SAAU,YAAaqlC,EAAM,KAAK,EACpDC,EAAOtlC,EAAG,QAAQ,SAAU,YAAaqlC,EAAM,KAAK,EACpDC,EAAOtlC,EAAG,QAAQ,SAAU,WAAYqlC,EAAM,IAAI,EAClDC,EAAOtlC,EAAG,QAAQ,SAAU,YAAaqlC,EAAM,KAAK,EACpDC,EAAOtlC,EAAG,QAAQ,SAAU,OAAQqlC,EAAM,IAAI,CAChD,CACF,CAEA,SAASJ,GAAgBjlC,EAAI,CACvBA,EAAG,QAAQ,cACbN,GAASM,EAAG,QAAQ,QAAS,iBAAiB,EAC9CA,EAAG,QAAQ,MAAM,MAAM,SAAW,GAClCA,EAAG,QAAQ,WAAa,OAExBlC,EAAQkC,EAAG,QAAQ,QAAS,iBAAiB,EAC7C6V,GAAY7V,CAAE,GAEhBmiB,GAAoBniB,CAAE,EACtB0iB,GAAU1iB,CAAE,EACZue,GAAYve,CAAE,EACd,WAAW,UAAY,CAAE,OAAO4qB,GAAiB5qB,CAAE,CAAG,EAAG,GAAG,CAC9D,CAKA,SAASs7B,GAAW3d,EAAO9S,EAAS,CAClC,IAAIouB,EAAS,KAEb,GAAI,EAAE,gBAAgBqC,IAAe,OAAO,IAAIA,GAAW3d,EAAO9S,CAAO,EAEzE,KAAK,QAAUA,EAAUA,EAAUtK,GAAQsK,CAAO,EAAI,CAAC,EAEvDtK,GAAQokC,GAAU95B,EAAS,EAAK,EAEhC,IAAIrL,EAAMqL,EAAQ,MACd,OAAOrL,GAAO,SAAYA,EAAM,IAAIk7B,GAAIl7B,EAAKqL,EAAQ,KAAM,KAAMA,EAAQ,cAAeA,EAAQ,SAAS,EACpGA,EAAQ,OAAQrL,EAAI,WAAaqL,EAAQ,MAClD,KAAK,IAAMrL,EAEX,IAAIwvB,EAAQ,IAAIsM,GAAW,YAAYzwB,EAAQ,UAAU,EAAE,IAAI,EAC3D6E,EAAU,KAAK,QAAU,IAAIqf,GAAQpR,EAAOne,EAAKwvB,EAAOnkB,CAAO,EACnE6E,EAAQ,QAAQ,WAAa,KAC7B+0B,GAAa,IAAI,EACb55B,EAAQ,eACR,KAAK,QAAQ,QAAQ,WAAa,oBACtCsgB,GAAe,IAAI,EAEnB,KAAK,MAAQ,CACX,QAAS,CAAC,EACV,SAAU,CAAC,EACX,QAAS,EACT,UAAW,GACX,kBAAmB,GACnB,QAAS,GACT,cAAe,GACf,cAAe,GAAI,YAAa,GAChC,cAAe,GACf,aAAc,GACd,UAAW,IAAIhqB,GACf,OAAQ,KACR,aAAc,IAChB,EAEI0J,EAAQ,WAAa,CAACxN,GAAUqS,EAAQ,MAAM,MAAM,EAIpDjT,GAAMC,EAAa,IAAM,WAAW,UAAY,CAAE,OAAOu8B,EAAO,QAAQ,MAAM,MAAM,EAAI,CAAG,EAAG,EAAE,EAEpGsM,GAAsB,IAAI,EAC1B1I,GAAqB,EAErBvR,GAAe,IAAI,EACnB,KAAK,MAAM,YAAc,GACzBmH,GAAU,KAAMjzB,CAAG,EAEdqL,EAAQ,WAAa,CAACxN,GAAW,KAAK,SAAS,EAChD,WAAW,UAAY,CACnB47B,EAAO,SAAS,GAAK,CAACA,EAAO,MAAM,SAAW1S,GAAQ0S,CAAM,CAClE,EAAG,EAAE,EAEH5S,GAAO,IAAI,EAEf,QAAS0S,KAAO6L,GAAsBA,GAAe,eAAe7L,CAAG,GACnE6L,GAAe7L,CAAG,EAAE,KAAMluB,EAAQkuB,CAAG,EAAG2L,EAAI,EAChDjX,GAA2B,IAAI,EAC3B5iB,EAAQ,YAAcA,EAAQ,WAAW,IAAI,EACjD,QAAShM,EAAI,EAAGA,EAAI2mC,GAAU,OAAQ,EAAE3mC,EAAK2mC,GAAU3mC,CAAC,EAAE,IAAI,EAC9D0sB,GAAa,IAAI,EAGb5uB,GAAUkO,EAAQ,cAClB,iBAAiB6E,EAAQ,OAAO,EAAE,eAAiB,uBACnDA,EAAQ,QAAQ,MAAM,cAAgB,OAC5C,CAGA4rB,GAAW,SAAWqJ,GAEtBrJ,GAAW,eAAiBsJ,GAG5B,SAASW,GAAsBvlC,EAAI,CACjC,IAAI,EAAIA,EAAG,QACXwH,EAAG,EAAE,SAAU,YAAaglB,GAAUxsB,EAAI2hC,EAAW,CAAC,EAElDllC,GAAMC,EAAa,GACnB8K,EAAG,EAAE,SAAU,WAAYglB,GAAUxsB,EAAI,SAAU5B,EAAG,CACtD,GAAI,CAAA2J,GAAe/H,EAAI5B,CAAC,EACxB,KAAI4D,EAAMqgB,GAAariB,EAAI5B,CAAC,EAC5B,GAAI,GAAC4D,GAAO4/B,GAAc5hC,EAAI5B,CAAC,GAAKsd,GAAc1b,EAAG,QAAS5B,CAAC,GAC/D,CAAAmK,GAAiBnK,CAAC,EAClB,IAAIqnC,GAAOzlC,EAAG,WAAWgC,CAAG,EAC5B2yB,GAAgB30B,EAAG,IAAKylC,GAAK,OAAQA,GAAK,IAAI,GAChD,CAAC,CAAC,EAEAj+B,EAAG,EAAE,SAAU,WAAY,SAAUpJ,EAAG,CAAE,OAAO2J,GAAe/H,EAAI5B,CAAC,GAAKmK,GAAiBnK,CAAC,CAAG,CAAC,EAIpGoJ,EAAG,EAAE,SAAU,cAAe,SAAUpJ,EAAG,CAAE,OAAOmmC,GAAcvkC,EAAI5B,CAAC,CAAG,CAAC,EAC3EoJ,EAAG,EAAE,MAAM,SAAS,EAAG,cAAe,SAAUpJ,EAAG,CAC5C,EAAE,SAAS,SAASA,EAAE,MAAM,GAAKmmC,GAAcvkC,EAAI5B,CAAC,CAC3D,CAAC,EAGD,IAAIsnC,EAAeC,EAAY,CAAC,IAAK,CAAC,EACtC,SAASC,GAAc,CACjB,EAAE,cACJF,EAAgB,WAAW,UAAY,CAAE,OAAO,EAAE,YAAc,IAAM,EAAG,GAAI,EAC7EC,EAAY,EAAE,YACdA,EAAU,IAAM,CAAC,IAAI,KAEzB,CACA,SAASE,EAAsBznC,EAAG,CAChC,GAAIA,EAAE,QAAQ,QAAU,EAAK,MAAO,GACpC,IAAI0nC,EAAQ1nC,EAAE,QAAQ,CAAC,EACvB,OAAO0nC,EAAM,SAAW,GAAKA,EAAM,SAAW,CAChD,CACA,SAASC,EAAQD,EAAO/lB,EAAO,CAC7B,GAAIA,EAAM,MAAQ,KAAQ,MAAO,GACjC,IAAIqP,GAAKrP,EAAM,KAAO+lB,EAAM,KAAMzW,GAAKtP,EAAM,IAAM+lB,EAAM,IACzD,OAAO1W,GAAKA,GAAKC,GAAKA,GAAK,GAAK,EAClC,CACA7nB,EAAG,EAAE,SAAU,aAAc,SAAUpJ,EAAG,CACxC,GAAI,CAAC2J,GAAe/H,EAAI5B,CAAC,GAAK,CAACynC,EAAsBznC,CAAC,GAAK,CAACwjC,GAAc5hC,EAAI5B,CAAC,EAAG,CAChF,EAAE,MAAM,aAAa,EACrB,aAAasnC,CAAa,EAC1B,IAAIhE,EAAM,CAAC,IAAI,KACf,EAAE,YAAc,CAAC,MAAOA,EAAK,MAAO,GACnB,KAAMA,EAAMiE,EAAU,KAAO,IAAMA,EAAY,IAAI,EAChEvnC,EAAE,QAAQ,QAAU,IACtB,EAAE,YAAY,KAAOA,EAAE,QAAQ,CAAC,EAAE,MAClC,EAAE,YAAY,IAAMA,EAAE,QAAQ,CAAC,EAAE,MAErC,CACF,CAAC,EACDoJ,EAAG,EAAE,SAAU,YAAa,UAAY,CAClC,EAAE,cAAe,EAAE,YAAY,MAAQ,GAC7C,CAAC,EACDA,EAAG,EAAE,SAAU,WAAY,SAAUpJ,EAAG,CACtC,IAAI0nC,EAAQ,EAAE,YACd,GAAIA,GAAS,CAACpqB,GAAc,EAAGtd,CAAC,GAAK0nC,EAAM,MAAQ,MAC/C,CAACA,EAAM,OAAS,IAAI,KAAOA,EAAM,MAAQ,IAAK,CAChD,IAAI9jC,GAAMhC,EAAG,WAAW,EAAE,YAAa,MAAM,EAAGjB,GAC5C,CAAC+mC,EAAM,MAAQC,EAAQD,EAAOA,EAAM,IAAI,EACxC/mC,GAAQ,IAAIsxB,GAAMruB,GAAKA,EAAG,EACrB,CAAC8jC,EAAM,KAAK,MAAQC,EAAQD,EAAOA,EAAM,KAAK,IAAI,EACvD/mC,GAAQiB,EAAG,WAAWgC,EAAG,EAEzBjD,GAAQ,IAAIsxB,GAAM5iB,GAAIzL,GAAI,KAAM,CAAC,EAAGiM,GAAQjO,EAAG,IAAKyN,GAAIzL,GAAI,KAAO,EAAG,CAAC,CAAC,CAAC,EAC7EhC,EAAG,aAAajB,GAAM,OAAQA,GAAM,IAAI,EACxCiB,EAAG,MAAM,EACTuI,GAAiBnK,CAAC,CACpB,CACAwnC,EAAY,CACd,CAAC,EACDp+B,EAAG,EAAE,SAAU,cAAeo+B,CAAW,EAIzCp+B,EAAG,EAAE,SAAU,SAAU,UAAY,CAC/B,EAAE,SAAS,eACbygB,GAAgBjoB,EAAI,EAAE,SAAS,SAAS,EACxCkoB,GAAcloB,EAAI,EAAE,SAAS,WAAY,EAAI,EAC7C6H,GAAO7H,EAAI,SAAUA,CAAE,EAE3B,CAAC,EAGDwH,EAAG,EAAE,SAAU,aAAc,SAAUpJ,EAAG,CAAE,OAAOoxB,GAAcxvB,EAAI5B,CAAC,CAAG,CAAC,EAC1EoJ,EAAG,EAAE,SAAU,iBAAkB,SAAUpJ,EAAG,CAAE,OAAOoxB,GAAcxvB,EAAI5B,CAAC,CAAG,CAAC,EAG9EoJ,EAAG,EAAE,QAAS,SAAU,UAAY,CAAE,OAAO,EAAE,QAAQ,UAAY,EAAE,QAAQ,WAAa,CAAG,CAAC,EAE9F,EAAE,cAAgB,CAChB,MAAO,SAAUpJ,EAAG,CAAM2J,GAAe/H,EAAI5B,CAAC,GAAKqK,GAAOrK,CAAC,CAAI,EAC/D,KAAM,SAAUA,EAAG,CAAM2J,GAAe/H,EAAI5B,CAAC,IAAKm+B,GAAWv8B,EAAI5B,CAAC,EAAGqK,GAAOrK,CAAC,EAAI,EACjF,MAAO,SAAUA,EAAG,CAAE,OAAOi+B,GAAYr8B,EAAI5B,CAAC,CAAG,EACjD,KAAMouB,GAAUxsB,EAAI07B,EAAM,EAC1B,MAAO,SAAUt9B,EAAG,CAAM2J,GAAe/H,EAAI5B,CAAC,GAAKu9B,GAAgB37B,CAAE,CAAI,CAC3E,EAEA,IAAIgmC,EAAM,EAAE,MAAM,SAAS,EAC3Bx+B,EAAGw+B,EAAK,QAAS,SAAU5nC,EAAG,CAAE,OAAO4iC,GAAQ,KAAKhhC,EAAI5B,CAAC,CAAG,CAAC,EAC7DoJ,EAAGw+B,EAAK,UAAWxZ,GAAUxsB,EAAI2gC,EAAS,CAAC,EAC3Cn5B,EAAGw+B,EAAK,WAAYxZ,GAAUxsB,EAAIihC,EAAU,CAAC,EAC7Cz5B,EAAGw+B,EAAK,QAAS,SAAU5nC,EAAG,CAAE,OAAOmoB,GAAQvmB,EAAI5B,CAAC,CAAG,CAAC,EACxDoJ,EAAGw+B,EAAK,OAAQ,SAAU5nC,EAAG,CAAE,OAAOioB,GAAOrmB,EAAI5B,CAAC,CAAG,CAAC,CACxD,CAEA,IAAIonC,GAAY,CAAC,EACjBlK,GAAW,eAAiB,SAAUj7B,EAAG,CAAE,OAAOmlC,GAAU,KAAKnlC,CAAC,CAAG,EAOrE,SAAS4lC,GAAWjmC,EAAIiB,EAAGilC,EAAKC,EAAY,CAC1C,IAAI3mC,EAAMQ,EAAG,IAAKsL,EACd46B,GAAO,OAAQA,EAAM,OACrBA,GAAO,UAGJ1mC,EAAI,KAAK,OACP8L,EAAQiE,GAAiBvP,EAAIiB,CAAC,EAAE,MADfilC,EAAM,QAIhC,IAAIplC,EAAUd,EAAG,QAAQ,QACrBsH,EAAOkF,GAAQhN,EAAKyB,CAAC,EAAGmlC,EAAWxlC,GAAY0G,EAAK,KAAM,KAAMxG,CAAO,EACvEwG,EAAK,aAAcA,EAAK,WAAa,MACzC,IAAI++B,EAAiB/+B,EAAK,KAAK,MAAM,MAAM,EAAE,CAAC,EAAGg/B,GACjD,GAAI,CAACH,GAAc,CAAC,KAAK,KAAK7+B,EAAK,IAAI,EACrCg/B,GAAc,EACdJ,EAAM,cACGA,GAAO,UAChBI,GAAc9mC,EAAI,KAAK,OAAO8L,EAAOhE,EAAK,KAAK,MAAM++B,EAAe,MAAM,EAAG/+B,EAAK,IAAI,EAClFg/B,IAAe5kC,IAAQ4kC,GAAc,KAAK,CAC5C,GAAI,CAACH,EAAc,OACnBD,EAAM,MACR,CAEEA,GAAO,OACLjlC,EAAIzB,EAAI,MAAS8mC,GAAc1lC,GAAY4L,GAAQhN,EAAKyB,EAAE,CAAC,EAAE,KAAM,KAAMH,CAAO,EAC7EwlC,GAAc,EACZJ,GAAO,MAChBI,GAAcF,EAAWpmC,EAAG,QAAQ,WAC3BkmC,GAAO,WAChBI,GAAcF,EAAWpmC,EAAG,QAAQ,WAC3B,OAAOkmC,GAAO,WACvBI,GAAcF,EAAWF,GAE3BI,GAAc,KAAK,IAAI,EAAGA,EAAW,EAErC,IAAIC,GAAe,GAAIvkC,GAAM,EAC7B,GAAIhC,EAAG,QAAQ,eACX,QAASnB,GAAI,KAAK,MAAMynC,GAAcxlC,CAAO,EAAGjC,GAAG,EAAEA,GAAImD,IAAOlB,EAASylC,IAAgB,IAG7F,GAFIvkC,GAAMskC,KAAeC,IAAgBnkC,GAASkkC,GAActkC,EAAG,GAE/DukC,IAAgBF,EAClB,OAAAzO,GAAap4B,EAAK+mC,GAAc94B,GAAIxM,EAAG,CAAC,EAAGwM,GAAIxM,EAAGolC,EAAe,MAAM,EAAG,QAAQ,EAClF/+B,EAAK,WAAa,KACX,GAIP,QAAS3B,GAAM,EAAGA,GAAMnG,EAAI,IAAI,OAAO,OAAQmG,KAAO,CACpD,IAAI5G,GAAQS,EAAI,IAAI,OAAOmG,EAAG,EAC9B,GAAI5G,GAAM,KAAK,MAAQkC,GAAKlC,GAAM,KAAK,GAAKsnC,EAAe,OAAQ,CACjE,IAAIG,GAAQ/4B,GAAIxM,EAAGolC,EAAe,MAAM,EACxCrR,GAAoBx1B,EAAKmG,GAAK,IAAI0qB,GAAMmW,GAAOA,EAAK,CAAC,EACrD,KACF,CACF,CAEJ,CAKA,IAAIC,GAAa,KAEjB,SAASC,GAAcC,EAAe,CACpCF,GAAaE,CACf,CAEA,SAASC,GAAe5mC,EAAI6mC,EAAUC,EAASzZ,EAAKmG,EAAQ,CAC1D,IAAIh0B,EAAMQ,EAAG,IACbA,EAAG,QAAQ,MAAQ,GACdqtB,IAAOA,EAAM7tB,EAAI,KAEtB,IAAIunC,EAAS,CAAC,IAAI,KAAO,IACrBC,EAAQxT,GAAU,SAAWxzB,EAAG,MAAM,cAAgB+mC,EACtDE,EAAY19B,GAAes9B,CAAQ,EAAGK,EAAa,KAEvD,GAAIF,GAAS3Z,EAAI,OAAO,OAAS,EAC/B,GAAIoZ,IAAcA,GAAW,KAAK,KAAK;AAAA,CAAI,GAAKI,GAC9C,GAAIxZ,EAAI,OAAO,OAASoZ,GAAW,KAAK,QAAU,EAAG,CACnDS,EAAa,CAAC,EACd,QAASroC,GAAI,EAAGA,GAAI4nC,GAAW,KAAK,OAAQ5nC,KACxCqoC,EAAW,KAAK1nC,EAAI,WAAWinC,GAAW,KAAK5nC,EAAC,CAAC,CAAC,CACxD,OACSooC,EAAU,QAAU5Z,EAAI,OAAO,QAAUrtB,EAAG,QAAQ,yBAC7DknC,EAAa3kC,GAAI0kC,EAAW,SAAUx9B,GAAG,CAAE,MAAO,CAACA,EAAC,CAAG,CAAC,GAM5D,QAFI09B,GAAcnnC,EAAG,MAAM,YAElB2F,GAAM0nB,EAAI,OAAO,OAAS,EAAG1nB,IAAO,EAAGA,KAAO,CACrD,IAAI5G,GAAQsuB,EAAI,OAAO1nB,EAAG,EACtB5B,GAAOhF,GAAM,KAAK,EAAGiF,GAAKjF,GAAM,GAAG,EACnCA,GAAM,MAAM,IACV+nC,GAAWA,EAAU,EACrB/iC,GAAO0J,GAAI1J,GAAK,KAAMA,GAAK,GAAK+iC,CAAO,EAClC9mC,EAAG,MAAM,WAAa,CAACgnC,EAC5BhjC,GAAKyJ,GAAIzJ,GAAG,KAAM,KAAK,IAAIwI,GAAQhN,EAAKwE,GAAG,IAAI,EAAE,KAAK,OAAQA,GAAG,GAAK3B,GAAI4kC,CAAS,EAAE,MAAM,CAAC,EACvFD,GAASP,IAAcA,GAAW,UAAYA,GAAW,KAAK,KAAK;AAAA,CAAI,GAAKQ,EAAU,KAAK;AAAA,CAAI,IACpGljC,GAAOC,GAAKyJ,GAAI1J,GAAK,KAAM,CAAC,IAElC,IAAIqjC,GAAc,CAAC,KAAMrjC,GAAM,GAAIC,GAAI,KAAMkjC,EAAaA,EAAWvhC,GAAMuhC,EAAW,MAAM,EAAID,EAC7E,OAAQzT,IAAWwT,EAAQ,QAAUhnC,EAAG,MAAM,YAAc+mC,EAAS,MAAQ,SAAS,EACzGzQ,GAAWt2B,EAAG,IAAKonC,EAAW,EAC9B1tB,GAAY1Z,EAAI,YAAaA,EAAIonC,EAAW,CAC9C,CACIP,GAAY,CAACG,GACbK,GAAgBrnC,EAAI6mC,CAAQ,EAEhC5d,GAAoBjpB,CAAE,EAClBA,EAAG,MAAM,YAAc,IAAKA,EAAG,MAAM,YAAcmnC,IACvDnnC,EAAG,MAAM,OAAS,GAClBA,EAAG,MAAM,cAAgBA,EAAG,MAAM,YAAc,EAClD,CAEA,SAASsnC,GAAYlpC,EAAG4B,EAAI,CAC1B,IAAIunC,EAASnpC,EAAE,eAAiBA,EAAE,cAAc,QAAQ,MAAM,EAC9D,GAAImpC,EACF,OAAAnpC,EAAE,eAAe,EACb,CAAC4B,EAAG,WAAW,GAAK,CAACA,EAAG,QAAQ,cAAgBA,EAAG,SAAS,GAC5DusB,GAAQvsB,EAAI,UAAY,CAAE,OAAO4mC,GAAe5mC,EAAIunC,EAAQ,EAAG,KAAM,OAAO,CAAG,CAAC,EAC7E,EAEX,CAEA,SAASF,GAAgBrnC,EAAI6mC,EAAU,CAErC,GAAI,GAAC7mC,EAAG,QAAQ,eAAiB,CAACA,EAAG,QAAQ,aAG7C,QAFIqtB,EAAMrtB,EAAG,IAAI,IAERnB,EAAIwuB,EAAI,OAAO,OAAS,EAAGxuB,GAAK,EAAGA,IAAK,CAC/C,IAAIE,EAAQsuB,EAAI,OAAOxuB,CAAC,EACxB,GAAI,EAAAE,EAAM,KAAK,GAAK,KAAQF,GAAKwuB,EAAI,OAAOxuB,EAAI,CAAC,EAAE,KAAK,MAAQE,EAAM,KAAK,MAC3E,KAAIwL,EAAOvK,EAAG,UAAUjB,EAAM,IAAI,EAC9BiS,EAAW,GACf,GAAIzG,EAAK,eACP,QAASjE,EAAI,EAAGA,EAAIiE,EAAK,cAAc,OAAQjE,IAC3C,GAAIugC,EAAS,QAAQt8B,EAAK,cAAc,OAAOjE,CAAC,CAAC,EAAI,GAAI,CACzD0K,EAAWi1B,GAAWjmC,EAAIjB,EAAM,KAAK,KAAM,OAAO,EAClD,KACF,OACOwL,EAAK,eACVA,EAAK,cAAc,KAAKiC,GAAQxM,EAAG,IAAKjB,EAAM,KAAK,IAAI,EAAE,KAAK,MAAM,EAAGA,EAAM,KAAK,EAAE,CAAC,IACrFiS,EAAWi1B,GAAWjmC,EAAIjB,EAAM,KAAK,KAAM,OAAO,GAEpDiS,GAAY0I,GAAY1Z,EAAI,gBAAiBA,EAAIjB,EAAM,KAAK,IAAI,EACtE,CACF,CAEA,SAASyoC,GAAexnC,EAAI,CAE1B,QADI4M,EAAO,CAAC,EAAGqjB,EAAS,CAAC,EAChBpxB,EAAI,EAAGA,EAAImB,EAAG,IAAI,IAAI,OAAO,OAAQnB,IAAK,CACjD,IAAIyI,EAAOtH,EAAG,IAAI,IAAI,OAAOnB,CAAC,EAAE,KAAK,KACjC4oC,EAAY,CAAC,OAAQh6B,GAAInG,EAAM,CAAC,EAAG,KAAMmG,GAAInG,EAAO,EAAG,CAAC,CAAC,EAC7D2oB,EAAO,KAAKwX,CAAS,EACrB76B,EAAK,KAAK5M,EAAG,SAASynC,EAAU,OAAQA,EAAU,IAAI,CAAC,CACzD,CACA,MAAO,CAAC,KAAM76B,EAAM,OAAQqjB,CAAM,CACpC,CAEA,SAASyX,GAAoBC,EAAOC,EAAYC,EAAaC,EAAgB,CAC3EH,EAAM,aAAa,cAAeE,EAAc,KAAO,KAAK,EAC5DF,EAAM,aAAa,iBAAkBG,EAAiB,KAAO,KAAK,EAClEH,EAAM,aAAa,aAAc,CAAC,CAACC,CAAU,CAC/C,CAEA,SAASG,IAAiB,CACxB,IAAIl+B,EAAKrL,EAAI,WAAY,KAAM,KAAM,uGAAuG,EACxIqK,EAAMrK,EAAI,MAAO,CAACqL,CAAE,EAAG,KAAM,gEAAgE,EAKjG,OAAIlN,EAAUkN,EAAG,MAAM,MAAQ,SACxBA,EAAG,aAAa,OAAQ,KAAK,EAEhC1M,IAAO0M,EAAG,MAAM,OAAS,mBACtBhB,CACT,CAUA,SAASm/B,GAAiB1M,EAAY,CACpC,IAAIsJ,EAAiBtJ,EAAW,eAE5B2M,EAAU3M,EAAW,QAAU,CAAC,EAEpCA,EAAW,UAAY,CACrB,YAAaA,EACb,MAAO,UAAU,CAACn7B,GAAI,IAAI,EAAE,MAAM,EAAG,KAAK,QAAQ,MAAM,MAAM,CAAE,EAEhE,UAAW,SAAS8hC,EAAQv/B,EAAO,CACjC,IAAImI,EAAU,KAAK,QAASmH,EAAMnH,EAAQo3B,CAAM,EAC5Cp3B,EAAQo3B,CAAM,GAAKv/B,GAASu/B,GAAU,SAC1Cp3B,EAAQo3B,CAAM,EAAIv/B,EACdkiC,EAAe,eAAe3C,CAAM,GACpCzV,GAAU,KAAMoY,EAAe3C,CAAM,CAAC,EAAE,KAAMv/B,EAAOsP,CAAG,EAC5DnK,GAAO,KAAM,eAAgB,KAAMo6B,CAAM,EAC3C,EAEA,UAAW,SAASA,EAAQ,CAAC,OAAO,KAAK,QAAQA,CAAM,CAAC,EACxD,OAAQ,UAAW,CAAC,OAAO,KAAK,GAAG,EAEnC,UAAW,SAAS1/B,EAAKoiB,EAAQ,CAC/B,KAAK,MAAM,QAAQA,EAAS,OAAS,SAAS,EAAEkZ,GAAUt7B,CAAG,CAAC,CAChE,EACA,aAAc,SAASA,EAAK,CAE1B,QADI2lC,EAAO,KAAK,MAAM,QACbrpC,EAAI,EAAGA,EAAIqpC,EAAK,OAAQ,EAAErpC,EAC/B,GAAIqpC,EAAKrpC,CAAC,GAAK0D,GAAO2lC,EAAKrpC,CAAC,EAAE,MAAQ0D,EACtC,OAAA2lC,EAAK,OAAOrpC,EAAG,CAAC,EACT,EAEb,EAEA,WAAY4tB,GAAS,SAAS/hB,EAAMG,EAAS,CAC3C,IAAIN,EAAOG,EAAK,MAAQA,EAAO4wB,EAAW,QAAQ,KAAK,QAAS5wB,CAAI,EACpE,GAAIH,EAAK,WAAc,MAAM,IAAI,MAAM,+BAA+B,EACtE9H,GAAa,KAAK,MAAM,SACX,CAAC,KAAM8H,EAAM,SAAUG,EAAM,OAAQG,GAAWA,EAAQ,OACvD,SAAWA,GAAWA,EAAQ,UAAa,CAAC,EAC7C,SAAUsE,EAAS,CAAE,OAAOA,EAAQ,QAAU,CAAC,EAC5D,KAAK,MAAM,UACXuT,GAAU,IAAI,CAChB,CAAC,EACD,cAAe+J,GAAS,SAAS/hB,EAAM,CAErC,QADIy9B,EAAW,KAAK,MAAM,SACjBtpC,EAAI,EAAGA,EAAIspC,EAAS,OAAQ,EAAEtpC,EAAG,CACxC,IAAI6F,EAAMyjC,EAAStpC,CAAC,EAAE,SACtB,GAAI6F,GAAOgG,GAAQ,OAAOA,GAAQ,UAAYhG,EAAI,MAAQgG,EAAM,CAC9Dy9B,EAAS,OAAOtpC,EAAG,CAAC,EACpB,KAAK,MAAM,UACX6jB,GAAU,IAAI,EACd,MACF,CACF,CACF,CAAC,EAED,WAAY+J,GAAS,SAASxrB,EAAG2C,EAAKuiC,EAAY,CAC5C,OAAOviC,GAAO,UAAY,OAAOA,GAAO,WACtCA,GAAO,KAAQA,EAAM,KAAK,QAAQ,YAAc,QAAU,OACvDA,EAAMA,EAAM,MAAQ,YAEzB2J,GAAO,KAAK,IAAKtM,CAAC,GAAKglC,GAAW,KAAMhlC,EAAG2C,EAAKuiC,CAAU,CAChE,CAAC,EACD,gBAAiB1Z,GAAS,SAASyZ,EAAK,CAEtC,QADIjW,EAAS,KAAK,IAAI,IAAI,OAAQhxB,EAAM,GAC/BJ,EAAI,EAAGA,EAAIoxB,EAAO,OAAQpxB,IAAK,CACtC,IAAIE,EAAQkxB,EAAOpxB,CAAC,EACpB,GAAKE,EAAM,MAAM,EASNA,EAAM,KAAK,KAAOE,IAC3BgnC,GAAW,KAAMlnC,EAAM,KAAK,KAAMmnC,EAAK,EAAI,EAC3CjnC,EAAMF,EAAM,KAAK,KACbF,GAAK,KAAK,IAAI,IAAI,WAAaoqB,GAAoB,IAAI,OAZzC,CAClB,IAAIllB,EAAOhF,EAAM,KAAK,EAAGiF,EAAKjF,EAAM,GAAG,EACnCC,GAAQ,KAAK,IAAIC,EAAK8E,EAAK,IAAI,EACnC9E,EAAM,KAAK,IAAI,KAAK,SAAS,EAAG+E,EAAG,MAAQA,EAAG,GAAK,EAAI,EAAE,EAAI,EAC7D,QAASsC,GAAItH,GAAOsH,GAAIrH,EAAK,EAAEqH,GAC3B2/B,GAAW,KAAM3/B,GAAG4/B,CAAG,EAC3B,IAAIkC,GAAY,KAAK,IAAI,IAAI,OACzBrkC,EAAK,IAAM,GAAKksB,EAAO,QAAUmY,GAAU,QAAUA,GAAUvpC,CAAC,EAAE,KAAK,EAAE,GAAK,GAC9Em2B,GAAoB,KAAK,IAAKn2B,EAAG,IAAIwxB,GAAMtsB,EAAMqkC,GAAUvpC,CAAC,EAAE,GAAG,CAAC,EAAG8C,EAAc,CACzF,CAKF,CACF,CAAC,EAID,WAAY,SAASK,EAAKyN,EAAS,CACjC,OAAOS,GAAU,KAAMlO,EAAKyN,CAAO,CACrC,EAEA,cAAe,SAASnI,EAAMmI,EAAS,CACrC,OAAOS,GAAU,KAAMzC,GAAInG,CAAI,EAAGmI,EAAS,EAAI,CACjD,EAEA,eAAgB,SAASzN,EAAK,CAC5BA,EAAMiM,GAAQ,KAAK,IAAKjM,CAAG,EAC3B,IAAImW,EAAS9I,GAAc,KAAM7C,GAAQ,KAAK,IAAKxK,EAAI,IAAI,CAAC,EACxD4E,EAAS,EAAG1I,GAASia,EAAO,OAAS,GAAK,EAAG/U,EAAKpB,EAAI,GACtD6D,EACJ,GAAIzC,GAAM,EAAKyC,EAAOsS,EAAO,CAAC,MACvB,QAAS,CACd,IAAIjU,EAAO0C,EAAS1I,GAAU,EAC9B,IAAKgG,EAAMiU,EAAOjU,EAAM,EAAI,CAAC,EAAI,IAAMd,EAAMlF,EAAQgG,UAC5CiU,EAAOjU,EAAM,EAAI,CAAC,EAAId,EAAMwD,EAAS1C,EAAM,MAC/C,CAAE2B,EAAOsS,EAAOjU,EAAM,EAAI,CAAC,EAAG,KAAM,CAC3C,CACA,IAAI2e,GAAMhd,EAAOA,EAAK,QAAQ,UAAU,EAAI,GAC5C,OAAOgd,GAAM,EAAIhd,EAAOgd,IAAO,EAAI,KAAOhd,EAAK,MAAM,EAAGgd,GAAM,CAAC,CACjE,EAEA,UAAW,SAAS7gB,EAAK,CACvB,IAAIuI,EAAO,KAAK,IAAI,KACpB,OAAKA,EAAK,UACH+wB,EAAW,UAAU/wB,EAAM,KAAK,WAAWvI,CAAG,EAAE,KAAK,EAAE,KADhCuI,CAEhC,EAEA,UAAW,SAASvI,EAAK6D,EAAM,CAC7B,OAAO,KAAK,WAAW7D,EAAK6D,CAAI,EAAE,CAAC,CACrC,EAEA,WAAY,SAAS7D,EAAK6D,EAAM,CAC9B,IAAIxB,EAAQ,CAAC,EACb,GAAI,CAAC4jC,EAAQ,eAAepiC,CAAI,EAAK,OAAOxB,EAC5C,IAAIgkC,EAAOJ,EAAQpiC,CAAI,EAAG0E,EAAO,KAAK,UAAUvI,CAAG,EACnD,GAAI,OAAOuI,EAAK1E,CAAI,GAAK,SACnBwiC,EAAK99B,EAAK1E,CAAI,CAAC,GAAKxB,EAAM,KAAKgkC,EAAK99B,EAAK1E,CAAI,CAAC,CAAC,UAC1C0E,EAAK1E,CAAI,EAClB,QAAShH,EAAI,EAAGA,EAAI0L,EAAK1E,CAAI,EAAE,OAAQhH,IAAK,CAC1C,IAAI2M,EAAM68B,EAAK99B,EAAK1E,CAAI,EAAEhH,CAAC,CAAC,EACxB2M,GAAOnH,EAAM,KAAKmH,CAAG,CAC3B,MACSjB,EAAK,YAAc89B,EAAK99B,EAAK,UAAU,EAChDlG,EAAM,KAAKgkC,EAAK99B,EAAK,UAAU,CAAC,EACvB89B,EAAK99B,EAAK,IAAI,GACvBlG,EAAM,KAAKgkC,EAAK99B,EAAK,IAAI,CAAC,EAE5B,QAAS5E,GAAM,EAAGA,GAAM0iC,EAAK,QAAQ,OAAQ1iC,KAAO,CAClD,IAAIjB,GAAM2jC,EAAK,QAAQ1iC,EAAG,EACtBjB,GAAI,KAAK6F,EAAM,IAAI,GAAKhJ,GAAQ8C,EAAOK,GAAI,GAAG,GAAK,IACnDL,EAAM,KAAKK,GAAI,GAAG,CACxB,CACA,OAAOL,CACT,EAEA,cAAe,SAASiD,EAAMmI,EAAS,CACrC,IAAIjQ,EAAM,KAAK,IACf,OAAA8H,EAAO0G,GAASxO,EAAK8H,GAAe9H,EAAI,MAAQA,EAAI,KAAO,CAAO,EAC3D+P,GAAiB,KAAMjI,EAAO,EAAGmI,CAAO,EAAE,KACnD,EAEA,aAAc,SAASzQ,EAAOuL,EAAM,CAClC,IAAIvI,EAAKjD,EAAQ,KAAK,IAAI,IAAI,QAAQ,EACtC,OAAIC,GAAS,KAAQgD,EAAMjD,EAAM,KACxB,OAAOC,GAAS,SAAYgD,EAAMiM,GAAQ,KAAK,IAAKjP,CAAK,EAC3DgD,EAAMhD,EAAQD,EAAM,KAAK,EAAIA,EAAM,GAAG,EACtCygB,GAAa,KAAMxd,EAAKuI,GAAQ,MAAM,CAC/C,EAEA,WAAY,SAASvI,EAAKuI,EAAM,CAC9B,OAAOgV,GAAW,KAAMtR,GAAQ,KAAK,IAAKjM,CAAG,EAAGuI,GAAQ,MAAM,CAChE,EAEA,WAAY,SAAS4U,EAAQ5U,EAAM,CACjC,OAAA4U,EAASD,GAAgB,KAAMC,EAAQ5U,GAAQ,MAAM,EAC9C6V,GAAW,KAAMjB,EAAO,KAAMA,EAAO,GAAG,CACjD,EAEA,aAAc,SAASpS,EAAQxC,EAAM,CACnC,OAAAwC,EAASmS,GAAgB,KAAM,CAAC,IAAKnS,EAAQ,KAAM,CAAC,EAAGxC,GAAQ,MAAM,EAAE,IAChE4C,GAAa,KAAK,IAAKJ,EAAS,KAAK,QAAQ,UAAU,CAChE,EACA,aAAc,SAASzF,EAAMiD,EAAMuU,EAAgB,CACjD,IAAI7f,EAAM,GAAO0W,EACjB,GAAI,OAAOrO,GAAQ,SAAU,CAC3B,IAAI4G,EAAO,KAAK,IAAI,MAAQ,KAAK,IAAI,KAAO,EACxC5G,EAAO,KAAK,IAAI,MAASA,EAAO,KAAK,IAAI,MACpCA,EAAO4G,IAAQ5G,EAAO4G,EAAMjP,EAAM,IAC3C0W,EAAUnJ,GAAQ,KAAK,IAAKlF,CAAI,CAClC,MACEqO,EAAUrO,EAEZ,OAAOuX,GAAgB,KAAMlJ,EAAS,CAAC,IAAK,EAAG,KAAM,CAAC,EAAGpL,GAAQ,OAAQuU,GAAkB7f,CAAG,EAAE,KAC7FA,EAAM,KAAK,IAAI,OAASyW,GAAaC,CAAO,EAAI,EACrD,EAEA,kBAAmB,UAAW,CAAE,OAAOgM,GAAW,KAAK,OAAO,CAAE,EAChE,iBAAkB,UAAW,CAAE,OAAO7D,GAAU,KAAK,OAAO,CAAE,EAE9D,YAAa,UAAW,CAAE,MAAO,CAAC,KAAM,KAAK,QAAQ,SAAU,GAAI,KAAK,QAAQ,MAAM,CAAC,EAEvF,UAAW,SAAS9b,EAAKjE,EAAMisB,EAAQC,EAAMC,EAAO,CAClD,IAAIxa,EAAU,KAAK,QACnB1N,EAAMwd,GAAa,KAAMvR,GAAQ,KAAK,IAAKjM,CAAG,CAAC,EAC/C,IAAIic,EAAMjc,EAAI,OAAQod,GAAOpd,EAAI,KAKjC,GAJAjE,EAAK,MAAM,SAAW,WACtBA,EAAK,aAAa,mBAAoB,MAAM,EAC5C,KAAK,QAAQ,MAAM,cAAcA,CAAI,EACrC2R,EAAQ,MAAM,YAAY3R,CAAI,EAC1BksB,GAAQ,OACVhM,EAAMjc,EAAI,YACDioB,GAAQ,SAAWA,GAAQ,OAAQ,CAC5C,IAAIqe,GAAS,KAAK,IAAI54B,EAAQ,QAAQ,aAAc,KAAK,IAAI,MAAM,EACnE64B,GAAS,KAAK,IAAI74B,EAAQ,MAAM,YAAaA,EAAQ,UAAU,WAAW,GAErEua,GAAQ,SAAWjoB,EAAI,OAASjE,EAAK,aAAeuqC,KAAWtmC,EAAI,IAAMjE,EAAK,aAC/EkgB,EAAMjc,EAAI,IAAMjE,EAAK,aAChBiE,EAAI,OAASjE,EAAK,cAAgBuqC,KACvCrqB,EAAMjc,EAAI,QACVod,GAAOrhB,EAAK,YAAcwqC,KAC1BnpB,GAAOmpB,GAASxqC,EAAK,YAC3B,CACAA,EAAK,MAAM,IAAMkgB,EAAM,KACvBlgB,EAAK,MAAM,KAAOA,EAAK,MAAM,MAAQ,GACjCmsB,GAAS,SACX9K,GAAO1P,EAAQ,MAAM,YAAc3R,EAAK,YACxCA,EAAK,MAAM,MAAQ,QAEfmsB,GAAS,OAAU9K,GAAO,EACrB8K,GAAS,WAAY9K,IAAQ1P,EAAQ,MAAM,YAAc3R,EAAK,aAAe,GACtFA,EAAK,MAAM,KAAOqhB,GAAO,MAEvB4K,GACA7B,GAAe,KAAM,CAAC,KAAM/I,GAAM,IAAKnB,EAAK,MAAOmB,GAAOrhB,EAAK,YAAa,OAAQkgB,EAAMlgB,EAAK,YAAY,CAAC,CAClH,EAEA,iBAAkB0uB,GAASkU,EAAS,EACpC,kBAAmBlU,GAASwU,EAAU,EACtC,eAAgBD,GAChB,mBAAoBvU,GAASkV,EAAW,EAExC,YAAa,SAASrE,EAAK,CACzB,GAAI+B,GAAS,eAAe/B,CAAG,EAC3B,OAAO+B,GAAS/B,CAAG,EAAE,KAAK,KAAM,IAAI,CAC1C,EAEA,gBAAiB7Q,GAAS,SAAS7f,EAAM,CAAEy6B,GAAgB,KAAMz6B,CAAI,CAAG,CAAC,EAEzE,SAAU,SAAS7I,EAAMykC,EAAQ5F,EAAMlE,EAAU,CAC/C,IAAI96B,EAAM,EACN4kC,EAAS,IAAK5kC,EAAM,GAAI4kC,EAAS,CAACA,GAEtC,QADI9jC,EAAMuJ,GAAQ,KAAK,IAAKlK,CAAI,EACvBlF,EAAI,EAAGA,EAAI2pC,IAClB9jC,EAAM+jC,GAAS,KAAK,IAAK/jC,EAAKd,EAAKg/B,EAAMlE,CAAQ,EAC7C,CAAAh6B,EAAI,SAFkB,EAAE7F,EAE5B,CAEF,OAAO6F,CACT,EAEA,MAAO+nB,GAAS,SAAS7oB,EAAKg/B,EAAM,CAClC,IAAI3J,EAAS,KAEb,KAAK,mBAAmB,SAAUl6B,EAAO,CACvC,OAAIk6B,EAAO,QAAQ,OAASA,EAAO,IAAI,QAAUl6B,EAAM,MAAM,EAClD0pC,GAASxP,EAAO,IAAKl6B,EAAM,KAAM6E,EAAKg/B,EAAM3J,EAAO,QAAQ,eAAe,EAE1Er1B,EAAM,EAAI7E,EAAM,KAAK,EAAIA,EAAM,GAAG,CAC/C,EAAG8C,EAAQ,CACb,CAAC,EAED,QAAS4qB,GAAS,SAAS7oB,EAAKg/B,EAAM,CACpC,IAAIvV,EAAM,KAAK,IAAI,IAAK7tB,EAAM,KAAK,IAC/B6tB,EAAI,kBAAkB,EACtB7tB,EAAI,iBAAiB,GAAI,KAAM,SAAS,EAExC0+B,GAAoB,KAAM,SAAUn/B,EAAO,CAC3C,IAAIghB,EAAQ0oB,GAASjpC,EAAKT,EAAM,KAAM6E,EAAKg/B,EAAM,EAAK,EACtD,OAAOh/B,EAAM,EAAI,CAAC,KAAMmc,EAAO,GAAIhhB,EAAM,IAAI,EAAI,CAAC,KAAMA,EAAM,KAAM,GAAIghB,CAAK,CAC/E,CAAC,CACL,CAAC,EAED,SAAU,SAAShc,EAAMykC,EAAQ5F,EAAM8F,EAAY,CACjD,IAAI9kC,EAAM,EAAGiK,EAAI66B,EACbF,EAAS,IAAK5kC,EAAM,GAAI4kC,EAAS,CAACA,GAEtC,QADI9jC,EAAMuJ,GAAQ,KAAK,IAAKlK,CAAI,EACvBlF,GAAI,EAAGA,GAAI2pC,EAAQ,EAAE3pC,GAAG,CAC/B,IAAIsgB,GAASK,GAAa,KAAM9a,EAAK,KAAK,EAI1C,GAHImJ,GAAK,KAAQA,EAAIsR,GAAO,KACrBA,GAAO,KAAOtR,EACrBnJ,EAAMikC,GAAS,KAAMxpB,GAAQvb,EAAKg/B,CAAI,EAClCl+B,EAAI,QAAW,KACrB,CACA,OAAOA,CACT,EAEA,MAAO+nB,GAAS,SAAS7oB,EAAKg/B,EAAM,CAClC,IAAI3J,EAAS,KAETz5B,EAAM,KAAK,IAAKopC,EAAQ,CAAC,EACzBrrB,EAAW,CAAC,KAAK,QAAQ,OAAS,CAAC/d,EAAI,QAAUA,EAAI,IAAI,kBAAkB,EAY/E,GAXAA,EAAI,mBAAmB,SAAUT,GAAO,CACtC,GAAIwe,EACA,OAAO3Z,EAAM,EAAI7E,GAAM,KAAK,EAAIA,GAAM,GAAG,EAC7C,IAAI8pC,GAAUrpB,GAAayZ,EAAQl6B,GAAM,KAAM,KAAK,EAChDA,GAAM,YAAc,OAAQ8pC,GAAQ,KAAO9pC,GAAM,YACrD6pC,EAAM,KAAKC,GAAQ,IAAI,EACvB,IAAI7mC,GAAM2mC,GAAS1P,EAAQ4P,GAASjlC,EAAKg/B,CAAI,EAC7C,OAAIA,GAAQ,QAAU7jC,IAASS,EAAI,IAAI,QAAQ,GAC3CupB,GAAekQ,EAAQ1Z,GAAW0Z,EAAQj3B,GAAK,KAAK,EAAE,IAAM6mC,GAAQ,GAAG,EACpE7mC,EACT,EAAGH,EAAQ,EACP+mC,EAAM,OAAU,QAAS/pC,EAAI,EAAGA,EAAIW,EAAI,IAAI,OAAO,OAAQX,IAC3DW,EAAI,IAAI,OAAOX,CAAC,EAAE,WAAa+pC,EAAM/pC,CAAC,CAC5C,CAAC,EAGD,WAAY,SAASmD,EAAK,CACxB,IAAIxC,EAAM,KAAK,IAAK8H,EAAOkF,GAAQhN,EAAKwC,EAAI,IAAI,EAAE,KAC9ChD,EAAQgD,EAAI,GAAI/C,EAAM+C,EAAI,GAC9B,GAAIsF,EAAM,CACR,IAAIhE,EAAS,KAAK,UAAUtB,EAAK,WAAW,GACvCA,EAAI,QAAU,UAAY/C,GAAOqI,EAAK,SAAWtI,EAAS,EAAEA,EAAgB,EAAEC,EAMnF,QALI6pC,EAAYxhC,EAAK,OAAOtI,CAAK,EAC7B+pC,GAAQ1lC,GAAWylC,EAAWxlC,CAAM,EACpC,SAAUF,GAAI,CAAE,OAAOC,GAAWD,GAAIE,CAAM,CAAG,EAC/C,KAAK,KAAKwlC,CAAS,EAAI,SAAU1lC,GAAI,CAAE,MAAO,KAAK,KAAKA,EAAE,CAAG,EAC7D,SAAUA,GAAI,CAAE,MAAQ,CAAC,KAAK,KAAKA,EAAE,GAAK,CAACC,GAAWD,EAAE,CAAI,EACzDpE,EAAQ,GAAK+pC,GAAMzhC,EAAK,OAAOtI,EAAQ,CAAC,CAAC,GAAK,EAAEA,EACvD,KAAOC,EAAMqI,EAAK,QAAUyhC,GAAMzhC,EAAK,OAAOrI,CAAG,CAAC,GAAK,EAAEA,CAC3D,CACA,OAAO,IAAIoxB,GAAM5iB,GAAIzL,EAAI,KAAMhD,CAAK,EAAGyO,GAAIzL,EAAI,KAAM/C,CAAG,CAAC,CAC3D,EAEA,gBAAiB,SAASyD,EAAO,CAC3BA,GAAS,MAAQA,GAAS,KAAK,MAAM,aACrC,KAAK,MAAM,UAAY,CAAC,KAAK,MAAM,WACnChD,GAAS,KAAK,QAAQ,UAAW,sBAAsB,EAEvD5B,EAAQ,KAAK,QAAQ,UAAW,sBAAsB,EAE1D+J,GAAO,KAAM,kBAAmB,KAAM,KAAK,MAAM,SAAS,EAC5D,EACA,SAAU,UAAW,CAAE,OAAO,KAAK,QAAQ,MAAM,SAAS,GAAKvI,EAAUW,GAAK,IAAI,CAAC,CAAE,EACrF,WAAY,UAAW,CAAE,MAAO,CAAC,EAAE,KAAK,QAAQ,UAAY,KAAK,IAAI,SAAU,EAE/E,SAAUwsB,GAAS,SAAU5e,EAAGwS,EAAG,CAAE6I,GAAe,KAAMrb,EAAGwS,CAAC,CAAG,CAAC,EAClE,cAAe,UAAW,CACxB,IAAI2oB,EAAW,KAAK,QAAQ,SAC5B,MAAO,CAAC,KAAMA,EAAS,WAAY,IAAKA,EAAS,UACzC,OAAQA,EAAS,aAAejtB,GAAU,IAAI,EAAI,KAAK,QAAQ,UAC/D,MAAOitB,EAAS,YAAcjtB,GAAU,IAAI,EAAI,KAAK,QAAQ,SAC7D,aAAcE,GAAc,IAAI,EAAG,YAAaD,GAAa,IAAI,CAAC,CAC5E,EAEA,eAAgByQ,GAAS,SAAS1tB,EAAO0oB,EAAQ,CAC3C1oB,GAAS,MACXA,EAAQ,CAAC,KAAM,KAAK,IAAI,IAAI,QAAQ,EAAE,KAAM,GAAI,IAAI,EAChD0oB,GAAU,OAAQA,EAAS,KAAK,QAAQ,qBACnC,OAAO1oB,GAAS,SACzBA,EAAQ,CAAC,KAAM0O,GAAI1O,EAAO,CAAC,EAAG,GAAI,IAAI,EAC7BA,EAAM,MAAQ,OACvBA,EAAQ,CAAC,KAAMA,EAAO,GAAI,IAAI,GAE3BA,EAAM,KAAMA,EAAM,GAAKA,EAAM,MAClCA,EAAM,OAAS0oB,GAAU,EAErB1oB,EAAM,KAAK,MAAQ,KACrBoqB,GAAc,KAAMpqB,CAAK,EAEzBqqB,GAAoB,KAAMrqB,EAAM,KAAMA,EAAM,GAAIA,EAAM,MAAM,CAEhE,CAAC,EAED,QAAS0tB,GAAS,SAASlR,EAAOxO,EAAQ,CACxC,IAAIksB,EAAS,KAETgQ,EAAY,SAAUz9B,EAAK,CAAE,OAAO,OAAOA,GAAO,UAAY,QAAQ,KAAK,OAAOA,CAAG,CAAC,EAAIA,EAAM,KAAOA,CAAK,EAC5G+P,GAAS,OAAQ,KAAK,QAAQ,QAAQ,MAAM,MAAQ0tB,EAAU1tB,CAAK,GACnExO,GAAU,OAAQ,KAAK,QAAQ,QAAQ,MAAM,OAASk8B,EAAUl8B,CAAM,GACtE,KAAK,QAAQ,cAAgBuR,GAA0B,IAAI,EAC/D,IAAIrR,EAAS,KAAK,QAAQ,SAC1B,KAAK,IAAI,KAAKA,EAAQ,KAAK,QAAQ,OAAQ,SAAU3F,EAAM,CACzD,GAAIA,EAAK,SAAW,QAASzI,EAAI,EAAGA,EAAIyI,EAAK,QAAQ,OAAQzI,IACzD,GAAIyI,EAAK,QAAQzI,CAAC,EAAE,UAAW,CAAEqkB,GAAc+V,EAAQhsB,EAAQ,QAAQ,EAAG,KAAM,EACpF,EAAEA,CACJ,CAAC,EACD,KAAK,MAAM,YAAc,GACzBpF,GAAO,KAAM,UAAW,IAAI,CAC9B,CAAC,EAED,UAAW,SAASxH,EAAE,CAAC,OAAOksB,GAAQ,KAAMlsB,CAAC,CAAC,EAC9C,eAAgB,UAAU,CAAC,OAAOirB,GAAe,IAAI,CAAC,EACtD,aAAc,UAAU,CAAC,OAAOC,GAAa,IAAI,CAAC,EAElD,QAASkB,GAAS,UAAW,CAC3B,IAAI7F,EAAY,KAAK,QAAQ,iBAC7BlE,GAAU,IAAI,EACd,KAAK,MAAM,YAAc,GACzBnE,GAAY,IAAI,EAChB2K,GAAe,KAAM,KAAK,IAAI,WAAY,KAAK,IAAI,SAAS,EAC5DkF,GAAkB,KAAK,OAAO,GAC1BxH,GAAa,MAAQ,KAAK,IAAIA,EAAYjF,GAAW,KAAK,OAAO,CAAC,EAAI,IAAM,KAAK,QAAQ,eACzFQ,GAAoB,IAAI,EAC5Bta,GAAO,KAAM,UAAW,IAAI,CAC9B,CAAC,EAED,QAAS4kB,GAAS,SAASjtB,EAAK,CAC9B,IAAIwS,EAAM,KAAK,IACf,OAAAA,EAAI,GAAK,KAEL,KAAK,MAAM,eAAiB,KAAK,MAAM,cAAc,EACzDygB,GAAU,KAAMjzB,CAAG,EACnB+e,GAAY,IAAI,EAChB,KAAK,QAAQ,MAAM,MAAM,EACzB2K,GAAe,KAAM1pB,EAAI,WAAYA,EAAI,SAAS,EAClD,KAAK,MAAM,YAAc,GACzBka,GAAY,KAAM,UAAW,KAAM1H,CAAG,EAC/BA,CACT,CAAC,EAED,OAAQ,SAASk3B,EAAY,CAC3B,IAAIC,EAAU,KAAK,QAAQ,QAC3B,OAAOA,GAAW,OAAO,UAAU,eAAe,KAAKA,EAASD,CAAU,EAAIC,EAAQD,CAAU,EAAIA,CACtG,EAEA,cAAe,UAAU,CAAC,OAAO,KAAK,QAAQ,MAAM,SAAS,CAAC,EAC9D,kBAAmB,UAAU,CAAC,OAAO,KAAK,QAAQ,OAAO,EACzD,mBAAoB,UAAU,CAAC,OAAO,KAAK,QAAQ,QAAQ,EAC3D,iBAAkB,UAAU,CAAC,OAAO,KAAK,QAAQ,OAAO,CAC1D,EACA7gC,GAAWizB,CAAU,EAErBA,EAAW,eAAiB,SAASz1B,EAAMyE,EAAM5H,EAAO,CACjDulC,EAAQ,eAAepiC,CAAI,IAAKoiC,EAAQpiC,CAAI,EAAIy1B,EAAWz1B,CAAI,EAAI,CAAC,QAAS,CAAC,CAAC,GACpFoiC,EAAQpiC,CAAI,EAAEyE,CAAI,EAAI5H,CACxB,EACA44B,EAAW,qBAAuB,SAASz1B,EAAMyE,EAAM8+B,EAAW1mC,EAAO,CACvE44B,EAAW,eAAez1B,EAAMyE,EAAM5H,CAAK,EAC3CulC,EAAQpiC,CAAI,EAAE,QAAQ,KAAK,CAAC,KAAMujC,EAAW,IAAK1mC,CAAK,CAAC,CAC1D,CACF,CAWA,SAAS+lC,GAASjpC,EAAKwC,EAAK4B,EAAKg/B,EAAMlE,EAAU,CAC/C,IAAI5I,EAAS9zB,EACTqnC,EAAUzlC,EACV+R,EAAUnJ,GAAQhN,EAAKwC,EAAI,IAAI,EAC/BsnC,EAAU5K,GAAYl/B,EAAI,WAAa,MAAQ,CAACoE,EAAMA,EAC1D,SAAS2lC,GAAe,CACtB,IAAI9/B,GAAIzH,EAAI,KAAOsnC,EACnB,OAAI7/B,GAAIjK,EAAI,OAASiK,IAAKjK,EAAI,MAAQA,EAAI,KAAe,IACzDwC,EAAM,IAAIyL,GAAIhE,GAAGzH,EAAI,GAAIA,EAAI,MAAM,EAC5B2T,EAAUnJ,GAAQhN,EAAKiK,EAAC,EACjC,CACA,SAAS+/B,GAASC,GAAa,CAC7B,IAAIzuB,GACJ,GAAI4nB,GAAQ,YAAa,CACvB,IAAIx/B,GAAKuS,EAAQ,KAAK,WAAW3T,EAAI,IAAM4B,EAAM,EAAI,EAAI,GAAG,EAC5D,GAAI,MAAMR,EAAE,EACV4X,GAAO,SACF,CACL,IAAI0uB,GAAS9lC,EAAM,EAAIR,IAAM,OAAUA,GAAK,MAASA,IAAM,OAAUA,GAAK,MAC1E4X,GAAO,IAAIvN,GAAIzL,EAAI,KAAM,KAAK,IAAI,EAAG,KAAK,IAAI2T,EAAQ,KAAK,OAAQ3T,EAAI,GAAK4B,GAAO8lC,GAAS,EAAI,EAAE,CAAC,EAAG,CAAC9lC,CAAG,CAC5G,CACF,MAAW86B,EACT1jB,GAAO6jB,GAAar/B,EAAI,GAAImW,EAAS3T,EAAK4B,CAAG,EAE7CoX,GAAOwjB,GAAc7oB,EAAS3T,EAAK4B,CAAG,EAExC,GAAIoX,IAAQ,KACV,GAAI,CAACyuB,IAAeF,EAAa,EAC7BvnC,EAAMy8B,GAAUC,EAAUl/B,EAAI,GAAImW,EAAS3T,EAAI,KAAMsnC,CAAO,MAE5D,OAAO,QAEXtnC,EAAMgZ,GAER,MAAO,EACT,CAEA,GAAI4nB,GAAQ,QAAUA,GAAQ,YAC5B4G,GAAS,UACA5G,GAAQ,SACjB4G,GAAS,EAAI,UACJ5G,GAAQ,QAAUA,GAAQ,QAGnC,QAFI+G,GAAU,KAAMtwB,GAAQupB,GAAQ,QAChCt/B,GAAS9D,EAAI,IAAMA,EAAI,GAAG,UAAUwC,EAAK,WAAW,EAC/C4Q,GAAQ,GACX,EAAAhP,EAAM,GAAK,CAAC4lC,GAAS,CAAC52B,EAAK,GADTA,GAAQ,GAAO,CAErC,IAAIlO,GAAMiR,EAAQ,KAAK,OAAO3T,EAAI,EAAE,GAAK;AAAA,EACrC6D,GAAOxC,GAAWqB,GAAKpB,EAAM,EAAI,IACjC+V,IAAS3U,IAAO;AAAA,EAAO,IACvB,CAAC2U,IAAS,KAAK,KAAK3U,EAAG,EAAI,KAC3B,IAEJ,GADI2U,IAAS,CAACzG,IAAS,CAAC/M,KAAQA,GAAO,KACnC8jC,IAAWA,IAAW9jC,GAAM,CAC1BjC,EAAM,IAAIA,EAAM,EAAG4lC,GAAS,EAAGxnC,EAAI,OAAS,SAChD,KACF,CAGA,GADI6D,KAAQ8jC,GAAU9jC,IAClBjC,EAAM,GAAK,CAAC4lC,GAAS,CAAC52B,EAAK,EAAK,KACtC,CAEF,IAAIpJ,GAASmsB,GAAWn2B,EAAKwC,EAAK8zB,EAAQuT,EAAS,EAAI,EACvD,OAAI17B,GAAemoB,EAAQtsB,EAAM,IAAKA,GAAO,QAAU,IAChDA,EACT,CAKA,SAASm/B,GAAS3oC,EAAIgC,EAAK4B,EAAKg/B,EAAM,CACpC,IAAIpjC,EAAMQ,EAAG,IAAK6N,EAAI7L,EAAI,KAAMqe,EAChC,GAAIuiB,GAAQ,OAAQ,CAClB,IAAIgH,EAAW,KAAK,IAAI5pC,EAAG,QAAQ,QAAQ,aAAcG,GAAIH,CAAE,EAAE,aAAeR,EAAIQ,CAAE,EAAE,gBAAgB,YAAY,EAChH6pC,EAAa,KAAK,IAAID,EAAW,GAAKjoB,GAAW3hB,EAAG,OAAO,EAAG,CAAC,EACnEqgB,GAAKzc,EAAM,EAAI5B,EAAI,OAASA,EAAI,KAAO4B,EAAMimC,CAE/C,MAAWjH,GAAQ,SACjBviB,EAAIzc,EAAM,EAAI5B,EAAI,OAAS,EAAIA,EAAI,IAAM,GAG3C,QADIvB,EAEFA,EAAS2f,GAAWpgB,EAAI6N,EAAGwS,CAAC,EACxB,EAAC5f,EAAO,SAFL,CAGP,GAAImD,EAAM,EAAIyc,GAAK,EAAIA,GAAK7gB,EAAI,OAAQ,CAAEiB,EAAO,QAAU,GAAM,KAAM,CACvE4f,GAAKzc,EAAM,CACb,CACA,OAAOnD,CACT,CAIA,IAAIqpC,GAAuB,SAAS9pC,EAAI,CACtC,KAAK,GAAKA,EACV,KAAK,eAAiB,KAAK,iBAAmB,KAAK,cAAgB,KAAK,gBAAkB,KAC1F,KAAK,QAAU,IAAImB,GACnB,KAAK,UAAY,KACjB,KAAK,YAAc,GACnB,KAAK,eAAiB,IACxB,EAEA2oC,GAAqB,UAAU,KAAO,SAAUp6B,EAAS,CACrD,IAAIupB,EAAS,KAEXjK,EAAQ,KAAMhvB,EAAKgvB,EAAM,GACzBnmB,EAAMmmB,EAAM,IAAMtf,EAAQ,QAC9B7G,EAAI,gBAAkB,GACtB6+B,GAAoB7+B,EAAK7I,EAAG,QAAQ,WAAYA,EAAG,QAAQ,YAAaA,EAAG,QAAQ,cAAc,EAEjG,SAAS+pC,EAAe3rC,EAAG,CACzB,QAAS29B,EAAI39B,EAAE,OAAQ29B,EAAGA,EAAIA,EAAE,WAAY,CAC1C,GAAIA,GAAKlzB,EAAO,MAAO,GACvB,GAAI,iCAAiC,KAAKkzB,EAAE,SAAS,EAAK,KAC5D,CACA,MAAO,EACT,CAEAv0B,EAAGqB,EAAK,QAAS,SAAUzK,EAAG,CACxB,CAAC2rC,EAAe3rC,CAAC,GAAK2J,GAAe/H,EAAI5B,CAAC,GAAKkpC,GAAYlpC,EAAG4B,CAAE,GAEhEtD,GAAc,IAAM,WAAW8vB,GAAUxsB,EAAI,UAAY,CAAE,OAAOi5B,EAAO,cAAc,CAAG,CAAC,EAAG,EAAE,CACtG,CAAC,EAEDzxB,EAAGqB,EAAK,mBAAoB,SAAUzK,EAAG,CACvC66B,EAAO,UAAY,CAAC,KAAM76B,EAAE,KAAM,KAAM,EAAK,CAC/C,CAAC,EACDoJ,EAAGqB,EAAK,oBAAqB,SAAUzK,EAAG,CACnC66B,EAAO,YAAaA,EAAO,UAAY,CAAC,KAAM76B,EAAE,KAAM,KAAM,EAAK,EACxE,CAAC,EACDoJ,EAAGqB,EAAK,iBAAkB,SAAUzK,EAAG,CACjC66B,EAAO,YACL76B,EAAE,MAAQ66B,EAAO,UAAU,MAAQA,EAAO,gBAAgB,EAC9DA,EAAO,UAAU,KAAO,GAE5B,CAAC,EAEDzxB,EAAGqB,EAAK,aAAc,UAAY,CAAE,OAAOmmB,EAAM,oBAAoB,CAAG,CAAC,EAEzExnB,EAAGqB,EAAK,QAAS,UAAY,CACtBowB,EAAO,WAAaA,EAAO,gBAAgB,CAClD,CAAC,EAED,SAAS+Q,EAAU5rC,EAAG,CACpB,GAAI,GAAC2rC,EAAe3rC,CAAC,GAAK2J,GAAe/H,EAAI5B,CAAC,GAC9C,IAAI4B,EAAG,kBAAkB,EACvB0mC,GAAc,CAAC,SAAU,GAAO,KAAM1mC,EAAG,cAAc,CAAC,CAAC,EACrD5B,EAAE,MAAQ,OAAS4B,EAAG,iBAAiB,GAAI,KAAM,KAAK,UAChDA,EAAG,QAAQ,gBAEhB,CACL,IAAIiwB,EAASuX,GAAexnC,CAAE,EAC9B0mC,GAAc,CAAC,SAAU,GAAM,KAAMzW,EAAO,IAAI,CAAC,EAC7C7xB,EAAE,MAAQ,OACZ4B,EAAG,UAAU,UAAY,CACvBA,EAAG,cAAciwB,EAAO,OAAQ,EAAGtuB,EAAc,EACjD3B,EAAG,iBAAiB,GAAI,KAAM,KAAK,CACrC,CAAC,CAEL,KAVE,QAWF,GAAI5B,EAAE,cAAe,CACnBA,EAAE,cAAc,UAAU,EAC1B,IAAIM,EAAU+nC,GAAW,KAAK,KAAK;AAAA,CAAI,EAGvC,GADAroC,EAAE,cAAc,QAAQ,OAAQM,CAAO,EACnCN,EAAE,cAAc,QAAQ,MAAM,GAAKM,EAAS,CAC9CN,EAAE,eAAe,EACjB,MACF,CACF,CAEA,IAAI6rC,GAASlC,GAAe,EAAGl+B,GAAKogC,GAAO,WAC3CvC,GAAoB79B,EAAE,EACtB7J,EAAG,QAAQ,UAAU,aAAaiqC,GAAQjqC,EAAG,QAAQ,UAAU,UAAU,EACzE6J,GAAG,MAAQ48B,GAAW,KAAK,KAAK;AAAA,CAAI,EACpC,IAAIyD,GAAW5qC,EAAUC,GAASsJ,CAAG,CAAC,EACtC9I,GAAY8J,EAAE,EACd,WAAW,UAAY,CACrB7J,EAAG,QAAQ,UAAU,YAAYiqC,EAAM,EACvCC,GAAS,MAAM,EACXA,IAAYrhC,GAAOmmB,EAAM,qBAAqB,CACpD,EAAG,EAAE,EACP,CACAxnB,EAAGqB,EAAK,OAAQmhC,CAAS,EACzBxiC,EAAGqB,EAAK,MAAOmhC,CAAS,CAC1B,EAEAF,GAAqB,UAAU,yBAA2B,SAAUK,EAAO,CAEtEA,EACD,KAAK,IAAI,aAAa,aAAcA,CAAK,EAEzC,KAAK,IAAI,gBAAgB,YAAY,CAEzC,EAEAL,GAAqB,UAAU,iBAAmB,UAAY,CAC5D,IAAItgC,EAASia,GAAiB,KAAK,GAAI,EAAK,EAC5C,OAAAja,EAAO,MAAQlK,EAAUC,GAAS,KAAK,GAAG,CAAC,GAAK,KAAK,IAC9CiK,CACT,EAEAsgC,GAAqB,UAAU,cAAgB,SAAUp+B,EAAMwgB,EAAW,CACpE,CAACxgB,GAAQ,CAAC,KAAK,GAAG,QAAQ,KAAK,UAC/BA,EAAK,OAASwgB,IAAa,KAAK,qBAAqB,EACzD,KAAK,uBAAuBxgB,CAAI,EAClC,EAEAo+B,GAAqB,UAAU,aAAe,UAAY,CACxD,OAAO,KAAK,GAAG,QAAQ,QAAQ,cAAc,aAAa,CAC5D,EAEAA,GAAqB,UAAU,qBAAuB,UAAY,CAChE,IAAIzc,EAAM,KAAK,aAAa,EAAGrtB,EAAK,KAAK,GAAIwwB,EAAOxwB,EAAG,IAAI,IAAI,QAAQ,EACnE+D,EAAOysB,EAAK,KAAK,EAAGxsB,EAAKwsB,EAAK,GAAG,EAErC,GAAIxwB,EAAG,QAAQ,QAAUA,EAAG,QAAQ,UAAY+D,EAAK,MAAQ/D,EAAG,QAAQ,QAAUgE,EAAG,KAAOhE,EAAG,QAAQ,SAAU,CAC/GqtB,EAAI,gBAAgB,EACpB,MACF,CAEA,IAAI+c,EAAYC,GAASrqC,EAAIqtB,EAAI,WAAYA,EAAI,YAAY,EACzDid,EAAWD,GAASrqC,EAAIqtB,EAAI,UAAWA,EAAI,WAAW,EAC1D,GAAI,EAAA+c,GAAa,CAACA,EAAU,KAAOE,GAAY,CAACA,EAAS,KACrD58B,GAAIK,GAAOq8B,EAAWE,CAAQ,EAAGvmC,CAAI,GAAK,GAC1C2J,GAAII,GAAOs8B,EAAWE,CAAQ,EAAGtmC,CAAE,GAAK,GAG5C,KAAIiV,EAAOjZ,EAAG,QAAQ,KAClBhB,EAAS+E,EAAK,MAAQ/D,EAAG,QAAQ,UAAYuqC,GAASvqC,EAAI+D,CAAI,GAC9D,CAAC,KAAMkV,EAAK,CAAC,EAAE,QAAQ,IAAI,CAAC,EAAG,OAAQ,CAAC,EACxCha,EAAM+E,EAAG,KAAOhE,EAAG,QAAQ,QAAUuqC,GAASvqC,EAAIgE,CAAE,EACxD,GAAI,CAAC/E,EAAK,CACR,IAAI+J,GAAUiQ,EAAKA,EAAK,OAAS,CAAC,EAAE,QAChC1W,GAAMyG,GAAQ,KAAOA,GAAQ,KAAKA,GAAQ,KAAK,OAAS,CAAC,EAAIA,GAAQ,IACzE/J,EAAM,CAAC,KAAMsD,GAAIA,GAAI,OAAS,CAAC,EAAG,OAAQA,GAAIA,GAAI,OAAS,CAAC,EAAIA,GAAIA,GAAI,OAAS,CAAC,CAAC,CACrF,CAEA,GAAI,CAACvD,GAAS,CAACC,EAAK,CAClBouB,EAAI,gBAAgB,EACpB,MACF,CAEA,IAAIrb,GAAMqb,EAAI,YAAcA,EAAI,WAAW,CAAC,EAAGmd,GAC/C,GAAI,CAAEA,GAAMzrC,EAAMC,EAAM,KAAMA,EAAM,OAAQC,EAAI,OAAQA,EAAI,IAAI,CAAG,MAC1D,CAAC,CACNurC,KACE,CAACnuC,GAAS2D,EAAG,MAAM,SACrBqtB,EAAI,SAASruB,EAAM,KAAMA,EAAM,MAAM,EAChCwrC,GAAI,YACPnd,EAAI,gBAAgB,EACpBA,EAAI,SAASmd,EAAG,KAGlBnd,EAAI,gBAAgB,EACpBA,EAAI,SAASmd,EAAG,GAEdx4B,IAAOqb,EAAI,YAAc,KAAQA,EAAI,SAASrb,EAAG,EAC5C3V,GAAS,KAAK,iBAAiB,GAE1C,KAAK,kBAAkB,EACzB,EAEAytC,GAAqB,UAAU,iBAAmB,UAAY,CAC1D,IAAI7Q,EAAS,KAEf,aAAa,KAAK,WAAW,EAC7B,KAAK,YAAc,WAAW,UAAY,CACxCA,EAAO,YAAc,GACjBA,EAAO,iBAAiB,GACxBA,EAAO,GAAG,UAAU,UAAY,CAAE,OAAOA,EAAO,GAAG,MAAM,iBAAmB,EAAM,CAAC,CACzF,EAAG,EAAE,CACP,EAEA6Q,GAAqB,UAAU,uBAAyB,SAAUp+B,EAAM,CACtEpN,EAAqB,KAAK,GAAG,QAAQ,UAAWoN,EAAK,OAAO,EAC5DpN,EAAqB,KAAK,GAAG,QAAQ,aAAcoN,EAAK,SAAS,CACnE,EAEAo+B,GAAqB,UAAU,kBAAoB,UAAY,CAC7D,IAAIzc,EAAM,KAAK,aAAa,EAC5B,KAAK,eAAiBA,EAAI,WAAY,KAAK,iBAAmBA,EAAI,aAClE,KAAK,cAAgBA,EAAI,UAAW,KAAK,gBAAkBA,EAAI,WACjE,EAEAyc,GAAqB,UAAU,kBAAoB,UAAY,CAC7D,IAAIzc,EAAM,KAAK,aAAa,EAC5B,GAAI,CAACA,EAAI,WAAc,MAAO,GAC9B,IAAItvB,EAAOsvB,EAAI,WAAW,CAAC,EAAE,wBAC7B,OAAOjuB,EAAS,KAAK,IAAKrB,CAAI,CAChC,EAEA+rC,GAAqB,UAAU,MAAQ,UAAY,CAC7C,KAAK,GAAG,QAAQ,UAAY,cAC1B,CAAC,KAAK,kBAAkB,GAAKxqC,EAAUC,GAAS,KAAK,GAAG,CAAC,GAAK,KAAK,MACnE,KAAK,cAAc,KAAK,iBAAiB,EAAG,EAAI,EACpD,KAAK,IAAI,MAAM,EAEnB,EACAuqC,GAAqB,UAAU,KAAO,UAAY,CAAE,KAAK,IAAI,KAAK,CAAG,EACrEA,GAAqB,UAAU,SAAW,UAAY,CAAE,OAAO,KAAK,GAAI,EAExEA,GAAqB,UAAU,cAAgB,UAAY,CAAE,MAAO,EAAK,EAEzEA,GAAqB,UAAU,cAAgB,UAAY,CACvD,IAAI7Q,EAAS,KAEXjK,EAAQ,KACR,KAAK,kBAAkB,EACvB,WAAW,UAAY,CAAE,OAAOiK,EAAO,cAAc,CAAG,EAAG,EAAE,EAE7D1M,GAAQ,KAAK,GAAI,UAAY,CAAE,OAAOyC,EAAM,GAAG,MAAM,iBAAmB,EAAM,CAAC,EAEnF,SAASyb,GAAO,CACVzb,EAAM,GAAG,MAAM,UACjBA,EAAM,cAAc,EACpBA,EAAM,QAAQ,IAAIA,EAAM,GAAG,QAAQ,aAAcyb,CAAI,EAEzD,CACA,KAAK,QAAQ,IAAI,KAAK,GAAG,QAAQ,aAAcA,CAAI,CACrD,EAEAX,GAAqB,UAAU,iBAAmB,UAAY,CAC5D,IAAIzc,EAAM,KAAK,aAAa,EAC5B,OAAOA,EAAI,YAAc,KAAK,gBAAkBA,EAAI,cAAgB,KAAK,kBACvEA,EAAI,WAAa,KAAK,eAAiBA,EAAI,aAAe,KAAK,eACnE,EAEAyc,GAAqB,UAAU,cAAgB,UAAY,CACzD,GAAI,OAAK,gBAAkB,MAAQ,KAAK,aAAe,CAAC,KAAK,iBAAiB,GAC9E,KAAIzc,EAAM,KAAK,aAAa,EAAGrtB,EAAK,KAAK,GAOzC,GAAI5C,GAAWP,GAAU,KAAK,GAAG,QAAQ,YAAY,QAAU6tC,GAAWrd,EAAI,UAAU,EAAG,CACzF,KAAK,GAAG,iBAAiB,CAAC,KAAM,UAAW,QAAS,EAAG,eAAgB,KAAK,GAAG,CAAC,EAChF,KAAK,KAAK,EACV,KAAK,MAAM,EACX,MACF,CACA,GAAI,MAAK,UACT,MAAK,kBAAkB,EACvB,IAAIzL,EAASyoB,GAASrqC,EAAIqtB,EAAI,WAAYA,EAAI,YAAY,EACtDvJ,EAAOumB,GAASrqC,EAAIqtB,EAAI,UAAWA,EAAI,WAAW,EAClDzL,GAAUkC,GAAQyI,GAAQvsB,EAAI,UAAY,CAC5C40B,GAAa50B,EAAG,IAAK0wB,GAAgB9O,EAAQkC,CAAI,EAAGniB,EAAc,GAC9DigB,EAAO,KAAOkC,EAAK,OAAO9jB,EAAG,MAAM,iBAAmB,GAC5D,CAAC,GACH,EAEA8pC,GAAqB,UAAU,YAAc,UAAY,CACnD,KAAK,gBAAkB,OACzB,aAAa,KAAK,cAAc,EAChC,KAAK,eAAiB,MAGxB,IAAI9pC,EAAK,KAAK,GAAI0P,EAAU1P,EAAG,QAASqtB,EAAMrtB,EAAG,IAAI,IAAI,QAAQ,EAC7D+D,EAAOspB,EAAI,KAAK,EAAGrpB,EAAKqpB,EAAI,GAAG,EAKnC,GAJItpB,EAAK,IAAM,GAAKA,EAAK,KAAO/D,EAAG,UAAU,IACzC+D,EAAO0J,GAAI1J,EAAK,KAAO,EAAGyI,GAAQxM,EAAG,IAAK+D,EAAK,KAAO,CAAC,EAAE,MAAM,GAC/DC,EAAG,IAAMwI,GAAQxM,EAAG,IAAKgE,EAAG,IAAI,EAAE,KAAK,QAAUA,EAAG,KAAOhE,EAAG,SAAS,IACvEgE,EAAKyJ,GAAIzJ,EAAG,KAAO,EAAG,CAAC,GACvBD,EAAK,KAAO2L,EAAQ,UAAY1L,EAAG,KAAO0L,EAAQ,OAAS,EAAK,MAAO,GAE3E,IAAIi7B,EAAW5kB,EAAU6kB,EACrB7mC,EAAK,MAAQ2L,EAAQ,WAAai7B,EAAY5tB,GAAc/c,EAAI+D,EAAK,IAAI,IAAM,GACjFgiB,EAAW9Y,EAAOyC,EAAQ,KAAK,CAAC,EAAE,IAAI,EACtCk7B,EAAWl7B,EAAQ,KAAK,CAAC,EAAE,OAE3BqW,EAAW9Y,EAAOyC,EAAQ,KAAKi7B,CAAS,EAAE,IAAI,EAC9CC,EAAWl7B,EAAQ,KAAKi7B,EAAY,CAAC,EAAE,KAAK,aAE9C,IAAIE,EAAU9tB,GAAc/c,EAAIgE,EAAG,IAAI,EACnCgiB,EAAQ8kB,GASZ,GARID,GAAWn7B,EAAQ,KAAK,OAAS,GACnCsW,EAAStW,EAAQ,OAAS,EAC1Bo7B,GAASp7B,EAAQ,QAAQ,YAEzBsW,EAAS/Y,EAAOyC,EAAQ,KAAKm7B,EAAU,CAAC,EAAE,IAAI,EAAI,EAClDC,GAASp7B,EAAQ,KAAKm7B,EAAU,CAAC,EAAE,KAAK,iBAGtC,CAACD,EAAY,MAAO,GAGxB,QAFIG,GAAU/qC,EAAG,IAAI,WAAWgrC,GAAehrC,EAAI4qC,EAAUE,GAAQ/kB,EAAUC,CAAM,CAAC,EAClFilB,GAAUt+B,GAAW3M,EAAG,IAAKyN,GAAIsY,EAAU,CAAC,EAAGtY,GAAIuY,EAAQxZ,GAAQxM,EAAG,IAAKgmB,CAAM,EAAE,KAAK,MAAM,CAAC,EAC5F+kB,GAAQ,OAAS,GAAKE,GAAQ,OAAS,GAC5C,GAAI5oC,GAAI0oC,EAAO,GAAK1oC,GAAI4oC,EAAO,EAAKF,GAAQ,IAAI,EAAGE,GAAQ,IAAI,EAAGjlB,YACzD+kB,GAAQ,CAAC,GAAKE,GAAQ,CAAC,EAAKF,GAAQ,MAAM,EAAGE,GAAQ,MAAM,EAAGllB,QAChE,OAKT,QAFImlB,GAAW,EAAGC,GAAS,EACvBziB,GAASqiB,GAAQ,CAAC,EAAGK,GAASH,GAAQ,CAAC,EAAGI,GAAc,KAAK,IAAI3iB,GAAO,OAAQ0iB,GAAO,MAAM,EAC1FF,GAAWG,IAAe3iB,GAAO,WAAWwiB,EAAQ,GAAKE,GAAO,WAAWF,EAAQ,GACtF,EAAEA,GAIN,QAHII,GAASjpC,GAAI0oC,EAAO,EAAGQ,GAASlpC,GAAI4oC,EAAO,EAC3CO,GAAY,KAAK,IAAIF,GAAO,QAAUP,GAAQ,QAAU,EAAIG,GAAW,GAClDK,GAAO,QAAUN,GAAQ,QAAU,EAAIC,GAAW,EAAE,EACtEC,GAASK,IACTF,GAAO,WAAWA,GAAO,OAASH,GAAS,CAAC,GAAKI,GAAO,WAAWA,GAAO,OAASJ,GAAS,CAAC,GAChG,EAAEA,GAEN,GAAIJ,GAAQ,QAAU,GAAKE,GAAQ,QAAU,GAAKllB,GAAYhiB,EAAK,KACjE,KAAOmnC,IAAYA,GAAWnnC,EAAK,IAC5BunC,GAAO,WAAWA,GAAO,OAASH,GAAS,CAAC,GAAKI,GAAO,WAAWA,GAAO,OAASJ,GAAS,CAAC,GAClGD,KACAC,KAIJJ,GAAQA,GAAQ,OAAS,CAAC,EAAIO,GAAO,MAAM,EAAGA,GAAO,OAASH,EAAM,EAAE,QAAQ,WAAY,EAAE,EAC5FJ,GAAQ,CAAC,EAAIA,GAAQ,CAAC,EAAE,MAAMG,EAAQ,EAAE,QAAQ,WAAY,EAAE,EAE9D,IAAIO,GAASh+B,GAAIsY,EAAUmlB,EAAQ,EAC/BQ,GAAOj+B,GAAIuY,EAAQilB,GAAQ,OAAS5oC,GAAI4oC,EAAO,EAAE,OAASE,GAAS,CAAC,EACxE,GAAIJ,GAAQ,OAAS,GAAKA,GAAQ,CAAC,GAAKr9B,GAAI+9B,GAAQC,EAAI,EACtD,OAAA9T,GAAa53B,EAAG,IAAK+qC,GAASU,GAAQC,GAAM,QAAQ,EAC7C,EAEX,EAEA5B,GAAqB,UAAU,aAAe,UAAY,CACxD,KAAK,oBAAoB,CAC3B,EACAA,GAAqB,UAAU,MAAQ,UAAY,CACjD,KAAK,oBAAoB,CAC3B,EACAA,GAAqB,UAAU,oBAAsB,UAAY,CAC1D,KAAK,YACV,aAAa,KAAK,cAAc,EAChC,KAAK,UAAY,KACjB,KAAK,cAAc,EACnB,KAAK,IAAI,KAAK,EACd,KAAK,IAAI,MAAM,EACjB,EACAA,GAAqB,UAAU,gBAAkB,UAAY,CACzD,IAAI7Q,EAAS,KAEX,KAAK,gBAAkB,OAC3B,KAAK,eAAiB,WAAW,UAAY,CAE3C,GADAA,EAAO,eAAiB,KACpBA,EAAO,UACT,GAAIA,EAAO,UAAU,KAAQA,EAAO,UAAY,SACzC,QAETA,EAAO,cAAc,CACvB,EAAG,EAAE,EACP,EAEA6Q,GAAqB,UAAU,cAAgB,UAAY,CACvD,IAAI7Q,EAAS,MAEX,KAAK,GAAG,WAAW,GAAK,CAAC,KAAK,YAAY,IAC1C1M,GAAQ,KAAK,GAAI,UAAY,CAAE,OAAO7J,GAAUuW,EAAO,EAAE,CAAG,CAAC,CACnE,EAEA6Q,GAAqB,UAAU,cAAgB,SAAU/rC,EAAM,CAC7DA,EAAK,gBAAkB,OACzB,EAEA+rC,GAAqB,UAAU,WAAa,SAAU1rC,EAAG,CACnDA,EAAE,UAAY,GAAK,KAAK,YAC5BA,EAAE,eAAe,EACZ,KAAK,GAAG,WAAW,GACpBouB,GAAU,KAAK,GAAIoa,EAAc,EAAE,KAAK,GAAI,OAAO,aAAaxoC,EAAE,UAAY,KAAOA,EAAE,QAAUA,EAAE,QAAQ,EAAG,CAAC,EACrH,EAEA0rC,GAAqB,UAAU,gBAAkB,SAAUt+B,EAAK,CAC9D,KAAK,IAAI,gBAAkB,OAAOA,GAAO,UAAU,CACrD,EAEAs+B,GAAqB,UAAU,cAAgB,UAAY,CAAC,EAC5DA,GAAqB,UAAU,cAAgB,UAAY,CAAC,EAE5DA,GAAqB,UAAU,sBAAwB,GAEvD,SAASS,GAASvqC,EAAIgC,EAAK,CACzB,IAAIiX,EAAO6D,GAAgB9c,EAAIgC,EAAI,IAAI,EACvC,GAAI,CAACiX,GAAQA,EAAK,OAAU,OAAO,KACnC,IAAI3R,EAAOkF,GAAQxM,EAAG,IAAKgC,EAAI,IAAI,EAC/B0J,EAAO8Q,GAAgBvD,EAAM3R,EAAMtF,EAAI,IAAI,EAE3CoC,EAAQiD,GAASC,EAAMtH,EAAG,IAAI,SAAS,EAAGilB,EAAO,OACrD,GAAI7gB,EAAO,CACT,IAAIyb,EAAUrb,GAAcJ,EAAOpC,EAAI,EAAE,EACzCijB,EAAOpF,EAAU,EAAI,QAAU,MACjC,CACA,IAAIrW,EAAS8T,GAAuB5R,EAAK,IAAK1J,EAAI,GAAIijB,CAAI,EAC1D,OAAAzb,EAAO,OAASA,EAAO,UAAY,QAAUA,EAAO,IAAMA,EAAO,MAC1DA,CACT,CAEA,SAASkhC,GAAW3sC,EAAM,CACxB,QAAS4tC,EAAO5tC,EAAM4tC,EAAMA,EAAOA,EAAK,WACpC,GAAI,4BAA4B,KAAKA,EAAK,SAAS,EAAK,MAAO,GACnE,MAAO,EACT,CAEA,SAASC,GAAO5pC,EAAK6pC,EAAK,CAAE,OAAIA,IAAO7pC,EAAI,IAAM,IAAeA,CAAI,CAEpE,SAASgpC,GAAehrC,EAAI+D,EAAMC,EAAI+hB,EAAUC,EAAQ,CACtD,IAAIpZ,EAAO,GAAIk/B,EAAU,GAAOnR,EAAU36B,EAAG,IAAI,cAAc,EAAG+rC,EAAiB,GACnF,SAASC,EAAgBlxB,GAAI,CAAE,OAAO,SAAUvJ,GAAQ,CAAE,OAAOA,GAAO,IAAMuJ,EAAI,CAAE,CACpF,SAASmxB,IAAQ,CACXH,IACFl/B,GAAQ+tB,EACJoR,IAAkBn/B,GAAQ+tB,GAC9BmR,EAAUC,EAAiB,GAE/B,CACA,SAASG,GAAQvoC,GAAK,CAChBA,KACFsoC,GAAM,EACNr/B,GAAQjJ,GAEZ,CACA,SAASwoC,GAAKpuC,GAAM,CAClB,GAAIA,GAAK,UAAY,EAAG,CACtB,IAAIquC,GAASruC,GAAK,aAAa,SAAS,EACxC,GAAIquC,GAAQ,CACVF,GAAQE,EAAM,EACd,MACF,CACA,IAAIC,GAAWtuC,GAAK,aAAa,WAAW,EAAGgB,GAC/C,GAAIstC,GAAU,CACZ,IAAIhoC,GAAQrE,EAAG,UAAUyN,GAAIsY,EAAU,CAAC,EAAGtY,GAAIuY,EAAS,EAAG,CAAC,EAAGgmB,EAAgB,CAACK,EAAQ,CAAC,EACrFhoC,GAAM,SAAWtF,GAAQsF,GAAM,CAAC,EAAE,KAAK,CAAC,IACxC6nC,GAAQv/B,GAAW3M,EAAG,IAAKjB,GAAM,KAAMA,GAAM,EAAE,EAAE,KAAK47B,CAAO,CAAC,EAClE,MACF,CACA,GAAI58B,GAAK,aAAa,iBAAiB,GAAK,QAAW,OACvD,IAAIuuC,GAAU,6BAA6B,KAAKvuC,GAAK,QAAQ,EAC7D,GAAI,CAAC,QAAQ,KAAKA,GAAK,QAAQ,GAAKA,GAAK,YAAY,QAAU,EAAK,OAEhEuuC,IAAWL,GAAM,EACrB,QAASptC,GAAI,EAAGA,GAAId,GAAK,WAAW,OAAQc,KACxCstC,GAAKpuC,GAAK,WAAWc,EAAC,CAAC,EAEvB,aAAa,KAAKd,GAAK,QAAQ,IAAKguC,EAAiB,IACrDO,KAAWR,EAAU,GAC3B,MAAW/tC,GAAK,UAAY,GAC1BmuC,GAAQnuC,GAAK,UAAU,QAAQ,UAAW,EAAE,EAAE,QAAQ,UAAW,GAAG,CAAC,CAEzE,CACA,KACEouC,GAAKpoC,CAAI,EACLA,GAAQC,GACZD,EAAOA,EAAK,YACZgoC,EAAiB,GAEnB,OAAOn/B,CACT,CAEA,SAASy9B,GAASrqC,EAAIjC,EAAM+U,EAAQ,CAClC,IAAIy5B,EACJ,GAAIxuC,GAAQiC,EAAG,QAAQ,QAAS,CAE9B,GADAusC,EAAWvsC,EAAG,QAAQ,QAAQ,WAAW8S,CAAM,EAC3C,CAACy5B,EAAY,OAAOX,GAAO5rC,EAAG,QAAQyN,GAAIzN,EAAG,QAAQ,OAAS,CAAC,CAAC,EAAG,EAAI,EAC3EjC,EAAO,KAAM+U,EAAS,CACxB,KACE,KAAKy5B,EAAWxuC,GAAOwuC,EAAWA,EAAS,WAAY,CACrD,GAAI,CAACA,GAAYA,GAAYvsC,EAAG,QAAQ,QAAW,OAAO,KAC1D,GAAIusC,EAAS,YAAcA,EAAS,YAAcvsC,EAAG,QAAQ,QAAW,KAC1E,CAEF,QAASnB,EAAI,EAAGA,EAAImB,EAAG,QAAQ,KAAK,OAAQnB,IAAK,CAC/C,IAAI4X,EAAWzW,EAAG,QAAQ,KAAKnB,CAAC,EAChC,GAAI4X,EAAS,MAAQ81B,EACjB,OAAOC,GAAqB/1B,EAAU1Y,EAAM+U,CAAM,CACxD,CACF,CAEA,SAAS05B,GAAqB/1B,EAAU1Y,EAAM+U,EAAQ,CACpD,IAAI25B,EAAUh2B,EAAS,KAAK,WAAYo1B,EAAM,GAC9C,GAAI,CAAC9tC,GAAQ,CAACqB,EAASqtC,EAAS1uC,CAAI,EAAK,OAAO6tC,GAAOn+B,GAAIR,EAAOwJ,EAAS,IAAI,EAAG,CAAC,EAAG,EAAI,EAC1F,GAAI1Y,GAAQ0uC,IACVZ,EAAM,GACN9tC,EAAO0uC,EAAQ,WAAW35B,CAAM,EAChCA,EAAS,EACL,CAAC/U,GAAM,CACT,IAAIuJ,EAAOmP,EAAS,KAAOpU,GAAIoU,EAAS,IAAI,EAAIA,EAAS,KACzD,OAAOm1B,GAAOn+B,GAAIR,EAAO3F,CAAI,EAAGA,EAAK,KAAK,MAAM,EAAGukC,CAAG,CACxD,CAGF,IAAIa,EAAW3uC,EAAK,UAAY,EAAIA,EAAO,KAAM4uC,EAAU5uC,EAK3D,IAJI,CAAC2uC,GAAY3uC,EAAK,WAAW,QAAU,GAAKA,EAAK,WAAW,UAAY,IAC1E2uC,EAAW3uC,EAAK,WACZ+U,IAAUA,EAAS45B,EAAS,UAAU,SAErCC,EAAQ,YAAcF,GAAWE,EAAUA,EAAQ,WAC1D,IAAI3jC,EAAUyN,EAAS,QAASyxB,EAAOl/B,EAAQ,KAE/C,SAAS4jC,GAAKF,GAAUC,GAAS75B,GAAQ,CACvC,QAASjU,GAAI,GAAIA,IAAKqpC,EAAOA,EAAK,OAAS,GAAIrpC,KAE7C,QADI0D,GAAM1D,GAAI,EAAImK,EAAQ,IAAMk/B,EAAKrpC,EAAC,EAC7ByH,GAAI,EAAGA,GAAI/D,GAAI,OAAQ+D,IAAK,EAAG,CACtC,IAAIumC,GAAUtqC,GAAI+D,GAAI,CAAC,EACvB,GAAIumC,IAAWH,IAAYG,IAAWF,GAAS,CAC7C,IAAIrlC,GAAO2F,EAAOpO,GAAI,EAAI4X,EAAS,KAAOA,EAAS,KAAK5X,EAAC,CAAC,EACtDuE,GAAKb,GAAI+D,EAAC,EAAIwM,GAClB,OAAIA,GAAS,GAAK+5B,IAAWH,MAAYtpC,GAAKb,GAAI+D,IAAKwM,GAAS,EAAI,EAAE,GAC/DrF,GAAInG,GAAMlE,EAAE,CACrB,CACF,CAEJ,CACA,IAAIiB,GAAQuoC,GAAKF,EAAUC,EAAS75B,CAAM,EAC1C,GAAIzO,GAAS,OAAOunC,GAAOvnC,GAAOwnC,CAAG,EAGrC,QAAS3tC,GAAQyuC,EAAQ,YAAalrB,GAAOirB,EAAWA,EAAS,UAAU,OAAS55B,EAAS,EAAG5U,GAAOA,GAAQA,GAAM,YAAa,CAEhI,GADAmG,GAAQuoC,GAAK1uC,GAAOA,GAAM,WAAY,CAAC,EACnCmG,GACA,OAAOunC,GAAOn+B,GAAIpJ,GAAM,KAAMA,GAAM,GAAKod,EAAI,EAAGoqB,CAAG,EAEnDpqB,IAAQvjB,GAAM,YAAY,MAChC,CACA,QAAS0I,GAAS+lC,EAAQ,gBAAiBG,GAASh6B,EAAQlM,GAAQA,GAASA,GAAO,gBAAiB,CAEnG,GADAvC,GAAQuoC,GAAKhmC,GAAQA,GAAO,WAAY,EAAE,EACtCvC,GACA,OAAOunC,GAAOn+B,GAAIpJ,GAAM,KAAMA,GAAM,GAAKyoC,EAAM,EAAGjB,CAAG,EAErDiB,IAAUlmC,GAAO,YAAY,MACnC,CACF,CAIA,IAAImmC,GAAgB,SAAS/sC,EAAI,CAC/B,KAAK,GAAKA,EAEV,KAAK,UAAY,GAKjB,KAAK,YAAc,GAEnB,KAAK,QAAU,IAAImB,GAEnB,KAAK,aAAe,GACpB,KAAK,UAAY,KACjB,KAAK,UAAY,EACnB,EAEA4rC,GAAc,UAAU,KAAO,SAAUr9B,EAAS,CAC9C,IAAIupB,EAAS,KAEXjK,EAAQ,KAAMhvB,EAAK,KAAK,GAC5B,KAAK,YAAY0P,CAAO,EACxB,IAAI7F,EAAK,KAAK,SAEd6F,EAAQ,QAAQ,aAAa,KAAK,QAASA,EAAQ,QAAQ,UAAU,EAGjEvS,IAAO0M,EAAG,MAAM,MAAQ,OAE5BrC,EAAGqC,EAAI,QAAS,UAAY,CACtBpN,GAAMC,GAAc,GAAKu8B,EAAO,eAAgBA,EAAO,aAAe,MAC1EjK,EAAM,KAAK,CACb,CAAC,EAEDxnB,EAAGqC,EAAI,QAAS,SAAUzL,EAAG,CACvB2J,GAAe/H,EAAI5B,CAAC,GAAKkpC,GAAYlpC,EAAG4B,CAAE,IAE9CA,EAAG,MAAM,cAAgB,CAAC,IAAI,KAC9BgvB,EAAM,SAAS,EACjB,CAAC,EAED,SAASge,EAAe5uC,EAAG,CACzB,GAAI,CAAA2J,GAAe/H,EAAI5B,CAAC,EACxB,IAAI4B,EAAG,kBAAkB,EACvB0mC,GAAc,CAAC,SAAU,GAAO,KAAM1mC,EAAG,cAAc,CAAC,CAAC,UAC/CA,EAAG,QAAQ,gBAEhB,CACL,IAAIiwB,EAASuX,GAAexnC,CAAE,EAC9B0mC,GAAc,CAAC,SAAU,GAAM,KAAMzW,EAAO,IAAI,CAAC,EAC7C7xB,EAAE,MAAQ,MACZ4B,EAAG,cAAciwB,EAAO,OAAQ,KAAMtuB,EAAc,GAEpDqtB,EAAM,UAAY,GAClBnlB,EAAG,MAAQomB,EAAO,KAAK,KAAK;AAAA,CAAI,EAChClwB,GAAY8J,CAAE,EAElB,KAXE,QAYEzL,EAAE,MAAQ,QAAS4B,EAAG,MAAM,YAAc,CAAC,IAAI,MACrD,CACAwH,EAAGqC,EAAI,MAAOmjC,CAAc,EAC5BxlC,EAAGqC,EAAI,OAAQmjC,CAAc,EAE7BxlC,EAAGkI,EAAQ,SAAU,QAAS,SAAUtR,EAAG,CACzC,GAAI,EAAAsd,GAAchM,EAAStR,CAAC,GAAK2J,GAAe/H,EAAI5B,CAAC,GACrD,IAAI,CAACyL,EAAG,cAAe,CACrB7J,EAAG,MAAM,cAAgB,CAAC,IAAI,KAC9BgvB,EAAM,MAAM,EACZ,MACF,CAGA,IAAIsF,EAAQ,IAAI,MAAM,OAAO,EAC7BA,EAAM,cAAgBl2B,EAAE,cACxByL,EAAG,cAAcyqB,CAAK,EACxB,CAAC,EAGD9sB,EAAGkI,EAAQ,UAAW,cAAe,SAAUtR,EAAG,CAC3Csd,GAAchM,EAAStR,CAAC,GAAKmK,GAAiBnK,CAAC,CACtD,CAAC,EAEDoJ,EAAGqC,EAAI,mBAAoB,UAAY,CACrC,IAAI7K,EAAQgB,EAAG,UAAU,MAAM,EAC3BgvB,EAAM,WAAaA,EAAM,UAAU,MAAM,MAAM,EACnDA,EAAM,UAAY,CAChB,MAAOhwB,EACP,MAAOgB,EAAG,SAAShB,EAAOgB,EAAG,UAAU,IAAI,EAAG,CAAC,UAAW,sBAAsB,CAAC,CACnF,CACF,CAAC,EACDwH,EAAGqC,EAAI,iBAAkB,UAAY,CAC/BmlB,EAAM,YACRA,EAAM,KAAK,EACXA,EAAM,UAAU,MAAM,MAAM,EAC5BA,EAAM,UAAY,KAEtB,CAAC,CACH,EAEA+d,GAAc,UAAU,YAAc,SAAUE,EAAU,CAExD,KAAK,QAAUlF,GAAe,EAG9B,KAAK,SAAW,KAAK,QAAQ,WAC7B,IAAImF,EAAO,KAAK,GAAG,QACnBxF,GAAoB,KAAK,SAAUwF,EAAK,WAAYA,EAAK,YAAaA,EAAK,cAAc,CAC3F,EAEAH,GAAc,UAAU,yBAA2B,SAAU5C,EAAO,CAE/DA,EACD,KAAK,SAAS,aAAa,aAAcA,CAAK,EAE9C,KAAK,SAAS,gBAAgB,YAAY,CAE9C,EAEA4C,GAAc,UAAU,iBAAmB,UAAY,CAErD,IAAI/sC,EAAK,KAAK,GAAI0P,EAAU1P,EAAG,QAASR,EAAMQ,EAAG,IAC7CwJ,EAASia,GAAiBzjB,CAAE,EAGhC,GAAIA,EAAG,QAAQ,oBAAqB,CAClC,IAAI6oC,EAAUrpB,GAAaxf,EAAIR,EAAI,IAAI,QAAQ,EAAE,KAAM,KAAK,EACxD2tC,EAAUz9B,EAAQ,QAAQ,sBAAsB,EAAG09B,EAAU19B,EAAQ,QAAQ,sBAAsB,EACvGlG,EAAO,MAAQ,KAAK,IAAI,EAAG,KAAK,IAAIkG,EAAQ,QAAQ,aAAe,GAC/Bm5B,EAAQ,IAAMuE,EAAQ,IAAMD,EAAQ,GAAG,CAAC,EAC5E3jC,EAAO,OAAS,KAAK,IAAI,EAAG,KAAK,IAAIkG,EAAQ,QAAQ,YAAc,GAC9Bm5B,EAAQ,KAAOuE,EAAQ,KAAOD,EAAQ,IAAI,CAAC,CAClF,CAEA,OAAO3jC,CACT,EAEAujC,GAAc,UAAU,cAAgB,SAAUM,EAAO,CACvD,IAAIrtC,EAAK,KAAK,GAAI0P,EAAU1P,EAAG,QAC/B1B,EAAqBoR,EAAQ,UAAW29B,EAAM,OAAO,EACrD/uC,EAAqBoR,EAAQ,aAAc29B,EAAM,SAAS,EACtDA,EAAM,OAAS,OACjB,KAAK,QAAQ,MAAM,IAAMA,EAAM,MAAQ,KACvC,KAAK,QAAQ,MAAM,KAAOA,EAAM,OAAS,KAE7C,EAIAN,GAAc,UAAU,MAAQ,SAAUO,EAAQ,CAChD,GAAI,OAAK,oBAAsB,KAAK,WAAaA,GACjD,KAAIttC,EAAK,KAAK,GAEd,GADA,KAAK,UAAY,GACbA,EAAG,kBAAkB,EAAG,CAC1B,KAAK,UAAY,GACjB,IAAItB,EAAUsB,EAAG,aAAa,EAC9B,KAAK,SAAS,MAAQtB,EAClBsB,EAAG,MAAM,SAAWD,GAAY,KAAK,QAAQ,EAC7CtD,GAAMC,GAAc,IAAK,KAAK,aAAegC,EACnD,MAAY4uC,IACV,KAAK,UAAY,KAAK,SAAS,MAAQ,GACnC7wC,GAAMC,GAAc,IAAK,KAAK,aAAe,OAEnD,KAAK,UAAY,GACnB,EAEAqwC,GAAc,UAAU,SAAW,UAAY,CAAE,OAAO,KAAK,QAAS,EAEtEA,GAAc,UAAU,cAAgB,UAAY,CAAE,MAAO,EAAM,EAEnEA,GAAc,UAAU,MAAQ,UAAY,CAC1C,GAAI,KAAK,GAAG,QAAQ,UAAY,aAAe,CAAC1vC,GAAUiC,EAAUC,GAAS,KAAK,QAAQ,CAAC,GAAK,KAAK,UACnG,GAAI,CAAE,KAAK,SAAS,MAAM,CAAG,MACnB,CAAC,CAEf,EAEAwtC,GAAc,UAAU,KAAO,UAAY,CAAE,KAAK,SAAS,KAAK,CAAG,EAEnEA,GAAc,UAAU,cAAgB,UAAY,CAClD,KAAK,QAAQ,MAAM,IAAM,KAAK,QAAQ,MAAM,KAAO,CACrD,EAEAA,GAAc,UAAU,cAAgB,UAAY,CAAE,KAAK,SAAS,CAAG,EAIvEA,GAAc,UAAU,SAAW,UAAY,CAC3C,IAAI9T,EAAS,KAEX,KAAK,aACT,KAAK,QAAQ,IAAI,KAAK,GAAG,QAAQ,aAAc,UAAY,CACzDA,EAAO,KAAK,EACRA,EAAO,GAAG,MAAM,SAAWA,EAAO,SAAS,CACjD,CAAC,CACH,EAKA8T,GAAc,UAAU,SAAW,UAAY,CAC7C,IAAIQ,EAAS,GAAOve,EAAQ,KAC5BA,EAAM,YAAc,GACpB,SAAStb,GAAI,CACX,IAAIiU,EAAUqH,EAAM,KAAK,EACrB,CAACrH,GAAW,CAAC4lB,GAASA,EAAS,GAAMve,EAAM,QAAQ,IAAI,GAAItb,CAAC,IAC1Dsb,EAAM,YAAc,GAAOA,EAAM,SAAS,EAClD,CACAA,EAAM,QAAQ,IAAI,GAAItb,CAAC,CACzB,EAQAq5B,GAAc,UAAU,KAAO,UAAY,CACvC,IAAI9T,EAAS,KAEXj5B,EAAK,KAAK,GAAIgvB,EAAQ,KAAK,SAAUwe,EAAY,KAAK,UAK1D,GAAI,KAAK,oBAAsB,KAAK,WAAa,CAACxtC,EAAG,MAAM,SACtD4J,GAAaolB,CAAK,GAAK,CAACwe,GAAa,CAAC,KAAK,WAC5CxtC,EAAG,WAAW,GAAKA,EAAG,QAAQ,cAAgBA,EAAG,MAAM,OACvD,MAAO,GAEX,IAAI4M,EAAOoiB,EAAM,MAEjB,GAAIpiB,GAAQ4gC,GAAa,CAACxtC,EAAG,kBAAkB,EAAK,MAAO,GAI3D,GAAIvD,GAAMC,GAAc,GAAK,KAAK,eAAiBkQ,GAC/CtP,GAAO,kBAAkB,KAAKsP,CAAI,EACpC,OAAA5M,EAAG,QAAQ,MAAM,MAAM,EAChB,GAGT,GAAIA,EAAG,IAAI,KAAOA,EAAG,QAAQ,kBAAmB,CAC9C,IAAI4S,EAAQhG,EAAK,WAAW,CAAC,EAE7B,GADIgG,GAAS,MAAU,CAAC46B,IAAaA,EAAY,UAC7C56B,GAAS,KAAU,YAAK,MAAM,EAAU,KAAK,GAAG,YAAY,MAAM,CACxE,CAGA,QADI66B,EAAO,EAAGhkC,EAAI,KAAK,IAAI+jC,EAAU,OAAQ5gC,EAAK,MAAM,EACjD6gC,EAAOhkC,GAAK+jC,EAAU,WAAWC,CAAI,GAAK7gC,EAAK,WAAW6gC,CAAI,GAAK,EAAEA,EAE5E,OAAAlhB,GAAQvsB,EAAI,UAAY,CACtB4mC,GAAe5mC,EAAI4M,EAAK,MAAM6gC,CAAI,EAAGD,EAAU,OAASC,EACzC,KAAMxU,EAAO,UAAY,WAAa,IAAI,EAGrDrsB,EAAK,OAAS,KAAQA,EAAK,QAAQ;AAAA,CAAI,EAAI,GAAMoiB,EAAM,MAAQiK,EAAO,UAAY,GAC/EA,EAAO,UAAYrsB,EAEtBqsB,EAAO,YACTA,EAAO,UAAU,MAAM,MAAM,EAC7BA,EAAO,UAAU,MAAQj5B,EAAG,SAASi5B,EAAO,UAAU,MAAOj5B,EAAG,UAAU,IAAI,EAC3C,CAAC,UAAW,sBAAsB,CAAC,EAE1E,CAAC,EACM,EACT,EAEA+sC,GAAc,UAAU,aAAe,UAAY,CAC7C,KAAK,aAAe,KAAK,KAAK,IAAK,KAAK,YAAc,GAC5D,EAEAA,GAAc,UAAU,WAAa,UAAY,CAC3CtwC,GAAMC,GAAc,IAAK,KAAK,aAAe,MACjD,KAAK,SAAS,CAChB,EAEAqwC,GAAc,UAAU,cAAgB,SAAU3uC,EAAG,CACnD,IAAI4wB,EAAQ,KAAMhvB,EAAKgvB,EAAM,GAAItf,EAAU1P,EAAG,QAAS6J,EAAKmlB,EAAM,SAC9DA,EAAM,oBAAsBA,EAAM,mBAAmB,EACzD,IAAIhtB,EAAMqgB,GAAariB,EAAI5B,CAAC,EAAGypB,EAAYnY,EAAQ,SAAS,UAC5D,GAAI,CAAC1N,GAAOjF,EAAU,OAItB,IAAI2wC,EAAQ1tC,EAAG,QAAQ,4BACnB0tC,GAAS1tC,EAAG,IAAI,IAAI,SAASgC,CAAG,GAAK,IACrCwqB,GAAUxsB,EAAI40B,EAAY,EAAE50B,EAAG,IAAK0wB,GAAgB1uB,CAAG,EAAGL,EAAc,EAE5E,IAAIgsC,EAAS9jC,EAAG,MAAM,QAAS+jC,EAAgB5e,EAAM,QAAQ,MAAM,QAC/D6e,GAAa7e,EAAM,QAAQ,aAAa,sBAAsB,EAClEA,EAAM,QAAQ,MAAM,QAAU,mBAC9BnlB,EAAG,MAAM,QAAU;AAAA,cAAiEzL,EAAE,QAAUyvC,GAAW,IAAM,GAAK,cAAgBzvC,EAAE,QAAUyvC,GAAW,KAAO,GAAK;AAAA,oCAA4CpxC,EAAK,2BAA6B,eAAiB;AAAA,gHACxQ,IAAIqxC,GACAnxC,IAAUmxC,GAAajkC,EAAG,cAAc,YAAY,SACxD6F,EAAQ,MAAM,MAAM,EAChB/S,GAAUkN,EAAG,cAAc,YAAY,SAAS,KAAMikC,EAAU,EACpEp+B,EAAQ,MAAM,MAAM,EAEf1P,EAAG,kBAAkB,IAAK6J,EAAG,MAAQmlB,EAAM,UAAY,KAC5DA,EAAM,mBAAqB+e,GAC3Br+B,EAAQ,kBAAoB1P,EAAG,IAAI,IACnC,aAAa0P,EAAQ,kBAAkB,EAKvC,SAASs+B,IAAuB,CAC9B,GAAInkC,EAAG,gBAAkB,KAAM,CAC7B,IAAIuyB,GAAWp8B,EAAG,kBAAkB,EAChCiuC,GAAS,UAAY7R,GAAWvyB,EAAG,MAAQ,IAC/CA,EAAG,MAAQ,SACXA,EAAG,MAAQokC,GACXjf,EAAM,UAAYoN,GAAW,GAAK,SAClCvyB,EAAG,eAAiB,EAAGA,EAAG,aAAeokC,GAAO,OAGhDv+B,EAAQ,kBAAoB1P,EAAG,IAAI,GACrC,CACF,CACA,SAAS+tC,IAAS,CAChB,GAAI/e,EAAM,oBAAsB+e,KAChC/e,EAAM,mBAAqB,GAC3BA,EAAM,QAAQ,MAAM,QAAU4e,EAC9B/jC,EAAG,MAAM,QAAU8jC,EACflxC,GAAMC,EAAa,GAAKgT,EAAQ,WAAW,aAAaA,EAAQ,SAAS,UAAYmY,CAAS,EAG9Fhe,EAAG,gBAAkB,MAAM,EACzB,CAACpN,GAAOA,GAAMC,EAAa,IAAMsxC,GAAqB,EAC1D,IAAInvC,GAAI,EAAG4rC,GAAO,UAAY,CACxB/6B,EAAQ,mBAAqB1P,EAAG,IAAI,KAAO6J,EAAG,gBAAkB,GAChEA,EAAG,aAAe,GAAKmlB,EAAM,WAAa,SAC5CxC,GAAUxsB,EAAIo2B,EAAS,EAAEp2B,CAAE,EAClBnB,KAAM,GACf6Q,EAAQ,mBAAqB,WAAW+6B,GAAM,GAAG,GAEjD/6B,EAAQ,kBAAoB,KAC5BA,EAAQ,MAAM,MAAM,EAExB,EACAA,EAAQ,mBAAqB,WAAW+6B,GAAM,GAAG,CACnD,CACF,CAGA,GADIhuC,GAAMC,GAAc,GAAKsxC,GAAqB,EAC9CrwC,EAAmB,CACrB8K,GAAOrK,CAAC,EACR,IAAI8vC,GAAU,UAAY,CACxBvmC,GAAI,OAAQ,UAAWumC,EAAO,EAC9B,WAAWH,GAAQ,EAAE,CACvB,EACAvmC,EAAG,OAAQ,UAAW0mC,EAAO,CAC/B,MACE,WAAWH,GAAQ,EAAE,CAEzB,EAEAhB,GAAc,UAAU,gBAAkB,SAAUvhC,EAAK,CAClDA,GAAO,KAAK,MAAM,EACvB,KAAK,SAAS,SAAWA,GAAO,WAChC,KAAK,SAAS,SAAW,CAAC,CAACA,CAC7B,EAEAuhC,GAAc,UAAU,cAAgB,UAAY,CAAC,EAErDA,GAAc,UAAU,sBAAwB,GAEhD,SAASoB,GAAaC,EAAUvjC,EAAS,CASvC,GARAA,EAAUA,EAAUtK,GAAQsK,CAAO,EAAI,CAAC,EACxCA,EAAQ,MAAQujC,EAAS,MACrB,CAACvjC,EAAQ,UAAYujC,EAAS,WAC9BvjC,EAAQ,SAAWujC,EAAS,UAC5B,CAACvjC,EAAQ,aAAeujC,EAAS,cACjCvjC,EAAQ,YAAcujC,EAAS,aAG/BvjC,EAAQ,WAAa,KAAM,CAC7B,IAAIwjC,EAAW/uC,EAAUC,GAAS6uC,CAAQ,CAAC,EAC3CvjC,EAAQ,UAAYwjC,GAAYD,GAC9BA,EAAS,aAAa,WAAW,GAAK,MAAQC,GAAY,SAAS,IACvE,CAEA,SAASC,GAAO,CAACF,EAAS,MAAQpuC,EAAG,SAAS,CAAE,CAEhD,IAAIuuC,EACJ,GAAIH,EAAS,OACX5mC,EAAG4mC,EAAS,KAAM,SAAUE,CAAI,EAE5B,CAACzjC,EAAQ,wBAAwB,CACnC,IAAI2jC,EAAOJ,EAAS,KACpBG,EAAaC,EAAK,OAClB,GAAI,CACF,IAAIC,EAAgBD,EAAK,OAAS,UAAY,CAC5CF,EAAK,EACLE,EAAK,OAASD,EACdC,EAAK,OAAO,EACZA,EAAK,OAASC,CAChB,CACF,MAAW,CAAC,CACd,CAGF5jC,EAAQ,WAAa,SAAU7K,EAAI,CACjCA,EAAG,KAAOsuC,EACVtuC,EAAG,YAAc,UAAY,CAAE,OAAOouC,CAAU,EAChDpuC,EAAG,WAAa,UAAY,CAC1BA,EAAG,WAAa,MAChBsuC,EAAK,EACLF,EAAS,WAAW,YAAYpuC,EAAG,kBAAkB,CAAC,EACtDouC,EAAS,MAAM,QAAU,GACrBA,EAAS,OACXzmC,GAAIymC,EAAS,KAAM,SAAUE,CAAI,EAC7B,CAACzjC,EAAQ,wBAA0B,OAAOujC,EAAS,KAAK,QAAU,aAClEA,EAAS,KAAK,OAASG,GAE/B,CACF,EAEAH,EAAS,MAAM,QAAU,OACzB,IAAIpuC,EAAKs7B,GAAW,SAAUv9B,EAAM,CAAE,OAAOqwC,EAAS,WAAW,aAAarwC,EAAMqwC,EAAS,WAAW,CAAG,EACzGvjC,CAAO,EACT,OAAO7K,CACT,CAEA,SAAS0uC,GAAepT,EAAY,CAClCA,EAAW,IAAM3zB,GACjB2zB,EAAW,GAAK9zB,EAChB8zB,EAAW,iBAAmBhM,GAC9BgM,EAAW,IAAMZ,GACjBY,EAAW,WAAa/xB,GACxB+xB,EAAW,YAAc16B,GACzB06B,EAAW,WAAax5B,GACxBw5B,EAAW,WAAan4B,GACxBm4B,EAAW,KAAO55B,GAClB45B,EAAW,OAASzzB,GACpByzB,EAAW,KAAOxlB,GAClBwlB,EAAW,UAAY3K,GACvB2K,EAAW,eAAiBpQ,GAC5BoQ,EAAW,IAAM7tB,GACjB6tB,EAAW,OAAS5tB,GACpB4tB,EAAW,MAAQnxB,GACnBmxB,EAAW,UAAYlxB,GACvBkxB,EAAW,YAAc3wB,GACzB2wB,EAAW,QAAU1wB,GACrB0wB,EAAW,eAAiBtwB,GAC5BswB,EAAW,WAAanwB,GACxBmwB,EAAW,UAAYjwB,GACvBiwB,EAAW,WAAa3vB,GACxB2vB,EAAW,UAAY7vB,GACvB6vB,EAAW,SAAW+D,GACtB/D,EAAW,OAAS4B,GACpB5B,EAAW,QAAU2C,GACrB3C,EAAW,cAAgBwC,GAC3BxC,EAAW,UAAYsC,GACvBtC,EAAW,gBAAkBkC,GAC7BlC,EAAW,aAAexvB,GAC1BwvB,EAAW,iBAAmBtB,GAC9BsB,EAAW,WAAahC,GACxBgC,EAAW,WAAaxC,GACxBwC,EAAW,iBAAmB/yB,GAC9B+yB,EAAW,kBAAoB9yB,GAC/B8yB,EAAW,OAAS7yB,GACpB6yB,EAAW,SAAW57B,GACtB47B,EAAW,SAAWl8B,EACtBk8B,EAAW,QAAUx9B,EACrBw9B,EAAW,SAAW2B,EACxB,CAIA4H,GAAcvJ,EAAU,EAExB0M,GAAiB1M,EAAU,EAG3B,IAAIqT,GAAe,gDAAgD,MAAM,GAAG,EAC5E,QAAShuC,MAAQ+5B,GAAI,UAAiBA,GAAI,UAAU,eAAe/5B,EAAI,GAAKY,GAAQotC,GAAchuC,EAAI,EAAI,IACtG26B,GAAW,UAAU36B,EAAI,EAAK,SAASiuC,EAAQ,CAC/C,OAAO,UAAW,CAAC,OAAOA,EAAO,MAAM,KAAK,IAAK,SAAS,CAAC,CAC7D,EAAGlU,GAAI,UAAU/5B,EAAI,CAAC,GAExB,OAAA0H,GAAWqyB,EAAG,EACdY,GAAW,YAAc,CAAC,SAAYyR,GAAe,gBAAmBjD,EAAoB,EAK5FxO,GAAW,WAAa,SAAShxB,EAAmB,CAC9C,CAACgxB,GAAW,SAAS,MAAQhxB,GAAQ,SAAUgxB,GAAW,SAAS,KAAOhxB,GAC9ED,GAAW,MAAM,KAAM,SAAS,CAClC,EAEAixB,GAAW,WAAa9wB,GAGxB8wB,GAAW,WAAW,OAAQ,UAAY,CAAE,MAAQ,CAAC,MAAO,SAAUxrB,EAAQ,CAAE,OAAOA,EAAO,UAAU,CAAG,CAAC,CAAI,CAAC,EACjHwrB,GAAW,WAAW,aAAc,MAAM,EAI1CA,GAAW,gBAAkB,SAAUhxB,EAAMukC,EAAM,CACjDvT,GAAW,UAAUhxB,CAAI,EAAIukC,CAC/B,EACAvT,GAAW,mBAAqB,SAAUhxB,EAAMukC,EAAM,CACpDnU,GAAI,UAAUpwB,CAAI,EAAIukC,CACxB,EAEAvT,GAAW,aAAe6S,GAE1BO,GAAepT,EAAU,EAEzBA,GAAW,QAAU,UAEdA,EAET,CAAE,IC3pTF,IAAAwT,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EAGC,SAASC,EAAK,CACT,OAAOF,IAAW,UAAY,OAAOC,IAAU,SACjDC,EAAI,IAA+B,EAC5B,OAAO,QAAU,YAAc,OAAO,IAC7C,OAAO,CAAC,sBAAsB,EAAGA,CAAG,EAEpCA,EAAI,UAAU,CAClB,GAAG,SAASC,EAAY,CACxB,aAEAA,EAAW,WAAW,aAAc,SAASC,EAAQC,EAAc,CACjE,IAAIC,EAAaF,EAAO,WACpBG,EAAkBF,EAAa,gBAC/BG,EAAaH,EAAa,OAC1BI,EAAWJ,EAAa,MAAQG,EAChCE,EAAaL,EAAa,aAAe,GACzCM,EAAON,EAAa,WACpBO,EAASP,EAAa,gBAAkB,mBAIxCQ,EAAW,UAAU,CACvB,SAASC,EAAGC,GAAM,CAAC,MAAO,CAAC,KAAMA,GAAM,MAAO,SAAS,CAAE,CACzD,IAAIC,GAAIF,EAAG,WAAW,EAAGG,GAAIH,EAAG,WAAW,EAAGI,GAAIJ,EAAG,WAAW,EAAGK,GAAIL,EAAG,WAAW,EACjFM,GAAWN,EAAG,UAAU,EAAGO,GAAO,CAAC,KAAM,OAAQ,MAAO,MAAM,EAElE,MAAO,CACL,GAAMP,EAAG,IAAI,EAAG,MAASE,GAAG,KAAQA,GAAG,KAAQC,GAAG,GAAMA,GAAG,IAAOA,GAAG,QAAWA,GAChF,OAAUE,GAAG,MAASA,GAAG,SAAYA,GAAG,IAAOL,EAAG,KAAK,EAAG,OAAUI,GAAG,KAAQA,GAAG,MAASA,GAC3F,SAAYJ,EAAG,UAAU,EAAG,IAAOA,EAAG,KAAK,EAAG,MAASA,EAAG,KAAK,EAAG,IAAOA,EAAG,KAAK,EACjF,SAAYA,EAAG,UAAU,EAAG,MAASA,EAAG,OAAO,EAC/C,IAAOA,EAAG,KAAK,EAAG,OAAUA,EAAG,QAAQ,EAAG,KAAQA,EAAG,MAAM,EAAG,QAAWA,EAAG,SAAS,EACrF,GAAMM,GAAU,OAAUA,GAAU,WAAcA,GAClD,KAAQC,GAAM,MAASA,GAAM,KAAQA,GAAM,UAAaA,GAAM,IAAOA,GAAM,SAAYA,GACvF,KAAQP,EAAG,MAAM,EAAG,MAASA,EAAG,OAAO,EAAG,MAASA,EAAG,MAAM,EAC5D,MAASI,GAAG,OAAUJ,EAAG,QAAQ,EAAG,OAAUA,EAAG,QAAQ,EAAG,QAAWI,GACvE,MAASA,EACX,CACF,EAAE,EAEEI,EAAiB,oBACjBC,EAAkB,wFAEtB,SAASC,EAAWC,EAAQ,CAE1B,QADIC,GAAU,GAAOC,GAAMC,GAAQ,IAC3BD,GAAOF,EAAO,KAAK,IAAM,MAAM,CACrC,GAAI,CAACC,GAAS,CACZ,GAAIC,IAAQ,KAAO,CAACC,GAAO,OACvBD,IAAQ,IAAKC,GAAQ,GAChBA,IAASD,IAAQ,MAAKC,GAAQ,GACzC,CACAF,GAAU,CAACA,IAAWC,IAAQ,IAChC,CACF,CAIA,IAAIZ,EAAMc,EACV,SAASC,EAAIC,EAAIC,GAAOC,GAAM,CAC5B,OAAAlB,EAAOgB,EAAIF,EAAUI,GACdD,EACT,CACA,SAASE,EAAUT,EAAQU,GAAO,CAChC,IAAIC,GAAKX,EAAO,KAAK,EACrB,GAAIW,IAAM,KAAOA,IAAM,IACrB,OAAAD,GAAM,SAAWE,EAAYD,EAAE,EACxBD,GAAM,SAASV,EAAQU,EAAK,EAC9B,GAAIC,IAAM,KAAOX,EAAO,MAAM,gCAAgC,EACnE,OAAOK,EAAI,SAAU,QAAQ,EACxB,GAAIM,IAAM,KAAOX,EAAO,MAAM,IAAI,EACvC,OAAOK,EAAI,SAAU,MAAM,EACtB,GAAI,qBAAqB,KAAKM,EAAE,EACrC,OAAON,EAAIM,EAAE,EACR,GAAIA,IAAM,KAAOX,EAAO,IAAI,GAAG,EACpC,OAAOK,EAAI,KAAM,UAAU,EACtB,GAAIM,IAAM,KAAOX,EAAO,MAAM,uCAAuC,EAC1E,OAAOK,EAAI,SAAU,QAAQ,EACxB,GAAI,KAAK,KAAKM,EAAE,EACrB,OAAAX,EAAO,MAAM,kDAAkD,EACxDK,EAAI,SAAU,QAAQ,EACxB,GAAIM,IAAM,IACf,OAAIX,EAAO,IAAI,GAAG,GAChBU,GAAM,SAAWG,EACVA,EAAab,EAAQU,EAAK,GACxBV,EAAO,IAAI,GAAG,GACvBA,EAAO,UAAU,EACVK,EAAI,UAAW,SAAS,GACtBS,GAAkBd,EAAQU,GAAO,CAAC,GAC3CX,EAAWC,CAAM,EACjBA,EAAO,MAAM,mCAAmC,EACzCK,EAAI,SAAU,UAAU,IAE/BL,EAAO,IAAI,GAAG,EACPK,EAAI,WAAY,WAAYL,EAAO,QAAQ,CAAC,GAEhD,GAAIW,IAAM,IACf,OAAAD,GAAM,SAAWK,EACVA,EAAWf,EAAQU,EAAK,EAC1B,GAAIC,IAAM,KAAOX,EAAO,KAAK,GAAK,IACvC,OAAAA,EAAO,UAAU,EACVK,EAAI,OAAQ,MAAM,EACpB,GAAIM,IAAM,KAAOX,EAAO,SAASb,CAAM,EAC5C,OAAOkB,EAAI,WAAY,UAAU,EAC5B,GAAIM,IAAM,KAAOX,EAAO,MAAM,KAAK,GAC9BW,IAAM,KAAOX,EAAO,MAAM,IAAI,GAAK,CAAC,KAAK,KAAKA,EAAO,OAAO,MAAM,EAAGA,EAAO,KAAK,CAAC,EAC5F,OAAAA,EAAO,UAAU,EACVK,EAAI,UAAW,SAAS,EAC1B,GAAIR,EAAe,KAAKc,EAAE,EAS/B,OARIA,IAAM,KAAO,CAACD,GAAM,SAAWA,GAAM,QAAQ,MAAQ,OACnDV,EAAO,IAAI,GAAG,GACZW,IAAM,KAAOA,IAAM,MAAKX,EAAO,IAAI,GAAG,EACjC,cAAc,KAAKW,EAAE,IAC9BX,EAAO,IAAIW,EAAE,EACTA,IAAM,KAAKX,EAAO,IAAIW,EAAE,IAG5BA,IAAM,KAAOX,EAAO,IAAI,GAAG,EAAUK,EAAI,GAAG,EACzCA,EAAI,WAAY,WAAYL,EAAO,QAAQ,CAAC,EAC9C,GAAIb,EAAO,KAAKwB,EAAE,EAAG,CAC1BX,EAAO,SAASb,CAAM,EACtB,IAAI6B,GAAOhB,EAAO,QAAQ,EAC1B,GAAIU,GAAM,UAAY,IAAK,CACzB,GAAItB,EAAS,qBAAqB4B,EAAI,EAAG,CACvC,IAAI3B,GAAKD,EAAS4B,EAAI,EACtB,OAAOX,EAAIhB,GAAG,KAAMA,GAAG,MAAO2B,EAAI,CACpC,CACA,GAAIA,IAAQ,SAAWhB,EAAO,MAAM,2CAA4C,EAAK,EACnF,OAAOK,EAAI,QAAS,UAAWW,EAAI,CACvC,CACA,OAAOX,EAAI,WAAY,WAAYW,EAAI,CACzC,CACF,CAEA,SAASJ,EAAYK,EAAO,CAC1B,OAAO,SAASjB,GAAQU,GAAO,CAC7B,IAAIT,GAAU,GAAOC,GACrB,GAAInB,GAAciB,GAAO,KAAK,GAAK,KAAOA,GAAO,MAAMF,CAAe,EACpE,OAAAY,GAAM,SAAWD,EACVJ,EAAI,iBAAkB,MAAM,EAErC,MAAQH,GAAOF,GAAO,KAAK,IAAM,MAC3B,EAAAE,IAAQe,GAAS,CAAChB,KACtBA,GAAU,CAACA,IAAWC,IAAQ,KAEhC,OAAKD,KAASS,GAAM,SAAWD,GACxBJ,EAAI,SAAU,QAAQ,CAC/B,CACF,CAEA,SAASQ,EAAab,EAAQU,GAAO,CAEnC,QADIQ,GAAW,GAAOP,GACfA,GAAKX,EAAO,KAAK,GAAG,CACzB,GAAIW,IAAM,KAAOO,GAAU,CACzBR,GAAM,SAAWD,EACjB,KACF,CACAS,GAAYP,IAAM,GACpB,CACA,OAAON,EAAI,UAAW,SAAS,CACjC,CAEA,SAASU,EAAWf,EAAQU,GAAO,CAEjC,QADIT,GAAU,GAAOC,IACbA,GAAOF,EAAO,KAAK,IAAM,MAAM,CACrC,GAAI,CAACC,KAAYC,IAAQ,KAAOA,IAAQ,KAAOF,EAAO,IAAI,GAAG,GAAI,CAC/DU,GAAM,SAAWD,EACjB,KACF,CACAR,GAAU,CAACA,IAAWC,IAAQ,IAChC,CACA,OAAOG,EAAI,QAAS,WAAYL,EAAO,QAAQ,CAAC,CAClD,CAEA,IAAImB,EAAW,SAQf,SAASC,EAAapB,EAAQU,GAAO,CAC/BA,GAAM,aAAYA,GAAM,WAAa,MACzC,IAAIW,GAAQrB,EAAO,OAAO,QAAQ,KAAMA,EAAO,KAAK,EACpD,GAAI,EAAAqB,GAAQ,GAEZ,IAAInC,EAAM,CACR,IAAIoC,GAAI,6CAA6C,KAAKtB,EAAO,OAAO,MAAMA,EAAO,MAAOqB,EAAK,CAAC,EAC9FC,KAAGD,GAAQC,GAAE,MACnB,CAGA,QADIC,GAAQ,EAAGC,GAAe,GACrBC,GAAMJ,GAAQ,EAAGI,IAAO,EAAG,EAAEA,GAAK,CACzC,IAAId,GAAKX,EAAO,OAAO,OAAOyB,EAAG,EAC7BC,GAAUP,EAAS,QAAQR,EAAE,EACjC,GAAIe,IAAW,GAAKA,GAAU,EAAG,CAC/B,GAAI,CAACH,GAAO,CAAE,EAAEE,GAAK,KAAO,CAC5B,GAAI,EAAEF,IAAS,EAAG,CAAMZ,IAAM,MAAKa,GAAe,IAAM,KAAO,CACjE,SAAWE,IAAW,GAAKA,GAAU,EACnC,EAAEH,WACOpC,EAAO,KAAKwB,EAAE,EACvBa,GAAe,WACN,UAAU,KAAKb,EAAE,EAC1B,MAAQ,EAAEc,GAAK,CACb,GAAIA,IAAO,EAAG,OACd,IAAIvB,GAAOF,EAAO,OAAO,OAAOyB,GAAM,CAAC,EACvC,GAAIvB,IAAQS,IAAMX,EAAO,OAAO,OAAOyB,GAAM,CAAC,GAAK,KAAM,CAAEA,KAAO,KAAM,CAC1E,SACSD,IAAgB,CAACD,GAAO,CACjC,EAAEE,GACF,KACF,CACF,CACID,IAAgB,CAACD,KAAOb,GAAM,WAAae,IACjD,CAIA,IAAIE,EAAc,CAAC,KAAQ,GAAM,OAAU,GAAM,SAAY,GAAM,OAAU,GAC1D,OAAU,GAAM,KAAQ,GAAM,OAAU,GAAM,iBAAkB,EAAI,EAEvF,SAASC,EAAUC,EAAUC,GAAQxC,GAAMyC,GAAOC,GAAMC,GAAM,CAC5D,KAAK,SAAWJ,EAChB,KAAK,OAASC,GACd,KAAK,KAAOxC,GACZ,KAAK,KAAO0C,GACZ,KAAK,KAAOC,GACRF,IAAS,OAAM,KAAK,MAAQA,GAClC,CAEA,SAASG,EAAQxB,EAAOyB,GAAS,CAC/B,GAAI,CAAClD,EAAY,MAAO,GACxB,QAASmD,GAAI1B,EAAM,UAAW0B,GAAGA,GAAIA,GAAE,KACrC,GAAIA,GAAE,MAAQD,GAAS,MAAO,GAChC,QAASE,GAAK3B,EAAM,QAAS2B,GAAIA,GAAKA,GAAG,KACvC,QAASD,GAAIC,GAAG,KAAMD,GAAGA,GAAIA,GAAE,KAC7B,GAAIA,GAAE,MAAQD,GAAS,MAAO,EAEpC,CAEA,SAASG,EAAQ5B,EAAOH,GAAOjB,GAAMc,GAASJ,GAAQ,CACpD,IAAIuC,GAAK7B,EAAM,GAQf,IALA2B,EAAG,MAAQ3B,EAAO2B,EAAG,OAASrC,GAAQqC,EAAG,OAAS,KAAMA,EAAG,GAAKE,GAAIF,EAAG,MAAQ9B,GAE1EG,EAAM,QAAQ,eAAe,OAAO,IACvCA,EAAM,QAAQ,MAAQ,MAEZ,CACV,IAAI8B,GAAaD,GAAG,OAASA,GAAG,IAAI,EAAIvD,EAAWyD,GAAaC,GAChE,GAAIF,GAAWlD,GAAMc,EAAO,EAAG,CAC7B,KAAMmC,GAAG,QAAUA,GAAGA,GAAG,OAAS,CAAC,EAAE,KACnCA,GAAG,IAAI,EAAE,EACX,OAAIF,EAAG,OAAeA,EAAG,OACrB/C,IAAQ,YAAc4C,EAAQxB,EAAON,EAAO,EAAU,aACnDG,EACT,CACF,CACF,CAIA,IAAI8B,EAAK,CAAC,MAAO,KAAM,OAAQ,KAAM,OAAQ,KAAM,GAAI,IAAI,EAC3D,SAASM,GAAO,CACd,QAASC,EAAI,UAAU,OAAS,EAAGA,GAAK,EAAGA,IAAKP,EAAG,GAAG,KAAK,UAAUO,CAAC,CAAC,CACzE,CACA,SAASpC,GAAO,CACd,OAAAmC,EAAK,MAAM,KAAM,SAAS,EACnB,EACT,CACA,SAASE,EAAOC,EAAMC,GAAM,CAC1B,QAASX,GAAIW,GAAMX,GAAGA,GAAIA,GAAE,KAAM,GAAIA,GAAE,MAAQU,EAAM,MAAO,GAC7D,MAAO,EACT,CACA,SAASE,EAASb,EAAS,CACzB,IAAIzB,GAAQ2B,EAAG,MAEf,GADAA,EAAG,OAAS,MACR,EAACpD,EACL,IAAIyB,GAAM,SACR,GAAIA,GAAM,QAAQ,MAAQ,OAASA,GAAM,SAAWA,GAAM,QAAQ,MAAO,CAEvE,IAAIuC,GAAaC,EAAkBf,EAASzB,GAAM,OAAO,EACzD,GAAIuC,IAAc,KAAM,CACtBvC,GAAM,QAAUuC,GAChB,MACF,CACF,SAAW,CAACJ,EAAOV,EAASzB,GAAM,SAAS,EAAG,CAC5CA,GAAM,UAAY,IAAIyC,EAAIhB,EAASzB,GAAM,SAAS,EAClD,MACF,EAGE9B,EAAa,YAAc,CAACiE,EAAOV,EAASzB,GAAM,UAAU,IAC9DA,GAAM,WAAa,IAAIyC,EAAIhB,EAASzB,GAAM,UAAU,GACxD,CACA,SAASwC,EAAkBf,EAASiB,GAAS,CAC3C,GAAKA,GAEE,GAAIA,GAAQ,MAAO,CACxB,IAAIC,GAAQH,EAAkBf,EAASiB,GAAQ,IAAI,EACnD,OAAKC,GACDA,IAASD,GAAQ,KAAaA,GAC3B,IAAIE,GAAQD,GAAOD,GAAQ,KAAM,EAAI,EAFzB,IAGrB,KAAO,QAAIP,EAAOV,EAASiB,GAAQ,IAAI,EAC9BA,GAEA,IAAIE,GAAQF,GAAQ,KAAM,IAAID,EAAIhB,EAASiB,GAAQ,IAAI,EAAG,EAAK,MATtE,QAAO,IAWX,CAEA,SAASG,EAAWT,EAAM,CACxB,OAAOA,GAAQ,UAAYA,GAAQ,WAAaA,GAAQ,aAAeA,GAAQ,YAAcA,GAAQ,UACvG,CAIA,SAASQ,GAAQtB,EAAMwB,GAAMC,GAAO,CAAE,KAAK,KAAOzB,EAAM,KAAK,KAAOwB,GAAM,KAAK,MAAQC,EAAM,CAC7F,SAASN,EAAIL,EAAM5C,GAAM,CAAE,KAAK,KAAO4C,EAAM,KAAK,KAAO5C,EAAK,CAE9D,IAAIwD,GAAc,IAAIP,EAAI,OAAQ,IAAIA,EAAI,YAAa,IAAI,CAAC,EAC5D,SAASQ,IAAc,CACrBtB,EAAG,MAAM,QAAU,IAAIiB,GAAQjB,EAAG,MAAM,QAASA,EAAG,MAAM,UAAW,EAAK,EAC1EA,EAAG,MAAM,UAAYqB,EACvB,CACA,SAASE,IAAmB,CAC1BvB,EAAG,MAAM,QAAU,IAAIiB,GAAQjB,EAAG,MAAM,QAASA,EAAG,MAAM,UAAW,EAAI,EACzEA,EAAG,MAAM,UAAY,IACvB,CACAsB,GAAY,IAAMC,GAAiB,IAAM,GACzC,SAASC,IAAa,CACpBxB,EAAG,MAAM,UAAYA,EAAG,MAAM,QAAQ,KACtCA,EAAG,MAAM,QAAUA,EAAG,MAAM,QAAQ,IACtC,CACAwB,GAAW,IAAM,GACjB,SAASC,GAAQxE,EAAM2C,GAAM,CAC3B,IAAI8B,GAAS,UAAW,CACtB,IAAIrD,GAAQ2B,EAAG,MAAO2B,GAAStD,GAAM,SACrC,GAAIA,GAAM,QAAQ,MAAQ,OAAQsD,GAAStD,GAAM,QAAQ,aACpD,SAASuD,GAAQvD,GAAM,QAASuD,IAASA,GAAM,MAAQ,KAAOA,GAAM,MAAOA,GAAQA,GAAM,KAC5FD,GAASC,GAAM,SACjBvD,GAAM,QAAU,IAAIkB,EAAUoC,GAAQ3B,EAAG,OAAO,OAAO,EAAG/C,EAAM,KAAMoB,GAAM,QAASuB,EAAI,CAC3F,EACA,OAAA8B,GAAO,IAAM,GACNA,EACT,CACA,SAASG,IAAS,CAChB,IAAIxD,EAAQ2B,EAAG,MACX3B,EAAM,QAAQ,OACZA,EAAM,QAAQ,MAAQ,MACxBA,EAAM,SAAWA,EAAM,QAAQ,UACjCA,EAAM,QAAUA,EAAM,QAAQ,KAElC,CACAwD,GAAO,IAAM,GAEb,SAASC,GAAOC,EAAQ,CACtB,SAASC,GAAI/E,GAAM,CACjB,OAAIA,IAAQ8E,EAAe5D,EAAK,EACvB4D,GAAU,KAAO9E,IAAQ,KAAOA,IAAQ,KAAOA,IAAQ,IAAYqD,EAAK,EACrEnC,EAAK6D,EAAG,CACtB,CACA,OAAOA,EACT,CAEA,SAAS3B,GAAUpD,EAAMgF,GAAO,CAC9B,OAAIhF,GAAQ,MAAckB,EAAKsD,GAAQ,SAAUQ,EAAK,EAAGC,GAAQJ,GAAO,GAAG,EAAGD,EAAM,EAChF5E,GAAQ,YAAoBkB,EAAKsD,GAAQ,MAAM,EAAGU,GAAW9B,GAAWwB,EAAM,EAC9E5E,GAAQ,YAAoBkB,EAAKsD,GAAQ,MAAM,EAAGpB,GAAWwB,EAAM,EACnE5E,GAAQ,YAAoB+C,EAAG,OAAO,MAAM,QAAS,EAAK,EAAI7B,EAAK,EAAIA,EAAKsD,GAAQ,MAAM,EAAGW,GAAiBN,GAAO,GAAG,EAAGD,EAAM,EACjI5E,GAAQ,WAAmBkB,EAAK2D,GAAO,GAAG,CAAC,EAC3C7E,GAAQ,IAAYkB,EAAKsD,GAAQ,GAAG,EAAGF,GAAkBH,GAAOS,GAAQL,EAAU,EAClFvE,GAAQ,IAAYkB,EAAK,EACzBlB,GAAQ,MACN+C,EAAG,MAAM,QAAQ,MAAQ,QAAUA,EAAG,MAAM,GAAGA,EAAG,MAAM,GAAG,OAAS,CAAC,GAAK6B,IAC5E7B,EAAG,MAAM,GAAG,IAAI,EAAE,EACb7B,EAAKsD,GAAQ,MAAM,EAAGU,GAAW9B,GAAWwB,GAAQQ,EAAS,GAElEpF,GAAQ,WAAmBkB,EAAKmE,EAAW,EAC3CrF,GAAQ,MAAckB,EAAKsD,GAAQ,MAAM,EAAGF,GAAkBgB,GAASlC,GAAWmB,GAAYK,EAAM,EACpG5E,GAAQ,SAAYJ,GAAQoF,IAAS,aACvCjC,EAAG,OAAS,UACL7B,EAAKsD,GAAQ,OAAQxE,GAAQ,QAAUA,EAAOgF,EAAK,EAAGO,GAAWX,EAAM,GAE5E5E,GAAQ,WACNJ,GAAQoF,IAAS,WACnBjC,EAAG,OAAS,UACL7B,EAAKkC,EAAS,GACZxD,IAASoF,IAAS,UAAYA,IAAS,QAAUA,IAAS,SAAWjC,EAAG,OAAO,MAAM,SAAU,EAAK,GAC7GA,EAAG,OAAS,UACRiC,IAAS,OAAe9D,EAAKsE,EAAO,EAC/BR,IAAS,OAAe9D,EAAKuE,GAAUZ,GAAO,UAAU,EAAGa,GAAUb,GAAO,GAAG,CAAC,EAC7E3D,EAAKsD,GAAQ,MAAM,EAAGmB,GAASd,GAAO,GAAG,EAAGL,GAAQ,GAAG,EAAGL,GAAOS,GAAQA,EAAM,GAClFhF,GAAQoF,IAAS,aAC1BjC,EAAG,OAAS,UACL7B,EAAKsD,GAAQ,MAAM,EAAGrB,GAAYC,GAAWwB,EAAM,GACjDhF,GAAQoF,IAAS,YAC1BjC,EAAG,OAAS,UACL7B,EAAKkC,EAAS,GAEdlC,EAAKsD,GAAQ,MAAM,EAAGoB,EAAU,EAGvC5F,GAAQ,SAAiBkB,EAAKsD,GAAQ,MAAM,EAAGU,GAAWL,GAAO,GAAG,EAAGL,GAAQ,IAAK,QAAQ,EAAGF,GACjEH,GAAOS,GAAQA,GAAQL,EAAU,EAC/DvE,GAAQ,OAAekB,EAAKiC,GAAY0B,GAAO,GAAG,CAAC,EACnD7E,GAAQ,UAAkBkB,EAAK2D,GAAO,GAAG,CAAC,EAC1C7E,GAAQ,QAAgBkB,EAAKsD,GAAQ,MAAM,EAAGH,GAAawB,GAAmBzC,GAAWwB,GAAQL,EAAU,EAC3GvE,GAAQ,SAAiBkB,EAAKsD,GAAQ,MAAM,EAAGsB,GAAalB,EAAM,EAClE5E,GAAQ,SAAiBkB,EAAKsD,GAAQ,MAAM,EAAGuB,GAAanB,EAAM,EAClE5E,GAAQ,QAAgBkB,EAAKkC,EAAS,EACtC4B,IAAS,IAAY9D,EAAKiC,GAAYC,EAAS,EAC5CC,EAAKmB,GAAQ,MAAM,EAAGrB,GAAY0B,GAAO,GAAG,EAAGD,EAAM,CAC9D,CACA,SAASiB,GAAkB7F,EAAM,CAC/B,GAAIA,GAAQ,IAAK,OAAOkB,EAAK8E,GAAQnB,GAAO,GAAG,CAAC,CAClD,CACA,SAAS1B,GAAWnD,EAAMgF,GAAO,CAC/B,OAAOiB,GAAgBjG,EAAMgF,GAAO,EAAK,CAC3C,CACA,SAASkB,GAAkBlG,EAAMgF,GAAO,CACtC,OAAOiB,GAAgBjG,EAAMgF,GAAO,EAAI,CAC1C,CACA,SAASE,GAAUlF,EAAM,CACvB,OAAIA,GAAQ,IAAYqD,EAAK,EACtBnC,EAAKsD,GAAQ,GAAG,EAAGW,GAAiBN,GAAO,GAAG,EAAGD,EAAM,CAChE,CACA,SAASqB,GAAgBjG,EAAMgF,GAAOmB,GAAS,CAC7C,GAAIpD,EAAG,MAAM,YAAcA,EAAG,OAAO,MAAO,CAC1C,IAAIqD,GAAOD,GAAUE,GAAmBC,GACxC,GAAItG,GAAQ,IAAK,OAAOkB,EAAKmD,GAAaG,GAAQ,GAAG,EAAG+B,GAASP,GAAQ,GAAG,EAAGpB,GAAQC,GAAO,IAAI,EAAGuB,GAAM7B,EAAU,EAChH,GAAIvE,GAAQ,WAAY,OAAOqD,EAAKgB,GAAasB,GAASd,GAAO,IAAI,EAAGuB,GAAM7B,EAAU,CAC/F,CAEA,IAAIiC,GAAUL,GAAUM,GAAuBC,GAC/C,OAAIrE,EAAY,eAAerC,CAAI,EAAUkB,EAAKsF,EAAO,EACrDxG,GAAQ,WAAmBkB,EAAKmE,GAAamB,EAAO,EACpDxG,GAAQ,SAAYJ,GAAQoF,IAAS,aAAgBjC,EAAG,OAAS,UAAkB7B,EAAKsD,GAAQ,MAAM,EAAGmC,GAAiB/B,EAAM,GAChI5E,GAAQ,aAAeA,GAAQ,QAAgBkB,EAAKiF,GAAUD,GAAoB/C,EAAU,EAC5FnD,GAAQ,IAAYkB,EAAKsD,GAAQ,GAAG,EAAGW,GAAiBN,GAAO,GAAG,EAAGD,GAAQ4B,EAAO,EACpFxG,GAAQ,YAAcA,GAAQ,SAAiBkB,EAAKiF,GAAUD,GAAoB/C,EAAU,EAC5FnD,GAAQ,IAAYkB,EAAKsD,GAAQ,GAAG,EAAGoC,GAAchC,GAAQ4B,EAAO,EACpExG,GAAQ,IAAY6G,GAAaC,GAAS,IAAK,KAAMN,EAAO,EAC5DxG,GAAQ,QAAgBqD,EAAK0D,GAAOP,EAAO,EAC3CxG,GAAQ,MAAckB,EAAK8F,GAAYb,EAAO,CAAC,EAC5CjF,EAAK,CACd,CACA,SAASiE,GAAgBnF,EAAM,CAC7B,OAAIA,EAAK,MAAM,YAAY,EAAUqD,EAAK,EACnCA,EAAKF,EAAU,CACxB,CAEA,SAASuD,GAAmB1G,EAAMgF,GAAO,CACvC,OAAIhF,GAAQ,IAAYkB,EAAKiE,EAAe,EACrCsB,GAAqBzG,EAAMgF,GAAO,EAAK,CAChD,CACA,SAASyB,GAAqBzG,EAAMgF,GAAOmB,GAAS,CAClD,IAAIc,GAAKd,IAAW,GAAQO,GAAqBD,GAC7CS,GAAOf,IAAW,GAAQhD,GAAa+C,GAC3C,GAAIlG,GAAQ,KAAM,OAAOkB,EAAKmD,GAAa8B,GAAUE,GAAmBC,GAAW/B,EAAU,EAC7F,GAAIvE,GAAQ,WACV,MAAI,UAAU,KAAKgF,EAAK,GAAKpF,GAAQoF,IAAS,IAAY9D,EAAK+F,EAAE,EAC7DrH,GAAQoF,IAAS,KAAOjC,EAAG,OAAO,MAAM,2BAA4B,EAAK,EACpE7B,EAAKsD,GAAQ,GAAG,EAAG+B,GAASb,GAAU,GAAG,EAAGd,GAAQqC,EAAE,EAC3DjC,IAAS,IAAY9D,EAAKiC,GAAY0B,GAAO,GAAG,EAAGqC,EAAI,EACpDhG,EAAKgG,EAAI,EAElB,GAAIlH,GAAQ,QAAW,OAAOqD,EAAK0D,GAAOE,EAAE,EAC5C,GAAIjH,GAAQ,IACZ,IAAIA,GAAQ,IAAK,OAAO6G,GAAaX,GAAmB,IAAK,OAAQe,EAAE,EACvE,GAAIjH,GAAQ,IAAK,OAAOkB,EAAKiG,GAAUF,EAAE,EACzC,GAAIjH,GAAQ,IAAK,OAAOkB,EAAKsD,GAAQ,GAAG,EAAGW,GAAiBN,GAAO,GAAG,EAAGD,GAAQqC,EAAE,EACnF,GAAIrH,GAAQoF,IAAS,KAAQ,OAAAjC,EAAG,OAAS,UAAkB7B,EAAKwE,GAAUuB,EAAE,EAC5E,GAAIjH,GAAQ,SACV,OAAA+C,EAAG,MAAM,SAAWA,EAAG,OAAS,WAChCA,EAAG,OAAO,OAAOA,EAAG,OAAO,IAAMA,EAAG,OAAO,MAAQ,CAAC,EAC7C7B,EAAKgG,EAAI,EAEpB,CACA,SAASH,GAAM/G,EAAMgF,GAAO,CAC1B,OAAIhF,GAAQ,QAAgBqD,EAAK,EAC7B2B,GAAM,MAAMA,GAAM,OAAS,CAAC,GAAK,KAAa9D,EAAK6F,EAAK,EACrD7F,EAAKiE,GAAiBiC,EAAa,CAC5C,CACA,SAASA,GAAcpH,EAAM,CAC3B,GAAIA,GAAQ,IACV,OAAA+C,EAAG,OAAS,WACZA,EAAG,MAAM,SAAWtB,EACbP,EAAK6F,EAAK,CAErB,CACA,SAAST,GAAUtG,EAAM,CACvB,OAAA8B,EAAaiB,EAAG,OAAQA,EAAG,KAAK,EACzBM,EAAKrD,GAAQ,IAAMoD,GAAYD,EAAU,CAClD,CACA,SAASkD,GAAiBrG,EAAM,CAC9B,OAAA8B,EAAaiB,EAAG,OAAQA,EAAG,KAAK,EACzBM,EAAKrD,GAAQ,IAAMoD,GAAY8C,EAAiB,CACzD,CACA,SAASc,GAAYb,EAAS,CAC5B,OAAO,SAASnG,GAAM,CACpB,OAAIA,IAAQ,IAAYkB,EAAKiF,EAAUkB,GAAgBC,EAAM,EACpDtH,IAAQ,YAAcJ,EAAasB,EAAKqG,GAAepB,EAAUM,GAAuBC,EAAkB,EACvGrD,EAAK8C,EAAUD,GAAoB/C,EAAU,CAC3D,CACF,CACA,SAASmE,GAAOE,EAAGxC,GAAO,CACxB,GAAIA,IAAS,SAAY,OAAAjC,EAAG,OAAS,UAAkB7B,EAAKwF,EAAkB,CAChF,CACA,SAASW,GAAcG,EAAGxC,GAAO,CAC/B,GAAIA,IAAS,SAAY,OAAAjC,EAAG,OAAS,UAAkB7B,EAAKuF,EAAoB,CAClF,CACA,SAASb,GAAW5F,EAAM,CACxB,OAAIA,GAAQ,IAAYkB,EAAK0D,GAAQxB,EAAS,EACvCC,EAAKqD,GAAoB7B,GAAO,GAAG,EAAGD,EAAM,CACrD,CACA,SAASuC,GAASnH,EAAM,CACtB,GAAIA,GAAQ,WAAa,OAAA+C,EAAG,OAAS,WAAmB7B,EAAK,CAC/D,CACA,SAAS4F,GAAQ9G,EAAMgF,GAAO,CAC5B,GAAIhF,GAAQ,QACV,OAAA+C,EAAG,OAAS,WACL7B,EAAK4F,EAAO,EACd,GAAI9G,GAAQ,YAAc+C,EAAG,OAAS,UAAW,CAEtD,GADAA,EAAG,OAAS,WACRiC,IAAS,OAASA,IAAS,MAAO,OAAO9D,EAAKuG,EAAY,EAC9D,IAAIzF,GACJ,OAAIpC,GAAQmD,EAAG,MAAM,YAAcA,EAAG,OAAO,QAAUf,GAAIe,EAAG,OAAO,MAAM,WAAY,EAAK,KAC1FA,EAAG,MAAM,WAAaA,EAAG,OAAO,IAAMf,GAAE,CAAC,EAAE,QACtCd,EAAKwG,EAAS,CACvB,KAAO,IAAI1H,GAAQ,UAAYA,GAAQ,SACrC,OAAA+C,EAAG,OAAStD,EAAa,WAAcsD,EAAG,MAAQ,YAC3C7B,EAAKwG,EAAS,EAChB,GAAI1H,GAAQ,iBACjB,OAAOkB,EAAKwG,EAAS,EAChB,GAAI9H,GAAQqE,EAAWe,EAAK,EACjC,OAAAjC,EAAG,OAAS,UACL7B,EAAK4F,EAAO,EACd,GAAI9G,GAAQ,IACjB,OAAOkB,EAAKiC,GAAYwE,GAAW9C,GAAO,GAAG,EAAG6C,EAAS,EACpD,GAAI1H,GAAQ,SACjB,OAAOkB,EAAKgF,GAAmBwB,EAAS,EACnC,GAAI1C,IAAS,IAClB,OAAAjC,EAAG,OAAS,UACL7B,EAAK4F,EAAO,EACd,GAAI9G,GAAQ,IACjB,OAAOqD,EAAKqE,EAAS,EAEzB,CACA,SAASD,GAAazH,EAAM,CAC1B,OAAIA,GAAQ,WAAmBqD,EAAKqE,EAAS,GAC7C3E,EAAG,OAAS,WACL7B,EAAKmE,EAAW,EACzB,CACA,SAASqC,GAAU1H,EAAM,CACvB,GAAIA,GAAQ,IAAK,OAAOkB,EAAKgF,EAAiB,EAC9C,GAAIlG,GAAQ,IAAK,OAAOqD,EAAKgC,EAAW,CAC1C,CACA,SAASkB,GAASqB,EAAMC,GAAKC,GAAK,CAChC,SAASC,GAAQ/H,GAAMgF,GAAO,CAC5B,GAAI8C,GAAMA,GAAI,QAAQ9H,EAAI,EAAI,GAAKA,IAAQ,IAAK,CAC9C,IAAIgI,GAAMjF,EAAG,MAAM,QACnB,OAAIiF,GAAI,MAAQ,SAAQA,GAAI,KAAOA,GAAI,KAAO,GAAK,GAC5C9G,EAAK,SAASlB,GAAMgF,GAAO,CAChC,OAAIhF,IAAQ6H,IAAO7C,IAAS6C,GAAYxE,EAAK,EACtCA,EAAKuE,CAAI,CAClB,EAAGG,EAAO,CACZ,CACA,OAAI/H,IAAQ6H,IAAO7C,IAAS6C,GAAY3G,EAAK,EACzC4G,IAAOA,GAAI,QAAQ,GAAG,EAAI,GAAWzE,EAAKuE,CAAI,EAC3C1G,EAAK2D,GAAOgD,EAAG,CAAC,CACzB,CACA,OAAO,SAAS7H,GAAMgF,GAAO,CAC3B,OAAIhF,IAAQ6H,IAAO7C,IAAS6C,GAAY3G,EAAK,EACtCmC,EAAKuE,EAAMG,EAAO,CAC3B,CACF,CACA,SAASlB,GAAae,EAAMC,GAAKlF,GAAM,CACrC,QAASW,GAAI,EAAGA,GAAI,UAAU,OAAQA,KACpCP,EAAG,GAAG,KAAK,UAAUO,EAAC,CAAC,EACzB,OAAOpC,EAAKsD,GAAQqD,GAAKlF,EAAI,EAAG4D,GAASqB,EAAMC,EAAG,EAAGjD,EAAM,CAC7D,CACA,SAAST,GAAMnE,EAAM,CACnB,OAAIA,GAAQ,IAAYkB,EAAK,EACtBmC,EAAKD,GAAWe,EAAK,CAC9B,CACA,SAASwD,GAAU3H,EAAMgF,GAAO,CAC9B,GAAIpF,EAAM,CACR,GAAII,GAAQ,IAAK,OAAOkB,EAAKwE,EAAQ,EACrC,GAAIV,IAAS,IAAK,OAAO9D,EAAKyG,EAAS,CACzC,CACF,CACA,SAASM,GAAcjI,EAAMgF,GAAO,CAClC,GAAIpF,IAASI,GAAQ,KAAOgF,IAAS,MAAO,OAAO9D,EAAKwE,EAAQ,CAClE,CACA,SAASwC,GAAalI,EAAM,CAC1B,GAAIJ,GAAQI,GAAQ,IAClB,OAAI+C,EAAG,OAAO,MAAM,iBAAkB,EAAK,EAAU7B,EAAKiC,GAAYgF,GAAMzC,EAAQ,EACxExE,EAAKwE,EAAQ,CAE7B,CACA,SAASyC,GAAKX,EAAGxC,GAAO,CACtB,GAAIA,IAAS,KACX,OAAAjC,EAAG,OAAS,UACL7B,EAAK,CAEhB,CACA,SAASwE,GAAS1F,EAAMgF,GAAO,CAC7B,GAAIA,IAAS,SAAWA,IAAS,UAAYA,IAAS,SAAWA,IAAS,WACxE,OAAAjC,EAAG,OAAS,UACL7B,EAAK8D,IAAS,SAAWkB,GAAoBR,EAAQ,EAE9D,GAAI1F,GAAQ,YAAcgF,IAAS,OACjC,OAAAjC,EAAG,OAAS,OACL7B,EAAKkH,EAAS,EAEvB,GAAIpD,IAAS,KAAOA,IAAS,IAAK,OAAO9D,EAAKwE,EAAQ,EACtD,GAAI1F,GAAQ,UAAYA,GAAQ,UAAYA,GAAQ,OAAQ,OAAOkB,EAAKkH,EAAS,EACjF,GAAIpI,GAAQ,IAAK,OAAOkB,EAAKsD,GAAQ,GAAG,EAAG+B,GAASb,GAAU,IAAK,GAAG,EAAGd,GAAQwD,EAAS,EAC1F,GAAIpI,GAAQ,IAAK,OAAOkB,EAAKsD,GAAQ,GAAG,EAAG6D,EAAWzD,GAAQwD,EAAS,EACvE,GAAIpI,GAAQ,IAAK,OAAOkB,EAAKqF,GAAS+B,GAAS,GAAG,EAAGC,GAAiBH,EAAS,EAC/E,GAAIpI,GAAQ,IAAK,OAAOkB,EAAKqF,GAASb,GAAU,GAAG,EAAGA,EAAQ,EAC9D,GAAI1F,GAAQ,QAAW,OAAOqD,EAAKmF,GAAWJ,EAAS,CACzD,CACA,SAASG,GAAgBvI,EAAM,CAC7B,GAAIA,GAAQ,KAAM,OAAOkB,EAAKwE,EAAQ,CACxC,CACA,SAAS2C,EAAUrI,EAAM,CACvB,OAAIA,EAAK,MAAM,UAAU,EAAUkB,EAAK,EACpClB,GAAQ,KAAOA,GAAQ,IAAYkB,EAAKmH,CAAS,EAC9ChF,EAAKoF,GAAUJ,CAAS,CACjC,CACA,SAASI,GAASzI,EAAMgF,GAAO,CAC7B,GAAIhF,GAAQ,YAAc+C,EAAG,OAAS,UACpC,OAAAA,EAAG,OAAS,WACL7B,EAAKuH,EAAQ,EACf,GAAIzD,IAAS,KAAOhF,GAAQ,UAAYA,GAAQ,SACrD,OAAOkB,EAAKuH,EAAQ,EACf,GAAIzI,GAAQ,IACjB,OAAOkB,EAAKwE,EAAQ,EACf,GAAI1F,GAAQ,IACjB,OAAOkB,EAAK2D,GAAO,UAAU,EAAGoD,GAAepD,GAAO,GAAG,EAAG4D,EAAQ,EAC/D,GAAIzI,GAAQ,IACjB,OAAOqD,EAAKqF,GAAcD,EAAQ,EAC7B,GAAI,CAACzI,EAAK,MAAM,YAAY,EACjC,OAAOkB,EAAK,CAEhB,CACA,SAASsH,GAAUxI,EAAMgF,GAAO,CAC9B,OAAIhF,GAAQ,QAAgBqD,EAAK,EAC7B2B,GAAM,MAAMA,GAAM,OAAS,CAAC,GAAK,KAAa9D,EAAKsH,EAAS,EACzDtH,EAAKwE,GAAUiD,EAAiB,CACzC,CACA,SAASA,GAAkB3I,EAAM,CAC/B,GAAIA,GAAQ,IACV,OAAA+C,EAAG,OAAS,WACZA,EAAG,MAAM,SAAWtB,EACbP,EAAKsH,EAAS,CAEzB,CACA,SAASF,GAAQtI,EAAMgF,GAAO,CAC5B,OAAIhF,GAAQ,YAAc+C,EAAG,OAAO,MAAM,WAAY,EAAK,GAAKiC,IAAS,IAAY9D,EAAKoH,EAAO,EAC7FtI,GAAQ,IAAYkB,EAAKwE,EAAQ,EACjC1F,GAAQ,SAAiBkB,EAAKoH,EAAO,EAClCjF,EAAKqC,EAAQ,CACtB,CACA,SAAS0C,GAAUpI,EAAMgF,GAAO,CAC9B,GAAIA,IAAS,IAAK,OAAO9D,EAAKsD,GAAQ,GAAG,EAAG+B,GAASb,GAAU,GAAG,EAAGd,GAAQwD,EAAS,EACtF,GAAIpD,IAAS,KAAOhF,GAAQ,KAAOgF,IAAS,IAAK,OAAO9D,EAAKwE,EAAQ,EACrE,GAAI1F,GAAQ,IAAK,OAAOkB,EAAKwE,GAAUb,GAAO,GAAG,EAAGuD,EAAS,EAC7D,GAAIpD,IAAS,WAAaA,IAAS,aAAgB,OAAAjC,EAAG,OAAS,UAAkB7B,EAAKwE,EAAQ,EAC9F,GAAIV,IAAS,IAAK,OAAO9D,EAAKwE,GAAUb,GAAO,GAAG,EAAGa,EAAQ,CAC/D,CACA,SAAS6B,GAAcC,EAAGxC,GAAO,CAC/B,GAAIA,IAAS,IAAK,OAAO9D,EAAKsD,GAAQ,GAAG,EAAG+B,GAASb,GAAU,GAAG,EAAGd,GAAQwD,EAAS,CACxF,CACA,SAASQ,IAAY,CACnB,OAAOvF,EAAKqC,GAAUmD,EAAgB,CACxC,CACA,SAASA,GAAiBrB,EAAGxC,GAAO,CAClC,GAAIA,IAAS,IAAK,OAAO9D,EAAKwE,EAAQ,CACxC,CACA,SAAST,GAAOuC,EAAGxC,GAAO,CACxB,OAAIA,IAAS,QAASjC,EAAG,OAAS,UAAkB7B,EAAKsE,EAAO,GACzDnC,EAAKsC,GAASgC,GAAWmB,GAAaC,EAAU,CACzD,CACA,SAASpD,GAAQ3F,EAAMgF,GAAO,CAC5B,GAAIpF,GAAQqE,EAAWe,EAAK,EAAK,OAAAjC,EAAG,OAAS,UAAkB7B,EAAKyE,EAAO,EAC3E,GAAI3F,GAAQ,WAAc,OAAA0D,EAASsB,EAAK,EAAU9D,EAAK,EACvD,GAAIlB,GAAQ,SAAU,OAAOkB,EAAKyE,EAAO,EACzC,GAAI3F,GAAQ,IAAK,OAAO6G,GAAamC,GAAY,GAAG,EACpD,GAAIhJ,GAAQ,IAAK,OAAO6G,GAAaoC,GAAa,GAAG,CACvD,CACA,SAASA,GAAYjJ,EAAMgF,GAAO,CAChC,OAAIhF,GAAQ,YAAc,CAAC+C,EAAG,OAAO,MAAM,QAAS,EAAK,GACvDW,EAASsB,EAAK,EACP9D,EAAK4H,EAAW,IAErB9I,GAAQ,aAAY+C,EAAG,OAAS,YAChC/C,GAAQ,SAAiBkB,EAAKyE,EAAO,EACrC3F,GAAQ,IAAYqD,EAAK,EACzBrD,GAAQ,IAAYkB,EAAKiC,GAAY0B,GAAO,GAAG,EAAGA,GAAO,GAAG,EAAGoE,EAAW,EACvE/H,EAAK2D,GAAO,GAAG,EAAGc,GAASmD,EAAW,EAC/C,CACA,SAASE,IAAa,CACpB,OAAO3F,EAAKsC,GAASmD,EAAW,CAClC,CACA,SAASA,GAAYI,EAAOlE,GAAO,CACjC,GAAIA,IAAS,IAAK,OAAO9D,EAAKgF,EAAiB,CACjD,CACA,SAAS6C,GAAW/I,EAAM,CACxB,GAAIA,GAAQ,IAAK,OAAOkB,EAAK+D,EAAM,CACrC,CACA,SAASG,GAAUpF,EAAMgF,GAAO,CAC9B,GAAIhF,GAAQ,aAAegF,IAAS,OAAQ,OAAO9D,EAAKsD,GAAQ,OAAQ,MAAM,EAAGpB,GAAWwB,EAAM,CACpG,CACA,SAASU,GAAQtF,EAAMgF,GAAO,CAC5B,GAAIA,IAAS,QAAS,OAAO9D,EAAKoE,EAAO,EACzC,GAAItF,GAAQ,IAAK,OAAOkB,EAAKsD,GAAQ,GAAG,EAAG2E,GAAUvE,EAAM,CAC7D,CACA,SAASuE,GAASnJ,EAAM,CACtB,OAAIA,GAAQ,MAAckB,EAAK+D,GAAQmE,EAAQ,EAC3CpJ,GAAQ,WAAmBkB,EAAKkI,EAAQ,EACrC/F,EAAK+F,EAAQ,CACtB,CACA,SAASA,GAASpJ,EAAMgF,GAAO,CAC7B,OAAIhF,GAAQ,IAAYkB,EAAK,EACzBlB,GAAQ,IAAYkB,EAAKkI,EAAQ,EACjCpE,IAAS,MAAQA,IAAS,MAAQjC,EAAG,OAAS,UAAkB7B,EAAKiC,GAAYiG,EAAQ,GACtF/F,EAAKF,GAAYiG,EAAQ,CAClC,CACA,SAAS/D,GAAYrF,EAAMgF,GAAO,CAChC,GAAIA,IAAS,IAAM,OAAAjC,EAAG,OAAS,UAAkB7B,EAAKmE,EAAW,EACjE,GAAIrF,GAAQ,WAAa,OAAA0D,EAASsB,EAAK,EAAU9D,EAAKmE,EAAW,EACjE,GAAIrF,GAAQ,IAAK,OAAOkB,EAAKmD,GAAaG,GAAQ,GAAG,EAAG+B,GAASP,GAAQ,GAAG,EAAGpB,GAAQsD,GAAc9E,GAAWmB,EAAU,EAC1H,GAAI3E,GAAQoF,IAAS,IAAK,OAAO9D,EAAKsD,GAAQ,GAAG,EAAG+B,GAASqC,GAAW,GAAG,EAAGhE,GAAQS,EAAW,CACnG,CACA,SAASqD,GAAa1I,EAAMgF,GAAO,CACjC,GAAIA,IAAS,IAAM,OAAAjC,EAAG,OAAS,UAAkB7B,EAAKwH,EAAY,EAClE,GAAI1I,GAAQ,WAAa,OAAA0D,EAASsB,EAAK,EAAU9D,EAAKwH,EAAY,EAClE,GAAI1I,GAAQ,IAAK,OAAOkB,EAAKmD,GAAaG,GAAQ,GAAG,EAAG+B,GAASP,GAAQ,GAAG,EAAGpB,GAAQsD,GAAc3D,EAAU,EAC/G,GAAI3E,GAAQoF,IAAS,IAAK,OAAO9D,EAAKsD,GAAQ,GAAG,EAAG+B,GAASqC,GAAW,GAAG,EAAGhE,GAAQ8D,EAAY,CACpG,CACA,SAASjD,GAASzF,EAAMgF,GAAO,CAC7B,GAAIhF,GAAQ,WAAaA,GAAQ,WAC/B,OAAA+C,EAAG,OAAS,OACL7B,EAAKuE,EAAQ,EACf,GAAIT,IAAS,IAClB,OAAO9D,EAAKsD,GAAQ,GAAG,EAAG+B,GAASqC,GAAW,GAAG,EAAGhE,EAAM,CAE9D,CACA,SAASoB,GAAOhG,EAAMgF,GAAO,CAE3B,OADIA,IAAS,KAAK9D,EAAKiC,GAAY6C,EAAM,EACrChG,GAAQ,SAAiBkB,EAAK8E,EAAM,EACpCpG,GAAQqE,EAAWe,EAAK,GAAKjC,EAAG,OAAS,UAAkB7B,EAAK8E,EAAM,GACtEpG,GAAQI,GAAQ,OAAekB,EAAKyG,GAAWmB,EAAW,EACvDzF,EAAKsC,GAASgC,GAAWmB,EAAW,CAC7C,CACA,SAASnC,GAAgB3G,EAAMgF,GAAO,CAEpC,OAAIhF,GAAQ,WAAmBuF,GAAUvF,EAAMgF,EAAK,EAC7CqE,GAAerJ,EAAMgF,EAAK,CACnC,CACA,SAASO,GAAUvF,EAAMgF,GAAO,CAC9B,GAAIhF,GAAQ,WAAa,OAAA0D,EAASsB,EAAK,EAAU9D,EAAKmI,EAAc,CACtE,CACA,SAASA,GAAerJ,EAAMgF,GAAO,CACnC,GAAIA,IAAS,IAAK,OAAO9D,EAAKsD,GAAQ,GAAG,EAAG+B,GAASqC,GAAW,GAAG,EAAGhE,GAAQyE,EAAc,EAC5F,GAAIrE,IAAS,WAAaA,IAAS,cAAiBpF,GAAQI,GAAQ,IAClE,OAAIgF,IAAS,eAAcjC,EAAG,OAAS,WAChC7B,EAAKtB,EAAO8F,GAAWvC,GAAYkG,EAAc,EAE1D,GAAIrJ,GAAQ,IAAK,OAAOkB,EAAKsD,GAAQ,GAAG,EAAG8E,GAAW1E,EAAM,CAC9D,CACA,SAAS0E,GAAUtJ,EAAMgF,GAAO,CAC9B,GAAIhF,GAAQ,SACPA,GAAQ,aACPgF,IAAS,UAAYA,IAAS,OAASA,IAAS,OAAUpF,GAAQqE,EAAWe,EAAK,IACnFjC,EAAG,OAAO,MAAM,yBAA0B,EAAK,EAClD,OAAAA,EAAG,OAAS,UACL7B,EAAKoI,EAAS,EAEvB,GAAItJ,GAAQ,YAAc+C,EAAG,OAAS,UACpC,OAAAA,EAAG,OAAS,WACL7B,EAAKqI,GAAYD,EAAS,EAEnC,GAAItJ,GAAQ,UAAYA,GAAQ,SAAU,OAAOkB,EAAKqI,GAAYD,EAAS,EAC3E,GAAItJ,GAAQ,IACV,OAAOkB,EAAKiC,GAAYwE,GAAW9C,GAAO,GAAG,EAAG0E,GAAYD,EAAS,EACvE,GAAItE,IAAS,IACX,OAAAjC,EAAG,OAAS,UACL7B,EAAKoI,EAAS,EAEvB,GAAI1J,GAAQI,GAAQ,IAAK,OAAOqD,EAAKqF,GAAcY,EAAS,EAC5D,GAAItJ,GAAQ,KAAOA,GAAQ,IAAK,OAAOkB,EAAKoI,EAAS,EACrD,GAAItJ,GAAQ,IAAK,OAAOkB,EAAK,EAC7B,GAAI8D,IAAS,IAAK,OAAO9D,EAAKiC,GAAYmG,EAAS,CACrD,CACA,SAASC,GAAWvJ,EAAMgF,GAAO,CAE/B,GADIA,IAAS,KACTA,IAAS,IAAK,OAAO9D,EAAKqI,EAAU,EACxC,GAAIvJ,GAAQ,IAAK,OAAOkB,EAAKwE,GAAUoD,EAAW,EAClD,GAAI9D,IAAS,IAAK,OAAO9D,EAAKgF,EAAiB,EAC/C,IAAIpC,GAAUf,EAAG,MAAM,QAAQ,KAAMyG,GAAc1F,IAAWA,GAAQ,MAAQ,YAC9E,OAAOT,EAAKmG,GAAcd,GAAerD,EAAW,CACtD,CACA,SAASS,GAAY9F,EAAMgF,GAAO,CAChC,OAAIA,IAAS,KAAOjC,EAAG,OAAS,UAAkB7B,EAAKuI,GAAW5E,GAAO,GAAG,CAAC,GACzEG,IAAS,WAAajC,EAAG,OAAS,UAAkB7B,EAAKiC,GAAY0B,GAAO,GAAG,CAAC,GAChF7E,GAAQ,IAAYkB,EAAKqF,GAASmD,GAAa,GAAG,EAAGD,GAAW5E,GAAO,GAAG,CAAC,EACxExB,EAAKD,EAAS,CACvB,CACA,SAASsG,GAAY1J,EAAMgF,GAAO,CAChC,GAAIA,IAAS,KAAQ,OAAAjC,EAAG,OAAS,UAAkB7B,EAAK2D,GAAO,UAAU,CAAC,EAC1E,GAAI7E,GAAQ,WAAY,OAAOqD,EAAK6C,GAAmBwD,EAAW,CACpE,CACA,SAAS3D,GAAY/F,EAAM,CACzB,OAAIA,GAAQ,SAAiBkB,EAAK,EAC9BlB,GAAQ,IAAYqD,EAAKF,EAAU,EACnCnD,GAAQ,IAAYqD,EAAKqD,EAAkB,EACxCrD,EAAKsG,GAAYC,GAAkBH,EAAS,CACrD,CACA,SAASE,GAAW3J,EAAMgF,GAAO,CAC/B,OAAIhF,GAAQ,IAAY6G,GAAa8C,GAAY,GAAG,GAChD3J,GAAQ,YAAY0D,EAASsB,EAAK,EAClCA,IAAS,MAAKjC,EAAG,OAAS,WACvB7B,EAAK2I,EAAO,EACrB,CACA,SAASD,GAAiB5J,EAAM,CAC9B,GAAIA,GAAQ,IAAK,OAAOkB,EAAKyI,GAAYC,EAAgB,CAC3D,CACA,SAASC,GAAQX,EAAOlE,GAAO,CAC7B,GAAIA,IAAS,KAAQ,OAAAjC,EAAG,OAAS,UAAkB7B,EAAKyI,EAAU,CACpE,CACA,SAASF,GAAUP,EAAOlE,GAAO,CAC/B,GAAIA,IAAS,OAAU,OAAAjC,EAAG,OAAS,UAAkB7B,EAAKiC,EAAU,CACtE,CACA,SAASyD,GAAa5G,EAAM,CAC1B,OAAIA,GAAQ,IAAYkB,EAAK,EACtBmC,EAAKkD,GAASL,GAAmB,GAAG,CAAC,CAC9C,CACA,SAASV,IAAU,CACjB,OAAOnC,EAAKmB,GAAQ,MAAM,EAAGmB,GAASd,GAAO,GAAG,EAAGL,GAAQ,GAAG,EAAG+B,GAASuD,GAAY,GAAG,EAAGlF,GAAQA,EAAM,CAC5G,CACA,SAASkF,IAAa,CACpB,OAAOzG,EAAKsC,GAASmD,EAAW,CAClC,CAEA,SAASiB,GAAqB3I,EAAO4I,GAAW,CAC9C,OAAO5I,EAAM,UAAY,YAAcA,EAAM,UAAY,KACvDb,EAAe,KAAKyJ,GAAU,OAAO,CAAC,CAAC,GACvC,OAAO,KAAKA,GAAU,OAAO,CAAC,CAAC,CACnC,CAEA,SAASxI,GAAkBd,EAAQU,GAAO6I,GAAQ,CAChD,OAAO7I,GAAM,UAAYD,GACvB,iFAAiF,KAAKC,GAAM,QAAQ,GACnGA,GAAM,UAAY,SAAW,SAAS,KAAKV,EAAO,OAAO,MAAM,EAAGA,EAAO,KAAOuJ,IAAU,EAAE,CAAC,CAClG,CAIA,MAAO,CACL,WAAY,SAASC,EAAY,CAC/B,IAAI9I,GAAQ,CACV,SAAUD,EACV,SAAU,MACV,GAAI,CAAC,EACL,QAAS,IAAImB,GAAW4H,GAAc,GAAK3K,EAAY,EAAG,QAAS,EAAK,EACxE,UAAWD,EAAa,UACxB,QAASA,EAAa,WAAa,IAAI0E,GAAQ,KAAM,KAAM,EAAK,EAChE,SAAUkG,GAAc,CAC1B,EACA,OAAI5K,EAAa,YAAc,OAAOA,EAAa,YAAc,WAC/D8B,GAAM,WAAa9B,EAAa,YAC3B8B,EACT,EAEA,MAAO,SAASV,EAAQU,GAAO,CAO7B,GANIV,EAAO,IAAI,IACRU,GAAM,QAAQ,eAAe,OAAO,IACvCA,GAAM,QAAQ,MAAQ,IACxBA,GAAM,SAAWV,EAAO,YAAY,EACpCoB,EAAapB,EAAQU,EAAK,GAExBA,GAAM,UAAYG,GAAgBb,EAAO,SAAS,EAAG,OAAO,KAChE,IAAIO,GAAQG,GAAM,SAASV,EAAQU,EAAK,EACxC,OAAIpB,GAAQ,UAAkBiB,IAC9BG,GAAM,SAAWpB,GAAQ,aAAec,GAAW,MAAQA,GAAW,MAAQ,SAAWd,EAClFgD,EAAQ5B,GAAOH,GAAOjB,EAAMc,EAASJ,CAAM,EACpD,EAEA,OAAQ,SAASU,EAAO4I,GAAW,CACjC,GAAI5I,EAAM,UAAYG,GAAgBH,EAAM,UAAYK,EAAY,OAAOrC,EAAW,KACtF,GAAIgC,EAAM,UAAYD,EAAW,MAAO,GACxC,IAAIgJ,GAAYH,IAAaA,GAAU,OAAO,CAAC,EAAGI,GAAUhJ,EAAM,QAASiJ,GAE3E,GAAI,CAAC,aAAa,KAAKL,EAAS,EAAG,QAAS1G,GAAIlC,EAAM,GAAG,OAAS,EAAGkC,IAAK,EAAG,EAAEA,GAAG,CAChF,IAAIgH,GAAIlJ,EAAM,GAAGkC,EAAC,EAClB,GAAIgH,IAAK1F,GAAQwF,GAAUA,GAAQ,aAC1BE,IAAKlF,IAAakF,IAAK/F,GAAY,KAC9C,CACA,MAAQ6F,GAAQ,MAAQ,QAAUA,GAAQ,MAAQ,UAC1CD,IAAa,MAASE,GAAMjJ,EAAM,GAAGA,EAAM,GAAG,OAAS,CAAC,KAClCiJ,IAAO3D,IAAsB2D,IAAO5D,KACrC,CAAC,mBAAmB,KAAKuD,EAAS,IAC7DI,GAAUA,GAAQ,KAChB5K,GAAmB4K,GAAQ,MAAQ,KAAOA,GAAQ,KAAK,MAAQ,SACjEA,GAAUA,GAAQ,MACpB,IAAIpK,GAAOoK,GAAQ,KAAMG,GAAUJ,IAAanK,GAEhD,OAAIA,IAAQ,SAAiBoK,GAAQ,UAAYhJ,EAAM,UAAY,YAAcA,EAAM,UAAY,IAAMgJ,GAAQ,KAAK,OAAS,EAAI,GAC1HpK,IAAQ,QAAUmK,IAAa,IAAYC,GAAQ,SACnDpK,IAAQ,OAAeoK,GAAQ,SAAW7K,EAC1CS,IAAQ,OACRoK,GAAQ,UAAYL,GAAqB3I,EAAO4I,EAAS,EAAIxK,GAAmBD,EAAa,GAC7F6K,GAAQ,MAAQ,UAAY,CAACG,IAAWjL,EAAa,oBAAsB,GAC3E8K,GAAQ,UAAY,sBAAsB,KAAKJ,EAAS,EAAIzK,EAAa,EAAIA,GAC7E6K,GAAQ,MAAcA,GAAQ,QAAUG,GAAU,EAAI,GACnDH,GAAQ,UAAYG,GAAU,EAAIhL,EAChD,EAEA,cAAe,oCACf,kBAAmBG,EAAW,KAAO,KACrC,gBAAiBA,EAAW,KAAO,KACnC,qBAAsBA,EAAW,KAAO,MACxC,YAAaA,EAAW,KAAO,KAC/B,KAAM,QACN,cAAe,iBAEf,WAAYA,EAAW,OAAS,aAChC,WAAYD,EACZ,SAAUC,EAEV,kBAAmB8B,GAEnB,eAAgB,SAASJ,EAAO,CAC9B4B,EAAQ5B,EAAO,OAAQ,OAAQ,OAAQ,IAAIhC,EAAW,aAAa,GAAI,EAAG,IAAI,CAAC,CACjF,CACF,CACF,CAAC,EAEDA,EAAW,eAAe,YAAa,aAAc,OAAO,EAE5DA,EAAW,WAAW,kBAAmB,YAAY,EACrDA,EAAW,WAAW,kBAAmB,YAAY,EACrDA,EAAW,WAAW,yBAA0B,YAAY,EAC5DA,EAAW,WAAW,2BAA4B,YAAY,EAC9DA,EAAW,WAAW,yBAA0B,YAAY,EAC5DA,EAAW,WAAW,mBAAoB,CAAE,KAAM,aAAc,KAAM,EAAK,CAAC,EAC5EA,EAAW,WAAW,qBAAsB,CAAE,KAAM,aAAc,KAAM,EAAK,CAAC,EAC9EA,EAAW,WAAW,4BAA6B,CAAE,KAAM,aAAc,KAAM,EAAK,CAAC,EACrFA,EAAW,WAAW,sBAAuB,CAAE,KAAM,aAAc,OAAQ,EAAK,CAAC,EACjFA,EAAW,WAAW,kBAAmB,CAAE,KAAM,aAAc,WAAY,EAAK,CAAC,EACjFA,EAAW,WAAW,yBAA0B,CAAE,KAAM,aAAc,WAAY,EAAK,CAAC,CAExF,CAAC,IC/7BD,IAAAoL,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EAKC,SAASC,EAAK,CACT,OAAOF,IAAW,UAAY,OAAOC,IAAU,SACjDC,EAAI,IAA+B,EAC5B,OAAO,QAAU,YAAc,OAAO,IAC7C,OAAO,CAAC,sBAAsB,EAAGA,CAAG,EAEpCA,EAAI,UAAU,CAClB,GAAG,SAASC,EAAY,CACtB,SAASC,EAAUC,EAAIC,EAAUC,EAAQ,CACvC,IAAIC,EAAOH,EAAG,kBAAkB,EAC5BI,EACJ,OAAAA,EAASD,EAAK,YAAY,SAAS,cAAc,KAAK,CAAC,EACnDD,EACFE,EAAO,UAAY,6CAEnBA,EAAO,UAAY,0CAEjB,OAAOH,GAAY,SACrBG,EAAO,UAAYH,EAEnBG,EAAO,YAAYH,CAAQ,EAE7BH,EAAW,SAASK,EAAM,eAAe,EAClCC,CACT,CAEA,SAASC,EAAkBL,EAAIM,EAAQ,CACjCN,EAAG,MAAM,0BACXA,EAAG,MAAM,yBAAyB,EACpCA,EAAG,MAAM,yBAA2BM,CACtC,CAEAR,EAAW,gBAAgB,aAAc,SAASG,EAAUM,EAAUC,EAAS,CACxEA,IAASA,EAAU,CAAC,GAEzBH,EAAkB,KAAM,IAAI,EAE5B,IAAID,EAASL,EAAU,KAAME,EAAUO,EAAQ,MAAM,EACjDC,EAAS,GAAOC,EAAK,KACzB,SAASC,EAAML,EAAQ,CACrB,GAAI,OAAOA,GAAU,SACnBM,EAAI,MAAQN,MACP,CACL,GAAIG,EAAQ,OACZA,EAAS,GACTX,EAAW,QAAQM,EAAO,WAAY,eAAe,EACrDA,EAAO,WAAW,YAAYA,CAAM,EACpCM,EAAG,MAAM,EAELF,EAAQ,SAASA,EAAQ,QAAQJ,CAAM,CAC7C,CACF,CAEA,IAAIQ,EAAMR,EAAO,qBAAqB,OAAO,EAAE,CAAC,EAAGS,EACnD,OAAID,GACFA,EAAI,MAAM,EAENJ,EAAQ,QACVI,EAAI,MAAQJ,EAAQ,MAChBA,EAAQ,oBAAsB,IAChCI,EAAI,OAAO,GAIXJ,EAAQ,SACVV,EAAW,GAAGc,EAAK,QAAS,SAASE,EAAG,CAAEN,EAAQ,QAAQM,EAAGF,EAAI,MAAOD,CAAK,CAAE,CAAC,EAC9EH,EAAQ,SACVV,EAAW,GAAGc,EAAK,QAAS,SAASE,EAAG,CAACN,EAAQ,QAAQM,EAAGF,EAAI,MAAOD,CAAK,CAAE,CAAC,EAEjFb,EAAW,GAAGc,EAAK,UAAW,SAASE,EAAG,CACpCN,GAAWA,EAAQ,WAAaA,EAAQ,UAAUM,EAAGF,EAAI,MAAOD,CAAK,KACrEG,EAAE,SAAW,IAAON,EAAQ,eAAiB,IAASM,EAAE,SAAW,MACrEF,EAAI,KAAK,EACTd,EAAW,OAAOgB,CAAC,EACnBH,EAAM,GAEJG,EAAE,SAAW,IAAIP,EAASK,EAAI,MAAOE,CAAC,EAC5C,CAAC,EAEGN,EAAQ,cAAgB,IAAOV,EAAW,GAAGM,EAAQ,WAAY,SAAUW,EAAK,CAC9EA,EAAI,gBAAkB,MAAMJ,EAAM,CACxC,CAAC,IACQE,EAAST,EAAO,qBAAqB,QAAQ,EAAE,CAAC,KACzDN,EAAW,GAAGe,EAAQ,QAAS,UAAW,CACxCF,EAAM,EACND,EAAG,MAAM,CACX,CAAC,EAEGF,EAAQ,cAAgB,IAAOV,EAAW,GAAGe,EAAQ,OAAQF,CAAK,EAEtEE,EAAO,MAAM,GAERF,CACT,CAAC,EAEDb,EAAW,gBAAgB,cAAe,SAASG,EAAUe,EAAWR,EAAS,CAC/EH,EAAkB,KAAM,IAAI,EAC5B,IAAID,EAASL,EAAU,KAAME,EAAUO,GAAWA,EAAQ,MAAM,EAC5DS,EAAUb,EAAO,qBAAqB,QAAQ,EAC9CK,EAAS,GAAOC,EAAK,KAAMQ,EAAW,EAC1C,SAASP,GAAQ,CACXF,IACJA,EAAS,GACTX,EAAW,QAAQM,EAAO,WAAY,eAAe,EACrDA,EAAO,WAAW,YAAYA,CAAM,EACpCM,EAAG,MAAM,EACX,CACAO,EAAQ,CAAC,EAAE,MAAM,EACjB,QAASE,EAAI,EAAGA,EAAIF,EAAQ,OAAQ,EAAEE,EAAG,CACvC,IAAIC,EAAIH,EAAQE,CAAC,GAChB,SAASZ,EAAU,CAClBT,EAAW,GAAGsB,EAAG,QAAS,SAASN,EAAG,CACpChB,EAAW,iBAAiBgB,CAAC,EAC7BH,EAAM,EACFJ,GAAUA,EAASG,CAAE,CAC3B,CAAC,CACH,GAAGM,EAAUG,CAAC,CAAC,EACfrB,EAAW,GAAGsB,EAAG,OAAQ,UAAW,CAClC,EAAEF,EACF,WAAW,UAAW,CAAMA,GAAY,GAAGP,EAAM,CAAG,EAAG,GAAG,CAC5D,CAAC,EACDb,EAAW,GAAGsB,EAAG,QAAS,UAAW,CAAE,EAAEF,CAAU,CAAC,CACtD,CACF,CAAC,EAUDpB,EAAW,gBAAgB,mBAAoB,SAASG,EAAUO,EAAS,CACzEH,EAAkB,KAAMM,CAAK,EAC7B,IAAIP,EAASL,EAAU,KAAME,EAAUO,GAAWA,EAAQ,MAAM,EAC5DC,EAAS,GAAOY,EAChBC,EAAWd,GAAW,OAAOA,EAAQ,SAAa,IAAcA,EAAQ,SAAW,IAEvF,SAASG,GAAQ,CACXF,IACJA,EAAS,GACT,aAAaY,CAAS,EACtBvB,EAAW,QAAQM,EAAO,WAAY,eAAe,EACrDA,EAAO,WAAW,YAAYA,CAAM,EACtC,CAEA,OAAAN,EAAW,GAAGM,EAAQ,QAAS,SAASU,EAAG,CACzChB,EAAW,iBAAiBgB,CAAC,EAC7BH,EAAM,CACR,CAAC,EAEGW,IACFD,EAAY,WAAWV,EAAOW,CAAQ,GAEjCX,CACT,CAAC,CACH,CAAC,IClKD,IAAAY,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EAGC,SAASC,EAAK,CACT,OAAOF,IAAW,UAAY,OAAOC,IAAU,SACjDC,EAAI,IAA+B,EAC5B,OAAO,QAAU,YAAc,OAAO,IAC7C,OAAO,CAAC,sBAAsB,EAAGA,CAAG,EAEpCA,EAAI,UAAU,CAClB,GAAG,SAASC,EAAY,CACtBA,EAAW,aAAa,cAAe,GAAI,SAASC,EAAIC,EAAKC,EAAK,CAChE,IAAIC,EAAOD,GAAOA,GAAOH,EAAW,KACpC,GAAIE,GAAO,CAACE,EACVH,EAAG,GAAG,OAAQI,CAAM,EACpBJ,EAAG,GAAG,SAAUK,CAAQ,EACxBL,EAAG,GAAG,UAAWK,CAAQ,EACzBN,EAAW,GAAGC,EAAG,cAAc,EAAG,oBAAqBA,EAAG,MAAM,mBAAqB,UAAW,CAAEM,EAAcN,CAAE,CAAE,CAAC,EACrHK,EAASL,CAAE,UACF,CAACC,GAAOE,EAAM,CACvBH,EAAG,IAAI,OAAQI,CAAM,EACrBJ,EAAG,IAAI,SAAUK,CAAQ,EACzBL,EAAG,IAAI,UAAWK,CAAQ,EAC1BN,EAAW,IAAIC,EAAG,cAAc,EAAG,oBAAqBA,EAAG,MAAM,kBAAkB,EACnFO,EAAiBP,CAAE,EACnB,IAAIQ,EAAUR,EAAG,kBAAkB,EACnCQ,EAAQ,UAAYA,EAAQ,UAAU,QAAQ,oBAAqB,EAAE,CACvE,CAEIP,GAAO,CAACD,EAAG,SAAS,GAAGI,EAAOJ,CAAE,CACtC,CAAC,EAED,SAASO,EAAiBP,EAAI,CACxBA,EAAG,MAAM,cACXA,EAAG,MAAM,YAAY,WAAW,YAAYA,EAAG,MAAM,WAAW,EAChEA,EAAG,MAAM,YAAc,KAE3B,CACA,SAASS,EAAeT,EAAI,CAC1BO,EAAiBP,CAAE,EACnB,IAAIU,EAAMV,EAAG,MAAM,YAAc,SAAS,cAAc,KAAK,EAC7DU,EAAI,MAAM,QAAU,+BACpBA,EAAI,MAAM,UAAYV,EAAG,UAAU,WAAW,EAC9CU,EAAI,UAAY,8CAChB,IAAIC,EAAcX,EAAG,UAAU,aAAa,EACxC,OAAOW,GAAe,WAAUA,EAAc,SAAS,eAAeA,CAAW,GACrFD,EAAI,YAAYC,CAAW,EAC3BX,EAAG,QAAQ,UAAU,aAAaU,EAAKV,EAAG,QAAQ,UAAU,UAAU,CACxE,CAEA,SAASM,EAAcN,EAAI,CACzB,WAAW,UAAW,CACpB,IAAIY,EAAQ,GACZ,GAAIZ,EAAG,UAAU,GAAK,EAAG,CACvB,IAAIa,EAAQb,EAAG,cAAc,EAC7BY,EAAQC,EAAM,UAAY,WAAa,CAACb,EAAG,QAAQ,CAAC,EAAE,OAClD,CAAC,YAAY,KAAKa,EAAM,cAAc,kBAAkB,EAAE,WAAW,CAC3E,CACID,EAAOH,EAAeT,CAAE,EACvBO,EAAiBP,CAAE,CAC1B,EAAG,EAAE,CACP,CAEA,SAASI,EAAOJ,EAAI,CACdc,EAAQd,CAAE,GAAGS,EAAeT,CAAE,CACpC,CACA,SAASK,EAASL,EAAI,CACpB,IAAIQ,EAAUR,EAAG,kBAAkB,EAAGY,EAAQE,EAAQd,CAAE,EACxDQ,EAAQ,UAAYA,EAAQ,UAAU,QAAQ,oBAAqB,EAAE,GAAKI,EAAQ,oBAAsB,IAEpGA,EAAOH,EAAeT,CAAE,EACvBO,EAAiBP,CAAE,CAC1B,CAEA,SAASc,EAAQd,EAAI,CACnB,OAAQA,EAAG,UAAU,IAAM,GAAOA,EAAG,QAAQ,CAAC,IAAM,EACtD,CACF,CAAC,IC7ED,IAAAe,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EAGC,SAASC,EAAK,CACT,OAAOF,IAAW,UAAY,OAAOC,IAAU,SACjDC,EAAI,IAA+B,EAC5B,OAAO,QAAU,YAAc,OAAO,IAC7C,OAAO,CAAC,sBAAsB,EAAGA,CAAG,EAEpCA,EAAI,UAAU,CAClB,GAAG,SAASC,EAAY,CACtB,IAAIC,EAAW,CACb,MAAO,aACP,YAAa,WACb,QAAS,GACT,QAAS,MACX,EAEIC,EAAMF,EAAW,IAErBA,EAAW,aAAa,oBAAqB,GAAO,SAASG,EAAIC,EAAKC,EAAK,CACrEA,GAAOA,GAAOL,EAAW,OAC3BG,EAAG,aAAaG,CAAM,EACtBH,EAAG,MAAM,cAAgB,MAEvBC,IACFG,EAAYC,EAAUJ,EAAK,OAAO,CAAC,EACnCD,EAAG,MAAM,cAAgBC,EACzBD,EAAG,UAAUG,CAAM,EAEvB,CAAC,EAED,SAASE,EAAUC,EAAMC,EAAM,CAC7B,OAAIA,GAAQ,SAAW,OAAOD,GAAQ,SAAiBA,EACnD,OAAOA,GAAQ,UAAYA,EAAKC,CAAI,GAAK,KAAaD,EAAKC,CAAI,EAC5DT,EAASS,CAAI,CACtB,CAEA,IAAIJ,EAAS,CAAC,UAAWK,EAAiB,MAAOC,CAAW,EAC5D,SAASL,EAAYM,EAAO,CAC1B,QAASC,EAAI,EAAGA,EAAID,EAAM,OAAQC,IAAK,CACrC,IAAIC,EAAKF,EAAM,OAAOC,CAAC,EAAGE,EAAM,IAAMD,EAAK,IACtCT,EAAOU,CAAG,IAAGV,EAAOU,CAAG,EAAIC,EAAQF,CAAE,EAC5C,CACF,CACAR,EAAYN,EAAS,MAAQ,GAAG,EAEhC,SAASgB,EAAQF,EAAI,CACnB,OAAO,SAASZ,EAAI,CAAE,OAAOe,EAAWf,EAAIY,CAAE,CAAG,CACnD,CAEA,SAASI,EAAUhB,EAAI,CACrB,IAAIiB,EAAQjB,EAAG,MAAM,cACrB,GAAI,CAACiB,GAASA,EAAM,SAAU,OAAOA,EACrC,IAAIC,EAAOlB,EAAG,UAAUA,EAAG,UAAU,CAAC,EACtC,OAAOkB,EAAK,eAAiBD,CAC/B,CAEA,SAAST,EAAgBR,EAAI,CAC3B,IAAIM,EAAOU,EAAUhB,CAAE,EACvB,GAAI,CAACM,GAAQN,EAAG,UAAU,cAAc,EAAG,OAAOH,EAAW,KAI7D,QAFIsB,EAAQd,EAAUC,EAAM,OAAO,EAC/Bc,EAASpB,EAAG,eAAe,EACtBW,EAAI,EAAGA,EAAIS,EAAO,OAAQT,IAAK,CACtC,GAAI,CAACS,EAAOT,CAAC,EAAE,MAAM,EAAG,OAAOd,EAAW,KAC1C,IAAIwB,EAASC,EAAYtB,EAAIoB,EAAOT,CAAC,EAAE,IAAI,EAC3C,GAAI,CAACU,GAAUF,EAAM,QAAQE,CAAM,EAAI,GAAK,EAAG,OAAOxB,EAAW,IACnE,CACA,QAASc,EAAIS,EAAO,OAAS,EAAGT,GAAK,EAAGA,IAAK,CAC3C,IAAIY,EAAMH,EAAOT,CAAC,EAAE,KACpBX,EAAG,aAAa,GAAID,EAAIwB,EAAI,KAAMA,EAAI,GAAK,CAAC,EAAGxB,EAAIwB,EAAI,KAAMA,EAAI,GAAK,CAAC,EAAG,SAAS,CACrF,CACF,CAEA,SAASd,EAAYT,EAAI,CACvB,IAAIM,EAAOU,EAAUhB,CAAE,EACnBwB,EAAUlB,GAAQD,EAAUC,EAAM,SAAS,EAC/C,GAAI,CAACkB,GAAWxB,EAAG,UAAU,cAAc,EAAG,OAAOH,EAAW,KAGhE,QADIuB,EAASpB,EAAG,eAAe,EACtBW,EAAI,EAAGA,EAAIS,EAAO,OAAQT,IAAK,CACtC,GAAI,CAACS,EAAOT,CAAC,EAAE,MAAM,EAAG,OAAOd,EAAW,KAC1C,IAAIwB,EAASC,EAAYtB,EAAIoB,EAAOT,CAAC,EAAE,IAAI,EAC3C,GAAI,CAACU,GAAUG,EAAQ,QAAQH,CAAM,EAAI,GAAK,EAAG,OAAOxB,EAAW,IACrE,CACAG,EAAG,UAAU,UAAW,CACtB,IAAIyB,EAAUzB,EAAG,cAAc,GAAK;AAAA,EACpCA,EAAG,iBAAiByB,EAAUA,EAAS,IAAI,EAC3CC,EAAQ1B,EAAI,EAAE,EACdoB,EAASpB,EAAG,eAAe,EAC3B,QAASW,EAAI,EAAGA,EAAIS,EAAO,OAAQT,IAAK,CACtC,IAAIgB,EAAOP,EAAOT,CAAC,EAAE,KAAK,KAC1BX,EAAG,WAAW2B,EAAM,KAAM,EAAI,EAC9B3B,EAAG,WAAW2B,EAAO,EAAG,KAAM,EAAI,CACpC,CACF,CAAC,CACH,CAEA,SAASD,EAAQ1B,EAAI4B,EAAK,CAExB,QADIC,EAAY,CAAC,EAAGT,EAASpB,EAAG,eAAe,EAAG8B,EAAU,EACnDnB,EAAI,EAAGA,EAAIS,EAAO,OAAQT,IAAK,CACtC,IAAIoB,EAAQX,EAAOT,CAAC,EAChBoB,EAAM,MAAQ/B,EAAG,UAAU,IAAG8B,EAAUnB,GAC5C,IAAIqB,EAAMD,EAAM,KAAK,IAAMH,EAAM,EAAI,CAAC,KAAMG,EAAM,KAAK,KAAM,GAAIA,EAAM,KAAK,GAAKH,CAAG,EAAI,CAAC,KAAMG,EAAM,KAAK,KAAO,CAAC,EAClHF,EAAU,KAAK,CAAC,OAAQG,EAAK,KAAMA,CAAG,CAAC,CACzC,CACAhC,EAAG,cAAc6B,EAAWC,CAAO,CACrC,CAEA,SAASG,EAAkBC,EAAK,CAC9B,IAAIC,EAAWtC,EAAW,OAAOqC,EAAI,OAAQA,EAAI,IAAI,EAAI,EACzD,MAAO,CAAC,OAAQ,IAAInC,EAAImC,EAAI,OAAO,KAAMA,EAAI,OAAO,IAAMC,EAAW,GAAK,EAAE,EACpE,KAAM,IAAIpC,EAAImC,EAAI,KAAK,KAAMA,EAAI,KAAK,IAAMC,EAAW,EAAI,GAAG,CAAC,CACzE,CAEA,SAASpB,EAAWf,EAAIY,EAAI,CAC1B,IAAIN,EAAOU,EAAUhB,CAAE,EACvB,GAAI,CAACM,GAAQN,EAAG,UAAU,cAAc,EAAG,OAAOH,EAAW,KAE7D,IAAIsB,EAAQd,EAAUC,EAAM,OAAO,EAC/B0B,EAAMb,EAAM,QAAQP,CAAE,EAC1B,GAAIoB,GAAO,GAAI,OAAOnC,EAAW,KAWjC,QATIuC,EAAc/B,EAAUC,EAAK,aAAa,EAE1C+B,EAAUhC,EAAUC,EAAM,SAAS,EAEnCgC,EAAYnB,EAAM,OAAOa,EAAM,CAAC,GAAKpB,EACrCQ,EAASpB,EAAG,eAAe,EAC3BuC,EAAUP,EAAM,GAAK,EAErBQ,EACK7B,EAAI,EAAGA,EAAIS,EAAO,OAAQT,IAAK,CACtC,IAAIoB,EAAQX,EAAOT,CAAC,EAAGY,EAAMQ,EAAM,KAAMU,EACrCC,EAAO1C,EAAG,SAASuB,EAAKxB,EAAIwB,EAAI,KAAMA,EAAI,GAAK,CAAC,CAAC,EACrD,GAAIgB,GAAW,CAACR,EAAM,MAAM,EAC1BU,EAAU,oBACAH,GAAa,CAACC,IAAYG,GAAQ9B,EACxC0B,GAAaK,EAAkB3C,EAAIuB,CAAG,EACxCkB,EAAU,OACHJ,EAAQ,QAAQzB,CAAE,GAAK,GAAKZ,EAAG,SAASuB,EAAKxB,EAAIwB,EAAI,KAAMA,EAAI,GAAK,CAAC,CAAC,GAAKX,EAAKA,EAAKA,EAC5F6B,EAAU,YAEVA,EAAU,eACHH,GAAaf,EAAI,GAAK,GAAKc,EAAQ,QAAQzB,CAAE,GAAK,GAClDZ,EAAG,SAASD,EAAIwB,EAAI,KAAMA,EAAI,GAAK,CAAC,EAAGA,CAAG,GAAKX,EAAKA,EAAI,CACjE,GAAIW,EAAI,GAAK,GAAK,WAAW,KAAKvB,EAAG,eAAeD,EAAIwB,EAAI,KAAMA,EAAI,GAAK,CAAC,CAAC,CAAC,EAAG,OAAO1B,EAAW,KACnG4C,EAAU,SACZ,SAAWH,EAAW,CACpB,IAAIM,EAAOrB,EAAI,IAAM,EAAI,IAAMvB,EAAG,SAASD,EAAIwB,EAAI,KAAMA,EAAI,GAAK,CAAC,EAAGA,CAAG,EACzE,GAAI,CAAC1B,EAAW,WAAW6C,CAAI,GAAKE,GAAQhC,GAAM,CAACf,EAAW,WAAW+C,CAAI,EAAGH,EAAU,WACrF,QAAO5C,EAAW,IACzB,SAAW0C,IAAYG,EAAK,SAAW,GAAK,KAAK,KAAKA,CAAI,GAAKN,EAAY,QAAQM,CAAI,EAAI,IACzFD,EAAU,WAEV,QAAO5C,EAAW,KAEpB,GAAI,CAAC2C,EAAMA,EAAOC,UACTD,GAAQC,EAAS,OAAO5C,EAAW,IAC9C,CAEA,IAAIgD,EAAOb,EAAM,EAAIb,EAAM,OAAOa,EAAM,CAAC,EAAIpB,EACzCkC,EAAQd,EAAM,EAAIpB,EAAKO,EAAM,OAAOa,EAAM,CAAC,EAC/ChC,EAAG,UAAU,UAAW,CACtB,GAAIwC,GAAQ,OACVd,EAAQ1B,EAAI,CAAC,UACJwC,GAAQ,YACjBd,EAAQ1B,EAAI,CAAC,UACJwC,GAAQ,WAAY,CAE7B,QADIO,GAAO/C,EAAG,cAAc,EACnBW,EAAI,EAAGA,EAAIoC,GAAK,OAAQpC,IAC/BoC,GAAKpC,CAAC,EAAIkC,EAAOE,GAAKpC,CAAC,EAAImC,EAC7B9C,EAAG,kBAAkB+C,GAAM,QAAQ,EACnCA,GAAO/C,EAAG,eAAe,EAAE,MAAM,EACjC,QAASW,EAAI,EAAGA,EAAIoC,GAAK,OAAQpC,IAC/BoC,GAAKpC,CAAC,EAAIsB,EAAkBc,GAAKpC,CAAC,CAAC,EACrCX,EAAG,cAAc+C,EAAI,CACvB,MAAWP,GAAQ,QACjBxC,EAAG,iBAAiB6C,EAAOC,EAAO,IAAI,EACtC9C,EAAG,gBAAgB6C,EAAOC,CAAK,EAC/BpB,EAAQ1B,EAAI,EAAE,GACLwC,GAAQ,YACjBxC,EAAG,iBAAiB6C,EAAOA,EAAOA,EAAOA,EAAM,QAAQ,EACvDnB,EAAQ1B,EAAI,CAAC,EAEjB,CAAC,CACH,CAEA,SAASsB,EAAYtB,EAAIgC,EAAK,CAC5B,IAAIgB,EAAMhD,EAAG,SAASD,EAAIiC,EAAI,KAAMA,EAAI,GAAK,CAAC,EACxBjC,EAAIiC,EAAI,KAAMA,EAAI,GAAK,CAAC,CAAC,EAC/C,OAAOgB,EAAI,QAAU,EAAIA,EAAM,IACjC,CAEA,SAASL,EAAkB3C,EAAIgC,EAAK,CAClC,IAAIiB,EAAQjD,EAAG,WAAWD,EAAIiC,EAAI,KAAMA,EAAI,GAAK,CAAC,CAAC,EACnD,MAAO,WAAW,KAAKiB,EAAM,IAAI,GAAKA,EAAM,OAASjB,EAAI,KACtDA,EAAI,IAAM,GAAK,CAAC,WAAW,KAAKhC,EAAG,eAAegC,CAAG,CAAC,EAC3D,CACF,CAAC,ICxMD,IAAAkB,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EAGC,SAASC,EAAK,CACT,OAAOF,IAAW,UAAY,OAAOC,IAAU,SACjDC,EAAI,IAA+B,EAC5B,OAAO,QAAU,YAAc,OAAO,IAC7C,OAAO,CAAC,sBAAsB,EAAGA,CAAG,EAEpCA,EAAI,UAAU,CAClB,GAAG,SAASC,EAAY,CACtB,IAAIC,EAAS,UAAU,KAAK,UAAU,SAAS,IAC5C,SAAS,cAAgB,MAAQ,SAAS,aAAe,GAExDC,EAAMF,EAAW,IAEjBG,EAAW,CAAC,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,IAAI,EAEtG,SAASC,EAAaC,EAAQ,CAC5B,OAAOA,GAAUA,EAAO,cAAgB,WAC1C,CAEA,SAASC,EAAoBC,EAAIC,EAAOH,EAAQ,CAC9C,IAAII,EAAOF,EAAG,cAAcC,EAAM,IAAI,EAAGE,EAAMF,EAAM,GAAK,EACtDG,EAAcN,GAAUA,EAAO,YAC/BM,GAAe,OACjBA,EAAc,0BAA0B,KAAKJ,EAAG,kBAAkB,EAAE,SAAS,GAC/E,IAAIK,EAAKR,EAAaC,CAAM,EAMxBQ,EAAS,CAACF,GAAeD,GAAO,GAAKE,EAAG,KAAKH,EAAK,KAAK,OAAOC,CAAG,CAAC,GAAKP,EAASM,EAAK,KAAK,OAAOC,CAAG,CAAC,GACrGE,EAAG,KAAKH,EAAK,KAAK,OAAOC,EAAM,CAAC,CAAC,GAAKP,EAASM,EAAK,KAAK,OAAO,EAAEC,CAAG,CAAC,EAC1E,GAAI,CAACG,EAAO,OAAO,KACnB,IAAIC,EAAMD,EAAM,OAAO,CAAC,GAAK,IAAM,EAAI,GACvC,GAAIR,GAAUA,EAAO,QAAWS,EAAM,IAAOJ,GAAOF,EAAM,IAAK,OAAO,KACtE,IAAIO,EAAQR,EAAG,eAAeL,EAAIM,EAAM,KAAME,EAAM,CAAC,CAAC,EAElDM,EAAQC,EAAeV,EAAIL,EAAIM,EAAM,KAAME,GAAOI,EAAM,EAAI,EAAI,EAAE,EAAGA,EAAKC,EAAOV,CAAM,EAC3F,OAAIW,GAAS,KAAa,KACnB,CAAC,KAAMd,EAAIM,EAAM,KAAME,CAAG,EAAG,GAAIM,GAASA,EAAM,IAC/C,MAAOA,GAASA,EAAM,IAAMH,EAAM,OAAO,CAAC,EAAG,QAASC,EAAM,CAAC,CACvE,CASA,SAASG,EAAeV,EAAIC,EAAOM,EAAKC,EAAOV,EAAQ,CAQrD,QAPIa,EAAcb,GAAUA,EAAO,mBAAsB,IACrDc,EAAgBd,GAAUA,EAAO,cAAiB,IAElDe,EAAQ,CAAC,EACTR,EAAKR,EAAaC,CAAM,EACxBgB,EAAUP,EAAM,EAAI,KAAK,IAAIN,EAAM,KAAOW,EAAcZ,EAAG,SAAS,EAAI,CAAC,EACrD,KAAK,IAAIA,EAAG,UAAU,EAAI,EAAGC,EAAM,KAAOW,CAAY,EACrEG,EAASd,EAAM,KAAMc,GAAUD,EAASC,GAAUR,EAAK,CAC9D,IAAIL,EAAOF,EAAG,QAAQe,CAAM,EAC5B,GAAKb,EACL,KAAIC,EAAMI,EAAM,EAAI,EAAIL,EAAK,OAAS,EAAGc,EAAMT,EAAM,EAAIL,EAAK,OAAS,GACvE,GAAI,EAAAA,EAAK,OAASS,GAElB,IADII,GAAUd,EAAM,OAAME,EAAMF,EAAM,IAAMM,EAAM,EAAI,EAAI,IACnDJ,GAAOa,EAAKb,GAAOI,EAAK,CAC7B,IAAIU,EAAKf,EAAK,OAAOC,CAAG,EACxB,GAAIE,EAAG,KAAKY,CAAE,IAAMT,IAAU,SACTR,EAAG,eAAeL,EAAIoB,EAAQZ,EAAM,CAAC,CAAC,GAAK,MAAQK,GAAS,KAAM,CACrF,IAAIF,EAAQV,EAASqB,CAAE,EACvB,GAAIX,GAAUA,EAAM,OAAO,CAAC,GAAK,KAASC,EAAM,EAAIM,EAAM,KAAKI,CAAE,UACvDJ,EAAM,OACXA,EAAM,IAAI,MADS,OAAO,CAAC,IAAKlB,EAAIoB,EAAQZ,CAAG,EAAG,GAAIc,CAAE,CAE/D,CACF,EACF,CACA,OAAOF,EAASR,IAAQA,EAAM,EAAIP,EAAG,SAAS,EAAIA,EAAG,UAAU,GAAK,GAAQ,IAC9E,CAEA,SAASkB,EAAclB,EAAImB,EAAWrB,EAAQ,CAK5C,QAHIsB,EAAkBpB,EAAG,MAAM,cAAc,wBAA0B,IACrEqB,EAAuBvB,GAAUA,EAAO,qBACtCwB,EAAQ,CAAC,EAAGC,EAASvB,EAAG,eAAe,EAClCwB,EAAI,EAAGA,EAAID,EAAO,OAAQC,IAAK,CACtC,IAAIlB,EAAQiB,EAAOC,CAAC,EAAE,MAAM,GAAKzB,EAAoBC,EAAIuB,EAAOC,CAAC,EAAE,KAAM1B,CAAM,EAC/E,GAAIQ,IAAUA,EAAM,OAASe,IAAyB,KAAUrB,EAAG,QAAQM,EAAM,KAAK,IAAI,EAAE,QAAUc,EAAiB,CACrH,IAAIZ,EAAQF,EAAM,MAAQ,6BAA+B,gCACzDgB,EAAM,KAAKtB,EAAG,SAASM,EAAM,KAAMX,EAAIW,EAAM,KAAK,KAAMA,EAAM,KAAK,GAAK,CAAC,EAAG,CAAC,UAAWE,CAAK,CAAC,CAAC,EAC3FF,EAAM,IAAMN,EAAG,QAAQM,EAAM,GAAG,IAAI,EAAE,QAAUc,GAClDE,EAAM,KAAKtB,EAAG,SAASM,EAAM,GAAIX,EAAIW,EAAM,GAAG,KAAMA,EAAM,GAAG,GAAK,CAAC,EAAG,CAAC,UAAWE,CAAK,CAAC,CAAC,CAC7F,CACF,CAEA,GAAIc,EAAM,OAAQ,CAGZ5B,GAAUM,EAAG,MAAM,SAASA,EAAG,MAAM,EAEzC,IAAIyB,EAAQ,UAAW,CACrBzB,EAAG,UAAU,UAAW,CACtB,QAASwB,EAAI,EAAGA,EAAIF,EAAM,OAAQE,IAAKF,EAAME,CAAC,EAAE,MAAM,CACxD,CAAC,CACH,EACA,GAAIL,EAAW,WAAWM,EAAO,GAAG,MAC/B,QAAOA,CACd,CACF,CAEA,SAASC,EAAgB1B,EAAI,CAC3BA,EAAG,UAAU,UAAW,CAClBA,EAAG,MAAM,cAAc,uBACzBA,EAAG,MAAM,cAAc,qBAAqB,EAC5CA,EAAG,MAAM,cAAc,qBAAuB,MAEhDA,EAAG,MAAM,cAAc,qBAAuBkB,EAAclB,EAAI,GAAOA,EAAG,MAAM,aAAa,CAC/F,CAAC,CACH,CAEA,SAAS2B,EAAiB3B,EAAI,CACxBA,EAAG,MAAM,eAAiBA,EAAG,MAAM,cAAc,uBACnDA,EAAG,MAAM,cAAc,qBAAqB,EAC5CA,EAAG,MAAM,cAAc,qBAAuB,KAElD,CAEAP,EAAW,aAAa,gBAAiB,GAAO,SAASO,EAAI4B,EAAKC,EAAK,CACjEA,GAAOA,GAAOpC,EAAW,OAC3BO,EAAG,IAAI,iBAAkB0B,CAAe,EACxC1B,EAAG,IAAI,QAAS0B,CAAe,EAC/B1B,EAAG,IAAI,OAAQ2B,CAAgB,EAC/BA,EAAiB3B,CAAE,GAEjB4B,IACF5B,EAAG,MAAM,cAAgB,OAAO4B,GAAO,SAAWA,EAAM,CAAC,EACzD5B,EAAG,GAAG,iBAAkB0B,CAAe,EACvC1B,EAAG,GAAG,QAAS0B,CAAe,EAC9B1B,EAAG,GAAG,OAAQ2B,CAAgB,EAElC,CAAC,EAEDlC,EAAW,gBAAgB,gBAAiB,UAAW,CAACyB,EAAc,KAAM,EAAI,CAAE,CAAC,EACnFzB,EAAW,gBAAgB,sBAAuB,SAASU,EAAKL,EAAQgC,EAAU,CAEhF,OAAIA,GAAa,OAAOhC,GAAU,aAC3BgC,GAGHA,EAAU,OAAShC,EACnBA,EAASgC,GAHThC,EAASA,EAAS,CAAC,OAAQ,EAAI,EAAI,MAMhCC,EAAoB,KAAMI,EAAKL,CAAM,CAC9C,CAAC,EACDL,EAAW,gBAAgB,iBAAkB,SAASU,EAAKI,EAAKC,EAAOV,EAAO,CAC5E,OAAOY,EAAe,KAAMP,EAAKI,EAAKC,EAAOV,CAAM,CACrD,CAAC,CACH,CAAC,IC/JD,IAAAiC,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EAKC,SAASC,EAAK,CACT,OAAOF,IAAW,UAAY,OAAOC,IAAU,SACjDC,EAAI,IAA+B,EAC5B,OAAO,QAAU,YAAc,OAAO,IAC7C,OAAO,CAAC,sBAAsB,EAAGA,CAAG,EAEpCA,EAAI,UAAU,CAClB,GAAG,SAASC,EAAY,CACtB,aAEA,IAAIC,EAA4B,kBAC5BC,EAA4B,yBAIhCF,EAAW,SAAW,SAASG,EAAIC,EAAUC,EAAS,CACpD,GAAI,CAACD,EAAU,OAAOD,EAAG,SAASE,CAAO,EACrCA,GAAWA,EAAQ,QAAOD,EAAS,MAAQ,IAC/C,IAAIE,EAAU,CAAC,KAAMF,CAAQ,EAC7B,GAAIC,EAAS,QAASE,KAAQF,EAASC,EAAQC,CAAI,EAAIF,EAAQE,CAAI,EACnE,OAAOJ,EAAG,SAASG,CAAO,CAC5B,EAEAN,EAAW,gBAAgB,WAAY,SAASK,EAAS,CACvDA,EAAUG,EAAa,KAAM,KAAK,UAAU,OAAO,EAAGH,CAAO,EAC7D,IAAII,EAAa,KAAK,eAAe,EACrC,GAAI,EAAAA,EAAW,OAAS,GAIxB,IAAI,KAAK,kBAAkB,EAAG,CAC5B,GAAI,CAACJ,EAAQ,KAAK,kBAAmB,OAErC,QAASK,EAAI,EAAGA,EAAID,EAAW,OAAQC,IACrC,GAAID,EAAWC,CAAC,EAAE,KAAK,MAAQD,EAAWC,CAAC,EAAE,OAAO,KAAM,MAC9D,CAEI,KAAK,MAAM,kBAAkB,KAAK,MAAM,iBAAiB,MAAM,EACnE,IAAIC,EAAa,KAAK,MAAM,iBAAmB,IAAIC,EAAW,KAAMP,CAAO,EACtEM,EAAW,QAAQ,OAExBX,EAAW,OAAO,KAAM,kBAAmB,IAAI,EAC/CW,EAAW,OAAO,EAAI,GACxB,CAAC,EAEDX,EAAW,gBAAgB,YAAa,UAAW,CAC7C,KAAK,MAAM,kBAAkB,KAAK,MAAM,iBAAiB,MAAM,CACrE,CAAC,EAED,SAASY,EAAWT,EAAIE,EAAS,CAS/B,GARA,KAAK,GAAKF,EACV,KAAK,QAAUE,EACf,KAAK,OAAS,KACd,KAAK,SAAW,EAChB,KAAK,KAAO,EACZ,KAAK,SAAW,KAAK,GAAG,UAAU,OAAO,EACzC,KAAK,SAAW,KAAK,GAAG,QAAQ,KAAK,SAAS,IAAI,EAAE,OAAS,KAAK,GAAG,aAAa,EAAE,OAEhF,KAAK,QAAQ,uBAAwB,CACvC,IAAIQ,EAAO,KACXV,EAAG,GAAG,iBAAkB,KAAK,aAAe,UAAW,CAAEU,EAAK,eAAe,CAAG,CAAC,CACnF,CACF,CAEA,IAAIC,EAAwB,OAAO,uBAAyB,SAASC,EAAI,CACvE,OAAO,WAAWA,EAAI,IAAK,EAAE,CAC/B,EACIC,EAAuB,OAAO,sBAAwB,aAE1DJ,EAAW,UAAY,CACrB,MAAO,UAAW,CACX,KAAK,OAAO,IACjB,KAAK,GAAG,MAAM,iBAAmB,KACjC,KAAK,KAAO,KACR,KAAK,QAAQ,wBACf,KAAK,GAAG,IAAI,iBAAkB,KAAK,YAAY,EAG7C,KAAK,QAAU,KAAK,MAAMZ,EAAW,OAAO,KAAK,KAAM,OAAO,EAC9D,KAAK,QAAQ,KAAK,OAAO,MAAM,EACnCA,EAAW,OAAO,KAAK,GAAI,gBAAiB,KAAK,EAAE,EACrD,EAEA,OAAQ,UAAW,CACjB,OAAO,KAAK,GAAG,MAAM,kBAAoB,IAC3C,EAEA,KAAM,SAASiB,EAAMP,EAAG,CACtB,IAAIC,EAAaM,EAAK,KAAKP,CAAC,EAAGG,EAAO,KACtC,KAAK,GAAG,UAAU,UAAW,CACvBF,EAAW,KACbA,EAAW,KAAKE,EAAK,GAAII,EAAMN,CAAU,EAEzCE,EAAK,GAAG,aAAaK,EAAQP,CAAU,EAAGA,EAAW,MAAQM,EAAK,KAC7CN,EAAW,IAAMM,EAAK,GAAI,UAAU,EAC3DjB,EAAW,OAAOiB,EAAM,OAAQN,CAAU,EAC1CE,EAAK,GAAG,eAAe,CACzB,CAAC,EACG,KAAK,QAAQ,aACf,KAAK,MAAM,CAEf,EAEA,eAAgB,UAAW,CACrB,KAAK,WACPG,EAAqB,KAAK,QAAQ,EAClC,KAAK,SAAW,GAGlB,IAAIG,EAAa,KAAK,SACnB,KAAK,OACNA,EAAa,KAAK,KAAK,MAGzB,IAAIC,EAAM,KAAK,GAAG,UAAU,EAAGC,EAAO,KAAK,GAAG,QAAQD,EAAI,IAAI,EAC9D,GAAIA,EAAI,MAAQ,KAAK,SAAS,MAAQC,EAAK,OAASD,EAAI,IAAM,KAAK,SAAW,KAAK,SAAS,IACxFA,EAAI,GAAKD,EAAW,IAAM,KAAK,GAAG,kBAAkB,GACnD,CAACC,EAAI,IAAM,KAAK,QAAQ,gBAAgB,KAAKC,EAAK,OAAOD,EAAI,GAAK,CAAC,CAAC,EACvE,KAAK,MAAM,MACN,CACL,IAAIP,EAAO,KACX,KAAK,SAAWC,EAAsB,UAAW,CAACD,EAAK,OAAO,CAAE,CAAC,EAC7D,KAAK,QAAQ,KAAK,OAAO,QAAQ,CACvC,CACF,EAEA,OAAQ,SAASS,EAAO,CACtB,GAAI,KAAK,MAAQ,KACjB,KAAIT,EAAO,KAAMU,EAAS,EAAE,KAAK,KACjCC,EAAW,KAAK,QAAQ,KAAM,KAAK,GAAI,KAAK,QAAS,SAASP,EAAM,CAC9DJ,EAAK,MAAQU,GAAQV,EAAK,aAAaI,EAAMK,CAAK,CACxD,CAAC,EACH,EAEA,aAAc,SAASL,EAAMK,EAAO,CAC9B,KAAK,MAAMtB,EAAW,OAAO,KAAK,KAAM,QAAQ,EAEpD,IAAIyB,EAAU,KAAK,QAAU,KAAK,OAAO,QAAYH,GAAS,KAAK,QAAQ,eACvE,KAAK,QAAQ,KAAK,OAAO,MAAM,EAEnC,KAAK,KAAOL,EAERA,GAAQA,EAAK,KAAK,SAChBQ,GAAUR,EAAK,KAAK,QAAU,EAChC,KAAK,KAAKA,EAAM,CAAC,GAEjB,KAAK,OAAS,IAAIS,EAAO,KAAMT,CAAI,EACnCjB,EAAW,OAAOiB,EAAM,OAAO,GAGrC,CACF,EAEA,SAAST,EAAaL,EAAIiB,EAAKf,EAAS,CACtC,IAAIsB,EAASxB,EAAG,QAAQ,YACpByB,EAAM,CAAC,EACX,QAASrB,KAAQsB,EAAgBD,EAAIrB,CAAI,EAAIsB,EAAetB,CAAI,EAChE,GAAIoB,EAAQ,QAASpB,KAAQoB,EACvBA,EAAOpB,CAAI,IAAM,SAAWqB,EAAIrB,CAAI,EAAIoB,EAAOpB,CAAI,GACzD,GAAIF,EAAS,QAASE,KAAQF,EACxBA,EAAQE,CAAI,IAAM,SAAWqB,EAAIrB,CAAI,EAAIF,EAAQE,CAAI,GAC3D,OAAIqB,EAAI,KAAK,UAASA,EAAI,KAAOA,EAAI,KAAK,QAAQzB,EAAIiB,CAAG,GAClDQ,CACT,CAEA,SAASV,EAAQP,EAAY,CAC3B,OAAI,OAAOA,GAAc,SAAiBA,EAC9BA,EAAW,IACzB,CAEA,SAASmB,EAAYnB,EAAYoB,EAAQ,CACvC,IAAIC,EAAU,CACZ,GAAI,UAAW,CAACD,EAAO,UAAU,EAAE,CAAE,EACrC,KAAM,UAAW,CAACA,EAAO,UAAU,CAAC,CAAE,EACtC,OAAQ,UAAW,CAACA,EAAO,UAAU,CAACA,EAAO,SAAS,EAAI,EAAG,EAAI,CAAE,EACnE,SAAU,UAAW,CAACA,EAAO,UAAUA,EAAO,SAAS,EAAI,EAAG,EAAI,CAAE,EACpE,KAAM,UAAW,CAACA,EAAO,SAAS,CAAC,CAAE,EACrC,IAAK,UAAW,CAACA,EAAO,SAASA,EAAO,OAAS,CAAC,CAAE,EACpD,MAAOA,EAAO,KACd,IAAKA,EAAO,KACZ,IAAKA,EAAO,KACd,EAEIE,EAAM,MAAM,KAAK,UAAU,QAAQ,EAEnCA,IACFD,EAAQ,QAAQ,EAAI,UAAW,CAACD,EAAO,UAAU,EAAE,CAAE,EACrDC,EAAQ,QAAQ,EAAI,UAAW,CAACD,EAAO,UAAU,CAAC,CAAE,GAGtD,IAAIG,EAASvB,EAAW,QAAQ,WAC5BwB,EAASD,EAAS,CAAC,EAAIF,EAC3B,SAASI,EAAWC,EAAKC,EAAK,CAC5B,IAAIC,EACA,OAAOD,GAAO,SAChBC,EAAQ,SAASpC,EAAI,CAAE,OAAOmC,EAAInC,EAAI4B,CAAM,CAAG,EAExCC,EAAQ,eAAeM,CAAG,EACjCC,EAAQP,EAAQM,CAAG,EAEnBC,EAAQD,EACVH,EAAOE,CAAG,EAAIE,CAChB,CACA,GAAIL,EACF,QAASG,KAAOH,EAAYA,EAAO,eAAeG,CAAG,GACnDD,EAAWC,EAAKH,EAAOG,CAAG,CAAC,EAC/B,IAAIG,EAAQ7B,EAAW,QAAQ,UAC/B,GAAI6B,EACF,QAASH,KAAOG,EAAWA,EAAM,eAAeH,CAAG,GACjDD,EAAWC,EAAKG,EAAMH,CAAG,CAAC,EAC9B,OAAOF,CACT,CAEA,SAASM,EAAeC,EAAcC,EAAI,CACxC,KAAOA,GAAMA,GAAMD,GAAc,CAC/B,GAAIC,EAAG,SAAS,YAAY,IAAM,MAAQA,EAAG,YAAcD,EAAc,OAAOC,EAChFA,EAAKA,EAAG,UACV,CACF,CAEA,SAASjB,EAAOf,EAAYM,EAAM,CAChC,KAAK,GAAK,eAAiB,KAAK,MAAM,KAAK,OAAO,GAAG,CAAC,EACtD,KAAK,WAAaN,EAClB,KAAK,KAAOM,EACZ,KAAK,OAAS,GACd,IAAI2B,EAAS,KAAMzC,EAAKQ,EAAW,GAC/BkC,EAAgB1C,EAAG,cAAc,EAAE,cACnC2C,EAAeD,EAAc,aAAeA,EAAc,aAE1DE,EAAQ,KAAK,MAAQF,EAAc,cAAc,IAAI,EACzDE,EAAM,aAAa,OAAQ,SAAS,EACpCA,EAAM,aAAa,gBAAiB,MAAM,EAC1CA,EAAM,GAAK,KAAK,GAChB,IAAIC,EAAQrC,EAAW,GAAG,QAAQ,MAClCoC,EAAM,UAAY,oBAAsBC,EACxC,KAAK,aAAe/B,EAAK,cAAgB,EAGzC,QADIgC,EAAchC,EAAK,KACdP,EAAI,EAAGA,EAAIuC,EAAY,OAAQ,EAAEvC,EAAG,CAC3C,IAAIwC,EAAMH,EAAM,YAAYF,EAAc,cAAc,IAAI,CAAC,EAAGM,EAAMF,EAAYvC,CAAC,EAC/E0C,EAAYnD,GAAsBS,GAAK,KAAK,aAAe,GAAK,IAAMR,GACtEiD,EAAI,WAAa,OAAMC,EAAYD,EAAI,UAAY,IAAMC,GAC7DF,EAAI,UAAYE,EACZ1C,GAAK,KAAK,cAAcwC,EAAI,aAAa,gBAAiB,MAAM,EACpEA,EAAI,GAAK,KAAK,GAAK,IAAMxC,EACzBwC,EAAI,aAAa,OAAQ,QAAQ,EAC7BC,EAAI,OAAQA,EAAI,OAAOD,EAAKjC,EAAMkC,CAAG,EACpCD,EAAI,YAAYL,EAAc,eAAeM,EAAI,aAAejC,EAAQiC,CAAG,CAAC,CAAC,EAClFD,EAAI,OAASxC,CACf,CAEA,IAAI2C,EAAY1C,EAAW,QAAQ,WAAakC,EAAc,KAC1DzB,EAAMjB,EAAG,aAAaQ,EAAW,QAAQ,cAAgBM,EAAK,KAAO,IAAI,EACzEqC,EAAOlC,EAAI,KAAMmC,EAAMnC,EAAI,OAAQoC,EAAQ,GAC3CC,EAAa,EAAGC,GAAY,EAChC,GAAIL,IAAcR,EAAc,KAAM,CAEpC,IAAIc,EAAwB,CAAC,WAAY,WAAY,OAAO,EAAE,QAAQb,EAAa,iBAAiBO,CAAS,EAAE,QAAQ,IAAM,GACzHO,GAAeD,EAAwBN,EAAYA,EAAU,aAC7DQ,GAAuBD,GAAa,sBAAsB,EAC1DE,GAAejB,EAAc,KAAK,sBAAsB,EAC5DY,EAAcI,GAAqB,KAAOC,GAAa,KAAOF,GAAa,WAC3EF,GAAaG,GAAqB,IAAMC,GAAa,IAAMF,GAAa,SAC1E,CACAb,EAAM,MAAM,KAAQO,EAAOG,EAAc,KACzCV,EAAM,MAAM,IAAOQ,EAAMG,GAAa,KAGtC,IAAIK,GAAOjB,EAAa,YAAc,KAAK,IAAID,EAAc,KAAK,YAAaA,EAAc,gBAAgB,WAAW,EACpHmB,GAAOlB,EAAa,aAAe,KAAK,IAAID,EAAc,KAAK,aAAcA,EAAc,gBAAgB,YAAY,EAC3HQ,EAAU,YAAYN,CAAK,EAC3B5C,EAAG,cAAc,EAAE,aAAa,oBAAqB,MAAM,EAC3DA,EAAG,cAAc,EAAE,aAAa,YAAa,KAAK,EAAE,EACpDA,EAAG,cAAc,EAAE,aAAa,wBAAyB,KAAK,GAAK,IAAM,KAAK,YAAY,EAE1F,IAAI8D,GAAMtD,EAAW,QAAQ,cAAgBoC,EAAM,sBAAsB,EAAI,IAAI,QAC7EmB,GAAUvD,EAAW,QAAQ,oBAAsBoC,EAAM,aAAeA,EAAM,aAAe,EAAI,GAGjGoB,GACJ,WAAW,UAAW,CAAEA,GAAchE,EAAG,cAAc,CAAG,CAAC,EAE3D,IAAIiE,GAAWH,GAAI,OAASD,GAC5B,GAAII,GAAW,EAAG,CAChB,IAAIC,GAASJ,GAAI,OAASA,GAAI,IAAKK,GAAaL,GAAI,KAAO7C,EAAI,OAASA,EAAI,KAAO,EAC/E4C,GAAOC,GAAI,IAAMK,IACfD,GAASC,KAAYvB,EAAM,MAAM,QAAUsB,GAASC,IAAc,MACtEvB,EAAM,MAAM,KAAQQ,EAAMnC,EAAI,IAAMiD,IAAUX,GAAa,KAC3DF,EAAQ,IAERT,EAAM,MAAM,OAAUiB,GAAOC,GAAI,IAAM,EAAK,IAEhD,CACA,IAAIM,GAAWN,GAAI,MAAQF,GAS3B,GARIG,KAASK,IAAYpE,EAAG,QAAQ,gBAChCoE,GAAW,IACTN,GAAI,MAAQA,GAAI,KAAOF,KACzBhB,EAAM,MAAM,MAASgB,GAAO,EAAK,KACjCQ,IAAaN,GAAI,MAAQA,GAAI,KAAQF,IAEvChB,EAAM,MAAM,MAAQO,EAAO,KAAK,IAAIlC,EAAI,KAAOmD,GAAWd,EAAY,CAAC,GAAK,MAE1ES,GAAS,QAASM,GAAOzB,EAAM,WAAYyB,GAAMA,GAAOA,GAAK,YAC/DA,GAAK,MAAM,aAAerE,EAAG,QAAQ,eAAiB,KAYxD,GAVAA,EAAG,UAAU,KAAK,OAAS2B,EAAYnB,EAAY,CACjD,UAAW,SAAS8D,GAAGC,GAAW,CAAE9B,EAAO,aAAaA,EAAO,aAAe6B,GAAGC,EAAS,CAAG,EAC7F,SAAU,SAASD,GAAG,CAAE7B,EAAO,aAAa6B,EAAC,CAAG,EAChD,SAAU,UAAW,CAAE,OAAO7B,EAAO,aAAa,CAAG,EACrD,OAAQK,EAAY,OACpB,MAAO,UAAW,CAAEtC,EAAW,MAAM,CAAG,EACxC,KAAM,UAAW,CAAEiC,EAAO,KAAK,CAAG,EAClC,KAAM3B,CACR,CAAC,CAAC,EAEEN,EAAW,QAAQ,eAAgB,CACrC,IAAIgE,GACJxE,EAAG,GAAG,OAAQ,KAAK,OAAS,UAAW,CAAEwE,GAAgB,WAAW,UAAW,CAAEhE,EAAW,MAAM,CAAG,EAAG,GAAG,CAAG,CAAC,EAC/GR,EAAG,GAAG,QAAS,KAAK,QAAU,UAAW,CAAE,aAAawE,EAAa,CAAG,CAAC,CAC3E,CAEAxE,EAAG,GAAG,SAAU,KAAK,SAAW,UAAW,CACzC,IAAIyE,GAAYzE,EAAG,cAAc,EAAGwB,GAASxB,EAAG,kBAAkB,EAAE,sBAAsB,EACrFgE,KAAaA,GAAchE,EAAG,cAAc,GACjD,IAAI0E,GAAStB,EAAMY,GAAY,IAAMS,GAAU,IAC3CE,GAAQD,IAAU/B,EAAa,cAAgBD,EAAc,iBAAmBA,EAAc,MAAM,WAExG,GADKW,IAAOsB,IAAS/B,EAAM,cACvB+B,IAASnD,GAAO,KAAOmD,IAASnD,GAAO,OAAQ,OAAOhB,EAAW,MAAM,EAC3EoC,EAAM,MAAM,IAAM8B,GAAS,KAC3B9B,EAAM,MAAM,KAAQO,EAAOa,GAAY,KAAOS,GAAU,KAAQ,IAClE,CAAC,EAED5E,EAAW,GAAG+C,EAAO,WAAY,SAASgC,GAAG,CAC3C,IAAIC,GAAIvC,EAAeM,EAAOgC,GAAE,QAAUA,GAAE,UAAU,EAClDC,IAAKA,GAAE,QAAU,OAAOpC,EAAO,aAAaoC,GAAE,MAAM,EAAGpC,EAAO,KAAK,EACzE,CAAC,EAED5C,EAAW,GAAG+C,EAAO,QAAS,SAASgC,GAAG,CACxC,IAAIC,GAAIvC,EAAeM,EAAOgC,GAAE,QAAUA,GAAE,UAAU,EAClDC,IAAKA,GAAE,QAAU,OACnBpC,EAAO,aAAaoC,GAAE,MAAM,EACxBrE,EAAW,QAAQ,uBAAuBiC,EAAO,KAAK,EAE9D,CAAC,EAED5C,EAAW,GAAG+C,EAAO,YAAa,UAAW,CAC3C,WAAW,UAAU,CAAC5C,EAAG,MAAM,CAAE,EAAG,EAAE,CACxC,CAAC,EAGD,IAAI8E,GAAoB,KAAK,qBAAqB,EAClD,OAAIA,GAAkB,OAAS,GAAKA,GAAkB,KAAO,IAC3D,KAAK,eAAe,EAGtBjF,EAAW,OAAOiB,EAAM,SAAUgC,EAAY,KAAK,YAAY,EAAGF,EAAM,WAAW,KAAK,YAAY,CAAC,EAC9F,EACT,CAEArB,EAAO,UAAY,CACjB,MAAO,UAAW,CAChB,GAAI,KAAK,WAAW,QAAU,KAC9B,MAAK,WAAW,OAAS,KACrB,KAAK,MAAM,YAAY,KAAK,MAAM,WAAW,YAAY,KAAK,KAAK,EACvE,KAAK,WAAW,GAAG,aAAa,KAAK,MAAM,EAC3C,IAAIwD,EAAQ,KAAK,WAAW,GAAG,cAAc,EAC7CA,EAAM,gBAAgB,uBAAuB,EAC7CA,EAAM,gBAAgB,WAAW,EAEjC,IAAI/E,EAAK,KAAK,WAAW,GACrB,KAAK,WAAW,QAAQ,iBAC1BA,EAAG,IAAI,OAAQ,KAAK,MAAM,EAC1BA,EAAG,IAAI,QAAS,KAAK,OAAO,GAE9BA,EAAG,IAAI,SAAU,KAAK,QAAQ,EAChC,EAEA,QAAS,UAAW,CAClB,KAAK,WAAW,GAAG,aAAa,KAAK,MAAM,EAC3C,IAAIyC,EAAS,KACb,KAAK,OAAS,CAAC,MAAO,UAAW,CAAEA,EAAO,OAAS,EAAM,CAAC,EAC1D,KAAK,WAAW,GAAG,UAAU,KAAK,MAAM,CAC1C,EAEA,KAAM,UAAW,CACf,KAAK,WAAW,KAAK,KAAK,KAAM,KAAK,YAAY,CACnD,EAEA,aAAc,SAASlC,EAAGgE,EAAW,CAKnC,GAJIhE,GAAK,KAAK,KAAK,KAAK,OACtBA,EAAIgE,EAAY,KAAK,KAAK,KAAK,OAAS,EAAI,EACrChE,EAAI,IACXA,EAAIgE,EAAY,EAAK,KAAK,KAAK,KAAK,OAAS,GAC3C,KAAK,cAAgBhE,EACzB,KAAI8D,EAAO,KAAK,MAAM,WAAW,KAAK,YAAY,EAC9CA,IACFA,EAAK,UAAYA,EAAK,UAAU,QAAQ,IAAMtE,EAA2B,EAAE,EAC3EsE,EAAK,gBAAgB,eAAe,GAEtCA,EAAO,KAAK,MAAM,WAAW,KAAK,aAAe9D,CAAC,EAClD8D,EAAK,WAAa,IAAMtE,EACxBsE,EAAK,aAAa,gBAAiB,MAAM,EACzC,KAAK,WAAW,GAAG,cAAc,EAAE,aAAa,wBAAyBA,EAAK,EAAE,EAChF,KAAK,eAAe,EACpBxE,EAAW,OAAO,KAAK,KAAM,SAAU,KAAK,KAAK,KAAK,KAAK,YAAY,EAAGwE,CAAI,EAChF,EAEA,eAAgB,UAAW,CACzB,IAAIS,EAAoB,KAAK,qBAAqB,EAC9CE,EAAQ,KAAK,MAAM,WAAWF,EAAkB,IAAI,EACpDG,EAAQ,KAAK,MAAM,WAAWH,EAAkB,EAAE,EAClDI,EAAY,KAAK,MAAM,WACvBF,EAAM,UAAY,KAAK,MAAM,UAC/B,KAAK,MAAM,UAAYA,EAAM,UAAYE,EAAU,UAC5CD,EAAM,UAAYA,EAAM,aAAe,KAAK,MAAM,UAAY,KAAK,MAAM,eAChF,KAAK,MAAM,UAAYA,EAAM,UAAYA,EAAM,aAAe,KAAK,MAAM,aAAeC,EAAU,UACtG,EAEA,aAAc,UAAW,CACvB,OAAO,KAAK,MAAM,KAAK,MAAM,aAAe,KAAK,MAAM,WAAW,YAAY,GAAK,CACrF,EAEA,qBAAsB,UAAW,CAC/B,IAAIC,EAAS,KAAK,WAAW,QAAQ,cAAgB,EACrD,MAAO,CACL,KAAM,KAAK,IAAI,EAAG,KAAK,aAAeA,CAAM,EAC5C,GAAI,KAAK,IAAI,KAAK,KAAK,KAAK,OAAS,EAAG,KAAK,aAAeA,CAAM,CACpE,CACF,CACF,EAEA,SAASC,EAAkBpF,EAAIqF,EAAS,CACtC,GAAI,CAACrF,EAAG,kBAAkB,EAAG,OAAOqF,EAEpC,QADIC,EAAS,CAAC,EACL/E,EAAI,EAAGA,EAAI8E,EAAQ,OAAQ9E,IAC9B8E,EAAQ9E,CAAC,EAAE,mBAAmB+E,EAAO,KAAKD,EAAQ9E,CAAC,CAAC,EAC1D,OAAO+E,CACT,CAEA,SAASjE,EAAWkE,EAAMvF,EAAIE,EAASsF,EAAU,CAC/C,GAAID,EAAK,MACPA,EAAKvF,EAAIwF,EAAUtF,CAAO,MACrB,CACL,IAAIoF,EAASC,EAAKvF,EAAIE,CAAO,EACzBoF,GAAUA,EAAO,KAAMA,EAAO,KAAKE,CAAQ,EAC1CA,EAASF,CAAM,CACtB,CACF,CAEA,SAASG,EAAiBzF,EAAIiB,EAAK,CACjC,IAAIoE,EAAUrF,EAAG,WAAWiB,EAAK,MAAM,EAAGyE,EAC1C,GAAIL,EAAQ,OAAQ,CAClB,IAAIM,EAAW,SAAS3F,EAAIwF,EAAUtF,EAAS,CAC7C,IAAI0F,EAAMR,EAAkBpF,EAAIqF,CAAO,EACvC,SAASQ,EAAItF,EAAG,CACd,GAAIA,GAAKqF,EAAI,OAAQ,OAAOJ,EAAS,IAAI,EACzCnE,EAAWuE,EAAIrF,CAAC,EAAGP,EAAIE,EAAS,SAASoF,EAAQ,CAC3CA,GAAUA,EAAO,KAAK,OAAS,EAAGE,EAASF,CAAM,EAChDO,EAAItF,EAAI,CAAC,CAChB,CAAC,CACH,CACAsF,EAAI,CAAC,CACP,EACA,OAAAF,EAAS,MAAQ,GACjBA,EAAS,kBAAoB,GACtBA,CACT,KAAO,QAAID,EAAQ1F,EAAG,UAAUA,EAAG,UAAU,EAAG,WAAW,GAClD,SAASA,EAAI,CAAE,OAAOH,EAAW,KAAK,SAASG,EAAI,CAAC,MAAO0F,CAAK,CAAC,CAAE,EACjE7F,EAAW,KAAK,QAClB,SAASG,EAAIE,EAAS,CAAE,OAAOL,EAAW,KAAK,QAAQG,EAAIE,CAAO,CAAE,EAEpE,UAAW,CAAC,CAEvB,CAEAL,EAAW,eAAe,OAAQ,OAAQ,CACxC,QAAS4F,CACX,CAAC,EAED5F,EAAW,eAAe,OAAQ,WAAY,SAASG,EAAIE,EAAS,CAClE,IAAI8C,EAAMhD,EAAG,UAAU,EAAG8F,EAAQ9F,EAAG,WAAWgD,CAAG,EAC/C+C,EAAMC,EAAOnG,EAAW,IAAImD,EAAI,KAAM8C,EAAM,KAAK,EAAGG,EAAKjD,EACzD8C,EAAM,MAAQ9C,EAAI,IAAM,KAAK,KAAK8C,EAAM,OAAO,OAAO9C,EAAI,GAAK8C,EAAM,MAAQ,CAAC,CAAC,EACjFC,EAAOD,EAAM,OAAO,OAAO,EAAG9C,EAAI,GAAK8C,EAAM,KAAK,GAElDC,EAAO,GACPC,EAAOhD,GAGT,QADIkD,EAAQ,CAAC,EACJ3F,EAAI,EAAGA,EAAIL,EAAQ,MAAM,OAAQK,IAAK,CAC7C,IAAI4F,EAAOjG,EAAQ,MAAMK,CAAC,EACtB4F,EAAK,MAAM,EAAGJ,EAAK,MAAM,GAAKA,GAChCG,EAAM,KAAKC,CAAI,CACnB,CAEA,GAAID,EAAM,OAAQ,MAAO,CAAC,KAAMA,EAAO,KAAMF,EAAM,GAAIC,CAAE,CAC3D,CAAC,EAEDpG,EAAW,SAAS,aAAeA,EAAW,SAE9C,IAAI6B,EAAiB,CACnB,KAAM7B,EAAW,KAAK,KACtB,eAAgB,GAChB,cAAe,GACf,gBAAiB,mBACjB,YAAa,GACb,eAAgB,GAChB,uBAAwB,GACxB,sBAAuB,GACvB,UAAW,KACX,WAAY,KACZ,UAAW,KACX,oBAAqB,GACrB,cAAe,EACjB,EAEAA,EAAW,aAAa,cAAe,IAAI,CAC7C,CAAC,IC1gBD,IAAAuG,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EAKC,SAASC,EAAK,CACT,OAAOF,IAAW,UAAY,OAAOC,IAAU,SACjDC,EAAI,KAAiC,IAA2B,EACzD,OAAO,QAAU,YAAc,OAAO,IAC7C,OAAO,CAAC,uBAAwB,kBAAkB,EAAGA,CAAG,EAExDA,EAAI,UAAU,CAClB,GAAG,SAASC,EAAY,CACtB,aAGAA,EAAW,aAAa,SAAU,CAAC,OAAQ,EAAK,CAAC,EAEjD,SAASC,EAAOC,EAAIC,EAAMC,EAAWC,EAAOC,EAAG,CACzCJ,EAAG,WAAYA,EAAG,WAAWC,EAAMG,EAAG,CAAC,MAAOD,EAAO,kBAAmB,GAAM,OAAQH,EAAG,QAAQ,OAAO,MAAM,CAAC,EAC9GI,EAAE,OAAOF,EAAWC,CAAK,CAAC,CACjC,CAEA,SAASE,EAAcL,EAAI,CACzB,OAAOA,EAAG,OAAO,eAAe,EAAI,sIAAwIA,EAAG,OAAO,qCAAqC,EAAI,SACjO,CAEA,SAASM,EAAcN,EAAIO,EAAQ,CACjC,IAAIC,EAAM,OAAOD,CAAM,EACvB,MAAI,QAAQ,KAAKA,CAAM,EAAUP,EAAG,UAAU,EAAE,KAAOQ,EAC3CA,EAAM,CACpB,CAEAV,EAAW,SAAS,WAAa,SAASE,EAAI,CAC5C,IAAIS,EAAMT,EAAG,UAAU,EACvBD,EAAOC,EAAIK,EAAcL,CAAE,EAAGA,EAAG,OAAO,eAAe,EAAIS,EAAI,KAAO,EAAK,IAAMA,EAAI,GAAI,SAASC,EAAQ,CACxG,GAAKA,EAEL,KAAIC,EACJ,GAAIA,EAAQ,oCAAoC,KAAKD,CAAM,EACzDV,EAAG,UAAUM,EAAcN,EAAIW,EAAM,CAAC,CAAC,EAAG,OAAOA,EAAM,CAAC,CAAC,CAAC,UACjDA,EAAQ,gCAAgC,KAAKD,CAAM,EAAG,CAC/D,IAAIE,EAAO,KAAK,MAAMZ,EAAG,UAAU,EAAI,OAAOW,EAAM,CAAC,CAAC,EAAI,GAAG,EACzD,QAAQ,KAAKA,EAAM,CAAC,CAAC,IAAGC,EAAOH,EAAI,KAAOG,EAAO,GACrDZ,EAAG,UAAUY,EAAO,EAAGH,EAAI,EAAE,CAC/B,MAAWE,EAAQ,4BAA4B,KAAKD,CAAM,IACxDV,EAAG,UAAUM,EAAcN,EAAIW,EAAM,CAAC,CAAC,EAAGF,EAAI,EAAE,EAEpD,CAAC,CACH,EAEAX,EAAW,OAAO,QAAW,OAAO,EAAI,YAC1C,CAAC,ICpDD,IAAAe,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EAGC,SAASC,EAAK,CACT,OAAOF,IAAW,UAAY,OAAOC,IAAU,SACjDC,EAAI,IAA+B,EAC5B,OAAO,QAAU,YAAc,OAAO,IAC7C,OAAO,CAAC,sBAAsB,EAAGA,CAAG,EAEpCA,EAAI,UAAU,CAClB,GAAG,SAASC,EAAY,CACtB,aACA,IAAIC,EAAMD,EAAW,IAErB,SAASE,EAAYC,EAAQ,CAC3B,IAAIC,EAAQD,EAAO,MACnB,OAAOC,IAAyBD,EAAO,WAAa,IAAM,KACrDA,EAAO,OAAS,IAAM,KACtBA,EAAO,UAAY,IAAM,GAChC,CAEA,SAASE,EAAYF,EAAQC,EAAO,CAElC,QADIE,EAAUJ,EAAYC,CAAM,EAAGI,EAASD,EACnCE,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,IAASD,EAAO,QAAQH,EAAM,OAAOI,CAAC,CAAC,GAAK,KAC5ED,GAAUH,EAAM,OAAOI,CAAC,GAC1B,OAAOF,GAAWC,EAASJ,EAAS,IAAI,OAAOA,EAAO,OAAQI,CAAM,CACtE,CAEA,SAASE,EAAeN,EAAQ,CAC9B,MAAO,0BAA0B,KAAKA,EAAO,MAAM,CACrD,CAEA,SAASO,EAAoBC,EAAKR,EAAQS,EAAO,CAC/CT,EAASE,EAAYF,EAAQ,GAAG,EAChC,QAASU,EAAOD,EAAM,KAAME,EAAKF,EAAM,GAAIG,EAAOJ,EAAI,SAAS,EAAGE,GAAQE,EAAMF,IAAQC,EAAK,EAAG,CAC9FX,EAAO,UAAYW,EACnB,IAAIE,EAASL,EAAI,QAAQE,CAAI,EAAGI,EAAQd,EAAO,KAAKa,CAAM,EAC1D,GAAIC,EACF,MAAO,CAAC,KAAMhB,EAAIY,EAAMI,EAAM,KAAK,EAC3B,GAAIhB,EAAIY,EAAMI,EAAM,MAAQA,EAAM,CAAC,EAAE,MAAM,EAC3C,MAAOA,CAAK,CACxB,CACF,CAEA,SAASC,EAA6BP,EAAKR,EAAQS,EAAO,CACxD,GAAI,CAACH,EAAeN,CAAM,EAAG,OAAOO,EAAoBC,EAAKR,EAAQS,CAAK,EAE1ET,EAASE,EAAYF,EAAQ,IAAI,EAEjC,QADIa,EAAQG,EAAQ,EACXN,EAAOD,EAAM,KAAMG,EAAOJ,EAAI,SAAS,EAAGE,GAAQE,GAAO,CAMhE,QAASP,EAAI,EAAGA,EAAIW,GACd,EAAAN,EAAOE,GADcP,IAAK,CAE9B,IAAIY,EAAUT,EAAI,QAAQE,GAAM,EAChCG,EAASA,GAAU,KAAOI,EAAUJ,EAAS;AAAA,EAAOI,CACtD,CACAD,EAAQA,EAAQ,EAChBhB,EAAO,UAAYS,EAAM,GACzB,IAAIK,EAAQd,EAAO,KAAKa,CAAM,EAC9B,GAAIC,EAAO,CACT,IAAII,EAASL,EAAO,MAAM,EAAGC,EAAM,KAAK,EAAE,MAAM;AAAA,CAAI,EAAGK,EAASL,EAAM,CAAC,EAAE,MAAM;AAAA,CAAI,EAC/EM,EAAYX,EAAM,KAAOS,EAAO,OAAS,EAAGG,EAAUH,EAAOA,EAAO,OAAS,CAAC,EAAE,OACpF,MAAO,CAAC,KAAMpB,EAAIsB,EAAWC,CAAO,EAC5B,GAAIvB,EAAIsB,EAAYD,EAAO,OAAS,EAC5BA,EAAO,QAAU,EAAIE,EAAUF,EAAO,CAAC,EAAE,OAASA,EAAOA,EAAO,OAAS,CAAC,EAAE,MAAM,EAC1F,MAAOL,CAAK,CACtB,CACF,CACF,CAEA,SAASQ,EAAYT,EAAQb,EAAQuB,EAAW,CAE9C,QADIT,EAAOU,EAAO,EACXA,GAAQX,EAAO,QAAQ,CAC5Bb,EAAO,UAAYwB,EACnB,IAAIC,EAAWzB,EAAO,KAAKa,CAAM,EACjC,GAAI,CAACY,EAAU,MACf,IAAIC,EAAMD,EAAS,MAAQA,EAAS,CAAC,EAAE,OACvC,GAAIC,EAAMb,EAAO,OAASU,EAAW,OACjC,CAACT,GAASY,EAAMZ,EAAM,MAAQA,EAAM,CAAC,EAAE,UACzCA,EAAQW,GACVD,EAAOC,EAAS,MAAQ,CAC1B,CACA,OAAOX,CACT,CAEA,SAASa,EAAqBnB,EAAKR,EAAQS,EAAO,CAChDT,EAASE,EAAYF,EAAQ,GAAG,EAChC,QAASU,EAAOD,EAAM,KAAME,EAAKF,EAAM,GAAImB,EAAQpB,EAAI,UAAU,EAAGE,GAAQkB,EAAOlB,IAAQC,EAAK,GAAI,CAClG,IAAIE,EAASL,EAAI,QAAQE,CAAI,EACzBI,EAAQQ,EAAYT,EAAQb,EAAQW,EAAK,EAAI,EAAIE,EAAO,OAASF,CAAE,EACvE,GAAIG,EACF,MAAO,CAAC,KAAMhB,EAAIY,EAAMI,EAAM,KAAK,EAC3B,GAAIhB,EAAIY,EAAMI,EAAM,MAAQA,EAAM,CAAC,EAAE,MAAM,EAC3C,MAAOA,CAAK,CACxB,CACF,CAEA,SAASe,EAA8BrB,EAAKR,EAAQS,EAAO,CACzD,GAAI,CAACH,EAAeN,CAAM,EAAG,OAAO2B,EAAqBnB,EAAKR,EAAQS,CAAK,EAC3ET,EAASE,EAAYF,EAAQ,IAAI,EAEjC,QADIa,EAAQiB,EAAY,EAAGP,EAAYf,EAAI,QAAQC,EAAM,IAAI,EAAE,OAASA,EAAM,GACrEC,EAAOD,EAAM,KAAMmB,EAAQpB,EAAI,UAAU,EAAGE,GAAQkB,GAAQ,CACnE,QAASvB,EAAI,EAAGA,EAAIyB,GAAapB,GAAQkB,EAAOvB,IAAK,CACnD,IAAIY,EAAUT,EAAI,QAAQE,GAAM,EAChCG,EAASA,GAAU,KAAOI,EAAUA,EAAU;AAAA,EAAOJ,CACvD,CACAiB,GAAa,EAEb,IAAIhB,EAAQQ,EAAYT,EAAQb,EAAQuB,CAAS,EACjD,GAAIT,EAAO,CACT,IAAII,EAASL,EAAO,MAAM,EAAGC,EAAM,KAAK,EAAE,MAAM;AAAA,CAAI,EAAGK,EAASL,EAAM,CAAC,EAAE,MAAM;AAAA,CAAI,EAC/EM,EAAYV,EAAOQ,EAAO,OAAQG,EAAUH,EAAOA,EAAO,OAAS,CAAC,EAAE,OAC1E,MAAO,CAAC,KAAMpB,EAAIsB,EAAWC,CAAO,EAC5B,GAAIvB,EAAIsB,EAAYD,EAAO,OAAS,EAC5BA,EAAO,QAAU,EAAIE,EAAUF,EAAO,CAAC,EAAE,OAASA,EAAOA,EAAO,OAAS,CAAC,EAAE,MAAM,EAC1F,MAAOL,CAAK,CACtB,CACF,CACF,CAEA,IAAIiB,EAAQC,EACR,OAAO,UAAU,WACnBD,EAAS,SAASE,EAAK,CAAE,OAAOA,EAAI,UAAU,KAAK,EAAE,YAAY,CAAE,EACnED,EAAS,SAASC,EAAK,CAAE,OAAOA,EAAI,UAAU,KAAK,CAAE,IAErDF,EAAS,SAASE,EAAK,CAAE,OAAOA,EAAI,YAAY,CAAE,EAClDD,EAAS,SAASC,EAAK,CAAE,OAAOA,CAAI,GAKtC,SAASC,EAAUC,EAAMC,EAAQC,EAAKC,EAAU,CAC9C,GAAIH,EAAK,QAAUC,EAAO,OAAQ,OAAOC,EACzC,QAASE,EAAM,EAAGC,EAAMH,EAAM,KAAK,IAAI,EAAGF,EAAK,OAASC,EAAO,MAAM,IAAK,CACxE,GAAIG,GAAOC,EAAK,OAAOD,EACvB,IAAIE,EAAOF,EAAMC,GAAQ,EACrBE,EAAMJ,EAASH,EAAK,MAAM,EAAGM,CAAG,CAAC,EAAE,OACvC,GAAIC,GAAOL,EAAK,OAAOI,EACdC,EAAML,EAAKG,EAAMC,EACrBF,EAAME,EAAM,CACnB,CACF,CAEA,SAASE,EAAoBnC,EAAKoC,EAAOnC,EAAOoC,EAAU,CAGxD,GAAI,CAACD,EAAM,OAAQ,OAAO,KAC1B,IAAIE,EAAOD,EAAWd,EAASC,EAC3Be,EAAQD,EAAKF,CAAK,EAAE,MAAM,UAAU,EAExCI,EAAQ,QAAStC,EAAOD,EAAM,KAAME,EAAKF,EAAM,GAAIG,EAAOJ,EAAI,SAAS,EAAI,EAAIuC,EAAM,OAAQrC,GAAQE,EAAMF,IAAQC,EAAK,EAAG,CACzH,IAAIwB,EAAO3B,EAAI,QAAQE,CAAI,EAAE,MAAMC,CAAE,EAAGE,EAASiC,EAAKX,CAAI,EAC1D,GAAIY,EAAM,QAAU,EAAG,CACrB,IAAIE,EAAQpC,EAAO,QAAQkC,EAAM,CAAC,CAAC,EACnC,GAAIE,GAAS,GAAI,SAASD,EAC1B,IAAIvC,EAAQyB,EAAUC,EAAMtB,EAAQoC,EAAOH,CAAI,EAAInC,EACnD,MAAO,CAAC,KAAMb,EAAIY,EAAMwB,EAAUC,EAAMtB,EAAQoC,EAAOH,CAAI,EAAInC,CAAE,EACzD,GAAIb,EAAIY,EAAMwB,EAAUC,EAAMtB,EAAQoC,EAAQF,EAAM,CAAC,EAAE,OAAQD,CAAI,EAAInC,CAAE,CAAC,CACpF,KAAO,CACL,IAAIuC,EAAUrC,EAAO,OAASkC,EAAM,CAAC,EAAE,OACvC,GAAIlC,EAAO,MAAMqC,CAAO,GAAKH,EAAM,CAAC,EAAG,SAASC,EAChD,QAAS3C,EAAI,EAAGA,EAAI0C,EAAM,OAAS,EAAG1C,IACpC,GAAIyC,EAAKtC,EAAI,QAAQE,EAAOL,CAAC,CAAC,GAAK0C,EAAM1C,CAAC,EAAG,SAAS2C,EACxD,IAAItB,EAAMlB,EAAI,QAAQE,EAAOqC,EAAM,OAAS,CAAC,EAAGI,EAAYL,EAAKpB,CAAG,EAAG0B,EAAWL,EAAMA,EAAM,OAAS,CAAC,EACxG,GAAII,EAAU,MAAM,EAAGC,EAAS,MAAM,GAAKA,EAAU,SAASJ,EAC9D,MAAO,CAAC,KAAMlD,EAAIY,EAAMwB,EAAUC,EAAMtB,EAAQqC,EAASJ,CAAI,EAAInC,CAAE,EAC3D,GAAIb,EAAIY,EAAOqC,EAAM,OAAS,EAAGb,EAAUR,EAAKyB,EAAWC,EAAS,OAAQN,CAAI,CAAC,CAAC,CAC5F,CACF,CACF,CAEA,SAASO,EAAqB7C,EAAKoC,EAAOnC,EAAOoC,EAAU,CACzD,GAAI,CAACD,EAAM,OAAQ,OAAO,KAC1B,IAAIE,EAAOD,EAAWd,EAASC,EAC3Be,EAAQD,EAAKF,CAAK,EAAE,MAAM,UAAU,EAExCI,EAAQ,QAAStC,EAAOD,EAAM,KAAME,EAAKF,EAAM,GAAImB,EAAQpB,EAAI,UAAU,EAAI,EAAIuC,EAAM,OAAQrC,GAAQkB,EAAOlB,IAAQC,EAAK,GAAI,CAC7H,IAAIwB,EAAO3B,EAAI,QAAQE,CAAI,EACvBC,EAAK,KAAIwB,EAAOA,EAAK,MAAM,EAAGxB,CAAE,GACpC,IAAIE,EAASiC,EAAKX,CAAI,EACtB,GAAIY,EAAM,QAAU,EAAG,CACrB,IAAIE,EAAQpC,EAAO,YAAYkC,EAAM,CAAC,CAAC,EACvC,GAAIE,GAAS,GAAI,SAASD,EAC1B,MAAO,CAAC,KAAMlD,EAAIY,EAAMwB,EAAUC,EAAMtB,EAAQoC,EAAOH,CAAI,CAAC,EACpD,GAAIhD,EAAIY,EAAMwB,EAAUC,EAAMtB,EAAQoC,EAAQF,EAAM,CAAC,EAAE,OAAQD,CAAI,CAAC,CAAC,CAC/E,KAAO,CACL,IAAIM,EAAWL,EAAMA,EAAM,OAAS,CAAC,EACrC,GAAIlC,EAAO,MAAM,EAAGuC,EAAS,MAAM,GAAKA,EAAU,SAASJ,EAC3D,QAAS3C,EAAI,EAAGI,EAAQC,EAAOqC,EAAM,OAAS,EAAG1C,EAAI0C,EAAM,OAAS,EAAG1C,IACrE,GAAIyC,EAAKtC,EAAI,QAAQC,EAAQJ,CAAC,CAAC,GAAK0C,EAAM1C,CAAC,EAAG,SAAS2C,EACzD,IAAIM,EAAM9C,EAAI,QAAQE,EAAO,EAAIqC,EAAM,MAAM,EAAGQ,EAAYT,EAAKQ,CAAG,EACpE,GAAIC,EAAU,MAAMA,EAAU,OAASR,EAAM,CAAC,EAAE,MAAM,GAAKA,EAAM,CAAC,EAAG,SAASC,EAC9E,MAAO,CAAC,KAAMlD,EAAIY,EAAO,EAAIqC,EAAM,OAAQb,EAAUoB,EAAKC,EAAWD,EAAI,OAASP,EAAM,CAAC,EAAE,OAAQD,CAAI,CAAC,EAChG,GAAIhD,EAAIY,EAAMwB,EAAUC,EAAMtB,EAAQuC,EAAS,OAAQN,CAAI,CAAC,CAAC,CACvE,CACF,CACF,CAEA,SAASU,EAAahD,EAAKoC,EAAOP,EAAKoB,EAAS,CAC9C,KAAK,aAAe,GACpB,KAAK,gBAAkB,GACvB,KAAK,IAAMjD,EACX6B,EAAMA,EAAM7B,EAAI,QAAQ6B,CAAG,EAAIvC,EAAI,EAAG,CAAC,EACvC,KAAK,IAAM,CAAC,KAAMuC,EAAK,GAAIA,CAAG,EAE9B,IAAIQ,EACA,OAAOY,GAAW,SACpBZ,EAAWY,EAAQ,UAEnBZ,EAAWY,EACXA,EAAU,MAGR,OAAOb,GAAS,UACdC,GAAY,OAAMA,EAAW,IACjC,KAAK,QAAU,SAASa,EAASrB,EAAK,CACpC,OAAQqB,EAAUL,EAAuBV,GAAqBnC,EAAKoC,EAAOP,EAAKQ,CAAQ,CACzF,IAEAD,EAAQ1C,EAAY0C,EAAO,IAAI,EAC3B,CAACa,GAAWA,EAAQ,YAAc,GACpC,KAAK,QAAU,SAASC,EAASrB,EAAK,CACpC,OAAQqB,EAAU7B,EAAgCd,GAA8BP,EAAKoC,EAAOP,CAAG,CACjG,EAEA,KAAK,QAAU,SAASqB,EAASrB,EAAK,CACpC,OAAQqB,EAAU/B,EAAuBpB,GAAqBC,EAAKoC,EAAOP,CAAG,CAC/E,EAEN,CAEAmB,EAAa,UAAY,CACvB,SAAU,UAAW,CAAC,OAAO,KAAK,KAAK,EAAK,CAAC,EAC7C,aAAc,UAAW,CAAC,OAAO,KAAK,KAAK,EAAI,CAAC,EAEhD,KAAM,SAASE,EAAS,CACtB,IAAIC,EAAO,KAAK,IAAI,QAAQD,EAAU,KAAK,IAAI,KAAO,KAAK,IAAI,EAAE,EACjE,GAAI,KAAK,iBAAmB,KAAK,eAE/BC,EAAO7D,EAAI6D,EAAK,KAAMA,EAAK,EAAE,EACzBD,GACFC,EAAK,KACDA,EAAK,GAAK,IACZA,EAAK,OACLA,EAAK,IAAM,KAAK,IAAI,QAAQA,EAAK,IAAI,GAAK,IAAI,UAGhDA,EAAK,KACDA,EAAK,IAAM,KAAK,IAAI,QAAQA,EAAK,IAAI,GAAK,IAAI,SAChDA,EAAK,GAAK,EACVA,EAAK,SAGL9D,EAAW,OAAO8D,EAAM,KAAK,IAAI,QAAQA,CAAI,CAAC,GAAK,GACpD,OAAO,KAAK,aAAe,GAGhC,IAAIC,EAAS,KAAK,QAAQF,EAASC,CAAI,EAGvC,GAFA,KAAK,gBAAkBC,GAAU/D,EAAW,OAAO+D,EAAO,KAAMA,EAAO,EAAE,GAAK,EAE1EA,EACF,YAAK,IAAMA,EACX,KAAK,aAAe,GACb,KAAK,IAAI,OAAS,GAEzB,IAAIlC,EAAM5B,EAAI4D,EAAU,KAAK,IAAI,UAAU,EAAI,KAAK,IAAI,SAAS,EAAI,EAAG,CAAC,EACzE,YAAK,IAAM,CAAC,KAAMhC,EAAK,GAAIA,CAAG,EACvB,KAAK,aAAe,EAE/B,EAEA,KAAM,UAAW,CAAC,GAAI,KAAK,aAAc,OAAO,KAAK,IAAI,IAAI,EAC7D,GAAI,UAAW,CAAC,GAAI,KAAK,aAAc,OAAO,KAAK,IAAI,EAAE,EAEzD,QAAS,SAASmC,EAASC,EAAQ,CACjC,GAAK,KAAK,aACV,KAAIf,EAAQlD,EAAW,WAAWgE,CAAO,EACzC,KAAK,IAAI,aAAad,EAAO,KAAK,IAAI,KAAM,KAAK,IAAI,GAAIe,CAAM,EAC/D,KAAK,IAAI,GAAKhE,EAAI,KAAK,IAAI,KAAK,KAAOiD,EAAM,OAAS,EACpCA,EAAMA,EAAM,OAAS,CAAC,EAAE,QAAUA,EAAM,QAAU,EAAI,KAAK,IAAI,KAAK,GAAK,EAAE,EAC/F,CACF,EAEAlD,EAAW,gBAAgB,kBAAmB,SAAS+C,EAAOP,EAAKQ,EAAU,CAC3E,OAAO,IAAIW,EAAa,KAAK,IAAKZ,EAAOP,EAAKQ,CAAQ,CACxD,CAAC,EACDhD,EAAW,mBAAmB,kBAAmB,SAAS+C,EAAOP,EAAKQ,EAAU,CAC9E,OAAO,IAAIW,EAAa,KAAMZ,EAAOP,EAAKQ,CAAQ,CACpD,CAAC,EAEDhD,EAAW,gBAAgB,gBAAiB,SAAS+C,EAAOC,EAAU,CAGpE,QAFIkB,EAAS,CAAC,EACVC,EAAM,KAAK,gBAAgBpB,EAAO,KAAK,UAAU,MAAM,EAAGC,CAAQ,EAC/DmB,EAAI,SAAS,GACd,EAAAnE,EAAW,OAAOmE,EAAI,GAAG,EAAG,KAAK,UAAU,IAAI,CAAC,EAAI,IACxDD,EAAO,KAAK,CAAC,OAAQC,EAAI,KAAK,EAAG,KAAMA,EAAI,GAAG,CAAC,CAAC,EAE9CD,EAAO,QACT,KAAK,cAAcA,EAAQ,CAAC,CAChC,CAAC,CACH,CAAC,IChTD,IAAAE,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EAWC,SAASC,EAAK,CACT,OAAOF,IAAW,UAAY,OAAOC,IAAU,SACjDC,EAAI,KAAiC,KAA2B,IAA2B,EACpF,OAAO,QAAU,YAAc,OAAO,IAC7C,OAAO,CAAC,uBAAwB,iBAAkB,kBAAkB,EAAGA,CAAG,EAE1EA,EAAI,UAAU,CAClB,GAAG,SAASC,EAAY,CACtB,aAGAA,EAAW,aAAa,SAAU,CAAC,OAAQ,EAAK,CAAC,EAEjD,SAASC,EAAcC,EAAOC,EAAiB,CAC7C,OAAI,OAAOD,GAAS,SAClBA,EAAQ,IAAI,OAAOA,EAAM,QAAQ,sCAAuC,MAAM,EAAGC,EAAkB,KAAO,GAAG,EACrGD,EAAM,SACdA,EAAQ,IAAI,OAAOA,EAAM,OAAQA,EAAM,WAAa,KAAO,GAAG,GAEzD,CAAC,MAAO,SAASE,EAAQ,CAC9BF,EAAM,UAAYE,EAAO,IACzB,IAAIC,EAAQH,EAAM,KAAKE,EAAO,MAAM,EACpC,GAAIC,GAASA,EAAM,OAASD,EAAO,IACjC,OAAAA,EAAO,KAAOC,EAAM,CAAC,EAAE,QAAU,EAC1B,YACEA,EACTD,EAAO,IAAMC,EAAM,MAEnBD,EAAO,UAAU,CAErB,CAAC,CACH,CAEA,SAASE,GAAc,CACrB,KAAK,QAAU,KAAK,MAAQ,KAAK,UAAY,KAAK,MAAQ,KAC1D,KAAK,QAAU,IACjB,CAEA,SAASC,EAAeC,EAAI,CAC1B,OAAOA,EAAG,MAAM,SAAWA,EAAG,MAAM,OAAS,IAAIF,EACnD,CAEA,SAASG,EAAqBP,EAAO,CACnC,OAAO,OAAOA,GAAS,UAAYA,GAASA,EAAM,YAAY,CAChE,CAEA,SAASQ,EAAgBF,EAAIN,EAAOS,EAAK,CAEvC,OAAOH,EAAG,gBAAgBN,EAAOS,EAAK,CAAC,SAAUF,EAAqBP,CAAK,EAAG,UAAW,EAAI,CAAC,CAChG,CAEA,SAASU,EAAiBJ,EAAIK,EAAMC,EAAOC,EAASC,EAAW,CAC7DR,EAAG,WAAWK,EAAME,EAAS,CAC3B,MAAOD,EACP,kBAAmB,GACnB,aAAc,GACd,QAAS,UAAW,CAAEG,EAAYT,CAAE,CAAG,EACvC,UAAWQ,EACX,OAAQR,EAAG,QAAQ,OAAO,MAC5B,CAAC,CACH,CAEA,SAASU,EAAOV,EAAIK,EAAMM,EAAWL,EAAOM,EAAG,CACzCZ,EAAG,WAAYA,EAAG,WAAWK,EAAMO,EAAG,CAAC,MAAON,EAAO,kBAAmB,GAAM,OAAQN,EAAG,QAAQ,OAAO,MAAM,CAAC,EAC9GY,EAAE,OAAOD,EAAWL,CAAK,CAAC,CACjC,CAEA,SAASO,EAAcb,EAAIK,EAAMM,EAAWG,EAAI,CAC1Cd,EAAG,YAAaA,EAAG,YAAYK,EAAMS,CAAE,EAClC,QAAQH,CAAS,GAAGG,EAAG,CAAC,EAAE,CACrC,CAEA,SAASC,EAAYC,EAAQ,CAC3B,OAAOA,EAAO,QAAQ,eAAgB,SAASnB,EAAOoB,EAAI,CACxD,OAAIA,GAAM,IAAY;AAAA,EAClBA,GAAM,IAAY,KAClBA,GAAM,IAAY,IAClBA,GAAM,KAAa,KAChBpB,CACT,CAAC,CACH,CAEA,SAASqB,EAAWxB,EAAO,CACzB,IAAIyB,EAAOzB,EAAM,MAAM,oBAAoB,EAC3C,GAAIyB,EACF,GAAI,CAAEzB,EAAQ,IAAI,OAAOyB,EAAK,CAAC,EAAGA,EAAK,CAAC,EAAE,QAAQ,GAAG,GAAK,GAAK,GAAK,GAAG,CAAG,MACjE,CAAC,MAEVzB,EAAQqB,EAAYrB,CAAK,EAE3B,OAAI,OAAOA,GAAS,SAAWA,GAAS,GAAKA,EAAM,KAAK,EAAE,KACxDA,EAAQ,MACHA,CACT,CAEA,SAAS0B,EAAYpB,EAAIqB,EAAO3B,EAAO,CACrC2B,EAAM,UAAY3B,EAClB2B,EAAM,MAAQH,EAAWxB,CAAK,EAC9BM,EAAG,cAAcqB,EAAM,QAASpB,EAAqBoB,EAAM,KAAK,CAAC,EACjEA,EAAM,QAAU5B,EAAc4B,EAAM,MAAOpB,EAAqBoB,EAAM,KAAK,CAAC,EAC5ErB,EAAG,WAAWqB,EAAM,OAAO,EACvBrB,EAAG,yBACDqB,EAAM,WAAYA,EAAM,SAAS,MAAM,EAAGA,EAAM,SAAW,MAC/DA,EAAM,SAAWrB,EAAG,uBAAuBqB,EAAM,MAAOpB,EAAqBoB,EAAM,KAAK,CAAC,EAE7F,CAEA,SAASC,EAAStB,EAAIuB,EAAKC,EAAYC,EAAW,CAChD,IAAIJ,EAAQtB,EAAeC,CAAE,EAC7B,GAAIqB,EAAM,MAAO,OAAOK,EAAS1B,EAAIuB,CAAG,EACxC,IAAII,EAAI3B,EAAG,aAAa,GAAKqB,EAAM,UAEnC,GADIM,aAAa,QAAUA,EAAE,QAAU,OAAMA,EAAI,MAC7CH,GAAcxB,EAAG,WAAY,CAC/B,IAAI4B,EAAS,KACTC,EAAa,SAASnC,EAAOoC,EAAO,CACtCtC,EAAW,OAAOsC,CAAK,EAClBpC,IACDA,GAAS2B,EAAM,YACjBD,EAAYpB,EAAIqB,EAAO3B,CAAK,EAC5B2B,EAAM,QAAUA,EAAM,MAAQrB,EAAG,UAAU,GAEzC4B,IAAQA,EAAO,MAAM,QAAU,GACnCF,EAAS1B,EAAI8B,EAAM,SAAU,SAASC,EAAGC,EAAI,CAC3C,IAAItB,GACAsB,EAAG,KAAO,GAAK,SAAS,gBACvBtB,GAASV,EAAG,QAAQ,QAAQ,cAAc,oBAAoB,IAC/DU,GAAO,sBAAsB,EAAE,OAAS,EAAIV,EAAG,aAAagC,EAAI,QAAQ,EAAE,OAC3EJ,EAASlB,IAAQ,MAAM,QAAU,GACtC,CAAC,EACH,EACAN,EAAiBJ,EAAIiC,EAAejC,CAAE,EAAG2B,EAAGE,EAAY,SAASC,EAAOpC,EAAO,CAC7E,IAAIwC,EAAU1C,EAAW,QAAQsC,CAAK,EAClCK,EAAQnC,EAAG,UAAU,WAAW,EAAGoC,GAAOD,GAASA,EAAMD,CAAO,GAAM1C,EAAW,OAAOQ,EAAG,UAAU,QAAQ,CAAC,EAAEkC,CAAO,EACvHE,IAAO,YAAcA,IAAO,YAC9BA,IAAO,sBAAwBA,IAAO,sBACtC5C,EAAW,OAAOsC,CAAK,EACvBV,EAAYpB,EAAID,EAAeC,CAAE,EAAGN,CAAK,EACzCM,EAAG,YAAYoC,EAAG,IACTA,IAAO,QAAUA,IAAO,oBACjC5C,EAAW,OAAOsC,CAAK,EACvBD,EAAWnC,EAAOoC,CAAK,EAE3B,CAAC,EACGL,GAAaE,IACfP,EAAYpB,EAAIqB,EAAOM,CAAC,EACxBD,EAAS1B,EAAIuB,CAAG,EAEpB,MACEb,EAAOV,EAAIiC,EAAejC,CAAE,EAAG,cAAe2B,EAAG,SAASjC,EAAO,CAC3DA,GAAS,CAAC2B,EAAM,OAAOrB,EAAG,UAAU,UAAW,CACjDoB,EAAYpB,EAAIqB,EAAO3B,CAAK,EAC5B2B,EAAM,QAAUA,EAAM,MAAQrB,EAAG,UAAU,EAC3C0B,EAAS1B,EAAIuB,CAAG,CAClB,CAAC,CACH,CAAC,CAEL,CAEA,SAASG,EAAS1B,EAAIuB,EAAKc,EAAU,CAACrC,EAAG,UAAU,UAAW,CAC5D,IAAIqB,EAAQtB,EAAeC,CAAE,EACzBsC,EAASpC,EAAgBF,EAAIqB,EAAM,MAAOE,EAAMF,EAAM,QAAUA,EAAM,KAAK,EAC3E,CAACiB,EAAO,KAAKf,CAAG,IAClBe,EAASpC,EAAgBF,EAAIqB,EAAM,MAAOE,EAAM/B,EAAW,IAAIQ,EAAG,SAAS,CAAC,EAAIR,EAAW,IAAIQ,EAAG,UAAU,EAAG,CAAC,CAAC,EAC7G,CAACsC,EAAO,KAAKf,CAAG,KAEtBvB,EAAG,aAAasC,EAAO,KAAK,EAAGA,EAAO,GAAG,CAAC,EAC1CtC,EAAG,eAAe,CAAC,KAAMsC,EAAO,KAAK,EAAG,GAAIA,EAAO,GAAG,CAAC,EAAG,EAAE,EAC5DjB,EAAM,QAAUiB,EAAO,KAAK,EAAGjB,EAAM,MAAQiB,EAAO,GAAG,EACnDD,GAAUA,EAASC,EAAO,KAAK,EAAGA,EAAO,GAAG,CAAC,EACnD,CAAC,CAAE,CAEH,SAAS7B,EAAYT,EAAI,CAACA,EAAG,UAAU,UAAW,CAChD,IAAIqB,EAAQtB,EAAeC,CAAE,EAC7BqB,EAAM,UAAYA,EAAM,MACnBA,EAAM,QACXA,EAAM,MAAQA,EAAM,UAAY,KAChCrB,EAAG,cAAcqB,EAAM,OAAO,EAC1BA,EAAM,WAAYA,EAAM,SAAS,MAAM,EAAGA,EAAM,SAAW,MACjE,CAAC,CAAE,CAEH,SAASkB,EAAGC,EAAKC,EAAO,CACtB,IAAIC,EAAUF,EAAM,SAAS,cAAcA,CAAG,EAAI,SAAS,uBAAuB,EAClF,QAASG,KAAOF,EACdC,EAAQC,CAAG,EAAIF,EAAME,CAAG,EAE1B,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CACzC,IAAIC,EAAQ,UAAUD,CAAC,EACvBF,EAAQ,YAAY,OAAOG,GAAS,SAAW,SAAS,eAAeA,CAAK,EAAIA,CAAK,CACvF,CACA,OAAOH,CACT,CAEA,SAAST,EAAejC,EAAK,CAC3B,IAAI8C,EAAQP,EAAG,QAAS,CAAC,UAAW,yBAAyB,EAC9CvC,EAAG,OAAO,SAAS,EACnBuC,EAAG,QAAS,CAAC,KAAM,OAAQ,MAAS,cAAe,UAAW,0BACjD,GAAI,yBAAyB,CAAC,CAAC,EAC3D,OAAAO,EAAM,aAAa,MAAM,yBAAyB,EAC3CP,EAAG,GAAI,KAAMO,EAAO,IACjBP,EAAG,OAAQ,CAAC,MAAO,cAAe,UAAW,wBAAwB,EAClEvC,EAAG,OAAO,qCAAqC,CAAC,CAAC,CAChE,CACA,SAAS+C,EAAsB/C,EAAI,CACjC,OAAOuC,EAAG,GAAI,KAAM,IACVA,EAAG,QAAS,CAAC,KAAM,OAAQ,MAAS,cAAe,UAAW,yBAAyB,CAAC,EAAG,IAC3FA,EAAG,OAAQ,CAAC,MAAO,cAAe,UAAW,wBAAwB,EAClEvC,EAAG,OAAO,qCAAqC,CAAC,CAAC,CAChE,CACA,SAASgD,EAA0BhD,EAAI,CACrC,OAAOuC,EAAG,GAAI,KACJA,EAAG,OAAQ,CAAC,UAAW,yBAAyB,EAAGvC,EAAG,OAAO,OAAO,CAAC,EAAG,IACxEuC,EAAG,QAAS,CAAC,KAAM,OAAQ,MAAS,cAAe,UAAW,yBAAyB,CAAC,CAAC,CACrG,CACA,SAASU,EAAoBjD,EAAI,CAC/B,OAAOuC,EAAG,GAAI,KACJA,EAAG,OAAQ,CAAC,UAAW,yBAAyB,EAAGvC,EAAG,OAAO,UAAU,CAAC,EAAG,IAC3EuC,EAAG,SAAU,CAAC,EAAGvC,EAAG,OAAO,KAAK,CAAC,EAAG,IACpCuC,EAAG,SAAU,CAAC,EAAGvC,EAAG,OAAO,IAAI,CAAC,EAAG,IACnCuC,EAAG,SAAU,CAAC,EAAGvC,EAAG,OAAO,KAAK,CAAC,EAAG,IACpCuC,EAAG,SAAU,CAAC,EAAGvC,EAAG,OAAO,MAAM,CAAC,CAAC,CAC/C,CAEA,SAASkD,EAAWlD,EAAIN,EAAOW,EAAM,CACnCL,EAAG,UAAU,UAAW,CACtB,QAASsC,EAASpC,EAAgBF,EAAIN,CAAK,EAAG4C,EAAO,SAAS,GAC5D,GAAI,OAAO5C,GAAS,SAAU,CAC5B,IAAIG,EAAQG,EAAG,SAASsC,EAAO,KAAK,EAAGA,EAAO,GAAG,CAAC,EAAE,MAAM5C,CAAK,EAC/D4C,EAAO,QAAQjC,EAAK,QAAQ,UAAW,SAAS0B,EAAGa,EAAG,CAAC,OAAO/C,EAAM+C,CAAC,CAAE,CAAC,CAAC,CAC3E,MAAON,EAAO,QAAQjC,CAAI,CAE9B,CAAC,CACH,CAEA,SAAS8C,EAAQnD,EAAIoD,EAAK,CACxB,GAAI,CAAApD,EAAG,UAAU,UAAU,EAC3B,KAAIN,EAAQM,EAAG,aAAa,GAAKD,EAAeC,CAAE,EAAE,UAChDqD,EAAaD,EAAMpD,EAAG,OAAO,cAAc,EAAIA,EAAG,OAAO,UAAU,EACnEsD,EAAWf,EAAG,GAAI,KACJA,EAAG,OAAQ,CAAC,UAAW,yBAAyB,EAAGc,CAAU,EAC7DN,EAAsB/C,CAAE,CAAC,EAC3CU,EAAOV,EAAIsD,EAAUD,EAAY3D,EAAO,SAASA,EAAO,CACjDA,IACLA,EAAQwB,EAAWxB,CAAK,EACxBgB,EAAOV,EAAIgD,EAA0BhD,CAAE,EAAGA,EAAG,OAAO,eAAe,EAAG,GAAI,SAASK,EAAM,CAEvF,GADAA,EAAOU,EAAYV,CAAI,EACnB+C,EACFF,EAAWlD,EAAIN,EAAOW,CAAI,MACrB,CACLI,EAAYT,CAAE,EACd,IAAIsC,EAASpC,EAAgBF,EAAIN,EAAOM,EAAG,UAAU,MAAM,CAAC,EACxDuD,EAAU,UAAW,CACvB,IAAIC,EAAQlB,EAAO,KAAK,EAAGzC,EACvB,EAAEA,EAAQyC,EAAO,SAAS,KAC5BA,EAASpC,EAAgBF,EAAIN,CAAK,EAC9B,EAAEG,EAAQyC,EAAO,SAAS,IACzBkB,GAASlB,EAAO,KAAK,EAAE,MAAQkB,EAAM,MAAQlB,EAAO,KAAK,EAAE,IAAMkB,EAAM,MAE9ExD,EAAG,aAAasC,EAAO,KAAK,EAAGA,EAAO,GAAG,CAAC,EAC1CtC,EAAG,eAAe,CAAC,KAAMsC,EAAO,KAAK,EAAG,GAAIA,EAAO,GAAG,CAAC,CAAC,EACxDzB,EAAcb,EAAIiD,EAAoBjD,CAAE,EAAGA,EAAG,OAAO,UAAU,EACjD,CAAC,UAAW,CAACyD,EAAU5D,CAAK,CAAE,EAAG0D,EAChC,UAAW,CAACL,EAAWlD,EAAIN,EAAOW,CAAI,CAAC,CAAC,CAAC,EAC1D,EACIoD,EAAY,SAAS5D,EAAO,CAC9ByC,EAAO,QAAQ,OAAO5C,GAAS,SAAWW,EAC3BA,EAAK,QAAQ,UAAW,SAAS0B,EAAGa,GAAG,CAAC,OAAO/C,EAAM+C,EAAC,CAAE,CAAC,CAAC,EACzEW,EAAQ,CACV,EACAA,EAAQ,CACV,CACF,CAAC,EACH,CAAC,EACH,CAEA/D,EAAW,SAAS,KAAO,SAASQ,EAAI,CAACS,EAAYT,CAAE,EAAGsB,EAAStB,CAAE,CAAE,EACvER,EAAW,SAAS,eAAiB,SAASQ,EAAI,CAACS,EAAYT,CAAE,EAAGsB,EAAStB,EAAI,GAAO,EAAI,CAAE,EAC9FR,EAAW,SAAS,mBAAqB,SAASQ,EAAI,CAACsB,EAAStB,EAAI,GAAO,GAAM,EAAI,CAAE,EACvFR,EAAW,SAAS,mBAAqB,SAASQ,EAAI,CAACsB,EAAStB,EAAI,GAAM,GAAM,EAAI,CAAE,EACtFR,EAAW,SAAS,SAAW8B,EAC/B9B,EAAW,SAAS,SAAW,SAASQ,EAAI,CAACsB,EAAStB,EAAI,EAAI,CAAE,EAChER,EAAW,SAAS,YAAciB,EAClCjB,EAAW,SAAS,QAAU2D,EAC9B3D,EAAW,SAAS,WAAa,SAASQ,EAAI,CAACmD,EAAQnD,EAAI,EAAI,CAAE,CACnE,CAAC,ICtSD,IAAA0D,GAAAC,GAAA,KAWI,OAAO,OAAW,KACrB,SAAUC,EAAKC,EAAK,CACnB,GAAI,CACFD,EAAI,cAAc,aAAa,OACnB,CACZ,CAAC,gBAAiB,kBAAkB,EAAE,QAAQ,SAAUE,EAAM,CAE5D,IAAMC,EAASF,EAAMC,CAAM,EAE3BD,EAAMC,CAAM,EAAI,SAAUE,EAAS,CACjC,GAAI,iBAAiB,KAAKA,CAAS,EAAG,CACpC,IAAMC,EAAK,KAAK,GAChB,KAAK,GAAK,MAAQ,KAAK,IAAG,EAC1BD,EAAYA,EAAU,QAAQ,oBAAqB,MAAQ,KAAK,EAAE,EAElE,IAAME,EAASN,EAAIE,CAAM,EAAEE,CAAS,EACpC,YAAK,GAAKC,EACHC,MAEP,QAAOH,EAAO,KAAK,KAAMC,CAAS,CAEtC,CACF,CAAC,EAEL,EAAG,OAAO,SAAU,QAAQ,SAAS,ICnCtB,SAARG,GAAiBC,EAAG,CACzB,OAAO,UAAoB,CACzB,OAAOA,CACT,CACF,CAJA,IAAAC,GAAAC,GAAA,QCaO,SAASC,GAAKC,EAAG,CACtB,OAAOA,EAAI,EAAI,EAAIA,EAAI,GAAKC,GAAK,KAAK,KAAKD,CAAC,CAC9C,CAEO,SAASE,GAAKF,EAAG,CACtB,OAAOA,GAAK,EAAIG,GAASH,GAAK,GAAK,CAACG,GAAS,KAAK,KAAKH,CAAC,CAC1D,CAnBA,IAAaI,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GAEAC,GACAV,GACAE,GACAS,GAXbC,GAAAC,GAAA,KAAaV,GAAM,KAAK,IACXC,GAAQ,KAAK,MACbC,GAAM,KAAK,IACXC,GAAM,KAAK,IACXC,GAAM,KAAK,IACXC,GAAM,KAAK,IACXC,GAAO,KAAK,KAEZC,GAAU,MACVV,GAAK,KAAK,GACVE,GAASF,GAAK,EACdW,GAAM,EAAIX,KCNvB,SAASc,GAAOC,EAAS,CACvB,KAAK,GAAKA,EAAQ,CAAC,EACnB,QAASC,EAAI,EAAGC,EAAIF,EAAQ,OAAQC,EAAIC,EAAG,EAAED,EAC3C,KAAK,GAAK,UAAUA,CAAC,EAAID,EAAQC,CAAC,CAEtC,CAEA,SAASE,IAAYC,EAAQ,CAC3B,IAAIC,EAAI,KAAK,MAAMD,CAAM,EACzB,GAAI,EAAEC,GAAK,GAAI,MAAM,IAAI,MAAM,mBAAmBD,CAAM,EAAE,EAC1D,GAAIC,EAAI,GAAI,OAAON,GACnB,IAAMO,EAAI,IAAMD,EAChB,OAAO,SAASL,EAAS,CACvB,KAAK,GAAKA,EAAQ,CAAC,EACnB,QAAS,EAAI,EAAGE,EAAIF,EAAQ,OAAQ,EAAIE,EAAG,EAAE,EAC3C,KAAK,GAAK,KAAK,MAAM,UAAU,CAAC,EAAII,CAAC,EAAIA,EAAIN,EAAQ,CAAC,CAE1D,CACF,CA2HO,SAASO,IAAO,CACrB,OAAO,IAAIC,EACb,CApJA,IAAMC,GACFC,GACAC,GACAC,IAsBSJ,GAzBbK,GAAAC,GAAA,KAAML,GAAK,KAAK,GACZC,GAAM,EAAID,GACVE,GAAU,KACVC,IAAaF,GAAMC,GAsBVH,GAAN,KAAW,CAChB,YAAYJ,EAAQ,CAClB,KAAK,IAAM,KAAK,IAChB,KAAK,IAAM,KAAK,IAAM,KACtB,KAAK,EAAI,GACT,KAAK,QAAUA,GAAU,KAAOL,GAASI,IAAYC,CAAM,CAC7D,CACA,OAAOW,EAAGC,EAAG,CACX,KAAK,WAAW,KAAK,IAAM,KAAK,IAAM,CAACD,CAAC,IAAI,KAAK,IAAM,KAAK,IAAM,CAACC,CAAC,EACtE,CACA,WAAY,CACN,KAAK,MAAQ,OACf,KAAK,IAAM,KAAK,IAAK,KAAK,IAAM,KAAK,IACrC,KAAK,WAET,CACA,OAAOD,EAAGC,EAAG,CACX,KAAK,WAAW,KAAK,IAAM,CAACD,CAAC,IAAI,KAAK,IAAM,CAACC,CAAC,EAChD,CACA,iBAAiBC,EAAIC,EAAIH,EAAGC,EAAG,CAC7B,KAAK,WAAW,CAACC,CAAE,IAAI,CAACC,CAAE,IAAI,KAAK,IAAM,CAACH,CAAC,IAAI,KAAK,IAAM,CAACC,CAAC,EAC9D,CACA,cAAcC,EAAIC,EAAIC,EAAIC,EAAIL,EAAGC,EAAG,CAClC,KAAK,WAAW,CAACC,CAAE,IAAI,CAACC,CAAE,IAAI,CAACC,CAAE,IAAI,CAACC,CAAE,IAAI,KAAK,IAAM,CAACL,CAAC,IAAI,KAAK,IAAM,CAACC,CAAC,EAC5E,CACA,MAAMC,EAAIC,EAAIC,EAAIC,EAAIC,EAAG,CAIvB,GAHAJ,EAAK,CAACA,EAAIC,EAAK,CAACA,EAAIC,EAAK,CAACA,EAAIC,EAAK,CAACA,EAAIC,EAAI,CAACA,EAGzCA,EAAI,EAAG,MAAM,IAAI,MAAM,oBAAoBA,CAAC,EAAE,EAElD,IAAIC,EAAK,KAAK,IACVC,EAAK,KAAK,IACVC,EAAML,EAAKF,EACXQ,EAAML,EAAKF,EACXQ,EAAMJ,EAAKL,EACXU,EAAMJ,EAAKL,EACXU,EAAQF,EAAMA,EAAMC,EAAMA,EAG9B,GAAI,KAAK,MAAQ,KACf,KAAK,WAAW,KAAK,IAAMV,CAAE,IAAI,KAAK,IAAMC,CAAE,WAIrCU,EAAQjB,GAKd,GAAI,EAAE,KAAK,IAAIgB,EAAMH,EAAMC,EAAMC,CAAG,EAAIf,KAAY,CAACU,EACxD,KAAK,WAAW,KAAK,IAAMJ,CAAE,IAAI,KAAK,IAAMC,CAAE,OAI3C,CACH,IAAIW,EAAMV,EAAKG,EACXQ,EAAMV,EAAKG,EACXQ,EAAQP,EAAMA,EAAMC,EAAMA,EAC1BO,EAAQH,EAAMA,EAAMC,EAAMA,EAC1BG,EAAM,KAAK,KAAKF,CAAK,EACrBG,EAAM,KAAK,KAAKN,CAAK,EACrBO,EAAId,EAAI,KAAK,KAAKZ,GAAK,KAAK,MAAMsB,EAAQH,EAAQI,IAAU,EAAIC,EAAMC,EAAI,GAAK,CAAC,EAChFE,EAAMD,EAAID,EACVG,EAAMF,EAAIF,EAGV,KAAK,IAAIG,EAAM,CAAC,EAAIzB,IACtB,KAAK,WAAWM,EAAKmB,EAAMV,CAAG,IAAIR,EAAKkB,EAAMT,CAAG,GAGlD,KAAK,WAAWN,CAAC,IAAIA,CAAC,QAAQ,EAAEM,EAAME,EAAMH,EAAMI,EAAI,IAAI,KAAK,IAAMb,EAAKoB,EAAMb,CAAG,IAAI,KAAK,IAAMN,EAAKmB,EAAMZ,CAAG,EAClH,CACF,CACA,IAAIV,EAAGC,EAAGK,EAAGiB,EAAIC,EAAIC,EAAK,CAIxB,GAHAzB,EAAI,CAACA,EAAGC,EAAI,CAACA,EAAGK,EAAI,CAACA,EAAGmB,EAAM,CAAC,CAACA,EAG5BnB,EAAI,EAAG,MAAM,IAAI,MAAM,oBAAoBA,CAAC,EAAE,EAElD,IAAIoB,EAAKpB,EAAI,KAAK,IAAIiB,CAAE,EACpBI,EAAKrB,EAAI,KAAK,IAAIiB,CAAE,EACpBhB,EAAKP,EAAI0B,EACTlB,EAAKP,EAAI0B,EACTC,EAAK,EAAIH,EACTI,EAAKJ,EAAMF,EAAKC,EAAKA,EAAKD,EAG1B,KAAK,MAAQ,KACf,KAAK,WAAWhB,CAAE,IAAIC,CAAE,IAIjB,KAAK,IAAI,KAAK,IAAMD,CAAE,EAAIX,IAAW,KAAK,IAAI,KAAK,IAAMY,CAAE,EAAIZ,KACtE,KAAK,WAAWW,CAAE,IAAIC,CAAE,GAIrBF,IAGDuB,EAAK,IAAGA,EAAKA,EAAKlC,GAAMA,IAGxBkC,EAAKhC,IACP,KAAK,WAAWS,CAAC,IAAIA,CAAC,QAAQsB,CAAE,IAAI5B,EAAI0B,CAAE,IAAIzB,EAAI0B,CAAE,IAAIrB,CAAC,IAAIA,CAAC,QAAQsB,CAAE,IAAI,KAAK,IAAMrB,CAAE,IAAI,KAAK,IAAMC,CAAE,GAInGqB,EAAKjC,IACZ,KAAK,WAAWU,CAAC,IAAIA,CAAC,MAAM,EAAEuB,GAAMnC,GAAG,IAAIkC,CAAE,IAAI,KAAK,IAAM5B,EAAIM,EAAI,KAAK,IAAIkB,CAAE,CAAC,IAAI,KAAK,IAAMvB,EAAIK,EAAI,KAAK,IAAIkB,CAAE,CAAC,GAEvH,CACA,KAAKxB,EAAGC,EAAG6B,EAAGC,EAAG,CACf,KAAK,WAAW,KAAK,IAAM,KAAK,IAAM,CAAC/B,CAAC,IAAI,KAAK,IAAM,KAAK,IAAM,CAACC,CAAC,IAAI6B,EAAI,CAACA,CAAC,IAAI,CAACC,CAAC,IAAI,CAACD,CAAC,GAC5F,CACA,UAAW,CACT,OAAO,KAAK,CACd,CACF,EAOAtC,GAAK,UAAYC,GAAK,YCvJtB,IAAAuC,GAAAC,GAAA,KAAAC,OCEO,SAASC,GAASC,EAAO,CAC9B,IAAIC,EAAS,EAEb,OAAAD,EAAM,OAAS,SAASE,EAAG,CACzB,GAAI,CAAC,UAAU,OAAQ,OAAOD,EAC9B,GAAIC,GAAK,KACPD,EAAS,SACJ,CACL,IAAME,EAAI,KAAK,MAAMD,CAAC,EACtB,GAAI,EAAEC,GAAK,GAAI,MAAM,IAAI,WAAW,mBAAmBD,CAAC,EAAE,EAC1DD,EAASE,CACX,CACA,OAAOH,CACT,EAEO,IAAM,IAAII,GAAKH,CAAM,CAC9B,CAlBA,IAAAI,GAAAC,GAAA,KAAAC,OCIA,SAASC,IAAeC,EAAG,CACzB,OAAOA,EAAE,WACX,CAEA,SAASC,IAAeD,EAAG,CACzB,OAAOA,EAAE,WACX,CAEA,SAASE,IAAcF,EAAG,CACxB,OAAOA,EAAE,UACX,CAEA,SAASG,IAAYH,EAAG,CACtB,OAAOA,EAAE,QACX,CAEA,SAASI,IAAYJ,EAAG,CACtB,OAAOA,GAAKA,EAAE,QAChB,CAEA,SAASK,IAAUC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAI,CACjD,IAAIC,EAAMN,EAAKF,EAAIS,EAAMN,EAAKF,EAC1BS,EAAMJ,EAAKF,EAAIO,EAAMJ,EAAKF,EAC1BO,EAAID,EAAMH,EAAME,EAAMD,EAC1B,GAAI,EAAAG,EAAIA,EAAIC,IACZ,OAAAD,GAAKF,GAAOT,EAAKI,GAAMM,GAAOX,EAAKI,IAAOQ,EACnC,CAACZ,EAAKY,EAAIJ,EAAKP,EAAKW,EAAIH,CAAG,CACpC,CAIA,SAASK,GAAed,EAAIC,EAAIC,EAAIC,EAAIY,EAAIC,EAAIC,EAAI,CAClD,IAAIC,EAAMlB,EAAKE,EACXiB,EAAMlB,EAAKE,EACXiB,GAAMH,EAAKD,EAAK,CAACA,GAAMK,GAAKH,EAAMA,EAAMC,EAAMA,CAAG,EACjDG,EAAKF,EAAKD,EACVI,EAAK,CAACH,EAAKF,EACXM,EAAMxB,EAAKsB,EACXG,EAAMxB,EAAKsB,EACXf,EAAMN,EAAKoB,EACXb,EAAMN,EAAKoB,EACXG,GAAOF,EAAMhB,GAAO,EACpBmB,GAAOF,EAAMhB,GAAO,EACpBmB,EAAKpB,EAAMgB,EACXK,EAAKpB,EAAMgB,EACXK,EAAKF,EAAKA,EAAKC,EAAKA,EACpBE,EAAIhB,EAAKC,EACTgB,EAAIR,EAAMf,EAAMD,EAAMiB,EACtB/B,GAAKmC,EAAK,EAAI,GAAK,GAAKR,GAAKY,GAAI,EAAGF,EAAIA,EAAID,EAAKE,EAAIA,CAAC,CAAC,EACvDE,GAAOF,EAAIH,EAAKD,EAAKlC,GAAKoC,EAC1BK,GAAO,CAACH,EAAIJ,EAAKC,EAAKnC,GAAKoC,EAC3BM,GAAOJ,EAAIH,EAAKD,EAAKlC,GAAKoC,EAC1BO,GAAO,CAACL,EAAIJ,EAAKC,EAAKnC,GAAKoC,EAC3BQ,EAAMJ,EAAMR,EACZa,EAAMJ,EAAMR,EACZa,EAAMJ,EAAMV,EACZe,EAAMJ,EAAMV,EAIhB,OAAIW,EAAMA,EAAMC,EAAMA,EAAMC,EAAMA,EAAMC,EAAMA,IAAKP,EAAME,EAAKD,EAAME,GAE7D,CACL,GAAIH,EACJ,GAAIC,EACJ,IAAK,CAACb,EACN,IAAK,CAACC,EACN,IAAKW,GAAOnB,EAAKgB,EAAI,GACrB,IAAKI,GAAOpB,EAAKgB,EAAI,EACvB,CACF,CAEe,SAARW,IAAmB,CACxB,IAAIC,EAAclD,IACdmD,EAAcjD,IACdkD,EAAeC,GAAS,CAAC,EACzBC,EAAY,KACZC,EAAapD,IACbqD,EAAWpD,IACXqD,EAAWpD,IACXqD,EAAU,KACVC,EAAOC,GAASC,CAAG,EAEvB,SAASA,GAAM,CACb,IAAIC,EACAxB,EACAyB,EAAK,CAACb,EAAY,MAAM,KAAM,SAAS,EACvC5B,EAAK,CAAC6B,EAAY,MAAM,KAAM,SAAS,EACvCa,EAAKT,EAAW,MAAM,KAAM,SAAS,EAAIU,GACzCC,EAAKV,EAAS,MAAM,KAAM,SAAS,EAAIS,GACvCE,EAAKC,GAAIF,EAAKF,CAAE,EAChBxC,EAAK0C,EAAKF,EAQd,GANKN,IAASA,EAAUI,EAASH,EAAK,GAGlCrC,EAAKyC,IAAIzB,EAAIhB,EAAIA,EAAKyC,EAAIA,EAAKzB,GAG/B,EAAEhB,EAAKF,IAAUsC,EAAQ,OAAO,EAAG,CAAC,UAG/BS,EAAKE,GAAMjD,GAClBsC,EAAQ,OAAOpC,EAAKgD,GAAIN,CAAE,EAAG1C,EAAKiD,GAAIP,CAAE,CAAC,EACzCN,EAAQ,IAAI,EAAG,EAAGpC,EAAI0C,EAAIE,EAAI,CAAC1C,CAAE,EAC7BuC,EAAK3C,KACPsC,EAAQ,OAAOK,EAAKO,GAAIJ,CAAE,EAAGH,EAAKQ,GAAIL,CAAE,CAAC,EACzCR,EAAQ,IAAI,EAAG,EAAGK,EAAIG,EAAIF,EAAIxC,CAAE,OAK/B,CACH,IAAIgD,EAAMR,EACNS,EAAMP,EACNQ,EAAMV,EACNW,EAAMT,EACNU,EAAMT,EACNU,EAAMV,EACNW,EAAKrB,EAAS,MAAM,KAAM,SAAS,EAAI,EACvCsB,EAAMD,EAAK1D,KAAakC,EAAY,CAACA,EAAU,MAAM,KAAM,SAAS,EAAI1B,GAAKmC,EAAKA,EAAKzC,EAAKA,CAAE,GAC9FC,EAAKyD,GAAIZ,GAAI9C,EAAKyC,CAAE,EAAI,EAAG,CAACX,EAAa,MAAM,KAAM,SAAS,CAAC,EAC/D6B,EAAM1D,EACN2D,EAAM3D,EACN4D,EACAC,EAGJ,GAAIL,EAAK3D,GAAS,CAChB,IAAIiE,EAAKC,GAAKP,EAAKhB,EAAKQ,GAAIO,CAAE,CAAC,EAC3BS,EAAKD,GAAKP,EAAKzD,EAAKiD,GAAIO,CAAE,CAAC,GAC1BF,GAAOS,EAAK,GAAKjE,IAASiE,GAAO7D,EAAK,EAAI,GAAKkD,GAAOW,EAAIV,GAAOU,IACjET,EAAM,EAAGF,EAAMC,GAAOX,EAAKE,GAAM,IACjCW,GAAOU,EAAK,GAAKnE,IAASmE,GAAO/D,EAAK,EAAI,GAAKgD,GAAOe,EAAId,GAAOc,IACjEV,EAAM,EAAGL,EAAMC,GAAOT,EAAKE,GAAM,EACxC,CAEA,IAAIzC,EAAMH,EAAKgD,GAAIE,CAAG,EAClB9C,GAAMJ,EAAKiD,GAAIC,CAAG,EAClBzD,EAAMgD,EAAKO,GAAIK,CAAG,EAClB3D,GAAM+C,EAAKQ,GAAII,CAAG,EAGtB,GAAIpD,EAAKH,GAAS,CAChB,IAAIW,GAAMT,EAAKgD,GAAIG,CAAG,EAClBzC,GAAMV,EAAKiD,GAAIE,CAAG,EAClBxC,GAAM8B,EAAKO,GAAII,CAAG,EAClBxC,GAAM6B,EAAKQ,GAAIG,CAAG,EAClBc,GAKJ,GAAIrB,EAAKsB,GACP,GAAID,GAAKlF,IAAUmB,EAAKC,GAAKO,GAAKC,GAAKH,GAAKC,GAAKjB,EAAKC,EAAG,EAAG,CAC1D,IAAI0E,GAAKjE,EAAM+D,GAAG,CAAC,EACfG,GAAKjE,GAAM8D,GAAG,CAAC,EACfI,GAAK7D,GAAMyD,GAAG,CAAC,EACfK,GAAK7D,GAAMwD,GAAG,CAAC,EACfM,GAAK,EAAIvB,GAAIwB,IAAML,GAAKE,GAAKD,GAAKE,KAAOjE,GAAK8D,GAAKA,GAAKC,GAAKA,EAAE,EAAI/D,GAAKgE,GAAKA,GAAKC,GAAKA,EAAE,EAAE,EAAI,CAAC,EAChGG,GAAKpE,GAAK4D,GAAG,CAAC,EAAIA,GAAG,CAAC,EAAIA,GAAG,CAAC,EAAIA,GAAG,CAAC,CAAC,EAC3CP,EAAMD,GAAIzD,GAAKwC,EAAKiC,KAAOF,GAAK,EAAE,EAClCZ,EAAMF,GAAIzD,GAAKD,EAAK0E,KAAOF,GAAK,EAAE,CACpC,MACEb,EAAMC,EAAM,CAGlB,CAGML,EAAMzD,GAGH8D,EAAM9D,IACb+D,EAAK9D,GAAeY,GAAKC,GAAKT,EAAKC,GAAKJ,EAAI4D,EAAK1D,CAAE,EACnD4D,EAAK/D,GAAeU,GAAKC,GAAKjB,EAAKC,GAAKM,EAAI4D,EAAK1D,CAAE,EAEnDkC,EAAQ,OAAOyB,EAAG,GAAKA,EAAG,IAAKA,EAAG,GAAKA,EAAG,GAAG,EAGzCD,EAAM3D,EAAImC,EAAQ,IAAIyB,EAAG,GAAIA,EAAG,GAAID,EAAKe,GAAMd,EAAG,IAAKA,EAAG,GAAG,EAAGc,GAAMb,EAAG,IAAKA,EAAG,GAAG,EAAG,CAAC5D,CAAE,GAI5FkC,EAAQ,IAAIyB,EAAG,GAAIA,EAAG,GAAID,EAAKe,GAAMd,EAAG,IAAKA,EAAG,GAAG,EAAGc,GAAMd,EAAG,IAAKA,EAAG,GAAG,EAAG,CAAC3D,CAAE,EAChFkC,EAAQ,IAAI,EAAG,EAAGpC,EAAI2E,GAAMd,EAAG,GAAKA,EAAG,IAAKA,EAAG,GAAKA,EAAG,GAAG,EAAGc,GAAMb,EAAG,GAAKA,EAAG,IAAKA,EAAG,GAAKA,EAAG,GAAG,EAAG,CAAC5D,CAAE,EACvGkC,EAAQ,IAAI0B,EAAG,GAAIA,EAAG,GAAIF,EAAKe,GAAMb,EAAG,IAAKA,EAAG,GAAG,EAAGa,GAAMb,EAAG,IAAKA,EAAG,GAAG,EAAG,CAAC5D,CAAE,KAK/EkC,EAAQ,OAAOjC,EAAKC,EAAG,EAAGgC,EAAQ,IAAI,EAAG,EAAGpC,EAAIkD,EAAKC,EAAK,CAACjD,CAAE,GArB5CkC,EAAQ,OAAOjC,EAAKC,EAAG,EAyBzC,EAAEqC,EAAK3C,KAAY,EAAEwD,EAAMxD,IAAUsC,EAAQ,OAAO3C,EAAKC,EAAG,EAGvDiE,EAAM7D,IACb+D,EAAK9D,GAAeN,EAAKC,GAAKe,GAAKC,GAAK+B,EAAI,CAACkB,EAAKzD,CAAE,EACpD4D,EAAK/D,GAAeI,EAAKC,GAAKO,GAAKC,GAAK6B,EAAI,CAACkB,EAAKzD,CAAE,EAEpDkC,EAAQ,OAAOyB,EAAG,GAAKA,EAAG,IAAKA,EAAG,GAAKA,EAAG,GAAG,EAGzCF,EAAM1D,EAAImC,EAAQ,IAAIyB,EAAG,GAAIA,EAAG,GAAIF,EAAKgB,GAAMd,EAAG,IAAKA,EAAG,GAAG,EAAGc,GAAMb,EAAG,IAAKA,EAAG,GAAG,EAAG,CAAC5D,CAAE,GAI5FkC,EAAQ,IAAIyB,EAAG,GAAIA,EAAG,GAAIF,EAAKgB,GAAMd,EAAG,IAAKA,EAAG,GAAG,EAAGc,GAAMd,EAAG,IAAKA,EAAG,GAAG,EAAG,CAAC3D,CAAE,EAChFkC,EAAQ,IAAI,EAAG,EAAGK,EAAIkC,GAAMd,EAAG,GAAKA,EAAG,IAAKA,EAAG,GAAKA,EAAG,GAAG,EAAGc,GAAMb,EAAG,GAAKA,EAAG,IAAKA,EAAG,GAAKA,EAAG,GAAG,EAAG5D,CAAE,EACtGkC,EAAQ,IAAI0B,EAAG,GAAIA,EAAG,GAAIH,EAAKgB,GAAMb,EAAG,IAAKA,EAAG,GAAG,EAAGa,GAAMb,EAAG,IAAKA,EAAG,GAAG,EAAG,CAAC5D,CAAE,IAK/EkC,EAAQ,IAAI,EAAG,EAAGK,EAAIY,EAAKD,EAAKlD,CAAE,CACzC,CAIA,GAFAkC,EAAQ,UAAU,EAEdI,EAAQ,OAAOJ,EAAU,KAAMI,EAAS,IAAM,IACpD,CAEA,OAAAD,EAAI,SAAW,UAAW,CACxB,IAAIvB,GAAK,CAACY,EAAY,MAAM,KAAM,SAAS,GAAI,CAACC,EAAY,MAAM,KAAM,SAAS,GAAK,EAClF+C,GAAK,CAAC3C,EAAW,MAAM,KAAM,SAAS,GAAI,CAACC,EAAS,MAAM,KAAM,SAAS,GAAK,EAAIiC,GAAK,EAC3F,MAAO,CAACnB,GAAI4B,CAAC,EAAI5D,EAAGiC,GAAI2B,CAAC,EAAI5D,CAAC,CAChC,EAEAuB,EAAI,YAAc,SAASsC,EAAG,CAC5B,OAAO,UAAU,QAAUjD,EAAc,OAAOiD,GAAM,WAAaA,EAAI9C,GAAS,CAAC8C,CAAC,EAAGtC,GAAOX,CAC9F,EAEAW,EAAI,YAAc,SAASsC,EAAG,CAC5B,OAAO,UAAU,QAAUhD,EAAc,OAAOgD,GAAM,WAAaA,EAAI9C,GAAS,CAAC8C,CAAC,EAAGtC,GAAOV,CAC9F,EAEAU,EAAI,aAAe,SAASsC,EAAG,CAC7B,OAAO,UAAU,QAAU/C,EAAe,OAAO+C,GAAM,WAAaA,EAAI9C,GAAS,CAAC8C,CAAC,EAAGtC,GAAOT,CAC/F,EAEAS,EAAI,UAAY,SAASsC,EAAG,CAC1B,OAAO,UAAU,QAAU7C,EAAY6C,GAAK,KAAO,KAAO,OAAOA,GAAM,WAAaA,EAAI9C,GAAS,CAAC8C,CAAC,EAAGtC,GAAOP,CAC/G,EAEAO,EAAI,WAAa,SAASsC,EAAG,CAC3B,OAAO,UAAU,QAAU5C,EAAa,OAAO4C,GAAM,WAAaA,EAAI9C,GAAS,CAAC8C,CAAC,EAAGtC,GAAON,CAC7F,EAEAM,EAAI,SAAW,SAASsC,EAAG,CACzB,OAAO,UAAU,QAAU3C,EAAW,OAAO2C,GAAM,WAAaA,EAAI9C,GAAS,CAAC8C,CAAC,EAAGtC,GAAOL,CAC3F,EAEAK,EAAI,SAAW,SAASsC,EAAG,CACzB,OAAO,UAAU,QAAU1C,EAAW,OAAO0C,GAAM,WAAaA,EAAI9C,GAAS,CAAC8C,CAAC,EAAGtC,GAAOJ,CAC3F,EAEAI,EAAI,QAAU,SAASsC,EAAG,CACxB,OAAO,UAAU,QAAWzC,EAAUyC,GAAY,KAAWtC,GAAOH,CACtE,EAEOG,CACT,CA3QA,IAAAuC,GAAAC,GAAA,KAAAC,KACAC,KACAC,OCAe,SAARC,GAAiBC,EAAG,CACzB,OAAO,OAAOA,GAAM,UAAY,WAAYA,EACxCA,EACA,MAAM,KAAKA,CAAC,CAClB,CANA,IAAWC,GAAXC,GAAAC,GAAA,KAAWF,GAAQ,MAAM,UAAU,QCAnC,SAASG,GAAOC,EAAS,CACvB,KAAK,SAAWA,CAClB,CA0Be,SAARC,GAAiBD,EAAS,CAC/B,OAAO,IAAID,GAAOC,CAAO,CAC3B,CA9BA,IAAAE,GAAAC,GAAA,KAIAJ,GAAO,UAAY,CACjB,UAAW,UAAW,CACpB,KAAK,MAAQ,CACf,EACA,QAAS,UAAW,CAClB,KAAK,MAAQ,GACf,EACA,UAAW,UAAW,CACpB,KAAK,OAAS,CAChB,EACA,QAAS,UAAW,EACd,KAAK,OAAU,KAAK,QAAU,GAAK,KAAK,SAAW,IAAI,KAAK,SAAS,UAAU,EACnF,KAAK,MAAQ,EAAI,KAAK,KACxB,EACA,MAAO,SAASK,EAAGC,EAAG,CAEpB,OADAD,EAAI,CAACA,EAAGC,EAAI,CAACA,EACL,KAAK,OAAQ,CACnB,IAAK,GAAG,KAAK,OAAS,EAAG,KAAK,MAAQ,KAAK,SAAS,OAAOD,EAAGC,CAAC,EAAI,KAAK,SAAS,OAAOD,EAAGC,CAAC,EAAG,MAC/F,IAAK,GAAG,KAAK,OAAS,EACtB,QAAS,KAAK,SAAS,OAAOD,EAAGC,CAAC,EAAG,KACvC,CACF,CACF,IC1BO,SAASC,GAAEC,EAAG,CACnB,OAAOA,EAAE,CAAC,CACZ,CAEO,SAASC,GAAED,EAAG,CACnB,OAAOA,EAAE,CAAC,CACZ,CANA,IAAAE,GAAAC,GAAA,QCMe,SAARC,GAAiBC,EAAGC,EAAG,CAC5B,IAAIC,EAAUC,GAAS,EAAI,EACvBC,EAAU,KACVC,EAAQC,GACRC,EAAS,KACTC,EAAOC,GAASC,CAAI,EAExBV,EAAI,OAAOA,GAAM,WAAaA,EAAKA,IAAM,OAAaA,GAASG,GAASH,CAAC,EACzEC,EAAI,OAAOA,GAAM,WAAaA,EAAKA,IAAM,OAAaA,GAASE,GAASF,CAAC,EAEzE,SAASS,EAAKC,EAAM,CAClB,IAAIC,EACAC,GAAKF,EAAOG,GAAMH,CAAI,GAAG,OACzBI,EACAC,EAAW,GACXC,EAIJ,IAFIb,GAAW,OAAMG,EAASF,EAAMY,EAAST,EAAK,CAAC,GAE9CI,EAAI,EAAGA,GAAKC,EAAG,EAAED,EAChB,EAAEA,EAAIC,GAAKX,EAAQa,EAAIJ,EAAKC,CAAC,EAAGA,EAAGD,CAAI,KAAOK,KAC5CA,EAAW,CAACA,GAAUT,EAAO,UAAU,EACtCA,EAAO,QAAQ,GAElBS,GAAUT,EAAO,MAAM,CAACP,EAAEe,EAAGH,EAAGD,CAAI,EAAG,CAACV,EAAEc,EAAGH,EAAGD,CAAI,CAAC,EAG3D,GAAIM,EAAQ,OAAOV,EAAS,KAAMU,EAAS,IAAM,IACnD,CAEA,OAAAP,EAAK,EAAI,SAASQ,EAAG,CACnB,OAAO,UAAU,QAAUlB,EAAI,OAAOkB,GAAM,WAAaA,EAAIf,GAAS,CAACe,CAAC,EAAGR,GAAQV,CACrF,EAEAU,EAAK,EAAI,SAASQ,EAAG,CACnB,OAAO,UAAU,QAAUjB,EAAI,OAAOiB,GAAM,WAAaA,EAAIf,GAAS,CAACe,CAAC,EAAGR,GAAQT,CACrF,EAEAS,EAAK,QAAU,SAASQ,EAAG,CACzB,OAAO,UAAU,QAAUhB,EAAU,OAAOgB,GAAM,WAAaA,EAAIf,GAAS,CAAC,CAACe,CAAC,EAAGR,GAAQR,CAC5F,EAEAQ,EAAK,MAAQ,SAASQ,EAAG,CACvB,OAAO,UAAU,QAAUb,EAAQa,EAAGd,GAAW,OAASG,EAASF,EAAMD,CAAO,GAAIM,GAAQL,CAC9F,EAEAK,EAAK,QAAU,SAASQ,EAAG,CACzB,OAAO,UAAU,QAAUA,GAAK,KAAOd,EAAUG,EAAS,KAAOA,EAASF,EAAMD,EAAUc,CAAC,EAAGR,GAAQN,CACxG,EAEOM,CACT,CAzDA,IAAAS,GAAAC,GAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,OCGe,SAARC,GAAiBC,EAAIC,EAAIC,EAAI,CAClC,IAAIC,EAAK,KACLC,EAAUC,GAAS,EAAI,EACvBC,EAAU,KACVC,EAAQC,GACRC,EAAS,KACTC,EAAOC,GAASC,CAAI,EAExBZ,EAAK,OAAOA,GAAO,WAAaA,EAAMA,IAAO,OAAaa,GAASR,GAAS,CAACL,CAAE,EAC/EC,EAAK,OAAOA,GAAO,WAAaA,EAAMA,IAAO,OAAaI,GAAS,CAAC,EAAIA,GAAS,CAACJ,CAAE,EACpFC,EAAK,OAAOA,GAAO,WAAaA,EAAMA,IAAO,OAAaY,GAAST,GAAS,CAACH,CAAE,EAE/E,SAASU,EAAKG,EAAM,CAClB,IAAIC,EACAC,EACAC,EACAC,GAAKJ,EAAOK,GAAML,CAAI,GAAG,OACzBM,EACAC,EAAW,GACXC,EACAC,EAAM,IAAI,MAAML,CAAC,EACjBM,EAAM,IAAI,MAAMN,CAAC,EAIrB,IAFIb,GAAW,OAAMG,EAASF,EAAMgB,EAASb,EAAK,CAAC,GAE9CM,EAAI,EAAGA,GAAKG,EAAG,EAAEH,EAAG,CACvB,GAAI,EAAEA,EAAIG,GAAKf,EAAQiB,EAAIN,EAAKC,CAAC,EAAGA,EAAGD,CAAI,KAAOO,EAChD,GAAIA,EAAW,CAACA,EACdL,EAAID,EACJP,EAAO,UAAU,EACjBA,EAAO,UAAU,MACZ,CAGL,IAFAA,EAAO,QAAQ,EACfA,EAAO,UAAU,EACZS,EAAIF,EAAI,EAAGE,GAAKD,EAAG,EAAEC,EACxBT,EAAO,MAAMe,EAAIN,CAAC,EAAGO,EAAIP,CAAC,CAAC,EAE7BT,EAAO,QAAQ,EACfA,EAAO,QAAQ,CACjB,CAEEa,IACFE,EAAIR,CAAC,EAAI,CAAChB,EAAGqB,EAAGL,EAAGD,CAAI,EAAGU,EAAIT,CAAC,EAAI,CAACf,EAAGoB,EAAGL,EAAGD,CAAI,EACjDN,EAAO,MAAMN,EAAK,CAACA,EAAGkB,EAAGL,EAAGD,CAAI,EAAIS,EAAIR,CAAC,EAAGd,EAAK,CAACA,EAAGmB,EAAGL,EAAGD,CAAI,EAAIU,EAAIT,CAAC,CAAC,EAE7E,CAEA,GAAIO,EAAQ,OAAOd,EAAS,KAAMc,EAAS,IAAM,IACnD,CAEA,SAASG,GAAW,CAClB,OAAOC,GAAK,EAAE,QAAQvB,CAAO,EAAE,MAAMG,CAAK,EAAE,QAAQD,CAAO,CAC7D,CAEA,OAAAM,EAAK,EAAI,SAASgB,EAAG,CACnB,OAAO,UAAU,QAAU5B,EAAK,OAAO4B,GAAM,WAAaA,EAAIvB,GAAS,CAACuB,CAAC,EAAGzB,EAAK,KAAMS,GAAQZ,CACjG,EAEAY,EAAK,GAAK,SAASgB,EAAG,CACpB,OAAO,UAAU,QAAU5B,EAAK,OAAO4B,GAAM,WAAaA,EAAIvB,GAAS,CAACuB,CAAC,EAAGhB,GAAQZ,CACtF,EAEAY,EAAK,GAAK,SAASgB,EAAG,CACpB,OAAO,UAAU,QAAUzB,EAAKyB,GAAK,KAAO,KAAO,OAAOA,GAAM,WAAaA,EAAIvB,GAAS,CAACuB,CAAC,EAAGhB,GAAQT,CACzG,EAEAS,EAAK,EAAI,SAASgB,EAAG,CACnB,OAAO,UAAU,QAAU3B,EAAK,OAAO2B,GAAM,WAAaA,EAAIvB,GAAS,CAACuB,CAAC,EAAG1B,EAAK,KAAMU,GAAQX,CACjG,EAEAW,EAAK,GAAK,SAASgB,EAAG,CACpB,OAAO,UAAU,QAAU3B,EAAK,OAAO2B,GAAM,WAAaA,EAAIvB,GAAS,CAACuB,CAAC,EAAGhB,GAAQX,CACtF,EAEAW,EAAK,GAAK,SAASgB,EAAG,CACpB,OAAO,UAAU,QAAU1B,EAAK0B,GAAK,KAAO,KAAO,OAAOA,GAAM,WAAaA,EAAIvB,GAAS,CAACuB,CAAC,EAAGhB,GAAQV,CACzG,EAEAU,EAAK,OACLA,EAAK,OAAS,UAAW,CACvB,OAAOc,EAAS,EAAE,EAAE1B,CAAE,EAAE,EAAEC,CAAE,CAC9B,EAEAW,EAAK,OAAS,UAAW,CACvB,OAAOc,EAAS,EAAE,EAAE1B,CAAE,EAAE,EAAEE,CAAE,CAC9B,EAEAU,EAAK,OAAS,UAAW,CACvB,OAAOc,EAAS,EAAE,EAAEvB,CAAE,EAAE,EAAEF,CAAE,CAC9B,EAEAW,EAAK,QAAU,SAASgB,EAAG,CACzB,OAAO,UAAU,QAAUxB,EAAU,OAAOwB,GAAM,WAAaA,EAAIvB,GAAS,CAAC,CAACuB,CAAC,EAAGhB,GAAQR,CAC5F,EAEAQ,EAAK,MAAQ,SAASgB,EAAG,CACvB,OAAO,UAAU,QAAUrB,EAAQqB,EAAGtB,GAAW,OAASG,EAASF,EAAMD,CAAO,GAAIM,GAAQL,CAC9F,EAEAK,EAAK,QAAU,SAASgB,EAAG,CACzB,OAAO,UAAU,QAAUA,GAAK,KAAOtB,EAAUG,EAAS,KAAOA,EAASF,EAAMD,EAAUsB,CAAC,EAAGhB,GAAQN,CACxG,EAEOM,CACT,CA/GA,IAAAiB,GAAAC,GAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,OCLe,SAARC,GAAiBC,EAAGC,EAAG,CAC5B,OAAOA,EAAID,EAAI,GAAKC,EAAID,EAAI,EAAIC,GAAKD,EAAI,EAAI,GAC/C,CAFA,IAAAE,GAAAC,GAAA,QCAe,SAARC,GAAiBC,EAAG,CACzB,OAAOA,CACT,CAFA,IAAAC,GAAAC,GAAA,QCMe,SAARC,IAAmB,CACxB,IAAIC,EAAQC,GACRC,EAAaC,GACbC,EAAO,KACPC,EAAaC,GAAS,CAAC,EACvBC,EAAWD,GAASE,EAAG,EACvBC,EAAWH,GAAS,CAAC,EAEzB,SAASI,EAAIC,EAAM,CACjB,IAAIC,EACAC,GAAKF,EAAOG,GAAMH,CAAI,GAAG,OACzBI,EACAC,EACAC,EAAM,EACNC,EAAQ,IAAI,MAAML,CAAC,EACnBM,EAAO,IAAI,MAAMN,CAAC,EAClBO,EAAK,CAACf,EAAW,MAAM,KAAM,SAAS,EACtCgB,EAAK,KAAK,IAAIb,GAAK,KAAK,IAAI,CAACA,GAAKD,EAAS,MAAM,KAAM,SAAS,EAAIa,CAAE,CAAC,EACvEE,EACAC,EAAI,KAAK,IAAI,KAAK,IAAIF,CAAE,EAAIR,EAAGJ,EAAS,MAAM,KAAM,SAAS,CAAC,EAC9De,EAAKD,GAAKF,EAAK,EAAI,GAAK,GACxBI,EAEJ,IAAKb,EAAI,EAAGA,EAAIC,EAAG,EAAED,GACda,EAAIN,EAAKD,EAAMN,CAAC,EAAIA,CAAC,EAAI,CAACZ,EAAMW,EAAKC,CAAC,EAAGA,EAAGD,CAAI,GAAK,IACxDM,GAAOQ,GASX,IAJIvB,GAAc,KAAMgB,EAAM,KAAK,SAASN,EAAGG,EAAG,CAAE,OAAOb,EAAWiB,EAAKP,CAAC,EAAGO,EAAKJ,CAAC,CAAC,CAAG,CAAC,EACjFX,GAAQ,MAAMc,EAAM,KAAK,SAASN,EAAGG,EAAG,CAAE,OAAOX,EAAKO,EAAKC,CAAC,EAAGD,EAAKI,CAAC,CAAC,CAAG,CAAC,EAG9EH,EAAI,EAAGI,EAAIC,GAAOI,EAAKR,EAAIW,GAAMP,EAAM,EAAGL,EAAIC,EAAG,EAAED,EAAGQ,EAAKE,EAC9DP,EAAIG,EAAMN,CAAC,EAAGa,EAAIN,EAAKJ,CAAC,EAAGO,EAAKF,GAAMK,EAAI,EAAIA,EAAIT,EAAI,GAAKQ,EAAIL,EAAKJ,CAAC,EAAI,CACvE,KAAMJ,EAAKI,CAAC,EACZ,MAAOH,EACP,MAAOa,EACP,WAAYL,EACZ,SAAUE,EACV,SAAUC,CACZ,EAGF,OAAOJ,CACT,CAEA,OAAAT,EAAI,MAAQ,SAASgB,EAAG,CACtB,OAAO,UAAU,QAAU1B,EAAQ,OAAO0B,GAAM,WAAaA,EAAIpB,GAAS,CAACoB,CAAC,EAAGhB,GAAOV,CACxF,EAEAU,EAAI,WAAa,SAASgB,EAAG,CAC3B,OAAO,UAAU,QAAUxB,EAAawB,EAAGtB,EAAO,KAAMM,GAAOR,CACjE,EAEAQ,EAAI,KAAO,SAASgB,EAAG,CACrB,OAAO,UAAU,QAAUtB,EAAOsB,EAAGxB,EAAa,KAAMQ,GAAON,CACjE,EAEAM,EAAI,WAAa,SAASgB,EAAG,CAC3B,OAAO,UAAU,QAAUrB,EAAa,OAAOqB,GAAM,WAAaA,EAAIpB,GAAS,CAACoB,CAAC,EAAGhB,GAAOL,CAC7F,EAEAK,EAAI,SAAW,SAASgB,EAAG,CACzB,OAAO,UAAU,QAAUnB,EAAW,OAAOmB,GAAM,WAAaA,EAAIpB,GAAS,CAACoB,CAAC,EAAGhB,GAAOH,CAC3F,EAEAG,EAAI,SAAW,SAASgB,EAAG,CACzB,OAAO,UAAU,QAAUjB,EAAW,OAAOiB,GAAM,WAAaA,EAAIpB,GAAS,CAACoB,CAAC,EAAGhB,GAAOD,CAC3F,EAEOC,CACT,CA/EA,IAAAiB,GAAAC,GAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,OCAA,SAASC,GAAOC,EAAO,CACrB,KAAK,OAASA,CAChB,CAoBe,SAARC,GAA6BD,EAAO,CAEzC,SAASE,EAAOC,EAAS,CACvB,OAAO,IAAIJ,GAAOC,EAAMG,CAAO,CAAC,CAClC,CAEA,OAAAD,EAAO,OAASF,EAETE,CACT,CAnCA,IAEWE,GAFXC,GAAAC,GAAA,KAAAC,KAEWH,GAAoBH,GAAYO,EAAW,EAMtDT,GAAO,UAAY,CACjB,UAAW,UAAW,CACpB,KAAK,OAAO,UAAU,CACxB,EACA,QAAS,UAAW,CAClB,KAAK,OAAO,QAAQ,CACtB,EACA,UAAW,UAAW,CACpB,KAAK,OAAO,UAAU,CACxB,EACA,QAAS,UAAW,CAClB,KAAK,OAAO,QAAQ,CACtB,EACA,MAAO,SAASU,EAAGC,EAAG,CACpB,KAAK,OAAO,MAAMA,EAAI,KAAK,IAAID,CAAC,EAAGC,EAAI,CAAC,KAAK,IAAID,CAAC,CAAC,CACrD,CACF,ICrBO,SAASE,GAAWC,EAAG,CAC5B,IAAIC,EAAID,EAAE,MAEV,OAAAA,EAAE,MAAQA,EAAE,EAAG,OAAOA,EAAE,EACxBA,EAAE,OAASA,EAAE,EAAG,OAAOA,EAAE,EAEzBA,EAAE,MAAQ,SAASE,EAAG,CACpB,OAAO,UAAU,OAASD,EAAEE,GAAYD,CAAC,CAAC,EAAID,EAAE,EAAE,MACpD,EAEOD,CACT,CAEe,SAARI,IAAmB,CACxB,OAAOL,GAAWM,GAAK,EAAE,MAAMC,EAAiB,CAAC,CACnD,CAlBA,IAAAC,GAAAC,GAAA,KAAAC,KACAC,OCGe,SAARC,IAAmB,CACxB,IAAIC,EAAIC,GAAK,EAAE,MAAMC,EAAiB,EAClCC,EAAIH,EAAE,MACNI,EAAKJ,EAAE,OACPK,EAAKL,EAAE,OACPM,EAAKN,EAAE,OACPO,EAAKP,EAAE,OAEX,OAAAA,EAAE,MAAQA,EAAE,EAAG,OAAOA,EAAE,EACxBA,EAAE,WAAaA,EAAE,GAAI,OAAOA,EAAE,GAC9BA,EAAE,SAAWA,EAAE,GAAI,OAAOA,EAAE,GAC5BA,EAAE,OAASA,EAAE,EAAG,OAAOA,EAAE,EACzBA,EAAE,YAAcA,EAAE,GAAI,OAAOA,EAAE,GAC/BA,EAAE,YAAcA,EAAE,GAAI,OAAOA,EAAE,GAC/BA,EAAE,eAAiB,UAAW,CAAE,OAAOQ,GAAWJ,EAAG,CAAC,CAAG,EAAG,OAAOJ,EAAE,OACrEA,EAAE,aAAe,UAAW,CAAE,OAAOQ,GAAWH,EAAG,CAAC,CAAG,EAAG,OAAOL,EAAE,OACnEA,EAAE,gBAAkB,UAAW,CAAE,OAAOQ,GAAWF,EAAG,CAAC,CAAG,EAAG,OAAON,EAAE,OACtEA,EAAE,gBAAkB,UAAW,CAAE,OAAOQ,GAAWD,EAAG,CAAC,CAAG,EAAG,OAAOP,EAAE,OAEtEA,EAAE,MAAQ,SAASS,EAAG,CACpB,OAAO,UAAU,OAASN,EAAEO,GAAYD,CAAC,CAAC,EAAIN,EAAE,EAAE,MACpD,EAEOH,CACT,CA5BA,IAAAW,GAAAC,GAAA,KAAAC,KACAC,KACAC,OCFe,SAARC,GAAiBC,EAAGC,EAAG,CAC5B,MAAO,EAAEA,EAAI,CAACA,GAAK,KAAK,IAAID,GAAK,KAAK,GAAK,CAAC,EAAGC,EAAI,KAAK,IAAID,CAAC,CAAC,CAChE,CAFA,IAAAE,GAAAC,GAAA,QCgEO,SAASC,GAAMC,EAAS,CAC7B,OAAO,IAAIC,GAAKD,EAAS,EAAI,CAC/B,CAEO,SAASE,GAAMF,EAAS,CAC7B,OAAO,IAAIC,GAAKD,EAAS,EAAK,CAChC,CAEO,SAASG,GAAWH,EAAS,CAClC,OAAO,IAAII,GAAWJ,CAAO,CAC/B,CA1EA,IAEMC,GAsCAG,GAxCNC,GAAAC,GAAA,KAAAC,KAEMN,GAAN,KAAW,CACT,YAAYD,EAASQ,EAAG,CACtB,KAAK,SAAWR,EAChB,KAAK,GAAKQ,CACZ,CACA,WAAY,CACV,KAAK,MAAQ,CACf,CACA,SAAU,CACR,KAAK,MAAQ,GACf,CACA,WAAY,CACV,KAAK,OAAS,CAChB,CACA,SAAU,EACJ,KAAK,OAAU,KAAK,QAAU,GAAK,KAAK,SAAW,IAAI,KAAK,SAAS,UAAU,EACnF,KAAK,MAAQ,EAAI,KAAK,KACxB,CACA,MAAMA,EAAGC,EAAG,CAEV,OADAD,EAAI,CAACA,EAAGC,EAAI,CAACA,EACL,KAAK,OAAQ,CACnB,IAAK,GAAG,CACN,KAAK,OAAS,EACV,KAAK,MAAO,KAAK,SAAS,OAAOD,EAAGC,CAAC,EACpC,KAAK,SAAS,OAAOD,EAAGC,CAAC,EAC9B,KACF,CACA,IAAK,GAAG,KAAK,OAAS,EACtB,QAAS,CACH,KAAK,GAAI,KAAK,SAAS,cAAc,KAAK,KAAO,KAAK,IAAMD,GAAK,EAAG,KAAK,IAAK,KAAK,IAAKC,EAAGD,EAAGC,CAAC,EAC9F,KAAK,SAAS,cAAc,KAAK,IAAK,KAAK,KAAO,KAAK,IAAMA,GAAK,EAAGD,EAAG,KAAK,IAAKA,EAAGC,CAAC,EAC3F,KACF,CACF,CACA,KAAK,IAAMD,EAAG,KAAK,IAAMC,CAC3B,CACF,EAEML,GAAN,KAAiB,CACf,YAAYJ,EAAS,CACnB,KAAK,SAAWA,CAClB,CACA,WAAY,CACV,KAAK,OAAS,CAChB,CACA,SAAU,CAAC,CACX,MAAMQ,EAAGC,EAAG,CAEV,GADAD,EAAI,CAACA,EAAGC,EAAI,CAACA,EACT,KAAK,SAAW,EAClB,KAAK,OAAS,MACT,CACL,IAAMC,EAAKC,GAAY,KAAK,IAAK,KAAK,GAAG,EACnCC,EAAKD,GAAY,KAAK,IAAK,KAAK,KAAO,KAAK,IAAMF,GAAK,CAAC,EACxDI,EAAKF,GAAYH,EAAG,KAAK,GAAG,EAC5BM,EAAKH,GAAYH,EAAGC,CAAC,EAC3B,KAAK,SAAS,OAAO,GAAGC,CAAE,EAC1B,KAAK,SAAS,cAAc,GAAGE,EAAI,GAAGC,EAAI,GAAGC,CAAE,CACjD,CACA,KAAK,IAAMN,EAAG,KAAK,IAAMC,CAC3B,CACF,ICxDA,SAASM,IAAWC,EAAG,CACrB,OAAOA,EAAE,MACX,CAEA,SAASC,IAAWD,EAAG,CACrB,OAAOA,EAAE,MACX,CAEO,SAASE,GAAKC,EAAO,CAC1B,IAAIC,EAASL,IACTM,EAASJ,IACTK,EAAIA,GACJC,EAAIA,GACJC,EAAU,KACVC,EAAS,KACTC,EAAOC,GAAST,CAAI,EAExB,SAASA,GAAO,CACd,IAAIU,EACEC,EAAOC,GAAM,KAAK,SAAS,EAC3BC,EAAIX,EAAO,MAAM,KAAMS,CAAI,EAC3BG,EAAIX,EAAO,MAAM,KAAMQ,CAAI,EAMjC,GALIL,GAAW,OAAMC,EAASN,EAAMS,EAASF,EAAK,CAAC,GACnDD,EAAO,UAAU,EACjBI,EAAK,CAAC,EAAIE,EAAGN,EAAO,MAAM,CAACH,EAAE,MAAM,KAAMO,CAAI,EAAG,CAACN,EAAE,MAAM,KAAMM,CAAI,CAAC,EACpEA,EAAK,CAAC,EAAIG,EAAGP,EAAO,MAAM,CAACH,EAAE,MAAM,KAAMO,CAAI,EAAG,CAACN,EAAE,MAAM,KAAMM,CAAI,CAAC,EACpEJ,EAAO,QAAQ,EACXG,EAAQ,OAAOH,EAAS,KAAMG,EAAS,IAAM,IACnD,CAEA,OAAAV,EAAK,OAAS,SAASe,EAAG,CACxB,OAAO,UAAU,QAAUb,EAASa,EAAGf,GAAQE,CACjD,EAEAF,EAAK,OAAS,SAASe,EAAG,CACxB,OAAO,UAAU,QAAUZ,EAASY,EAAGf,GAAQG,CACjD,EAEAH,EAAK,EAAI,SAASe,EAAG,CACnB,OAAO,UAAU,QAAUX,EAAI,OAAOW,GAAM,WAAaA,EAAIC,GAAS,CAACD,CAAC,EAAGf,GAAQI,CACrF,EAEAJ,EAAK,EAAI,SAASe,EAAG,CACnB,OAAO,UAAU,QAAUV,EAAI,OAAOU,GAAM,WAAaA,EAAIC,GAAS,CAACD,CAAC,EAAGf,GAAQK,CACrF,EAEAL,EAAK,QAAU,SAASe,EAAG,CACzB,OAAO,UAAU,QAAUA,GAAK,KAAOT,EAAUC,EAAS,KAAOA,EAASN,EAAMK,EAAUS,CAAC,EAAGf,GAAQM,CACxG,EAEON,CACT,CAEO,SAASiB,IAAiB,CAC/B,OAAOjB,GAAKkB,EAAK,CACnB,CAEO,SAASC,IAAe,CAC7B,OAAOnB,GAAKoB,EAAK,CACnB,CAEO,SAASC,IAAa,CAC3B,IAAMC,EAAItB,GAAKuB,EAAU,EACzB,OAAAD,EAAE,MAAQA,EAAE,EAAG,OAAOA,EAAE,EACxBA,EAAE,OAASA,EAAE,EAAG,OAAOA,EAAE,EAClBA,CACT,CAxEA,IAAAE,GAAAC,GAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,OCJA,IAEMC,IAECC,GAJPC,GAAAC,GAAA,KAAAC,KAEMJ,IAAQK,GAAK,CAAC,EAEbJ,GAAQ,CACb,KAAKK,EAASC,EAAM,CAClB,IAAM,EAAIF,GAAKE,EAAOC,GAAID,EAAO,GAAI,GAAI,CAAC,EAAI,OACxCE,EAAI,EAAI,EACRC,EAAID,EAAIT,IACdM,EAAQ,OAAO,EAAG,CAAC,EACnBA,EAAQ,OAAO,EAAG,CAAC,CAAC,EACpBA,EAAQ,OAAO,CAACI,EAAG,CAACD,CAAC,EACrBH,EAAQ,OAAOI,EAAGD,CAAC,EACnBH,EAAQ,OAAO,CAACI,EAAGD,CAAC,EACpBH,EAAQ,OAAOI,EAAG,CAACD,CAAC,CACtB,CACF,IChBA,IAEOE,GAFPC,GAAAC,GAAA,KAAAC,KAEOH,GAAQ,CACb,KAAKI,EAASC,EAAM,CAClB,IAAM,EAAIC,GAAKD,EAAOE,EAAE,EACxBH,EAAQ,OAAO,EAAG,CAAC,EACnBA,EAAQ,IAAI,EAAG,EAAG,EAAG,EAAGI,EAAG,CAC7B,CACF,ICRA,IAEOC,GAFPC,GAAAC,GAAA,KAAAC,KAEOH,GAAQ,CACb,KAAKI,EAASC,EAAM,CAClB,IAAM,EAAIC,GAAKD,EAAO,CAAC,EAAI,EAC3BD,EAAQ,OAAO,GAAK,EAAG,CAAC,CAAC,EACzBA,EAAQ,OAAO,CAAC,EAAG,CAAC,CAAC,EACrBA,EAAQ,OAAO,CAAC,EAAG,GAAK,CAAC,EACzBA,EAAQ,OAAO,EAAG,GAAK,CAAC,EACxBA,EAAQ,OAAO,EAAG,CAAC,CAAC,EACpBA,EAAQ,OAAO,EAAI,EAAG,CAAC,CAAC,EACxBA,EAAQ,OAAO,EAAI,EAAG,CAAC,EACvBA,EAAQ,OAAO,EAAG,CAAC,EACnBA,EAAQ,OAAO,EAAG,EAAI,CAAC,EACvBA,EAAQ,OAAO,CAAC,EAAG,EAAI,CAAC,EACxBA,EAAQ,OAAO,CAAC,EAAG,CAAC,EACpBA,EAAQ,OAAO,GAAK,EAAG,CAAC,EACxBA,EAAQ,UAAU,CACpB,CACF,ICnBA,IAEMG,GACAC,IAECC,GALPC,GAAAC,GAAA,KAAAC,KAEML,GAAQM,GAAK,EAAI,CAAC,EAClBL,IAAUD,GAAQ,EAEjBE,GAAQ,CACb,KAAKK,EAASC,EAAM,CAClB,IAAMC,EAAIH,GAAKE,EAAOP,GAAO,EACvBS,EAAID,EAAIT,GACdO,EAAQ,OAAO,EAAG,CAACE,CAAC,EACpBF,EAAQ,OAAOG,EAAG,CAAC,EACnBH,EAAQ,OAAO,EAAGE,CAAC,EACnBF,EAAQ,OAAO,CAACG,EAAG,CAAC,EACpBH,EAAQ,UAAU,CACpB,CACF,ICfA,IAEOI,GAFPC,GAAAC,GAAA,KAAAC,KAEOH,GAAQ,CACb,KAAKI,EAASC,EAAM,CAClB,IAAM,EAAIC,GAAKD,CAAI,EAAI,OACvBD,EAAQ,OAAO,EAAG,CAAC,CAAC,EACpBA,EAAQ,OAAO,EAAG,CAAC,EACnBA,EAAQ,OAAO,EAAG,CAAC,EACnBA,EAAQ,OAAO,CAAC,EAAG,CAAC,EACpBA,EAAQ,UAAU,CACpB,CACF,ICXA,IAEOG,GAFPC,GAAAC,GAAA,KAAAC,KAEOH,GAAQ,CACb,KAAKI,EAASC,EAAM,CAClB,IAAM,EAAIC,GAAKD,EAAOE,GAAIF,EAAO,EAAG,CAAC,CAAC,EAAI,OAC1CD,EAAQ,OAAO,CAAC,EAAG,CAAC,EACpBA,EAAQ,OAAO,EAAG,CAAC,EACnBA,EAAQ,OAAO,EAAG,CAAC,EACnBA,EAAQ,OAAO,EAAG,CAAC,CAAC,CACtB,CACF,ICVA,IAEOI,GAFPC,GAAAC,GAAA,KAAAC,KAEOH,GAAQ,CACb,KAAKI,EAASC,EAAM,CAClB,IAAMC,EAAIC,GAAKF,CAAI,EACbG,EAAI,CAACF,EAAI,EACfF,EAAQ,KAAKI,EAAGA,EAAGF,EAAGA,CAAC,CACzB,CACF,ICRA,IAEOG,GAFPC,GAAAC,GAAA,KAAAC,KAEOH,GAAQ,CACb,KAAKI,EAASC,EAAM,CAClB,IAAM,EAAIC,GAAKD,CAAI,EAAI,MACvBD,EAAQ,OAAO,EAAG,CAAC,EACnBA,EAAQ,OAAO,EAAG,CAAC,CAAC,EACpBA,EAAQ,OAAO,CAAC,EAAG,CAAC,CAAC,EACrBA,EAAQ,OAAO,CAAC,EAAG,CAAC,EACpBA,EAAQ,UAAU,CACpB,CACF,ICXA,IAEMG,IACAC,GACAC,IACAC,IAECC,GAPPC,GAAAC,GAAA,KAAAC,KAEMP,IAAK,kBACLC,GAAKO,GAAIC,GAAK,EAAE,EAAID,GAAI,EAAIC,GAAK,EAAE,EACnCP,IAAKM,GAAIE,GAAM,EAAE,EAAIT,GACrBE,IAAK,CAACQ,GAAID,GAAM,EAAE,EAAIT,GAErBG,GAAQ,CACb,KAAKQ,EAASC,EAAM,CAClB,IAAM,EAAIC,GAAKD,EAAOb,GAAE,EAClBe,EAAIb,IAAK,EACTc,EAAIb,IAAK,EACfS,EAAQ,OAAO,EAAG,CAAC,CAAC,EACpBA,EAAQ,OAAOG,EAAGC,CAAC,EACnB,QAASC,EAAI,EAAGA,EAAI,EAAG,EAAEA,EAAG,CAC1B,IAAMC,EAAIR,GAAMO,EAAI,EACdE,EAAIR,GAAIO,CAAC,EACTE,EAAIZ,GAAIU,CAAC,EACfN,EAAQ,OAAOQ,EAAI,EAAG,CAACD,EAAI,CAAC,EAC5BP,EAAQ,OAAOO,EAAIJ,EAAIK,EAAIJ,EAAGI,EAAIL,EAAII,EAAIH,CAAC,CAC7C,CACAJ,EAAQ,UAAU,CACpB,CACF,ICvBA,IAEMS,GAECC,GAJPC,GAAAC,GAAA,KAAAC,KAEMJ,GAAQK,GAAK,CAAC,EAEbJ,GAAQ,CACb,KAAKK,EAASC,EAAM,CAClB,IAAMC,EAAI,CAACH,GAAKE,GAAQP,GAAQ,EAAE,EAClCM,EAAQ,OAAO,EAAGE,EAAI,CAAC,EACvBF,EAAQ,OAAO,CAACN,GAAQQ,EAAG,CAACA,CAAC,EAC7BF,EAAQ,OAAON,GAAQQ,EAAG,CAACA,CAAC,EAC5BF,EAAQ,UAAU,CACpB,CACF,ICZA,IAEMG,IAECC,GAJPC,GAAAC,GAAA,KAAAC,KAEMJ,IAAQK,GAAK,CAAC,EAEbJ,GAAQ,CACb,KAAKK,EAASC,EAAM,CAClB,IAAMC,EAAIH,GAAKE,CAAI,EAAI,MACjBE,EAAID,EAAK,EACTE,EAAKF,EAAIR,IAAS,EACxBM,EAAQ,OAAO,EAAG,CAACE,CAAC,EACpBF,EAAQ,OAAOI,EAAGD,CAAC,EACnBH,EAAQ,OAAO,CAACI,EAAGD,CAAC,EACpBH,EAAQ,UAAU,CACpB,CACF,ICdA,IAEMK,GACAC,GACAC,GACAC,IAECC,GAPPC,GAAAC,GAAA,KAAAC,KAEMP,GAAI,IACJC,GAAIO,GAAK,CAAC,EAAI,EACdN,GAAI,EAAIM,GAAK,EAAE,EACfL,KAAKD,GAAI,EAAI,GAAK,EAEjBE,GAAQ,CACb,KAAKK,EAASC,EAAM,CAClB,IAAM,EAAIF,GAAKE,EAAOP,GAAC,EACjBQ,EAAK,EAAI,EAAGC,EAAK,EAAIV,GACrBW,EAAKF,EAAIG,EAAK,EAAIZ,GAAI,EACtBa,EAAK,CAACF,EAAIG,EAAKF,EACrBL,EAAQ,OAAOE,EAAIC,CAAE,EACrBH,EAAQ,OAAOI,EAAIC,CAAE,EACrBL,EAAQ,OAAOM,EAAIC,CAAE,EACrBP,EAAQ,OAAOT,GAAIW,EAAKV,GAAIW,EAAIX,GAAIU,EAAKX,GAAIY,CAAE,EAC/CH,EAAQ,OAAOT,GAAIa,EAAKZ,GAAIa,EAAIb,GAAIY,EAAKb,GAAIc,CAAE,EAC/CL,EAAQ,OAAOT,GAAIe,EAAKd,GAAIe,EAAIf,GAAIc,EAAKf,GAAIgB,CAAE,EAC/CP,EAAQ,OAAOT,GAAIW,EAAKV,GAAIW,EAAIZ,GAAIY,EAAKX,GAAIU,CAAE,EAC/CF,EAAQ,OAAOT,GAAIa,EAAKZ,GAAIa,EAAId,GAAIc,EAAKb,GAAIY,CAAE,EAC/CJ,EAAQ,OAAOT,GAAIe,EAAKd,GAAIe,EAAIhB,GAAIgB,EAAKf,GAAIc,CAAE,EAC/CN,EAAQ,UAAU,CACpB,CACF,ICxBA,IAEOQ,GAFPC,GAAAC,GAAA,KAAAC,KAEOH,GAAQ,CACb,KAAKI,EAASC,EAAM,CAClB,IAAM,EAAIC,GAAKD,EAAOE,GAAIF,EAAO,EAAG,GAAG,CAAC,EAAI,MAC5CD,EAAQ,OAAO,CAAC,EAAG,CAAC,CAAC,EACrBA,EAAQ,OAAO,EAAG,CAAC,EACnBA,EAAQ,OAAO,CAAC,EAAG,CAAC,EACpBA,EAAQ,OAAO,EAAG,CAAC,CAAC,CACtB,CACF,IC4Be,SAARI,GAAwBC,EAAMC,EAAM,CACzC,IAAIC,EAAU,KACVC,EAAOC,GAASC,CAAM,EAE1BL,EAAO,OAAOA,GAAS,WAAaA,EAAOM,GAASN,GAAQO,EAAM,EAClEN,EAAO,OAAOA,GAAS,WAAaA,EAAOK,GAASL,IAAS,OAAY,GAAK,CAACA,CAAI,EAEnF,SAASI,GAAS,CAChB,IAAIG,EAGJ,GAFKN,IAASA,EAAUM,EAASL,EAAK,GACtCH,EAAK,MAAM,KAAM,SAAS,EAAE,KAAKE,EAAS,CAACD,EAAK,MAAM,KAAM,SAAS,CAAC,EAClEO,EAAQ,OAAON,EAAU,KAAMM,EAAS,IAAM,IACpD,CAEA,OAAAH,EAAO,KAAO,SAASI,EAAG,CACxB,OAAO,UAAU,QAAUT,EAAO,OAAOS,GAAM,WAAaA,EAAIH,GAASG,CAAC,EAAGJ,GAAUL,CACzF,EAEAK,EAAO,KAAO,SAASI,EAAG,CACxB,OAAO,UAAU,QAAUR,EAAO,OAAOQ,GAAM,WAAaA,EAAIH,GAAS,CAACG,CAAC,EAAGJ,GAAUJ,CAC1F,EAEAI,EAAO,QAAU,SAASI,EAAG,CAC3B,OAAO,UAAU,QAAUP,EAAUO,GAAY,KAAUJ,GAAUH,CACvE,EAEOG,CACT,CAjEA,IAiBaK,GAWAC,GA5BbC,GAAAC,GAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAGalB,GAAc,CACzBH,GACAsB,GACAC,GACAC,GACAC,GACAC,GACAC,EACF,EAGavB,GAAgB,CAC3BJ,GACA4B,GACAC,GACAC,GACAC,GACAC,GACAC,EACF,ICpCe,SAARC,IAAmB,CAAC,CAA3B,IAAAC,GAAAC,GAAA,QCAO,SAASC,GAAMC,EAAMC,EAAGC,EAAG,CAChCF,EAAK,SAAS,eACX,EAAIA,EAAK,IAAMA,EAAK,KAAO,GAC3B,EAAIA,EAAK,IAAMA,EAAK,KAAO,GAC3BA,EAAK,IAAM,EAAIA,EAAK,KAAO,GAC3BA,EAAK,IAAM,EAAIA,EAAK,KAAO,GAC3BA,EAAK,IAAM,EAAIA,EAAK,IAAMC,GAAK,GAC/BD,EAAK,IAAM,EAAIA,EAAK,IAAME,GAAK,CAClC,CACF,CAEO,SAASC,GAAMC,EAAS,CAC7B,KAAK,SAAWA,CAClB,CAmCe,SAARC,GAAiBD,EAAS,CAC/B,OAAO,IAAID,GAAMC,CAAO,CAC1B,CAlDA,IAAAE,GAAAC,GAAA,KAeAJ,GAAM,UAAY,CAChB,UAAW,UAAW,CACpB,KAAK,MAAQ,CACf,EACA,QAAS,UAAW,CAClB,KAAK,MAAQ,GACf,EACA,UAAW,UAAW,CACpB,KAAK,IAAM,KAAK,IAChB,KAAK,IAAM,KAAK,IAAM,IACtB,KAAK,OAAS,CAChB,EACA,QAAS,UAAW,CAClB,OAAQ,KAAK,OAAQ,CACnB,IAAK,GAAGJ,GAAM,KAAM,KAAK,IAAK,KAAK,GAAG,EACtC,IAAK,GAAG,KAAK,SAAS,OAAO,KAAK,IAAK,KAAK,GAAG,EAAG,KACpD,EACI,KAAK,OAAU,KAAK,QAAU,GAAK,KAAK,SAAW,IAAI,KAAK,SAAS,UAAU,EACnF,KAAK,MAAQ,EAAI,KAAK,KACxB,EACA,MAAO,SAASE,EAAGC,EAAG,CAEpB,OADAD,EAAI,CAACA,EAAGC,EAAI,CAACA,EACL,KAAK,OAAQ,CACnB,IAAK,GAAG,KAAK,OAAS,EAAG,KAAK,MAAQ,KAAK,SAAS,OAAOD,EAAGC,CAAC,EAAI,KAAK,SAAS,OAAOD,EAAGC,CAAC,EAAG,MAC/F,IAAK,GAAG,KAAK,OAAS,EAAG,MACzB,IAAK,GAAG,KAAK,OAAS,EAAG,KAAK,SAAS,QAAQ,EAAI,KAAK,IAAM,KAAK,KAAO,GAAI,EAAI,KAAK,IAAM,KAAK,KAAO,CAAC,EAC1G,QAASH,GAAM,KAAME,EAAGC,CAAC,EAAG,KAC9B,CACA,KAAK,IAAM,KAAK,IAAK,KAAK,IAAMD,EAChC,KAAK,IAAM,KAAK,IAAK,KAAK,IAAMC,CAClC,CACF,IC3CA,SAASM,GAAYC,EAAS,CAC5B,KAAK,SAAWA,CAClB,CA4Ce,SAARC,GAAiBD,EAAS,CAC/B,OAAO,IAAID,GAAYC,CAAO,CAChC,CAnDA,IAAAE,GAAAC,GAAA,KAAAC,KACAC,KAMAN,GAAY,UAAY,CACtB,UAAWO,GACX,QAASA,GACT,UAAW,UAAW,CACpB,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IACjD,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,IACvD,KAAK,OAAS,CAChB,EACA,QAAS,UAAW,CAClB,OAAQ,KAAK,OAAQ,CACnB,IAAK,GAAG,CACN,KAAK,SAAS,OAAO,KAAK,IAAK,KAAK,GAAG,EACvC,KAAK,SAAS,UAAU,EACxB,KACF,CACA,IAAK,GAAG,CACN,KAAK,SAAS,QAAQ,KAAK,IAAM,EAAI,KAAK,KAAO,GAAI,KAAK,IAAM,EAAI,KAAK,KAAO,CAAC,EACjF,KAAK,SAAS,QAAQ,KAAK,IAAM,EAAI,KAAK,KAAO,GAAI,KAAK,IAAM,EAAI,KAAK,KAAO,CAAC,EACjF,KAAK,SAAS,UAAU,EACxB,KACF,CACA,IAAK,GAAG,CACN,KAAK,MAAM,KAAK,IAAK,KAAK,GAAG,EAC7B,KAAK,MAAM,KAAK,IAAK,KAAK,GAAG,EAC7B,KAAK,MAAM,KAAK,IAAK,KAAK,GAAG,EAC7B,KACF,CACF,CACF,EACA,MAAO,SAASC,EAAGC,EAAG,CAEpB,OADAD,EAAI,CAACA,EAAGC,EAAI,CAACA,EACL,KAAK,OAAQ,CACnB,IAAK,GAAG,KAAK,OAAS,EAAG,KAAK,IAAMD,EAAG,KAAK,IAAMC,EAAG,MACrD,IAAK,GAAG,KAAK,OAAS,EAAG,KAAK,IAAMD,EAAG,KAAK,IAAMC,EAAG,MACrD,IAAK,GAAG,KAAK,OAAS,EAAG,KAAK,IAAMD,EAAG,KAAK,IAAMC,EAAG,KAAK,SAAS,QAAQ,KAAK,IAAM,EAAI,KAAK,IAAMD,GAAK,GAAI,KAAK,IAAM,EAAI,KAAK,IAAMC,GAAK,CAAC,EAAG,MACjJ,QAASC,GAAM,KAAMF,EAAGC,CAAC,EAAG,KAC9B,CACA,KAAK,IAAM,KAAK,IAAK,KAAK,IAAMD,EAChC,KAAK,IAAM,KAAK,IAAK,KAAK,IAAMC,CAClC,CACF,IC7CA,SAASE,GAAUC,EAAS,CAC1B,KAAK,SAAWA,CAClB,CAgCe,SAARC,GAAiBD,EAAS,CAC/B,OAAO,IAAID,GAAUC,CAAO,CAC9B,CAtCA,IAAAE,GAAAC,GAAA,KAAAC,KAMAL,GAAU,UAAY,CACpB,UAAW,UAAW,CACpB,KAAK,MAAQ,CACf,EACA,QAAS,UAAW,CAClB,KAAK,MAAQ,GACf,EACA,UAAW,UAAW,CACpB,KAAK,IAAM,KAAK,IAChB,KAAK,IAAM,KAAK,IAAM,IACtB,KAAK,OAAS,CAChB,EACA,QAAS,UAAW,EACd,KAAK,OAAU,KAAK,QAAU,GAAK,KAAK,SAAW,IAAI,KAAK,SAAS,UAAU,EACnF,KAAK,MAAQ,EAAI,KAAK,KACxB,EACA,MAAO,SAASM,EAAGC,EAAG,CAEpB,OADAD,EAAI,CAACA,EAAGC,EAAI,CAACA,EACL,KAAK,OAAQ,CACnB,IAAK,GAAG,KAAK,OAAS,EAAG,MACzB,IAAK,GAAG,KAAK,OAAS,EAAG,MACzB,IAAK,GAAG,KAAK,OAAS,EAAG,IAAIC,GAAM,KAAK,IAAM,EAAI,KAAK,IAAMF,GAAK,EAAGG,GAAM,KAAK,IAAM,EAAI,KAAK,IAAMF,GAAK,EAAG,KAAK,MAAQ,KAAK,SAAS,OAAOC,EAAIC,CAAE,EAAI,KAAK,SAAS,OAAOD,EAAIC,CAAE,EAAG,MACvL,IAAK,GAAG,KAAK,OAAS,EACtB,QAASC,GAAM,KAAMJ,EAAGC,CAAC,EAAG,KAC9B,CACA,KAAK,IAAM,KAAK,IAAK,KAAK,IAAMD,EAChC,KAAK,IAAM,KAAK,IAAK,KAAK,IAAMC,CAClC,CACF,IChCA,SAASI,GAAOC,EAASC,EAAM,CAC7B,KAAK,OAAS,IAAIC,GAAMF,CAAO,EAC/B,KAAK,MAAQC,CACf,CALA,IA4COE,GA5CPC,GAAAC,GAAA,KAAAC,KAOAP,GAAO,UAAY,CACjB,UAAW,UAAW,CACpB,KAAK,GAAK,CAAC,EACX,KAAK,GAAK,CAAC,EACX,KAAK,OAAO,UAAU,CACxB,EACA,QAAS,UAAW,CAClB,IAAIQ,EAAI,KAAK,GACTC,EAAI,KAAK,GACTC,EAAIF,EAAE,OAAS,EAEnB,GAAIE,EAAI,EAQN,QAPIC,EAAKH,EAAE,CAAC,EACRI,EAAKH,EAAE,CAAC,EACRI,EAAKL,EAAEE,CAAC,EAAIC,EACZG,EAAKL,EAAEC,CAAC,EAAIE,EACZG,EAAI,GACJC,EAEG,EAAED,GAAKL,GACZM,EAAID,EAAIL,EACR,KAAK,OAAO,MACV,KAAK,MAAQF,EAAEO,CAAC,GAAK,EAAI,KAAK,QAAUJ,EAAKK,EAAIH,GACjD,KAAK,MAAQJ,EAAEM,CAAC,GAAK,EAAI,KAAK,QAAUH,EAAKI,EAAIF,EACnD,EAIJ,KAAK,GAAK,KAAK,GAAK,KACpB,KAAK,OAAO,QAAQ,CACtB,EACA,MAAO,SAASN,EAAGC,EAAG,CACpB,KAAK,GAAG,KAAK,CAACD,CAAC,EACf,KAAK,GAAG,KAAK,CAACC,CAAC,CACjB,CACF,EAEOL,GAAS,SAASa,EAAOf,EAAM,CAEpC,SAASgB,EAAOjB,EAAS,CACvB,OAAOC,IAAS,EAAI,IAAIC,GAAMF,CAAO,EAAI,IAAID,GAAOC,EAASC,CAAI,CACnE,CAEA,OAAAgB,EAAO,KAAO,SAAShB,EAAM,CAC3B,OAAOe,EAAO,CAACf,CAAI,CACrB,EAEOgB,CACT,EAAG,GAAI,ICvDA,SAASC,GAAMC,EAAMC,EAAGC,EAAG,CAChCF,EAAK,SAAS,cACZA,EAAK,IAAMA,EAAK,IAAMA,EAAK,IAAMA,EAAK,KACtCA,EAAK,IAAMA,EAAK,IAAMA,EAAK,IAAMA,EAAK,KACtCA,EAAK,IAAMA,EAAK,IAAMA,EAAK,IAAMC,GACjCD,EAAK,IAAMA,EAAK,IAAMA,EAAK,IAAME,GACjCF,EAAK,IACLA,EAAK,GACP,CACF,CAEO,SAASG,GAASC,EAASC,EAAS,CACzC,KAAK,SAAWD,EAChB,KAAK,IAAM,EAAIC,GAAW,CAC5B,CAdA,IAiDOC,GAjDPC,GAAAC,GAAA,KAgBAL,GAAS,UAAY,CACnB,UAAW,UAAW,CACpB,KAAK,MAAQ,CACf,EACA,QAAS,UAAW,CAClB,KAAK,MAAQ,GACf,EACA,UAAW,UAAW,CACpB,KAAK,IAAM,KAAK,IAAM,KAAK,IAC3B,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,IACjC,KAAK,OAAS,CAChB,EACA,QAAS,UAAW,CAClB,OAAQ,KAAK,OAAQ,CACnB,IAAK,GAAG,KAAK,SAAS,OAAO,KAAK,IAAK,KAAK,GAAG,EAAG,MAClD,IAAK,GAAGJ,GAAM,KAAM,KAAK,IAAK,KAAK,GAAG,EAAG,KAC3C,EACI,KAAK,OAAU,KAAK,QAAU,GAAK,KAAK,SAAW,IAAI,KAAK,SAAS,UAAU,EACnF,KAAK,MAAQ,EAAI,KAAK,KACxB,EACA,MAAO,SAASE,EAAGC,EAAG,CAEpB,OADAD,EAAI,CAACA,EAAGC,EAAI,CAACA,EACL,KAAK,OAAQ,CACnB,IAAK,GAAG,KAAK,OAAS,EAAG,KAAK,MAAQ,KAAK,SAAS,OAAOD,EAAGC,CAAC,EAAI,KAAK,SAAS,OAAOD,EAAGC,CAAC,EAAG,MAC/F,IAAK,GAAG,KAAK,OAAS,EAAG,KAAK,IAAMD,EAAG,KAAK,IAAMC,EAAG,MACrD,IAAK,GAAG,KAAK,OAAS,EACtB,QAASH,GAAM,KAAME,EAAGC,CAAC,EAAG,KAC9B,CACA,KAAK,IAAM,KAAK,IAAK,KAAK,IAAM,KAAK,IAAK,KAAK,IAAMD,EACrD,KAAK,IAAM,KAAK,IAAK,KAAK,IAAM,KAAK,IAAK,KAAK,IAAMC,CACvD,CACF,EAEOI,GAAS,SAASG,EAAOJ,EAAS,CAEvC,SAASK,EAASN,EAAS,CACzB,OAAO,IAAID,GAASC,EAASC,CAAO,CACtC,CAEA,OAAAK,EAAS,QAAU,SAASL,EAAS,CACnC,OAAOI,EAAO,CAACJ,CAAO,CACxB,EAEOK,CACT,EAAG,CAAC,ICzDG,SAASC,GAAeC,EAASC,EAAS,CAC/C,KAAK,SAAWD,EAChB,KAAK,IAAM,EAAIC,GAAW,CAC5B,CANA,IAiDOC,GAjDPC,GAAAC,GAAA,KAAAC,KACAC,KAOAP,GAAe,UAAY,CACzB,UAAWQ,GACX,QAASA,GACT,UAAW,UAAW,CACpB,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAC5D,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,IAClE,KAAK,OAAS,CAChB,EACA,QAAS,UAAW,CAClB,OAAQ,KAAK,OAAQ,CACnB,IAAK,GAAG,CACN,KAAK,SAAS,OAAO,KAAK,IAAK,KAAK,GAAG,EACvC,KAAK,SAAS,UAAU,EACxB,KACF,CACA,IAAK,GAAG,CACN,KAAK,SAAS,OAAO,KAAK,IAAK,KAAK,GAAG,EACvC,KAAK,SAAS,UAAU,EACxB,KACF,CACA,IAAK,GAAG,CACN,KAAK,MAAM,KAAK,IAAK,KAAK,GAAG,EAC7B,KAAK,MAAM,KAAK,IAAK,KAAK,GAAG,EAC7B,KAAK,MAAM,KAAK,IAAK,KAAK,GAAG,EAC7B,KACF,CACF,CACF,EACA,MAAO,SAASC,EAAGC,EAAG,CAEpB,OADAD,EAAI,CAACA,EAAGC,EAAI,CAACA,EACL,KAAK,OAAQ,CACnB,IAAK,GAAG,KAAK,OAAS,EAAG,KAAK,IAAMD,EAAG,KAAK,IAAMC,EAAG,MACrD,IAAK,GAAG,KAAK,OAAS,EAAG,KAAK,SAAS,OAAO,KAAK,IAAMD,EAAG,KAAK,IAAMC,CAAC,EAAG,MAC3E,IAAK,GAAG,KAAK,OAAS,EAAG,KAAK,IAAMD,EAAG,KAAK,IAAMC,EAAG,MACrD,QAASC,GAAM,KAAMF,EAAGC,CAAC,EAAG,KAC9B,CACA,KAAK,IAAM,KAAK,IAAK,KAAK,IAAM,KAAK,IAAK,KAAK,IAAMD,EACrD,KAAK,IAAM,KAAK,IAAK,KAAK,IAAM,KAAK,IAAK,KAAK,IAAMC,CACvD,CACF,EAEOP,GAAS,SAASS,EAAOV,EAAS,CAEvC,SAASW,EAASZ,EAAS,CACzB,OAAO,IAAID,GAAeC,EAASC,CAAO,CAC5C,CAEA,OAAAW,EAAS,QAAU,SAASX,EAAS,CACnC,OAAOU,EAAO,CAACV,CAAO,CACxB,EAEOW,CACT,EAAG,CAAC,IC1DG,SAASC,GAAaC,EAASC,EAAS,CAC7C,KAAK,SAAWD,EAChB,KAAK,IAAM,EAAIC,GAAW,CAC5B,CALA,IAqCOC,GArCPC,GAAAC,GAAA,KAAAC,KAOAN,GAAa,UAAY,CACvB,UAAW,UAAW,CACpB,KAAK,MAAQ,CACf,EACA,QAAS,UAAW,CAClB,KAAK,MAAQ,GACf,EACA,UAAW,UAAW,CACpB,KAAK,IAAM,KAAK,IAAM,KAAK,IAC3B,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,IACjC,KAAK,OAAS,CAChB,EACA,QAAS,UAAW,EACd,KAAK,OAAU,KAAK,QAAU,GAAK,KAAK,SAAW,IAAI,KAAK,SAAS,UAAU,EACnF,KAAK,MAAQ,EAAI,KAAK,KACxB,EACA,MAAO,SAASO,EAAGC,EAAG,CAEpB,OADAD,EAAI,CAACA,EAAGC,EAAI,CAACA,EACL,KAAK,OAAQ,CACnB,IAAK,GAAG,KAAK,OAAS,EAAG,MACzB,IAAK,GAAG,KAAK,OAAS,EAAG,MACzB,IAAK,GAAG,KAAK,OAAS,EAAG,KAAK,MAAQ,KAAK,SAAS,OAAO,KAAK,IAAK,KAAK,GAAG,EAAI,KAAK,SAAS,OAAO,KAAK,IAAK,KAAK,GAAG,EAAG,MAC3H,IAAK,GAAG,KAAK,OAAS,EACtB,QAASC,GAAM,KAAMF,EAAGC,CAAC,EAAG,KAC9B,CACA,KAAK,IAAM,KAAK,IAAK,KAAK,IAAM,KAAK,IAAK,KAAK,IAAMD,EACrD,KAAK,IAAM,KAAK,IAAK,KAAK,IAAM,KAAK,IAAK,KAAK,IAAMC,CACvD,CACF,EAEOL,GAAS,SAASO,EAAOR,EAAS,CAEvC,SAASS,EAASV,EAAS,CACzB,OAAO,IAAID,GAAaC,EAASC,CAAO,CAC1C,CAEA,OAAAS,EAAS,QAAU,SAAST,EAAS,CACnC,OAAOQ,EAAO,CAACR,CAAO,CACxB,EAEOS,CACT,EAAG,CAAC,IC7CG,SAASC,GAAMC,EAAMC,EAAGC,EAAG,CAChC,IAAIC,EAAKH,EAAK,IACVI,EAAKJ,EAAK,IACVK,EAAKL,EAAK,IACVM,EAAKN,EAAK,IAEd,GAAIA,EAAK,OAASO,GAAS,CACzB,IAAIC,EAAI,EAAIR,EAAK,QAAU,EAAIA,EAAK,OAASA,EAAK,OAASA,EAAK,QAC5DS,EAAI,EAAIT,EAAK,QAAUA,EAAK,OAASA,EAAK,QAC9CG,GAAMA,EAAKK,EAAIR,EAAK,IAAMA,EAAK,QAAUA,EAAK,IAAMA,EAAK,SAAWS,EACpEL,GAAMA,EAAKI,EAAIR,EAAK,IAAMA,EAAK,QAAUA,EAAK,IAAMA,EAAK,SAAWS,CACtE,CAEA,GAAIT,EAAK,OAASO,GAAS,CACzB,IAAIG,EAAI,EAAIV,EAAK,QAAU,EAAIA,EAAK,OAASA,EAAK,OAASA,EAAK,QAC5DW,EAAI,EAAIX,EAAK,QAAUA,EAAK,OAASA,EAAK,QAC9CK,GAAMA,EAAKK,EAAIV,EAAK,IAAMA,EAAK,QAAUC,EAAID,EAAK,SAAWW,EAC7DL,GAAMA,EAAKI,EAAIV,EAAK,IAAMA,EAAK,QAAUE,EAAIF,EAAK,SAAWW,CAC/D,CAEAX,EAAK,SAAS,cAAcG,EAAIC,EAAIC,EAAIC,EAAIN,EAAK,IAAKA,EAAK,GAAG,CAChE,CAEA,SAASY,GAAWC,EAASC,EAAO,CAClC,KAAK,SAAWD,EAChB,KAAK,OAASC,CAChB,CA7BA,IA4EOC,GA5EPC,GAAAC,GAAA,KAAAC,KACAC,KA8BAP,GAAW,UAAY,CACrB,UAAW,UAAW,CACpB,KAAK,MAAQ,CACf,EACA,QAAS,UAAW,CAClB,KAAK,MAAQ,GACf,EACA,UAAW,UAAW,CACpB,KAAK,IAAM,KAAK,IAAM,KAAK,IAC3B,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,IACjC,KAAK,OAAS,KAAK,OAAS,KAAK,OACjC,KAAK,QAAU,KAAK,QAAU,KAAK,QACnC,KAAK,OAAS,CAChB,EACA,QAAS,UAAW,CAClB,OAAQ,KAAK,OAAQ,CACnB,IAAK,GAAG,KAAK,SAAS,OAAO,KAAK,IAAK,KAAK,GAAG,EAAG,MAClD,IAAK,GAAG,KAAK,MAAM,KAAK,IAAK,KAAK,GAAG,EAAG,KAC1C,EACI,KAAK,OAAU,KAAK,QAAU,GAAK,KAAK,SAAW,IAAI,KAAK,SAAS,UAAU,EACnF,KAAK,MAAQ,EAAI,KAAK,KACxB,EACA,MAAO,SAASX,EAAGC,EAAG,CAGpB,GAFAD,EAAI,CAACA,EAAGC,EAAI,CAACA,EAET,KAAK,OAAQ,CACf,IAAIkB,EAAM,KAAK,IAAMnB,EACjBoB,EAAM,KAAK,IAAMnB,EACrB,KAAK,OAAS,KAAK,KAAK,KAAK,QAAU,KAAK,IAAIkB,EAAMA,EAAMC,EAAMA,EAAK,KAAK,MAAM,CAAC,CACrF,CAEA,OAAQ,KAAK,OAAQ,CACnB,IAAK,GAAG,KAAK,OAAS,EAAG,KAAK,MAAQ,KAAK,SAAS,OAAOpB,EAAGC,CAAC,EAAI,KAAK,SAAS,OAAOD,EAAGC,CAAC,EAAG,MAC/F,IAAK,GAAG,KAAK,OAAS,EAAG,MACzB,IAAK,GAAG,KAAK,OAAS,EACtB,QAASH,GAAM,KAAME,EAAGC,CAAC,EAAG,KAC9B,CAEA,KAAK,OAAS,KAAK,OAAQ,KAAK,OAAS,KAAK,OAC9C,KAAK,QAAU,KAAK,QAAS,KAAK,QAAU,KAAK,QACjD,KAAK,IAAM,KAAK,IAAK,KAAK,IAAM,KAAK,IAAK,KAAK,IAAMD,EACrD,KAAK,IAAM,KAAK,IAAK,KAAK,IAAM,KAAK,IAAK,KAAK,IAAMC,CACvD,CACF,EAEOa,GAAS,SAASO,EAAOR,EAAO,CAErC,SAASS,EAAWV,EAAS,CAC3B,OAAOC,EAAQ,IAAIF,GAAWC,EAASC,CAAK,EAAI,IAAIU,GAASX,EAAS,CAAC,CACzE,CAEA,OAAAU,EAAW,MAAQ,SAAST,EAAO,CACjC,OAAOQ,EAAO,CAACR,CAAK,CACtB,EAEOS,CACT,EAAG,EAAG,ICnFN,SAASE,GAAiBC,EAASC,EAAO,CACxC,KAAK,SAAWD,EAChB,KAAK,OAASC,CAChB,CAPA,IA8DOC,GA9DPC,GAAAC,GAAA,KAAAC,KACAC,KACAC,KAOAR,GAAiB,UAAY,CAC3B,UAAWS,GACX,QAASA,GACT,UAAW,UAAW,CACpB,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAC5D,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,IAClE,KAAK,OAAS,KAAK,OAAS,KAAK,OACjC,KAAK,QAAU,KAAK,QAAU,KAAK,QACnC,KAAK,OAAS,CAChB,EACA,QAAS,UAAW,CAClB,OAAQ,KAAK,OAAQ,CACnB,IAAK,GAAG,CACN,KAAK,SAAS,OAAO,KAAK,IAAK,KAAK,GAAG,EACvC,KAAK,SAAS,UAAU,EACxB,KACF,CACA,IAAK,GAAG,CACN,KAAK,SAAS,OAAO,KAAK,IAAK,KAAK,GAAG,EACvC,KAAK,SAAS,UAAU,EACxB,KACF,CACA,IAAK,GAAG,CACN,KAAK,MAAM,KAAK,IAAK,KAAK,GAAG,EAC7B,KAAK,MAAM,KAAK,IAAK,KAAK,GAAG,EAC7B,KAAK,MAAM,KAAK,IAAK,KAAK,GAAG,EAC7B,KACF,CACF,CACF,EACA,MAAO,SAASC,EAAGC,EAAG,CAGpB,GAFAD,EAAI,CAACA,EAAGC,EAAI,CAACA,EAET,KAAK,OAAQ,CACf,IAAIC,EAAM,KAAK,IAAMF,EACjBG,EAAM,KAAK,IAAMF,EACrB,KAAK,OAAS,KAAK,KAAK,KAAK,QAAU,KAAK,IAAIC,EAAMA,EAAMC,EAAMA,EAAK,KAAK,MAAM,CAAC,CACrF,CAEA,OAAQ,KAAK,OAAQ,CACnB,IAAK,GAAG,KAAK,OAAS,EAAG,KAAK,IAAMH,EAAG,KAAK,IAAMC,EAAG,MACrD,IAAK,GAAG,KAAK,OAAS,EAAG,KAAK,SAAS,OAAO,KAAK,IAAMD,EAAG,KAAK,IAAMC,CAAC,EAAG,MAC3E,IAAK,GAAG,KAAK,OAAS,EAAG,KAAK,IAAMD,EAAG,KAAK,IAAMC,EAAG,MACrD,QAASG,GAAM,KAAMJ,EAAGC,CAAC,EAAG,KAC9B,CAEA,KAAK,OAAS,KAAK,OAAQ,KAAK,OAAS,KAAK,OAC9C,KAAK,QAAU,KAAK,QAAS,KAAK,QAAU,KAAK,QACjD,KAAK,IAAM,KAAK,IAAK,KAAK,IAAM,KAAK,IAAK,KAAK,IAAMD,EACrD,KAAK,IAAM,KAAK,IAAK,KAAK,IAAM,KAAK,IAAK,KAAK,IAAMC,CACvD,CACF,EAEOR,GAAS,SAASY,EAAOb,EAAO,CAErC,SAASc,EAAWf,EAAS,CAC3B,OAAOC,EAAQ,IAAIF,GAAiBC,EAASC,CAAK,EAAI,IAAIe,GAAehB,EAAS,CAAC,CACrF,CAEA,OAAAe,EAAW,MAAQ,SAASd,EAAO,CACjC,OAAOa,EAAO,CAACb,CAAK,CACtB,EAEOc,CACT,EAAG,EAAG,ICtEN,SAASE,GAAeC,EAASC,EAAO,CACtC,KAAK,SAAWD,EAChB,KAAK,OAASC,CAChB,CANA,IAkDOC,GAlDPC,GAAAC,GAAA,KAAAC,KACAC,KAOAP,GAAe,UAAY,CACzB,UAAW,UAAW,CACpB,KAAK,MAAQ,CACf,EACA,QAAS,UAAW,CAClB,KAAK,MAAQ,GACf,EACA,UAAW,UAAW,CACpB,KAAK,IAAM,KAAK,IAAM,KAAK,IAC3B,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,IACjC,KAAK,OAAS,KAAK,OAAS,KAAK,OACjC,KAAK,QAAU,KAAK,QAAU,KAAK,QACnC,KAAK,OAAS,CAChB,EACA,QAAS,UAAW,EACd,KAAK,OAAU,KAAK,QAAU,GAAK,KAAK,SAAW,IAAI,KAAK,SAAS,UAAU,EACnF,KAAK,MAAQ,EAAI,KAAK,KACxB,EACA,MAAO,SAASQ,EAAGC,EAAG,CAGpB,GAFAD,EAAI,CAACA,EAAGC,EAAI,CAACA,EAET,KAAK,OAAQ,CACf,IAAIC,EAAM,KAAK,IAAMF,EACjBG,EAAM,KAAK,IAAMF,EACrB,KAAK,OAAS,KAAK,KAAK,KAAK,QAAU,KAAK,IAAIC,EAAMA,EAAMC,EAAMA,EAAK,KAAK,MAAM,CAAC,CACrF,CAEA,OAAQ,KAAK,OAAQ,CACnB,IAAK,GAAG,KAAK,OAAS,EAAG,MACzB,IAAK,GAAG,KAAK,OAAS,EAAG,MACzB,IAAK,GAAG,KAAK,OAAS,EAAG,KAAK,MAAQ,KAAK,SAAS,OAAO,KAAK,IAAK,KAAK,GAAG,EAAI,KAAK,SAAS,OAAO,KAAK,IAAK,KAAK,GAAG,EAAG,MAC3H,IAAK,GAAG,KAAK,OAAS,EACtB,QAASC,GAAM,KAAMJ,EAAGC,CAAC,EAAG,KAC9B,CAEA,KAAK,OAAS,KAAK,OAAQ,KAAK,OAAS,KAAK,OAC9C,KAAK,QAAU,KAAK,QAAS,KAAK,QAAU,KAAK,QACjD,KAAK,IAAM,KAAK,IAAK,KAAK,IAAM,KAAK,IAAK,KAAK,IAAMD,EACrD,KAAK,IAAM,KAAK,IAAK,KAAK,IAAM,KAAK,IAAK,KAAK,IAAMC,CACvD,CACF,EAEON,GAAS,SAASU,EAAOX,EAAO,CAErC,SAASY,EAAWb,EAAS,CAC3B,OAAOC,EAAQ,IAAIF,GAAeC,EAASC,CAAK,EAAI,IAAIa,GAAad,EAAS,CAAC,CACjF,CAEA,OAAAa,EAAW,MAAQ,SAASZ,EAAO,CACjC,OAAOW,EAAO,CAACX,CAAK,CACtB,EAEOY,CACT,EAAG,EAAG,IC3DN,SAASE,GAAaC,EAAS,CAC7B,KAAK,SAAWA,CAClB,CAkBe,SAARC,GAAiBD,EAAS,CAC/B,OAAO,IAAID,GAAaC,CAAO,CACjC,CAxBA,IAAAE,GAAAC,GAAA,KAAAC,KAMAL,GAAa,UAAY,CACvB,UAAWM,GACX,QAASA,GACT,UAAW,UAAW,CACpB,KAAK,OAAS,CAChB,EACA,QAAS,UAAW,CACd,KAAK,QAAQ,KAAK,SAAS,UAAU,CAC3C,EACA,MAAO,SAASC,EAAGC,EAAG,CACpBD,EAAI,CAACA,EAAGC,EAAI,CAACA,EACT,KAAK,OAAQ,KAAK,SAAS,OAAOD,EAAGC,CAAC,GACrC,KAAK,OAAS,EAAG,KAAK,SAAS,OAAOD,EAAGC,CAAC,EACjD,CACF,ICpBA,SAASC,GAAKC,EAAG,CACf,OAAOA,EAAI,EAAI,GAAK,CACtB,CAMA,SAASC,GAAOC,EAAMC,EAAIC,EAAI,CAC5B,IAAIC,EAAKH,EAAK,IAAMA,EAAK,IACrBI,EAAKH,EAAKD,EAAK,IACfK,GAAML,EAAK,IAAMA,EAAK,MAAQG,GAAMC,EAAK,GAAK,IAC9CE,GAAMJ,EAAKF,EAAK,MAAQI,GAAMD,EAAK,GAAK,IACxCI,GAAKF,EAAKD,EAAKE,EAAKH,IAAOA,EAAKC,GACpC,OAAQP,GAAKQ,CAAE,EAAIR,GAAKS,CAAE,GAAK,KAAK,IAAI,KAAK,IAAID,CAAE,EAAG,KAAK,IAAIC,CAAE,EAAG,GAAM,KAAK,IAAIC,CAAC,CAAC,GAAK,CAC5F,CAGA,SAASC,GAAOR,EAAM,EAAG,CACvB,IAAIS,EAAIT,EAAK,IAAMA,EAAK,IACxB,OAAOS,GAAK,GAAKT,EAAK,IAAMA,EAAK,KAAOS,EAAI,GAAK,EAAI,CACvD,CAKA,SAASC,GAAMV,EAAMW,EAAIC,EAAI,CAC3B,IAAIC,EAAKb,EAAK,IACVc,EAAKd,EAAK,IACVe,EAAKf,EAAK,IACVgB,EAAKhB,EAAK,IACViB,GAAMF,EAAKF,GAAM,EACrBb,EAAK,SAAS,cAAca,EAAKI,EAAIH,EAAKG,EAAKN,EAAII,EAAKE,EAAID,EAAKC,EAAKL,EAAIG,EAAIC,CAAE,CAClF,CAEA,SAASE,GAAUC,EAAS,CAC1B,KAAK,SAAWA,CAClB,CAyCA,SAASC,GAAUD,EAAS,CAC1B,KAAK,SAAW,IAAIE,GAAeF,CAAO,CAC5C,CAMA,SAASE,GAAeF,EAAS,CAC/B,KAAK,SAAWA,CAClB,CASO,SAASG,GAAUH,EAAS,CACjC,OAAO,IAAID,GAAUC,CAAO,CAC9B,CAEO,SAASI,GAAUJ,EAAS,CACjC,OAAO,IAAIC,GAAUD,CAAO,CAC9B,CAvGA,IAAAK,GAAAC,GAAA,KAuCAP,GAAU,UAAY,CACpB,UAAW,UAAW,CACpB,KAAK,MAAQ,CACf,EACA,QAAS,UAAW,CAClB,KAAK,MAAQ,GACf,EACA,UAAW,UAAW,CACpB,KAAK,IAAM,KAAK,IAChB,KAAK,IAAM,KAAK,IAChB,KAAK,IAAM,IACX,KAAK,OAAS,CAChB,EACA,QAAS,UAAW,CAClB,OAAQ,KAAK,OAAQ,CACnB,IAAK,GAAG,KAAK,SAAS,OAAO,KAAK,IAAK,KAAK,GAAG,EAAG,MAClD,IAAK,GAAGR,GAAM,KAAM,KAAK,IAAKF,GAAO,KAAM,KAAK,GAAG,CAAC,EAAG,KACzD,EACI,KAAK,OAAU,KAAK,QAAU,GAAK,KAAK,SAAW,IAAI,KAAK,SAAS,UAAU,EACnF,KAAK,MAAQ,EAAI,KAAK,KACxB,EACA,MAAO,SAASV,EAAG4B,EAAG,CACpB,IAAId,EAAK,IAGT,GADAd,EAAI,CAACA,EAAG4B,EAAI,CAACA,EACT,EAAA5B,IAAM,KAAK,KAAO4B,IAAM,KAAK,KACjC,QAAQ,KAAK,OAAQ,CACnB,IAAK,GAAG,KAAK,OAAS,EAAG,KAAK,MAAQ,KAAK,SAAS,OAAO5B,EAAG4B,CAAC,EAAI,KAAK,SAAS,OAAO5B,EAAG4B,CAAC,EAAG,MAC/F,IAAK,GAAG,KAAK,OAAS,EAAG,MACzB,IAAK,GAAG,KAAK,OAAS,EAAGhB,GAAM,KAAMF,GAAO,KAAMI,EAAKb,GAAO,KAAMD,EAAG4B,CAAC,CAAC,EAAGd,CAAE,EAAG,MACjF,QAASF,GAAM,KAAM,KAAK,IAAKE,EAAKb,GAAO,KAAMD,EAAG4B,CAAC,CAAC,EAAG,KAC3D,CAEA,KAAK,IAAM,KAAK,IAAK,KAAK,IAAM5B,EAChC,KAAK,IAAM,KAAK,IAAK,KAAK,IAAM4B,EAChC,KAAK,IAAMd,EACb,CACF,GAMCQ,GAAU,UAAY,OAAO,OAAOF,GAAU,SAAS,GAAG,MAAQ,SAASpB,EAAG4B,EAAG,CAChFR,GAAU,UAAU,MAAM,KAAK,KAAMQ,EAAG5B,CAAC,CAC3C,EAMAuB,GAAe,UAAY,CACzB,OAAQ,SAASvB,EAAG4B,EAAG,CAAE,KAAK,SAAS,OAAOA,EAAG5B,CAAC,CAAG,EACrD,UAAW,UAAW,CAAE,KAAK,SAAS,UAAU,CAAG,EACnD,OAAQ,SAASA,EAAG4B,EAAG,CAAE,KAAK,SAAS,OAAOA,EAAG5B,CAAC,CAAG,EACrD,cAAe,SAASiB,EAAIC,EAAIf,EAAIC,EAAIJ,EAAG4B,EAAG,CAAE,KAAK,SAAS,cAAcV,EAAID,EAAIb,EAAID,EAAIyB,EAAG5B,CAAC,CAAG,CACrG,IC/FA,SAAS6B,GAAQC,EAAS,CACxB,KAAK,SAAWA,CAClB,CA0CA,SAASC,GAAcC,EAAG,CACxB,IAAIC,EACAC,EAAIF,EAAE,OAAS,EACfG,EACAC,EAAI,IAAI,MAAMF,CAAC,EACfG,EAAI,IAAI,MAAMH,CAAC,EACfI,EAAI,IAAI,MAAMJ,CAAC,EAEnB,IADAE,EAAE,CAAC,EAAI,EAAGC,EAAE,CAAC,EAAI,EAAGC,EAAE,CAAC,EAAIN,EAAE,CAAC,EAAI,EAAIA,EAAE,CAAC,EACpCC,EAAI,EAAGA,EAAIC,EAAI,EAAG,EAAED,EAAGG,EAAEH,CAAC,EAAI,EAAGI,EAAEJ,CAAC,EAAI,EAAGK,EAAEL,CAAC,EAAI,EAAID,EAAEC,CAAC,EAAI,EAAID,EAAEC,EAAI,CAAC,EAE7E,IADAG,EAAEF,EAAI,CAAC,EAAI,EAAGG,EAAEH,EAAI,CAAC,EAAI,EAAGI,EAAEJ,EAAI,CAAC,EAAI,EAAIF,EAAEE,EAAI,CAAC,EAAIF,EAAEE,CAAC,EACpDD,EAAI,EAAGA,EAAIC,EAAG,EAAED,EAAGE,EAAIC,EAAEH,CAAC,EAAII,EAAEJ,EAAI,CAAC,EAAGI,EAAEJ,CAAC,GAAKE,EAAGG,EAAEL,CAAC,GAAKE,EAAIG,EAAEL,EAAI,CAAC,EAE3E,IADAG,EAAEF,EAAI,CAAC,EAAII,EAAEJ,EAAI,CAAC,EAAIG,EAAEH,EAAI,CAAC,EACxBD,EAAIC,EAAI,EAAGD,GAAK,EAAG,EAAEA,EAAGG,EAAEH,CAAC,GAAKK,EAAEL,CAAC,EAAIG,EAAEH,EAAI,CAAC,GAAKI,EAAEJ,CAAC,EAE3D,IADAI,EAAEH,EAAI,CAAC,GAAKF,EAAEE,CAAC,EAAIE,EAAEF,EAAI,CAAC,GAAK,EAC1BD,EAAI,EAAGA,EAAIC,EAAI,EAAG,EAAED,EAAGI,EAAEJ,CAAC,EAAI,EAAID,EAAEC,EAAI,CAAC,EAAIG,EAAEH,EAAI,CAAC,EACzD,MAAO,CAACG,EAAGC,CAAC,CACd,CAEe,SAARE,GAAiBT,EAAS,CAC/B,OAAO,IAAID,GAAQC,CAAO,CAC5B,CAhEA,IAAAU,GAAAC,GAAA,KAIAZ,GAAQ,UAAY,CAClB,UAAW,UAAW,CACpB,KAAK,MAAQ,CACf,EACA,QAAS,UAAW,CAClB,KAAK,MAAQ,GACf,EACA,UAAW,UAAW,CACpB,KAAK,GAAK,CAAC,EACX,KAAK,GAAK,CAAC,CACb,EACA,QAAS,UAAW,CAClB,IAAIG,EAAI,KAAK,GACTU,EAAI,KAAK,GACTR,EAAIF,EAAE,OAEV,GAAIE,EAEF,GADA,KAAK,MAAQ,KAAK,SAAS,OAAOF,EAAE,CAAC,EAAGU,EAAE,CAAC,CAAC,EAAI,KAAK,SAAS,OAAOV,EAAE,CAAC,EAAGU,EAAE,CAAC,CAAC,EAC3ER,IAAM,EACR,KAAK,SAAS,OAAOF,EAAE,CAAC,EAAGU,EAAE,CAAC,CAAC,MAI/B,SAFIC,EAAKZ,GAAcC,CAAC,EACpBY,EAAKb,GAAcW,CAAC,EACfG,EAAK,EAAGC,EAAK,EAAGA,EAAKZ,EAAG,EAAEW,EAAI,EAAEC,EACvC,KAAK,SAAS,cAAcH,EAAG,CAAC,EAAEE,CAAE,EAAGD,EAAG,CAAC,EAAEC,CAAE,EAAGF,EAAG,CAAC,EAAEE,CAAE,EAAGD,EAAG,CAAC,EAAEC,CAAE,EAAGb,EAAEc,CAAE,EAAGJ,EAAEI,CAAE,CAAC,GAKtF,KAAK,OAAU,KAAK,QAAU,GAAKZ,IAAM,IAAI,KAAK,SAAS,UAAU,EACzE,KAAK,MAAQ,EAAI,KAAK,MACtB,KAAK,GAAK,KAAK,GAAK,IACtB,EACA,MAAO,SAASF,EAAGU,EAAG,CACpB,KAAK,GAAG,KAAK,CAACV,CAAC,EACf,KAAK,GAAG,KAAK,CAACU,CAAC,CACjB,CACF,ICzCA,SAASK,GAAKC,EAAS,EAAG,CACxB,KAAK,SAAWA,EAChB,KAAK,GAAK,CACZ,CAuCe,SAARC,GAAiBD,EAAS,CAC/B,OAAO,IAAID,GAAKC,EAAS,EAAG,CAC9B,CAEO,SAASE,GAAWF,EAAS,CAClC,OAAO,IAAID,GAAKC,EAAS,CAAC,CAC5B,CAEO,SAASG,GAAUH,EAAS,CACjC,OAAO,IAAID,GAAKC,EAAS,CAAC,CAC5B,CApDA,IAAAI,GAAAC,GAAA,KAKAN,GAAK,UAAY,CACf,UAAW,UAAW,CACpB,KAAK,MAAQ,CACf,EACA,QAAS,UAAW,CAClB,KAAK,MAAQ,GACf,EACA,UAAW,UAAW,CACpB,KAAK,GAAK,KAAK,GAAK,IACpB,KAAK,OAAS,CAChB,EACA,QAAS,UAAW,CACd,EAAI,KAAK,IAAM,KAAK,GAAK,GAAK,KAAK,SAAW,GAAG,KAAK,SAAS,OAAO,KAAK,GAAI,KAAK,EAAE,GACtF,KAAK,OAAU,KAAK,QAAU,GAAK,KAAK,SAAW,IAAI,KAAK,SAAS,UAAU,EAC/E,KAAK,OAAS,IAAG,KAAK,GAAK,EAAI,KAAK,GAAI,KAAK,MAAQ,EAAI,KAAK,MACpE,EACA,MAAO,SAASO,EAAGC,EAAG,CAEpB,OADAD,EAAI,CAACA,EAAGC,EAAI,CAACA,EACL,KAAK,OAAQ,CACnB,IAAK,GAAG,KAAK,OAAS,EAAG,KAAK,MAAQ,KAAK,SAAS,OAAOD,EAAGC,CAAC,EAAI,KAAK,SAAS,OAAOD,EAAGC,CAAC,EAAG,MAC/F,IAAK,GAAG,KAAK,OAAS,EACtB,QAAS,CACP,GAAI,KAAK,IAAM,EACb,KAAK,SAAS,OAAO,KAAK,GAAIA,CAAC,EAC/B,KAAK,SAAS,OAAOD,EAAGC,CAAC,MACpB,CACL,IAAIC,EAAK,KAAK,IAAM,EAAI,KAAK,IAAMF,EAAI,KAAK,GAC5C,KAAK,SAAS,OAAOE,EAAI,KAAK,EAAE,EAChC,KAAK,SAAS,OAAOA,EAAID,CAAC,CAC5B,CACA,KACF,CACF,CACA,KAAK,GAAKD,EAAG,KAAK,GAAKC,CACzB,CACF,ICxCe,SAARE,GAAiBC,EAAQC,EAAO,CACrC,IAAOC,EAAIF,EAAO,QAAU,EAC5B,QAASG,EAAI,EAAGC,EAAGC,EAAIC,EAAKN,EAAOC,EAAM,CAAC,CAAC,EAAGC,EAAGK,EAAID,EAAG,OAAQH,EAAID,EAAG,EAAEC,EAEvE,IADAE,EAAKC,EAAIA,EAAKN,EAAOC,EAAME,CAAC,CAAC,EACxBC,EAAI,EAAGA,EAAIG,EAAG,EAAEH,EACnBE,EAAGF,CAAC,EAAE,CAAC,GAAKE,EAAGF,CAAC,EAAE,CAAC,EAAI,MAAMC,EAAGD,CAAC,EAAE,CAAC,CAAC,EAAIC,EAAGD,CAAC,EAAE,CAAC,EAAIC,EAAGD,CAAC,EAAE,CAAC,CAGjE,CARA,IAAAI,GAAAC,GAAA,QCAe,SAARC,GAAiBC,EAAQ,CAE9B,QADIC,EAAID,EAAO,OAAQE,EAAI,IAAI,MAAMD,CAAC,EAC/B,EAAEA,GAAK,GAAGC,EAAED,CAAC,EAAIA,EACxB,OAAOC,CACT,CAJA,IAAAC,GAAAC,GAAA,QCKA,SAASC,IAAWC,EAAGC,EAAK,CAC1B,OAAOD,EAAEC,CAAG,CACd,CAEA,SAASC,IAAYD,EAAK,CACxB,IAAME,EAAS,CAAC,EAChB,OAAAA,EAAO,IAAMF,EACNE,CACT,CAEe,SAARC,IAAmB,CACxB,IAAIC,EAAOC,GAAS,CAAC,CAAC,EAClBC,EAAQC,GACRC,EAASD,GACTE,EAAQX,IAEZ,SAASY,EAAMC,EAAM,CACnB,IAAIC,EAAK,MAAM,KAAKR,EAAK,MAAM,KAAM,SAAS,EAAGH,GAAW,EACxDY,EAAGC,EAAIF,EAAG,OAAQG,EAAI,GACtBC,EAEJ,QAAWjB,KAAKY,EACd,IAAKE,EAAI,EAAG,EAAEE,EAAGF,EAAIC,EAAG,EAAED,GACvBD,EAAGC,CAAC,EAAEE,CAAC,EAAI,CAAC,EAAG,CAACN,EAAMV,EAAGa,EAAGC,CAAC,EAAE,IAAKE,EAAGJ,CAAI,CAAC,GAAG,KAAOZ,EAI3D,IAAKc,EAAI,EAAGG,EAAKC,GAAMX,EAAMM,CAAE,CAAC,EAAGC,EAAIC,EAAG,EAAED,EAC1CD,EAAGI,EAAGH,CAAC,CAAC,EAAE,MAAQA,EAGpB,OAAAL,EAAOI,EAAII,CAAE,EACNJ,CACT,CAEA,OAAAF,EAAM,KAAO,SAASQ,EAAG,CACvB,OAAO,UAAU,QAAUd,EAAO,OAAOc,GAAM,WAAaA,EAAIb,GAAS,MAAM,KAAKa,CAAC,CAAC,EAAGR,GAASN,CACpG,EAEAM,EAAM,MAAQ,SAASQ,EAAG,CACxB,OAAO,UAAU,QAAUT,EAAQ,OAAOS,GAAM,WAAaA,EAAIb,GAAS,CAACa,CAAC,EAAGR,GAASD,CAC1F,EAEAC,EAAM,MAAQ,SAASQ,EAAG,CACxB,OAAO,UAAU,QAAUZ,EAAQY,GAAK,KAAOX,GAAY,OAAOW,GAAM,WAAaA,EAAIb,GAAS,MAAM,KAAKa,CAAC,CAAC,EAAGR,GAASJ,CAC7H,EAEAI,EAAM,OAAS,SAASQ,EAAG,CACzB,OAAO,UAAU,QAAUV,EAASU,GAAYX,GAAgBG,GAASF,CAC3E,EAEOE,CACT,CAzDA,IAAAS,GAAAC,GAAA,KAAAC,KACAC,KACAC,KACAA,OCDe,SAARC,GAAiBC,EAAQC,EAAO,CACrC,IAAO,EAAID,EAAO,QAAU,EAC5B,SAASE,EAAG,EAAGC,EAAI,EAAGC,EAAIJ,EAAO,CAAC,EAAE,OAAQK,EAAGF,EAAIC,EAAG,EAAED,EAAG,CACzD,IAAKE,EAAIH,EAAI,EAAGA,EAAI,EAAG,EAAEA,EAAGG,GAAKL,EAAOE,CAAC,EAAEC,CAAC,EAAE,CAAC,GAAK,EACpD,GAAIE,EAAG,IAAKH,EAAI,EAAGA,EAAI,EAAG,EAAEA,EAAGF,EAAOE,CAAC,EAAEC,CAAC,EAAE,CAAC,GAAKE,CACpD,CACAC,GAAKN,EAAQC,CAAK,EACpB,CATA,IAAAM,GAAAC,GAAA,KAAAC,OCAe,SAARC,GAAiBC,EAAQC,EAAO,CACrC,IAAOC,EAAIF,EAAO,QAAU,EAC5B,QAASG,EAAGC,EAAI,EAAGC,EAAGC,EAAIC,EAAIC,EAAIN,EAAGO,EAAIT,EAAOC,EAAM,CAAC,CAAC,EAAE,OAAQG,EAAIK,EAAG,EAAEL,EACzE,IAAKG,EAAKC,EAAK,EAAGL,EAAI,EAAGA,EAAID,EAAG,EAAEC,GAC3BG,GAAMD,EAAIL,EAAOC,EAAME,CAAC,CAAC,EAAEC,CAAC,GAAG,CAAC,EAAIC,EAAE,CAAC,GAAK,GAC/CA,EAAE,CAAC,EAAIE,EAAIF,EAAE,CAAC,EAAIE,GAAMD,GACfA,EAAK,GACdD,EAAE,CAAC,EAAIG,EAAIH,EAAE,CAAC,EAAIG,GAAMF,IAExBD,EAAE,CAAC,EAAI,EAAGA,EAAE,CAAC,EAAIC,EAIzB,CAbA,IAAAI,GAAAC,GAAA,QCEe,SAARC,GAAiBC,EAAQC,EAAO,CACrC,IAAOC,EAAIF,EAAO,QAAU,EAC5B,SAASG,EAAI,EAAGC,EAAKJ,EAAOC,EAAM,CAAC,CAAC,EAAGC,EAAGG,EAAID,EAAG,OAAQD,EAAIE,EAAG,EAAEF,EAAG,CACnE,QAASG,EAAI,EAAGC,EAAI,EAAGD,EAAIJ,EAAG,EAAEI,EAAGC,GAAKP,EAAOM,CAAC,EAAEH,CAAC,EAAE,CAAC,GAAK,EAC3DC,EAAGD,CAAC,EAAE,CAAC,GAAKC,EAAGD,CAAC,EAAE,CAAC,EAAI,CAACI,EAAI,CAC9B,CACAC,GAAKR,EAAQC,CAAK,EACpB,CATA,IAAAQ,GAAAC,GAAA,KAAAC,OCEe,SAARC,GAAiBC,EAAQC,EAAO,CACrC,GAAI,KAAGC,EAAIF,EAAO,QAAU,IAAM,GAAGG,GAAKC,EAAKJ,EAAOC,EAAM,CAAC,CAAC,GAAG,QAAU,IAC3E,SAASI,EAAI,EAAGC,EAAI,EAAGF,EAAID,EAAGD,EAAGI,EAAIH,EAAG,EAAEG,EAAG,CAC3C,QAASC,EAAI,EAAGC,EAAK,EAAGC,EAAK,EAAGF,EAAIL,EAAG,EAAEK,EAAG,CAK1C,QAJIG,EAAKV,EAAOC,EAAMM,CAAC,CAAC,EACpBI,EAAOD,EAAGJ,CAAC,EAAE,CAAC,GAAK,EACnBM,EAAOF,EAAGJ,EAAI,CAAC,EAAE,CAAC,GAAK,EACvBO,GAAMF,EAAOC,GAAQ,EAChBE,EAAI,EAAGA,EAAIP,EAAG,EAAEO,EAAG,CAC1B,IAAIC,EAAKf,EAAOC,EAAMa,CAAC,CAAC,EACpBE,EAAOD,EAAGT,CAAC,EAAE,CAAC,GAAK,EACnBW,EAAOF,EAAGT,EAAI,CAAC,EAAE,CAAC,GAAK,EAC3BO,GAAMG,EAAOC,CACf,CACAT,GAAMG,EAAMF,GAAMI,EAAKF,CACzB,CACAP,EAAGE,EAAI,CAAC,EAAE,CAAC,GAAKF,EAAGE,EAAI,CAAC,EAAE,CAAC,EAAID,EAC3BG,IAAIH,GAAKI,EAAKD,EACpB,CACAJ,EAAGE,EAAI,CAAC,EAAE,CAAC,GAAKF,EAAGE,EAAI,CAAC,EAAE,CAAC,EAAID,EAC/Ba,GAAKlB,EAAQC,CAAK,EACpB,CAvBA,IAAAkB,GAAAC,GAAA,KAAAC,OCEe,SAARC,GAAiBC,EAAQ,CAC9B,IAAIC,EAAQD,EAAO,IAAIE,GAAI,EAC3B,OAAOC,GAAKH,CAAM,EAAE,KAAK,SAASI,EAAGC,EAAG,CAAE,OAAOJ,EAAMG,CAAC,EAAIH,EAAMI,CAAC,CAAG,CAAC,CACzE,CAEA,SAASH,IAAKF,EAAQ,CAEpB,QADIM,EAAI,GAAIC,EAAI,EAAG,EAAIP,EAAO,OAAQQ,EAAIC,EAAK,KACxC,EAAEH,EAAI,IAAQE,EAAK,CAACR,EAAOM,CAAC,EAAE,CAAC,GAAKG,IAAIA,EAAKD,EAAID,EAAID,GAC5D,OAAOC,CACT,CAXA,IAAAG,GAAAC,GAAA,KAAAC,OCEe,SAARC,GAAiBC,EAAQ,CAC9B,IAAIC,EAAOD,EAAO,IAAIE,EAAG,EACzB,OAAOC,GAAKH,CAAM,EAAE,KAAK,SAASI,EAAGC,EAAG,CAAE,OAAOJ,EAAKG,CAAC,EAAIH,EAAKI,CAAC,CAAG,CAAC,CACvE,CAEO,SAASH,GAAIF,EAAQ,CAE1B,QADIM,EAAI,EAAGC,EAAI,GAAI,EAAIP,EAAO,OAAQQ,EAC/B,EAAED,EAAI,IAAOC,EAAI,CAACR,EAAOO,CAAC,EAAE,CAAC,KAAGD,GAAKE,GAC5C,OAAOF,CACT,CAXA,IAAAG,GAAAC,GAAA,KAAAC,OCEe,SAARC,GAAiBC,EAAQ,CAC9B,OAAOC,GAAUD,CAAM,EAAE,QAAQ,CACnC,CAJA,IAAAE,GAAAC,GAAA,KAAAC,OCGe,SAARC,GAAiBC,EAAQ,CAC9B,IAAIC,EAAID,EAAO,OACXE,EACAC,EACAC,EAAOJ,EAAO,IAAIK,EAAG,EACrBC,EAAQC,GAAWP,CAAM,EACzBQ,EAAM,EACNC,EAAS,EACTC,EAAO,CAAC,EACRC,EAAU,CAAC,EAEf,IAAKT,EAAI,EAAGA,EAAID,EAAG,EAAEC,EACnBC,EAAIG,EAAMJ,CAAC,EACPM,EAAMC,GACRD,GAAOJ,EAAKD,CAAC,EACbO,EAAK,KAAKP,CAAC,IAEXM,GAAUL,EAAKD,CAAC,EAChBQ,EAAQ,KAAKR,CAAC,GAIlB,OAAOQ,EAAQ,QAAQ,EAAE,OAAOD,CAAI,CACtC,CA1BA,IAAAE,GAAAC,GAAA,KAAAC,KACAC,OCCe,SAARC,GAAiBC,EAAQ,CAC9B,OAAOC,GAAKD,CAAM,EAAE,QAAQ,CAC9B,CAJA,IAAAE,GAAAC,GAAA,KAAAC,OCAA,IAAAC,GAAA,GAAAC,GAAAD,GAAA,SAAAE,GAAA,SAAAC,GAAA,eAAAC,GAAA,eAAAC,GAAA,qBAAAC,GAAA,mBAAAC,GAAA,eAAAC,GAAA,eAAAC,GAAA,gBAAAC,GAAA,kBAAAC,GAAA,wBAAAC,GAAA,sBAAAC,GAAA,oBAAAC,GAAA,0BAAAC,GAAA,wBAAAC,GAAA,gBAAAC,GAAA,sBAAAC,GAAA,mBAAAC,GAAA,mBAAAC,GAAA,iBAAAC,GAAA,cAAAC,GAAA,mBAAAC,GAAA,oBAAAC,GAAA,SAAAC,GAAA,eAAAC,GAAA,SAAAC,GAAA,mBAAAC,GAAA,eAAAC,GAAA,iBAAAC,GAAA,QAAAC,GAAA,gBAAAC,GAAA,eAAA5B,GAAA,eAAAsB,GAAA,UAAAO,GAAA,yBAAAC,GAAA,sBAAAC,GAAA,oBAAAC,GAAA,0BAAAC,GAAA,sBAAAC,GAAA,yBAAAC,GAAA,wBAAAC,GAAA,yBAAAC,GAAA,wBAAAC,GAAA,mBAAAN,GAAA,sBAAAO,GAAA,WAAAC,GAAA,mBAAAC,GAAA,iBAAAC,GAAA,gBAAAC,GAAA,kBAAAC,GAAA,mBAAAC,GAAA,eAAAC,GAAA,iBAAAC,GAAA,kBAAAC,GAAA,eAAAC,GAAA,gBAAAC,GAAA,mBAAAC,GAAA,oBAAAC,GAAA,cAAAC,GAAA,YAAAH,GAAA,YAAAI,GAAA,gBAAAA,GAAA,kBAAAC,KAAA,IAAAC,GAAAC,GAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAN,KACAO,OCpDe,SAARC,GAAiBC,EAAG,CACzB,OAAO,KAAK,IAAIA,EAAI,KAAK,MAAMA,CAAC,CAAC,GAAK,KAChCA,EAAE,eAAe,IAAI,EAAE,QAAQ,KAAM,EAAE,EACvCA,EAAE,SAAS,EAAE,CACrB,CAKO,SAASC,GAAmBD,EAAGE,EAAG,CACvC,IAAKC,GAAKH,EAAIE,EAAIF,EAAE,cAAcE,EAAI,CAAC,EAAIF,EAAE,cAAc,GAAG,QAAQ,GAAG,GAAK,EAAG,OAAO,KACxF,IAAIG,EAAGC,EAAcJ,EAAE,MAAM,EAAGG,CAAC,EAIjC,MAAO,CACLC,EAAY,OAAS,EAAIA,EAAY,CAAC,EAAIA,EAAY,MAAM,CAAC,EAAIA,EACjE,CAACJ,EAAE,MAAMG,EAAI,CAAC,CAChB,CACF,CAnBA,IAAAE,GAAAC,GAAA,QCEe,SAARC,GAAiBC,EAAG,CACzB,OAAOA,EAAIC,GAAmB,KAAK,IAAID,CAAC,CAAC,EAAGA,EAAIA,EAAE,CAAC,EAAI,GACzD,CAJA,IAAAE,GAAAC,GAAA,KAAAC,OCAe,SAARC,GAAiBC,EAAUC,EAAW,CAC3C,OAAO,SAASC,EAAOC,EAAO,CAO5B,QANI,EAAID,EAAM,OACVE,EAAI,CAAC,EACLC,EAAI,EACJC,EAAIN,EAAS,CAAC,EACdO,EAAS,EAEN,EAAI,GAAKD,EAAI,IACdC,EAASD,EAAI,EAAIH,IAAOG,EAAI,KAAK,IAAI,EAAGH,EAAQI,CAAM,GAC1DH,EAAE,KAAKF,EAAM,UAAU,GAAKI,EAAG,EAAIA,CAAC,CAAC,EAChC,GAAAC,GAAUD,EAAI,GAAKH,KACxBG,EAAIN,EAASK,GAAKA,EAAI,GAAKL,EAAS,MAAM,EAG5C,OAAOI,EAAE,QAAQ,EAAE,KAAKH,CAAS,CACnC,CACF,CAjBA,IAAAO,GAAAC,GAAA,QCAe,SAARC,GAAiBC,EAAU,CAChC,OAAO,SAASC,EAAO,CACrB,OAAOA,EAAM,QAAQ,SAAU,SAASC,EAAG,CACzC,OAAOF,EAAS,CAACE,CAAC,CACpB,CAAC,CACH,CACF,CANA,IAAAC,GAAAC,GAAA,QCGe,SAARC,GAAiCC,EAAW,CACjD,GAAI,EAAEC,EAAQC,IAAG,KAAKF,CAAS,GAAI,MAAM,IAAI,MAAM,mBAAqBA,CAAS,EACjF,IAAIC,EACJ,OAAO,IAAIE,GAAgB,CACzB,KAAMF,EAAM,CAAC,EACb,MAAOA,EAAM,CAAC,EACd,KAAMA,EAAM,CAAC,EACb,OAAQA,EAAM,CAAC,EACf,KAAMA,EAAM,CAAC,EACb,MAAOA,EAAM,CAAC,EACd,MAAOA,EAAM,CAAC,EACd,UAAWA,EAAM,CAAC,GAAKA,EAAM,CAAC,EAAE,MAAM,CAAC,EACvC,KAAMA,EAAM,CAAC,EACb,KAAMA,EAAM,EAAE,CAChB,CAAC,CACH,CAIO,SAASE,GAAgBH,EAAW,CACzC,KAAK,KAAOA,EAAU,OAAS,OAAY,IAAMA,EAAU,KAAO,GAClE,KAAK,MAAQA,EAAU,QAAU,OAAY,IAAMA,EAAU,MAAQ,GACrE,KAAK,KAAOA,EAAU,OAAS,OAAY,IAAMA,EAAU,KAAO,GAClE,KAAK,OAASA,EAAU,SAAW,OAAY,GAAKA,EAAU,OAAS,GACvE,KAAK,KAAO,CAAC,CAACA,EAAU,KACxB,KAAK,MAAQA,EAAU,QAAU,OAAY,OAAY,CAACA,EAAU,MACpE,KAAK,MAAQ,CAAC,CAACA,EAAU,MACzB,KAAK,UAAYA,EAAU,YAAc,OAAY,OAAY,CAACA,EAAU,UAC5E,KAAK,KAAO,CAAC,CAACA,EAAU,KACxB,KAAK,KAAOA,EAAU,OAAS,OAAY,GAAKA,EAAU,KAAO,EACnE,CAjCA,IACIE,IADJE,GAAAC,GAAA,KACIH,IAAK,2EAmBTH,GAAgB,UAAYI,GAAgB,UAe5CA,GAAgB,UAAU,SAAW,UAAW,CAC9C,OAAO,KAAK,KACN,KAAK,MACL,KAAK,KACL,KAAK,QACJ,KAAK,KAAO,IAAM,KAClB,KAAK,QAAU,OAAY,GAAK,KAAK,IAAI,EAAG,KAAK,MAAQ,CAAC,IAC1D,KAAK,MAAQ,IAAM,KACnB,KAAK,YAAc,OAAY,GAAK,IAAM,KAAK,IAAI,EAAG,KAAK,UAAY,CAAC,IACxE,KAAK,KAAO,IAAM,IACnB,KAAK,IACb,IC7Ce,SAARG,GAAiBC,EAAG,CACzBC,EAAK,QAASC,EAAIF,EAAE,OAAQG,EAAI,EAAGC,EAAK,GAAIC,EAAIF,EAAID,EAAG,EAAEC,EACvD,OAAQH,EAAEG,CAAC,EAAG,CACZ,IAAK,IAAKC,EAAKC,EAAKF,EAAG,MACvB,IAAK,IAASC,IAAO,IAAGA,EAAKD,GAAGE,EAAKF,EAAG,MACxC,QAAS,GAAI,CAAC,CAACH,EAAEG,CAAC,EAAG,MAAMF,EAASG,EAAK,IAAGA,EAAK,GAAG,KACtD,CAEF,OAAOA,EAAK,EAAIJ,EAAE,MAAM,EAAGI,CAAE,EAAIJ,EAAE,MAAMK,EAAK,CAAC,EAAIL,CACrD,CAVA,IAAAM,GAAAC,GAAA,QCIe,SAARC,GAAiBC,EAAGC,EAAG,CAC5B,IAAIC,EAAIC,GAAmBH,EAAGC,CAAC,EAC/B,GAAI,CAACC,EAAG,OAAOF,EAAI,GACnB,IAAII,EAAcF,EAAE,CAAC,EACjBG,EAAWH,EAAE,CAAC,EACdI,EAAID,GAAYE,GAAiB,KAAK,IAAI,GAAI,KAAK,IAAI,EAAG,KAAK,MAAMF,EAAW,CAAC,CAAC,CAAC,EAAI,GAAK,EAC5FG,EAAIJ,EAAY,OACpB,OAAOE,IAAME,EAAIJ,EACXE,EAAIE,EAAIJ,EAAc,IAAI,MAAME,EAAIE,EAAI,CAAC,EAAE,KAAK,GAAG,EACnDF,EAAI,EAAIF,EAAY,MAAM,EAAGE,CAAC,EAAI,IAAMF,EAAY,MAAME,CAAC,EAC3D,KAAO,IAAI,MAAM,EAAIA,CAAC,EAAE,KAAK,GAAG,EAAIH,GAAmBH,EAAG,KAAK,IAAI,EAAGC,EAAIK,EAAI,CAAC,CAAC,EAAE,CAAC,CAC3F,CAfA,IAEWC,GAFXE,GAAAC,GAAA,KAAAC,OCEe,SAARC,GAAiBC,EAAGC,EAAG,CAC5B,IAAIC,EAAIC,GAAmBH,EAAGC,CAAC,EAC/B,GAAI,CAACC,EAAG,OAAOF,EAAI,GACnB,IAAII,EAAcF,EAAE,CAAC,EACjBG,EAAWH,EAAE,CAAC,EAClB,OAAOG,EAAW,EAAI,KAAO,IAAI,MAAM,CAACA,CAAQ,EAAE,KAAK,GAAG,EAAID,EACxDA,EAAY,OAASC,EAAW,EAAID,EAAY,MAAM,EAAGC,EAAW,CAAC,EAAI,IAAMD,EAAY,MAAMC,EAAW,CAAC,EAC7GD,EAAc,IAAI,MAAMC,EAAWD,EAAY,OAAS,CAAC,EAAE,KAAK,GAAG,CAC3E,CAVA,IAAAE,GAAAC,GAAA,KAAAC,OCAA,IAIOC,GAJPC,GAAAC,GAAA,KAAAC,KACAC,KACAC,KAEOL,GAAQ,CACb,IAAK,CAACM,EAAGC,KAAOD,EAAI,KAAK,QAAQC,CAAC,EAClC,EAAMD,GAAM,KAAK,MAAMA,CAAC,EAAE,SAAS,CAAC,EACpC,EAAMA,GAAMA,EAAI,GAChB,EAAKE,GACL,EAAK,CAACF,EAAGC,IAAMD,EAAE,cAAcC,CAAC,EAChC,EAAK,CAACD,EAAGC,IAAMD,EAAE,QAAQC,CAAC,EAC1B,EAAK,CAACD,EAAGC,IAAMD,EAAE,YAAYC,CAAC,EAC9B,EAAMD,GAAM,KAAK,MAAMA,CAAC,EAAE,SAAS,CAAC,EACpC,EAAK,CAACA,EAAGC,IAAME,GAAcH,EAAI,IAAKC,CAAC,EACvC,EAAKE,GACL,EAAKC,GACL,EAAMJ,GAAM,KAAK,MAAMA,CAAC,EAAE,SAAS,EAAE,EAAE,YAAY,EACnD,EAAMA,GAAM,KAAK,MAAMA,CAAC,EAAE,SAAS,EAAE,CACvC,IClBe,SAARK,GAAiBC,EAAG,CACzB,OAAOA,CACT,CAFA,IAAAC,GAAAC,GAAA,QCYe,SAARC,GAAiBC,EAAQ,CAC9B,IAAIC,EAAQD,EAAO,WAAa,QAAaA,EAAO,YAAc,OAAYE,GAAWC,GAAYC,GAAI,KAAKJ,EAAO,SAAU,MAAM,EAAGA,EAAO,UAAY,EAAE,EACzJK,EAAiBL,EAAO,WAAa,OAAY,GAAKA,EAAO,SAAS,CAAC,EAAI,GAC3EM,EAAiBN,EAAO,WAAa,OAAY,GAAKA,EAAO,SAAS,CAAC,EAAI,GAC3EO,EAAUP,EAAO,UAAY,OAAY,IAAMA,EAAO,QAAU,GAChEQ,EAAWR,EAAO,WAAa,OAAYE,GAAWO,GAAeL,GAAI,KAAKJ,EAAO,SAAU,MAAM,CAAC,EACtGU,EAAUV,EAAO,UAAY,OAAY,IAAMA,EAAO,QAAU,GAChEW,EAAQX,EAAO,QAAU,OAAY,SAAMA,EAAO,MAAQ,GAC1DY,EAAMZ,EAAO,MAAQ,OAAY,MAAQA,EAAO,IAAM,GAE1D,SAASa,EAAUC,EAAW,CAC5BA,EAAYC,GAAgBD,CAAS,EAErC,IAAIE,EAAOF,EAAU,KACjBG,EAAQH,EAAU,MAClBI,EAAOJ,EAAU,KACjBK,EAASL,EAAU,OACnBM,EAAON,EAAU,KACjBO,EAAQP,EAAU,MAClBQ,EAAQR,EAAU,MAClBS,EAAYT,EAAU,UACtBU,EAAOV,EAAU,KACjBW,EAAOX,EAAU,KAGjBW,IAAS,KAAKH,EAAQ,GAAMG,EAAO,KAG7BC,GAAYD,CAAI,IAAGF,IAAc,SAAcA,EAAY,IAAKC,EAAO,GAAMC,EAAO,MAG1FL,GAASJ,IAAS,KAAOC,IAAU,OAAMG,EAAO,GAAMJ,EAAO,IAAKC,EAAQ,KAI9E,IAAIU,EAASR,IAAW,IAAMd,EAAiBc,IAAW,KAAO,SAAS,KAAKM,CAAI,EAAI,IAAMA,EAAK,YAAY,EAAI,GAC9GG,EAAST,IAAW,IAAMb,EAAiB,OAAO,KAAKmB,CAAI,EAAIf,EAAU,GAKzEmB,EAAaH,GAAYD,CAAI,EAC7BK,EAAc,aAAa,KAAKL,CAAI,EAMxCF,EAAYA,IAAc,OAAY,EAChC,SAAS,KAAKE,CAAI,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,GAAIF,CAAS,CAAC,EACzD,KAAK,IAAI,EAAG,KAAK,IAAI,GAAIA,CAAS,CAAC,EAEzC,SAASQ,EAAOC,EAAO,CACrB,IAAIC,EAAcN,EACdO,EAAcN,EACdO,EAAGC,EAAGC,EAEV,GAAIZ,IAAS,IACXS,EAAcL,EAAWG,CAAK,EAAIE,EAClCF,EAAQ,OACH,CACLA,EAAQ,CAACA,EAGT,IAAIM,EAAgBN,EAAQ,GAAK,EAAIA,EAAQ,EAiB7C,GAdAA,EAAQ,MAAMA,CAAK,EAAIpB,EAAMiB,EAAW,KAAK,IAAIG,CAAK,EAAGT,CAAS,EAG9DC,IAAMQ,EAAQO,GAAWP,CAAK,GAG9BM,GAAiB,CAACN,GAAU,GAAKd,IAAS,MAAKoB,EAAgB,IAGnEL,GAAeK,EAAiBpB,IAAS,IAAMA,EAAOP,EAASO,IAAS,KAAOA,IAAS,IAAM,GAAKA,GAAQe,EAC3GC,GAAeT,IAAS,IAAMe,GAAS,EAAIC,GAAiB,CAAC,EAAI,IAAMP,GAAeI,GAAiBpB,IAAS,IAAM,IAAM,IAIxHY,GAEF,IADAK,EAAI,GAAIC,EAAIJ,EAAM,OACX,EAAEG,EAAIC,GACX,GAAIC,EAAIL,EAAM,WAAWG,CAAC,EAAG,GAAKE,GAAKA,EAAI,GAAI,CAC7CH,GAAeG,IAAM,GAAK9B,EAAUyB,EAAM,MAAMG,EAAI,CAAC,EAAIH,EAAM,MAAMG,CAAC,GAAKD,EAC3EF,EAAQA,EAAM,MAAM,EAAGG,CAAC,EACxB,KACF,EAGN,CAGIb,GAAS,CAACF,IAAMY,EAAQ/B,EAAM+B,EAAO,GAAQ,GAGjD,IAAIU,GAAST,EAAY,OAASD,EAAM,OAASE,EAAY,OACzDS,EAAUD,GAASrB,EAAQ,IAAI,MAAMA,EAAQqB,GAAS,CAAC,EAAE,KAAK1B,CAAI,EAAI,GAM1E,OAHIM,GAASF,IAAMY,EAAQ/B,EAAM0C,EAAUX,EAAOW,EAAQ,OAAStB,EAAQa,EAAY,OAAS,GAAQ,EAAGS,EAAU,IAG7G1B,EAAO,CACb,IAAK,IAAKe,EAAQC,EAAcD,EAAQE,EAAcS,EAAS,MAC/D,IAAK,IAAKX,EAAQC,EAAcU,EAAUX,EAAQE,EAAa,MAC/D,IAAK,IAAKF,EAAQW,EAAQ,MAAM,EAAGD,GAASC,EAAQ,QAAU,CAAC,EAAIV,EAAcD,EAAQE,EAAcS,EAAQ,MAAMD,EAAM,EAAG,MAC9H,QAASV,EAAQW,EAAUV,EAAcD,EAAQE,EAAa,KAChE,CAEA,OAAO1B,EAASwB,CAAK,CACvB,CAEA,OAAAD,EAAO,SAAW,UAAW,CAC3B,OAAOjB,EAAY,EACrB,EAEOiB,CACT,CAEA,SAASa,EAAa9B,EAAWkB,EAAO,CACtC,IAAIa,EAAIhC,GAAWC,EAAYC,GAAgBD,CAAS,EAAGA,EAAU,KAAO,IAAKA,EAAU,EACvFgC,EAAI,KAAK,IAAI,GAAI,KAAK,IAAI,EAAG,KAAK,MAAMC,GAASf,CAAK,EAAI,CAAC,CAAC,CAAC,EAAI,EACjEgB,EAAI,KAAK,IAAI,GAAI,CAACF,CAAC,EACnBnB,EAASa,GAAS,EAAIM,EAAI,CAAC,EAC/B,OAAO,SAASd,EAAO,CACrB,OAAOa,EAAEG,EAAIhB,CAAK,EAAIL,CACxB,CACF,CAEA,MAAO,CACL,OAAQd,EACR,aAAc+B,CAChB,CACF,CAnJA,IASIxC,GACAoC,GAVJS,GAAAC,GAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAEItD,GAAM,MAAM,UAAU,IACtBoC,GAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,OAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,ICEnE,SAARmB,GAA+BC,EAAY,CAChD,OAAAC,GAASC,GAAaF,CAAU,EAChCG,GAASF,GAAO,OAChBG,GAAeH,GAAO,aACfA,EACT,CAjBA,IAEIA,GACOE,GACAC,GAJXC,GAAAC,GAAA,KAAAC,KAMAR,GAAc,CACZ,UAAW,IACX,SAAU,CAAC,CAAC,EACZ,SAAU,CAAC,IAAK,EAAE,CACpB,CAAC,ICRc,SAARS,GAAiBC,EAAM,CAC5B,OAAO,KAAK,IAAI,EAAG,CAACC,GAAS,KAAK,IAAID,CAAI,CAAC,CAAC,CAC9C,CAJA,IAAAE,GAAAC,GAAA,KAAAC,OCEe,SAARC,GAAiBC,EAAMC,EAAO,CACnC,OAAO,KAAK,IAAI,EAAG,KAAK,IAAI,GAAI,KAAK,IAAI,EAAG,KAAK,MAAMC,GAASD,CAAK,EAAI,CAAC,CAAC,CAAC,EAAI,EAAIC,GAAS,KAAK,IAAIF,CAAI,CAAC,CAAC,CAC9G,CAJA,IAAAG,GAAAC,GAAA,KAAAC,OCEe,SAARC,GAAiBC,EAAMC,EAAK,CACjC,OAAAD,EAAO,KAAK,IAAIA,CAAI,EAAGC,EAAM,KAAK,IAAIA,CAAG,EAAID,EACtC,KAAK,IAAI,EAAGE,GAASD,CAAG,EAAIC,GAASF,CAAI,CAAC,EAAI,CACvD,CALA,IAAAG,GAAAC,GAAA,KAAAC,OCAA,IAAAC,GAAA,GAAAC,GAAAD,GAAA,qBAAAE,GAAA,WAAAC,GAAA,wBAAAC,GAAA,iBAAAC,GAAA,iBAAAC,GAAA,oBAAAC,GAAA,mBAAAC,GAAA,oBAAAC,GAAA,mBAAAC,KAAA,IAAAC,GAAAC,GAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,OCLe,SAARC,GAA2BC,EAAGC,EAAG,CACtC,OAAOD,GAAK,MAAQC,GAAK,KAAO,IAAMD,EAAIC,EAAI,GAAKD,EAAIC,EAAI,EAAID,GAAKC,EAAI,EAAI,GAC9E,CAFA,IAAAC,GAAAC,GAAA,QCAe,SAARC,GAA4BC,EAAGC,EAAG,CACvC,OAAOD,GAAK,MAAQC,GAAK,KAAO,IAC5BA,EAAID,EAAI,GACRC,EAAID,EAAI,EACRC,GAAKD,EAAI,EACT,GACN,CANA,IAAAE,GAAAC,GAAA,QCGe,SAARC,GAA0BC,EAAG,CAClC,IAAIC,EAAUC,EAAUC,EAOpBH,EAAE,SAAW,GACfC,EAAWG,GACXF,EAAW,CAACG,EAAGC,IAAMF,GAAUJ,EAAEK,CAAC,EAAGC,CAAC,EACtCH,EAAQ,CAACE,EAAGC,IAAMN,EAAEK,CAAC,EAAIC,IAEzBL,EAAWD,IAAMI,IAAaJ,IAAMO,GAAaP,EAAIQ,IACrDN,EAAWF,EACXG,EAAQH,GAGV,SAASS,EAAKC,EAAGJ,EAAGK,EAAK,EAAGC,EAAKF,EAAE,OAAQ,CACzC,GAAIC,EAAKC,EAAI,CACX,GAAIX,EAASK,EAAGA,CAAC,IAAM,EAAG,OAAOM,EACjC,EAAG,CACD,IAAMC,EAAOF,EAAKC,IAAQ,EACtBV,EAASQ,EAAEG,CAAG,EAAGP,CAAC,EAAI,EAAGK,EAAKE,EAAM,EACnCD,EAAKC,CACZ,OAASF,EAAKC,EAChB,CACA,OAAOD,CACT,CAEA,SAASG,EAAMJ,EAAGJ,EAAGK,EAAK,EAAGC,EAAKF,EAAE,OAAQ,CAC1C,GAAIC,EAAKC,EAAI,CACX,GAAIX,EAASK,EAAGA,CAAC,IAAM,EAAG,OAAOM,EACjC,EAAG,CACD,IAAMC,EAAOF,EAAKC,IAAQ,EACtBV,EAASQ,EAAEG,CAAG,EAAGP,CAAC,GAAK,EAAGK,EAAKE,EAAM,EACpCD,EAAKC,CACZ,OAASF,EAAKC,EAChB,CACA,OAAOD,CACT,CAEA,SAASI,EAAOL,EAAGJ,EAAGK,EAAK,EAAGC,EAAKF,EAAE,OAAQ,CAC3C,IAAMM,EAAIP,EAAKC,EAAGJ,EAAGK,EAAIC,EAAK,CAAC,EAC/B,OAAOI,EAAIL,GAAMR,EAAMO,EAAEM,EAAI,CAAC,EAAGV,CAAC,EAAI,CAACH,EAAMO,EAAEM,CAAC,EAAGV,CAAC,EAAIU,EAAI,EAAIA,CAClE,CAEA,MAAO,CAAC,KAAAP,EAAM,OAAAM,EAAQ,MAAAD,CAAK,CAC7B,CAEA,SAASN,KAAO,CACd,MAAO,EACT,CAvDA,IAAAS,GAAAC,GAAA,KAAAC,KACAC,OCDe,SAARC,GAAwBC,EAAG,CAChC,OAAOA,IAAM,KAAO,IAAM,CAACA,CAC7B,CAEO,SAAUC,GAAQC,EAAQC,EAAS,CACxC,GAAIA,IAAY,OACd,QAASC,KAASF,EACZE,GAAS,OAASA,EAAQ,CAACA,IAAUA,IACvC,MAAMA,OAGL,CACL,IAAIC,EAAQ,GACZ,QAASD,KAASF,GACXE,EAAQD,EAAQC,EAAO,EAAEC,EAAOH,CAAM,IAAM,OAASE,EAAQ,CAACA,IAAUA,IAC3E,MAAMA,EAGZ,CACF,CAnBA,IAAAE,GAAAC,GAAA,QCAA,IAIMC,GACOC,GACAC,IACAC,IACNC,GARPC,GAAAC,GAAA,KAAAC,KACAC,KACAC,KAEMT,GAAkBU,GAASC,EAAS,EAC7BV,GAAcD,GAAgB,MAC9BE,IAAaF,GAAgB,KAC7BG,IAAeO,GAASE,EAAM,EAAE,OACtCR,GAAQH,KC6Bf,SAASY,GAAW,CAAC,QAAAC,EAAS,KAAAC,CAAI,EAAGC,EAAO,CAC1C,IAAMC,EAAMF,EAAKC,CAAK,EACtB,OAAOF,EAAQ,IAAIG,CAAG,EAAIH,EAAQ,IAAIG,CAAG,EAAID,CAC/C,CAEA,SAASE,IAAW,CAAC,QAAAJ,EAAS,KAAAC,CAAI,EAAGC,EAAO,CAC1C,IAAMC,EAAMF,EAAKC,CAAK,EACtB,OAAIF,EAAQ,IAAIG,CAAG,EAAUH,EAAQ,IAAIG,CAAG,GAC5CH,EAAQ,IAAIG,EAAKD,CAAK,EACfA,EACT,CAEA,SAASG,IAAc,CAAC,QAAAL,EAAS,KAAAC,CAAI,EAAGC,EAAO,CAC7C,IAAMC,EAAMF,EAAKC,CAAK,EACtB,OAAIF,EAAQ,IAAIG,CAAG,IACjBD,EAAQF,EAAQ,IAAIG,CAAG,EACvBH,EAAQ,OAAOG,CAAG,GAEbD,CACT,CAEA,SAASI,IAAMJ,EAAO,CACpB,OAAOA,IAAU,MAAQ,OAAOA,GAAU,SAAWA,EAAM,QAAQ,EAAIA,CACzE,CA5DA,IAAaK,GAAbC,GAAAC,GAAA,KAAaF,GAAN,cAAwB,GAAI,CACjC,YAAYG,EAASP,EAAMG,IAAO,CAGhC,GAFA,MAAM,EACN,OAAO,iBAAiB,KAAM,CAAC,QAAS,CAAC,MAAO,IAAI,GAAK,EAAG,KAAM,CAAC,MAAOH,CAAG,CAAC,CAAC,EAC3EO,GAAW,KAAM,OAAW,CAACP,EAAKD,CAAK,IAAKQ,EAAS,KAAK,IAAIP,EAAKD,CAAK,CAC9E,CACA,IAAIC,EAAK,CACP,OAAO,MAAM,IAAIJ,GAAW,KAAMI,CAAG,CAAC,CACxC,CACA,IAAIA,EAAK,CACP,OAAO,MAAM,IAAIJ,GAAW,KAAMI,CAAG,CAAC,CACxC,CACA,IAAIA,EAAKD,EAAO,CACd,OAAO,MAAM,IAAIE,IAAW,KAAMD,CAAG,EAAGD,CAAK,CAC/C,CACA,OAAOC,EAAK,CACV,OAAO,MAAM,OAAOE,IAAc,KAAMF,CAAG,CAAC,CAC9C,CACF,ICQO,SAASQ,GAAeC,EAAUC,GAAW,CAClD,GAAID,IAAYC,GAAW,OAAOC,GAClC,GAAI,OAAOF,GAAY,WAAY,MAAM,IAAI,UAAU,2BAA2B,EAClF,MAAO,CAACG,EAAGC,IAAM,CACf,IAAMC,EAAIL,EAAQG,EAAGC,CAAC,EACtB,OAAIC,GAAKA,IAAM,EAAUA,GACjBL,EAAQI,EAAGA,CAAC,IAAM,IAAMJ,EAAQG,EAAGA,CAAC,IAAM,EACpD,CACF,CAEO,SAASD,GAAiBC,EAAGC,EAAG,CACrC,OAAQD,GAAK,MAAQ,EAAEA,GAAKA,KAAOC,GAAK,MAAQ,EAAEA,GAAKA,MAAQD,EAAIC,EAAI,GAAKD,EAAIC,EAAI,EAAI,EAC1F,CAtCA,IAAAE,GAAAC,GAAA,KAAAC,OCIA,SAASC,GAASC,EAAOC,EAAMC,EAAO,CACpC,IAAMC,GAAQF,EAAOD,GAAS,KAAK,IAAI,EAAGE,CAAK,EAC3CE,EAAQ,KAAK,MAAM,KAAK,MAAMD,CAAI,CAAC,EACnCE,EAAQF,EAAO,KAAK,IAAI,GAAIC,CAAK,EACjCE,EAASD,GAASE,IAAM,GAAKF,GAASG,IAAK,EAAIH,GAASI,IAAK,EAAI,EACjEC,EAAIC,EAAIC,EAeZ,OAdIR,EAAQ,GACVQ,EAAM,KAAK,IAAI,GAAI,CAACR,CAAK,EAAIE,EAC7BI,EAAK,KAAK,MAAMV,EAAQY,CAAG,EAC3BD,EAAK,KAAK,MAAMV,EAAOW,CAAG,EACtBF,EAAKE,EAAMZ,GAAO,EAAEU,EACpBC,EAAKC,EAAMX,GAAM,EAAEU,EACvBC,EAAM,CAACA,IAEPA,EAAM,KAAK,IAAI,GAAIR,CAAK,EAAIE,EAC5BI,EAAK,KAAK,MAAMV,EAAQY,CAAG,EAC3BD,EAAK,KAAK,MAAMV,EAAOW,CAAG,EACtBF,EAAKE,EAAMZ,GAAO,EAAEU,EACpBC,EAAKC,EAAMX,GAAM,EAAEU,GAErBA,EAAKD,GAAM,IAAOR,GAASA,EAAQ,EAAUH,GAASC,EAAOC,EAAMC,EAAQ,CAAC,EACzE,CAACQ,EAAIC,EAAIC,CAAG,CACrB,CAEe,SAARC,GAAuBb,EAAOC,EAAMC,EAAO,CAEhD,GADAD,EAAO,CAACA,EAAMD,EAAQ,CAACA,EAAOE,EAAQ,CAACA,EACnC,EAAEA,EAAQ,GAAI,MAAO,CAAC,EAC1B,GAAIF,IAAUC,EAAM,MAAO,CAACD,CAAK,EACjC,IAAMc,EAAUb,EAAOD,EAAO,CAACU,EAAIC,EAAIC,CAAG,EAAIE,EAAUf,GAASE,EAAMD,EAAOE,CAAK,EAAIH,GAASC,EAAOC,EAAMC,CAAK,EAClH,GAAI,EAAES,GAAMD,GAAK,MAAO,CAAC,EACzB,IAAMK,EAAIJ,EAAKD,EAAK,EAAGG,EAAQ,IAAI,MAAME,CAAC,EAC1C,GAAID,EACF,GAAIF,EAAM,EAAG,QAASI,EAAI,EAAGA,EAAID,EAAG,EAAEC,EAAGH,EAAMG,CAAC,GAAKL,EAAKK,GAAK,CAACJ,MAC3D,SAASI,EAAI,EAAGA,EAAID,EAAG,EAAEC,EAAGH,EAAMG,CAAC,GAAKL,EAAKK,GAAKJ,UAEnDA,EAAM,EAAG,QAASI,EAAI,EAAGA,EAAID,EAAG,EAAEC,EAAGH,EAAMG,CAAC,GAAKN,EAAKM,GAAK,CAACJ,MAC3D,SAASI,EAAI,EAAGA,EAAID,EAAG,EAAEC,EAAGH,EAAMG,CAAC,GAAKN,EAAKM,GAAKJ,EAEzD,OAAOC,CACT,CAEO,SAASI,GAAcjB,EAAOC,EAAMC,EAAO,CAChD,OAAAD,EAAO,CAACA,EAAMD,EAAQ,CAACA,EAAOE,EAAQ,CAACA,EAChCH,GAASC,EAAOC,EAAMC,CAAK,EAAE,CAAC,CACvC,CAEO,SAASgB,GAASlB,EAAOC,EAAMC,EAAO,CAC3CD,EAAO,CAACA,EAAMD,EAAQ,CAACA,EAAOE,EAAQ,CAACA,EACvC,IAAMY,EAAUb,EAAOD,EAAOY,EAAME,EAAUG,GAAchB,EAAMD,EAAOE,CAAK,EAAIe,GAAcjB,EAAOC,EAAMC,CAAK,EAClH,OAAQY,EAAU,GAAK,IAAMF,EAAM,EAAI,EAAI,CAACA,EAAMA,EACpD,CAtDA,IAAML,IACFC,IACAC,IAFJU,GAAAC,GAAA,KAAMb,IAAM,KAAK,KAAK,EAAE,EACpBC,IAAK,KAAK,KAAK,EAAE,EACjBC,IAAK,KAAK,KAAK,CAAC,ICFL,SAARY,GAAqBC,EAAQC,EAAS,CAC3C,IAAIF,EACJ,GAAIE,IAAY,OACd,QAAWC,KAASF,EACdE,GAAS,OACLH,EAAMG,GAAUH,IAAQ,QAAaG,GAASA,KACpDH,EAAMG,OAGL,CACL,IAAIC,EAAQ,GACZ,QAASD,KAASF,GACXE,EAAQD,EAAQC,EAAO,EAAEC,EAAOH,CAAM,IAAM,OACzCD,EAAMG,GAAUH,IAAQ,QAAaG,GAASA,KACpDH,EAAMG,EAGZ,CACA,OAAOH,CACT,CAnBA,IAAAK,GAAAC,GAAA,QCAe,SAARC,GAAqBC,EAAQC,EAAS,CAC3C,IAAIF,EACJ,GAAIE,IAAY,OACd,QAAWC,KAASF,EACdE,GAAS,OACLH,EAAMG,GAAUH,IAAQ,QAAaG,GAASA,KACpDH,EAAMG,OAGL,CACL,IAAIC,EAAQ,GACZ,QAASD,KAASF,GACXE,EAAQD,EAAQC,EAAO,EAAEC,EAAOH,CAAM,IAAM,OACzCD,EAAMG,GAAUH,IAAQ,QAAaG,GAASA,KACpDH,EAAMG,EAGZ,CACA,OAAOH,CACT,CAnBA,IAAAK,GAAAC,GAAA,QCIe,SAARC,GAA6BC,EAAOC,EAAGC,EAAO,EAAGC,EAAQ,IAAUC,EAAS,CAKjF,GAJAH,EAAI,KAAK,MAAMA,CAAC,EAChBC,EAAO,KAAK,MAAM,KAAK,IAAI,EAAGA,CAAI,CAAC,EACnCC,EAAQ,KAAK,MAAM,KAAK,IAAIH,EAAM,OAAS,EAAGG,CAAK,CAAC,EAEhD,EAAED,GAAQD,GAAKA,GAAKE,GAAQ,OAAOH,EAIvC,IAFAI,EAAUA,IAAY,OAAYC,GAAmBC,GAAeF,CAAO,EAEpED,EAAQD,GAAM,CACnB,GAAIC,EAAQD,EAAO,IAAK,CACtB,IAAMK,EAAIJ,EAAQD,EAAO,EACnBM,EAAIP,EAAIC,EAAO,EACfO,EAAI,KAAK,IAAIF,CAAC,EACdG,EAAI,GAAM,KAAK,IAAI,EAAID,EAAI,CAAC,EAC5BE,EAAK,GAAM,KAAK,KAAKF,EAAIC,GAAKH,EAAIG,GAAKH,CAAC,GAAKC,EAAID,EAAI,EAAI,EAAI,GAAK,GAClEK,EAAU,KAAK,IAAIV,EAAM,KAAK,MAAMD,EAAIO,EAAIE,EAAIH,EAAII,CAAE,CAAC,EACvDE,EAAW,KAAK,IAAIV,EAAO,KAAK,MAAMF,GAAKM,EAAIC,GAAKE,EAAIH,EAAII,CAAE,CAAC,EACrEZ,GAAYC,EAAOC,EAAGW,EAASC,EAAUT,CAAO,CAClD,CAEA,IAAMU,EAAId,EAAMC,CAAC,EACbc,EAAIb,EACJc,EAAIb,EAKR,IAHAc,GAAKjB,EAAOE,EAAMD,CAAC,EACfG,EAAQJ,EAAMG,CAAK,EAAGW,CAAC,EAAI,GAAGG,GAAKjB,EAAOE,EAAMC,CAAK,EAElDY,EAAIC,GAAG,CAEZ,IADAC,GAAKjB,EAAOe,EAAGC,CAAC,EAAG,EAAED,EAAG,EAAEC,EACnBZ,EAAQJ,EAAMe,CAAC,EAAGD,CAAC,EAAI,GAAG,EAAEC,EACnC,KAAOX,EAAQJ,EAAMgB,CAAC,EAAGF,CAAC,EAAI,GAAG,EAAEE,CACrC,CAEIZ,EAAQJ,EAAME,CAAI,EAAGY,CAAC,IAAM,EAAGG,GAAKjB,EAAOE,EAAMc,CAAC,GACjD,EAAEA,EAAGC,GAAKjB,EAAOgB,EAAGb,CAAK,GAE1Ba,GAAKf,IAAGC,EAAOc,EAAI,GACnBf,GAAKe,IAAGb,EAAQa,EAAI,EAC1B,CAEA,OAAOhB,CACT,CAEA,SAASiB,GAAKjB,EAAOe,EAAGC,EAAG,CACzB,IAAMF,EAAId,EAAMe,CAAC,EACjBf,EAAMe,CAAC,EAAIf,EAAMgB,CAAC,EAClBhB,EAAMgB,CAAC,EAAIF,CACb,CApDA,IAAAI,GAAAC,GAAA,KAAAC,OCSe,SAARC,GAA0BC,EAAQC,EAAGC,EAAS,CAEnD,GADAF,EAAS,aAAa,KAAKG,GAAQH,EAAQE,CAAO,CAAC,EAC/C,IAAE,EAAIF,EAAO,SAAW,MAAMC,EAAI,CAACA,CAAC,GACxC,IAAIA,GAAK,GAAK,EAAI,EAAG,OAAOG,GAAIJ,CAAM,EACtC,GAAIC,GAAK,EAAG,OAAOI,GAAIL,CAAM,EAC7B,IAAI,EACA,GAAK,EAAI,GAAKC,EACdK,EAAK,KAAK,MAAM,CAAC,EACjBC,EAASF,GAAIG,GAAYR,EAAQM,CAAE,EAAE,SAAS,EAAGA,EAAK,CAAC,CAAC,EACxDG,EAASL,GAAIJ,EAAO,SAASM,EAAK,CAAC,CAAC,EACxC,OAAOC,GAAUE,EAASF,IAAW,EAAID,GAC3C,CAEO,SAASI,GAAeV,EAAQC,EAAGC,EAAUS,GAAQ,CAC1D,GAAI,IAAE,EAAIX,EAAO,SAAW,MAAMC,EAAI,CAACA,CAAC,GACxC,IAAIA,GAAK,GAAK,EAAI,EAAG,MAAO,CAACC,EAAQF,EAAO,CAAC,EAAG,EAAGA,CAAM,EACzD,GAAIC,GAAK,EAAG,MAAO,CAACC,EAAQF,EAAO,EAAI,CAAC,EAAG,EAAI,EAAGA,CAAM,EACxD,IAAI,EACA,GAAK,EAAI,GAAKC,EACdK,EAAK,KAAK,MAAM,CAAC,EACjBC,EAAS,CAACL,EAAQF,EAAOM,CAAE,EAAGA,EAAIN,CAAM,EACxCS,EAAS,CAACP,EAAQF,EAAOM,EAAK,CAAC,EAAGA,EAAK,EAAGN,CAAM,EACpD,OAAOO,GAAUE,EAASF,IAAW,EAAID,GAC3C,CAhCA,IAAAM,GAAAC,GAAA,KAAAC,KAEAC,KAEAC,KACAC,OCLe,SAARC,GAAuBC,EAAOC,EAAMC,EAAM,CAC/CF,EAAQ,CAACA,EAAOC,EAAO,CAACA,EAAMC,GAAQC,EAAI,UAAU,QAAU,GAAKF,EAAOD,EAAOA,EAAQ,EAAG,GAAKG,EAAI,EAAI,EAAI,CAACD,EAM9G,QAJIE,EAAI,GACJD,EAAI,KAAK,IAAI,EAAG,KAAK,MAAMF,EAAOD,GAASE,CAAI,CAAC,EAAI,EACpDH,EAAQ,IAAI,MAAMI,CAAC,EAEhB,EAAEC,EAAID,GACXJ,EAAMK,CAAC,EAAIJ,EAAQI,EAAIF,EAGzB,OAAOH,CACT,CAZA,IAAAM,GAAAC,GAAA,QCAA,IAAAC,GAAAC,GAAA,KAAAC,KACAC,KACAC,KA0BAC,KAEAC,KASAC,KAiBAP,OCxDO,SAASQ,GAAUC,EAAQC,EAAO,CACvC,OAAQ,UAAU,OAAQ,CACxB,IAAK,GAAG,MACR,IAAK,GAAG,KAAK,MAAMD,CAAM,EAAG,MAC5B,QAAS,KAAK,MAAMC,CAAK,EAAE,OAAOD,CAAM,EAAG,KAC7C,CACA,OAAO,IACT,CAEO,SAASE,GAAiBF,EAAQG,EAAc,CACrD,OAAQ,UAAU,OAAQ,CACxB,IAAK,GAAG,MACR,IAAK,GAAG,CACF,OAAOH,GAAW,WAAY,KAAK,aAAaA,CAAM,EACrD,KAAK,MAAMA,CAAM,EACtB,KACF,CACA,QAAS,CACP,KAAK,OAAOA,CAAM,EACd,OAAOG,GAAiB,WAAY,KAAK,aAAaA,CAAY,EACjE,KAAK,MAAMA,CAAY,EAC5B,KACF,CACF,CACA,OAAO,IACT,CAzBA,IAAAC,GAAAC,GAAA,QCKe,SAARC,IAA2B,CAChC,IAAIC,EAAQ,IAAIC,GACZC,EAAS,CAAC,EACVC,EAAQ,CAAC,EACTC,EAAUC,GAEd,SAASC,EAAMC,EAAG,CAChB,IAAIC,EAAIR,EAAM,IAAIO,CAAC,EACnB,GAAIC,IAAM,OAAW,CACnB,GAAIJ,IAAYC,GAAU,OAAOD,EACjCJ,EAAM,IAAIO,EAAGC,EAAIN,EAAO,KAAKK,CAAC,EAAI,CAAC,CACrC,CACA,OAAOJ,EAAMK,EAAIL,EAAM,MAAM,CAC/B,CAEA,OAAAG,EAAM,OAAS,SAASG,EAAG,CACzB,GAAI,CAAC,UAAU,OAAQ,OAAOP,EAAO,MAAM,EAC3CA,EAAS,CAAC,EAAGF,EAAQ,IAAIC,GACzB,QAAWS,KAASD,EACdT,EAAM,IAAIU,CAAK,GACnBV,EAAM,IAAIU,EAAOR,EAAO,KAAKQ,CAAK,EAAI,CAAC,EAEzC,OAAOJ,CACT,EAEAA,EAAM,MAAQ,SAASG,EAAG,CACxB,OAAO,UAAU,QAAUN,EAAQ,MAAM,KAAKM,CAAC,EAAGH,GAASH,EAAM,MAAM,CACzE,EAEAG,EAAM,QAAU,SAASG,EAAG,CAC1B,OAAO,UAAU,QAAUL,EAAUK,EAAGH,GAASF,CACnD,EAEAE,EAAM,KAAO,UAAW,CACtB,OAAOP,GAAQG,EAAQC,CAAK,EAAE,QAAQC,CAAO,CAC/C,EAEAO,GAAU,MAAML,EAAO,SAAS,EAEzBA,CACT,CA7CA,IAGaD,GAHbO,GAAAC,GAAA,KAAAC,KACAC,KAEaV,GAAW,OAAO,UAAU,ICC1B,SAARW,IAAwB,CAC7B,IAAIC,EAAQC,GAAQ,EAAE,QAAQ,MAAS,EACnCC,EAASF,EAAM,OACfG,EAAeH,EAAM,MACrBI,EAAK,EACLC,EAAK,EACLC,EACAC,EACAC,EAAQ,GACRC,EAAe,EACfC,EAAe,EACfC,EAAQ,GAEZ,OAAOX,EAAM,QAEb,SAASY,GAAU,CACjB,IAAIC,EAAIX,EAAO,EAAE,OACbY,EAAUT,EAAKD,EACfW,EAAQD,EAAUT,EAAKD,EACvBY,EAAOF,EAAUV,EAAKC,EAC1BC,GAAQU,EAAOD,GAAS,KAAK,IAAI,EAAGF,EAAIJ,EAAeC,EAAe,CAAC,EACnEF,IAAOF,EAAO,KAAK,MAAMA,CAAI,GACjCS,IAAUC,EAAOD,EAAQT,GAAQO,EAAIJ,IAAiBE,EACtDJ,EAAYD,GAAQ,EAAIG,GACpBD,IAAOO,EAAQ,KAAK,MAAMA,CAAK,EAAGR,EAAY,KAAK,MAAMA,CAAS,GACtE,IAAIU,EAASC,GAASL,CAAC,EAAE,IAAI,SAASM,EAAG,CAAE,OAAOJ,EAAQT,EAAOa,CAAG,CAAC,EACrE,OAAOhB,EAAaW,EAAUG,EAAO,QAAQ,EAAIA,CAAM,CACzD,CAEA,OAAAjB,EAAM,OAAS,SAASoB,EAAG,CACzB,OAAO,UAAU,QAAUlB,EAAOkB,CAAC,EAAGR,EAAQ,GAAKV,EAAO,CAC5D,EAEAF,EAAM,MAAQ,SAASoB,EAAG,CACxB,OAAO,UAAU,QAAU,CAAChB,EAAIC,CAAE,EAAIe,EAAGhB,EAAK,CAACA,EAAIC,EAAK,CAACA,EAAIO,EAAQ,GAAK,CAACR,EAAIC,CAAE,CACnF,EAEAL,EAAM,WAAa,SAASoB,EAAG,CAC7B,MAAO,CAAChB,EAAIC,CAAE,EAAIe,EAAGhB,EAAK,CAACA,EAAIC,EAAK,CAACA,EAAIG,EAAQ,GAAMI,EAAQ,CACjE,EAEAZ,EAAM,UAAY,UAAW,CAC3B,OAAOO,CACT,EAEAP,EAAM,KAAO,UAAW,CACtB,OAAOM,CACT,EAEAN,EAAM,MAAQ,SAASoB,EAAG,CACxB,OAAO,UAAU,QAAUZ,EAAQ,CAAC,CAACY,EAAGR,EAAQ,GAAKJ,CACvD,EAEAR,EAAM,QAAU,SAASoB,EAAG,CAC1B,OAAO,UAAU,QAAUX,EAAe,KAAK,IAAI,EAAGC,EAAe,CAACU,CAAC,EAAGR,EAAQ,GAAKH,CACzF,EAEAT,EAAM,aAAe,SAASoB,EAAG,CAC/B,OAAO,UAAU,QAAUX,EAAe,KAAK,IAAI,EAAGW,CAAC,EAAGR,EAAQ,GAAKH,CACzE,EAEAT,EAAM,aAAe,SAASoB,EAAG,CAC/B,OAAO,UAAU,QAAUV,EAAe,CAACU,EAAGR,EAAQ,GAAKF,CAC7D,EAEAV,EAAM,MAAQ,SAASoB,EAAG,CACxB,OAAO,UAAU,QAAUT,EAAQ,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGS,CAAC,CAAC,EAAGR,EAAQ,GAAKD,CAC/E,EAEAX,EAAM,KAAO,UAAW,CACtB,OAAOD,GAAKG,EAAO,EAAG,CAACE,EAAIC,CAAE,CAAC,EACzB,MAAMG,CAAK,EACX,aAAaC,CAAY,EACzB,aAAaC,CAAY,EACzB,MAAMC,CAAK,CAClB,EAEOU,GAAU,MAAMT,EAAQ,EAAG,SAAS,CAC7C,CAEA,SAASU,GAAStB,EAAO,CACvB,IAAIuB,EAAOvB,EAAM,KAEjB,OAAAA,EAAM,QAAUA,EAAM,aACtB,OAAOA,EAAM,aACb,OAAOA,EAAM,aAEbA,EAAM,KAAO,UAAW,CACtB,OAAOsB,GAASC,EAAK,CAAC,CACxB,EAEOvB,CACT,CAEO,SAASwB,IAAQ,CACtB,OAAOF,GAASvB,GAAK,MAAM,KAAM,SAAS,EAAE,aAAa,CAAC,CAAC,CAC7D,CApGA,IAAA0B,GAAAC,GAAA,KAAAC,KACAC,KACAC,OCFe,SAARC,GAAiBC,EAAaC,EAASC,EAAW,CACvDF,EAAY,UAAYC,EAAQ,UAAYC,EAC5CA,EAAU,YAAcF,CAC1B,CAEO,SAASG,GAAOC,EAAQC,EAAY,CACzC,IAAIH,EAAY,OAAO,OAAOE,EAAO,SAAS,EAC9C,QAASE,KAAOD,EAAYH,EAAUI,CAAG,EAAID,EAAWC,CAAG,EAC3D,OAAOJ,CACT,CATA,IAAAK,GAAAC,GAAA,QCEO,SAASC,IAAQ,CAAC,CAsLzB,SAASC,IAAkB,CACzB,OAAO,KAAK,IAAI,EAAE,UAAU,CAC9B,CAEA,SAASC,KAAmB,CAC1B,OAAO,KAAK,IAAI,EAAE,WAAW,CAC/B,CAEA,SAASC,KAAkB,CACzB,OAAOC,GAAW,IAAI,EAAE,UAAU,CACpC,CAEA,SAASC,IAAkB,CACzB,OAAO,KAAK,IAAI,EAAE,UAAU,CAC9B,CAEe,SAARC,GAAuBC,EAAQ,CACpC,IAAIC,EAAGC,EACP,OAAAF,GAAUA,EAAS,IAAI,KAAK,EAAE,YAAY,GAClCC,EAAIE,IAAM,KAAKH,CAAM,IAAME,EAAID,EAAE,CAAC,EAAE,OAAQA,EAAI,SAASA,EAAE,CAAC,EAAG,EAAE,EAAGC,IAAM,EAAIE,GAAKH,CAAC,EACtFC,IAAM,EAAI,IAAIG,GAAKJ,GAAK,EAAI,GAAQA,GAAK,EAAI,IAAQA,GAAK,EAAI,GAAQA,EAAI,KAASA,EAAI,KAAQ,EAAMA,EAAI,GAAM,CAAC,EAChHC,IAAM,EAAII,GAAKL,GAAK,GAAK,IAAMA,GAAK,GAAK,IAAMA,GAAK,EAAI,KAAOA,EAAI,KAAQ,GAAI,EAC/EC,IAAM,EAAII,GAAML,GAAK,GAAK,GAAQA,GAAK,EAAI,IAAQA,GAAK,EAAI,GAAQA,GAAK,EAAI,IAAQA,GAAK,EAAI,GAAQA,EAAI,MAAUA,EAAI,KAAQ,EAAMA,EAAI,IAAQ,GAAI,EACtJ,OACCA,EAAIM,IAAa,KAAKP,CAAM,GAAK,IAAIK,GAAIJ,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAG,CAAC,GAC5DA,EAAIO,IAAa,KAAKR,CAAM,GAAK,IAAIK,GAAIJ,EAAE,CAAC,EAAI,IAAM,IAAKA,EAAE,CAAC,EAAI,IAAM,IAAKA,EAAE,CAAC,EAAI,IAAM,IAAK,CAAC,GAChGA,EAAIQ,IAAc,KAAKT,CAAM,GAAKM,GAAKL,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,GAC7DA,EAAIS,IAAc,KAAKV,CAAM,GAAKM,GAAKL,EAAE,CAAC,EAAI,IAAM,IAAKA,EAAE,CAAC,EAAI,IAAM,IAAKA,EAAE,CAAC,EAAI,IAAM,IAAKA,EAAE,CAAC,CAAC,GACjGA,EAAIU,IAAa,KAAKX,CAAM,GAAKY,GAAKX,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAI,IAAKA,EAAE,CAAC,EAAI,IAAK,CAAC,GACrEA,EAAIY,IAAc,KAAKb,CAAM,GAAKY,GAAKX,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAI,IAAKA,EAAE,CAAC,EAAI,IAAKA,EAAE,CAAC,CAAC,EAC1Ea,GAAM,eAAed,CAAM,EAAII,GAAKU,GAAMd,CAAM,CAAC,EACjDA,IAAW,cAAgB,IAAIK,GAAI,IAAK,IAAK,IAAK,CAAC,EACnD,IACR,CAEA,SAASD,GAAKW,EAAG,CACf,OAAO,IAAIV,GAAIU,GAAK,GAAK,IAAMA,GAAK,EAAI,IAAMA,EAAI,IAAM,CAAC,CAC3D,CAEA,SAAST,GAAKU,EAAGC,EAAGC,EAAGC,EAAG,CACxB,OAAIA,GAAK,IAAGH,EAAIC,EAAIC,EAAI,KACjB,IAAIb,GAAIW,EAAGC,EAAGC,EAAGC,CAAC,CAC3B,CAEO,SAASC,GAAWC,EAAG,CAE5B,OADMA,aAAa5B,KAAQ4B,EAAItB,GAAMsB,CAAC,GACjCA,GACLA,EAAIA,EAAE,IAAI,EACH,IAAIhB,GAAIgB,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,OAAO,GAFxB,IAAIhB,EAGrB,CAEO,SAASiB,GAAIN,EAAGC,EAAGC,EAAGK,EAAS,CACpC,OAAO,UAAU,SAAW,EAAIH,GAAWJ,CAAC,EAAI,IAAIX,GAAIW,EAAGC,EAAGC,EAAGK,GAAkB,CAAW,CAChG,CAEO,SAASlB,GAAIW,EAAGC,EAAGC,EAAGK,EAAS,CACpC,KAAK,EAAI,CAACP,EACV,KAAK,EAAI,CAACC,EACV,KAAK,EAAI,CAACC,EACV,KAAK,QAAU,CAACK,CAClB,CA8BA,SAASC,IAAgB,CACvB,MAAO,IAAIC,GAAI,KAAK,CAAC,CAAC,GAAGA,GAAI,KAAK,CAAC,CAAC,GAAGA,GAAI,KAAK,CAAC,CAAC,EACpD,CAEA,SAASC,KAAiB,CACxB,MAAO,IAAID,GAAI,KAAK,CAAC,CAAC,GAAGA,GAAI,KAAK,CAAC,CAAC,GAAGA,GAAI,KAAK,CAAC,CAAC,GAAGA,IAAK,MAAM,KAAK,OAAO,EAAI,EAAI,KAAK,SAAW,GAAG,CAAC,EAC1G,CAEA,SAASE,IAAgB,CACvB,IAAMR,EAAIS,GAAO,KAAK,OAAO,EAC7B,MAAO,GAAGT,IAAM,EAAI,OAAS,OAAO,GAAGU,GAAO,KAAK,CAAC,CAAC,KAAKA,GAAO,KAAK,CAAC,CAAC,KAAKA,GAAO,KAAK,CAAC,CAAC,GAAGV,IAAM,EAAI,IAAM,KAAKA,CAAC,GAAG,EACzH,CAEA,SAASS,GAAOL,EAAS,CACvB,OAAO,MAAMA,CAAO,EAAI,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGA,CAAO,CAAC,CAC9D,CAEA,SAASM,GAAOC,EAAO,CACrB,OAAO,KAAK,IAAI,EAAG,KAAK,IAAI,IAAK,KAAK,MAAMA,CAAK,GAAK,CAAC,CAAC,CAC1D,CAEA,SAASL,GAAIK,EAAO,CAClB,OAAAA,EAAQD,GAAOC,CAAK,GACZA,EAAQ,GAAK,IAAM,IAAMA,EAAM,SAAS,EAAE,CACpD,CAEA,SAASlB,GAAKmB,EAAGC,EAAG9B,EAAGiB,EAAG,CACxB,OAAIA,GAAK,EAAGY,EAAIC,EAAI9B,EAAI,IACfA,GAAK,GAAKA,GAAK,EAAG6B,EAAIC,EAAI,IAC1BA,GAAK,IAAGD,EAAI,KACd,IAAIE,GAAIF,EAAGC,EAAG9B,EAAGiB,CAAC,CAC3B,CAEO,SAAStB,GAAWwB,EAAG,CAC5B,GAAIA,aAAaY,GAAK,OAAO,IAAIA,GAAIZ,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,OAAO,EAE7D,GADMA,aAAa5B,KAAQ4B,EAAItB,GAAMsB,CAAC,GAClC,CAACA,EAAG,OAAO,IAAIY,GACnB,GAAIZ,aAAaY,GAAK,OAAOZ,EAC7BA,EAAIA,EAAE,IAAI,EACV,IAAIL,EAAIK,EAAE,EAAI,IACVJ,EAAII,EAAE,EAAI,IACVH,EAAIG,EAAE,EAAI,IACVa,EAAM,KAAK,IAAIlB,EAAGC,EAAGC,CAAC,EACtBiB,EAAM,KAAK,IAAInB,EAAGC,EAAGC,CAAC,EACtBa,EAAI,IACJ,EAAII,EAAMD,EACVhC,GAAKiC,EAAMD,GAAO,EACtB,OAAI,GACElB,IAAMmB,EAAKJ,GAAKd,EAAIC,GAAK,GAAKD,EAAIC,GAAK,EAClCD,IAAMkB,EAAKJ,GAAKb,EAAIF,GAAK,EAAI,EACjCe,GAAKf,EAAIC,GAAK,EAAI,EACvB,GAAKf,EAAI,GAAMiC,EAAMD,EAAM,EAAIC,EAAMD,EACrCH,GAAK,IAEL,EAAI7B,EAAI,GAAKA,EAAI,EAAI,EAAI6B,EAEpB,IAAIE,GAAIF,EAAG,EAAG7B,EAAGmB,EAAE,OAAO,CACnC,CAEO,SAASe,GAAIL,EAAGC,EAAG9B,EAAGqB,EAAS,CACpC,OAAO,UAAU,SAAW,EAAI1B,GAAWkC,CAAC,EAAI,IAAIE,GAAIF,EAAGC,EAAG9B,EAAGqB,GAAkB,CAAW,CAChG,CAEA,SAASU,GAAIF,EAAGC,EAAG9B,EAAGqB,EAAS,CAC7B,KAAK,EAAI,CAACQ,EACV,KAAK,EAAI,CAACC,EACV,KAAK,EAAI,CAAC9B,EACV,KAAK,QAAU,CAACqB,CAClB,CAsCA,SAASc,GAAOP,EAAO,CACrB,OAAAA,GAASA,GAAS,GAAK,IAChBA,EAAQ,EAAIA,EAAQ,IAAMA,CACnC,CAEA,SAASQ,GAAOR,EAAO,CACrB,OAAO,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGA,GAAS,CAAC,CAAC,CAC5C,CAGA,SAASS,GAAQR,EAAGS,EAAIC,EAAI,CAC1B,OAAQV,EAAI,GAAKS,GAAMC,EAAKD,GAAMT,EAAI,GAChCA,EAAI,IAAMU,EACVV,EAAI,IAAMS,GAAMC,EAAKD,IAAO,IAAMT,GAAK,GACvCS,GAAM,GACd,CA3YA,IAIWE,GACAC,GAEPC,GACAC,GACAC,GACA3C,IACAI,IACAC,IACAC,IACAC,IACAC,IACAE,IAEAC,GAlBJiC,GAAAC,GAAA,KAAAC,KAIWP,GAAS,GACTC,GAAW,EAAID,GAEtBE,GAAM,sBACNC,GAAM,oDACNC,GAAM,qDACN3C,IAAQ,qBACRI,IAAe,IAAI,OAAO,UAAUqC,EAAG,IAAIA,EAAG,IAAIA,EAAG,MAAM,EAC3DpC,IAAe,IAAI,OAAO,UAAUsC,EAAG,IAAIA,EAAG,IAAIA,EAAG,MAAM,EAC3DrC,IAAgB,IAAI,OAAO,WAAWmC,EAAG,IAAIA,EAAG,IAAIA,EAAG,IAAIC,EAAG,MAAM,EACpEnC,IAAgB,IAAI,OAAO,WAAWoC,EAAG,IAAIA,EAAG,IAAIA,EAAG,IAAID,EAAG,MAAM,EACpElC,IAAe,IAAI,OAAO,UAAUkC,EAAG,IAAIC,EAAG,IAAIA,EAAG,MAAM,EAC3DjC,IAAgB,IAAI,OAAO,WAAWgC,EAAG,IAAIC,EAAG,IAAIA,EAAG,IAAID,EAAG,MAAM,EAEpE/B,GAAQ,CACV,UAAW,SACX,aAAc,SACd,KAAM,MACN,WAAY,QACZ,MAAO,SACP,MAAO,SACP,OAAQ,SACR,MAAO,EACP,eAAgB,SAChB,KAAM,IACN,WAAY,QACZ,MAAO,SACP,UAAW,SACX,UAAW,QACX,WAAY,QACZ,UAAW,SACX,MAAO,SACP,eAAgB,QAChB,SAAU,SACV,QAAS,SACT,KAAM,MACN,SAAU,IACV,SAAU,MACV,cAAe,SACf,SAAU,SACV,UAAW,MACX,SAAU,SACV,UAAW,SACX,YAAa,QACb,eAAgB,QAChB,WAAY,SACZ,WAAY,SACZ,QAAS,QACT,WAAY,SACZ,aAAc,QACd,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,MACf,WAAY,QACZ,SAAU,SACV,YAAa,MACb,QAAS,QACT,QAAS,QACT,WAAY,QACZ,UAAW,SACX,YAAa,SACb,YAAa,QACb,QAAS,SACT,UAAW,SACX,WAAY,SACZ,KAAM,SACN,UAAW,SACX,KAAM,QACN,MAAO,MACP,YAAa,SACb,KAAM,QACN,SAAU,SACV,QAAS,SACT,UAAW,SACX,OAAQ,QACR,MAAO,SACP,MAAO,SACP,SAAU,SACV,cAAe,SACf,UAAW,QACX,aAAc,SACd,UAAW,SACX,WAAY,SACZ,UAAW,SACX,qBAAsB,SACtB,UAAW,SACX,WAAY,QACZ,UAAW,SACX,UAAW,SACX,YAAa,SACb,cAAe,QACf,aAAc,QACd,eAAgB,QAChB,eAAgB,QAChB,eAAgB,SAChB,YAAa,SACb,KAAM,MACN,UAAW,QACX,MAAO,SACP,QAAS,SACT,OAAQ,QACR,iBAAkB,QAClB,WAAY,IACZ,aAAc,SACd,aAAc,QACd,eAAgB,QAChB,gBAAiB,QACjB,kBAAmB,MACnB,gBAAiB,QACjB,gBAAiB,SACjB,aAAc,QACd,UAAW,SACX,UAAW,SACX,SAAU,SACV,YAAa,SACb,KAAM,IACN,QAAS,SACT,MAAO,QACP,UAAW,QACX,OAAQ,SACR,UAAW,SACX,OAAQ,SACR,cAAe,SACf,UAAW,SACX,cAAe,SACf,cAAe,SACf,WAAY,SACZ,UAAW,SACX,KAAM,SACN,KAAM,SACN,KAAM,SACN,WAAY,SACZ,OAAQ,QACR,cAAe,QACf,IAAK,SACL,UAAW,SACX,UAAW,QACX,YAAa,QACb,OAAQ,SACR,WAAY,SACZ,SAAU,QACV,SAAU,SACV,OAAQ,SACR,OAAQ,SACR,QAAS,QACT,UAAW,QACX,UAAW,QACX,UAAW,QACX,KAAM,SACN,YAAa,MACb,UAAW,QACX,IAAK,SACL,KAAM,MACN,QAAS,SACT,OAAQ,SACR,UAAW,QACX,OAAQ,SACR,MAAO,SACP,MAAO,SACP,WAAY,SACZ,OAAQ,SACR,YAAa,QACf,EAEAoC,GAAOzD,GAAOM,GAAO,CACnB,KAAKoD,EAAU,CACb,OAAO,OAAO,OAAO,IAAI,KAAK,YAAa,KAAMA,CAAQ,CAC3D,EACA,aAAc,CACZ,OAAO,KAAK,IAAI,EAAE,YAAY,CAChC,EACA,IAAKzD,GACL,UAAWA,GACX,WAAYC,IACZ,UAAWC,IACX,UAAWE,GACX,SAAUA,EACZ,CAAC,EAgEDoD,GAAO7C,GAAKiB,GAAK8B,GAAO3D,GAAO,CAC7B,SAAS4D,EAAG,CACV,OAAAA,EAAIA,GAAK,KAAOV,GAAW,KAAK,IAAIA,GAAUU,CAAC,EACxC,IAAIhD,GAAI,KAAK,EAAIgD,EAAG,KAAK,EAAIA,EAAG,KAAK,EAAIA,EAAG,KAAK,OAAO,CACjE,EACA,OAAOA,EAAG,CACR,OAAAA,EAAIA,GAAK,KAAOX,GAAS,KAAK,IAAIA,GAAQW,CAAC,EACpC,IAAIhD,GAAI,KAAK,EAAIgD,EAAG,KAAK,EAAIA,EAAG,KAAK,EAAIA,EAAG,KAAK,OAAO,CACjE,EACA,KAAM,CACJ,OAAO,IACT,EACA,OAAQ,CACN,OAAO,IAAIhD,GAAIwB,GAAO,KAAK,CAAC,EAAGA,GAAO,KAAK,CAAC,EAAGA,GAAO,KAAK,CAAC,EAAGD,GAAO,KAAK,OAAO,CAAC,CACrF,EACA,aAAc,CACZ,MAAQ,KAAQ,KAAK,GAAK,KAAK,EAAI,OAC3B,KAAQ,KAAK,GAAK,KAAK,EAAI,OAC3B,KAAQ,KAAK,GAAK,KAAK,EAAI,OAC3B,GAAK,KAAK,SAAW,KAAK,SAAW,CAC/C,EACA,IAAKJ,GACL,UAAWA,GACX,WAAYE,IACZ,UAAWC,GACX,SAAUA,EACZ,CAAC,CAAC,EAwEFuB,GAAOjB,GAAKG,GAAKgB,GAAO3D,GAAO,CAC7B,SAAS4D,EAAG,CACV,OAAAA,EAAIA,GAAK,KAAOV,GAAW,KAAK,IAAIA,GAAUU,CAAC,EACxC,IAAIpB,GAAI,KAAK,EAAG,KAAK,EAAG,KAAK,EAAIoB,EAAG,KAAK,OAAO,CACzD,EACA,OAAOA,EAAG,CACR,OAAAA,EAAIA,GAAK,KAAOX,GAAS,KAAK,IAAIA,GAAQW,CAAC,EACpC,IAAIpB,GAAI,KAAK,EAAG,KAAK,EAAG,KAAK,EAAIoB,EAAG,KAAK,OAAO,CACzD,EACA,KAAM,CACJ,IAAItB,EAAI,KAAK,EAAI,KAAO,KAAK,EAAI,GAAK,IAClCC,EAAI,MAAMD,CAAC,GAAK,MAAM,KAAK,CAAC,EAAI,EAAI,KAAK,EACzC7B,EAAI,KAAK,EACTuC,EAAKvC,GAAKA,EAAI,GAAMA,EAAI,EAAIA,GAAK8B,EACjCQ,EAAK,EAAItC,EAAIuC,EACjB,OAAO,IAAIpC,GACTkC,GAAQR,GAAK,IAAMA,EAAI,IAAMA,EAAI,IAAKS,EAAIC,CAAE,EAC5CF,GAAQR,EAAGS,EAAIC,CAAE,EACjBF,GAAQR,EAAI,IAAMA,EAAI,IAAMA,EAAI,IAAKS,EAAIC,CAAE,EAC3C,KAAK,OACP,CACF,EACA,OAAQ,CACN,OAAO,IAAIR,GAAII,GAAO,KAAK,CAAC,EAAGC,GAAO,KAAK,CAAC,EAAGA,GAAO,KAAK,CAAC,EAAGV,GAAO,KAAK,OAAO,CAAC,CACrF,EACA,aAAc,CACZ,OAAQ,GAAK,KAAK,GAAK,KAAK,GAAK,GAAK,MAAM,KAAK,CAAC,IAC1C,GAAK,KAAK,GAAK,KAAK,GAAK,GACzB,GAAK,KAAK,SAAW,KAAK,SAAW,CAC/C,EACA,WAAY,CACV,IAAMT,EAAIS,GAAO,KAAK,OAAO,EAC7B,MAAO,GAAGT,IAAM,EAAI,OAAS,OAAO,GAAGkB,GAAO,KAAK,CAAC,CAAC,KAAKC,GAAO,KAAK,CAAC,EAAI,GAAG,MAAMA,GAAO,KAAK,CAAC,EAAI,GAAG,IAAInB,IAAM,EAAI,IAAM,KAAKA,CAAC,GAAG,EACvI,CACF,CAAC,CAAC,IC1XF,IAAamC,GACAC,GADbC,GAAAC,GAAA,KAAaH,GAAU,KAAK,GAAK,IACpBC,GAAU,IAAM,KAAK,KCalC,SAASG,GAAWC,EAAG,CACrB,GAAIA,aAAaC,GAAK,OAAO,IAAIA,GAAID,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,OAAO,EAC7D,GAAIA,aAAaE,GAAK,OAAOC,GAAQH,CAAC,EAChCA,aAAaI,KAAMJ,EAAIK,GAAWL,CAAC,GACzC,IAAIM,EAAIC,GAASP,EAAE,CAAC,EAChBQ,EAAID,GAASP,EAAE,CAAC,EAChBS,EAAIF,GAASP,EAAE,CAAC,EAChBU,EAAIC,IAAS,SAAYL,EAAI,SAAYE,EAAI,SAAYC,GAAKG,EAAE,EAAGC,EAAGC,EAC1E,OAAIR,IAAME,GAAKA,IAAMC,EAAGI,EAAIC,EAAIJ,GAC9BG,EAAIF,IAAS,SAAYL,EAAI,SAAYE,EAAI,SAAYC,GAAKM,EAAE,EAChED,EAAIH,IAAS,SAAYL,EAAI,SAAYE,EAAI,SAAYC,GAAKO,EAAE,GAE3D,IAAIf,GAAI,IAAMS,EAAI,GAAI,KAAOG,EAAIH,GAAI,KAAOA,EAAII,GAAId,EAAE,OAAO,CACtE,CAEO,SAASiB,GAAKC,EAAGC,EAAS,CAC/B,OAAO,IAAIlB,GAAIiB,EAAG,EAAG,EAAGC,GAAkB,CAAW,CACvD,CAEe,SAARC,GAAqBF,EAAGG,EAAGZ,EAAGU,EAAS,CAC5C,OAAO,UAAU,SAAW,EAAIpB,GAAWmB,CAAC,EAAI,IAAIjB,GAAIiB,EAAGG,EAAGZ,EAAGU,GAAkB,CAAW,CAChG,CAEO,SAASlB,GAAIiB,EAAGG,EAAGZ,EAAGU,EAAS,CACpC,KAAK,EAAI,CAACD,EACV,KAAK,EAAI,CAACG,EACV,KAAK,EAAI,CAACZ,EACV,KAAK,QAAU,CAACU,CAClB,CAyBA,SAASR,GAAQW,EAAG,CAClB,OAAOA,EAAIC,IAAK,KAAK,IAAID,EAAG,EAAI,CAAC,EAAIA,EAAIE,GAAKC,EAChD,CAEA,SAASC,GAAQJ,EAAG,CAClB,OAAOA,EAAIK,GAAKL,EAAIA,EAAIA,EAAIE,IAAMF,EAAIG,GACxC,CAEA,SAASG,GAASf,EAAG,CACnB,MAAO,MAAOA,GAAK,SAAY,MAAQA,EAAI,MAAQ,KAAK,IAAIA,EAAG,EAAI,GAAG,EAAI,KAC5E,CAEA,SAASN,GAASM,EAAG,CACnB,OAAQA,GAAK,MAAQ,OAAUA,EAAI,MAAQ,KAAK,KAAKA,EAAI,MAAS,MAAO,GAAG,CAC9E,CAEA,SAASgB,GAAW7B,EAAG,CACrB,GAAIA,aAAaE,GAAK,OAAO,IAAIA,GAAIF,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,OAAO,EAE7D,GADMA,aAAaC,KAAMD,EAAID,GAAWC,CAAC,GACrCA,EAAE,IAAM,GAAKA,EAAE,IAAM,EAAG,OAAO,IAAIE,GAAI,IAAK,EAAIF,EAAE,GAAKA,EAAE,EAAI,IAAM,EAAI,IAAKA,EAAE,EAAGA,EAAE,OAAO,EAC9F,IAAI8B,EAAI,KAAK,MAAM9B,EAAE,EAAGA,EAAE,CAAC,EAAI+B,GAC/B,OAAO,IAAI7B,GAAI4B,EAAI,EAAIA,EAAI,IAAMA,EAAG,KAAK,KAAK9B,EAAE,EAAIA,EAAE,EAAIA,EAAE,EAAIA,EAAE,CAAC,EAAGA,EAAE,EAAGA,EAAE,OAAO,CACtF,CAEO,SAASgC,GAAId,EAAGe,EAAGH,EAAGX,EAAS,CACpC,OAAO,UAAU,SAAW,EAAIU,GAAWX,CAAC,EAAI,IAAIhB,GAAI4B,EAAGG,EAAGf,EAAGC,GAAkB,CAAW,CAChG,CAEO,SAASe,GAAIJ,EAAGG,EAAGf,EAAGC,EAAS,CACpC,OAAO,UAAU,SAAW,EAAIU,GAAWC,CAAC,EAAI,IAAI5B,GAAI4B,EAAGG,EAAGf,EAAGC,GAAkB,CAAW,CAChG,CAEO,SAASjB,GAAI4B,EAAGG,EAAGf,EAAGC,EAAS,CACpC,KAAK,EAAI,CAACW,EACV,KAAK,EAAI,CAACG,EACV,KAAK,EAAI,CAACf,EACV,KAAK,QAAU,CAACC,CAClB,CAEA,SAAShB,GAAQH,EAAG,CAClB,GAAI,MAAMA,EAAE,CAAC,EAAG,OAAO,IAAIC,GAAID,EAAE,EAAG,EAAG,EAAGA,EAAE,OAAO,EACnD,IAAI8B,EAAI9B,EAAE,EAAImC,GACd,OAAO,IAAIlC,GAAID,EAAE,EAAG,KAAK,IAAI8B,CAAC,EAAI9B,EAAE,EAAG,KAAK,IAAI8B,CAAC,EAAI9B,EAAE,EAAGA,EAAE,OAAO,CACrE,CA9GA,IAKMoC,GACFrB,GACAH,GACAI,GACAS,GACAE,GACAH,GACAD,IAZJc,GAAAC,GAAA,KAAAC,KACAC,KACAC,KAGML,GAAI,GACNrB,GAAK,OACLH,GAAK,EACLI,GAAK,OACLS,GAAK,EAAI,GACTE,GAAK,EAAI,GACTH,GAAK,EAAIG,GAAKA,GACdJ,IAAKI,GAAKA,GAAKA,GAgCnBe,GAAOzC,GAAKmB,GAAKuB,GAAOC,GAAO,CAC7B,SAASC,EAAG,CACV,OAAO,IAAI5C,GAAI,KAAK,EAAImC,IAAKS,GAAY,GAAQ,KAAK,EAAG,KAAK,EAAG,KAAK,OAAO,CAC/E,EACA,OAAOA,EAAG,CACR,OAAO,IAAI5C,GAAI,KAAK,EAAImC,IAAKS,GAAY,GAAQ,KAAK,EAAG,KAAK,EAAG,KAAK,OAAO,CAC/E,EACA,KAAM,CACJ,IAAInC,GAAK,KAAK,EAAI,IAAM,IACpBG,EAAI,MAAM,KAAK,CAAC,EAAIH,EAAIA,EAAI,KAAK,EAAI,IACrCI,EAAI,MAAM,KAAK,CAAC,EAAIJ,EAAIA,EAAI,KAAK,EAAI,IACzC,OAAAG,EAAIE,GAAKW,GAAQb,CAAC,EAClBH,EAAIE,GAAKc,GAAQhB,CAAC,EAClBI,EAAIE,GAAKU,GAAQZ,CAAC,EACX,IAAIV,GACTwB,GAAU,UAAYf,EAAI,UAAYH,EAAI,SAAYI,CAAC,EACvDc,GAAS,UAAaf,EAAI,UAAYH,EAAI,QAAYI,CAAC,EACvDc,GAAU,SAAYf,EAAI,SAAYH,EAAI,UAAYI,CAAC,EACvD,KAAK,OACP,CACF,CACF,CAAC,CAAC,EA+CF4B,GAAOxC,GAAKgC,GAAKS,GAAOC,GAAO,CAC7B,SAASC,EAAG,CACV,OAAO,IAAI3C,GAAI,KAAK,EAAG,KAAK,EAAG,KAAK,EAAIkC,IAAKS,GAAY,GAAQ,KAAK,OAAO,CAC/E,EACA,OAAOA,EAAG,CACR,OAAO,IAAI3C,GAAI,KAAK,EAAG,KAAK,EAAG,KAAK,EAAIkC,IAAKS,GAAY,GAAQ,KAAK,OAAO,CAC/E,EACA,KAAM,CACJ,OAAO1C,GAAQ,IAAI,EAAE,IAAI,CAC3B,CACF,CAAC,CAAC,IC7GF,SAAS2C,IAAiBC,EAAG,CAC3B,GAAIA,aAAaC,GAAW,OAAO,IAAIA,GAAUD,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,OAAO,EACnEA,aAAaE,KAAMF,EAAIG,GAAWH,CAAC,GACzC,IAAII,EAAIJ,EAAE,EAAI,IACVK,EAAIL,EAAE,EAAI,IACVM,EAAIN,EAAE,EAAI,IACVO,GAAKC,GAAQF,EAAIG,GAAKL,EAAIM,GAAKL,IAAMG,GAAQC,GAAKC,IAClDC,EAAKL,EAAIC,EACTK,GAAKC,IAAKR,EAAIE,GAAKO,GAAIH,GAAMI,GAC7B,EAAI,KAAK,KAAKH,EAAIA,EAAID,EAAKA,CAAE,GAAKE,GAAIN,GAAK,EAAIA,IAC/CS,EAAI,EAAI,KAAK,MAAMJ,EAAGD,CAAE,EAAIM,GAAU,IAAM,IAChD,OAAO,IAAIhB,GAAUe,EAAI,EAAIA,EAAI,IAAMA,EAAG,EAAGT,EAAGP,EAAE,OAAO,CAC3D,CAEe,SAARkB,GAA2BF,EAAGG,EAAGZ,EAAGa,EAAS,CAClD,OAAO,UAAU,SAAW,EAAIrB,IAAiBiB,CAAC,EAAI,IAAIf,GAAUe,EAAGG,EAAGZ,EAAGa,GAAkB,CAAW,CAC5G,CAEO,SAASnB,GAAUe,EAAGG,EAAGZ,EAAGa,EAAS,CAC1C,KAAK,EAAI,CAACJ,EACV,KAAK,EAAI,CAACG,EACV,KAAK,EAAI,CAACZ,EACV,KAAK,QAAU,CAACa,CAClB,CApCA,IAIIC,GACAC,GACAR,GACAC,GACAF,GACAJ,GACAC,GACAF,GAXJe,GAAAC,GAAA,KAAAC,KACAC,KACAC,KAEIN,GAAI,QACJC,GAAI,QACJR,GAAI,QACJC,GAAI,QACJF,GAAI,QACJJ,GAAKI,GAAIE,GACTL,GAAKG,GAAIS,GACTd,GAAQc,GAAIR,GAAIC,GAAIM,GA2BxBO,GAAO3B,GAAWiB,GAAWW,GAAOC,GAAO,CACzC,SAASlB,EAAG,CACV,OAAAA,EAAIA,GAAK,KAAOmB,GAAW,KAAK,IAAIA,GAAUnB,CAAC,EACxC,IAAIX,GAAU,KAAK,EAAG,KAAK,EAAG,KAAK,EAAIW,EAAG,KAAK,OAAO,CAC/D,EACA,OAAOA,EAAG,CACR,OAAAA,EAAIA,GAAK,KAAOoB,GAAS,KAAK,IAAIA,GAAQpB,CAAC,EACpC,IAAIX,GAAU,KAAK,EAAG,KAAK,EAAG,KAAK,EAAIW,EAAG,KAAK,OAAO,CAC/D,EACA,KAAM,CACJ,IAAII,EAAI,MAAM,KAAK,CAAC,EAAI,GAAK,KAAK,EAAI,KAAOiB,GACzC1B,EAAI,CAAC,KAAK,EACV2B,EAAI,MAAM,KAAK,CAAC,EAAI,EAAI,KAAK,EAAI3B,GAAK,EAAIA,GAC1C4B,EAAO,KAAK,IAAInB,CAAC,EACjBoB,EAAO,KAAK,IAAIpB,CAAC,EACrB,OAAO,IAAId,GACT,KAAOK,EAAI2B,GAAKb,GAAIc,EAAOb,GAAIc,IAC/B,KAAO7B,EAAI2B,GAAKpB,GAAIqB,EAAOpB,GAAIqB,IAC/B,KAAO7B,EAAI2B,GAAKrB,GAAIsB,IACpB,KAAK,OACP,CACF,CACF,CAAC,CAAC,IC5DF,IAAAE,GAAA,GAAAC,GAAAD,GAAA,WAAAE,GAAA,cAAAC,GAAA,SAAAC,GAAA,QAAAC,GAAA,QAAAC,GAAA,QAAAC,GAAA,QAAAC,GAAA,QAAAC,KAAA,IAAAC,GAAAC,GAAA,KAAAC,KACAC,KACAC,OCFO,SAASC,GAAMC,EAAIC,EAAIC,EAAIC,EAAIC,EAAI,CACxC,IAAIC,EAAKL,EAAKA,EAAIM,EAAKD,EAAKL,EAC5B,QAAS,EAAI,EAAIA,EAAK,EAAIK,EAAKC,GAAML,GAC9B,EAAI,EAAII,EAAK,EAAIC,GAAMJ,GACvB,EAAI,EAAIF,EAAK,EAAIK,EAAK,EAAIC,GAAMH,EACjCG,EAAKF,GAAM,CACnB,CAEe,SAARG,GAAiBC,EAAQ,CAC9B,IAAIC,EAAID,EAAO,OAAS,EACxB,OAAO,SAASE,EAAG,CACjB,IAAIC,EAAID,GAAK,EAAKA,EAAI,EAAKA,GAAK,GAAKA,EAAI,EAAGD,EAAI,GAAK,KAAK,MAAMC,EAAID,CAAC,EACjEP,EAAKM,EAAOG,CAAC,EACbR,EAAKK,EAAOG,EAAI,CAAC,EACjBV,EAAKU,EAAI,EAAIH,EAAOG,EAAI,CAAC,EAAI,EAAIT,EAAKC,EACtCC,EAAKO,EAAIF,EAAI,EAAID,EAAOG,EAAI,CAAC,EAAI,EAAIR,EAAKD,EAC9C,OAAOH,IAAOW,EAAIC,EAAIF,GAAKA,EAAGR,EAAIC,EAAIC,EAAIC,CAAE,CAC9C,CACF,CAlBA,IAAAQ,GAAAC,GAAA,QCEe,SAARC,GAAiBC,EAAQ,CAC9B,IAAIC,EAAID,EAAO,OACf,OAAO,SAASE,EAAG,CACjB,IAAIC,EAAI,KAAK,QAAQD,GAAK,GAAK,EAAI,EAAEA,EAAIA,GAAKD,CAAC,EAC3CG,EAAKJ,GAAQG,EAAIF,EAAI,GAAKA,CAAC,EAC3BI,EAAKL,EAAOG,EAAIF,CAAC,EACjBK,EAAKN,GAAQG,EAAI,GAAKF,CAAC,EACvBM,EAAKP,GAAQG,EAAI,GAAKF,CAAC,EAC3B,OAAOO,IAAON,EAAIC,EAAIF,GAAKA,EAAGG,EAAIC,EAAIC,EAAIC,CAAE,CAC9C,CACF,CAZA,IAAAE,GAAAC,GAAA,KAAAC,OCAA,IAAOC,GAAPC,GAAAC,GAAA,KAAOF,GAAQG,GAAK,IAAMA,ICE1B,SAASC,GAAOC,EAAGC,EAAG,CACpB,OAAO,SAASC,EAAG,CACjB,OAAOF,EAAIE,EAAID,CACjB,CACF,CAEA,SAASE,IAAYH,EAAGI,EAAGC,EAAG,CAC5B,OAAOL,EAAI,KAAK,IAAIA,EAAGK,CAAC,EAAGD,EAAI,KAAK,IAAIA,EAAGC,CAAC,EAAIL,EAAGK,EAAI,EAAIA,EAAG,SAASH,EAAG,CACxE,OAAO,KAAK,IAAIF,EAAIE,EAAIE,EAAGC,CAAC,CAC9B,CACF,CAEO,SAASC,GAAIN,EAAGI,EAAG,CACxB,IAAIH,EAAIG,EAAIJ,EACZ,OAAOC,EAAIF,GAAOC,EAAGC,EAAI,KAAOA,EAAI,KAAOA,EAAI,IAAM,KAAK,MAAMA,EAAI,GAAG,EAAIA,CAAC,EAAIM,GAAS,MAAMP,CAAC,EAAII,EAAIJ,CAAC,CAC3G,CAEO,SAASQ,GAAMH,EAAG,CACvB,OAAQA,EAAI,CAACA,IAAO,EAAII,GAAU,SAAST,EAAGI,EAAG,CAC/C,OAAOA,EAAIJ,EAAIG,IAAYH,EAAGI,EAAGC,CAAC,EAAIE,GAAS,MAAMP,CAAC,EAAII,EAAIJ,CAAC,CACjE,CACF,CAEe,SAARS,GAAyBT,EAAGI,EAAG,CACpC,IAAIH,EAAIG,EAAIJ,EACZ,OAAOC,EAAIF,GAAOC,EAAGC,CAAC,EAAIM,GAAS,MAAMP,CAAC,EAAII,EAAIJ,CAAC,CACrD,CA5BA,IAAAU,GAAAC,GAAA,KAAAC,OC2BA,SAASC,GAAUC,EAAQ,CACzB,OAAO,SAASC,EAAQ,CACtB,IAAIC,EAAID,EAAO,OACXE,EAAI,IAAI,MAAMD,CAAC,EACfE,EAAI,IAAI,MAAMF,CAAC,EACfG,EAAI,IAAI,MAAMH,CAAC,EACfI,EAAGC,EACP,IAAKD,EAAI,EAAGA,EAAIJ,EAAG,EAAEI,EACnBC,EAAQC,GAASP,EAAOK,CAAC,CAAC,EAC1BH,EAAEG,CAAC,EAAIC,EAAM,GAAK,EAClBH,EAAEE,CAAC,EAAIC,EAAM,GAAK,EAClBF,EAAEC,CAAC,EAAIC,EAAM,GAAK,EAEpB,OAAAJ,EAAIH,EAAOG,CAAC,EACZC,EAAIJ,EAAOI,CAAC,EACZC,EAAIL,EAAOK,CAAC,EACZE,EAAM,QAAU,EACT,SAASE,EAAG,CACjB,OAAAF,EAAM,EAAIJ,EAAEM,CAAC,EACbF,EAAM,EAAIH,EAAEK,CAAC,EACbF,EAAM,EAAIF,EAAEI,CAAC,EACNF,EAAQ,EACjB,CACF,CACF,CAnDA,IAKOG,GAgDIC,GACAC,GAtDXC,GAAAC,GAAA,KAAAC,KACAC,KACAC,KACAC,KAEOR,GAAS,SAASS,EAASC,EAAG,CACnC,IAAIb,EAAQc,GAAMD,CAAC,EAEnB,SAASZ,EAAIc,EAAOC,EAAK,CACvB,IAAIpB,EAAII,GAAOe,EAAQd,GAASc,CAAK,GAAG,GAAIC,EAAMf,GAASe,CAAG,GAAG,CAAC,EAC9DnB,EAAIG,EAAMe,EAAM,EAAGC,EAAI,CAAC,EACxBlB,EAAIE,EAAMe,EAAM,EAAGC,EAAI,CAAC,EACxBC,EAAUC,GAAQH,EAAM,QAASC,EAAI,OAAO,EAChD,OAAO,SAASd,EAAG,CACjB,OAAAa,EAAM,EAAInB,EAAEM,CAAC,EACba,EAAM,EAAIlB,EAAEK,CAAC,EACba,EAAM,EAAIjB,EAAEI,CAAC,EACba,EAAM,QAAUE,EAAQf,CAAC,EAClBa,EAAQ,EACjB,CACF,CAEA,OAAAd,EAAI,MAAQW,EAELX,CACT,EAAG,CAAC,EA4BOG,GAAWZ,GAAU2B,EAAK,EAC1Bd,GAAiBb,GAAU4B,EAAW,ICtDlC,SAARC,GAAiBC,EAAGC,EAAG,CACvBA,IAAGA,EAAI,CAAC,GACb,IAAIC,EAAIF,EAAI,KAAK,IAAIC,EAAE,OAAQD,EAAE,MAAM,EAAI,EACvCG,EAAIF,EAAE,MAAM,EACZ,EACJ,OAAO,SAASG,EAAG,CACjB,IAAK,EAAI,EAAG,EAAIF,EAAG,EAAE,EAAGC,EAAE,CAAC,EAAIH,EAAE,CAAC,GAAK,EAAII,GAAKH,EAAE,CAAC,EAAIG,EACvD,OAAOD,CACT,CACF,CAEO,SAASE,GAAcC,EAAG,CAC/B,OAAO,YAAY,OAAOA,CAAC,GAAK,EAAEA,aAAa,SACjD,CAbA,IAAAC,GAAAC,GAAA,QCGe,SAARC,GAAiBC,EAAGC,EAAG,CAC5B,OAAQC,GAAcD,CAAC,EAAIE,GAAcC,IAAcJ,EAAGC,CAAC,CAC7D,CAEO,SAASG,GAAaJ,EAAGC,EAAG,CACjC,IAAII,EAAKJ,EAAIA,EAAE,OAAS,EACpBK,EAAKN,EAAI,KAAK,IAAIK,EAAIL,EAAE,MAAM,EAAI,EAClCO,EAAI,IAAI,MAAMD,CAAE,EAChBE,EAAI,IAAI,MAAMH,CAAE,EAChBI,EAEJ,IAAKA,EAAI,EAAGA,EAAIH,EAAI,EAAEG,EAAGF,EAAEE,CAAC,EAAIC,GAAMV,EAAES,CAAC,EAAGR,EAAEQ,CAAC,CAAC,EAChD,KAAOA,EAAIJ,EAAI,EAAEI,EAAGD,EAAEC,CAAC,EAAIR,EAAEQ,CAAC,EAE9B,OAAO,SAASE,EAAG,CACjB,IAAKF,EAAI,EAAGA,EAAIH,EAAI,EAAEG,EAAGD,EAAEC,CAAC,EAAIF,EAAEE,CAAC,EAAEE,CAAC,EACtC,OAAOH,CACT,CACF,CArBA,IAAAI,GAAAC,GAAA,KAAAC,KACAC,OCDe,SAARC,GAAiBC,EAAGC,EAAG,CAC5B,IAAIC,EAAI,IAAI,KACZ,OAAOF,EAAI,CAACA,EAAGC,EAAI,CAACA,EAAG,SAASE,EAAG,CACjC,OAAOD,EAAE,QAAQF,GAAK,EAAIG,GAAKF,EAAIE,CAAC,EAAGD,CACzC,CACF,CALA,IAAAE,GAAAC,GAAA,QCAe,SAARC,GAAiBC,EAAGC,EAAG,CAC5B,OAAOD,EAAI,CAACA,EAAGC,EAAI,CAACA,EAAG,SAASC,EAAG,CACjC,OAAOF,GAAK,EAAIE,GAAKD,EAAIC,CAC3B,CACF,CAJA,IAAAC,GAAAC,GAAA,QCEe,SAARC,GAAiBC,EAAGC,EAAG,CAC5B,IAAIC,EAAI,CAAC,EACLC,EAAI,CAAC,EACLC,GAEAJ,IAAM,MAAQ,OAAOA,GAAM,YAAUA,EAAI,CAAC,IAC1CC,IAAM,MAAQ,OAAOA,GAAM,YAAUA,EAAI,CAAC,GAE9C,IAAKG,KAAKH,EACJG,KAAKJ,EACPE,EAAEE,CAAC,EAAIC,GAAML,EAAEI,CAAC,EAAGH,EAAEG,CAAC,CAAC,EAEvBD,EAAEC,CAAC,EAAIH,EAAEG,CAAC,EAId,OAAO,SAASE,EAAG,CACjB,IAAKF,KAAKF,EAAGC,EAAEC,CAAC,EAAIF,EAAEE,CAAC,EAAEE,CAAC,EAC1B,OAAOH,CACT,CACF,CAtBA,IAAAI,GAAAC,GAAA,KAAAC,OCKA,SAASC,IAAKC,EAAG,CACf,OAAO,UAAW,CAChB,OAAOA,CACT,CACF,CAEA,SAASC,IAAID,EAAG,CACd,OAAO,SAAS,EAAG,CACjB,OAAOA,EAAE,CAAC,EAAI,EAChB,CACF,CAEe,SAARE,GAAiBC,EAAGH,EAAG,CAC5B,IAAII,EAAKC,GAAI,UAAYC,GAAI,UAAY,EACrCC,EACAC,EACAC,EACAC,EAAI,GACJ,EAAI,CAAC,EACLC,EAAI,CAAC,EAMT,IAHAR,EAAIA,EAAI,GAAIH,EAAIA,EAAI,IAGZO,EAAKF,GAAI,KAAKF,CAAC,KACfK,EAAKF,GAAI,KAAKN,CAAC,KAChBS,EAAKD,EAAG,OAASJ,IACpBK,EAAKT,EAAE,MAAMI,EAAIK,CAAE,EACf,EAAEC,CAAC,EAAG,EAAEA,CAAC,GAAKD,EACb,EAAE,EAAEC,CAAC,EAAID,IAEXF,EAAKA,EAAG,CAAC,MAAQC,EAAKA,EAAG,CAAC,GACzB,EAAEE,CAAC,EAAG,EAAEA,CAAC,GAAKF,EACb,EAAE,EAAEE,CAAC,EAAIF,GAEd,EAAE,EAAEE,CAAC,EAAI,KACTC,EAAE,KAAK,CAAC,EAAGD,EAAG,EAAGE,GAAOL,EAAIC,CAAE,CAAC,CAAC,GAElCJ,EAAKE,GAAI,UAIX,OAAIF,EAAKJ,EAAE,SACTS,EAAKT,EAAE,MAAMI,CAAE,EACX,EAAEM,CAAC,EAAG,EAAEA,CAAC,GAAKD,EACb,EAAE,EAAEC,CAAC,EAAID,GAKT,EAAE,OAAS,EAAKE,EAAE,CAAC,EACpBV,IAAIU,EAAE,CAAC,EAAE,CAAC,EACVZ,IAAKC,CAAC,GACLA,EAAIW,EAAE,OAAQ,SAASE,EAAG,CACzB,QAASH,EAAI,EAAGI,EAAGJ,EAAIV,EAAG,EAAEU,EAAG,GAAGI,EAAIH,EAAED,CAAC,GAAG,CAAC,EAAII,EAAE,EAAED,CAAC,EACtD,OAAO,EAAE,KAAK,EAAE,CAClB,EACR,CA/DA,IAEIR,GACAC,GAHJS,GAAAC,GAAA,KAAAC,KAEIZ,GAAM,8CACNC,GAAM,IAAI,OAAOD,GAAI,OAAQ,GAAG,ICOrB,SAARa,GAAiBC,EAAGC,EAAG,CAC5B,IAAIC,EAAI,OAAOD,EAAGE,EAClB,OAAOF,GAAK,MAAQC,IAAM,UAAYE,GAASH,CAAC,GACzCC,IAAM,SAAWG,GAClBH,IAAM,UAAaC,EAAIG,GAAML,CAAC,IAAMA,EAAIE,EAAGI,IAAOC,GAClDP,aAAaK,GAAQC,GACrBN,aAAa,KAAOQ,GACpBC,GAAcT,CAAC,EAAIU,GACnB,MAAM,QAAQV,CAAC,EAAIW,GACnB,OAAOX,EAAE,SAAY,YAAc,OAAOA,EAAE,UAAa,YAAc,MAAMA,CAAC,EAAIY,GAClFR,IAAQL,EAAGC,CAAC,CACpB,CArBA,IAAAa,GAAAC,GAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,OCRe,SAARC,GAAiBC,EAAO,CAC7B,IAAIC,EAAID,EAAM,OACd,OAAO,SAASE,EAAG,CACjB,OAAOF,EAAM,KAAK,IAAI,EAAG,KAAK,IAAIC,EAAI,EAAG,KAAK,MAAMC,EAAID,CAAC,CAAC,CAAC,CAAC,CAC9D,CACF,CALA,IAAAE,GAAAC,GAAA,QCEe,SAARC,GAAiBC,EAAGC,EAAG,CAC5B,IAAIC,EAAIC,GAAI,CAACH,EAAG,CAACC,CAAC,EAClB,OAAO,SAASG,EAAG,CACjB,IAAIC,EAAIH,EAAEE,CAAC,EACX,OAAOC,EAAI,IAAM,KAAK,MAAMA,EAAI,GAAG,CACrC,CACF,CARA,IAAAC,GAAAC,GAAA,KAAAC,OCAe,SAARC,GAAiBC,EAAGC,EAAG,CAC5B,OAAOD,EAAI,CAACA,EAAGC,EAAI,CAACA,EAAG,SAASC,EAAG,CACjC,OAAO,KAAK,MAAMF,GAAK,EAAIE,GAAKD,EAAIC,CAAC,CACvC,CACF,CAJA,IAAAC,GAAAC,GAAA,QCWe,SAARC,GAAiBC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAG,CACxC,IAAIC,EAAQC,EAAQC,EACpB,OAAIF,EAAS,KAAK,KAAKN,EAAIA,EAAIC,EAAIA,CAAC,KAAGD,GAAKM,EAAQL,GAAKK,IACrDE,EAAQR,EAAIE,EAAID,EAAIE,KAAGD,GAAKF,EAAIQ,EAAOL,GAAKF,EAAIO,IAChDD,EAAS,KAAK,KAAKL,EAAIA,EAAIC,EAAIA,CAAC,KAAGD,GAAKK,EAAQJ,GAAKI,EAAQC,GAASD,GACtEP,EAAIG,EAAIF,EAAIC,IAAGF,EAAI,CAACA,EAAGC,EAAI,CAACA,EAAGO,EAAQ,CAACA,EAAOF,EAAS,CAACA,GACtD,CACL,WAAYF,EACZ,WAAYC,EACZ,OAAQ,KAAK,MAAMJ,EAAGD,CAAC,EAAIS,GAC3B,MAAO,KAAK,KAAKD,CAAK,EAAIC,GAC1B,OAAQH,EACR,OAAQC,CACV,CACF,CAzBA,IAAIE,GAEOC,GAFXC,GAAAC,GAAA,KAAIH,GAAU,IAAM,KAAK,GAEdC,GAAW,CACpB,WAAY,EACZ,WAAY,EACZ,OAAQ,EACR,MAAO,EACP,OAAQ,EACR,OAAQ,CACV,ICJO,SAASG,GAASC,EAAO,CAC9B,IAAMC,EAAI,IAAK,OAAO,WAAc,WAAa,UAAY,iBAAiBD,EAAQ,EAAE,EACxF,OAAOC,EAAE,WAAaC,GAAWC,GAAUF,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,CACzE,CAEO,SAASG,GAASJ,EAAO,CAC9B,OAAIA,GAAS,KAAaE,IACrBG,KAASA,GAAU,SAAS,gBAAgB,6BAA8B,GAAG,GAClFA,GAAQ,aAAa,YAAaL,CAAK,GACjCA,EAAQK,GAAQ,UAAU,QAAQ,YAAY,IACpDL,EAAQA,EAAM,OACPG,GAAUH,EAAM,EAAGA,EAAM,EAAGA,EAAM,EAAGA,EAAM,EAAGA,EAAM,EAAGA,EAAM,CAAC,GAFNE,GAGjE,CAjBA,IAEIG,GAFJC,GAAAC,GAAA,KAAAC,OCGA,SAASC,GAAqBC,EAAOC,EAASC,EAASC,EAAU,CAE/D,SAASC,EAAIC,EAAG,CACd,OAAOA,EAAE,OAASA,EAAE,IAAI,EAAI,IAAM,EACpC,CAEA,SAASC,EAAUC,EAAIC,EAAIC,EAAIC,EAAIL,EAAGM,EAAG,CACvC,GAAIJ,IAAOE,GAAMD,IAAOE,EAAI,CAC1B,IAAIE,EAAIP,EAAE,KAAK,aAAc,KAAMJ,EAAS,KAAMC,CAAO,EACzDS,EAAE,KAAK,CAAC,EAAGC,EAAI,EAAG,EAAGC,GAAON,EAAIE,CAAE,CAAC,EAAG,CAAC,EAAGG,EAAI,EAAG,EAAGC,GAAOL,EAAIE,CAAE,CAAC,CAAC,CACrE,MAAWD,GAAMC,IACfL,EAAE,KAAK,aAAeI,EAAKR,EAAUS,EAAKR,CAAO,CAErD,CAEA,SAASY,EAAOC,EAAGC,EAAGX,EAAGM,EAAG,CACtBI,IAAMC,GACJD,EAAIC,EAAI,IAAKA,GAAK,IAAcA,EAAID,EAAI,MAAKA,GAAK,KACtDJ,EAAE,KAAK,CAAC,EAAGN,EAAE,KAAKD,EAAIC,CAAC,EAAI,UAAW,KAAMF,CAAQ,EAAI,EAAG,EAAGU,GAAOE,EAAGC,CAAC,CAAC,CAAC,GAClEA,GACTX,EAAE,KAAKD,EAAIC,CAAC,EAAI,UAAYW,EAAIb,CAAQ,CAE5C,CAEA,SAASc,EAAMF,EAAGC,EAAGX,EAAGM,EAAG,CACrBI,IAAMC,EACRL,EAAE,KAAK,CAAC,EAAGN,EAAE,KAAKD,EAAIC,CAAC,EAAI,SAAU,KAAMF,CAAQ,EAAI,EAAG,EAAGU,GAAOE,EAAGC,CAAC,CAAC,CAAC,EACjEA,GACTX,EAAE,KAAKD,EAAIC,CAAC,EAAI,SAAWW,EAAIb,CAAQ,CAE3C,CAEA,SAASe,EAAMX,EAAIC,EAAIC,EAAIC,EAAIL,EAAGM,EAAG,CACnC,GAAIJ,IAAOE,GAAMD,IAAOE,EAAI,CAC1B,IAAIE,EAAIP,EAAE,KAAKD,EAAIC,CAAC,EAAI,SAAU,KAAM,IAAK,KAAM,GAAG,EACtDM,EAAE,KAAK,CAAC,EAAGC,EAAI,EAAG,EAAGC,GAAON,EAAIE,CAAE,CAAC,EAAG,CAAC,EAAGG,EAAI,EAAG,EAAGC,GAAOL,EAAIE,CAAE,CAAC,CAAC,CACrE,MAAWD,IAAO,GAAKC,IAAO,IAC5BL,EAAE,KAAKD,EAAIC,CAAC,EAAI,SAAWI,EAAK,IAAMC,EAAK,GAAG,CAElD,CAEA,OAAO,SAASK,EAAGC,EAAG,CACpB,IAAIX,EAAI,CAAC,EACLM,EAAI,CAAC,EACT,OAAAI,EAAIf,EAAMe,CAAC,EAAGC,EAAIhB,EAAMgB,CAAC,EACzBV,EAAUS,EAAE,WAAYA,EAAE,WAAYC,EAAE,WAAYA,EAAE,WAAYX,EAAGM,CAAC,EACtEG,EAAOC,EAAE,OAAQC,EAAE,OAAQX,EAAGM,CAAC,EAC/BM,EAAMF,EAAE,MAAOC,EAAE,MAAOX,EAAGM,CAAC,EAC5BO,EAAMH,EAAE,OAAQA,EAAE,OAAQC,EAAE,OAAQA,EAAE,OAAQX,EAAGM,CAAC,EAClDI,EAAIC,EAAI,KACD,SAASG,EAAG,CAEjB,QADIP,EAAI,GAAIQ,EAAIT,EAAE,OAAQU,EACnB,EAAET,EAAIQ,GAAGf,GAAGgB,EAAIV,EAAEC,CAAC,GAAG,CAAC,EAAIS,EAAE,EAAEF,CAAC,EACvC,OAAOd,EAAE,KAAK,EAAE,CAClB,CACF,CACF,CA3DA,IA6DWiB,GACAC,GA9DXC,GAAAC,GAAA,KAAAC,KACAC,KA4DWL,GAA0BvB,GAAqB6B,GAAU,OAAQ,MAAO,MAAM,EAC9EL,GAA0BxB,GAAqB8B,GAAU,KAAM,IAAK,GAAG,IC5DlF,SAASC,GAAKC,EAAG,CACf,QAASA,EAAI,KAAK,IAAIA,CAAC,GAAK,EAAIA,GAAK,CACvC,CAEA,SAASC,IAAKD,EAAG,CACf,QAASA,EAAI,KAAK,IAAIA,CAAC,GAAK,EAAIA,GAAK,CACvC,CAEA,SAASE,IAAKF,EAAG,CACf,QAASA,EAAI,KAAK,IAAI,EAAIA,CAAC,GAAK,IAAMA,EAAI,EAC5C,CAZA,IAAIG,IAcGC,GAdPC,GAAAC,GAAA,KAAIH,IAAW,MAcRC,GAAS,SAASG,EAAQC,EAAKC,EAAMC,EAAM,CAIhD,SAASC,EAAKC,EAAIC,EAAI,CACpB,IAAIC,EAAMF,EAAG,CAAC,EAAGG,EAAMH,EAAG,CAAC,EAAGI,EAAKJ,EAAG,CAAC,EACnCK,EAAMJ,EAAG,CAAC,EAAGK,EAAML,EAAG,CAAC,EAAGM,EAAKN,EAAG,CAAC,EACnCO,EAAKH,EAAMH,EACXO,EAAKH,EAAMH,EACXO,EAAKF,EAAKA,EAAKC,EAAKA,EACpBE,EACAC,EAGJ,GAAIF,EAAKnB,IACPqB,EAAI,KAAK,IAAIL,EAAKH,CAAE,EAAIR,EACxBe,EAAI,SAASE,EAAG,CACd,MAAO,CACLX,EAAMW,EAAIL,EACVL,EAAMU,EAAIJ,EACVL,EAAK,KAAK,IAAIR,EAAMiB,EAAID,CAAC,CAC3B,CACF,MAIG,CACH,IAAIE,EAAK,KAAK,KAAKJ,CAAE,EACjBK,GAAMR,EAAKA,EAAKH,EAAKA,EAAKN,EAAOY,IAAO,EAAIN,EAAKP,EAAOiB,GACxDE,GAAMT,EAAKA,EAAKH,EAAKA,EAAKN,EAAOY,IAAO,EAAIH,EAAKV,EAAOiB,GACxDG,EAAK,KAAK,IAAI,KAAK,KAAKF,EAAKA,EAAK,CAAC,EAAIA,CAAE,EACzCG,EAAK,KAAK,IAAI,KAAK,KAAKF,EAAKA,EAAK,CAAC,EAAIA,CAAE,EAC7CJ,GAAKM,EAAKD,GAAMrB,EAChBe,EAAI,SAASE,EAAG,CACd,IAAIM,EAAIN,EAAID,EACRQ,EAASjC,GAAK8B,CAAE,EAChBI,EAAIjB,GAAMP,EAAOiB,IAAOM,EAAS9B,IAAKM,EAAMuB,EAAIF,CAAE,EAAI5B,IAAK4B,CAAE,GACjE,MAAO,CACLf,EAAMmB,EAAIb,EACVL,EAAMkB,EAAIZ,EACVL,EAAKgB,EAASjC,GAAKS,EAAMuB,EAAIF,CAAE,CACjC,CACF,CACF,CAEA,OAAAN,EAAE,SAAWC,EAAI,IAAOhB,EAAM,KAAK,MAE5Be,CACT,CAEA,OAAAZ,EAAK,IAAM,SAASuB,EAAG,CACrB,IAAIC,EAAK,KAAK,IAAI,KAAM,CAACD,CAAC,EAAGE,EAAKD,EAAKA,EAAIE,EAAKD,EAAKA,EACrD,OAAO7B,EAAQ4B,EAAIC,EAAIC,CAAE,CAC3B,EAEO1B,CACT,EAAG,KAAK,MAAO,EAAG,CAAC,ICnEnB,SAAS2B,GAAIC,EAAK,CAChB,OAAO,SAASC,EAAOC,EAAK,CAC1B,IAAIC,EAAIH,GAAKC,EAAQF,GAASE,CAAK,GAAG,GAAIC,EAAMH,GAASG,CAAG,GAAG,CAAC,EAC5DE,EAAIC,GAAMJ,EAAM,EAAGC,EAAI,CAAC,EACxBI,EAAID,GAAMJ,EAAM,EAAGC,EAAI,CAAC,EACxBK,EAAUF,GAAMJ,EAAM,QAASC,EAAI,OAAO,EAC9C,OAAO,SAASM,EAAG,CACjB,OAAAP,EAAM,EAAIE,EAAEK,CAAC,EACbP,EAAM,EAAIG,EAAEI,CAAC,EACbP,EAAM,EAAIK,EAAEE,CAAC,EACbP,EAAM,QAAUM,EAAQC,CAAC,EAClBP,EAAQ,EACjB,CACF,CACF,CAjBA,IAmBOQ,GACIC,GApBXC,GAAAC,GAAA,KAAAC,KACAC,KAkBOL,GAAQV,GAAIC,EAAG,EACXU,GAAUX,GAAIM,EAAK,ICjBf,SAARU,GAAqBC,EAAOC,EAAK,CACtC,IAAIC,EAAIC,IAAOH,EAAQD,GAASC,CAAK,GAAG,GAAIC,EAAMF,GAASE,CAAG,GAAG,CAAC,EAC9DG,EAAID,GAAMH,EAAM,EAAGC,EAAI,CAAC,EACxBI,EAAIF,GAAMH,EAAM,EAAGC,EAAI,CAAC,EACxBK,EAAUH,GAAMH,EAAM,QAASC,EAAI,OAAO,EAC9C,OAAO,SAASM,EAAG,CACjB,OAAAP,EAAM,EAAIE,EAAEK,CAAC,EACbP,EAAM,EAAII,EAAEG,CAAC,EACbP,EAAM,EAAIK,EAAEE,CAAC,EACbP,EAAM,QAAUM,EAAQC,CAAC,EAClBP,EAAQ,EACjB,CACF,CAfA,IAAAQ,GAAAC,GAAA,KAAAC,KACAC,OCEA,SAASC,GAAIC,EAAK,CAChB,OAAO,SAASC,EAAOC,EAAK,CAC1B,IAAIC,EAAIH,GAAKC,EAAQF,GAASE,CAAK,GAAG,GAAIC,EAAMH,GAASG,CAAG,GAAG,CAAC,EAC5DE,EAAIC,GAAMJ,EAAM,EAAGC,EAAI,CAAC,EACxBI,EAAID,GAAMJ,EAAM,EAAGC,EAAI,CAAC,EACxBK,EAAUF,GAAMJ,EAAM,QAASC,EAAI,OAAO,EAC9C,OAAO,SAASM,EAAG,CACjB,OAAAP,EAAM,EAAIE,EAAEK,CAAC,EACbP,EAAM,EAAIG,EAAEI,CAAC,EACbP,EAAM,EAAIK,EAAEE,CAAC,EACbP,EAAM,QAAUM,EAAQC,CAAC,EAClBP,EAAQ,EACjB,CACF,CACF,CAjBA,IAmBOQ,GACIC,GApBXC,GAAAC,GAAA,KAAAC,KACAC,KAkBOL,GAAQV,GAAIC,EAAG,EACXU,GAAUX,GAAIM,EAAK,ICjB9B,SAASU,GAAUC,EAAK,CACtB,OAAQ,SAASC,EAAeC,EAAG,CACjCA,EAAI,CAACA,EAEL,SAASH,EAAUI,EAAOC,EAAK,CAC7B,IAAIC,EAAIL,GAAKG,EAAQJ,GAAeI,CAAK,GAAG,GAAIC,EAAML,GAAeK,CAAG,GAAG,CAAC,EACxE,EAAIE,GAAMH,EAAM,EAAGC,EAAI,CAAC,EACxBG,EAAID,GAAMH,EAAM,EAAGC,EAAI,CAAC,EACxBI,EAAUF,GAAMH,EAAM,QAASC,EAAI,OAAO,EAC9C,OAAO,SAASK,EAAG,CACjB,OAAAN,EAAM,EAAIE,EAAEI,CAAC,EACbN,EAAM,EAAI,EAAEM,CAAC,EACbN,EAAM,EAAII,EAAE,KAAK,IAAIE,EAAGP,CAAC,CAAC,EAC1BC,EAAM,QAAUK,EAAQC,CAAC,EAClBN,EAAQ,EACjB,CACF,CAEA,OAAAJ,EAAU,MAAQE,EAEXF,CACT,EAAG,CAAC,CACN,CAzBA,IA2BOW,GACIC,GA5BXC,GAAAC,GAAA,KAAAC,KACAC,KA0BOL,GAAQX,GAAUC,EAAG,EACjBW,GAAgBZ,GAAUO,EAAK,IC1B3B,SAARU,GAA2BC,EAAaC,EAAQ,CACjDA,IAAW,SAAWA,EAASD,EAAaA,EAAcE,IAE9D,QADIC,EAAI,EAAG,EAAIF,EAAO,OAAS,EAAGG,EAAIH,EAAO,CAAC,EAAGI,EAAI,IAAI,MAAM,EAAI,EAAI,EAAI,CAAC,EACrEF,EAAI,GAAGE,EAAEF,CAAC,EAAIH,EAAYI,EAAGA,EAAIH,EAAO,EAAEE,CAAC,CAAC,EACnD,OAAO,SAASG,EAAG,CACjB,IAAIH,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAI,EAAG,KAAK,MAAMG,GAAK,CAAC,CAAC,CAAC,EACvD,OAAOD,EAAEF,CAAC,EAAEG,EAAIH,CAAC,CACnB,CACF,CAVA,IAAAI,GAAAC,GAAA,KAAAC,OCAe,SAARC,GAAiBC,EAAcC,EAAG,CAEvC,QADIC,EAAU,IAAI,MAAMD,CAAC,EAChBE,EAAI,EAAGA,EAAIF,EAAG,EAAEE,EAAGD,EAAQC,CAAC,EAAIH,EAAaG,GAAKF,EAAI,EAAE,EACjE,OAAOC,CACT,CAJA,IAAAE,GAAAC,GAAA,QCAA,IAAAC,GAAA,GAAAC,GAAAD,GAAA,iBAAAE,GAAA,qBAAAC,GAAA,qBAAAC,GAAA,2BAAAC,GAAA,yBAAAC,GAAA,6BAAAC,GAAA,oBAAAC,GAAA,wBAAAC,GAAA,mBAAAC,GAAA,uBAAAC,GAAA,mBAAAC,GAAA,uBAAAC,GAAA,mBAAAC,GAAA,mBAAAC,GAAA,sBAAAC,GAAA,2BAAAC,GAAA,sBAAAC,GAAA,mBAAAC,GAAA,wBAAAC,GAAA,8BAAAC,GAAA,qBAAAC,GAAA,sBAAAC,GAAA,4BAAAC,GAAA,4BAAAC,GAAA,oBAAAC,GAAA,cAAAC,GAAA,aAAAC,KAAA,IAAAC,GAAAC,GAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,OCpBe,SAARC,GAA2BC,EAAG,CACnC,OAAO,UAAW,CAChB,OAAOA,CACT,CACF,CAJA,IAAAC,GAAAC,GAAA,QCAe,SAARC,GAAwBC,EAAG,CAChC,MAAO,CAACA,CACV,CAFA,IAAAC,GAAAC,GAAA,QCOO,SAASC,GAASC,EAAG,CAC1B,OAAOA,CACT,CAEA,SAASC,GAAUC,EAAGC,EAAG,CACvB,OAAQA,GAAMD,EAAI,CAACA,GACb,SAASF,EAAG,CAAE,OAAQA,EAAIE,GAAKC,CAAG,EAClCC,GAAS,MAAMD,CAAC,EAAI,IAAM,EAAG,CACrC,CAEA,SAASE,IAAQH,EAAGC,EAAG,CACrB,IAAIG,EACJ,OAAIJ,EAAIC,IAAGG,EAAIJ,EAAGA,EAAIC,EAAGA,EAAIG,GACtB,SAASN,EAAG,CAAE,OAAO,KAAK,IAAIE,EAAG,KAAK,IAAIC,EAAGH,CAAC,CAAC,CAAG,CAC3D,CAIA,SAASO,IAAMC,EAAQC,EAAOC,EAAa,CACzC,IAAIC,EAAKH,EAAO,CAAC,EAAGI,EAAKJ,EAAO,CAAC,EAAGK,EAAKJ,EAAM,CAAC,EAAGK,EAAKL,EAAM,CAAC,EAC/D,OAAIG,EAAKD,GAAIA,EAAKV,GAAUW,EAAID,CAAE,EAAGE,EAAKH,EAAYI,EAAID,CAAE,IACvDF,EAAKV,GAAUU,EAAIC,CAAE,EAAGC,EAAKH,EAAYG,EAAIC,CAAE,GAC7C,SAASd,EAAG,CAAE,OAAOa,EAAGF,EAAGX,CAAC,CAAC,CAAG,CACzC,CAEA,SAASe,IAAQP,EAAQC,EAAOC,EAAa,CAC3C,IAAIM,EAAI,KAAK,IAAIR,EAAO,OAAQC,EAAM,MAAM,EAAI,EAC5CQ,EAAI,IAAI,MAAMD,CAAC,EACfE,EAAI,IAAI,MAAMF,CAAC,EACfG,EAAI,GAQR,IALIX,EAAOQ,CAAC,EAAIR,EAAO,CAAC,IACtBA,EAASA,EAAO,MAAM,EAAE,QAAQ,EAChCC,EAAQA,EAAM,MAAM,EAAE,QAAQ,GAGzB,EAAEU,EAAIH,GACXC,EAAEE,CAAC,EAAIlB,GAAUO,EAAOW,CAAC,EAAGX,EAAOW,EAAI,CAAC,CAAC,EACzCD,EAAEC,CAAC,EAAIT,EAAYD,EAAMU,CAAC,EAAGV,EAAMU,EAAI,CAAC,CAAC,EAG3C,OAAO,SAASnB,EAAG,CACjB,IAAImB,EAAIC,GAAOZ,EAAQR,EAAG,EAAGgB,CAAC,EAAI,EAClC,OAAOE,EAAEC,CAAC,EAAEF,EAAEE,CAAC,EAAEnB,CAAC,CAAC,CACrB,CACF,CAEO,SAASqB,GAAKC,EAAQC,EAAQ,CACnC,OAAOA,EACF,OAAOD,EAAO,OAAO,CAAC,EACtB,MAAMA,EAAO,MAAM,CAAC,EACpB,YAAYA,EAAO,YAAY,CAAC,EAChC,MAAMA,EAAO,MAAM,CAAC,EACpB,QAAQA,EAAO,QAAQ,CAAC,CAC/B,CAEO,SAASE,IAAc,CAC5B,IAAIhB,EAASiB,GACThB,EAAQgB,GACRf,EAAcgB,GACdC,EACAC,EACAC,EACAC,EAAQ/B,GACRgC,EACAC,EACAC,EAEJ,SAASC,GAAU,CACjB,IAAIC,EAAI,KAAK,IAAI3B,EAAO,OAAQC,EAAM,MAAM,EAC5C,OAAIqB,IAAU/B,KAAU+B,EAAQzB,IAAQG,EAAO,CAAC,EAAGA,EAAO2B,EAAI,CAAC,CAAC,GAChEJ,EAAYI,EAAI,EAAIpB,IAAUR,IAC9ByB,EAASC,EAAQ,KACVG,CACT,CAEA,SAASA,EAAMpC,EAAG,CAChB,OAAOA,GAAK,MAAQ,MAAMA,EAAI,CAACA,CAAC,EAAI6B,GAAWG,IAAWA,EAASD,EAAUvB,EAAO,IAAImB,CAAS,EAAGlB,EAAOC,CAAW,IAAIiB,EAAUG,EAAM9B,CAAC,CAAC,CAAC,CAC/I,CAEA,OAAAoC,EAAM,OAAS,SAASC,EAAG,CACzB,OAAOP,EAAMF,GAAaK,IAAUA,EAAQF,EAAUtB,EAAOD,EAAO,IAAImB,CAAS,EAAGW,EAAiB,IAAID,CAAC,CAAC,CAAC,CAC9G,EAEAD,EAAM,OAAS,SAASG,EAAG,CACzB,OAAO,UAAU,QAAU/B,EAAS,MAAM,KAAK+B,EAAGC,EAAM,EAAGN,EAAQ,GAAK1B,EAAO,MAAM,CACvF,EAEA4B,EAAM,MAAQ,SAASG,EAAG,CACxB,OAAO,UAAU,QAAU9B,EAAQ,MAAM,KAAK8B,CAAC,EAAGL,EAAQ,GAAKzB,EAAM,MAAM,CAC7E,EAEA2B,EAAM,WAAa,SAASG,EAAG,CAC7B,OAAO9B,EAAQ,MAAM,KAAK8B,CAAC,EAAG7B,EAAc+B,GAAkBP,EAAQ,CACxE,EAEAE,EAAM,MAAQ,SAASG,EAAG,CACxB,OAAO,UAAU,QAAUT,EAAQS,EAAI,GAAOxC,GAAUmC,EAAQ,GAAKJ,IAAU/B,EACjF,EAEAqC,EAAM,YAAc,SAASG,EAAG,CAC9B,OAAO,UAAU,QAAU7B,EAAc6B,EAAGL,EAAQ,GAAKxB,CAC3D,EAEA0B,EAAM,QAAU,SAASG,EAAG,CAC1B,OAAO,UAAU,QAAUV,EAAUU,EAAGH,GAASP,CACnD,EAEO,SAASvB,EAAGoC,EAAG,CACpB,OAAAf,EAAYrB,EAAGsB,EAAcc,EACtBR,EAAQ,CACjB,CACF,CAEe,SAARS,IAA8B,CACnC,OAAOnB,GAAY,EAAEzB,GAAUA,EAAQ,CACzC,CA5HA,IAKI0B,GALJmB,GAAAC,GAAA,KAAAC,KACAA,KACAC,KACAC,KAEIvB,GAAO,CAAC,EAAG,CAAC,ICFD,SAARwB,GAA4BC,EAAOC,EAAMC,EAAOC,EAAW,CAChE,IAAIC,EAAOC,GAASL,EAAOC,EAAMC,CAAK,EAClCI,EAEJ,OADAH,EAAYI,GAAgBJ,GAAoB,IAAgB,EACxDA,EAAU,KAAM,CACtB,IAAK,IAAK,CACR,IAAIK,EAAQ,KAAK,IAAI,KAAK,IAAIR,CAAK,EAAG,KAAK,IAAIC,CAAI,CAAC,EACpD,OAAIE,EAAU,WAAa,MAAQ,CAAC,MAAMG,EAAYG,GAAgBL,EAAMI,CAAK,CAAC,IAAGL,EAAU,UAAYG,GACpGI,GAAaP,EAAWK,CAAK,CACtC,CACA,IAAK,GACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IAAK,CACJL,EAAU,WAAa,MAAQ,CAAC,MAAMG,EAAYK,GAAeP,EAAM,KAAK,IAAI,KAAK,IAAIJ,CAAK,EAAG,KAAK,IAAIC,CAAI,CAAC,CAAC,CAAC,IAAGE,EAAU,UAAYG,GAAaH,EAAU,OAAS,MAC9K,KACF,CACA,IAAK,IACL,IAAK,IAAK,CACJA,EAAU,WAAa,MAAQ,CAAC,MAAMG,EAAYM,GAAeR,CAAI,CAAC,IAAGD,EAAU,UAAYG,GAAaH,EAAU,OAAS,KAAO,GAC1I,KACF,CACF,CACA,OAAOU,GAAOV,CAAS,CACzB,CA5BA,IAAAW,GAAAC,GAAA,KAAAC,KACAA,OCIO,SAASC,GAAUC,EAAO,CAC/B,IAAIC,EAASD,EAAM,OAEnB,OAAAA,EAAM,MAAQ,SAASE,EAAO,CAC5B,IAAIC,EAAIF,EAAO,EACf,OAAOG,GAAMD,EAAE,CAAC,EAAGA,EAAEA,EAAE,OAAS,CAAC,EAAGD,GAAgB,EAAU,CAChE,EAEAF,EAAM,WAAa,SAASE,EAAOG,EAAW,CAC5C,IAAIF,EAAIF,EAAO,EACf,OAAOK,GAAWH,EAAE,CAAC,EAAGA,EAAEA,EAAE,OAAS,CAAC,EAAGD,GAAgB,GAAYG,CAAS,CAChF,EAEAL,EAAM,KAAO,SAASE,EAAO,CACvBA,GAAS,OAAMA,EAAQ,IAE3B,IAAIC,EAAIF,EAAO,EACXM,EAAK,EACLC,EAAKL,EAAE,OAAS,EAChBM,EAAQN,EAAEI,CAAE,EACZG,EAAOP,EAAEK,CAAE,EACXG,EACAC,EACAC,EAAU,GAOd,IALIH,EAAOD,IACTG,EAAOH,EAAOA,EAAQC,EAAMA,EAAOE,EACnCA,EAAOL,EAAIA,EAAKC,EAAIA,EAAKI,GAGpBC,KAAY,GAAG,CAEpB,GADAD,EAAOE,GAAcL,EAAOC,EAAMR,CAAK,EACnCU,IAASD,EACX,OAAAR,EAAEI,CAAE,EAAIE,EACRN,EAAEK,CAAE,EAAIE,EACDT,EAAOE,CAAC,EACV,GAAIS,EAAO,EAChBH,EAAQ,KAAK,MAAMA,EAAQG,CAAI,EAAIA,EACnCF,EAAO,KAAK,KAAKA,EAAOE,CAAI,EAAIA,UACvBA,EAAO,EAChBH,EAAQ,KAAK,KAAKA,EAAQG,CAAI,EAAIA,EAClCF,EAAO,KAAK,MAAMA,EAAOE,CAAI,EAAIA,MAEjC,OAEFD,EAAUC,CACZ,CAEA,OAAOZ,CACT,EAEOA,CACT,CAEe,SAARe,IAA0B,CAC/B,IAAIf,EAAQgB,GAAW,EAEvB,OAAAhB,EAAM,KAAO,UAAW,CACtB,OAAOiB,GAAKjB,EAAOe,GAAO,CAAC,CAC7B,EAEAG,GAAU,MAAMlB,EAAO,SAAS,EAEzBD,GAAUC,CAAK,CACxB,CArEA,IAAAmB,GAAAC,GAAA,KAAAC,KACAC,KACAC,KACAC,OCAe,SAARC,GAA0BC,EAAQ,CACvC,IAAIC,EAEJ,SAASC,EAAMC,EAAG,CAChB,OAAOA,GAAK,MAAQ,MAAMA,EAAI,CAACA,CAAC,EAAIF,EAAUE,CAChD,CAEA,OAAAD,EAAM,OAASA,EAEfA,EAAM,OAASA,EAAM,MAAQ,SAASE,EAAG,CACvC,OAAO,UAAU,QAAUJ,EAAS,MAAM,KAAKI,EAAGC,EAAM,EAAGH,GAASF,EAAO,MAAM,CACnF,EAEAE,EAAM,QAAU,SAASE,EAAG,CAC1B,OAAO,UAAU,QAAUH,EAAUG,EAAGF,GAASD,CACnD,EAEAC,EAAM,KAAO,UAAW,CACtB,OAAOH,GAASC,CAAM,EAAE,QAAQC,CAAO,CACzC,EAEAD,EAAS,UAAU,OAAS,MAAM,KAAKA,EAAQK,EAAM,EAAI,CAAC,EAAG,CAAC,EAEvDC,GAAUJ,CAAK,CACxB,CA3BA,IAAAK,GAAAC,GAAA,KAAAC,KACAC,OCDe,SAARC,GAAsBC,EAAQC,EAAU,CAC7CD,EAASA,EAAO,MAAM,EAEtB,IAAIE,EAAK,EACLC,EAAKH,EAAO,OAAS,EACrBI,EAAKJ,EAAOE,CAAE,EACdG,EAAKL,EAAOG,CAAE,EACdG,EAEJ,OAAID,EAAKD,IACPE,EAAIJ,EAAIA,EAAKC,EAAIA,EAAKG,EACtBA,EAAIF,EAAIA,EAAKC,EAAIA,EAAKC,GAGxBN,EAAOE,CAAE,EAAID,EAAS,MAAMG,CAAE,EAC9BJ,EAAOG,CAAE,EAAIF,EAAS,KAAKI,CAAE,EACtBL,CACT,CAjBA,IAAAO,GAAAC,GAAA,QCMA,SAASC,GAAaC,EAAG,CACvB,OAAO,KAAK,IAAIA,CAAC,CACnB,CAEA,SAASC,GAAaD,EAAG,CACvB,OAAO,KAAK,IAAIA,CAAC,CACnB,CAEA,SAASE,IAAcF,EAAG,CACxB,MAAO,CAAC,KAAK,IAAI,CAACA,CAAC,CACrB,CAEA,SAASG,IAAcH,EAAG,CACxB,MAAO,CAAC,KAAK,IAAI,CAACA,CAAC,CACrB,CAEA,SAASI,IAAMJ,EAAG,CAChB,OAAO,SAASA,CAAC,EAAI,EAAE,KAAOA,GAAKA,EAAI,EAAI,EAAIA,CACjD,CAEA,SAASK,IAAKC,EAAM,CAClB,OAAOA,IAAS,GAAKF,IACfE,IAAS,KAAK,EAAI,KAAK,IACvBN,GAAK,KAAK,IAAIM,EAAMN,CAAC,CAC7B,CAEA,SAASO,IAAKD,EAAM,CAClB,OAAOA,IAAS,KAAK,EAAI,KAAK,IACxBA,IAAS,IAAM,KAAK,OACnBA,IAAS,GAAK,KAAK,OAClBA,EAAO,KAAK,IAAIA,CAAI,EAAGN,GAAK,KAAK,IAAIA,CAAC,EAAIM,EACpD,CAEA,SAASE,GAAQC,EAAG,CAClB,MAAO,CAACT,EAAGU,IAAM,CAACD,EAAE,CAACT,EAAGU,CAAC,CAC3B,CAEO,SAASC,GAAQC,EAAW,CACjC,IAAMC,EAAQD,EAAUb,GAAcE,EAAY,EAC5Ca,EAASD,EAAM,OACjBP,EAAO,GACPS,EACAC,EAEJ,SAASC,GAAU,CACjB,OAAAF,EAAOR,IAAKD,CAAI,EAAGU,EAAOX,IAAKC,CAAI,EAC/BQ,EAAO,EAAE,CAAC,EAAI,GAChBC,EAAOP,GAAQO,CAAI,EAAGC,EAAOR,GAAQQ,CAAI,EACzCJ,EAAUV,IAAeC,GAAa,GAEtCS,EAAUb,GAAcE,EAAY,EAE/BY,CACT,CAEA,OAAAA,EAAM,KAAO,SAASK,EAAG,CACvB,OAAO,UAAU,QAAUZ,EAAO,CAACY,EAAGD,EAAQ,GAAKX,CACrD,EAEAO,EAAM,OAAS,SAASK,EAAG,CACzB,OAAO,UAAU,QAAUJ,EAAOI,CAAC,EAAGD,EAAQ,GAAKH,EAAO,CAC5D,EAEAD,EAAM,MAAQM,GAAS,CACrB,IAAMC,EAAIN,EAAO,EACb,EAAIM,EAAE,CAAC,EACPC,EAAID,EAAEA,EAAE,OAAS,CAAC,EAChBE,EAAID,EAAI,EAEVC,IAAI,CAAC,EAAGD,CAAC,EAAI,CAACA,EAAG,CAAC,GAEtB,IAAIE,EAAIR,EAAK,CAAC,EACVS,EAAIT,EAAKM,CAAC,EACVX,EACAe,EACEC,EAAIP,GAAS,KAAO,GAAK,CAACA,EAC5BQ,EAAI,CAAC,EAET,GAAI,EAAErB,EAAO,IAAMkB,EAAID,EAAIG,EAAG,CAE5B,GADAH,EAAI,KAAK,MAAMA,CAAC,EAAGC,EAAI,KAAK,KAAKA,CAAC,EAC9B,EAAI,GAAG,KAAOD,GAAKC,EAAG,EAAED,EAC1B,IAAKb,EAAI,EAAGA,EAAIJ,EAAM,EAAEI,EAEtB,GADAe,EAAIF,EAAI,EAAIb,EAAIM,EAAK,CAACO,CAAC,EAAIb,EAAIM,EAAKO,CAAC,EACjC,EAAAE,EAAI,GACR,IAAIA,EAAIJ,EAAG,MACXM,EAAE,KAAKF,CAAC,OAEL,MAAOF,GAAKC,EAAG,EAAED,EACtB,IAAKb,EAAIJ,EAAO,EAAGI,GAAK,EAAG,EAAEA,EAE3B,GADAe,EAAIF,EAAI,EAAIb,EAAIM,EAAK,CAACO,CAAC,EAAIb,EAAIM,EAAKO,CAAC,EACjC,EAAAE,EAAI,GACR,IAAIA,EAAIJ,EAAG,MACXM,EAAE,KAAKF,CAAC,EAGRE,EAAE,OAAS,EAAID,IAAGC,EAAIC,GAAM,EAAGP,EAAGK,CAAC,EACzC,MACEC,EAAIC,GAAML,EAAGC,EAAG,KAAK,IAAIA,EAAID,EAAGG,CAAC,CAAC,EAAE,IAAIV,CAAI,EAE9C,OAAOM,EAAIK,EAAE,QAAQ,EAAIA,CAC3B,EAEAd,EAAM,WAAa,CAACM,EAAOU,IAAc,CAOvC,GANIV,GAAS,OAAMA,EAAQ,IACvBU,GAAa,OAAMA,EAAYvB,IAAS,GAAK,IAAM,KACnD,OAAOuB,GAAc,aACnB,EAAEvB,EAAO,KAAOuB,EAAYC,GAAgBD,CAAS,GAAG,WAAa,OAAMA,EAAU,KAAO,IAChGA,EAAYE,GAAOF,CAAS,GAE1BV,IAAU,IAAU,OAAOU,EAC/B,IAAMnB,EAAI,KAAK,IAAI,EAAGJ,EAAOa,EAAQN,EAAM,MAAM,EAAE,MAAM,EACzD,OAAOO,GAAK,CACV,IAAIG,EAAIH,EAAIJ,EAAK,KAAK,MAAMD,EAAKK,CAAC,CAAC,CAAC,EACpC,OAAIG,EAAIjB,EAAOA,EAAO,KAAKiB,GAAKjB,GACzBiB,GAAKb,EAAImB,EAAUT,CAAC,EAAI,EACjC,CACF,EAEAP,EAAM,KAAO,IACJC,EAAOkB,GAAKlB,EAAO,EAAG,CAC3B,MAAOd,GAAKgB,EAAK,KAAK,MAAMD,EAAKf,CAAC,CAAC,CAAC,EACpC,KAAMA,GAAKgB,EAAK,KAAK,KAAKD,EAAKf,CAAC,CAAC,CAAC,CACpC,CAAC,CAAC,EAGGa,CACT,CAEe,SAARoB,IAAuB,CAC5B,IAAMpB,EAAQF,GAAQuB,GAAY,CAAC,EAAE,OAAO,CAAC,EAAG,EAAE,CAAC,EACnD,OAAArB,EAAM,KAAO,IAAMsB,GAAKtB,EAAOoB,GAAI,CAAC,EAAE,KAAKpB,EAAM,KAAK,CAAC,EACvDuB,GAAU,MAAMvB,EAAO,SAAS,EACzBA,CACT,CA3IA,IAAAwB,GAAAC,GAAA,KAAAC,KACAA,KACAC,KACAC,KACAC,OCAA,SAASC,GAAgBC,EAAG,CAC1B,OAAO,SAASC,EAAG,CACjB,OAAO,KAAK,KAAKA,CAAC,EAAI,KAAK,MAAM,KAAK,IAAIA,EAAID,CAAC,CAAC,CAClD,CACF,CAEA,SAASE,GAAgBF,EAAG,CAC1B,OAAO,SAASC,EAAG,CACjB,OAAO,KAAK,KAAKA,CAAC,EAAI,KAAK,MAAM,KAAK,IAAIA,CAAC,CAAC,EAAID,CAClD,CACF,CAEO,SAASG,GAAUC,EAAW,CACnC,IAAIJ,EAAI,EAAGK,EAAQD,EAAUL,GAAgBC,CAAC,EAAGE,GAAgBF,CAAC,CAAC,EAEnE,OAAAK,EAAM,SAAW,SAASC,EAAG,CAC3B,OAAO,UAAU,OAASF,EAAUL,GAAgBC,EAAI,CAACM,CAAC,EAAGJ,GAAgBF,CAAC,CAAC,EAAIA,CACrF,EAEOO,GAAUF,CAAK,CACxB,CAEe,SAARG,IAA0B,CAC/B,IAAIH,EAAQF,GAAUM,GAAY,CAAC,EAEnC,OAAAJ,EAAM,KAAO,UAAW,CACtB,OAAOK,GAAKL,EAAOG,GAAO,CAAC,EAAE,SAASH,EAAM,SAAS,CAAC,CACxD,EAEOM,GAAU,MAAMN,EAAO,SAAS,CACzC,CAlCA,IAAAO,GAAAC,GAAA,KAAAC,KACAC,KACAC,OCEA,SAASC,GAAaC,EAAU,CAC9B,OAAO,SAASC,EAAG,CACjB,OAAOA,EAAI,EAAI,CAAC,KAAK,IAAI,CAACA,EAAGD,CAAQ,EAAI,KAAK,IAAIC,EAAGD,CAAQ,CAC/D,CACF,CAEA,SAASE,IAAcD,EAAG,CACxB,OAAOA,EAAI,EAAI,CAAC,KAAK,KAAK,CAACA,CAAC,EAAI,KAAK,KAAKA,CAAC,CAC7C,CAEA,SAASE,IAAgBF,EAAG,CAC1B,OAAOA,EAAI,EAAI,CAACA,EAAIA,EAAIA,EAAIA,CAC9B,CAEO,SAASG,GAAOC,EAAW,CAChC,IAAIC,EAAQD,EAAUE,GAAUA,EAAQ,EACpCP,EAAW,EAEf,SAASQ,GAAU,CACjB,OAAOR,IAAa,EAAIK,EAAUE,GAAUA,EAAQ,EAC9CP,IAAa,GAAMK,EAAUH,IAAeC,GAAe,EAC3DE,EAAUN,GAAaC,CAAQ,EAAGD,GAAa,EAAIC,CAAQ,CAAC,CACpE,CAEA,OAAAM,EAAM,SAAW,SAASG,EAAG,CAC3B,OAAO,UAAU,QAAUT,EAAW,CAACS,EAAGD,EAAQ,GAAKR,CACzD,EAEOU,GAAUJ,CAAK,CACxB,CAEe,SAARK,IAAuB,CAC5B,IAAIL,EAAQF,GAAOQ,GAAY,CAAC,EAEhC,OAAAN,EAAM,KAAO,UAAW,CACtB,OAAOO,GAAKP,EAAOK,GAAI,CAAC,EAAE,SAASL,EAAM,SAAS,CAAC,CACrD,EAEAQ,GAAU,MAAMR,EAAO,SAAS,EAEzBA,CACT,CAEO,SAASS,IAAO,CACrB,OAAOJ,GAAI,MAAM,KAAM,SAAS,EAAE,SAAS,EAAG,CAChD,CAjDA,IAAAK,GAAAC,GAAA,KAAAC,KACAC,KACAC,OCGA,SAASC,GAAOC,EAAG,CACjB,OAAO,KAAK,KAAKA,CAAC,EAAIA,EAAIA,CAC5B,CAEA,SAASC,IAASD,EAAG,CACnB,OAAO,KAAK,KAAKA,CAAC,EAAI,KAAK,KAAK,KAAK,IAAIA,CAAC,CAAC,CAC7C,CAEe,SAARE,IAA0B,CAC/B,IAAIC,EAAUC,GAAW,EACrBC,EAAQ,CAAC,EAAG,CAAC,EACbC,EAAQ,GACRC,EAEJ,SAASC,EAAMR,EAAG,CAChB,IAAIS,EAAIR,IAASE,EAAQH,CAAC,CAAC,EAC3B,OAAO,MAAMS,CAAC,EAAIF,EAAUD,EAAQ,KAAK,MAAMG,CAAC,EAAIA,CACtD,CAEA,OAAAD,EAAM,OAAS,SAASC,EAAG,CACzB,OAAON,EAAQ,OAAOJ,GAAOU,CAAC,CAAC,CACjC,EAEAD,EAAM,OAAS,SAASE,EAAG,CACzB,OAAO,UAAU,QAAUP,EAAQ,OAAOO,CAAC,EAAGF,GAASL,EAAQ,OAAO,CACxE,EAEAK,EAAM,MAAQ,SAASE,EAAG,CACxB,OAAO,UAAU,QAAUP,EAAQ,OAAOE,EAAQ,MAAM,KAAKK,EAAGC,EAAM,GAAG,IAAIZ,EAAM,CAAC,EAAGS,GAASH,EAAM,MAAM,CAC9G,EAEAG,EAAM,WAAa,SAASE,EAAG,CAC7B,OAAOF,EAAM,MAAME,CAAC,EAAE,MAAM,EAAI,CAClC,EAEAF,EAAM,MAAQ,SAASE,EAAG,CACxB,OAAO,UAAU,QAAUJ,EAAQ,CAAC,CAACI,EAAGF,GAASF,CACnD,EAEAE,EAAM,MAAQ,SAASE,EAAG,CACxB,OAAO,UAAU,QAAUP,EAAQ,MAAMO,CAAC,EAAGF,GAASL,EAAQ,MAAM,CACtE,EAEAK,EAAM,QAAU,SAASE,EAAG,CAC1B,OAAO,UAAU,QAAUH,EAAUG,EAAGF,GAASD,CACnD,EAEAC,EAAM,KAAO,UAAW,CACtB,OAAON,GAAOC,EAAQ,OAAO,EAAGE,CAAK,EAChC,MAAMC,CAAK,EACX,MAAMH,EAAQ,MAAM,CAAC,EACrB,QAAQI,CAAO,CACtB,EAEAK,GAAU,MAAMJ,EAAO,SAAS,EAEzBK,GAAUL,CAAK,CACxB,CA9DA,IAAAM,GAAAC,GAAA,KAAAC,KACAC,KACAC,KACAC,OCAe,SAARC,IAA4B,CACjC,IAAIC,EAAS,CAAC,EACVC,EAAQ,CAAC,EACTC,EAAa,CAAC,EACdC,EAEJ,SAASC,GAAU,CACjB,IAAIC,EAAI,EAAGC,EAAI,KAAK,IAAI,EAAGL,EAAM,MAAM,EAEvC,IADAC,EAAa,IAAI,MAAMI,EAAI,CAAC,EACrB,EAAED,EAAIC,GAAGJ,EAAWG,EAAI,CAAC,EAAIE,GAAUP,EAAQK,EAAIC,CAAC,EAC3D,OAAOE,CACT,CAEA,SAASA,EAAMC,EAAG,CAChB,OAAOA,GAAK,MAAQ,MAAMA,EAAI,CAACA,CAAC,EAAIN,EAAUF,EAAMS,GAAOR,EAAYO,CAAC,CAAC,CAC3E,CAEA,OAAAD,EAAM,aAAe,SAASG,EAAG,CAC/B,IAAIN,EAAIJ,EAAM,QAAQU,CAAC,EACvB,OAAON,EAAI,EAAI,CAAC,IAAK,GAAG,EAAI,CAC1BA,EAAI,EAAIH,EAAWG,EAAI,CAAC,EAAIL,EAAO,CAAC,EACpCK,EAAIH,EAAW,OAASA,EAAWG,CAAC,EAAIL,EAAOA,EAAO,OAAS,CAAC,CAClE,CACF,EAEAQ,EAAM,OAAS,SAASI,EAAG,CACzB,GAAI,CAAC,UAAU,OAAQ,OAAOZ,EAAO,MAAM,EAC3CA,EAAS,CAAC,EACV,QAASa,KAAKD,EAAOC,GAAK,MAAQ,CAAC,MAAMA,EAAI,CAACA,CAAC,GAAGb,EAAO,KAAKa,CAAC,EAC/D,OAAAb,EAAO,KAAKc,EAAS,EACdV,EAAQ,CACjB,EAEAI,EAAM,MAAQ,SAASI,EAAG,CACxB,OAAO,UAAU,QAAUX,EAAQ,MAAM,KAAKW,CAAC,EAAGR,EAAQ,GAAKH,EAAM,MAAM,CAC7E,EAEAO,EAAM,QAAU,SAASI,EAAG,CAC1B,OAAO,UAAU,QAAUT,EAAUS,EAAGJ,GAASL,CACnD,EAEAK,EAAM,UAAY,UAAW,CAC3B,OAAON,EAAW,MAAM,CAC1B,EAEAM,EAAM,KAAO,UAAW,CACtB,OAAOT,GAAS,EACX,OAAOC,CAAM,EACb,MAAMC,CAAK,EACX,QAAQE,CAAO,CACtB,EAEOY,GAAU,MAAMP,EAAO,SAAS,CACzC,CAxDA,IAAAQ,GAAAC,GAAA,KAAAC,KACAC,OCGe,SAARC,IAA4B,CACjC,IAAIC,EAAK,EACLC,EAAK,EACLC,EAAI,EACJC,EAAS,CAAC,EAAG,EACbC,EAAQ,CAAC,EAAG,CAAC,EACbC,EAEJ,SAASC,EAAMC,EAAG,CAChB,OAAOA,GAAK,MAAQA,GAAKA,EAAIH,EAAMI,GAAOL,EAAQI,EAAG,EAAGL,CAAC,CAAC,EAAIG,CAChE,CAEA,SAASI,GAAU,CACjB,IAAIC,EAAI,GAER,IADAP,EAAS,IAAI,MAAMD,CAAC,EACb,EAAEQ,EAAIR,GAAGC,EAAOO,CAAC,IAAMA,EAAI,GAAKT,GAAMS,EAAIR,GAAKF,IAAOE,EAAI,GACjE,OAAOI,CACT,CAEA,OAAAA,EAAM,OAAS,SAASK,EAAG,CACzB,OAAO,UAAU,QAAU,CAACX,EAAIC,CAAE,EAAIU,EAAGX,EAAK,CAACA,EAAIC,EAAK,CAACA,EAAIQ,EAAQ,GAAK,CAACT,EAAIC,CAAE,CACnF,EAEAK,EAAM,MAAQ,SAASK,EAAG,CACxB,OAAO,UAAU,QAAUT,GAAKE,EAAQ,MAAM,KAAKO,CAAC,GAAG,OAAS,EAAGF,EAAQ,GAAKL,EAAM,MAAM,CAC9F,EAEAE,EAAM,aAAe,SAASM,EAAG,CAC/B,IAAIF,EAAIN,EAAM,QAAQQ,CAAC,EACvB,OAAOF,EAAI,EAAI,CAAC,IAAK,GAAG,EAClBA,EAAI,EAAI,CAACV,EAAIG,EAAO,CAAC,CAAC,EACtBO,GAAKR,EAAI,CAACC,EAAOD,EAAI,CAAC,EAAGD,CAAE,EAC3B,CAACE,EAAOO,EAAI,CAAC,EAAGP,EAAOO,CAAC,CAAC,CACjC,EAEAJ,EAAM,QAAU,SAASK,EAAG,CAC1B,OAAO,UAAU,SAAUN,EAAUM,GAAGL,CAC1C,EAEAA,EAAM,WAAa,UAAW,CAC5B,OAAOH,EAAO,MAAM,CACtB,EAEAG,EAAM,KAAO,UAAW,CACtB,OAAOP,GAAS,EACX,OAAO,CAACC,EAAIC,CAAE,CAAC,EACf,MAAMG,CAAK,EACX,QAAQC,CAAO,CACtB,EAEOQ,GAAU,MAAMC,GAAUR,CAAK,EAAG,SAAS,CACpD,CAvDA,IAAAS,GAAAC,GAAA,KAAAC,KACAC,KACAC,OCCe,SAARC,IAA6B,CAClC,IAAIC,EAAS,CAAC,EAAG,EACbC,EAAQ,CAAC,EAAG,CAAC,EACbC,EACA,EAAI,EAER,SAASC,EAAMC,EAAG,CAChB,OAAOA,GAAK,MAAQA,GAAKA,EAAIH,EAAMI,GAAOL,EAAQI,EAAG,EAAG,CAAC,CAAC,EAAIF,CAChE,CAEA,OAAAC,EAAM,OAAS,SAASG,EAAG,CACzB,OAAO,UAAU,QAAUN,EAAS,MAAM,KAAKM,CAAC,EAAG,EAAI,KAAK,IAAIN,EAAO,OAAQC,EAAM,OAAS,CAAC,EAAGE,GAASH,EAAO,MAAM,CAC1H,EAEAG,EAAM,MAAQ,SAASG,EAAG,CACxB,OAAO,UAAU,QAAUL,EAAQ,MAAM,KAAKK,CAAC,EAAG,EAAI,KAAK,IAAIN,EAAO,OAAQC,EAAM,OAAS,CAAC,EAAGE,GAASF,EAAM,MAAM,CACxH,EAEAE,EAAM,aAAe,SAASI,EAAG,CAC/B,IAAIC,EAAIP,EAAM,QAAQM,CAAC,EACvB,MAAO,CAACP,EAAOQ,EAAI,CAAC,EAAGR,EAAOQ,CAAC,CAAC,CAClC,EAEAL,EAAM,QAAU,SAASG,EAAG,CAC1B,OAAO,UAAU,QAAUJ,EAAUI,EAAGH,GAASD,CACnD,EAEAC,EAAM,KAAO,UAAW,CACtB,OAAOJ,GAAU,EACZ,OAAOC,CAAM,EACb,MAAMC,CAAK,EACX,QAAQC,CAAO,CACtB,EAEOO,GAAU,MAAMN,EAAO,SAAS,CACzC,CAtCA,IAAAO,GAAAC,GAAA,KAAAC,KACAC,OCCO,SAASC,GAAaC,EAAQC,EAASC,EAAOC,EAAO,CAE1D,SAASC,EAASC,EAAM,CACtB,OAAOL,EAAOK,EAAO,UAAU,SAAW,EAAI,IAAI,KAAO,IAAI,KAAK,CAACA,CAAI,CAAC,EAAGA,CAC7E,CAEA,OAAAD,EAAS,MAASC,IACTL,EAAOK,EAAO,IAAI,KAAK,CAACA,CAAI,CAAC,EAAGA,GAGzCD,EAAS,KAAQC,IACRL,EAAOK,EAAO,IAAI,KAAKA,EAAO,CAAC,CAAC,EAAGJ,EAAQI,EAAM,CAAC,EAAGL,EAAOK,CAAI,EAAGA,GAG5ED,EAAS,MAASC,GAAS,CACzB,IAAMC,EAAKF,EAASC,CAAI,EAAGE,EAAKH,EAAS,KAAKC,CAAI,EAClD,OAAOA,EAAOC,EAAKC,EAAKF,EAAOC,EAAKC,CACtC,EAEAH,EAAS,OAAS,CAACC,EAAMG,KAChBP,EAAQI,EAAO,IAAI,KAAK,CAACA,CAAI,EAAGG,GAAQ,KAAO,EAAI,KAAK,MAAMA,CAAI,CAAC,EAAGH,GAG/ED,EAAS,MAAQ,CAACK,EAAOC,EAAMF,IAAS,CACtC,IAAMG,EAAQ,CAAC,EAGf,GAFAF,EAAQL,EAAS,KAAKK,CAAK,EAC3BD,EAAOA,GAAQ,KAAO,EAAI,KAAK,MAAMA,CAAI,EACrC,EAAEC,EAAQC,IAAS,EAAEF,EAAO,GAAI,OAAOG,EAC3C,IAAIC,EACJ,GAAGD,EAAM,KAAKC,EAAW,IAAI,KAAK,CAACH,CAAK,CAAC,EAAGR,EAAQQ,EAAOD,CAAI,EAAGR,EAAOS,CAAK,QACvEG,EAAWH,GAASA,EAAQC,GACnC,OAAOC,CACT,EAEAP,EAAS,OAAUS,GACVd,GAAcM,GAAS,CAC5B,GAAIA,GAAQA,EAAM,KAAOL,EAAOK,CAAI,EAAG,CAACQ,EAAKR,CAAI,GAAGA,EAAK,QAAQA,EAAO,CAAC,CAC3E,EAAG,CAACA,EAAMG,IAAS,CACjB,GAAIH,GAAQA,EACV,GAAIG,EAAO,EAAG,KAAO,EAAEA,GAAQ,GAC7B,KAAOP,EAAQI,EAAM,EAAE,EAAG,CAACQ,EAAKR,CAAI,GAAG,KAClC,MAAO,EAAEG,GAAQ,GACtB,KAAOP,EAAQI,EAAM,CAAE,EAAG,CAACQ,EAAKR,CAAI,GAAG,CAG7C,CAAC,EAGCH,IACFE,EAAS,MAAQ,CAACK,EAAOK,KACvBC,GAAG,QAAQ,CAACN,CAAK,EAAGO,GAAG,QAAQ,CAACF,CAAG,EACnCd,EAAOe,EAAE,EAAGf,EAAOgB,EAAE,EACd,KAAK,MAAMd,EAAMa,GAAIC,EAAE,CAAC,GAGjCZ,EAAS,MAASI,IAChBA,EAAO,KAAK,MAAMA,CAAI,EACf,CAAC,SAASA,CAAI,GAAK,EAAEA,EAAO,GAAK,KAChCA,EAAO,EACTJ,EAAS,OAAOD,EACXc,GAAMd,EAAMc,CAAC,EAAIT,IAAS,EAC1BS,GAAMb,EAAS,MAAM,EAAGa,CAAC,EAAIT,IAAS,CAAC,EAH9BJ,IAOjBA,CACT,CApEA,IAAMW,GAAeC,GAArBE,GAAAC,GAAA,KAAMJ,GAAK,IAAI,KAAMC,GAAK,IAAI,OCA9B,IAEaI,GAsBAC,IAxBbC,GAAAC,GAAA,KAAAC,KAEaJ,GAAcK,GAAa,IAAM,CAE9C,EAAG,CAACC,EAAMC,IAAS,CACjBD,EAAK,QAAQ,CAACA,EAAOC,CAAI,CAC3B,EAAG,CAACC,EAAOC,IACFA,EAAMD,CACd,EAGDR,GAAY,MAASU,IACnBA,EAAI,KAAK,MAAMA,CAAC,EACZ,CAAC,SAASA,CAAC,GAAK,EAAEA,EAAI,GAAW,KAC/BA,EAAI,EACHL,GAAcC,GAAS,CAC5BA,EAAK,QAAQ,KAAK,MAAMA,EAAOI,CAAC,EAAIA,CAAC,CACvC,EAAG,CAACJ,EAAMC,IAAS,CACjBD,EAAK,QAAQ,CAACA,EAAOC,EAAOG,CAAC,CAC/B,EAAG,CAACF,EAAOC,KACDA,EAAMD,GAASE,CACxB,EAPoBV,IAUVC,IAAeD,GAAY,QCxBxC,IAGaW,GAUAC,GAbbC,GAAAC,GAAA,KAAAC,KAGaJ,GAASK,GAAcC,GAAS,CAC3CA,EAAK,QAAQA,EAAOA,EAAK,gBAAgB,CAAC,CAC5C,EAAG,CAACA,EAAMC,IAAS,CACjBD,EAAK,QAAQ,CAACA,EAAOC,EAAO,GAAc,CAC5C,EAAG,CAACC,EAAOC,KACDA,EAAMD,GAAS,IACrBF,GACKA,EAAK,cAAc,CAC3B,EAEYL,GAAUD,GAAO,QCb9B,IAGaU,GAUAC,IAEAC,GAUAC,IAzBbC,GAAAC,GAAA,KAAAC,KAGaN,GAAaO,GAAcC,GAAS,CAC/CA,EAAK,QAAQA,EAAOA,EAAK,gBAAgB,EAAIA,EAAK,WAAW,EAAI,GAAc,CACjF,EAAG,CAACA,EAAMC,IAAS,CACjBD,EAAK,QAAQ,CAACA,EAAOC,EAAO,GAAc,CAC5C,EAAG,CAACC,EAAOC,KACDA,EAAMD,GAAS,IACrBF,GACKA,EAAK,WAAW,CACxB,EAEYP,IAAcD,GAAW,MAEzBE,GAAYK,GAAcC,GAAS,CAC9CA,EAAK,cAAc,EAAG,CAAC,CACzB,EAAG,CAACA,EAAMC,IAAS,CACjBD,EAAK,QAAQ,CAACA,EAAOC,EAAO,GAAc,CAC5C,EAAG,CAACC,EAAOC,KACDA,EAAMD,GAAS,IACrBF,GACKA,EAAK,cAAc,CAC3B,EAEYL,IAAaD,GAAU,QCzBpC,IAGaU,GAUAC,IAEAC,GAUAC,IAzBbC,GAAAC,GAAA,KAAAC,KAGaN,GAAWO,GAAcC,GAAS,CAC7CA,EAAK,QAAQA,EAAOA,EAAK,gBAAgB,EAAIA,EAAK,WAAW,EAAI,IAAiBA,EAAK,WAAW,EAAI,GAAc,CACtH,EAAG,CAACA,EAAMC,IAAS,CACjBD,EAAK,QAAQ,CAACA,EAAOC,EAAO,IAAY,CAC1C,EAAG,CAACC,EAAOC,KACDA,EAAMD,GAAS,KACrBF,GACKA,EAAK,SAAS,CACtB,EAEYP,IAAYD,GAAS,MAErBE,GAAUK,GAAcC,GAAS,CAC5CA,EAAK,cAAc,EAAG,EAAG,CAAC,CAC5B,EAAG,CAACA,EAAMC,IAAS,CACjBD,EAAK,QAAQ,CAACA,EAAOC,EAAO,IAAY,CAC1C,EAAG,CAACC,EAAOC,KACDA,EAAMD,GAAS,KACrBF,GACKA,EAAK,YAAY,CACzB,EAEYL,IAAWD,GAAQ,QCzBhC,IAGaU,GAOAC,IAEAC,GAUAC,IAEAC,GAUAC,IAlCbC,GAAAC,GAAA,KAAAC,KAGaR,GAAUS,GACrBC,GAAQA,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,EAChC,CAACA,EAAMC,IAASD,EAAK,QAAQA,EAAK,QAAQ,EAAIC,CAAI,EAClD,CAACC,EAAOC,KAASA,EAAMD,GAASC,EAAI,kBAAkB,EAAID,EAAM,kBAAkB,GAAK,KAAkB,MACzGF,GAAQA,EAAK,QAAQ,EAAI,CAC3B,EAEaT,IAAWD,GAAQ,MAEnBE,GAASO,GAAcC,GAAS,CAC3CA,EAAK,YAAY,EAAG,EAAG,EAAG,CAAC,CAC7B,EAAG,CAACA,EAAMC,IAAS,CACjBD,EAAK,WAAWA,EAAK,WAAW,EAAIC,CAAI,CAC1C,EAAG,CAACC,EAAOC,KACDA,EAAMD,GAAS,MACrBF,GACKA,EAAK,WAAW,EAAI,CAC5B,EAEYP,IAAUD,GAAO,MAEjBE,GAAUK,GAAcC,GAAS,CAC5CA,EAAK,YAAY,EAAG,EAAG,EAAG,CAAC,CAC7B,EAAG,CAACA,EAAMC,IAAS,CACjBD,EAAK,WAAWA,EAAK,WAAW,EAAIC,CAAI,CAC1C,EAAG,CAACC,EAAOC,KACDA,EAAMD,GAAS,MACrBF,GACK,KAAK,MAAMA,EAAO,KAAW,CACrC,EAEYL,IAAWD,GAAQ,QC/BhC,SAASU,GAAYC,EAAG,CACtB,OAAOC,GAAcC,GAAS,CAC5BA,EAAK,QAAQA,EAAK,QAAQ,GAAKA,EAAK,OAAO,EAAI,EAAIF,GAAK,CAAC,EACzDE,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,CAC1B,EAAG,CAACA,EAAMC,IAAS,CACjBD,EAAK,QAAQA,EAAK,QAAQ,EAAIC,EAAO,CAAC,CACxC,EAAG,CAACC,EAAOC,KACDA,EAAMD,GAASC,EAAI,kBAAkB,EAAID,EAAM,kBAAkB,GAAK,KAAkB,MACjG,CACH,CAkBA,SAASE,GAAWN,EAAG,CACrB,OAAOC,GAAcC,GAAS,CAC5BA,EAAK,WAAWA,EAAK,WAAW,GAAKA,EAAK,UAAU,EAAI,EAAIF,GAAK,CAAC,EAClEE,EAAK,YAAY,EAAG,EAAG,EAAG,CAAC,CAC7B,EAAG,CAACA,EAAMC,IAAS,CACjBD,EAAK,WAAWA,EAAK,WAAW,EAAIC,EAAO,CAAC,CAC9C,EAAG,CAACC,EAAOC,KACDA,EAAMD,GAAS,MACxB,CACH,CAvCA,IAcaG,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GAEAC,GACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IAaAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GAEAC,GACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IAvDbC,GAAAC,GAAA,KAAAC,KAca9B,GAAaR,GAAY,CAAC,EAC1BS,GAAaT,GAAY,CAAC,EAC1BU,GAAcV,GAAY,CAAC,EAC3BW,GAAgBX,GAAY,CAAC,EAC7BY,GAAeZ,GAAY,CAAC,EAC5Ba,GAAab,GAAY,CAAC,EAC1Bc,GAAed,GAAY,CAAC,EAE5Be,GAAcP,GAAW,MACzBQ,IAAcP,GAAW,MACzBQ,IAAeP,GAAY,MAC3BQ,IAAiBP,GAAc,MAC/BQ,IAAgBP,GAAa,MAC7BQ,IAAcP,GAAW,MACzBQ,IAAgBP,GAAa,MAa7BQ,GAAYf,GAAW,CAAC,EACxBgB,GAAYhB,GAAW,CAAC,EACxBiB,GAAajB,GAAW,CAAC,EACzBkB,GAAelB,GAAW,CAAC,EAC3BmB,GAAcnB,GAAW,CAAC,EAC1BoB,GAAYpB,GAAW,CAAC,EACxBqB,GAAcrB,GAAW,CAAC,EAE1BsB,GAAaP,GAAU,MACvBQ,IAAaP,GAAU,MACvBQ,IAAcP,GAAW,MACzBQ,IAAgBP,GAAa,MAC7BQ,IAAeP,GAAY,MAC3BQ,IAAaP,GAAU,MACvBQ,IAAeP,GAAY,QCvDxC,IAEaW,GAWAC,IAEAC,GAWAC,IA1BbC,GAAAC,GAAA,KAAAC,KAEaN,GAAYO,GAAcC,GAAS,CAC9CA,EAAK,QAAQ,CAAC,EACdA,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,CAC1B,EAAG,CAACA,EAAMC,IAAS,CACjBD,EAAK,SAASA,EAAK,SAAS,EAAIC,CAAI,CACtC,EAAG,CAACC,EAAOC,IACFA,EAAI,SAAS,EAAID,EAAM,SAAS,GAAKC,EAAI,YAAY,EAAID,EAAM,YAAY,GAAK,GACrFF,GACKA,EAAK,SAAS,CACtB,EAEYP,IAAaD,GAAU,MAEvBE,GAAWK,GAAcC,GAAS,CAC7CA,EAAK,WAAW,CAAC,EACjBA,EAAK,YAAY,EAAG,EAAG,EAAG,CAAC,CAC7B,EAAG,CAACA,EAAMC,IAAS,CACjBD,EAAK,YAAYA,EAAK,YAAY,EAAIC,CAAI,CAC5C,EAAG,CAACC,EAAOC,IACFA,EAAI,YAAY,EAAID,EAAM,YAAY,GAAKC,EAAI,eAAe,EAAID,EAAM,eAAe,GAAK,GACjGF,GACKA,EAAK,YAAY,CACzB,EAEYL,IAAYD,GAAS,QC1BlC,IAEaU,GAsBAC,IAEAC,GAsBAC,IAhDbC,GAAAC,GAAA,KAAAC,KAEaN,GAAWO,GAAcC,GAAS,CAC7CA,EAAK,SAAS,EAAG,CAAC,EAClBA,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,CAC1B,EAAG,CAACA,EAAMC,IAAS,CACjBD,EAAK,YAAYA,EAAK,YAAY,EAAIC,CAAI,CAC5C,EAAG,CAACC,EAAOC,IACFA,EAAI,YAAY,EAAID,EAAM,YAAY,EAC3CF,GACKA,EAAK,YAAY,CACzB,EAGDR,GAAS,MAASY,GACT,CAAC,SAASA,EAAI,KAAK,MAAMA,CAAC,CAAC,GAAK,EAAEA,EAAI,GAAK,KAAOL,GAAcC,GAAS,CAC9EA,EAAK,YAAY,KAAK,MAAMA,EAAK,YAAY,EAAII,CAAC,EAAIA,CAAC,EACvDJ,EAAK,SAAS,EAAG,CAAC,EAClBA,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,CAC1B,EAAG,CAACA,EAAMC,IAAS,CACjBD,EAAK,YAAYA,EAAK,YAAY,EAAIC,EAAOG,CAAC,CAChD,CAAC,EAGUX,IAAYD,GAAS,MAErBE,GAAUK,GAAcC,GAAS,CAC5CA,EAAK,YAAY,EAAG,CAAC,EACrBA,EAAK,YAAY,EAAG,EAAG,EAAG,CAAC,CAC7B,EAAG,CAACA,EAAMC,IAAS,CACjBD,EAAK,eAAeA,EAAK,eAAe,EAAIC,CAAI,CAClD,EAAG,CAACC,EAAOC,IACFA,EAAI,eAAe,EAAID,EAAM,eAAe,EACjDF,GACKA,EAAK,eAAe,CAC5B,EAGDN,GAAQ,MAASU,GACR,CAAC,SAASA,EAAI,KAAK,MAAMA,CAAC,CAAC,GAAK,EAAEA,EAAI,GAAK,KAAOL,GAAcC,GAAS,CAC9EA,EAAK,eAAe,KAAK,MAAMA,EAAK,eAAe,EAAII,CAAC,EAAIA,CAAC,EAC7DJ,EAAK,YAAY,EAAG,CAAC,EACrBA,EAAK,YAAY,EAAG,EAAG,EAAG,CAAC,CAC7B,EAAG,CAACA,EAAMC,IAAS,CACjBD,EAAK,eAAeA,EAAK,eAAe,EAAIC,EAAOG,CAAC,CACtD,CAAC,EAGUT,IAAWD,GAAQ,QCrChC,SAASW,GAAOC,EAAMC,EAAOC,EAAMC,EAAKC,EAAMC,EAAQ,CAEpD,IAAMC,EAAgB,CACpB,CAACC,GAAS,EAAQ,GAAc,EAChC,CAACA,GAAS,EAAI,EAAI,GAAc,EAChC,CAACA,GAAQ,GAAI,GAAK,GAAc,EAChC,CAACA,GAAQ,GAAI,GAAK,GAAc,EAChC,CAACF,EAAS,EAAQ,GAAc,EAChC,CAACA,EAAS,EAAI,EAAI,GAAc,EAChC,CAACA,EAAQ,GAAI,GAAK,GAAc,EAChC,CAACA,EAAQ,GAAI,GAAK,GAAc,EAChC,CAAGD,EAAO,EAAQ,IAAc,EAChC,CAAGA,EAAO,EAAI,EAAI,IAAc,EAChC,CAAGA,EAAO,EAAI,EAAI,IAAc,EAChC,CAAGA,EAAM,GAAI,GAAK,IAAc,EAChC,CAAID,EAAM,EAAQ,KAAc,EAChC,CAAIA,EAAM,EAAI,EAAI,KAAc,EAChC,CAAGD,EAAO,EAAQ,MAAc,EAChC,CAAED,EAAQ,EAAQ,MAAc,EAChC,CAAEA,EAAQ,EAAI,EAAI,MAAc,EAChC,CAAGD,EAAO,EAAQ,OAAc,CAClC,EAEA,SAASQ,EAAMC,EAAOC,EAAMC,EAAO,CACjC,IAAMC,EAAUF,EAAOD,EACnBG,IAAS,CAACH,EAAOC,CAAI,EAAI,CAACA,EAAMD,CAAK,GACzC,IAAMI,EAAWF,GAAS,OAAOA,EAAM,OAAU,WAAaA,EAAQG,EAAaL,EAAOC,EAAMC,CAAK,EAC/FH,EAAQK,EAAWA,EAAS,MAAMJ,EAAO,CAACC,EAAO,CAAC,EAAI,CAAC,EAC7D,OAAOE,EAAUJ,EAAM,QAAQ,EAAIA,CACrC,CAEA,SAASM,EAAaL,EAAOC,EAAMC,EAAO,CACxC,IAAMI,EAAS,KAAK,IAAIL,EAAOD,CAAK,EAAIE,EAClCK,EAAIC,GAAS,CAAC,CAAC,CAAC,CAAEC,CAAI,IAAMA,CAAI,EAAE,MAAMZ,EAAeS,CAAM,EACnE,GAAIC,IAAMV,EAAc,OAAQ,OAAON,EAAK,MAAMmB,GAASV,EAAQ,QAAcC,EAAO,QAAcC,CAAK,CAAC,EAC5G,GAAIK,IAAM,EAAG,OAAOI,GAAY,MAAM,KAAK,IAAID,GAASV,EAAOC,EAAMC,CAAK,EAAG,CAAC,CAAC,EAC/E,GAAM,CAACU,EAAGH,CAAI,EAAIZ,EAAcS,EAAST,EAAcU,EAAI,CAAC,EAAE,CAAC,EAAIV,EAAcU,CAAC,EAAE,CAAC,EAAID,EAASC,EAAI,EAAIA,CAAC,EAC3G,OAAOK,EAAE,MAAMH,CAAI,CACrB,CAEA,MAAO,CAACV,EAAOM,CAAY,CAC7B,CApDA,IAsDOQ,GAAUC,GACVC,GAAWC,GAvDlBC,GAAAC,GAAA,KAAAC,KAEAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KA6CM,CAACd,GAAUC,IAAmBxB,GAAOsC,GAASC,GAAUC,GAAWC,GAASC,GAASC,EAAS,EAC9F,CAAClB,GAAWC,IAAoB1B,GAAO4C,GAAUC,GAAWC,GAAYC,GAASC,GAAUC,EAAU,ICvD3G,IAAAC,GAAAC,GAAA,KAWAC,KAOAC,KAOAC,KAOAC,KASAC,KAmCAC,KAOAC,KAOAC,OC7EA,SAASC,GAAUC,EAAG,CACpB,GAAI,GAAKA,EAAE,GAAKA,EAAE,EAAI,IAAK,CACzB,IAAIC,EAAO,IAAI,KAAK,GAAID,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,EACpD,OAAAC,EAAK,YAAYD,EAAE,CAAC,EACbC,CACT,CACA,OAAO,IAAI,KAAKD,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,CACnD,CAEA,SAASE,GAAQF,EAAG,CAClB,GAAI,GAAKA,EAAE,GAAKA,EAAE,EAAI,IAAK,CACzB,IAAIC,EAAO,IAAI,KAAK,KAAK,IAAI,GAAID,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,CAAC,EAC9D,OAAAC,EAAK,eAAeD,EAAE,CAAC,EAChBC,CACT,CACA,OAAO,IAAI,KAAK,KAAK,IAAID,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,CAAC,CAC7D,CAEA,SAASG,GAAQC,EAAGC,EAAGL,EAAG,CACxB,MAAO,CAAC,EAAGI,EAAG,EAAGC,EAAG,EAAGL,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAClD,CAEe,SAARM,GAA8BC,EAAQ,CAC3C,IAAIC,EAAkBD,EAAO,SACzBE,EAAcF,EAAO,KACrBG,EAAcH,EAAO,KACrBI,EAAiBJ,EAAO,QACxBK,EAAkBL,EAAO,KACzBM,EAAuBN,EAAO,UAC9BO,EAAgBP,EAAO,OACvBQ,EAAqBR,EAAO,YAE5BS,EAAWC,GAASN,CAAc,EAClCO,EAAeC,GAAaR,CAAc,EAC1CS,EAAYH,GAASL,CAAe,EACpCS,EAAgBF,GAAaP,CAAe,EAC5CU,EAAiBL,GAASJ,CAAoB,EAC9CU,EAAqBJ,GAAaN,CAAoB,EACtDW,EAAUP,GAASH,CAAa,EAChCW,EAAcN,GAAaL,CAAa,EACxCY,EAAeT,GAASF,CAAkB,EAC1CY,EAAmBR,GAAaJ,CAAkB,EAElDa,EAAU,CACZ,EAAKC,EACL,EAAKC,GACL,EAAKC,EACL,EAAKC,GACL,EAAK,KACL,EAAKC,GACL,EAAKA,GACL,EAAKC,IACL,EAAKC,IACL,EAAKC,IACL,EAAKC,IACL,EAAKC,IACL,EAAKC,IACL,EAAKC,GACL,EAAKC,IACL,EAAKC,IACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,IACL,EAAKC,IACL,EAAKC,IACL,EAAKC,IACL,EAAKC,IACL,EAAKC,IACL,EAAK,KACL,EAAK,KACL,EAAKC,IACL,EAAKC,IACL,EAAKC,IACL,IAAKC,EACP,EAEIC,EAAa,CACf,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAK,KACL,EAAKC,GACL,EAAKA,GACL,EAAKC,IACL,EAAKC,IACL,EAAKC,IACL,EAAKC,IACL,EAAKC,IACL,EAAKC,IACL,EAAKC,GACL,EAAKC,IACL,EAAKC,IACL,EAAKC,GACL,EAAKC,GACL,EAAK5B,GACL,EAAKC,GACL,EAAK4B,IACL,EAAKC,IACL,EAAKC,IACL,EAAKC,IACL,EAAKC,IACL,EAAKC,IACL,EAAK,KACL,EAAK,KACL,EAAKC,IACL,EAAKC,IACL,EAAKC,IACL,IAAK1B,EACP,EAEI2B,EAAS,CACX,EAAKC,EACL,EAAKC,EACL,EAAKC,EACL,EAAKC,EACL,EAAKC,EACL,EAAKC,GACL,EAAKA,GACL,EAAKC,IACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKA,GACL,EAAKC,IACL,EAAKC,IACL,EAAKC,IACL,EAAKC,IACL,EAAKC,EACL,EAAKC,IACL,EAAKC,IACL,EAAKC,IACL,EAAKC,IACL,EAAKC,IACL,EAAKC,IACL,EAAKC,IACL,EAAKC,IACL,EAAKC,IACL,EAAKC,EACL,EAAKC,EACL,EAAKlB,GACL,EAAKC,GACL,EAAKkB,IACL,IAAKC,GACP,EAGAnF,EAAQ,EAAIoF,EAAUvG,EAAamB,CAAO,EAC1CA,EAAQ,EAAIoF,EAAUtG,EAAakB,CAAO,EAC1CA,EAAQ,EAAIoF,EAAUxG,EAAiBoB,CAAO,EAC9C6B,EAAW,EAAIuD,EAAUvG,EAAagD,CAAU,EAChDA,EAAW,EAAIuD,EAAUtG,EAAa+C,CAAU,EAChDA,EAAW,EAAIuD,EAAUxG,EAAiBiD,CAAU,EAEpD,SAASuD,EAAUC,GAAWrF,GAAS,CACrC,OAAO,SAAS3B,GAAM,CACpB,IAAIiH,GAAS,CAAC,EACVC,GAAI,GACJC,GAAI,EACJC,GAAIJ,GAAU,OACdK,GACAC,GACAC,GAIJ,IAFMvH,cAAgB,OAAOA,GAAO,IAAI,KAAK,CAACA,EAAI,GAE3C,EAAEkH,GAAIE,IACPJ,GAAU,WAAWE,EAAC,IAAM,KAC9BD,GAAO,KAAKD,GAAU,MAAMG,GAAGD,EAAC,CAAC,GAC5BI,GAAME,GAAKH,GAAIL,GAAU,OAAO,EAAEE,EAAC,CAAC,IAAM,KAAMG,GAAIL,GAAU,OAAO,EAAEE,EAAC,EACxEI,GAAMD,KAAM,IAAM,IAAM,KACzBE,GAAS5F,GAAQ0F,EAAC,KAAGA,GAAIE,GAAOvH,GAAMsH,EAAG,GAC7CL,GAAO,KAAKI,EAAC,EACbF,GAAID,GAAI,GAIZ,OAAAD,GAAO,KAAKD,GAAU,MAAMG,GAAGD,EAAC,CAAC,EAC1BD,GAAO,KAAK,EAAE,CACvB,CACF,CAEA,SAASQ,EAAST,GAAWU,GAAG,CAC9B,OAAO,SAAST,GAAQ,CACtB,IAAIlH,GAAIG,GAAQ,KAAM,OAAW,CAAC,EAC9BgH,GAAIS,EAAe5H,GAAGiH,GAAWC,IAAU,GAAI,CAAC,EAChDW,GAAMC,GACV,GAAIX,IAAKD,GAAO,OAAQ,OAAO,KAG/B,GAAI,MAAOlH,GAAG,OAAO,IAAI,KAAKA,GAAE,CAAC,EACjC,GAAI,MAAOA,GAAG,OAAO,IAAI,KAAKA,GAAE,EAAI,KAAQ,MAAOA,GAAIA,GAAE,EAAI,EAAE,EAY/D,GATI2H,IAAK,EAAE,MAAO3H,MAAIA,GAAE,EAAI,GAGxB,MAAOA,KAAGA,GAAE,EAAIA,GAAE,EAAI,GAAKA,GAAE,EAAI,IAGjCA,GAAE,IAAM,SAAWA,GAAE,EAAI,MAAOA,GAAIA,GAAE,EAAI,GAG1C,MAAOA,GAAG,CACZ,GAAIA,GAAE,EAAI,GAAKA,GAAE,EAAI,GAAI,OAAO,KAC1B,MAAOA,KAAIA,GAAE,EAAI,GACnB,MAAOA,IACT6H,GAAO3H,GAAQC,GAAQH,GAAE,EAAG,EAAG,CAAC,CAAC,EAAG8H,GAAMD,GAAK,UAAU,EACzDA,GAAOC,GAAM,GAAKA,KAAQ,EAAIC,GAAU,KAAKF,EAAI,EAAIE,GAAUF,EAAI,EACnEA,GAAOG,GAAO,OAAOH,IAAO7H,GAAE,EAAI,GAAK,CAAC,EACxCA,GAAE,EAAI6H,GAAK,eAAe,EAC1B7H,GAAE,EAAI6H,GAAK,YAAY,EACvB7H,GAAE,EAAI6H,GAAK,WAAW,GAAK7H,GAAE,EAAI,GAAK,IAEtC6H,GAAO9H,GAAUI,GAAQH,GAAE,EAAG,EAAG,CAAC,CAAC,EAAG8H,GAAMD,GAAK,OAAO,EACxDA,GAAOC,GAAM,GAAKA,KAAQ,EAAIG,GAAW,KAAKJ,EAAI,EAAII,GAAWJ,EAAI,EACrEA,GAAOK,GAAQ,OAAOL,IAAO7H,GAAE,EAAI,GAAK,CAAC,EACzCA,GAAE,EAAI6H,GAAK,YAAY,EACvB7H,GAAE,EAAI6H,GAAK,SAAS,EACpB7H,GAAE,EAAI6H,GAAK,QAAQ,GAAK7H,GAAE,EAAI,GAAK,EAEvC,MAAW,MAAOA,IAAK,MAAOA,MACtB,MAAOA,KAAIA,GAAE,EAAI,MAAOA,GAAIA,GAAE,EAAI,EAAI,MAAOA,GAAI,EAAI,GAC3D8H,GAAM,MAAO9H,GAAIE,GAAQC,GAAQH,GAAE,EAAG,EAAG,CAAC,CAAC,EAAE,UAAU,EAAID,GAAUI,GAAQH,GAAE,EAAG,EAAG,CAAC,CAAC,EAAE,OAAO,EAChGA,GAAE,EAAI,EACNA,GAAE,EAAI,MAAOA,IAAKA,GAAE,EAAI,GAAK,EAAIA,GAAE,EAAI,GAAK8H,GAAM,GAAK,EAAI9H,GAAE,EAAIA,GAAE,EAAI,GAAK8H,GAAM,GAAK,GAKzF,MAAI,MAAO9H,IACTA,GAAE,GAAKA,GAAE,EAAI,IAAM,EACnBA,GAAE,GAAKA,GAAE,EAAI,IACNE,GAAQF,EAAC,GAIXD,GAAUC,EAAC,CACpB,CACF,CAEA,SAAS4H,EAAe5H,GAAGiH,GAAWC,GAAQE,GAAG,CAO/C,QANID,GAAI,EACJE,GAAIJ,GAAU,OACd5G,GAAI6G,GAAO,OACXI,GACAa,GAEGhB,GAAIE,IAAG,CACZ,GAAID,IAAK/G,GAAG,MAAO,GAEnB,GADAiH,GAAIL,GAAU,WAAWE,IAAG,EACxBG,KAAM,IAGR,GAFAA,GAAIL,GAAU,OAAOE,IAAG,EACxBgB,GAAQhD,EAAOmC,MAAKG,GAAOR,GAAU,OAAOE,IAAG,EAAIG,EAAC,EAChD,CAACa,KAAWf,GAAIe,GAAMnI,GAAGkH,GAAQE,EAAC,GAAK,EAAI,MAAO,WAC7CE,IAAKJ,GAAO,WAAWE,IAAG,EACnC,MAAO,EAEX,CAEA,OAAOA,EACT,CAEA,SAASlB,EAAYlG,GAAGkH,GAAQC,GAAG,CACjC,IAAIE,GAAIrG,EAAS,KAAKkG,GAAO,MAAMC,EAAC,CAAC,EACrC,OAAOE,IAAKrH,GAAE,EAAIkB,EAAa,IAAImG,GAAE,CAAC,EAAE,YAAY,CAAC,EAAGF,GAAIE,GAAE,CAAC,EAAE,QAAU,EAC7E,CAEA,SAASjC,EAAkBpF,GAAGkH,GAAQC,GAAG,CACvC,IAAIE,GAAI/F,EAAe,KAAK4F,GAAO,MAAMC,EAAC,CAAC,EAC3C,OAAOE,IAAKrH,GAAE,EAAIuB,EAAmB,IAAI8F,GAAE,CAAC,EAAE,YAAY,CAAC,EAAGF,GAAIE,GAAE,CAAC,EAAE,QAAU,EACnF,CAEA,SAAShC,EAAarF,GAAGkH,GAAQC,GAAG,CAClC,IAAIE,GAAIjG,EAAU,KAAK8F,GAAO,MAAMC,EAAC,CAAC,EACtC,OAAOE,IAAKrH,GAAE,EAAIqB,EAAc,IAAIgG,GAAE,CAAC,EAAE,YAAY,CAAC,EAAGF,GAAIE,GAAE,CAAC,EAAE,QAAU,EAC9E,CAEA,SAAS/B,EAAgBtF,GAAGkH,GAAQC,GAAG,CACrC,IAAIE,GAAI3F,EAAa,KAAKwF,GAAO,MAAMC,EAAC,CAAC,EACzC,OAAOE,IAAKrH,GAAE,EAAI2B,EAAiB,IAAI0F,GAAE,CAAC,EAAE,YAAY,CAAC,EAAGF,GAAIE,GAAE,CAAC,EAAE,QAAU,EACjF,CAEA,SAAS9B,EAAWvF,GAAGkH,GAAQC,GAAG,CAChC,IAAIE,GAAI7F,EAAQ,KAAK0F,GAAO,MAAMC,EAAC,CAAC,EACpC,OAAOE,IAAKrH,GAAE,EAAIyB,EAAY,IAAI4F,GAAE,CAAC,EAAE,YAAY,CAAC,EAAGF,GAAIE,GAAE,CAAC,EAAE,QAAU,EAC5E,CAEA,SAAS7B,EAAoBxF,GAAGkH,GAAQC,GAAG,CACzC,OAAOS,EAAe5H,GAAGQ,EAAiB0G,GAAQC,EAAC,CACrD,CAEA,SAASP,EAAgB5G,GAAGkH,GAAQC,GAAG,CACrC,OAAOS,EAAe5H,GAAGS,EAAayG,GAAQC,EAAC,CACjD,CAEA,SAASN,EAAgB7G,GAAGkH,GAAQC,GAAG,CACrC,OAAOS,EAAe5H,GAAGU,EAAawG,GAAQC,EAAC,CACjD,CAEA,SAAStF,EAAmB7B,GAAG,CAC7B,OAAOa,EAAqBb,GAAE,OAAO,CAAC,CACxC,CAEA,SAAS8B,GAAc9B,GAAG,CACxB,OAAOY,EAAgBZ,GAAE,OAAO,CAAC,CACnC,CAEA,SAAS+B,EAAiB/B,GAAG,CAC3B,OAAOe,EAAmBf,GAAE,SAAS,CAAC,CACxC,CAEA,SAASgC,GAAYhC,GAAG,CACtB,OAAOc,EAAcd,GAAE,SAAS,CAAC,CACnC,CAEA,SAAS2C,GAAa3C,GAAG,CACvB,OAAOW,EAAe,EAAEX,GAAE,SAAS,GAAK,GAAG,CAC7C,CAEA,SAAS4C,GAAc5C,GAAG,CACxB,MAAO,GAAI,CAAC,EAAEA,GAAE,SAAS,EAAI,EAC/B,CAEA,SAAS0D,GAAsB1D,GAAG,CAChC,OAAOa,EAAqBb,GAAE,UAAU,CAAC,CAC3C,CAEA,SAAS2D,GAAiB3D,GAAG,CAC3B,OAAOY,EAAgBZ,GAAE,UAAU,CAAC,CACtC,CAEA,SAAS4D,GAAoB5D,GAAG,CAC9B,OAAOe,EAAmBf,GAAE,YAAY,CAAC,CAC3C,CAEA,SAAS6D,GAAe7D,GAAG,CACzB,OAAOc,EAAcd,GAAE,YAAY,CAAC,CACtC,CAEA,SAASwE,GAAgBxE,GAAG,CAC1B,OAAOW,EAAe,EAAEX,GAAE,YAAY,GAAK,GAAG,CAChD,CAEA,SAASyE,GAAiBzE,GAAG,CAC3B,MAAO,GAAI,CAAC,EAAEA,GAAE,YAAY,EAAI,EAClC,CAEA,MAAO,CACL,OAAQ,SAASiH,GAAW,CAC1B,IAAImB,GAAIpB,EAAUC,IAAa,GAAIrF,CAAO,EAC1C,OAAAwG,GAAE,SAAW,UAAW,CAAE,OAAOnB,EAAW,EACrCmB,EACT,EACA,MAAO,SAASnB,GAAW,CACzB,IAAIoB,GAAIX,EAAST,IAAa,GAAI,EAAK,EACvC,OAAAoB,GAAE,SAAW,UAAW,CAAE,OAAOpB,EAAW,EACrCoB,EACT,EACA,UAAW,SAASpB,GAAW,CAC7B,IAAImB,GAAIpB,EAAUC,IAAa,GAAIxD,CAAU,EAC7C,OAAA2E,GAAE,SAAW,UAAW,CAAE,OAAOnB,EAAW,EACrCmB,EACT,EACA,SAAU,SAASnB,GAAW,CAC5B,IAAIoB,GAAIX,EAAST,IAAa,GAAI,EAAI,EACtC,OAAAoB,GAAE,SAAW,UAAW,CAAE,OAAOpB,EAAW,EACrCoB,EACT,CACF,CACF,CAOA,SAASd,GAAIe,EAAOC,EAAMC,EAAO,CAC/B,IAAIC,EAAOH,EAAQ,EAAI,IAAM,GACzBpB,GAAUuB,EAAO,CAACH,EAAQA,GAAS,GACnCI,EAASxB,EAAO,OACpB,OAAOuB,GAAQC,EAASF,EAAQ,IAAI,MAAMA,EAAQE,EAAS,CAAC,EAAE,KAAKH,CAAI,EAAIrB,EAASA,EACtF,CAEA,SAASyB,IAAQC,EAAG,CAClB,OAAOA,EAAE,QAAQC,IAAW,MAAM,CACpC,CAEA,SAAS5H,GAAS6H,EAAO,CACvB,OAAO,IAAI,OAAO,OAASA,EAAM,IAAIH,GAAO,EAAE,KAAK,GAAG,EAAI,IAAK,GAAG,CACpE,CAEA,SAASxH,GAAa2H,EAAO,CAC3B,OAAO,IAAI,IAAIA,EAAM,IAAI,CAACC,EAAM5B,IAAM,CAAC4B,EAAK,YAAY,EAAG5B,CAAC,CAAC,CAAC,CAChE,CAEA,SAAST,IAAyB1G,EAAGkH,EAAQC,EAAG,CAC9C,IAAI,EAAI6B,GAAS,KAAK9B,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAO,GAAKnH,EAAE,EAAI,CAAC,EAAE,CAAC,EAAGmH,EAAI,EAAE,CAAC,EAAE,QAAU,EAC9C,CAEA,SAASZ,IAAyBvG,EAAGkH,EAAQC,EAAG,CAC9C,IAAI,EAAI6B,GAAS,KAAK9B,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAO,GAAKnH,EAAE,EAAI,CAAC,EAAE,CAAC,EAAGmH,EAAI,EAAE,CAAC,EAAE,QAAU,EAC9C,CAEA,SAASX,IAAsBxG,EAAGkH,EAAQC,EAAG,CAC3C,IAAI,EAAI6B,GAAS,KAAK9B,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAO,GAAKnH,EAAE,EAAI,CAAC,EAAE,CAAC,EAAGmH,EAAI,EAAE,CAAC,EAAE,QAAU,EAC9C,CAEA,SAASV,IAAmBzG,EAAGkH,EAAQC,EAAG,CACxC,IAAI,EAAI6B,GAAS,KAAK9B,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAO,GAAKnH,EAAE,EAAI,CAAC,EAAE,CAAC,EAAGmH,EAAI,EAAE,CAAC,EAAE,QAAU,EAC9C,CAEA,SAASR,IAAsB3G,EAAGkH,EAAQC,EAAG,CAC3C,IAAI,EAAI6B,GAAS,KAAK9B,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAO,GAAKnH,EAAE,EAAI,CAAC,EAAE,CAAC,EAAGmH,EAAI,EAAE,CAAC,EAAE,QAAU,EAC9C,CAEA,SAASvB,GAAc5F,EAAGkH,EAAQC,EAAG,CACnC,IAAI,EAAI6B,GAAS,KAAK9B,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAO,GAAKnH,EAAE,EAAI,CAAC,EAAE,CAAC,EAAGmH,EAAI,EAAE,CAAC,EAAE,QAAU,EAC9C,CAEA,SAASxB,GAAU3F,EAAGkH,EAAQC,EAAG,CAC/B,IAAI,EAAI6B,GAAS,KAAK9B,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAO,GAAKnH,EAAE,EAAI,CAAC,EAAE,CAAC,GAAK,CAAC,EAAE,CAAC,EAAI,GAAK,KAAO,KAAOmH,EAAI,EAAE,CAAC,EAAE,QAAU,EAC3E,CAEA,SAASL,IAAU9G,EAAGkH,EAAQC,EAAG,CAC/B,IAAI,EAAI,+BAA+B,KAAKD,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAClE,OAAO,GAAKnH,EAAE,EAAI,EAAE,CAAC,EAAI,EAAI,EAAE,EAAE,CAAC,GAAK,EAAE,CAAC,GAAK,OAAQmH,EAAI,EAAE,CAAC,EAAE,QAAU,EAC5E,CAEA,SAAShB,IAAanG,EAAGkH,EAAQC,EAAG,CAClC,IAAI,EAAI6B,GAAS,KAAK9B,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAO,GAAKnH,EAAE,EAAI,EAAE,CAAC,EAAI,EAAI,EAAGmH,EAAI,EAAE,CAAC,EAAE,QAAU,EACrD,CAEA,SAASnB,IAAiBhG,EAAGkH,EAAQC,EAAG,CACtC,IAAI,EAAI6B,GAAS,KAAK9B,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAO,GAAKnH,EAAE,EAAI,EAAE,CAAC,EAAI,EAAGmH,EAAI,EAAE,CAAC,EAAE,QAAU,EACjD,CAEA,SAAS1B,GAAgBzF,EAAGkH,EAAQC,EAAG,CACrC,IAAI,EAAI6B,GAAS,KAAK9B,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAO,GAAKnH,EAAE,EAAI,CAAC,EAAE,CAAC,EAAGmH,EAAI,EAAE,CAAC,EAAE,QAAU,EAC9C,CAEA,SAASrB,IAAe9F,EAAGkH,EAAQC,EAAG,CACpC,IAAI,EAAI6B,GAAS,KAAK9B,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAO,GAAKnH,EAAE,EAAI,EAAGA,EAAE,EAAI,CAAC,EAAE,CAAC,EAAGmH,EAAI,EAAE,CAAC,EAAE,QAAU,EACvD,CAEA,SAAStB,GAAY7F,EAAGkH,EAAQC,EAAG,CACjC,IAAI,EAAI6B,GAAS,KAAK9B,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAO,GAAKnH,EAAE,EAAI,CAAC,EAAE,CAAC,EAAGmH,EAAI,EAAE,CAAC,EAAE,QAAU,EAC9C,CAEA,SAASlB,IAAajG,EAAGkH,EAAQC,EAAG,CAClC,IAAI,EAAI6B,GAAS,KAAK9B,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAO,GAAKnH,EAAE,EAAI,CAAC,EAAE,CAAC,EAAGmH,EAAI,EAAE,CAAC,EAAE,QAAU,EAC9C,CAEA,SAASb,IAAatG,EAAGkH,EAAQC,EAAG,CAClC,IAAI,EAAI6B,GAAS,KAAK9B,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAO,GAAKnH,EAAE,EAAI,CAAC,EAAE,CAAC,EAAGmH,EAAI,EAAE,CAAC,EAAE,QAAU,EAC9C,CAEA,SAASpB,IAAkB/F,EAAGkH,EAAQC,EAAG,CACvC,IAAI,EAAI6B,GAAS,KAAK9B,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAO,GAAKnH,EAAE,EAAI,CAAC,EAAE,CAAC,EAAGmH,EAAI,EAAE,CAAC,EAAE,QAAU,EAC9C,CAEA,SAASzB,IAAkB1F,EAAGkH,EAAQC,EAAG,CACvC,IAAI,EAAI6B,GAAS,KAAK9B,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAO,GAAKnH,EAAE,EAAI,KAAK,MAAM,EAAE,CAAC,EAAI,GAAI,EAAGmH,EAAI,EAAE,CAAC,EAAE,QAAU,EAChE,CAEA,SAASJ,IAAoB/G,EAAGkH,EAAQC,EAAG,CACzC,IAAI,EAAI8B,IAAU,KAAK/B,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC7C,OAAO,EAAIA,EAAI,EAAE,CAAC,EAAE,OAAS,EAC/B,CAEA,SAASf,IAAmBpG,EAAGkH,EAAQC,EAAG,CACxC,IAAI,EAAI6B,GAAS,KAAK9B,EAAO,MAAMC,CAAC,CAAC,EACrC,OAAO,GAAKnH,EAAE,EAAI,CAAC,EAAE,CAAC,EAAGmH,EAAI,EAAE,CAAC,EAAE,QAAU,EAC9C,CAEA,SAASd,IAA0BrG,EAAGkH,EAAQC,EAAG,CAC/C,IAAI,EAAI6B,GAAS,KAAK9B,EAAO,MAAMC,CAAC,CAAC,EACrC,OAAO,GAAKnH,EAAE,EAAI,CAAC,EAAE,CAAC,EAAGmH,EAAI,EAAE,CAAC,EAAE,QAAU,EAC9C,CAEA,SAASlF,GAAiBjC,EAAGqI,EAAG,CAC9B,OAAOd,GAAIvH,EAAE,QAAQ,EAAGqI,EAAG,CAAC,CAC9B,CAEA,SAAShG,IAAarC,EAAGqI,EAAG,CAC1B,OAAOd,GAAIvH,EAAE,SAAS,EAAGqI,EAAG,CAAC,CAC/B,CAEA,SAAS/F,IAAatC,EAAGqI,EAAG,CAC1B,OAAOd,GAAIvH,EAAE,SAAS,EAAI,IAAM,GAAIqI,EAAG,CAAC,CAC1C,CAEA,SAAS9F,IAAgBvC,EAAGqI,EAAG,CAC7B,OAAOd,GAAI,EAAIW,GAAQ,MAAMgB,GAASlJ,CAAC,EAAGA,CAAC,EAAGqI,EAAG,CAAC,CACpD,CAEA,SAAS7F,GAAmBxC,EAAGqI,EAAG,CAChC,OAAOd,GAAIvH,EAAE,gBAAgB,EAAGqI,EAAG,CAAC,CACtC,CAEA,SAASnG,IAAmBlC,EAAGqI,EAAG,CAChC,OAAO7F,GAAmBxC,EAAGqI,CAAC,EAAI,KACpC,CAEA,SAAS5F,IAAkBzC,EAAGqI,EAAG,CAC/B,OAAOd,GAAIvH,EAAE,SAAS,EAAI,EAAGqI,EAAG,CAAC,CACnC,CAEA,SAAS3F,IAAc1C,EAAGqI,EAAG,CAC3B,OAAOd,GAAIvH,EAAE,WAAW,EAAGqI,EAAG,CAAC,CACjC,CAEA,SAAStF,IAAc/C,EAAGqI,EAAG,CAC3B,OAAOd,GAAIvH,EAAE,WAAW,EAAGqI,EAAG,CAAC,CACjC,CAEA,SAASrF,IAA0BhD,EAAG,CACpC,IAAI8H,EAAM9H,EAAE,OAAO,EACnB,OAAO8H,IAAQ,EAAI,EAAIA,CACzB,CAEA,SAAS7E,IAAuBjD,EAAGqI,EAAG,CACpC,OAAOd,GAAI4B,GAAW,MAAMD,GAASlJ,CAAC,EAAI,EAAGA,CAAC,EAAGqI,EAAG,CAAC,CACvD,CAEA,SAASe,GAAKpJ,EAAG,CACf,IAAI8H,EAAM9H,EAAE,OAAO,EACnB,OAAQ8H,GAAO,GAAKA,IAAQ,EAAKuB,GAAarJ,CAAC,EAAIqJ,GAAa,KAAKrJ,CAAC,CACxE,CAEA,SAASkD,IAAoBlD,EAAGqI,EAAG,CACjC,OAAArI,EAAIoJ,GAAKpJ,CAAC,EACHuH,GAAI8B,GAAa,MAAMH,GAASlJ,CAAC,EAAGA,CAAC,GAAKkJ,GAASlJ,CAAC,EAAE,OAAO,IAAM,GAAIqI,EAAG,CAAC,CACpF,CAEA,SAASlF,IAA0BnD,EAAG,CACpC,OAAOA,EAAE,OAAO,CAClB,CAEA,SAASoD,IAAuBpD,EAAGqI,EAAG,CACpC,OAAOd,GAAIU,GAAW,MAAMiB,GAASlJ,CAAC,EAAI,EAAGA,CAAC,EAAGqI,EAAG,CAAC,CACvD,CAEA,SAAShF,IAAWrD,EAAGqI,EAAG,CACxB,OAAOd,GAAIvH,EAAE,YAAY,EAAI,IAAKqI,EAAG,CAAC,CACxC,CAEA,SAASlG,IAAcnC,EAAGqI,EAAG,CAC3B,OAAArI,EAAIoJ,GAAKpJ,CAAC,EACHuH,GAAIvH,EAAE,YAAY,EAAI,IAAKqI,EAAG,CAAC,CACxC,CAEA,SAAS/E,IAAetD,EAAGqI,EAAG,CAC5B,OAAOd,GAAIvH,EAAE,YAAY,EAAI,IAAOqI,EAAG,CAAC,CAC1C,CAEA,SAASjG,IAAkBpC,EAAGqI,EAAG,CAC/B,IAAIP,EAAM9H,EAAE,OAAO,EACnB,OAAAA,EAAK8H,GAAO,GAAKA,IAAQ,EAAKuB,GAAarJ,CAAC,EAAIqJ,GAAa,KAAKrJ,CAAC,EAC5DuH,GAAIvH,EAAE,YAAY,EAAI,IAAOqI,EAAG,CAAC,CAC1C,CAEA,SAAS9E,IAAWvD,EAAG,CACrB,IAAIsJ,EAAItJ,EAAE,kBAAkB,EAC5B,OAAQsJ,EAAI,EAAI,KAAOA,GAAK,GAAI,MAC1B/B,GAAI+B,EAAI,GAAK,EAAG,IAAK,CAAC,EACtB/B,GAAI+B,EAAI,GAAI,IAAK,CAAC,CAC1B,CAEA,SAASxF,GAAoB9D,EAAGqI,EAAG,CACjC,OAAOd,GAAIvH,EAAE,WAAW,EAAGqI,EAAG,CAAC,CACjC,CAEA,SAASnE,IAAgBlE,EAAGqI,EAAG,CAC7B,OAAOd,GAAIvH,EAAE,YAAY,EAAGqI,EAAG,CAAC,CAClC,CAEA,SAASlE,IAAgBnE,EAAGqI,EAAG,CAC7B,OAAOd,GAAIvH,EAAE,YAAY,EAAI,IAAM,GAAIqI,EAAG,CAAC,CAC7C,CAEA,SAASjE,IAAmBpE,EAAGqI,EAAG,CAChC,OAAOd,GAAI,EAAIS,GAAO,MAAMuB,GAAQvJ,CAAC,EAAGA,CAAC,EAAGqI,EAAG,CAAC,CAClD,CAEA,SAAShE,GAAsBrE,EAAGqI,EAAG,CACnC,OAAOd,GAAIvH,EAAE,mBAAmB,EAAGqI,EAAG,CAAC,CACzC,CAEA,SAAStE,IAAsB/D,EAAGqI,EAAG,CACnC,OAAOhE,GAAsBrE,EAAGqI,CAAC,EAAI,KACvC,CAEA,SAAS/D,IAAqBtE,EAAGqI,EAAG,CAClC,OAAOd,GAAIvH,EAAE,YAAY,EAAI,EAAGqI,EAAG,CAAC,CACtC,CAEA,SAAS9D,IAAiBvE,EAAGqI,EAAG,CAC9B,OAAOd,GAAIvH,EAAE,cAAc,EAAGqI,EAAG,CAAC,CACpC,CAEA,SAAS3D,IAAiB1E,EAAGqI,EAAG,CAC9B,OAAOd,GAAIvH,EAAE,cAAc,EAAGqI,EAAG,CAAC,CACpC,CAEA,SAAS1D,IAA6B3E,EAAG,CACvC,IAAIwJ,EAAMxJ,EAAE,UAAU,EACtB,OAAOwJ,IAAQ,EAAI,EAAIA,CACzB,CAEA,SAAS5E,IAA0B5E,EAAGqI,EAAG,CACvC,OAAOd,GAAIkC,GAAU,MAAMF,GAAQvJ,CAAC,EAAI,EAAGA,CAAC,EAAGqI,EAAG,CAAC,CACrD,CAEA,SAASqB,GAAQ1J,EAAG,CAClB,IAAI8H,EAAM9H,EAAE,UAAU,EACtB,OAAQ8H,GAAO,GAAKA,IAAQ,EAAK6B,GAAY3J,CAAC,EAAI2J,GAAY,KAAK3J,CAAC,CACtE,CAEA,SAAS6E,IAAuB7E,EAAGqI,EAAG,CACpC,OAAArI,EAAI0J,GAAQ1J,CAAC,EACNuH,GAAIoC,GAAY,MAAMJ,GAAQvJ,CAAC,EAAGA,CAAC,GAAKuJ,GAAQvJ,CAAC,EAAE,UAAU,IAAM,GAAIqI,EAAG,CAAC,CACpF,CAEA,SAASvD,IAA6B9E,EAAG,CACvC,OAAOA,EAAE,UAAU,CACrB,CAEA,SAAS+E,IAA0B/E,EAAGqI,EAAG,CACvC,OAAOd,GAAIQ,GAAU,MAAMwB,GAAQvJ,CAAC,EAAI,EAAGA,CAAC,EAAGqI,EAAG,CAAC,CACrD,CAEA,SAASrD,IAAchF,EAAGqI,EAAG,CAC3B,OAAOd,GAAIvH,EAAE,eAAe,EAAI,IAAKqI,EAAG,CAAC,CAC3C,CAEA,SAASrE,IAAiBhE,EAAGqI,EAAG,CAC9B,OAAArI,EAAI0J,GAAQ1J,CAAC,EACNuH,GAAIvH,EAAE,eAAe,EAAI,IAAKqI,EAAG,CAAC,CAC3C,CAEA,SAASpD,IAAkBjF,EAAGqI,EAAG,CAC/B,OAAOd,GAAIvH,EAAE,eAAe,EAAI,IAAOqI,EAAG,CAAC,CAC7C,CAEA,SAASpE,IAAqBjE,EAAGqI,EAAG,CAClC,IAAIP,EAAM9H,EAAE,UAAU,EACtB,OAAAA,EAAK8H,GAAO,GAAKA,IAAQ,EAAK6B,GAAY3J,CAAC,EAAI2J,GAAY,KAAK3J,CAAC,EAC1DuH,GAAIvH,EAAE,eAAe,EAAI,IAAOqI,EAAG,CAAC,CAC7C,CAEA,SAASnD,KAAgB,CACvB,MAAO,OACT,CAEA,SAAS1B,IAAuB,CAC9B,MAAO,GACT,CAEA,SAASX,GAAoB7C,EAAG,CAC9B,MAAO,CAACA,CACV,CAEA,SAAS8C,GAA2B9C,EAAG,CACrC,OAAO,KAAK,MAAM,CAACA,EAAI,GAAI,CAC7B,CAxrBA,IAmYIyH,GACAuB,GACAC,IACAJ,IAtYJe,GAAAC,GAAA,KAAAC,KAmYIrC,GAAO,CAAC,IAAK,GAAI,EAAK,IAAK,EAAK,GAAG,EACnCuB,GAAW,UACXC,IAAY,KACZJ,IAAY,wBCnXD,SAARkB,GAA+BC,EAAY,CAChD,OAAAC,GAASC,GAAaF,CAAU,EAChCG,GAAaF,GAAO,OACpBG,GAAYH,GAAO,MACnBI,GAAYJ,GAAO,UACnBK,GAAWL,GAAO,SACXA,EACT,CA1BA,IAEIA,GACOE,GACAC,GACAC,GACAC,GANXC,GAAAC,GAAA,KAAAC,KAQAV,GAAc,CACZ,SAAU,SACV,KAAM,aACN,KAAM,eACN,QAAS,CAAC,KAAM,IAAI,EACpB,KAAM,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,UAAU,EACnF,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAK,EAC3D,OAAQ,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,UAAU,EACjI,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAK,CAClG,CAAC,ICjBD,IAAAW,GAAAC,GAAA,KAAAC,OCMA,SAASC,IAAKC,EAAG,CACf,OAAO,IAAI,KAAKA,CAAC,CACnB,CAEA,SAASC,IAAOD,EAAG,CACjB,OAAOA,aAAa,KAAO,CAACA,EAAI,CAAC,IAAI,KAAK,CAACA,CAAC,CAC9C,CAEO,SAASE,GAASC,EAAOC,EAAcC,EAAMC,EAAOC,EAAMC,EAAKC,EAAMC,EAAQC,EAAQC,EAAQ,CAClG,IAAIC,EAAQC,GAAW,EACnBC,EAASF,EAAM,OACfG,EAASH,EAAM,OAEfI,EAAoBL,EAAO,KAAK,EAChCM,EAAeN,EAAO,KAAK,EAC3BO,EAAeP,EAAO,OAAO,EAC7BQ,EAAaR,EAAO,OAAO,EAC3BS,EAAYT,EAAO,OAAO,EAC1BU,EAAaV,EAAO,OAAO,EAC3BW,EAAcX,EAAO,IAAI,EACzBY,EAAaZ,EAAO,IAAI,EAE5B,SAASa,EAAW1B,EAAM,CACxB,OAAQY,EAAOZ,CAAI,EAAIA,EAAOkB,EACxBP,EAAOX,CAAI,EAAIA,EAAOmB,EACtBT,EAAKV,CAAI,EAAIA,EAAOoB,EACpBX,EAAIT,CAAI,EAAIA,EAAOqB,EACnBd,EAAMP,CAAI,EAAIA,EAAQQ,EAAKR,CAAI,EAAIA,EAAOsB,EAAYC,EACtDjB,EAAKN,CAAI,EAAIA,EAAOwB,EACpBC,GAAYzB,CAAI,CACxB,CAEA,OAAAc,EAAM,OAAS,SAASa,EAAG,CACzB,OAAO,IAAI,KAAKX,EAAOW,CAAC,CAAC,CAC3B,EAEAb,EAAM,OAAS,SAASc,EAAG,CACzB,OAAO,UAAU,OAASX,EAAO,MAAM,KAAKW,EAAG1B,GAAM,CAAC,EAAIe,EAAO,EAAE,IAAIjB,GAAI,CAC7E,EAEAc,EAAM,MAAQ,SAASe,EAAU,CAC/B,IAAIC,EAAIb,EAAO,EACf,OAAOb,EAAM0B,EAAE,CAAC,EAAGA,EAAEA,EAAE,OAAS,CAAC,EAAGD,GAAmB,EAAa,CACtE,EAEAf,EAAM,WAAa,SAASiB,EAAOC,EAAW,CAC5C,OAAOA,GAAa,KAAON,EAAab,EAAOmB,CAAS,CAC1D,EAEAlB,EAAM,KAAO,SAASe,EAAU,CAC9B,IAAIC,EAAIb,EAAO,EACf,OAAI,CAACY,GAAY,OAAOA,EAAS,OAAU,cAAYA,EAAWxB,EAAayB,EAAE,CAAC,EAAGA,EAAEA,EAAE,OAAS,CAAC,EAAGD,GAAmB,EAAa,GAC/HA,EAAWZ,EAAOgB,GAAKH,EAAGD,CAAQ,CAAC,EAAIf,CAChD,EAEAA,EAAM,KAAO,UAAW,CACtB,OAAOoB,GAAKpB,EAAOX,GAASC,EAAOC,EAAcC,EAAMC,EAAOC,EAAMC,EAAKC,EAAMC,EAAQC,EAAQC,CAAM,CAAC,CACxG,EAEOC,CACT,CAEe,SAARqB,IAAwB,CAC7B,OAAOC,GAAU,MAAMjC,GAASkC,GAAWC,GAAkBC,GAAUC,GAAWC,GAAUC,GAASC,GAAUC,GAAYhC,GAAYiC,EAAU,EAAE,OAAO,CAAC,IAAI,KAAK,IAAM,EAAG,CAAC,EAAG,IAAI,KAAK,IAAM,EAAG,CAAC,CAAC,CAAC,EAAG,SAAS,CACpN,CAtEA,IAAAC,GAAAC,GAAA,KAAAC,KACAA,KACAC,KACAC,KACAC,OCCe,SAARC,IAA2B,CAChC,OAAOC,GAAU,MAAMC,GAASC,GAAUC,GAAiBC,GAASC,GAAUC,GAASC,GAAQC,GAASC,GAAWC,GAAWC,EAAS,EAAE,OAAO,CAAC,KAAK,IAAI,IAAM,EAAG,CAAC,EAAG,KAAK,IAAI,IAAM,EAAG,CAAC,CAAC,CAAC,EAAG,SAAS,CAC1M,CAPA,IAAAC,GAAAC,GAAA,KAAAC,KACAA,KACAC,KACAC,OCKA,SAASC,IAAc,CACrB,IAAIC,EAAK,EACLC,EAAK,EACLC,EACAC,EACAC,EACAC,EACAC,EAAeC,GACfC,EAAQ,GACRC,EAEJ,SAASC,EAAMC,EAAG,CAChB,OAAOA,GAAK,MAAQ,MAAMA,EAAI,CAACA,CAAC,EAAIF,EAAUH,EAAaF,IAAQ,EAAI,IAAOO,GAAKN,EAAUM,CAAC,EAAIT,GAAME,EAAKI,EAAQ,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGG,CAAC,CAAC,EAAIA,EAAE,CACvJ,CAEAD,EAAM,OAAS,SAASE,EAAG,CACzB,OAAO,UAAU,QAAU,CAACZ,EAAIC,CAAE,EAAIW,EAAGV,EAAKG,EAAUL,EAAK,CAACA,CAAE,EAAGG,EAAKE,EAAUJ,EAAK,CAACA,CAAE,EAAGG,EAAMF,IAAOC,EAAK,EAAI,GAAKA,EAAKD,GAAKQ,GAAS,CAACV,EAAIC,CAAE,CACpJ,EAEAS,EAAM,MAAQ,SAASE,EAAG,CACxB,OAAO,UAAU,QAAUJ,EAAQ,CAAC,CAACI,EAAGF,GAASF,CACnD,EAEAE,EAAM,aAAe,SAASE,EAAG,CAC/B,OAAO,UAAU,QAAUN,EAAeM,EAAGF,GAASJ,CACxD,EAEA,SAASO,EAAMC,EAAa,CAC1B,OAAO,SAASF,EAAG,CACjB,IAAIG,EAAIC,EACR,OAAO,UAAU,QAAU,CAACD,EAAIC,CAAE,EAAIJ,EAAGN,EAAeQ,EAAYC,EAAIC,CAAE,EAAGN,GAAS,CAACJ,EAAa,CAAC,EAAGA,EAAa,CAAC,CAAC,CACzH,CACF,CAEA,OAAAI,EAAM,MAAQG,EAAMI,EAAW,EAE/BP,EAAM,WAAaG,EAAMK,EAAgB,EAEzCR,EAAM,QAAU,SAASE,EAAG,CAC1B,OAAO,UAAU,QAAUH,EAAUG,EAAGF,GAASD,CACnD,EAEO,SAASU,EAAG,CACjB,OAAAd,EAAYc,EAAGjB,EAAKiB,EAAEnB,CAAE,EAAGG,EAAKgB,EAAElB,CAAE,EAAGG,EAAMF,IAAOC,EAAK,EAAI,GAAKA,EAAKD,GAChEQ,CACT,CACF,CAEO,SAASU,GAAKC,EAAQC,EAAQ,CACnC,OAAOA,EACF,OAAOD,EAAO,OAAO,CAAC,EACtB,aAAaA,EAAO,aAAa,CAAC,EAClC,MAAMA,EAAO,MAAM,CAAC,EACpB,QAAQA,EAAO,QAAQ,CAAC,CAC/B,CAEe,SAARE,IAA8B,CACnC,IAAIb,EAAQc,GAAUzB,GAAY,EAAEQ,EAAQ,CAAC,EAE7C,OAAAG,EAAM,KAAO,UAAW,CACtB,OAAOU,GAAKV,EAAOa,GAAW,CAAC,CACjC,EAEOE,GAAiB,MAAMf,EAAO,SAAS,CAChD,CAEO,SAASgB,IAAgB,CAC9B,IAAIhB,EAAQiB,GAAQ5B,GAAY,CAAC,EAAE,OAAO,CAAC,EAAG,EAAE,CAAC,EAEjD,OAAAW,EAAM,KAAO,UAAW,CACtB,OAAOU,GAAKV,EAAOgB,GAAc,CAAC,EAAE,KAAKhB,EAAM,KAAK,CAAC,CACvD,EAEOe,GAAiB,MAAMf,EAAO,SAAS,CAChD,CAEO,SAASkB,IAAmB,CACjC,IAAIlB,EAAQmB,GAAU9B,GAAY,CAAC,EAEnC,OAAAW,EAAM,KAAO,UAAW,CACtB,OAAOU,GAAKV,EAAOkB,GAAiB,CAAC,EAAE,SAASlB,EAAM,SAAS,CAAC,CAClE,EAEOe,GAAiB,MAAMf,EAAO,SAAS,CAChD,CAEO,SAASoB,IAAgB,CAC9B,IAAIpB,EAAQqB,GAAOhC,GAAY,CAAC,EAEhC,OAAAW,EAAM,KAAO,UAAW,CACtB,OAAOU,GAAKV,EAAOoB,GAAc,CAAC,EAAE,SAASpB,EAAM,SAAS,CAAC,CAC/D,EAEOe,GAAiB,MAAMf,EAAO,SAAS,CAChD,CAEO,SAASsB,IAAiB,CAC/B,OAAOF,GAAc,MAAM,KAAM,SAAS,EAAE,SAAS,EAAG,CAC1D,CA1GA,IAAAG,GAAAC,GAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,OCFe,SAARC,IAAsC,CAC3C,IAAIC,EAAS,CAAC,EACVC,EAAeC,GAEnB,SAASC,EAAMC,EAAG,CAChB,GAAIA,GAAK,MAAQ,CAAC,MAAMA,EAAI,CAACA,CAAC,EAAG,OAAOH,GAAcI,GAAOL,EAAQI,EAAG,CAAC,EAAI,IAAMJ,EAAO,OAAS,EAAE,CACvG,CAEA,OAAAG,EAAM,OAAS,SAASG,EAAG,CACzB,GAAI,CAAC,UAAU,OAAQ,OAAON,EAAO,MAAM,EAC3CA,EAAS,CAAC,EACV,QAASO,KAAKD,EAAOC,GAAK,MAAQ,CAAC,MAAMA,EAAI,CAACA,CAAC,GAAGP,EAAO,KAAKO,CAAC,EAC/D,OAAAP,EAAO,KAAKQ,EAAS,EACdL,CACT,EAEAA,EAAM,aAAe,SAASG,EAAG,CAC/B,OAAO,UAAU,QAAUL,EAAeK,EAAGH,GAASF,CACxD,EAEAE,EAAM,MAAQ,UAAW,CACvB,OAAOH,EAAO,IAAI,CAACO,EAAG,IAAMN,EAAa,GAAKD,EAAO,OAAS,EAAE,CAAC,CACnE,EAEAG,EAAM,UAAY,SAAS,EAAG,CAC5B,OAAO,MAAM,KAAK,CAAC,OAAQ,EAAI,CAAC,EAAG,CAACG,EAAGG,IAAMC,GAASV,EAAQS,EAAI,CAAC,CAAC,CACtE,EAEAN,EAAM,KAAO,UAAW,CACtB,OAAOJ,GAAmBE,CAAY,EAAE,OAAOD,CAAM,CACvD,EAEOW,GAAiB,MAAMR,EAAO,SAAS,CAChD,CArCA,IAAAS,GAAAC,GAAA,KAAAC,KACAC,KACAC,OCOA,SAASC,IAAc,CACrB,IAAIC,EAAK,EACLC,EAAK,GACLC,EAAK,EACLC,EAAI,EACJC,EACAC,EACAC,EACAC,EACAC,EACAC,EAAeC,GACfC,EACAC,EAAQ,GACRC,EAEJ,SAASC,EAAMC,EAAG,CAChB,OAAO,MAAMA,EAAI,CAACA,CAAC,EAAIF,GAAWE,EAAI,KAAQA,EAAI,CAACJ,EAAUI,CAAC,GAAKV,IAAOF,EAAIY,EAAIZ,EAAIE,EAAKE,EAAMC,GAAMC,EAAaG,EAAQ,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGG,CAAC,CAAC,EAAIA,CAAC,EAC7J,CAEAD,EAAM,OAAS,SAASE,EAAG,CACzB,OAAO,UAAU,QAAU,CAAChB,EAAIC,EAAIC,CAAE,EAAIc,EAAGZ,EAAKO,EAAUX,EAAK,CAACA,CAAE,EAAGK,EAAKM,EAAUV,EAAK,CAACA,CAAE,EAAGK,EAAKK,EAAUT,EAAK,CAACA,CAAE,EAAGK,EAAMH,IAAOC,EAAK,EAAI,IAAOA,EAAKD,GAAKI,EAAMH,IAAOC,EAAK,EAAI,IAAOA,EAAKD,GAAKF,EAAIE,EAAKD,EAAK,GAAK,EAAGU,GAAS,CAACd,EAAIC,EAAIC,CAAE,CACrP,EAEAY,EAAM,MAAQ,SAASE,EAAG,CACxB,OAAO,UAAU,QAAUJ,EAAQ,CAAC,CAACI,EAAGF,GAASF,CACnD,EAEAE,EAAM,aAAe,SAASE,EAAG,CAC/B,OAAO,UAAU,QAAUP,EAAeO,EAAGF,GAASL,CACxD,EAEA,SAASQ,EAAMC,EAAa,CAC1B,OAAO,SAASF,EAAG,CACjB,IAAIG,EAAIC,EAAIC,EACZ,OAAO,UAAU,QAAU,CAACF,EAAIC,EAAIC,CAAE,EAAIL,EAAGP,EAAea,GAAUJ,EAAa,CAACC,EAAIC,EAAIC,CAAE,CAAC,EAAGP,GAAS,CAACL,EAAa,CAAC,EAAGA,EAAa,EAAG,EAAGA,EAAa,CAAC,CAAC,CACjK,CACF,CAEA,OAAAK,EAAM,MAAQG,EAAMM,EAAW,EAE/BT,EAAM,WAAaG,EAAMO,EAAgB,EAEzCV,EAAM,QAAU,SAASE,EAAG,CAC1B,OAAO,UAAU,QAAUH,EAAUG,EAAGF,GAASD,CACnD,EAEO,SAASY,EAAG,CACjB,OAAAd,EAAYc,EAAGrB,EAAKqB,EAAEzB,CAAE,EAAGK,EAAKoB,EAAExB,CAAE,EAAGK,EAAKmB,EAAEvB,CAAE,EAAGK,EAAMH,IAAOC,EAAK,EAAI,IAAOA,EAAKD,GAAKI,EAAMH,IAAOC,EAAK,EAAI,IAAOA,EAAKD,GAAKF,EAAIE,EAAKD,EAAK,GAAK,EAC7IU,CACT,CACF,CAEe,SAARY,IAA6B,CAClC,IAAIZ,EAAQa,GAAU5B,GAAY,EAAEW,EAAQ,CAAC,EAE7C,OAAAI,EAAM,KAAO,UAAW,CACtB,OAAOc,GAAKd,EAAOY,GAAU,CAAC,CAChC,EAEOG,GAAiB,MAAMf,EAAO,SAAS,CAChD,CAEO,SAASgB,IAAe,CAC7B,IAAIhB,EAAQiB,GAAQhC,GAAY,CAAC,EAAE,OAAO,CAAC,GAAK,EAAG,EAAE,CAAC,EAEtD,OAAAe,EAAM,KAAO,UAAW,CACtB,OAAOc,GAAKd,EAAOgB,GAAa,CAAC,EAAE,KAAKhB,EAAM,KAAK,CAAC,CACtD,EAEOe,GAAiB,MAAMf,EAAO,SAAS,CAChD,CAEO,SAASkB,IAAkB,CAChC,IAAIlB,EAAQmB,GAAUlC,GAAY,CAAC,EAEnC,OAAAe,EAAM,KAAO,UAAW,CACtB,OAAOc,GAAKd,EAAOkB,GAAgB,CAAC,EAAE,SAASlB,EAAM,SAAS,CAAC,CACjE,EAEOe,GAAiB,MAAMf,EAAO,SAAS,CAChD,CAEO,SAASoB,IAAe,CAC7B,IAAIpB,EAAQqB,GAAOpC,GAAY,CAAC,EAEhC,OAAAe,EAAM,KAAO,UAAW,CACtB,OAAOc,GAAKd,EAAOoB,GAAa,CAAC,EAAE,SAASpB,EAAM,SAAS,CAAC,CAC9D,EAEOe,GAAiB,MAAMf,EAAO,SAAS,CAChD,CAEO,SAASsB,IAAgB,CAC9B,OAAOF,GAAa,MAAM,KAAM,SAAS,EAAE,SAAS,EAAG,CACzD,CAvGA,IAAAG,GAAAC,GAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,OCPA,IAAAC,GAAA,GAAAC,GAAAD,GAAA,eAAAE,GAAA,mBAAAC,GAAA,sBAAAC,GAAA,sBAAAC,GAAA,uBAAAC,GAAA,yBAAAC,GAAA,kBAAAC,GAAA,kBAAAC,GAAA,gBAAAC,GAAA,aAAAC,GAAA,iBAAAC,GAAA,eAAAC,GAAA,aAAAC,GAAA,kBAAAC,GAAA,kBAAAC,GAAA,gBAAAC,GAAA,oBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,4BAAAC,GAAA,wBAAAC,GAAA,0BAAAC,GAAA,cAAAC,GAAA,gBAAAC,GAAA,mBAAAC,GAAA,cAAAC,GAAA,aAAAC,GAAA,eAAAC,KAAA,IAAAC,GAAAC,GAAA,KAAAC,KAKAC,KAIAC,KAIAC,KAIAC,KAIAC,KAKAC,KAKAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAQAC,KAIAC,KAQAC,OC3Ee,SAARC,GAAiBC,EAAG,CACzB,OAAOA,CACT,CAFA,IAAAC,GAAAC,GAAA,QCQA,SAASC,IAAWC,EAAG,CACrB,MAAO,aAAeA,EAAI,KAC5B,CAEA,SAASC,IAAWC,EAAG,CACrB,MAAO,eAAiBA,EAAI,GAC9B,CAEA,SAASC,IAAOC,EAAO,CACrB,OAAOC,GAAK,CAACD,EAAMC,CAAC,CACtB,CAEA,SAASC,IAAOF,EAAOG,EAAQ,CAC7B,OAAAA,EAAS,KAAK,IAAI,EAAGH,EAAM,UAAU,EAAIG,EAAS,CAAC,EAAI,EACnDH,EAAM,MAAM,IAAGG,EAAS,KAAK,MAAMA,CAAM,GACtCF,GAAK,CAACD,EAAMC,CAAC,EAAIE,CAC1B,CAEA,SAASC,KAAW,CAClB,MAAO,CAAC,KAAK,MACf,CAEA,SAASC,GAAKC,EAAQN,EAAO,CAC3B,IAAIO,EAAgB,CAAC,EACjBC,EAAa,KACbC,EAAa,KACbC,EAAgB,EAChBC,EAAgB,EAChBC,EAAc,EACdT,EAAS,OAAO,OAAW,KAAe,OAAO,iBAAmB,EAAI,EAAI,GAC5EU,EAAIP,IAAWQ,IAAOR,IAAWS,GAAO,GAAK,EAC7CnB,EAAIU,IAAWS,IAAQT,IAAWU,GAAQ,IAAM,IAChDC,EAAYX,IAAWQ,IAAOR,IAAWY,GAASvB,IAAaE,IAEnE,SAASQ,EAAKc,EAAS,CACrB,IAAIC,EAASZ,IAAsBR,EAAM,MAAQA,EAAM,MAAM,MAAMA,EAAOO,CAAa,EAAIP,EAAM,OAAO,GACpGqB,EAASZ,IAAsBT,EAAM,WAAaA,EAAM,WAAW,MAAMA,EAAOO,CAAa,EAAIe,IACjGC,EAAU,KAAK,IAAIb,EAAe,CAAC,EAAIE,EACvCY,EAAQxB,EAAM,MAAM,EACpByB,EAAS,CAACD,EAAM,CAAC,EAAIrB,EACrBuB,EAAS,CAACF,EAAMA,EAAM,OAAS,CAAC,EAAIrB,EACpCwB,GAAY3B,EAAM,UAAYE,IAASH,KAAQC,EAAM,KAAK,EAAGG,CAAM,EACnEyB,EAAYT,EAAQ,UAAYA,EAAQ,UAAU,EAAIA,EACtDU,EAAOD,EAAU,UAAU,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,EACjDE,EAAOF,EAAU,UAAU,OAAO,EAAE,KAAKR,EAAQpB,CAAK,EAAE,MAAM,EAC9D+B,EAAWD,EAAK,KAAK,EACrBE,EAAYF,EAAK,MAAM,EAAE,OAAO,GAAG,EAAE,KAAK,QAAS,MAAM,EACzDG,EAAOH,EAAK,OAAO,MAAM,EACzBI,EAAOJ,EAAK,OAAO,MAAM,EAE7BD,EAAOA,EAAK,MAAMA,EAAK,MAAM,EAAE,OAAO,OAAQ,OAAO,EAChD,KAAK,QAAS,QAAQ,EACtB,KAAK,SAAU,cAAc,CAAC,EAEnCC,EAAOA,EAAK,MAAME,CAAS,EAE3BC,EAAOA,EAAK,MAAMD,EAAU,OAAO,MAAM,EACpC,KAAK,SAAU,cAAc,EAC7B,KAAKpC,EAAI,IAAKiB,EAAIH,CAAa,CAAC,EAErCwB,EAAOA,EAAK,MAAMF,EAAU,OAAO,MAAM,EACpC,KAAK,OAAQ,cAAc,EAC3B,KAAKpC,EAAGiB,EAAIU,CAAO,EACnB,KAAK,KAAMjB,IAAWQ,GAAM,MAAQR,IAAWY,GAAS,SAAW,QAAQ,CAAC,EAE7EC,IAAYS,IACdC,EAAOA,EAAK,WAAWV,CAAO,EAC9BW,EAAOA,EAAK,WAAWX,CAAO,EAC9Bc,EAAOA,EAAK,WAAWd,CAAO,EAC9Be,EAAOA,EAAK,WAAWf,CAAO,EAE9BY,EAAWA,EAAS,WAAWZ,CAAO,EACjC,KAAK,UAAWgB,EAAO,EACvB,KAAK,YAAa,SAASlC,EAAG,CAAE,OAAO,SAASA,EAAI0B,EAAS1B,CAAC,CAAC,EAAIgB,EAAUhB,EAAIE,CAAM,EAAI,KAAK,aAAa,WAAW,CAAG,CAAC,EAEjI6B,EACK,KAAK,UAAWG,EAAO,EACvB,KAAK,YAAa,SAASlC,EAAG,CAAE,IAAImC,EAAI,KAAK,WAAW,OAAQ,OAAOnB,GAAWmB,GAAK,SAASA,EAAIA,EAAEnC,CAAC,CAAC,EAAImC,EAAIT,EAAS1B,CAAC,GAAKE,CAAM,CAAG,CAAC,GAGhJ4B,EAAS,OAAO,EAEhBF,EACK,KAAK,IAAKvB,IAAWS,IAAQT,IAAWU,GAClCL,EAAgB,IAAME,EAAIF,EAAgB,IAAMc,EAAS,IAAMtB,EAAS,IAAMuB,EAAS,IAAMb,EAAIF,EAAgB,IAAMR,EAAS,IAAMsB,EAAS,IAAMC,EACrJf,EAAgB,IAAMc,EAAS,IAAMZ,EAAIF,EAAgB,IAAMR,EAAS,IAAMuB,EAAS,IAAMb,EAAIF,EAAgB,IAAMc,EAAS,IAAMtB,EAAS,IAAMuB,CAAO,EAEvKI,EACK,KAAK,UAAW,CAAC,EACjB,KAAK,YAAa,SAAS7B,EAAG,CAAE,OAAOgB,EAAUU,EAAS1B,CAAC,EAAIE,CAAM,CAAG,CAAC,EAE9E8B,EACK,KAAKrC,EAAI,IAAKiB,EAAIH,CAAa,EAEpCwB,EACK,KAAKtC,EAAGiB,EAAIU,CAAO,EACnB,KAAKF,CAAM,EAEhBO,EAAU,OAAOxB,GAAQ,EACpB,KAAK,OAAQ,MAAM,EACnB,KAAK,YAAa,EAAE,EACpB,KAAK,cAAe,YAAY,EAChC,KAAK,cAAeE,IAAWU,GAAQ,QAAUV,IAAWS,GAAO,MAAQ,QAAQ,EAExFa,EACK,KAAK,UAAW,CAAE,KAAK,OAASD,CAAU,CAAC,CAClD,CAEA,OAAAtB,EAAK,MAAQ,SAASgC,EAAG,CACvB,OAAO,UAAU,QAAUrC,EAAQqC,EAAGhC,GAAQL,CAChD,EAEAK,EAAK,MAAQ,UAAW,CACtB,OAAOE,EAAgB,MAAM,KAAK,SAAS,EAAGF,CAChD,EAEAA,EAAK,cAAgB,SAASgC,EAAG,CAC/B,OAAO,UAAU,QAAU9B,EAAgB8B,GAAK,KAAO,CAAC,EAAI,MAAM,KAAKA,CAAC,EAAGhC,GAAQE,EAAc,MAAM,CACzG,EAEAF,EAAK,WAAa,SAASgC,EAAG,CAC5B,OAAO,UAAU,QAAU7B,EAAa6B,GAAK,KAAO,KAAO,MAAM,KAAKA,CAAC,EAAGhC,GAAQG,GAAcA,EAAW,MAAM,CACnH,EAEAH,EAAK,WAAa,SAASgC,EAAG,CAC5B,OAAO,UAAU,QAAU5B,EAAa4B,EAAGhC,GAAQI,CACrD,EAEAJ,EAAK,SAAW,SAASgC,EAAG,CAC1B,OAAO,UAAU,QAAU3B,EAAgBC,EAAgB,CAAC0B,EAAGhC,GAAQK,CACzE,EAEAL,EAAK,cAAgB,SAASgC,EAAG,CAC/B,OAAO,UAAU,QAAU3B,EAAgB,CAAC2B,EAAGhC,GAAQK,CACzD,EAEAL,EAAK,cAAgB,SAASgC,EAAG,CAC/B,OAAO,UAAU,QAAU1B,EAAgB,CAAC0B,EAAGhC,GAAQM,CACzD,EAEAN,EAAK,YAAc,SAASgC,EAAG,CAC7B,OAAO,UAAU,QAAUzB,EAAc,CAACyB,EAAGhC,GAAQO,CACvD,EAEAP,EAAK,OAAS,SAASgC,EAAG,CACxB,OAAO,UAAU,QAAUlC,EAAS,CAACkC,EAAGhC,GAAQF,CAClD,EAEOE,CACT,CAEO,SAASiC,GAAQtC,EAAO,CAC7B,OAAOK,GAAKS,GAAKd,CAAK,CACxB,CAEO,SAASuC,GAAUvC,EAAO,CAC/B,OAAOK,GAAKW,GAAOhB,CAAK,CAC1B,CAEO,SAASwC,GAAWxC,EAAO,CAChC,OAAOK,GAAKa,GAAQlB,CAAK,CAC3B,CAEO,SAASyC,GAASzC,EAAO,CAC9B,OAAOK,GAAKU,GAAMf,CAAK,CACzB,CA7KA,IAEIc,GACAE,GACAE,GACAH,GACAoB,GANJO,GAAAC,GAAA,KAAAC,KAEI9B,GAAM,EACNE,GAAQ,EACRE,GAAS,EACTH,GAAO,EACPoB,GAAU,OCNd,IAAAU,GAAA,GAAAC,GAAAD,GAAA,gBAAAE,GAAA,aAAAC,GAAA,cAAAC,GAAA,YAAAC,KAAA,IAAAC,GAAAC,GAAA,KAAAC,OCEA,SAASC,IAAW,CAClB,QAASC,EAAI,EAAGC,EAAI,UAAU,OAAQC,EAAI,CAAC,EAAGC,EAAGH,EAAIC,EAAG,EAAED,EAAG,CAC3D,GAAI,EAAEG,EAAI,UAAUH,CAAC,EAAI,KAAQG,KAAKD,GAAM,QAAQ,KAAKC,CAAC,EAAG,MAAM,IAAI,MAAM,iBAAmBA,CAAC,EACjGD,EAAEC,CAAC,EAAI,CAAC,CACV,CACA,OAAO,IAAIC,GAASF,CAAC,CACvB,CAEA,SAASE,GAASF,EAAG,CACnB,KAAK,EAAIA,CACX,CAEA,SAASG,IAAeC,EAAWC,EAAO,CACxC,OAAOD,EAAU,KAAK,EAAE,MAAM,OAAO,EAAE,IAAI,SAASH,EAAG,CACrD,IAAIK,EAAO,GAAI,EAAIL,EAAE,QAAQ,GAAG,EAEhC,GADI,GAAK,IAAGK,EAAOL,EAAE,MAAM,EAAI,CAAC,EAAGA,EAAIA,EAAE,MAAM,EAAG,CAAC,GAC/CA,GAAK,CAACI,EAAM,eAAeJ,CAAC,EAAG,MAAM,IAAI,MAAM,iBAAmBA,CAAC,EACvE,MAAO,CAAC,KAAMA,EAAG,KAAMK,CAAI,CAC7B,CAAC,CACH,CA2CA,SAASC,IAAIC,EAAMF,EAAM,CACvB,QAASR,EAAI,EAAG,EAAIU,EAAK,OAAQC,EAAGX,EAAI,EAAG,EAAEA,EAC3C,IAAKW,EAAID,EAAKV,CAAC,GAAG,OAASQ,EACzB,OAAOG,EAAE,KAGf,CAEA,SAASC,GAAIF,EAAMF,EAAMK,EAAU,CACjC,QAASb,EAAI,EAAGC,EAAIS,EAAK,OAAQV,EAAIC,EAAG,EAAED,EACxC,GAAIU,EAAKV,CAAC,EAAE,OAASQ,EAAM,CACzBE,EAAKV,CAAC,EAAIc,IAAMJ,EAAOA,EAAK,MAAM,EAAGV,CAAC,EAAE,OAAOU,EAAK,MAAMV,EAAI,CAAC,CAAC,EAChE,KACF,CAEF,OAAIa,GAAY,MAAMH,EAAK,KAAK,CAAC,KAAMF,EAAM,MAAOK,CAAQ,CAAC,EACtDH,CACT,CAjFA,IAAII,IAmFGC,GAnFPC,GAAAC,GAAA,KAAIH,IAAO,CAAC,MAAO,IAAM,CAAC,CAAC,EAuB3BV,GAAS,UAAYL,GAAS,UAAY,CACxC,YAAaK,GACb,GAAI,SAASc,EAAUL,EAAU,CAC/B,IAAIX,EAAI,KAAK,EACTiB,EAAId,IAAea,EAAW,GAAIhB,CAAC,EACnCC,EACAH,EAAI,GACJC,EAAIkB,EAAE,OAGV,GAAI,UAAU,OAAS,EAAG,CACxB,KAAO,EAAEnB,EAAIC,GAAG,IAAKE,GAAKe,EAAWC,EAAEnB,CAAC,GAAG,QAAUG,EAAIM,IAAIP,EAAEC,CAAC,EAAGe,EAAS,IAAI,GAAI,OAAOf,EAC3F,MACF,CAIA,GAAIU,GAAY,MAAQ,OAAOA,GAAa,WAAY,MAAM,IAAI,MAAM,qBAAuBA,CAAQ,EACvG,KAAO,EAAEb,EAAIC,GACX,GAAIE,GAAKe,EAAWC,EAAEnB,CAAC,GAAG,KAAME,EAAEC,CAAC,EAAIS,GAAIV,EAAEC,CAAC,EAAGe,EAAS,KAAML,CAAQ,UAC/DA,GAAY,KAAM,IAAKV,KAAKD,EAAGA,EAAEC,CAAC,EAAIS,GAAIV,EAAEC,CAAC,EAAGe,EAAS,KAAM,IAAI,EAG9E,OAAO,IACT,EACA,KAAM,UAAW,CACf,IAAIE,EAAO,CAAC,EAAGlB,EAAI,KAAK,EACxB,QAASC,KAAKD,EAAGkB,EAAKjB,CAAC,EAAID,EAAEC,CAAC,EAAE,MAAM,EACtC,OAAO,IAAIC,GAASgB,CAAI,CAC1B,EACA,KAAM,SAASV,EAAMW,EAAM,CACzB,IAAKpB,EAAI,UAAU,OAAS,GAAK,EAAG,QAASqB,EAAO,IAAI,MAAMrB,CAAC,EAAGD,EAAI,EAAGC,EAAGE,EAAGH,EAAIC,EAAG,EAAED,EAAGsB,EAAKtB,CAAC,EAAI,UAAUA,EAAI,CAAC,EACpH,GAAI,CAAC,KAAK,EAAE,eAAeU,CAAI,EAAG,MAAM,IAAI,MAAM,iBAAmBA,CAAI,EACzE,IAAKP,EAAI,KAAK,EAAEO,CAAI,EAAGV,EAAI,EAAGC,EAAIE,EAAE,OAAQH,EAAIC,EAAG,EAAED,EAAGG,EAAEH,CAAC,EAAE,MAAM,MAAMqB,EAAMC,CAAI,CACrF,EACA,MAAO,SAASZ,EAAMW,EAAMC,EAAM,CAChC,GAAI,CAAC,KAAK,EAAE,eAAeZ,CAAI,EAAG,MAAM,IAAI,MAAM,iBAAmBA,CAAI,EACzE,QAASP,EAAI,KAAK,EAAEO,CAAI,EAAG,EAAI,EAAGT,EAAIE,EAAE,OAAQ,EAAIF,EAAG,EAAE,EAAGE,EAAE,CAAC,EAAE,MAAM,MAAMkB,EAAMC,CAAI,CACzF,CACF,EAqBOP,GAAQhB,KCnFf,IAAAwB,GAAAC,GAAA,KAAAC,OCAA,IAAWC,GAEJC,GAFPC,GAAAC,GAAA,KAAWH,GAAQ,+BAEZC,GAAQ,CACb,IAAK,6BACL,MAAOD,GACP,MAAO,+BACP,IAAK,uCACL,MAAO,+BACT,ICNe,SAARI,GAAiBC,EAAM,CAC5B,IAAIC,EAASD,GAAQ,GAAIE,EAAID,EAAO,QAAQ,GAAG,EAC/C,OAAIC,GAAK,IAAMD,EAASD,EAAK,MAAM,EAAGE,CAAC,KAAO,UAASF,EAAOA,EAAK,MAAME,EAAI,CAAC,GACvEC,GAAW,eAAeF,CAAM,EAAI,CAAC,MAAOE,GAAWF,CAAM,EAAG,MAAOD,CAAI,EAAIA,CACxF,CANA,IAAAI,GAAAC,GAAA,KAAAC,OCGA,SAASC,IAAeC,EAAM,CAC5B,OAAO,UAAW,CAChB,IAAIC,EAAW,KAAK,cAChBC,EAAM,KAAK,aACf,OAAOA,IAAQC,IAASF,EAAS,gBAAgB,eAAiBE,GAC5DF,EAAS,cAAcD,CAAI,EAC3BC,EAAS,gBAAgBC,EAAKF,CAAI,CAC1C,CACF,CAEA,SAASI,IAAaC,EAAU,CAC9B,OAAO,UAAW,CAChB,OAAO,KAAK,cAAc,gBAAgBA,EAAS,MAAOA,EAAS,KAAK,CAC1E,CACF,CAEe,SAARC,GAAiBN,EAAM,CAC5B,IAAIK,EAAWE,GAAUP,CAAI,EAC7B,OAAQK,EAAS,MACXD,IACAL,KAAgBM,CAAQ,CAChC,CAxBA,IAAAG,GAAAC,GAAA,KAAAC,KACAC,OCDA,SAASC,KAAO,CAAC,CAEF,SAARC,GAAiBC,EAAU,CAChC,OAAOA,GAAY,KAAOF,IAAO,UAAW,CAC1C,OAAO,KAAK,cAAcE,CAAQ,CACpC,CACF,CANA,IAAAC,GAAAC,GAAA,QCGe,SAARC,GAAiBC,EAAQ,CAC1B,OAAOA,GAAW,aAAYA,EAASC,GAASD,CAAM,GAE1D,QAASE,EAAS,KAAK,QAASC,EAAID,EAAO,OAAQE,EAAY,IAAI,MAAMD,CAAC,EAAGE,EAAI,EAAGA,EAAIF,EAAG,EAAEE,EAC3F,QAASC,EAAQJ,EAAOG,CAAC,EAAGE,EAAID,EAAM,OAAQE,EAAWJ,EAAUC,CAAC,EAAI,IAAI,MAAME,CAAC,EAAGE,EAAMC,EAASC,EAAI,EAAGA,EAAIJ,EAAG,EAAEI,GAC9GF,EAAOH,EAAMK,CAAC,KAAOD,EAAUV,EAAO,KAAKS,EAAMA,EAAK,SAAUE,EAAGL,CAAK,KACvE,aAAcG,IAAMC,EAAQ,SAAWD,EAAK,UAChDD,EAASG,CAAC,EAAID,GAKpB,OAAO,IAAIE,GAAUR,EAAW,KAAK,QAAQ,CAC/C,CAhBA,IAAAS,GAAAC,GAAA,KAAAC,KACAC,OCKe,SAARC,GAAuBC,EAAG,CAC/B,OAAOA,GAAK,KAAO,CAAC,EAAI,MAAM,QAAQA,CAAC,EAAIA,EAAI,MAAM,KAAKA,CAAC,CAC7D,CARA,IAAAC,GAAAC,GAAA,QCAA,SAASC,KAAQ,CACf,MAAO,CAAC,CACV,CAEe,SAARC,GAAiBC,EAAU,CAChC,OAAOA,GAAY,KAAOF,IAAQ,UAAW,CAC3C,OAAO,KAAK,iBAAiBE,CAAQ,CACvC,CACF,CARA,IAAAC,GAAAC,GAAA,QCIA,SAASC,IAASC,EAAQ,CACxB,OAAO,UAAW,CAChB,OAAOC,GAAMD,EAAO,MAAM,KAAM,SAAS,CAAC,CAC5C,CACF,CAEe,SAARE,GAAiBF,EAAQ,CAC1B,OAAOA,GAAW,WAAYA,EAASD,IAASC,CAAM,EACrDA,EAASG,GAAYH,CAAM,EAEhC,QAASI,EAAS,KAAK,QAASC,EAAID,EAAO,OAAQE,EAAY,CAAC,EAAGC,EAAU,CAAC,EAAGC,EAAI,EAAGA,EAAIH,EAAG,EAAEG,EAC/F,QAASC,EAAQL,EAAOI,CAAC,EAAGE,EAAID,EAAM,OAAQE,EAAMC,EAAI,EAAGA,EAAIF,EAAG,EAAEE,GAC9DD,EAAOF,EAAMG,CAAC,KAChBN,EAAU,KAAKN,EAAO,KAAKW,EAAMA,EAAK,SAAUC,EAAGH,CAAK,CAAC,EACzDF,EAAQ,KAAKI,CAAI,GAKvB,OAAO,IAAIE,GAAUP,EAAWC,CAAO,CACzC,CAxBA,IAAAO,GAAAC,GAAA,KAAAC,KACAC,KACAC,OCFe,SAARC,GAAiBC,EAAU,CAChC,OAAO,UAAW,CAChB,OAAO,KAAK,QAAQA,CAAQ,CAC9B,CACF,CAEO,SAASC,GAAaD,EAAU,CACrC,OAAO,SAASE,EAAM,CACpB,OAAOA,EAAK,QAAQF,CAAQ,CAC9B,CACF,CAVA,IAAAG,GAAAC,GAAA,QCIA,SAASC,IAAUC,EAAO,CACxB,OAAO,UAAW,CAChB,OAAOC,IAAK,KAAK,KAAK,SAAUD,CAAK,CACvC,CACF,CAEA,SAASE,KAAa,CACpB,OAAO,KAAK,iBACd,CAEe,SAARC,GAAiBH,EAAO,CAC7B,OAAO,KAAK,OAAOA,GAAS,KAAOE,IAC7BH,IAAU,OAAOC,GAAU,WAAaA,EAAQI,GAAaJ,CAAK,CAAC,CAAC,CAC5E,CAjBA,IAEIC,IAFJI,GAAAC,GAAA,KAAAC,KAEIN,IAAO,MAAM,UAAU,OCE3B,SAASO,KAAW,CAClB,OAAO,MAAM,KAAK,KAAK,QAAQ,CACjC,CAEA,SAASC,IAAeC,EAAO,CAC7B,OAAO,UAAW,CAChB,OAAOC,IAAO,KAAK,KAAK,SAAUD,CAAK,CACzC,CACF,CAEe,SAARE,GAAiBF,EAAO,CAC7B,OAAO,KAAK,UAAUA,GAAS,KAAOF,IAChCC,IAAe,OAAOC,GAAU,WAAaA,EAAQG,GAAaH,CAAK,CAAC,CAAC,CACjF,CAjBA,IAEIC,IAFJG,GAAAC,GAAA,KAAAC,KAEIL,IAAS,MAAM,UAAU,SCCd,SAARM,GAAiBC,EAAO,CACzB,OAAOA,GAAU,aAAYA,EAAQC,GAAQD,CAAK,GAEtD,QAASE,EAAS,KAAK,QAASC,EAAID,EAAO,OAAQE,EAAY,IAAI,MAAMD,CAAC,EAAGE,EAAI,EAAGA,EAAIF,EAAG,EAAEE,EAC3F,QAASC,EAAQJ,EAAOG,CAAC,EAAGE,EAAID,EAAM,OAAQE,EAAWJ,EAAUC,CAAC,EAAI,CAAC,EAAGI,EAAMC,EAAI,EAAGA,EAAIH,EAAG,EAAEG,GAC3FD,EAAOH,EAAMI,CAAC,IAAMV,EAAM,KAAKS,EAAMA,EAAK,SAAUC,EAAGJ,CAAK,GAC/DE,EAAS,KAAKC,CAAI,EAKxB,OAAO,IAAIE,GAAUP,EAAW,KAAK,QAAQ,CAC/C,CAfA,IAAAQ,GAAAC,GAAA,KAAAC,KACAC,OCDe,SAARC,GAAiBC,EAAQ,CAC9B,OAAO,IAAI,MAAMA,EAAO,MAAM,CAChC,CAFA,IAAAC,GAAAC,GAAA,QCGe,SAARC,IAAmB,CACxB,OAAO,IAAIC,GAAU,KAAK,QAAU,KAAK,QAAQ,IAAIC,EAAM,EAAG,KAAK,QAAQ,CAC7E,CAEO,SAASC,GAAUC,EAAQC,EAAO,CACvC,KAAK,cAAgBD,EAAO,cAC5B,KAAK,aAAeA,EAAO,aAC3B,KAAK,MAAQ,KACb,KAAK,QAAUA,EACf,KAAK,SAAWC,CAClB,CAbA,IAAAC,GAAAC,GAAA,KAAAC,KACAC,KAcAN,GAAU,UAAY,CACpB,YAAaA,GACb,YAAa,SAASO,EAAO,CAAE,OAAO,KAAK,QAAQ,aAAaA,EAAO,KAAK,KAAK,CAAG,EACpF,aAAc,SAASA,EAAOC,EAAM,CAAE,OAAO,KAAK,QAAQ,aAAaD,EAAOC,CAAI,CAAG,EACrF,cAAe,SAASC,EAAU,CAAE,OAAO,KAAK,QAAQ,cAAcA,CAAQ,CAAG,EACjF,iBAAkB,SAASA,EAAU,CAAE,OAAO,KAAK,QAAQ,iBAAiBA,CAAQ,CAAG,CACzF,ICrBe,SAARC,GAAiBC,EAAG,CACzB,OAAO,UAAW,CAChB,OAAOA,CACT,CACF,CAJA,IAAAC,GAAAC,GAAA,QCIA,SAASC,IAAUC,EAAQC,EAAOC,EAAOC,EAAQC,EAAMC,EAAM,CAS3D,QARIC,EAAI,EACJC,EACAC,EAAcP,EAAM,OACpBQ,EAAaJ,EAAK,OAKfC,EAAIG,EAAY,EAAEH,GACnBC,EAAON,EAAMK,CAAC,IAChBC,EAAK,SAAWF,EAAKC,CAAC,EACtBH,EAAOG,CAAC,EAAIC,GAEZL,EAAMI,CAAC,EAAI,IAAII,GAAUV,EAAQK,EAAKC,CAAC,CAAC,EAK5C,KAAOA,EAAIE,EAAa,EAAEF,GACpBC,EAAON,EAAMK,CAAC,KAChBF,EAAKE,CAAC,EAAIC,EAGhB,CAEA,SAASI,IAAQX,EAAQC,EAAOC,EAAOC,EAAQC,EAAMC,EAAMO,EAAK,CAC9D,IAAIN,EACAC,EACAM,EAAiB,IAAI,IACrBL,EAAcP,EAAM,OACpBQ,EAAaJ,EAAK,OAClBS,EAAY,IAAI,MAAMN,CAAW,EACjCO,EAIJ,IAAKT,EAAI,EAAGA,EAAIE,EAAa,EAAEF,GACzBC,EAAON,EAAMK,CAAC,KAChBQ,EAAUR,CAAC,EAAIS,EAAWH,EAAI,KAAKL,EAAMA,EAAK,SAAUD,EAAGL,CAAK,EAAI,GAChEY,EAAe,IAAIE,CAAQ,EAC7BX,EAAKE,CAAC,EAAIC,EAEVM,EAAe,IAAIE,EAAUR,CAAI,GAQvC,IAAKD,EAAI,EAAGA,EAAIG,EAAY,EAAEH,EAC5BS,EAAWH,EAAI,KAAKZ,EAAQK,EAAKC,CAAC,EAAGA,EAAGD,CAAI,EAAI,IAC5CE,EAAOM,EAAe,IAAIE,CAAQ,IACpCZ,EAAOG,CAAC,EAAIC,EACZA,EAAK,SAAWF,EAAKC,CAAC,EACtBO,EAAe,OAAOE,CAAQ,GAE9Bb,EAAMI,CAAC,EAAI,IAAII,GAAUV,EAAQK,EAAKC,CAAC,CAAC,EAK5C,IAAKA,EAAI,EAAGA,EAAIE,EAAa,EAAEF,GACxBC,EAAON,EAAMK,CAAC,IAAOO,EAAe,IAAIC,EAAUR,CAAC,CAAC,IAAMC,IAC7DH,EAAKE,CAAC,EAAIC,EAGhB,CAEA,SAASS,IAAMT,EAAM,CACnB,OAAOA,EAAK,QACd,CAEe,SAARU,GAAiBC,EAAON,EAAK,CAClC,GAAI,CAAC,UAAU,OAAQ,OAAO,MAAM,KAAK,KAAMI,GAAK,EAEpD,IAAIG,EAAOP,EAAMD,IAAUZ,IACvBqB,EAAU,KAAK,SACfC,EAAS,KAAK,QAEd,OAAOH,GAAU,aAAYA,EAAQI,GAASJ,CAAK,GAEvD,QAASK,EAAIF,EAAO,OAAQlB,EAAS,IAAI,MAAMoB,CAAC,EAAGrB,EAAQ,IAAI,MAAMqB,CAAC,EAAGnB,EAAO,IAAI,MAAMmB,CAAC,EAAGC,EAAI,EAAGA,EAAID,EAAG,EAAEC,EAAG,CAC/G,IAAIxB,EAASoB,EAAQI,CAAC,EAClBvB,EAAQoB,EAAOG,CAAC,EAChBhB,EAAcP,EAAM,OACpBI,EAAOoB,IAAUP,EAAM,KAAKlB,EAAQA,GAAUA,EAAO,SAAUwB,EAAGJ,CAAO,CAAC,EAC1EX,EAAaJ,EAAK,OAClBqB,EAAaxB,EAAMsB,CAAC,EAAI,IAAI,MAAMf,CAAU,EAC5CkB,EAAcxB,EAAOqB,CAAC,EAAI,IAAI,MAAMf,CAAU,EAC9CmB,EAAYxB,EAAKoB,CAAC,EAAI,IAAI,MAAMhB,CAAW,EAE/CW,EAAKnB,EAAQC,EAAOyB,EAAYC,EAAaC,EAAWvB,EAAMO,CAAG,EAKjE,QAASiB,EAAK,EAAGC,EAAK,EAAGC,EAAUC,EAAMH,EAAKpB,EAAY,EAAEoB,EAC1D,GAAIE,EAAWL,EAAWG,CAAE,EAAG,CAE7B,IADIA,GAAMC,IAAIA,EAAKD,EAAK,GACjB,EAAEG,EAAOL,EAAYG,CAAE,IAAM,EAAEA,EAAKrB,GAAW,CACtDsB,EAAS,MAAQC,GAAQ,IAC3B,CAEJ,CAEA,OAAA7B,EAAS,IAAI8B,GAAU9B,EAAQiB,CAAO,EACtCjB,EAAO,OAASD,EAChBC,EAAO,MAAQC,EACRD,CACT,CAQA,SAASsB,IAAUpB,EAAM,CACvB,OAAO,OAAOA,GAAS,UAAY,WAAYA,EAC3CA,EACA,MAAM,KAAKA,CAAI,CACrB,CA/HA,IAAA6B,GAAAC,GAAA,KAAAC,KACAC,KACAC,OCCe,SAARC,IAAmB,CACxB,OAAO,IAAIC,GAAU,KAAK,OAAS,KAAK,QAAQ,IAAIC,EAAM,EAAG,KAAK,QAAQ,CAC5E,CALA,IAAAC,GAAAC,GAAA,KAAAC,KACAC,OCDe,SAARC,GAAiBC,EAASC,EAAUC,EAAQ,CACjD,IAAIC,EAAQ,KAAK,MAAM,EAAGC,EAAS,KAAMC,EAAO,KAAK,KAAK,EAC1D,OAAI,OAAOL,GAAY,YACrBG,EAAQH,EAAQG,CAAK,EACjBA,IAAOA,EAAQA,EAAM,UAAU,IAEnCA,EAAQA,EAAM,OAAOH,EAAU,EAAE,EAE/BC,GAAY,OACdG,EAASH,EAASG,CAAM,EACpBA,IAAQA,EAASA,EAAO,UAAU,IAEpCF,GAAU,KAAMG,EAAK,OAAO,EAAQH,EAAOG,CAAI,EAC5CF,GAASC,EAASD,EAAM,MAAMC,CAAM,EAAE,MAAM,EAAIA,CACzD,CAdA,IAAAE,GAAAC,GAAA,QCEe,SAARC,GAAiBC,EAAS,CAG/B,QAFIC,EAAYD,EAAQ,UAAYA,EAAQ,UAAU,EAAIA,EAEjDE,EAAU,KAAK,QAASC,EAAUF,EAAU,QAASG,EAAKF,EAAQ,OAAQG,EAAKF,EAAQ,OAAQG,EAAI,KAAK,IAAIF,EAAIC,CAAE,EAAGE,EAAS,IAAI,MAAMH,CAAE,EAAGI,EAAI,EAAGA,EAAIF,EAAG,EAAEE,EACpK,QAASC,EAASP,EAAQM,CAAC,EAAGE,EAASP,EAAQK,CAAC,EAAGG,EAAIF,EAAO,OAAQG,EAAQL,EAAOC,CAAC,EAAI,IAAI,MAAMG,CAAC,EAAGE,EAAMC,EAAI,EAAGA,EAAIH,EAAG,EAAEG,GACxHD,EAAOJ,EAAOK,CAAC,GAAKJ,EAAOI,CAAC,KAC9BF,EAAME,CAAC,EAAID,GAKjB,KAAOL,EAAIJ,EAAI,EAAEI,EACfD,EAAOC,CAAC,EAAIN,EAAQM,CAAC,EAGvB,OAAO,IAAIO,GAAUR,EAAQ,KAAK,QAAQ,CAC5C,CAlBA,IAAAS,GAAAC,GAAA,KAAAC,OCAe,SAARC,IAAmB,CAExB,QAASC,EAAS,KAAK,QAASC,EAAI,GAAIC,EAAIF,EAAO,OAAQ,EAAEC,EAAIC,GAC/D,QAASC,EAAQH,EAAOC,CAAC,EAAG,EAAIE,EAAM,OAAS,EAAGC,EAAOD,EAAM,CAAC,EAAGE,EAAM,EAAE,GAAK,IAC1EA,EAAOF,EAAM,CAAC,KACZC,GAAQC,EAAK,wBAAwBD,CAAI,EAAI,GAAGA,EAAK,WAAW,aAAaC,EAAMD,CAAI,EAC3FA,EAAOC,GAKb,OAAO,IACT,CAZA,IAAAC,GAAAC,GAAA,QCEe,SAARC,GAAiBC,EAAS,CAC1BA,IAASA,EAAUC,KAExB,SAASC,EAAYC,EAAGC,EAAG,CACzB,OAAOD,GAAKC,EAAIJ,EAAQG,EAAE,SAAUC,EAAE,QAAQ,EAAI,CAACD,EAAI,CAACC,CAC1D,CAEA,QAASC,EAAS,KAAK,QAASC,EAAID,EAAO,OAAQE,EAAa,IAAI,MAAMD,CAAC,EAAGE,EAAI,EAAGA,EAAIF,EAAG,EAAEE,EAAG,CAC/F,QAASC,EAAQJ,EAAOG,CAAC,EAAGE,EAAID,EAAM,OAAQE,EAAYJ,EAAWC,CAAC,EAAI,IAAI,MAAME,CAAC,EAAGE,EAAMC,EAAI,EAAGA,EAAIH,EAAG,EAAEG,GACxGD,EAAOH,EAAMI,CAAC,KAChBF,EAAUE,CAAC,EAAID,GAGnBD,EAAU,KAAKT,CAAW,CAC5B,CAEA,OAAO,IAAIY,GAAUP,EAAY,KAAK,QAAQ,EAAE,MAAM,CACxD,CAEA,SAASN,IAAUE,EAAGC,EAAG,CACvB,OAAOD,EAAIC,EAAI,GAAKD,EAAIC,EAAI,EAAID,GAAKC,EAAI,EAAI,GAC/C,CAvBA,IAAAW,GAAAC,GAAA,KAAAC,OCAe,SAARC,IAAmB,CACxB,IAAIC,EAAW,UAAU,CAAC,EAC1B,iBAAU,CAAC,EAAI,KACfA,EAAS,MAAM,KAAM,SAAS,EACvB,IACT,CALA,IAAAC,GAAAC,GAAA,QCAe,SAARC,IAAmB,CACxB,OAAO,MAAM,KAAK,IAAI,CACxB,CAFA,IAAAC,GAAAC,GAAA,QCAe,SAARC,IAAmB,CAExB,QAASC,EAAS,KAAK,QAASC,EAAI,EAAGC,EAAIF,EAAO,OAAQC,EAAIC,EAAG,EAAED,EACjE,QAASE,EAAQH,EAAOC,CAAC,EAAG,EAAI,EAAGG,EAAID,EAAM,OAAQ,EAAIC,EAAG,EAAE,EAAG,CAC/D,IAAIC,EAAOF,EAAM,CAAC,EAClB,GAAIE,EAAM,OAAOA,CACnB,CAGF,OAAO,IACT,CAVA,IAAAC,GAAAC,GAAA,QCAe,SAARC,IAAmB,CACxB,IAAIC,EAAO,EACX,QAAWC,KAAQ,KAAM,EAAED,EAC3B,OAAOA,CACT,CAJA,IAAAE,GAAAC,GAAA,QCAe,SAARC,IAAmB,CACxB,MAAO,CAAC,KAAK,KAAK,CACpB,CAFA,IAAAC,GAAAC,GAAA,QCAe,SAARC,GAAiBC,EAAU,CAEhC,QAASC,EAAS,KAAK,QAASC,EAAI,EAAGC,EAAIF,EAAO,OAAQC,EAAIC,EAAG,EAAED,EACjE,QAASE,EAAQH,EAAOC,CAAC,EAAGG,EAAI,EAAGC,EAAIF,EAAM,OAAQG,EAAMF,EAAIC,EAAG,EAAED,GAC9DE,EAAOH,EAAMC,CAAC,IAAGL,EAAS,KAAKO,EAAMA,EAAK,SAAUF,EAAGD,CAAK,EAIpE,OAAO,IACT,CATA,IAAAI,GAAAC,GAAA,QCEA,SAASC,IAAWC,EAAM,CACxB,OAAO,UAAW,CAChB,KAAK,gBAAgBA,CAAI,CAC3B,CACF,CAEA,SAASC,IAAaC,EAAU,CAC9B,OAAO,UAAW,CAChB,KAAK,kBAAkBA,EAAS,MAAOA,EAAS,KAAK,CACvD,CACF,CAEA,SAASC,IAAaH,EAAMI,EAAO,CACjC,OAAO,UAAW,CAChB,KAAK,aAAaJ,EAAMI,CAAK,CAC/B,CACF,CAEA,SAASC,IAAeH,EAAUE,EAAO,CACvC,OAAO,UAAW,CAChB,KAAK,eAAeF,EAAS,MAAOA,EAAS,MAAOE,CAAK,CAC3D,CACF,CAEA,SAASE,IAAaN,EAAMI,EAAO,CACjC,OAAO,UAAW,CAChB,IAAIG,EAAIH,EAAM,MAAM,KAAM,SAAS,EAC/BG,GAAK,KAAM,KAAK,gBAAgBP,CAAI,EACnC,KAAK,aAAaA,EAAMO,CAAC,CAChC,CACF,CAEA,SAASC,IAAeN,EAAUE,EAAO,CACvC,OAAO,UAAW,CAChB,IAAIG,EAAIH,EAAM,MAAM,KAAM,SAAS,EAC/BG,GAAK,KAAM,KAAK,kBAAkBL,EAAS,MAAOA,EAAS,KAAK,EAC/D,KAAK,eAAeA,EAAS,MAAOA,EAAS,MAAOK,CAAC,CAC5D,CACF,CAEe,SAARE,GAAiBT,EAAMI,EAAO,CACnC,IAAIF,EAAWQ,GAAUV,CAAI,EAE7B,GAAI,UAAU,OAAS,EAAG,CACxB,IAAIW,EAAO,KAAK,KAAK,EACrB,OAAOT,EAAS,MACVS,EAAK,eAAeT,EAAS,MAAOA,EAAS,KAAK,EAClDS,EAAK,aAAaT,CAAQ,CAClC,CAEA,OAAO,KAAK,MAAME,GAAS,KACpBF,EAAS,MAAQD,IAAeF,IAAe,OAAOK,GAAU,WAChEF,EAAS,MAAQM,IAAiBF,IAClCJ,EAAS,MAAQG,IAAiBF,KAAgBD,EAAUE,CAAK,CAAC,CAC3E,CAxDA,IAAAQ,GAAAC,GAAA,KAAAC,OCAe,SAARC,GAAiBC,EAAM,CAC5B,OAAQA,EAAK,eAAiBA,EAAK,cAAc,aACzCA,EAAK,UAAYA,GAClBA,EAAK,WACd,CAJA,IAAAC,GAAAC,GAAA,QCEA,SAASC,IAAYC,EAAM,CACzB,OAAO,UAAW,CAChB,KAAK,MAAM,eAAeA,CAAI,CAChC,CACF,CAEA,SAASC,IAAcD,EAAME,EAAOC,EAAU,CAC5C,OAAO,UAAW,CAChB,KAAK,MAAM,YAAYH,EAAME,EAAOC,CAAQ,CAC9C,CACF,CAEA,SAASC,IAAcJ,EAAME,EAAOC,EAAU,CAC5C,OAAO,UAAW,CAChB,IAAIE,EAAIH,EAAM,MAAM,KAAM,SAAS,EAC/BG,GAAK,KAAM,KAAK,MAAM,eAAeL,CAAI,EACxC,KAAK,MAAM,YAAYA,EAAMK,EAAGF,CAAQ,CAC/C,CACF,CAEe,SAARG,GAAiBN,EAAME,EAAOC,EAAU,CAC7C,OAAO,UAAU,OAAS,EACpB,KAAK,MAAMD,GAAS,KACdH,IAAc,OAAOG,GAAU,WAC/BE,IACAH,KAAeD,EAAME,EAAOC,GAAmB,EAAa,CAAC,EACnEI,GAAW,KAAK,KAAK,EAAGP,CAAI,CACpC,CAEO,SAASO,GAAWC,EAAMR,EAAM,CACrC,OAAOQ,EAAK,MAAM,iBAAiBR,CAAI,GAChCS,GAAYD,CAAI,EAAE,iBAAiBA,EAAM,IAAI,EAAE,iBAAiBR,CAAI,CAC7E,CAlCA,IAAAU,GAAAC,GAAA,KAAAC,OCAA,SAASC,IAAeC,EAAM,CAC5B,OAAO,UAAW,CAChB,OAAO,KAAKA,CAAI,CAClB,CACF,CAEA,SAASC,IAAiBD,EAAME,EAAO,CACrC,OAAO,UAAW,CAChB,KAAKF,CAAI,EAAIE,CACf,CACF,CAEA,SAASC,IAAiBH,EAAME,EAAO,CACrC,OAAO,UAAW,CAChB,IAAIE,EAAIF,EAAM,MAAM,KAAM,SAAS,EAC/BE,GAAK,KAAM,OAAO,KAAKJ,CAAI,EAC1B,KAAKA,CAAI,EAAII,CACpB,CACF,CAEe,SAARC,GAAiBL,EAAME,EAAO,CACnC,OAAO,UAAU,OAAS,EACpB,KAAK,MAAMA,GAAS,KAChBH,IAAiB,OAAOG,GAAU,WAClCC,IACAF,KAAkBD,EAAME,CAAK,CAAC,EAClC,KAAK,KAAK,EAAEF,CAAI,CACxB,CA3BA,IAAAM,GAAAC,GAAA,QCAA,SAASC,GAAWC,EAAQ,CAC1B,OAAOA,EAAO,KAAK,EAAE,MAAM,OAAO,CACpC,CAEA,SAASC,GAAUC,EAAM,CACvB,OAAOA,EAAK,WAAa,IAAIC,GAAUD,CAAI,CAC7C,CAEA,SAASC,GAAUD,EAAM,CACvB,KAAK,MAAQA,EACb,KAAK,OAASH,GAAWG,EAAK,aAAa,OAAO,GAAK,EAAE,CAC3D,CAsBA,SAASE,GAAWF,EAAMG,EAAO,CAE/B,QADIC,EAAOL,GAAUC,CAAI,EAAGK,EAAI,GAAIC,EAAIH,EAAM,OACvC,EAAEE,EAAIC,GAAGF,EAAK,IAAID,EAAME,CAAC,CAAC,CACnC,CAEA,SAASE,GAAcP,EAAMG,EAAO,CAElC,QADIC,EAAOL,GAAUC,CAAI,EAAGK,EAAI,GAAIC,EAAIH,EAAM,OACvC,EAAEE,EAAIC,GAAGF,EAAK,OAAOD,EAAME,CAAC,CAAC,CACtC,CAEA,SAASG,IAAYL,EAAO,CAC1B,OAAO,UAAW,CAChBD,GAAW,KAAMC,CAAK,CACxB,CACF,CAEA,SAASM,IAAaN,EAAO,CAC3B,OAAO,UAAW,CAChBI,GAAc,KAAMJ,CAAK,CAC3B,CACF,CAEA,SAASO,IAAgBP,EAAOQ,EAAO,CACrC,OAAO,UAAW,EACfA,EAAM,MAAM,KAAM,SAAS,EAAIT,GAAaK,IAAe,KAAMJ,CAAK,CACzE,CACF,CAEe,SAARS,GAAiBC,EAAMF,EAAO,CACnC,IAAIR,EAAQN,GAAWgB,EAAO,EAAE,EAEhC,GAAI,UAAU,OAAS,EAAG,CAExB,QADIT,EAAOL,GAAU,KAAK,KAAK,CAAC,EAAG,EAAI,GAAIO,EAAIH,EAAM,OAC9C,EAAE,EAAIG,GAAG,GAAI,CAACF,EAAK,SAASD,EAAM,CAAC,CAAC,EAAG,MAAO,GACrD,MAAO,EACT,CAEA,OAAO,KAAK,MAAM,OAAOQ,GAAU,WAC7BD,IAAkBC,EAClBH,IACAC,KAAcN,EAAOQ,CAAK,CAAC,CACnC,CA1EA,IAAAG,GAAAC,GAAA,KAaAd,GAAU,UAAY,CACpB,IAAK,SAASY,EAAM,CAClB,IAAIR,EAAI,KAAK,OAAO,QAAQQ,CAAI,EAC5BR,EAAI,IACN,KAAK,OAAO,KAAKQ,CAAI,EACrB,KAAK,MAAM,aAAa,QAAS,KAAK,OAAO,KAAK,GAAG,CAAC,EAE1D,EACA,OAAQ,SAASA,EAAM,CACrB,IAAIR,EAAI,KAAK,OAAO,QAAQQ,CAAI,EAC5BR,GAAK,IACP,KAAK,OAAO,OAAOA,EAAG,CAAC,EACvB,KAAK,MAAM,aAAa,QAAS,KAAK,OAAO,KAAK,GAAG,CAAC,EAE1D,EACA,SAAU,SAASQ,EAAM,CACvB,OAAO,KAAK,OAAO,QAAQA,CAAI,GAAK,CACtC,CACF,IC/BA,SAASG,KAAa,CACpB,KAAK,YAAc,EACrB,CAEA,SAASC,IAAaC,EAAO,CAC3B,OAAO,UAAW,CAChB,KAAK,YAAcA,CACrB,CACF,CAEA,SAASC,IAAaD,EAAO,CAC3B,OAAO,UAAW,CAChB,IAAIE,EAAIF,EAAM,MAAM,KAAM,SAAS,EACnC,KAAK,YAAcE,GAAY,EACjC,CACF,CAEe,SAARC,GAAiBH,EAAO,CAC7B,OAAO,UAAU,OACX,KAAK,KAAKA,GAAS,KACfF,KAAc,OAAOE,GAAU,WAC/BC,IACAF,KAAcC,CAAK,CAAC,EACxB,KAAK,KAAK,EAAE,WACpB,CAxBA,IAAAI,GAAAC,GAAA,QCAA,SAASC,KAAa,CACpB,KAAK,UAAY,EACnB,CAEA,SAASC,IAAaC,EAAO,CAC3B,OAAO,UAAW,CAChB,KAAK,UAAYA,CACnB,CACF,CAEA,SAASC,IAAaD,EAAO,CAC3B,OAAO,UAAW,CAChB,IAAIE,EAAIF,EAAM,MAAM,KAAM,SAAS,EACnC,KAAK,UAAYE,GAAY,EAC/B,CACF,CAEe,SAARC,GAAiBH,EAAO,CAC7B,OAAO,UAAU,OACX,KAAK,KAAKA,GAAS,KACfF,KAAc,OAAOE,GAAU,WAC/BC,IACAF,KAAcC,CAAK,CAAC,EACxB,KAAK,KAAK,EAAE,SACpB,CAxBA,IAAAI,GAAAC,GAAA,QCAA,SAASC,KAAQ,CACX,KAAK,aAAa,KAAK,WAAW,YAAY,IAAI,CACxD,CAEe,SAARC,IAAmB,CACxB,OAAO,KAAK,KAAKD,GAAK,CACxB,CANA,IAAAE,GAAAC,GAAA,QCAA,SAASC,KAAQ,CACX,KAAK,iBAAiB,KAAK,WAAW,aAAa,KAAM,KAAK,WAAW,UAAU,CACzF,CAEe,SAARC,IAAmB,CACxB,OAAO,KAAK,KAAKD,GAAK,CACxB,CANA,IAAAE,GAAAC,GAAA,QCEe,SAARC,GAAiBC,EAAM,CAC5B,IAAIC,EAAS,OAAOD,GAAS,WAAaA,EAAOE,GAAQF,CAAI,EAC7D,OAAO,KAAK,OAAO,UAAW,CAC5B,OAAO,KAAK,YAAYC,EAAO,MAAM,KAAM,SAAS,CAAC,CACvD,CAAC,CACH,CAPA,IAAAE,GAAAC,GAAA,KAAAC,OCGA,SAASC,KAAe,CACtB,OAAO,IACT,CAEe,SAARC,GAAiBC,EAAMC,EAAQ,CACpC,IAAIC,EAAS,OAAOF,GAAS,WAAaA,EAAOG,GAAQH,CAAI,EACzDI,EAASH,GAAU,KAAOH,IAAe,OAAOG,GAAW,WAAaA,EAASI,GAASJ,CAAM,EACpG,OAAO,KAAK,OAAO,UAAW,CAC5B,OAAO,KAAK,aAAaC,EAAO,MAAM,KAAM,SAAS,EAAGE,EAAO,MAAM,KAAM,SAAS,GAAK,IAAI,CAC/F,CAAC,CACH,CAbA,IAAAE,GAAAC,GAAA,KAAAC,KACAC,OCDA,SAASC,KAAS,CAChB,IAAIC,EAAS,KAAK,WACdA,GAAQA,EAAO,YAAY,IAAI,CACrC,CAEe,SAARC,IAAmB,CACxB,OAAO,KAAK,KAAKF,GAAM,CACzB,CAPA,IAAAG,GAAAC,GAAA,QCAA,SAASC,KAAyB,CAChC,IAAIC,EAAQ,KAAK,UAAU,EAAK,EAAGC,EAAS,KAAK,WACjD,OAAOA,EAASA,EAAO,aAAaD,EAAO,KAAK,WAAW,EAAIA,CACjE,CAEA,SAASE,KAAsB,CAC7B,IAAIF,EAAQ,KAAK,UAAU,EAAI,EAAGC,EAAS,KAAK,WAChD,OAAOA,EAASA,EAAO,aAAaD,EAAO,KAAK,WAAW,EAAIA,CACjE,CAEe,SAARG,GAAiBC,EAAM,CAC5B,OAAO,KAAK,OAAOA,EAAOF,IAAsBH,GAAsB,CACxE,CAZA,IAAAM,GAAAC,GAAA,QCAe,SAARC,GAAiBC,EAAO,CAC7B,OAAO,UAAU,OACX,KAAK,SAAS,WAAYA,CAAK,EAC/B,KAAK,KAAK,EAAE,QACpB,CAJA,IAAAC,GAAAC,GAAA,QCAA,SAASC,IAAgBC,EAAU,CACjC,OAAO,SAASC,EAAO,CACrBD,EAAS,KAAK,KAAMC,EAAO,KAAK,QAAQ,CAC1C,CACF,CAEA,SAASC,IAAeC,EAAW,CACjC,OAAOA,EAAU,KAAK,EAAE,MAAM,OAAO,EAAE,IAAI,SAAS,EAAG,CACrD,IAAIC,EAAO,GAAIC,EAAI,EAAE,QAAQ,GAAG,EAChC,OAAIA,GAAK,IAAGD,EAAO,EAAE,MAAMC,EAAI,CAAC,EAAG,EAAI,EAAE,MAAM,EAAGA,CAAC,GAC5C,CAAC,KAAM,EAAG,KAAMD,CAAI,CAC7B,CAAC,CACH,CAEA,SAASE,IAASC,EAAU,CAC1B,OAAO,UAAW,CAChB,IAAIC,EAAK,KAAK,KACd,GAAKA,EACL,SAASC,EAAI,EAAGJ,EAAI,GAAIK,EAAIF,EAAG,OAAQ,EAAGC,EAAIC,EAAG,EAAED,EAC7C,EAAID,EAAGC,CAAC,GAAI,CAACF,EAAS,MAAQ,EAAE,OAASA,EAAS,OAAS,EAAE,OAASA,EAAS,KACjF,KAAK,oBAAoB,EAAE,KAAM,EAAE,SAAU,EAAE,OAAO,EAEtDC,EAAG,EAAEH,CAAC,EAAI,EAGV,EAAEA,EAAGG,EAAG,OAASH,EAChB,OAAO,KAAK,KACnB,CACF,CAEA,SAASM,IAAMJ,EAAUK,EAAOC,EAAS,CACvC,OAAO,UAAW,CAChB,IAAIL,EAAK,KAAK,KAAMM,EAAGd,EAAWD,IAAgBa,CAAK,EACvD,GAAIJ,GAAI,QAASC,EAAI,EAAGC,EAAIF,EAAG,OAAQC,EAAIC,EAAG,EAAED,EAC9C,IAAKK,EAAIN,EAAGC,CAAC,GAAG,OAASF,EAAS,MAAQO,EAAE,OAASP,EAAS,KAAM,CAClE,KAAK,oBAAoBO,EAAE,KAAMA,EAAE,SAAUA,EAAE,OAAO,EACtD,KAAK,iBAAiBA,EAAE,KAAMA,EAAE,SAAWd,EAAUc,EAAE,QAAUD,CAAO,EACxEC,EAAE,MAAQF,EACV,MACF,EAEF,KAAK,iBAAiBL,EAAS,KAAMP,EAAUa,CAAO,EACtDC,EAAI,CAAC,KAAMP,EAAS,KAAM,KAAMA,EAAS,KAAM,MAAOK,EAAO,SAAUZ,EAAU,QAASa,CAAO,EAC5FL,EACAA,EAAG,KAAKM,CAAC,EADL,KAAK,KAAO,CAACA,CAAC,CAEzB,CACF,CAEe,SAARC,GAAiBR,EAAUK,EAAOC,EAAS,CAChD,IAAIV,EAAYD,IAAeK,EAAW,EAAE,EAAG,EAAGS,EAAIb,EAAU,OAAQc,EAExE,GAAI,UAAU,OAAS,EAAG,CACxB,IAAIT,EAAK,KAAK,KAAK,EAAE,KACrB,GAAIA,GAAI,QAASC,EAAI,EAAGC,EAAIF,EAAG,OAAQM,EAAGL,EAAIC,EAAG,EAAED,EACjD,IAAK,EAAI,EAAGK,EAAIN,EAAGC,CAAC,EAAG,EAAIO,EAAG,EAAE,EAC9B,IAAKC,EAAId,EAAU,CAAC,GAAG,OAASW,EAAE,MAAQG,EAAE,OAASH,EAAE,KACrD,OAAOA,EAAE,MAIf,MACF,CAGA,IADAN,EAAKI,EAAQD,IAAQL,IAChB,EAAI,EAAG,EAAIU,EAAG,EAAE,EAAG,KAAK,KAAKR,EAAGL,EAAU,CAAC,EAAGS,EAAOC,CAAO,CAAC,EAClE,OAAO,IACT,CAlEA,IAAAK,GAAAC,GAAA,QCEA,SAASC,GAAcC,EAAMC,EAAMC,EAAQ,CACzC,IAAIC,EAASC,GAAYJ,CAAI,EACzBK,EAAQF,EAAO,YAEf,OAAOE,GAAU,WACnBA,EAAQ,IAAIA,EAAMJ,EAAMC,CAAM,GAE9BG,EAAQF,EAAO,SAAS,YAAY,OAAO,EACvCD,GAAQG,EAAM,UAAUJ,EAAMC,EAAO,QAASA,EAAO,UAAU,EAAGG,EAAM,OAASH,EAAO,QACvFG,EAAM,UAAUJ,EAAM,GAAO,EAAK,GAGzCD,EAAK,cAAcK,CAAK,CAC1B,CAEA,SAASC,IAAiBL,EAAMC,EAAQ,CACtC,OAAO,UAAW,CAChB,OAAOH,GAAc,KAAME,EAAMC,CAAM,CACzC,CACF,CAEA,SAASK,IAAiBN,EAAMC,EAAQ,CACtC,OAAO,UAAW,CAChB,OAAOH,GAAc,KAAME,EAAMC,EAAO,MAAM,KAAM,SAAS,CAAC,CAChE,CACF,CAEe,SAARM,GAAiBP,EAAMC,EAAQ,CACpC,OAAO,KAAK,MAAM,OAAOA,GAAW,WAC9BK,IACAD,KAAkBL,EAAMC,CAAM,CAAC,CACvC,CAjCA,IAAAO,GAAAC,GAAA,KAAAC,OCAe,SAARC,IAAoB,CACzB,QAASC,EAAS,KAAK,QAASC,EAAI,EAAGC,EAAIF,EAAO,OAAQC,EAAIC,EAAG,EAAED,EACjE,QAASE,EAAQH,EAAOC,CAAC,EAAG,EAAI,EAAGG,EAAID,EAAM,OAAQE,EAAM,EAAID,EAAG,EAAE,GAC9DC,EAAOF,EAAM,CAAC,KAAG,MAAME,EAGjC,CANA,IAAAC,GAAAC,GAAA,QCqCO,SAASC,GAAUC,EAAQC,EAAS,CACzC,KAAK,QAAUD,EACf,KAAK,SAAWC,CAClB,CAEA,SAASC,IAAY,CACnB,OAAO,IAAIH,GAAU,CAAC,CAAC,SAAS,eAAe,CAAC,EAAGI,EAAI,CACzD,CAEA,SAASC,KAAsB,CAC7B,OAAO,IACT,CAhDA,IAmCWD,GAsDJE,GAzFPC,GAAAC,GAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAEWtC,GAAO,CAAC,IAAI,EAevBJ,GAAU,UAAYG,GAAU,UAAY,CAC1C,YAAaH,GACb,OAAQ2C,GACR,UAAWC,GACX,YAAaC,GACb,eAAgBC,GAChB,OAAQC,GACR,KAAMC,GACN,MAAOC,GACP,KAAMC,GACN,KAAMC,GACN,MAAOC,GACP,UAAW/C,IACX,MAAOgD,GACP,KAAMC,GACN,KAAMC,GACN,MAAOC,GACP,KAAMC,GACN,KAAMC,GACN,MAAOC,GACP,KAAMC,GACN,KAAMC,GACN,MAAOC,GACP,SAAUC,GACV,QAASC,GACT,KAAMC,GACN,KAAMC,GACN,MAAOC,GACP,MAAOC,GACP,OAAQC,GACR,OAAQC,GACR,OAAQC,GACR,MAAOC,GACP,MAAOC,GACP,GAAIC,GACJ,SAAUC,GACV,CAAC,OAAO,QAAQ,EAAGC,EACrB,EAEOtE,GAAQH,KCvFA,SAAR0E,GAAiBC,EAAU,CAChC,OAAO,OAAOA,GAAa,SACrB,IAAIC,GAAU,CAAC,CAAC,SAAS,cAAcD,CAAQ,CAAC,CAAC,EAAG,CAAC,SAAS,eAAe,CAAC,EAC9E,IAAIC,GAAU,CAAC,CAACD,CAAQ,CAAC,EAAGE,EAAI,CACxC,CANA,IAAAC,GAAAC,GAAA,KAAAC,OCGe,SAARC,GAAiBC,EAAM,CAC5B,OAAOC,GAAOC,GAAQF,CAAI,EAAE,KAAK,SAAS,eAAe,CAAC,CAC5D,CALA,IAAAG,GAAAC,GAAA,KAAAC,KACAC,OCCe,SAARC,IAAyB,CAC9B,OAAO,IAAIC,EACb,CAEA,SAASA,IAAQ,CACf,KAAK,EAAI,KAAO,EAAEC,KAAQ,SAAS,EAAE,CACvC,CARA,IAAIA,IAAJC,GAAAC,GAAA,KAAIF,IAAS,EAUbD,GAAM,UAAYD,GAAM,UAAY,CAClC,YAAaC,GACb,IAAK,SAASI,EAAM,CAElB,QADIC,EAAK,KAAK,EACP,EAAEA,KAAMD,IAAO,GAAI,EAAEA,EAAOA,EAAK,YAAa,OACrD,OAAOA,EAAKC,CAAE,CAChB,EACA,IAAK,SAASD,EAAME,EAAO,CACzB,OAAOF,EAAK,KAAK,CAAC,EAAIE,CACxB,EACA,OAAQ,SAASF,EAAM,CACrB,OAAO,KAAK,KAAKA,GAAQ,OAAOA,EAAK,KAAK,CAAC,CAC7C,EACA,SAAU,UAAW,CACnB,OAAO,KAAK,CACd,CACF,IC1Be,SAARG,GAAiBC,EAAO,CAC7B,IAAIC,EACJ,KAAOA,EAAcD,EAAM,aAAaA,EAAQC,EAChD,OAAOD,CACT,CAJA,IAAAE,GAAAC,GAAA,QCEe,SAARC,GAAiBC,EAAOC,EAAM,CAGnC,GAFAD,EAAQE,GAAYF,CAAK,EACrBC,IAAS,SAAWA,EAAOD,EAAM,eACjCC,EAAM,CACR,IAAIE,EAAMF,EAAK,iBAAmBA,EAClC,GAAIE,EAAI,eAAgB,CACtB,IAAIC,EAAQD,EAAI,eAAe,EAC/B,OAAAC,EAAM,EAAIJ,EAAM,QAASI,EAAM,EAAIJ,EAAM,QACzCI,EAAQA,EAAM,gBAAgBH,EAAK,aAAa,EAAE,QAAQ,CAAC,EACpD,CAACG,EAAM,EAAGA,EAAM,CAAC,CAC1B,CACA,GAAIH,EAAK,sBAAuB,CAC9B,IAAII,EAAOJ,EAAK,sBAAsB,EACtC,MAAO,CAACD,EAAM,QAAUK,EAAK,KAAOJ,EAAK,WAAYD,EAAM,QAAUK,EAAK,IAAMJ,EAAK,SAAS,CAChG,CACF,CACA,MAAO,CAACD,EAAM,MAAOA,EAAM,KAAK,CAClC,CAnBA,IAAAM,GAAAC,GAAA,KAAAC,OCGe,SAARC,GAAiBC,EAAQC,EAAM,CACpC,OAAID,EAAO,SACTA,EAASE,GAAYF,CAAM,EACvBC,IAAS,SAAWA,EAAOD,EAAO,eACtCA,EAASA,EAAO,SAAW,CAACA,CAAM,GAE7B,MAAM,KAAKA,EAAQG,GAASC,GAAQD,EAAOF,CAAI,CAAC,CACzD,CAVA,IAAAI,GAAAC,GAAA,KAAAC,KACAC,OCEe,SAARC,GAAiBC,EAAU,CAChC,OAAO,OAAOA,GAAa,SACrB,IAAIC,GAAU,CAAC,SAAS,iBAAiBD,CAAQ,CAAC,EAAG,CAAC,SAAS,eAAe,CAAC,EAC/E,IAAIC,GAAU,CAACC,GAAMF,CAAQ,CAAC,EAAGG,EAAI,CAC7C,CAPA,IAAAC,GAAAC,GAAA,KAAAC,KACAC,OCDA,IAAAC,GAAA,GAAAC,GAAAD,GAAA,YAAAE,GAAA,YAAAC,GAAA,UAAAC,GAAA,YAAAC,GAAA,cAAAC,GAAA,eAAAC,GAAA,YAAAC,GAAA,aAAAC,GAAA,WAAAC,GAAA,cAAAC,GAAA,cAAAC,GAAA,aAAAC,GAAA,gBAAAC,GAAA,UAAAC,GAAA,WAAAC,KAAA,IAAAC,GAAAC,GAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,OCLe,SAARC,GAAiBC,EAAO,CAC7BA,EAAM,eAAe,EACrBA,EAAM,yBAAyB,CACjC,CAZA,IAGaC,GAHbC,GAAAC,GAAA,KAGaF,GAAoB,CAAC,QAAS,GAAM,QAAS,EAAK,ICAhD,SAARG,GAAiBC,EAAM,CAC5B,IAAIC,EAAOD,EAAK,SAAS,gBACrBE,EAAYC,GAAOH,CAAI,EAAE,GAAG,iBAAkBI,GAASC,EAAiB,EACxE,kBAAmBJ,EACrBC,EAAU,GAAG,mBAAoBE,GAASC,EAAiB,GAE3DJ,EAAK,WAAaA,EAAK,MAAM,cAC7BA,EAAK,MAAM,cAAgB,OAE/B,CAEO,SAASK,GAAQN,EAAMO,EAAS,CACrC,IAAIN,EAAOD,EAAK,SAAS,gBACrBE,EAAYC,GAAOH,CAAI,EAAE,GAAG,iBAAkB,IAAI,EAClDO,IACFL,EAAU,GAAG,aAAcE,GAASC,EAAiB,EACrD,WAAW,UAAW,CAAEH,EAAU,GAAG,aAAc,IAAI,CAAG,EAAG,CAAC,GAE5D,kBAAmBD,EACrBC,EAAU,GAAG,mBAAoB,IAAI,GAErCD,EAAK,MAAM,cAAgBA,EAAK,WAChC,OAAOA,EAAK,WAEhB,CA3BA,IAAAO,GAAAC,GAAA,KAAAC,KACAC,OCDA,IAAAC,GAAAC,GAAA,KACAC,OCWO,SAASC,IAAM,CACpB,OAAOC,KAAaC,GAASC,GAAQ,EAAGF,GAAWG,GAAM,IAAI,EAAIC,GACnE,CAEA,SAASF,KAAW,CAClBF,GAAW,CACb,CAEO,SAASK,IAAQ,CACtB,KAAK,MACL,KAAK,MACL,KAAK,MAAQ,IACf,CAyBO,SAASC,GAAMC,EAAUC,EAAOC,EAAM,CAC3C,IAAIC,EAAI,IAAIL,GACZ,OAAAK,EAAE,QAAQH,EAAUC,EAAOC,CAAI,EACxBC,CACT,CAEO,SAASC,IAAa,CAC3BZ,GAAI,EACJ,EAAEa,GAEF,QADIF,EAAIG,GAAUC,EACXJ,IACAI,EAAId,GAAWU,EAAE,QAAU,GAAGA,EAAE,MAAM,KAAK,OAAWI,CAAC,EAC5DJ,EAAIA,EAAE,MAER,EAAEE,EACJ,CAEA,SAASG,IAAO,CACdf,IAAYgB,GAAYb,GAAM,IAAI,GAAKC,GACvCQ,GAAQK,GAAU,EAClB,GAAI,CACFN,GAAW,CACb,QAAE,CACAC,GAAQ,EACRM,IAAI,EACJlB,GAAW,CACb,CACF,CAEA,SAASmB,KAAO,CACd,IAAIpB,EAAMI,GAAM,IAAI,EAAGK,EAAQT,EAAMiB,GACjCR,EAAQY,KAAWhB,IAAaI,EAAOQ,GAAYjB,EACzD,CAEA,SAASmB,KAAM,CAEb,QADIG,EAAIC,EAAKT,GAAUU,EAAId,EAAO,IAC3Ba,GACDA,EAAG,OACDb,EAAOa,EAAG,QAAOb,EAAOa,EAAG,OAC/BD,EAAKC,EAAIA,EAAKA,EAAG,QAEjBC,EAAKD,EAAG,MAAOA,EAAG,MAAQ,KAC1BA,EAAKD,EAAKA,EAAG,MAAQE,EAAKV,GAAWU,GAGzCC,GAAWH,EACXI,GAAMhB,CAAI,CACZ,CAEA,SAASgB,GAAMhB,EAAM,CACnB,GAAI,CAAAG,GACJ,CAAIK,KAASA,GAAU,aAAaA,EAAO,GAC3C,IAAIT,EAAQC,EAAOT,GACfQ,EAAQ,IACNC,EAAO,MAAUQ,GAAU,WAAWF,GAAMN,EAAON,GAAM,IAAI,EAAIC,EAAS,GAC1EsB,KAAUA,GAAW,cAAcA,EAAQ,KAE1CA,KAAUV,GAAYb,GAAM,IAAI,EAAGuB,GAAW,YAAYP,IAAMC,EAAS,GAC9ER,GAAQ,EAAGX,GAASc,EAAI,GAE5B,CA7GA,IAAIH,GACAK,GACAS,GACAN,GACAP,GACAW,GACAR,GACAhB,GACAI,GACAD,GACAF,GAVJ0B,GAAAC,GAAA,KAAIhB,GAAQ,EACRK,GAAU,EACVS,GAAW,EACXN,GAAY,IAGZJ,GAAY,EACZhB,GAAW,EACXI,GAAY,EACZD,GAAQ,OAAO,aAAgB,UAAY,YAAY,IAAM,YAAc,KAC3EF,GAAW,OAAO,QAAW,UAAY,OAAO,sBAAwB,OAAO,sBAAsB,KAAK,MAAM,EAAI,SAAS4B,EAAG,CAAE,WAAWA,EAAG,EAAE,CAAG,EAgBzJxB,GAAM,UAAYC,GAAM,UAAY,CAClC,YAAaD,GACb,QAAS,SAASE,EAAUC,EAAOC,EAAM,CACvC,GAAI,OAAOF,GAAa,WAAY,MAAM,IAAI,UAAU,4BAA4B,EACpFE,GAAQA,GAAQ,KAAOV,GAAI,EAAI,CAACU,IAASD,GAAS,KAAO,EAAI,CAACA,GAC1D,CAAC,KAAK,OAASgB,KAAa,OAC1BA,GAAUA,GAAS,MAAQ,KAC1BX,GAAW,KAChBW,GAAW,MAEb,KAAK,MAAQjB,EACb,KAAK,MAAQE,EACbgB,GAAM,CACR,EACA,KAAM,UAAW,CACX,KAAK,QACP,KAAK,MAAQ,KACb,KAAK,MAAQ,IACbA,GAAM,EAEV,CACF,IC7Ce,SAARK,GAAiBC,EAAUC,EAAOC,EAAM,CAC7C,IAAIC,EAAI,IAAIC,GACZ,OAAAH,EAAQA,GAAS,KAAO,EAAI,CAACA,EAC7BE,EAAE,QAAQE,GAAW,CACnBF,EAAE,KAAK,EACPH,EAASK,EAAUJ,CAAK,CAC1B,EAAGA,EAAOC,CAAI,EACPC,CACT,CAVA,IAAAG,GAAAC,GAAA,KAAAC,OCAA,IAAAC,GAAAC,GAAA,KAAAC,KAMAC,OCQe,SAARC,GAAiBC,EAAMC,EAAMC,EAAIC,EAAOC,EAAOC,EAAQ,CAC5D,IAAIC,EAAYN,EAAK,aACrB,GAAI,CAACM,EAAWN,EAAK,aAAe,CAAC,UAC5BE,KAAMI,EAAW,OAC1BC,IAAOP,EAAME,EAAI,CACf,KAAMD,EACN,MAAOE,EACP,MAAOC,EACP,GAAII,IACJ,MAAOC,IACP,KAAMJ,EAAO,KACb,MAAOA,EAAO,MACd,SAAUA,EAAO,SACjB,KAAMA,EAAO,KACb,MAAO,KACP,MAAOK,EACT,CAAC,CACH,CAEO,SAASC,GAAKX,EAAME,EAAI,CAC7B,IAAIU,EAAWC,GAAIb,EAAME,CAAE,EAC3B,GAAIU,EAAS,MAAQF,GAAS,MAAM,IAAI,MAAM,6BAA6B,EAC3E,OAAOE,CACT,CAEO,SAASE,GAAId,EAAME,EAAI,CAC5B,IAAIU,EAAWC,GAAIb,EAAME,CAAE,EAC3B,GAAIU,EAAS,MAAQG,GAAS,MAAM,IAAI,MAAM,2BAA2B,EACzE,OAAOH,CACT,CAEO,SAASC,GAAIb,EAAME,EAAI,CAC5B,IAAIU,EAAWZ,EAAK,aACpB,GAAI,CAACY,GAAY,EAAEA,EAAWA,EAASV,CAAE,GAAI,MAAM,IAAI,MAAM,sBAAsB,EACnF,OAAOU,CACT,CAEA,SAASL,IAAOP,EAAME,EAAIc,EAAM,CAC9B,IAAIV,EAAYN,EAAK,aACjBiB,EAIJX,EAAUJ,CAAE,EAAIc,EAChBA,EAAK,MAAQE,GAAMN,EAAU,EAAGI,EAAK,IAAI,EAEzC,SAASJ,EAASO,EAAS,CACzBH,EAAK,MAAQI,GACbJ,EAAK,MAAM,QAAQK,EAAOL,EAAK,MAAOA,EAAK,IAAI,EAG3CA,EAAK,OAASG,GAASE,EAAMF,EAAUH,EAAK,KAAK,CACvD,CAEA,SAASK,EAAMF,EAAS,CACtB,IAAIG,EAAGC,EAAGC,EAAGC,EAGb,GAAIT,EAAK,QAAUI,GAAW,OAAOM,EAAK,EAE1C,IAAKJ,KAAKhB,EAER,GADAmB,EAAInB,EAAUgB,CAAC,EACXG,EAAE,OAAST,EAAK,KAKpB,IAAIS,EAAE,QAAUV,GAAS,OAAOY,GAAQN,CAAK,EAGzCI,EAAE,QAAUG,IACdH,EAAE,MAAQI,GACVJ,EAAE,MAAM,KAAK,EACbA,EAAE,GAAG,KAAK,YAAazB,EAAMA,EAAK,SAAUyB,EAAE,MAAOA,EAAE,KAAK,EAC5D,OAAOnB,EAAUgB,CAAC,GAIX,CAACA,EAAIpB,IACZuB,EAAE,MAAQI,GACVJ,EAAE,MAAM,KAAK,EACbA,EAAE,GAAG,KAAK,SAAUzB,EAAMA,EAAK,SAAUyB,EAAE,MAAOA,EAAE,KAAK,EACzD,OAAOnB,EAAUgB,CAAC,GAoBtB,GAZAK,GAAQ,UAAW,CACbX,EAAK,QAAUD,KACjBC,EAAK,MAAQY,GACbZ,EAAK,MAAM,QAAQc,EAAMd,EAAK,MAAOA,EAAK,IAAI,EAC9Cc,EAAKX,CAAO,EAEhB,CAAC,EAIDH,EAAK,MAAQe,GACbf,EAAK,GAAG,KAAK,QAAShB,EAAMA,EAAK,SAAUgB,EAAK,MAAOA,EAAK,KAAK,EAC7DA,EAAK,QAAUe,GAKnB,KAJAf,EAAK,MAAQD,GAGbE,EAAQ,IAAI,MAAMO,EAAIR,EAAK,MAAM,MAAM,EAClCM,EAAI,EAAGC,EAAI,GAAID,EAAIE,EAAG,EAAEF,GACvBG,EAAIT,EAAK,MAAMM,CAAC,EAAE,MAAM,KAAKtB,EAAMA,EAAK,SAAUgB,EAAK,MAAOA,EAAK,KAAK,KAC1EC,EAAM,EAAEM,CAAC,EAAIE,GAGjBR,EAAM,OAASM,EAAI,EACrB,CAEA,SAASO,EAAKX,EAAS,CAKrB,QAJIa,EAAIb,EAAUH,EAAK,SAAWA,EAAK,KAAK,KAAK,KAAMG,EAAUH,EAAK,QAAQ,GAAKA,EAAK,MAAM,QAAQU,CAAI,EAAGV,EAAK,MAAQiB,GAAQ,GAC9HX,EAAI,GACJE,EAAIP,EAAM,OAEP,EAAEK,EAAIE,GACXP,EAAMK,CAAC,EAAE,KAAKtB,EAAMgC,CAAC,EAInBhB,EAAK,QAAUiB,KACjBjB,EAAK,GAAG,KAAK,MAAOhB,EAAMA,EAAK,SAAUgB,EAAK,MAAOA,EAAK,KAAK,EAC/DU,EAAK,EAET,CAEA,SAASA,GAAO,CACdV,EAAK,MAAQa,GACbb,EAAK,MAAM,KAAK,EAChB,OAAOV,EAAUJ,CAAE,EACnB,QAASoB,KAAKhB,EAAW,OACzB,OAAON,EAAK,YACd,CACF,CAxJA,IAGIQ,IACAC,IAEOC,GACAU,GACAW,GACAhB,GACAa,GACAK,GACAJ,GAZXK,GAAAC,GAAA,KAAAC,KACAA,KAEI5B,IAAU6B,GAAS,QAAS,MAAO,SAAU,WAAW,EACxD5B,IAAa,CAAC,EAEPC,GAAU,EACVU,GAAY,EACZW,GAAW,EACXhB,GAAU,EACVa,GAAU,EACVK,GAAS,EACTJ,GAAQ,ICVJ,SAARS,GAAiBC,EAAMC,EAAM,CAClC,IAAIC,EAAYF,EAAK,aACjBG,EACAC,EACAC,EAAQ,GACRC,EAEJ,GAAKJ,EAEL,CAAAD,EAAOA,GAAQ,KAAO,KAAOA,EAAO,GAEpC,IAAKK,KAAKJ,EAAW,CACnB,IAAKC,EAAWD,EAAUI,CAAC,GAAG,OAASL,EAAM,CAAEI,EAAQ,GAAO,QAAU,CACxED,EAASD,EAAS,MAAQI,IAAYJ,EAAS,MAAQK,GACvDL,EAAS,MAAQM,GACjBN,EAAS,MAAM,KAAK,EACpBA,EAAS,GAAG,KAAKC,EAAS,YAAc,SAAUJ,EAAMA,EAAK,SAAUG,EAAS,MAAOA,EAAS,KAAK,EACrG,OAAOD,EAAUI,CAAC,CACpB,CAEID,GAAO,OAAOL,EAAK,aACzB,CAvBA,IAAAU,GAAAC,GAAA,KAAAC,OCEe,SAARC,GAAiBC,EAAM,CAC5B,OAAO,KAAK,KAAK,UAAW,CAC1BD,GAAU,KAAMC,CAAI,CACtB,CAAC,CACH,CANA,IAAAC,GAAAC,GAAA,KAAAD,OCEA,SAASE,IAAYC,EAAIC,EAAM,CAC7B,IAAIC,EAAQC,EACZ,OAAO,UAAW,CAChB,IAAIC,EAAWC,GAAI,KAAML,CAAE,EACvBM,EAAQF,EAAS,MAKrB,GAAIE,IAAUJ,EAAQ,CACpBC,EAASD,EAASI,EAClB,QAASC,EAAI,EAAGC,EAAIL,EAAO,OAAQI,EAAIC,EAAG,EAAED,EAC1C,GAAIJ,EAAOI,CAAC,EAAE,OAASN,EAAM,CAC3BE,EAASA,EAAO,MAAM,EACtBA,EAAO,OAAOI,EAAG,CAAC,EAClB,KACF,CAEJ,CAEAH,EAAS,MAAQD,CACnB,CACF,CAEA,SAASM,IAAcT,EAAIC,EAAMS,EAAO,CACtC,IAAIR,EAAQC,EACZ,GAAI,OAAOO,GAAU,WAAY,MAAM,IAAI,MAC3C,OAAO,UAAW,CAChB,IAAIN,EAAWC,GAAI,KAAML,CAAE,EACvBM,EAAQF,EAAS,MAKrB,GAAIE,IAAUJ,EAAQ,CACpBC,GAAUD,EAASI,GAAO,MAAM,EAChC,QAASK,EAAI,CAAC,KAAMV,EAAM,MAAOS,CAAK,EAAGH,EAAI,EAAGC,EAAIL,EAAO,OAAQI,EAAIC,EAAG,EAAED,EAC1E,GAAIJ,EAAOI,CAAC,EAAE,OAASN,EAAM,CAC3BE,EAAOI,CAAC,EAAII,EACZ,KACF,CAEEJ,IAAMC,GAAGL,EAAO,KAAKQ,CAAC,CAC5B,CAEAP,EAAS,MAAQD,CACnB,CACF,CAEe,SAARS,GAAiBX,EAAMS,EAAO,CACnC,IAAIV,EAAK,KAAK,IAId,GAFAC,GAAQ,GAEJ,UAAU,OAAS,EAAG,CAExB,QADIK,EAAQO,GAAI,KAAK,KAAK,EAAGb,CAAE,EAAE,MACxB,EAAI,EAAGQ,EAAIF,EAAM,OAAQK,EAAG,EAAIH,EAAG,EAAE,EAC5C,IAAKG,EAAIL,EAAM,CAAC,GAAG,OAASL,EAC1B,OAAOU,EAAE,MAGb,OAAO,IACT,CAEA,OAAO,KAAK,MAAMD,GAAS,KAAOX,IAAcU,KAAeT,EAAIC,EAAMS,CAAK,CAAC,CACjF,CAEO,SAASI,GAAWC,EAAYd,EAAMS,EAAO,CAClD,IAAIV,EAAKe,EAAW,IAEpB,OAAAA,EAAW,KAAK,UAAW,CACzB,IAAIX,EAAWC,GAAI,KAAML,CAAE,GAC1BI,EAAS,QAAUA,EAAS,MAAQ,CAAC,IAAIH,CAAI,EAAIS,EAAM,MAAM,KAAM,SAAS,CAC/E,CAAC,EAEM,SAASM,EAAM,CACpB,OAAOH,GAAIG,EAAMhB,CAAE,EAAE,MAAMC,CAAI,CACjC,CACF,CAhFA,IAAAgB,GAAAC,GAAA,KAAAC,OCGe,SAARC,GAAiBC,EAAGC,EAAG,CAC5B,IAAIC,EACJ,OAAQ,OAAOD,GAAM,SAAWE,GAC1BF,aAAaG,GAAQC,IACpBH,EAAIE,GAAMH,CAAC,IAAMA,EAAIC,EAAGG,IACzBC,IAAmBN,EAAGC,CAAC,CAC/B,CATA,IAAAM,GAAAC,GAAA,KAAAC,KACAA,OCIA,SAASC,IAAWC,EAAM,CACxB,OAAO,UAAW,CAChB,KAAK,gBAAgBA,CAAI,CAC3B,CACF,CAEA,SAASC,IAAaC,EAAU,CAC9B,OAAO,UAAW,CAChB,KAAK,kBAAkBA,EAAS,MAAOA,EAAS,KAAK,CACvD,CACF,CAEA,SAASC,IAAaH,EAAMI,EAAaC,EAAQ,CAC/C,IAAIC,EACAC,EAAUF,EAAS,GACnBG,EACJ,OAAO,UAAW,CAChB,IAAIC,EAAU,KAAK,aAAaT,CAAI,EACpC,OAAOS,IAAYF,EAAU,KACvBE,IAAYH,EAAWE,EACvBA,EAAeJ,EAAYE,EAAWG,EAASJ,CAAM,CAC7D,CACF,CAEA,SAASK,IAAeR,EAAUE,EAAaC,EAAQ,CACrD,IAAIC,EACAC,EAAUF,EAAS,GACnBG,EACJ,OAAO,UAAW,CAChB,IAAIC,EAAU,KAAK,eAAeP,EAAS,MAAOA,EAAS,KAAK,EAChE,OAAOO,IAAYF,EAAU,KACvBE,IAAYH,EAAWE,EACvBA,EAAeJ,EAAYE,EAAWG,EAASJ,CAAM,CAC7D,CACF,CAEA,SAASM,IAAaX,EAAMI,EAAaQ,EAAO,CAC9C,IAAIN,EACAO,EACAL,EACJ,OAAO,UAAW,CAChB,IAAIC,EAASJ,EAASO,EAAM,IAAI,EAAGL,EACnC,OAAIF,GAAU,KAAa,KAAK,KAAK,gBAAgBL,CAAI,GACzDS,EAAU,KAAK,aAAaT,CAAI,EAChCO,EAAUF,EAAS,GACZI,IAAYF,EAAU,KACvBE,IAAYH,GAAYC,IAAYM,EAAWL,GAC9CK,EAAWN,EAASC,EAAeJ,EAAYE,EAAWG,EAASJ,CAAM,GAClF,CACF,CAEA,SAASS,IAAeZ,EAAUE,EAAaQ,EAAO,CACpD,IAAIN,EACAO,EACAL,EACJ,OAAO,UAAW,CAChB,IAAIC,EAASJ,EAASO,EAAM,IAAI,EAAGL,EACnC,OAAIF,GAAU,KAAa,KAAK,KAAK,kBAAkBH,EAAS,MAAOA,EAAS,KAAK,GACrFO,EAAU,KAAK,eAAeP,EAAS,MAAOA,EAAS,KAAK,EAC5DK,EAAUF,EAAS,GACZI,IAAYF,EAAU,KACvBE,IAAYH,GAAYC,IAAYM,EAAWL,GAC9CK,EAAWN,EAASC,EAAeJ,EAAYE,EAAWG,EAASJ,CAAM,GAClF,CACF,CAEe,SAARU,GAAiBf,EAAMY,EAAO,CACnC,IAAIV,EAAWc,GAAUhB,CAAI,EAAGiB,EAAIf,IAAa,YAAcgB,GAAuBC,GACtF,OAAO,KAAK,UAAUnB,EAAM,OAAOY,GAAU,YACtCV,EAAS,MAAQY,IAAiBH,KAAcT,EAAUe,EAAGG,GAAW,KAAM,QAAUpB,EAAMY,CAAK,CAAC,EACrGA,GAAS,MAAQV,EAAS,MAAQD,IAAeF,KAAYG,CAAQ,GACpEA,EAAS,MAAQQ,IAAiBP,KAAcD,EAAUe,EAAGL,CAAK,CAAC,CAC5E,CA7EA,IAAAS,GAAAC,GAAA,KAAAC,KACAA,KACAC,KACAC,OCDA,SAASC,IAAgBC,EAAMC,EAAG,CAChC,OAAO,SAASC,EAAG,CACjB,KAAK,aAAaF,EAAMC,EAAE,KAAK,KAAMC,CAAC,CAAC,CACzC,CACF,CAEA,SAASC,IAAkBC,EAAUH,EAAG,CACtC,OAAO,SAASC,EAAG,CACjB,KAAK,eAAeE,EAAS,MAAOA,EAAS,MAAOH,EAAE,KAAK,KAAMC,CAAC,CAAC,CACrE,CACF,CAEA,SAASG,IAAYD,EAAUE,EAAO,CACpC,IAAIC,EAAIC,EACR,SAASC,GAAQ,CACf,IAAIR,EAAIK,EAAM,MAAM,KAAM,SAAS,EACnC,OAAIL,IAAMO,IAAID,GAAMC,EAAKP,IAAME,IAAkBC,EAAUH,CAAC,GACrDM,CACT,CACA,OAAAE,EAAM,OAASH,EACRG,CACT,CAEA,SAASC,IAAUV,EAAMM,EAAO,CAC9B,IAAIC,EAAIC,EACR,SAASC,GAAQ,CACf,IAAIR,EAAIK,EAAM,MAAM,KAAM,SAAS,EACnC,OAAIL,IAAMO,IAAID,GAAMC,EAAKP,IAAMF,IAAgBC,EAAMC,CAAC,GAC/CM,CACT,CACA,OAAAE,EAAM,OAASH,EACRG,CACT,CAEe,SAARE,GAAiBX,EAAMM,EAAO,CACnC,IAAIM,EAAM,QAAUZ,EACpB,GAAI,UAAU,OAAS,EAAG,OAAQY,EAAM,KAAK,MAAMA,CAAG,IAAMA,EAAI,OAChE,GAAIN,GAAS,KAAM,OAAO,KAAK,MAAMM,EAAK,IAAI,EAC9C,GAAI,OAAON,GAAU,WAAY,MAAM,IAAI,MAC3C,IAAIF,EAAWS,GAAUb,CAAI,EAC7B,OAAO,KAAK,MAAMY,GAAMR,EAAS,MAAQC,IAAcK,KAAWN,EAAUE,CAAK,CAAC,CACpF,CA3CA,IAAAQ,GAAAC,GAAA,KAAAC,OCEA,SAASC,IAAcC,EAAIC,EAAO,CAChC,OAAO,UAAW,CAChBC,GAAK,KAAMF,CAAE,EAAE,MAAQ,CAACC,EAAM,MAAM,KAAM,SAAS,CACrD,CACF,CAEA,SAASE,IAAcH,EAAIC,EAAO,CAChC,OAAOA,EAAQ,CAACA,EAAO,UAAW,CAChCC,GAAK,KAAMF,CAAE,EAAE,MAAQC,CACzB,CACF,CAEe,SAARG,GAAiBH,EAAO,CAC7B,IAAID,EAAK,KAAK,IAEd,OAAO,UAAU,OACX,KAAK,MAAM,OAAOC,GAAU,WACxBF,IACAI,KAAeH,EAAIC,CAAK,CAAC,EAC7BI,GAAI,KAAK,KAAK,EAAGL,CAAE,EAAE,KAC7B,CAtBA,IAAAM,GAAAC,GAAA,KAAAC,OCEA,SAASC,IAAiBC,EAAIC,EAAO,CACnC,OAAO,UAAW,CAChBC,GAAI,KAAMF,CAAE,EAAE,SAAW,CAACC,EAAM,MAAM,KAAM,SAAS,CACvD,CACF,CAEA,SAASE,IAAiBH,EAAIC,EAAO,CACnC,OAAOA,EAAQ,CAACA,EAAO,UAAW,CAChCC,GAAI,KAAMF,CAAE,EAAE,SAAWC,CAC3B,CACF,CAEe,SAARG,GAAiBH,EAAO,CAC7B,IAAID,EAAK,KAAK,IAEd,OAAO,UAAU,OACX,KAAK,MAAM,OAAOC,GAAU,WACxBF,IACAI,KAAkBH,EAAIC,CAAK,CAAC,EAChCI,GAAI,KAAK,KAAK,EAAGL,CAAE,EAAE,QAC7B,CAtBA,IAAAM,GAAAC,GAAA,KAAAC,OCEA,SAASC,IAAaC,EAAIC,EAAO,CAC/B,GAAI,OAAOA,GAAU,WAAY,MAAM,IAAI,MAC3C,OAAO,UAAW,CAChBC,GAAI,KAAMF,CAAE,EAAE,KAAOC,CACvB,CACF,CAEe,SAARE,GAAiBF,EAAO,CAC7B,IAAID,EAAK,KAAK,IAEd,OAAO,UAAU,OACX,KAAK,KAAKD,IAAaC,EAAIC,CAAK,CAAC,EACjCG,GAAI,KAAK,KAAK,EAAGJ,CAAE,EAAE,IAC7B,CAfA,IAAAK,GAAAC,GAAA,KAAAC,OCEA,SAASC,IAAYC,EAAIC,EAAO,CAC9B,OAAO,UAAW,CAChB,IAAIC,EAAID,EAAM,MAAM,KAAM,SAAS,EACnC,GAAI,OAAOC,GAAM,WAAY,MAAM,IAAI,MACvCC,GAAI,KAAMH,CAAE,EAAE,KAAOE,CACvB,CACF,CAEe,SAARE,GAAiBH,EAAO,CAC7B,GAAI,OAAOA,GAAU,WAAY,MAAM,IAAI,MAC3C,OAAO,KAAK,KAAKF,IAAY,KAAK,IAAKE,CAAK,CAAC,CAC/C,CAbA,IAAAI,GAAAC,GAAA,KAAAC,OCGe,SAARC,GAAiBC,EAAO,CACzB,OAAOA,GAAU,aAAYA,EAAQC,GAAQD,CAAK,GAEtD,QAASE,EAAS,KAAK,QAASC,EAAID,EAAO,OAAQE,EAAY,IAAI,MAAMD,CAAC,EAAGE,EAAI,EAAGA,EAAIF,EAAG,EAAEE,EAC3F,QAASC,EAAQJ,EAAOG,CAAC,EAAGE,EAAID,EAAM,OAAQE,EAAWJ,EAAUC,CAAC,EAAI,CAAC,EAAGI,EAAMC,EAAI,EAAGA,EAAIH,EAAG,EAAEG,GAC3FD,EAAOH,EAAMI,CAAC,IAAMV,EAAM,KAAKS,EAAMA,EAAK,SAAUC,EAAGJ,CAAK,GAC/DE,EAAS,KAAKC,CAAI,EAKxB,OAAO,IAAIE,GAAWP,EAAW,KAAK,SAAU,KAAK,MAAO,KAAK,GAAG,CACtE,CAfA,IAAAQ,GAAAC,GAAA,KAAAC,KACAC,OCCe,SAARC,GAAiBC,EAAY,CAClC,GAAIA,EAAW,MAAQ,KAAK,IAAK,MAAM,IAAI,MAE3C,QAASC,EAAU,KAAK,QAASC,EAAUF,EAAW,QAASG,EAAKF,EAAQ,OAAQG,EAAKF,EAAQ,OAAQG,EAAI,KAAK,IAAIF,EAAIC,CAAE,EAAGE,EAAS,IAAI,MAAMH,CAAE,EAAGI,EAAI,EAAGA,EAAIF,EAAG,EAAEE,EACrK,QAASC,EAASP,EAAQM,CAAC,EAAGE,EAASP,EAAQK,CAAC,EAAGG,EAAIF,EAAO,OAAQG,EAAQL,EAAOC,CAAC,EAAI,IAAI,MAAMG,CAAC,EAAGE,EAAMC,EAAI,EAAGA,EAAIH,EAAG,EAAEG,GACxHD,EAAOJ,EAAOK,CAAC,GAAKJ,EAAOI,CAAC,KAC9BF,EAAME,CAAC,EAAID,GAKjB,KAAOL,EAAIJ,EAAI,EAAEI,EACfD,EAAOC,CAAC,EAAIN,EAAQM,CAAC,EAGvB,OAAO,IAAIO,GAAWR,EAAQ,KAAK,SAAU,KAAK,MAAO,KAAK,GAAG,CACnE,CAlBA,IAAAS,GAAAC,GAAA,KAAAC,OCEA,SAASC,IAAMC,EAAM,CACnB,OAAQA,EAAO,IAAI,KAAK,EAAE,MAAM,OAAO,EAAE,MAAM,SAAS,EAAG,CACzD,IAAIC,EAAI,EAAE,QAAQ,GAAG,EACrB,OAAIA,GAAK,IAAG,EAAI,EAAE,MAAM,EAAGA,CAAC,GACrB,CAAC,GAAK,IAAM,OACrB,CAAC,CACH,CAEA,SAASC,IAAWC,EAAIH,EAAMI,EAAU,CACtC,IAAIC,EAAKC,EAAKC,EAAMR,IAAMC,CAAI,EAAIQ,GAAOC,GACzC,OAAO,UAAW,CAChB,IAAIC,EAAWH,EAAI,KAAMJ,CAAE,EACvBQ,EAAKD,EAAS,GAKdC,IAAON,IAAMC,GAAOD,EAAMM,GAAI,KAAK,GAAG,GAAGX,EAAMI,CAAQ,EAE3DM,EAAS,GAAKJ,CAChB,CACF,CAEe,SAARM,GAAiBZ,EAAMI,EAAU,CACtC,IAAID,EAAK,KAAK,IAEd,OAAO,UAAU,OAAS,EACpBU,GAAI,KAAK,KAAK,EAAGV,CAAE,EAAE,GAAG,GAAGH,CAAI,EAC/B,KAAK,KAAKE,IAAWC,EAAIH,EAAMI,CAAQ,CAAC,CAChD,CA/BA,IAAAU,GAAAC,GAAA,KAAAC,OCAA,SAASC,IAAeC,EAAI,CAC1B,OAAO,UAAW,CAChB,IAAIC,EAAS,KAAK,WAClB,QAASC,KAAK,KAAK,aAAc,GAAI,CAACA,IAAMF,EAAI,OAC5CC,GAAQA,EAAO,YAAY,IAAI,CACrC,CACF,CAEe,SAARE,IAAmB,CACxB,OAAO,KAAK,GAAG,aAAcJ,IAAe,KAAK,GAAG,CAAC,CACvD,CAVA,IAAAK,GAAAC,GAAA,QCIe,SAARC,GAAiBC,EAAQ,CAC9B,IAAIC,EAAO,KAAK,MACZC,EAAK,KAAK,IAEV,OAAOF,GAAW,aAAYA,EAASG,GAASH,CAAM,GAE1D,QAASI,EAAS,KAAK,QAASC,EAAID,EAAO,OAAQE,EAAY,IAAI,MAAMD,CAAC,EAAGE,EAAI,EAAGA,EAAIF,EAAG,EAAEE,EAC3F,QAASC,EAAQJ,EAAOG,CAAC,EAAGE,EAAID,EAAM,OAAQE,EAAWJ,EAAUC,CAAC,EAAI,IAAI,MAAME,CAAC,EAAGE,EAAMC,EAASC,EAAI,EAAGA,EAAIJ,EAAG,EAAEI,GAC9GF,EAAOH,EAAMK,CAAC,KAAOD,EAAUZ,EAAO,KAAKW,EAAMA,EAAK,SAAUE,EAAGL,CAAK,KACvE,aAAcG,IAAMC,EAAQ,SAAWD,EAAK,UAChDD,EAASG,CAAC,EAAID,EACdE,GAASJ,EAASG,CAAC,EAAGZ,EAAMC,EAAIW,EAAGH,EAAUK,GAAIJ,EAAMT,CAAE,CAAC,GAKhE,OAAO,IAAIc,GAAWV,EAAW,KAAK,SAAUL,EAAMC,CAAE,CAC1D,CArBA,IAAAe,GAAAC,GAAA,KAAAC,KACAC,KACAC,OCEe,SAARC,GAAiBC,EAAQ,CAC9B,IAAIC,EAAO,KAAK,MACZC,EAAK,KAAK,IAEV,OAAOF,GAAW,aAAYA,EAASG,GAAYH,CAAM,GAE7D,QAASI,EAAS,KAAK,QAASC,EAAID,EAAO,OAAQE,EAAY,CAAC,EAAGC,EAAU,CAAC,EAAGC,EAAI,EAAGA,EAAIH,EAAG,EAAEG,EAC/F,QAASC,EAAQL,EAAOI,CAAC,EAAGE,EAAID,EAAM,OAAQE,EAAMC,EAAI,EAAGA,EAAIF,EAAG,EAAEE,EAClE,GAAID,EAAOF,EAAMG,CAAC,EAAG,CACnB,QAASC,EAAWb,EAAO,KAAKW,EAAMA,EAAK,SAAUC,EAAGH,CAAK,EAAGK,EAAOC,EAAUC,GAAIL,EAAMT,CAAE,EAAGe,EAAI,EAAGC,EAAIL,EAAS,OAAQI,EAAIC,EAAG,EAAED,GAC/HH,EAAQD,EAASI,CAAC,IACpBE,GAASL,EAAOb,EAAMC,EAAIe,EAAGJ,EAAUE,CAAO,EAGlDT,EAAU,KAAKO,CAAQ,EACvBN,EAAQ,KAAKI,CAAI,CACnB,CAIJ,OAAO,IAAIS,GAAWd,EAAWC,EAASN,EAAMC,CAAE,CACpD,CAzBA,IAAAmB,GAAAC,GAAA,KAAAC,KACAC,KACAC,OCEe,SAARC,IAAmB,CACxB,OAAO,IAAIC,IAAU,KAAK,QAAS,KAAK,QAAQ,CAClD,CANA,IAEIA,IAFJC,GAAAC,GAAA,KAAAC,KAEIH,IAAYD,GAAU,UAAU,cCIpC,SAASK,IAAUC,EAAMC,EAAa,CACpC,IAAIC,EACAC,EACAC,EACJ,OAAO,UAAW,CAChB,IAAIC,EAAUC,GAAM,KAAMN,CAAI,EAC1BO,GAAW,KAAK,MAAM,eAAeP,CAAI,EAAGM,GAAM,KAAMN,CAAI,GAChE,OAAOK,IAAYE,EAAU,KACvBF,IAAYH,GAAYK,IAAYJ,EAAWC,EAC/CA,EAAeH,EAAYC,EAAWG,EAASF,EAAWI,CAAO,CACzE,CACF,CAEA,SAASC,GAAYR,EAAM,CACzB,OAAO,UAAW,CAChB,KAAK,MAAM,eAAeA,CAAI,CAChC,CACF,CAEA,SAASS,IAAcT,EAAMC,EAAaS,EAAQ,CAChD,IAAIR,EACAK,EAAUG,EAAS,GACnBN,EACJ,OAAO,UAAW,CAChB,IAAIC,EAAUC,GAAM,KAAMN,CAAI,EAC9B,OAAOK,IAAYE,EAAU,KACvBF,IAAYH,EAAWE,EACvBA,EAAeH,EAAYC,EAAWG,EAASK,CAAM,CAC7D,CACF,CAEA,SAASC,IAAcX,EAAMC,EAAaW,EAAO,CAC/C,IAAIV,EACAC,EACAC,EACJ,OAAO,UAAW,CAChB,IAAIC,EAAUC,GAAM,KAAMN,CAAI,EAC1BU,EAASE,EAAM,IAAI,EACnBL,EAAUG,EAAS,GACvB,OAAIA,GAAU,OAAMH,EAAUG,GAAU,KAAK,MAAM,eAAeV,CAAI,EAAGM,GAAM,KAAMN,CAAI,IAClFK,IAAYE,EAAU,KACvBF,IAAYH,GAAYK,IAAYJ,EAAWC,GAC9CD,EAAWI,EAASH,EAAeH,EAAYC,EAAWG,EAASK,CAAM,EAClF,CACF,CAEA,SAASG,IAAiBC,EAAId,EAAM,CAClC,IAAIe,EAAKC,EAAKC,EAAWC,EAAM,SAAWlB,EAAMmB,EAAQ,OAASD,EAAKE,EACtE,OAAO,UAAW,CAChB,IAAIC,EAAWC,GAAI,KAAMR,CAAE,EACvBS,EAAKF,EAAS,GACdG,EAAWH,EAAS,MAAMH,CAAG,GAAK,KAAOE,IAAWA,EAASZ,GAAYR,CAAI,GAAK,QAKlFuB,IAAOR,GAAOE,IAAcO,KAAWR,GAAOD,EAAMQ,GAAI,KAAK,GAAG,GAAGJ,EAAOF,EAAYO,CAAQ,EAElGH,EAAS,GAAKL,CAChB,CACF,CAEe,SAARS,GAAiBzB,EAAMY,EAAOc,EAAU,CAC7C,IAAIC,GAAK3B,GAAQ,KAAQ,YAAc4B,GAAuBC,GAC9D,OAAOjB,GAAS,KAAO,KAClB,WAAWZ,EAAMD,IAAUC,EAAM2B,CAAC,CAAC,EACnC,GAAG,aAAe3B,EAAMQ,GAAYR,CAAI,CAAC,EAC1C,OAAOY,GAAU,WAAa,KAC7B,WAAWZ,EAAMW,IAAcX,EAAM2B,EAAGG,GAAW,KAAM,SAAW9B,EAAMY,CAAK,CAAC,CAAC,EACjF,KAAKC,IAAiB,KAAK,IAAKb,CAAI,CAAC,EACtC,KACC,WAAWA,EAAMS,IAAcT,EAAM2B,EAAGf,CAAK,EAAGc,CAAQ,EACxD,GAAG,aAAe1B,EAAM,IAAI,CACnC,CA/EA,IAAA+B,GAAAC,GAAA,KAAAC,KACAA,KACAC,KACAC,KACAC,OCJA,SAASC,IAAiBC,EAAMC,EAAGC,EAAU,CAC3C,OAAO,SAASC,EAAG,CACjB,KAAK,MAAM,YAAYH,EAAMC,EAAE,KAAK,KAAME,CAAC,EAAGD,CAAQ,CACxD,CACF,CAEA,SAASE,IAAWJ,EAAMK,EAAOH,EAAU,CACzC,IAAIC,EAAGG,EACP,SAASC,GAAQ,CACf,IAAIN,EAAII,EAAM,MAAM,KAAM,SAAS,EACnC,OAAIJ,IAAMK,IAAIH,GAAKG,EAAKL,IAAMF,IAAiBC,EAAMC,EAAGC,CAAQ,GACzDC,CACT,CACA,OAAAI,EAAM,OAASF,EACRE,CACT,CAEe,SAARC,GAAiBR,EAAMK,EAAOH,EAAU,CAC7C,IAAIO,EAAM,UAAYT,GAAQ,IAC9B,GAAI,UAAU,OAAS,EAAG,OAAQS,EAAM,KAAK,MAAMA,CAAG,IAAMA,EAAI,OAChE,GAAIJ,GAAS,KAAM,OAAO,KAAK,MAAMI,EAAK,IAAI,EAC9C,GAAI,OAAOJ,GAAU,WAAY,MAAM,IAAI,MAC3C,OAAO,KAAK,MAAMI,EAAKL,IAAWJ,EAAMK,EAAOH,GAAmB,EAAa,CAAC,CAClF,CAvBA,IAAAQ,GAAAC,GAAA,QCEA,SAASC,IAAaC,EAAO,CAC3B,OAAO,UAAW,CAChB,KAAK,YAAcA,CACrB,CACF,CAEA,SAASC,IAAaD,EAAO,CAC3B,OAAO,UAAW,CAChB,IAAIE,EAASF,EAAM,IAAI,EACvB,KAAK,YAAcE,GAAiB,EACtC,CACF,CAEe,SAARC,GAAiBH,EAAO,CAC7B,OAAO,KAAK,MAAM,OAAQ,OAAOA,GAAU,WACrCC,IAAaG,GAAW,KAAM,OAAQJ,CAAK,CAAC,EAC5CD,IAAaC,GAAS,KAAO,GAAKA,EAAQ,EAAE,CAAC,CACrD,CAnBA,IAAAK,GAAAC,GAAA,KAAAC,OCAA,SAASC,IAAgBC,EAAG,CAC1B,OAAO,SAAS,EAAG,CACjB,KAAK,YAAcA,EAAE,KAAK,KAAM,CAAC,CACnC,CACF,CAEA,SAASC,IAAUC,EAAO,CACxB,IAAIC,EAAIC,EACR,SAASC,GAAQ,CACf,IAAI,EAAIH,EAAM,MAAM,KAAM,SAAS,EACnC,OAAI,IAAME,IAAID,GAAMC,EAAK,IAAML,IAAgB,CAAC,GACzCI,CACT,CACA,OAAAE,EAAM,OAASH,EACRG,CACT,CAEe,SAARC,GAAiBJ,EAAO,CAC7B,IAAIK,EAAM,OACV,GAAI,UAAU,OAAS,EAAG,OAAQA,EAAM,KAAK,MAAMA,CAAG,IAAMA,EAAI,OAChE,GAAIL,GAAS,KAAM,OAAO,KAAK,MAAMK,EAAK,IAAI,EAC9C,GAAI,OAAOL,GAAU,WAAY,MAAM,IAAI,MAC3C,OAAO,KAAK,MAAMK,EAAKN,IAAUC,CAAK,CAAC,CACzC,CAvBA,IAAAM,GAAAC,GAAA,QCGe,SAARC,IAAmB,CAKxB,QAJIC,EAAO,KAAK,MACZC,EAAM,KAAK,IACXC,EAAMC,GAAM,EAEPC,EAAS,KAAK,QAASC,EAAID,EAAO,OAAQE,EAAI,EAAGA,EAAID,EAAG,EAAEC,EACjE,QAASC,EAAQH,EAAOE,CAAC,EAAGE,EAAID,EAAM,OAAQE,EAAMC,EAAI,EAAGA,EAAIF,EAAG,EAAEE,EAClE,GAAID,EAAOF,EAAMG,CAAC,EAAG,CACnB,IAAIC,EAAUC,GAAIH,EAAMR,CAAG,EAC3BY,GAASJ,EAAMT,EAAME,EAAKQ,EAAGH,EAAO,CAClC,KAAMI,EAAQ,KAAOA,EAAQ,MAAQA,EAAQ,SAC7C,MAAO,EACP,SAAUA,EAAQ,SAClB,KAAMA,EAAQ,IAChB,CAAC,CACH,CAIJ,OAAO,IAAIG,GAAWV,EAAQ,KAAK,SAAUJ,EAAME,CAAG,CACxD,CAvBA,IAAAa,GAAAC,GAAA,KAAAD,KACAE,OCCe,SAARC,IAAmB,CACxB,IAAIC,EAAKC,EAAKC,EAAO,KAAMC,EAAKD,EAAK,IAAKE,EAAOF,EAAK,KAAK,EAC3D,OAAO,IAAI,QAAQ,SAASG,EAASC,EAAQ,CAC3C,IAAIC,EAAS,CAAC,MAAOD,CAAM,EACvBE,EAAM,CAAC,MAAO,UAAW,CAAM,EAAEJ,IAAS,GAAGC,EAAQ,CAAG,CAAC,EAE7DH,EAAK,KAAK,UAAW,CACnB,IAAIO,EAAWC,GAAI,KAAMP,CAAE,EACvBQ,EAAKF,EAAS,GAKdE,IAAOX,IACTC,GAAOD,EAAMW,GAAI,KAAK,EACtBV,EAAI,EAAE,OAAO,KAAKM,CAAM,EACxBN,EAAI,EAAE,UAAU,KAAKM,CAAM,EAC3BN,EAAI,EAAE,IAAI,KAAKO,CAAG,GAGpBC,EAAS,GAAKR,CAChB,CAAC,EAGGG,IAAS,GAAGC,EAAQ,CAC1B,CAAC,CACH,CA5BA,IAAAO,GAAAC,GAAA,KAAAC,OCwBO,SAASC,GAAWC,EAAQC,EAASC,EAAMC,EAAI,CACpD,KAAK,QAAUH,EACf,KAAK,SAAWC,EAChB,KAAK,MAAQC,EACb,KAAK,IAAMC,CACb,CAEe,SAARC,GAA4BF,EAAM,CACvC,OAAOG,GAAU,EAAE,WAAWH,CAAI,CACpC,CAEO,SAASI,IAAQ,CACtB,MAAO,EAAEH,GACX,CArCA,IAsBIA,IAiBAI,GAvCJC,GAAAC,GAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAnB,KACAoB,KACAC,KAEI1B,IAAK,EAiBLI,GAAsBF,GAAU,UAEpCN,GAAW,UAAYK,GAAW,UAAY,CAC5C,YAAaL,GACb,OAAQ+B,GACR,UAAWC,GACX,YAAaxB,GAAoB,YACjC,eAAgBA,GAAoB,eACpC,OAAQyB,GACR,MAAOC,GACP,UAAW5B,GACX,WAAY6B,GACZ,KAAM3B,GAAoB,KAC1B,MAAOA,GAAoB,MAC3B,KAAMA,GAAoB,KAC1B,KAAMA,GAAoB,KAC1B,MAAOA,GAAoB,MAC3B,KAAMA,GAAoB,KAC1B,GAAI4B,GACJ,KAAMC,GACN,UAAWC,GACX,MAAOC,GACP,WAAYC,GACZ,KAAMC,GACN,UAAWC,GACX,OAAQC,GACR,MAAOC,GACP,MAAOC,GACP,SAAUC,GACV,KAAMC,GACN,YAAaC,GACb,IAAKC,GACL,CAAC,OAAO,QAAQ,EAAGzC,GAAoB,OAAO,QAAQ,CACxD,IChEO,SAAS0C,GAAWC,EAAG,CAC5B,QAASA,GAAK,IAAM,EAAIA,EAAIA,EAAIA,GAAKA,GAAK,GAAKA,EAAIA,EAAI,GAAK,CAC9D,CAVA,IAAAC,GAAAC,GAAA,QCAA,IAAAC,GAAAC,GAAA,KAWAC,OCCA,SAASC,IAAQC,EAAMC,EAAI,CAEzB,QADIC,EACG,EAAEA,EAASF,EAAK,eAAiB,EAAEE,EAASA,EAAOD,CAAE,IAC1D,GAAI,EAAED,EAAOA,EAAK,YAChB,MAAM,IAAI,MAAM,cAAcC,CAAE,YAAY,EAGhD,OAAOC,CACT,CAEe,SAARC,GAAiBC,EAAM,CAC5B,IAAIH,EACAC,EAEAE,aAAgBC,IAClBJ,EAAKG,EAAK,IAAKA,EAAOA,EAAK,QAE3BH,EAAKK,GAAM,GAAIJ,EAASK,KAAe,KAAOC,GAAI,EAAGJ,EAAOA,GAAQ,KAAO,KAAOA,EAAO,IAG3F,QAASK,EAAS,KAAK,QAASC,EAAID,EAAO,OAAQE,EAAI,EAAGA,EAAID,EAAG,EAAEC,EACjE,QAASC,EAAQH,EAAOE,CAAC,EAAGE,EAAID,EAAM,OAAQZ,EAAMc,EAAI,EAAGA,EAAID,EAAG,EAAEC,GAC9Dd,EAAOY,EAAME,CAAC,IAChBC,GAASf,EAAMI,EAAMH,EAAIa,EAAGF,EAAOV,GAAUH,IAAQC,EAAMC,CAAE,CAAC,EAKpE,OAAO,IAAII,GAAWI,EAAQ,KAAK,SAAUL,EAAMH,CAAE,CACvD,CAzCA,IAKIM,IALJS,GAAAC,GAAA,KAAAD,KACAE,KACAC,KACAA,KAEIZ,IAAgB,CAClB,KAAM,KACN,MAAO,EACP,SAAU,IACV,KAAMa,EACR,ICVA,IAAAC,GAAAC,GAAA,KAAAC,KACAC,KACAC,KAEAC,GAAU,UAAU,UAAYC,GAChCD,GAAU,UAAU,WAAaE,KCLjC,IAAAC,GAAAC,GAAA,KAAAC,KAGAC,OCHA,IAAOC,GAAPC,GAAAC,GAAA,KAAOF,GAAQG,GAAK,IAAMA,ICAX,SAARC,GAA2BC,EAAM,CACtC,YAAAC,EACA,OAAAC,EACA,UAAAC,EACA,SAAAC,CACF,EAAG,CACD,OAAO,iBAAiB,KAAM,CAC5B,KAAM,CAAC,MAAOJ,EAAM,WAAY,GAAM,aAAc,EAAI,EACxD,YAAa,CAAC,MAAOC,EAAa,WAAY,GAAM,aAAc,EAAI,EACtE,OAAQ,CAAC,MAAOC,EAAQ,WAAY,GAAM,aAAc,EAAI,EAC5D,UAAW,CAAC,MAAOC,EAAW,WAAY,GAAM,aAAc,EAAI,EAClE,EAAG,CAAC,MAAOC,CAAQ,CACrB,CAAC,CACH,CAbA,IAAAC,GAAAC,GAAA,QCAO,SAASC,GAAUC,EAAGC,EAAGC,EAAG,CACjC,KAAK,EAAIF,EACT,KAAK,EAAIC,EACT,KAAK,EAAIC,CACX,CA2Ce,SAARC,GAA2BC,EAAM,CACtC,KAAO,CAACA,EAAK,QAAQ,GAAI,EAAEA,EAAOA,EAAK,YAAa,OAAOC,GAC3D,OAAOD,EAAK,MACd,CAlDA,IA2CWC,GA3CXC,GAAAC,GAAA,KAMAR,GAAU,UAAY,CACpB,YAAaA,GACb,MAAO,SAASC,EAAG,CACjB,OAAOA,IAAM,EAAI,KAAO,IAAID,GAAU,KAAK,EAAIC,EAAG,KAAK,EAAG,KAAK,CAAC,CAClE,EACA,UAAW,SAASC,EAAGC,EAAG,CACxB,OAAOD,IAAM,EAAIC,IAAM,EAAI,KAAO,IAAIH,GAAU,KAAK,EAAG,KAAK,EAAI,KAAK,EAAIE,EAAG,KAAK,EAAI,KAAK,EAAIC,CAAC,CAClG,EACA,MAAO,SAASM,EAAO,CACrB,MAAO,CAACA,EAAM,CAAC,EAAI,KAAK,EAAI,KAAK,EAAGA,EAAM,CAAC,EAAI,KAAK,EAAI,KAAK,CAAC,CAChE,EACA,OAAQ,SAASP,EAAG,CAClB,OAAOA,EAAI,KAAK,EAAI,KAAK,CAC3B,EACA,OAAQ,SAASC,EAAG,CAClB,OAAOA,EAAI,KAAK,EAAI,KAAK,CAC3B,EACA,OAAQ,SAASO,EAAU,CACzB,MAAO,EAAEA,EAAS,CAAC,EAAI,KAAK,GAAK,KAAK,GAAIA,EAAS,CAAC,EAAI,KAAK,GAAK,KAAK,CAAC,CAC1E,EACA,QAAS,SAASR,EAAG,CACnB,OAAQA,EAAI,KAAK,GAAK,KAAK,CAC7B,EACA,QAAS,SAASC,EAAG,CACnB,OAAQA,EAAI,KAAK,GAAK,KAAK,CAC7B,EACA,SAAU,SAASD,EAAG,CACpB,OAAOA,EAAE,KAAK,EAAE,OAAOA,EAAE,MAAM,EAAE,IAAI,KAAK,QAAS,IAAI,EAAE,IAAIA,EAAE,OAAQA,CAAC,CAAC,CAC3E,EACA,SAAU,SAASC,EAAG,CACpB,OAAOA,EAAE,KAAK,EAAE,OAAOA,EAAE,MAAM,EAAE,IAAI,KAAK,QAAS,IAAI,EAAE,IAAIA,EAAE,OAAQA,CAAC,CAAC,CAC3E,EACA,SAAU,UAAW,CACnB,MAAO,aAAe,KAAK,EAAI,IAAM,KAAK,EAAI,WAAa,KAAK,EAAI,GACtE,CACF,EAEWG,GAAW,IAAIN,GAAU,EAAG,EAAG,CAAC,EAE3CI,GAAU,UAAYJ,GAAU,YC7CzB,SAASW,GAAcC,EAAO,CACnCA,EAAM,yBAAyB,CACjC,CAEe,SAARC,GAAiBD,EAAO,CAC7BA,EAAM,eAAe,EACrBA,EAAM,yBAAyB,CACjC,CAPA,IAAAE,GAAAC,GAAA,QCYA,SAASC,IAAcC,EAAO,CAC5B,OAAQ,CAACA,EAAM,SAAWA,EAAM,OAAS,UAAY,CAACA,EAAM,MAC9D,CAEA,SAASC,KAAgB,CACvB,IAAI,EAAI,KACR,OAAI,aAAa,YACf,EAAI,EAAE,iBAAmB,EACrB,EAAE,aAAa,SAAS,GAC1B,EAAI,EAAE,QAAQ,QACP,CAAC,CAAC,EAAE,EAAG,EAAE,CAAC,EAAG,CAAC,EAAE,EAAI,EAAE,MAAO,EAAE,EAAI,EAAE,MAAM,CAAC,GAE9C,CAAC,CAAC,EAAG,CAAC,EAAG,CAAC,EAAE,MAAM,QAAQ,MAAO,EAAE,OAAO,QAAQ,KAAK,CAAC,GAE1D,CAAC,CAAC,EAAG,CAAC,EAAG,CAAC,EAAE,YAAa,EAAE,YAAY,CAAC,CACjD,CAEA,SAASC,IAAmB,CAC1B,OAAO,KAAK,QAAUC,EACxB,CAEA,SAASC,IAAkBJ,EAAO,CAChC,MAAO,CAACA,EAAM,QAAUA,EAAM,YAAc,EAAI,IAAOA,EAAM,UAAY,EAAI,OAAUA,EAAM,QAAU,GAAK,EAC9G,CAEA,SAASK,KAAmB,CAC1B,OAAO,UAAU,gBAAmB,iBAAkB,IACxD,CAEA,SAASC,IAAiBC,EAAWC,EAAQC,EAAiB,CAC5D,IAAIC,EAAMH,EAAU,QAAQC,EAAO,CAAC,EAAE,CAAC,CAAC,EAAIC,EAAgB,CAAC,EAAE,CAAC,EAC5DE,EAAMJ,EAAU,QAAQC,EAAO,CAAC,EAAE,CAAC,CAAC,EAAIC,EAAgB,CAAC,EAAE,CAAC,EAC5DG,EAAML,EAAU,QAAQC,EAAO,CAAC,EAAE,CAAC,CAAC,EAAIC,EAAgB,CAAC,EAAE,CAAC,EAC5DI,EAAMN,EAAU,QAAQC,EAAO,CAAC,EAAE,CAAC,CAAC,EAAIC,EAAgB,CAAC,EAAE,CAAC,EAChE,OAAOF,EAAU,UACfI,EAAMD,GAAOA,EAAMC,GAAO,EAAI,KAAK,IAAI,EAAGD,CAAG,GAAK,KAAK,IAAI,EAAGC,CAAG,EACjEE,EAAMD,GAAOA,EAAMC,GAAO,EAAI,KAAK,IAAI,EAAGD,CAAG,GAAK,KAAK,IAAI,EAAGC,CAAG,CACnE,CACF,CAEe,SAARC,IAAmB,CACxB,IAAIC,EAAShB,IACTS,EAASP,IACTe,EAAYV,IACZW,EAAab,IACbc,EAAYb,IACZc,EAAc,CAAC,EAAG,GAAQ,EAC1BV,EAAkB,CAAC,CAAC,KAAW,IAAS,EAAG,CAAC,IAAU,GAAQ,CAAC,EAC/DW,EAAW,IACXC,EAAcP,GACdQ,EAAYC,GAAS,QAAS,OAAQ,KAAK,EAC3CC,EACAC,EACAC,EACAC,EAAa,IACbC,EAAa,IACbC,EAAiB,EACjBC,EAAc,GAElB,SAASC,EAAKC,EAAW,CACvBA,EACK,SAAS,SAAU9B,EAAgB,EACnC,GAAG,aAAc+B,EAAS,CAAC,QAAS,EAAK,CAAC,EAC1C,GAAG,iBAAkBC,CAAW,EAChC,GAAG,gBAAiBC,CAAU,EAChC,OAAOjB,CAAS,EACd,GAAG,kBAAmBkB,CAAY,EAClC,GAAG,iBAAkBC,CAAU,EAC/B,GAAG,iCAAkCC,CAAU,EAC/C,MAAM,8BAA+B,eAAe,CAC3D,CAEAP,EAAK,UAAY,SAASQ,EAAYhC,EAAWiC,EAAOxC,EAAO,CAC7D,IAAIgC,GAAYO,EAAW,UAAYA,EAAW,UAAU,EAAIA,EAChEP,GAAU,SAAS,SAAU9B,EAAgB,EACzCqC,IAAeP,GACjBS,EAASF,EAAYhC,EAAWiC,EAAOxC,CAAK,EAE5CgC,GAAU,UAAU,EAAE,KAAK,UAAW,CACpCU,EAAQ,KAAM,SAAS,EACpB,MAAM1C,CAAK,EACX,MAAM,EACN,KAAK,KAAM,OAAOO,GAAc,WAAaA,EAAU,MAAM,KAAM,SAAS,EAAIA,CAAS,EACzF,IAAI,CACT,CAAC,CAEL,EAEAwB,EAAK,QAAU,SAASC,EAAWW,EAAGC,EAAG5C,EAAO,CAC9C+B,EAAK,QAAQC,EAAW,UAAW,CACjC,IAAIa,GAAK,KAAK,OAAO,EACjBC,EAAK,OAAOH,GAAM,WAAaA,EAAE,MAAM,KAAM,SAAS,EAAIA,EAC9D,OAAOE,GAAKC,CACd,EAAGF,EAAG5C,CAAK,CACb,EAEA+B,EAAK,QAAU,SAASC,EAAWW,EAAGC,EAAG5C,EAAO,CAC9C+B,EAAK,UAAUC,EAAW,UAAW,CACnC,IAAIe,GAAIvC,EAAO,MAAM,KAAM,SAAS,EAChCwC,EAAK,KAAK,OACVC,GAAKL,GAAK,KAAOM,EAASH,EAAC,EAAI,OAAOH,GAAM,WAAaA,EAAE,MAAM,KAAM,SAAS,EAAIA,EACpFO,GAAKH,EAAG,OAAOC,EAAE,EACjBH,GAAK,OAAOH,GAAM,WAAaA,EAAE,MAAM,KAAM,SAAS,EAAIA,EAC9D,OAAO3B,EAAUoC,EAAUC,EAAML,EAAIF,EAAE,EAAGG,GAAIE,EAAE,EAAGJ,GAAGtC,CAAe,CACvE,EAAGmC,EAAG5C,CAAK,CACb,EAEA+B,EAAK,YAAc,SAASC,EAAWsB,EAAGC,EAAGvD,EAAO,CAClD+B,EAAK,UAAUC,EAAW,UAAW,CACnC,OAAOhB,EAAU,KAAK,OAAO,UAC3B,OAAOsC,GAAM,WAAaA,EAAE,MAAM,KAAM,SAAS,EAAIA,EACrD,OAAOC,GAAM,WAAaA,EAAE,MAAM,KAAM,SAAS,EAAIA,CACvD,EAAG/C,EAAO,MAAM,KAAM,SAAS,EAAGC,CAAe,CACnD,EAAG,KAAMT,CAAK,CAChB,EAEA+B,EAAK,YAAc,SAASC,EAAWsB,EAAGC,EAAGX,EAAG5C,GAAO,CACrD+B,EAAK,UAAUC,EAAW,UAAW,CACnC,IAAIe,EAAIvC,EAAO,MAAM,KAAM,SAAS,EAChCgD,GAAI,KAAK,OACTP,GAAKL,GAAK,KAAOM,EAASH,CAAC,EAAI,OAAOH,GAAM,WAAaA,EAAE,MAAM,KAAM,SAAS,EAAIA,EACxF,OAAO5B,EAAUb,GAAS,UAAU8C,GAAG,CAAC,EAAGA,GAAG,CAAC,CAAC,EAAE,MAAMO,GAAE,CAAC,EAAE,UAC3D,OAAOF,GAAM,WAAa,CAACA,EAAE,MAAM,KAAM,SAAS,EAAI,CAACA,EACvD,OAAOC,GAAM,WAAa,CAACA,EAAE,MAAM,KAAM,SAAS,EAAI,CAACA,CACzD,EAAGR,EAAGtC,CAAe,CACvB,EAAGmC,EAAG5C,EAAK,CACb,EAEA,SAASqD,EAAM9C,EAAWoC,EAAG,CAC3B,OAAAA,EAAI,KAAK,IAAIxB,EAAY,CAAC,EAAG,KAAK,IAAIA,EAAY,CAAC,EAAGwB,CAAC,CAAC,EACjDA,IAAMpC,EAAU,EAAIA,EAAY,IAAIkD,GAAUd,EAAGpC,EAAU,EAAGA,EAAU,CAAC,CAClF,CAEA,SAAS6C,EAAU7C,EAAW0C,EAAIE,EAAI,CACpC,IAAIG,EAAIL,EAAG,CAAC,EAAIE,EAAG,CAAC,EAAI5C,EAAU,EAAGgD,GAAIN,EAAG,CAAC,EAAIE,EAAG,CAAC,EAAI5C,EAAU,EACnE,OAAO+C,IAAM/C,EAAU,GAAKgD,KAAMhD,EAAU,EAAIA,EAAY,IAAIkD,GAAUlD,EAAU,EAAG+C,EAAGC,EAAC,CAC7F,CAEA,SAASL,EAAS1C,EAAQ,CACxB,MAAO,EAAE,CAACA,EAAO,CAAC,EAAE,CAAC,GAAI,CAACA,EAAO,CAAC,EAAE,CAAC,GAAK,GAAI,CAACA,EAAO,CAAC,EAAE,CAAC,GAAI,CAACA,EAAO,CAAC,EAAE,CAAC,GAAK,CAAC,CAClF,CAEA,SAASiC,EAASiB,EAAYnD,EAAWiC,EAAOxC,EAAO,CACrD0D,EACK,GAAG,aAAc,UAAW,CAAEhB,EAAQ,KAAM,SAAS,EAAE,MAAM1C,CAAK,EAAE,MAAM,CAAG,CAAC,EAC9E,GAAG,0BAA2B,UAAW,CAAE0C,EAAQ,KAAM,SAAS,EAAE,MAAM1C,CAAK,EAAE,IAAI,CAAG,CAAC,EACzF,MAAM,OAAQ,UAAW,CACxB,IAAI2D,GAAO,KACPC,EAAO,UACPC,GAAInB,EAAQiB,GAAMC,CAAI,EAAE,MAAM5D,CAAK,EACnC+C,GAAIvC,EAAO,MAAMmD,GAAMC,CAAI,EAC3BhB,GAAIJ,GAAS,KAAOU,EAASH,EAAC,EAAI,OAAOP,GAAU,WAAaA,EAAM,MAAMmB,GAAMC,CAAI,EAAIpB,EAC1FsB,GAAI,KAAK,IAAIf,GAAE,CAAC,EAAE,CAAC,EAAIA,GAAE,CAAC,EAAE,CAAC,EAAGA,GAAE,CAAC,EAAE,CAAC,EAAIA,GAAE,CAAC,EAAE,CAAC,CAAC,EACjDgB,GAAIJ,GAAK,OACTK,GAAI,OAAOzD,GAAc,WAAaA,EAAU,MAAMoD,GAAMC,CAAI,EAAIrD,EACpE0D,GAAI5C,EAAY0C,GAAE,OAAOnB,EAAC,EAAE,OAAOkB,GAAIC,GAAE,CAAC,EAAGC,GAAE,OAAOpB,EAAC,EAAE,OAAOkB,GAAIE,GAAE,CAAC,CAAC,EAC5E,OAAO,SAASR,GAAG,CACjB,GAAIA,KAAM,EAAGA,GAAIQ,OACZ,CAAE,IAAIE,GAAID,GAAET,EAAC,EAAGb,GAAImB,GAAII,GAAE,CAAC,EAAGV,GAAI,IAAIC,GAAUd,GAAGC,GAAE,CAAC,EAAIsB,GAAE,CAAC,EAAIvB,GAAGC,GAAE,CAAC,EAAIsB,GAAE,CAAC,EAAIvB,EAAC,CAAG,CAC3FkB,GAAE,KAAK,KAAML,EAAC,CAChB,CACF,CAAC,CACP,CAEA,SAASd,EAAQiB,EAAMC,EAAMO,EAAO,CAClC,MAAQ,CAACA,GAASR,EAAK,WAAc,IAAIS,EAAQT,EAAMC,CAAI,CAC7D,CAEA,SAASQ,EAAQT,EAAMC,EAAM,CAC3B,KAAK,KAAOD,EACZ,KAAK,KAAOC,EACZ,KAAK,OAAS,EACd,KAAK,YAAc,KACnB,KAAK,OAASpD,EAAO,MAAMmD,EAAMC,CAAI,EACrC,KAAK,KAAO,CACd,CAEAQ,EAAQ,UAAY,CAClB,MAAO,SAASpE,EAAO,CACrB,OAAIA,IAAO,KAAK,YAAcA,GACvB,IACT,EACA,MAAO,UAAW,CAChB,MAAI,EAAE,KAAK,SAAW,IACpB,KAAK,KAAK,UAAY,KACtB,KAAK,KAAK,OAAO,GAEZ,IACT,EACA,KAAM,SAASqE,EAAK9D,EAAW,CAC7B,OAAI,KAAK,OAAS8D,IAAQ,UAAS,KAAK,MAAM,CAAC,EAAI9D,EAAU,OAAO,KAAK,MAAM,CAAC,CAAC,GAC7E,KAAK,QAAU8D,IAAQ,UAAS,KAAK,OAAO,CAAC,EAAI9D,EAAU,OAAO,KAAK,OAAO,CAAC,CAAC,GAChF,KAAK,QAAU8D,IAAQ,UAAS,KAAK,OAAO,CAAC,EAAI9D,EAAU,OAAO,KAAK,OAAO,CAAC,CAAC,GACpF,KAAK,KAAK,OAASA,EACnB,KAAK,KAAK,MAAM,EACT,IACT,EACA,IAAK,UAAW,CACd,MAAI,EAAE,KAAK,SAAW,IACpB,OAAO,KAAK,KAAK,UACjB,KAAK,KAAK,KAAK,GAEV,IACT,EACA,KAAM,SAAS+D,EAAM,CACnB,IAAIC,EAAIC,GAAO,KAAK,IAAI,EAAE,MAAM,EAChClD,EAAU,KACRgD,EACA,KAAK,KACL,IAAIG,GAAUH,EAAM,CAClB,YAAa,KAAK,YAClB,OAAQvC,EACR,KAAAuC,EACA,UAAW,KAAK,KAAK,OACrB,SAAUhD,CACZ,CAAC,EACDiD,CACF,CACF,CACF,EAEA,SAAStC,EAAQjC,KAAU4D,EAAM,CAC/B,GAAI,CAAC7C,EAAO,MAAM,KAAM,SAAS,EAAG,OACpC,IAAI8C,EAAInB,EAAQ,KAAMkB,CAAI,EAAE,MAAM5D,CAAK,EACnCwD,EAAI,KAAK,OACTb,GAAI,KAAK,IAAIxB,EAAY,CAAC,EAAG,KAAK,IAAIA,EAAY,CAAC,EAAGqC,EAAE,EAAI,KAAK,IAAI,EAAGvC,EAAW,MAAM,KAAM,SAAS,CAAC,CAAC,CAAC,EAC3G2B,EAAI8B,GAAQ1E,CAAK,EAIrB,GAAI6D,EAAE,OACAA,EAAE,MAAM,CAAC,EAAE,CAAC,IAAMjB,EAAE,CAAC,GAAKiB,EAAE,MAAM,CAAC,EAAE,CAAC,IAAMjB,EAAE,CAAC,KACjDiB,EAAE,MAAM,CAAC,EAAIL,EAAE,OAAOK,EAAE,MAAM,CAAC,EAAIjB,CAAC,GAEtC,aAAaiB,EAAE,KAAK,MAIjB,IAAIL,EAAE,IAAMb,GAAG,OAIlBkB,EAAE,MAAQ,CAACjB,EAAGY,EAAE,OAAOZ,CAAC,CAAC,EACzB+B,GAAU,IAAI,EACdd,EAAE,MAAM,EAGVe,GAAQ5E,CAAK,EACb6D,EAAE,MAAQ,WAAWgB,GAAYjD,CAAU,EAC3CiC,EAAE,KAAK,QAAS7C,EAAUoC,EAAUC,EAAMG,EAAGb,EAAC,EAAGkB,EAAE,MAAM,CAAC,EAAGA,EAAE,MAAM,CAAC,CAAC,EAAGA,EAAE,OAAQpD,CAAe,CAAC,EAEpG,SAASoE,IAAa,CACpBhB,EAAE,MAAQ,KACVA,EAAE,IAAI,CACR,CACF,CAEA,SAAS3B,EAAYlC,KAAU4D,EAAM,CACnC,GAAIlC,GAAe,CAACX,EAAO,MAAM,KAAM,SAAS,EAAG,OACnD,IAAI+D,EAAgB9E,EAAM,cACtB6D,EAAInB,EAAQ,KAAMkB,EAAM,EAAI,EAAE,MAAM5D,CAAK,EACzC+E,GAAIP,GAAOxE,EAAM,IAAI,EAAE,GAAG,iBAAkBgF,GAAY,EAAI,EAAE,GAAG,eAAgBC,GAAY,EAAI,EACjGrC,EAAI8B,GAAQ1E,EAAO8E,CAAa,EAChCI,GAAKlF,EAAM,QACXmF,GAAKnF,EAAM,QAEfoF,GAAYpF,EAAM,IAAI,EACtBqF,GAAcrF,CAAK,EACnB6D,EAAE,MAAQ,CAACjB,EAAG,KAAK,OAAO,OAAOA,CAAC,CAAC,EACnC+B,GAAU,IAAI,EACdd,EAAE,MAAM,EAER,SAASmB,GAAWhF,GAAO,CAEzB,GADA4E,GAAQ5E,EAAK,EACT,CAAC6D,EAAE,MAAO,CACZ,IAAIyB,GAAKtF,GAAM,QAAUkF,GAAIK,GAAKvF,GAAM,QAAUmF,GAClDtB,EAAE,MAAQyB,GAAKA,GAAKC,GAAKA,GAAK1D,CAChC,CACAgC,EAAE,MAAM7D,EAAK,EACX,KAAK,QAASgB,EAAUoC,EAAUS,EAAE,KAAK,OAAQA,EAAE,MAAM,CAAC,EAAIa,GAAQ1E,GAAO8E,CAAa,EAAGjB,EAAE,MAAM,CAAC,CAAC,EAAGA,EAAE,OAAQpD,CAAe,CAAC,CACxI,CAEA,SAASwE,GAAWjF,GAAO,CACzB+E,GAAE,GAAG,8BAA+B,IAAI,EACxCS,GAAWxF,GAAM,KAAM6D,EAAE,KAAK,EAC9Be,GAAQ5E,EAAK,EACb6D,EAAE,MAAM7D,EAAK,EAAE,IAAI,CACrB,CACF,CAEA,SAASmC,EAAWnC,KAAU4D,EAAM,CAClC,GAAK7C,EAAO,MAAM,KAAM,SAAS,EACjC,KAAIiC,EAAK,KAAK,OACVC,EAAKyB,GAAQ1E,EAAM,eAAiBA,EAAM,eAAe,CAAC,EAAIA,EAAO,IAAI,EACzEmD,GAAKH,EAAG,OAAOC,CAAE,EACjBH,EAAKE,EAAG,GAAKhD,EAAM,SAAW,GAAM,GACpCyF,GAAKzE,EAAUoC,EAAUC,EAAML,EAAIF,CAAE,EAAGG,EAAIE,EAAE,EAAG3C,EAAO,MAAM,KAAMoD,CAAI,EAAGnD,CAAe,EAE9FmE,GAAQ5E,CAAK,EACToB,EAAW,EAAGoD,GAAO,IAAI,EAAE,WAAW,EAAE,SAASpD,CAAQ,EAAE,KAAKqB,EAAUgD,GAAIxC,EAAIjD,CAAK,EACtFwE,GAAO,IAAI,EAAE,KAAKzC,EAAK,UAAW0D,GAAIxC,EAAIjD,CAAK,EACtD,CAEA,SAASoC,EAAapC,KAAU4D,EAAM,CACpC,GAAK7C,EAAO,MAAM,KAAM,SAAS,EACjC,KAAI2E,EAAU1F,EAAM,QAChB2F,EAAID,EAAQ,OACZ7B,GAAInB,EAAQ,KAAMkB,EAAM5D,EAAM,eAAe,SAAW2F,CAAC,EAAE,MAAM3F,CAAK,EACtE4F,EAAS3B,GAAGT,GAAGZ,GAGnB,IADAyC,GAAcrF,CAAK,EACdiE,GAAI,EAAGA,GAAI0B,EAAG,EAAE1B,GACnBT,GAAIkC,EAAQzB,EAAC,EAAGrB,GAAI8B,GAAQlB,GAAG,IAAI,EACnCZ,GAAI,CAACA,GAAG,KAAK,OAAO,OAAOA,EAAC,EAAGY,GAAE,UAAU,EACtCK,GAAE,OACE,CAACA,GAAE,QAAUA,GAAE,OAAO,CAAC,IAAMjB,GAAE,CAAC,IAAGiB,GAAE,OAASjB,GAAGiB,GAAE,KAAO,IADpDA,GAAE,OAASjB,GAAGgD,EAAU,GAAM/B,GAAE,KAAO,EAAI,CAAC,CAACrC,GAI1DA,IAAeA,EAAgB,aAAaA,CAAa,GAEzDoE,IACE/B,GAAE,KAAO,IAAGpC,EAAamB,GAAE,CAAC,EAAGpB,EAAgB,WAAW,UAAW,CAAEA,EAAgB,IAAM,EAAGG,CAAU,GAC9GgD,GAAU,IAAI,EACdd,GAAE,MAAM,GAEZ,CAEA,SAASxB,EAAWrC,KAAU4D,EAAM,CAClC,GAAK,KAAK,UACV,KAAIC,EAAInB,EAAQ,KAAMkB,CAAI,EAAE,MAAM5D,CAAK,EACnC0F,EAAU1F,EAAM,eAChB2F,GAAID,EAAQ,OAAQzB,EAAGT,GAAGZ,GAAGsB,GAGjC,IADAU,GAAQ5E,CAAK,EACRiE,EAAI,EAAGA,EAAI0B,GAAG,EAAE1B,EACnBT,GAAIkC,EAAQzB,CAAC,EAAGrB,GAAI8B,GAAQlB,GAAG,IAAI,EAC/BK,EAAE,QAAUA,EAAE,OAAO,CAAC,IAAML,GAAE,WAAYK,EAAE,OAAO,CAAC,EAAIjB,GACnDiB,EAAE,QAAUA,EAAE,OAAO,CAAC,IAAML,GAAE,aAAYK,EAAE,OAAO,CAAC,EAAIjB,IAGnE,GADAY,GAAIK,EAAE,KAAK,OACPA,EAAE,OAAQ,CACZ,IAAIZ,GAAKY,EAAE,OAAO,CAAC,EAAGgC,GAAKhC,EAAE,OAAO,CAAC,EACjCV,GAAKU,EAAE,OAAO,CAAC,EAAGiC,GAAKjC,EAAE,OAAO,CAAC,EACjCkC,IAAMA,GAAK5C,GAAG,CAAC,EAAIF,GAAG,CAAC,GAAK8C,IAAMA,GAAK5C,GAAG,CAAC,EAAIF,GAAG,CAAC,GAAK8C,GACxDC,IAAMA,GAAKF,GAAG,CAAC,EAAID,GAAG,CAAC,GAAKG,IAAMA,GAAKF,GAAG,CAAC,EAAID,GAAG,CAAC,GAAKG,GAC5DxC,GAAIH,EAAMG,GAAG,KAAK,KAAKuC,GAAKC,EAAE,CAAC,EAC/BpD,GAAI,EAAEK,GAAG,CAAC,EAAIE,GAAG,CAAC,GAAK,GAAIF,GAAG,CAAC,EAAIE,GAAG,CAAC,GAAK,CAAC,EAC7Ce,GAAI,EAAE2B,GAAG,CAAC,EAAIC,GAAG,CAAC,GAAK,GAAID,GAAG,CAAC,EAAIC,GAAG,CAAC,GAAK,CAAC,CAC/C,SACSjC,EAAE,OAAQjB,GAAIiB,EAAE,OAAO,CAAC,EAAGK,GAAIL,EAAE,OAAO,CAAC,MAC7C,QAELA,EAAE,KAAK,QAAS7C,EAAUoC,EAAUI,GAAGZ,GAAGsB,EAAC,EAAGL,EAAE,OAAQpD,CAAe,CAAC,EAC1E,CAEA,SAAS6B,EAAWtC,KAAU4D,EAAM,CAClC,GAAK,KAAK,UACV,KAAIC,EAAInB,EAAQ,KAAMkB,CAAI,EAAE,MAAM5D,CAAK,EACnC0F,EAAU1F,EAAM,eAChB2F,GAAID,EAAQ,OAAQzB,EAAGT,GAK3B,IAHA6B,GAAcrF,CAAK,EACf0B,GAAa,aAAaA,CAAW,EACzCA,EAAc,WAAW,UAAW,CAAEA,EAAc,IAAM,EAAGC,CAAU,EAClEsC,EAAI,EAAGA,EAAI0B,GAAG,EAAE1B,EACnBT,GAAIkC,EAAQzB,CAAC,EACTJ,EAAE,QAAUA,EAAE,OAAO,CAAC,IAAML,GAAE,WAAY,OAAOK,EAAE,OAC9CA,EAAE,QAAUA,EAAE,OAAO,CAAC,IAAML,GAAE,YAAY,OAAOK,EAAE,OAG9D,GADIA,EAAE,QAAU,CAACA,EAAE,SAAQA,EAAE,OAASA,EAAE,OAAQ,OAAOA,EAAE,QACrDA,EAAE,OAAQA,EAAE,OAAO,CAAC,EAAI,KAAK,OAAO,OAAOA,EAAE,OAAO,CAAC,CAAC,UAExDA,EAAE,IAAI,EAEFA,EAAE,OAAS,IACbL,GAAIkB,GAAQlB,GAAG,IAAI,EACf,KAAK,MAAM/B,EAAW,CAAC,EAAI+B,GAAE,CAAC,EAAG/B,EAAW,CAAC,EAAI+B,GAAE,CAAC,CAAC,EAAI1B,GAAa,CACxE,IAAIc,GAAI4B,GAAO,IAAI,EAAE,GAAG,eAAe,EACnC5B,IAAGA,GAAE,MAAM,KAAM,SAAS,CAChC,EAGN,CAEA,OAAAb,EAAK,WAAa,SAASkE,EAAG,CAC5B,OAAO,UAAU,QAAUhF,EAAa,OAAOgF,GAAM,WAAaA,EAAIC,GAAS,CAACD,CAAC,EAAGlE,GAAQd,CAC9F,EAEAc,EAAK,OAAS,SAASkE,EAAG,CACxB,OAAO,UAAU,QAAUlF,EAAS,OAAOkF,GAAM,WAAaA,EAAIC,GAAS,CAAC,CAACD,CAAC,EAAGlE,GAAQhB,CAC3F,EAEAgB,EAAK,UAAY,SAASkE,EAAG,CAC3B,OAAO,UAAU,QAAU/E,EAAY,OAAO+E,GAAM,WAAaA,EAAIC,GAAS,CAAC,CAACD,CAAC,EAAGlE,GAAQb,CAC9F,EAEAa,EAAK,OAAS,SAASkE,EAAG,CACxB,OAAO,UAAU,QAAUzF,EAAS,OAAOyF,GAAM,WAAaA,EAAIC,GAAS,CAAC,CAAC,CAACD,EAAE,CAAC,EAAE,CAAC,EAAG,CAACA,EAAE,CAAC,EAAE,CAAC,CAAC,EAAG,CAAC,CAACA,EAAE,CAAC,EAAE,CAAC,EAAG,CAACA,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAGlE,GAAQvB,CACpI,EAEAuB,EAAK,YAAc,SAASkE,EAAG,CAC7B,OAAO,UAAU,QAAU9E,EAAY,CAAC,EAAI,CAAC8E,EAAE,CAAC,EAAG9E,EAAY,CAAC,EAAI,CAAC8E,EAAE,CAAC,EAAGlE,GAAQ,CAACZ,EAAY,CAAC,EAAGA,EAAY,CAAC,CAAC,CACpH,EAEAY,EAAK,gBAAkB,SAASkE,EAAG,CACjC,OAAO,UAAU,QAAUxF,EAAgB,CAAC,EAAE,CAAC,EAAI,CAACwF,EAAE,CAAC,EAAE,CAAC,EAAGxF,EAAgB,CAAC,EAAE,CAAC,EAAI,CAACwF,EAAE,CAAC,EAAE,CAAC,EAAGxF,EAAgB,CAAC,EAAE,CAAC,EAAI,CAACwF,EAAE,CAAC,EAAE,CAAC,EAAGxF,EAAgB,CAAC,EAAE,CAAC,EAAI,CAACwF,EAAE,CAAC,EAAE,CAAC,EAAGlE,GAAQ,CAAC,CAACtB,EAAgB,CAAC,EAAE,CAAC,EAAGA,EAAgB,CAAC,EAAE,CAAC,CAAC,EAAG,CAACA,EAAgB,CAAC,EAAE,CAAC,EAAGA,EAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAC5Q,EAEAsB,EAAK,UAAY,SAASkE,EAAG,CAC3B,OAAO,UAAU,QAAUjF,EAAYiF,EAAGlE,GAAQf,CACpD,EAEAe,EAAK,SAAW,SAASkE,EAAG,CAC1B,OAAO,UAAU,QAAU7E,EAAW,CAAC6E,EAAGlE,GAAQX,CACpD,EAEAW,EAAK,YAAc,SAASkE,EAAG,CAC7B,OAAO,UAAU,QAAU5E,EAAc4E,EAAGlE,GAAQV,CACtD,EAEAU,EAAK,GAAK,UAAW,CACnB,IAAIoE,EAAQ7E,EAAU,GAAG,MAAMA,EAAW,SAAS,EACnD,OAAO6E,IAAU7E,EAAYS,EAAOoE,CACtC,EAEApE,EAAK,cAAgB,SAASkE,EAAG,CAC/B,OAAO,UAAU,QAAUpE,GAAkBoE,EAAI,CAACA,GAAKA,EAAGlE,GAAQ,KAAK,KAAKF,CAAc,CAC5F,EAEAE,EAAK,YAAc,SAASkE,EAAG,CAC7B,OAAO,UAAU,QAAUnE,EAAc,CAACmE,EAAGlE,GAAQD,CACvD,EAEOC,CACT,CA9bA,IAAAqE,GAAAC,GAAA,KAAAC,KACAA,KACAA,KACAA,KACAA,KACAC,KACAC,KACAC,KACAC,OCRA,IAAAC,GAAA,GAAAC,GAAAD,GAAA,mBAAAE,GAAA,SAAAC,GAAA,iBAAAC,GAAA,kBAAAC,KAAA,IAAAC,GAAAC,GAAA,KAAAC,KACAC,OCDA,IAAAC,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cAuBA,IAAIC,GAAI,OAAO,SAAY,SAAW,QAAU,KAC5CC,GAAeD,IAAK,OAAOA,GAAE,OAAU,WACvCA,GAAE,MACF,SAAsBE,EAAQC,EAAUC,EAAM,CAC9C,OAAO,SAAS,UAAU,MAAM,KAAKF,EAAQC,EAAUC,CAAI,CAC7D,EAEEC,GACAL,IAAK,OAAOA,GAAE,SAAY,WAC5BK,GAAiBL,GAAE,QACV,OAAO,sBAChBK,GAAiB,SAAwBH,EAAQ,CAC/C,OAAO,OAAO,oBAAoBA,CAAM,EACrC,OAAO,OAAO,sBAAsBA,CAAM,CAAC,CAChD,EAEAG,GAAiB,SAAwBH,EAAQ,CAC/C,OAAO,OAAO,oBAAoBA,CAAM,CAC1C,EAGF,SAASI,IAAmBC,EAAS,CAC/B,SAAW,QAAQ,MAAM,QAAQ,KAAKA,CAAO,CACnD,CAEA,IAAIC,GAAc,OAAO,OAAS,SAAqBC,EAAO,CAC5D,OAAOA,IAAUA,CACnB,EAEA,SAASC,IAAe,CACtBA,GAAa,KAAK,KAAK,IAAI,CAC7B,CACAX,GAAO,QAAUW,GACjBX,GAAO,QAAQ,KAAOY,IAGtBD,GAAa,aAAeA,GAE5BA,GAAa,UAAU,QAAU,OACjCA,GAAa,UAAU,aAAe,EACtCA,GAAa,UAAU,cAAgB,OAIvC,IAAIE,GAAsB,GAE1B,SAASC,GAAcC,EAAU,CAC/B,GAAI,OAAOA,GAAa,WACtB,MAAM,IAAI,UAAU,mEAAqE,OAAOA,CAAQ,CAE5G,CAEA,OAAO,eAAeJ,GAAc,sBAAuB,CACzD,WAAY,GACZ,IAAK,UAAW,CACd,OAAOE,EACT,EACA,IAAK,SAASG,EAAK,CACjB,GAAI,OAAOA,GAAQ,UAAYA,EAAM,GAAKP,GAAYO,CAAG,EACvD,MAAM,IAAI,WAAW,kGAAoGA,EAAM,GAAG,EAEpIH,GAAsBG,CACxB,CACF,CAAC,EAEDL,GAAa,KAAO,UAAW,EAEzB,KAAK,UAAY,QACjB,KAAK,UAAY,OAAO,eAAe,IAAI,EAAE,WAC/C,KAAK,QAAU,OAAO,OAAO,IAAI,EACjC,KAAK,aAAe,GAGtB,KAAK,cAAgB,KAAK,eAAiB,MAC7C,EAIAA,GAAa,UAAU,gBAAkB,SAAyBM,EAAG,CACnE,GAAI,OAAOA,GAAM,UAAYA,EAAI,GAAKR,GAAYQ,CAAC,EACjD,MAAM,IAAI,WAAW,gFAAkFA,EAAI,GAAG,EAEhH,YAAK,cAAgBA,EACd,IACT,EAEA,SAASC,GAAiBC,EAAM,CAC9B,OAAIA,EAAK,gBAAkB,OAClBR,GAAa,oBACfQ,EAAK,aACd,CAEAR,GAAa,UAAU,gBAAkB,UAA2B,CAClE,OAAOO,GAAiB,IAAI,CAC9B,EAEAP,GAAa,UAAU,KAAO,SAAcS,EAAM,CAEhD,QADIf,EAAO,CAAC,EACHgB,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAKhB,EAAK,KAAK,UAAUgB,CAAC,CAAC,EACjE,IAAIC,EAAWF,IAAS,QAEpBG,EAAS,KAAK,QAClB,GAAIA,IAAW,OACbD,EAAWA,GAAWC,EAAO,QAAU,eAChC,CAACD,EACR,MAAO,GAGT,GAAIA,EAAS,CACX,IAAIE,EAGJ,GAFInB,EAAK,OAAS,IAChBmB,EAAKnB,EAAK,CAAC,GACTmB,aAAc,MAGhB,MAAMA,EAGR,IAAIC,EAAM,IAAI,MAAM,oBAAsBD,EAAK,KAAOA,EAAG,QAAU,IAAM,GAAG,EAC5E,MAAAC,EAAI,QAAUD,EACRC,CACR,CAEA,IAAIC,EAAUH,EAAOH,CAAI,EAEzB,GAAIM,IAAY,OACd,MAAO,GAET,GAAI,OAAOA,GAAY,WACrBxB,GAAawB,EAAS,KAAMrB,CAAI,MAIhC,SAFIsB,EAAMD,EAAQ,OACdE,EAAYC,GAAWH,EAASC,CAAG,EAC9BN,EAAI,EAAGA,EAAIM,EAAK,EAAEN,EACzBnB,GAAa0B,EAAUP,CAAC,EAAG,KAAMhB,CAAI,EAGzC,MAAO,EACT,EAEA,SAASyB,GAAa3B,EAAQiB,EAAML,EAAUgB,EAAS,CACrD,IAAIC,EACAT,EACAU,EAsBJ,GApBAnB,GAAcC,CAAQ,EAEtBQ,EAASpB,EAAO,QACZoB,IAAW,QACbA,EAASpB,EAAO,QAAU,OAAO,OAAO,IAAI,EAC5CA,EAAO,aAAe,IAIlBoB,EAAO,cAAgB,SACzBpB,EAAO,KAAK,cAAeiB,EACfL,EAAS,SAAWA,EAAS,SAAWA,CAAQ,EAI5DQ,EAASpB,EAAO,SAElB8B,EAAWV,EAAOH,CAAI,GAGpBa,IAAa,OAEfA,EAAWV,EAAOH,CAAI,EAAIL,EAC1B,EAAEZ,EAAO,qBAEL,OAAO8B,GAAa,WAEtBA,EAAWV,EAAOH,CAAI,EACpBW,EAAU,CAAChB,EAAUkB,CAAQ,EAAI,CAACA,EAAUlB,CAAQ,EAE7CgB,EACTE,EAAS,QAAQlB,CAAQ,EAEzBkB,EAAS,KAAKlB,CAAQ,EAIxBiB,EAAId,GAAiBf,CAAM,EACvB6B,EAAI,GAAKC,EAAS,OAASD,GAAK,CAACC,EAAS,OAAQ,CACpDA,EAAS,OAAS,GAGlB,IAAIC,EAAI,IAAI,MAAM,+CACED,EAAS,OAAS,IAAM,OAAOb,CAAI,EAAI,mEAEvB,EACpCc,EAAE,KAAO,8BACTA,EAAE,QAAU/B,EACZ+B,EAAE,KAAOd,EACTc,EAAE,MAAQD,EAAS,OACnB1B,IAAmB2B,CAAC,CACtB,CAGF,OAAO/B,CACT,CAEAQ,GAAa,UAAU,YAAc,SAAqBS,EAAML,EAAU,CACxE,OAAOe,GAAa,KAAMV,EAAML,EAAU,EAAK,CACjD,EAEAJ,GAAa,UAAU,GAAKA,GAAa,UAAU,YAEnDA,GAAa,UAAU,gBACnB,SAAyBS,EAAML,EAAU,CACvC,OAAOe,GAAa,KAAMV,EAAML,EAAU,EAAI,CAChD,EAEJ,SAASoB,KAAc,CACrB,GAAI,CAAC,KAAK,MAGR,OAFA,KAAK,OAAO,eAAe,KAAK,KAAM,KAAK,MAAM,EACjD,KAAK,MAAQ,GACT,UAAU,SAAW,EAChB,KAAK,SAAS,KAAK,KAAK,MAAM,EAChC,KAAK,SAAS,MAAM,KAAK,OAAQ,SAAS,CAErD,CAEA,SAASC,GAAUjC,EAAQiB,EAAML,EAAU,CACzC,IAAIsB,EAAQ,CAAE,MAAO,GAAO,OAAQ,OAAW,OAAQlC,EAAQ,KAAMiB,EAAM,SAAUL,CAAS,EAC1FuB,EAAUH,IAAY,KAAKE,CAAK,EACpC,OAAAC,EAAQ,SAAWvB,EACnBsB,EAAM,OAASC,EACRA,CACT,CAEA3B,GAAa,UAAU,KAAO,SAAcS,EAAML,EAAU,CAC1D,OAAAD,GAAcC,CAAQ,EACtB,KAAK,GAAGK,EAAMgB,GAAU,KAAMhB,EAAML,CAAQ,CAAC,EACtC,IACT,EAEAJ,GAAa,UAAU,oBACnB,SAA6BS,EAAML,EAAU,CAC3C,OAAAD,GAAcC,CAAQ,EACtB,KAAK,gBAAgBK,EAAMgB,GAAU,KAAMhB,EAAML,CAAQ,CAAC,EACnD,IACT,EAGJJ,GAAa,UAAU,eACnB,SAAwBS,EAAML,EAAU,CACtC,IAAIwB,EAAMhB,EAAQiB,EAAUnB,EAAGoB,EAK/B,GAHA3B,GAAcC,CAAQ,EAEtBQ,EAAS,KAAK,QACVA,IAAW,OACb,OAAO,KAGT,GADAgB,EAAOhB,EAAOH,CAAI,EACdmB,IAAS,OACX,OAAO,KAET,GAAIA,IAASxB,GAAYwB,EAAK,WAAaxB,EACrC,EAAE,KAAK,eAAiB,EAC1B,KAAK,QAAU,OAAO,OAAO,IAAI,GAEjC,OAAOQ,EAAOH,CAAI,EACdG,EAAO,gBACT,KAAK,KAAK,iBAAkBH,EAAMmB,EAAK,UAAYxB,CAAQ,WAEtD,OAAOwB,GAAS,WAAY,CAGrC,IAFAC,EAAW,GAENnB,EAAIkB,EAAK,OAAS,EAAGlB,GAAK,EAAGA,IAChC,GAAIkB,EAAKlB,CAAC,IAAMN,GAAYwB,EAAKlB,CAAC,EAAE,WAAaN,EAAU,CACzD0B,EAAmBF,EAAKlB,CAAC,EAAE,SAC3BmB,EAAWnB,EACX,KACF,CAGF,GAAImB,EAAW,EACb,OAAO,KAELA,IAAa,EACfD,EAAK,MAAM,EAEXG,IAAUH,EAAMC,CAAQ,EAGtBD,EAAK,SAAW,IAClBhB,EAAOH,CAAI,EAAImB,EAAK,CAAC,GAEnBhB,EAAO,iBAAmB,QAC5B,KAAK,KAAK,iBAAkBH,EAAMqB,GAAoB1B,CAAQ,CAClE,CAEA,OAAO,IACT,EAEJJ,GAAa,UAAU,IAAMA,GAAa,UAAU,eAEpDA,GAAa,UAAU,mBACnB,SAA4BS,EAAM,CAChC,IAAIQ,EAAWL,EAAQ,EAGvB,GADAA,EAAS,KAAK,QACVA,IAAW,OACb,OAAO,KAGT,GAAIA,EAAO,iBAAmB,OAC5B,OAAI,UAAU,SAAW,GACvB,KAAK,QAAU,OAAO,OAAO,IAAI,EACjC,KAAK,aAAe,GACXA,EAAOH,CAAI,IAAM,SACtB,EAAE,KAAK,eAAiB,EAC1B,KAAK,QAAU,OAAO,OAAO,IAAI,EAEjC,OAAOG,EAAOH,CAAI,GAEf,KAIT,GAAI,UAAU,SAAW,EAAG,CAC1B,IAAIuB,EAAO,OAAO,KAAKpB,CAAM,EACzBqB,EACJ,IAAK,EAAI,EAAG,EAAID,EAAK,OAAQ,EAAE,EAC7BC,EAAMD,EAAK,CAAC,EACRC,IAAQ,kBACZ,KAAK,mBAAmBA,CAAG,EAE7B,YAAK,mBAAmB,gBAAgB,EACxC,KAAK,QAAU,OAAO,OAAO,IAAI,EACjC,KAAK,aAAe,EACb,IACT,CAIA,GAFAhB,EAAYL,EAAOH,CAAI,EAEnB,OAAOQ,GAAc,WACvB,KAAK,eAAeR,EAAMQ,CAAS,UAC1BA,IAAc,OAEvB,IAAK,EAAIA,EAAU,OAAS,EAAG,GAAK,EAAG,IACrC,KAAK,eAAeR,EAAMQ,EAAU,CAAC,CAAC,EAI1C,OAAO,IACT,EAEJ,SAASiB,GAAW1C,EAAQiB,EAAM0B,EAAQ,CACxC,IAAIvB,EAASpB,EAAO,QAEpB,GAAIoB,IAAW,OACb,MAAO,CAAC,EAEV,IAAIwB,EAAaxB,EAAOH,CAAI,EAC5B,OAAI2B,IAAe,OACV,CAAC,EAEN,OAAOA,GAAe,WACjBD,EAAS,CAACC,EAAW,UAAYA,CAAU,EAAI,CAACA,CAAU,EAE5DD,EACLE,IAAgBD,CAAU,EAAIlB,GAAWkB,EAAYA,EAAW,MAAM,CAC1E,CAEApC,GAAa,UAAU,UAAY,SAAmBS,EAAM,CAC1D,OAAOyB,GAAW,KAAMzB,EAAM,EAAI,CACpC,EAEAT,GAAa,UAAU,aAAe,SAAsBS,EAAM,CAChE,OAAOyB,GAAW,KAAMzB,EAAM,EAAK,CACrC,EAEAT,GAAa,cAAgB,SAASsC,EAAS7B,EAAM,CACnD,OAAI,OAAO6B,EAAQ,eAAkB,WAC5BA,EAAQ,cAAc7B,CAAI,EAE1B8B,GAAc,KAAKD,EAAS7B,CAAI,CAE3C,EAEAT,GAAa,UAAU,cAAgBuC,GACvC,SAASA,GAAc9B,EAAM,CAC3B,IAAIG,EAAS,KAAK,QAElB,GAAIA,IAAW,OAAW,CACxB,IAAIwB,EAAaxB,EAAOH,CAAI,EAE5B,GAAI,OAAO2B,GAAe,WACxB,MAAO,GACF,GAAIA,IAAe,OACxB,OAAOA,EAAW,MAEtB,CAEA,MAAO,EACT,CAEApC,GAAa,UAAU,WAAa,UAAsB,CACxD,OAAO,KAAK,aAAe,EAAIL,GAAe,KAAK,OAAO,EAAI,CAAC,CACjE,EAEA,SAASuB,GAAWsB,EAAKlC,EAAG,CAE1B,QADImC,EAAO,IAAI,MAAMnC,CAAC,EACbI,EAAI,EAAGA,EAAIJ,EAAG,EAAEI,EACvB+B,EAAK/B,CAAC,EAAI8B,EAAI9B,CAAC,EACjB,OAAO+B,CACT,CAEA,SAASV,IAAUH,EAAMc,EAAO,CAC9B,KAAOA,EAAQ,EAAId,EAAK,OAAQc,IAC9Bd,EAAKc,CAAK,EAAId,EAAKc,EAAQ,CAAC,EAC9Bd,EAAK,IAAI,CACX,CAEA,SAASS,IAAgBG,EAAK,CAE5B,QADIG,EAAM,IAAI,MAAMH,EAAI,MAAM,EACrB9B,EAAI,EAAGA,EAAIiC,EAAI,OAAQ,EAAEjC,EAChCiC,EAAIjC,CAAC,EAAI8B,EAAI9B,CAAC,EAAE,UAAY8B,EAAI9B,CAAC,EAEnC,OAAOiC,CACT,CAEA,SAAS1C,IAAKqC,EAASM,EAAM,CAC3B,OAAO,IAAI,QAAQ,SAAUC,EAASC,EAAQ,CAC5C,SAASC,EAAcjC,EAAK,CAC1BwB,EAAQ,eAAeM,EAAMI,CAAQ,EACrCF,EAAOhC,CAAG,CACZ,CAEA,SAASkC,GAAW,CACd,OAAOV,EAAQ,gBAAmB,YACpCA,EAAQ,eAAe,QAASS,CAAa,EAE/CF,EAAQ,CAAC,EAAE,MAAM,KAAK,SAAS,CAAC,CAClC,CAEAI,GAA+BX,EAASM,EAAMI,EAAU,CAAE,KAAM,EAAK,CAAC,EAClEJ,IAAS,SACXM,IAA8BZ,EAASS,EAAe,CAAE,KAAM,EAAK,CAAC,CAExE,CAAC,CACH,CAEA,SAASG,IAA8BZ,EAASvB,EAASoC,EAAO,CAC1D,OAAOb,EAAQ,IAAO,YACxBW,GAA+BX,EAAS,QAASvB,EAASoC,CAAK,CAEnE,CAEA,SAASF,GAA+BX,EAASM,EAAMxC,EAAU+C,EAAO,CACtE,GAAI,OAAOb,EAAQ,IAAO,WACpBa,EAAM,KACRb,EAAQ,KAAKM,EAAMxC,CAAQ,EAE3BkC,EAAQ,GAAGM,EAAMxC,CAAQ,UAElB,OAAOkC,EAAQ,kBAAqB,WAG7CA,EAAQ,iBAAiBM,EAAM,SAASQ,EAAa/C,EAAK,CAGpD8C,EAAM,MACRb,EAAQ,oBAAoBM,EAAMQ,CAAY,EAEhDhD,EAASC,CAAG,CACd,CAAC,MAED,OAAM,IAAI,UAAU,sEAAwE,OAAOiC,CAAO,CAE9G,kFChfA,IAAAe,IAAA,cACAC,IAAA,cAKA,SAAwBC,IAAYC,EAAyB,CAC3D,IAAMC,EAASD,EAAQ,MAAM,KAAK,OAC5BE,EAASF,EAAQ,MAAM,KAAK,OAE5BG,KAAON,IAAA,MAAM,EAChB,EAAE,SAAUO,EAAC,CACZ,OAAOA,EAAE,CAAC,CACZ,CAAC,EACA,EAAE,SAAUA,EAAC,CACZ,OAAOA,EAAE,CAAC,CACZ,CAAC,EAEH,OAAO,SAAUC,EAA8D,CAC7EA,EAAgB,KAAK,UAAA,CAGnB,IAAMC,KADUR,IAAA,QAAS,IAAI,EACH,UAAU,eAAe,EAAE,KAAK,SAAUM,EAAsB,CACxF,OAAOA,EAAE,aAAe,CAAA,CAC1B,CAAC,EAGKG,EAAQD,EAAU,MAAK,EAAG,OAAO,GAAG,EAAE,KAAK,QAAS,aAAa,EAIjEE,EAASN,EAAO,MAAK,EACrBO,EAASR,EAAO,MAAK,EAGrBS,EAAOJ,EAAU,MAAMC,CAAK,EAAE,UAAU,MAAM,EACjD,KAAK,SAAUH,EAAC,CACf,MAAI,MAAOA,EACF,CAAC,CAAC,CAAC,EAAGI,EAAO,CAAC,CAAC,EAAG,CAAC,EAAGA,EAAO,CAAC,CAAC,CAAC,CAAC,EAEjC,CAAC,CAAC,CAACC,EAAO,CAAC,EAAG,CAAC,EAAG,CAACA,EAAO,CAAC,EAAG,CAAC,CAAC,CAAC,CAE5C,CAAC,EACGE,EAAYD,EAAK,MAAK,EAAG,OAAO,MAAM,EAC5CA,EACG,MAAMC,CAAS,EACf,KAAK,SAAU,MAAM,EACrB,KAAK,IAAKR,CAAW,EACxBO,EAAK,KAAI,EAAG,OAAM,EAIlB,IAAME,EAAON,EACV,MAAMC,CAAK,EACX,UAAU,MAAM,EAChB,KAAK,SAAUH,EAAC,CACf,MAAO,CACL,CACE,KAAMA,EAAE,MAAQ,GAChB,KAAM,MAAOA,GAGnB,CAAC,EACGS,EAAYD,EAAK,MAAK,EAAG,OAAO,MAAM,EAE5CA,EACG,MAAMC,CAAS,EACf,KAAK,SAAUT,EAAC,CACf,OAAOA,EAAE,IACX,CAAC,EACA,KAAK,IAAK,SAAUA,EAAC,CACpB,OAAOA,EAAE,KAAO,EAAI,CACtB,CAAC,EACA,KAAK,IAAK,SAAUA,EAAC,CACpB,OAAOA,EAAE,KAAO,EAAI,CACtB,CAAC,EACA,KAAK,KAAM,SAAUA,EAAC,CACrB,OAAOA,EAAE,KAAO,EAAI,EACtB,CAAC,EACA,KAAK,cAAe,SAAUA,EAAC,CAC9B,OAAOA,EAAE,KAAO,MAAQ,EAC1B,CAAC,EACA,KAAK,YAAa,SAAUA,EAAC,CAC5B,OAAOA,EAAE,KAAO,cAAgB,EAClC,CAAC,EACHQ,EAAK,KAAI,EAAG,OAAM,EAIlBN,EAAU,MAAMC,CAAK,EAAE,KAAK,YAAa,SAAUH,EAAC,CAClD,MAAI,MAAOA,EACF,aAAeH,EAAOG,EAAE,CAAC,EAAI,OAE7B,gBAAkBF,EAAOE,EAAE,CAAC,EAAI,GAE3C,CAAC,EAGDE,EAAU,KAAI,EAAG,OAAM,CACzB,CAAC,CACH,CACF,CA/FAQ,GAAA,QAAAf,gHCNA,IAAAgB,IAAA,cAmBMC,GAAoB,CACxB,OAAQ,CACN,YACA,MACA,UACA,SACA,UACA,SACA,QACA,UACA,QACA,IAAI,SAAUC,EAAC,CACf,SAAOF,IAAA,KAAME,CAAC,CAChB,CAAC,EACD,cAAe,IACf,eAAgB,IAChB,mBAAoB,KACpB,UAAW,EACX,eAAgB,EAChB,WAAY,CAAA,GAGdD,GAAQ,eAAiBA,GAAQ,cAAgB,GAEjD,SAASE,IAAkBC,EAAmBC,EAAiC,CAC7E,GAAI,OAAO,OAAOJ,GAAQ,WAAYG,CAAS,EAC7C,MAAM,IAAI,MAAM,gCAAgCA,CAAS,yBAAyB,EAEpFH,GAAQ,WAAWG,CAAS,EAAIC,CAClC,CAESC,GAAA,kBAAAH,IACTG,GAAA,QAAeL,qKCnDf,IAAAM,GAAAC,IAAA,IAAA,EAIMC,IAAQ,CACZ,SAAU,SAAUC,EAAYC,EAAYC,EAAS,CACnD,IAAMC,GAAQF,EAAKD,IAAOE,EAAI,GAC9B,OAAO,MAAM,KAAK,CAAE,OAAQA,CAAC,EAAI,CAACE,EAAGC,IAAML,EAAKG,EAAOE,CAAC,CAC1D,EAEA,SAAU,SAAUL,EAAYC,EAAYC,EAAS,CACnD,OAAO,KAAK,SAASF,EAAIC,EAAIC,CAAC,EAAE,IAAKI,GAAc,KAAK,IAAI,GAAIA,CAAC,CAAC,CACpE,EAEA,cAAe,SAAUC,EAAS,CAChC,OAAO,OAAOA,GAAM,UAAY,CAAC,MAAMA,CAAC,CAC1C,EAEA,MAAO,SAAUC,EAA+BC,EAAyBP,EAAS,CAChF,IAAMF,EAAKS,EAAM,CAAC,EACZR,EAAKQ,EAAM,CAAC,EAClB,OAAID,EAAK,OAAS,MACT,KAAK,SAAS,KAAK,MAAMR,CAAE,EAAG,KAAK,MAAMC,CAAE,EAAGC,CAAC,EAGjD,KAAK,SAASF,EAAIC,EAAIC,CAAC,CAChC,EAEA,aAAc,SAAUQ,EAAaC,EAAc,CACjD,IAAMC,EAAK,KACX,KAAKD,CAAM,EAAI,SAAUE,EAAU,CACjC,OAAK,UAAU,QAGfH,EAAOC,CAAM,EAAIE,EACVD,GAHEF,EAAOC,CAAM,CAIxB,CACF,EAEA,IAAK,SAAUJ,EAAS,CACtB,OAAIA,EAAI,EACC,GAELA,EAAI,EACC,EAEF,CACT,EAEA,MAAO,SAAUA,EAAWO,EAAcC,EAAY,CACpD,OAAIR,EAAIO,EAAaA,EACjBP,EAAIQ,EAAaA,EACdR,CACT,EAEA,MAAO,SAAUS,EAAyBC,EAAa,CACrD,IAAMC,EAAmBD,EAAQpB,GAAA,QAAQ,OAAO,OAChD,OAAOmB,EAAK,OAASnB,GAAA,QAAQ,OAAOqB,CAAgB,EAAE,IAAG,CAC3D,EAKA,SAAU,UAAA,CACR,MAAO,iBACT,GAGFC,GAAA,QAAepB,MCpEf,IAAAqB,GAAAC,GAAA,CAAAC,IAAAC,KAAA,CAAAA,GAAO,QAAU,CACf,IAAK,EACL,UAAW,EACX,OAAQ,EACR,OAAQ,EACR,OAAQ,CACV,ICNA,IAAAC,GAAAC,GAAA,CAAAC,IAAAC,KAAA,CACA,IAAIC,GAAY,KAEZC,IAAU,CACZ,EAAK;AAAA,EACL,EAAK,KACL,EAAK,KACL,EAAK,IACL,EAAK,KACL,IAAM,IACN,IAAK,GACP,EAEIC,IAAa,CACf,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GAGL,IAAK,GAGL,IAAK,GAGL,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,KAAM,GAGN,IAAK,GACL,IAAK,GACL,KAAM,GACN,IAAK,GACL,IAAK,GACL,IAAK,GAEL,KAAM,GACN,KAAM,GACN,IAAO,GAGP,KAAM,GACN,KAAM,GACN,MAAO,GACP,MAAO,GACP,IAAK,GACL,IAAK,GACL,KAAM,GACN,KAAM,GAGN,MAAO,GACP,KAAM,GACN,KAAM,EACR,EAIA,SAASC,GAASC,EAAG,CACnB,OAAOA,GAAK,KAAOA,GAAK,GAC1B,CAEA,SAASC,GAAcD,EAAG,CACxB,OAAQA,GAAK,KAAOA,GAAK,KAASA,GAAK,KAAOA,GAAK,KACjDA,IAAM,KAAOA,IAAM,GACvB,CAEA,SAASE,IAAcF,EAAG,CACxB,OAAOA,IAAM,KAAOA,IAAM,MAAQA,IAAM,KACtCA,IAAM;AAAA,GAAQA,IAAM,MAAQA,IAAM,MACtC,CAEA,SAASG,GAAaC,EAAK,CACzB,OAAON,IAAWM,CAAG,CACvB,CAEA,SAASC,IAASL,EAAG,CACnB,OAAOA,IAAM,KAAQA,IAAM,GAC7B,CAIA,SAASM,IAAS,CAAC,CAEnBA,GAAM,UAAU,WAAa,SAAUC,EAASC,EAAO,CACrDA,EAAQ,OAAOA,EAAU,IAAc,KAAK,MAAQA,EAEpD,IAAIC,EAAQ,IAAI,MAAMF,EAAU,aAAeC,CAAK,EACpD,MAAAC,EAAM,MAAQD,EACdC,EAAM,YAAcF,EACdE,CACR,EAEAH,GAAM,UAAU,IAAM,SAAUI,EAAM,CAKpC,IAJA,KAAK,KAAOA,EACZ,KAAK,MAAQ,EACb,KAAK,OAAS,CAAC,EAER,KAAK,MAAQ,KAAK,KAAK,QAAQ,CAEpC,KAAOR,IAAa,KAAK,KAAK,CAAC,GAC7B,KAAK,QAAQ,EAEf,IAAIF,EAAI,KAAK,KAAK,EACdW,EAAKX,EAAI,KAAK,KAAK,CAAC,EACpBY,EAAKD,EAAK,KAAK,KAAK,CAAC,EAQrBR,GAAYS,CAAE,GAChB,KAAK,OAAO,KAAK,CACf,KAAMhB,GAAU,UAChB,MAAOgB,CACT,CAAC,EACD,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,QAAQ,GACJT,GAAYQ,CAAE,GACvB,KAAK,OAAO,KAAK,CACf,KAAMf,GAAU,UAChB,MAAOe,CACT,CAAC,EACD,KAAK,QAAQ,EACb,KAAK,QAAQ,GACJR,GAAYH,CAAC,GACtB,KAAK,OAAO,KAAK,CACf,KAAMJ,GAAU,UAChB,MAAOI,CACT,CAAC,EACD,KAAK,QAAQ,GACJD,GAAQC,CAAC,GACfA,IAAM,KAAOD,GAAQ,KAAK,KAAK,CAAC,CAAC,EACpC,KAAK,OAAO,KAAK,CACf,KAAMH,GAAU,OAChB,MAAO,KAAK,WAAW,CACzB,CAAC,EACQS,IAAQL,CAAC,EAClB,KAAK,OAAO,KAAK,CACf,KAAMJ,GAAU,OAChB,MAAO,KAAK,WAAW,CACzB,CAAC,EACQK,GAAaD,CAAC,EACvB,KAAK,OAAO,KAAK,CACf,KAAMJ,GAAU,OAChB,MAAO,KAAK,eAAe,CAC7B,CAAC,EAED,KAAK,WAAW,wBAA0BI,CAAC,CAE/C,CAGA,YAAK,OAAO,KAAK,CAAE,KAAMJ,GAAU,GAAI,CAAC,EAEjC,KAAK,MACd,EAEAU,GAAM,UAAU,KAAO,SAAUO,EAAK,CAEpC,GADAA,EAAMA,GAAO,EACT,OAAK,MAAQA,GAAO,KAAK,KAAK,QAGlC,OAAO,KAAK,KAAK,OAAO,KAAK,MAAQA,CAAG,CAC1C,EAEAP,GAAM,UAAU,QAAU,UAAY,CACpC,IAAIQ,EAAU,KAAK,KAAK,EACxB,YAAK,OAAS,EACPA,CACT,EAEAR,GAAM,UAAU,WAAa,UAAY,CACvC,IAAIS,EAAS,GAEb,GAAI,KAAK,KAAK,IAAM,IAClBA,GAAU,KAAK,QAAQ,EAClBhB,GAAQ,KAAK,KAAK,CAAC,GACtB,KAAK,WAAW,iBAAiB,MAE9B,CACL,KAAOA,GAAQ,KAAK,KAAK,CAAC,GACxBgB,GAAU,KAAK,QAAQ,EAErB,KAAK,KAAK,IAAM,MAClBA,GAAU,KAAK,QAAQ,EAE3B,CAGA,KAAOhB,GAAQ,KAAK,KAAK,CAAC,GACxBgB,GAAU,KAAK,QAAQ,EAIzB,GAAK,KAAK,KAAK,IAAM,KAAO,KAAK,KAAK,IAAM,IAiB1C,IAhBAA,GAAU,KAAK,QAAQ,EAEjBhB,GAAQ,KAAK,KAAK,CAAC,GACrB,KAAK,KAAK,IAAM,KAChB,KAAK,KAAK,IAAM,KAClB,KAAK,WAAW,GAGd,KAAK,KAAK,IAAM,KAAO,KAAK,KAAK,IAAM,OACzCgB,GAAU,KAAK,QAAQ,GAGpBhB,GAAQ,KAAK,KAAK,CAAC,GACtB,KAAK,WAAW,iBAAiB,EAG5BA,GAAQ,KAAK,KAAK,CAAC,GACxBgB,GAAU,KAAK,QAAQ,EAG3B,OAAOA,CACT,EAEAT,GAAM,UAAU,eAAiB,UAAY,CAE3C,QADII,EAAO,GACJT,GAAa,KAAK,KAAK,CAAC,GAAKF,GAAQ,KAAK,KAAK,CAAC,GACrDW,GAAQ,KAAK,QAAQ,EAEvB,OAAOA,CACT,EAEAJ,GAAM,UAAU,WAAa,UAAY,CAIvC,QAHIU,EAAQ,KAAK,QAAQ,EACrBC,EAAS,GACTC,IACS,CACX,IAAIlB,EAAI,KAAK,QAAQ,EAIrB,GAHKA,GACH,KAAK,WAAW,sBAAsB,EAEpCkB,EAAQ,CACV,GAAIlB,IAAM,IAAK,CACb,IAAImB,EAAM,KAAK,KAAK,UAAU,KAAK,MAAQ,EAAG,KAAK,MAAQ,CAAC,EACvDA,EAAI,MAAM,aAAa,GAC1B,KAAK,WAAW,wBAAwB,EAE1C,KAAK,OAAS,EACdF,GAAU,OAAO,aAAa,SAASE,EAAK,EAAE,CAAC,CACjD,KAAO,CACL,IAAIC,EAAcvB,IAAQG,CAAC,EACvBoB,EACFH,GAAUG,EAEVH,GAAUjB,CAEd,CACAkB,EAAS,EACX,KAAO,IAAIlB,IAAMgB,EACf,MACShB,IAAM,KACfkB,EAAS,GAETD,GAAUjB,EAEd,CACA,OAAOiB,CACT,EAEAtB,GAAO,QAAUW,KCnRjB,IAAAe,GAAAC,GAAA,CAAAC,IAAAC,KAAA,UAASC,IAAQ,CAEjB,CAEAA,GAAK,UAAU,KAAO,OAEtBD,GAAO,QAAUC,KCNjB,IAAAC,GAAAC,GAAA,CAAAC,IAAAC,KAAA,KAAIC,IAAO,KAEPC,IAAkB,CACpB,OAAQ,GACR,OAAQ,GACR,QAAW,GACX,UAAa,GACb,KAAQ,EACV,EAEA,SAASC,GAAcC,EAAOC,EAAM,CAClC,GAAI,CAACH,IAAgBG,CAAI,EACvB,MAAM,MAAM,qBAAwBA,EAAO,GAAI,EAEjD,KAAK,MAAQD,EACb,KAAK,UAAYC,CACnB,CAEAF,GAAa,UAAY,OAAO,OAAOF,IAAK,SAAS,EAErDE,GAAa,UAAU,KAAO,eAE9BH,GAAO,QAAUG,KCtBjB,IAAAG,GAAAC,GAAA,CAAAC,IAAAC,KAAA,KAAIC,IAAO,KAEX,SAASC,GAAcC,EAAIC,EAAM,CAC/B,KAAK,GAAKD,EACV,KAAK,KAAOC,GAAQ,CAAC,CACvB,CAEAF,GAAa,UAAY,OAAO,OAAOD,IAAK,SAAS,EAErDC,GAAa,UAAU,KAAO,eAE9BF,GAAO,QAAUE,KCXjB,IAAAG,GAAAC,GAAA,CAAAC,IAAAC,KAAA,KAAIC,IAAO,KAEX,SAASC,GAAWC,EAAIC,EAAU,CAChC,KAAK,GAAKD,EACV,KAAK,SAAWC,CAClB,CAEAF,GAAU,UAAY,OAAO,OAAOD,IAAK,SAAS,EAElDC,GAAU,UAAU,KAAO,YAE3BF,GAAO,QAAUE,KCXjB,IAAAG,GAAAC,GAAA,CAAAC,IAAAC,KAAA,KAAIC,IAAO,KAEX,SAASC,GAAYC,EAAM,CACzB,KAAK,KAAOA,CACd,CAEAD,GAAW,UAAY,OAAO,OAAOD,IAAK,SAAS,EAEnDC,GAAW,UAAU,KAAO,aAE5BF,GAAO,QAAUE,KCVjB,IAAAE,GAAAC,GAAA,CAAAC,IAAAC,KAAA,KAAIC,IAAO,KAEX,SAASC,GAAcC,EAAMC,EAAM,CACjC,KAAK,KAAOD,EACZ,KAAK,KAAOC,CACd,CAEAF,GAAa,UAAY,OAAO,OAAOD,IAAK,SAAS,EAErDC,GAAa,UAAU,KAAO,eAE9BF,GAAO,QAAUE,KCXjB,IAAAG,GAAAC,GAAA,CAAAC,IAAAC,KAAA,KAAIC,IAAO,KAEX,SAASC,GAAWC,EAAO,CACzB,KAAK,MAAQA,CACf,CAEAD,GAAU,UAAY,OAAO,OAAOD,IAAK,SAAS,EAElDC,GAAU,UAAU,KAAO,YAE3BF,GAAO,QAAUE,KCVjB,IAAAE,GAAAC,GAAA,CAAAC,IAAAC,KAAA,KAAIC,IAAO,KAEX,SAASC,GAAiBC,EAAWC,EAAQC,EAAO,CAClD,KAAK,UAAYF,EACjB,KAAK,SAAWC,EAChB,KAAK,UAAYC,CACnB,CAEAH,GAAgB,UAAY,OAAO,OAAOD,IAAK,SAAS,EAExDC,GAAgB,UAAU,KAAO,kBAEjCF,GAAO,QAAUE,KCZjB,IAAAI,GAAAC,GAAA,CAAAC,IAAAC,KAAA,KAAIC,IAAO,KAEX,SAASC,GAAgBC,EAAMC,EAAM,CACnC,KAAK,KAAOD,EACZ,KAAK,KAAOC,CACd,CAEAF,GAAe,UAAY,OAAO,OAAOD,IAAK,SAAS,EAEvDC,GAAe,UAAU,KAAO,iBAEhCF,GAAO,QAAUE,KCXjB,IAAAG,GAAAC,GAAA,CAAAC,IAAAC,KAAA,KAAIC,IAAO,KAEX,SAASC,GAAWC,EAAQ,CAC1B,KAAK,OAASA,CAChB,CAEAD,GAAU,UAAY,OAAO,OAAOD,IAAK,SAAS,EAElDC,GAAU,UAAU,KAAO,YAE3BF,GAAO,QAAUE,KCVjB,IAAAE,GAAAC,GAAA,CAAAC,IAAAC,KAAA,KAAIC,GAAY,KAEZC,IAAQ,KACRC,GAAe,KACfC,GAAe,KACfC,IAAY,KACZC,GAAa,KACbC,IAAe,KACfC,IAAY,KACZC,IAAkB,KAClBC,IAAiB,KACjBC,IAAY,KAgFhB,SAASC,IAAU,CACjB,KAAK,MAAQ,IAAIV,IACjB,KAAK,OAAS,IAChB,CAEAU,GAAO,UAAU,QAAU,UAAY,CACrC,OAAO,KAAK,OAAO,CAAC,CACtB,EAEAA,GAAO,UAAU,KAAO,UAAY,CAClC,OAAO,KAAK,OAAO,CAAC,CACtB,EAEAA,GAAO,UAAU,KAAO,UAAY,CAClC,GAAI,KAAK,OAAO,QAEd,QADIC,EAAQ,KAAK,OAAO,CAAC,EAChBC,EAAI,EAAGA,EAAI,UAAU,OAAQA,GAAK,EACzC,GAAID,EAAM,QAAU,UAAUC,CAAC,EAC7B,MAAO,GAIf,EAEAF,GAAO,UAAU,QAAU,SAAU,EAAG,CACtC,OAAO,KAAK,OAAO,MAAM,CAC3B,EAEAA,GAAO,UAAU,OAAS,SAAU,EAAG,CACrC,GAAI,CAAC,KAAK,KAAK,CAAC,EACd,MAAM,MAAM,YAAc,CAAC,EAE7B,OAAO,KAAK,QAAQ,CACtB,EAEAA,GAAO,UAAU,MAAQ,UAAY,CACnC,OAAO,KAAK,QAAQ,EAAE,OAASX,GAAU,GAC3C,EAEAW,GAAO,UAAU,MAAQ,SAAUG,EAAM,CACvC,YAAK,OAAS,KAAK,MAAM,IAAIA,CAAI,EAC1B,KAAK,QAAQ,CACtB,EAEAH,GAAO,UAAU,QAAU,UAAY,CAErC,QADII,EAAS,CAAC,EACP,CAAC,KAAK,MAAM,GACjBA,EAAO,KAAK,KAAK,WAAW,CAAC,EACzB,KAAK,KAAK,GAAG,GACf,KAAK,QAAQ,EAGjB,YAAK,IAAI,EACF,IAAIL,IAAUK,CAAM,CAC7B,EAEAJ,GAAO,UAAU,WAAa,UAAY,CACxC,IAAIK,EAAO,KAAK,QAAQ,EACxB,OAAIA,aAAgBX,IAAc,KAAK,KAAK,GAAG,GAC7C,KAAK,QAAQ,EACN,IAAII,IAAeO,EAAK,KAAM,KAAK,WAAW,CAAC,GAEjDA,CACT,EAEAL,GAAO,UAAU,QAAU,UAAY,CACrC,IAAIM,EAAY,KAAK,UAAU,EAC/B,GAAI,KAAK,KAAK,GAAG,EAAG,CAClB,KAAK,QAAQ,EACb,IAAIC,EAAS,KAAK,QAAQ,EAC1B,KAAK,OAAO,GAAG,EACf,IAAIC,EAAQ,KAAK,QAAQ,EACzB,OAAO,IAAIX,IAAgBS,EAAWC,EAAQC,CAAK,CACrD,CACA,OAAOF,CACT,EAEAN,GAAO,UAAU,UAAY,UAAY,CACvC,IAAIK,EAAO,KAAK,WAAW,EAC3B,GAAI,KAAK,KAAK,IAAI,EAAG,CACnB,IAAII,EAAK,KAAK,QAAQ,EAClBC,EAAQ,KAAK,UAAU,EAC3B,OAAO,IAAIlB,GAAaiB,EAAG,MAAO,CAACJ,EAAMK,CAAK,CAAC,CACjD,CACA,OAAOL,CACT,EAEAL,GAAO,UAAU,WAAa,UAAY,CACxC,IAAIK,EAAO,KAAK,WAAW,EAC3B,GAAI,KAAK,QAAQ,EAAE,QAAU,MAAO,CAClC,IAAII,EAAK,KAAK,QAAQ,EAClBC,EAAQ,KAAK,WAAW,EAC5B,OAAO,IAAIlB,GAAaiB,EAAG,MAAO,CAACJ,EAAMK,CAAK,CAAC,CACjD,CACA,OAAOL,CACT,EAEAL,GAAO,UAAU,WAAa,UAAY,CACxC,IAAIK,EAAO,KAAK,UAAU,EAC1B,GAAI,KAAK,KAAK,IAAI,EAAG,CACnB,IAAII,EAAK,KAAK,QAAQ,EAClBC,EAAQ,KAAK,WAAW,EAC5B,OAAO,IAAIlB,GAAaiB,EAAG,MAAO,CAACJ,EAAMK,CAAK,CAAC,CACjD,CACA,OAAOL,CACT,EAEAL,GAAO,UAAU,UAAY,UAAY,CACvC,IAAIK,EAAO,KAAK,WAAW,EAC3B,GAAI,KAAK,KAAK,GAAG,EAAG,CAClB,IAAII,EAAK,KAAK,QAAQ,EAClBC,EAAQ,KAAK,UAAU,EAC3B,OAAO,IAAIlB,GAAaiB,EAAG,MAAO,CAACJ,EAAMK,CAAK,CAAC,CACjD,CACA,OAAOL,CACT,EAEAL,GAAO,UAAU,WAAa,UAAY,CACxC,IAAIK,EAAO,KAAK,WAAW,EAC3B,GAAI,KAAK,KAAK,IAAI,EAAG,CACnB,IAAII,EAAK,KAAK,QAAQ,EAClBC,EAAQ,KAAK,WAAW,EAC5B,OAAO,IAAIlB,GAAaiB,EAAG,MAAO,CAACJ,EAAMK,CAAK,CAAC,CACjD,CACA,OAAOL,CACT,EAEAL,GAAO,UAAU,WAAa,UAAY,CACxC,IAAIK,EAAO,KAAK,WAAW,EAC3B,GAAI,KAAK,KAAK,GAAG,EAAG,CAClB,IAAII,EAAK,KAAK,QAAQ,EAClBC,EAAQ,KAAK,WAAW,EAC5B,OAAO,IAAIlB,GAAaiB,EAAG,MAAO,CAACJ,EAAMK,CAAK,CAAC,CACjD,CACA,OAAOL,CACT,EAEAL,GAAO,UAAU,WAAa,UAAY,CACxC,IAAIK,EAAO,KAAK,MAAM,EACtB,GAAI,KAAK,KAAK,KAAM,MAAO,KAAM,MAAO,KAAM,KAAM,IAAK,GAAG,EAAG,CAC7D,IAAII,EAAK,KAAK,QAAQ,EAClBC,EAAQ,KAAK,MAAM,EACvB,OAAO,IAAIlB,GAAaiB,EAAG,MAAO,CAACJ,EAAMK,CAAK,CAAC,CACjD,CACA,OAAOL,CACT,EAEAL,GAAO,UAAU,MAAQ,UAAY,CACnC,IAAIK,EAAO,KAAK,SAAS,EACzB,GAAI,KAAK,KAAK,KAAM,KAAM,KAAK,EAAG,CAChC,IAAII,EAAK,KAAK,QAAQ,EAClBC,EAAQ,KAAK,MAAM,EACvB,OAAO,IAAIlB,GAAaiB,EAAG,MAAO,CAACJ,EAAMK,CAAK,CAAC,CACjD,CACA,OAAOL,CACT,EAEAL,GAAO,UAAU,SAAW,UAAY,CAEtC,QADIK,EAAO,KAAK,eAAe,EACxB,KAAK,KAAK,IAAK,GAAG,GAAG,CAC1B,IAAII,EAAK,KAAK,QAAQ,EACtBJ,EAAO,IAAIb,GAAaiB,EAAG,MAAO,CAACJ,EAAM,KAAK,eAAe,CAAC,CAAC,CACjE,CACA,OAAOA,CACT,EAEAL,GAAO,UAAU,eAAiB,UAAY,CAG5C,QAFIS,EAAIC,EACJL,EAAO,KAAK,MAAM,EACf,KAAK,KAAK,IAAK,IAAK,GAAG,GAC5BI,EAAK,KAAK,QAAQ,EAClBJ,EAAO,IAAIb,GAAaiB,EAAG,MAAO,CAACJ,EAAM,KAAK,MAAM,CAAC,CAAC,EAOxD,OAAI,KAAK,QAAQ,EAAE,OAAShB,GAAU,QAClC,KAAK,KAAK,GAAG,GACZ,EAAEgB,EAAK,gBAAgBd,KAAiB,KAAK,QAAQ,EAAE,OAASF,GAAU,QAE7EqB,EAAQ,KAAK,eAAe,EACrB,IAAIlB,GAAa,IAAK,CAACa,EAAMK,CAAK,CAAC,GAGrCL,CACT,EAEAL,GAAO,UAAU,MAAQ,UAAY,CACnC,GAAI,KAAK,KAAK,IAAK,IAAK,GAAG,EAAG,CAC5B,IAAIS,EAAK,KAAK,QAAQ,EAClBC,EAAQ,KAAK,MAAM,EACvB,OAAO,IAAIjB,IAAUgB,EAAG,MAAOC,CAAK,CACtC,CACA,OAAO,KAAK,IAAI,CAClB,EAEAV,GAAO,UAAU,IAAM,UAAY,CACjC,IAAIK,EAAO,KAAK,UAAU,EAC1B,GAAI,KAAK,KAAK,IAAK,IAAI,EAAG,CACxB,IAAII,EAAK,KAAK,QAAQ,EAClBC,EAAQ,KAAK,MAAM,EACvB,OAAO,IAAIlB,GAAaiB,EAAG,MAAO,CAACJ,EAAMK,CAAK,CAAC,CACjD,CACA,OAAOL,CACT,EAEAL,GAAO,UAAU,UAAY,UAAY,CACvC,IAAIK,EAAO,KAAK,OAAO,EACvB,GAAI,KAAK,KAAK,GAAG,EAAG,CAClB,IAAII,EAAK,KAAK,QAAQ,EACtB,OAAO,IAAIjB,GAAaiB,EAAG,MAAO,CAACJ,CAAI,CAAC,CAC1C,CACA,OAAOA,CACT,EAEAL,GAAO,UAAU,OAAS,UAAY,CACpC,IAAIW,EAAU,KAAK,QAAQ,EAC3B,GAAIA,EAAQ,OAAStB,GAAU,OAAQ,CACrC,IAAIuB,EAAS,KAAK,QAAQ,EACtBC,EAAO,KAAK,aAAaD,CAAM,EACnC,OAAOC,CACT,CACA,OAAO,KAAK,OAAO,CACrB,EAEAb,GAAO,UAAU,aAAe,SAAUc,EAAa,CACrD,IAAIC,EAAOD,EAAY,MACvB,GAAI,KAAK,KAAK,GAAG,EAAG,CAClB,KAAK,QAAQ,EAEb,QADIE,EAAS,CAAC,EACP,CAAC,KAAK,KAAK,GAAG,GAAK,CAAC,KAAK,MAAM,GACpCA,EAAO,KAAK,KAAK,WAAW,CAAC,EACzB,KAAK,KAAK,GAAG,GACf,KAAK,QAAQ,EAGjB,YAAK,OAAO,GAAG,EACR,IAAIrB,IAAaoB,EAAMC,CAAM,CACtC,CACA,OAAO,IAAItB,GAAWqB,CAAI,CAC5B,EAEAf,GAAO,UAAU,OAAS,UAAY,CACpC,OAAI,KAAK,QAAQ,EAAE,OAASX,GAAU,OAC7B,IAAIE,GAAa,KAAK,QAAQ,EAAE,MAAO,QAAQ,EAEjD,KAAK,MAAM,CACpB,EAEAS,GAAO,UAAU,MAAQ,UAAY,CACnC,GAAI,KAAK,KAAK,GAAG,EAAG,CAClB,KAAK,QAAQ,EAEb,QADIgB,EAAS,CAAC,EACP,CAAC,KAAK,KAAK,GAAG,GAAK,CAAC,KAAK,MAAM,GACpCA,EAAO,KAAK,KAAK,WAAW,CAAC,EACzB,KAAK,KAAK,GAAG,GACf,KAAK,QAAQ,EAGjB,YAAK,OAAO,GAAG,EACR,IAAIpB,IAAUoB,CAAM,CAC7B,CACA,OAAO,KAAK,OAAO,CACrB,EAEAhB,GAAO,UAAU,OAAS,UAAY,CACpC,IAAIiB,EAAQ,KAAK,QAAQ,EACzB,OAAIA,EAAM,OAAS5B,GAAU,OACpB,IAAIE,GAAa,KAAK,QAAQ,EAAE,MAAO,QAAQ,EAEjD,KAAK,YAAY,CAC1B,EAEAS,GAAO,UAAU,YAAc,UAAY,CACzC,IAAIiB,EAAQ,KAAK,QAAQ,EACzB,GAAIA,EAAM,QAAU,IAAK,CACvB,KAAK,QAAQ,EACb,IAAIZ,EAAO,KAAK,WAAW,EAC3B,YAAK,OAAO,GAAG,EACRA,CACT,CACA,OAAO,KAAK,IAAI,CAClB,EAEAL,GAAO,UAAU,IAAM,UAAY,CACjC,IAAIiB,EAAQ,KAAK,QAAQ,EACzB,GAAIA,EAAM,OAAS5B,GAAU,IAC3B,MAAM,MAAM,8BAA8B,CAE9C,EAEAD,GAAO,QAAUY,KChYjB,IAAAkB,GAAAC,GAAA,CAAAC,IAAAC,KAAA,CAAAA,GAAO,QAAU,CACf,UAAW,KACX,eAAgB,KAChB,UAAW,KACX,gBAAiB,KACjB,aAAc,KACd,aAAc,KACd,KAAM,KACN,aAAc,KACd,WAAY,KACZ,UAAW,IACb,ICXA,IAAAC,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cASAA,GAAO,QAAQ,MAAQ,KACvBA,GAAO,QAAQ,OAAS,KACxBA,GAAO,QAAQ,UAAY,OCX3B,IAAAC,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,GAAS,OAAO,UAAU,eAC1BC,GAAQ,OAAO,UAAU,SACzBC,GAAiB,OAAO,eACxBC,GAAO,OAAO,yBAEdC,GAAU,SAAiBC,EAAK,CACnC,OAAI,OAAO,MAAM,SAAY,WACrB,MAAM,QAAQA,CAAG,EAGlBJ,GAAM,KAAKI,CAAG,IAAM,gBAC5B,EAEIC,GAAgB,SAAuBC,EAAK,CAC/C,GAAI,CAACA,GAAON,GAAM,KAAKM,CAAG,IAAM,kBAC/B,MAAO,GAGR,IAAIC,EAAoBR,GAAO,KAAKO,EAAK,aAAa,EAClDE,EAAmBF,EAAI,aAAeA,EAAI,YAAY,WAAaP,GAAO,KAAKO,EAAI,YAAY,UAAW,eAAe,EAE7H,GAAIA,EAAI,aAAe,CAACC,GAAqB,CAACC,EAC7C,MAAO,GAKR,IAAIC,EACJ,IAAKA,KAAOH,EAAK,CAEjB,OAAO,OAAOG,EAAQ,KAAeV,GAAO,KAAKO,EAAKG,CAAG,CAC1D,EAGIC,GAAc,SAAqBC,EAAQC,EAAS,CACnDX,IAAkBW,EAAQ,OAAS,YACtCX,GAAeU,EAAQC,EAAQ,KAAM,CACpC,WAAY,GACZ,aAAc,GACd,MAAOA,EAAQ,SACf,SAAU,EACX,CAAC,EAEDD,EAAOC,EAAQ,IAAI,EAAIA,EAAQ,QAEjC,EAGIC,GAAc,SAAqBP,EAAKQ,EAAM,CACjD,GAAIA,IAAS,YACZ,GAAKf,GAAO,KAAKO,EAAKQ,CAAI,GAEnB,GAAIZ,GAGV,OAAOA,GAAKI,EAAKQ,CAAI,EAAE,UAJvB,QAQF,OAAOR,EAAIQ,CAAI,CAChB,EAEAhB,GAAO,QAAU,SAASiB,GAAS,CAClC,IAAIH,EAASE,EAAME,EAAKC,EAAMC,EAAaC,EACvCR,EAAS,UAAU,CAAC,EACpBS,EAAI,EACJC,EAAS,UAAU,OACnBC,EAAO,GAaX,IAVI,OAAOX,GAAW,YACrBW,EAAOX,EACPA,EAAS,UAAU,CAAC,GAAK,CAAC,EAE1BS,EAAI,IAEDT,GAAU,MAAS,OAAOA,GAAW,UAAY,OAAOA,GAAW,cACtEA,EAAS,CAAC,GAGJS,EAAIC,EAAQ,EAAED,EAGpB,GAFAR,EAAU,UAAUQ,CAAC,EAEjBR,GAAW,KAEd,IAAKE,KAAQF,EACZI,EAAMH,GAAYF,EAAQG,CAAI,EAC9BG,EAAOJ,GAAYD,EAASE,CAAI,EAG5BH,IAAWM,IAEVK,GAAQL,IAASZ,GAAcY,CAAI,IAAMC,EAAcf,GAAQc,CAAI,KAClEC,GACHA,EAAc,GACdC,EAAQH,GAAOb,GAAQa,CAAG,EAAIA,EAAM,CAAC,GAErCG,EAAQH,GAAOX,GAAcW,CAAG,EAAIA,EAAM,CAAC,EAI5CN,GAAYC,EAAQ,CAAE,KAAMG,EAAM,SAAUC,EAAOO,EAAMH,EAAOF,CAAI,CAAE,CAAC,GAG7D,OAAOA,EAAS,KAC1BP,GAAYC,EAAQ,CAAE,KAAMG,EAAM,SAAUG,CAAK,CAAC,GAQvD,OAAON,CACR,ICpHA,IAAAY,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cACAA,GAAO,QAAU,SAAUC,EAAM,CAC/B,IAAIC,EAAO,KACPC,EAAM,CAAC,EACX,KAAK,OAAO,KAAK,QAAQ,2BAA4B,UAAY,CAC/DA,EAAMF,EAAK,MAAM,IAAI,SAAUG,EAAI,CACjC,OAAOF,EAAK,KAAKE,CAAE,CACrB,CAAC,CACH,CAAC,EACD,IAAIC,EAAY,IAAMF,EAAI,KAAK,GAAG,EAAI,IAEtC,OAAI,KAAK,QAAQ,IACRE,EAEF,KAAK,QAAQ,QAAU,IAAMA,EAAY,GAClD,ICfA,IAAAC,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cAEAA,GAAO,QAAU,SAAUC,EAAM,CAC/B,MAAO,UAAYA,EAAK,KAAO,QAAU,KAAK,KAAKA,EAAK,IAAI,CAC9D,ICJA,IAAAC,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cAEAA,GAAO,QAAU,SAAUC,EAAM,CAC/B,IAAIC,EAAY,MAAQ,KAAK,KAAKD,EAAK,SAAS,EAAI,IAChDE,EAAW,KAAK,KAAKF,EAAK,QAAQ,EAClCG,EAAY,KAAK,KAAKH,EAAK,SAAS,EACxC,MAAO,IAAMC,EAAY,OAASC,EAAW,QAAUC,EAAY,KACrE,ICPA,IAAAC,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cACAA,GAAO,QAAU,SAAUC,EAAM,CAC/B,OAAI,KAAK,QAAQ,IACRA,EAAK,MAEP,KAAK,QAAQ,QAAU,IAAMA,EAAK,MAAQ,GACnD,ICNA,IAAAC,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cACA,IAAIC,IAAa,KAAqB,UAAU,WAE5CC,GAAgB,SAAUC,EAAM,CAClC,MAAO,+BAAiC,KAAK,KAAK,IAAIF,IAAWE,EAAK,IAAI,CAAC,EAAI,MAAQA,EAAK,KAAO,IACrG,EAEAH,GAAO,QAAU,SAAUG,EAAM,CAC/B,IAAIC,EAAO,KAIPC,EAASH,GAAc,KAAK,KAAMC,CAAI,EACtCG,EAAO,CAAC,EACZ,YAAK,OAAO,KAAK,QAAQ,0BAA2B,UAAY,CAC9DA,EAAOH,EAAK,KAAK,IAAI,SAAUI,EAAK,CAClC,OAAOH,EAAK,KAAKG,CAAG,CACtB,CAAC,CACH,CAAC,EACMF,EAAS,IAAMC,EAAK,KAAK,IAAI,EAAI,GAC1C,EAEAN,GAAO,QAAQ,cAAgBE,KCtB/B,IAAAM,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cAEAA,GAAO,QAAU,CAEf,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,YAGL,IAAK,YACL,KAAM,aACN,IAAK,aAEL,KAAM,YACN,IAAO,aACP,KAAM,aAGN,IAAK,WACL,IAAK,cACL,KAAM,gBACN,KAAM,mBACN,MAAO,gBACP,KAAM,QACN,MAAO,mBACP,KAAM,WAGN,KAAM,aACN,KAAM,YACN,MAAO,oBACT,ICnCA,IAAAC,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,IAAY,KAEhBD,GAAO,QAAU,SAAUE,EAAM,CAC/B,GAAI,KAAK,QAAQ,IACf,MAAO,CAAC,IAAM,KAAK,KAAKA,EAAK,KAAK,CAAC,CAAC,EAAGA,EAAK,GAAI,KAAK,KAAKA,EAAK,KAAK,CAAC,CAAC,EAAI,GAAG,EAAE,KAAK,GAAG,EAGzF,IAAIC,EAAgBF,IAAUC,EAAK,EAAE,EAErC,GAAI,CAACC,EACH,MAAM,UAAU,uBAAuB,EAIzC,OAAO,KAAK,aAAa,CACvB,KAAMA,EACN,KAAMD,EAAK,IACb,CAAC,CAEH,ICrBA,IAAAE,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cAEAA,GAAO,QAAU,SAAUC,EAAM,CAC/B,IAAIC,EAAKD,EAAK,KACd,MAAO,8BAAgCC,EAAK,eAC9C,ICLA,IAAAC,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cAEAA,GAAO,QAAU,CACf,IAAK,WACL,IAAK,WACL,IAAK,eACP,ICNA,IAAAC,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,GAAiB,KAErBD,GAAO,QAAU,SAAUE,EAAM,CAC/B,GAAI,KAAK,QAAQ,IACf,OAAOA,EAAK,GAAK,KAAK,KAAKA,EAAK,QAAQ,EAG1C,GAAI,EAAEA,EAAK,MAAMD,IACf,MAAM,IAAI,YAAYC,EAAK,GAAK,kBAAkB,EAGpD,IAAIC,EAAgBF,GAAeC,EAAK,EAAE,EAE1C,OAAO,KAAK,aAAa,CACvB,KAAMC,EACN,KAAM,CAACD,EAAK,QAAQ,CACtB,CAAC,CAEH,ICpBA,IAAAE,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cACA,IAAIC,GAAS,KAETC,IAAQ,CACV,UAAW,KACX,eAAgB,KAChB,gBAAiB,KACjB,aAAc,KACd,aAAc,KACd,aAAc,KACd,WAAY,KACZ,UAAW,IACb,EAEIC,GAAc,SAAUC,EAAOC,EAAS,CAC1C,KAAK,MAAQD,EACb,KAAK,QAAUH,GAAO,CACpB,QAAS,aACT,IAAK,GACL,2BAA4B,GAC5B,0BAA2B,EAC7B,EAAGI,CAAO,CACZ,EAEAJ,GAAOE,GAAY,UAAWD,GAAK,EAGnCC,GAAY,UAAU,KAAO,SAAUG,EAAM,CAC3C,GAAI,EAAEA,EAAK,QAAQ,MACjB,MAAM,IAAI,UAAU,iBAAmBA,EAAK,KAAO,qBAAqB,EAE1E,OAAO,KAAKA,EAAK,IAAI,EAAEA,CAAI,CAC7B,EAEAH,GAAY,UAAU,OAAS,SAAUI,EAAMC,EAAI,CACjD,IAAIC,EAAS,KAAK,QAAQ,IACtBF,IACF,KAAK,QAAQ,IAAM,IAErBC,EAAG,EACCD,IACF,KAAK,QAAQ,IAAME,EAEvB,EAEAT,GAAO,QAAUG,KC7CjB,IAAAO,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,IAAS,KAAqB,OAC9BC,IAAc,KACdC,IAAS,KAEb,SAASC,GAAeC,EAASC,EAAM,CACrC,KAAK,WAAa,CAAC,EACnB,KAAK,KAAOA,GAAQ,CAAC,EACrB,KAAK,YAAc,IAAIJ,IAAY,KAAMG,CAAO,CAClD,CAEAD,GAAc,UAAU,QAAU,SAAUE,EAAM,CAChD,YAAK,KAAOH,IAAO,KAAK,KAAMG,CAAI,EAC3B,IACT,EAEAF,GAAc,UAAU,QAAU,SAAUG,EAAW,CACrD,GAAI,CAACA,GAAa,EAAE,OAAOA,GAAc,UAAY,OAAOA,GAAc,YACxE,MAAM,UAAU,6BAA6B,EAE/C,GAAI,OAAOA,EAAU,SAAY,WAC/B,MAAM,UAAU,sCAAsC,EAWxD,KAAK,KAAK,GAAKA,EACf,KAAK,KAAK,cAAgB,CACxB,YAAa,SAAUC,EAAQC,EAAOC,EAAI,CACxC,GAAIF,KAAUC,EACZ,OAAOA,EAAMD,CAAM,EAErB,GAAIA,KAAUE,EACZ,OAAOA,EAAGF,CAAM,EAElB,MAAM,YAAY,WAAaA,EAAS,gBAAgB,CAC1D,EACA,cAAe,SAAUG,EAAIC,EAAM,CACjC,GAAI,OAAOD,GAAO,WAChB,MAAM,YAAY,WAAaC,EAAO,sBAAsB,EAE9D,OAAOD,CACT,CACF,EACA,KAAK,KAAK,eAAiB,KAAK,KAAK,gBAAkB,UAAY,CAAC,EAEpE,IAAIE,EAAW,OAAO,KAAK,KAAK,IAAI,EAAE,IAAI,SAAUD,EAAM,CACxD,MAAO,OAASA,EAAO,YAAcA,EAAO,IAC9C,CAAC,EAGD,GAAI,CAAC,KAAK,WAAW,OACnB,MAAM,MAAM,wGAAwG,EAItH,KAAK,WAAW,KAAK,WAAW,OAAS,CAAC,EAAI,UAAY,KAAK,WAAW,KAAK,WAAW,OAAS,CAAC,EAEpG,IAAIE,EAAO,KAAK,WAAW,KAAK,GAAG,EAC/BC,EAAcF,EAAS,KAAK;AAAA,CAAI,EAAI;AAAA,EAAO,CAC7C,WACA,6BACA,0BACA,4BACA,OAASC,EACT,OACA,YAAcA,EAAO,IACrB,GACF,EAAE,KAAK;AAAA,CAAI,EAGPE,EAAU,IAAI,SAAS,OAAQD,CAAW,EAC9C,OAAOC,EAAQ,KAAK,IAAI,CAE1B,EAEAZ,GAAc,UAAU,MAAQ,SAAUU,EAAM,CAC9C,IAAIG,EAAO,KACPC,EAAU,IAAIjB,IAAO,EAAE,MAAMa,CAAI,EACrC,YAAK,WAAaI,EAAQ,OAAO,IAAI,SAAUC,EAAW,CACxD,OAAOF,EAAK,YAAY,KAAKE,CAAS,CACxC,CAAC,EACM,IACT,EAEAnB,GAAO,QAAUI,KC5FjB,IAAAgB,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cAOAA,GAAO,QAAU,OCPjB,IAAAC,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cACAA,GAAO,QAAU,UAAY,CAC3B,IAAIC,EAAO,OAAO,OAAO,IAAI,EAE7B,OAAAA,EAAK,QAAU,SAAUC,EAAG,CAC1B,GAAI,OAAOA,GAAM,SACf,MAAM,IAAI,UAAU,4CAA4C,EAElE,OAAO,OAAOA,CAAC,CACjB,EAEAD,EAAK,IAAM,SAAUC,EAAGC,EAAG,CACzB,OAAOD,EAAIC,CACb,EACAF,EAAK,IAAM,SAAUC,EAAGC,EAAG,CACzB,OAAOD,EAAIC,CACb,EACAF,EAAK,IAAM,SAAUC,EAAGC,EAAG,CACzB,OAAOD,EAAIC,CACb,EACAF,EAAK,IAAM,SAAUC,EAAGC,EAAG,CACzB,OAAOD,EAAIC,CACb,EACAF,EAAK,IAAM,SAAUC,EAAGC,EAAG,CACzB,OAAOD,EAAIC,CACb,EACAF,EAAK,UAAY,SAAUC,EAAG,CAE5B,QADIE,EAAM,EACDC,EAAI,EAAGA,GAAKH,EAAGG,GAAK,EAC3BD,GAAOC,EAET,OAAOD,CACT,EAGAH,EAAK,QAAU,SAAUC,EAAGI,EAAM,CAChC,IAAIC,EAAMD,EAAO,EAKjB,GAJIC,IACFD,EAAO,CAACA,GAGNA,IAAS,EACX,MAAM,IAAI,MAAM,uBAAuB,EAEzC,GAAIJ,EAAI,GAAM,KAAK,IAAII,CAAI,EAAI,IAAM,EACnC,MAAM,IAAI,MAAM,sCAAsC,EAIxD,GAAIJ,IAAM,EACR,MAAO,GAET,GAAI,CAAC,SAASA,CAAC,EACb,OAAOK,EAAM,EAAIL,EAGnB,IAAIM,EAAI,KAAK,IAAI,KAAK,IAAIN,CAAC,EAAG,EAAII,CAAI,EAGtC,OAAAE,EAAIN,EAAI,EAAI,CAACM,EAAIA,EACVD,EAAM,EAAIC,EAAIA,CACvB,EAGAP,EAAK,UAAY,SAAUC,EAAGC,EAAG,CAC/B,OAAOD,GAAKC,CACd,EACAF,EAAK,WAAa,SAAUC,EAAGC,EAAG,CAEhC,OAAOD,GAAKC,CAEd,EACAF,EAAK,WAAa,SAAUC,EAAGC,EAAG,CAChC,OAAOD,GAAKC,CACd,EAGAF,EAAK,UAAY,SAAUC,EAAGC,EAAG,CAE/B,OAAOD,EAAIC,CAEb,EACAF,EAAK,WAAa,SAAUC,EAAGC,EAAG,CAEhC,OAAOD,EAAIC,CAEb,EACAF,EAAK,WAAa,SAAUC,EAAGC,EAAG,CAEhC,OAAOD,EAAIC,CAEb,EAGAF,EAAK,SAAW,SAAUC,EAAGC,EAAG,CAC9B,OAAOD,EAAIC,CACb,EACAF,EAAK,cAAgB,SAAUC,EAAGC,EAAG,CACnC,OAAOD,GAAKC,CACd,EACAF,EAAK,YAAc,SAAUC,EAAGC,EAAG,CACjC,OAAOD,EAAIC,CACb,EACAF,EAAK,iBAAmB,SAAUC,EAAGC,EAAG,CACtC,OAAOD,GAAKC,CACd,EACAF,EAAK,MAAQ,SAAUC,EAAGC,EAAG,CAE3B,OAAOD,GAAKC,CAEd,EACAF,EAAK,cAAgB,SAAUC,EAAGC,EAAG,CACnC,OAAOD,IAAMC,CACf,EACAF,EAAK,SAAW,SAAUC,EAAGC,EAAG,CAE9B,OAAOD,GAAKC,CAEd,EACAF,EAAK,iBAAmB,SAAUC,EAAGC,EAAG,CACtC,OAAOD,IAAMC,CACf,EAGAF,EAAK,WAAa,SAAUC,EAAGC,EAAG,CAChC,OAAQD,GAAKC,CACf,EACAF,EAAK,UAAY,SAAUC,EAAGC,EAAG,CAC/B,OAAQD,GAAKC,CACf,EACAF,EAAK,mBAAqB,SAAUC,EAAGC,EAAG,CACxC,OAAQD,IAAMC,CAChB,EAGAF,EAAK,SAAW,SAAUC,EAAG,CAC3B,MAAO,CAACA,CACV,EACAD,EAAK,SAAW,SAAUC,EAAG,CAC3B,OAAOA,CACT,EAEOD,CACT,IC/IA,IAAAQ,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,IAAgB,KAChBC,GAAO,KAAqB,EAEhC,SAASC,IAAcC,EAAO,CAC5B,OAAO,KAAKA,CAAK,EAAE,QAAQ,SAAUC,EAAG,CACtC,IAAIC,EAAQF,EAAMC,CAAC,EACnBD,EAAMC,CAAC,EAAIH,GAAK,QAAQI,CAAK,CAC/B,CAAC,CACH,CAEAN,GAAO,QAAU,SAAUO,EAAY,CACrC,OAAO,IAAIN,IAAc,EACtB,QAAQ,CACP,eAAgBE,GAClB,CAAC,EACA,MAAMI,CAAU,EAChB,QAAQL,EAAI,CACjB,EAEAF,GAAO,QAAQ,KAAOE,KCrBtB,IAAAM,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cASAA,GAAO,QAAU,OCTjB,IAAAC,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cACAA,GAAO,QAAU,SAAUC,EAAM,CAC/B,IAAIC,EAAO,KACPC,EAAM,CAAC,EACX,KAAK,OAAO,KAAK,QAAQ,2BAA4B,UAAY,CAC/DA,EAAMF,EAAK,MAAM,IAAI,SAAUG,EAAI,CACjC,OAAOF,EAAK,KAAKE,CAAE,CACrB,CAAC,CACH,CAAC,EACD,IAAIC,EAAY,IAAMF,EAAI,KAAK,GAAG,EAAI,IAEtC,OAAI,KAAK,QAAQ,IACRE,EAEF,KAAK,QAAQ,QAAU,IAAMA,EAAY,GAClD,ICfA,IAAAC,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cAEAA,GAAO,QAAU,SAAUC,EAAM,CAC/B,MAAO,UAAYA,EAAK,KAAO,QAAU,KAAK,KAAKA,EAAK,IAAI,CAC9D,ICJA,IAAAC,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cAEAA,GAAO,QAAU,SAAUC,EAAM,CAC/B,IAAIC,EAAY,MAAQ,KAAK,KAAKD,EAAK,SAAS,EAAI,IAChDE,EAAW,KAAK,KAAKF,EAAK,QAAQ,EAClCG,EAAY,KAAK,KAAKH,EAAK,SAAS,EACxC,MAAO,IAAMC,EAAY,OAASC,EAAW,QAAUC,EAAY,KACrE,ICPA,IAAAC,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cACAA,GAAO,QAAU,SAAUC,EAAM,CAC/B,OAAI,KAAK,QAAQ,IACRA,EAAK,MAEP,KAAK,QAAQ,QAAU,IAAMA,EAAK,MAAQ,GACnD,ICNA,IAAAC,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cACA,IAAIC,IAAa,KAAqB,UAAU,WAE5CC,GAAgB,SAAUC,EAAM,CAClC,MAAO,+BAAiC,KAAK,KAAK,IAAIF,IAAWE,EAAK,IAAI,CAAC,EAAI,MAAQA,EAAK,KAAO,IACrG,EAEAH,GAAO,QAAU,SAAUG,EAAM,CAC/B,IAAIC,EAAO,KAIPC,EAASH,GAAc,KAAK,KAAMC,CAAI,EACtCG,EAAO,CAAC,EACZ,YAAK,OAAO,KAAK,QAAQ,0BAA2B,UAAY,CAC9DA,EAAOH,EAAK,KAAK,IAAI,SAAUI,EAAK,CAClC,OAAOH,EAAK,KAAKG,CAAG,CACtB,CAAC,CACH,CAAC,EACMF,EAAS,IAAMC,EAAK,KAAK,IAAI,EAAI,GAC1C,EAEAN,GAAO,QAAQ,cAAgBE,KCtB/B,IAAAM,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cAEAA,GAAO,QAAU,CAEf,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,YAGL,IAAK,YACL,KAAM,aACN,IAAK,aAEL,KAAM,YACN,IAAO,aACP,KAAM,aAGN,IAAK,WACL,IAAK,cACL,KAAM,gBACN,KAAM,mBACN,MAAO,gBACP,KAAM,QACN,MAAO,mBACP,KAAM,WAGN,KAAM,aACN,KAAM,YACN,MAAO,oBACT,ICnCA,IAAAC,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,IAAY,KAEhBD,GAAO,QAAU,SAAUE,EAAM,CAC/B,GAAI,KAAK,QAAQ,IACf,MAAO,CAAC,IAAM,KAAK,KAAKA,EAAK,KAAK,CAAC,CAAC,EAAGA,EAAK,GAAI,KAAK,KAAKA,EAAK,KAAK,CAAC,CAAC,EAAI,GAAG,EAAE,KAAK,GAAG,EAGzF,IAAIC,EAAgBF,IAAUC,EAAK,EAAE,EAErC,GAAI,CAACC,EACH,MAAM,UAAU,uBAAuB,EAIzC,OAAO,KAAK,aAAa,CACvB,KAAMA,EACN,KAAMD,EAAK,IACb,CAAC,CAEH,ICrBA,IAAAE,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cAEAA,GAAO,QAAU,SAAUC,EAAM,CAC/B,IAAIC,EAAKD,EAAK,KACd,MAAO,8BAAgCC,EAAK,eAC9C,ICLA,IAAAC,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cAEAA,GAAO,QAAU,CACf,IAAK,WACL,IAAK,WACL,IAAK,eACP,ICNA,IAAAC,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,GAAiB,KAErBD,GAAO,QAAU,SAAUE,EAAM,CAC/B,GAAI,KAAK,QAAQ,IACf,OAAOA,EAAK,GAAK,KAAK,KAAKA,EAAK,QAAQ,EAG1C,GAAI,EAAEA,EAAK,MAAMD,IACf,MAAM,IAAI,YAAYC,EAAK,GAAK,kBAAkB,EAGpD,IAAIC,EAAgBF,GAAeC,EAAK,EAAE,EAE1C,OAAO,KAAK,aAAa,CACvB,KAAMC,EACN,KAAM,CAACD,EAAK,QAAQ,CACtB,CAAC,CAEH,ICpBA,IAAAE,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cACA,IAAIC,GAAS,KAETC,IAAQ,CACV,UAAW,KACX,eAAgB,KAChB,gBAAiB,KACjB,aAAc,KACd,aAAc,KACd,aAAc,KACd,WAAY,KACZ,UAAW,IACb,EAEIC,GAAc,SAAUC,EAAOC,EAAS,CAC1C,KAAK,MAAQD,EACb,KAAK,QAAUH,GAAO,CACpB,QAAS,aACT,IAAK,GACL,2BAA4B,GAC5B,0BAA2B,GAC3B,oBAAqB,EACvB,EAAGI,CAAO,CACZ,EAEAJ,GAAOE,GAAY,UAAWD,GAAK,EAGnCC,GAAY,UAAU,KAAO,SAAUG,EAAM,CAC3C,GAAI,EAAEA,EAAK,QAAQ,MACjB,MAAM,IAAI,UAAU,iBAAmBA,EAAK,KAAO,qBAAqB,EAE1E,OAAO,KAAKA,EAAK,IAAI,EAAEA,CAAI,CAC7B,EAEAH,GAAY,UAAU,OAAS,SAAUI,EAAMC,EAAI,CACjD,IAAIC,EAAS,KAAK,QAAQ,IACtBF,IACF,KAAK,QAAQ,IAAM,IAErBC,EAAG,EACCD,IACF,KAAK,QAAQ,IAAME,EAEvB,EAEAT,GAAO,QAAUG,KC9CjB,IAAAO,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,IAAS,KAAqB,OAC9BC,IAAc,KACdC,IAAS,KAEb,SAASC,GAAeC,EAASC,EAAM,CACrC,KAAK,WAAa,CAAC,EACnB,KAAK,KAAOA,GAAQ,CAAC,EACrB,KAAK,YAAc,IAAIJ,IAAY,KAAMG,CAAO,CAClD,CAEAD,GAAc,UAAU,QAAU,SAAUE,EAAM,CAChD,YAAK,KAAOH,IAAO,KAAK,KAAMG,CAAI,EAC3B,IACT,EAEAF,GAAc,UAAU,QAAU,SAAUG,EAAW,CACrD,IAAIC,EAAO,KACX,GAAI,CAACD,GAAa,EAAE,OAAOA,GAAc,UAAY,OAAOA,GAAc,YACxE,MAAM,UAAU,6BAA6B,EAE/C,GAAI,OAAOA,EAAU,SAAY,WAC/B,MAAM,UAAU,sCAAsC,EAWxD,KAAK,KAAK,GAAKA,EACf,KAAK,KAAK,cAAgB,CACxB,YAAa,SAAUE,EAAQC,EAAOC,EAAI,CACxC,SAASC,EAAsBC,EAAO,CACpC,OAAIL,EAAK,YAAY,QAAQ,qBAAuB,OAAOK,GAAU,WAC5DF,EAAG,QAAQE,CAAK,EAElBA,CACT,CAEA,GAAIJ,KAAUC,EACZ,OAAOE,EAAqBF,EAAMD,CAAM,CAAC,EAE3C,GAAIA,KAAUE,EACZ,OAAOC,EAAqBD,EAAGF,CAAM,CAAC,EAExC,MAAM,YAAY,WAAaA,EAAS,gBAAgB,CAC1D,EACA,cAAe,SAAUK,EAAIC,EAAM,CACjC,GAAI,OAAOD,GAAO,WAChB,MAAM,YAAY,WAAaC,EAAO,sBAAsB,EAE9D,OAAOD,CACT,CACF,EACA,KAAK,KAAK,eAAiB,KAAK,KAAK,gBAAkB,UAAY,CAAC,EAEpE,IAAIE,EAAW,OAAO,KAAK,KAAK,IAAI,EAAE,IAAI,SAAUD,EAAM,CACxD,MAAO,OAASA,EAAO,YAAcA,EAAO,IAC9C,CAAC,EAGD,GAAI,CAAC,KAAK,WAAW,OACnB,MAAM,MAAM,wGAAwG,EAItH,KAAK,WAAW,KAAK,WAAW,OAAS,CAAC,EAAI,UAAY,KAAK,WAAW,KAAK,WAAW,OAAS,CAAC,EAEpG,IAAIE,EAAO,KAAK,WAAW,KAAK,GAAG,EAC/BC,EAAcF,EAAS,KAAK;AAAA,CAAI,EAAI;AAAA,EAAO,CAC7C,WACA,6BACA,0BACA,4BACA,OAASC,EACT,OACA,YAAcA,EAAO,IACrB,GACF,EAAE,KAAK;AAAA,CAAI,EAGPE,EAAU,IAAI,SAAS,OAAQD,CAAW,EAC9C,OAAOC,EAAQ,KAAK,IAAI,CAE1B,EAEAf,GAAc,UAAU,MAAQ,SAAUa,EAAM,CAC9C,IAAIT,EAAO,KACPY,EAAU,IAAInB,IAAO,EAAE,MAAMgB,CAAI,EACrC,YAAK,WAAaG,EAAQ,OAAO,IAAI,SAAUC,EAAW,CACxD,OAAOb,EAAK,YAAY,KAAKa,CAAS,CACxC,CAAC,EACM,IACT,EAEArB,GAAO,QAAUI,KCpGjB,IAAAkB,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cAOAA,GAAO,QAAU,wMCmBjB,SAAgBC,IAAWC,EAAM,CAC/B,OAAO,OAAOA,GAAM,UAAY,OAAOA,EAAE,IAAO,UAAY,OAAOA,EAAE,IAAO,QAC9E,CAFAC,GAAA,WAAAF,IAwBA,SAAgBG,GAAQC,EAAW,CACjC,OAAOA,EAAE,GAAKA,EAAE,EAClB,CAFAF,GAAA,QAAAC,GAkBA,SAAgBE,IAAQD,EAAW,CACjC,OAAOA,EAAE,KAAO,MAAaA,EAAE,KAAO,GACxC,CAFAF,GAAA,QAAAG,IAqBA,SAAgBC,IAAYF,EAAW,CACrC,OAAOA,EAAE,KAAOA,EAAE,EACpB,CAFAF,GAAA,YAAAI,IAiBA,SAAgBC,IAAOH,EAAW,CAChC,OAAOI,GAASJ,EAAG,CAAC,CACtB,CAFAF,GAAA,OAAAK,IAuBA,SAAgBC,GAASJ,EAAaK,EAAa,CACjD,OAAIN,GAAQC,CAAC,EACJ,GAEFA,EAAE,IAAMK,GAASA,GAASL,EAAE,EACrC,CALAF,GAAA,SAAAM,GA0BA,SAAgBE,IAAYT,EAAaU,EAAW,CAClD,OAAIR,GAAQF,CAAC,EACJ,GAEF,CAACE,GAAQQ,CAAC,GAAKA,EAAE,IAAMV,EAAE,IAAMA,EAAE,IAAMU,EAAE,EAClD,CALAT,GAAA,YAAAQ,IAkCA,SAAgBE,IAAiBX,EAAaU,EAAW,CACvD,OAAIR,GAAQF,CAAC,GAAKE,GAAQQ,CAAC,EAClB,GAEDV,EAAE,IAAMU,EAAE,IAAMA,EAAE,IAAMV,EAAE,IAAQU,EAAE,IAAMV,EAAE,IAAMA,EAAE,IAAMU,EAAE,EACtE,CALAT,GAAA,iBAAAU,MC7LA,IAAAC,GAAAC,GAAA,CAAAC,IAAAC,KAAA,KAAIC,GAAiB,GACrB,GAAG,OAAO,aAAiB,IAKzB,GAJIC,GAAc,IAAI,aAAa,CAAC,EAChCC,GAAc,IAAI,YAAYD,GAAY,MAAM,EACpDA,GAAY,CAAC,EAAI,EACjBD,GAAiB,GACdE,GAAU,CAAC,IAAM,WAAY,CAM9B,IAASC,EAAT,SAAoBC,EAAIC,EAAI,CAC1B,OAAAH,GAAU,CAAC,EAAIE,EACfF,GAAU,CAAC,EAAIG,EACRJ,GAAY,CAAC,CACtB,EAESK,EAAT,SAAmB,EAAG,CACpB,OAAAL,GAAY,CAAC,EAAI,EACVC,GAAU,CAAC,CACpB,EAESK,EAAT,SAAoB,EAAG,CACrB,OAAAN,GAAY,CAAC,EAAI,EACVC,GAAU,CAAC,CACpB,EAdSC,MAMAG,MAKAC,MAfTR,GAAO,QAAU,SAAsBS,EAAG,CACxC,OAAAP,GAAY,CAAC,EAAIO,EACV,CAAEN,GAAU,CAAC,EAAGA,GAAU,CAAC,CAAE,CACtC,EAMAH,GAAO,QAAQ,KAAOI,EAKtBJ,GAAO,QAAQ,GAAKO,EAKpBP,GAAO,QAAQ,GAAKQ,CACtB,SAAUL,GAAU,CAAC,IAAM,WAAY,CAMrC,IAASO,EAAT,SAAoBL,EAAIC,EAAI,CAC1B,OAAAH,GAAU,CAAC,EAAIE,EACfF,GAAU,CAAC,EAAIG,EACRJ,GAAY,CAAC,CACtB,EAESS,EAAT,SAAmB,EAAG,CACpB,OAAAT,GAAY,CAAC,EAAI,EACVC,GAAU,CAAC,CACpB,EAESS,EAAT,SAAoB,EAAG,CACrB,OAAAV,GAAY,CAAC,EAAI,EACVC,GAAU,CAAC,CACpB,EAdSO,MAMAC,MAKAC,MAfTZ,GAAO,QAAU,SAAsBS,EAAG,CACxC,OAAAP,GAAY,CAAC,EAAIO,EACV,CAAEN,GAAU,CAAC,EAAGA,GAAU,CAAC,CAAE,CACtC,EAMAH,GAAO,QAAQ,KAAOU,EAKtBV,GAAO,QAAQ,GAAKW,EAKpBX,GAAO,QAAQ,GAAKY,CACtB,MACEX,GAAiB,GAjDf,IAAAC,GACAC,GASOC,IAMAG,IAKAC,IAWAE,IAMAC,IAKAC,IASb,GAAG,CAACX,GAAgB,CAMlB,IAASY,EAAT,SAAkBR,EAAIC,EAAI,CACxB,OAAAQ,GAAO,cAAcT,EAAI,EAAG,EAAI,EAChCS,GAAO,cAAcR,EAAI,EAAG,EAAI,EACzBQ,GAAO,aAAa,EAAG,EAAI,CACpC,EAESC,EAAT,SAAiB,EAAG,CAClB,OAAAD,GAAO,cAAc,EAAG,EAAG,EAAI,EACxBA,GAAO,aAAa,EAAG,EAAI,CACpC,EAESE,EAAT,SAAkB,EAAG,CACnB,OAAAF,GAAO,cAAc,EAAG,EAAG,EAAI,EACxBA,GAAO,aAAa,EAAG,EAAI,CACpC,EAdSD,MAMAE,MAKAC,MAhBLF,GAAS,IAAI,OAAO,CAAC,EACzBd,GAAO,QAAU,SAAoBS,EAAG,CACtC,OAAAK,GAAO,cAAcL,EAAG,EAAG,EAAI,EACxB,CAAEK,GAAO,aAAa,EAAG,EAAI,EAAGA,GAAO,aAAa,EAAG,EAAI,CAAE,CACtE,EAMAd,GAAO,QAAQ,KAAOa,EAKtBb,GAAO,QAAQ,GAAKe,EAKpBf,GAAO,QAAQ,GAAKgB,CACtB,CArBM,IAAAF,GAKKD,IAMAE,IAKAC,IAOXhB,GAAO,QAAQ,KAAO,SAASS,EAAG,CAChC,OAAOT,GAAO,QAAQ,GAAGS,CAAC,IAAM,EAClC,EAEAT,GAAO,QAAQ,SAAW,SAASS,EAAG,CACpC,IAAIQ,EAAIjB,GAAO,QAAQ,GAAGS,CAAC,EAC3B,OAASQ,GAAG,IAAO,IAAM,IAC3B,EAEAjB,GAAO,QAAQ,SAAW,SAASS,EAAG,CACpC,IAAIJ,EAAKL,GAAO,QAAQ,GAAGS,CAAC,EACxBH,EAAKN,GAAO,QAAQ,GAAGS,CAAC,EACxBQ,EAAIX,GAAO,GAAG,IAAM,EACxB,OAAGA,EAAK,aACNW,GAAM,GAAG,IAEJ,CAACZ,EAAIY,CAAC,CACf,EAEAjB,GAAO,QAAQ,aAAe,SAASS,EAAG,CACxC,IAAIH,EAAKN,GAAO,QAAQ,GAAGS,CAAC,EAC5B,MAAO,EAAEH,EAAK,WAChB,ICpGA,IAAAY,GAAAC,GAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,GAAa,KAEbC,GAAkB,KAAK,IAAI,EAAG,KAAK,EACnCC,GAAY,KAAM,EAEtBH,GAAO,QAAUI,IAEjB,SAASA,IAAUC,EAAGC,EAAG,CACvB,GAAG,MAAMD,CAAC,GAAK,MAAMC,CAAC,EACpB,MAAO,KAET,GAAGD,IAAMC,EACP,OAAOD,EAET,GAAGA,IAAM,EACP,OAAGC,EAAI,EACE,CAACJ,GAEDA,GAGX,IAAIK,EAAKN,GAAW,GAAGI,CAAC,EACpBG,EAAKP,GAAW,GAAGI,CAAC,EACxB,OAAIC,EAAID,GAAQA,EAAI,EACfG,IAAOL,IACRI,GAAM,EACNC,EAAK,GAELA,GAAM,EAGLA,IAAO,GACRA,EAAKL,GACLI,GAAM,GAENC,GAAM,EAGHP,GAAW,KAAKO,EAAID,CAAE,CAC/B,oKCzCA,IAAAE,GAAAC,IAAA,IAAA,EAMA,SAASC,IAASC,EAAM,CACtB,OAAOA,CACT,CACA,SAASC,GAAKD,EAAS,CACrB,OAAIA,IAAM,IACDA,KAEFH,GAAA,SAAUG,EAAG,IAAS,CAC/B,CACA,SAASE,GAAKF,EAAS,CACrB,OAAIA,IAAM,KACDA,KAEFH,GAAA,SAAUG,EAAG,GAAQ,CAC9B,CACA,SAASG,GAAUC,EAAS,CAC1B,OAAOA,EAAI,EAAI,KAAK,KAAKA,CAAC,EAAI,KAAK,MAAMA,CAAC,CAC5C,CAEA,IAAMC,GAAQ,CACZ,KAAMJ,GACN,KAAMC,IAMFI,GAAQ,CAWZ,SAAUL,GAWV,SAAUC,GACV,KAAKE,EAAS,CACZ,OAAOC,GAAM,KAAKD,CAAC,CACrB,EACA,KAAKA,EAAS,CACZ,OAAOC,GAAM,KAAKD,CAAC,CACrB,EAGA,MAAOA,EAAWG,EAAS,CAAY,OAAOD,GAAM,KAAKF,EAAIG,CAAC,CAAE,EAEhE,MAAOH,EAAWG,EAAS,CAAY,OAAOD,GAAM,KAAKF,EAAIG,CAAC,CAAE,EAGhE,MAAOH,EAAWG,EAAS,CAAY,OAAOD,GAAM,KAAKF,EAAIG,CAAC,CAAE,EAEhE,MAAOH,EAAWG,EAAS,CAAY,OAAOD,GAAM,KAAKF,EAAIG,CAAC,CAAE,EAGhE,MAAOH,EAAWG,EAAS,CAAY,OAAOD,GAAM,KAAKF,EAAIG,CAAC,CAAE,EAEhE,MAAOH,EAAWG,EAAS,CAAY,OAAOD,GAAM,KAAKF,EAAIG,CAAC,CAAE,EAGhE,MAAOH,EAAWG,EAAS,CAAY,OAAOD,GAAM,KAAKF,EAAIG,CAAC,CAAE,EAEhE,MAAOH,EAAWG,EAAS,CAAY,OAAOD,GAAM,KAAKF,EAAIG,CAAC,CAAE,EAGhE,MAAOH,EAAS,CAAY,OAAOD,GAAUG,GAAM,KAAKF,CAAC,CAAC,CAAE,EAE5D,MAAOA,EAAS,CAAY,OAAOD,GAAUG,GAAM,KAAKF,CAAC,CAAC,CAAE,EAG5D,MAAOA,EAAS,CAAY,OAAOE,GAAM,KAAK,KAAK,IAAIF,CAAC,CAAC,CAAE,EAE3D,MAAOA,EAAS,CAAY,OAAOE,GAAM,KAAK,KAAK,IAAIF,CAAC,CAAC,CAAE,EAG3D,MAAOA,EAAS,CAAY,OAAOE,GAAM,KAAK,KAAK,IAAIF,CAAC,CAAC,CAAE,EAE3D,MAAOA,EAAS,CAAY,OAAOE,GAAM,KAAK,KAAK,IAAIF,CAAC,CAAC,CAAE,EAG3D,MAAOA,EAAS,CAAY,OAAOE,GAAM,KAAK,KAAK,IAAIF,CAAC,CAAC,CAAE,EAE3D,MAAOA,EAAS,CAAY,OAAOE,GAAM,KAAK,KAAK,IAAIF,CAAC,CAAC,CAAE,EAG3D,MAAOA,EAAS,CAAY,OAAOE,GAAM,KAAK,KAAK,IAAIF,CAAC,CAAC,CAAE,EAE3D,MAAOA,EAAS,CAAY,OAAOE,GAAM,KAAK,KAAK,IAAIF,CAAC,CAAC,CAAE,EAG3D,MAAOA,EAAS,CAAY,OAAOE,GAAM,KAAK,KAAK,IAAIF,CAAC,CAAC,CAAE,EAE3D,MAAOA,EAAS,CAAY,OAAOE,GAAM,KAAK,KAAK,IAAIF,CAAC,CAAC,CAAE,EAG3D,OAAQA,EAAS,CAAY,OAAOE,GAAM,KAAK,KAAK,KAAKF,CAAC,CAAC,CAAE,EAE7D,OAAQA,EAAS,CAAY,OAAOE,GAAM,KAAK,KAAK,KAAKF,CAAC,CAAC,CAAE,EAG7D,OAAQA,EAAS,CAAY,OAAOE,GAAM,KAAK,KAAK,KAAKF,CAAC,CAAC,CAAE,EAE7D,OAAQA,EAAS,CAAY,OAAOE,GAAM,KAAK,KAAK,KAAKF,CAAC,CAAC,CAAE,EAG7D,OAAQA,EAAS,CAAY,OAAOE,GAAM,KAAK,KAAK,KAAKF,CAAC,CAAC,CAAE,EAE7D,OAAQA,EAAS,CAAY,OAAOE,GAAM,KAAK,KAAK,KAAKF,CAAC,CAAC,CAAE,EAI7D,OAAQA,EAAS,CAAY,OAAOE,GAAM,KAAM,KAAa,KAAKF,CAAC,CAAC,CAAE,EAEtE,OAAQA,EAAS,CAAY,OAAOE,GAAM,KAAM,KAAa,KAAKF,CAAC,CAAC,CAAE,EAGtE,OAAQA,EAAS,CAAY,OAAOE,GAAM,KAAM,KAAa,KAAKF,CAAC,CAAC,CAAE,EAEtE,OAAQA,EAAS,CAAY,OAAOE,GAAM,KAAM,KAAa,KAAKF,CAAC,CAAC,CAAE,EAGtE,OAAQA,EAAS,CAAY,OAAOE,GAAM,KAAM,KAAa,KAAKF,CAAC,CAAC,CAAE,EAEtE,OAAQA,EAAS,CAAY,OAAOE,GAAM,KAAM,KAAa,KAAKF,CAAC,CAAC,CAAE,EAStE,MAAMA,EAAWI,EAAa,CAC5B,GAAIA,EAAQ,IAAM,EAEhB,OAAOF,GAAM,KAAK,KAAK,IAAIF,EAAGI,CAAK,CAAC,EAGtC,IAAID,GAAKC,EAAQ,KAAO,EAAIJ,EAAI,EAEhC,IADAI,IAAU,EACHA,EAAQ,GACbJ,EAAIE,GAAM,MAAMF,EAAGA,CAAC,GACfI,EAAQ,KAAO,IAClBD,EAAID,GAAM,MAAMF,EAAGG,CAAC,GAEtBC,IAAU,EAEZ,OAAOD,CACT,EASA,MAAMH,EAAWI,EAAa,CAC5B,GAAIA,EAAQ,IAAM,EAEhB,OAAOF,GAAM,KAAK,KAAK,IAAIF,EAAGI,CAAK,CAAC,EAGtC,IAAID,GAAKC,EAAQ,KAAO,EAAIJ,EAAI,EAEhC,IADAI,IAAU,EACHA,EAAQ,GACbJ,EAAIE,GAAM,MAAMF,EAAGA,CAAC,GACfI,EAAQ,KAAO,IAClBD,EAAID,GAAM,MAAMF,EAAGG,CAAC,GAEtBC,IAAU,EAEZ,OAAOD,CACT,EAGA,OAAOH,EAAS,CAAI,OAAOE,GAAM,KAAK,KAAK,KAAKF,CAAC,CAAC,CAAE,EAEpD,OAAOA,EAAS,CAAI,OAAOE,GAAM,KAAK,KAAK,KAAKF,CAAC,CAAC,CAAE,EAwBpD,SAAO,CACLC,GAAM,KAAOA,GAAM,KAAON,GAC5B,EA4BA,QAAM,CACJM,GAAM,KAAOH,GACbG,GAAM,KAAOJ,EACf,GAGFQ,GAAA,QAAeH,y0BChQf,IAAAI,GAAAC,IAAA,IAAA,EACAC,GAAAC,IAAA,IAAA,EAyDaC,GAAb,MAAaC,CAAS,CAapB,YAAYC,EAAwBC,EAAsB,CACxD,GATF,KAAA,GAAa,EAMb,KAAA,GAAa,EAGP,EAAE,gBAAgBF,GACpB,eAAQ,IAAI,kBAAkB,EAC9B,QAAQ,IAAIC,EAAIC,CAAE,EACX,IAAIF,EAAUC,EAAIC,CAAE,EAG7B,GAAI,OAAOD,EAAO,KAAe,OAAOC,EAAO,IAAa,CAI1D,GAAIP,GAAM,WAAWM,CAAE,EAAG,CACxB,GAAI,CAACN,GAAM,YAAYM,CAAc,EACnC,MAAM,IAAI,UAAU,6CAA6C,EAEnEA,EAAMA,EAAgB,GAExB,GAAIN,GAAM,WAAWO,CAAE,EAAG,CACxB,GAAI,CAACP,GAAM,YAAYO,CAAc,EACnC,MAAM,UAAU,6CAA6C,EAE/DA,EAAMA,EAAgB,QAEnB,IAAI,OAAOD,EAAO,IAIvB,OAAI,MAAM,QAAQA,CAAE,EACX,IAAIE,GAASF,EAAG,CAAC,EAAGA,EAAG,CAAC,CAAC,EAG3B,IAAIE,GAASF,EAAIA,CAAE,EAI1BA,EAAKC,EAAK,EAEZ,KAAK,OAAOD,EAAcC,CAAY,CACxC,CAQA,UAAUE,EAAS,CACjB,OAAO,KAAK,IAAIA,EAAGA,CAAC,CACtB,CAgCA,QAAQH,EAAYC,EAAU,CAC5B,OAAO,KAAK,IAAIL,GAAA,QAAM,KAAKI,CAAE,EAAGJ,GAAA,QAAM,KAAKK,CAAE,CAAC,CAChD,CAOA,iBAAiBE,EAAS,CACxB,OAAO,KAAK,QAAQA,EAAGA,CAAC,CAC1B,CAUA,IAAIH,EAAYC,EAAU,CACxB,YAAK,GAAKD,EACV,KAAK,GAAKC,EACH,IACT,CAWA,OAAOD,EAAYC,EAAU,CAC3B,GAAI,OAAOD,GAAO,UAAY,OAAOC,GAAO,SAC1C,MAAM,UAAU,4CAA4C,EAE9D,OAAI,MAAMD,CAAE,GAAK,MAAMC,CAAE,GAAKD,EAAKC,EAC1B,KAAK,SAAQ,EAEf,KAAK,IAAID,EAAIC,CAAE,CACxB,CAOA,UAAQ,CACN,OAAO,KAAK,IAAI,OAAO,kBAAmB,OAAO,iBAAiB,CACpE,CAOA,UAAQ,CACN,OAAO,KAAK,IAAI,OAAO,kBAAmB,OAAO,iBAAiB,CACpE,CAiBA,KAAKD,EAAYC,EAAU,CACzB,OAAO,KAAK,OAAOL,GAAA,QAAM,SAASI,CAAE,EAAGJ,GAAA,QAAM,SAASK,CAAE,CAAC,CAC3D,CAiBA,aAAaD,EAAYC,EAAU,CACjC,OAAO,KAAK,OAAOL,GAAA,QAAM,SAASI,CAAE,EAAGC,CAAE,CAC3C,CAiBA,cAAcD,EAAYC,EAAU,CAClC,OAAO,KAAK,OAAOD,EAAIJ,GAAA,QAAM,SAASK,CAAE,CAAC,CAC3C,CAMA,SAAO,CACL,MAAO,CAAC,KAAK,GAAI,KAAK,EAAE,CAC1B,CAaA,OAAK,CACH,OAAO,IAAIC,GAAQ,EAAG,IAAI,KAAK,GAAI,KAAK,EAAE,CAC5C,GA3OFE,GAAA,UAAAN,GAgPA,SAASO,IAAQC,EAAK,CACpB,SAASC,GAAM,CACb,QACMC,EAAM,UAAU,OAAQC,EAAO,MAAMD,CAAG,EAAGE,EAAM,EACrDA,EAAMF,EACNE,IAEAD,EAAKC,CAAG,EAAI,UAAUA,CAAG,EAI3B,OAAO,IAAK,SAAS,UAAU,KAAK,MAAMJ,EAAO,CAAC,IAAI,EAAE,OAAOG,CAAI,CAAC,EACtE,CACA,OAAAF,EAAO,UAAYD,EAAM,UAClBC,CACT,CAKA,IAAML,GAAWG,IAAQP,EAAS,EAKzBM,GAAA,SAAAF,GAFTA,GAAS,QAAUA,qKClUnB,IAAAS,GAAA,KACAC,GAAAC,IAAA,IAAA,EAEMC,IAAS,WAAe,QAAY,GAAK,MAAQ,GAAK,IACtDC,IAAU,WAAe,QAAY,GAAK,MAAQ,GAAK,IAKvDC,GAAY,CAOhB,OAAQF,GAMR,QAASC,GACT,YAAaD,GAAQ,EACrB,aAAcC,GAAS,EACvB,aAAcD,GAAQ,EACtB,cAAeC,GAAS,EAcxB,IAAI,GAAC,CACH,OAAO,IAAIJ,GAAA,SACTC,GAAA,QAAM,KAAK,KAAK,CAAC,EACjBA,GAAA,QAAM,KAAK,KAAK,CAAC,CAAC,CAEtB,EAcA,IAAI,IAAE,CACJ,OAAO,IAAID,GAAA,SAASG,GAAOC,EAAM,CACnC,EAcA,IAAI,SAAO,CACT,OAAO,IAAIJ,GAAA,SAASK,GAAU,YAAaA,GAAU,YAAY,CACnE,EAcA,IAAI,UAAQ,CACV,OAAO,IAAIL,GAAA,SAASK,GAAU,aAAcA,GAAU,aAAa,CACrE,EAcA,IAAI,MAAI,CACN,OAAO,IAAIL,GAAA,SAAS,CAAC,CACvB,EAaA,IAAI,KAAG,CACL,OAAO,IAAIA,GAAA,SAAS,CAAC,CACvB,EAeA,IAAI,OAAK,CACP,OAAO,IAAIA,GAAA,SAAQ,EAAG,SAAQ,CAChC,EAeA,IAAI,OAAK,CACP,OAAO,IAAIA,GAAA,SAAQ,EAAG,SAAQ,CAChC,GAGFM,GAAA,QAAeD,k3BCjKf,IAAAE,GAAAC,IAAA,IAAA,EAkCA,SAAgBC,IAAMC,EAAaC,EAAW,CAC5C,OAAIJ,GAAM,QAAQG,CAAC,EACVH,GAAM,QAAQI,CAAC,EAEjB,CAACJ,GAAM,QAAQI,CAAC,GAAKD,EAAE,KAAOC,EAAE,IAAMD,EAAE,KAAOC,EAAE,EAC1D,CALAC,GAAA,MAAAH,IAQA,IAAMI,IAAM,KACZ,SAASC,GAAOC,EAAQC,EAAe,CAGrC,GAAI,CAACD,EAEH,MAAM,IAAI,MAAMC,GAAW,kBAAkB,CAEjD,CAEA,SAASC,GAAUF,EAAQG,EAAM,CAC/B,GAAI,CAAC,SAASH,CAAC,EAEb,OAAOD,GAAOC,IAAMG,EAAG,uBAAuBH,CAAC,UAAUG,CAAC,EAAE,EAG9DJ,GAAO,KAAK,IAAIC,EAAIG,CAAC,EAAIL,IAAK,YAAYE,CAAC,mBAAmBG,CAAC,EAAE,CACnE,CAEA,SAAgBC,GAAYT,EAAwBC,EAAsB,CACxED,EAAI,MAAM,QAAQA,CAAC,EAAIA,EAAIA,EAAE,QAAO,EACpCC,EAAI,MAAM,QAAQA,CAAC,EAAIA,EAAIA,EAAE,QAAO,EACpCM,GAAUP,EAAE,CAAC,EAAGC,EAAE,CAAC,CAAC,EACpBM,GAAUP,EAAE,CAAC,EAAGC,EAAE,CAAC,CAAC,CACtB,CALAC,GAAA,YAAAO,GAOA,SAAgBC,IAAeV,EAAwBC,EAAsB,CAE3EQ,GAAYT,EAAGC,CAAC,EAChBD,EAAI,MAAM,QAAQA,CAAC,EAAIA,EAAIA,EAAE,QAAO,EACpCC,EAAI,MAAM,QAAQA,CAAC,EAAIA,EAAIA,EAAE,QAAO,EACpCG,GAAOJ,EAAE,CAAC,GAAKC,EAAE,CAAC,EAAG,GAAGD,EAAE,CAAC,CAAC,8BAA8BC,EAAE,CAAC,CAAC,EAAE,EAChEG,GAAOH,EAAE,CAAC,GAAKD,EAAE,CAAC,EAAG,GAAGC,EAAE,CAAC,CAAC,8BAA8BD,EAAE,CAAC,CAAC,EAAE,CAClE,CAPAE,GAAA,eAAAQ,IA0CA,SAAgBC,IAASX,EAAaC,EAAW,CAC/C,OAAIJ,GAAM,QAAQG,CAAC,EACV,CAACH,GAAM,QAAQI,CAAC,EAElBJ,GAAM,QAAQI,CAAC,GAAKD,EAAE,GAAKC,EAAE,IAAMD,EAAE,GAAKC,EAAE,EACrD,CALAC,GAAA,SAAAS,IA+BA,SAAgBC,GAASZ,EAAaC,EAAW,CAC/C,OAAIJ,GAAM,QAAQG,CAAC,GAAKH,GAAM,QAAQI,CAAC,EAC9B,GAEFD,EAAE,GAAKC,EAAE,EAClB,CALAC,GAAA,SAAAU,GAWaV,GAAA,GAAKU,GA0BlB,SAAgBC,GAAYb,EAAaC,EAAW,CAClD,OAAIJ,GAAM,QAAQG,CAAC,GAAKH,GAAM,QAAQI,CAAC,EAC9B,GAEFD,EAAE,GAAKC,EAAE,EAClB,CALAC,GAAA,YAAAW,GAWaX,GAAA,GAAKW,GAkBlB,SAAgBC,GAAcd,EAAaC,EAAW,CACpD,OAAIJ,GAAM,QAAQG,CAAC,GAAKH,GAAM,QAAQI,CAAC,EAC9B,GAEFD,EAAE,IAAMC,EAAE,EACnB,CALAC,GAAA,cAAAY,GAWaZ,GAAA,IAAMY,GASnB,SAAgBC,GAAiBf,EAAaC,EAAW,CACvD,OAAIJ,GAAM,QAAQG,CAAC,GAAKH,GAAM,QAAQI,CAAC,EAC9B,GAEFD,EAAE,IAAMC,EAAE,EACnB,CALAC,GAAA,iBAAAa,GAWab,GAAA,IAAMa,01BC9OnB,IAAAC,GAAA,KACAC,GAAAC,GAAA,IAAA,EACAC,GAAAC,IAAA,IAAA,EACAC,GAAAH,GAAA,IAAA,EAQA,SAAgBI,IAAQC,EAAaC,EAAW,CAC9C,IAAMC,EAAKF,EAAE,GACPG,EAAKH,EAAE,GACPI,EAAKH,EAAE,GACPI,EAAKJ,EAAE,GACPK,EAAM,IAAIb,GAAA,SAChB,OAAIU,EAAK,EACHE,EAAK,GACPC,EAAI,GAAKZ,GAAA,QAAM,MAAMS,EAAIC,CAAE,EAC3BE,EAAI,GAAKZ,GAAA,QAAM,MAAMQ,EAAIG,CAAE,IAE3BC,EAAI,GAAKZ,GAAA,QAAM,MAAMQ,EAAIE,CAAE,EAC3BE,EAAI,GAAKZ,GAAA,QAAM,MAAMS,EAAIE,CAAE,GAEpBH,EAAK,EACVG,EAAK,GACPC,EAAI,GAAKZ,GAAA,QAAM,MAAMS,EAAIE,CAAE,EAC3BC,EAAI,GAAKZ,GAAA,QAAM,MAAMQ,EAAIG,CAAE,IAE3BC,EAAI,GAAKZ,GAAA,QAAM,MAAMQ,EAAIE,CAAE,EAC3BE,EAAI,GAAKZ,GAAA,QAAM,MAAMS,EAAIC,CAAE,GAGzBC,EAAK,GACPC,EAAI,GAAKZ,GAAA,QAAM,MAAMS,EAAIE,CAAE,EAC3BC,EAAI,GAAKZ,GAAA,QAAM,MAAMQ,EAAIE,CAAE,IAE3BE,EAAI,GAAKZ,GAAA,QAAM,MAAMQ,EAAIG,CAAE,EAC3BC,EAAI,GAAKZ,GAAA,QAAM,MAAMS,EAAIC,CAAE,GAGxBE,CACT,CAhCAC,GAAA,QAAAR,IAwCA,SAAgBS,IAASR,EAAaS,EAAS,CAC7C,OAAIT,EAAE,KAAO,GAAKA,EAAE,KAAO,EAClBA,EAGLJ,GAAM,OAAOI,CAAC,EAETF,GAAA,QAAU,MAGfE,EAAE,GAAK,EAEF,IAAIP,GAAA,SAAS,OAAO,kBAAmBC,GAAA,QAAM,MAAMM,EAAE,GAAIS,CAAC,CAAC,EAG3D,IAAIhB,GAAA,SAASC,GAAA,QAAM,MAAMM,EAAE,GAAIS,CAAC,EAAG,OAAO,iBAAiB,CAEtE,CAjBAF,GAAA,SAAAC,IAyBA,SAAgBE,IAASV,EAAaS,EAAS,CAC7C,OAAIT,EAAE,KAAO,GAAKA,EAAE,KAAO,EAClBA,EAGLJ,GAAM,OAAOI,CAAC,EAETF,GAAA,QAAU,MAGfE,EAAE,GAAK,EAEF,IAAIP,GAAA,SAASC,GAAA,QAAM,MAAMM,EAAE,GAAIS,CAAC,EAAG,OAAO,iBAAiB,EAG3D,IAAIhB,GAAA,SAAS,OAAO,kBAAmBC,GAAA,QAAM,MAAMM,EAAE,GAAIS,CAAC,CAAC,CAEtE,CAjBAF,GAAA,SAAAG,IAwBA,SAAgBC,IAAKX,EAAW,CAC9B,OAAIA,EAAE,KAAO,GAAKA,EAAE,KAAO,EAClBA,EAEFF,GAAA,QAAU,KACnB,CALAS,GAAA,KAAAI,q4BCpGA,IAAAC,GAAA,KACAC,GAAAC,GAAA,IAAA,EACAC,GAAAD,GAAA,IAAA,EACAE,GAAAC,GAAA,IAAA,EACAC,GAAAD,GAAA,IAAA,EAqBA,SAAgBE,IAAIC,EAAaC,EAAW,CAC1C,OAAO,IAAIT,GAAA,SAASC,GAAA,QAAM,MAAMO,EAAE,GAAIC,EAAE,EAAE,EAAGR,GAAA,QAAM,MAAMO,EAAE,GAAIC,EAAE,EAAE,CAAC,CACtE,CAFAC,GAAA,IAAAH,IAmBA,SAAgBI,GAASH,EAAaC,EAAW,CAC/C,OAAO,IAAIT,GAAA,SAASC,GAAA,QAAM,MAAMO,EAAE,GAAIC,EAAE,EAAE,EAAGR,GAAA,QAAM,MAAMO,EAAE,GAAIC,EAAE,EAAE,CAAC,CACtE,CAFAC,GAAA,SAAAC,GAQaD,GAAA,IAAMC,GAkDnB,SAAgBC,GAASJ,EAAaC,EAAW,CAC/C,GAAIL,GAAM,QAAQI,CAAC,GAAKJ,GAAM,QAAQK,CAAC,EACrC,OAAON,GAAA,QAAU,MAEnB,IAAMU,EAAKL,EAAE,GACPM,EAAKN,EAAE,GACPO,EAAKN,EAAE,GACPO,EAAKP,EAAE,GACPQ,EAAM,IAAIjB,GAAA,SAChB,OAAIa,EAAK,EACHC,EAAK,EACHC,EAAK,EACHC,EAAK,GAEPC,EAAI,GAAK,KAAK,IAAIhB,GAAA,QAAM,MAAMY,EAAIG,CAAE,EAAGf,GAAA,QAAM,MAAMa,EAAIC,CAAE,CAAC,EAC1DE,EAAI,GAAK,KAAK,IAAIhB,GAAA,QAAM,MAAMY,EAAIE,CAAE,EAAGd,GAAA,QAAM,MAAMa,EAAIE,CAAE,CAAC,IAG1DC,EAAI,GAAKhB,GAAA,QAAM,MAAMa,EAAIC,CAAE,EAC3BE,EAAI,GAAKhB,GAAA,QAAM,MAAMY,EAAIE,CAAE,GAGzBC,EAAK,GAEPC,EAAI,GAAKhB,GAAA,QAAM,MAAMY,EAAIG,CAAE,EAC3BC,EAAI,GAAKhB,GAAA,QAAM,MAAMa,EAAIE,CAAE,IAG3BC,EAAI,GAAK,EACTA,EAAI,GAAK,GAITF,EAAK,EACHC,EAAK,GAEPC,EAAI,GAAKhB,GAAA,QAAM,MAAMY,EAAIG,CAAE,EAC3BC,EAAI,GAAKhB,GAAA,QAAM,MAAMY,EAAIE,CAAE,IAG3BE,EAAI,GAAKhB,GAAA,QAAM,MAAMa,EAAIE,CAAE,EAC3BC,EAAI,GAAKhB,GAAA,QAAM,MAAMY,EAAIE,CAAE,GAGzBC,EAAK,GAEPC,EAAI,GAAKhB,GAAA,QAAM,MAAMY,EAAIG,CAAE,EAC3BC,EAAI,GAAKhB,GAAA,QAAM,MAAMa,EAAIC,CAAE,IAG3BE,EAAI,GAAK,EACTA,EAAI,GAAK,GAKXH,EAAK,EACHC,EAAK,EACHC,EAAK,GAEPC,EAAI,GAAKhB,GAAA,QAAM,MAAMa,EAAIC,CAAE,EAC3BE,EAAI,GAAKhB,GAAA,QAAM,MAAMa,EAAIE,CAAE,IAG3BC,EAAI,GAAKhB,GAAA,QAAM,MAAMa,EAAIC,CAAE,EAC3BE,EAAI,GAAKhB,GAAA,QAAM,MAAMY,EAAIG,CAAE,GAGzBA,EAAK,GAEPC,EAAI,GAAKhB,GAAA,QAAM,MAAMY,EAAIE,CAAE,EAC3BE,EAAI,GAAKhB,GAAA,QAAM,MAAMa,EAAIE,CAAE,IAG3BC,EAAI,GAAK,EACTA,EAAI,GAAK,IAKbA,EAAI,GAAK,EACTA,EAAI,GAAK,GAGNA,CACT,CArFAP,GAAA,SAAAE,GA2FaF,GAAA,IAAME,GAwCnB,SAAgBM,GAAOV,EAAaC,EAAW,CAC7C,OAAIL,GAAM,QAAQI,CAAC,GAAKJ,GAAM,QAAQK,CAAC,EAC9BN,GAAA,QAAU,MAEfC,GAAM,OAAOK,CAAC,EACZA,EAAE,KAAO,EACPA,EAAE,KAAO,EACJH,GAAS,KAAKE,CAAC,EAEfF,GAAS,SAASE,EAAGC,EAAE,EAAE,EAG9BA,EAAE,KAAO,EACJH,GAAS,SAASE,EAAGC,EAAE,EAAE,EAEzBN,GAAA,QAAU,MAIdG,GAAS,QAAQE,EAAGC,CAAC,CAEhC,CArBAC,GAAA,OAAAQ,GA2BaR,GAAA,IAAMQ,GAgBnB,SAAgBC,IAASX,EAAW,CAClC,OAAO,IAAIR,GAAA,SAASQ,EAAE,GAAIA,EAAE,EAAE,CAChC,CAFAE,GAAA,SAAAS,IA+BA,SAAgBC,IAASZ,EAAW,CAClC,OAAO,IAAIR,GAAA,SAAS,CAACQ,EAAE,GAAI,CAACA,EAAE,EAAE,CAClC,CAFAE,GAAA,SAAAU,42BCnTA,IAAAC,GAAA,KACAC,GAAAC,IAAA,IAAA,EACAC,GAAAD,IAAA,IAAA,EAEAE,GAAAC,IAAA,IAAA,EACAC,IAAAD,IAAA,IAAA,EA0BA,SAAgBE,IAAKC,EAAaC,EAAW,CAC3C,GAAIL,GAAM,QAAQI,CAAC,GAAKJ,GAAM,QAAQK,CAAC,EACrC,OAAON,GAAA,QAAU,MAEnB,IAAMO,EAAKF,EAAE,GAAK,EAAIC,EAAE,GAAKA,EAAE,GAC3B,EAAID,EAAE,GAAKE,EACf,OAAI,EAAI,EAAG,EAAI,KAAK,KAAK,CAAC,EACrB,EAAI,KAAK,MAAM,CAAC,EAEdJ,IAAW,IAAIE,EAAGF,IAAW,IAAIG,EAAG,IAAIT,GAAA,SAAS,CAAC,CAAC,CAAC,CAC7D,CAVAW,GAAA,KAAAJ,IA4BA,SAAgBK,IAAsBJ,EAAW,CAC/C,OAAIJ,GAAM,QAAQI,CAAC,EACVL,GAAA,QAAU,MAEfC,GAAM,OAAOI,CAAC,EACZA,EAAE,KAAO,EACPA,EAAE,KAAO,EAEJL,GAAA,QAAU,MAGV,IAAIH,GAAA,SAAS,OAAO,kBAAmBC,GAAA,QAAM,MAAM,EAAGO,EAAE,EAAE,CAAC,EAGhEA,EAAE,KAAO,EAEJ,IAAIR,GAAA,SAASC,GAAA,QAAM,MAAM,EAAGO,EAAE,EAAE,EAAG,OAAO,iBAAiB,EAG3DL,GAAA,QAAU,MAKd,IAAIH,GAAA,SAASC,GAAA,QAAM,MAAM,EAAGO,EAAE,EAAE,EAAGP,GAAA,QAAM,MAAM,EAAGO,EAAE,EAAE,CAAC,CAElE,CA1BAG,GAAA,sBAAAC,IAgEA,SAAgBC,IAAIL,EAAaM,EAAwB,CACvD,GAAIV,GAAM,QAAQI,CAAC,EACjB,OAAOL,GAAA,QAAU,MAEnB,GAAI,OAAOW,GAAU,SAAU,CAC7B,GAAI,CAACV,GAAM,YAAYU,CAAK,EAC1B,OAAOX,GAAA,QAAU,MAEnBW,EAAQA,EAAM,GAGhB,GAAIA,IAAU,EACZ,OAAIN,EAAE,KAAO,GAAKA,EAAE,KAAO,EAElBL,GAAA,QAAU,MAGVA,GAAA,QAAU,IAEd,GAAIW,EAAQ,EAEjB,OAAOD,IAAID,IAAsBJ,CAAC,EAAG,CAACM,CAAK,EAI7C,GAAI,OAAO,cAAcA,CAAK,EAE5B,GAAIN,EAAE,GAAK,EAAG,CAIZ,IAAMO,EAAKd,GAAA,QAAM,MAAM,CAACO,EAAE,GAAIM,CAAK,EAC7BE,EAAKf,GAAA,QAAM,MAAM,CAACO,EAAE,GAAIM,CAAK,EACnC,OAAKA,EAAQ,KAAO,EAEX,IAAId,GAAA,SAAS,CAACgB,EAAI,CAACD,CAAE,EAGrB,IAAIf,GAAA,SAASe,EAAIC,CAAE,MAEvB,QAAIR,EAAE,GAAK,GAEXM,EAAQ,KAAO,EACX,IAAId,GAAA,SAAS,CAACC,GAAA,QAAM,MAAM,CAACO,EAAE,GAAIM,CAAK,EAAGb,GAAA,QAAM,MAAMO,EAAE,GAAIM,CAAK,CAAC,EAIjE,IAAId,GAAA,SAAS,EAAGC,GAAA,QAAM,MAAM,KAAK,IAAI,CAACO,EAAE,GAAIA,EAAE,EAAE,EAAGM,CAAK,CAAC,EAI3D,IAAId,GAAA,SAASC,GAAA,QAAM,MAAMO,EAAE,GAAIM,CAAK,EAAGb,GAAA,QAAM,MAAMO,EAAE,GAAIM,CAAK,CAAC,MAGxE,gBAAQ,KAAK,uFAAuF,EAC7FX,GAAA,QAAU,KAErB,CAzDAQ,GAAA,IAAAE,IAwEA,SAAgBI,IAAKT,EAAW,CAC9B,OAAOU,IAAQV,EAAG,CAAC,CACrB,CAFAG,GAAA,KAAAM,IAmBA,SAAgBC,IAAQV,EAAaW,EAAoB,CACvD,GAAIf,GAAM,QAAQI,CAAC,GAAKW,EAAI,EAE1B,OAAOhB,GAAA,QAAU,MAInB,GAAI,OAAOgB,GAAM,SAAU,CACzB,GAAI,CAACf,GAAM,YAAYe,CAAC,EACtB,OAAOhB,GAAA,QAAU,MAEnBgB,EAAIA,EAAE,GAGR,IAAML,EAAQ,EAAIK,EAClB,GAAIX,EAAE,GAAK,EAAG,CAEZ,GAAK,OAAO,cAAcW,CAAC,IAAkBA,EAAI,KAAO,EAAG,CAEzD,IAAMJ,EAAKd,GAAA,QAAM,MAAM,CAACO,EAAE,GAAIM,CAAK,EAC7BE,EAAKf,GAAA,QAAM,MAAM,CAACO,EAAE,GAAIM,CAAK,EACnC,OAAO,IAAId,GAAA,SAAS,CAACe,EAAI,CAACC,CAAE,EAG9B,OAAOb,GAAA,QAAU,cACRK,EAAE,GAAK,EAAG,CAEnB,IAAMY,EAAKnB,GAAA,QAAM,MAAMO,EAAE,GAAIM,CAAK,EAClC,GAAK,OAAO,cAAcK,CAAC,IAAkBA,EAAI,KAAO,EAAG,CAEzD,IAAME,EAAK,CAACpB,GAAA,QAAM,MAAM,CAACO,EAAE,GAAIM,CAAK,EACpC,OAAO,IAAId,GAAA,SAASqB,EAAID,CAAE,EAE5B,OAAO,IAAIpB,GAAA,SAAS,EAAGoB,CAAE,MAGzB,QAAO,IAAIpB,GAAA,SAASC,GAAA,QAAM,MAAMO,EAAE,GAAIM,CAAK,EAAGb,GAAA,QAAM,MAAMO,EAAE,GAAIM,CAAK,CAAC,CAE1E,CAtCAH,GAAA,QAAAO,88BCtNA,IAAAI,GAAA,KACAC,GAAAC,IAAA,IAAA,EACAC,GAAAD,IAAA,IAAA,EACAE,GAAAC,IAAA,IAAA,EACAC,GAAAD,IAAA,IAAA,EAoBA,SAAgBE,IAAIC,EAAW,CAC7B,OAAIJ,GAAM,QAAQI,CAAC,EACVL,GAAA,QAAU,MAEZ,IAAIH,GAAA,SAASC,GAAA,QAAM,MAAMO,EAAE,EAAE,EAAGP,GAAA,QAAM,MAAMO,EAAE,EAAE,CAAC,CAC1D,CALAC,GAAA,IAAAF,IAoBA,SAAgBG,GAAIF,EAAW,CAC7B,GAAIJ,GAAM,QAAQI,CAAC,EACjB,OAAOL,GAAA,QAAU,MAEnB,IAAMQ,EAAIH,EAAE,IAAM,EAAI,OAAO,kBAAoBP,GAAA,QAAM,MAAMO,EAAE,EAAE,EACjE,OAAO,IAAIR,GAAA,SAASW,EAAGV,GAAA,QAAM,MAAMO,EAAE,EAAE,CAAC,CAC1C,CANAC,GAAA,IAAAC,GAYaD,GAAA,GAAKC,GAELD,GAAA,WAAaC,GAAI,IAAIV,GAAA,SAAS,GAAI,EAAE,CAAC,EAelD,SAAgBY,IAAMJ,EAAW,CAC/B,OAAIJ,GAAM,QAAQI,CAAC,EACVL,GAAA,QAAU,MAEZG,GAAW,IAAII,GAAIF,CAAC,EAAGC,GAAA,UAAU,CAC1C,CALAA,GAAA,MAAAG,IAOaH,GAAA,UAAYC,GAAI,IAAIV,GAAA,SAAS,EAAG,CAAC,CAAC,EAe/C,SAAgBa,IAAKL,EAAW,CAC9B,OAAIJ,GAAM,QAAQI,CAAC,EACVL,GAAA,QAAU,MAEZG,GAAW,IAAII,GAAIF,CAAC,EAAGC,GAAA,SAAS,CACzC,CALAA,GAAA,KAAAI,IA4BA,SAAgBC,IAAKN,EAAaO,EAAW,CAC3C,IAAMC,EAAOZ,GAAM,QAAQI,CAAC,EACtBS,EAAOb,GAAM,QAAQW,CAAC,EAC5B,OAAIC,GAAQC,EACHd,GAAA,QAAU,MACRa,EACFD,EAAE,MAAK,EACLE,EACFT,EAAE,MAAK,EAEP,IAAIR,GAAA,SAAS,KAAK,IAAIQ,EAAE,GAAIO,EAAE,EAAE,EAAG,KAAK,IAAIP,EAAE,GAAIO,EAAE,EAAE,CAAC,CAElE,CAZAN,GAAA,KAAAK,IA6BA,SAAgBI,IAAaV,EAAaO,EAAW,CACnD,GAAIX,GAAM,QAAQI,CAAC,GAAKJ,GAAM,QAAQW,CAAC,EACrC,OAAOZ,GAAA,QAAU,MAEnB,IAAMgB,EAAK,KAAK,IAAIX,EAAE,GAAIO,EAAE,EAAE,EACxBK,EAAK,KAAK,IAAIZ,EAAE,GAAIO,EAAE,EAAE,EAC9B,OAAII,GAAMC,EACD,IAAIpB,GAAA,SAASmB,EAAIC,CAAE,EAErBjB,GAAA,QAAU,KACnB,CAVAM,GAAA,aAAAS,IAkCA,SAAgBG,IAAMb,EAAaO,EAAW,CAC5C,GAAI,CAACX,GAAM,iBAAiBI,EAAGO,CAAC,EAC9B,MAAM,MAAM,0CAA0C,EAExD,OAAO,IAAIf,GAAA,SAAS,KAAK,IAAIQ,EAAE,GAAIO,EAAE,EAAE,EAAG,KAAK,IAAIP,EAAE,GAAIO,EAAE,EAAE,CAAC,CAChE,CALAN,GAAA,MAAAY,IAoCA,SAAgBC,IAAWd,EAAaO,EAAW,CACjD,GAAIX,GAAM,QAAQI,CAAC,GAAKJ,GAAM,QAAQW,CAAC,EACrC,OAAOZ,GAAA,QAAU,MAEnB,GAAIC,GAAM,iBAAiBI,EAAGO,CAAC,EAAG,CAChC,GAAIP,EAAE,GAAKO,EAAE,IAAMA,EAAE,GAAKP,EAAE,GAE1B,MAAM,MAAM,4DAA4D,EAI1E,OAAKO,EAAE,IAAMP,EAAE,IAAMO,EAAE,KAAO,KAAcA,EAAE,IAAMP,EAAE,IAAMO,EAAE,KAAO,KAC5DZ,GAAA,QAAU,MASfY,EAAE,IAAMP,EAAE,GACL,IAAIR,GAAA,SAAQ,EAAG,aAAae,EAAE,GAAIP,EAAE,EAAE,EAIxC,IAAIR,GAAA,SAAQ,EAAG,cAAcQ,EAAE,GAAIO,EAAE,EAAE,EAEhD,OAAOP,EAAE,MAAK,CAChB,CA7BAC,GAAA,WAAAa,IAqDA,SAAgBC,IAAMf,EAAW,CAC/B,OAAIJ,GAAM,QAAQI,CAAC,EACV,EAEFP,GAAA,QAAM,MAAMO,EAAE,GAAIA,EAAE,EAAE,CAC/B,CALAC,GAAA,MAAAc,IAWad,GAAA,IAAMc,IAwBnB,SAAgBC,IAAIhB,EAAW,CAC7B,OAAIJ,GAAM,QAAQI,CAAC,GAAKJ,GAAM,QAAQI,CAAC,EAC9BL,GAAA,QAAU,MAEfK,EAAE,IAAM,EACHA,EAAE,MAAK,EAEZA,EAAE,IAAM,EACHF,GAAW,SAASE,CAAC,EAEvB,IAAIR,GAAA,SAAS,EAAG,KAAK,IAAI,CAACQ,EAAE,GAAIA,EAAE,EAAE,CAAC,CAC9C,CAXAC,GAAA,IAAAe,IA6BA,SAAgBC,IAAIjB,EAAaO,EAAW,CAC1C,IAAMC,EAAOZ,GAAM,QAAQI,CAAC,EACtBS,EAAOb,GAAM,QAAQW,CAAC,EAC5B,OAAIC,GAAQC,EACHd,GAAA,QAAU,MACRa,EACFD,EAAE,MAAK,EACLE,EACFT,EAAE,MAAK,EAEP,IAAIR,GAAA,SAAS,KAAK,IAAIQ,EAAE,GAAIO,EAAE,EAAE,EAAG,KAAK,IAAIP,EAAE,GAAIO,EAAE,EAAE,CAAC,CAElE,CAZAN,GAAA,IAAAgB,IA6BA,SAAgBC,IAAIlB,EAAaO,EAAW,CAC1C,IAAMC,EAAOZ,GAAM,QAAQI,CAAC,EACtBS,EAAOb,GAAM,QAAQW,CAAC,EAC5B,OAAIC,GAAQC,EACHd,GAAA,QAAU,MACRa,EACFD,EAAE,MAAK,EACLE,EACFT,EAAE,MAAK,EAEP,IAAIR,GAAA,SAAS,KAAK,IAAIQ,EAAE,GAAIO,EAAE,EAAE,EAAG,KAAK,IAAIP,EAAE,GAAIO,EAAE,EAAE,CAAC,CAElE,CAZAN,GAAA,IAAAiB,IA8BA,SAAgBC,IAAMnB,EAAW,CAE/B,OAAO,IAAIR,GAAA,SAAQ,EAAG,IAAIQ,EAAE,GAAIA,EAAE,EAAE,CACtC,CAHAC,GAAA,MAAAkB,MC9YA,IAAAC,GAAAC,GAAAC,IAAA,i2BACA,IAAAC,GAAA,KACAC,GAAAC,IAAA,IAAA,EACAC,GAAAD,IAAA,IAAA,EAEAE,GAAAC,GAAA,IAAA,EACAC,GAAAD,GAAA,IAAA,EACAE,IAAAF,GAAA,IAAA,EACAG,IAAAH,GAAA,IAAA,EAaA,SAASI,GAAaC,EAAW,CAC/B,MAAO,CAAC,SAASA,EAAE,EAAE,GAAKA,EAAE,KAAOA,EAAE,EACvC,CAMA,SAASC,IAAeC,EAAkB,CACxC,GAAIA,EAAS,GAAK,EAChB,GAAIA,EAAS,KAAO,KAClBA,EAAS,GAAK,EACdA,EAAS,GAAK,QACT,CACL,IAAMC,EAAI,KAAK,KAAK,CAACD,EAAS,GAAKT,GAAA,QAAU,YAAY,EACzDS,EAAS,IAAMT,GAAA,QAAU,aAAeU,EACxCD,EAAS,IAAMT,GAAA,QAAU,aAAeU,EAG5C,OAAOD,CACT,CA+CA,SAAgBE,GAAIJ,EAAW,CAC7B,GAAIN,GAAM,QAAQM,CAAC,GAAKD,GAAaC,CAAC,EACpC,OAAOP,GAAA,QAAU,MAInB,IAAMY,EAAQ,IAAIf,GAAA,SAAQ,EAAG,IAAIU,EAAE,GAAIA,EAAE,EAAE,EAC3CC,IAAeI,CAAK,EAEpB,IAAMC,EAAMb,GAAA,QAAU,SAChBc,EAAIV,IAAQ,KAAKQ,EAAOC,CAAG,EACjC,GAAIR,IAAK,MAAMS,CAAC,GAAKD,EAAI,GACvB,OAAO,IAAIhB,GAAA,SAAS,GAAI,CAAC,EAK3B,GAAIiB,EAAE,IAAMd,GAAA,QAAU,QAAS,CAC7B,IAAMe,EAAOJ,GAAIR,GAAW,IAAIW,EAAGd,GAAA,QAAU,EAAE,CAAC,EAChD,OAAOG,GAAW,SAASY,CAAI,EAGjC,IAAMC,EAAKF,EAAE,GACPG,EAAKH,EAAE,GACPI,EAAMpB,GAAA,QAAM,MAAMmB,CAAE,EACpBE,EAAMrB,GAAA,QAAM,MAAMkB,CAAE,EAE1B,OAAIC,GAAMjB,GAAA,QAAU,OAGX,IAAIH,GAAA,SAASqB,EAAKC,CAAG,EACnBF,GAAMJ,EAAI,GAGZ,IAAIhB,GAAA,SAAS,GAAI,KAAK,IAAIqB,EAAKC,CAAG,CAAC,EAGnC,IAAItB,GAAA,SAAS,GAAI,CAAC,CAE7B,CAvCAD,GAAA,IAAAe,GAkFA,SAAgBS,IAAIb,EAAW,CAC7B,OAAIN,GAAM,QAAQM,CAAC,GAAKD,GAAaC,CAAC,EAC7BP,GAAA,QAAU,MAEZW,GAAIR,GAAW,IAAII,EAAGP,GAAA,QAAU,OAAO,CAAC,CACjD,CALAJ,GAAA,IAAAwB,IAoCA,SAAgBC,IAAId,EAAW,CAC7B,GAAIN,GAAM,QAAQM,CAAC,GAAKD,GAAaC,CAAC,EACpC,OAAOP,GAAA,QAAU,MAInB,IAAMY,EAAQ,IAAIf,GAAA,SAAQ,EAAG,IAAIU,EAAE,GAAIA,EAAE,EAAE,EAC3CC,IAAeI,CAAK,EAEpB,IAAMU,EAAKtB,GAAA,QAAU,GACjBc,EAAIV,IAAQ,KAAKQ,EAAOU,CAAE,EAI9B,OAHIR,EAAE,IAAMd,GAAA,QAAU,cACpBc,EAAIX,GAAW,IAAIW,EAAGQ,CAAE,GAEtBR,EAAE,IAAM,CAACd,GAAA,QAAU,aAAec,EAAE,IAAMd,GAAA,QAAU,YAC/CA,GAAA,QAAU,MAEZ,IAAIH,GAAA,SAASC,GAAA,QAAM,MAAMgB,EAAE,EAAE,EAAGhB,GAAA,QAAM,MAAMgB,EAAE,EAAE,CAAC,CAC1D,CAlBAlB,GAAA,IAAAyB,IAiCA,SAAgBE,IAAKhB,EAAW,CAC9B,GAAIN,GAAM,QAAQM,CAAC,GAAKA,EAAE,GAAK,IAAMA,EAAE,GAAK,EAC1C,OAAOP,GAAA,QAAU,MAEnB,IAAMgB,EAAKT,EAAE,IAAM,GAAK,CAACP,GAAA,QAAU,aAAeF,GAAA,QAAM,OAAOS,EAAE,EAAE,EAC7DU,EAAKV,EAAE,IAAM,EAAIP,GAAA,QAAU,aAAeF,GAAA,QAAM,OAAOS,EAAE,EAAE,EACjE,OAAO,IAAIV,GAAA,SAASmB,EAAIC,CAAE,CAC5B,CAPArB,GAAA,KAAA2B,IAsBA,SAAgBC,IAAKjB,EAAW,CAC9B,GAAIN,GAAM,QAAQM,CAAC,GAAKA,EAAE,GAAK,IAAMA,EAAE,GAAK,EAC1C,OAAOP,GAAA,QAAU,MAEnB,IAAMgB,EAAKT,EAAE,IAAM,EAAI,EAAIT,GAAA,QAAM,OAAOS,EAAE,EAAE,EACtCU,EAAKV,EAAE,IAAM,GAAKP,GAAA,QAAU,QAAUF,GAAA,QAAM,OAAOS,EAAE,EAAE,EAC7D,OAAO,IAAIV,GAAA,SAASmB,EAAIC,CAAE,CAC5B,CAPArB,GAAA,KAAA4B,IAsBA,SAAgBC,IAAKlB,EAAW,CAC9B,OAAIN,GAAM,QAAQM,CAAC,EACVP,GAAA,QAAU,MAEZ,IAAIH,GAAA,SAASC,GAAA,QAAM,OAAOS,EAAE,EAAE,EAAGT,GAAA,QAAM,OAAOS,EAAE,EAAE,CAAC,CAC5D,CALAX,GAAA,KAAA6B,IAoBA,SAAgBC,IAAKnB,EAAW,CAC9B,OAAIN,GAAM,QAAQM,CAAC,EACVP,GAAA,QAAU,MAEZ,IAAIH,GAAA,SAASC,GAAA,QAAM,OAAOS,EAAE,EAAE,EAAGT,GAAA,QAAM,OAAOS,EAAE,EAAE,CAAC,CAC5D,CALAX,GAAA,KAAA8B,IAoBA,SAAgBC,IAAKpB,EAAW,CAC9B,OAAIN,GAAM,QAAQM,CAAC,EACVP,GAAA,QAAU,MAEfO,EAAE,GAAK,EACF,IAAIV,GAAA,SAASC,GAAA,QAAM,OAAOS,EAAE,EAAE,EAAGT,GAAA,QAAM,OAAOS,EAAE,EAAE,CAAC,EACjDA,EAAE,IAAM,EACV,IAAIV,GAAA,SAASC,GAAA,QAAM,OAAOS,EAAE,EAAE,EAAGT,GAAA,QAAM,OAAOS,EAAE,EAAE,CAAC,EAEnD,IAAIV,GAAA,SAAS,EAAGC,GAAA,QAAM,OAAO,CAACS,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,EAAE,CAAC,CAEnE,CAXAX,GAAA,KAAA+B,IA0BA,SAAgBC,IAAKrB,EAAW,CAC9B,OAAIN,GAAM,QAAQM,CAAC,EACVP,GAAA,QAAU,MAEZ,IAAIH,GAAA,SAASC,GAAA,QAAM,OAAOS,EAAE,EAAE,EAAGT,GAAA,QAAM,OAAOS,EAAE,EAAE,CAAC,CAC5D,CALAX,GAAA,KAAAgC,+8BCtVA,IAAAC,IAAA,KAcS,OAAA,eAAAC,GAAA,WAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAd0CD,IAAA,SAAQ,CAAA,CAAA,EAC3D,IAAAE,GAAAC,IAAA,IAAA,EAcSF,GAAA,MAdFC,GAAA,QACP,IAAAE,IAAAD,IAAA,IAAA,EAagBF,GAAA,UAbTG,IAAA,QAEP,IAAAC,IAAAC,GAAA,IAAA,EACAC,IAAAD,GAAA,IAAA,EACAE,IAAAF,GAAA,IAAA,EACAG,IAAAH,GAAA,IAAA,EACAI,IAAAJ,GAAA,IAAA,EACAK,IAAAL,GAAA,IAAA,EAEMM,IAAgB,OAAO,OAAOZ,IAAA,SAAiBI,IAAA,QAAWF,GAAA,QAAOQ,IAAMC,IAAON,IAAYE,IAAYC,IAASC,IAAe,CAAE,MAAAP,GAAA,OAAK,CAAE,EAE7ID,GAAA,QAAeW,IAGfC,GAAA,KAAAZ,EAAA,EACAY,GAAA,KAAAZ,EAAA,EACAY,GAAA,KAAAZ,EAAA,EACAY,GAAA,KAAAZ,EAAA,EACAY,GAAA,KAAAZ,EAAA,EACAY,GAAA,KAAAZ,EAAA,IC5BA,IAAAa,IAAAC,GAAA,CAAAC,IAAAC,MAAA,cACAA,IAAO,QAAU,SAAUC,EAAI,CAE7BA,EAAG,IAAMA,EAAG,KAGZA,EAAG,SAAWA,EAAG,GACjBA,EAAG,cAAgBA,EAAG,IACtBA,EAAG,YAAcA,EAAG,GACpBA,EAAG,iBAAmBA,EAAG,IAEzBA,EAAG,cAAgBA,EAAG,MACtBA,EAAG,iBAAmBA,EAAG,SAEzBA,EAAG,WAAa,SAAUC,EAAGC,EAAG,CAC9B,OAAOD,GAAKC,CACd,EACAF,EAAG,WAAa,SAAUC,EAAGC,EAAG,CAC9B,OAAOD,EAAIC,CACb,EACAF,EAAG,UAAY,SAAUC,EAAGC,EAAG,CAC7B,OAAOD,GAAKC,CACd,CACF,ICvBA,IAAAC,IAAAC,GAAA,CAAAC,IAAAC,MAAA,cAIAA,IAAO,QAAU,SAAUC,EAAU,CACnC,MAAO,CACL,gBAAiB,UAAY,CAC3BA,EAAS,MAAM,QAAQ,CACzB,EAEA,eAAgB,UAAY,CAC1BA,EAAS,MAAM,OAAO,CACxB,CACF,CACF,ICdA,IAAAC,IAAAC,GAAA,CAAAC,IAAAC,KAAA,cAKA,IAAMC,IAAgB,KAChBC,GAAW,MAA+B,QAChD,MAAqBA,EAAQ,EAE7B,SAASC,IAAcC,EAAO,CAC5B,OAAO,KAAKA,CAAK,EAAE,QAAQ,SAAUC,EAAG,CACtC,IAAMC,EAAQF,EAAMC,CAAC,EACjB,OAAOC,GAAU,UAAY,MAAM,QAAQA,CAAK,EAClDF,EAAMC,CAAC,EAAIH,GAAS,QAAQI,CAAK,EACxB,OAAOA,GAAU,UAAY,OAAQA,GAAS,OAAQA,IAC/DF,EAAMC,CAAC,EAAIH,GAAS,QAAQI,EAAM,GAAIA,EAAM,EAAE,EAElD,CAAC,CACH,CAEAN,GAAO,QAAU,SAAUO,EAAY,CACrC,OAAO,IAAIN,IAAc,EACtB,QAAQ,CACP,eAAgBE,GAClB,CAAC,EACA,MAAMI,CAAU,EAChB,QAAQL,EAAQ,CACrB,EAEAF,GAAO,QAAQ,SAAW,MAAsBE,EAAQ,EACxDF,GAAO,QAAQ,SAAWE,KC9B1B,IAAAM,GAAAC,GAAA,CAAAC,IAAAC,MAAA,cAOAA,IAAO,QAAU,sMCPjB,IAAAC,IAAAC,IAAA,IAAA,EACAC,IAAAD,IAAA,IAAA,EAEME,IAAW,CACf,SAAUD,IAAA,QACV,QAASF,IAAA,SAIX,SAASI,KAAS,CAChB,OAAI,OAAO,QAAW,UAAY,SAAU,OAEnC,OAAO,KAEZ,OAAO,QAAW,UAAY,SAAU,OAEnC,OAAO,KAET,IACT,CAEA,IAAMC,GAASD,IAAS,EACpBC,KAEFF,IAAS,QAAUE,GAAO,SAG5B,SAASC,IAAkBC,EAAmC,CAC5D,SAASC,EAAUC,EAAkD,CAuBnE,GAAI,OAAOA,GAAe,SAAU,CAClC,IAAMC,EAAWP,IAASI,CAAW,EAAEE,CAAU,EACjD,OAAIJ,IAAUE,IAAgB,UAErB,CAAE,KAAMG,EAAS,UAAYA,EAAS,IAAI,EAE5CA,MACF,IAAI,OAAOD,GAAe,WAC/B,MAAO,CAAE,KAAMA,CAAU,EAEzB,MAAM,MAAM,2CAA2C,EAE3D,CAEA,SAASE,EAAkBC,EAAWC,EAAgB,CAIpD,IAAMJ,EAAaG,EAAKC,CAAQ,EAC1BC,EAAiBP,EAAc,eAAiBM,EAChDE,EAAiBR,EAAc,aAAeM,EAChDJ,IAAeG,EAAKE,CAAc,IACpCF,EAAKE,CAAc,EAAIL,EACvBG,EAAKG,CAAc,EAAIP,EAAUC,CAAU,EAE/C,CAEA,SAASO,EAAsBJ,EAAWC,EAAgB,CACxD,OAAOD,EAAKL,EAAc,aAAeM,CAAQ,CACnD,CAeA,SAASI,EAASL,EAAWC,EAAkBK,EAAiB,CAU9D,OAAAP,EAAkBC,EAAMC,CAAQ,EAEzBG,EAAsBJ,EAAMC,CAAQ,EAAE,KAAK,OAAO,OAAO,CAAA,EAAID,EAAK,OAAS,CAAA,EAAIM,CAAS,CAAC,CAClG,CAEA,OAAOD,CACT,CAEA,IAAME,IAAUb,IAAkB,SAAS,EAGlCc,GAAA,QAAAD,IAFT,IAAME,IAAWf,IAAkB,UAAU,EAE3Bc,GAAA,SAAAC,uKCpHlB,IAAAC,IAAA,cACAC,IAAA,cAEAC,GAAAC,IAAA,IAAA,EACAC,IAAAD,IAAA,IAAA,EACAE,IAAA,KAGA,SAAwBC,IAASC,EAAuB,CACtDA,EAAS,OAAO,OACd,CACE,MAAO,GACP,MAAO,GACP,SAAU,SAAUC,EAAWC,EAAS,CACtC,MAAO,IAAMD,EAAE,QAAQ,CAAC,EAAI,KAAOC,EAAE,QAAQ,CAAC,EAAI,GACpD,EACA,MAAO,MAETF,CAAM,EAGR,IAAMG,EAAS,GAETC,KAAOX,IAAA,MAAM,EAChB,EAAE,SAAUY,EAAC,CACZ,OAAOA,EAAE,CAAC,CACZ,CAAC,EACA,EAAE,SAAUA,EAAC,CACZ,OAAOA,EAAE,CAAC,CACZ,CAAC,EAEH,SAASC,EAAcC,EAAmCC,EAAS,CACjE,OAAOD,EACJ,OAAO,MAAM,EACb,MAAMC,CAAI,EACV,KAAK,SAAU,MAAM,EACrB,KAAK,mBAAoB,KAAK,EAC9B,KAAK,UAAW,EAAG,EACnB,KAAK,IAAKJ,CAAI,CACnB,CAEA,IAAIK,EAAmBC,EAEvB,SAASC,EAAIC,EAAwC,CACnD,IAAMC,EAAOD,EAAU,UAAU,OAAO,EAAE,KAAK,SAAUP,EAAC,CACxD,MAAO,CAACA,CAAC,CACX,CAAC,EAGKS,EAAWD,EACd,MAAK,EACL,OAAO,GAAG,EACV,KAAK,QAAS,KAAK,EACnB,KAAK,YAAa,2BAA6Bb,EAAO,MAAM,GAAK,GAAG,EAGvES,EAAeI,EACZ,MAAMC,CAAQ,EACd,UAAU,aAAa,EACvB,KAAK,SAAUT,EAAC,CAEf,MAAO,CAACA,CAAC,CACX,CAAC,EAEHK,EAAgBD,EACb,MAAK,EACL,OAAO,GAAG,EACV,KAAK,QAAS,WAAW,EACzB,MAAM,UAAW,MAAM,EACvB,KAAK,UAAA,CACJ,IAAMF,KAAKb,IAAA,QAAS,IAAI,EACxBY,EAAcC,EAAI,CAChB,CAAC,EAAG,CAACP,EAAO,MAAM,KAAK,OAASG,CAAM,EACtC,CAAC,EAAGH,EAAO,MAAM,KAAK,OAASG,CAAM,EACtC,EACE,KAAK,QAAS,YAAY,EAC1B,MAAM,UAAW,MAAM,EAC1BG,EAAcC,EAAI,CAChB,CAAC,CAACP,EAAO,MAAM,KAAK,MAAQG,EAAQ,CAAC,EACrC,CAACH,EAAO,MAAM,KAAK,MAAQG,EAAQ,CAAC,EACrC,EACE,KAAK,QAAS,YAAY,EAC1B,MAAM,UAAW,MAAM,EAC1BI,EAAG,OAAO,QAAQ,EAAE,KAAK,IAAK,CAAC,EAC/BA,EAAG,OAAO,MAAM,EAAE,KAAK,YAAa,iBAAiB,CACvD,CAAC,EAGHE,EACG,MAAMC,CAAa,EACnB,UAAU,aAAa,EACvB,MAAM,UAAWV,EAAO,MAAQ,KAAO,MAAM,EAChDS,EACG,MAAMC,CAAa,EACnB,UAAU,aAAa,EACvB,MAAM,UAAWV,EAAO,MAAQ,KAAO,MAAM,CAClD,CAEA,OAAAW,EAAI,KAAO,SAAUI,EAAqC,CACxD,IAAIC,EACAC,EAAU,IACVC,EAAe,GACfjB,EAAGC,EAEDU,EAAYH,EAAa,MAAMC,CAAa,EAC5CS,EAAOnB,EAAO,MAAM,KACpBQ,EAAOI,EAAU,MAAK,EAAG,KACzBQ,EAASD,EAAK,OACdE,EAASF,EAAK,OACdG,EAAQH,EAAK,MACbI,EAASJ,EAAK,OAEdK,EAAKT,EAAY,EACjBU,EAAKV,EAAY,EAEvB,IAAKC,EAAI,EAAGA,EAAIR,EAAK,OAAQQ,GAAK,EAAG,CAKnC,GAAIR,EAAKQ,CAAC,EAAE,SAAWR,EAAKQ,CAAC,EAAE,SAAW,SACxC,SAGF,IAAMU,EAAQlB,EAAKQ,CAAC,EAAE,OAAS,CAAC,CAACrB,GAAA,QAAM,SAAQ,EAAIA,GAAA,QAAM,SAAQ,CAAE,EAC/DgC,EACJ,GAAIH,EAAKE,EAAM,CAAC,EAAI7B,IAAA,QAAQ,WAAa2B,EAAKE,EAAM,CAAC,EAAI7B,IAAA,QAAQ,UAAW,CAC1E,GAAI,CACF8B,KAAa7B,IAAA,SAAiBU,EAAKQ,CAAC,EAAG,KAAM,CAAE,EAAGQ,CAAE,CAAE,OAC5C,CAAA,CACZ,GAAI7B,GAAA,QAAM,cAAcgC,CAAU,EAAG,CACnC,IAAMC,EAAQ,KAAK,IAAID,EAAaF,CAAE,EAClCG,EAAQX,IACVA,EAAUW,EACVV,EAAeF,KAMvB,GAAIE,IAAiB,GAAI,CACvBjB,EAAIuB,EACAhB,EAAKU,CAAY,EAAE,QACrBjB,EAAI,KAAK,IAAIA,EAAGO,EAAKU,CAAY,EAAE,MAAM,CAAC,CAAC,EAC3CjB,EAAI,KAAK,IAAIA,EAAGO,EAAKU,CAAY,EAAE,MAAM,CAAC,CAAC,GAE7ChB,KAAIJ,IAAA,SAAiBU,EAAKU,CAAY,EAAG,KAAM,CAAE,EAAAjB,CAAC,CAAE,EAEpDU,EAAI,KAAI,EACRX,EAAO,MAAM,KAAK,aAAc,CAAE,EAAAC,EAAG,EAAAC,EAAG,MAAOgB,CAAY,CAAE,EAE7D,IAAMW,EAASlC,GAAA,QAAM,MAAMM,EAAGmB,EAAO,OAAO,CAACjB,CAAM,EAAGiB,EAAO,OAAOE,EAAQnB,CAAM,CAAC,EAE7E2B,EAASnC,GAAA,QAAM,MAAMO,EAAGmB,EAAO,OAAOE,EAASpB,CAAM,EAAGkB,EAAO,OAAO,CAAClB,CAAM,CAAC,EAC9E4B,EAAQpC,GAAA,QAAM,MAAMa,EAAKU,CAAY,EAAGA,CAAY,EAC1DN,EAAU,MAAM,QAAS,KAAK,EAC9BA,EAAU,KAAK,YAAa,aAAeQ,EAAOS,CAAM,EAAI,IAAMR,EAAOS,CAAM,EAAI,GAAG,EACtFlB,EAAU,OAAO,QAAQ,EAAE,KAAK,OAAQmB,CAAK,EAC7CnB,EAAU,OAAO,MAAM,EAAE,KAAK,OAAQmB,CAAK,EAAE,KAAK/B,EAAO,SAASC,EAAGC,EAAGgB,CAAY,CAAC,OAErFP,EAAI,KAAI,CAEZ,EAEAA,EAAI,KAAO,UAAA,CACTF,EAAa,MAAMC,CAAa,EAAE,MAAM,UAAW,IAAI,CACzD,EAEAC,EAAI,KAAO,UAAA,CACTF,EAAa,MAAMC,CAAa,EAAE,MAAM,UAAW,MAAM,CAC3D,EAEA,OAAO,KAAKV,CAAM,EAAE,QAAQ,SAAUgC,EAAM,CAC1CrC,GAAA,QAAM,aAAa,KAAKgB,EAAKX,EAAQgC,CAAM,CAC7C,CAAC,EAEMrB,CACT,CAzKAsB,GAAA,QAAAlC,2yBCRA,IAAAmC,GAAAC,IAAA,IAAA,EAEAC,IAAA,KACAC,IAAAC,IAAA,IAAA,EAMEJ,GAAA,QAA+B,SAAS,gBAAe,EAEzD,SAASK,IAAWC,EAA4B,CAC9C,IAAMC,EAAUJ,IAAA,QAAM,MAAMG,EAAc,MAAOA,EAAc,MAAOA,EAAc,QAAQ,EACtFE,EAASF,EAAc,OACvBG,EAASH,EAAc,OACvBI,EAAOD,EAAO,OAAM,EAAG,CAAC,EACxBE,EAAOF,EAAO,OAAM,EAAG,CAAC,EACxBG,EAAU,CAAA,EACZC,EACJ,IAAKA,EAAI,EAAGA,EAAIN,EAAQ,OAAS,EAAGM,GAAK,EAAG,CAC1C,IAAMC,EAAI,CAAE,GAAIP,EAAQM,CAAC,EAAG,GAAIN,EAAQM,EAAI,CAAC,CAAC,EACxCE,KAAIb,IAAA,UAASI,EAAc,EAAG,KAAM,CAAE,EAAAQ,CAAC,CAAE,EAC3C,CAACd,GAAA,SAAS,QAAQe,CAAC,GAAK,CAACf,GAAA,SAAS,QAAQe,CAAC,GAC7CH,EAAQ,KAAK,CAACE,EAAGC,CAAC,CAAC,EAEjBf,GAAA,SAAS,QAAQe,CAAC,GAEpBH,EAAQ,KAAK,IAAI,EAKrB,IAAKC,EAAI,EAAGA,EAAID,EAAQ,OAAS,EAAGC,GAAK,EACvC,GAAI,CAACD,EAAQC,CAAC,EAAG,CACf,IAAMG,EAAOJ,EAAQC,EAAI,CAAC,EACpBI,EAAOL,EAAQC,EAAI,CAAC,EACtBG,GAAQC,GAAQ,CAACjB,GAAA,SAAS,iBAAiBgB,EAAK,CAAC,EAAGC,EAAK,CAAC,CAAC,IAQzDD,EAAK,CAAC,EAAE,GAAKC,EAAK,CAAC,EAAE,KACvBD,EAAK,CAAC,EAAE,GAAK,KAAK,IAAIL,EAAMK,EAAK,CAAC,EAAE,EAAE,EACtCC,EAAK,CAAC,EAAE,GAAK,KAAK,IAAIP,EAAMO,EAAK,CAAC,EAAE,EAAE,GASpCD,EAAK,CAAC,EAAE,GAAKC,EAAK,CAAC,EAAE,KACvBD,EAAK,CAAC,EAAE,GAAK,KAAK,IAAIN,EAAMM,EAAK,CAAC,EAAE,EAAE,EACtCC,EAAK,CAAC,EAAE,GAAK,KAAK,IAAIN,EAAMM,EAAK,CAAC,EAAE,EAAE,IAM5C,OAAAL,EAAgB,SAAWJ,EAAOD,EAAQ,CAAC,CAAC,EAAIC,EAAOD,EAAQ,CAAC,CAAC,EAC5D,CAACK,CAAO,CACjB,CAEA,IAAIM,IACJ,SAASC,IAAUL,EAAaC,EAAW,CACzC,OAAOf,GAAA,SAAS,MAAMc,CAAC,EAAII,GAC7B,CAEA,SAASE,GAASN,EAAaC,EAAaM,EAAoB,CAC9D,IAAMC,KAASpB,IAAA,UAASmB,EAAG,KAAM,CAAE,EAAAP,EAAG,EAAAC,CAAC,CAAE,EAEzC,GAAI,CADaf,GAAA,SAAS,OAAOsB,CAAM,EAErC,OAAO,KAET,GAAIH,IAAUL,EAAGC,CAAC,EAChB,YAAK,KAAK,CAACD,EAAGC,CAAC,CAAC,EACT,KAET,IAAMQ,EAAOT,EAAE,IAAMA,EAAE,GAAKA,EAAE,IAAM,EAC9BU,EAAOT,EAAE,IAAMA,EAAE,GAAKA,EAAE,IAAM,EAC9BU,EAAO,CAAE,GAAIF,EAAM,GAAIT,EAAE,EAAE,EAC3BY,EAAO,CAAE,GAAIZ,EAAE,GAAI,GAAIS,CAAI,EAC3BI,EAAQ,CAAE,GAAIH,EAAM,GAAIT,EAAE,EAAE,EAC5Ba,EAAQ,CAAE,GAAIb,EAAE,GAAI,GAAIS,CAAI,EAElCJ,GAAS,KAAK,KAAMK,EAAME,EAAON,CAAC,EAClCD,GAAS,KAAK,KAAMK,EAAMG,EAAOP,CAAC,EAClCD,GAAS,KAAK,KAAMM,EAAMC,EAAON,CAAC,EAClCD,GAAS,KAAK,KAAMM,EAAME,EAAOP,CAAC,CACpC,CAEA,SAASQ,IAAWvB,EAA4B,CAC9C,IAAME,EAASF,EAAc,OACvBwB,EAAUxB,EAAc,OAAO,OAAM,EACrCyB,EAAUzB,EAAc,OAAO,OAAM,EACrCQ,EAAI,CAAE,GAAIgB,EAAQ,CAAC,EAAG,GAAIA,EAAQ,CAAC,CAAC,EACpCf,EAAI,CAAE,GAAIgB,EAAQ,CAAC,EAAG,GAAIA,EAAQ,CAAC,CAAC,EACpCnB,EAAe,CAAA,EAErB,OAAAM,IAAUV,EAAO,OAAO,CAAC,EAAIA,EAAO,OAAO,CAAC,EAC5CY,GAAS,KAAKR,EAASE,EAAGC,EAAGT,EAAc,CAAC,EAC5CM,EAAQ,SAAW,EACZ,CAACA,CAAO,CACjB,CAEA,IAAMoB,IAAqB,SAAiB1B,EAA4B,CACtE,IAAM2B,EAAU,CACd,SAAUJ,IACV,OAAQxB,KAEV,GAAI,CAAC,OAAO,OAAO4B,EAAS3B,EAAc,EAAE,MAAM,EAChD,MAAM,MAAMA,EAAc,EAAE,OAAS,6CAA6C,EAGpF,OAAO2B,EAAQ3B,EAAc,EAAE,MAAM,EAAE,MAAM,KAAM,SAAS,CAC9D,EAEA4B,GAAA,QAAeF,uKCzHf,IAAAG,GAAAC,IAAA,IAAA,EACAC,GAAA,KAeA,SAASC,IACPC,EACAC,EACAC,EACAC,EACAC,EAAa,CAEb,GAAI,CAACA,EACH,MAAO,CAAE,UAAW,GAAM,GAAAJ,EAAI,GAAAC,CAAE,EAElC,IAAMI,EAAI,GACJC,EAAKN,EAAG,CAAC,EACTO,EAAKN,EAAG,CAAC,EACTO,EAAUZ,GAAA,QAAM,SAASU,EAAIC,EAAIF,CAAC,EACpCI,EAAMC,EACV,QAASC,EAAI,EAAGA,EAAIN,EAAGM,GAAK,EAAG,CAC7B,IAAMC,EAAIJ,EAAQG,CAAC,EACbE,KAAIf,GAAA,SAASI,EAAG,KAAM,CAAE,EAAAU,CAAC,CAAE,EAEjC,GAAIH,EAAM,CACR,IAAMK,EAASD,EAAIJ,EAEnB,GADgBb,GAAA,QAAM,IAAIkB,CAAM,IAChBX,EACd,OAAOJ,IAAe,CAACW,EAAMD,CAAI,EAAG,CAACG,EAAGC,CAAC,EAAGX,EAAGC,EAAMC,EAAQ,CAAC,EAGlEK,EAAOI,EACPH,EAAOE,EAET,MAAO,CAAE,UAAW,GAAO,GAAAZ,EAAI,GAAAC,CAAE,CACnC,CAQA,SAASc,IAAMb,EAAsBc,EAAuBC,EAAyB,CACnF,IAAIC,EACEC,EAAyB,CAAA,EACzBC,EAAOH,EAAO,OAAM,EAAG,CAAC,EAAIrB,GAAA,QAAM,SAAQ,EAC1CyB,EAAOJ,EAAO,OAAM,EAAG,CAAC,EAAIrB,GAAA,QAAM,SAAQ,EAE5C0B,EAA6B,CAACN,EAAK,CAAC,CAAC,EAErCL,EAAI,EACJY,EAAS3B,GAAA,QAAM,SAAQ,EAC3B,KAAOe,EAAIK,EAAK,QAAQ,CACtB,IAAMQ,EAAOR,EAAKL,EAAI,CAAC,EAAE,CAAC,EAEpBG,EADOE,EAAKL,CAAC,EAAE,CAAC,EACAa,EAChBC,EAAU7B,GAAA,QAAM,IAAIkB,CAAM,EAEhC,GAEEQ,EAAU,QAAU,GAGpBJ,IAAYO,GAEZ,KAAK,IAAIX,EAASS,CAAM,EAAI,EAC5B,CAEA,IAAMG,EAAQ3B,IAAeiB,EAAKL,EAAI,CAAC,EAAGK,EAAKL,CAAC,EAAGT,EAAGuB,EAAS,CAAC,EAC5DC,EAAM,WAGRV,EAAKL,EAAI,CAAC,EAAE,CAAC,EAAIe,EAAM,GAAG,CAAC,EAC3BV,EAAKL,EAAI,CAAC,EAAE,CAAC,EAAIf,GAAA,QAAM,MAAM8B,EAAM,GAAG,CAAC,EAAGN,EAAMC,CAAI,EACpDF,EAAW,KAAKG,CAAS,EAGzBN,EAAKL,CAAC,EAAE,CAAC,EAAIe,EAAM,GAAG,CAAC,EACvBV,EAAKL,CAAC,EAAE,CAAC,EAAIf,GAAA,QAAM,MAAM8B,EAAM,GAAG,CAAC,EAAGN,EAAMC,CAAI,EAChDC,EAAY,CAACN,EAAKL,CAAC,CAAC,GAGpBW,EAAU,KAAKN,EAAKL,CAAC,CAAC,OAGxBW,EAAU,KAAKN,EAAKL,CAAC,CAAC,EAIpBW,EAAU,OAAS,IACrBC,EAASD,EAAUA,EAAU,OAAS,CAAC,EAAE,CAAC,EAAIA,EAAUA,EAAU,OAAS,CAAC,EAAE,CAAC,EAC/EJ,EAAUO,GAEZ,EAAEd,EAGJ,OAAIW,EAAU,QACZH,EAAW,KAAKG,CAAS,EAGpBH,CACT,CAEA,SAASQ,IAAOC,EAA4B,CAC1C,IAAMC,EAAOjC,GAAA,QAAM,MAAMgC,EAAc,MAAOA,EAAc,MAAOA,EAAc,QAAQ,EACnFE,EAAUF,EAAc,OAAO,OAAM,EAErCR,EAAOU,EAAQ,CAAC,EAAIlC,GAAA,QAAM,SAAQ,EAClCyB,EAAOS,EAAQ,CAAC,EAAIlC,GAAA,QAAM,SAAQ,EAClCoB,EAAgC,CAAA,EACtC,QAASL,EAAI,EAAGA,EAAIkB,EAAK,OAAQlB,GAAK,EAAG,CACvC,IAAMC,EAAIiB,EAAKlB,CAAC,EACZE,KAAIf,GAAA,SAAS8B,EAAc,EAAG,KAAM,CAAE,EAAAhB,CAAC,CAAE,EACzChB,GAAA,QAAM,cAAcgB,CAAC,GAAKhB,GAAA,QAAM,cAAciB,CAAC,IACjDA,EAAIjB,GAAA,QAAM,MAAMiB,EAAGO,EAAMC,CAAI,EAC7BL,EAAK,KAAK,CAACJ,EAAGC,CAAC,CAAC,GAIpB,OADkBE,IAAMa,EAAc,EAAGZ,EAAMY,EAAc,MAAM,CAErE,CAEA,SAASG,IAAWH,EAA4B,CAG9C,IAAMI,EAAkBJ,EAAc,EAAE,OAAS,CAAC,EAAG,EAAI,KAAK,EAAE,EAC1DK,EAAUrC,GAAA,QAAM,MAAMgC,EAAc,MAAOI,EAAiBJ,EAAc,QAAQ,EAClFpB,EAAU,CAAA,EAChB,QAAS,EAAI,EAAG,EAAIyB,EAAQ,OAAQ,GAAK,EAAG,CAC1C,IAAMC,EAAID,EAAQ,CAAC,EACbrB,KAAId,GAAA,SAAS8B,EAAc,EAAG,IAAK,CAAE,EAAAM,CAAC,CAAE,EACxCrB,KAAIf,GAAA,SAAS8B,EAAc,EAAG,IAAK,CAAE,EAAAM,CAAC,CAAE,EAC9C1B,EAAQ,KAAK,CAACI,EAAGC,CAAC,CAAC,EAErB,MAAO,CAACL,CAAO,CACjB,CAEA,SAAS2B,IAAMP,EAA4B,CAGzC,IAAMQ,EAAaR,EAAc,EAAE,OAAS,CAAC,CAAC,KAAK,GAAI,KAAK,EAAE,EACxDS,EAAezC,GAAA,QAAM,MAAMgC,EAAc,MAAOQ,EAAYR,EAAc,QAAQ,EAClFpB,EAAU,CAAA,EAChB,QAAS,EAAI,EAAG,EAAI6B,EAAa,OAAQ,GAAK,EAAG,CAC/C,IAAMC,EAAQD,EAAa,CAAC,EACtBE,KAAIzC,GAAA,SAAS8B,EAAc,EAAG,IAAK,CAAE,MAAAU,CAAK,CAAE,EAC5C1B,EAAI2B,EAAI,KAAK,IAAID,CAAK,EACtBzB,EAAI0B,EAAI,KAAK,IAAID,CAAK,EAC5B9B,EAAQ,KAAK,CAACI,EAAGC,CAAC,CAAC,EAErB,MAAO,CAACL,CAAO,CACjB,CAEA,SAASgC,IAAOZ,EAA4B,CAC1C,MAAO,CAACA,EAAc,EAAE,MAAM,CAChC,CAEA,SAASa,IAAOC,EAA2B,CACzC,IAAMxC,EAAIwC,EAAa,EACvB,OAAAxC,EAAE,OAASA,EAAE,QAAU,CAAC,EAAG,CAAC,EACrB,CAAC,CAACA,EAAE,OAAQ,CAACA,EAAE,OAAO,CAAC,EAAIA,EAAE,OAAO,CAAC,EAAGA,EAAE,OAAO,CAAC,EAAIA,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAC5E,CAEA,IAAMyC,IAAqB,SAAiBf,EAA4B,CACtE,IAAMgB,EAAU,CACd,WAAAb,IACA,MAAAI,IACA,OAAAK,IACA,OAAAC,IACA,OAAAd,KAEF,GAAI,EAAEC,EAAc,EAAE,UAAUgB,GAC9B,MAAM,MAAMhB,EAAc,EAAE,OAAS,4CAA4C,EAGnF,OAAOgB,EAAQhB,EAAc,EAAE,MAAM,EAAE,MAAM,KAAM,SAAS,CAC9D,EAEAiB,GAAA,QAAeF,qKC9Lf,IAAAG,IAAAC,GAAA,IAAA,EACAC,IAAAD,GAAA,KAAA,EACAE,IAAAF,GAAA,KAAA,EAUA,SAASG,IAAiBC,EAA0BC,EAAoB,CACtE,IAAMC,EAAQD,EAAE,OAAS,CAAC,KAAW,GAAQ,EACvCE,EAAQ,KAAK,IAAIH,EAAM,OAAM,EAAG,CAAC,EAAGE,EAAM,CAAC,CAAC,EAC5CE,EAAM,KAAK,IAAIJ,EAAM,OAAM,EAAG,CAAC,EAAGE,EAAM,CAAC,CAAC,EAChD,MAAO,CAACC,EAAOC,CAAG,CACpB,CAUA,SAASC,IAASC,EAAcL,EAAoB,CAClD,IAAMC,EAAQH,IAAiBO,EAAM,KAAK,OAAQL,CAAC,EAE/CM,EACJ,GAAIN,EAAE,UAAY,UAChBM,EAAYT,IAAA,gBACHG,EAAE,UAAY,WACvBM,EAAYV,IAAA,YAEZ,OAAM,IAAI,MAAM,4BAA4BI,EAAE,OAAO,EAAE,EAGzD,IAAMO,EAAWP,EAAE,UAAY,KAAK,IAAIN,IAAA,QAAQ,eAAgBA,IAAA,QAAQ,oBAAsBW,EAAM,KAAK,MAAQ,CAAC,EAE5GG,EAAOF,EAAU,CACrB,EAAAN,EACA,MAAAC,EACA,OAAQI,EAAM,KAAK,OACnB,OAAQA,EAAM,KAAK,OACnB,MAAOA,EAAM,QAAQ,MACrB,MAAOA,EAAM,QAAQ,MACrB,SAAAE,EACD,EAGD,OAAAF,EAAM,KAAK,OAAQG,EAAMR,EAAE,MAAOA,EAAE,QAAQ,EACrCQ,CACT,CAEAC,GAAA,QAAeL,uKCxDf,IAAAM,IAAA,cACAC,GAAA,cAEAC,GAAAC,IAAA,IAAA,EACAC,IAAAD,IAAA,IAAA,EAKA,SAAwBE,IAASC,EAAY,CAC3C,SAASC,EAASC,EAAsD,CACtEA,EAAU,KAAK,SAAUC,EAAC,CACxB,IAAMC,EAAOH,EAAiB,MAAKP,IAAA,QAAS,IAAI,EAC1CW,EAAQF,EAAE,MACVG,KAAgBR,IAAA,SAASE,EAAOG,CAAC,EACjCI,EAAQX,GAAA,QAAM,MAAMO,EAAGE,CAAK,EAG5BG,EAAiBJ,EAAG,UAAU,oBAAoB,EAAE,KAAKE,CAAa,EAEtEG,EAAST,EAAM,KAAK,OAAO,MAAK,EAClCU,EAAOD,EAAO,CAAC,EACfE,EAAOF,EAAO,CAAC,EAEbG,EAAOF,EAAOC,EACpBD,GAAQE,EAAO,IACfD,GAAQC,EAAO,IACXT,EAAE,kBACJO,EAAOd,GAAA,QAAM,SAAQ,EACrBe,EAAO,CAACf,GAAA,QAAM,SAAQ,GAGxB,SAASiB,EAAEV,EAAW,CACpB,OAAOP,GAAA,QAAM,MAAMI,EAAM,KAAK,OAAOG,EAAE,CAAC,CAAC,EAAGQ,EAAMD,CAAI,CACxD,CAEA,IAAMI,KAAOnB,GAAA,MAAM,EAChB,MAAMA,GAAA,WAAa,EACnB,EAAE,SAAUQ,EAAC,CACZ,OAAOH,EAAM,KAAK,OAAOG,EAAE,CAAC,CAAC,CAC/B,CAAC,EACA,EAAEU,CAAC,EACAE,KAAOpB,GAAA,MAAM,EAChB,EAAE,SAAUQ,EAAC,CACZ,OAAOH,EAAM,KAAK,OAAOG,EAAE,CAAC,CAAC,CAC/B,CAAC,EACA,GAAGH,EAAM,KAAK,OAAO,CAAC,CAAC,EACvB,GAAGa,CAAC,EAEDG,EAAM,aAAaX,CAAK,GACxBY,EAAsBT,EACzB,MAAK,EACL,OAAO,MAAM,EACb,KAAK,QAASQ,CAAG,EACjB,KAAK,eAAgB,CAAC,EACtB,KAAK,iBAAkB,OAAO,EAGjCR,EAAe,MAAMS,CAAmB,EAAE,KAAK,UAAA,CAC7C,IAAMC,KAAOxB,IAAA,QAAS,IAAI,EACtByB,EAiBJ,GAhBIhB,EAAE,QACJe,EAAK,KAAK,OAAQX,CAAK,EACvBW,EAAK,KAAK,eAAgB,EAAG,EAC7BC,EAAQJ,IAERG,EAAK,KAAK,OAAQ,MAAM,EACxBC,EAAQL,GAEVI,EACG,KAAK,SAAUX,CAAK,EACpB,KAAK,aAAc,UAAA,CAElB,OAAOJ,EAAE,SAAW,SAAW,QAAUH,EAAM,SAAW,IAAM,IAClE,CAAC,EACA,KAAK,IAAKmB,CAAK,EAEdhB,EAAE,KACJ,QAAWiB,KAAKjB,EAAE,KAAM,CAGtB,IAAIkB,EAAMlB,EAAE,KAAKiB,CAAC,EACdA,IAAM,UACRC,EAAM,GAAGL,CAAG,IAAIb,EAAE,KAAKiB,CAAC,CAAC,IAE3BF,EAAK,KAAKE,EAAGC,CAAG,EAGtB,CAAC,EAGDb,EAAe,KAAI,EAAG,OAAM,CAC9B,CAAC,CACH,CAEA,OAAOP,CACT,CAvFAqB,GAAA,QAAAvB,uKCTA,IAAAwB,IAAA,cAEAC,IAAAC,IAAA,IAAA,EACAC,IAAAD,IAAA,IAAA,EAKA,SAAwBE,IAASC,EAAY,CAC3C,IAAIC,EACEC,EAASF,EAAM,KAAK,OACpBG,EAASH,EAAM,KAAK,OAE1B,SAASI,EAAWC,EAAaC,EAAaC,EAAaC,EAAW,CAcpE,GAAID,EAAMC,EAAK,CACb,IAAMC,EAAIF,EACVA,EAAMC,EACNA,EAAMC,EAER,IAAMC,EAAK,KAAK,IAAIJ,EAAKE,CAAG,EACtBG,EAAK,KAAK,IAAIN,EAAKE,CAAG,EAC5B,OAAII,EAAKD,EAEA,CAAC,CAACT,EAAgB,CAAC,EAErB,CAACU,EAAID,CAAE,CAChB,CAEA,IAAME,EAAO,SAAUC,EAAsBC,EAAe,CAC1D,IAAIC,EAAO,GACLC,EAAQb,EAAO,MAAK,EACpBc,EAAO,KAAK,IAAI,MAAM,KAAMD,CAAK,EACjCE,EAAO,KAAK,IAAI,MAAM,KAAMF,CAAK,EACvC,QAASG,EAAI,EAAGC,EAASP,EAAO,OAAQM,EAAIC,EAAQD,GAAK,EACvD,GAAIN,EAAOM,CAAC,EAAG,CACb,IAAME,EAAIR,EAAOM,CAAC,EAAE,CAAC,EACfG,EAAIT,EAAOM,CAAC,EAAE,CAAC,EACjBI,EAAMD,EAAE,GACRE,EAAMF,EAAE,GAERR,IACFS,EAAM,KAAK,IAAIA,EAAK,CAAC,EACrBC,EAAM,KAAK,IAAIA,EAAK,CAAC,GAGvB,IAAMC,EAAQvB,EAAOmB,EAAE,EAAE,EAAKR,EAAe,SAAW,EAClDa,EAAYtB,EAChBa,EACAC,EACA,SAASM,CAAG,EAAIrB,EAAOqB,CAAG,EAAI,KAC9B,SAASD,CAAG,EAAIpB,EAAOoB,CAAG,EAAI,GAAQ,EAElClB,EAAMqB,EAAU,CAAC,EACjBpB,EAAMoB,EAAU,CAAC,EACvBX,GAAQ,MAAQU,EAAQ,IAAMpB,EAC9BU,GAAQ,MAAQ,KAAK,IAAIT,EAAMD,EAAKJ,CAAc,EAGtD,OAAOc,CACT,EAEA,SAASY,EAASC,EAAsD,CACtEA,EAAU,KAAK,SAAUC,EAAC,CACxB,IAAMC,EAAOH,EAAiB,MAAKhC,IAAA,QAAS,IAAI,EAC1CoC,EAAQF,EAAE,MACVf,EAASe,EAAE,OACXG,KAAgBpC,IAAA,SAASI,EAAO6B,CAAC,EACjCI,EAAiBH,EAAG,UAAU,oBAAoB,EAAE,KAAKE,CAAa,EAG5E/B,EAAiB,KAAK,IAAI+B,EAAc,CAAC,EAAE,SAAU,CAAC,EAEtD,IAAME,EAAM,aAAaH,CAAK,GACxBI,EAAsBF,EAAe,MAAK,EAAG,OAAO,MAAM,EAAE,KAAK,QAASC,CAAG,EAAE,KAAK,OAAQ,MAAM,EAGlGN,EAAYK,EACf,MAAME,CAAmB,EACzB,KAAK,eAAgBlC,CAAc,EACnC,KAAK,SAAUH,IAAA,QAAM,MAAM+B,EAAGE,CAAK,CAAQ,EAC3C,KAAK,UAAWjB,EAAS,GAAM,CAAC,EAChC,KAAK,IAAK,SAAUe,EAAe,CAClC,OAAOjB,EAAKiB,EAAGf,CAAM,CACvB,CAAC,EAEH,GAAIe,EAAE,KACJ,QAAWO,KAAKP,EAAE,KAAM,CAGtB,IAAIQ,EAAMR,EAAE,KAAKO,CAAC,EACdA,IAAM,UACRC,EAAM,GAAGH,CAAG,IAAIL,EAAE,KAAKO,CAAC,CAAC,IAE3BR,EAAU,KAAKQ,EAAGC,CAAG,EAIzBJ,EAAe,KAAI,EAAG,OAAM,CAC9B,CAAC,CACH,CAEA,OAAON,CACT,CA3GAW,GAAA,QAAAvC,uKCRA,IAAAwC,IAAA,cACAC,IAAA,cAEAC,IAAAC,IAAA,IAAA,EACAC,IAAAD,IAAA,IAAA,EAKA,SAAwBE,IAAQC,EAAY,CAC1C,IAAMC,EAASD,EAAM,KAAK,OACpBE,EAASF,EAAM,KAAK,OAE1B,SAASG,EAAQC,EAAsD,CACrEA,EAAU,KAAK,SAAUC,EAAC,CACxB,IAAIC,EAAGC,EACDC,EAAQH,EAAE,MACVI,EAAQb,IAAA,QAAM,MAAMS,EAAGG,CAAK,EAC5BE,KAAgBZ,IAAA,SAASE,EAAOK,CAAC,EAIjCM,EAAS,CAAA,EACf,IAAKL,EAAI,EAAGA,EAAII,EAAc,OAAQJ,GAAK,EACzC,IAAKC,EAAI,EAAGA,EAAIG,EAAcJ,CAAC,EAAE,OAAQC,GAAK,EAC5CI,EAAO,KAAKD,EAAcJ,CAAC,EAAEC,CAAC,CAAC,EAInC,IAAMK,KAAiBlB,IAAA,QAAS,IAAI,EAAE,UAAU,yBAAyB,EAAE,KAAKiB,CAAM,EAEhFE,EAAM,mBAAmBL,CAAK,GAC9BM,EAAsBF,EAAe,MAAK,EAAG,OAAO,QAAQ,EAAE,KAAK,QAASC,CAAG,EAE/ET,EAAYQ,EACf,MAAME,CAAmB,EACzB,KAAK,UAAQnB,IAAA,KAAMc,EAAM,SAAQ,CAAE,EAAE,SAAS,GAAG,EAAE,UAAS,CAAE,EAC9D,KAAK,SAAUA,CAAK,EACpB,KAAK,UAAW,EAAG,EACnB,KAAK,IAAK,CAAC,EACX,KAAK,KAAM,SAAUJ,EAAC,CACrB,OAAOJ,EAAOI,EAAE,CAAC,CAAC,CACpB,CAAC,EACA,KAAK,KAAM,SAAUA,EAAC,CACrB,OAAOH,EAAOG,EAAE,CAAC,CAAC,CACpB,CAAC,EAEH,GAAIA,EAAE,KACJ,QAAWU,KAAKV,EAAE,KAAM,CAGtB,IAAIW,EAAMX,EAAE,KAAKU,CAAC,EACdA,IAAM,UACRC,EAAM,GAAGH,CAAG,IAAIR,EAAE,KAAKU,CAAC,CAAC,IAE3BX,EAAU,KAAKW,EAAGC,CAAG,EAIzBJ,EAAe,KAAI,EAAG,OAAM,CAC9B,CAAC,CACH,CAEA,OAAOT,CACT,CAvDAc,GAAA,QAAAlB,uKCTA,IAAAmB,IAAA,cACAC,IAAA,cAEAC,IAAAC,IAAA,IAAA,EAKA,SAAwBC,IAAKC,EAAY,CACvC,IAAMC,EAASD,EAAM,KAAK,OACpBE,EAASF,EAAM,KAAK,OAE1B,SAASG,EAAKC,EAAsD,CAClEA,EAAU,KAAK,SAAUC,EAAC,CAExBA,EAAE,QAAU,UACZA,EAAE,OAAS,SAEX,IAAMC,KAAiBX,IAAA,QAAS,IAAI,EAAE,UAAU,uBAAuB,EAAE,KAAK,CAACU,EAAE,QAAQ,CAAC,EACpFE,EAAsBD,EAAe,MAAK,EAAG,OAAO,MAAM,EAAE,KAAK,QAAS,mBAAmBD,EAAE,KAAK,EAAE,EAEtGG,EAAQX,IAAA,QAAM,MAAMQ,EAAGA,EAAE,KAAK,EAG9BD,EAAYE,EACf,MAAMC,CAAmB,EACzB,KAAK,UAAQX,IAAA,KAAMY,EAAM,SAAQ,CAAE,EAAE,SAAS,GAAG,EAAE,UAAS,CAAE,EAC9D,KAAK,IAAMH,GAAMJ,EAAOI,EAAE,CAAC,CAAC,CAAC,EAC7B,KAAK,IAAMA,GAAMH,EAAOG,EAAE,CAAC,CAAC,CAAC,EAC7B,KAAK,IAAMA,EAAE,IAAI,EAEpB,GAAIA,EAAE,KACJ,QAAWI,KAAKJ,EAAE,KAChBD,EAAU,KAAKK,EAAGJ,EAAE,KAAKI,CAAC,CAAC,EAK/BH,EAAe,KAAI,EAAG,OAAM,CAC9B,CAAC,CACH,CAEA,OAAOH,CACT,CAnCAO,GAAA,QAAAX,uNCRA,IAAAY,IAAAC,GAAA,KAAA,EAKSC,GAAA,SALFF,IAAA,QACP,IAAAG,IAAAF,GAAA,KAAA,EAImBC,GAAA,SAJZC,IAAA,QACP,IAAAC,IAAAH,GAAA,KAAA,EAG6BC,GAAA,QAHtBE,IAAA,QACP,IAAAC,IAAAJ,GAAA,KAAA,EAEsCC,GAAA,KAF/BG,IAAA,wFCDP,SAAwBC,IAAcC,EAAoB,CAExD,MAAM,cAAeA,IACnBA,EAAE,UAAY,YAKV,YAAaA,IACjBA,EAAE,QAAUA,EAAE,YAAc,WAAa,UAAY,YAKjD,WAAYA,IAChBA,EAAE,OAAS,UAGNA,CACT,CAnBAC,GAAA,QAAAF,uKCFA,IAAAG,IAAA,cAEAC,IAAA,KACAC,IAAA,KACAC,IAAAC,IAAA,IAAA,EACAC,IAAAD,IAAA,IAAA,EAKA,SAAwBE,IAAWC,EAAY,CAC7C,IAAMC,KAAkBL,IAAA,SAAc,CACpC,SAAU,GACV,QAAS,GACT,gBAAiB,GACjB,SAAU,EACV,UAAW,WACZ,EAED,SAASM,EAAYC,EAAoB,CACvC,GAAI,CAACA,EAAE,WACL,MAAO,CAAA,EAET,IAAMC,EAAK,OAAOD,EAAE,WAAW,IAAO,SAAWA,EAAE,WAAW,GAAKL,IAAA,QAAM,SAAQ,EACjF,OAAAG,EAAgB,MAAQE,EAAE,MAC1BF,EAAgB,MAAQ,CACtB,KAAGN,IAAA,SAAiBQ,EAAE,WAAY,KAAM,CAAE,EAAGC,CAAE,CAAE,EACjD,GAAAA,EACA,MAAIT,IAAA,SAAiBQ,EAAG,KAAM,CAAE,EAAGC,CAAE,CAAE,GAEzCH,EAAgB,GAAK,oBACd,CAACA,CAAe,CACzB,CAEA,SAASI,EAAgBF,EAAoB,CAC3C,IAAMG,EAAO,KACRH,EAAE,YAGHA,EAAE,WAAW,mBAAqB,CAACA,EAAE,WAAW,kBAClDA,EAAE,WAAW,gBAAkB,SAAU,CAAE,EAAAI,CAAC,EAAO,CAG7CJ,EAAE,aACJA,EAAE,WAAW,GAAKI,GAGpBR,EAAWO,CAAI,CACjB,EAGAN,EAAM,GAAG,aAAcG,EAAE,WAAW,eAAe,EAEvD,CAEA,IAAMJ,EAAa,SAAUS,EAAsD,CACjFA,EAAU,KAAK,SAAUL,EAAC,CACxB,IAAMM,KAAKhB,IAAA,QAAS,IAAI,EAClBiB,EAAOR,EAAY,KAAKM,EAAWL,CAAC,EAC1CE,EAAgB,KAAKG,EAAWL,CAAC,EACjC,IAAMQ,EAAiBF,EAAG,UAAU,cAAc,EAAE,KAAKC,CAAI,EAEvDE,EAAsBD,EAAe,MAAK,EAAG,OAAO,GAAG,EAAE,KAAK,QAAS,YAAY,EAGzFA,EAAe,MAAMC,CAAmB,EAAE,QAAKlB,IAAA,UAASM,CAAK,CAAC,EAI9DW,EAAe,MAAMC,CAAmB,EAAE,UAAU,MAAM,EAAE,KAAK,UAAW,EAAG,EAE/ED,EAAe,KAAI,EAAG,OAAM,CAC9B,CAAC,CACH,EAEA,OAAOZ,CACT,CAlEAc,GAAA,QAAAd,uKCVA,IAAAe,IAAA,cAEAC,IAAA,KACAC,IAAAC,IAAA,IAAA,EACAC,IAAA,KACAC,IAAAF,IAAA,IAAA,EAKA,SAAwBG,IAAOC,EAAY,CACzC,IAAMC,KAAiBN,IAAA,SAAc,CACnC,SAAU,GACV,QAAS,GACT,gBAAiB,GACjB,SAAU,EACV,UAAW,WACZ,EAED,SAASO,EAAaC,EAA6B,CACjDA,EAAM,GAAKA,EAAM,GAAKA,EAAM,KAAOA,EAAM,GAAKA,EAAM,GACtD,CAEA,SAASC,EAAWC,EAAsBN,EAA+B,CACvE,GAAI,EAAE,OAAQA,GACZ,MAAM,MAAM,4CAA4C,EAE1DA,EAAO,MAAQA,EAAO,OAAS,CAAA,EAE/B,IAAMO,EAAKP,EAAO,GACZQ,EAAK,OAAOR,EAAO,IAAO,SAAWA,EAAO,GAAKD,IAAA,QAAM,SAAQ,EACrE,OAAO,OAAOC,EAAO,MAAO,CAC1B,GAAAO,EACA,GAAAC,EACA,MAAIb,IAAA,SAAiBW,EAAG,KAAM,CAAE,EAAGC,CAAE,CAAE,EACvC,MAAIZ,IAAA,SAAiBW,EAAG,KAAM,CAAE,EAAGE,CAAE,CAAE,EACxC,EACDL,EAAaH,EAAO,KAAK,CAC3B,CAEA,SAASS,EAAMH,EAAsBN,EAA+B,CAClEK,EAAWC,EAAGN,CAAM,EACpBA,EAAO,GAAK,mBACd,CAEA,SAASU,EAAiBJ,EAAsBK,EAAqC,CACnF,IAAMC,EAAO,KACTD,EAAa,mBAAqB,CAACA,EAAa,kBAClDA,EAAa,gBAAkB,SAAU,CAAE,EAAAE,CAAC,EAAO,CACjDF,EAAa,GAAKE,EAClBR,EAAWC,EAAGK,CAAY,EAC1BX,EAAOY,CAAI,CACb,EACAX,EAAM,GAAG,aAAcU,EAAa,eAAe,EAEvD,CAEA,SAASG,EAAaR,EAAoB,CACxC,IAAMM,EAAO,KACPG,EAAO,CAAA,EACbT,EAAE,QAAUA,EAAE,SAAW,CAAA,EACzB,QAASU,EAAI,EAAGA,EAAIV,EAAE,QAAQ,OAAQU,GAAK,EAAG,CAC5C,IAAMhB,EAAUM,EAAE,QAAQU,CAAC,EAAI,OAAO,OAAO,CAAA,EAAId,EAAgBI,EAAE,QAAQU,CAAC,CAAC,EAE7EhB,EAAO,MAAQM,EAAE,MACZN,EAAO,KACVS,EAAM,KAAKG,EAAMN,EAAGN,CAAM,EAC1BU,EAAiB,KAAKE,EAAMN,EAAGN,CAAM,GAEvCe,EAAK,KAAKf,CAAM,EAElB,OAAOe,CACT,CAEA,SAASf,EAAOiB,EAAsD,CACpEA,EAAU,KAAK,SAAUX,EAAC,CACxB,IAAMY,KAAKxB,IAAA,QAAS,IAAI,EAClBqB,EAAOD,EAAa,KAAKG,EAAWX,CAAC,EACrCa,EAAiBD,EAAG,UAAU,UAAU,EAAE,KAAKH,CAAI,EAEnDK,EAAsBD,EAAe,MAAK,EAAG,OAAO,GAAG,EAAE,KAAK,QAAS,QAAQ,EAGrFA,EAAe,MAAMC,CAAmB,EAAE,QAAKtB,IAAA,UAASG,CAAK,CAAC,EAG9DkB,EAAe,MAAMC,CAAmB,EAAE,UAAU,MAAM,EAAE,KAAK,UAAW,EAAG,EAG/ED,EAAe,KAAI,EAAG,OAAM,CAC9B,CAAC,CACH,CAEA,OAAOnB,CACT,CApFAqB,GAAA,QAAArB,sKCVA,IAAAsB,IAAA,cACAC,IAAAC,IAAA,KAAA,EACAC,IAAAD,IAAA,KAAA,EAIA,SAAwBE,IAAQC,EAAY,CAC1C,SAASC,EAAOC,EAAwC,CACtDA,EAAU,KAAK,UAAA,CACb,IAAMC,KAAKR,IAAA,QAAS,IAAI,EACxBQ,EAAG,QAAKP,IAAA,SAAWI,CAAK,CAAC,EACzBG,EAAG,QAAKL,IAAA,SAAOE,CAAK,CAAC,CACvB,CAAC,CACH,CAEA,OAAOC,CACT,CAVAG,GAAA,QAAAL,sLCNA,IAAAM,IAAA,cACAC,IAAA,cACAC,IAAA,cACAC,IAAA,cACAC,IAAA,cAEAC,GAAA,cACAC,IAAA,cACAC,IAAAC,GAAA,IAAA,EAIAC,IAAAD,GAAA,IAAA,EACAE,IAAAF,GAAA,KAAA,EACAG,IAAAH,GAAA,IAAA,EACAI,IAAAJ,GAAA,IAAA,EACAK,GAAAL,GAAA,IAAA,EAiCA,SAASM,IAAWC,EAAsB,CACxC,OAAIA,IAAS,SAAiBb,IAAA,YACvBA,IAAA,QACT,CA4BA,IAAac,GAAb,MAAaC,UAAcV,IAAA,QAAa,YAAY,CAyClD,YAAYW,EAA4B,CACtC,MAAK,EAEL,IAAMC,EAAI,KAAK,OAAM,EACfC,EAAS,OAAO,aAAa,KAAK,MAAMD,EAAI,EAAE,EAAI,EAAE,EAC1D,KAAK,QAAUD,EACf,KAAK,GAAKE,EAASD,EAAE,SAAS,EAAE,EAAE,OAAO,CAAC,EAC1C,KAAK,QAAQ,GAAK,KAAK,GACvB,KAAK,SAAW,KAAK,GAAK,UAC1BF,EAAM,MAAM,KAAK,EAAE,EAAI,KACvB,KAAK,aAAe,CAAC,IAAI,EACzB,KAAK,KAAO,CAAA,EACZ,KAAK,oBAAmB,CAC1B,CAaA,OAAK,CACH,YAAK,aAAY,EACjB,KAAK,iBAAgB,EACd,IACT,CAEQ,kBAAgB,CACtB,SAAOZ,GAAA,QAAS,KAAK,QAAQ,MAAa,EACvC,OAAO,gBAAgB,EACvB,KAAI,CACT,CAOQ,iBAAe,CACrB,IAAIgB,EAAiB,KACfC,EAAa,KAAK,iBAAgB,EACxC,OAAIA,IACFD,EAAkBC,EAAmB,UAEhCD,CACT,CAEA,cAAY,CACV,IAAME,EAAU,KAAK,KAAK,OAAS,CAAE,KAAM,GAAI,MAAO,GAAI,IAAK,GAAI,OAAQ,EAAE,EAEzE,KAAK,QAAQ,QACf,KAAK,KAAK,OAAO,IAAM,IAGzB,KAAK,KAAK,OAAS,KAAK,QAAQ,OAASV,GAAA,QAAQ,eAAiBU,EAAO,KAAOA,EAAO,MACvF,KAAK,KAAK,QAAU,KAAK,QAAQ,QAAUV,GAAA,QAAQ,gBAAkBU,EAAO,IAAMA,EAAO,OAEzF,KAAK,eAAc,CACrB,CAEA,gBAAc,CACZ,IAAMC,EAAO,KAEPC,KAAgBxB,IAAA,QAAS,IAAI,EACnC,SAASyB,EAAUC,EAAS,CAG1B,OADa,KAAK,IAAIA,CAAC,EAAI,KAAK,MAAM,KAAK,IAAIA,CAAC,CAAC,EACtC,EACFA,EAAE,SAAQ,EAEVF,EAAcE,CAAC,CAE1B,CAEA,SAASC,EAAcC,EAAgB,CAErC,IAAMC,EAAQD,EAAO,CAAC,EAAIA,EAAO,CAAC,EAClC,OAAQL,EAAK,KAAK,OAASM,EAASN,EAAK,KAAK,KAChD,CAEA,KAAK,QAAQ,MAAQ,KAAK,QAAQ,OAAS,CAAA,EAC3C,KAAK,QAAQ,MAAM,KAAO,KAAK,QAAQ,MAAM,MAAQ,SAErD,KAAK,QAAQ,MAAQ,KAAK,QAAQ,OAAS,CAAA,EAC3C,KAAK,QAAQ,MAAM,KAAO,KAAK,QAAQ,MAAM,MAAQ,SAErD,IAAMO,EAAW,KAAK,KAAK,QAAW,SAAUC,EAAI,CAClD,GAAIA,EAAK,OACP,OAAOA,EAAK,OAEd,GAAIA,EAAK,OAAS,SAEhB,MAAO,CAAC,IAAU,EAAG,GAAS,CAAC,EAC1B,GAAIA,EAAK,OAAS,MACvB,MAAO,CAAC,EAAG,EAAE,EAEf,MAAM,MAAM,aAAeA,EAAK,KAAO,cAAc,CACvD,EAAG,KAAK,QAAQ,KAAK,EAEfC,EAAW,KAAK,KAAK,QAAW,SAAUD,EAAI,CAClD,GAAIA,EAAK,OACP,OAAOA,EAAK,OAEd,IAAME,EAASN,EAAcG,CAAO,EACpC,GAAIC,EAAK,OAAS,SAChB,MAAO,CAAC,CAACE,EAAS,EAAGA,EAAS,CAAC,EAC1B,GAAIF,EAAK,OAAS,MACvB,MAAO,CAAC,EAAG,EAAE,EAEf,MAAM,MAAM,aAAeA,EAAK,KAAO,cAAc,CACvD,EAAG,KAAK,QAAQ,KAAK,EAEhB,KAAK,KAAK,SACb,KAAK,KAAK,OAASlB,IAAW,KAAK,QAAQ,MAAM,IAAI,EAAC,GAExD,KAAK,KAAK,OACP,OAAOiB,CAAO,EAEd,MAAM,KAAK,QAAQ,MAAM,OAAS,CAAC,KAAK,KAAK,MAAO,CAAC,EAAI,CAAC,EAAG,KAAK,KAAK,KAAK,CAAC,EAE3E,KAAK,KAAK,SACb,KAAK,KAAK,OAASjB,IAAW,KAAK,QAAQ,MAAM,IAAI,EAAC,GAExD,KAAK,KAAK,OACP,OAAOmB,CAAO,EAEd,MAAM,KAAK,QAAQ,MAAM,OAAS,CAAC,EAAG,KAAK,KAAK,MAAM,EAAI,CAAC,KAAK,KAAK,OAAQ,CAAC,CAAC,EAE7E,KAAK,KAAK,QACb,KAAK,KAAK,SAAQ9B,IAAA,YAAa,KAAK,KAAK,MAAM,GAEjD,KAAK,KAAK,MAAM,SAAS,KAAK,QAAQ,KAAO,CAAC,KAAK,KAAK,OAAS,CAAC,EAAE,WAAWuB,CAAS,EACnF,KAAK,KAAK,QACb,KAAK,KAAK,SAAQvB,IAAA,UAAW,KAAK,KAAK,MAAM,GAE/C,KAAK,KAAK,MAAM,SAAS,KAAK,QAAQ,KAAO,CAAC,KAAK,KAAK,MAAQ,CAAC,EAAE,WAAWuB,CAAS,EAEvF,KAAK,QAAO1B,IAAA,MAAM,EACf,EAAE,SAAU2B,EAAC,CACZ,OAAOH,EAAK,KAAK,OAAOG,EAAE,CAAC,CAAC,CAC9B,CAAC,EACA,EAAE,SAAUA,EAAC,CACZ,OAAOH,EAAK,KAAK,OAAOG,EAAE,CAAC,CAAC,CAC9B,CAAC,CACL,CAEA,kBAAgB,CACd,IAAMQ,EAAQ,KAAK,QAAO9B,GAAA,QAAS,KAAK,QAAQ,MAAa,EAC1D,UAAU,KAAK,EACf,KAAK,CAAC,KAAK,OAAO,CAAC,EAItB,KAAK,KAAK,MAAQ8B,EAAK,MAAK,EAAG,OAAO,KAAK,EACxC,KAAK,QAAS,eAAe,EAC7B,KAAK,YAAa,KAAK,YAAW,CAAE,EAGvCA,EACG,MAAM,KAAK,KAAK,KAAK,EACrB,KAAK,QAAS,KAAK,KAAK,MAAQ,KAAK,KAAK,OAAO,KAAO,KAAK,KAAK,OAAO,KAAK,EAC9E,KAAK,SAAU,KAAK,KAAK,OAAS,KAAK,KAAK,OAAO,IAAM,KAAK,KAAK,OAAO,MAAM,EAEnF,KAAK,WAAU,EACf,KAAK,YAAW,EAChB,KAAK,YAAW,EAChB,KAAK,UAAS,EACd,KAAK,UAAS,EACd,KAAK,eAAc,EAGnB,IAAMC,EAAO,KAAK,OAAM1B,IAAA,SAAS,OAAO,OAAO,KAAK,QAAQ,KAAO,CAAA,EAAI,CAAE,MAAO,IAAI,CAAE,CAAC,EACvF,KAAK,OAAO,MAAM,KAAK,OAAO,KAAK,EAAE,KAAK0B,CAAG,EAE7C,KAAK,aAAY,EAGjB,KAAK,KAAI,EAGT,KAAK,gBAAe,CACtB,CAEA,YAAU,CAER,IAAMC,EAAY,KAAK,KACpB,MAAM,KAAK,KAAK,KAAK,EACrB,UAAU,YAAY,EACtB,KAAK,SAAUV,EAAsB,CACpC,MAAO,CAACA,EAAE,KAAK,EAAE,OAAO,OAAO,CACjC,CAAC,EAGoBU,EAAU,MAAK,EAAG,OAAO,MAAM,EAGnD,MAAMA,CAAS,EACf,KAAK,QAAS,OAAO,EACrB,KAAK,IAAK,KAAK,KAAK,OAAO,IAAM,CAAC,EAClC,KAAK,IAAK,KAAK,KAAK,OAAO,KAAO,KAAK,KAAK,MAAQ,CAAC,EACrD,KAAK,YAAa,EAAE,EACpB,KAAK,cAAe,QAAQ,EAC5B,KAAK,qBAAsB,QAAQ,EACnC,KAAK,KAAK,QAAQ,KAAK,EAG1BA,EAAU,KAAI,EAAG,OAAM,CACzB,CAEA,aAAW,CAET,KAAK,KAAK,MAAM,OAAO,MAAM,EAAE,KAAK,QAAS,kBAAkB,EAAE,KAAK,cAAe,KAAK,EAG1F,KAAK,KACF,MAAM,KAAK,KAAK,KAAK,EACrB,OAAO,mBAAmB,EAC1B,KAAK,IAAK,KAAK,KAAK,OAAO,IAAM,CAAC,EAClC,KAAK,IAAK,KAAK,KAAK,MAAQ,KAAK,KAAK,OAAO,IAAI,CACtD,CAEA,aAAW,CAET,IAAMC,EAAU,KAAK,OAAS,KAAK,KAChC,MAAM,KAAK,KAAK,KAAK,EACrB,UAAU,SAAS,EACnB,KAAK,SAAUX,EAAsB,CACpC,MAAO,CAACA,CAAC,CACX,CAAC,EAEH,KAAK,OAAO,MAAQW,EAAO,MAAK,EAAG,OAAO,GAAG,EAAE,KAAK,QAAS,QAAQ,CAGvE,CAEA,WAAS,CAEP,IAAMC,EAAK,KAAK,GACVC,EAAO,KAAK,OAAO,MAAM,OAAO,MAAM,EAC5CA,EACG,OAAO,UAAU,EACjB,KAAK,KAAM,sBAAwBD,CAAE,EACrC,OAAO,MAAM,EACb,KAAK,QAAS,kBAAkB,EAGnC,KAAK,OACF,MAAM,KAAK,OAAO,KAAK,EACvB,UAAU,OAAO,EACjB,KAAK,QAAS,KAAK,KAAK,KAAK,EAC7B,KAAK,SAAU,KAAK,KAAK,MAAM,EAGlCC,EACG,OAAO,UAAU,EACjB,OAAO,QAAQ,EACf,KAAK,KAAM,KAAK,QAAQ,EACxB,KAAK,UAAW,YAAY,EAC5B,KAAK,OAAQ,EAAE,EACf,KAAK,cAAe,CAAC,EACrB,KAAK,eAAgB,CAAC,EACtB,KAAK,SAAU,MAAM,EACrB,OAAO,UAAU,EACjB,KAAK,IAAK,oBAAoB,EAC9B,KAAK,eAAgB,KAAK,EAC1B,KAAK,eAAgB,CAAC,EACtB,KAAK,OAAQ,MAAM,CACxB,CAEA,WAAS,CAEP,IAAMC,EAAc,KAAK,OAAO,MAChCA,EAAY,OAAO,GAAG,EAAE,KAAK,QAAS,QAAQ,EAC9CA,EAAY,OAAO,GAAG,EAAE,KAAK,QAAS,QAAQ,EAG9C,KAAK,OACF,MAAM,KAAK,OAAO,KAAK,EACvB,OAAO,SAAS,EAChB,KAAK,YAAa,eAAiB,KAAK,KAAK,OAAS,GAAG,EACzD,KAAK,KAAK,KAAK,KAAK,EAEvB,KAAK,OAAO,MAAM,KAAK,OAAO,KAAK,EAAE,OAAO,SAAS,EAAE,KAAK,KAAK,KAAK,KAAK,CAC7E,CAEA,gBAAc,CAEZ,IAAMH,EAAS,KAAK,OAEdI,EAASJ,EACZ,MAAMA,EAAO,KAAK,EAClB,UAAU,mBAAmB,EAC7B,KAAK,SAAUX,EAAsB,CACpC,MAAO,CAACA,EAAE,MAAM,KAAK,EAAE,OAAO,OAAO,CACvC,CAAC,EAEGgB,EAAcD,EAAO,MAAK,EAAG,OAAO,MAAM,EAC7C,KAAK,QAAS,cAAc,EAC5B,KAAK,cAAe,KAAK,EAE5BA,EACG,MAAMC,CAAW,EACjB,KAAK,IAAK,KAAK,KAAK,KAAK,EACzB,KAAK,IAAK,KAAK,KAAK,OAAS,CAAC,EAC9B,KAAK,SAAUhB,EAAS,CACvB,OAAOA,CACT,CAAC,EAEHe,EAAO,KAAI,EAAG,OAAM,EAEpB,IAAME,EAASN,EACZ,MAAMA,EAAO,KAAK,EAClB,UAAU,mBAAmB,EAC7B,KAAK,SAAUX,EAAsB,CACpC,MAAO,CAACA,EAAE,MAAM,KAAK,EAAE,OAAO,OAAO,CACvC,CAAC,EAEGkB,EAAcD,EACjB,MAAK,EACL,OAAO,MAAM,EACb,KAAK,QAAS,cAAc,EAC5B,KAAK,IAAK,CAAC,EACX,KAAK,KAAM,OAAO,EAClB,KAAK,cAAe,KAAK,EACzB,KAAK,YAAa,aAAa,EAElCA,EAAO,MAAMC,CAAW,EAAE,KAAK,SAAUlB,EAAS,CAChD,OAAOA,CACT,CAAC,EAEDiB,EAAO,KAAI,EAAG,OAAM,CACtB,CAQA,cAAY,CACV,IAAMpB,EAAO,KACPc,EAAS,KAAK,OAEpBA,EACG,MAAMA,EAAO,KAAK,EAClB,KAAK,YAAa,aAAe,KAAK,KAAK,OAAO,KAAO,IAAM,KAAK,KAAK,OAAO,IAAM,GAAG,EAE5F,IAAMQ,EAAW,KAAK,QAAUR,EAC7B,MAAMA,EAAO,KAAK,EAClB,UAAU,oBAAoB,EAC9B,KAAK,SAAUX,EAAsB,CACpC,MAAO,CAACA,CAAC,CACX,CAAC,EAGGoB,EAAeD,EAClB,MAAK,EACL,OAAO,GAAG,EACV,KAAK,YAAa,2BAA6B,KAAK,GAAK,GAAG,EAC5D,KAAK,QAAS,SAAS,EAG1B,GAAI,KAAK,QAAQ,MAAM,OAAS,SAAU,CACxC,IAAME,EAAUF,EACb,MAAMC,CAAY,EAClB,UAAU,wBAAwB,EAClC,KAAK,CACJ,CACE,CAAC,EAAG,KAAK,KAAK,OAAO,OAAM,EAAG,CAAC,CAAC,EAChC,CAAC,EAAG,KAAK,KAAK,OAAO,OAAM,EAAG,CAAC,CAAC,GAEnC,EACGE,EAAeD,EAClB,MAAK,EACL,OAAO,MAAM,EACb,KAAK,QAAS,UAAU,EACxB,KAAK,SAAU,OAAO,EACtB,KAAK,UAAW,EAAG,EACtBA,EAAQ,MAAMC,CAAY,EAAE,KAAK,IAAK,KAAK,IAAI,EAIjD,GAAI,KAAK,QAAQ,MAAM,OAAS,SAAU,CACxC,IAAMC,EAAUJ,EACb,MAAMC,CAAY,EAClB,UAAU,wBAAwB,EAClC,KAAK,CACJ,CACE,CAAC,KAAK,KAAK,OAAO,OAAM,EAAG,CAAC,EAAG,CAAC,EAChC,CAAC,KAAK,KAAK,OAAO,OAAM,EAAG,CAAC,EAAG,CAAC,GAEnC,EACGI,EAAeD,EAClB,MAAK,EACL,OAAO,MAAM,EACb,KAAK,QAAS,UAAU,EACxB,KAAK,SAAU,OAAO,EACtB,KAAK,UAAW,EAAG,EACtBA,EAAQ,MAAMC,CAAY,EAAE,KAAK,IAAK,KAAK,IAAI,EAIjDL,EAAQ,MAAMC,CAAY,EAAE,QAAKtC,IAAA,SAAY,CAAE,MAAOe,CAAI,CAAE,CAAC,EAK7D,IAAM4B,EAASN,EACZ,MAAMC,CAAY,EAClB,UAAU,kBAAkB,EAC5B,KACEpB,GACQA,EAAE,KAAK,IAAIf,IAAA,OAAa,EAEhCe,GAEQA,EAAE,IAAMA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAChC,EAILyB,EAAO,KAAI,EAAG,OAAM,EAGpB,IAAMC,EAAcD,EAAO,MAAK,EAAG,OAAO,GAAG,EAAE,KAAK,QAAS,OAAO,EAGpEA,EAAO,MAAMC,CAAW,EAAE,KAAK,SAAU1B,EAAsB2B,EAAa,CAE1E3B,EAAE,MAAQ2B,EAEV,IAAMjB,KAAYhC,GAAA,QAAS,IAAI,EAC/BgC,EAAU,KAAKxB,GAAA,QAAQ,WAAWc,EAAE,SAAS,EAAEH,CAAI,CAAC,EACpDa,EAAU,QAAK1B,IAAA,SAAQa,CAAI,CAAC,CAC9B,CAAC,CACH,CAEA,iBAAe,CAEb,IAAMA,EAAO,KAER,KAAK,KAAK,eACb,KAAK,KAAK,gBAAepB,IAAA,MAAM,EAAG,GAAG,OAAQ,SAAgBmD,EAAE,CAC7D/B,EAAK,gBAAe,EAAG,KAAK,WAAY+B,CAAE,CAC5C,CAAC,EAOD/B,EAAK,KAAK,aAAa,OAASA,EAAK,KAAK,OAAO,KAAI,EACrDA,EAAK,KAAK,aAAa,OAASA,EAAK,KAAK,OAAO,KAAI,GAKvDA,EAAK,KAAK,aAAa,OAAO,MAAMA,EAAK,KAAK,OAAO,MAAK,CAAE,EAC5DA,EAAK,KAAK,aAAa,OAAO,MAAMA,EAAK,KAAK,OAAO,MAAK,CAAE,EAG5D,KAAK,OAAO,MACT,OAAO,MAAM,EACb,KAAK,KAAK,KAAK,YAAY,EAC3B,KAAK,QAAS,eAAe,EAC7B,MAAM,OAAQ,MAAM,EACpB,MAAM,iBAAkB,KAAK,EAC7B,GAAG,YAAa,SAAUgC,EAAU,CACnChC,EAAK,gBAAe,EAAG,KAAK,gBAAiBgC,CAAK,CACpD,CAAC,EACA,GAAG,WAAY,SAAUA,EAAU,CAClChC,EAAK,gBAAe,EAAG,KAAK,eAAgBgC,CAAK,CACnD,CAAC,EACA,GAAG,YAAa,SAAUA,EAAU,CACnChC,EAAK,gBAAe,EAAG,KAAK,gBAAiBgC,CAAK,CACpD,CAAC,EAGH,KAAK,UAAY,KAAK,OACnB,MAAM,KAAK,OAAO,KAAK,EACvB,OAAO,gBAAgB,EACvB,KAAMnB,GAAkB,CACnBA,EAAU,KAAI,IAEhBA,EAAU,KAAI,EAAG,SAAWb,EAEhC,CAAC,EACA,KAAK,QAAS,KAAK,KAAK,KAAK,EAC7B,KAAK,SAAU,KAAK,KAAK,MAAM,CACpC,CAEA,cAAY,CACV,IAAMiC,EAAU,KAAK,QAAQ,SAAW,CAAA,EAClCjC,EAAO,KACbiC,EAAQ,QAAQ,SAAUC,EAAM,CAC9BA,EAAOlC,CAAI,CACb,CAAC,CACH,CAEA,SAAO,CACL,QAASmC,EAAI,EAAGA,EAAI,UAAU,OAAQA,GAAK,EACzC,KAAK,aAAa,KAAK,UAAUA,CAAC,CAAC,CAEvC,CAEA,YAAU,CACR,IAAMC,EAAW,KACXtB,EAASsB,EAAS,OAAO,MAAMA,EAAS,OAAO,KAAK,EAK1D,GAFAtB,EAAO,OAAO,SAAS,EAAE,KAAKsB,EAAS,KAAK,KAAK,EAE7C,KAAK,QAAQ,MAAM,WAAa,SAAU,CAC5C,IAAMC,EAAO,KAAK,KAAK,OAAO,OAAM,EAAG,CAAC,EAClCC,EAAO,KAAK,KAAK,OAAO,OAAM,EAAG,CAAC,EAElCC,GAAQD,EAAOD,GAAQ,EAIzBG,EAFiB,KAAK,KAAK,QAAUF,EAAOD,GAEdE,EAAO,KAAK,KAAK,OAAS,EAC5DC,EAAeA,EAAe,EAAI,EAAIA,EACtCA,EAAeA,EAAe,KAAK,KAAK,OAAS,KAAK,KAAK,OAASA,EAEpE1B,EAAO,OAAO,SAAS,EAAE,KAAK,YAAa,eAAiB0B,EAAe,GAAG,EAE9E1B,EACG,UAAU,4BAA4B,EACtC,KAAK,YAAa,gBAAkB,KAAK,KAAK,OAAS,EAAI0B,EAAe,KAAK,KAAK,OAAS,GAAK,GAAG,EAK1G,GAFA1B,EAAO,OAAO,SAAS,EAAE,KAAKsB,EAAS,KAAK,KAAK,EAE7C,KAAK,QAAQ,MAAM,WAAa,SAAU,CAC5C,IAAMK,EAAO,KAAK,KAAK,OAAO,OAAM,EAAG,CAAC,EAClCC,EAAO,KAAK,KAAK,OAAO,OAAM,EAAG,CAAC,EAElCC,GAAQD,EAAOD,GAAQ,EAIzBG,EAFiB,KAAK,KAAK,OAASH,EAAOC,GAEbC,EAAO,KAAK,KAAK,MAAQ,EAE3DC,EAAeA,EAAe,EAAI,EAAIA,EACtCA,EAAeA,EAAe,KAAK,KAAK,MAAQ,KAAK,KAAK,MAAQA,EAClE9B,EAAO,OAAO,SAAS,EAAE,KAAK,YAAa,aAAe8B,EAAe,KAAK,EAE9E9B,EAAO,UAAU,4BAA4B,EAAE,KAAK,YAAa,aAAe,CAAC8B,EAAe,KAAK,EAGvG9B,EACG,UAAU,wBAAwB,EAClC,KAAK,OAAQ,MAAM,EACnB,KAAK,SAAU,OAAO,EACtB,KAAK,kBAAmB,YAAY,EACpC,KAAK,UAAW,EAAG,CACxB,CACA,aAAW,CAGT,KAAK,QAAQ,MAAM,OAAS,KAAK,KAAK,OAAO,OAAM,EACnD,KAAK,QAAQ,MAAM,OAAS,KAAK,KAAK,OAAO,OAAM,CACrD,CAEA,aAAW,CACT,OAAO,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,MAAO,KAAK,KAAK,MAAM,EAAI,GAAI,CAAC,CACrE,CAEA,MAAI,CACF,IAAMsB,EAAW,KACjBA,EAAS,KAAK,aAAa,EAC3BA,EAAS,YAAW,EACpBA,EAAS,WAAU,EACnBA,EAAS,aAAY,EACrBA,EAAS,KAAK,YAAY,CAC5B,CAEA,qBAAmB,CACjB,IAAMpC,EAAO,KAIP6C,EAAe,KAAK,gBAAe,EACrCA,GACFA,EAAa,mBAAkB,EAGjC,IAAMC,EAAS,CACb,UAAW,SAAUC,EAAqC,CACxD/C,EAAK,IAAI,KAAK+C,CAAW,CAC3B,EAEA,UAAW,UAAA,CACT/C,EAAK,IAAI,KAAI,CACf,EAEA,SAAU,UAAA,CACRA,EAAK,IAAI,KAAI,CACf,EAEA,KAAM,SAAc,CAAE,UAAAgD,CAAS,EAAO,CAEpC,GAAIhD,EAAK,QAAQ,YAAa,OAE9B,IAAMiD,EAAcD,EAAU,SAAShD,EAAK,KAAK,aAAa,MAAM,EAAE,YAAYlB,IAAA,gBAAkB,EAC9FoE,EAAcF,EAAU,SAAShD,EAAK,KAAK,aAAa,MAAM,EAAE,YAAYlB,IAAA,gBAAkB,EAIpGkB,EAAK,KAAK,OACP,OAAOiD,EAAY,OAAM,CAAE,EAE3B,MAAMA,EAAY,MAAK,CAAE,EAC5BjD,EAAK,KAAK,OACP,OAAOkD,EAAY,OAAM,CAAE,EAE3B,MAAMA,EAAY,MAAK,CAAE,CAC9B,EAEA,aAAc,SAAU,CAAE,EAAAC,EAAG,EAAAC,EAAG,MAAAtB,CAAK,EAAO,CAC1C,IAAMuB,EAAOrD,EAAK,KAAK,MAAMA,EAAK,KAAK,KAAK,EAAE,MAAK,EAAG,KAAK8B,CAAK,EAC1DwB,EAAQD,EAAK,OAAS,GACtBE,EACJF,EAAK,UACL,SAAUF,EAAWC,EAAS,CAC5B,OAAOD,EAAE,QAAQ,CAAC,EAAI,KAAOC,EAAE,QAAQ,CAAC,CAC1C,EAEII,EAAO,CAAA,EACbF,GAASE,EAAK,KAAKF,CAAK,EACxBE,EAAK,KAAKD,EAAOJ,EAAGC,CAAC,CAAC,EAEtBpD,EAAK,KAAK,OAAO,mBAAmB,EAAE,KAAK,OAAQX,GAAA,QAAQ,OAAOyC,CAAK,CAAC,EAAE,KAAK0B,EAAK,KAAK,GAAG,CAAC,CAC/F,GAIIC,EAAM,CACV,UAAW,SAAUzB,EAAU,CAC7B,IAAM0B,KAAQ7E,GAAA,SAAUmD,EAAOhC,EAAK,UAAU,KAAI,CAAE,EAC9C+C,EAAc,CAClB,EAAG/C,EAAK,KAAK,OAAO,OAAO0D,EAAM,CAAC,CAAC,EACnC,EAAG1D,EAAK,KAAK,OAAO,OAAO0D,EAAM,CAAC,CAAC,GAErC1D,EAAK,aAAa,QAAQ,SAAU2D,EAAK,CACvCA,EAAM,KAAK,mBAAoBZ,CAAW,EAC1CY,EAAM,KAAK,YAAaZ,CAAW,CACrC,CAAC,CACH,EAEA,KAAM,SAAUf,EAAU,CACxBhC,EAAK,aAAa,QAAQ,SAAU2D,EAAK,CAEvCA,EAAM,UAAU,KAAI,EAAG,OAAS3D,EAAK,UAAU,KAAI,EAAG,OAEtD2D,EAAM,KAAK,OAAQ3B,CAAK,EACxB2B,EAAM,KAAI,CACZ,CAAC,EAGD3D,EAAK,KAAK,gBAAiBgC,CAAK,CAClC,GAGF,OAAO,KAAKc,CAAM,EAAE,QAAQ,SAAUc,EAAC,CAMrC,CAACH,EAAIG,CAAC,GACJ5D,EAAK,GAAG,OAAS4D,EAAG,UAAA,CAClB,IAAMC,EAAO,MAAM,UAAU,MAAM,KAAK,SAAS,EACjD7D,EAAK,aAAa,QAAQ,SAAU2D,EAAK,CACvC,IAAMG,EAAYD,EAAK,MAAK,EAC5BC,EAAU,QAAQF,CAAC,EACnBD,EAAM,KAAK,MAAMA,EAAOG,CAAS,CACnC,CAAC,CACH,CAAC,EAGH9D,EAAK,GAAG4D,EAAGd,EAAOc,CAAC,CAAC,CACtB,CAAC,EAED,OAAO,KAAKH,CAAG,EAAE,QAAQ,SAAUG,EAAC,CAElC5D,EAAK,GAAG,OAAS4D,EAAGH,EAAIG,CAAC,CAAC,CAC5B,CAAC,CACH,GA9tBFG,GAAA,MAAAvE,GACSA,GAAA,MAA+B,CAAA,ICjFxC,IAAAwE,IAAAC,GAAAC,KAAA,cACA,OAAO,eAAeA,IAAS,aAAc,CAAE,MAAO,EAAK,CAAC,09BCD5D,KAGA,IAAAC,GAAA,MAsCS,OAAA,eAAAC,GAAA,QAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAtCAD,GAAA,KAAK,CAAA,CAAA,EAEd,IAAAE,GAAAC,IAAA,IAAA,EAqCS,OAAA,eAAAF,GAAA,oBAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OArCSC,GAAA,iBAAiB,CAAA,CAAA,EACnC,IAAAE,GAAA,KACAC,IAAAF,IAAA,IAAA,KAGAD,GAAA,mBAAkB,WAAYE,GAAA,QAAQ,KACtCF,GAAA,mBAAkB,WAAYE,GAAA,QAAQ,KACtCF,GAAA,mBAAkB,UAAWE,GAAA,OAAO,KACpCF,GAAA,mBAAkB,OAAQE,GAAA,IAAI,EAc9B,SAAwBE,GAAaC,EAA4B,CAC/DA,EAAQ,KAAOA,EAAQ,MAAQ,CAAA,EAC/B,IAAIC,EAAWR,GAAA,MAAM,MAAMO,EAAQ,EAAE,EACrC,OAAKC,IACHA,EAAW,IAAIR,GAAA,MAAMO,CAAO,GAEvBC,EAAS,MAAK,CACvB,CAPAP,GAAA,QAAAK,GASAA,GAAa,QAAUJ,GAAA,QACvBI,GAAa,MAAQD,IACrBC,GAAa,WAAa,CAAE,SAAAF,GAAA,SAAU,SAAAA,GAAA,SAAU,QAAAA,GAAA,OAAO,EAEvDK,IAAA,MAAAR,EAAA,EAGA,IAAAS,IAAA,KAAS,OAAA,eAAAT,GAAA,cAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAS,IAAA,OAAO,CAAA,CAAA,EAAiB,OAAA,eAAAT,GAAA,eAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAS,IAAA,QAAQ,CAAA,CAAA,EAEzC,IAAAC,GAAA,KACE,OAAA,eAAAV,GAAA,oBAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAU,GAAA,QAAQ,CAAA,CAAA,EACR,OAAA,eAAAV,GAAA,oBAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAU,GAAA,QAAQ,CAAA,CAAA,EACR,OAAA,eAAAV,GAAA,mBAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAU,GAAA,OAAO,CAAA,CAAA,EAGTF,IAAA,KAAAR,EAAA,IClDO,IAAMW,GAAKC,GAAa,SAAS,cAAcA,CAAQ,EAGjDC,GAAQD,GAAa,SAAS,iBAAiBA,CAAQ,EAGvDE,GAAQ,CAEnB,IAAMC,GAAQ,KAAK,MAAM,aAAa,QAAQA,CAAG,CAAC,EAElD,IAAK,CAACA,EAAKC,IAAU,CACnB,aAAa,QAAQD,EAAK,KAAK,UAAUC,CAAK,CAAC,CACjD,CACF,EAGaC,GAAM,CACjB,WAAY,KACZ,WAAY,KACZ,OAAQ,KACR,cAAe,CAAC,EAChB,UAAW,CAAC,EACZ,aAAc,KACd,UAAW,GACX,SAAU,KACV,QAAS,CAAC,EACV,QAAS,CAAC,CACZ,ECnBA,IAAMC,GAAgB,CAACC,EAAaC,EAAiBC,EAA4B,CAAA,IAAO,CACtF,IAAMC,EAAU,SAAS,gBAAgB,6BAA8BH,CAAG,EAE1E,cAAO,KAAKC,CAAK,EAAE,QAASG,GAAS,CACnCD,EAAQ,aAAaC,EAAM,OAAOH,EAAMG,CAAI,CAAC,CAAC,CAAA,CAC/C,EAEGF,EAAS,QACFA,EAAA,QAASG,GAAU,CACpB,IAAAC,EAAeP,GAAc,GAAGM,CAAK,EAE3CF,EAAQ,YAAYG,CAAY,CAAA,CACjC,EAGIH,CACT,EAOAI,GAAe,CAAC,CAACP,EAAKC,EAAOC,CAAQ,IAAgBH,GAAcC,EAAKC,EAAOC,CAAQ,ECtB1E,IAAAM,IAAYC,GACvB,MAAM,KAAKA,EAAQ,UAAU,EAAE,OAA+B,CAACC,EAAOC,KAC9DD,EAAAC,EAAK,IAAI,EAAIA,EAAK,MACjBD,GACN,CAAA,CAAE,EAOME,IAAiBF,GACxB,OAAOA,GAAU,SAAiBA,EAClC,CAACA,GAAS,CAACA,EAAM,MAAc,GAC/BA,EAAM,OAAS,OAAOA,EAAM,OAAU,SACjCA,EAAM,MAAM,MAAM,GAAG,EAE1BA,EAAM,OAAS,MAAM,QAAQA,EAAM,KAAK,EACnCA,EAAM,MAER,GAQIG,IAAqBC,GACTA,EAAkB,QAAQF,GAAa,EAG3D,IAAKG,GAAcA,EAAU,KAAK,CAAC,EACnC,OAAO,OAAO,EACd,OAAO,CAACC,EAAOC,EAAOC,IAASA,EAAK,QAAQF,CAAK,IAAMC,CAAK,EAC5D,KAAK,GAAG,EAGPE,IAAgBC,GACpBA,EAAO,QAAQ,sBAAuB,CAACC,EAAIC,EAAIC,IAAOD,EAAG,YAAA,EAAgBC,EAAG,YAAa,CAAA,EAcrFC,GAAiB,CAACf,EAAkB,CAAE,SAAAgB,EAAU,MAAAC,EAAO,MAAAhB,CAAA,IAAmC,CACxF,IAAAiB,EAAWlB,EAAQ,aAAagB,CAAQ,EAE9C,GAAIE,GAAY,KAAM,OAEhB,IAAAC,EAAgBT,IAAaQ,CAAQ,EAErCE,EAAWH,EAAME,CAAa,EAEpC,GAAI,CAACC,EACH,OAAO,QAAQ,KACb,GAAGpB,EAAQ,SAAS,wDAAA,EAIlB,IAAAqB,EAAetB,IAASC,CAAO,EAC/B,CAACsB,EAAKC,EAAgBC,CAAQ,EAAIJ,EAElCK,EAAY,CAChB,GAAGF,EACH,cAAeL,EACf,GAAGjB,EACH,GAAGoB,CAAA,EAGCK,EAAatB,IAAkB,CAAC,SAAU,UAAUc,CAAQ,GAAIG,EAAcpB,CAAK,CAAC,EAEtFyB,GACF,OAAO,OAAOD,EAAW,CACvB,MAAOC,CAAA,CACR,EAGH,IAAMC,EAAaC,GAAc,CAACN,EAAKG,EAAWD,CAAQ,CAAC,EAE3D,OAAOxB,EAAQ,YAAY,aAAa2B,EAAY3B,CAAO,CAC7D,ECjGA,IAAM6B,GAA8B,CAClC,MAAO,6BACP,MAAO,GACP,OAAQ,GACR,QAAS,YACT,KAAM,OACN,OAAQ,eACR,eAAgB,EAChB,iBAAkB,QAClB,kBAAmB,OACrB,ECCA,IAAMC,GAAwB,CAC5B,MACAC,GACA,CACE,CAAC,OAAQ,CAAE,EAAG,gBAAA,CAAkB,EAChC,CAAC,OAAQ,CAAE,EAAG,UAAA,CAAY,EAC1B,CAAC,OAAQ,CAAE,EAAG,cAAA,CAAgB,EAC9B,CAAC,OAAQ,CAAE,EAAG,SAAA,CAAW,CAC3B,CACF,ECTA,IAAMC,GAAmB,CACvB,MACAC,GACA,CACE,CAAC,OAAQ,CAAE,EAAG,sEAAA,CAAwE,EACtF,CAAC,OAAQ,CAAE,EAAG,0EAAA,CAA4E,CAC5F,CACF,ECPA,IAAMC,GAAwB,CAC5B,MACAC,GACA,CACE,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,IAAA,CAAM,EAC1C,CAAC,OAAQ,CAAE,GAAI,KAAM,GAAI,KAAM,GAAI,IAAK,GAAI,IAAA,CAAM,EAClD,CAAC,OAAQ,CAAE,GAAI,KAAM,GAAI,QAAS,GAAI,KAAM,GAAI,IAAA,CAAM,CACxD,CACF,ECRA,IAAMC,GAAmB,CAAC,MAAOC,GAAmB,CAAC,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,IAAM,CAAA,CAAC,CAAC,ECAjG,IAAMC,GAAiB,CACrB,MACAC,GACA,CACE,CAAC,OAAQ,CAAE,MAAO,KAAM,OAAQ,KAAM,EAAG,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,GAAA,CAAK,EACxE,CAAC,OAAQ,CAAE,EAAG,yDAAA,CAA2D,CAC3E,CACF,ECPA,IAAMC,GAA4B,CAChC,MACAC,GACA,CACE,CAAC,WAAY,CAAE,OAAQ,mBAAA,CAAqB,EAC5C,CAAC,OAAQ,CAAE,EAAG,yBAAA,CAA2B,CAC3C,CACF,ECPA,IAAMC,GAAgB,CAAC,MAAOC,GAAmB,CAAC,CAAC,SAAU,CAAE,GAAI,OAAQ,GAAI,OAAQ,EAAG,GAAK,CAAA,CAAC,CAAC,ECAjG,IAAMC,GAAqB,CACzB,MACAC,GACA,CACE,CAAC,OAAQ,CAAE,EAAG,2CAAA,CAA6C,EAC3D,CAAC,WAAY,CAAE,OAAQ,kBAAA,CAAoB,EAC3C,CAAC,OAAQ,CAAE,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,GAAI,GAAA,CAAK,CACpD,CACF,ECRA,IAAMC,GAA6B,CACjC,MACAC,GACA,CACE,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,GAAA,CAAK,EACzC,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,IAAK,EAAG,GAAA,CAAK,EACxC,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,GAAA,CAAK,CAC3C,CACF,ECRA,IAAMC,GAAmB,CACvB,MACAC,GACA,CACE,CACE,OACA,CAAE,EAAG,sFAAuF,CAC9F,EACA,CAAC,OAAQ,CAAE,EAAG,UAAA,CAAY,EAC1B,CAAC,OAAQ,CAAE,EAAG,WAAA,CAAa,CAC7B,CACF,ECXA,IAAMC,GAAiB,CACrB,MACAC,GACA,CACE,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,IAAA,CAAM,EAC1C,CAAC,OAAQ,CAAE,EAAG,WAAA,CAAa,EAC3B,CAAC,OAAQ,CAAE,EAAG,WAAA,CAAa,CAC7B,CACF,ECRA,IAAMC,GAAwB,CAC5B,MACAC,GACA,CACE,CAAC,OAAQ,CAAE,EAAG,SAAA,CAAW,EACzB,CAAC,OAAQ,CAAE,EAAG,SAAA,CAAW,EACzB,CAAC,OAAQ,CAAE,EAAG,SAAA,CAAW,EACzB,CAAC,OAAQ,CAAE,EAAG,4EAAA,CAA8E,EAC5F,CAAC,OAAQ,CAAE,EAAG,YAAA,CAAc,CAC9B,CACF,ECVA,IAAMC,GAAoB,CACxB,MACAC,GACA,CACE,CAAC,SAAU,CAAE,GAAI,OAAQ,GAAI,MAAO,EAAG,KAAM,KAAM,cAAA,CAAgB,EACnE,CAAC,SAAU,CAAE,GAAI,OAAQ,GAAI,OAAQ,EAAG,KAAM,KAAM,cAAA,CAAgB,EACpE,CAAC,SAAU,CAAE,GAAI,MAAO,GAAI,MAAO,EAAG,KAAM,KAAM,cAAA,CAAgB,EAClE,CAAC,SAAU,CAAE,GAAI,MAAO,GAAI,OAAQ,EAAG,KAAM,KAAM,cAAA,CAAgB,EACnE,CACE,OACA,CACE,EAAG,0NACL,CACF,CACF,CACF,ECfA,IAAMC,GAA2B,CAC/B,MACAC,GACA,CACE,CAAC,OAAQ,CAAE,MAAO,KAAM,OAAQ,KAAM,EAAG,IAAK,EAAG,IAAK,GAAI,GAAA,CAAK,EAC/D,CAAC,OAAQ,CAAE,EAAG,SAAA,CAAW,EACzB,CAAC,OAAQ,CAAE,EAAG,gBAAA,CAAkB,CAClC,CACF,ECRA,IAAMC,GAAsB,CAC1B,MACAC,GACA,CACE,CAAC,OAAQ,CAAE,MAAO,KAAM,OAAQ,KAAM,EAAG,IAAK,EAAG,IAAK,GAAI,GAAA,CAAK,EAC/D,CAAC,OAAQ,CAAE,EAAG,SAAA,CAAW,CAC3B,CACF,ECPA,IAAMC,GAAiB,CACrB,MACAC,GACA,CACE,CAAC,OAAQ,CAAE,EAAG,UAAA,CAAY,EAC1B,CAAC,OAAQ,CAAE,EAAG,UAAA,CAAY,CAC5B,CACF,ECPA,IAAMC,GAAoB,CACxB,MACAC,GACA,CACE,CAAC,OAAQ,CAAE,EAAG,4EAAA,CAA8E,EAC5F,CAAC,OAAQ,CAAE,EAAG,yCAAA,CAA2C,EACzD,CAAC,OAAQ,CAAE,EAAG,IAAK,EAAG,KAAM,MAAO,KAAM,OAAQ,IAAK,GAAI,GAAA,CAAK,CACjE,CACF,ECRA,IAAMC,GAAuB,CAC3B,MACAC,GACA,CACE,CAAC,OAAQ,CAAE,EAAG,oDAAA,CAAsD,EACpE,CAAC,OAAQ,CAAE,EAAG,UAAA,CAAY,EAC1B,CAAC,OAAQ,CAAE,EAAG,qDAAA,CAAuD,EACrE,CAAC,OAAQ,CAAE,EAAG,YAAA,CAAc,CAC9B,CACF,ECTA,IAAMC,GAAsB,CAC1B,MACAC,GACA,CACE,CAAC,OAAQ,CAAE,EAAG,mDAAA,CAAqD,EACnE,CAAC,OAAQ,CAAE,EAAG,UAAA,CAAY,CAC5B,CACF,ECPA,IAAMC,GAAoB,CACxB,MACAC,GACA,CACE,CAAC,OAAQ,CAAE,EAAG,4DAAA,CAA8D,EAC5E,CAAC,OAAQ,CAAE,EAAG,aAAA,CAAe,EAC7B,CAAC,OAAQ,CAAE,EAAG,WAAA,CAAa,EAC3B,CAAC,OAAQ,CAAE,EAAG,YAAA,CAAc,CAC9B,CACF,ECTA,IAAMC,GAAqB,CACzB,MACAC,GACA,CACE,CACE,OACA,CACE,EAAG,ujBACL,CACF,EACA,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,GAAA,CAAK,CAC3C,CACF,ECZA,IAAMC,GAAkB,CACtB,MACAC,GACA,CACE,CAAC,OAAQ,CAAE,EAAG,SAAA,CAAW,EACzB,CAAC,OAAQ,CAAE,EAAG,uCAAA,CAAyC,EACvD,CAAC,OAAQ,CAAE,EAAG,oCAAA,CAAsC,CACtD,CACF,ECRA,IAAMC,GAAmB,CACvB,MACAC,GACA,CACE,CAAC,OAAQ,CAAE,EAAG,2CAAA,CAA6C,EAC3D,CAAC,WAAY,CAAE,OAAQ,eAAA,CAAiB,EACxC,CAAC,OAAQ,CAAE,GAAI,KAAM,GAAI,KAAM,GAAI,IAAK,GAAI,IAAA,CAAM,CACpD,CACF,ECdA,IAAMC,GAAc,CAAC,CAAE,MAAAC,EAAQ,CAAA,EAAI,SAAAC,EAAW,cAAe,MAAAC,EAAQ,CAAA,CAAG,EAAI,CAAA,IAAO,CACjF,GAAI,CAAC,OAAO,OAAOF,CAAK,EAAE,OACxB,MAAM,IAAI,MACR;;;+BAAA,EAIA,GAAA,OAAO,SAAa,IAChB,MAAA,IAAI,MAAM,sDAAsD,EAGxE,IAAMG,EAAoB,SAAS,iBAAiB,IAAIF,CAAQ,GAAG,EAMnE,GALM,MAAA,KAAKE,CAAiB,EAAE,QAASC,GACrCC,GAAeD,EAAS,CAAE,SAAAH,EAAU,MAAAD,EAAO,MAAAE,CAAA,CAAO,CAAA,EAIhDD,IAAa,cAAe,CACxB,IAAAK,EAAqB,SAAS,iBAAiB,aAAa,EAC9DA,EAAmB,OAAS,IACtB,QAAA,KACN,oNAAA,EAEI,MAAA,KAAKA,CAAkB,EAAE,QAASF,GACtCC,GAAeD,EAAS,CAAE,SAAU,YAAa,MAAAJ,EAAO,MAAAE,CAAA,CAAO,CAAA,EAGrE,CACF,ECRA,IAAMK,IAAQ,CACZ,YAAAC,GACA,YAAAC,GACA,OAAAC,GACA,OAAAC,GACA,KAAAC,GACA,gBAAAC,GACA,IAAAC,GACA,SAAAC,GACA,iBAAAC,GACA,OAAAC,GACA,KAAAC,GACA,YAAAC,GACA,QAAAC,GACA,UAAAC,GACA,eAAAC,GACA,KAAAC,GACA,QAAAC,GACA,WAAAC,GACA,UAAAC,GACA,QAAAC,GACA,SAAAC,GACA,MAAAC,GACA,OAAAC,EACF,EAGaC,GAAgB,IAAM,CACjCC,GAAY,CAAE,MAAAzB,GAAM,CAAC,CACvB,ECtDA,IAAA0B,GAAkB,WAELC,GAAQ,CAMnB,KAAOC,GAAO,CACZ,GAAAC,QAAM,MAAMD,EAAI,CAAE,QAAS,GAAO,MAAO,EAAK,CAAC,EAAE,KAAK,CACxD,EAMA,KAAOA,GAAO,CACZ,GAAAC,QAAM,MAAMD,CAAE,EAAE,KAAK,CACvB,CACF,EAQO,SAASE,GAAUC,EAAOC,EAAO,CACtC,GAAAH,QAAM,KAAK,GAAG,gBAAiB,aAAc,IAAM,CACjDI,GAAE,WAAW,EAAE,UAAYF,EAC3BE,GAAE,SAAS,EAAE,UAAYD,CAC3B,CAAC,EAEDL,GAAM,KAAK,eAAe,CAC5B,CAQO,SAASO,GAAOC,EAAKC,EAAM,CAChC,GAAAP,QAAM,aAAa,CACjB,QAASM,EACT,IAAKE,GAAI,SAAS,eAClB,OAAQD,GAAQ,UAChB,QAAS,CAACC,GAAI,SAAS,cACzB,CAAC,CACH,CAQO,SAASC,GAAQH,EAAKI,EAAQ,CACnCN,GAAE,aAAa,EAAE,UAAYE,EAE7BR,GAAM,KAAK,iBAAiB,EAE5B,IAAMa,EAAaC,GAAU,CAC3BF,EAAO,EAEPE,EAAM,gBAAgB,EAEtB,GAAAZ,QAAM,MAAM,iBAAiB,EAAE,KAAK,EAEpCI,GAAE,cAAc,EAAE,oBAAoB,QAASO,CAAS,CAC1D,EAEAP,GAAE,cAAc,EAAE,iBAAiB,QAASO,CAAS,EAErD,GAAAX,QAAM,KAAK,GAAG,kBAAmB,SAAU,IAAM,CAC/CI,GAAE,cAAc,EAAE,oBAAoB,QAASO,CAAS,CAC1D,CAAC,CACH,CC3EO,IAAME,GAAQ,UAAU,UAAU,YAAY,EAAE,SAAS,KAAK,EAGxDC,GAAa,UAAU,UAAU,YAAY,EAAE,SAAS,UAAU,EAGxE,SAASC,IAAW,CACzB,OAAAC,GAAI,SAAWC,GAAM,IAAI,UAAU,EAE5BD,GAAI,UAAU,QAAU,SAC3BF,IACE,OAAO,OAAO,EACZ,OAEF,QACFE,GAAI,UAAU,QAAU,OACtB,OACA,OACR,CAGO,SAASE,IAAc,CAC5B,IAAMC,EACJH,GAAI,SAAS,SAAW,SACpB,UAAU,WAAa,UAAU,UAAU,OACzC,UAAU,UAAU,CAAC,EACrB,UAAU,SACZA,GAAI,SAAS,OAEnB,MAAQ,MAAM,eAAeG,CAAM,EAAE,MAAM,KAAK,CAClD,CAGO,SAASC,IAAY,CAC1BC,GAAE,kBAAkB,EAAE,MAAM,QAAUP,IAClC,OAAO,UAAU,GAAK,CAAC,OAAO,YAAY,EACxC,QAEF,MACN,CAGO,SAASQ,IAAe,CACzB,OAAO,YAAY,EACrB,OAAO,WAAW,EAElB,OAAO,SAAS,CAEpB,CAGO,SAASC,IAAe,CACzBT,KACF,OAAO,YAAY,EAEnB,OAAO,aAAa,IAAM,CACxBU,GACE,oIACF,EAEAH,GAAE,kBAAkB,EAAE,MAAM,QAAU,OACxC,CAAC,EAED,OAAO,aAAa,CAACI,EAAOC,IAAW,CACjCA,IAAW,SACbL,GAAE,4BAA4B,EAAE,UAAY,wCAC5CA,GAAE,eAAe,EAAE,MAAM,QAAU,eAE9BA,GAAE,eAAe,EAAE,UAAU,SAAS,SAAS,GAClDG,GACE,6IACF,GAGFH,GAAE,4BAA4B,EAAE,UAAYK,CAEhD,CAAC,EAEL,CClFA,IAAMC,IAAW,IAAM,CASrB,OAAQ,CAACC,EAAQC,EAAUC,EAAMC,IAAc,CAC7C,IAAMC,EAAMH,EAAS,cAAc,QAAQ,EAAE,WAAW,IAAI,EACtDI,EAAe,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAE,EAC5DC,EAAUC,EAAOC,EAAUC,EAAYC,EAAaC,EAAWC,EAAYC,EAC7EC,EAAUC,EAAUC,EAAYC,EAAYC,EAAUC,EAAcC,EAASC,EAC7EC,EAAgB,CAAC,EAGbC,EAAW,CACf,GAAI,iBACJ,OAAQ,OACR,MAAO,UACP,UAAW,QACX,IAAK,GACL,KAAM,GACN,OAAQ,EACR,OAAQ,MACR,aAAc,GACd,SAAU,CAAC,EACX,aAAc,GACd,MAAO,GACP,WAAY,GACZ,WAAY,GACZ,YAAa,GACb,OAAQ,GACR,aAAc,UACd,YAAa,GACb,WAAY,QACZ,YAAa,GACb,WAAY,QACZ,SAAU,IAAMpB,EAChB,KAAM,CACJ,KAAM,oBACN,MAAO,qBACP,MAAO,2BACP,OAAQ,oCACR,UAAW,aACX,YAAa,iBACb,MAAO,oBACP,OAAQ,eACR,OAAQ,eACR,YAAa,wFACf,CACF,EAGMqB,EAAY,CAAC,EACfC,EAAoB,GACpBC,EAAkB,CAAC,EACnBC,EAAc,GAMlB,SAASC,EAAUC,GAAS,CAC1B,GAAI,OAAOA,IAAY,SAIvB,QAAWC,MAAOD,GAChB,OAAQC,GAAK,CACX,IAAK,KACHC,EAAWF,GAAQ,EAAE,EACjBA,GAAQ,OAAS,IACnBG,GAAWH,GAAQ,EAAE,EAEvB,MACF,IAAK,SACHvB,EAAYuB,GAAQ,kBAAkB,YAAcA,GAAQ,OAAS5B,EAAS,cAAc4B,GAAQ,MAAM,EACtGvB,IACFA,EAAU,YAAYC,CAAM,EAC5BgB,EAAS,OAASM,GAAQ,OAGtBvB,IAAcL,EAAS,OACzBK,EAAYH,IAGhB,MACF,IAAK,YACHoB,EAAS,UAAYM,GAAQ,UACzBA,GAAQ,YAAc,QAAU7B,EAAO,YAAcA,EAAO,WAAW,8BAA8B,EAAE,UACzGuB,EAAS,UAAY,QAGzB,IAAK,QACCM,GAAQ,QACVN,EAAS,MAAQM,GAAQ,OAI3BtB,EAAO,UAAY,kBAAoBgB,EAAS,MAAQ,QAAUA,EAAS,UAGvEA,EAAS,QACXU,EAAqB,EAEvB,MACF,IAAK,MACHV,EAAS,IAAM,CAAC,CAACM,GAAQ,IACzB,MAAM,KAAK5B,EAAS,uBAAuB,WAAW,CAAC,EAAE,QAASiC,IAAUA,GAAM,UAAU,OAAO,UAAWX,EAAS,GAAG,CAAC,EAC3H,MACF,IAAK,SACHM,GAAQ,QAAU,EAClBN,EAAS,OAAU,MAAMM,GAAQ,MAAM,EAAqBN,EAAS,OAA1BM,GAAQ,OACnD,MACF,IAAK,OACCA,GAAQ,IAAMA,GAAQ,MACxBG,GAAWH,GAAQ,EAAE,EAEvB,MACF,IAAK,eACHN,EAAS,aAAe,CAAC,CAACM,GAAQ,aAClCM,GAAM,YAAY,EAAE,MAAM,QAAUZ,EAAS,aAAe,QAAU,OAClEA,EAAS,eACXA,EAAS,OAAS,QAEpB,MACF,IAAK,WACH,GAAI,MAAM,QAAQM,GAAQ,QAAQ,EAAG,CACnC,IAAMO,GAAoBD,GAAM,cAAc,EACxCE,GAAWpC,EAAS,cAAc,KAAK,EAG7CmC,GAAkB,YAAc,GAGhCP,GAAQ,SAAS,QAAQ,CAACS,GAAQC,IAAM,CACtC,IAAMC,GAASvC,EAAS,cAAc,QAAQ,EAE9CuC,GAAO,aAAa,OAAQ,QAAQ,EACpCA,GAAO,aAAa,KAAM,cAAgBD,CAAC,EAC3CC,GAAO,aAAa,kBAAmB,+BAAiCD,CAAC,EACzEC,GAAO,MAAM,MAAQF,GACrBE,GAAO,YAAcF,GAErBD,GAAS,YAAYG,EAAM,CAC7B,CAAC,EAGGX,GAAQ,SAAS,QACnBO,GAAkB,YAAYC,EAAQ,EAGxCd,EAAS,SAAWM,GAAQ,SAAS,MAAM,CAC7C,CACA,MACF,IAAK,eACHN,EAAS,aAAe,CAAC,CAACM,GAAQ,aAClCtB,EAAO,aAAa,eAAgBgB,EAAS,YAAY,EACzD,MACF,IAAK,QACHA,EAAS,MAAQ,CAAC,CAACM,GAAQ,MAC3BtB,EAAO,aAAa,aAAcgB,EAAS,KAAK,EAChD,MACF,IAAK,SAIH,GAHAA,EAAS,OAAS,CAAC,CAACM,GAAQ,OAC5BtB,EAAO,aAAa,cAAegB,EAAS,MAAM,EAE9CA,EAAS,OAAQ,CACnB,IAAMkB,GAAeZ,GAAQ,cAAgBN,EAAS,aAEtDJ,EAAgBuB,GAAsBD,EAAY,EAClDR,EAAqB,EACrBU,GAAgBF,EAAY,CAC9B,CACA,MACF,IAAK,cAEC,OAAOZ,GAAQ,aAAgB,WAC7BA,GAAQ,YAAY,QACtBN,EAAS,WAAaM,GAAQ,YAAY,MAC1CjB,EAAY,UAAYW,EAAS,YAGnCM,GAAQ,YAAcA,GAAQ,YAAY,MAG5CN,EAAS,YAAc,CAAC,CAACM,GAAQ,YACjCjB,EAAY,MAAM,QAAUW,EAAS,YAAc,QAAU,OAC7D,MACF,IAAK,aACHA,EAAS,WAAaM,GAAQ,WAC9BjB,EAAY,UAAYW,EAAS,WACjC,MACF,IAAK,cACHA,EAAS,YAAc,CAAC,CAACM,GAAQ,YAE7BN,EAAS,YACXhB,EAAO,aAAaM,EAAaH,CAAY,EAE7CA,EAAa,YAAYG,CAAW,EAGtC,MACF,IAAK,aACHU,EAAS,WAAaM,GAAQ,WAC9BhB,EAAY,UAAYU,EAAS,WACjC,MACF,IAAK,OACH,IAAMqB,GAASf,GAAQ,KACnBgB,GAAS,GAEb,GAAI,OAAOD,IAAW,SACpB,QAAWE,MAASF,GACdA,GAAOE,EAAK,GAAKvB,EAAS,KAAKuB,EAAK,IACtCvB,EAAS,KAAKuB,EAAK,EAAIF,GAAOE,EAAK,EACnCD,GAAS,IAKf,GAAIA,GAAQ,CACV,IAAME,GAAYZ,GAAM,gBAAgB,EAClCa,GAAcb,GAAM,kBAAkB,EAE5CY,GAAU,UAAYxB,EAAS,KAAK,KACpCyB,GAAY,UAAYzB,EAAS,KAAK,OACtCV,EAAY,aAAa,aAAcU,EAAS,KAAK,KAAK,EAC1DX,EAAY,aAAa,aAAcW,EAAS,KAAK,KAAK,EAC1DT,EAAU,aAAa,aAAcS,EAAS,KAAK,SAAS,EAC5DP,EAAY,aAAa,aAAcO,EAAS,KAAK,WAAW,EAChEZ,EAAW,aAAa,aAAcY,EAAS,KAAK,KAAK,EACzDf,EAAU,aAAa,aAAce,EAAS,KAAK,WAAW,CAChE,CACA,MACF,QACEA,EAASO,EAAG,EAAID,GAAQC,EAAG,CAC/B,CAEJ,CAOA,SAASmB,EAAmBC,GAAUrB,GAAS,CACzC,OAAOqB,IAAa,UAAY,OAAOrB,IAAY,WACrDL,EAAU0B,EAAQ,EAAIrB,GACtBF,EAAc,GAElB,CAMA,SAASwB,EAAsBD,GAAU,CACvC,OAAO1B,EAAU0B,EAAQ,EAErB,OAAO,KAAK1B,CAAS,EAAE,SAAW,IACpCG,EAAc,GAEVuB,KAAazB,GACf2B,EAAqB,EAG3B,CAMA,SAASC,EAAsBC,GAAS,CACtC,GAAI3B,EAAa,CAEf,IAAM4B,GAAqB,CAAC,KAAM,OAAQ,MAAO,SAAU,eAAgB,MAAM,EAEjF,QAASL,MAAY1B,EAAW,CAC9B,IAAMK,GAAUL,EAAU0B,EAAQ,EAGlC,GAAII,GAAQ,QAAQJ,EAAQ,EAAG,CAC7BzB,EAAoByB,GACpBxB,EAAkB,CAAC,EAGnB6B,GAAmB,QAASC,IAAW,OAAO3B,GAAQ2B,EAAM,CAAC,EAG7D,QAASA,MAAU3B,GACjBH,EAAgB8B,EAAM,EAAI,MAAM,QAAQjC,EAASiC,EAAM,CAAC,EAAIjC,EAASiC,EAAM,EAAE,MAAM,EAAIjC,EAASiC,EAAM,EAIxG5B,EAAUC,EAAO,EACjB,KACF,CACF,CACF,CACF,CAKA,SAASuB,GAAuB,CAC1B,OAAO,KAAK1B,CAAe,EAAE,OAAS,IACxCE,EAAUF,CAAe,EACzBD,EAAoB,GACpBC,EAAkB,CAAC,EAEvB,CAMA,SAASK,EAAWmB,GAAU,CACxBA,cAAoB,cACtBA,GAAW,CAACA,EAAQ,GAGlB,MAAM,QAAQA,EAAQ,EACxBA,GAAS,QAAShB,IAAU,CAC1BuB,GAAYvB,GAAO,QAASwB,EAAU,EACtCD,GAAYvB,GAAO,QAASyB,EAAkB,CAChD,CAAC,GAEDF,GAAYxD,EAAU,QAASiD,GAAUQ,EAAU,EACnDD,GAAYxD,EAAU,QAASiD,GAAUS,EAAkB,EAE/D,CAMA,SAASD,GAAWE,GAAO,CAErBrC,EAAS,SAKb8B,EAAsBO,GAAM,MAAM,EAElC1C,EAAY0C,GAAM,OAClBxC,EAAWF,EAAU,MACrBC,EAAgBuB,GAAsBtB,CAAQ,EAC9Cb,EAAO,UAAU,IAAI,UAAU,EAE/B0B,EAAqB,EACrBU,GAAgBvB,CAAQ,GAEpBG,EAAS,YAAcA,EAAS,eAClCZ,EAAW,MAAM,CAAE,cAAe,EAAK,CAAC,EACxCA,EAAW,kBAAkBO,EAAU,eAAgBA,EAAU,YAAY,GAG3EK,EAAS,aACXZ,EAAW,OAAO,GAIhBU,GAAeE,EAAS,eAC1BsC,GAAqB,EAAE,MAAM,EAAE,MAAM,EAIvC3C,EAAU,cAAc,IAAI,MAAM,OAAQ,CAAE,QAAS,EAAK,CAAC,CAAC,EAC9D,CAKA,SAASe,GAAuB,CAC9B,GAAI,CAAC1B,GAAU,CAACW,GAAa,CAACK,EAAS,OAAQ,OAC/C,IAAMuC,GAASxD,EACTyD,GAAU/D,EAAO,QACjBgE,GAAczD,EAAO,YACrB0D,GAAe1D,EAAO,aACtB2D,GAAa,CAAE,KAAM,GAAO,IAAK,EAAM,EACzCC,GAAaC,GAAiBC,EAC9BC,GAAS,CAAE,EAAG,EAAG,EAAG,CAAE,EAW1B,GATIR,KACFK,GAAcnE,EAAO,iBAAiB8D,EAAM,EAC5CM,GAAkB,WAAWD,GAAY,SAAS,EAClDE,EAAkB,WAAWF,GAAY,cAAc,EAEvDG,GAASR,GAAO,sBAAsB,EACtCQ,GAAO,GAAKD,EAAkBN,IAG5B,CAACxC,EAAS,OAAQ,CACpB,IAAMgD,GAASrD,EAAU,sBAAsB,EAC3CsD,GAAOD,GAAO,EACdE,GAAMV,GAAUQ,GAAO,EAAIA,GAAO,OAAShD,EAAS,OAIpDuC,IACFU,IAAQF,GAAO,EACfG,IAAOH,GAAO,EAEVE,GAAOR,GAAcF,GAAO,cAC9BU,IAAQD,GAAO,MAAQP,GACvBE,GAAW,KAAO,IAGhBO,GAAMR,GAAeH,GAAO,aAAeM,IACzCH,GAAe1C,EAAS,QAAUgD,GAAO,KAAOD,GAAO,EAAIP,MAC7DU,IAAOF,GAAO,OAASN,GAAe1C,EAAS,OAAS,EACxD2C,GAAW,IAAM,IAIrBO,IAAOX,GAAO,YAIVU,GAAOR,GAAc/D,EAAS,gBAAgB,cAChDuE,IAAQD,GAAO,MAAQP,GACvBE,GAAW,KAAO,IAGhBO,GAAMR,GAAeF,GAAU9D,EAAS,gBAAgB,cACtDgE,GAAe1C,EAAS,QAAUgD,GAAO,MAC3CE,GAAMV,GAAUQ,GAAO,EAAIN,GAAe1C,EAAS,OACnD2C,GAAW,IAAM,KAKvB3D,EAAO,UAAU,OAAO,WAAY2D,GAAW,IAAI,EACnD3D,EAAO,UAAU,OAAO,UAAW2D,GAAW,GAAG,EACjD3D,EAAO,MAAM,KAAOiE,GAAO,KAC3BjE,EAAO,MAAM,IAAMkE,GAAM,KACzBH,GAAO,GAAK/D,EAAO,WACnB+D,GAAO,GAAK/D,EAAO,SACrB,CAEAe,EAAgB,CACd,MAAOd,EAAU,YACjB,OAAQA,EAAU,aAClB,EAAGA,EAAU,WAAa8D,GAAO,EACjC,EAAG9D,EAAU,UAAY8D,GAAO,CAClC,CACF,CAMA,SAAStC,GAAWkB,GAAU,CACxBA,cAAoB,YACtBwB,GAAexB,EAAQ,EACd,MAAM,QAAQA,EAAQ,EAC/BA,GAAS,QAAQwB,EAAc,EAE/BzE,EAAS,iBAAiBiD,EAAQ,EAAE,QAAQwB,EAAc,CAE9D,CAMA,SAASA,GAAexC,GAAO,CAC7B,IAAMyC,GAAazC,GAAM,WAEzB,GAAI,CAACyC,GAAW,UAAU,SAAS,WAAW,EAAG,CAC/C,IAAMC,GAAU3E,EAAS,cAAc,KAAK,EACxC4E,GAAU,aAEVtD,EAAS,KAAOW,GAAM,UAAU,SAAS,SAAS,KACpD2C,IAAW,YAGbD,GAAQ,UAAY,mEACpBD,GAAW,aAAaC,GAAS1C,EAAK,EACtC0C,GAAQ,UAAYC,GACpBD,GAAQ,MAAM,MAAQ1C,GAAM,MAC5B0C,GAAQ,YAAY1C,EAAK,CAC3B,CACF,CAMA,SAASyB,GAAmBC,GAAO,CACjC,IAAME,GAASF,GAAM,OAAO,WAGxBE,GAAO,UAAU,SAAS,WAAW,IACvCA,GAAO,MAAM,MAAQF,GAAM,OAAO,MAEtC,CAMA,SAASkB,GAAYC,GAAQ,CAC3B,GAAI7D,GAAa,CAACK,EAAS,OAAQ,CACjC,IAAMyD,GAAS9D,EAGX6D,KAEF7D,EAAYf,EAERiB,IAAa4D,GAAO,QACtBA,GAAO,MAAQ5D,EAGf4D,GAAO,cAAc,IAAI,MAAM,QAAS,CAAE,QAAS,EAAK,CAAC,CAAC,IAK9D,WAAW,IAAM,CACX5D,IAAa4D,GAAO,OACtBA,GAAO,cAAc,IAAI,MAAM,SAAU,CAAE,QAAS,EAAK,CAAC,CAAC,CAE/D,CAAC,EAGDzE,EAAO,UAAU,OAAO,UAAU,EAG9BoB,GACFyB,EAAqB,EAIvB4B,GAAO,cAAc,IAAI,MAAM,QAAS,CAAE,QAAS,EAAK,CAAC,CAAC,EAEtDzD,EAAS,YACXyD,GAAO,MAAM,CAAE,cAAe,EAAK,CAAC,EAItC9D,EAAYf,CACd,CACF,CAMA,SAASwC,GAAgBsC,GAAK,CAC5B,IAAMC,GAAOC,GAAUF,EAAG,EACpBG,GAAOC,GAAWH,EAAI,EAE5BI,GAAsBF,GAAK,EAAGA,GAAK,CAAC,EACpCG,GAAYL,GAAME,EAAI,EAGtBtE,EAAU,MAAQsE,GAAK,EACvB7E,EAAO,MAAM,MAAQ,OAAS6E,GAAK,EAAI,eACvCrE,EAAU,MAAM,KAAOqE,GAAK,EAAI,IAAM,IAAM,IAE5C3E,EAAY,MAAM,KAAOa,EAAc,MAAQ8D,GAAK,EAAI,IAAM,KAC9D3E,EAAY,MAAM,IAAMa,EAAc,OAASA,EAAc,OAAS8D,GAAK,EAAI,IAAM,KAErFpE,EAAY,MAAQoE,GAAK,EAAI,IAC7BnE,EAAY,MAAM,KAAOmE,GAAK,EAAI,IAAM,GAC1C,CAOA,SAAS1C,GAAsBuC,GAAK,CAClC,IAAMO,GAASP,GAAI,UAAU,EAAG,CAAC,EAAE,YAAY,EAE/C,OAAIO,KAAW,OAASA,KAAW,MAC1BA,GAGF,KACT,CAMA,SAASC,GAAUC,GAAO,CACxBA,GAAQA,KAAUvF,EAAYuF,GAAQ/E,EAAW,MAE7CO,IACFA,EAAU,MAAQwE,GAClBxE,EAAU,cAAc,IAAI,MAAM,QAAS,CAAE,QAAS,EAAK,CAAC,CAAC,GAG3DK,EAAS,UACXA,EAAS,SAAS,KAAKvB,EAAQ0F,GAAOxE,CAAS,EAGjDjB,EAAS,cAAc,IAAI,YAAY,eAAgB,CAAE,OAAQ,CAAE,MAAAyF,GAAO,UAAAxE,CAAU,CAAE,CAAC,CAAC,CAC1F,CAOA,SAASyE,GAAmBC,GAAGC,GAAG,CAChC,IAAMT,GAAO,CACX,EAAGtE,EAAU,MAAQ,EACrB,EAAG8E,GAAItE,EAAc,MAAQ,IAC7B,EAAG,IAAMuE,GAAIvE,EAAc,OAAS,IACpC,EAAGN,EAAY,MAAQ,GACzB,EACMkE,GAAOY,GAAWV,EAAI,EAE5BE,GAAsBF,GAAK,EAAGA,GAAK,CAAC,EACpCG,GAAYL,GAAME,EAAI,EACtBK,GAAU,CACZ,CAOA,SAASH,GAAsBS,GAAYC,GAAO,CAChD,IAAIlD,GAAQvB,EAAS,KAAK,OAE1BwE,GAAaA,GAAW,QAAQ,CAAC,EAAI,EACrCC,GAAQA,GAAM,QAAQ,CAAC,EAAI,EAC3BlD,GAAQA,GAAM,QAAQ,MAAOiD,EAAU,EACvCjD,GAAQA,GAAM,QAAQ,MAAOkD,EAAK,EAClCvF,EAAY,aAAa,aAAcqC,EAAK,CAC9C,CAQA,SAASmD,GAAmBrC,GAAO,CACjC,MAAO,CACL,MAAOA,GAAM,eAAiBA,GAAM,eAAe,CAAC,EAAE,MAAQA,GAAM,MACpE,MAAOA,GAAM,eAAiBA,GAAM,eAAe,CAAC,EAAE,MAAQA,GAAM,KACtE,CACF,CAMA,SAASsC,GAAWtC,GAAO,CACzB,IAAMuC,GAAUF,GAAmBrC,EAAK,EACpCgC,GAAIO,GAAQ,MAAQ7E,EAAc,EAClCuE,GAAIM,GAAQ,MAAQ7E,EAAc,EAElChB,IACFuF,IAAKvF,EAAU,WAGjB8F,GAAkBR,GAAGC,EAAC,EAGtBjC,GAAM,eAAe,EACrBA,GAAM,gBAAgB,CACxB,CAOA,SAASyC,GAAoBC,GAASC,GAAS,CAC7C,IAAIX,GAAInF,EAAY,MAAM,KAAK,QAAQ,KAAM,EAAE,EAAI,EAAI6F,GACnDT,GAAIpF,EAAY,MAAM,IAAI,QAAQ,KAAM,EAAE,EAAI,EAAI8F,GAEtDH,GAAkBR,GAAGC,EAAC,CACxB,CAOA,SAASO,GAAkBR,GAAGC,GAAG,CAE/BD,GAAIA,GAAI,EAAI,EAAIA,GAAItE,EAAc,MAAQA,EAAc,MAAQsE,GAChEC,GAAIA,GAAI,EAAI,EAAIA,GAAIvE,EAAc,OAASA,EAAc,OAASuE,GAGlEpF,EAAY,MAAM,KAAOmF,GAAI,KAC7BnF,EAAY,MAAM,IAAMoF,GAAI,KAG5BF,GAAmBC,GAAGC,EAAC,EAGvBpF,EAAY,MAAM,CACpB,CAOA,SAAS8E,GAAYL,GAAME,GAAM,CAAKF,KAAS,SAASA,GAAO,CAAC,GAAOE,KAAS,SAASA,GAAO,CAAC,GAC/F,IAAII,GAASjE,EAAS,OAEtB,QAAWO,MAAOoD,GAChB7E,EAAayB,EAAG,EAAIoD,GAAKpD,EAAG,EAG9B,QAAWA,MAAOsD,GAChB/E,EAAayB,EAAG,EAAIsD,GAAKtD,EAAG,EAG9B,IAAM0E,GAAMC,GAAUpG,CAAY,EAC5BqG,GAAYF,GAAI,UAAU,EAAG,CAAC,EAqBpC,OAnBA/F,EAAY,MAAM,MAAQiG,GAC1BzF,EAAY,WAAW,MAAM,MAAQyF,GACrCzF,EAAY,MAAM,MAAQuF,GAC1B9F,EAAa,MAAM,MAAQ8F,GAG3BhG,EAAU,MAAM,QAAU,OAC1BA,EAAU,aACVA,EAAU,MAAM,QAAU,GAC1BS,EAAY,mBAAmB,MAAM,QAAU,OAC/CA,EAAY,mBAAmB,aAC/BA,EAAY,mBAAmB,MAAM,QAAU,GAE3CuE,KAAW,QACbA,GAASnF,EAAa,IAAM,EAAI,MAAQ,MAC/BmF,KAAW,SACpBA,GAASrE,GAGHqE,GAAQ,CACd,IAAK,MACH7E,EAAW,MAAQ6F,GACnB,MACF,IAAK,MACH7F,EAAW,MAAQgG,GAAUtG,CAAY,EACzC,MACF,IAAK,MACHM,EAAW,MAAQiG,GAAUC,GAAWxG,CAAY,CAAC,EACrD,KACJ,CAGAJ,EAAS,cAAc,uBAA0BuF,GAAS,IAAK,EAAE,QAAU,EAC7E,CAKA,SAASsB,IAAS,CAChB,IAAMC,GAAMjG,EAAU,MAAQ,EACxB8E,GAAInF,EAAY,MAAM,KAAK,QAAQ,KAAM,EAAE,EAAI,EAC/CoF,GAAIpF,EAAY,MAAM,IAAI,QAAQ,KAAM,EAAE,EAAI,EAEpDF,EAAO,MAAM,MAAQ,OAASwG,GAAM,eACpChG,EAAU,MAAM,KAAOgG,GAAM,IAAM,IAAM,IAEzCpB,GAAmBC,GAAGC,EAAC,CACzB,CAKA,SAASmB,IAAW,CAClB,IAAMC,GAAQjG,EAAY,MAAQ,IAElCC,EAAY,MAAM,KAAOgG,GAAQ,IAAM,IACvC1B,GAAY,CAAE,EAAG0B,EAAM,CAAC,EACxBxB,GAAU,CACZ,CAOA,SAASK,GAAWV,GAAM,CACxB,IAAMW,GAAaX,GAAK,EAAI,IACtBY,GAAQZ,GAAK,EAAI,IACnB8B,GAASnB,GAAaC,GACtBmB,GAAU/B,GAAK,EAAI,GACnBQ,GAAIsB,IAAU,EAAIhH,EAAK,IAAIiH,GAAU,EAAI,CAAC,GAC1CC,GAAIpB,GAAQkB,GAEhBA,GAASA,GAASE,GAClBxB,GAAIA,GAAIwB,GAER,IAAMC,EAAQnH,EAAK,MAAMiH,EAAO,EAAI,EAC9BG,GAAM,CAACJ,GAAQtB,GAAGwB,GAAGA,GAAGxB,GAAGsB,EAAM,EAAEG,CAAK,EACxCE,GAAQ,CAAC3B,GAAGsB,GAAQA,GAAQtB,GAAGwB,GAAGA,EAAC,EAAEC,CAAK,EAC1CG,GAAO,CAACJ,GAAGA,GAAGxB,GAAGsB,GAAQA,GAAQtB,EAAC,EAAEyB,CAAK,EAE/C,MAAO,CACL,EAAGnH,EAAK,MAAMoH,GAAM,GAAG,EACvB,EAAGpH,EAAK,MAAMqH,GAAQ,GAAG,EACzB,EAAGrH,EAAK,MAAMsH,GAAO,GAAG,EACxB,EAAGpC,GAAK,CACV,CACF,CAOA,SAASyB,GAAWzB,GAAM,CACxB,IAAMY,GAAQZ,GAAK,EAAI,IACjBqC,GAAYzB,IAAS,EAAIZ,GAAK,EAAI,IAAM,GAC1CW,GAEJ,OAAI0B,GAAY,GAAKA,GAAY,IAC/B1B,GAAa7F,EAAK,OAAO8F,GAAQyB,IAAavH,EAAK,IAAIuH,GAAW,EAAIA,EAAS,EAAI,GAAG,GAGjF,CACL,EAAGrC,GAAK,EACR,EAAGW,IAAc,EACjB,EAAG7F,EAAK,MAAMuH,GAAY,GAAG,EAC7B,EAAGrC,GAAK,CACV,CACF,CAOA,SAASC,GAAWH,GAAM,CACxB,IAAMoC,GAAMpC,GAAK,EAAI,IACfqC,GAAQrC,GAAK,EAAI,IACjBsC,GAAOtC,GAAK,EAAI,IAChBwC,GAAOxH,EAAK,IAAIoH,GAAKC,GAAOC,EAAI,EAChCG,GAAOzH,EAAK,IAAIoH,GAAKC,GAAOC,EAAI,EAChCN,GAASQ,GAAOC,GAChB3B,EAAQ0B,GACVX,GAAM,EACNhB,GAAa,EAEjB,OAAImB,KACEQ,KAASJ,KAAMP,IAAOQ,GAAQC,IAAQN,IACtCQ,KAASH,KAAQR,GAAM,GAAKS,GAAOF,IAAOJ,IAC1CQ,KAASF,KAAOT,GAAM,GAAKO,GAAMC,IAASL,IAC1CQ,KAAO3B,GAAamB,GAASQ,KAGnCX,GAAM7G,EAAK,MAAM6G,GAAM,EAAE,EAElB,CACL,EAAGA,GAAM,EAAIA,GAAM,IAAMA,GACzB,EAAG7G,EAAK,MAAM6F,GAAa,GAAG,EAC9B,EAAG7F,EAAK,MAAM8F,EAAQ,GAAG,EACzB,EAAGd,GAAK,CACV,CACF,CAOA,SAASC,GAAUF,GAAK,CACtB,IAAM2C,GAAQ,wEACVC,GAAO3C,GAGX,OAAA9E,EAAI,UAAY,OAGhBA,EAAI,UAAY6E,GAChB4C,GAAQD,GAAM,KAAKxH,EAAI,SAAS,EAE5ByH,GACF3C,GAAO,CACL,EAAG2C,GAAM,CAAC,EAAI,EACd,EAAGA,GAAM,CAAC,EAAI,EACd,EAAGA,GAAM,CAAC,EAAI,EACd,EAAGA,GAAM,CAAC,EAAI,CAChB,GAGAA,GAAQzH,EAAI,UAAU,QAAQ,IAAK,EAAE,EAAE,MAAM,OAAO,EAAE,IAAK0H,IAAM,SAASA,GAAG,EAAE,CAAC,EAChF5C,GAAO,CACL,EAAG2C,GAAM,CAAC,EACV,EAAGA,GAAM,CAAC,EACV,EAAGA,GAAM,CAAC,EACV,EAAG,CACL,GAGK3C,EACT,CAOA,SAASuB,GAAUvB,GAAM,CACvB,IAAI6C,GAAI7C,GAAK,EAAE,SAAS,EAAE,EACtB8C,GAAI9C,GAAK,EAAE,SAAS,EAAE,EACtB+C,GAAI/C,GAAK,EAAE,SAAS,EAAE,EACtBgD,GAAI,GAcR,GAZIhD,GAAK,EAAI,KACX6C,GAAI,IAAMA,IAGR7C,GAAK,EAAI,KACX8C,GAAI,IAAMA,IAGR9C,GAAK,EAAI,KACX+C,GAAI,IAAMA,IAGR1G,EAAS,QAAU2D,GAAK,EAAI,GAAK3D,EAAS,YAAa,CACzD,IAAM0F,GAAQ/B,GAAK,EAAI,IAAM,EAC7BgD,GAAIjB,GAAM,SAAS,EAAE,EAEjBA,GAAQ,KACViB,GAAI,IAAMA,GAEd,CAEA,MAAO,IAAMH,GAAIC,GAAIC,GAAIC,EAC3B,CAOA,SAASvB,GAAUzB,GAAM,CACvB,MAAI,CAAC3D,EAAS,OAAS2D,GAAK,IAAM,GAAK,CAAC3D,EAAS,WACxC,OAAS2D,GAAK,EAAI,KAAOA,GAAK,EAAI,KAAOA,GAAK,EAAI,IAElD,QAAUA,GAAK,EAAI,KAAOA,GAAK,EAAI,KAAOA,GAAK,EAAI,KAAOA,GAAK,EAAI,GAE9E,CAOA,SAAS0B,GAAUuB,GAAM,CACvB,MAAI,CAAC5G,EAAS,OAAS4G,GAAK,IAAM,GAAK,CAAC5G,EAAS,WACxC,OAAS4G,GAAK,EAAI,KAAOA,GAAK,EAAI,MAAQA,GAAK,EAAI,KAEnD,QAAUA,GAAK,EAAI,KAAOA,GAAK,EAAI,MAAQA,GAAK,EAAI,MAAQA,GAAK,EAAI,GAEhF,CAKA,SAASC,IAAO,CACVnI,EAAS,eAAe,YAAY,IAExCK,EAAYH,EACZI,EAASN,EAAS,cAAc,KAAK,EACrCM,EAAO,aAAa,KAAM,YAAY,EACtCA,EAAO,UAAY,aACnBA,EAAO,UACP,4HAA2IgB,EAAS,KAAK,MAAQ,MAAS,gFAC1KA,EAAS,KAAK,YAAc,MAC5B,gGAE2B,wGAC3BA,EAAS,KAAK,UAAY,MAC1B,gEAE6B,4GAC7BA,EAAS,KAAK,YAAc,MAC5B,gIAIsC,WACtCA,EAAS,KAAK,OAAS,aACvB,2WASwD,sEACxDA,EAAS,KAAK,MAAQ,KAAQA,EAAS,WAAa,aACpD,oDAAsD,sEACtDA,EAAS,KAAK,MAAQ,KAAQA,EAAS,WAAa,aACpD,UAAY,oCACZA,EAAS,KAAK,KAAO,YAAc,sCACnCA,EAAS,KAAK,OAAS,WAGvBtB,EAAS,KAAK,YAAYM,CAAM,EAGhCC,EAAY2B,GAAM,gBAAgB,EAClC1B,EAAc0B,GAAM,kBAAkB,EACtCvB,EAAcuB,GAAM,WAAW,EAC/BtB,EAAcsB,GAAM,WAAW,EAC/BzB,EAAeyB,GAAM,mBAAmB,EACxCxB,EAAawB,GAAM,iBAAiB,EACpCrB,EAAYqB,GAAM,gBAAgB,EAClCpB,EAAYoB,GAAM,gBAAgB,EAClCnB,EAAcmB,GAAM,kBAAkB,EACtClB,EAAckB,GAAM,kBAAkB,EAGtCJ,EAAWR,EAAS,EAAE,EACtBS,GAAWT,EAAS,EAAE,EAEtBkC,GAAYlD,EAAQ,YAAcqD,IAAU,CAC1CrD,EAAO,UAAU,OAAO,kBAAkB,EAC1CqD,GAAM,gBAAgB,CACxB,CAAC,EAEDH,GAAYjD,EAAW,YAAcoD,IAAU,CAC7CH,GAAYxD,EAAU,YAAaiG,EAAU,CAC/C,CAAC,EAEDzC,GAAYjD,EAAW,cAAgBoD,IAAU,CAC/CA,GAAM,eAAe,CACvB,CAAC,EAEDH,GAAYjD,EAAW,aAAeoD,IAAU,CAC9C3D,EAAS,iBAAiB,YAAaiG,GAAY,CAAE,QAAS,EAAM,CAAC,CACvE,CAAC,EAEDzC,GAAYhD,EAAa,YAAcmD,IAAU,CAC/CH,GAAYxD,EAAU,YAAaiG,EAAU,CAC/C,CAAC,EAEDzC,GAAYhD,EAAa,aAAemD,IAAU,CAChD3D,EAAS,iBAAiB,YAAaiG,GAAY,CAAE,QAAS,EAAM,CAAC,CACvE,CAAC,EAEDzC,GAAY9C,EAAY,SAAWiD,IAAU,CAC3C,IAAMoC,GAAQrF,EAAW,MAEzB,GAAIO,GAAaK,EAAS,OAAQ,CAChC,IAAMmE,GAAQM,KAAU,GAAKA,GAAQrD,GAAgBqD,EAAK,EAC1DP,GAAUC,EAAK,CACjB,CACF,CAAC,EAEDjC,GAAY7C,EAAa,QAAUgD,IAAU,CAC3C6B,GAAU,EAAE,EACZX,GAAY,CACd,CAAC,EAEDrB,GAAY5C,EAAa,QAAU+C,IAAU,CAC3C6B,GAAU,EACVX,GAAY,CACd,CAAC,EAEDrB,GAAYtB,GAAM,YAAY,EAAG,QAAS,oBAAsByB,IAAU,CACxEzC,EAAgByC,GAAM,OAAO,MAC7B2B,GAAY,EACZE,GAAU,CACZ,CAAC,EAEDhC,GAAYlD,EAAQ,QAAS,uBAAyBqD,IAAU,CAC9DjB,GAAgBiB,GAAM,OAAO,WAAW,EACxC6B,GAAU,EAENlE,EAAS,cACXuD,GAAY,CAEhB,CAAC,EAEDrB,GAAYxD,EAAU,UAAY2D,IAAU,CAC1C3D,EAAS,oBAAoB,YAAaiG,EAAU,CACtD,CAAC,EAEDzC,GAAYxD,EAAU,WAAa2D,IAAU,CAC3C3D,EAAS,oBAAoB,YAAaiG,EAAU,CACtD,CAAC,EAEDzC,GAAYxD,EAAU,YAAc2D,IAAU,CAC5CvC,EAAc,GACdd,EAAO,UAAU,OAAO,kBAAkB,EAC1CuE,GAAY,CACd,CAAC,EAEDrB,GAAYxD,EAAU,UAAY2D,IAAU,CAC1C,IAAM9B,GAAM8B,GAAM,IACZyE,GAASzE,GAAM,OACf0E,GAAW1E,GAAM,SAavB,GAVI9B,KAAQ,SACVgD,GAAY,EAAI,EAHF,CAAC,MAAO,UAAW,YAAa,YAAa,YAAY,EAMtD,SAAShD,EAAG,IAC7BT,EAAc,GACdd,EAAO,UAAU,IAAI,kBAAkB,GAIrCuB,KAAQ,OAASuG,GAAO,QAAQ,eAAe,EAAG,CACpD,IAAME,GAAa1E,GAAqB,EAClC2E,GAAiBD,GAAW,MAAM,EAClCE,EAAgBF,GAAW,IAAI,EAEjCD,IAAYD,KAAWG,IACzBC,EAAc,MAAM,EACpB7E,GAAM,eAAe,GACZ,CAAC0E,IAAYD,KAAWI,IACjCD,GAAe,MAAM,EACrB5E,GAAM,eAAe,EAEzB,CACF,CAAC,EAEDH,GAAYxD,EAAU,QAAS,oBAAsB2D,IAAU,CAEzDjC,GACFyB,EAAqB,EAIvBQ,GAAM,OAAO,mBAAmB,cAAc,IAAI,MAAM,QAAS,CAAE,QAAS,EAAK,CAAC,CAAC,CACrF,CAAC,EAEDH,GAAYhD,EAAa,UAAYmD,IAAU,CAC7C,IAAM8E,GAAY,CAChB,QAAS,CAAC,EAAG,EAAE,EACf,UAAW,CAAC,EAAG,CAAC,EAChB,UAAW,CAAC,GAAI,CAAC,EACjB,WAAY,CAAC,EAAG,CAAC,CACnB,EAEI,OAAO,KAAKA,EAAS,EAAE,SAAS9E,GAAM,GAAG,IAC3CyC,GAAoB,GAAGqC,GAAU9E,GAAM,GAAG,CAAC,EAC3CA,GAAM,eAAe,EAEzB,CAAC,EAEDH,GAAYjD,EAAW,QAAS0F,EAAU,EAC1CzC,GAAY3C,EAAW,QAASgG,EAAM,EACtCrD,GAAYzC,EAAa,QAASgG,EAAQ,EAC5C,CAMA,SAASnD,IAAuB,CAI9B,OAHiB,MAAM,KAAKtD,EAAO,iBAAiB,eAAe,CAAC,EACxC,OAAQoI,IAAS,CAAC,CAACA,GAAK,WAAW,CAGjE,CAOA,SAASxG,GAAMyG,GAAI,CACjB,OAAO3I,EAAS,eAAe2I,EAAE,CACnC,CASA,SAASnF,GAAYoF,GAASC,GAAM5F,GAAU6F,GAAI,CAChD,IAAMC,GAAU,QAAQ,UAAU,SAAW,QAAQ,UAAU,kBAG3D,OAAO9F,IAAa,SACtB2F,GAAQ,iBAAiBC,GAAOlF,IAAU,CACpCoF,GAAQ,KAAKpF,GAAM,OAAQV,EAAQ,GACrC6F,GAAG,KAAKnF,GAAM,OAAQA,EAAK,CAE/B,CAAC,GAKDmF,GAAK7F,GACL2F,GAAQ,iBAAiBC,GAAMC,EAAE,EAErC,CAOA,SAASE,GAASF,GAAIG,GAAM,CAC1BA,GAAOA,KAAS/I,EAAY+I,GAAO,CAAC,EAEhCjJ,EAAS,aAAe,UAC1B8I,GAAG,GAAGG,EAAI,EAEVjJ,EAAS,iBAAiB,mBAAoB,IAAM,CAClD8I,GAAG,GAAGG,EAAI,CACZ,CAAC,CAEL,CAGI,WAAa/I,GAAa,SAAS,WAAa,CAAC,SAAS,UAAU,UACtE,SAAS,UAAU,QAAU,MAAM,UAAU,SAY/C,SAASgJ,GAASzD,GAAO2C,GAAQ,CAC/BnH,EAAYmH,GACZjH,EAAWF,EAAU,MACrBmC,EAAsBgF,EAAM,EAC5BlH,EAAgBuB,GAAsBgD,EAAK,EAC3CzD,EAAqB,EACrBU,GAAgB+C,EAAK,EACrBD,GAAU,EACNrE,IAAasE,IACfxE,EAAU,cAAc,IAAI,MAAM,SAAU,CAAE,QAAS,EAAK,CAAC,CAAC,CAElE,CAGA,IAAMnB,IAAW,IAAM,CACrB,IAAMqJ,GAAU,CACd,KAAMhB,GACN,IAAKxG,EACL,KAAMI,GACN,MAAO8C,GACP,YAAa7B,EACb,SAAUkG,GACV,eAAgBhG,EAChB,eAAgBlB,EAChB,MAAOgH,EACT,EAEA,SAASlJ,GAAQ8B,GAAS,CACxBoH,GAAS,IAAM,CACTpH,KACE,OAAOA,IAAY,SACrBE,EAAWF,EAAO,EAElBD,EAAUC,EAAO,EAGvB,CAAC,CACH,CAEA,QAAWC,MAAOsH,GAChBrJ,GAAQ+B,EAAG,EAAI,UAAY,CAAC,QAASuH,GAAO,UAAU,OAAQH,GAAO,IAAI,MAAMG,EAAI,EAAGC,GAAO,EAAGA,GAAOD,GAAMC,KAASJ,GAAKI,EAAI,EAAI,UAAUA,EAAI,EAC/IL,GAASG,GAAQtH,EAAG,EAAGoH,EAAI,CAC7B,EAIF,OAAAD,GAAS,IAAM,CACbjJ,EAAO,iBAAiB,SAAW4D,IAAU,CAAC7D,GAAQ,eAAe,CAAE,CAAC,EACxEC,EAAO,iBAAiB,SAAW4D,IAAU,CAAC7D,GAAQ,eAAe,CAAE,CAAC,CAC1E,CAAC,EAEMA,EACT,GAAG,EAGH,OAAAA,GAAQ,QAAUA,GAGXA,EAET,GAAG,OAAQ,SAAU,IAAI,CAC3B,GAAG,EAEGwJ,IAAWxJ,GAAQ,QACnByJ,IAAQzJ,GAAQ,KAChB0J,IAAO1J,GAAQ,IACf2J,IAAQ3J,GAAQ,KAChB4J,IAAS5J,GAAQ,MACjB6J,IAAe7J,GAAQ,YACvB8J,IAAkB9J,GAAQ,eAC1B+J,IAAkB/J,GAAQ,eACzBgK,GAAQhK,GCzxCf,IAAAiK,GAAqB,WAGrB,SAASC,KAAqB,CAC5BC,GAAI,OAASC,GAAM,IAAI,QAAQ,EAE/B,GAAAC,QAAS,eAAeF,GAAI,OAAQG,GAAO,SAAWC,GAAM,CACtDA,EAAE,OAAS,MACb,GAAAF,QAAS,YAAYF,GAAI,OAAQG,GAAO,SAAUC,CAAC,EAEnDH,GAAM,IAAI,SAAUD,GAAI,MAAM,EAElC,CAAC,CACH,CAGO,SAASK,IAAmB,CACjBC,GAAK,aAAa,EAE1B,QAASC,GAAW,CAC1B,IAAMC,EAASD,EAAO,QAAUJ,GAAO,SAASI,EAAO,QAAQ,KAAK,EAAEA,EAAO,QAAQ,KAAK,EAE1FA,EAAO,MAAM,WAAaC,EACtBC,GAAS,IAAM,QACb,oBACA,oBACF,mBACN,CAAC,CACH,CAEA,IAAIC,GAESP,GAAS,CACpB,SAAU,CACR,OAAQ,CAAE,MAAO,UAAW,MAAO,UAAW,KAAM,UAAW,MAAO,SAAU,EAChF,QAAS,CAAE,MAAO,WAAY,MAAO,cAAe,KAAM,UAAW,MAAO,SAAU,EACtF,SAAU,CAAE,MAAO,YAAa,MAAO,eAAgB,KAAM,UAAW,MAAO,SAAU,EACzF,SAAU,CAAE,MAAO,aAAc,MAAO,eAAgB,KAAM,UAAW,MAAO,SAAU,EAC1F,MAAO,CACL,MAAO,SACP,MAAO,qEACP,KAAM,UACN,MAAO,SACT,EACA,MAAO,CAAE,MAAO,QAAS,MAAO,YAAa,KAAM,UAAW,MAAO,SAAU,EAC/E,SAAU,CAAE,MAAO,YAAa,MAAO,uCAAwC,KAAM,UAAW,MAAO,SAAU,EACjH,QAAS,CAAE,MAAO,WAAY,MAAO,0BAA2B,KAAM,UAAW,MAAO,SAAU,EAClG,OAAQ,CAAE,MAAO,UAAW,MAAO,aAAc,KAAM,UAAW,MAAO,SAAU,EACnF,SAAU,CAAE,MAAO,YAAa,MAAO,eAAgB,KAAM,UAAW,MAAO,SAAU,EACzF,KAAM,CAAE,MAAO,OAAQ,MAAO,WAAY,KAAM,UAAW,MAAO,SAAU,EAC5E,KAAM,CAAE,MAAO,QAAS,MAAO,oBAAqB,KAAM,UAAW,MAAO,SAAU,EACtF,SAAU,CAAE,MAAO,YAAa,MAAO,eAAgB,KAAM,UAAW,MAAO,SAAU,CAC3F,EAEA,WAAY,IAAM,CACZF,GAAM,IAAI,QAAQ,EACpBF,IAAmB,EAEnBE,GAAM,IAAI,SAAUE,GAAO,QAAQ,EAGrCH,GAAI,OAASC,GAAM,IAAI,QAAQ,EAEfK,GAAK,aAAa,EAE1B,QAASC,GAAW,CAC1BA,EAAO,MAAQP,GAAI,OAAOO,EAAO,QAAQ,KAAK,EAAEA,EAAO,QAAQ,KAAK,EAEpEA,EAAO,iBAAiB,QAAUI,GAAU,CAC1CD,GAAeC,EAAM,OAErBN,GAAiB,CACnB,CAAC,CACH,CAAC,EAEDO,GAAQ,KAAK,EACbA,GAAQ,CACN,GAAI,cACJ,OAAQ,gBACR,MAAO,GACP,SAAU,IAAM,CACdP,GAAiB,EACjBF,GAAO,KAAK,CACd,CACF,CAAC,EAEDS,GAAQ,MAAM,IAAM,CAClB,IAAML,EAAS,SAAS,eAAe,iBAAiB,EAClDM,EAAS,SAAS,cAAc,GAAG,EAEzCN,EAAO,MAAMM,CAAM,EACnBA,EAAO,aAAa,QAAS,aAAa,EAC1CA,EAAO,UAAU,IAAI,kBAAkB,EACvCA,EAAO,UAAY,mCACnBA,EAAO,iBAAiB,QAAS,IAAM,CACrCH,GAAa,MAAQP,GAAO,SAASO,GAAa,QAAQ,KAAK,EAAEA,GAAa,QAAQ,KAAK,EAC3FA,GAAa,cAAc,IAAI,MAAM,QAAS,CAAE,QAAS,EAAK,CAAC,CAAC,EAEhEI,GAAE,kBAAkB,EAAE,MAAQX,GAAO,SAASO,GAAa,QAAQ,KAAK,EAAEA,GAAa,QAAQ,KAAK,EACpGI,GAAE,kBAAkB,EAAE,cAAc,IAAI,MAAM,QAAQ,CAAC,EAEvDT,GAAiB,EAEjBF,GAAO,KAAK,CACd,CAAC,EAEDY,GAAc,CAChB,CAAC,CACH,EAEA,MAAO,IAAM,CACX,IAAMC,EAAWP,GAAS,EAEtBQ,EAAa,GAEjBjB,GAAI,OAASC,GAAM,IAAI,QAAQ,EAE/B,OAAO,OAAOD,GAAI,MAAM,EAAE,QAASkB,GAAU,CAC3CD,GAAcC,EAAM,MAAQ,aAAeA,EAAMF,CAAQ,EAAI;AAAA,CAC/D,CAAC,EAEDF,GAAE,aAAa,EAAE,UAAYG,CAC/B,EAEA,KAAM,IAAM,CACMX,GAAK,aAAa,EAE1B,QAASC,GAAW,CAC1BP,GAAI,OAAOO,EAAO,QAAQ,KAAK,EAAEA,EAAO,QAAQ,KAAK,EAAIA,EAAO,KAClE,CAAC,EAEDN,GAAM,IAAI,SAAUD,GAAI,MAAM,EAE9BG,GAAO,MAAM,CACf,EAEA,MAAO,IAAM,CACXF,GAAM,IAAI,SAAUE,GAAO,QAAQ,EAEnCH,GAAI,OAASC,GAAM,IAAI,QAAQ,EAEfK,GAAK,aAAa,EAE1B,QAASC,GAAW,CAC1BA,EAAO,MAAQJ,GAAO,SAASI,EAAO,QAAQ,KAAK,EAAEA,EAAO,QAAQ,KAAK,EACzEA,EAAO,cAAc,IAAI,MAAM,QAAS,CAAE,QAAS,EAAK,CAAC,CAAC,CAC5D,CAAC,EAEDF,GAAiB,EAEjBF,GAAO,MAAM,CACf,CACF,EAEAW,GAAE,uBAAuB,EAAE,iBAAiB,QAAS,IAAM,CACzDK,GAAM,KAAK,eAAe,CAC5B,CAAC,EAEDL,GAAE,oBAAoB,EAAE,iBAAiB,QAAS,IAAM,CACtDM,GAAQ,qDAAsD,IAAM,CAClEjB,GAAO,MAAM,CACf,CAAC,CACH,CAAC,ECnKD,IAAMkB,GAAN,cAAyB,KAAM,CAAC,EAKnBC,GAAN,cAAmCD,EAAW,CACnD,YAAYE,EAAQ,CAClB,MAAM,qBAAqBA,EAAO,UAAU,CAAC,EAAE,CACjD,CACF,EAKaC,GAAN,cAAmCH,EAAW,CACnD,YAAYE,EAAQ,CAClB,MAAM,qBAAqBA,EAAO,UAAU,CAAC,EAAE,CACjD,CACF,EAKaE,GAAN,cAAmCJ,EAAW,CACnD,YAAYE,EAAQ,CAClB,MAAM,qBAAqBA,EAAO,UAAU,CAAC,EAAE,CACjD,CACF,EAKaG,GAAN,cAA4CL,EAAW,CAAC,EAKlDM,GAAN,cAA+BN,EAAW,CAC/C,YAAYO,EAAM,CAChB,MAAM,gBAAgBA,CAAI,EAAE,CAC9B,CACF,EAKaC,GAAN,cAAmCR,EAAW,CAAC,EAKzCS,GAAN,cAAkCT,EAAW,CAClD,aAAc,CACZ,MAAM,2BAA2B,CACnC,CACF,ECxDA,IAAMU,GAAI,UACRC,GAAI,QACJC,GAAI,OAEOC,GAAa,CACxB,KAAMH,GACN,MAAOA,GACP,IAAKA,EACP,EAEaI,GAAW,CACtB,KAAMJ,GACN,MAAOC,GACP,IAAKD,EACP,EAEaK,GAAwB,CACnC,KAAML,GACN,MAAOC,GACP,IAAKD,GACL,QAASC,EACX,EAEaK,GAAY,CACvB,KAAMN,GACN,MAAOE,GACP,IAAKF,EACP,EAEaO,GAAY,CACvB,KAAMP,GACN,MAAOE,GACP,IAAKF,GACL,QAASE,EACX,EAEaM,GAAc,CACzB,KAAMR,GACN,OAAQA,EACV,EAEaS,GAAoB,CAC/B,KAAMT,GACN,OAAQA,GACR,OAAQA,EACV,EAEaU,GAAyB,CACpC,KAAMV,GACN,OAAQA,GACR,OAAQA,GACR,aAAcC,EAChB,EAEaU,GAAwB,CACnC,KAAMX,GACN,OAAQA,GACR,OAAQA,GACR,aAAcE,EAChB,EAEaU,GAAiB,CAC5B,KAAMZ,GACN,OAAQA,GACR,UAAW,KACb,EAEaa,GAAuB,CAClC,KAAMb,GACN,OAAQA,GACR,OAAQA,GACR,UAAW,KACb,EAEac,GAA4B,CACvC,KAAMd,GACN,OAAQA,GACR,OAAQA,GACR,UAAW,MACX,aAAcC,EAChB,EAEac,GAA2B,CACtC,KAAMf,GACN,OAAQA,GACR,OAAQA,GACR,UAAW,MACX,aAAcE,EAChB,EAEac,GAAiB,CAC5B,KAAMhB,GACN,MAAOA,GACP,IAAKA,GACL,KAAMA,GACN,OAAQA,EACV,EAEaiB,GAA8B,CACzC,KAAMjB,GACN,MAAOA,GACP,IAAKA,GACL,KAAMA,GACN,OAAQA,GACR,OAAQA,EACV,EAEakB,GAAe,CAC1B,KAAMlB,GACN,MAAOC,GACP,IAAKD,GACL,KAAMA,GACN,OAAQA,EACV,EAEamB,GAA4B,CACvC,KAAMnB,GACN,MAAOC,GACP,IAAKD,GACL,KAAMA,GACN,OAAQA,GACR,OAAQA,EACV,EAEaoB,GAA4B,CACvC,KAAMpB,GACN,MAAOC,GACP,IAAKD,GACL,QAASC,GACT,KAAMD,GACN,OAAQA,EACV,EAEaqB,GAAgB,CAC3B,KAAMrB,GACN,MAAOE,GACP,IAAKF,GACL,KAAMA,GACN,OAAQA,GACR,aAAcC,EAChB,EAEaqB,GAA6B,CACxC,KAAMtB,GACN,MAAOE,GACP,IAAKF,GACL,KAAMA,GACN,OAAQA,GACR,OAAQA,GACR,aAAcC,EAChB,EAEasB,GAAgB,CAC3B,KAAMvB,GACN,MAAOE,GACP,IAAKF,GACL,QAASE,GACT,KAAMF,GACN,OAAQA,GACR,aAAcE,EAChB,EAEasB,GAA6B,CACxC,KAAMxB,GACN,MAAOE,GACP,IAAKF,GACL,QAASE,GACT,KAAMF,GACN,OAAQA,GACR,OAAQA,GACR,aAAcE,EAChB,EC1KA,IAAqBuB,GAArB,KAA0B,CAMxB,IAAI,MAAO,CACT,MAAM,IAAIC,EACZ,CAOA,IAAI,MAAO,CACT,MAAM,IAAIA,EACZ,CAQA,IAAI,UAAW,CACb,OAAO,KAAK,IACd,CAOA,IAAI,aAAc,CAChB,MAAM,IAAIA,EACZ,CAWA,WAAWC,EAAIC,EAAM,CACnB,MAAM,IAAIF,EACZ,CAUA,aAAaC,EAAIE,EAAQ,CACvB,MAAM,IAAIH,EACZ,CAQA,OAAOC,EAAI,CACT,MAAM,IAAID,EACZ,CAQA,OAAOI,EAAW,CAChB,MAAM,IAAIJ,EACZ,CAOA,IAAI,SAAU,CACZ,MAAM,IAAIA,EACZ,CACF,EC7FA,IAAIK,GAAY,KAMKC,GAArB,MAAqBC,UAAmBC,EAAK,CAK3C,WAAW,UAAW,CACpB,OAAIH,KAAc,OAChBA,GAAY,IAAIE,GAEXF,EACT,CAGA,IAAI,MAAO,CACT,MAAO,QACT,CAGA,IAAI,MAAO,CACT,OAAO,IAAI,KAAK,eAAe,EAAE,gBAAgB,EAAE,QACrD,CAGA,IAAI,aAAc,CAChB,MAAO,EACT,CAGA,WAAWI,EAAI,CAAE,OAAAC,EAAQ,OAAAC,CAAO,EAAG,CACjC,OAAOC,GAAcH,EAAIC,EAAQC,CAAM,CACzC,CAGA,aAAaF,EAAIC,EAAQ,CACvB,OAAOG,GAAa,KAAK,OAAOJ,CAAE,EAAGC,CAAM,CAC7C,CAGA,OAAOD,EAAI,CACT,MAAO,CAAC,IAAI,KAAKA,CAAE,EAAE,kBAAkB,CACzC,CAGA,OAAOK,EAAW,CAChB,OAAOA,EAAU,OAAS,QAC5B,CAGA,IAAI,SAAU,CACZ,MAAO,EACT,CACF,ECzDA,IAAIC,GAAW,CAAC,EAChB,SAASC,IAAQC,EAAM,CACrB,OAAKF,GAASE,CAAI,IAChBF,GAASE,CAAI,EAAI,IAAI,KAAK,eAAe,QAAS,CAChD,OAAQ,GACR,SAAUA,EACV,KAAM,UACN,MAAO,UACP,IAAK,UACL,KAAM,UACN,OAAQ,UACR,OAAQ,UACR,IAAK,OACP,CAAC,GAEIF,GAASE,CAAI,CACtB,CAEA,IAAMC,IAAY,CAChB,KAAM,EACN,MAAO,EACP,IAAK,EACL,IAAK,EACL,KAAM,EACN,OAAQ,EACR,OAAQ,CACV,EAEA,SAASC,IAAYC,EAAKC,EAAM,CAC9B,IAAMC,EAAYF,EAAI,OAAOC,CAAI,EAAE,QAAQ,UAAW,EAAE,EACtDE,EAAS,kDAAkD,KAAKD,CAAS,EACzE,CAAC,CAAEE,EAAQC,EAAMC,EAAOC,EAASC,EAAOC,EAASC,CAAO,EAAIP,EAC9D,MAAO,CAACG,EAAOF,EAAQC,EAAME,EAASC,EAAOC,EAASC,CAAO,CAC/D,CAEA,SAASC,IAAYX,EAAKC,EAAM,CAC9B,IAAMC,EAAYF,EAAI,cAAcC,CAAI,EAClCW,EAAS,CAAC,EAChB,QAAS,EAAI,EAAG,EAAIV,EAAU,OAAQ,IAAK,CACzC,GAAM,CAAE,KAAAW,EAAM,MAAAC,CAAM,EAAIZ,EAAU,CAAC,EAC7Ba,EAAMjB,IAAUe,CAAI,EAEtBA,IAAS,MACXD,EAAOG,CAAG,EAAID,EACJE,GAAYD,CAAG,IACzBH,EAAOG,CAAG,EAAI,SAASD,EAAO,EAAE,EAEpC,CACA,OAAOF,CACT,CAEA,IAAIK,GAAgB,CAAC,EAKAC,GAArB,MAAqBC,UAAiBC,EAAK,CAKzC,OAAO,OAAOC,EAAM,CAClB,OAAKJ,GAAcI,CAAI,IACrBJ,GAAcI,CAAI,EAAI,IAAIF,EAASE,CAAI,GAElCJ,GAAcI,CAAI,CAC3B,CAMA,OAAO,YAAa,CAClBJ,GAAgB,CAAC,EACjBtB,GAAW,CAAC,CACd,CAUA,OAAO,iBAAiB2B,EAAG,CACzB,OAAO,KAAK,YAAYA,CAAC,CAC3B,CAUA,OAAO,YAAYzB,EAAM,CACvB,GAAI,CAACA,EACH,MAAO,GAET,GAAI,CACF,WAAI,KAAK,eAAe,QAAS,CAAE,SAAUA,CAAK,CAAC,EAAE,OAAO,EACrD,EACT,MAAY,CACV,MAAO,EACT,CACF,CAEA,YAAYwB,EAAM,CAChB,MAAM,EAEN,KAAK,SAAWA,EAEhB,KAAK,MAAQF,EAAS,YAAYE,CAAI,CACxC,CAOA,IAAI,MAAO,CACT,MAAO,MACT,CAOA,IAAI,MAAO,CACT,OAAO,KAAK,QACd,CAQA,IAAI,aAAc,CAChB,MAAO,EACT,CAWA,WAAWE,EAAI,CAAE,OAAAC,EAAQ,OAAAC,CAAO,EAAG,CACjC,OAAOC,GAAcH,EAAIC,EAAQC,EAAQ,KAAK,IAAI,CACpD,CAUA,aAAaF,EAAIC,EAAQ,CACvB,OAAOG,GAAa,KAAK,OAAOJ,CAAE,EAAGC,CAAM,CAC7C,CAQA,OAAOD,EAAI,CACT,IAAMtB,EAAO,IAAI,KAAKsB,CAAE,EAExB,GAAI,MAAMtB,CAAI,EAAG,MAAO,KAExB,IAAMD,EAAMJ,IAAQ,KAAK,IAAI,EACzB,CAACgC,EAAMC,EAAOC,EAAKC,EAAQC,EAAMC,EAAQC,CAAM,EAAIlC,EAAI,cACvDW,IAAYX,EAAKC,CAAI,EACrBF,IAAYC,EAAKC,CAAI,EAErB8B,IAAW,OACbH,EAAO,CAAC,KAAK,IAAIA,CAAI,EAAI,GAM3B,IAAMO,EAAQC,GAAa,CACzB,KAAAR,EACA,MAAAC,EACA,IAAAC,EACA,KANmBE,IAAS,GAAK,EAAIA,EAOrC,OAAAC,EACA,OAAAC,EACA,YAAa,CACf,CAAC,EAEGG,EAAO,CAACpC,EACNqC,EAAOD,EAAO,IACpB,OAAAA,GAAQC,GAAQ,EAAIA,EAAO,IAAOA,GAC1BH,EAAQE,IAAS,GAAK,IAChC,CAQA,OAAOE,EAAW,CAChB,OAAOA,EAAU,OAAS,QAAUA,EAAU,OAAS,KAAK,IAC9D,CAOA,IAAI,SAAU,CACZ,OAAO,KAAK,KACd,CACF,EC9NA,IAAIC,GAAc,CAAC,EACnB,SAASC,IAAYC,EAAWC,EAAO,CAAC,EAAG,CACzC,IAAMC,EAAM,KAAK,UAAU,CAACF,EAAWC,CAAI,CAAC,EACxCE,EAAML,GAAYI,CAAG,EACzB,OAAKC,IACHA,EAAM,IAAI,KAAK,WAAWH,EAAWC,CAAI,EACzCH,GAAYI,CAAG,EAAIC,GAEdA,CACT,CAEA,IAAIC,GAAc,CAAC,EACnB,SAASC,GAAaL,EAAWC,EAAO,CAAC,EAAG,CAC1C,IAAMC,EAAM,KAAK,UAAU,CAACF,EAAWC,CAAI,CAAC,EACxCE,EAAMC,GAAYF,CAAG,EACzB,OAAKC,IACHA,EAAM,IAAI,KAAK,eAAeH,EAAWC,CAAI,EAC7CG,GAAYF,CAAG,EAAIC,GAEdA,CACT,CAEA,IAAIG,GAAe,CAAC,EACpB,SAASC,IAAaP,EAAWC,EAAO,CAAC,EAAG,CAC1C,IAAMC,EAAM,KAAK,UAAU,CAACF,EAAWC,CAAI,CAAC,EACxCO,EAAMF,GAAaJ,CAAG,EAC1B,OAAKM,IACHA,EAAM,IAAI,KAAK,aAAaR,EAAWC,CAAI,EAC3CK,GAAaJ,CAAG,EAAIM,GAEfA,CACT,CAEA,IAAIC,GAAe,CAAC,EACpB,SAASC,IAAaV,EAAWC,EAAO,CAAC,EAAG,CAC1C,GAAM,CAAE,KAAAU,EAAM,GAAGC,CAAa,EAAIX,EAC5BC,EAAM,KAAK,UAAU,CAACF,EAAWY,CAAY,CAAC,EAChDJ,EAAMC,GAAaP,CAAG,EAC1B,OAAKM,IACHA,EAAM,IAAI,KAAK,mBAAmBR,EAAWC,CAAI,EACjDQ,GAAaP,CAAG,EAAIM,GAEfA,CACT,CAEA,IAAIK,GAAiB,KACrB,SAASC,KAAe,CACtB,OAAID,KAGFA,GAAiB,IAAI,KAAK,eAAe,EAAE,gBAAgB,EAAE,OACtDA,GAEX,CAEA,IAAIE,GAAgB,CAAC,EACrB,SAASC,IAAkBhB,EAAW,CACpC,IAAIiB,EAAOF,GAAcf,CAAS,EAClC,GAAI,CAACiB,EAAM,CACT,IAAMC,EAAS,IAAI,KAAK,OAAOlB,CAAS,EAExCiB,EAAO,gBAAiBC,EAASA,EAAO,YAAY,EAAIA,EAAO,SAC/DH,GAAcf,CAAS,EAAIiB,CAC7B,CACA,OAAOA,CACT,CAEA,SAASE,IAAkBC,EAAW,CAYpC,IAAMC,EAASD,EAAU,QAAQ,KAAK,EAClCC,IAAW,KACbD,EAAYA,EAAU,UAAU,EAAGC,CAAM,GAG3C,IAAMC,EAASF,EAAU,QAAQ,KAAK,EACtC,GAAIE,IAAW,GACb,MAAO,CAACF,CAAS,EACZ,CACL,IAAIG,EACAC,EACJ,GAAI,CACFD,EAAUlB,GAAae,CAAS,EAAE,gBAAgB,EAClDI,EAAcJ,CAChB,MAAY,CACV,IAAMK,EAAUL,EAAU,UAAU,EAAGE,CAAM,EAC7CC,EAAUlB,GAAaoB,CAAO,EAAE,gBAAgB,EAChDD,EAAcC,CAChB,CAEA,GAAM,CAAE,gBAAAC,EAAiB,SAAAC,CAAS,EAAIJ,EACtC,MAAO,CAACC,EAAaE,EAAiBC,CAAQ,CAChD,CACF,CAEA,SAASC,IAAiBR,EAAWM,EAAiBG,EAAgB,CACpE,OAAIA,GAAkBH,KACfN,EAAU,SAAS,KAAK,IAC3BA,GAAa,MAGXS,IACFT,GAAa,OAAOS,CAAc,IAGhCH,IACFN,GAAa,OAAOM,CAAe,KAE9BN,CAIX,CAEA,SAASU,IAAUC,EAAG,CACpB,IAAMC,EAAK,CAAC,EACZ,QAASC,EAAI,EAAGA,GAAK,GAAIA,IAAK,CAC5B,IAAMC,EAAKC,GAAS,IAAI,KAAMF,EAAG,CAAC,EAClCD,EAAG,KAAKD,EAAEG,CAAE,CAAC,CACf,CACA,OAAOF,CACT,CAEA,SAASI,IAAYL,EAAG,CACtB,IAAMC,EAAK,CAAC,EACZ,QAASC,EAAI,EAAGA,GAAK,EAAGA,IAAK,CAC3B,IAAMC,EAAKC,GAAS,IAAI,KAAM,GAAI,GAAKF,CAAC,EACxCD,EAAG,KAAKD,EAAEG,CAAE,CAAC,CACf,CACA,OAAOF,CACT,CAEA,SAASK,GAAUC,EAAKC,EAAQC,EAAWC,EAAQ,CACjD,IAAMC,EAAOJ,EAAI,YAAY,EAE7B,OAAII,IAAS,QACJ,KACEA,IAAS,KACXF,EAAUD,CAAM,EAEhBE,EAAOF,CAAM,CAExB,CAEA,SAASI,IAAoBL,EAAK,CAChC,OAAIA,EAAI,iBAAmBA,EAAI,kBAAoB,OAC1C,GAGLA,EAAI,kBAAoB,QACxB,CAACA,EAAI,QACLA,EAAI,OAAO,WAAW,IAAI,GAC1B,IAAI,KAAK,eAAeA,EAAI,IAAI,EAAE,gBAAgB,EAAE,kBAAoB,MAG9E,CAMA,IAAMM,GAAN,KAA0B,CACxB,YAAYC,EAAMC,EAAa7C,EAAM,CACnC,KAAK,MAAQA,EAAK,OAAS,EAC3B,KAAK,MAAQA,EAAK,OAAS,GAE3B,GAAM,CAAE,MAAA8C,EAAO,MAAAC,EAAO,GAAGC,CAAU,EAAIhD,EAEvC,GAAI,CAAC6C,GAAe,OAAO,KAAKG,CAAS,EAAE,OAAS,EAAG,CACrD,IAAMC,EAAW,CAAE,YAAa,GAAO,GAAGjD,CAAK,EAC3CA,EAAK,MAAQ,IAAGiD,EAAS,qBAAuBjD,EAAK,OACzD,KAAK,IAAMM,IAAasC,EAAMK,CAAQ,CACxC,CACF,CAEA,OAAOjB,EAAG,CACR,GAAI,KAAK,IAAK,CACZ,IAAMkB,EAAQ,KAAK,MAAQ,KAAK,MAAMlB,CAAC,EAAIA,EAC3C,OAAO,KAAK,IAAI,OAAOkB,CAAK,CAC9B,KAAO,CAEL,IAAMA,EAAQ,KAAK,MAAQ,KAAK,MAAMlB,CAAC,EAAImB,GAAQnB,EAAG,CAAC,EACvD,OAAOoB,GAASF,EAAO,KAAK,KAAK,CACnC,CACF,CACF,EAMMG,GAAN,KAAwB,CACtB,YAAYpB,EAAIW,EAAM5C,EAAM,CAC1B,KAAK,KAAOA,EACZ,KAAK,aAAe,OAEpB,IAAIsD,EACJ,GAAI,KAAK,KAAK,SAEZ,KAAK,GAAKrB,UACDA,EAAG,KAAK,OAAS,QAAS,CAOnC,IAAMsB,EAAY,IAAMtB,EAAG,OAAS,IAC9BuB,EAAUD,GAAa,EAAI,WAAWA,CAAS,GAAK,UAAUA,CAAS,GACzEtB,EAAG,SAAW,GAAKwB,GAAS,OAAOD,CAAO,EAAE,OAC9CF,EAAIE,EACJ,KAAK,GAAKvB,IAIVqB,EAAI,MACJ,KAAK,GAAKrB,EAAG,SAAW,EAAIA,EAAKA,EAAG,QAAQ,KAAK,EAAE,KAAK,CAAE,QAASA,EAAG,MAAO,CAAC,EAC9E,KAAK,aAAeA,EAAG,KAE3B,MAAWA,EAAG,KAAK,OAAS,SAC1B,KAAK,GAAKA,EACDA,EAAG,KAAK,OAAS,QAC1B,KAAK,GAAKA,EACVqB,EAAIrB,EAAG,KAAK,OAIZqB,EAAI,MACJ,KAAK,GAAKrB,EAAG,QAAQ,KAAK,EAAE,KAAK,CAAE,QAASA,EAAG,MAAO,CAAC,EACvD,KAAK,aAAeA,EAAG,MAGzB,IAAMgB,EAAW,CAAE,GAAG,KAAK,IAAK,EAChCA,EAAS,SAAWA,EAAS,UAAYK,EACzC,KAAK,IAAMlD,GAAawC,EAAMK,CAAQ,CACxC,CAEA,QAAS,CACP,OAAI,KAAK,aAGA,KAAK,cAAc,EACvB,IAAI,CAAC,CAAE,MAAAS,CAAM,IAAMA,CAAK,EACxB,KAAK,EAAE,EAEL,KAAK,IAAI,OAAO,KAAK,GAAG,SAAS,CAAC,CAC3C,CAEA,eAAgB,CACd,IAAMC,EAAQ,KAAK,IAAI,cAAc,KAAK,GAAG,SAAS,CAAC,EACvD,OAAI,KAAK,aACAA,EAAM,IAAKC,GAAS,CACzB,GAAIA,EAAK,OAAS,eAAgB,CAChC,IAAMC,EAAa,KAAK,aAAa,WAAW,KAAK,GAAG,GAAI,CAC1D,OAAQ,KAAK,GAAG,OAChB,OAAQ,KAAK,KAAK,YACpB,CAAC,EACD,MAAO,CACL,GAAGD,EACH,MAAOC,CACT,CACF,KACE,QAAOD,CAEX,CAAC,EAEID,CACT,CAEA,iBAAkB,CAChB,OAAO,KAAK,IAAI,gBAAgB,CAClC,CACF,EAKMG,GAAN,KAAuB,CACrB,YAAYlB,EAAMmB,EAAW/D,EAAM,CACjC,KAAK,KAAO,CAAE,MAAO,OAAQ,GAAGA,CAAK,EACjC,CAAC+D,GAAaC,GAAY,IAC5B,KAAK,IAAMvD,IAAamC,EAAM5C,CAAI,EAEtC,CAEA,OAAOiE,EAAOC,EAAM,CAClB,OAAI,KAAK,IACA,KAAK,IAAI,OAAOD,EAAOC,CAAI,EAEnBC,GAAmBD,EAAMD,EAAO,KAAK,KAAK,QAAS,KAAK,KAAK,QAAU,MAAM,CAEhG,CAEA,cAAcA,EAAOC,EAAM,CACzB,OAAI,KAAK,IACA,KAAK,IAAI,cAAcD,EAAOC,CAAI,EAElC,CAAC,CAEZ,CACF,EAEME,IAAuB,CAC3B,SAAU,EACV,YAAa,EACb,QAAS,CAAC,EAAG,CAAC,CAChB,EAMqBC,GAArB,MAAqBC,CAAO,CAC1B,OAAO,SAAStE,EAAM,CACpB,OAAOsE,EAAO,OACZtE,EAAK,OACLA,EAAK,gBACLA,EAAK,eACLA,EAAK,aACLA,EAAK,WACP,CACF,CAEA,OAAO,OAAOiB,EAAQQ,EAAiBG,EAAgB2C,EAAcC,EAAc,GAAO,CACxF,IAAMC,EAAkBxD,GAAUyD,GAAS,cAErCC,EAAUF,IAAoBD,EAAc,QAAU3D,IAAa,GACnE+D,EAAmBnD,GAAmBiD,GAAS,uBAC/CG,EAAkBjD,GAAkB8C,GAAS,sBAC7CI,EAAgBC,GAAqBR,CAAY,GAAKG,GAAS,oBACrE,OAAO,IAAIJ,EAAOK,EAASC,EAAkBC,EAAiBC,EAAeL,CAAe,CAC9F,CAEA,OAAO,YAAa,CAClB7D,GAAiB,KACjBT,GAAc,CAAC,EACfE,GAAe,CAAC,EAChBG,GAAe,CAAC,CAClB,CAEA,OAAO,WAAW,CAAE,OAAAS,EAAQ,gBAAAQ,EAAiB,eAAAG,EAAgB,aAAA2C,CAAa,EAAI,CAAC,EAAG,CAChF,OAAOD,EAAO,OAAOrD,EAAQQ,EAAiBG,EAAgB2C,CAAY,CAC5E,CAEA,YAAYtD,EAAQ+D,EAAWpD,EAAgB2C,EAAcE,EAAiB,CAC5E,GAAM,CAACQ,EAAcC,EAAuBC,CAAoB,EAAIjE,IAAkBD,CAAM,EAE5F,KAAK,OAASgE,EACd,KAAK,gBAAkBD,GAAaE,GAAyB,KAC7D,KAAK,eAAiBtD,GAAkBuD,GAAwB,KAChE,KAAK,aAAeZ,EACpB,KAAK,KAAO5C,IAAiB,KAAK,OAAQ,KAAK,gBAAiB,KAAK,cAAc,EAEnF,KAAK,cAAgB,CAAE,OAAQ,CAAC,EAAG,WAAY,CAAC,CAAE,EAClD,KAAK,YAAc,CAAE,OAAQ,CAAC,EAAG,WAAY,CAAC,CAAE,EAChD,KAAK,cAAgB,KACrB,KAAK,SAAW,CAAC,EAEjB,KAAK,gBAAkB8C,EACvB,KAAK,kBAAoB,IAC3B,CAEA,IAAI,aAAc,CAChB,OAAI,KAAK,mBAAqB,OAC5B,KAAK,kBAAoB/B,IAAoB,IAAI,GAG5C,KAAK,iBACd,CAEA,aAAc,CACZ,IAAM0C,EAAe,KAAK,UAAU,EAC9BC,GACH,KAAK,kBAAoB,MAAQ,KAAK,kBAAoB,UAC1D,KAAK,iBAAmB,MAAQ,KAAK,iBAAmB,WAC3D,OAAOD,GAAgBC,EAAiB,KAAO,MACjD,CAEA,MAAMC,EAAM,CACV,MAAI,CAACA,GAAQ,OAAO,oBAAoBA,CAAI,EAAE,SAAW,EAChD,KAEAhB,EAAO,OACZgB,EAAK,QAAU,KAAK,gBACpBA,EAAK,iBAAmB,KAAK,gBAC7BA,EAAK,gBAAkB,KAAK,eAC5BP,GAAqBO,EAAK,YAAY,GAAK,KAAK,aAChDA,EAAK,aAAe,EACtB,CAEJ,CAEA,cAAcA,EAAO,CAAC,EAAG,CACvB,OAAO,KAAK,MAAM,CAAE,GAAGA,EAAM,YAAa,EAAK,CAAC,CAClD,CAEA,kBAAkBA,EAAO,CAAC,EAAG,CAC3B,OAAO,KAAK,MAAM,CAAE,GAAGA,EAAM,YAAa,EAAM,CAAC,CACnD,CAEA,OAAOhD,EAAQiD,EAAS,GAAO,CAC7B,OAAOnD,GAAU,KAAME,EAAgBkD,GAAQ,IAAM,CACnD,IAAM5C,EAAO2C,EAAS,CAAE,MAAOjD,EAAQ,IAAK,SAAU,EAAI,CAAE,MAAOA,CAAO,EACxEmD,EAAYF,EAAS,SAAW,aAClC,OAAK,KAAK,YAAYE,CAAS,EAAEnD,CAAM,IACrC,KAAK,YAAYmD,CAAS,EAAEnD,CAAM,EAAIT,IAAWI,GAAO,KAAK,QAAQA,EAAIW,EAAM,OAAO,CAAC,GAElF,KAAK,YAAY6C,CAAS,EAAEnD,CAAM,CAC3C,CAAC,CACH,CAEA,SAASA,EAAQiD,EAAS,GAAO,CAC/B,OAAOnD,GAAU,KAAME,EAAgBoD,GAAU,IAAM,CACrD,IAAM9C,EAAO2C,EACP,CAAE,QAASjD,EAAQ,KAAM,UAAW,MAAO,OAAQ,IAAK,SAAU,EAClE,CAAE,QAASA,CAAO,EACtBmD,EAAYF,EAAS,SAAW,aAClC,OAAK,KAAK,cAAcE,CAAS,EAAEnD,CAAM,IACvC,KAAK,cAAcmD,CAAS,EAAEnD,CAAM,EAAIH,IAAaF,GACnD,KAAK,QAAQA,EAAIW,EAAM,SAAS,CAClC,GAEK,KAAK,cAAc6C,CAAS,EAAEnD,CAAM,CAC7C,CAAC,CACH,CAEA,WAAY,CACV,OAAOF,GACL,KACA,OACA,IAAcuD,GACd,IAAM,CAGJ,GAAI,CAAC,KAAK,cAAe,CACvB,IAAM/C,EAAO,CAAE,KAAM,UAAW,UAAW,KAAM,EACjD,KAAK,cAAgB,CAACV,GAAS,IAAI,KAAM,GAAI,GAAI,CAAC,EAAGA,GAAS,IAAI,KAAM,GAAI,GAAI,EAAE,CAAC,EAAE,IAClFD,GAAO,KAAK,QAAQA,EAAIW,EAAM,WAAW,CAC5C,CACF,CAEA,OAAO,KAAK,aACd,CACF,CACF,CAEA,KAAKN,EAAQ,CACX,OAAOF,GAAU,KAAME,EAAgBsD,GAAM,IAAM,CACjD,IAAMhD,EAAO,CAAE,IAAKN,CAAO,EAI3B,OAAK,KAAK,SAASA,CAAM,IACvB,KAAK,SAASA,CAAM,EAAI,CAACJ,GAAS,IAAI,IAAK,EAAG,CAAC,EAAGA,GAAS,IAAI,KAAM,EAAG,CAAC,CAAC,EAAE,IAAKD,GAC/E,KAAK,QAAQA,EAAIW,EAAM,KAAK,CAC9B,GAGK,KAAK,SAASN,CAAM,CAC7B,CAAC,CACH,CAEA,QAAQL,EAAIgB,EAAU4C,EAAO,CAC3B,IAAMC,EAAK,KAAK,YAAY7D,EAAIgB,CAAQ,EACtC8C,EAAUD,EAAG,cAAc,EAC3BE,EAAWD,EAAQ,KAAME,GAAMA,EAAE,KAAK,YAAY,IAAMJ,CAAK,EAC/D,OAAOG,EAAWA,EAAS,MAAQ,IACrC,CAEA,gBAAgBhG,EAAO,CAAC,EAAG,CAGzB,OAAO,IAAI2C,GAAoB,KAAK,KAAM3C,EAAK,aAAe,KAAK,YAAaA,CAAI,CACtF,CAEA,YAAYiC,EAAIgB,EAAW,CAAC,EAAG,CAC7B,OAAO,IAAII,GAAkBpB,EAAI,KAAK,KAAMgB,CAAQ,CACtD,CAEA,aAAajD,EAAO,CAAC,EAAG,CACtB,OAAO,IAAI8D,GAAiB,KAAK,KAAM,KAAK,UAAU,EAAG9D,CAAI,CAC/D,CAEA,cAAcA,EAAO,CAAC,EAAG,CACvB,OAAOF,IAAY,KAAK,KAAME,CAAI,CACpC,CAEA,WAAY,CACV,OACE,KAAK,SAAW,MAChB,KAAK,OAAO,YAAY,IAAM,SAC9B,IAAI,KAAK,eAAe,KAAK,IAAI,EAAE,gBAAgB,EAAE,OAAO,WAAW,OAAO,CAElF,CAEA,iBAAkB,CAChB,OAAI,KAAK,aACA,KAAK,aACFkG,GAAkB,EAGrBnF,IAAkB,KAAK,MAAM,EAF7BqD,GAIX,CAEA,gBAAiB,CACf,OAAO,KAAK,gBAAgB,EAAE,QAChC,CAEA,uBAAwB,CACtB,OAAO,KAAK,gBAAgB,EAAE,WAChC,CAEA,gBAAiB,CACf,OAAO,KAAK,gBAAgB,EAAE,OAChC,CAEA,OAAO+B,EAAO,CACZ,OACE,KAAK,SAAWA,EAAM,QACtB,KAAK,kBAAoBA,EAAM,iBAC/B,KAAK,iBAAmBA,EAAM,cAElC,CAEA,UAAW,CACT,MAAO,UAAU,KAAK,MAAM,KAAK,KAAK,eAAe,KAAK,KAAK,cAAc,GAC/E,CACF,EC9hBA,IAAIC,GAAY,KAMKC,GAArB,MAAqBC,UAAwBC,EAAK,CAKhD,WAAW,aAAc,CACvB,OAAIH,KAAc,OAChBA,GAAY,IAAIE,EAAgB,CAAC,GAE5BF,EACT,CAOA,OAAO,SAASI,EAAQ,CACtB,OAAOA,IAAW,EAAIF,EAAgB,YAAc,IAAIA,EAAgBE,CAAM,CAChF,CAUA,OAAO,eAAeC,EAAG,CACvB,GAAIA,EAAG,CACL,IAAM,EAAIA,EAAE,MAAM,uCAAuC,EACzD,GAAI,EACF,OAAO,IAAIH,EAAgBI,GAAa,EAAE,CAAC,EAAG,EAAE,CAAC,CAAC,CAAC,CAEvD,CACA,OAAO,IACT,CAEA,YAAYF,EAAQ,CAClB,MAAM,EAEN,KAAK,MAAQA,CACf,CAOA,IAAI,MAAO,CACT,MAAO,OACT,CAQA,IAAI,MAAO,CACT,OAAO,KAAK,QAAU,EAAI,MAAQ,MAAMG,GAAa,KAAK,MAAO,QAAQ,CAAC,EAC5E,CAQA,IAAI,UAAW,CACb,OAAI,KAAK,QAAU,EACV,UAEA,UAAUA,GAAa,CAAC,KAAK,MAAO,QAAQ,CAAC,EAExD,CAQA,YAAa,CACX,OAAO,KAAK,IACd,CAUA,aAAaC,EAAIC,EAAQ,CACvB,OAAOF,GAAa,KAAK,MAAOE,CAAM,CACxC,CAQA,IAAI,aAAc,CAChB,MAAO,EACT,CASA,QAAS,CACP,OAAO,KAAK,KACd,CAQA,OAAOC,EAAW,CAChB,OAAOA,EAAU,OAAS,SAAWA,EAAU,QAAU,KAAK,KAChE,CAQA,IAAI,SAAU,CACZ,MAAO,EACT,CACF,EC/IA,IAAqBC,GAArB,cAAyCC,EAAK,CAC5C,YAAYC,EAAU,CACpB,MAAM,EAEN,KAAK,SAAWA,CAClB,CAGA,IAAI,MAAO,CACT,MAAO,SACT,CAGA,IAAI,MAAO,CACT,OAAO,KAAK,QACd,CAGA,IAAI,aAAc,CAChB,MAAO,EACT,CAGA,YAAa,CACX,OAAO,IACT,CAGA,cAAe,CACb,MAAO,EACT,CAGA,QAAS,CACP,MAAO,IACT,CAGA,QAAS,CACP,MAAO,EACT,CAGA,IAAI,SAAU,CACZ,MAAO,EACT,CACF,ECxCO,SAASC,GAAcC,EAAOC,EAAa,CAChD,IAAIC,EACJ,GAAIC,GAAYH,CAAK,GAAKA,IAAU,KAClC,OAAOC,EACF,GAAID,aAAiBI,GAC1B,OAAOJ,EACF,GAAIK,GAASL,CAAK,EAAG,CAC1B,IAAMM,EAAUN,EAAM,YAAY,EAClC,OAAIM,IAAY,UAAkBL,EACzBK,IAAY,SAAWA,IAAY,SAAiBC,GAAW,SAC/DD,IAAY,OAASA,IAAY,MAAcE,GAAgB,YAC5DA,GAAgB,eAAeF,CAAO,GAAKG,GAAS,OAAOT,CAAK,CAC9E,KAAO,QAAIU,GAASV,CAAK,EAChBQ,GAAgB,SAASR,CAAK,EAC5B,OAAOA,GAAU,UAAY,WAAYA,GAAS,OAAOA,EAAM,QAAW,WAG5EA,EAEA,IAAIW,GAAYX,CAAK,CAEhC,CCjCA,IAAMY,GAAmB,CACvB,KAAM,kBACN,QAAS,kBACT,KAAM,kBACN,KAAM,kBACN,KAAM,kBACN,SAAU,kBACV,KAAM,kBACN,QAAS,0EACT,KAAM,kBACN,KAAM,kBACN,KAAM,kBACN,KAAM,kBACN,KAAM,kBACN,KAAM,kBACN,KAAM,kBACN,KAAM,kBACN,QAAS,kBACT,KAAM,kBACN,KAAM,kBACN,KAAM,kBACN,KAAM,KACR,EAEMC,GAAwB,CAC5B,KAAM,CAAC,KAAM,IAAI,EACjB,QAAS,CAAC,KAAM,IAAI,EACpB,KAAM,CAAC,KAAM,IAAI,EACjB,KAAM,CAAC,KAAM,IAAI,EACjB,KAAM,CAAC,KAAM,IAAI,EACjB,SAAU,CAAC,MAAO,KAAK,EACvB,KAAM,CAAC,KAAM,IAAI,EACjB,KAAM,CAAC,KAAM,IAAI,EACjB,KAAM,CAAC,KAAM,IAAI,EACjB,KAAM,CAAC,KAAM,IAAI,EACjB,KAAM,CAAC,KAAM,IAAI,EACjB,KAAM,CAAC,KAAM,IAAI,EACjB,KAAM,CAAC,KAAM,IAAI,EACjB,KAAM,CAAC,KAAM,IAAI,EACjB,KAAM,CAAC,KAAM,IAAI,EACjB,QAAS,CAAC,KAAM,IAAI,EACpB,KAAM,CAAC,KAAM,IAAI,EACjB,KAAM,CAAC,KAAM,IAAI,EACjB,KAAM,CAAC,KAAM,IAAI,CACnB,EAEMC,IAAeF,GAAiB,QAAQ,QAAQ,WAAY,EAAE,EAAE,MAAM,EAAE,EAEvE,SAASG,GAAYC,EAAK,CAC/B,IAAIC,EAAQ,SAASD,EAAK,EAAE,EAC5B,GAAI,MAAMC,CAAK,EAAG,CAChBA,EAAQ,GACR,QAASC,EAAI,EAAGA,EAAIF,EAAI,OAAQE,IAAK,CACnC,IAAMC,EAAOH,EAAI,WAAWE,CAAC,EAE7B,GAAIF,EAAIE,CAAC,EAAE,OAAON,GAAiB,OAAO,IAAM,GAC9CK,GAASH,IAAa,QAAQE,EAAIE,CAAC,CAAC,MAEpC,SAAWE,KAAOP,GAAuB,CACvC,GAAM,CAACQ,EAAKC,CAAG,EAAIT,GAAsBO,CAAG,EACxCD,GAAQE,GAAOF,GAAQG,IACzBL,GAASE,EAAOE,EAEpB,CAEJ,CACA,OAAO,SAASJ,EAAO,EAAE,CAC3B,KACE,QAAOA,CAEX,CAGA,IAAIM,GAAkB,CAAC,EAChB,SAASC,IAAuB,CACrCD,GAAkB,CAAC,CACrB,CAEO,SAASE,GAAW,CAAE,gBAAAC,CAAgB,EAAGC,EAAS,GAAI,CAC3D,IAAMC,EAAKF,GAAmB,OAE9B,OAAKH,GAAgBK,CAAE,IACrBL,GAAgBK,CAAE,EAAI,CAAC,GAEpBL,GAAgBK,CAAE,EAAED,CAAM,IAC7BJ,GAAgBK,CAAE,EAAED,CAAM,EAAI,IAAI,OAAO,GAAGf,GAAiBgB,CAAE,CAAC,GAAGD,CAAM,EAAE,GAGtEJ,GAAgBK,CAAE,EAAED,CAAM,CACnC,CChFA,IAAIE,GAAM,IAAM,KAAK,IAAI,EACvBC,GAAc,SACdC,GAAgB,KAChBC,GAAyB,KACzBC,GAAwB,KACxBC,GAAqB,GACrBC,GACAC,GAAsB,KAKHC,GAArB,KAA8B,CAK5B,WAAW,KAAM,CACf,OAAOR,EACT,CASA,WAAW,IAAIS,EAAG,CAChBT,GAAMS,CACR,CAOA,WAAW,YAAYC,EAAM,CAC3BT,GAAcS,CAChB,CAOA,WAAW,aAAc,CACvB,OAAOC,GAAcV,GAAaW,GAAW,QAAQ,CACvD,CAMA,WAAW,eAAgB,CACzB,OAAOV,EACT,CAMA,WAAW,cAAcW,EAAQ,CAC/BX,GAAgBW,CAClB,CAMA,WAAW,wBAAyB,CAClC,OAAOV,EACT,CAMA,WAAW,uBAAuBW,EAAiB,CACjDX,GAAyBW,CAC3B,CAMA,WAAW,uBAAwB,CACjC,OAAOV,EACT,CAMA,WAAW,sBAAsBW,EAAgB,CAC/CX,GAAwBW,CAC1B,CAYA,WAAW,qBAAsB,CAC/B,OAAOR,EACT,CASA,WAAW,oBAAoBS,EAAc,CAC3CT,GAAsBU,GAAqBD,CAAY,CACzD,CAMA,WAAW,oBAAqB,CAC9B,OAAOX,EACT,CAWA,WAAW,mBAAmBa,EAAY,CACxCb,GAAqBa,EAAa,GACpC,CAMA,WAAW,gBAAiB,CAC1B,OAAOZ,EACT,CAMA,WAAW,eAAe,EAAG,CAC3BA,GAAiB,CACnB,CAMA,OAAO,aAAc,CACnBa,GAAO,WAAW,EAClBC,GAAS,WAAW,EACpBC,GAAS,WAAW,EACpBC,GAAqB,CACvB,CACF,ECnLA,IAAqBC,GAArB,KAA6B,CAC3B,YAAYC,EAAQC,EAAa,CAC/B,KAAK,OAASD,EACd,KAAK,YAAcC,CACrB,CAEA,WAAY,CACV,OAAI,KAAK,YACA,GAAG,KAAK,MAAM,KAAK,KAAK,WAAW,GAEnC,KAAK,MAEhB,CACF,ECAA,IAAMC,GAAgB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAC1EC,GAAa,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAErE,SAASC,GAAeC,EAAMC,EAAO,CACnC,OAAO,IAAIC,GACT,oBACA,iBAAiBD,CAAK,aAAa,OAAOA,CAAK,UAAUD,CAAI,oBAC/D,CACF,CAEO,SAASG,GAAUC,EAAMC,EAAOC,EAAK,CAC1C,IAAMC,EAAI,IAAI,KAAK,KAAK,IAAIH,EAAMC,EAAQ,EAAGC,CAAG,CAAC,EAE7CF,EAAO,KAAOA,GAAQ,GACxBG,EAAE,eAAeA,EAAE,eAAe,EAAI,IAAI,EAG5C,IAAMC,EAAKD,EAAE,UAAU,EAEvB,OAAOC,IAAO,EAAI,EAAIA,CACxB,CAEA,SAASC,GAAeL,EAAMC,EAAOC,EAAK,CACxC,OAAOA,GAAOI,GAAWN,CAAI,EAAIN,GAAaD,IAAeQ,EAAQ,CAAC,CACxE,CAEA,SAASM,GAAiBP,EAAMQ,EAAS,CACvC,IAAMC,EAAQH,GAAWN,CAAI,EAAIN,GAAaD,GAC5CiB,EAASD,EAAM,UAAWE,GAAMA,EAAIH,CAAO,EAC3CN,EAAMM,EAAUC,EAAMC,CAAM,EAC9B,MAAO,CAAE,MAAOA,EAAS,EAAG,IAAAR,CAAI,CAClC,CAEO,SAASU,GAAkBC,EAAYC,EAAa,CACzD,OAASD,EAAaC,EAAc,GAAK,EAAK,CAChD,CAMO,SAASC,GAAgBC,EAASC,EAAqB,EAAGH,EAAc,EAAG,CAChF,GAAM,CAAE,KAAAd,EAAM,MAAAC,EAAO,IAAAC,CAAI,EAAIc,EAC3BR,EAAUH,GAAeL,EAAMC,EAAOC,CAAG,EACzCgB,EAAUN,GAAkBb,GAAUC,EAAMC,EAAOC,CAAG,EAAGY,CAAW,EAElEK,EAAa,KAAK,OAAOX,EAAUU,EAAU,GAAKD,GAAsB,CAAC,EAC3EG,EAEF,OAAID,EAAa,GACfC,EAAWpB,EAAO,EAClBmB,EAAaE,GAAgBD,EAAUH,EAAoBH,CAAW,GAC7DK,EAAaE,GAAgBrB,EAAMiB,EAAoBH,CAAW,GAC3EM,EAAWpB,EAAO,EAClBmB,EAAa,GAEbC,EAAWpB,EAGN,CAAE,SAAAoB,EAAU,WAAAD,EAAY,QAAAD,EAAS,GAAGI,GAAWN,CAAO,CAAE,CACjE,CAEO,SAASO,GAAgBC,EAAUP,EAAqB,EAAGH,EAAc,EAAG,CACjF,GAAM,CAAE,SAAAM,EAAU,WAAAD,EAAY,QAAAD,CAAQ,EAAIM,EACxCC,EAAgBb,GAAkBb,GAAUqB,EAAU,EAAGH,CAAkB,EAAGH,CAAW,EACzFY,EAAaC,GAAWP,CAAQ,EAE9BZ,EAAUW,EAAa,EAAID,EAAUO,EAAgB,EAAIR,EAC3DjB,EAEEQ,EAAU,GACZR,EAAOoB,EAAW,EAClBZ,GAAWmB,GAAW3B,CAAI,GACjBQ,EAAUkB,GACnB1B,EAAOoB,EAAW,EAClBZ,GAAWmB,GAAWP,CAAQ,GAE9BpB,EAAOoB,EAGT,GAAM,CAAE,MAAAnB,EAAO,IAAAC,CAAI,EAAIK,GAAiBP,EAAMQ,CAAO,EACrD,MAAO,CAAE,KAAAR,EAAM,MAAAC,EAAO,IAAAC,EAAK,GAAGoB,GAAWE,CAAQ,CAAE,CACrD,CAEO,SAASI,GAAmBC,EAAU,CAC3C,GAAM,CAAE,KAAA7B,EAAM,MAAAC,EAAO,IAAAC,CAAI,EAAI2B,EACvBrB,EAAUH,GAAeL,EAAMC,EAAOC,CAAG,EAC/C,MAAO,CAAE,KAAAF,EAAM,QAAAQ,EAAS,GAAGc,GAAWO,CAAQ,CAAE,CAClD,CAEO,SAASC,GAAmBC,EAAa,CAC9C,GAAM,CAAE,KAAA/B,EAAM,QAAAQ,CAAQ,EAAIuB,EACpB,CAAE,MAAA9B,EAAO,IAAAC,CAAI,EAAIK,GAAiBP,EAAMQ,CAAO,EACrD,MAAO,CAAE,KAAAR,EAAM,MAAAC,EAAO,IAAAC,EAAK,GAAGoB,GAAWS,CAAW,CAAE,CACxD,CAQO,SAASC,GAAoBC,EAAKC,EAAK,CAK5C,GAHE,CAACC,GAAYF,EAAI,YAAY,GAC7B,CAACE,GAAYF,EAAI,eAAe,GAChC,CAACE,GAAYF,EAAI,aAAa,EACT,CAIrB,GAFE,CAACE,GAAYF,EAAI,OAAO,GAAK,CAACE,GAAYF,EAAI,UAAU,GAAK,CAACE,GAAYF,EAAI,QAAQ,EAGtF,MAAM,IAAIG,GACR,gEACF,EAEF,OAAKD,GAAYF,EAAI,YAAY,IAAGA,EAAI,QAAUA,EAAI,cACjDE,GAAYF,EAAI,eAAe,IAAGA,EAAI,WAAaA,EAAI,iBACvDE,GAAYF,EAAI,aAAa,IAAGA,EAAI,SAAWA,EAAI,eACxD,OAAOA,EAAI,aACX,OAAOA,EAAI,gBACX,OAAOA,EAAI,cACJ,CACL,mBAAoBC,EAAI,sBAAsB,EAC9C,YAAaA,EAAI,eAAe,CAClC,CACF,KACE,OAAO,CAAE,mBAAoB,EAAG,YAAa,CAAE,CAEnD,CAEO,SAASG,GAAmBJ,EAAKhB,EAAqB,EAAGH,EAAc,EAAG,CAC/E,IAAMwB,EAAYC,GAAUN,EAAI,QAAQ,EACtCO,EAAYC,GACVR,EAAI,WACJ,EACAZ,GAAgBY,EAAI,SAAUhB,EAAoBH,CAAW,CAC/D,EACA4B,EAAeD,GAAeR,EAAI,QAAS,EAAG,CAAC,EAEjD,OAAKK,EAEOE,EAEAE,EAEE,GADL/C,GAAe,UAAWsC,EAAI,OAAO,EAFrCtC,GAAe,OAAQsC,EAAI,UAAU,EAFrCtC,GAAe,WAAYsC,EAAI,QAAQ,CAMlD,CAEO,SAASU,GAAsBV,EAAK,CACzC,IAAMK,EAAYC,GAAUN,EAAI,IAAI,EAClCW,EAAeH,GAAeR,EAAI,QAAS,EAAGN,GAAWM,EAAI,IAAI,CAAC,EAEpE,OAAKK,EAEOM,EAEE,GADLjD,GAAe,UAAWsC,EAAI,OAAO,EAFrCtC,GAAe,OAAQsC,EAAI,IAAI,CAI1C,CAEO,SAASY,GAAwBZ,EAAK,CAC3C,IAAMK,EAAYC,GAAUN,EAAI,IAAI,EAClCa,EAAaL,GAAeR,EAAI,MAAO,EAAG,EAAE,EAC5Cc,EAAWN,GAAeR,EAAI,IAAK,EAAGe,GAAYf,EAAI,KAAMA,EAAI,KAAK,CAAC,EAExE,OAAKK,EAEOQ,EAEAC,EAEE,GADLpD,GAAe,MAAOsC,EAAI,GAAG,EAF7BtC,GAAe,QAASsC,EAAI,KAAK,EAFjCtC,GAAe,OAAQsC,EAAI,IAAI,CAM1C,CAEO,SAASgB,GAAmBhB,EAAK,CACtC,GAAM,CAAE,KAAAiB,EAAM,OAAAC,EAAQ,OAAAC,EAAQ,YAAAC,CAAY,EAAIpB,EACxCqB,EACFb,GAAeS,EAAM,EAAG,EAAE,GACzBA,IAAS,IAAMC,IAAW,GAAKC,IAAW,GAAKC,IAAgB,EAClEE,EAAcd,GAAeU,EAAQ,EAAG,EAAE,EAC1CK,EAAcf,GAAeW,EAAQ,EAAG,EAAE,EAC1CK,EAAmBhB,GAAeY,EAAa,EAAG,GAAG,EAEvD,OAAKC,EAEOC,EAEAC,EAEAC,EAEE,GADL9D,GAAe,cAAe0D,CAAW,EAFzC1D,GAAe,SAAUyD,CAAM,EAF/BzD,GAAe,SAAUwD,CAAM,EAF/BxD,GAAe,OAAQuD,CAAI,CAQtC,CC7LO,SAASQ,GAAYC,EAAG,CAC7B,OAAO,OAAOA,EAAM,GACtB,CAEO,SAASC,GAASD,EAAG,CAC1B,OAAO,OAAOA,GAAM,QACtB,CAEO,SAASE,GAAUF,EAAG,CAC3B,OAAO,OAAOA,GAAM,UAAYA,EAAI,IAAM,CAC5C,CAEO,SAASG,GAASH,EAAG,CAC1B,OAAO,OAAOA,GAAM,QACtB,CAEO,SAASI,GAAOJ,EAAG,CACxB,OAAO,OAAO,UAAU,SAAS,KAAKA,CAAC,IAAM,eAC/C,CAIO,SAASK,IAAc,CAC5B,GAAI,CACF,OAAO,OAAO,KAAS,KAAe,CAAC,CAAC,KAAK,kBAC/C,MAAY,CACV,MAAO,EACT,CACF,CAEO,SAASC,IAAoB,CAClC,GAAI,CACF,OACE,OAAO,KAAS,KAChB,CAAC,CAAC,KAAK,SACN,aAAc,KAAK,OAAO,WAAa,gBAAiB,KAAK,OAAO,UAEzE,MAAY,CACV,MAAO,EACT,CACF,CAIO,SAASC,GAAWC,EAAO,CAChC,OAAO,MAAM,QAAQA,CAAK,EAAIA,EAAQ,CAACA,CAAK,CAC9C,CAEO,SAASC,GAAOC,EAAKC,EAAIC,EAAS,CACvC,GAAIF,EAAI,SAAW,EAGnB,OAAOA,EAAI,OAAO,CAACG,EAAMC,IAAS,CAChC,IAAMC,EAAO,CAACJ,EAAGG,CAAI,EAAGA,CAAI,EAC5B,OAAKD,GAEMD,EAAQC,EAAK,CAAC,EAAGE,EAAK,CAAC,CAAC,IAAMF,EAAK,CAAC,EACtCA,EAFAE,CAMX,EAAG,IAAI,EAAE,CAAC,CACZ,CAEO,SAASC,GAAKC,EAAKC,EAAM,CAC9B,OAAOA,EAAK,OAAO,CAACC,EAAGC,KACrBD,EAAEC,CAAC,EAAIH,EAAIG,CAAC,EACLD,GACN,CAAC,CAAC,CACP,CAEO,SAASE,GAAeJ,EAAKK,EAAM,CACxC,OAAO,OAAO,UAAU,eAAe,KAAKL,EAAKK,CAAI,CACvD,CAEO,SAASC,GAAqBC,EAAU,CAC7C,GAAIA,GAAY,KACd,OAAO,KACF,GAAI,OAAOA,GAAa,SAC7B,MAAM,IAAIC,GAAqB,iCAAiC,EAEhE,GACE,CAACC,GAAeF,EAAS,SAAU,EAAG,CAAC,GACvC,CAACE,GAAeF,EAAS,YAAa,EAAG,CAAC,GAC1C,CAAC,MAAM,QAAQA,EAAS,OAAO,GAC/BA,EAAS,QAAQ,KAAMG,GAAM,CAACD,GAAeC,EAAG,EAAG,CAAC,CAAC,EAErD,MAAM,IAAIF,GAAqB,uBAAuB,EAExD,MAAO,CACL,SAAUD,EAAS,SACnB,YAAaA,EAAS,YACtB,QAAS,MAAM,KAAKA,EAAS,OAAO,CACtC,CAEJ,CAIO,SAASE,GAAelB,EAAOoB,EAAQC,EAAK,CACjD,OAAO3B,GAAUM,CAAK,GAAKA,GAASoB,GAAUpB,GAASqB,CACzD,CAGO,SAASC,IAASC,EAAGC,EAAG,CAC7B,OAAOD,EAAIC,EAAI,KAAK,MAAMD,EAAIC,CAAC,CACjC,CAEO,SAASC,GAASC,EAAOF,EAAI,EAAG,CACrC,IAAMG,EAAQD,EAAQ,EAClBE,EACJ,OAAID,EACFC,EAAS,KAAO,GAAK,CAACF,GAAO,SAASF,EAAG,GAAG,EAE5CI,GAAU,GAAKF,GAAO,SAASF,EAAG,GAAG,EAEhCI,CACT,CAEO,SAASC,GAAaC,EAAQ,CACnC,GAAI,EAAAvC,GAAYuC,CAAM,GAAKA,IAAW,MAAQA,IAAW,IAGvD,OAAO,SAASA,EAAQ,EAAE,CAE9B,CAEO,SAASC,GAAcD,EAAQ,CACpC,GAAI,EAAAvC,GAAYuC,CAAM,GAAKA,IAAW,MAAQA,IAAW,IAGvD,OAAO,WAAWA,CAAM,CAE5B,CAEO,SAASE,GAAYC,EAAU,CAEpC,GAAI,EAAA1C,GAAY0C,CAAQ,GAAKA,IAAa,MAAQA,IAAa,IAExD,CACL,IAAMC,EAAI,WAAW,KAAOD,CAAQ,EAAI,IACxC,OAAO,KAAK,MAAMC,CAAC,CACrB,CACF,CAEO,SAASC,GAAQC,EAAQC,EAAQC,EAAa,GAAO,CAC1D,IAAMC,EAAS,IAAMF,EAErB,OADYC,EAAa,KAAK,MAAQ,KAAK,OAC5BF,EAASG,CAAM,EAAIA,CACpC,CAIO,SAASC,GAAWC,EAAM,CAC/B,OAAOA,EAAO,IAAM,IAAMA,EAAO,MAAQ,GAAKA,EAAO,MAAQ,EAC/D,CAEO,SAASC,GAAWD,EAAM,CAC/B,OAAOD,GAAWC,CAAI,EAAI,IAAM,GAClC,CAEO,SAASE,GAAYF,EAAMG,EAAO,CACvC,IAAMC,EAAWvB,IAASsB,EAAQ,EAAG,EAAE,EAAI,EACzCE,EAAUL,GAAQG,EAAQC,GAAY,GAExC,OAAIA,IAAa,EACRL,GAAWM,CAAO,EAAI,GAAK,GAE3B,CAAC,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAED,EAAW,CAAC,CAE1E,CAGO,SAASE,GAAatC,EAAK,CAChC,IAAIuC,EAAI,KAAK,IACXvC,EAAI,KACJA,EAAI,MAAQ,EACZA,EAAI,IACJA,EAAI,KACJA,EAAI,OACJA,EAAI,OACJA,EAAI,WACN,EAGA,OAAIA,EAAI,KAAO,KAAOA,EAAI,MAAQ,IAChCuC,EAAI,IAAI,KAAKA,CAAC,EAIdA,EAAE,eAAevC,EAAI,KAAMA,EAAI,MAAQ,EAAGA,EAAI,GAAG,GAE5C,CAACuC,CACV,CAGA,SAASC,GAAgBR,EAAMS,EAAoBC,EAAa,CAE9D,MAAO,CADOC,GAAkBC,GAAUZ,EAAM,EAAGS,CAAkB,EAAGC,CAAW,EACnED,EAAqB,CACvC,CAEO,SAASI,GAAgBC,EAAUL,EAAqB,EAAGC,EAAc,EAAG,CACjF,IAAMK,EAAaP,GAAgBM,EAAUL,EAAoBC,CAAW,EACtEM,EAAiBR,GAAgBM,EAAW,EAAGL,EAAoBC,CAAW,EACpF,OAAQT,GAAWa,CAAQ,EAAIC,EAAaC,GAAkB,CAChE,CAEO,SAASC,GAAejB,EAAM,CACnC,OAAIA,EAAO,GACFA,EACKA,EAAOkB,GAAS,mBAAqB,KAAOlB,EAAO,IAAOA,CAC1E,CAIO,SAASmB,GAAcC,EAAIC,EAAcC,EAAQC,EAAW,KAAM,CACvE,IAAMC,EAAO,IAAI,KAAKJ,CAAE,EACtBK,EAAW,CACT,UAAW,MACX,KAAM,UACN,MAAO,UACP,IAAK,UACL,KAAM,UACN,OAAQ,SACV,EAEEF,IACFE,EAAS,SAAWF,GAGtB,IAAMG,EAAW,CAAE,aAAcL,EAAc,GAAGI,CAAS,EAErDE,EAAS,IAAI,KAAK,eAAeL,EAAQI,CAAQ,EACpD,cAAcF,CAAI,EAClB,KAAMI,GAAMA,EAAE,KAAK,YAAY,IAAM,cAAc,EACtD,OAAOD,EAASA,EAAO,MAAQ,IACjC,CAGO,SAASE,GAAaC,EAAYC,EAAc,CACrD,IAAIC,EAAU,SAASF,EAAY,EAAE,EAGjC,OAAO,MAAME,CAAO,IACtBA,EAAU,GAGZ,IAAMC,EAAS,SAASF,EAAc,EAAE,GAAK,EAC3CG,EAAeF,EAAU,GAAK,OAAO,GAAGA,EAAS,EAAE,EAAI,CAACC,EAASA,EACnE,OAAOD,EAAU,GAAKE,CACxB,CAIO,SAASC,GAASC,EAAO,CAC9B,IAAMC,EAAe,OAAOD,CAAK,EACjC,GAAI,OAAOA,GAAU,WAAaA,IAAU,IAAM,OAAO,MAAMC,CAAY,EACzE,MAAM,IAAI7D,GAAqB,sBAAsB4D,CAAK,EAAE,EAC9D,OAAOC,CACT,CAEO,SAASC,GAAgBtE,EAAKuE,EAAY,CAC/C,IAAMC,EAAa,CAAC,EACpB,QAAWC,KAAKzE,EACd,GAAII,GAAeJ,EAAKyE,CAAC,EAAG,CAC1B,IAAM/D,EAAIV,EAAIyE,CAAC,EACf,GAAuB/D,GAAM,KAAM,SACnC8D,EAAWD,EAAWE,CAAC,CAAC,EAAIN,GAASzD,CAAC,CACxC,CAEF,OAAO8D,CACT,CASO,SAASE,GAAaC,EAAQC,EAAQ,CAC3C,IAAMC,EAAQ,KAAK,MAAM,KAAK,IAAIF,EAAS,EAAE,CAAC,EAC5CG,EAAU,KAAK,MAAM,KAAK,IAAIH,EAAS,EAAE,CAAC,EAC1CI,EAAOJ,GAAU,EAAI,IAAM,IAE7B,OAAQC,EAAQ,CACd,IAAK,QACH,MAAO,GAAGG,CAAI,GAAG/D,GAAS6D,EAAO,CAAC,CAAC,IAAI7D,GAAS8D,EAAS,CAAC,CAAC,GAC7D,IAAK,SACH,MAAO,GAAGC,CAAI,GAAGF,CAAK,GAAGC,EAAU,EAAI,IAAIA,CAAO,GAAK,EAAE,GAC3D,IAAK,SACH,MAAO,GAAGC,CAAI,GAAG/D,GAAS6D,EAAO,CAAC,CAAC,GAAG7D,GAAS8D,EAAS,CAAC,CAAC,GAC5D,QACE,MAAM,IAAI,WAAW,gBAAgBF,CAAM,sCAAsC,CACrF,CACF,CAEO,SAASI,GAAWhF,EAAK,CAC9B,OAAOD,GAAKC,EAAK,CAAC,OAAQ,SAAU,SAAU,aAAa,CAAC,CAC9D,CChTO,IAAMiF,IAAa,CACxB,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,UACF,EAEaC,GAAc,CACzB,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACF,EAEaC,IAAe,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAEhF,SAASC,GAAOC,EAAQ,CAC7B,OAAQA,EAAQ,CACd,IAAK,SACH,MAAO,CAAC,GAAGF,GAAY,EACzB,IAAK,QACH,MAAO,CAAC,GAAGD,EAAW,EACxB,IAAK,OACH,MAAO,CAAC,GAAGD,GAAU,EACvB,IAAK,UACH,MAAO,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAI,EACvE,IAAK,UACH,MAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EAChF,QACE,OAAO,IACX,CACF,CAEO,IAAMK,GAAe,CAC1B,SACA,UACA,YACA,WACA,SACA,WACA,QACF,EAEaC,GAAgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAK,EAEhEC,IAAiB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAEzD,SAASC,GAASJ,EAAQ,CAC/B,OAAQA,EAAQ,CACd,IAAK,SACH,MAAO,CAAC,GAAGG,GAAc,EAC3B,IAAK,QACH,MAAO,CAAC,GAAGD,EAAa,EAC1B,IAAK,OACH,MAAO,CAAC,GAAGD,EAAY,EACzB,IAAK,UACH,MAAO,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAC3C,QACE,OAAO,IACX,CACF,CAEO,IAAMI,GAAY,CAAC,KAAM,IAAI,EAEvBC,IAAW,CAAC,gBAAiB,aAAa,EAE1CC,IAAY,CAAC,KAAM,IAAI,EAEvBC,IAAa,CAAC,IAAK,GAAG,EAE5B,SAASC,GAAKT,EAAQ,CAC3B,OAAQA,EAAQ,CACd,IAAK,SACH,MAAO,CAAC,GAAGQ,GAAU,EACvB,IAAK,QACH,MAAO,CAAC,GAAGD,GAAS,EACtB,IAAK,OACH,MAAO,CAAC,GAAGD,GAAQ,EACrB,QACE,OAAO,IACX,CACF,CAEO,SAASI,GAAoBC,EAAI,CACtC,OAAON,GAAUM,EAAG,KAAO,GAAK,EAAI,CAAC,CACvC,CAEO,SAASC,GAAmBD,EAAIX,EAAQ,CAC7C,OAAOI,GAASJ,CAAM,EAAEW,EAAG,QAAU,CAAC,CACxC,CAEO,SAASE,GAAiBF,EAAIX,EAAQ,CAC3C,OAAOD,GAAOC,CAAM,EAAEW,EAAG,MAAQ,CAAC,CACpC,CAEO,SAASG,GAAeH,EAAIX,EAAQ,CACzC,OAAOS,GAAKT,CAAM,EAAEW,EAAG,KAAO,EAAI,EAAI,CAAC,CACzC,CAEO,SAASI,GAAmBC,EAAMC,EAAOC,EAAU,SAAUC,EAAS,GAAO,CAClF,IAAMC,EAAQ,CACZ,MAAO,CAAC,OAAQ,KAAK,EACrB,SAAU,CAAC,UAAW,MAAM,EAC5B,OAAQ,CAAC,QAAS,KAAK,EACvB,MAAO,CAAC,OAAQ,KAAK,EACrB,KAAM,CAAC,MAAO,MAAO,MAAM,EAC3B,MAAO,CAAC,OAAQ,KAAK,EACrB,QAAS,CAAC,SAAU,MAAM,EAC1B,QAAS,CAAC,SAAU,MAAM,CAC5B,EAEMC,EAAW,CAAC,QAAS,UAAW,SAAS,EAAE,QAAQL,CAAI,IAAM,GAEnE,GAAIE,IAAY,QAAUG,EAAU,CAClC,IAAMC,EAAQN,IAAS,OACvB,OAAQC,EAAO,CACb,IAAK,GACH,OAAOK,EAAQ,WAAa,QAAQF,EAAMJ,CAAI,EAAE,CAAC,CAAC,GACpD,IAAK,GACH,OAAOM,EAAQ,YAAc,QAAQF,EAAMJ,CAAI,EAAE,CAAC,CAAC,GACrD,IAAK,GACH,OAAOM,EAAQ,QAAU,QAAQF,EAAMJ,CAAI,EAAE,CAAC,CAAC,GACjD,QACF,CACF,CAEA,IAAMO,EAAW,OAAO,GAAGN,EAAO,EAAE,GAAKA,EAAQ,EAC/CO,EAAW,KAAK,IAAIP,CAAK,EACzBQ,EAAWD,IAAa,EACxBE,EAAWN,EAAMJ,CAAI,EACrBW,EAAUR,EACNM,EACEC,EAAS,CAAC,EACVA,EAAS,CAAC,GAAKA,EAAS,CAAC,EAC3BD,EACAL,EAAMJ,CAAI,EAAE,CAAC,EACbA,EACN,OAAOO,EAAW,GAAGC,CAAQ,IAAIG,CAAO,OAAS,MAAMH,CAAQ,IAAIG,CAAO,EAC5E,CCjKA,SAASC,GAAgBC,EAAQC,EAAe,CAC9C,IAAIC,EAAI,GACR,QAAWC,KAASH,EACdG,EAAM,QACRD,GAAKC,EAAM,IAEXD,GAAKD,EAAcE,EAAM,GAAG,EAGhC,OAAOD,CACT,CAEA,IAAME,IAAyB,CAC7B,EAAWC,GACX,GAAYC,GACZ,IAAaC,GACb,KAAcC,GACd,EAAWC,GACX,GAAYC,GACZ,IAAaC,GACb,KAAcC,GACd,EAAWC,GACX,GAAYC,GACZ,IAAaC,GACb,KAAcC,GACd,EAAWC,GACX,GAAYC,GACZ,IAAaC,GACb,KAAcC,GACd,EAAWC,GACX,GAAYC,GACZ,IAAaC,GACb,KAAcC,EAChB,EAMqBC,GAArB,MAAqBC,CAAU,CAC7B,OAAO,OAAOC,EAAQC,EAAO,CAAC,EAAG,CAC/B,OAAO,IAAIF,EAAUC,EAAQC,CAAI,CACnC,CAEA,OAAO,YAAYC,EAAK,CAItB,IAAIC,EAAU,KACZC,EAAc,GACdC,EAAY,GACRhC,EAAS,CAAC,EAChB,QAASiC,EAAI,EAAGA,EAAIJ,EAAI,OAAQI,IAAK,CACnC,IAAMC,EAAIL,EAAI,OAAOI,CAAC,EAClBC,IAAM,KACJH,EAAY,OAAS,GACvB/B,EAAO,KAAK,CAAE,QAASgC,GAAa,QAAQ,KAAKD,CAAW,EAAG,IAAKA,CAAY,CAAC,EAEnFD,EAAU,KACVC,EAAc,GACdC,EAAY,CAACA,GACJA,GAEAE,IAAMJ,EADfC,GAAeG,GAIXH,EAAY,OAAS,GACvB/B,EAAO,KAAK,CAAE,QAAS,QAAQ,KAAK+B,CAAW,EAAG,IAAKA,CAAY,CAAC,EAEtEA,EAAcG,EACdJ,EAAUI,EAEd,CAEA,OAAIH,EAAY,OAAS,GACvB/B,EAAO,KAAK,CAAE,QAASgC,GAAa,QAAQ,KAAKD,CAAW,EAAG,IAAKA,CAAY,CAAC,EAG5E/B,CACT,CAEA,OAAO,uBAAuBG,EAAO,CACnC,OAAOC,IAAuBD,CAAK,CACrC,CAEA,YAAYwB,EAAQQ,EAAY,CAC9B,KAAK,KAAOA,EACZ,KAAK,IAAMR,EACX,KAAK,UAAY,IACnB,CAEA,wBAAwBS,EAAIR,EAAM,CAChC,OAAI,KAAK,YAAc,OACrB,KAAK,UAAY,KAAK,IAAI,kBAAkB,GAEnC,KAAK,UAAU,YAAYQ,EAAI,CAAE,GAAG,KAAK,KAAM,GAAGR,CAAK,CAAC,EACzD,OAAO,CACnB,CAEA,YAAYQ,EAAIR,EAAO,CAAC,EAAG,CACzB,OAAO,KAAK,IAAI,YAAYQ,EAAI,CAAE,GAAG,KAAK,KAAM,GAAGR,CAAK,CAAC,CAC3D,CAEA,eAAeQ,EAAIR,EAAM,CACvB,OAAO,KAAK,YAAYQ,EAAIR,CAAI,EAAE,OAAO,CAC3C,CAEA,oBAAoBQ,EAAIR,EAAM,CAC5B,OAAO,KAAK,YAAYQ,EAAIR,CAAI,EAAE,cAAc,CAClD,CAEA,eAAeS,EAAUT,EAAM,CAE7B,OADW,KAAK,YAAYS,EAAS,MAAOT,CAAI,EACtC,IAAI,YAAYS,EAAS,MAAM,SAAS,EAAGA,EAAS,IAAI,SAAS,CAAC,CAC9E,CAEA,gBAAgBD,EAAIR,EAAM,CACxB,OAAO,KAAK,YAAYQ,EAAIR,CAAI,EAAE,gBAAgB,CACpD,CAEA,IAAIU,EAAGC,EAAI,EAAG,CAEZ,GAAI,KAAK,KAAK,YACZ,OAAOC,GAASF,EAAGC,CAAC,EAGtB,IAAMX,EAAO,CAAE,GAAG,KAAK,IAAK,EAE5B,OAAIW,EAAI,IACNX,EAAK,MAAQW,GAGR,KAAK,IAAI,gBAAgBX,CAAI,EAAE,OAAOU,CAAC,CAChD,CAEA,yBAAyBF,EAAIP,EAAK,CAChC,IAAMY,EAAe,KAAK,IAAI,YAAY,IAAM,KAC9CC,EAAuB,KAAK,IAAI,gBAAkB,KAAK,IAAI,iBAAmB,UAC9EC,EAAS,CAACf,EAAMgB,IAAY,KAAK,IAAI,QAAQR,EAAIR,EAAMgB,CAAO,EAC9DC,EAAgBjB,GACVQ,EAAG,eAAiBA,EAAG,SAAW,GAAKR,EAAK,OACvC,IAGFQ,EAAG,QAAUA,EAAG,KAAK,aAAaA,EAAG,GAAIR,EAAK,MAAM,EAAI,GAEjEkB,EAAW,IACTL,EACYM,GAAoBX,CAAE,EAC9BO,EAAO,CAAE,KAAM,UAAW,UAAW,KAAM,EAAG,WAAW,EAC/DK,EAAQ,CAACC,EAAQC,IACfT,EACYU,GAAiBf,EAAIa,CAAM,EACnCN,EAAOO,EAAa,CAAE,MAAOD,CAAO,EAAI,CAAE,MAAOA,EAAQ,IAAK,SAAU,EAAG,OAAO,EACxFG,EAAU,CAACH,EAAQC,IACjBT,EACYY,GAAmBjB,EAAIa,CAAM,EACrCN,EACEO,EAAa,CAAE,QAASD,CAAO,EAAI,CAAE,QAASA,EAAQ,MAAO,OAAQ,IAAK,SAAU,EACpF,SACF,EACNK,EAAcnD,GAAU,CACtB,IAAMgC,EAAaT,EAAU,uBAAuBvB,CAAK,EACzD,OAAIgC,EACK,KAAK,wBAAwBC,EAAID,CAAU,EAE3ChC,CAEX,EACAoD,EAAON,GACLR,EAAuBe,GAAepB,EAAIa,CAAM,EAAIN,EAAO,CAAE,IAAKM,CAAO,EAAG,KAAK,EACnFhD,EAAiBE,GAAU,CAEzB,OAAQA,EAAO,CAEb,IAAK,IACH,OAAO,KAAK,IAAIiC,EAAG,WAAW,EAChC,IAAK,IAEL,IAAK,MACH,OAAO,KAAK,IAAIA,EAAG,YAAa,CAAC,EAEnC,IAAK,IACH,OAAO,KAAK,IAAIA,EAAG,MAAM,EAC3B,IAAK,KACH,OAAO,KAAK,IAAIA,EAAG,OAAQ,CAAC,EAE9B,IAAK,KACH,OAAO,KAAK,IAAI,KAAK,MAAMA,EAAG,YAAc,EAAE,EAAG,CAAC,EACpD,IAAK,MACH,OAAO,KAAK,IAAI,KAAK,MAAMA,EAAG,YAAc,GAAG,CAAC,EAElD,IAAK,IACH,OAAO,KAAK,IAAIA,EAAG,MAAM,EAC3B,IAAK,KACH,OAAO,KAAK,IAAIA,EAAG,OAAQ,CAAC,EAE9B,IAAK,IACH,OAAO,KAAK,IAAIA,EAAG,KAAO,KAAO,EAAI,GAAKA,EAAG,KAAO,EAAE,EACxD,IAAK,KACH,OAAO,KAAK,IAAIA,EAAG,KAAO,KAAO,EAAI,GAAKA,EAAG,KAAO,GAAI,CAAC,EAC3D,IAAK,IACH,OAAO,KAAK,IAAIA,EAAG,IAAI,EACzB,IAAK,KACH,OAAO,KAAK,IAAIA,EAAG,KAAM,CAAC,EAE5B,IAAK,IAEH,OAAOS,EAAa,CAAE,OAAQ,SAAU,OAAQ,KAAK,KAAK,MAAO,CAAC,EACpE,IAAK,KAEH,OAAOA,EAAa,CAAE,OAAQ,QAAS,OAAQ,KAAK,KAAK,MAAO,CAAC,EACnE,IAAK,MAEH,OAAOA,EAAa,CAAE,OAAQ,SAAU,OAAQ,KAAK,KAAK,MAAO,CAAC,EACpE,IAAK,OAEH,OAAOT,EAAG,KAAK,WAAWA,EAAG,GAAI,CAAE,OAAQ,QAAS,OAAQ,KAAK,IAAI,MAAO,CAAC,EAC/E,IAAK,QAEH,OAAOA,EAAG,KAAK,WAAWA,EAAG,GAAI,CAAE,OAAQ,OAAQ,OAAQ,KAAK,IAAI,MAAO,CAAC,EAE9E,IAAK,IAEH,OAAOA,EAAG,SAEZ,IAAK,IACH,OAAOU,EAAS,EAElB,IAAK,IACH,OAAOJ,EAAuBC,EAAO,CAAE,IAAK,SAAU,EAAG,KAAK,EAAI,KAAK,IAAIP,EAAG,GAAG,EACnF,IAAK,KACH,OAAOM,EAAuBC,EAAO,CAAE,IAAK,SAAU,EAAG,KAAK,EAAI,KAAK,IAAIP,EAAG,IAAK,CAAC,EAEtF,IAAK,IAEH,OAAO,KAAK,IAAIA,EAAG,OAAO,EAC5B,IAAK,MAEH,OAAOgB,EAAQ,QAAS,EAAI,EAC9B,IAAK,OAEH,OAAOA,EAAQ,OAAQ,EAAI,EAC7B,IAAK,QAEH,OAAOA,EAAQ,SAAU,EAAI,EAE/B,IAAK,IAEH,OAAO,KAAK,IAAIhB,EAAG,OAAO,EAC5B,IAAK,MAEH,OAAOgB,EAAQ,QAAS,EAAK,EAC/B,IAAK,OAEH,OAAOA,EAAQ,OAAQ,EAAK,EAC9B,IAAK,QAEH,OAAOA,EAAQ,SAAU,EAAK,EAEhC,IAAK,IAEH,OAAOV,EACHC,EAAO,CAAE,MAAO,UAAW,IAAK,SAAU,EAAG,OAAO,EACpD,KAAK,IAAIP,EAAG,KAAK,EACvB,IAAK,KAEH,OAAOM,EACHC,EAAO,CAAE,MAAO,UAAW,IAAK,SAAU,EAAG,OAAO,EACpD,KAAK,IAAIP,EAAG,MAAO,CAAC,EAC1B,IAAK,MAEH,OAAOY,EAAM,QAAS,EAAI,EAC5B,IAAK,OAEH,OAAOA,EAAM,OAAQ,EAAI,EAC3B,IAAK,QAEH,OAAOA,EAAM,SAAU,EAAI,EAE7B,IAAK,IAEH,OAAON,EACHC,EAAO,CAAE,MAAO,SAAU,EAAG,OAAO,EACpC,KAAK,IAAIP,EAAG,KAAK,EACvB,IAAK,KAEH,OAAOM,EACHC,EAAO,CAAE,MAAO,SAAU,EAAG,OAAO,EACpC,KAAK,IAAIP,EAAG,MAAO,CAAC,EAC1B,IAAK,MAEH,OAAOY,EAAM,QAAS,EAAK,EAC7B,IAAK,OAEH,OAAOA,EAAM,OAAQ,EAAK,EAC5B,IAAK,QAEH,OAAOA,EAAM,SAAU,EAAK,EAE9B,IAAK,IAEH,OAAON,EAAuBC,EAAO,CAAE,KAAM,SAAU,EAAG,MAAM,EAAI,KAAK,IAAIP,EAAG,IAAI,EACtF,IAAK,KAEH,OAAOM,EACHC,EAAO,CAAE,KAAM,SAAU,EAAG,MAAM,EAClC,KAAK,IAAIP,EAAG,KAAK,SAAS,EAAE,MAAM,EAAE,EAAG,CAAC,EAC9C,IAAK,OAEH,OAAOM,EACHC,EAAO,CAAE,KAAM,SAAU,EAAG,MAAM,EAClC,KAAK,IAAIP,EAAG,KAAM,CAAC,EACzB,IAAK,SAEH,OAAOM,EACHC,EAAO,CAAE,KAAM,SAAU,EAAG,MAAM,EAClC,KAAK,IAAIP,EAAG,KAAM,CAAC,EAEzB,IAAK,IAEH,OAAOmB,EAAI,OAAO,EACpB,IAAK,KAEH,OAAOA,EAAI,MAAM,EACnB,IAAK,QACH,OAAOA,EAAI,QAAQ,EACrB,IAAK,KACH,OAAO,KAAK,IAAInB,EAAG,SAAS,SAAS,EAAE,MAAM,EAAE,EAAG,CAAC,EACrD,IAAK,OACH,OAAO,KAAK,IAAIA,EAAG,SAAU,CAAC,EAChC,IAAK,IACH,OAAO,KAAK,IAAIA,EAAG,UAAU,EAC/B,IAAK,KACH,OAAO,KAAK,IAAIA,EAAG,WAAY,CAAC,EAClC,IAAK,IACH,OAAO,KAAK,IAAIA,EAAG,eAAe,EACpC,IAAK,KACH,OAAO,KAAK,IAAIA,EAAG,gBAAiB,CAAC,EACvC,IAAK,KACH,OAAO,KAAK,IAAIA,EAAG,cAAc,SAAS,EAAE,MAAM,EAAE,EAAG,CAAC,EAC1D,IAAK,OACH,OAAO,KAAK,IAAIA,EAAG,cAAe,CAAC,EACrC,IAAK,IACH,OAAO,KAAK,IAAIA,EAAG,OAAO,EAC5B,IAAK,MACH,OAAO,KAAK,IAAIA,EAAG,QAAS,CAAC,EAC/B,IAAK,IAEH,OAAO,KAAK,IAAIA,EAAG,OAAO,EAC5B,IAAK,KAEH,OAAO,KAAK,IAAIA,EAAG,QAAS,CAAC,EAC/B,IAAK,IACH,OAAO,KAAK,IAAI,KAAK,MAAMA,EAAG,GAAK,GAAI,CAAC,EAC1C,IAAK,IACH,OAAO,KAAK,IAAIA,EAAG,EAAE,EACvB,QACE,OAAOkB,EAAWnD,CAAK,CAC3B,CACF,EAEF,OAAOJ,GAAgB2B,EAAU,YAAYG,CAAG,EAAG5B,CAAa,CAClE,CAEA,yBAAyBwD,EAAK5B,EAAK,CACjC,IAAM6B,EAAgBvD,GAAU,CAC5B,OAAQA,EAAM,CAAC,EAAG,CAChB,IAAK,IACH,MAAO,cACT,IAAK,IACH,MAAO,SACT,IAAK,IACH,MAAO,SACT,IAAK,IACH,MAAO,OACT,IAAK,IACH,MAAO,MACT,IAAK,IACH,MAAO,OACT,IAAK,IACH,MAAO,QACT,IAAK,IACH,MAAO,OACT,QACE,OAAO,IACX,CACF,EACAF,EAAiB0D,GAAYxD,GAAU,CACrC,IAAMyD,EAASF,EAAavD,CAAK,EACjC,OAAIyD,EACK,KAAK,IAAID,EAAO,IAAIC,CAAM,EAAGzD,EAAM,MAAM,EAEzCA,CAEX,EACA0D,EAASnC,EAAU,YAAYG,CAAG,EAClCiC,EAAaD,EAAO,OAClB,CAACE,EAAO,CAAE,QAAAC,EAAS,IAAAC,CAAI,IAAOD,EAAUD,EAAQA,EAAM,OAAOE,CAAG,EAChE,CAAC,CACH,EACAC,EAAYT,EAAI,QAAQ,GAAGK,EAAW,IAAIJ,CAAY,EAAE,OAAQS,GAAMA,CAAC,CAAC,EAC1E,OAAOpE,GAAgB8D,EAAQ5D,EAAciE,CAAS,CAAC,CACzD,CACF,EClYA,IAAME,GAAY,+EAElB,SAASC,MAAkBC,EAAS,CAClC,IAAMC,EAAOD,EAAQ,OAAO,CAACE,EAAGC,IAAMD,EAAIC,EAAE,OAAQ,EAAE,EACtD,OAAO,OAAO,IAAIF,CAAI,GAAG,CAC3B,CAEA,SAASG,MAAqBC,EAAY,CACxC,OAAQC,GACND,EACG,OACC,CAAC,CAACE,EAAYC,EAAYC,CAAM,EAAGC,IAAO,CACxC,GAAM,CAACC,EAAKC,EAAMC,CAAI,EAAIH,EAAGJ,EAAGG,CAAM,EACtC,MAAO,CAAC,CAAE,GAAGF,EAAY,GAAGI,CAAI,EAAGC,GAAQJ,EAAYK,CAAI,CAC7D,EACA,CAAC,CAAC,EAAG,KAAM,CAAC,CACd,EACC,MAAM,EAAG,CAAC,CACjB,CAEA,SAASC,GAAMC,KAAMC,EAAU,CAC7B,GAAID,GAAK,KACP,MAAO,CAAC,KAAM,IAAI,EAGpB,OAAW,CAACE,EAAOC,CAAS,IAAKF,EAAU,CACzC,IAAMV,EAAIW,EAAM,KAAKF,CAAC,EACtB,GAAIT,EACF,OAAOY,EAAUZ,CAAC,CAEtB,CACA,MAAO,CAAC,KAAM,IAAI,CACpB,CAEA,SAASa,MAAeC,EAAM,CAC5B,MAAO,CAACC,EAAOZ,IAAW,CACxB,IAAMa,EAAM,CAAC,EACT,EAEJ,IAAK,EAAI,EAAG,EAAIF,EAAK,OAAQ,IAC3BE,EAAIF,EAAK,CAAC,CAAC,EAAIG,GAAaF,EAAMZ,EAAS,CAAC,CAAC,EAE/C,MAAO,CAACa,EAAK,KAAMb,EAAS,CAAC,CAC/B,CACF,CAGA,IAAMe,GAAc,kCACdC,IAAkB,MAAMD,GAAY,MAAM,WAAW1B,GAAU,MAAM,WACrE4B,GAAmB,sDACnBC,GAAe,OAAO,GAAGD,GAAiB,MAAM,GAAGD,GAAe,EAAE,EACpEG,GAAwB,OAAO,OAAOD,GAAa,MAAM,IAAI,EAC7DE,IAAc,8CACdC,IAAe,8BACfC,IAAkB,mBAClBC,IAAqBb,GAAY,WAAY,aAAc,SAAS,EACpEc,IAAwBd,GAAY,OAAQ,SAAS,EACrDe,IAAc,wBACdC,GAAe,OACnB,GAAGT,GAAiB,MAAM,QAAQF,GAAY,MAAM,KAAK1B,GAAU,MAAM,KAC3E,EACMsC,IAAwB,OAAO,OAAOD,GAAa,MAAM,IAAI,EAEnE,SAASE,GAAIhB,EAAOiB,EAAKC,EAAU,CACjC,IAAMjC,EAAIe,EAAMiB,CAAG,EACnB,OAAOE,GAAYlC,CAAC,EAAIiC,EAAWhB,GAAajB,CAAC,CACnD,CAEA,SAASmC,IAAcpB,EAAOZ,EAAQ,CAOpC,MAAO,CANM,CACX,KAAM4B,GAAIhB,EAAOZ,CAAM,EACvB,MAAO4B,GAAIhB,EAAOZ,EAAS,EAAG,CAAC,EAC/B,IAAK4B,GAAIhB,EAAOZ,EAAS,EAAG,CAAC,CAC/B,EAEc,KAAMA,EAAS,CAAC,CAChC,CAEA,SAASiC,GAAerB,EAAOZ,EAAQ,CAQrC,MAAO,CAPM,CACX,MAAO4B,GAAIhB,EAAOZ,EAAQ,CAAC,EAC3B,QAAS4B,GAAIhB,EAAOZ,EAAS,EAAG,CAAC,EACjC,QAAS4B,GAAIhB,EAAOZ,EAAS,EAAG,CAAC,EACjC,aAAckC,GAAYtB,EAAMZ,EAAS,CAAC,CAAC,CAC7C,EAEc,KAAMA,EAAS,CAAC,CAChC,CAEA,SAASmC,GAAiBvB,EAAOZ,EAAQ,CACvC,IAAMoC,EAAQ,CAACxB,EAAMZ,CAAM,GAAK,CAACY,EAAMZ,EAAS,CAAC,EAC/CqC,EAAaC,GAAa1B,EAAMZ,EAAS,CAAC,EAAGY,EAAMZ,EAAS,CAAC,CAAC,EAC9DG,EAAOiC,EAAQ,KAAOG,GAAgB,SAASF,CAAU,EAC3D,MAAO,CAAC,CAAC,EAAGlC,EAAMH,EAAS,CAAC,CAC9B,CAEA,SAASwC,GAAgB5B,EAAOZ,EAAQ,CACtC,IAAMG,EAAOS,EAAMZ,CAAM,EAAIyC,GAAS,OAAO7B,EAAMZ,CAAM,CAAC,EAAI,KAC9D,MAAO,CAAC,CAAC,EAAGG,EAAMH,EAAS,CAAC,CAC9B,CAIA,IAAM0C,IAAc,OAAO,MAAMzB,GAAiB,MAAM,GAAG,EAIrD0B,IACJ,+PAEF,SAASC,IAAmBhC,EAAO,CACjC,GAAM,CAACN,EAAGuC,EAASC,EAAUC,EAASC,EAAQC,EAASC,EAAWC,EAAWC,CAAe,EAC1FxC,EAEIyC,EAAoB/C,EAAE,CAAC,IAAM,IAC7BgD,EAAkBH,GAAaA,EAAU,CAAC,IAAM,IAEhDI,EAAc,CAACC,EAAKC,EAAQ,KAChCD,IAAQ,SAAcC,GAAUD,GAAOH,GAAsB,CAACG,EAAMA,EAEtE,MAAO,CACL,CACE,MAAOD,EAAYG,GAAcb,CAAO,CAAC,EACzC,OAAQU,EAAYG,GAAcZ,CAAQ,CAAC,EAC3C,MAAOS,EAAYG,GAAcX,CAAO,CAAC,EACzC,KAAMQ,EAAYG,GAAcV,CAAM,CAAC,EACvC,MAAOO,EAAYG,GAAcT,CAAO,CAAC,EACzC,QAASM,EAAYG,GAAcR,CAAS,CAAC,EAC7C,QAASK,EAAYG,GAAcP,CAAS,EAAGA,IAAc,IAAI,EACjE,aAAcI,EAAYrB,GAAYkB,CAAe,EAAGE,CAAe,CACzE,CACF,CACF,CAKA,IAAMK,IAAa,CACjB,IAAK,EACL,IAAK,GAAK,GACV,IAAK,GAAK,GACV,IAAK,GAAK,GACV,IAAK,GAAK,GACV,IAAK,GAAK,GACV,IAAK,GAAK,GACV,IAAK,GAAK,GACV,IAAK,GAAK,EACZ,EAEA,SAASC,GAAYC,EAAYhB,EAASC,EAAUE,EAAQC,EAASC,EAAWC,EAAW,CACzF,IAAMW,EAAS,CACb,KAAMjB,EAAQ,SAAW,EAAIkB,GAAejD,GAAa+B,CAAO,CAAC,EAAI/B,GAAa+B,CAAO,EACzF,MAAemB,GAAY,QAAQlB,CAAQ,EAAI,EAC/C,IAAKhC,GAAakC,CAAM,EACxB,KAAMlC,GAAamC,CAAO,EAC1B,OAAQnC,GAAaoC,CAAS,CAChC,EAEA,OAAIC,IAAWW,EAAO,OAAShD,GAAaqC,CAAS,GACjDU,IACFC,EAAO,QACLD,EAAW,OAAS,EACRI,GAAa,QAAQJ,CAAU,EAAI,EACnCK,GAAc,QAAQL,CAAU,EAAI,GAG7CC,CACT,CAGA,IAAMK,IACJ,kMAEF,SAASC,IAAexD,EAAO,CAC7B,GAAM,CACF,CACAiD,EACAb,EACAF,EACAD,EACAI,EACAC,EACAC,EACAkB,EACAC,EACAC,EACAC,CACF,EAAI5D,EACJkD,EAASF,GAAYC,EAAYhB,EAASC,EAAUE,EAAQC,EAASC,EAAWC,CAAS,EAEvFsB,EACJ,OAAIJ,EACFI,EAASd,IAAWU,CAAS,EACpBC,EACTG,EAAS,EAETA,EAASnC,GAAaiC,EAAYC,CAAY,EAGzC,CAACV,EAAQ,IAAIvB,GAAgBkC,CAAM,CAAC,CAC7C,CAEA,SAASC,IAAkBpE,EAAG,CAE5B,OAAOA,EACJ,QAAQ,qBAAsB,GAAG,EACjC,QAAQ,WAAY,GAAG,EACvB,KAAK,CACV,CAIA,IAAMqE,IACF,6HACFC,IACE,yJACFC,IACE,4HAEJ,SAASC,GAAoBlE,EAAO,CAClC,GAAM,CAAC,CAAEiD,EAAYb,EAAQF,EAAUD,EAASI,EAASC,EAAWC,CAAS,EAAIvC,EAEjF,MAAO,CADIgD,GAAYC,EAAYhB,EAASC,EAAUE,EAAQC,EAASC,EAAWC,CAAS,EAC3EZ,GAAgB,WAAW,CAC7C,CAEA,SAASwC,IAAanE,EAAO,CAC3B,GAAM,CAAC,CAAEiD,EAAYf,EAAUE,EAAQC,EAASC,EAAWC,EAAWN,CAAO,EAAIjC,EAEjF,MAAO,CADIgD,GAAYC,EAAYhB,EAASC,EAAUE,EAAQC,EAASC,EAAWC,CAAS,EAC3EZ,GAAgB,WAAW,CAC7C,CAEA,IAAMyC,IAA+B1F,GAAe8B,IAAaD,EAAqB,EAChF8D,IAAgC3F,GAAe+B,IAAcF,EAAqB,EAClF+D,IAAmC5F,GAAegC,IAAiBH,EAAqB,EACxFgE,IAAuB7F,GAAe4B,EAAY,EAElDkE,GAA6BzF,GACjCqC,IACAC,GACAE,GACAK,EACF,EACM6C,IAA8B1F,GAClC4B,IACAU,GACAE,GACAK,EACF,EACM8C,IAA+B3F,GACnC6B,IACAS,GACAE,GACAK,EACF,EACM+C,IAA0B5F,GAC9BsC,GACAE,GACAK,EACF,EAMO,SAASgD,GAAalF,EAAG,CAC9B,OAAOD,GACLC,EACA,CAAC0E,IAA8BI,EAA0B,EACzD,CAACH,IAA+BI,GAA2B,EAC3D,CAACH,IAAkCI,GAA4B,EAC/D,CAACH,IAAsBI,GAAuB,CAChD,CACF,CAEO,SAASE,GAAiBnF,EAAG,CAClC,OAAOD,GAAMqE,IAAkBpE,CAAC,EAAG,CAAC6D,IAASC,GAAc,CAAC,CAC9D,CAEO,SAASsB,GAAcpF,EAAG,CAC/B,OAAOD,GACLC,EACA,CAACqE,IAASG,EAAmB,EAC7B,CAACF,IAAQE,EAAmB,EAC5B,CAACD,IAAOE,GAAY,CACtB,CACF,CAEO,SAASY,GAAiBrF,EAAG,CAClC,OAAOD,GAAMC,EAAG,CAACqC,IAAaC,GAAkB,CAAC,CACnD,CAEA,IAAMgD,IAAqBjG,GAAkBsC,EAAc,EAEpD,SAAS4D,GAAiBvF,EAAG,CAClC,OAAOD,GAAMC,EAAG,CAACoC,IAAakD,GAAkB,CAAC,CACnD,CAEA,IAAME,IAA+BxG,GAAemC,IAAaE,GAAqB,EAChFoE,IAAuBzG,GAAeoC,EAAY,EAElDsE,IAAkCrG,GACtCsC,GACAE,GACAK,EACF,EAEO,SAASyD,GAAS3F,EAAG,CAC1B,OAAOD,GACLC,EACA,CAACwF,IAA8BV,EAA0B,EACzD,CAACW,IAAsBC,GAA+B,CACxD,CACF,CC9TA,IAAME,GAAU,mBAGHC,GAAiB,CAC1B,MAAO,CACL,KAAM,EACN,MAAO,EAAI,GACX,QAAS,EAAI,GAAK,GAClB,QAAS,EAAI,GAAK,GAAK,GACvB,aAAc,EAAI,GAAK,GAAK,GAAK,GACnC,EACA,KAAM,CACJ,MAAO,GACP,QAAS,GAAK,GACd,QAAS,GAAK,GAAK,GACnB,aAAc,GAAK,GAAK,GAAK,GAC/B,EACA,MAAO,CAAE,QAAS,GAAI,QAAS,GAAK,GAAI,aAAc,GAAK,GAAK,GAAK,EACrE,QAAS,CAAE,QAAS,GAAI,aAAc,GAAK,GAAK,EAChD,QAAS,CAAE,aAAc,GAAK,CAChC,EACAC,IAAe,CACb,MAAO,CACL,SAAU,EACV,OAAQ,GACR,MAAO,GACP,KAAM,IACN,MAAO,IAAM,GACb,QAAS,IAAM,GAAK,GACpB,QAAS,IAAM,GAAK,GAAK,GACzB,aAAc,IAAM,GAAK,GAAK,GAAK,GACrC,EACA,SAAU,CACR,OAAQ,EACR,MAAO,GACP,KAAM,GACN,MAAO,GAAK,GACZ,QAAS,GAAK,GAAK,GACnB,QAAS,GAAK,GAAK,GAAK,GACxB,aAAc,GAAK,GAAK,GAAK,GAAK,GACpC,EACA,OAAQ,CACN,MAAO,EACP,KAAM,GACN,MAAO,GAAK,GACZ,QAAS,GAAK,GAAK,GACnB,QAAS,GAAK,GAAK,GAAK,GACxB,aAAc,GAAK,GAAK,GAAK,GAAK,GACpC,EAEA,GAAGD,EACL,EACAE,GAAqB,OAAW,IAChCC,GAAsB,OAAW,KACjCC,IAAiB,CACf,MAAO,CACL,SAAU,EACV,OAAQ,GACR,MAAOF,GAAqB,EAC5B,KAAMA,GACN,MAAOA,GAAqB,GAC5B,QAASA,GAAqB,GAAK,GACnC,QAASA,GAAqB,GAAK,GAAK,GACxC,aAAcA,GAAqB,GAAK,GAAK,GAAK,GACpD,EACA,SAAU,CACR,OAAQ,EACR,MAAOA,GAAqB,GAC5B,KAAMA,GAAqB,EAC3B,MAAQA,GAAqB,GAAM,EACnC,QAAUA,GAAqB,GAAK,GAAM,EAC1C,QAAUA,GAAqB,GAAK,GAAK,GAAM,EAC/C,aAAeA,GAAqB,GAAK,GAAK,GAAK,IAAQ,CAC7D,EACA,OAAQ,CACN,MAAOC,GAAsB,EAC7B,KAAMA,GACN,MAAOA,GAAsB,GAC7B,QAASA,GAAsB,GAAK,GACpC,QAASA,GAAsB,GAAK,GAAK,GACzC,aAAcA,GAAsB,GAAK,GAAK,GAAK,GACrD,EACA,GAAGH,EACL,EAGIK,GAAe,CACnB,QACA,WACA,SACA,QACA,OACA,QACA,UACA,UACA,cACF,EAEMC,IAAeD,GAAa,MAAM,CAAC,EAAE,QAAQ,EAGnD,SAASE,GAAMC,EAAKC,EAAMC,EAAQ,GAAO,CAEvC,IAAMC,EAAO,CACX,OAAQD,EAAQD,EAAK,OAAS,CAAE,GAAGD,EAAI,OAAQ,GAAIC,EAAK,QAAU,CAAC,CAAG,EACtE,IAAKD,EAAI,IAAI,MAAMC,EAAK,GAAG,EAC3B,mBAAoBA,EAAK,oBAAsBD,EAAI,mBACnD,OAAQC,EAAK,QAAUD,EAAI,MAC7B,EACA,OAAO,IAAII,GAASD,CAAI,CAC1B,CAEA,SAASE,GAAiBC,EAAQC,EAAM,CACtC,IAAIC,EAAMD,EAAK,cAAgB,EAC/B,QAAWE,KAAQX,IAAa,MAAM,CAAC,EACjCS,EAAKE,CAAI,IACXD,GAAOD,EAAKE,CAAI,EAAIH,EAAOG,CAAI,EAAE,cAGrC,OAAOD,CACT,CAGA,SAASE,GAAgBJ,EAAQC,EAAM,CAGrC,IAAMI,EAASN,GAAiBC,EAAQC,CAAI,EAAI,EAAI,GAAK,EAEzDV,GAAa,YAAY,CAACe,EAAUC,IAAY,CAC9C,GAAKC,GAAYP,EAAKM,CAAO,CAAC,EA0B5B,OAAOD,EAzBP,GAAIA,EAAU,CACZ,IAAMG,EAAcR,EAAKK,CAAQ,EAAID,EAC/BK,EAAOV,EAAOO,CAAO,EAAED,CAAQ,EAiB/BK,EAAS,KAAK,MAAMF,EAAcC,CAAI,EAC5CT,EAAKM,CAAO,GAAKI,EAASN,EAC1BJ,EAAKK,CAAQ,GAAKK,EAASD,EAAOL,CACpC,CACA,OAAOE,CAIX,EAAG,IAAI,EAIPhB,GAAa,OAAO,CAACe,EAAUC,IAAY,CACzC,GAAKC,GAAYP,EAAKM,CAAO,CAAC,EAQ5B,OAAOD,EAPP,GAAIA,EAAU,CACZ,IAAMM,EAAWX,EAAKK,CAAQ,EAAI,EAClCL,EAAKK,CAAQ,GAAKM,EAClBX,EAAKM,CAAO,GAAKK,EAAWZ,EAAOM,CAAQ,EAAEC,CAAO,CACtD,CACA,OAAOA,CAIX,EAAG,IAAI,CACT,CAGA,SAASM,IAAaZ,EAAM,CAC1B,IAAMa,EAAU,CAAC,EACjB,OAAW,CAACC,EAAKC,CAAK,IAAK,OAAO,QAAQf,CAAI,EACxCe,IAAU,IACZF,EAAQC,CAAG,EAAIC,GAGnB,OAAOF,CACT,CAeA,IAAqBhB,GAArB,MAAqBmB,CAAS,CAI5B,YAAYC,EAAQ,CAClB,IAAMC,EAAWD,EAAO,qBAAuB,YAAc,GACzDlB,EAASmB,EAAW7B,IAAiBH,IAErC+B,EAAO,SACTlB,EAASkB,EAAO,QAMlB,KAAK,OAASA,EAAO,OAIrB,KAAK,IAAMA,EAAO,KAAOE,GAAO,OAAO,EAIvC,KAAK,mBAAqBD,EAAW,WAAa,SAIlD,KAAK,QAAUD,EAAO,SAAW,KAIjC,KAAK,OAASlB,EAId,KAAK,gBAAkB,EACzB,CAWA,OAAO,WAAWqB,EAAOC,EAAM,CAC7B,OAAOL,EAAS,WAAW,CAAE,aAAcI,CAAM,EAAGC,CAAI,CAC1D,CAsBA,OAAO,WAAWC,EAAKD,EAAO,CAAC,EAAG,CAChC,GAAIC,GAAO,MAAQ,OAAOA,GAAQ,SAChC,MAAM,IAAIC,GACR,+DACED,IAAQ,KAAO,OAAS,OAAOA,CACjC,EACF,EAGF,OAAO,IAAIN,EAAS,CAClB,OAAQQ,GAAgBF,EAAKN,EAAS,aAAa,EACnD,IAAKG,GAAO,WAAWE,CAAI,EAC3B,mBAAoBA,EAAK,mBACzB,OAAQA,EAAK,MACf,CAAC,CACH,CAYA,OAAO,iBAAiBI,EAAc,CACpC,GAAIC,GAASD,CAAY,EACvB,OAAOT,EAAS,WAAWS,CAAY,EAClC,GAAIT,EAAS,WAAWS,CAAY,EACzC,OAAOA,EACF,GAAI,OAAOA,GAAiB,SACjC,OAAOT,EAAS,WAAWS,CAAY,EAEvC,MAAM,IAAIF,GACR,6BAA6BE,CAAY,YAAY,OAAOA,CAAY,EAC1E,CAEJ,CAgBA,OAAO,QAAQE,EAAMN,EAAM,CACzB,GAAM,CAACO,CAAM,EAAIC,GAAiBF,CAAI,EACtC,OAAIC,EACKZ,EAAS,WAAWY,EAAQP,CAAI,EAEhCL,EAAS,QAAQ,aAAc,cAAcW,CAAI,+BAA+B,CAE3F,CAkBA,OAAO,YAAYA,EAAMN,EAAM,CAC7B,GAAM,CAACO,CAAM,EAAIE,GAAiBH,CAAI,EACtC,OAAIC,EACKZ,EAAS,WAAWY,EAAQP,CAAI,EAEhCL,EAAS,QAAQ,aAAc,cAAcW,CAAI,+BAA+B,CAE3F,CAQA,OAAO,QAAQI,EAAQC,EAAc,KAAM,CACzC,GAAI,CAACD,EACH,MAAM,IAAIR,GAAqB,kDAAkD,EAGnF,IAAMU,EAAUF,aAAkBG,GAAUH,EAAS,IAAIG,GAAQH,EAAQC,CAAW,EAEpF,GAAIG,GAAS,eACX,MAAM,IAAIC,GAAqBH,CAAO,EAEtC,OAAO,IAAIjB,EAAS,CAAE,QAAAiB,CAAQ,CAAC,CAEnC,CAKA,OAAO,cAAc/B,EAAM,CACzB,IAAMmC,EAAa,CACjB,KAAM,QACN,MAAO,QACP,QAAS,WACT,SAAU,WACV,MAAO,SACP,OAAQ,SACR,KAAM,QACN,MAAO,QACP,IAAK,OACL,KAAM,OACN,KAAM,QACN,MAAO,QACP,OAAQ,UACR,QAAS,UACT,OAAQ,UACR,QAAS,UACT,YAAa,eACb,aAAc,cAChB,EAAEnC,GAAOA,EAAK,YAAY,CAAQ,EAElC,GAAI,CAACmC,EAAY,MAAM,IAAIC,GAAiBpC,CAAI,EAEhD,OAAOmC,CACT,CAOA,OAAO,WAAWE,EAAG,CACnB,OAAQA,GAAKA,EAAE,iBAAoB,EACrC,CAMA,IAAI,QAAS,CACX,OAAO,KAAK,QAAU,KAAK,IAAI,OAAS,IAC1C,CAOA,IAAI,iBAAkB,CACpB,OAAO,KAAK,QAAU,KAAK,IAAI,gBAAkB,IACnD,CAwBA,SAASC,EAAKnB,EAAO,CAAC,EAAG,CAEvB,IAAMoB,EAAU,CACd,GAAGpB,EACH,MAAOA,EAAK,QAAU,IAASA,EAAK,QAAU,EAChD,EACA,OAAO,KAAK,QACRqB,GAAU,OAAO,KAAK,IAAKD,CAAO,EAAE,yBAAyB,KAAMD,CAAG,EACtExD,EACN,CAgBA,QAAQqC,EAAO,CAAC,EAAG,CACjB,GAAI,CAAC,KAAK,QAAS,OAAOrC,GAE1B,IAAM2D,EAAIrD,GACP,IAAKY,GAAS,CACb,IAAM0C,EAAM,KAAK,OAAO1C,CAAI,EAC5B,OAAIK,GAAYqC,CAAG,EACV,KAEF,KAAK,IACT,gBAAgB,CAAE,MAAO,OAAQ,YAAa,OAAQ,GAAGvB,EAAM,KAAMnB,EAAK,MAAM,EAAG,EAAE,CAAE,CAAC,EACxF,OAAO0C,CAAG,CACf,CAAC,EACA,OAAQ,GAAM,CAAC,EAElB,OAAO,KAAK,IACT,cAAc,CAAE,KAAM,cAAe,MAAOvB,EAAK,WAAa,SAAU,GAAGA,CAAK,CAAC,EACjF,OAAOsB,CAAC,CACb,CAOA,UAAW,CACT,OAAK,KAAK,QACH,CAAE,GAAG,KAAK,MAAO,EADE,CAAC,CAE7B,CAYA,OAAQ,CAEN,GAAI,CAAC,KAAK,QAAS,OAAO,KAE1B,IAAIE,EAAI,IACR,OAAI,KAAK,QAAU,IAAGA,GAAK,KAAK,MAAQ,MACpC,KAAK,SAAW,GAAK,KAAK,WAAa,KAAGA,GAAK,KAAK,OAAS,KAAK,SAAW,EAAI,KACjF,KAAK,QAAU,IAAGA,GAAK,KAAK,MAAQ,KACpC,KAAK,OAAS,IAAGA,GAAK,KAAK,KAAO,MAClC,KAAK,QAAU,GAAK,KAAK,UAAY,GAAK,KAAK,UAAY,GAAK,KAAK,eAAiB,KACxFA,GAAK,KACH,KAAK,QAAU,IAAGA,GAAK,KAAK,MAAQ,KACpC,KAAK,UAAY,IAAGA,GAAK,KAAK,QAAU,MACxC,KAAK,UAAY,GAAK,KAAK,eAAiB,KAG9CA,GAAKC,GAAQ,KAAK,QAAU,KAAK,aAAe,IAAM,CAAC,EAAI,KACzDD,IAAM,MAAKA,GAAK,OACbA,CACT,CAkBA,UAAUxB,EAAO,CAAC,EAAG,CACnB,GAAI,CAAC,KAAK,QAAS,OAAO,KAE1B,IAAM0B,EAAS,KAAK,SAAS,EAC7B,OAAIA,EAAS,GAAKA,GAAU,MAAiB,MAE7C1B,EAAO,CACL,qBAAsB,GACtB,gBAAiB,GACjB,cAAe,GACf,OAAQ,WACR,GAAGA,EACH,cAAe,EACjB,EAEiB2B,GAAS,WAAWD,EAAQ,CAAE,KAAM,KAAM,CAAC,EAC5C,UAAU1B,CAAI,EAChC,CAMA,QAAS,CACP,OAAO,KAAK,MAAM,CACpB,CAMA,UAAW,CACT,OAAO,KAAK,MAAM,CACpB,CAMA,CAAC,OAAO,IAAI,4BAA4B,CAAC,GAAI,CAC3C,OAAI,KAAK,QACA,sBAAsB,KAAK,UAAU,KAAK,MAAM,CAAC,KAEjD,+BAA+B,KAAK,aAAa,IAE5D,CAMA,UAAW,CACT,OAAK,KAAK,QAEHvB,GAAiB,KAAK,OAAQ,KAAK,MAAM,EAFtB,GAG5B,CAMA,SAAU,CACR,OAAO,KAAK,SAAS,CACvB,CAOA,KAAKmD,EAAU,CACb,GAAI,CAAC,KAAK,QAAS,OAAO,KAE1B,IAAMxD,EAAMuB,EAAS,iBAAiBiC,CAAQ,EAC5CC,EAAS,CAAC,EAEZ,QAAWC,KAAK7D,IACV8D,GAAe3D,EAAI,OAAQ0D,CAAC,GAAKC,GAAe,KAAK,OAAQD,CAAC,KAChED,EAAOC,CAAC,EAAI1D,EAAI,IAAI0D,CAAC,EAAI,KAAK,IAAIA,CAAC,GAIvC,OAAO3D,GAAM,KAAM,CAAE,OAAQ0D,CAAO,EAAG,EAAI,CAC7C,CAOA,MAAMD,EAAU,CACd,GAAI,CAAC,KAAK,QAAS,OAAO,KAE1B,IAAMxD,EAAMuB,EAAS,iBAAiBiC,CAAQ,EAC9C,OAAO,KAAK,KAAKxD,EAAI,OAAO,CAAC,CAC/B,CASA,SAAS4D,EAAI,CACX,GAAI,CAAC,KAAK,QAAS,OAAO,KAC1B,IAAMH,EAAS,CAAC,EAChB,QAAWC,KAAK,OAAO,KAAK,KAAK,MAAM,EACrCD,EAAOC,CAAC,EAAIG,GAASD,EAAG,KAAK,OAAOF,CAAC,EAAGA,CAAC,CAAC,EAE5C,OAAO3D,GAAM,KAAM,CAAE,OAAQ0D,CAAO,EAAG,EAAI,CAC7C,CAUA,IAAIhD,EAAM,CACR,OAAO,KAAKc,EAAS,cAAcd,CAAI,CAAC,CAC1C,CASA,IAAIqD,EAAQ,CACV,GAAI,CAAC,KAAK,QAAS,OAAO,KAE1B,IAAMC,EAAQ,CAAE,GAAG,KAAK,OAAQ,GAAGhC,GAAgB+B,EAAQvC,EAAS,aAAa,CAAE,EACnF,OAAOxB,GAAM,KAAM,CAAE,OAAQgE,CAAM,CAAC,CACtC,CAOA,YAAY,CAAE,OAAAC,EAAQ,gBAAAC,EAAiB,mBAAAC,EAAoB,OAAA5D,CAAO,EAAI,CAAC,EAAG,CAExE,IAAMsB,EAAO,CAAE,IADH,KAAK,IAAI,MAAM,CAAE,OAAAoC,EAAQ,gBAAAC,CAAgB,CAAC,EAClC,OAAA3D,EAAQ,mBAAA4D,CAAmB,EAC/C,OAAOnE,GAAM,KAAM6B,CAAI,CACzB,CAUA,GAAGnB,EAAM,CACP,OAAO,KAAK,QAAU,KAAK,QAAQA,CAAI,EAAE,IAAIA,CAAI,EAAI,GACvD,CAiBA,WAAY,CACV,GAAI,CAAC,KAAK,QAAS,OAAO,KAC1B,IAAMF,EAAO,KAAK,SAAS,EAC3B,OAAAG,GAAgB,KAAK,OAAQH,CAAI,EAC1BR,GAAM,KAAM,CAAE,OAAQQ,CAAK,EAAG,EAAI,CAC3C,CAOA,SAAU,CACR,GAAI,CAAC,KAAK,QAAS,OAAO,KAC1B,IAAMA,EAAOY,IAAa,KAAK,UAAU,EAAE,WAAW,EAAE,SAAS,CAAC,EAClE,OAAOpB,GAAM,KAAM,CAAE,OAAQQ,CAAK,EAAG,EAAI,CAC3C,CAOA,WAAW4D,EAAO,CAChB,GAAI,CAAC,KAAK,QAAS,OAAO,KAE1B,GAAIA,EAAM,SAAW,EACnB,OAAO,KAGTA,EAAQA,EAAM,IAAKC,GAAM7C,EAAS,cAAc6C,CAAC,CAAC,EAElD,IAAMC,EAAQ,CAAC,EACbC,EAAc,CAAC,EACf/D,EAAO,KAAK,SAAS,EACnBgE,EAEJ,QAAWb,KAAK7D,GACd,GAAIsE,EAAM,QAAQT,CAAC,GAAK,EAAG,CACzBa,EAAWb,EAEX,IAAIc,EAAM,EAGV,QAAWC,KAAMH,EACfE,GAAO,KAAK,OAAOC,CAAE,EAAEf,CAAC,EAAIY,EAAYG,CAAE,EAC1CH,EAAYG,CAAE,EAAI,EAIhBxC,GAAS1B,EAAKmD,CAAC,CAAC,IAClBc,GAAOjE,EAAKmD,CAAC,GAKf,IAAMgB,EAAI,KAAK,MAAMF,CAAG,EACxBH,EAAMX,CAAC,EAAIgB,EACXJ,EAAYZ,CAAC,GAAKc,EAAM,IAAOE,EAAI,KAAQ,GAG7C,MAAWzC,GAAS1B,EAAKmD,CAAC,CAAC,IACzBY,EAAYZ,CAAC,EAAInD,EAAKmD,CAAC,GAM3B,QAAWrC,KAAOiD,EACZA,EAAYjD,CAAG,IAAM,IACvBgD,EAAME,CAAQ,GACZlD,IAAQkD,EAAWD,EAAYjD,CAAG,EAAIiD,EAAYjD,CAAG,EAAI,KAAK,OAAOkD,CAAQ,EAAElD,CAAG,GAIxF,OAAAX,GAAgB,KAAK,OAAQ2D,CAAK,EAC3BtE,GAAM,KAAM,CAAE,OAAQsE,CAAM,EAAG,EAAI,CAC5C,CAOA,YAAa,CACX,OAAK,KAAK,QACH,KAAK,QACV,QACA,SACA,QACA,OACA,QACA,UACA,UACA,cACF,EAV0B,IAW5B,CAOA,QAAS,CACP,GAAI,CAAC,KAAK,QAAS,OAAO,KAC1B,IAAMM,EAAU,CAAC,EACjB,QAAWjB,KAAK,OAAO,KAAK,KAAK,MAAM,EACrCiB,EAAQjB,CAAC,EAAI,KAAK,OAAOA,CAAC,IAAM,EAAI,EAAI,CAAC,KAAK,OAAOA,CAAC,EAExD,OAAO3D,GAAM,KAAM,CAAE,OAAQ4E,CAAQ,EAAG,EAAI,CAC9C,CAMA,IAAI,OAAQ,CACV,OAAO,KAAK,QAAU,KAAK,OAAO,OAAS,EAAI,GACjD,CAMA,IAAI,UAAW,CACb,OAAO,KAAK,QAAU,KAAK,OAAO,UAAY,EAAI,GACpD,CAMA,IAAI,QAAS,CACX,OAAO,KAAK,QAAU,KAAK,OAAO,QAAU,EAAI,GAClD,CAMA,IAAI,OAAQ,CACV,OAAO,KAAK,QAAU,KAAK,OAAO,OAAS,EAAI,GACjD,CAMA,IAAI,MAAO,CACT,OAAO,KAAK,QAAU,KAAK,OAAO,MAAQ,EAAI,GAChD,CAMA,IAAI,OAAQ,CACV,OAAO,KAAK,QAAU,KAAK,OAAO,OAAS,EAAI,GACjD,CAMA,IAAI,SAAU,CACZ,OAAO,KAAK,QAAU,KAAK,OAAO,SAAW,EAAI,GACnD,CAMA,IAAI,SAAU,CACZ,OAAO,KAAK,QAAU,KAAK,OAAO,SAAW,EAAI,GACnD,CAMA,IAAI,cAAe,CACjB,OAAO,KAAK,QAAU,KAAK,OAAO,cAAgB,EAAI,GACxD,CAOA,IAAI,SAAU,CACZ,OAAO,KAAK,UAAY,IAC1B,CAMA,IAAI,eAAgB,CAClB,OAAO,KAAK,QAAU,KAAK,QAAQ,OAAS,IAC9C,CAMA,IAAI,oBAAqB,CACvB,OAAO,KAAK,QAAU,KAAK,QAAQ,YAAc,IACnD,CAQA,OAAOC,EAAO,CAKZ,GAJI,CAAC,KAAK,SAAW,CAACA,EAAM,SAIxB,CAAC,KAAK,IAAI,OAAOA,EAAM,GAAG,EAC5B,MAAO,GAGT,SAASC,EAAGC,EAAIC,EAAI,CAElB,OAAID,IAAO,QAAaA,IAAO,EAAUC,IAAO,QAAaA,IAAO,EAC7DD,IAAOC,CAChB,CAEA,QAAWX,KAAKvE,GACd,GAAI,CAACgF,EAAG,KAAK,OAAOT,CAAC,EAAGQ,EAAM,OAAOR,CAAC,CAAC,EACrC,MAAO,GAGX,MAAO,EACT,CACF,ECr9BA,IAAMY,GAAU,mBAGhB,SAASC,IAAiBC,EAAOC,EAAK,CACpC,MAAI,CAACD,GAAS,CAACA,EAAM,QACZE,GAAS,QAAQ,0BAA0B,EACzC,CAACD,GAAO,CAACA,EAAI,QACfC,GAAS,QAAQ,wBAAwB,EACvCD,EAAMD,EACRE,GAAS,QACd,mBACA,qEAAqEF,EAAM,MAAM,CAAC,YAAYC,EAAI,MAAM,CAAC,EAC3G,EAEO,IAEX,CAcA,IAAqBC,GAArB,MAAqBC,CAAS,CAI5B,YAAYC,EAAQ,CAIlB,KAAK,EAAIA,EAAO,MAIhB,KAAK,EAAIA,EAAO,IAIhB,KAAK,QAAUA,EAAO,SAAW,KAIjC,KAAK,gBAAkB,EACzB,CAQA,OAAO,QAAQC,EAAQC,EAAc,KAAM,CACzC,GAAI,CAACD,EACH,MAAM,IAAIE,GAAqB,kDAAkD,EAGnF,IAAMC,EAAUH,aAAkBI,GAAUJ,EAAS,IAAII,GAAQJ,EAAQC,CAAW,EAEpF,GAAII,GAAS,eACX,MAAM,IAAIC,GAAqBH,CAAO,EAEtC,OAAO,IAAIL,EAAS,CAAE,QAAAK,CAAQ,CAAC,CAEnC,CAQA,OAAO,cAAcR,EAAOC,EAAK,CAC/B,IAAMW,EAAaC,GAAiBb,CAAK,EACvCc,EAAWD,GAAiBZ,CAAG,EAE3Bc,EAAgBhB,IAAiBa,EAAYE,CAAQ,EAE3D,OAAIC,GACK,IAAIZ,EAAS,CAClB,MAAOS,EACP,IAAKE,CACP,CAAC,CAIL,CAQA,OAAO,MAAMd,EAAOgB,EAAU,CAC5B,IAAMC,EAAMC,GAAS,iBAAiBF,CAAQ,EAC5CG,EAAKN,GAAiBb,CAAK,EAC7B,OAAOG,EAAS,cAAcgB,EAAIA,EAAG,KAAKF,CAAG,CAAC,CAChD,CAQA,OAAO,OAAOhB,EAAKe,EAAU,CAC3B,IAAMC,EAAMC,GAAS,iBAAiBF,CAAQ,EAC5CG,EAAKN,GAAiBZ,CAAG,EAC3B,OAAOE,EAAS,cAAcgB,EAAG,MAAMF,CAAG,EAAGE,CAAE,CACjD,CAUA,OAAO,QAAQC,EAAMC,EAAM,CACzB,GAAM,CAACC,EAAGC,CAAC,GAAKH,GAAQ,IAAI,MAAM,IAAK,CAAC,EACxC,GAAIE,GAAKC,EAAG,CACV,IAAIvB,EAAOwB,EACX,GAAI,CACFxB,EAAQyB,GAAS,QAAQH,EAAGD,CAAI,EAChCG,EAAexB,EAAM,OACvB,MAAY,CACVwB,EAAe,EACjB,CAEA,IAAIvB,EAAKyB,EACT,GAAI,CACFzB,EAAMwB,GAAS,QAAQF,EAAGF,CAAI,EAC9BK,EAAazB,EAAI,OACnB,MAAY,CACVyB,EAAa,EACf,CAEA,GAAIF,GAAgBE,EAClB,OAAOvB,EAAS,cAAcH,EAAOC,CAAG,EAG1C,GAAIuB,EAAc,CAChB,IAAMP,EAAMC,GAAS,QAAQK,EAAGF,CAAI,EACpC,GAAIJ,EAAI,QACN,OAAOd,EAAS,MAAMH,EAAOiB,CAAG,CAEpC,SAAWS,EAAY,CACrB,IAAMT,EAAMC,GAAS,QAAQI,EAAGD,CAAI,EACpC,GAAIJ,EAAI,QACN,OAAOd,EAAS,OAAOF,EAAKgB,CAAG,CAEnC,CACF,CACA,OAAOd,EAAS,QAAQ,aAAc,cAAciB,CAAI,+BAA+B,CACzF,CAOA,OAAO,WAAWO,EAAG,CACnB,OAAQA,GAAKA,EAAE,iBAAoB,EACrC,CAMA,IAAI,OAAQ,CACV,OAAO,KAAK,QAAU,KAAK,EAAI,IACjC,CAMA,IAAI,KAAM,CACR,OAAO,KAAK,QAAU,KAAK,EAAI,IACjC,CAMA,IAAI,SAAU,CACZ,OAAO,KAAK,gBAAkB,IAChC,CAMA,IAAI,eAAgB,CAClB,OAAO,KAAK,QAAU,KAAK,QAAQ,OAAS,IAC9C,CAMA,IAAI,oBAAqB,CACvB,OAAO,KAAK,QAAU,KAAK,QAAQ,YAAc,IACnD,CAOA,OAAOC,EAAO,eAAgB,CAC5B,OAAO,KAAK,QAAU,KAAK,WAAeA,CAAK,EAAE,IAAIA,CAAI,EAAI,GAC/D,CAWA,MAAMA,EAAO,eAAgBP,EAAM,CACjC,GAAI,CAAC,KAAK,QAAS,MAAO,KAC1B,IAAMrB,EAAQ,KAAK,MAAM,QAAQ4B,EAAMP,CAAI,EACvCpB,EACJ,OAAIoB,GAAM,eACRpB,EAAM,KAAK,IAAI,YAAY,CAAE,OAAQD,EAAM,MAAO,CAAC,EAEnDC,EAAM,KAAK,IAEbA,EAAMA,EAAI,QAAQ2B,EAAMP,CAAI,EACrB,KAAK,MAAMpB,EAAI,KAAKD,EAAO4B,CAAI,EAAE,IAAIA,CAAI,CAAC,GAAK3B,EAAI,QAAQ,IAAM,KAAK,IAAI,QAAQ,EAC3F,CAOA,QAAQ2B,EAAM,CACZ,OAAO,KAAK,QAAU,KAAK,QAAQ,GAAK,KAAK,EAAE,MAAM,CAAC,EAAE,QAAQ,KAAK,EAAGA,CAAI,EAAI,EAClF,CAMA,SAAU,CACR,OAAO,KAAK,EAAE,QAAQ,IAAM,KAAK,EAAE,QAAQ,CAC7C,CAOA,QAAQC,EAAU,CAChB,OAAK,KAAK,QACH,KAAK,EAAIA,EADU,EAE5B,CAOA,SAASA,EAAU,CACjB,OAAK,KAAK,QACH,KAAK,GAAKA,EADS,EAE5B,CAOA,SAASA,EAAU,CACjB,OAAK,KAAK,QACH,KAAK,GAAKA,GAAY,KAAK,EAAIA,EADZ,EAE5B,CASA,IAAI,CAAE,MAAA7B,EAAO,IAAAC,CAAI,EAAI,CAAC,EAAG,CACvB,OAAK,KAAK,QACHE,EAAS,cAAcH,GAAS,KAAK,EAAGC,GAAO,KAAK,CAAC,EADlC,IAE5B,CAOA,WAAW6B,EAAW,CACpB,GAAI,CAAC,KAAK,QAAS,MAAO,CAAC,EAC3B,IAAMC,EAASD,EACV,IAAIjB,EAAgB,EACpB,OAAQmB,GAAM,KAAK,SAASA,CAAC,CAAC,EAC9B,KAAK,CAACC,EAAGC,IAAMD,EAAE,SAAS,EAAIC,EAAE,SAAS,CAAC,EAC7CC,EAAU,CAAC,EACT,CAAE,EAAAb,CAAE,EAAI,KACVc,EAAI,EAEN,KAAOd,EAAI,KAAK,GAAG,CACjB,IAAMe,EAAQN,EAAOK,CAAC,GAAK,KAAK,EAC9BE,EAAO,CAACD,EAAQ,CAAC,KAAK,EAAI,KAAK,EAAIA,EACrCF,EAAQ,KAAKhC,EAAS,cAAcmB,EAAGgB,CAAI,CAAC,EAC5ChB,EAAIgB,EACJF,GAAK,CACP,CAEA,OAAOD,CACT,CAQA,QAAQnB,EAAU,CAChB,IAAMC,EAAMC,GAAS,iBAAiBF,CAAQ,EAE9C,GAAI,CAAC,KAAK,SAAW,CAACC,EAAI,SAAWA,EAAI,GAAG,cAAc,IAAM,EAC9D,MAAO,CAAC,EAGV,GAAI,CAAE,EAAAK,CAAE,EAAI,KACViB,EAAM,EACND,EAEIH,EAAU,CAAC,EACjB,KAAOb,EAAI,KAAK,GAAG,CACjB,IAAMe,EAAQ,KAAK,MAAM,KAAKpB,EAAI,SAAUuB,GAAMA,EAAID,CAAG,CAAC,EAC1DD,EAAO,CAACD,EAAQ,CAAC,KAAK,EAAI,KAAK,EAAIA,EACnCF,EAAQ,KAAKhC,EAAS,cAAcmB,EAAGgB,CAAI,CAAC,EAC5ChB,EAAIgB,EACJC,GAAO,CACT,CAEA,OAAOJ,CACT,CAOA,cAAcM,EAAe,CAC3B,OAAK,KAAK,QACH,KAAK,QAAQ,KAAK,OAAO,EAAIA,CAAa,EAAE,MAAM,EAAGA,CAAa,EAD/C,CAAC,CAE7B,CAOA,SAASC,EAAO,CACd,OAAO,KAAK,EAAIA,EAAM,GAAK,KAAK,EAAIA,EAAM,CAC5C,CAOA,WAAWA,EAAO,CAChB,OAAK,KAAK,QACH,CAAC,KAAK,GAAM,CAACA,EAAM,EADA,EAE5B,CAOA,SAASA,EAAO,CACd,OAAK,KAAK,QACH,CAACA,EAAM,GAAM,CAAC,KAAK,EADA,EAE5B,CAOA,QAAQA,EAAO,CACb,OAAK,KAAK,QACH,KAAK,GAAKA,EAAM,GAAK,KAAK,GAAKA,EAAM,EADlB,EAE5B,CAOA,OAAOA,EAAO,CACZ,MAAI,CAAC,KAAK,SAAW,CAACA,EAAM,QACnB,GAGF,KAAK,EAAE,OAAOA,EAAM,CAAC,GAAK,KAAK,EAAE,OAAOA,EAAM,CAAC,CACxD,CASA,aAAaA,EAAO,CAClB,GAAI,CAAC,KAAK,QAAS,OAAO,KAC1B,IAAMpB,EAAI,KAAK,EAAIoB,EAAM,EAAI,KAAK,EAAIA,EAAM,EAC1CnB,EAAI,KAAK,EAAImB,EAAM,EAAI,KAAK,EAAIA,EAAM,EAExC,OAAIpB,GAAKC,EACA,KAEApB,EAAS,cAAcmB,EAAGC,CAAC,CAEtC,CAQA,MAAMmB,EAAO,CACX,GAAI,CAAC,KAAK,QAAS,OAAO,KAC1B,IAAMpB,EAAI,KAAK,EAAIoB,EAAM,EAAI,KAAK,EAAIA,EAAM,EAC1CnB,EAAI,KAAK,EAAImB,EAAM,EAAI,KAAK,EAAIA,EAAM,EACxC,OAAOvC,EAAS,cAAcmB,EAAGC,CAAC,CACpC,CAQA,OAAO,MAAMoB,EAAW,CACtB,GAAM,CAACC,EAAOC,CAAK,EAAIF,EACpB,KAAK,CAACV,EAAGC,IAAMD,EAAE,EAAIC,EAAE,CAAC,EACxB,OACC,CAAC,CAACY,EAAOC,CAAO,EAAGC,IACZD,EAEMA,EAAQ,SAASC,CAAI,GAAKD,EAAQ,WAAWC,CAAI,EACnD,CAACF,EAAOC,EAAQ,MAAMC,CAAI,CAAC,EAE3B,CAACF,EAAM,OAAO,CAACC,CAAO,CAAC,EAAGC,CAAI,EAJ9B,CAACF,EAAOE,CAAI,EAOvB,CAAC,CAAC,EAAG,IAAI,CACX,EACF,OAAIH,GACFD,EAAM,KAAKC,CAAK,EAEXD,CACT,CAOA,OAAO,IAAID,EAAW,CACpB,IAAI3C,EAAQ,KACViD,EAAe,EACXd,EAAU,CAAC,EACfe,EAAOP,EAAU,IAAKP,GAAM,CAC1B,CAAE,KAAMA,EAAE,EAAG,KAAM,GAAI,EACvB,CAAE,KAAMA,EAAE,EAAG,KAAM,GAAI,CACzB,CAAC,EACDe,EAAY,MAAM,UAAU,OAAO,GAAGD,CAAI,EAC1CE,EAAMD,EAAU,KAAK,CAAC,EAAGjB,IAAM,EAAE,KAAOA,EAAE,IAAI,EAEhD,QAAWE,KAAKgB,EACdH,GAAgBb,EAAE,OAAS,IAAM,EAAI,GAEjCa,IAAiB,EACnBjD,EAAQoC,EAAE,MAENpC,GAAS,CAACA,GAAU,CAACoC,EAAE,MACzBD,EAAQ,KAAKhC,EAAS,cAAcH,EAAOoC,EAAE,IAAI,CAAC,EAGpDpC,EAAQ,MAIZ,OAAOG,EAAS,MAAMgC,CAAO,CAC/B,CAOA,cAAcQ,EAAW,CACvB,OAAOxC,EAAS,IAAI,CAAC,IAAI,EAAE,OAAOwC,CAAS,CAAC,EACzC,IAAKP,GAAM,KAAK,aAAaA,CAAC,CAAC,EAC/B,OAAQA,GAAMA,GAAK,CAACA,EAAE,QAAQ,CAAC,CACpC,CAMA,UAAW,CACT,OAAK,KAAK,QACH,IAAI,KAAK,EAAE,MAAM,CAAC,WAAM,KAAK,EAAE,MAAM,CAAC,IADnBtC,EAE5B,CAMA,CAAC,OAAO,IAAI,4BAA4B,CAAC,GAAI,CAC3C,OAAI,KAAK,QACA,qBAAqB,KAAK,EAAE,MAAM,CAAC,UAAU,KAAK,EAAE,MAAM,CAAC,KAE3D,+BAA+B,KAAK,aAAa,IAE5D,CAoBA,eAAeuD,EAAqBC,GAAYjC,EAAO,CAAC,EAAG,CACzD,OAAO,KAAK,QACRkC,GAAU,OAAO,KAAK,EAAE,IAAI,MAAMlC,CAAI,EAAGgC,CAAU,EAAE,eAAe,IAAI,EACxEvD,EACN,CAQA,MAAMuB,EAAM,CACV,OAAK,KAAK,QACH,GAAG,KAAK,EAAE,MAAMA,CAAI,CAAC,IAAI,KAAK,EAAE,MAAMA,CAAI,CAAC,GADxBvB,EAE5B,CAQA,WAAY,CACV,OAAK,KAAK,QACH,GAAG,KAAK,EAAE,UAAU,CAAC,IAAI,KAAK,EAAE,UAAU,CAAC,GADxBA,EAE5B,CASA,UAAUuB,EAAM,CACd,OAAK,KAAK,QACH,GAAG,KAAK,EAAE,UAAUA,CAAI,CAAC,IAAI,KAAK,EAAE,UAAUA,CAAI,CAAC,GADhCvB,EAE5B,CAaA,SAAS0D,EAAY,CAAE,UAAAC,EAAY,UAAM,EAAI,CAAC,EAAG,CAC/C,OAAK,KAAK,QACH,GAAG,KAAK,EAAE,SAASD,CAAU,CAAC,GAAGC,CAAS,GAAG,KAAK,EAAE,SAASD,CAAU,CAAC,GADrD1D,EAE5B,CAcA,WAAW8B,EAAMP,EAAM,CACrB,OAAK,KAAK,QAGH,KAAK,EAAE,KAAK,KAAK,EAAGO,EAAMP,CAAI,EAF5BH,GAAS,QAAQ,KAAK,aAAa,CAG9C,CASA,aAAawC,EAAO,CAClB,OAAOvD,EAAS,cAAcuD,EAAM,KAAK,CAAC,EAAGA,EAAM,KAAK,CAAC,CAAC,CAC5D,CACF,ECroBA,IAAqBC,GAArB,KAA0B,CAMxB,OAAO,OAAOC,EAAOC,GAAS,YAAa,CACzC,IAAMC,EAAQC,GAAS,IAAI,EAAE,QAAQH,CAAI,EAAE,IAAI,CAAE,MAAO,EAAG,CAAC,EAE5D,MAAO,CAACA,EAAK,aAAeE,EAAM,SAAWA,EAAM,IAAI,CAAE,MAAO,CAAE,CAAC,EAAE,MACvE,CAOA,OAAO,gBAAgBF,EAAM,CAC3B,OAAOI,GAAS,YAAYJ,CAAI,CAClC,CAgBA,OAAO,cAAcK,EAAO,CAC1B,OAAOC,GAAcD,EAAOJ,GAAS,WAAW,CAClD,CASA,OAAO,eAAe,CAAE,OAAAM,EAAS,KAAM,OAAAC,EAAS,IAAK,EAAI,CAAC,EAAG,CAC3D,OAAQA,GAAUC,GAAO,OAAOF,CAAM,GAAG,eAAe,CAC1D,CAUA,OAAO,0BAA0B,CAAE,OAAAA,EAAS,KAAM,OAAAC,EAAS,IAAK,EAAI,CAAC,EAAG,CACtE,OAAQA,GAAUC,GAAO,OAAOF,CAAM,GAAG,sBAAsB,CACjE,CASA,OAAO,mBAAmB,CAAE,OAAAA,EAAS,KAAM,OAAAC,EAAS,IAAK,EAAI,CAAC,EAAG,CAE/D,OAAQA,GAAUC,GAAO,OAAOF,CAAM,GAAG,eAAe,EAAE,MAAM,CAClE,CAmBA,OAAO,OACLG,EAAS,OACT,CAAE,OAAAH,EAAS,KAAM,gBAAAI,EAAkB,KAAM,OAAAH,EAAS,KAAM,eAAAI,EAAiB,SAAU,EAAI,CAAC,EACxF,CACA,OAAQJ,GAAUC,GAAO,OAAOF,EAAQI,EAAiBC,CAAc,GAAG,OAAOF,CAAM,CACzF,CAeA,OAAO,aACLA,EAAS,OACT,CAAE,OAAAH,EAAS,KAAM,gBAAAI,EAAkB,KAAM,OAAAH,EAAS,KAAM,eAAAI,EAAiB,SAAU,EAAI,CAAC,EACxF,CACA,OAAQJ,GAAUC,GAAO,OAAOF,EAAQI,EAAiBC,CAAc,GAAG,OAAOF,EAAQ,EAAI,CAC/F,CAgBA,OAAO,SAASA,EAAS,OAAQ,CAAE,OAAAH,EAAS,KAAM,gBAAAI,EAAkB,KAAM,OAAAH,EAAS,IAAK,EAAI,CAAC,EAAG,CAC9F,OAAQA,GAAUC,GAAO,OAAOF,EAAQI,EAAiB,IAAI,GAAG,SAASD,CAAM,CACjF,CAcA,OAAO,eACLA,EAAS,OACT,CAAE,OAAAH,EAAS,KAAM,gBAAAI,EAAkB,KAAM,OAAAH,EAAS,IAAK,EAAI,CAAC,EAC5D,CACA,OAAQA,GAAUC,GAAO,OAAOF,EAAQI,EAAiB,IAAI,GAAG,SAASD,EAAQ,EAAI,CACvF,CAUA,OAAO,UAAU,CAAE,OAAAH,EAAS,IAAK,EAAI,CAAC,EAAG,CACvC,OAAOE,GAAO,OAAOF,CAAM,EAAE,UAAU,CACzC,CAYA,OAAO,KAAKG,EAAS,QAAS,CAAE,OAAAH,EAAS,IAAK,EAAI,CAAC,EAAG,CACpD,OAAOE,GAAO,OAAOF,EAAQ,KAAM,SAAS,EAAE,KAAKG,CAAM,CAC3D,CAWA,OAAO,UAAW,CAChB,MAAO,CAAE,SAAUG,GAAY,EAAG,WAAYC,GAAkB,CAAE,CACpE,CACF,EC1MA,SAASC,GAAQC,EAASC,EAAO,CAC/B,IAAMC,EAAeC,GAAOA,EAAG,MAAM,EAAG,CAAE,cAAe,EAAK,CAAC,EAAE,QAAQ,KAAK,EAAE,QAAQ,EACtFC,EAAKF,EAAYD,CAAK,EAAIC,EAAYF,CAAO,EAC/C,OAAO,KAAK,MAAMK,GAAS,WAAWD,CAAE,EAAE,GAAG,MAAM,CAAC,CACtD,CAEA,SAASE,IAAeC,EAAQN,EAAOO,EAAO,CAC5C,IAAMC,EAAU,CACd,CAAC,QAAS,CAAC,EAAGC,IAAMA,EAAE,KAAO,EAAE,IAAI,EACnC,CAAC,WAAY,CAAC,EAAGA,IAAMA,EAAE,QAAU,EAAE,SAAWA,EAAE,KAAO,EAAE,MAAQ,CAAC,EACpE,CAAC,SAAU,CAAC,EAAGA,IAAMA,EAAE,MAAQ,EAAE,OAASA,EAAE,KAAO,EAAE,MAAQ,EAAE,EAC/D,CACE,QACA,CAAC,EAAGA,IAAM,CACR,IAAMC,EAAOZ,GAAQ,EAAGW,CAAC,EACzB,OAAQC,EAAQA,EAAO,GAAM,CAC/B,CACF,EACA,CAAC,OAAQZ,EAAO,CAClB,EAEMa,EAAU,CAAC,EACXZ,EAAUO,EACZM,EAAaC,EAUjB,OAAW,CAACC,EAAMC,CAAM,IAAKP,EACvBD,EAAM,QAAQO,CAAI,GAAK,IACzBF,EAAcE,EAEdH,EAAQG,CAAI,EAAIC,EAAOT,EAAQN,CAAK,EACpCa,EAAYd,EAAQ,KAAKY,CAAO,EAE5BE,EAAYb,GAEdW,EAAQG,CAAI,IACZR,EAASP,EAAQ,KAAKY,CAAO,EAKzBL,EAASN,IAEXa,EAAYP,EAEZK,EAAQG,CAAI,IACZR,EAASP,EAAQ,KAAKY,CAAO,IAG/BL,EAASO,GAKf,MAAO,CAACP,EAAQK,EAASE,EAAWD,CAAW,CACjD,CAEe,SAARI,GAAkBjB,EAASC,EAAOO,EAAOU,EAAM,CACpD,GAAI,CAACX,EAAQK,EAASE,EAAWD,CAAW,EAAIP,IAAeN,EAASC,EAAOO,CAAK,EAE9EW,EAAkBlB,EAAQM,EAE1Ba,EAAkBZ,EAAM,OAC3Ba,GAAM,CAAC,QAAS,UAAW,UAAW,cAAc,EAAE,QAAQA,CAAC,GAAK,CACvE,EAEID,EAAgB,SAAW,IACzBN,EAAYb,IACda,EAAYP,EAAO,KAAK,CAAE,CAACM,CAAW,EAAG,CAAE,CAAC,GAG1CC,IAAcP,IAChBK,EAAQC,CAAW,GAAKD,EAAQC,CAAW,GAAK,GAAKM,GAAmBL,EAAYP,KAIxF,IAAMe,EAAWjB,GAAS,WAAWO,EAASM,CAAI,EAElD,OAAIE,EAAgB,OAAS,EACpBf,GAAS,WAAWc,EAAiBD,CAAI,EAC7C,QAAQ,GAAGE,CAAe,EAC1B,KAAKE,CAAQ,EAETA,CAEX,CCtFA,IAAMC,IAAc,oDAEpB,SAASC,GAAQC,EAAOC,EAAQC,GAAMA,EAAG,CACvC,MAAO,CAAE,MAAAF,EAAO,MAAO,CAAC,CAACG,CAAC,IAAMF,EAAKG,GAAYD,CAAC,CAAC,CAAE,CACvD,CAEA,IAAME,IAAO,OACPC,GAAc,KAAKD,GAAI,IACvBE,GAAoB,IAAI,OAAOD,GAAa,GAAG,EAErD,SAASE,IAAaL,EAAG,CAGvB,OAAOA,EAAE,QAAQ,MAAO,MAAM,EAAE,QAAQI,GAAmBD,EAAW,CACxE,CAEA,SAASG,GAAqBN,EAAG,CAC/B,OAAOA,EACJ,QAAQ,MAAO,EAAE,EACjB,QAAQI,GAAmB,GAAG,EAC9B,YAAY,CACjB,CAEA,SAASG,GAAMC,EAASC,EAAY,CAClC,OAAID,IAAY,KACP,KAEA,CACL,MAAO,OAAOA,EAAQ,IAAIH,GAAY,EAAE,KAAK,GAAG,CAAC,EACjD,MAAO,CAAC,CAACL,CAAC,IACRQ,EAAQ,UAAWT,GAAMO,GAAqBN,CAAC,IAAMM,GAAqBP,CAAC,CAAC,EAAIU,CACpF,CAEJ,CAEA,SAASC,GAAOb,EAAOc,EAAQ,CAC7B,MAAO,CAAE,MAAAd,EAAO,MAAO,CAAC,CAAC,CAAEe,EAAGC,CAAC,IAAMC,GAAaF,EAAGC,CAAC,EAAG,OAAAF,CAAO,CAClE,CAEA,SAASI,GAAOlB,EAAO,CACrB,MAAO,CAAE,MAAAA,EAAO,MAAO,CAAC,CAACG,CAAC,IAAMA,CAAE,CACpC,CAEA,SAASgB,IAAYC,EAAO,CAC1B,OAAOA,EAAM,QAAQ,8BAA+B,MAAM,CAC5D,CAMA,SAASC,IAAaC,EAAOC,EAAK,CAChC,IAAMC,EAAMC,GAAWF,CAAG,EACxBG,EAAMD,GAAWF,EAAK,KAAK,EAC3BI,EAAQF,GAAWF,EAAK,KAAK,EAC7BK,EAAOH,GAAWF,EAAK,KAAK,EAC5BM,EAAMJ,GAAWF,EAAK,KAAK,EAC3BO,EAAWL,GAAWF,EAAK,OAAO,EAClCQ,EAAaN,GAAWF,EAAK,OAAO,EACpCS,EAAWP,GAAWF,EAAK,OAAO,EAClCU,EAAYR,GAAWF,EAAK,OAAO,EACnCW,EAAYT,GAAWF,EAAK,OAAO,EACnCY,EAAYV,GAAWF,EAAK,OAAO,EACnCa,EAAWC,IAAO,CAAE,MAAO,OAAOlB,IAAYkB,EAAE,GAAG,CAAC,EAAG,MAAO,CAAC,CAAClC,CAAC,IAAMA,EAAG,QAAS,EAAK,GA4HpFmC,GA3HOD,GAAM,CACf,GAAIf,EAAM,QACR,OAAOc,EAAQC,CAAC,EAElB,OAAQA,EAAE,IAAK,CAEb,IAAK,IACH,OAAO3B,GAAMa,EAAI,KAAK,OAAO,EAAG,CAAC,EACnC,IAAK,KACH,OAAOb,GAAMa,EAAI,KAAK,MAAM,EAAG,CAAC,EAElC,IAAK,IACH,OAAOxB,GAAQiC,CAAQ,EACzB,IAAK,KACH,OAAOjC,GAAQmC,EAAWK,EAAc,EAC1C,IAAK,OACH,OAAOxC,GAAQ6B,CAAI,EACrB,IAAK,QACH,OAAO7B,GAAQoC,CAAS,EAC1B,IAAK,SACH,OAAOpC,GAAQ8B,CAAG,EAEpB,IAAK,IACH,OAAO9B,GAAQ+B,CAAQ,EACzB,IAAK,KACH,OAAO/B,GAAQ2B,CAAG,EACpB,IAAK,MACH,OAAOhB,GAAMa,EAAI,OAAO,QAAS,EAAI,EAAG,CAAC,EAC3C,IAAK,OACH,OAAOb,GAAMa,EAAI,OAAO,OAAQ,EAAI,EAAG,CAAC,EAC1C,IAAK,IACH,OAAOxB,GAAQ+B,CAAQ,EACzB,IAAK,KACH,OAAO/B,GAAQ2B,CAAG,EACpB,IAAK,MACH,OAAOhB,GAAMa,EAAI,OAAO,QAAS,EAAK,EAAG,CAAC,EAC5C,IAAK,OACH,OAAOb,GAAMa,EAAI,OAAO,OAAQ,EAAK,EAAG,CAAC,EAE3C,IAAK,IACH,OAAOxB,GAAQ+B,CAAQ,EACzB,IAAK,KACH,OAAO/B,GAAQ2B,CAAG,EAEpB,IAAK,IACH,OAAO3B,GAAQgC,CAAU,EAC3B,IAAK,MACH,OAAOhC,GAAQ4B,CAAK,EAEtB,IAAK,KACH,OAAO5B,GAAQ2B,CAAG,EACpB,IAAK,IACH,OAAO3B,GAAQ+B,CAAQ,EACzB,IAAK,KACH,OAAO/B,GAAQ2B,CAAG,EACpB,IAAK,IACH,OAAO3B,GAAQ+B,CAAQ,EACzB,IAAK,KACH,OAAO/B,GAAQ2B,CAAG,EACpB,IAAK,IACH,OAAO3B,GAAQ+B,CAAQ,EACzB,IAAK,IACH,OAAO/B,GAAQ+B,CAAQ,EACzB,IAAK,KACH,OAAO/B,GAAQ2B,CAAG,EACpB,IAAK,IACH,OAAO3B,GAAQ+B,CAAQ,EACzB,IAAK,KACH,OAAO/B,GAAQ2B,CAAG,EACpB,IAAK,IACH,OAAO3B,GAAQgC,CAAU,EAC3B,IAAK,MACH,OAAOhC,GAAQ4B,CAAK,EACtB,IAAK,IACH,OAAOT,GAAOe,CAAS,EACzB,IAAK,KACH,OAAOf,GAAOY,CAAQ,EACxB,IAAK,MACH,OAAO/B,GAAQyB,CAAG,EAEpB,IAAK,IACH,OAAOd,GAAMa,EAAI,UAAU,EAAG,CAAC,EAEjC,IAAK,OACH,OAAOxB,GAAQ6B,CAAI,EACrB,IAAK,KACH,OAAO7B,GAAQmC,EAAWK,EAAc,EAE1C,IAAK,IACH,OAAOxC,GAAQ+B,CAAQ,EACzB,IAAK,KACH,OAAO/B,GAAQ2B,CAAG,EAEpB,IAAK,IACL,IAAK,IACH,OAAO3B,GAAQyB,CAAG,EACpB,IAAK,MACH,OAAOd,GAAMa,EAAI,SAAS,QAAS,EAAK,EAAG,CAAC,EAC9C,IAAK,OACH,OAAOb,GAAMa,EAAI,SAAS,OAAQ,EAAK,EAAG,CAAC,EAC7C,IAAK,MACH,OAAOb,GAAMa,EAAI,SAAS,QAAS,EAAI,EAAG,CAAC,EAC7C,IAAK,OACH,OAAOb,GAAMa,EAAI,SAAS,OAAQ,EAAI,EAAG,CAAC,EAE5C,IAAK,IACL,IAAK,KACH,OAAOV,GAAO,IAAI,OAAO,QAAQiB,EAAS,MAAM,SAASJ,EAAI,MAAM,KAAK,EAAG,CAAC,EAC9E,IAAK,MACH,OAAOb,GAAO,IAAI,OAAO,QAAQiB,EAAS,MAAM,KAAKJ,EAAI,MAAM,IAAI,EAAG,CAAC,EAGzE,IAAK,IACH,OAAOR,GAAO,oBAAoB,EAGpC,IAAK,IACH,OAAOA,GAAO,WAAW,EAC3B,QACE,OAAOkB,EAAQC,CAAC,CACpB,CACF,GAEmBf,CAAK,GAAK,CAC7B,cAAexB,GACjB,EAEA,OAAAwC,EAAK,MAAQhB,EAENgB,CACT,CAEA,IAAME,IAA0B,CAC9B,KAAM,CACJ,UAAW,KACX,QAAS,OACX,EACA,MAAO,CACL,QAAS,IACT,UAAW,KACX,MAAO,MACP,KAAM,MACR,EACA,IAAK,CACH,QAAS,IACT,UAAW,IACb,EACA,QAAS,CACP,MAAO,MACP,KAAM,MACR,EACA,UAAW,IACX,UAAW,IACX,OAAQ,CACN,QAAS,IACT,UAAW,IACb,EACA,OAAQ,CACN,QAAS,IACT,UAAW,IACb,EACA,OAAQ,CACN,QAAS,IACT,UAAW,IACb,EACA,OAAQ,CACN,QAAS,IACT,UAAW,IACb,EACA,aAAc,CACZ,KAAM,QACN,MAAO,KACT,CACF,EAEA,SAASC,IAAaC,EAAMC,EAAYC,EAAc,CACpD,GAAM,CAAE,KAAAC,EAAM,MAAAzB,CAAM,EAAIsB,EAExB,GAAIG,IAAS,UAAW,CACtB,IAAMC,EAAU,QAAQ,KAAK1B,CAAK,EAClC,MAAO,CACL,QAAS,CAAC0B,EACV,IAAKA,EAAU,IAAM1B,CACvB,CACF,CAEA,IAAM2B,EAAQJ,EAAWE,CAAI,EAKzBG,EAAaH,EACbA,IAAS,SACPF,EAAW,QAAU,KACvBK,EAAaL,EAAW,OAAS,SAAW,SACnCA,EAAW,WAAa,KAC7BA,EAAW,YAAc,OAASA,EAAW,YAAc,MAC7DK,EAAa,SAEbA,EAAa,SAKfA,EAAaJ,EAAa,OAAS,SAAW,UAGlD,IAAIK,EAAMT,IAAwBQ,CAAU,EAK5C,GAJI,OAAOC,GAAQ,WACjBA,EAAMA,EAAIF,CAAK,GAGbE,EACF,MAAO,CACL,QAAS,GACT,IAAAA,CACF,CAIJ,CAEA,SAASC,IAAWC,EAAO,CAEzB,MAAO,CAAC,IADGA,EAAM,IAAKC,GAAMA,EAAE,KAAK,EAAE,OAAO,CAACC,EAAGC,IAAM,GAAGD,CAAC,IAAIC,EAAE,MAAM,IAAK,EAAE,CAC/D,IAAKH,CAAK,CAC1B,CAEA,SAASI,IAAMC,EAAOxD,EAAOyD,EAAU,CACrC,IAAMC,EAAUF,EAAM,MAAMxD,CAAK,EAEjC,GAAI0D,EAAS,CACX,IAAMC,EAAM,CAAC,EACTC,EAAa,EACjB,QAAW1D,KAAKuD,EACd,GAAII,GAAeJ,EAAUvD,CAAC,EAAG,CAC/B,IAAMa,EAAI0C,EAASvD,CAAC,EAClBY,EAASC,EAAE,OAASA,EAAE,OAAS,EAAI,EACjC,CAACA,EAAE,SAAWA,EAAE,QAClB4C,EAAI5C,EAAE,MAAM,IAAI,CAAC,CAAC,EAAIA,EAAE,MAAM2C,EAAQ,MAAME,EAAYA,EAAa9C,CAAM,CAAC,GAE9E8C,GAAc9C,CAChB,CAEF,MAAO,CAAC4C,EAASC,CAAG,CACtB,KACE,OAAO,CAACD,EAAS,CAAC,CAAC,CAEvB,CAEA,SAASI,IAAoBJ,EAAS,CACpC,IAAMK,EAAWzC,GAAU,CACzB,OAAQA,EAAO,CACb,IAAK,IACH,MAAO,cACT,IAAK,IACH,MAAO,SACT,IAAK,IACH,MAAO,SACT,IAAK,IACL,IAAK,IACH,MAAO,OACT,IAAK,IACH,MAAO,MACT,IAAK,IACH,MAAO,UACT,IAAK,IACL,IAAK,IACH,MAAO,QACT,IAAK,IACH,MAAO,OACT,IAAK,IACL,IAAK,IACH,MAAO,UACT,IAAK,IACH,MAAO,aACT,IAAK,IACH,MAAO,WACT,IAAK,IACH,MAAO,UACT,QACE,OAAO,IACX,CACF,EAEI0C,EAAO,KACPC,EACJ,OAAKC,GAAYR,EAAQ,CAAC,IACxBM,EAAOG,GAAS,OAAOT,EAAQ,CAAC,GAG7BQ,GAAYR,EAAQ,CAAC,IACnBM,IACHA,EAAO,IAAII,GAAgBV,EAAQ,CAAC,GAEtCO,EAAiBP,EAAQ,GAGtBQ,GAAYR,EAAQ,CAAC,IACxBA,EAAQ,GAAKA,EAAQ,EAAI,GAAK,EAAI,GAG/BQ,GAAYR,EAAQ,CAAC,IACpBA,EAAQ,EAAI,IAAMA,EAAQ,IAAM,EAClCA,EAAQ,GAAK,GACJA,EAAQ,IAAM,IAAMA,EAAQ,IAAM,IAC3CA,EAAQ,EAAI,IAIZA,EAAQ,IAAM,GAAKA,EAAQ,IAC7BA,EAAQ,EAAI,CAACA,EAAQ,GAGlBQ,GAAYR,EAAQ,CAAC,IACxBA,EAAQ,EAAIW,GAAYX,EAAQ,CAAC,GAY5B,CATM,OAAO,KAAKA,CAAO,EAAE,OAAO,CAACJ,EAAGgB,IAAM,CACjD,IAAMjB,EAAIU,EAAQO,CAAC,EACnB,OAAIjB,IACFC,EAAED,CAAC,EAAIK,EAAQY,CAAC,GAGXhB,CACT,EAAG,CAAC,CAAC,EAESU,EAAMC,CAAc,CACpC,CAEA,IAAIM,GAAqB,KAEzB,SAASC,KAAmB,CAC1B,OAAKD,KACHA,GAAqBE,GAAS,WAAW,aAAa,GAGjDF,EACT,CAEA,SAASG,IAAsBpD,EAAOqD,EAAQ,CAC5C,GAAIrD,EAAM,QACR,OAAOA,EAGT,IAAMqB,EAAaiC,GAAU,uBAAuBtD,EAAM,GAAG,EACvDuD,EAASC,GAAmBnC,EAAYgC,CAAM,EAEpD,OAAIE,GAAU,MAAQA,EAAO,SAAS,MAAS,EACtCvD,EAGFuD,CACT,CAEO,SAASE,GAAkBF,EAAQF,EAAQ,CAChD,OAAO,MAAM,UAAU,OAAO,GAAGE,EAAO,IAAKxC,GAAMqC,IAAsBrC,EAAGsC,CAAM,CAAC,CAAC,CACtF,CAMO,IAAMK,GAAN,KAAkB,CACvB,YAAYL,EAAQM,EAAQ,CAO1B,GANA,KAAK,OAASN,EACd,KAAK,OAASM,EACd,KAAK,OAASF,GAAkBH,GAAU,YAAYK,CAAM,EAAGN,CAAM,EACrE,KAAK,MAAQ,KAAK,OAAO,IAAKtC,GAAMhB,IAAagB,EAAGsC,CAAM,CAAC,EAC3D,KAAK,kBAAoB,KAAK,MAAM,KAAMtC,GAAMA,EAAE,aAAa,EAE3D,CAAC,KAAK,kBAAmB,CAC3B,GAAM,CAAC6C,EAAazB,CAAQ,EAAIP,IAAW,KAAK,KAAK,EACrD,KAAK,MAAQ,OAAOgC,EAAa,GAAG,EACpC,KAAK,SAAWzB,CAClB,CACF,CAEA,kBAAkBD,EAAO,CACvB,GAAK,KAAK,QAEH,CACL,GAAM,CAAC2B,EAAYzB,CAAO,EAAIH,IAAMC,EAAO,KAAK,MAAO,KAAK,QAAQ,EAClE,CAAC4B,EAAQpB,EAAMC,CAAc,EAAIP,EAC7BI,IAAoBJ,CAAO,EAC3B,CAAC,KAAM,KAAM,MAAS,EAC5B,GAAIG,GAAeH,EAAS,GAAG,GAAKG,GAAeH,EAAS,GAAG,EAC7D,MAAM,IAAI2B,GACR,uDACF,EAEF,MAAO,CACL,MAAA7B,EACA,OAAQ,KAAK,OACb,MAAO,KAAK,MACZ,WAAA2B,EACA,QAAAzB,EACA,OAAA0B,EACA,KAAApB,EACA,eAAAC,CACF,CACF,KArBE,OAAO,CAAE,MAAAT,EAAO,OAAQ,KAAK,OAAQ,cAAe,KAAK,aAAc,CAsB3E,CAEA,IAAI,SAAU,CACZ,MAAO,CAAC,KAAK,iBACf,CAEA,IAAI,eAAgB,CAClB,OAAO,KAAK,kBAAoB,KAAK,kBAAkB,cAAgB,IACzE,CACF,EAEO,SAAS8B,GAAkBX,EAAQnB,EAAOyB,EAAQ,CAEvD,OADe,IAAID,GAAYL,EAAQM,CAAM,EAC/B,kBAAkBzB,CAAK,CACvC,CAEO,SAAS+B,GAAgBZ,EAAQnB,EAAOyB,EAAQ,CACrD,GAAM,CAAE,OAAAG,EAAQ,KAAApB,EAAM,eAAAC,EAAgB,cAAAuB,CAAc,EAAIF,GAAkBX,EAAQnB,EAAOyB,CAAM,EAC/F,MAAO,CAACG,EAAQpB,EAAMC,EAAgBuB,CAAa,CACrD,CAEO,SAASV,GAAmBnC,EAAYgC,EAAQ,CACrD,GAAI,CAAChC,EACH,OAAO,KAIT,IAAM8C,EADYb,GAAU,OAAOD,EAAQhC,CAAU,EAChC,YAAY6B,IAAiB,CAAC,EAC7CkB,EAAQD,EAAG,cAAc,EACzB7C,EAAe6C,EAAG,gBAAgB,EACxC,OAAOC,EAAM,IAAKC,GAAMlD,IAAakD,EAAGhD,EAAYC,CAAY,CAAC,CACnE,CCncA,IAAMgD,GAAU,mBACVC,GAAW,OAEjB,SAASC,GAAgBC,EAAM,CAC7B,OAAO,IAAIC,GAAQ,mBAAoB,aAAaD,EAAK,IAAI,oBAAoB,CACnF,CAMA,SAASE,GAAuBC,EAAI,CAClC,OAAIA,EAAG,WAAa,OAClBA,EAAG,SAAWC,GAAgBD,EAAG,CAAC,GAE7BA,EAAG,QACZ,CAKA,SAASE,GAA4BF,EAAI,CACvC,OAAIA,EAAG,gBAAkB,OACvBA,EAAG,cAAgBC,GACjBD,EAAG,EACHA,EAAG,IAAI,sBAAsB,EAC7BA,EAAG,IAAI,eAAe,CACxB,GAEKA,EAAG,aACZ,CAIA,SAASG,GAAMC,EAAMC,EAAM,CACzB,IAAMC,EAAU,CACd,GAAIF,EAAK,GACT,KAAMA,EAAK,KACX,EAAGA,EAAK,EACR,EAAGA,EAAK,EACR,IAAKA,EAAK,IACV,QAASA,EAAK,OAChB,EACA,OAAO,IAAIG,GAAS,CAAE,GAAGD,EAAS,GAAGD,EAAM,IAAKC,CAAQ,CAAC,CAC3D,CAIA,SAASE,GAAUC,EAASC,EAAGC,EAAI,CAEjC,IAAIC,EAAWH,EAAUC,EAAI,GAAK,IAG5BG,EAAKF,EAAG,OAAOC,CAAQ,EAG7B,GAAIF,IAAMG,EACR,MAAO,CAACD,EAAUF,CAAC,EAIrBE,IAAaC,EAAKH,GAAK,GAAK,IAG5B,IAAMI,EAAKH,EAAG,OAAOC,CAAQ,EAC7B,OAAIC,IAAOC,EACF,CAACF,EAAUC,CAAE,EAIf,CAACJ,EAAU,KAAK,IAAII,EAAIC,CAAE,EAAI,GAAK,IAAM,KAAK,IAAID,EAAIC,CAAE,CAAC,CAClE,CAGA,SAASC,GAAQC,EAAIC,EAAQ,CAC3BD,GAAMC,EAAS,GAAK,IAEpB,IAAMC,EAAI,IAAI,KAAKF,CAAE,EAErB,MAAO,CACL,KAAME,EAAE,eAAe,EACvB,MAAOA,EAAE,YAAY,EAAI,EACzB,IAAKA,EAAE,WAAW,EAClB,KAAMA,EAAE,YAAY,EACpB,OAAQA,EAAE,cAAc,EACxB,OAAQA,EAAE,cAAc,EACxB,YAAaA,EAAE,mBAAmB,CACpC,CACF,CAGA,SAASC,GAAQC,EAAKH,EAAQpB,EAAM,CAClC,OAAOW,GAAUa,GAAaD,CAAG,EAAGH,EAAQpB,CAAI,CAClD,CAGA,SAASyB,GAAWlB,EAAMmB,EAAK,CAC7B,IAAMC,EAAOpB,EAAK,EAChBqB,EAAOrB,EAAK,EAAE,KAAO,KAAK,MAAMmB,EAAI,KAAK,EACzCG,EAAQtB,EAAK,EAAE,MAAQ,KAAK,MAAMmB,EAAI,MAAM,EAAI,KAAK,MAAMA,EAAI,QAAQ,EAAI,EAC3EI,EAAI,CACF,GAAGvB,EAAK,EACR,KAAAqB,EACA,MAAAC,EACA,IACE,KAAK,IAAItB,EAAK,EAAE,IAAKwB,GAAYH,EAAMC,CAAK,CAAC,EAC7C,KAAK,MAAMH,EAAI,IAAI,EACnB,KAAK,MAAMA,EAAI,KAAK,EAAI,CAC5B,EACAM,EAAcC,GAAS,WAAW,CAChC,MAAOP,EAAI,MAAQ,KAAK,MAAMA,EAAI,KAAK,EACvC,SAAUA,EAAI,SAAW,KAAK,MAAMA,EAAI,QAAQ,EAChD,OAAQA,EAAI,OAAS,KAAK,MAAMA,EAAI,MAAM,EAC1C,MAAOA,EAAI,MAAQ,KAAK,MAAMA,EAAI,KAAK,EACvC,KAAMA,EAAI,KAAO,KAAK,MAAMA,EAAI,IAAI,EACpC,MAAOA,EAAI,MACX,QAASA,EAAI,QACb,QAASA,EAAI,QACb,aAAcA,EAAI,YACpB,CAAC,EAAE,GAAG,cAAc,EACpBd,EAAUY,GAAaM,CAAC,EAEtB,CAACX,EAAIN,CAAC,EAAIF,GAAUC,EAASe,EAAMpB,EAAK,IAAI,EAEhD,OAAIyB,IAAgB,IAClBb,GAAMa,EAENnB,EAAIN,EAAK,KAAK,OAAOY,CAAE,GAGlB,CAAE,GAAAA,EAAI,EAAAN,CAAE,CACjB,CAIA,SAASqB,GAAoBC,EAAQC,EAAYC,EAAMC,EAAQC,EAAMC,EAAgB,CACnF,GAAM,CAAE,QAAAC,EAAS,KAAAzC,CAAK,EAAIqC,EAC1B,GAAKF,GAAU,OAAO,KAAKA,CAAM,EAAE,SAAW,GAAMC,EAAY,CAC9D,IAAMM,EAAqBN,GAAcpC,EACvCO,EAAOG,GAAS,WAAWyB,EAAQ,CACjC,GAAGE,EACH,KAAMK,EACN,eAAAF,CACF,CAAC,EACH,OAAOC,EAAUlC,EAAOA,EAAK,QAAQP,CAAI,CAC3C,KACE,QAAOU,GAAS,QACd,IAAIT,GAAQ,aAAc,cAAcsC,CAAI,wBAAwBD,CAAM,EAAE,CAC9E,CAEJ,CAIA,SAASK,GAAaxC,EAAImC,EAAQM,EAAS,GAAM,CAC/C,OAAOzC,EAAG,QACN0C,GAAU,OAAOC,GAAO,OAAO,OAAO,EAAG,CACvC,OAAAF,EACA,YAAa,EACf,CAAC,EAAE,yBAAyBzC,EAAImC,CAAM,EACtC,IACN,CAEA,SAASS,GAAUlC,EAAGmC,EAAU,CAC9B,IAAMC,EAAapC,EAAE,EAAE,KAAO,MAAQA,EAAE,EAAE,KAAO,EAC7CiB,EAAI,GACR,OAAImB,GAAcpC,EAAE,EAAE,MAAQ,IAAGiB,GAAK,KACtCA,GAAKoB,GAASrC,EAAE,EAAE,KAAMoC,EAAa,EAAI,CAAC,EAEtCD,GACFlB,GAAK,IACLA,GAAKoB,GAASrC,EAAE,EAAE,KAAK,EACvBiB,GAAK,IACLA,GAAKoB,GAASrC,EAAE,EAAE,GAAG,IAErBiB,GAAKoB,GAASrC,EAAE,EAAE,KAAK,EACvBiB,GAAKoB,GAASrC,EAAE,EAAE,GAAG,GAEhBiB,CACT,CAEA,SAASqB,GACPtC,EACAmC,EACAI,EACAC,EACAC,EACAC,EACA,CACA,IAAIzB,EAAIoB,GAASrC,EAAE,EAAE,IAAI,EACzB,OAAImC,GACFlB,GAAK,IACLA,GAAKoB,GAASrC,EAAE,EAAE,MAAM,GACpBA,EAAE,EAAE,cAAgB,GAAKA,EAAE,EAAE,SAAW,GAAK,CAACuC,KAChDtB,GAAK,MAGPA,GAAKoB,GAASrC,EAAE,EAAE,MAAM,GAGtBA,EAAE,EAAE,cAAgB,GAAKA,EAAE,EAAE,SAAW,GAAK,CAACuC,KAChDtB,GAAKoB,GAASrC,EAAE,EAAE,MAAM,GAEpBA,EAAE,EAAE,cAAgB,GAAK,CAACwC,KAC5BvB,GAAK,IACLA,GAAKoB,GAASrC,EAAE,EAAE,YAAa,CAAC,IAIhCyC,IACEzC,EAAE,eAAiBA,EAAE,SAAW,GAAK,CAAC0C,EACxCzB,GAAK,IACIjB,EAAE,EAAI,GACfiB,GAAK,IACLA,GAAKoB,GAAS,KAAK,MAAM,CAACrC,EAAE,EAAI,EAAE,CAAC,EACnCiB,GAAK,IACLA,GAAKoB,GAAS,KAAK,MAAM,CAACrC,EAAE,EAAI,EAAE,CAAC,IAEnCiB,GAAK,IACLA,GAAKoB,GAAS,KAAK,MAAMrC,EAAE,EAAI,EAAE,CAAC,EAClCiB,GAAK,IACLA,GAAKoB,GAAS,KAAK,MAAMrC,EAAE,EAAI,EAAE,CAAC,IAIlC0C,IACFzB,GAAK,IAAMjB,EAAE,KAAK,SAAW,KAExBiB,CACT,CAGA,IAAM0B,GAAoB,CACtB,MAAO,EACP,IAAK,EACL,KAAM,EACN,OAAQ,EACR,OAAQ,EACR,YAAa,CACf,EACAC,IAAwB,CACtB,WAAY,EACZ,QAAS,EACT,KAAM,EACN,OAAQ,EACR,OAAQ,EACR,YAAa,CACf,EACAC,IAA2B,CACzB,QAAS,EACT,KAAM,EACN,OAAQ,EACR,OAAQ,EACR,YAAa,CACf,EAGIC,GAAe,CAAC,OAAQ,QAAS,MAAO,OAAQ,SAAU,SAAU,aAAa,EACrFC,IAAmB,CACjB,WACA,aACA,UACA,OACA,SACA,SACA,aACF,EACAC,IAAsB,CAAC,OAAQ,UAAW,OAAQ,SAAU,SAAU,aAAa,EAGrF,SAASC,IAAcC,EAAM,CAC3B,IAAMC,EAAa,CACjB,KAAM,OACN,MAAO,OACP,MAAO,QACP,OAAQ,QACR,IAAK,MACL,KAAM,MACN,KAAM,OACN,MAAO,OACP,OAAQ,SACR,QAAS,SACT,QAAS,UACT,SAAU,UACV,OAAQ,SACR,QAAS,SACT,YAAa,cACb,aAAc,cACd,QAAS,UACT,SAAU,UACV,WAAY,aACZ,YAAa,aACb,YAAa,aACb,SAAU,WACV,UAAW,WACX,QAAS,SACX,EAAED,EAAK,YAAY,CAAC,EAEpB,GAAI,CAACC,EAAY,MAAM,IAAIC,GAAiBF,CAAI,EAEhD,OAAOC,CACT,CAEA,SAASE,GAA4BH,EAAM,CACzC,OAAQA,EAAK,YAAY,EAAG,CAC1B,IAAK,eACL,IAAK,gBACH,MAAO,eACT,IAAK,kBACL,IAAK,mBACH,MAAO,kBACT,IAAK,gBACL,IAAK,iBACH,MAAO,gBACT,QACE,OAAOD,IAAcC,CAAI,CAC7B,CACF,CAqBA,SAASI,IAAmBnE,EAAM,CAChC,OAAKoE,GAAqBpE,CAAI,IACxBqE,KAAiB,SACnBA,GAAeC,GAAS,IAAI,GAG9BF,GAAqBpE,CAAI,EAAIA,EAAK,OAAOqE,EAAY,GAEhDD,GAAqBpE,CAAI,CAClC,CAKA,SAASuE,GAAQhD,EAAKc,EAAM,CAC1B,IAAMrC,EAAOwE,GAAcnC,EAAK,KAAMiC,GAAS,WAAW,EAC1D,GAAI,CAACtE,EAAK,QACR,OAAOU,GAAS,QAAQX,GAAgBC,CAAI,CAAC,EAG/C,IAAMyE,EAAM3B,GAAO,WAAWT,CAAI,EAE9BlB,EAAI,EAGR,GAAKuD,GAAYnD,EAAI,IAAI,EAevBJ,EAAKmD,GAAS,IAAI,MAfQ,CAC1B,QAAWK,KAAKhB,GACVe,GAAYnD,EAAIoD,CAAC,CAAC,IACpBpD,EAAIoD,CAAC,EAAInB,GAAkBmB,CAAC,GAIhC,IAAMC,EAAUC,GAAwBtD,CAAG,GAAKuD,GAAmBvD,CAAG,EACtE,GAAIqD,EACF,OAAOlE,GAAS,QAAQkE,CAAO,EAGjC,IAAMG,EAAeZ,IAAmBnE,CAAI,EAC5C,CAACmB,EAAI,CAAC,EAAIG,GAAQC,EAAKwD,EAAc/E,CAAI,CAC3C,CAIA,OAAO,IAAIU,GAAS,CAAE,GAAAS,EAAI,KAAAnB,EAAM,IAAAyE,EAAK,CAAE,CAAC,CAC1C,CAEA,SAASO,GAAaC,EAAOC,EAAK7C,EAAM,CACtC,IAAM8C,EAAQT,GAAYrC,EAAK,KAAK,EAAI,GAAOA,EAAK,MAClDC,EAAS,CAACR,EAAGiC,KACXjC,EAAIsD,GAAQtD,EAAGqD,GAAS9C,EAAK,UAAY,EAAI,EAAG,EAAI,EAClC6C,EAAI,IAAI,MAAM7C,CAAI,EAAE,aAAaA,CAAI,EACtC,OAAOP,EAAGiC,CAAI,GAEjCsB,EAAUtB,GACJ1B,EAAK,UACF6C,EAAI,QAAQD,EAAOlB,CAAI,EAEd,EADLmB,EAAI,QAAQnB,CAAI,EAAE,KAAKkB,EAAM,QAAQlB,CAAI,EAAGA,CAAI,EAAE,IAAIA,CAAI,EAG5DmB,EAAI,KAAKD,EAAOlB,CAAI,EAAE,IAAIA,CAAI,EAI3C,GAAI1B,EAAK,KACP,OAAOC,EAAO+C,EAAOhD,EAAK,IAAI,EAAGA,EAAK,IAAI,EAG5C,QAAW0B,KAAQ1B,EAAK,MAAO,CAC7B,IAAMiD,EAAQD,EAAOtB,CAAI,EACzB,GAAI,KAAK,IAAIuB,CAAK,GAAK,EACrB,OAAOhD,EAAOgD,EAAOvB,CAAI,CAE7B,CACA,OAAOzB,EAAO2C,EAAQC,EAAM,GAAK,EAAG7C,EAAK,MAAMA,EAAK,MAAM,OAAS,CAAC,CAAC,CACvE,CAEA,SAASkD,GAASC,EAAS,CACzB,IAAInD,EAAO,CAAC,EACVoD,EACF,OAAID,EAAQ,OAAS,GAAK,OAAOA,EAAQA,EAAQ,OAAS,CAAC,GAAM,UAC/DnD,EAAOmD,EAAQA,EAAQ,OAAS,CAAC,EACjCC,EAAO,MAAM,KAAKD,CAAO,EAAE,MAAM,EAAGA,EAAQ,OAAS,CAAC,GAEtDC,EAAO,MAAM,KAAKD,CAAO,EAEpB,CAACnD,EAAMoD,CAAI,CACpB,CAKA,IAAIpB,GAOAD,GAAuB,CAAC,EAsBP1D,GAArB,MAAqBgF,CAAS,CAI5B,YAAYC,EAAQ,CAClB,IAAM3F,EAAO2F,EAAO,MAAQrB,GAAS,YAEjCM,EACFe,EAAO,UACN,OAAO,MAAMA,EAAO,EAAE,EAAI,IAAI1F,GAAQ,eAAe,EAAI,QACxDD,EAAK,QAAkC,KAAxBD,GAAgBC,CAAI,GAIvC,KAAK,GAAK0E,GAAYiB,EAAO,EAAE,EAAIrB,GAAS,IAAI,EAAIqB,EAAO,GAE3D,IAAI7D,EAAI,KACN,EAAI,KACN,GAAI,CAAC8C,EAGH,GAFkBe,EAAO,KAAOA,EAAO,IAAI,KAAO,KAAK,IAAMA,EAAO,IAAI,KAAK,OAAO3F,CAAI,EAGtF,CAAC8B,EAAG,CAAC,EAAI,CAAC6D,EAAO,IAAI,EAAGA,EAAO,IAAI,CAAC,MAC/B,CAGL,IAAMC,EAAKC,GAASF,EAAO,CAAC,GAAK,CAACA,EAAO,IAAMA,EAAO,EAAI3F,EAAK,OAAO,KAAK,EAAE,EAC7E8B,EAAIZ,GAAQ,KAAK,GAAI0E,CAAE,EACvBhB,EAAU,OAAO,MAAM9C,EAAE,IAAI,EAAI,IAAI7B,GAAQ,eAAe,EAAI,KAChE6B,EAAI8C,EAAU,KAAO9C,EACrB,EAAI8C,EAAU,KAAOgB,CACvB,CAMF,KAAK,MAAQ5F,EAIb,KAAK,IAAM2F,EAAO,KAAO7C,GAAO,OAAO,EAIvC,KAAK,QAAU8B,EAIf,KAAK,SAAW,KAIhB,KAAK,cAAgB,KAIrB,KAAK,EAAI9C,EAIT,KAAK,EAAI,EAIT,KAAK,gBAAkB,EACzB,CAWA,OAAO,KAAM,CACX,OAAO,IAAI4D,EAAS,CAAC,CAAC,CACxB,CAuBA,OAAO,OAAQ,CACb,GAAM,CAACrD,EAAMoD,CAAI,EAAIF,GAAS,SAAS,EACrC,CAAC3D,EAAMC,EAAOiE,EAAKC,EAAMC,EAAQC,EAAQC,CAAW,EAAIT,EAC1D,OAAOlB,GAAQ,CAAE,KAAA3C,EAAM,MAAAC,EAAO,IAAAiE,EAAK,KAAAC,EAAM,OAAAC,EAAQ,OAAAC,EAAQ,YAAAC,CAAY,EAAG7D,CAAI,CAC9E,CA2BA,OAAO,KAAM,CACX,GAAM,CAACA,EAAMoD,CAAI,EAAIF,GAAS,SAAS,EACrC,CAAC3D,EAAMC,EAAOiE,EAAKC,EAAMC,EAAQC,EAAQC,CAAW,EAAIT,EAE1D,OAAApD,EAAK,KAAO8D,GAAgB,YACrB5B,GAAQ,CAAE,KAAA3C,EAAM,MAAAC,EAAO,IAAAiE,EAAK,KAAAC,EAAM,OAAAC,EAAQ,OAAAC,EAAQ,YAAAC,CAAY,EAAG7D,CAAI,CAC9E,CASA,OAAO,WAAW+D,EAAMC,EAAU,CAAC,EAAG,CACpC,IAAMlF,EAAKmF,GAAOF,CAAI,EAAIA,EAAK,QAAQ,EAAI,IAC3C,GAAI,OAAO,MAAMjF,CAAE,EACjB,OAAOuE,EAAS,QAAQ,eAAe,EAGzC,IAAMa,EAAY/B,GAAc6B,EAAQ,KAAM/B,GAAS,WAAW,EAClE,OAAKiC,EAAU,QAIR,IAAIb,EAAS,CAClB,GAAIvE,EACJ,KAAMoF,EACN,IAAKzD,GAAO,WAAWuD,CAAO,CAChC,CAAC,EAPQX,EAAS,QAAQ3F,GAAgBwG,CAAS,CAAC,CAQtD,CAaA,OAAO,WAAWC,EAAcH,EAAU,CAAC,EAAG,CAC5C,GAAKR,GAASW,CAAY,EAInB,OAAIA,EAAe,CAAC1G,IAAY0G,EAAe1G,GAE7C4F,EAAS,QAAQ,wBAAwB,EAEzC,IAAIA,EAAS,CAClB,GAAIc,EACJ,KAAMhC,GAAc6B,EAAQ,KAAM/B,GAAS,WAAW,EACtD,IAAKxB,GAAO,WAAWuD,CAAO,CAChC,CAAC,EAXD,MAAM,IAAII,GACR,yDAAyD,OAAOD,CAAY,eAAeA,CAAY,EACzG,CAWJ,CAaA,OAAO,YAAYE,EAASL,EAAU,CAAC,EAAG,CACxC,GAAKR,GAASa,CAAO,EAGnB,OAAO,IAAIhB,EAAS,CAClB,GAAIgB,EAAU,IACd,KAAMlC,GAAc6B,EAAQ,KAAM/B,GAAS,WAAW,EACtD,IAAKxB,GAAO,WAAWuD,CAAO,CAChC,CAAC,EAND,MAAM,IAAII,GAAqB,wCAAwC,CAQ3E,CAmCA,OAAO,WAAWlF,EAAKc,EAAO,CAAC,EAAG,CAChCd,EAAMA,GAAO,CAAC,EACd,IAAMgF,EAAY/B,GAAcnC,EAAK,KAAMiC,GAAS,WAAW,EAC/D,GAAI,CAACiC,EAAU,QACb,OAAOb,EAAS,QAAQ3F,GAAgBwG,CAAS,CAAC,EAGpD,IAAM9B,EAAM3B,GAAO,WAAWT,CAAI,EAC5B2B,EAAa2C,GAAgBpF,EAAK2C,EAA2B,EAC7D,CAAE,mBAAA0C,EAAoB,YAAAC,CAAY,EAAIC,GAAoB9C,EAAYS,CAAG,EAEzEsC,EAAQzC,GAAS,IAAI,EACzBS,EAAgBL,GAAYrC,EAAK,cAAc,EAE3CkE,EAAU,OAAOQ,CAAK,EADtB1E,EAAK,eAET2E,EAAkB,CAACtC,GAAYV,EAAW,OAAO,EACjDiD,EAAqB,CAACvC,GAAYV,EAAW,IAAI,EACjDkD,EAAmB,CAACxC,GAAYV,EAAW,KAAK,GAAK,CAACU,GAAYV,EAAW,GAAG,EAChFmD,EAAiBF,GAAsBC,EACvCE,EAAkBpD,EAAW,UAAYA,EAAW,WAQtD,IAAKmD,GAAkBH,IAAoBI,EACzC,MAAM,IAAIC,GACR,qEACF,EAGF,GAAIH,GAAoBF,EACtB,MAAM,IAAIK,GAA8B,wCAAwC,EAGlF,IAAMC,EAAcF,GAAoBpD,EAAW,SAAW,CAACmD,EAG3DI,EACFC,EACAC,EAASvG,GAAQ6F,EAAOhC,CAAY,EAClCuC,GACFC,EAAQ3D,IACR4D,EAAgB/D,IAChBgE,EAASrH,GAAgBqH,EAAQb,EAAoBC,CAAW,GACvDG,GACTO,EAAQ1D,IACR2D,EAAgB9D,IAChB+D,EAASC,GAAmBD,CAAM,IAElCF,EAAQ5D,GACR6D,EAAgBhE,IAIlB,IAAImE,EAAa,GACjB,QAAWhD,KAAK4C,EAAO,CACrB,IAAMK,EAAI5D,EAAWW,CAAC,EACjBD,GAAYkD,CAAC,EAEPD,EACT3D,EAAWW,CAAC,EAAI6C,EAAc7C,CAAC,EAE/BX,EAAWW,CAAC,EAAI8C,EAAO9C,CAAC,EAJxBgD,EAAa,EAMjB,CAGA,IAAME,EAAqBP,EACrBQ,GAAmB9D,EAAY4C,EAAoBC,CAAW,EAC9DG,EACAe,GAAsB/D,CAAU,EAChCa,GAAwBb,CAAU,EACtCY,EAAUiD,GAAsB/C,GAAmBd,CAAU,EAE/D,GAAIY,EACF,OAAOc,EAAS,QAAQd,CAAO,EAIjC,IAAMoD,EAAYV,EACZW,GAAgBjE,EAAY4C,EAAoBC,CAAW,EAC3DG,EACAkB,GAAmBlE,CAAU,EAC7BA,EACJ,CAACmE,EAASC,CAAW,EAAI9G,GAAQ0G,EAAWjD,EAAcwB,CAAS,EACnEhG,EAAO,IAAImF,EAAS,CAClB,GAAIyC,EACJ,KAAM5B,EACN,EAAG6B,EACH,IAAA3D,CACF,CAAC,EAGH,OAAIT,EAAW,SAAWmD,GAAkB5F,EAAI,UAAYhB,EAAK,QACxDmF,EAAS,QACd,qBACA,uCAAuC1B,EAAW,OAAO,kBAAkBzD,EAAK,MAAM,CAAC,EACzF,EAGGA,EAAK,QAIHA,EAHEmF,EAAS,QAAQnF,EAAK,OAAO,CAIxC,CAmBA,OAAO,QAAQgC,EAAMF,EAAO,CAAC,EAAG,CAC9B,GAAM,CAACgG,EAAMjG,CAAU,EAAIkG,GAAa/F,CAAI,EAC5C,OAAOL,GAAoBmG,EAAMjG,EAAYC,EAAM,WAAYE,CAAI,CACrE,CAiBA,OAAO,YAAYA,EAAMF,EAAO,CAAC,EAAG,CAClC,GAAM,CAACgG,EAAMjG,CAAU,EAAImG,GAAiBhG,CAAI,EAChD,OAAOL,GAAoBmG,EAAMjG,EAAYC,EAAM,WAAYE,CAAI,CACrE,CAkBA,OAAO,SAASA,EAAMF,EAAO,CAAC,EAAG,CAC/B,GAAM,CAACgG,EAAMjG,CAAU,EAAIoG,GAAcjG,CAAI,EAC7C,OAAOL,GAAoBmG,EAAMjG,EAAYC,EAAM,OAAQA,CAAI,CACjE,CAgBA,OAAO,WAAWE,EAAMkG,EAAKpG,EAAO,CAAC,EAAG,CACtC,GAAIqC,GAAYnC,CAAI,GAAKmC,GAAY+D,CAAG,EACtC,MAAM,IAAIhC,GAAqB,kDAAkD,EAGnF,GAAM,CAAE,OAAAiC,EAAS,KAAM,gBAAAC,EAAkB,IAAK,EAAItG,EAChDuG,EAAc9F,GAAO,SAAS,CAC5B,OAAA4F,EACA,gBAAAC,EACA,YAAa,EACf,CAAC,EACD,CAACN,EAAMjG,EAAYI,EAAgBoC,CAAO,EAAIiE,GAAgBD,EAAarG,EAAMkG,CAAG,EACtF,OAAI7D,EACKc,EAAS,QAAQd,CAAO,EAExB1C,GAAoBmG,EAAMjG,EAAYC,EAAM,UAAUoG,CAAG,GAAIlG,EAAMC,CAAc,CAE5F,CAKA,OAAO,WAAWD,EAAMkG,EAAKpG,EAAO,CAAC,EAAG,CACtC,OAAOqD,EAAS,WAAWnD,EAAMkG,EAAKpG,CAAI,CAC5C,CAuBA,OAAO,QAAQE,EAAMF,EAAO,CAAC,EAAG,CAC9B,GAAM,CAACgG,EAAMjG,CAAU,EAAI0G,GAASvG,CAAI,EACxC,OAAOL,GAAoBmG,EAAMjG,EAAYC,EAAM,MAAOE,CAAI,CAChE,CAQA,OAAO,QAAQwG,EAAQC,EAAc,KAAM,CACzC,GAAI,CAACD,EACH,MAAM,IAAItC,GAAqB,kDAAkD,EAGnF,IAAM7B,EAAUmE,aAAkB9I,GAAU8I,EAAS,IAAI9I,GAAQ8I,EAAQC,CAAW,EAEpF,GAAI1E,GAAS,eACX,MAAM,IAAI2E,GAAqBrE,CAAO,EAEtC,OAAO,IAAIc,EAAS,CAAE,QAAAd,CAAQ,CAAC,CAEnC,CAOA,OAAO,WAAW/D,EAAG,CACnB,OAAQA,GAAKA,EAAE,iBAAoB,EACrC,CAQA,OAAO,mBAAmBqI,EAAYC,EAAa,CAAC,EAAG,CACrD,IAAMC,EAAYC,GAAmBH,EAAYpG,GAAO,WAAWqG,CAAU,CAAC,EAC9E,OAAQC,EAAmBA,EAAU,IAAKE,GAAOA,EAAIA,EAAE,IAAM,IAAK,EAAE,KAAK,EAAE,EAAvD,IACtB,CASA,OAAO,aAAab,EAAKU,EAAa,CAAC,EAAG,CAExC,OADiBI,GAAkB1G,GAAU,YAAY4F,CAAG,EAAG3F,GAAO,WAAWqG,CAAU,CAAC,EAC5E,IAAKG,GAAMA,EAAE,GAAG,EAAE,KAAK,EAAE,CAC3C,CAEA,OAAO,YAAa,CAClBjF,GAAe,OACfD,GAAuB,CAAC,CAC1B,CAWA,IAAIL,EAAM,CACR,OAAO,KAAKA,CAAI,CAClB,CAQA,IAAI,SAAU,CACZ,OAAO,KAAK,UAAY,IAC1B,CAMA,IAAI,eAAgB,CAClB,OAAO,KAAK,QAAU,KAAK,QAAQ,OAAS,IAC9C,CAMA,IAAI,oBAAqB,CACvB,OAAO,KAAK,QAAU,KAAK,QAAQ,YAAc,IACnD,CAOA,IAAI,QAAS,CACX,OAAO,KAAK,QAAU,KAAK,IAAI,OAAS,IAC1C,CAOA,IAAI,iBAAkB,CACpB,OAAO,KAAK,QAAU,KAAK,IAAI,gBAAkB,IACnD,CAOA,IAAI,gBAAiB,CACnB,OAAO,KAAK,QAAU,KAAK,IAAI,eAAiB,IAClD,CAMA,IAAI,MAAO,CACT,OAAO,KAAK,KACd,CAMA,IAAI,UAAW,CACb,OAAO,KAAK,QAAU,KAAK,KAAK,KAAO,IACzC,CAOA,IAAI,MAAO,CACT,OAAO,KAAK,QAAU,KAAK,EAAE,KAAO,GACtC,CAOA,IAAI,SAAU,CACZ,OAAO,KAAK,QAAU,KAAK,KAAK,KAAK,EAAE,MAAQ,CAAC,EAAI,GACtD,CAOA,IAAI,OAAQ,CACV,OAAO,KAAK,QAAU,KAAK,EAAE,MAAQ,GACvC,CAOA,IAAI,KAAM,CACR,OAAO,KAAK,QAAU,KAAK,EAAE,IAAM,GACrC,CAOA,IAAI,MAAO,CACT,OAAO,KAAK,QAAU,KAAK,EAAE,KAAO,GACtC,CAOA,IAAI,QAAS,CACX,OAAO,KAAK,QAAU,KAAK,EAAE,OAAS,GACxC,CAOA,IAAI,QAAS,CACX,OAAO,KAAK,QAAU,KAAK,EAAE,OAAS,GACxC,CAOA,IAAI,aAAc,CAChB,OAAO,KAAK,QAAU,KAAK,EAAE,YAAc,GAC7C,CAQA,IAAI,UAAW,CACb,OAAO,KAAK,QAAU7D,GAAuB,IAAI,EAAE,SAAW,GAChE,CAQA,IAAI,YAAa,CACf,OAAO,KAAK,QAAUA,GAAuB,IAAI,EAAE,WAAa,GAClE,CASA,IAAI,SAAU,CACZ,OAAO,KAAK,QAAUA,GAAuB,IAAI,EAAE,QAAU,GAC/D,CAMA,IAAI,WAAY,CACd,OAAO,KAAK,SAAW,KAAK,IAAI,eAAe,EAAE,SAAS,KAAK,OAAO,CACxE,CAQA,IAAI,cAAe,CACjB,OAAO,KAAK,QAAUG,GAA4B,IAAI,EAAE,QAAU,GACpE,CAQA,IAAI,iBAAkB,CACpB,OAAO,KAAK,QAAUA,GAA4B,IAAI,EAAE,WAAa,GACvE,CAOA,IAAI,eAAgB,CAClB,OAAO,KAAK,QAAUA,GAA4B,IAAI,EAAE,SAAW,GACrE,CAOA,IAAI,SAAU,CACZ,OAAO,KAAK,QAAUqH,GAAmB,KAAK,CAAC,EAAE,QAAU,GAC7D,CAQA,IAAI,YAAa,CACf,OAAO,KAAK,QAAU8B,GAAK,OAAO,QAAS,CAAE,OAAQ,KAAK,GAAI,CAAC,EAAE,KAAK,MAAQ,CAAC,EAAI,IACrF,CAQA,IAAI,WAAY,CACd,OAAO,KAAK,QAAUA,GAAK,OAAO,OAAQ,CAAE,OAAQ,KAAK,GAAI,CAAC,EAAE,KAAK,MAAQ,CAAC,EAAI,IACpF,CAQA,IAAI,cAAe,CACjB,OAAO,KAAK,QAAUA,GAAK,SAAS,QAAS,CAAE,OAAQ,KAAK,GAAI,CAAC,EAAE,KAAK,QAAU,CAAC,EAAI,IACzF,CAQA,IAAI,aAAc,CAChB,OAAO,KAAK,QAAUA,GAAK,SAAS,OAAQ,CAAE,OAAQ,KAAK,GAAI,CAAC,EAAE,KAAK,QAAU,CAAC,EAAI,IACxF,CAQA,IAAI,QAAS,CACX,OAAO,KAAK,QAAU,CAAC,KAAK,EAAI,GAClC,CAOA,IAAI,iBAAkB,CACpB,OAAI,KAAK,QACA,KAAK,KAAK,WAAW,KAAK,GAAI,CACnC,OAAQ,QACR,OAAQ,KAAK,MACf,CAAC,EAEM,IAEX,CAOA,IAAI,gBAAiB,CACnB,OAAI,KAAK,QACA,KAAK,KAAK,WAAW,KAAK,GAAI,CACnC,OAAQ,OACR,OAAQ,KAAK,MACf,CAAC,EAEM,IAEX,CAMA,IAAI,eAAgB,CAClB,OAAO,KAAK,QAAU,KAAK,KAAK,YAAc,IAChD,CAMA,IAAI,SAAU,CACZ,OAAI,KAAK,cACA,GAGL,KAAK,OAAS,KAAK,IAAI,CAAE,MAAO,EAAG,IAAK,CAAE,CAAC,EAAE,QAC7C,KAAK,OAAS,KAAK,IAAI,CAAE,MAAO,CAAE,CAAC,EAAE,MAG3C,CASA,oBAAqB,CACnB,GAAI,CAAC,KAAK,SAAW,KAAK,cACxB,MAAO,CAAC,IAAI,EAEd,IAAMC,EAAQ,MACRC,EAAW,IACX9I,EAAUY,GAAa,KAAK,CAAC,EAC7BmI,EAAW,KAAK,KAAK,OAAO/I,EAAU6I,CAAK,EAC3CG,EAAS,KAAK,KAAK,OAAOhJ,EAAU6I,CAAK,EAEzCI,EAAK,KAAK,KAAK,OAAOjJ,EAAU+I,EAAWD,CAAQ,EACnD1I,EAAK,KAAK,KAAK,OAAOJ,EAAUgJ,EAASF,CAAQ,EACvD,GAAIG,IAAO7I,EACT,MAAO,CAAC,IAAI,EAEd,IAAM8I,EAAMlJ,EAAUiJ,EAAKH,EACrBK,EAAMnJ,EAAUI,EAAK0I,EACrBM,EAAK9I,GAAQ4I,EAAKD,CAAE,EACpBI,EAAK/I,GAAQ6I,EAAK/I,CAAE,EAC1B,OACEgJ,EAAG,OAASC,EAAG,MACfD,EAAG,SAAWC,EAAG,QACjBD,EAAG,SAAWC,EAAG,QACjBD,EAAG,cAAgBC,EAAG,YAEf,CAAC3J,GAAM,KAAM,CAAE,GAAIwJ,CAAI,CAAC,EAAGxJ,GAAM,KAAM,CAAE,GAAIyJ,CAAI,CAAC,CAAC,EAErD,CAAC,IAAI,CACd,CAQA,IAAI,cAAe,CACjB,OAAOG,GAAW,KAAK,IAAI,CAC7B,CAQA,IAAI,aAAc,CAChB,OAAOnI,GAAY,KAAK,KAAM,KAAK,KAAK,CAC1C,CAQA,IAAI,YAAa,CACf,OAAO,KAAK,QAAUoI,GAAW,KAAK,IAAI,EAAI,GAChD,CASA,IAAI,iBAAkB,CACpB,OAAO,KAAK,QAAUC,GAAgB,KAAK,QAAQ,EAAI,GACzD,CAQA,IAAI,sBAAuB,CACzB,OAAO,KAAK,QACRA,GACE,KAAK,cACL,KAAK,IAAI,sBAAsB,EAC/B,KAAK,IAAI,eAAe,CAC1B,EACA,GACN,CAQA,sBAAsB/H,EAAO,CAAC,EAAG,CAC/B,GAAM,CAAE,OAAAqG,EAAQ,gBAAAC,EAAiB,SAAA0B,CAAS,EAAIxH,GAAU,OACtD,KAAK,IAAI,MAAMR,CAAI,EACnBA,CACF,EAAE,gBAAgB,IAAI,EACtB,MAAO,CAAE,OAAAqG,EAAQ,gBAAAC,EAAiB,eAAgB0B,CAAS,CAC7D,CAYA,MAAMjJ,EAAS,EAAGiB,EAAO,CAAC,EAAG,CAC3B,OAAO,KAAK,QAAQ8D,GAAgB,SAAS/E,CAAM,EAAGiB,CAAI,CAC5D,CAQA,SAAU,CACR,OAAO,KAAK,QAAQiC,GAAS,WAAW,CAC1C,CAWA,QAAQtE,EAAM,CAAE,cAAAsK,EAAgB,GAAO,iBAAAC,EAAmB,EAAM,EAAI,CAAC,EAAG,CAEtE,GADAvK,EAAOwE,GAAcxE,EAAMsE,GAAS,WAAW,EAC3CtE,EAAK,OAAO,KAAK,IAAI,EACvB,OAAO,KACF,GAAKA,EAAK,QAEV,CACL,IAAIwK,EAAQ,KAAK,GACjB,GAAIF,GAAiBC,EAAkB,CACrC,IAAME,EAAczK,EAAK,OAAO,KAAK,EAAE,EACjC0K,EAAQ,KAAK,SAAS,EAC5B,CAACF,CAAK,EAAIlJ,GAAQoJ,EAAOD,EAAazK,CAAI,CAC5C,CACA,OAAOM,GAAM,KAAM,CAAE,GAAIkK,EAAO,KAAAxK,CAAK,CAAC,CACxC,KATE,QAAO0F,EAAS,QAAQ3F,GAAgBC,CAAI,CAAC,CAUjD,CAQA,YAAY,CAAE,OAAA0I,EAAQ,gBAAAC,EAAiB,eAAAgC,CAAe,EAAI,CAAC,EAAG,CAC5D,IAAMlG,EAAM,KAAK,IAAI,MAAM,CAAE,OAAAiE,EAAQ,gBAAAC,EAAiB,eAAAgC,CAAe,CAAC,EACtE,OAAOrK,GAAM,KAAM,CAAE,IAAAmE,CAAI,CAAC,CAC5B,CAQA,UAAUiE,EAAQ,CAChB,OAAO,KAAK,YAAY,CAAE,OAAAA,CAAO,CAAC,CACpC,CAeA,IAAIkC,EAAQ,CACV,GAAI,CAAC,KAAK,QAAS,OAAO,KAE1B,IAAM5G,EAAa2C,GAAgBiE,EAAQ1G,EAA2B,EAChE,CAAE,mBAAA0C,EAAoB,YAAAC,CAAY,EAAIC,GAAoB9C,EAAY,KAAK,GAAG,EAE9E6G,EACF,CAACnG,GAAYV,EAAW,QAAQ,GAChC,CAACU,GAAYV,EAAW,UAAU,GAClC,CAACU,GAAYV,EAAW,OAAO,EACjCgD,EAAkB,CAACtC,GAAYV,EAAW,OAAO,EACjDiD,EAAqB,CAACvC,GAAYV,EAAW,IAAI,EACjDkD,EAAmB,CAACxC,GAAYV,EAAW,KAAK,GAAK,CAACU,GAAYV,EAAW,GAAG,EAChFmD,EAAiBF,GAAsBC,EACvCE,EAAkBpD,EAAW,UAAYA,EAAW,WAEtD,IAAKmD,GAAkBH,IAAoBI,EACzC,MAAM,IAAIC,GACR,qEACF,EAGF,GAAIH,GAAoBF,EACtB,MAAM,IAAIK,GAA8B,wCAAwC,EAGlF,IAAIyD,EACAD,EACFC,EAAQ7C,GACN,CAAE,GAAG7H,GAAgB,KAAK,EAAGwG,EAAoBC,CAAW,EAAG,GAAG7C,CAAW,EAC7E4C,EACAC,CACF,EACUnC,GAAYV,EAAW,OAAO,GAGxC8G,EAAQ,CAAE,GAAG,KAAK,SAAS,EAAG,GAAG9G,CAAW,EAIxCU,GAAYV,EAAW,GAAG,IAC5B8G,EAAM,IAAM,KAAK,IAAI/I,GAAY+I,EAAM,KAAMA,EAAM,KAAK,EAAGA,EAAM,GAAG,IAPtEA,EAAQ5C,GAAmB,CAAE,GAAGR,GAAmB,KAAK,CAAC,EAAG,GAAG1D,CAAW,CAAC,EAW7E,GAAM,CAAC7C,EAAIN,CAAC,EAAIS,GAAQwJ,EAAO,KAAK,EAAG,KAAK,IAAI,EAChD,OAAOxK,GAAM,KAAM,CAAE,GAAAa,EAAI,EAAAN,CAAE,CAAC,CAC9B,CAeA,KAAKkK,EAAU,CACb,GAAI,CAAC,KAAK,QAAS,OAAO,KAC1B,IAAMrJ,EAAMO,GAAS,iBAAiB8I,CAAQ,EAC9C,OAAOzK,GAAM,KAAMmB,GAAW,KAAMC,CAAG,CAAC,CAC1C,CAQA,MAAMqJ,EAAU,CACd,GAAI,CAAC,KAAK,QAAS,OAAO,KAC1B,IAAMrJ,EAAMO,GAAS,iBAAiB8I,CAAQ,EAAE,OAAO,EACvD,OAAOzK,GAAM,KAAMmB,GAAW,KAAMC,CAAG,CAAC,CAC1C,CAcA,QAAQqC,EAAM,CAAE,eAAAiH,EAAiB,EAAM,EAAI,CAAC,EAAG,CAC7C,GAAI,CAAC,KAAK,QAAS,OAAO,KAE1B,IAAMnK,EAAI,CAAC,EACToK,EAAiBhJ,GAAS,cAAc8B,CAAI,EAC9C,OAAQkH,EAAgB,CACtB,IAAK,QACHpK,EAAE,MAAQ,EAEZ,IAAK,WACL,IAAK,SACHA,EAAE,IAAM,EAEV,IAAK,QACL,IAAK,OACHA,EAAE,KAAO,EAEX,IAAK,QACHA,EAAE,OAAS,EAEb,IAAK,UACHA,EAAE,OAAS,EAEb,IAAK,UACHA,EAAE,YAAc,EAChB,MACF,IAAK,eACH,KAEJ,CAEA,GAAIoK,IAAmB,QACrB,GAAID,EAAgB,CAClB,IAAMnE,EAAc,KAAK,IAAI,eAAe,EACtC,CAAE,QAAAqE,CAAQ,EAAI,KAChBA,EAAUrE,IACZhG,EAAE,WAAa,KAAK,WAAa,GAEnCA,EAAE,QAAUgG,CACd,MACEhG,EAAE,QAAU,EAIhB,GAAIoK,IAAmB,WAAY,CACjC,IAAME,EAAI,KAAK,KAAK,KAAK,MAAQ,CAAC,EAClCtK,EAAE,OAASsK,EAAI,GAAK,EAAI,CAC1B,CAEA,OAAO,KAAK,IAAItK,CAAC,CACnB,CAcA,MAAMkD,EAAM1B,EAAM,CAChB,OAAO,KAAK,QACR,KAAK,KAAK,CAAE,CAAC0B,CAAI,EAAG,CAAE,CAAC,EACpB,QAAQA,EAAM1B,CAAI,EAClB,MAAM,CAAC,EACV,IACN,CAgBA,SAASoG,EAAKpG,EAAO,CAAC,EAAG,CACvB,OAAO,KAAK,QACRQ,GAAU,OAAO,KAAK,IAAI,cAAcR,CAAI,CAAC,EAAE,yBAAyB,KAAMoG,CAAG,EACjF5I,EACN,CAqBA,eAAeqJ,EAAqBkC,GAAY/I,EAAO,CAAC,EAAG,CACzD,OAAO,KAAK,QACRQ,GAAU,OAAO,KAAK,IAAI,MAAMR,CAAI,EAAG6G,CAAU,EAAE,eAAe,IAAI,EACtErJ,EACN,CAeA,cAAcwC,EAAO,CAAC,EAAG,CACvB,OAAO,KAAK,QACRQ,GAAU,OAAO,KAAK,IAAI,MAAMR,CAAI,EAAGA,CAAI,EAAE,oBAAoB,IAAI,EACrE,CAAC,CACP,CAgBA,MAAM,CACJ,OAAAC,EAAS,WACT,gBAAAc,EAAkB,GAClB,qBAAAC,EAAuB,GACvB,cAAAC,EAAgB,GAChB,aAAAC,EAAe,EACjB,EAAI,CAAC,EAAG,CACN,GAAI,CAAC,KAAK,QACR,OAAO,KAGT,IAAM8H,EAAM/I,IAAW,WAEnBR,EAAIiB,GAAU,KAAMsI,CAAG,EAC3B,OAAAvJ,GAAK,IACLA,GAAKqB,GAAU,KAAMkI,EAAKjI,EAAiBC,EAAsBC,EAAeC,CAAY,EACrFzB,CACT,CAUA,UAAU,CAAE,OAAAQ,EAAS,UAAW,EAAI,CAAC,EAAG,CACtC,OAAK,KAAK,QAIHS,GAAU,KAAMT,IAAW,UAAU,EAHnC,IAIX,CAOA,eAAgB,CACd,OAAOK,GAAa,KAAM,cAAc,CAC1C,CAiBA,UAAU,CACR,qBAAAU,EAAuB,GACvB,gBAAAD,EAAkB,GAClB,cAAAE,EAAgB,GAChB,cAAAgI,EAAgB,GAChB,aAAA/H,EAAe,GACf,OAAAjB,EAAS,UACX,EAAI,CAAC,EAAG,CACN,OAAK,KAAK,SAIFgJ,EAAgB,IAAM,IAG5BnI,GACE,KACAb,IAAW,WACXc,EACAC,EACAC,EACAC,CACF,EAbO,IAeX,CAQA,WAAY,CACV,OAAOZ,GAAa,KAAM,gCAAiC,EAAK,CAClE,CAUA,QAAS,CACP,OAAOA,GAAa,KAAK,MAAM,EAAG,iCAAiC,CACrE,CAOA,WAAY,CACV,OAAK,KAAK,QAGHI,GAAU,KAAM,EAAI,EAFlB,IAGX,CAcA,UAAU,CAAE,cAAAO,EAAgB,GAAM,YAAAiI,EAAc,GAAO,mBAAAC,EAAqB,EAAK,EAAI,CAAC,EAAG,CACvF,IAAI/C,EAAM,eAEV,OAAI8C,GAAejI,KACbkI,IACF/C,GAAO,KAEL8C,EACF9C,GAAO,IACEnF,IACTmF,GAAO,OAIJ9F,GAAa,KAAM8F,EAAK,EAAI,CACrC,CAcA,MAAMpG,EAAO,CAAC,EAAG,CACf,OAAK,KAAK,QAIH,GAAG,KAAK,UAAU,CAAC,IAAI,KAAK,UAAUA,CAAI,CAAC,GAHzC,IAIX,CAMA,UAAW,CACT,OAAO,KAAK,QAAU,KAAK,MAAM,EAAIxC,EACvC,CAMA,CAAC,OAAO,IAAI,4BAA4B,CAAC,GAAI,CAC3C,OAAI,KAAK,QACA,kBAAkB,KAAK,MAAM,CAAC,WAAW,KAAK,KAAK,IAAI,aAAa,KAAK,MAAM,KAE/E,+BAA+B,KAAK,aAAa,IAE5D,CAMA,SAAU,CACR,OAAO,KAAK,SAAS,CACvB,CAMA,UAAW,CACT,OAAO,KAAK,QAAU,KAAK,GAAK,GAClC,CAMA,WAAY,CACV,OAAO,KAAK,QAAU,KAAK,GAAK,IAAO,GACzC,CAMA,eAAgB,CACd,OAAO,KAAK,QAAU,KAAK,MAAM,KAAK,GAAK,GAAI,EAAI,GACrD,CAMA,QAAS,CACP,OAAO,KAAK,MAAM,CACpB,CAMA,QAAS,CACP,OAAO,KAAK,SAAS,CACvB,CASA,SAASwC,EAAO,CAAC,EAAG,CAClB,GAAI,CAAC,KAAK,QAAS,MAAO,CAAC,EAE3B,IAAMoJ,EAAO,CAAE,GAAG,KAAK,CAAE,EAEzB,OAAIpJ,EAAK,gBACPoJ,EAAK,eAAiB,KAAK,eAC3BA,EAAK,gBAAkB,KAAK,IAAI,gBAChCA,EAAK,OAAS,KAAK,IAAI,QAElBA,CACT,CAMA,UAAW,CACT,OAAO,IAAI,KAAK,KAAK,QAAU,KAAK,GAAK,GAAG,CAC9C,CAmBA,KAAKC,EAAe3H,EAAO,eAAgB1B,EAAO,CAAC,EAAG,CACpD,GAAI,CAAC,KAAK,SAAW,CAACqJ,EAAc,QAClC,OAAOzJ,GAAS,QAAQ,wCAAwC,EAGlE,IAAM0J,EAAU,CAAE,OAAQ,KAAK,OAAQ,gBAAiB,KAAK,gBAAiB,GAAGtJ,CAAK,EAEhFkF,EAAQqE,GAAW7H,CAAI,EAAE,IAAI9B,GAAS,aAAa,EACvD4J,EAAeH,EAAc,QAAQ,EAAI,KAAK,QAAQ,EACtDI,EAAUD,EAAe,KAAOH,EAChCK,EAAQF,EAAeH,EAAgB,KACvCM,EAASC,GAAKH,EAASC,EAAOxE,EAAOoE,CAAO,EAE9C,OAAOE,EAAeG,EAAO,OAAO,EAAIA,CAC1C,CAUA,QAAQjI,EAAO,eAAgB1B,EAAO,CAAC,EAAG,CACxC,OAAO,KAAK,KAAKqD,EAAS,IAAI,EAAG3B,EAAM1B,CAAI,CAC7C,CAOA,MAAMqJ,EAAe,CACnB,OAAO,KAAK,QAAUQ,GAAS,cAAc,KAAMR,CAAa,EAAI,IACtE,CAaA,QAAQA,EAAe3H,EAAM1B,EAAM,CACjC,GAAI,CAAC,KAAK,QAAS,MAAO,GAE1B,IAAM8J,EAAUT,EAAc,QAAQ,EAChCU,EAAiB,KAAK,QAAQV,EAAc,KAAM,CAAE,cAAe,EAAK,CAAC,EAC/E,OACEU,EAAe,QAAQrI,EAAM1B,CAAI,GAAK8J,GAAWA,GAAWC,EAAe,MAAMrI,EAAM1B,CAAI,CAE/F,CASA,OAAOgK,EAAO,CACZ,OACE,KAAK,SACLA,EAAM,SACN,KAAK,QAAQ,IAAMA,EAAM,QAAQ,GACjC,KAAK,KAAK,OAAOA,EAAM,IAAI,GAC3B,KAAK,IAAI,OAAOA,EAAM,GAAG,CAE7B,CAoBA,WAAWhG,EAAU,CAAC,EAAG,CACvB,GAAI,CAAC,KAAK,QAAS,OAAO,KAC1B,IAAMoF,EAAOpF,EAAQ,MAAQX,EAAS,WAAW,CAAC,EAAG,CAAE,KAAM,KAAK,IAAK,CAAC,EACtE4G,EAAUjG,EAAQ,QAAW,KAAOoF,EAAO,CAACpF,EAAQ,QAAUA,EAAQ,QAAW,EAC/EkB,EAAQ,CAAC,QAAS,SAAU,OAAQ,QAAS,UAAW,SAAS,EACjExD,EAAOsC,EAAQ,KACnB,OAAI,MAAM,QAAQA,EAAQ,IAAI,IAC5BkB,EAAQlB,EAAQ,KAChBtC,EAAO,QAEFiB,GAAayG,EAAM,KAAK,KAAKa,CAAO,EAAG,CAC5C,GAAGjG,EACH,QAAS,SACT,MAAAkB,EACA,KAAAxD,CACF,CAAC,CACH,CAeA,mBAAmBsC,EAAU,CAAC,EAAG,CAC/B,OAAK,KAAK,QAEHrB,GAAaqB,EAAQ,MAAQX,EAAS,WAAW,CAAC,EAAG,CAAE,KAAM,KAAK,IAAK,CAAC,EAAG,KAAM,CACtF,GAAGW,EACH,QAAS,OACT,MAAO,CAAC,QAAS,SAAU,MAAM,EACjC,UAAW,EACb,CAAC,EAPyB,IAQ5B,CAOA,OAAO,OAAOkG,EAAW,CACvB,GAAI,CAACA,EAAU,MAAM7G,EAAS,UAAU,EACtC,MAAM,IAAIe,GAAqB,yCAAyC,EAE1E,OAAO+F,GAAOD,EAAYE,GAAMA,EAAE,QAAQ,EAAG,KAAK,GAAG,CACvD,CAOA,OAAO,OAAOF,EAAW,CACvB,GAAI,CAACA,EAAU,MAAM7G,EAAS,UAAU,EACtC,MAAM,IAAIe,GAAqB,yCAAyC,EAE1E,OAAO+F,GAAOD,EAAYE,GAAMA,EAAE,QAAQ,EAAG,KAAK,GAAG,CACvD,CAWA,OAAO,kBAAkBlK,EAAMkG,EAAKpC,EAAU,CAAC,EAAG,CAChD,GAAM,CAAE,OAAAqC,EAAS,KAAM,gBAAAC,EAAkB,IAAK,EAAItC,EAChDuC,EAAc9F,GAAO,SAAS,CAC5B,OAAA4F,EACA,gBAAAC,EACA,YAAa,EACf,CAAC,EACH,OAAO+D,GAAkB9D,EAAarG,EAAMkG,CAAG,CACjD,CAKA,OAAO,kBAAkBlG,EAAMkG,EAAKpC,EAAU,CAAC,EAAG,CAChD,OAAOX,EAAS,kBAAkBnD,EAAMkG,EAAKpC,CAAO,CACtD,CAcA,OAAO,kBAAkBoC,EAAKpC,EAAU,CAAC,EAAG,CAC1C,GAAM,CAAE,OAAAqC,EAAS,KAAM,gBAAAC,EAAkB,IAAK,EAAItC,EAChDuC,EAAc9F,GAAO,SAAS,CAC5B,OAAA4F,EACA,gBAAAC,EACA,YAAa,EACf,CAAC,EACH,OAAO,IAAIgE,GAAY/D,EAAaH,CAAG,CACzC,CAYA,OAAO,iBAAiBlG,EAAMqK,EAAcvK,EAAO,CAAC,EAAG,CACrD,GAAIqC,GAAYnC,CAAI,GAAKmC,GAAYkI,CAAY,EAC/C,MAAM,IAAInG,GACR,+DACF,EAEF,GAAM,CAAE,OAAAiC,EAAS,KAAM,gBAAAC,EAAkB,IAAK,EAAItG,EAChDuG,EAAc9F,GAAO,SAAS,CAC5B,OAAA4F,EACA,gBAAAC,EACA,YAAa,EACf,CAAC,EAEH,GAAI,CAACC,EAAY,OAAOgE,EAAa,MAAM,EACzC,MAAM,IAAInG,GACR,4CAA4CmC,CAAW,2CACZgE,EAAa,MAAM,EAChE,EAGF,GAAM,CAAE,OAAAC,EAAQ,KAAA7M,EAAM,eAAAwC,EAAgB,cAAAsK,CAAc,EAAIF,EAAa,kBAAkBrK,CAAI,EAE3F,OAAIuK,EACKpH,EAAS,QAAQoH,CAAa,EAE9B5K,GACL2K,EACA7M,EACAqC,EACA,UAAUuK,EAAa,MAAM,GAC7BrK,EACAC,CACF,CAEJ,CAQA,WAAW,YAAa,CACtB,OAAe4I,EACjB,CAMA,WAAW,UAAW,CACpB,OAAe2B,EACjB,CAMA,WAAW,uBAAwB,CACjC,OAAeC,EACjB,CAMA,WAAW,WAAY,CACrB,OAAeC,EACjB,CAMA,WAAW,WAAY,CACrB,OAAeC,EACjB,CAMA,WAAW,aAAc,CACvB,OAAeC,EACjB,CAMA,WAAW,mBAAoB,CAC7B,OAAeC,EACjB,CAMA,WAAW,wBAAyB,CAClC,OAAeC,EACjB,CAMA,WAAW,uBAAwB,CACjC,OAAeC,EACjB,CAMA,WAAW,gBAAiB,CAC1B,OAAeC,EACjB,CAMA,WAAW,sBAAuB,CAChC,OAAeC,EACjB,CAMA,WAAW,2BAA4B,CACrC,OAAeC,EACjB,CAMA,WAAW,0BAA2B,CACpC,OAAeC,EACjB,CAMA,WAAW,gBAAiB,CAC1B,OAAeC,EACjB,CAMA,WAAW,6BAA8B,CACvC,OAAeC,EACjB,CAMA,WAAW,cAAe,CACxB,OAAeC,EACjB,CAMA,WAAW,2BAA4B,CACrC,OAAeC,EACjB,CAMA,WAAW,2BAA4B,CACrC,OAAeC,EACjB,CAMA,WAAW,eAAgB,CACzB,OAAeC,EACjB,CAMA,WAAW,4BAA6B,CACtC,OAAeC,EACjB,CAMA,WAAW,eAAgB,CACzB,OAAeC,EACjB,CAMA,WAAW,4BAA6B,CACtC,OAAeC,EACjB,CACF,EAKO,SAASC,GAAiBC,EAAa,CAC5C,GAAI3N,GAAS,WAAW2N,CAAW,EACjC,OAAOA,EACF,GAAIA,GAAeA,EAAY,SAAWxI,GAASwI,EAAY,QAAQ,CAAC,EAC7E,OAAO3N,GAAS,WAAW2N,CAAW,EACjC,GAAIA,GAAe,OAAOA,GAAgB,SAC/C,OAAO3N,GAAS,WAAW2N,CAAW,EAEtC,MAAM,IAAI5H,GACR,8BAA8B4H,CAAW,aAAa,OAAOA,CAAW,EAC1E,CAEJ,CC3/EA,SAASC,IAAW,CAClB,OAAOA,GAAW,OAAO,OAAS,OAAO,OAAO,KAAK,EAAI,SAAUC,EAAG,CACpE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CACzC,IAAIC,EAAI,UAAUD,CAAC,EACnB,QAASE,KAAKD,GAAI,CAAC,GAAG,eAAe,KAAKA,EAAGC,CAAC,IAAMH,EAAEG,CAAC,EAAID,EAAEC,CAAC,EAChE,CACA,OAAOH,CACT,EAAGD,GAAS,MAAM,KAAM,SAAS,CACnC,CCRO,IAAIK,GAAiB,CAG1B,OAAQ,MAGR,OAAQ,MAER,OAAQ,SAER,OAAQ,SAGR,eAAgB,SAEhB,UAAW,GAKX,YAAa,GAGb,WAAY,IACd,ECdA,SAASC,GAAgBC,EAAQC,EAAM,CAErC,GAAIC,GAAeF,EAAQC,CAAI,EAC7B,OAAOD,EAAOC,CAAI,EAEpB,MAAI,OAAOD,EAAOC,CAAI,GAAM,YAAcE,GAAaH,EAAQC,CAAI,EAC3D,IAAI,MAAM,yBAA2BA,EAAO,iBAAiB,EAE/D,IAAI,MAAM,0BAA4BA,EAAO,GAAG,CACxD,CAYA,SAASG,GAAgBJ,EAAQC,EAAMI,EAAO,CAE5C,GAAIH,GAAeF,EAAQC,CAAI,EAC7B,OAAAD,EAAOC,CAAI,EAAII,EACRA,EAET,MAAM,IAAI,MAAM,0BAA4BJ,EAAO,GAAG,CACxD,CASA,SAASC,GAAeF,EAAQC,EAAM,CACpC,MAAI,CAACK,IAAcN,CAAM,GAAK,CAAC,MAAM,QAAQA,CAAM,EAC1C,GAILO,GAAeC,IAAsBP,CAAI,EACpC,GAIL,EAAAA,KAAQ,OAAO,WAQfA,KAAQ,SAAS,UAOvB,CASA,SAASQ,GAAcT,EAAQU,EAAQ,CACrC,GAAI,CAACP,GAAaH,EAAQU,CAAM,EAC9B,MAAM,IAAI,MAAM,wBAA0BA,EAAS,GAAG,EAExD,OAAOV,EAAOU,CAAM,CACtB,CASA,SAASP,GAAaH,EAAQU,EAAQ,CAOpC,OANIV,GAAW,MAAgC,OAAOA,EAAOU,CAAM,GAAM,YAMrEH,GAAeP,EAAQU,CAAM,GAAK,OAAO,gBAAkBA,KAAU,OAAO,eAAeV,CAAM,EAC5F,GAILO,GAAeI,IAAmBD,CAAM,EACnC,GAIL,EAAAA,KAAU,OAAO,WAQjBA,KAAU,SAAS,UAOzB,CACA,SAASJ,IAAcN,EAAQ,CAC7B,OAAO,OAAOA,GAAW,UAAYA,GAAUA,EAAO,cAAgB,MACxE,CACA,IAAIQ,IAAuB,CACzB,OAAQ,GACR,KAAM,EACR,EACIG,IAAoB,CACtB,SAAU,GACV,QAAS,GACT,eAAgB,EAClB,ECjIO,IAAMC,GAAN,KAAwB,CAC7B,YAAYC,EAAQ,CAClB,KAAK,cAAgBA,EACrB,KAAK,OAAO,QAAQ,EAAI,KAAK,OAC/B,CACA,MAAO,CACL,OAAO,OAAO,KAAK,KAAK,aAAa,EAAE,OAAOC,GAAO,KAAK,IAAIA,CAAG,CAAC,EAAE,OAAO,CAC7E,CACA,IAAIA,EAAK,CACP,OAAOC,GAAgB,KAAK,cAAeD,CAAG,CAChD,CACA,IAAIA,EAAKE,EAAO,CACd,OAAAC,GAAgB,KAAK,cAAeH,EAAKE,CAAK,EACvC,IACT,CACA,IAAIF,EAAK,CACP,OAAOI,GAAe,KAAK,cAAeJ,CAAG,GAAKA,KAAO,KAAK,aAChE,CACA,SAAU,CACR,OAAOK,GAAY,KAAK,KAAK,EAAGL,GAAO,CAACA,EAAK,KAAK,IAAIA,CAAG,CAAC,CAAC,CAC7D,CACA,QAAQM,EAAU,CAChB,QAASN,KAAO,KAAK,KAAK,EACxBM,EAAS,KAAK,IAAIN,CAAG,EAAGA,EAAK,IAAI,CAErC,CACA,OAAOA,EAAK,CACNI,GAAe,KAAK,cAAeJ,CAAG,GACxC,OAAO,KAAK,cAAcA,CAAG,CAEjC,CACA,OAAQ,CACN,QAASA,KAAO,KAAK,KAAK,EACxB,KAAK,OAAOA,CAAG,CAEnB,CACA,IAAI,MAAO,CACT,OAAO,OAAO,KAAK,KAAK,aAAa,EAAE,MACzC,CACF,EAgBaO,GAAN,KAAqB,CAM1B,YAAYC,EAAGC,EAAGC,EAAO,CACvB,KAAK,EAAIF,EACT,KAAK,EAAIC,EACT,KAAK,MAAQC,EACb,KAAK,OAAO,QAAQ,EAAI,KAAK,OAC/B,CACA,IAAIV,EAAK,CACP,OAAO,KAAK,MAAM,IAAIA,CAAG,EAAI,KAAK,EAAE,IAAIA,CAAG,EAAI,KAAK,EAAE,IAAIA,CAAG,CAC/D,CACA,IAAIA,EAAKE,EAAO,CACd,OAAI,KAAK,MAAM,IAAIF,CAAG,EACpB,KAAK,EAAE,IAAIA,EAAKE,CAAK,EAErB,KAAK,EAAE,IAAIF,EAAKE,CAAK,EAEhB,IACT,CACA,IAAIF,EAAK,CACP,OAAO,KAAK,EAAE,IAAIA,CAAG,GAAK,KAAK,EAAE,IAAIA,CAAG,CAC1C,CACA,MAAO,CACL,OAAO,IAAI,IAAI,CAAC,GAAG,KAAK,EAAE,KAAK,EAAG,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,OAAO,QAAQ,EAAE,CACxE,CACA,SAAU,CACR,OAAOK,GAAY,KAAK,KAAK,EAAGL,GAAO,CAACA,EAAK,KAAK,IAAIA,CAAG,CAAC,CAAC,CAC7D,CACA,QAAQM,EAAU,CAChB,QAASN,KAAO,KAAK,KAAK,EACxBM,EAAS,KAAK,IAAIN,CAAG,EAAGA,EAAK,IAAI,CAErC,CACA,OAAOA,EAAK,CACV,OAAO,KAAK,MAAM,IAAIA,CAAG,EAAI,KAAK,EAAE,OAAOA,CAAG,EAAI,KAAK,EAAE,OAAOA,CAAG,CACrE,CACA,OAAQ,CACN,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,CACf,CACA,IAAI,MAAO,CACT,MAAO,CAAC,GAAG,KAAK,KAAK,CAAC,EAAE,MAC1B,CACF,EAKA,SAASK,GAAYM,EAAIL,EAAU,CACjC,MAAO,CACL,KAAM,IAAM,CACV,IAAIM,EAAID,EAAG,KAAK,EAChB,OAAOC,EAAE,KAAOA,EAAI,CAClB,MAAON,EAASM,EAAE,KAAK,EACvB,KAAM,EACR,CACF,CACF,CACF,CAOO,SAASC,IAAiB,CAC/B,OAAO,IAAI,GACb,CAQO,SAASC,GAAUC,EAAa,CACrC,GAAI,CAACA,EACH,OAAOF,GAAe,EAExB,GAAIG,GAAMD,CAAW,EACnB,OAAOA,EAET,GAAIE,GAASF,CAAW,EACtB,OAAO,IAAIjB,GAAkBiB,CAAW,EAE1C,MAAM,IAAI,MAAM,gDAAgD,CAClE,CAQO,SAASG,GAASC,EAAK,CAC5B,GAAIA,aAAerB,GACjB,OAAOqB,EAAI,cAEb,IAAIpB,EAAS,CAAC,EACd,QAASC,KAAOmB,EAAI,KAAK,EAAG,CAC1B,IAAIjB,EAAQiB,EAAI,IAAInB,CAAG,EACvBG,GAAgBJ,EAAQC,EAAKE,CAAK,CACpC,CACA,OAAOH,CACT,CC/JO,SAASqB,GAASC,EAAG,CAC1B,OAAO,OAAOA,GAAM,QACtB,CACO,SAASC,GAAYD,EAAG,CAC7B,MAAI,CAACA,GAAK,OAAOA,GAAM,UAAY,OAAOA,EAAE,aAAgB,WACnD,GAELA,EAAE,cAAgB,IAAQ,OAAOA,EAAE,YAAY,WAAc,UAAYA,EAAE,YAAY,UAAU,cAAgB,IAGjH,OAAOA,EAAE,YAAY,WAAc,YAAcA,EAAE,YAAY,UAAUA,CAAC,IAAM,EAItF,CACO,SAASE,GAASF,EAAG,CAC1B,OAAO,OAAOA,GAAM,QACtB,CACO,SAASG,GAAUH,EAAG,CAC3B,OAAOA,GAAK,OAAOA,GAAM,UAAY,OAAO,eAAeA,CAAC,EAAE,YAAc,IAAQ,EACtF,CACO,SAASI,GAAWJ,EAAG,CAC5B,OAAOA,GAAK,OAAOA,GAAM,UAAY,OAAO,eAAeA,CAAC,EAAE,aAAe,IAAQ,EACvF,CACO,SAASK,GAAOL,EAAG,CACxB,OAAOA,GAAKA,EAAE,YAAY,UAAU,SAAW,IAAQ,EACzD,CACO,SAASM,GAASN,EAAG,CAC1B,OAAO,OAAOA,GAAM,QACtB,CACO,IAAIO,GAAU,MAAM,QACpB,SAASC,GAASR,EAAG,CAC1B,OAAOA,GAAKA,EAAE,YAAY,UAAU,WAAa,IAAQ,EAC3D,CAOO,SAASS,GAAaT,EAAG,CAC9B,OAAO,MAAM,QAAQA,CAAC,GAAKQ,GAASR,CAAC,CACvC,CACO,SAASU,GAAcV,EAAG,CAC/B,OAAOA,GAAKA,EAAE,eAAiBA,EAAE,YAAY,UAAU,WAAa,IAAQ,EAC9E,CACO,SAASW,GAAeX,EAAG,CAChC,OAAOA,GAAKA,EAAE,gBAAkBA,EAAE,YAAY,UAAU,WAAa,IAAQ,EAC/E,CACO,SAASY,GAAQZ,EAAG,CACzB,OAAOA,GAAKA,EAAE,YAAY,UAAU,UAAY,IAAQ,EAC1D,CACO,SAASa,GAAQb,EAAG,CACzB,OAAOA,GAAKA,EAAE,YAAY,UAAU,UAAY,IAAQ,EAC1D,CACO,SAASc,GAAUd,EAAG,CAC3B,OAAO,OAAOA,GAAM,SACtB,CACO,SAASe,GAAYf,EAAG,CAC7B,OAAOA,GAAKA,EAAE,YAAY,UAAU,cAAgB,IAAQ,EAC9D,CACO,SAASgB,GAAOhB,EAAG,CACxB,OAAOA,GAAKA,EAAE,YAAY,UAAU,SAAW,IAAQ,EACzD,CACO,SAASiB,GAAWjB,EAAG,CAC5B,OAAO,OAAOA,GAAM,UACtB,CACO,SAASkB,GAAOlB,EAAG,CACxB,OAAOA,aAAa,IACtB,CACO,SAASmB,GAASnB,EAAG,CAC1B,OAAOA,aAAa,MACtB,CACO,SAASoB,GAASpB,EAAG,CAC1B,MAAO,CAAC,EAAEA,GAAK,OAAOA,GAAM,UAAYA,EAAE,cAAgB,QAAU,CAACG,GAAUH,CAAC,GAAK,CAACI,GAAWJ,CAAC,EACpG,CAUO,SAASqB,GAAMC,EAAQ,CAG5B,OAAKA,EAGEA,aAAkB,KAAOA,aAAkBC,IAAqB,OAAOD,EAAO,KAAQ,YAAc,OAAOA,EAAO,KAAQ,YAAc,OAAOA,EAAO,MAAS,YAAc,OAAOA,EAAO,KAAQ,WAFjM,EAGX,CACO,SAASE,GAAiBF,EAAQ,CACvC,OAAOD,GAAMC,CAAM,GAAKD,GAAMC,EAAO,CAAC,GAAKD,GAAMC,EAAO,CAAC,CAC3D,CACO,SAASG,GAAoBH,EAAQ,CAC1C,OAAOD,GAAMC,CAAM,GAAKF,GAASE,EAAO,aAAa,CACvD,CACO,SAASI,GAAO1B,EAAG,CACxB,OAAOA,IAAM,IACf,CACO,SAAS2B,GAAY3B,EAAG,CAC7B,OAAOA,IAAM,MACf,CACO,SAAS4B,GAAe5B,EAAG,CAChC,OAAOA,GAAKA,EAAE,iBAAmB,IAAQA,EAAE,YAAY,UAAU,SAAW,IAAQ,EACtF,CACO,SAAS6B,GAAY7B,EAAG,CAC7B,OAAOA,GAAKA,EAAE,cAAgB,IAAQA,EAAE,YAAY,UAAU,SAAW,IAAQ,EACnF,CACO,SAAS8B,GAAiB9B,EAAG,CAClC,OAAOA,GAAKA,EAAE,mBAAqB,IAAQA,EAAE,YAAY,UAAU,SAAW,IAAQ,EACxF,CACO,SAAS+B,GAAY/B,EAAG,CAC7B,OAAOA,GAAKA,EAAE,cAAgB,IAAQA,EAAE,YAAY,UAAU,SAAW,IAAQ,EACnF,CACO,SAASgC,GAAkBhC,EAAG,CACnC,OAAOA,GAAKA,EAAE,oBAAsB,IAAQA,EAAE,YAAY,UAAU,SAAW,IAAQ,EACzF,CACO,SAASiC,GAAejC,EAAG,CAChC,OAAOA,GAAKA,EAAE,iBAAmB,IAAQA,EAAE,YAAY,UAAU,SAAW,IAAQ,EACtF,CAYO,SAASkC,GAAUC,EAAM,CAC9B,OAAOF,GAAeE,CAAI,GAAKC,GAAeD,CAAI,GAAKA,EAAK,KAAK,SAAW,GAAKF,GAAeE,EAAK,KAAK,CAAC,CAAC,GAAK,MAAM,SAASA,EAAK,EAAE,CACzI,CACO,SAASE,GAAyBrC,EAAG,CAC1C,OAAOA,GAAKA,EAAE,2BAA6B,IAAQA,EAAE,YAAY,UAAU,SAAW,IAAQ,EAChG,CACO,SAASsC,GAAetC,EAAG,CAChC,OAAOA,GAAKA,EAAE,iBAAmB,IAAQA,EAAE,YAAY,UAAU,SAAW,IAAQ,EACtF,CACO,SAASuC,GAAYvC,EAAG,CAC7B,OAAOA,GAAKA,EAAE,cAAgB,IAAQA,EAAE,YAAY,UAAU,SAAW,IAAQ,EACnF,CACO,SAASwC,GAAOxC,EAAG,CACxB,OAAOA,GAAKA,EAAE,SAAW,IAAQA,EAAE,YAAY,UAAU,SAAW,IAAQ,EAC9E,CACO,SAASyC,GAAazC,EAAG,CAC9B,OAAOA,GAAKA,EAAE,eAAiB,IAAQA,EAAE,YAAY,UAAU,SAAW,IAAQ,EACpF,CACO,SAASoC,GAAepC,EAAG,CAChC,OAAOA,GAAKA,EAAE,iBAAmB,IAAQA,EAAE,YAAY,UAAU,SAAW,IAAQ,EACtF,CACO,SAAS0C,GAAkB1C,EAAG,CACnC,OAAOA,GAAKA,EAAE,oBAAsB,IAAQA,EAAE,YAAY,UAAU,SAAW,IAAQ,EACzF,CACO,SAAS2C,GAAY3C,EAAG,CAC7B,OAAOA,GAAKA,EAAE,cAAgB,IAAQA,EAAE,YAAY,UAAU,SAAW,IAAQ,EACnF,CACO,SAAS4C,GAAiB5C,EAAG,CAClC,OAAOA,GAAKA,EAAE,mBAAqB,IAAQA,EAAE,YAAY,UAAU,SAAW,IAAQ,EACxF,CACO,SAAS6C,GAAa7C,EAAG,CAC9B,OAAOA,GAAKA,EAAE,eAAiB,IAAQA,EAAE,YAAY,UAAU,SAAW,IAAQ,EACpF,CACO,SAAS8C,GAAQ9C,EAAG,CACzB,OAAOA,GAAKA,EAAE,YAAY,UAAU,UAAY,IAAQ,EAC1D,CACO,SAAS+C,GAAO/C,EAAG,CACxB,IAAI,EAAI,OAAOA,EACf,OAAI,IAAM,SACJA,IAAM,KAAa,OACnBC,GAAYD,CAAC,EAAU,YACvBA,EAAE,aAAeA,EAAE,YAAY,KAAaA,EAAE,YAAY,KACvD,SAEF,CACT,CCrLO,SAASgD,GAAMC,EAAG,CACvB,IAAIC,EAAO,OAAOD,EAGlB,GAAIC,IAAS,UAAYA,IAAS,UAAYA,IAAS,UAAYA,IAAS,WAAaD,IAAM,MAAQA,IAAM,OAC3G,OAAOA,EAIT,GAAI,OAAOA,EAAE,OAAU,WACrB,OAAOA,EAAE,MAAM,EAIjB,GAAI,MAAM,QAAQA,CAAC,EACjB,OAAOA,EAAE,IAAI,SAAUE,EAAO,CAC5B,OAAOH,GAAMG,CAAK,CACpB,CAAC,EAEH,GAAIF,aAAa,KAAM,OAAO,IAAI,KAAKA,EAAE,QAAQ,CAAC,EAClD,GAAIG,GAAYH,CAAC,EAAG,OAAOA,EAG3B,GAAII,GAASJ,CAAC,EACZ,OAAOK,IAAUL,EAAGD,EAAK,EAE3B,MAAM,IAAI,UAAU,+CAA+C,OAAOC,EAAG,GAAG,CAAC,CACnF,CAQO,SAASK,IAAUC,EAAQC,EAAU,CAC1C,IAAIR,EAAQ,CAAC,EACb,QAASS,KAAOF,EACVG,GAAeH,EAAQE,CAAG,IAC5BT,EAAMS,CAAG,EAAID,EAASD,EAAOE,CAAG,CAAC,GAGrC,OAAOT,CACT,CAQO,SAASW,GAAOC,EAAGC,EAAG,CAC3B,QAASC,KAAQD,EACXH,GAAeG,EAAGC,CAAI,IACxBF,EAAEE,CAAI,EAAID,EAAEC,CAAI,GAGpB,OAAOF,CACT,CAQO,SAASG,GAAWH,EAAGC,EAAG,CAE/B,GAAI,MAAM,QAAQA,CAAC,EACjB,MAAM,IAAI,UAAU,wCAAwC,EAE9D,QAASC,KAAQD,EAGf,GAAIH,GAAeG,EAAGC,CAAI,GAAK,EAAEA,KAAQ,OAAO,YAAc,EAAEA,KAAQ,SAAS,WAC/E,GAAID,EAAEC,CAAI,GAAKD,EAAEC,CAAI,EAAE,cAAgB,OACjCF,EAAEE,CAAI,IAAM,SACdF,EAAEE,CAAI,EAAI,CAAC,GAETF,EAAEE,CAAI,GAAKF,EAAEE,CAAI,EAAE,cAAgB,OACrCC,GAAWH,EAAEE,CAAI,EAAGD,EAAEC,CAAI,CAAC,EAE3BF,EAAEE,CAAI,EAAID,EAAEC,CAAI,MAEb,IAAI,MAAM,QAAQD,EAAEC,CAAI,CAAC,EAC9B,MAAM,IAAI,UAAU,wCAAwC,EAE5DF,EAAEE,CAAI,EAAID,EAAEC,CAAI,EAItB,OAAOF,CACT,CASO,SAASI,GAAgBJ,EAAGC,EAAG,CACpC,IAAIC,EAAMG,EAAGC,EACb,GAAI,MAAM,QAAQN,CAAC,EAAG,CAIpB,GAHI,CAAC,MAAM,QAAQC,CAAC,GAGhBD,EAAE,SAAWC,EAAE,OACjB,MAAO,GAET,IAAKI,EAAI,EAAGC,EAAMN,EAAE,OAAQK,EAAIC,EAAKD,IACnC,GAAI,CAACD,GAAgBJ,EAAEK,CAAC,EAAGJ,EAAEI,CAAC,CAAC,EAC7B,MAAO,GAGX,MAAO,EACT,KAAO,IAAI,OAAOL,GAAM,WACtB,OAAOA,IAAMC,EACR,GAAID,aAAa,OAAQ,CAC9B,GAAI,MAAM,QAAQC,CAAC,GAAK,EAAEA,aAAa,QACrC,MAAO,GAET,IAAKC,KAAQF,EAEX,GAAI,EAAEE,KAAQD,IAAM,CAACG,GAAgBJ,EAAEE,CAAI,EAAGD,EAAEC,CAAI,CAAC,EACnD,MAAO,GAGX,IAAKA,KAAQD,EAEX,GAAI,EAAEC,KAAQF,GACZ,MAAO,GAGX,MAAO,EACT,KACE,QAAOA,IAAMC,EAEjB,CAOO,SAASM,GAAYC,EAAc,CACxC,IAAIC,EAAkB,CAAC,EACvB,OAAAC,GAAaF,EAAcC,CAAe,EACnCA,CACT,CAGA,SAASC,GAAaF,EAAcC,EAAiB,CACnD,QAASP,KAAQM,EACf,GAAIV,GAAeU,EAAcN,CAAI,EAAG,CACtC,IAAIX,EAAQiB,EAAaN,CAAI,EACzB,OAAOX,GAAU,UAAYA,IAAU,KACzCmB,GAAanB,EAAOkB,CAAe,EAEnCA,EAAgBP,CAAI,EAAIX,CAE5B,CAEJ,CA8BO,SAASoB,GAAKC,EAAQC,EAAMC,EAAe,CAChD,IAAIC,EAAiB,GACjBC,EACJ,OAAO,eAAeJ,EAAQC,EAAM,CAClC,IAAK,UAAe,CAClB,OAAIE,IACFC,EAASF,EAAc,EACvBC,EAAiB,IAEZC,CACT,EACA,IAAK,SAAaC,EAAO,CACvBD,EAASC,EACTF,EAAiB,EACnB,EACA,aAAc,GACd,WAAY,EACd,CAAC,CACH,CA+BO,SAASG,GAAeC,EAAQC,EAAU,CAC/C,OAAOD,GAAU,OAAO,eAAe,KAAKA,EAAQC,CAAQ,CAC9D,CAcO,SAASC,GAAgBF,EAAQ,CACtC,OAAOA,GAAU,OAAOA,EAAO,SAAY,UAC7C,CAmFO,SAASG,GAAYC,EAAQC,EAAY,CAE9C,QADIC,EAAO,CAAC,EACHC,EAAI,EAAGA,EAAIF,EAAW,OAAQE,IAAK,CAC1C,IAAIC,EAAMH,EAAWE,CAAC,EAClBE,EAAQL,EAAOI,CAAG,EAClBC,IAAU,SACZH,EAAKE,CAAG,EAAIC,EAEhB,CACA,OAAOH,CACT,CC5WO,IAAII,GAAiB,CAAC,SAAU,OAAO,EACnCC,GAAiB,CAAC,SAAU,YAAa,UAAU,EAEvD,SAASC,GAAcC,EAAQC,EAAM,CA8C1C,SAASC,EAAQC,EAAS,CACxB,GAAIA,EAAS,CACX,GAAIA,EAAQ,UAAY,OAAW,CAEjC,QAAQ,KAAK,+FAA+F,EAC5G,IAAIC,EAAaC,GAAMF,CAAO,EAC9B,OAAAC,EAAW,OAASD,EAAQ,QAC5BC,EAAW,OAASD,EAAQ,QAAU,KACtC,OAAOC,EAAW,QACXF,EAAQE,CAAU,CAC3B,CACA,IAAIE,EAAOD,GAAML,CAAM,EAGvBO,GAAeJ,EAAS,SAAUN,EAAc,EAChDU,GAAeJ,EAAS,SAAUL,EAAc,EAGhDU,GAAWR,EAAQG,CAAO,EAC1B,IAAIM,EAAOJ,GAAML,CAAM,EACnBU,EAAUL,GAAMF,CAAO,EAG3B,OAAAF,EAAK,SAAUQ,EAAMH,EAAMI,CAAO,EAC3BD,CACT,KACE,QAAOJ,GAAML,CAAM,CAEvB,CAGA,OAAAE,EAAQ,eAAiBL,GACzBK,EAAQ,eAAiBJ,GAGzB,OAAO,KAAKa,EAAc,EAAE,QAAQC,GAAO,CACzC,OAAO,eAAeV,EAASU,EAAK,CAClC,IAAK,IAAMZ,EAAOY,CAAG,EACrB,WAAY,GACZ,aAAc,EAChB,CAAC,CACH,CAAC,EACMV,CACT,CAQA,SAASK,GAAeJ,EAASU,EAAMC,EAAQ,CACzCX,EAAQU,CAAI,IAAM,QAAa,CAACC,EAAO,SAASX,EAAQU,CAAI,CAAC,GAE/D,QAAQ,KAAK,2BAA6BV,EAAQU,CAAI,EAAI,+BAAiCA,EAAO,yBAAgCC,EAAO,IAAIC,GAAS,KAAK,UAAUA,CAAK,CAAC,EAAE,KAAK,IAAI,EAAI,GAAG,CAEjM,CC3GA,IAAAC,GAAA,GAAAC,GAAAD,GAAA,eAAAE,GAAA,uBAAAC,GAAA,eAAAC,GAAA,gBAAAC,GAAA,eAAAC,GAAA,gBAAAC,GAAA,eAAAC,GAAA,gBAAAC,GAAA,cAAAC,GAAA,oBAAAC,GAAA,cAAAC,GAAA,uBAAAC,GAAA,gBAAAC,GAAA,yBAAAC,GAAA,cAAAC,GAAA,oBAAAC,GAAA,eAAAC,GAAA,gBAAAC,GAAA,eAAAC,GAAA,gBAAAC,GAAA,yBAAAC,GAAA,eAAAC,GAAA,gBAAAC,GAAA,gBAAAC,GAAA,qBAAAC,GAAA,mBAAAC,GAAA,sBAAAC,GAAA,yBAAAC,GAAA,iBAAAC,GAAA,oBAAAC,GAAA,cAAAC,GAAA,iBAAAC,GAAA,0BAAAC,GAAA,iBAAAC,GAAA,gBAAAC,GAAA,yBAAAC,GAAA,iBAAAC,GAAA,oBAAAC,GAAA,uBAAAC,GAAA,qBAAAC,GAAA,oBAAAC,GAAA,kBAAAC,GAAA,kBAAAC,GAAA,eAAAC,GAAA,eAAAC,GAAA,gBAAAC,GAAA,qBAAAC,GAAA,kCAAAC,GAAA,gBAAAC,GAAA,iBAAAC,GAAA,0BAAAC,GAAA,uBAAAC,GAAA,8BAAAC,GAAA,kBAAAC,GAAA,yBAAAC,GAAA,sBAAAC,GAAA,kBAAAC,GAAA,kBAAAC,GAAA,uBAAAC,GAAA,sBAAAC,GAAA,iBAAAC,GAAA,0BAAAC,GAAA,0BAAAC,GAAA,6BAAAC,GAAA,eAAAC,GAAA,uBAAAC,GAAA,eAAAC,GAAA,cAAAC,GAAA,eAAAC,GAAA,cAAAC,GAAA,eAAAC,GAAA,kBAAAC,GAAA,gBAAAC,GAAA,qBAAAC,GAAA,gBAAAC,GAAA,cAAAC,GAAA,eAAAC,GAAA,qBAAAC,GAAA,eAAAC,GAAA,iBAAAC,GAAA,0BAAAC,GAAA,oBAAAC,GAAA,2BAAAC,GAAA,qBAAAC,GAAA,cAAAC,GAAA,uBAAAC,GAAA,eAAAC,GAAA,eAAAC,GAAA,wBAAAC,GAAA,mBAAAC,GAAA,iBAAAC,GAAA,uBAAAC,GAAA,cAAAC,GAAA,oBAAAC,GAAA,sBAAAC,GAAA,iBAAAC,GAAA,YAAAC,GAAA,uBAAAC,GAAA,eAAAC,GAAA,2BAAAC,GAAA,uBAAAC,GAAA,2BAAAC,GAAA,gBAAAC,GAAA,sBAAAC,GAAA,oBAAAC,GAAA,cAAAC,GAAA,mBAAAC,GAAA,cAAAC,GAAA,eAAAC,GAAA,gBAAAC,GAAA,oBAAAC,GAAA,gBAAAC,GAAA,kBAAAC,GAAA,wBAAAC,GAAA,cAAAC,GAAA,6BAAAC,GAAA,iBAAAC,GAAA,0BAAAC,GAAA,wBAAAC,GAAA,yBAAAC,GAAA,cAAAC,GAAA,kBAAAC,GAAA,gBAAAC,GAAA,kBAAAC,GAAA,2BAAAC,GAAA,iBAAAC,GAAA,mBAAAC,GAAA,wBAAAC,GAAA,gBAAAC,GAAA,iCAAAC,GAAA,uBAAAC,GAAA,gBAAAC,GAAA,sBAAAC,GAAA,cAAAC,GAAA,4BAAAC,GAAA,8BAAAC,GAAA,kBAAAC,GAAA,wBAAAC,GAAA,0BAAAC,GAAA,eAAAC,GAAA,oBAAAC,GAAA,cAAAC,GAAA,gBAAAC,GAAA,YAAAC,GAAA,mBAAAC,GAAA,eAAAC,GAAA,aAAAC,GAAA,oCAAAC,GAAA,gBAAAC,GAAA,qBAAAC,GAAA,oBAAAC,GAAA,yBAAAC,GAAA,mBAAAC,GAAA,oBAAAC,GAAA,cAAAC,GAAA,oCAAAC,GAAA,iBAAAC,GAAA,oBAAAC,GAAA,gBAAAC,GAAA,qBAAAC,GAAA,oBAAAC,GAAA,qBAAAC,GAAA,kBAAAC,GAAA,iBAAAC,GAAA,uBAAAC,GAAA,mBAAAC,GAAA,eAAAC,GAAA,eAAAC,GAAA,cAAAC,GAAA,iBAAAC,GAAA,gBAAAC,GAAA,iBAAAC,GAAA,mBAAAC,GAAA,cAAAC,GAAA,oBAAAC,GAAA,oBAAAC,GAAA,iBAAAC,GAAA,cAAAC,GAAA,gBAAAC,GAAA,gBAAAC,GAAA,eAAAC,GAAA,oBAAAC,GAAA,iBAAAC,GAAA,oBAAAC,GAAA,cAAAC,GAAA,kBAAAC,GAAA,eAAAC,GAAA,cAAAC,GAAA,2BAAAC,GAAA,8BAAAC,GAAA,cAAAC,GAAA,uBAAAC,GAAA,iBAAAC,GAAA,sBAAAC,GAAA,4BAAAC,GAAA,6BAAAC,GAAA,yBAAAC,GAAA,cAAAC,GAAA,uBAAAC,GAAA,eAAAC,GAAA,wBAAAC,GAAA,iBAAAC,GAAA,cAAAC,GAAA,uBAAAC,GAAA,cAAAC,GAAA,eAAAC,GAAA,oBAAAC,GAAA,uBAAAC,GAAA,8BAAAC,GAAA,sBAAAC,GAAA,sBAAAC,GAAA,mBAAAC,GAAA,yBAAAC,GAAA,cAAAC,GAAA,sBAAAC,GAAA,eAAAC,GAAA,eAAAC,GAAA,cAAAC,GAAA,kBAAAC,GAAA,mBAAAC,GAAA,0BAAAC,GAAA,eAAAC,GAAA,iBAAAC,GAAA,kBAAAC,GAAA,qBAAAC,GAAA,cAAAC,GAAA,eAAAC,GAAA,uBAAAC,GAAA,aAAAC,GAAA,sBAAAC,GAAA,0BAAAC,GAAA,gBAAAC,GAAA,iBAAAC,GAAA,sBAAAC,GAAA,0BAAAC,GAAA,uBAAAC,GAAA,cAAAC,GAAA,aAAAC,GAAA,qBAAAC,GAAA,eAAAC,GAAA,uBAAAC,GAAA,yBAAAC,GAAA,uBAAAC,GAAA,qBAAAC,GAAA,4BAAAC,GAAA,qBAAAC,GAAA,yBAAAC,GAAA,cAAAC,GAAA,gBAAAC,GAAA,yBAAAC,GAAA,eAAAC,GAAA,qBAAAC,GAAA,aAAAC,GAAA,sBAAAC,GAAA,+BAAAC,GAAA,+BAAAC,GAAA,iBAAAC,GAAA,oBAAAC,GAAA,gBAAAC,GAAA,qBAAAC,GAAA,oBAAAC,GAAA,yBAAAC,GAAA,sBAAAC,GAAA,aAAAC,GAAA,gCAAAC,GAAA,yBAAAC,GAAA,mBAAAC,GAAA,kBAAAC,GAAA,iBAAAC,GAAA,kBAAAC,GAAA,oBAAAC,GAAA,kBAAAC,GAAA,0BAAAC,GAAA,wBAAAC,GAAA,iBAAAC,GAAA,yBAAAC,GAAA,gBAAAC,GAAA,cAAAC,GAAA,uBAAAC,GAAA,kBAAAC,GAAA,kBAAAC,GAAA,gBAAAC,GAAA,wBAAAC,GAAA,gBAAAC,GAAA,cAAAC,GAAA,eAAAC,GAAA,0BAAAC,GAAA,uBAAAC,GAAA,wBAAAC,GAAA,sBAAAC,GAAA,uBAAAC,GAAA,sBAAAC,GAAA,0BAAAC,GAAA,sBAAAC,GAAA,kBAAAC,GAAA,2BAAAC,GAAA,mBAAAC,GAAA,eAAAC,GAAA,mBAAAC,GAAA,2BAAAC,GAAA,uBAAAC,GAAA,cAAAC,GAAA,eAAAC,GAAA,eAAAC,GAAA,cAAAC,GAAA,kBAAAC,GAAA,oBAAAC,GAAA,mBAAAC,GAAA,eAAAC,GAAA,mBAAAC,GAAA,iBAAAC,GAAA,4BAAAC,GAAA,uBAAAC,GAAA,oBAAAC,GAAA,eAAAC,GAAA,gBAAAC,GAAA,iBAAAC,GAAA,kBAAAC,GAAA,cAAAC,GAAA,uBAAAC,GAAA,0BAAAC,GAAA,qBAAAC,GAAA,iBAAAC,GAAA,iBAAAC,GAAA,0BAAAC,GAAA,mBAAAC,GAAA,yBAAAC,GAAA,cAAAC,GAAA,uBAAAC,GAAA,oBAAAC,GAAA,qBAAAC,GAAA,wBAAAC,GAAA,cAAAC,GAAA,eAAAC,GAAA,cAAAC,GAAA,8BAAAC,GAAA,aAAAC,GAAA,gBAAAC,GAAA,oBAAAC,GAAA,eAAAC,GAAA,iBAAAC,GAAA,gBAAAC,GAAA,qBAAAC,GAAA,oBAAAC,GAAA,kBAAAC,GAAA,oBAAAC,GAAA,uBAAAC,GAAA,qBAAAC,GAAA,sBAAAC,GAAA,iBAAAC,GAAA,oBAAAC,GAAA,0BAAAC,GAAA,mBAAAC,GAAA,4BAAAC,GAAA,kBAAAC,GAAA,0BAAAC,GAAA,2BAAAC,GAAA,eAAAC,GAAA,cAAAC,GAAA,gBAAAC,GAAA,eAAAC,GAAA,iBAAAC,KCsCA,IAAAC,GAA0B,WCZnB,SAASC,EAAQC,EAAMC,EAAcC,EAAQC,EAAM,CACxD,SAASC,EAAgBC,EAAO,CAI9B,IAAIC,EAAOC,GAAYF,EAAOJ,EAAa,IAAIO,EAAqB,CAAC,EACrE,OAAAC,IAAmBT,EAAMC,EAAcI,CAAK,EACrCH,EAAOI,CAAI,CACpB,CACA,OAAAF,EAAgB,UAAY,GAC5BA,EAAgB,GAAKJ,EACrBI,EAAgB,aAAeH,EAAa,MAAM,EAAE,KAAK,EACrDE,IACFC,EAAgB,KAAOD,GAElBC,CACT,CAuDO,SAASM,GAAUC,EAAK,CAC7B,OAAO,OAAOA,GAAQ,YAAc,OAAOA,EAAI,IAAO,UAAY,MAAM,QAAQA,EAAI,YAAY,CAClG,CAWO,SAASC,IAAmBC,EAAMC,EAAcC,EAAO,CAC5D,IAAIC,EAAaF,EAAa,OAAOG,GAAc,CAACC,IAAqBD,CAAU,CAAC,EACnF,MAAMA,GAAcF,EAAME,CAAU,IAAM,MAAS,EACpD,GAAI,CAACD,EAAY,CACf,IAAIG,EAAsBL,EAAa,OAAOG,GAAcF,EAAME,CAAU,IAAM,MAAS,EAG3F,MAAM,IAAI,MAAM,2BAA4B,OAAOJ,EAAM,KAAM,EAAI,kCAAkC,OAAOM,EAAoB,IAAIC,GAAK,IAAK,OAAOA,EAAG,GAAI,CAAC,EAAE,KAAK,IAAI,EAAG,GAAG,CAAC,CACjL,CACF,CACO,SAASF,IAAqBD,EAAY,CAC/C,OAAOA,GAAcA,EAAW,CAAC,IAAM,GACzC,CACO,SAASI,GAAsBJ,EAAY,CAChD,OAAOA,GAAcA,EAAW,CAAC,IAAM,IAAMA,EAAW,MAAM,CAAC,EAAIA,CACrE,CClHO,SAASK,GAAUC,EAAO,CAC/B,OAAI,OAAOA,GAAU,UACZ,GAEF,SAASA,CAAK,EAAIA,IAAU,KAAK,MAAMA,CAAK,EAAI,EACzD,CAOO,SAASC,IAAaC,EAAK,CAEhC,MAAO,UAAU,KAAKA,CAAG,CAC3B,CAoBO,SAASC,GAAeC,EAAWC,EAAQ,CAChD,OAAIA,EAAO,SAAW,UAAY,CAACJ,IAAaG,CAAS,EAChDC,EAAO,eAETA,EAAO,MAChB,CAOO,IAAIC,GAAO,KAAK,MAAQ,SAAUC,EAAG,CAC1C,OAAIA,EAAI,EACC,EACEA,EAAI,EACN,GAEA,CAEX,EAOWC,GAAO,KAAK,MAAQ,SAAcD,EAAG,CAC9C,OAAO,KAAK,IAAIA,CAAC,EAAI,KAAK,GAC5B,EAOWE,GAAQ,KAAK,OAAS,SAAeF,EAAG,CACjD,OAAO,KAAK,IAAIA,CAAC,EAAI,KAAK,IAC5B,EAOWG,GAAQ,KAAK,OAAS,SAAUH,EAAG,CAC5C,OAAO,KAAK,IAAIA,EAAI,CAAC,CACvB,EAWWI,GAAO,KAAK,MAAQ,SAAcJ,EAAG,CAC9C,GAAIA,IAAM,EACR,OAAOA,EAET,IAAIK,EAASL,EAAI,EACbM,EACJ,OAAID,IACFL,EAAI,CAACA,GAEH,SAASA,CAAC,GACZM,EAAS,KAAK,IAAI,KAAK,IAAIN,CAAC,EAAI,CAAC,EAEjCM,GAAUN,GAAKM,EAASA,GAAU,EAAIA,GAAU,GAEhDA,EAASN,EAEJK,EAAS,CAACC,EAASA,CAC5B,EAOWC,GAAQ,KAAK,OAAS,SAAeP,EAAG,CACjD,OAAOA,GAAK,MAAQA,GAAK,MAAQ,KAAK,IAAIA,CAAC,EAAI,EAAIA,EAAIA,EAAIA,EAAI,EAAIA,EAAIA,EAAIA,EAAI,CACjF,EASA,SAASQ,GAAmBC,EAAGC,EAAMC,EAAM,CACzC,IAAIC,EAAW,CACb,EAAG,KACH,EAAG,KACH,GAAI,IACN,EACIC,EAASD,EAASF,CAAI,EACtBI,EAAS,GACb,GAAIH,EAAM,CACR,GAAIA,EAAO,EACT,MAAM,IAAI,MAAM,gCAAgC,EAElD,GAAI,CAACnB,GAAUmB,CAAI,EACjB,MAAM,IAAI,MAAM,yBAAyB,EAE3C,GAAIF,EAAI,IAAME,EAAO,GAAK,GAAKF,EAAI,EAAE,IAAME,EAAO,IAChD,MAAM,IAAI,MAAM,8BAA8B,OAAOA,EAAO,EAAG,MAAM,EAAE,OAAOA,EAAO,EAAG,KAAK,CAAC,EAEhG,GAAI,CAACnB,GAAUiB,CAAC,EACd,MAAM,IAAI,MAAM,0BAA0B,EAExCA,EAAI,IACNA,EAAIA,EAAI,GAAKE,GAEfG,EAAS,IAAI,OAAOH,CAAI,CAC1B,CACA,IAAIZ,EAAO,GACX,OAAIU,EAAI,IACNA,EAAI,CAACA,EACLV,EAAO,KAEF,GAAG,OAAOA,CAAI,EAAE,OAAOc,CAAM,EAAE,OAAOJ,EAAE,SAASC,CAAI,CAAC,EAAE,OAAOI,CAAM,CAC9E,CAsFO,SAASC,GAAOtB,EAAOuB,EAAS,CACrC,GAAI,OAAOA,GAAY,WAErB,OAAOA,EAAQvB,CAAK,EAItB,GAAIA,IAAU,IACZ,MAAO,WACF,GAAIA,IAAU,KACnB,MAAO,YACF,GAAI,MAAMA,CAAK,EACpB,MAAO,MAET,GAAI,CACF,SAAAwB,EACA,UAAAC,EACA,SAAAC,CACF,EAAIC,GAAuBJ,CAAO,EAGlC,OAAQC,EAAU,CAChB,IAAK,QACH,OAAOI,GAAQ5B,EAAOyB,CAAS,EACjC,IAAK,cACH,OAAOI,GAAc7B,EAAOyB,CAAS,EACvC,IAAK,cACH,OAAOK,IAAc9B,EAAOyB,CAAS,EACvC,IAAK,MACH,OAAOV,GAAmBf,EAAO,EAAG0B,CAAQ,EAC9C,IAAK,MACH,OAAOX,GAAmBf,EAAO,EAAG0B,CAAQ,EAC9C,IAAK,MACH,OAAOX,GAAmBf,EAAO,GAAI0B,CAAQ,EAC/C,IAAK,OAEH,OAAOK,IAAY/B,EAAOyB,EAAWF,CAAO,EAAE,QAAQ,sBAAuB,UAAY,CACvF,IAAIS,EAAS,UAAU,CAAC,EACpBC,EAAI,UAAU,CAAC,EACnB,OAAOD,IAAW,IAAMA,EAASC,EAAIA,CACvC,CAAC,EACH,QACE,MAAM,IAAI,MAAM,qBAAuBT,EAAW,kEAAuE,CAC7H,CACF,CAUO,SAASG,GAAuBJ,EAAS,CAE9C,IAAIC,EAAW,OACXC,EACAC,EACJ,GAAIH,IAAY,OACd,GAAIW,GAASX,CAAO,EAClBE,EAAYF,UACHY,GAAYZ,CAAO,EAC5BE,EAAYF,EAAQ,SAAS,UACpBa,GAASb,CAAO,EACrBA,EAAQ,YAAc,SACxBE,EAAYY,GAAiBd,EAAQ,UAAW,IAAM,CACpD,MAAM,IAAI,MAAM,kDAAkD,CACpE,CAAC,GAECA,EAAQ,WAAa,SACvBG,EAAWW,GAAiBd,EAAQ,SAAU,IAAM,CAClD,MAAM,IAAI,MAAM,iDAAiD,CACnE,CAAC,GAECA,EAAQ,WACVC,EAAWD,EAAQ,cAGrB,OAAM,IAAI,MAAM,oEAAoE,EAGxF,MAAO,CACL,SAAAC,EACA,UAAAC,EACA,SAAAC,CACF,CACF,CAQO,SAASY,GAAYtC,EAAO,CAEjC,IAAIuC,EAAQ,OAAOvC,CAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,EAC/E,GAAI,CAACuC,EACH,MAAM,IAAI,YAAY,kBAAoBvC,CAAK,EAEjD,IAAIM,EAAOiC,EAAM,CAAC,EACdP,EAASO,EAAM,CAAC,EAChBC,EAAW,WAAWD,EAAM,CAAC,GAAK,GAAG,EACrCE,EAAMT,EAAO,QAAQ,GAAG,EAC5BQ,GAAYC,IAAQ,GAAKA,EAAM,EAAIT,EAAO,OAAS,EACnD,IAAIU,EAAeV,EAAO,QAAQ,IAAK,EAAE,EACxC,QAAQ,MAAO,SAAUW,EAAO,CAE/B,OAAAH,GAAYG,EAAM,OACX,EACT,CAAC,EAAE,QAAQ,MAAO,EAAE,EACnB,MAAM,EAAE,EAAE,IAAI,SAAUC,EAAG,CAC1B,OAAO,SAASA,CAAC,CACnB,CAAC,EACD,OAAIF,EAAa,SAAW,IAC1BA,EAAa,KAAK,CAAC,EACnBF,KAEK,CACL,KAAAlC,EACA,aAAAoC,EACA,SAAAF,CACF,CACF,CAOO,SAASV,IAAc9B,EAAOyB,EAAW,CAC9C,GAAI,MAAMzB,CAAK,GAAK,CAAC,SAASA,CAAK,EACjC,OAAO,OAAOA,CAAK,EAErB,IAAI6C,EAAQP,GAAYtC,CAAK,EACzB8C,EAAUC,GAAYF,EAAOpB,CAAS,EACtCQ,EAAIa,EAAQ,SACZE,EAAIF,EAAQ,aAGZG,EAAShB,EAAI,IAAM,EAAIA,EAAIA,EAAI,EAAIA,EAAI,EAAIA,EAAI,EAAIA,EAAIA,EAAI,EAC/D,GAAIC,GAAST,CAAS,EAEpB,KAAOA,EAAYuB,EAAE,QAAUf,EAAIgB,EAAS,EAAID,EAAE,QAChDA,EAAE,KAAK,CAAC,MAMV,SADIE,EAAe,KAAK,IAAIjB,EAAIgB,CAAM,GAAKD,EAAE,OAAS,GAC7CG,EAAI,EAAGA,EAAID,EAAcC,IAChCH,EAAE,KAAK,CAAC,EASZ,QAJII,EAAU,KAAK,IAAInB,EAAIgB,CAAM,EAC7BI,EAAa,EAGVD,EAAU,GACfC,IACAD,IAKF,IAAIE,EAAWN,EAAE,MAAMK,CAAU,EAAE,KAAK,EAAE,EACtCE,EAAarB,GAAST,CAAS,GAAK6B,EAAS,QAAUA,EAAS,MAAM,OAAO,EAAI,IAAMA,EAAW,GAClGpD,EAAM8C,EAAE,MAAM,EAAGK,CAAU,EAAE,KAAK,EAAE,EAAIE,EAAa,KAAOtB,GAAK,EAAI,IAAM,IAAMgB,EAAO,SAAS,EACrG,OAAOH,EAAQ,KAAO5C,CACxB,CAQO,SAAS0B,GAAQ5B,EAAOyB,EAAW,CACxC,GAAI,MAAMzB,CAAK,GAAK,CAAC,SAASA,CAAK,EACjC,OAAO,OAAOA,CAAK,EAErB,IAAIwD,EAAalB,GAAYtC,CAAK,EAC9B8C,EAAU,OAAOrB,GAAc,SAAWsB,GAAYS,EAAYA,EAAW,SAAW,EAAI/B,CAAS,EAAI+B,EACzGR,EAAIF,EAAQ,aACZW,EAAIX,EAAQ,SAAW,EAGvBY,EAAKD,GAAKhC,GAAa,GAC3B,OAAIuB,EAAE,OAASU,IACbV,EAAIA,EAAE,OAAOL,GAAMe,EAAKV,EAAE,MAAM,CAAC,GAI/BS,EAAI,IACNT,EAAIL,GAAM,CAACc,EAAI,CAAC,EAAE,OAAOT,CAAC,EAC1BS,EAAI,GAIFA,EAAIT,EAAE,QACRA,EAAE,OAAOS,EAAG,EAAGA,IAAM,EAAI,KAAO,GAAG,EAE9BX,EAAQ,KAAOE,EAAE,KAAK,EAAE,CACjC,CASO,SAASnB,GAAc7B,EAAOyB,EAAW,CAC9C,GAAI,MAAMzB,CAAK,GAAK,CAAC,SAASA,CAAK,EACjC,OAAO,OAAOA,CAAK,EAIrB,IAAI6C,EAAQP,GAAYtC,CAAK,EACzB8C,EAAUrB,EAAYsB,GAAYF,EAAOpB,CAAS,EAAIoB,EACtDG,EAAIF,EAAQ,aACZb,EAAIa,EAAQ,SAGZE,EAAE,OAASvB,IACbuB,EAAIA,EAAE,OAAOL,GAAMlB,EAAYuB,EAAE,MAAM,CAAC,GAI1C,IAAIW,EAAQX,EAAE,MAAM,EACpB,OAAOF,EAAQ,KAAOa,GAASX,EAAE,OAAS,EAAI,IAAMA,EAAE,KAAK,EAAE,EAAI,IAAM,KAAOf,GAAK,EAAI,IAAM,IAAMA,CACrG,CAYO,SAASF,IAAY/B,EAAOyB,EAAWF,EAAS,CACrD,GAAI,MAAMvB,CAAK,GAAK,CAAC,SAASA,CAAK,EACjC,OAAO,OAAOA,CAAK,EAIrB,IAAI4D,EAAWC,GAAqEtC,GAAQ,SAAU,EAAE,EACpGuC,EAAWD,GAAqEtC,GAAQ,SAAU,CAAC,EACnGsB,EAAQP,GAAYtC,CAAK,EACzB8C,EAAUrB,EAAYsB,GAAYF,EAAOpB,CAAS,EAAIoB,EAC1D,GAAIC,EAAQ,SAAWc,GAAYd,EAAQ,UAAYgB,EAErD,OAAOjC,GAAc7B,EAAOyB,CAAS,EAErC,IAAIuB,EAAIF,EAAQ,aACZb,EAAIa,EAAQ,SAGZE,EAAE,OAASvB,IACbuB,EAAIA,EAAE,OAAOL,GAAMlB,EAAYuB,EAAE,MAAM,CAAC,GAK1CA,EAAIA,EAAE,OAAOL,GAAMV,EAAIe,EAAE,OAAS,GAAKA,EAAE,OAASvB,EAAYA,EAAYuB,EAAE,OAAS,EAAE,CAAC,EAGxFA,EAAIL,GAAM,CAACV,CAAC,EAAE,OAAOe,CAAC,EACtB,IAAIP,EAAMR,EAAI,EAAIA,EAAI,EACtB,OAAIQ,EAAMO,EAAE,OAAS,GACnBA,EAAE,OAAOP,EAAM,EAAG,EAAG,GAAG,EAEnBK,EAAQ,KAAOE,EAAE,KAAK,EAAE,CAEnC,CAUO,SAASD,GAAYF,EAAOpB,EAAW,CAU5C,QARIqB,EAAU,CACZ,KAAMD,EAAM,KACZ,aAAcA,EAAM,aACpB,SAAUA,EAAM,QAClB,EACIG,EAAIF,EAAQ,aAGTrB,GAAa,GAClBuB,EAAE,QAAQ,CAAC,EACXF,EAAQ,WACRrB,IAEF,GAAIuB,EAAE,OAASvB,EAAW,CACxB,IAAIsC,EAAUf,EAAE,OAAOvB,EAAWuB,EAAE,OAASvB,CAAS,EACtD,GAAIsC,EAAQ,CAAC,GAAK,EAAG,CACnB,IAAIZ,EAAI1B,EAAY,EAEpB,IADAuB,EAAEG,CAAC,IACIH,EAAEG,CAAC,IAAM,IACdH,EAAE,IAAI,EACFG,IAAM,IACRH,EAAE,QAAQ,CAAC,EACXF,EAAQ,WACRK,KAEFA,IACAH,EAAEG,CAAC,GAEP,CACF,CACA,OAAOL,CACT,CAOA,SAASH,GAAMqB,EAAQ,CAErB,QADIC,EAAM,CAAC,EACFd,EAAI,EAAGA,EAAIa,EAAQb,IAC1Bc,EAAI,KAAK,CAAC,EAEZ,OAAOA,CACT,CAaO,SAASjC,GAAOhC,EAAO,CAC5B,OAAOA,EAAM,cAAc,EAAE,QAAQ,OAAQ,EAAE,EAC9C,QAAQ,aAAc,EAAE,EACxB,MACH,CAKO,IAAIkE,IAAc,OAAO,SAAW,qBAmBpC,SAASC,GAAYC,EAAGC,EAAG,CAChC,IAAIC,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,KAC7EC,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,EACjF,GAAID,GAAU,EACZ,MAAM,IAAI,MAAM,2CAA2C,EAE7D,GAAIC,EAAS,EACX,MAAM,IAAI,MAAM,uCAAuC,EAIzD,OAAI,MAAMH,CAAC,GAAK,MAAMC,CAAC,EACd,GAEL,CAAC,SAASD,CAAC,GAAK,CAAC,SAASC,CAAC,EACtBD,IAAMC,EAEXD,IAAMC,EACD,GAIF,KAAK,IAAID,EAAIC,CAAC,GAAK,KAAK,IAAIC,EAAS,KAAK,IAAI,KAAK,IAAIF,CAAC,EAAG,KAAK,IAAIC,CAAC,CAAC,EAAGE,CAAM,CACxF,CAOO,IAAIC,GAAQ,KAAK,OAAS,SAAUjE,EAAG,CAC5C,OAAO,KAAK,IAAI,KAAK,KAAKA,EAAIA,EAAI,CAAC,EAAIA,CAAC,CAC1C,EACWkE,GAAQ,KAAK,OAAS,SAAUlE,EAAG,CAC5C,OAAO,KAAK,IAAI,KAAK,KAAKA,EAAIA,EAAI,CAAC,EAAIA,CAAC,CAC1C,EAOWmE,GAAQ,KAAK,OAAS,SAAUnE,EAAG,CAC5C,OAAO,KAAK,KAAK,EAAIA,IAAM,EAAIA,EAAE,EAAI,CACvC,EAOWoE,GAAO,KAAK,MAAQ,SAAUpE,EAAG,CAC1C,OAAQ,KAAK,IAAIA,CAAC,EAAI,KAAK,IAAI,CAACA,CAAC,GAAK,CACxC,EAOWqE,GAAO,KAAK,MAAQ,SAAUrE,EAAG,CAC1C,OAAQ,KAAK,IAAIA,CAAC,EAAI,KAAK,IAAI,CAACA,CAAC,GAAK,CACxC,EAOWsE,GAAO,KAAK,MAAQ,SAAUtE,EAAG,CAC1C,IAAI0B,EAAI,KAAK,IAAI,EAAI1B,CAAC,EACtB,OAAQ0B,EAAI,IAAMA,EAAI,EACxB,EAQO,SAAS6C,GAASvE,EAAGwE,EAAG,CAC7B,IAAIC,EAAQzE,EAAI,EAAI,GAAOA,EAAI,EAAI,GAAQ,EAAIA,IAAM,IACjD0E,EAAQF,EAAI,EAAI,GAAOA,EAAI,EAAI,GAAQ,EAAIA,IAAM,IACrD,OAAOC,EAAQC,EAAQ,CAAC1E,EAAIA,CAC9B,CACA,SAAS8B,GAAiBrC,EAAOkF,EAAS,CACxC,GAAIhD,GAASlC,CAAK,EAChB,OAAOA,EACF,GAAImC,GAAYnC,CAAK,EAC1B,OAAOA,EAAM,SAAS,EAEtBkF,EAAQ,CAEZ,CACA,SAASrB,GAAmB7D,EAAOmF,EAAc,CAC/C,OAAIjD,GAASlC,CAAK,EACTA,EACEmC,GAAYnC,CAAK,EACnBA,EAAM,SAAS,EAEfmF,CAEX,CFprBA,IAAIC,GAAgB,UAAwB,CAG1C,OAAAA,GAAgB,GAAAC,QAAc,OACvB,GAAAA,OACT,EACIC,IAAe,CAAC,aAAc,WAAY,eAAgB,WAAW,EAO9DC,GAA6BC,EAAQ,QAASF,IAAc,SAAqBG,EAAM,CAChG,GAAI,CACF,UAAAC,EACA,QAAAC,EACA,YAAAC,EACA,SAAAC,CACF,EAAIJ,EAIAK,EAAQV,GAAc,EAK1B,OAAAU,EAAM,MAAM,EACZA,EAAM,SAAS,CAAC,CACd,KAAM,SACN,KAAMC,EACR,EAAG,CACD,KAAM,UACN,KAAMC,EACR,EAAG,CACD,KAAM,YACN,KAAMC,EACR,EAAG,CACD,KAAM,SACN,KAAMC,EACR,EAAG,CACD,KAAM,WACN,KAAMC,EACR,EAAG,CACD,KAAM,OACN,KAAMC,EACR,EAMA,CACE,KAAM,aACN,KAAM,GAAKC,IAAY,ypgBAAypgB,KAAK,CAAC,CACxrgB,EAAG,CACD,KAAM,SACN,KAAMA,EACR,EAAG,CACD,KAAM,QACN,KAAMC,EACR,EAAG,CACD,KAAM,QACN,KAAMC,EACR,EAAG,CACD,KAAM,SACN,KAAMC,EACR,EAAG,CACD,KAAM,cACN,KAAMC,EACR,EAAG,CACD,KAAM,eACN,KAAMC,EACR,EAAG,CACD,KAAM,QACN,KAAMC,EACR,EAAG,CACD,KAAM,QACN,KAAMC,EACR,EAAG,CACD,KAAM,UACN,KAAMC,EACR,EAAG,CACD,KAAM,YACN,KAAMC,EACR,EAAG,CACD,KAAM,OACN,KAAMC,EACR,EAAG,CACD,KAAM,WACN,KAAMC,EACR,EAAG,CACD,KAAM,OACN,KAAMC,EACR,EAAG,CACD,KAAM,SACN,KAAMC,EACR,EAAG,CACD,KAAM,OACN,KAAMC,EACR,EAAG,CACD,KAAM,YACN,KAAMC,EACR,EAAG,CACD,KAAM,eACN,KAAMC,EACR,EAAG,CACD,KAAM,YACN,KAAMC,EACR,EAAG,CACD,KAAM,iBACN,KAAMC,EACR,EAAG,CACD,KAAM,YACN,KAAMC,EACR,EAAG,CACD,KAAM,kBACN,KAAMC,EACR,EAAG,CACD,KAAM,eACN,KAAMC,EACR,EAAG,CACD,KAAM,eACN,KAAMC,EACR,EAAG,CACD,KAAM,yBACN,KAAMC,EACR,EAAG,CACD,KAAM,YACN,KAAMC,EACR,EAAG,CACD,KAAM,OACN,KAAMC,EACR,EAAG,CACD,KAAM,aACN,KAAMC,EACR,EAAG,CACD,KAAM,eACN,KAAMC,EACR,EAAG,CACD,KAAM,kBACN,KAAMC,EACR,EAAG,CACD,KAAM,YACN,KAAMC,EACR,EAAG,CACD,KAAM,iBACN,KAAMC,EACR,EAAG,CACD,KAAM,aACN,KAAMC,EACR,EAAG,CACD,KAAM,MACN,KAAMC,EACR,EAAG,CACD,KAAM,SACN,KAAMC,EACR,CACA,CAAC,EACDxC,EAAM,eAAe,CAAC,CACpB,KAAM,SACN,GAAI,YACJ,QAAS,SAAiByC,EAAG,CAM3B,GALK7C,GACH8C,GAAiBD,CAAC,EAIhBE,GAAOF,CAAC,EAAI,GACd,MAAM,IAAI,UAAU,uFAA8FA,EAAI,uDAA4D,EAEpL,OAAO,IAAI7C,EAAU6C,CAAC,CACxB,CACF,EAAG,CACD,KAAM,SACN,GAAI,UACJ,QAAS,SAAiBA,EAAG,CAC3B,OAAK5C,GACH+C,GAAeH,CAAC,EAEX,IAAI5C,EAAQ4C,EAAG,CAAC,CACzB,CACF,EAAG,CACD,KAAM,YACN,GAAI,UACJ,QAAS,SAAiBA,EAAG,CAC3B,OAAK5C,GACH+C,GAAeH,CAAC,EAEX,IAAI5C,EAAQ4C,EAAE,SAAS,EAAG,CAAC,CACpC,CACF,EAAG,CACD,KAAM,SACN,GAAI,SACJ,QAAS,SAAiBA,EAAG,CAC3B,GAAIA,EAAI,OAAO,iBACb,MAAM,IAAI,UAAU,gGAAuGA,EAAI,GAAG,EAEpI,OAAO,OAAOA,CAAC,CACjB,CACF,EAAG,CACD,KAAM,SACN,GAAI,YACJ,QAAS,SAAiBA,EAAG,CAC3B,OAAK7C,GACH8C,GAAiBD,CAAC,EAEb,IAAI7C,EAAU6C,EAAE,SAAS,CAAC,CACnC,CACF,EAAG,CACD,KAAM,SACN,GAAI,WACJ,QAAS,SAAiBA,EAAG,CAC3B,OAAK1C,GACH8C,GAAgBJ,CAAC,EAEZ,IAAI1C,EAAS0C,EAAE,SAAS,CAAC,CAClC,CACF,EAAG,CACD,KAAM,WACN,GAAI,YACJ,QAAS,SAAiBA,EAAG,CAC3B,MAAM,IAAI,UAAU,2JAAgK,CACtL,CACF,EAAG,CACD,KAAM,WACN,GAAI,UACJ,QAAS,SAAiBA,EAAG,CAC3B,OAAK5C,GACH+C,GAAeH,CAAC,EAEX,IAAI5C,EAAQ4C,EAAE,QAAQ,EAAG,CAAC,CACnC,CACF,EAAG,CACD,KAAM,SACN,GAAI,WACJ,QAAS,SAAiBA,EAAG,CACtB1C,GACH8C,GAAgBJ,CAAC,EAEnB,IAAIK,EAAI,IAAI/C,EAAS0C,CAAC,EACtB,GAAIK,EAAE,QAAQ,IAAML,EAClB,MAAM,IAAI,UAAU,mGAA0GA,EAAI,qDAA0D,EAE9L,OAAOK,CACT,CACF,EAAG,CAQD,KAAM,SACN,GAAI,SACJ,QAAS,SAAiBL,EAAG,CAC3B,IAAIM,EAAI,OAAON,CAAC,EAChB,GAAI,MAAMM,CAAC,EACT,MAAM,IAAI,MAAM,mBAAqBN,EAAI,eAAe,EAE1D,OAAOM,CACT,CACF,EAAG,CACD,KAAM,SACN,GAAI,YACJ,QAAS,SAAiBN,EAAG,CACtB7C,GACH8C,GAAiBD,CAAC,EAEpB,GAAI,CACF,OAAO,IAAI7C,EAAU6C,CAAC,CACxB,MAAc,CACZ,MAAM,IAAI,MAAM,mBAAqBA,EAAI,gBAAgB,CAC3D,CACF,CACF,EAAG,CACD,KAAM,SACN,GAAI,SACJ,QAAS,SAAiBA,EAAG,CAC3B,GAAI,CACF,OAAO,OAAOA,CAAC,CACjB,MAAc,CACZ,MAAM,IAAI,MAAM,mBAAqBA,EAAI,aAAa,CACxD,CACF,CACF,EAAG,CACD,KAAM,SACN,GAAI,WACJ,QAAS,SAAiBA,EAAG,CACtB1C,GACH8C,GAAgBJ,CAAC,EAEnB,GAAI,CACF,OAAO,IAAI1C,EAAS0C,CAAC,CACvB,MAAc,CACZ,MAAM,IAAI,MAAM,mBAAqBA,EAAI,eAAe,CAC1D,CACF,CACF,EAAG,CACD,KAAM,SACN,GAAI,UACJ,QAAS,SAAiBA,EAAG,CACtB5C,GACH+C,GAAeH,CAAC,EAElB,GAAI,CACF,OAAO,IAAI5C,EAAQ4C,CAAC,CACtB,MAAc,CACZ,MAAM,IAAI,MAAM,mBAAqBA,EAAI,cAAc,CACzD,CACF,CACF,EAAG,CACD,KAAM,UACN,GAAI,SACJ,QAAS,SAAiBA,EAAG,CAC3B,MAAO,CAACA,CACV,CACF,EAAG,CACD,KAAM,UACN,GAAI,YACJ,QAAS,SAAiBA,EAAG,CAC3B,OAAK7C,GACH8C,GAAiBD,CAAC,EAEb,IAAI7C,EAAU,CAAC6C,CAAC,CACzB,CACF,EAAG,CACD,KAAM,UACN,GAAI,SACJ,QAAS,SAAiBA,EAAG,CAC3B,OAAO,OAAO,CAACA,CAAC,CAClB,CACF,EAAG,CACD,KAAM,UACN,GAAI,WACJ,QAAS,SAAiBA,EAAG,CAC3B,OAAK1C,GACH8C,GAAgBJ,CAAC,EAEZ,IAAI1C,EAAS,CAAC0C,CAAC,CACxB,CACF,EAAG,CACD,KAAM,UACN,GAAI,SACJ,QAAS,SAAiBA,EAAG,CAC3B,OAAO,OAAOA,CAAC,CACjB,CACF,EAAG,CACD,KAAM,QACN,GAAI,SACJ,QAAS,SAAiBO,EAAO,CAC/B,OAAKlD,GACHmD,IAAc,EAET,IAAInD,EAAYkD,CAAK,CAC9B,CACF,EAAG,CACD,KAAM,SACN,GAAI,QACJ,QAAS,SAAiBE,EAAQ,CAChC,OAAOA,EAAO,QAAQ,CACxB,CACF,CAAC,CAAC,EAMFlD,EAAM,WAAa,CAACmD,EAAMC,EAAMC,IAAe,CAC7C,IAAIC,EAAatD,EAAM,YAAYmD,EAAMC,EAAMC,CAAU,EACzD,GAAI,CAAC,YAAa,UAAU,EAAE,SAASC,EAAW,KAAK,QAAQ,GAAKF,EAAK,SAAW,GAAKG,GAAaH,EAAK,CAAC,CAAC,GAE7GC,EAAW,KAAKG,GAAO,CAACA,EAAI,OAAO,SAAS,GAAG,CAAC,EAAG,CACjD,IAAIC,EAAM,IAAI,UAAU,aAAa,OAAON,EAAM,0CAA0C,EAAI,4CAA4C,OAAOA,EAAM,KAAK,CAAC,EAC/J,MAAAM,EAAI,KAAOH,EAAW,KAChBG,CACR,CACA,MAAMH,CACR,EAMAtD,EAAM,WAAa,CAACmD,EAAMC,EAAMC,IAAe,CAC7C,IAAIC,EAAatD,EAAM,YAAYmD,EAAMC,EAAMC,CAAU,EACzD,GAAI,CAAC,YAAa,UAAU,EAAE,SAASC,EAAW,KAAK,QAAQ,GAAKF,EAAK,SAAW,GAAKG,GAAaH,EAAK,CAAC,CAAC,GAE7GC,EAAW,KAAKG,GAAO,CAACA,EAAI,OAAO,SAAS,GAAG,CAAC,EAAG,CACjD,IAAIC,EAAM,IAAI,UAAU,aAAa,OAAON,EAAM,0CAA0C,EAAI,4CAA4C,OAAOA,EAAM,KAAK,CAAC,EAC/J,MAAAM,EAAI,KAAOH,EAAW,KAChBG,CACR,CACA,MAAMH,CACR,EACOtD,CACT,CAAC,EACD,SAAS0C,GAAiBD,EAAG,CAC3B,MAAM,IAAI,MAAM,wBAAwB,OAAOA,EAAG,kDAAkD,CAAC,CACvG,CACA,SAASG,GAAeH,EAAG,CACzB,MAAM,IAAI,MAAM,wBAAwB,OAAOA,EAAG,qDAAqD,CAAC,CAC1G,CACA,SAASQ,KAAgB,CACvB,MAAM,IAAI,MAAM,qEAAuE,CACzF,CACA,SAASJ,GAAgBJ,EAAG,CAC1B,MAAM,IAAI,MAAM,wBAAwB,OAAOA,EAAG,iDAAiD,CAAC,CACtG,CGrcA,IAAIiB,IAAO,YACPC,IAAe,CAAC,EACTC,GAAiCC,EAAQH,IAAMC,IAAc,IAAM,CAO5E,SAASG,EAAUC,EAAS,CAC1B,GAAI,EAAE,gBAAgBD,GACpB,MAAM,IAAI,YAAY,kDAAkD,EAE1E,KAAK,QAAUC,GAAW,CAAC,CAC7B,CAKA,OAAAD,EAAU,UAAU,KAAO,YAC3BA,EAAU,UAAU,YAAc,GAOlCA,EAAU,UAAU,QAAU,UAAY,CACxC,OAAO,KAAK,OACd,EAOAA,EAAU,UAAU,SAAW,UAAY,CACzC,MAAO,IAAM,KAAK,QAAQ,IAAI,MAAM,EAAE,KAAK,IAAI,EAAI,GACrD,EAQAA,EAAU,UAAU,OAAS,UAAY,CACvC,MAAO,CACL,OAAQ,YACR,QAAS,KAAK,OAChB,CACF,EASAA,EAAU,SAAW,SAAUE,EAAM,CACnC,OAAO,IAAIF,EAAUE,EAAK,OAAO,CACnC,EACOF,CACT,EAAG,CACD,QAAS,EACX,CAAC,ECrDD,IAAIG,GAAY,KAIdC,GAAa,IAGbC,GAAW,mBAGXC,GAAO,qgCAGPC,GAAK,qgCAILC,GAAW,CAOT,UAAW,GAiBX,SAAU,EAeV,OAAQ,EAIR,SAAU,GAIV,SAAW,GAIX,KAAM,CAACL,GAIP,KAAMA,GAGN,OAAQ,EACV,EAMAM,GAASC,GACTC,GAAW,GAEXC,GAAe,kBACfC,GAAkBD,GAAe,qBACjCE,GAAyBF,GAAe,2BACxCG,GAAoBH,GAAe,qBACnCI,GAAM,mBAENC,GAAY,KAAK,MACjBC,GAAU,KAAK,IAEfC,IAAW,6CACXC,IAAQ,yDACRC,IAAU,gDACVC,GAAY,qCAEZC,GAAO,IACPC,GAAW,EACXC,IAAmB,iBAEnBC,IAAiBpB,GAAK,OAAS,EAC/BqB,GAAepB,GAAG,OAAS,EAG3BqB,GAAI,CAAE,YAAaZ,EAAI,EA0EzBY,GAAE,cAAgBA,GAAE,IAAM,UAAY,CACpC,IAAIC,EAAI,IAAI,KAAK,YAAY,IAAI,EACjC,OAAIA,EAAE,EAAI,IAAGA,EAAE,EAAI,GACZC,GAASD,CAAC,CACnB,EAQAD,GAAE,KAAO,UAAY,CACnB,OAAOE,GAAS,IAAI,KAAK,YAAY,IAAI,EAAG,KAAK,EAAI,EAAG,CAAC,CAC3D,EAWAF,GAAE,UAAYA,GAAE,MAAQ,SAAUG,EAAKC,EAAK,CAC1C,IAAIC,EACFJ,EAAI,KACJK,EAAOL,EAAE,YAGX,GAFAE,EAAM,IAAIG,EAAKH,CAAG,EAClBC,EAAM,IAAIE,EAAKF,CAAG,EACd,CAACD,EAAI,GAAK,CAACC,EAAI,EAAG,OAAO,IAAIE,EAAK,GAAG,EACzC,GAAIH,EAAI,GAAGC,CAAG,EAAG,MAAM,MAAMnB,GAAkBmB,CAAG,EAClD,OAAAC,EAAIJ,EAAE,IAAIE,CAAG,EACNE,EAAI,EAAIF,EAAMF,EAAE,IAAIG,CAAG,EAAI,EAAIA,EAAM,IAAIE,EAAKL,CAAC,CACxD,EAWAD,GAAE,WAAaA,GAAE,IAAM,SAAUO,EAAG,CAClC,IAAIC,EAAGC,EAAGC,EAAKC,EACbV,EAAI,KACJW,EAAKX,EAAE,EACPY,GAAMN,EAAI,IAAIN,EAAE,YAAYM,CAAC,GAAG,EAChCO,EAAKb,EAAE,EACPc,EAAKR,EAAE,EAGT,GAAI,CAACK,GAAM,CAACC,EACV,MAAO,CAACC,GAAM,CAACC,EAAK,IAAMD,IAAOC,EAAKD,EAAKF,IAAOC,EAAK,EAAI,CAACD,EAAKE,EAAK,EAAI,EAAI,GAIhF,GAAI,CAACF,EAAG,CAAC,GAAK,CAACC,EAAG,CAAC,EAAG,OAAOD,EAAG,CAAC,EAAIE,EAAKD,EAAG,CAAC,EAAI,CAACE,EAAK,EAGxD,GAAID,IAAOC,EAAI,OAAOD,EAGtB,GAAIb,EAAE,IAAMM,EAAE,EAAG,OAAON,EAAE,EAAIM,EAAE,EAAIO,EAAK,EAAI,EAAI,GAMjD,IAJAJ,EAAME,EAAG,OACTD,EAAME,EAAG,OAGJL,EAAI,EAAGC,EAAIC,EAAMC,EAAMD,EAAMC,EAAKH,EAAIC,EAAG,EAAED,EAC9C,GAAII,EAAGJ,CAAC,IAAMK,EAAGL,CAAC,EAAG,OAAOI,EAAGJ,CAAC,EAAIK,EAAGL,CAAC,EAAIM,EAAK,EAAI,EAAI,GAI3D,OAAOJ,IAAQC,EAAM,EAAID,EAAMC,EAAMG,EAAK,EAAI,EAAI,EACpD,EAgBAd,GAAE,OAASA,GAAE,IAAM,UAAY,CAC7B,IAAIgB,EAAIC,EACNhB,EAAI,KACJK,EAAOL,EAAE,YAEX,OAAKA,EAAE,EAGFA,EAAE,EAAE,CAAC,GAEVe,EAAKV,EAAK,UACVW,EAAKX,EAAK,SACVA,EAAK,UAAYU,EAAK,KAAK,IAAIf,EAAE,EAAGA,EAAE,GAAG,CAAC,EAAIL,GAC9CU,EAAK,SAAW,EAEhBL,EAAIiB,IAAOZ,EAAMa,GAAiBb,EAAML,CAAC,CAAC,EAE1CK,EAAK,UAAYU,EACjBV,EAAK,SAAWW,EAETf,GAASpB,IAAY,GAAKA,IAAY,EAAImB,EAAE,IAAI,EAAIA,EAAGe,EAAIC,EAAI,EAAI,GAZtD,IAAIX,EAAK,CAAC,EAHb,IAAIA,EAAK,GAAG,CAgB/B,EAmBAN,GAAE,SAAWA,GAAE,KAAO,UAAY,CAChC,IAAI,EAAGoB,EAAGC,EAAGC,EAAGC,EAAKC,EAAGC,EAAIC,EAAGC,EAAIC,EACjC3B,EAAI,KACJK,EAAOL,EAAE,YAEX,GAAI,CAACA,EAAE,SAAS,GAAKA,EAAE,OAAO,EAAG,OAAO,IAAIK,EAAKL,CAAC,EAoClD,IAnCAlB,GAAW,GAGXyC,EAAIvB,EAAE,EAAIX,GAAQW,EAAE,EAAIA,EAAG,EAAI,CAAC,EAI5B,CAACuB,GAAK,KAAK,IAAIA,CAAC,GAAK,KACvBH,EAAIQ,GAAe5B,EAAE,CAAC,EACtB,EAAIA,EAAE,GAGFuB,GAAK,EAAIH,EAAE,OAAS,GAAK,KAAGA,GAAMG,GAAK,GAAKA,GAAK,GAAK,IAAM,MAChEA,EAAIlC,GAAQ+B,EAAG,EAAI,CAAC,EAGpB,EAAIhC,IAAW,EAAI,GAAK,CAAC,GAAK,EAAI,IAAM,EAAI,EAAI,GAAK,IAEjDmC,GAAK,IACPH,EAAI,KAAO,GAEXA,EAAIG,EAAE,cAAc,EACpBH,EAAIA,EAAE,MAAM,EAAGA,EAAE,QAAQ,GAAG,EAAI,CAAC,EAAI,GAGvCC,EAAI,IAAIhB,EAAKe,CAAC,EACdC,EAAE,EAAIrB,EAAE,GAERqB,EAAI,IAAIhB,EAAKkB,EAAE,SAAS,CAAC,EAG3BC,GAAM,EAAInB,EAAK,WAAa,IAW1B,GANAoB,EAAIJ,EACJK,EAAKD,EAAE,MAAMA,CAAC,EAAE,MAAMA,CAAC,EACvBE,EAAUD,EAAG,KAAK1B,CAAC,EACnBqB,EAAIQ,GAAOF,EAAQ,KAAK3B,CAAC,EAAE,MAAMyB,CAAC,EAAGE,EAAQ,KAAKD,CAAE,EAAGF,EAAK,EAAG,CAAC,EAG5DI,GAAeH,EAAE,CAAC,EAAE,MAAM,EAAGD,CAAE,KAAOJ,EAAIQ,GAAeP,EAAE,CAAC,GAAG,MAAM,EAAGG,CAAE,EAK5E,GAJAJ,EAAIA,EAAE,MAAMI,EAAK,EAAGA,EAAK,CAAC,EAItBJ,GAAK,QAAU,CAACE,GAAOF,GAAK,OAAQ,CAItC,GAAI,CAACE,IACHrB,GAASwB,EAAG,EAAI,EAAG,CAAC,EAEhBA,EAAE,MAAMA,CAAC,EAAE,MAAMA,CAAC,EAAE,GAAGzB,CAAC,GAAG,CAC7BqB,EAAII,EACJ,KACF,CAGFD,GAAM,EACNF,EAAM,CACR,KAAO,EAID,CAAC,CAACF,GAAK,CAAC,CAACA,EAAE,MAAM,CAAC,GAAKA,EAAE,OAAO,CAAC,GAAK,OAGxCnB,GAASoB,EAAG,EAAI,EAAG,CAAC,EACpBF,EAAI,CAACE,EAAE,MAAMA,CAAC,EAAE,MAAMA,CAAC,EAAE,GAAGrB,CAAC,GAG/B,KACF,CAIJ,OAAAlB,GAAW,GAEJmB,GAASoB,EAAG,EAAGhB,EAAK,SAAUc,CAAC,CACxC,EAOApB,GAAE,cAAgBA,GAAE,GAAK,UAAY,CACnC,IAAI+B,EACFC,EAAI,KAAK,EACTX,EAAI,IAEN,GAAIW,EAAG,CAML,GALAD,EAAIC,EAAE,OAAS,EACfX,GAAKU,EAAI1C,GAAU,KAAK,EAAIO,EAAQ,GAAKA,GAGzCmC,EAAIC,EAAED,CAAC,EACHA,EAAG,KAAOA,EAAI,IAAM,EAAGA,GAAK,GAAIV,IAChCA,EAAI,IAAGA,EAAI,EACjB,CAEA,OAAOA,CACT,EAwBArB,GAAE,UAAYA,GAAE,IAAM,SAAUO,EAAG,CACjC,OAAOuB,GAAO,KAAM,IAAI,KAAK,YAAYvB,CAAC,CAAC,CAC7C,EAQAP,GAAE,mBAAqBA,GAAE,SAAW,SAAUO,EAAG,CAC/C,IAAIN,EAAI,KACNK,EAAOL,EAAE,YACX,OAAOC,GAAS4B,GAAO7B,EAAG,IAAIK,EAAKC,CAAC,EAAG,EAAG,EAAG,CAAC,EAAGD,EAAK,UAAWA,EAAK,QAAQ,CAChF,EAOAN,GAAE,OAASA,GAAE,GAAK,SAAUO,EAAG,CAC7B,OAAO,KAAK,IAAIA,CAAC,IAAM,CACzB,EAQAP,GAAE,MAAQ,UAAY,CACpB,OAAOE,GAAS,IAAI,KAAK,YAAY,IAAI,EAAG,KAAK,EAAI,EAAG,CAAC,CAC3D,EAQAF,GAAE,YAAcA,GAAE,GAAK,SAAUO,EAAG,CAClC,OAAO,KAAK,IAAIA,CAAC,EAAI,CACvB,EAQAP,GAAE,qBAAuBA,GAAE,IAAM,SAAUO,EAAG,CAC5C,IAAIF,EAAI,KAAK,IAAIE,CAAC,EAClB,OAAOF,GAAK,GAAKA,IAAM,CACzB,EA4BAL,GAAE,iBAAmBA,GAAE,KAAO,UAAY,CACxC,IAAIK,EAAGgB,EAAGL,EAAIC,EAAIgB,EAChBhC,EAAI,KACJK,EAAOL,EAAE,YACTiC,EAAM,IAAI5B,EAAK,CAAC,EAElB,GAAI,CAACL,EAAE,SAAS,EAAG,OAAO,IAAIK,EAAKL,EAAE,EAAI,IAAQ,GAAG,EACpD,GAAIA,EAAE,OAAO,EAAG,OAAOiC,EAEvBlB,EAAKV,EAAK,UACVW,EAAKX,EAAK,SACVA,EAAK,UAAYU,EAAK,KAAK,IAAIf,EAAE,EAAGA,EAAE,GAAG,CAAC,EAAI,EAC9CK,EAAK,SAAW,EAChB2B,EAAMhC,EAAE,EAAE,OAONgC,EAAM,IACR5B,EAAI,KAAK,KAAK4B,EAAM,CAAC,EACrBZ,GAAK,EAAIc,GAAQ,EAAG9B,CAAC,GAAG,SAAS,IAEjCA,EAAI,GACJgB,EAAI,gCAGNpB,EAAImC,GAAa9B,EAAM,EAAGL,EAAE,MAAMoB,CAAC,EAAG,IAAIf,EAAK,CAAC,EAAG,EAAI,EAMvD,QAHI+B,EACF7B,EAAIH,EACJiC,EAAK,IAAIhC,EAAK,CAAC,EACVE,KACL6B,EAAUpC,EAAE,MAAMA,CAAC,EACnBA,EAAIiC,EAAI,MAAMG,EAAQ,MAAMC,EAAG,MAAMD,EAAQ,MAAMC,CAAE,CAAC,CAAC,CAAC,EAG1D,OAAOpC,GAASD,EAAGK,EAAK,UAAYU,EAAIV,EAAK,SAAWW,EAAI,EAAI,CAClE,EAiCAjB,GAAE,eAAiBA,GAAE,KAAO,UAAY,CACtC,IAAIK,EAAGW,EAAIC,EAAIgB,EACbhC,EAAI,KACJK,EAAOL,EAAE,YAEX,GAAI,CAACA,EAAE,SAAS,GAAKA,EAAE,OAAO,EAAG,OAAO,IAAIK,EAAKL,CAAC,EAQlD,GANAe,EAAKV,EAAK,UACVW,EAAKX,EAAK,SACVA,EAAK,UAAYU,EAAK,KAAK,IAAIf,EAAE,EAAGA,EAAE,GAAG,CAAC,EAAI,EAC9CK,EAAK,SAAW,EAChB2B,EAAMhC,EAAE,EAAE,OAENgC,EAAM,EACRhC,EAAImC,GAAa9B,EAAM,EAAGL,EAAGA,EAAG,EAAI,MAC/B,CAWLI,EAAI,IAAM,KAAK,KAAK4B,CAAG,EACvB5B,EAAIA,EAAI,GAAK,GAAKA,EAAI,EAEtBJ,EAAIA,EAAE,MAAM,EAAIkC,GAAQ,EAAG9B,CAAC,CAAC,EAC7BJ,EAAImC,GAAa9B,EAAM,EAAGL,EAAGA,EAAG,EAAI,EAOpC,QAJIsC,EACFC,EAAK,IAAIlC,EAAK,CAAC,EACfmC,EAAM,IAAInC,EAAK,EAAE,EACjBoC,EAAM,IAAIpC,EAAK,EAAE,EACZD,KACLkC,EAAUtC,EAAE,MAAMA,CAAC,EACnBA,EAAIA,EAAE,MAAMuC,EAAG,KAAKD,EAAQ,MAAME,EAAI,MAAMF,CAAO,EAAE,KAAKG,CAAG,CAAC,CAAC,CAAC,CAEpE,CAEA,OAAApC,EAAK,UAAYU,EACjBV,EAAK,SAAWW,EAETf,GAASD,EAAGe,EAAIC,EAAI,EAAI,CACjC,EAmBAjB,GAAE,kBAAoBA,GAAE,KAAO,UAAY,CACzC,IAAIgB,EAAIC,EACNhB,EAAI,KACJK,EAAOL,EAAE,YAEX,OAAKA,EAAE,SAAS,EACZA,EAAE,OAAO,EAAU,IAAIK,EAAKL,CAAC,GAEjCe,EAAKV,EAAK,UACVW,EAAKX,EAAK,SACVA,EAAK,UAAYU,EAAK,EACtBV,EAAK,SAAW,EAETwB,GAAO7B,EAAE,KAAK,EAAGA,EAAE,KAAK,EAAGK,EAAK,UAAYU,EAAIV,EAAK,SAAWW,CAAE,GAR/C,IAAIX,EAAKL,EAAE,CAAC,CASxC,EAsBAD,GAAE,cAAgBA,GAAE,KAAO,UAAY,CACrC,IAAI2C,EACF1C,EAAI,KACJK,EAAOL,EAAE,YACTI,EAAIJ,EAAE,IAAI,EAAE,IAAI,CAAC,EACjBe,EAAKV,EAAK,UACVW,EAAKX,EAAK,SAEZ,OAAID,IAAM,GACDA,IAAM,EAETJ,EAAE,MAAM,EAAI2C,GAAMtC,EAAMU,EAAIC,CAAE,EAAI,IAAIX,EAAK,CAAC,EAE5C,IAAIA,EAAK,GAAG,EAGdL,EAAE,OAAO,EAAU2C,GAAMtC,EAAMU,EAAK,EAAGC,CAAE,EAAE,MAAM,EAAG,GAIxDX,EAAK,UAAYU,EAAK,EACtBV,EAAK,SAAW,EAEhBL,EAAIA,EAAE,KAAK,EACX0C,EAASC,GAAMtC,EAAMU,EAAK,EAAGC,CAAE,EAAE,MAAM,EAAG,EAE1CX,EAAK,UAAYU,EACjBV,EAAK,SAAWW,EAET0B,EAAO,MAAM1C,CAAC,EACvB,EAsBAD,GAAE,wBAA0BA,GAAE,MAAQ,UAAY,CAChD,IAAIgB,EAAIC,EACNhB,EAAI,KACJK,EAAOL,EAAE,YAEX,OAAIA,EAAE,IAAI,CAAC,EAAU,IAAIK,EAAKL,EAAE,GAAG,CAAC,EAAI,EAAI,GAAG,EAC1CA,EAAE,SAAS,GAEhBe,EAAKV,EAAK,UACVW,EAAKX,EAAK,SACVA,EAAK,UAAYU,EAAK,KAAK,IAAI,KAAK,IAAIf,EAAE,CAAC,EAAGA,EAAE,GAAG,CAAC,EAAI,EACxDK,EAAK,SAAW,EAChBvB,GAAW,GAEXkB,EAAIA,EAAE,MAAMA,CAAC,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,KAAKA,CAAC,EAErClB,GAAW,GACXuB,EAAK,UAAYU,EACjBV,EAAK,SAAWW,EAEThB,EAAE,GAAG,GAdc,IAAIK,EAAKL,CAAC,CAetC,EAmBAD,GAAE,sBAAwBA,GAAE,MAAQ,UAAY,CAC9C,IAAIgB,EAAIC,EACNhB,EAAI,KACJK,EAAOL,EAAE,YAEX,MAAI,CAACA,EAAE,SAAS,GAAKA,EAAE,OAAO,EAAU,IAAIK,EAAKL,CAAC,GAElDe,EAAKV,EAAK,UACVW,EAAKX,EAAK,SACVA,EAAK,UAAYU,EAAK,EAAI,KAAK,IAAI,KAAK,IAAIf,EAAE,CAAC,EAAGA,EAAE,GAAG,CAAC,EAAI,EAC5DK,EAAK,SAAW,EAChBvB,GAAW,GAEXkB,EAAIA,EAAE,MAAMA,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,KAAKA,CAAC,EAEpClB,GAAW,GACXuB,EAAK,UAAYU,EACjBV,EAAK,SAAWW,EAEThB,EAAE,GAAG,EACd,EAsBAD,GAAE,yBAA2BA,GAAE,MAAQ,UAAY,CACjD,IAAIgB,EAAIC,EAAI4B,EAAKC,EACf7C,EAAI,KACJK,EAAOL,EAAE,YAEX,OAAKA,EAAE,SAAS,EACZA,EAAE,GAAK,EAAU,IAAIK,EAAKL,EAAE,IAAI,EAAE,GAAG,CAAC,EAAIA,EAAE,EAAI,EAAIA,EAAE,OAAO,EAAIA,EAAI,GAAG,GAE5Ee,EAAKV,EAAK,UACVW,EAAKX,EAAK,SACVwC,EAAM7C,EAAE,GAAG,EAEP,KAAK,IAAI6C,EAAK9B,CAAE,EAAI,EAAI,CAACf,EAAE,EAAI,EAAUC,GAAS,IAAII,EAAKL,CAAC,EAAGe,EAAIC,EAAI,EAAI,GAE/EX,EAAK,UAAYuC,EAAMC,EAAM7C,EAAE,EAE/BA,EAAI6B,GAAO7B,EAAE,KAAK,CAAC,EAAG,IAAIK,EAAK,CAAC,EAAE,MAAML,CAAC,EAAG4C,EAAM7B,EAAI,CAAC,EAEvDV,EAAK,UAAYU,EAAK,EACtBV,EAAK,SAAW,EAEhBL,EAAIA,EAAE,GAAG,EAETK,EAAK,UAAYU,EACjBV,EAAK,SAAWW,EAEThB,EAAE,MAAM,EAAG,IArBQ,IAAIK,EAAK,GAAG,CAsBxC,EAwBAN,GAAE,YAAcA,GAAE,KAAO,UAAY,CACnC,IAAI2C,EAAQtC,EACVW,EAAIC,EACJhB,EAAI,KACJK,EAAOL,EAAE,YAEX,OAAIA,EAAE,OAAO,EAAU,IAAIK,EAAKL,CAAC,GAEjCI,EAAIJ,EAAE,IAAI,EAAE,IAAI,CAAC,EACjBe,EAAKV,EAAK,UACVW,EAAKX,EAAK,SAEND,IAAM,GAGJA,IAAM,GACRsC,EAASC,GAAMtC,EAAMU,EAAK,EAAGC,CAAE,EAAE,MAAM,EAAG,EAC1C0B,EAAO,EAAI1C,EAAE,EACN0C,GAIF,IAAIrC,EAAK,GAAG,GAKrBA,EAAK,UAAYU,EAAK,EACtBV,EAAK,SAAW,EAEhBL,EAAIA,EAAE,IAAI,IAAIK,EAAK,CAAC,EAAE,MAAML,EAAE,MAAMA,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,EAE7DK,EAAK,UAAYU,EACjBV,EAAK,SAAWW,EAEThB,EAAE,MAAM,CAAC,GAClB,EAqBAD,GAAE,eAAiBA,GAAE,KAAO,UAAY,CACtC,IAAIQ,EAAGC,EAAGJ,EAAG,EAAG0C,EAAIrB,EAAGJ,EAAGuB,EAAKG,EAC7B/C,EAAI,KACJK,EAAOL,EAAE,YACTe,EAAKV,EAAK,UACVW,EAAKX,EAAK,SAEZ,GAAKL,EAAE,SAAS,EAOT,IAAIA,EAAE,OAAO,EAClB,OAAO,IAAIK,EAAKL,CAAC,EACZ,GAAIA,EAAE,IAAI,EAAE,GAAG,CAAC,GAAKe,EAAK,GAAKjB,GACpC,OAAAuB,EAAIsB,GAAMtC,EAAMU,EAAK,EAAGC,CAAE,EAAE,MAAM,GAAI,EACtCK,EAAE,EAAIrB,EAAE,EACDqB,MAZU,CACjB,GAAI,CAACrB,EAAE,EAAG,OAAO,IAAIK,EAAK,GAAG,EAC7B,GAAIU,EAAK,GAAKjB,GACZ,OAAAuB,EAAIsB,GAAMtC,EAAMU,EAAK,EAAGC,CAAE,EAAE,MAAM,EAAG,EACrCK,EAAE,EAAIrB,EAAE,EACDqB,CAEX,CAmBA,IAXAhB,EAAK,UAAYuC,EAAM7B,EAAK,GAC5BV,EAAK,SAAW,EAQhBD,EAAI,KAAK,IAAI,GAAIwC,EAAMjD,GAAW,EAAI,CAAC,EAElCY,EAAIH,EAAGG,EAAG,EAAEA,EAAGP,EAAIA,EAAE,IAAIA,EAAE,MAAMA,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EAW/D,IATAlB,GAAW,GAEX0B,EAAI,KAAK,KAAKoC,EAAMjD,EAAQ,EAC5B,EAAI,EACJoD,EAAK/C,EAAE,MAAMA,CAAC,EACdqB,EAAI,IAAIhB,EAAKL,CAAC,EACd8C,EAAK9C,EAGEO,IAAM,IAOX,GANAuC,EAAKA,EAAG,MAAMC,CAAE,EAChBtB,EAAIJ,EAAE,MAAMyB,EAAG,IAAI,GAAK,CAAC,CAAC,EAE1BA,EAAKA,EAAG,MAAMC,CAAE,EAChB1B,EAAII,EAAE,KAAKqB,EAAG,IAAI,GAAK,CAAC,CAAC,EAErBzB,EAAE,EAAEb,CAAC,IAAM,OAAQ,IAAKD,EAAIC,EAAGa,EAAE,EAAEd,CAAC,IAAMkB,EAAE,EAAElB,CAAC,GAAKA,KAAK,CAG/D,OAAIH,IAAGiB,EAAIA,EAAE,MAAM,GAAMjB,EAAI,CAAE,GAE/BtB,GAAW,GAEJmB,GAASoB,EAAGhB,EAAK,UAAYU,EAAIV,EAAK,SAAWW,EAAI,EAAI,CAClE,EAOAjB,GAAE,SAAW,UAAY,CACvB,MAAO,CAAC,CAAC,KAAK,CAChB,EAOAA,GAAE,UAAYA,GAAE,MAAQ,UAAY,CAClC,MAAO,CAAC,CAAC,KAAK,GAAKX,GAAU,KAAK,EAAIO,EAAQ,EAAI,KAAK,EAAE,OAAS,CACpE,EAOAI,GAAE,MAAQ,UAAY,CACpB,MAAO,CAAC,KAAK,CACf,EAOAA,GAAE,WAAaA,GAAE,MAAQ,UAAY,CACnC,OAAO,KAAK,EAAI,CAClB,EAOAA,GAAE,WAAaA,GAAE,MAAQ,UAAY,CACnC,OAAO,KAAK,EAAI,CAClB,EAOAA,GAAE,OAAS,UAAY,CACrB,MAAO,CAAC,CAAC,KAAK,GAAK,KAAK,EAAE,CAAC,IAAM,CACnC,EAOAA,GAAE,SAAWA,GAAE,GAAK,SAAUO,EAAG,CAC/B,OAAO,KAAK,IAAIA,CAAC,EAAI,CACvB,EAOAP,GAAE,kBAAoBA,GAAE,IAAM,SAAUO,EAAG,CACzC,OAAO,KAAK,IAAIA,CAAC,EAAI,CACvB,EAiCAP,GAAE,UAAYA,GAAE,IAAM,SAAUiD,EAAM,CACpC,IAAIC,EAAUlB,EAAGmB,EAAa9C,EAAG+C,EAAKC,EAAK5B,EAAIH,EAC7CgC,EAAM,KACNhD,EAAOgD,EAAI,YACXtC,EAAKV,EAAK,UACVW,EAAKX,EAAK,SACViD,EAAQ,EAGV,GAAIN,GAAQ,KACVA,EAAO,IAAI3C,EAAK,EAAE,EAClB4C,EAAW,OACN,CAKL,GAJAD,EAAO,IAAI3C,EAAK2C,CAAI,EACpBjB,EAAIiB,EAAK,EAGLA,EAAK,EAAI,GAAK,CAACjB,GAAK,CAACA,EAAE,CAAC,GAAKiB,EAAK,GAAG,CAAC,EAAG,OAAO,IAAI3C,EAAK,GAAG,EAEhE4C,EAAWD,EAAK,GAAG,EAAE,CACvB,CAKA,GAHAjB,EAAIsB,EAAI,EAGJA,EAAI,EAAI,GAAK,CAACtB,GAAK,CAACA,EAAE,CAAC,GAAKsB,EAAI,GAAG,CAAC,EACtC,OAAO,IAAIhD,EAAK0B,GAAK,CAACA,EAAE,CAAC,EAAI,KAASsB,EAAI,GAAK,EAAI,IAAMtB,EAAI,EAAI,GAAK,EAKxE,GAAIkB,EACF,GAAIlB,EAAE,OAAS,EACboB,EAAM,OACD,CACL,IAAK/C,EAAI2B,EAAE,CAAC,EAAG3B,EAAI,KAAO,GAAIA,GAAK,GACnC+C,EAAM/C,IAAM,CACd,CAyBF,GAtBAtB,GAAW,GACX0C,EAAKT,EAAKuC,EACVF,EAAMG,GAAiBF,EAAK7B,CAAE,EAC9B0B,EAAcD,EAAWO,GAAQnD,EAAMmB,EAAK,EAAE,EAAI+B,GAAiBP,EAAMxB,CAAE,EAG3EH,EAAIQ,GAAOuB,EAAKF,EAAa1B,EAAI,CAAC,EAgB9BiC,GAAoBpC,EAAE,EAAGjB,EAAIW,EAAIC,CAAE,EAErC,EAME,IALAQ,GAAM,GACN4B,EAAMG,GAAiBF,EAAK7B,CAAE,EAC9B0B,EAAcD,EAAWO,GAAQnD,EAAMmB,EAAK,EAAE,EAAI+B,GAAiBP,EAAMxB,CAAE,EAC3EH,EAAIQ,GAAOuB,EAAKF,EAAa1B,EAAI,CAAC,EAE9B,CAAC2B,EAAK,CAGJ,CAACvB,GAAeP,EAAE,CAAC,EAAE,MAAMjB,EAAI,EAAGA,EAAI,EAAE,EAAI,GAAK,OACnDiB,EAAIpB,GAASoB,EAAGN,EAAK,EAAG,CAAC,GAG3B,KACF,OACO0C,GAAoBpC,EAAE,EAAGjB,GAAK,GAAIY,CAAE,GAG/C,OAAAlC,GAAW,GAEJmB,GAASoB,EAAGN,EAAIC,CAAE,CAC3B,EAgDAjB,GAAE,MAAQA,GAAE,IAAM,SAAUO,EAAG,CAC7B,IAAIyB,EAAG2B,EAAGnD,EAAGC,EAAGJ,EAAG4B,EAAKjB,EAAIC,EAAIL,EAAIgD,EAAIC,EAAMhD,EAC5CZ,EAAI,KACJK,EAAOL,EAAE,YAKX,GAHAM,EAAI,IAAID,EAAKC,CAAC,EAGV,CAACN,EAAE,GAAK,CAACM,EAAE,EAGb,MAAI,CAACN,EAAE,GAAK,CAACM,EAAE,EAAGA,EAAI,IAAID,EAAK,GAAG,EAGzBL,EAAE,EAAGM,EAAE,EAAI,CAACA,EAAE,EAKlBA,EAAI,IAAID,EAAKC,EAAE,GAAKN,EAAE,IAAMM,EAAE,EAAIN,EAAI,GAAG,EAEvCM,EAIT,GAAIN,EAAE,GAAKM,EAAE,EACX,OAAAA,EAAE,EAAI,CAACA,EAAE,EACFN,EAAE,KAAKM,CAAC,EASjB,GANAK,EAAKX,EAAE,EACPY,EAAKN,EAAE,EACPS,EAAKV,EAAK,UACVW,EAAKX,EAAK,SAGN,CAACM,EAAG,CAAC,GAAK,CAACC,EAAG,CAAC,EAAG,CAGpB,GAAIA,EAAG,CAAC,EAAGN,EAAE,EAAI,CAACA,EAAE,UAGXK,EAAG,CAAC,EAAGL,EAAI,IAAID,EAAKL,CAAC,MAIzB,QAAO,IAAIK,EAAKW,IAAO,EAAI,GAAK,CAAC,EAEtC,OAAOlC,GAAWmB,GAASK,EAAGS,EAAIC,CAAE,EAAIV,CAC1C,CAYA,GAPAoD,EAAItE,GAAUkB,EAAE,EAAIX,EAAQ,EAC5BgE,EAAKvE,GAAUY,EAAE,EAAIL,EAAQ,EAE7BgB,EAAKA,EAAG,MAAM,EACdP,EAAIuD,EAAKD,EAGLtD,EAAG,CAyBL,IAxBAwD,EAAOxD,EAAI,EAEPwD,GACF7B,EAAIpB,EACJP,EAAI,CAACA,EACL4B,EAAMpB,EAAG,SAETmB,EAAInB,EACJ8C,EAAIC,EACJ3B,EAAMrB,EAAG,QAMXJ,EAAI,KAAK,IAAI,KAAK,KAAKQ,EAAKpB,EAAQ,EAAGqC,CAAG,EAAI,EAE1C5B,EAAIG,IACNH,EAAIG,EACJwB,EAAE,OAAS,GAIbA,EAAE,QAAQ,EACLxB,EAAIH,EAAGG,KAAMwB,EAAE,KAAK,CAAC,EAC1BA,EAAE,QAAQ,CAGZ,KAAO,CASL,IALAxB,EAAII,EAAG,OACPqB,EAAMpB,EAAG,OACTgD,EAAOrD,EAAIyB,EACP4B,IAAM5B,EAAMzB,GAEXA,EAAI,EAAGA,EAAIyB,EAAKzB,IACnB,GAAII,EAAGJ,CAAC,GAAKK,EAAGL,CAAC,EAAG,CAClBqD,EAAOjD,EAAGJ,CAAC,EAAIK,EAAGL,CAAC,EACnB,KACF,CAGFH,EAAI,CACN,CAaA,IAXIwD,IACF7B,EAAIpB,EACJA,EAAKC,EACLA,EAAKmB,EACLzB,EAAE,EAAI,CAACA,EAAE,GAGX0B,EAAMrB,EAAG,OAIJJ,EAAIK,EAAG,OAASoB,EAAKzB,EAAI,EAAG,EAAEA,EAAGI,EAAGqB,GAAK,EAAI,EAGlD,IAAKzB,EAAIK,EAAG,OAAQL,EAAIH,GAAI,CAE1B,GAAIO,EAAG,EAAEJ,CAAC,EAAIK,EAAGL,CAAC,EAAG,CACnB,IAAKC,EAAID,EAAGC,GAAKG,EAAG,EAAEH,CAAC,IAAM,GAAIG,EAAGH,CAAC,EAAId,GAAO,EAChD,EAAEiB,EAAGH,CAAC,EACNG,EAAGJ,CAAC,GAAKb,EACX,CAEAiB,EAAGJ,CAAC,GAAKK,EAAGL,CAAC,CACf,CAGA,KAAOI,EAAG,EAAEqB,CAAG,IAAM,GAAIrB,EAAG,IAAI,EAGhC,KAAOA,EAAG,CAAC,IAAM,EAAGA,EAAG,MAAM,EAAG,EAAE+C,EAGlC,OAAK/C,EAAG,CAAC,GAETL,EAAE,EAAIK,EACNL,EAAE,EAAIuD,GAAkBlD,EAAI+C,CAAC,EAEtB5E,GAAWmB,GAASK,EAAGS,EAAIC,CAAE,EAAIV,GALrB,IAAID,EAAKW,IAAO,EAAI,GAAK,CAAC,CAM/C,EA2BAjB,GAAE,OAASA,GAAE,IAAM,SAAUO,EAAG,CAC9B,IAAIwD,EACF9D,EAAI,KACJK,EAAOL,EAAE,YAKX,OAHAM,EAAI,IAAID,EAAKC,CAAC,EAGV,CAACN,EAAE,GAAK,CAACM,EAAE,GAAKA,EAAE,GAAK,CAACA,EAAE,EAAE,CAAC,EAAU,IAAID,EAAK,GAAG,EAGnD,CAACC,EAAE,GAAKN,EAAE,GAAK,CAACA,EAAE,EAAE,CAAC,EAChBC,GAAS,IAAII,EAAKL,CAAC,EAAGK,EAAK,UAAWA,EAAK,QAAQ,GAI5DvB,GAAW,GAEPuB,EAAK,QAAU,GAIjByD,EAAIjC,GAAO7B,EAAGM,EAAE,IAAI,EAAG,EAAG,EAAG,CAAC,EAC9BwD,EAAE,GAAKxD,EAAE,GAETwD,EAAIjC,GAAO7B,EAAGM,EAAG,EAAGD,EAAK,OAAQ,CAAC,EAGpCyD,EAAIA,EAAE,MAAMxD,CAAC,EAEbxB,GAAW,GAEJkB,EAAE,MAAM8D,CAAC,EAClB,EASA/D,GAAE,mBAAqBA,GAAE,IAAM,UAAY,CACzC,OAAOgE,GAAmB,IAAI,CAChC,EAQAhE,GAAE,iBAAmBA,GAAE,GAAK,UAAY,CACtC,OAAOwD,GAAiB,IAAI,CAC9B,EAQAxD,GAAE,QAAUA,GAAE,IAAM,UAAY,CAC9B,IAAIC,EAAI,IAAI,KAAK,YAAY,IAAI,EACjC,OAAAA,EAAE,EAAI,CAACA,EAAE,EACFC,GAASD,CAAC,CACnB,EAwBAD,GAAE,KAAOA,GAAE,IAAM,SAAUO,EAAG,CAC5B,IAAI0D,EAAOjC,EAAG2B,EAAG,EAAGtD,EAAG4B,EAAKjB,EAAIC,EAAIL,EAAIC,EACtCZ,EAAI,KACJK,EAAOL,EAAE,YAKX,GAHAM,EAAI,IAAID,EAAKC,CAAC,EAGV,CAACN,EAAE,GAAK,CAACM,EAAE,EAGb,MAAI,CAACN,EAAE,GAAK,CAACM,EAAE,EAAGA,EAAI,IAAID,EAAK,GAAG,EAMxBL,EAAE,IAAGM,EAAI,IAAID,EAAKC,EAAE,GAAKN,EAAE,IAAMM,EAAE,EAAIN,EAAI,GAAG,GAEjDM,EAIT,GAAIN,EAAE,GAAKM,EAAE,EACX,OAAAA,EAAE,EAAI,CAACA,EAAE,EACFN,EAAE,MAAMM,CAAC,EASlB,GANAK,EAAKX,EAAE,EACPY,EAAKN,EAAE,EACPS,EAAKV,EAAK,UACVW,EAAKX,EAAK,SAGN,CAACM,EAAG,CAAC,GAAK,CAACC,EAAG,CAAC,EAIjB,OAAKA,EAAG,CAAC,IAAGN,EAAI,IAAID,EAAKL,CAAC,GAEnBlB,GAAWmB,GAASK,EAAGS,EAAIC,CAAE,EAAIV,EAa1C,GAPAF,EAAIhB,GAAUY,EAAE,EAAIL,EAAQ,EAC5B+D,EAAItE,GAAUkB,EAAE,EAAIX,EAAQ,EAE5BgB,EAAKA,EAAG,MAAM,EACd,EAAIP,EAAIsD,EAGJ,EAAG,CAuBL,IArBI,EAAI,GACN3B,EAAIpB,EACJ,EAAI,CAAC,EACLqB,EAAMpB,EAAG,SAETmB,EAAInB,EACJ8C,EAAItD,EACJ4B,EAAMrB,EAAG,QAIXP,EAAI,KAAK,KAAKW,EAAKpB,EAAQ,EAC3BqC,EAAM5B,EAAI4B,EAAM5B,EAAI,EAAI4B,EAAM,EAE1B,EAAIA,IACN,EAAIA,EACJD,EAAE,OAAS,GAIbA,EAAE,QAAQ,EACH,KAAMA,EAAE,KAAK,CAAC,EACrBA,EAAE,QAAQ,CACZ,CAcA,IAZAC,EAAMrB,EAAG,OACT,EAAIC,EAAG,OAGHoB,EAAM,EAAI,IACZ,EAAIA,EACJD,EAAInB,EACJA,EAAKD,EACLA,EAAKoB,GAIFiC,EAAQ,EAAG,GACdA,GAASrD,EAAG,EAAE,CAAC,EAAIA,EAAG,CAAC,EAAIC,EAAG,CAAC,EAAIoD,GAAStE,GAAO,EACnDiB,EAAG,CAAC,GAAKjB,GAUX,IAPIsE,IACFrD,EAAG,QAAQqD,CAAK,EAChB,EAAEN,GAKC1B,EAAMrB,EAAG,OAAQA,EAAG,EAAEqB,CAAG,GAAK,GAAIrB,EAAG,IAAI,EAE9C,OAAAL,EAAE,EAAIK,EACNL,EAAE,EAAIuD,GAAkBlD,EAAI+C,CAAC,EAEtB5E,GAAWmB,GAASK,EAAGS,EAAIC,CAAE,EAAIV,CAC1C,EASAP,GAAE,UAAYA,GAAE,GAAK,SAAUkE,EAAG,CAChC,IAAI7D,EACFJ,EAAI,KAEN,GAAIiE,IAAM,QAAUA,IAAM,CAAC,CAACA,GAAKA,IAAM,GAAKA,IAAM,EAAG,MAAM,MAAMjF,GAAkBiF,CAAC,EAEpF,OAAIjE,EAAE,GACJI,EAAI8D,GAAalE,EAAE,CAAC,EAChBiE,GAAKjE,EAAE,EAAI,EAAII,IAAGA,EAAIJ,EAAE,EAAI,IAEhCI,EAAI,IAGCA,CACT,EAQAL,GAAE,MAAQ,UAAY,CACpB,IAAIC,EAAI,KACNK,EAAOL,EAAE,YAEX,OAAOC,GAAS,IAAII,EAAKL,CAAC,EAAGA,EAAE,EAAI,EAAGK,EAAK,QAAQ,CACrD,EAkBAN,GAAE,KAAOA,GAAE,IAAM,UAAY,CAC3B,IAAIgB,EAAIC,EACNhB,EAAI,KACJK,EAAOL,EAAE,YAEX,OAAKA,EAAE,SAAS,EACZA,EAAE,OAAO,EAAU,IAAIK,EAAKL,CAAC,GAEjCe,EAAKV,EAAK,UACVW,EAAKX,EAAK,SACVA,EAAK,UAAYU,EAAK,KAAK,IAAIf,EAAE,EAAGA,EAAE,GAAG,CAAC,EAAIL,GAC9CU,EAAK,SAAW,EAEhBL,EAAImE,IAAK9D,EAAMa,GAAiBb,EAAML,CAAC,CAAC,EAExCK,EAAK,UAAYU,EACjBV,EAAK,SAAWW,EAETf,GAASpB,GAAW,EAAImB,EAAE,IAAI,EAAIA,EAAGe,EAAIC,EAAI,EAAI,GAb9B,IAAIX,EAAK,GAAG,CAcxC,EAeAN,GAAE,WAAaA,GAAE,KAAO,UAAY,CAClC,IAAIoB,EAAGC,EAAGI,EAAIH,EAAGC,EAAKG,EACpBzB,EAAI,KACJ+B,EAAI/B,EAAE,EACN0D,EAAI1D,EAAE,EACNuB,EAAIvB,EAAE,EACNK,EAAOL,EAAE,YAGX,GAAIuB,IAAM,GAAK,CAACQ,GAAK,CAACA,EAAE,CAAC,EACvB,OAAO,IAAI1B,EAAK,CAACkB,GAAKA,EAAI,IAAM,CAACQ,GAAKA,EAAE,CAAC,GAAK,IAAMA,EAAI/B,EAAI,GAAK,EAgCnE,IA7BAlB,GAAW,GAGXyC,EAAI,KAAK,KAAK,CAACvB,CAAC,EAIZuB,GAAK,GAAKA,GAAK,KACjBH,EAAIQ,GAAeG,CAAC,GAEfX,EAAE,OAASsC,GAAK,GAAK,IAAGtC,GAAK,KAClCG,EAAI,KAAK,KAAKH,CAAC,EACfsC,EAAItE,IAAWsE,EAAI,GAAK,CAAC,GAAKA,EAAI,GAAKA,EAAI,GAEvCnC,GAAK,IACPH,EAAI,KAAOsC,GAEXtC,EAAIG,EAAE,cAAc,EACpBH,EAAIA,EAAE,MAAM,EAAGA,EAAE,QAAQ,GAAG,EAAI,CAAC,EAAIsC,GAGvCrC,EAAI,IAAIhB,EAAKe,CAAC,GAEdC,EAAI,IAAIhB,EAAKkB,EAAE,SAAS,CAAC,EAG3BC,GAAMkC,EAAIrD,EAAK,WAAa,IAQ1B,GAJAoB,EAAIJ,EACJA,EAAII,EAAE,KAAKI,GAAO7B,EAAGyB,EAAGD,EAAK,EAAG,CAAC,CAAC,EAAE,MAAM,EAAG,EAGzCI,GAAeH,EAAE,CAAC,EAAE,MAAM,EAAGD,CAAE,KAAOJ,EAAIQ,GAAeP,EAAE,CAAC,GAAG,MAAM,EAAGG,CAAE,EAK5E,GAJAJ,EAAIA,EAAE,MAAMI,EAAK,EAAGA,EAAK,CAAC,EAItBJ,GAAK,QAAU,CAACE,GAAOF,GAAK,OAAQ,CAItC,GAAI,CAACE,IACHrB,GAASwB,EAAGiC,EAAI,EAAG,CAAC,EAEhBjC,EAAE,MAAMA,CAAC,EAAE,GAAGzB,CAAC,GAAG,CACpBqB,EAAII,EACJ,KACF,CAGFD,GAAM,EACNF,EAAM,CACR,KAAO,EAID,CAAC,CAACF,GAAK,CAAC,CAACA,EAAE,MAAM,CAAC,GAAKA,EAAE,OAAO,CAAC,GAAK,OAGxCnB,GAASoB,EAAGqC,EAAI,EAAG,CAAC,EACpBvC,EAAI,CAACE,EAAE,MAAMA,CAAC,EAAE,GAAGrB,CAAC,GAGtB,KACF,CAIJ,OAAAlB,GAAW,GAEJmB,GAASoB,EAAGqC,EAAGrD,EAAK,SAAUc,CAAC,CACxC,EAgBApB,GAAE,QAAUA,GAAE,IAAM,UAAY,CAC9B,IAAIgB,EAAIC,EACNhB,EAAI,KACJK,EAAOL,EAAE,YAEX,OAAKA,EAAE,SAAS,EACZA,EAAE,OAAO,EAAU,IAAIK,EAAKL,CAAC,GAEjCe,EAAKV,EAAK,UACVW,EAAKX,EAAK,SACVA,EAAK,UAAYU,EAAK,GACtBV,EAAK,SAAW,EAEhBL,EAAIA,EAAE,IAAI,EACVA,EAAE,EAAI,EACNA,EAAI6B,GAAO7B,EAAG,IAAIK,EAAK,CAAC,EAAE,MAAML,EAAE,MAAMA,CAAC,CAAC,EAAE,KAAK,EAAGe,EAAK,GAAI,CAAC,EAE9DV,EAAK,UAAYU,EACjBV,EAAK,SAAWW,EAETf,GAASpB,IAAY,GAAKA,IAAY,EAAImB,EAAE,IAAI,EAAIA,EAAGe,EAAIC,EAAI,EAAI,GAfhD,IAAIX,EAAK,GAAG,CAgBxC,EAwBAN,GAAE,MAAQA,GAAE,IAAM,SAAUO,EAAG,CAC7B,IAAI0D,EAAON,EAAGnD,EAAGH,EAAGiB,EAAG+C,EAAI3C,EAAGhB,EAAKC,EACjCV,EAAI,KACJK,EAAOL,EAAE,YACTW,EAAKX,EAAE,EACPY,GAAMN,EAAI,IAAID,EAAKC,CAAC,GAAG,EAKzB,GAHAA,EAAE,GAAKN,EAAE,EAGL,CAACW,GAAM,CAACA,EAAG,CAAC,GAAK,CAACC,GAAM,CAACA,EAAG,CAAC,EAE/B,OAAO,IAAIP,EAAK,CAACC,EAAE,GAAKK,GAAM,CAACA,EAAG,CAAC,GAAK,CAACC,GAAMA,GAAM,CAACA,EAAG,CAAC,GAAK,CAACD,EAI5D,IAIA,CAACA,GAAM,CAACC,EAAKN,EAAE,EAAI,EAAIA,EAAE,EAAI,CAAC,EAoBpC,IAjBAoD,EAAItE,GAAUY,EAAE,EAAIL,EAAQ,EAAIP,GAAUkB,EAAE,EAAIX,EAAQ,EACxDc,EAAME,EAAG,OACTD,EAAME,EAAG,OAGLH,EAAMC,IACRW,EAAIV,EACJA,EAAKC,EACLA,EAAKS,EACL+C,EAAK3D,EACLA,EAAMC,EACNA,EAAM0D,GAIR/C,EAAI,CAAC,EACL+C,EAAK3D,EAAMC,EACNH,EAAI6D,EAAI7D,KAAMc,EAAE,KAAK,CAAC,EAG3B,IAAKd,EAAIG,EAAK,EAAEH,GAAK,GAAI,CAEvB,IADAyD,EAAQ,EACH5D,EAAIK,EAAMF,EAAGH,EAAIG,GACpBkB,EAAIJ,EAAEjB,CAAC,EAAIQ,EAAGL,CAAC,EAAII,EAAGP,EAAIG,EAAI,CAAC,EAAIyD,EACnC3C,EAAEjB,GAAG,EAAIqB,EAAI/B,GAAO,EACpBsE,EAAQvC,EAAI/B,GAAO,EAGrB2B,EAAEjB,CAAC,GAAKiB,EAAEjB,CAAC,EAAI4D,GAAStE,GAAO,CACjC,CAGA,KAAO,CAAC2B,EAAE,EAAE+C,CAAE,GAAI/C,EAAE,IAAI,EAExB,OAAI2C,EAAO,EAAEN,EACRrC,EAAE,MAAM,EAEbf,EAAE,EAAIe,EACNf,EAAE,EAAIuD,GAAkBxC,EAAGqC,CAAC,EAErB5E,GAAWmB,GAASK,EAAGD,EAAK,UAAWA,EAAK,QAAQ,EAAIC,CACjE,EAaAP,GAAE,SAAW,SAAUyB,EAAIR,EAAI,CAC7B,OAAOqD,GAAe,KAAM,EAAG7C,EAAIR,CAAE,CACvC,EAaAjB,GAAE,gBAAkBA,GAAE,KAAO,SAAUuE,EAAItD,EAAI,CAC7C,IAAIhB,EAAI,KACNK,EAAOL,EAAE,YAGX,OADAA,EAAI,IAAIK,EAAKL,CAAC,EACVsE,IAAO,OAAetE,GAE1BuE,GAAWD,EAAI,EAAG/F,EAAU,EAExByC,IAAO,OAAQA,EAAKX,EAAK,SACxBkE,GAAWvD,EAAI,EAAG,CAAC,EAEjBf,GAASD,EAAGsE,EAAKtE,EAAE,EAAI,EAAGgB,CAAE,EACrC,EAWAjB,GAAE,cAAgB,SAAUuE,EAAItD,EAAI,CAClC,IAAIwD,EACFxE,EAAI,KACJK,EAAOL,EAAE,YAEX,OAAIsE,IAAO,OACTE,EAAMC,GAAezE,EAAG,EAAI,GAE5BuE,GAAWD,EAAI,EAAG/F,EAAU,EAExByC,IAAO,OAAQA,EAAKX,EAAK,SACxBkE,GAAWvD,EAAI,EAAG,CAAC,EAExBhB,EAAIC,GAAS,IAAII,EAAKL,CAAC,EAAGsE,EAAK,EAAGtD,CAAE,EACpCwD,EAAMC,GAAezE,EAAG,GAAMsE,EAAK,CAAC,GAG/BtE,EAAE,MAAM,GAAK,CAACA,EAAE,OAAO,EAAI,IAAMwE,EAAMA,CAChD,EAmBAzE,GAAE,QAAU,SAAUuE,EAAItD,EAAI,CAC5B,IAAIwD,EAAKlE,EACPN,EAAI,KACJK,EAAOL,EAAE,YAEX,OAAIsE,IAAO,OACTE,EAAMC,GAAezE,CAAC,GAEtBuE,GAAWD,EAAI,EAAG/F,EAAU,EAExByC,IAAO,OAAQA,EAAKX,EAAK,SACxBkE,GAAWvD,EAAI,EAAG,CAAC,EAExBV,EAAIL,GAAS,IAAII,EAAKL,CAAC,EAAGsE,EAAKtE,EAAE,EAAI,EAAGgB,CAAE,EAC1CwD,EAAMC,GAAenE,EAAG,GAAOgE,EAAKhE,EAAE,EAAI,CAAC,GAKtCN,EAAE,MAAM,GAAK,CAACA,EAAE,OAAO,EAAI,IAAMwE,EAAMA,CAChD,EAcAzE,GAAE,WAAa,SAAU2E,EAAM,CAC7B,IAAI3C,EAAG4C,EAAIC,EAAIC,EAAInB,EAAGtD,EAAGgB,EAAG0D,EAAIC,EAAIhE,EAAI+C,EAAGzC,EACzCrB,EAAI,KACJW,EAAKX,EAAE,EACPK,EAAOL,EAAE,YAEX,GAAI,CAACW,EAAI,OAAO,IAAIN,EAAKL,CAAC,EAU1B,GARA+E,EAAKJ,EAAK,IAAItE,EAAK,CAAC,EACpBuE,EAAKE,EAAK,IAAIzE,EAAK,CAAC,EAEpB0B,EAAI,IAAI1B,EAAKuE,CAAE,EACflB,EAAI3B,EAAE,EAAImC,GAAavD,CAAE,EAAIX,EAAE,EAAI,EACnCI,EAAIsD,EAAI/D,GACRoC,EAAE,EAAE,CAAC,EAAI1C,GAAQ,GAAIe,EAAI,EAAIT,GAAWS,EAAIA,CAAC,EAEzCsE,GAAQ,KAGVA,EAAOhB,EAAI,EAAI3B,EAAIgD,MACd,CAEL,GADA3D,EAAI,IAAIf,EAAKqE,CAAI,EACb,CAACtD,EAAE,MAAM,GAAKA,EAAE,GAAG2D,CAAE,EAAG,MAAM,MAAM/F,GAAkBoC,CAAC,EAC3DsD,EAAOtD,EAAE,GAAGW,CAAC,EAAK2B,EAAI,EAAI3B,EAAIgD,EAAM3D,CACtC,CAOA,IALAtC,GAAW,GACXsC,EAAI,IAAIf,EAAKuB,GAAejB,CAAE,CAAC,EAC/BI,EAAKV,EAAK,UACVA,EAAK,UAAYqD,EAAI/C,EAAG,OAAShB,GAAW,EAG1CmE,EAAIjC,GAAOT,EAAGW,EAAG,EAAG,EAAG,CAAC,EACxB8C,EAAKF,EAAG,KAAKb,EAAE,MAAMc,CAAE,CAAC,EACpBC,EAAG,IAAIH,CAAI,GAAK,GACpBC,EAAKC,EACLA,EAAKC,EACLA,EAAKE,EACLA,EAAKD,EAAG,KAAKhB,EAAE,MAAMe,CAAE,CAAC,EACxBC,EAAKD,EACLA,EAAK9C,EACLA,EAAIX,EAAE,MAAM0C,EAAE,MAAMe,CAAE,CAAC,EACvBzD,EAAIyD,EAGN,OAAAA,EAAKhD,GAAO6C,EAAK,MAAMC,CAAE,EAAGC,EAAI,EAAG,EAAG,CAAC,EACvCE,EAAKA,EAAG,KAAKD,EAAG,MAAME,CAAE,CAAC,EACzBJ,EAAKA,EAAG,KAAKE,EAAG,MAAMD,CAAE,CAAC,EACzBE,EAAG,EAAIC,EAAG,EAAI/E,EAAE,EAGhBqB,EAAIQ,GAAOkD,EAAIH,EAAIlB,EAAG,CAAC,EAAE,MAAM1D,CAAC,EAAE,IAAI,EAAE,IAAI6B,GAAOiD,EAAIH,EAAIjB,EAAG,CAAC,EAAE,MAAM1D,CAAC,EAAE,IAAI,CAAC,EAAI,EAC7E,CAAC+E,EAAIH,CAAE,EAAI,CAACE,EAAIH,CAAE,EAExBtE,EAAK,UAAYU,EACjBjC,GAAW,GAEJuC,CACT,EAaAtB,GAAE,cAAgBA,GAAE,MAAQ,SAAUyB,EAAIR,EAAI,CAC5C,OAAOqD,GAAe,KAAM,GAAI7C,EAAIR,CAAE,CACxC,EAmBAjB,GAAE,UAAY,SAAUO,EAAGU,EAAI,CAC7B,IAAIhB,EAAI,KACNK,EAAOL,EAAE,YAIX,GAFAA,EAAI,IAAIK,EAAKL,CAAC,EAEVM,GAAK,KAAM,CAGb,GAAI,CAACN,EAAE,EAAG,OAAOA,EAEjBM,EAAI,IAAID,EAAK,CAAC,EACdW,EAAKX,EAAK,QACZ,KAAO,CASL,GARAC,EAAI,IAAID,EAAKC,CAAC,EACVU,IAAO,OACTA,EAAKX,EAAK,SAEVkE,GAAWvD,EAAI,EAAG,CAAC,EAIjB,CAAChB,EAAE,EAAG,OAAOM,EAAE,EAAIN,EAAIM,EAG3B,GAAI,CAACA,EAAE,EACL,OAAIA,EAAE,IAAGA,EAAE,EAAIN,EAAE,GACVM,CAEX,CAGA,OAAIA,EAAE,EAAE,CAAC,GACPxB,GAAW,GACXkB,EAAI6B,GAAO7B,EAAGM,EAAG,EAAGU,EAAI,CAAC,EAAE,MAAMV,CAAC,EAClCxB,GAAW,GACXmB,GAASD,CAAC,IAIVM,EAAE,EAAIN,EAAE,EACRA,EAAIM,GAGCN,CACT,EAQAD,GAAE,SAAW,UAAY,CACvB,MAAO,CAAC,IACV,EAaAA,GAAE,QAAU,SAAUyB,EAAIR,EAAI,CAC5B,OAAOqD,GAAe,KAAM,EAAG7C,EAAIR,CAAE,CACvC,EA8CAjB,GAAE,QAAUA,GAAE,IAAM,SAAUO,EAAG,CAC/B,IAAIoD,EAAGtD,EAAGW,EAAIM,EAAGL,EAAIO,EACnBvB,EAAI,KACJK,EAAOL,EAAE,YACTgF,EAAK,EAAE1E,EAAI,IAAID,EAAKC,CAAC,GAGvB,GAAI,CAACN,EAAE,GAAK,CAACM,EAAE,GAAK,CAACN,EAAE,EAAE,CAAC,GAAK,CAACM,EAAE,EAAE,CAAC,EAAG,OAAO,IAAID,EAAKhB,GAAQ,CAACW,EAAGgF,CAAE,CAAC,EAIvE,GAFAhF,EAAI,IAAIK,EAAKL,CAAC,EAEVA,EAAE,GAAG,CAAC,EAAG,OAAOA,EAKpB,GAHAe,EAAKV,EAAK,UACVW,EAAKX,EAAK,SAENC,EAAE,GAAG,CAAC,EAAG,OAAOL,GAASD,EAAGe,EAAIC,CAAE,EAMtC,GAHA0C,EAAItE,GAAUkB,EAAE,EAAIX,EAAQ,EAGxB+D,GAAKpD,EAAE,EAAE,OAAS,IAAMF,EAAI4E,EAAK,EAAI,CAACA,EAAKA,IAAOpF,IACpD,OAAAyB,EAAI4D,GAAO5E,EAAML,EAAGI,EAAGW,CAAE,EAClBT,EAAE,EAAI,EAAI,IAAID,EAAK,CAAC,EAAE,IAAIgB,CAAC,EAAIpB,GAASoB,EAAGN,EAAIC,CAAE,EAM1D,GAHAO,EAAIvB,EAAE,EAGFuB,EAAI,EAAG,CAGT,GAAImC,EAAIpD,EAAE,EAAE,OAAS,EAAG,OAAO,IAAID,EAAK,GAAG,EAM3C,GAHKC,EAAE,EAAEoD,CAAC,EAAI,IAASnC,EAAI,GAGvBvB,EAAE,GAAK,GAAKA,EAAE,EAAE,CAAC,GAAK,GAAKA,EAAE,EAAE,QAAU,EAC3C,OAAAA,EAAE,EAAIuB,EACCvB,CAEX,CAcA,OARAI,EAAIf,GAAQ,CAACW,EAAGgF,CAAE,EAClBtB,EAAItD,GAAK,GAAK,CAAC,SAASA,CAAC,EACrBhB,GAAU4F,GAAM,KAAK,IAAI,KAAOpD,GAAe5B,EAAE,CAAC,CAAC,EAAI,KAAK,KAAOA,EAAE,EAAI,EAAE,EAC3E,IAAIK,EAAKD,EAAI,EAAE,EAAE,EAKjBsD,EAAIrD,EAAK,KAAO,GAAKqD,EAAIrD,EAAK,KAAO,EAAU,IAAIA,EAAKqD,EAAI,EAAInC,EAAI,EAAI,CAAC,GAE7EzC,GAAW,GACXuB,EAAK,SAAWL,EAAE,EAAI,EAMtBI,EAAI,KAAK,IAAI,IAAKsD,EAAI,IAAI,MAAM,EAGhCrC,EAAI0C,GAAmBzD,EAAE,MAAMiD,GAAiBvD,EAAGe,EAAKX,CAAC,CAAC,EAAGW,CAAE,EAG3DM,EAAE,IAGJA,EAAIpB,GAASoB,EAAGN,EAAK,EAAG,CAAC,EAIrB0C,GAAoBpC,EAAE,EAAGN,EAAIC,CAAE,IACjC0C,EAAI3C,EAAK,GAGTM,EAAIpB,GAAS8D,GAAmBzD,EAAE,MAAMiD,GAAiBvD,EAAG0D,EAAItD,CAAC,CAAC,EAAGsD,CAAC,EAAGA,EAAI,EAAG,CAAC,EAG7E,CAAC9B,GAAeP,EAAE,CAAC,EAAE,MAAMN,EAAK,EAAGA,EAAK,EAAE,EAAI,GAAK,OACrDM,EAAIpB,GAASoB,EAAGN,EAAK,EAAG,CAAC,KAK/BM,EAAE,EAAIE,EACNzC,GAAW,GACXuB,EAAK,SAAWW,EAETf,GAASoB,EAAGN,EAAIC,CAAE,EAC3B,EAcAjB,GAAE,YAAc,SAAUyB,EAAIR,EAAI,CAChC,IAAIwD,EACFxE,EAAI,KACJK,EAAOL,EAAE,YAEX,OAAIwB,IAAO,OACTgD,EAAMC,GAAezE,EAAGA,EAAE,GAAKK,EAAK,UAAYL,EAAE,GAAKK,EAAK,QAAQ,GAEpEkE,GAAW/C,EAAI,EAAGjD,EAAU,EAExByC,IAAO,OAAQA,EAAKX,EAAK,SACxBkE,GAAWvD,EAAI,EAAG,CAAC,EAExBhB,EAAIC,GAAS,IAAII,EAAKL,CAAC,EAAGwB,EAAIR,CAAE,EAChCwD,EAAMC,GAAezE,EAAGwB,GAAMxB,EAAE,GAAKA,EAAE,GAAKK,EAAK,SAAUmB,CAAE,GAGxDxB,EAAE,MAAM,GAAK,CAACA,EAAE,OAAO,EAAI,IAAMwE,EAAMA,CAChD,EAiBAzE,GAAE,oBAAsBA,GAAE,KAAO,SAAUyB,EAAIR,EAAI,CACjD,IAAIhB,EAAI,KACNK,EAAOL,EAAE,YAEX,OAAIwB,IAAO,QACTA,EAAKnB,EAAK,UACVW,EAAKX,EAAK,WAEVkE,GAAW/C,EAAI,EAAGjD,EAAU,EAExByC,IAAO,OAAQA,EAAKX,EAAK,SACxBkE,GAAWvD,EAAI,EAAG,CAAC,GAGnBf,GAAS,IAAII,EAAKL,CAAC,EAAGwB,EAAIR,CAAE,CACrC,EAUAjB,GAAE,SAAW,UAAY,CACvB,IAAIC,EAAI,KACNK,EAAOL,EAAE,YACTwE,EAAMC,GAAezE,EAAGA,EAAE,GAAKK,EAAK,UAAYL,EAAE,GAAKK,EAAK,QAAQ,EAEtE,OAAOL,EAAE,MAAM,GAAK,CAACA,EAAE,OAAO,EAAI,IAAMwE,EAAMA,CAChD,EAOAzE,GAAE,UAAYA,GAAE,MAAQ,UAAY,CAClC,OAAOE,GAAS,IAAI,KAAK,YAAY,IAAI,EAAG,KAAK,EAAI,EAAG,CAAC,CAC3D,EAQAF,GAAE,QAAUA,GAAE,OAAS,UAAY,CACjC,IAAIC,EAAI,KACNK,EAAOL,EAAE,YACTwE,EAAMC,GAAezE,EAAGA,EAAE,GAAKK,EAAK,UAAYL,EAAE,GAAKK,EAAK,QAAQ,EAEtE,OAAOL,EAAE,MAAM,EAAI,IAAMwE,EAAMA,CACjC,EAoDA,SAAS5C,GAAeG,EAAG,CACzB,IAAIxB,EAAGH,EAAG8E,EACRC,EAAkBpD,EAAE,OAAS,EAC7ByC,EAAM,GACN1C,EAAIC,EAAE,CAAC,EAET,GAAIoD,EAAkB,EAAG,CAEvB,IADAX,GAAO1C,EACFvB,EAAI,EAAGA,EAAI4E,EAAiB5E,IAC/B2E,EAAKnD,EAAExB,CAAC,EAAI,GACZH,EAAIT,GAAWuF,EAAG,OACd9E,IAAGoE,GAAOY,GAAchF,CAAC,GAC7BoE,GAAOU,EAGTpD,EAAIC,EAAExB,CAAC,EACP2E,EAAKpD,EAAI,GACT1B,EAAIT,GAAWuF,EAAG,OACd9E,IAAGoE,GAAOY,GAAchF,CAAC,EAC/B,SAAW0B,IAAM,EACf,MAAO,IAIT,KAAOA,EAAI,KAAO,GAAIA,GAAK,GAE3B,OAAO0C,EAAM1C,CACf,CAGA,SAASyC,GAAWhE,EAAGL,EAAKC,EAAK,CAC/B,GAAII,IAAM,CAAC,CAACA,GAAKA,EAAIL,GAAOK,EAAIJ,EAC9B,MAAM,MAAMnB,GAAkBuB,CAAC,CAEnC,CAQA,SAASkD,GAAoB1B,EAAGxB,EAAGS,EAAIqE,EAAW,CAChD,IAAIC,EAAIlF,EAAGiB,EAAGkE,EAGd,IAAKnF,EAAI2B,EAAE,CAAC,EAAG3B,GAAK,GAAIA,GAAK,GAAI,EAAEG,EAGnC,MAAI,EAAEA,EAAI,GACRA,GAAKZ,GACL2F,EAAK,IAELA,EAAK,KAAK,MAAM/E,EAAI,GAAKZ,EAAQ,EACjCY,GAAKZ,IAMPS,EAAIf,GAAQ,GAAIM,GAAWY,CAAC,EAC5BgF,EAAKxD,EAAEuD,CAAE,EAAIlF,EAAI,EAEbiF,GAAa,KACX9E,EAAI,GACFA,GAAK,EAAGgF,EAAKA,EAAK,IAAM,EACnBhF,GAAK,IAAGgF,EAAKA,EAAK,GAAK,GAChClE,EAAIL,EAAK,GAAKuE,GAAM,OAASvE,EAAK,GAAKuE,GAAM,OAASA,GAAM,KAASA,GAAM,GAE3ElE,GAAKL,EAAK,GAAKuE,EAAK,GAAKnF,GAAKY,EAAK,GAAKuE,EAAK,GAAKnF,EAAI,KACnD2B,EAAEuD,EAAK,CAAC,EAAIlF,EAAI,IAAM,IAAMf,GAAQ,GAAIkB,EAAI,CAAC,EAAI,IAC/CgF,GAAMnF,EAAI,GAAKmF,GAAM,KAAOxD,EAAEuD,EAAK,CAAC,EAAIlF,EAAI,IAAM,IAAM,EAG3DG,EAAI,GACFA,GAAK,EAAGgF,EAAKA,EAAK,IAAO,EACpBhF,GAAK,EAAGgF,EAAKA,EAAK,IAAM,EACxBhF,GAAK,IAAGgF,EAAKA,EAAK,GAAK,GAChClE,GAAKgE,GAAarE,EAAK,IAAMuE,GAAM,MAAQ,CAACF,GAAarE,EAAK,GAAKuE,GAAM,MAEzElE,IAAMgE,GAAarE,EAAK,IAAMuE,EAAK,GAAKnF,GACvC,CAACiF,GAAarE,EAAK,GAAMuE,EAAK,GAAKnF,EAAI,KACrC2B,EAAEuD,EAAK,CAAC,EAAIlF,EAAI,IAAO,IAAMf,GAAQ,GAAIkB,EAAI,CAAC,EAAI,EAIlDc,CACT,CAMA,SAASmE,GAAYhB,EAAKiB,EAAQC,EAAS,CAOzC,QANIlF,EACFmF,EAAM,CAAC,CAAC,EACRC,EACArF,EAAI,EACJsF,EAAOrB,EAAI,OAENjE,EAAIsF,GAAO,CAChB,IAAKD,EAAOD,EAAI,OAAQC,KAASD,EAAIC,CAAI,GAAKH,EAE9C,IADAE,EAAI,CAAC,GAAKnH,GAAS,QAAQgG,EAAI,OAAOjE,GAAG,CAAC,EACrCC,EAAI,EAAGA,EAAImF,EAAI,OAAQnF,IACtBmF,EAAInF,CAAC,EAAIkF,EAAU,IACjBC,EAAInF,EAAI,CAAC,IAAM,SAAQmF,EAAInF,EAAI,CAAC,EAAI,GACxCmF,EAAInF,EAAI,CAAC,GAAKmF,EAAInF,CAAC,EAAIkF,EAAU,EACjCC,EAAInF,CAAC,GAAKkF,EAGhB,CAEA,OAAOC,EAAI,QAAQ,CACrB,CAQA,SAAS1E,IAAOZ,EAAML,EAAG,CACvB,IAAII,EAAG4B,EAAK1B,EAEZ,GAAIN,EAAE,OAAO,EAAG,OAAOA,EAMvBgC,EAAMhC,EAAE,EAAE,OACNgC,EAAM,IACR5B,EAAI,KAAK,KAAK4B,EAAM,CAAC,EACrB1B,GAAK,EAAI4B,GAAQ,EAAG9B,CAAC,GAAG,SAAS,IAEjCA,EAAI,GACJE,EAAI,gCAGND,EAAK,WAAaD,EAElBJ,EAAImC,GAAa9B,EAAM,EAAGL,EAAE,MAAMM,CAAC,EAAG,IAAID,EAAK,CAAC,CAAC,EAGjD,QAASE,EAAIH,EAAGG,KAAM,CACpB,IAAIuF,EAAQ9F,EAAE,MAAMA,CAAC,EACrBA,EAAI8F,EAAM,MAAMA,CAAK,EAAE,MAAMA,CAAK,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,CACrD,CAEA,OAAAzF,EAAK,WAAaD,EAEXJ,CACT,CAMA,IAAI6B,GAAU,UAAY,CAGxB,SAASkE,EAAgB/F,EAAGI,EAAG4C,EAAM,CACnC,IAAIgD,EACFhC,EAAQ,EACRzD,EAAIP,EAAE,OAER,IAAKA,EAAIA,EAAE,MAAM,EAAGO,KAClByF,EAAOhG,EAAEO,CAAC,EAAIH,EAAI4D,EAClBhE,EAAEO,CAAC,EAAIyF,EAAOhD,EAAO,EACrBgB,EAAQgC,EAAOhD,EAAO,EAGxB,OAAIgB,GAAOhE,EAAE,QAAQgE,CAAK,EAEnBhE,CACT,CAEA,SAASiG,EAAQC,EAAGC,EAAGC,EAAIC,EAAI,CAC7B,IAAI9F,EAAGc,EAEP,GAAI+E,GAAMC,EACRhF,EAAI+E,EAAKC,EAAK,EAAI,OAElB,KAAK9F,EAAIc,EAAI,EAAGd,EAAI6F,EAAI7F,IACtB,GAAI2F,EAAE3F,CAAC,GAAK4F,EAAE5F,CAAC,EAAG,CAChBc,EAAI6E,EAAE3F,CAAC,EAAI4F,EAAE5F,CAAC,EAAI,EAAI,GACtB,KACF,CAIJ,OAAOc,CACT,CAEA,SAASiF,EAASJ,EAAGC,EAAGC,EAAIpD,EAAM,CAIhC,QAHIzC,EAAI,EAGD6F,KACLF,EAAEE,CAAE,GAAK7F,EACTA,EAAI2F,EAAEE,CAAE,EAAID,EAAEC,CAAE,EAAI,EAAI,EACxBF,EAAEE,CAAE,EAAI7F,EAAIyC,EAAOkD,EAAEE,CAAE,EAAID,EAAEC,CAAE,EAIjC,KAAO,CAACF,EAAE,CAAC,GAAKA,EAAE,OAAS,GAAIA,EAAE,MAAM,CACzC,CAEA,OAAO,SAAUlG,EAAGM,EAAGS,EAAIC,EAAIsD,EAAItB,EAAM,CACvC,IAAIuD,EAAK7C,EAAGnD,EAAGH,EAAGoG,EAASC,EAAMC,EAAMC,EAAO7C,EAAG8C,EAAIC,EAAKC,EAAMC,EAAMvF,EAAIC,EAAGuF,EAAIC,EAAIC,EACnFC,EAAIC,EACJ/G,EAAOL,EAAE,YACTqH,EAAOrH,EAAE,GAAKM,EAAE,EAAI,EAAI,GACxBK,EAAKX,EAAE,EACPY,EAAKN,EAAE,EAGT,GAAI,CAACK,GAAM,CAACA,EAAG,CAAC,GAAK,CAACC,GAAM,CAACA,EAAG,CAAC,EAE/B,OAAO,IAAIP,EACT,CAACL,EAAE,GAAK,CAACM,EAAE,IAAMK,EAAKC,GAAMD,EAAG,CAAC,GAAKC,EAAG,CAAC,EAAI,CAACA,GAAM,IAGpDD,GAAMA,EAAG,CAAC,GAAK,GAAK,CAACC,EAAKyG,EAAO,EAAIA,EAAO,CAAC,EAmBjD,IAhBIrE,GACFwD,EAAU,EACV9C,EAAI1D,EAAE,EAAIM,EAAE,IAEZ0C,EAAOtD,GACP8G,EAAU7G,GACV+D,EAAItE,GAAUY,EAAE,EAAIwG,CAAO,EAAIpH,GAAUkB,EAAE,EAAIkG,CAAO,GAGxDW,EAAKvG,EAAG,OACRqG,EAAKtG,EAAG,OACRmD,EAAI,IAAIzD,EAAKgH,CAAI,EACjBT,EAAK9C,EAAE,EAAI,CAAC,EAIPvD,EAAI,EAAGK,EAAGL,CAAC,IAAMI,EAAGJ,CAAC,GAAK,GAAIA,IAAI,CAavC,GAXIK,EAAGL,CAAC,GAAKI,EAAGJ,CAAC,GAAK,IAAImD,IAEtB3C,GAAM,MACRS,EAAKT,EAAKV,EAAK,UACfW,EAAKX,EAAK,UACDiE,EACT9C,EAAKT,GAAMf,EAAE,EAAIM,EAAE,GAAK,EAExBkB,EAAKT,EAGHS,EAAK,EACPoF,EAAG,KAAK,CAAC,EACTH,EAAO,OACF,CAOL,GAJAjF,EAAKA,EAAKgF,EAAU,EAAI,EACxBjG,EAAI,EAGA4G,GAAM,EAAG,CAMX,IALA/G,EAAI,EACJQ,EAAKA,EAAG,CAAC,EACTY,KAGQjB,EAAI0G,GAAM7G,IAAMoB,IAAMjB,IAC5BkB,EAAIrB,EAAI4C,GAAQrC,EAAGJ,CAAC,GAAK,GACzBqG,EAAGrG,CAAC,EAAIkB,EAAIb,EAAK,EACjBR,EAAIqB,EAAIb,EAAK,EAGf6F,EAAOrG,GAAKG,EAAI0G,CAGlB,KAAO,CAiBL,IAdA7G,EAAI4C,GAAQpC,EAAG,CAAC,EAAI,GAAK,EAErBR,EAAI,IACNQ,EAAKmF,EAAgBnF,EAAIR,EAAG4C,CAAI,EAChCrC,EAAKoF,EAAgBpF,EAAIP,EAAG4C,CAAI,EAChCmE,EAAKvG,EAAG,OACRqG,EAAKtG,EAAG,QAGVqG,EAAKG,EACLN,EAAMlG,EAAG,MAAM,EAAGwG,CAAE,EACpBL,EAAOD,EAAI,OAGJC,EAAOK,GAAKN,EAAIC,GAAM,EAAI,EAEjCM,EAAKxG,EAAG,MAAM,EACdwG,EAAG,QAAQ,CAAC,EACZF,EAAMtG,EAAG,CAAC,EAENA,EAAG,CAAC,GAAKoC,EAAO,GAAG,EAAEkE,EAEzB,GACE9G,EAAI,EAGJmG,EAAMN,EAAQrF,EAAIiG,EAAKM,EAAIL,CAAI,EAG3BP,EAAM,GAGRQ,EAAOF,EAAI,CAAC,EACRM,GAAML,IAAMC,EAAOA,EAAO/D,GAAQ6D,EAAI,CAAC,GAAK,IAGhDzG,EAAI2G,EAAOG,EAAM,EAUb9G,EAAI,GACFA,GAAK4C,IAAM5C,EAAI4C,EAAO,GAG1B0D,EAAOX,EAAgBnF,EAAIR,EAAG4C,CAAI,EAClC2D,EAAQD,EAAK,OACbI,EAAOD,EAAI,OAGXN,EAAMN,EAAQS,EAAMG,EAAKF,EAAOG,CAAI,EAGhCP,GAAO,IACTnG,IAGAkG,EAASI,EAAMS,EAAKR,EAAQS,EAAKxG,EAAI+F,EAAO3D,CAAI,KAO9C5C,GAAK,IAAGmG,EAAMnG,EAAI,GACtBsG,EAAO9F,EAAG,MAAM,GAGlB+F,EAAQD,EAAK,OACTC,EAAQG,GAAMJ,EAAK,QAAQ,CAAC,EAGhCJ,EAASO,EAAKH,EAAMI,EAAM9D,CAAI,EAG1BuD,GAAO,KACTO,EAAOD,EAAI,OAGXN,EAAMN,EAAQrF,EAAIiG,EAAKM,EAAIL,CAAI,EAG3BP,EAAM,IACRnG,IAGAkG,EAASO,EAAKM,EAAKL,EAAOM,EAAKxG,EAAIkG,EAAM9D,CAAI,IAIjD8D,EAAOD,EAAI,QACFN,IAAQ,IACjBnG,IACAyG,EAAM,CAAC,CAAC,GAIVD,EAAGrG,GAAG,EAAIH,EAGNmG,GAAOM,EAAI,CAAC,EACdA,EAAIC,GAAM,EAAInG,EAAGqG,CAAE,GAAK,GAExBH,EAAM,CAAClG,EAAGqG,CAAE,CAAC,EACbF,EAAO,UAGDE,IAAOC,GAAMJ,EAAI,CAAC,IAAM,SAAWrF,KAE7CiF,EAAOI,EAAI,CAAC,IAAM,MACpB,CAGKD,EAAG,CAAC,GAAGA,EAAG,MAAM,CACvB,CAGA,GAAIJ,GAAW,EACb1C,EAAE,EAAIJ,EACN9E,GAAU6H,MACL,CAGL,IAAKlG,EAAI,EAAGH,EAAIwG,EAAG,CAAC,EAAGxG,GAAK,GAAIA,GAAK,GAAIG,IACzCuD,EAAE,EAAIvD,EAAImD,EAAI8C,EAAU,EAExBvG,GAAS6D,EAAGQ,EAAKvD,EAAK+C,EAAE,EAAI,EAAI/C,EAAIC,EAAIyF,CAAI,CAC9C,CAEA,OAAO3C,CACT,CACF,EAAG,EAOF,SAAS7D,GAASD,EAAGwB,EAAIR,EAAIsG,EAAa,CACzC,IAAIC,EAAQhH,EAAGC,EAAGJ,EAAGmF,EAAIiC,EAAS1F,EAAGnB,EAAI8G,EACvCpH,EAAOL,EAAE,YAGX0H,EAAK,GAAIlG,GAAM,KAAM,CAInB,GAHAb,EAAKX,EAAE,EAGH,CAACW,EAAI,OAAOX,EAWhB,IAAKuH,EAAS,EAAGnH,EAAIO,EAAG,CAAC,EAAGP,GAAK,GAAIA,GAAK,GAAImH,IAI9C,GAHAhH,EAAIiB,EAAK+F,EAGLhH,EAAI,EACNA,GAAKZ,GACLa,EAAIgB,EACJM,EAAInB,EAAG8G,EAAM,CAAC,EAGdlC,EAAKzD,EAAIzC,GAAQ,GAAIkI,EAAS/G,EAAI,CAAC,EAAI,GAAK,UAE5CiH,EAAM,KAAK,MAAMlH,EAAI,GAAKZ,EAAQ,EAClCS,EAAIO,EAAG,OACH8G,GAAOrH,EACT,GAAIkH,EAAa,CAGf,KAAOlH,KAAOqH,GAAM9G,EAAG,KAAK,CAAC,EAC7BmB,EAAIyD,EAAK,EACTgC,EAAS,EACThH,GAAKZ,GACLa,EAAID,EAAIZ,GAAW,CACrB,KACE,OAAM+H,MAEH,CAIL,IAHA5F,EAAI1B,EAAIO,EAAG8G,CAAG,EAGTF,EAAS,EAAGnH,GAAK,GAAIA,GAAK,GAAImH,IAGnChH,GAAKZ,GAILa,EAAID,EAAIZ,GAAW4H,EAGnBhC,EAAK/E,EAAI,EAAI,EAAIsB,EAAIzC,GAAQ,GAAIkI,EAAS/G,EAAI,CAAC,EAAI,GAAK,CAC1D,CAmBF,GAfA8G,EAAcA,GAAe9F,EAAK,GAChCb,EAAG8G,EAAM,CAAC,IAAM,SAAWjH,EAAI,EAAIsB,EAAIA,EAAIzC,GAAQ,GAAIkI,EAAS/G,EAAI,CAAC,GAMvEgH,EAAUxG,EAAK,GACVuE,GAAM+B,KAAiBtG,GAAM,GAAKA,IAAOhB,EAAE,EAAI,EAAI,EAAI,IACxDuF,EAAK,GAAKA,GAAM,IAAMvE,GAAM,GAAKsG,GAAetG,GAAM,IAGpDT,EAAI,EAAIC,EAAI,EAAIsB,EAAIzC,GAAQ,GAAIkI,EAAS/G,CAAC,EAAI,EAAIG,EAAG8G,EAAM,CAAC,GAAK,GAAM,GACvEzG,IAAOhB,EAAE,EAAI,EAAI,EAAI,IAEvBwB,EAAK,GAAK,CAACb,EAAG,CAAC,EACjB,OAAAA,EAAG,OAAS,EACR6G,GAGFhG,GAAMxB,EAAE,EAAI,EAGZW,EAAG,CAAC,EAAItB,GAAQ,IAAKM,GAAW6B,EAAK7B,IAAYA,EAAQ,EACzDK,EAAE,EAAI,CAACwB,GAAM,GAIbb,EAAG,CAAC,EAAIX,EAAE,EAAI,EAGTA,EAiBT,GAbIO,GAAK,GACPI,EAAG,OAAS8G,EACZrH,EAAI,EACJqH,MAEA9G,EAAG,OAAS8G,EAAM,EAClBrH,EAAIf,GAAQ,GAAIM,GAAWY,CAAC,EAI5BI,EAAG8G,CAAG,EAAIjH,EAAI,GAAKsB,EAAIzC,GAAQ,GAAIkI,EAAS/G,CAAC,EAAInB,GAAQ,GAAImB,CAAC,EAAI,GAAKJ,EAAI,GAGzEoH,EACF,OAGE,GAAIC,GAAO,EAAG,CAGZ,IAAKlH,EAAI,EAAGC,EAAIG,EAAG,CAAC,EAAGH,GAAK,GAAIA,GAAK,GAAID,IAEzC,IADAC,EAAIG,EAAG,CAAC,GAAKP,EACRA,EAAI,EAAGI,GAAK,GAAIA,GAAK,GAAIJ,IAG1BG,GAAKH,IACPJ,EAAE,IACEW,EAAG,CAAC,GAAKjB,KAAMiB,EAAG,CAAC,EAAI,IAG7B,KACF,KAAO,CAEL,GADAA,EAAG8G,CAAG,GAAKrH,EACPO,EAAG8G,CAAG,GAAK/H,GAAM,MACrBiB,EAAG8G,GAAK,EAAI,EACZrH,EAAI,CACN,CAKJ,IAAKG,EAAII,EAAG,OAAQA,EAAG,EAAEJ,CAAC,IAAM,GAAII,EAAG,IAAI,CAC7C,CAEA,OAAI7B,KAGEkB,EAAE,EAAIK,EAAK,MAGbL,EAAE,EAAI,KACNA,EAAE,EAAI,KAGGA,EAAE,EAAIK,EAAK,OAGpBL,EAAE,EAAI,EACNA,EAAE,EAAI,CAAC,CAAC,IAKLA,CACT,CAGA,SAASyE,GAAezE,EAAG2H,EAAOnG,EAAI,CACpC,GAAI,CAACxB,EAAE,SAAS,EAAG,OAAO4H,GAAkB5H,CAAC,EAC7C,IAAII,EACFsD,EAAI1D,EAAE,EACNwE,EAAM5C,GAAe5B,EAAE,CAAC,EACxBgC,EAAMwC,EAAI,OAEZ,OAAImD,GACEnG,IAAOpB,EAAIoB,EAAKQ,GAAO,EACzBwC,EAAMA,EAAI,OAAO,CAAC,EAAI,IAAMA,EAAI,MAAM,CAAC,EAAIY,GAAchF,CAAC,EACjD4B,EAAM,IACfwC,EAAMA,EAAI,OAAO,CAAC,EAAI,IAAMA,EAAI,MAAM,CAAC,GAGzCA,EAAMA,GAAOxE,EAAE,EAAI,EAAI,IAAM,MAAQA,EAAE,GAC9B0D,EAAI,GACbc,EAAM,KAAOY,GAAc,CAAC1B,EAAI,CAAC,EAAIc,EACjChD,IAAOpB,EAAIoB,EAAKQ,GAAO,IAAGwC,GAAOY,GAAchF,CAAC,IAC3CsD,GAAK1B,GACdwC,GAAOY,GAAc1B,EAAI,EAAI1B,CAAG,EAC5BR,IAAOpB,EAAIoB,EAAKkC,EAAI,GAAK,IAAGc,EAAMA,EAAM,IAAMY,GAAchF,CAAC,MAE5DA,EAAIsD,EAAI,GAAK1B,IAAKwC,EAAMA,EAAI,MAAM,EAAGpE,CAAC,EAAI,IAAMoE,EAAI,MAAMpE,CAAC,GAC5DoB,IAAOpB,EAAIoB,EAAKQ,GAAO,IACrB0B,EAAI,IAAM1B,IAAKwC,GAAO,KAC1BA,GAAOY,GAAchF,CAAC,IAInBoE,CACT,CAIA,SAASX,GAAkB0D,EAAQ7D,EAAG,CACpC,IAAI5B,EAAIyF,EAAO,CAAC,EAGhB,IAAM7D,GAAK/D,GAAUmC,GAAK,GAAIA,GAAK,GAAI4B,IACvC,OAAOA,CACT,CAGA,SAASF,GAAQnD,EAAMmB,EAAIT,EAAI,CAC7B,GAAIS,EAAK3B,IAGP,MAAAf,GAAW,GACPiC,IAAIV,EAAK,UAAYU,GACnB,MAAM9B,EAAsB,EAEpC,OAAOgB,GAAS,IAAII,EAAK5B,EAAI,EAAG+C,EAAI,EAAG,EAAI,CAC7C,CAGA,SAASmB,GAAMtC,EAAMmB,EAAIR,EAAI,CAC3B,GAAIQ,EAAK1B,GAAc,MAAM,MAAMb,EAAsB,EACzD,OAAOgB,GAAS,IAAII,EAAK3B,EAAE,EAAG8C,EAAIR,EAAI,EAAI,CAC5C,CAGA,SAASkD,GAAaqD,EAAQ,CAC5B,IAAIzF,EAAIyF,EAAO,OAAS,EACtBvF,EAAMF,EAAInC,GAAW,EAKvB,GAHAmC,EAAIyF,EAAOzF,CAAC,EAGRA,EAAG,CAGL,KAAOA,EAAI,IAAM,EAAGA,GAAK,GAAIE,IAG7B,IAAKF,EAAIyF,EAAO,CAAC,EAAGzF,GAAK,GAAIA,GAAK,GAAIE,GACxC,CAEA,OAAOA,CACT,CAGA,SAASoD,GAAchF,EAAG,CAExB,QADIyH,EAAK,GACFzH,KAAMyH,GAAM,IACnB,OAAOA,CACT,CAUA,SAAS5C,GAAO5E,EAAML,EAAGoB,EAAGL,EAAI,CAC9B,IAAIuG,EACFjG,EAAI,IAAIhB,EAAK,CAAC,EAIdD,EAAI,KAAK,KAAKW,EAAKpB,GAAW,CAAC,EAIjC,IAFAb,GAAW,KAEF,CAOP,GANIsC,EAAI,IACNC,EAAIA,EAAE,MAAMrB,CAAC,EACT8H,GAASzG,EAAE,EAAGjB,CAAC,IAAGkH,EAAc,KAGtClG,EAAIhC,GAAUgC,EAAI,CAAC,EACfA,IAAM,EAAG,CAGXA,EAAIC,EAAE,EAAE,OAAS,EACbiG,GAAejG,EAAE,EAAED,CAAC,IAAM,GAAG,EAAEC,EAAE,EAAED,CAAC,EACxC,KACF,CAEApB,EAAIA,EAAE,MAAMA,CAAC,EACb8H,GAAS9H,EAAE,EAAGI,CAAC,CACjB,CAEA,OAAAtB,GAAW,GAEJuC,CACT,CAGA,SAAS0G,GAAM3G,EAAG,CAChB,OAAOA,EAAE,EAAEA,EAAE,EAAE,OAAS,CAAC,EAAI,CAC/B,CAMA,SAAS4G,GAAS3H,EAAM4H,EAAMC,EAAM,CAKlC,QAJI5H,EACFN,EAAI,IAAIK,EAAK4H,EAAK,CAAC,CAAC,EACpB1H,EAAI,EAEC,EAAEA,EAAI0H,EAAK,QAEhB,GADA3H,EAAI,IAAID,EAAK4H,EAAK1H,CAAC,CAAC,EACfD,EAAE,EAGIN,EAAEkI,CAAI,EAAE5H,CAAC,IAClBN,EAAIM,OAJI,CACRN,EAAIM,EACJ,KACF,CAKF,OAAON,CACT,CAkCA,SAAS+D,GAAmB/D,EAAGwB,EAAI,CACjC,IAAI0B,EAAaI,EAAO9C,EAAG2H,EAAKC,EAAK3G,EAAGmB,EACtCtB,EAAM,EACNf,EAAI,EACJH,EAAI,EACJC,EAAOL,EAAE,YACTgB,EAAKX,EAAK,SACVU,EAAKV,EAAK,UAGZ,GAAI,CAACL,EAAE,GAAK,CAACA,EAAE,EAAE,CAAC,GAAKA,EAAE,EAAI,GAE3B,OAAO,IAAIK,EAAKL,EAAE,EACbA,EAAE,EAAE,CAAC,EAAQA,EAAE,EAAI,EAAI,EAAI,IAAlB,EACVA,EAAE,EAAIA,EAAE,EAAI,EAAI,EAAIA,EAAI,GAAK,EAanC,IAVIwB,GAAM,MACR1C,GAAW,GACX8D,EAAM7B,GAEN6B,EAAMpB,EAGRC,EAAI,IAAIpB,EAAK,MAAO,EAGbL,EAAE,EAAI,IAGXA,EAAIA,EAAE,MAAMyB,CAAC,EACbrB,GAAK,EAUP,IALAkD,EAAQ,KAAK,IAAIjE,GAAQ,EAAGe,CAAC,CAAC,EAAI,KAAK,KAAO,EAAI,EAAI,EACtDwC,GAAOU,EACPJ,EAAciF,EAAMC,EAAM,IAAI/H,EAAK,CAAC,EACpCA,EAAK,UAAYuC,IAER,CAKP,GAJAuF,EAAMlI,GAASkI,EAAI,MAAMnI,CAAC,EAAG4C,EAAK,CAAC,EACnCM,EAAcA,EAAY,MAAM,EAAE3C,CAAC,EACnCkB,EAAI2G,EAAI,KAAKvG,GAAOsG,EAAKjF,EAAaN,EAAK,CAAC,CAAC,EAEzChB,GAAeH,EAAE,CAAC,EAAE,MAAM,EAAGmB,CAAG,IAAMhB,GAAewG,EAAI,CAAC,EAAE,MAAM,EAAGxF,CAAG,EAAG,CAE7E,IADApC,EAAIJ,EACGI,KAAK4H,EAAMnI,GAASmI,EAAI,MAAMA,CAAG,EAAGxF,EAAK,CAAC,EAOjD,GAAIpB,GAAM,KAER,GAAIF,EAAM,GAAKmC,GAAoB2E,EAAI,EAAGxF,EAAMU,EAAOtC,EAAIM,CAAG,EAC5DjB,EAAK,UAAYuC,GAAO,GACxBM,EAAciF,EAAM1G,EAAI,IAAIpB,EAAK,CAAC,EAClCE,EAAI,EACJe,QAEA,QAAOrB,GAASmI,EAAK/H,EAAK,UAAYU,EAAIC,EAAIlC,GAAW,EAAI,MAG/D,QAAAuB,EAAK,UAAYU,EACVqH,CAEX,CAEAA,EAAM3G,CACR,CACF,CAkBA,SAAS8B,GAAiBjD,EAAGkB,EAAI,CAC/B,IAAI6G,EAAGC,EAAIpF,EAAaQ,EAAG6E,EAAWjH,EAAK8G,EAAK3G,EAAGmB,EAAK4F,EAAIzF,EAC1D3B,EAAI,EACJkC,EAAQ,GACRtD,EAAIM,EACJK,EAAKX,EAAE,EACPK,EAAOL,EAAE,YACTgB,EAAKX,EAAK,SACVU,EAAKV,EAAK,UAGZ,GAAIL,EAAE,EAAI,GAAK,CAACW,GAAM,CAACA,EAAG,CAAC,GAAK,CAACX,EAAE,GAAKW,EAAG,CAAC,GAAK,GAAKA,EAAG,QAAU,EACjE,OAAO,IAAIN,EAAKM,GAAM,CAACA,EAAG,CAAC,EAAI,KAASX,EAAE,GAAK,EAAI,IAAMW,EAAK,EAAIX,CAAC,EAcrE,GAXIwB,GAAM,MACR1C,GAAW,GACX8D,EAAM7B,GAEN6B,EAAMpB,EAGRnB,EAAK,UAAYuC,GAAOU,EACxB+E,EAAIzG,GAAejB,CAAE,EACrB2H,EAAKD,EAAE,OAAO,CAAC,EAEX,KAAK,IAAI3E,EAAI1D,EAAE,CAAC,EAAI,MAAQ,CAa9B,KAAOsI,EAAK,GAAKA,GAAM,GAAKA,GAAM,GAAKD,EAAE,OAAO,CAAC,EAAI,GACnDrI,EAAIA,EAAE,MAAMM,CAAC,EACb+H,EAAIzG,GAAe5B,EAAE,CAAC,EACtBsI,EAAKD,EAAE,OAAO,CAAC,EACfjH,IAGFsC,EAAI1D,EAAE,EAEFsI,EAAK,GACPtI,EAAI,IAAIK,EAAK,KAAOgI,CAAC,EACrB3E,KAEA1D,EAAI,IAAIK,EAAKiI,EAAK,IAAMD,EAAE,MAAM,CAAC,CAAC,CAEtC,KAKE,QAAA5G,EAAI+B,GAAQnD,EAAMuC,EAAM,EAAG7B,CAAE,EAAE,MAAM2C,EAAI,EAAE,EAC3C1D,EAAIuD,GAAiB,IAAIlD,EAAKiI,EAAK,IAAMD,EAAE,MAAM,CAAC,CAAC,EAAGzF,EAAMU,CAAK,EAAE,KAAK7B,CAAC,EACzEpB,EAAK,UAAYU,EAEVS,GAAM,KAAOvB,GAASD,EAAGe,EAAIC,EAAIlC,GAAW,EAAI,EAAIkB,EAa7D,IATAwI,EAAKxI,EAKLoI,EAAMG,EAAYvI,EAAI6B,GAAO7B,EAAE,MAAM,CAAC,EAAGA,EAAE,KAAK,CAAC,EAAG4C,EAAK,CAAC,EAC1DG,EAAK9C,GAASD,EAAE,MAAMA,CAAC,EAAG4C,EAAK,CAAC,EAChCM,EAAc,IAEL,CAIP,GAHAqF,EAAYtI,GAASsI,EAAU,MAAMxF,CAAE,EAAGH,EAAK,CAAC,EAChDnB,EAAI2G,EAAI,KAAKvG,GAAO0G,EAAW,IAAIlI,EAAK6C,CAAW,EAAGN,EAAK,CAAC,CAAC,EAEzDhB,GAAeH,EAAE,CAAC,EAAE,MAAM,EAAGmB,CAAG,IAAMhB,GAAewG,EAAI,CAAC,EAAE,MAAM,EAAGxF,CAAG,EAc1E,GAbAwF,EAAMA,EAAI,MAAM,CAAC,EAIb1E,IAAM,IAAG0E,EAAMA,EAAI,KAAK5E,GAAQnD,EAAMuC,EAAM,EAAG7B,CAAE,EAAE,MAAM2C,EAAI,EAAE,CAAC,GACpE0E,EAAMvG,GAAOuG,EAAK,IAAI/H,EAAKe,CAAC,EAAGwB,EAAK,CAAC,EAQjCpB,GAAM,KACR,GAAIiC,GAAoB2E,EAAI,EAAGxF,EAAMU,EAAOtC,EAAIM,CAAG,EACjDjB,EAAK,UAAYuC,GAAOU,EACxB7B,EAAI8G,EAAYvI,EAAI6B,GAAO2G,EAAG,MAAM,CAAC,EAAGA,EAAG,KAAK,CAAC,EAAG5F,EAAK,CAAC,EAC1DG,EAAK9C,GAASD,EAAE,MAAMA,CAAC,EAAG4C,EAAK,CAAC,EAChCM,EAAc5B,EAAM,MAEpB,QAAOrB,GAASmI,EAAK/H,EAAK,UAAYU,EAAIC,EAAIlC,GAAW,EAAI,MAG/D,QAAAuB,EAAK,UAAYU,EACVqH,EAIXA,EAAM3G,EACNyB,GAAe,CACjB,CACF,CAIA,SAAS0E,GAAkB5H,EAAG,CAE5B,OAAO,OAAOA,EAAE,EAAIA,EAAE,EAAI,CAAC,CAC7B,CAMA,SAASyI,GAAazI,EAAGwE,EAAK,CAC5B,IAAId,EAAGnD,EAAGyB,EAmBV,KAhBK0B,EAAIc,EAAI,QAAQ,GAAG,GAAK,KAAIA,EAAMA,EAAI,QAAQ,IAAK,EAAE,IAGrDjE,EAAIiE,EAAI,OAAO,IAAI,GAAK,GAGvBd,EAAI,IAAGA,EAAInD,GACfmD,GAAK,CAACc,EAAI,MAAMjE,EAAI,CAAC,EACrBiE,EAAMA,EAAI,UAAU,EAAGjE,CAAC,GACfmD,EAAI,IAGbA,EAAIc,EAAI,QAILjE,EAAI,EAAGiE,EAAI,WAAWjE,CAAC,IAAM,GAAIA,IAAI,CAG1C,IAAKyB,EAAMwC,EAAI,OAAQA,EAAI,WAAWxC,EAAM,CAAC,IAAM,GAAI,EAAEA,EAAI,CAG7D,GAFAwC,EAAMA,EAAI,MAAMjE,EAAGyB,CAAG,EAElBwC,EAAK,CAYP,GAXAxC,GAAOzB,EACPP,EAAE,EAAI0D,EAAIA,EAAInD,EAAI,EAClBP,EAAE,EAAI,CAAC,EAMPO,GAAKmD,EAAI,GAAK/D,GACV+D,EAAI,IAAGnD,GAAKZ,IAEZY,EAAIyB,EAAK,CAEX,IADIzB,GAAGP,EAAE,EAAE,KAAK,CAACwE,EAAI,MAAM,EAAGjE,CAAC,CAAC,EAC3ByB,GAAOrC,GAAUY,EAAIyB,GAAMhC,EAAE,EAAE,KAAK,CAACwE,EAAI,MAAMjE,EAAGA,GAAKZ,EAAQ,CAAC,EACrE6E,EAAMA,EAAI,MAAMjE,CAAC,EACjBA,EAAIZ,GAAW6E,EAAI,MACrB,MACEjE,GAAKyB,EAGP,KAAOzB,KAAMiE,GAAO,IACpBxE,EAAE,EAAE,KAAK,CAACwE,CAAG,EAET1F,KAGEkB,EAAE,EAAIA,EAAE,YAAY,MAGtBA,EAAE,EAAI,KACNA,EAAE,EAAI,KAGGA,EAAE,EAAIA,EAAE,YAAY,OAG7BA,EAAE,EAAI,EACNA,EAAE,EAAI,CAAC,CAAC,GAId,MAGEA,EAAE,EAAI,EACNA,EAAE,EAAI,CAAC,CAAC,EAGV,OAAOA,CACT,CAMA,SAAS0I,IAAW1I,EAAGwE,EAAK,CAC1B,IAAIxB,EAAM3C,EAAMsI,EAASpI,EAAGqI,EAAS5G,EAAK6G,EAAGlI,EAAIgD,EAEjD,GAAIa,EAAI,QAAQ,GAAG,EAAI,IAErB,GADAA,EAAMA,EAAI,QAAQ,eAAgB,IAAI,EAClC/E,GAAU,KAAK+E,CAAG,EAAG,OAAOiE,GAAazI,EAAGwE,CAAG,UAC1CA,IAAQ,YAAcA,IAAQ,MACvC,MAAK,CAACA,IAAKxE,EAAE,EAAI,KACjBA,EAAE,EAAI,IACNA,EAAE,EAAI,KACCA,EAGT,GAAIT,IAAM,KAAKiF,CAAG,EAChBxB,EAAO,GACPwB,EAAMA,EAAI,YAAY,UACblF,IAAS,KAAKkF,CAAG,EAC1BxB,EAAO,UACExD,IAAQ,KAAKgF,CAAG,EACzBxB,EAAO,MAEP,OAAM,MAAMhE,GAAkBwF,CAAG,EAgCnC,IA5BAjE,EAAIiE,EAAI,OAAO,IAAI,EAEfjE,EAAI,GACNsI,EAAI,CAACrE,EAAI,MAAMjE,EAAI,CAAC,EACpBiE,EAAMA,EAAI,UAAU,EAAGjE,CAAC,GAExBiE,EAAMA,EAAI,MAAM,CAAC,EAKnBjE,EAAIiE,EAAI,QAAQ,GAAG,EACnBoE,EAAUrI,GAAK,EACfF,EAAOL,EAAE,YAEL4I,IACFpE,EAAMA,EAAI,QAAQ,IAAK,EAAE,EACzBxC,EAAMwC,EAAI,OACVjE,EAAIyB,EAAMzB,EAGVoI,EAAU1D,GAAO5E,EAAM,IAAIA,EAAK2C,CAAI,EAAGzC,EAAGA,EAAI,CAAC,GAGjDI,EAAK6E,GAAYhB,EAAKxB,EAAMtD,EAAI,EAChCiE,EAAKhD,EAAG,OAAS,EAGZJ,EAAIoD,EAAIhD,EAAGJ,CAAC,IAAM,EAAG,EAAEA,EAAGI,EAAG,IAAI,EACtC,OAAIJ,EAAI,EAAU,IAAIF,EAAKL,EAAE,EAAI,CAAC,GAClCA,EAAE,EAAI6D,GAAkBlD,EAAIgD,CAAE,EAC9B3D,EAAE,EAAIW,EACN7B,GAAW,GAQP8J,IAAS5I,EAAI6B,GAAO7B,EAAG2I,EAAS3G,EAAM,CAAC,GAGvC6G,IAAG7I,EAAIA,EAAE,MAAM,KAAK,IAAI6I,CAAC,EAAI,GAAKxJ,GAAQ,EAAGwJ,CAAC,EAAIC,GAAQ,IAAI,EAAGD,CAAC,CAAC,GACvE/J,GAAW,GAEJkB,EACT,CAQA,SAASmE,IAAK9D,EAAML,EAAG,CACrB,IAAII,EACF4B,EAAMhC,EAAE,EAAE,OAEZ,GAAIgC,EAAM,EACR,OAAOhC,EAAE,OAAO,EAAIA,EAAImC,GAAa9B,EAAM,EAAGL,EAAGA,CAAC,EAQpDI,EAAI,IAAM,KAAK,KAAK4B,CAAG,EACvB5B,EAAIA,EAAI,GAAK,GAAKA,EAAI,EAEtBJ,EAAIA,EAAE,MAAM,EAAIkC,GAAQ,EAAG9B,CAAC,CAAC,EAC7BJ,EAAImC,GAAa9B,EAAM,EAAGL,EAAGA,CAAC,EAO9B,QAJI+I,EACFxG,EAAK,IAAIlC,EAAK,CAAC,EACfmC,EAAM,IAAInC,EAAK,EAAE,EACjBoC,EAAM,IAAIpC,EAAK,EAAE,EACZD,KACL2I,EAAS/I,EAAE,MAAMA,CAAC,EAClBA,EAAIA,EAAE,MAAMuC,EAAG,KAAKwG,EAAO,MAAMvG,EAAI,MAAMuG,CAAM,EAAE,MAAMtG,CAAG,CAAC,CAAC,CAAC,EAGjE,OAAOzC,CACT,CAIA,SAASmC,GAAa9B,EAAMe,EAAGpB,EAAGM,EAAG0I,EAAc,CACjD,IAAIxI,EAAGiB,EAAGwH,EAAGlG,EACXxC,EAAI,EACJQ,EAAKV,EAAK,UACVD,EAAI,KAAK,KAAKW,EAAKpB,EAAQ,EAM7B,IAJAb,GAAW,GACXiE,EAAK/C,EAAE,MAAMA,CAAC,EACdiJ,EAAI,IAAI5I,EAAKC,CAAC,IAEL,CAMP,GALAmB,EAAII,GAAOoH,EAAE,MAAMlG,CAAE,EAAG,IAAI1C,EAAKe,IAAMA,GAAG,EAAGL,EAAI,CAAC,EAClDkI,EAAID,EAAe1I,EAAE,KAAKmB,CAAC,EAAInB,EAAE,MAAMmB,CAAC,EACxCnB,EAAIuB,GAAOJ,EAAE,MAAMsB,CAAE,EAAG,IAAI1C,EAAKe,IAAMA,GAAG,EAAGL,EAAI,CAAC,EAClDU,EAAIwH,EAAE,KAAK3I,CAAC,EAERmB,EAAE,EAAErB,CAAC,IAAM,OAAQ,CACrB,IAAKI,EAAIJ,EAAGqB,EAAE,EAAEjB,CAAC,IAAMyI,EAAE,EAAEzI,CAAC,GAAKA,KAAK,CACtC,GAAIA,GAAK,GAAI,KACf,CAEAA,EAAIyI,EACJA,EAAI3I,EACJA,EAAImB,EACJA,EAAIjB,EACJD,GACF,CAEA,OAAAzB,GAAW,GACX2C,EAAE,EAAE,OAASrB,EAAI,EAEVqB,CACT,CAIA,SAASS,GAAQiE,EAAGzC,EAAG,CAErB,QADItC,EAAI+E,EACD,EAAEzC,GAAGtC,GAAK+E,EACjB,OAAO/E,CACT,CAIA,SAASF,GAAiBb,EAAML,EAAG,CACjC,IAAIyB,EACFyH,EAAQlJ,EAAE,EAAI,EACdmJ,EAAKxG,GAAMtC,EAAMA,EAAK,UAAW,CAAC,EAClCqC,EAASyG,EAAG,MAAM,EAAG,EAIvB,GAFAnJ,EAAIA,EAAE,IAAI,EAENA,EAAE,IAAI0C,CAAM,EACd,OAAA7D,GAAWqK,EAAQ,EAAI,EAChBlJ,EAKT,GAFAyB,EAAIzB,EAAE,SAASmJ,CAAE,EAEb1H,EAAE,OAAO,EACX5C,GAAWqK,EAAQ,EAAI,MAClB,CAIL,GAHAlJ,EAAIA,EAAE,MAAMyB,EAAE,MAAM0H,CAAE,CAAC,EAGnBnJ,EAAE,IAAI0C,CAAM,EACd,OAAA7D,GAAWkJ,GAAMtG,CAAC,EAAKyH,EAAQ,EAAI,EAAMA,EAAQ,EAAI,EAC9ClJ,EAGTnB,GAAWkJ,GAAMtG,CAAC,EAAKyH,EAAQ,EAAI,EAAMA,EAAQ,EAAI,CACvD,CAEA,OAAOlJ,EAAE,MAAMmJ,CAAE,EAAE,IAAI,CACzB,CAQA,SAAS9E,GAAerE,EAAG0F,EAASlE,EAAIR,EAAI,CAC1C,IAAIgC,EAAMU,EAAGnD,EAAGH,EAAG4B,EAAKwF,EAAShD,EAAK7D,EAAIL,EACxCD,EAAOL,EAAE,YACT2H,EAAQnG,IAAO,OAWjB,GATImG,GACFpD,GAAW/C,EAAI,EAAGjD,EAAU,EACxByC,IAAO,OAAQA,EAAKX,EAAK,SACxBkE,GAAWvD,EAAI,EAAG,CAAC,IAExBQ,EAAKnB,EAAK,UACVW,EAAKX,EAAK,UAGR,CAACL,EAAE,SAAS,EACdwE,EAAMoD,GAAkB5H,CAAC,MACpB,CAoCL,IAnCAwE,EAAMC,GAAezE,CAAC,EACtBO,EAAIiE,EAAI,QAAQ,GAAG,EAOfmD,GACF3E,EAAO,EACH0C,GAAW,GACblE,EAAKA,EAAK,EAAI,EACLkE,GAAW,IACpBlE,EAAKA,EAAK,EAAI,IAGhBwB,EAAO0C,EAOLnF,GAAK,IACPiE,EAAMA,EAAI,QAAQ,IAAK,EAAE,EACzBlE,EAAI,IAAID,EAAK,CAAC,EACdC,EAAE,EAAIkE,EAAI,OAASjE,EACnBD,EAAE,EAAIkF,GAAYf,GAAenE,CAAC,EAAG,GAAI0C,CAAI,EAC7C1C,EAAE,EAAIA,EAAE,EAAE,QAGZK,EAAK6E,GAAYhB,EAAK,GAAIxB,CAAI,EAC9BU,EAAI1B,EAAMrB,EAAG,OAGNA,EAAG,EAAEqB,CAAG,GAAK,GAAIrB,EAAG,IAAI,EAE/B,GAAI,CAACA,EAAG,CAAC,EACP6D,EAAMmD,EAAQ,OAAS,QAClB,CAyBL,GAxBIpH,EAAI,EACNmD,KAEA1D,EAAI,IAAIK,EAAKL,CAAC,EACdA,EAAE,EAAIW,EACNX,EAAE,EAAI0D,EACN1D,EAAI6B,GAAO7B,EAAGM,EAAGkB,EAAIR,EAAI,EAAGgC,CAAI,EAChCrC,EAAKX,EAAE,EACP0D,EAAI1D,EAAE,EACNwH,EAAU5I,IAIZ2B,EAAII,EAAGa,CAAE,EACTpB,EAAI4C,EAAO,EACXwE,EAAUA,GAAW7G,EAAGa,EAAK,CAAC,IAAM,OAEpCgG,EAAUxG,EAAK,GACVT,IAAM,QAAUiH,KAAaxG,IAAO,GAAKA,KAAQhB,EAAE,EAAI,EAAI,EAAI,IAChEO,EAAIH,GAAKG,IAAMH,IAAMY,IAAO,GAAKwG,GAAWxG,IAAO,GAAKL,EAAGa,EAAK,CAAC,EAAI,GACrER,KAAQhB,EAAE,EAAI,EAAI,EAAI,IAE1BW,EAAG,OAASa,EAERgG,EAGF,KAAO,EAAE7G,EAAG,EAAEa,CAAE,EAAIwB,EAAO,GACzBrC,EAAGa,CAAE,EAAI,EACJA,IACH,EAAEkC,EACF/C,EAAG,QAAQ,CAAC,GAMlB,IAAKqB,EAAMrB,EAAG,OAAQ,CAACA,EAAGqB,EAAM,CAAC,EAAG,EAAEA,EAAI,CAG1C,IAAKzB,EAAI,EAAGiE,EAAM,GAAIjE,EAAIyB,EAAKzB,IAAKiE,GAAOhG,GAAS,OAAOmC,EAAGJ,CAAC,CAAC,EAGhE,GAAIoH,EAAO,CACT,GAAI3F,EAAM,EACR,GAAI0D,GAAW,IAAMA,GAAW,EAAG,CAEjC,IADAnF,EAAImF,GAAW,GAAK,EAAI,EACnB,EAAE1D,EAAKA,EAAMzB,EAAGyB,IAAOwC,GAAO,IAEnC,IADA7D,EAAK6E,GAAYhB,EAAKxB,EAAM0C,CAAO,EAC9B1D,EAAMrB,EAAG,OAAQ,CAACA,EAAGqB,EAAM,CAAC,EAAG,EAAEA,EAAI,CAG1C,IAAKzB,EAAI,EAAGiE,EAAM,KAAMjE,EAAIyB,EAAKzB,IAAKiE,GAAOhG,GAAS,OAAOmC,EAAGJ,CAAC,CAAC,CACpE,MACEiE,EAAMA,EAAI,OAAO,CAAC,EAAI,IAAMA,EAAI,MAAM,CAAC,EAI3CA,EAAOA,GAAOd,EAAI,EAAI,IAAM,MAAQA,CACtC,SAAWA,EAAI,EAAG,CAChB,KAAO,EAAEA,GAAIc,EAAM,IAAMA,EACzBA,EAAM,KAAOA,CACf,SACM,EAAEd,EAAI1B,EAAK,IAAK0B,GAAK1B,EAAK0B,KAAOc,GAAO,SACnCd,EAAI1B,IAAKwC,EAAMA,EAAI,MAAM,EAAGd,CAAC,EAAI,IAAMc,EAAI,MAAMd,CAAC,EAE/D,CAEAc,GAAOkB,GAAW,GAAK,KAAOA,GAAW,EAAI,KAAOA,GAAW,EAAI,KAAO,IAAMlB,CAClF,CAEA,OAAOxE,EAAE,EAAI,EAAI,IAAMwE,EAAMA,CAC/B,CAIA,SAASsD,GAASnC,EAAK3D,EAAK,CAC1B,GAAI2D,EAAI,OAAS3D,EACf,OAAA2D,EAAI,OAAS3D,EACN,EAEX,CAyDA,SAASoH,IAAIpJ,EAAG,CACd,OAAO,IAAI,KAAKA,CAAC,EAAE,IAAI,CACzB,CASA,SAASqJ,IAAKrJ,EAAG,CACf,OAAO,IAAI,KAAKA,CAAC,EAAE,KAAK,CAC1B,CAUA,SAASsJ,IAAMtJ,EAAG,CAChB,OAAO,IAAI,KAAKA,CAAC,EAAE,MAAM,CAC3B,CAWA,SAASuJ,IAAIvJ,EAAGM,EAAG,CACjB,OAAO,IAAI,KAAKN,CAAC,EAAE,KAAKM,CAAC,CAC3B,CAUA,SAASkJ,IAAKxJ,EAAG,CACf,OAAO,IAAI,KAAKA,CAAC,EAAE,KAAK,CAC1B,CAUA,SAASyJ,IAAMzJ,EAAG,CAChB,OAAO,IAAI,KAAKA,CAAC,EAAE,MAAM,CAC3B,CAUA,SAAS0J,IAAK1J,EAAG,CACf,OAAO,IAAI,KAAKA,CAAC,EAAE,KAAK,CAC1B,CAUA,SAAS2J,IAAM3J,EAAG,CAChB,OAAO,IAAI,KAAKA,CAAC,EAAE,MAAM,CAC3B,CA4BA,SAAS4J,IAAMtJ,EAAGN,EAAG,CACnBM,EAAI,IAAI,KAAKA,CAAC,EACdN,EAAI,IAAI,KAAKA,CAAC,EACd,IAAI,EACFe,EAAK,KAAK,UACVC,EAAK,KAAK,SACV4B,EAAM7B,EAAK,EAGb,MAAI,CAACT,EAAE,GAAK,CAACN,EAAE,EACb,EAAI,IAAI,KAAK,GAAG,EAGP,CAACM,EAAE,GAAK,CAACN,EAAE,GACpB,EAAI2C,GAAM,KAAMC,EAAK,CAAC,EAAE,MAAM5C,EAAE,EAAI,EAAI,IAAO,GAAI,EACnD,EAAE,EAAIM,EAAE,GAGC,CAACN,EAAE,GAAKM,EAAE,OAAO,GAC1B,EAAIN,EAAE,EAAI,EAAI2C,GAAM,KAAM5B,EAAIC,CAAE,EAAI,IAAI,KAAK,CAAC,EAC9C,EAAE,EAAIV,EAAE,GAGC,CAACA,EAAE,GAAKN,EAAE,OAAO,GAC1B,EAAI2C,GAAM,KAAMC,EAAK,CAAC,EAAE,MAAM,EAAG,EACjC,EAAE,EAAItC,EAAE,GAGCN,EAAE,EAAI,GACf,KAAK,UAAY4C,EACjB,KAAK,SAAW,EAChB,EAAI,KAAK,KAAKf,GAAOvB,EAAGN,EAAG4C,EAAK,CAAC,CAAC,EAClC5C,EAAI2C,GAAM,KAAMC,EAAK,CAAC,EACtB,KAAK,UAAY7B,EACjB,KAAK,SAAWC,EAChB,EAAIV,EAAE,EAAI,EAAI,EAAE,MAAMN,CAAC,EAAI,EAAE,KAAKA,CAAC,GAEnC,EAAI,KAAK,KAAK6B,GAAOvB,EAAGN,EAAG4C,EAAK,CAAC,CAAC,EAG7B,CACT,CAUA,SAASiH,IAAK7J,EAAG,CACf,OAAO,IAAI,KAAKA,CAAC,EAAE,KAAK,CAC1B,CASA,SAAS8J,IAAK9J,EAAG,CACf,OAAOC,GAASD,EAAI,IAAI,KAAKA,CAAC,EAAGA,EAAE,EAAI,EAAG,CAAC,CAC7C,CAWA,SAAS+J,IAAM/J,EAAGE,EAAKC,EAAK,CAC1B,OAAO,IAAI,KAAKH,CAAC,EAAE,MAAME,EAAKC,CAAG,CACnC,CAqBA,SAAS6J,IAAOC,EAAK,CACnB,GAAI,CAACA,GAAO,OAAOA,GAAQ,SAAU,MAAM,MAAMlL,GAAe,iBAAiB,EACjF,IAAIwB,EAAGsI,EAAGqB,EACRC,EAAcF,EAAI,WAAa,GAC/BG,EAAK,CACH,YAAa,EAAG7L,GAChB,WAAY,EAAG,EACf,WAAY,CAACD,GAAW,EACxB,WAAY,EAAGA,GACf,OAAQ,EAAGA,GACX,OAAQ,CAACA,GAAW,EACpB,SAAU,EAAG,CACf,EAEF,IAAKiC,EAAI,EAAGA,EAAI6J,EAAG,OAAQ7J,GAAK,EAE9B,GADIsI,EAAIuB,EAAG7J,CAAC,EAAG4J,IAAa,KAAKtB,CAAC,EAAIlK,GAASkK,CAAC,IAC3CqB,EAAID,EAAIpB,CAAC,KAAO,OACnB,GAAIzJ,GAAU8K,CAAC,IAAMA,GAAKA,GAAKE,EAAG7J,EAAI,CAAC,GAAK2J,GAAKE,EAAG7J,EAAI,CAAC,EAAG,KAAKsI,CAAC,EAAIqB,MACjE,OAAM,MAAMlL,GAAkB6J,EAAI,KAAOqB,CAAC,EAKnD,GADIrB,EAAI,SAAUsB,IAAa,KAAKtB,CAAC,EAAIlK,GAASkK,CAAC,IAC9CqB,EAAID,EAAIpB,CAAC,KAAO,OACnB,GAAIqB,IAAM,IAAQA,IAAM,IAASA,IAAM,GAAKA,IAAM,EAChD,GAAIA,EACF,GAAI,OAAO,OAAU,KAAe,SACjC,OAAO,iBAAmB,OAAO,aAClC,KAAKrB,CAAC,EAAI,OAEV,OAAM,MAAM3J,EAAiB,OAG/B,KAAK2J,CAAC,EAAI,OAGZ,OAAM,MAAM7J,GAAkB6J,EAAI,KAAOqB,CAAC,EAI9C,OAAO,IACT,CAUA,SAASG,IAAIrK,EAAG,CACd,OAAO,IAAI,KAAKA,CAAC,EAAE,IAAI,CACzB,CAUA,SAASsK,IAAKtK,EAAG,CACf,OAAO,IAAI,KAAKA,CAAC,EAAE,KAAK,CAC1B,CAQA,SAASuK,GAAMN,EAAK,CAClB,IAAI1J,EAAGsI,EAAGuB,EASV,SAAStB,EAAQoB,EAAG,CAClB,IAAIxG,EAAGnD,EAAGkB,EACRzB,EAAI,KAGN,GAAI,EAAEA,aAAa8I,GAAU,OAAO,IAAIA,EAAQoB,CAAC,EAOjD,GAHAlK,EAAE,YAAc8I,EAGZ0B,GAAkBN,CAAC,EAAG,CACxBlK,EAAE,EAAIkK,EAAE,EAEJpL,GACE,CAACoL,EAAE,GAAKA,EAAE,EAAIpB,EAAQ,MAGxB9I,EAAE,EAAI,IACNA,EAAE,EAAI,MACGkK,EAAE,EAAIpB,EAAQ,MAGvB9I,EAAE,EAAI,EACNA,EAAE,EAAI,CAAC,CAAC,IAERA,EAAE,EAAIkK,EAAE,EACRlK,EAAE,EAAIkK,EAAE,EAAE,MAAM,IAGlBlK,EAAE,EAAIkK,EAAE,EACRlK,EAAE,EAAIkK,EAAE,EAAIA,EAAE,EAAE,MAAM,EAAIA,EAAE,GAG9B,MACF,CAIA,GAFAzI,EAAI,OAAOyI,EAEPzI,IAAM,SAAU,CAClB,GAAIyI,IAAM,EAAG,CACXlK,EAAE,EAAI,EAAIkK,EAAI,EAAI,GAAK,EACvBlK,EAAE,EAAI,EACNA,EAAE,EAAI,CAAC,CAAC,EACR,MACF,CAUA,GARIkK,EAAI,GACNA,EAAI,CAACA,EACLlK,EAAE,EAAI,IAENA,EAAE,EAAI,EAIJkK,IAAM,CAAC,CAACA,GAAKA,EAAI,IAAK,CACxB,IAAKxG,EAAI,EAAGnD,EAAI2J,EAAG3J,GAAK,GAAIA,GAAK,GAAImD,IAEjC5E,GACE4E,EAAIoF,EAAQ,MACd9I,EAAE,EAAI,IACNA,EAAE,EAAI,MACG0D,EAAIoF,EAAQ,MACrB9I,EAAE,EAAI,EACNA,EAAE,EAAI,CAAC,CAAC,IAERA,EAAE,EAAI0D,EACN1D,EAAE,EAAI,CAACkK,CAAC,IAGVlK,EAAE,EAAI0D,EACN1D,EAAE,EAAI,CAACkK,CAAC,GAGV,MAGF,SAAWA,EAAI,IAAM,EAAG,CACjBA,IAAGlK,EAAE,EAAI,KACdA,EAAE,EAAI,IACNA,EAAE,EAAI,KACN,MACF,CAEA,OAAOyI,GAAazI,EAAGkK,EAAE,SAAS,CAAC,CAErC,SAAWzI,IAAM,SACf,MAAM,MAAMzC,GAAkBkL,CAAC,EAIjC,OAAK3J,EAAI2J,EAAE,WAAW,CAAC,KAAO,IAC5BA,EAAIA,EAAE,MAAM,CAAC,EACblK,EAAE,EAAI,KAGFO,IAAM,KAAI2J,EAAIA,EAAE,MAAM,CAAC,GAC3BlK,EAAE,EAAI,GAGDP,GAAU,KAAKyK,CAAC,EAAIzB,GAAazI,EAAGkK,CAAC,EAAIxB,IAAW1I,EAAGkK,CAAC,CACjE,CA2DA,GAzDApB,EAAQ,UAAY/I,GAEpB+I,EAAQ,SAAW,EACnBA,EAAQ,WAAa,EACrBA,EAAQ,WAAa,EACrBA,EAAQ,YAAc,EACtBA,EAAQ,cAAgB,EACxBA,EAAQ,gBAAkB,EAC1BA,EAAQ,gBAAkB,EAC1BA,EAAQ,gBAAkB,EAC1BA,EAAQ,iBAAmB,EAC3BA,EAAQ,OAAS,EAEjBA,EAAQ,OAASA,EAAQ,IAAMkB,IAC/BlB,EAAQ,MAAQyB,GAChBzB,EAAQ,UAAY0B,GAEpB1B,EAAQ,IAAMM,IACdN,EAAQ,KAAOO,IACfP,EAAQ,MAAQQ,IAChBR,EAAQ,IAAMS,IACdT,EAAQ,KAAOU,IACfV,EAAQ,MAAQW,IAChBX,EAAQ,KAAOY,IACfZ,EAAQ,MAAQa,IAChBb,EAAQ,MAAQc,IAChBd,EAAQ,KAAOe,IACff,EAAQ,KAAOgB,IACfhB,EAAQ,MAAQiB,IAChBjB,EAAQ,IAAMuB,IACdvB,EAAQ,KAAOwB,IACfxB,EAAQ,IAAM2B,IACd3B,EAAQ,IAAM4B,IACd5B,EAAQ,MAAQ6B,IAChB7B,EAAQ,MAAQ8B,IAChB9B,EAAQ,GAAK+B,IACb/B,EAAQ,IAAMgC,IACdhC,EAAQ,MAAQiC,IAChBjC,EAAQ,KAAOkC,IACflC,EAAQ,IAAM3I,IACd2I,EAAQ,IAAM5I,IACd4I,EAAQ,IAAMmC,IACdnC,EAAQ,IAAMoC,IACdpC,EAAQ,IAAMX,IACdW,EAAQ,OAASqC,IACjBrC,EAAQ,MAAQsC,IAChBtC,EAAQ,KAAOzB,IACfyB,EAAQ,IAAMuC,IACdvC,EAAQ,KAAOwC,IACfxC,EAAQ,KAAOyC,IACfzC,EAAQ,IAAM0C,IACd1C,EAAQ,IAAMV,IACdU,EAAQ,IAAM2C,IACd3C,EAAQ,KAAO4C,IACf5C,EAAQ,MAAQ6C,IAEZ1B,IAAQ,SAAQA,EAAM,CAAC,GACvBA,GACEA,EAAI,WAAa,GAEnB,IADAG,EAAK,CAAC,YAAa,WAAY,WAAY,WAAY,OAAQ,OAAQ,SAAU,QAAQ,EACpF7J,EAAI,EAAGA,EAAI6J,EAAG,QAAcH,EAAI,eAAepB,EAAIuB,EAAG7J,GAAG,CAAC,IAAG0J,EAAIpB,CAAC,EAAI,KAAKA,CAAC,GAIrF,OAAAC,EAAQ,OAAOmB,CAAG,EAEXnB,CACT,CAWA,SAAS2B,IAAIzK,EAAGM,EAAG,CACjB,OAAO,IAAI,KAAKN,CAAC,EAAE,IAAIM,CAAC,CAC1B,CAUA,SAASoK,IAAI1K,EAAG,CACd,OAAO,IAAI,KAAKA,CAAC,EAAE,IAAI,CACzB,CASA,SAAS2K,IAAM3K,EAAG,CAChB,OAAOC,GAASD,EAAI,IAAI,KAAKA,CAAC,EAAGA,EAAE,EAAI,EAAG,CAAC,CAC7C,CAYA,SAAS4K,KAAQ,CACf,IAAIrK,EAAGa,EACLK,EAAI,IAAI,KAAK,CAAC,EAIhB,IAFA3C,GAAW,GAENyB,EAAI,EAAGA,EAAI,UAAU,QAExB,GADAa,EAAI,IAAI,KAAK,UAAUb,GAAG,CAAC,EACtBa,EAAE,EAMIK,EAAE,IACXA,EAAIA,EAAE,KAAKL,EAAE,MAAMA,CAAC,CAAC,OAPb,CACR,GAAIA,EAAE,EACJ,OAAAtC,GAAW,GACJ,IAAI,KAAK,GAAK,EAEvB2C,EAAIL,CACN,CAKF,OAAAtC,GAAW,GAEJ2C,EAAE,KAAK,CAChB,CAQA,SAAS+I,GAAkBP,EAAK,CAC9B,OAAOA,aAAenB,IAAWmB,GAAOA,EAAI,cAAgB9K,IAAO,EACrE,CAUA,SAAS0L,IAAG7K,EAAG,CACb,OAAO,IAAI,KAAKA,CAAC,EAAE,GAAG,CACxB,CAaA,SAAS8K,IAAI9K,EAAGM,EAAG,CACjB,OAAO,IAAI,KAAKN,CAAC,EAAE,IAAIM,CAAC,CAC1B,CAUA,SAAS0K,IAAKhL,EAAG,CACf,OAAO,IAAI,KAAKA,CAAC,EAAE,IAAI,CAAC,CAC1B,CAUA,SAAS+K,IAAM/K,EAAG,CAChB,OAAO,IAAI,KAAKA,CAAC,EAAE,IAAI,EAAE,CAC3B,CASA,SAASG,KAAM,CACb,OAAO6H,GAAS,KAAM,UAAW,IAAI,CACvC,CASA,SAAS9H,KAAM,CACb,OAAO8H,GAAS,KAAM,UAAW,IAAI,CACvC,CAWA,SAASiD,IAAIjL,EAAGM,EAAG,CACjB,OAAO,IAAI,KAAKN,CAAC,EAAE,IAAIM,CAAC,CAC1B,CAWA,SAAS4K,IAAIlL,EAAGM,EAAG,CACjB,OAAO,IAAI,KAAKN,CAAC,EAAE,IAAIM,CAAC,CAC1B,CAWA,SAAS6H,IAAInI,EAAGM,EAAG,CACjB,OAAO,IAAI,KAAKN,CAAC,EAAE,IAAIM,CAAC,CAC1B,CAWA,SAAS6K,IAAO3J,EAAI,CAClB,IAAIO,EAAG2B,EAAGtD,EAAGgB,EACXb,EAAI,EACJc,EAAI,IAAI,KAAK,CAAC,EACdkE,EAAK,CAAC,EAOR,GALI/D,IAAO,OAAQA,EAAK,KAAK,UACxB+C,GAAW/C,EAAI,EAAGjD,EAAU,EAEjC6B,EAAI,KAAK,KAAKoB,EAAK7B,EAAQ,EAEtB,KAAK,OAIH,GAAI,OAAO,gBAGhB,IAFAoC,EAAI,OAAO,gBAAgB,IAAI,YAAY3B,CAAC,CAAC,EAEtCG,EAAIH,GACTgB,EAAIW,EAAExB,CAAC,EAIHa,GAAK,MACPW,EAAExB,CAAC,EAAI,OAAO,gBAAgB,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,EAKnDgF,EAAGhF,GAAG,EAAIa,EAAI,YAKT,OAAO,YAAa,CAK7B,IAFAW,EAAI,OAAO,YAAY3B,GAAK,CAAC,EAEtBG,EAAIH,GAGTgB,EAAIW,EAAExB,CAAC,GAAKwB,EAAExB,EAAI,CAAC,GAAK,IAAMwB,EAAExB,EAAI,CAAC,GAAK,MAAQwB,EAAExB,EAAI,CAAC,EAAI,MAAS,IAGlEa,GAAK,MACP,OAAO,YAAY,CAAC,EAAE,KAAKW,EAAGxB,CAAC,GAK/BgF,EAAG,KAAKnE,EAAI,GAAG,EACfb,GAAK,GAITA,EAAIH,EAAI,CACV,KACE,OAAM,MAAMlB,EAAiB,MA9C7B,MAAOqB,EAAIH,GAAImF,EAAGhF,GAAG,EAAI,KAAK,OAAO,EAAI,IAAM,EA2DjD,IAVAH,EAAImF,EAAG,EAAEhF,CAAC,EACViB,GAAM7B,GAGFS,GAAKoB,IACPJ,EAAI/B,GAAQ,GAAIM,GAAW6B,CAAE,EAC7B+D,EAAGhF,CAAC,GAAKH,EAAIgB,EAAI,GAAKA,GAIjBmE,EAAGhF,CAAC,IAAM,EAAGA,IAAKgF,EAAG,IAAI,EAGhC,GAAIhF,EAAI,EACNmD,EAAI,EACJ6B,EAAK,CAAC,CAAC,MACF,CAIL,IAHA7B,EAAI,GAGG6B,EAAG,CAAC,IAAM,EAAG7B,GAAK/D,GAAU4F,EAAG,MAAM,EAG5C,IAAKnF,EAAI,EAAGgB,EAAImE,EAAG,CAAC,EAAGnE,GAAK,GAAIA,GAAK,GAAIhB,IAGrCA,EAAIT,KAAU+D,GAAK/D,GAAWS,EACpC,CAEA,OAAAiB,EAAE,EAAIqC,EACNrC,EAAE,EAAIkE,EAEClE,CACT,CAWA,SAAS+J,IAAMpL,EAAG,CAChB,OAAOC,GAASD,EAAI,IAAI,KAAKA,CAAC,EAAGA,EAAE,EAAI,EAAG,KAAK,QAAQ,CACzD,CAcA,SAASqH,IAAKrH,EAAG,CACf,OAAAA,EAAI,IAAI,KAAKA,CAAC,EACPA,EAAE,EAAKA,EAAE,EAAE,CAAC,EAAIA,EAAE,EAAI,EAAIA,EAAE,EAAKA,EAAE,GAAK,GACjD,CAUA,SAASqL,IAAIrL,EAAG,CACd,OAAO,IAAI,KAAKA,CAAC,EAAE,IAAI,CACzB,CAUA,SAASsL,IAAKtL,EAAG,CACf,OAAO,IAAI,KAAKA,CAAC,EAAE,KAAK,CAC1B,CAUA,SAASuL,IAAKvL,EAAG,CACf,OAAO,IAAI,KAAKA,CAAC,EAAE,KAAK,CAC1B,CAWA,SAASwL,IAAIxL,EAAGM,EAAG,CACjB,OAAO,IAAI,KAAKN,CAAC,EAAE,IAAIM,CAAC,CAC1B,CAYA,SAAS8H,KAAM,CACb,IAAI7H,EAAI,EACN0H,EAAO,UACPjI,EAAI,IAAI,KAAKiI,EAAK1H,CAAC,CAAC,EAGtB,IADAzB,GAAW,GACJkB,EAAE,GAAK,EAAEO,EAAI0H,EAAK,QAASjI,EAAIA,EAAE,KAAKiI,EAAK1H,CAAC,CAAC,EACpD,OAAAzB,GAAW,GAEJmB,GAASD,EAAG,KAAK,UAAW,KAAK,QAAQ,CAClD,CAUA,SAASyL,IAAIzL,EAAG,CACd,OAAO,IAAI,KAAKA,CAAC,EAAE,IAAI,CACzB,CAUA,SAAS0L,IAAK1L,EAAG,CACf,OAAO,IAAI,KAAKA,CAAC,EAAE,KAAK,CAC1B,CASA,SAAS2L,IAAM3L,EAAG,CAChB,OAAOC,GAASD,EAAI,IAAI,KAAKA,CAAC,EAAGA,EAAE,EAAI,EAAG,CAAC,CAC7C,CAGAD,GAAE,OAAO,IAAI,4BAA4B,CAAC,EAAIA,GAAE,SAChDA,GAAE,OAAO,WAAW,EAAI,UAGjB,IAAI+I,GAAU/I,GAAE,YAAcwK,GAAM5L,EAAQ,EAGnDF,GAAO,IAAIqK,GAAQrK,EAAI,EACvBC,GAAK,IAAIoK,GAAQpK,EAAE,EAEnB,IAAOkN,GAAQ9C,GC/xJf,IAAI+C,IAAO,YACPC,IAAe,CAAC,MAAO,QAAQ,EACxBC,GAAsCC,EAAQH,IAAMC,IAAcG,GAAQ,CACnF,GAAI,CACF,GAAAC,EACA,OAAAC,CACF,EAAIF,EACAG,EAAYC,GAAQ,MAAM,CAC5B,UAAWF,EAAO,UAClB,OAAQE,GAAQ,MAClB,CAAC,EACD,OAAAD,EAAU,UAAY,OAAO,OAAOA,EAAU,SAAS,EAKvDA,EAAU,UAAU,KAAO,YAC3BA,EAAU,UAAU,YAAc,GAQlCA,EAAU,UAAU,OAAS,UAAY,CACvC,MAAO,CACL,OAAQ,YACR,MAAO,KAAK,SAAS,CACvB,CACF,EAQAA,EAAU,SAAW,SAAUE,EAAM,CACnC,OAAO,IAAIF,EAAUE,EAAK,KAAK,CACjC,EACIJ,GAEFA,EAAG,SAAU,SAAUK,EAAMC,EAAM,CAC7BD,EAAK,YAAcC,EAAK,WAC1BJ,EAAU,OAAO,CACf,UAAWG,EAAK,SAClB,CAAC,CAEL,CAAC,EAEIH,CACT,EAAG,CACD,QAAS,EACX,CAAC,ECzBD,IAAMK,GAAO,KAAK,MAAQ,SAAUC,EAAG,CACrC,OAAO,KAAK,IAAIA,CAAC,EAAI,KAAO,EAAIA,GAAK,KAAK,IAAIA,CAAC,EAAI,KAAK,IAAI,CAACA,CAAC,GAAK,EACrE,EAEMC,GAAO,KAAK,MAAQ,SAAUD,EAAG,CACrC,OAAO,KAAK,IAAIA,CAAC,EAAI,KAAOA,GAAK,KAAK,IAAIA,CAAC,EAAI,KAAK,IAAI,CAACA,CAAC,GAAK,EACjE,EAQME,IAAQ,SAAUF,EAAG,CAEzB,IAAMG,EAAI,KAAK,GAAK,EACpB,GAAI,CAACA,EAAIH,GAAKA,EAAIG,EAChB,OAAO,KAAK,IAAIH,CAAC,EAAI,EAevB,IAAMI,EAAKJ,EAAIA,EACf,OAAOI,GACLA,GACEA,GACEA,GACEA,GACEA,GACEA,GACEA,EAAK,cACH,EAAI,aACN,EAAI,WACN,EAAI,SACN,EAAI,OACN,EAAI,KACN,EAAI,IACN,EAAI,EACV,EAEMC,GAAQ,SAAUL,EAAGM,EAAG,CAS5B,OAPAN,EAAI,KAAK,IAAIA,CAAC,EACdM,EAAI,KAAK,IAAIA,CAAC,EAGVN,EAAIM,IAAG,CAACN,EAAGM,CAAC,EAAI,CAACA,EAAGN,CAAC,GAGrBA,EAAI,IAAY,KAAK,KAAKA,EAAIA,EAAIM,EAAIA,CAAC,GAG3CA,GAAKN,EACEA,EAAI,KAAK,KAAK,EAAIM,EAAIA,CAAC,EAChC,EAEMC,GAAc,UAAY,CAC9B,MAAM,YAAY,eAAe,CACnC,EASA,SAASC,GAASC,EAAGN,EAAG,CAEtB,IAAMO,EAAK,KAAK,IAAID,CAAC,EACfE,EAAK,KAAK,IAAIR,CAAC,EAErB,OAAIM,IAAM,EACD,KAAK,IAAIE,CAAE,EAGhBR,IAAM,EACD,KAAK,IAAIO,CAAE,EAGhBA,EAAK,KAAQC,EAAK,IACb,KAAK,IAAIF,EAAIA,EAAIN,EAAIA,CAAC,EAAI,IAmCnCM,EAAIA,EAAI,GACRN,EAAIA,EAAI,GAED,GAAM,KAAK,IAAIM,EAAIA,EAAIN,EAAIA,CAAC,EAAI,KAAK,IAC9C,CAEA,IAAMS,IAAI,CAAE,GAAM,EAAG,GAAM,CAAE,EACvBC,GAAQ,SAAUJ,EAAGN,EAAG,CAE5B,IAAMW,EAAIF,IAEV,GAAuBH,GAAM,KAC3BK,EAAE,GACAA,EAAE,GAAQ,UACHX,IAAM,OACfW,EAAE,GAAQL,EACVK,EAAE,GAAQX,MAEV,QAAQ,OAAOM,EAAG,CAEhB,IAAK,SAEH,GAAI,OAAQA,GAAK,OAAQA,EACvBK,EAAE,GAAQL,EAAE,GACZK,EAAE,GAAQL,EAAE,WACH,QAASA,GAAK,QAASA,EAAG,CACnC,GAAI,CAAC,SAASA,EAAE,GAAM,GAAK,SAASA,EAAE,GAAM,EAC1C,OAAOM,GAAQ,SAEjBD,EAAE,GAAQL,EAAE,IAAS,KAAK,IAAIA,EAAE,GAAM,EACtCK,EAAE,GAAQL,EAAE,IAAS,KAAK,IAAIA,EAAE,GAAM,CACxC,SAAW,MAAOA,GAAK,QAASA,EAAG,CACjC,GAAI,CAAC,SAASA,EAAE,CAAI,GAAK,SAASA,EAAE,GAAM,EACxC,OAAOM,GAAQ,SAEjBD,EAAE,GAAQL,EAAE,EAAO,KAAK,IAAIA,EAAE,GAAM,EACpCK,EAAE,GAAQL,EAAE,EAAO,KAAK,IAAIA,EAAE,GAAM,CACtC,MAAWA,EAAE,SAAW,GACtBK,EAAE,GAAQL,EAAE,CAAC,EACbK,EAAE,GAAQL,EAAE,CAAC,GAEbF,GAAY,EAEd,MAEF,IAAK,SAEHO,EAAE,GACFA,EAAE,GAAQ,EAEV,IAAME,EAASP,EAAE,QAAQ,KAAM,EAAE,EAC9B,MAAM,uCAAuC,EAC5CQ,EAAO,EACPC,EAAQ,EAERF,IAAW,MACbT,GAAY,EAGd,QAASY,EAAI,EAAGA,EAAIH,EAAO,OAAQG,IAAK,CAEtC,IAAMC,EAAIJ,EAAOG,CAAC,EAEdC,IAAM,KAAOA,IAAM,KAAQA,IAAM;AAAA,IAE1BA,IAAM,IACfH,IACSG,IAAM,IACfF,IACSE,IAAM,KAAOA,IAAM,KAExBH,EAAOC,IAAU,GACnBX,GAAY,EAGVS,EAAOG,EAAI,CAAC,IAAM,KAAO,CAAC,MAAMH,EAAOG,EAAI,CAAC,CAAC,GAC/CL,EAAE,IAAS,YAAYI,EAAQ,EAAI,IAAM,IAAMF,EAAOG,EAAI,CAAC,CAAC,EAC5DA,KAEAL,EAAE,IAAS,YAAYI,EAAQ,EAAI,IAAM,IAAM,GAAG,EAEpDD,EAAOC,EAAQ,KAIXD,EAAOC,IAAU,GAAK,MAAME,CAAC,IAC/Bb,GAAY,EAGVS,EAAOG,EAAI,CAAC,IAAM,KAAOH,EAAOG,EAAI,CAAC,IAAM,KAC7CL,EAAE,IAAS,YAAYI,EAAQ,EAAI,IAAM,IAAME,CAAC,EAChDD,KAEAL,EAAE,IAAS,YAAYI,EAAQ,EAAI,IAAM,IAAME,CAAC,EAElDH,EAAOC,EAAQ,GAEnB,CAGID,EAAOC,EAAQ,GACjBX,GAAY,EAEd,MAEF,IAAK,SACHO,EAAE,GAAQ,EACVA,EAAE,GAAQL,EACV,MAEF,QACEF,GAAY,CAChB,CAEF,OAAI,MAAMO,EAAE,EAAK,GAAK,MAAMA,EAAE,EAAK,EAK5BA,CACT,EAMA,SAASC,GAAQN,EAAGN,EAAG,CAErB,GAAI,EAAE,gBAAgBY,IACpB,OAAO,IAAIA,GAAQN,EAAGN,CAAC,EAGzB,IAAMW,EAAID,GAAMJ,EAAGN,CAAC,EAEpB,KAAK,GAAQW,EAAE,GACf,KAAK,GAAQA,EAAE,EACjB,CAEAC,GAAQ,UAAY,CAElB,GAAM,EACN,GAAM,EAON,KAAQ,UAAY,CAElB,IAAMM,EAAMhB,GAAM,KAAK,GAAO,KAAK,EAAK,EAExC,OAAO,IAAIU,GACT,KAAK,GAAQM,EACb,KAAK,GAAQA,CAAG,CACpB,EAOA,IAAO,SAAUZ,EAAGN,EAAG,CAErB,IAAMW,EAAID,GAAMJ,EAAGN,CAAC,EAEdmB,EAAS,KAAK,WAAc,EAC5BC,EAAS,EAAE,SAAST,EAAE,EAAK,GAAK,SAASA,EAAE,EAAK,GAEtD,OAAIQ,GAAUC,EAERD,GAAUC,EAELR,GAAQ,IAGVA,GAAQ,SAGV,IAAIA,GACT,KAAK,GAAQD,EAAE,GACf,KAAK,GAAQA,EAAE,EAAK,CACxB,EAOA,IAAO,SAAUL,EAAGN,EAAG,CAErB,IAAMW,EAAID,GAAMJ,EAAGN,CAAC,EAEdmB,EAAS,KAAK,WAAc,EAC5BC,EAAS,EAAE,SAAST,EAAE,EAAK,GAAK,SAASA,EAAE,EAAK,GAEtD,OAAIQ,GAAUC,EAERD,GAAUC,EAELR,GAAQ,IAGVA,GAAQ,SAGV,IAAIA,GACT,KAAK,GAAQD,EAAE,GACf,KAAK,GAAQA,EAAE,EAAK,CACxB,EAOA,IAAO,SAAUL,EAAGN,EAAG,CAErB,IAAMW,EAAID,GAAMJ,EAAGN,CAAC,EAEdmB,EAAS,KAAK,WAAc,EAC5BC,EAAS,EAAE,SAAST,EAAE,EAAK,GAAK,SAASA,EAAE,EAAK,GAChDU,EAAU,KAAK,KAAU,GAAK,KAAK,KAAU,EAC7CC,EAAUX,EAAE,KAAU,GAAKA,EAAE,KAAU,EAG7C,OAAIQ,GAAUG,GAAWF,GAAUC,EAC1BT,GAAQ,IAIbO,GAAUC,EACLR,GAAQ,SAIbD,EAAE,KAAU,GAAK,KAAK,KAAU,EAC3B,IAAIC,GAAQ,KAAK,GAAQD,EAAE,GAAO,CAAC,EAGrC,IAAIC,GACT,KAAK,GAAQD,EAAE,GAAQ,KAAK,GAAQA,EAAE,GACtC,KAAK,GAAQA,EAAE,GAAQ,KAAK,GAAQA,EAAE,EAAK,CAC/C,EAOA,IAAO,SAAUL,EAAGN,EAAG,CAErB,IAAMW,EAAID,GAAMJ,EAAGN,CAAC,EAEdmB,EAAS,KAAK,WAAc,EAC5BC,EAAS,EAAE,SAAST,EAAE,EAAK,GAAK,SAASA,EAAE,EAAK,GAChDU,EAAU,KAAK,KAAU,GAAK,KAAK,KAAU,EAC7CC,EAAUX,EAAE,KAAU,GAAKA,EAAE,KAAU,EAG7C,GAAIU,GAAWC,GAAWH,GAAUC,EAClC,OAAOR,GAAQ,IAIjB,GAAIU,GAAWH,EACb,OAAOP,GAAQ,SAIjB,GAAIS,GAAWD,EACb,OAAOR,GAAQ,KAGjB,GAAUD,EAAE,KAAR,EAEF,OAAO,IAAIC,GAAQ,KAAK,GAAQD,EAAE,GAAO,KAAK,GAAQA,EAAE,EAAK,EAG/D,GAAI,KAAK,IAAIA,EAAE,EAAK,EAAI,KAAK,IAAIA,EAAE,EAAK,EAAG,CAEzC,IAAMd,EAAIc,EAAE,GAAQA,EAAE,GAChBY,EAAIZ,EAAE,GAAQd,EAAIc,EAAE,GAE1B,OAAO,IAAIC,IACR,KAAK,GAAQf,EAAI,KAAK,IAAS0B,GAC/B,KAAK,GAAQ1B,EAAI,KAAK,IAAS0B,CAAC,CAErC,KAAO,CAEL,IAAM1B,EAAIc,EAAE,GAAQA,EAAE,GAChBY,EAAIZ,EAAE,GAAQd,EAAIc,EAAE,GAE1B,OAAO,IAAIC,IACR,KAAK,GAAQ,KAAK,GAAQf,GAAK0B,GAC/B,KAAK,GAAQ,KAAK,GAAQ1B,GAAK0B,CAAC,CACrC,CACF,EAOA,IAAO,SAAUjB,EAAGN,EAAG,CAErB,IAAMW,EAAID,GAAMJ,EAAGN,CAAC,EAEdqB,EAAU,KAAK,KAAU,GAAK,KAAK,KAAU,EAGnD,GAFgBV,EAAE,KAAU,GAAKA,EAAE,KAAU,EAG3C,OAAOC,GAAQ,IAIjB,GAAID,EAAE,KAAU,EAAG,CAEjB,GAAI,KAAK,KAAU,GAAK,KAAK,GAAQ,EAEnC,OAAO,IAAIC,GAAQ,KAAK,IAAI,KAAK,GAAOD,EAAE,EAAK,EAAG,CAAC,EAE9C,GAAI,KAAK,KAAU,EAExB,QAASA,EAAE,GAAQ,EAAI,GAAK,EAAG,CAC7B,IAAK,GACH,OAAO,IAAIC,GAAQ,KAAK,IAAI,KAAK,GAAOD,EAAE,EAAK,EAAG,CAAC,EACrD,IAAK,GACH,OAAO,IAAIC,GAAQ,EAAG,KAAK,IAAI,KAAK,GAAOD,EAAE,EAAK,CAAC,EACrD,IAAK,GACH,OAAO,IAAIC,GAAQ,CAAC,KAAK,IAAI,KAAK,GAAOD,EAAE,EAAK,EAAG,CAAC,EACtD,IAAK,GACH,OAAO,IAAIC,GAAQ,EAAG,CAAC,KAAK,IAAI,KAAK,GAAOD,EAAE,EAAK,CAAC,CACxD,CAEJ,CAqBA,GAAIU,GAAWV,EAAE,GAAQ,EACvB,OAAOC,GAAQ,KAGjB,IAAMY,EAAM,KAAK,MAAM,KAAK,GAAO,KAAK,EAAK,EACvCC,EAAMpB,GAAS,KAAK,GAAO,KAAK,EAAK,EAEvCqB,EAAK,KAAK,IAAIf,EAAE,GAAQc,EAAMd,EAAE,GAAQa,CAAG,EAC3CG,EAAKhB,EAAE,GAAQc,EAAMd,EAAE,GAAQa,EACnC,OAAO,IAAIZ,GACTc,EAAK,KAAK,IAAIC,CAAE,EAChBD,EAAK,KAAK,IAAIC,CAAE,CAAC,CACrB,EAOA,KAAQ,UAAY,CAElB,IAAMrB,EAAI,KAAK,GACTN,EAAI,KAAK,GAEf,GAAIA,IAAM,EAER,OAAIM,GAAK,EACA,IAAIM,GAAQ,KAAK,KAAKN,CAAC,EAAG,CAAC,EAE3B,IAAIM,GAAQ,EAAG,KAAK,KAAK,CAACN,CAAC,CAAC,EAIvC,IAAM,EAAIJ,GAAMI,EAAGN,CAAC,EAEhB0B,EAAK,KAAK,KAAK,IAAO,EAAI,KAAK,IAAIpB,CAAC,EAAE,EACtCqB,EAAK,KAAK,IAAI3B,CAAC,GAAK,EAAI0B,GAE5B,OAAIpB,GAAK,EACA,IAAIM,GAAQc,EAAI1B,EAAI,EAAI,CAAC2B,EAAKA,CAAE,EAEhC,IAAIf,GAAQe,EAAI3B,EAAI,EAAI,CAAC0B,EAAKA,CAAE,CAE3C,EAOA,IAAO,UAAY,CAEjB,IAAME,EAAK,KAAK,IAAI,KAAK,EAAK,EAE9B,OAAI,KAAK,KAAU,EACV,IAAIhB,GAAQgB,EAAI,CAAC,EAEnB,IAAIhB,GACTgB,EAAK,KAAK,IAAI,KAAK,EAAK,EACxBA,EAAK,KAAK,IAAI,KAAK,EAAK,CAAC,CAC7B,EAUA,MAAS,UAAY,CAQnB,IAAMtB,EAAI,KAAK,GACTN,EAAI,KAAK,GAEf,OAAO,IAAIY,GACT,KAAK,MAAMN,CAAC,EAAI,KAAK,IAAIN,CAAC,EAAID,IAAMC,CAAC,EACrC,KAAK,IAAIM,CAAC,EAAI,KAAK,IAAIN,CAAC,CAAC,CAC7B,EAOA,IAAO,UAAY,CAEjB,IAAMM,EAAI,KAAK,GACTN,EAAI,KAAK,GAEf,OAAIA,IAAM,GAAKM,EAAI,EACV,IAAIM,GAAQ,KAAK,IAAIN,CAAC,EAAG,CAAC,EAG5B,IAAIM,GACTP,GAASC,EAAGN,CAAC,EACb,KAAK,MAAMA,EAAGM,CAAC,CAAC,CACpB,EAOA,IAAO,UAAY,CAEjB,OAAOJ,GAAM,KAAK,GAAO,KAAK,EAAK,CACrC,EAOA,IAAO,UAAY,CAEjB,OAAO,KAAK,MAAM,KAAK,GAAO,KAAK,EAAK,CAC1C,EAOA,IAAO,UAAY,CAKjB,IAAMI,EAAI,KAAK,GACTN,EAAI,KAAK,GAEf,OAAO,IAAIY,GACT,KAAK,IAAIN,CAAC,EAAIV,GAAKI,CAAC,EACpB,KAAK,IAAIM,CAAC,EAAIR,GAAKE,CAAC,CAAC,CACzB,EAOA,IAAO,UAAY,CAKjB,IAAMM,EAAI,KAAK,GACTN,EAAI,KAAK,GAEf,OAAO,IAAIY,GACT,KAAK,IAAIN,CAAC,EAAIV,GAAKI,CAAC,EACpB,CAAC,KAAK,IAAIM,CAAC,EAAIR,GAAKE,CAAC,CAAC,CAC1B,EAOA,IAAO,UAAY,CAOjB,IAAMM,EAAI,EAAI,KAAK,GACbN,EAAI,EAAI,KAAK,GACb6B,EAAI,KAAK,IAAIvB,CAAC,EAAIV,GAAKI,CAAC,EAE9B,OAAO,IAAIY,GACT,KAAK,IAAIN,CAAC,EAAIuB,EACd/B,GAAKE,CAAC,EAAI6B,CAAC,CACf,EAOA,IAAO,UAAY,CAIjB,IAAMvB,EAAI,EAAI,KAAK,GACbN,EAAI,EAAI,KAAK,GACb6B,EAAI,KAAK,IAAIvB,CAAC,EAAIV,GAAKI,CAAC,EAE9B,OAAO,IAAIY,GACT,CAAC,KAAK,IAAIN,CAAC,EAAIuB,EACf/B,GAAKE,CAAC,EAAI6B,CAAC,CACf,EAOA,IAAO,UAAY,CAIjB,IAAMvB,EAAI,KAAK,GACTN,EAAI,KAAK,GACT6B,EAAI,GAAMjC,GAAK,EAAII,CAAC,EAAI,GAAM,KAAK,IAAI,EAAIM,CAAC,EAElD,OAAO,IAAIM,GACT,KAAK,IAAIN,CAAC,EAAIV,GAAKI,CAAC,EAAI6B,EACxB,KAAK,IAAIvB,CAAC,EAAIR,GAAKE,CAAC,EAAI6B,CAAC,CAC7B,EAOA,IAAO,UAAY,CAIjB,IAAMvB,EAAI,KAAK,GACTN,EAAI,KAAK,GACT6B,EAAI,GAAMjC,GAAK,EAAII,CAAC,EAAI,GAAM,KAAK,IAAI,EAAIM,CAAC,EAElD,OAAO,IAAIM,GACT,KAAK,IAAIN,CAAC,EAAIV,GAAKI,CAAC,EAAI6B,EACxB,CAAC,KAAK,IAAIvB,CAAC,EAAIR,GAAKE,CAAC,EAAI6B,CAAC,CAC9B,EAOA,KAAQ,UAAY,CAIlB,IAAMvB,EAAI,KAAK,GACTN,EAAI,KAAK,GAET8B,EAAK,IAAIlB,GACbZ,EAAIA,EAAIM,EAAIA,EAAI,EAChB,GAAKA,EAAIN,CAAC,EAAE,KAAQ,EAEhB+B,EAAK,IAAInB,GACbkB,EAAG,GAAQ9B,EACX8B,EAAG,GAAQxB,CAAC,EAAE,IAAO,EAEvB,OAAO,IAAIM,GAAQmB,EAAG,GAAO,CAACA,EAAG,EAAK,CACxC,EAOA,KAAQ,UAAY,CAIlB,IAAMzB,EAAI,KAAK,GACTN,EAAI,KAAK,GAET8B,EAAK,IAAIlB,GACbZ,EAAIA,EAAIM,EAAIA,EAAI,EAChB,GAAKA,EAAIN,CAAC,EAAE,KAAQ,EAEhB+B,EAAK,IAAInB,GACbkB,EAAG,GAAQ9B,EACX8B,EAAG,GAAQxB,CAAC,EAAE,IAAO,EAEvB,OAAO,IAAIM,GAAQ,KAAK,GAAK,EAAImB,EAAG,GAAOA,EAAG,EAAK,CACrD,EAOA,KAAQ,UAAY,CAIlB,IAAMzB,EAAI,KAAK,GACTN,EAAI,KAAK,GAEf,GAAIM,IAAM,EAAG,CAEX,GAAIN,IAAM,EACR,OAAO,IAAIY,GAAQ,EAAG,GAAQ,EAGhC,GAAIZ,IAAM,GACR,OAAO,IAAIY,GAAQ,EAAG,IAAS,CAEnC,CAEA,IAAMiB,EAAIvB,EAAIA,GAAK,EAAMN,IAAM,EAAMA,GAE/B8B,EAAK,IAAIlB,IACZ,EAAIZ,EAAIA,EAAIM,EAAIA,GAAKuB,EACtB,GAAKvB,EAAIuB,CAAC,EAAE,IAAI,EAElB,OAAO,IAAIjB,GAAQ,IAAOkB,EAAG,GAAO,GAAMA,EAAG,EAAK,CACpD,EAOA,KAAQ,UAAY,CAIlB,IAAMxB,EAAI,KAAK,GACTN,EAAI,KAAK,GAEf,GAAIA,IAAM,EACR,OAAO,IAAIY,GAAQ,KAAK,MAAM,EAAGN,CAAC,EAAG,CAAC,EAGxC,IAAMuB,EAAIvB,EAAIA,EAAIN,EAAIA,EACtB,OAAQ6B,IAAM,EACV,IAAIjB,GACJN,EAAIuB,EACJ,CAAC7B,EAAI6B,CAAC,EAAE,KAAK,EACb,IAAIjB,GACHN,IAAM,EAAKA,EAAI,EAAI,EACnBN,IAAM,EAAK,CAACA,EAAI,EAAI,CAAC,EAAE,KAAK,CACnC,EAOA,KAAQ,UAAY,CAIlB,IAAMM,EAAI,KAAK,GACTN,EAAI,KAAK,GAEf,GAAIM,IAAM,GAAKN,IAAM,EACnB,OAAO,IAAIY,GAAQ,EAAG,GAAQ,EAGhC,IAAMiB,EAAIvB,EAAIA,EAAIN,EAAIA,EACtB,OAAQ6B,IAAM,EACV,IAAIjB,GACJN,EAAIuB,EACJ,CAAC7B,EAAI6B,CAAC,EAAE,KAAK,EACb,IAAIjB,GACHN,IAAM,EAAKA,EAAI,EAAI,EACnBN,IAAM,EAAK,CAACA,EAAI,EAAI,CAAC,EAAE,KAAK,CACnC,EAOA,KAAQ,UAAY,CAIlB,IAAMM,EAAI,KAAK,GACTN,EAAI,KAAK,GAEf,GAAIM,IAAM,GAAKN,IAAM,EACnB,OAAO,IAAIY,GAAQ,KAAK,GAAK,EAAG,GAAQ,EAG1C,IAAMiB,EAAIvB,EAAIA,EAAIN,EAAIA,EACtB,OAAQ6B,IAAM,EACV,IAAIjB,GACJN,EAAIuB,EACJ,CAAC7B,EAAI6B,CAAC,EAAE,KAAK,EACb,IAAIjB,GACHN,IAAM,EAAKA,EAAI,EAAI,EACnBN,IAAM,EAAK,CAACA,EAAI,EAAI,CAAC,EAAE,KAAK,CACnC,EAOA,KAAQ,UAAY,CAIlB,IAAMM,EAAI,KAAK,GACTN,EAAI,KAAK,GAEf,OAAO,IAAIY,GACTd,GAAKQ,CAAC,EAAI,KAAK,IAAIN,CAAC,EACpBJ,GAAKU,CAAC,EAAI,KAAK,IAAIN,CAAC,CAAC,CACzB,EAOA,KAAQ,UAAY,CAIlB,IAAMM,EAAI,KAAK,GACTN,EAAI,KAAK,GAEf,OAAO,IAAIY,GACThB,GAAKU,CAAC,EAAI,KAAK,IAAIN,CAAC,EACpBF,GAAKQ,CAAC,EAAI,KAAK,IAAIN,CAAC,CAAC,CACzB,EAOA,KAAQ,UAAY,CAIlB,IAAMM,EAAI,EAAI,KAAK,GACbN,EAAI,EAAI,KAAK,GACb6B,EAAIjC,GAAKU,CAAC,EAAI,KAAK,IAAIN,CAAC,EAE9B,OAAO,IAAIY,GACTd,GAAKQ,CAAC,EAAIuB,EACV,KAAK,IAAI7B,CAAC,EAAI6B,CAAC,CACnB,EAOA,KAAQ,UAAY,CAIlB,IAAMvB,EAAI,EAAI,KAAK,GACbN,EAAI,EAAI,KAAK,GACb6B,EAAIjC,GAAKU,CAAC,EAAI,KAAK,IAAIN,CAAC,EAE9B,OAAO,IAAIY,GACTd,GAAKQ,CAAC,EAAIuB,EACV,CAAC,KAAK,IAAI7B,CAAC,EAAI6B,CAAC,CACpB,EAOA,KAAQ,UAAY,CAIlB,IAAMvB,EAAI,KAAK,GACTN,EAAI,KAAK,GACT6B,EAAI,KAAK,IAAI,EAAI7B,CAAC,EAAIJ,GAAK,EAAIU,CAAC,EAEtC,OAAO,IAAIM,GACT,GAAKd,GAAKQ,CAAC,EAAI,KAAK,IAAIN,CAAC,EAAI6B,EAC7B,EAAIjC,GAAKU,CAAC,EAAI,KAAK,IAAIN,CAAC,EAAI6B,CAAC,CACjC,EAOA,KAAQ,UAAY,CAIlB,IAAMvB,EAAI,KAAK,GACTN,EAAI,KAAK,GACT6B,EAAI,KAAK,IAAI,EAAI7B,CAAC,EAAIJ,GAAK,EAAIU,CAAC,EAEtC,OAAO,IAAIM,GACT,EAAIhB,GAAKU,CAAC,EAAI,KAAK,IAAIN,CAAC,EAAI6B,EAC5B,GAAK/B,GAAKQ,CAAC,EAAI,KAAK,IAAIN,CAAC,EAAI6B,CAAC,CAClC,EAOA,MAAS,UAAY,CAInB,IAAIG,EAAM,KAAK,GACf,KAAK,GAAQ,CAAC,KAAK,GACnB,KAAK,GAAQA,EACb,IAAMC,EAAM,KAAK,KAAQ,EAEzB,YAAK,GAAQ,CAAC,KAAK,GACnB,KAAK,GAAQD,EACbA,EAAMC,EAAI,GAEVA,EAAI,GAAQ,CAACA,EAAI,GACjBA,EAAI,GAAQD,EACLC,CACT,EAOA,MAAS,UAAY,CAInB,IAAMA,EAAM,KAAK,KAAQ,EACzB,GAAIA,EAAI,IAAS,EAAG,CAClB,IAAMD,EAAMC,EAAI,GAChBA,EAAI,GAAQ,CAACA,EAAI,GACjBA,EAAI,GAAQD,CACd,KAAO,CACL,IAAMA,EAAMC,EAAI,GAChBA,EAAI,GAAQ,CAACA,EAAI,GACjBA,EAAI,GAAQD,CACd,CACA,OAAOC,CACT,EAOA,MAAS,UAAY,CAInB,IAAM3B,EAAI,KAAK,GACTN,EAAI,KAAK,GAETkC,EAAO5B,EAAI,GAAKN,IAAM,EACtBmC,EAAW,EAAI7B,EACf8B,EAAU,EAAI9B,EACduB,EAAIM,EAAWA,EAAWnC,EAAIA,EAE9BH,EAAKgC,IAAM,EACb,IAAIjB,IACHwB,EAAUD,EAAWnC,EAAIA,GAAK6B,GAC9B7B,EAAImC,EAAWC,EAAUpC,GAAK6B,CAAC,EAChC,IAAIjB,GACHN,IAAM,GAAOA,EAAI,EAAK,EACtBN,IAAM,EAAMA,EAAI,EAAK,CAAC,EAErBqC,EAAOxC,EAAE,GACf,OAAAA,EAAE,GAAQQ,GAASR,EAAE,GAAOA,EAAE,EAAK,EAAI,EACvCA,EAAE,GAAQ,KAAK,MAAMA,EAAE,GAAOwC,CAAI,EAAI,EAClCH,IACFrC,EAAE,GAAQ,CAACA,EAAE,IAERA,CACT,EAOA,MAAS,UAAY,CAInB,IAAMS,EAAI,KAAK,GACTN,EAAI,KAAK,GAEf,GAAIM,IAAM,GAAKN,IAAM,EACnB,OAAO,IAAIY,GAAQ,EAAG,KAAK,GAAK,CAAC,EAGnC,IAAMiB,EAAIvB,EAAIA,EAAIN,EAAIA,EACtB,OAAQ6B,IAAM,EACV,IAAIjB,GACJN,EAAIuB,EACJ,CAAC7B,EAAI6B,CAAC,EAAE,MAAM,EACd,IAAIjB,GACHN,IAAM,EAAKA,EAAI,EAAI,EACnBN,IAAM,EAAK,CAACA,EAAI,EAAI,CAAC,EAAE,MAAM,CACpC,EAOA,MAAS,UAAY,CAInB,IAAMM,EAAI,KAAK,GACTN,EAAI,KAAK,GAEf,GAAIA,IAAM,EAER,OAAO,IAAIY,GACRN,IAAM,EACH,KAAK,IAAIA,EAAI,KAAK,KAAKA,EAAIA,EAAI,CAAC,CAAC,EACjC,IAAU,CAAC,EAGnB,IAAMuB,EAAIvB,EAAIA,EAAIN,EAAIA,EACtB,OAAQ6B,IAAM,EACV,IAAIjB,GACJN,EAAIuB,EACJ,CAAC7B,EAAI6B,CAAC,EAAE,MAAM,EACd,IAAIjB,GACHN,IAAM,EAAKA,EAAI,EAAI,EACnBN,IAAM,EAAK,CAACA,EAAI,EAAI,CAAC,EAAE,MAAM,CACpC,EAOA,MAAS,UAAY,CAInB,IAAMM,EAAI,KAAK,GACTN,EAAI,KAAK,GAEf,GAAI,KAAK,OAAU,EACjB,OAAOY,GAAQ,SAGjB,IAAMiB,EAAIvB,EAAIA,EAAIN,EAAIA,EACtB,OAAQ6B,IAAM,EACV,IAAIjB,GACJN,EAAIuB,EACJ,CAAC7B,EAAI6B,CAAC,EAAE,MAAM,EACd,IAAIjB,GACHN,IAAM,EAAKA,EAAI,EAAI,EACnBN,IAAM,EAAK,CAACA,EAAI,EAAI,CAAC,EAAE,MAAM,CACpC,EAOA,QAAW,UAAY,CAGrB,GAAI,KAAK,OAAU,EACjB,OAAOY,GAAQ,SAGjB,GAAI,KAAK,WAAc,EACrB,OAAOA,GAAQ,KAGjB,IAAMN,EAAI,KAAK,GACTN,EAAI,KAAK,GAET6B,EAAIvB,EAAIA,EAAIN,EAAIA,EAEtB,OAAO,IAAIY,GAAQN,EAAIuB,EAAG,CAAC7B,EAAI6B,CAAC,CAClC,EAOA,UAAa,UAAY,CAEvB,OAAO,IAAIjB,GAAQ,KAAK,GAAO,CAAC,KAAK,EAAK,CAC5C,EAOA,IAAO,UAAY,CAEjB,OAAO,IAAIA,GAAQ,CAAC,KAAK,GAAO,CAAC,KAAK,EAAK,CAC7C,EAOA,KAAQ,SAAU0B,EAAQ,CAExB,OAAAA,EAAS,KAAK,IAAI,GAAIA,GAAU,CAAC,EAE1B,IAAI1B,GACT,KAAK,KAAK,KAAK,GAAQ0B,CAAM,EAAIA,EACjC,KAAK,KAAK,KAAK,GAAQA,CAAM,EAAIA,CAAM,CAC3C,EAOA,MAAS,SAAUA,EAAQ,CAEzB,OAAAA,EAAS,KAAK,IAAI,GAAIA,GAAU,CAAC,EAE1B,IAAI1B,GACT,KAAK,MAAM,KAAK,GAAQ0B,CAAM,EAAIA,EAClC,KAAK,MAAM,KAAK,GAAQA,CAAM,EAAIA,CAAM,CAC5C,EAOA,MAAS,SAAUA,EAAQ,CAEzB,OAAAA,EAAS,KAAK,IAAI,GAAIA,GAAU,CAAC,EAE1B,IAAI1B,GACT,KAAK,MAAM,KAAK,GAAQ0B,CAAM,EAAIA,EAClC,KAAK,MAAM,KAAK,GAAQA,CAAM,EAAIA,CAAM,CAC5C,EASA,OAAU,SAAUhC,EAAGN,EAAG,CAExB,IAAMW,EAAID,GAAMJ,EAAGN,CAAC,EAEpB,OAAO,KAAK,IAAIW,EAAE,GAAQ,KAAK,EAAK,GAAKC,GAAQ,SAC/C,KAAK,IAAID,EAAE,GAAQ,KAAK,EAAK,GAAKC,GAAQ,OAC9C,EAOA,MAAS,UAAY,CAEnB,OAAO,IAAIA,GAAQ,KAAK,GAAO,KAAK,EAAK,CAC3C,EAOA,SAAY,UAAY,CAEtB,IAAIN,EAAI,KAAK,GACTN,EAAI,KAAK,GACTuC,EAAM,GAEV,OAAI,KAAK,MAAS,EACT,MAGL,KAAK,WAAc,EACd,YAGL,KAAK,IAAIjC,CAAC,EAAIM,GAAQ,UACxBN,EAAI,GAGF,KAAK,IAAIN,CAAC,EAAIY,GAAQ,UACxBZ,EAAI,GAIFA,IAAM,EACDuC,EAAMjC,GAGXA,IAAM,GACRiC,GAAOjC,EACPiC,GAAO,IACHvC,EAAI,GACNA,EAAI,CAACA,EACLuC,GAAO,KAEPA,GAAO,IAETA,GAAO,KACEvC,EAAI,IACbA,EAAI,CAACA,EACLuC,GAAO,KAGCvC,IAAN,IACFuC,GAAOvC,GAEFuC,EAAM,KACf,EAOA,SAAY,UAAY,CAEtB,MAAO,CAAC,KAAK,GAAO,KAAK,EAAK,CAChC,EAOA,QAAW,UAAY,CAErB,OAAI,KAAK,KAAU,EACV,KAAK,GAEP,IACT,EAOA,MAAS,UAAY,CACnB,OAAO,MAAM,KAAK,EAAK,GAAK,MAAM,KAAK,EAAK,CAC9C,EAQA,OAAU,UAAY,CACpB,OAAO,KAAK,KAAU,GAAK,KAAK,KAAU,CAC5C,EAQA,SAAY,UAAY,CACtB,OAAO,SAAS,KAAK,EAAK,GAAK,SAAS,KAAK,EAAK,CACpD,EAQA,WAAc,UAAY,CACxB,MAAO,CAAC,KAAK,SAAY,CAC3B,CACF,EAEA3B,GAAQ,KAAU,IAAIA,GAAQ,EAAG,CAAC,EAClCA,GAAQ,IAAS,IAAIA,GAAQ,EAAG,CAAC,EACjCA,GAAQ,EAAO,IAAIA,GAAQ,EAAG,CAAC,EAC/BA,GAAQ,GAAQ,IAAIA,GAAQ,KAAK,GAAI,CAAC,EACtCA,GAAQ,EAAO,IAAIA,GAAQ,KAAK,EAAG,CAAC,EACpCA,GAAQ,SAAc,IAAIA,GAAQ,IAAU,GAAQ,EACpDA,GAAQ,IAAS,IAAIA,GAAQ,IAAK,GAAG,EACrCA,GAAQ,QAAa,MC33CrB,IAAI4B,IAAO,UACPC,IAAe,CAAC,EACTC,GAAoCC,EAAQH,IAAMC,IAAc,KAIzE,OAAO,eAAeG,GAAS,OAAQ,CACrC,MAAO,SACT,CAAC,EACDA,GAAQ,UAAU,YAAcA,GAChCA,GAAQ,UAAU,KAAO,UACzBA,GAAQ,UAAU,UAAY,GAO9BA,GAAQ,UAAU,OAAS,UAAY,CACrC,MAAO,CACL,OAAQ,UACR,GAAI,KAAK,GACT,GAAI,KAAK,EACX,CACF,EAOAA,GAAQ,UAAU,QAAU,UAAY,CACtC,MAAO,CACL,EAAG,KAAK,IAAI,EACZ,IAAK,KAAK,IAAI,CAChB,CACF,EAWAA,GAAQ,UAAU,OAAS,SAAUC,EAAS,CAC5C,IAAIC,EAAM,GACNC,EAAK,KAAK,GACVC,EAAK,KAAK,GACVC,EAAQC,GAAO,KAAK,GAAIL,CAAO,EAC/BM,EAAQD,GAAO,KAAK,GAAIL,CAAO,EAG/BO,EAAYC,GAASR,CAAO,EAAIA,EAAUA,EAAUA,EAAQ,UAAY,KAC5E,GAAIO,IAAc,KAAM,CACtB,IAAIE,EAAU,KAAK,IAAI,GAAI,CAACF,CAAS,EACjC,KAAK,IAAIJ,EAAKD,CAAE,EAAIO,IACtBN,EAAK,GAEH,KAAK,IAAID,EAAKC,CAAE,EAAIM,IACtBP,EAAK,EAET,CACA,OAAIA,IAAO,EAETD,EAAMG,EACGD,IAAO,EAEZD,IAAO,EACTD,EAAM,IACGC,IAAO,GAChBD,EAAM,KAENA,EAAMK,EAAQ,IAIZJ,EAAK,EACHA,IAAO,GACTD,EAAMG,EAAQ,OAEdH,EAAMG,EAAQ,MAAQE,EAAM,UAAU,CAAC,EAAI,IAGzCJ,IAAO,EACTD,EAAMG,EAAQ,OAEdH,EAAMG,EAAQ,MAAQE,EAAQ,IAI7BL,CACT,EAaAF,GAAQ,UAAY,SAAUW,EAAM,CAClC,OAAQ,UAAU,OAAQ,CACxB,IAAK,GACH,CACE,IAAIC,EAAM,UAAU,CAAC,EACrB,GAAI,OAAOA,GAAQ,SACjB,OAAOZ,GAAQY,CAAG,EAElB,MAAM,IAAI,UAAU,gDAAgD,CAExE,CACF,IAAK,GACH,CACE,IAAI,EAAI,UAAU,CAAC,EACfC,EAAM,UAAU,CAAC,EACrB,GAAIJ,GAAS,CAAC,EAAG,CAKf,GAJIK,GAAOD,CAAG,GAAKA,EAAI,QAAQ,OAAO,IAEpCA,EAAMA,EAAI,SAAS,KAAK,GAEtBJ,GAASI,CAAG,EACd,OAAO,IAAIb,GAAQ,CACjB,EACA,IAAAa,CACF,CAAC,EAEH,MAAM,IAAI,UAAU,wCAAwC,CAC9D,KACE,OAAM,IAAI,UAAU,2BAA2B,CAEnD,CACF,QACE,MAAM,IAAI,YAAY,iDAAiD,CAC3E,CACF,EACAb,GAAQ,UAAU,QAAUA,GAAQ,UAAU,SAU9CA,GAAQ,SAAW,SAAUe,EAAM,CACjC,OAAO,IAAIf,GAAQe,CAAI,CACzB,EAiBAf,GAAQ,QAAU,SAAUgB,EAAGC,EAAG,CAChC,OAAID,EAAE,GAAKC,EAAE,GACJ,EAELD,EAAE,GAAKC,EAAE,GACJ,GAELD,EAAE,GAAKC,EAAE,GACJ,EAELD,EAAE,GAAKC,EAAE,GACJ,GAEF,CACT,EACOjB,IACN,CACD,QAAS,EACX,CAAC,ECtJD,IAAIkB,IAAgB,IAGhBC,GAAI,CACN,EAAK,EACL,EAAK,EACL,EAAK,CACP,EAEA,SAASC,GAAOC,EAAGC,EAAG,CAEpB,GAAI,MAAMD,EAAI,SAASA,EAAG,EAAE,CAAC,EAC3B,MAAME,GAAiB,EAEzB,OAAOF,EAAIC,CACb,CAGA,SAASE,GAAYH,EAAGI,EAAG,CAEzB,GAAIA,IAAM,EACR,MAAMC,GAAe,EAGvB,IAAIC,EAAI,OAAO,OAAOC,GAAS,SAAS,EACxCD,EAAE,EAAON,EAAI,EAAI,GAAK,EAEtBA,EAAIA,EAAI,EAAI,CAACA,EAAIA,EAEjB,IAAIQ,EAAIC,GAAIT,EAAGI,CAAC,EAEhB,OAAAE,EAAE,EAAON,EAAIQ,EACbF,EAAE,EAAOF,EAAII,EACNF,CACT,CAEA,SAASI,GAAUC,EAAK,CAQtB,QANIC,EAAU,CAAC,EAEXZ,EAAIW,EACJE,EAAI,EACJZ,EAAI,EAEDA,GAAKD,GAAG,CAEb,KAAOA,EAAIa,IAAM,GACfb,GAAIa,EACJD,EAAQC,CAAC,GAAKD,EAAQC,CAAC,GAAK,GAAK,EAEnCZ,GAAI,EAAI,EAAIY,GACd,CAEA,OAAIb,IAAMW,EACJX,EAAI,IACNY,EAAQZ,CAAC,GAAKY,EAAQZ,CAAC,GAAK,GAAK,GAEnCY,EAAQD,CAAG,GAAKC,EAAQD,CAAG,GAAK,GAAK,EAEhCC,CACT,CAEA,IAAIE,GAAQ,SAASC,EAAIC,EAAI,CAE3B,IAAIhB,EAAI,EAAGI,EAAI,EAAGH,EAAI,EAClBgB,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAEhCC,EAAI,EAAGC,EAAI,EACXC,EAAI,EAAGC,EAAI,EAEXC,EAAI,IACJC,EAEJ,GAAwBZ,GAAO,KAExB,GAAIC,IAAO,QAKhB,GAJAhB,EAAIe,EACJX,EAAIY,EACJf,EAAID,EAAII,EAEJJ,EAAI,IAAM,GAAKI,EAAI,IAAM,EAC3B,MAAMwB,IAAoB,MAI5B,QAAQ,OAAOb,EAAI,CAEjB,IAAK,SACH,CACE,GAAI,MAAOA,GAAM,MAAOA,EACtBf,EAAIe,EAAG,EACPX,EAAIW,EAAG,EACH,MAAOA,IACTf,GAAIe,EAAG,WACA,KAAKA,EACdf,EAAIe,EAAG,CAAC,EACJ,KAAKA,IACPX,EAAIW,EAAG,CAAC,OAEV,OAAMb,GAAiB,EAEzBD,EAAID,EAAII,EACR,KACF,CACF,IAAK,SACH,CAME,GALIW,EAAK,IACPd,EAAIc,EACJA,EAAK,CAACA,GAGJA,EAAK,IAAM,EACbf,EAAIe,UACKA,EAAK,EAAG,CAUjB,IARIA,GAAM,IACRM,EAAI,KAAK,IAAI,GAAI,KAAK,MAAM,EAAI,KAAK,IAAIN,CAAE,EAAI,KAAK,IAAI,CAAC,EACzDA,GAAKM,GAMAE,GAAKG,GAAKD,GAAKC,GAGpB,GAFAC,GAAKL,EAAIE,IAAMD,EAAIE,GAEfV,IAAOY,EAAG,CACRJ,EAAIE,GAAKC,GACX1B,EAAIsB,EAAIE,EACRpB,EAAImB,EAAIE,GACCA,EAAIF,GACbvB,EAAIwB,EACJpB,EAAIqB,IAEJzB,EAAIsB,EACJlB,EAAImB,GAEN,KAEF,MAEMR,EAAKY,GACPL,GAAIE,EACJD,GAAIE,IAEJD,GAAIF,EACJG,GAAIF,GAGFA,EAAIG,GACN1B,EAAIwB,EACJpB,EAAIqB,IAEJzB,EAAIsB,EACJlB,EAAImB,GAIVvB,GAAIqB,CACN,MAAW,MAAMN,CAAE,GAAK,MAAMC,CAAE,KAC9BZ,EAAIJ,EAAI,KAEV,KACF,CACF,IAAK,SACH,CAGE,GAFAuB,EAAIR,EAAG,MAAM,QAAQ,EAEjBQ,IAAM,KACR,MAAMrB,GAAiB,EA2CzB,GAzCIqB,EAAED,CAAC,IAAM,KACXrB,EAAI,GACJqB,KACSC,EAAED,CAAC,IAAM,KAClBA,IAGEC,EAAE,SAAWD,EAAI,EACnBJ,EAAInB,GAAOwB,EAAED,GAAG,EAAGrB,CAAC,EACXsB,EAAED,EAAI,CAAC,IAAM,KAAOC,EAAED,CAAC,IAAM,KAElCC,EAAED,CAAC,IAAM,MACXL,EAAIlB,GAAOwB,EAAED,GAAG,EAAGrB,CAAC,GAEtBqB,KAGIA,EAAI,IAAMC,EAAE,QAAUA,EAAED,EAAI,CAAC,IAAM,KAAOC,EAAED,EAAI,CAAC,IAAM,KAAOC,EAAED,EAAI,CAAC,IAAM,KAAOC,EAAED,EAAI,CAAC,IAAM,OACjGJ,EAAInB,GAAOwB,EAAED,CAAC,EAAGrB,CAAC,EAClBmB,EAAI,KAAK,IAAI,GAAIG,EAAED,CAAC,EAAE,MAAM,EAC5BA,MAIEC,EAAED,CAAC,IAAM,KAAOC,EAAED,EAAI,CAAC,IAAM,KAAOC,EAAED,CAAC,IAAM,KAAOC,EAAED,EAAI,CAAC,IAAM,OACnEH,EAAIpB,GAAOwB,EAAED,EAAI,CAAC,EAAGrB,CAAC,EACtBoB,EAAI,KAAK,IAAI,GAAIE,EAAED,EAAI,CAAC,EAAE,MAAM,EAAI,EACpCA,GAAI,IAGGC,EAAED,EAAI,CAAC,IAAM,KAAOC,EAAED,EAAI,CAAC,IAAM,KAC1CJ,EAAInB,GAAOwB,EAAED,CAAC,EAAGrB,CAAC,EAClBmB,EAAIrB,GAAOwB,EAAED,EAAI,CAAC,EAAG,CAAC,EACtBA,GAAI,GACKC,EAAED,EAAI,CAAC,IAAM,KAAOC,EAAED,EAAI,CAAC,IAAM,MAC1CL,EAAIlB,GAAOwB,EAAED,CAAC,EAAGrB,CAAC,EAClBiB,EAAInB,GAAOwB,EAAED,EAAI,CAAC,EAAGrB,CAAC,EACtBmB,EAAIrB,GAAOwB,EAAED,EAAI,CAAC,EAAG,CAAC,EACtBA,GAAI,GAGFC,EAAE,QAAUD,EAAG,CACjBlB,EAAIgB,EAAIC,EACRpB,EACAD,EAAImB,EAAIf,EAAIa,EAAII,EAAIH,EACpB,KACF,CAGF,CACF,QACE,MAAMhB,GAAiB,CAC3B,CAEF,GAAIE,IAAM,EACR,MAAMC,GAAe,EAGvBP,GAAE,EAAOG,EAAI,EAAI,GAAK,EACtBH,GAAE,EAAO,KAAK,IAAIE,CAAC,EACnBF,GAAE,EAAO,KAAK,IAAIM,CAAC,CACrB,EAEA,SAASyB,IAAOC,EAAGC,EAAGC,EAAG,CAGvB,QADIC,EAAI,EACDF,EAAI,EAAGD,EAAKA,EAAIA,EAAKE,EAAGD,IAAM,EAE/BA,EAAI,IACNE,EAAKA,EAAIH,EAAKE,GAGlB,OAAOC,CACT,CAGA,SAASC,IAASlC,EAAGI,EAAG,CAEtB,KAAOA,EAAI,IAAM,EACfA,GAAI,EAAG,CAGT,KAAOA,EAAI,IAAM,EACfA,GAAI,EAAG,CAGT,GAAIA,IAAM,EACR,MAAO,GAUT,QAHI+B,EAAM,GAAK/B,EACXgC,EAAI,EAEDD,IAAQ,EAAGC,IAGhB,GAFAD,EAAMA,EAAM,GAAK/B,EAEbgC,EAAIvC,IACN,MAAO,GAEX,OAAOuC,CACT,CAGA,SAASC,IAAWrC,EAAGI,EAAGkC,EAAK,CAK7B,QAHIC,EAAO,EACPC,EAAOX,IAAO,GAAIS,EAAKlC,CAAC,EAEnBgC,EAAI,EAAGA,EAAI,IAAKA,IAAK,CAG5B,GAAIG,IAASC,EACX,OAAOJ,EAETG,EAAOA,EAAO,GAAKnC,EACnBoC,EAAOA,EAAO,GAAKpC,CACrB,CACA,MAAO,EACT,CAEA,SAASK,GAAID,EAAGsB,EAAG,CAEjB,GAAI,CAACtB,EACH,OAAOsB,EACT,GAAI,CAACA,EACH,OAAOtB,EAET,OAAU,CAER,GADAA,GAAIsB,EACA,CAACtB,EACH,OAAOsB,EAET,GADAA,GAAItB,EACA,CAACsB,EACH,OAAOtB,CACX,CACF,CASe,SAARD,GAA0BC,EAAGsB,EAAG,CAIrC,GAFAhB,GAAMN,EAAGsB,CAAC,EAEN,gBAAgBvB,GAClBC,EAAIC,GAAIX,GAAE,EAAMA,GAAE,CAAI,EACtB,KAAK,EAAOA,GAAE,EACd,KAAK,EAAOA,GAAE,EAAOU,EACrB,KAAK,EAAOV,GAAE,EAAOU,MAErB,QAAOL,GAAYL,GAAE,EAAOA,GAAE,EAAMA,GAAE,CAAI,CAE9C,CAEA,IAAIO,GAAiB,UAAW,CAAE,OAAO,IAAI,MAAM,kBAAkB,CAAG,EACpEH,GAAmB,UAAW,CAAE,OAAO,IAAI,MAAM,kBAAkB,CAAG,EACtE0B,IAAsB,UAAW,CAAE,OAAO,IAAI,MAAM,4BAA4B,CAAG,EAEvFrB,GAAS,UAAY,CAEnB,EAAK,EACL,EAAK,EACL,EAAK,EAOL,IAAO,UAAW,CAEhB,OAAOJ,GAAY,KAAK,EAAM,KAAK,CAAI,CACzC,EAOA,IAAO,UAAW,CAEhB,OAAOA,GAAY,CAAC,KAAK,EAAO,KAAK,EAAM,KAAK,CAAI,CACtD,EAOA,IAAO,SAASK,EAAGsB,EAAG,CAEpB,OAAAhB,GAAMN,EAAGsB,CAAC,EACH3B,GACL,KAAK,EAAO,KAAK,EAAOL,GAAE,EAAOA,GAAE,EAAO,KAAK,EAAOA,GAAE,EACxD,KAAK,EAAOA,GAAE,CAChB,CACF,EAOA,IAAO,SAASU,EAAGsB,EAAG,CAEpB,OAAAhB,GAAMN,EAAGsB,CAAC,EACH3B,GACL,KAAK,EAAO,KAAK,EAAOL,GAAE,EAAOA,GAAE,EAAO,KAAK,EAAOA,GAAE,EACxD,KAAK,EAAOA,GAAE,CAChB,CACF,EAOA,IAAO,SAASU,EAAGsB,EAAG,CAEpB,OAAAhB,GAAMN,EAAGsB,CAAC,EACH3B,GACL,KAAK,EAAOL,GAAE,EAAO,KAAK,EAAOA,GAAE,EACnC,KAAK,EAAOA,GAAE,CAChB,CACF,EAOA,IAAO,SAASU,EAAGsB,EAAG,CAEpB,OAAAhB,GAAMN,EAAGsB,CAAC,EACH3B,GACL,KAAK,EAAOL,GAAE,EAAO,KAAK,EAAOA,GAAE,EACnC,KAAK,EAAOA,GAAE,CAChB,CACF,EAOA,MAAS,UAAW,CAClB,OAAOK,GAAY,KAAK,EAAO,KAAK,EAAM,KAAK,CAAI,CACrD,EAOA,IAAO,SAASK,EAAGsB,EAAG,CAEpB,GAAI,MAAM,KAAK,CAAI,GAAK,MAAM,KAAK,CAAI,EACrC,OAAO,IAAIvB,GAAS,GAAG,EAGzB,GAAIC,IAAM,OACR,OAAOL,GAAY,KAAK,EAAO,KAAK,EAAO,KAAK,EAAM,CAAC,EAIzD,GADAW,GAAMN,EAAGsB,CAAC,EACAhC,GAAE,IAAR,GAAsB,KAAK,IAAX,EAClB,MAAMO,GAAe,EAiBvB,OAAOF,GACL,KAAK,GAAQL,GAAE,EAAO,KAAK,IAASA,GAAE,EAAO,KAAK,GAClDA,GAAE,EAAO,KAAK,CAChB,CACF,EAOA,IAAO,SAASU,EAAGsB,EAAG,CAEpB,OAAAhB,GAAMN,EAAGsB,CAAC,EAIH3B,GAAYM,GAAIX,GAAE,EAAM,KAAK,CAAI,EAAIW,GAAIX,GAAE,EAAM,KAAK,CAAI,EAAGA,GAAE,EAAO,KAAK,CAAI,CACxF,EAOA,IAAO,SAASU,EAAGsB,EAAG,CAMpB,OAJAhB,GAAMN,EAAGsB,CAAC,EAINhC,GAAE,IAAS,GAAK,KAAK,IAAS,EACzBK,GAAY,EAAG,CAAC,EAElBA,GAAYL,GAAE,EAAO,KAAK,EAAMW,GAAIX,GAAE,EAAM,KAAK,CAAI,EAAIW,GAAIX,GAAE,EAAM,KAAK,CAAI,CAAC,CACxF,EAOA,KAAQ,SAAS2C,EAAQ,CAIvB,OAFAA,EAAS,KAAK,IAAI,GAAIA,GAAU,CAAC,EAE7B,MAAM,KAAK,CAAI,GAAK,MAAM,KAAK,CAAI,EAC9B,IAAIlC,GAAS,GAAG,EAElBJ,GAAY,KAAK,KAAKsC,EAAS,KAAK,EAAO,KAAK,EAAO,KAAK,CAAI,EAAGA,CAAM,CAClF,EAOA,MAAS,SAASA,EAAQ,CAIxB,OAFAA,EAAS,KAAK,IAAI,GAAIA,GAAU,CAAC,EAE7B,MAAM,KAAK,CAAI,GAAK,MAAM,KAAK,CAAI,EAC9B,IAAIlC,GAAS,GAAG,EAElBJ,GAAY,KAAK,MAAMsC,EAAS,KAAK,EAAO,KAAK,EAAO,KAAK,CAAI,EAAGA,CAAM,CACnF,EAOA,MAAS,SAASA,EAAQ,CAIxB,OAFAA,EAAS,KAAK,IAAI,GAAIA,GAAU,CAAC,EAE7B,MAAM,KAAK,CAAI,GAAK,MAAM,KAAK,CAAI,EAC9B,IAAIlC,GAAS,GAAG,EAElBJ,GAAY,KAAK,MAAMsC,EAAS,KAAK,EAAO,KAAK,EAAO,KAAK,CAAI,EAAGA,CAAM,CACnF,EAOA,QAAW,SAASjC,EAAGsB,EAAG,CAQxB,OAAAhB,GAAMN,EAAGsB,CAAC,EAEH3B,GAAY,KAAK,EAAO,KAAK,MAAM,KAAK,EAAOL,GAAE,GAAQ,KAAK,EAAOA,GAAE,EAAK,EAAIA,GAAE,EAAMA,GAAE,CAAI,CACvG,EAOA,QAAW,UAAW,CAEpB,OAAOK,GAAY,KAAK,EAAO,KAAK,EAAM,KAAK,CAAI,CACrD,EAOA,IAAO,SAASK,EAAGsB,EAAG,CAMpB,GAJAhB,GAAMN,EAAGsB,CAAC,EAINhC,GAAE,IAAS,EAEb,OAAIA,GAAE,EAAO,EACJK,GAAY,KAAK,IAAI,KAAK,EAAO,KAAK,EAAML,GAAE,CAAI,EAAG,KAAK,IAAI,KAAK,EAAMA,GAAE,CAAI,CAAC,EAEhFK,GAAY,KAAK,IAAI,KAAK,EAAO,KAAK,EAAML,GAAE,CAAI,EAAG,KAAK,IAAI,KAAK,EAAMA,GAAE,CAAI,CAAC,EAU3F,GAAI,KAAK,EAAO,EAAG,OAAO,KAG1B,IAAI4B,EAAIhB,GAAU,KAAK,CAAI,EACvBe,EAAIf,GAAU,KAAK,CAAI,EAGvBV,EAAI,EACJI,EAAI,EACR,QAASsC,KAAKhB,EACZ,GAAIgB,IAAM,IACV,IAAIA,IAAM,IAAK,CACb1C,EAAI,EACJ,KACF,CAGA,GAFA0B,EAAEgB,CAAC,GAAI5C,GAAE,EAEL4B,EAAEgB,CAAC,EAAI5C,GAAE,IAAS,EACpB4B,EAAEgB,CAAC,GAAI5C,GAAE,MACJ,QAAO,KACdE,GAAI,KAAK,IAAI0C,EAAGhB,EAAEgB,CAAC,CAAC,EAGtB,QAASA,KAAKjB,EACZ,GAAIiB,IAAM,IAGV,IAFAjB,EAAEiB,CAAC,GAAI5C,GAAE,EAEL2B,EAAEiB,CAAC,EAAI5C,GAAE,IAAS,EACpB2B,EAAEiB,CAAC,GAAI5C,GAAE,MACJ,QAAO,KACdM,GAAI,KAAK,IAAIsC,EAAGjB,EAAEiB,CAAC,CAAC,EAGtB,OAAI5C,GAAE,EAAO,EACJK,GAAYC,EAAGJ,CAAC,EAElBG,GAAYH,EAAGI,CAAC,CACzB,EAOA,OAAU,SAASI,EAAGsB,EAAG,CAEvB,OAAAhB,GAAMN,EAAGsB,CAAC,EACH,KAAK,EAAO,KAAK,EAAOhC,GAAE,IAASA,GAAE,EAAOA,GAAE,EAAO,KAAK,CACnE,EAOA,QAAW,SAASU,EAAGsB,EAAG,CAExBhB,GAAMN,EAAGsB,CAAC,EACV,IAAIM,EAAK,KAAK,EAAO,KAAK,EAAOtC,GAAE,EAAOA,GAAE,EAAOA,GAAE,EAAO,KAAK,EACjE,OAAQ,EAAIsC,IAAMA,EAAI,EACxB,EAEA,SAAY,SAASO,EAAK,CAExB,GAAI,MAAM,KAAK,CAAI,GAAK,MAAM,KAAK,CAAI,EACrC,OAAO,KAGTA,EAAMA,GAAO,KAKb,QAHIC,EAAU,KAAK,IAAO,EACtBC,EAAOD,EAAQ,YAAe,EAEzB/B,EAAI,EAAGA,EAAIgC,EAAK,OAAQhC,IAAK,CAGpC,QADIZ,EAAIE,GAAY0C,EAAKhC,EAAI,CAAC,EAAG,CAAC,EACzB6B,EAAI7B,EAAI,EAAG6B,GAAK,EAAGA,IAC1BzC,EAAIA,EAAE,QAAW,EAAE,IAAO4C,EAAKH,CAAC,CAAC,EAGnC,GAAI,KAAK,IAAIzC,EAAE,IAAO2C,CAAO,EAAE,QAAQ,CAAC,EAAID,EAC1C,OAAO1C,EAAE,IAAO,KAAK,CAAI,CAE7B,CACA,OAAO,IACT,EAOA,UAAa,SAASO,EAAGsB,EAAG,CAE1B,OAAAhB,GAAMN,EAAGsB,CAAC,EACH,EAAE,EAAEhC,GAAE,EAAO,KAAK,IAAW,KAAK,EAAOA,GAAE,GAASA,GAAE,EAAO,KAAK,GAC3E,EAOA,QAAW,UAAW,CAEpB,OAAO,KAAK,EAAO,KAAK,EAAO,KAAK,CACtC,EAOA,WAAc,SAASgD,EAAc,CAEnC,IAAIC,EAAOC,EAAM,GACb,EAAI,KAAK,EACT5C,EAAI,KAAK,EACb,OAAI,KAAK,EAAO,IACd4C,GAAM,KAGJ5C,IAAM,EACR4C,GAAM,GAGFF,IAAiBC,EAAQ,KAAK,MAAM,EAAI3C,CAAC,GAAK,IAChD4C,GAAMD,EACNC,GAAM,IACN,GAAI5C,GAGN4C,GAAM,EACNA,GAAM,IACNA,GAAM5C,GAED4C,CACT,EAOA,QAAW,SAASF,EAAc,CAEhC,IAAIC,EAAOC,EAAM,GACb,EAAI,KAAK,EACT5C,EAAI,KAAK,EACb,OAAI,KAAK,EAAO,IACd4C,GAAM,KAGJ5C,IAAM,EACR4C,GAAM,GAGFF,IAAiBC,EAAQ,KAAK,MAAM,EAAI3C,CAAC,GAAK,IAChD4C,GAAMD,EACN,GAAI3C,GAGN4C,GAAM,UACNA,GAAM,EACNA,GAAM,KACNA,GAAM5C,EACN4C,GAAM,KAEDA,CACT,EAOA,YAAe,UAAW,CAExB,IAAIZ,EACA5B,EAAI,KAAK,EACTsB,EAAI,KAAK,EACTmB,EAAM,CAAC,EAEX,GAAI,MAAMzC,CAAC,GAAK,MAAMsB,CAAC,EACrB,OAAOmB,EAGT,GACEA,EAAI,KAAK,KAAK,MAAMzC,EAAIsB,CAAC,CAAC,EAC1BM,EAAI5B,EAAIsB,EACRtB,EAAIsB,EACJA,EAAIM,QACG5B,IAAM,GAEf,OAAOyC,CACT,EAOA,SAAY,SAASC,EAAK,CAExB,IAAIxB,EAAI,KAAK,EACTD,EAAI,KAAK,EAEb,GAAI,MAAMC,CAAC,GAAK,MAAMD,CAAC,EACrB,MAAO,MAGTyB,EAAMA,GAAO,GAEb,IAAIC,EAASjB,IAASR,EAAGD,CAAC,EACtB2B,EAASf,IAAWX,EAAGD,EAAG0B,CAAM,EAEhCH,EAAM,KAAK,EAAO,EAAI,IAAM,GAUhC,GARAA,GAAMtB,EAAID,EAAI,EAEdC,GAAID,EACJC,GAAI,GAEAA,IACFsB,GAAM,KAEJG,EAAQ,CAEV,QAAStC,EAAIuC,EAAQvC,KACnBmC,GAAMtB,EAAID,EAAI,EACdC,GAAID,EACJC,GAAI,GAENsB,GAAM,IACN,QAASnC,EAAIsC,EAAQtC,KACnBmC,GAAMtB,EAAID,EAAI,EACdC,GAAID,EACJC,GAAI,GAENsB,GAAM,GACR,KACE,SAASnC,EAAIqC,EAAKxB,GAAKb,KACrBmC,GAAMtB,EAAID,EAAI,EACdC,GAAID,EACJC,GAAI,GAGR,OAAOsB,CACT,CACF,ECx3BA,IAAIK,IAAO,WACPC,IAAe,CAAC,EACTC,GAAqCC,EAAQH,IAAMC,IAAc,KAI1E,OAAO,eAAeG,GAAU,OAAQ,CACtC,MAAO,UACT,CAAC,EACDA,GAAS,UAAU,YAAcA,GACjCA,GAAS,UAAU,KAAO,WAC1BA,GAAS,UAAU,WAAa,GAOhCA,GAAS,UAAU,OAAS,UAAY,CACtC,MAAO,CACL,OAAQ,WACR,EAAG,KAAK,EAAI,KAAK,EACjB,EAAG,KAAK,CACV,CACF,EAQAA,GAAS,SAAW,SAAUC,EAAM,CAClC,OAAO,IAAID,GAASC,CAAI,CAC1B,EACOD,IACN,CACD,QAAS,EACX,CAAC,ECrCD,IAAIE,IAAO,QACPC,IAAe,CAAC,EACTC,GAAkCC,EAAQH,IAAMC,IAAc,IAAM,CAgC7E,SAASG,EAAMC,EAAOC,EAAKC,EAAM,CAC/B,GAAI,EAAE,gBAAgBH,GACpB,MAAM,IAAI,YAAY,kDAAkD,EAE1E,IAAII,EAAWH,GAAU,KACrBI,EAASH,GAAQ,KACjBI,EAAUH,GAAS,KACvB,GAAIC,GACF,GAAIG,GAAYN,CAAK,EACnBA,EAAQA,EAAM,SAAS,UACd,OAAOA,GAAU,SAC1B,MAAM,IAAI,UAAU,kCAAkC,EAG1D,GAAII,GACF,GAAIE,GAAYL,CAAG,EACjBA,EAAMA,EAAI,SAAS,UACV,OAAOA,GAAQ,SACxB,MAAM,IAAI,UAAU,gCAAgC,EAGxD,GAAII,GACF,GAAIC,GAAYJ,CAAI,EAClBA,EAAOA,EAAK,SAAS,UACZ,OAAOA,GAAS,SACzB,MAAM,IAAI,UAAU,iCAAiC,EAGzD,KAAK,MAAQC,EAAW,WAAWH,CAAK,EAAI,EAC5C,KAAK,IAAMI,EAAS,WAAWH,CAAG,EAAI,EACtC,KAAK,KAAOI,EAAU,WAAWH,CAAI,EAAI,CAC3C,CAKA,OAAAH,EAAM,UAAU,KAAO,QACvBA,EAAM,UAAU,QAAU,GAW1BA,EAAM,MAAQ,SAAUQ,EAAK,CAC3B,GAAI,OAAOA,GAAQ,SACjB,OAAO,KAET,IAAIC,EAAOD,EAAI,MAAM,GAAG,EACpBE,EAAOD,EAAK,IAAI,SAAUE,EAAK,CACjC,OAAO,WAAWA,CAAG,CACvB,CAAC,EACGC,EAAUF,EAAK,KAAK,SAAUG,EAAK,CACrC,OAAO,MAAMA,CAAG,CAClB,CAAC,EACD,GAAID,EACF,OAAO,KAET,OAAQF,EAAK,OAAQ,CACnB,IAAK,GACH,OAAO,IAAIV,EAAMU,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,EACnC,IAAK,GACH,OAAO,IAAIV,EAAMU,EAAK,CAAC,EAAGA,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,EAC5C,QACE,OAAO,IACX,CACF,EAMAV,EAAM,UAAU,MAAQ,UAAY,CAClC,OAAO,IAAIA,EAAM,KAAK,MAAO,KAAK,IAAK,KAAK,IAAI,CAClD,EAQAA,EAAM,UAAU,KAAO,UAAY,CACjC,IAAIc,EAAM,EACNb,EAAQ,KAAK,MACbE,EAAO,KAAK,KACZD,EAAM,KAAK,IACXa,EAAOb,EAAMD,EACjB,OAAIe,GAAKb,CAAI,IAAMa,GAAKD,CAAI,EAC1BD,EAAM,KAAK,KAAKC,EAAOZ,CAAI,EAClBY,IAAS,IAClBD,EAAM,GAEJ,MAAMA,CAAG,IACXA,EAAM,GAED,CAACA,CAAG,CACb,EAOAd,EAAM,UAAU,IAAM,UAAY,CAChC,IAAIiB,EAAO,KAAK,KAAK,EAAE,CAAC,EACxB,GAAIA,EAAO,EACT,OAAI,KAAK,KAAO,EAEP,KAAK,MAGL,KAAK,OAASA,EAAO,GAAK,KAAK,IAK5C,EAOAjB,EAAM,UAAU,IAAM,UAAY,CAChC,IAAIiB,EAAO,KAAK,KAAK,EAAE,CAAC,EACxB,GAAIA,EAAO,EACT,OAAI,KAAK,KAAO,EAEP,KAAK,OAASA,EAAO,GAAK,KAAK,KAG/B,KAAK,KAKlB,EASAjB,EAAM,UAAU,QAAU,SAAUkB,EAAU,CAC5C,IAAIC,EAAI,KAAK,MACThB,EAAO,KAAK,KACZD,EAAM,KAAK,IACXkB,EAAI,EACR,GAAIjB,EAAO,EACT,KAAOgB,EAAIjB,GACTgB,EAASC,EAAG,CAACC,CAAC,EAAG,IAAI,EACrBD,GAAKhB,EACLiB,YAEOjB,EAAO,EAChB,KAAOgB,EAAIjB,GACTgB,EAASC,EAAG,CAACC,CAAC,EAAG,IAAI,EACrBD,GAAKhB,EACLiB,GAGN,EAWApB,EAAM,UAAU,IAAM,SAAUkB,EAAU,CACxC,IAAIG,EAAQ,CAAC,EACb,YAAK,QAAQ,SAAUC,EAAOC,EAAOC,EAAK,CACxCH,EAAME,EAAM,CAAC,CAAC,EAAIL,EAASI,EAAOC,EAAOC,CAAG,CAC9C,CAAC,EACMH,CACT,EAOArB,EAAM,UAAU,QAAU,UAAY,CACpC,IAAIqB,EAAQ,CAAC,EACb,YAAK,QAAQ,SAAUC,EAAOC,EAAO,CACnCF,EAAME,EAAM,CAAC,CAAC,EAAID,CACpB,CAAC,EACMD,CACT,EAOArB,EAAM,UAAU,QAAU,UAAY,CAEpC,OAAO,KAAK,QAAQ,CACtB,EAYAA,EAAM,UAAU,OAAS,SAAUyB,EAAS,CAC1C,IAAIjB,EAAMkB,GAAO,KAAK,MAAOD,CAAO,EACpC,OAAI,KAAK,OAAS,IAChBjB,GAAO,IAAMkB,GAAO,KAAK,KAAMD,CAAO,GAExCjB,GAAO,IAAMkB,GAAO,KAAK,IAAKD,CAAO,EAC9BjB,CACT,EAOAR,EAAM,UAAU,SAAW,UAAY,CACrC,OAAO,KAAK,OAAO,CACrB,EAQAA,EAAM,UAAU,OAAS,UAAY,CACnC,MAAO,CACL,OAAQ,QACR,MAAO,KAAK,MACZ,IAAK,KAAK,IACV,KAAM,KAAK,IACb,CACF,EASAA,EAAM,SAAW,SAAU2B,EAAM,CAC/B,OAAO,IAAI3B,EAAM2B,EAAK,MAAOA,EAAK,IAAKA,EAAK,IAAI,CAClD,EACO3B,CACT,EAAG,CACD,QAAS,EACX,CAAC,EC9SD,IAAI4B,IAAO,SACPC,IAAe,CAAC,EACTC,GAAmCC,EAAQH,IAAMC,IAAc,IAAM,CAuB9E,SAASG,GAAS,CAChB,GAAI,EAAE,gBAAgBA,GACpB,MAAM,IAAI,YAAY,kDAAkD,CAE5E,CAKA,OAAAA,EAAO,UAAU,KAAO,SACxBA,EAAO,UAAU,SAAW,GAU5BA,EAAO,UAAU,QAAU,UAAY,CAErC,MAAM,IAAI,MAAM,6CAA6C,CAC/D,EAUAA,EAAO,UAAU,SAAW,UAAY,CAEtC,MAAM,IAAI,MAAM,8CAA8C,CAChE,EAOAA,EAAO,UAAU,OAAS,SAAUC,EAAMC,EAAU,CAClD,MAAM,IAAI,MAAM,4CAA4C,CAC9D,EAeAF,EAAO,UAAU,OAAS,SAAUG,EAAOC,EAAaC,EAAc,CAEpE,MAAM,IAAI,MAAM,4CAA4C,CAC9D,EAOAL,EAAO,UAAU,IAAM,SAAUG,EAAO,CAEtC,MAAM,IAAI,MAAM,yCAAyC,CAC3D,EAWAH,EAAO,UAAU,IAAM,SAAUG,EAAOG,EAAOD,EAAc,CAE3D,MAAM,IAAI,MAAM,yCAAyC,CAC3D,EAcAL,EAAO,UAAU,OAAS,SAAUO,EAAMF,EAAc,CAEtD,MAAM,IAAI,MAAM,4CAA4C,CAC9D,EAWAL,EAAO,UAAU,QAAU,SAAUO,EAAMF,EAAc,CAEvD,MAAM,IAAI,MAAM,6CAA6C,CAC/D,EAMAL,EAAO,UAAU,MAAQ,UAAY,CAEnC,MAAM,IAAI,MAAM,2CAA2C,CAC7D,EAMAA,EAAO,UAAU,KAAO,UAAY,CAElC,MAAM,IAAI,MAAM,0CAA0C,CAC5D,EAYAA,EAAO,UAAU,IAAM,SAAUQ,EAAUC,EAAW,CAEpD,MAAM,IAAI,MAAM,yCAAyC,CAC3D,EAQAT,EAAO,UAAU,QAAU,SAAUQ,EAAU,CAE7C,MAAM,IAAI,MAAM,6CAA6C,CAC/D,EAMAR,EAAO,UAAU,OAAO,QAAQ,EAAI,UAAY,CAE9C,MAAM,IAAI,MAAM,mCAAmC,CACrD,EAMAA,EAAO,UAAU,QAAU,UAAY,CAErC,MAAM,IAAI,MAAM,6CAA6C,CAC/D,EAMAA,EAAO,UAAU,QAAU,UAAY,CAErC,MAAM,IAAI,MAAM,6CAA6C,CAC/D,EAUAA,EAAO,UAAU,OAAS,SAAUU,EAAS,CAE3C,MAAM,IAAI,MAAM,4CAA4C,CAC9D,EAMAV,EAAO,UAAU,SAAW,UAAY,CAEtC,MAAM,IAAI,MAAM,8CAA8C,CAChE,EACOA,CACT,EAAG,CACD,QAAS,EACX,CAAC,ECvOD,SAASW,GAAsBC,EAAGC,EAAMC,EAAM,CAC5C,IAAIC,EAAgBH,EAAE,YAClBI,EAAO,IAAID,EAAc,CAAC,EAC1BE,EAAS,GACb,GAAIH,EAAM,CACR,GAAIA,EAAO,EACT,MAAM,IAAI,MAAM,gCAAgC,EAElD,GAAI,CAACI,GAAUJ,CAAI,EACjB,MAAM,IAAI,MAAM,yBAAyB,EAE3C,GAAIF,EAAE,YAAYI,EAAK,IAAIF,EAAO,CAAC,EAAE,IAAI,CAAC,CAAC,GAAKF,EAAE,SAASI,EAAK,IAAIF,EAAO,CAAC,EAAE,IAAI,EAAE,CAAC,EACnF,MAAM,IAAI,MAAM,8BAA8B,OAAOA,EAAO,EAAG,MAAM,EAAE,OAAOA,EAAO,EAAG,KAAK,CAAC,EAEhG,GAAI,CAACF,EAAE,UAAU,EACf,MAAM,IAAI,MAAM,0BAA0B,EAExCA,EAAE,SAAS,CAAC,IACdA,EAAIA,EAAE,IAAII,EAAK,IAAIF,CAAI,CAAC,GAE1BG,EAAS,IAAI,OAAOH,CAAI,CAC1B,CACA,OAAQD,EAAM,CACZ,IAAK,GACH,MAAO,GAAG,OAAOD,EAAE,SAAS,CAAC,EAAE,OAAOK,CAAM,EAC9C,IAAK,GACH,MAAO,GAAG,OAAOL,EAAE,QAAQ,CAAC,EAAE,OAAOK,CAAM,EAC7C,IAAK,IACH,MAAO,GAAG,OAAOL,EAAE,cAAc,CAAC,EAAE,OAAOK,CAAM,EACnD,QACE,MAAM,IAAI,MAAM,QAAQ,OAAOJ,EAAM,iBAAiB,CAAC,CAC3D,CACF,CAmFO,SAASM,GAAOC,EAAOC,EAAS,CACrC,GAAI,OAAOA,GAAY,WAErB,OAAOA,EAAQD,CAAK,EAItB,GAAI,CAACA,EAAM,SAAS,EAClB,OAAOA,EAAM,MAAM,EAAI,MAAQA,EAAM,GAAG,CAAC,EAAI,WAAa,YAE5D,GAAI,CACF,SAAAE,EACA,UAAAC,EACA,SAAAC,CACF,EAAIC,GAAuBJ,CAAO,EAGlC,OAAQC,EAAU,CAChB,IAAK,QACH,OAAOI,IAAQN,EAAOG,CAAS,EACjC,IAAK,cACH,OAAOI,GAAcP,EAAOG,CAAS,EACvC,IAAK,cACH,OAAOK,IAAcR,EAAOG,CAAS,EACvC,IAAK,MACH,OAAOZ,GAAsBS,EAAO,EAAGI,CAAQ,EACjD,IAAK,MACH,OAAOb,GAAsBS,EAAO,EAAGI,CAAQ,EACjD,IAAK,MACH,OAAOb,GAAsBS,EAAO,GAAII,CAAQ,EAClD,IAAK,OACH,CAGE,IAAIK,EAAWC,GAAqET,GAAQ,SAAU,EAAE,EACpGU,EAAWD,GAAqET,GAAQ,SAAU,CAAC,EAGvG,GAAID,EAAM,OAAO,EAAG,MAAO,IAG3B,IAAIY,EACAC,EAAUb,EAAM,oBAAoBG,CAAS,EAC7CW,EAAMD,EAAQ,EAClB,OAAIC,GAAOL,GAAYK,EAAMH,EAE3BC,EAAMC,EAAQ,QAAQ,EAGtBD,EAAML,GAAcP,EAAOG,CAAS,EAI/BS,EAAI,QAAQ,sBAAuB,UAAY,CACpD,IAAIG,EAAS,UAAU,CAAC,EACpBC,EAAI,UAAU,CAAC,EACnB,OAAOD,IAAW,IAAMA,EAASC,EAAIA,CACvC,CAAC,CACH,CACF,QACE,MAAM,IAAI,MAAM,qBAAuBd,EAAW,kEAAuE,CAC7H,CACF,CAOO,SAASM,IAAcR,EAAOG,EAAW,CAE9C,IAAIa,EAAIhB,EAAM,EACViB,EAASD,EAAI,IAAM,EAAIA,EAAIA,EAAI,EAAIA,EAAI,EAAIA,EAAI,EAAIA,EAAIA,EAAI,EAG3DE,EAAkBlB,EAAM,IAAI,KAAK,IAAI,GAAI,CAACiB,CAAM,CAAC,EACjDE,EAAWD,EAAgB,YAAYf,CAAS,EACpD,GAAIgB,EAAS,SAAS,GAAG,EAAG,CAC1B,IAAIC,EAAYpB,EAAM,YACtBmB,EAAW,IAAIC,EAAUD,CAAQ,EAAE,QAAQ,CAC7C,CACA,OAAOA,EAAW,KAAOH,GAAK,EAAI,IAAM,IAAMC,EAAO,SAAS,CAChE,CAUO,SAASV,GAAcP,EAAOG,EAAW,CAC9C,OAAIA,IAAc,OACTH,EAAM,cAAcG,EAAY,CAAC,EAEjCH,EAAM,cAAc,CAE/B,CAQO,SAASM,IAAQN,EAAOG,EAAW,CACxC,OAAOH,EAAM,QAAQG,CAAS,CAChC,CACA,SAASO,GAAmBV,EAAOqB,EAAc,CAC/C,OAAIC,GAAStB,CAAK,EACTA,EACEuB,GAAYvB,CAAK,EACnBA,EAAM,SAAS,EAEfqB,CAEX,CCzOO,SAASG,GAASC,EAAMC,EAAQ,CACrC,IAAIC,EAAQF,EAAK,OAASC,EAAO,OAC7BE,EAAMH,EAAK,OACf,OAAOA,EAAK,UAAUE,EAAOC,CAAG,IAAMF,CACxC,CAwCO,SAASG,GAAOC,EAAOC,EAAS,CACrC,IAAIC,EAASC,IAAQH,EAAOC,CAAO,EACnC,OAAIA,GAAW,OAAOA,GAAY,UAAY,aAAcA,GAAWC,EAAO,OAASD,EAAQ,SACtFC,EAAO,UAAU,EAAGD,EAAQ,SAAW,CAAC,EAAI,MAE9CC,CACT,CACA,SAASC,IAAQH,EAAOC,EAAS,CAC/B,GAAI,OAAOD,GAAU,SACnB,OAAOD,GAAaC,EAAOC,CAAO,EAEpC,GAAIG,GAAYJ,CAAK,EACnB,OAAOD,GAAgBC,EAAOC,CAAO,EAKvC,GAAII,IAAkBL,CAAK,EACzB,MAAI,CAACC,GAAWA,EAAQ,WAAa,UAE5BD,EAAM,EAAIA,EAAM,EAAI,IAAMA,EAAM,EAGhCA,EAAM,SAAS,EAG1B,GAAI,MAAM,QAAQA,CAAK,EACrB,OAAOM,GAAYN,EAAOC,CAAO,EAEnC,GAAIM,GAASP,CAAK,EAChB,OAAOQ,GAAUR,CAAK,EAExB,GAAI,OAAOA,GAAU,WACnB,OAAOA,EAAM,OAAS,OAAOA,EAAM,MAAM,EAAI,WAE/C,GAAIA,GAAS,OAAOA,GAAU,SAAU,CACtC,GAAI,OAAOA,EAAM,QAAW,WAC1B,OAAOA,EAAM,OAAOC,CAAO,EACtB,GAAID,GAASA,EAAM,SAASC,CAAO,IAAM,CAAC,EAAE,SAAS,EAE1D,OAAOD,EAAM,SAASC,CAAO,EAE7B,IAAIQ,EAAU,OAAO,KAAKT,CAAK,EAAE,IAAIU,GAC5BF,GAAUE,CAAG,EAAI,KAAOX,GAAOC,EAAMU,CAAG,EAAGT,CAAO,CAC1D,EACD,MAAO,IAAMQ,EAAQ,KAAK,IAAI,EAAI,GAEtC,CACA,OAAO,OAAOT,CAAK,CACrB,CAQO,SAASQ,GAAUR,EAAO,CAI/B,QAHIL,EAAO,OAAOK,CAAK,EACnBW,EAAU,GACVC,EAAI,EACDA,EAAIjB,EAAK,QAAQ,CACtB,IAAIkB,EAAIlB,EAAK,OAAOiB,CAAC,EACrBD,GAAWE,KAAKC,GAAoBA,GAAkBD,CAAC,EAAIA,EAC3DD,GACF,CACA,MAAO,IAAMD,EAAU,GACzB,CACA,IAAIG,GAAoB,CACtB,IAAK,MACL,KAAM,OACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,IAAM,KACR,EAOO,SAASC,GAAOf,EAAO,CAC5B,IAAIL,EAAO,OAAOK,CAAK,EACvB,OAAAL,EAAOA,EAAK,QAAQ,KAAM,OAAO,EAAE,QAAQ,KAAM,QAAQ,EAAE,QAAQ,KAAM,OAAO,EAAE,QAAQ,KAAM,MAAM,EAAE,QAAQ,KAAM,MAAM,EACrHA,CACT,CAYA,SAASW,GAAYU,EAAOf,EAAS,CACnC,GAAI,MAAM,QAAQe,CAAK,EAAG,CAGxB,QAFIC,EAAM,IACNC,EAAMF,EAAM,OACP,EAAI,EAAG,EAAIE,EAAK,IACnB,IAAM,IACRD,GAAO,MAETA,GAAOX,GAAYU,EAAM,CAAC,EAAGf,CAAO,EAEtC,OAAAgB,GAAO,IACAA,CACT,KACE,QAAOlB,GAAOiB,EAAOf,CAAO,CAEhC,CAOA,SAASI,IAAkBL,EAAO,CAChC,OAAOA,GAAS,OAAOA,GAAU,UAAY,OAAOA,EAAM,GAAM,UAAY,OAAOA,EAAM,GAAM,UAAY,OAAOA,EAAM,GAAM,UAAY,EAC5I,CAQO,SAASmB,GAAYC,EAAGC,EAAG,CAEhC,GAAI,CAACd,GAASa,CAAC,EACb,MAAM,IAAI,UAAU,qGAA4GE,GAAOF,CAAC,EAAI,aAAa,EAE3J,GAAI,CAACb,GAASc,CAAC,EACb,MAAM,IAAI,UAAU,qGAA4GC,GAAOD,CAAC,EAAI,aAAa,EAE3J,OAAOD,IAAMC,EAAI,EAAID,EAAIC,EAAI,EAAI,EACnC,CCxLO,SAASE,GAAeC,EAAQC,EAAUC,EAAU,CACzD,GAAI,EAAE,gBAAgBH,IACpB,MAAM,IAAI,YAAY,kDAAkD,EAE1E,KAAK,OAASC,EACd,KAAK,SAAWC,EAChB,KAAK,SAAWC,EAChB,KAAK,QAAU,wBAA0B,MAAM,QAAQF,CAAM,EAAI,IAAMA,EAAO,KAAK,IAAI,EAAI,IAAMA,GAAU,KAAO,KAAK,UAAY,MAAQ,KAAO,MAAM,QAAQC,CAAQ,EAAI,IAAMA,EAAS,KAAK,IAAI,EAAI,IAAMA,GAAY,IAC1N,KAAK,MAAQ,IAAI,MAAM,EAAE,KAC3B,CACAF,GAAe,UAAY,IAAI,WAC/BA,GAAe,UAAU,YAAc,WACvCA,GAAe,UAAU,KAAO,iBAChCA,GAAe,UAAU,iBAAmB,GCZrC,SAASI,GAAWC,EAAOC,EAAKC,EAAK,CAC1C,GAAI,EAAE,gBAAgBH,IACpB,MAAM,IAAI,YAAY,kDAAkD,EAE1E,KAAK,MAAQC,EACT,UAAU,OAAS,GACrB,KAAK,IAAM,EACX,KAAK,IAAMC,IAEX,KAAK,IAAMA,EACX,KAAK,IAAMC,GAET,KAAK,MAAQ,QAAa,KAAK,MAAQ,KAAK,IAC9C,KAAK,QAAU,uBAAyB,KAAK,MAAQ,MAAQ,KAAK,IAAM,IAC/D,KAAK,MAAQ,QAAa,KAAK,OAAS,KAAK,IACtD,KAAK,QAAU,uBAAyB,KAAK,MAAQ,OAAS,KAAK,IAAM,GAAK,IAE9E,KAAK,QAAU,uBAAyB,KAAK,MAAQ,IAEvD,KAAK,MAAQ,IAAI,MAAM,EAAE,KAC3B,CACAH,GAAW,UAAY,IAAI,WAC3BA,GAAW,UAAU,YAAc,WACnCA,GAAW,UAAU,KAAO,aAC5BA,GAAW,UAAU,aAAe,GCnB7B,SAASI,GAAUC,EAAG,CAE3B,QADIC,EAAI,CAAC,EACF,MAAM,QAAQD,CAAC,GACpBC,EAAE,KAAKD,EAAE,MAAM,EACfA,EAAIA,EAAE,CAAC,EAET,OAAOC,CACT,CAWA,SAASC,GAAUC,EAAOC,EAAMC,EAAK,CACnC,IAAIC,EACAC,EAAMJ,EAAM,OAChB,GAAII,IAAQH,EAAKC,CAAG,EAClB,MAAM,IAAIG,GAAeD,EAAKH,EAAKC,CAAG,CAAC,EAEzC,GAAIA,EAAMD,EAAK,OAAS,EAAG,CAEzB,IAAIK,EAAUJ,EAAM,EACpB,IAAKC,EAAI,EAAGA,EAAIC,EAAKD,IAAK,CACxB,IAAII,EAAQP,EAAMG,CAAC,EACnB,GAAI,CAAC,MAAM,QAAQI,CAAK,EACtB,MAAM,IAAIF,GAAeJ,EAAK,OAAS,EAAGA,EAAK,OAAQ,GAAG,EAE5DF,GAAUC,EAAMG,CAAC,EAAGF,EAAMK,CAAO,CACnC,CACF,KAEE,KAAKH,EAAI,EAAGA,EAAIC,EAAKD,IACnB,GAAI,MAAM,QAAQH,EAAMG,CAAC,CAAC,EACxB,MAAM,IAAIE,GAAeJ,EAAK,OAAS,EAAGA,EAAK,OAAQ,GAAG,CAIlE,CASO,SAASO,GAASR,EAAOC,EAAM,CACpC,IAAIQ,EAAWR,EAAK,SAAW,EAC/B,GAAIQ,GAEF,GAAI,MAAM,QAAQT,CAAK,EACrB,MAAM,IAAIK,GAAeL,EAAM,OAAQ,CAAC,OAI1CD,GAAUC,EAAOC,EAAM,CAAC,CAE5B,CAQO,SAASS,GAAwBC,EAAOC,EAAO,CACpD,IAAIC,EAAYF,EAAM,SAAWA,EAAM,MAAQf,GAAUe,CAAK,EAC1DG,EAAaF,EAAM,YAEvBE,EAAW,QAAQ,CAACC,EAAWZ,IAAM,CACnC,GAAIY,IAAc,MAAQA,IAAcF,EAAUV,CAAC,EACjD,MAAM,IAAIE,GAAeU,EAAWF,EAAUV,CAAC,CAAC,CAEpD,CAAC,CACH,CAQO,SAASa,GAAcJ,EAAOK,EAAQ,CAC3C,GAAIL,IAAU,OAAW,CACvB,GAAI,CAACM,GAASN,CAAK,GAAK,CAACO,GAAUP,CAAK,EACtC,MAAM,IAAI,UAAU,oCAAsCA,EAAQ,GAAG,EAEvE,GAAIA,EAAQ,GAAK,OAAOK,GAAW,UAAYL,GAASK,EACtD,MAAM,IAAIG,GAAWR,EAAOK,CAAM,CAEtC,CACF,CAMO,SAASI,GAAaT,EAAO,CAClC,QAAST,EAAI,EAAGA,EAAIS,EAAM,YAAY,OAAQ,EAAET,EAAG,CACjD,IAAImB,EAAYV,EAAM,YAAYT,CAAC,EACnC,GAAImB,EAAU,OAASC,GAAQD,EAAU,KAAK,GAC5C,GAAIA,EAAU,MAAM,CAAC,IAAM,EACzB,MAAO,WAEAA,EAAU,SACnB,GAAIA,EAAU,QAAUA,EAAU,IAChC,MAAO,WAEAE,GAASF,CAAS,GACvBA,EAAU,SAAW,EACvB,MAAO,EAGb,CACA,MAAO,EACT,CAYO,SAASG,GAAOzB,EAAOC,EAAMyB,EAAc,CAEhD,GAAI,CAAC,MAAM,QAAQzB,CAAI,EACrB,MAAM,IAAI,UAAU,gBAAgB,EAEtC,GAAIA,EAAK,SAAW,EAClB,MAAM,IAAI,MAAM,qCAAqC,EAIvDA,EAAK,QAAQ,SAAUU,EAAO,CAC5B,GAAI,CAACO,GAASP,CAAK,GAAK,CAACQ,GAAUR,CAAK,GAAKA,EAAQ,EACnD,MAAM,IAAI,UAAU,uDAA8DgB,GAAO1B,CAAI,EAAI,GAAG,CAExG,CAAC,GAGGiB,GAASlB,CAAK,GAAK4B,GAAY5B,CAAK,KACtCA,EAAQ,CAACA,CAAK,GAIhB,IAAI6B,EAAgBH,IAAiB,OAAYA,EAAe,EAChE,OAAAI,GAAQ9B,EAAOC,EAAM,EAAG4B,CAAa,EAC9B7B,CACT,CAWA,SAAS8B,GAAQ9B,EAAOC,EAAMC,EAAKwB,EAAc,CAC/C,IAAI,EACAK,EACAC,EAAShC,EAAM,OACfiC,EAAShC,EAAKC,CAAG,EACjBgC,EAAS,KAAK,IAAIF,EAAQC,CAAM,EAIpC,GADAjC,EAAM,OAASiC,EACX/B,EAAMD,EAAK,OAAS,EAAG,CAEzB,IAAIK,EAAUJ,EAAM,EAGpB,IAAK,EAAI,EAAG,EAAIgC,EAAQ,IAEtBH,EAAO/B,EAAM,CAAC,EACT,MAAM,QAAQ+B,CAAI,IACrBA,EAAO,CAACA,CAAI,EACZ/B,EAAM,CAAC,EAAI+B,GAEbD,GAAQC,EAAM9B,EAAMK,EAASoB,CAAY,EAI3C,IAAK,EAAIQ,EAAQ,EAAID,EAAQ,IAE3BF,EAAO,CAAC,EACR/B,EAAM,CAAC,EAAI+B,EAGXD,GAAQC,EAAM9B,EAAMK,EAASoB,CAAY,CAE7C,KAAO,CAIL,IAAK,EAAI,EAAG,EAAIQ,EAAQ,IACtB,KAAO,MAAM,QAAQlC,EAAM,CAAC,CAAC,GAC3BA,EAAM,CAAC,EAAIA,EAAM,CAAC,EAAE,CAAC,EAKzB,IAAK,EAAIkC,EAAQ,EAAID,EAAQ,IAC3BjC,EAAM,CAAC,EAAI0B,CAEf,CACF,CAYO,SAASS,GAAQnC,EAAOoC,EAAO,CACpC,IAAIC,EAAYC,GAAQtC,CAAK,EACzBuC,EAAgBF,EAAU,OAC9B,GAAI,CAAC,MAAM,QAAQrC,CAAK,GAAK,CAAC,MAAM,QAAQoC,CAAK,EAC/C,MAAM,IAAI,UAAU,gBAAgB,EAEtC,GAAIA,EAAM,SAAW,EACnB,MAAM,IAAI/B,GAAe,EAAGkC,EAAe,IAAI,EAEjDH,EAAQI,GAAqBJ,EAAOG,CAAa,EACjD,IAAIE,EAAYC,GAAQN,CAAK,EAC7B,GAAIG,IAAkBE,EACpB,MAAM,IAAIpC,GAAeoC,EAAWF,EAAe,IAAI,EAEzD,GAAI,CACF,OAAOI,IAASN,EAAWD,CAAK,CAClC,OAASQ,EAAG,CACV,MAAIA,aAAavC,GACT,IAAIA,GAAeoC,EAAWF,EAAe,IAAI,EAEnDK,CACR,CACF,CASO,SAASJ,GAAqBJ,EAAOG,EAAe,CACzD,IAAIE,EAAYC,GAAQN,CAAK,EACzBS,EAAiBT,EAAM,MAAM,EAC7BU,EAAW,GACXC,EAAgBX,EAAM,QAAQU,CAAQ,EACtCE,EAAwBZ,EAAM,QAAQU,EAAUC,EAAgB,CAAC,GAAK,EAC1E,GAAIC,EACF,MAAM,IAAI,MAAM,iCAAiC,EAEnD,IAAIC,EAAcF,GAAiB,EAC/BG,EAAqBX,EAAgBE,IAAc,EACvD,GAAIQ,EACF,GAAIC,EACFL,EAAeE,CAAa,EAAI,CAACR,EAAgBE,MAEjD,OAAM,IAAI,MAAM,qCAAuCF,EAAgB,sBAAwB,CAACE,CAAS,EAG7G,OAAOI,CACT,CAOA,SAASH,GAAQ1C,EAAO,CACtB,OAAOA,EAAM,OAAO,CAACmD,EAAMC,IAASD,EAAOC,EAAM,CAAC,CACpD,CAUA,SAAST,IAAS3C,EAAOoC,EAAO,CAK9B,QAHIiB,EAAWrD,EACXsD,EAEKC,EAAYnB,EAAM,OAAS,EAAGmB,EAAY,EAAGA,IAAa,CACjE,IAAItD,EAAOmC,EAAMmB,CAAS,EAC1BD,EAAY,CAAC,EAIb,QADIrC,EAASoC,EAAS,OAASpD,EACtBE,EAAI,EAAGA,EAAIc,EAAQd,IAC1BmD,EAAU,KAAKD,EAAS,MAAMlD,EAAIF,GAAOE,EAAI,GAAKF,CAAI,CAAC,EAGzDoD,EAAWC,CACb,CACA,OAAOD,CACT,CAQO,SAASG,GAAQxD,EAAOC,EAAM,CAInC,QAHIH,EAAIG,GAAQL,GAAUI,CAAK,EAGxB,MAAM,QAAQA,CAAK,GAAKA,EAAM,SAAW,GAC9CA,EAAQA,EAAM,CAAC,EACfF,EAAE,MAAM,EAKV,QADI2D,EAAO3D,EAAE,OACNA,EAAE2D,EAAO,CAAC,IAAM,GACrBA,IAIF,OAAIA,EAAO3D,EAAE,SACXE,EAAQ0D,GAAS1D,EAAOyD,EAAM,CAAC,EAC/B3D,EAAE,OAAS2D,GAENzD,CACT,CAUA,SAAS0D,GAAS1D,EAAOyD,EAAMvD,EAAK,CAClC,IAAIC,EAAGwD,EACP,GAAIzD,EAAMuD,EAAM,CACd,IAAIG,EAAO1D,EAAM,EACjB,IAAKC,EAAI,EAAGwD,EAAK3D,EAAM,OAAQG,EAAIwD,EAAIxD,IACrCH,EAAMG,CAAC,EAAIuD,GAAS1D,EAAMG,CAAC,EAAGsD,EAAMG,CAAI,CAE5C,KACE,MAAO,MAAM,QAAQ5D,CAAK,GACxBA,EAAQA,EAAM,CAAC,EAGnB,OAAOA,CACT,CAcO,SAAS6D,GAAU7D,EAAOyD,EAAMK,EAAO7D,EAAM,CAClD,IAAIH,EAAIG,GAAQL,GAAUI,CAAK,EAG/B,GAAI8D,EACF,QAAS3D,EAAI,EAAGA,EAAI2D,EAAO3D,IACzBH,EAAQ,CAACA,CAAK,EACdF,EAAE,QAAQ,CAAC,EAMf,IADAE,EAAQ+D,GAAW/D,EAAOyD,EAAM,CAAC,EAC1B3D,EAAE,OAAS2D,GAChB3D,EAAE,KAAK,CAAC,EAEV,OAAOE,CACT,CAUA,SAAS+D,GAAW/D,EAAOyD,EAAMvD,EAAK,CACpC,IAAIC,EAAGwD,EACP,GAAI,MAAM,QAAQ3D,CAAK,EAAG,CACxB,IAAI4D,EAAO1D,EAAM,EACjB,IAAKC,EAAI,EAAGwD,EAAK3D,EAAM,OAAQG,EAAIwD,EAAIxD,IACrCH,EAAMG,CAAC,EAAI4D,GAAW/D,EAAMG,CAAC,EAAGsD,EAAMG,CAAI,CAE9C,KACE,SAASI,EAAI9D,EAAK8D,EAAIP,EAAMO,IAC1BhE,EAAQ,CAACA,CAAK,EAGlB,OAAOA,CACT,CAOO,SAASsC,GAAQtC,EAAO,CAC7B,GAAI,CAAC,MAAM,QAAQA,CAAK,EAEtB,OAAOA,EAET,IAAIiE,EAAO,CAAC,EACZ,OAAAjE,EAAM,QAAQ,SAASkE,EAASvD,EAAO,CACjC,MAAM,QAAQA,CAAK,EACrBA,EAAM,QAAQuD,CAAQ,EAEtBD,EAAK,KAAKtD,CAAK,CAEnB,CAAC,EACMsD,CACT,CAOO,SAASE,GAAInE,EAAOkE,EAAU,CACnC,OAAO,MAAM,UAAU,IAAI,KAAKlE,EAAOkE,CAAQ,CACjD,CAOO,SAASE,GAAQpE,EAAOkE,EAAU,CACvC,MAAM,UAAU,QAAQ,KAAKlE,EAAOkE,CAAQ,CAC9C,CAOO,SAASG,GAAOrE,EAAOkE,EAAU,CACtC,GAAItE,GAAUI,CAAK,EAAE,SAAW,EAC9B,MAAM,IAAI,MAAM,yCAAyC,EAE3D,OAAO,MAAM,UAAU,OAAO,KAAKA,EAAOkE,CAAQ,CACpD,CASO,SAASI,GAAatE,EAAOuE,EAAQ,CAC1C,GAAI3E,GAAUI,CAAK,EAAE,SAAW,EAC9B,MAAM,IAAI,MAAM,yCAAyC,EAE3D,OAAO,MAAM,UAAU,OAAO,KAAKA,EAAOwE,GAASD,EAAO,KAAKC,CAAK,CAAC,CACvE,CAOO,SAASC,GAAKzE,EAAO0E,EAAW,CACrC,OAAO,MAAM,UAAU,KAAK,KAAK1E,EAAO0E,CAAS,CACnD,CAOO,SAASC,GAASC,EAAG,CAC1B,GAAI,CAAC,MAAM,QAAQA,CAAC,EAClB,MAAM,IAAI,UAAU,sBAAsB,EAE5C,GAAIA,EAAE,SAAW,EACf,OAAOA,EAET,IAAIC,EAAI,CAAC,EACLC,EAAQ,EACZD,EAAE,CAAC,EAAI,CACL,MAAOD,EAAE,CAAC,EACV,WAAY,CACd,EACA,QAASzE,EAAI,EAAGA,EAAIyE,EAAE,OAAQzE,IACxByE,EAAEzE,CAAC,IAAMyE,EAAEzE,EAAI,CAAC,EAClB2E,IAEAA,EAAQ,EAEVD,EAAE,KAAK,CACL,MAAOD,EAAEzE,CAAC,EACV,WAAY2E,CACd,CAAC,EAEH,OAAOD,CACT,CAOO,SAASE,GAAWH,EAAG,CAC5B,GAAI,CAAC,MAAM,QAAQA,CAAC,EAClB,MAAM,IAAI,UAAU,sBAAsB,EAE5C,GAAIA,EAAE,SAAW,EACf,OAAOA,EAGT,QADIC,EAAI,CAAC,EACA1E,EAAI,EAAGA,EAAIyE,EAAE,OAAQzE,IAC5B0E,EAAE,KAAKD,EAAEzE,CAAC,EAAE,KAAK,EAEnB,OAAO0E,CACT,CAWO,SAASG,GAAiBhF,EAAOiF,EAAQ,CAI9C,QAHIC,EACAjE,EAAS,EAEJ,EAAI,EAAG,EAAIjB,EAAM,OAAQ,IAAK,CACrC,IAAImF,EAAOnF,EAAM,CAAC,EACdoF,EAAW,MAAM,QAAQD,CAAI,EAQjC,GALI,IAAM,GAAKC,IACbnE,EAASkE,EAAK,QAIZC,GAAYD,EAAK,SAAWlE,EAC9B,OAEF,IAAIoE,EAAWD,EAAWJ,GAAiBG,EAAMF,CAAM,EACrDA,EAAOE,CAAI,EACb,GAAID,IAAS,OACXA,EAAOG,UACEH,IAASG,EAClB,MAAO,OAIX,CACA,OAAOH,CACT,CA8BA,SAASI,GAAgBC,EAAGC,EAAGC,EAAWC,EAAK,CAC7C,GAAIA,EAAMD,EAAW,CAEnB,GAAIF,EAAE,SAAWC,EAAE,OACjB,MAAM,IAAIG,GAAeJ,EAAE,OAAQC,EAAE,MAAM,EAG7C,QADII,EAAI,CAAC,EACAC,EAAI,EAAGA,EAAIN,EAAE,OAAQM,IAC5BD,EAAEC,CAAC,EAAIP,GAAgBC,EAAEM,CAAC,EAAGL,EAAEK,CAAC,EAAGJ,EAAWC,EAAM,CAAC,EAEvD,OAAOE,CACT,KAEE,QAAOL,EAAE,OAAOC,CAAC,CAErB,CAQO,SAASM,IAAS,CACvB,IAAIC,EAAS,MAAM,UAAU,MAAM,KAAK,UAAW,EAAG,EAAE,EACpDN,EAAY,MAAM,UAAU,MAAM,KAAK,UAAW,EAAE,EACxD,GAAIM,EAAO,SAAW,EACpB,OAAOA,EAAO,CAAC,EAEjB,GAAIA,EAAO,OAAS,EAClB,OAAOA,EAAO,MAAM,CAAC,EAAE,OAAO,SAAUC,EAAGC,EAAG,CAC5C,OAAOX,GAAgBU,EAAGC,EAAGR,EAAW,CAAC,CAC3C,EAAGM,EAAO,CAAC,CAAC,EAEZ,MAAM,IAAI,MAAM,8CAA8C,CAElE,CAOO,SAASG,IAAiB,CAC/B,QAASC,EAAO,UAAU,OAAQC,EAAQ,IAAI,MAAMD,CAAI,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IAChFD,EAAMC,CAAI,EAAI,UAAUA,CAAI,EAM9B,QAJIC,EAAaF,EAAM,IAAIG,GAAKA,EAAE,MAAM,EACpCC,EAAI,KAAK,IAAI,GAAGF,CAAU,EAC1BG,EAAU,IAAI,MAAMD,CAAC,EAAE,KAAK,IAAI,EAE3BX,EAAI,EAAGA,EAAIO,EAAM,OAAQP,IAGhC,QAFIa,EAAON,EAAMP,CAAC,EACdH,EAAMY,EAAWT,CAAC,EACbc,EAAI,EAAGA,EAAIjB,EAAKiB,IAAK,CAC5B,IAAIC,EAAIJ,EAAId,EAAMiB,EACdD,EAAKC,CAAC,EAAIF,EAAQG,CAAC,IACrBH,EAAQG,CAAC,EAAIF,EAAKC,CAAC,EAEvB,CAEF,QAASE,EAAK,EAAGA,EAAKT,EAAM,OAAQS,IAClCC,GAAuBV,EAAMS,CAAE,EAAGJ,CAAO,EAE3C,OAAOA,CACT,CAOO,SAASK,GAAuBJ,EAAMK,EAAQ,CAGnD,QAFIP,EAAIO,EAAO,OACXrB,EAAMgB,EAAK,OACNC,EAAI,EAAGA,EAAIjB,EAAKiB,IAAK,CAC5B,IAAIC,EAAIJ,EAAId,EAAMiB,EAClB,GAAID,EAAKC,CAAC,EAAII,EAAOH,CAAC,GAAKF,EAAKC,CAAC,EAAI,GAAKD,EAAKC,CAAC,EAAII,EAAOH,CAAC,EAC1D,MAAM,IAAI,MAAM,0DAA0D,OAAOF,EAAM,wCAAwC,EAAE,OAAOhB,EAAK,aAAa,EAAE,OAAOgB,EAAKC,CAAC,EAAG,WAAW,EAAE,OAAOI,EAAOH,CAAC,CAAC,CAAC,CAE9M,CACF,CAQO,SAASI,GAAYC,EAAOF,EAAQ,CACzC,IAAIG,EAAQC,GAAUF,CAAK,EAC3B,GAAIG,GAAgBF,EAAOH,CAAM,EAC/B,OAAOE,EAETH,GAAuBI,EAAOH,CAAM,EACpC,IAAIM,EAAkBnB,GAAegB,EAAOH,CAAM,EAC9CP,EAAIa,EAAgB,OACpBC,EAAa,CAAC,GAAG,MAAMd,EAAIU,EAAM,MAAM,EAAE,KAAK,CAAC,EAAG,GAAGA,CAAK,EAC1DlB,EAAIuB,IAAMN,CAAK,EAEfC,EAAM,OAASV,IACjBR,EAAIwB,GAAQxB,EAAGsB,CAAU,EACzBJ,EAAQC,GAAUnB,CAAC,GAIrB,QAASN,EAAM,EAAGA,EAAMc,EAAGd,IACrBwB,EAAMxB,CAAG,EAAI2B,EAAgB3B,CAAG,IAClCM,EAAIyB,IAAQzB,EAAGqB,EAAgB3B,CAAG,EAAGA,CAAG,EACxCwB,EAAQC,GAAUnB,CAAC,GAGvB,OAAOA,CACT,CAmCO,SAAS0B,IAAQC,EAAgBC,EAAeC,EAAc,CACnE,OAAOC,GAAO,GAAG,MAAMF,CAAa,EAAE,KAAKD,CAAc,EAAGE,CAAY,CAC1E,CAcO,SAASE,GAAIC,EAAOC,EAAO,CAChC,GAAI,CAAC,MAAM,QAAQD,CAAK,EACtB,MAAM,IAAI,MAAM,gBAAgB,EAElC,IAAIE,EAAOC,GAAUH,CAAK,EAC1B,GAAIC,EAAM,SAAWC,EAAK,OACxB,MAAM,IAAIE,GAAeH,EAAM,OAAQC,EAAK,MAAM,EAEpD,QAASG,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,IAChCC,GAAcL,EAAMI,CAAC,EAAGH,EAAKG,CAAC,CAAC,EAEjC,OAAOJ,EAAM,OAAO,CAACM,EAAKC,IAASD,EAAIC,CAAI,EAAGR,CAAK,CACrD,CAWO,SAASS,GAAQC,EAAOT,EAAOD,EAAOW,EAAU,CACrD,OAAI,MAAM,QAAQD,CAAK,EACdA,EAAM,IAAI,SAAUE,EAAOC,EAAG,CAEnC,OAAOJ,GAAQG,EAAOX,EAAM,OAAOY,CAAC,EAAGb,EAAOW,CAAQ,CACxD,CAAC,EAGMA,EAASD,EAAOT,EAAOD,CAAK,CAEvC,CAOO,SAASc,IAAMd,EAAO,CAC3B,OAAOe,GAAS,CAAC,EAAGf,CAAK,CAC3B,CCp0BA,IAAAgB,GAAkB,WAYX,SAASC,GAAiBC,EAAUC,EAAOC,EAAM,CACtD,GAAI,GAAAC,QAAM,gBAAgBH,CAAQ,EAAG,CACnC,IAAII,GAAcH,EAAM,SAAWA,EAAM,KAAK,EAAII,GAAUJ,CAAK,GAAG,IAAI,IAAM,CAAC,EAC3EK,EAAaL,EAAM,SAAWA,EAAM,IAAIG,CAAU,EAAIG,GAAIN,EAAOG,CAAU,EAC3EI,EAAqB,OAAO,KAAKR,EAAS,UAAU,EAAE,SAAW,EACjES,EAAoBC,IAAuBV,EAAUM,EAAYF,EAAYH,CAAK,EAClFU,EAAeH,EAAqB,OAAO,OAAOR,EAAS,UAAU,EAAE,CAAC,EAAIA,EAChF,OAAIS,GAAqB,GAAKA,GAAqB,EAC1C,UAAY,CACjB,QAASG,EAAO,UAAU,OAAQC,EAAO,IAAI,MAAMD,CAAI,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,CAAI,EAAI,UAAUA,CAAI,EAE7B,OAAOC,GAAqBJ,EAAcE,EAAK,MAAM,EAAGJ,CAAiB,EAAGP,EAAMF,EAAS,IAAI,CACjG,EAEK,UAAY,CACjB,QAASgB,EAAQ,UAAU,OAAQH,EAAO,IAAI,MAAMG,CAAK,EAAGC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFJ,EAAKI,CAAK,EAAI,UAAUA,CAAK,EAE/B,OAAOF,GAAqBJ,EAAcE,EAAMX,EAAMF,EAAS,IAAI,CACrE,CACF,CACA,OAAOA,CACT,CACA,SAASU,IAAuBV,EAAUkB,EAAOC,EAAOlB,EAAO,CAE7D,QADImB,EAAW,CAACF,EAAOC,EAAOlB,CAAK,EAC1BoB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAIR,EAAOO,EAAS,MAAM,EAAGC,CAAC,EAC9B,GAAI,GAAAlB,QAAM,QAAQH,EAAUa,CAAI,IAAM,KACpC,OAAOQ,CAEX,CACF,CAUA,SAASN,GAAqBO,EAAMT,EAAMU,EAAeC,EAAc,CACrE,GAAI,CACF,OAAOF,EAAK,GAAGT,CAAI,CACrB,OAASY,EAAK,CACZC,IAAqBD,EAAKZ,EAAMU,EAAeC,CAAY,CAC7D,CACF,CAWA,SAASE,IAAqBD,EAAKZ,EAAMU,EAAeC,EAAc,CACpE,IAAIG,EAEJ,GAAIF,aAAe,aAAeE,EAAYF,EAAI,QAAU,MAAQE,IAAc,OAAS,OAASA,EAAU,YAAc,YAAa,CACvI,IAAIC,EAAW,CAAC,EAChB,MAAAA,EAAS,KAAK,UAAU,OAAOC,GAAQhB,EAAK,CAAC,CAAC,CAAC,CAAC,EAC5CA,EAAK,QAAU,GACjBe,EAAS,KAAK,UAAU,OAAOC,GAAQhB,EAAK,CAAC,CAAC,CAAC,CAAC,EAE9CA,EAAK,QAAU,GACjBe,EAAS,KAAK,UAAU,OAAOC,GAAQhB,EAAK,CAAC,CAAC,CAAC,CAAC,EAE5C,IAAI,UAAU,YAAY,OAAOU,EAAe,mCAAmC,EAAI,GAAG,OAAOC,EAAc,GAAG,EAAE,OAAOI,EAAS,KAAK,IAAI,EAAG,aAAa,EAAE,OAAO,KAAK,UAAUf,EAAK,CAAC,CAAC,CAAC,CAAC,CACtM,KACE,OAAM,IAAI,UAAU,YAAY,OAAOU,EAAe,mCAAmC,EAAI,eAAe,OAAOC,EAAc,IAAI,EAAE,OAAOC,EAAI,OAAO,CAAC,CAE9J,CC9EA,IAAIK,IAAO,cACPC,IAAe,CAAC,QAAQ,EACjBC,GAAwCC,EAAQH,IAAMC,IAAcG,GAAQ,CACrF,GAAI,CACF,OAAAC,CACF,EAAID,EAMJ,SAASE,EAAYC,EAAMC,EAAU,CACnC,GAAI,EAAE,gBAAgBF,GACpB,MAAM,IAAI,YAAY,kDAAkD,EAE1E,GAAIE,GAAY,CAACC,GAASD,CAAQ,EAChC,MAAM,IAAI,MAAM,qBAAuBA,CAAQ,EAEjD,GAAIE,GAASH,CAAI,EAEXA,EAAK,OAAS,eAEhB,KAAK,MAAQI,GAAMJ,EAAK,KAAK,EAC7B,KAAK,MAAQI,GAAMJ,EAAK,KAAK,EAC7B,KAAK,UAAYC,GAAYD,EAAK,YAGlC,KAAK,MAAQA,EAAK,QAAQ,EAC1B,KAAK,MAAQA,EAAK,KAAK,EACvB,KAAK,UAAYC,GAAYD,EAAK,mBAE3BA,GAAQK,GAAQL,EAAK,IAAI,GAAKK,GAAQL,EAAK,IAAI,EAExD,KAAK,MAAQA,EAAK,KAClB,KAAK,MAAQA,EAAK,KAElBM,GAAS,KAAK,MAAO,KAAK,KAAK,EAC/B,KAAK,UAAYL,GAAYD,EAAK,iBACzBK,GAAQL,CAAI,EAErB,KAAK,MAAQO,EAAWP,CAAI,EAE5B,KAAK,MAAQQ,GAAU,KAAK,KAAK,EAEjCF,GAAS,KAAK,MAAO,KAAK,KAAK,EAE/B,KAAK,UAAYL,MACZ,IAAID,EAET,MAAM,IAAI,UAAU,6BAA+BS,GAAOT,CAAI,EAAI,GAAG,EAGrE,KAAK,MAAQ,CAAC,EACd,KAAK,MAAQ,CAAC,CAAC,EACf,KAAK,UAAYC,EAErB,CACAF,EAAY,UAAY,IAAID,EAK5BC,EAAY,UAAU,kBAAoB,SAAUC,EAAMC,EAAU,CAClE,OAAO,IAAIF,EAAYC,EAAMC,CAAQ,CACvC,EAKA,OAAO,eAAeF,EAAa,OAAQ,CACzC,MAAO,aACT,CAAC,EACDA,EAAY,UAAU,YAAcA,EACpCA,EAAY,UAAU,KAAO,cAC7BA,EAAY,UAAU,cAAgB,GAWtCA,EAAY,UAAU,YAAc,UAAY,CAC9C,OAAOW,GAAiB,KAAK,MAAOD,EAAM,CAC5C,EAWAV,EAAY,UAAU,QAAU,UAAY,CAC1C,MAAO,OACT,EAWAA,EAAY,UAAU,SAAW,UAAY,CAC3C,OAAO,KAAK,SACd,EAQAA,EAAY,UAAU,OAAS,SAAUC,EAAMC,EAAU,CACvD,OAAO,IAAIF,EAAYC,EAAMC,CAAQ,CACvC,EAgBAF,EAAY,UAAU,OAAS,SAAUY,EAAOC,EAAaC,EAAc,CACzE,OAAQ,UAAU,OAAQ,CACxB,IAAK,GACH,OAAOC,EAAK,KAAMH,CAAK,EAGzB,IAAK,GACL,IAAK,GACH,OAAOI,EAAK,KAAMJ,EAAOC,EAAaC,CAAY,EACpD,QACE,MAAM,IAAI,YAAY,2BAA2B,CACrD,CACF,EAQAd,EAAY,UAAU,IAAM,SAAUY,EAAO,CAC3C,OAAOK,GAAI,KAAK,MAAOL,CAAK,CAC9B,EAYAZ,EAAY,UAAU,IAAM,SAAUY,EAAOM,EAAOJ,EAAc,CAChE,GAAI,CAACR,GAAQM,CAAK,EAChB,MAAM,IAAI,UAAU,gBAAgB,EAEtC,GAAIA,EAAM,OAAS,KAAK,MAAM,OAC5B,MAAM,IAAIO,GAAeP,EAAM,OAAQ,KAAK,MAAM,OAAQ,GAAG,EAE/D,IAAIQ,EAAGC,EAAIC,EAGPC,EAAOX,EAAM,IAAI,SAAUQ,EAAG,CAChC,OAAOA,EAAI,CACb,CAAC,EACDI,EAAK,KAAMD,EAAMT,CAAY,EAG7B,IAAIb,EAAO,KAAK,MAChB,IAAKmB,EAAI,EAAGC,EAAKT,EAAM,OAAS,EAAGQ,EAAIC,EAAID,IACzCE,EAASV,EAAMQ,CAAC,EAChBK,GAAcH,EAAQrB,EAAK,MAAM,EACjCA,EAAOA,EAAKqB,CAAM,EAIpB,OAAAA,EAASV,EAAMA,EAAM,OAAS,CAAC,EAC/Ba,GAAcH,EAAQrB,EAAK,MAAM,EACjCA,EAAKqB,CAAM,EAAIJ,EACR,IACT,EASA,SAASH,EAAKW,EAAQd,EAAO,CAC3B,GAAI,CAACe,GAAQf,CAAK,EAChB,MAAM,IAAI,UAAU,eAAe,EAErC,IAAIgB,EAAWhB,EAAM,SAAS,EAC9B,GAAIgB,EAEF,OAAOF,EAAO,IAAId,EAAM,IAAI,CAAC,EAG7B,IAAIW,EAAOX,EAAM,KAAK,EACtB,GAAIW,EAAK,SAAWG,EAAO,MAAM,OAC/B,MAAM,IAAIP,GAAeI,EAAK,OAAQG,EAAO,MAAM,MAAM,EAM3D,QAFIG,EAAMjB,EAAM,IAAI,EAChBkB,EAAMlB,EAAM,IAAI,EACXQ,EAAI,EAAGC,EAAKK,EAAO,MAAM,OAAQN,EAAIC,EAAID,IAChDK,GAAcI,EAAIT,CAAC,EAAGM,EAAO,MAAMN,CAAC,CAAC,EACrCK,GAAcK,EAAIV,CAAC,EAAGM,EAAO,MAAMN,CAAC,CAAC,EAKvC,OAAO,IAAIpB,EAAY+B,EAAcL,EAAO,MAAOd,EAAOW,EAAK,OAAQ,CAAC,EAAGG,EAAO,SAAS,CAE/F,CAaA,SAASK,EAAc9B,EAAMW,EAAOoB,EAAMC,EAAK,CAC7C,IAAIC,EAAOD,IAAQD,EAAO,EACtBG,EAAQvB,EAAM,UAAUqB,CAAG,EAC/B,OAAIC,EACKC,EAAM,IAAI,SAAUf,EAAG,CAC5B,OAAAK,GAAcL,EAAGnB,EAAK,MAAM,EACrBA,EAAKmB,CAAC,CACf,CAAC,EAAE,QAAQ,EAEJe,EAAM,IAAI,SAAUf,EAAG,CAC5BK,GAAcL,EAAGnB,EAAK,MAAM,EAC5B,IAAImC,EAAQnC,EAAKmB,CAAC,EAClB,OAAOW,EAAcK,EAAOxB,EAAOoB,EAAMC,EAAM,CAAC,CAClD,CAAC,EAAE,QAAQ,CAEf,CAcA,SAASjB,EAAKU,EAAQd,EAAOyB,EAAWvB,EAAc,CACpD,GAAI,CAACF,GAASA,EAAM,UAAY,GAC9B,MAAM,IAAI,UAAU,eAAe,EAIrC,IAAI0B,EAAQ1B,EAAM,KAAK,EACnBgB,EAAWhB,EAAM,SAAS,EAG1B2B,EAOJ,GANInC,GAASiC,CAAS,GACpBE,EAAQF,EAAU,KAAK,EACvBA,EAAYA,EAAU,QAAQ,GAE9BE,EAAQ9B,GAAU4B,CAAS,EAEzBT,EAAU,CAIZ,GAAIW,EAAM,SAAW,EACnB,MAAM,IAAI,UAAU,iBAAiB,EAEvCb,EAAO,IAAId,EAAM,IAAI,EAAGyB,EAAWvB,CAAY,CACjD,KAAO,CAIL,GAAI,CAAC0B,GAAgBD,EAAOD,CAAK,EAC/B,GAAI,CACEC,EAAM,SAAW,EACnBF,EAAYI,GAAY,CAACJ,CAAS,EAAGC,CAAK,EAE1CD,EAAYI,GAAYJ,EAAWC,CAAK,EAE1CC,EAAQ9B,GAAU4B,CAAS,CAC7B,MAAkB,CAAC,CAIrB,GAAIC,EAAM,OAASZ,EAAO,MAAM,OAC9B,MAAM,IAAIP,GAAemB,EAAM,OAAQZ,EAAO,MAAM,OAAQ,GAAG,EAEjE,GAAIa,EAAM,OAASD,EAAM,OAAQ,CAI/B,QAFIlB,EAAI,EACJsB,EAAQ,EACLJ,EAAMlB,CAAC,IAAM,GAAKmB,EAAMnB,CAAC,IAAM,GACpCA,IAEF,KAAOkB,EAAMlB,CAAC,IAAM,GAClBsB,IACAtB,IAIFiB,EAAYM,GAAUN,EAAWC,EAAM,OAAQI,EAAOH,CAAK,CAC7D,CAGA,GAAI,CAACC,GAAgBF,EAAOC,CAAK,EAC/B,MAAM,IAAIpB,GAAemB,EAAOC,EAAO,GAAG,EAI5C,IAAIhB,EAAOX,EAAM,IAAI,EAAE,IAAI,SAAUQ,EAAG,CACtC,OAAOA,EAAI,CACb,CAAC,EACDI,EAAKE,EAAQH,EAAMT,CAAY,EAG/B,IAAIkB,EAAOM,EAAM,OACbL,EAAM,EACVW,EAAclB,EAAO,MAAOd,EAAOyB,EAAWL,EAAMC,CAAG,CACzD,CACA,OAAOP,CACT,CAYA,SAASkB,EAAc3C,EAAMW,EAAOyB,EAAWL,EAAMC,EAAK,CACxD,IAAIC,EAAOD,IAAQD,EAAO,EACtBG,EAAQvB,EAAM,UAAUqB,CAAG,EAC3BC,EACFC,EAAM,QAAQ,SAAUU,EAAWC,EAAU,CAC3CrB,GAAcoB,CAAS,EACvB5C,EAAK4C,CAAS,EAAIR,EAAUS,EAAS,CAAC,CAAC,CACzC,CAAC,EAEDX,EAAM,QAAQ,SAAUU,EAAWC,EAAU,CAC3CrB,GAAcoB,CAAS,EACvBD,EAAc3C,EAAK4C,CAAS,EAAGjC,EAAOyB,EAAUS,EAAS,CAAC,CAAC,EAAGd,EAAMC,EAAM,CAAC,CAC7E,CAAC,CAEL,CAeAjC,EAAY,UAAU,OAAS,SAAUuB,EAAMT,EAAciC,EAAM,CAEjE,GAAI,CAACC,GAAazB,CAAI,EACpB,MAAM,IAAI,UAAU,0BAA0B,EAIhD,IAAI0B,EAAY1B,EAAK,QAAQ,EAAE,IAAIL,GAC1B,MAAM,QAAQA,CAAK,GAAKA,EAAM,SAAW,EAAIA,EAAM,CAAC,EAAIA,CAChE,EAGGgC,EAAIH,EAAO,KAAK,MAAM,EAAI,KAE9B,OAAOI,EAAQD,EAAGD,EAAWnC,CAAY,CAC3C,EACA,SAASqC,EAAQzB,EAAQH,EAAMT,EAAc,CAE3C,GAAIS,EAAK,SAAW,EAAG,CAIrB,QAFI6B,EAAI1B,EAAO,MAERpB,GAAQ8C,CAAC,GACdA,EAAIA,EAAE,CAAC,EAET,OAAOA,CACT,CAEA,OAAA1B,EAAO,MAAQH,EAAK,MAAM,CAAC,EAC3BG,EAAO,MAAQ2B,GAAO3B,EAAO,MAAOA,EAAO,MAAOZ,CAAY,EAEvDY,CACT,CAgBA1B,EAAY,UAAU,QAAU,SAAUuB,EAAMwB,EAAM,CACpD,IAAIG,EAAIH,EAAO,KAAK,MAAM,EAAI,KAC9BG,EAAE,MAAQI,GAAQJ,EAAE,MAAO3B,CAAI,EAC/B,IAAIgC,EAAgBL,EAAE,MAAM,OAAO,CAACM,EAAQjC,IAASiC,EAASjC,CAAI,EAClE,OAAA2B,EAAE,MAAQO,GAAqBlC,EAAMgC,CAAa,EAC3CL,CACT,EAWA,SAAS1B,EAAKE,EAAQH,EAAMT,EAAc,CAOxC,QAJA4C,EAAUhC,EAAO,MAAM,MAAM,CAAC,EAC1BiC,EAAU,GAGPD,EAAQ,OAASnC,EAAK,QAC3BmC,EAAQ,KAAK,CAAC,EACdC,EAAU,GAIZ,QAASvC,EAAI,EAAGC,EAAKE,EAAK,OAAQH,EAAIC,EAAID,IACpCG,EAAKH,CAAC,EAAIsC,EAAQtC,CAAC,IACrBsC,EAAQtC,CAAC,EAAIG,EAAKH,CAAC,EACnBuC,EAAU,IAGVA,GAEFR,EAAQzB,EAAQgC,EAAS5C,CAAY,CAEzC,CAOAd,EAAY,UAAU,MAAQ,UAAY,CACxC,IAAIkD,EAAI,IAAIlD,EAAY,CACtB,KAAMK,GAAM,KAAK,KAAK,EACtB,KAAMA,GAAM,KAAK,KAAK,EACtB,SAAU,KAAK,SACjB,CAAC,EACD,OAAO6C,CACT,EAOAlD,EAAY,UAAU,KAAO,UAAY,CACvC,OAAO,KAAK,MAAM,MAAM,CAAC,CAC3B,EASAA,EAAY,UAAU,SAAW,SAAU4D,EAAU,CAEnD,IAAIC,EAAK,KACLC,EAAID,EAAG,KAAK,EAGhB,GAAIC,EAAE,SAAW,EAAG,CAClB,QAAS1C,EAAI,EAAGA,EAAI0C,EAAE,CAAC,EAAG1C,IACxBwC,EAASC,EAAG,MAAOzC,EAAG,CAACA,CAAC,CAAC,EAE3B,MACF,CAGA,IAAIR,EAAQ,MAAMkD,EAAE,MAAM,EAAE,KAAK,CAAC,EAG9B7D,EAAO,MAAM6D,EAAE,OAAS,CAAC,EACzB5B,EAAOjC,EAAK,OAAS,EACzBA,EAAK,CAAC,EAAI4D,EAAG,MAAM,CAAC,EACpB,QAASE,EAAK,EAAGA,EAAK7B,EAAM6B,IAC1B9D,EAAK8D,EAAK,CAAC,EAAI9D,EAAK8D,CAAE,EAAE,CAAC,EAG3B,IADAnD,EAAMsB,CAAI,EAAI,KACD,CACX,IAAI8B,EAAM,OACV,IAAKA,EAAM9B,EAAM8B,GAAO,EAAGA,IAAO,CAGhC,GADApD,EAAMoD,CAAG,IACLpD,EAAMoD,CAAG,IAAMF,EAAEE,CAAG,EAAG,CACzBpD,EAAMoD,CAAG,EAAI,EACb,QACF,CAGA/D,EAAK+D,CAAG,EAAIA,IAAQ,EAAIH,EAAG,MAAMjD,EAAMoD,CAAG,CAAC,EAAI/D,EAAK+D,EAAM,CAAC,EAAEpD,EAAMoD,CAAG,CAAC,EACvE,QAASC,EAAID,EAAKC,EAAI/B,EAAM+B,IAC1BhE,EAAKgE,EAAI,CAAC,EAAIhE,EAAKgE,CAAC,EAAE,CAAC,EAIzB,QAASC,EAAK,EAAGA,EAAKJ,EAAE7D,EAAK,MAAM,EAAGiE,IACpCtD,EAAMX,EAAK,MAAM,EAAIiE,EACrBN,EAAS3D,EAAKiC,CAAI,EAAGgC,EAAItD,EAAM,MAAM,CAAC,CAAC,EAEzC,KACF,CACA,GAAIoD,IAAQ,GACV,KAEJ,CACF,EAYAhE,EAAY,UAAU,IAAM,SAAU4D,EAAU,CAC9C,IAAIC,EAAK,KACLM,EAAS,IAAInE,EAAY6D,CAAE,EAC3BO,EAAeC,GAAiBT,EAAUC,EAAG,MAAO,KAAK,EAC7D,OAAAM,EAAO,SAAS,SAAUG,EAAKlD,EAAGR,EAAO,CACvC0D,EAAIlD,CAAC,EAAIgD,EAAaE,EAAIlD,CAAC,EAAGR,EAAOiD,CAAE,CACzC,CAAC,EACMM,CACT,EASAnE,EAAY,UAAU,QAAU,SAAU4D,EAAU,CAClD,IAAIC,EAAK,KACLO,EAAeC,GAAiBT,EAAUC,EAAG,MAAO,KAAK,EAC7DA,EAAG,SAAS,SAAUS,EAAKlD,EAAGR,EAAO,CACnCwD,EAAaE,EAAIlD,CAAC,EAAGR,EAAOiD,CAAE,CAChC,CAAC,CACH,EAMA7D,EAAY,UAAU,OAAO,QAAQ,EAAI,WAAa,CACpD,IAAIuE,EAAW,UAAkBrD,EAAON,EAAO,CAC7C,GAAIN,GAAQY,CAAK,EACf,QAASE,EAAI,EAAGA,EAAIF,EAAM,OAAQE,IAChC,MAAOmD,EAASrD,EAAME,CAAC,EAAGR,EAAM,OAAOQ,CAAC,CAAC,OAG3C,KAAM,CACJ,MAAAF,EACA,MAAAN,CACF,CAEJ,EACA,MAAO2D,EAAS,KAAK,MAAO,CAAC,CAAC,CAChC,EAMAvE,EAAY,UAAU,KAAO,UAAY,CACvC,IAAImE,EAAS,CAAC,EACVL,EAAI,KAAK,KAAK,EAClB,GAAIA,EAAE,SAAW,EACf,MAAM,IAAI,UAAU,4CAA4C,EAElE,IAAI7D,EAAO,KAAK,MAChB,QAASuE,KAAOvE,EACdkE,EAAO,KAAK,IAAInE,EAAY,CAACwE,CAAG,EAAG,KAAK,SAAS,CAAC,EAEpD,OAAOL,CACT,EAMAnE,EAAY,UAAU,QAAU,UAAY,CAC1C,IAAIyE,EAAQ,KACRN,EAAS,CAAC,EACVL,EAAI,KAAK,KAAK,EAClB,GAAIA,EAAE,SAAW,EACf,MAAM,IAAI,UAAU,4CAA4C,EAOlE,QALI7D,EAAO,KAAK,MACZyE,EAAQ,SAAetD,EAAG,CAC5B,IAAIuD,EAAM1E,EAAK,IAAIuE,GAAO,CAACA,EAAIpD,CAAC,CAAC,CAAC,EAClC+C,EAAO,KAAK,IAAInE,EAAY2E,EAAKF,EAAM,SAAS,CAAC,CACnD,EACSrD,EAAI,EAAGA,EAAI0C,EAAE,CAAC,EAAG1C,IACxBsD,EAAMtD,CAAC,EAET,OAAO+C,CACT,EAOAnE,EAAY,UAAU,QAAU,UAAY,CAC1C,OAAOK,GAAM,KAAK,KAAK,CACzB,EAOAL,EAAY,UAAU,QAAU,UAAY,CAC1C,OAAO,KAAK,KACd,EAWAA,EAAY,UAAU,OAAS,SAAU4E,EAAS,CAChD,OAAOC,GAAO,KAAK,MAAOD,CAAO,CACnC,EAOA5E,EAAY,UAAU,SAAW,UAAY,CAC3C,OAAO6E,GAAO,KAAK,KAAK,CAC1B,EAOA7E,EAAY,UAAU,OAAS,UAAY,CACzC,MAAO,CACL,OAAQ,cACR,KAAM,KAAK,MACX,KAAM,KAAK,MACX,SAAU,KAAK,SACjB,CACF,EAUAA,EAAY,UAAU,SAAW,SAAU8E,EAAG,CAE5C,GAAIA,GAMF,GAJIC,GAAYD,CAAC,IACfA,EAAIA,EAAE,SAAS,GAGb,CAACE,GAASF,CAAC,GAAK,CAACG,GAAUH,CAAC,EAC9B,MAAM,IAAI,UAAU,2CAA2C,OAIjEA,EAAI,EAgBN,QAdII,EAASJ,EAAI,EAAIA,EAAI,EACrBK,EAAOL,EAAI,EAAI,CAACA,EAAI,EAGpBM,EAAO,KAAK,MAAM,CAAC,EACnBC,EAAU,KAAK,MAAM,CAAC,EAGtBC,EAAI,KAAK,IAAIF,EAAOD,EAAME,EAAUH,CAAM,EAG1CjF,EAAO,CAAC,EAGHmB,EAAI,EAAGA,EAAIkE,EAAGlE,IACrBnB,EAAKmB,CAAC,EAAI,KAAK,MAAMA,EAAI+D,CAAI,EAAE/D,EAAI8D,CAAM,EAI3C,OAAO,IAAIlF,EAAY,CACrB,KAAAC,EACA,KAAM,CAACqF,CAAC,EACR,SAAU,KAAK,SACjB,CAAC,CACH,EAcAtF,EAAY,SAAW,SAAUuB,EAAML,EAAO4D,EAAGhE,EAAc,CAC7D,GAAI,CAACR,GAAQiB,CAAI,EACf,MAAM,IAAI,UAAU,gCAAgC,EAEtD,GAAIA,EAAK,SAAW,EAClB,MAAM,IAAI,MAAM,0CAA0C,EAkB5D,GAdAA,EAAOA,EAAK,IAAI,SAAUuC,EAAG,CAO3B,GALIiB,GAAYjB,CAAC,IAEfA,EAAIA,EAAE,SAAS,GAGb,CAACkB,GAASlB,CAAC,GAAK,CAACmB,GAAUnB,CAAC,GAAKA,EAAI,EACvC,MAAM,IAAI,MAAM,uCAAuC,EAEzD,OAAOA,CACT,CAAC,EAGGgB,GAMF,GAJIC,GAAYD,CAAC,IACfA,EAAIA,EAAE,SAAS,GAGb,CAACE,GAASF,CAAC,GAAK,CAACG,GAAUH,CAAC,EAC9B,MAAM,IAAI,UAAU,2CAA2C,OAIjEA,EAAI,EAEN,IAAII,EAASJ,EAAI,EAAIA,EAAI,EACrBK,EAAOL,EAAI,EAAI,CAACA,EAAI,EAGpBM,EAAO7D,EAAK,CAAC,EACb8D,EAAU9D,EAAK,CAAC,EAGhB+D,EAAI,KAAK,IAAIF,EAAOD,EAAME,EAAUH,CAAM,EAG1CK,EAGJ,GAAIjF,GAAQY,CAAK,EAAG,CAElB,GAAIA,EAAM,SAAWoE,EAEnB,MAAM,IAAI,MAAM,4BAA4B,EAG9CC,EAAS,SAAgBnE,EAAG,CAE1B,OAAOF,EAAME,CAAC,CAChB,CACF,SAAWhB,GAASc,CAAK,EAAG,CAE1B,IAAIsE,EAAKtE,EAAM,KAAK,EAEpB,GAAIsE,EAAG,SAAW,GAAKA,EAAG,CAAC,IAAMF,EAE/B,MAAM,IAAI,MAAM,uBAAuB,EAGzCC,EAAS,SAAgBnE,EAAG,CAE1B,OAAOF,EAAM,IAAI,CAACE,CAAC,CAAC,CACtB,CACF,MAEEmE,EAAS,UAAkB,CAEzB,OAAOrE,CACT,EAIGJ,IAEHA,EAAeiE,GAAYQ,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAE,IAAI,CAAC,EACrD,GAIJ,IAAItF,EAAO,CAAC,EAGZ,GAAIsB,EAAK,OAAS,EAAG,CAEnBtB,EAAOoD,GAAOpD,EAAMsB,EAAMT,CAAY,EAEtC,QAAS2E,EAAI,EAAGA,EAAIH,EAAGG,IACrBxF,EAAKwF,EAAIN,CAAI,EAAEM,EAAIP,CAAM,EAAIK,EAAOE,CAAC,CAEzC,CAGA,OAAO,IAAIzF,EAAY,CACrB,KAAAC,EACA,KAAM,CAACmF,EAAMC,CAAO,CACtB,CAAC,CACH,EAUArF,EAAY,SAAW,SAAU0F,EAAM,CACrC,OAAO,IAAI1F,EAAY0F,CAAI,CAC7B,EAWA1F,EAAY,UAAU,SAAW,SAAUoB,EAAG6C,EAAG,CAE/C,GAAI,CAACe,GAAS5D,CAAC,GAAK,CAAC6D,GAAU7D,CAAC,GAAK,CAAC4D,GAASf,CAAC,GAAK,CAACgB,GAAUhB,CAAC,EAC/D,MAAM,IAAI,MAAM,qCAAqC,EAGvD,GAAI,KAAK,MAAM,SAAW,EACxB,MAAM,IAAI,MAAM,0CAA0C,EAG5D,OAAAxC,GAAcL,EAAG,KAAK,MAAM,CAAC,CAAC,EAC9BK,GAAcwC,EAAG,KAAK,MAAM,CAAC,CAAC,EAG9BjE,EAAY,UAAUoB,EAAG6C,EAAG,KAAK,KAAK,EAE/B,IACT,EASAjE,EAAY,UAAY,SAAUoB,EAAG6C,EAAGhE,EAAM,CAE5C,IAAI0F,EAAK1F,EAAKmB,CAAC,EACfnB,EAAKmB,CAAC,EAAInB,EAAKgE,CAAC,EAChBhE,EAAKgE,CAAC,EAAI0B,CACZ,EASA,SAASnF,EAAWP,EAAM,CACxB,OAAIG,GAASH,CAAI,EACRO,EAAWP,EAAK,QAAQ,CAAC,EAE9BK,GAAQL,CAAI,EACPA,EAAK,IAAIO,CAAU,EAErBP,CACT,CACA,OAAOD,CACT,EAAG,CACD,QAAS,EACX,CAAC,ECx8BD,IAAI4F,GAAO,QACPC,IAAe,CAAC,OAAO,EAChBC,GAA6BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC1E,GAAI,CACF,MAAAC,CACF,EAAID,EAmBJ,OAAOC,EAAML,GAAM,CACjB,IAAKM,EACP,CAAC,CACH,CAAC,ECvBM,SAASC,GAAQC,EAAK,CAC3B,IAAIC,EAAID,EAAI,OACRE,EAAIF,EAAI,CAAC,EAAE,OACXG,EAAGC,EACHC,EAAM,CAAC,EACX,IAAKD,EAAI,EAAGA,EAAIF,EAAGE,IAAK,CACtB,IAAIE,EAAM,CAAC,EACX,IAAKH,EAAI,EAAGA,EAAIF,EAAGE,IACjBG,EAAI,KAAKN,EAAIG,CAAC,EAAEC,CAAC,CAAC,EAEpBC,EAAI,KAAKC,CAAG,CACd,CACA,OAAOD,CACT,CCRO,SAASE,GAAoBC,EAAO,CACzC,QAASC,EAAI,EAAGA,EAAID,EAAM,OAAQC,IAChC,GAAIC,GAAaF,EAAMC,CAAC,CAAC,EACvB,MAAO,GAGX,MAAO,EACT,CASO,SAASE,GAAYH,EAAOI,EAAU,CACvCC,GAASL,CAAK,IAChBA,EAAQA,EAAM,QAAQ,GAExB,QAASC,EAAI,EAAGK,EAAKN,EAAM,OAAQC,EAAIK,EAAIL,IAAK,CAC9C,IAAIM,EAAQP,EAAMC,CAAC,EACf,MAAM,QAAQM,CAAK,EACrBJ,GAAYI,EAAOH,CAAQ,EAE3BA,EAASG,CAAK,CAElB,CACF,CAcO,SAASC,GAAQR,EAAOI,EAAUK,EAAW,CAClD,OAAIT,GAAS,OAAOA,EAAM,KAAQ,WAEzBA,EAAM,IAAI,SAAUU,EAAG,CAC5B,OAAOF,GAAQE,EAAGN,EAAUK,CAAS,CACvC,CAAC,EAEML,EAASJ,CAAK,CAEzB,CAWO,SAASW,GAAOC,EAAKC,EAAKT,EAAU,CACzC,IAAIU,EAAO,MAAM,QAAQF,CAAG,EAAIG,GAAUH,CAAG,EAAIA,EAAI,KAAK,EAC1D,GAAIC,EAAM,GAAKA,GAAOC,EAAK,OAEzB,MAAM,IAAIE,GAAWH,EAAKC,EAAK,MAAM,EAEvC,OAAIT,GAASO,CAAG,EACPA,EAAI,OAAOK,GAAQL,EAAI,QAAQ,EAAGC,EAAKT,CAAQ,EAAGQ,EAAI,SAAS,CAAC,EAEhEK,GAAQL,EAAKC,EAAKT,CAAQ,CAErC,CAUA,SAASa,GAAQL,EAAKC,EAAKT,EAAU,CACnC,IAAIH,EAAGiB,EAAKC,EAAKC,EACjB,GAAIP,GAAO,EACT,GAAK,MAAM,QAAQD,EAAI,CAAC,CAAC,EAMlB,CAGL,IAFAQ,EAAOC,GAAQT,CAAG,EAClBM,EAAM,CAAC,EACFjB,EAAI,EAAGA,EAAImB,EAAK,OAAQnB,IAC3BiB,EAAIjB,CAAC,EAAIgB,GAAQG,EAAKnB,CAAC,EAAGY,EAAM,EAAGT,CAAQ,EAE7C,OAAOc,CACT,KAb4B,CAE1B,IADAC,EAAMP,EAAI,CAAC,EACNX,EAAI,EAAGA,EAAIW,EAAI,OAAQX,IAC1BkB,EAAMf,EAASe,EAAKP,EAAIX,CAAC,CAAC,EAE5B,OAAOkB,CACT,KAQK,CAEL,IADAD,EAAM,CAAC,EACFjB,EAAI,EAAGA,EAAIW,EAAI,OAAQX,IAC1BiB,EAAIjB,CAAC,EAAIgB,GAAQL,EAAIX,CAAC,EAAGY,EAAM,EAAGT,CAAQ,EAE5C,OAAOc,CACT,CACF,CAGO,SAASI,GAAQC,EAAGC,EAAGC,EAAGf,EAAGgB,EAAGC,EAAMC,EAAQC,EAAGC,EAASC,EAAQxB,EAAO,CAE9E,IAAIyB,EAAUT,EAAE,QACZU,EAASV,EAAE,OACXW,EAAOX,EAAE,KAGTY,EAAGC,EAAIC,EAAIpC,EAGf,GAAIS,EAEF,IAAK0B,EAAKF,EAAKV,CAAC,EAAGa,EAAKH,EAAKV,EAAI,CAAC,EAAGW,EAAIC,EAAID,EAAIE,EAAIF,IAEnDlC,EAAIgC,EAAOE,CAAC,EAERV,EAAExB,CAAC,IAAM0B,GAEXF,EAAExB,CAAC,EAAI0B,EAEPC,EAAO,KAAK3B,CAAC,EAET8B,GAEFrB,EAAET,CAAC,EAAI6B,EAAUD,EAAEG,EAAQG,CAAC,EAAG5B,CAAK,EAAIsB,EAAEtB,EAAOyB,EAAQG,CAAC,CAAC,EAE3DT,EAAEzB,CAAC,EAAI0B,GAGPjB,EAAET,CAAC,EAAI+B,EAAQG,CAAC,IAIlBzB,EAAET,CAAC,EAAI6B,EAAUD,EAAEG,EAAQG,CAAC,EAAGzB,EAAET,CAAC,CAAC,EAAI4B,EAAEnB,EAAET,CAAC,EAAG+B,EAAQG,CAAC,CAAC,EAEzDT,EAAEzB,CAAC,EAAI0B,OAKX,KAAKS,EAAKF,EAAKV,CAAC,EAAGa,EAAKH,EAAKV,EAAI,CAAC,EAAGW,EAAIC,EAAID,EAAIE,EAAIF,IAEnDlC,EAAIgC,EAAOE,CAAC,EAERV,EAAExB,CAAC,IAAM0B,GAEXF,EAAExB,CAAC,EAAI0B,EAEPC,EAAO,KAAK3B,CAAC,GAGbyB,EAAEzB,CAAC,EAAI0B,CAIf,CC7KA,IAAIW,GAAO,YACPC,IAAe,CAAC,OAAO,EAChBC,GAAiCC,EAAQH,GAAMC,IAAcG,GAAQ,CAC9E,GAAI,CACF,MAAAC,CACF,EAAID,EA8BJ,OAAOC,EAAML,GAAM,CACjB,OAAQM,GAGR,UAAW,SAAmBC,EAAG,CAC/B,OAAOA,EAAE,MAAM,CACjB,EACA,OAAQ,SAAgBA,EAAG,CACzB,MAAO,EACT,EACA,SAAU,SAAkBA,EAAG,CAC7B,OAAOA,EAAE,IAAM,GAAK,SAASA,EAAE,CAAC,CAClC,EACA,iBAAkBF,EAAM,YAAYG,GAAQD,GAAKE,GAAQF,EAAGC,CAAI,CAAC,CACnE,CAAC,CACH,CAAC,ECpDD,IAAIE,GAAK,SACLC,GAAK,iBACF,SAASC,GAAUC,EAAG,CAC3B,OAAO,KAAK,IAAIA,CAAC,CACnB,CACAD,GAAU,UAAYF,GACf,SAASI,GAAUD,EAAGE,EAAG,CAC9B,OAAOF,EAAIE,CACb,CACAD,GAAU,UAAYH,GACf,SAASK,GAAeH,EAAGE,EAAG,CACnC,OAAOF,EAAIE,CACb,CACAC,GAAe,UAAYL,GACpB,SAASM,GAAeJ,EAAGE,EAAG,CACnC,OAAOF,EAAIE,CACb,CACAE,GAAe,UAAYN,GACpB,SAASO,IAAaL,EAAGE,EAAG,CACjC,OAAOF,EAAIE,CACb,CACAG,IAAa,UAAYP,GAClB,SAASQ,GAAiBC,EAAG,CAClC,MAAO,CAACA,CACV,CACAD,GAAiB,UAAYT,GACtB,SAASW,GAAgBD,EAAG,CACjC,OAAOA,CACT,CACAC,GAAgB,UAAYX,GACrB,SAASY,GAAWF,EAAG,CAC5B,OAAOG,GAAKH,CAAC,CACf,CACAE,GAAW,UAAYZ,GAChB,SAASc,GAAWJ,EAAG,CAC5B,OAAOA,EAAIA,EAAIA,CACjB,CACAI,GAAW,UAAYd,GAChB,SAASe,GAAUL,EAAG,CAC3B,OAAO,KAAK,IAAIA,CAAC,CACnB,CACAK,GAAU,UAAYf,GACf,SAASgB,GAAYN,EAAG,CAC7B,OAAOO,GAAMP,CAAC,CAChB,CACAM,GAAY,UAAYhB,GAQjB,SAASkB,IAAUf,EAAGE,EAAG,CAC9B,GAAI,CAACc,GAAUhB,CAAC,GAAK,CAACgB,GAAUd,CAAC,EAC/B,MAAM,IAAI,MAAM,oDAAoD,EAKtE,QADI,EACGA,IAAM,GACX,EAAIF,EAAIE,EACRF,EAAIE,EACJA,EAAI,EAEN,OAAOF,EAAI,EAAI,CAACA,EAAIA,CACtB,CACAe,IAAU,UAAYjB,GAQf,SAASmB,GAAUjB,EAAGE,EAAG,CAC9B,GAAI,CAACc,GAAUhB,CAAC,GAAK,CAACgB,GAAUd,CAAC,EAC/B,MAAM,IAAI,MAAM,oDAAoD,EAEtE,GAAIF,IAAM,GAAKE,IAAM,EACnB,MAAO,GAOT,QAFIgB,EACAC,EAAOnB,EAAIE,EACRA,IAAM,GACXgB,EAAIhB,EACJA,EAAIF,EAAIkB,EACRlB,EAAIkB,EAEN,OAAO,KAAK,IAAIC,EAAOnB,CAAC,CAC1B,CACAiB,GAAU,UAAYnB,GAQf,SAASsB,GAAUb,EAAGc,EAAG,CAC9B,OAAIA,EACK,KAAK,IAAId,CAAC,EAAI,KAAK,IAAIc,CAAC,EAE1B,KAAK,IAAId,CAAC,CACnB,CAOO,SAASe,GAAYf,EAAG,CAC7B,OAAOgB,GAAMhB,CAAC,CAChB,CACAe,GAAY,UAAYzB,GAOjB,SAAS2B,GAAWjB,EAAG,CAC5B,OAAOkB,GAAKlB,CAAC,CACf,CACAiB,GAAW,UAAY3B,GAOhB,SAAS6B,IAAYnB,EAAG,CAC7B,OAAOoB,GAAMpB,CAAC,CAChB,CACAmB,IAAY,UAAY7B,GASjB,SAAS+B,IAAUrB,EAAGc,EAAG,CAI9B,OAAOA,IAAM,EAAId,EAAIA,EAAIc,EAAI,KAAK,MAAMd,EAAIc,CAAC,CAC/C,CACAO,IAAU,UAAY9B,GASf,SAAS+B,GAAc7B,EAAG,CAC/B,IAAI8B,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,EAC3EC,EAAMD,EAAO,EAIjB,GAHIC,IACFD,EAAO,CAACA,GAENA,IAAS,EACX,MAAM,IAAI,MAAM,uBAAuB,EAEzC,GAAI9B,EAAI,GAAK,KAAK,IAAI8B,CAAI,EAAI,IAAM,EAClC,MAAM,IAAI,MAAM,sCAAsC,EAIxD,GAAI9B,IAAM,EACR,OAAO+B,EAAM,IAAW,EAE1B,GAAI,CAAC,SAAS/B,CAAC,EACb,OAAO+B,EAAM,EAAI/B,EAEnB,IAAIO,EAAI,KAAK,IAAI,KAAK,IAAIP,CAAC,EAAG,EAAI8B,CAAI,EAGtC,OAAAvB,EAAIP,EAAI,EAAI,CAACO,EAAIA,EACVwB,EAAM,EAAIxB,EAAIA,CAsBvB,CACO,SAASyB,GAAWzB,EAAG,CAC5B,OAAO0B,GAAK1B,CAAC,CACf,CACAyB,GAAW,UAAYnC,GAChB,SAASqC,IAAW3B,EAAG,CAC5B,OAAO,KAAK,KAAKA,CAAC,CACpB,CACA2B,IAAW,UAAYrC,GAChB,SAASsC,GAAa5B,EAAG,CAC9B,OAAOA,EAAIA,CACb,CACA4B,GAAa,UAAYtC,GASlB,SAASuC,GAAWpC,EAAGE,EAAG,CAE/B,IAAIgB,EACAmB,EACAC,EACA/B,EAAI,EACJgC,EAAQ,EACRlB,EAAI,EACJmB,EAAQ,EACZ,GAAI,CAACxB,GAAUhB,CAAC,GAAK,CAACgB,GAAUd,CAAC,EAC/B,MAAM,IAAI,MAAM,qDAAqD,EAEvE,KAAOA,GACLmC,EAAI,KAAK,MAAMrC,EAAIE,CAAC,EACpBoC,EAAItC,EAAIqC,EAAInC,EACZgB,EAAIX,EACJA,EAAIgC,EAAQF,EAAI9B,EAChBgC,EAAQrB,EACRA,EAAIG,EACJA,EAAImB,EAAQH,EAAIhB,EAChBmB,EAAQtB,EACRlB,EAAIE,EACJA,EAAIoC,EAEN,IAAIG,EACJ,OAAIzC,EAAI,EACNyC,EAAM,CAAC,CAACzC,EAAG,CAACuC,EAAO,CAACC,CAAK,EAEzBC,EAAM,CAACzC,EAAGA,EAAIuC,EAAQ,EAAGC,CAAK,EAEzBC,CACT,CACAL,GAAW,UAAYtC,GAQhB,SAAS4C,GAAUnC,EAAGc,EAAG,CAG9B,OAAId,EAAIA,EAAI,GAAKc,IAAM,KAAYd,EAAIA,EAAI,GAAKc,IAAM,KAC7C,EAEF,KAAK,IAAId,EAAGc,CAAC,CACtB,CACAqB,GAAU,UAAY5C,GASf,SAAS6C,GAAYC,EAAO,CACjC,IAAIC,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,EACnF,GAAI,CAAC7B,GAAU6B,CAAQ,GAAKA,EAAW,GAAKA,EAAW,GACrD,MAAM,IAAI,MAAM,gFAAgF,EAElG,OAAO,WAAWC,GAAQF,EAAOC,CAAQ,CAAC,CAC5C,CAOO,SAASE,IAAWxC,EAAG,CAC5B,OAAO,KAAK,IAAIA,CAAC,CACnB,CACAwC,IAAW,UAAYlD,GC7SvB,IAAImD,IAAK,SACLC,GAAK,iBACF,SAASC,GAAaC,EAAGC,EAAG,CACjC,GAAI,CAACC,GAAUF,CAAC,GAAK,CAACE,GAAUD,CAAC,EAC/B,MAAM,IAAI,MAAM,sCAAsC,EAExD,OAAOD,EAAIC,CACb,CACAF,GAAa,UAAYD,GAClB,SAASK,GAAaH,EAAG,CAC9B,GAAI,CAACE,GAAUF,CAAC,EACd,MAAM,IAAI,MAAM,qCAAqC,EAEvD,MAAO,CAACA,CACV,CACAG,GAAa,UAAYN,IAClB,SAASO,GAAYJ,EAAGC,EAAG,CAChC,GAAI,CAACC,GAAUF,CAAC,GAAK,CAACE,GAAUD,CAAC,EAC/B,MAAM,IAAI,MAAM,qCAAqC,EAEvD,OAAOD,EAAIC,CACb,CACAG,GAAY,UAAYN,GACjB,SAASO,GAAaL,EAAGC,EAAG,CACjC,GAAI,CAACC,GAAUF,CAAC,GAAK,CAACE,GAAUD,CAAC,EAC/B,MAAM,IAAI,MAAM,sCAAsC,EAExD,OAAOD,EAAIC,CACb,CACAI,GAAa,UAAYP,GAClB,SAASQ,GAAgBN,EAAGC,EAAG,CACpC,GAAI,CAACC,GAAUF,CAAC,GAAK,CAACE,GAAUD,CAAC,EAC/B,MAAM,IAAI,MAAM,yCAAyC,EAE3D,OAAOD,GAAKC,CACd,CACAK,GAAgB,UAAYR,GACrB,SAASS,GAAsBP,EAAGC,EAAG,CAC1C,GAAI,CAACC,GAAUF,CAAC,GAAK,CAACE,GAAUD,CAAC,EAC/B,MAAM,IAAI,MAAM,+CAA+C,EAEjE,OAAOD,GAAKC,CACd,CACAM,GAAsB,UAAYT,GAC3B,SAASU,GAAoBR,EAAGC,EAAG,CACxC,GAAI,CAACC,GAAUF,CAAC,GAAK,CAACE,GAAUD,CAAC,EAC/B,MAAM,IAAI,MAAM,6CAA6C,EAE/D,OAAOD,IAAMC,CACf,CACAO,GAAoB,UAAYV,GC/CzB,SAASW,GAAQC,EAAGC,EAAG,CAC5B,GAAIA,EAAID,EACN,MAAO,GAET,GAAIC,IAAMD,EACR,OAAOC,EAET,IAAIC,EAAOD,EAAID,GAAK,EACpB,OAAOD,GAAQC,EAAGE,CAAI,EAAIH,GAAQG,EAAO,EAAGD,CAAC,CAC/C,CCXO,SAASE,GAAmBC,EAAGC,EAAG,CACvC,GAAI,CAACC,GAAUF,CAAC,GAAKA,EAAI,EACvB,MAAM,IAAI,UAAU,0DAA0D,EAEhF,GAAI,CAACE,GAAUD,CAAC,GAAKA,EAAI,EACvB,MAAM,IAAI,UAAU,0DAA0D,EAEhF,GAAIA,EAAID,EACN,MAAM,IAAI,UAAU,mCAAmC,EASzD,QAPIG,EAAUH,EAAIC,EACdG,EAAS,EACTC,EAAiBJ,EAAIE,EAAUA,EAAU,EAAIF,EAAI,EACjDK,EAAc,EACdC,EAAcN,EAAIE,EAAUF,EAAIE,EAG3BK,EAAgBH,EAAgBG,GAAiBR,EAAG,EAAEQ,EAE7D,IADAJ,GAAUI,EACHF,GAAeC,GAAeH,EAASE,IAAgB,GAC5DF,GAAUE,EACV,EAAEA,EAIN,OAAIA,GAAeC,IACjBH,GAAUK,GAAQH,EAAaC,CAAW,GAErCH,CACT,CACAL,GAAmB,UAAY,iBChCxB,IAAIW,GAAK,KAAK,GACVC,GAAM,EAAI,KAAK,GACfC,GAAI,KAAK,EACTC,GAAM,kBCHjB,IAAIC,IAAK,SACLC,GAAK,iBACF,SAASC,GAAUC,EAAG,CAC3B,MAAO,CAACA,CACV,CACAD,GAAU,UAAYF,IACf,SAASI,GAASD,EAAGE,EAAG,CAC7B,MAAO,CAAC,EAAEF,GAAKE,EACjB,CACAD,GAAS,UAAYH,GACd,SAASK,GAAUH,EAAGE,EAAG,CAC9B,MAAO,CAAC,CAACF,GAAM,CAAC,CAACE,CACnB,CACAC,GAAU,UAAYL,GACf,SAASM,GAAUJ,EAAGE,EAAG,CAC9B,MAAO,CAAC,EAAEF,GAAKE,EACjB,CACAE,GAAU,UAAYN,GCbf,SAASO,GAAYC,EAAG,CAC7B,IAAIC,EACJ,GAAIC,GAAUF,CAAC,EACb,OAAIA,GAAK,EACA,SAASA,CAAC,EAAI,IAAW,IAE9BA,EAAI,IACC,IAEFG,GAAQ,EAAGH,EAAI,CAAC,EAEzB,GAAIA,EAAI,GACN,OAAO,KAAK,IAAM,KAAK,IAAI,KAAK,GAAKA,CAAC,EAAID,GAAY,EAAIC,CAAC,GAE7D,GAAIA,GAAK,OACP,MAAO,KAET,GAAIA,EAAI,GAAM,CAEZ,IAAII,EAAOJ,EAAIA,EACXK,EAASD,EAAOJ,EAChBM,EAAQD,EAASL,EACjBO,EAAQD,EAAQN,EACpB,OAAO,KAAK,KAAK,EAAI,KAAK,GAAKA,CAAC,EAAI,KAAK,IAAIA,EAAI,KAAK,EAAGA,CAAC,GAAK,EAAI,GAAK,GAAKA,GAAK,GAAK,IAAMI,GAAQ,KAAO,MAAQC,GAAU,KAAO,QAAUC,GAAS,QAAU,UAAYC,GAAS,SAAW,YAAcA,EAAQP,GAC1N,CACA,EAAEA,EACFC,EAAIO,GAAO,CAAC,EACZ,QAASC,EAAI,EAAGA,EAAID,GAAO,OAAQ,EAAEC,EACnCR,GAAKO,GAAOC,CAAC,GAAKT,EAAIS,GAExB,IAAIC,EAAIV,EAAIW,GAAS,GACrB,OAAO,KAAK,KAAK,EAAI,KAAK,EAAE,EAAI,KAAK,IAAID,EAAGV,EAAI,EAAG,EAAI,KAAK,IAAI,CAACU,CAAC,EAAIT,CACxE,CACAF,GAAY,UAAY,SAIjB,IAAIY,GAAS,UACTH,GAAS,CAAC,kBAAwB,kBAAuB,mBAAwB,mBAAuB,mBAAyB,qBAA2B,qBAA2B,sBAA4B,qBAA2B,uBAA4B,sBAA2B,sBAA4B,qBAA2B,uBAA4B,qBAAyB,EAKjZI,GAAY,kBACZC,IAAU,EACVC,IAAU,EAEVC,GAAe,CAAC,kBAAmB,kBAAmB,mBAAoB,kBAAmB,mBAAoB,oBAAuB,kBAAmB,EAC/J,SAASC,GAAahB,EAAG,CAC9B,GAAIA,EAAI,EAAG,MAAO,KAClB,GAAIA,IAAM,EAAG,MAAO,KACpB,GAAI,CAAC,SAASA,CAAC,EAAG,OAAOA,EACzB,GAAIA,EAAI,GAGN,OAAO,KAAK,IAAI,KAAK,GAAK,KAAK,IAAI,KAAK,GAAKA,CAAC,CAAC,EAAIgB,GAAa,EAAIhB,CAAC,EAKvEA,EAAIA,EAAI,EAKR,QAJIiB,EAAOjB,EAAIa,IAAU,GACrBK,EAAMH,GAAa,CAAC,EAGfN,EAAIK,IAAU,EAAGL,GAAK,EAAGA,IAChCS,GAAOH,GAAaN,CAAC,GAAKT,EAAIS,GAEhC,OAAOG,IAAaZ,EAAI,IAAO,KAAK,IAAIiB,CAAI,EAAIA,EAAO,KAAK,IAAIC,CAAG,CACrE,CACAF,GAAa,UAAY,SCzEzB,IAAIG,GAAK,SACLC,IAAK,iBACF,SAASC,IAAWC,EAAG,CAC5B,OAAO,KAAK,KAAKA,CAAC,CACpB,CACAD,IAAW,UAAYF,GAChB,SAASI,GAAYD,EAAG,CAC7B,OAAOE,GAAMF,CAAC,CAChB,CACAC,GAAY,UAAYJ,GACjB,SAASM,GAAWH,EAAG,CAC5B,OAAO,KAAK,KAAK,EAAIA,CAAC,CACxB,CACAG,GAAW,UAAYN,GAChB,SAASO,GAAYJ,EAAG,CAC7B,OAAO,SAASA,CAAC,GAAK,KAAK,KAAKA,EAAI,GAAKA,CAAC,EAAI,KAAK,IAAIA,GAAKA,EAAI,EAAE,GAAK,EAAI,CAC7E,CACAI,GAAY,UAAYP,GACjB,SAASQ,GAAWL,EAAG,CAC5B,OAAO,KAAK,KAAK,EAAIA,CAAC,CACxB,CACAK,GAAW,UAAYR,GAChB,SAASS,GAAYN,EAAG,CAC7B,IAAIO,EAAO,EAAIP,EACf,OAAO,KAAK,IAAIO,EAAO,KAAK,KAAKA,EAAOA,EAAO,CAAC,CAAC,CACnD,CACAD,GAAY,UAAYT,GACjB,SAASW,GAAWR,EAAG,CAC5B,OAAO,KAAK,KAAK,EAAIA,CAAC,CACxB,CACAQ,GAAW,UAAYX,GAChB,SAASY,GAAYT,EAAG,CAC7B,IAAIO,EAAO,EAAIP,EACXU,EAAM,KAAK,KAAKH,EAAOA,EAAO,CAAC,EACnC,OAAO,KAAK,IAAIG,EAAMH,CAAI,CAC5B,CACAE,GAAY,UAAYZ,GACjB,SAASc,IAAWX,EAAG,CAC5B,OAAO,KAAK,KAAKA,CAAC,CACpB,CACAW,IAAW,UAAYd,GAChB,SAASe,GAAYZ,EAAG,CAC7B,OAAOa,GAAMb,CAAC,CAChB,CACAY,GAAY,UAAYf,GACjB,SAASiB,IAAWd,EAAG,CAC5B,OAAO,KAAK,KAAKA,CAAC,CACpB,CACAc,IAAW,UAAYjB,GAChB,SAASkB,IAAYC,EAAGhB,EAAG,CAChC,OAAO,KAAK,MAAMgB,EAAGhB,CAAC,CACxB,CACAe,IAAY,UAAYjB,IACjB,SAASmB,GAAYjB,EAAG,CAC7B,OAAOkB,GAAMlB,CAAC,CAChB,CACAiB,GAAY,UAAYpB,GACjB,SAASsB,IAAUnB,EAAG,CAC3B,OAAO,KAAK,IAAIA,CAAC,CACnB,CACAmB,IAAU,UAAYtB,GACf,SAASuB,IAAWpB,EAAG,CAC5B,OAAOqB,GAAKrB,CAAC,CACf,CACAoB,IAAW,UAAYvB,GAChB,SAASyB,GAAUtB,EAAG,CAC3B,MAAO,GAAI,KAAK,IAAIA,CAAC,CACvB,CACAsB,GAAU,UAAYzB,GACf,SAAS0B,GAAWvB,EAAG,CAC5B,IAAIwB,EAAI,KAAK,IAAI,EAAIxB,CAAC,EACtB,OAAQwB,EAAI,IAAMA,EAAI,EACxB,CACAD,GAAW,UAAY1B,GAChB,SAAS4B,GAAUzB,EAAG,CAC3B,MAAO,GAAI,KAAK,IAAIA,CAAC,CACvB,CACAyB,GAAU,UAAY5B,GACf,SAAS6B,GAAW1B,EAAG,CAE5B,OAAIA,IAAM,EACD,OAAO,kBAEP,KAAK,IAAI,GAAK,KAAK,IAAIA,CAAC,EAAI,KAAK,IAAI,CAACA,CAAC,EAAE,EAAI2B,GAAK3B,CAAC,CAE9D,CACA0B,GAAW,UAAY7B,GAChB,SAAS+B,GAAU5B,EAAG,CAC3B,MAAO,GAAI,KAAK,IAAIA,CAAC,CACvB,CACA4B,GAAU,UAAY/B,GACf,SAASgC,GAAW7B,EAAG,CAC5B,MAAO,IAAK,KAAK,IAAIA,CAAC,EAAI,KAAK,IAAI,CAACA,CAAC,EACvC,CACA6B,GAAW,UAAYhC,GAChB,SAASiC,IAAU9B,EAAG,CAC3B,OAAO,KAAK,IAAIA,CAAC,CACnB,CACA8B,IAAU,UAAYjC,GACf,SAASkC,GAAW/B,EAAG,CAC5B,OAAOgC,GAAKhC,CAAC,CACf,CACA+B,GAAW,UAAYlC,GAChB,SAASoC,IAAUjC,EAAG,CAC3B,OAAO,KAAK,IAAIA,CAAC,CACnB,CACAiC,IAAU,UAAYpC,GACf,SAASqC,IAAWlC,EAAG,CAC5B,OAAOmC,GAAKnC,CAAC,CACf,CACAkC,IAAW,UAAYrC,GC9GvB,IAAIuC,GAAK,SACF,SAASC,IAAgBC,EAAG,CACjC,OAAOC,GAAUD,CAAC,CACpB,CACAD,IAAgB,UAAYD,GACrB,SAASI,GAAiBF,EAAG,CAClC,OAAOA,EAAI,CACb,CACAE,GAAiB,UAAYJ,GACtB,SAASK,GAAiBH,EAAG,CAClC,OAAOA,EAAI,CACb,CACAG,GAAiB,UAAYL,GACtB,SAASM,IAAaJ,EAAG,CAC9B,OAAOA,IAAM,CACf,CACAI,IAAa,UAAYN,GAClB,SAASO,GAAYL,EAAG,CAC7B,OAAO,OAAO,MAAMA,CAAC,CACvB,CACAK,GAAY,UAAYP,GCLjB,SAASQ,GAAYC,EAAGC,EAAG,CAChC,IAAIC,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,KAC7EC,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,EACjF,GAAID,GAAU,EACZ,MAAM,IAAI,MAAM,2CAA2C,EAE7D,GAAIC,EAAS,EACX,MAAM,IAAI,MAAM,uCAAuC,EAGzD,OAAIH,EAAE,MAAM,GAAKC,EAAE,MAAM,EAChB,GAEL,CAACD,EAAE,SAAS,GAAK,CAACC,EAAE,SAAS,EACxBD,EAAE,GAAGC,CAAC,EAGXD,EAAE,GAAGC,CAAC,EACD,GAGFD,EAAE,MAAMC,CAAC,EAAE,IAAI,EAAE,IAAID,EAAE,YAAY,IAAIA,EAAE,YAAY,IAAIA,EAAE,IAAI,EAAGC,EAAE,IAAI,CAAC,EAAE,IAAIC,CAAM,EAAGC,CAAM,CAAC,CACxG,CCjCA,IAAIC,GAAO,aACPC,IAAe,CAAC,QAAS,QAAQ,EAC1BC,GAAkCC,EAAQH,GAAMC,IAAcG,GAAQ,CAC/E,GAAI,CACF,MAAAC,EACA,OAAAC,CACF,EAAIF,EA8BJ,OAAOC,EAAML,GAAM,CACjB,OAAQO,GAAKC,GAAYD,EAAG,EAAGD,EAAO,OAAQA,EAAO,MAAM,EAAI,GAAQG,GAAiBF,CAAC,EACzF,UAAWA,GAAKC,GAAeD,EAAG,IAAIA,EAAE,YAAY,CAAC,EAAGD,EAAO,OAAQA,EAAO,MAAM,EAAI,GAAQC,EAAE,MAAM,GAAK,CAACA,EAAE,OAAO,GAAK,CAACA,EAAE,MAAM,EACrI,OAAQA,GAAKA,EAAI,GACjB,SAAUA,GAAKA,EAAE,EAAI,EAGrB,KAAMF,EAAM,YAAYK,GAAQH,GAAKF,EAAM,KAAKK,EAAMH,EAAE,UAAU,CAAC,EAAEA,EAAE,KAAK,CAAC,EAC7E,iBAAkBF,EAAM,YAAYK,GAAQH,GAAKI,GAAQJ,EAAGG,CAAI,CAAC,CACnE,CAAC,CACH,CAAC,ECjDD,IAAIE,GAAO,YACPC,IAAe,CAAC,OAAO,EAChBC,GAAiCC,EAAQH,GAAMC,IAAcG,GAAQ,CAC9E,GAAI,CACF,MAAAC,CACF,EAAID,EA+BJ,OAAOC,EAAML,GAAM,CACjB,mDAAoD,IAAM,GAC1D,oDAAqD,IAAM,GAC3D,iBAAkBK,EAAM,YAAYC,GAAQC,GAAKC,GAAQD,EAAGD,CAAI,CAAC,CACnE,CAAC,CACH,CAAC,EC1CD,IAAIG,GAAO,kBACPC,IAAe,CAAC,QAAS,WAAW,EAC7BC,GAAuCC,EAAQH,GAAMC,IAAcG,GAAQ,CACpF,GAAI,CACF,MAAAC,EACA,UAAAC,CACF,EAAIF,EAiCJ,OAAOC,EAAML,GAAM,CACjB,QAAS,IAAM,GACf,OAAQ,SAAgBO,EAAG,CACzB,OAAOA,EAAE,KAAK,EAAE,OAAS,GAAK,CAAC,MAAM,OAAOA,CAAC,CAAC,CAChD,EACA,IAAK,SAAaA,EAAG,CACnB,OAAOD,EAAUC,CAAC,CACpB,CACF,CAAC,CACH,CAAC,EC5CD,IAAIC,GAAO,aACPC,IAAe,CAAC,QAAS,QAAQ,EAC1BC,GAAkCC,EAAQH,GAAMC,IAAcG,GAAQ,CAC/E,GAAI,CACF,MAAAC,EACA,OAAAC,CACF,EAAIF,EAgCJ,OAAOC,EAAML,GAAM,CACjB,OAAQO,GAAKC,GAAYD,EAAG,EAAGD,EAAO,OAAQA,EAAO,MAAM,EAAI,GAAQG,GAAiBF,CAAC,EACzF,UAAWA,GAAKC,GAAeD,EAAG,IAAIA,EAAE,YAAY,CAAC,EAAGD,EAAO,OAAQA,EAAO,MAAM,EAAI,GAAQ,CAACC,EAAE,MAAM,GAAK,CAACA,EAAE,OAAO,GAAK,CAACA,EAAE,MAAM,EACtI,OAAQA,GAAKA,EAAI,GACjB,SAAUA,GAAKA,EAAE,EAAI,GAAKA,EAAE,EAAI,EAChC,KAAMF,EAAM,YAAYK,GAAQH,GAAKF,EAAM,KAAKK,EAAMH,EAAE,UAAU,CAAC,EAAEA,EAAE,KAAK,CAAC,EAC7E,iBAAkBF,EAAM,YAAYK,GAAQH,GAAKI,GAAQJ,EAAGG,CAAI,CAAC,CACnE,CAAC,CACH,CAAC,ECjDD,IAAIE,GAAO,SACPC,IAAe,CAAC,QAAS,aAAa,EAC/BC,GAA8BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC3E,GAAI,CACF,MAAAC,EACA,YAAAC,CACF,EAAIF,EAkCJ,OAAOC,EAAML,GAAM,CACjB,0CAA2CO,GAAKD,EAAYC,EAAG,CAAC,EAChE,OAAQA,GAAKA,IAAM,GACnB,KAAMF,EAAM,YAAYG,GAAQD,GAAKF,EAAM,KAAKG,EAAMD,EAAE,UAAU,CAAC,EAAEA,EAAE,KAAK,CAAC,EAC7E,iBAAkBF,EAAM,YAAYG,GAAQD,GAAKE,GAAQF,EAAGC,CAAI,CAAC,CACnE,CAAC,CACH,CAAC,EC7CD,IAAIE,GAAO,QACPC,IAAe,CAAC,OAAO,EAChBC,GAA6BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC1E,GAAI,CACF,MAAAC,CACF,EAAID,EA8BJ,OAAOC,EAAML,GAAM,CACjB,OAAQM,GACR,UAAW,SAAmBC,EAAG,CAC/B,OAAOA,EAAE,MAAM,CACjB,EACA,OAAQ,SAAgBA,EAAG,CACzB,MAAO,EACT,EACA,SAAU,SAAkBA,EAAG,CAC7B,MAAO,EACT,EACA,QAAS,SAAiBA,EAAG,CAC3B,OAAOA,EAAE,MAAM,CACjB,EACA,KAAM,SAAcA,EAAG,CACrB,OAAO,OAAO,MAAMA,EAAE,KAAK,CAC7B,EACA,iBAAkBF,EAAM,YAAYG,GAAQD,GAAKE,GAAQF,EAAGC,CAAI,CAAC,CACnE,CAAC,CACH,CAAC,ECvDD,IAAIE,GAAO,SACPC,IAAe,CAAC,OAAO,EAChBC,GAA8BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC3E,GAAI,CACF,MAAAC,CACF,EAAID,EAsDJ,OAAOC,EAAML,GAAM,CACjB,IAAKM,EACP,CAAC,CACH,CAAC,ECrDM,SAASC,GAAcC,EAAGC,EAAGC,EAAQC,EAAQ,CAClD,OAAOC,GAAYJ,EAAE,GAAIC,EAAE,GAAIC,EAAQC,CAAM,GAAKC,GAAYJ,EAAE,GAAIC,EAAE,GAAIC,EAAQC,CAAM,CAC1F,CCZO,IAAIE,GAAoCC,EAAQ,eAAgB,CAAC,OAAO,EAAGC,GAAQ,CACxF,GAAI,CACF,MAAAC,CACF,EAAID,EACJ,MAAO,CACL,aAAcC,EAAM,YAAYC,GAAQ,CAACC,EAAGC,IAAM,CAChD,GAAI,CAACD,EAAE,UAAUC,CAAC,EAChB,MAAM,IAAI,MAAM,0CAA0C,EAE5D,OAAOH,EAAM,KAAKC,EAAM,CAACC,EAAE,UAAU,EAAGC,EAAE,UAAU,CAAC,CAAC,EAAED,EAAE,MAAOC,EAAE,KAAK,CAC1E,CAAC,CACH,CACF,CAAC,ECRD,IAAIC,GAAO,cACPC,IAAe,CAAC,QAAS,QAAQ,EAC1BC,GAAmCC,EAAQH,GAAMC,IAAcG,GAAQ,CAChF,GAAI,CACF,MAAAC,EACA,OAAAC,CACF,EAAIF,EACAG,EAAeC,GAAmB,CACpC,MAAAH,CACF,CAAC,EAUD,OAAOA,EAAML,GAAM,CACjB,mBAAoB,SAAyBS,EAAGC,EAAG,CACjD,OAAOD,IAAMC,CACf,EACA,iBAAkB,SAAuBD,EAAGC,EAAG,CAC7C,OAAOC,GAAYF,EAAGC,EAAGJ,EAAO,OAAQA,EAAO,MAAM,CACvD,EACA,uBAAwB,SAA6BG,EAAGC,EAAG,CACzD,OAAOD,EAAE,GAAGC,CAAC,GAAKC,GAAeF,EAAGC,EAAGJ,EAAO,OAAQA,EAAO,MAAM,CACrE,EACA,iBAAkB,SAAuBG,EAAGC,EAAG,CAC7C,OAAOD,IAAMC,CACf,EACA,qBAAsB,SAA2BD,EAAGC,EAAG,CACrD,OAAOD,EAAE,OAAOC,CAAC,CACnB,EACA,mBAAoB,SAAyBD,EAAGC,EAAG,CACjD,OAAOE,GAAcH,EAAGC,EAAGJ,EAAO,OAAQA,EAAO,MAAM,CACzD,CACF,EAAGC,CAAY,CACjB,CAAC,EACUM,IAA0BV,EAAQH,GAAM,CAAC,QAAS,QAAQ,EAAGc,GAAS,CAC/E,GAAI,CACF,MAAAT,EACA,OAAAC,CACF,EAAIQ,EACJ,OAAOT,EAAML,GAAM,CACjB,iBAAkB,SAAuBS,EAAGC,EAAG,CAC7C,OAAOC,GAAYF,EAAGC,EAAGJ,EAAO,OAAQA,EAAO,MAAM,CACvD,CACF,CAAC,CACH,CAAC,EC/CD,IAAIS,IAAO,eACPC,IAAe,CAAC,QAAS,cAAe,QAAQ,EACzCC,GAAyCC,EAAQH,IAAMC,IAAcG,GAAQ,CACtF,GAAI,CACF,MAAAC,EACA,YAAAC,EACA,OAAAC,CACF,EAAIH,EAOJ,SAASI,EAAaC,EAAMC,EAAU,CACpC,GAAI,EAAE,gBAAgBF,GACpB,MAAM,IAAI,YAAY,kDAAkD,EAE1E,GAAIE,GAAY,CAACC,GAASD,CAAQ,EAChC,MAAM,IAAI,MAAM,qBAAuBA,CAAQ,EAEjD,GAAIE,GAASH,CAAI,EAEfI,EAAkB,KAAMJ,EAAMC,CAAQ,UAC7BD,GAAQK,GAAQL,EAAK,KAAK,GAAKK,GAAQL,EAAK,GAAG,GAAKK,GAAQL,EAAK,IAAI,EAE9E,KAAK,QAAUA,EAAK,OACpB,KAAK,OAASA,EAAK,MACnB,KAAK,KAAOA,EAAK,IACjB,KAAK,MAAQA,EAAK,KAClB,KAAK,UAAYC,GAAYD,EAAK,iBACzBK,GAAQL,CAAI,EAErBM,EAAiB,KAAMN,EAAMC,CAAQ,MAChC,IAAID,EAET,MAAM,IAAI,UAAU,6BAA+BO,GAAOP,CAAI,EAAI,GAAG,EAGrE,KAAK,QAAU,CAAC,EAChB,KAAK,OAAS,CAAC,EACf,KAAK,KAAO,CAAC,CAAC,EACd,KAAK,MAAQ,CAAC,EAAG,CAAC,EAClB,KAAK,UAAYC,EAErB,CACA,SAASG,EAAkBI,EAAQC,EAAQR,EAAU,CAE/CQ,EAAO,OAAS,gBAElBD,EAAO,QAAUC,EAAO,QAAUC,GAAMD,EAAO,OAAO,EAAI,OAC1DD,EAAO,OAASE,GAAMD,EAAO,MAAM,EACnCD,EAAO,KAAOE,GAAMD,EAAO,IAAI,EAC/BD,EAAO,MAAQE,GAAMD,EAAO,KAAK,EACjCD,EAAO,UAAYP,GAAYQ,EAAO,WAGtCH,EAAiBE,EAAQC,EAAO,QAAQ,EAAGR,GAAYQ,EAAO,SAAS,CAE3E,CACA,SAASH,EAAiBE,EAAQR,EAAMC,EAAU,CAEhDO,EAAO,QAAU,CAAC,EAClBA,EAAO,OAAS,CAAC,EACjBA,EAAO,KAAO,CAAC,EACfA,EAAO,UAAYP,EAEnB,IAAIU,EAAOX,EAAK,OACZY,EAAU,EAGVC,EAAKhB,EAELiB,EAAO,EASX,GARIZ,GAASD,CAAQ,IAEnBY,EAAKjB,EAAM,KAAKC,EAAa,CAACI,EAAUA,CAAQ,CAAC,GAAKJ,EAEtDiB,EAAOlB,EAAM,QAAQ,EAAGK,CAAQ,GAI9BU,EAAO,EAAG,CAEZ,IAAII,EAAI,EACR,EAAG,CAEDP,EAAO,KAAK,KAAKA,EAAO,OAAO,MAAM,EAErC,QAASQ,EAAI,EAAGA,EAAIL,EAAMK,IAAK,CAE7B,IAAIC,EAAMjB,EAAKgB,CAAC,EAEhB,GAAIX,GAAQY,CAAG,GAMb,GAJIF,IAAM,GAAKH,EAAUK,EAAI,SAC3BL,EAAUK,EAAI,QAGZF,EAAIE,EAAI,OAAQ,CAElB,IAAIC,EAAID,EAAIF,CAAC,EAERF,EAAGK,EAAGJ,CAAI,IAEbN,EAAO,QAAQ,KAAKU,CAAC,EAErBV,EAAO,OAAO,KAAKQ,CAAC,EAExB,OAGID,IAAM,GAAKH,EAAU,IACvBA,EAAU,GAGPC,EAAGI,EAAKH,CAAI,IAEfN,EAAO,QAAQ,KAAKS,CAAG,EAEvBT,EAAO,OAAO,KAAKQ,CAAC,EAG1B,CAEAD,GACF,OAASA,EAAIH,EACf,CAEAJ,EAAO,KAAK,KAAKA,EAAO,OAAO,MAAM,EAErCA,EAAO,MAAQ,CAACG,EAAMC,CAAO,CAC/B,CACAb,EAAa,UAAY,IAAID,EAK7BC,EAAa,UAAU,mBAAqB,SAAUC,EAAMC,EAAU,CACpE,OAAO,IAAIF,EAAaC,EAAMC,CAAQ,CACxC,EAKA,OAAO,eAAeF,EAAc,OAAQ,CAC1C,MAAO,cACT,CAAC,EACDA,EAAa,UAAU,YAAcA,EACrCA,EAAa,UAAU,KAAO,eAC9BA,EAAa,UAAU,eAAiB,GAWxCA,EAAa,UAAU,YAAc,UAAY,CAC/C,OAAOoB,GAAiB,KAAK,QAASZ,EAAM,CAC9C,EAWAR,EAAa,UAAU,QAAU,UAAY,CAC3C,MAAO,QACT,EAWAA,EAAa,UAAU,SAAW,UAAY,CAC5C,OAAO,KAAK,SACd,EAQAA,EAAa,UAAU,OAAS,SAAUC,EAAMC,EAAU,CACxD,OAAO,IAAIF,EAAaC,EAAMC,CAAQ,CACxC,EAWAF,EAAa,UAAU,QAAU,UAAY,CAE3C,IAAIY,EAAO,KAAK,MAAM,CAAC,EACnBC,EAAU,KAAK,MAAM,CAAC,EAE1B,OAAOD,IAAS,GAAKC,IAAY,EAAI,KAAK,OAAO,QAAUD,EAAOC,GAAW,CAC/E,EAgBAb,EAAa,UAAU,OAAS,SAAUqB,EAAOC,EAAaC,EAAc,CAE1E,GAAI,CAAC,KAAK,QACR,MAAM,IAAI,MAAM,+CAA+C,EAIjE,OAAQ,UAAU,OAAQ,CACxB,IAAK,GACH,OAAOC,EAAW,KAAMH,CAAK,EAG/B,IAAK,GACL,IAAK,GACH,OAAOI,EAAW,KAAMJ,EAAOC,EAAaC,CAAY,EAC1D,QACE,MAAM,IAAI,YAAY,2BAA2B,CACrD,CACF,EACA,SAASC,EAAWf,EAAQiB,EAAK,CAE/B,GAAI,CAACC,GAAQD,CAAG,EACd,MAAM,IAAI,UAAU,eAAe,EAErC,IAAIE,EAAWF,EAAI,SAAS,EAC5B,GAAIE,EAEF,OAAOnB,EAAO,IAAIiB,EAAI,IAAI,CAAC,EAG7B,IAAIG,EAAOH,EAAI,KAAK,EACpB,GAAIG,EAAK,SAAWpB,EAAO,MAAM,OAC/B,MAAM,IAAIqB,GAAeD,EAAK,OAAQpB,EAAO,MAAM,MAAM,EAI3D,IAAIQ,EAAGc,EAAIC,EAAGC,EAGVC,EAAMR,EAAI,IAAI,EACdS,EAAMT,EAAI,IAAI,EAClB,IAAKT,EAAI,EAAGc,EAAKtB,EAAO,MAAM,OAAQQ,EAAIc,EAAId,IAC5CmB,GAAcF,EAAIjB,CAAC,EAAGR,EAAO,MAAMQ,CAAC,CAAC,EACrCmB,GAAcD,EAAIlB,CAAC,EAAGR,EAAO,MAAMQ,CAAC,CAAC,EAIvC,IAAIoB,EAAU5B,EAAO,QACjB6B,EAAS7B,EAAO,OAChB8B,EAAO9B,EAAO,KAGdG,EAAOc,EAAI,UAAU,CAAC,EACtBb,EAAUa,EAAI,UAAU,CAAC,EAGzBc,EAAI,CAAC,EACLC,EAAK,CAAC,EAGV7B,EAAK,QAAQ,SAAUK,EAAGyB,GAAG,CAE3BD,EAAGxB,CAAC,EAAIyB,GAAE,CAAC,EAEXF,EAAEvB,CAAC,EAAI,EACT,CAAC,EAGD,IAAI0B,EAASN,EAAU,CAAC,EAAI,OACxBhB,EAAQ,CAAC,EACTuB,GAAM,CAAC,EAGX,OAAA/B,EAAQ,QAAQ,SAAUG,EAAG,CAI3B,IAFA4B,GAAI,KAAKvB,EAAM,MAAM,EAEhBW,EAAIO,EAAKvB,CAAC,EAAGiB,EAAKM,EAAKvB,EAAI,CAAC,EAAGgB,EAAIC,EAAID,IAE1Cf,EAAIqB,EAAON,CAAC,EAERQ,EAAEvB,CAAC,IAAM,KAEXI,EAAM,KAAKoB,EAAGxB,CAAC,CAAC,EAEZ0B,GACFA,EAAO,KAAKN,EAAQL,CAAC,CAAC,EAI9B,CAAC,EAEDY,GAAI,KAAKvB,EAAM,MAAM,EAGd,IAAIrB,EAAa,CACtB,OAAA2C,EACA,MAAAtB,EACA,IAAAuB,GACA,KAAAf,EACA,SAAUpB,EAAO,SACnB,CAAC,CACH,CACA,SAASgB,EAAWhB,EAAQY,EAAOwB,EAAWtB,EAAc,CAE1D,GAAI,CAACF,GAASA,EAAM,UAAY,GAC9B,MAAM,IAAI,UAAU,eAAe,EAIrC,IAAIyB,EAAQzB,EAAM,KAAK,EACnBO,EAAWP,EAAM,SAAS,EAG1B0B,EAYJ,GAXI3C,GAASyC,CAAS,GAEpBE,EAAQF,EAAU,KAAK,EAEvBA,EAAYA,EAAU,QAAQ,GAG9BE,EAAQC,GAAUH,CAAS,EAIzBjB,EAAU,CAEZ,GAAImB,EAAM,SAAW,EACnB,MAAM,IAAI,UAAU,iBAAiB,EAGvCtC,EAAO,IAAIY,EAAM,IAAI,EAAGwB,EAAWtB,CAAY,CACjD,KAAO,CAEL,GAAIuB,EAAM,SAAW,GAAKA,EAAM,SAAW,EACzC,MAAM,IAAIhB,GAAegB,EAAM,OAAQrC,EAAO,MAAM,OAAQ,GAAG,EAIjE,GAAIsC,EAAM,OAASD,EAAM,OAAQ,CAI/B,QAFI7B,EAAI,EACJgC,EAAQ,EACLH,EAAM7B,CAAC,IAAM,GAAK8B,EAAM9B,CAAC,IAAM,GACpCA,IAEF,KAAO6B,EAAM7B,CAAC,IAAM,GAClBgC,IACAhC,IAGF4B,EAAYK,GAAUL,EAAWC,EAAM,OAAQG,EAAOF,CAAK,CAC7D,CAGA,GAAI,CAACI,GAAgBL,EAAOC,CAAK,EAC/B,MAAM,IAAIjB,GAAegB,EAAOC,EAAO,GAAG,EAI5C,GAAID,EAAM,SAAW,EAAG,CAEtB,IAAIM,EAAQ/B,EAAM,UAAU,CAAC,EAC7B+B,EAAM,QAAQ,SAAUC,EAAWC,EAAU,CAC3ClB,GAAciB,CAAS,EACvB5C,EAAO,IAAI,CAAC4C,EAAW,CAAC,EAAGR,EAAUS,EAAS,CAAC,CAAC,EAAG/B,CAAY,CACjE,CAAC,CACH,KAAO,CAEL,IAAIgC,EAAsBlC,EAAM,UAAU,CAAC,EACvCmC,EAAuBnC,EAAM,UAAU,CAAC,EAC5CkC,EAAoB,QAAQ,SAAUE,EAAgBC,EAAe,CACnEtB,GAAcqB,CAAc,EAC5BD,EAAqB,QAAQ,SAAUG,EAAiBC,EAAgB,CACtExB,GAAcuB,CAAe,EAC7BlD,EAAO,IAAI,CAACgD,EAAgBE,CAAe,EAAGd,EAAUa,EAAc,CAAC,CAAC,EAAEE,EAAe,CAAC,CAAC,EAAGrC,CAAY,CAC5G,CAAC,CACH,CAAC,CACH,CACF,CACA,OAAOd,CACT,CAQAT,EAAa,UAAU,IAAM,SAAUqB,EAAO,CAC5C,GAAI,CAACf,GAAQe,CAAK,EAChB,MAAM,IAAI,UAAU,gBAAgB,EAEtC,GAAIA,EAAM,SAAW,KAAK,MAAM,OAC9B,MAAM,IAAIS,GAAeT,EAAM,OAAQ,KAAK,MAAM,MAAM,EAI1D,GAAI,CAAC,KAAK,QACR,MAAM,IAAI,MAAM,4CAA4C,EAI9D,IAAIJ,EAAII,EAAM,CAAC,EACXL,EAAIK,EAAM,CAAC,EAGfe,GAAcnB,EAAG,KAAK,MAAM,CAAC,CAAC,EAC9BmB,GAAcpB,EAAG,KAAK,MAAM,CAAC,CAAC,EAG9B,IAAIgB,EAAI6B,EAAe5C,EAAG,KAAK,KAAKD,CAAC,EAAG,KAAK,KAAKA,EAAI,CAAC,EAAG,KAAK,MAAM,EAErE,OAAIgB,EAAI,KAAK,KAAKhB,EAAI,CAAC,GAAK,KAAK,OAAOgB,CAAC,IAAMf,EACtC,KAAK,QAAQe,CAAC,EAEhB,CACT,EAYAhC,EAAa,UAAU,IAAM,SAAUqB,EAAOF,EAAGI,EAAc,CAC7D,GAAI,CAACjB,GAAQe,CAAK,EAChB,MAAM,IAAI,UAAU,gBAAgB,EAEtC,GAAIA,EAAM,SAAW,KAAK,MAAM,OAC9B,MAAM,IAAIS,GAAeT,EAAM,OAAQ,KAAK,MAAM,MAAM,EAI1D,GAAI,CAAC,KAAK,QACR,MAAM,IAAI,MAAM,4CAA4C,EAI9D,IAAIJ,EAAII,EAAM,CAAC,EACXL,EAAIK,EAAM,CAAC,EAGXT,EAAO,KAAK,MAAM,CAAC,EACnBC,EAAU,KAAK,MAAM,CAAC,EAGtBC,EAAKhB,EAELiB,EAAO,EACPZ,GAAS,KAAK,SAAS,IAEzBW,EAAKjB,EAAM,KAAKC,EAAa,CAAC,KAAK,UAAW,KAAK,SAAS,CAAC,GAAKA,EAElEiB,EAAOlB,EAAM,QAAQ,EAAG,KAAK,SAAS,IAIpCoB,EAAIL,EAAO,GAAKI,EAAIH,EAAU,KAEhCiD,EAAQ,KAAM,KAAK,IAAI7C,EAAI,EAAGL,CAAI,EAAG,KAAK,IAAII,EAAI,EAAGH,CAAO,EAAGU,CAAY,EAE3EX,EAAO,KAAK,MAAM,CAAC,EACnBC,EAAU,KAAK,MAAM,CAAC,GAIxBuB,GAAcnB,EAAGL,CAAI,EACrBwB,GAAcpB,EAAGH,CAAO,EAGxB,IAAImB,EAAI6B,EAAe5C,EAAG,KAAK,KAAKD,CAAC,EAAG,KAAK,KAAKA,EAAI,CAAC,EAAG,KAAK,MAAM,EAErE,OAAIgB,EAAI,KAAK,KAAKhB,EAAI,CAAC,GAAK,KAAK,OAAOgB,CAAC,IAAMf,EAExCH,EAAGK,EAAGJ,CAAI,EAKbgD,EAAQ/B,EAAGhB,EAAG,KAAK,QAAS,KAAK,OAAQ,KAAK,IAAI,EAHlD,KAAK,QAAQgB,CAAC,EAAIb,EAMfL,EAAGK,EAAGJ,CAAI,GAEbiD,EAAQhC,EAAGf,EAAGD,EAAGG,EAAG,KAAK,QAAS,KAAK,OAAQ,KAAK,IAAI,EAGrD,IACT,EACA,SAAS0C,EAAe5C,EAAGgD,EAAKC,EAAQ7C,EAAO,CAE7C,GAAI6C,EAASD,IAAQ,EACnB,OAAOC,EAGT,QAASxB,EAAIuB,EAAKvB,EAAIwB,EAAQxB,IAE5B,GAAIrB,EAAMqB,CAAC,IAAMzB,EACf,OAAOyB,EAIX,OAAOuB,CACT,CACA,SAASF,EAAQ/B,EAAGhB,EAAG2B,EAAQtB,EAAOuB,EAAK,CAEzCD,EAAO,OAAOX,EAAG,CAAC,EAClBX,EAAM,OAAOW,EAAG,CAAC,EAEjB,QAASmC,EAAInD,EAAI,EAAGmD,EAAIvB,EAAI,OAAQuB,IAClCvB,EAAIuB,CAAC,GAET,CACA,SAASH,EAAQhC,EAAGf,EAAGD,EAAGG,EAAGwB,EAAQtB,EAAOuB,EAAK,CAE/CD,EAAO,OAAOX,EAAG,EAAGb,CAAC,EAErBE,EAAM,OAAOW,EAAG,EAAGf,CAAC,EAEpB,QAASkD,EAAInD,EAAI,EAAGmD,EAAIvB,EAAI,OAAQuB,IAClCvB,EAAIuB,CAAC,GAET,CAiBAnE,EAAa,UAAU,OAAS,SAAU6B,EAAMN,EAAc6C,EAAM,CAElE,GAAI,CAACC,GAAaxC,CAAI,EACpB,MAAM,IAAI,UAAU,0BAA0B,EAIhD,IAAIyC,EAAYzC,EAAK,QAAQ,EAAE,IAAI0C,GAC1B,MAAM,QAAQA,CAAK,GAAKA,EAAM,SAAW,EAAIA,EAAM,CAAC,EAAIA,CAChE,EACD,GAAID,EAAU,SAAW,EACvB,MAAM,IAAI,MAAM,0CAA0C,EAI5DA,EAAU,QAAQ,SAAUC,EAAO,CACjC,GAAI,CAACC,GAASD,CAAK,GAAK,CAACE,GAAUF,CAAK,GAAKA,EAAQ,EACnD,MAAM,IAAI,UAAU,uDAA8DG,GAAOJ,CAAS,EAAI,GAAG,CAE7G,CAAC,EAGD,IAAIK,EAAIP,EAAO,KAAK,MAAM,EAAI,KAE9B,OAAON,EAAQa,EAAGL,EAAU,CAAC,EAAGA,EAAU,CAAC,EAAG/C,CAAY,CAC5D,EACA,SAASuC,EAAQrD,EAAQG,EAAMC,EAASU,EAAc,CAEpD,IAAIgD,EAAQhD,GAAgB,EAGxBT,EAAKhB,EAELiB,EAAO,EACPZ,GAASM,EAAO,SAAS,IAE3BK,EAAKjB,EAAM,KAAKC,EAAa,CAACW,EAAO,UAAWA,EAAO,SAAS,CAAC,GAAKX,EAEtEiB,EAAOlB,EAAM,QAAQ,EAAGY,EAAO,SAAS,EAExC8D,EAAQ1E,EAAM,QAAQ0E,EAAO9D,EAAO,SAAS,GAI/C,IAAImE,EAAM,CAAC9D,EAAGyD,EAAOxD,CAAI,EAGrB2B,EAAIjC,EAAO,MAAM,CAAC,EAClBoE,EAAIpE,EAAO,MAAM,CAAC,EAClBQ,EAAGD,EAAGgB,EAGV,GAAInB,EAAUgE,EAAG,CAEf,IAAK7D,EAAI6D,EAAG7D,EAAIH,EAASG,IAIvB,GAFAP,EAAO,KAAKO,CAAC,EAAIP,EAAO,QAAQ,OAE5BmE,EAEF,IAAK3D,EAAI,EAAGA,EAAIyB,EAAGzB,IAEjBR,EAAO,QAAQ,KAAK8D,CAAK,EAEzB9D,EAAO,OAAO,KAAKQ,CAAC,EAK1BR,EAAO,KAAKI,CAAO,EAAIJ,EAAO,QAAQ,MACxC,MAAWI,EAAUgE,IAEnBpE,EAAO,KAAK,OAAOI,EAAU,EAAGgE,EAAIhE,CAAO,EAE3CJ,EAAO,QAAQ,OAAOA,EAAO,KAAKI,CAAO,EAAGJ,EAAO,QAAQ,MAAM,EACjEA,EAAO,OAAO,OAAOA,EAAO,KAAKI,CAAO,EAAGJ,EAAO,OAAO,MAAM,GAMjE,GAHAoE,EAAIhE,EAGAD,EAAO8B,GAET,GAAIkC,EAAK,CAEP,IAAIE,EAAI,EAER,IAAK9D,EAAI,EAAGA,EAAI6D,EAAG7D,IAAK,CAEtBP,EAAO,KAAKO,CAAC,EAAIP,EAAO,KAAKO,CAAC,EAAI8D,EAElC9C,EAAIvB,EAAO,KAAKO,EAAI,CAAC,EAAI8D,EAEzB,IAAIC,EAAI,EAER,IAAK9D,EAAIyB,EAAGzB,EAAIL,EAAMK,IAAK8D,IAEzBtE,EAAO,QAAQ,OAAOuB,EAAI+C,EAAG,EAAGR,CAAK,EAErC9D,EAAO,OAAO,OAAOuB,EAAI+C,EAAG,EAAG9D,CAAC,EAEhC6D,GAEJ,CAEArE,EAAO,KAAKoE,CAAC,EAAIpE,EAAO,QAAQ,MAClC,UACSG,EAAO8B,EAAG,CAEnB,IAAIsC,EAAI,EAER,IAAKhE,EAAI,EAAGA,EAAI6D,EAAG7D,IAAK,CAEtBP,EAAO,KAAKO,CAAC,EAAIP,EAAO,KAAKO,CAAC,EAAIgE,EAElC,IAAIC,EAAKxE,EAAO,KAAKO,CAAC,EAClBkE,EAAKzE,EAAO,KAAKO,EAAI,CAAC,EAAIgE,EAE9B,IAAKhD,EAAIiD,EAAIjD,EAAIkD,EAAIlD,IAEnBf,EAAIR,EAAO,OAAOuB,CAAC,EAEff,EAAIL,EAAO,IAEbH,EAAO,QAAQ,OAAOuB,EAAG,CAAC,EAE1BvB,EAAO,OAAO,OAAOuB,EAAG,CAAC,EAEzBgD,IAGN,CAEAvE,EAAO,KAAKO,CAAC,EAAIP,EAAO,QAAQ,MAClC,CAEA,OAAAA,EAAO,MAAM,CAAC,EAAIG,EAClBH,EAAO,MAAM,CAAC,EAAII,EAEXJ,CACT,CAkBAT,EAAa,UAAU,QAAU,SAAUmF,EAAOf,EAAM,CAEtD,GAAI,CAAC9D,GAAQ6E,CAAK,EAChB,MAAM,IAAI,UAAU,gBAAgB,EAEtC,GAAIA,EAAM,SAAW,EACnB,MAAM,IAAI,MAAM,wDAAwD,EAI1EA,EAAM,QAAQ,SAAUZ,EAAO,CAC7B,GAAI,CAACC,GAASD,CAAK,GAAK,CAACE,GAAUF,CAAK,GAAKA,GAAS,IAAMA,IAAU,EACpE,MAAM,IAAI,UAAU,6DAAoEG,GAAOS,CAAK,EAAI,GAAG,CAE/G,CAAC,EACD,IAAIC,EAAgB,KAAK,MAAM,CAAC,EAAI,KAAK,MAAM,CAAC,EAChDD,EAAQE,GAAqBF,EAAOC,CAAa,EACjD,IAAIE,EAAYH,EAAM,CAAC,EAAIA,EAAM,CAAC,EAGlC,GAAIC,IAAkBE,EACpB,MAAM,IAAI,MAAM,qEAAqE,EAIvF,IAAIX,EAAIP,EAAO,KAAK,MAAM,EAAI,KAG9B,GAAI,KAAK,MAAM,CAAC,IAAMe,EAAM,CAAC,GAAK,KAAK,MAAM,CAAC,IAAMA,EAAM,CAAC,EACzD,OAAOR,EAKT,QADIY,EAAW,CAAC,EACPtE,EAAI,EAAGA,EAAI0D,EAAE,KAAK,OAAQ1D,IACjC,QAASD,EAAI,EAAGA,EAAI2D,EAAE,KAAK1D,EAAI,CAAC,EAAI0D,EAAE,KAAK1D,CAAC,EAAGD,IAC7CuE,EAAS,KAAKtE,CAAC,EAWnB,QANI0B,EAASgC,EAAE,QAAQ,MAAM,EAGzBa,EAAWb,EAAE,OAAO,MAAM,EAGrBc,EAAK,EAAGA,EAAKd,EAAE,OAAO,OAAQc,IAAM,CAC3C,IAAIC,EAAKF,EAASC,CAAE,EAChBE,EAAKJ,EAASE,CAAE,EAChBG,EAAOF,EAAKf,EAAE,MAAM,CAAC,EAAIgB,EAC7BJ,EAASE,CAAE,EAAIG,EAAOT,EAAM,CAAC,EAC7BK,EAASC,CAAE,EAAI,KAAK,MAAMG,EAAOT,EAAM,CAAC,CAAC,CAC3C,CASAR,EAAE,QAAQ,OAAS,EACnBA,EAAE,OAAO,OAAS,EAClBA,EAAE,KAAK,OAASQ,EAAM,CAAC,EAAI,EAC3BR,EAAE,MAAQQ,EAAM,MAAM,EACtB,QAASU,EAAM,EAAGA,EAAMlB,EAAE,KAAK,OAAQkB,IACrClB,EAAE,KAAKkB,CAAG,EAAI,EAKhB,QAASC,EAAI,EAAGA,EAAInD,EAAO,OAAQmD,IAAK,CACtC,IAAIC,EAAMP,EAASM,CAAC,EAChBE,EAAKT,EAASO,CAAC,EACf3E,EAAIwB,EAAOmD,CAAC,EACZ9D,GAAI6B,EAAekC,EAAKpB,EAAE,KAAKqB,CAAE,EAAGrB,EAAE,KAAKqB,EAAK,CAAC,EAAGrB,EAAE,MAAM,EAChEX,EAAQhC,GAAG+D,EAAKC,EAAI7E,EAAGwD,EAAE,QAASA,EAAE,OAAQA,EAAE,IAAI,CACpD,CAIA,OAAOA,CACT,EAOA3E,EAAa,UAAU,MAAQ,UAAY,CACzC,IAAI2E,EAAI,IAAI3E,EAAa,CACvB,OAAQ,KAAK,QAAUW,GAAM,KAAK,OAAO,EAAI,OAC7C,MAAOA,GAAM,KAAK,MAAM,EACxB,IAAKA,GAAM,KAAK,IAAI,EACpB,KAAMA,GAAM,KAAK,KAAK,EACtB,SAAU,KAAK,SACjB,CAAC,EACD,OAAOgE,CACT,EAOA3E,EAAa,UAAU,KAAO,UAAY,CACxC,OAAO,KAAK,MAAM,MAAM,CAAC,CAC3B,EAaAA,EAAa,UAAU,IAAM,SAAUiG,EAAUC,EAAW,CAE1D,GAAI,CAAC,KAAK,QACR,MAAM,IAAI,MAAM,4CAA4C,EAG9D,IAAIC,EAAK,KAELvF,EAAO,KAAK,MAAM,CAAC,EACnBC,EAAU,KAAK,MAAM,CAAC,EACtBuF,EAAeC,GAAiBJ,EAAUE,EAAI,KAAK,EAEnDG,EAAS,SAAgBnF,EAAGF,EAAGD,EAAG,CAEpC,OAAOoF,EAAajF,EAAG,CAACF,EAAGD,CAAC,EAAGmF,CAAE,CACnC,EAEA,OAAOI,EAAK,KAAM,EAAG3F,EAAO,EAAG,EAAGC,EAAU,EAAGyF,EAAQJ,CAAS,CAClE,EAMA,SAASK,EAAK9F,EAAQ+F,EAAQC,EAAQC,EAAWC,EAAWV,EAAUC,EAAW,CAE/E,IAAIvD,EAAS,CAAC,EACVtB,EAAQ,CAAC,EACTuB,EAAM,CAAC,EAGP9B,EAAKhB,EAELiB,EAAO,EACPZ,GAASM,EAAO,SAAS,IAE3BK,EAAKjB,EAAM,KAAKC,EAAa,CAACW,EAAO,UAAWA,EAAO,SAAS,CAAC,GAAKX,EAEtEiB,EAAOlB,EAAM,QAAQ,EAAGY,EAAO,SAAS,GAgB1C,QAZI6F,EAAS,SAAgBnF,GAAGgD,GAAGyC,GAAG,CAEpC,IAAIrC,GAAQ0B,EAAS9E,GAAGgD,GAAGyC,EAAC,EAEvB9F,EAAGyD,GAAOxD,CAAI,IAEjB4B,EAAO,KAAK4B,EAAK,EAEjBlD,EAAM,KAAK8C,EAAC,EAEhB,EAESnD,EAAI0F,EAAW1F,GAAK2F,EAAW3F,IAAK,CAE3C4B,EAAI,KAAKD,EAAO,MAAM,EAEtB,IAAIsC,EAAKxE,EAAO,KAAKO,CAAC,EAClBkE,EAAKzE,EAAO,KAAKO,EAAI,CAAC,EAC1B,GAAIkF,EAEF,QAASlE,EAAIiD,EAAIjD,EAAIkD,EAAIlD,IAAK,CAE5B,IAAIf,EAAIR,EAAO,OAAOuB,CAAC,EAEnBf,GAAKuF,GAAUvF,GAAKwF,GAEtBH,EAAO7F,EAAO,QAAQuB,CAAC,EAAGf,EAAIuF,EAAQxF,EAAI0F,CAAS,CAEvD,KACK,CAGL,QADIG,EAAU,CAAC,EACNC,GAAK7B,EAAI6B,GAAK5B,EAAI4B,KAAM,CAC/B,IAAIC,EAAMtG,EAAO,OAAOqG,EAAE,EAC1BD,EAAQE,CAAG,EAAItG,EAAO,QAAQqG,EAAE,CAClC,CAIA,QAASE,GAAMR,EAAQQ,IAAOP,EAAQO,KAAO,CAC3C,IAAIzC,GAAQyC,MAAOH,EAAUA,EAAQG,EAAG,EAAI,EAC5CV,EAAO/B,GAAOyC,GAAMR,EAAQxF,EAAI0F,CAAS,CAC3C,CACF,CACF,CAGA,OAAA9D,EAAI,KAAKD,EAAO,MAAM,EAEf,IAAI3C,EAAa,CACtB,OAAA2C,EACA,MAAAtB,EACA,IAAAuB,EACA,KAAM,CAAC6D,EAASD,EAAS,EAAGG,EAAYD,EAAY,CAAC,CACvD,CAAC,CACH,CAYA1G,EAAa,UAAU,QAAU,SAAUiG,EAAUC,EAAW,CAE9D,GAAI,CAAC,KAAK,QACR,MAAM,IAAI,MAAM,gDAAgD,EASlE,QANIC,EAAK,KAELvF,EAAO,KAAK,MAAM,CAAC,EACnBC,EAAU,KAAK,MAAM,CAAC,EACtBuF,EAAeC,GAAiBJ,EAAUE,EAAI,SAAS,EAElDnF,EAAI,EAAGA,EAAIH,EAASG,IAAK,CAEhC,IAAIiE,EAAK,KAAK,KAAKjE,CAAC,EAChBkE,EAAK,KAAK,KAAKlE,EAAI,CAAC,EACxB,GAAIkF,EAEF,QAASlE,EAAIiD,EAAIjD,EAAIkD,EAAIlD,IAAK,CAE5B,IAAIf,EAAI,KAAK,OAAOe,CAAC,EAGrBoE,EAAa,KAAK,QAAQpE,CAAC,EAAG,CAACf,EAAGD,CAAC,EAAGmF,CAAE,CAC1C,KACK,CAGL,QADIxD,EAAS,CAAC,EACLsE,EAAMhC,EAAIgC,EAAM/B,EAAI+B,IAAO,CAClC,IAAIC,EAAM,KAAK,OAAOD,CAAG,EACzBtE,EAAOuE,CAAG,EAAI,KAAK,QAAQD,CAAG,CAChC,CAIA,QAASE,EAAM,EAAGA,EAAMvG,EAAMuG,IAAO,CACnC,IAAI5C,EAAQ4C,KAAOxE,EAASA,EAAOwE,CAAG,EAAI,EAC1Cf,EAAa7B,EAAO,CAAC4C,EAAKnG,CAAC,EAAGmF,CAAE,CAClC,CACF,CACF,CACF,EAMAnG,EAAa,UAAU,OAAO,QAAQ,EAAI,WAAa,CACrD,GAAI,CAAC,KAAK,QACR,MAAM,IAAI,MAAM,sCAAsC,EAGxD,QADIa,EAAU,KAAK,MAAM,CAAC,EACjBG,EAAI,EAAGA,EAAIH,EAASG,IAG3B,QAFIiE,EAAK,KAAK,KAAKjE,CAAC,EAChBkE,EAAK,KAAK,KAAKlE,EAAI,CAAC,EACfgB,EAAIiD,EAAIjD,EAAIkD,EAAIlD,IAAK,CAE5B,IAAIf,EAAI,KAAK,OAAOe,CAAC,EACrB,KAAM,CACJ,MAAO,KAAK,QAAQA,CAAC,EACrB,MAAO,CAACf,EAAGD,CAAC,CACd,CACF,CAEJ,EAOAhB,EAAa,UAAU,QAAU,UAAY,CAC3C,OAAOoH,EAAS,KAAK,QAAS,KAAK,OAAQ,KAAK,KAAM,KAAK,MAAO,EAAI,CACxE,EAOApH,EAAa,UAAU,QAAU,UAAY,CAC3C,OAAOoH,EAAS,KAAK,QAAS,KAAK,OAAQ,KAAK,KAAM,KAAK,MAAO,EAAK,CACzE,EACA,SAASA,EAASzE,EAAQtB,EAAOuB,EAAKf,EAAMuC,EAAM,CAEhD,IAAIxD,EAAOiB,EAAK,CAAC,EACbhB,EAAUgB,EAAK,CAAC,EAEhBwF,EAAI,CAAC,EAELpG,EAAGD,EAEP,IAAKC,EAAI,EAAGA,EAAIL,EAAMK,IAEpB,IADAoG,EAAEpG,CAAC,EAAI,CAAC,EACHD,EAAI,EAAGA,EAAIH,EAASG,IACvBqG,EAAEpG,CAAC,EAAED,CAAC,EAAI,EAKd,IAAKA,EAAI,EAAGA,EAAIH,EAASG,IAKvB,QAHIiE,EAAKrC,EAAI5B,CAAC,EACVkE,EAAKtC,EAAI5B,EAAI,CAAC,EAETgB,EAAIiD,EAAIjD,EAAIkD,EAAIlD,IAEvBf,EAAII,EAAMW,CAAC,EAEXqF,EAAEpG,CAAC,EAAED,CAAC,EAAI2B,EAASyB,EAAOzD,GAAMgC,EAAOX,CAAC,CAAC,EAAIW,EAAOX,CAAC,EAAI,EAG7D,OAAOqF,CACT,CAWA,OAAArH,EAAa,UAAU,OAAS,SAAUsH,EAAS,CASjD,QAPI1G,EAAO,KAAK,MAAM,CAAC,EACnBC,EAAU,KAAK,MAAM,CAAC,EAEtB0G,EAAU,KAAK,QAAQ,EAEvBC,EAAM,kBAAoB9C,GAAO9D,EAAM0G,CAAO,EAAI,MAAQ5C,GAAO7D,EAASyG,CAAO,EAAI,cAAgB5C,GAAO6C,EAASD,CAAO,EAAI;AAAA,EAE3HtG,EAAI,EAAGA,EAAIH,EAASG,IAK3B,QAHIiE,EAAK,KAAK,KAAKjE,CAAC,EAChBkE,EAAK,KAAK,KAAKlE,EAAI,CAAC,EAEfgB,EAAIiD,EAAIjD,EAAIkD,EAAIlD,IAAK,CAE5B,IAAIf,EAAI,KAAK,OAAOe,CAAC,EAErBwF,GAAO;AAAA,OAAY9C,GAAOzD,EAAGqG,CAAO,EAAI,KAAO5C,GAAO1D,EAAGsG,CAAO,EAAI,UAAY,KAAK,QAAU5C,GAAO,KAAK,QAAQ1C,CAAC,EAAGsF,CAAO,EAAI,IACpI,CAEF,OAAOE,CACT,EAOAxH,EAAa,UAAU,SAAW,UAAY,CAC5C,OAAO0E,GAAO,KAAK,QAAQ,CAAC,CAC9B,EAOA1E,EAAa,UAAU,OAAS,UAAY,CAC1C,MAAO,CACL,OAAQ,eACR,OAAQ,KAAK,QACb,MAAO,KAAK,OACZ,IAAK,KAAK,KACV,KAAM,KAAK,MACX,SAAU,KAAK,SACjB,CACF,EAUAA,EAAa,UAAU,SAAW,SAAUgC,EAAG,CAE7C,GAAIA,GAMF,GAJIyF,GAAYzF,CAAC,IACfA,EAAIA,EAAE,SAAS,GAGb,CAACwC,GAASxC,CAAC,GAAK,CAACyC,GAAUzC,CAAC,EAC9B,MAAM,IAAI,UAAU,2CAA2C,OAIjEA,EAAI,EAEN,IAAI0F,EAAS1F,EAAI,EAAIA,EAAI,EACrB2F,EAAO3F,EAAI,EAAI,CAACA,EAAI,EAGpBpB,EAAO,KAAK,MAAM,CAAC,EACnBC,EAAU,KAAK,MAAM,CAAC,EAGtBiE,EAAI,KAAK,IAAIlE,EAAO+G,EAAM9G,EAAU6G,CAAM,EAG1C/E,EAAS,CAAC,EACVtB,EAAQ,CAAC,EACTuB,EAAM,CAAC,EAEXA,EAAI,CAAC,EAAI,EAET,QAAS5B,EAAI0G,EAAQ1G,EAAIH,GAAW8B,EAAO,OAASmC,EAAG9D,IAKrD,QAHIiE,EAAK,KAAK,KAAKjE,CAAC,EAChBkE,EAAK,KAAK,KAAKlE,EAAI,CAAC,EAEfmD,EAAIc,EAAId,EAAIe,EAAIf,IAAK,CAE5B,IAAIlD,EAAI,KAAK,OAAOkD,CAAC,EAErB,GAAIlD,IAAMD,EAAI0G,EAASC,EAAM,CAE3BhF,EAAO,KAAK,KAAK,QAAQwB,CAAC,CAAC,EAE3B9C,EAAMsB,EAAO,OAAS,CAAC,EAAI1B,EAAI0G,EAE/B,KACF,CACF,CAGF,OAAA/E,EAAI,KAAKD,EAAO,MAAM,EAEf,IAAI3C,EAAa,CACtB,OAAA2C,EACA,MAAAtB,EACA,IAAAuB,EACA,KAAM,CAACkC,EAAG,CAAC,CACb,CAAC,CACH,EAUA9E,EAAa,SAAW,SAAU4H,EAAM,CACtC,OAAO,IAAI5H,EAAa4H,CAAI,CAC9B,EAcA5H,EAAa,SAAW,SAAU6B,EAAM0C,EAAOvC,EAAGT,EAAcrB,EAAU,CACxE,GAAI,CAACI,GAAQuB,CAAI,EACf,MAAM,IAAI,UAAU,gCAAgC,EAEtD,GAAIA,EAAK,SAAW,EAClB,MAAM,IAAI,MAAM,0CAA0C,EAkB5D,GAdAA,EAAOA,EAAK,IAAI,SAAUgG,EAAG,CAO3B,GALIJ,GAAYI,CAAC,IAEfA,EAAIA,EAAE,SAAS,GAGb,CAACrD,GAASqD,CAAC,GAAK,CAACpD,GAAUoD,CAAC,GAAKA,EAAI,EACvC,MAAM,IAAI,MAAM,uCAAuC,EAEzD,OAAOA,CACT,CAAC,EAGG7F,GAMF,GAJIyF,GAAYzF,CAAC,IACfA,EAAIA,EAAE,SAAS,GAGb,CAACwC,GAASxC,CAAC,GAAK,CAACyC,GAAUzC,CAAC,EAC9B,MAAM,IAAI,UAAU,2CAA2C,OAIjEA,EAAI,EAIN,IAAIlB,EAAKhB,EAELiB,EAAO,EACPZ,GAASD,CAAQ,IAEnBY,EAAKjB,EAAM,KAAKC,EAAa,CAACI,EAAUA,CAAQ,CAAC,GAAKJ,EAEtDiB,EAAOlB,EAAM,QAAQ,EAAGK,CAAQ,GAElC,IAAIwH,EAAS1F,EAAI,EAAIA,EAAI,EACrB2F,EAAO3F,EAAI,EAAI,CAACA,EAAI,EAGpBpB,EAAOiB,EAAK,CAAC,EACbhB,EAAUgB,EAAK,CAAC,EAGhBiD,EAAI,KAAK,IAAIlE,EAAO+G,EAAM9G,EAAU6G,CAAM,EAG1CI,EAGJ,GAAIxH,GAAQiE,CAAK,EAAG,CAElB,GAAIA,EAAM,SAAWO,EAEnB,MAAM,IAAI,MAAM,4BAA4B,EAG9CgD,EAAS,SAAgB7G,GAAG,CAE1B,OAAOsD,EAAMtD,EAAC,CAChB,CACF,SAAWb,GAASmE,CAAK,EAAG,CAE1B,IAAIwD,EAAKxD,EAAM,KAAK,EAEpB,GAAIwD,EAAG,SAAW,GAAKA,EAAG,CAAC,IAAMjD,EAE/B,MAAM,IAAI,MAAM,uBAAuB,EAGzCgD,EAAS,SAAgB7G,GAAG,CAE1B,OAAOsD,EAAM,IAAI,CAACtD,EAAC,CAAC,CACtB,CACF,MAEE6G,EAAS,UAAkB,CAEzB,OAAOvD,CACT,EASF,QALI5B,EAAS,CAAC,EACVtB,EAAQ,CAAC,EACTuB,EAAM,CAAC,EAGF5B,EAAI,EAAGA,EAAIH,EAASG,IAAK,CAEhC4B,EAAI,KAAKD,EAAO,MAAM,EAEtB,IAAI1B,EAAID,EAAI0G,EAEZ,GAAIzG,GAAK,GAAKA,EAAI6D,EAAG,CAEnB,IAAI3D,GAAI2G,EAAO7G,CAAC,EAEXH,EAAGK,GAAGJ,CAAI,IAEbM,EAAM,KAAKJ,EAAI0G,CAAI,EAEnBhF,EAAO,KAAKxB,EAAC,EAEjB,CACF,CAEA,OAAAyB,EAAI,KAAKD,EAAO,MAAM,EAEf,IAAI3C,EAAa,CACtB,OAAA2C,EACA,MAAAtB,EACA,IAAAuB,EACA,KAAM,CAAChC,EAAMC,CAAO,CACtB,CAAC,CACH,EAWAb,EAAa,UAAU,SAAW,SAAUiB,EAAGD,EAAG,CAEhD,GAAI,CAACwD,GAASvD,CAAC,GAAK,CAACwD,GAAUxD,CAAC,GAAK,CAACuD,GAASxD,CAAC,GAAK,CAACyD,GAAUzD,CAAC,EAC/D,MAAM,IAAI,MAAM,qCAAqC,EAGvD,GAAI,KAAK,MAAM,SAAW,EACxB,MAAM,IAAI,MAAM,0CAA0C,EAG5D,OAAAoB,GAAcnB,EAAG,KAAK,MAAM,CAAC,CAAC,EAC9BmB,GAAcpB,EAAG,KAAK,MAAM,CAAC,CAAC,EAG9BhB,EAAa,UAAUiB,EAAGD,EAAG,KAAK,MAAM,CAAC,EAAG,KAAK,QAAS,KAAK,OAAQ,KAAK,IAAI,EAEzE,IACT,EAWAhB,EAAa,YAAc,SAAUgB,EAAG2B,EAAQtB,EAAOuB,EAAKqD,EAAU,CAMpE,QAJIhB,EAAKrC,EAAI5B,CAAC,EACVkE,EAAKtC,EAAI5B,EAAI,CAAC,EAGTgB,EAAIiD,EAAIjD,EAAIkD,EAAIlD,IAEvBiE,EAAS5E,EAAMW,CAAC,EAAGW,EAAOX,CAAC,CAAC,CAEhC,EAYAhC,EAAa,UAAY,SAAUmE,EAAGyC,EAAG/F,EAAS8B,EAAQtB,EAAOuB,EAAK,CAEpE,QAAS5B,EAAI,EAAGA,EAAIH,EAASG,IAAK,CAEhC,IAAIiE,EAAKrC,EAAI5B,CAAC,EACVkE,EAAKtC,EAAI5B,EAAI,CAAC,EAEdgH,EAAKnE,EAAeM,EAAGc,EAAIC,EAAI7D,CAAK,EAEpC4G,EAAKpE,EAAe+C,EAAG3B,EAAIC,EAAI7D,CAAK,EAExC,GAAI2G,EAAK9C,GAAM+C,EAAK/C,GAAM7D,EAAM2G,CAAE,IAAM7D,GAAK9C,EAAM4G,CAAE,IAAMrB,EAAG,CAE5D,GAAIjE,EAAQ,CACV,IAAIxB,EAAIwB,EAAOqF,CAAE,EACjBrF,EAAOqF,CAAE,EAAIrF,EAAOsF,CAAE,EACtBtF,EAAOsF,CAAE,EAAI9G,CACf,CAEA,QACF,CAEA,GAAI6G,EAAK9C,GAAM7D,EAAM2G,CAAE,IAAM7D,IAAM8D,GAAM/C,GAAM7D,EAAM4G,CAAE,IAAMrB,GAAI,CAE/D,IAAIsB,EAAKvF,EAASA,EAAOqF,CAAE,EAAI,OAE/B3G,EAAM,OAAO4G,EAAI,EAAGrB,CAAC,EACjBjE,GACFA,EAAO,OAAOsF,EAAI,EAAGC,CAAE,EAGzB7G,EAAM,OAAO4G,GAAMD,EAAKA,EAAK,EAAIA,EAAI,CAAC,EAClCrF,GACFA,EAAO,OAAOsF,GAAMD,EAAKA,EAAK,EAAIA,EAAI,CAAC,EAGzC,QACF,CAEA,GAAIC,EAAK/C,GAAM7D,EAAM4G,CAAE,IAAMrB,IAAMoB,GAAM9C,GAAM7D,EAAM2G,CAAE,IAAM7D,GAAI,CAE/D,IAAIgE,EAAKxF,EAASA,EAAOsF,CAAE,EAAI,OAE/B5G,EAAM,OAAO2G,EAAI,EAAG7D,CAAC,EACjBxB,GACFA,EAAO,OAAOqF,EAAI,EAAGG,CAAE,EAGzB9G,EAAM,OAAO2G,GAAMC,EAAKA,EAAK,EAAIA,EAAI,CAAC,EAClCtF,GACFA,EAAO,OAAOqF,GAAMC,EAAKA,EAAK,EAAIA,EAAI,CAAC,CAE3C,CACF,CACF,EACOjI,CACT,EAAG,CACD,QAAS,EACX,CAAC,EC38CD,IAAIoI,IAAO,SACPC,IAAe,CAAC,OAAO,EAO3B,SAASC,IAAyBC,EAAO,CACvC,IAAIC,EAA2BD,EAAM,MAAM,wCAAwC,EACnF,GAAIC,EAA0B,CAC5B,IAAIC,EAAQ,CACV,KAAM,EACN,KAAM,EACN,KAAM,EACR,EAAED,EAAyB,CAAC,CAAC,EACzBE,EAAcF,EAAyB,CAAC,EACxCG,EAAiBH,EAAyB,CAAC,EAC/C,MAAO,CACL,MAAAD,EACA,MAAAE,EACA,YAAAC,EACA,eAAAC,CACF,CACF,KACE,QAAO,IAEX,CAOA,SAASC,IAA8BC,EAAO,CAG5C,QAFIC,EAAI,SAASD,EAAM,YAAaA,EAAM,KAAK,EAC3CE,EAAI,EACCC,EAAI,EAAGA,EAAIH,EAAM,eAAe,OAAQG,IAAK,CACpD,IAAIC,EAAa,SAASJ,EAAM,eAAeG,CAAC,EAAGH,EAAM,KAAK,EAC9DE,GAAKE,EAAa,KAAK,IAAIJ,EAAM,MAAOG,EAAI,CAAC,CAC/C,CACA,IAAIE,EAASJ,EAAIC,EACjB,GAAI,MAAMG,CAAM,EACd,MAAM,IAAI,YAAY,WAAaL,EAAM,MAAQ,yBAAyB,EAE5E,OAAOK,CACT,CACO,IAAIC,GAA8BC,EAAQhB,IAAMC,IAAcgB,GAAQ,CAC3E,GAAI,CACF,MAAAC,CACF,EAAID,EA0BAE,EAASD,EAAM,SAAU,CAC3B,GAAI,UAAa,CACf,MAAO,EACT,EACA,OAAQ,SAAgBE,EAAG,CACzB,OAAOA,CACT,EACA,OAAQ,SAAgBA,EAAG,CACzB,GAAIA,IAAM,MAAO,MAAO,KACxB,IAAIC,EAAwBnB,IAAyBkB,CAAC,EACtD,GAAIC,EACF,OAAOb,IAA8Ba,CAAqB,EAE5D,IAAIC,EAAO,EACPC,EAAsBH,EAAE,MAAM,+BAA+B,EAC7DG,IAGFD,EAAO,OAAOC,EAAoB,CAAC,CAAC,EACpCH,EAAIG,EAAoB,CAAC,GAE3B,IAAIC,EAAM,OAAOJ,CAAC,EAClB,GAAI,MAAMI,CAAG,EACX,MAAM,IAAI,YAAY,WAAaJ,EAAI,yBAAyB,EAElE,GAAIG,EAAqB,CAGvB,GAAIC,EAAM,GAAKF,EAAO,EAEpB,MAAM,IAAI,YAAY,WAAY,OAAOF,EAAG,mBAAoB,CAAC,EAG/DI,GAAO,IAAMF,EAAO,KACtBE,EAAMA,EAAM,GAAKF,EAErB,CACA,OAAOE,CACT,EACA,UAAW,SAAmBJ,EAAG,CAC/B,OAAOA,EAAE,SAAS,CACpB,EACA,OAAQ,SAAgBA,EAAG,CACzB,OAAO,OAAOA,CAAC,CACjB,EACA,SAAU,SAAkBA,EAAG,CAC7B,OAAOA,EAAE,QAAQ,CACnB,EACA,KAAMF,EAAM,YAAYO,GAAQL,GAAK,CACnC,IAAIM,EAAQN,EAAE,MAAM,EACpB,OAAAM,EAAM,MAAQD,EAAKL,EAAE,KAAK,EACnBM,CACT,CAAC,EACD,KAAM,SAAeN,EAAG,CACtB,MAAO,EACT,EACA,sBAAuB,SAA2BO,EAAMC,EAAe,CACrE,OAAOD,EAAK,SAASC,CAAa,CACpC,EACA,iBAAkBV,EAAM,YAAYO,GAAQL,GAAKS,GAAQT,EAAGK,CAAI,CAAC,CACnE,CAAC,EAOD,OAAAN,EAAO,SAAW,SAAUW,EAAM,CAChC,OAAO,WAAWA,EAAK,KAAK,CAC9B,EACOX,CACT,CAAC,ECnJD,IAAIY,IAAO,SACPC,IAAe,CAAC,OAAO,EAChBC,GAA8BC,EAAQH,IAAMC,IAAcG,GAAQ,CAC3E,GAAI,CACF,MAAAC,CACF,EAAID,EAuBAE,EAASD,EAAM,SAAU,CAC3B,GAAI,UAAa,CACf,OAAO,EACT,EACA,OAAQ,SAAgBE,EAAG,CACzB,OAAOA,CACT,EACA,OAAQ,SAAgBA,EAAG,CACzB,OAAO,OAAOA,EAAE,QAAQ,CAAC,CAC3B,EACA,UAAW,SAAmBA,EAAG,CAC/B,OAAO,OAAOA,EAAE,MAAM,EAAE,SAAS,CAAC,CACpC,EACA,SAAU,SAAkBA,EAAG,CAC7B,OAAO,OAAOA,EAAE,QAAQ,EAAE,QAAQ,CAAC,CACrC,EACA,mBAAoB,SAAyBA,EAAG,CAC9C,OAAO,OAAOA,CAAC,CACjB,EACA,KAAM,SAAeA,EAAG,CACtB,OAAO,EACT,EACA,iBAAkBF,EAAM,YAAYG,GAAQD,GAAKE,GAAQF,EAAGC,CAAI,CAAC,CACnE,CAAC,EAOD,OAAAF,EAAO,SAAW,SAAUI,EAAM,CAChC,OAAO,OAAOA,EAAK,KAAK,CAC1B,EACOJ,CACT,CAAC,EC7DD,IAAIK,GAAO,SACPC,IAAe,CAAC,OAAO,EAChBC,GAA8BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC3E,GAAI,CACF,MAAAC,CACF,EAAID,EA0BJ,OAAOC,EAAML,GAAM,CACjB,GAAI,UAAa,CACf,MAAO,EACT,EACA,OAAQM,GACR,KAAM,SAAeC,EAAG,CACtB,MAAO,MACT,EACA,QAAS,SAAiBA,EAAG,CAC3B,OAAOA,EAAI,EACb,EACA,OAAQ,SAAgBA,EAAG,CACzB,OAAOA,CACT,EACA,iBAAkBF,EAAM,YAAYG,GAAQD,GAAKE,GAAQF,EAAGC,CAAI,CAAC,EACjE,IAAK,SAAaD,EAAG,CACnB,OAAO,OAAOA,CAAC,CACjB,CACF,CAAC,CACH,CAAC,ECnDD,IAAIG,GAAO,UACPC,IAAe,CAAC,OAAO,EAChBC,GAA+BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC5E,GAAI,CACF,MAAAC,CACF,EAAID,EA4BJ,OAAOC,EAAML,GAAM,CACjB,GAAI,UAAa,CACf,MAAO,EACT,EACA,QAAS,SAAiBM,EAAG,CAC3B,OAAOA,CACT,EACA,OAAQ,SAAgBA,EAAG,CACzB,MAAO,CAAC,CAACA,CACX,EACA,KAAM,SAAeA,EAAG,CACtB,MAAO,EACT,EACA,UAAW,SAAmBA,EAAG,CAC/B,MAAO,CAACA,EAAE,OAAO,CACnB,EACA,OAAQ,SAAgBA,EAAG,CAEzB,IAAIC,EAAQD,EAAE,YAAY,EAC1B,GAAIC,IAAU,OACZ,MAAO,GACF,GAAIA,IAAU,QACnB,MAAO,GAIT,IAAIC,EAAM,OAAOF,CAAC,EAClB,GAAIA,IAAM,IAAM,CAAC,MAAME,CAAG,EACxB,MAAO,CAAC,CAACA,EAEX,MAAM,IAAI,MAAM,mBAAqBF,EAAI,gBAAgB,CAC3D,EACA,iBAAkBD,EAAM,YAAYI,GAAQH,GAAKI,GAAQJ,EAAGG,CAAI,CAAC,CACnE,CAAC,CACH,CAAC,ECnED,IAAIE,IAAO,YACPC,IAAe,CAAC,QAAS,WAAW,EAC7BC,GAAiCC,EAAQH,IAAMC,IAAcG,GAAQ,CAC9E,GAAI,CACF,MAAAC,EACA,UAAAC,CACF,EAAIF,EA0BJ,OAAOC,EAAM,YAAa,CACxB,GAAI,UAAa,CACf,OAAO,IAAIC,EAAU,CAAC,CACxB,EACA,OAAQ,SAAgBC,EAAG,CAEzB,OAAO,IAAID,EAAUC,EAAI,EAAE,CAC7B,EACA,OAAQ,SAAgBA,EAAG,CACzB,IAAIC,EAAsBD,EAAE,MAAM,+BAA+B,EACjE,GAAIC,EAAqB,CAEvB,IAAIC,EAAOD,EAAoB,CAAC,EAC5BE,EAAIJ,EAAUE,EAAoB,CAAC,CAAC,EACpCG,EAAa,IAAIL,EAAU,CAAC,EAAE,IAAI,OAAOG,CAAI,CAAC,EAClD,GAAIC,EAAE,GAAGC,EAAW,IAAI,CAAC,CAAC,EACxB,MAAM,IAAI,YAAY,WAAY,OAAOJ,EAAG,mBAAoB,CAAC,EAEnE,IAAIK,EAAmB,IAAIN,EAAU,CAAC,EAAE,IAAI,OAAOG,CAAI,EAAI,CAAC,EAC5D,OAAIC,EAAE,IAAIE,CAAgB,EACjBF,EAAE,IAAIC,CAAU,EAEhBD,CAEX,CACA,OAAO,IAAIJ,EAAUC,CAAC,CACxB,EACA,UAAW,SAAmBA,EAAG,CAE/B,OAAOA,CACT,EACA,OAAQ,SAAgBA,EAAG,CACzB,OAAO,IAAID,EAAUC,EAAE,SAAS,CAAC,CACnC,EACA,KAAMF,EAAM,YAAYQ,GAAQN,GAAK,CACnC,IAAIO,EAAQP,EAAE,MAAM,EACpB,OAAAO,EAAM,MAAQD,EAAKN,EAAE,KAAK,EACnBO,CACT,CAAC,EACD,SAAU,SAAkBP,EAAG,CAC7B,OAAO,IAAID,EAAUC,EAAE,CAAC,EAAE,IAAIA,EAAE,CAAC,EAAE,MAAMA,EAAE,CAAC,CAC9C,EACA,KAAM,SAAeA,EAAG,CACtB,OAAO,IAAID,EAAU,CAAC,CACxB,EACA,iBAAkBD,EAAM,YAAYQ,GAAQN,GAAKQ,GAAQR,EAAGM,CAAI,CAAC,CACnE,CAAC,CACH,CAAC,EC/ED,IAAIG,IAAO,UACPC,IAAe,CAAC,QAAS,SAAS,EAC3BC,GAA+BC,EAAQH,IAAMC,IAAcG,GAAQ,CAC5E,GAAI,CACF,MAAAC,EACA,QAAAC,CACF,EAAIF,EAuCJ,OAAOC,EAAM,UAAW,CACtB,GAAI,UAAa,CACf,OAAOC,EAAQ,IACjB,EACA,OAAQ,SAAgBC,EAAG,CACzB,OAAO,IAAID,EAAQC,EAAG,CAAC,CACzB,EACA,iBAAkB,SAAuBC,EAAIC,EAAI,CAC/C,OAAO,IAAIH,EAAQE,EAAIC,CAAE,CAC3B,EAEA,uBAAwB,SAA6BD,EAAIC,EAAI,CAC3D,OAAO,IAAIH,EAAQE,EAAG,SAAS,EAAGC,EAAG,SAAS,CAAC,CACjD,EACA,SAAU,SAAkBF,EAAG,CAC7B,OAAO,IAAID,EAAQC,EAAE,QAAQ,EAAG,CAAC,CACnC,EACA,QAAS,SAAiBA,EAAG,CAC3B,OAAOA,EAAE,MAAM,CACjB,EACA,OAAQ,SAAgBA,EAAG,CACzB,OAAOD,EAAQC,CAAC,CAClB,EACA,KAAM,SAAeA,EAAG,CACtB,OAAOD,EAAQ,CAAC,CAClB,EACA,OAAQ,SAAgBC,EAAG,CACzB,GAAI,OAAQA,GAAK,OAAQA,EACvB,OAAO,IAAID,EAAQC,EAAE,GAAIA,EAAE,EAAE,EAE/B,GAAI,MAAOA,GAAK,QAASA,GAAK,QAASA,GAAK,QAASA,EACnD,OAAO,IAAID,EAAQC,CAAC,EAEtB,MAAM,IAAI,MAAM,6EAA6E,CAC/F,EACA,iBAAkBF,EAAM,YAAYK,GAAQH,GAAKI,GAAQJ,EAAGG,CAAI,CAAC,CACnE,CAAC,CACH,CAAC,EClFD,IAAIE,IAAO,WACPC,IAAe,CAAC,QAAS,UAAU,EAC5BC,GAAgCC,EAAQH,IAAMC,IAAcG,GAAQ,CAC7E,GAAI,CACF,MAAAC,EACA,SAAAC,CACF,EAAIF,EAsCJ,OAAOC,EAAM,WAAY,CACvB,OAAQ,SAAgBE,EAAG,CACzB,GAAI,CAAC,SAASA,CAAC,GAAK,MAAMA,CAAC,EACzB,MAAM,IAAI,MAAMA,EAAI,sCAAsC,EAE5D,OAAO,IAAID,EAASC,CAAC,CACvB,EACA,OAAQ,SAAgBA,EAAG,CACzB,OAAO,IAAID,EAASC,CAAC,CACvB,EACA,iBAAkB,SAAuBC,EAAWC,EAAa,CAC/D,OAAO,IAAIH,EAASE,EAAWC,CAAW,CAC5C,EACA,KAAM,SAAeF,EAAG,CACtB,OAAO,IAAID,EAAS,CAAC,CACvB,EACA,UAAW,SAAmBC,EAAG,CAC/B,OAAO,IAAID,EAASC,EAAE,SAAS,CAAC,CAClC,EACA,OAAQ,SAAgBA,EAAG,CACzB,OAAO,IAAID,EAASC,EAAE,SAAS,CAAC,CAClC,EACA,SAAU,SAAkBA,EAAG,CAC7B,OAAOA,CACT,EACA,KAAMF,EAAM,YAAYK,GAAQH,GAAK,CACnC,IAAII,EAAQJ,EAAE,MAAM,EACpB,OAAAI,EAAM,MAAQD,EAAKH,EAAE,KAAK,EACnBI,CACT,CAAC,EACD,OAAQ,SAAgBJ,EAAG,CACzB,OAAO,IAAID,EAASC,CAAC,CACvB,EACA,iBAAkBF,EAAM,YAAYK,GAAQH,GAAKK,GAAQL,EAAGG,CAAI,CAAC,CACnE,CAAC,CACH,CAAC,EChFD,IAAIG,GAAO,SACPC,IAAe,CAAC,QAAS,SAAU,cAAe,cAAc,EACzDC,GAA8BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC3E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,YAAAC,EACA,aAAAC,CACF,EAAIJ,EAkCJ,OAAOC,EAAML,GAAM,CACjB,GAAI,UAAa,CACf,OAAOS,EAAQ,CAAC,CAAC,CACnB,EACA,OAAQ,SAAgBC,EAAQ,CAC9B,OAAOD,EAAQ,CAAC,EAAGC,CAAM,CAC3B,EACA,iBAAkB,SAAuBA,EAAQC,EAAU,CACzD,OAAOF,EAAQ,CAAC,EAAGC,EAAQC,CAAQ,CACrC,EACA,MAAO,SAAeC,EAAM,CAC1B,OAAOH,EAAQG,CAAI,CACrB,EACA,OAAQ,SAAgBA,EAAM,CAC5B,OAAOH,EAAQG,EAAMA,EAAK,QAAQ,CAAC,CACrC,EACA,yBAA0BH,EAC1B,iCAAkCA,CACpC,CAAC,EAUD,SAASA,EAAQG,EAAMF,EAAQC,EAAU,CAEvC,GAAID,IAAW,SAAWA,IAAW,WAAaA,IAAW,OAC3D,OAAO,IAAIH,EAAYK,EAAMD,CAAQ,EAEvC,GAAID,IAAW,SACb,OAAO,IAAIF,EAAaI,EAAMD,CAAQ,EAExC,MAAM,IAAI,UAAU,uBAAyB,KAAK,UAAUD,CAAM,EAAI,GAAG,CAC3E,CACF,CAAC,EChFD,IAAIG,GAAO,qBACPC,IAAe,CAAC,QAAS,SAAU,QAAQ,EACpCC,GAA0CC,EAAQH,GAAMC,IAAcG,GAAQ,CACvF,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,OAAAC,CACF,EAAIH,EA8BJ,OAAOC,EAAML,GAAM,CACjB,2CAA4C,SAA8CQ,EAAMC,EAAIC,EAAQC,EAAU,CACpH,OAAOC,EAAQJ,EAAMC,EAAIC,EAAQC,CAAQ,CAC3C,EACA,mCAAoC,SAAuCH,EAAMC,EAAIC,EAAQ,CAC3F,OAAOE,EAAQJ,EAAMC,EAAIC,CAAM,CACjC,EACA,mBAAoB,SAAyBF,EAAMC,EAAI,CACrD,OAAOG,EAAQJ,EAAMC,EAAI,OAAO,CAClC,EACA,kBAAmB,SAAwBD,EAAMC,EAAI,CACnD,OAAOG,EAAQJ,EAAMC,EAAI,OAAO,EAAE,QAAQ,CAC5C,EACA,mCAAoC,SAAuCD,EAAME,EAAQD,EAAI,CAC3F,OAAOG,EAAQJ,EAAMC,EAAIC,CAAM,CACjC,EACA,2CAA4C,SAA8CF,EAAME,EAAQC,EAAUF,EAAI,CACpH,OAAOG,EAAQJ,EAAMC,EAAIC,EAAQC,CAAQ,CAC3C,CACF,CAAC,EACD,SAASC,EAAQJ,EAAMC,EAAIC,EAAQC,EAAU,CAC3C,IAAIE,EACJ,OAAIF,IAAa,OACfE,EAAIP,EAAOI,EAAQC,CAAQ,EAE3BE,EAAIP,EAAOI,CAAM,EAEnBG,EAAE,OAAOL,CAAI,EACbK,EAAE,QAAQ,SAAUC,EAAGC,EAAO,CAC5B,IAAIC,EAAMP,EAAGM,CAAK,EACdR,EAAOS,CAAG,GACdH,EAAE,IAAIE,EAAOC,CAAG,CAClB,CAAC,EACMH,CACT,CACF,CAAC,ECxED,IAAII,GAAO,iBACPC,IAAe,CAAC,QAAS,SAAU,UAAW,MAAM,EAC7CC,GAAsCC,EAAQH,GAAMC,IAAcG,GAAQ,CACnF,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,QAAAC,EACA,KAAAC,CACF,EAAIJ,EAuBJ,OAAOC,EAAML,GAAM,CACjB,WAAY,SAAeS,EAAK,CAC9B,OAAOC,EAAaD,CAAG,CACzB,EACA,YAAa,SAAgBA,EAAK,CAChC,OAAOH,EAAOI,EAAaD,EAAI,IAAIE,GAAKA,EAAE,QAAQ,CAAC,CAAC,CAAC,CACvD,CAGF,CAAC,EACD,SAASD,EAAaD,EAAK,CACzB,GAAIA,EAAI,SAAW,EAAG,MAAM,IAAI,UAAU,mDAAmD,EAC7F,IAAIG,EAAIC,EAA+BJ,EAAI,CAAC,CAAC,EACzCK,EAAS,CAAC,EACd,QAASC,KAAON,EAAK,CACnB,IAAIO,EAAYH,EAA+BE,CAAG,EAClD,GAAIC,IAAcJ,EAChB,MAAM,IAAI,UAAU,sCAAwCA,EAAI,GAAK,YAASI,EAAY,EAAE,EAE9FF,EAAO,KAAKP,EAAQQ,CAAG,CAAC,CAC1B,CACA,OAAOD,CACT,CACA,SAASD,EAA+BI,EAAK,CAC3C,IAAIC,EAAIV,EAAKS,CAAG,EAChB,GAAIC,EAAE,SAAW,EAEf,OAAOA,EAAE,CAAC,EACL,GAAIA,EAAE,SAAW,EAAG,CAEzB,GAAIA,EAAE,CAAC,IAAM,EAEX,OAAOA,EAAE,CAAC,EACL,GAAIA,EAAE,CAAC,IAAM,EAElB,OAAOA,EAAE,CAAC,EAEV,MAAM,IAAI,UAAU,gDAAgD,CAExE,KACE,OAAM,IAAI,UAAU,qDAAqD,CAE7E,CACF,CAAC,EC1ED,IAAIC,GAAO,oBACPC,IAAe,CAAC,QAAS,SAAU,UAAW,MAAM,EAC7CC,GAAyCC,EAAQH,GAAMC,IAAcG,GAAQ,CACtF,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,QAAAC,EACA,KAAAC,CACF,EAAIJ,EAuBJ,OAAOC,EAAML,GAAM,CACjB,WAAY,SAAeS,EAAK,CAC9B,OAAOC,EAAaD,CAAG,CACzB,EACA,YAAa,SAAgBA,EAAK,CAChC,OAAOH,EAAOI,EAAaD,EAAI,IAAIE,GAAKA,EAAE,QAAQ,CAAC,CAAC,CAAC,CACvD,CAGF,CAAC,EACD,SAASD,EAAaD,EAAK,CACzB,GAAIA,EAAI,SAAW,EAAG,MAAM,IAAI,UAAU,sDAAsD,EAKhG,QAJIG,EAAIC,EAA+BJ,EAAI,CAAC,CAAC,EAGzCK,EAAS,CAAC,EACLC,EAAI,EAAGA,EAAIH,EAAGG,IACrBD,EAAOC,CAAC,EAAI,CAAC,EAIf,QAASC,KAAOP,EAAK,CACnB,IAAIQ,EAAYJ,EAA+BG,CAAG,EAClD,GAAIC,IAAcL,EAChB,MAAM,IAAI,UAAU,sCAAwCA,EAAI,GAAK,YAASK,EAAY,EAAE,EAK9F,QAHIC,EAAIX,EAAQS,CAAG,EAGVG,EAAK,EAAGA,EAAKP,EAAGO,IACvBL,EAAOK,CAAE,EAAE,KAAKD,EAAEC,CAAE,CAAC,CAEzB,CACA,OAAOL,CACT,CACA,SAASD,EAA+BO,EAAK,CAC3C,IAAIC,EAAIb,EAAKY,CAAG,EAChB,GAAIC,EAAE,SAAW,EAEf,OAAOA,EAAE,CAAC,EACL,GAAIA,EAAE,SAAW,EAAG,CAEzB,GAAIA,EAAE,CAAC,IAAM,EAEX,OAAOA,EAAE,CAAC,EACL,GAAIA,EAAE,CAAC,IAAM,EAElB,OAAOA,EAAE,CAAC,EAEV,MAAM,IAAI,UAAU,gDAAgD,CAExE,KACE,OAAM,IAAI,UAAU,qDAAqD,CAE7E,CACF,CAAC,ECtFD,IAAIC,GAAO,YACPC,IAAe,CAAC,OAAO,EAChBC,GAAiCC,EAAQH,GAAMC,IAAcG,GAAQ,CAC9E,GAAI,CACF,MAAAC,CACF,EAAID,EAoBJ,OAAOC,EAAML,GAAM,CACjB,cAAe,SAAoBM,EAAMC,EAAO,CAC9C,OAAOD,EAAK,UAAUC,CAAK,CAC7B,CACF,CAAC,CACH,CAAC,EC5BD,IAAIC,GAAO,aACPC,IAAe,CAAC,OAAO,EAChBC,GAAkCC,EAAQH,GAAMC,IAAcG,GAAQ,CAC/E,GAAI,CACF,MAAAC,CACF,EAAID,EAwBJ,OAAOC,EAAML,GAAM,CACjB,OAAQM,GACR,iCAAkCC,GAAKA,EAAE,IAAI,EAC7C,OAAQA,GAAK,CAACA,EACd,KAAMF,EAAM,YAAYG,GAAQD,GAAK,CACnC,IAAIE,EAAMF,EAAE,MAAM,EAClB,OAAAE,EAAI,MAAQJ,EAAM,KAAKG,EAAMC,EAAI,UAAU,CAAC,EAAEF,EAAE,KAAK,EAC9CE,CACT,CAAC,EAED,iBAAkBJ,EAAM,YAAYG,GAAQD,GAAKG,GAAQH,EAAGC,EAAM,EAAI,CAAC,CAGzE,CAAC,CACH,CAAC,EC1CD,IAAIG,GAAO,YACPC,IAAe,CAAC,QAAS,SAAU,SAAS,EACrCC,GAAiCC,EAAQH,GAAMC,IAAcG,GAAQ,CAC9E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,QAAAC,CACF,EAAIH,EAyBJ,OAAOC,EAAML,GAAM,CACjB,OAAQQ,GACR,QAAS,SAAiBC,EAAG,CAC3B,OAAOA,CACT,EACA,UAAW,SAAmBA,EAAG,CAC/B,OAAOA,CACT,EACA,OAAQ,SAAgBA,EAAG,CACzB,OAAOA,CACT,EACA,SAAU,SAAkBA,EAAG,CAC7B,OAAOA,CACT,EACA,KAAM,SAAcA,EAAG,CACrB,OAAOA,EAAE,MAAM,CACjB,EAEA,iBAAkBJ,EAAM,YAAYK,GAAQD,GAAKE,GAAQF,EAAGC,EAAM,EAAI,CAAC,EACvE,QAAS,SAAiBD,EAAG,CAC3B,OAAOF,EAAQE,EAAI,EAAI,EAAGH,EAAO,MAAM,CACzC,EACA,OAAQ,SAAgBG,EAAG,CACzB,OAAOF,EAAQE,EAAGG,GAAeH,EAAGH,CAAM,CAAC,CAC7C,CACF,CAAC,CACH,CAAC,EC3DD,IAAIO,GAAO,MACPC,IAAe,CAAC,OAAO,EAChBC,GAA2BC,EAAQH,GAAMC,IAAcG,GAAQ,CACxE,GAAI,CACF,MAAAC,CACF,EAAID,EAyBJ,OAAOC,EAAML,GAAM,CACjB,OAAQM,GACR,wCAAyCC,GAAKA,EAAE,IAAI,EACpD,OAAQA,GAAKA,EAAI,GAAK,CAACA,EAAIA,EAE3B,iBAAkBF,EAAM,YAAYG,GAAQD,GAAKE,GAAQF,EAAGC,EAAM,EAAI,CAAC,CACzE,CAAC,CACH,CAAC,ECpCD,IAAIE,GAAO,QACPC,IAAe,CAAC,QAAS,WAAW,EAC7BC,GAA6BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC1E,GAAI,CACF,MAAAC,EACA,UAAAC,CACF,EAAIF,EAiCJ,OAAOC,EAAML,GAAM,CACjB,+CAAgD,SAAkDO,EAAKC,EAAKC,EAAU,CACpH,GAAI,CAACH,EAAUE,CAAG,EAChB,MAAM,IAAI,UAAU,uCAAuC,EAE7D,IAAIE,EAAO,MAAM,QAAQH,CAAG,EAAII,GAAUJ,CAAG,EAAIA,EAAI,KAAK,EAC1D,GAAIC,EAAM,GAAKA,GAAOE,EAAK,OACzB,MAAM,IAAIE,GAAWJ,EAAKE,EAAK,MAAM,EAEvC,OAAIG,GAASN,CAAG,EACPA,EAAI,OAAOO,GAAOP,EAAI,QAAQ,EAAGC,EAAKC,CAAQ,EAAGF,EAAI,SAAS,CAAC,EAE/DO,GAAOP,EAAKC,EAAKC,CAAQ,CAEpC,CACF,CAAC,CACH,CAAC,EAUD,SAASK,GAAOP,EAAKC,EAAKC,EAAU,CAClC,IAAIM,EAAGC,EAAKC,EACZ,GAAIT,GAAO,EACT,GAAK,MAAM,QAAQD,EAAI,CAAC,CAAC,EAElB,CAGL,IAFAU,EAAOC,IAAQX,CAAG,EAClBS,EAAM,CAAC,EACFD,EAAI,EAAGA,EAAIE,EAAK,OAAQF,IAC3BC,EAAID,CAAC,EAAID,GAAOG,EAAKF,CAAC,EAAGP,EAAM,EAAGC,CAAQ,EAE5C,OAAOO,CACT,KARE,QAAOP,EAASF,CAAG,MAShB,CAEL,IADAS,EAAM,CAAC,EACFD,EAAI,EAAGA,EAAIR,EAAI,OAAQQ,IAC1BC,EAAID,CAAC,EAAID,GAAOP,EAAIQ,CAAC,EAAGP,EAAM,EAAGC,CAAQ,EAE3C,OAAOO,CACT,CACF,CAQA,SAASE,IAAQX,EAAK,CACpB,IAAIY,EAAIZ,EAAI,OACRa,EAAIb,EAAI,CAAC,EAAE,OACXQ,EAAGM,EACHL,EAAM,CAAC,EACX,IAAKK,EAAI,EAAGA,EAAID,EAAGC,IAAK,CACtB,IAAIC,EAAM,CAAC,EACX,IAAKP,EAAI,EAAGA,EAAII,EAAGJ,IACjBO,EAAI,KAAKf,EAAIQ,CAAC,EAAEM,CAAC,CAAC,EAEpBL,EAAI,KAAKM,CAAG,CACd,CACA,OAAON,CACT,CC5GA,IAAIO,GAAO,YACPC,IAAe,CAAC,OAAO,EAChBC,GAAiCC,EAAQH,GAAMC,IAAcG,GAAQ,CAC9E,GAAI,CACF,MAAAC,CACF,EAAID,EAaJ,OAAOC,EAAML,GAAM,CACjB,iBAAkBM,GAClB,mBAAoB,SAAyBC,EAAGC,EAAG,CACjD,OAAOD,EAAE,IAAIC,CAAC,CAChB,EACA,uBAAwB,SAA6BD,EAAGC,EAAG,CACzD,OAAOD,EAAE,KAAKC,CAAC,CACjB,EACA,iBAAkB,SAAuBD,EAAGC,EAAG,CAC7C,OAAOD,EAAIC,CACb,EACA,qBAAsB,SAA2BD,EAAGC,EAAG,CACrD,OAAOD,EAAE,IAAIC,CAAC,CAChB,EACA,aAAcH,EAAM,YAAYI,GAAQ,CAACF,EAAGC,IAAM,CAChD,GAAID,EAAE,QAAU,MAAQA,EAAE,QAAU,OAClC,MAAM,IAAI,MAAM,kDAAkD,EAEpE,GAAIC,EAAE,QAAU,MAAQA,EAAE,QAAU,OAClC,MAAM,IAAI,MAAM,kDAAkD,EAEpE,GAAI,CAACD,EAAE,UAAUC,CAAC,EAAG,MAAM,IAAI,MAAM,oBAAoB,EACzD,IAAIE,EAAMH,EAAE,MAAM,EAClB,OAAAG,EAAI,MAAQL,EAAM,KAAKI,EAAM,CAACC,EAAI,UAAU,EAAGF,EAAE,UAAU,CAAC,CAAC,EAAEE,EAAI,MAAOF,EAAE,KAAK,EACjFE,EAAI,UAAY,GACTA,CACT,CAAC,CACH,CAAC,CACH,CAAC,EC9CD,IAAIC,GAAO,iBACPC,IAAe,CAAC,OAAO,EAChBC,GAAsCC,EAAQH,GAAMC,IAAcG,GAAQ,CACnF,GAAI,CACF,MAAAC,CACF,EAAID,EAaJ,OAAOC,EAAML,GAAM,CACjB,iBAAkBM,GAClB,mBAAoB,SAAyBC,EAAGC,EAAG,CACjD,OAAOD,EAAE,IAAIC,CAAC,CAChB,EACA,uBAAwB,SAA6BD,EAAGC,EAAG,CACzD,OAAOD,EAAE,MAAMC,CAAC,CAClB,EACA,iBAAkB,SAAuBD,EAAGC,EAAG,CAC7C,OAAOD,EAAIC,CACb,EACA,qBAAsB,SAA2BD,EAAGC,EAAG,CACrD,OAAOD,EAAE,IAAIC,CAAC,CAChB,EACA,aAAcH,EAAM,YAAYI,GAAQ,CAACF,EAAGC,IAAM,CAChD,GAAID,EAAE,QAAU,MAAQA,EAAE,QAAU,OAClC,MAAM,IAAI,MAAM,kDAAkD,EAEpE,GAAIC,EAAE,QAAU,MAAQA,EAAE,QAAU,OAClC,MAAM,IAAI,MAAM,kDAAkD,EAEpE,GAAI,CAACD,EAAE,UAAUC,CAAC,EAAG,MAAM,IAAI,MAAM,oBAAoB,EACzD,IAAIE,EAAMH,EAAE,MAAM,EAClB,OAAAG,EAAI,MAAQL,EAAM,KAAKI,EAAM,CAACC,EAAI,UAAU,EAAGF,EAAE,UAAU,CAAC,CAAC,EAAEE,EAAI,MAAOF,EAAE,KAAK,EACjFE,EAAI,UAAY,GACTA,CACT,CAAC,CACH,CAAC,CACH,CAAC,EC7CD,IAAIC,GAAO,OACPC,IAAe,CAAC,SAAU,QAAS,aAAc,aAAc,SAAU,UAAW,YAAa,UAAU,EACpGC,GAA4BC,EAAQH,GAAMC,IAAcG,GAAQ,CACzE,GAAI,CACF,OAAAC,EACA,MAAAC,EACA,WAAAC,EACA,WAAAC,EACA,OAAAC,EACA,QAAAC,EACA,UAAAC,EACA,SAAAC,CACF,EAAIR,EA0CJ,OAAOE,EAAMN,GAAM,CACjB,OAAQa,GAIR,QAASC,EACT,mBAAoBA,EACpB,UAAW,SAAmBC,EAAG,CAC/B,OAAOA,EAAE,KAAK,CAChB,EACA,KAAMC,CACR,CAAC,EAWD,SAASF,EAAaC,EAAGE,EAAU,CAGjC,IAAIC,EAAOH,EAAE,IAAI,EAAI,EACjBI,EAAMJ,EAAE,IAAI,EAGZK,EAAY,IAAIV,EAAQG,GAAWM,CAAG,EAAG,CAAC,EAAE,IAAI,IAAIT,EAAQ,EAAGQ,CAAI,EAAE,IAAI,CAAC,EAC9E,GAAID,EAAU,CACZ,IAAII,EAAM,CAACD,EAAW,IAAIV,EAAQG,GAAWM,CAAG,EAAG,CAAC,EAAE,IAAI,IAAIT,EAAQ,EAAGQ,EAAO,KAAK,GAAK,EAAI,CAAC,EAAE,IAAI,CAAC,EAAG,IAAIR,EAAQG,GAAWM,CAAG,EAAG,CAAC,EAAE,IAAI,IAAIT,EAAQ,EAAGQ,EAAO,KAAK,GAAK,EAAI,CAAC,EAAE,IAAI,CAAC,CAAC,EAC1L,OAAOb,EAAO,SAAW,QAAUgB,EAAMZ,EAAOY,CAAG,CACrD,KACE,QAAOD,CAEX,CAQA,SAASJ,EAAUD,EAAG,CACpB,GAAIA,EAAE,OAASO,GAAUP,EAAE,KAAK,EAAG,CACjC,IAAIQ,EAASR,EAAE,MAAM,EACrB,OAAAQ,EAAO,MAAQ,EACfA,EAASA,EAAO,IAAI,EAAM,CAAC,EAC3BA,EAAO,MAAQT,EAAaC,EAAE,KAAK,EAC5BQ,CACT,KAAO,CACL,IAAIC,EAASjB,EAAWQ,EAAE,KAAK,EAC3BS,IACFT,EAAE,MAAQP,EAAWO,EAAE,KAAK,GAI9B,IAAIU,EACAC,GAAYX,EAAE,KAAK,EACrBU,EAAQ,IAAId,EAAU,CAAC,EAAE,IAAI,CAAC,EACrBgB,GAAWZ,EAAE,KAAK,EAC3BU,EAAQ,IAAIb,EAAS,EAAG,CAAC,EAEzBa,EAAQ,EAAI,EAEd,IAAIG,EAAUb,EAAE,IAAIU,CAAK,EACzB,OAAID,IACFI,EAAQ,MAAQpB,EAAWoB,EAAQ,KAAK,GAEnCA,CACT,CACF,CACF,CAAC,ECjID,IAAIC,IAAO,gBACPC,IAAe,CAAC,QAAS,aAAa,EAC/BC,GAAqCC,EAAQH,IAAMC,IAAcG,GAAQ,CAClF,GAAI,CACF,MAAAC,EACA,YAAAC,CACF,EAAIF,EAoBJ,OAAO,SAAuBG,EAAGC,EAAGC,EAAUC,EAAS,CAErD,IAAIC,EAAUJ,EAAE,QACZK,EAASL,EAAE,OACXM,EAAON,EAAE,KACTO,EAAQP,EAAE,MACVQ,EAAMR,EAAE,UAGZ,GAAI,CAACI,EACH,MAAM,IAAI,MAAM,oEAAoE,EAItF,IAAIK,EAAOF,EAAM,CAAC,EACdG,EAAUH,EAAM,CAAC,EAGjBI,EAEAC,EAAKb,EAELc,EAAO,EAEPC,EAAKZ,EAGL,OAAOM,GAAQ,WAEjBG,EAAKH,EAELI,EAAKd,EAAM,KAAKC,EAAa,CAACY,EAAIA,CAAE,CAAC,EAErCE,EAAOf,EAAM,QAAQ,EAAGa,CAAE,EAE1BV,EAAIH,EAAM,QAAQG,EAAGU,CAAE,EAEvBG,EAAKhB,EAAM,KAAKI,EAAU,CAACS,EAAIA,CAAE,CAAC,GASpC,QALII,EAAU,CAAC,EACXC,EAAS,CAAC,EACVC,EAAO,CAAC,EAGHC,EAAI,EAAGA,EAAIR,EAASQ,IAAK,CAEhCD,EAAKC,CAAC,EAAIF,EAAO,OAEjB,QAASG,EAAKb,EAAKY,CAAC,EAAGE,EAAKd,EAAKY,EAAI,CAAC,EAAGG,EAAIF,EAAIE,EAAID,EAAIC,IAAK,CAE5D,IAAIC,EAAIjB,EAAOgB,CAAC,EAEZE,EAAIpB,EAAUW,EAAGb,EAAGG,EAAQiB,CAAC,CAAC,EAAIP,EAAGV,EAAQiB,CAAC,EAAGpB,CAAC,EAEjDW,EAAGW,EAAGV,CAAI,IAEbG,EAAO,KAAKM,CAAC,EACbP,EAAQ,KAAKQ,CAAC,EAElB,CACF,CAEA,OAAAN,EAAKP,CAAO,EAAIM,EAAO,OAGhBhB,EAAE,mBAAmB,CAC1B,OAAQe,EACR,MAAOC,EACP,IAAKC,EACL,KAAM,CAACR,EAAMC,CAAO,EACpB,SAAUC,CACZ,CAAC,CACH,CACF,CAAC,ECrGD,IAAIa,IAAO,gBACPC,IAAe,CAAC,QAAS,aAAa,EAC/BC,GAAqCC,EAAQH,IAAMC,IAAcG,GAAQ,CAClF,GAAI,CACF,MAAAC,EACA,YAAAC,CACF,EAAIF,EAoBJ,OAAO,SAAuBG,EAAGC,EAAGC,EAAUC,EAAS,CAErD,IAAIC,EAAUJ,EAAE,QACZK,EAASL,EAAE,OACXM,EAAON,EAAE,KACTO,EAAQP,EAAE,MACVQ,EAAMR,EAAE,UAGZ,GAAI,CAACI,EACH,MAAM,IAAI,MAAM,oEAAoE,EAItF,IAAIK,EAAOF,EAAM,CAAC,EACdG,EAAUH,EAAM,CAAC,EAGjBI,EAEAC,EAAKV,EAGL,OAAOM,GAAQ,WAEjBG,EAAKH,EAELP,EAAIH,EAAM,QAAQG,EAAGU,CAAE,EAEvBC,EAAKd,EAAM,KAAKI,EAAU,CAACS,EAAIA,CAAE,CAAC,GAYpC,QARIE,EAAQ,CAAC,EAGTC,EAAI,CAAC,EAELC,EAAI,CAAC,EAGAC,EAAI,EAAGA,EAAIN,EAASM,IAAK,CAIhC,QAFIC,EAAOD,EAAI,EAENE,EAAKZ,EAAKU,CAAC,EAAGG,EAAKb,EAAKU,EAAI,CAAC,EAAGI,EAAIF,EAAIE,EAAID,EAAIC,IAAK,CAE5D,IAAIC,EAAIhB,EAAOe,CAAC,EAEhBN,EAAEO,CAAC,EAAIjB,EAAQgB,CAAC,EAChBL,EAAEM,CAAC,EAAIJ,CACT,CAEA,QAASK,EAAI,EAAGA,EAAIb,EAAMa,IAEpBN,IAAM,IAERH,EAAMS,CAAC,EAAI,CAAC,GAGVP,EAAEO,CAAC,IAAML,EAEXJ,EAAMS,CAAC,EAAEN,CAAC,EAAIb,EAAUS,EAAGX,EAAGa,EAAEQ,CAAC,CAAC,EAAIV,EAAGE,EAAEQ,CAAC,EAAGrB,CAAC,EAGhDY,EAAMS,CAAC,EAAEN,CAAC,EAAIb,EAAUS,EAAGX,EAAG,CAAC,EAAIW,EAAG,EAAGX,CAAC,CAGhD,CAGA,OAAO,IAAIF,EAAY,CACrB,KAAMc,EACN,KAAM,CAACJ,EAAMC,CAAO,EACpB,SAAUC,CACZ,CAAC,CACH,CACF,CAAC,ECtGD,IAAIY,IAAO,eACPC,IAAe,CAAC,OAAO,EAChBC,GAAoCC,EAAQH,IAAMC,IAAcG,GAAQ,CACjF,GAAI,CACF,MAAAC,CACF,EAAID,EAgBJ,OAAO,SAAsBE,EAAGC,EAAGC,EAAUC,EAAS,CAEpD,IAAIC,EAAQJ,EAAE,MACVK,EAAQL,EAAE,MACVM,EAAMN,EAAE,UAGRO,EAEAC,EAAKN,EAGL,OAAOI,GAAQ,WAEjBC,EAAKD,EAELL,EAAIF,EAAM,QAAQE,EAAGM,CAAE,EAEvBC,EAAKT,EAAM,KAAKG,EAAU,CAACK,EAAIA,CAAE,CAAC,GAIpC,IAAIE,EAAQJ,EAAM,OAAS,EAAIK,EAASF,EAAI,EAAGH,EAAOA,EAAM,CAAC,EAAGD,EAAOH,EAAGE,CAAO,EAAI,CAAC,EAGtF,OAAOH,EAAE,kBAAkB,CACzB,KAAMS,EACN,KAAME,GAAMN,CAAK,EACjB,SAAUE,CACZ,CAAC,CACH,EAGA,SAASG,EAASE,EAAGC,EAAOC,EAAGC,EAAGC,EAAIC,EAAId,EAAS,CAEjD,IAAIe,EAAK,CAAC,EAEV,GAAIL,IAAUC,EAAE,OAAS,EAEvB,QAASK,EAAI,EAAGA,EAAIJ,EAAGI,IAErBD,EAAGC,CAAC,EAAIhB,EAAUS,EAAEK,EAAID,EAAGG,CAAC,CAAC,EAAIP,EAAEI,EAAGG,CAAC,EAAGF,CAAE,MAI9C,SAASG,EAAI,EAAGA,EAAIL,EAAGK,IAErBF,EAAGE,CAAC,EAAIV,EAASE,EAAGC,EAAQ,EAAGC,EAAGA,EAAED,EAAQ,CAAC,EAAGG,EAAGI,CAAC,EAAGH,EAAId,CAAO,EAGtE,OAAOe,CACT,CACF,CAAC,ECnED,IAAIG,GAAO,OACPC,IAAe,CAAC,QAAS,SAAU,QAAS,SAAU,cAAe,QAAS,aAAa,EACpFC,IAAkCC,EAAQH,GAAM,CAAC,QAAS,SAAU,OAAO,EAAGI,GAAQ,CAC/F,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,MAAAC,CACF,EAAIH,EACJ,OAAOC,EAAML,GAAM,CACjB,OAAQ,SAAgBQ,EAAG,CACzB,OAAIC,GAAYD,EAAGD,EAAMC,CAAC,EAAGF,EAAO,OAAQA,EAAO,MAAM,EAChDC,EAAMC,CAAC,EAEP,KAAK,KAAKA,CAAC,CAEtB,EACA,iBAAkB,SAAuBA,EAAGE,EAAG,CAC7C,GAAID,GAAYD,EAAGD,EAAMC,EAAGE,CAAC,EAAGJ,EAAO,OAAQA,EAAO,MAAM,EAC1D,OAAOC,EAAMC,EAAGE,CAAC,EAEjB,GAAI,CAACC,EAAQC,CAAQ,EAAI,GAAG,OAAOJ,EAAG,GAAG,EAAE,MAAM,GAAG,EAChDK,EAAS,KAAK,KAAK,OAAO,GAAG,OAAOF,EAAQ,GAAG,EAAE,OAAO,OAAOC,CAAQ,EAAIF,CAAC,CAAC,CAAC,EAClF,OAACC,EAAQC,CAAQ,EAAI,GAAG,OAAOC,EAAQ,GAAG,EAAE,MAAM,GAAG,EAC9C,OAAO,GAAG,OAAOF,EAAQ,GAAG,EAAE,OAAO,OAAOC,CAAQ,EAAIF,CAAC,CAAC,CAErE,CACF,CAAC,CACH,CAAC,EACUI,GAA4BX,EAAQH,GAAMC,IAAcc,GAAS,CAC1E,GAAI,CACF,MAAAV,EACA,OAAAC,EACA,MAAAC,EACA,OAAAS,EACA,YAAAC,EACA,MAAAC,EACA,YAAAC,CACF,EAAIJ,EACAK,EAAgBC,GAAoB,CACtC,MAAAhB,EACA,YAAAY,CACF,CAAC,EACGK,EAAgBC,GAAoB,CACtC,MAAAlB,EACA,YAAAc,CACF,CAAC,EACGK,EAAeC,GAAmB,CACpC,MAAApB,CACF,CAAC,EACGqB,EAAaxB,IAAiB,CAChC,MAAAG,EACA,OAAAC,EACA,MAAAC,CACF,CAAC,EAsCD,OAAOF,EAAM,OAAQ,CACnB,OAAQqB,EAAW,WAAW,OAC9B,gBAAiBA,EAAW,WAAW,eAAe,EACtD,QAAS,SAAiBlB,EAAG,CAC3B,OAAOA,EAAE,KAAK,CAChB,EACA,kBAAmB,SAAwBA,EAAGE,EAAG,CAC/C,OAAOF,EAAE,KAAKE,CAAC,CACjB,EACA,qBAAsB,SAA2BF,EAAGE,EAAG,CACrD,OAAOF,EAAE,KAAKE,EAAE,SAAS,CAAC,CAC5B,EACA,UAAW,SAAmBF,EAAG,CAC/B,OAAIC,GAAeD,EAAGD,EAAMC,CAAC,EAAGF,EAAO,OAAQA,EAAO,MAAM,EACnDC,EAAMC,CAAC,EAEPA,EAAE,KAAK,CAElB,EACA,uBAAwB,SAA6BA,EAAGE,EAAG,CACzD,OAAID,GAAeD,EAAGD,EAAMC,EAAGE,CAAC,EAAGJ,EAAO,OAAQA,EAAO,MAAM,EACtDC,EAAMC,EAAGE,CAAC,EAEVF,EAAE,gBAAgBE,EAAE,SAAS,EAAGiB,GAAQ,UAAU,CAE7D,EACA,SAAU,SAAkBnB,EAAG,CAC7B,OAAOA,EAAE,KAAK,CAChB,EACA,mBAAoB,SAAyBA,EAAGE,EAAG,CACjD,OAAOF,EAAE,KAAKE,CAAC,CACjB,EACA,sBAAuB,SAA4BF,EAAGE,EAAG,CACvD,OAAOF,EAAE,KAAKE,EAAE,SAAS,CAAC,CAC5B,EACA,iBAAkBL,EAAM,YAAYuB,GAAQpB,GAEnCqB,GAAQrB,EAAGoB,EAAM,EAAI,CAC7B,EACD,4BAA6BvB,EAAM,YAAYuB,GAAQ,CAACpB,EAAGE,IAElDmB,GAAQrB,EAAGsB,GAAKF,EAAKE,EAAGpB,CAAC,EAAG,EAAI,CACxC,EACD,mCAAoCL,EAAM,YAAYuB,GAAQ,CAACpB,EAAGuB,IACzDX,EAAcZ,EAAGuB,EAAGH,EAAM,EAAK,CACvC,EACD,kCAAmCvB,EAAM,YAAYuB,GAAQ,CAACpB,EAAGuB,IACxDP,EAAahB,EAAGuB,EAAGH,EAAM,EAAK,CACtC,EACD,iDAAkDvB,EAAM,YAAYuB,GAAQ,CAACpB,EAAGuB,IAEvEP,EAAaR,EAAOe,CAAC,EAAGvB,EAAGoB,EAAM,EAAI,EAAE,QAAQ,CACvD,EACD,kDAAmDvB,EAAM,YAAYuB,GAAQ,CAACpB,EAAGuB,IAC3Ed,EAAYT,EAAG,CAAC,EAAUU,EAAMa,EAAE,KAAK,EAAGA,EAAE,QAAQ,CAAC,EACrDA,EAAE,QAAQ,IAAM,QACXP,EAAaO,EAAGvB,EAAGoB,EAAM,EAAI,EAE/BN,EAAcS,EAAGvB,EAAGoB,EAAM,EAAI,CACtC,CACH,CAAC,CACH,CAAC,EC9JD,IAAII,GAAO,OACPC,IAAe,CAAC,OAAO,EAChBC,GAA4BC,EAAQH,GAAMC,IAAcG,GAAQ,CACzE,GAAI,CACF,MAAAC,CACF,EAAID,EA0BJ,OAAOC,EAAML,GAAM,CACjB,OAAQM,GACR,QAAS,SAAiBC,EAAG,CAC3B,OAAOA,EAAE,IAAIA,CAAC,EAAE,IAAIA,CAAC,CACvB,EACA,UAAW,SAAmBA,EAAG,CAC/B,OAAOA,EAAE,MAAMA,CAAC,EAAE,MAAMA,CAAC,CAC3B,EACA,OAAQ,SAAgBA,EAAG,CACzB,OAAOA,EAAIA,EAAIA,CACjB,EACA,SAAU,SAAkBA,EAAG,CAC7B,OAAOA,EAAE,IAAI,CAAC,CAChB,EACA,KAAM,SAAcA,EAAG,CACrB,OAAOA,EAAE,IAAI,CAAC,CAChB,CACF,CAAC,CACH,CAAC,ECjDD,IAAIC,GAAO,MACPC,IAAe,CAAC,OAAO,EAChBC,GAA2BC,EAAQH,GAAMC,IAAcG,GAAQ,CACxE,GAAI,CACF,MAAAC,CACF,EAAID,EA+BJ,OAAOC,EAAML,GAAM,CACjB,OAAQM,GACR,QAAS,SAAiBC,EAAG,CAC3B,OAAOA,EAAE,IAAI,CACf,EACA,UAAW,SAAmBA,EAAG,CAC/B,OAAOA,EAAE,IAAI,CACf,CACF,CAAC,CACH,CAAC,EC7CD,IAAIC,GAAO,QACPC,IAAe,CAAC,QAAS,SAAS,EAC3BC,GAA6BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC1E,GAAI,CACF,MAAAC,EACA,QAASC,CACX,EAAIF,EAkCJ,OAAOC,EAAML,GAAM,CACjB,OAAQO,GACR,QAAS,SAAiBC,EAAG,CAC3B,IAAIC,EAAI,KAAK,IAAID,EAAE,EAAE,EACrB,OAAO,IAAIF,EAASG,EAAI,KAAK,IAAID,EAAE,EAAE,EAAI,EAAGC,EAAI,KAAK,IAAID,EAAE,EAAE,CAAC,CAChE,EACA,UAAW,SAAmBA,EAAG,CAC/B,OAAOA,EAAE,IAAI,EAAE,MAAM,CAAC,CACxB,CACF,CAAC,CACH,CAAC,EChDD,IAAIE,GAAO,MACPC,IAAe,CAAC,QAAS,UAAW,SAAU,OAAQ,QAAS,cAAe,QAAS,aAAa,EAC7FC,IAAiCC,EAAQH,GAAM,CAAC,QAAS,OAAQ,OAAO,EAAGI,GAAQ,CAC5F,GAAI,CACF,MAAAC,EACA,KAAAC,EACA,MAAAC,CACF,EAAIH,EACJ,OAAOC,EAAML,GAAM,CACjB,OAAQ,SAAgBQ,EAAG,CACzB,OAAOA,EAAI,EAAID,EAAMC,CAAC,EAAIF,EAAKE,CAAC,CAClC,EACA,iBAAkB,SAAuBA,EAAGC,EAAG,CAC7C,OAAOD,EAAI,EAAID,EAAMC,EAAGC,CAAC,EAAIH,EAAKE,EAAGC,CAAC,CACxC,CACF,CAAC,CACH,CAAC,EACUC,GAA2BP,EAAQH,GAAMC,IAAcU,GAAS,CACzE,GAAI,CACF,MAAAN,EACA,QAASO,EACT,OAAAC,EACA,KAAAP,EACA,MAAAC,EACA,YAAAO,EACA,MAAAC,EACA,YAAAC,CACF,EAAIL,EACAM,EAAgBC,GAAoB,CACtC,MAAAb,EACA,YAAAW,CACF,CAAC,EACGG,EAAeC,GAAmB,CACpC,MAAAf,CACF,CAAC,EACGgB,EAAYnB,IAAgB,CAC9B,MAAAG,EACA,KAAAC,EACA,MAAAC,CACF,CAAC,EAqCD,OAAOF,EAAM,MAAO,CAClB,OAAQgB,EAAU,WAAW,OAC7B,6BAA8BA,EAAU,WAAW,eAAe,EAClE,QAAS,SAAiBb,EAAG,CAC3B,OAAO,IAAII,EAASJ,EAAE,GAAK,EAAI,KAAK,MAAMA,EAAE,EAAE,EAAI,KAAK,KAAKA,EAAE,EAAE,EAAGA,EAAE,GAAK,EAAI,KAAK,MAAMA,EAAE,EAAE,EAAI,KAAK,KAAKA,EAAE,EAAE,CAAC,CAClH,EACA,kBAAmB,SAAwBA,EAAGC,EAAG,CAC/C,OAAO,IAAIG,EAASJ,EAAE,GAAK,EAAID,EAAMC,EAAE,GAAIC,CAAC,EAAIH,EAAKE,EAAE,GAAIC,CAAC,EAAGD,EAAE,GAAK,EAAID,EAAMC,EAAE,GAAIC,CAAC,EAAIH,EAAKE,EAAE,GAAIC,CAAC,CAAC,CAC1G,EACA,qBAAsB,SAA2BD,EAAGc,EAAI,CACtD,IAAIb,EAAIa,EAAG,SAAS,EACpB,OAAO,IAAIV,EAASJ,EAAE,GAAK,EAAID,EAAMC,EAAE,GAAIC,CAAC,EAAIH,EAAKE,EAAE,GAAIC,CAAC,EAAGD,EAAE,GAAK,EAAID,EAAMC,EAAE,GAAIC,CAAC,EAAIH,EAAKE,EAAE,GAAIC,CAAC,CAAC,CAC1G,EACA,UAAW,SAAmBD,EAAG,CAC/B,OAAOA,EAAE,WAAW,EAAIF,EAAKE,CAAC,EAAID,EAAMC,CAAC,CAC3C,EACA,gCAAiC,SAAqCA,EAAGC,EAAG,CAC1E,OAAOD,EAAE,WAAW,EAAIF,EAAKE,EAAGC,CAAC,EAAIF,EAAMC,EAAGC,CAAC,CACjD,EACA,SAAU,SAAkBD,EAAG,CAC7B,OAAOA,EAAE,EAAI,EAAIA,EAAE,KAAK,EAAIA,EAAE,MAAM,CACtC,EACA,+BAAgC,SAAoCA,EAAGC,EAAG,CACxE,OAAOD,EAAE,EAAI,EAAIF,EAAKE,EAAGC,CAAC,EAAIF,EAAMC,EAAGC,CAAC,CAC1C,EACA,iBAAkBJ,EAAM,YAAYkB,GAAQf,GAEnCgB,GAAQhB,EAAGe,EAAM,EAAI,CAC7B,EACD,qCAAsClB,EAAM,YAAYkB,GAAQ,CAACf,EAAGC,IAE3De,GAAQhB,EAAGiB,GAAKF,EAAKE,EAAGhB,CAAC,EAAG,EAAI,CACxC,EACD,iDAAkDJ,EAAM,YAAYkB,GAAQ,CAACf,EAAGkB,IAEvEP,EAAaN,EAAOa,CAAC,EAAGlB,EAAGe,EAAM,EAAI,EAAE,QAAQ,CACvD,EACD,kDAAmDlB,EAAM,YAAYkB,GAAQ,CAACf,EAAGkB,IAC3EZ,EAAYN,EAAG,CAAC,EAAUO,EAAMW,EAAE,KAAK,EAAGA,EAAE,QAAQ,CAAC,EACrDA,EAAE,QAAQ,IAAM,QACXP,EAAaO,EAAGlB,EAAGe,EAAM,EAAI,EAE/BN,EAAcS,EAAGlB,EAAGe,EAAM,EAAI,CACtC,CACH,CAAC,CACH,CAAC,ECrHD,IAAII,GAAO,QACPC,IAAe,CAAC,QAAS,SAAU,QAAS,SAAU,cAAe,QAAS,aAAa,EACpFC,IAAmCC,EAAQH,GAAM,CAAC,QAAS,SAAU,OAAO,EAAGI,GAAQ,CAChG,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,MAAAC,CACF,EAAIH,EACJ,OAAOC,EAAML,GAAM,CACjB,OAAQ,SAAgBQ,EAAG,CACzB,OAAIC,GAAYD,EAAGD,EAAMC,CAAC,EAAGF,EAAO,OAAQA,EAAO,MAAM,EAChDC,EAAMC,CAAC,EAEP,KAAK,MAAMA,CAAC,CAEvB,EACA,iBAAkB,SAAuBA,EAAGE,EAAG,CAC7C,GAAID,GAAYD,EAAGD,EAAMC,EAAGE,CAAC,EAAGJ,EAAO,OAAQA,EAAO,MAAM,EAC1D,OAAOC,EAAMC,EAAGE,CAAC,EAEjB,GAAI,CAACC,EAAQC,CAAQ,EAAI,GAAG,OAAOJ,EAAG,GAAG,EAAE,MAAM,GAAG,EAChDK,EAAS,KAAK,MAAM,OAAO,GAAG,OAAOF,EAAQ,GAAG,EAAE,OAAO,OAAOC,CAAQ,EAAIF,CAAC,CAAC,CAAC,EACnF,OAACC,EAAQC,CAAQ,EAAI,GAAG,OAAOC,EAAQ,GAAG,EAAE,MAAM,GAAG,EAC9C,OAAO,GAAG,OAAOF,EAAQ,GAAG,EAAE,OAAO,OAAOC,CAAQ,EAAIF,CAAC,CAAC,CAErE,CACF,CAAC,CACH,CAAC,EACUI,GAA6BX,EAAQH,GAAMC,IAAcc,GAAS,CAC3E,GAAI,CACF,MAAAV,EACA,OAAAC,EACA,MAAAC,EACA,OAAAS,EACA,YAAAC,EACA,MAAAC,EACA,YAAAC,CACF,EAAIJ,EACAK,EAAgBC,GAAoB,CACtC,MAAAhB,EACA,YAAAY,CACF,CAAC,EACGK,EAAgBC,GAAoB,CACtC,MAAAlB,EACA,YAAAc,CACF,CAAC,EACGK,EAAeC,GAAmB,CACpC,MAAApB,CACF,CAAC,EACGqB,EAAcxB,IAAkB,CAClC,MAAAG,EACA,OAAAC,EACA,MAAAC,CACF,CAAC,EAyCD,OAAOF,EAAM,QAAS,CACpB,OAAQqB,EAAY,WAAW,OAC/B,gBAAiBA,EAAY,WAAW,eAAe,EACvD,QAAS,SAAiBlB,EAAG,CAC3B,OAAOA,EAAE,MAAM,CACjB,EACA,kBAAmB,SAAwBA,EAAGE,EAAG,CAC/C,OAAOF,EAAE,MAAME,CAAC,CAClB,EACA,qBAAsB,SAA2BF,EAAGE,EAAG,CACrD,OAAOF,EAAE,MAAME,EAAE,SAAS,CAAC,CAC7B,EACA,UAAW,SAAmBF,EAAG,CAC/B,OAAIC,GAAeD,EAAGD,EAAMC,CAAC,EAAGF,EAAO,OAAQA,EAAO,MAAM,EACnDC,EAAMC,CAAC,EAEPA,EAAE,MAAM,CAEnB,EACA,uBAAwB,SAA6BA,EAAGE,EAAG,CACzD,OAAID,GAAeD,EAAGD,EAAMC,EAAGE,CAAC,EAAGJ,EAAO,OAAQA,EAAO,MAAM,EACtDC,EAAMC,EAAGE,CAAC,EAEVF,EAAE,gBAAgBE,EAAE,SAAS,EAAGiB,GAAQ,WAAW,CAE9D,EACA,SAAU,SAAkBnB,EAAG,CAC7B,OAAOA,EAAE,MAAM,CACjB,EACA,mBAAoB,SAAyBA,EAAGE,EAAG,CACjD,OAAOF,EAAE,MAAME,CAAC,CAClB,EACA,sBAAuB,SAA4BF,EAAGE,EAAG,CACvD,OAAOF,EAAE,MAAME,EAAE,SAAS,CAAC,CAC7B,EACA,iBAAkBL,EAAM,YAAYuB,GAAQpB,GAEnCqB,GAAQrB,EAAGoB,EAAM,EAAI,CAC7B,EACD,4BAA6BvB,EAAM,YAAYuB,GAAQ,CAACpB,EAAGE,IAElDmB,GAAQrB,EAAGsB,GAAKF,EAAKE,EAAGpB,CAAC,EAAG,EAAI,CACxC,EACD,mCAAoCL,EAAM,YAAYuB,GAAQ,CAACpB,EAAGuB,IACzDX,EAAcZ,EAAGuB,EAAGH,EAAM,EAAK,CACvC,EACD,kCAAmCvB,EAAM,YAAYuB,GAAQ,CAACpB,EAAGuB,IACxDP,EAAahB,EAAGuB,EAAGH,EAAM,EAAK,CACtC,EACD,iDAAkDvB,EAAM,YAAYuB,GAAQ,CAACpB,EAAGuB,IAEvEP,EAAaR,EAAOe,CAAC,EAAGvB,EAAGoB,EAAM,EAAI,EAAE,QAAQ,CACvD,EACD,kDAAmDvB,EAAM,YAAYuB,GAAQ,CAACpB,EAAGuB,IAC3Ed,EAAYT,EAAG,CAAC,EAAUU,EAAMa,EAAE,KAAK,EAAGA,EAAE,QAAQ,CAAC,EACrDA,EAAE,QAAQ,IAAM,QACXP,EAAaO,EAAGvB,EAAGoB,EAAM,EAAI,EAE/BN,EAAcS,EAAGvB,EAAGoB,EAAM,EAAI,CACtC,CACH,CAAC,CACH,CAAC,ECjKD,IAAII,IAAO,gBACPC,IAAe,CAAC,QAAS,aAAa,EAC/BC,GAAqCC,EAAQH,IAAMC,IAAcG,GAAQ,CAClF,GAAI,CACF,MAAAC,EACA,YAAAC,CACF,EAAIF,EAoBJ,OAAO,SAAuBG,EAAaC,EAAcC,EAAUC,EAAS,CAE1E,IAAIC,EAAQJ,EAAY,MACpBK,EAAQL,EAAY,MACpBM,EAAMN,EAAY,WAAaA,EAAY,YAAY,EAEvDO,EAAUN,EAAa,QACvBO,EAASP,EAAa,OACtBQ,EAAOR,EAAa,KACpBS,EAAQT,EAAa,MACrBU,EAAMV,EAAa,WAAaA,EAAa,QAAU,OAAYA,EAAa,UAAYA,EAAa,YAAY,EAGzH,GAAII,EAAM,SAAWK,EAAM,OACzB,MAAM,IAAIE,GAAeP,EAAM,OAAQK,EAAM,MAAM,EAIrD,GAAIL,EAAM,CAAC,IAAMK,EAAM,CAAC,GAAKL,EAAM,CAAC,IAAMK,EAAM,CAAC,EAC/C,MAAM,IAAI,WAAW,iCAAmCL,EAAQ,0BAA4BK,EAAQ,GAAG,EAIzG,GAAI,CAACH,EACH,MAAM,IAAI,MAAM,oEAAoE,EAItF,IAAIM,EAAOR,EAAM,CAAC,EACdS,EAAUT,EAAM,CAAC,EAGjBU,EAEAC,EAAKjB,EAELkB,EAAO,EAEPC,EAAKhB,EAGL,OAAOI,GAAQ,UAAYA,IAAQK,GAAOL,IAAQ,UAEpDS,EAAKT,EAELU,EAAKlB,EAAM,KAAKC,EAAa,CAACgB,EAAIA,CAAE,CAAC,EAErCE,EAAOnB,EAAM,QAAQ,EAAGiB,CAAE,EAE1BG,EAAKpB,EAAM,KAAKI,EAAU,CAACa,EAAIA,CAAE,CAAC,GASpC,QALII,EAAU,CAAC,EACXC,EAAS,CAAC,EACVC,EAAO,CAAC,EAGHC,EAAI,EAAGA,EAAIR,EAASQ,IAAK,CAEhCD,EAAKC,CAAC,EAAIF,EAAO,OAEjB,QAASG,EAAKd,EAAKa,CAAC,EAAGE,EAAKf,EAAKa,EAAI,CAAC,EAAGG,EAAIF,EAAIE,EAAID,EAAIC,IAAK,CAE5D,IAAIC,EAAIlB,EAAOiB,CAAC,EAEZE,EAAMxB,EAAUe,EAAGX,EAAQkB,CAAC,EAAGrB,EAAMsB,CAAC,EAAEJ,CAAC,CAAC,EAAIJ,EAAGd,EAAMsB,CAAC,EAAEJ,CAAC,EAAGf,EAAQkB,CAAC,CAAC,EAEvET,EAAGW,EAAKV,CAAI,IAEfG,EAAO,KAAKM,CAAC,EACbP,EAAQ,KAAKQ,CAAG,EAEpB,CACF,CAEA,OAAAN,EAAKP,CAAO,EAAIM,EAAO,OAGhBnB,EAAa,mBAAmB,CACrC,OAAQkB,EACR,MAAOC,EACP,IAAKC,EACL,KAAM,CAACR,EAAMC,CAAO,EACpB,SAAUR,IAAQN,EAAY,WAAaW,IAAQV,EAAa,UAAYc,EAAK,MACnF,CAAC,CACH,CACF,CAAC,ECjHD,IAAIa,IAAO,gBACPC,IAAe,CAAC,OAAO,EAChBC,GAAqCC,EAAQH,IAAMC,IAAcG,GAAQ,CAClF,GAAI,CACF,MAAAC,CACF,EAAID,EAoBJ,OAAO,SAAuBE,EAAaC,EAAcC,EAAUC,EAAS,CAE1E,IAAIC,EAAQJ,EAAY,MACpBK,EAAQL,EAAY,MACpBM,EAAMN,EAAY,WAAaA,EAAY,YAAY,EAEvDO,EAAUN,EAAa,QACvBO,EAASP,EAAa,OACtBQ,EAAOR,EAAa,KACpBS,EAAQT,EAAa,MACrBU,EAAMV,EAAa,WAAaA,EAAa,QAAU,OAAYA,EAAa,UAAYA,EAAa,YAAY,EAGzH,GAAII,EAAM,SAAWK,EAAM,OACzB,MAAM,IAAIE,GAAeP,EAAM,OAAQK,EAAM,MAAM,EAIrD,GAAIL,EAAM,CAAC,IAAMK,EAAM,CAAC,GAAKL,EAAM,CAAC,IAAMK,EAAM,CAAC,EAC/C,MAAM,IAAI,WAAW,iCAAmCL,EAAQ,0BAA4BK,EAAQ,GAAG,EAIzG,GAAI,CAACH,EACH,MAAM,IAAI,MAAM,oEAAoE,EAItF,IAAIM,EAAOR,EAAM,CAAC,EACdS,EAAUT,EAAM,CAAC,EAGjBU,EAEAC,EAAO,EAEPC,EAAKf,EAGL,OAAOI,GAAQ,UAAYA,IAAQK,GAAOL,IAAQ,UAEpDS,EAAKT,EAELU,EAAOjB,EAAM,QAAQ,EAAGgB,CAAE,EAE1BE,EAAKlB,EAAM,KAAKG,EAAU,CAACa,EAAIA,CAAE,CAAC,GAOpC,QAHIG,EAAQ,CAAC,EAGJC,EAAI,EAAGA,EAAIN,EAAMM,IAExBD,EAAMC,CAAC,EAAI,CAAC,EASd,QALIC,EAAI,CAAC,EAELC,EAAI,CAAC,EAGAC,EAAI,EAAGA,EAAIR,EAASQ,IAAK,CAIhC,QAFIC,EAAOD,EAAI,EAENE,EAAKf,EAAKa,CAAC,EAAGG,EAAKhB,EAAKa,EAAI,CAAC,EAAGI,EAAIF,EAAIE,EAAID,EAAIC,IAAK,CAE5D,IAAIC,EAAInB,EAAOkB,CAAC,EAEhBN,EAAEO,CAAC,EAAIxB,EAAUc,EAAGV,EAAQmB,CAAC,EAAGtB,EAAMuB,CAAC,EAAEL,CAAC,CAAC,EAAIL,EAAGb,EAAMuB,CAAC,EAAEL,CAAC,EAAGf,EAAQmB,CAAC,CAAC,EACzEL,EAAEM,CAAC,EAAIJ,CACT,CAEA,QAASK,EAAI,EAAGA,EAAIf,EAAMe,IAEpBP,EAAEO,CAAC,IAAML,EAEXL,EAAMU,CAAC,EAAEN,CAAC,EAAIF,EAAEQ,CAAC,EAGjBV,EAAMU,CAAC,EAAEN,CAAC,EAAInB,EAAUc,EAAGD,EAAMZ,EAAMwB,CAAC,EAAEN,CAAC,CAAC,EAAIL,EAAGb,EAAMwB,CAAC,EAAEN,CAAC,EAAGN,CAAI,CAG1E,CAGA,OAAOhB,EAAY,kBAAkB,CACnC,KAAMkB,EACN,KAAM,CAACL,EAAMC,CAAO,EACpB,SAAUR,IAAQN,EAAY,WAAaW,IAAQV,EAAa,UAAYc,EAAK,MACnF,CAAC,CACH,CACF,CAAC,ECvHD,IAAIc,IAAO,iBACPC,IAAe,CAAC,QAAS,aAAa,EAC/BC,GAAsCC,EAAQH,IAAMC,IAAcG,GAAQ,CACnF,GAAI,CACF,MAAAC,EACA,YAAAC,CACF,EAAIF,EAmBJ,OAAO,SAAwBG,EAAGC,EAAGC,EAAU,CAE7C,IAAIC,EAAUH,EAAE,QACZI,EAASJ,EAAE,OACXK,EAAOL,EAAE,KACTM,EAAQN,EAAE,MACVO,EAAMP,EAAE,WAAaA,EAAE,QAAU,OAAYA,EAAE,UAAYA,EAAE,YAAY,EAEzEQ,EAAUP,EAAE,QACZQ,EAASR,EAAE,OACXS,EAAOT,EAAE,KACTU,EAAQV,EAAE,MACVW,EAAMX,EAAE,WAAaA,EAAE,QAAU,OAAYA,EAAE,UAAYA,EAAE,YAAY,EAG7E,GAAIK,EAAM,SAAWK,EAAM,OACzB,MAAM,IAAIE,GAAeP,EAAM,OAAQK,EAAM,MAAM,EAIrD,GAAIL,EAAM,CAAC,IAAMK,EAAM,CAAC,GAAKL,EAAM,CAAC,IAAMK,EAAM,CAAC,EAC/C,MAAM,IAAI,WAAW,iCAAmCL,EAAQ,0BAA4BK,EAAQ,GAAG,EAIzG,IAAIG,EAAOR,EAAM,CAAC,EACdS,EAAUT,EAAM,CAAC,EAGjBU,EAEAC,EAAKlB,EAELmB,EAAO,EAEPC,EAAKjB,EAGL,OAAOK,GAAQ,UAAYA,IAAQK,GAAOL,IAAQ,UAEpDS,EAAKT,EAELU,EAAKnB,EAAM,KAAKC,EAAa,CAACiB,EAAIA,CAAE,CAAC,EAErCE,EAAOpB,EAAM,QAAQ,EAAGkB,CAAE,EAE1BG,EAAKrB,EAAM,KAAKI,EAAU,CAACc,EAAIA,CAAE,CAAC,GAIpC,IAAII,EAAUjB,GAAWK,EAAU,CAAC,EAAI,OACpCa,EAAS,CAAC,EACVC,EAAO,CAAC,EAGRC,EAAKH,EAAU,CAAC,EAAI,OACpBI,EAAKJ,EAAU,CAAC,EAAI,OAEpBK,EAAK,CAAC,EACNC,EAAK,CAAC,EAGNC,EAAGC,EAAGC,EAAGC,EAGb,IAAKF,EAAI,EAAGA,EAAIb,EAASa,IAAK,CAE5BN,EAAKM,CAAC,EAAIP,EAAO,OAEjB,IAAIU,GAAOH,EAAI,EAEf,IAAKC,EAAIxB,EAAKuB,CAAC,EAAGE,EAAKzB,EAAKuB,EAAI,CAAC,EAAGC,EAAIC,EAAID,IAE1CF,EAAIvB,EAAOyB,CAAC,EAEZR,EAAO,KAAKM,CAAC,EAEbF,EAAGE,CAAC,EAAII,GAEJR,IACFA,EAAGI,CAAC,EAAIxB,EAAQ0B,CAAC,GAIrB,IAAKA,EAAInB,EAAKkB,CAAC,EAAGE,EAAKpB,EAAKkB,EAAI,CAAC,EAAGC,EAAIC,EAAID,IAE1CF,EAAIlB,EAAOoB,CAAC,EAERJ,EAAGE,CAAC,IAAMI,IAEZV,EAAO,KAAKM,CAAC,EAGfD,EAAGC,CAAC,EAAII,GAEJP,IACFA,EAAGG,CAAC,EAAInB,EAAQqB,CAAC,GAIrB,GAAIT,EAIF,IAFAS,EAAIP,EAAKM,CAAC,EAEHC,EAAIR,EAAO,QAAQ,CAExBM,EAAIN,EAAOQ,CAAC,EAEZ,IAAIG,EAAMP,EAAGE,CAAC,EACVM,GAAMP,EAAGC,CAAC,EAEd,GAAIK,IAAQD,IAAQE,KAAQF,GAAM,CAEhC,IAAIG,GAAKF,IAAQD,GAAOR,EAAGI,CAAC,EAAIT,EAC5BiB,GAAKF,KAAQF,GAAOP,EAAGG,CAAC,EAAIT,EAE5BkB,GAAKjB,EAAGe,GAAIC,EAAE,EAEblB,EAAGmB,GAAIlB,CAAI,EAOdG,EAAO,OAAOQ,EAAG,CAAC,GALlBT,EAAQ,KAAKgB,EAAE,EAEfP,IAKJ,CACF,CAEJ,CAEA,OAAAP,EAAKP,CAAO,EAAIM,EAAO,OAGhBrB,EAAE,mBAAmB,CAC1B,OAAQoB,EACR,MAAOC,EACP,IAAKC,EACL,KAAM,CAACR,EAAMC,CAAO,EACpB,SAAUR,IAAQP,EAAE,WAAaY,IAAQX,EAAE,UAAYe,EAAK,MAC9D,CAAC,CACH,CACF,CAAC,ECxKD,IAAIqB,IAAO,eACPC,IAAe,CAAC,OAAO,EAChBC,GAAoCC,EAAQH,IAAMC,IAAcG,GAAQ,CACjF,GAAI,CACF,MAAAC,CACF,EAAID,EAeJ,OAAO,SAAsBE,EAAGC,EAAGC,EAAU,CAE3C,IAAIC,EAAQH,EAAE,MACVI,EAAQJ,EAAE,MACVK,EAAML,EAAE,UAERM,EAAQL,EAAE,MACVM,EAAQN,EAAE,MACVO,EAAMP,EAAE,UAERQ,EAAQ,CAAC,EAGb,GAAIL,EAAM,SAAWG,EAAM,OACzB,MAAM,IAAIG,GAAeN,EAAM,OAAQG,EAAM,MAAM,EAIrD,QAASI,EAAI,EAAGA,EAAIP,EAAM,OAAQO,IAAK,CAErC,GAAIP,EAAMO,CAAC,IAAMJ,EAAMI,CAAC,EACtB,MAAM,IAAI,WAAW,iCAAmCP,EAAQ,0BAA4BG,EAAQ,GAAG,EAGzGE,EAAME,CAAC,EAAIP,EAAMO,CAAC,CACpB,CAGA,IAAIC,EAEAC,EAAKX,EAGL,OAAOG,GAAQ,UAAYA,IAAQG,IAErCI,EAAKP,EAELQ,EAAKd,EAAM,KAAKG,EAAU,CAACU,EAAIA,CAAE,CAAC,GAIpC,IAAIE,EAAQL,EAAM,OAAS,EAAIM,EAASF,EAAI,EAAGJ,EAAOA,EAAM,CAAC,EAAGN,EAAOG,CAAK,EAAI,CAAC,EAGjF,OAAON,EAAE,kBAAkB,CACzB,KAAMc,EACN,KAAML,EACN,SAAUG,CACZ,CAAC,CACH,EAGA,SAASG,EAASC,EAAGC,EAAON,EAAGO,EAAGC,EAAIC,EAAI,CAExC,IAAIC,EAAK,CAAC,EAEV,GAAIJ,IAAUN,EAAE,OAAS,EAEvB,QAASW,EAAI,EAAGA,EAAIJ,EAAGI,IAErBD,EAAGC,CAAC,EAAIN,EAAEG,EAAGG,CAAC,EAAGF,EAAGE,CAAC,CAAC,MAIxB,SAASC,EAAI,EAAGA,EAAIL,EAAGK,IAErBF,EAAGE,CAAC,EAAIR,EAASC,EAAGC,EAAQ,EAAGN,EAAGA,EAAEM,EAAQ,CAAC,EAAGE,EAAGI,CAAC,EAAGH,EAAGG,CAAC,CAAC,EAGhE,OAAOF,CACT,CACF,CAAC,EChFM,SAASG,GAAUC,EAAGC,EAAG,CAC9B,GAAIC,GAAgBF,EAAE,KAAK,EAAGC,EAAE,KAAK,CAAC,EAEpC,MAAO,CAACD,EAAGC,CAAC,EAId,IAAIE,EAAUC,GAAeJ,EAAE,KAAK,EAAGC,EAAE,KAAK,CAAC,EAG/C,MAAO,CAACD,EAAGC,CAAC,EAAE,IAAII,GAAKC,IAAaD,EAAGF,CAAO,CAAC,CACjD,CAUA,SAASG,IAAaD,EAAGE,EAAM,CAC7B,OAAIL,GAAgBG,EAAE,KAAK,EAAGE,CAAI,EACzBF,EAEFA,EAAE,OAAOG,GAAYH,EAAE,QAAQ,EAAGE,CAAI,EAAGF,EAAE,SAAS,CAAC,CAC9D,CClCA,IAAII,IAAO,uBACPC,IAAe,CAAC,QAAS,QAAQ,EAC1BC,GAA4CC,EAAQH,IAAMC,IAAcG,GAAQ,CACzF,GAAI,CACF,MAAAC,EACA,OAAAC,CACF,EAAIF,EACAG,EAAeC,GAAmB,CACpC,MAAAH,CACF,CAAC,EACGI,EAAeC,GAAmB,CACpC,MAAAL,CACF,CAAC,EAmBD,OAAO,SAA8BM,EAAS,CAC5C,IAAIC,EAAOD,EAAQ,KACfE,EAAKF,EAAQ,IAAMA,EAAQ,GAC3BG,EACAF,GAEFE,EAAmB,CACjB,2BAA4B,CAACC,EAAGC,IAAMT,EAAa,GAAGU,GAAUF,EAAGC,CAAC,EAAGJ,CAAI,EAC3E,eAAgB,CAACG,EAAGC,IAAMT,EAAa,GAAGU,GAAUX,EAAOS,CAAC,EAAGT,EAAOU,CAAC,CAAC,EAAGJ,CAAI,EAAE,QAAQ,EACzF,qBAAsB,CAACG,EAAGC,IAAMT,EAAa,GAAGU,GAAUX,EAAOS,CAAC,EAAGC,CAAC,EAAGJ,CAAI,EAC7E,qBAAsB,CAACG,EAAGC,IAAMT,EAAa,GAAGU,GAAUF,EAAGT,EAAOU,CAAC,CAAC,EAAGJ,CAAI,CAC/E,EAEID,EAAQ,KACVG,EAAiB,4BAA4B,EAAI,CAACC,EAAGC,IAAML,EAAQ,GAAG,GAAGM,GAAUF,EAAGC,CAAC,EAAGJ,EAAM,EAAK,GAEnGD,EAAQ,KACVG,EAAiB,2BAA2B,EAAI,CAACC,EAAGC,IAAML,EAAQ,GAAG,GAAGM,GAAUF,EAAGC,CAAC,EAAGJ,EAAM,EAAK,EACpGE,EAAiB,qBAAqB,EAAI,CAACC,EAAGC,IAAML,EAAQ,GAAG,GAAGM,GAAUX,EAAOS,CAAC,EAAGC,CAAC,EAAGJ,EAAM,EAAK,GAEpGC,IACFC,EAAiB,2BAA2B,EAAI,CAACC,EAAGC,IAAMH,EAAG,GAAGI,GAAUD,EAAGD,CAAC,EAAGH,EAAM,EAAI,EAC3FE,EAAiB,qBAAqB,EAAI,CAACC,EAAGC,IAAMH,EAAG,GAAGI,GAAUX,EAAOU,CAAC,EAAGD,CAAC,EAAGH,EAAM,EAAI,KAK/FE,EAAmB,CACjB,2BAA4BT,EAAM,YAAYa,GAAQ,CAAC,EAAGF,IACjDT,EAAa,GAAGU,GAAU,EAAGD,CAAC,EAAGE,CAAI,CAC7C,EACD,eAAgBb,EAAM,YAAYa,GAAQ,CAAC,EAAGF,IACrCT,EAAa,GAAGU,GAAUX,EAAO,CAAC,EAAGA,EAAOU,CAAC,CAAC,EAAGE,CAAI,EAAE,QAAQ,CACvE,EACD,qBAAsBb,EAAM,YAAYa,GAAQ,CAAC,EAAGF,IAC3CT,EAAa,GAAGU,GAAUX,EAAO,CAAC,EAAGU,CAAC,EAAGE,CAAI,CACrD,EACD,qBAAsBb,EAAM,YAAYa,GAAQ,CAAC,EAAGF,IAC3CT,EAAa,GAAGU,GAAU,EAAGX,EAAOU,CAAC,CAAC,EAAGE,CAAI,CACrD,CACH,EAEIP,EAAQ,KACVG,EAAiB,4BAA4B,EAAIT,EAAM,YAAYa,GAAQ,CAAC,EAAGF,IACtEL,EAAQ,GAAG,GAAGM,GAAU,EAAGD,CAAC,EAAGE,EAAM,EAAK,CAClD,GAECP,EAAQ,KACVG,EAAiB,2BAA2B,EAAIT,EAAM,YAAYa,GAAQ,CAAC,EAAGF,IACrEL,EAAQ,GAAG,GAAGM,GAAU,EAAGD,CAAC,EAAGE,EAAM,EAAK,CAClD,EACDJ,EAAiB,qBAAqB,EAAIT,EAAM,YAAYa,GAAQ,CAAC,EAAGF,IAC/DL,EAAQ,GAAG,GAAGM,GAAUX,EAAO,CAAC,EAAGU,CAAC,EAAGE,EAAM,EAAK,CAC1D,GAECL,IACFC,EAAiB,2BAA2B,EAAIT,EAAM,YAAYa,GAAQ,CAAC,EAAGF,IACrEH,EAAG,GAAGI,GAAUD,EAAG,CAAC,EAAGE,EAAM,EAAI,CACzC,EACDJ,EAAiB,qBAAqB,EAAIT,EAAM,YAAYa,GAAQ,CAAC,EAAGF,IAC/DH,EAAG,GAAGI,GAAUX,EAAOU,CAAC,EAAG,CAAC,EAAGE,EAAM,EAAI,CACjD,IAKL,IAAIC,EAASR,EAAQ,QAAU,MAC3BS,EAAKT,EAAQ,IAAMA,EAAQ,GAC3BS,IACER,GACFE,EAAiB,eAAiBK,CAAM,EAAI,CAACJ,EAAGC,IAAMP,EAAaM,EAAGC,EAAGJ,EAAM,EAAK,EACpFE,EAAiBK,EAAS,eAAe,EAAI,CAACJ,EAAGC,IAAMP,EAAaO,EAAGD,EAAGH,EAAM,EAAI,EACpFE,EAAiB,SAAWK,CAAM,EAAI,CAACJ,EAAGC,IAAMP,EAAaH,EAAOS,CAAC,EAAGC,EAAGJ,EAAM,EAAK,EAAE,QAAQ,EAChGE,EAAiBK,EAAS,SAAS,EAAI,CAACJ,EAAGC,IAAMP,EAAaH,EAAOU,CAAC,EAAGD,EAAGH,EAAM,EAAI,EAAE,QAAQ,IAEhGE,EAAiB,eAAiBK,CAAM,EAAId,EAAM,YAAYa,GAAQ,CAAC,EAAGF,IACjEP,EAAa,EAAGO,EAAGE,EAAM,EAAK,CACtC,EACDJ,EAAiBK,EAAS,eAAe,EAAId,EAAM,YAAYa,GAAQ,CAAC,EAAGF,IAClEP,EAAaO,EAAG,EAAGE,EAAM,EAAI,CACrC,EACDJ,EAAiB,SAAWK,CAAM,EAAId,EAAM,YAAYa,GAAQ,CAAC,EAAGF,IAC3DP,EAAaH,EAAO,CAAC,EAAGU,EAAGE,EAAM,EAAK,EAAE,QAAQ,CACxD,EACDJ,EAAiBK,EAAS,SAAS,EAAId,EAAM,YAAYa,GAAQ,CAAC,EAAGF,IAC5DP,EAAaH,EAAOU,CAAC,EAAG,EAAGE,EAAM,EAAI,EAAE,QAAQ,CACvD,IAGL,IAAIG,EAAKV,EAAQ,KAAO,OAAYA,EAAQ,GAAKA,EAAQ,GACzD,OAAIC,GACED,EAAQ,KACVG,EAAiB,gBAAkBK,CAAM,EAAI,CAACJ,EAAGC,IAAML,EAAQ,GAAGI,EAAGC,EAAGJ,EAAM,EAAK,GAEjFS,IACFP,EAAiBK,EAAS,gBAAgB,EAAI,CAACJ,EAAGC,IAAMK,EAAGL,EAAGD,EAAGH,EAAM,EAAI,KAGzED,EAAQ,KACVG,EAAiB,gBAAkBK,CAAM,EAAId,EAAM,YAAYa,GAAQ,CAAC,EAAGF,IAClEL,EAAQ,GAAG,EAAGK,EAAGE,EAAM,EAAK,CACpC,GAECG,IACFP,EAAiBK,EAAS,gBAAgB,EAAId,EAAM,YAAYa,GAAQ,CAAC,EAAGF,IACnEK,EAAGL,EAAG,EAAGE,EAAM,EAAI,CAC3B,IAIDN,GAAQA,EAAK,YACfU,GAAOR,EAAkBF,EAAK,UAAU,EAEnCE,CACT,CACF,CAAC,EC/ID,IAAIS,GAAO,MACPC,IAAe,CAAC,QAAS,SAAU,QAAS,SAAU,cAAe,QAAS,cAAe,QAAQ,EAC9FC,GAA2BC,EAAQH,GAAMC,IAAcG,GAAQ,CACxE,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,MAAAC,EACA,OAAAC,EACA,YAAAC,EACA,MAAAC,EACA,YAAAC,EACA,OAAAC,CACF,EAAIR,EACAS,EAAQC,GAAY,CACtB,MAAAT,EACA,OAAAC,EACA,MAAAC,EACA,OAAAC,EACA,YAAAC,EACA,MAAAC,EACA,YAAAC,CACF,CAAC,EACGI,EAAgBC,GAAoB,CACtC,MAAAX,EACA,YAAAI,CACF,CAAC,EACGQ,EAAgBC,GAAoB,CACtC,MAAAb,CACF,CAAC,EACGc,EAAiBC,GAAqB,CACxC,MAAAf,EACA,YAAAI,CACF,CAAC,EACGY,EAAgBC,GAAoB,CACtC,MAAAjB,EACA,YAAAI,CACF,CAAC,EACGc,EAAgBC,GAAoB,CACtC,MAAAnB,EACA,YAAAM,CACF,CAAC,EACGc,EAAuBC,GAA2B,CACpD,MAAArB,EACA,OAAAG,EACA,OAAAI,CACF,CAAC,EAqCD,OAAOP,EAAML,GAAM,CACjB,iBAAkB2B,EAClB,uBAAwB,SAA6BC,EAAGC,EAAG,CACzD,OAAOA,EAAE,OAAO,EAAID,EAAIA,EAAE,IAAIC,EAAE,IAAIhB,EAAMe,EAAE,IAAIC,CAAC,CAAC,CAAC,CAAC,CACtD,EACA,iBAAkB,SAAuBD,EAAGC,EAAG,CAC7C,GAAIA,IAAM,GACR,OAAOD,EAET,GAAIA,EAAI,EAAG,CACT,IAAIE,EAAIF,EAAIC,EACZ,OAAOC,IAAM,GAAKA,EAAIA,EAAID,CAC5B,CACA,OAAOD,EAAIC,CACb,EACA,qBAAsB,SAA2BD,EAAGC,EAAG,CACrD,OAAOA,EAAE,OAAO,CAAC,EAAID,EAAIA,EAAE,IAAIC,EAAE,IAAIhB,EAAMe,EAAE,IAAIC,CAAC,CAAC,CAAC,CAAC,CACvD,CACF,EAAGJ,EAAqB,CACtB,GAAIN,EACJ,GAAIF,EACJ,GAAIF,EACJ,GAAIM,EACJ,GAAIE,CACN,CAAC,CAAC,EASF,SAASI,EAAWC,EAAGC,EAAG,CAOxB,OAAOA,IAAM,EAAID,EAAIA,EAAIC,EAAIhB,EAAMe,EAAIC,CAAC,CAC1C,CACF,CAAC,EClID,IAAIE,IAAO,iBACPC,IAAe,CAAC,OAAO,EAChBC,GAAsCC,EAAQH,IAAMC,IAAcG,GAAQ,CACnF,GAAI,CACF,MAAAC,CACF,EAAID,EAoBJ,OAAO,SAAoBE,EAAaC,EAAcC,EAAUC,EAAS,CAEvE,IAAIC,EAAQJ,EAAY,MACpBK,EAAQL,EAAY,MACpBM,EAAMN,EAAY,WAAaA,EAAY,YAAY,EAEvDO,EAAUN,EAAa,QACvBO,EAASP,EAAa,OACtBQ,EAAOR,EAAa,KACpBS,EAAQT,EAAa,MACrBU,EAAMV,EAAa,WAAaA,EAAa,QAAU,OAAYA,EAAa,UAAYA,EAAa,YAAY,EAGzH,GAAII,EAAM,SAAWK,EAAM,OACzB,MAAM,IAAIE,GAAeP,EAAM,OAAQK,EAAM,MAAM,EAIrD,GAAIL,EAAM,CAAC,IAAMK,EAAM,CAAC,GAAKL,EAAM,CAAC,IAAMK,EAAM,CAAC,EAC/C,MAAM,IAAI,WAAW,iCAAmCL,EAAQ,0BAA4BK,EAAQ,GAAG,EAIzG,GAAI,CAACH,EACH,MAAM,IAAI,MAAM,oEAAoE,EAItF,IAAIM,EAAOR,EAAM,CAAC,EACdS,EAAUT,EAAM,CAAC,EAGjBU,EAAK,OAAOT,GAAQ,UAAYA,IAAQ,SAAWA,IAAQK,EAAML,EAAM,OAEvEU,EAAKD,EAAKhB,EAAM,KAAKG,EAAU,CAACa,EAAIA,CAAE,CAAC,EAAIb,EAG3Ce,EAAGC,EAGHC,EAAQ,CAAC,EAEb,IAAKF,EAAI,EAAGA,EAAIJ,EAAMI,IACpBE,EAAMF,CAAC,EAAI,CAAC,EAId,IAAIG,EAAI,CAAC,EAELC,EAAI,CAAC,EAGT,IAAKH,EAAI,EAAGA,EAAIJ,EAASI,IAAK,CAI5B,QAFII,EAAOJ,EAAI,EAENK,EAAKd,EAAKS,CAAC,EAAGM,EAAKf,EAAKS,EAAI,CAAC,EAAGO,EAAIF,EAAIE,EAAID,EAAIC,IAEvDR,EAAIT,EAAOiB,CAAC,EAEZL,EAAEH,CAAC,EAAId,EAAUa,EAAGT,EAAQkB,CAAC,EAAGrB,EAAMa,CAAC,EAAEC,CAAC,CAAC,EAAIF,EAAGZ,EAAMa,CAAC,EAAEC,CAAC,EAAGX,EAAQkB,CAAC,CAAC,EAEzEJ,EAAEJ,CAAC,EAAIK,EAGT,IAAKL,EAAI,EAAGA,EAAIJ,EAAMI,IAEhBI,EAAEJ,CAAC,IAAMK,EAEXH,EAAMF,CAAC,EAAEC,CAAC,EAAIE,EAAEH,CAAC,EAGjBE,EAAMF,CAAC,EAAEC,CAAC,EAAId,EAAMa,CAAC,EAAEC,CAAC,CAG9B,CAGA,OAAOlB,EAAY,kBAAkB,CACnC,KAAMmB,EACN,KAAM,CAACN,EAAMC,CAAO,EACpB,SAAUR,IAAQN,EAAY,WAAaW,IAAQV,EAAa,UAAYc,EAAK,MACnF,CAAC,CACH,CACF,CAAC,EC7GD,IAAIW,IAAO,mBACPC,IAAe,CAAC,QAAS,aAAa,EAC/BC,GAAwCC,EAAQH,IAAMC,IAAcG,GAAQ,CACrF,GAAI,CACF,MAAAC,EACA,YAAAC,CACF,EAAIF,EAmBJ,OAAO,SAA0BG,EAAGC,EAAGC,EAAU,CAE/C,IAAIC,EAAUH,EAAE,QACZI,EAASJ,EAAE,OACXK,EAAOL,EAAE,KACTM,EAAQN,EAAE,MACVO,EAAMP,EAAE,WAAaA,EAAE,QAAU,OAAYA,EAAE,UAAYA,EAAE,YAAY,EAEzEQ,EAAUP,EAAE,QACZQ,EAASR,EAAE,OACXS,EAAOT,EAAE,KACTU,EAAQV,EAAE,MACVW,EAAMX,EAAE,WAAaA,EAAE,QAAU,OAAYA,EAAE,UAAYA,EAAE,YAAY,EAG7E,GAAIK,EAAM,SAAWK,EAAM,OACzB,MAAM,IAAIE,GAAeP,EAAM,OAAQK,EAAM,MAAM,EAIrD,GAAIL,EAAM,CAAC,IAAMK,EAAM,CAAC,GAAKL,EAAM,CAAC,IAAMK,EAAM,CAAC,EAC/C,MAAM,IAAI,WAAW,iCAAmCL,EAAQ,0BAA4BK,EAAQ,GAAG,EAIzG,IAAIG,EAAOR,EAAM,CAAC,EACdS,EAAUT,EAAM,CAAC,EAGjBU,EAEAC,EAAKlB,EAELmB,EAAO,EAEPC,EAAKjB,EAGL,OAAOK,GAAQ,UAAYA,IAAQK,GAAOL,IAAQ,UAEpDS,EAAKT,EAELU,EAAKnB,EAAM,KAAKC,EAAa,CAACiB,EAAIA,CAAE,CAAC,EAErCE,EAAOpB,EAAM,QAAQ,EAAGkB,CAAE,EAE1BG,EAAKrB,EAAM,KAAKI,EAAU,CAACc,EAAIA,CAAE,CAAC,GAIpC,IAAII,EAAUjB,GAAWK,EAAU,CAAC,EAAI,OACpCa,EAAS,CAAC,EACVC,EAAO,CAAC,EAGRC,EAAKpB,GAAWK,EAAU,CAAC,EAAI,OAC/BgB,EAAKrB,GAAWK,EAAU,CAAC,EAAI,OAE/BiB,EAAK,CAAC,EACNC,EAAK,CAAC,EAGNC,EAAGC,EAAGC,EAAGC,EAAIC,GAGjB,IAAKH,EAAI,EAAGA,EAAIb,EAASa,IAAK,CAE5BN,EAAKM,CAAC,EAAIP,EAAO,OAEjB,IAAIW,EAAOJ,EAAI,EAEf,IAAKE,EAAKzB,EAAKuB,CAAC,EAAGG,GAAK1B,EAAKuB,EAAI,CAAC,EAAGC,EAAIC,EAAID,EAAIE,GAAIF,IAEnDF,EAAIvB,EAAOyB,CAAC,EAEZR,EAAO,KAAKM,CAAC,EAEbF,EAAGE,CAAC,EAAIK,EAEJT,IACFA,EAAGI,CAAC,EAAIxB,EAAQ0B,CAAC,GAIrB,IAAKC,EAAKpB,EAAKkB,CAAC,EAAGG,GAAKrB,EAAKkB,EAAI,CAAC,EAAGC,EAAIC,EAAID,EAAIE,GAAIF,IAInD,GAFAF,EAAIlB,EAAOoB,CAAC,EAERJ,EAAGE,CAAC,IAAMK,GAEZ,GAAIT,EAAI,CAEN,IAAIU,GAAId,EAAGI,EAAGI,CAAC,EAAGnB,EAAQqB,CAAC,CAAC,EAEvBZ,EAAGgB,GAAGf,CAAI,EAKbO,EAAGE,CAAC,EAAI,KAHRJ,EAAGI,CAAC,EAAIM,EAKZ,OAGAZ,EAAO,KAAKM,CAAC,EAEbD,EAAGC,CAAC,EAAIK,EAEJR,IACFA,EAAGG,CAAC,EAAInB,EAAQqB,CAAC,GAKvB,GAAIN,GAAMC,EAIR,IAFAK,EAAIP,EAAKM,CAAC,EAEHC,EAAIR,EAAO,QAEhBM,EAAIN,EAAOQ,CAAC,EAERJ,EAAGE,CAAC,IAAMK,GAEZZ,EAAQS,CAAC,EAAIN,EAAGI,CAAC,EAEjBE,KACSH,EAAGC,CAAC,IAAMK,GAEnBZ,EAAQS,CAAC,EAAIL,EAAGG,CAAC,EAEjBE,KAGAR,EAAO,OAAOQ,EAAG,CAAC,CAI1B,CAEA,OAAAP,EAAKP,CAAO,EAAIM,EAAO,OAGhBrB,EAAE,mBAAmB,CAC1B,OAAQoB,EACR,MAAOC,EACP,IAAKC,EACL,KAAM,CAACR,EAAMC,CAAO,EACpB,SAAUR,IAAQP,EAAE,WAAaY,IAAQX,EAAE,UAAYe,EAAK,MAC9D,CAAC,CACH,CACF,CAAC,ECjLD,IAAIkB,IAAO,iBACPC,IAAe,CAAC,QAAS,aAAa,EAC/BC,GAAsCC,EAAQH,IAAMC,IAAcG,GAAQ,CACnF,GAAI,CACF,MAAAC,EACA,YAAAC,CACF,EAAIF,EAoBJ,OAAO,SAAwBG,EAAGC,EAAGC,EAAUC,EAAS,CAEtD,IAAIC,EAAUJ,EAAE,QACZK,EAASL,EAAE,OACXM,EAAON,EAAE,KACTO,EAAQP,EAAE,MACVQ,EAAMR,EAAE,UAGZ,GAAI,CAACI,EACH,MAAM,IAAI,MAAM,oEAAoE,EAItF,IAAIK,EAAOF,EAAM,CAAC,EACdG,EAAUH,EAAM,CAAC,EAGjBI,EAEAC,EAAKV,EAGL,OAAOM,GAAQ,WAEjBG,EAAKH,EAELP,EAAIH,EAAM,QAAQG,EAAGU,CAAE,EAEvBC,EAAKd,EAAM,KAAKI,EAAU,CAACS,EAAIA,CAAE,CAAC,GAYpC,QARIE,EAAQ,CAAC,EAGTC,EAAI,CAAC,EAELC,EAAI,CAAC,EAGAC,EAAI,EAAGA,EAAIN,EAASM,IAAK,CAIhC,QAFIC,EAAOD,EAAI,EAENE,EAAKZ,EAAKU,CAAC,EAAGG,EAAKb,EAAKU,EAAI,CAAC,EAAGI,EAAIF,EAAIE,EAAID,EAAIC,IAAK,CAE5D,IAAIC,EAAIhB,EAAOe,CAAC,EAEhBN,EAAEO,CAAC,EAAIjB,EAAQgB,CAAC,EAChBL,EAAEM,CAAC,EAAIJ,CACT,CAEA,QAASK,EAAI,EAAGA,EAAIb,EAAMa,IAEpBN,IAAM,IAERH,EAAMS,CAAC,EAAI,CAAC,GAGVP,EAAEO,CAAC,IAAML,EAEXJ,EAAMS,CAAC,EAAEN,CAAC,EAAIb,EAAUS,EAAGX,EAAGa,EAAEQ,CAAC,CAAC,EAAIV,EAAGE,EAAEQ,CAAC,EAAGrB,CAAC,EAGhDY,EAAMS,CAAC,EAAEN,CAAC,EAAIf,CAGpB,CAGA,OAAO,IAAIF,EAAY,CACrB,KAAMc,EACN,KAAM,CAACJ,EAAMC,CAAO,EACpB,SAAUC,CACZ,CAAC,CACH,CACF,CAAC,EC/FM,SAASY,GAAeC,EAAIC,EAAOC,EAAKC,EAAK,CAClD,GAAI,EAAE,gBAAgBJ,IACpB,MAAM,IAAI,YAAY,kDAAkD,EAE1E,KAAK,GAAKC,EACV,KAAK,MAAQC,EACb,KAAK,IAAMC,EACX,KAAK,IAAMC,EACX,KAAK,QAAU,yCAA2CH,EAAK,KAAOC,EAAQ,cAAgBC,GAA4BC,GAAQ,KAAO,IAAMA,EAAM,IAAM,aAC3J,KAAK,MAAQ,IAAI,MAAM,EAAE,KAC3B,CACAJ,GAAe,UAAY,IAAI,MAC/BA,GAAe,UAAU,YAAc,MACvCA,GAAe,UAAU,KAAO,iBAChCA,GAAe,UAAU,iBAAmB,GCf5C,IAAIK,GAAO,MACPC,IAAe,CAAC,QAAS,SAAU,QAAS,SAAU,cAAe,QAAS,YAAa,cAAe,QAAQ,EAClHC,GAAW,iDACXC,IAAwB,GAAG,OAAOD,GAAU,IAAI,EAAE,OAAOA,GAAU,OAAO,EAAE,OAAOA,EAAQ,EAC/F,SAASE,GAAKC,EAAO,CACnB,MAAO,CAACA,EAAM,KAAKC,GAAW,MAAM,QAAQA,CAAO,CAAC,CACtD,CACO,IAAIC,GAA2BC,EAAQR,GAAMC,IAAcQ,GAAQ,CACxE,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,OAAAC,EACA,MAAAC,EACA,YAAAC,EACA,MAAAC,EACA,UAAAC,EACA,YAAAC,EACA,OAAAC,CACF,EAAIT,EACAU,EAAMC,GAAU,CAClB,MAAAV,EACA,OAAAE,EACA,MAAAC,EACA,OAAAF,EACA,YAAAG,EACA,MAAAC,EACA,YAAAE,EACA,OAAAC,CACF,CAAC,EACGG,EAAiBC,GAAqB,CACxC,MAAAZ,CACF,CAAC,EACGa,EAAmBC,GAAuB,CAC5C,MAAAd,EACA,YAAAI,CACF,CAAC,EACGW,EAAiBC,GAAqB,CACxC,MAAAhB,EACA,YAAAO,CACF,CAAC,EACGU,EAAuBC,GAA2B,CACpD,MAAAlB,EACA,OAAAC,EACA,OAAAO,CACF,CAAC,EA2BD,OAAOR,EAAMV,GAAM,CACjB,iBAAkB6B,EAClB,uBAAwBC,EACxB,qBAAsB,CAACC,EAAGC,IAAMD,EAAE,IAAIC,CAAC,CACzC,EAAGL,EAAqB,CACtB,GAAIJ,EACJ,GAAIF,EACJ,GAAII,CACN,CAAC,EAAG,CACF,CAACtB,GAAqB,EAAGO,EAAM,YAAYuB,GAAQ,CAACC,EAAGC,EAAGC,IAAS,CAEjE,QADIC,EAAMJ,EAAKC,EAAGC,CAAC,EACVG,EAAI,EAAGA,EAAIF,EAAK,OAAQE,IAC/BD,EAAMJ,EAAKI,EAAKD,EAAKE,CAAC,CAAC,EAEzB,OAAOD,CACT,CAAC,EACD,MAAO3B,EAAM,YAAYuB,GAAQ5B,GAAS,CACxC,GAAIA,EAAM,SAAW,GAAK,MAAM,QAAQA,EAAM,CAAC,CAAC,GAAKD,GAAKC,EAAM,CAAC,CAAC,EAChE,OAAO4B,EAAK,GAAG5B,EAAM,CAAC,CAAC,EAEzB,GAAID,GAAKC,CAAK,EACZ,OAAO4B,EAAK,GAAG5B,CAAK,EAEtB,MAAM,IAAIkC,GAAe,kCAAkC,CAC7D,CAAC,EACD,OAAQ7B,EAAM,YAAYuB,GAAQtB,GACzBsB,EAAKtB,EAAO,QAAQ,CAAC,CAC7B,CACH,CAAC,EASD,SAASkB,EAAWK,EAAGC,EAAG,CACxB,GAAI,CAACK,GAAUN,CAAC,GAAK,CAACM,GAAUL,CAAC,EAC/B,MAAM,IAAI,MAAM,oDAAoD,EAKtE,QADIM,EACGN,IAAM,GACXM,EAAItB,EAAIe,EAAGC,CAAC,EACZD,EAAIC,EACJA,EAAIM,EAEN,OAAOP,EAAI,EAAI,CAACA,EAAIA,CACtB,CASA,SAASJ,EAAcI,EAAGC,EAAG,CAC3B,GAAI,CAACD,EAAE,MAAM,GAAK,CAACC,EAAE,MAAM,EACzB,MAAM,IAAI,MAAM,oDAAoD,EAKtE,QADIO,EAAO,IAAI1B,EAAU,CAAC,EACnB,CAACmB,EAAE,OAAO,GAAG,CAClB,IAAIM,EAAItB,EAAIe,EAAGC,CAAC,EAChBD,EAAIC,EACJA,EAAIM,CACN,CACA,OAAOP,EAAE,GAAGQ,CAAI,EAAIR,EAAE,IAAI,EAAIA,CAChC,CACF,CAAC,ECrJD,IAAIS,IAAO,iBACPC,IAAe,CAAC,QAAS,aAAa,EAC/BC,GAAsCC,EAAQH,IAAMC,IAAcG,GAAQ,CACnF,GAAI,CACF,MAAAC,EACA,YAAAC,CACF,EAAIF,EAmBJ,OAAO,SAAwBG,EAAGC,EAAGC,EAAU,CAE7C,IAAIC,EAAUH,EAAE,QACZI,EAAQJ,EAAE,MACVK,EAAML,EAAE,WAAaA,EAAE,QAAU,OAAYA,EAAE,UAAYA,EAAE,YAAY,EAEzEM,EAAUL,EAAE,QACZM,EAAQN,EAAE,MACVO,EAAMP,EAAE,WAAaA,EAAE,QAAU,OAAYA,EAAE,UAAYA,EAAE,YAAY,EAG7E,GAAIG,EAAM,SAAWG,EAAM,OACzB,MAAM,IAAIE,GAAeL,EAAM,OAAQG,EAAM,MAAM,EAIrD,GAAIH,EAAM,CAAC,IAAMG,EAAM,CAAC,GAAKH,EAAM,CAAC,IAAMG,EAAM,CAAC,EAC/C,MAAM,IAAI,WAAW,iCAAmCH,EAAQ,0BAA4BG,EAAQ,GAAG,EAIzG,IAAIG,EAAON,EAAM,CAAC,EACdO,EAAUP,EAAM,CAAC,EAGjBQ,EAEAC,EAAKd,EAELe,EAAO,EAEPC,EAAKb,EAGL,OAAOG,GAAQ,UAAYA,IAAQG,GAAOH,IAAQ,UAEpDO,EAAKP,EAELQ,EAAKf,EAAM,KAAKC,EAAa,CAACa,EAAIA,CAAE,CAAC,EAErCE,EAAOhB,EAAM,QAAQ,EAAGc,CAAE,EAE1BG,EAAKjB,EAAM,KAAKI,EAAU,CAACU,EAAIA,CAAE,CAAC,GAgBpC,QAZII,EAAUb,GAAWG,EAAU,CAAC,EAAI,OACpCW,EAAS,CAAC,EACVC,EAAO,CAAC,EAGRC,EAAIH,EAAU,CAAC,EAAI,OAEnBI,EAAI,CAAC,EAELC,EAAI,CAAC,EAGAC,EAAI,EAAGA,EAAIX,EAASW,IAAK,CAEhCJ,EAAKI,CAAC,EAAIL,EAAO,OAEjB,IAAIM,EAAOD,EAAI,EAMf,GAJAE,GAAQxB,EAAGsB,EAAGF,EAAGD,EAAGE,EAAGE,EAAMN,EAAQF,CAAE,EAEvCS,GAAQvB,EAAGqB,EAAGF,EAAGD,EAAGE,EAAGE,EAAMN,EAAQF,CAAE,EAEnCI,EAIF,QAFIM,EAAIP,EAAKI,CAAC,EAEPG,EAAIR,EAAO,QAAQ,CAExB,IAAIS,EAAIT,EAAOQ,CAAC,EAEhB,GAAIJ,EAAEK,CAAC,IAAMH,EAAM,CAEjB,IAAII,EAAIR,EAAEO,CAAC,EAENb,EAAGc,EAAGb,CAAI,EAObG,EAAO,OAAOQ,EAAG,CAAC,GALlBT,EAAQ,KAAKW,CAAC,EAEdF,IAKJ,MAEER,EAAO,OAAOQ,EAAG,CAAC,CAEtB,KAKA,SAFIG,EAAIV,EAAKI,CAAC,EAEPM,EAAIX,EAAO,QAAQ,CAExB,IAAIY,EAAIZ,EAAOW,CAAC,EAEZP,EAAEQ,CAAC,IAAMN,EAEXN,EAAO,OAAOW,EAAG,CAAC,EAGlBA,GAEJ,CAEJ,CAEA,OAAAV,EAAKP,CAAO,EAAIM,EAAO,OAGhBjB,EAAE,mBAAmB,CAC1B,OAAQgB,EACR,MAAOC,EACP,IAAKC,EACL,KAAM,CAACR,EAAMC,CAAO,EACpB,SAAUN,IAAQL,EAAE,WAAaQ,IAAQP,EAAE,UAAYW,EAAK,MAC9D,CAAC,CACH,CACF,CAAC,EClJD,IAAIkB,GAAO,MACPC,IAAe,CAAC,QAAS,SAAU,cAAe,QAAQ,EACnDC,GAA2BC,EAAQH,GAAMC,IAAcG,GAAQ,CACxE,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,YAAAC,EACA,OAAAC,CACF,EAAIJ,EACAK,EAAgBC,GAAoB,CACtC,MAAAL,EACA,YAAAE,CACF,CAAC,EACGI,EAAiBC,GAAqB,CACxC,MAAAP,EACA,YAAAE,CACF,CAAC,EACGM,EAAgBC,GAAoB,CACtC,MAAAT,EACA,YAAAE,CACF,CAAC,EACGQ,EAAuBC,GAA2B,CACpD,MAAAX,EACA,OAAAC,EACA,OAAAE,CACF,CAAC,EACGS,EAAW,iDACXC,EAAmB,CAAC,EACxB,OAAAA,EAAiB,GAAG,OAAOD,EAAU,IAAI,EAAE,OAAOA,EAAU,OAAO,EAAE,OAAOA,CAAQ,CAAC,EAAIZ,EAAM,YAAYc,GAAQ,CAACC,EAAGC,EAAGC,IAAS,CAEjI,QADIC,EAAMJ,EAAKC,EAAGC,CAAC,EACVG,EAAI,EAAGA,EAAIF,EAAK,OAAQE,IAC/BD,EAAMJ,EAAKI,EAAKD,EAAKE,CAAC,CAAC,EAEzB,OAAOD,CACT,CAAC,EA+BMlB,EAAML,GAAM,CACjB,iBAAkByB,GAClB,uBAAwBC,EACxB,qBAAsB,CAACC,EAAGC,IAAMD,EAAE,IAAIC,CAAC,CACzC,EAAGb,EAAqB,CACtB,GAAIJ,EACJ,GAAIF,EACJ,GAAII,CACN,CAAC,EAAGK,CAAgB,EASpB,SAASQ,EAAcN,EAAGC,EAAG,CAC3B,GAAI,CAACD,EAAE,MAAM,GAAK,CAACC,EAAE,MAAM,EACzB,MAAM,IAAI,MAAM,oDAAoD,EAEtE,GAAID,EAAE,OAAO,EACX,OAAOA,EAET,GAAIC,EAAE,OAAO,EACX,OAAOA,EAMT,QADIQ,EAAOT,EAAE,MAAMC,CAAC,EACb,CAACA,EAAE,OAAO,GAAG,CAClB,IAAIS,EAAIT,EACRA,EAAID,EAAE,IAAIU,CAAC,EACXV,EAAIU,CACN,CACA,OAAOD,EAAK,IAAIT,CAAC,EAAE,IAAI,CACzB,CACF,CAAC,EC1GD,IAAIW,GAAO,QACPC,IAAe,CAAC,QAAS,SAAU,SAAS,EACrCC,GAA6BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC1E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,QAASC,CACX,EAAIH,EA0BJ,OAAOC,EAAML,GAAM,CACjB,OAAQ,SAAgBQ,EAAG,CACzB,OAAIA,GAAK,GAAKF,EAAO,YACZG,GAAYD,CAAC,EAGb,IAAID,EAASC,EAAG,CAAC,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAEjD,EACA,QAAS,SAAiBA,EAAG,CAC3B,OAAO,IAAID,EAASC,CAAC,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAC5C,EACA,UAAW,SAAmBA,EAAG,CAC/B,MAAI,CAACA,EAAE,WAAW,GAAKF,EAAO,YACrBE,EAAE,IAAI,EAGN,IAAID,EAASC,EAAE,SAAS,EAAG,CAAC,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAE5D,EACA,iBAAkBH,EAAM,YAAYK,GAAQF,GAAKG,GAAQH,EAAGE,CAAI,CAAC,CACnE,CAAC,CACH,CAAC,ECvDD,IAAIE,GAAO,OACPC,IAAe,CAAC,QAAS,SAAU,SAAS,EACrCC,GAA4BC,EAAQH,GAAMC,IAAcG,GAAQ,CACzE,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,QAAAC,CACF,EAAIH,EA0BJ,OAAOC,EAAML,GAAM,CACjB,OAAQ,SAAgBQ,EAAG,CACzB,OAAIA,GAAK,GAAKF,EAAO,YACZG,GAAWD,CAAC,EAGZE,EAAa,IAAIH,EAAQC,EAAG,CAAC,CAAC,CAEzC,EACA,QAASE,EACT,UAAW,SAAmBF,EAAG,CAC/B,MAAI,CAACA,EAAE,WAAW,GAAKF,EAAO,YACrBE,EAAE,IAAI,CAAC,EAGPE,EAAa,IAAIH,EAAQC,EAAE,SAAS,EAAG,CAAC,CAAC,CAEpD,EACA,iBAAkBH,EAAM,YAAYM,GAAQH,GAAKI,GAAQJ,EAAGG,CAAI,CAAC,CACnE,CAAC,EAQD,SAASD,EAAaF,EAAG,CACvB,IAAIK,EAAO,KAAK,KAAKL,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,EAAE,EAC9C,OAAO,IAAID,EAAQ,KAAK,KAAO,KAAK,KAAKM,CAAI,EAAI,KAAK,IAAIA,CAAI,EAAI,KAAK,IAAK,KAAK,MAAML,EAAE,GAAIA,EAAE,EAAE,EAAI,KAAK,GAAG,CAC/G,CACF,CAAC,ECjED,IAAIM,IAAO,iBACPC,IAAe,CAAC,OAAO,EAChBC,GAAsCC,EAAQH,IAAMC,IAAcG,GAAQ,CACnF,GAAI,CACF,MAAAC,CACF,EAAID,EAaJ,OAAOC,EAAM,iBAAkB,CAC7B,iBAAkBC,GAClB,mBAAoB,SAAyBC,EAAGC,EAAG,CACjD,OAAOD,EAAE,IAAIC,CAAC,CAChB,EACA,uBAAwB,SAA6BD,EAAGC,EAAG,CACzD,OAAOD,EAAE,MAAMC,CAAC,CAClB,EACA,iBAAkB,SAAuBD,EAAGC,EAAG,CAC7C,OAAOD,EAAIC,CACb,EACA,qBAAsB,SAA2BD,EAAGC,EAAG,CACrD,OAAOD,EAAE,IAAIC,CAAC,CAChB,EACA,gDAAiD,CAACD,EAAGC,IAAMA,EAAE,SAASD,CAAC,EACvE,uDAAwD,CAACA,EAAGC,IAAMD,EAAE,SAASC,CAAC,CAChF,CAAC,CACH,CAAC,EChCD,IAAIC,GAAO,WACPC,IAAe,CAAC,QAAS,SAAU,YAAa,iBAAkB,cAAe,KAAK,EAC/EC,GAAgCC,EAAQH,GAAMC,IAAcG,GAAQ,CAC7E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,UAAAC,EACA,eAAAC,EACA,YAAAC,EACA,IAAAC,CACF,EAAIN,EACAO,EAAgBC,GAAoB,CACtC,MAAAP,EACA,YAAAI,CACF,CAAC,EACGI,EAAeC,GAAmB,CACpC,MAAAT,CACF,CAAC,EACD,SAASU,EAA0BC,EAAOC,EAAO,CAE/C,OAAQD,EAAM,OAAQ,CACpB,IAAK,GAEH,OAAQC,EAAM,OAAQ,CACpB,IAAK,GAEH,GAAID,EAAM,CAAC,IAAMC,EAAM,CAAC,EAEtB,MAAM,IAAI,WAAW,yEAAyE,EAEhG,MACF,IAAK,GAEH,GAAID,EAAM,CAAC,IAAMC,EAAM,CAAC,EAEtB,MAAM,IAAI,WAAW,wDAA0DD,EAAM,CAAC,EAAI,6BAA+BC,EAAM,CAAC,EAAI,GAAG,EAEzI,MACF,QACE,MAAM,IAAI,MAAM,+DAAiEA,EAAM,OAAS,cAAc,CAClH,CACA,MACF,IAAK,GAEH,OAAQA,EAAM,OAAQ,CACpB,IAAK,GAEH,GAAID,EAAM,CAAC,IAAMC,EAAM,CAAC,EAEtB,MAAM,IAAI,WAAW,yDAA2DD,EAAM,CAAC,EAAI,+BAAiCC,EAAM,CAAC,EAAI,GAAG,EAE5I,MACF,IAAK,GAEH,GAAID,EAAM,CAAC,IAAMC,EAAM,CAAC,EAEtB,MAAM,IAAI,WAAW,2DAA6DD,EAAM,CAAC,EAAI,+BAAiCC,EAAM,CAAC,EAAI,GAAG,EAE9I,MACF,QACE,MAAM,IAAI,MAAM,+DAAiEA,EAAM,OAAS,cAAc,CAClH,CACA,MACF,QACE,MAAM,IAAI,MAAM,+DAAiED,EAAM,OAAS,cAAc,CAClH,CACF,CAUA,SAASE,EAAsBC,EAAGC,EAAGC,EAAG,CAEtC,GAAIA,IAAM,EACR,MAAM,IAAI,MAAM,mCAAmC,EAErD,OAAOX,EAAIS,EAAGC,CAAC,CACjB,CAUA,SAASE,EAAsBH,EAAGC,EAAG,CAEnC,GAAIA,EAAE,QAAQ,IAAM,QAClB,MAAM,IAAI,MAAM,0CAA0C,EAE5D,OAAOG,EAA2BJ,EAAGC,CAAC,CACxC,CAUA,SAASG,EAA2BJ,EAAGC,EAAG,CAExC,IAAII,EAAQL,EAAE,MACVM,EAAQN,EAAE,MACVO,EAAMP,EAAE,WAAaA,EAAE,YAAY,EAEnCQ,EAAQP,EAAE,MACVQ,EAAQR,EAAE,MACVS,EAAMT,EAAE,WAAaA,EAAE,YAAY,EAEnCU,EAAUL,EAAM,CAAC,EACjBM,EAAWH,EAAM,CAAC,EAGlBI,EAEAC,EAAK1B,EAEL2B,EAAK1B,EAGLkB,GAAOG,GAAOH,IAAQG,GAAO,OAAOH,GAAQ,UAAYA,IAAQ,UAElEM,EAAKN,EAELO,EAAK5B,EAAM,KAAKE,EAAW,CAACyB,EAAIA,CAAE,CAAC,EACnCE,EAAK7B,EAAM,KAAKG,EAAgB,CAACwB,EAAIA,CAAE,CAAC,GAO1C,QAHIG,GAAI,CAAC,EAGAC,EAAI,EAAGA,EAAIL,EAAUK,IAAK,CAIjC,QAFIC,GAAMH,EAAGV,EAAM,CAAC,EAAGG,EAAM,CAAC,EAAES,CAAC,CAAC,EAEzBE,GAAI,EAAGA,GAAIR,EAASQ,KAE3BD,GAAMJ,EAAGI,GAAKH,EAAGV,EAAMc,EAAC,EAAGX,EAAMW,EAAC,EAAEF,CAAC,CAAC,CAAC,EAEzCD,GAAEC,CAAC,EAAIC,EACT,CAGA,OAAOlB,EAAE,kBAAkB,CACzB,KAAMgB,GACN,KAAM,CAACJ,CAAQ,EACf,SAAUL,IAAQP,EAAE,WAAaU,IAAQT,EAAE,UAAYY,EAAK,MAC9D,CAAC,CACH,CAUA,IAAIO,EAAwBlC,EAAM,wBAAyB,CACzD,mBAAoBmC,EACpB,oBAAqBC,CACvB,CAAC,EAUGC,EAAwBrC,EAAM,wBAAyB,CACzD,2BAA4BsC,EAC5B,4BAA6BC,EAC7B,4BAA6BC,EAC7B,6BAA8BC,CAChC,CAAC,EAUD,SAASN,EAA2BrB,EAAGC,EAAG,CAExC,IAAII,EAAQL,EAAE,MACVM,EAAQN,EAAE,MACVO,EAAMP,EAAE,WAAaA,EAAE,YAAY,EAEnCQ,EAAQP,EAAE,MACVS,EAAMT,EAAE,WAAaA,EAAE,YAAY,EAEnC2B,EAAQtB,EAAM,CAAC,EACfuB,EAAWvB,EAAM,CAAC,EAGlBO,EAEAC,EAAK1B,EAEL2B,EAAK1B,EAGLkB,GAAOG,GAAOH,IAAQG,GAAO,OAAOH,GAAQ,UAAYA,IAAQ,UAElEM,EAAKN,EAELO,EAAK5B,EAAM,KAAKE,EAAW,CAACyB,EAAIA,CAAE,CAAC,EACnCE,EAAK7B,EAAM,KAAKG,EAAgB,CAACwB,EAAIA,CAAE,CAAC,GAO1C,QAHIG,EAAI,CAAC,EAGAG,GAAI,EAAGA,GAAIS,EAAOT,KAAK,CAM9B,QAJIW,EAAMzB,EAAMc,EAAC,EAEbD,GAAMH,EAAGe,EAAI,CAAC,EAAGtB,EAAM,CAAC,CAAC,EAEpBS,GAAI,EAAGA,GAAIY,EAAUZ,KAE5BC,GAAMJ,EAAGI,GAAKH,EAAGe,EAAIb,EAAC,EAAGT,EAAMS,EAAC,CAAC,CAAC,EAEpCD,EAAEG,EAAC,EAAID,EACT,CAGA,OAAOlB,EAAE,kBAAkB,CACzB,KAAMgB,EACN,KAAM,CAACY,CAAK,EACZ,SAAUrB,IAAQP,EAAE,WAAaU,IAAQT,EAAE,UAAYY,EAAK,MAC9D,CAAC,CACH,CAUA,SAASW,EAAgCxB,EAAGC,EAAG,CAG7C,IAAII,EAAQL,EAAE,MACVM,EAAQN,EAAE,MACVO,EAAMP,EAAE,WAAaA,EAAE,YAAY,EAEnCQ,EAAQP,EAAE,MACVQ,EAAQR,EAAE,MACVS,EAAMT,EAAE,WAAaA,EAAE,YAAY,EAEnC2B,EAAQtB,EAAM,CAAC,EACfuB,EAAWvB,EAAM,CAAC,EAClBM,EAAWH,EAAM,CAAC,EAGlBI,EAEAC,EAAK1B,EAEL2B,GAAK1B,EAGLkB,GAAOG,GAAOH,IAAQG,GAAO,OAAOH,GAAQ,UAAYA,IAAQ,SAAWA,IAAQ,UAErFM,EAAKN,EAELO,EAAK5B,EAAM,KAAKE,EAAW,CAACyB,EAAIA,CAAE,CAAC,EACnCE,GAAK7B,EAAM,KAAKG,EAAgB,CAACwB,EAAIA,CAAE,CAAC,GAO1C,QAHIG,EAAI,CAAC,EAGAG,GAAI,EAAGA,GAAIS,EAAOT,KAAK,CAE9B,IAAIW,GAAMzB,EAAMc,EAAC,EAEjBH,EAAEG,EAAC,EAAI,CAAC,EAER,QAASF,GAAI,EAAGA,GAAIL,EAAUK,KAAK,CAIjC,QAFIC,GAAMH,GAAGe,GAAI,CAAC,EAAGtB,EAAM,CAAC,EAAES,EAAC,CAAC,EAEvBc,GAAI,EAAGA,GAAIF,EAAUE,KAE5Bb,GAAMJ,EAAGI,GAAKH,GAAGe,GAAIC,EAAC,EAAGvB,EAAMuB,EAAC,EAAEd,EAAC,CAAC,CAAC,EAEvCD,EAAEG,EAAC,EAAEF,EAAC,EAAIC,EACZ,CACF,CAGA,OAAOlB,EAAE,kBAAkB,CACzB,KAAMgB,EACN,KAAM,CAACY,EAAOhB,CAAQ,EACtB,SAAUL,IAAQP,EAAE,WAAaU,IAAQT,EAAE,UAAYY,EAAK,MAC9D,CAAC,CACH,CAUA,SAASY,EAAiCzB,EAAGC,EAAG,CAE9C,IAAII,EAAQL,EAAE,MACVM,EAAQN,EAAE,MACVO,EAAMP,EAAE,WAAaA,EAAE,YAAY,EAEnCgC,EAAU/B,EAAE,QACZgC,EAAShC,EAAE,OACXiC,EAAOjC,EAAE,KACTQ,EAAQR,EAAE,MACVS,EAAMT,EAAE,WAAaA,EAAE,QAAU,OAAYA,EAAE,UAAYA,EAAE,YAAY,EAE7E,GAAI,CAAC+B,EACH,MAAM,IAAI,MAAM,wDAAwD,EAG1E,IAAIJ,EAAQtB,EAAM,CAAC,EACfM,EAAWH,EAAM,CAAC,EAGlBI,EAEAC,GAAK1B,EAEL2B,EAAK1B,EAEL8C,GAAK7C,EAEL8C,GAAO,EAGP7B,GAAOG,GAAOH,IAAQG,GAAO,OAAOH,GAAQ,UAAYA,IAAQ,UAElEM,EAAKN,EAELO,GAAK5B,EAAM,KAAKE,EAAW,CAACyB,EAAIA,CAAE,CAAC,EACnCE,EAAK7B,EAAM,KAAKG,EAAgB,CAACwB,EAAIA,CAAE,CAAC,EACxCsB,GAAKjD,EAAM,KAAKI,EAAa,CAACuB,EAAIA,CAAE,CAAC,EAErCuB,GAAOlD,EAAM,QAAQ,EAAG2B,CAAE,GAiB5B,QAbIwB,GAAU,CAAC,EACXC,GAAS,CAAC,EACVC,GAAO,CAAC,EAERvB,GAAIf,EAAE,mBAAmB,CAC3B,OAAQoC,GACR,MAAOC,GACP,IAAKC,GACL,KAAM,CAACX,EAAOhB,CAAQ,EACtB,SAAUL,IAAQP,EAAE,WAAaU,IAAQT,EAAE,UAAYY,EAAK,MAC9D,CAAC,EAGQ2B,GAAK,EAAGA,GAAK5B,EAAU4B,KAAM,CAEpCD,GAAKC,EAAE,EAAIF,GAAO,OAElB,IAAIG,GAAMP,EAAKM,EAAE,EACbE,GAAMR,EAAKM,GAAK,CAAC,EAErB,GAAIE,GAAMD,GAIR,QAFIE,GAAO,EAEFxB,GAAI,EAAGA,GAAIS,EAAOT,KAAK,CAM9B,QAJIyB,GAAOzB,GAAI,EAEX0B,GAAM,OAEDC,GAAKL,GAAKK,GAAKJ,GAAKI,KAAM,CAEjC,IAAIC,GAAKd,EAAOa,EAAE,EAEdH,KAASC,IAEXC,GAAM9B,EAAGV,EAAMc,EAAC,EAAE4B,EAAE,EAAGf,EAAQc,EAAE,CAAC,EAElCH,GAAOC,IAGPC,GAAM/B,GAAG+B,GAAK9B,EAAGV,EAAMc,EAAC,EAAE4B,EAAE,EAAGf,EAAQc,EAAE,CAAC,CAAC,CAE/C,CAEIH,KAASC,IAAQ,CAACT,GAAGU,GAAKT,EAAI,IAEhCE,GAAO,KAAKnB,EAAC,EACbkB,GAAQ,KAAKQ,EAAG,EAEpB,CAEJ,CAEA,OAAAN,GAAK3B,CAAQ,EAAI0B,GAAO,OAGjBtB,EACT,CAUA,SAASM,EAA4BtB,EAAGC,EAAG,CAEzC,IAAI+C,EAAUhD,EAAE,QACZiD,EAASjD,EAAE,OACXkD,EAAOlD,EAAE,KACTO,EAAMP,EAAE,WAAaA,EAAE,QAAU,OAAYA,EAAE,UAAYA,EAAE,YAAY,EAE7E,GAAI,CAACgD,EACH,MAAM,IAAI,MAAM,wDAAwD,EAG1E,IAAIxC,EAAQP,EAAE,MACVS,EAAMT,EAAE,WAAaA,EAAE,YAAY,EAEnC2B,EAAQ5B,EAAE,MAAM,CAAC,EACjBmD,EAAQlD,EAAE,MAAM,CAAC,EAEjBoC,EAAU,CAAC,EACXC,EAAS,CAAC,EACVC,EAAO,CAAC,EAGR1B,GAEAC,EAAK1B,EAEL2B,GAAK1B,EAEL8C,GAAK7C,EAEL8C,GAAO,EAGP7B,GAAOG,GAAOH,IAAQG,GAAO,OAAOH,GAAQ,UAAYA,IAAQ,UAElEM,GAAKN,EAELO,EAAK5B,EAAM,KAAKE,EAAW,CAACyB,GAAIA,EAAE,CAAC,EACnCE,GAAK7B,EAAM,KAAKG,EAAgB,CAACwB,GAAIA,EAAE,CAAC,EACxCsB,GAAKjD,EAAM,KAAKI,EAAa,CAACuB,GAAIA,EAAE,CAAC,EAErCuB,GAAOlD,EAAM,QAAQ,EAAG2B,EAAE,GAI5B,IAAIkB,GAAI,CAAC,EAELqB,GAAI,CAAC,EAGTb,EAAK,CAAC,EAAI,EAEV,QAASQ,GAAK,EAAGA,GAAKI,EAAOJ,KAAM,CAEjC,IAAIM,GAAM7C,EAAMuC,EAAE,EAElB,GAAI,CAACZ,GAAGkB,GAAKjB,EAAI,EAEf,QAASkB,GAAMJ,EAAKH,EAAE,EAAGQ,GAAML,EAAKH,GAAK,CAAC,EAAGS,GAAKF,GAAKE,GAAKD,GAAKC,KAAM,CAErE,IAAIC,GAAKR,EAAOO,EAAE,EAEbJ,GAAEK,EAAE,EASP1B,GAAE0B,EAAE,EAAI3C,EAAGiB,GAAE0B,EAAE,EAAG1C,GAAGsC,GAAKL,EAAQQ,EAAE,CAAC,CAAC,GAPtCJ,GAAEK,EAAE,EAAI,GAERnB,EAAO,KAAKmB,EAAE,EAEd1B,GAAE0B,EAAE,EAAI1C,GAAGsC,GAAKL,EAAQQ,EAAE,CAAC,EAK/B,CAEJ,CAEA,QAASE,GAAKpB,EAAO,OAAQqB,GAAI,EAAGA,GAAID,GAAIC,KAAK,CAE/C,IAAIC,GAAKtB,EAAOqB,EAAC,EAEjBtB,EAAQsB,EAAC,EAAI5B,GAAE6B,EAAE,CACnB,CAEA,OAAArB,EAAK,CAAC,EAAID,EAAO,OAGVtC,EAAE,mBAAmB,CAC1B,OAAQqC,EACR,MAAOC,EACP,IAAKC,EACL,KAAM,CAACX,EAAO,CAAC,EACf,SAAUrB,IAAQP,EAAE,WAAaU,IAAQT,EAAE,UAAYY,GAAK,MAC9D,CAAC,CACH,CAUA,SAASa,EAAiC1B,EAAGC,EAAG,CAE9C,IAAI+C,EAAUhD,EAAE,QACZiD,EAASjD,EAAE,OACXkD,EAAOlD,EAAE,KACTO,EAAMP,EAAE,WAAaA,EAAE,QAAU,OAAYA,EAAE,UAAYA,EAAE,YAAY,EAE7E,GAAI,CAACgD,EACH,MAAM,IAAI,MAAM,wDAAwD,EAG1E,IAAIxC,EAAQP,EAAE,MACVS,EAAMT,EAAE,WAAaA,EAAE,YAAY,EAEnC2B,EAAQ5B,EAAE,MAAM,CAAC,EACjBmD,EAAQlD,EAAE,MAAM,CAAC,EACjBW,EAAWX,EAAE,MAAM,CAAC,EAGpBY,EAEAC,EAAK1B,EAEL2B,GAAK1B,EAEL8C,EAAK7C,EAEL8C,GAAO,EAGP7B,GAAOG,GAAOH,IAAQG,GAAO,OAAOH,GAAQ,UAAYA,IAAQ,UAElEM,EAAKN,EAELO,EAAK5B,EAAM,KAAKE,EAAW,CAACyB,EAAIA,CAAE,CAAC,EACnCE,GAAK7B,EAAM,KAAKG,EAAgB,CAACwB,EAAIA,CAAE,CAAC,EACxCsB,EAAKjD,EAAM,KAAKI,EAAa,CAACuB,EAAIA,CAAE,CAAC,EAErCuB,GAAOlD,EAAM,QAAQ,EAAG2B,CAAE,GAsB5B,QAlBIwB,GAAU,CAAC,EACXC,GAAS,CAAC,EACVC,GAAO,CAAC,EAERvB,GAAIhB,EAAE,mBAAmB,CAC3B,OAAQqC,GACR,MAAOC,GACP,IAAKC,GACL,KAAM,CAACX,EAAOhB,CAAQ,EACtB,SAAUL,IAAQP,EAAE,WAAaU,IAAQT,EAAE,UAAYY,EAAK,MAC9D,CAAC,EAGGkB,GAAI,CAAC,EAELqB,GAAI,CAAC,EAGAZ,GAAK,EAAGA,GAAK5B,EAAU4B,KAAM,CAEpCD,GAAKC,EAAE,EAAIF,GAAO,OAIlB,QAFIM,GAAOJ,GAAK,EAEPO,GAAK,EAAGA,GAAKI,EAAOJ,KAAM,CAEjC,IAAIc,GAAOrD,EAAMuC,EAAE,EAAEP,EAAE,EAEvB,GAAI,CAACL,EAAG0B,GAAMzB,EAAI,EAEhB,QAASkB,GAAMJ,EAAKH,EAAE,EAAGQ,GAAML,EAAKH,GAAK,CAAC,EAAGS,GAAKF,GAAKE,GAAKD,GAAKC,KAAM,CAErE,IAAIC,GAAKR,EAAOO,EAAE,EAEdJ,GAAEK,EAAE,IAAMb,IAEZQ,GAAEK,EAAE,EAAIb,GAERN,GAAO,KAAKmB,EAAE,EAEd1B,GAAE0B,EAAE,EAAI1C,GAAG8C,GAAMb,EAAQQ,EAAE,CAAC,GAG5BzB,GAAE0B,EAAE,EAAI3C,EAAGiB,GAAE0B,EAAE,EAAG1C,GAAG8C,GAAMb,EAAQQ,EAAE,CAAC,CAAC,CAE3C,CAEJ,CAEA,QAASM,GAAKvB,GAAKC,EAAE,EAAGkB,GAAKpB,GAAO,OAAQqB,GAAIG,GAAIH,GAAID,GAAIC,KAAK,CAE/D,IAAIC,GAAKtB,GAAOqB,EAAC,EAEjBtB,GAAQsB,EAAC,EAAI5B,GAAE6B,EAAE,CACnB,CACF,CAEA,OAAArB,GAAK3B,CAAQ,EAAI0B,GAAO,OAGjBtB,EACT,CAUA,SAASW,EAAkC3B,EAAGC,EAAG,CAE/C,IAAI+C,EAAUhD,EAAE,QACZiD,EAASjD,EAAE,OACXkD,EAAOlD,EAAE,KACTO,EAAMP,EAAE,WAAaA,EAAE,QAAU,OAAYA,EAAE,UAAYA,EAAE,YAAY,EAEzEgC,EAAU/B,EAAE,QACZgC,EAAShC,EAAE,OACXiC,EAAOjC,EAAE,KACTS,EAAMT,EAAE,WAAaA,EAAE,QAAU,OAAYA,EAAE,UAAYA,EAAE,YAAY,EAGzE2B,EAAQ5B,EAAE,MAAM,CAAC,EACjBY,EAAWX,EAAE,MAAM,CAAC,EAEpB8D,EAASf,GAAWhB,EAGpBnB,GAEAC,EAAK1B,EAEL2B,GAAK1B,EAGLkB,GAAOG,GAAOH,IAAQG,GAAO,OAAOH,GAAQ,UAAYA,IAAQ,UAElEM,GAAKN,EAELO,EAAK5B,EAAM,KAAKE,EAAW,CAACyB,GAAIA,EAAE,CAAC,EACnCE,GAAK7B,EAAM,KAAKG,EAAgB,CAACwB,GAAIA,EAAE,CAAC,GAuB1C,QAnBIwB,GAAU0B,EAAS,CAAC,EAAI,OACxBzB,GAAS,CAAC,EACVC,GAAO,CAAC,EAERvB,GAAIhB,EAAE,mBAAmB,CAC3B,OAAQqC,GACR,MAAOC,GACP,IAAKC,GACL,KAAM,CAACX,EAAOhB,CAAQ,EACtB,SAAUL,IAAQP,EAAE,WAAaU,IAAQT,EAAE,UAAYY,GAAK,MAC9D,CAAC,EAGGkB,GAAIgC,EAAS,CAAC,EAAI,OAElBX,GAAI,CAAC,EAELI,GAAIF,GAAKC,GAAKT,GAAIL,GAAKC,GAAKe,GAAIV,GAE3BP,GAAK,EAAGA,GAAK5B,EAAU4B,KAAM,CAEpCD,GAAKC,EAAE,EAAIF,GAAO,OAElB,IAAIM,GAAOJ,GAAK,EAEhB,IAAKC,GAAMP,EAAKM,EAAE,EAAGE,GAAMR,EAAKM,GAAK,CAAC,EAAGM,GAAKL,GAAKK,GAAKJ,GAAKI,KAI3D,GAFAC,GAAKd,EAAOa,EAAE,EAEViB,EAEF,IAAKT,GAAMJ,EAAKH,EAAE,EAAGQ,GAAML,EAAKH,GAAK,CAAC,EAAGS,GAAKF,GAAKE,GAAKD,GAAKC,KAE3DC,GAAKR,EAAOO,EAAE,EAEVJ,GAAEK,EAAE,IAAMb,IAEZQ,GAAEK,EAAE,EAAIb,GAERN,GAAO,KAAKmB,EAAE,EAEd1B,GAAE0B,EAAE,EAAI1C,GAAGiB,EAAQc,EAAE,EAAGE,EAAQQ,EAAE,CAAC,GAGnCzB,GAAE0B,EAAE,EAAI3C,EAAGiB,GAAE0B,EAAE,EAAG1C,GAAGiB,EAAQc,EAAE,EAAGE,EAAQQ,EAAE,CAAC,CAAC,MAKlD,KAAKF,GAAMJ,EAAKH,EAAE,EAAGQ,GAAML,EAAKH,GAAK,CAAC,EAAGS,GAAKF,GAAKE,GAAKD,GAAKC,KAE3DC,GAAKR,EAAOO,EAAE,EAEVJ,GAAEK,EAAE,IAAMb,KAEZQ,GAAEK,EAAE,EAAIb,GAERN,GAAO,KAAKmB,EAAE,GAMtB,GAAIM,EAEF,QAASD,GAAKvB,GAAKC,EAAE,EAAGkB,GAAKpB,GAAO,OAAQqB,GAAIG,GAAIH,GAAID,GAAIC,KAAK,CAE/D,IAAIC,GAAKtB,GAAOqB,EAAC,EAEjBtB,GAAQsB,EAAC,EAAI5B,GAAE6B,EAAE,CACnB,CAEJ,CAEA,OAAArB,GAAK3B,CAAQ,EAAI0B,GAAO,OAGjBtB,EACT,CAmCA,OAAO9B,EAAML,GAAMQ,EAAgB,CAGjC,eAAgBH,EAAM,QAAQ,iBAAkB8E,GAAU,CAACjC,EAAGkC,IAAM,CAElErE,EAA0BsE,GAAUnC,CAAC,EAAGmC,GAAUD,CAAC,CAAC,EAGpD,IAAIE,EAAIH,EAAO7E,EAAO4C,CAAC,EAAG5C,EAAO8E,CAAC,CAAC,EAEnC,OAAOG,GAASD,CAAC,EAAIA,EAAE,QAAQ,EAAIA,CACrC,CAAC,EACD,iBAAkB,SAAuBpC,EAAGkC,EAAG,CAE7C,IAAII,EAAQtC,EAAE,KAAK,EACfuC,EAAQL,EAAE,KAAK,EAMnB,OAHArE,EAA0ByE,EAAOC,CAAK,EAGlCD,EAAM,SAAW,EAEfC,EAAM,SAAW,EAEZvE,EAAsBgC,EAAGkC,EAAGI,EAAM,CAAC,CAAC,EAGtClE,EAAsB4B,EAAGkC,CAAC,EAG/BK,EAAM,SAAW,EAEZlD,EAAsBW,EAAGkC,CAAC,EAG5B1C,EAAsBQ,EAAGkC,CAAC,CACnC,EACA,gBAAiB/E,EAAM,QAAQ,gBAAiB8E,GAAU,CAACjC,EAAGkC,IAAMD,EAAOjC,EAAG5C,EAAO8E,CAAC,CAAC,CAAC,EACxF,gBAAiB/E,EAAM,YAAYqF,GAAQ,CAACxC,EAAGkC,IAEtCM,EAAKpF,EAAO4C,EAAGkC,EAAE,QAAQ,CAAC,EAAGA,CAAC,CACtC,EACD,oBAAqB,SAA0BlC,EAAGkC,EAAG,CACnD,OAAOzE,EAAcuC,EAAGkC,EAAG5E,EAAgB,EAAK,CAClD,EACA,mBAAoB,SAAyB0C,EAAGkC,EAAG,CACjD,OAAOvE,EAAaqC,EAAGkC,EAAG5E,EAAgB,EAAK,CACjD,EACA,oBAAqB,SAA0B0C,EAAGkC,EAAG,CACnD,OAAOzE,EAAcyE,EAAGlC,EAAG1C,EAAgB,EAAI,CACjD,EACA,mBAAoB,SAAyB0C,EAAGkC,EAAG,CACjD,OAAOvE,EAAauE,EAAGlC,EAAG1C,EAAgB,EAAI,CAChD,EACA,aAAc,SAAmB0C,EAAGkC,EAAG,CAErC,OAAOvE,EAAaP,EAAO4C,CAAC,EAAGkC,EAAG5E,EAAgB,EAAK,EAAE,QAAQ,CACnE,EACA,aAAc,SAAmB0C,EAAGkC,EAAG,CAErC,OAAOvE,EAAaP,EAAO8E,CAAC,EAAGlC,EAAG1C,EAAgB,EAAI,EAAE,QAAQ,CAClE,EACA,WAAYA,EACZ,mBAAoBH,EAAM,YAAYqF,GAAQ,CAACxC,EAAGkC,EAAGO,IAAS,CAE5D,QADIC,EAASF,EAAKxC,EAAGkC,CAAC,EACb9C,EAAI,EAAGA,EAAIqD,EAAK,OAAQrD,IAC/BsD,EAASF,EAAKE,EAAQD,EAAKrD,CAAC,CAAC,EAE/B,OAAOsD,CACT,CAAC,CACH,CAAC,CACH,CAAC,ECx2BD,IAAIC,GAAO,UACPC,IAAe,CAAC,QAAS,SAAU,cAAe,YAAa,QAAQ,EAChEC,GAA+BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC5E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,YAAAC,EACA,UAAWC,EACX,OAAAC,CACF,EAAIL,EACAM,EAAiBC,GAAqB,CACxC,MAAAN,CACF,CAAC,EACGO,EAAgBC,GAAoB,CACtC,MAAAR,EACA,YAAAE,CACF,CAAC,EACGO,EAAiBC,GAAqB,CACxC,MAAAV,EACA,YAAAE,CACF,CAAC,EACGS,EAAgBC,GAAoB,CACtC,MAAAZ,EACA,YAAAE,CACF,CAAC,EACGW,EAAuBC,GAA2B,CACpD,MAAAd,EACA,OAAAC,EACA,OAAAG,CACF,CAAC,EA+BD,SAASW,GAAa,CACpB,MAAM,IAAI,MAAM,yEAAyE,CAC3F,CACA,OAAOf,EAAML,GAAM,CACjB,OAAQqB,GACR,iBAAkBA,GAClB,UAAWC,GAAKC,EAAYD,EAAG,IAAId,EAAW,CAAC,CAAC,EAChD,uBAAwBe,EACxB,QAASH,EACT,kBAAmBA,EACnB,MAAOf,EAAM,QAAQ,qBAAsBmB,GAAU,GAAKA,EAAOlB,EAAO,CAAC,EAAG,CAAC,EAAE,QAAQ,CAAC,EACxF,YAAaD,EAAM,QAAQ,qBAAsBmB,GAAU,GAAKA,EAAO,EAAG,CAAC,CAAC,EAC5E,aAAcnB,EAAM,QAAQ,sBAAuBoB,GAAU,GAAKA,EAAO,EAAG,CAAC,CAAC,EAC9E,6BAA8BpB,EAAM,YAAYqB,GAAQ,CAAC,EAAGC,IAAM,CAEhE,GAAIA,EAAE,QAAQ,IAAM,EAElB,OAAOb,EAAe,EAAGa,EAAGD,CAAI,EAGhC,MAAM,IAAI,MAAM,uBAAuB,CAE3C,CAAC,EACD,4BAA6BrB,EAAM,YAAYqB,GAAQ,CAAC,EAAGC,IAAM,CAE/D,GAAIA,EAAE,QAAQ,IAAM,EAElB,OAAOjB,EAAe,EAAGiB,EAAGD,EAAM,EAAK,EAGvC,MAAM,IAAI,MAAM,uBAAuB,CAE3C,CAAC,EACD,sBAAuBrB,EAAM,QAAQ,2BAA4BuB,GAAU,CAAC,EAAGD,IAAMC,EAAOtB,EAAO,CAAC,EAAGqB,CAAC,CAAC,EACzG,mCAAoCtB,EAAM,YAAYqB,GAAQ,CAAC,EAAGC,IAAM,CAEtE,GAAIA,EAAE,QAAQ,IAAM,EAElB,OAAOX,EAAcW,EAAG,EAAGD,EAAM,EAAI,EAGrC,MAAM,IAAI,MAAM,uBAAuB,CAE3C,CAAC,CACH,EAAGR,EAAqB,CACtB,OAAQ,qBACR,GAAIN,EACJ,GAAII,EACJ,GAAI,EACN,CAAC,CAAC,EASF,SAASO,EAAYM,EAAGC,EAAM,CAC5B,IAAIC,EAAYvB,EAAW,UACvBwB,EAAMxB,EAAW,MAAM,CACzB,UAAWuB,EAAY,CACzB,CAAC,EACGE,EAAO,IAAIzB,EAAW,CAAC,EACvB0B,EAAM,IAAIF,EAAI,CAAC,EACfG,EAAML,EAAK,WAAW,EAI1B,GAHIK,IACFL,EAAOA,EAAK,IAAI,GAEdA,EAAK,OAAO,EACd,MAAM,IAAI,MAAM,uBAAuB,EAEzC,GAAID,EAAE,WAAW,GAAK,CAACC,EAAK,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,EAC/C,MAAM,IAAI,MAAM,sCAAsC,EAIxD,GAAID,EAAE,OAAO,EACX,OAAOM,EAAM,IAAIH,EAAI,GAAQ,EAAI,EAEnC,GAAI,CAACH,EAAE,SAAS,EACd,OAAOM,EAAMF,EAAOJ,EAEtB,IAAIP,EAAIO,EAAE,IAAI,EAAE,IAAIK,EAAI,IAAIJ,CAAI,CAAC,EAGjC,OAAAR,EAAIO,EAAE,MAAM,EAAIP,EAAE,IAAI,EAAIA,EACnB,IAAId,GAAY2B,EAAMD,EAAI,IAAIZ,CAAC,EAAIA,GAAG,YAAYS,CAAS,CAAC,CACrE,CACF,CAAC,ECzJD,IAAIK,GAAO,OACPC,IAAe,CAAC,QAAS,YAAa,WAAY,SAAS,EACpDC,GAA4BC,EAAQH,GAAMC,IAAcG,GAAQ,CACzE,GAAI,CACF,MAAAC,EACA,UAAWC,EACX,QAAAC,EACA,SAAUC,CACZ,EAAIJ,EA+BJ,OAAOC,EAAML,GAAM,CACjB,OAAQS,GACR,QAAS,SAAiBC,EAAG,CAC3B,OAAOA,EAAE,KAAO,EAAIH,EAAQE,GAAWC,EAAE,EAAE,CAAC,EAAIA,EAAE,KAAK,CACzD,EACA,UAAW,SAAmBA,EAAG,CAC/B,OAAO,IAAIJ,EAAWI,EAAE,IAAI,CAAC,CAAC,CAChC,EACA,OAAQ,SAAgBA,EAAG,CACzB,OAAOA,EAAI,GAAK,GAAKA,EAAI,GAAK,CAAC,GAAK,EACtC,EACA,SAAU,SAAkBA,EAAG,CAC7B,OAAO,IAAIF,EAAUE,EAAE,EAAG,CAAC,CAC7B,EAEA,iBAAkBL,EAAM,YAAYM,GAAQD,GAAKE,GAAQF,EAAGC,EAAM,EAAI,CAAC,EACvE,KAAMN,EAAM,YAAYM,GAAQD,GAAK,CACnC,GAAI,CAACA,EAAE,WAAW,GAAKA,EAAE,MAAM,CAAC,EAAE,KAAK,SAAW,EAChD,MAAM,IAAI,UAAU,yCAAyC,EAE/D,OAAOL,EAAM,KAAKM,EAAMD,EAAE,UAAU,CAAC,EAAEA,EAAE,KAAK,CAChD,CAAC,CACH,CAAC,CACH,CAAC,EChED,IAAIG,IAAO,OACPC,IAAe,CAAC,SAAU,QAAS,SAAS,EACrCC,GAA4BC,EAAQH,IAAMC,IAAcG,GAAQ,CACzE,GAAI,CACF,OAAAC,EACA,MAAAC,EACA,QAAAC,CACF,EAAIH,EA2BJ,OAAOE,EAAM,OAAQ,CACnB,OAAQE,EACR,QAAS,SAAiBC,EAAG,CAC3B,OAAOA,EAAE,KAAK,CAChB,EACA,UAAW,SAAmBA,EAAG,CAC/B,MAAI,CAACA,EAAE,WAAW,GAAKJ,EAAO,YACrBI,EAAE,KAAK,EAGPD,EAAYC,EAAE,SAAS,CAAC,CAEnC,EACA,KAAM,SAAcA,EAAG,CAErB,OAAOA,EAAE,IAAI,EAAG,CAClB,CACF,CAAC,EAQD,SAASD,EAAYC,EAAG,CACtB,OAAI,MAAMA,CAAC,EACF,IACEA,GAAK,GAAKJ,EAAO,YACnB,KAAK,KAAKI,CAAC,EAEX,IAAIF,EAAQE,EAAG,CAAC,EAAE,KAAK,CAElC,CACF,CAAC,ECnED,IAAIC,GAAO,SACPC,IAAe,CAAC,OAAO,EAChBC,GAA8BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC3E,GAAI,CACF,MAAAC,CACF,EAAID,EA6BJ,OAAOC,EAAML,GAAM,CACjB,OAAQM,GACR,QAAS,SAAiBC,EAAG,CAC3B,OAAOA,EAAE,IAAIA,CAAC,CAChB,EACA,UAAW,SAAmBA,EAAG,CAC/B,OAAOA,EAAE,MAAMA,CAAC,CAClB,EACA,OAAQ,SAAgBA,EAAG,CACzB,OAAOA,EAAIA,CACb,EACA,SAAU,SAAkBA,EAAG,CAC7B,OAAOA,EAAE,IAAIA,CAAC,CAChB,EACA,KAAM,SAAcA,EAAG,CACrB,OAAOA,EAAE,IAAI,CAAC,CAChB,CACF,CAAC,CACH,CAAC,EC/CD,IAAIC,GAAO,WACPC,IAAe,CAAC,QAAS,SAAU,cAAe,iBAAkB,aAAc,cAAe,QAAQ,EAClGC,GAAgCC,EAAQH,GAAMC,IAAcG,GAAQ,CAC7E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,YAAAC,EACA,eAAAC,EACA,WAAAC,EACA,YAAAC,EACA,OAAAC,CACF,EAAIP,EAGAQ,EAAiBC,GAAqB,CACxC,MAAAR,CACF,CAAC,EACGS,EAAgBC,GAAoB,CACtC,MAAAV,CACF,CAAC,EACGW,EAAiBC,GAAqB,CACxC,MAAAZ,EACA,YAAAE,CACF,CAAC,EACGW,EAAiBC,GAAqB,CACxC,MAAAd,EACA,YAAAK,CACF,CAAC,EACGU,EAAgBC,GAAoB,CACtC,MAAAhB,EACA,YAAAK,CACF,CAAC,EACGY,EAAuBC,GAA2B,CACpD,MAAAlB,EACA,OAAAC,EACA,OAAAK,CACF,CAAC,EAgCD,OAAON,EAAML,GAAM,CACjB,WAAYQ,CACd,EAAGc,EAAqB,CACtB,KAAMd,EACN,GAAIQ,EACJ,GAAIJ,EACJ,GAAIE,EACJ,GAAIM,EACJ,GAAIF,CACN,CAAC,CAAC,CACJ,CAAC,ECnFD,IAAIM,GAAO,OACPC,IAAe,CAAC,QAAS,SAAU,SAAU,WAAW,EACjDC,GAA4BC,EAAQH,GAAMC,IAAcG,GAAQ,CACzE,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,OAAAC,EACA,UAAAC,CACF,EAAIJ,EAwBJ,OAAOC,EAAML,GAAM,CACjB,iBAAkB,SAAuBS,EAAGC,EAAG,CAC7C,IAAIC,EAAMC,GAAWH,EAAGC,CAAC,EACzB,OAAOJ,EAAO,SAAW,QAAUK,EAAMJ,EAAOI,CAAG,CACrD,EACA,uBAAwBE,CAE1B,CAAC,EASD,SAASA,EAAeJ,EAAGC,EAAG,CAE5B,IAEAI,EAGAC,EAGAC,EACIC,EAAO,IAAIT,EAAU,CAAC,EACtBU,EAAM,IAAIV,EAAU,CAAC,EACrBW,EAAIF,EACJG,EAAQF,EACRG,EAAIH,EACJI,EAAQL,EACZ,GAAI,CAACR,EAAE,MAAM,GAAK,CAACC,EAAE,MAAM,EACzB,MAAM,IAAI,MAAM,qDAAqD,EAEvE,KAAO,CAACA,EAAE,OAAO,GACfK,EAAIN,EAAE,IAAIC,CAAC,EAAE,MAAM,EACnBM,EAAIP,EAAE,IAAIC,CAAC,EACXI,EAAIK,EACJA,EAAIC,EAAM,MAAML,EAAE,MAAMI,CAAC,CAAC,EAC1BC,EAAQN,EACRA,EAAIO,EACJA,EAAIC,EAAM,MAAMP,EAAE,MAAMM,CAAC,CAAC,EAC1BC,EAAQR,EACRL,EAAIC,EACJA,EAAIM,EAEN,IAAIL,EACJ,OAAIF,EAAE,GAAGQ,CAAI,EACXN,EAAM,CAACF,EAAE,IAAI,EAAGW,EAAM,IAAI,EAAGE,EAAM,IAAI,CAAC,EAExCX,EAAM,CAACF,EAAIA,EAAE,OAAO,EAAY,EAARW,EAAWE,CAAK,EAEnChB,EAAO,SAAW,QAAUK,EAAMJ,EAAOI,CAAG,CACrD,CACF,CAAC,ECzFD,IAAIY,GAAO,SACPC,IAAe,CAAC,QAAS,SAAU,YAAa,OAAQ,QAAS,UAAW,MAAO,MAAO,WAAW,EAC9FC,GAA8BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC3E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,UAAAC,EACA,KAAAC,EACA,MAAAC,EACA,QAAAC,EACA,IAAAC,EACA,IAAAC,EACA,UAAAC,CACF,EAAIT,EAwBJ,OAAOC,EAAML,GAAM,CACjB,iBAAkBc,EAClB,uBAAwBA,CAC1B,CAAC,EACD,SAASA,EAAOC,EAAGC,EAAG,CACpB,GAAI,CAACH,EAAUE,CAAC,GAAK,CAACF,EAAUG,CAAC,EAAG,MAAM,IAAI,MAAM,uDAAuD,EAE3G,GADAD,EAAIJ,EAAII,EAAGC,CAAC,EACRP,EAAMO,EAAG,CAAC,EAAG,MAAM,IAAI,MAAM,0BAA0B,EAC3D,IAAIC,EAAMT,EAAKO,EAAGC,CAAC,EACnBC,EAAMA,EAAI,QAAQ,EAClB,GAAI,CAACC,EAAKC,CAAG,EAAIF,EACjB,OAAKR,EAAMS,EAAKX,EAAU,CAAC,CAAC,GAC5BY,EAAMR,EAAIQ,EAAKH,CAAC,EACZN,EAAQS,EAAKZ,EAAU,CAAC,CAAC,IAAGY,EAAMP,EAAIO,EAAKH,CAAC,GACzCG,GAH+B,GAIxC,CACF,CAAC,ECpDD,IAAIC,IAAO,iBACPC,IAAe,CAAC,QAAS,aAAa,EAC/BC,GAAsCC,EAAQH,IAAMC,IAAcG,GAAQ,CACnF,GAAI,CACF,MAAAC,EACA,YAAAC,CACF,EAAIF,EAmBJ,OAAO,SAAwBG,EAAGC,EAAGC,EAAU,CAE7C,IAAIC,EAAUH,EAAE,QACZI,EAASJ,EAAE,OACXK,EAAOL,EAAE,KACTM,EAAQN,EAAE,MACVO,EAAMP,EAAE,WAAaA,EAAE,QAAU,OAAYA,EAAE,UAAYA,EAAE,YAAY,EAEzEQ,EAAUP,EAAE,QACZQ,EAASR,EAAE,OACXS,EAAOT,EAAE,KACTU,EAAQV,EAAE,MACVW,EAAMX,EAAE,WAAaA,EAAE,QAAU,OAAYA,EAAE,UAAYA,EAAE,YAAY,EAG7E,GAAIK,EAAM,SAAWK,EAAM,OACzB,MAAM,IAAIE,GAAeP,EAAM,OAAQK,EAAM,MAAM,EAIrD,GAAIL,EAAM,CAAC,IAAMK,EAAM,CAAC,GAAKL,EAAM,CAAC,IAAMK,EAAM,CAAC,EAC/C,MAAM,IAAI,WAAW,iCAAmCL,EAAQ,0BAA4BK,EAAQ,GAAG,EAIzG,IAAIG,EAAOR,EAAM,CAAC,EACdS,EAAUT,EAAM,CAAC,EAGjBU,EAEAC,EAAKlB,EAELmB,EAAO,EAEPC,EAAKjB,EAGL,OAAOK,GAAQ,UAAYA,IAAQK,GAAOL,IAAQ,UAEpDS,EAAKT,EAELU,EAAKnB,EAAM,KAAKC,EAAa,CAACiB,EAAIA,CAAE,CAAC,EAErCE,EAAOpB,EAAM,QAAQ,EAAGkB,CAAE,EAE1BG,EAAKrB,EAAM,KAAKI,EAAU,CAACc,EAAIA,CAAE,CAAC,GAIpC,IAAII,EAAUjB,GAAWK,EAAU,CAAC,EAAI,OACpCa,EAAS,CAAC,EACVC,EAAO,CAAC,EAGRC,EAAIH,EAAU,CAAC,EAAI,OAEnBI,EAAI,CAAC,EAGLC,EAAGC,EAAGC,EAAGC,EAAIC,EAGjB,IAAKH,EAAI,EAAGA,EAAIX,EAASW,IAAK,CAE5BJ,EAAKI,CAAC,EAAIL,EAAO,OAEjB,IAAIS,EAAOJ,EAAI,EAEf,GAAIH,EAEF,IAAKK,EAAKlB,EAAKgB,CAAC,EAAGG,EAAKnB,EAAKgB,EAAI,CAAC,EAAGC,EAAIC,EAAID,EAAIE,EAAIF,IAEnDF,EAAIhB,EAAOkB,CAAC,EAEZH,EAAEC,CAAC,EAAIK,EACPP,EAAEE,CAAC,EAAIjB,EAAQmB,CAAC,EAIpB,IAAKC,EAAKvB,EAAKqB,CAAC,EAAGG,EAAKxB,EAAKqB,EAAI,CAAC,EAAGC,EAAIC,EAAID,EAAIE,EAAIF,IAInD,GAFAF,EAAIrB,EAAOuB,CAAC,EAERJ,EAAG,CAEL,IAAIQ,GAAKP,EAAEC,CAAC,IAAMK,EAAOP,EAAEE,CAAC,EAAIP,EAE5Bc,EAAKb,EAAGhB,EAAQwB,CAAC,EAAGI,EAAE,EAErBd,EAAGe,EAAId,CAAI,IAEdG,EAAO,KAAKI,CAAC,EAEbL,EAAQ,KAAKY,CAAE,EAEnB,MAEEX,EAAO,KAAKI,CAAC,CAGnB,CAEA,OAAAH,EAAKP,CAAO,EAAIM,EAAO,OAGhBrB,EAAE,mBAAmB,CAC1B,OAAQoB,EACR,MAAOC,EACP,IAAKC,EACL,KAAM,CAACR,EAAMC,CAAO,EACpB,SAAUR,IAAQP,EAAE,WAAaY,IAAQX,EAAE,UAAYe,EAAK,MAC9D,CAAC,CACH,CACF,CAAC,ECxID,IAAIiB,GAAO,cACPC,IAAe,CAAC,QAAS,SAAU,cAAe,iBAAkB,QAAQ,EACrEC,GAAmCC,EAAQH,GAAMC,IAAcG,GAAQ,CAChF,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,YAAAC,EACA,eAAAC,EACA,OAAAC,CACF,EAAIL,EACAM,EAAgBC,GAAoB,CACtC,MAAAN,EACA,YAAAE,CACF,CAAC,EACGK,EAAiBC,GAAqB,CACxC,MAAAR,EACA,YAAAE,CACF,CAAC,EACGO,EAAgBC,GAAoB,CACtC,MAAAV,EACA,YAAAE,CACF,CAAC,EACGS,EAAuBC,GAA2B,CACpD,MAAAZ,EACA,OAAAC,EACA,OAAAG,CACF,CAAC,EA4BD,OAAOJ,EAAML,GAAMgB,EAAqB,CACtC,KAAMR,EACN,GAAII,EACJ,GAAIF,EACJ,GAAII,CACN,CAAC,CAAC,CACJ,CAAC,EC5CM,SAASI,GAAgBC,EAAGC,EAAG,CACpC,GAAID,EAAE,SAAS,GAAK,CAACA,EAAE,UAAU,GAAKC,EAAE,SAAS,GAAK,CAACA,EAAE,UAAU,EACjE,MAAM,IAAI,MAAM,sCAAsC,EAExD,IAAIC,EAAYF,EAAE,YAClB,GAAIA,EAAE,MAAM,GAAKC,EAAE,MAAM,EACvB,OAAO,IAAIC,EAAU,GAAG,EAE1B,GAAIF,EAAE,OAAO,GAAKC,EAAE,GAAG,EAAE,GAAKD,EAAE,GAAGC,CAAC,EAClC,OAAOD,EAET,GAAIC,EAAE,OAAO,GAAKD,EAAE,GAAG,EAAE,EACvB,OAAOC,EAET,GAAI,CAACD,EAAE,SAAS,GAAK,CAACC,EAAE,SAAS,EAAG,CAClC,GAAI,CAACD,EAAE,SAAS,GAAK,CAACC,EAAE,SAAS,EAC/B,OAAID,EAAE,WAAW,IAAMC,EAAE,WAAW,EAC3BD,EAEF,IAAIE,EAAU,CAAC,EAExB,GAAI,CAACF,EAAE,SAAS,EACd,OAAIC,EAAE,WAAW,EACRD,EAELA,EAAE,WAAW,EACR,IAAIE,EAAU,CAAC,EAEjBD,EAET,GAAI,CAACA,EAAE,SAAS,EACd,OAAID,EAAE,WAAW,EACRC,EAELA,EAAE,WAAW,EACR,IAAIC,EAAU,CAAC,EAEjBF,CAEX,CACA,OAAOG,GAAQH,EAAGC,EAAG,SAAUG,EAAGC,EAAG,CACnC,OAAOD,EAAIC,CACb,CAAC,CACH,CAQO,SAASC,GAAgBN,EAAG,CACjC,GAAIA,EAAE,SAAS,GAAK,CAACA,EAAE,UAAU,EAC/B,MAAM,IAAI,MAAM,qCAAqC,EAEvD,IAAIE,EAAYF,EAAE,YACdO,EAAWL,EAAU,UACzBA,EAAU,OAAO,CACf,UAAW,GACb,CAAC,EACD,IAAIM,EAASR,EAAE,KAAK,IAAIE,EAAU,CAAC,CAAC,EACpC,OAAAM,EAAO,EAAI,CAACA,EAAO,GAAK,KACxBN,EAAU,OAAO,CACf,UAAWK,CACb,CAAC,EACMC,CACT,CAsBO,SAASC,GAAeT,EAAGC,EAAG,CACnC,GAAID,EAAE,SAAS,GAAK,CAACA,EAAE,UAAU,GAAKC,EAAE,SAAS,GAAK,CAACA,EAAE,UAAU,EACjE,MAAM,IAAI,MAAM,qCAAqC,EAEvD,IAAIC,EAAYF,EAAE,YAClB,GAAIA,EAAE,MAAM,GAAKC,EAAE,MAAM,EACvB,OAAO,IAAIC,EAAU,GAAG,EAE1B,IAAIQ,EAAS,IAAIR,EAAU,EAAE,EAC7B,OAAIF,EAAE,OAAO,GAAKC,EAAE,GAAGS,CAAM,GAAKV,EAAE,GAAGC,CAAC,EAC/BA,EAELA,EAAE,OAAO,GAAKD,EAAE,GAAGU,CAAM,EACpBV,EAEL,CAACA,EAAE,SAAS,GAAK,CAACC,EAAE,SAAS,EAC3B,CAACD,EAAE,SAAS,GAAK,CAACA,EAAE,WAAW,GAAKC,EAAE,WAAW,GAAKD,EAAE,WAAW,GAAK,CAACC,EAAE,WAAW,GAAK,CAACA,EAAE,SAAS,EAClGS,EAELV,EAAE,WAAW,GAAKC,EAAE,WAAW,EAC1BD,EAAE,SAAS,EAAIA,EAAIC,EAErBD,EAAE,SAAS,EAAIC,EAAID,EAErBG,GAAQH,EAAGC,EAAG,SAAUG,EAAGC,EAAG,CACnC,OAAOD,EAAIC,CACb,CAAC,CACH,CASO,SAASF,GAAQH,EAAGC,EAAGU,EAAM,CAClC,IAAIT,EAAYF,EAAE,YACdY,EAAOC,EACPC,EAAQ,EAAEd,EAAE,EAAI,GAChBe,EAAQ,EAAEd,EAAE,EAAI,GACpB,GAAIa,EAAO,CACTF,EAAQI,GAA6BV,GAAgBN,CAAC,CAAC,EACvD,QAASiB,EAAI,EAAGA,EAAIL,EAAM,OAAQ,EAAEK,EAClCL,EAAMK,CAAC,GAAK,CAEhB,MACEL,EAAQI,GAA6BhB,CAAC,EAExC,GAAIe,EAAO,CACTF,EAAQG,GAA6BV,GAAgBL,CAAC,CAAC,EACvD,QAASiB,EAAK,EAAGA,EAAKL,EAAM,OAAQ,EAAEK,EACpCL,EAAMK,CAAE,GAAK,CAEjB,MACEL,EAAQG,GAA6Bf,CAAC,EAExC,IAAIkB,EAASC,EAASC,EAClBT,EAAM,QAAUC,EAAM,QACxBM,EAAUP,EACVQ,EAAUP,EACVQ,EAAUP,IAEVK,EAAUN,EACVO,EAAUR,EACVS,EAAUN,GAEZ,IAAIO,EAAWH,EAAQ,OACnBI,EAAUH,EAAQ,OAClBI,EAAab,EAAKG,EAAOC,CAAK,EAAI,EAClCU,EAAS,IAAIvB,EAAUsB,EAAa,CAAC,EACrCE,EAAW,IAAIxB,EAAU,CAAC,EAC1ByB,EAAM,IAAIzB,EAAU,CAAC,EACrBK,EAAWL,EAAU,UAIzB,IAHAA,EAAU,OAAO,CACf,UAAW,GACb,CAAC,EACMoB,EAAW,GACZX,EAAKQ,EAAQ,EAAEG,CAAQ,EAAGF,EAAQ,EAAEG,CAAO,CAAC,IAAMC,IACpDC,EAASA,EAAO,KAAKC,CAAQ,GAE/BA,EAAWA,EAAS,MAAMC,CAAG,EAE/B,KAAOJ,EAAU,GACXZ,EAAKU,EAASD,EAAQ,EAAEG,CAAO,CAAC,IAAMC,IACxCC,EAASA,EAAO,KAAKC,CAAQ,GAE/BA,EAAWA,EAAS,MAAMC,CAAG,EAE/B,OAAAzB,EAAU,OAAO,CACf,UAAWK,CACb,CAAC,EACGiB,IAAe,IACjBC,EAAO,EAAI,CAACA,EAAO,GAEdA,CACT,CAGA,SAAST,GAA6BhB,EAAG,CAIvC,QAFII,EAAIJ,EAAE,EACN,EAAII,EAAE,CAAC,EAAI,GACNa,EAAI,EAAGA,EAAIb,EAAE,OAAQ,EAAEa,EAAG,CAEjC,QADIW,EAAIxB,EAAEa,CAAC,EAAI,GACNY,EAAI,EAAID,EAAE,OAAQC,KACzBD,EAAI,IAAMA,EAEZ,GAAKA,CACP,CAEA,QADIE,EAAI,EAAE,OACH,EAAE,OAAOA,CAAC,IAAM,KACrBA,IAEF,IAAIC,EAAK/B,EAAE,EACPgC,EAAM,EAAE,MAAM,EAAGF,EAAI,GAAK,CAAC,EAC3BG,EAAOD,EAAI,OACf,GAAID,EAAK,EACP,GAAI,EAAEA,EAAKE,EAGT,IADAF,GAAME,EACCF,KACLC,GAAO,SAEAD,EAAKE,IACdD,EAAMA,EAAI,MAAM,EAAGD,CAAE,EAAI,IAAMC,EAAI,MAAMD,CAAE,GAM/C,QADIG,EAAM,CAAC,CAAC,EACHC,EAAM,EAAGA,EAAMH,EAAI,QAAS,CAEnC,QADII,EAAOF,EAAI,OACRE,KACLF,EAAIE,CAAI,GAAK,GAEfF,EAAI,CAAC,GAAK,SAASF,EAAI,OAAOG,GAAK,CAAC,EACpC,QAASE,EAAK,EAAGA,EAAKH,EAAI,OAAQ,EAAEG,EAC9BH,EAAIG,CAAE,EAAI,KACRH,EAAIG,EAAK,CAAC,IAAM,MAAQH,EAAIG,EAAK,CAAC,IAAM,UAC1CH,EAAIG,EAAK,CAAC,EAAI,GAEhBH,EAAIG,EAAK,CAAC,GAAKH,EAAIG,CAAE,GAAK,EAC1BH,EAAIG,CAAE,GAAK,EAGjB,CACA,OAAOH,EAAI,QAAQ,CACrB,CAqBO,SAASI,GAAOtC,EAAGC,EAAG,CAC3B,GAAID,EAAE,SAAS,GAAK,CAACA,EAAE,UAAU,GAAKC,EAAE,SAAS,GAAK,CAACA,EAAE,UAAU,EACjE,MAAM,IAAI,MAAM,sCAAsC,EAExD,IAAIC,EAAYF,EAAE,YAClB,GAAIA,EAAE,MAAM,GAAKC,EAAE,MAAM,EACvB,OAAO,IAAIC,EAAU,GAAG,EAE1B,GAAIF,EAAE,OAAO,EACX,OAAOC,EAET,GAAIA,EAAE,OAAO,EACX,OAAOD,EAET,GAAIA,EAAE,GAAGC,CAAC,EACR,OAAO,IAAIC,EAAU,CAAC,EAExB,IAAIQ,EAAS,IAAIR,EAAU,EAAE,EAC7B,OAAIF,EAAE,GAAGU,CAAM,EACNJ,GAAgBL,CAAC,EAEtBA,EAAE,GAAGS,CAAM,EACNJ,GAAgBN,CAAC,EAEtB,CAACA,EAAE,SAAS,GAAK,CAACC,EAAE,SAAS,EAC3B,CAACD,EAAE,SAAS,GAAK,CAACC,EAAE,SAAS,EACxBS,EAEF,IAAIR,EAAUF,EAAE,WAAW,IAAMC,EAAE,WAAW,EAAI,IAAW,IAAS,EAExEE,GAAQH,EAAGC,EAAG,SAAUG,EAAGC,EAAG,CACnC,OAAOD,EAAIC,CACb,CAAC,CACH,CAoBO,SAASkC,GAAmBvC,EAAGC,EAAG,CACvC,GAAID,EAAE,SAAS,GAAK,CAACA,EAAE,UAAU,GAAKC,EAAE,SAAS,GAAK,CAACA,EAAE,UAAU,EACjE,MAAM,IAAI,MAAM,yCAAyC,EAE3D,IAAIC,EAAYF,EAAE,YAClB,OAAIA,EAAE,MAAM,GAAKC,EAAE,MAAM,GAAKA,EAAE,WAAW,GAAK,CAACA,EAAE,OAAO,EACjD,IAAIC,EAAU,GAAG,EAEtBF,EAAE,OAAO,GAAKC,EAAE,OAAO,EAClBD,EAEL,CAACA,EAAE,SAAS,GAAK,CAACC,EAAE,SAAS,EACxB,IAAIC,EAAU,GAAG,EAItBD,EAAE,GAAG,EAAE,EACFD,EAAE,MAAM,KAAK,IAAI,EAAGC,EAAE,SAAS,CAAC,EAAI,EAAE,EAExCD,EAAE,MAAM,IAAIE,EAAU,CAAC,EAAE,IAAID,CAAC,CAAC,CACxC,CAqBO,SAASuC,GAAyBxC,EAAGC,EAAG,CAC7C,GAAID,EAAE,SAAS,GAAK,CAACA,EAAE,UAAU,GAAKC,EAAE,SAAS,GAAK,CAACA,EAAE,UAAU,EACjE,MAAM,IAAI,MAAM,+CAA+C,EAEjE,IAAIC,EAAYF,EAAE,YAClB,OAAIA,EAAE,MAAM,GAAKC,EAAE,MAAM,GAAKA,EAAE,WAAW,GAAK,CAACA,EAAE,OAAO,EACjD,IAAIC,EAAU,GAAG,EAEtBF,EAAE,OAAO,GAAKC,EAAE,OAAO,EAClBD,EAEJC,EAAE,SAAS,EAWZA,EAAE,GAAG,EAAE,EACFD,EAAE,IAAI,KAAK,IAAI,EAAGC,EAAE,SAAS,CAAC,EAAI,EAAE,EAAE,MAAM,EAE9CD,EAAE,IAAI,IAAIE,EAAU,CAAC,EAAE,IAAID,CAAC,CAAC,EAAE,MAAM,EAbtCD,EAAE,WAAW,EACR,IAAIE,EAAU,EAAE,EAEpBF,EAAE,SAAS,EAGT,IAAIE,EAAU,CAAC,EAFb,IAAIA,EAAU,GAAG,CAU9B,CCvYA,IAAIuC,GAAO,SACPC,IAAe,CAAC,QAAS,SAAU,cAAe,QAAQ,EACnDC,GAA8BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC3E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,YAAAC,EACA,OAAAC,CACF,EAAIJ,EACAK,EAAgBC,GAAoB,CACtC,MAAAL,EACA,YAAAE,CACF,CAAC,EACGI,EAAiBC,GAAqB,CACxC,MAAAP,EACA,YAAAE,CACF,CAAC,EACGM,EAAgBC,GAAoB,CACtC,MAAAT,EACA,YAAAE,CACF,CAAC,EACGQ,EAAuBC,GAA2B,CACpD,MAAAX,EACA,OAAAC,EACA,OAAAE,CACF,CAAC,EAwBD,OAAOH,EAAML,GAAM,CACjB,iBAAkBiB,GAClB,uBAAwBC,GACxB,iBAAkB,CAACC,EAAGC,IAAMD,EAAIC,CAClC,EAAGL,EAAqB,CACtB,GAAIJ,EACJ,GAAIF,EACJ,GAAII,CACN,CAAC,CAAC,CACJ,CAAC,EC7DD,IAAIQ,GAAO,SACPC,IAAe,CAAC,OAAO,EAChBC,GAA8BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC3E,GAAI,CACF,MAAAC,CACF,EAAID,EAuBJ,OAAOC,EAAML,GAAM,CACjB,OAAQM,GACR,UAAWC,GACX,OAAQC,GAAK,CAACA,EACd,iBAAkBH,EAAM,YAAYI,GAAQD,GAAKE,GAAQF,EAAGC,CAAI,CAAC,CACnE,CAAC,CACH,CAAC,EC/BD,IAAIE,GAAO,QACPC,IAAe,CAAC,QAAS,SAAU,cAAe,cAAe,QAAQ,EAClEC,GAA6BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC1E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,YAAAC,EACA,YAAAC,EACA,OAAAC,CACF,EAAIL,EACAM,EAAiBC,GAAqB,CACxC,MAAAN,CACF,CAAC,EACGO,EAAmBC,GAAuB,CAC5C,MAAAR,EACA,YAAAE,CACF,CAAC,EACGO,EAAiBC,GAAqB,CACxC,MAAAV,EACA,YAAAG,CACF,CAAC,EACGQ,EAAuBC,GAA2B,CACpD,MAAAZ,EACA,OAAAC,EACA,OAAAG,CACF,CAAC,EAyBD,OAAOJ,EAAML,GAAM,CACjB,iBAAkBkB,GAClB,uBAAwBC,GACxB,iBAAkB,CAACC,EAAGC,IAAMD,EAAIC,CAClC,EAAGL,EAAqB,CACtB,GAAIJ,EACJ,GAAIF,EACJ,GAAII,CACN,CAAC,CAAC,CACJ,CAAC,EChED,IAAIQ,IAAO,gBACPC,IAAe,CAAC,QAAS,aAAa,EAC/BC,GAAqCC,EAAQH,IAAMC,IAAcG,GAAQ,CAClF,GAAI,CACF,MAAAC,EACA,YAAAC,CACF,EAAIF,EAeJ,OAAO,SAAuBG,EAAGC,EAAGC,EAAU,CAE5C,IAAIC,EAAQH,EAAE,MACVI,EAAMJ,EAAE,WAAaA,EAAE,QAAU,OAAYA,EAAE,UAAYA,EAAE,YAAY,EAEzEK,EAAQJ,EAAE,MACVK,EAAML,EAAE,WAAaA,EAAE,QAAU,OAAYA,EAAE,UAAYA,EAAE,YAAY,EAG7E,GAAIE,EAAM,SAAWE,EAAM,OACzB,MAAM,IAAIE,GAAeJ,EAAM,OAAQE,EAAM,MAAM,EAIrD,GAAIF,EAAM,CAAC,IAAME,EAAM,CAAC,GAAKF,EAAM,CAAC,IAAME,EAAM,CAAC,EAC/C,MAAM,IAAI,WAAW,iCAAmCF,EAAQ,0BAA4BE,EAAQ,GAAG,EAIzG,IAAIG,EAAOL,EAAM,CAAC,EACdM,EAAUN,EAAM,CAAC,EAGjBO,EAEAC,EAAO,EAEPC,EAAKV,EAGL,OAAOE,GAAQ,UAAYA,IAAQE,GAAOF,IAAQ,UAEpDM,EAAKN,EAELO,EAAOb,EAAM,QAAQ,EAAGY,CAAE,EAE1BE,EAAKd,EAAM,KAAKI,EAAU,CAACQ,EAAIA,CAAE,CAAC,GAIpC,IAAIG,EAAGC,EAGHC,EAAQ,CAAC,EAEb,IAAKF,EAAI,EAAGA,EAAIL,EAAMK,IACpBE,EAAMF,CAAC,EAAI,CAAC,EAId,IAAIG,EAAK,CAAC,EACNC,EAAK,CAAC,EAENC,EAAK,CAAC,EACNC,EAAK,CAAC,EAGV,IAAKL,EAAI,EAAGA,EAAIL,EAASK,IAAK,CAE5B,IAAIM,EAAON,EAAI,EAMf,IAJAO,EAASrB,EAAGc,EAAGI,EAAIF,EAAII,CAAI,EAE3BC,EAASpB,EAAGa,EAAGK,EAAIF,EAAIG,CAAI,EAEtBP,EAAI,EAAGA,EAAIL,EAAMK,IAAK,CAEzB,IAAIS,EAAKJ,EAAGL,CAAC,IAAMO,EAAOJ,EAAGH,CAAC,EAAIF,EAC9BY,EAAKJ,EAAGN,CAAC,IAAMO,EAAOH,EAAGJ,CAAC,EAAIF,EAElCI,EAAMF,CAAC,EAAEC,CAAC,EAAIF,EAAGU,EAAIC,CAAE,CACzB,CACF,CAGA,OAAO,IAAIxB,EAAY,CACrB,KAAMgB,EACN,KAAM,CAACP,EAAMC,CAAO,EACpB,SAAUL,IAAQJ,EAAE,WAAaM,IAAQL,EAAE,UAAYS,EAAK,MAC9D,CAAC,CACH,EACA,SAASW,EAASG,EAAGV,EAAGW,EAAGC,EAAGN,EAAM,CAMlC,QAJIO,EAASH,EAAE,QACXI,EAAQJ,EAAE,OACVK,EAAML,EAAE,KAEHM,EAAID,EAAIf,CAAC,EAAGiB,EAAKF,EAAIf,EAAI,CAAC,EAAGgB,EAAIC,EAAID,IAAK,CAEjD,IAAIjB,EAAIe,EAAME,CAAC,EAEfL,EAAEZ,CAAC,EAAIO,EACPM,EAAEb,CAAC,EAAIc,EAAOG,CAAC,CACjB,CACF,CACF,CAAC,EC/GD,IAAIE,GAAO,SACPC,IAAe,CAAC,QAAS,SAAU,cAAe,QAAQ,EACnDC,GAA8BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC3E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,YAAAC,EACA,OAAAC,CACF,EAAIJ,EACAK,EAAgBC,GAAoB,CACtC,MAAAL,CACF,CAAC,EACGM,EAAgBC,GAAoB,CACtC,MAAAP,EACA,YAAAE,CACF,CAAC,EACGM,EAAgBC,GAAoB,CACtC,MAAAT,EACA,YAAAE,CACF,CAAC,EACGQ,EAAuBC,GAA2B,CACpD,MAAAX,EACA,OAAAC,EACA,OAAAE,CACF,CAAC,EAwBD,OAAOH,EAAML,GAAM,CACjB,iBAAkBiB,GAClB,uBAAwBC,GACxB,iBAAkB,CAACC,EAAGC,IAAMD,EAAIC,CAClC,EAAGL,EAAqB,CACtB,GAAIJ,EACJ,GAAIF,EACJ,GAAII,CACN,CAAC,CAAC,CACJ,CAAC,EC9DD,IAAIQ,GAAO,MACPC,IAAe,CAAC,OAAO,EAChBC,GAA2BC,EAAQH,GAAMC,IAAcG,GAAQ,CACxE,GAAI,CACF,MAAAC,CACF,EAAID,EA4BJ,OAAOC,EAAML,GAAM,CACjB,OAAQ,SAAgBM,EAAG,CACzB,OAAO,KAAK,MAAM,EAAGA,CAAC,CACxB,EACA,UAAW,SAAmBA,EAAG,CAC/B,OAAOA,EAAE,YAAY,MAAM,EAAGA,CAAC,CACjC,EACA,QAAS,SAAiBA,EAAG,CAC3B,OAAOA,EAAE,IAAI,CACf,EAGA,iBAAkBD,EAAM,YAAYE,GAAQD,GAAKE,GAAQF,EAAGC,CAAI,CAAC,CACnE,CAAC,CACH,CAAC,EC/CD,IAAIE,GAAO,OACPC,IAAe,CAAC,OAAO,EAChBC,GAA4BC,EAAQH,GAAMC,IAAcG,GAAQ,CACzE,GAAI,CACF,MAAAC,CACF,EAAID,EA0BJ,OAAOC,EAAML,GAAM,CACjB,gCAAiCM,GAAKA,EACtC,QAASA,GAAKA,EAAE,UAAU,EAC1B,iBAAkBD,EAAM,YAAYE,GAAQD,GAAKE,GAAQF,EAAGC,CAAI,CAAC,CACnE,CAAC,CACH,CAAC,ECpCD,IAAIE,GAAO,KACPC,IAAe,CAAC,OAAO,EAChBC,GAA0BC,EAAQH,GAAMC,IAAcG,GAAQ,CACvE,GAAI,CACF,MAAAC,CACF,EAAID,EA4BJ,OAAOC,EAAML,GAAM,CACjB,OAAQ,IAAM,EACd,uBAAwBM,GAAKA,EAAE,IAAI,CAAC,EACpC,QAASA,GAAKA,EAAE,GAChB,iBAAkBD,EAAM,YAAYE,GAAQD,GAAKE,GAAQF,EAAGC,CAAI,CAAC,CACnE,CAAC,CACH,CAAC,ECvCD,IAAIE,GAAO,KACPC,IAAe,CAAC,OAAO,EAChBC,GAA0BC,EAAQH,GAAMC,IAAcG,GAAQ,CACvE,GAAI,CACF,MAAAC,CACF,EAAID,EA4BJ,OAAOC,EAAML,GAAM,CACjB,gCAAiCM,GAAKA,EACtC,QAASA,GAAKA,EAAE,GAChB,iBAAkBD,EAAM,YAAYE,GAAQD,GAAKE,GAAQF,EAAGC,CAAI,CAAC,CACnE,CAAC,CACH,CAAC,ECrCD,IAAIE,GAAO,MACPC,IAAe,CAAC,OAAO,EAChBC,GAA2BC,EAAQH,GAAMC,IAAcG,GAAQ,CACxE,GAAI,CACF,MAAAC,CACF,EAAID,EA0BJ,OAAOC,EAAML,GAAM,CACjB,mBAAoB,IAAM,GAC1B,OAAQM,GACR,QAAS,SAAiBC,EAAG,CAC3B,OAAOA,EAAE,KAAO,GAAKA,EAAE,KAAO,CAChC,EACA,UAAW,SAAmBA,EAAG,CAC/B,OAAOA,EAAE,OAAO,GAAKA,EAAE,MAAM,CAC/B,EACA,OAAQA,GAAK,CAACA,EACd,KAAMF,EAAM,YAAYG,GAAQD,GAAKF,EAAM,KAAKG,EAAMD,EAAE,UAAU,CAAC,EAAEA,EAAE,KAAK,CAAC,EAC7E,iBAAkBF,EAAM,YAAYG,GAAQD,GAAKE,GAAQF,EAAGC,CAAI,CAAC,CACnE,CAAC,CACH,CAAC,ECzCD,IAAIE,GAAO,KACPC,IAAe,CAAC,QAAS,SAAU,cAAe,cAAe,QAAQ,EAClEC,GAA0BC,EAAQH,GAAMC,IAAcG,GAAQ,CACvE,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,YAAAC,EACA,YAAAC,EACA,OAAAC,CACF,EAAIL,EACAM,EAAgBC,GAAoB,CACtC,MAAAN,CACF,CAAC,EACGO,EAAiBC,GAAqB,CACxC,MAAAR,EACA,YAAAE,CACF,CAAC,EACGO,EAAgBC,GAAoB,CACtC,MAAAV,EACA,YAAAG,CACF,CAAC,EACGQ,EAAuBC,GAA2B,CACpD,MAAAZ,EACA,OAAAC,EACA,OAAAG,CACF,CAAC,EA8BD,OAAOJ,EAAML,GAAM,CACjB,iBAAkBkB,GAClB,mBAAoB,SAAyBC,EAAGC,EAAG,CACjD,OAAOD,EAAE,KAAO,GAAKA,EAAE,KAAO,GAAKC,EAAE,KAAO,GAAKA,EAAE,KAAO,CAC5D,EACA,uBAAwB,SAA6BD,EAAGC,EAAG,CACzD,MAAO,CAACD,EAAE,OAAO,GAAK,CAACA,EAAE,MAAM,GAAK,CAACC,EAAE,OAAO,GAAK,CAACA,EAAE,MAAM,CAC9D,EACA,iBAAkBF,GAClB,aAAcb,EAAM,YAAYgB,GAAQ,CAACF,EAAGC,IAAMC,EAAKF,EAAE,OAAS,EAAGC,EAAE,OAAS,CAAC,CAAC,CACpF,EAAGJ,EAAqB,CACtB,GAAIJ,EACJ,GAAIF,EACJ,GAAII,CACN,CAAC,CAAC,CACJ,CAAC,ECtED,IAAIQ,GAAO,MACPC,IAAe,CAAC,QAAS,SAAU,cAAe,QAAQ,EACnDC,GAA2BC,EAAQH,GAAMC,IAAcG,GAAQ,CACxE,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,YAAAC,EACA,OAAAC,CACF,EAAIJ,EACAK,EAAgBC,GAAoB,CACtC,MAAAL,CACF,CAAC,EACGM,EAAgBC,GAAoB,CACtC,MAAAP,EACA,YAAAE,CACF,CAAC,EACGM,EAAgBC,GAAoB,CACtC,MAAAT,EACA,YAAAE,CACF,CAAC,EACGQ,EAAuBC,GAA2B,CACpD,MAAAX,EACA,OAAAC,EACA,OAAAE,CACF,CAAC,EA8BD,OAAOH,EAAML,GAAM,CACjB,iBAAkBiB,GAClB,mBAAoB,SAAyBC,EAAGC,EAAG,CACjD,OAAQD,EAAE,KAAO,GAAKA,EAAE,KAAO,KAAQC,EAAE,KAAO,GAAKA,EAAE,KAAO,EAChE,EACA,iBAAkBF,GAClB,uBAAwB,SAA6BC,EAAGC,EAAG,CACzD,OAAQ,CAACD,EAAE,OAAO,GAAK,CAACA,EAAE,MAAM,KAAQ,CAACC,EAAE,OAAO,GAAK,CAACA,EAAE,MAAM,EAClE,EACA,aAAcd,EAAM,YAAYe,GAAQ,CAACF,EAAGC,IAAMC,EAAKF,EAAE,OAAS,EAAGC,EAAE,OAAS,CAAC,CAAC,CACpF,EAAGJ,EAAqB,CACtB,GAAIJ,EACJ,GAAIF,EACJ,GAAII,CACN,CAAC,CAAC,CACJ,CAAC,ECrED,IAAIQ,GAAO,SACPC,IAAe,CAAC,QAAS,SAAU,WAAW,EACvCC,GAA8BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC3E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,UAAAC,CACF,EAAIH,EA8BJ,OAAOC,EAAML,GAAM,CAEjB,yCAA0C,SAA0CQ,EAAM,CACxF,IAAIC,EACAC,EAAMF,EAAK,OACXG,EAAM,GACNC,EACAC,EAAW,GACXC,EAAW,CAAC,EAEhB,IAAKL,EAAI,EAAGA,EAAIC,EAAKD,IAAK,CACxB,IAAIM,EAAMP,EAAKC,CAAC,EAMhB,GAHIO,GAASD,CAAG,IACdF,EAAW,IAETI,GAASF,CAAG,GAAKG,GAAYH,CAAG,EAAG,CACrC,GAAIN,IAAMC,EAAM,EACd,MAAM,IAAI,MAAM,8CAA8C,EAOhE,GAHAE,EAAUD,EACVA,EAAMI,EAAI,QAAQ,EAEd,CAACR,EAAUI,CAAG,EAChB,MAAM,IAAI,UAAU,uCAAuC,EAE7D,GAAIA,EAAM,GAAKF,EAAI,GAAKE,EAAMC,EAE5B,MAAM,IAAIO,GAAWR,EAAKC,EAAU,CAAC,CAEzC,KAAO,CAEL,IAAIQ,EAAIC,GAAMN,CAAG,EAAE,QAAQ,EACvBO,EAAOC,GAAUH,CAAC,EAMtB,GALAN,EAASL,CAAC,EAAIW,EACdR,EAAUD,EACVA,EAAMW,EAAK,OAAS,EAGhBb,EAAI,GAAKE,IAAQC,EACnB,MAAM,IAAIY,GAAeZ,EAAU,EAAGD,EAAM,CAAC,CAEjD,CACF,CACA,GAAIG,EAAS,SAAW,EACtB,MAAM,IAAI,YAAY,8BAA8B,EAGtD,QADIW,EAAMX,EAAS,MAAM,EAClBA,EAAS,QACdW,EAAMC,GAAQD,EAAKX,EAAS,MAAM,EAAGH,CAAG,EAE1C,OAAOE,EAAWP,EAAOmB,CAAG,EAAIA,CAClC,EACA,YAAa,SAAgBjB,EAAM,CACjC,OAAOA,EAAK,KAAK,EAAE,CACrB,CACF,CAAC,CACH,CAAC,ECnGD,IAAImB,GAAO,SACPC,IAAe,CAAC,QAAS,QAAS,SAAU,OAAO,EAC5CC,GAA8BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC3E,GAAI,CACF,MAAAC,EACA,MAAAC,EACA,OAAAC,EACA,MAAAC,CACF,EAAIJ,EAsBJ,OAAOC,EAAML,GAAM,CACjB,iBAAkBS,EAClB,gBAAiB,SAAsBC,EAAOC,EAAQ,CACpD,OAAOF,EAAQF,EAAOK,GAAMF,CAAK,CAAC,EAAGC,CAAM,EAAE,QAAQ,CACvD,CACF,CAAC,EAQD,SAASF,EAAQC,EAAOC,EAAQ,CAE9B,GAAID,EAAM,KAAK,EAAE,SAAW,EAC1B,MAAM,IAAI,MAAM,0CAA0C,EAE5DG,GAAcF,EAAQD,EAAM,KAAK,EAAE,CAAC,CAAC,EACrC,IAAII,EAAWN,EAAM,EAAGE,EAAM,KAAK,EAAE,CAAC,CAAC,EACnCK,EAAQ,IAAIT,EAAMQ,EAAUH,CAAM,EAClCK,EAASN,EAAM,OAAOK,CAAK,EAC/B,OAAOE,GAASD,CAAM,EAAIA,EAAST,EAAO,CAAC,CAACS,CAAM,CAAC,CAAC,CACtD,CACF,CAAC,ECzDD,IAAIE,GAAO,QACPC,IAAe,CAAC,QAAS,OAAQ,MAAM,EAChCC,GAA6BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC1E,GAAI,CACF,MAAAC,EACA,KAAAC,EACA,KAAAC,CACF,EAAIH,EAsBJ,OAAOC,EAAML,GAAM,CACjB,OAAQ,SAAgBQ,EAAG,CACzB,OAAOA,EAAE,MACX,EACA,iBAAkB,SAAuBA,EAAG,CAC1C,OAAOD,EAAKD,EAAKE,CAAC,CAAC,CACrB,CACF,CAAC,CACH,CAAC,ECpCD,IAAIC,GAAO,QACPC,IAAe,CAAC,QAAS,SAAU,WAAY,UAAU,EAClDC,GAA6BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC1E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,SAAAC,EACA,SAAAC,CACF,EAAIJ,EAkCJ,OAAOC,EAAML,GAAM,CACjB,iBAAkB,SAAuBS,EAAGC,EAAG,CAC7C,OAAOJ,EAAOK,EAAOF,EAAE,QAAQ,EAAGC,EAAE,QAAQ,CAAC,CAAC,CAChD,EACA,gBAAiB,SAAsBD,EAAGC,EAAG,CAC3C,OAAOJ,EAAOK,EAAOF,EAAE,QAAQ,EAAGC,CAAC,CAAC,CACtC,EACA,gBAAiB,SAAsBD,EAAGC,EAAG,CAC3C,OAAOJ,EAAOK,EAAOF,EAAGC,EAAE,QAAQ,CAAC,CAAC,CACtC,EACA,eAAgBC,CAClB,CAAC,EASD,SAASA,EAAOF,EAAGC,EAAG,CACpB,IAAIE,EAAmB,KAAK,IAAIC,GAAUJ,CAAC,EAAE,OAAQI,GAAUH,CAAC,EAAE,MAAM,EACxED,EAAIK,GAAQL,CAAC,EACbC,EAAII,GAAQJ,CAAC,EACb,IAAIK,EAAQF,GAAUJ,CAAC,EACnBO,EAAQH,GAAUH,CAAC,EACvB,GAAIK,EAAM,SAAW,GAAKC,EAAM,SAAW,GAAKD,EAAM,CAAC,IAAM,GAAKC,EAAM,CAAC,IAAM,EAC7E,MAAM,IAAI,WAAW,6CAAoDD,EAAM,KAAK,IAAI,EAAI,WAAaC,EAAM,KAAK,IAAI,EAAI,IAAI,EAElI,IAAIC,EAAU,CAACV,EAASC,EAASC,EAAE,CAAC,EAAGC,EAAE,CAAC,CAAC,EAAGF,EAASC,EAAE,CAAC,EAAGC,EAAE,CAAC,CAAC,CAAC,EAAGH,EAASC,EAASC,EAAE,CAAC,EAAGC,EAAE,CAAC,CAAC,EAAGF,EAASC,EAAE,CAAC,EAAGC,EAAE,CAAC,CAAC,CAAC,EAAGH,EAASC,EAASC,EAAE,CAAC,EAAGC,EAAE,CAAC,CAAC,EAAGF,EAASC,EAAE,CAAC,EAAGC,EAAE,CAAC,CAAC,CAAC,CAAC,EAC/K,OAAIE,EAAmB,EACd,CAACK,CAAO,EAERA,CAEX,CACF,CAAC,EC5ED,IAAIC,GAAO,OACPC,IAAe,CAAC,QAAS,SAAU,cAAe,cAAc,EACzDC,GAA4BC,EAAQH,GAAMC,IAAcG,GAAQ,CACzE,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,YAAAC,EACA,aAAAC,CACF,EAAIJ,EAsCJ,OAAOC,EAAML,GAAM,CAGjB,MAAO,SAAeS,EAAG,CACvB,OAAOC,EAAMD,EAAG,EAAGE,GAAUF,CAAC,EAAG,IAAI,CACvC,EACA,gBAAiB,SAAsBA,EAAGG,EAAG,CAC3C,OAAOF,EAAMD,EAAGG,EAAGD,GAAUF,CAAC,EAAG,IAAI,CACvC,EACA,mBAAoB,SAAyBA,EAAGG,EAAG,CACjD,OAAOF,EAAMD,EAAGG,EAAE,SAAS,EAAGD,GAAUF,CAAC,EAAG,IAAI,CAClD,EACA,gBAAiB,SAAsBA,EAAGI,EAAQ,CAChD,OAAOH,EAAMD,EAAG,EAAGE,GAAUF,CAAC,EAAGI,CAAM,CACzC,EACA,wBAAyB,SAA6BJ,EAAGG,EAAGC,EAAQ,CAClE,OAAOH,EAAMD,EAAGG,EAAGD,GAAUF,CAAC,EAAGI,CAAM,CACzC,EACA,2BAA4B,SAAgCJ,EAAGG,EAAGC,EAAQ,CACxE,OAAOH,EAAMD,EAAGG,EAAE,SAAS,EAAGD,GAAUF,CAAC,EAAGI,CAAM,CACpD,EACA,OAAQ,SAAgBJ,EAAG,CACzB,OAAOC,EAAMD,EAAG,EAAGA,EAAE,KAAK,EAAGA,EAAE,QAAQ,CAAC,CAC1C,EACA,iBAAkB,SAAuBA,EAAGG,EAAG,CAC7C,OAAOF,EAAMD,EAAGG,EAAGH,EAAE,KAAK,EAAGA,EAAE,QAAQ,CAAC,CAC1C,EACA,oBAAqB,SAA0BA,EAAGG,EAAG,CACnD,OAAOF,EAAMD,EAAGG,EAAE,SAAS,EAAGH,EAAE,KAAK,EAAGA,EAAE,QAAQ,CAAC,CACrD,EACA,iBAAkB,SAAuBA,EAAGI,EAAQ,CAClD,OAAOH,EAAMD,EAAG,EAAGA,EAAE,KAAK,EAAGI,CAAM,CACrC,EACA,yBAA0B,SAA8BJ,EAAGG,EAAGC,EAAQ,CACpE,OAAOH,EAAMD,EAAGG,EAAGH,EAAE,KAAK,EAAGI,CAAM,CACrC,EACA,4BAA6B,SAAiCJ,EAAGG,EAAGC,EAAQ,CAC1E,OAAOH,EAAMD,EAAGG,EAAE,SAAS,EAAGH,EAAE,KAAK,EAAGI,CAAM,CAChD,CACF,CAAC,EAWD,SAASH,EAAMD,EAAGG,EAAGE,EAAMD,EAAQ,CACjC,GAAI,CAACE,GAAUH,CAAC,EACd,MAAM,IAAI,UAAU,sDAAsD,EAE5E,IAAII,EAASJ,EAAI,EAAIA,EAAI,EACrBK,EAAOL,EAAI,EAAI,CAACA,EAAI,EAGxB,OAAQE,EAAK,OAAQ,CACnB,IAAK,GACH,OAAOI,EAAsBT,EAAGG,EAAGC,EAAQC,EAAK,CAAC,EAAGG,EAAMD,CAAM,EAClE,IAAK,GACH,OAAOG,EAAaV,EAAGG,EAAGC,EAAQC,EAAMG,EAAMD,CAAM,CACxD,CACA,MAAM,IAAI,WAAW,gDAAgD,CACvE,CACA,SAASE,EAAsBT,EAAGG,EAAGC,EAAQO,EAAGH,EAAMD,EAAQ,CAE5D,IAAIK,EAAK,CAACD,EAAIH,EAAMG,EAAIJ,CAAM,EAC9B,GAAIH,GAAUA,IAAW,UAAYA,IAAW,QAC9C,MAAM,IAAI,UAAU,uBAAuB,OAAOA,EAAQ,GAAI,CAAC,EAIjE,IAAIS,EAAIT,IAAW,SAAWL,EAAa,SAASa,EAAIZ,EAAGG,CAAC,EAAIL,EAAY,SAASc,EAAIZ,EAAGG,CAAC,EAE7F,OAAOC,IAAW,KAAOS,EAAIA,EAAE,QAAQ,CACzC,CACA,SAASH,EAAaV,EAAGG,EAAGC,EAAQU,EAAGN,EAAMD,EAAQ,CAEnD,GAAIQ,GAASf,CAAC,EAAG,CAEf,IAAIgB,EAAKhB,EAAE,SAASG,CAAC,EAErB,OAAIC,IAAW,KAETA,IAAWY,EAAG,QAAQ,EACjBnB,EAAOmB,EAAIZ,CAAM,EAEnBY,EAEFA,EAAG,QAAQ,CACpB,CAMA,QAJIC,EAAI,KAAK,IAAIH,EAAE,CAAC,EAAIN,EAAMM,EAAE,CAAC,EAAIP,CAAM,EAEvCW,EAAS,CAAC,EAELC,EAAI,EAAGA,EAAIF,EAAGE,IACrBD,EAAOC,CAAC,EAAInB,EAAEmB,EAAIX,CAAI,EAAEW,EAAIZ,CAAM,EAGpC,OAAOH,IAAW,KAAOP,EAAOqB,CAAM,EAAIA,CAC5C,CACF,CAAC,ECvJD,IAAIE,IAAO,SACPC,IAAe,CAAC,OAAO,EAChBC,GAA8BC,EAAQH,IAAMC,IAAcG,GAAQ,CAC3E,GAAI,CACF,MAAAC,CACF,EAAID,EA8BJ,OAAOC,EAAM,SAAU,CACrB,kBAAmBC,GACnB,mBAAoB,SAAyBC,EAAGC,EAAM,CACpD,OAAOD,EAAE,OAAOD,GAAgBC,EAAE,QAAQ,EAAGC,CAAI,EAAGD,EAAE,SAAS,CAAC,CAClE,EACA,gBAAiBE,GACjB,iBAAkB,SAAuBF,EAAGC,EAAM,CAChD,OAAOD,EAAE,OAAOE,GAAaF,EAAE,QAAQ,EAAGC,CAAI,EAAGD,EAAE,SAAS,CAAC,CAC/D,CACF,CAAC,CACH,CAAC,EASD,SAASD,GAAgBC,EAAGG,EAAU,CACpC,IAAIC,EAAeC,GAAiBF,EAAUH,EAAG,QAAQ,EACzD,OAAOM,GAAON,EAAG,SAAUO,EAAOC,EAAOC,EAAO,CAE9C,OAAOL,EAAaG,EAAO,CAACC,CAAK,EAAGC,CAAK,CAC3C,CAAC,CACH,CC7DA,IAAIC,GAAO,UACPC,IAAe,CAAC,OAAO,EAChBC,GAA+BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC5E,GAAI,CACF,MAAAC,CACF,EAAID,EAoBJ,OAAOC,EAAML,GAAM,CACjB,MAAO,SAAeM,EAAG,CACvB,OAAOC,GAAaD,CAAC,CACvB,EACA,OAAQ,SAAgBA,EAAG,CAGzB,OAAOA,EAAE,OAAOC,GAAaD,EAAE,QAAQ,CAAC,EAAGA,EAAE,SAAS,CAAC,CACzD,CACF,CAAC,CACH,CAAC,EClCD,IAAIE,GAAO,UACPC,IAAe,CAAC,OAAO,EAChBC,GAA+BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC5E,GAAI,CACF,MAAAC,CACF,EAAID,EAwBJ,OAAOC,EAAML,GAAM,CACjB,kBAAmBM,IACnB,mBAAoB,SAAyBC,EAAGC,EAAU,CACxDD,EAAE,QAAQC,CAAQ,CACpB,CACF,CAAC,CACH,CAAC,EAQD,SAASF,IAASG,EAAOD,EAAU,CACjCE,GAAQD,EAAO,CAAC,EAAGA,EAAOE,GAAiBH,EAAUC,EAAOT,EAAI,CAAC,CACnE,CC7CA,IAAIY,GAAO,oBACPC,IAAe,CAAC,OAAO,EAChBC,GAAyCC,EAAQH,GAAMC,IAAcG,GAAQ,CACtF,GAAI,CACF,MAAAC,CACF,EAAID,EAmCJ,OAAOC,EAAML,GAAM,CACjB,MAAO,SAAeM,EAAG,CACvB,OAAOC,GAAiBD,EAAGE,EAAM,CACnC,EACA,OAAQ,SAAgBF,EAAG,CACzB,OAAOA,EAAE,YAAY,CACvB,CACF,CAAC,CACH,CAAC,EC/CD,IAAIG,GAAO,WACPC,IAAe,CAAC,QAAS,SAAU,SAAU,YAAa,cAAe,cAAc,EAChFC,GAAgCC,EAAQH,GAAMC,IAAcG,GAAQ,CAC7E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,OAAAC,EACA,UAAAC,EACA,YAAAC,EACA,aAAAC,CACF,EAAIN,EA+BJ,OAAOC,EAAML,GAAM,CACjB,GAAI,UAAa,CACf,OAAOM,EAAO,SAAW,SAAWC,EAAO,CAAC,CAAC,EAAI,CAAC,CACpD,EACA,OAAQ,SAAgBI,EAAQ,CAC9B,OAAOJ,EAAOI,CAAM,CACtB,EACA,qBAAsB,SAA2BC,EAAM,CACrD,OAAOC,EAAUD,EAAMA,EAAMN,EAAO,SAAW,SAAW,QAAU,MAAS,CAC/E,EACA,6BAA8B,SAAkCM,EAAMD,EAAQ,CAC5E,OAAOE,EAAUD,EAAMA,EAAMD,CAAM,CACrC,EACA,yCAA0C,SAA6CC,EAAME,EAAM,CACjG,OAAOD,EAAUD,EAAME,EAAMR,EAAO,SAAW,SAAW,QAAU,MAAS,CAC/E,EACA,iDAAkD,SAAoDM,EAAME,EAAMH,EAAQ,CACxH,OAAOE,EAAUD,EAAME,EAAMH,CAAM,CACrC,EACA,MAAO,SAAeI,EAAM,CAC1B,OAAOC,EAAgBD,CAAI,CAC7B,EACA,gBAAiB,SAAsBA,EAAMJ,EAAQ,CACnD,OAAOK,EAAgBD,EAAMJ,CAAM,CACrC,EACA,OAAQ,SAAgBI,EAAM,CAC5B,OAAOC,EAAgBD,EAAK,QAAQ,EAAGA,EAAK,QAAQ,CAAC,CACvD,EACA,iBAAkB,SAAuBA,EAAMJ,EAAQ,CACrD,OAAOK,EAAgBD,EAAK,QAAQ,EAAGJ,CAAM,CAC/C,CACF,CAAC,EACD,SAASK,EAAgBD,EAAMJ,EAAQ,CACrC,OAAQI,EAAK,OAAQ,CACnB,IAAK,GACH,OAAOJ,EAASJ,EAAOI,CAAM,EAAI,CAAC,EACpC,IAAK,GACH,OAAOE,EAAUE,EAAK,CAAC,EAAGA,EAAK,CAAC,EAAGJ,CAAM,EAC3C,IAAK,GACH,OAAOE,EAAUE,EAAK,CAAC,EAAGA,EAAK,CAAC,EAAGJ,CAAM,EAC3C,QACE,MAAM,IAAI,MAAM,uCAAuC,CAC3D,CACF,CAUA,SAASE,EAAUD,EAAME,EAAMH,EAAQ,CAErC,IAAIM,EAAMC,GAAYN,CAAI,GAAKM,GAAYJ,CAAI,EAAIN,EAAY,KAG/D,GAFIU,GAAYN,CAAI,IAAGA,EAAOA,EAAK,SAAS,GACxCM,GAAYJ,CAAI,IAAGA,EAAOA,EAAK,SAAS,GACxC,CAACK,GAAUP,CAAI,GAAKA,EAAO,EAC7B,MAAM,IAAI,MAAM,2DAA2D,EAE7E,GAAI,CAACO,GAAUL,CAAI,GAAKA,EAAO,EAC7B,MAAM,IAAI,MAAM,2DAA2D,EAE7E,IAAIM,EAAMH,EAAM,IAAIT,EAAU,CAAC,EAAI,EAC/Ba,EAAeJ,EAAM,IAAIA,EAAI,CAAC,EAAI,EAClCF,EAAO,CAACH,EAAME,CAAI,EAGtB,GAAIH,EAAQ,CAEV,GAAIA,IAAW,SACb,OAAOD,EAAa,SAASK,EAAMK,EAAK,EAAGC,CAAY,EAEzD,GAAIV,IAAW,QACb,OAAOF,EAAY,SAASM,EAAMK,EAAK,EAAGC,CAAY,EAExD,MAAM,IAAI,UAAU,wBAAyB,OAAOV,EAAQ,GAAI,CAAC,CACnE,CAOA,QAJIW,EAAMC,GAAO,CAAC,EAAGR,EAAMM,CAAY,EAEnCG,EAAUZ,EAAOE,EAAOF,EAAOE,EAE1BW,EAAI,EAAGA,EAAID,EAASC,IAC3BH,EAAIG,CAAC,EAAEA,CAAC,EAAIL,EAEd,OAAOE,CACT,CACF,CAAC,ECrID,IAAII,GAAO,OACPC,IAAe,CAAC,QAAS,SAAU,gBAAgB,EAC5CC,GAA4BC,EAAQH,GAAMC,IAAcG,GAAQ,CACzE,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,eAAAC,CACF,EAAIH,EA4BJ,OAAOC,EAAML,GAAM,CACjB,iBAAkB,SAAuBQ,EAAGC,EAAG,CAC7C,OAAOH,EAAOI,EAAMF,EAAE,QAAQ,EAAGC,EAAE,QAAQ,CAAC,CAAC,CAC/C,EACA,gBAAiB,SAAsBD,EAAGC,EAAG,CAC3C,OAAOH,EAAOI,EAAMF,EAAE,QAAQ,EAAGC,CAAC,CAAC,CACrC,EACA,gBAAiB,SAAsBD,EAAGC,EAAG,CAC3C,OAAOH,EAAOI,EAAMF,EAAGC,EAAE,QAAQ,CAAC,CAAC,CACrC,EACA,eAAgBC,CAClB,CAAC,EASD,SAASA,EAAMC,EAAGC,EAAG,CAUnB,GARIC,GAAKF,CAAC,EAAE,SAAW,IAErBA,EAAI,CAACA,CAAC,GAEJE,GAAKD,CAAC,EAAE,SAAW,IAErBA,EAAI,CAACA,CAAC,GAEJC,GAAKF,CAAC,EAAE,OAAS,GAAKE,GAAKD,CAAC,EAAE,OAAS,EACzC,MAAM,IAAI,WAAW,+EAAsF,KAAK,UAAUD,EAAE,MAAM,EAAI,SAAW,KAAK,UAAUC,EAAE,MAAM,EAAI,GAAG,EAEjL,IAAIE,EAAI,CAAC,EACLC,EAAI,CAAC,EACT,OAAOJ,EAAE,IAAI,SAAUA,EAAG,CACxB,OAAOC,EAAE,IAAI,SAAUA,EAAG,CACxB,OAAAG,EAAI,CAAC,EACLD,EAAE,KAAKC,CAAC,EACDJ,EAAE,IAAI,SAAUF,EAAG,CACxB,OAAOG,EAAE,IAAI,SAAUJ,EAAG,CACxB,OAAOO,EAAE,KAAKR,EAAeE,EAAGD,CAAC,CAAC,CACpC,CAAC,CACH,CAAC,CACH,CAAC,CACH,CAAC,GAAKM,CACR,CACF,CAAC,ECjFD,IAAIE,GAAO,MACPC,IAAe,CAAC,OAAO,EAChBC,GAA2BC,EAAQH,GAAMC,IAAcG,GAAQ,CACxE,GAAI,CACF,MAAAC,CACF,EAAID,EA8CJ,OAAOC,EAAML,GAAM,CACjB,kBAAmBM,EACnB,mBAAoB,SAAyBC,EAAGC,EAAU,CACxD,OAAOD,EAAE,IAAIC,CAAQ,CACvB,EACA,uDAAwD,CAACC,EAAGC,EAAGC,IAASC,EAAa,CAACH,EAAGC,EAAG,GAAGC,EAAK,MAAM,EAAGA,EAAK,OAAS,CAAC,CAAC,EAAGA,EAAKA,EAAK,OAAS,CAAC,CAAC,CACvJ,CAAC,EAaD,SAASC,EAAaC,EAAQC,EAAe,CAC3C,GAAI,OAAOA,GAAkB,WAC3B,MAAM,IAAI,MAAM,2CAA2C,EAE7D,IAAIC,EAAqBF,EAAO,CAAC,EAAE,SAC/BG,EAAUC,GAAe,GAAGJ,EAAO,IAAI,GAAK,EAAE,SAAW,EAAE,KAAK,EAAIK,GAAU,CAAC,CAAC,CAAC,EACjFC,EAAOJ,EAAqB,CAACK,EAAQC,IAAQD,EAAO,IAAIC,CAAG,EAAIC,GAC/DC,EAAoBR,EAAqBF,EAAO,IAAI,GAAK,EAAE,SAAW,EAAE,OAAOW,GAAY,EAAE,QAAQ,EAAGR,CAAO,EAAG,EAAE,SAAS,CAAC,EAAIH,EAAO,CAAC,EAAE,OAAOW,GAAY,EAAE,QAAQ,EAAGR,CAAO,CAAC,CAAC,EAAIH,EAAO,IAAI,GAAK,EAAE,SAAWW,GAAY,EAAE,QAAQ,EAAGR,CAAO,EAAIQ,GAAY,EAAGR,CAAO,CAAC,EACjRR,EACJ,GAAIH,EAAM,gBAAgBS,CAAa,EAAG,CACxC,IAAIW,EAAaT,EAAQ,IAAI,IAAM,CAAC,EAChCU,EAAcH,EAAkB,IAAII,GAASR,EAAKQ,EAAOF,CAAU,CAAC,EACpEG,EAAeC,EAAsBf,EAAeY,EAAaD,EAAYF,CAAiB,EAClGf,EAAWsB,EAAoBF,CAAY,CAC7C,KAAO,CACL,IAAIG,EAAiBlB,EAAO,OACxBmB,EAAgBC,EAAiBnB,EAAeiB,CAAc,EAClEvB,EAAWsB,EAAoBE,CAAa,CAC9C,CACA,IAAIE,EAA4B,CAAC3B,EAAGc,IAAQb,EAAS,CAACD,EAAG,GAAGgB,EAAkB,MAAM,CAAC,EAAE,IAAIY,GAAShB,EAAKgB,EAAOd,CAAG,CAAC,CAAC,EAAGA,CAAG,EAC3H,GAAIN,EACF,OAAOQ,EAAkB,CAAC,EAAE,IAAIW,CAAyB,EAEzD,OAAO5B,EAAUiB,EAAkB,CAAC,EAAGW,CAAyB,EAElE,SAASJ,EAAoBF,EAAc,CACzC,OAAQA,EAAc,CACpB,IAAK,GACH,OAAOrB,GAAKO,EAAc,GAAGP,CAAC,EAChC,IAAK,GACH,MAAO,CAACA,EAAGc,IAAQP,EAAc,GAAGP,EAAGc,CAAG,EAC5C,IAAK,GACH,MAAO,CAACd,EAAGc,IAAQP,EAAc,GAAGP,EAAGc,EAAK,GAAGE,CAAiB,CACpE,CACF,CACA,SAASU,EAAiBzB,EAAUuB,EAAgB,CAClD,OAAIvB,EAAS,OAASuB,EAAiB,EAC9B,EAELvB,EAAS,SAAWuB,EAAiB,EAChC,EAEF,CACT,CACA,SAASF,EAAsBrB,EAAU4B,EAAQf,EAAKgB,EAAQ,CAC5D,OAAIhC,EAAM,QAAQG,EAAU,CAAC,GAAG4B,EAAQf,EAAK,GAAGgB,CAAM,CAAC,IAAM,KACpD,EAELhC,EAAM,QAAQG,EAAU,CAAC,GAAG4B,EAAQf,CAAG,CAAC,IAAM,KACzC,GAELhB,EAAM,QAAQG,EAAU4B,CAAM,IAAM,KAC/B,EAIX,CACF,CAQA,SAAS9B,EAAUqB,EAAOnB,EAAU,CAClC,OAAO8B,GAAQX,EAAO,CAAC,EAAGA,EAAOY,GAAiB/B,EAAUmB,EAAO3B,EAAI,CAAC,CAC1E,CACF,CAAC,EC1ID,IAAIwC,GAAO,OACPC,IAAe,CAAC,QAAS,SAAU,WAAY,QAAQ,EAChDC,GAA4BC,EAAQH,GAAMC,IAAcG,GAAQ,CACzE,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,SAAAC,EACA,OAAAC,CACF,EAAIJ,EA+CJ,OAAOC,EAAML,GAAM,CACjB,iBAAkB,SAAuBS,EAAK,CAE5C,OAAIC,GAASD,CAAG,EACPH,EAAOK,EAAMF,EAAI,QAAQ,CAAC,CAAC,EAE3BE,EAAMF,CAAG,CAEpB,EACA,yBAA0B,SAA8BA,EAAKG,EAAK,CAChE,GAAI,CAACC,GAAUD,CAAG,EAAG,MAAM,IAAI,WAAW,kCAAkC,EAC5E,OAAIF,GAASD,CAAG,EACPH,EAAOQ,EAAWL,EAAI,QAAQ,EAAGG,CAAG,CAAC,EAErCE,EAAWL,EAAKG,CAAG,CAE9B,EACA,mBAAoBP,EAAM,QAAQ,eAAgBU,GAAU,CAACN,EAAKG,IAAQG,EAAON,EAAKD,EAAOI,CAAG,CAAC,CAAC,EAClG,oBAAqBP,EAAM,QAAQ,gBAAiBW,GAAU,CAACP,EAAKG,IAAQI,EAAOP,EAAKD,EAAOI,CAAG,CAAC,CAAC,CACtG,CAAC,EAUD,SAASE,EAAWL,EAAKG,EAAK,CAI5B,GAHIF,GAASD,CAAG,IACdA,EAAMA,EAAI,QAAQ,GAEhB,CAAC,MAAM,QAAQA,CAAG,EACpB,MAAM,WAAW,iDAAiD,EAEpE,GAAIG,EAAM,EAAG,CACX,IAAIK,EAAS,CAAC,EACd,OAAAR,EAAI,QAAQS,GAAW,CACrBD,EAAO,KAAKH,EAAWI,EAASN,EAAM,CAAC,CAAC,CAC1C,CAAC,EACMK,CACT,KAAO,IAAIL,IAAQ,EACjB,OAAOD,EAAMF,CAAG,EAEhB,MAAM,WAAW,gCAAgC,EAErD,CAQA,SAASE,EAAMF,EAAK,CAGlB,QAFIQ,EAAS,CAAC,EACVE,EAAOV,EAAI,OACNW,EAAI,EAAGA,EAAID,EAAMC,IACxBH,EAAO,KAAKI,EAAaZ,EAAIW,EAAI,CAAC,EAAGX,EAAIW,CAAC,CAAC,CAAC,EAE9C,OAAOH,CACT,CASA,SAASI,EAAaC,EAAMC,EAAM,CAE5Bb,GAASY,CAAI,IAAGA,EAAOA,EAAK,QAAQ,GACpCZ,GAASa,CAAI,IAAGA,EAAOA,EAAK,QAAQ,GACxC,IAAIC,EAAc,MAAM,QAAQF,CAAI,EAChCG,EAAc,MAAM,QAAQF,CAAI,EACpC,GAAIC,GAAeC,EACjB,OAAOC,EAAWJ,EAAMC,CAAI,EAE9B,GAAI,CAACC,GAAe,CAACC,EACnB,OAAOlB,EAASgB,EAAMD,CAAI,EAE5B,MAAM,UAAU,6DAA6D,CAC/E,CASA,SAASI,EAAWC,EAAMC,EAAM,CAC9B,GAAID,EAAK,SAAWC,EAAK,OACvB,MAAM,WAAW,yCAAyC,EAI5D,QAFIX,EAAS,CAAC,EACVE,EAAOQ,EAAK,OACPP,EAAI,EAAGA,EAAID,EAAMC,IACxBH,EAAO,KAAKI,EAAaM,EAAKP,CAAC,EAAGQ,EAAKR,CAAC,CAAC,CAAC,EAE5C,OAAOH,CACT,CACF,CAAC,EC9JD,IAAIY,IAAO,OACPC,IAAe,CAAC,QAAS,SAAU,SAAU,WAAW,EACjDC,GAA4BC,EAAQH,IAAMC,IAAcG,GAAQ,CACzE,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,OAAAC,EACA,UAAAC,CACF,EAAIJ,EAmCJ,OAAOC,EAAM,OAAQ,CACnB,GAAI,UAAa,CACf,OAAOC,EAAO,SAAW,QAAUG,EAAM,CAAC,CAAC,EAAIA,EAAM,CAAC,EAAG,SAAS,CACpE,EAGA,iCAAkC,SAAmCC,EAAM,CACzE,IAAIC,EAAOD,EAAKA,EAAK,OAAS,CAAC,EAC/B,GAAI,OAAOC,GAAS,SAAU,CAC5B,IAAIC,EAASF,EAAK,IAAI,EACtB,OAAOD,EAAMC,EAAME,CAAM,CAC3B,KAAO,QAAIN,EAAO,SAAW,QACpBG,EAAMC,CAAI,EAEVD,EAAMC,EAAM,SAAS,CAEhC,EACA,MAAOD,EACP,OAAQ,SAAgBC,EAAM,CAC5B,IAAIE,EAASF,EAAK,QAAQ,EAC1B,OAAOD,EAAMC,EAAK,QAAQ,EAAGE,CAAM,CACrC,EACA,yBAA0B,SAA8BF,EAAME,EAAQ,CACpE,OAAOH,EAAMC,EAAK,QAAQ,EAAGE,CAAM,CACrC,CACF,CAAC,EASD,SAASH,EAAMC,EAAME,EAAQ,CAC3B,IAAIC,EAAgBC,EAAWJ,CAAI,EAC/BK,EAAeF,EAAgB,IAAIL,EAAU,CAAC,EAAI,EAEtD,GADAQ,EAAUN,CAAI,EACVE,EAAQ,CAEV,IAAIK,EAAIV,EAAOK,CAAM,EACrB,OAAIF,EAAK,OAAS,EACTO,EAAE,OAAOP,EAAMK,CAAY,EAE7BE,CACT,KAAO,CAEL,IAAIC,EAAM,CAAC,EACX,OAAIR,EAAK,OAAS,EACTS,GAAOD,EAAKR,EAAMK,CAAY,EAEhCG,CACT,CACF,CAGA,SAASJ,EAAWJ,EAAM,CACxB,IAAIG,EAAgB,GACpB,OAAAH,EAAK,QAAQ,SAAUU,EAAOC,EAAOH,EAAK,CACpCI,GAAYF,CAAK,IACnBP,EAAgB,GAChBK,EAAIG,CAAK,EAAID,EAAM,SAAS,EAEhC,CAAC,EACMP,CACT,CAGA,SAASG,EAAUN,EAAM,CACvBA,EAAK,QAAQ,SAAUU,EAAO,CAC5B,GAAI,OAAOA,GAAU,UAAY,CAACG,GAAUH,CAAK,GAAKA,EAAQ,EAC5D,MAAM,IAAI,MAAM,uDAAuD,CAE3E,CAAC,CACH,CACF,CAAC,EC1HM,SAASI,IAAc,CAC5B,MAAM,IAAI,MAAM,yCAAyC,CAC3D,CACO,SAASC,IAAa,CAC3B,MAAM,IAAI,MAAM,wCAAwC,CAC1D,CACO,SAASC,IAAW,CACzB,MAAM,IAAI,MAAM,sCAAsC,CACxD,CCNA,IAAIC,GAAO,QACPC,IAAe,CAAC,QAAS,SAAU,UAAW,aAAc,UAAW,YAAa,SAAU,WAAY,MAAO,YAAY,EACtHC,GAA6BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC1E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,OAAAC,EACA,UAAAC,EACA,QAAAC,EACA,UAAAC,EACA,OAAAC,EACA,SAAAC,EACA,IAAAC,EACA,WAAAC,CACF,EAAIV,EA6CJ,OAAOC,EAAML,GAAM,CAIjB,OAAQe,EACR,kBAAmBA,EACnB,iBAAkB,SAAuBC,EAAOC,EAAK,CACnD,OAAOC,EAAKC,EAAOH,EAAOC,EAAK,EAAG,EAAK,CAAC,CAC1C,EACA,yBAA0B,SAA8BD,EAAOC,EAAKG,EAAM,CACxE,OAAOF,EAAKC,EAAOH,EAAOC,EAAKG,EAAM,EAAK,CAAC,CAC7C,EACA,0BAA2B,SAA+BJ,EAAOC,EAAKI,EAAY,CAChF,OAAOH,EAAKC,EAAOH,EAAOC,EAAK,EAAGI,CAAU,CAAC,CAC/C,EACA,kCAAmC,SAAsCL,EAAOC,EAAKG,EAAMC,EAAY,CACrG,OAAOH,EAAKC,EAAOH,EAAOC,EAAKG,EAAMC,CAAU,CAAC,CAClD,EACA,uBAAwB,SAA6BL,EAAOC,EAAK,CAC/D,IAAIK,EAAYN,EAAM,YACtB,OAAOE,EAAKC,EAAOH,EAAOC,EAAK,IAAIK,EAAU,CAAC,EAAG,EAAK,CAAC,CACzD,EACA,kCAAmC,SAAuCN,EAAOC,EAAKG,EAAM,CAC1F,OAAOF,EAAKC,EAAOH,EAAOC,EAAKG,EAAM,EAAK,CAAC,CAC7C,EACA,gCAAiC,SAAqCJ,EAAOC,EAAKI,EAAY,CAC5F,IAAIC,EAAYN,EAAM,YACtB,OAAOE,EAAKC,EAAOH,EAAOC,EAAK,IAAIK,EAAU,CAAC,EAAGD,CAAU,CAAC,CAC9D,EACA,2CAA4C,SAA+CL,EAAOC,EAAKG,EAAMC,EAAY,CACvH,OAAOH,EAAKC,EAAOH,EAAOC,EAAKG,EAAMC,CAAU,CAAC,CAClD,EACA,mBAAoB,SAAwBL,EAAOC,EAAKG,EAAM,CAC5D,OAAOF,EAAKC,EAAOH,EAAOC,EAAKG,EAAM,EAAK,CAAC,CAC7C,EACA,4BAA6B,SAAgCJ,EAAOC,EAAKG,EAAMC,EAAY,CACzF,OAAOH,EAAKC,EAAOH,EAAOC,EAAKG,EAAMC,CAAU,CAAC,CAClD,CACF,CAAC,EACD,SAASH,EAAKK,EAAK,CACjB,OAAIjB,EAAO,SAAW,SACbC,EAASA,EAAOgB,CAAG,EAAIC,GAAS,EAElCD,CACT,CACA,SAASR,EAAUU,EAAKJ,EAAY,CAClC,IAAIK,EAAIC,EAAOF,CAAG,EAClB,GAAI,CAACC,EACH,MAAM,IAAI,YAAY,WAAaD,EAAM,qBAAqB,EAEhE,OAAInB,EAAO,SAAW,aAChBE,IAAc,QAChBoB,GAAY,EAEPV,EAAKC,EAAOX,EAAUkB,EAAE,KAAK,EAAGlB,EAAUkB,EAAE,GAAG,EAAGlB,EAAUkB,EAAE,IAAI,CAAC,EAAGL,CAAU,GAEhFH,EAAKC,EAAOO,EAAE,MAAOA,EAAE,IAAKA,EAAE,KAAML,CAAU,CAAC,CAE1D,CAWA,SAASF,EAAOH,EAAOC,EAAKG,EAAMC,EAAY,CAI5C,QAHIQ,EAAQ,CAAC,EACTC,EAAUhB,EAAWM,CAAI,EAAIC,EAAaX,EAAYD,EAAUY,EAAaT,EAAWD,EACxFoB,EAAIf,EACDc,EAAQC,EAAGd,CAAG,GACnBY,EAAM,KAAKE,CAAC,EACZA,EAAIlB,EAAIkB,EAAGX,CAAI,EAEjB,OAAOS,CACT,CAWA,SAASF,EAAOF,EAAK,CACnB,IAAIO,EAAOP,EAAI,MAAM,GAAG,EAGpBQ,EAAOD,EAAK,IAAI,SAAUE,EAAK,CAEjC,OAAO,OAAOA,CAAG,CACnB,CAAC,EACGC,EAAUF,EAAK,KAAK,SAAUG,EAAK,CACrC,OAAO,MAAMA,CAAG,CAClB,CAAC,EACD,GAAID,EACF,OAAO,KAET,OAAQF,EAAK,OAAQ,CACnB,IAAK,GACH,MAAO,CACL,MAAOA,EAAK,CAAC,EACb,IAAKA,EAAK,CAAC,EACX,KAAM,CACR,EACF,IAAK,GACH,MAAO,CACL,MAAOA,EAAK,CAAC,EACb,IAAKA,EAAK,CAAC,EACX,KAAMA,EAAK,CAAC,CACd,EACF,QACE,OAAO,IACX,CACF,CACF,CAAC,ECnLD,IAAII,GAAO,UACPC,IAAe,CAAC,QAAS,YAAa,QAAQ,EACvCC,GAA+BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC5E,GAAI,CACF,MAAAC,EACA,UAAAC,CACF,EAAIF,EAyCJ,OAAOC,EAAML,GAAM,CACjB,gBAAiB,SAAsBO,EAAGC,EAAO,CAC/C,OAAOD,EAAE,QAAQC,EAAO,EAAI,CAC9B,EACA,eAAgB,SAAqBD,EAAGC,EAAO,CAC7C,OAAAA,EAAM,QAAQ,SAAUC,EAAM,CAC5B,GAAI,CAACH,EAAUG,CAAI,EACjB,MAAM,IAAI,UAAU,+BAAiCA,CAAI,CAE7D,CAAC,EACMC,GAAaH,EAAGC,CAAK,CAC9B,CACF,CAAC,CACH,CAAC,ECtDD,IAAIG,IAAO,SACPC,IAAe,CAAC,SAAU,QAAQ,EAC3BC,GAA8BC,EAAQH,IAAMC,IAAcG,GAAQ,CAC3E,GAAI,CACF,OAAAC,EACA,OAAAC,CACF,EAAIF,EA4BJ,OAAO,SAAgBG,EAAGC,EAAMC,EAAc,CAC5C,GAAI,UAAU,SAAW,GAAK,UAAU,SAAW,EACjD,MAAM,IAAIC,GAAe,SAAU,UAAU,OAAQ,EAAG,CAAC,EAa3D,GAXIC,GAASH,CAAI,IACfA,EAAOA,EAAK,QAAQ,GAElBI,GAAYJ,EAAK,CAAC,CAAC,IAErBA,EAAOA,EAAK,IAAI,SAAUK,EAAO,CAC/B,OAAQD,GAAYC,CAAK,EAAYA,EAAM,SAAS,EAAvBA,CAC/B,CAAC,GAICF,GAASJ,CAAC,EAEZ,OAAOA,EAAE,OAAOC,EAAMC,EAAc,EAAI,EAE1C,GAAI,OAAOF,GAAM,SAEf,OAAOO,EAAcP,EAAGC,EAAMC,CAAY,EAI5C,IAAIM,EAAW,MAAM,QAAQR,CAAC,EAAI,GAAQF,EAAO,SAAW,QAC5D,GAAIG,EAAK,SAAW,EAAG,CAErB,KAAO,MAAM,QAAQD,CAAC,GACpBA,EAAIA,EAAE,CAAC,EAET,OAAOS,GAAMT,CAAC,CAChB,KAAO,CAEA,MAAM,QAAQA,CAAC,IAClBA,EAAI,CAACA,CAAC,GAERA,EAAIS,GAAMT,CAAC,EACX,IAAIU,EAAMC,GAAYX,EAAGC,EAAMC,CAAY,EAC3C,OAAOM,EAAWT,EAAOW,CAAG,EAAIA,CAClC,CACF,EASA,SAASH,EAAcK,EAAKX,EAAMY,EAAa,CAC7C,GAAIA,IAAgB,QAClB,GAAI,OAAOA,GAAgB,UAAYA,EAAY,SAAW,EAC5D,MAAM,IAAI,UAAU,2CAA2C,OAGjEA,EAAc,IAEhB,GAAIZ,EAAK,SAAW,EAClB,MAAM,IAAIa,GAAeb,EAAK,OAAQ,CAAC,EAEzC,IAAIc,EAAMd,EAAK,CAAC,EAChB,GAAI,OAAOc,GAAQ,UAAY,CAACC,GAAUD,CAAG,EAC3C,MAAM,IAAI,UAAU,uDAA8DE,GAAOhB,CAAI,EAAI,GAAG,EAEtG,GAAIW,EAAI,OAASG,EACf,OAAOH,EAAI,UAAU,EAAGG,CAAG,EACtB,GAAIH,EAAI,OAASG,EAAK,CAE3B,QADIL,EAAME,EACDM,EAAI,EAAGC,EAAKJ,EAAMH,EAAI,OAAQM,EAAIC,EAAID,IAC7CR,GAAOG,EAET,OAAOH,CACT,KACE,QAAOE,CAEX,CACF,CAAC,ECrHD,IAAIQ,GAAO,SACPC,IAAe,CAAC,QAAS,WAAY,gBAAgB,EAC9CC,GAA8BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC3E,GAAI,CACF,MAAAC,EACA,SAAAC,EACA,eAAAC,CACF,EAAIH,EA6BJ,OAAOC,EAAML,GAAM,CACjB,8CAA+C,SAAiDQ,EAAGC,EAAO,CACxGC,EAAcF,EAAG,CAAC,EAClB,IAAIG,EAAYL,EAASC,EAAeE,CAAK,EAAGD,CAAC,EACjD,OAAOG,EAAU,QAAQ,CAC3B,EACA,+CAAgD,SAAkDH,EAAGC,EAAO,CAC1G,OAAAC,EAAcF,EAAG,CAAC,EACXF,EAASC,EAAeE,CAAK,EAAGD,CAAC,CAC1C,EACA,6DAA8D,SAA8DA,EAAGC,EAAOG,EAAG,CACvIF,EAAcF,EAAG,CAAC,EAClB,IAAIG,EAAYL,EAASC,EAAeE,EAAOG,CAAC,EAAGJ,CAAC,EACpD,OAAOG,CACT,EACA,8DAA+D,SAA+DH,EAAGC,EAAOG,EAAG,CACzI,OAAAF,EAAcF,EAAG,CAAC,EACXF,EAASC,EAAeE,EAAOG,CAAC,EAAGJ,CAAC,CAC7C,CACF,CAAC,EACD,SAASE,EAAcE,EAAGC,EAAc,CACtC,IAAIC,EAAa,MAAM,QAAQF,CAAC,EAAIG,GAAUH,CAAC,EAAIA,EAAE,KAAK,EAC1D,GAAIE,EAAW,OAAS,EACtB,MAAM,IAAI,WAAW,kCAAkC,OAAOD,CAAY,CAAC,EAE7E,GAAIC,EAAW,SAAW,GAAKA,EAAW,CAAC,IAAM,EAC/C,MAAM,IAAI,WAAW,kCAAkC,OAAOD,CAAY,CAAC,EAE7E,GAAIC,EAAW,CAAC,IAAMD,EACpB,MAAM,IAAI,WAAW,kCAAkC,OAAOA,CAAY,CAAC,CAE/E,CACF,CAAC,ECpED,IAAIG,GAAO,iBACPC,IAAe,CAAC,QAAS,SAAU,iBAAkB,YAAa,aAAc,OAAQ,SAAU,YAAa,cAAe,eAAgB,MAAO,KAAK,EACnJC,GAAsCC,EAAQH,GAAMC,IAAcG,GAAQ,CACnF,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,eAAAC,EACA,UAAAC,EACA,WAAAC,EACA,KAAAC,EACA,UAAAC,EACA,OAAAC,EACA,YAAAC,EACA,aAAAC,EACA,IAAAC,EACA,IAAAC,CACF,EAAIZ,EAkCJ,OAAOC,EAAML,GAAM,CACjB,GAAI,UAAa,CACf,OAAOM,EAAO,SAAW,SAAWM,EAAO,CAAC,CAAC,EAAI,CAAC,CACpD,EACA,OAAQ,SAAgBK,EAAQ,CAC9B,OAAOL,EAAOK,CAAM,CACtB,EACA,sCAAuC,SAA0CC,EAAO,CACtF,OAAOC,EAAmBD,EAAOZ,EAAO,SAAW,SAAW,QAAU,MAAS,CACnF,EACA,8CAA+C,SAAiDY,EAAOD,EAAQ,CAC7G,OAAOE,EAAmBD,EAAOD,CAAM,CACzC,EACA,6CAA8C,SAAgDC,EAAOE,EAAG,CACtG,IAAIC,EAAUT,EAAOQ,CAAC,EACtB,OAAAE,EAAgBD,CAAO,EAChBE,EAAmBL,EAAOG,EAAS,MAAS,CACrD,EACA,8CAA+C,SAAiDH,EAAOE,EAAG,CACxGE,EAAgBF,CAAC,EACjB,IAAII,EAAcJ,EAAE,QAAQ,IAAMd,EAAO,SAAW,SAAW,QAAU,QACzE,OAAOiB,EAAmBL,EAAOE,EAAGI,CAAW,CACjD,EACA,qDAAsD,SAAuDN,EAAOE,EAAGH,EAAQ,CAC7H,IAAII,EAAUT,EAAOQ,CAAC,EACtB,OAAAE,EAAgBD,CAAO,EAChBE,EAAmBL,EAAOG,EAASJ,CAAM,CAClD,EACA,sDAAuD,SAAwDC,EAAOE,EAAGH,EAAQ,CAC/H,OAAAK,EAAgBF,CAAC,EACVG,EAAmBL,EAAOE,EAAGH,CAAM,CAC5C,CACF,CAAC,EAUD,SAASE,EAAmBD,EAAOD,EAAQ,CACzC,IAAIQ,EAAMC,GAAYR,CAAK,EACvBS,EAAWF,EAAM,IAAId,EAAU,EAAE,EAAI,GACrCiB,EAAWb,EAAIG,CAAK,EACpBW,EAAWb,EAAIE,CAAK,EACpBY,EAAO,CAAC,CAACF,EAAUrB,EAAeoB,EAAUE,CAAQ,CAAC,EAAG,CAACA,EAAUD,CAAQ,CAAC,EAChF,OAAOG,EAAiBD,EAAMb,CAAM,CACtC,CACA,SAASK,EAAgBF,EAAG,CAC1B,IAAIY,EAAOZ,EAAE,KAAK,EAClB,GAAIY,EAAK,OAAS,GAAKA,EAAK,CAAC,IAAM,EACjC,MAAM,IAAI,WAAW,kCAAkC,CAE3D,CACA,SAASC,EAAKC,EAAO,CACnB,OAAOA,EAAM,OAAO,CAACC,EAAGC,IAAS7B,EAAe4B,EAAGC,CAAI,CAAC,CAC1D,CACA,SAASL,EAAiBD,EAAMb,EAAQ,CACtC,GAAIA,EAAQ,CACV,GAAIA,IAAW,SACb,OAAO,IAAIH,EAAagB,CAAI,EAE9B,GAAIb,IAAW,QACb,OAAO,IAAIJ,EAAYiB,CAAI,EAE7B,MAAM,IAAI,UAAU,wBAAyB,OAAOb,EAAQ,GAAI,CAAC,CACnE,CACA,OAAOa,CACT,CAWA,SAASP,EAAmBL,EAAOE,EAAGH,EAAQ,CAC5C,IAAIoB,EAAQ3B,EAAKU,CAAC,EAClB,GAAIiB,IAAU,EACZ,MAAM,IAAI,WAAW,6BAA6B,EAEpD,IAAIZ,EAAMC,GAAYR,CAAK,EAAIP,EAAY,KACvC2B,EAAMb,EAAM,IAAIA,EAAI,CAAC,EAAI,EACzBE,EAAWF,EAAM,IAAIA,EAAI,EAAE,EAAI,GAC/Bc,EAAKd,EAAM,IAAIA,EAAIL,EAAE,IAAI,CAAC,CAAC,CAAC,EAAIiB,CAAK,EAAIjB,EAAE,IAAI,CAAC,CAAC,CAAC,EAAIiB,EACtDG,EAAKf,EAAM,IAAIA,EAAIL,EAAE,IAAI,CAAC,CAAC,CAAC,EAAIiB,CAAK,EAAIjB,EAAE,IAAI,CAAC,CAAC,CAAC,EAAIiB,EACtDI,EAAKhB,EAAM,IAAIA,EAAIL,EAAE,IAAI,CAAC,CAAC,CAAC,EAAIiB,CAAK,EAAIjB,EAAE,IAAI,CAAC,CAAC,CAAC,EAAIiB,EACtDK,EAAI3B,EAAIG,CAAK,EACbyB,EAAYnC,EAAU8B,EAAK7B,EAAWiC,CAAC,CAAC,EACxCE,EAAI5B,EAAIE,CAAK,EACb2B,EAAMrC,EAAUkC,EAAGT,EAAK,CAACM,EAAIA,EAAII,CAAS,CAAC,CAAC,EAC5CG,EAAMtC,EAAUyB,EAAK,CAACM,EAAIC,EAAIG,CAAS,CAAC,EAAGV,EAAK,CAACN,EAAUc,EAAIG,CAAC,CAAC,CAAC,EAClEG,EAAMvC,EAAUyB,EAAK,CAACM,EAAIE,EAAIE,CAAS,CAAC,EAAGV,EAAK,CAACO,EAAII,CAAC,CAAC,CAAC,EACxDI,GAAMxC,EAAUyB,EAAK,CAACM,EAAIC,EAAIG,CAAS,CAAC,EAAGV,EAAK,CAACQ,EAAIG,CAAC,CAAC,CAAC,EACxDK,EAAMzC,EAAUkC,EAAGT,EAAK,CAACO,EAAIA,EAAIG,CAAS,CAAC,CAAC,EAC5CO,GAAM1C,EAAUyB,EAAK,CAACO,EAAIC,EAAIE,CAAS,CAAC,EAAGV,EAAK,CAACN,EAAUY,EAAIK,CAAC,CAAC,CAAC,EAClEO,GAAM3C,EAAUyB,EAAK,CAACM,EAAIE,EAAIE,CAAS,CAAC,EAAGV,EAAK,CAACN,EAAUa,EAAII,CAAC,CAAC,CAAC,EAClEQ,GAAM5C,EAAUyB,EAAK,CAACO,EAAIC,EAAIE,CAAS,CAAC,EAAGV,EAAK,CAACM,EAAIK,CAAC,CAAC,CAAC,EACxDS,GAAM7C,EAAUkC,EAAGT,EAAK,CAACQ,EAAIA,EAAIE,CAAS,CAAC,CAAC,EAC5Cb,GAAO,CAAC,CAACe,EAAKC,EAAKC,CAAG,EAAG,CAACC,GAAKC,EAAKC,EAAG,EAAG,CAACC,GAAKC,GAAKC,EAAG,CAAC,EAC7D,OAAOtB,EAAiBD,GAAMb,CAAM,CACtC,CACF,CAAC,EC3JD,IAAIqC,GAAO,MACPC,IAAe,CAAC,QAAS,QAAS,SAAU,OAAO,EAC5CC,GAA2BC,EAAQH,GAAMC,IAAcG,GAAQ,CACxE,GAAI,CACF,MAAAC,EACA,MAAAC,EACA,OAAAC,EACA,MAAAC,CACF,EAAIJ,EAsBJ,OAAOC,EAAML,GAAM,CACjB,iBAAkBS,EAClB,gBAAiB,SAAsBC,EAAOC,EAAK,CACjD,OAAOF,EAAKF,EAAOK,GAAMF,CAAK,CAAC,EAAGC,CAAG,EAAE,QAAQ,CACjD,CACF,CAAC,EAQD,SAASF,EAAKC,EAAOC,EAAK,CAExB,GAAID,EAAM,KAAK,EAAE,SAAW,EAC1B,MAAM,IAAI,MAAM,0CAA0C,EAE5DG,GAAcF,EAAKD,EAAM,KAAK,EAAE,CAAC,CAAC,EAClC,IAAII,EAAcN,EAAM,EAAGE,EAAM,KAAK,EAAE,CAAC,CAAC,EACtCK,EAAQ,IAAIT,EAAMK,EAAKG,CAAW,EAClCE,EAASN,EAAM,OAAOK,CAAK,EAC/B,OAAOE,GAASD,CAAM,EAAIA,EAAST,EAAO,CAAC,CAACS,CAAM,CAAC,CAAC,CACtD,CACF,CAAC,ECvDD,IAAIE,GAAO,OACPC,IAAe,CAAC,QAAS,SAAU,SAAS,EACrCC,GAA4BC,EAAQH,GAAMC,IAAcG,GAAQ,CACzE,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,OAAAC,CACF,EAAIH,EAwBJ,OAAOC,EAAML,GAAM,CACjB,OAAQ,SAAgBQ,EAAG,CACzB,OAAOA,EAAE,OAAOA,EAAE,KAAK,EAAG,QAAQ,CACpC,EACA,MAAOC,GACP,OAAQ,SAAgBD,EAAG,CACzB,OAAOF,EAAO,SAAW,QAAU,CAACE,EAAE,MAAM,EAAID,EAAO,CAACC,EAAE,MAAM,EAAG,QAAS,QAAQ,CACtF,EACA,uDAAwD,SAAyDA,EAAG,CAElH,OAAOF,EAAO,SAAW,QAAU,CAAC,EAAIC,EAASA,EAAO,CAAC,EAAG,QAAS,QAAQ,EAAIG,GAAS,CAC5F,CACF,CAAC,CACH,CAAC,EC5CD,IAAIC,GAAO,UACPC,IAAe,CAAC,OAAO,EAChBC,GAA+BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC5E,GAAI,CACF,MAAAC,CACF,EAAID,EA8BJ,OAAOC,EAAML,GAAM,CACjB,MAAO,SAAeM,EAAG,CACvB,OAAOC,GAAaC,GAAMF,CAAC,CAAC,CAC9B,EACA,OAAQ,SAAgBA,EAAG,CACzB,IAAIG,EAAMF,GAAaD,EAAE,QAAQ,CAAC,EAElC,OAAO,MAAM,QAAQG,CAAG,EAAIH,EAAE,OAAOG,EAAKH,EAAE,SAAS,CAAC,EAAIG,CAC5D,EACA,IAAK,SAAaH,EAAG,CAEnB,OAAOE,GAAMF,CAAC,CAChB,CACF,CAAC,CACH,CAAC,EC9CD,IAAII,GAAO,SACPC,IAAe,CAAC,QAAS,SAAU,QAAS,KAAK,EAC1CC,GAA8BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC3E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,MAAAC,EACA,IAAAC,CACF,EAAIJ,EAgDJ,OAAOC,EAAML,GAAM,CAEjB,gBAAiB,SAAsBS,EAAOC,EAAO,CACnD,OAAIC,GAAaD,CAAK,EACbJ,EAAO,GAEhBM,GAAwBH,EAAOC,CAAK,EAC7BD,EAAM,OAAOC,CAAK,EAC3B,EACA,eAAgBL,EAAM,QAAQ,gBAAiB,SAAUQ,EAAW,CAClE,OAAO,SAAUJ,EAAOC,EAAO,CAC7B,IAAII,EAAeD,EAAUP,EAAOG,CAAK,EAAGC,CAAK,EACjD,OAAOA,EAAM,SAAS,EAAII,EAAeA,EAAa,QAAQ,CAChE,CACF,CAAC,EACD,gBAAiBC,IACjB,gBAAiBC,IAEjB,0BAA2B,SAA8BP,EAAOC,EAAOO,EAAaC,EAAc,CAChG,OAAIP,GAAaD,CAAK,EACbD,GAETG,GAAwBH,EAAOC,CAAK,EAC7BD,EAAM,MAAM,EAAE,OAAOC,EAAOS,EAAsBF,EAAaP,CAAK,EAAGQ,CAAY,EAC5F,EACA,yBAA0Bb,EAAM,QAAQ,0BAA2B,SAAUQ,EAAW,CACtF,OAAO,SAAUJ,EAAOC,EAAOO,EAAaC,EAAc,CACxD,IAAIJ,EAAeD,EAAUP,EAAOG,CAAK,EAAGC,EAAOO,EAAaC,CAAY,EAC5E,OAAOJ,EAAa,SAAWA,EAAa,QAAQ,EAAIA,CAC1D,CACF,CAAC,EACD,oBAAqBT,EAAM,QAAQ,0BAA2B,SAAUQ,EAAW,CACjF,OAAO,SAAUJ,EAAOC,EAAOO,EAAa,CAC1C,OAAOJ,EAAUP,EAAOG,CAAK,EAAGC,EAAOO,EAAa,MAAS,EAAE,QAAQ,CACzE,CACF,CAAC,EACD,qBAAsBZ,EAAM,QAAQ,0BAA2B,SAAUQ,EAAW,CAClF,OAAO,SAAUJ,EAAOC,EAAOO,EAAa,CAC1C,OAAOJ,EAAUJ,EAAOC,EAAOO,EAAa,MAAS,CACvD,CACF,CAAC,EACD,wBAAyBG,GACzB,gCAAiCA,GACjC,qBAAsBC,GACxB,CAAC,EASD,SAASF,EAAsBF,EAAaP,EAAO,CACjD,GAAI,OAAOO,GAAgB,SACzB,MAAM,IAAI,MAAM,0BAA2B,EAE7C,GAAIP,EAAM,UACR,OAAOO,EAET,IAAIK,EAAYZ,EAAM,KAAK,EAC3B,GAAIY,EAAU,MAAMC,GAAKA,EAAI,CAAC,EAC5B,GAAI,CACF,OAAOf,EAAIS,EAAaV,EAAMe,CAAS,CAAC,CAC1C,MAAgB,CACd,OAAOL,CACT,KAEA,QAAOA,CAEX,CACF,CAAC,EASD,SAASD,IAAcQ,EAAKd,EAAO,CACjC,GAAI,CAACe,GAAQf,CAAK,EAEhB,MAAM,IAAI,UAAU,gBAAgB,EAEtC,GAAIC,GAAaD,CAAK,EACpB,MAAO,GAGT,GADAE,GAAwB,MAAM,KAAKY,CAAG,EAAGd,CAAK,EAC1CA,EAAM,KAAK,EAAE,SAAW,EAC1B,MAAM,IAAIgB,GAAehB,EAAM,KAAK,EAAE,OAAQ,CAAC,EAIjD,IAAIiB,EAASH,EAAI,OACjBI,GAAclB,EAAM,IAAI,EAAE,CAAC,EAAGiB,CAAM,EACpCC,GAAclB,EAAM,IAAI,EAAE,CAAC,EAAGiB,CAAM,EACpC,IAAIE,EAAQnB,EAAM,UAAU,CAAC,EACzBoB,EAAS,GACb,OAAAD,EAAM,QAAQ,SAAUE,EAAG,CACzBD,GAAUN,EAAI,OAAOO,CAAC,CACxB,CAAC,EACMD,CACT,CAYA,SAASV,GAAcI,EAAKd,EAAOO,EAAaC,EAAc,CAC5D,GAAI,CAACR,GAASA,EAAM,UAAY,GAE9B,MAAM,IAAI,UAAU,gBAAgB,EAEtC,GAAIC,GAAaD,CAAK,EACpB,OAAOc,EAGT,GADAZ,GAAwB,MAAM,KAAKY,CAAG,EAAGd,CAAK,EAC1CA,EAAM,KAAK,EAAE,SAAW,EAC1B,MAAM,IAAIgB,GAAehB,EAAM,KAAK,EAAE,OAAQ,CAAC,EAEjD,GAAIQ,IAAiB,QACnB,GAAI,OAAOA,GAAiB,UAAYA,EAAa,SAAW,EAC9D,MAAM,IAAI,UAAU,2CAA2C,OAGjEA,EAAe,IAEjB,IAAIW,EAAQnB,EAAM,UAAU,CAAC,EACzBsB,EAAMH,EAAM,KAAK,EAAE,CAAC,EACxB,GAAIG,IAAQf,EAAY,OACtB,MAAM,IAAIS,GAAeG,EAAM,KAAK,EAAE,CAAC,EAAGZ,EAAY,MAAM,EAI9D,IAAIU,EAASH,EAAI,OACjBI,GAAclB,EAAM,IAAI,EAAE,CAAC,CAAC,EAC5BkB,GAAclB,EAAM,IAAI,EAAE,CAAC,CAAC,EAI5B,QADIuB,EAAQ,CAAC,EACJC,EAAI,EAAGA,EAAIP,EAAQO,IAC1BD,EAAMC,CAAC,EAAIV,EAAI,OAAOU,CAAC,EAOzB,GALAL,EAAM,QAAQ,SAAUE,EAAGG,EAAG,CAC5BD,EAAMF,CAAC,EAAId,EAAY,OAAOiB,EAAE,CAAC,CAAC,CACpC,CAAC,EAGGD,EAAM,OAASN,EACjB,QAASQ,EAAKR,EAAS,EAAGS,EAAOH,EAAM,OAAQE,EAAKC,EAAMD,IACnDF,EAAME,CAAE,IACXF,EAAME,CAAE,EAAIjB,GAIlB,OAAOe,EAAM,KAAK,EAAE,CACtB,CASA,SAASlB,IAAmBsB,EAAQ3B,EAAO,CACzC,GAAI,CAAAC,GAAaD,CAAK,EAGtB,IAAIA,EAAM,KAAK,EAAE,SAAW,EAC1B,MAAM,IAAIgB,GAAehB,EAAM,KAAK,EAAG,CAAC,EAE1C,IAAI4B,EAAM5B,EAAM,UAAU,CAAC,EAC3B,GAAI,OAAO4B,GAAQ,SACjB,MAAM,IAAI,UAAU,yDAAyD,EAE/E,OAAOC,GAAgBF,EAAQC,CAAG,EACpC,CAUA,SAASjB,IAAmBgB,EAAQ3B,EAAOO,EAAa,CACtD,GAAIN,GAAaD,CAAK,EACpB,OAAO2B,EAET,GAAI3B,EAAM,KAAK,EAAE,SAAW,EAC1B,MAAM,IAAIgB,GAAehB,EAAM,KAAK,EAAG,CAAC,EAE1C,IAAI4B,EAAM5B,EAAM,UAAU,CAAC,EAC3B,GAAI,OAAO4B,GAAQ,SACjB,MAAM,IAAI,UAAU,yDAAyD,EAI/E,IAAIE,EAAUC,GAAMJ,CAAM,EAC1B,OAAAK,GAAgBF,EAASF,EAAKrB,CAAW,EAClCuB,CACT,CC7QA,IAAIG,GAAO,YACPC,IAAe,CAAC,QAAS,QAAQ,EAC1BC,GAAiCC,EAAQH,GAAMC,IAAcG,GAAQ,CAC9E,GAAI,CACF,MAAAC,EACA,OAAAC,CACF,EAAIF,EAuBJ,OAAOC,EAAML,GAAM,CACjB,MAAOO,GAAKC,EAAgBF,EAAOC,CAAC,CAAC,EAAE,QAAQ,EAC/C,OAAQC,EACR,IAAKC,EACP,CAAC,EACD,SAASD,EAAgBD,EAAG,CAE1B,IAAIG,EAAOH,EAAE,KAAK,EAGdI,EAGJ,OAAQD,EAAK,OAAQ,CACnB,IAAK,GAEHC,EAAIJ,EAAE,MAAM,EACZ,MACF,IAAK,GACH,CAEE,IAAIK,EAAOF,EAAK,CAAC,EACbG,EAAUH,EAAK,CAAC,EAGpB,GAAIG,IAAY,EAEd,MAAM,IAAI,WAAW,uDAAyDC,GAAOJ,CAAI,EAAI,GAAG,EAIlG,OAAQH,EAAE,QAAQ,EAAG,CACnB,IAAK,QACHI,EAAII,EAAgBR,EAAGK,EAAMC,CAAO,EACpC,MACF,IAAK,SACHF,EAAIK,EAAiBT,EAAGK,EAAMC,CAAO,EACrC,KACJ,CACF,CACA,MACF,QAEE,MAAM,IAAI,WAAW,qDAAuDC,GAAOJ,CAAI,EAAI,GAAG,CAClG,CACA,OAAOC,CACT,CACA,SAASI,EAAgBE,EAAGL,EAAMC,EAAS,CAOzC,QALIK,EAAOD,EAAE,MAETE,EAAa,CAAC,EACdC,EAEKC,EAAI,EAAGA,EAAIR,EAASQ,IAAK,CAEhCD,EAAgBD,EAAWE,CAAC,EAAI,CAAC,EAEjC,QAASC,EAAI,EAAGA,EAAIV,EAAMU,IAExBF,EAAcE,CAAC,EAAIb,GAAMS,EAAKI,CAAC,EAAED,CAAC,CAAC,CAEvC,CAEA,OAAOJ,EAAE,kBAAkB,CACzB,KAAME,EACN,KAAM,CAACN,EAASD,CAAI,EACpB,SAAUK,EAAE,SACd,CAAC,CACH,CACA,SAASD,EAAiBC,EAAGL,EAAMC,EAAS,CAW1C,QATIU,EAASN,EAAE,QACXO,EAAQP,EAAE,OACVQ,EAAMR,EAAE,KAERS,EAAUH,EAAS,CAAC,EAAI,OACxBI,EAAS,CAAC,EACVC,EAAO,CAAC,EAERC,EAAI,CAAC,EACAtB,EAAI,EAAGA,EAAIK,EAAML,IACxBsB,EAAEtB,CAAC,EAAI,EAGT,IAAIuB,EAAGC,EAAGV,EAEV,IAAKS,EAAI,EAAGC,EAAIP,EAAM,OAAQM,EAAIC,EAAGD,IAEnCD,EAAEL,EAAMM,CAAC,CAAC,IAKZ,QAFIE,EAAM,EAEDV,EAAI,EAAGA,EAAIV,EAAMU,IAExBM,EAAK,KAAKI,CAAG,EAEbA,GAAOH,EAAEP,CAAC,EAEVO,EAAEP,CAAC,EAAIM,EAAKN,CAAC,EAKf,IAFAM,EAAK,KAAKI,CAAG,EAERX,EAAI,EAAGA,EAAIR,EAASQ,IAEvB,QAASY,EAAKR,EAAIJ,CAAC,EAAGa,EAAKT,EAAIJ,EAAI,CAAC,EAAGc,EAAIF,EAAIE,EAAID,EAAIC,IAAK,CAE1D,IAAIC,EAAIP,EAAEL,EAAMW,CAAC,CAAC,IAElBR,EAAOS,CAAC,EAAIf,EAERE,IACFG,EAAQU,CAAC,EAAI3B,GAAMc,EAAOY,CAAC,CAAC,EAEhC,CAGF,OAAOlB,EAAE,mBAAmB,CAC1B,OAAQS,EACR,MAAOC,EACP,IAAKC,EACL,KAAM,CAACf,EAASD,CAAI,EACpB,SAAUK,EAAE,SACd,CAAC,CACH,CACF,CAAC,EC9JD,IAAIoB,GAAO,aACPC,IAAe,CAAC,QAAS,YAAa,MAAM,EACrCC,GAAkCC,EAAQH,GAAMC,IAAcG,GAAQ,CAC/E,GAAI,CACF,MAAAC,EACA,UAAAC,EACA,KAAAC,CACF,EAAIH,EAuBJ,OAAOC,EAAML,GAAM,CACjB,IAAK,SAAaQ,EAAG,CACnB,OAAOD,EAAKD,EAAUE,CAAC,CAAC,CAC1B,CACF,CAAC,CACH,CAAC,EChCD,IAAIC,GAAO,QACPC,IAAe,CAAC,QAAS,SAAU,SAAU,WAAW,EACjDC,GAA6BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC1E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,OAAAC,EACA,UAAAC,CACF,EAAIJ,EAiCJ,OAAOC,EAAML,GAAM,CACjB,GAAI,UAAa,CACf,OAAOM,EAAO,SAAW,QAAUG,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAG,SAAS,CACtE,EAGA,iCAAkC,SAAmCC,EAAM,CACzE,IAAIC,EAAOD,EAAKA,EAAK,OAAS,CAAC,EAC/B,GAAI,OAAOC,GAAS,SAAU,CAC5B,IAAIC,EAASF,EAAK,IAAI,EACtB,OAAOD,EAAOC,EAAME,CAAM,CAC5B,KAAO,QAAIN,EAAO,SAAW,QACpBG,EAAOC,CAAI,EAEXD,EAAOC,EAAM,SAAS,CAEjC,EACA,MAAOD,EACP,OAAQ,SAAgBC,EAAM,CAC5B,IAAIE,EAASF,EAAK,QAAQ,EAC1B,OAAOD,EAAOC,EAAK,QAAQ,EAAGE,CAAM,CACtC,EACA,yBAA0B,SAA8BF,EAAME,EAAQ,CACpE,OAAOH,EAAOC,EAAK,QAAQ,EAAGE,CAAM,CACtC,CACF,CAAC,EASD,SAASH,EAAOC,EAAME,EAAQ,CAC5B,IAAIC,EAAgBC,EAAWJ,CAAI,EAC/BK,EAAeF,EAAgB,IAAIL,EAAU,CAAC,EAAI,EAEtD,GADAQ,EAAUN,CAAI,EACVE,EAAQ,CAEV,IAAIK,EAAIV,EAAOK,CAAM,EACrB,OAAIF,EAAK,OAAS,EACTO,EAAE,OAAOP,EAAMK,CAAY,EAE7BE,CACT,KAAO,CAEL,IAAIC,EAAM,CAAC,EACX,OAAIR,EAAK,OAAS,EACTS,GAAOD,EAAKR,EAAMK,CAAY,EAEhCG,CACT,CACF,CAGA,SAASJ,EAAWJ,EAAM,CACxB,IAAIG,EAAgB,GACpB,OAAAH,EAAK,QAAQ,SAAUU,EAAOC,EAAOH,EAAK,CACpCI,GAAYF,CAAK,IACnBP,EAAgB,GAChBK,EAAIG,CAAK,EAAID,EAAM,SAAS,EAEhC,CAAC,EACMP,CACT,CAGA,SAASG,EAAUN,EAAM,CACvBA,EAAK,QAAQ,SAAUU,EAAO,CAC5B,GAAI,OAAOA,GAAU,UAAY,CAACG,GAAUH,CAAK,GAAKA,EAAQ,EAC5D,MAAM,IAAI,MAAM,wDAAwD,CAE5E,CAAC,CACH,CACF,CAAC,ECtHD,IAAII,GAAO,MACPC,IAAe,CAAC,QAAS,SAAU,YAAa,iBAAkB,eAAgB,MAAO,MAAO,IAAK,YAAa,OAAQ,MAAO,OAAQ,MAAM,EACxIC,GAA2BC,EAAQH,GAAMC,IAAcG,GAAQ,CACxE,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,UAAAC,EACA,eAAAC,EACA,aAAAC,EACA,IAAAC,EACA,IAAAC,EACA,EAAGC,EACH,UAAAC,EACA,KAAAC,EACA,IAAAC,EACA,KAAAC,EACA,KAAAC,CACF,EAAIb,EAoBJ,OAAOC,EAAML,GAAM,CACjB,MAAOkB,EACP,OAAQ,SAAgBZ,EAAQ,CAC9B,OAAOA,EAAO,OAAOY,EAAOZ,EAAO,QAAQ,CAAC,EAAGA,EAAO,SAAS,CAAC,CAClE,CACF,CAAC,EAQD,SAASY,EAAOC,EAAK,CACnB,IAAIC,EAAOC,GAAUF,CAAG,EACxB,OAAIC,EAAK,SAAW,EAAUE,EAAKH,EAAKC,EAAK,CAAC,CAAC,EAExCG,EAAOJ,EAAI,IAAIK,GAASN,EAAOM,EAAOJ,EAAK,MAAM,CAAC,CAAC,CAAC,EAAG,CAAC,CACjE,CASA,SAASG,EAAOJ,EAAKM,EAAK,CACxB,IAAIL,EAAOC,GAAUF,CAAG,EACxB,GAAIM,IAAQ,EAAG,OAAO,IAAI,MAAML,EAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,CAACM,EAAGC,IAAMJ,EAAOJ,EAAIQ,CAAC,EAAGF,EAAM,CAAC,CAAC,EACtF,GAAIL,EAAK,SAAW,EAAG,OAAOE,EAAKH,CAAG,EACtC,SAASS,EAAWT,EAAK,CAEvB,IAAIC,EAAOC,GAAUF,CAAG,EACxB,OAAO,IAAI,MAAMC,EAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,CAACM,EAAGG,IAAM,IAAI,MAAMT,EAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,CAACM,EAAGC,IAAMR,EAAIQ,CAAC,EAAEE,CAAC,CAAC,CAAC,CACrG,CACA,OAAOD,EAAWL,EAAOK,EAAWT,CAAG,EAAG,CAAC,CAAC,CAC9C,CAOA,SAASW,EAAKX,EAAK,CAIjB,QAHIY,EAAIZ,EAAI,OACRa,EAAItB,EAAID,EAAaD,EAAe,GAAIA,EAAeI,EAAGD,CAAG,CAAC,EAAGoB,CAAC,CAAC,EACnEE,EAAQ,CAAC,EACJN,EAAI,EAAII,EAAGJ,EAAII,EAAGJ,IACzBM,EAAM,KAAKlB,EAAIiB,EAAGvB,EAAaM,EAAIY,EAAG,CAAC,EAAG,CAAC,CAAC,CAAC,EAU/C,QARIO,EAAKnB,EAAI,EAAGC,EAAKC,EAAKc,EAAIA,EAAI,CAAC,CAAC,CAAC,EACjCI,EAAK,CAAC,GAAG,IAAI,MAAMJ,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,CAACL,EAAGC,IAAMnB,EAAeW,EAAIQ,CAAC,EAAGM,EAAMF,EAAI,EAAIJ,CAAC,CAAC,CAAC,EAAG,GAAG,IAAI,MAAMO,EAAKH,CAAC,EAAE,KAAK,CAAC,CAAC,EACnHK,EAAS,CAAC,GAAG,IAAI,MAAML,EAAIA,EAAI,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,CAACL,EAAGC,IAAMlB,EAAa,EAAGwB,EAAMN,CAAC,CAAC,CAAC,EAAG,GAAG,IAAI,MAAMO,GAAMH,EAAIA,EAAI,EAAE,EAAE,KAAK,CAAC,CAAC,EAC1HM,EAAQf,EAAKa,CAAE,EACfG,EAAYhB,EAAKc,CAAM,EACvBG,EAAa,IAAI,MAAML,CAAE,EAAE,KAAK,CAAC,EAAE,IAAI,CAACR,EAAGC,IAAMnB,EAAe6B,EAAMV,CAAC,EAAGW,EAAUX,CAAC,CAAC,CAAC,EACvFa,EAAc3B,EAAUC,EAAKI,EAAOJ,EAAKyB,CAAU,CAAC,CAAC,EAAGL,CAAE,EAC1DO,EAAM,CAAC,EACFC,EAAKX,EAAI,EAAGW,EAAKX,EAAIA,EAAI,EAAGW,IACnCD,EAAI,KAAKjC,EAAegC,EAAYE,CAAE,EAAGT,EAAMS,CAAE,CAAC,CAAC,EAErD,OAAOD,CACT,CAOA,SAASnB,EAAKH,EAAK,CACjB,IAAIwB,EAAMxB,EAAI,OACd,GAAIwB,IAAQ,EAAG,MAAO,CAACxB,EAAI,CAAC,CAAC,EAC7B,GAAIwB,EAAM,IAAM,EAAG,CAEjB,QADIF,EAAM,CAAC,GAAGnB,EAAKH,EAAI,OAAO,CAACO,EAAGC,IAAMA,EAAI,IAAM,CAAC,EAAGgB,EAAM,CAAC,EAAG,GAAGrB,EAAKH,EAAI,OAAO,CAACO,EAAGC,IAAMA,EAAI,IAAM,CAAC,EAAGgB,EAAM,CAAC,CAAC,EAC1GC,EAAI,EAAGA,EAAID,EAAM,EAAGC,IAAK,CAChC,IAAIC,EAAIJ,EAAIG,CAAC,EACTE,EAAItC,EAAeiC,EAAIG,EAAID,EAAM,CAAC,EAAGjC,EAAIF,EAAeA,EAAeG,EAAKC,CAAC,EAAGH,EAAa,CAACmC,EAAGD,CAAG,CAAC,CAAC,CAAC,EAC3GF,EAAIG,CAAC,EAAIrC,EAAUsC,EAAGC,CAAC,EACvBL,EAAIG,EAAID,EAAM,CAAC,EAAIpC,EAAUsC,EAAGrC,EAAe,GAAIsC,CAAC,CAAC,CACvD,CACA,OAAOL,CACT,KAEE,QAAOX,EAAKX,CAAG,CAGnB,CACF,CAAC,EC5HD,IAAI4B,GAAO,OACPC,IAAe,CAAC,QAAS,MAAO,YAAa,MAAM,EAC5CC,GAA4BC,EAAQH,GAAMC,IAAcG,GAAQ,CACzE,GAAI,CACF,MAAAC,EACA,IAAAC,EACA,UAAAC,EACA,KAAAC,CACF,EAAIJ,EAmBJ,OAAOC,EAAML,GAAM,CACjB,iBAAkB,SAAuBS,EAAK,CAC5C,IAAIC,EAAOC,GAASF,CAAG,EAAIA,EAAI,KAAK,EAAIG,GAAUH,CAAG,EACrD,OAAOF,EAAUC,EAAKF,EAAIE,EAAKC,CAAG,CAAC,CAAC,EAAGC,EAAK,OAAO,CAACG,EAAKC,IAASD,EAAMC,EAAM,CAAC,CAAC,CAClF,CACF,CAAC,CACH,CAAC,ECpCD,SAASC,GAAQC,EAAG,CAClB,0BAEA,OAAOD,GAAwB,OAAO,QAArB,YAA2C,OAAO,OAAO,UAA1B,SAAqC,SAAUC,EAAG,CAChG,OAAO,OAAOA,CAChB,EAAI,SAAUA,EAAG,CACf,OAAOA,GAAmB,OAAO,QAArB,YAA+BA,EAAE,cAAgB,QAAUA,IAAM,OAAO,UAAY,SAAW,OAAOA,CACpH,EAAGD,GAAQC,CAAC,CACd,CCPA,SAASC,GAAYC,EAAGC,EAAG,CACzB,GAAgBC,GAAQF,CAAC,GAArB,UAA0B,CAACA,EAAG,OAAOA,EACzC,IAAIG,EAAIH,EAAE,OAAO,WAAW,EAC5B,GAAeG,IAAX,OAAc,CAChB,IAAIC,EAAID,EAAE,KAAKH,EAAGC,GAAK,SAAS,EAChC,GAAgBC,GAAQE,CAAC,GAArB,SAAwB,OAAOA,EACnC,MAAM,IAAI,UAAU,8CAA8C,CACpE,CACA,OAAqBH,IAAb,SAAiB,OAAS,QAAQD,CAAC,CAC7C,CCRA,SAASK,GAAcC,EAAG,CACxB,IAAIC,EAAIC,GAAYF,EAAG,QAAQ,EAC/B,OAAmBG,GAAQF,CAAC,GAArB,SAAyBA,EAAIA,EAAI,EAC1C,CCJA,SAASG,GAAgB,EAAGC,EAAGC,EAAG,CAChC,OAAQD,EAAIE,GAAcF,CAAC,KAAM,EAAI,OAAO,eAAe,EAAGA,EAAG,CAC/D,MAAOC,EACP,WAAY,GACZ,aAAc,GACd,SAAU,EACZ,CAAC,EAAI,EAAED,CAAC,EAAIC,EAAG,CACjB,CCPA,SAASE,GAAQ,EAAGC,EAAG,CAAE,IAAIC,EAAI,OAAO,KAAK,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIC,EAAI,OAAO,sBAAsB,CAAC,EAAGF,IAAME,EAAIA,EAAE,OAAO,SAAUF,EAAG,CAAE,OAAO,OAAO,yBAAyB,EAAGA,CAAC,EAAE,UAAY,CAAC,GAAIC,EAAE,KAAK,MAAMA,EAAGC,CAAC,CAAG,CAAE,OAAOD,CAAG,CAC9P,SAASE,IAAc,EAAG,CAAE,QAASH,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIC,EAAY,UAAUD,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAC,EAAGA,EAAI,EAAID,GAAQ,OAAOE,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAUD,EAAG,CAAEI,GAAgB,EAAGJ,EAAGC,EAAED,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiB,EAAG,OAAO,0BAA0BC,CAAC,CAAC,EAAIF,GAAQ,OAAOE,CAAC,CAAC,EAAE,QAAQ,SAAUD,EAAG,CAAE,OAAO,eAAe,EAAGA,EAAG,OAAO,yBAAyBC,EAAGD,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAO,CAAG,CAGtb,IAAIK,IAAO,WACPC,IAAe,CAAC,QAAS,MAAO,WAAY,WAAY,SAAU,MAAO,MAAO,MAAO,aAAc,aAAc,SAAU,UAAW,SAAU,YAAa,YAAY,EACpKC,GAAgCC,EAAQH,IAAMC,IAAcG,GAAQ,CAC7E,GAAI,CACF,MAAAC,EACA,IAAAC,EACA,SAAAC,EACA,SAAAC,EACA,OAAAC,EACA,IAAAC,EACA,IAAAC,EACA,IAAAC,EACA,WAAAC,EACA,WAAAC,EACA,OAAAC,EACA,QAAAC,EACA,OAAAC,EACA,UAAAC,EACA,WAAAC,CACF,EAAIf,EAsDJ,SAASgB,EAAIC,EAAgB,CAG3B,OAAO,SAAUC,EAAGC,EAAOC,EAAIC,EAAS,CAEtC,IAAIC,EAAa,EAAEH,EAAM,SAAW,IAAMA,EAAM,MAAMI,CAAU,GAAKJ,EAAM,MAAMK,EAAM,IACvF,GAAIF,EACF,MAAM,IAAI,MAAM,4EAA4E,EAE9F,IAAIG,EAAKN,EAAM,CAAC,EACZO,EAAKP,EAAM,CAAC,EACZQ,EAAahB,EAAOe,EAAID,CAAE,EAC1BG,EAAYP,EAAQ,UACxB,GAAIO,IAAc,QAAa,CAACnB,EAAWmB,CAAS,EAClD,MAAM,IAAI,MAAM,8BAA8B,EAEhD,IAAIC,GAAUR,EAAQ,QACtB,GAAIQ,KAAY,QAAa,CAACpB,EAAWoB,EAAO,EAC9C,MAAM,IAAI,MAAM,4BAA4B,EAE9C,IAAIC,EAAUT,EAAQ,QACtB,GAAIS,GAAWpB,EAAWoB,CAAO,EAC/B,MAAM,IAAI,MAAM,oCAAoC,EAEtD,IAAIC,GAAW,CAACN,EAAIC,EAAIE,EAAWE,EAASD,EAAO,EAAE,OAAOG,IAAKA,KAAM,MAAS,EAChF,GAAI,EAAED,GAAS,MAAMR,CAAU,GAAKQ,GAAS,MAAMP,EAAM,GACvD,MAAM,IAAI,MAAM,8CAA8C,EAoBhE,QAlBIS,GAAQ,EACRC,GAAMb,EAAQ,IAAMA,EAAQ,IAAM,KAClCc,GAAWd,EAAQ,SAAWA,EAAQ,SAAW,GACjDe,GAAWf,EAAQ,SAAWA,EAAQ,SAAW,EACjDgB,GAAUhB,EAAQ,QAAUA,EAAQ,QAAU,IAC9CiB,GAAgB,CAACb,EAAIC,EAAI,GAAGN,EAAIS,GAASC,CAAO,EAAE,KAAKS,EAAW,EAClE,CAACC,GAAGC,GAAGC,GAAGC,EAAE,EAAIL,GAAgB,CAACxB,EAAUG,EAAe,CAAC,EAAGH,EAAUG,EAAe,CAAC,EAAGH,EAAUG,EAAe,CAAC,EAAGH,EAAUG,EAAe,EAAE,CAAC,EAAI,CAACA,EAAe,EAAGA,EAAe,EAAGA,EAAe,EAAGA,EAAe,EAAE,EAChO2B,GAAIhB,EAAYD,EAAaC,EAAYb,EAAWa,CAAS,EAAIvB,EAAOF,EAASuB,EAAID,CAAE,EAAGQ,EAAK,EAC/FzC,GAAI,CAACiC,CAAE,EACPoB,GAAI,CAACzB,CAAE,EAEP0B,GAAS3C,EAASuC,GAAGC,EAAE,EAEvBI,GAAI,EACJC,GAAO,EACPC,GAAUC,EAAevB,CAAU,EACnCwB,GAAWC,EAAgBzB,CAAU,EAElCsB,GAAQzD,GAAEuD,EAAC,EAAGrB,CAAE,GAAG,CACxB,IAAI2B,GAAI,CAAC,EAGTT,GAAIO,GAAS3D,GAAEuD,EAAC,EAAGrB,EAAIkB,EAAC,EAGxBS,GAAE,KAAKnC,EAAE1B,GAAEuD,EAAC,EAAGF,GAAEE,EAAC,CAAC,CAAC,EAGpB,QAASO,GAAI,EAAGA,GAAIb,GAAE,OAAQ,EAAEa,GAC9BD,GAAE,KAAKnC,EAAEhB,EAAIV,GAAEuD,EAAC,EAAG3C,EAASqC,GAAEa,EAAC,EAAGV,EAAC,CAAC,EAAG1C,EAAI2C,GAAEE,EAAC,EAAG3C,EAASwC,GAAGJ,GAAEc,EAAC,EAAGD,EAAC,CAAC,CAAC,CAAC,EAIzE,IAAIE,GAAKjD,EAAIE,EAAID,EAAIH,EAAS0C,GAAQO,EAAC,EAAGG,IAAKhC,GAAOgC,EAAC,EAAIA,GAAE,MAAQA,EAAC,CAAC,CAAC,EACpED,GAAKrB,IAAOA,GAAMqB,GAAK,EAAI,IAE7B/D,GAAE,KAAKU,EAAIV,GAAEuD,EAAC,EAAGH,EAAC,CAAC,EACnBC,GAAE,KAAK3C,EAAI2C,GAAEE,EAAC,EAAG3C,EAASwC,GAAGF,GAAGW,EAAC,CAAC,CAAC,EACnCN,MAIF,IAAIU,GAAQ,KAAQvB,GAAMqB,MAAQ,EAAI,GActC,GAbI3C,EAAQ6C,GAAOtB,EAAQ,EACzBsB,GAAQtB,GACCxB,EAAO8C,GAAOrB,EAAQ,IAC/BqB,GAAQrB,IAEVqB,GAAQnB,GAAgBxB,EAAU2C,EAAK,EAAIA,GAC3Cb,GAAIxC,EAASwC,GAAGa,EAAK,EACjB5B,IAAWlB,EAAOH,EAAIoC,EAAC,EAAGf,EAAO,EACnCe,GAAIjB,EAAaE,GAAUd,EAAWc,EAAO,EACpCC,GAAWlB,EAAQJ,EAAIoC,EAAC,EAAGd,CAAO,IAC3Cc,GAAIjB,EAAaG,EAAUf,EAAWe,CAAO,GAE/CkB,KACIA,GAAOX,GACT,MAAM,IAAI,MAAM,4DAA4D,CAEhF,CACA,MAAO,CACL,EAAA7C,GACA,EAAAqD,EACF,CACF,CACF,CACA,SAASa,EAAMxC,EAAGC,EAAOC,EAAIC,EAAS,CAIpC,IAAImB,EAAI,CAAC,CAAC,EAAG,CAAC,EAAK,EAAG,CAAC,EAAG,GAAK,EAAG,CAAC,kBAAO,kBAAO,iBAAK,CAAC,EACnDC,EAAI,CAAC,KAAM,EAAI,EAAG,EAAI,EAAG,CAAC,EAC1BC,EAAI,CAAC,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,CAAC,EAC3BC,EAAK,CAAC,EAAI,GAAI,EAAI,EAAG,EAAI,EAAG,EAAI,CAAC,EACjC1B,EAAiB,CACnB,EAAAuB,EACA,EAAAC,EACA,EAAAC,EACA,GAAAC,CACF,EAGA,OAAO3B,EAAIC,CAAc,EAAEC,EAAGC,EAAOC,EAAIC,CAAO,CAClD,CACA,SAASsC,EAAMzC,EAAGC,EAAOC,EAAIC,EAAS,CAIpC,IAAImB,EAAI,CAAC,CAAC,EAAG,CAAC,EAAK,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,kBAAS,oBAAU,kBAAM,EAAG,CAAC,mBAAc,oBAAe,kBAAc,kBAAU,EAAG,CAAC,mBAAa,oBAAW,kBAAc,kBAAU,kBAAa,EAAG,CAAC,mBAAU,EAAG,mBAAY,kBAAW,kBAAc,kBAAO,CAAC,EACtPC,EAAI,CAAC,KAAM,EAAI,EAAG,EAAI,GAAI,EAAI,EAAG,EAAI,EAAG,EAAG,CAAC,EAC5CC,EAAI,CAAC,GAAK,IAAK,EAAG,IAAM,KAAM,IAAM,IAAK,MAAQ,KAAM,GAAK,GAAI,CAAC,EACjEC,EAAK,CAAC,KAAO,MAAO,EAAG,KAAO,MAAO,IAAM,IAAK,OAAS,OAAQ,IAAM,KAAM,EAAI,EAAE,EACnF1B,EAAiB,CACnB,EAAAuB,EACA,EAAAC,EACA,EAAAC,EACA,GAAAC,CACF,EAGA,OAAO3B,EAAIC,CAAc,EAAEC,EAAGC,EAAOC,EAAIC,CAAO,CAClD,CACA,SAASuC,EAAU1C,EAAGC,EAAOC,EAAIyC,EAAK,CACpC,IAAIC,EAASD,EAAI,OAASA,EAAI,OAAS,OACnCE,EAAU,CACZ,KAAML,EACN,KAAMC,CACR,EACA,GAAIG,EAAO,YAAY,IAAKC,EAAS,CACnC,IAAIC,EAAgBtE,IAAc,CAAC,EAAGmE,CAAG,EACzC,cAAOG,EAAc,OACdD,EAAQD,EAAO,YAAY,CAAC,EAAE5C,EAAGC,EAAOC,EAAI4C,CAAa,CAClE,KAAO,CAEL,IAAIC,EAAoB,OAAO,KAAKF,CAAO,EAAE,IAAI/B,GAAK,IAAK,OAAOA,EAAG,GAAI,CAAC,EAEtEkC,EAAyB,GAAG,OAAOD,EAAkB,MAAM,EAAG,EAAE,EAAE,KAAK,IAAI,EAAG,OAAO,EAAE,OAAOA,EAAkB,MAAM,EAAE,CAAC,EAC7H,MAAM,IAAI,MAAM,uBAAwB,OAAOH,EAAQ,2BAA4B,EAAE,OAAOI,CAAsB,CAAC,CACrH,CACF,CACA,SAAShB,EAAevB,EAAY,CAElC,OAAOA,EAAaf,EAAUD,CAChC,CACA,SAASyC,EAAgBzB,EAAY,CACnC,IAAIwC,EAAcxC,EAAahB,EAASC,EACxC,OAAO,SAAUpB,EAAGkC,EAAIkB,EAAG,CACzB,IAAIwB,EAAOlE,EAAIV,EAAGoD,CAAC,EACnB,OAAOuB,EAAYC,EAAM1C,CAAE,EAAIvB,EAASuB,EAAIlC,CAAC,EAAIoD,CACnD,CACF,CACA,SAASrB,EAAWS,EAAG,CAErB,OAAOO,GAAYP,CAAC,GAAKqC,GAASrC,CAAC,CACrC,CACA,SAASsC,EAAgBpD,EAAGqD,EAAGnD,EAAIC,EAAS,CAE1C,IAAImD,EAAMZ,EAAU1C,EAAGqD,EAAE,QAAQ,EAAGnD,EAAG,QAAQ,EAAGC,CAAO,EACzD,MAAO,CACL,EAAGR,EAAO2D,EAAI,CAAC,EACf,EAAG3D,EAAO2D,EAAI,CAAC,CACjB,CACF,CACA,OAAOvE,EAAM,WAAY,CACvB,iCAAkC2D,EAClC,mCAAoCU,EACpC,yBAA0B,CAACpD,EAAGqD,EAAGnD,IAAOwC,EAAU1C,EAAGqD,EAAGnD,EAAI,CAAC,CAAC,EAC9D,2BAA4B,CAACF,EAAGqD,EAAGnD,IAAOkD,EAAgBpD,EAAGqD,EAAGnD,EAAI,CAAC,CAAC,EACtE,6CAA8C,CAACF,EAAGqD,EAAGnD,IAAO,CAC1D,IAAIoD,EAAMZ,EAAU1C,EAAGqD,EAAG,CAACnD,CAAE,EAAG,CAAC,CAAC,EAClC,MAAO,CACL,EAAGoD,EAAI,EACP,EAAGA,EAAI,EAAE,IAAIC,GAAKA,EAAE,CAAC,CAAC,CACxB,CACF,EACA,8CAA+C,CAACvD,EAAGqD,EAAGnD,IAAO,CAC3D,IAAIoD,EAAMZ,EAAU1C,EAAGqD,EAAE,QAAQ,EAAG,CAACnD,CAAE,EAAG,CAAC,CAAC,EAC5C,MAAO,CACL,EAAGP,EAAO2D,EAAI,CAAC,EACf,EAAG3D,EAAO2D,EAAI,EAAE,IAAIC,GAAKA,EAAE,CAAC,CAAC,CAAC,CAChC,CACF,EACA,qDAAsD,CAACvD,EAAGqD,EAAGnD,EAAIC,IAAY,CAC3E,IAAImD,EAAMZ,EAAU1C,EAAGqD,EAAG,CAACnD,CAAE,EAAGC,CAAO,EACvC,MAAO,CACL,EAAGmD,EAAI,EACP,EAAGA,EAAI,EAAE,IAAIC,GAAKA,EAAE,CAAC,CAAC,CACxB,CACF,EACA,sDAAuD,CAACvD,EAAGqD,EAAGnD,EAAIC,IAAY,CAC5E,IAAImD,EAAMZ,EAAU1C,EAAGqD,EAAE,QAAQ,EAAG,CAACnD,CAAE,EAAGC,CAAO,EACjD,MAAO,CACL,EAAGR,EAAO2D,EAAI,CAAC,EACf,EAAG3D,EAAO2D,EAAI,EAAE,IAAIC,GAAKA,EAAE,CAAC,CAAC,CAAC,CAChC,CACF,CACF,CAAC,CACH,CAAC,ECtRD,IAAIC,IAAO,MACPC,IAAe,CAAC,OAAO,EAChBC,GAA2BC,EAAQH,IAAMC,IAAcG,GAAQ,CACxE,GAAI,CACF,MAAAC,CACF,EAAID,EA4BJ,OAAOC,EAAM,OAAQ,CACnB,OAAQ,SAAgBC,EAAG,CACzB,IAAIC,EAAI,KAAK,IAAID,CAAC,EAClB,OAAIC,GAAKC,IACAC,GAAKH,CAAC,EAEXC,GAAKG,IACAD,GAAKH,CAAC,EAAIK,EAAKJ,CAAC,EAErBA,GAAK,EACAE,GAAKH,CAAC,GAAK,EAAIM,EAAML,CAAC,GAExBE,GAAKH,CAAC,GAAK,EAAIO,EAAMN,CAAC,EAC/B,EACA,iBAAkBF,EAAM,YAAYS,GAAQC,GAAKC,GAAQD,EAAGD,CAAI,CAAC,CAInE,CAAC,EAQD,SAASH,EAAKJ,EAAG,CACf,IAAIU,EAAMV,EAAIA,EACVW,EAAOC,GAAE,CAAC,EAAE,CAAC,EAAIF,EACjBG,EAAOH,EACPI,EACJ,IAAKA,EAAI,EAAGA,EAAI,EAAGA,GAAK,EACtBH,GAAQA,EAAOC,GAAE,CAAC,EAAEE,CAAC,GAAKJ,EAC1BG,GAAQA,EAAOE,GAAE,CAAC,EAAED,CAAC,GAAKJ,EAE5B,OAAOV,GAAKW,EAAOC,GAAE,CAAC,EAAE,CAAC,IAAMC,EAAOE,GAAE,CAAC,EAAE,CAAC,EAC9C,CASA,SAASV,EAAML,EAAG,CAChB,IAAIW,EAAOC,GAAE,CAAC,EAAE,CAAC,EAAIZ,EACjBa,EAAOb,EACPc,EACJ,IAAKA,EAAI,EAAGA,EAAI,EAAGA,GAAK,EACtBH,GAAQA,EAAOC,GAAE,CAAC,EAAEE,CAAC,GAAKd,EAC1Ba,GAAQA,EAAOE,GAAE,CAAC,EAAED,CAAC,GAAKd,EAE5B,IAAIgB,GAAUL,EAAOC,GAAE,CAAC,EAAE,CAAC,IAAMC,EAAOE,GAAE,CAAC,EAAE,CAAC,GAC1CL,EAAM,SAASV,EAAI,EAAE,EAAI,GACzBiB,GAAOjB,EAAIU,IAAQV,EAAIU,GAC3B,OAAO,KAAK,IAAI,CAACA,EAAMA,CAAG,EAAI,KAAK,IAAI,CAACO,CAAG,EAAID,CACjD,CAWA,SAASV,EAAMN,EAAG,CAChB,IAAIU,EAAM,GAAKV,EAAIA,GACfW,EAAOC,GAAE,CAAC,EAAE,CAAC,EAAIF,EACjBG,EAAOH,EACPI,EACJ,IAAKA,EAAI,EAAGA,EAAI,EAAGA,GAAK,EACtBH,GAAQA,EAAOC,GAAE,CAAC,EAAEE,CAAC,GAAKJ,EAC1BG,GAAQA,EAAOE,GAAE,CAAC,EAAED,CAAC,GAAKJ,EAE5B,IAAIM,EAASN,GAAOC,EAAOC,GAAE,CAAC,EAAE,CAAC,IAAMC,EAAOE,GAAE,CAAC,EAAE,CAAC,GACpDC,GAAUE,IAAQF,GAAUhB,EAC5BU,EAAM,SAASV,EAAI,EAAE,EAAI,GACzB,IAAIiB,GAAOjB,EAAIU,IAAQV,EAAIU,GAC3B,OAAO,KAAK,IAAI,CAACA,EAAMA,CAAG,EAAI,KAAK,IAAI,CAACO,CAAG,EAAID,CACjD,CACF,CAAC,EAMGb,IAAS,OAMTe,IAAQ,kBAORN,GAAI,CAAC,CAAC,mBAAwB,mBAAwB,iBAAwB,mBAAwB,kBAAsB,EAAG,CAAC,kBAAwB,kBAAwB,kBAAwB,kBAAwB,iBAAwB,mBAAwB,mBAAwB,mBAAwB,qBAAsB,EAAG,CAAC,mBAAwB,mBAAwB,mBAAwB,oBAAwB,qBAAwB,mBAAsB,CAAC,EAOzeG,GAAI,CAAC,CAAC,mBAAwB,mBAAwB,mBAAwB,iBAAsB,EAAG,CAAC,mBAAwB,kBAAwB,kBAAwB,mBAAwB,mBAAwB,kBAAwB,mBAAwB,kBAAsB,EAAG,CAAC,kBAAwB,mBAAwB,kBAAwB,mBAAwB,oBAAsB,CAAC,EAOjad,IAAU,KAAK,IAAI,EAAG,EAAE,ECzJ5B,IAAIkB,GAAO,OACPC,IAAe,CAAC,QAAS,SAAU,WAAY,MAAO,SAAU,YAAa,QAAS,YAAa,aAAc,QAAS,MAAO,WAAY,MAAO,WAAY,aAAc,IAAI,EAC3KC,GAA4BC,EAAQH,GAAMC,IAAcG,GAAQ,CACzE,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,SAAAC,EACA,IAAAC,EACA,OAAAC,EACA,UAAAC,EACA,MAAAC,EACA,UAAAC,EACA,WAAAC,EACA,MAAAC,EACA,IAAAC,EACA,SAAAC,EACA,IAAAC,EACA,QAAAC,EACA,UAAWC,EACX,GAAAC,CACF,EAAIhB,EA4BJ,OAAOC,EAAML,GAAM,CACjB,OAAQqB,GAAKC,EAAYD,EAAGE,GAASA,EAAO,IAAM,EAAE,EACpD,UAAWF,GAAKC,EAAYD,EAAGE,GAAS,IAAIJ,EAAWI,CAAK,EAAG,IAEtD,KAAK,IAAI,KAAK,MAAMjB,EAAO,MAAM,CAAC,CAC1C,EACD,QAASkB,CACX,CAAC,EAQD,SAASF,EAAYD,EAAGI,EAAaC,EAAiB,CACpD,OAAIf,EAAMU,EAAG,CAAC,EACLI,EAAY,GAAI,EAErBd,EAAMU,EAAG,CAAC,EACLI,EAAY,GAAG,EAEnB,SAASJ,CAAC,EAGRM,EAAKN,EAAGI,EAAaC,EAAiBL,GAAKA,CAAC,EAF1CR,EAAWQ,CAAC,EAAII,EAAY,GAAG,EAAIA,EAAY,CAAC,CAG3D,CAMA,SAASD,EAAYH,EAAG,CACtB,OAAIA,EAAE,KAAO,GAAKA,EAAE,KAAO,EAClB,IAAIH,EAAQ,GAAI,EAErBG,EAAE,KAAO,EACJ,IAAIH,EAAQ,IAAK,GAAG,EAEzBG,EAAE,KAAO,KAAYA,EAAE,KAAO,EACzB,IAAIH,EAAQ,CAAC,EAElBG,EAAE,KAAO,KAAYA,EAAE,KAAO,KACzB,IAAIH,EAAQ,IAAK,GAAG,EAEtBS,EAAKN,EAAGE,GAASA,EAAOF,GAAK,KAAK,MAAM,IAAM,GAAK,GAAM,KAAK,IAAIA,EAAE,EAAE,CAAC,EAAGA,GAAKA,EAAE,EAAE,CAC5F,CASA,SAASM,EAAKN,EAAGI,EAAaC,EAAiBE,EAAO,CACpD,IAAIC,EAAIH,EAAgBL,CAAC,EACzB,GAAIO,EAAMP,CAAC,EAAI,EAAEQ,EAAI,GAAK,EACxB,OAAOC,EAAET,EAAGI,EAAYI,CAAC,EAAGJ,CAAW,EAGvC,IAAIM,EAAIxB,EAASC,EAAI,EAAGa,CAAC,EAAGb,EAAIiB,EAAYL,CAAE,EAAGJ,EAASK,EAAG,CAAC,CAAC,CAAC,EAChE,OAAAU,EAAIxB,EAASwB,EAAGhB,EAAIR,EAASE,EAAOgB,EAAYL,CAAE,EAAG,CAAC,EAAGC,CAAC,CAAC,CAAC,EAC5DU,EAAIxB,EAASwB,EAAGjB,EAAME,EAAS,EAAGK,CAAC,CAAC,CAAC,EAC9Bd,EAASwB,EAAGJ,EAAKX,EAAS,EAAGK,CAAC,EAAGI,EAAaC,EAAiBE,CAAK,CAAC,CAEhF,CAQA,SAASI,EAAEC,EAAGJ,EAAG,CAEf,QADIK,EAAID,EACCE,EAAIF,EAAGrB,EAAUuB,EAAGN,CAAC,EAAGM,EAAIlB,EAAIkB,EAAG,CAAC,EAAG,CAC9C,IAAIC,EAAS3B,EAAOF,EAASG,EAAUO,EAAIY,EAAGb,EAASmB,EAAG,CAAC,CAAC,CAAC,EAAG3B,EAAI,EAAG2B,CAAC,CAAC,EAAG5B,EAASG,EAAUM,EAASa,EAAGM,CAAC,CAAC,EAAGzB,EAAUH,EAAS,EAAG4B,CAAC,CAAC,CAAC,CAAC,EAC1ID,EAAIjB,EAAIiB,EAAGE,CAAM,CACnB,CACA,OAAO7B,EAASsB,EAAGK,CAAC,CACtB,CASA,SAASJ,EAAET,EAAGQ,EAAGJ,EAAa,CAG5B,QAFIM,EAAItB,EAAO,EAAGF,EAASyB,EAAEP,EAAY,CAAC,EAAGI,CAAC,EAAGb,EAAS,EAAGR,EAAI,EAAGQ,EAAS,EAAGK,CAAC,CAAC,CAAC,CAAC,CAAC,EACjFa,EAAIT,EAAY,CAAC,EACZQ,EAAIR,EAAY,CAAC,EAAGb,EAAUqB,EAAGJ,CAAC,EAAGI,EAAIhB,EAAIgB,EAAG,CAAC,EACxDC,EAAIjB,EAAIiB,EAAGzB,EAAOF,EAAU,OAAQ0B,EAAI,GAAID,EAAEC,EAAGJ,CAAC,CAAC,EAAGrB,EAAIyB,EAAGZ,CAAC,CAAC,CAAC,EAElE,OAAOd,EAASwB,EAAGG,CAAC,CACtB,CACF,CAAC,ECjJD,IAAIG,GAAO,OACPC,IAAe,CAAC,QAAS,QAAS,WAAW,EACtCC,GAA4BC,EAAQH,GAAMC,IAAcG,GAAQ,CACzE,GAAI,CACF,MAAAC,EACA,MAAAC,EACA,UAAAC,CACF,EAAIH,EA0BJ,OAAOC,EAAML,GAAM,CACjB,iBAAkBQ,EAClB,MAAO,SAAWC,EAAM,CACtB,OAAOD,EAAMC,CAAI,CACnB,CACF,CAAC,EAQD,SAASD,EAAME,EAAQ,CACrBA,EAASC,GAAQD,EAAO,QAAQ,CAAC,EACjC,IAAIE,EAAMF,EAAO,OACjB,GAAIE,IAAQ,EACV,MAAM,IAAI,MAAM,yCAAyC,EAK3D,QAHIC,EAAQ,CAAC,EACTC,EAAO,CAAC,EACRC,EAAM,EACDC,EAAI,EAAGA,EAAIN,EAAO,OAAQM,IAAK,CACtC,IAAIC,EAAQP,EAAOM,CAAC,EACpB,GAAIT,EAAUU,CAAK,GAAKX,EAAMW,CAAK,EACjC,MAAM,IAAI,MAAM,yDAAyD,EAErEA,KAASJ,IACbA,EAAMI,CAAK,EAAI,GAEjBJ,EAAMI,CAAK,IACPJ,EAAMI,CAAK,IAAMF,EACnBD,EAAK,KAAKG,CAAK,EACNJ,EAAMI,CAAK,EAAIF,IACxBA,EAAMF,EAAMI,CAAK,EACjBH,EAAO,CAACG,CAAK,EAEjB,CACA,OAAOH,CACT,CACF,CAAC,EC/DM,SAASI,GAAoBC,EAAKC,EAAQC,EAAO,CAEtD,IAAIC,EACJ,OAAI,OAAOH,CAAG,EAAE,SAAS,iBAAiB,GACxCG,EAAU,UAAU,OAAS,EAAI,WAAaC,GAAOF,CAAK,EAAI,YAAc,KAAK,UAAUA,CAAK,EAAI,IAAM,WAAaF,EAAI,KAAK,OAAS,IAClI,IAAI,UAAU,oBAAsBC,EAAS,gCAAkCE,CAAO,GAE3F,OAAOH,CAAG,EAAE,SAAS,iBAAiB,GACxCG,EAAU,UAAU,OAAS,EAAI,WAAaC,GAAOF,CAAK,EAAI,YAAc,KAAK,UAAUA,CAAK,EAAI,IAAM,GACnG,IAAI,UAAU,oBAAsBD,EAAS,wDAA0DE,CAAO,GAEhHH,CACT,CCpBA,IAAIK,GAAO,OACPC,IAAe,CAAC,QAAS,SAAU,iBAAkB,SAAS,EACvDC,GAA4BC,EAAQH,GAAMC,IAAcG,GAAQ,CACzE,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,eAAAC,EACA,QAAAC,CACF,EAAIJ,EA0BJ,OAAOC,EAAML,GAAM,CAEjB,iBAAkBS,EAElB,qCAAsC,SAAyCC,EAAOC,EAAK,CAEzF,MAAM,IAAI,MAAM,mCAAmC,CAErD,EAEA,MAAO,SAAWC,EAAM,CACtB,OAAOH,EAAMG,CAAI,CACnB,CACF,CAAC,EAQD,SAASH,EAAMC,EAAO,CACpB,IAAIG,EAaJ,GAZAC,GAAYJ,EAAO,SAAUK,EAAO,CAClC,GAAI,CACFF,EAAOA,IAAS,OAAYE,EAAQR,EAAeM,EAAME,CAAK,CAChE,OAASC,EAAK,CACZ,MAAMC,GAAoBD,EAAK,OAAQD,CAAK,CAC9C,CACF,CAAC,EAGG,OAAOF,GAAS,WAClBA,EAAOL,EAAQK,EAAMK,GAAeL,EAAMP,CAAM,CAAC,GAE/CO,IAAS,OACX,MAAM,IAAI,MAAM,yCAAyC,EAE3D,OAAOA,CACT,CACF,CAAC,EC5ED,IAAIM,GAAO,SACPC,IAAe,CAAC,OAAO,EAChBC,GAA8BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC3E,GAAI,CACF,MAAAC,CACF,EAAID,EAuHJ,OAAOC,EAAML,GAAM,CACjB,IAAKM,GACL,8CAA+CA,EACjD,CAAC,CACH,CAAC,ECjID,IAAIC,GAAO,MACPC,IAAe,CAAC,QAAS,QAAQ,EAuB1BC,GAAYC,EAAQH,GAAMC,IAAcG,GAAQ,CACzD,GAAI,CACF,MAAAC,EACA,OAAAC,CACF,EAAIF,EACJ,OAAOC,EAAML,GAAM,CACjB,qBAAsB,SAA2BO,EAAG,CAClD,OAAOD,EAAOC,EAAG,CACf,SAAU,KACZ,CAAC,CACH,EACA,yCAA0C,SAA6CA,EAAGC,EAAU,CAClG,OAAOF,EAAOC,EAAG,CACf,SAAU,MACV,SAAAC,CACF,CAAC,CACH,CACF,CAAC,CACH,CAAC,EC1CD,IAAIC,GAAO,MACPC,IAAe,CAAC,QAAS,QAAQ,EAwB1BC,GAAYC,EAAQH,GAAMC,IAAcG,GAAQ,CACzD,GAAI,CACF,MAAAC,EACA,OAAAC,CACF,EAAIF,EACJ,OAAOC,EAAML,GAAM,CACjB,qBAAsB,SAA2BO,EAAG,CAClD,OAAOD,EAAOC,EAAG,CACf,SAAU,KACZ,CAAC,CACH,EACA,yCAA0C,SAA6CA,EAAGC,EAAU,CAClG,OAAOF,EAAOC,EAAG,CACf,SAAU,MACV,SAAAC,CACF,CAAC,CACH,CACF,CAAC,CACH,CAAC,EC3CD,IAAIC,GAAO,MACPC,IAAe,CAAC,QAAS,QAAQ,EAsB1BC,GAAYC,EAAQH,GAAMC,IAAcG,GAAQ,CACzD,GAAI,CACF,MAAAC,EACA,OAAAC,CACF,EAAIF,EACJ,OAAOC,EAAML,GAAM,CACjB,qBAAsB,SAA2BO,EAAG,CAClD,OAAOD,EAAOC,EAAG,CACf,SAAU,KACZ,CAAC,CACH,EACA,yCAA0C,SAA6CA,EAAGC,EAAU,CAClG,OAAOF,EAAOC,EAAG,CACf,SAAU,MACV,SAAAC,CACF,CAAC,CACH,CACF,CAAC,CACH,CAAC,EC1CM,IAAIC,GAAgB,cCI3B,IAAIC,GAAO,QACPC,IAAe,CAAC,OAAO,EAChBC,GAA6BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC1E,GAAI,CACF,MAAAC,CACF,EAAID,EA6CJ,OAAOC,EAAML,GAAM,CAEjB,yBAA0BM,GAC1B,0CAA2CA,EAC7C,CAAC,CACH,CAAC,EAUD,SAASA,GAAOC,EAAUC,EAAQC,EAAS,CACzC,OAAOF,EAAS,QAAQG,GAAe,SAAUC,EAAUC,EAAK,CAC9D,IAAIC,EAAOD,EAAI,MAAM,GAAG,EACpBE,EAAQN,EAAOK,EAAK,MAAM,CAAC,EAI/B,IAHIC,IAAU,QAAaA,EAAM,WAC/BA,EAAQA,EAAM,QAAQ,GAEjBD,EAAK,QAAUC,IAAU,QAAW,CACzC,IAAIC,EAAIF,EAAK,MAAM,EACnBC,EAAQC,EAAID,EAAMC,CAAC,EAAID,EAAQ,GACjC,CACA,OAAIA,IAAU,OACPE,GAASF,CAAK,EAGVA,EAFAG,GAAOH,EAAOL,CAAO,EAKzBE,CACT,CAAC,CACH,CCvFA,IAAIO,GAAO,KACPC,IAAe,CAAC,QAAS,SAAU,QAAQ,EACpCC,GAA0BC,EAAQH,GAAMC,IAAcG,GAAQ,CACvE,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,OAAAC,CACF,EAAIH,EACAI,EAAuBC,GAA2B,CACpD,MAAAJ,EACA,OAAAC,EACA,OAAAC,CACF,CAAC,EA0BD,OAAOF,EAAML,GAAM,CACjB,sBAAuB,CAACU,EAAGC,IAASD,EAAE,GAAGC,CAAI,CAC/C,EAAGH,EAAqB,CACtB,GAAI,EACN,CAAC,CAAC,CACJ,CAAC,EC3CD,IAAII,GAAO,UACPC,IAAe,CAAC,OAAO,EAChBC,GAA+BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC5E,GAAI,CACF,MAAAC,CACF,EAAID,EA6BJ,OAAOC,EAAML,GAAM,CACjB,OAAQ,SAAgBM,EAAG,CACzB,GAAIA,GAAK,EACP,OAAOA,EAAI,EAEb,GAAIA,EAAI,IAAM,GAAKA,EAAI,IAAM,EAC3B,MAAO,GAET,QAAS,EAAI,EAAG,EAAI,GAAKA,EAAG,GAAK,EAC/B,GAAIA,EAAI,IAAM,GAAKA,GAAK,EAAI,KAAO,EACjC,MAAO,GAGX,MAAO,EACT,EACA,OAAQ,SAAgBA,EAAG,CACzB,GAAIA,GAAK,GACP,OAAOA,EAAI,GAEb,GAAIA,EAAI,KAAO,IAAMA,EAAI,KAAO,GAC9B,MAAO,GAET,QAAS,EAAI,GAAI,EAAI,GAAKA,EAAG,GAAK,GAChC,GAAIA,EAAI,IAAM,IAAMA,GAAK,EAAI,MAAQ,GACnC,MAAO,GAGX,MAAO,EACT,EACA,UAAW,SAAmB,EAAG,CAC/B,GAAI,EAAE,IAAI,CAAC,EAAG,OAAO,EAAE,GAAG,CAAC,EAC3B,GAAI,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAK,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAG,MAAO,GAC7C,GAAI,EAAE,GAAG,KAAK,IAAI,EAAG,EAAE,CAAC,EAAG,CAEzB,QADIA,EAAI,EAAE,SAAS,EACVC,EAAI,EAAGA,EAAIA,GAAKD,EAAGC,GAAK,EAC/B,GAAID,EAAIC,IAAM,GAAKD,GAAKC,EAAI,KAAO,EACjC,MAAO,GAGX,MAAO,EACT,CACA,SAASC,EAAOC,EAAMC,EAAUC,EAAS,CAGvC,QADIC,EAAc,EACX,CAACF,EAAS,GAAG,CAAC,GACfA,EAAS,IAAI,CAAC,EAAE,GAAG,CAAC,GACtBA,EAAWA,EAAS,IAAI,CAAC,EACzBD,EAAOA,EAAK,IAAIA,CAAI,EAAE,IAAIE,CAAO,IAEjCD,EAAWA,EAAS,IAAI,CAAC,EACzBE,EAAcH,EAAK,IAAIG,CAAW,EAAE,IAAID,CAAO,GAGnD,OAAOC,CACT,CAGA,IAAIC,EAAU,EAAE,YAAY,MAAM,CAChC,UAAW,EAAE,QAAQ,CAAC,EAAE,OAAS,CACnC,CAAC,EACD,EAAI,IAAIA,EAAQ,CAAC,EAGjB,QAFIC,EAAI,EACJC,EAAI,EAAE,IAAI,CAAC,EACRA,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAClBA,EAAIA,EAAE,IAAI,CAAC,EACXD,GAAK,EAEP,IAAIE,EAAQ,KAEZ,GAAI,EAAE,GAAG,2BAA2B,EAClCA,EAAQ,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAE,OAAOV,GAAKA,EAAI,CAAC,MACrE,CACL,IAAIW,EAAM,KAAK,IAAI,EAAE,SAAS,EAAI,EAAG,KAAK,MAAM,EAAI,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,OAAS,KAAK,IAAI,EAAE,EAAG,CAAC,CAAC,CAAC,EACpGD,EAAQ,CAAC,EACT,QAASE,EAAK,EAAGA,GAAMD,EAAKC,GAAM,EAChCF,EAAM,KAAKC,CAAG,CAElB,CACA,QAASE,EAAM,EAAGA,EAAMH,EAAM,OAAQG,GAAO,EAAG,CAC9C,IAAIC,EAAIJ,EAAMG,CAAG,EACbE,EAAMb,EAAO,EAAE,IAAI,CAAC,EAAE,IAAIY,CAAC,EAAGL,EAAG,CAAC,EACtC,GAAI,CAACM,EAAI,GAAG,CAAC,GACX,QAASC,EAAM,EAAGC,EAAKF,EAAK,CAACE,EAAG,GAAG,EAAE,IAAI,CAAC,CAAC,EAAGD,GAAO,EAAGC,EAAKA,EAAG,IAAIA,CAAE,EAAE,IAAI,CAAC,EAC3E,GAAID,IAAQR,EAAI,EACd,MAAO,GAIf,CACA,MAAO,EACT,EACA,iBAAkBT,EAAM,YAAYmB,GAAQlB,GAAKmB,GAAQnB,EAAGkB,CAAI,CAAC,CACnE,CAAC,CACH,CAAC,EC9HD,IAAIE,IAAO,UACPC,IAAe,CAAC,SAAU,aAAc,WAAW,EAC5CC,GAA+BC,EAAQH,IAAMC,IAAcG,GAAQ,CAC5E,GAAI,CACF,OAAQC,EACR,UAAAC,EACA,SAAAC,CACF,EAAIH,EACAI,EAAkB,CACpB,OAAQ,GACR,OAAQ,GACR,UAAW,GACX,SAAU,EACZ,EAGIC,EAAmB,CACrB,OAAQC,GAAKL,EAAQK,CAAC,EACtB,UAAWJ,EAAYI,GAAKJ,EAAUI,CAAC,EAAIC,GAC3C,OAAQD,GAAK,OAAOA,CAAC,EACrB,SAAUH,EAAWG,GAAKH,EAASG,CAAC,EAAIE,EAC1C,EA+BA,OAAO,SAAiBC,EAAO,CAC7B,IAAIC,EAAa,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,SACjFC,EAAQ,UAAU,OAAS,EAAI,UAAU,CAAC,EAAI,OAClD,GAAIA,IAAU,OACZ,MAAM,IAAI,YAAY,sCAAsC,EAE9D,IAAIC,EAAYC,GAAOJ,CAAK,EAC5B,GAAI,EAAEG,KAAaR,GACjB,MAAM,IAAI,UAAU,kBAAoBK,EAAQ,aAAeG,EAAY,4BAA8B,OAAO,KAAKR,CAAe,EAAE,KAAK,IAAI,CAAC,EAElJ,GAAI,EAAEM,KAAcL,GAClB,MAAM,IAAI,UAAU,kBAAoBI,EAAQ,aAAeC,EAAa,6BAA+B,OAAO,KAAKL,CAAgB,EAAE,KAAK,IAAI,CAAC,EAErJ,OAAIK,IAAeE,EACVH,EAEAJ,EAAiBK,CAAU,EAAED,CAAK,CAE7C,CACF,CAAC,ECzED,IAAIK,GAAO,eACPC,IAAe,CAAC,QAAS,SAAS,EAC3BC,GAAoCC,EAAQH,GAAMC,IAAcG,GAAQ,CACjF,GAAI,CACF,MAAAC,EACA,QAAAC,CACF,EAAIF,EAaJ,OAAOC,EAAML,GAAM,CACjB,iBAAkB,SAAuBO,EAAGC,EAAG,CAC7C,OAAOD,EAAIC,CACb,EACA,mBAAoB,SAAyBD,EAAGC,EAAG,CACjD,OAAOD,EAAE,IAAIC,CAAC,CAChB,EACA,uBAAwB,SAA6BD,EAAGC,EAAG,CACzD,OAAOD,EAAE,IAAIC,CAAC,CAChB,EACA,iBAAkB,SAAuBD,EAAGC,EAAG,CAC7C,OAAOD,EAAIC,CACb,EACA,qBAAsB,SAA2BD,EAAGC,EAAG,CACrD,OAAOD,EAAE,IAAIC,CAAC,CAChB,EACA,uDAAwD,CAACD,EAAGC,IAAMD,EAAE,OAAOC,CAAC,EAC5E,gDAAiD,CAACD,EAAGC,IAAMA,EAAE,WAAWD,CAAC,CAC3E,CAAC,CACH,CAAC,ECnCD,IAAIE,GAAO,MACPC,IAAe,CAAC,QAAS,SAAU,WAAY,WAAY,SAAU,MAAO,WAAY,SAAU,SAAS,EACpGC,GAA2BC,EAAQH,GAAMC,IAAcG,GAAQ,CACxE,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,SAAAC,EACA,SAAAC,EACA,OAAAC,EACA,IAAAC,EACA,OAAAC,EACA,SAAAC,EACA,QAAAC,CACF,EAAIT,EAuCJ,OAAOC,EAAML,GAAM,CACjB,iBAAkBc,EAClB,mBAAoB,SAAyB,EAAGC,EAAG,CACjD,OAAO,EAAE,IAAIA,CAAC,CAChB,EACA,uBAAwB,SAA6B,EAAGA,EAAG,CACzD,OAAIA,EAAE,UAAU,GAAK,GAAK,GAAKT,EAAO,YAC7B,EAAE,IAAIS,CAAC,EAEP,IAAIF,EAAQ,EAAE,SAAS,EAAG,CAAC,EAAE,IAAIE,EAAE,SAAS,EAAG,CAAC,CAE3D,EACA,iBAAkB,CAACC,EAAGD,IAAMC,GAAKD,EACjC,qBAAsB,SAA2B,EAAGA,EAAG,CACrD,IAAIE,EAAS,EAAE,IAAIF,CAAC,EACpB,GAAIE,GAAU,KACZ,OAAOA,EAET,GAAIX,EAAO,YACT,MAAM,IAAI,MAAM,qEAAqE,EAErF,OAAOQ,EAAK,EAAE,QAAQ,EAAGC,EAAE,QAAQ,CAAC,CAExC,EACA,gBAAiBG,EACjB,mBAAoB,SAAyB,EAAGH,EAAG,CACjD,OAAOG,EAAU,EAAGH,EAAE,SAAS,CAAC,CAClC,EACA,iBAAkBI,EAClB,oBAAqB,SAA0B,EAAGJ,EAAG,CACnD,OAAOI,EAAW,EAAGJ,EAAE,SAAS,CAAC,CACnC,EACA,2BAA4B,SAAgC,EAAGA,EAAG,CAChE,OAAO,EAAE,IAAIA,CAAC,CAChB,CACF,CAAC,EASD,SAASD,EAAKE,EAAGD,EAAG,CAGlB,GAAIT,EAAO,aAAe,CAACc,GAAUL,CAAC,GAAKC,EAAI,EAE7C,GAAI,CACF,IAAIK,EAAQT,EAASG,CAAC,EAClBO,EAAOX,EAAOU,CAAK,EACvB,IAAIN,IAAMO,GAAQ,KAAK,KAAKP,EAAIO,GAAQP,CAAC,EAAI,QACvCM,EAAM,EAAI,IAAM,EAClB,OAAQA,EAAM,EAAI,IAAM,EAAI,EAAI,IAAM,KAAK,IAAI,CAACL,EAAGD,CAAC,CAG1D,MAAa,CAEb,CAQF,OAAIT,EAAO,cAAgBU,EAAI,IAAMD,IAAM,KAAYC,EAAI,IAAMA,EAAI,GAAKD,IAAM,MACvE,IAELK,GAAUL,CAAC,GAAKC,GAAK,GAAKV,EAAO,YAC5BiB,GAAUP,EAAGD,CAAC,EAMjBC,EAAIA,EAAI,GAAKD,IAAM,KAAYC,EAAIA,EAAI,GAAKD,IAAM,KAC7C,EAEF,IAAIF,EAAQG,EAAG,CAAC,EAAE,IAAID,EAAG,CAAC,CAErC,CASA,SAASG,EAAUF,EAAGD,EAAG,CACvB,GAAI,CAACK,GAAUL,CAAC,EACd,MAAM,IAAI,UAAU,2CAA6CA,EAAI,GAAG,EAG1E,IAAIS,EAAIC,GAAKT,CAAC,EACd,GAAIQ,EAAE,SAAW,EACf,MAAM,IAAI,MAAM,2CAA6CA,EAAE,OAAS,cAAc,EAExF,GAAIA,EAAE,CAAC,IAAMA,EAAE,CAAC,EACd,MAAM,IAAI,MAAM,sCAAwCA,EAAE,CAAC,EAAI,IAAMA,EAAE,CAAC,EAAI,GAAG,EAEjF,GAAIT,EAAI,EACN,GAAI,CACF,OAAOG,EAAUR,EAAIM,CAAC,EAAG,CAACD,CAAC,CAC7B,OAASW,EAAO,CACd,MAAIA,EAAM,UAAY,gDACd,IAAI,UAAU,6EAA+EX,EAAI,GAAG,EAEtGW,CACR,CAIF,QAFIC,EAAMpB,EAASiB,EAAE,CAAC,CAAC,EAAE,QAAQ,EAC7BI,EAAKZ,EACFD,GAAK,IACLA,EAAI,KAAO,IACdY,EAAMnB,EAASoB,EAAID,CAAG,GAExBZ,IAAM,EACNa,EAAKpB,EAASoB,EAAIA,CAAE,EAEtB,OAAOD,CACT,CASA,SAASR,EAAWH,EAAGD,EAAG,CACxB,OAAON,EAAOS,EAAUF,EAAE,QAAQ,EAAGD,CAAC,CAAC,CACzC,CACF,CAAC,ECvLD,IAAIc,GAAS,0DACTC,GAAO,QACPC,IAAe,CAAC,QAAS,SAAU,SAAU,cAAe,QAAS,YAAa,aAAa,EACxFC,GAA6BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC1E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,OAAAC,EACA,YAAAC,EACA,MAAAC,EACA,UAAWC,EACX,YAAAC,CACF,EAAIP,EACAQ,EAAgBC,GAAoB,CACtC,MAAAR,EACA,YAAAG,CACF,CAAC,EACGM,EAAgBC,GAAoB,CACtC,MAAAV,EACA,YAAAM,CACF,CAAC,EACGK,EAAeC,GAAmB,CACpC,MAAAZ,CACF,CAAC,EACD,SAASa,EAAWC,EAAS,CAC3B,OAAO,KAAK,IAAIC,GAAYD,CAAO,EAAE,QAAQ,CAC/C,CA8CA,OAAOd,EAAML,GAAM,CACjB,OAAQ,SAAgBqB,EAAG,CAEzB,IAAIC,EAAWC,GAAYF,EAAGH,EAAWZ,EAAO,MAAM,CAAC,EACnDkB,EAAYC,GAAYJ,EAAGC,EAAUhB,EAAO,OAAQA,EAAO,MAAM,EAAIgB,EAAWD,EACpF,OAAOE,GAAYC,CAAS,CAC9B,EACA,iBAAkB,SAAuBH,EAAGK,EAAG,CAE7C,IAAIC,EAAkBT,EAAWZ,EAAO,MAAM,EAC9C,GAAIoB,GAAKC,EACP,OAAOJ,GAAYF,EAAGK,CAAC,EAEzB,IAAIJ,EAAWC,GAAYF,EAAGM,CAAe,EACzCH,EAAYC,GAAYJ,EAAGC,EAAUhB,EAAO,OAAQA,EAAO,MAAM,EAAIgB,EAAWD,EACpF,OAAOE,GAAYC,EAAWE,CAAC,CACjC,EACA,oBAAqB,SAA0BL,EAAGK,EAAG,CACnD,GAAI,CAACA,EAAE,UAAU,EACf,MAAM,IAAI,UAAU3B,EAAM,EAE5B,OAAO,IAAIW,EAAWW,CAAC,EAAE,gBAAgBK,EAAE,SAAS,CAAC,CACvD,EACA,QAAS,SAAiBL,EAAG,CAC3B,OAAOA,EAAE,MAAM,CACjB,EACA,kBAAmB,SAAwBA,EAAGK,EAAG,CAC/C,GAAIA,EAAI,EACN,MAAM,IAAI,UAAU3B,EAAM,EAE5B,OAAOsB,EAAE,MAAMK,CAAC,CAClB,EACA,qBAAsB,SAA2BL,EAAGK,EAAG,CACrD,GAAI,CAACA,EAAE,UAAU,EACf,MAAM,IAAI,UAAU3B,EAAM,EAE5B,IAAI6B,EAAKF,EAAE,SAAS,EACpB,OAAOL,EAAE,MAAMO,CAAE,CACnB,EACA,UAAW,SAAmBP,EAAG,CAE/B,IAAIC,EAAW,IAAIZ,EAAWW,CAAC,EAAE,gBAAgBH,EAAWZ,EAAO,MAAM,CAAC,EACtEkB,EAAYC,GAAeJ,EAAGC,EAAUhB,EAAO,OAAQA,EAAO,MAAM,EAAIgB,EAAWD,EACvF,OAAOG,EAAU,gBAAgB,CAAC,CACpC,EACA,uBAAwB,SAA6BH,EAAGK,EAAG,CACzD,GAAI,CAACA,EAAE,UAAU,EACf,MAAM,IAAI,UAAU3B,EAAM,EAI5B,IAAI4B,EAAkBT,EAAWZ,EAAO,MAAM,EAC9C,GAAIoB,GAAKC,EACP,OAAON,EAAE,gBAAgBK,EAAE,SAAS,CAAC,EAEvC,IAAIJ,EAAWD,EAAE,gBAAgBM,CAAe,EAC5CH,EAAYC,GAAeJ,EAAGC,EAAUhB,EAAO,OAAQA,EAAO,MAAM,EAAIgB,EAAWD,EACvF,OAAOG,EAAU,gBAAgBE,EAAE,SAAS,CAAC,CAC/C,EACA,SAAU,SAAkBL,EAAG,CAC7B,OAAOA,EAAE,MAAM,CACjB,EACA,mBAAoB,SAAyBA,EAAGK,EAAG,CACjD,GAAIA,EAAI,EACN,MAAM,IAAI,UAAU3B,EAAM,EAE5B,OAAOsB,EAAE,MAAMK,CAAC,CAClB,EACA,sBAAuB,SAA4BL,EAAGK,EAAG,CACvD,GAAI,CAACA,EAAE,UAAU,EACf,MAAM,IAAI,UAAU3B,EAAM,EAE5B,OAAOsB,EAAE,MAAMK,EAAE,SAAS,CAAC,CAC7B,EACA,qBAAsBrB,EAAM,YAAYwB,GAAQ,SAAUR,EAAGK,EAAGI,EAAM,CACpE,IAAIC,EAAYV,EAAE,UAAUS,CAAI,EAChC,OAAOA,EAAK,SAASD,EAAKE,EAAWL,CAAC,CAAC,CACzC,CAAC,EACD,wBAAyBrB,EAAM,YAAYwB,GAAQ,CAACR,EAAGK,EAAGI,IAASD,EAAKR,EAAGK,EAAE,SAAS,EAAGI,CAAI,CAAC,EAC9F,aAAczB,EAAM,YAAYwB,GAAQ,CAACR,EAAGS,IAASD,EAAKR,EAAG,EAAGS,CAAI,CAAC,EACrE,+BAAgCzB,EAAM,YAAYwB,GAAQ,CAACR,EAAGK,EAAGI,IAExDE,GAAQX,EAAGY,GAASJ,EAAKI,EAAOP,EAAGI,CAAI,EAAG,EAAI,CACtD,EACD,kCAAmCzB,EAAM,YAAYwB,GAAQ,CAACR,EAAGK,EAAGI,IAASD,EAAKR,EAAGK,EAAE,SAAS,EAAGI,CAAI,CAAC,EACxG,uBAAwBzB,EAAM,YAAYwB,GAAQ,CAACR,EAAGS,IAASD,EAAKR,EAAG,EAAGS,CAAI,CAAC,EAC/E,iBAAkBzB,EAAM,YAAYwB,GAAQR,GAEnCW,GAAQX,EAAGQ,EAAM,EAAI,CAC7B,EACD,mCAAoCxB,EAAM,YAAYwB,GAAQ,CAACR,EAAGK,IACzDd,EAAcS,EAAGK,EAAGG,EAAM,EAAK,CACvC,EACD,kCAAmCxB,EAAM,YAAYwB,GAAQ,CAACR,EAAGK,IACxDV,EAAaK,EAAGK,EAAGG,EAAM,EAAK,CACtC,EACD,4BAA6BxB,EAAM,YAAYwB,GAAQ,CAACR,EAAGK,IAElDV,EAAaT,EAAOc,CAAC,EAAGK,EAAGG,EAAM,EAAK,EAAE,QAAQ,CACxD,EACD,wDAAyDxB,EAAM,YAAYwB,GAAQ,CAACR,EAAGK,IAEjFlB,EAAYa,EAAG,CAAC,EAEXZ,EAAMiB,EAAE,KAAK,EAAGA,EAAE,QAAQ,CAAC,EAE7BZ,EAAcY,EAAGL,EAAGQ,EAAM,EAAI,CACtC,EACD,uDAAwDxB,EAAM,YAAYwB,GAAQ,CAACR,EAAGK,IAEhFlB,EAAYa,EAAG,CAAC,EAEXZ,EAAMiB,EAAE,KAAK,EAAGA,EAAE,QAAQ,CAAC,EAE7BV,EAAaU,EAAGL,EAAGQ,EAAM,EAAI,CACrC,EACD,iDAAkDxB,EAAM,YAAYwB,GAAQ,CAACR,EAAGK,IAEvEV,EAAaT,EAAOmB,CAAC,EAAGL,EAAGQ,EAAM,EAAI,EAAE,QAAQ,CACvD,CACH,CAAC,CACH,CAAC,ECvMD,IAAIK,GAAO,MACPC,IAAe,CAAC,SAAU,QAAS,eAAgB,SAAS,EACrDC,GAA2BC,EAAQH,GAAMC,IAAcG,GAAQ,CACxE,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,aAAAC,EACA,QAAAC,CACF,EAAIJ,EAoCJ,OAAOC,EAAML,GAAM,CACjB,OAAQ,SAAgBS,EAAG,CACzB,OAAIA,GAAK,GAAKH,EAAO,YACZI,GAAUD,CAAC,EAGX,IAAID,EAAQC,EAAG,CAAC,EAAE,IAAI,CAEjC,EACA,QAAS,SAAiBA,EAAG,CAC3B,OAAOA,EAAE,IAAI,CACf,EACA,UAAW,SAAmBA,EAAG,CAC/B,MAAI,CAACA,EAAE,WAAW,GAAKH,EAAO,YACrBG,EAAE,GAAG,EAGL,IAAID,EAAQC,EAAE,SAAS,EAAG,CAAC,EAAE,IAAI,CAE5C,EACA,WAAYJ,EAAM,YAAYM,GAAQ,CAACF,EAAGG,IAEjCL,EAAaI,EAAKF,CAAC,EAAGE,EAAKC,CAAI,CAAC,CACxC,CACH,CAAC,CACH,CAAC,ECpED,IAAIC,GAAO,QACPC,IAAe,CAAC,QAAS,SAAU,eAAgB,MAAO,SAAS,EAC5DC,GAA6BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC1E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,aAAAC,EACA,IAAAC,EACA,QAAAC,CACF,EAAIL,EAgCJ,OAAOC,EAAML,GAAM,CACjB,OAAQ,SAAgBU,EAAG,CACzB,OAAIA,GAAK,IAAMJ,EAAO,YACbK,GAAOD,CAAC,EAGRE,EAAc,IAAIH,EAAQC,EAAG,CAAC,CAAC,CAE1C,EACA,QAASE,EACT,UAAW,SAAmBF,EAAG,CAC/B,IAAIG,EAAIH,EAAE,KAAK,CAAC,EAChB,MAAI,CAACG,EAAE,WAAW,GAAKP,EAAO,YACrBO,EAAE,GAAG,EAGLD,EAAc,IAAIH,EAAQC,EAAE,SAAS,EAAG,CAAC,CAAC,CAErD,EACA,iBAAkBL,EAAM,YAAYS,GAAQJ,GAAKK,GAAQL,EAAGI,CAAI,CAAC,EACjE,WAAYT,EAAM,YAAYS,GAAQ,CAACJ,EAAGM,IAEjCT,EAAaO,EAAKJ,CAAC,EAAGF,EAAIQ,CAAI,CAAC,CACvC,CACH,CAAC,EAQD,SAASJ,EAAcF,EAAG,CACxB,IAAIO,EAAQP,EAAE,GAAK,EACnB,OAAO,IAAID,EAAQ,KAAK,IAAI,KAAK,KAAKQ,EAAQA,EAAQP,EAAE,GAAKA,EAAE,EAAE,CAAC,EAAG,KAAK,MAAMA,EAAE,GAAIO,CAAK,CAAC,CAC9F,CACF,CAAC,EC/ED,IAAIC,GAAO,WACPC,IAAe,CAAC,SAAU,QAAS,eAAgB,SAAS,EACrDC,GAAgCC,EAAQH,GAAMC,IAAcG,GAAQ,CAC7E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,aAAAC,EACA,QAAAC,CACF,EAAIJ,EAOAK,EAAwB,CAAC,SAAiBC,EAAK,CACjD,OAAO,IAAIF,EAAQE,EAAK,CAAC,CAC3B,EAAG,SAAiBA,EAAK,CACvB,OAAO,IAAIF,EAAQ,EAAGE,CAAG,CAC3B,EAAG,SAAiBA,EAAK,CACvB,OAAO,IAAIF,EAAQ,CAACE,EAAK,CAAC,CAC5B,EAAG,SAAiBA,EAAK,CACvB,OAAO,IAAIF,EAAQ,EAAG,CAACE,CAAG,CAC5B,CAAC,EAQD,SAASC,EAAiBC,EAAGC,EAAM,CACjC,GAAIA,EAAO,EAAG,MAAM,IAAI,MAAM,gCAAgC,EAC9D,GAAIA,IAAS,EAAG,MAAM,IAAI,MAAM,uBAAuB,EACvD,GAAIA,EAAO,IAAM,EAAG,MAAM,IAAI,MAAM,yBAAyB,EAC7D,GAAID,IAAM,GAAKA,EAAE,IAAI,IAAM,EAAG,MAAO,CAAC,IAAIJ,EAAQ,EAAG,CAAC,CAAC,EACvD,IAAIM,EAAa,OAAOF,GAAM,SAC1BG,GAEAD,GAAcF,EAAE,KAAO,GAAKA,EAAE,KAAO,KACnCE,EACFC,EAAS,EAAI,EAAEH,EAAI,GACVA,EAAE,KAAO,EAClBG,EAAS,EAAI,EAAEH,EAAE,GAAK,GAEtBG,EAAS,EAAI,EAAEH,EAAE,GAAK,GAAK,GAO/B,QAJII,EAAMJ,EAAE,IAAI,EACZK,EAAML,EAAE,IAAI,EACZM,EAAQ,CAAC,EACTC,EAAI,KAAK,IAAIF,EAAK,EAAIJ,CAAI,EACrBO,EAAI,EAAGA,EAAIP,EAAMO,IAAK,CAC7B,IAAIC,GAAgBN,EAAS,EAAIK,GAAKP,EAKtC,GAAIQ,IAAiB,KAAK,MAAMA,CAAY,EAAG,CAC7CH,EAAM,KAAKT,EAAsBY,EAAe,CAAC,EAAEF,CAAC,CAAC,EACrD,QACF,CACAD,EAAM,KAAK,IAAIV,EAAQ,CACrB,EAAAW,EACA,KAAMH,EAAM,EAAI,KAAK,GAAKI,GAAKP,CACjC,CAAC,CAAC,CACJ,CACA,OAAOK,CACT,CAmCA,OAAOb,EAAML,GAAM,CACjB,QAAS,SAAiBsB,EAAG,CAC3B,OAAOX,EAAiBW,EAAG,CAAC,CAC9B,EACA,kBAAmBX,CACrB,CAAC,CACH,CAAC,ECxGD,IAAIY,GAAO,SACPC,IAAe,CAAC,QAAS,cAAe,SAAU,MAAO,cAAe,QAAQ,EACzEC,GAA8BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC3E,GAAI,CACF,MAAAC,EACA,YAAAC,EACA,OAAAC,EACA,IAAAC,EACA,YAAAC,EACA,OAAAC,CACF,EAAIN,EACAO,EAAgBC,GAAoB,CACtC,MAAAP,CACF,CAAC,EACGQ,EAAgBC,GAAoB,CACtC,MAAAT,EACA,YAAAI,CACF,CAAC,EACGM,EAAgBC,GAAoB,CACtC,MAAAX,EACA,YAAAC,CACF,CAAC,EACGW,EAAgBC,GAAoB,CACtC,MAAAb,EACA,YAAAI,CACF,CAAC,EACGU,EAAuBC,GAA2B,CACpD,MAAAf,EACA,OAAAE,EACA,OAAAG,CACF,CAAC,EACGW,EAAsB,CAAC,EAC3B,QAASC,KAAad,EAAI,WACpB,OAAO,UAAU,eAAe,KAAKA,EAAI,WAAYc,CAAS,GAC5D,CAACA,EAAU,SAAS,QAAQ,GAAK,CAACA,EAAU,SAAS,OAAO,IAC9DD,EAAoBC,CAAS,EAAId,EAAI,WAAWc,CAAS,GAI/D,IAAIC,EAAYlB,EAAMgB,CAAmB,EAyBzC,OAAOhB,EAAML,GAAMmB,EAAqB,CACtC,KAAMI,EACN,GAAIV,EACJ,GAAIF,EACJ,GAAII,EACJ,GAAIE,CACN,CAAC,CAAC,CACJ,CAAC,ECtED,IAAIO,GAAO,YACPC,IAAe,CAAC,QAAS,SAAU,cAAe,eAAgB,cAAe,QAAQ,EAClFC,GAAiCC,EAAQH,GAAMC,IAAcG,GAAQ,CAC9E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,YAAAC,EACA,aAAAC,EACA,YAAAC,EACA,OAAAC,CACF,EAAIN,EACAO,EAAgBC,GAAoB,CACtC,MAAAP,EACA,YAAAE,CACF,CAAC,EACGM,EAAgBC,GAAoB,CACtC,MAAAT,CACF,CAAC,EACGU,EAAgBC,GAAoB,CACtC,MAAAX,EACA,YAAAI,CACF,CAAC,EACGQ,EAAgBC,GAAoB,CACtC,MAAAb,EACA,YAAAE,CACF,CAAC,EACGY,EAAgBC,GAAoB,CACtC,MAAAf,EACA,YAAAI,CACF,CAAC,EACGY,EAAuBC,GAA2B,CACpD,MAAAjB,EACA,OAAAC,EACA,OAAAI,CACF,CAAC,EA4BD,OAAOL,EAAML,GAAMqB,EAAqB,CACtC,KAAMb,EACN,GAAIO,EACJ,GAAIF,EACJ,GAAIF,EACJ,GAAIM,EACJ,GAAIE,CACN,CAAC,CAAC,CACJ,CAAC,EC1EM,SAASI,GAAsBC,EAAM,CAC1C,GAAI,CACF,YAAAC,CACF,EAAID,EAUJ,OAAO,SAAyBE,EAAGC,EAAGC,EAAM,CAC1C,IAAIC,EAAQH,EAAE,KAAK,EACnB,GAAIG,EAAM,SAAW,EACnB,MAAM,IAAI,WAAW,yCAA2CC,GAAOD,CAAK,EAAI,GAAG,EAErF,IAAIE,EAAOF,EAAM,CAAC,EACdG,EAAUH,EAAM,CAAC,EACrB,GAAIE,IAASC,EACX,MAAM,IAAI,WAAW,gCAAkCF,GAAOD,CAAK,EAAI,GAAG,EAE5E,IAAII,EAAO,CAAC,EACZ,GAAIC,GAASP,CAAC,EAAG,CACf,IAAIQ,EAAQR,EAAE,KAAK,EACfS,EAAQT,EAAE,MAGd,GAAIQ,EAAM,SAAW,EAAG,CACtB,GAAIA,EAAM,CAAC,IAAMJ,EACf,MAAM,IAAI,WAAW,8DAA8D,EAErF,QAASM,EAAI,EAAGA,EAAIN,EAAMM,IACxBJ,EAAKI,CAAC,EAAI,CAACD,EAAMC,CAAC,CAAC,EAErB,OAAO,IAAIZ,EAAY,CACrB,KAAAQ,EACA,KAAM,CAACF,EAAM,CAAC,EACd,SAAUJ,EAAE,SACd,CAAC,CACH,CAGA,GAAIQ,EAAM,SAAW,EAAG,CACtB,GAAIA,EAAM,CAAC,IAAMJ,GAAQI,EAAM,CAAC,IAAM,EACpC,MAAM,IAAI,WAAW,8DAA8D,EAErF,GAAIG,GAAcX,CAAC,EAAG,CACpB,GAAIC,EAAM,CACRK,EAAO,CAAC,EACR,QAASM,EAAK,EAAGA,EAAKR,EAAMQ,IAC1BN,EAAKM,CAAE,EAAI,CAACH,EAAMG,CAAE,EAAE,CAAC,CAAC,EAE1B,OAAO,IAAId,EAAY,CACrB,KAAAQ,EACA,KAAM,CAACF,EAAM,CAAC,EACd,SAAUJ,EAAE,SACd,CAAC,CACH,CACA,OAAOA,CACT,CACA,GAAIa,GAAeb,CAAC,EAAG,CACrB,QAASc,EAAM,EAAGA,EAAMV,EAAMU,IAC5BR,EAAKQ,CAAG,EAAI,CAAC,CAAC,EAKhB,QAHIC,EAASf,EAAE,QACXgB,EAAQhB,EAAE,OACViB,EAAMjB,EAAE,KACHkB,EAAKD,EAAI,CAAC,EAAGE,EAAIF,EAAI,CAAC,EAAGE,EAAID,EAAIC,IAAK,CAC7C,IAAIC,EAAMJ,EAAMG,CAAC,EACjBb,EAAKc,CAAG,EAAE,CAAC,EAAIL,EAAOI,CAAC,CACzB,CACA,OAAO,IAAIrB,EAAY,CACrB,KAAAQ,EACA,KAAM,CAACF,EAAM,CAAC,EACd,SAAUJ,EAAE,SACd,CAAC,CACH,CACF,CACA,MAAM,IAAI,WAAW,iFAAiF,CACxG,CACA,GAAIqB,GAAQrB,CAAC,EAAG,CACd,IAAIsB,EAAQC,GAAUvB,CAAC,EACvB,GAAIsB,EAAM,SAAW,EAAG,CACtB,GAAIA,EAAM,CAAC,IAAMlB,EACf,MAAM,IAAI,WAAW,8DAA8D,EAErF,QAASoB,EAAM,EAAGA,EAAMpB,EAAMoB,IAC5BlB,EAAKkB,CAAG,EAAI,CAACxB,EAAEwB,CAAG,CAAC,EAErB,OAAO,IAAI1B,EAAY,CACrB,KAAAQ,EACA,KAAM,CAACF,EAAM,CAAC,CAChB,CAAC,CACH,CACA,GAAIkB,EAAM,SAAW,EAAG,CACtB,GAAIA,EAAM,CAAC,IAAMlB,GAAQkB,EAAM,CAAC,IAAM,EACpC,MAAM,IAAI,WAAW,8DAA8D,EAErF,QAASG,EAAM,EAAGA,EAAMrB,EAAMqB,IAC5BnB,EAAKmB,CAAG,EAAI,CAACzB,EAAEyB,CAAG,EAAE,CAAC,CAAC,EAExB,OAAO,IAAI3B,EAAY,CACrB,KAAAQ,EACA,KAAM,CAACF,EAAM,CAAC,CAChB,CAAC,CACH,CACA,MAAM,IAAI,WAAW,iFAAiF,CACxG,CACF,CACF,CChHA,IAAIsB,GAAO,SACPC,IAAe,CAAC,QAAS,SAAU,eAAgB,iBAAkB,iBAAkB,cAAe,aAAa,EAC5GC,GAA8BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC3E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,aAAAC,EACA,eAAAC,EACA,eAAAC,EACA,YAAAC,EACA,YAAAC,CACF,EAAIP,EACAQ,EAAkBC,GAAsB,CAC1C,YAAAF,CACF,CAAC,EA0BD,OAAON,EAAML,GAAM,CACjB,+BAAgC,SAAoCc,EAAGC,EAAG,CACxE,OAAOC,EAA2BF,EAAGC,CAAC,CACxC,EACA,8BAA+B,SAAmCD,EAAGC,EAAG,CACtE,OAAOE,EAA0BH,EAAGC,CAAC,CACvC,EACA,wBAAyB,SAA6BG,EAAGH,EAAG,CAC1D,IAAID,EAAIR,EAAOY,CAAC,EACZC,EAAIF,EAA0BH,EAAGC,CAAC,EACtC,OAAOI,EAAE,QAAQ,CACnB,CACF,CAAC,EACD,SAASF,EAA0BH,EAAGC,EAAG,CAEvCA,EAAIH,EAAgBE,EAAGC,EAAG,EAAI,EAU9B,QATIK,EAAQL,EAAE,MACVM,EAAOP,EAAE,MAAM,CAAC,EAChBQ,EAAUR,EAAE,MAAM,CAAC,EAGnBS,EAAI,CAAC,EACLC,EAAQV,EAAE,MAGLW,EAAI,EAAGA,EAAIH,EAASG,IAAK,CAChC,IAAIC,EAAKN,EAAMK,CAAC,EAAE,CAAC,GAAK,EACpBE,EAAK,OACT,GAAKjB,EAAYgB,EAAI,CAAC,EAepBC,EAAK,MAfkB,CAGvB,IAAIC,EAAMJ,EAAMC,CAAC,EAAEA,CAAC,EACpB,GAAIf,EAAYkB,EAAK,CAAC,EACpB,MAAM,IAAI,MAAM,yDAAyD,EAE3ED,EAAKpB,EAAamB,EAAIE,CAAG,EAGzB,QAASC,EAAIJ,EAAI,EAAGI,EAAIR,EAAMQ,IAC5BT,EAAMS,CAAC,EAAI,CAACpB,EAAeW,EAAMS,CAAC,EAAE,CAAC,GAAK,EAAGrB,EAAemB,EAAIH,EAAMK,CAAC,EAAEJ,CAAC,CAAC,CAAC,CAAC,CAEjF,CAIAF,EAAEE,CAAC,EAAI,CAACE,CAAE,CACZ,CACA,OAAO,IAAIhB,EAAY,CACrB,KAAMY,EACN,KAAM,CAACF,EAAM,CAAC,CAChB,CAAC,CACH,CACA,SAASL,EAA2BF,EAAGC,EAAG,CAExCA,EAAIH,EAAgBE,EAAGC,EAAG,EAAI,EAY9B,QAXIK,EAAQL,EAAE,MACVM,EAAOP,EAAE,MAAM,CAAC,EAChBQ,EAAUR,EAAE,MAAM,CAAC,EACnBgB,EAAShB,EAAE,QACXiB,EAAQjB,EAAE,OACVkB,EAAMlB,EAAE,KAGRS,EAAI,CAAC,EAGAE,EAAI,EAAGA,EAAIH,EAASG,IAAK,CAChC,IAAIC,EAAKN,EAAMK,CAAC,EAAE,CAAC,GAAK,EACxB,GAAKf,EAAYgB,EAAI,CAAC,EAsCpBH,EAAEE,CAAC,EAAI,CAAC,CAAC,MAtCc,CAavB,QAVIG,EAAM,EAENK,EAAU,CAAC,EACXC,EAAW,CAAC,EAGZC,EAAaH,EAAIP,CAAC,EAClBW,EAAYJ,EAAIP,EAAI,CAAC,EAGhBY,EAAIF,EAAYE,EAAID,EAAWC,IAAK,CAC3C,IAAIR,EAAIE,EAAMM,CAAC,EAGXR,IAAMJ,EACRG,EAAME,EAAOO,CAAC,EACLR,EAAIJ,IAEbQ,EAAQ,KAAKH,EAAOO,CAAC,CAAC,EACtBH,EAAS,KAAKL,CAAC,EAEnB,CAGA,GAAInB,EAAYkB,EAAK,CAAC,EACpB,MAAM,IAAI,MAAM,yDAAyD,EAG3E,QADID,EAAKpB,EAAamB,EAAIE,CAAG,EACpBU,EAAK,EAAGC,EAAIL,EAAS,OAAQI,EAAKC,EAAGD,IAAM,CAClD,IAAIE,EAAKN,EAASI,CAAE,EACpBlB,EAAMoB,CAAE,EAAI,CAAC/B,EAAeW,EAAMoB,CAAE,EAAE,CAAC,GAAK,EAAGhC,EAAemB,EAAIM,EAAQK,CAAE,CAAC,CAAC,CAAC,CACjF,CACAf,EAAEE,CAAC,EAAI,CAACE,CAAE,CACZ,CAIF,CACA,OAAO,IAAIhB,EAAY,CACrB,KAAMY,EACN,KAAM,CAACF,EAAM,CAAC,CAChB,CAAC,CACH,CACF,CAAC,EC1JD,IAAIoB,GAAO,SACPC,IAAe,CAAC,QAAS,SAAU,eAAgB,iBAAkB,iBAAkB,cAAe,aAAa,EAC5GC,GAA8BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC3E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,aAAAC,EACA,eAAAC,EACA,eAAAC,EACA,YAAAC,EACA,YAAAC,CACF,EAAIP,EACAQ,EAAkBC,GAAsB,CAC1C,YAAAF,CACF,CAAC,EA0BD,OAAON,EAAML,GAAM,CACjB,+BAAgC,SAAoCc,EAAGC,EAAG,CACxE,OAAOC,EAA4BF,EAAGC,CAAC,CACzC,EACA,8BAA+B,SAAmCD,EAAGC,EAAG,CACtE,OAAOE,EAA2BH,EAAGC,CAAC,CACxC,EACA,wBAAyB,SAA6BG,EAAGH,EAAG,CAC1D,IAAID,EAAIR,EAAOY,CAAC,EACZC,EAAIF,EAA2BH,EAAGC,CAAC,EACvC,OAAOI,EAAE,QAAQ,CACnB,CACF,CAAC,EACD,SAASF,EAA2BH,EAAGC,EAAG,CAExCA,EAAIH,EAAgBE,EAAGC,EAAG,EAAI,EAS9B,QARIK,EAAQL,EAAE,MACVM,EAAOP,EAAE,MAAM,CAAC,EAChBQ,EAAUR,EAAE,MAAM,CAAC,EAGnBS,EAAI,CAAC,EACLC,EAAQV,EAAE,MAELW,EAAIH,EAAU,EAAGG,GAAK,EAAGA,IAAK,CAErC,IAAIC,EAAKN,EAAMK,CAAC,EAAE,CAAC,GAAK,EAEpBE,EAAK,OACT,GAAKjB,EAAYgB,EAAI,CAAC,EAgBpBC,EAAK,MAhBkB,CAEvB,IAAIC,EAAMJ,EAAMC,CAAC,EAAEA,CAAC,EACpB,GAAIf,EAAYkB,EAAK,CAAC,EAEpB,MAAM,IAAI,MAAM,yDAAyD,EAE3ED,EAAKpB,EAAamB,EAAIE,CAAG,EAGzB,QAASC,EAAIJ,EAAI,EAAGI,GAAK,EAAGA,IAE1BT,EAAMS,CAAC,EAAI,CAACpB,EAAeW,EAAMS,CAAC,EAAE,CAAC,GAAK,EAAGrB,EAAemB,EAAIH,EAAMK,CAAC,EAAEJ,CAAC,CAAC,CAAC,CAAC,CAEjF,CAKAF,EAAEE,CAAC,EAAI,CAACE,CAAE,CACZ,CACA,OAAO,IAAIhB,EAAY,CACrB,KAAMY,EACN,KAAM,CAACF,EAAM,CAAC,CAChB,CAAC,CACH,CACA,SAASL,EAA4BF,EAAGC,EAAG,CAEzCA,EAAIH,EAAgBE,EAAGC,EAAG,EAAI,EAY9B,QAXIK,EAAQL,EAAE,MACVM,EAAOP,EAAE,MAAM,CAAC,EAChBQ,EAAUR,EAAE,MAAM,CAAC,EACnBgB,EAAShB,EAAE,QACXiB,EAAQjB,EAAE,OACVkB,EAAMlB,EAAE,KAGRS,EAAI,CAAC,EAGAE,EAAIH,EAAU,EAAGG,GAAK,EAAGA,IAAK,CACrC,IAAIC,EAAKN,EAAMK,CAAC,EAAE,CAAC,GAAK,EACxB,GAAKf,EAAYgB,EAAI,CAAC,EAuCpBH,EAAEE,CAAC,EAAI,CAAC,CAAC,MAvCc,CAcvB,QAXIG,EAAM,EAGNK,EAAU,CAAC,EACXC,EAAW,CAAC,EAGZC,EAAaH,EAAIP,CAAC,EAClBW,EAAYJ,EAAIP,EAAI,CAAC,EAGhBY,EAAID,EAAY,EAAGC,GAAKF,EAAYE,IAAK,CAChD,IAAIR,EAAIE,EAAMM,CAAC,EAGXR,IAAMJ,EACRG,EAAME,EAAOO,CAAC,EACLR,EAAIJ,IAEbQ,EAAQ,KAAKH,EAAOO,CAAC,CAAC,EACtBH,EAAS,KAAKL,CAAC,EAEnB,CAGA,GAAInB,EAAYkB,EAAK,CAAC,EACpB,MAAM,IAAI,MAAM,yDAAyD,EAG3E,QADID,EAAKpB,EAAamB,EAAIE,CAAG,EACpBU,EAAK,EAAGC,EAAaL,EAAS,OAAQI,EAAKC,EAAYD,IAAM,CACpE,IAAIE,EAAKN,EAASI,CAAE,EACpBlB,EAAMoB,CAAE,EAAI,CAAC/B,EAAeW,EAAMoB,CAAE,EAAE,CAAC,EAAGhC,EAAemB,EAAIM,EAAQK,CAAE,CAAC,CAAC,CAAC,CAC5E,CACAf,EAAEE,CAAC,EAAI,CAACE,CAAE,CACZ,CAIF,CACA,OAAO,IAAIhB,EAAY,CACrB,KAAMY,EACN,KAAM,CAACF,EAAM,CAAC,CAChB,CAAC,CACH,CACF,CAAC,EC9JD,IAAIoB,GAAO,YACPC,IAAe,CAAC,QAAS,SAAU,eAAgB,iBAAkB,iBAAkB,cAAe,aAAa,EAC5GC,GAAiCC,EAAQH,GAAMC,IAAcG,GAAQ,CAC9E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,aAAAC,EACA,eAAAC,EACA,eAAAC,EACA,YAAAC,EACA,YAAAC,CACF,EAAIP,EACAQ,EAAkBC,GAAsB,CAC1C,YAAAF,CACF,CAAC,EA0BD,OAAON,EAAML,GAAM,CACjB,+BAAgC,SAAoCc,EAAGC,EAAG,CACxE,OAAOC,EAA2BF,EAAGC,CAAC,CACxC,EACA,8BAA+B,SAAmCD,EAAGC,EAAG,CACtE,OAAOE,EAA0BH,EAAGC,CAAC,CACvC,EACA,wBAAyB,SAA6BG,EAAGH,EAAG,CAC1D,IAAID,EAAIR,EAAOY,CAAC,EACZC,EAAIF,EAA0BH,EAAGC,CAAC,EACtC,OAAOI,EAAE,IAAIC,GAAKA,EAAE,QAAQ,CAAC,CAC/B,CACF,CAAC,EACD,SAASH,EAA0BH,EAAGO,EAAI,CAWxC,QANIC,EAAI,CAACV,EAAgBE,EAAGO,EAAI,EAAI,EAAE,MAAM,IAAIE,GAAKA,EAAE,CAAC,CAAC,CAAC,EACtDC,EAAIV,EAAE,MACNW,EAAOX,EAAE,MAAM,CAAC,EAChBY,EAAUZ,EAAE,MAAM,CAAC,EAGda,EAAI,EAAGA,EAAID,EAASC,IAI3B,QAHIC,EAAIN,EAAE,OAGDO,EAAI,EAAGA,EAAID,EAAGC,IAAK,CAC1B,IAAId,EAAIO,EAAEO,CAAC,EACX,GAAKnB,EAAYc,EAAEG,CAAC,EAAEA,CAAC,EAAG,CAAC,EAQpB,GAAKjB,EAAYK,EAAEY,CAAC,EAAG,CAAC,GAYxB,GAAIE,IAAM,EAAG,CAGlB,IAAIC,EAAO,CAAC,GAAGf,CAAC,EAChBe,EAAKH,CAAC,EAAI,EACV,QAASI,EAAKJ,EAAI,EAAGI,EAAKL,EAASK,IACjCD,EAAKC,CAAE,EAAItB,EAAeqB,EAAKC,CAAE,EAAGP,EAAEO,CAAE,EAAEJ,CAAC,CAAC,EAE9CL,EAAE,KAAKQ,CAAI,CACb,MArBkC,CAGhC,GAAID,IAAM,EAER,MAAO,CAAC,EAGRP,EAAE,OAAOO,EAAG,CAAC,EACbA,GAAK,EACLD,GAAK,CAET,KApB8B,CAG5Bb,EAAEY,CAAC,EAAIpB,EAAaQ,EAAEY,CAAC,EAAGH,EAAEG,CAAC,EAAEA,CAAC,CAAC,EACjC,QAASK,EAAIL,EAAI,EAAGK,EAAIN,EAASM,IAE/BjB,EAAEiB,CAAC,EAAIvB,EAAeM,EAAEiB,CAAC,EAAGxB,EAAeO,EAAEY,CAAC,EAAGH,EAAEQ,CAAC,EAAEL,CAAC,CAAC,CAAC,CAE7D,CAsBF,CAEF,OAAOL,EAAE,IAAIW,GAAK,IAAItB,EAAY,CAChC,KAAMsB,EAAE,IAAIV,GAAK,CAACA,CAAC,CAAC,EACpB,KAAM,CAACE,EAAM,CAAC,CAChB,CAAC,CAAC,CACJ,CACA,SAAST,EAA2BF,EAAGO,EAAI,CAUzC,QARIC,EAAI,CAACV,EAAgBE,EAAGO,EAAI,EAAI,EAAE,MAAM,IAAIE,IAAKA,GAAE,CAAC,CAAC,CAAC,EACtDE,EAAOX,EAAE,MAAM,CAAC,EAChBY,EAAUZ,EAAE,MAAM,CAAC,EACnBoB,EAASpB,EAAE,QACXqB,EAAQrB,EAAE,OACVsB,EAAMtB,EAAE,KAGHa,EAAI,EAAGA,EAAID,EAASC,IAI3B,QAHIC,EAAIN,EAAE,OAGDO,EAAI,EAAGA,EAAID,EAAGC,IAAK,CAa1B,QAZId,EAAIO,EAAEO,CAAC,EAGPQ,EAAU,CAAC,EACXC,EAAW,CAAC,EAGZC,EAAaH,EAAIT,CAAC,EAClBa,EAAYJ,EAAIT,EAAI,CAAC,EAGrBc,EAAM,EACDT,EAAIO,EAAYP,EAAIQ,EAAWR,IAAK,CAC3C,IAAIU,EAAIP,EAAMH,CAAC,EAEXU,IAAMf,EACRc,EAAMP,EAAOF,CAAC,EACLU,EAAIf,IAEbU,EAAQ,KAAKH,EAAOF,CAAC,CAAC,EACtBM,EAAS,KAAKI,CAAC,EAEnB,CACA,GAAKhC,EAAY+B,EAAK,CAAC,EAQhB,GAAK/B,EAAYK,EAAEY,CAAC,EAAG,CAAC,GAYxB,GAAIE,IAAM,EAAG,CAGlB,IAAIC,EAAO,CAAC,GAAGf,CAAC,EAChBe,EAAKH,CAAC,EAAI,EACV,QAASgB,GAAM,EAAGC,EAAcN,EAAS,OAAQK,GAAMC,EAAaD,KAAO,CACzE,IAAIE,GAAMP,EAASK,EAAG,EACtBb,EAAKe,EAAG,EAAIpC,EAAeqB,EAAKe,EAAG,EAAGR,EAAQM,EAAG,CAAC,CACpD,CACArB,EAAE,KAAKQ,CAAI,CACb,MAtBkC,CAGhC,GAAID,IAAM,EAER,MAAO,CAAC,EAGRP,EAAE,OAAOO,EAAG,CAAC,EACbA,GAAK,EACLD,GAAK,CAET,KApB0B,CAGxBb,EAAEY,CAAC,EAAIpB,EAAaQ,EAAEY,CAAC,EAAGc,CAAG,EAC7B,QAASK,EAAM,EAAGC,EAAaT,EAAS,OAAQQ,EAAMC,EAAYD,IAAO,CACvE,IAAIE,EAAKV,EAASQ,CAAG,EACrB/B,EAAEiC,CAAE,EAAIvC,EAAeM,EAAEiC,CAAE,EAAGxC,EAAeO,EAAEY,CAAC,EAAGU,EAAQS,CAAG,CAAC,CAAC,CAClE,CACF,CAuBF,CAEF,OAAOxB,EAAE,IAAIW,IAAK,IAAItB,EAAY,CAChC,KAAMsB,GAAE,IAAIV,IAAK,CAACA,EAAC,CAAC,EACpB,KAAM,CAACE,EAAM,CAAC,CAChB,CAAC,CAAC,CACJ,CACF,CAAC,ECvLD,IAAIwB,GAAO,YACPC,IAAe,CAAC,QAAS,SAAU,eAAgB,iBAAkB,iBAAkB,cAAe,aAAa,EAC5GC,GAAiCC,EAAQH,GAAMC,IAAcG,GAAQ,CAC9E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,aAAAC,EACA,eAAAC,EACA,eAAAC,EACA,YAAAC,EACA,YAAAC,CACF,EAAIP,EACAQ,EAAkBC,GAAsB,CAC1C,YAAAF,CACF,CAAC,EA0BD,OAAON,EAAML,GAAM,CACjB,+BAAgC,SAAoCc,EAAGC,EAAG,CACxE,OAAOC,EAA4BF,EAAGC,CAAC,CACzC,EACA,8BAA+B,SAAmCD,EAAGC,EAAG,CACtE,OAAOE,EAA2BH,EAAGC,CAAC,CACxC,EACA,wBAAyB,SAA6BG,EAAGH,EAAG,CAC1D,IAAID,EAAIR,EAAOY,CAAC,EACZC,EAAIF,EAA2BH,EAAGC,CAAC,EACvC,OAAOI,EAAE,IAAIC,GAAKA,EAAE,QAAQ,CAAC,CAC/B,CACF,CAAC,EACD,SAASH,EAA2BH,EAAGO,EAAI,CAWzC,QANIC,EAAI,CAACV,EAAgBE,EAAGO,EAAI,EAAI,EAAE,MAAM,IAAIE,GAAKA,EAAE,CAAC,CAAC,CAAC,EACtDC,EAAIV,EAAE,MACNW,EAAOX,EAAE,MAAM,CAAC,EAChBY,EAAUZ,EAAE,MAAM,CAAC,EAGda,EAAID,EAAU,EAAGC,GAAK,EAAGA,IAIhC,QAHIC,EAAIN,EAAE,OAGDO,EAAI,EAAGA,EAAID,EAAGC,IAAK,CAC1B,IAAId,EAAIO,EAAEO,CAAC,EACX,GAAKnB,EAAYc,EAAEG,CAAC,EAAEA,CAAC,EAAG,CAAC,EAQpB,GAAKjB,EAAYK,EAAEY,CAAC,EAAG,CAAC,GAYxB,GAAIE,IAAM,EAAG,CAGlB,IAAIC,EAAO,CAAC,GAAGf,CAAC,EAChBe,EAAKH,CAAC,EAAI,EACV,QAASI,EAAKJ,EAAI,EAAGI,GAAM,EAAGA,IAC5BD,EAAKC,CAAE,EAAItB,EAAeqB,EAAKC,CAAE,EAAGP,EAAEO,CAAE,EAAEJ,CAAC,CAAC,EAE9CL,EAAE,KAAKQ,CAAI,CACb,MArBkC,CAGhC,GAAID,IAAM,EAER,MAAO,CAAC,EAGRP,EAAE,OAAOO,EAAG,CAAC,EACbA,GAAK,EACLD,GAAK,CAET,KApB8B,CAG5Bb,EAAEY,CAAC,EAAIpB,EAAaQ,EAAEY,CAAC,EAAGH,EAAEG,CAAC,EAAEA,CAAC,CAAC,EACjC,QAASK,EAAIL,EAAI,EAAGK,GAAK,EAAGA,IAE1BjB,EAAEiB,CAAC,EAAIvB,EAAeM,EAAEiB,CAAC,EAAGxB,EAAeO,EAAEY,CAAC,EAAGH,EAAEQ,CAAC,EAAEL,CAAC,CAAC,CAAC,CAE7D,CAsBF,CAEF,OAAOL,EAAE,IAAIW,GAAK,IAAItB,EAAY,CAChC,KAAMsB,EAAE,IAAIV,GAAK,CAACA,CAAC,CAAC,EACpB,KAAM,CAACE,EAAM,CAAC,CAChB,CAAC,CAAC,CACJ,CACA,SAAST,EAA4BF,EAAGO,EAAI,CAU1C,QARIC,EAAI,CAACV,EAAgBE,EAAGO,EAAI,EAAI,EAAE,MAAM,IAAIE,IAAKA,GAAE,CAAC,CAAC,CAAC,EACtDE,EAAOX,EAAE,MAAM,CAAC,EAChBY,EAAUZ,EAAE,MAAM,CAAC,EACnBoB,EAASpB,EAAE,QACXqB,EAAQrB,EAAE,OACVsB,EAAMtB,EAAE,KAGHa,EAAID,EAAU,EAAGC,GAAK,EAAGA,IAIhC,QAHIC,EAAIN,EAAE,OAGDO,EAAI,EAAGA,EAAID,EAAGC,IAAK,CAa1B,QAZId,EAAIO,EAAEO,CAAC,EAGPQ,EAAU,CAAC,EACXC,EAAW,CAAC,EAGZC,EAAaH,EAAIT,CAAC,EAClBa,EAAYJ,EAAIT,EAAI,CAAC,EAGrBc,EAAM,EACDT,EAAIQ,EAAY,EAAGR,GAAKO,EAAYP,IAAK,CAChD,IAAIU,EAAIP,EAAMH,CAAC,EAEXU,IAAMf,EACRc,EAAMP,EAAOF,CAAC,EACLU,EAAIf,IAEbU,EAAQ,KAAKH,EAAOF,CAAC,CAAC,EACtBM,EAAS,KAAKI,CAAC,EAEnB,CACA,GAAKhC,EAAY+B,EAAK,CAAC,EAUhB,GAAK/B,EAAYK,EAAEY,CAAC,EAAG,CAAC,GAYxB,GAAIE,IAAM,EAAG,CAGlB,IAAIC,EAAO,CAAC,GAAGf,CAAC,EAChBe,EAAKH,CAAC,EAAI,EAGV,QAASgB,GAAM,EAAGC,EAAcN,EAAS,OAAQK,GAAMC,EAAaD,KAAO,CACzE,IAAIE,GAAMP,EAASK,EAAG,EACtBb,EAAKe,EAAG,EAAIpC,EAAeqB,EAAKe,EAAG,EAAGR,EAAQM,EAAG,CAAC,CACpD,CACArB,EAAE,KAAKQ,CAAI,CACb,MAxBkC,CAGhC,GAAID,IAAM,EAER,MAAO,CAAC,EAGRP,EAAE,OAAOO,EAAG,CAAC,EACbA,GAAK,EACLD,GAAK,CAET,KAtB0B,CAGxBb,EAAEY,CAAC,EAAIpB,EAAaQ,EAAEY,CAAC,EAAGc,CAAG,EAG7B,QAASK,EAAM,EAAGC,EAAaT,EAAS,OAAQQ,EAAMC,EAAYD,IAAO,CACvE,IAAIE,EAAKV,EAASQ,CAAG,EACrB/B,EAAEiC,CAAE,EAAIvC,EAAeM,EAAEiC,CAAE,EAAGxC,EAAeO,EAAEY,CAAC,EAAGU,EAAQS,CAAG,CAAC,CAAC,CAClE,CACF,CAyBF,CAEF,OAAOxB,EAAE,IAAIW,IAAK,IAAItB,EAAY,CAChC,KAAMsB,GAAE,IAAIV,IAAK,CAACA,EAAC,CAAC,EACpB,KAAM,CAACE,EAAM,CAAC,CAChB,CAAC,CAAC,CACJ,CACF,CAAC,EC3LD,IAAIwB,IAAO,kBACPC,IAAe,CAAC,QAAS,aAAa,EAC/BC,GAAuCC,EAAQH,IAAMC,IAAcG,GAAQ,CACpF,GAAI,CACF,MAAAC,EACA,YAAAC,CACF,EAAIF,EAmBJ,OAAO,SAAyBG,EAAGC,EAAGC,EAAU,CAE9C,IAAIC,EAAUH,EAAE,QACZI,EAASJ,EAAE,OACXK,EAAOL,EAAE,KACTM,EAAQN,EAAE,MACVO,EAAMP,EAAE,WAAaA,EAAE,QAAU,OAAYA,EAAE,UAAYA,EAAE,YAAY,EAEzEQ,EAAUP,EAAE,QACZQ,EAASR,EAAE,OACXS,EAAOT,EAAE,KACTU,EAAQV,EAAE,MACVW,EAAMX,EAAE,WAAaA,EAAE,QAAU,OAAYA,EAAE,UAAYA,EAAE,YAAY,EAG7E,GAAIK,EAAM,SAAWK,EAAM,OACzB,MAAM,IAAIE,GAAeP,EAAM,OAAQK,EAAM,MAAM,EAIrD,GAAIL,EAAM,CAAC,IAAMK,EAAM,CAAC,GAAKL,EAAM,CAAC,IAAMK,EAAM,CAAC,EAC/C,MAAM,IAAI,WAAW,iCAAmCL,EAAQ,0BAA4BK,EAAQ,GAAG,EAIzG,GAAI,CAACR,GAAW,CAACK,EACf,MAAM,IAAI,MAAM,qDAAqD,EAIvE,IAAIM,EAAOR,EAAM,CAAC,EACdS,EAAUT,EAAM,CAAC,EAGjBU,EAEAC,EAAKlB,EAELmB,EAAO,EAEPC,EAAKjB,EAGL,OAAOK,GAAQ,UAAYA,IAAQK,GAAOL,IAAQ,UAEpDS,EAAKT,EAELU,EAAKnB,EAAM,KAAKC,EAAa,CAACiB,EAAIA,CAAE,CAAC,EAErCE,EAAOpB,EAAM,QAAQ,EAAGkB,CAAE,EAE1BG,EAAKrB,EAAM,KAAKI,EAAU,CAACc,EAAIA,CAAE,CAAC,GAiBpC,QAbII,EAAU,CAAC,EACXC,EAAS,CAAC,EACVC,EAAO,CAAC,EAGRC,EAAI,CAAC,EAELC,EAAI,CAAC,EAGLC,EAAGC,EAAIC,EAAIC,EAGNC,EAAI,EAAGA,EAAId,EAASc,IAAK,CAEhCP,EAAKO,CAAC,EAAIR,EAAO,OAEjB,IAAIS,EAAOD,EAAI,EAEf,IAAKH,EAAKrB,EAAKwB,CAAC,EAAGF,EAAKtB,EAAKwB,EAAI,CAAC,EAAGJ,EAAIC,EAAID,EAAIE,EAAIF,IAEnDG,EAAIxB,EAAOqB,CAAC,EAEZD,EAAEI,CAAC,EAAIE,EAEPP,EAAEK,CAAC,EAAIzB,EAAQsB,CAAC,EAEhBJ,EAAO,KAAKO,CAAC,EAGf,IAAKF,EAAKhB,EAAKmB,CAAC,EAAGF,EAAKjB,EAAKmB,EAAI,CAAC,EAAGJ,EAAIC,EAAID,EAAIE,EAAIF,IAEnDG,EAAInB,EAAOgB,CAAC,EAERD,EAAEI,CAAC,IAAME,IAEXP,EAAEK,CAAC,EAAIT,EAAGI,EAAEK,CAAC,EAAGpB,EAAQiB,CAAC,CAAC,GAM9B,IAFAA,EAAIH,EAAKO,CAAC,EAEHJ,EAAIJ,EAAO,QAAQ,CAExBO,EAAIP,EAAOI,CAAC,EAEZ,IAAIM,GAAIR,EAAEK,CAAC,EAENX,EAAGc,GAAGb,CAAI,EAObG,EAAO,OAAOI,EAAG,CAAC,GALlBL,EAAQ,KAAKW,EAAC,EAEdN,IAKJ,CACF,CAEA,OAAAH,EAAKP,CAAO,EAAIM,EAAO,OAGhBrB,EAAE,mBAAmB,CAC1B,OAAQoB,EACR,MAAOC,EACP,IAAKC,EACL,KAAM,CAACR,EAAMC,CAAO,EACpB,SAAUR,IAAQP,EAAE,WAAaY,IAAQX,EAAE,UAAYe,EAAK,MAC9D,CAAC,CACH,CACF,CAAC,ECxJM,IAAIgB,GAA+CC,EAAQ,0BAA2B,CAAC,QAAS,QAAQ,EAAGC,GAAQ,CACxH,GAAI,CACF,MAAAC,EACA,OAAAC,CACF,EAAIF,EACJ,MAAO,CACL,gBAAiBC,EAAM,QAAQ,sBAAuBE,GAAU,CAACC,EAAGC,IAAMF,EAAOD,EAAOE,CAAC,EAAGC,CAAC,EAAE,QAAQ,CAAC,EACxG,mBAAoBJ,EAAM,QAAQ,yBAA0BK,GAAU,CAACF,EAAGC,IAAMC,EAAOJ,EAAOE,CAAC,EAAGC,CAAC,EAAE,QAAQ,CAAC,EAC9G,gBAAiBJ,EAAM,QAAQ,sBAAuBM,GAAU,CAACH,EAAGC,IAAME,EAAOH,EAAGF,EAAOG,CAAC,CAAC,EAAE,QAAQ,CAAC,EACxG,mBAAoBJ,EAAM,QAAQ,yBAA0BO,GAAU,CAACJ,EAAGC,IAAMG,EAAOJ,EAAGF,EAAOG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAChH,CACF,CAAC,ECDD,IAAII,GAAO,YACPC,IAAe,CAAC,QAAS,SAAU,cAAe,QAAS,cAAe,QAAQ,EAC3EC,GAAiCC,EAAQH,GAAMC,IAAcG,GAAQ,CAC9E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,YAAAC,EACA,MAAAC,EACA,YAAAC,EACA,OAAAC,CACF,EAAIN,EACAO,EAAiBC,GAAqB,CACxC,MAAAP,CACF,CAAC,EACGQ,EAAgBC,GAAoB,CACtC,MAAAT,EACA,YAAAE,CACF,CAAC,EACGQ,EAAkBC,GAAsB,CAC1C,MAAAX,EACA,YAAAE,CACF,CAAC,EACGU,EAAiBC,GAAqB,CACxC,MAAAb,EACA,YAAAI,CACF,CAAC,EACGU,EAAgBC,GAAoB,CACtC,MAAAf,EACA,YAAAE,CACF,CAAC,EACGc,EAAeC,GAAmB,CACpC,MAAAjB,CACF,CAAC,EACGkB,EAAuBC,GAA2B,CACpD,MAAAnB,EACA,OAAAC,EACA,OAAAI,CACF,CAAC,EACGe,EAA0BC,GAA8B,CAC1D,MAAArB,EACA,OAAAC,CACF,CAAC,EAyBD,OAAOD,EAAML,GAAM,CACjB,iBAAkB2B,GAClB,uBAAwBC,GACxB,iBAAkB,CAACC,EAAGC,IAAMD,GAAKC,EACjC,mCAAoCzB,EAAM,YAAY0B,GAAQ,CAACF,EAAGC,IAE5DvB,EAAYuB,EAAG,CAAC,EACXD,EAAE,MAAM,EAEVV,EAAcU,EAAGC,EAAGC,EAAM,EAAK,CACvC,EACD,kCAAmC1B,EAAM,YAAY0B,GAAQ,CAACF,EAAGC,IAE3DvB,EAAYuB,EAAG,CAAC,EACXD,EAAE,MAAM,EAEVR,EAAaQ,EAAGC,EAAGC,EAAM,EAAK,CACtC,EACD,mCAAoC1B,EAAM,YAAY0B,GAAQ,CAACF,EAAGC,IAE5DvB,EAAYsB,EAAG,CAAC,EACXrB,EAAMsB,EAAE,KAAK,EAAGA,EAAE,QAAQ,CAAC,EAE7Bb,EAAea,EAAGD,EAAGE,EAAM,EAAI,CACvC,EACD,kCAAmC1B,EAAM,YAAY0B,GAAQ,CAACF,EAAGC,IAE3DvB,EAAYsB,EAAG,CAAC,EACXrB,EAAMsB,EAAE,KAAK,EAAGA,EAAE,QAAQ,CAAC,EAE7BT,EAAaS,EAAGD,EAAGE,EAAM,EAAI,CACrC,CACH,EAAGN,EAAyBF,EAAqB,CAC/C,GAAIR,EACJ,GAAIJ,EACJ,GAAIE,CACN,CAAC,CAAC,CACJ,CAAC,ECvGD,IAAImB,GAAO,kBACPC,IAAe,CAAC,QAAS,SAAU,cAAe,QAAS,cAAe,QAAQ,EAC3EC,GAAuCC,EAAQH,GAAMC,IAAcG,GAAQ,CACpF,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,YAAAC,EACA,MAAAC,EACA,YAAAC,EACA,OAAAC,CACF,EAAIN,EACAO,EAAiBC,GAAqB,CACxC,MAAAP,CACF,CAAC,EACGQ,EAAgBC,GAAoB,CACtC,MAAAT,EACA,YAAAE,CACF,CAAC,EACGQ,EAAkBC,GAAsB,CAC1C,MAAAX,EACA,YAAAE,CACF,CAAC,EACGU,EAAiBC,GAAqB,CACxC,MAAAb,EACA,YAAAI,CACF,CAAC,EACGU,EAAgBC,GAAoB,CACtC,MAAAf,EACA,YAAAE,CACF,CAAC,EACGc,EAAeC,GAAmB,CACpC,MAAAjB,CACF,CAAC,EACGkB,EAAuBC,GAA2B,CACpD,MAAAnB,EACA,OAAAC,EACA,OAAAI,CACF,CAAC,EACGe,EAA0BC,GAA8B,CAC1D,MAAArB,EACA,OAAAC,CACF,CAAC,EAyBD,OAAOD,EAAML,GAAM,CACjB,iBAAkB2B,GAClB,uBAAwBC,GACxB,iBAAkB,CAACC,EAAGC,IAAMD,GAAKC,EACjC,mCAAoCzB,EAAM,YAAY0B,GAAQ,CAACF,EAAGC,IAE5DvB,EAAYuB,EAAG,CAAC,EACXD,EAAE,MAAM,EAEVV,EAAcU,EAAGC,EAAGC,EAAM,EAAK,CACvC,EACD,kCAAmC1B,EAAM,YAAY0B,GAAQ,CAACF,EAAGC,IAE3DvB,EAAYuB,EAAG,CAAC,EACXD,EAAE,MAAM,EAEVR,EAAaQ,EAAGC,EAAGC,EAAM,EAAK,CACtC,EACD,mCAAoC1B,EAAM,YAAY0B,GAAQ,CAACF,EAAGC,IAE5DvB,EAAYsB,EAAG,CAAC,EACXrB,EAAMsB,EAAE,KAAK,EAAGA,EAAE,QAAQ,CAAC,EAE7Bb,EAAea,EAAGD,EAAGE,EAAM,EAAI,CACvC,EACD,kCAAmC1B,EAAM,YAAY0B,GAAQ,CAACF,EAAGC,IAE3DvB,EAAYsB,EAAG,CAAC,EACXrB,EAAMsB,EAAE,KAAK,EAAGA,EAAE,QAAQ,CAAC,EAE7BT,EAAaS,EAAGD,EAAGE,EAAM,EAAI,CACrC,CACH,EAAGN,EAAyBF,EAAqB,CAC/C,GAAIR,EACJ,GAAIJ,EACJ,GAAIE,CACN,CAAC,CAAC,CACJ,CAAC,ECxGD,IAAImB,GAAO,gBACPC,IAAe,CAAC,QAAS,SAAU,cAAe,QAAS,cAAe,QAAQ,EAC3EC,GAAqCC,EAAQH,GAAMC,IAAcG,GAAQ,CAClF,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,YAAAC,EACA,MAAAC,EACA,YAAAC,EACA,OAAAC,CACF,EAAIN,EACAO,EAAiBC,GAAqB,CACxC,MAAAP,CACF,CAAC,EACGQ,EAAgBC,GAAoB,CACtC,MAAAT,EACA,YAAAE,CACF,CAAC,EACGQ,EAAkBC,GAAsB,CAC1C,MAAAX,EACA,YAAAE,CACF,CAAC,EACGU,EAAiBC,GAAqB,CACxC,MAAAb,EACA,YAAAI,CACF,CAAC,EACGU,EAAgBC,GAAoB,CACtC,MAAAf,EACA,YAAAE,CACF,CAAC,EACGc,EAAeC,GAAmB,CACpC,MAAAjB,CACF,CAAC,EACGkB,EAAuBC,GAA2B,CACpD,MAAAnB,EACA,OAAAC,EACA,OAAAI,CACF,CAAC,EACGe,EAA0BC,GAA8B,CAC1D,MAAArB,EACA,OAAAC,CACF,CAAC,EA0BD,OAAOD,EAAML,GAAM,CACjB,iBAAkB2B,GAGlB,mCAAoCtB,EAAM,YAAYuB,GAAQ,CAACC,EAAGC,IAE5DvB,EAAYuB,EAAG,CAAC,EACXD,EAAE,MAAM,EAEVV,EAAcU,EAAGC,EAAGF,EAAM,EAAK,CACvC,EACD,kCAAmCvB,EAAM,YAAYuB,GAAQ,CAACC,EAAGC,IAE3DvB,EAAYuB,EAAG,CAAC,EACXD,EAAE,MAAM,EAEVR,EAAaQ,EAAGC,EAAGF,EAAM,EAAK,CACtC,EACD,mCAAoCvB,EAAM,YAAYuB,GAAQ,CAACC,EAAGC,IAE5DvB,EAAYsB,EAAG,CAAC,EACXrB,EAAMsB,EAAE,KAAK,EAAGA,EAAE,QAAQ,CAAC,EAE7Bb,EAAea,EAAGD,EAAGD,EAAM,EAAI,CACvC,EACD,kCAAmCvB,EAAM,YAAYuB,GAAQ,CAACC,EAAGC,IAE3DvB,EAAYsB,EAAG,CAAC,EACXrB,EAAMsB,EAAE,KAAK,EAAGA,EAAE,QAAQ,CAAC,EAE7BT,EAAaS,EAAGD,EAAGD,EAAM,EAAI,CACrC,CACH,EAAGH,EAAyBF,EAAqB,CAC/C,GAAIR,EACJ,GAAIJ,EACJ,GAAIE,CACN,CAAC,CAAC,CACJ,CAAC,EC3GD,IAAIkB,GAAO,MACPC,IAAe,CAAC,QAAS,SAAU,cAAe,QAAS,MAAO,QAAQ,EACnEC,GAA2BC,EAAQH,GAAMC,IAAcG,GAAQ,CACxE,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,YAAAC,EACA,MAAAC,EACA,IAAAC,EACA,OAAAC,CACF,EAAIN,EACAO,EAAgBC,GAAoB,CACtC,MAAAP,EACA,YAAAE,CACF,CAAC,EACGM,EAAiBC,GAAqB,CACxC,MAAAT,EACA,YAAAE,CACF,CAAC,EACGQ,EAAgBC,GAAoB,CACtC,MAAAX,EACA,YAAAE,CACF,CAAC,EACGU,EAAeC,GAAmB,CACpC,MAAAb,CACF,CAAC,EACGc,EAAuBC,GAA2B,CACpD,MAAAf,EACA,OAAAC,EACA,OAAAI,CACF,CAAC,EA8BD,OAAOL,EAAML,GAAM,CACjB,iBAAkBqB,GAClB,mBAAoB,SAAyBC,EAAGC,EAAG,CACjD,OAAQD,EAAE,KAAO,GAAKA,EAAE,KAAO,KAAOC,EAAE,KAAO,GAAKA,EAAE,KAAO,EAC/D,EACA,uBAAwB,SAA6BD,EAAGC,EAAG,CACzD,MAAO,CAACD,EAAE,OAAO,GAAK,CAACC,EAAE,OAAO,GAAK,CAACD,EAAE,MAAM,GAAK,CAACC,EAAE,MAAM,CAC9D,EACA,iBAAkBF,GAClB,aAAchB,EAAM,YAAYmB,GAAQ,CAACF,EAAGC,IAAMC,EAAKF,EAAE,OAAS,EAAGC,EAAE,OAAS,CAAC,CAAC,EAClF,oBAAqBlB,EAAM,YAAYmB,GAAQ,CAACF,EAAGC,IAE7Cd,EAAIc,CAAC,EAEAf,EAAMc,EAAE,KAAK,EAAGA,EAAE,QAAQ,CAAC,EAE7BP,EAAcO,EAAGC,EAAGC,EAAM,EAAK,CACvC,EACD,mBAAoBnB,EAAM,YAAYmB,GAAQ,CAACF,EAAGC,IAE5Cd,EAAIc,CAAC,EAEAf,EAAMc,EAAE,KAAK,EAAGA,EAAE,QAAQ,CAAC,EAE7BL,EAAaK,EAAGC,EAAGC,EAAM,EAAK,CACtC,EACD,oBAAqBnB,EAAM,YAAYmB,GAAQ,CAACF,EAAGC,IAE7Cd,EAAIa,CAAC,EAEAd,EAAMc,EAAE,KAAK,EAAGA,EAAE,QAAQ,CAAC,EAE7BP,EAAcQ,EAAGD,EAAGE,EAAM,EAAI,CACtC,EACD,mBAAoBnB,EAAM,YAAYmB,GAAQ,CAACF,EAAGC,IAE5Cd,EAAIa,CAAC,EAEAd,EAAMc,EAAE,KAAK,EAAGA,EAAE,QAAQ,CAAC,EAE7BL,EAAaM,EAAGD,EAAGE,EAAM,EAAI,CACrC,EACD,aAAcnB,EAAM,YAAYmB,GAAQ,CAACF,EAAGC,IAEnCC,EAAKlB,EAAOgB,CAAC,EAAGC,CAAC,EAAE,QAAQ,CACnC,EACD,aAAclB,EAAM,YAAYmB,GAAQ,CAACF,EAAGC,IAEnCC,EAAKF,EAAGhB,EAAOiB,CAAC,CAAC,EAAE,QAAQ,CACnC,CACH,EAAGJ,EAAqB,CACtB,GAAIN,EACJ,GAAIF,CACN,CAAC,CAAC,CACJ,CAAC,ECjHD,IAAIc,GAAO,UACPC,IAAe,CAAC,QAAS,SAAU,SAAU,cAAe,YAAa,WAAY,cAAe,QAAQ,EACrGC,GAA+BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC5E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,YAAAC,EACA,OAAAC,EACA,UAAAC,EACA,SAAAC,EACA,YAAAC,EACA,OAAAC,CACF,EAAIR,EACAS,EAAgBC,GAAoB,CACtC,MAAAT,CACF,CAAC,EACGU,EAAiBC,GAAqB,CACxC,MAAAX,EACA,YAAAE,CACF,CAAC,EACGU,EAAgBC,GAAoB,CACtC,MAAAb,EACA,YAAAM,CACF,CAAC,EACGQ,EAAuBC,GAA2B,CACpD,MAAAf,EACA,OAAAG,EACA,OAAAI,CACF,CAAC,EACGS,EAAeC,GAAmB,CACpC,MAAAjB,CACF,CAAC,EAuCD,OAAOA,EAAML,GAAMuB,IAAoB,CACrC,MAAAlB,EACA,OAAAC,CACF,CAAC,EAAG,CACF,mBAAoB,SAAyBkB,EAAGC,EAAG,CACjD,OAAOD,IAAMC,EAAI,EAAID,EAAIC,EAAI,EAAI,EACnC,EACA,uBAAwB,SAA6BD,EAAGC,EAAG,CACzD,OAAOC,GAAeF,EAAGC,EAAGnB,EAAO,OAAQA,EAAO,MAAM,EAAI,IAAIG,EAAU,CAAC,EAAI,IAAIA,EAAUe,EAAE,IAAIC,CAAC,CAAC,CACvG,EACA,iBAAkB,SAAuBD,EAAGC,EAAG,CAC7C,OAAOD,IAAMC,EAAI,GAAKD,EAAIC,EAAI,GAAK,CAAC,EACtC,EACA,qBAAsB,SAA2BD,EAAGC,EAAG,CACrD,OAAO,IAAIf,EAASc,EAAE,QAAQC,CAAC,CAAC,CAClC,EACA,mBAAoB,UAA2B,CAC7C,MAAM,IAAI,UAAU,qDAAqD,CAC3E,CACF,EAAGJ,EAAcF,EAAqB,CACpC,GAAIJ,EACJ,GAAIF,EACJ,GAAII,CACN,CAAC,CAAC,CACJ,CAAC,EACUM,IAAqCpB,EAAQH,GAAM,CAAC,QAAS,QAAQ,EAAG2B,GAAS,CAC1F,GAAI,CACF,MAAAtB,EACA,OAAAC,CACF,EAAIqB,EACJ,OAAOtB,EAAML,GAAM,CACjB,iBAAkB,SAAuBwB,EAAGC,EAAG,CAC7C,OAAOC,GAAYF,EAAGC,EAAGnB,EAAO,OAAQA,EAAO,MAAM,EAAI,EAAIkB,EAAIC,EAAI,EAAI,EAC3E,CACF,CAAC,CACH,CAAC,ECjHD,IAAAG,GAAwB,WAGxB,IAAIC,GAAO,iBACPC,IAAe,CAAC,QAAS,SAAS,EAC3BC,GAAsCC,EAAQH,GAAMC,IAAcG,GAAQ,CACnF,GAAI,CACF,MAAAC,EACA,QAAAC,CACF,EAAIF,EACAG,EAAkBD,EAAQ,WAAW,iBAAiB,EAsE1D,OAAOD,EAAML,GAAM,CACjB,WAAYQ,CACd,CAAC,EAED,SAASA,EAAgBC,EAAGC,EAAG,CAC7B,IAAIC,EAAQC,GAAOH,CAAC,EAChBI,EAAQD,GAAOF,CAAC,EAChBI,EAGJ,IAAKH,IAAU,UAAYA,IAAU,aAAeA,IAAU,cAAgBE,IAAU,UAAYA,IAAU,aAAeA,IAAU,YAErI,OADAC,EAAIR,EAAQG,EAAGC,CAAC,EACZI,EAAE,SAAS,IAAM,IAEZA,EAAI,EAAI,EAAI,MAEZ,GAAAC,SAAYJ,EAAOE,CAAK,EAKnC,IAAIG,EAAW,CAAC,QAAS,cAAe,cAAc,EACtD,GAAIA,EAAS,SAASL,CAAK,GAAKK,EAAS,SAASH,CAAK,EAErD,OADAC,EAAIG,EAAyBT,EAAiBC,EAAGC,CAAC,EAC9CI,IAAM,EACDA,KAEA,GAAAC,SAAYJ,EAAOE,CAAK,EAKnC,GAAIF,IAAUE,EACZ,SAAO,GAAAE,SAAYJ,EAAOE,CAAK,EAEjC,GAAIF,IAAU,UACZ,OAAOO,IAAsBT,EAAGC,CAAC,EAEnC,GAAIC,IAAU,OACZ,OAAIF,EAAE,UAAUC,CAAC,EACRF,EAAgBC,EAAE,MAAOC,EAAE,KAAK,EAIlCS,EAAcX,EAAiBC,EAAE,YAAY,EAAGC,EAAE,YAAY,CAAC,EAExE,GAAIC,IAAU,UACZ,OAAOJ,EAAgBE,EAAGC,CAAC,EAE7B,GAAIC,IAAU,SACZ,SAAO,GAAAI,SAAYN,EAAGC,CAAC,EAEzB,GAAIC,IAAU,SACZ,OAAOS,EAAeZ,EAAiBC,EAAGC,CAAC,EAK7C,GAHIC,IAAU,QAGVA,IAAU,YACZ,MAAO,GAIT,MAAM,IAAI,UAAU,8BAAgCA,EAAQ,GAAG,CACjE,CASA,SAASM,EAAyBI,EAAgBZ,EAAGC,EAAG,CACtD,OAAIY,GAAeb,CAAC,GAAKa,GAAeZ,CAAC,EAChCS,EAAcE,EAAgBZ,EAAE,OAAO,EAAE,OAAQC,EAAE,OAAO,EAAE,MAAM,EAEvEY,GAAeb,CAAC,EAEXQ,EAAyBI,EAAgBZ,EAAE,QAAQ,EAAGC,CAAC,EAE5DY,GAAeZ,CAAC,EAEXO,EAAyBI,EAAgBZ,EAAGC,EAAE,QAAQ,CAAC,EAI5Da,GAAcd,CAAC,EACVQ,EAAyBI,EAAgBZ,EAAE,OAAO,EAAE,KAAMC,CAAC,EAEhEa,GAAcb,CAAC,EACVO,EAAyBI,EAAgBZ,EAAGC,EAAE,OAAO,EAAE,IAAI,EAI/D,MAAM,QAAQD,CAAC,EAGf,MAAM,QAAQC,CAAC,EAGbS,EAAcE,EAAgBZ,EAAGC,CAAC,EAFhCO,EAAyBI,EAAgBZ,EAAG,CAACC,CAAC,CAAC,EAH/CO,EAAyBI,EAAgB,CAACZ,CAAC,EAAGC,CAAC,CAM1D,CAaA,SAASS,EAAcE,EAAgBZ,EAAGC,EAAG,CAE3C,QAASc,EAAI,EAAGC,EAAK,KAAK,IAAIhB,EAAE,OAAQC,EAAE,MAAM,EAAGc,EAAIC,EAAID,IAAK,CAC9D,IAAIE,EAAIL,EAAeZ,EAAEe,CAAC,EAAGd,EAAEc,CAAC,CAAC,EACjC,GAAIE,IAAM,EACR,OAAOA,CAEX,CAGA,OAAIjB,EAAE,OAASC,EAAE,OACR,EAELD,EAAE,OAASC,EAAE,OACR,GAIF,CACT,CAYA,SAASU,EAAeC,EAAgBZ,EAAGC,EAAG,CAC5C,IAAIiB,EAAQ,OAAO,KAAKlB,CAAC,EACrBmB,EAAQ,OAAO,KAAKlB,CAAC,EAGzBiB,EAAM,KAAK,GAAAZ,OAAW,EACtBa,EAAM,KAAK,GAAAb,OAAW,EACtB,IAAID,EAAIK,EAAcE,EAAgBM,EAAOC,CAAK,EAClD,GAAId,IAAM,EACR,OAAOA,EAIT,QAASU,EAAI,EAAGA,EAAIG,EAAM,OAAQH,IAAK,CACrC,IAAI,EAAIH,EAAeZ,EAAEkB,EAAMH,CAAC,CAAC,EAAGd,EAAEkB,EAAMJ,CAAC,CAAC,CAAC,EAC/C,GAAI,IAAM,EACR,OAAO,CAEX,CACA,MAAO,EACT,CACF,CAAC,EAYD,SAASN,IAAsBT,EAAGC,EAAG,CACnC,OAAID,EAAE,GAAKC,EAAE,GACJ,EAELD,EAAE,GAAKC,EAAE,GACJ,GAELD,EAAE,GAAKC,EAAE,GACJ,EAELD,EAAE,GAAKC,EAAE,GACJ,GAEF,CACT,CC9QA,IAAImB,GAAO,cACPC,IAAe,CAAC,QAAS,SAAU,QAAQ,EAC/CC,GAAa,UAAY,WAClB,IAAIC,GAAmCC,EAAQJ,GAAMC,IAAcI,GAAQ,CAChF,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,OAAAC,CACF,EAAIH,EACAI,EAAuBC,GAA2B,CACpD,MAAAJ,EACA,OAAAC,EACA,OAAAC,CACF,CAAC,EA8BD,OAAOF,EAAMN,GAAME,GAAcO,EAAqB,CACpD,KAAMP,GACN,GAAI,EACN,CAAC,CAAC,CACJ,CAAC,EC7CD,IAAIS,GAAO,QACPC,IAAe,CAAC,QAAS,SAAU,cAAe,cAAe,QAAQ,EAClEC,GAA6BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC1E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,YAAAC,EACA,YAAAC,EACA,OAAAC,CACF,EAAIL,EACAM,EAAgBC,GAAoB,CACtC,MAAAN,CACF,CAAC,EACGO,EAAgBC,GAAoB,CACtC,MAAAR,EACA,YAAAG,CACF,CAAC,EACGM,EAAgBC,GAAoB,CACtC,MAAAV,EACA,YAAAG,CACF,CAAC,EACGQ,EAAuBC,GAA2B,CACpD,MAAAZ,EACA,OAAAC,EACA,OAAAG,CACF,CAAC,EA8CD,OAAOJ,EAAML,GAAMkB,IAAkB,CACnC,MAAAb,EACA,YAAAE,CACF,CAAC,EAAGS,EAAqB,CACvB,KAAMT,EACN,GAAIK,EACJ,GAAIF,EACJ,GAAII,CACN,CAAC,CAAC,CACJ,CAAC,EACUI,IAAoBf,EAAQH,GAAM,CAAC,QAAS,aAAa,EAAGmB,GAAS,CAC9E,GAAI,CACF,MAAAd,EACA,YAAAE,CACF,EAAIY,EACJ,OAAOd,EAAML,GAAM,CACjB,WAAY,SAAiBoB,EAAGC,EAAG,CAEjC,OAAID,IAAM,KACDC,IAAM,KAEXA,IAAM,KACDD,IAAM,KAEXA,IAAM,OACDC,IAAM,OAEXA,IAAM,OACDD,IAAM,OAERb,EAAYa,EAAGC,CAAC,CACzB,CACF,CAAC,CACH,CAAC,EC5GD,IAAIC,GAAO,YACPC,IAAe,CAAC,QAAS,cAAe,QAAQ,EACzCC,GAAiCC,EAAQH,GAAMC,IAAcG,GAAQ,CAC9E,GAAI,CACF,MAAAC,EACA,YAAAC,EACA,OAAAC,CACF,EAAIH,EA2BJ,OAAOC,EAAML,GAAM,CACjB,WAAY,SAAiBQ,EAAGC,EAAG,CACjC,OAAOF,EAAOD,EAAYE,EAAGC,CAAC,CAAC,CACjC,CACF,CAAC,CACH,CAAC,EChCD,IAAIC,GAAO,UACPC,IAAe,CAAC,QAAS,SAAU,SAAU,cAAe,QAAQ,EAC7DC,GAA+BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC5E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,OAAAC,EACA,YAAAC,EACA,OAAAC,CACF,EAAIL,EACAM,EAAgBC,GAAoB,CACtC,MAAAN,CACF,CAAC,EACGO,EAAgBC,GAAoB,CACtC,MAAAR,EACA,YAAAG,CACF,CAAC,EACGM,EAAgBC,GAAoB,CACtC,MAAAV,EACA,YAAAG,CACF,CAAC,EACGQ,EAAuBC,GAA2B,CACpD,MAAAZ,EACA,OAAAE,EACA,OAAAE,CACF,CAAC,EACGS,EAAeC,GAAmB,CACpC,MAAAd,CACF,CAAC,EAiCD,OAAOA,EAAML,GAAMoB,IAAoB,CACrC,MAAAf,EACA,OAAAC,CACF,CAAC,EAAG,CACF,mBAAoB,CAACe,EAAGC,IAAMD,EAAIC,EAClC,uBAAwB,SAA6BD,EAAGC,EAAG,CACzD,OAAOD,EAAE,GAAGC,CAAC,GAAK,CAACC,GAAeF,EAAGC,EAAGhB,EAAO,OAAQA,EAAO,MAAM,CACtE,EACA,iBAAkB,CAACe,EAAGC,IAAMD,EAAIC,EAChC,qBAAsB,CAACD,EAAGC,IAAMD,EAAE,QAAQC,CAAC,IAAM,GACjD,mBAAoB,SAAyBD,EAAGC,EAAG,CACjD,MAAM,IAAI,UAAU,qDAAqD,CAC3E,CACF,EAAGJ,EAAcF,EAAqB,CACpC,GAAIJ,EACJ,GAAIF,EACJ,GAAII,CACN,CAAC,CAAC,CACJ,CAAC,EACUM,IAAqCjB,EAAQH,GAAM,CAAC,QAAS,QAAQ,EAAGwB,GAAS,CAC1F,GAAI,CACF,MAAAnB,EACA,OAAAC,CACF,EAAIkB,EACJ,OAAOnB,EAAML,GAAM,CACjB,iBAAkB,SAAuBqB,EAAGC,EAAG,CAC7C,OAAOD,EAAIC,GAAK,CAACC,GAAYF,EAAGC,EAAGhB,EAAO,OAAQA,EAAO,MAAM,CACjE,CACF,CAAC,CACH,CAAC,EC1FD,IAAImB,GAAO,YACPC,IAAe,CAAC,QAAS,SAAU,SAAU,cAAe,QAAQ,EAC7DC,GAAiCC,EAAQH,GAAMC,IAAcG,GAAQ,CAC9E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,OAAAC,EACA,YAAAC,EACA,OAAAC,CACF,EAAIL,EACAM,EAAgBC,GAAoB,CACtC,MAAAN,CACF,CAAC,EACGO,EAAgBC,GAAoB,CACtC,MAAAR,EACA,YAAAG,CACF,CAAC,EACGM,EAAgBC,GAAoB,CACtC,MAAAV,EACA,YAAAG,CACF,CAAC,EACGQ,EAAuBC,GAA2B,CACpD,MAAAZ,EACA,OAAAE,EACA,OAAAE,CACF,CAAC,EACGS,EAAeC,GAAmB,CACpC,MAAAd,CACF,CAAC,EA6BD,OAAOA,EAAML,GAAMoB,IAAsB,CACvC,MAAAf,EACA,OAAAC,CACF,CAAC,EAAG,CACF,mBAAoB,CAACe,EAAGC,IAAMD,GAAKC,EACnC,uBAAwB,SAA6BD,EAAGC,EAAG,CACzD,OAAOD,EAAE,IAAIC,CAAC,GAAKC,GAAeF,EAAGC,EAAGhB,EAAO,OAAQA,EAAO,MAAM,CACtE,EACA,iBAAkB,CAACe,EAAGC,IAAMD,GAAKC,EACjC,qBAAsB,CAACD,EAAGC,IAAMD,EAAE,QAAQC,CAAC,IAAM,EACjD,mBAAoB,UAA2B,CAC7C,MAAM,IAAI,UAAU,qDAAqD,CAC3E,CACF,EAAGJ,EAAcF,EAAqB,CACpC,GAAIJ,EACJ,GAAIF,EACJ,GAAII,CACN,CAAC,CAAC,CACJ,CAAC,EACUM,IAAuCjB,EAAQH,GAAM,CAAC,QAAS,QAAQ,EAAGwB,GAAS,CAC5F,GAAI,CACF,MAAAnB,EACA,OAAAC,CACF,EAAIkB,EACJ,OAAOnB,EAAML,GAAM,CACjB,iBAAkB,SAAuBqB,EAAGC,EAAG,CAC7C,OAAOD,GAAKC,GAAKC,GAAYF,EAAGC,EAAGhB,EAAO,OAAQA,EAAO,MAAM,CACjE,CACF,CAAC,CACH,CAAC,ECtFD,IAAImB,GAAO,SACPC,IAAe,CAAC,QAAS,SAAU,SAAU,cAAe,QAAQ,EAC7DC,GAA8BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC3E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,OAAAC,EACA,YAAAC,EACA,OAAAC,CACF,EAAIL,EACAM,EAAgBC,GAAoB,CACtC,MAAAN,CACF,CAAC,EACGO,EAAgBC,GAAoB,CACtC,MAAAR,EACA,YAAAG,CACF,CAAC,EACGM,EAAgBC,GAAoB,CACtC,MAAAV,EACA,YAAAG,CACF,CAAC,EACGQ,EAAuBC,GAA2B,CACpD,MAAAZ,EACA,OAAAE,EACA,OAAAE,CACF,CAAC,EACGS,EAAeC,GAAmB,CACpC,MAAAd,CACF,CAAC,EAiCD,OAAOA,EAAML,GAAMoB,IAAmB,CACpC,MAAAf,EACA,OAAAC,CACF,CAAC,EAAG,CACF,mBAAoB,CAACe,EAAGC,IAAMD,EAAIC,EAClC,uBAAwB,SAA6BD,EAAGC,EAAG,CACzD,OAAOD,EAAE,GAAGC,CAAC,GAAK,CAACC,GAAeF,EAAGC,EAAGhB,EAAO,OAAQA,EAAO,MAAM,CACtE,EACA,iBAAkB,CAACe,EAAGC,IAAMD,EAAIC,EAChC,qBAAsB,CAACD,EAAGC,IAAMD,EAAE,QAAQC,CAAC,IAAM,EACjD,mBAAoB,UAA2B,CAC7C,MAAM,IAAI,UAAU,qDAAqD,CAC3E,CACF,EAAGJ,EAAcF,EAAqB,CACpC,GAAIJ,EACJ,GAAIF,EACJ,GAAII,CACN,CAAC,CAAC,CACJ,CAAC,EACUM,IAAoCjB,EAAQH,GAAM,CAAC,QAAS,QAAQ,EAAGwB,GAAS,CACzF,GAAI,CACF,MAAAnB,EACA,OAAAC,CACF,EAAIkB,EACJ,OAAOnB,EAAML,GAAM,CACjB,iBAAkB,SAAuBqB,EAAGC,EAAG,CAC7C,OAAOD,EAAIC,GAAK,CAACC,GAAYF,EAAGC,EAAGhB,EAAO,OAAQA,EAAO,MAAM,CACjE,CACF,CAAC,CACH,CAAC,EC1FD,IAAImB,GAAO,WACPC,IAAe,CAAC,QAAS,SAAU,SAAU,cAAe,QAAQ,EAC7DC,GAAgCC,EAAQH,GAAMC,IAAcG,GAAQ,CAC7E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,OAAAC,EACA,YAAAC,EACA,OAAAC,CACF,EAAIL,EACAM,EAAgBC,GAAoB,CACtC,MAAAN,CACF,CAAC,EACGO,EAAgBC,GAAoB,CACtC,MAAAR,EACA,YAAAG,CACF,CAAC,EACGM,EAAgBC,GAAoB,CACtC,MAAAV,EACA,YAAAG,CACF,CAAC,EACGQ,EAAuBC,GAA2B,CACpD,MAAAZ,EACA,OAAAE,EACA,OAAAE,CACF,CAAC,EACGS,EAAeC,GAAmB,CACpC,MAAAd,CACF,CAAC,EA6BD,OAAOA,EAAML,GAAMoB,IAAqB,CACtC,MAAAf,EACA,OAAAC,CACF,CAAC,EAAG,CACF,mBAAoB,CAACe,EAAGC,IAAMD,GAAKC,EACnC,uBAAwB,SAA6BD,EAAGC,EAAG,CACzD,OAAOD,EAAE,IAAIC,CAAC,GAAKC,GAAeF,EAAGC,EAAGhB,EAAO,OAAQA,EAAO,MAAM,CACtE,EACA,iBAAkB,SAAuBe,EAAGC,EAAG,CAC7C,OAAOD,GAAKC,CACd,EACA,qBAAsB,CAACD,EAAGC,IAAMD,EAAE,QAAQC,CAAC,IAAM,GACjD,mBAAoB,UAA2B,CAC7C,MAAM,IAAI,UAAU,qDAAqD,CAC3E,CACF,EAAGJ,EAAcF,EAAqB,CACpC,GAAIJ,EACJ,GAAIF,EACJ,GAAII,CACN,CAAC,CAAC,CACJ,CAAC,EACUM,IAAsCjB,EAAQH,GAAM,CAAC,QAAS,QAAQ,EAAGwB,GAAS,CAC3F,GAAI,CACF,MAAAnB,EACA,OAAAC,CACF,EAAIkB,EACJ,OAAOnB,EAAML,GAAM,CACjB,iBAAkB,SAAuBqB,EAAGC,EAAG,CAC7C,OAAOD,GAAKC,GAAKC,GAAYF,EAAGC,EAAGhB,EAAO,OAAQA,EAAO,MAAM,CACjE,CACF,CAAC,CACH,CAAC,EC/FD,IAAImB,GAAO,YACPC,IAAe,CAAC,QAAS,OAAO,EACzBC,GAAiCC,EAAQH,GAAMC,IAAcG,GAAQ,CAC9E,GAAI,CACF,MAAAC,EACA,MAAAC,CACF,EAAIF,EA8BJ,OAAOC,EAAML,GAAM,CACjB,WAAY,SAAiBO,EAAGC,EAAG,CACjC,OAAOC,EAAWF,EAAE,QAAQ,EAAGC,EAAE,QAAQ,CAAC,CAC5C,CACF,CAAC,EAQD,SAASC,EAAWF,EAAGC,EAAG,CACxB,GAAI,MAAM,QAAQD,CAAC,EACjB,GAAI,MAAM,QAAQC,CAAC,EAAG,CACpB,IAAIE,EAAMH,EAAE,OACZ,GAAIG,IAAQF,EAAE,OACZ,MAAO,GAET,QAASG,EAAI,EAAGA,EAAID,EAAKC,IACvB,GAAI,CAACF,EAAWF,EAAEI,CAAC,EAAGH,EAAEG,CAAC,CAAC,EACxB,MAAO,GAGX,MAAO,EACT,KACE,OAAO,OAGT,QAAI,MAAM,QAAQH,CAAC,EACV,GAEAF,EAAMC,EAAGC,CAAC,CAGvB,CACF,CAAC,ECpED,IAAII,GAAO,UACPC,IAAe,CAAC,QAAS,SAAU,cAAe,SAAU,cAAe,QAAQ,EAC5EC,GAA+BC,EAAQH,GAAMC,IAAcG,GAAQ,CAC5E,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,YAAAC,EACA,OAAAC,EACA,YAAAC,EACA,OAAAC,CACF,EAAIN,EACAO,EAAgBC,GAAoB,CACtC,MAAAP,CACF,CAAC,EACGQ,EAAgBC,GAAoB,CACtC,MAAAT,EACA,YAAAI,CACF,CAAC,EACGM,EAAgBC,GAAoB,CACtC,MAAAX,EACA,YAAAI,CACF,CAAC,EACGQ,EAAuBC,GAA2B,CACpD,MAAAb,EACA,OAAAG,EACA,OAAAE,CACF,CAAC,EA6CD,OAAOL,EAAML,GAAMmB,IAAoB,CACrC,MAAAd,EACA,YAAAE,CACF,CAAC,EAAGU,EAAqB,CACvB,KAAMG,EACN,GAAIP,EACJ,GAAIF,EACJ,GAAII,CACN,CAAC,CAAC,EACF,SAASK,EAASC,EAAGC,EAAG,CACtB,MAAO,CAACf,EAAYc,EAAGC,CAAC,CAC1B,CACF,CAAC,EACUH,IAAsBhB,EAAQH,GAAM,CAAC,QAAS,aAAa,EAAGuB,GAAS,CAChF,GAAI,CACF,MAAAlB,EACA,YAAAE,CACF,EAAIgB,EACJ,OAAOlB,EAAML,GAAM,CACjB,WAAY,SAAiBqB,EAAGC,EAAG,CAEjC,OAAID,IAAM,KACDC,IAAM,KAEXA,IAAM,KACDD,IAAM,KAEXA,IAAM,OACDC,IAAM,OAEXA,IAAM,OACDD,IAAM,OAER,CAACd,EAAYc,EAAGC,CAAC,CAC1B,CACF,CAAC,CACH,CAAC,EC7GD,IAAIE,GAAO,kBACPC,IAAe,CAAC,QAAS,YAAa,QAAS,SAAS,EACjDC,GAAuCC,EAAQH,GAAMC,IAAcG,GAAQ,CACpF,GAAI,CACF,MAAAC,EACA,UAAAC,EACA,MAAAC,EACA,QAAAC,CACF,EAAIJ,EACAK,EAAMD,EACNE,EAAO,CAACC,EAAGC,IAAM,CAACJ,EAAQG,EAAGC,CAAC,EAuClC,OAAOP,EAAML,GAAM,CACjB,yBAA0B,SAA8Ba,EAAGC,EAAG,CAC5D,OAAOC,EAAiBF,EAAGC,EAAGL,CAAG,CACnC,EACA,iCAAkC,SAAqCI,EAAGC,EAAGN,EAAS,CACpF,GAAIA,IAAY,MACd,OAAOO,EAAiBF,EAAGC,EAAGL,CAAG,EAC5B,GAAID,IAAY,OACrB,OAAOO,EAAiBF,EAAGC,EAAGJ,CAAI,EAElC,MAAM,IAAI,MAAM,wCAAwC,CAE5D,EACA,mCAAoCK,CACtC,CAAC,EACD,SAASA,EAAiBF,EAAGC,EAAGN,EAAS,CACvC,GAAI,CAACQ,GAAUF,CAAC,GAAKA,EAAI,EACvB,MAAM,IAAI,MAAM,kCAAkC,EAEpD,GAAIG,GAASJ,CAAC,EAAG,CACf,IAAIK,EAAOL,EAAE,KAAK,EAClB,GAAIK,EAAK,OAAS,EAChB,MAAM,IAAI,MAAM,yCAAyC,EAE3D,OAAOC,EAAYN,EAAE,QAAQ,EAAGC,EAAGN,CAAO,CAC5C,CACA,GAAI,MAAM,QAAQK,CAAC,EACjB,OAAOM,EAAYN,EAAGC,EAAGN,CAAO,CAEpC,CAYA,SAASW,EAAYC,EAAKN,EAAGN,EAAS,CACpC,GAAIM,GAAKM,EAAI,OACX,MAAM,IAAI,MAAM,iBAAiB,EAInC,QAASC,EAAI,EAAGA,EAAID,EAAI,OAAQC,IAC9B,GAAIf,EAAUc,EAAIC,CAAC,CAAC,GAAKd,EAAMa,EAAIC,CAAC,CAAC,EACnC,OAAOD,EAAIC,CAAC,EAOhB,QAJIC,EAAO,EACPC,EAAKH,EAAI,OAAS,EAGfE,EAAOC,GAAI,CAMhB,QALIC,EAAIF,EACJG,EAAIF,EACJG,EAAQN,EAAI,KAAK,MAAM,KAAK,OAAO,GAAKG,EAAKD,EAAO,EAAE,EAAIA,CAAI,EAG3DE,EAAIC,GAET,GAAIjB,EAAQY,EAAII,CAAC,EAAGE,CAAK,GAAK,EAAG,CAE/B,IAAIC,EAAMP,EAAIK,CAAC,EACfL,EAAIK,CAAC,EAAIL,EAAII,CAAC,EACdJ,EAAII,CAAC,EAAIG,EACT,EAAEF,CACJ,KAEE,EAAED,EAKFhB,EAAQY,EAAII,CAAC,EAAGE,CAAK,EAAI,GAC3B,EAAEF,EAIAV,GAAKU,EACPD,EAAKC,EAELF,EAAOE,EAAI,CAEf,CACA,OAAOJ,EAAIN,CAAC,CACd,CACF,CAAC,EC5ID,IAAIc,GAAO,OACPC,IAAe,CAAC,QAAS,SAAU,UAAW,gBAAgB,EACvDC,GAA4BC,EAAQH,GAAMC,IAAcG,GAAQ,CACzE,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,QAAAC,EACA,eAAAC,CACF,EAAIJ,EACAK,EAAaF,EACbG,EAAc,CAACC,EAAGC,IAAM,CAACL,EAAQI,EAAGC,CAAC,EAiCzC,OAAOP,EAAML,GAAM,CACjB,MAAO,SAAea,EAAG,CACvB,OAAAC,EAAeD,CAAC,EACTA,EAAE,KAAKJ,CAAU,CAC1B,EACA,OAAQ,SAAgBI,EAAG,CACzB,OAAAE,EAAgBF,CAAC,EACVP,EAAOO,EAAE,QAAQ,EAAE,KAAKJ,CAAU,EAAGI,EAAE,QAAQ,CAAC,CACzD,EACA,kBAAmB,SAAwBA,EAAGG,EAAa,CACzD,OAAAF,EAAeD,CAAC,EACTA,EAAE,KAAKG,CAAW,CAC3B,EACA,mBAAoB,SAAyBH,EAAGG,EAAa,CAC3D,OAAAD,EAAgBF,CAAC,EACVP,EAAOO,EAAE,QAAQ,EAAE,KAAKG,CAAW,EAAGH,EAAE,QAAQ,CAAC,CAC1D,EACA,gBAAiB,SAAsBA,EAAGI,EAAO,CAC/C,OAAAH,EAAeD,CAAC,EACTA,EAAE,KAAKG,EAAYC,CAAK,CAAC,CAClC,EACA,iBAAkB,SAAuBJ,EAAGI,EAAO,CACjD,OAAAF,EAAgBF,CAAC,EACVP,EAAOO,EAAE,QAAQ,EAAE,KAAKG,EAAYC,CAAK,CAAC,EAAGJ,EAAE,QAAQ,CAAC,CACjE,CACF,CAAC,EAOD,SAASG,EAAYC,EAAO,CAC1B,GAAIA,IAAU,MACZ,OAAOR,EACF,GAAIQ,IAAU,OACnB,OAAOP,EACF,GAAIO,IAAU,UACnB,OAAOT,EAEP,MAAM,IAAI,MAAM,6CAA6C,CAEjE,CAQA,SAASM,EAAeI,EAAO,CAC7B,GAAIC,GAAKD,CAAK,EAAE,SAAW,EACzB,MAAM,IAAI,MAAM,gCAAgC,CAEpD,CAQA,SAASH,EAAgBT,EAAQ,CAC/B,GAAIA,EAAO,KAAK,EAAE,SAAW,EAC3B,MAAM,IAAI,MAAM,iCAAiC,CAErD,CACF,CAAC,EC5GD,IAAIc,GAAO,MACPC,IAAe,CAAC,QAAS,SAAU,UAAW,QAAQ,EAC/CC,GAA2BC,EAAQH,GAAMC,IAAcG,GAAQ,CACxE,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,QAAAC,EACA,OAAAC,CACF,EAAIJ,EAgCJ,OAAOC,EAAML,GAAM,CAEjB,iBAAkBS,EAElB,qCAAsC,SAAyCC,EAAOC,EAAK,CACzF,OAAOC,GAAOF,EAAOC,EAAI,QAAQ,EAAGE,CAAQ,CAC9C,EAEA,MAAO,SAAWC,EAAM,CACtB,GAAIC,GAAoBD,CAAI,EAC1B,MAAM,IAAI,UAAU,wCAAwC,EAE9D,OAAOL,EAAKK,CAAI,CAClB,CACF,CAAC,EASD,SAASD,EAASG,EAAGC,EAAG,CACtB,GAAI,CACF,OAAOT,EAAOQ,EAAGC,CAAC,EAAID,EAAIC,CAC5B,OAASC,EAAK,CACZ,MAAMC,GAAoBD,EAAK,MAAOD,CAAC,CACzC,CACF,CAQA,SAASR,EAAKC,EAAO,CACnB,IAAIU,EAYJ,GAXAC,GAAYX,EAAO,SAAUY,EAAO,CAClC,GAAI,CACE,MAAMA,CAAK,GAAK,OAAOA,GAAU,SACnCF,EAAM,KACGA,IAAQ,QAAaZ,EAAOc,EAAOF,CAAG,KAC/CA,EAAME,EAEV,OAASJ,EAAK,CACZ,MAAMC,GAAoBD,EAAK,MAAOI,CAAK,CAC7C,CACF,CAAC,EACGF,IAAQ,OACV,MAAM,IAAI,MAAM,wCAAwC,EAI1D,OAAI,OAAOA,GAAQ,WACjBA,EAAMb,EAAQa,EAAKG,GAAeH,EAAKd,CAAM,CAAC,GAEzCc,CACT,CACF,CAAC,ECpGD,IAAII,GAAO,MACPC,IAAe,CAAC,QAAS,SAAU,UAAW,SAAS,EAChDC,GAA2BC,EAAQH,GAAMC,IAAcG,GAAQ,CACxE,GAAI,CACF,MAAAC,EACA,OAAAC,EACA,QAAAC,EACA,QAAAC,CACF,EAAIJ,EAgCJ,OAAOC,EAAML,GAAM,CAEjB,iBAAkBS,EAElB,qCAAsC,SAAyCC,EAAOC,EAAK,CACzF,OAAOC,GAAOF,EAAOC,EAAI,QAAQ,EAAGE,CAAS,CAC/C,EAEA,MAAO,SAAWC,EAAM,CACtB,GAAIC,GAAoBD,CAAI,EAC1B,MAAM,IAAI,UAAU,wCAAwC,EAE9D,OAAOL,EAAKK,CAAI,CAClB,CACF,CAAC,EASD,SAASD,EAAUG,EAAGC,EAAG,CACvB,GAAI,CACF,OAAOT,EAAQQ,EAAGC,CAAC,EAAID,EAAIC,CAC7B,OAASC,EAAK,CACZ,MAAMC,GAAoBD,EAAK,MAAOD,CAAC,CACzC,CACF,CAQA,SAASR,EAAKC,EAAO,CACnB,IAAIU,EAYJ,GAXAC,GAAYX,EAAO,SAAUY,EAAO,CAClC,GAAI,CACE,MAAMA,CAAK,GAAK,OAAOA,GAAU,SACnCF,EAAM,KACGA,IAAQ,QAAaZ,EAAQc,EAAOF,CAAG,KAChDA,EAAME,EAEV,OAASJ,EAAK,CACZ,MAAMC,GAAoBD,EAAK,MAAOI,CAAK,CAC7C,CACF,CAAC,EACGF,IAAQ,OACV,MAAM,IAAI,MAAM,wCAAwC,EAI1D,OAAI,OAAOA,GAAQ,WACjBA,EAAMb,EAAQa,EAAKG,GAAeH,EAAKd,CAAM,CAAC,GAEzCc,CACT,CACF,CAAC,ECrGD,IAAII,IAAO,uBACPC,IAAe,CAAC,UAAW,aAAa,EACjCC,GAAiDC,EAAQH,IAAMC,IAAcG,GAAQ,CAC9F,GAAI,CACF,QAAAC,EACA,YAAAC,CACF,EAAIF,EACJ,SAASG,EAAqBC,EAAMC,EAAU,CAC5C,GAAI,EAAE,gBAAgBF,GACpB,MAAM,IAAI,YAAY,kDAAkD,EAE1E,GAAIE,GAAY,CAACC,GAASD,CAAQ,EAChC,MAAM,IAAI,MAAM,qBAAuBA,CAAQ,EAEjD,GAAIE,GAASH,CAAI,GAAKI,GAAQJ,CAAI,EAAG,CAEnC,IAAIK,EAAS,IAAIP,EAAYE,EAAMC,CAAQ,EAE3C,KAAK,MAAQI,EAAO,MACpB,KAAK,MAAQA,EAAO,MACpB,KAAK,UAAYA,EAAO,UACxB,KAAK,KAAO,KACZ,KAAK,KAAO,IACd,SAAWL,GAAQI,GAAQJ,EAAK,IAAI,GAAKI,GAAQJ,EAAK,IAAI,EAExD,KAAK,MAAQA,EAAK,KAClB,KAAK,MAAQA,EAAK,KAClB,KAAK,UAAYA,EAAK,SACtB,KAAK,KAAO,OAAOA,EAAK,IAAQ,IAAcA,EAAK,IAAM,KACzD,KAAK,KAAO,OAAOA,EAAK,IAAQ,IAAcA,EAAK,IAAM,SACpD,IAAIA,EAET,MAAM,IAAI,UAAU,6BAA+BM,GAAON,CAAI,EAAI,GAAG,EAGrE,KAAK,MAAQ,CAAC,EACd,KAAK,MAAQ,CAAC,CAAC,EACf,KAAK,UAAYC,EACjB,KAAK,KAAO,KACZ,KAAK,KAAO,KAEhB,CACA,OAAAF,EAAqB,UAAY,IAAID,EAKrCC,EAAqB,UAAU,KAAO,uBACtCA,EAAqB,UAAU,uBAAyB,GAexDA,EAAqB,UAAU,OAAS,SAAUQ,EAAO,CACvD,OAAQ,UAAU,OAAQ,CACxB,IAAK,GACH,CAEE,IAAIC,EAAIV,EAAY,UAAU,OAAO,KAAK,KAAMS,CAAK,EAErD,OAAIJ,GAASK,CAAC,EAEL,IAAIT,EAAqB,CAC9B,KAAMS,EAAE,MACR,KAAMA,EAAE,MACR,SAAUA,EAAE,SACd,CAAC,EAEIA,CACT,CAEF,IAAK,GACL,IAAK,GACH,MAAM,IAAI,MAAM,0DAA0D,EAC5E,QACE,MAAM,IAAI,YAAY,2BAA2B,CACrD,CACF,EAWAT,EAAqB,UAAU,IAAM,UAAY,CAC/C,MAAM,IAAI,MAAM,mDAAmD,CACrE,EAcAA,EAAqB,UAAU,OAAS,UAAY,CAClD,MAAM,IAAI,MAAM,sDAAsD,CACxE,EAOAA,EAAqB,UAAU,QAAU,UAAY,CACnD,MAAM,IAAI,MAAM,uDAAuD,CACzE,EAMAA,EAAqB,UAAU,MAAQ,UAAY,CACjD,OAAO,IAAIA,EAAqB,CAC9B,KAAMU,GAAM,KAAK,KAAK,EACtB,KAAMA,GAAM,KAAK,KAAK,EACtB,SAAU,KAAK,SACjB,CAAC,CACH,EAMAV,EAAqB,UAAU,OAAS,UAAY,CAClD,MAAO,CACL,OAAQ,uBACR,KAAM,KAAK,MACX,KAAM,KAAK,MACX,SAAU,KAAK,SACjB,CACF,EASAA,EAAqB,SAAW,SAAUW,EAAM,CAC9C,OAAO,IAAIX,EAAqBW,CAAI,CACtC,EAUAX,EAAqB,UAAU,SAAW,UAAY,CACpD,MAAM,IAAI,MAAM,wDAAwD,CAC1E,EAMAA,EAAqB,UAAU,IAAM,UAAY,CAE/C,GAAI,KAAK,OAAS,KAAM,CAEtB,IAAIS,EAAI,KAER,KAAK,QAAQ,SAAUG,EAAG,EACpBH,IAAM,MAAQX,EAAQc,EAAGH,CAAC,KAC5BA,EAAIG,EAER,CAAC,EACD,KAAK,KAAOH,IAAM,KAAOA,EAAI,MAC/B,CACA,OAAO,KAAK,IACd,EAMAT,EAAqB,UAAU,IAAM,UAAY,CAE/C,GAAI,KAAK,OAAS,KAAM,CAEtB,IAAIS,EAAI,KAER,KAAK,QAAQ,SAAUG,EAAG,EACpBH,IAAM,MAAQX,EAAQW,EAAGG,CAAC,KAC5BH,EAAIG,EAER,CAAC,EACD,KAAK,KAAOH,IAAM,KAAOA,EAAI,MAC/B,CACA,OAAO,KAAK,IACd,EACOT,CACT,EAAG,CACD,QAAS,EACX,CAAC,ECxND,IAAIa,IAAO,QACPC,IAAe,CAAC,uBAAwB,mBAAmB,EACpDC,GAAkCC,EAAQH,IAAMC,IAAcG,GAAQ,CAC/E,GAAI,CACF,qBAAAC,EACA,kBAAAC,CACF,EAAIF,EAuBJ,SAASG,EAAMC,EAAQ,CACrB,GAAI,EAAE,gBAAgBD,GACpB,MAAM,IAAI,YAAY,kDAAkD,EAE1E,KAAK,YAAc,CAAC,EACpB,KAAK,YAAc,CAAC,EACpB,KAAK,UAAY,GACjB,QAASE,EAAI,EAAGC,EAAK,UAAU,OAAQD,EAAIC,EAAID,IAAK,CAClD,IAAIE,EAAM,UAAUF,CAAC,EACjBG,EAAaC,GAAQF,CAAG,EACxBG,EAAcC,GAASJ,CAAG,EAC1BK,EAAa,KACjB,GAAIC,GAAQN,CAAG,EACb,KAAK,YAAY,KAAKA,CAAG,EACzB,KAAK,UAAY,WACRC,GAAcE,EAAa,CAEpC,IAAII,EAAI,OACJZ,EAAkBK,CAAG,IAAM,WACzBC,IAAYM,EAAIC,EAAuBC,GAAgCT,CAAG,EAAE,QAAQ,CAAC,GACrFG,IAAaI,EAAIC,EAAuBC,GAAgCT,EAAI,KAAK,EAAE,QAAQ,CAAC,GAChGK,EAAaL,EAAI,QAAQ,EAAE,QAE3BO,EAAIC,EAAuBR,EAAI,QAAQ,CAAC,EAE1C,KAAK,YAAY,KAAKO,CAAC,EAEvB,IAAIG,EAAOH,EAAE,KAAK,GAEdG,EAAK,SAAW,GAAKA,EAAK,CAAC,IAAM,GAAKL,IAAe,QACvD,KAAK,UAAY,GAErB,SAAW,OAAOL,GAAQ,SACxB,KAAK,YAAY,KAAKQ,EAAuB,CAACR,CAAG,CAAC,CAAC,UAC1C,OAAOA,GAAQ,SAExB,KAAK,YAAY,KAAKA,CAAG,MAEzB,OAAM,IAAI,UAAU,8DAA8D,EAEpF,KAAK,YAAY,KAAKK,CAAU,CAElC,CACF,CAKAT,EAAM,UAAU,KAAO,QACvBA,EAAM,UAAU,QAAU,GAC1B,SAASY,EAAuBR,EAAK,CAEnC,QAASF,EAAI,EAAGa,EAAIX,EAAI,OAAQF,EAAIa,EAAGb,IACrC,GAAI,OAAOE,EAAIF,CAAC,GAAM,UAAY,CAACc,GAAUZ,EAAIF,CAAC,CAAC,EACjD,MAAM,IAAI,UAAU,mDAAmD,EAI3E,OAAO,IAAIJ,EAAqBM,CAAG,CACrC,CAOA,OAAAJ,EAAM,UAAU,MAAQ,UAAY,CAClC,IAAIiB,EAAQ,IAAIjB,EAChB,OAAAiB,EAAM,YAAcC,GAAM,KAAK,WAAW,EAC1CD,EAAM,UAAY,KAAK,UACvBA,EAAM,YAAc,KAAK,YAClBA,CACT,EASAjB,EAAM,OAAS,SAAUC,EAAQ,CAC/B,IAAIgB,EAAQ,IAAIjB,EAChB,OAAAA,EAAM,MAAMiB,EAAOhB,CAAM,EAClBgB,CACT,EAOAjB,EAAM,UAAU,KAAO,UAAY,CAEjC,QADIc,EAAO,CAAC,EACHZ,EAAI,EAAGC,EAAK,KAAK,YAAY,OAAQD,EAAIC,EAAID,IAAK,CACzD,IAAIiB,EAAI,KAAK,YAAYjB,CAAC,EAC1BY,EAAKZ,CAAC,EAAI,OAAOiB,GAAM,SAAW,EAAIA,EAAE,KAAK,EAAE,CAAC,CAClD,CACA,OAAOL,CACT,EAOAd,EAAM,UAAU,IAAM,UAAY,CAEhC,QADIoB,EAAS,CAAC,EACLlB,EAAI,EAAGC,EAAK,KAAK,YAAY,OAAQD,EAAIC,EAAID,IAAK,CACzD,IAAImB,EAAQ,KAAK,YAAYnB,CAAC,EAC9BkB,EAAOlB,CAAC,EAAI,OAAOmB,GAAU,SAAWA,EAAQA,EAAM,IAAI,CAC5D,CACA,OAAOD,CACT,EAOApB,EAAM,UAAU,IAAM,UAAY,CAEhC,QADIoB,EAAS,CAAC,EACLlB,EAAI,EAAGC,EAAK,KAAK,YAAY,OAAQD,EAAIC,EAAID,IAAK,CACzD,IAAImB,EAAQ,KAAK,YAAYnB,CAAC,EAC9BkB,EAAOlB,CAAC,EAAI,OAAOmB,GAAU,SAAWA,EAAQA,EAAM,IAAI,CAC5D,CACA,OAAOD,CACT,EASApB,EAAM,UAAU,QAAU,SAAUsB,EAAU,CAC5C,QAASpB,EAAI,EAAGC,EAAK,KAAK,YAAY,OAAQD,EAAIC,EAAID,IACpDoB,EAAS,KAAK,YAAYpB,CAAC,EAAGA,EAAG,IAAI,CAEzC,EAQAF,EAAM,UAAU,UAAY,SAAUuB,EAAK,CACzC,OAAI,OAAOA,GAAQ,SACV,KAEF,KAAK,YAAYA,CAAG,GAAK,IAClC,EAMAvB,EAAM,UAAU,iBAAmB,UAAY,CAC7C,OAAO,KAAK,YAAY,SAAW,GAAK,OAAO,KAAK,YAAY,CAAC,GAAM,QACzE,EAOAA,EAAM,UAAU,kBAAoB,UAAY,CAC9C,OAAO,KAAK,iBAAiB,EAAI,KAAK,YAAY,CAAC,EAAI,IACzD,EAUAA,EAAM,UAAU,SAAW,UAAY,CACrC,OAAO,KAAK,SACd,EAQAA,EAAM,UAAU,QAAU,UAAY,CAEpC,QADIwB,EAAQ,CAAC,EACJtB,EAAI,EAAGC,EAAK,KAAK,YAAY,OAAQD,EAAIC,EAAID,IAAK,CACzD,IAAIuB,EAAY,KAAK,YAAYvB,CAAC,EAClCsB,EAAM,KAAK,OAAOC,GAAc,SAAWA,EAAYA,EAAU,QAAQ,CAAC,CAC5E,CACA,OAAOD,CACT,EAQAxB,EAAM,UAAU,QAAUA,EAAM,UAAU,QAO1CA,EAAM,UAAU,SAAW,UAAY,CAErC,QADI0B,EAAU,CAAC,EACNxB,EAAI,EAAGC,EAAK,KAAK,YAAY,OAAQD,EAAIC,EAAID,IAAK,CACzD,IAAIuB,EAAY,KAAK,YAAYvB,CAAC,EAC9B,OAAOuB,GAAc,SACvBC,EAAQ,KAAK,KAAK,UAAUD,CAAS,CAAC,EAEtCC,EAAQ,KAAKD,EAAU,SAAS,CAAC,CAErC,CACA,MAAO,IAAMC,EAAQ,KAAK,IAAI,EAAI,GACpC,EAQA1B,EAAM,UAAU,OAAS,UAAY,CACnC,MAAO,CACL,OAAQ,QACR,WAAY,KAAK,WACnB,CACF,EASAA,EAAM,SAAW,SAAU2B,EAAM,CAC/B,OAAO3B,EAAM,OAAO2B,EAAK,UAAU,CACrC,EACO3B,CACT,EAAG,CACD,QAAS,EACX,CAAC,EAOD,SAASa,GAAgCe,EAAmB,CAE1D,IAAIC,EAAiB,CAAC,EACtB,OAAAD,EAAkB,QAAQ,CAACE,EAAMC,IAAQ,CACnCD,GACFD,EAAe,KAAKE,CAAG,CAE3B,CAAC,EACMF,CACT,CC3SA,IAAIG,IAAO,gBACPC,IAAe,CAAC,UAAW,QAAQ,EAC5BC,GAA0CC,EAAQH,IAAMC,IAAcG,GAAQ,CACvF,GAAI,CACF,QAAAC,EACA,OAAAC,CACF,EAAIF,EACAG,EAAgB,EAAM,KAAK,KAAK,EAAM,KAAK,KAAK,CAAG,GAAK,CAAG,EAO/D,SAASC,GAAgB,CACvB,GAAI,EAAE,gBAAgBA,GACpB,MAAM,IAAI,YAAY,kDAAkD,EAI1E,KAAK,SAAW,KAChB,KAAK,MAAQ,CACf,CAKAA,EAAc,UAAU,KAAO,gBAC/BA,EAAc,UAAU,gBAAkB,GAQ1CA,EAAc,UAAU,OAAS,SAAUC,EAAKC,EAAO,CAErD,IAAIC,EAAO,CACT,IAAAF,EACA,MAAAC,EACA,OAAQ,CACV,EAEA,GAAI,KAAK,SAAU,CAEjB,IAAIE,EAAU,KAAK,SAEnBD,EAAK,KAAOC,EACZD,EAAK,MAAQC,EAAQ,MACrBA,EAAQ,MAAQD,EAChBA,EAAK,MAAM,KAAOA,EAEdN,EAAQI,EAAKG,EAAQ,GAAG,IAE1B,KAAK,SAAWD,EAEpB,MAEEA,EAAK,KAAOA,EACZA,EAAK,MAAQA,EAEb,KAAK,SAAWA,EAGlB,YAAK,QAEEA,CACT,EAMAH,EAAc,UAAU,KAAO,UAAY,CACzC,OAAO,KAAK,KACd,EAMAA,EAAc,UAAU,MAAQ,UAAY,CAC1C,KAAK,SAAW,KAChB,KAAK,MAAQ,CACf,EAMAA,EAAc,UAAU,QAAU,UAAY,CAC5C,OAAO,KAAK,QAAU,CACxB,EAOAA,EAAc,UAAU,eAAiB,UAAY,CAEnD,IAAIG,EAAO,KAAK,SAEhB,GAAIA,IAAS,KACX,OAAOA,EAST,QANIC,EAAU,KAAK,SAEfC,EAAmBF,EAAK,OAExBG,EAAIH,EAAK,MAENE,EAAmB,GAAG,CAE3B,IAAIE,EAAYD,EAAE,MAElBA,EAAE,KAAK,MAAQA,EAAE,MACjBA,EAAE,MAAM,KAAOA,EAAE,KAEjBA,EAAE,KAAOF,EACTE,EAAE,MAAQF,EAAQ,MAClBA,EAAQ,MAAQE,EAChBA,EAAE,MAAM,KAAOA,EAEfA,EAAE,OAAS,KACXA,EAAIC,EACJF,GACF,CAEA,OAAAF,EAAK,KAAK,MAAQA,EAAK,MACvBA,EAAK,MAAM,KAAOA,EAAK,KAEnBA,IAASA,EAAK,MAEhBC,EAAU,MAGVA,EAAUD,EAAK,MAEfC,EAAUI,EAAiBJ,EAAS,KAAK,KAAK,GAGhD,KAAK,QAEL,KAAK,SAAWA,EAETD,CACT,EASAH,EAAc,UAAU,OAAS,SAAUG,EAAM,CAE/C,KAAK,SAAWM,EAAa,KAAK,SAAUN,EAAM,EAAE,EAEpD,KAAK,eAAe,CACtB,EAQA,SAASM,EAAaL,EAASD,EAAMF,EAAK,CAExCE,EAAK,IAAMF,EAEX,IAAIS,EAASP,EAAK,OAClB,OAAIO,GAAUb,EAAQM,EAAK,IAAKO,EAAO,GAAG,IAExCC,EAAKP,EAASD,EAAMO,CAAM,EAE1BE,EAAcR,EAASM,CAAM,GAG3Bb,EAAQM,EAAK,IAAKC,EAAQ,GAAG,IAC/BA,EAAUD,GAGLC,CACT,CAOA,SAASO,EAAKP,EAASD,EAAMO,EAAQ,CAEnCP,EAAK,KAAK,MAAQA,EAAK,MACvBA,EAAK,MAAM,KAAOA,EAAK,KACvBO,EAAO,SAEHA,EAAO,QAAUP,IACnBO,EAAO,MAAQP,EAAK,OAGlBO,EAAO,SAAW,IACpBA,EAAO,MAAQ,MAGjBP,EAAK,KAAOC,EACZD,EAAK,MAAQC,EAAQ,MACrBA,EAAQ,MAAQD,EAChBA,EAAK,MAAM,KAAOA,EAElBA,EAAK,OAAS,KAEdA,EAAK,KAAO,EACd,CAQA,SAASS,EAAcR,EAASD,EAAM,CAEpC,IAAIO,EAASP,EAAK,OAEbO,IAIAP,EAAK,MAIRQ,EAAKP,EAASD,EAAMO,CAAM,EAE1BE,EAAcF,CAAM,GALpBP,EAAK,KAAO,GAOhB,CAMA,IAAIU,EAAa,SAAoBV,EAAMO,EAAQ,CAEjDP,EAAK,KAAK,MAAQA,EAAK,MACvBA,EAAK,MAAM,KAAOA,EAAK,KAEvBA,EAAK,OAASO,EACTA,EAAO,OAKVP,EAAK,KAAOO,EAAO,MACnBP,EAAK,MAAQO,EAAO,MAAM,MAC1BA,EAAO,MAAM,MAAQP,EACrBA,EAAK,MAAM,KAAOA,IAPlBO,EAAO,MAAQP,EACfA,EAAK,MAAQA,EACbA,EAAK,KAAOA,GAQdO,EAAO,SAEPP,EAAK,KAAO,EACd,EACA,SAASK,EAAiBJ,EAASU,EAAM,CAEvC,IAAIC,EAAY,KAAK,MAAM,KAAK,IAAID,CAAI,EAAIf,CAAa,EAAI,EAEzDiB,EAAQ,IAAI,MAAMD,CAAS,EAE3BE,EAAW,EACXX,EAAIF,EACR,GAAIE,EAGF,IAFAW,IACAX,EAAIA,EAAE,MACCA,IAAMF,GACXa,IACAX,EAAIA,EAAE,MAMV,QAFIY,EAEGD,EAAW,GAAG,CAMnB,QAJIE,EAAIb,EAAE,OAENc,EAAOd,EAAE,MAIXY,EAAIF,EAAMG,CAAC,EACP,EAACD,GAHM,CAOX,GAAIpB,EAAOQ,EAAE,IAAKY,EAAE,GAAG,EAAG,CACxB,IAAIG,EAAOH,EACXA,EAAIZ,EACJA,EAAIe,CACN,CAEAR,EAAWK,EAAGZ,CAAC,EAEfU,EAAMG,CAAC,EAAI,KACXA,GACF,CAEAH,EAAMG,CAAC,EAAIb,EAEXA,EAAIc,EACJH,GACF,CAEAb,EAAU,KAEV,QAASkB,EAAI,EAAGA,EAAIP,EAAWO,IAE7BJ,EAAIF,EAAMM,CAAC,EACNJ,IAIDd,GAEFc,EAAE,KAAK,MAAQA,EAAE,MACjBA,EAAE,MAAM,KAAOA,EAAE,KAEjBA,EAAE,KAAOd,EACTc,EAAE,MAAQd,EAAQ,MAClBA,EAAQ,MAAQc,EAChBA,EAAE,MAAM,KAAOA,EAEXrB,EAAQqB,EAAE,IAAKd,EAAQ,GAAG,IAC5BA,EAAUc,IAGZd,EAAUc,GAGd,OAAOd,CACT,CACA,OAAOJ,CACT,EAAG,CACD,QAAS,EACX,CAAC,EC7VD,IAAIuB,IAAO,MACPC,IAAe,CAAC,YAAa,cAAe,eAAe,EACpDC,GAAgCC,EAAQH,IAAMC,IAAcG,GAAQ,CAC7E,GAAI,CACF,UAAAC,EACA,YAAAC,EACA,cAAAC,CACF,EAAIH,EAKJ,SAASI,GAAM,CACb,GAAI,EAAE,gBAAgBA,GACpB,MAAM,IAAI,YAAY,kDAAkD,EAI1E,KAAK,QAAU,CAAC,EAChB,KAAK,MAAQ,IAAID,CACnB,CAKA,OAAAC,EAAI,UAAU,KAAO,MACrBA,EAAI,UAAU,MAAQ,GAQtBA,EAAI,UAAU,IAAM,SAAUC,EAAGC,EAAG,CAElC,GAAK,KAAK,QAAQD,CAAC,EAOjB,KAAK,QAAQA,CAAC,EAAE,MAAQC,MAPJ,CAEpB,IAAIC,EAAO,KAAK,MAAM,OAAOF,EAAGC,CAAC,EAEjC,KAAK,QAAQD,CAAC,EAAIE,CACpB,CAIF,EACAH,EAAI,UAAU,IAAM,SAAUC,EAAG,CAC/B,IAAIE,EAAO,KAAK,QAAQF,CAAC,EACzB,OAAIE,EACKA,EAAK,MAEP,CACT,EACAH,EAAI,UAAU,WAAa,SAAUC,EAAGC,EAAG,CAEzC,IAAIC,EAAO,KAAK,QAAQF,CAAC,EACpBE,EAOHA,EAAK,MAAQN,EAAUM,EAAK,MAAOD,CAAC,GALpCC,EAAO,KAAK,MAAM,OAAOF,EAAGC,CAAC,EAE7B,KAAK,QAAQD,CAAC,EAAIE,EAKtB,EACAH,EAAI,UAAU,QAAU,SAAUI,EAAMC,EAAIC,EAAU,CAEpD,IAAIC,EAAO,KAAK,MACZC,EAAS,KAAK,QAEdC,EAAQ,CAAC,EAETN,EAAOI,EAAK,eAAe,EAK/B,IAJIJ,GACFM,EAAM,KAAKN,CAAI,EAGVA,GAAQA,EAAK,KAAOE,GAErBF,EAAK,KAAOC,IAETN,EAAYK,EAAK,MAAO,CAAC,GAE5BG,EAASH,EAAK,IAAKA,EAAK,MAAO,IAAI,GAIvCA,EAAOI,EAAK,eAAe,EACvBJ,GACFM,EAAM,KAAKN,CAAI,EAInB,QAASF,EAAI,EAAGA,EAAIQ,EAAM,OAAQR,IAAK,CAErC,IAAIS,EAAID,EAAMR,CAAC,EAEfE,EAAOI,EAAK,OAAOG,EAAE,IAAKA,EAAE,KAAK,EAEjCF,EAAOL,EAAK,GAAG,EAAIA,CACrB,CACF,EACAH,EAAI,UAAU,KAAO,SAAUC,EAAGU,EAAG,CAEnC,IAAIC,EAAQ,KAAK,QAAQX,CAAC,EACtBY,EAAQ,KAAK,QAAQF,CAAC,EAE1B,GAAI,CAACC,GAASC,EAEZD,EAAQ,KAAK,MAAM,OAAOX,EAAGY,EAAM,KAAK,EAExC,KAAK,MAAM,OAAOA,CAAK,EAEvB,KAAK,QAAQZ,CAAC,EAAIW,EAClB,KAAK,QAAQD,CAAC,EAAI,eACTC,GAAS,CAACC,EAEnBA,EAAQ,KAAK,MAAM,OAAOF,EAAGC,EAAM,KAAK,EAExC,KAAK,MAAM,OAAOA,CAAK,EAEvB,KAAK,QAAQD,CAAC,EAAIE,EAClB,KAAK,QAAQZ,CAAC,EAAI,eACTW,GAASC,EAAO,CAEzB,IAAIX,EAAIU,EAAM,MACdA,EAAM,MAAQC,EAAM,MACpBA,EAAM,MAAQX,CAChB,CACF,EACOF,CACT,EAAG,CACD,QAAS,EACX,CAAC,ECpIM,SAASc,GAASC,EAAO,CAC9B,IAAIC,EAAO,EACPC,EAAO,EACPC,EAAQ,OAAO,OAAO,IAAI,EAC1BC,EAAM,OAAO,OAAO,IAAI,EACxBC,EAAQ,EACRC,EAAM,SAAaC,EAAI,CACzB,IAAIC,EAAWJ,EAAIG,CAAE,EACrB,GAAKC,IACL,OAAOL,EAAMK,CAAQ,EACrB,OAAOJ,EAAIG,CAAE,EACb,EAAEN,EACEC,IAASM,GACb,IAAI,CAACP,EAAM,CACTI,EAAQ,EACRH,EAAO,EACP,MACF,CACA,KAAO,CAAC,OAAO,UAAU,eAAe,KAAKC,EAAO,EAAED,CAAI,GAAG,EAC/D,EACA,OAAAF,EAAQ,KAAK,IAAIA,CAAK,EACf,CACL,IAAK,SAAaO,EAAI,CACpB,IAAIC,EAAWJ,EAAIG,CAAE,EACjBE,EAAU,EAAEJ,EAGhB,GAFAF,EAAMM,CAAO,EAAIF,EACjBH,EAAIG,CAAE,EAAIE,EACN,CAACD,EAEH,MADA,EAAEP,EACEA,GAAQD,EAAO,QACnBO,EAAKJ,EAAMD,CAAI,EACfI,EAAIC,CAAE,EACCA,GAGT,GADA,OAAOJ,EAAMK,CAAQ,EACjBN,IAASM,EACb,KAAO,CAAC,OAAO,UAAU,eAAe,KAAKL,EAAO,EAAED,CAAI,GAAG,CAE/D,EACA,OAAQI,EACR,MAAO,UAAiB,CACtBL,EAAOI,EAAQ,EACfH,EAAO,EACPC,EAAQ,OAAO,OAAO,IAAI,EAC1BC,EAAM,OAAO,OAAO,IAAI,CAC1B,CACF,CACF,CC/BO,SAASM,GAAQC,EAAI,CAC1B,GAAI,CACF,OAAAC,EACA,MAAAC,CACF,EAAI,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAC,EACzE,OAAAA,EAAQA,GAAgB,OAAO,kBAC/BD,EAASA,GAAiB,KAAK,UACxB,SAASF,GAAU,CACpB,OAAOA,EAAQ,OAAU,WAC3BA,EAAQ,MAAQ,CACd,OAAQ,IAAI,IACZ,IAAKI,GAASD,GAAS,OAAO,iBAAiB,CACjD,GAGF,QADIE,EAAO,CAAC,EACHC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IACpCD,EAAKC,CAAC,EAAI,UAAUA,CAAC,EAEvB,IAAIC,EAAOL,EAAOG,CAAI,EACtB,GAAIL,EAAQ,MAAM,OAAO,IAAIO,CAAI,EAC/B,OAAAP,EAAQ,MAAM,IAAI,IAAIO,CAAI,EACnBP,EAAQ,MAAM,OAAO,IAAIO,CAAI,EAEtC,IAAIC,EAASP,EAAG,MAAMA,EAAII,CAAI,EAC9B,OAAAL,EAAQ,MAAM,OAAO,IAAIO,EAAMC,CAAM,EACrCR,EAAQ,MAAM,OAAO,OAAOA,EAAQ,MAAM,IAAI,IAAIO,CAAI,CAAC,EAChDC,CACT,CACF,CCxCO,IAAIC,GAAmBC,GAAQ,SAAUC,EAAW,CACzD,OAAO,IAAIA,EAAU,CAAC,EAAE,IAAI,CAC9B,EAAG,CACD,OAAAC,EACF,CAAC,EAOUC,GAAqBH,GAAQ,SAAUC,EAAW,CAC3D,OAAO,IAAIA,EAAU,CAAC,EAAE,KAAK,IAAIA,EAAU,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAC7D,EAAG,CACD,OAAAC,EACF,CAAC,EAOUE,GAAoBJ,GAAQ,SAAUC,EAAW,CAC1D,OAAOA,EAAU,KAAK,EAAE,CAC1B,EAAG,CACD,OAAAC,EACF,CAAC,EAOUG,GAAqBL,GAAQ,SAAUC,EAAW,CAC3D,OAAOG,GAAkBH,CAAS,EAAE,MAAM,CAAC,CAC7C,EAAG,CACD,OAAAC,EACF,CAAC,EAUD,SAASA,GAAOI,EAAM,CACpB,OAAOA,EAAK,CAAC,EAAE,SACjB,CCtDA,SAASC,GAAQ,EAAGC,EAAG,CAAE,IAAIC,EAAI,OAAO,KAAK,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIC,EAAI,OAAO,sBAAsB,CAAC,EAAGF,IAAME,EAAIA,EAAE,OAAO,SAAUF,EAAG,CAAE,OAAO,OAAO,yBAAyB,EAAGA,CAAC,EAAE,UAAY,CAAC,GAAIC,EAAE,KAAK,MAAMA,EAAGC,CAAC,CAAG,CAAE,OAAOD,CAAG,CAC9P,SAASE,GAAc,EAAG,CAAE,QAASH,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIC,EAAY,UAAUD,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAC,EAAGA,EAAI,EAAID,GAAQ,OAAOE,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAUD,EAAG,CAAEI,GAAgB,EAAGJ,EAAGC,EAAED,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiB,EAAG,OAAO,0BAA0BC,CAAC,CAAC,EAAIF,GAAQ,OAAOE,CAAC,CAAC,EAAE,QAAQ,SAAUD,EAAG,CAAE,OAAO,eAAe,EAAGA,EAAG,OAAO,yBAAyBC,EAAGD,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAO,CAAG,CAOtb,IAAIK,IAAO,OACPC,IAAe,CAAC,MAAO,SAAU,YAAa,iBAAkB,iBAAkB,eAAgB,MAAO,MAAO,MAAO,QAAS,QAAS,YAAa,SAAU,SAAU,UAAW,YAAa,UAAU,EACrMC,GAAiCC,EAAQH,IAAMC,IAAcG,GAAQ,CAC9E,GAAI,CACF,GAAAC,EACA,OAAAC,EACA,UAAAC,EACA,eAAAC,EACA,eAAAC,EACA,aAAAC,EACA,IAAAC,EACA,IAAAC,EACA,IAAAC,EACA,MAAAC,EACA,MAAAC,EACA,UAAAC,EACA,OAAAC,EACA,OAAQC,EACR,QAAAC,EACA,UAAWC,EACX,SAAUC,CACZ,EAAIjB,EACAkB,EAAWJ,EAoBf,SAASK,EAAKC,GAAOC,GAAe,CAClC,GAAI,EAAE,gBAAgBF,GACpB,MAAM,IAAI,MAAM,kDAAkD,EAEpE,GAAI,EAAEC,IAAU,MAA+BR,EAAUQ,EAAK,GAAKE,GAAUF,EAAK,GAChF,MAAM,IAAI,UAAU,gGAAgG,EAStH,GAPA,KAAK,UAAY,GAMjB,KAAK,4BAA8B,GAC/BC,KAAkB,OACpB,KAAK,MAAQ,CAAC,EACd,KAAK,WAAaE,GAAgB,IAAIC,IAAK,CAAC,UACnC,OAAOH,IAAkB,SAAU,CAC5C,IAAII,GAAIN,EAAK,MAAME,EAAa,EAChC,KAAK,MAAQI,GAAE,MACf,KAAK,WAAaA,GAAE,UACtB,SAAWC,GAAOL,EAAa,GAAKA,GAAc,QAAU,KAE1D,KAAK,UAAYA,GAAc,UAC/B,KAAK,4BAA8BA,GAAc,4BACjD,KAAK,WAAaA,GAAc,WAAW,MAAM,CAAC,EAClD,KAAK,MAAQA,GAAc,MAAM,IAAII,IAAKE,GAAS,CAAC,EAAGF,EAAC,CAAC,MAEzD,OAAM,IAAI,UAAU,yEAAyE,EAE/F,KAAK,MAAQ,KAAK,WAAWL,EAAK,CACpC,CAKA,OAAO,eAAeD,EAAM,OAAQ,CAClC,MAAO,MACT,CAAC,EACDA,EAAK,UAAU,YAAcA,EAC7BA,EAAK,UAAU,KAAO,OACtBA,EAAK,UAAU,OAAS,GAGxB,IAAIS,EAAMC,EAAOC,EACjB,SAASC,GAAiB,CACxB,KAAOD,IAAM,KAAOA,IAAM,KACxBE,EAAK,CAET,CACA,SAASC,EAAWH,GAAG,CACrB,OAAOA,IAAK,KAAOA,IAAK,KAAOA,KAAM,GACvC,CACA,SAASI,EAAQJ,GAAG,CAClB,OAAOA,IAAK,KAAOA,IAAK,GAC1B,CACA,SAASE,GAAO,CACdH,IACAC,EAAIF,EAAK,OAAOC,CAAK,CACvB,CACA,SAASM,EAAOC,GAAU,CACxBP,EAAQO,GACRN,EAAIF,EAAK,OAAOC,CAAK,CACvB,CACA,SAASQ,GAAc,CACrB,IAAIC,GAAS,GACTF,GAAWP,EAOf,GANIC,IAAM,IACRE,EAAK,EACIF,IAAM,MACfQ,IAAUR,EACVE,EAAK,GAEH,CAACC,EAAWH,CAAC,EAEf,OAAAK,EAAOC,EAAQ,EACR,KAIT,GAAIN,IAAM,KAGR,GAFAQ,IAAUR,EACVE,EAAK,EACD,CAACE,EAAQJ,CAAC,EAEZ,OAAAK,EAAOC,EAAQ,EACR,SAEJ,CACL,KAAOF,EAAQJ,CAAC,GACdQ,IAAUR,EACVE,EAAK,EAEHF,IAAM,MACRQ,IAAUR,EACVE,EAAK,EAET,CACA,KAAOE,EAAQJ,CAAC,GACdQ,IAAUR,EACVE,EAAK,EAIP,GAAIF,IAAM,KAAOA,IAAM,IAAK,CAG1B,IAAIS,GAAkB,GAClBC,GAAiBX,EASrB,GARAU,IAAmBT,EACnBE,EAAK,GACDF,IAAM,KAAOA,IAAM,OACrBS,IAAmBT,EACnBE,EAAK,GAIH,CAACE,EAAQJ,CAAC,EAEZ,OAAAK,EAAOK,EAAc,EACdF,GAKT,IADAA,GAASA,GAASC,GACXL,EAAQJ,CAAC,GACdQ,IAAUR,EACVE,EAAK,CAET,CACA,OAAOM,EACT,CACA,SAASG,GAAY,CAInB,QAHIC,GAAW,GAGRR,EAAQJ,CAAC,GAAKX,EAAK,aAAaW,CAAC,GACtCY,IAAYZ,EACZE,EAAK,EAIP,IAAIW,GAASD,GAAS,OAAO,CAAC,EAC9B,OAAIvB,EAAK,aAAawB,EAAM,EACnBD,GAEA,IAEX,CACA,SAASE,EAAeC,GAAQ,CAC9B,OAAIf,IAAMe,IACRb,EAAK,EACEa,IAEA,IAEX,CAYA1B,EAAK,MAAQ,SAAU2B,GAAKC,GAAS,CAKnC,GAJAA,GAAUA,IAAW,CAAC,EACtBnB,EAAOkB,GACPjB,EAAQ,GACRC,EAAI,GACA,OAAOF,GAAS,SAClB,MAAM,IAAI,UAAU,iDAAiD,EAEvE,IAAIoB,GAAO,IAAI7B,EACf6B,GAAK,MAAQ,CAAC,EACd,IAAIC,GAAyB,EACzBC,GAAgB,GAgBpBlB,EAAK,EACLD,EAAe,EAGf,IAAIoB,GAAWd,EAAY,EACvBjB,GAAQ,KACZ,GAAI+B,GAAU,CACZ,GAAIjD,EAAO,SAAW,YACpBkB,GAAQ,IAAIJ,EAAWmC,EAAQ,UACtBjD,EAAO,SAAW,WAC3B,GAAI,CAEFkB,GAAQ,IAAIH,EAAUkC,EAAQ,CAChC,MAAc,CACZ/B,GAAQ,WAAW+B,EAAQ,CAC7B,MAGA/B,GAAQ,WAAW+B,EAAQ,EAE7BpB,EAAe,EAGXa,EAAe,GAAG,GACpBK,GAAyB,EACzBC,GAAgB,IACPN,EAAe,GAAG,IAC3BK,GAAyB,GACzBC,GAAgB,GAEpB,CAOA,QAJIE,GAAuB,CAAC,EAGxBC,GAA8B,IACrB,CAKX,IAJAtB,EAAe,EAIRD,IAAM,KACXsB,GAAqB,KAAKH,EAAsB,EAChDI,IAA+BJ,GAC/BA,GAAyB,EACzBjB,EAAK,EACLD,EAAe,EAIjB,IAAIuB,GAAO,OACX,GAAIxB,EAAG,CACL,IAAIyB,GAAOzB,EAEX,GADAwB,GAAOb,EAAU,EACba,KAAS,KACX,MAAM,IAAI,YAAY,eAAiBC,GAAO,SAAW3B,EAAO,cAAgBC,EAAM,SAAS,CAAC,CAEpG,KAEE,OAIF,IAAI2B,GAAMC,EAAUH,EAAI,EACxB,GAAIE,KAAQ,KAEV,MAAM,IAAI,YAAY,SAAWF,GAAO,cAAc,EAExD,IAAII,GAAQT,GAAyBI,GAGrC,GADAtB,EAAe,EACXa,EAAe,GAAG,EAAG,CACvBb,EAAe,EACf,IAAI4B,GAAItB,EAAY,EACpB,GAAIsB,KAAM,KAER,MAAM,IAAI,YAAY,OAASb,GAAM,oDAAoD,EAE3FY,IAASC,EACX,CAGAX,GAAK,MAAM,KAAK,CACd,KAAMQ,GAAI,KACV,OAAQA,GAAI,OACZ,MAAAE,EACF,CAAC,EACD,QAASE,GAAI,EAAGA,GAAIrC,GAAgB,OAAQqC,KAC1CZ,GAAK,WAAWY,EAAC,IAAMJ,GAAI,KAAK,WAAWI,EAAC,GAAK,GAAKF,GAMxD,IADA3B,EAAe,EACRD,IAAM,KAAK,CAChB,GAAIsB,GAAqB,SAAW,EAClC,MAAM,IAAI,YAAY,qBAAuBxB,EAAO,cAAgBC,EAAM,SAAS,CAAC,EAEtFwB,IAA+BD,GAAqB,IAAI,EACxDpB,EAAK,EACLD,EAAe,CACjB,CAmBA,GAfAmB,GAAgB,GACZN,EAAe,GAAG,GAEpBK,GAAyB,EACzBC,GAAgB,IACPN,EAAe,GAAG,GAE3BK,GAAyB,GACzBC,GAAgB,IAGhBD,GAAyB,EAIvBO,GAAI,KAAK,KAAM,CACjB,IAAIK,GAAUL,GAAI,KAAK,KAAK,IAC5BM,GAAa,KAAKD,EAAO,EAAI,CAC3B,KAAML,GAAI,KACV,OAAQA,GAAI,MACd,CACF,CACF,CAIA,GADAzB,EAAe,EACXD,EACF,MAAM,IAAI,YAAY,qBAAuBgB,GAAM,GAAG,EAIxD,GAAII,GACF,MAAM,IAAI,YAAY,yBAA2BJ,GAAM,GAAG,EAI5D,GAAIM,GAAqB,SAAW,EAClC,MAAM,IAAI,YAAY,qBAAuBxB,EAAO,GAAG,EAIzD,GAAIoB,GAAK,MAAM,SAAW,GAAK,CAACD,GAAQ,aACtC,MAAM,IAAI,YAAY,IAAMD,GAAM,qBAAqB,EAEzD,OAAAE,GAAK,MAAQ5B,KAAU,OAAY4B,GAAK,WAAW5B,EAAK,EAAI,KACrD4B,EACT,EAOA7B,EAAK,UAAU,MAAQ,UAAY,CACjC,IAAI6B,GAAO,IAAI7B,EACf6B,GAAK,UAAY,KAAK,UACtBA,GAAK,4BAA8B,KAAK,4BACxCA,GAAK,MAAQe,GAAM,KAAK,KAAK,EAC7Bf,GAAK,WAAa,KAAK,WAAW,MAAM,CAAC,EACzCA,GAAK,MAAQ,CAAC,EACd,QAASY,GAAI,EAAGA,GAAI,KAAK,MAAM,OAAQA,KAAK,CAC1CZ,GAAK,MAAMY,EAAC,EAAI,CAAC,EACjB,QAASD,MAAK,KAAK,MAAMC,EAAC,EACpBI,GAAe,KAAK,MAAMJ,EAAC,EAAGD,EAAC,IACjCX,GAAK,MAAMY,EAAC,EAAED,EAAC,EAAI,KAAK,MAAMC,EAAC,EAAED,EAAC,EAGxC,CACA,OAAOX,EACT,EAQA7B,EAAK,UAAU,UAAY,UAAY,CACrC,OAAO8C,GAAO,KAAK,KAAK,CAC1B,EAQA9C,EAAK,UAAU,WAAa,UAAY,CACtC,OAAI,KAAK,MAAM,SAAW,EACjB,GAEF,KAAK,MAAM,OAAS,GAAK,KAAK,IAAI,KAAK,MAAM,CAAC,EAAE,MAAQ,CAAG,EAAI,KACxE,EASAA,EAAK,UAAU,WAAa,SAAUC,GAAO,CAC3C,GAAIA,IAAU,MAA+B,KAAK,MAAM,SAAW,EACjE,OAAOA,GAKT,QAHIoC,GAAMpC,GACN8C,GAAU/C,EAAK,oBAAoB8C,GAAO7C,EAAK,CAAC,EAE3CwC,GAAI,EAAGA,GAAI,KAAK,MAAM,OAAQA,KAAK,CAC1C,IAAIO,GAAYD,GAAQ,KAAK,MAAMN,EAAC,EAAE,KAAK,KAAK,EAC5CQ,GAAkBF,GAAQ,KAAK,MAAMN,EAAC,EAAE,OAAO,KAAK,EACpDS,GAAYH,GAAQ,KAAK,MAAMN,EAAC,EAAE,KAAK,EAC3CJ,GAAMnD,EAAemD,GAAKjD,EAAIF,EAAe8D,GAAWC,EAAe,EAAGC,EAAS,CAAC,CACtF,CACA,OAAOb,EACT,EAUArC,EAAK,UAAU,aAAe,SAAUC,GAAOkD,GAAa,CAC1D,GAAIlD,IAAU,MAA+B,KAAK,MAAM,SAAW,EACjE,OAAOA,GAKT,QAHIoC,GAAMpC,GACN8C,GAAU/C,EAAK,oBAAoB8C,GAAO7C,EAAK,CAAC,EAE3CwC,GAAI,EAAGA,GAAI,KAAK,MAAM,OAAQA,KAAK,CAC1C,IAAIO,GAAYD,GAAQ,KAAK,MAAMN,EAAC,EAAE,KAAK,KAAK,EAC5CQ,GAAkBF,GAAQ,KAAK,MAAMN,EAAC,EAAE,OAAO,KAAK,EACpDS,GAAYH,GAAQ,KAAK,MAAMN,EAAC,EAAE,KAAK,EAC3CJ,GAAMlD,EAAakD,GAAKjD,EAAIF,EAAe8D,GAAWC,EAAe,EAAGC,EAAS,CAAC,CACpF,CACA,OAAOb,EACT,EAUA,IAAIC,EAAYc,GAAQzB,IAAO,CAE7B,GAAIkB,GAAeQ,GAAO1B,EAAG,EAAG,CAC9B,IAAIE,GAAOwB,GAAM1B,EAAG,EAChB2B,GAASzB,GAAK,SAAS,EAAE,EAC7B,MAAO,CACL,KAAAA,GACA,OAAAyB,EACF,CACF,CACA,QAASC,MAASF,GAChB,GAAIR,GAAeQ,GAAOE,EAAK,GACzBC,GAAS7B,GAAK4B,EAAK,EAAG,CACxB,IAAIE,GAAQJ,GAAME,EAAK,EACnBG,GAAY/B,GAAI,OAAS4B,GAAM,OAC/BI,GAAahC,GAAI,UAAU,EAAG+B,EAAS,EACvCE,GAAUf,GAAeY,GAAM,SAAUE,EAAU,EAAIF,GAAM,SAASE,EAAU,EAAI,OACxF,GAAIC,KAAY,OAEd,MAAO,CACL,KAAMH,GACN,OAAQG,EACV,CAEJ,CAGJ,OAAO,IACT,EAAG,CACD,OAAQC,IAAQA,GAAK,CAAC,EACtB,MAAO,GACT,CAAC,EAUD7D,EAAK,gBAAkB,SAAUvB,GAAM,CACrC,OAAO6D,EAAU7D,EAAI,IAAM,IAC7B,EAQAuB,EAAK,UAAU,QAAU,SAAU8D,GAAM,CAIvC,GAHI,OAAOA,IAAS,WAClBA,GAAOC,EAAWD,EAAI,GAEpB,CAACA,GACH,MAAO,GAIT,QAASrB,GAAI,EAAGA,GAAIrC,GAAgB,OAAQqC,KAC1C,GAAI,KAAK,KAAK,KAAK,WAAWA,EAAC,GAAK,IAAMqB,GAAK,WAAWrB,EAAC,GAAK,EAAE,EAAI,MACpE,MAAO,GAGX,MAAO,EACT,EASAzC,EAAK,UAAU,UAAY,SAAUgE,GAAO,CAE1C,QAASvB,GAAI,EAAGA,GAAIrC,GAAgB,OAAQqC,KAC1C,GAAI,KAAK,KAAK,KAAK,WAAWA,EAAC,GAAK,IAAMuB,GAAM,WAAWvB,EAAC,GAAK,EAAE,EAAI,MACrE,MAAO,GAGX,MAAO,EACT,EAQAzC,EAAK,UAAU,OAAS,SAAUgE,GAAO,CACvC,OAAO,KAAK,UAAUA,EAAK,GAAKxE,EAAM,KAAK,MAAOwE,GAAM,KAAK,CAC/D,EAQAhE,EAAK,UAAU,SAAW,SAAUiE,GAAQ,CAG1C,QAFI5B,GAAM,KAAK,MAAM,EACjB2B,GAAQzD,GAAO0D,EAAM,EAAIA,GAAS,IAAIjE,EAAKiE,EAAM,EAC5CxB,GAAI,EAAGA,GAAIrC,GAAgB,OAAQqC,KAE1CJ,GAAI,WAAWI,EAAC,GAAK,KAAK,WAAWA,EAAC,GAAK,IAAMuB,GAAM,WAAWvB,EAAC,GAAK,GAI1E,QAASyB,GAAK,EAAGA,GAAKF,GAAM,MAAM,OAAQE,KAAM,CAE9C,IAAIC,GAAW5F,GAAc,CAAC,EAAGyF,GAAM,MAAME,EAAE,CAAC,EAChD7B,GAAI,MAAM,KAAK8B,EAAQ,CACzB,CAGA,GAAI,KAAK,QAAU,MAAQH,GAAM,QAAU,KAAM,CAC/C,IAAII,GAAU,KAAK,QAAU,KAAO,KAAK,WAAW,CAAC,EAAI,KAAK,MAC1DC,GAAWL,GAAM,QAAU,KAAOA,GAAM,WAAW,CAAC,EAAIA,GAAM,MAClE3B,GAAI,MAAQnD,EAAekF,GAASC,EAAQ,CAC9C,MACEhC,GAAI,MAAQ,KAEd,OAAI9B,GAAO0D,EAAM,IACf5B,GAAI,4BAA8B,IAE7BiC,EAAqBjC,EAAG,CACjC,EASArC,EAAK,UAAU,WAAa,SAAUuE,GAAW,CAC/C,OAAO,IAAIvE,EAAKuE,EAAS,EAAE,OAAO,IAAI,CACxC,EAQAvE,EAAK,UAAU,OAAS,SAAUiE,GAAQ,CAGxC,QAFI5B,GAAM,KAAK,MAAM,EACjB2B,GAAQzD,GAAO0D,EAAM,EAAIA,GAAS,IAAIjE,EAAKiE,EAAM,EAC5CxB,GAAI,EAAGA,GAAIrC,GAAgB,OAAQqC,KAE1CJ,GAAI,WAAWI,EAAC,GAAK,KAAK,WAAWA,EAAC,GAAK,IAAMuB,GAAM,WAAWvB,EAAC,GAAK,GAI1E,QAAS+B,GAAM,EAAGA,GAAMR,GAAM,MAAM,OAAQQ,KAAO,CAEjD,IAAIL,GAAW5F,GAAcA,GAAc,CAAC,EAAGyF,GAAM,MAAMQ,EAAG,CAAC,EAAG,CAAC,EAAG,CACpE,MAAO,CAACR,GAAM,MAAMQ,EAAG,EAAE,KAC3B,CAAC,EACDnC,GAAI,MAAM,KAAK8B,EAAQ,CACzB,CAGA,GAAI,KAAK,QAAU,MAAQH,GAAM,QAAU,KAAM,CAC/C,IAAII,GAAU,KAAK,QAAU,KAAO,KAAK,WAAW,CAAC,EAAI,KAAK,MAC1DC,GAAWL,GAAM,QAAU,KAAOA,GAAM,WAAW,CAAC,EAAIA,GAAM,MAClE3B,GAAI,MAAQlD,EAAaiF,GAASC,EAAQ,CAC5C,MACEhC,GAAI,MAAQ,KAEd,OAAI9B,GAAO0D,EAAM,IACf5B,GAAI,4BAA8B,IAE7BiC,EAAqBjC,EAAG,CACjC,EAQArC,EAAK,UAAU,IAAM,SAAUwC,GAAG,CAEhC,QADIH,GAAM,KAAK,MAAM,EACZI,GAAI,EAAGA,GAAIrC,GAAgB,OAAQqC,KAE1CJ,GAAI,WAAWI,EAAC,GAAK,KAAK,WAAWA,EAAC,GAAK,GAAKD,GAIlD,QAASiC,GAAM,EAAGA,GAAMpC,GAAI,MAAM,OAAQoC,KACxCpC,GAAI,MAAMoC,EAAG,EAAE,OAASjC,GAE1B,OAAIH,GAAI,QAAU,KAChBA,GAAI,MAAQjD,EAAIiD,GAAI,MAAOG,EAAC,EAQ5BH,GAAI,MAAQ,KAEdA,GAAI,4BAA8B,GAC3BiC,EAAqBjC,EAAG,CACjC,EAOA,SAASiC,EAAqBzC,GAAM,CAClC,OAAIA,GAAK,UAAUkC,EAAW,IAAI,GAAKlC,GAAK,QAAU,MAAQ,CAAC9C,EAAO,YAC7D8C,GAAK,MAELA,EAEX,CAQA7B,EAAK,UAAU,IAAM,UAAY,CAC/B,IAAI0E,GAAM,KAAK,MAAM,EACrB,GAAIA,GAAI,QAAU,KAChB,GAAIA,GAAI,WAAW,GAAKA,GAAI,MAAM,SAAW,GAAKA,GAAI,MAAM,CAAC,EAAE,KAAK,SAAW,EAC7EA,GAAI,MAAQrF,EAAIqF,GAAI,KAAK,MACpB,CAIL,IAAI3B,GAAU2B,GAAI,iBAAiB,EAC/B1B,GAAYD,GAAQ2B,GAAI,MAAM,CAAC,EAAE,KAAK,KAAK,EAC3CC,GAAgB5B,GAAQ2B,GAAI,MAAM,CAAC,EAAE,KAAK,MAAM,EAChDE,GAAa1F,EAAe8D,GAAW2B,EAAa,EACxDD,GAAI,MAAQzF,EAAeI,EAAIL,EAAU0F,GAAI,MAAOE,EAAU,CAAC,EAAGA,EAAU,CAC9E,CAEF,QAASnC,MAAKiC,GAAI,OACZA,GAAI,MAAMjC,EAAC,EAAE,KAAK,OAAS,MAAQiC,GAAI,MAAMjC,EAAC,EAAE,KAAK,OAAS,SAChEiC,GAAI,MAAMjC,EAAC,EAAE,KAAOY,GAAM,GAG9B,OAAOqB,EACT,EAQA1E,EAAK,UAAU,GAAK,SAAUE,GAAe,CAC3C,IAAID,GAAQ,KAAK,QAAU,KAAO,KAAK,WAAW,CAAC,EAAI,KAAK,MACxD+D,GACJ,GAAI,OAAO9D,IAAkB,SAC3B8D,GAAQhE,EAAK,MAAME,EAAa,UACvBK,GAAOL,EAAa,EAC7B8D,GAAQ9D,GAAc,MAAM,MAE5B,OAAM,IAAI,MAAM,sCAAsC,EAExD,GAAI,CAAC,KAAK,UAAU8D,EAAK,EACvB,MAAM,IAAI,MAAM,wBAAwB,OAAOA,GAAM,SAAS,EAAG,QAAQ,EAAE,OAAO,KAAK,SAAS,EAAG,IAAI,CAAC,EAE1G,GAAIA,GAAM,QAAU,KAClB,MAAM,IAAI,MAAM,uCAAuC,EAEzD,GAAI,KAAK,QAAU,MAAQ,KAAK,WAAW,GAAK,KAAK,MAAM,SAAW,GAAKA,GAAM,MAAM,SAAW,GAAK,KAAK,MAAM,CAAC,EAAE,KAAK,SAAWA,GAAM,MAAM,CAAC,EAAE,KAAK,OACvJA,GAAM,MAAQpB,GAAM3C,EAAK,MACpB,CAEL,IAAI8C,GAAU/C,EAAK,oBAAoB8C,GAAO7C,EAAK,CAAC,EAEhD4E,GAAgB,KAAK,MAAM,CAAC,EAAE,KAAK,MACnCC,GAAoB,KAAK,MAAM,CAAC,EAAE,KAAK,OACvCC,GAAiB7F,EAAe2F,GAAeC,EAAiB,EAChEE,GAAiBhB,GAAM,MAAM,CAAC,EAAE,KAAK,MACrCiB,GAAqBjB,GAAM,MAAM,CAAC,EAAE,KAAK,OACzCkB,GAAkBhG,EAAe8F,GAAgBC,EAAkB,EACvEjB,GAAM,MAAQhF,EAAUiB,GAAO8C,GAAQ9D,EAAe8F,GAAgBG,EAAe,CAAC,CAAC,CACzF,CACA,OAAAlB,GAAM,UAAY,GAClBA,GAAM,4BAA8B,GAC7BA,EACT,EASAhE,EAAK,UAAU,SAAW,SAAUE,GAAe,CACjD,OAAOH,EAAS,KAAK,UAAUG,EAAa,CAAC,CAC/C,EAQAF,EAAK,UAAU,UAAY,SAAUE,GAAe,CAClD,IAAI8D,GAOJ,OANI9D,GAEF8D,GAAQ,KAAK,GAAG9D,EAAa,EAE7B8D,GAAQ,KAAK,MAAM,EAEjBA,GAAM,WAAW,GAAKA,GAAM,MAAM,SAAW,EACxCA,GAAM,aAAaA,GAAM,KAAK,EAE9BA,GAAM,aAAaA,GAAM,MAAOA,GAAM,MAAM,CAAC,EAAE,OAAO,KAAK,CAEtE,EAOAhE,EAAK,UAAU,SAAW,UAAY,CACpC,OAAO,KAAK,OAAO,CACrB,EAQAA,EAAK,UAAU,OAAS,UAAY,CAClC,MAAO,CACL,OAAQ,OACR,MAAO,KAAK,aAAa,KAAK,KAAK,EACnC,KAAM,KAAK,MAAM,OAAS,EAAI,KAAK,YAAY,EAAI,KACnD,UAAW,KAAK,SAClB,CACF,EASAA,EAAK,SAAW,SAAUmF,GAAM,CAC9B,IAAIC,GACAvD,GAAO,IAAI7B,EAAKmF,GAAK,OAAQC,GAAaD,GAAK,QAAU,MAAQC,KAAe,OAASA,GAAa,MAAS,EACnH,OAAAvD,GAAK,UAAYsD,GAAK,WAAa,GAC5BtD,EACT,EAOA7B,EAAK,UAAU,QAAUA,EAAK,UAAU,SAMxCA,EAAK,UAAU,SAAW,UAAY,CACpC,IAAI0E,GAAM,KAAK,MAAM,EACjBW,GAAmB,CAAC,EAGpBC,GACJ,QAASC,MAAOC,GACd,GAAI3C,GAAe2C,GAAmBD,EAAG,GACnCb,GAAI,QAAQX,EAAWwB,EAAG,CAAC,EAAG,CAChCD,GAAeC,GACf,KACF,CAGJ,GAAID,KAAiB,OACnBZ,GAAI,MAAQ,CAAC,MACR,CACL,IAAIe,GAOJ,GANIH,IAEEzC,GAAe2C,GAAmBF,EAAY,IAChDG,GAAeD,GAAkBF,EAAY,GAG7CG,GACFf,GAAI,MAAQ,CAAC,CACX,KAAMe,GAAa,KACnB,OAAQA,GAAa,OACrB,MAAO,CACT,CAAC,MACI,CAKL,QADIC,GAAiB,GACZjD,GAAI,EAAGA,GAAIrC,GAAgB,OAAQqC,KAAK,CAC/C,IAAIC,GAAUtC,GAAgBqC,EAAC,EAC3B,KAAK,IAAIiC,GAAI,WAAWjC,EAAC,GAAK,CAAC,EAAI,QACjCI,GAAe2C,GAAmB9C,EAAO,EAC3C2C,GAAiB,KAAK,CACpB,KAAMG,GAAkB9C,EAAO,EAAE,KACjC,OAAQ8C,GAAkB9C,EAAO,EAAE,OACnC,MAAOgC,GAAI,WAAWjC,EAAC,GAAK,CAC9B,CAAC,EAEDiD,GAAiB,GAGvB,CAGIL,GAAiB,OAASX,GAAI,MAAM,QAAU,CAACgB,KAEjDhB,GAAI,MAAQW,GAEhB,CACF,CACA,OAAOX,EACT,EAKA1E,EAAK,UAAU,KAAO,UAAY,CAOhC,QANI0E,GAAM,KAAK,MAAM,EACjBW,GAAmB,CAAC,EAKf5C,GAAI,EAAGA,GAAIrC,GAAgB,OAAQqC,KAAK,CAC/C,IAAIC,GAAUtC,GAAgBqC,EAAC,EAC/B,GAAI,KAAK,IAAIiC,GAAI,WAAWjC,EAAC,GAAK,CAAC,EAAI,MACrC,GAAII,GAAeF,GAAa,GAAID,EAAO,EACzC2C,GAAiB,KAAK,CACpB,KAAM1C,GAAa,GAAGD,EAAO,EAAE,KAC/B,OAAQC,GAAa,GAAGD,EAAO,EAAE,OACjC,MAAOgC,GAAI,WAAWjC,EAAC,GAAK,CAC9B,CAAC,MAED,OAAM,IAAI,MAAM,8BAAgCC,GAAU,cAAc,CAG9E,CAMA,OAHAgC,GAAI,MAAQW,GACZX,GAAI,UAAY,GAChBA,GAAI,4BAA8B,GAC9B,KAAK,QAAU,MACjBA,GAAI,MAAQ,KACL,KAAK,GAAGA,EAAG,GAEbA,EACT,EAOA1E,EAAK,UAAU,YAAc,UAAY,CAKvC,QAJI2F,GAAS,GACTC,GAAS,GACTC,GAAO,EACPC,GAAO,EACFrD,GAAI,EAAGA,GAAI,KAAK,MAAM,OAAQA,KACjC,KAAK,MAAMA,EAAC,EAAE,MAAQ,GACxBoD,KACAF,IAAU,IAAM,KAAK,MAAMlD,EAAC,EAAE,OAAO,KAAO,KAAK,MAAMA,EAAC,EAAE,KAAK,KAC3D,KAAK,IAAI,KAAK,MAAMA,EAAC,EAAE,MAAQ,CAAG,EAAI,QACxCkD,IAAU,IAAM,KAAK,MAAMlD,EAAC,EAAE,QAEvB,KAAK,MAAMA,EAAC,EAAE,MAAQ,GAC/BqD,KAGJ,GAAIA,GAAO,EACT,QAASC,GAAM,EAAGA,GAAM,KAAK,MAAM,OAAQA,KACrC,KAAK,MAAMA,EAAG,EAAE,MAAQ,IACtBF,GAAO,GACTD,IAAU,IAAM,KAAK,MAAMG,EAAG,EAAE,OAAO,KAAO,KAAK,MAAMA,EAAG,EAAE,KAAK,KAC/D,KAAK,IAAI,KAAK,MAAMA,EAAG,EAAE,MAAQ,CAAG,EAAI,QAC1CH,IAAU,IAAM,CAAC,KAAK,MAAMG,EAAG,EAAE,SAGnCH,IAAU,IAAM,KAAK,MAAMG,EAAG,EAAE,OAAO,KAAO,KAAK,MAAMA,EAAG,EAAE,KAAK,KACnEH,IAAU,IAAM,KAAK,MAAMG,EAAG,EAAE,QAMxCJ,GAASA,GAAO,OAAO,CAAC,EACxBC,GAASA,GAAO,OAAO,CAAC,EAGpBC,GAAO,GAAKC,GAAO,IACrBH,GAAS,IAAMA,GAAS,KAEtBG,GAAO,GAAKD,GAAO,IACrBD,GAAS,IAAMA,GAAS,KAE1B,IAAIjE,GAAMgE,GACV,OAAIE,GAAO,GAAKC,GAAO,IACrBnE,IAAO,OAETA,IAAOiE,GACAjE,EACT,EAWA3B,EAAK,UAAU,OAAS,SAAU4B,GAAS,CAGzC,IAAIoE,GAAO,KAAK,6BAA+B,KAAK,QAAU,KAAO,KAAK,MAAM,EAAI,KAAK,SAAS,EAG9FC,GAAc,GACd,OAAOD,GAAK,MAAU,KAAeA,GAAK,QAAU,MAAQ7F,GAAU6F,GAAK,KAAK,IAElFC,GAAc,KAAK,IAAID,GAAK,MAAM,EAAE,EAAI,OAE1C,QAASvD,MAAKuD,GAAK,MACbnD,GAAemD,GAAK,MAAOvD,EAAC,GAC1BuD,GAAK,MAAMvD,EAAC,EAAE,OACZuD,GAAK,MAAMvD,EAAC,EAAE,KAAK,OAAS,MAAQwD,GACtCD,GAAK,MAAMvD,EAAC,EAAE,KAAOY,GAAM,IAClB2C,GAAK,MAAMvD,EAAC,EAAE,KAAK,OAAS,OAAS,CAACwD,KAC/CD,GAAK,MAAMvD,EAAC,EAAE,KAAOY,GAAM,KAQ/B2C,GAAK,MAAM,SAAW,GAAK,CAACA,GAAK,WAG/B,KAAK,IAAIA,GAAK,MAAM,CAAC,EAAE,MAAQ,KAAK,MAAMA,GAAK,MAAM,CAAC,EAAE,KAAK,CAAC,EAAI,QAEpEA,GAAK,MAAM,CAAC,EAAE,OAASA,GAAK,YAAY,GAG5C,IAAI/F,GAAQ+F,GAAK,aAAaA,GAAK,KAAK,EACpCrE,GAAMqE,GAAK,QAAU,KAAOtG,EAAOO,GAAO2B,IAAW,CAAC,CAAC,EAAI,GAC3DsE,GAAUF,GAAK,YAAY,EAC/B,OAAIA,GAAK,OAAS7F,GAAU6F,GAAK,KAAK,IACpCrE,GAAM,IAAMA,GAAM,KAEhBuE,GAAQ,OAAS,GAAKvE,GAAI,OAAS,IACrCA,IAAO,KAETA,IAAOuE,GACAvE,EACT,EAQA3B,EAAK,UAAU,YAAc,UAAY,CACvC,GAAI,KAAK,MAAM,SAAW,EACxB,MAAM,IAAI,MAAM,0GAA0G,EAE5H,GAAI,KAAK,IAAI,KAAK,MAAM,CAAC,EAAE,MAAQ,KAAK,MAAM,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,GAAK,MACrE,MAAM,IAAI,MAAM,0GAA0G,EAW5H,IAAImG,GAAW,KAAK,QAAU,KAAO9G,EAAI,KAAK,KAAK,EAAI,EACnD+G,GAAe/G,EAAI,KAAK,MAAM,CAAC,EAAE,KAAK,KAAK,EAC3CgH,GAAa,KAAK,MAAM,CAAC,EAAE,OAC/B,GAAIF,KAAa,EACf,OAAOE,GAET,IAAI9D,GAAQ,KAAK,MAAM,CAAC,EAAE,MACtB+D,GAAW,KAAK,IAAIH,GAAW,KAAK,IAAIE,GAAW,MAAQD,GAAc7D,EAAK,CAAC,EAAI,KAAK,KAAO,IACnG,GAAI+D,GAAW,WAAaA,GAAW,SAAU,OAAOD,GACxDC,GAAW,KAAK,IAAIA,EAAQ,EAC5B,IAAIC,GAAW,KAAK,MAAM,CAAC,EAAE,KAAK,SAClC,QAAS/D,MAAK+D,GACZ,GAAI1D,GAAe0D,GAAU/D,EAAC,EAAG,CAC/B,IAAIc,GAASiD,GAAS/D,EAAC,EACvB,GAAIc,GAAO,WAAY,CACrB,IAAIkD,GAAO,KAAK,IAAI,KAAK,IAAIL,GAAW,KAAK,IAAI7C,GAAO,MAAQ8C,GAAc7D,EAAK,CAAC,EAAI,KAAK,KAAO,GAAG,GACnGiE,GAAOF,IAAYE,KAASF,IAAYhD,GAAO,KAAK,OAAS+C,GAAW,KAAK,UAG/EA,GAAa/C,GACbgD,GAAWE,GAEf,CACF,CAEF,OAAOH,EACT,EAeArG,EAAK,UAAU,UAAY,SAAUyG,GAAO,CAG1C,QAFIpG,GAAI,KAAK,MAAM,EACfqE,GAAM,CAAC,EACFjC,GAAI,EAAGA,GAAIgE,GAAM,SAExBpG,GAAIA,GAAE,GAAGoG,GAAMhE,EAAC,CAAC,EACbA,KAAMgE,GAAM,OAAS,GAHOhE,KAAK,CAMrC,IAAIiE,GAAWrG,GAAE,UAAU,EAIvBsG,GAAWpH,EAAMmH,EAAQ,EACzBE,GAAS,OACTC,GAAgBrH,EAAMmH,GAAUD,EAAQ,EACxCG,GACFD,GAASD,GAETC,GAAStH,EAAIe,GAAE,UAAU,CAAC,EAE5B,IAAIyG,GAAI,IAAI9G,EAAK4G,GAAQH,GAAMhE,EAAC,EAAE,SAAS,CAAC,EAC5CiC,GAAI,KAAKoC,EAAC,EACVzG,GAAIpB,EAAeoB,GAAGyG,EAAC,CACzB,CAOA,QADIC,GAAU,EACLC,GAAM,EAAGA,GAAMtC,GAAI,OAAQsC,KAClCD,GAAU/H,EAAU+H,GAASrC,GAAIsC,EAAG,EAAE,KAAK,EAE7C,OAAIxH,EAAMuH,GAAS,KAAK,KAAK,IAC3B1G,GAAE,MAAQ,GAEZqE,GAAI,KAAKrE,EAAC,EACHqE,EACT,EACA,IAAIuC,EAAW,CACb,KAAM,CACJ,GAAI,CACF,KAAM,GACN,MAAO,EACP,WAAY,EACd,CACF,EACA,MAAO,CACL,GAAI,CACF,KAAM,GACN,MAAO,EACP,WAAY,EACd,EACA,GAAI,CACF,KAAM,KACN,MAAO,GACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,IACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,IACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,IACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,IACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,GACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,IACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,CACF,EACA,KAAM,CACJ,GAAI,CACF,KAAM,GACN,MAAO,EACP,WAAY,EACd,EACA,KAAM,CACJ,KAAM,OACN,MAAO,GACP,WAAY,EACd,EACA,MAAO,CACL,KAAM,QACN,MAAO,IACP,WAAY,EACd,EACA,KAAM,CACJ,KAAM,OACN,MAAO,IACP,WAAY,EACd,EACA,KAAM,CACJ,KAAM,OACN,MAAO,IACP,WAAY,EACd,EACA,KAAM,CACJ,KAAM,OACN,MAAO,IACP,WAAY,EACd,EACA,KAAM,CACJ,KAAM,OACN,MAAO,KACP,WAAY,EACd,EACA,KAAM,CACJ,KAAM,OACN,MAAO,KACP,WAAY,EACd,EACA,IAAK,CACH,KAAM,MACN,MAAO,KACP,WAAY,EACd,EACA,MAAO,CACL,KAAM,QACN,MAAO,KACP,WAAY,EACd,EACA,MAAO,CACL,KAAM,QACN,MAAO,KACP,WAAY,EACd,EACA,MAAO,CACL,KAAM,QACN,MAAO,KACP,WAAY,EACd,EACA,OAAQ,CACN,KAAM,SACN,MAAO,KACP,WAAY,EACd,EACA,KAAM,CACJ,KAAM,OACN,MAAO,GACP,WAAY,EACd,EACA,MAAO,CACL,KAAM,QACN,MAAO,IACP,WAAY,EACd,EACA,MAAO,CACL,KAAM,QACN,MAAO,KACP,WAAY,EACd,EACA,MAAO,CACL,KAAM,QACN,MAAO,KACP,WAAY,EACd,EACA,KAAM,CACJ,KAAM,OACN,MAAO,KACP,WAAY,EACd,EACA,KAAM,CACJ,KAAM,OACN,MAAO,MACP,WAAY,EACd,EACA,MAAO,CACL,KAAM,QACN,MAAO,MACP,WAAY,EACd,EACA,KAAM,CACJ,KAAM,OACN,MAAO,MACP,WAAY,EACd,EACA,MAAO,CACL,KAAM,QACN,MAAO,MACP,WAAY,EACd,EACA,MAAO,CACL,KAAM,QACN,MAAO,MACP,WAAY,EACd,EACA,MAAO,CACL,KAAM,QACN,MAAO,MACP,WAAY,EACd,EACA,OAAQ,CACN,KAAM,SACN,MAAO,MACP,WAAY,EACd,CACF,EACA,QAAS,CACP,GAAI,CACF,KAAM,GACN,MAAO,EACP,WAAY,EACd,EACA,GAAI,CACF,KAAM,KACN,MAAO,IACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,IACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,IACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,IACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,CACF,EACA,MAAO,CACL,GAAI,CACF,KAAM,GACN,MAAO,EACP,WAAY,EACd,EACA,GAAI,CACF,KAAM,KACN,MAAO,IACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,IACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,IACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,CACF,EACA,gBAAiB,CACf,GAAI,CACF,KAAM,GACN,MAAO,EACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,IACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,IACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,IACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,CACF,EACA,iBAAkB,CAChB,GAAI,CACF,KAAM,GACN,MAAO,EACP,WAAY,EACd,EACA,GAAI,CACF,KAAM,KACN,MAAO,KACP,WAAY,EACd,EACA,GAAI,CACF,KAAM,KACN,MAAO,KAAK,IAAI,KAAM,CAAC,EACvB,WAAY,EACd,EACA,GAAI,CACF,KAAM,KACN,MAAO,KAAK,IAAI,KAAM,CAAC,EACvB,WAAY,EACd,EACA,GAAI,CACF,KAAM,KACN,MAAO,KAAK,IAAI,KAAM,CAAC,EACvB,WAAY,EACd,EACA,GAAI,CACF,KAAM,KACN,MAAO,KAAK,IAAI,KAAM,CAAC,EACvB,WAAY,EACd,EACA,GAAI,CACF,KAAM,KACN,MAAO,KAAK,IAAI,KAAM,CAAC,EACvB,WAAY,EACd,EACA,GAAI,CACF,KAAM,KACN,MAAO,KAAK,IAAI,KAAM,CAAC,EACvB,WAAY,EACd,EACA,GAAI,CACF,KAAM,KACN,MAAO,KAAK,IAAI,KAAM,CAAC,EACvB,WAAY,EACd,CACF,EACA,eAAgB,CACd,GAAI,CACF,KAAM,GACN,MAAO,EACP,WAAY,EACd,EACA,KAAM,CACJ,KAAM,OACN,MAAO,IACP,WAAY,EACd,EACA,KAAM,CACJ,KAAM,OACN,MAAO,IACP,WAAY,EACd,EACA,KAAM,CACJ,KAAM,OACN,MAAO,IACP,WAAY,EACd,EACA,KAAM,CACJ,KAAM,OACN,MAAO,KACP,WAAY,EACd,EACA,KAAM,CACJ,KAAM,OACN,MAAO,KACP,WAAY,EACd,EACA,IAAK,CACH,KAAM,MACN,MAAO,KACP,WAAY,EACd,EACA,MAAO,CACL,KAAM,QACN,MAAO,KACP,WAAY,EACd,EACA,MAAO,CACL,KAAM,QACN,MAAO,KACP,WAAY,EACd,CACF,EACA,gBA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AU,CACR,SAAU,CACR,YAAa,EACf,CACF,CACF,EAEA,CACE,EAAG,iCACH,SAAU,CACR,OAAQ,CACN,MAAO,EACT,CACF,CACF,EAEA,CACE,EAAG,4BACH,EAAG,8BACL,EAAG,CACD,EAAG,+DACH,SAAU,CACR,OAAQ,CACN,MAAO,EACT,CACF,CACF,EAAG,CACD,EAAG,+DACH,SAAU,CACR,OAAQ,CACN,MAAO,EACT,CACF,CACF,EAAG,CACD,EAAG,+DACH,SAAU,CACR,OAAQ,CACN,MAAO,EACT,CACF,CACF,EAAG,CACD,EAAG,MACH,EAAG,KACL,EAAG,CACD,EAAG,uBACH,SAAU,CACR,OAAQ,CACN,MAAO,EACT,CACF,CACF,EAAG,CACD,EAAG,2BACH,SAAU,CACR,OAAQ,CACN,MAAO,EACT,CACF,CACF,EAKAD,EAIA,CACE,EAAG,aACH,SAAU,CACR,IAAK,CACH,MAAO,EACT,CACF,CACF,EAAG,CACD,EAAG,OACH,EAAG,GACL,EAAG,CACD,EAAG,YACH,EAAG,UACL,EAEA,CACE,EAAG,gBACH,EAAG,YACL,EAEA,CACE,EAAG,2BACH,EAAG,+BACL,EAAG,CACD,EAAG,2BACH,EAAG,+BACL,EAEA,CACE,EAAG,wBACH,SAAU,CACR,SAAU,CACR,YAAa,EACf,CACF,CACF,EAAG,CACD,EAAG,wBACH,SAAU,CACR,SAAU,CACR,YAAa,EACf,CACF,CACF,EAAG,CACD,EAAG,8BACH,SAAU,CACR,SAAU,CACR,YAAa,EACf,CACF,CACF,EAAG,CACD,EAAG,uBACH,SAAU,CACR,OAAQ,CACN,MAAO,EACT,EACA,SAAU,CACR,YAAa,EACf,CACF,CACF,EAAG,CACD,EAAG,8DACH,SAAU,CACR,SAAU,CACR,YAAa,EACf,CACF,CACF,EAAG,CACD,EAAG,8DACH,SAAU,CACR,SAAU,CACR,YAAa,EACf,CACF,CACF,EAAG,CACD,EAAG,YACH,EAAG,UACL,EAAG,CACD,EAAG,wBACH,SAAU,CACR,SAAU,CACR,YAAa,EACf,CACF,CACF,EAAG,CACD,EAAG,wBACH,SAAU,CACR,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", - "names": ["require_uikit", "__commonJSMin", "exports", "module", "global", "factory", "hasOwnProperty", "toString", "hasOwn", "obj", "key", "hyphenateRe", "hyphenate", "memoize", "str", "camelizeRe", "camelize", "_", "c", "ucfirst", "startsWith", "search", "_a", "endsWith", "includes", "findIndex", "array", "predicate", "isArray", "toArray", "assign", "isFunction", "isObject", "isPlainObject", "isWindow", "isDocument", "nodeType", "isNode", "isElement", "isBoolean", "value", "isString", "isNumber", "isNumeric", "isEmpty", "isUndefined", "toBoolean", "toNumber", "number", "toFloat", "toNode", "element", "toNodes", "toWindow", "document", "isEqual", "other", "each", "val", "swap", "a", "b", "match", "last", "cb", "sortBy", "prop", "propA", "propB", "sumBy", "iteratee", "sum", "item", "uniqueBy", "seen", "check", "pick", "props", "res", "clamp", "min", "max", "noop", "intersectRect", "rects", "minProp", "maxProp", "pointInRect", "point", "rect", "ratio", "dimensions", "aProp", "contain", "maxDimensions", "cover$1", "Dimensions", "getIndex", "i", "elements", "current", "finite", "length", "fn", "cache", "args", "addClass", "classes", "node", "add", "toClasses", "cls", "hasClass", "removeClass", "remove", "replaceClass", "oldClass", "newClass", "toggleClass", "force", "cls2", "attr", "name", "el", "removeAttr", "hasAttr", "element2", "data", "attribute", "inBrowser", "isRtl", "hasTouch", "hasPointerEvents", "pointerDown$1", "pointerMove$1", "pointerUp$1", "pointerEnter", "pointerLeave", "pointerCancel", "voidElements", "isVoidElement", "isVisibleFn", "isVisible", "selInput", "isInput", "matches", "selFocusable", "isFocusable", "parent", "filter$1", "selector", "parents", "children", "children2", "index", "ref", "isSameSiteAnchor", "part", "getTargetedElement", "hash", "ownerDocument", "id", "query", "context", "find", "getContext", "queryAll", "findAll", "_query", "parseSelector", "addStarRe", "splitSelectorRe", "isContextSelector", "selectors", "sel", "positionRe", "parsePositionSelector", "position", "queryFn", "parsed", "_doQuery", "isSingle", "positionSel", "ctx", "domPath", "names", "escape", "tagName", "css", "on", "targets", "types", "listener", "useCapture", "getArgs", "detail", "selfFilter", "delegate", "type", "target", "off", "once", "condition", "off2", "e", "result", "trigger", "event", "detail2", "toEventTargets", "createEvent", "bubbles", "cancelable", "isEventTarget", "toEventTarget", "isTouch", "getEventPos", "_b", "x", "y", "cssNumber", "property", "priority", "propName", "style", "prefix", "prefixedName", "clsTransition", "transitionEnd", "transitionCanceled", "transition$1", "duration", "timing", "resolve", "reject", "timer", "Transition", "clsAnimation", "animationEnd", "animationCanceled", "animate$2", "animation", "origin", "out", "Animation", "ready", "isTag", "tagNames", "empty", "$", "html", "parent2", "html2", "append", "prepend", "applyFn", "before", "after", "nodes", "fragment", "unwrapSingle", "remove$1", "wrapAll", "structure", "wrapInner", "unwrap", "self", "singleTagRe", "container", "apply", "isHtml", "$$", "dirs$1", "dimensions$1", "height", "width", "offset", "coordinates", "currentOffset", "scrollY", "scrollX", "offsetBy", "dir", "top", "left", "body", "documentElement", "offsetParent", "parentOffset", "offsetPosition", "offset2", "win", "dimension", "doc", "boxModelAdjust", "sizing", "prop2", "flipPosition", "pos", "toPx", "offsetDim", "parseCalc", "value2", "unit", "parseUnit", "percent", "getViewportHeight", "calcRe", "calc", "unitRe$1", "base", "vh", "vhEl", "fastdom", "read", "write", "clear", "flush", "reads", "writes", "task", "scheduleFlush", "scheduled", "runTasks", "tasks", "MouseTracker", "p", "right", "bottom", "prevPosition", "path", "diagonal", "intersection", "intersect", "x1", "y1", "x2", "y2", "x3", "y3", "x4", "y4", "denominator", "ua", "observeIntersection", "options", "intersecting", "observer", "entries", "observer2", "entry", "hasResizeObserver", "observeResize", "observe$1", "cb2", "observeViewportResize", "observeMutation", "Observer", "play", "isIFrame", "call", "isHTML5", "pause", "mute", "isVideo", "isYoutube", "isVimeo", "cmd", "enableApi", "post", "stateKey", "counter", "youtube", "vimeo", "poller", "isInView", "offsetTop", "offsetLeft", "overflowParents", "offsetViewport", "scrollIntoView", "parents2", "scrollParents", "scrollElement", "scrollTop", "scrollHeight", "offsetHeight", "viewport", "maxScroll", "elHeight", "elTop", "scrollTo", "targetEl", "scroll", "getDuration", "start", "isScrollingElement", "scrollingElement", "targetTop", "prev", "frames", "step", "ease", "diff", "getCoveringElement", "dist", "k", "scrolledOver", "startOffset", "endOffset", "scrollParent", "viewportHeight", "elementOffsetTop", "end", "scrollable", "scrollEl", "ancestors", "fixedIndex", "window", "documentScrollingElement", "useWindow", "scale", "viewportElement", "subpixel", "coverEl", "hasPosition", "zIndex", "dirs", "positionAt", "getPosition", "attachTo", "boundary", "viewportOffset", "placement", "getViewport$2", "isWithin", "attach", "flip", "scrollArea", "getScrollArea", "applyOffset", "newPos", "flipAxis", "targetDim", "elOffset", "targetOffset", "moveBy", "dim", "getIntersectionArea", "commonScrollParents", "axis", "area", "positionA", "positionB", "flipAttach", "flipOffset", "flipAttachAxis", "newAttach", "util", "Class", "units", "countdown", "timespan", "getTimeSpan", "digits", "digit", "date", "total", "strats", "concatStrat", "parentVal", "childVal", "vm", "mergeFnData", "vm2", "defaultStrat", "mergeOptions", "child", "mixin", "mergeKey", "parseOptions", "options2", "option", "coerce$1", "toList", "listRe", "initUpdates", "instance", "prependUpdate", "update", "callUpdate", "runUpdates", "events", "resize", "observe", "mutation", "lazyload", "preload", "el2", "isIntersecting", "handler", "scroll$1", "toScrollTargets", "swipe", "e2", "swipeDirection", "observe2", "emit", "Margin", "$el", "getRows", "rows", "row", "sorted", "withOffset", "getOffset", "offsetCurrent", "j", "offsetCurrent2", "offsetWidth", "slide", "action", "awaitFrame", "currentProps", "getProps$1", "targetProps", "targetStyle", "targetPropsTo", "propsTo", "propsFrom", "getTransitionProps", "attrsTo", "transitions", "resetProps", "opacity", "getPositionWithMargin", "from", "clsLeave", "clsEnter", "fade", "stagger", "transitionIndex", "propsIn", "propsOut", "wrapIndexFn", "leaveFn", "getTransitionNodes", "enterFn", "oldHeight", "newHeight", "transitionNodes", "awaitTimeout", "waitTransitionend", "next", "timeout", "Animate", "keyMap", "filter", "attrItem", "toggles", "actives", "toggle", "button", "findButton", "list", "prevState", "newState", "mergeState", "isEqualState", "state", "animate", "matchFilter", "filterFn", "applyState", "getFilter", "attr2", "stateA", "stateB", "sort", "order", "sortItems", "group", "stateFilter", "stateSort", "stateOrder", "prevented", "preventBackgroundScroll", "offMove", "clientHeight", "Container", "Togglable", "transition", "show", "promise", "toggleInstant", "toggleTransition", "toggleAnimation", "done", "toggled", "changed", "_toggle", "velocity", "mode", "startProp", "dimProp", "marginProp", "marginStartProp", "currentDim", "inProgress", "prevProps", "currentMargin", "marginStart", "endDim", "wrapper", "endProps", "cmp", "active$1", "Modal", "selPanel", "bgClose", "selClose", "defaultPrevented", "modal", "handlers", "preventBackgroundFocus", "listenForBackgroundClose$1", "listenForEscClose$1", "animate$1", "transitionElement", "toMs", "time", "newTarget", "Animations$2", "translate", "translated", "scale3d", "Transitioner$1", "easing", "withResolvers", "percent2", "linear", "triggerUpdate", "props2", "I18n", "params", "_c", "SliderAutoplay", "autoplay", "pointerOptions", "pointerUpOptions", "pointerDown", "pointerMove", "pointerUp", "preventClick", "SliderDrag", "selList", "hasSelectableText", "distance", "slides", "prevIndex", "dis", "nextIndex", "getDistance", "edge", "itemShown", "dirChange", "initWatches", "watches", "watch", "registerWatch", "runWatches", "values", "immediate", "initComputed", "computed", "registerComputed", "mutationOptions", "_computed", "$props", "initComputedUpdates", "resetComputed", "initEvents", "registerEvent", "capture", "passive", "initObservers", "registerObservable", "observable", "targets2", "updateTargets", "initProps", "$options", "getProps", "methods", "opts", "data$1", "getAttributes", "attributes", "initPropsObserver", "records", "attributeName", "callHook", "hook", "callConnected", "callDisconnected", "uid", "init$1", "normalizeData", "initData", "initMethods", "data2", "App", "PREFIX", "DATA", "components$2", "component", "createComponent", "opt", "Component", "init", "getComponent", "getComponents", "attachToElement", "detachFromElement", "globalApi", "plugin", "component2", "Super", "Sub", "parentEl", "updateElement", "components", "instanceApi", "removeEl", "generateId", "SliderNav", "selNav", "nav", "items", "ariaLabel", "ariaControls", "selNavItem", "parallax", "keyCode", "active", "easeOutQuad", "easeOutQuart", "Slider", "speedUp", "stack", "queueIndex", "reset", "getDirection", "transitioner", "Slideshow", "Animations2", "Animations$1", "LightboxPanel", "close", "closeLabel", "src", "alt", "poster", "attrs", "iframeAttrs", "img", "createEl", "video", "content", "tag", "lightbox", "install$3", "toItem", "source", "UIkit", "Lightbox", "notification", "install$2", "posClass", "containerAttr", "margin", "removeFn", "Media", "media", "toMedia", "getMaxPathLength", "stroke", "transformFn", "colorFn", "cssPropFn", "strokeFn", "backgroundFn", "keys", "Parallax", "fillObject", "properties", "stops", "css2", "getUnit", "transformFn2", "stop", "parseStops", "getValue", "getCssValue", "parseColor", "getStop", "color", "bgProps", "backgroundCoverFn", "positions", "getBackgroundPos", "setBackgroundPosFn", "dimImage", "getBackgroundImageDimensions", "dimEl", "down", "overflow", "loading", "image", "toDimensions", "nullIndex", "leftPercent", "targetPercent", "unitRe", "defaultUnit", "keys2", "getOffsetElement", "viewport2", "SliderParallax", "parallaxTarget", "slidePercent", "triggerShow", "triggerShown", "triggerHide", "triggerHidden", "useTriggers", "clsSlideActive", "SliderReactive", "SliderPreload", "Transitioner", "center", "getLeft", "to", "getWidth", "itemIn", "itemOut", "isActive", "isIn", "isOut", "translateIn", "getElLeft", "nextActives", "inView", "temp", "centerEl", "getMax", "listLeft", "listWidth", "listRight", "slideLeft", "slideRight", "slider", "isFinite", "lft", "enabled", "sets", "slideWidth", "avgWidth", "slideIndex", "currentIndex", "activeClasses", "focusable", "currentLeft", "scrollDist", "slideDist", "getMaxElWidth", "listHalf", "slidesInView", "nextSlide", "slide2", "sliderParallax", "getCurrentPercent", "Animations", "slideshow", "sortable", "handle", "handles", "placeholder", "findTarget", "previous", "insertTarget", "findInsertTarget", "appendDrag", "trackScroll", "throttle", "untrackScroll", "clsPlaceholder", "clsItem", "sortable2", "trackTimer", "height2", "clone", "sameList", "isHorizontal", "placeholderRect", "sameRow", "linesIntersect", "pointerPos", "lengthProp", "endProp", "single", "isHorizontal2", "rectA", "rectB", "lineA", "lineB", "throttled", "Position", "restoreScrollPosition", "storeScrollPosition", "elDim", "tooltip", "makeFocusable", "delay", "title", "parseProps", "titleAttr", "align", "getAlignment", "upload", "transfer", "files", "file", "match$1", "chunks", "chunk", "files2", "xhr", "ajax", "env", "xhr2", "pattern", "size", "url", "send", "header", "components$1", "boot", "connect", "applyChildListMutation", "applyAttributeMutation", "addedNodes", "removedNodes", "disconnect", "getComponentName", "components2", "Accordion", "isOpen", "hide", "keepScrollPosition", "activeItems", "index2", "hide2", "transition2", "currentHeight", "endHeight", "frame", "alert", "Video", "isPlaying", "videoEl", "cover", "getPositionedParent", "useObjectFit", "intrinsic", "coverHeight", "coverWidth", "coverDim", "drop", "boundaryX", "boundaryY", "targetX", "targetY", "createToggleComponent", "listenForResize", "listenForEscClose", "listenForBackgroundClose", "listenForScroll", "listenForScrollClose", "viewports", "getViewport$1", "maxWidth", "positionOffset", "Dropnav", "dropbarAnchor", "dropbar", "clsDrop", "dropdowns", "active2", "handleNavItemNavigation", "dropContainer", "adjustHeight", "maxBottom", "formCustom", "input", "grid", "parallaxJustify", "masonry", "positionedAbsolute", "gutter", "getGutter", "columns", "translates", "applyMasonry", "transpose", "columnHeights", "column", "scrollColumns", "parallaxStart", "parallaxEnd", "hgt", "padding", "scrolled", "rowHeights", "push", "heightMatch", "elements2", "heights", "getHeight", "heightPlaceholder", "heightViewport", "expand", "minHeight", "box", "offsetTopEl", "closeIcon", "closeLarge", "dropParentIcon", "marker", "navParentIconLarge", "navParentIcon", "navbarParentIcon", "navbarToggleIcon", "overlayIcon", "paginationNext", "paginationPrevious", "searchIcon", "searchLarge", "searchMedium", "slidenavNextLarge", "slidenavNext", "slidenavPreviousLarge", "slidenavPrevious", "spinner", "totop", "Svg", "svg", "insertSVG", "applyWidthAndHeight", "root", "equals", "viewBox", "applyAttributes", "applyAnimation", "parseSVG", "loadSVG", "icon", "parseSymbols", "stringToSvg", "symbolRe", "symbols", "string", "icons", "Icon", "install$1", "getIcon", "IconComponent", "NavParentIcon", "Search", "isToggle", "label", "Spinner", "ButtonComponent", "Slidenav", "NavbarToggleIcon", "Close", "Marker", "Totop", "PaginationNext", "PaginationPrevious", "added", "svg2", "name2", "aliases", "applyRtl", "isImg", "setSrcAttrs", "getImageFromElement", "parentNode", "setSourceProps", "srcProps", "sourceEl", "sources", "wrapInPicture", "parseSources", "picture", "inverse", "findTargetColor", "checkVisibility", "leader", "fill", "install", "dialog", "message", "openDialog", "i18n", "tmpl", "hideFn", "submitFn", "clsNavbarTransparent", "navbar", "justify", "containers", "awaitMacroTask", "offcanvas", "clsFlip", "overlay", "clsOverlay", "clsMode", "clsSidebarAnimation", "clsContainerAnimation", "swiping", "suppressUserScale", "resumeUserScale", "getViewport", "overflowAuto", "selContainer", "selContent", "responsive", "registerClick", "unregisterClick", "instances", "clickHandler", "clsInView", "scrollspy", "inview", "removeAnimationClasses", "scrollspyNav", "closest", "links", "sticky", "selTarget", "coerce", "getVisibleParent", "height$1", "dynamicViewport", "maxScrollHeight", "preventTransition", "referenceElement", "offset$1", "topOffset", "parseProp", "prevScroll", "prevDir", "overflowScroll", "scroll2", "isScrollUpdate", "initTimestamp", "below", "now", "offsetParentTop", "propOffset", "refElement", "clsTransitionDisable", "selDisabled", "Switcher", "connects", "connectChildren", "isVertical", "itemNav", "tab", "KEY_SPACE", "expanded", "m", "link", "mediaObj", "leaving", "isLeaving", "require_deep_diff", "__commonJSMin", "exports", "module", "root", "factory", "deepDiff", "_deepdiff", "validKinds", "inherits", "ctor", "superCtor", "Diff", "kind", "path", "DiffEdit", "origin", "value", "DiffNew", "DiffDeleted", "DiffArray", "index", "item", "arrayRemove", "arr", "from", "to", "rest", "realTypeOf", "subject", "type", "hashThisString", "string", "hash", "i", "char", "getOrderIndependentHash", "object", "accum", "arrayString", "key", "keyValueString", "stringToHash", "lhs", "rhs", "changes", "prefilter", "stack", "orderIndependent", "currentPath", "alt", "ltype", "rtype", "j", "k", "other", "ldefined", "rdefined", "a", "b", "akeys", "pkeys", "observableDiff", "observer", "orderIndependentDeepDiff", "accumulateDiff", "difference", "accumulateOrderIndependentDiff", "applyArrayChange", "change", "it", "u", "applyChange", "target", "source", "last", "revertArrayChange", "revertChange", "applyDiff", "filter", "onChange", "ok", "notOk", "undef", "NOT_TYPED_FUNCTION", "create", "isPlainObject", "x", "_types", "anyType", "typeMap", "typeList", "nConversions", "typed", "findType", "typeName", "type", "message", "name", "otherName", "addTypes", "types", "beforeSpec", "beforeIndex", "newTypes", "i", "affectedTypes", "clear", "clearConversions", "findTypeNames", "value", "matches", "isTypedFunction", "entity", "findSignature", "fn", "signature", "options", "exact", "stringSignature", "params", "parseSignature", "canonicalSignature", "stringifyParams", "match", "nParams", "remainingSignatures", "want", "filteredSignatures", "possibility", "have", "getParamAtIndex", "haveTypes", "paramTypeSet", "wtype", "candidate", "find", "convert", "conversions", "separator", "p", "parseParam", "param", "restParam", "typeDefs", "s", "hasAny", "paramName", "expandParam", "typeNames", "t", "matchingConversions", "availableConversions", "newName", "convertibleTypes", "conversion", "rawSignature", "rawParams", "parsedParam", "hasRestParam", "last", "compileTest", "test0", "test1", "tests", "compileTests", "initial", "varIndex", "lastTest", "testRestParam", "args", "index", "getTypeSetAtIndex", "isExactType", "mergeExpectedParams", "signatures", "typeSet", "paramSet", "createError", "err", "expected", "_name", "matchingSignatures", "nextMatchingDefs", "test", "actualTypes", "lengths", "maxLength", "argTypes", "getLowestTypeIndex", "min", "getLowestConversionIndex", "compareParams", "param1", "param2", "typeDiff", "convDiff", "compareSignatures", "signature1", "signature2", "pars1", "pars2", "last1", "last2", "hasRest1", "hasRest2", "any1", "conv1", "par", "any2", "conv2", "lengthCriterion", "comparisons", "tc", "thisComparison", "c", "t1", "t2", "knownTypes", "newMatch", "compileArgsPreprocessing", "fnConvert", "compiledConversions", "compileArgConversion", "fnPreprocess", "offset", "slice", "conversion0", "conversion1", "arg", "splitParams", "_splitParams", "paramsSoFar", "resultingParams", "exactTypes", "flatMap", "nextParam", "conflicting", "params1", "params2", "ii", "typeSet1", "typeSet2", "overlap", "len1", "len2", "restParam1", "restParam2", "clearResolutions", "functionList", "isReferToSelf", "referToSelf", "isReferTo", "makeReferTo", "collectResolutions", "references", "signatureMap", "resolvedReferences", "reference", "resolution", "resolveReferences", "self", "resolvedFunctions", "isResolved", "leftUnresolved", "nothingResolved", "validateDeprecatedThis", "signaturesMap", "deprecatedThisRegex", "createTypedFunction", "rawSignaturesMap", "parsedParams", "originalFunctions", "preliminarySignatures", "pp", "functionIndex", "conversionParams", "sp", "spName", "theTypedFn", "internalSignatureMap", "ok0", "ok1", "ok2", "ok3", "ok4", "ok5", "allOk", "test00", "test10", "test20", "test30", "test40", "test50", "test01", "test11", "test21", "test31", "test41", "test51", "fn0", "fn1", "fn2", "fn3", "fn4", "fn5", "len0", "len3", "len4", "len5", "iStart", "iEnd", "fns", "generic", "arg0", "arg1", "_onMismatch", "arr", "start", "end", "findInArray", "callback", "referTo", "objectOrFn", "checkName", "nameSoFar", "getObjectName", "obj", "key", "mergeSignatures", "dest", "source", "saveTyped", "maybeName", "named", "allSignatures", "item", "theseSignatures", "thisName", "beforeObjectTest", "before", "_validateConversion", "to", "existing", "other", "existingConversion", "tf", "argList", "sigs", "typedFunction", "require_naturalSort", "__commonJSMin", "exports", "module", "naturalSort", "a", "b", "re", "sre", "dre", "hre", "ore", "i", "s", "x", "y", "xN", "yN", "xD", "yD", "oFxNcL", "oFyNcL", "cLoc", "numS", "require_dist", "__commonJSMin", "exports", "module", "_extends", "target", "i", "source", "key", "defaultEscapes", "formatEscapes", "defaultEscapeMapFn", "str", "_ref", "_ref$preserveFormatti", "preserveFormatting", "_ref$escapeMapFn", "escapeMapFn", "runningStr", "result", "escapes", "escapeKeys", "_loop", "specialCharFound", "index", "require_alea", "__commonJSMin", "exports", "module", "global", "define", "Alea", "seed", "me", "mash", "Mash", "t", "copy", "f", "impl", "opts", "xg", "state", "prng", "n", "data", "i", "h", "require_xor128", "__commonJSMin", "exports", "module", "global", "define", "XorGen", "seed", "me", "strseed", "t", "k", "copy", "f", "impl", "opts", "xg", "state", "prng", "top", "bot", "result", "require_xorwow", "__commonJSMin", "exports", "module", "global", "define", "XorGen", "seed", "me", "strseed", "t", "k", "copy", "f", "impl", "opts", "xg", "state", "prng", "top", "bot", "result", "require_xorshift7", "__commonJSMin", "exports", "module", "global", "define", "XorGen", "seed", "me", "X", "i", "t", "v", "w", "init", "j", "copy", "f", "impl", "opts", "xg", "state", "prng", "top", "bot", "result", "require_xor4096", "__commonJSMin", "exports", "module", "global", "define", "XorGen", "seed", "me", "w", "X", "i", "t", "v", "init", "j", "limit", "copy", "f", "impl", "opts", "xg", "state", "prng", "top", "bot", "result", "require_tychei", "__commonJSMin", "exports", "module", "global", "define", "XorGen", "seed", "me", "strseed", "b", "c", "d", "a", "k", "copy", "f", "t", "impl", "opts", "xg", "state", "prng", "top", "bot", "result", "require_seedrandom", "__commonJSMin", "exports", "module", "global", "pool", "math", "width", "chunks", "digits", "rngname", "startdenom", "significance", "overflow", "mask", "nodecrypto", "seedrandom", "seed", "options", "callback", "key", "shortseed", "mixkey", "flatten", "tostring", "autoseed", "arc4", "ARC4", "prng", "n", "d", "x", "is_math_call", "state", "copy", "t", "keylen", "me", "i", "j", "s", "count", "r", "f", "obj", "depth", "result", "typ", "prop", "stringseed", "smear", "out", "browser", "plugins", "a", "require_seedrandom", "__commonJSMin", "exports", "module", "alea", "xor128", "xorwow", "xorshift7", "xor4096", "tychei", "sr", "require_tiny_emitter", "__commonJSMin", "exports", "module", "E", "name", "callback", "ctx", "e", "self", "listener", "data", "evtArr", "i", "len", "evts", "liveEvents", "require_jstat", "__commonJSMin", "exports", "module", "window", "factory", "jStat", "Math", "undefined", "concat", "slice", "toString", "calcRdx", "n", "m", "val", "isArray", "arg", "isFunction", "isNumber", "num", "toVector", "arr", "args", "i", "fn", "obj", "j", "index", "submat", "ind", "column", "a", "nrow", "res", "row", "objArr", "rows", "cols", "func", "toAlter", "ncol", "col", "retZero", "retOne", "retIdent", "size", "min", "max", "length", "hival", "step", "current", "cnt", "start", "end", "rl", "_slice", "list", "rcSlice", "colSlice", "rowSlice", "A", "B", "nl", "ml", "diagArray", "mat", "t", "jProto", "funcs", "passfunc", "self", "results", "ascNum", "b", "clip", "sum", "mean", "tmp", "prod", "low", "high", "hash", "_arr", "logs", "meanOfLogs", "arrlen", "diffs", "arrLen", "distinctNumbers", "numberCounts", "number", "sortedDistinctNumbers", "numberRanks", "currentRank", "count", "first", "last", "rank", "maxCount", "numMaxCount", "mode_arr", "flag", "sumsqerr", "samples", "dev", "median", "quantilesArray", "alphap", "betap", "sortedArray", "quantileVals", "p", "aleph", "k", "gamma", "exclusive", "realIndex", "frac", "score", "kind", "counter", "len", "strict", "value", "binCnt", "binWidth", "bins", "arr1", "arr2", "u", "v", "arr1Len", "sq_dev", "mu", "sigma", "skewSum", "fullbool", "tmpthis", "callbackFunction", "argsToPass", "curriedFunction", "vector", "x", "cof", "ser", "xx", "y", "x0", "x2", "xp", "gl", "gl0", "q", "fact", "xden", "xnum", "z", "yi", "aln", "ap", "del", "c", "d", "h", "ITMAX", "an", "fpmin", "qab", "qap", "qam", "m2", "aa", "a1", "EPS", "gln", "err", "pp", "lna1", "afac", "isneg", "dd", "ty", "b1", "lna", "lnb", "al", "w", "bt", "shape", "oalph", "a2", "newthis", "vals", "fnfunc", "alpha", "beta", "df1", "df2", "f", "x1", "local", "scale", "dof", "rate", "ncp", "tol", "min_iterations", "flip", "prob", "lastvalue", "std", "dof2", "betinc", "eps", "a0", "b0", "m9", "c9", "betacdf", "s", "r", "N", "scaledPDF", "samplesDone", "scaledCDF", "factor", "l", "sumarr", "L", "lam", "U", "V", "slam", "loglam", "invalpha", "vr", "us", "laplaceSign", "tukeyWprob", "rr", "cc", "nleg", "ihalf", "C1", "C2", "C3", "bb", "wlar", "wincr1", "wincr2", "xleg", "aleg", "qsqz", "pr_w", "wincr", "blb", "binc", "bub", "einsum", "cc1", "wi", "elsum", "jj", "ac", "qexpo", "pplus", "pminus", "rinsum", "tukeyQinv", "p0", "q0", "p1", "q1", "p2", "q2", "p3", "q3", "p4", "q4", "c1", "c2", "c3", "c4", "c5", "vmax", "ps", "nmeans", "df", "nlegq", "ihalfq", "eps1", "eps2", "dhaf", "dquar", "deigh", "dlarg", "ulen1", "ulen2", "ulen3", "ulen4", "xlegq", "alegq", "f2", "f2lf", "f21", "ff4", "ulen", "ans", "otsum", "twa1", "t1", "wprb", "rotsum", "maxiter", "valx0", "valx1", "iter", "xabs", "push", "isUsable", "nrescols", "rescols", "left", "right", "nnorm", "newarr", "result", "det", "determinant", "submatrix", "sign", "maug", "pivot", "temp", "y2", "maxrow", "parts", "matrix_mode", "R", "T", "xv", "xk", "range", "qr2", "R_I", "I", "Aj", "cAi", "Ij", "cIi", "qr_solve", "array_mode", "QR", "Q", "attrs", "Q1", "R1", "RI", "Q2", "condition", "e", "ev", "maxim", "theta", "t_j", "u_j", "order", "k1", "k2", "u_j1", "k3", "k4", "h1", "g", "X", "pos", "h_min", "y1", "F", "dF", "dl", "temp1", "D", "temp2", "Y", "Bt", "C", "Vt", "sides", "zscore", "tscore", "expVar", "sample", "sampMean", "sampSampMean", "tmpargs", "unexpVar", "anovafscore", "fscore", "mean1", "mean2", "n1", "n2", "sd", "qscore", "arrays", "means", "change", "pvalue", "differenceOfProportions", "pooled", "se", "sub_regress", "exog", "var_count", "modelList", "endog_index", "exog_index", "ols", "endog", "nobs", "df_model", "df_resid", "coef", "predict", "resid", "ybar", "SSE", "SSR", "SST", "R2", "t_test", "model", "subModelList", "sigmaHat", "seBetaHat", "mod", "tStatistic", "pValue", "leftppf", "interval95", "F_test", "F_statistic", "fcdf", "ols_wrap", "ttest", "ftest", "adjust_R2", "matrixRows", "array", "jMat", "pass", "jMatX", "jMatY", "innerinv", "xtransp", "next", "compile", "jMatYBar", "yAverage", "covar", "sds", "ts", "inner", "yBar", "ssr", "sse", "sst", "require_bessel", "__commonJSMin", "exports", "BESSEL", "factory", "module", "M", "_horner", "arr", "v", "i", "z", "_bessel_iter", "x", "n", "f0", "f1", "sign", "tdx", "f2", "o", "_bessel_wrap", "bessel0", "bessel1", "name", "nonzero", "b0", "b1", "besselj", "W", "b0_a1a", "b0_a2a", "b0_a1b", "b0_a2b", "a", "a1", "a2", "y", "xx", "b1_a1a", "b1_a2a", "b1_a1b", "b1_a2b", "ret", "m", "jsum", "bjp", "sum", "bj", "bjm", "tox", "j", "bessely", "besseli", "b0_a", "b0_b", "b1_a", "b1_b", "bip", "bi", "bim", "besselk", "require_codemirror", "__commonJSMin", "exports", "module", "global", "factory", "userAgent", "platform", "gecko", "ie_upto10", "ie_11up", "edge", "ie", "ie_version", "webkit", "qtwebkit", "chrome", "chrome_version", "presto", "safari", "mac_geMountainLion", "phantom", "ios", "android", "mobile", "mac", "chromeOS", "windows", "presto_version", "flipCtrlCmd", "captureRightClick", "classTest", "cls", "rmClass", "node", "current", "match", "after", "removeChildren", "e", "count", "removeChildrenAndAdd", "parent", "elt", "tag", "content", "className", "style", "i", "eltP", "range", "start", "end", "endNode", "r", "contains", "child", "activeElt", "rootNode", "doc", "activeElement", "addClass", "joinClasses", "a", "b", "as", "selectInput", "cm", "root", "element", "win", "bind", "f", "args", "copyObj", "obj", "target", "overwrite", "prop", "countColumn", "string", "tabSize", "startIndex", "startValue", "n", "nextTab", "Delayed", "self", "ms", "time", "indexOf", "array", "scrollerGap", "Pass", "sel_dontScroll", "sel_mouse", "sel_move", "findColumn", "goal", "pos", "col", "skipped", "spaceStrs", "spaceStr", "lst", "arr", "map", "out", "insertSorted", "value", "score", "priority", "nothing", "createObj", "base", "props", "inst", "nonASCIISingleCaseWordChar", "isWordCharBasic", "ch", "isWordChar", "helper", "isEmpty", "extendingChars", "isExtendingChar", "skipExtendingChars", "str", "dir", "findFirst", "pred", "from", "to", "midF", "mid", "iterateBidiSections", "order", "found", "part", "bidiOther", "getBidiPartAt", "sticky", "cur", "bidiOrdering", "lowTypes", "arabicTypes", "charType", "code", "bidiRE", "isNeutral", "isStrong", "countsAsLeft", "countsAsNum", "BidiSpan", "level", "direction", "outerType", "len", "types", "i$1", "prev", "type", "i$2", "type$1", "i$3", "prev$1", "type$2", "i$4", "type$3", "replace", "j", "i$5", "cur$1", "type$4", "i$6", "end$1", "before", "replace$1", "j$1", "m", "i$7", "at", "isRTL", "j$2", "nstart", "getOrder", "line", "noHandlers", "on", "emitter", "getHandlers", "off", "index", "signal", "handlers", "signalDOMEvent", "override", "e_defaultPrevented", "signalCursorActivity", "set", "hasHandler", "eventMixin", "ctor", "e_preventDefault", "e_stopPropagation", "e_stop", "e_target", "e_button", "dragAndDrop", "div", "zwspSupported", "zeroWidthElement", "measure", "test", "badBidiRects", "hasBadBidiRects", "txt", "r0", "r1", "splitLinesAuto", "result", "l", "nl", "rt", "hasSelection", "te", "hasCopyEvent", "badZoomedRects", "hasBadZoomedRects", "normal", "fromRange", "modes", "mimeModes", "defineMode", "name", "mode", "defineMIME", "mime", "spec", "resolveMode", "getMode", "options", "mfactory", "modeObj", "modeExtensions", "exts", "prop$1", "extendMode", "properties", "copyState", "state", "nstate", "val", "innerMode", "info", "startState", "a1", "a2", "StringStream", "lineOracle", "ok", "pattern", "consume", "caseInsensitive", "cased", "substr", "inner", "oracle", "getLine", "chunk", "sz", "getBetween", "text", "getLines", "updateLineHeight", "height", "diff", "lineNo", "no", "lineAtHeight", "h", "outer", "lh", "isLine", "lineNumberFor", "Pos", "cmp", "equalCursorPos", "copyPos", "x", "maxPos", "minPos", "clipLine", "clipPos", "last", "clipToLen", "linelen", "clipPosArray", "SavedContext", "lookAhead", "Context", "saved", "copy", "highlightLine", "context", "forceToEnd", "st", "lineClasses", "runMode", "loop", "o", "overlay", "i_end", "getLineStyles", "updateFrontier", "getContextBefore", "resetState", "precise", "display", "findStartLine", "processLine", "startAt", "stream", "callBlankLine", "readToken", "Token", "takeToken", "asArray", "tokens", "extractLineClasses", "output", "lineClass", "flattenSpans", "curStart", "curStyle", "mName", "minindent", "minline", "lim", "search", "indented", "retreatFrontier", "sawReadOnlySpans", "sawCollapsedSpans", "seeReadOnlySpans", "seeCollapsedSpans", "MarkedSpan", "marker", "getMarkedSpanFor", "spans", "span", "removeMarkedSpan", "addMarkedSpan", "op", "inThisOp", "markedSpansBefore", "old", "startCh", "isInsert", "nw", "startsBefore", "endsAfter", "markedSpansAfter", "endCh", "stretchSpansOverChange", "change", "oldFirst", "oldLast", "first", "sameLine", "offset", "span$1", "found$1", "clearEmptySpans", "newMarkers", "gap", "gapMarkers", "removeReadOnlyRanges", "markers", "mark", "parts", "mk", "p", "newParts", "dfrom", "dto", "detachMarkedSpans", "attachMarkedSpans", "extraLeft", "extraRight", "compareCollapsedMarkers", "lenDiff", "aPos", "bPos", "fromCmp", "toCmp", "collapsedSpanAtSide", "sps", "sp", "collapsedSpanAtStart", "collapsedSpanAtEnd", "collapsedSpanAround", "conflictingCollapsedRange", "visualLine", "merged", "visualLineEnd", "visualLineContinued", "lines", "visualLineNo", "lineN", "vis", "visualLineEndNo", "lineIsHidden", "lineIsHiddenInner", "heightAtLine", "lineObj", "lineLength", "findMaxLine", "Line", "markedSpans", "estimateHeight", "updateLine", "estHeight", "cleanUpLine", "styleToClassCache", "styleToClassCacheWithMode", "interpretTokenStyle", "cache", "buildLineContent", "lineView", "builder", "buildToken", "buildTokenBadBidi", "allowFrontierUpdate", "insertLineContent", "defaultSpecialCharPlaceholder", "token", "startStyle", "endStyle", "css", "attributes", "displayText", "splitSpaces", "special", "mustWrap", "txt$1", "tabWidth", "fullStyle", "attr", "trailingBefore", "spaceBefore", "buildCollapsedSpan", "size", "ignoreWidget", "widget", "styles", "allText", "nextChange", "spanStyle", "spanEndStyle", "spanStartStyle", "collapsed", "foundBookmarks", "endStyles", "upto", "tokenText", "LineView", "buildViewArray", "nextPos", "view", "operationGroup", "pushOperation", "fireCallbacksForOps", "group", "callbacks", "finishOperation", "endCb", "orphanDelayedCallbacks", "signalLater", "list", "fireOrphanDelayed", "delayed", "updateLineForChanges", "dims", "updateLineText", "updateLineGutter", "updateLineClasses", "updateLineWidgets", "ensureLineWrapped", "updateLineBackground", "wrap", "getLineContent", "ext", "built", "textClass", "wrap$1", "gutterWrap", "k", "id", "isWidget", "next", "insertLineWidgets", "buildLineElement", "insertLineWidgetsFor", "allowAbove", "ws", "positionLineWidget", "width", "widgetHeight", "parentStyle", "eventInWidget", "paddingTop", "paddingVert", "paddingH", "data", "scrollGap", "displayWidth", "displayHeight", "ensureLineHeights", "rect", "wrapping", "curWidth", "heights", "rects", "mapFromLineView", "updateExternalMeasurement", "measureChar", "bias", "measureCharPrepared", "prepareMeasureForLine", "findViewForLine", "findViewIndex", "getDimensions", "prepared", "varHeight", "key", "measureCharInner", "nullRect", "nodeAndOffsetInLineMap", "collapse", "mStart", "mEnd", "getUsefulRect", "place", "maybeUpdateRectForZooming", "rSpan", "charWidth", "rtop", "rbot", "top", "bot", "scaleX", "scaleY", "clearLineMeasurementCacheFor", "clearLineMeasurementCache", "clearCaches", "pageScrollX", "pageScrollY", "widgetTopHeight", "ref", "widgets", "intoCoordSystem", "includeWidgets", "yOff", "lOff", "xOff", "fromCoordSystem", "coords", "left", "localBox", "lineSpaceBox", "charCoords", "cursorCoords", "preparedMeasure", "get", "right", "getBidi", "partPos", "invert", "other", "estimateCoords", "PosWithInfo", "outside", "xRel", "coordsChar", "y", "coordsCharInner", "rangeEnd", "wrappedLineExtent", "begin", "wrappedLineExtentChar", "targetTop", "boxIsAfter", "box", "ltr", "coordsBidiPartWrapped", "coordsBidiPart", "chAround", "boxAround", "baseX", "atLeft", "atStart", "_lineNo", "closestDist", "endX", "dist", "measureText", "textHeight", "anchor", "pre", "gutterLeft", "compensateForHScroll", "th", "perLine", "widgetsHeight", "estimateLineHeights", "est", "posFromMouse", "liberal", "forRect", "space", "colDiff", "regChange", "lendiff", "resetView", "cut", "viewCuttingPoint", "cut$1", "cutTop", "cutBot", "regLineChange", "oldN", "newN", "adjustView", "countDirtyView", "dirty", "updateSelection", "prepareSelection", "primary", "curFragment", "selFragment", "customCursor", "head", "drawSelectionCursor", "drawSelectionRange", "cursor", "charPos", "otherCursor", "cmpCoords", "fragment", "padding", "leftSide", "rightSide", "docLTR", "add", "bottom", "drawForLine", "fromArg", "toArg", "lineLen", "wrapX", "side", "extent", "fromPos", "toPos", "openStart", "openEnd", "openLeft", "openRight", "topLeft", "topRight", "botLeft", "botRight", "sFrom", "sTo", "fromLine", "toLine", "singleVLine", "leftEnd", "rightStart", "restartBlink", "onBlur", "ensureFocus", "onFocus", "delayBlurEvent", "updateHeightsInViewport", "prevBottom", "viewTop", "oldHeight", "mustScroll", "updateWidgetHeight", "chWidth", "w", "visibleLines", "viewport", "ensureFrom", "ensureTo", "maybeScrollWindow", "doScroll", "scrollNode", "scrollPosIntoView", "margin", "limit", "changed", "endCoords", "scrollPos", "calculateScrollPos", "startTop", "startLeft", "updateScrollTop", "setScrollLeft", "scrollIntoView", "snapMargin", "screentop", "screen", "docBottom", "atTop", "atBottom", "newTop", "gutterSpace", "screenleft", "screenw", "tooWide", "addToScrollTop", "resolveScrollToPos", "ensureCursorVisible", "scrollToCoords", "scrollToRange", "scrollToCoordsRange", "sPos", "updateDisplaySimple", "setScrollTop", "startWorker", "forceScroll", "isScroller", "alignHorizontally", "measureForScrollbars", "gutterW", "docH", "NativeScrollbars", "scroll", "vert", "horiz", "needsH", "needsV", "sWidth", "totalHeight", "totalWidth", "bar", "delay", "maybeDisable", "NullScrollbars", "updateScrollbars", "startWidth", "startHeight", "updateScrollbarsInner", "d", "sizes", "scrollbarModel", "initScrollbars", "axis", "nextOpId", "startOperation", "endOperation", "endOperations", "ops", "endOperation_R1", "endOperation_W1", "endOperation_R2", "endOperation_W2", "endOperation_finish", "maybeClipScrollbars", "DisplayUpdate", "updateDisplayIfNeeded", "takeFocus", "setDocumentHeight", "postUpdateDisplay", "hidden", "unhidden", "runInOp", "operation", "methodOp", "docMethodOp", "highlightWorker", "changedLines", "oldStyles", "highlighted", "oldCls", "newCls", "ischange", "force", "selectionSnapshot", "active", "sel", "restoreSelection", "snapshot", "update", "maybeUpdateLineNumberWidth", "different", "toUpdate", "selSnapshot", "patchDisplay", "barMeasure", "updateNumbersFrom", "lineNumbers", "container", "rm", "updateNumber", "updateGutterSpace", "comp", "align", "innerW", "getGutters", "gutters", "sawLineNumbers", "renderGutters", "specs", "gElt", "updateGutters", "Display", "input", "wheelSamples", "wheelPixelsPerUnit", "wheelEventDelta", "dx", "dy", "wheelEventPixels", "delta", "onScrollWheel", "pixelsPerUnit", "canScrollX", "canScrollY", "pixels", "movedX", "movedY", "sample", "Selection", "ranges", "primIndex", "here", "there", "Range", "normalizeSelection", "mayTouch", "prim", "inv", "simpleSelection", "changeEnd", "adjustForChange", "computeSelAfterChange", "offsetPos", "computeReplacedSel", "changes", "hint", "oldPrev", "newPrev", "loadMode", "resetModeState", "isWholeLineUpdate", "updateDoc", "spansFor", "linesFor", "firstLine", "lastLine", "lastText", "lastSpans", "nlines", "added", "added$1", "added$2", "linkedDocs", "sharedHistOnly", "propagate", "skip", "sharedHist", "rel", "shared", "attachDoc", "setDirectionClass", "directionChanged", "History", "historyChangeFromChange", "histChange", "attachLocalSpans", "clearSelectionEvents", "lastChangeEvent", "hist", "addChangeToHistory", "selAfter", "opId", "pushSelectionToHistory", "selectionEventCanBeMerged", "origin", "addSelectionToHistory", "dest", "existing", "removeClearedSpans", "getOldSpans", "mergeOldSpans", "stretched", "oldCur", "stretchCur", "copyHistoryArray", "events", "newGroup", "instantiateSel", "event", "newChanges", "extendRange", "extend", "posBefore", "extendSelection", "setSelection", "extendSelections", "heads", "newSel", "replaceOneSelection", "setSimpleSelection", "filterSelectionChange", "setSelectionReplaceHistory", "done", "setSelectionNoUndo", "setSelectionInner", "skipAtomicInSelection", "reCheckSelection", "mayClear", "newAnchor", "skipAtomic", "newHead", "skipAtomicInner", "oldPos", "preventCursorLeft", "preventCursorRight", "near", "movePos", "far", "selectAll", "filterChange", "makeChange", "ignoreReadOnly", "split", "makeChangeInner", "makeChangeSingleDoc", "rebased", "rebaseHist", "makeChangeFromHistory", "allowSelectionOnly", "suppress", "source", "antiChanges", "filter", "returned", "shiftDoc", "distance", "shift", "makeChangeSingleDocInEditor", "recomputeMaxLength", "checkWidthStart", "changesHandler", "changeHandler", "replaceRange", "assign", "rebaseHistSelSingle", "rebaseHistArray", "sub", "changeLine", "handle", "changeType", "LeafChunk", "BranchChunk", "children", "remaining", "leaf", "me", "spilled", "sibling", "myIndex", "used", "LineWidget", "opt", "adjustScrollWhenAboveVisible", "this$1", "oldH", "addLineWidget", "aboveVisible", "nextMarkerId", "TextMarker", "withOp", "min", "max", "visual", "dHeight", "markText", "markTextShared", "curLine", "updateMaxLine", "SharedTextMarker", "findSharedMarkers", "copySharedMarkers", "mFrom", "mTo", "subMark", "detachSharedMarkers", "linked", "subMarker", "nextDocId", "Doc", "lineSep", "dup", "undone", "forceSplit", "gen", "histData", "gutterID", "where", "realOpts", "sepSize", "copyHistory", "CodeMirror", "link", "splitIds", "lastDrop", "onDrop", "clearDragCursor", "files", "read", "markAsReadAndPasteIfAllFilesAreRead", "t", "readTextFromFile", "file", "reader", "text$1", "selected", "onDragStart", "img", "onDragOver", "frag", "forEachCodeMirror", "byClass", "editors", "globalsRegistered", "ensureGlobalHandlers", "registerGlobalHandlers", "resizeTimer", "onResize", "keyNames", "keyMap", "normalizeKeyName", "alt", "ctrl", "cmd", "mod", "normalizeKeyMap", "keymap", "keyname", "keys", "lookupKey", "getKeyMap", "isModifierKey", "addModifierNames", "noShift", "keyName", "deleteNearSelection", "compute", "kill", "toKill", "replaced", "moveCharLogically", "moveLogically", "endOfLine", "visually", "moveInStorageOrder", "prep", "moveVisually", "bidi", "mv", "getWrappedLineExtent", "searchInVisualLine", "getRes", "res", "nextCh", "commands", "leftPos", "rightPos", "lineStart", "lineStartSmart", "lineEnd", "spaces", "sels", "firstNonWS", "inWS", "doHandleBinding", "bound", "dropShift", "prevShift", "lookupKeyForEditor", "stopSeq", "dispatchKey", "seq", "dispatchKeyInner", "handleKeyBinding", "handleCharBinding", "lastStoppedKey", "onKeyDown", "handled", "showCrossHair", "lineDiv", "up", "onKeyUp", "onKeyPress", "keyCode", "charCode", "DOUBLECLICK_DELAY", "PastClick", "button", "lastClick", "lastDoubleClick", "clickRepeat", "now", "onMouseDown", "clickInGutter", "repeat", "handleMappedButton", "leftButtonDown", "configureMouse", "option", "behavior", "contained", "leftButtonStartDrag", "leftButtonSelect", "moved", "dragEnd", "mouseMove", "dragStart", "e2", "rangeForUnit", "unit", "ourRange", "ourIndex", "startSel", "lastPos", "extendTo", "startCol", "posCol", "oldRange", "ranges$1", "bidiSimplify", "editorSize", "counter", "curCount", "visible", "move", "anchorLine", "boundary", "headIndex", "usePart", "gutterEvent", "prevent", "mX", "mY", "lineBox", "g", "gutter", "onContextMenu", "contextMenuInGutter", "themeChanged", "Init", "defaults", "optionHandlers", "defineOptions", "deflt", "notOnInit", "newBreaks", "wrappingChanged", "integer", "dragDropChanged", "wasOn", "funcs", "toggle", "registerEventHandlers", "initHooks", "word", "touchFinished", "prevTouch", "finishTouch", "isMouseLikeTouchEvent", "touch", "farAway", "inp", "indentLine", "how", "aggressive", "curSpace", "curSpaceString", "indentation", "indentString", "pos$1", "lastCopied", "setLastCopied", "newLastCopied", "applyTextInput", "inserted", "deleted", "recent", "paste", "textLines", "multiPaste", "updateInput", "changeEvent", "triggerElectric", "handlePaste", "pasted", "copyableRanges", "lineRange", "disableBrowserMagic", "field", "spellcheck", "autocorrect", "autocapitalize", "hiddenTextarea", "addEditorMethods", "helpers", "maps", "overlays", "newRanges", "help", "vspace", "hspace", "amount", "findPosH", "goalColumn", "findPosV", "goals", "headPos", "startChar", "check", "scroller", "interpret", "phraseText", "phrases", "predicate", "origDir", "lineDir", "findNextLine", "moveOnce", "boundToLine", "astral", "sawType", "pageSize", "moveAmount", "ContentEditableInput", "belongsToInput", "onCopyCut", "kludge", "hadFocus", "label", "curAnchor", "domToPos", "curFocus", "posToDOM", "rng", "poll", "isInGutter", "fromIndex", "fromNode", "toIndex", "toNode", "newText", "domTextBetween", "oldText", "cutFront", "cutEnd", "oldTop", "maxCutFront", "newBot", "oldBot", "maxCutEnd", "chFrom", "chTo", "scan", "badPos", "bad", "closing", "extraLinebreak", "recognizeMarker", "close", "addText", "walk", "cmText", "markerID", "isBlock", "lineNode", "locateNodeInLineView", "wrapper", "textNode", "topNode", "find", "curNode", "dist$1", "TextareaInput", "prepareCopyCut", "_display", "opts", "wrapOff", "lineOff", "drawn", "typing", "missed", "prevInput", "same", "reset", "oldCSS", "oldWrapperCSS", "wrapperBox", "oldScrollY", "rehide", "prepareSelectAllHack", "extval", "mouseup", "fromTextArea", "textarea", "hasFocus", "save", "realSubmit", "form", "wrappedSubmit", "addLegacyProps", "dontDelegate", "method", "func", "require_javascript", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "config", "parserConfig", "indentUnit", "statementIndent", "jsonldMode", "jsonMode", "trackScope", "isTS", "wordRE", "keywords", "kw", "type", "A", "B", "C", "D", "operator", "atom", "isOperatorChar", "isJsonldKeyword", "readRegexp", "stream", "escaped", "next", "inSet", "content", "ret", "tp", "style", "cont", "tokenBase", "state", "ch", "tokenString", "tokenComment", "expressionAllowed", "tokenQuasi", "word", "quote", "maybeEnd", "brackets", "findFatArrow", "arrow", "m", "depth", "sawSomething", "pos", "bracket", "atomicTypes", "JSLexical", "indented", "column", "align", "prev", "info", "inScope", "varname", "v", "cx", "parseJS", "cc", "combinator", "expression", "statement", "pass", "i", "inList", "name", "list", "register", "newContext", "registerVarScoped", "Var", "context", "inner", "Context", "isModifier", "vars", "block", "defaultVars", "pushcontext", "pushblockcontext", "popcontext", "pushlex", "result", "indent", "outer", "poplex", "expect", "wanted", "exp", "value", "vardef", "parenExpr", "maybeexpression", "maybeelse", "functiondef", "forspec", "className", "enumdef", "typename", "typeexpr", "pattern", "maybelabel", "maybeCatchBinding", "afterExport", "afterImport", "funarg", "expressionInner", "expressionNoComma", "noComma", "body", "arrowBodyNoComma", "arrowBody", "commasep", "maybeop", "maybeoperatorNoComma", "maybeoperatorComma", "classExpression", "arrayLiteral", "contCommasep", "objprop", "quasi", "maybeTarget", "me", "expr", "property", "continueQuasi", "targetNoComma", "target", "maybeTypeArgs", "_", "getterSetter", "afterprop", "maybetype", "what", "end", "sep", "proceed", "lex", "maybetypeOrIn", "mayberettype", "isKW", "afterType", "typeprops", "typearg", "maybeReturnType", "quasiType", "typeprop", "functiondecl", "continueQuasiType", "typeparam", "maybeTypeDefault", "maybeAssign", "vardefCont", "eltpattern", "proppattern", "_type", "forspec1", "forspec2", "classNameAfter", "classBody", "classfield", "isInterface", "maybeFrom", "exportField", "importSpec", "maybeMoreImports", "maybeAs", "enummember", "isContinuedStatement", "textAfter", "backUp", "basecolumn", "firstChar", "lexical", "top", "c", "closing", "require_dialog", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "dialogDiv", "cm", "template", "bottom", "wrap", "dialog", "closeNotification", "newVal", "callback", "options", "closed", "me", "close", "inp", "button", "e", "evt", "callbacks", "buttons", "blurring", "i", "b", "doneTimer", "duration", "require_placeholder", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "cm", "val", "old", "prev", "onBlur", "onChange", "onComposition", "clearPlaceholder", "wrapper", "setPlaceholder", "elt", "placeHolder", "empty", "input", "isEmpty", "require_closebrackets", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "defaults", "Pos", "cm", "val", "old", "keyMap", "ensureBound", "getOption", "conf", "name", "handleBackspace", "handleEnter", "chars", "i", "ch", "key", "handler", "handleChar", "getConfig", "deflt", "mode", "pairs", "ranges", "around", "charsAround", "cur", "explode", "linesep", "moveSel", "line", "dir", "newRanges", "primary", "range", "pos", "contractSelection", "sel", "inverted", "closeBefore", "triples", "identical", "opening", "type", "curType", "next", "stringStartsAfter", "prev", "left", "right", "sels", "str", "token", "require_matchbrackets", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "ie_lt8", "Pos", "matching", "bracketRegex", "config", "findMatchingBracket", "cm", "where", "line", "pos", "afterCursor", "re", "match", "dir", "style", "found", "scanForBracket", "maxScanLen", "maxScanLines", "stack", "lineEnd", "lineNo", "end", "ch", "matchBrackets", "autoclear", "maxHighlightLen", "highlightNonMatching", "marks", "ranges", "i", "clear", "doMatchBrackets", "clearHighlighted", "val", "old", "oldConfig", "require_show_hint", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "HINT_ELEMENT_CLASS", "ACTIVE_HINT_ELEMENT_CLASS", "cm", "getHints", "options", "newOpts", "prop", "parseOptions", "selections", "i", "completion", "Completion", "self", "requestAnimationFrame", "fn", "cancelAnimationFrame", "data", "getText", "identStart", "pos", "line", "first", "myTick", "fetchHints", "picked", "Widget", "editor", "out", "defaultOptions", "buildKeyMap", "handle", "baseMap", "mac", "custom", "ourMap", "addBinding", "key", "val", "bound", "extra", "getHintElement", "hintsElement", "el", "widget", "ownerDocument", "parentWindow", "hints", "theme", "completions", "elt", "cur", "className", "container", "left", "top", "below", "offsetLeft", "offsetTop", "isContainerPositioned", "offsetParent", "offsetParentPosition", "bodyPosition", "winW", "winH", "box", "scrolls", "startScroll", "overlapY", "height", "spaceAbove", "overlapX", "node", "n", "avoidWrap", "closingOnBlur", "curScroll", "newTop", "point", "e", "t", "selectedHintRange", "input", "node1", "node2", "firstNode", "margin", "applicableHelpers", "helpers", "result", "hint", "callback", "resolveAutoHints", "words", "resolved", "app", "run", "token", "term", "from", "to", "found", "word", "require_jump_to_line", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "dialog", "cm", "text", "shortText", "deflt", "f", "getJumpDialog", "interpretLine", "string", "num", "cur", "posStr", "match", "line", "require_searchcursor", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "Pos", "regexpFlags", "regexp", "flags", "ensureFlags", "current", "target", "i", "maybeMultiline", "searchRegexpForward", "doc", "start", "line", "ch", "last", "string", "match", "searchRegexpForwardMultiline", "chunk", "curLine", "before", "inside", "startLine", "startCh", "lastMatchIn", "endMargin", "from", "newMatch", "end", "searchRegexpBackward", "first", "searchRegexpBackwardMultiline", "chunkSize", "doFold", "noFold", "str", "adjustPos", "orig", "folded", "pos", "foldFunc", "min", "max", "mid", "len", "searchStringForward", "query", "caseFold", "fold", "lines", "search", "found", "cutFrom", "endString", "lastLine", "searchStringBackward", "top", "topString", "SearchCursor", "options", "reverse", "head", "result", "newText", "origin", "ranges", "cur", "require_search", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "searchOverlay", "query", "caseInsensitive", "stream", "match", "SearchState", "getSearchState", "cm", "queryCaseInsensitive", "getSearchCursor", "pos", "persistentDialog", "text", "deflt", "onEnter", "onKeyDown", "clearSearch", "dialog", "shortText", "f", "confirmDialog", "fs", "parseString", "string", "ch", "parseQuery", "isRE", "startSearch", "state", "doSearch", "rev", "persistent", "immediate", "findNext", "q", "hiding", "searchNext", "event", "_", "to", "getQueryDialog", "keyName", "extra", "cmd", "callback", "cursor", "el", "tag", "attrs", "element", "key", "i", "child", "label", "getReplaceQueryDialog", "getReplacementQueryDialog", "getDoReplaceConfirm", "replaceAll", "replace", "all", "dialogText", "fragment", "advance", "start", "doReplace", "require_polyfills", "__commonJSMin", "doc", "proto", "method", "native", "selectors", "id", "result", "constant_default", "x", "init_constant", "__esmMin", "acos", "x", "pi", "asin", "halfPi", "abs", "atan2", "cos", "max", "min", "sin", "sqrt", "epsilon", "tau", "init_math", "__esmMin", "append", "strings", "i", "n", "appendRound", "digits", "d", "k", "path", "Path", "pi", "tau", "epsilon", "tauEpsilon", "init_path", "__esmMin", "x", "y", "x1", "y1", "x2", "y2", "r", "x0", "y0", "x21", "y21", "x01", "y01", "l01_2", "x20", "y20", "l21_2", "l20_2", "l21", "l01", "l", "t01", "t21", "a0", "a1", "ccw", "dx", "dy", "cw", "da", "w", "h", "init_src", "__esmMin", "init_path", "withPath", "shape", "digits", "_", "d", "Path", "init_path", "__esmMin", "init_src", "arcInnerRadius", "d", "arcOuterRadius", "arcStartAngle", "arcEndAngle", "arcPadAngle", "intersect", "x0", "y0", "x1", "y1", "x2", "y2", "x3", "y3", "x10", "y10", "x32", "y32", "t", "epsilon", "cornerTangents", "r1", "rc", "cw", "x01", "y01", "lo", "sqrt", "ox", "oy", "x11", "y11", "x00", "y00", "dx", "dy", "d2", "r", "D", "max", "cx0", "cy0", "cx1", "cy1", "dx0", "dy0", "dx1", "dy1", "arc_default", "innerRadius", "outerRadius", "cornerRadius", "constant_default", "padRadius", "startAngle", "endAngle", "padAngle", "context", "path", "withPath", "arc", "buffer", "r0", "a0", "halfPi", "a1", "da", "abs", "tau", "cos", "sin", "a01", "a11", "a00", "a10", "da0", "da1", "ap", "rp", "min", "rc0", "rc1", "t0", "t1", "p0", "asin", "p1", "oc", "pi", "ax", "ay", "bx", "by", "kc", "acos", "lc", "atan2", "a", "_", "init_arc", "__esmMin", "init_constant", "init_math", "init_path", "array_default", "x", "slice", "init_array", "__esmMin", "Linear", "context", "linear_default", "init_linear", "__esmMin", "x", "y", "x", "p", "y", "init_point", "__esmMin", "line_default", "x", "y", "defined", "constant_default", "context", "curve", "linear_default", "output", "path", "withPath", "line", "data", "i", "n", "array_default", "d", "defined0", "buffer", "_", "init_line", "__esmMin", "init_array", "init_constant", "init_linear", "init_path", "init_point", "area_default", "x0", "y0", "y1", "x1", "defined", "constant_default", "context", "curve", "linear_default", "output", "path", "withPath", "area", "x", "y", "data", "i", "j", "k", "n", "array_default", "d", "defined0", "buffer", "x0z", "y0z", "arealine", "line_default", "_", "init_area", "__esmMin", "init_array", "init_constant", "init_linear", "init_line", "init_path", "init_point", "descending_default", "a", "b", "init_descending", "__esmMin", "identity_default", "d", "init_identity", "__esmMin", "pie_default", "value", "identity_default", "sortValues", "descending_default", "sort", "startAngle", "constant_default", "endAngle", "tau", "padAngle", "pie", "data", "i", "n", "array_default", "j", "k", "sum", "index", "arcs", "a0", "da", "a1", "p", "pa", "v", "_", "init_pie", "__esmMin", "init_array", "init_constant", "init_descending", "init_identity", "init_math", "Radial", "curve", "curveRadial", "radial", "context", "curveRadialLinear", "init_radial", "__esmMin", "init_linear", "linear_default", "a", "r", "lineRadial", "l", "c", "_", "curveRadial", "lineRadial_default", "line_default", "curveRadialLinear", "init_lineRadial", "__esmMin", "init_radial", "init_line", "areaRadial_default", "a", "area_default", "curveRadialLinear", "c", "x0", "x1", "y0", "y1", "lineRadial", "_", "curveRadial", "init_areaRadial", "__esmMin", "init_radial", "init_area", "init_lineRadial", "pointRadial_default", "x", "y", "init_pointRadial", "__esmMin", "bumpX", "context", "Bump", "bumpY", "bumpRadial", "BumpRadial", "init_bump", "__esmMin", "init_pointRadial", "x", "y", "p0", "pointRadial_default", "p1", "p2", "p3", "linkSource", "d", "linkTarget", "link", "curve", "source", "target", "x", "y", "context", "output", "path", "withPath", "buffer", "argv", "slice", "s", "t", "_", "constant_default", "linkHorizontal", "bumpX", "linkVertical", "bumpY", "linkRadial", "l", "bumpRadial", "init_link", "__esmMin", "init_array", "init_constant", "init_bump", "init_path", "init_point", "sqrt3", "asterisk_default", "init_asterisk", "__esmMin", "init_math", "sqrt", "context", "size", "min", "t", "u", "circle_default", "init_circle", "__esmMin", "init_math", "context", "size", "sqrt", "pi", "tau", "cross_default", "init_cross", "__esmMin", "init_math", "context", "size", "sqrt", "tan30", "tan30_2", "diamond_default", "init_diamond", "__esmMin", "init_math", "sqrt", "context", "size", "y", "x", "diamond2_default", "init_diamond2", "__esmMin", "init_math", "context", "size", "sqrt", "plus_default", "init_plus", "__esmMin", "init_math", "context", "size", "sqrt", "min", "square_default", "init_square", "__esmMin", "init_math", "context", "size", "w", "sqrt", "x", "square2_default", "init_square2", "__esmMin", "init_math", "context", "size", "sqrt", "ka", "kr", "kx", "ky", "star_default", "init_star", "__esmMin", "init_math", "sin", "pi", "tau", "cos", "context", "size", "sqrt", "x", "y", "i", "a", "c", "s", "sqrt3", "triangle_default", "init_triangle", "__esmMin", "init_math", "sqrt", "context", "size", "y", "sqrt3", "triangle2_default", "init_triangle2", "__esmMin", "init_math", "sqrt", "context", "size", "s", "t", "u", "c", "s", "k", "a", "wye_default", "init_wye", "__esmMin", "init_math", "sqrt", "context", "size", "x0", "y0", "x1", "y1", "x2", "y2", "times_default", "init_times", "__esmMin", "init_math", "context", "size", "sqrt", "min", "Symbol", "type", "size", "context", "path", "withPath", "symbol", "constant_default", "circle_default", "buffer", "_", "symbolsFill", "symbolsStroke", "init_symbol", "__esmMin", "init_constant", "init_path", "init_asterisk", "init_circle", "init_cross", "init_diamond", "init_diamond2", "init_plus", "init_square", "init_square2", "init_star", "init_triangle", "init_triangle2", "init_wye", "init_times", "cross_default", "diamond_default", "square_default", "star_default", "triangle_default", "wye_default", "plus_default", "times_default", "triangle2_default", "asterisk_default", "square2_default", "diamond2_default", "noop_default", "init_noop", "__esmMin", "point", "that", "x", "y", "Basis", "context", "basis_default", "init_basis", "__esmMin", "BasisClosed", "context", "basisClosed_default", "init_basisClosed", "__esmMin", "init_noop", "init_basis", "noop_default", "x", "y", "point", "BasisOpen", "context", "basisOpen_default", "init_basisOpen", "__esmMin", "init_basis", "x", "y", "x0", "y0", "point", "Bundle", "context", "beta", "Basis", "bundle_default", "init_bundle", "__esmMin", "init_basis", "x", "y", "j", "x0", "y0", "dx", "dy", "i", "t", "custom", "bundle", "point", "that", "x", "y", "Cardinal", "context", "tension", "cardinal_default", "init_cardinal", "__esmMin", "custom", "cardinal", "CardinalClosed", "context", "tension", "cardinalClosed_default", "init_cardinalClosed", "__esmMin", "init_noop", "init_cardinal", "noop_default", "x", "y", "point", "custom", "cardinal", "CardinalOpen", "context", "tension", "cardinalOpen_default", "init_cardinalOpen", "__esmMin", "init_cardinal", "x", "y", "point", "custom", "cardinal", "point", "that", "x", "y", "x1", "y1", "x2", "y2", "epsilon", "a", "n", "b", "m", "CatmullRom", "context", "alpha", "catmullRom_default", "init_catmullRom", "__esmMin", "init_math", "init_cardinal", "x23", "y23", "custom", "catmullRom", "Cardinal", "CatmullRomClosed", "context", "alpha", "catmullRomClosed_default", "init_catmullRomClosed", "__esmMin", "init_cardinalClosed", "init_noop", "init_catmullRom", "noop_default", "x", "y", "x23", "y23", "point", "custom", "catmullRom", "CardinalClosed", "CatmullRomOpen", "context", "alpha", "catmullRomOpen_default", "init_catmullRomOpen", "__esmMin", "init_cardinalOpen", "init_catmullRom", "x", "y", "x23", "y23", "point", "custom", "catmullRom", "CardinalOpen", "LinearClosed", "context", "linearClosed_default", "init_linearClosed", "__esmMin", "init_noop", "noop_default", "x", "y", "sign", "x", "slope3", "that", "x2", "y2", "h0", "h1", "s0", "s1", "p", "slope2", "h", "point", "t0", "t1", "x0", "y0", "x1", "y1", "dx", "MonotoneX", "context", "MonotoneY", "ReflectContext", "monotoneX", "monotoneY", "init_monotone", "__esmMin", "y", "Natural", "context", "controlPoints", "x", "i", "n", "m", "a", "b", "r", "natural_default", "init_natural", "__esmMin", "y", "px", "py", "i0", "i1", "Step", "context", "step_default", "stepBefore", "stepAfter", "init_step", "__esmMin", "x", "y", "x1", "none_default", "series", "order", "n", "i", "j", "s0", "s1", "m", "init_none", "__esmMin", "none_default", "series", "n", "o", "init_none", "__esmMin", "stackValue", "d", "key", "stackSeries", "series", "stack_default", "keys", "constant_default", "order", "none_default", "offset", "value", "stack", "data", "sz", "i", "n", "j", "oz", "array_default", "_", "init_stack", "__esmMin", "init_array", "init_constant", "init_none", "expand_default", "series", "order", "i", "j", "m", "y", "none_default", "init_expand", "__esmMin", "init_none", "diverging_default", "series", "order", "n", "i", "j", "d", "dy", "yp", "yn", "m", "init_diverging", "__esmMin", "silhouette_default", "series", "order", "n", "j", "s0", "m", "i", "y", "none_default", "init_silhouette", "__esmMin", "init_none", "wiggle_default", "series", "order", "n", "m", "s0", "y", "j", "i", "s1", "s2", "si", "sij0", "sij1", "s3", "k", "sk", "skj0", "skj1", "none_default", "init_wiggle", "__esmMin", "init_none", "appearance_default", "series", "peaks", "peak", "none_default", "a", "b", "i", "j", "vi", "vj", "init_appearance", "__esmMin", "init_none", "ascending_default", "series", "sums", "sum", "none_default", "a", "b", "s", "i", "v", "init_ascending", "__esmMin", "init_none", "descending_default", "series", "ascending_default", "init_descending", "__esmMin", "init_ascending", "insideOut_default", "series", "n", "i", "j", "sums", "sum", "order", "appearance_default", "top", "bottom", "tops", "bottoms", "init_insideOut", "__esmMin", "init_appearance", "init_ascending", "reverse_default", "series", "none_default", "init_reverse", "__esmMin", "init_none", "src_exports", "__export", "arc_default", "area_default", "areaRadial_default", "basis_default", "basisClosed_default", "basisOpen_default", "bumpX", "bumpY", "bundle_default", "cardinal_default", "cardinalClosed_default", "cardinalOpen_default", "catmullRom_default", "catmullRomClosed_default", "catmullRomOpen_default", "linear_default", "linearClosed_default", "monotoneX", "monotoneY", "natural_default", "step_default", "stepAfter", "stepBefore", "line_default", "lineRadial_default", "link", "linkHorizontal", "linkRadial", "linkVertical", "pie_default", "pointRadial_default", "stack_default", "diverging_default", "expand_default", "none_default", "silhouette_default", "wiggle_default", "appearance_default", "ascending_default", "descending_default", "insideOut_default", "reverse_default", "Symbol", "asterisk_default", "circle_default", "cross_default", "diamond_default", "diamond2_default", "plus_default", "square_default", "square2_default", "star_default", "times_default", "triangle_default", "triangle2_default", "wye_default", "symbolsFill", "symbolsStroke", "init_src", "__esmMin", "init_arc", "init_area", "init_line", "init_pie", "init_areaRadial", "init_lineRadial", "init_pointRadial", "init_link", "init_symbol", "init_asterisk", "init_circle", "init_cross", "init_diamond", "init_diamond2", "init_plus", "init_square", "init_square2", "init_star", "init_triangle", "init_triangle2", "init_wye", "init_times", "init_basisClosed", "init_basisOpen", "init_basis", "init_bump", "init_bundle", "init_cardinalClosed", "init_cardinalOpen", "init_cardinal", "init_catmullRomClosed", "init_catmullRomOpen", "init_catmullRom", "init_linearClosed", "init_linear", "init_monotone", "init_natural", "init_step", "init_stack", "init_expand", "init_diverging", "init_none", "init_silhouette", "init_wiggle", "init_appearance", "init_ascending", "init_descending", "init_insideOut", "init_reverse", "formatDecimal_default", "x", "formatDecimalParts", "p", "i", "coefficient", "init_formatDecimal", "__esmMin", "exponent_default", "x", "formatDecimalParts", "init_exponent", "__esmMin", "init_formatDecimal", "formatGroup_default", "grouping", "thousands", "value", "width", "t", "j", "g", "length", "init_formatGroup", "__esmMin", "formatNumerals_default", "numerals", "value", "i", "init_formatNumerals", "__esmMin", "formatSpecifier", "specifier", "match", "re", "FormatSpecifier", "init_formatSpecifier", "__esmMin", "formatTrim_default", "s", "out", "n", "i", "i0", "i1", "init_formatTrim", "__esmMin", "formatPrefixAuto_default", "x", "p", "d", "formatDecimalParts", "coefficient", "exponent", "i", "prefixExponent", "n", "init_formatPrefixAuto", "__esmMin", "init_formatDecimal", "formatRounded_default", "x", "p", "d", "formatDecimalParts", "coefficient", "exponent", "init_formatRounded", "__esmMin", "init_formatDecimal", "formatTypes_default", "init_formatTypes", "__esmMin", "init_formatDecimal", "init_formatPrefixAuto", "init_formatRounded", "x", "p", "formatDecimal_default", "formatRounded_default", "formatPrefixAuto_default", "identity_default", "x", "init_identity", "__esmMin", "locale_default", "locale", "group", "identity_default", "formatGroup_default", "map", "currencyPrefix", "currencySuffix", "decimal", "numerals", "formatNumerals_default", "percent", "minus", "nan", "newFormat", "specifier", "formatSpecifier", "fill", "align", "sign", "symbol", "zero", "width", "comma", "precision", "trim", "type", "formatTypes_default", "prefix", "suffix", "formatType", "maybeSuffix", "format", "value", "valuePrefix", "valueSuffix", "i", "n", "c", "valueNegative", "formatTrim_default", "prefixes", "prefixExponent", "length", "padding", "formatPrefix", "f", "e", "exponent_default", "k", "init_locale", "__esmMin", "init_exponent", "init_formatGroup", "init_formatNumerals", "init_formatSpecifier", "init_formatTrim", "init_formatTypes", "init_formatPrefixAuto", "init_identity", "defaultLocale", "definition", "locale", "locale_default", "format", "formatPrefix", "init_defaultLocale", "__esmMin", "init_locale", "precisionFixed_default", "step", "exponent_default", "init_precisionFixed", "__esmMin", "init_exponent", "precisionPrefix_default", "step", "value", "exponent_default", "init_precisionPrefix", "__esmMin", "init_exponent", "precisionRound_default", "step", "max", "exponent_default", "init_precisionRound", "__esmMin", "init_exponent", "src_exports", "__export", "FormatSpecifier", "format", "defaultLocale", "locale_default", "formatPrefix", "formatSpecifier", "precisionFixed_default", "precisionPrefix_default", "precisionRound_default", "init_src", "__esmMin", "init_defaultLocale", "init_locale", "init_formatSpecifier", "init_precisionFixed", "init_precisionPrefix", "init_precisionRound", "ascending", "a", "b", "init_ascending", "__esmMin", "descending", "a", "b", "init_descending", "__esmMin", "bisector", "f", "compare1", "compare2", "delta", "ascending", "d", "x", "descending", "zero", "left", "a", "lo", "hi", "mid", "right", "center", "i", "init_bisector", "__esmMin", "init_ascending", "init_descending", "number", "x", "numbers", "values", "valueof", "value", "index", "init_number", "__esmMin", "ascendingBisect", "bisectRight", "bisectLeft", "bisectCenter", "bisect_default", "init_bisect", "__esmMin", "init_ascending", "init_bisector", "init_number", "bisector", "ascending", "number", "intern_get", "_intern", "_key", "value", "key", "intern_set", "intern_delete", "keyof", "InternMap", "init_src", "__esmMin", "entries", "compareDefined", "compare", "ascending", "ascendingDefined", "a", "b", "x", "init_sort", "__esmMin", "init_ascending", "tickSpec", "start", "stop", "count", "step", "power", "error", "factor", "e10", "e5", "e2", "i1", "i2", "inc", "ticks", "reverse", "n", "i", "tickIncrement", "tickStep", "init_ticks", "__esmMin", "max", "values", "valueof", "value", "index", "init_max", "__esmMin", "min", "values", "valueof", "value", "index", "init_min", "__esmMin", "quickselect", "array", "k", "left", "right", "compare", "ascendingDefined", "compareDefined", "n", "m", "z", "s", "sd", "newLeft", "newRight", "t", "i", "j", "swap", "init_quickselect", "__esmMin", "init_sort", "quantile", "values", "p", "valueof", "numbers", "min", "max", "i0", "value0", "quickselect", "value1", "quantileSorted", "number", "init_quantile", "__esmMin", "init_max", "init_min", "init_quickselect", "init_number", "range", "start", "stop", "step", "n", "i", "init_range", "__esmMin", "init_src", "__esmMin", "init_bisect", "init_ascending", "init_bisector", "init_quantile", "init_range", "init_ticks", "initRange", "domain", "range", "initInterpolator", "interpolator", "init_init", "__esmMin", "ordinal", "index", "InternMap", "domain", "range", "unknown", "implicit", "scale", "d", "i", "_", "value", "initRange", "init_ordinal", "__esmMin", "init_src", "init_init", "band", "scale", "ordinal", "domain", "ordinalRange", "r0", "r1", "step", "bandwidth", "round", "paddingInner", "paddingOuter", "align", "rescale", "n", "reverse", "start", "stop", "values", "range", "i", "_", "initRange", "pointish", "copy", "point", "init_band", "__esmMin", "init_src", "init_init", "init_ordinal", "define_default", "constructor", "factory", "prototype", "extend", "parent", "definition", "key", "init_define", "__esmMin", "Color", "color_formatHex", "color_formatHex8", "color_formatHsl", "hslConvert", "color_formatRgb", "color", "format", "m", "l", "reHex", "rgbn", "Rgb", "rgba", "reRgbInteger", "reRgbPercent", "reRgbaInteger", "reRgbaPercent", "reHslPercent", "hsla", "reHslaPercent", "named", "n", "r", "g", "b", "a", "rgbConvert", "o", "rgb", "opacity", "rgb_formatHex", "hex", "rgb_formatHex8", "rgb_formatRgb", "clampa", "clampi", "value", "h", "s", "Hsl", "min", "max", "hsl", "clamph", "clampt", "hsl2rgb", "m1", "m2", "darker", "brighter", "reI", "reN", "reP", "init_color", "__esmMin", "init_define", "define_default", "channels", "extend", "k", "radians", "degrees", "init_math", "__esmMin", "labConvert", "o", "Lab", "Hcl", "hcl2lab", "Rgb", "rgbConvert", "r", "rgb2lrgb", "g", "b", "y", "xyz2lab", "Yn", "x", "z", "Xn", "Zn", "gray", "l", "opacity", "lab", "a", "t", "t3", "t2", "t0", "lab2xyz", "t1", "lrgb2rgb", "hclConvert", "h", "degrees", "lch", "c", "hcl", "radians", "K", "init_lab", "__esmMin", "init_define", "init_color", "init_math", "define_default", "extend", "Color", "k", "cubehelixConvert", "o", "Cubehelix", "Rgb", "rgbConvert", "r", "g", "b", "l", "BC_DA", "ED", "EB", "bl", "k", "E", "C", "D", "h", "degrees", "cubehelix", "s", "opacity", "A", "B", "init_cubehelix", "__esmMin", "init_define", "init_color", "init_math", "define_default", "extend", "Color", "brighter", "darker", "radians", "a", "cosh", "sinh", "src_exports", "__export", "color", "cubehelix", "gray", "hcl", "hsl", "lab", "lch", "rgb", "init_src", "__esmMin", "init_color", "init_lab", "init_cubehelix", "basis", "t1", "v0", "v1", "v2", "v3", "t2", "t3", "basis_default", "values", "n", "t", "i", "init_basis", "__esmMin", "basisClosed_default", "values", "n", "t", "i", "v0", "v1", "v2", "v3", "basis", "init_basisClosed", "__esmMin", "init_basis", "constant_default", "init_constant", "__esmMin", "x", "linear", "a", "d", "t", "exponential", "b", "y", "hue", "constant_default", "gamma", "nogamma", "init_color", "__esmMin", "init_constant", "rgbSpline", "spline", "colors", "n", "r", "g", "b", "i", "color", "rgb", "t", "rgb_default", "rgbBasis", "rgbBasisClosed", "init_rgb", "__esmMin", "init_src", "init_basis", "init_basisClosed", "init_color", "rgbGamma", "y", "gamma", "start", "end", "opacity", "nogamma", "basis_default", "basisClosed_default", "numberArray_default", "a", "b", "n", "c", "t", "isNumberArray", "x", "init_numberArray", "__esmMin", "array_default", "a", "b", "isNumberArray", "numberArray_default", "genericArray", "nb", "na", "x", "c", "i", "value_default", "t", "init_array", "__esmMin", "init_value", "init_numberArray", "date_default", "a", "b", "d", "t", "init_date", "__esmMin", "number_default", "a", "b", "t", "init_number", "__esmMin", "object_default", "a", "b", "i", "c", "k", "value_default", "t", "init_object", "__esmMin", "init_value", "zero", "b", "one", "string_default", "a", "bi", "reA", "reB", "am", "bm", "bs", "i", "q", "number_default", "t", "o", "init_string", "__esmMin", "init_number", "value_default", "a", "b", "t", "c", "constant_default", "number_default", "color", "rgb_default", "string_default", "date_default", "isNumberArray", "numberArray_default", "genericArray", "object_default", "init_value", "__esmMin", "init_src", "init_rgb", "init_array", "init_date", "init_number", "init_object", "init_string", "init_constant", "init_numberArray", "discrete_default", "range", "n", "t", "init_discrete", "__esmMin", "hue_default", "a", "b", "i", "hue", "t", "x", "init_hue", "__esmMin", "init_color", "round_default", "a", "b", "t", "init_round", "__esmMin", "decompose_default", "a", "b", "c", "d", "e", "f", "scaleX", "scaleY", "skewX", "degrees", "identity", "init_decompose", "__esmMin", "parseCss", "value", "m", "identity", "decompose_default", "parseSvg", "svgNode", "init_parse", "__esmMin", "init_decompose", "interpolateTransform", "parse", "pxComma", "pxParen", "degParen", "pop", "s", "translate", "xa", "ya", "xb", "yb", "q", "i", "number_default", "rotate", "a", "b", "skewX", "scale", "t", "n", "o", "interpolateTransformCss", "interpolateTransformSvg", "init_transform", "__esmMin", "init_number", "init_parse", "parseCss", "parseSvg", "cosh", "x", "sinh", "tanh", "epsilon2", "zoom_default", "init_zoom", "__esmMin", "zoomRho", "rho", "rho2", "rho4", "zoom", "p0", "p1", "ux0", "uy0", "w0", "ux1", "uy1", "w1", "dx", "dy", "d2", "i", "S", "t", "d1", "b0", "b1", "r0", "r1", "s", "coshr0", "u", "_", "_1", "_2", "_4", "hsl", "hue", "start", "end", "h", "s", "nogamma", "l", "opacity", "t", "hsl_default", "hslLong", "init_hsl", "__esmMin", "init_src", "init_color", "lab", "start", "end", "l", "nogamma", "a", "b", "opacity", "t", "init_lab", "__esmMin", "init_src", "init_color", "hcl", "hue", "start", "end", "h", "c", "nogamma", "l", "opacity", "t", "hcl_default", "hclLong", "init_hcl", "__esmMin", "init_src", "init_color", "cubehelix", "hue", "cubehelixGamma", "y", "start", "end", "h", "nogamma", "l", "opacity", "t", "cubehelix_default", "cubehelixLong", "init_cubehelix", "__esmMin", "init_src", "init_color", "piecewise", "interpolate", "values", "value_default", "i", "v", "I", "t", "init_piecewise", "__esmMin", "init_value", "quantize_default", "interpolator", "n", "samples", "i", "init_quantize", "__esmMin", "src_exports", "__export", "value_default", "array_default", "basis_default", "basisClosed_default", "cubehelix_default", "cubehelixLong", "date_default", "discrete_default", "hcl_default", "hclLong", "hsl_default", "hslLong", "hue_default", "lab", "number_default", "numberArray_default", "object_default", "rgb_default", "rgbBasis", "rgbBasisClosed", "round_default", "string_default", "interpolateTransformCss", "interpolateTransformSvg", "zoom_default", "piecewise", "quantize_default", "init_src", "__esmMin", "init_value", "init_array", "init_basis", "init_basisClosed", "init_date", "init_discrete", "init_hue", "init_number", "init_numberArray", "init_object", "init_round", "init_string", "init_transform", "init_zoom", "init_rgb", "init_hsl", "init_lab", "init_hcl", "init_cubehelix", "init_piecewise", "init_quantize", "constants", "x", "init_constant", "__esmMin", "number", "x", "init_number", "__esmMin", "identity", "x", "normalize", "a", "b", "constants", "clamper", "t", "bimap", "domain", "range", "interpolate", "d0", "d1", "r0", "r1", "polymap", "j", "d", "r", "i", "bisect_default", "copy", "source", "target", "transformer", "unit", "value_default", "transform", "untransform", "unknown", "clamp", "piecewise", "output", "input", "rescale", "n", "scale", "y", "number_default", "_", "number", "round_default", "u", "continuous", "init_continuous", "__esmMin", "init_src", "init_constant", "init_number", "tickFormat", "start", "stop", "count", "specifier", "step", "tickStep", "precision", "formatSpecifier", "value", "precisionPrefix_default", "formatPrefix", "precisionRound_default", "precisionFixed_default", "format", "init_tickFormat", "__esmMin", "init_src", "linearish", "scale", "domain", "count", "d", "ticks", "specifier", "tickFormat", "i0", "i1", "start", "stop", "prestep", "step", "maxIter", "tickIncrement", "linear", "continuous", "copy", "initRange", "init_linear", "__esmMin", "init_src", "init_continuous", "init_init", "init_tickFormat", "identity", "domain", "unknown", "scale", "x", "_", "number", "linearish", "init_identity", "__esmMin", "init_linear", "init_number", "nice", "domain", "interval", "i0", "i1", "x0", "x1", "t", "init_nice", "__esmMin", "transformLog", "x", "transformExp", "transformLogn", "transformExpn", "pow10", "powp", "base", "logp", "reflect", "f", "k", "loggish", "transform", "scale", "domain", "logs", "pows", "rescale", "_", "count", "d", "v", "r", "i", "j", "t", "n", "z", "ticks", "specifier", "formatSpecifier", "format", "nice", "log", "transformer", "copy", "initRange", "init_log", "__esmMin", "init_src", "init_nice", "init_continuous", "init_init", "transformSymlog", "c", "x", "transformSymexp", "symlogish", "transform", "scale", "_", "linearish", "symlog", "transformer", "copy", "initRange", "init_symlog", "__esmMin", "init_linear", "init_continuous", "init_init", "transformPow", "exponent", "x", "transformSqrt", "transformSquare", "powish", "transform", "scale", "identity", "rescale", "_", "linearish", "pow", "transformer", "copy", "initRange", "sqrt", "init_pow", "__esmMin", "init_linear", "init_continuous", "init_init", "square", "x", "unsquare", "radial", "squared", "continuous", "range", "round", "unknown", "scale", "y", "_", "number", "initRange", "linearish", "init_radial", "__esmMin", "init_continuous", "init_init", "init_linear", "init_number", "quantile", "domain", "range", "thresholds", "unknown", "rescale", "i", "n", "quantileSorted", "scale", "x", "bisect_default", "y", "_", "d", "ascending", "initRange", "init_quantile", "__esmMin", "init_src", "init_init", "quantize", "x0", "x1", "n", "domain", "range", "unknown", "scale", "x", "bisect_default", "rescale", "i", "_", "y", "initRange", "linearish", "init_quantize", "__esmMin", "init_src", "init_linear", "init_init", "threshold", "domain", "range", "unknown", "scale", "x", "bisect_default", "_", "y", "i", "initRange", "init_threshold", "__esmMin", "init_src", "init_init", "timeInterval", "floori", "offseti", "count", "field", "interval", "date", "d0", "d1", "step", "start", "stop", "range", "previous", "test", "end", "t0", "t1", "d", "init_interval", "__esmMin", "millisecond", "milliseconds", "init_millisecond", "__esmMin", "init_interval", "timeInterval", "date", "step", "start", "end", "k", "second", "seconds", "init_second", "__esmMin", "init_interval", "timeInterval", "date", "step", "start", "end", "timeMinute", "timeMinutes", "utcMinute", "utcMinutes", "init_minute", "__esmMin", "init_interval", "timeInterval", "date", "step", "start", "end", "timeHour", "timeHours", "utcHour", "utcHours", "init_hour", "__esmMin", "init_interval", "timeInterval", "date", "step", "start", "end", "timeDay", "timeDays", "utcDay", "utcDays", "unixDay", "unixDays", "init_day", "__esmMin", "init_interval", "timeInterval", "date", "step", "start", "end", "timeWeekday", "i", "timeInterval", "date", "step", "start", "end", "utcWeekday", "timeSunday", "timeMonday", "timeTuesday", "timeWednesday", "timeThursday", "timeFriday", "timeSaturday", "timeSundays", "timeMondays", "timeTuesdays", "timeWednesdays", "timeThursdays", "timeFridays", "timeSaturdays", "utcSunday", "utcMonday", "utcTuesday", "utcWednesday", "utcThursday", "utcFriday", "utcSaturday", "utcSundays", "utcMondays", "utcTuesdays", "utcWednesdays", "utcThursdays", "utcFridays", "utcSaturdays", "init_week", "__esmMin", "init_interval", "timeMonth", "timeMonths", "utcMonth", "utcMonths", "init_month", "__esmMin", "init_interval", "timeInterval", "date", "step", "start", "end", "timeYear", "timeYears", "utcYear", "utcYears", "init_year", "__esmMin", "init_interval", "timeInterval", "date", "step", "start", "end", "k", "ticker", "year", "month", "week", "day", "hour", "minute", "tickIntervals", "second", "ticks", "start", "stop", "count", "reverse", "interval", "tickInterval", "target", "i", "bisector", "step", "tickStep", "millisecond", "t", "utcTicks", "utcTickInterval", "timeTicks", "timeTickInterval", "init_ticks", "__esmMin", "init_src", "init_millisecond", "init_second", "init_minute", "init_hour", "init_day", "init_week", "init_month", "init_year", "utcYear", "utcMonth", "utcSunday", "unixDay", "utcHour", "utcMinute", "timeYear", "timeMonth", "timeSunday", "timeDay", "timeHour", "timeMinute", "init_src", "__esmMin", "init_second", "init_minute", "init_hour", "init_day", "init_week", "init_month", "init_year", "init_ticks", "localDate", "d", "date", "utcDate", "newDate", "y", "m", "formatLocale", "locale", "locale_dateTime", "locale_date", "locale_time", "locale_periods", "locale_weekdays", "locale_shortWeekdays", "locale_months", "locale_shortMonths", "periodRe", "formatRe", "periodLookup", "formatLookup", "weekdayRe", "weekdayLookup", "shortWeekdayRe", "shortWeekdayLookup", "monthRe", "monthLookup", "shortMonthRe", "shortMonthLookup", "formats", "formatShortWeekday", "formatWeekday", "formatShortMonth", "formatMonth", "formatDayOfMonth", "formatMicroseconds", "formatYearISO", "formatFullYearISO", "formatHour24", "formatHour12", "formatDayOfYear", "formatMilliseconds", "formatMonthNumber", "formatMinutes", "formatPeriod", "formatQuarter", "formatUnixTimestamp", "formatUnixTimestampSeconds", "formatSeconds", "formatWeekdayNumberMonday", "formatWeekNumberSunday", "formatWeekNumberISO", "formatWeekdayNumberSunday", "formatWeekNumberMonday", "formatYear", "formatFullYear", "formatZone", "formatLiteralPercent", "utcFormats", "formatUTCShortWeekday", "formatUTCWeekday", "formatUTCShortMonth", "formatUTCMonth", "formatUTCDayOfMonth", "formatUTCMicroseconds", "formatUTCYearISO", "formatUTCFullYearISO", "formatUTCHour24", "formatUTCHour12", "formatUTCDayOfYear", "formatUTCMilliseconds", "formatUTCMonthNumber", "formatUTCMinutes", "formatUTCPeriod", "formatUTCQuarter", "formatUTCSeconds", "formatUTCWeekdayNumberMonday", "formatUTCWeekNumberSunday", "formatUTCWeekNumberISO", "formatUTCWeekdayNumberSunday", "formatUTCWeekNumberMonday", "formatUTCYear", "formatUTCFullYear", "formatUTCZone", "parses", "parseShortWeekday", "parseWeekday", "parseShortMonth", "parseMonth", "parseLocaleDateTime", "parseDayOfMonth", "parseMicroseconds", "parseYear", "parseFullYear", "parseHour24", "parseDayOfYear", "parseMilliseconds", "parseMonthNumber", "parseMinutes", "parsePeriod", "parseQuarter", "parseUnixTimestamp", "parseUnixTimestampSeconds", "parseSeconds", "parseWeekdayNumberMonday", "parseWeekNumberSunday", "parseWeekNumberISO", "parseWeekdayNumberSunday", "parseWeekNumberMonday", "parseLocaleDate", "parseLocaleTime", "parseZone", "parseLiteralPercent", "newFormat", "specifier", "string", "i", "j", "n", "c", "pad", "format", "pads", "newParse", "Z", "parseSpecifier", "week", "day", "utcMonday", "utcDay", "timeMonday", "timeDay", "parse", "f", "p", "value", "fill", "width", "sign", "length", "requote", "s", "requoteRe", "names", "name", "numberRe", "percentRe", "timeYear", "timeSunday", "dISO", "timeThursday", "z", "utcYear", "dow", "utcSunday", "UTCdISO", "utcThursday", "init_locale", "__esmMin", "init_src", "defaultLocale", "definition", "locale", "formatLocale", "timeFormat", "timeParse", "utcFormat", "utcParse", "init_defaultLocale", "__esmMin", "init_locale", "init_src", "__esmMin", "init_defaultLocale", "date", "t", "number", "calendar", "ticks", "tickInterval", "year", "month", "week", "day", "hour", "minute", "second", "format", "scale", "continuous", "invert", "domain", "formatMillisecond", "formatSecond", "formatMinute", "formatHour", "formatDay", "formatWeek", "formatMonth", "formatYear", "tickFormat", "y", "_", "interval", "d", "count", "specifier", "nice", "copy", "time", "initRange", "timeTicks", "timeTickInterval", "timeYear", "timeMonth", "timeSunday", "timeDay", "timeHour", "timeMinute", "timeFormat", "init_time", "__esmMin", "init_src", "init_continuous", "init_init", "init_nice", "utcTime", "initRange", "calendar", "utcTicks", "utcTickInterval", "utcYear", "utcMonth", "utcSunday", "utcDay", "utcHour", "utcMinute", "second", "utcFormat", "init_utcTime", "__esmMin", "init_src", "init_time", "init_init", "transformer", "x0", "x1", "t0", "t1", "k10", "transform", "interpolator", "identity", "clamp", "unknown", "scale", "x", "_", "range", "interpolate", "r0", "r1", "value_default", "round_default", "t", "copy", "source", "target", "sequential", "linearish", "initInterpolator", "sequentialLog", "loggish", "sequentialSymlog", "symlogish", "sequentialPow", "powish", "sequentialSqrt", "init_sequential", "__esmMin", "init_src", "init_continuous", "init_init", "init_linear", "init_log", "init_symlog", "init_pow", "sequentialQuantile", "domain", "interpolator", "identity", "scale", "x", "bisect_default", "_", "d", "ascending", "i", "quantile", "initInterpolator", "init_sequentialQuantile", "__esmMin", "init_src", "init_continuous", "init_init", "transformer", "x0", "x1", "x2", "s", "t0", "t1", "t2", "k10", "k21", "interpolator", "identity", "transform", "clamp", "unknown", "scale", "x", "_", "range", "interpolate", "r0", "r1", "r2", "piecewise", "value_default", "round_default", "t", "diverging", "linearish", "copy", "initInterpolator", "divergingLog", "loggish", "divergingSymlog", "symlogish", "divergingPow", "powish", "divergingSqrt", "init_diverging", "__esmMin", "init_src", "init_continuous", "init_init", "init_linear", "init_log", "init_sequential", "init_symlog", "init_pow", "src_exports", "__export", "band", "diverging", "divergingLog", "divergingPow", "divergingSqrt", "divergingSymlog", "identity", "implicit", "linear", "log", "ordinal", "point", "pow", "quantile", "quantize", "radial", "sequential", "sequentialLog", "sequentialPow", "sequentialQuantile", "sequentialSqrt", "sequentialSymlog", "sqrt", "symlog", "threshold", "time", "utcTime", "tickFormat", "init_src", "__esmMin", "init_band", "init_identity", "init_linear", "init_log", "init_symlog", "init_ordinal", "init_pow", "init_radial", "init_quantile", "init_quantize", "init_threshold", "init_time", "init_utcTime", "init_sequential", "init_sequentialQuantile", "init_diverging", "init_tickFormat", "identity_default", "x", "init_identity", "__esmMin", "translateX", "x", "translateY", "y", "number", "scale", "d", "center", "offset", "entering", "axis", "orient", "tickArguments", "tickValues", "tickFormat", "tickSizeInner", "tickSizeOuter", "tickPadding", "k", "top", "left", "right", "transform", "bottom", "context", "values", "format", "identity_default", "spacing", "range", "range0", "range1", "position", "selection", "path", "tick", "tickExit", "tickEnter", "line", "text", "epsilon", "p", "_", "axisTop", "axisRight", "axisBottom", "axisLeft", "init_axis", "__esmMin", "init_identity", "src_exports", "__export", "axisBottom", "axisLeft", "axisRight", "axisTop", "init_src", "__esmMin", "init_axis", "dispatch", "i", "n", "_", "t", "Dispatch", "parseTypenames", "typenames", "types", "name", "get", "type", "c", "set", "callback", "noop", "dispatch_default", "init_dispatch", "__esmMin", "typename", "T", "copy", "that", "args", "init_src", "__esmMin", "init_dispatch", "xhtml", "namespaces_default", "init_namespaces", "__esmMin", "namespace_default", "name", "prefix", "i", "namespaces_default", "init_namespace", "__esmMin", "init_namespaces", "creatorInherit", "name", "document", "uri", "xhtml", "creatorFixed", "fullname", "creator_default", "namespace_default", "init_creator", "__esmMin", "init_namespace", "init_namespaces", "none", "selector_default", "selector", "init_selector", "__esmMin", "select_default", "select", "selector_default", "groups", "m", "subgroups", "j", "group", "n", "subgroup", "node", "subnode", "i", "Selection", "init_select", "__esmMin", "init_selection", "init_selector", "array", "x", "init_array", "__esmMin", "empty", "selectorAll_default", "selector", "init_selectorAll", "__esmMin", "arrayAll", "select", "array", "selectAll_default", "selectorAll_default", "groups", "m", "subgroups", "parents", "j", "group", "n", "node", "i", "Selection", "init_selectAll", "__esmMin", "init_selection", "init_array", "init_selectorAll", "matcher_default", "selector", "childMatcher", "node", "init_matcher", "__esmMin", "childFind", "match", "find", "childFirst", "selectChild_default", "childMatcher", "init_selectChild", "__esmMin", "init_matcher", "children", "childrenFilter", "match", "filter", "selectChildren_default", "childMatcher", "init_selectChildren", "__esmMin", "init_matcher", "filter_default", "match", "matcher_default", "groups", "m", "subgroups", "j", "group", "n", "subgroup", "node", "i", "Selection", "init_filter", "__esmMin", "init_selection", "init_matcher", "sparse_default", "update", "init_sparse", "__esmMin", "enter_default", "Selection", "sparse_default", "EnterNode", "parent", "datum", "init_enter", "__esmMin", "init_sparse", "init_selection", "child", "next", "selector", "constant_default", "x", "init_constant", "__esmMin", "bindIndex", "parent", "group", "enter", "update", "exit", "data", "i", "node", "groupLength", "dataLength", "EnterNode", "bindKey", "key", "nodeByKeyValue", "keyValues", "keyValue", "datum", "data_default", "value", "bind", "parents", "groups", "constant_default", "m", "j", "arraylike", "enterGroup", "updateGroup", "exitGroup", "i0", "i1", "previous", "next", "Selection", "init_data", "__esmMin", "init_selection", "init_enter", "init_constant", "exit_default", "Selection", "sparse_default", "init_exit", "__esmMin", "init_sparse", "init_selection", "join_default", "onenter", "onupdate", "onexit", "enter", "update", "exit", "init_join", "__esmMin", "merge_default", "context", "selection", "groups0", "groups1", "m0", "m1", "m", "merges", "j", "group0", "group1", "n", "merge", "node", "i", "Selection", "init_merge", "__esmMin", "init_selection", "order_default", "groups", "j", "m", "group", "next", "node", "init_order", "__esmMin", "sort_default", "compare", "ascending", "compareNode", "a", "b", "groups", "m", "sortgroups", "j", "group", "n", "sortgroup", "node", "i", "Selection", "init_sort", "__esmMin", "init_selection", "call_default", "callback", "init_call", "__esmMin", "nodes_default", "init_nodes", "__esmMin", "node_default", "groups", "j", "m", "group", "n", "node", "init_node", "__esmMin", "size_default", "size", "node", "init_size", "__esmMin", "empty_default", "init_empty", "__esmMin", "each_default", "callback", "groups", "j", "m", "group", "i", "n", "node", "init_each", "__esmMin", "attrRemove", "name", "attrRemoveNS", "fullname", "attrConstant", "value", "attrConstantNS", "attrFunction", "v", "attrFunctionNS", "attr_default", "namespace_default", "node", "init_attr", "__esmMin", "init_namespace", "window_default", "node", "init_window", "__esmMin", "styleRemove", "name", "styleConstant", "value", "priority", "styleFunction", "v", "style_default", "styleValue", "node", "window_default", "init_style", "__esmMin", "init_window", "propertyRemove", "name", "propertyConstant", "value", "propertyFunction", "v", "property_default", "init_property", "__esmMin", "classArray", "string", "classList", "node", "ClassList", "classedAdd", "names", "list", "i", "n", "classedRemove", "classedTrue", "classedFalse", "classedFunction", "value", "classed_default", "name", "init_classed", "__esmMin", "textRemove", "textConstant", "value", "textFunction", "v", "text_default", "init_text", "__esmMin", "htmlRemove", "htmlConstant", "value", "htmlFunction", "v", "html_default", "init_html", "__esmMin", "raise", "raise_default", "init_raise", "__esmMin", "lower", "lower_default", "init_lower", "__esmMin", "append_default", "name", "create", "creator_default", "init_append", "__esmMin", "init_creator", "constantNull", "insert_default", "name", "before", "create", "creator_default", "select", "selector_default", "init_insert", "__esmMin", "init_creator", "init_selector", "remove", "parent", "remove_default", "init_remove", "__esmMin", "selection_cloneShallow", "clone", "parent", "selection_cloneDeep", "clone_default", "deep", "init_clone", "__esmMin", "datum_default", "value", "init_datum", "__esmMin", "contextListener", "listener", "event", "parseTypenames", "typenames", "name", "i", "onRemove", "typename", "on", "j", "m", "onAdd", "value", "options", "o", "on_default", "n", "t", "init_on", "__esmMin", "dispatchEvent", "node", "type", "params", "window", "window_default", "event", "dispatchConstant", "dispatchFunction", "dispatch_default", "init_dispatch", "__esmMin", "init_window", "iterator_default", "groups", "j", "m", "group", "n", "node", "init_iterator", "__esmMin", "Selection", "groups", "parents", "selection", "root", "selection_selection", "selection_default", "init_selection", "__esmMin", "init_select", "init_selectAll", "init_selectChild", "init_selectChildren", "init_filter", "init_data", "init_enter", "init_exit", "init_join", "init_merge", "init_order", "init_sort", "init_call", "init_nodes", "init_node", "init_size", "init_empty", "init_each", "init_attr", "init_style", "init_property", "init_classed", "init_text", "init_html", "init_raise", "init_lower", "init_append", "init_insert", "init_remove", "init_clone", "init_datum", "init_on", "init_dispatch", "init_iterator", "select_default", "selectAll_default", "selectChild_default", "selectChildren_default", "filter_default", "data_default", "enter_default", "exit_default", "join_default", "merge_default", "order_default", "sort_default", "call_default", "nodes_default", "node_default", "size_default", "empty_default", "each_default", "attr_default", "style_default", "property_default", "classed_default", "text_default", "html_default", "raise_default", "lower_default", "append_default", "insert_default", "remove_default", "clone_default", "datum_default", "on_default", "dispatch_default", "iterator_default", "select_default", "selector", "Selection", "root", "init_select", "__esmMin", "init_selection", "create_default", "name", "select_default", "creator_default", "init_create", "__esmMin", "init_creator", "init_select", "local", "Local", "nextId", "init_local", "__esmMin", "node", "id", "value", "sourceEvent_default", "event", "sourceEvent", "init_sourceEvent", "__esmMin", "pointer_default", "event", "node", "sourceEvent_default", "svg", "point", "rect", "init_pointer", "__esmMin", "init_sourceEvent", "pointers_default", "events", "node", "sourceEvent_default", "event", "pointer_default", "init_pointers", "__esmMin", "init_pointer", "init_sourceEvent", "selectAll_default", "selector", "Selection", "array", "root", "init_selectAll", "__esmMin", "init_array", "init_selection", "src_exports", "__export", "create_default", "creator_default", "local", "matcher_default", "namespace_default", "namespaces_default", "pointer_default", "pointers_default", "select_default", "selectAll_default", "selection_default", "selector_default", "selectorAll_default", "styleValue", "window_default", "init_src", "__esmMin", "init_create", "init_creator", "init_local", "init_matcher", "init_namespace", "init_namespaces", "init_pointer", "init_pointers", "init_select", "init_selectAll", "init_selection", "init_selector", "init_selectorAll", "init_style", "init_window", "noevent_default", "event", "nonpassivecapture", "init_noevent", "__esmMin", "nodrag_default", "view", "root", "selection", "select_default", "noevent_default", "nonpassivecapture", "yesdrag", "noclick", "init_nodrag", "__esmMin", "init_src", "init_noevent", "init_src", "__esmMin", "init_nodrag", "now", "clockNow", "setFrame", "clearNow", "clock", "clockSkew", "Timer", "timer", "callback", "delay", "time", "t", "timerFlush", "frame", "taskHead", "e", "wake", "clockLast", "timeout", "nap", "poke", "pokeDelay", "t0", "t1", "t2", "taskTail", "sleep", "interval", "init_timer", "__esmMin", "f", "timeout_default", "callback", "delay", "time", "t", "Timer", "elapsed", "init_timeout", "__esmMin", "init_timer", "init_src", "__esmMin", "init_timer", "init_timeout", "schedule_default", "node", "name", "id", "index", "group", "timing", "schedules", "create", "emptyOn", "emptyTween", "CREATED", "init", "schedule", "get", "set", "STARTED", "self", "tween", "timer", "elapsed", "SCHEDULED", "start", "i", "j", "n", "o", "stop", "timeout_default", "RUNNING", "ENDED", "tick", "STARTING", "t", "ENDING", "init_schedule", "__esmMin", "init_src", "dispatch_default", "interrupt_default", "node", "name", "schedules", "schedule", "active", "empty", "i", "STARTING", "ENDING", "ENDED", "init_interrupt", "__esmMin", "init_schedule", "interrupt_default", "name", "init_interrupt", "__esmMin", "tweenRemove", "id", "name", "tween0", "tween1", "schedule", "set", "tween", "i", "n", "tweenFunction", "value", "t", "tween_default", "get", "tweenValue", "transition", "node", "init_tween", "__esmMin", "init_schedule", "interpolate_default", "a", "b", "c", "number_default", "color", "rgb_default", "string_default", "init_interpolate", "__esmMin", "init_src", "attrRemove", "name", "attrRemoveNS", "fullname", "attrConstant", "interpolate", "value1", "string00", "string1", "interpolate0", "string0", "attrConstantNS", "attrFunction", "value", "string10", "attrFunctionNS", "attr_default", "namespace_default", "i", "interpolateTransformSvg", "interpolate_default", "tweenValue", "init_attr", "__esmMin", "init_src", "init_tween", "init_interpolate", "attrInterpolate", "name", "i", "t", "attrInterpolateNS", "fullname", "attrTweenNS", "value", "t0", "i0", "tween", "attrTween", "attrTween_default", "key", "namespace_default", "init_attrTween", "__esmMin", "init_src", "delayFunction", "id", "value", "init", "delayConstant", "delay_default", "get", "init_delay", "__esmMin", "init_schedule", "durationFunction", "id", "value", "set", "durationConstant", "duration_default", "get", "init_duration", "__esmMin", "init_schedule", "easeConstant", "id", "value", "set", "ease_default", "get", "init_ease", "__esmMin", "init_schedule", "easeVarying", "id", "value", "v", "set", "easeVarying_default", "init_easeVarying", "__esmMin", "init_schedule", "filter_default", "match", "matcher_default", "groups", "m", "subgroups", "j", "group", "n", "subgroup", "node", "i", "Transition", "init_filter", "__esmMin", "init_src", "init_transition", "merge_default", "transition", "groups0", "groups1", "m0", "m1", "m", "merges", "j", "group0", "group1", "n", "merge", "node", "i", "Transition", "init_merge", "__esmMin", "init_transition", "start", "name", "i", "onFunction", "id", "listener", "on0", "on1", "sit", "init", "set", "schedule", "on", "on_default", "get", "init_on", "__esmMin", "init_schedule", "removeFunction", "id", "parent", "i", "remove_default", "init_remove", "__esmMin", "select_default", "select", "name", "id", "selector_default", "groups", "m", "subgroups", "j", "group", "n", "subgroup", "node", "subnode", "i", "schedule_default", "get", "Transition", "init_select", "__esmMin", "init_src", "init_transition", "init_schedule", "selectAll_default", "select", "name", "id", "selectorAll_default", "groups", "m", "subgroups", "parents", "j", "group", "n", "node", "i", "children", "child", "inherit", "get", "k", "l", "schedule_default", "Transition", "init_selectAll", "__esmMin", "init_src", "init_transition", "init_schedule", "selection_default", "Selection", "init_selection", "__esmMin", "init_src", "styleNull", "name", "interpolate", "string00", "string10", "interpolate0", "string0", "styleValue", "string1", "styleRemove", "styleConstant", "value1", "styleFunction", "value", "styleMaybeRemove", "id", "on0", "on1", "listener0", "key", "event", "remove", "schedule", "set", "on", "listener", "style_default", "priority", "i", "interpolateTransformCss", "interpolate_default", "tweenValue", "init_style", "__esmMin", "init_src", "init_schedule", "init_tween", "init_interpolate", "styleInterpolate", "name", "i", "priority", "t", "styleTween", "value", "i0", "tween", "styleTween_default", "key", "init_styleTween", "__esmMin", "textConstant", "value", "textFunction", "value1", "text_default", "tweenValue", "init_text", "__esmMin", "init_tween", "textInterpolate", "i", "textTween", "value", "t0", "i0", "tween", "textTween_default", "key", "init_textTween", "__esmMin", "transition_default", "name", "id0", "id1", "newId", "groups", "m", "j", "group", "n", "node", "i", "inherit", "get", "schedule_default", "Transition", "init_transition", "__esmMin", "init_schedule", "end_default", "on0", "on1", "that", "id", "size", "resolve", "reject", "cancel", "end", "schedule", "set", "on", "init_end", "__esmMin", "init_schedule", "Transition", "groups", "parents", "name", "id", "transition", "selection_default", "newId", "selection_prototype", "init_transition", "__esmMin", "init_src", "init_attr", "init_attrTween", "init_delay", "init_duration", "init_ease", "init_easeVarying", "init_filter", "init_merge", "init_on", "init_remove", "init_select", "init_selectAll", "init_selection", "init_style", "init_styleTween", "init_text", "init_textTween", "init_tween", "init_end", "select_default", "selectAll_default", "filter_default", "merge_default", "transition_default", "on_default", "attr_default", "attrTween_default", "style_default", "styleTween_default", "text_default", "textTween_default", "remove_default", "tween_default", "delay_default", "duration_default", "ease_default", "easeVarying_default", "end_default", "cubicInOut", "t", "init_cubic", "__esmMin", "init_src", "__esmMin", "init_cubic", "inherit", "node", "id", "timing", "transition_default", "name", "Transition", "newId", "defaultTiming", "now", "groups", "m", "j", "group", "n", "i", "schedule_default", "init_transition", "__esmMin", "init_schedule", "init_src", "cubicInOut", "init_selection", "__esmMin", "init_src", "init_interrupt", "init_transition", "selection_default", "interrupt_default", "transition_default", "init_src", "__esmMin", "init_selection", "init_interrupt", "constant_default", "init_constant", "__esmMin", "x", "ZoomEvent", "type", "sourceEvent", "target", "transform", "dispatch", "init_event", "__esmMin", "Transform", "k", "x", "y", "transform", "node", "identity", "init_transform", "__esmMin", "point", "location", "nopropagation", "event", "noevent_default", "init_noevent", "__esmMin", "defaultFilter", "event", "defaultExtent", "defaultTransform", "identity", "defaultWheelDelta", "defaultTouchable", "defaultConstrain", "transform", "extent", "translateExtent", "dx0", "dx1", "dy0", "dy1", "zoom_default", "filter", "constrain", "wheelDelta", "touchable", "scaleExtent", "duration", "interpolate", "listeners", "dispatch_default", "touchstarting", "touchfirst", "touchending", "touchDelay", "wheelDelay", "clickDistance2", "tapDistance", "zoom", "selection", "wheeled", "mousedowned", "dblclicked", "touchstarted", "touchmoved", "touchended", "collection", "point", "schedule", "gesture", "k", "p", "k0", "k1", "e", "t0", "p0", "centroid", "p1", "translate", "scale", "x", "y", "t", "Transform", "transition", "that", "args", "g", "w", "a", "b", "i", "l", "clean", "Gesture", "key", "type", "d", "select_default", "ZoomEvent", "pointer_default", "interrupt_default", "noevent_default", "wheelidled", "currentTarget", "v", "mousemoved", "mouseupped", "x0", "y0", "nodrag_default", "nopropagation", "dx", "dy", "yesdrag", "t1", "touches", "n", "started", "l0", "l1", "dp", "dl", "_", "constant_default", "value", "init_zoom", "__esmMin", "init_src", "init_constant", "init_event", "init_transform", "init_noevent", "src_exports", "__export", "Transform", "zoom_default", "identity", "transform", "init_src", "__esmMin", "init_zoom", "init_transform", "require_events", "__commonJSMin", "exports", "module", "R", "ReflectApply", "target", "receiver", "args", "ReflectOwnKeys", "ProcessEmitWarning", "warning", "NumberIsNaN", "value", "EventEmitter", "once", "defaultMaxListeners", "checkListener", "listener", "arg", "n", "_getMaxListeners", "that", "type", "i", "doError", "events", "er", "err", "handler", "len", "listeners", "arrayClone", "_addListener", "prepend", "m", "existing", "w", "onceWrapper", "_onceWrap", "state", "wrapped", "list", "position", "originalListener", "spliceOne", "keys", "key", "_listeners", "unwrap", "evlistener", "unwrapListeners", "emitter", "listenerCount", "arr", "copy", "index", "ret", "name", "resolve", "reject", "errorListener", "resolver", "eventTargetAgnosticAddListener", "addErrorHandlerIfEventEmitter", "flags", "wrapListener", "d3_shape_1", "d3_selection_1", "annotations", "options", "xScale", "yScale", "line", "d", "parentSelection", "selection", "enter", "yRange", "xRange", "path", "pathEnter", "text", "textEnter", "exports", "d3_color_1", "Globals", "v", "registerGraphType", "graphType", "graphTypeBulder", "exports", "globals_1", "__importDefault", "utils", "lo", "hi", "n", "step", "_", "i", "x", "v", "axis", "range", "config", "option", "me", "value", "vMin", "vMax", "data", "index", "indexModLenColor", "exports", "require_token_type", "__commonJSMin", "exports", "module", "require_Lexer", "__commonJSMin", "exports", "module", "tokenType", "ESCAPES", "DELIMITERS", "isDigit", "c", "isIdentifier", "isWhitespace", "isDelimiter", "str", "isQuote", "Lexer", "message", "index", "error", "text", "c2", "c3", "nth", "current", "number", "quote", "string", "escape", "hex", "replacement", "require_Node", "__commonJSMin", "exports", "module", "Node", "require_ConstantNode", "__commonJSMin", "exports", "module", "Node", "SUPPORTED_TYPES", "ConstantNode", "value", "type", "require_OperatorNode", "__commonJSMin", "exports", "module", "Node", "OperatorNode", "op", "args", "require_UnaryNode", "__commonJSMin", "exports", "module", "Node", "UnaryNode", "op", "argument", "require_SymbolNode", "__commonJSMin", "exports", "module", "Node", "SymbolNode", "name", "require_FunctionNode", "__commonJSMin", "exports", "module", "Node", "FunctionNode", "name", "args", "require_ArrayNode", "__commonJSMin", "exports", "module", "Node", "ArrayNode", "nodes", "require_ConditionalNode", "__commonJSMin", "exports", "module", "Node", "ConditionalNode", "predicate", "truthy", "falsy", "require_AssignmentNode", "__commonJSMin", "exports", "module", "Node", "AssignmentNode", "name", "expr", "require_BlockNode", "__commonJSMin", "exports", "module", "Node", "BlockNode", "blocks", "require_Parser", "__commonJSMin", "exports", "module", "tokenType", "Lexer", "ConstantNode", "OperatorNode", "UnaryNode", "SymbolNode", "FunctionNode", "ArrayNode", "ConditionalNode", "AssignmentNode", "BlockNode", "Parser", "first", "i", "text", "blocks", "left", "predicate", "truthy", "falsy", "op", "right", "current", "symbol", "node", "symbolToken", "name", "params", "token", "require_node", "__commonJSMin", "exports", "module", "require_mr_parser", "__commonJSMin", "exports", "module", "require_extend", "__commonJSMin", "exports", "module", "hasOwn", "toStr", "defineProperty", "gOPD", "isArray", "arr", "isPlainObject", "obj", "hasOwnConstructor", "hasIsPrototypeOf", "key", "setProperty", "target", "options", "getProperty", "name", "extend", "src", "copy", "copyIsArray", "clone", "i", "length", "deep", "require_ArrayNode", "__commonJSMin", "exports", "module", "node", "self", "arr", "el", "arrString", "require_AssignmentNode", "__commonJSMin", "exports", "module", "node", "require_ConditionalNode", "__commonJSMin", "exports", "module", "node", "condition", "trueExpr", "falseExpr", "require_ConstantNode", "__commonJSMin", "exports", "module", "node", "require_FunctionNode", "__commonJSMin", "exports", "module", "SymbolNode", "functionProxy", "node", "self", "method", "args", "arg", "require_Operators", "__commonJSMin", "exports", "module", "require_OperatorNode", "__commonJSMin", "exports", "module", "Operators", "node", "namedOperator", "require_SymbolNode", "__commonJSMin", "exports", "module", "node", "id", "require_UnaryOperators", "__commonJSMin", "exports", "module", "require_UnaryNode", "__commonJSMin", "exports", "module", "UnaryOperators", "node", "namedOperator", "require_Interpreter", "__commonJSMin", "exports", "module", "extend", "types", "Interpreter", "owner", "options", "node", "test", "fn", "oldRaw", "require_CodeGenerator", "__commonJSMin", "exports", "module", "Parser", "Interpreter", "extend", "CodeGenerator", "options", "defs", "namespace", "symbol", "scope", "ns", "fn", "name", "defsCode", "code", "factoryCode", "factory", "self", "program", "statement", "require_math_codegen", "__commonJSMin", "exports", "module", "require_adapter", "__commonJSMin", "exports", "module", "math", "a", "b", "res", "i", "root", "inv", "x", "require_eval", "__commonJSMin", "exports", "module", "CodeGenerator", "math", "processScope", "scope", "k", "value", "expression", "require_built_in_math_eval", "__commonJSMin", "exports", "module", "require_ArrayNode", "__commonJSMin", "exports", "module", "node", "self", "arr", "el", "arrString", "require_AssignmentNode", "__commonJSMin", "exports", "module", "node", "require_ConditionalNode", "__commonJSMin", "exports", "module", "node", "condition", "trueExpr", "falseExpr", "require_ConstantNode", "__commonJSMin", "exports", "module", "node", "require_FunctionNode", "__commonJSMin", "exports", "module", "SymbolNode", "functionProxy", "node", "self", "method", "args", "arg", "require_Operators", "__commonJSMin", "exports", "module", "require_OperatorNode", "__commonJSMin", "exports", "module", "Operators", "node", "namedOperator", "require_SymbolNode", "__commonJSMin", "exports", "module", "node", "id", "require_UnaryOperators", "__commonJSMin", "exports", "module", "require_UnaryNode", "__commonJSMin", "exports", "module", "UnaryOperators", "node", "namedOperator", "require_Interpreter", "__commonJSMin", "exports", "module", "extend", "types", "Interpreter", "owner", "options", "node", "test", "fn", "oldRaw", "require_CodeGenerator", "__commonJSMin", "exports", "module", "Parser", "Interpreter", "extend", "CodeGenerator", "options", "defs", "namespace", "self", "symbol", "scope", "ns", "applyFactoryIfNeeded", "value", "fn", "name", "defsCode", "code", "factoryCode", "factory", "program", "statement", "require_math_codegen", "__commonJSMin", "exports", "module", "isInterval", "x", "exports", "isEmpty", "i", "isWhole", "isSingleton", "zeroIn", "hasValue", "value", "hasInterval", "y", "intervalsOverlap", "require_double", "__commonJSMin", "exports", "module", "hasTypedArrays", "DOUBLE_VIEW", "UINT_VIEW", "toDoubleLE", "lo", "hi", "lowUintLE", "highUintLE", "n", "toDoubleBE", "lowUintBE", "highUintBE", "toDouble", "buffer", "lowUint", "highUint", "b", "require_nextafter", "__commonJSMin", "exports", "module", "doubleBits", "SMALLEST_DENORM", "UINT_MAX", "nextafter", "x", "y", "hi", "lo", "nextafter_1", "__importDefault", "identity", "v", "prev", "next", "toInteger", "x", "cache", "round", "y", "power", "exports", "utils", "__importStar", "round_1", "__importDefault", "_Interval", "__Interval", "lo", "hi", "Interval", "v", "exports", "bindNew", "Class", "_Class", "len", "rest", "key", "interval_1", "round_1", "__importDefault", "piLow", "piHigh", "constants", "exports", "utils", "__importStar", "equal", "x", "y", "exports", "EPS", "assert", "a", "message", "assertEps", "b", "almostEqual", "assertIncludes", "notEqual", "lessThan", "greaterThan", "lessEqualThan", "greaterEqualThan", "interval_1", "round_1", "__importDefault", "utils", "__importStar", "constants_1", "nonZero", "x", "y", "xl", "xh", "yl", "yh", "out", "exports", "positive", "v", "negative", "zero", "interval_1", "round_1", "__importDefault", "constants_1", "utils", "__importStar", "division", "add", "x", "y", "exports", "subtract", "multiply", "xl", "xh", "yl", "yh", "out", "divide", "positive", "negative", "interval_1", "round_1", "__importDefault", "constants_1", "utils", "__importStar", "arithmetic", "fmod", "x", "y", "yb", "exports", "multiplicativeInverse", "pow", "power", "yl", "yh", "sqrt", "nthRoot", "n", "yp", "yn", "interval_1", "round_1", "__importDefault", "constants_1", "utils", "__importStar", "arithmetic", "exp", "x", "exports", "log", "l", "log10", "log2", "hull", "y", "badX", "badY", "intersection", "lo", "hi", "union", "difference", "width", "abs", "max", "min", "clone", "require_trigonometric", "__commonJSMin", "exports", "interval_1", "round_1", "__importDefault", "constants_1", "utils", "__importStar", "arithmetic", "algebra", "misc", "onlyInfinity", "x", "handleNegative", "interval", "n", "cos", "cache", "pi2", "t", "cosv", "lo", "hi", "rlo", "rhi", "sin", "tan", "pi", "asin", "acos", "atan", "sinh", "cosh", "tanh", "interval_1", "exports", "round_1", "__importDefault", "constants_1", "relational", "__importStar", "arithmetic", "algebra", "trigonometric", "misc", "utils", "MixedInterval", "__exportStar", "require_adapter", "__commonJSMin", "exports", "module", "ns", "a", "b", "require_policies", "__commonJSMin", "exports", "module", "Interval", "require_eval", "__commonJSMin", "exports", "module", "CodeGenerator", "Interval", "processScope", "scope", "k", "value", "expression", "require_interval_arithmetic_eval", "__commonJSMin", "exports", "module", "built_in_math_eval_1", "__importDefault", "interval_arithmetic_eval_1", "samplers", "getMathJS", "mathJS", "generateEvaluator", "samplerName", "doCompile", "expression", "compiled", "compileIfPossible", "meta", "property", "hiddenProperty", "hiddenCompiled", "getCompiledExpression", "evaluate", "variables", "builtIn", "exports", "interval", "d3_shape_1", "d3_selection_1", "utils_1", "__importDefault", "globals_1", "eval_1", "mouseTip", "config", "x", "y", "MARGIN", "line", "d", "lineGenerator", "el", "data", "tipInnerJoin", "tipInnerEnter", "tip", "selection", "join", "tipEnter", "coordinates", "i", "minDist", "closestIndex", "meta", "xScale", "yScale", "width", "height", "x0", "y0", "range", "candidateY", "tDist", "clampX", "clampY", "color", "option", "exports", "interval_arithmetic_eval_1", "__importStar", "eval_1", "utils_1", "__importDefault", "interval1d", "samplerParams", "xCoords", "xScale", "yScale", "yMin", "yMax", "samples", "i", "x", "y", "prev", "next", "rectEps", "smallRect", "quadTree", "d", "sample", "midX", "midY", "east", "west", "north", "south", "interval2d", "xDomain", "yDomain", "sampler", "fnTypes", "exports", "utils_1", "__importDefault", "eval_1", "checkAsymptote", "d0", "d1", "d", "sign", "level", "n", "x0", "x1", "samples", "oldY", "oldX", "i", "x", "y", "deltaY", "split", "data", "yScale", "oldSign", "evalResult", "yMin", "yMax", "evalGroup", "deltaX", "yOld", "newSign", "check", "linear", "samplerParams", "allX", "yDomain", "parametric", "parametricRange", "tCoords", "t", "polar", "polarRange", "thetaSamples", "theta", "r", "points", "vector", "sampleParams", "sampler", "fnTypes", "exports", "globals_1", "__importDefault", "interval_1", "builtIn_1", "computeEndpoints", "scale", "d", "range", "start", "end", "evaluate", "chart", "samplerFn", "nSamples", "data", "exports", "d3_selection_1", "d3_shape_1", "utils_1", "__importDefault", "evaluate_1", "polyline", "chart", "plotLine", "selection", "d", "el", "index", "evaluatedData", "color", "innerSelection", "yRange", "yMax", "yMin", "diff", "y", "line", "area", "cls", "innerSelectionEnter", "path", "pathD", "k", "val", "exports", "d3_selection_1", "evaluate_1", "__importDefault", "utils_1", "interval", "chart", "minWidthHeight", "xScale", "yScale", "clampRange", "vLo", "vHi", "gLo", "gHi", "t", "hi", "lo", "line", "points", "closed", "path", "range", "minY", "maxY", "i", "length", "x", "y", "yLo", "yHi", "moveX", "viewportY", "plotLine", "selection", "d", "el", "index", "evaluatedData", "innerSelection", "cls", "innerSelectionEnter", "k", "val", "exports", "d3_selection_1", "d3_color_1", "utils_1", "__importDefault", "evaluate_1", "Scatter", "chart", "xScale", "yScale", "scatter", "selection", "d", "i", "j", "index", "color", "evaluatedData", "joined", "innerSelection", "cls", "innerSelectionEnter", "k", "val", "exports", "d3_selection_1", "d3_color_1", "utils_1", "__importDefault", "Text", "chart", "xScale", "yScale", "text", "selection", "d", "innerSelection", "innerSelectionEnter", "color", "k", "exports", "polyline_1", "__importDefault", "exports", "interval_1", "scatter_1", "text_1", "datumDefaults", "d", "exports", "d3_selection_1", "graph_types_1", "eval_1", "datum_defaults_1", "__importDefault", "utils_1", "derivative", "chart", "derivativeDatum", "computeLine", "d", "x0", "checkAutoUpdate", "self", "x", "selection", "el", "data", "innerSelection", "innerSelectionEnter", "exports", "d3_selection_1", "eval_1", "datum_defaults_1", "__importDefault", "graph_types_1", "utils_1", "secant", "chart", "secantDefaults", "computeSlope", "scope", "updateLine", "d", "x0", "x1", "setFn", "setMouseListener", "secantObject", "self", "x", "computeLines", "data", "i", "selection", "el", "innerSelection", "innerSelectionEnter", "exports", "d3_selection_1", "derivative_1", "__importDefault", "secant_1", "helpers", "chart", "helper", "selection", "el", "exports", "d3_shape_1", "d3_format_1", "d3_scale_1", "d3_axis_1", "d3_zoom_1", "d3_selection_1", "d3_interpolate_1", "events_1", "__importDefault", "annotations_1", "tip_1", "helpers_1", "datum_defaults_1", "globals_1", "getD3Scale", "type", "Chart", "_Chart", "options", "n", "letter", "cachedInstance", "cachedNode", "margin", "self", "integerFormat", "formatter", "d", "computeYScale", "xScale", "xDiff", "xDomain", "axis", "yDomain", "yLimit", "root", "tip", "selection", "canvas", "id", "defs", "canvasEnter", "xLabel", "xLabelEnter", "yLabel", "yLabelEnter", "content", "contentEnter", "yOrigin", "yOriginEnter", "xOrigin", "xOriginEnter", "graphs", "graphsEnter", "index", "ev", "event", "plugins", "plugin", "i", "instance", "yMin", "yMax", "yMid", "yTranslation", "xMin", "xMax", "xMid", "xTranslation", "prevInstance", "events", "coordinates", "transform", "xScaleClone", "yScaleClone", "x", "y", "meta", "title", "format", "text", "all", "mouse", "graph", "e", "args", "localArgs", "exports", "require_types", "__commonJSMin", "exports", "chart_1", "exports", "globals_1", "__importStar", "graph_types_1", "$eval", "functionPlot", "options", "instance", "__exportStar", "eval_1", "graph_types_2", "$", "selector", "$all", "store", "key", "value", "app", "createElement", "tag", "attrs", "children", "element", "name", "child", "childElement", "createElement$1", "getAttrs", "element", "attrs", "attr", "getClassNames", "combineClassNames", "arrayOfClassnames", "classItem", "value", "index", "self", "toPascalCase", "string", "g0", "g1", "g2", "replaceElement", "nameAttr", "icons", "iconName", "ComponentName", "iconNode", "elementAttrs", "tag", "iconAttributes", "children", "iconAttrs", "classNames", "svgElement", "createElement$1", "defaultAttributes", "ArrowUpDown", "defaultAttributes", "Braces", "defaultAttributes", "CircleAlert", "defaultAttributes", "Circle", "defaultAttributes", "Copy", "defaultAttributes", "CornerDownRight", "defaultAttributes", "Dot", "defaultAttributes", "Download", "defaultAttributes", "EllipsisVertical", "defaultAttributes", "Eraser", "defaultAttributes", "Info", "defaultAttributes", "ListRestart", "defaultAttributes", "Palette", "defaultAttributes", "PanelLeftClose", "defaultAttributes", "PanelLeft", "defaultAttributes", "Plus", "defaultAttributes", "Printer", "defaultAttributes", "RefreshCcw", "defaultAttributes", "RotateCcw", "defaultAttributes", "Scaling", "defaultAttributes", "Settings", "defaultAttributes", "Trash", "defaultAttributes", "Upload", "defaultAttributes", "createIcons", "icons", "nameAttr", "attrs", "elementsToReplace", "element", "replaceElement", "deprecatedElements", "icons", "CircleAlert", "ArrowUpDown", "Braces", "Circle", "Copy", "CornerDownRight", "Dot", "Download", "EllipsisVertical", "Eraser", "Info", "ListRestart", "Palette", "PanelLeft", "PanelLeftClose", "Plus", "Printer", "RefreshCcw", "RotateCcw", "Scaling", "Settings", "Trash", "Upload", "generateIcons", "createIcons", "import_uikit", "modal", "id", "UIkit", "showError", "title", "error", "$", "notify", "msg", "stat", "app", "confirm", "action", "yesAction", "event", "isMac", "isElectron", "getTheme", "app", "store", "checkLocale", "locale", "checkSize", "$", "toggleMinMax", "checkUpdates", "notify", "event", "status", "Coloris", "window", "document", "Math", "undefined", "ctx", "currentColor", "container", "picker", "colorArea", "colorMarker", "colorPreview", "colorValue", "clearButton", "closeButton", "hueSlider", "hueMarker", "alphaSlider", "alphaMarker", "currentEl", "currentFormat", "oldColor", "keyboardNav", "colorAreaDims", "settings", "instances", "currentInstanceId", "defaultInstance", "hasInstance", "configure", "options", "key", "bindFields", "wrapFields", "updatePickerPosition", "field", "getEl", "swatchesContainer", "swatches", "swatch", "i", "button", "defaultColor", "getColorFormatFromStr", "setColorFromStr", "labels", "update", "label", "openLabel", "swatchLabel", "setVirtualInstance", "selector", "removeVirtualInstance", "resetVirtualInstance", "attachVirtualInstance", "element", "unsupportedOptions", "option", "addListener", "openPicker", "updateColorPreview", "event", "getFocusableElements", "parent", "scrollY", "pickerWidth", "pickerHeight", "reposition", "parentStyle", "parentMarginTop", "parentBorderTop", "offset", "coords", "left", "top", "wrapColorField", "parentNode", "wrapper", "classes", "closePicker", "revert", "prevEl", "str", "rgba", "strToRGBA", "hsva", "RGBAtoHSVA", "updateMarkerA11yLabel", "updateColor", "format", "pickColor", "color", "setColorAtPosition", "x", "y", "HSVAtoRGBA", "saturation", "value", "getPointerPosition", "moveMarker", "pointer", "setMarkerPosition", "moveMarkerOnKeydown", "offsetX", "offsetY", "hex", "RGBAToHex", "opaqueHex", "RGBAToStr", "HSLAToStr", "HSVAtoHSLA", "setHue", "hue", "setAlpha", "alpha", "chroma", "hueBy60", "m", "index", "red", "green", "blue", "lightness", "xmax", "xmin", "regex", "match", "h", "R", "G", "B", "A", "hsla", "init", "target", "shiftKey", "focusables", "firstFocusable", "lastFocusable", "movements", "node", "id", "context", "type", "fn", "matches", "DOMReady", "args", "setColor", "methods", "_len", "_key", "_coloris", "_init", "_set", "_wrap", "_close", "_setInstance", "_removeInstance", "_updatePosition", "coloris_default", "import_deep_diff", "checkDefaultColors", "app", "store", "DeepDiff", "colors", "d", "checkColorChange", "$all", "picker", "isSame", "getTheme", "activePicker", "event", "coloris_default", "button", "$", "generateIcons", "appTheme", "colorSheet", "color", "modal", "confirm", "LuxonError", "InvalidDateTimeError", "reason", "InvalidIntervalError", "InvalidDurationError", "ConflictingSpecificationError", "InvalidUnitError", "unit", "InvalidArgumentError", "ZoneIsAbstractError", "n", "s", "l", "DATE_SHORT", "DATE_MED", "DATE_MED_WITH_WEEKDAY", "DATE_FULL", "DATE_HUGE", "TIME_SIMPLE", "TIME_WITH_SECONDS", "TIME_WITH_SHORT_OFFSET", "TIME_WITH_LONG_OFFSET", "TIME_24_SIMPLE", "TIME_24_WITH_SECONDS", "TIME_24_WITH_SHORT_OFFSET", "TIME_24_WITH_LONG_OFFSET", "DATETIME_SHORT", "DATETIME_SHORT_WITH_SECONDS", "DATETIME_MED", "DATETIME_MED_WITH_SECONDS", "DATETIME_MED_WITH_WEEKDAY", "DATETIME_FULL", "DATETIME_FULL_WITH_SECONDS", "DATETIME_HUGE", "DATETIME_HUGE_WITH_SECONDS", "Zone", "ZoneIsAbstractError", "ts", "opts", "format", "otherZone", "singleton", "SystemZone", "_SystemZone", "Zone", "ts", "format", "locale", "parseZoneInfo", "formatOffset", "otherZone", "dtfCache", "makeDTF", "zone", "typeToPos", "hackyOffset", "dtf", "date", "formatted", "parsed", "fMonth", "fDay", "fYear", "fadOrBc", "fHour", "fMinute", "fSecond", "partsOffset", "filled", "type", "value", "pos", "isUndefined", "ianaZoneCache", "IANAZone", "_IANAZone", "Zone", "name", "s", "ts", "format", "locale", "parseZoneInfo", "formatOffset", "year", "month", "day", "adOrBc", "hour", "minute", "second", "asUTC", "objToLocalTS", "asTS", "over", "otherZone", "intlLFCache", "getCachedLF", "locString", "opts", "key", "dtf", "intlDTCache", "getCachedDTF", "intlNumCache", "getCachedINF", "inf", "intlRelCache", "getCachedRTF", "base", "cacheKeyOpts", "sysLocaleCache", "systemLocale", "weekInfoCache", "getCachedWeekInfo", "data", "locale", "parseLocaleString", "localeStr", "xIndex", "uIndex", "options", "selectedStr", "smaller", "numberingSystem", "calendar", "intlConfigString", "outputCalendar", "mapMonths", "f", "ms", "i", "dt", "DateTime", "mapWeekdays", "listStuff", "loc", "length", "englishFn", "intlFn", "mode", "supportsFastNumbers", "PolyNumberFormatter", "intl", "forceSimple", "padTo", "floor", "otherOpts", "intlOpts", "fixed", "roundTo", "padStart", "PolyDateFormatter", "z", "gmtOffset", "offsetZ", "IANAZone", "value", "parts", "part", "offsetName", "PolyRelFormatter", "isEnglish", "hasRelative", "count", "unit", "formatRelativeTime", "fallbackWeekSettings", "Locale", "_Locale", "weekSettings", "defaultToEN", "specifiedLocale", "Settings", "localeR", "numberingSystemR", "outputCalendarR", "weekSettingsR", "validateWeekSettings", "numbering", "parsedLocale", "parsedNumberingSystem", "parsedOutputCalendar", "isActuallyEn", "hasNoWeirdness", "alts", "format", "months", "formatStr", "weekdays", "meridiems", "eras", "field", "df", "results", "matching", "m", "hasLocaleWeekInfo", "other", "singleton", "FixedOffsetZone", "_FixedOffsetZone", "Zone", "offset", "s", "signedOffset", "formatOffset", "ts", "format", "otherZone", "InvalidZone", "Zone", "zoneName", "normalizeZone", "input", "defaultZone", "offset", "isUndefined", "Zone", "isString", "lowered", "SystemZone", "FixedOffsetZone", "IANAZone", "isNumber", "InvalidZone", "numberingSystems", "numberingSystemsUTF16", "hanidecChars", "parseDigits", "str", "value", "i", "code", "key", "min", "max", "digitRegexCache", "resetDigitRegexCache", "digitRegex", "numberingSystem", "append", "ns", "now", "defaultZone", "defaultLocale", "defaultNumberingSystem", "defaultOutputCalendar", "twoDigitCutoffYear", "throwOnInvalid", "defaultWeekSettings", "Settings", "n", "zone", "normalizeZone", "SystemZone", "locale", "numberingSystem", "outputCalendar", "weekSettings", "validateWeekSettings", "cutoffYear", "Locale", "IANAZone", "DateTime", "resetDigitRegexCache", "Invalid", "reason", "explanation", "nonLeapLadder", "leapLadder", "unitOutOfRange", "unit", "value", "Invalid", "dayOfWeek", "year", "month", "day", "d", "js", "computeOrdinal", "isLeapYear", "uncomputeOrdinal", "ordinal", "table", "month0", "i", "isoWeekdayToLocal", "isoWeekday", "startOfWeek", "gregorianToWeek", "gregObj", "minDaysInFirstWeek", "weekday", "weekNumber", "weekYear", "weeksInWeekYear", "timeObject", "weekToGregorian", "weekData", "weekdayOfJan4", "yearInDays", "daysInYear", "gregorianToOrdinal", "gregData", "ordinalToGregorian", "ordinalData", "usesLocalWeekValues", "obj", "loc", "isUndefined", "ConflictingSpecificationError", "hasInvalidWeekData", "validYear", "isInteger", "validWeek", "integerBetween", "validWeekday", "hasInvalidOrdinalData", "validOrdinal", "hasInvalidGregorianData", "validMonth", "validDay", "daysInMonth", "hasInvalidTimeData", "hour", "minute", "second", "millisecond", "validHour", "validMinute", "validSecond", "validMillisecond", "isUndefined", "o", "isNumber", "isInteger", "isString", "isDate", "hasRelative", "hasLocaleWeekInfo", "maybeArray", "thing", "bestBy", "arr", "by", "compare", "best", "next", "pair", "pick", "obj", "keys", "a", "k", "hasOwnProperty", "prop", "validateWeekSettings", "settings", "InvalidArgumentError", "integerBetween", "v", "bottom", "top", "floorMod", "x", "n", "padStart", "input", "isNeg", "padded", "parseInteger", "string", "parseFloating", "parseMillis", "fraction", "f", "roundTo", "number", "digits", "towardZero", "factor", "isLeapYear", "year", "daysInYear", "daysInMonth", "month", "modMonth", "modYear", "objToLocalTS", "d", "firstWeekOffset", "minDaysInFirstWeek", "startOfWeek", "isoWeekdayToLocal", "dayOfWeek", "weeksInWeekYear", "weekYear", "weekOffset", "weekOffsetNext", "untruncateYear", "Settings", "parseZoneInfo", "ts", "offsetFormat", "locale", "timeZone", "date", "intlOpts", "modified", "parsed", "m", "signedOffset", "offHourStr", "offMinuteStr", "offHour", "offMin", "offMinSigned", "asNumber", "value", "numericValue", "normalizeObject", "normalizer", "normalized", "u", "formatOffset", "offset", "format", "hours", "minutes", "sign", "timeObject", "monthsLong", "monthsShort", "monthsNarrow", "months", "length", "weekdaysLong", "weekdaysShort", "weekdaysNarrow", "weekdays", "meridiems", "erasLong", "erasShort", "erasNarrow", "eras", "meridiemForDateTime", "dt", "weekdayForDateTime", "monthForDateTime", "eraForDateTime", "formatRelativeTime", "unit", "count", "numeric", "narrow", "units", "lastable", "isDay", "isInPast", "fmtValue", "singular", "lilUnits", "fmtUnit", "stringifyTokens", "splits", "tokenToString", "s", "token", "macroTokenToFormatOpts", "DATE_SHORT", "DATE_MED", "DATE_FULL", "DATE_HUGE", "TIME_SIMPLE", "TIME_WITH_SECONDS", "TIME_WITH_SHORT_OFFSET", "TIME_WITH_LONG_OFFSET", "TIME_24_SIMPLE", "TIME_24_WITH_SECONDS", "TIME_24_WITH_SHORT_OFFSET", "TIME_24_WITH_LONG_OFFSET", "DATETIME_SHORT", "DATETIME_MED", "DATETIME_FULL", "DATETIME_HUGE", "DATETIME_SHORT_WITH_SECONDS", "DATETIME_MED_WITH_SECONDS", "DATETIME_FULL_WITH_SECONDS", "DATETIME_HUGE_WITH_SECONDS", "Formatter", "_Formatter", "locale", "opts", "fmt", "current", "currentFull", "bracketed", "i", "c", "formatOpts", "dt", "interval", "n", "p", "padStart", "knownEnglish", "useDateTimeFormatter", "string", "extract", "formatOffset", "meridiem", "meridiemForDateTime", "month", "length", "standalone", "monthForDateTime", "weekday", "weekdayForDateTime", "maybeMacro", "era", "eraForDateTime", "dur", "tokenToField", "lildur", "mapped", "tokens", "realTokens", "found", "literal", "val", "collapsed", "t", "ianaRegex", "combineRegexes", "regexes", "full", "f", "r", "combineExtractors", "extractors", "m", "mergedVals", "mergedZone", "cursor", "ex", "val", "zone", "next", "parse", "s", "patterns", "regex", "extractor", "simpleParse", "keys", "match", "ret", "parseInteger", "offsetRegex", "isoExtendedZone", "isoTimeBaseRegex", "isoTimeRegex", "isoTimeExtensionRegex", "isoYmdRegex", "isoWeekRegex", "isoOrdinalRegex", "extractISOWeekData", "extractISOOrdinalData", "sqlYmdRegex", "sqlTimeRegex", "sqlTimeExtensionRegex", "int", "pos", "fallback", "isUndefined", "extractISOYmd", "extractISOTime", "parseMillis", "extractISOOffset", "local", "fullOffset", "signedOffset", "FixedOffsetZone", "extractIANAZone", "IANAZone", "isoTimeOnly", "isoDuration", "extractISODuration", "yearStr", "monthStr", "weekStr", "dayStr", "hourStr", "minuteStr", "secondStr", "millisecondsStr", "hasNegativePrefix", "negativeSeconds", "maybeNegate", "num", "force", "parseFloating", "obsOffsets", "fromStrings", "weekdayStr", "result", "untruncateYear", "monthsShort", "weekdaysLong", "weekdaysShort", "rfc2822", "extractRFC2822", "obsOffset", "milOffset", "offHourStr", "offMinuteStr", "offset", "preprocessRFC2822", "rfc1123", "rfc850", "ascii", "extractRFC1123Or850", "extractASCII", "isoYmdWithTimeExtensionRegex", "isoWeekWithTimeExtensionRegex", "isoOrdinalWithTimeExtensionRegex", "isoTimeCombinedRegex", "extractISOYmdTimeAndOffset", "extractISOWeekTimeAndOffset", "extractISOOrdinalDateAndTime", "extractISOTimeAndOffset", "parseISODate", "parseRFC2822Date", "parseHTTPDate", "parseISODuration", "extractISOTimeOnly", "parseISOTimeOnly", "sqlYmdWithTimeExtensionRegex", "sqlTimeCombinedRegex", "extractISOTimeOffsetAndIANAZone", "parseSQL", "INVALID", "lowOrderMatrix", "casualMatrix", "daysInYearAccurate", "daysInMonthAccurate", "accurateMatrix", "orderedUnits", "reverseUnits", "clone", "dur", "alts", "clear", "conf", "Duration", "durationToMillis", "matrix", "vals", "sum", "unit", "normalizeValues", "factor", "previous", "current", "isUndefined", "previousVal", "conv", "rollUp", "fraction", "removeZeroes", "newVals", "key", "value", "_Duration", "config", "accurate", "Locale", "count", "opts", "obj", "InvalidArgumentError", "normalizeObject", "durationLike", "isNumber", "text", "parsed", "parseISODuration", "parseISOTimeOnly", "reason", "explanation", "invalid", "Invalid", "Settings", "InvalidDurationError", "normalized", "InvalidUnitError", "o", "fmt", "fmtOpts", "Formatter", "l", "val", "s", "roundTo", "millis", "DateTime", "duration", "result", "k", "hasOwnProperty", "fn", "asNumber", "values", "mixed", "locale", "numberingSystem", "conversionAccuracy", "units", "u", "built", "accumulated", "lastUnit", "own", "ak", "i", "negated", "other", "eq", "v1", "v2", "INVALID", "validateStartEnd", "start", "end", "Interval", "_Interval", "config", "reason", "explanation", "InvalidArgumentError", "invalid", "Invalid", "Settings", "InvalidIntervalError", "builtStart", "friendlyDateTime", "builtEnd", "validateError", "duration", "dur", "Duration", "dt", "text", "opts", "s", "e", "startIsValid", "DateTime", "endIsValid", "o", "unit", "dateTime", "dateTimes", "sorted", "d", "a", "b", "results", "i", "added", "next", "idx", "x", "numberOfParts", "other", "intervals", "found", "final", "sofar", "current", "item", "currentCount", "ends", "flattened", "arr", "formatOpts", "DATE_SHORT", "Formatter", "dateFormat", "separator", "mapFn", "Info", "zone", "Settings", "proto", "DateTime", "IANAZone", "input", "normalizeZone", "locale", "locObj", "Locale", "length", "numberingSystem", "outputCalendar", "hasRelative", "hasLocaleWeekInfo", "dayDiff", "earlier", "later", "utcDayStart", "dt", "ms", "Duration", "highOrderDiffs", "cursor", "units", "differs", "b", "days", "results", "lowestOrder", "highWater", "unit", "differ", "diff_default", "opts", "remainingMillis", "lowerOrderUnits", "u", "duration", "MISSING_FTP", "intUnit", "regex", "post", "i", "s", "parseDigits", "NBSP", "spaceOrNBSP", "spaceOrNBSPRegExp", "fixListRegex", "stripInsensitivities", "oneOf", "strings", "startIndex", "offset", "groups", "h", "m", "signedOffset", "simple", "escapeToken", "value", "unitForToken", "token", "loc", "one", "digitRegex", "two", "three", "four", "six", "oneOrTwo", "oneToThree", "oneToSix", "oneToNine", "twoToFour", "fourToSix", "literal", "t", "unit", "untruncateYear", "partTypeStyleToTokenVal", "tokenForPart", "part", "formatOpts", "resolvedOpts", "type", "isSpace", "style", "actualType", "val", "buildRegex", "units", "u", "f", "r", "match", "input", "handlers", "matches", "all", "matchIndex", "hasOwnProperty", "dateTimeFromMatches", "toField", "zone", "specificOffset", "isUndefined", "IANAZone", "FixedOffsetZone", "parseMillis", "k", "dummyDateTimeCache", "getDummyDateTime", "DateTime", "maybeExpandMacroToken", "locale", "Formatter", "tokens", "formatOptsToTokens", "expandMacroTokens", "TokenParser", "format", "regexString", "rawMatches", "result", "ConflictingSpecificationError", "explainFromTokens", "parseFromTokens", "invalidReason", "df", "parts", "p", "INVALID", "MAX_DATE", "unsupportedZone", "zone", "Invalid", "possiblyCachedWeekData", "dt", "gregorianToWeek", "possiblyCachedLocalWeekData", "clone", "inst", "alts", "current", "DateTime", "fixOffset", "localTS", "o", "tz", "utcGuess", "o2", "o3", "tsToObj", "ts", "offset", "d", "objToTS", "obj", "objToLocalTS", "adjustTime", "dur", "oPre", "year", "month", "c", "daysInMonth", "millisToAdd", "Duration", "parseDataToDateTime", "parsed", "parsedZone", "opts", "format", "text", "specificOffset", "setZone", "interpretationZone", "toTechFormat", "allowZ", "Formatter", "Locale", "toISODate", "extended", "longFormat", "padStart", "toISOTime", "suppressSeconds", "suppressMilliseconds", "includeOffset", "extendedZone", "defaultUnitValues", "defaultWeekUnitValues", "defaultOrdinalUnitValues", "orderedUnits", "orderedWeekUnits", "orderedOrdinalUnits", "normalizeUnit", "unit", "normalized", "InvalidUnitError", "normalizeUnitWithLocalWeeks", "guessOffsetForZone", "zoneOffsetGuessCache", "zoneOffsetTs", "Settings", "quickDT", "normalizeZone", "loc", "isUndefined", "u", "invalid", "hasInvalidGregorianData", "hasInvalidTimeData", "offsetProvis", "diffRelative", "start", "end", "round", "roundTo", "differ", "count", "lastOpts", "argList", "args", "_DateTime", "config", "ot", "isNumber", "day", "hour", "minute", "second", "millisecond", "FixedOffsetZone", "date", "options", "isDate", "zoneToUse", "milliseconds", "InvalidArgumentError", "seconds", "normalizeObject", "minDaysInFirstWeek", "startOfWeek", "usesLocalWeekValues", "tsNow", "containsOrdinal", "containsGregorYear", "containsGregorMD", "containsGregor", "definiteWeekDef", "ConflictingSpecificationError", "useWeekData", "units", "defaultValues", "objNow", "gregorianToOrdinal", "foundFirst", "v", "higherOrderInvalid", "hasInvalidWeekData", "hasInvalidOrdinalData", "gregorian", "weekToGregorian", "ordinalToGregorian", "tsFinal", "offsetFinal", "vals", "parseISODate", "parseRFC2822Date", "parseHTTPDate", "fmt", "locale", "numberingSystem", "localeToUse", "parseFromTokens", "parseSQL", "reason", "explanation", "InvalidDateTimeError", "formatOpts", "localeOpts", "tokenList", "formatOptsToTokens", "t", "expandMacroTokens", "Info", "dayMs", "minuteMs", "oEarlier", "oLater", "o1", "ts1", "ts2", "c1", "c2", "isLeapYear", "daysInYear", "weeksInWeekYear", "calendar", "keepLocalTime", "keepCalendarTime", "newTS", "offsetGuess", "asObj", "outputCalendar", "values", "settingWeekStuff", "mixed", "duration", "useLocaleWeeks", "normalizedUnit", "weekday", "q", "DATE_SHORT", "ext", "includePrefix", "includeZone", "includeOffsetSpace", "base", "otherDateTime", "durOpts", "maybeArray", "otherIsLater", "earlier", "later", "diffed", "diff_default", "Interval", "inputMs", "adjustedToZone", "other", "padding", "dateTimes", "bestBy", "i", "explainFromTokens", "TokenParser", "formatParser", "result", "invalidReason", "DATE_MED", "DATE_MED_WITH_WEEKDAY", "DATE_FULL", "DATE_HUGE", "TIME_SIMPLE", "TIME_WITH_SECONDS", "TIME_WITH_SHORT_OFFSET", "TIME_WITH_LONG_OFFSET", "TIME_24_SIMPLE", "TIME_24_WITH_SECONDS", "TIME_24_WITH_SHORT_OFFSET", "TIME_24_WITH_LONG_OFFSET", "DATETIME_SHORT", "DATETIME_SHORT_WITH_SECONDS", "DATETIME_MED", "DATETIME_MED_WITH_SECONDS", "DATETIME_MED_WITH_WEEKDAY", "DATETIME_FULL", "DATETIME_FULL_WITH_SECONDS", "DATETIME_HUGE", "DATETIME_HUGE_WITH_SECONDS", "friendlyDateTime", "dateTimeish", "_extends", "n", "e", "t", "r", "DEFAULT_CONFIG", "getSafeProperty", "object", "prop", "isSafeProperty", "isSafeMethod", "setSafeProperty", "value", "isPlainObject", "hasOwnProperty", "safeNativeProperties", "getSafeMethod", "method", "safeNativeMethods", "ObjectWrappingMap", "object", "key", "getSafeProperty", "value", "setSafeProperty", "isSafeProperty", "mapIterator", "callback", "PartitionedMap", "a", "b", "bKeys", "it", "n", "createEmptyMap", "createMap", "mapOrObject", "isMap", "isObject", "toObject", "map", "isNumber", "x", "isBigNumber", "isBigInt", "isComplex", "isFraction", "isUnit", "isString", "isArray", "isMatrix", "isCollection", "isDenseMatrix", "isSparseMatrix", "isRange", "isIndex", "isBoolean", "isResultSet", "isHelp", "isFunction", "isDate", "isRegExp", "isObject", "isMap", "object", "ObjectWrappingMap", "isPartitionedMap", "isObjectWrappingMap", "isNull", "isUndefined", "isAccessorNode", "isArrayNode", "isAssignmentNode", "isBlockNode", "isConditionalNode", "isConstantNode", "rule2Node", "node", "isOperatorNode", "isFunctionAssignmentNode", "isFunctionNode", "isIndexNode", "isNode", "isObjectNode", "isParenthesisNode", "isRangeNode", "isRelationalNode", "isSymbolNode", "isChain", "typeOf", "clone", "x", "type", "value", "isBigNumber", "isObject", "mapObject", "object", "callback", "key", "hasOwnProperty", "extend", "a", "b", "prop", "deepExtend", "deepStrictEqual", "i", "len", "deepFlatten", "nestedObject", "flattenedObject", "_deepFlatten", "lazy", "object", "prop", "valueResolver", "_uninitialized", "_value", "value", "hasOwnProperty", "object", "property", "isLegacyFactory", "pickShallow", "object", "properties", "copy", "i", "key", "value", "MATRIX_OPTIONS", "NUMBER_OPTIONS", "configFactory", "config", "emit", "_config", "options", "optionsFix", "clone", "prev", "validateOption", "deepExtend", "curr", "changes", "DEFAULT_CONFIG", "key", "name", "values", "value", "factoriesAny_exports", "__export", "createAbs", "createAccessorNode", "createAcos", "createAcosh", "createAcot", "createAcoth", "createAcsc", "createAcsch", "createAdd", "createAddScalar", "createAnd", "createAndTransform", "createApply", "createApplyTransform", "createArg", "createArrayNode", "createAsec", "createAsech", "createAsin", "createAsinh", "createAssignmentNode", "createAtan", "createAtan2", "createAtanh", "createAtomicMass", "createAvogadro", "createBellNumbers", "createBigNumberClass", "createBigint", "createBignumber", "createBin", "createBitAnd", "createBitAndTransform", "createBitNot", "createBitOr", "createBitOrTransform", "createBitXor", "createBlockNode", "createBohrMagneton", "createBohrRadius", "createBoltzmann", "createBoolean", "createCatalan", "createCbrt", "createCeil", "createChain", "createChainClass", "createClassicalElectronRadius", "createClone", "createColumn", "createColumnTransform", "createCombinations", "createCombinationsWithRep", "createCompare", "createCompareNatural", "createCompareText", "createCompile", "createComplex", "createComplexClass", "createComposition", "createConcat", "createConcatTransform", "createConditionalNode", "createConductanceQuantum", "createConj", "createConstantNode", "createCorr", "createCos", "createCosh", "createCot", "createCoth", "createCoulomb", "createCount", "createCreateUnit", "createCross", "createCsc", "createCsch", "createCtranspose", "createCube", "createCumSum", "createCumSumTransform", "createDeepEqual", "createDenseMatrixClass", "createDerivative", "createDet", "createDeuteronMass", "createDiag", "createDiff", "createDiffTransform", "createDistance", "createDivide", "createDivideScalar", "createDot", "createDotDivide", "createDotMultiply", "createDotPow", "createE", "createEfimovFactor", "createEigs", "createElectricConstant", "createElectronMass", "createElementaryCharge", "createEqual", "createEqualScalar", "createEqualText", "createErf", "createEvaluate", "createExp", "createExpm", "createExpm1", "createFactorial", "createFalse", "createFaraday", "createFermiCoupling", "createFft", "createFibonacciHeapClass", "createFilter", "createFilterTransform", "createFineStructure", "createFirstRadiation", "createFix", "createFlatten", "createFloor", "createForEach", "createForEachTransform", "createFormat", "createFraction", "createFractionClass", "createFreqz", "createFunctionAssignmentNode", "createFunctionNode", "createGamma", "createGasConstant", "createGcd", "createGetMatrixDataType", "createGravitationConstant", "createGravity", "createHartreeEnergy", "createHasNumericValue", "createHelp", "createHelpClass", "createHex", "createHypot", "createI", "createIdentity", "createIfft", "createIm", "createImmutableDenseMatrixClass", "createIndex", "createIndexClass", "createIndexNode", "createIndexTransform", "createInfinity", "createIntersect", "createInv", "createInverseConductanceQuantum", "createInvmod", "createIsInteger", "createIsNaN", "createIsNegative", "createIsNumeric", "createIsPositive", "createIsPrime", "createIsZero", "createKldivergence", "createKlitzing", "createKron", "createLN10", "createLN2", "createLOG10E", "createLOG2E", "createLarger", "createLargerEq", "createLcm", "createLeafCount", "createLeftShift", "createLgamma", "createLog", "createLog10", "createLog1p", "createLog2", "createLoschmidt", "createLsolve", "createLsolveAll", "createLup", "createLusolve", "createLyap", "createMad", "createMagneticConstant", "createMagneticFluxQuantum", "createMap", "createMapTransform", "createMatrix", "createMatrixClass", "createMatrixFromColumns", "createMatrixFromFunction", "createMatrixFromRows", "createMax", "createMaxTransform", "createMean", "createMeanTransform", "createMedian", "createMin", "createMinTransform", "createMod", "createMode", "createMolarMass", "createMolarMassC12", "createMolarPlanckConstant", "createMolarVolume", "createMultinomial", "createMultiply", "createMultiplyScalar", "createNaN", "createNeutronMass", "createNode", "createNorm", "createNot", "createNthRoot", "createNthRoots", "createNuclearMagneton", "createNull", "createNumber", "createNumeric", "createObjectNode", "createOct", "createOnes", "createOperatorNode", "createOr", "createOrTransform", "createParenthesisNode", "createParse", "createParser", "createParserClass", "createPartitionSelect", "createPermutations", "createPhi", "createPi", "createPickRandom", "createPinv", "createPlanckCharge", "createPlanckConstant", "createPlanckLength", "createPlanckMass", "createPlanckTemperature", "createPlanckTime", "createPolynomialRoot", "createPow", "createPrint", "createPrintTransform", "createProd", "createProtonMass", "createQr", "createQuantileSeq", "createQuantileSeqTransform", "createQuantumOfCirculation", "createRandom", "createRandomInt", "createRange", "createRangeClass", "createRangeNode", "createRangeTransform", "createRationalize", "createRe", "createReducedPlanckConstant", "createRelationalNode", "createReplacer", "createReshape", "createResize", "createResolve", "createResultSet", "createReviver", "createRightArithShift", "createRightLogShift", "createRotate", "createRotationMatrix", "createRound", "createRow", "createRowTransform", "createRydberg", "createSQRT1_2", "createSQRT2", "createSackurTetrode", "createSchur", "createSec", "createSech", "createSecondRadiation", "createSetCartesian", "createSetDifference", "createSetDistinct", "createSetIntersect", "createSetIsSubset", "createSetMultiplicity", "createSetPowerset", "createSetSize", "createSetSymDifference", "createSetUnion", "createSign", "createSimplify", "createSimplifyConstant", "createSimplifyCore", "createSin", "createSinh", "createSize", "createSlu", "createSmaller", "createSmallerEq", "createSolveODE", "createSort", "createSpaClass", "createSparse", "createSparseMatrixClass", "createSpeedOfLight", "createSplitUnit", "createSqrt", "createSqrtm", "createSquare", "createSqueeze", "createStd", "createStdTransform", "createStefanBoltzmann", "createStirlingS2", "createString", "createSubset", "createSubsetTransform", "createSubtract", "createSubtractScalar", "createSum", "createSumTransform", "createSylvester", "createSymbolNode", "createSymbolicEqual", "createTan", "createTanh", "createTau", "createThomsonCrossSection", "createTo", "createTrace", "createTranspose", "createTrue", "createTypeOf", "createTyped", "createUnaryMinus", "createUnaryPlus", "createUnequal", "createUnitClass", "createUnitFunction", "createUppercaseE", "createUppercasePi", "createUsolve", "createUsolveAll", "createVacuumImpedance", "createVariance", "createVarianceTransform", "createVersion", "createWeakMixingAngle", "createWienDisplacement", "createXgcd", "createXor", "createZeros", "createZeta", "createZpk2tf", "import_typed_function", "factory", "name", "dependencies", "create", "meta", "assertAndCreate", "scope", "deps", "pickShallow", "stripOptionalNotation", "assertDependencies", "isFactory", "obj", "assertDependencies", "name", "dependencies", "scope", "allDefined", "dependency", "isOptionalDependency", "missingDependencies", "d", "stripOptionalNotation", "isInteger", "value", "isIntegerStr", "str", "safeNumberType", "numberStr", "config", "sign", "x", "log2", "log10", "log1p", "cbrt", "negate", "result", "expm1", "formatNumberToBase", "n", "base", "size", "prefixes", "prefix", "suffix", "format", "options", "notation", "precision", "wordSize", "normalizeFormatOptions", "toFixed", "toExponential", "toEngineering", "toPrecision", "digits", "e", "isNumber", "isBigNumber", "isObject", "_toNumberOrThrow", "splitNumber", "match", "exponent", "dot", "coefficients", "zeros", "d", "split", "rounded", "roundDigits", "c", "newExp", "missingZeros", "i", "expDiff", "decimalIdx", "decimals", "decimalVal", "splitValue", "p", "pp", "first", "lowerExp", "_toNumberOrDefault", "upperExp", "removed", "length", "arr", "DBL_EPSILON", "nearlyEqual", "a", "b", "relTol", "absTol", "acosh", "asinh", "atanh", "cosh", "sinh", "tanh", "copysign", "y", "signx", "signy", "onError", "defaultValue", "_createTyped2", "typedFunction", "dependencies", "createTyped", "factory", "_ref", "BigNumber", "Complex", "DenseMatrix", "Fraction", "typed", "isNumber", "isComplex", "isBigNumber", "isBigInt", "isFraction", "isUnit", "isString", "isChain", "isArray", "isMatrix", "isDenseMatrix", "isSparseMatrix", "isRange", "isIndex", "isBoolean", "isResultSet", "isHelp", "isFunction", "isDate", "isRegExp", "isNull", "isUndefined", "isAccessorNode", "isArrayNode", "isAssignmentNode", "isBlockNode", "isConditionalNode", "isConstantNode", "isFunctionNode", "isFunctionAssignmentNode", "isIndexNode", "isNode", "isObjectNode", "isOperatorNode", "isParenthesisNode", "isRangeNode", "isRelationalNode", "isSymbolNode", "isMap", "isObject", "x", "throwNoBignumber", "digits", "throwNoComplex", "throwNoFraction", "f", "n", "array", "throwNoMatrix", "matrix", "name", "args", "signatures", "usualError", "isCollection", "sig", "err", "name", "dependencies", "createResultSet", "factory", "ResultSet", "entries", "json", "EXP_LIMIT", "MAX_DIGITS", "NUMERALS", "LN10", "PI", "DEFAULTS", "inexact", "quadrant", "external", "decimalError", "invalidArgument", "precisionLimitExceeded", "cryptoUnavailable", "tag", "mathfloor", "mathpow", "isBinary", "isHex", "isOctal", "isDecimal", "BASE", "LOG_BASE", "MAX_SAFE_INTEGER", "LN10_PRECISION", "PI_PRECISION", "P", "x", "finalise", "min", "max", "k", "Ctor", "y", "i", "j", "xdL", "ydL", "xd", "yd", "xs", "ys", "pr", "rm", "cosine", "toLessThanHalfPi", "m", "n", "r", "rep", "s", "sd", "t", "t3", "t3plusx", "digitsToString", "divide", "w", "d", "len", "one", "tinyPow", "taylorSeries", "cosh2_x", "d8", "sinh2_x", "d5", "d16", "d20", "halfPi", "getPi", "wpr", "xsd", "px", "x2", "base", "isBase10", "denominator", "inf", "num", "arg", "guard", "naturalLogarithm", "getLn10", "checkRoundingDigits", "e", "xe", "xLTy", "getBase10Exponent", "q", "naturalExponential", "carry", "z", "getPrecision", "sine", "rL", "toStringBinary", "dp", "checkInt32", "str", "finiteToString", "maxD", "d0", "d1", "d2", "n0", "n1", "yn", "intPow", "ws", "indexOfLastWord", "getZeroString", "repeating", "di", "rd", "convertBase", "baseIn", "baseOut", "arr", "arrL", "strL", "cos2x", "multiplyInteger", "temp", "compare", "a", "b", "aL", "bL", "subtract", "cmp", "logBase", "more", "prod", "prodL", "qd", "rem", "remL", "rem0", "xi", "xL", "yd0", "yL", "yz", "sign", "isTruncated", "digits", "roundUp", "xdi", "out", "isExp", "nonFiniteToString", "zs", "truncate", "isOdd", "maxOrMin", "args", "ltgt", "pow", "sum", "c", "c0", "numerator", "x1", "parseDecimal", "parseOther", "divisor", "isFloat", "p", "Decimal", "sin2_x", "isHyperbolic", "u", "isNeg", "pi", "abs", "acos", "acosh", "add", "asin", "asinh", "atan", "atanh", "atan2", "cbrt", "ceil", "clamp", "config", "obj", "v", "useDefaults", "ps", "cos", "cosh", "clone", "isDecimalInstance", "div", "exp", "floor", "hypot", "ln", "log", "log10", "log2", "mod", "mul", "random", "round", "sin", "sinh", "sqrt", "sub", "tan", "tanh", "trunc", "decimal_default", "name", "dependencies", "createBigNumberClass", "factory", "_ref", "on", "config", "BigNumber", "decimal_default", "json", "curr", "prev", "cosh", "x", "sinh", "cosm1", "b", "xx", "hypot", "y", "parser_exit", "logHypot", "a", "_a", "_b", "P", "parse", "z", "Complex", "tokens", "plus", "minus", "i", "c", "abs", "tInfin", "zInfin", "tIsZero", "zIsZero", "t", "arg", "loh", "re", "im", "er", "d", "t1", "t2", "tmp", "res", "noIM", "oneMinus", "onePlus", "temp", "places", "ret", "name", "dependencies", "createComplexClass", "factory", "Complex", "options", "str", "im", "re", "strRe", "format", "strIm", "precision", "isNumber", "epsilon", "args", "arg", "phi", "isUnit", "json", "a", "b", "MAX_CYCLE_LEN", "P", "assign", "n", "s", "InvalidParameter", "newFraction", "d", "DivisionByZero", "f", "Fraction", "a", "gcd", "factorize", "num", "factors", "i", "parse", "p1", "p2", "v", "w", "x", "y", "z", "A", "B", "C", "D", "N", "M", "NonIntegerParameter", "modpow", "b", "e", "m", "r", "cycleLen", "rem", "t", "cycleStart", "len", "rem1", "rem2", "places", "k", "eps", "thisABS", "cont", "excludeWhole", "whole", "str", "res", "dec", "cycLen", "cycOff", "name", "dependencies", "createFractionClass", "factory", "Fraction", "json", "name", "dependencies", "createRangeClass", "factory", "Range", "start", "end", "step", "hasStart", "hasEnd", "hasStep", "isBigNumber", "str", "args", "nums", "arg", "invalid", "num", "len", "diff", "sign", "size", "callback", "x", "i", "array", "value", "index", "obj", "options", "format", "json", "name", "dependencies", "createMatrixClass", "factory", "Matrix", "data", "datatype", "index", "replacement", "defaultValue", "value", "size", "callback", "skipZeros", "options", "formatBigNumberToBase", "n", "base", "size", "BigNumberCtor", "big2", "suffix", "isInteger", "format", "value", "options", "notation", "precision", "wordSize", "normalizeFormatOptions", "toFixed", "toExponential", "toEngineering", "lowerExp", "_toNumberOrDefault", "upperExp", "str", "rounded", "exp", "digits", "e", "newExp", "valueWithoutExp", "valueStr", "BigNumber", "defaultValue", "isNumber", "isBigNumber", "endsWith", "text", "search", "start", "end", "format", "value", "options", "result", "_format", "isBigNumber", "looksLikeFraction", "formatArray", "isString", "stringify", "entries", "key", "escaped", "i", "c", "controlCharacters", "escape", "array", "str", "len", "compareText", "x", "y", "typeOf", "DimensionError", "actual", "expected", "relation", "IndexError", "index", "min", "max", "arraySize", "x", "s", "_validate", "array", "size", "dim", "i", "len", "DimensionError", "dimNext", "child", "validate", "isScalar", "validateIndexSourceSize", "value", "index", "valueSize", "sourceSize", "sourceDim", "validateIndex", "length", "isNumber", "isInteger", "IndexError", "isEmptyIndex", "dimension", "isArray", "isString", "resize", "defaultValue", "format", "isBigNumber", "_defaultValue", "_resize", "elem", "oldLen", "newLen", "minLen", "reshape", "sizes", "flatArray", "flatten", "currentLength", "processSizesWildcard", "newLength", "product", "_reshape", "e", "processedSizes", "WILDCARD", "wildCardIndex", "isMoreThanOneWildcard", "hasWildcard", "canReplaceWildcard", "prev", "curr", "tmpArray", "tmpArray2", "sizeIndex", "squeeze", "dims", "_squeeze", "ii", "next", "unsqueeze", "outer", "_unsqueeze", "d", "flat", "callback", "map", "forEach", "filter", "filterRegExp", "regexp", "entry", "join", "separator", "identify", "a", "b", "count", "generalize", "getArrayDataType", "typeOf", "type", "item", "_isArray", "itemType", "concatRecursive", "a", "b", "concatDim", "dim", "DimensionError", "c", "i", "concat", "arrays", "A", "B", "broadcastSizes", "_len", "sizes", "_key", "dimensions", "s", "N", "sizeMax", "size", "j", "n", "_i", "checkBroadcastingRules", "toSize", "broadcastTo", "array", "Asize", "arraySize", "deepStrictEqual", "broadcastedSize", "paddedSize", "clone", "reshape", "stretch", "stretch", "arrayToStretch", "sizeToStretch", "dimToStretch", "concat", "get", "array", "index", "size", "arraySize", "DimensionError", "x", "validateIndex", "acc", "curr", "recurse", "value", "callback", "child", "i", "clone", "_extends", "import_typed_function", "optimizeCallback", "callback", "array", "name", "typed", "firstIndex", "arraySize", "firstValue", "get", "hasSingleSignature", "numberOfArguments", "_findNumberOfArguments", "fastCallback", "_len", "args", "_key", "_tryFunctionWithArgs", "_len2", "_key2", "value", "index", "testArgs", "i", "func", "mappingFnName", "callbackName", "err", "_createCallbackError", "_err$data", "argsDesc", "typeOf", "name", "dependencies", "createDenseMatrixClass", "factory", "_ref", "Matrix", "DenseMatrix", "data", "datatype", "isString", "isMatrix", "clone", "isArray", "validate", "preprocess", "arraySize", "typeOf", "getArrayDataType", "index", "replacement", "defaultValue", "_get", "_set", "get", "value", "DimensionError", "i", "ii", "indexI", "size", "_fit", "validateIndex", "matrix", "isIndex", "isScalar", "min", "max", "_getSubmatrix", "dims", "dim", "last", "range", "child", "submatrix", "iSize", "sSize", "deepStrictEqual", "broadcastTo", "outer", "unsqueeze", "_setSubmatrix", "dataIndex", "subIndex", "copy", "isCollection", "sizeArray", "m", "_resize", "v", "resize", "reshape", "currentLength", "length", "processSizesWildcard", "newSize", "changed", "callback", "me", "s", "_i", "_i2", "j", "_j", "result", "fastCallback", "optimizeCallback", "arr", "_recurse", "row", "_this", "_loop", "col", "options", "format", "k", "isBigNumber", "isNumber", "isInteger", "kSuper", "kSub", "rows", "columns", "n", "_value", "ms", "d", "json", "vi", "name", "dependencies", "createClone", "factory", "_ref", "typed", "clone", "_switch", "mat", "I", "J", "i", "j", "ret", "tmp", "containsCollections", "array", "i", "isCollection", "deepForEach", "callback", "isMatrix", "ii", "value", "deepMap", "skipZeros", "x", "reduce", "mat", "dim", "size", "arraySize", "IndexError", "_reduce", "ret", "val", "tran", "_switch", "scatter", "a", "j", "w", "u", "mark", "cindex", "f", "inverse", "update", "avalues", "aindex", "aptr", "k", "k0", "k1", "name", "dependencies", "createIsInteger", "factory", "_ref", "typed", "isInteger", "x", "self", "deepMap", "n1", "n2", "absNumber", "a", "addNumber", "b", "subtractNumber", "multiplyNumber", "divideNumber", "unaryMinusNumber", "x", "unaryPlusNumber", "cbrtNumber", "cbrt", "cubeNumber", "expNumber", "expm1Number", "expm1", "gcdNumber", "isInteger", "lcmNumber", "t", "prod", "logNumber", "y", "log10Number", "log10", "log2Number", "log2", "log1pNumber", "log1p", "modNumber", "nthRootNumber", "root", "inv", "signNumber", "sign", "sqrtNumber", "squareNumber", "xgcdNumber", "q", "r", "lastx", "lasty", "res", "powNumber", "roundNumber", "value", "decimals", "toFixed", "normNumber", "n1", "n2", "bitAndNumber", "x", "y", "isInteger", "bitNotNumber", "bitOrNumber", "bitXorNumber", "leftShiftNumber", "rightArithShiftNumber", "rightLogShiftNumber", "product", "i", "n", "half", "combinationsNumber", "n", "k", "isInteger", "nMinusk", "answer", "firstnumerator", "nextdivisor", "lastdivisor", "nextnumerator", "product", "pi", "tau", "e", "phi", "n1", "n2", "notNumber", "x", "orNumber", "y", "xorNumber", "andNumber", "gammaNumber", "n", "x", "isInteger", "product", "twoN", "threeN", "fourN", "fiveN", "gammaP", "i", "t", "gammaG", "lnSqrt2PI", "lgammaG", "lgammaN", "lgammaSeries", "lgammaNumber", "base", "sum", "n1", "n2", "acosNumber", "x", "acoshNumber", "acosh", "acotNumber", "acothNumber", "acscNumber", "acschNumber", "xInv", "asecNumber", "asechNumber", "ret", "asinNumber", "asinhNumber", "asinh", "atanNumber", "atan2Number", "y", "atanhNumber", "atanh", "cosNumber", "coshNumber", "cosh", "cotNumber", "cothNumber", "e", "cscNumber", "cschNumber", "sign", "secNumber", "sechNumber", "sinNumber", "sinhNumber", "sinh", "tanNumber", "tanhNumber", "tanh", "n1", "isIntegerNumber", "x", "isInteger", "isNegativeNumber", "isPositiveNumber", "isZeroNumber", "isNaNNumber", "nearlyEqual", "a", "b", "relTol", "absTol", "name", "dependencies", "createIsNegative", "factory", "_ref", "typed", "config", "x", "nearlyEqual", "isNegativeNumber", "self", "deepMap", "name", "dependencies", "createIsNumeric", "factory", "_ref", "typed", "self", "x", "deepMap", "name", "dependencies", "createHasNumericValue", "factory", "_ref", "typed", "isNumeric", "x", "name", "dependencies", "createIsPositive", "factory", "_ref", "typed", "config", "x", "nearlyEqual", "isPositiveNumber", "self", "deepMap", "name", "dependencies", "createIsZero", "factory", "_ref", "typed", "equalScalar", "x", "self", "deepMap", "name", "dependencies", "createIsNaN", "factory", "_ref", "typed", "isNaNNumber", "x", "self", "deepMap", "name", "dependencies", "createTypeOf", "factory", "_ref", "typed", "typeOf", "complexEquals", "x", "y", "relTol", "absTol", "nearlyEqual", "createCompareUnits", "factory", "_ref", "typed", "self", "x", "y", "name", "dependencies", "createEqualScalar", "factory", "_ref", "typed", "config", "compareUnits", "createCompareUnits", "x", "y", "nearlyEqual", "complexEquals", "createEqualScalarNumber", "_ref2", "name", "dependencies", "createSparseMatrixClass", "factory", "_ref", "typed", "equalScalar", "Matrix", "SparseMatrix", "data", "datatype", "isString", "isMatrix", "_createFromMatrix", "isArray", "_createFromArray", "typeOf", "matrix", "source", "clone", "rows", "columns", "eq", "zero", "j", "i", "row", "v", "getArrayDataType", "index", "replacement", "defaultValue", "_getsubset", "_setsubset", "idx", "isIndex", "isScalar", "size", "DimensionError", "ii", "k", "kk", "min", "max", "validateIndex", "mvalues", "mindex", "mptr", "w", "pv", "r", "values", "ptr", "submatrix", "iSize", "sSize", "arraySize", "outer", "unsqueeze", "deepStrictEqual", "range", "dataIndex", "subIndex", "firstDimensionRange", "secondDimensionRange", "firstDataIndex", "firstSubIndex", "secondDataIndex", "secondSubIndex", "_getValueIndex", "_resize", "_remove", "_insert", "top", "bottom", "x", "copy", "isCollection", "sizeArray", "value", "isNumber", "isInteger", "format", "m", "ins", "c", "n", "p", "d", "k0", "k1", "sizes", "currentLength", "processSizesWildcard", "newLength", "colIndex", "rowIndex", "_i", "r1", "c1", "flat", "_i2", "h", "_i3", "_j", "callback", "skipZeros", "me", "fastCallback", "optimizeCallback", "invoke", "_map", "minRow", "maxRow", "minColumn", "maxColumn", "y", "_values", "_k", "_i4", "_i5", "_k2", "_i6", "_i7", "_toArray", "a", "options", "density", "str", "isBigNumber", "kSuper", "kSub", "json", "s", "_value", "ms", "kx", "ky", "vx", "vy", "name", "dependencies", "getNonDecimalNumberParts", "input", "nonDecimalWithRadixMatch", "radix", "integerPart", "fractionalPart", "makeNumberFromNonDecimalParts", "parts", "n", "f", "i", "digitValue", "result", "createNumber", "factory", "_ref", "typed", "number", "x", "nonDecimalNumberParts", "size", "wordSizeSuffixMatch", "num", "self", "clone", "unit", "valuelessUnit", "deepMap", "json", "name", "dependencies", "createBigint", "factory", "_ref", "typed", "bigint", "x", "self", "deepMap", "json", "name", "dependencies", "createString", "factory", "_ref", "typed", "format", "x", "self", "deepMap", "name", "dependencies", "createBoolean", "factory", "_ref", "typed", "x", "lcase", "num", "self", "deepMap", "name", "dependencies", "createBignumber", "factory", "_ref", "typed", "BigNumber", "x", "wordSizeSuffixMatch", "size", "n", "twoPowSize", "twoPowSizeSubOne", "self", "clone", "deepMap", "name", "dependencies", "createComplex", "factory", "_ref", "typed", "Complex", "x", "re", "im", "self", "deepMap", "name", "dependencies", "createFraction", "factory", "_ref", "typed", "Fraction", "x", "numerator", "denominator", "self", "clone", "deepMap", "name", "dependencies", "createMatrix", "factory", "_ref", "typed", "Matrix", "DenseMatrix", "SparseMatrix", "_create", "format", "datatype", "data", "name", "dependencies", "createMatrixFromFunction", "factory", "_ref", "typed", "matrix", "isZero", "size", "fn", "format", "datatype", "_create", "m", "_", "index", "val", "name", "dependencies", "createMatrixFromRows", "factory", "_ref", "typed", "matrix", "flatten", "size", "arr", "_createArray", "m", "N", "checkVectorTypeAndReturnLength", "result", "row", "rowLength", "vec", "s", "name", "dependencies", "createMatrixFromColumns", "factory", "_ref", "typed", "matrix", "flatten", "size", "arr", "_createArray", "m", "N", "checkVectorTypeAndReturnLength", "result", "i", "col", "colLength", "f", "_i", "vec", "s", "name", "dependencies", "createSplitUnit", "factory", "_ref", "typed", "unit", "parts", "name", "dependencies", "createUnaryMinus", "factory", "_ref", "typed", "unaryMinusNumber", "x", "self", "res", "deepMap", "name", "dependencies", "createUnaryPlus", "factory", "_ref", "typed", "config", "numeric", "unaryPlusNumber", "x", "self", "deepMap", "safeNumberType", "name", "dependencies", "createAbs", "factory", "_ref", "typed", "absNumber", "x", "self", "deepMap", "name", "dependencies", "createApply", "factory", "_ref", "typed", "isInteger", "mat", "dim", "callback", "size", "arraySize", "IndexError", "isMatrix", "_apply", "i", "ret", "tran", "_switch", "I", "J", "j", "tmp", "name", "dependencies", "createAddScalar", "factory", "_ref", "typed", "addNumber", "x", "y", "self", "res", "name", "dependencies", "createSubtractScalar", "factory", "_ref", "typed", "subtractNumber", "x", "y", "self", "res", "name", "dependencies", "createCbrt", "factory", "_ref", "config", "typed", "isNegative", "unaryMinus", "matrix", "Complex", "BigNumber", "Fraction", "cbrtNumber", "_cbrtComplex", "x", "_cbrtUnit", "allRoots", "arg3", "abs", "principal", "all", "isComplex", "result", "negate", "third", "isBigNumber", "isFraction", "_result", "name", "dependencies", "createMatAlgo11xS0s", "factory", "_ref", "typed", "equalScalar", "s", "b", "callback", "inverse", "avalues", "aindex", "aptr", "asize", "adt", "rows", "columns", "dt", "eq", "zero", "cf", "cvalues", "cindex", "cptr", "j", "k0", "k1", "k", "i", "v", "name", "dependencies", "createMatAlgo12xSfs", "factory", "_ref", "typed", "DenseMatrix", "s", "b", "callback", "inverse", "avalues", "aindex", "aptr", "asize", "adt", "rows", "columns", "dt", "cf", "cdata", "x", "w", "j", "mark", "k0", "k1", "k", "r", "i", "name", "dependencies", "createMatAlgo14xDs", "factory", "_ref", "typed", "a", "b", "callback", "inverse", "adata", "asize", "adt", "dt", "cf", "cdata", "_iterate", "clone", "f", "level", "s", "n", "av", "bv", "cv", "i", "j", "name", "dependencies", "createCeilNumber", "factory", "_ref", "typed", "config", "round", "x", "nearlyEqual", "n", "number", "exponent", "result", "createCeil", "_ref2", "matrix", "equalScalar", "zeros", "DenseMatrix", "matAlgo11xS0s", "createMatAlgo11xS0s", "matAlgo12xSfs", "createMatAlgo12xSfs", "matAlgo14xDs", "createMatAlgo14xDs", "ceilNumber", "decimal_default", "self", "deepMap", "i", "y", "name", "dependencies", "createCube", "factory", "_ref", "typed", "cubeNumber", "x", "name", "dependencies", "createExp", "factory", "_ref", "typed", "expNumber", "x", "name", "dependencies", "createExpm1", "factory", "_ref", "typed", "_Complex", "expm1Number", "x", "r", "name", "dependencies", "createFixNumber", "factory", "_ref", "typed", "ceil", "floor", "x", "n", "createFix", "_ref2", "_Complex", "matrix", "equalScalar", "zeros", "DenseMatrix", "matAlgo12xSfs", "createMatAlgo12xSfs", "matAlgo14xDs", "createMatAlgo14xDs", "fixNumber", "bn", "self", "deepMap", "i", "y", "name", "dependencies", "createFloorNumber", "factory", "_ref", "typed", "config", "round", "x", "nearlyEqual", "n", "number", "exponent", "result", "createFloor", "_ref2", "matrix", "equalScalar", "zeros", "DenseMatrix", "matAlgo11xS0s", "createMatAlgo11xS0s", "matAlgo12xSfs", "createMatAlgo12xSfs", "matAlgo14xDs", "createMatAlgo14xDs", "floorNumber", "decimal_default", "self", "deepMap", "i", "y", "name", "dependencies", "createMatAlgo02xDS0", "factory", "_ref", "typed", "equalScalar", "denseMatrix", "sparseMatrix", "callback", "inverse", "adata", "asize", "adt", "bvalues", "bindex", "bptr", "bsize", "bdt", "DimensionError", "rows", "columns", "dt", "eq", "zero", "cf", "cvalues", "cindex", "cptr", "j", "k0", "k1", "k", "i", "cij", "name", "dependencies", "createMatAlgo03xDSf", "factory", "_ref", "typed", "denseMatrix", "sparseMatrix", "callback", "inverse", "adata", "asize", "adt", "bvalues", "bindex", "bptr", "bsize", "bdt", "DimensionError", "rows", "columns", "dt", "zero", "cf", "cdata", "z", "x", "w", "j", "mark", "k0", "k1", "k", "i", "y", "name", "dependencies", "createMatAlgo05xSfSf", "factory", "_ref", "typed", "equalScalar", "a", "b", "callback", "avalues", "aindex", "aptr", "asize", "adt", "bvalues", "bindex", "bptr", "bsize", "bdt", "DimensionError", "rows", "columns", "dt", "eq", "zero", "cf", "cvalues", "cindex", "cptr", "xa", "xb", "wa", "wb", "i", "j", "k", "k1", "mark", "wai", "wbi", "va", "vb", "vc", "name", "dependencies", "createMatAlgo13xDD", "factory", "_ref", "typed", "a", "b", "callback", "adata", "asize", "adt", "bdata", "bsize", "bdt", "csize", "DimensionError", "s", "dt", "cf", "cdata", "_iterate", "f", "level", "n", "av", "bv", "cv", "i", "j", "broadcast", "A", "B", "deepStrictEqual", "newSize", "broadcastSizes", "M", "_broadcastTo", "size", "broadcastTo", "name", "dependencies", "createMatrixAlgorithmSuite", "factory", "_ref", "typed", "matrix", "matAlgo13xDD", "createMatAlgo13xDD", "matAlgo14xDs", "createMatAlgo14xDs", "options", "elop", "SD", "matrixSignatures", "x", "y", "broadcast", "self", "scalar", "Ds", "sS", "extend", "name", "dependencies", "createMod", "factory", "_ref", "typed", "config", "round", "matrix", "equalScalar", "zeros", "DenseMatrix", "concat", "floor", "createFloor", "matAlgo02xDS0", "createMatAlgo02xDS0", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo05xSfSf", "createMatAlgo05xSfSf", "matAlgo11xS0s", "createMatAlgo11xS0s", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "_modNumber", "x", "y", "m", "name", "dependencies", "createMatAlgo01xDSid", "factory", "_ref", "typed", "denseMatrix", "sparseMatrix", "callback", "inverse", "adata", "asize", "adt", "bvalues", "bindex", "bptr", "bsize", "bdt", "DimensionError", "rows", "columns", "dt", "cf", "i", "j", "cdata", "x", "w", "mark", "k0", "k1", "k", "name", "dependencies", "createMatAlgo04xSidSid", "factory", "_ref", "typed", "equalScalar", "a", "b", "callback", "avalues", "aindex", "aptr", "asize", "adt", "bvalues", "bindex", "bptr", "bsize", "bdt", "DimensionError", "rows", "columns", "dt", "eq", "zero", "cf", "cvalues", "cindex", "cptr", "xa", "xb", "wa", "wb", "i", "j", "k", "k0", "k1", "mark", "v", "name", "dependencies", "createMatAlgo10xSids", "factory", "_ref", "typed", "DenseMatrix", "s", "b", "callback", "inverse", "avalues", "aindex", "aptr", "asize", "adt", "rows", "columns", "dt", "cf", "cdata", "x", "w", "j", "mark", "k0", "k1", "k", "r", "i", "ArgumentsError", "fn", "count", "min", "max", "name", "dependencies", "gcdTypes", "gcdManyTypesSignature", "is1d", "array", "element", "createGcd", "factory", "_ref", "typed", "matrix", "config", "round", "equalScalar", "zeros", "BigNumber", "DenseMatrix", "concat", "mod", "createMod", "matAlgo01xDSid", "createMatAlgo01xDSid", "matAlgo04xSidSid", "createMatAlgo04xSidSid", "matAlgo10xSids", "createMatAlgo10xSids", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "_gcdNumber", "_gcdBigNumber", "x", "y", "self", "a", "b", "args", "res", "i", "ArgumentsError", "isInteger", "r", "zero", "name", "dependencies", "createMatAlgo06xS0S0", "factory", "_ref", "typed", "equalScalar", "a", "b", "callback", "avalues", "asize", "adt", "bvalues", "bsize", "bdt", "DimensionError", "rows", "columns", "dt", "eq", "zero", "cf", "cvalues", "cindex", "cptr", "x", "w", "u", "j", "mark", "scatter", "k", "i", "v", "p", "r", "name", "dependencies", "createLcm", "factory", "_ref", "typed", "matrix", "equalScalar", "concat", "matAlgo02xDS0", "createMatAlgo02xDS0", "matAlgo06xS0S0", "createMatAlgo06xS0S0", "matAlgo11xS0s", "createMatAlgo11xS0s", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "lcmTypes", "lcmManySignature", "self", "a", "b", "args", "res", "i", "lcmNumber", "_lcmBigNumber", "x", "y", "prod", "t", "name", "dependencies", "createLog10", "factory", "_ref", "typed", "config", "_Complex", "x", "log10Number", "self", "deepMap", "name", "dependencies", "createLog2", "factory", "_ref", "typed", "config", "Complex", "x", "log2Number", "_log2Complex", "self", "deepMap", "newX", "name", "dependencies", "createMultiplyScalar", "factory", "_ref", "typed", "multiplyNumber", "x", "y", "name", "dependencies", "createMultiply", "factory", "_ref", "typed", "matrix", "addScalar", "multiplyScalar", "equalScalar", "dot", "matAlgo11xS0s", "createMatAlgo11xS0s", "matAlgo14xDs", "createMatAlgo14xDs", "_validateMatrixDimensions", "size1", "size2", "_multiplyVectorVector", "a", "b", "n", "_multiplyVectorMatrix", "_multiplyVectorDenseMatrix", "adata", "asize", "adt", "bdata", "bsize", "bdt", "alength", "bcolumns", "dt", "af", "mf", "c", "j", "sum", "i", "_multiplyMatrixVector", "_multiplyDenseMatrixVector", "_multiplySparseMatrixVector", "_multiplyMatrixMatrix", "_multiplyDenseMatrixDenseMatrix", "_multiplyDenseMatrixSparseMatrix", "_multiplySparseMatrixDenseMatrix", "_multiplySparseMatrixSparseMatrix", "arows", "acolumns", "row", "x", "bvalues", "bindex", "bptr", "eq", "zero", "cvalues", "cindex", "cptr", "jb", "kb0", "kb1", "last", "mark", "cij", "kb", "ib", "avalues", "aindex", "aptr", "brows", "w", "vbi", "ka0", "ka1", "ka", "ia", "p1", "p", "ic", "vbij", "p0", "values", "selfMM", "y", "arraySize", "m", "isMatrix", "xsize", "ysize", "self", "rest", "result", "name", "dependencies", "createNthRoot", "factory", "_ref", "typed", "matrix", "equalScalar", "_BigNumber", "concat", "matAlgo01xDSid", "createMatAlgo01xDSid", "matAlgo02xDS0", "createMatAlgo02xDS0", "matAlgo06xS0S0", "createMatAlgo06xS0S0", "matAlgo11xS0s", "createMatAlgo11xS0s", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "complexErr", "nthRootNumber", "x", "_bigNthRoot", "selfDn", "selfSn", "self", "y", "selfDS", "a", "root", "precision", "Big", "zero", "one", "inv", "name", "dependencies", "createSign", "factory", "_ref", "typed", "_BigNumber", "complex", "_Fraction", "signNumber", "x", "self", "deepMap", "name", "dependencies", "createSqrt", "factory", "_ref", "config", "typed", "Complex", "_sqrtNumber", "x", "name", "dependencies", "createSquare", "factory", "_ref", "typed", "squareNumber", "x", "name", "dependencies", "createSubtract", "factory", "_ref", "typed", "matrix", "equalScalar", "subtractScalar", "unaryMinus", "DenseMatrix", "concat", "matAlgo01xDSid", "createMatAlgo01xDSid", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo05xSfSf", "createMatAlgo05xSfSf", "matAlgo10xSids", "createMatAlgo10xSids", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "name", "dependencies", "createXgcd", "factory", "_ref", "typed", "config", "matrix", "BigNumber", "a", "b", "res", "xgcdNumber", "_xgcdBigNumber", "t", "q", "r", "zero", "one", "x", "lastx", "y", "lasty", "name", "dependencies", "createInvmod", "factory", "_ref", "typed", "config", "BigNumber", "xgcd", "equal", "smaller", "mod", "add", "isInteger", "invmod", "a", "b", "res", "gcd", "inv", "name", "dependencies", "createMatAlgo09xS0Sf", "factory", "_ref", "typed", "equalScalar", "a", "b", "callback", "avalues", "aindex", "aptr", "asize", "adt", "bvalues", "bindex", "bptr", "bsize", "bdt", "DimensionError", "rows", "columns", "dt", "eq", "zero", "cf", "cvalues", "cindex", "cptr", "x", "w", "i", "j", "k", "k0", "k1", "mark", "vb", "vc", "name", "dependencies", "createDotMultiply", "factory", "_ref", "typed", "matrix", "equalScalar", "multiplyScalar", "concat", "matAlgo02xDS0", "createMatAlgo02xDS0", "matAlgo09xS0Sf", "createMatAlgo09xS0Sf", "matAlgo11xS0s", "createMatAlgo11xS0s", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "bitAndBigNumber", "x", "y", "BigNumber", "bitwise", "a", "b", "bitNotBigNumber", "prevPrec", "result", "bitOrBigNumber", "negOne", "func", "xBits", "yBits", "xSign", "ySign", "decCoefficientToBinaryString", "i", "_i", "minBits", "maxBits", "minSign", "shortLen", "longLen", "expFuncVal", "outVal", "twoPower", "two", "s", "z", "j", "xe", "str", "strL", "arr", "_i2", "arrL", "_j", "bitXor", "leftShiftBigNumber", "rightArithShiftBigNumber", "name", "dependencies", "createBitAnd", "factory", "_ref", "typed", "matrix", "equalScalar", "concat", "matAlgo02xDS0", "createMatAlgo02xDS0", "matAlgo06xS0S0", "createMatAlgo06xS0S0", "matAlgo11xS0s", "createMatAlgo11xS0s", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "bitAndNumber", "bitAndBigNumber", "x", "y", "name", "dependencies", "createBitNot", "factory", "_ref", "typed", "bitNotNumber", "bitNotBigNumber", "x", "self", "deepMap", "name", "dependencies", "createBitOr", "factory", "_ref", "typed", "matrix", "equalScalar", "DenseMatrix", "concat", "matAlgo01xDSid", "createMatAlgo01xDSid", "matAlgo04xSidSid", "createMatAlgo04xSidSid", "matAlgo10xSids", "createMatAlgo10xSids", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "bitOrNumber", "bitOrBigNumber", "x", "y", "name", "dependencies", "createMatAlgo07xSSf", "factory", "_ref", "typed", "DenseMatrix", "a", "b", "callback", "asize", "adt", "bsize", "bdt", "DimensionError", "rows", "columns", "dt", "zero", "cf", "i", "j", "cdata", "xa", "xb", "wa", "wb", "mark", "_scatter", "va", "vb", "m", "w", "x", "values", "index", "ptr", "k", "k1", "name", "dependencies", "createBitXor", "factory", "_ref", "typed", "matrix", "DenseMatrix", "concat", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo07xSSf", "createMatAlgo07xSSf", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "bitXorNumber", "bitXor", "x", "y", "name", "dependencies", "createArg", "factory", "_ref", "typed", "x", "self", "deepMap", "name", "dependencies", "createConj", "factory", "_ref", "typed", "x", "self", "deepMap", "name", "dependencies", "createIm", "factory", "_ref", "typed", "x", "self", "deepMap", "name", "dependencies", "createRe", "factory", "_ref", "typed", "x", "self", "deepMap", "name", "dependencies", "createNot", "factory", "_ref", "typed", "notNumber", "x", "self", "deepMap", "name", "dependencies", "createOr", "factory", "_ref", "typed", "matrix", "equalScalar", "DenseMatrix", "concat", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo05xSfSf", "createMatAlgo05xSfSf", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "orNumber", "x", "y", "self", "name", "dependencies", "createXor", "factory", "_ref", "typed", "matrix", "DenseMatrix", "concat", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo07xSSf", "createMatAlgo07xSSf", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "xorNumber", "x", "y", "self", "name", "dependencies", "createConcat", "factory", "_ref", "typed", "matrix", "isInteger", "args", "i", "len", "dim", "prevDim", "asMatrix", "matrices", "arg", "isMatrix", "isNumber", "isBigNumber", "IndexError", "m", "clone", "size", "arraySize", "DimensionError", "res", "concat", "name", "dependencies", "createColumn", "factory", "_ref", "typed", "Index", "matrix", "range", "_column", "value", "column", "clone", "validateIndex", "rowRange", "index", "result", "isMatrix", "name", "dependencies", "createCount", "factory", "_ref", "typed", "size", "prod", "x", "name", "dependencies", "createCross", "factory", "_ref", "typed", "matrix", "subtract", "multiply", "x", "y", "_cross", "highestDimension", "arraySize", "squeeze", "xSize", "ySize", "product", "name", "dependencies", "createDiag", "factory", "_ref", "typed", "matrix", "DenseMatrix", "SparseMatrix", "x", "_diag", "arraySize", "k", "format", "size", "isInteger", "kSuper", "kSub", "_createDiagonalMatrix", "_getDiagonal", "l", "ms", "m", "s", "isMatrix", "dm", "n", "vector", "i", "name", "dependencies", "createFilter", "factory", "_ref", "typed", "_filterCallback", "x", "test", "filterRegExp", "callback", "fastCallback", "optimizeCallback", "filter", "value", "index", "array", "name", "dependencies", "createFlatten", "factory", "_ref", "typed", "x", "flatten", "name", "dependencies", "createForEach", "factory", "_ref", "typed", "_forEach", "x", "callback", "array", "recurse", "optimizeCallback", "name", "dependencies", "createGetMatrixDataType", "factory", "_ref", "typed", "x", "getArrayDataType", "typeOf", "name", "dependencies", "createIdentity", "factory", "_ref", "typed", "config", "matrix", "BigNumber", "DenseMatrix", "SparseMatrix", "format", "rows", "_identity", "cols", "size", "_identityVector", "Big", "isBigNumber", "isInteger", "one", "defaultValue", "res", "resize", "minimum", "d", "name", "dependencies", "createKron", "factory", "_ref", "typed", "matrix", "multiplyScalar", "x", "y", "_kron", "a", "b", "arraySize", "t", "r", "name", "dependencies", "createMap", "factory", "_ref", "typed", "_mapArray", "x", "callback", "A", "B", "rest", "_mapMultiple", "Arrays", "multiCallback", "firstArrayIsMatrix", "newSize", "broadcastSizes", "arraySize", "_get", "matrix", "idx", "get", "broadcastedArrays", "broadcastTo", "firstIndex", "firstValues", "array", "callbackCase", "_getTypedCallbackCase", "_getLimitedCallback", "numberOfArrays", "_callbackCase", "_getCallbackCase", "broadcastedArraysCallback", "Array", "values", "arrays", "recurse", "optimizeCallback", "name", "dependencies", "createDiff", "factory", "_ref", "typed", "matrix", "subtract", "number", "arr", "isMatrix", "_diff", "dim", "isInteger", "_recursive", "selfAn", "selfMn", "result", "element", "size", "i", "_ElementDiff", "obj1", "obj2", "obj1IsArray", "obj2IsArray", "_ArrayDiff", "arr1", "arr2", "name", "dependencies", "createOnes", "factory", "_ref", "typed", "config", "matrix", "BigNumber", "_ones", "size", "last", "format", "hasBigNumbers", "_normalize", "defaultValue", "_validate", "m", "arr", "resize", "value", "index", "isBigNumber", "isInteger", "noBignumber", "noFraction", "noMatrix", "name", "dependencies", "createRange", "factory", "_ref", "typed", "config", "matrix", "bignumber", "smaller", "smallerEq", "larger", "largerEq", "add", "isPositive", "_strRange", "start", "end", "_out", "_range", "step", "includeEnd", "BigNumber", "arr", "noMatrix", "str", "r", "_parse", "noBignumber", "array", "ongoing", "x", "args", "nums", "arg", "invalid", "num", "name", "dependencies", "createReshape", "factory", "_ref", "typed", "isInteger", "x", "sizes", "size", "reshape", "name", "dependencies", "createResize", "factory", "_ref", "config", "matrix", "x", "size", "defaultValue", "ArgumentsError", "isMatrix", "isBigNumber", "value", "_resizeString", "asMatrix", "clone", "res", "resize", "str", "defaultChar", "DimensionError", "len", "isInteger", "format", "i", "ii", "name", "dependencies", "createRotate", "factory", "_ref", "typed", "multiply", "rotationMatrix", "w", "theta", "_validateSize", "matrixRes", "v", "expectedSize", "actualSize", "arraySize", "name", "dependencies", "createRotationMatrix", "factory", "_ref", "typed", "config", "multiplyScalar", "addScalar", "unaryMinus", "norm", "BigNumber", "matrix", "DenseMatrix", "SparseMatrix", "cos", "sin", "format", "theta", "_rotationMatrix2x2", "v", "matrixV", "_validateVector", "_rotationMatrix3x3", "storageType", "Big", "isBigNumber", "minusOne", "cosTheta", "sinTheta", "data", "_convertToFormat", "size", "_mul", "array", "p", "curr", "normV", "one", "vx", "vy", "vz", "c", "oneMinusC", "s", "r11", "r12", "r13", "r21", "r22", "r23", "r31", "r32", "r33", "name", "dependencies", "createRow", "factory", "_ref", "typed", "Index", "matrix", "range", "_row", "value", "row", "clone", "validateIndex", "columnRange", "index", "result", "isMatrix", "name", "dependencies", "createSize", "factory", "_ref", "typed", "config", "matrix", "x", "arraySize", "noMatrix", "name", "dependencies", "createSqueeze", "factory", "_ref", "typed", "x", "squeeze", "clone", "res", "name", "dependencies", "createSubset", "factory", "_ref", "typed", "matrix", "zeros", "add", "value", "index", "isEmptyIndex", "validateIndexSourceSize", "subsetRef", "subsetResult", "_getObjectProperty", "_getSubstring", "replacement", "defaultValue", "_broadcastReplacement", "_setSubstring", "_setObjectProperty", "indexSize", "d", "str", "isIndex", "DimensionError", "strLen", "validateIndex", "range", "substr", "v", "len", "chars", "i", "_i", "_len", "object", "key", "getSafeProperty", "updated", "clone", "setSafeProperty", "name", "dependencies", "createTranspose", "factory", "_ref", "typed", "matrix", "x", "transposeMatrix", "clone", "size", "c", "rows", "columns", "format", "_denseTranspose", "_sparseTranspose", "m", "data", "transposed", "transposedRow", "j", "i", "values", "index", "ptr", "cvalues", "cindex", "cptr", "w", "p", "l", "sum", "k0", "k1", "k", "q", "name", "dependencies", "createCtranspose", "factory", "_ref", "typed", "transpose", "conj", "x", "name", "dependencies", "createZeros", "factory", "_ref", "typed", "config", "matrix", "BigNumber", "_zeros", "size", "last", "format", "hasBigNumbers", "_normalize", "defaultValue", "_validate", "m", "arr", "resize", "value", "index", "isBigNumber", "isInteger", "name", "dependencies", "createFft", "factory", "_ref", "typed", "matrix", "addScalar", "multiplyScalar", "divideScalar", "exp", "tau", "I", "dotDivide", "conj", "pow", "ceil", "log2", "_ndFft", "arr", "size", "arraySize", "_fft", "_1dFft", "slice", "dim", "_", "i", "_transpose", "j", "_czt", "n", "w", "chirp", "N2", "xp", "ichirp", "fftXp", "fftIchirp", "fftProduct", "ifftProduct", "ret", "_i", "len", "k", "p", "q", "name", "dependencies", "createIfft", "factory", "_ref", "typed", "fft", "dotDivide", "conj", "arr", "size", "isMatrix", "arraySize", "acc", "curr", "_typeof", "o", "toPrimitive", "t", "r", "_typeof", "e", "i", "toPropertyKey", "t", "i", "toPrimitive", "_typeof", "_defineProperty", "r", "t", "toPropertyKey", "ownKeys", "r", "t", "o", "_objectSpread", "_defineProperty", "name", "dependencies", "createSolveODE", "factory", "_ref", "typed", "add", "subtract", "multiply", "divide", "max", "map", "abs", "isPositive", "isNegative", "larger", "smaller", "matrix", "bignumber", "unaryMinus", "_rk", "butcherTableau", "f", "tspan", "y0", "options", "wrongTSpan", "isNumOrBig", "isUnit", "t0", "tf", "isForwards", "firstStep", "maxStep", "minStep", "timeVars", "x", "steps", "tol", "minDelta", "maxDelta", "maxIter", "hasBigNumbers", "isBigNumber", "a", "c", "b", "bp", "h", "y", "deltaB", "n", "iter", "ongoing", "_createOngoing", "trimStep", "_createTrimStep", "k", "i", "TE", "X", "delta", "_rk23", "_rk45", "_solveODE", "opt", "method", "methods", "methodOptions", "methodsWithQuotes", "availableMethodsString", "outOfBounds", "next", "isNumber", "_matrixSolveODE", "T", "sol", "Y", "name", "dependencies", "createErf", "factory", "_ref", "typed", "x", "y", "MAX_NUM", "sign", "THRESH", "erf1", "erfc2", "erfc3", "self", "n", "deepMap", "ysq", "xnum", "P", "xden", "i", "Q", "result", "del", "SQRPI", "name", "dependencies", "createZeta", "factory", "_ref", "typed", "config", "multiply", "pow", "divide", "factorial", "equal", "smallerEq", "isNegative", "gamma", "sin", "subtract", "add", "Complex", "_BigNumber", "pi", "s", "zetaNumeric", "value", "zetaComplex", "createValue", "determineDigits", "zeta", "getRe", "n", "f", "c", "d", "k", "S", "j", "factor", "name", "dependencies", "createMode", "factory", "_ref", "typed", "isNaN", "isNumeric", "_mode", "args", "values", "flatten", "num", "count", "mode", "max", "i", "value", "improveErrorMessage", "err", "fnName", "value", "details", "typeOf", "name", "dependencies", "createProd", "factory", "_ref", "typed", "config", "multiplyScalar", "numeric", "_prod", "array", "dim", "args", "prod", "deepForEach", "value", "err", "improveErrorMessage", "safeNumberType", "name", "dependencies", "createFormat", "factory", "_ref", "typed", "format", "name", "dependencies", "createBin", "factory", "_ref", "typed", "format", "n", "wordSize", "name", "dependencies", "createOct", "factory", "_ref", "typed", "format", "n", "wordSize", "name", "dependencies", "createHex", "factory", "_ref", "typed", "format", "n", "wordSize", "printTemplate", "name", "dependencies", "createPrint", "factory", "_ref", "typed", "_print", "template", "values", "options", "printTemplate", "original", "key", "keys", "value", "k", "isString", "format", "name", "dependencies", "createTo", "factory", "_ref", "typed", "matrix", "concat", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "x", "unit", "name", "dependencies", "createIsPrime", "factory", "_ref", "typed", "x", "i", "modPow", "base", "exponent", "modulus", "accumulator", "Decimal", "r", "d", "bases", "max", "_i", "_i2", "a", "adn", "_i3", "_x", "self", "deepMap", "name", "dependencies", "createNumeric", "factory", "_ref", "_number", "bignumber", "fraction", "validInputTypes", "validOutputTypes", "x", "noBignumber", "noFraction", "value", "outputType", "check", "inputType", "typeOf", "name", "dependencies", "createDivideScalar", "factory", "_ref", "typed", "numeric", "x", "y", "name", "dependencies", "createPow", "factory", "_ref", "typed", "config", "identity", "multiply", "matrix", "inv", "number", "fraction", "Complex", "_pow", "y", "x", "result", "_powArray", "_powMatrix", "isInteger", "yFrac", "yNum", "powNumber", "s", "arraySize", "error", "res", "px", "NO_INT", "name", "dependencies", "createRound", "factory", "_ref", "typed", "config", "matrix", "equalScalar", "zeros", "_BigNumber", "DenseMatrix", "matAlgo11xS0s", "createMatAlgo11xS0s", "matAlgo12xSfs", "createMatAlgo12xSfs", "matAlgo14xDs", "createMatAlgo14xDs", "toExponent", "epsilon", "splitNumber", "x", "xEpsilon", "roundNumber", "xSelected", "nearlyEqual", "n", "epsilonExponent", "_n", "self", "unit", "valueless", "deepMap", "value", "name", "dependencies", "createLog", "factory", "_ref", "typed", "config", "divideScalar", "Complex", "x", "logNumber", "self", "base", "name", "dependencies", "createLog1p", "factory", "_ref", "typed", "config", "divideScalar", "log", "Complex", "x", "log1p", "_log1pComplex", "y", "self", "deepMap", "base", "xRe1p", "name", "dependencies", "createNthRoots", "factory", "_ref", "typed", "config", "divideScalar", "Complex", "_calculateExactResult", "val", "_nthComplexRoots", "a", "root", "aIsNumeric", "offset", "arg", "abs", "roots", "r", "k", "halfPiFactor", "x", "name", "dependencies", "createDotPow", "factory", "_ref", "typed", "equalScalar", "matrix", "pow", "DenseMatrix", "concat", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo07xSSf", "createMatAlgo07xSSf", "matAlgo11xS0s", "createMatAlgo11xS0s", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "powScalarSignatures", "signature", "powScalar", "name", "dependencies", "createDotDivide", "factory", "_ref", "typed", "matrix", "equalScalar", "divideScalar", "DenseMatrix", "concat", "matAlgo02xDS0", "createMatAlgo02xDS0", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo07xSSf", "createMatAlgo07xSSf", "matAlgo11xS0s", "createMatAlgo11xS0s", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "createSolveValidation", "_ref", "DenseMatrix", "m", "b", "copy", "mSize", "format", "rows", "columns", "data", "isMatrix", "bSize", "bdata", "i", "isDenseMatrix", "_i", "isSparseMatrix", "_i2", "values", "index", "ptr", "k1", "k", "_i3", "isArray", "bsize", "arraySize", "_i4", "_i5", "name", "dependencies", "createLsolve", "factory", "_ref", "typed", "matrix", "divideScalar", "multiplyScalar", "subtractScalar", "equalScalar", "DenseMatrix", "solveValidation", "createSolveValidation", "m", "b", "_sparseForwardSubstitution", "_denseForwardSubstitution", "a", "r", "bdata", "rows", "columns", "x", "mdata", "j", "bj", "xj", "vjj", "i", "values", "index", "ptr", "jValues", "jIndices", "firstIndex", "lastIndex", "k", "_k", "l", "_i", "name", "dependencies", "createUsolve", "factory", "_ref", "typed", "matrix", "divideScalar", "multiplyScalar", "subtractScalar", "equalScalar", "DenseMatrix", "solveValidation", "createSolveValidation", "m", "b", "_sparseBackwardSubstitution", "_denseBackwardSubstitution", "a", "r", "bdata", "rows", "columns", "x", "mdata", "j", "bj", "xj", "vjj", "i", "values", "index", "ptr", "jValues", "jIndices", "firstIndex", "lastIndex", "k", "_k", "_lastIndex", "_i", "name", "dependencies", "createLsolveAll", "factory", "_ref", "typed", "matrix", "divideScalar", "multiplyScalar", "subtractScalar", "equalScalar", "DenseMatrix", "solveValidation", "createSolveValidation", "m", "b", "_sparseForwardSubstitution", "_denseForwardSubstitution", "a", "R", "r", "b_", "B", "e", "M", "rows", "columns", "i", "L", "k", "bNew", "_j", "j", "x", "values", "index", "ptr", "iValues", "iIndices", "firstIndex", "lastIndex", "Mii", "J", "_j3", "_lastIndex2", "_J2", "_j2", "_lastIndex", "_J", "name", "dependencies", "createUsolveAll", "factory", "_ref", "typed", "matrix", "divideScalar", "multiplyScalar", "subtractScalar", "equalScalar", "DenseMatrix", "solveValidation", "createSolveValidation", "m", "b", "_sparseBackwardSubstitution", "_denseBackwardSubstitution", "a", "R", "r", "b_", "B", "e", "M", "rows", "columns", "i", "L", "k", "bNew", "_j", "j", "x", "values", "index", "ptr", "iValues", "iIndices", "firstIndex", "lastIndex", "Mii", "J", "_j3", "_lastIndex2", "_J2", "_j2", "_lastIndex", "_J", "name", "dependencies", "createMatAlgo08xS0Sid", "factory", "_ref", "typed", "equalScalar", "a", "b", "callback", "avalues", "aindex", "aptr", "asize", "adt", "bvalues", "bindex", "bptr", "bsize", "bdt", "DimensionError", "rows", "columns", "dt", "eq", "zero", "cf", "cvalues", "cindex", "cptr", "x", "w", "k", "k0", "k1", "i", "j", "mark", "v", "createUseMatrixForArrayScalar", "factory", "_ref", "typed", "matrix", "selfDn", "x", "y", "selfDB", "selfnD", "selfBD", "name", "dependencies", "createLeftShift", "factory", "_ref", "typed", "matrix", "equalScalar", "zeros", "DenseMatrix", "concat", "matAlgo01xDSid", "createMatAlgo01xDSid", "matAlgo02xDS0", "createMatAlgo02xDS0", "matAlgo08xS0Sid", "createMatAlgo08xS0Sid", "matAlgo10xSids", "createMatAlgo10xSids", "matAlgo11xS0s", "createMatAlgo11xS0s", "matAlgo14xDs", "createMatAlgo14xDs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "useMatrixForArrayScalar", "createUseMatrixForArrayScalar", "leftShiftNumber", "leftShiftBigNumber", "x", "y", "self", "name", "dependencies", "createRightArithShift", "factory", "_ref", "typed", "matrix", "equalScalar", "zeros", "DenseMatrix", "concat", "matAlgo01xDSid", "createMatAlgo01xDSid", "matAlgo02xDS0", "createMatAlgo02xDS0", "matAlgo08xS0Sid", "createMatAlgo08xS0Sid", "matAlgo10xSids", "createMatAlgo10xSids", "matAlgo11xS0s", "createMatAlgo11xS0s", "matAlgo14xDs", "createMatAlgo14xDs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "useMatrixForArrayScalar", "createUseMatrixForArrayScalar", "rightArithShiftNumber", "rightArithShiftBigNumber", "x", "y", "self", "name", "dependencies", "createRightLogShift", "factory", "_ref", "typed", "matrix", "equalScalar", "zeros", "DenseMatrix", "concat", "matAlgo01xDSid", "createMatAlgo01xDSid", "matAlgo02xDS0", "createMatAlgo02xDS0", "matAlgo08xS0Sid", "createMatAlgo08xS0Sid", "matAlgo10xSids", "createMatAlgo10xSids", "matAlgo11xS0s", "createMatAlgo11xS0s", "matAlgo14xDs", "createMatAlgo14xDs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "useMatrixForArrayScalar", "createUseMatrixForArrayScalar", "rightLogShiftNumber", "self", "x", "y", "name", "dependencies", "createAnd", "factory", "_ref", "typed", "matrix", "equalScalar", "zeros", "not", "concat", "matAlgo02xDS0", "createMatAlgo02xDS0", "matAlgo06xS0S0", "createMatAlgo06xS0S0", "matAlgo11xS0s", "createMatAlgo11xS0s", "matAlgo14xDs", "createMatAlgo14xDs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "andNumber", "x", "y", "self", "name", "dependencies", "createCompare", "factory", "_ref", "typed", "config", "equalScalar", "matrix", "BigNumber", "Fraction", "DenseMatrix", "concat", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo05xSfSf", "createMatAlgo05xSfSf", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "compareUnits", "createCompareUnits", "createCompareNumber", "x", "y", "nearlyEqual", "_ref2", "import_javascript_natural_sort", "name", "dependencies", "createCompareNatural", "factory", "_ref", "typed", "compare", "compareBooleans", "_compareNatural", "x", "y", "typeX", "typeOf", "typeY", "c", "naturalSort", "matTypes", "compareMatricesAndArrays", "compareComplexNumbers", "compareArrays", "compareObjects", "compareNatural", "isSparseMatrix", "isDenseMatrix", "i", "ii", "v", "keysX", "keysY", "name", "dependencies", "compareText", "createCompareText", "factory", "_ref", "typed", "matrix", "concat", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "name", "dependencies", "createEqual", "factory", "_ref", "typed", "matrix", "equalScalar", "DenseMatrix", "concat", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo07xSSf", "createMatAlgo07xSSf", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "createEqualNumber", "_ref2", "x", "y", "name", "dependencies", "createEqualText", "factory", "_ref", "typed", "compareText", "isZero", "x", "y", "name", "dependencies", "createSmaller", "factory", "_ref", "typed", "config", "matrix", "DenseMatrix", "concat", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo07xSSf", "createMatAlgo07xSSf", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "compareUnits", "createCompareUnits", "createSmallerNumber", "x", "y", "nearlyEqual", "_ref2", "name", "dependencies", "createSmallerEq", "factory", "_ref", "typed", "config", "matrix", "DenseMatrix", "concat", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo07xSSf", "createMatAlgo07xSSf", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "compareUnits", "createCompareUnits", "createSmallerEqNumber", "x", "y", "nearlyEqual", "_ref2", "name", "dependencies", "createLarger", "factory", "_ref", "typed", "config", "matrix", "DenseMatrix", "concat", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo07xSSf", "createMatAlgo07xSSf", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "compareUnits", "createCompareUnits", "createLargerNumber", "x", "y", "nearlyEqual", "_ref2", "name", "dependencies", "createLargerEq", "factory", "_ref", "typed", "config", "matrix", "DenseMatrix", "concat", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo07xSSf", "createMatAlgo07xSSf", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "compareUnits", "createCompareUnits", "createLargerEqNumber", "x", "y", "nearlyEqual", "_ref2", "name", "dependencies", "createDeepEqual", "factory", "_ref", "typed", "equal", "x", "y", "_deepEqual", "len", "i", "name", "dependencies", "createUnequal", "factory", "_ref", "typed", "config", "equalScalar", "matrix", "DenseMatrix", "concat", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo07xSSf", "createMatAlgo07xSSf", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "createUnequalNumber", "_unequal", "x", "y", "_ref2", "name", "dependencies", "createPartitionSelect", "factory", "_ref", "typed", "isNumeric", "isNaN", "compare", "asc", "desc", "a", "b", "x", "k", "_partitionSelect", "isInteger", "isMatrix", "size", "quickSelect", "arr", "i", "from", "to", "r", "w", "pivot", "tmp", "name", "dependencies", "createSort", "factory", "_ref", "typed", "matrix", "compare", "compareNatural", "compareAsc", "compareDesc", "a", "b", "x", "_arrayIsVector", "_matrixIsVector", "_comparator", "order", "array", "arraySize", "name", "dependencies", "createMax", "factory", "_ref", "typed", "config", "numeric", "larger", "_max", "array", "dim", "reduce", "_largest", "args", "containsCollections", "x", "y", "err", "improveErrorMessage", "res", "deepForEach", "value", "safeNumberType", "name", "dependencies", "createMin", "factory", "_ref", "typed", "config", "numeric", "smaller", "_min", "array", "dim", "reduce", "_smallest", "args", "containsCollections", "x", "y", "err", "improveErrorMessage", "min", "deepForEach", "value", "safeNumberType", "name", "dependencies", "createImmutableDenseMatrixClass", "factory", "_ref", "smaller", "DenseMatrix", "ImmutableDenseMatrix", "data", "datatype", "isString", "isMatrix", "isArray", "matrix", "typeOf", "index", "m", "clone", "json", "v", "name", "dependencies", "createIndexClass", "factory", "_ref", "ImmutableDenseMatrix", "getMatrixDataType", "Index", "ranges", "i", "ii", "arg", "argIsArray", "isArray", "argIsMatrix", "isMatrix", "sourceSize", "isRange", "m", "_createImmutableMatrix", "_booleansArrayToNumbersForIndex", "size", "l", "isInteger", "index", "clone", "d", "values", "range", "callback", "dim", "array", "dimension", "strings", "json", "booleanArrayIndex", "indexOfNumbers", "bool", "idx", "name", "dependencies", "createFibonacciHeapClass", "factory", "_ref", "smaller", "larger", "oneOverLogPhi", "FibonacciHeap", "key", "value", "node", "minimum", "numberOfChildren", "x", "tempRight", "_findMinimumNode", "_decreaseKey", "parent", "_cut", "_cascadingCut", "_linkNodes", "size", "arraySize", "array", "numRoots", "y", "d", "next", "temp", "i", "name", "dependencies", "createSpaClass", "factory", "_ref", "addScalar", "equalScalar", "FibonacciHeap", "Spa", "i", "v", "node", "from", "to", "callback", "heap", "values", "nodes", "n", "j", "nodei", "nodej", "lruQueue", "limit", "size", "base", "queue", "map", "index", "del", "id", "oldIndex", "nuIndex", "memoize", "fn", "hasher", "limit", "lruQueue", "args", "i", "hash", "newVal", "createBigNumberE", "memoize", "BigNumber", "hasher", "createBigNumberPhi", "createBigNumberPi", "createBigNumberTau", "args", "ownKeys", "r", "t", "o", "_objectSpread", "_defineProperty", "name", "dependencies", "createUnitClass", "factory", "_ref", "on", "config", "addScalar", "subtractScalar", "multiplyScalar", "divideScalar", "pow", "abs", "fix", "round", "equal", "isNumeric", "format", "_number", "Complex", "_BigNumber", "_Fraction", "toNumber", "Unit", "value", "valuelessUnit", "isComplex", "BASE_DIMENSIONS", "x", "u", "isUnit", "_extends", "text", "index", "c", "skipWhitespace", "next", "isDigitDot", "isDigit", "revert", "oldIndex", "parseNumber", "number", "tentativeNumber", "tentativeIndex", "parseUnit", "unitName", "firstC", "parseCharacter", "toFind", "str", "options", "unit", "powerMultiplierCurrent", "expectingUnit", "valueStr", "powerMultiplierStack", "powerMultiplierStackProduct", "uStr", "oldC", "res", "_findUnit", "power", "p", "i", "baseDim", "UNIT_SYSTEMS", "clone", "hasOwnProperty", "typeOf", "convert", "unitValue", "unitPrefixValue", "unitPower", "prefixValue", "memoize", "UNITS", "prefix", "_name", "endsWith", "_unit", "prefixLen", "prefixName", "_prefix", "args", "base", "BASE_UNITS", "other", "_other", "_i", "inverted", "valThis", "valOther", "getNumericIfUnitless", "numerator", "_i2", "_i3", "ret", "nominalOffset", "unitOffset", "thisUnitValue", "thisNominalOffset", "thisUnitOffset", "otherUnitValue", "otherNominalOffset", "otherUnitOffset", "json", "_json$unit", "proposedUnitList", "matchingBase", "key", "currentUnitSystem", "matchingUnit", "missingBaseDim", "strNum", "strDen", "nNum", "nDen", "_i4", "simp", "isImaginary", "unitStr", "absValue", "absUnitValue", "bestPrefix", "bestDiff", "prefixes", "diff", "parts", "xNumeric", "xRounded", "xFixed", "isNearlyEqual", "y", "testSum", "_i5", "PREFIXES", "BASE_UNIT_NONE", "UNIT_NONE", "ALIASES", "calculateAngleValues", "pi", "createBigNumberPi", "curr", "prev", "_key", "type", "_key2", "_name2", "_unit2", "alias", "_key3", "assertUnitNameIsValid", "obj", "_key4", "lastUnit", "_key5", "defUnit", "aliases", "offset", "definition", "baseName", "ex", "newUnit", "anyMatch", "_i7", "match", "j", "_newBaseUnit", "b", "newBaseUnit", "_i6", "_i8", "aliasName", "_alias", "_key6", "name", "dependencies", "createUnitFunction", "factory", "_ref", "typed", "Unit", "x", "value", "unit", "self", "deepMap", "name", "dependencies", "createSparse", "factory", "_ref", "typed", "SparseMatrix", "datatype", "data", "name", "dependencies", "createCreateUnit", "factory", "_ref", "typed", "Unit", "obj", "options", "def", "name", "dependencies", "createAcos", "factory", "_ref", "typed", "config", "Complex", "x", "name", "dependencies", "createAcosh", "factory", "_ref", "typed", "config", "Complex", "x", "acoshNumber", "name", "dependencies", "createAcot", "factory", "_ref", "typed", "_BigNumber", "acotNumber", "x", "name", "dependencies", "createAcoth", "factory", "_ref", "typed", "config", "Complex", "_BigNumber", "x", "acothNumber", "name", "dependencies", "createAcsc", "factory", "_ref", "typed", "config", "Complex", "_BigNumber", "x", "acscNumber", "name", "dependencies", "createAcsch", "factory", "_ref", "typed", "_BigNumber", "acschNumber", "x", "name", "dependencies", "createAsec", "factory", "_ref", "typed", "config", "Complex", "_BigNumber", "x", "asecNumber", "name", "dependencies", "createAsech", "factory", "_ref", "typed", "config", "Complex", "_BigNumber", "x", "xInv", "asechNumber", "ret", "name", "dependencies", "createAsin", "factory", "_ref", "typed", "config", "Complex", "x", "name", "dependencies", "createAsinh", "factory", "_ref", "typed", "asinhNumber", "x", "name", "dependencies", "createAtan", "factory", "_ref", "typed", "x", "name", "dependencies", "createAtan2", "factory", "_ref", "typed", "matrix", "equalScalar", "BigNumber", "DenseMatrix", "concat", "matAlgo02xDS0", "createMatAlgo02xDS0", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo09xS0Sf", "createMatAlgo09xS0Sf", "matAlgo11xS0s", "createMatAlgo11xS0s", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "y", "name", "dependencies", "createAtanh", "factory", "_ref", "typed", "config", "Complex", "x", "atanhNumber", "createTrigUnit", "factory", "_ref", "typed", "self", "x", "name", "dependencies", "createCos", "factory", "_ref", "typed", "trigUnit", "createTrigUnit", "x", "name", "dependencies", "createCosh", "factory", "_ref", "typed", "cosh", "x", "name", "dependencies", "createCot", "factory", "_ref", "typed", "_BigNumber", "trigUnit", "createTrigUnit", "cotNumber", "x", "name", "dependencies", "createCoth", "factory", "_ref", "typed", "_BigNumber", "cothNumber", "x", "name", "dependencies", "createCsc", "factory", "_ref", "typed", "_BigNumber", "trigUnit", "createTrigUnit", "cscNumber", "x", "name", "dependencies", "createCsch", "factory", "_ref", "typed", "_BigNumber", "cschNumber", "x", "name", "dependencies", "createSec", "factory", "_ref", "typed", "_BigNumber", "trigUnit", "createTrigUnit", "secNumber", "x", "name", "dependencies", "createSech", "factory", "_ref", "typed", "_BigNumber", "sechNumber", "x", "name", "dependencies", "createSin", "factory", "_ref", "typed", "trigUnit", "createTrigUnit", "x", "name", "dependencies", "createSinh", "factory", "_ref", "typed", "sinhNumber", "x", "name", "dependencies", "createTan", "factory", "_ref", "typed", "trigUnit", "createTrigUnit", "x", "name", "dependencies", "createTanh", "factory", "_ref", "typed", "tanh", "x", "name", "dependencies", "createSetCartesian", "factory", "_ref", "typed", "size", "subset", "compareNatural", "Index", "DenseMatrix", "a1", "a2", "result", "b1", "flatten", "b2", "i", "j", "name", "dependencies", "createSetDifference", "factory", "_ref", "typed", "size", "subset", "compareNatural", "Index", "DenseMatrix", "a1", "a2", "result", "flatten", "b1", "identify", "b2", "inb2", "i", "j", "generalize", "name", "dependencies", "createSetDistinct", "factory", "_ref", "typed", "size", "subset", "compareNatural", "Index", "DenseMatrix", "result", "b", "flatten", "i", "name", "dependencies", "createSetIntersect", "factory", "_ref", "typed", "size", "subset", "compareNatural", "Index", "DenseMatrix", "a1", "a2", "result", "b1", "identify", "flatten", "b2", "i", "j", "generalize", "name", "dependencies", "createSetIsSubset", "factory", "_ref", "typed", "size", "subset", "compareNatural", "Index", "a1", "a2", "b1", "identify", "flatten", "b2", "inb2", "i", "j", "name", "dependencies", "createSetMultiplicity", "factory", "_ref", "typed", "size", "subset", "compareNatural", "Index", "e", "b", "flatten", "count", "i", "name", "dependencies", "createSetPowerset", "factory", "_ref", "typed", "size", "subset", "compareNatural", "Index", "a", "b", "flatten", "result", "number", "_subset", "_sort", "array", "bitarray", "i", "temp", "j", "name", "dependencies", "createSetSize", "factory", "_ref", "typed", "compareNatural", "a", "flatten", "unique", "b", "count", "i", "name", "dependencies", "createSetSymDifference", "factory", "_ref", "typed", "size", "concat", "subset", "setDifference", "Index", "a1", "a2", "flatten", "b1", "b2", "name", "dependencies", "createSetUnion", "factory", "_ref", "typed", "size", "concat", "subset", "setIntersect", "setSymDifference", "Index", "a1", "a2", "flatten", "b1", "b2", "name", "dependencies", "createAdd", "factory", "_ref", "typed", "matrix", "addScalar", "equalScalar", "DenseMatrix", "SparseMatrix", "concat", "matAlgo01xDSid", "createMatAlgo01xDSid", "matAlgo04xSidSid", "createMatAlgo04xSidSid", "matAlgo10xSids", "createMatAlgo10xSids", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "self", "x", "y", "rest", "result", "i", "name", "dependencies", "createHypot", "factory", "_ref", "typed", "abs", "addScalar", "divideScalar", "multiplyScalar", "sqrt", "smaller", "isPositive", "_hypot", "M", "flatten", "args", "result", "largest", "i", "isComplex", "value", "name", "dependencies", "createNorm", "factory", "_ref", "typed", "abs", "add", "pow", "conj", "sqrt", "multiply", "equalScalar", "larger", "smaller", "matrix", "ctranspose", "eigs", "x", "_norm", "p", "_vectorNormPlusInfinity", "pinf", "value", "v", "_vectorNormMinusInfinity", "ninf", "_vectorNorm", "n", "_matrixNormFrobenius", "fro", "index", "_matrixNormOne", "c", "maxc", "j", "cj", "_matrixNormTwo", "sizeX", "tx", "squaredX", "eigenVals", "rho", "_matrixNormInfinity", "r", "maxr", "i", "ri", "_matrixNorm", "name", "dependencies", "createDot", "factory", "_ref", "typed", "addScalar", "multiplyScalar", "conj", "size", "_denseDot", "_sparseDot", "_validateDim", "x", "y", "xSize", "_size", "ySize", "xLen", "yLen", "a", "b", "N", "adata", "isMatrix", "adt", "bdata", "bdt", "aIsColumn", "bIsColumn", "add", "mul", "dt", "c", "i", "_c", "_i", "_c2", "_i2", "_c3", "_i3", "xindex", "xvalues", "yindex", "yvalues", "j", "I", "J", "name", "dependencies", "createTrace", "factory", "_ref", "typed", "matrix", "add", "x", "_denseTrace", "_sparseTrace", "clone", "m", "size", "data", "format", "rows", "cols", "sum", "i", "values", "index", "ptr", "columns", "j", "k0", "k1", "k", "name", "dependencies", "createIndex", "factory", "_ref", "typed", "Index", "args", "ranges", "arg", "isBigNumber", "isArray", "isMatrix", "elem", "res", "keywords", "name", "dependencies", "createNode", "factory", "_ref", "mathWithTransform", "_validateScope", "scope", "symbol", "keywords", "Node", "expr", "args", "context", "evaluate", "s", "createMap", "math", "argNames", "callback", "node", "isNode", "_traverse", "child", "path", "parent", "_transform", "replacement", "nodes", "other", "deepStrictEqual", "options", "customString", "errorTransform", "err", "IndexError", "accessFactory", "_ref", "subset", "object", "index", "getSafeProperty", "err", "errorTransform", "name", "dependencies", "createAccessorNode", "factory", "_ref", "subset", "Node", "access", "accessFactory", "needParenthesis", "node", "isAccessorNode", "isArrayNode", "isConstantNode", "isFunctionNode", "isObjectNode", "isParenthesisNode", "isSymbolNode", "AccessorNode", "object", "index", "isNode", "isIndexNode", "math", "argNames", "evalObject", "evalIndex", "prop", "scope", "args", "context", "getSafeProperty", "callback", "options", "json", "_defineProperty", "name", "dependencies", "createArrayNode", "factory", "_ref", "Node", "ArrayNode", "items", "isNode", "math", "argNames", "evalItems", "map", "item", "asMatrix", "matrix", "scope", "args", "context", "evalItem", "callback", "i", "node", "options", "json", "itemsToTex", "nested", "mixedItems", "isArrayNode", "itemsFormRow", "itemSep", "itemsTex", "_defineProperty", "assignFactory", "_ref", "subset", "matrix", "object", "index", "value", "result", "item", "setSafeProperty", "err", "errorTransform", "properties", "unwrapParen", "_node", "parenthesis", "node", "isParenthesisNode", "getPrecedence", "implicit", "parent", "identifier", "precedence", "i", "leftArg", "isConstantNode", "rule2Node", "getAssociativity", "index", "property", "hasOwnProperty", "isAssociativeWith", "nodeA", "nodeB", "a", "b", "identifierA", "identifierB", "getOperator", "fn", "group", "name", "dependencies", "createAssignmentNode", "factory", "_ref", "subset", "matrix", "Node", "access", "accessFactory", "assign", "assignFactory", "needParenthesis", "node", "parenthesis", "implicit", "precedence", "getPrecedence", "exprPrecedence", "AssignmentNode", "object", "index", "value", "isSymbolNode", "isAccessorNode", "isIndexNode", "isNode", "math", "argNames", "evalObject", "evalIndex", "evalValue", "prop", "scope", "args", "context", "setSafeProperty", "childObject", "evalParentObject", "parentProp", "parent", "getSafeProperty", "evalParentIndex", "parentIndex", "callback", "options", "json", "_defineProperty", "name", "dependencies", "createBlockNode", "factory", "_ref", "ResultSet", "Node", "BlockNode", "blocks", "block", "node", "visible", "isNode", "math", "argNames", "evalBlocks", "map", "scope", "args", "context", "results", "forEach", "result", "callback", "i", "options", "param", "json", "_defineProperty", "name", "dependencies", "createConditionalNode", "factory", "_ref", "Node", "testCondition", "condition", "isBigNumber", "isComplex", "isUnit", "typeOf", "ConditionalNode", "trueExpr", "falseExpr", "isNode", "math", "argNames", "evalCondition", "evalTrueExpr", "evalFalseExpr", "scope", "args", "context", "callback", "options", "parenthesis", "precedence", "getPrecedence", "conditionPrecedence", "truePrecedence", "falsePrecedence", "json", "_defineProperty", "import_escape_latex", "latexSymbols", "latexOperators", "latexFunctions", "node", "options", "defaultTemplate", "latexUnits", "escapeLatex", "string", "escapeLatexLib", "toSymbol", "name", "isUnit", "hasOwnProperty", "name", "dependencies", "createConstantNode", "factory", "_ref", "Node", "ConstantNode", "value", "math", "argNames", "callback", "options", "format", "typeOf", "json", "type", "escapeLatex", "finite", "index", "_defineProperty", "name", "dependencies", "createFunctionAssignmentNode", "factory", "_ref", "typed", "Node", "needParenthesis", "node", "parenthesis", "implicit", "precedence", "getPrecedence", "exprPrecedence", "FunctionAssignmentNode", "params", "expr", "isNode", "keywords", "paramNames", "param", "_name", "math", "argNames", "childArgNames", "forEach", "evalExpr", "signature", "join", "syntax", "scope", "args", "context", "signatures", "childArgs", "i", "fn", "callback", "options", "types", "index", "json", "escape", "toSymbol", "_defineProperty", "name", "dependencies", "createIndexNode", "factory", "_ref", "Node", "size", "IndexNode", "dimensions", "dotNotation", "isNode", "math", "argNames", "evalDimensions", "map", "dimension", "i", "needsEnd", "node", "childArgNames", "_evalDimension", "scope", "args", "context", "isMatrix", "isArray", "isString", "typeOf", "s", "childArgs", "index", "getSafeProperty", "evalDimension", "callback", "isConstantNode", "options", "json", "escape", "range", "_defineProperty", "name", "dependencies", "createObjectNode", "factory", "_ref", "Node", "ObjectNode", "properties", "key", "isNode", "math", "argNames", "evalEntries", "hasOwnProperty", "stringifiedKey", "stringify", "parsedKey", "prop", "getSafeProperty", "scope", "args", "context", "obj", "_key", "callback", "options", "entries", "json", "escape", "tex", "_defineProperty", "createSubScope", "parentScope", "args", "PartitionedMap", "ObjectWrappingMap", "name", "dependencies", "createOperatorNode", "factory", "_ref", "Node", "startsWithConstant", "expr", "parenthesis", "curNode", "isParenthesisNode", "isConstantNode", "isOperatorNode", "calculateNecessaryParentheses", "root", "implicit", "args", "latex", "precedence", "getPrecedence", "associativity", "getAssociativity", "arg", "result", "operandPrecedence", "operandIdentifier", "rootIdentifier", "properties", "lhsParens", "lhsPrecedence", "assocWithLhs", "isAssociativeWith", "rhsParens", "rhsPrecedence", "assocWithRhs", "_rootIdentifier", "lhsIdentifier", "rhsIdentifier", "argPrecedence", "assocWithArg", "argAssociativity", "i", "OperatorNode", "op", "fn", "isPercentage", "isNode", "math", "argNames", "isSafeMethod", "getSafeProperty", "evalArgs", "map", "rawArgs", "scope", "context", "createSubScope", "evalArg0", "_evalArg", "evalArg1", "evalArg", "callback", "options", "parens", "assoc", "operand", "opIsNamed", "lhs", "rhs", "stringifiedArgs", "index", "json", "escape", "latexOperators", "lhsTex", "rhsTex", "texifiedArgs", "_defineProperty", "name", "dependencies", "createParenthesisNode", "factory", "_ref", "Node", "ParenthesisNode", "content", "isNode", "math", "argNames", "callback", "options", "json", "_defineProperty", "name", "dependencies", "createRangeNode", "factory", "_ref", "Node", "calculateNecessaryParentheses", "node", "parenthesis", "implicit", "precedence", "getPrecedence", "parens", "startPrecedence", "stepPrecedence", "endPrecedence", "RangeNode", "start", "end", "step", "isNode", "endSymbols", "isSymbolNode", "math", "argNames", "range", "evalStart", "evalEnd", "evalStep", "scope", "args", "context", "callback", "options", "str", "json", "_defineProperty", "name", "dependencies", "createRelationalNode", "factory", "_ref", "Node", "operatorMap", "RelationalNode", "conditionals", "params", "math", "argNames", "self", "compiled", "p", "scope", "args", "context", "evalLhs", "evalRhs", "i", "condFn", "getSafeProperty", "callback", "n", "options", "parenthesis", "precedence", "getPrecedence", "paramStrings", "index", "paramPrecedence", "ret", "json", "escape", "latexOperators", "_defineProperty", "name", "dependencies", "createSymbolNode", "factory", "_ref", "math", "Unit", "Node", "isValuelessUnit", "SymbolNode", "argNames", "scope", "args", "context", "getSafeProperty", "isUnit", "callback", "options", "escape", "json", "symbol", "toSymbol", "name", "dependencies", "createFunctionNode", "factory", "_ref", "_FunctionNode", "math", "Node", "SymbolNode", "strin", "entity", "format", "expandTemplate", "template", "node", "options", "latex", "regex", "inputPos", "match", "property", "isNode", "arg", "index", "FunctionNode", "fn", "args", "argNames", "evalArgs", "isSymbolNode", "_name", "_rawArgs", "scope", "context", "getSafeProperty", "createSubScope", "values", "evalArg", "isRaw", "resolveFn", "value", "rawArgs", "evalArg0", "evalArg1", "isAccessorNode", "isIndexNode", "evalObject", "prop", "_rawArgs2", "object", "getSafeMethod", "fnExpr", "evalFn", "_rawArgs3", "callback", "i", "customString", "hasOwnProperty", "isFunctionAssignmentNode", "escape", "customTex", "latexConverter", "latexFunctions", "customToTex", "defaultTemplate", "_defineProperty", "json", "name", "dependencies", "createParse", "factory", "_ref", "typed", "numeric", "config", "AccessorNode", "ArrayNode", "AssignmentNode", "BlockNode", "ConditionalNode", "ConstantNode", "FunctionAssignmentNode", "FunctionNode", "IndexNode", "ObjectNode", "OperatorNode", "ParenthesisNode", "RangeNode", "RelationalNode", "SymbolNode", "parse", "expression", "parseStart", "expressions", "parseMultiple", "options", "extraNodes", "deepMap", "elem", "TOKENTYPE", "DELIMITERS", "NAMED_DELIMITERS", "CONSTANTS", "NUMERIC_CONSTANTS", "ESCAPE_CHARACTERS", "initialState", "currentString", "state", "length", "currentCharacter", "next", "prevCharacter", "nextCharacter", "getToken", "c1", "c2", "c3", "_c", "createSyntaxError", "hasOwnProperty", "getTokenSkipNewline", "openParams", "closeParams", "c", "cPrev", "cNext", "high", "low", "nestingLevel", "_extends", "node", "parseBlock", "createError", "blocks", "visible", "parseAssignment", "args", "value", "valid", "parseConditional", "isSymbolNode", "isAccessorNode", "isFunctionNode", "arg", "index", "parseLogicalOr", "prev", "condition", "trueExpr", "falseExpr", "parseLogicalXor", "parseLogicalAnd", "parseBitwiseOr", "parseBitwiseXor", "parseBitwiseAnd", "parseRelational", "params", "parseShift", "conditionals", "operators", "cond", "fn", "parseConversion", "parseRange", "parseAddSubtract", "parseMultiplyDivide", "rightNode", "last", "parseImplicitMultiplication", "parseRule2", "isConstantNode", "isOperatorNode", "parseModulusPercentage", "tokenStates", "rule2Node", "parseUnary", "parsePow", "parseLeftHandOperators", "parseCustomNodes", "parseAccessors", "CustomNode", "parseSymbol", "parseString", "types", "isPropertyName", "dotNotation", "str", "parseStringToken", "parseMatrix", "quote", "char", "escapeChar", "unicode", "array", "rows", "cols", "row", "parseRow", "r", "parseObject", "len", "key", "properties", "parseNumber", "numberStr", "numericType", "safeNumberType", "parseParentheses", "parseEnd", "col", "message", "error", "name", "dependencies", "createCompile", "factory", "_ref", "typed", "parse", "expr", "deepMap", "entry", "name", "dependencies", "createEvaluate", "factory", "_ref", "typed", "parse", "expr", "scope", "createEmptyMap", "deepMap", "entry", "name", "dependencies", "createParserClass", "factory", "_ref", "evaluate", "parse", "Parser", "createEmptyMap", "expr", "toObject", "isValidVariableName", "i", "cPrev", "c", "cNext", "valid", "value", "name", "dependencies", "createParser", "factory", "_ref", "typed", "Parser", "name", "dependencies", "createLup", "factory", "_ref", "typed", "matrix", "abs", "addScalar", "divideScalar", "multiplyScalar", "subtractScalar", "larger", "equalScalar", "unaryMinus", "DenseMatrix", "SparseMatrix", "Spa", "m", "_denseLUP", "_sparseLUP", "a", "r", "rows", "columns", "n", "data", "clone", "ldata", "lsize", "udata", "usize", "i", "j", "k", "p", "min", "s", "pi", "pabsv", "vjj", "v", "absv", "vij", "l", "u", "pv", "values", "index", "ptr", "lvalues", "lindex", "lptr", "uvalues", "uindex", "uptr", "pvCo", "pvOc", "swapIndeces", "x", "y", "kx", "ky", "_loop", "spa", "k0", "k1", "vkj", "vik", "name", "dependencies", "createQr", "factory", "_ref", "typed", "matrix", "zeros", "identity", "isZero", "equal", "sign", "sqrt", "conj", "unaryMinus", "addScalar", "divideScalar", "multiplyScalar", "subtractScalar", "complex", "_extends", "m", "_denseQR", "_sparseQR", "a", "r", "_denseQRimpl", "rows", "cols", "Q", "Qdata", "R", "Rdata", "i", "j", "k", "w", "pivot", "sgn", "conjSgn", "alphaSquared", "alpha", "u1", "tau", "s", "ret", "zero", "csPermute", "a", "pinv", "q", "values", "avalues", "aindex", "aptr", "asize", "adt", "m", "n", "cvalues", "cindex", "cptr", "nz", "k", "j", "t0", "t1", "t", "r", "csTdfs", "j", "k", "w", "head", "next", "post", "stack", "top", "p", "i", "csPost", "parent", "n", "k", "j", "post", "w", "head", "next", "stack", "csTdfs", "csEtree", "a", "ata", "aindex", "aptr", "asize", "m", "n", "parent", "w", "ancestor", "prev", "i", "inext", "k", "p0", "p1", "p", "r", "csFkeep", "a", "callback", "other", "avalues", "aindex", "aptr", "asize", "n", "nz", "j", "p", "csFlip", "i", "name", "dependencies", "createCsAmd", "factory", "_ref", "add", "multiply", "transpose", "order", "a", "asize", "m", "n", "lemax", "dense", "cm", "_createTargetMatrix", "csFkeep", "_diag", "cindex", "cptr", "cnz", "P", "W", "len", "nv", "next", "head", "elen", "degree", "w", "hhead", "last", "mark", "_initializeQuotientGraph", "nel", "_initializeDegreeLists", "mindeg", "i", "j", "k", "k1", "k2", "e", "pj", "ln", "nvi", "pk", "eln", "p1", "p2", "pn", "h", "d", "elenk", "nvk", "dk", "p", "pk1", "pk2", "csFlip", "_wclear", "wnvi", "dext", "p3", "p4", "nvj", "jlast", "ok", "csTdfs", "at", "tindex", "tptr", "csLeaf", "i", "j", "w", "first", "maxfirst", "prevleaf", "ancestor", "sparent", "jleaf", "q", "jprev", "name", "dependencies", "createCsCounts", "factory", "_ref", "transpose", "a", "parent", "post", "ata", "asize", "m", "n", "i", "j", "k", "J", "p", "p0", "p1", "s", "w", "ancestor", "maxfirst", "prevleaf", "first", "head", "next", "colcount", "at", "tindex", "tptr", "r", "csLeaf", "name", "dependencies", "createCsSqr", "factory", "_ref", "add", "multiply", "transpose", "csAmd", "createCsAmd", "csCounts", "createCsCounts", "order", "a", "qr", "aptr", "asize", "n", "k", "s", "c", "csPermute", "csEtree", "post", "csPost", "_vcount", "aindex", "m", "parent", "pinv", "leftmost", "w", "next", "head", "tail", "nque", "i", "p", "p0", "p1", "pa", "csMarked", "w", "j", "csMark", "w", "j", "csFlip", "csUnflip", "i", "csFlip", "csDfs", "j", "g", "top", "xi", "pinv", "index", "ptr", "size", "n", "i", "p", "p2", "head", "jnew", "csMarked", "csMark", "csUnflip", "done", "csReach", "g", "b", "k", "xi", "pinv", "gptr", "gsize", "bindex", "bptr", "n", "p", "p0", "p1", "top", "i", "csMarked", "csDfs", "csMark", "name", "dependencies", "createCsSpsolve", "factory", "_ref", "divideScalar", "multiply", "subtract", "g", "b", "k", "xi", "x", "pinv", "lo", "gvalues", "gindex", "gptr", "gsize", "n", "bvalues", "bindex", "bptr", "p", "p0", "p1", "q", "top", "csReach", "px", "j", "J", "i", "name", "dependencies", "createCsLu", "factory", "_ref", "abs", "divideScalar", "multiply", "subtract", "larger", "largerEq", "SparseMatrix", "csSpsolve", "createCsSpsolve", "m", "s", "tol", "size", "n", "q", "lnz", "unz", "lvalues", "lindex", "lptr", "L", "uvalues", "uindex", "uptr", "U", "pinv", "i", "p", "x", "xi", "k", "col", "top", "ipiv", "a", "xabs", "pivot", "name", "dependencies", "createSlu", "factory", "_ref", "typed", "abs", "add", "multiply", "transpose", "divideScalar", "subtract", "larger", "largerEq", "SparseMatrix", "csSqr", "createCsSqr", "csLu", "createCsLu", "a", "order", "threshold", "isInteger", "s", "f", "csIpvec", "p", "b", "k", "x", "name", "dependencies", "createLusolve", "factory", "_ref", "typed", "matrix", "lup", "slu", "usolve", "lsolve", "DenseMatrix", "solveValidation", "createSolveValidation", "a", "b", "d", "x", "_lusolve", "order", "threshold", "_toMatrix", "isMatrix", "isArray", "l", "u", "p", "q", "csIpvec", "y", "name", "dependencies", "createPolynomialRoot", "factory", "_ref", "typed", "isZero", "equalScalar", "add", "subtract", "multiply", "divide", "sqrt", "unaryMinus", "cbrt", "typeOf", "im", "re", "constant", "restCoeffs", "coeffs", "c", "b", "a", "denom", "d1", "d2", "discriminant", "d", "_c", "_b", "_a", "_denom", "D0_1", "D0_2", "D1_1", "D1_2", "Delta0", "Delta1", "discriminant1", "discriminant2", "Ccubed", "allRoots", "rawRoots", "C", "r", "name", "dependencies", "createHelpClass", "factory", "_ref", "evaluate", "Help", "doc", "desc", "configChanged", "originalConfig", "scope", "newConfig", "i", "expr", "res", "e", "isHelp", "format", "obj", "clone", "json", "prop", "name", "dependencies", "createChainClass", "factory", "_ref", "on", "math", "typed", "Chain", "value", "isChain", "format", "json", "createProxy", "fn", "chainify", "createLazyProxy", "resolver", "lazy", "args", "i", "sigObject", "arg0", "arg1", "_loop", "_name", "hasOwnProperty", "excludedNames", "path", "eDocs", "falseDocs", "iDocs", "InfinityDocs", "LN10Docs", "LN2Docs", "LOG10EDocs", "LOG2EDocs", "NaNDocs", "nullDocs", "phiDocs", "piDocs", "SQRT12Docs", "SQRT2Docs", "tauDocs", "trueDocs", "versionDocs", "bignumberDocs", "bigintDocs", "booleanDocs", "complexDocs", "createUnitDocs", "fractionDocs", "indexDocs", "matrixDocs", "numberDocs", "sparseDocs", "splitUnitDocs", "stringDocs", "unitDocs", "configDocs", "importDocs", "typedDocs", "derivativeDocs", "leafCountDocs", "lsolveDocs", "lsolveAllDocs", "lupDocs", "lusolveDocs", "polynomialRootDocs", "qrDocs", "rationalizeDocs", "resolveDocs", "simplifyDocs", "simplifyConstantDocs", "simplifyCoreDocs", "sluDocs", "symbolicEqualDocs", "usolveDocs", "usolveAllDocs", "absDocs", "addDocs", "cbrtDocs", "ceilDocs", "cubeDocs", "divideDocs", "dotDivideDocs", "dotMultiplyDocs", "dotPowDocs", "expDocs", "expmDocs", "expm1Docs", "fixDocs", "floorDocs", "gcdDocs", "hypotDocs", "invmodDocs", "lcmDocs", "logDocs", "log10Docs", "log1pDocs", "log2Docs", "modDocs", "multiplyDocs", "normDocs", "nthRootDocs", "nthRootsDocs", "powDocs", "roundDocs", "signDocs", "sqrtDocs", "sqrtmDocs", "sylvesterDocs", "schurDocs", "lyapDocs", "squareDocs", "subtractDocs", "unaryMinusDocs", "unaryPlusDocs", "xgcdDocs", "bitAndDocs", "bitNotDocs", "bitOrDocs", "bitXorDocs", "leftShiftDocs", "rightArithShiftDocs", "rightLogShiftDocs", "bellNumbersDocs", "catalanDocs", "compositionDocs", "stirlingS2Docs", "argDocs", "conjDocs", "imDocs", "reDocs", "evaluateDocs", "helpDocs", "distanceDocs", "intersectDocs", "andDocs", "notDocs", "orDocs", "xorDocs", "columnDocs", "concatDocs", "countDocs", "crossDocs", "ctransposeDocs", "detDocs", "diagDocs", "diffDocs", "dotDocs", "eigsDocs", "filterDocs", "flattenDocs", "forEachDocs", "getMatrixDataTypeDocs", "identityDocs", "invDocs", "pinvDocs", "kronDocs", "mapDocs", "matrixFromColumnsDocs", "matrixFromFunctionDocs", "matrixFromRowsDocs", "onesDocs", "partitionSelectDocs", "rangeDocs", "reshapeDocs", "resizeDocs", "rotateDocs", "rotationMatrixDocs", "rowDocs", "sizeDocs", "sortDocs", "squeezeDocs", "subsetDocs", "traceDocs", "transposeDocs", "zerosDocs", "fftDocs", "ifftDocs", "combinationsDocs", "combinationsWithRepDocs", "factorialDocs", "gammaDocs", "lgammaDocs", "kldivergenceDocs", "multinomialDocs", "permutationsDocs", "pickRandomDocs", "randomDocs", "randomIntDocs", "compareDocs", "compareNaturalDocs", "compareTextDocs", "deepEqualDocs", "equalDocs", "equalTextDocs", "largerDocs", "largerEqDocs", "smallerDocs", "smallerEqDocs", "unequalDocs", "setCartesianDocs", "setDifferenceDocs", "setDistinctDocs", "setIntersectDocs", "setIsSubsetDocs", "setMultiplicityDocs", "setPowersetDocs", "setSizeDocs", "setSymDifferenceDocs", "setUnionDocs", "zpk2tfDocs", "freqzDocs", "erfDocs", "zetaDocs", "madDocs", "maxDocs", "meanDocs", "medianDocs", "minDocs", "modeDocs", "prodDocs", "quantileSeqDocs", "stdDocs", "cumSumDocs", "sumDocs", "varianceDocs", "corrDocs", "acosDocs", "acoshDocs", "acotDocs", "acothDocs", "acscDocs", "acschDocs", "asecDocs", "asechDocs", "asinDocs", "asinhDocs", "atanDocs", "atan2Docs", "atanhDocs", "cosDocs", "coshDocs", "cotDocs", "cothDocs", "cscDocs", "cschDocs", "secDocs", "sechDocs", "sinDocs", "sinhDocs", "tanDocs", "tanhDocs", "toDocs", "binDocs", "cloneDocs", "formatDocs", "hasNumericValueDocs", "hexDocs", "isIntegerDocs", "isNaNDocs", "isNegativeDocs", "isNumericDocs", "isPositiveDocs", "isPrimeDocs", "isZeroDocs", "numericDocs", "octDocs", "printDocs", "typeOfDocs", "solveODEDocs", "embeddedDocs", "bignumberDocs", "bigintDocs", "booleanDocs", "complexDocs", "createUnitDocs", "fractionDocs", "indexDocs", "matrixDocs", "numberDocs", "sparseDocs", "splitUnitDocs", "stringDocs", "unitDocs", "eDocs", "falseDocs", "iDocs", "InfinityDocs", "LN2Docs", "LN10Docs", "LOG2EDocs", "LOG10EDocs", "NaNDocs", "nullDocs", "piDocs", "phiDocs", "SQRT12Docs", "SQRT2Docs", "tauDocs", "trueDocs", "versionDocs", "derivativeDocs", "lsolveDocs", "lsolveAllDocs", "lupDocs", "lusolveDocs", "leafCountDocs", "polynomialRootDocs", "resolveDocs", "simplifyDocs", "simplifyConstantDocs", "simplifyCoreDocs", "symbolicEqualDocs", "rationalizeDocs", "sluDocs", "usolveDocs", "usolveAllDocs", "qrDocs", "absDocs", "addDocs", "cbrtDocs", "ceilDocs", "cubeDocs", "divideDocs", "dotDivideDocs", "dotMultiplyDocs", "dotPowDocs", "expDocs", "expmDocs", "expm1Docs", "fixDocs", "floorDocs", "gcdDocs", "hypotDocs", "lcmDocs", "logDocs", "log2Docs", "log1pDocs", "log10Docs", "modDocs", "multiplyDocs", "normDocs", "nthRootDocs", "nthRootsDocs", "powDocs", "roundDocs", "signDocs", "sqrtDocs", "sqrtmDocs", "squareDocs", "subtractDocs", "unaryMinusDocs", "unaryPlusDocs", "xgcdDocs", "invmodDocs", "bitAndDocs", "bitNotDocs", "bitOrDocs", "bitXorDocs", "leftShiftDocs", "rightArithShiftDocs", "rightLogShiftDocs", "bellNumbersDocs", "catalanDocs", "compositionDocs", "stirlingS2Docs", "configDocs", "importDocs", "typedDocs", "argDocs", "conjDocs", "reDocs", "imDocs", "evaluateDocs", "helpDocs", "distanceDocs", "intersectDocs", "andDocs", "notDocs", "orDocs", "xorDocs", "concatDocs", "countDocs", "crossDocs", "columnDocs", "ctransposeDocs", "detDocs", "diagDocs", "diffDocs", "dotDocs", "getMatrixDataTypeDocs", "identityDocs", "filterDocs", "flattenDocs", "forEachDocs", "invDocs", "pinvDocs", "eigsDocs", "kronDocs", "matrixFromFunctionDocs", "matrixFromRowsDocs", "matrixFromColumnsDocs", "mapDocs", "onesDocs", "partitionSelectDocs", "rangeDocs", "resizeDocs", "reshapeDocs", "rotateDocs", "rotationMatrixDocs", "rowDocs", "sizeDocs", "sortDocs", "squeezeDocs", "subsetDocs", "traceDocs", "transposeDocs", "zerosDocs", "fftDocs", "ifftDocs", "sylvesterDocs", "schurDocs", "lyapDocs", "solveODEDocs", "combinationsDocs", "combinationsWithRepDocs", "factorialDocs", "gammaDocs", "kldivergenceDocs", "lgammaDocs", "multinomialDocs", "permutationsDocs", "pickRandomDocs", "randomDocs", "randomIntDocs", "compareDocs", "compareNaturalDocs", "compareTextDocs", "deepEqualDocs", "equalDocs", "equalTextDocs", "largerDocs", "largerEqDocs", "smallerDocs", "smallerEqDocs", "unequalDocs", "setCartesianDocs", "setDifferenceDocs", "setDistinctDocs", "setIntersectDocs", "setIsSubsetDocs", "setMultiplicityDocs", "setPowersetDocs", "setSizeDocs", "setSymDifferenceDocs", "setUnionDocs", "zpk2tfDocs", "freqzDocs", "erfDocs", "zetaDocs", "cumSumDocs", "madDocs", "maxDocs", "meanDocs", "medianDocs", "minDocs", "modeDocs", "prodDocs", "quantileSeqDocs", "stdDocs", "sumDocs", "varianceDocs", "corrDocs", "acosDocs", "acoshDocs", "acotDocs", "acothDocs", "acscDocs", "acschDocs", "asecDocs", "asechDocs", "asinDocs", "asinhDocs", "atanDocs", "atanhDocs", "atan2Docs", "cosDocs", "coshDocs", "cotDocs", "cothDocs", "cscDocs", "cschDocs", "secDocs", "sechDocs", "sinDocs", "sinhDocs", "tanDocs", "tanhDocs", "toDocs", "cloneDocs", "formatDocs", "binDocs", "octDocs", "hexDocs", "isNaNDocs", "isIntegerDocs", "isNegativeDocs", "isNumericDocs", "hasNumericValueDocs", "isPositiveDocs", "isPrimeDocs", "isZeroDocs", "printDocs", "typeOfDocs", "numericDocs", "name", "dependencies", "createHelp", "factory", "_ref", "typed", "mathWithTransform", "Help", "search", "prop", "searchName", "hasOwnProperty", "doc", "getSafeProperty", "embeddedDocs", "searchText", "name", "dependencies", "createChain", "factory", "_ref", "typed", "Chain", "value", "name", "dependencies", "createDet", "factory", "_ref", "typed", "matrix", "subtractScalar", "multiply", "divideScalar", "isZero", "unaryMinus", "x", "clone", "size", "isMatrix", "format", "rows", "cols", "_det", "negated", "rowIndices", "_", "i", "k", "k_", "_k", "piv", "piv_", "i_", "j", "det", "name", "dependencies", "createInv", "factory", "_ref", "typed", "matrix", "divideScalar", "addScalar", "multiply", "unaryMinus", "det", "identity", "abs", "x", "size", "isMatrix", "arraySize", "format", "rows", "cols", "_inv", "mat", "r", "s", "f", "value", "temp", "d", "A", "B", "c", "ABig", "rBig", "Ac", "Bc", "Ar", "Br", "name", "dependencies", "createPinv", "factory", "_ref", "typed", "matrix", "inv", "deepEqual", "equal", "dotDivide", "dot", "ctranspose", "divideScalar", "multiply", "add", "Complex", "x", "size", "isMatrix", "arraySize", "_isZeros", "rows", "cols", "err", "_pinv", "format", "clone", "mat", "C", "F", "_rankFact", "Cpinv", "Fpinv", "_rref", "M", "lead", "r", "i", "_isZero", "val", "j", "_i", "_j", "rref", "_", "arr", "createComplexEigs", "_ref", "addScalar", "subtract", "flatten", "multiply", "multiplyScalar", "divideScalar", "sqrt", "abs", "bignumber", "diag", "size", "reshape", "inv", "qr", "usolve", "usolveAll", "equal", "complex", "larger", "smaller", "matrixFromColumns", "dot", "complexEigs", "arr", "N", "prec", "type", "findVectors", "R", "balance", "reduceToHessenberg", "values", "C", "iterateUntilTriangular", "eigenvectors", "findEigenvectors", "big", "cplx", "realzero", "one", "realone", "radix", "radixSq", "Rdiag", "last", "i", "colNorm", "rowNorm", "j", "f", "c", "rowDivRadix", "rowMulRadix", "condition", "g", "_j", "zero", "maxIndex", "max", "el", "tmp1", "_j2", "tmp2", "tmp3", "_j3", "n", "k", "_k", "_k2", "A", "clone", "lambdas", "Sdiag", "Qtotal", "Qpartial", "lastConvergenceBefore", "Q", "_i", "inflateMatrix", "_i2", "ll", "eigenvalues2x2", "jordanBase2x2", "_i3", "a", "b", "err", "blockDiag", "Cinv", "U", "uniqueValues", "multiplicities", "lambda", "indexOf", "vectors", "len", "E", "_loop", "_i4", "S", "solutions", "approxVec", "inverseIterate", "correction", "v", "d", "trA", "detA", "x", "y", "l1", "l2", "na", "nd", "_i5", "M", "I", "sub", "_i6", "fn", "orthog", "largeNum", "randomOrthogonalVector", "norm", "orthogonalComplement", "normalize", "_", "vectorShape", "w", "createRealSymmetric", "_ref", "config", "addScalar", "subtract", "abs", "atan", "cos", "sin", "multiplyScalar", "inv", "bignumber", "multiply", "add", "main", "arr", "N", "prec", "type", "computeVectors", "diag", "diagBig", "x", "precision", "e0", "psi", "Sij", "i", "Vab", "getAij", "_i", "j", "getTheta", "x1", "Sij1", "Ei", "_i2", "sorting", "clone", "getAijBig", "_i3", "getThetaBig", "x1Big", "Sij1Big", "_i4", "aii", "ajj", "aij", "denom", "theta", "c", "s", "Ski", "Skj", "k", "_k", "_k2", "Hij", "c2", "s2", "Aki", "Akj", "csHij", "Aii", "Ajj", "_k3", "_k4", "Mij", "maxMij", "maxIJ", "E", "S", "values", "vecs", "minID", "minE", "_k5", "eigenvectors", "vector", "name", "dependencies", "createEigs", "factory", "_ref", "config", "typed", "matrix", "addScalar", "subtract", "equal", "abs", "atan", "cos", "sin", "multiplyScalar", "divideScalar", "inv", "bignumber", "multiply", "add", "larger", "column", "flatten", "number", "complex", "sqrt", "diag", "size", "reshape", "qr", "usolve", "usolveAll", "im", "re", "smaller", "matrixFromColumns", "dot", "doRealSymmetric", "createRealSymmetric", "doComplexEigs", "createComplexEigs", "x", "doEigs", "prec", "opts", "mat", "useOpts", "_extends", "_opts$precision", "computeVectors", "result", "computeValuesAndVectors", "_ref2", "value", "vector", "arr", "asize", "format", "N", "isReal", "coerceReal", "isSymmetric", "_type", "coerceTypes", "type", "i", "j", "hasNumber", "hasBig", "hasComplex", "el", "isNumber", "isFraction", "isBigNumber", "isComplex", "typeOf", "_i", "_j", "_i2", "_j2", "_i3", "_j3", "name", "dependencies", "createExpm", "factory", "_ref", "typed", "abs", "add", "identity", "inv", "multiply", "A", "size", "format", "n", "eps", "infNorm", "infinityNorm", "params", "findParams", "q", "j", "Apos", "N", "D", "factor", "AposToI", "alternate", "i", "R", "_i", "isSparseMatrix", "rowSum", "maxSearchSize", "k", "errorEstimate", "qfac", "twoqfac", "_i2", "twoqp1fac", "name", "dependencies", "createSqrtm", "factory", "_ref", "typed", "abs", "add", "multiply", "map", "sqrt", "subtract", "inv", "size", "max", "identity", "_maxIterations", "_tolerance", "_denmanBeavers", "A", "error", "iterations", "Y", "Z", "Yk", "isMatrix", "arraySize", "format", "rows", "cols", "name", "dependencies", "createSylvester", "factory", "_ref", "typed", "schur", "matrixFromColumns", "matrix", "multiply", "range", "concat", "transpose", "index", "subset", "add", "subtract", "identity", "lusolve", "abs", "_sylvester", "A", "B", "C", "n", "m", "sA", "F", "U", "sB", "G", "V", "D", "all", "y", "hc", "a", "b", "vc", "k", "RHS", "j", "gkk", "gmk", "gkm", "gmm", "LHS", "yAux", "_RHS", "_j", "_gkk", "_LHS", "Y", "X", "name", "dependencies", "createSchur", "factory", "_ref", "typed", "matrix", "identity", "multiply", "qr", "norm", "subtract", "X", "r", "_schur", "n", "A", "U", "k", "A0", "QR", "Q", "R", "name", "dependencies", "createLyap", "factory", "_ref", "typed", "matrix", "sylvester", "multiply", "transpose", "A", "Q", "name", "dependencies", "createDivide", "factory", "_ref", "typed", "matrix", "multiply", "equalScalar", "divideScalar", "inv", "matAlgo11xS0s", "createMatAlgo11xS0s", "matAlgo14xDs", "createMatAlgo14xDs", "extend", "x", "y", "name", "dependencies", "createDistance", "factory", "_ref", "typed", "addScalar", "subtractScalar", "multiplyScalar", "divideScalar", "deepEqual", "sqrt", "abs", "x", "y", "z", "_2d", "xCoeff", "yCoeff", "constant", "_distancePointLine2D", "_objectToArray", "_3d", "_parametricLine", "_distancePointLine3D", "_containsOnlyNumbers", "_euclideanDistance", "arr", "_pairwise", "_distancePairwise", "_isNumber", "a", "isBigNumber", "o", "keys", "i", "aI", "b", "c", "num", "den", "x0", "y0", "z0", "vectorSize", "result", "diff", "pointA", "pointB", "j", "name", "dependencies", "createIntersect", "factory", "_ref", "typed", "config", "abs", "add", "addScalar", "matrix", "multiply", "multiplyScalar", "divideScalar", "subtract", "smaller", "equalScalar", "flatten", "isZero", "isNumeric", "_AAA", "_AAAA", "x", "y", "plane", "arr", "w", "z", "_coerceArr", "_3d", "_4d", "_intersectLinePlane", "_2d", "_intersect2d", "_intersect3d", "el", "p1a", "p1b", "p2a", "p2b", "o1", "o2", "d1", "d2", "det", "d20o11", "d21o10", "d20o21", "d21o20", "t", "_intersect3dHelper", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "add1", "add2", "add3", "x1", "y1", "z1", "x2", "y2", "z2", "x3", "y3", "z3", "x4", "y4", "z4", "d1343", "d4321", "d1321", "d4343", "d2121", "numerator", "denominator", "ta", "tb", "pax", "pay", "paz", "pbx", "pby", "pbz", "x1x", "x2x", "y1y", "y2y", "z1z", "z2z", "px", "py", "pz", "name", "dependencies", "createSum", "factory", "_ref", "typed", "config", "add", "numeric", "_sum", "_nsumDim", "args", "containsCollections", "array", "sum", "deepForEach", "value", "err", "improveErrorMessage", "safeNumberType", "dim", "reduce", "name", "dependencies", "createCumSum", "factory", "_ref", "typed", "add", "unaryPlus", "_cumsum", "matrix", "_ncumSumDim", "dim", "args", "containsCollections", "array", "_cumsummap", "err", "improveErrorMessage", "sums", "i", "size", "arraySize", "IndexError", "_cumsumDimensional", "mat", "ret", "tran", "initialValue", "_switch", "name", "dependencies", "createMean", "factory", "_ref", "typed", "add", "divide", "_mean", "_nmeanDim", "args", "containsCollections", "array", "dim", "sum", "reduce", "s", "arraySize", "err", "improveErrorMessage", "num", "deepForEach", "value", "name", "dependencies", "createMedian", "factory", "_ref", "typed", "add", "divide", "compare", "partitionSelect", "_median", "array", "flatten", "num", "mid", "right", "left", "i", "middle2", "m", "middle", "err", "improveErrorMessage", "value", "dim", "args", "containsCollections", "name", "dependencies", "createMad", "factory", "_ref", "typed", "abs", "map", "median", "subtract", "_mad", "args", "array", "flatten", "med", "value", "err", "improveErrorMessage", "DEFAULT_NORMALIZATION", "name", "dependencies", "createVariance", "factory", "_ref", "typed", "add", "subtract", "multiply", "divide", "apply", "isNaN", "array", "_var", "dim", "_varDim", "args", "normalization", "sum", "num", "deepForEach", "value", "err", "improveErrorMessage", "mean", "diff", "zero", "isBigNumber", "x", "name", "dependencies", "createQuantileSeq", "factory", "_ref", "typed", "bignumber", "add", "subtract", "divide", "multiply", "partitionSelect", "compare", "isInteger", "smaller", "smallerEq", "larger", "apply", "createApply", "data", "p", "_quantileSeqProbNumber", "prob", "dim", "_quantileSeqDim", "sorted", "_quantileSeqProbCollection", "fn", "x", "probOrN", "probArr", "dataArr", "isNumber", "_quantileSeq", "nPlusOne", "i", "probOrNArr", "array", "flat", "flatten", "len", "index", "integerPart", "fracPart", "left", "right", "name", "dependencies", "createStd", "factory", "_ref", "typed", "map", "sqrt", "variance", "_std", "args", "array", "normalization", "v", "isCollection", "err", "name", "dependencies", "createCorr", "factory", "_ref", "typed", "matrix", "sqrt", "sum", "add", "subtract", "multiply", "pow", "divide", "A", "B", "_corr", "res", "correlations", "i", "correlation", "n", "sumX", "sumY", "sumXY", "acc", "x", "index", "sumXSquare", "sumYSquare", "y", "numerator", "denominator", "name", "dependencies", "createCombinations", "factory", "_ref", "typed", "combinationsNumber", "k", "BigNumber", "result", "i", "nMinusk", "one", "isPositiveInteger", "n", "name", "dependencies", "createCombinationsWithRep", "factory", "_ref", "typed", "k", "isInteger", "_prodrange", "product", "prodrange", "BigNumber", "result", "i", "one", "nMinusOne", "isPositiveInteger", "n", "name", "dependencies", "createGamma", "factory", "_ref", "typed", "config", "multiplyScalar", "pow", "_BigNumber", "Complex", "gammaComplex", "n", "gammaNumber", "_t", "r", "x", "gammaP", "i", "gammaPval", "t", "gammaG", "twoPiSqrt", "tpow", "expt", "bigFactorial", "precision", "Big", "p", "prod", "sum", "name", "dependencies", "createLgamma", "factory", "_ref", "Complex", "typed", "SMALL_RE", "SMALL_IM", "coeffs", "lgammaNumber", "lgammaComplex", "n", "TWOPI", "LOGPI", "REFLECTION", "lgammaStirling", "tmp", "copysign", "a", "b", "lgammaRecurrence", "z", "leftPart", "lnSqrt2PI", "rz", "rzz", "r", "s", "i", "rightPart", "signflips", "sb", "shiftprod", "nsb", "name", "dependencies", "createFactorial", "factory", "_ref", "typed", "gamma", "n", "self", "deepMap", "name", "dependencies", "createKldivergence", "factory", "_ref", "typed", "matrix", "divide", "sum", "multiply", "map", "dotDivide", "log", "isNumeric", "q", "p", "_kldiv", "plength", "qlength", "sumq", "sump", "qnorm", "pnorm", "result", "x", "name", "dependencies", "createMultinomial", "factory", "_ref", "typed", "add", "divide", "multiply", "factorial", "isInteger", "isPositive", "a", "sum", "denom", "deepForEach", "ai", "name", "dependencies", "createPermutations", "factory", "_ref", "typed", "factorial", "n", "k", "isInteger", "product", "result", "i", "isPositiveInteger", "one", "import_seedrandom", "singletonRandom", "seedrandom", "createRng", "randomSeed", "random", "setSeed", "seed", "rng", "name", "dependencies", "createPickRandom", "factory", "_ref", "typed", "config", "on", "rng", "createRng", "curr", "prev", "possibles", "_pickRandom", "options", "number", "weights", "_ref2", "elementWise", "single", "createMatrix", "isMatrix", "flatten", "totalWeights", "i", "len", "isNumber", "length", "result", "pick", "randKey", "_i", "_len", "randomMatrix", "size", "random", "data", "i", "length", "_i", "_length", "name", "dependencies", "createRandom", "factory", "_ref", "typed", "config", "on", "rng", "createRng", "curr", "prev", "_random", "max", "min", "size", "_randomMatrix", "res", "randomMatrix", "isMatrix", "name", "dependencies", "createRandomInt", "factory", "_ref", "typed", "config", "on", "rng", "createRng", "curr", "prev", "_randomInt", "max", "min", "size", "_randomIntMatrix", "res", "randomMatrix", "isMatrix", "name", "dependencies", "createStirlingS2", "factory", "_ref", "typed", "addScalar", "subtractScalar", "multiplyScalar", "divideScalar", "pow", "factorial", "combinations", "isNegative", "isInteger", "number", "bignumber", "larger", "smallCache", "bigCache", "n", "k", "big", "isNumber", "cache", "make", "nn", "nk", "m", "row", "prev", "i", "name", "dependencies", "createBellNumbers", "factory", "_ref", "typed", "addScalar", "isNegative", "isInteger", "stirlingS2", "n", "result", "i", "name", "dependencies", "createCatalan", "factory", "_ref", "typed", "addScalar", "divideScalar", "multiplyScalar", "combinations", "isNegative", "isInteger", "n", "name", "dependencies", "createComposition", "factory", "_ref", "typed", "addScalar", "combinations", "isPositive", "isNegative", "isInteger", "larger", "n", "k", "name", "dependencies", "createLeafCount", "factory", "_ref", "parse", "typed", "countLeaves", "node", "count", "n", "expr", "isNumericNode", "x", "isConstantNode", "isOperatorNode", "isConstantExpression", "isFunctionNode", "isParenthesisNode", "ownKeys", "r", "t", "o", "_objectSpread", "_defineProperty", "name", "dependencies", "createUtil", "factory", "_ref", "FunctionNode", "OperatorNode", "SymbolNode", "T", "F", "defaultName", "defaultContext", "realContext", "positiveContext", "hasProperty", "nodeOrName", "property", "context", "isOperatorNode", "isFunctionNode", "isParenthesisNode", "hasOwnProperty", "properties", "_properties", "_properties2", "isCommutative", "node", "isAssociative", "mergeContext", "primary", "secondary", "merged", "prop", "flatten", "allChildren", "i", "op", "children", "_findChildren", "child", "unflattenr", "makeNode", "createMakeNodeFunction", "l", "curnode", "unflattenl", "args", "err", "name", "dependencies", "createSimplify", "factory", "_ref", "typed", "parse", "equal", "resolve", "simplifyConstant", "simplifyCore", "AccessorNode", "ArrayNode", "ConstantNode", "FunctionNode", "IndexNode", "ObjectNode", "OperatorNode", "ParenthesisNode", "SymbolNode", "hasProperty", "isCommutative", "isAssociative", "mergeContext", "flatten", "unflattenr", "unflattenl", "createMakeNodeFunction", "defaultContext", "realContext", "positiveContext", "createUtil", "createMap", "simplify", "_simplify", "expr", "scope", "options", "removeParens", "node", "isParenthesisNode", "SUPPORTED_CONSTANTS", "_canonicalizeRule", "ruleObject", "context", "newRule", "lr", "prop", "nonCommutative", "leftExpandsym", "_getExpandPlaceholderSymbol", "makeNode", "expandsym", "_buildRules", "rules", "ruleSet", "i", "rule", "ruleType", "_lastsym", "createEmptyMap", "debug", "res", "visited", "str", "laststr", "rulestr", "applyRule", "newstr", "mapRule", "nodes", "resNodes", "newNode", "symbol", "property", "mergedContext", "newArgs", "newContent", "newItems", "newObj", "newIndex", "newDims", "changed", "newProps", "repl", "matches", "_ruleMatch", "implicit", "hasOwnProperty", "getSplits", "right", "rightArgs", "_i", "left", "mergeMatch", "match1", "match2", "key", "_exactMatch", "_key", "combineChildMatches", "list1", "list2", "merged", "i1", "i2", "mergeChildMatches", "childMatches", "sets", "uniqueSets", "unique", "s", "isSplit", "childMatch", "leftMatch", "rightMatch", "splits", "splitMatches", "_i2", "matchSet", "isConstantNode", "isSymbolNode", "isNumericNode", "isConstantExpression", "p", "q", "name", "dependencies", "createSimplifyConstant", "factory", "_ref", "typed", "config", "mathWithTransform", "matrix", "fraction", "bignumber", "AccessorNode", "ArrayNode", "ConstantNode", "FunctionNode", "IndexNode", "ObjectNode", "OperatorNode", "SymbolNode", "isCommutative", "isAssociative", "allChildren", "createMakeNodeFunction", "createUtil", "simplifyConstant", "node", "_ensureNode", "foldFraction", "expr", "options", "_removeFractions", "thing", "isFraction", "isMatrix", "_eval", "fnname", "args", "_toNumber", "_toNode", "_fractionToNode", "n", "unaryMinusNode", "s", "m", "e", "isNode", "_exactFraction", "exactFractions", "f", "fractionsLimit", "numericType", "safeNumberType", "noBignumber", "noFraction", "vn", "_foldAccessor", "obj", "index", "isIndexNode", "isArrayNode", "remainingDims", "isConstantNode", "first", "second", "tryItems", "fromItems", "item", "isObjectNode", "key", "foldOp", "fn", "makeNode", "reduction", "sofar", "next", "last", "newtree", "operatorFunctions", "arg", "sz", "section", "_args", "res", "isOperatorNode", "consts", "vars", "i", "foldItems", "foldProps", "prop", "name", "dependencies", "createSimplifyCore", "factory", "_ref", "typed", "parse", "equal", "isZero", "add", "subtract", "multiply", "divide", "pow", "AccessorNode", "ArrayNode", "ConstantNode", "FunctionNode", "IndexNode", "ObjectNode", "OperatorNode", "ParenthesisNode", "SymbolNode", "node0", "node1", "nodeT", "nodeF", "isAlwaysBoolean", "node", "isOperatorNode", "hasProperty", "isCommutative", "createUtil", "_simplifyCore", "nodeToSimplify", "options", "context", "isFunctionNode", "simpChild", "childCount", "c", "op", "getOperator", "last", "seclast", "n", "a0", "finish", "_a", "a1", "isConstantNode", "a", "isArrayNode", "isAccessorNode", "isIndexNode", "isObjectNode", "newProps", "prop", "name", "dependencies", "createResolve", "factory", "_ref", "typed", "parse", "ConstantNode", "FunctionNode", "OperatorNode", "ParenthesisNode", "_resolve", "node", "scope", "within", "isSymbolNode", "variables", "value", "isNode", "nextWithin", "isOperatorNode", "args", "arg", "isParenthesisNode", "isFunctionNode", "_args", "child", "n", "createMap", "self", "A", "selfAM", "selfMM", "name", "dependencies", "createSymbolicEqual", "factory", "_ref", "parse", "simplify", "typed", "OperatorNode", "_symbolicEqual", "e1", "e2", "options", "diff", "simplified", "isConstantNode", "name", "dependencies", "createDerivative", "factory", "_ref", "typed", "config", "parse", "simplify", "equal", "isZero", "numeric", "ConstantNode", "FunctionNode", "OperatorNode", "ParenthesisNode", "SymbolNode", "plainDerivative", "expr", "variable", "options", "constNodes", "constTag", "res", "_derivative", "parseIdentifier", "string", "symbol", "derivative", "node", "deriv", "_derivTex", "x", "isConstantNode", "typeOf", "order", "d", "varName", "isConst", "i", "createConstantNode", "arg0", "arg1", "div", "negative", "funcDerivative", "op", "func", "chainDerivative", "arg", "constantTerms", "nonConstantTerms", "nonConstantNode", "newArgs", "argOuter", "argInner", "_arg", "_arg2", "powMinusOne", "value", "valueType", "safeNumberType", "name", "dependencies", "createRationalize", "factory", "_ref", "config", "typed", "equal", "isZero", "add", "subtract", "multiply", "divide", "pow", "parse", "simplifyConstant", "simplifyCore", "simplify", "fraction", "bignumber", "mathWithTransform", "matrix", "AccessorNode", "ArrayNode", "ConstantNode", "FunctionNode", "IndexNode", "ObjectNode", "OperatorNode", "SymbolNode", "ParenthesisNode", "_rationalize", "expr", "scope", "detailed", "setRules", "rulesRationalize", "polyRet", "polynomial", "nVars", "noExactFractions", "withExactFractions", "expandPower", "sBefore", "rules", "eDistrDiv", "redoInic", "s", "coefficients", "retRationalize", "polyToCanonical", "extended", "variables", "node", "oper", "recPoly", "retFunc", "tp", "isInteger", "i", "_name", "pos", "oldRules", "rulesFirst", "rulesDistrDiv", "rulesSucDiv", "parent", "indParent", "internal", "does", "val", "nEsqTopo", "nDirTopo", "o", "maxExpo", "varname", "recurPol", "first", "no", "n1", "op", "n2", "n3", "noPai", "_i", "valor", "_i2", "name", "dependencies", "createZpk2tf", "factory", "_ref", "typed", "add", "multiply", "Complex", "number", "z", "p", "k", "_zpk2tf", "el", "num", "den", "i", "zero", "_multiply", "_i", "pole", "_i2", "b", "c", "j", "name", "dependencies", "createFreqz", "factory", "_ref", "typed", "add", "multiply", "Complex", "divide", "matrix", "b", "a", "w", "createBins", "_freqz", "w2", "_w", "h", "num", "den", "i", "sumNum", "sumDen", "j", "_j", "_i", "n", "bins", "name", "dependencies", "createReviver", "factory", "_ref", "classes", "key", "value", "constructor", "name", "dependencies", "createReplacer", "factory", "key", "value", "version", "createTrue", "factory", "createFalse", "createNull", "createInfinity", "recreateFactory", "_ref", "config", "BigNumber", "createNaN", "_ref2", "createPi", "_ref3", "createBigNumberPi", "pi", "createTau", "_ref4", "createBigNumberTau", "tau", "createE", "_ref5", "createBigNumberE", "e", "createPhi", "_ref6", "createBigNumberPhi", "phi", "createLN2", "_ref7", "createLN10", "_ref8", "createLOG2E", "_ref9", "createLOG10E", "_ref10", "createSQRT1_2", "_ref11", "createSQRT2", "_ref12", "createI", "_ref13", "Complex", "createUppercasePi", "_ref14", "createUppercaseE", "_ref15", "createVersion", "version", "name", "dependencies", "create", "createSpeedOfLight", "unitFactory", "createGravitationConstant", "createPlanckConstant", "createReducedPlanckConstant", "createMagneticConstant", "createElectricConstant", "createVacuumImpedance", "createCoulomb", "createElementaryCharge", "createBohrMagneton", "createConductanceQuantum", "createInverseConductanceQuantum", "createMagneticFluxQuantum", "createNuclearMagneton", "createKlitzing", "createBohrRadius", "unitFactory", "createClassicalElectronRadius", "createElectronMass", "createFermiCoupling", "createFineStructure", "numberFactory", "createHartreeEnergy", "createProtonMass", "createDeuteronMass", "createNeutronMass", "createQuantumOfCirculation", "createRydberg", "createThomsonCrossSection", "createWeakMixingAngle", "createEfimovFactor", "createAtomicMass", "createAvogadro", "createBoltzmann", "createFaraday", "createFirstRadiation", "createLoschmidt", "createGasConstant", "createMolarPlanckConstant", "createMolarVolume", "createSackurTetrode", "createSecondRadiation", "createStefanBoltzmann", "createWienDisplacement", "createMolarMass", "createMolarMassC12", "createGravity", "createPlanckLength", "createPlanckMass", "createPlanckTime", "createPlanckCharge", "createPlanckTemperature", "name", "valueStr", "unitStr", "dependencies", "factory", "_ref", "config", "Unit", "BigNumber", "value", "unit", "_ref2", "name", "dependencies", "createApplyTransform", "factory", "_ref", "typed", "isInteger", "apply", "createApply", "args", "dim", "isNumber", "isBigNumber", "err", "errorTransform", "name", "dependencies", "createColumnTransform", "factory", "_ref", "typed", "Index", "matrix", "range", "column", "createColumn", "args", "lastIndex", "last", "isNumber", "err", "errorTransform", "compileInlineExpression", "expression", "math", "scope", "symbol", "node", "isSymbolNode", "name", "argsScope", "subScope", "PartitionedMap", "eq", "x", "name", "dependencies", "createTransformCallback", "factory", "_ref", "typed", "callback", "numberOfArrays", "_transformTypedCallbackFunction", "_transformCallbackFunction", "typedFunction", "signatures", "_ref2", "signature", "callbackFunction", "numberOfCallbackInputs", "_len", "args", "_key", "vals", "idx", "_transformDims", "_len2", "_key2", "rest", "dims", "dim", "name", "dependencies", "createFilterTransform", "factory", "_ref", "typed", "filterTransform", "args", "math", "scope", "filter", "createFilter", "transformCallback", "createTransformCallback", "x", "N", "callback", "_compileAndEvaluate", "isSymbolNode", "isFunctionAssignmentNode", "compileInlineExpression", "arg", "name", "dependencies", "createForEachTransform", "factory", "_ref", "typed", "forEach", "createForEach", "transformCallback", "createTransformCallback", "forEachTransform", "args", "math", "scope", "x", "N", "callback", "_compileAndEvaluate", "isSymbolNode", "isFunctionAssignmentNode", "compileInlineExpression", "arg", "name", "dependencies", "createIndexTransform", "factory", "_ref", "Index", "getMatrixDataType", "args", "i", "ii", "arg", "isRange", "v", "isArray", "isMatrix", "isNumber", "isBigNumber", "res", "name", "dependencies", "createMapTransform", "factory", "_ref", "typed", "map", "createMap", "transformCallback", "createTransformCallback", "mapTransform", "args", "math", "scope", "N", "X", "callback", "arg", "_compileAndEvaluate", "isSymbolNode", "isFunctionAssignmentNode", "compileInlineExpression", "dimToZeroBase", "dim", "isNumber", "isBigNumber", "isNumberOrBigNumber", "n", "lastDimToZeroBase", "args", "isCollection", "dim", "isNumberOrBigNumber", "dimToZeroBase", "name", "dependencies", "createMaxTransform", "factory", "_ref", "typed", "config", "numeric", "larger", "max", "createMax", "args", "lastDimToZeroBase", "err", "errorTransform", "name", "dependencies", "createMeanTransform", "factory", "_ref", "typed", "add", "divide", "mean", "createMean", "args", "lastDimToZeroBase", "err", "errorTransform", "name", "dependencies", "createMinTransform", "factory", "_ref", "typed", "config", "numeric", "smaller", "min", "createMin", "args", "lastDimToZeroBase", "err", "errorTransform", "name", "dependencies", "createRangeTransform", "factory", "_ref", "typed", "config", "matrix", "bignumber", "smaller", "smallerEq", "larger", "largerEq", "add", "isPositive", "range", "createRange", "args", "lastIndex", "last", "name", "dependencies", "createRowTransform", "factory", "_ref", "typed", "Index", "matrix", "range", "row", "createRow", "args", "lastIndex", "last", "isNumber", "err", "errorTransform", "name", "dependencies", "createSubsetTransform", "factory", "_ref", "typed", "matrix", "zeros", "add", "subset", "createSubset", "args", "err", "errorTransform", "name", "dependencies", "createConcatTransform", "factory", "_ref", "typed", "matrix", "isInteger", "concat", "createConcat", "args", "lastIndex", "last", "isNumber", "isBigNumber", "err", "errorTransform", "name", "dependencies", "createDiffTransform", "factory", "_ref", "typed", "matrix", "subtract", "number", "bignumber", "diff", "createDiff", "args", "lastDimToZeroBase", "err", "errorTransform", "name", "dependencies", "createStdTransform", "factory", "_ref", "typed", "map", "sqrt", "variance", "std", "createStd", "args", "lastDimToZeroBase", "err", "errorTransform", "name", "dependencies", "createSumTransform", "factory", "_ref", "typed", "config", "add", "numeric", "sum", "createSum", "args", "lastDimToZeroBase", "err", "errorTransform", "name", "dependencies", "createQuantileSeqTransform", "factory", "_ref", "typed", "bignumber", "add", "subtract", "divide", "multiply", "partitionSelect", "compare", "isInteger", "smaller", "smallerEq", "larger", "quantileSeq", "createQuantileSeq", "arr", "prob", "dim", "dimToZeroBase", "sorted", "data", "lastDimToZeroBase", "name", "dependencies", "createCumSumTransform", "factory", "_ref", "typed", "add", "unaryPlus", "cumsum", "createCumSum", "args", "isCollection", "dim", "isNumber", "isBigNumber", "err", "errorTransform", "name", "dependencies", "createVarianceTransform", "factory", "_ref", "typed", "add", "subtract", "multiply", "divide", "apply", "isNaN", "variance", "createVariance", "args", "lastDimToZeroBase", "err", "errorTransform", "name", "dependencies", "createPrintTransform", "factory", "_ref", "typed", "matrix", "zeros", "add", "print", "createPrint", "template", "values", "_convertTemplateToZeroBasedIndex", "options", "printTemplate", "x", "parts", "result", "part", "name", "dependencies", "createAndTransform", "factory", "_ref", "typed", "matrix", "equalScalar", "zeros", "not", "concat", "and", "createAnd", "andTransform", "args", "math", "scope", "condition1", "isCollection", "condition2", "name", "dependencies", "createOrTransform", "factory", "_ref", "typed", "matrix", "equalScalar", "DenseMatrix", "concat", "or", "createOr", "orTransform", "args", "math", "scope", "condition1", "isCollection", "condition2", "name", "dependencies", "createBitAndTransform", "factory", "_ref", "typed", "matrix", "equalScalar", "zeros", "not", "concat", "bitAnd", "createBitAnd", "bitAndTransform", "args", "math", "scope", "condition1", "isCollection", "condition2", "name", "dependencies", "createBitOrTransform", "factory", "_ref", "typed", "matrix", "equalScalar", "DenseMatrix", "concat", "bitOr", "createBitOr", "bitOrTransform", "args", "math", "scope", "condition1", "isCollection", "condition2", "all", "factoriesAny_exports", "import_typed_function", "import_tiny_emitter", "mixin", "obj", "emitter", "Emitter", "importFactory", "typed", "load", "math", "importedFactories", "mathImport", "functions", "options", "num", "ArgumentsError", "flattenImports", "flatValues", "value", "name", "item", "_name", "hasOwnProperty", "isFactory", "flatName", "isTransformFunctionFactory", "_importFactory", "isSupportedType", "_import", "_wrap", "hasTypedFunctionSignature", "_importTransform", "allowedInExpressions", "_deleteTransform", "fn", "wrapper", "args", "i", "len", "arg", "factory", "namespace", "existingTransform", "existing", "resolver", "dependencies", "stripOptionalNotation", "dependency", "instance", "lazy", "factoryAllowedInExpressions", "object", "isUnit", "isComplex", "isBigNumber", "isFraction", "isMatrix", "unsafe", "create", "factories", "config", "configInternal", "_extends", "DEFAULT_CONFIG", "math", "mixin", "isNumber", "isComplex", "isBigNumber", "isBigInt", "isFraction", "isUnit", "isString", "isArray", "isMatrix", "isCollection", "isDenseMatrix", "isSparseMatrix", "isRange", "isIndex", "isBoolean", "isResultSet", "isHelp", "isFunction", "isDate", "isRegExp", "isObject", "isMap", "isPartitionedMap", "isObjectWrappingMap", "isNull", "isUndefined", "isAccessorNode", "isArrayNode", "isAssignmentNode", "isBlockNode", "isConditionalNode", "isConstantNode", "isFunctionAssignmentNode", "isFunctionNode", "isIndexNode", "isNode", "isObjectNode", "isOperatorNode", "isParenthesisNode", "isRangeNode", "isRelationalNode", "isSymbolNode", "isChain", "configFactory", "legacyFactories", "legacyInstances", "load", "factory", "isFactory", "firstProperty", "isLegacyFactory", "index", "instance", "importedFactories", "lazyTyped", "_len", "args", "_key", "typedFunction", "internalImport", "importFactory", "deepFlatten", "ArgumentsError", "DimensionError", "IndexError", "esm_exports", "__export", "ABS", "ACCRINT", "ACCRINTM", "ACOS", "ACOSH", "ACOT", "ACOTH", "AGGREGATE", "AMORDEGRC", "AMORLINC", "AND", "ARABIC", "ASC", "ASIN", "ASINH", "ATAN", "ATAN2", "ATANH", "AVEDEV", "AVERAGE", "AVERAGEA", "AVERAGEIF", "AVERAGEIFS", "BAHTTEXT", "BASE", "BESSELI", "BESSELJ", "BESSELK", "BESSELY", "BETA", "BETADIST", "BETAINV", "BIN2DEC", "BIN2HEX", "BIN2OCT", "BINOM", "BINOMDIST", "BITAND", "BITLSHIFT", "BITOR", "BITRSHIFT", "BITXOR", "CEILING", "CEILINGMATH", "CEILINGPRECISE", "CELL", "CHAR", "CHIDIST", "CHIDISTRT", "CHIINV", "CHIINVRT", "CHISQ", "CHITEST", "CHOOSE", "CLEAN", "CODE", "COLUMN", "COLUMNS", "COMBIN", "COMBINA", "COMPLEX", "CONCAT", "CONCATENATE", "CONFIDENCE", "CONVERT", "CORREL", "COS", "COSH", "COT", "COTH", "COUNT", "COUNTA", "COUNTBLANK", "COUNTIF", "COUNTIFS", "COUPDAYBS", "COUPDAYS", "COUPDAYSNC", "COUPNCD", "COUPNUM", "COUPPCD", "COVAR", "COVARIANCE", "COVARIANCEP", "COVARIANCES", "CRITBINOM", "CSC", "CSCH", "CUMIPMT", "CUMPRINC", "DATE", "DATEDIF", "DATEVALUE", "DAVERAGE", "DAY", "DAYS", "DAYS360", "DB", "DBCS", "DCOUNT", "DCOUNTA", "DDB", "DEC2BIN", "DEC2HEX", "DEC2OCT", "DECIMAL", "DEGREES", "DELTA", "DEVSQ", "DGET", "DISC", "DMAX", "DMIN", "DOLLAR", "DOLLARDE", "DOLLARFR", "DPRODUCT", "DSTDEV", "DSTDEVP", "DSUM", "DURATION", "DVAR", "DVARP", "EDATE", "EFFECT", "EOMONTH", "ERF", "ERFC", "ERFCPRECISE", "ERFPRECISE", "ERROR", "EVEN", "EXACT", "EXP", "EXPON", "EXPONDIST", "F", "FACT", "FACTDOUBLE", "FALSE", "FDIST", "FDISTRT", "FIND", "FINV", "FINVRT", "FISHER", "FISHERINV", "FIXED", "FLOOR", "FLOORMATH", "FLOORPRECISE", "FORECAST", "FREQUENCY", "FTEST", "FV", "FVSCHEDULE", "GAMMA", "GAMMADIST", "GAMMAINV", "GAMMALN", "GAMMALNPRECISE", "GAUSS", "GCD", "GEOMEAN", "GESTEP", "GROWTH", "HARMEAN", "HEX2BIN", "HEX2DEC", "HEX2OCT", "HLOOKUP", "HOUR", "HYPGEOM", "HYPGEOMDIST", "IF", "IFERROR", "IFNA", "IFS", "IMABS", "IMAGINARY", "IMARGUMENT", "IMCONJUGATE", "IMCOS", "IMCOSH", "IMCOT", "IMCSC", "IMCSCH", "IMDIV", "IMEXP", "IMLN", "IMLOG10", "IMLOG2", "IMPOWER", "IMPRODUCT", "IMREAL", "IMSEC", "IMSECH", "IMSIN", "IMSINH", "IMSQRT", "IMSUB", "IMSUM", "IMTAN", "INDEX", "INFO", "INT", "INTERCEPT", "INTRATE", "IPMT", "IRR", "ISBLANK", "ISERR", "ISERROR", "ISEVEN", "ISFORMULA", "ISLOGICAL", "ISNA", "ISNONTEXT", "ISNUMBER", "ISO", "ISODD", "ISOWEEKNUM", "ISPMT", "ISREF", "ISTEXT", "KURT", "LARGE", "LCM", "LEFT", "LEN", "LINEST", "LN", "LOG", "LOG10", "LOGEST", "LOGINV", "LOGNORM", "LOGNORMDIST", "LOGNORMINV", "LOOKUP", "LOWER", "MATCH", "MAX", "MAXA", "MAXIFS", "MDURATION", "MEDIAN", "MID", "MIN", "MINA", "MINIFS", "MINUTE", "MIRR", "MMULT", "MOD", "MODE", "MODEMULT", "MODESNGL", "MONTH", "MROUND", "MULTINOMIAL", "MUNIT", "N", "NA", "NEGBINOM", "NEGBINOMDIST", "NETWORKDAYS", "NETWORKDAYSINTL", "NOMINAL", "NORM", "NORMDIST", "NORMINV", "NORMSDIST", "NORMSINV", "NOT", "NOW", "NPER", "NPV", "NUMBERVALUE", "OCT2BIN", "OCT2DEC", "OCT2HEX", "ODD", "ODDFPRICE", "ODDFYIELD", "ODDLPRICE", "ODDLYIELD", "OR", "PDURATION", "PEARSON", "PERCENTILE", "PERCENTILEEXC", "PERCENTILEINC", "PERCENTRANK", "PERCENTRANKEXC", "PERCENTRANKINC", "PERMUT", "PERMUTATIONA", "PHI", "PI", "PMT", "POISSON", "POISSONDIST", "POWER", "PPMT", "PRICE", "PRICEDISC", "PRICEMAT", "PROB", "PRODUCT", "PRONETIC", "PROPER", "PV", "QUARTILE", "QUARTILEEXC", "QUARTILEINC", "QUOTIENT", "RADIANS", "RAND", "RANDBETWEEN", "RANK", "RANKAVG", "RANKEQ", "RATE", "RECEIVED", "REPLACE", "REPT", "RIGHT", "ROMAN", "ROUND", "ROUNDDOWN", "ROUNDUP", "ROW", "ROWS", "RRI", "RSQ", "SEARCH", "SEC", "SECH", "SECOND", "SERIESSUM", "SHEET", "SHEETS", "SIGN", "SIN", "SINH", "SKEW", "SKEWP", "SLN", "SLOPE", "SMALL", "SORT", "SQRT", "SQRTPI", "STANDARDIZE", "STDEV", "STDEVA", "STDEVP", "STDEVPA", "STDEVS", "STEYX", "SUBSTITUTE", "SUBTOTAL", "SUM", "SUMIF", "SUMIFS", "SUMPRODUCT", "SUMSQ", "SUMX2MY2", "SUMX2PY2", "SUMXMY2", "SWITCH", "SYD", "T", "TAN", "TANH", "TBILLEQ", "TBILLPRICE", "TBILLYIELD", "TDIST", "TDISTRT", "TEXT", "TEXTJOIN", "TIME", "TIMEVALUE", "TINV", "TODAY", "TRANSPOSE", "TREND", "TRIM", "TRIMMEAN", "TRUE", "TRUNC", "TTEST", "TYPE", "UNICHAR", "UNICODE", "UNIQUE", "UPPER", "VALUE", "VAR", "VARA", "VARP", "VARPA", "VARS", "VDB", "VLOOKUP", "WEEKDAY", "WEEKNUM", "WEIBULL", "WEIBULLDIST", "WORKDAY", "WORKDAYINTL", "XIRR", "XNPV", "XOR", "YEAR", "YEARFRAC", "YIELD", "YIELDDISC", "YIELDMAT", "Z", "ZTEST", "utils", "import_jstat", "import_bessel", "nil", "div0", "value", "ref", "name", "num", "na", "error", "data", "errors", "defaultOperator", "validSymbols", "_TOKEN_TYPE_OPERATOR", "_TOKEN_TYPE_LITERAL", "SUPPORTED_TOKENS", "TOKEN_TYPE_OPERATOR", "TOKEN_TYPE_LITERAL", "createToken", "type", "castValueToCorrectType", "tokenizeExpression", "expression", "expressionLength", "tokens", "cursorIndex", "processedValue", "processedSymbol", "char", "analyzeTokens", "literalValue", "analyzedTokens", "i", "token", "computeExpression", "values", "operator", "evaluate", "result", "parse", "compute", "argsToArray", "args", "arrayEach", "array", "iteratee", "index", "length", "arrayValuesToNumbers", "arr", "n", "el", "number", "parseNumber", "fillMatrix", "matrix", "fill_value", "a", "j", "longestArrayIndex", "acc", "longestArrayLength", "flatten", "argument", "isArrayLike", "isFlat", "flattenShallow", "b", "aIsArray", "bIsArray", "initial", "idx", "rest", "transpose", "col", "row", "findField", "database", "title", "anyError", "anyIsError", "cleanFloat", "numbers", "serialNumberToDate", "serial", "utc_value", "date_info", "fractional_day", "total_seconds", "seconds", "hours", "minutes", "days", "month", "parseBool", "bool", "up", "parseDate", "date", "d", "parseDateArray", "len", "parsed", "string", "parseNumberArray", "parseString", "anyIsString", "applyCriteria", "range", "criterias", "criteriaLength", "isMetCondition", "valueToTest", "criteria", "isWildcard", "computedResult", "tokenizedCriteria", "isDefined", "arg", "error_val", "value$1", "reference", "jStat", "lookup_value", "table_array", "row_index_num", "range_lookup", "row_num", "column_num", "someError", "isOneDimensionRange", "result_array", "isNumberLookup", "lookup_array", "match_type", "indexValue", "lookupValueStr", "sort_index", "sort_order", "by_col", "sortArray", "hasElement", "element", "col_index_num", "exactMatchOnly", "lookupValue", "rowValue", "text", "re", "trueFound", "falseFound", "decimals", "options", "formattedNumber", "text1", "text2", "find_text", "within_text", "start_num", "found_index", "no_commas", "factor", "parts", "num_chars", "begin", "end", "decimal_separator", "group_separator", "txt", "old_text", "new_text", "number_times", "foundAt", "instance_num", "format_text", "currencySymbol", "isPercent", "decimalPlaces", "noCommas", "delimiter", "ignore_empty", "flatArgs", "textToJoin", "chunks", "item", "anyError$1", "output", "SQRT2PI", "flatArgumentsDefined", "sum", "count", "average_range", "flatAverageRangeDefined", "average_count", "average", "x", "alpha", "beta", "cumulative", "probability", "number_s", "trials", "probability_s", "number_s2", "deg_freedom", "actual_range", "expected_range", "tmp", "dof", "xsqr", "Pi", "ChiSq", "p", "k", "t", "standard_dev", "size", "array1", "array2", "flatArguments", "blanks", "matches", "results", "mean1", "mean2", "mean", "lambda", "deg_freedom1", "deg_freedom2", "sumOfSquares", "x1", "x2", "sum1", "sum2", "y", "e2y", "known_ys", "known_xs", "xmean", "ymean", "den", "data_array", "bins_array", "r", "z", "known_y", "known_x", "new_x", "use_const", "avg_x", "avg_y", "avg_xy", "avg_xx", "new_y", "sample_s", "number_sample", "population_s", "number_pop", "pdf", "M", "cdf", "sigma", "m", "maxItems", "max", "currentItem", "number_f", "den1", "den2", "l", "fl", "significance", "uniques", "power", "match", "number_chosen", "x_range", "prob_range", "lower_limit", "upper_limit", "sorted", "quart", "order", "sort", "m2", "m3", "v", "lft", "mean_x", "mean_y", "s_x", "s_y", "new_xs", "linest", "percent", "trim", "function_num", "ref1", "ref2", "x_num", "y_num", "radix", "min_length", "mode", "precision", "e2", "angle", "MEMOIZED_FACT", "r0", "ri", "o", "base", "_", "divisor", "modulus", "multiple", "dimension", "temp", "numerator", "denominator", "bottom", "top", "digits", "key", "roman", "num_digits", "coefficients", "inner_result", "sum_range", "sumValue", "arrays", "product", "_i", "_ij", "_ij_arg", "_i_arg", "array_x", "array_y", "ADD", "num1", "num2", "DIVIDE", "dividend", "EQ", "value1", "value2", "GT", "GTE", "LT", "LTE", "MINUS", "MULTIPLY", "factor1", "factor2", "NE", "POW", "exponent", "symbols", "d1900", "WEEK_STARTS", "WEEK_TYPES", "WEEKEND_TYPES", "year", "day", "start_date", "end_date", "unit", "start_date_year", "start_date_month", "start_date_day", "end_date_year", "end_date_month", "end_date_day", "date_text", "serial_number", "startOfDay", "newDate", "method", "sm", "em", "sd", "ed", "smd", "emd", "months", "storedDay", "targetMonth", "daysInTargetMonth", "targetYear", "yearStart", "holidays", "weekend", "isMask", "maskDays", "maskIndex", "maskRegex", "total", "dec", "holiday", "hour", "minute", "second", "time_text", "return_type", "week_start", "jan", "inc", "h", "sign", "isLeapYear", "daysBetween", "basis", "sy", "ey", "feb29Between", "date1", "date2", "year1", "mar1year1", "year2", "mar1year2", "ylength", "years", "addOn", "isValidBinaryNumber", "bessel", "stringified", "places", "number1", "number2", "shift_amount", "real_num", "i_num", "suffix", "from_unit", "to_unit", "units", "binary_prefixes", "unit_prefixes", "from", "to", "base_from_unit", "base_to_unit", "from_multiplier", "to_multiplier", "alt", "from_binary_prefix", "from_unit_prefix", "to_binary_prefix", "to_unit_prefix", "step", "negative", "decimal", "inumber", "plus", "minus", "last", "inumber1", "inumber2", "c", "unit1", "unit2", "e", "s", "compact", "findResultIndex", "maxCriteriaLength", "currentCriteriaResult", "hasMatchingCriteria", "criteriaField", "field", "resultIndexes", "targetFields", "targetValues", "maxValue", "minValue", "validDate", "ensureDate", "lastCoupDateBeforeSettlement", "settlement", "maturity", "frequency", "validateFrequency", "validateBasis", "issue", "first_interest", "rate", "par", "nextDate", "numOfDays", "nper", "pv", "start_period", "end_period", "payment", "interest", "principal", "cost", "salvage", "life", "period", "current", "ceiling", "pr", "redemption", "basisVal", "diff", "fractional_dollar", "fraction", "decimal_dollar", "nominal_rate", "npery", "term", "schedule", "future", "per", "fv", "guess", "irrResult", "dates", "irrResultDeriv", "frac", "positive", "resultRate", "epsMax", "newRate", "epsRate", "resultValue", "contLoop", "finance_rate", "reinvest_rate", "payments", "incomes", "effect_rate", "pmt", "discount", "iterMax", "f", "dy", "df", "logical_test", "value_if_true", "value_if_false", "value_if_error", "value_if_na", "logical", "targetValue", "argc", "switchCount", "switchSatisfied", "hasDefaultClause", "defaultClause", "math", "create", "all", "factory", "esm_exports", "nowFormat", "nowDayFormat", "todayFormat", "todayDayFormat", "calculate", "app", "cm", "answers", "answerCopy", "avgs", "totals", "subtotals", "dateTime", "DateTime", "$", "cmLine", "cmLineNo", "lineNo", "answer", "line", "checkLocale", "match", "evaluate", "answerCopyInit", "formatAnswer", "plotAns", "error", "lineHeight", "scopeKeywords", "keywords", "key", "scope", "v", "numaraHints", "hint", "pages", "store", "page", "dateTimeReg", "lineDate", "lineDateRight", "locale", "lineDateNow", "lineDateToday", "lineDateTime", "rightOfDate", "durHrs", "pcntOfReg", "pcntOfValReg", "stripAnswer", "separator", "a", "b", "digits", "import_uikit", "import_codemirror", "import_javascript", "import_dialog", "import_placeholder", "import_closebrackets", "import_matchbrackets", "import_show_hint", "import_jump_to_line", "import_search", "import_searchcursor", "cm", "CodeMirror", "$", "udOptions", "udfPlaceholder", "uduPlaceholder", "udfInput", "uduInput", "refreshEditor", "editor", "stream", "cmStream", "app", "curr", "math", "esm_exports", "val", "par", "numaraHints", "keywords", "key", "f", "unit", "prefix", "unitBase", "unitCat", "cmCursor", "cmCursorLine", "start", "end", "curStr", "curWord", "curWordRegex", "text", "b", "cmForceBottom", "lineTop", "barTop", "lineHeight", "calculate", "activeLine", "line", "cmLineNo", "pages", "store", "page", "lineNo", "ttPos", "el", "event", "tip", "UIkit", "currency", "currencyName", "hint", "varTooltip", "formatAnswer", "tooltip", "inputContext", "index", "cm", "line", "answer", "$", "isEmpty", "isLine", "isSelection", "isMultiLine", "hasAnswer", "outputContext", "event", "textboxContext", "copyLine", "notify", "copyAnswer", "withLines", "copiedText", "copyAllLines", "copyAllAnswers", "copiedOutputs", "copyAll", "copiedCalc", "isElectron", "udfInput", "uduInput", "$all", "el", "name", "productName", "description", "version", "author", "homepage", "import_function_plot", "plot", "$", "app", "f", "math", "domain", "xDomain", "yDomain", "functionPlot", "store", "fileName", "productName", "preface", "svgData", "svgBlob", "downloadLink", "math", "numaraHints", "getRates", "url", "$", "response", "rates", "app", "currency", "hint", "store", "cm", "calculate", "error", "notify", "import_deep_diff", "checkDefaults", "$", "DeepDiff", "app", "settings", "bigNumberWarning", "localeWarning", "checkLocale", "checkMods", "key", "checkSchema", "store", "d", "updateIterval", "getRates", "$all", "item", "span", "icon", "generateIcons", "locales", "matrixTypes", "numericOutputs", "notations", "l", "n", "m", "el", "checkSize", "appTheme", "getTheme", "colors", "udfuTheme", "isElectron", "udfInput", "uduInput", "elements", "cm", "math", "calculate", "confirm", "showError", "import_uikit", "migrateSaved", "saved", "store", "pages", "id", "val", "getPageName", "pageNo", "regex", "pageNos", "page", "a", "b", "max", "i", "lastPage", "populatePages", "defaultPage", "$", "pageListItem", "app", "DateTime", "event", "loadPage", "UIkit", "renamePage", "deletePage", "duplicatePage", "generateIcons", "pageId", "cursor", "cm", "pageName", "newPage", "isImport", "p", "notify", "modal", "confirm", "rename", "dupPageId", "dupPage", "dupPageData", "dupPageName", "sortPages", "by", "sortedPages", "pageOrder", "orderedPages", "$all", "el", "deleteAllPages", "newPageDialog", "isElectron", "data", "msg", "error", "applyUdfu", "input", "type", "resolve", "reject", "UDFunc", "f", "app", "store", "error", "$", "udfInput", "showError", "uduInput", "KEYBINDING_MODIFIER_KEYS", "PLATFORM", "navigator", "platform", "APPLE_DEVICE", "test", "MOD", "ALT_GRAPH_ALIASES", "getModifierState", "event", "mod", "includes", "parseKeybinding", "str", "trim", "split", "map", "press", "mods", "key", "pop", "match", "RegExp", "matchKeyBindingPress", "_ref", "code", "toUpperCase", "find", "createKeybindingsHandler", "keyBindingMap", "options", "timeout", "_options$timeout", "keyBindings", "Object", "keys", "possibleMatches", "Map", "timer", "KeyboardEvent", "forEach", "keyBinding", "sequence", "callback", "remainingExpectedPresses", "get", "length", "set", "slice", "clearTimeout", "setTimeout", "clear", "bind", "tinykeys", "target", "_temp", "_ref2$event", "_ref2", "capture", "onKeyEvent", "addEventListener", "removeEventListener", "import_uikit", "description", "isElectron", "settings", "isMac", "$", "name", "event", "isMax", "toggleMinMax", "generateIcons", "colors", "store", "app", "lastPage", "loadPage", "defaultPage", "migrateSaved", "applyUdfu", "populatePages", "cm", "calculate", "copyAll", "modal", "author", "version", "homepage", "notify", "func", "plot", "error", "showError", "sels", "resizeDelay", "isResizing", "panel", "divider", "dividerTooltip", "offset", "iWidth", "inputWidth", "UIkit", "checkColorChange", "udTab", "udf", "udu", "refreshEditor", "udfInput", "uduInput", "pageOrder", "getPageName", "windowResizeDelay", "checkSize", "inputScroll", "outputScroll", "inputPanel", "outputPanel", "keys", "button", "command", "f", "$all", "checkUpdates", "printArea", "line", "lineNo", "input", "answer", "row"] + "sources": ["../../node_modules/uikit/dist/js/uikit.js", "../../node_modules/deep-diff/index.js", "../../node_modules/typed-function/lib/esm/typed-function.mjs", "../../node_modules/javascript-natural-sort/naturalSort.js", "../../node_modules/escape-latex/dist/index.js", "../../node_modules/seedrandom/lib/alea.js", "../../node_modules/seedrandom/lib/xor128.js", "../../node_modules/seedrandom/lib/xorwow.js", "../../node_modules/seedrandom/lib/xorshift7.js", "../../node_modules/seedrandom/lib/xor4096.js", "../../node_modules/seedrandom/lib/tychei.js", "../../node_modules/seedrandom/seedrandom.js", "../../node_modules/seedrandom/index.js", "../../node_modules/tiny-emitter/index.js", "../../node_modules/jstat/dist/jstat.js", "../../node_modules/bessel/bessel.js", "../../node_modules/codemirror/lib/codemirror.js", "../../node_modules/codemirror/mode/javascript/javascript.js", "../../node_modules/codemirror/addon/dialog/dialog.js", "../../node_modules/codemirror/addon/display/placeholder.js", "../../node_modules/codemirror/addon/edit/closebrackets.js", "../../node_modules/codemirror/addon/edit/matchbrackets.js", "../../node_modules/codemirror/addon/hint/show-hint.js", "../../node_modules/codemirror/addon/search/jump-to-line.js", "../../node_modules/codemirror/addon/search/searchcursor.js", "../../node_modules/codemirror/addon/search/search.js", "../../node_modules/function-plot/src/polyfills.ts", "../../node_modules/d3-shape/src/constant.js", "../../node_modules/d3-shape/src/math.js", "../../node_modules/d3-path/src/path.js", "../../node_modules/d3-path/src/index.js", "../../node_modules/d3-shape/src/path.js", "../../node_modules/d3-shape/src/arc.js", "../../node_modules/d3-shape/src/array.js", "../../node_modules/d3-shape/src/curve/linear.js", "../../node_modules/d3-shape/src/point.js", "../../node_modules/d3-shape/src/line.js", "../../node_modules/d3-shape/src/area.js", "../../node_modules/d3-shape/src/descending.js", "../../node_modules/d3-shape/src/identity.js", "../../node_modules/d3-shape/src/pie.js", "../../node_modules/d3-shape/src/curve/radial.js", "../../node_modules/d3-shape/src/lineRadial.js", "../../node_modules/d3-shape/src/areaRadial.js", "../../node_modules/d3-shape/src/pointRadial.js", "../../node_modules/d3-shape/src/curve/bump.js", "../../node_modules/d3-shape/src/link.js", "../../node_modules/d3-shape/src/symbol/asterisk.js", "../../node_modules/d3-shape/src/symbol/circle.js", "../../node_modules/d3-shape/src/symbol/cross.js", "../../node_modules/d3-shape/src/symbol/diamond.js", "../../node_modules/d3-shape/src/symbol/diamond2.js", "../../node_modules/d3-shape/src/symbol/plus.js", "../../node_modules/d3-shape/src/symbol/square.js", "../../node_modules/d3-shape/src/symbol/square2.js", "../../node_modules/d3-shape/src/symbol/star.js", "../../node_modules/d3-shape/src/symbol/triangle.js", "../../node_modules/d3-shape/src/symbol/triangle2.js", "../../node_modules/d3-shape/src/symbol/wye.js", "../../node_modules/d3-shape/src/symbol/times.js", "../../node_modules/d3-shape/src/symbol.js", "../../node_modules/d3-shape/src/noop.js", "../../node_modules/d3-shape/src/curve/basis.js", "../../node_modules/d3-shape/src/curve/basisClosed.js", "../../node_modules/d3-shape/src/curve/basisOpen.js", "../../node_modules/d3-shape/src/curve/bundle.js", "../../node_modules/d3-shape/src/curve/cardinal.js", "../../node_modules/d3-shape/src/curve/cardinalClosed.js", "../../node_modules/d3-shape/src/curve/cardinalOpen.js", "../../node_modules/d3-shape/src/curve/catmullRom.js", "../../node_modules/d3-shape/src/curve/catmullRomClosed.js", "../../node_modules/d3-shape/src/curve/catmullRomOpen.js", "../../node_modules/d3-shape/src/curve/linearClosed.js", "../../node_modules/d3-shape/src/curve/monotone.js", "../../node_modules/d3-shape/src/curve/natural.js", "../../node_modules/d3-shape/src/curve/step.js", "../../node_modules/d3-shape/src/offset/none.js", "../../node_modules/d3-shape/src/order/none.js", "../../node_modules/d3-shape/src/stack.js", "../../node_modules/d3-shape/src/offset/expand.js", "../../node_modules/d3-shape/src/offset/diverging.js", "../../node_modules/d3-shape/src/offset/silhouette.js", "../../node_modules/d3-shape/src/offset/wiggle.js", "../../node_modules/d3-shape/src/order/appearance.js", "../../node_modules/d3-shape/src/order/ascending.js", "../../node_modules/d3-shape/src/order/descending.js", "../../node_modules/d3-shape/src/order/insideOut.js", "../../node_modules/d3-shape/src/order/reverse.js", "../../node_modules/d3-shape/src/index.js", "../../node_modules/d3-format/src/formatDecimal.js", "../../node_modules/d3-format/src/exponent.js", "../../node_modules/d3-format/src/formatGroup.js", "../../node_modules/d3-format/src/formatNumerals.js", "../../node_modules/d3-format/src/formatSpecifier.js", "../../node_modules/d3-format/src/formatTrim.js", "../../node_modules/d3-format/src/formatPrefixAuto.js", "../../node_modules/d3-format/src/formatRounded.js", "../../node_modules/d3-format/src/formatTypes.js", "../../node_modules/d3-format/src/identity.js", "../../node_modules/d3-format/src/locale.js", "../../node_modules/d3-format/src/defaultLocale.js", "../../node_modules/d3-format/src/precisionFixed.js", "../../node_modules/d3-format/src/precisionPrefix.js", "../../node_modules/d3-format/src/precisionRound.js", "../../node_modules/d3-format/src/index.js", "../../node_modules/d3-array/src/ascending.js", "../../node_modules/d3-array/src/descending.js", "../../node_modules/d3-array/src/bisector.js", "../../node_modules/d3-array/src/number.js", "../../node_modules/d3-array/src/bisect.js", "../../node_modules/internmap/src/index.js", "../../node_modules/d3-array/src/sort.js", "../../node_modules/d3-array/src/ticks.js", "../../node_modules/d3-array/src/max.js", "../../node_modules/d3-array/src/min.js", "../../node_modules/d3-array/src/quickselect.js", "../../node_modules/d3-array/src/quantile.js", "../../node_modules/d3-array/src/range.js", "../../node_modules/d3-array/src/index.js", "../../node_modules/d3-scale/src/init.js", "../../node_modules/d3-scale/src/ordinal.js", "../../node_modules/d3-scale/src/band.js", "../../node_modules/d3-color/src/define.js", "../../node_modules/d3-color/src/color.js", "../../node_modules/d3-color/src/math.js", "../../node_modules/d3-color/src/lab.js", "../../node_modules/d3-color/src/cubehelix.js", "../../node_modules/d3-color/src/index.js", "../../node_modules/d3-interpolate/src/basis.js", "../../node_modules/d3-interpolate/src/basisClosed.js", "../../node_modules/d3-interpolate/src/constant.js", "../../node_modules/d3-interpolate/src/color.js", "../../node_modules/d3-interpolate/src/rgb.js", "../../node_modules/d3-interpolate/src/numberArray.js", "../../node_modules/d3-interpolate/src/array.js", "../../node_modules/d3-interpolate/src/date.js", "../../node_modules/d3-interpolate/src/number.js", "../../node_modules/d3-interpolate/src/object.js", "../../node_modules/d3-interpolate/src/string.js", "../../node_modules/d3-interpolate/src/value.js", "../../node_modules/d3-interpolate/src/discrete.js", "../../node_modules/d3-interpolate/src/hue.js", "../../node_modules/d3-interpolate/src/round.js", "../../node_modules/d3-interpolate/src/transform/decompose.js", "../../node_modules/d3-interpolate/src/transform/parse.js", "../../node_modules/d3-interpolate/src/transform/index.js", "../../node_modules/d3-interpolate/src/zoom.js", "../../node_modules/d3-interpolate/src/hsl.js", "../../node_modules/d3-interpolate/src/lab.js", "../../node_modules/d3-interpolate/src/hcl.js", "../../node_modules/d3-interpolate/src/cubehelix.js", "../../node_modules/d3-interpolate/src/piecewise.js", "../../node_modules/d3-interpolate/src/quantize.js", "../../node_modules/d3-interpolate/src/index.js", "../../node_modules/d3-scale/src/constant.js", "../../node_modules/d3-scale/src/number.js", "../../node_modules/d3-scale/src/continuous.js", "../../node_modules/d3-scale/src/tickFormat.js", "../../node_modules/d3-scale/src/linear.js", "../../node_modules/d3-scale/src/identity.js", "../../node_modules/d3-scale/src/nice.js", "../../node_modules/d3-scale/src/log.js", "../../node_modules/d3-scale/src/symlog.js", "../../node_modules/d3-scale/src/pow.js", "../../node_modules/d3-scale/src/radial.js", "../../node_modules/d3-scale/src/quantile.js", "../../node_modules/d3-scale/src/quantize.js", "../../node_modules/d3-scale/src/threshold.js", "../../node_modules/d3-time/src/interval.js", "../../node_modules/d3-time/src/millisecond.js", "../../node_modules/d3-time/src/second.js", "../../node_modules/d3-time/src/minute.js", "../../node_modules/d3-time/src/hour.js", "../../node_modules/d3-time/src/day.js", "../../node_modules/d3-time/src/week.js", "../../node_modules/d3-time/src/month.js", "../../node_modules/d3-time/src/year.js", "../../node_modules/d3-time/src/ticks.js", "../../node_modules/d3-time/src/index.js", "../../node_modules/d3-time-format/src/locale.js", "../../node_modules/d3-time-format/src/defaultLocale.js", "../../node_modules/d3-time-format/src/index.js", "../../node_modules/d3-scale/src/time.js", "../../node_modules/d3-scale/src/utcTime.js", "../../node_modules/d3-scale/src/sequential.js", "../../node_modules/d3-scale/src/sequentialQuantile.js", "../../node_modules/d3-scale/src/diverging.js", "../../node_modules/d3-scale/src/index.js", "../../node_modules/d3-axis/src/identity.js", "../../node_modules/d3-axis/src/axis.js", "../../node_modules/d3-axis/src/index.js", "../../node_modules/d3-dispatch/src/dispatch.js", "../../node_modules/d3-dispatch/src/index.js", "../../node_modules/d3-selection/src/namespaces.js", "../../node_modules/d3-selection/src/namespace.js", "../../node_modules/d3-selection/src/creator.js", "../../node_modules/d3-selection/src/selector.js", "../../node_modules/d3-selection/src/selection/select.js", "../../node_modules/d3-selection/src/array.js", "../../node_modules/d3-selection/src/selectorAll.js", "../../node_modules/d3-selection/src/selection/selectAll.js", "../../node_modules/d3-selection/src/matcher.js", "../../node_modules/d3-selection/src/selection/selectChild.js", "../../node_modules/d3-selection/src/selection/selectChildren.js", "../../node_modules/d3-selection/src/selection/filter.js", "../../node_modules/d3-selection/src/selection/sparse.js", "../../node_modules/d3-selection/src/selection/enter.js", "../../node_modules/d3-selection/src/constant.js", "../../node_modules/d3-selection/src/selection/data.js", "../../node_modules/d3-selection/src/selection/exit.js", "../../node_modules/d3-selection/src/selection/join.js", "../../node_modules/d3-selection/src/selection/merge.js", "../../node_modules/d3-selection/src/selection/order.js", "../../node_modules/d3-selection/src/selection/sort.js", "../../node_modules/d3-selection/src/selection/call.js", "../../node_modules/d3-selection/src/selection/nodes.js", "../../node_modules/d3-selection/src/selection/node.js", "../../node_modules/d3-selection/src/selection/size.js", "../../node_modules/d3-selection/src/selection/empty.js", "../../node_modules/d3-selection/src/selection/each.js", "../../node_modules/d3-selection/src/selection/attr.js", "../../node_modules/d3-selection/src/window.js", "../../node_modules/d3-selection/src/selection/style.js", "../../node_modules/d3-selection/src/selection/property.js", "../../node_modules/d3-selection/src/selection/classed.js", "../../node_modules/d3-selection/src/selection/text.js", "../../node_modules/d3-selection/src/selection/html.js", "../../node_modules/d3-selection/src/selection/raise.js", "../../node_modules/d3-selection/src/selection/lower.js", "../../node_modules/d3-selection/src/selection/append.js", "../../node_modules/d3-selection/src/selection/insert.js", "../../node_modules/d3-selection/src/selection/remove.js", "../../node_modules/d3-selection/src/selection/clone.js", "../../node_modules/d3-selection/src/selection/datum.js", "../../node_modules/d3-selection/src/selection/on.js", "../../node_modules/d3-selection/src/selection/dispatch.js", "../../node_modules/d3-selection/src/selection/iterator.js", "../../node_modules/d3-selection/src/selection/index.js", "../../node_modules/d3-selection/src/select.js", "../../node_modules/d3-selection/src/create.js", "../../node_modules/d3-selection/src/local.js", "../../node_modules/d3-selection/src/sourceEvent.js", "../../node_modules/d3-selection/src/pointer.js", "../../node_modules/d3-selection/src/pointers.js", "../../node_modules/d3-selection/src/selectAll.js", "../../node_modules/d3-selection/src/index.js", "../../node_modules/d3-drag/src/noevent.js", "../../node_modules/d3-drag/src/nodrag.js", "../../node_modules/d3-drag/src/index.js", "../../node_modules/d3-timer/src/timer.js", "../../node_modules/d3-timer/src/timeout.js", "../../node_modules/d3-timer/src/index.js", "../../node_modules/d3-transition/src/transition/schedule.js", "../../node_modules/d3-transition/src/interrupt.js", "../../node_modules/d3-transition/src/selection/interrupt.js", "../../node_modules/d3-transition/src/transition/tween.js", "../../node_modules/d3-transition/src/transition/interpolate.js", "../../node_modules/d3-transition/src/transition/attr.js", "../../node_modules/d3-transition/src/transition/attrTween.js", "../../node_modules/d3-transition/src/transition/delay.js", "../../node_modules/d3-transition/src/transition/duration.js", "../../node_modules/d3-transition/src/transition/ease.js", "../../node_modules/d3-transition/src/transition/easeVarying.js", "../../node_modules/d3-transition/src/transition/filter.js", "../../node_modules/d3-transition/src/transition/merge.js", "../../node_modules/d3-transition/src/transition/on.js", "../../node_modules/d3-transition/src/transition/remove.js", "../../node_modules/d3-transition/src/transition/select.js", "../../node_modules/d3-transition/src/transition/selectAll.js", "../../node_modules/d3-transition/src/transition/selection.js", "../../node_modules/d3-transition/src/transition/style.js", "../../node_modules/d3-transition/src/transition/styleTween.js", "../../node_modules/d3-transition/src/transition/text.js", "../../node_modules/d3-transition/src/transition/textTween.js", "../../node_modules/d3-transition/src/transition/transition.js", "../../node_modules/d3-transition/src/transition/end.js", "../../node_modules/d3-transition/src/transition/index.js", "../../node_modules/d3-ease/src/cubic.js", "../../node_modules/d3-ease/src/index.js", "../../node_modules/d3-transition/src/selection/transition.js", "../../node_modules/d3-transition/src/selection/index.js", "../../node_modules/d3-transition/src/index.js", "../../node_modules/d3-zoom/src/constant.js", "../../node_modules/d3-zoom/src/event.js", "../../node_modules/d3-zoom/src/transform.js", "../../node_modules/d3-zoom/src/noevent.js", "../../node_modules/d3-zoom/src/zoom.js", "../../node_modules/d3-zoom/src/index.js", "../../node_modules/events/events.js", "../../node_modules/function-plot/src/helpers/annotations.ts", "../../node_modules/function-plot/src/globals.ts", "../../node_modules/function-plot/src/utils.ts", "../../node_modules/mr-parser/lib/token-type.js", "../../node_modules/mr-parser/lib/Lexer.js", "../../node_modules/mr-parser/lib/node/Node.js", "../../node_modules/mr-parser/lib/node/ConstantNode.js", "../../node_modules/mr-parser/lib/node/OperatorNode.js", "../../node_modules/mr-parser/lib/node/UnaryNode.js", "../../node_modules/mr-parser/lib/node/SymbolNode.js", "../../node_modules/mr-parser/lib/node/FunctionNode.js", "../../node_modules/mr-parser/lib/node/ArrayNode.js", "../../node_modules/mr-parser/lib/node/ConditionalNode.js", "../../node_modules/mr-parser/lib/node/AssignmentNode.js", "../../node_modules/mr-parser/lib/node/BlockNode.js", "../../node_modules/mr-parser/lib/Parser.js", "../../node_modules/mr-parser/lib/node/index.js", "../../node_modules/mr-parser/index.js", "../../node_modules/extend/index.js", "../../node_modules/math-codegen/lib/node/ArrayNode.js", "../../node_modules/math-codegen/lib/node/AssignmentNode.js", "../../node_modules/math-codegen/lib/node/ConditionalNode.js", "../../node_modules/math-codegen/lib/node/ConstantNode.js", "../../node_modules/math-codegen/lib/node/FunctionNode.js", "../../node_modules/math-codegen/lib/misc/Operators.js", "../../node_modules/math-codegen/lib/node/OperatorNode.js", "../../node_modules/math-codegen/lib/node/SymbolNode.js", "../../node_modules/math-codegen/lib/misc/UnaryOperators.js", "../../node_modules/math-codegen/lib/node/UnaryNode.js", "../../node_modules/math-codegen/lib/Interpreter.js", "../../node_modules/math-codegen/lib/CodeGenerator.js", "../../node_modules/math-codegen/index.js", "../../node_modules/built-in-math-eval/lib/adapter.js", "../../node_modules/built-in-math-eval/lib/eval.js", "../../node_modules/built-in-math-eval/index.js", "../../node_modules/interval-arithmetic-eval/node_modules/math-codegen/lib/node/ArrayNode.js", "../../node_modules/interval-arithmetic-eval/node_modules/math-codegen/lib/node/AssignmentNode.js", "../../node_modules/interval-arithmetic-eval/node_modules/math-codegen/lib/node/ConditionalNode.js", "../../node_modules/interval-arithmetic-eval/node_modules/math-codegen/lib/node/ConstantNode.js", "../../node_modules/interval-arithmetic-eval/node_modules/math-codegen/lib/node/FunctionNode.js", "../../node_modules/interval-arithmetic-eval/node_modules/math-codegen/lib/misc/Operators.js", "../../node_modules/interval-arithmetic-eval/node_modules/math-codegen/lib/node/OperatorNode.js", "../../node_modules/interval-arithmetic-eval/node_modules/math-codegen/lib/node/SymbolNode.js", "../../node_modules/interval-arithmetic-eval/node_modules/math-codegen/lib/misc/UnaryOperators.js", "../../node_modules/interval-arithmetic-eval/node_modules/math-codegen/lib/node/UnaryNode.js", "../../node_modules/interval-arithmetic-eval/node_modules/math-codegen/lib/Interpreter.js", "../../node_modules/interval-arithmetic-eval/node_modules/math-codegen/lib/CodeGenerator.js", "../../node_modules/interval-arithmetic-eval/node_modules/math-codegen/index.js", "../../node_modules/interval-arithmetic/src/operations/utils.ts", "../../node_modules/double-bits/double.js", "../../node_modules/nextafter/nextafter.js", "../../node_modules/interval-arithmetic/src/round.ts", "../../node_modules/interval-arithmetic/src/interval.ts", "../../node_modules/interval-arithmetic/src/constants.ts", "../../node_modules/interval-arithmetic/src/operations/relational.ts", "../../node_modules/interval-arithmetic/src/operations/division.ts", "../../node_modules/interval-arithmetic/src/operations/arithmetic.ts", "../../node_modules/interval-arithmetic/src/operations/algebra.ts", "../../node_modules/interval-arithmetic/src/operations/misc.ts", "../../node_modules/interval-arithmetic/src/operations/trigonometric.ts", "../../node_modules/interval-arithmetic/src/index.ts", "../../node_modules/interval-arithmetic-eval/lib/adapter.js", "../../node_modules/interval-arithmetic-eval/lib/policies.js", "../../node_modules/interval-arithmetic-eval/lib/eval.js", "../../node_modules/interval-arithmetic-eval/index.js", "../../node_modules/function-plot/src/helpers/eval.ts", "../../node_modules/function-plot/src/tip.ts", "../../node_modules/function-plot/src/samplers/interval.ts", "../../node_modules/function-plot/src/samplers/builtIn.ts", "../../node_modules/function-plot/src/evaluate.ts", "../../node_modules/function-plot/src/graph-types/polyline.ts", "../../node_modules/function-plot/src/graph-types/interval.ts", "../../node_modules/function-plot/src/graph-types/scatter.ts", "../../node_modules/function-plot/src/graph-types/text.ts", "../../node_modules/function-plot/src/graph-types/index.ts", "../../node_modules/function-plot/src/datum-defaults.ts", "../../node_modules/function-plot/src/helpers/derivative.ts", "../../node_modules/function-plot/src/helpers/secant.ts", "../../node_modules/function-plot/src/helpers/index.ts", "../../node_modules/function-plot/src/chart.ts", "../../node_modules/function-plot/dist/types.js", "../../node_modules/function-plot/src/index.ts", "../../src/js/common.js", "../../node_modules/lucide/src/createElement.ts", "../../node_modules/lucide/src/replaceElement.ts", "../../node_modules/lucide/src/defaultAttributes.ts", "../../node_modules/lucide/src/icons/arrow-up-down.ts", "../../node_modules/lucide/src/icons/braces.ts", "../../node_modules/lucide/src/icons/circle-alert.ts", "../../node_modules/lucide/src/icons/circle.ts", "../../node_modules/lucide/src/icons/copy.ts", "../../node_modules/lucide/src/icons/corner-down-right.ts", "../../node_modules/lucide/src/icons/dot.ts", "../../node_modules/lucide/src/icons/download.ts", "../../node_modules/lucide/src/icons/ellipsis-vertical.ts", "../../node_modules/lucide/src/icons/eraser.ts", "../../node_modules/lucide/src/icons/info.ts", "../../node_modules/lucide/src/icons/list-restart.ts", "../../node_modules/lucide/src/icons/palette.ts", "../../node_modules/lucide/src/icons/panel-left-close.ts", "../../node_modules/lucide/src/icons/panel-left.ts", "../../node_modules/lucide/src/icons/plus.ts", "../../node_modules/lucide/src/icons/printer.ts", "../../node_modules/lucide/src/icons/refresh-ccw.ts", "../../node_modules/lucide/src/icons/rotate-ccw.ts", "../../node_modules/lucide/src/icons/scaling.ts", "../../node_modules/lucide/src/icons/settings.ts", "../../node_modules/lucide/src/icons/trash.ts", "../../node_modules/lucide/src/icons/upload.ts", "../../node_modules/lucide/src/lucide.ts", "../../src/js/icons.js", "../../src/js/modal.js", "../../src/js/utils.js", "../../node_modules/@melloware/coloris/dist/esm/coloris.js", "../../src/js/colors.js", "../../node_modules/luxon/src/errors.js", "../../node_modules/luxon/src/impl/formats.js", "../../node_modules/luxon/src/zone.js", "../../node_modules/luxon/src/zones/systemZone.js", "../../node_modules/luxon/src/zones/IANAZone.js", "../../node_modules/luxon/src/impl/locale.js", "../../node_modules/luxon/src/zones/fixedOffsetZone.js", "../../node_modules/luxon/src/zones/invalidZone.js", "../../node_modules/luxon/src/impl/zoneUtil.js", "../../node_modules/luxon/src/impl/digits.js", "../../node_modules/luxon/src/settings.js", "../../node_modules/luxon/src/impl/invalid.js", "../../node_modules/luxon/src/impl/conversions.js", "../../node_modules/luxon/src/impl/util.js", "../../node_modules/luxon/src/impl/english.js", "../../node_modules/luxon/src/impl/formatter.js", "../../node_modules/luxon/src/impl/regexParser.js", "../../node_modules/luxon/src/duration.js", "../../node_modules/luxon/src/interval.js", "../../node_modules/luxon/src/info.js", "../../node_modules/luxon/src/impl/diff.js", "../../node_modules/luxon/src/impl/tokenParser.js", "../../node_modules/luxon/src/datetime.js", "../../node_modules/@babel/runtime/helpers/esm/extends.js", "../../node_modules/mathjs/lib/esm/core/config.js", "../../node_modules/mathjs/lib/esm/utils/customs.js", "../../node_modules/mathjs/lib/esm/utils/map.js", "../../node_modules/mathjs/lib/esm/utils/is.js", "../../node_modules/mathjs/lib/esm/utils/object.js", "../../node_modules/mathjs/lib/esm/core/function/config.js", "../../node_modules/mathjs/lib/esm/factoriesAny.js", "../../node_modules/mathjs/lib/esm/core/function/typed.js", "../../node_modules/mathjs/lib/esm/utils/factory.js", "../../node_modules/mathjs/lib/esm/utils/number.js", "../../node_modules/mathjs/lib/esm/type/resultset/ResultSet.js", "../../node_modules/decimal.js/decimal.mjs", "../../node_modules/mathjs/lib/esm/type/bignumber/BigNumber.js", "../../node_modules/complex.js/dist/complex.mjs", "../../node_modules/mathjs/lib/esm/type/complex/Complex.js", "../../node_modules/fraction.js/dist/fraction.mjs", "../../node_modules/mathjs/lib/esm/type/fraction/Fraction.js", "../../node_modules/mathjs/lib/esm/type/matrix/Range.js", "../../node_modules/mathjs/lib/esm/type/matrix/Matrix.js", "../../node_modules/mathjs/lib/esm/utils/bignumber/formatter.js", "../../node_modules/mathjs/lib/esm/utils/string.js", "../../node_modules/mathjs/lib/esm/error/DimensionError.js", "../../node_modules/mathjs/lib/esm/error/IndexError.js", "../../node_modules/mathjs/lib/esm/utils/array.js", "../../node_modules/mathjs/lib/esm/utils/optimizeCallback.js", "../../node_modules/mathjs/lib/esm/type/matrix/DenseMatrix.js", "../../node_modules/mathjs/lib/esm/function/utils/clone.js", "../../node_modules/mathjs/lib/esm/utils/switch.js", "../../node_modules/mathjs/lib/esm/utils/collection.js", "../../node_modules/mathjs/lib/esm/function/utils/isInteger.js", "../../node_modules/mathjs/lib/esm/plain/number/arithmetic.js", "../../node_modules/mathjs/lib/esm/plain/number/bitwise.js", "../../node_modules/mathjs/lib/esm/utils/product.js", "../../node_modules/mathjs/lib/esm/plain/number/combinations.js", "../../node_modules/mathjs/lib/esm/plain/number/constants.js", "../../node_modules/mathjs/lib/esm/plain/number/logical.js", "../../node_modules/mathjs/lib/esm/plain/number/probability.js", "../../node_modules/mathjs/lib/esm/plain/number/trigonometry.js", "../../node_modules/mathjs/lib/esm/plain/number/utils.js", "../../node_modules/mathjs/lib/esm/utils/bignumber/nearlyEqual.js", "../../node_modules/mathjs/lib/esm/function/utils/isNegative.js", "../../node_modules/mathjs/lib/esm/function/utils/isNumeric.js", "../../node_modules/mathjs/lib/esm/function/utils/hasNumericValue.js", "../../node_modules/mathjs/lib/esm/function/utils/isPositive.js", "../../node_modules/mathjs/lib/esm/function/utils/isZero.js", "../../node_modules/mathjs/lib/esm/function/utils/isNaN.js", "../../node_modules/mathjs/lib/esm/function/utils/typeOf.js", "../../node_modules/mathjs/lib/esm/utils/complex.js", "../../node_modules/mathjs/lib/esm/function/relational/compareUnits.js", "../../node_modules/mathjs/lib/esm/function/relational/equalScalar.js", "../../node_modules/mathjs/lib/esm/type/matrix/SparseMatrix.js", "../../node_modules/mathjs/lib/esm/type/number.js", "../../node_modules/mathjs/lib/esm/type/bigint.js", "../../node_modules/mathjs/lib/esm/type/string.js", "../../node_modules/mathjs/lib/esm/type/boolean.js", "../../node_modules/mathjs/lib/esm/type/bignumber/function/bignumber.js", "../../node_modules/mathjs/lib/esm/type/complex/function/complex.js", "../../node_modules/mathjs/lib/esm/type/fraction/function/fraction.js", "../../node_modules/mathjs/lib/esm/type/matrix/function/matrix.js", "../../node_modules/mathjs/lib/esm/function/matrix/matrixFromFunction.js", "../../node_modules/mathjs/lib/esm/function/matrix/matrixFromRows.js", "../../node_modules/mathjs/lib/esm/function/matrix/matrixFromColumns.js", "../../node_modules/mathjs/lib/esm/type/unit/function/splitUnit.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/unaryMinus.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/unaryPlus.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/abs.js", "../../node_modules/mathjs/lib/esm/function/matrix/apply.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/addScalar.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/subtractScalar.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/cbrt.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo11xS0s.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo12xSfs.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo14xDs.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/ceil.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/cube.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/exp.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/expm1.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/fix.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/floor.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo02xDS0.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo03xDSf.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo05xSfSf.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo13xDD.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/broadcast.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matrixAlgorithmSuite.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/mod.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo01xDSid.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo04xSidSid.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo10xSids.js", "../../node_modules/mathjs/lib/esm/error/ArgumentsError.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/gcd.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo06xS0S0.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/lcm.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/log10.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/log2.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/multiplyScalar.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/multiply.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/nthRoot.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/sign.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/sqrt.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/square.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/subtract.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/xgcd.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/invmod.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo09xS0Sf.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/dotMultiply.js", "../../node_modules/mathjs/lib/esm/utils/bignumber/bitwise.js", "../../node_modules/mathjs/lib/esm/function/bitwise/bitAnd.js", "../../node_modules/mathjs/lib/esm/function/bitwise/bitNot.js", "../../node_modules/mathjs/lib/esm/function/bitwise/bitOr.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo07xSSf.js", "../../node_modules/mathjs/lib/esm/function/bitwise/bitXor.js", "../../node_modules/mathjs/lib/esm/function/complex/arg.js", "../../node_modules/mathjs/lib/esm/function/complex/conj.js", "../../node_modules/mathjs/lib/esm/function/complex/im.js", "../../node_modules/mathjs/lib/esm/function/complex/re.js", "../../node_modules/mathjs/lib/esm/function/logical/not.js", "../../node_modules/mathjs/lib/esm/function/logical/or.js", "../../node_modules/mathjs/lib/esm/function/logical/xor.js", "../../node_modules/mathjs/lib/esm/function/matrix/concat.js", "../../node_modules/mathjs/lib/esm/function/matrix/column.js", "../../node_modules/mathjs/lib/esm/function/matrix/count.js", "../../node_modules/mathjs/lib/esm/function/matrix/cross.js", "../../node_modules/mathjs/lib/esm/function/matrix/diag.js", "../../node_modules/mathjs/lib/esm/function/matrix/filter.js", "../../node_modules/mathjs/lib/esm/function/matrix/flatten.js", "../../node_modules/mathjs/lib/esm/function/matrix/forEach.js", "../../node_modules/mathjs/lib/esm/function/matrix/getMatrixDataType.js", "../../node_modules/mathjs/lib/esm/function/matrix/identity.js", "../../node_modules/mathjs/lib/esm/function/matrix/kron.js", "../../node_modules/mathjs/lib/esm/function/matrix/map.js", "../../node_modules/mathjs/lib/esm/function/matrix/diff.js", "../../node_modules/mathjs/lib/esm/function/matrix/ones.js", "../../node_modules/mathjs/lib/esm/utils/noop.js", "../../node_modules/mathjs/lib/esm/function/matrix/range.js", "../../node_modules/mathjs/lib/esm/function/matrix/reshape.js", "../../node_modules/mathjs/lib/esm/function/matrix/resize.js", "../../node_modules/mathjs/lib/esm/function/matrix/rotate.js", "../../node_modules/mathjs/lib/esm/function/matrix/rotationMatrix.js", "../../node_modules/mathjs/lib/esm/function/matrix/row.js", "../../node_modules/mathjs/lib/esm/function/matrix/size.js", "../../node_modules/mathjs/lib/esm/function/matrix/squeeze.js", "../../node_modules/mathjs/lib/esm/function/matrix/subset.js", "../../node_modules/mathjs/lib/esm/function/matrix/transpose.js", "../../node_modules/mathjs/lib/esm/function/matrix/ctranspose.js", "../../node_modules/mathjs/lib/esm/function/matrix/zeros.js", "../../node_modules/mathjs/lib/esm/function/matrix/fft.js", "../../node_modules/mathjs/lib/esm/function/matrix/ifft.js", "../../node_modules/@babel/runtime/helpers/esm/typeof.js", "../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js", "../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js", "../../node_modules/@babel/runtime/helpers/esm/defineProperty.js", "../../node_modules/mathjs/lib/esm/function/numeric/solveODE.js", "../../node_modules/mathjs/lib/esm/function/special/erf.js", "../../node_modules/mathjs/lib/esm/function/special/zeta.js", "../../node_modules/mathjs/lib/esm/function/statistics/mode.js", "../../node_modules/mathjs/lib/esm/function/statistics/utils/improveErrorMessage.js", "../../node_modules/mathjs/lib/esm/function/statistics/prod.js", "../../node_modules/mathjs/lib/esm/function/string/format.js", "../../node_modules/mathjs/lib/esm/function/string/bin.js", "../../node_modules/mathjs/lib/esm/function/string/oct.js", "../../node_modules/mathjs/lib/esm/function/string/hex.js", "../../node_modules/mathjs/lib/esm/utils/print.js", "../../node_modules/mathjs/lib/esm/function/string/print.js", "../../node_modules/mathjs/lib/esm/function/unit/to.js", "../../node_modules/mathjs/lib/esm/function/utils/isPrime.js", "../../node_modules/mathjs/lib/esm/function/utils/numeric.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/divideScalar.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/pow.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/round.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/log.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/log1p.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/nthRoots.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/dotPow.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/dotDivide.js", "../../node_modules/mathjs/lib/esm/function/algebra/solver/utils/solveValidation.js", "../../node_modules/mathjs/lib/esm/function/algebra/solver/lsolve.js", "../../node_modules/mathjs/lib/esm/function/algebra/solver/usolve.js", "../../node_modules/mathjs/lib/esm/function/algebra/solver/lsolveAll.js", "../../node_modules/mathjs/lib/esm/function/algebra/solver/usolveAll.js", "../../node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo08xS0Sid.js", "../../node_modules/mathjs/lib/esm/function/bitwise/useMatrixForArrayScalar.js", "../../node_modules/mathjs/lib/esm/function/bitwise/leftShift.js", "../../node_modules/mathjs/lib/esm/function/bitwise/rightArithShift.js", "../../node_modules/mathjs/lib/esm/function/bitwise/rightLogShift.js", "../../node_modules/mathjs/lib/esm/function/logical/and.js", "../../node_modules/mathjs/lib/esm/function/relational/compare.js", "../../node_modules/mathjs/lib/esm/function/relational/compareNatural.js", "../../node_modules/mathjs/lib/esm/function/relational/compareText.js", "../../node_modules/mathjs/lib/esm/function/relational/equal.js", "../../node_modules/mathjs/lib/esm/function/relational/equalText.js", "../../node_modules/mathjs/lib/esm/function/relational/smaller.js", "../../node_modules/mathjs/lib/esm/function/relational/smallerEq.js", "../../node_modules/mathjs/lib/esm/function/relational/larger.js", "../../node_modules/mathjs/lib/esm/function/relational/largerEq.js", "../../node_modules/mathjs/lib/esm/function/relational/deepEqual.js", "../../node_modules/mathjs/lib/esm/function/relational/unequal.js", "../../node_modules/mathjs/lib/esm/function/matrix/partitionSelect.js", "../../node_modules/mathjs/lib/esm/function/matrix/sort.js", "../../node_modules/mathjs/lib/esm/function/statistics/max.js", "../../node_modules/mathjs/lib/esm/function/statistics/min.js", "../../node_modules/mathjs/lib/esm/type/matrix/ImmutableDenseMatrix.js", "../../node_modules/mathjs/lib/esm/type/matrix/MatrixIndex.js", "../../node_modules/mathjs/lib/esm/type/matrix/FibonacciHeap.js", "../../node_modules/mathjs/lib/esm/type/matrix/Spa.js", "../../node_modules/mathjs/lib/esm/utils/lruQueue.js", "../../node_modules/mathjs/lib/esm/utils/function.js", "../../node_modules/mathjs/lib/esm/utils/bignumber/constants.js", "../../node_modules/mathjs/lib/esm/type/unit/Unit.js", "../../node_modules/mathjs/lib/esm/type/unit/function/unit.js", "../../node_modules/mathjs/lib/esm/type/matrix/function/sparse.js", "../../node_modules/mathjs/lib/esm/type/unit/function/createUnit.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/acos.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/acosh.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/acot.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/acoth.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/acsc.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/acsch.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/asec.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/asech.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/asin.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/asinh.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/atan.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/atan2.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/atanh.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/trigUnit.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/cos.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/cosh.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/cot.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/coth.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/csc.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/csch.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/sec.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/sech.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/sin.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/sinh.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/tan.js", "../../node_modules/mathjs/lib/esm/function/trigonometry/tanh.js", "../../node_modules/mathjs/lib/esm/function/set/setCartesian.js", "../../node_modules/mathjs/lib/esm/function/set/setDifference.js", "../../node_modules/mathjs/lib/esm/function/set/setDistinct.js", "../../node_modules/mathjs/lib/esm/function/set/setIntersect.js", "../../node_modules/mathjs/lib/esm/function/set/setIsSubset.js", "../../node_modules/mathjs/lib/esm/function/set/setMultiplicity.js", "../../node_modules/mathjs/lib/esm/function/set/setPowerset.js", "../../node_modules/mathjs/lib/esm/function/set/setSize.js", "../../node_modules/mathjs/lib/esm/function/set/setSymDifference.js", "../../node_modules/mathjs/lib/esm/function/set/setUnion.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/add.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/hypot.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/norm.js", "../../node_modules/mathjs/lib/esm/function/matrix/dot.js", "../../node_modules/mathjs/lib/esm/function/matrix/trace.js", "../../node_modules/mathjs/lib/esm/type/matrix/function/index.js", "../../node_modules/mathjs/lib/esm/expression/keywords.js", "../../node_modules/mathjs/lib/esm/expression/node/Node.js", "../../node_modules/mathjs/lib/esm/expression/transform/utils/errorTransform.js", "../../node_modules/mathjs/lib/esm/expression/node/utils/access.js", "../../node_modules/mathjs/lib/esm/expression/node/AccessorNode.js", "../../node_modules/mathjs/lib/esm/expression/node/ArrayNode.js", "../../node_modules/mathjs/lib/esm/expression/node/utils/assign.js", "../../node_modules/mathjs/lib/esm/expression/operators.js", "../../node_modules/mathjs/lib/esm/expression/node/AssignmentNode.js", "../../node_modules/mathjs/lib/esm/expression/node/BlockNode.js", "../../node_modules/mathjs/lib/esm/expression/node/ConditionalNode.js", "../../node_modules/mathjs/lib/esm/utils/latex.js", "../../node_modules/mathjs/lib/esm/expression/node/ConstantNode.js", "../../node_modules/mathjs/lib/esm/expression/node/FunctionAssignmentNode.js", "../../node_modules/mathjs/lib/esm/expression/node/IndexNode.js", "../../node_modules/mathjs/lib/esm/expression/node/ObjectNode.js", "../../node_modules/mathjs/lib/esm/utils/scope.js", "../../node_modules/mathjs/lib/esm/expression/node/OperatorNode.js", "../../node_modules/mathjs/lib/esm/expression/node/ParenthesisNode.js", "../../node_modules/mathjs/lib/esm/expression/node/RangeNode.js", "../../node_modules/mathjs/lib/esm/expression/node/RelationalNode.js", "../../node_modules/mathjs/lib/esm/expression/node/SymbolNode.js", "../../node_modules/mathjs/lib/esm/expression/node/FunctionNode.js", "../../node_modules/mathjs/lib/esm/expression/parse.js", "../../node_modules/mathjs/lib/esm/expression/function/compile.js", "../../node_modules/mathjs/lib/esm/expression/function/evaluate.js", "../../node_modules/mathjs/lib/esm/expression/Parser.js", "../../node_modules/mathjs/lib/esm/expression/function/parser.js", "../../node_modules/mathjs/lib/esm/function/algebra/decomposition/lup.js", "../../node_modules/mathjs/lib/esm/function/algebra/decomposition/qr.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csPermute.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csTdfs.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csPost.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csEtree.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csFkeep.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csFlip.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csAmd.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csLeaf.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csCounts.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csSqr.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csMarked.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csMark.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csUnflip.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csDfs.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csReach.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csSpsolve.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csLu.js", "../../node_modules/mathjs/lib/esm/function/algebra/decomposition/slu.js", "../../node_modules/mathjs/lib/esm/function/algebra/sparse/csIpvec.js", "../../node_modules/mathjs/lib/esm/function/algebra/solver/lusolve.js", "../../node_modules/mathjs/lib/esm/function/algebra/polynomialRoot.js", "../../node_modules/mathjs/lib/esm/expression/Help.js", "../../node_modules/mathjs/lib/esm/type/chain/Chain.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/e.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/false.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/i.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/Infinity.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/LN10.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/LN2.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/LOG10E.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/LOG2E.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/NaN.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/null.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/phi.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/pi.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/SQRT1_2.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/SQRT2.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/tau.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/true.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/version.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/bignumber.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/bigint.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/boolean.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/complex.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/createUnit.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/fraction.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/index.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/matrix.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/number.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/sparse.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/splitUnit.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/string.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/unit.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/core/config.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/core/import.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/core/typed.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/derivative.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/leafCount.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/lsolve.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/lsolveAll.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/lup.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/lusolve.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/polynomialRoot.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/qr.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/rationalize.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/resolve.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/simplify.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/simplifyConstant.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/simplifyCore.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/slu.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/symbolicEqual.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/usolve.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/usolveAll.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/abs.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/add.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/cbrt.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/ceil.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/cube.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/divide.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/dotDivide.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/dotMultiply.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/dotPow.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/exp.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/expm.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/expm1.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/fix.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/floor.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/gcd.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/hypot.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/invmod.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/lcm.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/log.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/log10.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/log1p.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/log2.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/mod.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/multiply.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/norm.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/nthRoot.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/nthRoots.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/pow.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/round.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/sign.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/sqrt.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/sqrtm.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/sylvester.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/schur.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/lyap.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/square.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/subtract.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/unaryMinus.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/unaryPlus.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/xgcd.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/bitAnd.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/bitNot.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/bitOr.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/bitXor.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/leftShift.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/rightArithShift.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/rightLogShift.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/combinatorics/bellNumbers.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/combinatorics/catalan.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/combinatorics/composition.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/combinatorics/stirlingS2.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/complex/arg.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/complex/conj.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/complex/im.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/complex/re.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/expression/evaluate.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/expression/help.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/geometry/distance.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/geometry/intersect.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/logical/and.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/logical/not.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/logical/or.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/logical/xor.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/column.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/concat.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/count.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/cross.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/ctranspose.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/det.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/diag.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/diff.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/dot.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/eigs.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/filter.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/flatten.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/forEach.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/getMatrixDataType.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/identity.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/inv.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/pinv.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/kron.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/map.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/matrixFromColumns.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/matrixFromFunction.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/matrixFromRows.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/ones.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/partitionSelect.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/range.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/reshape.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/resize.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/rotate.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/rotationMatrix.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/row.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/size.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/sort.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/squeeze.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/subset.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/trace.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/transpose.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/zeros.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/fft.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/ifft.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/combinations.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/combinationsWithRep.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/factorial.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/gamma.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/lgamma.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/kldivergence.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/multinomial.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/permutations.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/pickRandom.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/random.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/randomInt.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/compare.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/compareNatural.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/compareText.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/deepEqual.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/equal.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/equalText.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/larger.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/largerEq.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/smaller.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/smallerEq.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/unequal.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setCartesian.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setDifference.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setDistinct.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setIntersect.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setIsSubset.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setMultiplicity.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setPowerset.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setSize.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setSymDifference.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setUnion.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/signal/zpk2tf.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/signal/freqz.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/special/erf.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/special/zeta.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/mad.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/max.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/mean.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/median.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/min.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/mode.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/prod.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/quantileSeq.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/std.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/cumsum.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/sum.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/variance.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/corr.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acos.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acosh.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acot.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acoth.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acsc.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acsch.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/asec.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/asech.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/asin.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/asinh.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/atan.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/atan2.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/atanh.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/cos.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/cosh.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/cot.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/coth.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/csc.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/csch.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/sec.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/sech.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/sin.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/sinh.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/tan.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/tanh.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/units/to.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/bin.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/clone.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/format.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/hasNumericValue.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/hex.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isInteger.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isNaN.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isNegative.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isNumeric.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isPositive.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isPrime.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isZero.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/numeric.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/oct.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/print.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/typeOf.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/function/numeric/solveODE.js", "../../node_modules/mathjs/lib/esm/expression/embeddedDocs/embeddedDocs.js", "../../node_modules/mathjs/lib/esm/expression/function/help.js", "../../node_modules/mathjs/lib/esm/type/chain/function/chain.js", "../../node_modules/mathjs/lib/esm/function/matrix/det.js", "../../node_modules/mathjs/lib/esm/function/matrix/inv.js", "../../node_modules/mathjs/lib/esm/function/matrix/pinv.js", "../../node_modules/mathjs/lib/esm/function/matrix/eigs/complexEigs.js", "../../node_modules/mathjs/lib/esm/function/matrix/eigs/realSymmetric.js", "../../node_modules/mathjs/lib/esm/function/matrix/eigs.js", "../../node_modules/mathjs/lib/esm/function/matrix/expm.js", "../../node_modules/mathjs/lib/esm/function/matrix/sqrtm.js", "../../node_modules/mathjs/lib/esm/function/algebra/sylvester.js", "../../node_modules/mathjs/lib/esm/function/algebra/decomposition/schur.js", "../../node_modules/mathjs/lib/esm/function/algebra/lyap.js", "../../node_modules/mathjs/lib/esm/function/arithmetic/divide.js", "../../node_modules/mathjs/lib/esm/function/geometry/distance.js", "../../node_modules/mathjs/lib/esm/function/geometry/intersect.js", "../../node_modules/mathjs/lib/esm/function/statistics/sum.js", "../../node_modules/mathjs/lib/esm/function/statistics/cumsum.js", "../../node_modules/mathjs/lib/esm/function/statistics/mean.js", "../../node_modules/mathjs/lib/esm/function/statistics/median.js", "../../node_modules/mathjs/lib/esm/function/statistics/mad.js", "../../node_modules/mathjs/lib/esm/function/statistics/variance.js", "../../node_modules/mathjs/lib/esm/function/statistics/quantileSeq.js", "../../node_modules/mathjs/lib/esm/function/statistics/std.js", "../../node_modules/mathjs/lib/esm/function/statistics/corr.js", "../../node_modules/mathjs/lib/esm/function/probability/combinations.js", "../../node_modules/mathjs/lib/esm/function/probability/combinationsWithRep.js", "../../node_modules/mathjs/lib/esm/function/probability/gamma.js", "../../node_modules/mathjs/lib/esm/function/probability/lgamma.js", "../../node_modules/mathjs/lib/esm/function/probability/factorial.js", "../../node_modules/mathjs/lib/esm/function/probability/kldivergence.js", "../../node_modules/mathjs/lib/esm/function/probability/multinomial.js", "../../node_modules/mathjs/lib/esm/function/probability/permutations.js", "../../node_modules/mathjs/lib/esm/function/probability/util/seededRNG.js", "../../node_modules/mathjs/lib/esm/function/probability/pickRandom.js", "../../node_modules/mathjs/lib/esm/function/probability/util/randomMatrix.js", "../../node_modules/mathjs/lib/esm/function/probability/random.js", "../../node_modules/mathjs/lib/esm/function/probability/randomInt.js", "../../node_modules/mathjs/lib/esm/function/combinatorics/stirlingS2.js", "../../node_modules/mathjs/lib/esm/function/combinatorics/bellNumbers.js", "../../node_modules/mathjs/lib/esm/function/combinatorics/catalan.js", "../../node_modules/mathjs/lib/esm/function/combinatorics/composition.js", "../../node_modules/mathjs/lib/esm/function/algebra/leafCount.js", "../../node_modules/mathjs/lib/esm/function/algebra/simplify/wildcards.js", "../../node_modules/mathjs/lib/esm/function/algebra/simplify/util.js", "../../node_modules/mathjs/lib/esm/function/algebra/simplify.js", "../../node_modules/mathjs/lib/esm/function/algebra/simplifyConstant.js", "../../node_modules/mathjs/lib/esm/function/algebra/simplifyCore.js", "../../node_modules/mathjs/lib/esm/function/algebra/resolve.js", "../../node_modules/mathjs/lib/esm/function/algebra/symbolicEqual.js", "../../node_modules/mathjs/lib/esm/function/algebra/derivative.js", "../../node_modules/mathjs/lib/esm/function/algebra/rationalize.js", "../../node_modules/mathjs/lib/esm/function/signal/zpk2tf.js", "../../node_modules/mathjs/lib/esm/function/signal/freqz.js", "../../node_modules/mathjs/lib/esm/json/reviver.js", "../../node_modules/mathjs/lib/esm/json/replacer.js", "../../node_modules/mathjs/lib/esm/version.js", "../../node_modules/mathjs/lib/esm/constants.js", "../../node_modules/mathjs/lib/esm/type/unit/physicalConstants.js", "../../node_modules/mathjs/lib/esm/expression/transform/apply.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/column.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/utils/compileInlineExpression.js", "../../node_modules/mathjs/lib/esm/expression/transform/utils/transformCallback.js", "../../node_modules/mathjs/lib/esm/expression/transform/filter.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/forEach.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/index.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/map.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/utils/dimToZeroBase.js", "../../node_modules/mathjs/lib/esm/expression/transform/utils/lastDimToZeroBase.js", "../../node_modules/mathjs/lib/esm/expression/transform/max.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/mean.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/min.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/range.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/row.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/subset.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/concat.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/diff.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/std.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/sum.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/quantileSeq.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/cumsum.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/variance.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/print.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/and.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/or.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/bitAnd.transform.js", "../../node_modules/mathjs/lib/esm/expression/transform/bitOr.transform.js", "../../node_modules/mathjs/lib/esm/entry/allFactoriesAny.js", "../../node_modules/mathjs/lib/esm/core/create.js", "../../node_modules/mathjs/lib/esm/utils/emitter.js", "../../node_modules/mathjs/lib/esm/core/function/import.js", "../../node_modules/@formulajs/formulajs/lib/esm/index.mjs", "../../src/js/eval.js", "../../src/js/editor.js", "../../src/js/context.js", "../../package.json", "../../src/js/plot.js", "../../src/js/forex.js", "../../src/js/settings.js", "../../src/js/pages.js", "../../src/js/userDefined.js", "../../node_modules/tinykeys/src/tinykeys.ts", "../../src/js/app.js"], + "sourcesContent": ["/*! UIkit 3.21.14 | https://www.getuikit.com | (c) 2014 - 2024 YOOtheme | MIT License */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define('uikit', factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.UIkit = factory());\n})(this, (function () { 'use strict';\n\n const { hasOwnProperty, toString } = Object.prototype;\n function hasOwn(obj, key) {\n return hasOwnProperty.call(obj, key);\n }\n const hyphenateRe = /\\B([A-Z])/g;\n const hyphenate = memoize((str) => str.replace(hyphenateRe, \"-$1\").toLowerCase());\n const camelizeRe = /-(\\w)/g;\n const camelize = memoize(\n (str) => (str.charAt(0).toLowerCase() + str.slice(1)).replace(camelizeRe, (_, c) => c.toUpperCase())\n );\n const ucfirst = memoize((str) => str.charAt(0).toUpperCase() + str.slice(1));\n function startsWith(str, search) {\n var _a;\n return (_a = str == null ? void 0 : str.startsWith) == null ? void 0 : _a.call(str, search);\n }\n function endsWith(str, search) {\n var _a;\n return (_a = str == null ? void 0 : str.endsWith) == null ? void 0 : _a.call(str, search);\n }\n function includes(obj, search) {\n var _a;\n return (_a = obj == null ? void 0 : obj.includes) == null ? void 0 : _a.call(obj, search);\n }\n function findIndex(array, predicate) {\n var _a;\n return (_a = array == null ? void 0 : array.findIndex) == null ? void 0 : _a.call(array, predicate);\n }\n const { isArray, from: toArray } = Array;\n const { assign } = Object;\n function isFunction(obj) {\n return typeof obj === \"function\";\n }\n function isObject(obj) {\n return obj !== null && typeof obj === \"object\";\n }\n function isPlainObject(obj) {\n return toString.call(obj) === \"[object Object]\";\n }\n function isWindow(obj) {\n return isObject(obj) && obj === obj.window;\n }\n function isDocument(obj) {\n return nodeType(obj) === 9;\n }\n function isNode(obj) {\n return nodeType(obj) >= 1;\n }\n function isElement(obj) {\n return nodeType(obj) === 1;\n }\n function nodeType(obj) {\n return !isWindow(obj) && isObject(obj) && obj.nodeType;\n }\n function isBoolean(value) {\n return typeof value === \"boolean\";\n }\n function isString(value) {\n return typeof value === \"string\";\n }\n function isNumber(value) {\n return typeof value === \"number\";\n }\n function isNumeric(value) {\n return isNumber(value) || isString(value) && !isNaN(value - parseFloat(value));\n }\n function isEmpty(obj) {\n return !(isArray(obj) ? obj.length : isObject(obj) ? Object.keys(obj).length : false);\n }\n function isUndefined(value) {\n return value === void 0;\n }\n function toBoolean(value) {\n return isBoolean(value) ? value : value === \"true\" || value === \"1\" || value === \"\" ? true : value === \"false\" || value === \"0\" ? false : value;\n }\n function toNumber(value) {\n const number = Number(value);\n return isNaN(number) ? false : number;\n }\n function toFloat(value) {\n return parseFloat(value) || 0;\n }\n function toNode(element) {\n return element && toNodes(element)[0];\n }\n function toNodes(element) {\n return isNode(element) ? [element] : Array.from(element || []).filter(isNode);\n }\n function toWindow(element) {\n if (isWindow(element)) {\n return element;\n }\n element = toNode(element);\n const document = isDocument(element) ? element : element == null ? void 0 : element.ownerDocument;\n return (document == null ? void 0 : document.defaultView) || window;\n }\n function isEqual(value, other) {\n return value === other || isObject(value) && isObject(other) && Object.keys(value).length === Object.keys(other).length && each(value, (val, key) => val === other[key]);\n }\n function swap(value, a, b) {\n return value.replace(new RegExp(`${a}|${b}`, \"g\"), (match) => match === a ? b : a);\n }\n function last(array) {\n return array[array.length - 1];\n }\n function each(obj, cb) {\n for (const key in obj) {\n if (false === cb(obj[key], key)) {\n return false;\n }\n }\n return true;\n }\n function sortBy(array, prop) {\n return array.slice().sort(\n ({ [prop]: propA = 0 }, { [prop]: propB = 0 }) => propA > propB ? 1 : propB > propA ? -1 : 0\n );\n }\n function sumBy(array, iteratee) {\n return array.reduce(\n (sum, item) => sum + toFloat(isFunction(iteratee) ? iteratee(item) : item[iteratee]),\n 0\n );\n }\n function uniqueBy(array, prop) {\n const seen = /* @__PURE__ */ new Set();\n return array.filter(({ [prop]: check }) => seen.has(check) ? false : seen.add(check));\n }\n function pick(obj, props) {\n return props.reduce((res, prop) => ({ ...res, [prop]: obj[prop] }), {});\n }\n function clamp(number, min = 0, max = 1) {\n return Math.min(Math.max(toNumber(number) || 0, min), max);\n }\n function noop() {\n }\n function intersectRect(...rects) {\n return [\n [\"bottom\", \"top\"],\n [\"right\", \"left\"]\n ].every(\n ([minProp, maxProp]) => Math.min(...rects.map(({ [minProp]: min }) => min)) - Math.max(...rects.map(({ [maxProp]: max }) => max)) > 0\n );\n }\n function pointInRect(point, rect) {\n return point.x <= rect.right && point.x >= rect.left && point.y <= rect.bottom && point.y >= rect.top;\n }\n function ratio(dimensions, prop, value) {\n const aProp = prop === \"width\" ? \"height\" : \"width\";\n return {\n [aProp]: dimensions[prop] ? Math.round(value * dimensions[aProp] / dimensions[prop]) : dimensions[aProp],\n [prop]: value\n };\n }\n function contain(dimensions, maxDimensions) {\n dimensions = { ...dimensions };\n for (const prop in dimensions) {\n dimensions = dimensions[prop] > maxDimensions[prop] ? ratio(dimensions, prop, maxDimensions[prop]) : dimensions;\n }\n return dimensions;\n }\n function cover$1(dimensions, maxDimensions) {\n dimensions = contain(dimensions, maxDimensions);\n for (const prop in dimensions) {\n dimensions = dimensions[prop] < maxDimensions[prop] ? ratio(dimensions, prop, maxDimensions[prop]) : dimensions;\n }\n return dimensions;\n }\n const Dimensions = { ratio, contain, cover: cover$1 };\n function getIndex(i, elements, current = 0, finite = false) {\n elements = toNodes(elements);\n const { length } = elements;\n if (!length) {\n return -1;\n }\n i = isNumeric(i) ? toNumber(i) : i === \"next\" ? current + 1 : i === \"previous\" ? current - 1 : i === \"last\" ? length - 1 : elements.indexOf(toNode(i));\n if (finite) {\n return clamp(i, 0, length - 1);\n }\n i %= length;\n return i < 0 ? i + length : i;\n }\n function memoize(fn) {\n const cache = /* @__PURE__ */ Object.create(null);\n return (key, ...args) => cache[key] || (cache[key] = fn(key, ...args));\n }\n\n function addClass(element, ...classes) {\n for (const node of toNodes(element)) {\n const add = toClasses(classes).filter((cls) => !hasClass(node, cls));\n if (add.length) {\n node.classList.add(...add);\n }\n }\n }\n function removeClass(element, ...classes) {\n for (const node of toNodes(element)) {\n const remove = toClasses(classes).filter((cls) => hasClass(node, cls));\n if (remove.length) {\n node.classList.remove(...remove);\n }\n }\n }\n function replaceClass(element, oldClass, newClass) {\n newClass = toClasses(newClass);\n oldClass = toClasses(oldClass).filter((cls) => !includes(newClass, cls));\n removeClass(element, oldClass);\n addClass(element, newClass);\n }\n function hasClass(element, cls) {\n [cls] = toClasses(cls);\n return toNodes(element).some((node) => node.classList.contains(cls));\n }\n function toggleClass(element, cls, force) {\n const classes = toClasses(cls);\n if (!isUndefined(force)) {\n force = !!force;\n }\n for (const node of toNodes(element)) {\n for (const cls2 of classes) {\n node.classList.toggle(cls2, force);\n }\n }\n }\n function toClasses(str) {\n return str ? isArray(str) ? str.map(toClasses).flat() : String(str).split(\" \").filter(Boolean) : [];\n }\n\n function attr(element, name, value) {\n var _a;\n if (isObject(name)) {\n for (const key in name) {\n attr(element, key, name[key]);\n }\n return;\n }\n if (isUndefined(value)) {\n return (_a = toNode(element)) == null ? void 0 : _a.getAttribute(name);\n } else {\n for (const el of toNodes(element)) {\n if (isFunction(value)) {\n value = value.call(el, attr(el, name));\n }\n if (value === null) {\n removeAttr(el, name);\n } else {\n el.setAttribute(name, value);\n }\n }\n }\n }\n function hasAttr(element, name) {\n return toNodes(element).some((element2) => element2.hasAttribute(name));\n }\n function removeAttr(element, name) {\n toNodes(element).forEach((element2) => element2.removeAttribute(name));\n }\n function data(element, attribute) {\n for (const name of [attribute, `data-${attribute}`]) {\n if (hasAttr(element, name)) {\n return attr(element, name);\n }\n }\n }\n\n const inBrowser = typeof window !== \"undefined\";\n const isRtl = inBrowser && document.dir === \"rtl\";\n const hasTouch = inBrowser && \"ontouchstart\" in window;\n const hasPointerEvents = inBrowser && window.PointerEvent;\n const pointerDown$1 = hasPointerEvents ? \"pointerdown\" : hasTouch ? \"touchstart\" : \"mousedown\";\n const pointerMove$1 = hasPointerEvents ? \"pointermove\" : hasTouch ? \"touchmove\" : \"mousemove\";\n const pointerUp$1 = hasPointerEvents ? \"pointerup\" : hasTouch ? \"touchend\" : \"mouseup\";\n const pointerEnter = hasPointerEvents ? \"pointerenter\" : hasTouch ? \"\" : \"mouseenter\";\n const pointerLeave = hasPointerEvents ? \"pointerleave\" : hasTouch ? \"\" : \"mouseleave\";\n const pointerCancel = hasPointerEvents ? \"pointercancel\" : \"touchcancel\";\n\n const voidElements = {\n area: true,\n base: true,\n br: true,\n col: true,\n embed: true,\n hr: true,\n img: true,\n input: true,\n keygen: true,\n link: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true\n };\n function isVoidElement(element) {\n return toNodes(element).some((element2) => voidElements[element2.tagName.toLowerCase()]);\n }\n const isVisibleFn = inBrowser && Element.prototype.checkVisibility || function() {\n return this.offsetWidth || this.offsetHeight || this.getClientRects().length;\n };\n function isVisible(element) {\n return toNodes(element).some((element2) => isVisibleFn.call(element2));\n }\n const selInput = \"input,select,textarea,button\";\n function isInput(element) {\n return toNodes(element).some((element2) => matches(element2, selInput));\n }\n const selFocusable = `${selInput},a[href],[tabindex]`;\n function isFocusable(element) {\n return matches(element, selFocusable);\n }\n function parent(element) {\n var _a;\n return (_a = toNode(element)) == null ? void 0 : _a.parentElement;\n }\n function filter$1(element, selector) {\n return toNodes(element).filter((element2) => matches(element2, selector));\n }\n function matches(element, selector) {\n return toNodes(element).some((element2) => element2.matches(selector));\n }\n function parents(element, selector) {\n const elements = [];\n while (element = parent(element)) {\n if (!selector || matches(element, selector)) {\n elements.push(element);\n }\n }\n return elements;\n }\n function children(element, selector) {\n element = toNode(element);\n const children2 = element ? toArray(element.children) : [];\n return selector ? filter$1(children2, selector) : children2;\n }\n function index(element, ref) {\n return ref ? toNodes(element).indexOf(toNode(ref)) : children(parent(element)).indexOf(element);\n }\n function isSameSiteAnchor(el) {\n el = toNode(el);\n return el && [\"origin\", \"pathname\", \"search\"].every((part) => el[part] === location[part]);\n }\n function getTargetedElement(el) {\n if (isSameSiteAnchor(el)) {\n const { hash, ownerDocument } = toNode(el);\n const id = decodeURIComponent(hash).slice(1);\n return id ? ownerDocument.getElementById(id) || ownerDocument.getElementsByName(id)[0] : ownerDocument;\n }\n }\n\n function query(selector, context) {\n return find(selector, getContext(selector, context));\n }\n function queryAll(selector, context) {\n return findAll(selector, getContext(selector, context));\n }\n function find(selector, context) {\n return toNode(_query(selector, toNode(context), \"querySelector\"));\n }\n function findAll(selector, context) {\n return toNodes(_query(selector, toNode(context), \"querySelectorAll\"));\n }\n function getContext(selector, context = document) {\n return isDocument(context) || parseSelector(selector).isContextSelector ? context : context.ownerDocument;\n }\n const addStarRe = /([!>+~-])(?=\\s+[!>+~-]|\\s*$)/g;\n const splitSelectorRe = /(\\([^)]*\\)|[^,])+/g;\n const parseSelector = memoize((selector) => {\n let isContextSelector = false;\n if (!selector || !isString(selector)) {\n return {};\n }\n const selectors = [];\n for (let sel of selector.match(splitSelectorRe)) {\n sel = sel.trim().replace(addStarRe, \"$1 *\");\n isContextSelector || (isContextSelector = [\"!\", \"+\", \"~\", \"-\", \">\"].includes(sel[0]));\n selectors.push(sel);\n }\n return {\n selector: selectors.join(\",\"),\n selectors,\n isContextSelector\n };\n });\n const positionRe = /(\\([^)]*\\)|\\S)*/;\n const parsePositionSelector = memoize((selector) => {\n selector = selector.slice(1).trim();\n const [position] = selector.match(positionRe);\n return [position, selector.slice(position.length + 1)];\n });\n function _query(selector, context = document, queryFn) {\n const parsed = parseSelector(selector);\n if (!parsed.isContextSelector) {\n return parsed.selector ? _doQuery(context, queryFn, parsed.selector) : selector;\n }\n selector = \"\";\n const isSingle = parsed.selectors.length === 1;\n for (let sel of parsed.selectors) {\n let positionSel;\n let ctx = context;\n if (sel[0] === \"!\") {\n [positionSel, sel] = parsePositionSelector(sel);\n ctx = context.parentElement.closest(positionSel);\n if (!sel && isSingle) {\n return ctx;\n }\n }\n if (ctx && sel[0] === \"-\") {\n [positionSel, sel] = parsePositionSelector(sel);\n ctx = ctx.previousElementSibling;\n ctx = matches(ctx, positionSel) ? ctx : null;\n if (!sel && isSingle) {\n return ctx;\n }\n }\n if (!ctx) {\n continue;\n }\n if (isSingle) {\n if (sel[0] === \"~\" || sel[0] === \"+\") {\n sel = `:scope > :nth-child(${index(ctx) + 1}) ${sel}`;\n ctx = ctx.parentElement;\n } else if (sel[0] === \">\") {\n sel = `:scope ${sel}`;\n }\n return _doQuery(ctx, queryFn, sel);\n }\n selector += `${selector ? \",\" : \"\"}${domPath(ctx)} ${sel}`;\n }\n if (!isDocument(context)) {\n context = context.ownerDocument;\n }\n return _doQuery(context, queryFn, selector);\n }\n function _doQuery(context, queryFn, selector) {\n try {\n return context[queryFn](selector);\n } catch (e) {\n return null;\n }\n }\n function domPath(element) {\n const names = [];\n while (element.parentNode) {\n const id = attr(element, \"id\");\n if (id) {\n names.unshift(`#${escape(id)}`);\n break;\n } else {\n let { tagName } = element;\n if (tagName !== \"HTML\") {\n tagName += `:nth-child(${index(element) + 1})`;\n }\n names.unshift(tagName);\n element = element.parentNode;\n }\n }\n return names.join(\" > \");\n }\n function escape(css) {\n return isString(css) ? CSS.escape(css) : \"\";\n }\n\n function on(...args) {\n let [targets, types, selector, listener, useCapture = false] = getArgs(args);\n if (listener.length > 1) {\n listener = detail(listener);\n }\n if (useCapture == null ? void 0 : useCapture.self) {\n listener = selfFilter(listener);\n }\n if (selector) {\n listener = delegate(selector, listener);\n }\n for (const type of types) {\n for (const target of targets) {\n target.addEventListener(type, listener, useCapture);\n }\n }\n return () => off(targets, types, listener, useCapture);\n }\n function off(...args) {\n let [targets, types, , listener, useCapture = false] = getArgs(args);\n for (const type of types) {\n for (const target of targets) {\n target.removeEventListener(type, listener, useCapture);\n }\n }\n }\n function once(...args) {\n const [element, types, selector, listener, useCapture = false, condition] = getArgs(args);\n const off2 = on(\n element,\n types,\n selector,\n (e) => {\n const result = !condition || condition(e);\n if (result) {\n off2();\n listener(e, result);\n }\n },\n useCapture\n );\n return off2;\n }\n function trigger(targets, event, detail2) {\n return toEventTargets(targets).every(\n (target) => target.dispatchEvent(createEvent(event, true, true, detail2))\n );\n }\n function createEvent(e, bubbles = true, cancelable = false, detail2) {\n if (isString(e)) {\n e = new CustomEvent(e, { bubbles, cancelable, detail: detail2 });\n }\n return e;\n }\n function getArgs(args) {\n args[0] = toEventTargets(args[0]);\n if (isString(args[1])) {\n args[1] = args[1].split(\" \");\n }\n if (isFunction(args[2])) {\n args.splice(2, 0, false);\n }\n return args;\n }\n function delegate(selector, listener) {\n return (e) => {\n const current = selector[0] === \">\" ? findAll(selector, e.currentTarget).reverse().find((element) => element.contains(e.target)) : e.target.closest(selector);\n if (current) {\n e.current = current;\n listener.call(this, e);\n delete e.current;\n }\n };\n }\n function detail(listener) {\n return (e) => isArray(e.detail) ? listener(e, ...e.detail) : listener(e);\n }\n function selfFilter(listener) {\n return function(e) {\n if (e.target === e.currentTarget || e.target === e.current) {\n return listener.call(null, e);\n }\n };\n }\n function isEventTarget(target) {\n return target && \"addEventListener\" in target;\n }\n function toEventTarget(target) {\n return isEventTarget(target) ? target : toNode(target);\n }\n function toEventTargets(target) {\n return isArray(target) ? target.map(toEventTarget).filter(Boolean) : isString(target) ? findAll(target) : isEventTarget(target) ? [target] : toNodes(target);\n }\n function isTouch(e) {\n return e.pointerType === \"touch\" || !!e.touches;\n }\n function getEventPos(e) {\n var _a, _b;\n const { clientX: x, clientY: y } = ((_a = e.touches) == null ? void 0 : _a[0]) || ((_b = e.changedTouches) == null ? void 0 : _b[0]) || e;\n return { x, y };\n }\n\n const cssNumber = {\n \"animation-iteration-count\": true,\n \"column-count\": true,\n \"fill-opacity\": true,\n \"flex-grow\": true,\n \"flex-shrink\": true,\n \"font-weight\": true,\n \"line-height\": true,\n opacity: true,\n order: true,\n orphans: true,\n \"stroke-dasharray\": true,\n \"stroke-dashoffset\": true,\n widows: true,\n \"z-index\": true,\n zoom: true\n };\n function css(element, property, value, priority) {\n const elements = toNodes(element);\n for (const element2 of elements) {\n if (isString(property)) {\n property = propName(property);\n if (isUndefined(value)) {\n return getComputedStyle(element2).getPropertyValue(property);\n } else {\n element2.style.setProperty(\n property,\n isNumeric(value) && !cssNumber[property] ? `${value}px` : value || isNumber(value) ? value : \"\",\n priority\n );\n }\n } else if (isArray(property)) {\n const props = {};\n for (const prop of property) {\n props[prop] = css(element2, prop);\n }\n return props;\n } else if (isObject(property)) {\n for (const prop in property) {\n css(element2, prop, property[prop], value);\n }\n }\n }\n return elements[0];\n }\n const propName = memoize((name) => {\n if (startsWith(name, \"--\")) {\n return name;\n }\n name = hyphenate(name);\n const { style } = document.documentElement;\n if (name in style) {\n return name;\n }\n for (const prefix of [\"webkit\", \"moz\"]) {\n const prefixedName = `-${prefix}-${name}`;\n if (prefixedName in style) {\n return prefixedName;\n }\n }\n });\n\n const clsTransition = \"uk-transition\";\n const transitionEnd = \"transitionend\";\n const transitionCanceled = \"transitioncanceled\";\n function transition$1(element, props, duration = 400, timing = \"linear\") {\n duration = Math.round(duration);\n return Promise.all(\n toNodes(element).map(\n (element2) => new Promise((resolve, reject) => {\n for (const name in props) {\n css(element2, name);\n }\n const timer = setTimeout(() => trigger(element2, transitionEnd), duration);\n once(\n element2,\n [transitionEnd, transitionCanceled],\n ({ type }) => {\n clearTimeout(timer);\n removeClass(element2, clsTransition);\n css(element2, {\n transitionProperty: \"\",\n transitionDuration: \"\",\n transitionTimingFunction: \"\"\n });\n type === transitionCanceled ? reject() : resolve(element2);\n },\n { self: true }\n );\n addClass(element2, clsTransition);\n css(element2, {\n transitionProperty: Object.keys(props).map(propName).join(\",\"),\n transitionDuration: `${duration}ms`,\n transitionTimingFunction: timing,\n ...props\n });\n })\n )\n );\n }\n const Transition = {\n start: transition$1,\n async stop(element) {\n trigger(element, transitionEnd);\n await Promise.resolve();\n },\n async cancel(element) {\n trigger(element, transitionCanceled);\n await Promise.resolve();\n },\n inProgress(element) {\n return hasClass(element, clsTransition);\n }\n };\n const clsAnimation = \"uk-animation\";\n const animationEnd = \"animationend\";\n const animationCanceled = \"animationcanceled\";\n function animate$2(element, animation, duration = 200, origin, out) {\n return Promise.all(\n toNodes(element).map(\n (element2) => new Promise((resolve, reject) => {\n if (hasClass(element2, clsAnimation)) {\n trigger(element2, animationCanceled);\n }\n const classes = [\n animation,\n clsAnimation,\n `${clsAnimation}-${out ? \"leave\" : \"enter\"}`,\n origin && `uk-transform-origin-${origin}`,\n out && `${clsAnimation}-reverse`\n ];\n const timer = setTimeout(() => trigger(element2, animationEnd), duration);\n once(\n element2,\n [animationEnd, animationCanceled],\n ({ type }) => {\n clearTimeout(timer);\n type === animationCanceled ? reject() : resolve(element2);\n css(element2, \"animationDuration\", \"\");\n removeClass(element2, classes);\n },\n { self: true }\n );\n css(element2, \"animationDuration\", `${duration}ms`);\n addClass(element2, classes);\n })\n )\n );\n }\n const Animation = {\n in: animate$2,\n out(element, animation, duration, origin) {\n return animate$2(element, animation, duration, origin, true);\n },\n inProgress(element) {\n return hasClass(element, clsAnimation);\n },\n cancel(element) {\n trigger(element, animationCanceled);\n }\n };\n\n function ready(fn) {\n if (document.readyState !== \"loading\") {\n fn();\n return;\n }\n once(document, \"DOMContentLoaded\", fn);\n }\n function isTag(element, ...tagNames) {\n return tagNames.some((tagName) => {\n var _a;\n return ((_a = element == null ? void 0 : element.tagName) == null ? void 0 : _a.toLowerCase()) === tagName.toLowerCase();\n });\n }\n function empty(element) {\n element = $(element);\n element.innerHTML = \"\";\n return element;\n }\n function html(parent2, html2) {\n return isUndefined(html2) ? $(parent2).innerHTML : append(empty(parent2), html2);\n }\n const prepend = applyFn(\"prepend\");\n const append = applyFn(\"append\");\n const before = applyFn(\"before\");\n const after = applyFn(\"after\");\n function applyFn(fn) {\n return function(ref, element) {\n var _a;\n const nodes = toNodes(isString(element) ? fragment(element) : element);\n (_a = $(ref)) == null ? void 0 : _a[fn](...nodes);\n return unwrapSingle(nodes);\n };\n }\n function remove$1(element) {\n toNodes(element).forEach((element2) => element2.remove());\n }\n function wrapAll(element, structure) {\n structure = toNode(before(element, structure));\n while (structure.firstElementChild) {\n structure = structure.firstElementChild;\n }\n append(structure, element);\n return structure;\n }\n function wrapInner(element, structure) {\n return toNodes(\n toNodes(element).map(\n (element2) => element2.hasChildNodes() ? wrapAll(toArray(element2.childNodes), structure) : append(element2, structure)\n )\n );\n }\n function unwrap(element) {\n toNodes(element).map(parent).filter((value, index, self) => self.indexOf(value) === index).forEach((parent2) => parent2.replaceWith(...parent2.childNodes));\n }\n const singleTagRe = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/;\n function fragment(html2) {\n const matches = singleTagRe.exec(html2);\n if (matches) {\n return document.createElement(matches[1]);\n }\n const container = document.createElement(\"template\");\n container.innerHTML = html2.trim();\n return unwrapSingle(container.content.childNodes);\n }\n function unwrapSingle(nodes) {\n return nodes.length > 1 ? nodes : nodes[0];\n }\n function apply(node, fn) {\n if (!isElement(node)) {\n return;\n }\n fn(node);\n node = node.firstElementChild;\n while (node) {\n apply(node, fn);\n node = node.nextElementSibling;\n }\n }\n function $(selector, context) {\n return isHtml(selector) ? toNode(fragment(selector)) : find(selector, context);\n }\n function $$(selector, context) {\n return isHtml(selector) ? toNodes(fragment(selector)) : findAll(selector, context);\n }\n function isHtml(str) {\n return isString(str) && startsWith(str.trim(), \"<\");\n }\n\n const dirs$1 = {\n width: [\"left\", \"right\"],\n height: [\"top\", \"bottom\"]\n };\n function dimensions$1(element) {\n const rect = isElement(element) ? toNode(element).getBoundingClientRect() : { height: height(element), width: width(element), top: 0, left: 0 };\n return {\n height: rect.height,\n width: rect.width,\n top: rect.top,\n left: rect.left,\n bottom: rect.top + rect.height,\n right: rect.left + rect.width\n };\n }\n function offset(element, coordinates) {\n if (coordinates) {\n css(element, { left: 0, top: 0 });\n }\n const currentOffset = dimensions$1(element);\n if (element) {\n const { scrollY, scrollX } = toWindow(element);\n const offsetBy = { height: scrollY, width: scrollX };\n for (const dir in dirs$1) {\n for (const prop of dirs$1[dir]) {\n currentOffset[prop] += offsetBy[dir];\n }\n }\n }\n if (!coordinates) {\n return currentOffset;\n }\n for (const prop of [\"left\", \"top\"]) {\n css(element, prop, coordinates[prop] - currentOffset[prop]);\n }\n }\n function position(element) {\n let { top, left } = offset(element);\n const {\n ownerDocument: { body, documentElement },\n offsetParent\n } = toNode(element);\n let parent = offsetParent || documentElement;\n while (parent && (parent === body || parent === documentElement) && css(parent, \"position\") === \"static\") {\n parent = parent.parentNode;\n }\n if (isElement(parent)) {\n const parentOffset = offset(parent);\n top -= parentOffset.top + toFloat(css(parent, \"borderTopWidth\"));\n left -= parentOffset.left + toFloat(css(parent, \"borderLeftWidth\"));\n }\n return {\n top: top - toFloat(css(element, \"marginTop\")),\n left: left - toFloat(css(element, \"marginLeft\"))\n };\n }\n function offsetPosition(element) {\n element = toNode(element);\n const offset2 = [element.offsetTop, element.offsetLeft];\n while (element = element.offsetParent) {\n offset2[0] += element.offsetTop + toFloat(css(element, `borderTopWidth`));\n offset2[1] += element.offsetLeft + toFloat(css(element, `borderLeftWidth`));\n if (css(element, \"position\") === \"fixed\") {\n const win = toWindow(element);\n offset2[0] += win.scrollY;\n offset2[1] += win.scrollX;\n return offset2;\n }\n }\n return offset2;\n }\n const height = dimension(\"height\");\n const width = dimension(\"width\");\n function dimension(prop) {\n const propName = ucfirst(prop);\n return (element, value) => {\n if (isUndefined(value)) {\n if (isWindow(element)) {\n return element[`inner${propName}`];\n }\n if (isDocument(element)) {\n const doc = element.documentElement;\n return Math.max(doc[`offset${propName}`], doc[`scroll${propName}`]);\n }\n element = toNode(element);\n value = css(element, prop);\n value = value === \"auto\" ? element[`offset${propName}`] : toFloat(value) || 0;\n return value - boxModelAdjust(element, prop);\n } else {\n return css(\n element,\n prop,\n !value && value !== 0 ? \"\" : +value + boxModelAdjust(element, prop) + \"px\"\n );\n }\n };\n }\n function boxModelAdjust(element, prop, sizing = \"border-box\") {\n return css(element, \"boxSizing\") === sizing ? sumBy(\n dirs$1[prop],\n (prop2) => toFloat(css(element, `padding-${prop2}`)) + toFloat(css(element, `border-${prop2}-width`))\n ) : 0;\n }\n function flipPosition(pos) {\n for (const dir in dirs$1) {\n for (const i in dirs$1[dir]) {\n if (dirs$1[dir][i] === pos) {\n return dirs$1[dir][1 - i];\n }\n }\n }\n return pos;\n }\n function toPx(value, property = \"width\", element = window, offsetDim = false) {\n if (!isString(value)) {\n return toFloat(value);\n }\n return sumBy(parseCalc(value), (value2) => {\n const unit = parseUnit(value2);\n return unit ? percent(\n unit === \"vh\" ? getViewportHeight() : unit === \"vw\" ? width(toWindow(element)) : offsetDim ? element[`offset${ucfirst(property)}`] : dimensions$1(element)[property],\n value2\n ) : value2;\n });\n }\n const calcRe = /-?\\d+(?:\\.\\d+)?(?:v[wh]|%|px)?/g;\n const parseCalc = memoize((calc) => calc.toString().replace(/\\s/g, \"\").match(calcRe) || []);\n const unitRe$1 = /(?:v[hw]|%)$/;\n const parseUnit = memoize((str) => (str.match(unitRe$1) || [])[0]);\n function percent(base, value) {\n return base * toFloat(value) / 100;\n }\n let vh;\n let vhEl;\n function getViewportHeight() {\n if (vh) {\n return vh;\n }\n if (!vhEl) {\n vhEl = $(\"
    \");\n css(vhEl, {\n height: \"100vh\",\n position: \"fixed\"\n });\n on(window, \"resize\", () => vh = null);\n }\n append(document.body, vhEl);\n vh = vhEl.clientHeight;\n remove$1(vhEl);\n return vh;\n }\n\n const fastdom = { read, write, clear, flush };\n const reads = [];\n const writes = [];\n function read(task) {\n reads.push(task);\n scheduleFlush();\n return task;\n }\n function write(task) {\n writes.push(task);\n scheduleFlush();\n return task;\n }\n function clear(task) {\n remove(reads, task);\n remove(writes, task);\n }\n let scheduled = false;\n function flush() {\n runTasks(reads);\n runTasks(writes.splice(0));\n scheduled = false;\n if (reads.length || writes.length) {\n scheduleFlush();\n }\n }\n function scheduleFlush() {\n if (!scheduled) {\n scheduled = true;\n queueMicrotask(flush);\n }\n }\n function runTasks(tasks) {\n let task;\n while (task = tasks.shift()) {\n try {\n task();\n } catch (e) {\n console.error(e);\n }\n }\n }\n function remove(array, item) {\n const index = array.indexOf(item);\n return ~index && array.splice(index, 1);\n }\n\n class MouseTracker {\n init() {\n this.positions = [];\n let position;\n this.unbind = on(document, \"mousemove\", (e) => position = getEventPos(e));\n this.interval = setInterval(() => {\n if (!position) {\n return;\n }\n this.positions.push(position);\n if (this.positions.length > 5) {\n this.positions.shift();\n }\n }, 50);\n }\n cancel() {\n var _a;\n (_a = this.unbind) == null ? void 0 : _a.call(this);\n clearInterval(this.interval);\n }\n movesTo(target) {\n if (!this.positions || this.positions.length < 2) {\n return false;\n }\n const p = dimensions$1(target);\n const { left, right, top, bottom } = p;\n const [prevPosition] = this.positions;\n const position = last(this.positions);\n const path = [prevPosition, position];\n if (pointInRect(position, p)) {\n return false;\n }\n const diagonals = [\n [\n { x: left, y: top },\n { x: right, y: bottom }\n ],\n [\n { x: left, y: bottom },\n { x: right, y: top }\n ]\n ];\n return diagonals.some((diagonal) => {\n const intersection = intersect(path, diagonal);\n return intersection && pointInRect(intersection, p);\n });\n }\n }\n function intersect([{ x: x1, y: y1 }, { x: x2, y: y2 }], [{ x: x3, y: y3 }, { x: x4, y: y4 }]) {\n const denominator = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1);\n if (denominator === 0) {\n return false;\n }\n const ua = ((x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)) / denominator;\n if (ua < 0) {\n return false;\n }\n return { x: x1 + ua * (x2 - x1), y: y1 + ua * (y2 - y1) };\n }\n\n function observeIntersection(targets, cb, options = {}, { intersecting = true } = {}) {\n const observer = new IntersectionObserver(\n intersecting ? (entries, observer2) => {\n if (entries.some((entry) => entry.isIntersecting)) {\n cb(entries, observer2);\n }\n } : cb,\n options\n );\n for (const el of toNodes(targets)) {\n observer.observe(el);\n }\n return observer;\n }\n const hasResizeObserver = inBrowser && window.ResizeObserver;\n function observeResize(targets, cb, options = { box: \"border-box\" }) {\n if (hasResizeObserver) {\n return observe$1(ResizeObserver, targets, cb, options);\n }\n const off = [on(window, \"load resize\", cb), on(document, \"loadedmetadata load\", cb, true)];\n return { disconnect: () => off.map((cb2) => cb2()) };\n }\n function observeViewportResize(cb) {\n return { disconnect: on([window, window.visualViewport], \"resize\", cb) };\n }\n function observeMutation(targets, cb, options) {\n return observe$1(MutationObserver, targets, cb, options);\n }\n function observe$1(Observer, targets, cb, options) {\n const observer = new Observer(cb);\n for (const el of toNodes(targets)) {\n observer.observe(el, options);\n }\n return observer;\n }\n\n function play(el) {\n if (isIFrame(el)) {\n call(el, { func: \"playVideo\", method: \"play\" });\n }\n if (isHTML5(el)) {\n el.play().catch(noop);\n }\n }\n function pause(el) {\n if (isIFrame(el)) {\n call(el, { func: \"pauseVideo\", method: \"pause\" });\n }\n if (isHTML5(el)) {\n el.pause();\n }\n }\n function mute(el) {\n if (isIFrame(el)) {\n call(el, { func: \"mute\", method: \"setVolume\", value: 0 });\n }\n if (isHTML5(el)) {\n el.muted = true;\n }\n }\n function isHTML5(el) {\n return isTag(el, \"video\");\n }\n function isIFrame(el) {\n return isTag(el, \"iframe\") && (isYoutube(el) || isVimeo(el));\n }\n function isYoutube(el) {\n return !!el.src.match(\n /\\/\\/.*?youtube(-nocookie)?\\.[a-z]+\\/(watch\\?v=[^&\\s]+|embed)|youtu\\.be\\/.*/\n );\n }\n function isVimeo(el) {\n return !!el.src.match(/vimeo\\.com\\/video\\/.*/);\n }\n async function call(el, cmd) {\n await enableApi(el);\n post(el, cmd);\n }\n function post(el, cmd) {\n el.contentWindow.postMessage(JSON.stringify({ event: \"command\", ...cmd }), \"*\");\n }\n const stateKey = \"_ukPlayer\";\n let counter = 0;\n function enableApi(el) {\n if (el[stateKey]) {\n return el[stateKey];\n }\n const youtube = isYoutube(el);\n const vimeo = isVimeo(el);\n const id = ++counter;\n let poller;\n return el[stateKey] = new Promise((resolve) => {\n youtube && once(el, \"load\", () => {\n const listener = () => post(el, { event: \"listening\", id });\n poller = setInterval(listener, 100);\n listener();\n });\n once(window, \"message\", resolve, false, ({ data }) => {\n try {\n data = JSON.parse(data);\n return youtube && (data == null ? void 0 : data.id) === id && data.event === \"onReady\" || vimeo && Number(data == null ? void 0 : data.player_id) === id;\n } catch (e) {\n }\n });\n el.src = `${el.src}${includes(el.src, \"?\") ? \"&\" : \"?\"}${youtube ? \"enablejsapi=1\" : `api=1&player_id=${id}`}`;\n }).then(() => clearInterval(poller));\n }\n\n function isInView(element, offsetTop = 0, offsetLeft = 0) {\n if (!isVisible(element)) {\n return false;\n }\n return intersectRect(\n ...overflowParents(element).map((parent2) => {\n const { top, left, bottom, right } = offsetViewport(parent2);\n return {\n top: top - offsetTop,\n left: left - offsetLeft,\n bottom: bottom + offsetTop,\n right: right + offsetLeft\n };\n }).concat(offset(element))\n );\n }\n function scrollIntoView(element, { offset: offsetBy = 0 } = {}) {\n const parents2 = isVisible(element) ? scrollParents(element, false, [\"hidden\"]) : [];\n return parents2.reduce(\n (fn, scrollElement, i) => {\n const { scrollTop, scrollHeight, offsetHeight } = scrollElement;\n const viewport = offsetViewport(scrollElement);\n const maxScroll = scrollHeight - viewport.height;\n const { height: elHeight, top: elTop } = parents2[i - 1] ? offsetViewport(parents2[i - 1]) : offset(element);\n let top = Math.ceil(elTop - viewport.top - offsetBy + scrollTop);\n if (offsetBy > 0 && offsetHeight < elHeight + offsetBy) {\n top += offsetBy;\n } else {\n offsetBy = 0;\n }\n if (top > maxScroll) {\n offsetBy -= top - maxScroll;\n top = maxScroll;\n } else if (top < 0) {\n offsetBy -= top;\n top = 0;\n }\n return () => scrollTo(scrollElement, top - scrollTop, element, maxScroll).then(fn);\n },\n () => Promise.resolve()\n )();\n function scrollTo(element2, top, targetEl, maxScroll) {\n return new Promise((resolve) => {\n const scroll = element2.scrollTop;\n const duration = getDuration(Math.abs(top));\n const start = Date.now();\n const isScrollingElement = scrollingElement(element2) === element2;\n const targetTop = offset(targetEl).top + (isScrollingElement ? 0 : scroll);\n let prev = 0;\n let frames = 15;\n (function step() {\n const percent = ease(clamp((Date.now() - start) / duration));\n let diff = 0;\n if (parents2[0] === element2 && scroll + top < maxScroll) {\n diff = offset(targetEl).top + (isScrollingElement ? 0 : element2.scrollTop) - targetTop - dimensions$1(getCoveringElement(targetEl)).height;\n }\n if (css(element2, \"scrollBehavior\") !== \"auto\") {\n css(element2, \"scrollBehavior\", \"auto\");\n }\n element2.scrollTop = scroll + (top + diff) * percent;\n css(element2, \"scrollBehavior\", \"\");\n if (percent === 1 && (prev === diff || !frames--)) {\n resolve();\n } else {\n prev = diff;\n requestAnimationFrame(step);\n }\n })();\n });\n }\n function getDuration(dist) {\n return 40 * Math.pow(dist, 0.375);\n }\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n }\n function scrolledOver(element, startOffset = 0, endOffset = 0) {\n if (!isVisible(element)) {\n return 0;\n }\n const scrollElement = scrollParent(element, true);\n const { scrollHeight, scrollTop } = scrollElement;\n const { height: viewportHeight } = offsetViewport(scrollElement);\n const maxScroll = scrollHeight - viewportHeight;\n const elementOffsetTop = offsetPosition(element)[0] - offsetPosition(scrollElement)[0];\n const start = Math.max(0, elementOffsetTop - viewportHeight + startOffset);\n const end = Math.min(maxScroll, elementOffsetTop + element.offsetHeight - endOffset);\n return start < end ? clamp((scrollTop - start) / (end - start)) : 1;\n }\n function scrollParents(element, scrollable = false, props = []) {\n const scrollEl = scrollingElement(element);\n let ancestors = parents(element).reverse();\n ancestors = ancestors.slice(ancestors.indexOf(scrollEl) + 1);\n const fixedIndex = findIndex(ancestors, (el) => css(el, \"position\") === \"fixed\");\n if (~fixedIndex) {\n ancestors = ancestors.slice(fixedIndex);\n }\n return [scrollEl].concat(\n ancestors.filter(\n (parent2) => css(parent2, \"overflow\").split(\" \").some((prop) => includes([\"auto\", \"scroll\", ...props], prop)) && (!scrollable || parent2.scrollHeight > offsetViewport(parent2).height)\n )\n ).reverse();\n }\n function scrollParent(...args) {\n return scrollParents(...args)[0];\n }\n function overflowParents(element) {\n return scrollParents(element, false, [\"hidden\", \"clip\"]);\n }\n function offsetViewport(scrollElement) {\n const window = toWindow(scrollElement);\n const documentScrollingElement = scrollingElement(scrollElement);\n const useWindow = !isNode(scrollElement) || scrollElement.contains(documentScrollingElement);\n if (useWindow && window.visualViewport) {\n let { height, width, scale, pageTop: top, pageLeft: left } = window.visualViewport;\n height = Math.round(height * scale);\n width = Math.round(width * scale);\n return { height, width, top, left, bottom: top + height, right: left + width };\n }\n let rect = offset(useWindow ? window : scrollElement);\n if (css(scrollElement, \"display\") === \"inline\") {\n return rect;\n }\n const { body, documentElement } = window.document;\n const viewportElement = useWindow ? documentScrollingElement === documentElement || // In quirks mode the scrolling element is body, even though the viewport is html\n documentScrollingElement.clientHeight < body.clientHeight ? documentScrollingElement : body : scrollElement;\n for (let [prop, dir, start, end] of [\n [\"width\", \"x\", \"left\", \"right\"],\n [\"height\", \"y\", \"top\", \"bottom\"]\n ]) {\n const subpixel = rect[prop] % 1;\n rect[start] += toFloat(css(viewportElement, `border-${start}-width`));\n rect[prop] = rect[dir] = viewportElement[`client${ucfirst(prop)}`] - (subpixel ? subpixel < 0.5 ? -subpixel : 1 - subpixel : 0);\n rect[end] = rect[prop] + rect[start];\n }\n return rect;\n }\n function getCoveringElement(target) {\n const { left, width, top } = dimensions$1(target);\n for (const position of top ? [0, top] : [0]) {\n let coverEl;\n for (const el of toWindow(target).document.elementsFromPoint(left + width / 2, position)) {\n if (!el.contains(target) && // If e.g. Offcanvas is not yet closed\n !hasClass(el, \"uk-togglable-leave\") && (hasPosition(el, \"fixed\") && zIndex(\n parents(target).reverse().find(\n (parent2) => !parent2.contains(el) && !hasPosition(parent2, \"static\")\n )\n ) < zIndex(el) || hasPosition(el, \"sticky\") && parent(el).contains(target)) && (!coverEl || dimensions$1(coverEl).height < dimensions$1(el).height)) {\n coverEl = el;\n }\n }\n if (coverEl) {\n return coverEl;\n }\n }\n }\n function zIndex(element) {\n return toFloat(css(element, \"zIndex\"));\n }\n function hasPosition(element, position) {\n return css(element, \"position\") === position;\n }\n function scrollingElement(element) {\n return toWindow(element).document.scrollingElement;\n }\n\n const dirs = [\n [\"width\", \"x\", \"left\", \"right\"],\n [\"height\", \"y\", \"top\", \"bottom\"]\n ];\n function positionAt(element, target, options) {\n options = {\n attach: {\n element: [\"left\", \"top\"],\n target: [\"left\", \"top\"],\n ...options.attach\n },\n offset: [0, 0],\n placement: [],\n ...options\n };\n if (!isArray(target)) {\n target = [target, target];\n }\n offset(element, getPosition(element, target, options));\n }\n function getPosition(element, target, options) {\n const position = attachTo(element, target, options);\n const { boundary, viewportOffset = 0, placement } = options;\n let offsetPosition = position;\n for (const [i, [prop, , start, end]] of Object.entries(dirs)) {\n const viewport = getViewport$2(element, target[i], viewportOffset, boundary, i);\n if (isWithin(position, viewport, i)) {\n continue;\n }\n let offsetBy = 0;\n if (placement[i] === \"flip\") {\n const attach = options.attach.target[i];\n if (attach === end && position[end] <= viewport[end] || attach === start && position[start] >= viewport[start]) {\n continue;\n }\n offsetBy = flip(element, target, options, i)[start] - position[start];\n const scrollArea = getScrollArea(element, target[i], viewportOffset, i);\n if (!isWithin(applyOffset(position, offsetBy, i), scrollArea, i)) {\n if (isWithin(position, scrollArea, i)) {\n continue;\n }\n if (options.recursion) {\n return false;\n }\n const newPos = flipAxis(element, target, options);\n if (newPos && isWithin(newPos, scrollArea, 1 - i)) {\n return newPos;\n }\n continue;\n }\n } else if (placement[i] === \"shift\") {\n const targetDim = offset(target[i]);\n const { offset: elOffset } = options;\n offsetBy = clamp(\n clamp(position[start], viewport[start], viewport[end] - position[prop]),\n targetDim[start] - position[prop] + elOffset[i],\n targetDim[end] - elOffset[i]\n ) - position[start];\n }\n offsetPosition = applyOffset(offsetPosition, offsetBy, i);\n }\n return offsetPosition;\n }\n function attachTo(element, target, options) {\n let { attach, offset: offsetBy } = {\n attach: {\n element: [\"left\", \"top\"],\n target: [\"left\", \"top\"],\n ...options.attach\n },\n offset: [0, 0],\n ...options\n };\n let elOffset = offset(element);\n for (const [i, [prop, , start, end]] of Object.entries(dirs)) {\n const targetOffset = attach.target[i] === attach.element[i] ? offsetViewport(target[i]) : offset(target[i]);\n elOffset = applyOffset(\n elOffset,\n targetOffset[start] - elOffset[start] + moveBy(attach.target[i], end, targetOffset[prop]) - moveBy(attach.element[i], end, elOffset[prop]) + +offsetBy[i],\n i\n );\n }\n return elOffset;\n }\n function applyOffset(position, offset2, i) {\n const [, dir, start, end] = dirs[i];\n const newPos = { ...position };\n newPos[start] = position[dir] = position[start] + offset2;\n newPos[end] += offset2;\n return newPos;\n }\n function moveBy(attach, end, dim) {\n return attach === \"center\" ? dim / 2 : attach === end ? dim : 0;\n }\n function getViewport$2(element, target, viewportOffset, boundary, i) {\n let viewport = getIntersectionArea(...commonScrollParents(element, target).map(offsetViewport));\n if (viewportOffset) {\n viewport[dirs[i][2]] += viewportOffset;\n viewport[dirs[i][3]] -= viewportOffset;\n }\n if (boundary) {\n viewport = getIntersectionArea(\n viewport,\n offset(isArray(boundary) ? boundary[i] : boundary)\n );\n }\n return viewport;\n }\n function getScrollArea(element, target, viewportOffset, i) {\n const [prop, axis, start, end] = dirs[i];\n const [scrollElement] = commonScrollParents(element, target);\n const viewport = offsetViewport(scrollElement);\n if ([\"auto\", \"scroll\"].includes(css(scrollElement, `overflow-${axis}`))) {\n viewport[start] -= scrollElement[`scroll${ucfirst(start)}`];\n viewport[end] = viewport[start] + scrollElement[`scroll${ucfirst(prop)}`];\n }\n viewport[start] += viewportOffset;\n viewport[end] -= viewportOffset;\n return viewport;\n }\n function commonScrollParents(element, target) {\n return overflowParents(target).filter((parent) => parent.contains(element));\n }\n function getIntersectionArea(...rects) {\n let area = {};\n for (const rect of rects) {\n for (const [, , start, end] of dirs) {\n area[start] = Math.max(area[start] || 0, rect[start]);\n area[end] = Math.min(...[area[end], rect[end]].filter(Boolean));\n }\n }\n return area;\n }\n function isWithin(positionA, positionB, i) {\n const [, , start, end] = dirs[i];\n return positionA[start] >= positionB[start] && positionA[end] <= positionB[end];\n }\n function flip(element, target, { offset: offset2, attach }, i) {\n return attachTo(element, target, {\n attach: {\n element: flipAttach(attach.element, i),\n target: flipAttach(attach.target, i)\n },\n offset: flipOffset(offset2, i)\n });\n }\n function flipAxis(element, target, options) {\n return getPosition(element, target, {\n ...options,\n attach: {\n element: options.attach.element.map(flipAttachAxis).reverse(),\n target: options.attach.target.map(flipAttachAxis).reverse()\n },\n offset: options.offset.reverse(),\n placement: options.placement.reverse(),\n recursion: true\n });\n }\n function flipAttach(attach, i) {\n const newAttach = [...attach];\n const index = dirs[i].indexOf(attach[i]);\n if (~index) {\n newAttach[i] = dirs[i][1 - index % 2 + 2];\n }\n return newAttach;\n }\n function flipAttachAxis(prop) {\n for (let i = 0; i < dirs.length; i++) {\n const index = dirs[i].indexOf(prop);\n if (~index) {\n return dirs[1 - i][index % 2 + 2];\n }\n }\n }\n function flipOffset(offset2, i) {\n offset2 = [...offset2];\n offset2[i] *= -1;\n return offset2;\n }\n\n var util = /*#__PURE__*/Object.freeze({\n __proto__: null,\n $: $,\n $$: $$,\n Animation: Animation,\n Dimensions: Dimensions,\n MouseTracker: MouseTracker,\n Transition: Transition,\n addClass: addClass,\n after: after,\n append: append,\n apply: apply,\n assign: assign,\n attr: attr,\n before: before,\n boxModelAdjust: boxModelAdjust,\n camelize: camelize,\n children: children,\n clamp: clamp,\n createEvent: createEvent,\n css: css,\n data: data,\n dimensions: dimensions$1,\n each: each,\n empty: empty,\n endsWith: endsWith,\n escape: escape,\n fastdom: fastdom,\n filter: filter$1,\n find: find,\n findAll: findAll,\n findIndex: findIndex,\n flipPosition: flipPosition,\n fragment: fragment,\n getCoveringElement: getCoveringElement,\n getEventPos: getEventPos,\n getIndex: getIndex,\n getTargetedElement: getTargetedElement,\n hasAttr: hasAttr,\n hasClass: hasClass,\n hasOwn: hasOwn,\n hasTouch: hasTouch,\n height: height,\n html: html,\n hyphenate: hyphenate,\n inBrowser: inBrowser,\n includes: includes,\n index: index,\n intersectRect: intersectRect,\n isArray: isArray,\n isBoolean: isBoolean,\n isDocument: isDocument,\n isElement: isElement,\n isEmpty: isEmpty,\n isEqual: isEqual,\n isFocusable: isFocusable,\n isFunction: isFunction,\n isInView: isInView,\n isInput: isInput,\n isNode: isNode,\n isNumber: isNumber,\n isNumeric: isNumeric,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isRtl: isRtl,\n isSameSiteAnchor: isSameSiteAnchor,\n isString: isString,\n isTag: isTag,\n isTouch: isTouch,\n isUndefined: isUndefined,\n isVisible: isVisible,\n isVoidElement: isVoidElement,\n isWindow: isWindow,\n last: last,\n matches: matches,\n memoize: memoize,\n mute: mute,\n noop: noop,\n observeIntersection: observeIntersection,\n observeMutation: observeMutation,\n observeResize: observeResize,\n observeViewportResize: observeViewportResize,\n off: off,\n offset: offset,\n offsetPosition: offsetPosition,\n offsetViewport: offsetViewport,\n on: on,\n once: once,\n overflowParents: overflowParents,\n parent: parent,\n parents: parents,\n pause: pause,\n pick: pick,\n play: play,\n pointInRect: pointInRect,\n pointerCancel: pointerCancel,\n pointerDown: pointerDown$1,\n pointerEnter: pointerEnter,\n pointerLeave: pointerLeave,\n pointerMove: pointerMove$1,\n pointerUp: pointerUp$1,\n position: position,\n positionAt: positionAt,\n prepend: prepend,\n propName: propName,\n query: query,\n queryAll: queryAll,\n ready: ready,\n remove: remove$1,\n removeAttr: removeAttr,\n removeClass: removeClass,\n replaceClass: replaceClass,\n scrollIntoView: scrollIntoView,\n scrollParent: scrollParent,\n scrollParents: scrollParents,\n scrolledOver: scrolledOver,\n selFocusable: selFocusable,\n selInput: selInput,\n sortBy: sortBy,\n startsWith: startsWith,\n sumBy: sumBy,\n swap: swap,\n toArray: toArray,\n toBoolean: toBoolean,\n toEventTargets: toEventTargets,\n toFloat: toFloat,\n toNode: toNode,\n toNodes: toNodes,\n toNumber: toNumber,\n toPx: toPx,\n toWindow: toWindow,\n toggleClass: toggleClass,\n trigger: trigger,\n ucfirst: ucfirst,\n uniqueBy: uniqueBy,\n unwrap: unwrap,\n width: width,\n wrapAll: wrapAll,\n wrapInner: wrapInner\n });\n\n var Class = {\n connected() {\n addClass(this.$el, this.$options.id);\n }\n };\n\n const units = [\"days\", \"hours\", \"minutes\", \"seconds\"];\n var countdown = {\n mixins: [Class],\n props: {\n date: String,\n clsWrapper: String,\n role: String\n },\n data: {\n date: \"\",\n clsWrapper: \".uk-countdown-%unit%\",\n role: \"timer\"\n },\n connected() {\n attr(this.$el, \"role\", this.role);\n this.date = toFloat(Date.parse(this.$props.date));\n this.end = false;\n this.start();\n },\n disconnected() {\n this.stop();\n },\n events: {\n name: \"visibilitychange\",\n el: () => document,\n handler() {\n if (document.hidden) {\n this.stop();\n } else {\n this.start();\n }\n }\n },\n methods: {\n start() {\n this.stop();\n this.update();\n if (!this.timer) {\n trigger(this.$el, \"countdownstart\");\n this.timer = setInterval(this.update, 1e3);\n }\n },\n stop() {\n if (this.timer) {\n clearInterval(this.timer);\n trigger(this.$el, \"countdownstop\");\n this.timer = null;\n }\n },\n update() {\n const timespan = getTimeSpan(this.date);\n if (!timespan.total) {\n this.stop();\n if (!this.end) {\n trigger(this.$el, \"countdownend\");\n this.end = true;\n }\n }\n for (const unit of units) {\n const el = $(this.clsWrapper.replace(\"%unit%\", unit), this.$el);\n if (!el) {\n continue;\n }\n let digits = Math.trunc(timespan[unit]).toString().padStart(2, \"0\");\n if (el.textContent !== digits) {\n digits = digits.split(\"\");\n if (digits.length !== el.children.length) {\n html(el, digits.map(() => \"\").join(\"\"));\n }\n digits.forEach((digit, i) => el.children[i].textContent = digit);\n }\n }\n }\n }\n };\n function getTimeSpan(date) {\n const total = Math.max(0, date - Date.now()) / 1e3;\n return {\n total,\n seconds: total % 60,\n minutes: total / 60 % 60,\n hours: total / 60 / 60 % 24,\n days: total / 60 / 60 / 24\n };\n }\n\n const strats = {};\n strats.events = strats.watch = strats.observe = strats.created = strats.beforeConnect = strats.connected = strats.beforeDisconnect = strats.disconnected = strats.destroy = concatStrat;\n strats.args = function(parentVal, childVal) {\n return childVal !== false && concatStrat(childVal || parentVal);\n };\n strats.update = function(parentVal, childVal) {\n return sortBy(\n concatStrat(parentVal, isFunction(childVal) ? { read: childVal } : childVal),\n \"order\"\n );\n };\n strats.props = function(parentVal, childVal) {\n if (isArray(childVal)) {\n const value = {};\n for (const key of childVal) {\n value[key] = String;\n }\n childVal = value;\n }\n return strats.methods(parentVal, childVal);\n };\n strats.computed = strats.methods = function(parentVal, childVal) {\n return childVal ? parentVal ? { ...parentVal, ...childVal } : childVal : parentVal;\n };\n strats.i18n = strats.data = function(parentVal, childVal, vm) {\n if (!vm) {\n if (!childVal) {\n return parentVal;\n }\n if (!parentVal) {\n return childVal;\n }\n return function(vm2) {\n return mergeFnData(parentVal, childVal, vm2);\n };\n }\n return mergeFnData(parentVal, childVal, vm);\n };\n function mergeFnData(parentVal, childVal, vm) {\n return strats.computed(\n isFunction(parentVal) ? parentVal.call(vm, vm) : parentVal,\n isFunction(childVal) ? childVal.call(vm, vm) : childVal\n );\n }\n function concatStrat(parentVal, childVal) {\n parentVal = parentVal && !isArray(parentVal) ? [parentVal] : parentVal;\n return childVal ? parentVal ? parentVal.concat(childVal) : isArray(childVal) ? childVal : [childVal] : parentVal;\n }\n function defaultStrat(parentVal, childVal) {\n return isUndefined(childVal) ? parentVal : childVal;\n }\n function mergeOptions(parent, child, vm) {\n const options = {};\n if (isFunction(child)) {\n child = child.options;\n }\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (const mixin of child.mixins) {\n parent = mergeOptions(parent, mixin, vm);\n }\n }\n for (const key in parent) {\n mergeKey(key);\n }\n for (const key in child) {\n if (!hasOwn(parent, key)) {\n mergeKey(key);\n }\n }\n function mergeKey(key) {\n options[key] = (strats[key] || defaultStrat)(parent[key], child[key], vm);\n }\n return options;\n }\n function parseOptions(options, args = []) {\n try {\n return options ? startsWith(options, \"{\") ? JSON.parse(options) : args.length && !includes(options, \":\") ? { [args[0]]: options } : options.split(\";\").reduce((options2, option) => {\n const [key, value] = option.split(/:(.*)/);\n if (key && !isUndefined(value)) {\n options2[key.trim()] = value.trim();\n }\n return options2;\n }, {}) : {};\n } catch (e) {\n return {};\n }\n }\n function coerce$1(type, value) {\n if (type === Boolean) {\n return toBoolean(value);\n } else if (type === Number) {\n return toNumber(value);\n } else if (type === \"list\") {\n return toList(value);\n } else if (type === Object && isString(value)) {\n return parseOptions(value);\n }\n return type ? type(value) : value;\n }\n const listRe = /,(?![^(]*\\))/;\n function toList(value) {\n return isArray(value) ? value : isString(value) ? value.split(listRe).map((value2) => isNumeric(value2) ? toNumber(value2) : toBoolean(value2.trim())) : [value];\n }\n\n function initUpdates(instance) {\n instance._data = {};\n instance._updates = [...instance.$options.update || []];\n instance._disconnect.push(() => instance._updates = instance._data = null);\n }\n function prependUpdate(instance, update) {\n instance._updates.unshift(update);\n }\n function callUpdate(instance, e = \"update\") {\n if (!instance._connected) {\n return;\n }\n if (!instance._updates.length) {\n return;\n }\n if (!instance._queued) {\n instance._queued = /* @__PURE__ */ new Set();\n fastdom.read(() => {\n if (instance._connected) {\n runUpdates(instance, instance._queued);\n }\n instance._queued = null;\n });\n }\n instance._queued.add(e.type || e);\n }\n function runUpdates(instance, types) {\n for (const { read, write, events = [] } of instance._updates) {\n if (!types.has(\"update\") && !events.some((type) => types.has(type))) {\n continue;\n }\n let result;\n if (read) {\n result = read.call(instance, instance._data, types);\n if (result && isPlainObject(result)) {\n assign(instance._data, result);\n }\n }\n if (write && result !== false) {\n fastdom.write(() => {\n if (instance._connected) {\n write.call(instance, instance._data, types);\n }\n });\n }\n }\n }\n\n function resize(options) {\n return observe(observeResize, options, \"resize\");\n }\n function intersection(options) {\n return observe(observeIntersection, options);\n }\n function mutation(options) {\n return observe(observeMutation, options);\n }\n function lazyload(options = {}) {\n return intersection({\n handler: function(entries, observer) {\n const { targets = this.$el, preload = 5 } = options;\n for (const el of toNodes(isFunction(targets) ? targets(this) : targets)) {\n $$('[loading=\"lazy\"]', el).slice(0, preload - 1).forEach((el2) => removeAttr(el2, \"loading\"));\n }\n for (const el of entries.filter(({ isIntersecting }) => isIntersecting).map(({ target }) => target)) {\n observer.unobserve(el);\n }\n },\n ...options\n });\n }\n function viewport(options) {\n return observe((target, handler) => observeViewportResize(handler), options, \"resize\");\n }\n function scroll$1(options) {\n return observe(\n (target, handler) => ({\n disconnect: on(toScrollTargets(target), \"scroll\", handler, { passive: true })\n }),\n options,\n \"scroll\"\n );\n }\n function swipe(options) {\n return {\n observe(target, handler) {\n return {\n observe: noop,\n unobserve: noop,\n disconnect: on(target, pointerDown$1, handler, { passive: true })\n };\n },\n handler(e) {\n if (!isTouch(e)) {\n return;\n }\n const pos = getEventPos(e);\n const target = \"tagName\" in e.target ? e.target : parent(e.target);\n once(document, `${pointerUp$1} ${pointerCancel} scroll`, (e2) => {\n const { x, y } = getEventPos(e2);\n if (e2.type !== \"scroll\" && target && x && Math.abs(pos.x - x) > 100 || y && Math.abs(pos.y - y) > 100) {\n setTimeout(() => {\n trigger(target, \"swipe\");\n trigger(target, `swipe${swipeDirection(pos.x, pos.y, x, y)}`);\n });\n }\n });\n },\n ...options\n };\n }\n function observe(observe2, options, emit) {\n return {\n observe: observe2,\n handler() {\n callUpdate(this, emit);\n },\n ...options\n };\n }\n function swipeDirection(x1, y1, x2, y2) {\n return Math.abs(x1 - x2) >= Math.abs(y1 - y2) ? x1 - x2 > 0 ? \"Left\" : \"Right\" : y1 - y2 > 0 ? \"Up\" : \"Down\";\n }\n function toScrollTargets(elements) {\n return toNodes(elements).map((node) => {\n const { ownerDocument } = node;\n const parent2 = scrollParent(node, true);\n return parent2 === ownerDocument.scrollingElement ? ownerDocument : parent2;\n });\n }\n\n var Margin = {\n props: {\n margin: String,\n firstColumn: Boolean\n },\n data: {\n margin: \"uk-margin-small-top\",\n firstColumn: \"uk-first-column\"\n },\n observe: [\n mutation({\n options: {\n childList: true\n }\n }),\n mutation({\n options: {\n attributes: true,\n attributeFilter: [\"style\"]\n },\n target: ({ $el }) => [$el, ...children($el)]\n }),\n resize({\n target: ({ $el }) => [$el, ...children($el)]\n })\n ],\n update: {\n read() {\n return {\n rows: getRows(children(this.$el))\n };\n },\n write({ rows }) {\n for (const row of rows) {\n for (const el of row) {\n toggleClass(el, this.margin, rows[0] !== row);\n toggleClass(el, this.firstColumn, row[isRtl ? row.length - 1 : 0] === el);\n }\n }\n },\n events: [\"resize\"]\n }\n };\n function getRows(elements) {\n const sorted = [[]];\n const withOffset = elements.some(\n (el, i) => i && elements[i - 1].offsetParent !== el.offsetParent\n );\n for (const el of elements) {\n if (!isVisible(el)) {\n continue;\n }\n const offset = getOffset(el, withOffset);\n for (let i = sorted.length - 1; i >= 0; i--) {\n const current = sorted[i];\n if (!current[0]) {\n current.push(el);\n break;\n }\n const offsetCurrent = getOffset(current[0], withOffset);\n if (offset.top >= offsetCurrent.bottom - 1 && offset.top !== offsetCurrent.top) {\n sorted.push([el]);\n break;\n }\n if (offset.bottom - 1 > offsetCurrent.top || offset.top === offsetCurrent.top) {\n let j = current.length - 1;\n for (; j >= 0; j--) {\n const offsetCurrent2 = getOffset(current[j], withOffset);\n if (offset.left >= offsetCurrent2.left) {\n break;\n }\n }\n current.splice(j + 1, 0, el);\n break;\n }\n if (i === 0) {\n sorted.unshift([el]);\n break;\n }\n }\n }\n return sorted;\n }\n function getOffset(element, offset = false) {\n let { offsetTop, offsetLeft, offsetHeight, offsetWidth } = element;\n if (offset) {\n [offsetTop, offsetLeft] = offsetPosition(element);\n }\n return {\n top: offsetTop,\n left: offsetLeft,\n bottom: offsetTop + offsetHeight,\n right: offsetLeft + offsetWidth\n };\n }\n\n async function slide(action, target, duration) {\n await awaitFrame();\n let nodes = children(target);\n const currentProps = nodes.map((el) => getProps$1(el, true));\n const targetProps = { ...css(target, [\"height\", \"padding\"]), display: \"block\" };\n const targets = nodes.concat(target);\n await Promise.all(targets.map(Transition.cancel));\n css(targets, \"transitionProperty\", \"none\");\n await action();\n nodes = nodes.concat(children(target).filter((el) => !includes(nodes, el)));\n await Promise.resolve();\n css(targets, \"transitionProperty\", \"\");\n const targetStyle = attr(target, \"style\");\n const targetPropsTo = css(target, [\"height\", \"padding\"]);\n const [propsTo, propsFrom] = getTransitionProps(target, nodes, currentProps);\n const attrsTo = nodes.map((el) => ({ style: attr(el, \"style\") }));\n nodes.forEach((el, i) => propsFrom[i] && css(el, propsFrom[i]));\n css(target, targetProps);\n trigger(target, \"scroll\");\n await awaitFrame();\n const transitions = nodes.map((el, i) => parent(el) === target && Transition.start(el, propsTo[i], duration, \"ease\")).concat(Transition.start(target, targetPropsTo, duration, \"ease\"));\n try {\n await Promise.all(transitions);\n nodes.forEach((el, i) => {\n attr(el, attrsTo[i]);\n if (parent(el) === target) {\n css(el, \"display\", propsTo[i].opacity === 0 ? \"none\" : \"\");\n }\n });\n attr(target, \"style\", targetStyle);\n } catch (e) {\n attr(nodes, \"style\", \"\");\n resetProps(target, targetProps);\n }\n }\n function getProps$1(el, opacity) {\n const zIndex = css(el, \"zIndex\");\n return isVisible(el) ? {\n display: \"\",\n opacity: opacity ? css(el, \"opacity\") : \"0\",\n pointerEvents: \"none\",\n position: \"absolute\",\n zIndex: zIndex === \"auto\" ? index(el) : zIndex,\n ...getPositionWithMargin(el)\n } : false;\n }\n function getTransitionProps(target, nodes, currentProps) {\n const propsTo = nodes.map(\n (el, i) => parent(el) && i in currentProps ? currentProps[i] ? isVisible(el) ? getPositionWithMargin(el) : { opacity: 0 } : { opacity: isVisible(el) ? 1 : 0 } : false\n );\n const propsFrom = propsTo.map((props, i) => {\n const from = parent(nodes[i]) === target && (currentProps[i] || getProps$1(nodes[i]));\n if (!from) {\n return false;\n }\n if (!props) {\n delete from.opacity;\n } else if (!(\"opacity\" in props)) {\n const { opacity } = from;\n if (opacity % 1) {\n props.opacity = 1;\n } else {\n delete from.opacity;\n }\n }\n return from;\n });\n return [propsTo, propsFrom];\n }\n function resetProps(el, props) {\n for (const prop in props) {\n css(el, prop, \"\");\n }\n }\n function getPositionWithMargin(el) {\n const { height, width } = dimensions$1(el);\n return {\n height,\n width,\n transform: \"\",\n ...position(el),\n ...css(el, [\"marginTop\", \"marginLeft\"])\n };\n }\n function awaitFrame() {\n return new Promise((resolve) => requestAnimationFrame(resolve));\n }\n\n const clsLeave = \"uk-transition-leave\";\n const clsEnter = \"uk-transition-enter\";\n function fade(action, target, duration, stagger = 0) {\n const index = transitionIndex(target, true);\n const propsIn = { opacity: 1 };\n const propsOut = { opacity: 0 };\n const wrapIndexFn = (fn) => () => index === transitionIndex(target) ? fn() : Promise.reject();\n const leaveFn = wrapIndexFn(async () => {\n addClass(target, clsLeave);\n await Promise.all(\n getTransitionNodes(target).map(\n (child, i) => new Promise(\n (resolve) => setTimeout(\n () => Transition.start(child, propsOut, duration / 2, \"ease\").then(\n resolve\n ),\n i * stagger\n )\n )\n )\n );\n removeClass(target, clsLeave);\n });\n const enterFn = wrapIndexFn(async () => {\n const oldHeight = height(target);\n addClass(target, clsEnter);\n action();\n css(children(target), { opacity: 0 });\n await awaitFrame();\n const nodes = children(target);\n const newHeight = height(target);\n css(target, \"alignContent\", \"flex-start\");\n height(target, oldHeight);\n const transitionNodes = getTransitionNodes(target);\n css(nodes, propsOut);\n const transitions = transitionNodes.map(async (child, i) => {\n await awaitTimeout(i * stagger);\n await Transition.start(child, propsIn, duration / 2, \"ease\");\n });\n if (oldHeight !== newHeight) {\n transitions.push(\n Transition.start(\n target,\n { height: newHeight },\n duration / 2 + transitionNodes.length * stagger,\n \"ease\"\n )\n );\n }\n await Promise.all(transitions).then(() => {\n removeClass(target, clsEnter);\n if (index === transitionIndex(target)) {\n css(target, { height: \"\", alignContent: \"\" });\n css(nodes, { opacity: \"\" });\n delete target.dataset.transition;\n }\n });\n });\n return hasClass(target, clsLeave) ? waitTransitionend(target).then(enterFn) : hasClass(target, clsEnter) ? waitTransitionend(target).then(leaveFn).then(enterFn) : leaveFn().then(enterFn);\n }\n function transitionIndex(target, next) {\n if (next) {\n target.dataset.transition = 1 + transitionIndex(target);\n }\n return toNumber(target.dataset.transition) || 0;\n }\n function waitTransitionend(target) {\n return Promise.all(\n children(target).filter(Transition.inProgress).map(\n (el) => new Promise((resolve) => once(el, \"transitionend transitioncanceled\", resolve))\n )\n );\n }\n function getTransitionNodes(target) {\n return getRows(children(target)).flat().filter(isVisible);\n }\n function awaitTimeout(timeout) {\n return new Promise((resolve) => setTimeout(resolve, timeout));\n }\n\n var Animate = {\n props: {\n duration: Number,\n animation: Boolean\n },\n data: {\n duration: 150,\n animation: \"slide\"\n },\n methods: {\n animate(action, target = this.$el) {\n const name = this.animation;\n const animationFn = name === \"fade\" ? fade : name === \"delayed-fade\" ? (...args) => fade(...args, 40) : name ? slide : () => {\n action();\n return Promise.resolve();\n };\n return animationFn(action, target, this.duration).catch(noop);\n }\n }\n };\n\n const keyMap = {\n TAB: 9,\n ESC: 27,\n SPACE: 32,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40\n };\n\n var filter = {\n mixins: [Animate],\n args: \"target\",\n props: {\n target: String,\n selActive: Boolean\n },\n data: {\n target: \"\",\n selActive: false,\n attrItem: \"uk-filter-control\",\n cls: \"uk-active\",\n duration: 250\n },\n computed: {\n children: ({ target }, $el) => $$(`${target} > *`, $el),\n toggles: ({ attrItem }, $el) => $$(`[${attrItem}],[data-${attrItem}]`, $el)\n },\n watch: {\n toggles(toggles) {\n this.updateState();\n const actives = $$(this.selActive, this.$el);\n for (const toggle of toggles) {\n if (this.selActive !== false) {\n toggleClass(toggle, this.cls, includes(actives, toggle));\n }\n const button = findButton(toggle);\n if (isTag(button, \"a\")) {\n attr(button, \"role\", \"button\");\n }\n }\n },\n children(list, prev) {\n if (prev) {\n this.updateState();\n }\n }\n },\n events: {\n name: \"click keydown\",\n delegate: ({ attrItem }) => `[${attrItem}],[data-${attrItem}]`,\n handler(e) {\n if (e.type === \"keydown\" && e.keyCode !== keyMap.SPACE) {\n return;\n }\n if (e.target.closest(\"a,button\")) {\n e.preventDefault();\n this.apply(e.current);\n }\n }\n },\n methods: {\n apply(el) {\n const prevState = this.getState();\n const newState = mergeState(el, this.attrItem, this.getState());\n if (!isEqualState(prevState, newState)) {\n this.setState(newState);\n }\n },\n getState() {\n return this.toggles.filter((item) => hasClass(item, this.cls)).reduce((state, el) => mergeState(el, this.attrItem, state), {\n filter: { \"\": \"\" },\n sort: []\n });\n },\n async setState(state, animate = true) {\n state = { filter: { \"\": \"\" }, sort: [], ...state };\n trigger(this.$el, \"beforeFilter\", [this, state]);\n for (const toggle of this.toggles) {\n toggleClass(toggle, this.cls, matchFilter(toggle, this.attrItem, state));\n }\n await Promise.all(\n $$(this.target, this.$el).map((target) => {\n const filterFn = () => applyState(state, target, children(target));\n return animate ? this.animate(filterFn, target) : filterFn();\n })\n );\n trigger(this.$el, \"afterFilter\", [this]);\n },\n updateState() {\n fastdom.write(() => this.setState(this.getState(), false));\n }\n }\n };\n function getFilter(el, attr2) {\n return parseOptions(data(el, attr2), [\"filter\"]);\n }\n function isEqualState(stateA, stateB) {\n return [\"filter\", \"sort\"].every((prop) => isEqual(stateA[prop], stateB[prop]));\n }\n function applyState(state, target, children) {\n for (const el of children) {\n css(\n el,\n \"display\",\n Object.values(state.filter).every((selector) => !selector || matches(el, selector)) ? \"\" : \"none\"\n );\n }\n const [sort, order] = state.sort;\n if (sort) {\n const sorted = sortItems(children, sort, order);\n if (!isEqual(sorted, children)) {\n append(target, sorted);\n }\n }\n }\n function mergeState(el, attr2, state) {\n const { filter, group, sort, order = \"asc\" } = getFilter(el, attr2);\n if (filter || isUndefined(sort)) {\n if (group) {\n if (filter) {\n delete state.filter[\"\"];\n state.filter[group] = filter;\n } else {\n delete state.filter[group];\n if (isEmpty(state.filter) || \"\" in state.filter) {\n state.filter = { \"\": filter || \"\" };\n }\n }\n } else {\n state.filter = { \"\": filter || \"\" };\n }\n }\n if (!isUndefined(sort)) {\n state.sort = [sort, order];\n }\n return state;\n }\n function matchFilter(el, attr2, { filter: stateFilter = { \"\": \"\" }, sort: [stateSort, stateOrder] }) {\n const { filter = \"\", group = \"\", sort, order = \"asc\" } = getFilter(el, attr2);\n return isUndefined(sort) ? group in stateFilter && filter === stateFilter[group] || !filter && group && !(group in stateFilter) && !stateFilter[\"\"] : stateSort === sort && stateOrder === order;\n }\n function sortItems(nodes, sort, order) {\n return [...nodes].sort(\n (a, b) => data(a, sort).localeCompare(data(b, sort), void 0, { numeric: true }) * (order === \"asc\" || -1)\n );\n }\n function findButton(el) {\n return $(\"a,button\", el) || el;\n }\n\n let prevented;\n function preventBackgroundScroll(el) {\n const off = on(\n el,\n \"touchstart\",\n (e) => {\n if (e.targetTouches.length !== 1 || matches(e.target, 'input[type=\"range\"')) {\n return;\n }\n let prev = getEventPos(e).y;\n const offMove = on(\n el,\n \"touchmove\",\n (e2) => {\n const pos = getEventPos(e2).y;\n if (pos === prev) {\n return;\n }\n prev = pos;\n if (!scrollParents(e2.target).some((scrollParent) => {\n if (!el.contains(scrollParent)) {\n return false;\n }\n let { scrollHeight, clientHeight } = scrollParent;\n return clientHeight < scrollHeight;\n })) {\n e2.preventDefault();\n }\n },\n { passive: false }\n );\n once(el, \"scroll touchend touchcanel\", offMove, { capture: true });\n },\n { passive: true }\n );\n if (prevented) {\n return off;\n }\n prevented = true;\n const { scrollingElement } = document;\n css(scrollingElement, {\n overflowY: CSS.supports(\"overflow\", \"clip\") ? \"clip\" : \"hidden\",\n touchAction: \"none\",\n paddingRight: width(window) - scrollingElement.clientWidth || \"\"\n });\n return () => {\n prevented = false;\n off();\n css(scrollingElement, { overflowY: \"\", touchAction: \"\", paddingRight: \"\" });\n };\n }\n\n var Container = {\n props: {\n container: Boolean\n },\n data: {\n container: true\n },\n computed: {\n container({ container }) {\n return container === true && this.$container || container && $(container);\n }\n }\n };\n\n var Togglable = {\n props: {\n cls: Boolean,\n animation: \"list\",\n duration: Number,\n velocity: Number,\n origin: String,\n transition: String\n },\n data: {\n cls: false,\n animation: [false],\n duration: 200,\n velocity: 0.2,\n origin: false,\n transition: \"ease\",\n clsEnter: \"uk-togglable-enter\",\n clsLeave: \"uk-togglable-leave\"\n },\n computed: {\n hasAnimation: ({ animation }) => !!animation[0],\n hasTransition: ({ animation }) => [\"slide\", \"reveal\"].some((transition) => startsWith(animation[0], transition))\n },\n methods: {\n async toggleElement(targets, toggle, animate) {\n try {\n await Promise.all(\n toNodes(targets).map((el) => {\n const show = isBoolean(toggle) ? toggle : !this.isToggled(el);\n if (!trigger(el, `before${show ? \"show\" : \"hide\"}`, [this])) {\n return Promise.reject();\n }\n const promise = (isFunction(animate) ? animate : animate === false || !this.hasAnimation ? toggleInstant : this.hasTransition ? toggleTransition : toggleAnimation)(el, show, this);\n const cls = show ? this.clsEnter : this.clsLeave;\n addClass(el, cls);\n trigger(el, show ? \"show\" : \"hide\", [this]);\n const done = () => {\n removeClass(el, cls);\n trigger(el, show ? \"shown\" : \"hidden\", [this]);\n };\n return promise ? promise.then(done, () => {\n removeClass(el, cls);\n return Promise.reject();\n }) : done();\n })\n );\n return true;\n } catch (e) {\n return false;\n }\n },\n isToggled(el = this.$el) {\n el = toNode(el);\n return hasClass(el, this.clsEnter) ? true : hasClass(el, this.clsLeave) ? false : this.cls ? hasClass(el, this.cls.split(\" \")[0]) : isVisible(el);\n },\n _toggle(el, toggled) {\n if (!el) {\n return;\n }\n toggled = Boolean(toggled);\n let changed;\n if (this.cls) {\n changed = includes(this.cls, \" \") || toggled !== hasClass(el, this.cls);\n changed && toggleClass(el, this.cls, includes(this.cls, \" \") ? void 0 : toggled);\n } else {\n changed = toggled === el.hidden;\n changed && (el.hidden = !toggled);\n }\n if (changed) {\n trigger(el, \"toggled\", [toggled, this]);\n }\n $$(\"[autofocus]\", el).some((el2) => isVisible(el2) ? el2.focus() || true : el2.blur());\n }\n }\n };\n function toggleInstant(el, show, { _toggle }) {\n Animation.cancel(el);\n Transition.cancel(el);\n return _toggle(el, show);\n }\n async function toggleTransition(el, show, { animation, duration, velocity, transition, _toggle }) {\n var _a;\n const [mode = \"reveal\", startProp = \"top\"] = ((_a = animation[0]) == null ? void 0 : _a.split(\"-\")) || [];\n const dirs = [\n [\"left\", \"right\"],\n [\"top\", \"bottom\"]\n ];\n const dir = dirs[includes(dirs[0], startProp) ? 0 : 1];\n const end = dir[1] === startProp;\n const props = [\"width\", \"height\"];\n const dimProp = props[dirs.indexOf(dir)];\n const marginProp = `margin-${dir[0]}`;\n const marginStartProp = `margin-${startProp}`;\n let currentDim = dimensions$1(el)[dimProp];\n const inProgress = Transition.inProgress(el);\n await Transition.cancel(el);\n if (show) {\n _toggle(el, true);\n }\n const prevProps = Object.fromEntries(\n [\n \"padding\",\n \"border\",\n \"width\",\n \"height\",\n \"minWidth\",\n \"minHeight\",\n \"overflowY\",\n \"overflowX\",\n marginProp,\n marginStartProp\n ].map((key) => [key, el.style[key]])\n );\n const dim = dimensions$1(el);\n const currentMargin = toFloat(css(el, marginProp));\n const marginStart = toFloat(css(el, marginStartProp));\n const endDim = dim[dimProp] + marginStart;\n if (!inProgress && !show) {\n currentDim += marginStart;\n }\n const [wrapper] = wrapInner(el, \"
    \");\n css(wrapper, {\n boxSizing: \"border-box\",\n height: dim.height,\n width: dim.width,\n ...css(el, [\n \"overflow\",\n \"padding\",\n \"borderTop\",\n \"borderRight\",\n \"borderBottom\",\n \"borderLeft\",\n \"borderImage\",\n marginStartProp\n ])\n });\n css(el, {\n padding: 0,\n border: 0,\n minWidth: 0,\n minHeight: 0,\n [marginStartProp]: 0,\n width: dim.width,\n height: dim.height,\n overflow: \"hidden\",\n [dimProp]: currentDim\n });\n const percent = currentDim / endDim;\n duration = (velocity * endDim + duration) * (show ? 1 - percent : percent);\n const endProps = { [dimProp]: show ? endDim : 0 };\n if (end) {\n css(el, marginProp, endDim - currentDim + currentMargin);\n endProps[marginProp] = show ? currentMargin : endDim + currentMargin;\n }\n if (!end ^ mode === \"reveal\") {\n css(wrapper, marginProp, -endDim + currentDim);\n Transition.start(wrapper, { [marginProp]: show ? 0 : -endDim }, duration, transition);\n }\n try {\n await Transition.start(el, endProps, duration, transition);\n } finally {\n css(el, prevProps);\n unwrap(wrapper.firstChild);\n if (!show) {\n _toggle(el, false);\n }\n }\n }\n function toggleAnimation(el, show, cmp) {\n const { animation, duration, _toggle } = cmp;\n if (show) {\n _toggle(el, true);\n return Animation.in(el, animation[0], duration, cmp.origin);\n }\n return Animation.out(el, animation[1] || animation[0], duration, cmp.origin).then(\n () => _toggle(el, false)\n );\n }\n\n const active$1 = [];\n var Modal = {\n mixins: [Class, Container, Togglable],\n props: {\n selPanel: String,\n selClose: String,\n escClose: Boolean,\n bgClose: Boolean,\n stack: Boolean,\n role: String\n },\n data: {\n cls: \"uk-open\",\n escClose: true,\n bgClose: true,\n overlay: true,\n stack: false,\n role: \"dialog\"\n },\n computed: {\n panel: ({ selPanel }, $el) => $(selPanel, $el),\n transitionElement() {\n return this.panel;\n },\n bgClose({ bgClose }) {\n return bgClose && this.panel;\n }\n },\n connected() {\n attr(this.panel || this.$el, \"role\", this.role);\n if (this.overlay) {\n attr(this.panel || this.$el, \"aria-modal\", true);\n }\n },\n beforeDisconnect() {\n if (includes(active$1, this)) {\n this.toggleElement(this.$el, false, false);\n }\n },\n events: [\n {\n name: \"click\",\n delegate: ({ selClose }) => `${selClose},a[href*=\"#\"]`,\n handler(e) {\n const { current, defaultPrevented } = e;\n const { hash } = current;\n if (!defaultPrevented && hash && isSameSiteAnchor(current) && !this.$el.contains($(hash))) {\n this.hide();\n } else if (matches(current, this.selClose)) {\n e.preventDefault();\n this.hide();\n }\n }\n },\n {\n name: \"toggle\",\n self: true,\n handler(e) {\n if (e.defaultPrevented) {\n return;\n }\n e.preventDefault();\n if (this.isToggled() === includes(active$1, this)) {\n this.toggle();\n }\n }\n },\n {\n name: \"beforeshow\",\n self: true,\n handler(e) {\n if (includes(active$1, this)) {\n return false;\n }\n if (!this.stack && active$1.length) {\n Promise.all(active$1.map((modal) => modal.hide())).then(this.show);\n e.preventDefault();\n } else {\n active$1.push(this);\n }\n }\n },\n {\n name: \"show\",\n self: true,\n handler() {\n if (this.stack) {\n css(this.$el, \"zIndex\", toFloat(css(this.$el, \"zIndex\")) + active$1.length);\n }\n const handlers = [\n this.overlay && preventBackgroundFocus(this),\n this.overlay && preventBackgroundScroll(this.$el),\n this.bgClose && listenForBackgroundClose$1(this),\n this.escClose && listenForEscClose$1(this)\n ];\n once(\n this.$el,\n \"hidden\",\n () => handlers.forEach((handler) => handler && handler()),\n { self: true }\n );\n addClass(document.documentElement, this.clsPage);\n }\n },\n {\n name: \"shown\",\n self: true,\n handler() {\n if (!isFocusable(this.$el)) {\n attr(this.$el, \"tabindex\", \"-1\");\n }\n if (!matches(this.$el, \":focus-within\")) {\n this.$el.focus();\n }\n }\n },\n {\n name: \"hidden\",\n self: true,\n handler() {\n if (includes(active$1, this)) {\n active$1.splice(active$1.indexOf(this), 1);\n }\n css(this.$el, \"zIndex\", \"\");\n if (!active$1.some((modal) => modal.clsPage === this.clsPage)) {\n removeClass(document.documentElement, this.clsPage);\n }\n }\n }\n ],\n methods: {\n toggle() {\n return this.isToggled() ? this.hide() : this.show();\n },\n show() {\n if (this.container && parent(this.$el) !== this.container) {\n append(this.container, this.$el);\n return new Promise(\n (resolve) => requestAnimationFrame(() => this.show().then(resolve))\n );\n }\n return this.toggleElement(this.$el, true, animate$1);\n },\n hide() {\n return this.toggleElement(this.$el, false, animate$1);\n }\n }\n };\n function animate$1(el, show, { transitionElement, _toggle }) {\n return new Promise(\n (resolve, reject) => once(el, \"show hide\", () => {\n var _a;\n (_a = el._reject) == null ? void 0 : _a.call(el);\n el._reject = reject;\n _toggle(el, show);\n const off = once(\n transitionElement,\n \"transitionstart\",\n () => {\n once(transitionElement, \"transitionend transitioncancel\", resolve, {\n self: true\n });\n clearTimeout(timer);\n },\n { self: true }\n );\n const timer = setTimeout(\n () => {\n off();\n resolve();\n },\n toMs(css(transitionElement, \"transitionDuration\"))\n );\n })\n ).then(() => delete el._reject);\n }\n function toMs(time) {\n return time ? endsWith(time, \"ms\") ? toFloat(time) : toFloat(time) * 1e3 : 0;\n }\n function preventBackgroundFocus(modal) {\n return on(document, \"focusin\", (e) => {\n if (last(active$1) === modal && !modal.$el.contains(e.target)) {\n modal.$el.focus();\n }\n });\n }\n function listenForBackgroundClose$1(modal) {\n return on(document, pointerDown$1, ({ target }) => {\n if (last(active$1) !== modal || modal.overlay && !modal.$el.contains(target) || modal.panel.contains(target)) {\n return;\n }\n once(\n document,\n `${pointerUp$1} ${pointerCancel} scroll`,\n ({ defaultPrevented, type, target: newTarget }) => {\n if (!defaultPrevented && type === pointerUp$1 && target === newTarget) {\n modal.hide();\n }\n },\n true\n );\n });\n }\n function listenForEscClose$1(modal) {\n return on(document, \"keydown\", (e) => {\n if (e.keyCode === 27 && last(active$1) === modal) {\n modal.hide();\n }\n });\n }\n\n var Animations$2 = {\n slide: {\n show(dir) {\n return [{ transform: translate(dir * -100) }, { transform: translate() }];\n },\n percent(current) {\n return translated(current);\n },\n translate(percent, dir) {\n return [\n { transform: translate(dir * -100 * percent) },\n { transform: translate(dir * 100 * (1 - percent)) }\n ];\n }\n }\n };\n function translated(el) {\n return Math.abs(new DOMMatrix(css(el, \"transform\")).m41 / el.offsetWidth);\n }\n function translate(value = 0, unit = \"%\") {\n return value ? `translate3d(${value + unit}, 0, 0)` : \"\";\n }\n\n function Transitioner$1(prev, next, dir, { animation, easing }) {\n const { percent, translate, show = noop } = animation;\n const props = show(dir);\n const { promise, resolve } = withResolvers();\n return {\n dir,\n show(duration, percent2 = 0, linear) {\n const timing = linear ? \"linear\" : easing;\n duration -= Math.round(duration * clamp(percent2, -1, 1));\n this.translate(percent2);\n triggerUpdate(next, \"itemin\", { percent: percent2, duration, timing, dir });\n triggerUpdate(prev, \"itemout\", { percent: 1 - percent2, duration, timing, dir });\n Promise.all([\n Transition.start(next, props[1], duration, timing),\n Transition.start(prev, props[0], duration, timing)\n ]).then(() => {\n this.reset();\n resolve();\n }, noop);\n return promise;\n },\n cancel() {\n return Transition.cancel([next, prev]);\n },\n reset() {\n for (const prop in props[0]) {\n css([next, prev], prop, \"\");\n }\n },\n async forward(duration, percent2 = this.percent()) {\n await this.cancel();\n return this.show(duration, percent2, true);\n },\n translate(percent2) {\n this.reset();\n const props2 = translate(percent2, dir);\n css(next, props2[1]);\n css(prev, props2[0]);\n triggerUpdate(next, \"itemtranslatein\", { percent: percent2, dir });\n triggerUpdate(prev, \"itemtranslateout\", { percent: 1 - percent2, dir });\n },\n percent() {\n return percent(prev || next, next, dir);\n },\n getDistance() {\n return prev == null ? void 0 : prev.offsetWidth;\n }\n };\n }\n function triggerUpdate(el, type, data) {\n trigger(el, createEvent(type, false, false, data));\n }\n function withResolvers() {\n let resolve;\n return { promise: new Promise((res) => resolve = res), resolve };\n }\n\n var I18n = {\n props: {\n i18n: Object\n },\n data: {\n i18n: null\n },\n methods: {\n t(key, ...params) {\n var _a, _b, _c;\n let i = 0;\n return ((_c = ((_a = this.i18n) == null ? void 0 : _a[key]) || ((_b = this.$options.i18n) == null ? void 0 : _b[key])) == null ? void 0 : _c.replace(\n /%s/g,\n () => params[i++] || \"\"\n )) || \"\";\n }\n }\n };\n\n var SliderAutoplay = {\n props: {\n autoplay: Boolean,\n autoplayInterval: Number,\n pauseOnHover: Boolean\n },\n data: {\n autoplay: false,\n autoplayInterval: 7e3,\n pauseOnHover: true\n },\n connected() {\n attr(this.list, \"aria-live\", this.autoplay ? \"off\" : \"polite\");\n this.autoplay && this.startAutoplay();\n },\n disconnected() {\n this.stopAutoplay();\n },\n update() {\n attr(this.slides, \"tabindex\", \"-1\");\n },\n events: [\n {\n name: \"visibilitychange\",\n el: () => document,\n filter: ({ autoplay }) => autoplay,\n handler() {\n if (document.hidden) {\n this.stopAutoplay();\n } else {\n this.startAutoplay();\n }\n }\n }\n ],\n methods: {\n startAutoplay() {\n this.stopAutoplay();\n this.interval = setInterval(() => {\n if (!(this.stack.length || this.draggable && matches(this.$el, \":focus-within\") && !matches(this.$el, \":focus\") || this.pauseOnHover && matches(this.$el, \":hover\"))) {\n this.show(\"next\");\n }\n }, this.autoplayInterval);\n },\n stopAutoplay() {\n clearInterval(this.interval);\n }\n }\n };\n\n const pointerOptions = { passive: false, capture: true };\n const pointerUpOptions = { passive: true, capture: true };\n const pointerDown = \"touchstart mousedown\";\n const pointerMove = \"touchmove mousemove\";\n const pointerUp = \"touchend touchcancel mouseup click input scroll\";\n const preventClick = (e) => e.preventDefault();\n var SliderDrag = {\n props: {\n draggable: Boolean\n },\n data: {\n draggable: true,\n threshold: 10\n },\n created() {\n for (const key of [\"start\", \"move\", \"end\"]) {\n const fn = this[key];\n this[key] = (e) => {\n const pos = getEventPos(e).x * (isRtl ? -1 : 1);\n this.prevPos = pos === this.pos ? this.prevPos : this.pos;\n this.pos = pos;\n fn(e);\n };\n }\n },\n events: [\n {\n name: pointerDown,\n passive: true,\n delegate: ({ selList }) => `${selList} > *`,\n handler(e) {\n if (!this.draggable || this.parallax || !isTouch(e) && hasSelectableText(e.target) || e.target.closest(selInput) || e.button > 0 || this.length < 2) {\n return;\n }\n this.start(e);\n }\n },\n {\n name: \"dragstart\",\n handler(e) {\n e.preventDefault();\n }\n },\n {\n // iOS workaround for slider stopping if swiping fast\n name: pointerMove,\n el: ({ list }) => list,\n handler: noop,\n ...pointerOptions\n }\n ],\n methods: {\n start() {\n this.drag = this.pos;\n if (this._transitioner) {\n this.percent = this._transitioner.percent();\n this.drag += this._transitioner.getDistance() * this.percent * this.dir;\n this._transitioner.cancel();\n this._transitioner.translate(this.percent);\n this.dragging = true;\n this.stack = [];\n } else {\n this.prevIndex = this.index;\n }\n on(document, pointerMove, this.move, pointerOptions);\n on(document, pointerUp, this.end, pointerUpOptions);\n css(this.list, \"userSelect\", \"none\");\n },\n move(e) {\n const distance = this.pos - this.drag;\n if (distance === 0 || this.prevPos === this.pos || !this.dragging && Math.abs(distance) < this.threshold) {\n return;\n }\n if (!this.dragging) {\n on(this.list, \"click\", preventClick, pointerOptions);\n }\n e.cancelable && e.preventDefault();\n this.dragging = true;\n this.dir = distance < 0 ? 1 : -1;\n let { slides, prevIndex } = this;\n let dis = Math.abs(distance);\n let nextIndex = this.getIndex(prevIndex + this.dir);\n let width = getDistance.call(this, prevIndex, nextIndex);\n while (nextIndex !== prevIndex && dis > width) {\n this.drag -= width * this.dir;\n prevIndex = nextIndex;\n dis -= width;\n nextIndex = this.getIndex(prevIndex + this.dir);\n width = getDistance.call(this, prevIndex, nextIndex);\n }\n this.percent = dis / width;\n const prev = slides[prevIndex];\n const next = slides[nextIndex];\n const changed = this.index !== nextIndex;\n const edge = prevIndex === nextIndex;\n let itemShown;\n for (const i of [this.index, this.prevIndex]) {\n if (!includes([nextIndex, prevIndex], i)) {\n trigger(slides[i], \"itemhidden\", [this]);\n if (edge) {\n itemShown = true;\n this.prevIndex = prevIndex;\n }\n }\n }\n if (this.index === prevIndex && this.prevIndex !== prevIndex || itemShown) {\n trigger(slides[this.index], \"itemshown\", [this]);\n }\n if (changed) {\n this.prevIndex = prevIndex;\n this.index = nextIndex;\n if (!edge) {\n trigger(prev, \"beforeitemhide\", [this]);\n trigger(prev, \"itemhide\", [this]);\n }\n trigger(next, \"beforeitemshow\", [this]);\n trigger(next, \"itemshow\", [this]);\n }\n this._transitioner = this._translate(Math.abs(this.percent), prev, !edge && next);\n },\n end() {\n off(document, pointerMove, this.move, pointerOptions);\n off(document, pointerUp, this.end, pointerUpOptions);\n if (this.dragging) {\n this.dragging = null;\n if (this.index === this.prevIndex) {\n this.percent = 1 - this.percent;\n this.dir *= -1;\n this._show(false, this.index, true);\n this._transitioner = null;\n } else {\n const dirChange = (isRtl ? this.dir * (isRtl ? 1 : -1) : this.dir) < 0 === this.prevPos > this.pos;\n this.index = dirChange ? this.index : this.prevIndex;\n if (dirChange) {\n trigger(this.slides[this.prevIndex], \"itemhidden\", [this]);\n trigger(this.slides[this.index], \"itemshown\", [this]);\n this.percent = 1 - this.percent;\n }\n this.show(\n this.dir > 0 && !dirChange || this.dir < 0 && dirChange ? \"next\" : \"previous\",\n true\n );\n }\n }\n setTimeout(() => off(this.list, \"click\", preventClick, pointerOptions));\n css(this.list, { userSelect: \"\" });\n this.drag = this.percent = null;\n }\n }\n };\n function getDistance(prev, next) {\n return this._getTransitioner(prev, prev !== next && next).getDistance() || this.slides[prev].offsetWidth;\n }\n function hasSelectableText(el) {\n return css(el, \"userSelect\") !== \"none\" && toArray(el.childNodes).some((el2) => el2.nodeType === 3 && el2.textContent.trim());\n }\n\n function initWatches(instance) {\n instance._watches = [];\n for (const watches of instance.$options.watch || []) {\n for (const [name, watch] of Object.entries(watches)) {\n registerWatch(instance, watch, name);\n }\n }\n instance._initial = true;\n }\n function registerWatch(instance, watch, name) {\n instance._watches.push({\n name,\n ...isPlainObject(watch) ? watch : { handler: watch }\n });\n }\n function runWatches(instance, values) {\n for (const { name, handler, immediate = true } of instance._watches) {\n if (instance._initial && immediate || hasOwn(values, name) && !isEqual(values[name], instance[name])) {\n handler.call(instance, instance[name], values[name]);\n }\n }\n instance._initial = false;\n }\n\n function initComputed(instance) {\n const { computed } = instance.$options;\n instance._computed = {};\n if (computed) {\n for (const key in computed) {\n registerComputed(instance, key, computed[key]);\n }\n }\n }\n const mutationOptions = { subtree: true, childList: true };\n function registerComputed(instance, key, cb) {\n instance._hasComputed = true;\n Object.defineProperty(instance, key, {\n enumerable: true,\n get() {\n const { _computed, $props, $el } = instance;\n if (!hasOwn(_computed, key)) {\n _computed[key] = (cb.get || cb).call(instance, $props, $el);\n if (cb.observe && instance._computedObserver) {\n const selector = cb.observe.call(instance, $props);\n instance._computedObserver.observe(\n [\"~\", \"+\", \"-\"].includes(selector[0]) ? $el.parentElement : $el.getRootNode(),\n mutationOptions\n );\n }\n }\n return _computed[key];\n },\n set(value) {\n const { _computed } = instance;\n _computed[key] = cb.set ? cb.set.call(instance, value) : value;\n if (isUndefined(_computed[key])) {\n delete _computed[key];\n }\n }\n });\n }\n function initComputedUpdates(instance) {\n if (!instance._hasComputed) {\n return;\n }\n prependUpdate(instance, {\n read: () => runWatches(instance, resetComputed(instance)),\n events: [\"resize\", \"computed\"]\n });\n instance._computedObserver = observeMutation(\n instance.$el,\n () => callUpdate(instance, \"computed\"),\n mutationOptions\n );\n instance._disconnect.push(() => {\n instance._computedObserver.disconnect();\n instance._computedObserver = null;\n resetComputed(instance);\n });\n }\n function resetComputed(instance) {\n const values = { ...instance._computed };\n instance._computed = {};\n return values;\n }\n\n function initEvents(instance) {\n for (const event of instance.$options.events || []) {\n if (hasOwn(event, \"handler\")) {\n registerEvent(instance, event);\n } else {\n for (const key in event) {\n registerEvent(instance, { name: key, handler: event[key] });\n }\n }\n }\n }\n function registerEvent(instance, { name, el, handler, capture, passive, delegate, filter, self }) {\n if (filter && !filter.call(instance, instance)) {\n return;\n }\n instance._disconnect.push(\n on(\n el ? el.call(instance, instance) : instance.$el,\n name,\n delegate == null ? void 0 : delegate.call(instance, instance),\n handler.bind(instance),\n {\n passive,\n capture,\n self\n }\n )\n );\n }\n\n function initObservers(instance) {\n for (const observer of instance.$options.observe || []) {\n registerObservable(instance, observer);\n }\n }\n function registerObservable(instance, observable) {\n let { observe, target = instance.$el, handler, options, filter, args } = observable;\n if (filter && !filter.call(instance, instance)) {\n return;\n }\n const key = `_observe${instance._disconnect.length}`;\n if (isFunction(target) && !hasOwn(instance, key)) {\n registerComputed(instance, key, () => {\n const targets2 = target.call(instance, instance);\n return isArray(targets2) ? toNodes(targets2) : targets2;\n });\n }\n handler = isString(handler) ? instance[handler] : handler.bind(instance);\n if (isFunction(options)) {\n options = options.call(instance, instance);\n }\n const targets = hasOwn(instance, key) ? instance[key] : target;\n const observer = observe(targets, handler, options, args);\n if (isFunction(target) && isArray(instance[key])) {\n registerWatch(\n instance,\n { handler: updateTargets(observer, options), immediate: false },\n key\n );\n }\n instance._disconnect.push(() => observer.disconnect());\n }\n function updateTargets(observer, options) {\n return (targets, prev) => {\n for (const target of prev) {\n if (!includes(targets, target)) {\n if (observer.unobserve) {\n observer.unobserve(target);\n } else if (observer.observe) {\n observer.disconnect();\n }\n }\n }\n for (const target of targets) {\n if (!includes(prev, target) || !observer.unobserve) {\n observer.observe(target, options);\n }\n }\n };\n }\n\n function initProps(instance) {\n const { $options, $props } = instance;\n const props = getProps($options);\n assign($props, props);\n const { computed, methods } = $options;\n for (let key in $props) {\n if (key in props && (!computed || !hasOwn(computed, key)) && (!methods || !hasOwn(methods, key))) {\n instance[key] = $props[key];\n }\n }\n }\n function getProps(opts) {\n const data$1 = {};\n const { args = [], props = {}, el, id } = opts;\n if (!props) {\n return data$1;\n }\n for (const key in props) {\n const prop = hyphenate(key);\n let value = data(el, prop);\n if (isUndefined(value)) {\n continue;\n }\n value = props[key] === Boolean && value === \"\" ? true : coerce$1(props[key], value);\n if (prop === \"target\" && startsWith(value, \"_\")) {\n continue;\n }\n data$1[key] = value;\n }\n const options = parseOptions(data(el, id), args);\n for (const key in options) {\n const prop = camelize(key);\n if (!isUndefined(props[prop])) {\n data$1[prop] = coerce$1(props[prop], options[key]);\n }\n }\n return data$1;\n }\n const getAttributes = memoize((id, props) => {\n const attributes = Object.keys(props);\n const filter = attributes.concat(id).map((key) => [hyphenate(key), `data-${hyphenate(key)}`]).flat();\n return { attributes, filter };\n });\n function initPropsObserver(instance) {\n const { $options, $props } = instance;\n const { id, props, el } = $options;\n if (!props) {\n return;\n }\n const { attributes, filter } = getAttributes(id, props);\n const observer = new MutationObserver((records) => {\n const data = getProps($options);\n if (records.some(({ attributeName }) => {\n const prop = attributeName.replace(\"data-\", \"\");\n return (prop === id ? attributes : [camelize(prop), camelize(attributeName)]).some(\n (prop2) => !isUndefined(data[prop2]) && data[prop2] !== $props[prop2]\n );\n })) {\n instance.$reset();\n }\n });\n observer.observe(el, {\n attributes: true,\n attributeFilter: filter\n });\n instance._disconnect.push(() => observer.disconnect());\n }\n\n function callHook(instance, hook) {\n var _a;\n (_a = instance.$options[hook]) == null ? void 0 : _a.forEach((handler) => handler.call(instance));\n }\n function callConnected(instance) {\n if (instance._connected) {\n return;\n }\n initProps(instance);\n callHook(instance, \"beforeConnect\");\n instance._connected = true;\n instance._disconnect = [];\n initEvents(instance);\n initUpdates(instance);\n initWatches(instance);\n initObservers(instance);\n initPropsObserver(instance);\n initComputedUpdates(instance);\n callHook(instance, \"connected\");\n callUpdate(instance);\n }\n function callDisconnected(instance) {\n if (!instance._connected) {\n return;\n }\n callHook(instance, \"beforeDisconnect\");\n instance._disconnect.forEach((off) => off());\n instance._disconnect = null;\n callHook(instance, \"disconnected\");\n instance._connected = false;\n }\n\n let uid = 0;\n function init$1(instance, options = {}) {\n options.data = normalizeData(options, instance.constructor.options);\n instance.$options = mergeOptions(instance.constructor.options, options, instance);\n instance.$props = {};\n instance._uid = uid++;\n initData(instance);\n initMethods(instance);\n initComputed(instance);\n callHook(instance, \"created\");\n if (options.el) {\n instance.$mount(options.el);\n }\n }\n function initData(instance) {\n const { data = {} } = instance.$options;\n for (const key in data) {\n instance.$props[key] = instance[key] = data[key];\n }\n }\n function initMethods(instance) {\n const { methods } = instance.$options;\n if (methods) {\n for (const key in methods) {\n instance[key] = methods[key].bind(instance);\n }\n }\n }\n function normalizeData({ data = {} }, { args = [], props = {} }) {\n if (isArray(data)) {\n data = data.slice(0, args.length).reduce((data2, value, index) => {\n if (isPlainObject(value)) {\n assign(data2, value);\n } else {\n data2[args[index]] = value;\n }\n return data2;\n }, {});\n }\n for (const key in data) {\n if (isUndefined(data[key])) {\n delete data[key];\n } else if (props[key]) {\n data[key] = coerce$1(props[key], data[key]);\n }\n }\n return data;\n }\n\n const App = function(options) {\n init$1(this, options);\n };\n App.util = util;\n App.options = {};\n App.version = \"3.21.14\";\n\n const PREFIX = \"uk-\";\n const DATA = \"__uikit__\";\n const components$2 = {};\n function component(name, options) {\n var _a, _b;\n const id = PREFIX + hyphenate(name);\n if (!options) {\n if (!components$2[id].options) {\n components$2[id] = App.extend(components$2[id]);\n }\n return components$2[id];\n }\n name = camelize(name);\n App[name] = (element, data) => createComponent(name, element, data);\n const opt = (_a = options.options) != null ? _a : { ...options };\n opt.id = id;\n opt.name = name;\n (_b = opt.install) == null ? void 0 : _b.call(opt, App, opt, name);\n if (App._initialized && !opt.functional) {\n requestAnimationFrame(() => createComponent(name, `[${id}],[data-${id}]`));\n }\n return components$2[id] = opt;\n }\n function createComponent(name, element, data, ...args) {\n const Component = component(name);\n return Component.options.functional ? new Component({ data: isPlainObject(element) ? element : [element, data, ...args] }) : element ? $$(element).map(init)[0] : init();\n function init(element2) {\n const instance = getComponent(element2, name);\n if (instance) {\n if (data) {\n instance.$destroy();\n } else {\n return instance;\n }\n }\n return new Component({ el: element2, data });\n }\n }\n function getComponents(element) {\n return (element == null ? void 0 : element[DATA]) || {};\n }\n function getComponent(element, name) {\n return getComponents(element)[name];\n }\n function attachToElement(element, instance) {\n if (!element[DATA]) {\n element[DATA] = {};\n }\n element[DATA][instance.$options.name] = instance;\n }\n function detachFromElement(element, instance) {\n var _a;\n (_a = element[DATA]) == null ? true : delete _a[instance.$options.name];\n if (isEmpty(element[DATA])) {\n delete element[DATA];\n }\n }\n\n function globalApi(App) {\n App.component = component;\n App.getComponents = getComponents;\n App.getComponent = getComponent;\n App.update = update;\n App.use = function(plugin) {\n if (plugin.installed) {\n return;\n }\n plugin.call(null, this);\n plugin.installed = true;\n return this;\n };\n App.mixin = function(mixin, component2) {\n component2 = (isString(component2) ? this.component(component2) : component2) || this;\n component2.options = mergeOptions(component2.options, mixin);\n };\n App.extend = function(options) {\n options || (options = {});\n const Super = this;\n const Sub = function UIkitComponent(options2) {\n init$1(this, options2);\n };\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.options = mergeOptions(Super.options, options);\n Sub.super = Super;\n Sub.extend = Super.extend;\n return Sub;\n };\n let container;\n Object.defineProperty(App, \"container\", {\n get() {\n return container || document.body;\n },\n set(element) {\n container = $(element);\n }\n });\n }\n function update(element, e) {\n element = element ? toNode(element) : document.body;\n for (const parentEl of parents(element).reverse()) {\n updateElement(parentEl, e);\n }\n apply(element, (element2) => updateElement(element2, e));\n }\n function updateElement(element, e) {\n const components = getComponents(element);\n for (const name in components) {\n callUpdate(components[name], e);\n }\n }\n\n function instanceApi(App) {\n App.prototype.$mount = function(el) {\n const instance = this;\n attachToElement(el, instance);\n instance.$options.el = el;\n if (el.isConnected) {\n callConnected(instance);\n }\n };\n App.prototype.$destroy = function(removeEl = false) {\n const instance = this;\n const { el } = instance.$options;\n if (el) {\n callDisconnected(instance);\n }\n callHook(instance, \"destroy\");\n detachFromElement(el, instance);\n if (removeEl) {\n remove$1(instance.$el);\n }\n };\n App.prototype.$create = createComponent;\n App.prototype.$emit = function(e) {\n callUpdate(this, e);\n };\n App.prototype.$update = function(element = this.$el, e) {\n update(element, e);\n };\n App.prototype.$reset = function() {\n callDisconnected(this);\n callConnected(this);\n };\n App.prototype.$getComponent = getComponent;\n Object.defineProperties(App.prototype, {\n $el: {\n get() {\n return this.$options.el;\n }\n },\n $container: Object.getOwnPropertyDescriptor(App, \"container\")\n });\n }\n let id = 1;\n function generateId(instance, el = null) {\n return (el == null ? void 0 : el.id) || `${instance.$options.id}-${id++}`;\n }\n\n var SliderNav = {\n i18n: {\n next: \"Next slide\",\n previous: \"Previous slide\",\n slideX: \"Slide %s\",\n slideLabel: \"%s of %s\",\n role: \"String\"\n },\n data: {\n selNav: false,\n role: \"region\"\n },\n computed: {\n nav: ({ selNav }, $el) => $(selNav, $el),\n navChildren() {\n return children(this.nav);\n },\n selNavItem: ({ attrItem }) => `[${attrItem}],[data-${attrItem}]`,\n navItems(_, $el) {\n return $$(this.selNavItem, $el);\n }\n },\n watch: {\n nav(nav, prev) {\n attr(nav, \"role\", \"tablist\");\n this.padNavitems();\n if (prev) {\n this.$emit();\n }\n },\n list(list) {\n if (isTag(list, \"ul\")) {\n attr(list, \"role\", \"presentation\");\n }\n },\n navChildren(children2) {\n attr(children2, \"role\", \"presentation\");\n this.padNavitems();\n this.updateNav();\n },\n navItems(items) {\n for (const el of items) {\n const cmd = data(el, this.attrItem);\n const button = $(\"a,button\", el) || el;\n let ariaLabel;\n let ariaControls = null;\n if (isNumeric(cmd)) {\n const item = toNumber(cmd);\n const slide = this.slides[item];\n if (slide) {\n if (!slide.id) {\n slide.id = generateId(this, slide);\n }\n ariaControls = slide.id;\n }\n ariaLabel = this.t(\"slideX\", toFloat(cmd) + 1);\n attr(button, \"role\", \"tab\");\n } else {\n if (this.list) {\n if (!this.list.id) {\n this.list.id = generateId(this, this.list);\n }\n ariaControls = this.list.id;\n }\n ariaLabel = this.t(cmd);\n }\n attr(button, {\n \"aria-controls\": ariaControls,\n \"aria-label\": attr(button, \"aria-label\") || ariaLabel\n });\n }\n },\n slides(slides) {\n slides.forEach(\n (slide, i) => attr(slide, {\n role: this.nav ? \"tabpanel\" : \"group\",\n \"aria-label\": this.t(\"slideLabel\", i + 1, this.length),\n \"aria-roledescription\": this.nav ? null : \"slide\"\n })\n );\n this.padNavitems();\n }\n },\n connected() {\n attr(this.$el, {\n role: this.role,\n \"aria-roledescription\": \"carousel\"\n });\n },\n update: [\n {\n write() {\n this.navItems.concat(this.nav).forEach((el) => el && (el.hidden = !this.maxIndex));\n this.updateNav();\n },\n events: [\"resize\"]\n }\n ],\n events: [\n {\n name: \"click keydown\",\n delegate: ({ selNavItem }) => selNavItem,\n filter: ({ parallax }) => !parallax,\n handler(e) {\n if (e.target.closest(\"a,button\") && (e.type === \"click\" || e.keyCode === keyMap.SPACE)) {\n e.preventDefault();\n this.show(data(e.current, this.attrItem));\n }\n }\n },\n {\n name: \"itemshow\",\n handler() {\n this.updateNav();\n }\n },\n {\n name: \"keydown\",\n delegate: ({ selNavItem }) => selNavItem,\n filter: ({ parallax }) => !parallax,\n handler(e) {\n const { current, keyCode } = e;\n const cmd = data(current, this.attrItem);\n if (!isNumeric(cmd)) {\n return;\n }\n let i = keyCode === keyMap.HOME ? 0 : keyCode === keyMap.END ? \"last\" : keyCode === keyMap.LEFT ? \"previous\" : keyCode === keyMap.RIGHT ? \"next\" : -1;\n if (~i) {\n e.preventDefault();\n this.show(i);\n }\n }\n }\n ],\n methods: {\n updateNav() {\n const index = this.getValidIndex();\n for (const el of this.navItems) {\n const cmd = data(el, this.attrItem);\n const button = $(\"a,button\", el) || el;\n if (isNumeric(cmd)) {\n const item = toNumber(cmd);\n const active = item === index;\n toggleClass(el, this.clsActive, active);\n toggleClass(button, \"uk-disabled\", this.parallax);\n attr(button, {\n \"aria-selected\": active,\n tabindex: active && !this.parallax ? null : -1\n });\n if (active && button && matches(parent(el), \":focus-within\")) {\n button.focus();\n }\n } else {\n toggleClass(\n el,\n \"uk-invisible\",\n this.finite && (cmd === \"previous\" && index === 0 || cmd === \"next\" && index >= this.maxIndex)\n );\n }\n }\n },\n padNavitems() {\n if (!this.nav) {\n return;\n }\n const children2 = [];\n for (let i = 0; i < this.length; i++) {\n const attr2 = `${this.attrItem}=\"${i}\"`;\n children2[i] = this.navChildren.findLast((el) => el.matches(`[${attr2}]`)) || $(`
  • `);\n }\n if (!isEqual(children2, this.navChildren)) {\n html(this.nav, children2);\n }\n }\n }\n };\n\n const easeOutQuad = \"cubic-bezier(0.25, 0.46, 0.45, 0.94)\";\n const easeOutQuart = \"cubic-bezier(0.165, 0.84, 0.44, 1)\";\n var Slider = {\n mixins: [SliderAutoplay, SliderDrag, SliderNav, I18n],\n props: {\n clsActivated: String,\n easing: String,\n index: Number,\n finite: Boolean,\n velocity: Number\n },\n data: () => ({\n easing: \"ease\",\n finite: false,\n velocity: 1,\n index: 0,\n prevIndex: -1,\n stack: [],\n percent: 0,\n clsActive: \"uk-active\",\n clsActivated: \"\",\n clsEnter: \"uk-slide-enter\",\n clsLeave: \"uk-slide-leave\",\n clsSlideActive: \"uk-slide-active\",\n Transitioner: false,\n transitionOptions: {}\n }),\n connected() {\n this.prevIndex = -1;\n this.index = this.getValidIndex(this.$props.index);\n this.stack = [];\n },\n disconnected() {\n removeClass(this.slides, this.clsActive);\n },\n computed: {\n duration: ({ velocity }, $el) => speedUp($el.offsetWidth / velocity),\n list: ({ selList }, $el) => $(selList, $el),\n maxIndex() {\n return this.length - 1;\n },\n slides() {\n return children(this.list);\n },\n length() {\n return this.slides.length;\n }\n },\n watch: {\n slides(slides, prev) {\n if (prev) {\n this.$emit();\n }\n }\n },\n events: {\n itemshow({ target }) {\n addClass(target, this.clsEnter, this.clsSlideActive);\n },\n itemshown({ target }) {\n removeClass(target, this.clsEnter);\n },\n itemhide({ target }) {\n addClass(target, this.clsLeave);\n },\n itemhidden({ target }) {\n removeClass(target, this.clsLeave, this.clsSlideActive);\n }\n },\n methods: {\n async show(index, force = false) {\n var _a;\n if (this.dragging || !this.length || this.parallax) {\n return;\n }\n const { stack } = this;\n const queueIndex = force ? 0 : stack.length;\n const reset = () => {\n stack.splice(queueIndex, 1);\n if (stack.length) {\n this.show(stack.shift(), true);\n }\n };\n stack[force ? \"unshift\" : \"push\"](index);\n if (!force && stack.length > 1) {\n if (stack.length === 2) {\n (_a = this._transitioner) == null ? void 0 : _a.forward(Math.min(this.duration, 200));\n }\n return;\n }\n const prevIndex = this.getIndex(this.index);\n const prev = hasClass(this.slides, this.clsActive) && this.slides[prevIndex];\n const nextIndex = this.getIndex(index, this.index);\n const next = this.slides[nextIndex];\n if (prev === next) {\n reset();\n return;\n }\n this.dir = getDirection(index, prevIndex);\n this.prevIndex = prevIndex;\n this.index = nextIndex;\n if (prev && !trigger(prev, \"beforeitemhide\", [this]) || !trigger(next, \"beforeitemshow\", [this, prev])) {\n this.index = this.prevIndex;\n reset();\n return;\n }\n prev && trigger(prev, \"itemhide\", [this]);\n trigger(next, \"itemshow\", [this]);\n await this._show(prev, next, force);\n prev && trigger(prev, \"itemhidden\", [this]);\n trigger(next, \"itemshown\", [this]);\n stack.shift();\n this._transitioner = null;\n if (stack.length) {\n requestAnimationFrame(() => stack.length && this.show(stack.shift(), true));\n }\n },\n getIndex(index = this.index, prev = this.index) {\n return clamp(\n getIndex(index, this.slides, prev, this.finite),\n 0,\n Math.max(0, this.maxIndex)\n );\n },\n getValidIndex(index = this.index, prevIndex = this.prevIndex) {\n return this.getIndex(index, prevIndex);\n },\n async _show(prev, next, force) {\n this._transitioner = this._getTransitioner(prev, next, this.dir, {\n easing: force ? next.offsetWidth < 600 ? easeOutQuad : easeOutQuart : this.easing,\n ...this.transitionOptions\n });\n if (!force && !prev) {\n this._translate(1);\n return;\n }\n const { length } = this.stack;\n return this._transitioner[length > 1 ? \"forward\" : \"show\"](\n length > 1 ? Math.min(this.duration, 75 + 75 / (length - 1)) : this.duration,\n this.percent\n );\n },\n _translate(percent, prev = this.prevIndex, next = this.index) {\n const transitioner = this._getTransitioner(prev === next ? false : prev, next);\n transitioner.translate(percent);\n return transitioner;\n },\n _getTransitioner(prev = this.prevIndex, next = this.index, dir = this.dir || 1, options = this.transitionOptions) {\n return new this.Transitioner(\n isNumber(prev) ? this.slides[prev] : prev,\n isNumber(next) ? this.slides[next] : next,\n dir * (isRtl ? -1 : 1),\n options\n );\n }\n }\n };\n function getDirection(index, prevIndex) {\n return index === \"next\" ? 1 : index === \"previous\" ? -1 : index < prevIndex ? -1 : 1;\n }\n function speedUp(x) {\n return 0.5 * x + 300;\n }\n\n var Slideshow = {\n mixins: [Slider],\n props: {\n animation: String\n },\n data: {\n animation: \"slide\",\n clsActivated: \"uk-transition-active\",\n Animations: Animations$2,\n Transitioner: Transitioner$1\n },\n computed: {\n animation({ animation, Animations: Animations2 }) {\n return { ...Animations2[animation] || Animations2.slide, name: animation };\n },\n transitionOptions() {\n return { animation: this.animation };\n }\n },\n observe: resize(),\n events: {\n itemshow({ target }) {\n addClass(target, this.clsActive);\n },\n itemshown({ target }) {\n addClass(target, this.clsActivated);\n },\n itemhidden({ target }) {\n removeClass(target, this.clsActive, this.clsActivated);\n }\n }\n };\n\n var Animations$1 = {\n ...Animations$2,\n fade: {\n show() {\n return [{ opacity: 0, zIndex: 0 }, { zIndex: -1 }];\n },\n percent(current) {\n return 1 - css(current, \"opacity\");\n },\n translate(percent) {\n return [{ opacity: 1 - percent, zIndex: 0 }, { zIndex: -1 }];\n }\n },\n scale: {\n show() {\n return [{ opacity: 0, transform: scale3d(1 + 0.5), zIndex: 0 }, { zIndex: -1 }];\n },\n percent(current) {\n return 1 - css(current, \"opacity\");\n },\n translate(percent) {\n return [\n { opacity: 1 - percent, transform: scale3d(1 + 0.5 * percent), zIndex: 0 },\n { zIndex: -1 }\n ];\n }\n },\n pull: {\n show(dir) {\n return dir < 0 ? [\n { transform: translate(30), zIndex: -1 },\n { transform: translate(), zIndex: 0 }\n ] : [\n { transform: translate(-100), zIndex: 0 },\n { transform: translate(), zIndex: -1 }\n ];\n },\n percent(current, next, dir) {\n return dir < 0 ? 1 - translated(next) : translated(current);\n },\n translate(percent, dir) {\n return dir < 0 ? [\n { transform: translate(30 * percent), zIndex: -1 },\n { transform: translate(-100 * (1 - percent)), zIndex: 0 }\n ] : [\n { transform: translate(-percent * 100), zIndex: 0 },\n { transform: translate(30 * (1 - percent)), zIndex: -1 }\n ];\n }\n },\n push: {\n show(dir) {\n return dir < 0 ? [\n { transform: translate(100), zIndex: 0 },\n { transform: translate(), zIndex: -1 }\n ] : [\n { transform: translate(-30), zIndex: -1 },\n { transform: translate(), zIndex: 0 }\n ];\n },\n percent(current, next, dir) {\n return dir > 0 ? 1 - translated(next) : translated(current);\n },\n translate(percent, dir) {\n return dir < 0 ? [\n { transform: translate(percent * 100), zIndex: 0 },\n { transform: translate(-30 * (1 - percent)), zIndex: -1 }\n ] : [\n { transform: translate(-30 * percent), zIndex: -1 },\n { transform: translate(100 * (1 - percent)), zIndex: 0 }\n ];\n }\n }\n };\n function scale3d(value) {\n return `scale3d(${value}, ${value}, 1)`;\n }\n\n var Animations = {\n ...Animations$2,\n fade: {\n show() {\n return [{ opacity: 0 }, { opacity: 1 }];\n },\n percent(current) {\n return 1 - css(current, \"opacity\");\n },\n translate(percent) {\n return [{ opacity: 1 - percent }, { opacity: percent }];\n }\n },\n scale: {\n show() {\n return [\n { opacity: 0, transform: scale3d(1 - 0.2) },\n { opacity: 1, transform: scale3d(1) }\n ];\n },\n percent(current) {\n return 1 - css(current, \"opacity\");\n },\n translate(percent) {\n return [\n { opacity: 1 - percent, transform: scale3d(1 - 0.2 * percent) },\n { opacity: percent, transform: scale3d(1 - 0.2 + 0.2 * percent) }\n ];\n }\n }\n };\n\n var LightboxPanel = {\n mixins: [Modal, Slideshow],\n functional: true,\n props: {\n delayControls: Number,\n preload: Number,\n videoAutoplay: Boolean,\n template: String\n },\n data: () => ({\n preload: 1,\n videoAutoplay: false,\n delayControls: 3e3,\n items: [],\n cls: \"uk-open\",\n clsPage: \"uk-lightbox-page\",\n selList: \".uk-lightbox-items\",\n attrItem: \"uk-lightbox-item\",\n selClose: \".uk-close-large\",\n selCaption: \".uk-lightbox-caption\",\n pauseOnHover: false,\n velocity: 2,\n Animations,\n template: `
    `\n }),\n created() {\n const $el = $(this.template);\n const list = $(this.selList, $el);\n this.items.forEach(() => append(list, \"
    \"));\n const close = $(\"[uk-close]\", $el);\n const closeLabel = this.t(\"close\");\n if (close && closeLabel) {\n close.dataset.i18n = JSON.stringify({ label: closeLabel });\n }\n this.$mount(append(this.container, $el));\n },\n events: [\n {\n name: `${pointerMove$1} ${pointerDown$1} keydown`,\n handler() {\n this.showControls();\n }\n },\n {\n name: \"click\",\n self: true,\n delegate: ({ selList }) => `${selList} > *`,\n handler(e) {\n if (!e.defaultPrevented) {\n this.hide();\n }\n }\n },\n {\n name: \"shown\",\n self: true,\n handler() {\n this.showControls();\n }\n },\n {\n name: \"hide\",\n self: true,\n handler() {\n this.hideControls();\n removeClass(this.slides, this.clsActive);\n Transition.stop(this.slides);\n }\n },\n {\n name: \"hidden\",\n self: true,\n handler() {\n this.$destroy(true);\n }\n },\n {\n name: \"keyup\",\n el: () => document,\n handler({ keyCode }) {\n if (!this.isToggled(this.$el) || !this.draggable) {\n return;\n }\n let i = -1;\n if (keyCode === keyMap.LEFT) {\n i = \"previous\";\n } else if (keyCode === keyMap.RIGHT) {\n i = \"next\";\n } else if (keyCode === keyMap.HOME) {\n i = 0;\n } else if (keyCode === keyMap.END) {\n i = \"last\";\n }\n if (~i) {\n this.show(i);\n }\n }\n },\n {\n name: \"beforeitemshow\",\n handler(e) {\n if (this.isToggled()) {\n return;\n }\n this.draggable = false;\n e.preventDefault();\n this.toggleElement(this.$el, true, false);\n this.animation = Animations[\"scale\"];\n removeClass(e.target, this.clsActive);\n this.stack.splice(1, 0, this.index);\n }\n },\n {\n name: \"itemshow\",\n handler() {\n html($(this.selCaption, this.$el), this.getItem().caption || \"\");\n for (let j = -this.preload; j <= this.preload; j++) {\n this.loadItem(this.index + j);\n }\n }\n },\n {\n name: \"itemshown\",\n handler() {\n this.draggable = this.$props.draggable;\n }\n },\n {\n name: \"itemload\",\n async handler(_, item) {\n const { source: src, type, alt = \"\", poster, attrs = {} } = item;\n this.setItem(item, \"\");\n if (!src) {\n return;\n }\n let matches;\n const iframeAttrs = {\n allowfullscreen: \"\",\n style: \"max-width: 100%; box-sizing: border-box;\",\n \"uk-responsive\": \"\",\n \"uk-video\": `${this.videoAutoplay}`\n };\n if (type === \"image\" || src.match(/\\.(avif|jpe?g|jfif|a?png|gif|svg|webp)($|\\?)/i)) {\n const img = createEl(\"img\", { src, alt, ...attrs });\n on(img, \"load\", () => this.setItem(item, img));\n on(img, \"error\", () => this.setError(item));\n } else if (type === \"video\" || src.match(/\\.(mp4|webm|ogv)($|\\?)/i)) {\n const video = createEl(\"video\", {\n src,\n poster,\n controls: \"\",\n playsinline: \"\",\n \"uk-video\": `${this.videoAutoplay}`,\n ...attrs\n });\n on(video, \"loadedmetadata\", () => this.setItem(item, video));\n on(video, \"error\", () => this.setError(item));\n } else if (type === \"iframe\" || src.match(/\\.(html|php)($|\\?)/i)) {\n this.setItem(\n item,\n createEl(\"iframe\", {\n src,\n allowfullscreen: \"\",\n class: \"uk-lightbox-iframe\",\n ...attrs\n })\n );\n } else if (matches = src.match(\n /\\/\\/(?:.*?youtube(-nocookie)?\\..*?(?:[?&]v=|\\/shorts\\/)|youtu\\.be\\/)([\\w-]{11})[&?]?(.*)?/\n )) {\n this.setItem(\n item,\n createEl(\"iframe\", {\n src: `https://www.youtube${matches[1] || \"\"}.com/embed/${matches[2]}${matches[3] ? `?${matches[3]}` : \"\"}`,\n width: 1920,\n height: 1080,\n ...iframeAttrs,\n ...attrs\n })\n );\n } else if (matches = src.match(/\\/\\/.*?vimeo\\.[a-z]+\\/(\\d+)[&?]?(.*)?/)) {\n try {\n const { height, width } = await (await fetch(\n `https://vimeo.com/api/oembed.json?maxwidth=1920&url=${encodeURI(\n src\n )}`,\n { credentials: \"omit\" }\n )).json();\n this.setItem(\n item,\n createEl(\"iframe\", {\n src: `https://player.vimeo.com/video/${matches[1]}${matches[2] ? `?${matches[2]}` : \"\"}`,\n width,\n height,\n ...iframeAttrs,\n ...attrs\n })\n );\n } catch (e) {\n this.setError(item);\n }\n }\n }\n }\n ],\n methods: {\n loadItem(index = this.index) {\n const item = this.getItem(index);\n if (!this.getSlide(item).childElementCount) {\n trigger(this.$el, \"itemload\", [item]);\n }\n },\n getItem(index = this.index) {\n return this.items[getIndex(index, this.slides)];\n },\n setItem(item, content) {\n trigger(this.$el, \"itemloaded\", [this, html(this.getSlide(item), content)]);\n },\n getSlide(item) {\n return this.slides[this.items.indexOf(item)];\n },\n setError(item) {\n this.setItem(item, '');\n },\n showControls() {\n clearTimeout(this.controlsTimer);\n this.controlsTimer = setTimeout(this.hideControls, this.delayControls);\n addClass(this.$el, \"uk-active\", \"uk-transition-active\");\n },\n hideControls() {\n removeClass(this.$el, \"uk-active\", \"uk-transition-active\");\n }\n }\n };\n function createEl(tag, attrs) {\n const el = fragment(`<${tag}>`);\n attr(el, attrs);\n return el;\n }\n\n var lightbox = {\n install: install$3,\n props: { toggle: String },\n data: { toggle: \"a\" },\n computed: {\n toggles: ({ toggle }, $el) => $$(toggle, $el)\n },\n watch: {\n toggles(toggles) {\n this.hide();\n for (const toggle of toggles) {\n if (isTag(toggle, \"a\")) {\n attr(toggle, \"role\", \"button\");\n }\n }\n }\n },\n disconnected() {\n this.hide();\n },\n events: {\n name: \"click\",\n delegate: ({ toggle }) => `${toggle}:not(.uk-disabled)`,\n handler(e) {\n if (!e.defaultPrevented) {\n e.preventDefault();\n this.show(e.current);\n }\n }\n },\n methods: {\n show(index) {\n const items = uniqueBy(this.toggles.map(toItem), \"source\");\n if (isElement(index)) {\n const { source } = toItem(index);\n index = findIndex(items, ({ source: src }) => source === src);\n }\n this.panel = this.panel || this.$create(\"lightboxPanel\", { ...this.$props, items });\n on(this.panel.$el, \"hidden\", () => this.panel = null);\n return this.panel.show(index);\n },\n hide() {\n var _a;\n return (_a = this.panel) == null ? void 0 : _a.hide();\n }\n }\n };\n function install$3(UIkit, Lightbox) {\n if (!UIkit.lightboxPanel) {\n UIkit.component(\"lightboxPanel\", LightboxPanel);\n }\n assign(Lightbox.props, UIkit.component(\"lightboxPanel\").options.props);\n }\n function toItem(el) {\n const item = {};\n for (const attr2 of [\"href\", \"caption\", \"type\", \"poster\", \"alt\", \"attrs\"]) {\n item[attr2 === \"href\" ? \"source\" : attr2] = data(el, attr2);\n }\n item.attrs = parseOptions(item.attrs);\n return item;\n }\n\n var notification = {\n mixins: [Container],\n functional: true,\n args: [\"message\", \"status\"],\n data: {\n message: \"\",\n status: \"\",\n timeout: 5e3,\n group: \"\",\n pos: \"top-center\",\n clsContainer: \"uk-notification\",\n clsClose: \"uk-notification-close\",\n clsMsg: \"uk-notification-message\"\n },\n install: install$2,\n computed: {\n marginProp: ({ pos }) => `margin-${pos.match(/[a-z]+(?=-)/)[0]}`,\n startProps() {\n return { opacity: 0, [this.marginProp]: -this.$el.offsetHeight };\n }\n },\n created() {\n const posClass = `${this.clsContainer}-${this.pos}`;\n const containerAttr = `data-${this.clsContainer}-container`;\n const container = $(`.${posClass}[${containerAttr}]`, this.container) || append(\n this.container,\n `
    `\n );\n this.$mount(\n append(\n container,\n `
    ${this.message}
    `\n )\n );\n },\n async connected() {\n const margin = toFloat(css(this.$el, this.marginProp));\n await Transition.start(css(this.$el, this.startProps), {\n opacity: 1,\n [this.marginProp]: margin\n });\n if (this.timeout) {\n this.timer = setTimeout(this.close, this.timeout);\n }\n },\n events: {\n click(e) {\n if (e.target.closest('a[href=\"#\"],a[href=\"\"]')) {\n e.preventDefault();\n }\n this.close();\n },\n [pointerEnter]() {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n },\n [pointerLeave]() {\n if (this.timeout) {\n this.timer = setTimeout(this.close, this.timeout);\n }\n }\n },\n methods: {\n async close(immediate) {\n const removeFn = (el) => {\n const container = parent(el);\n trigger(el, \"close\", [this]);\n remove$1(el);\n if (!(container == null ? void 0 : container.hasChildNodes())) {\n remove$1(container);\n }\n };\n if (this.timer) {\n clearTimeout(this.timer);\n }\n if (!immediate) {\n await Transition.start(this.$el, this.startProps);\n }\n removeFn(this.$el);\n }\n }\n };\n function install$2(UIkit) {\n UIkit.notification.closeAll = function(group, immediate) {\n apply(document.body, (el) => {\n const notification = UIkit.getComponent(el, \"notification\");\n if (notification && (!group || group === notification.group)) {\n notification.close(immediate);\n }\n });\n };\n }\n\n var Media = {\n props: {\n media: Boolean\n },\n data: {\n media: false\n },\n connected() {\n const media = toMedia(this.media, this.$el);\n this.matchMedia = true;\n if (media) {\n this.mediaObj = window.matchMedia(media);\n const handler = () => {\n this.matchMedia = this.mediaObj.matches;\n trigger(this.$el, createEvent(\"mediachange\", false, true, [this.mediaObj]));\n };\n this.offMediaObj = on(this.mediaObj, \"change\", () => {\n handler();\n this.$emit(\"resize\");\n });\n handler();\n }\n },\n disconnected() {\n var _a;\n (_a = this.offMediaObj) == null ? void 0 : _a.call(this);\n }\n };\n function toMedia(value, element) {\n if (isString(value)) {\n if (startsWith(value, \"@\")) {\n value = toFloat(css(element, `--uk-breakpoint-${value.slice(1)}`));\n } else if (isNaN(value)) {\n return value;\n }\n }\n return value && isNumeric(value) ? `(min-width: ${value}px)` : \"\";\n }\n\n function getMaxPathLength(el) {\n return isVisible(el) ? Math.ceil(\n Math.max(0, ...$$(\"[stroke]\", el).map((stroke) => {\n var _a;\n return ((_a = stroke.getTotalLength) == null ? void 0 : _a.call(stroke)) || 0;\n }))\n ) : 0;\n }\n\n const props = {\n x: transformFn,\n y: transformFn,\n rotate: transformFn,\n scale: transformFn,\n color: colorFn,\n backgroundColor: colorFn,\n borderColor: colorFn,\n blur: filterFn,\n hue: filterFn,\n fopacity: filterFn,\n grayscale: filterFn,\n invert: filterFn,\n saturate: filterFn,\n sepia: filterFn,\n opacity: cssPropFn,\n stroke: strokeFn,\n bgx: backgroundFn,\n bgy: backgroundFn\n };\n const { keys } = Object;\n var Parallax = {\n mixins: [Media],\n props: fillObject(keys(props), \"list\"),\n data: fillObject(keys(props), void 0),\n computed: {\n props(properties, $el) {\n const stops = {};\n for (const prop in properties) {\n if (prop in props && !isUndefined(properties[prop])) {\n stops[prop] = properties[prop].slice();\n }\n }\n const result = {};\n for (const prop in stops) {\n result[prop] = props[prop](prop, $el, stops[prop], stops);\n }\n return result;\n }\n },\n events: {\n load() {\n this.$emit();\n }\n },\n methods: {\n reset() {\n for (const prop in this.getCss(0)) {\n css(this.$el, prop, \"\");\n }\n },\n getCss(percent) {\n const css2 = {};\n for (const prop in this.props) {\n this.props[prop](css2, clamp(percent));\n }\n css2.willChange = Object.keys(css2).map(propName).join(\",\");\n return css2;\n }\n }\n };\n function transformFn(prop, el, stops) {\n let unit = getUnit(stops) || { x: \"px\", y: \"px\", rotate: \"deg\" }[prop] || \"\";\n let transformFn2;\n if (prop === \"x\" || prop === \"y\") {\n prop = `translate${ucfirst(prop)}`;\n transformFn2 = (stop) => toFloat(toFloat(stop).toFixed(unit === \"px\" ? 0 : 6));\n } else if (prop === \"scale\") {\n unit = \"\";\n transformFn2 = (stop) => {\n var _a;\n return getUnit([stop]) ? toPx(stop, \"width\", el, true) / el[`offset${((_a = stop.endsWith) == null ? void 0 : _a.call(stop, \"vh\")) ? \"Height\" : \"Width\"}`] : toFloat(stop);\n };\n }\n if (stops.length === 1) {\n stops.unshift(prop === \"scale\" ? 1 : 0);\n }\n stops = parseStops(stops, transformFn2);\n return (css2, percent) => {\n css2.transform = `${css2.transform || \"\"} ${prop}(${getValue(stops, percent)}${unit})`;\n };\n }\n function colorFn(prop, el, stops) {\n if (stops.length === 1) {\n stops.unshift(getCssValue(el, prop, \"\"));\n }\n stops = parseStops(stops, (stop) => parseColor(el, stop));\n return (css2, percent) => {\n const [start, end, p] = getStop(stops, percent);\n const value = start.map((value2, i) => {\n value2 += p * (end[i] - value2);\n return i === 3 ? toFloat(value2) : parseInt(value2, 10);\n }).join(\",\");\n css2[prop] = `rgba(${value})`;\n };\n }\n function parseColor(el, color) {\n return getCssValue(el, \"color\", color).split(/[(),]/g).slice(1, -1).concat(1).slice(0, 4).map(toFloat);\n }\n function filterFn(prop, el, stops) {\n if (stops.length === 1) {\n stops.unshift(0);\n }\n const unit = getUnit(stops) || { blur: \"px\", hue: \"deg\" }[prop] || \"%\";\n prop = { fopacity: \"opacity\", hue: \"hue-rotate\" }[prop] || prop;\n stops = parseStops(stops);\n return (css2, percent) => {\n const value = getValue(stops, percent);\n css2.filter = `${css2.filter || \"\"} ${prop}(${value + unit})`;\n };\n }\n function cssPropFn(prop, el, stops) {\n if (stops.length === 1) {\n stops.unshift(getCssValue(el, prop, \"\"));\n }\n stops = parseStops(stops);\n return (css2, percent) => {\n css2[prop] = getValue(stops, percent);\n };\n }\n function strokeFn(prop, el, stops) {\n if (stops.length === 1) {\n stops.unshift(0);\n }\n const unit = getUnit(stops);\n const length = getMaxPathLength(el);\n stops = parseStops(stops.reverse(), (stop) => {\n stop = toFloat(stop);\n return unit === \"%\" ? stop * length / 100 : stop;\n });\n if (!stops.some(([value]) => value)) {\n return noop;\n }\n css(el, \"strokeDasharray\", length);\n return (css2, percent) => {\n css2.strokeDashoffset = getValue(stops, percent);\n };\n }\n function backgroundFn(prop, el, stops, props2) {\n if (stops.length === 1) {\n stops.unshift(0);\n }\n const attr = prop === \"bgy\" ? \"height\" : \"width\";\n props2[prop] = parseStops(stops, (stop) => toPx(stop, attr, el));\n const bgProps = [\"bgx\", \"bgy\"].filter((prop2) => prop2 in props2);\n if (bgProps.length === 2 && prop === \"bgx\") {\n return noop;\n }\n if (getCssValue(el, \"backgroundSize\", \"\") === \"cover\") {\n return backgroundCoverFn(prop, el, stops, props2);\n }\n const positions = {};\n for (const prop2 of bgProps) {\n positions[prop2] = getBackgroundPos(el, prop2);\n }\n return setBackgroundPosFn(bgProps, positions, props2);\n }\n function backgroundCoverFn(prop, el, stops, props2) {\n const dimImage = getBackgroundImageDimensions(el);\n if (!dimImage.width) {\n return noop;\n }\n const dimEl = {\n width: el.offsetWidth,\n height: el.offsetHeight\n };\n const bgProps = [\"bgx\", \"bgy\"].filter((prop2) => prop2 in props2);\n const positions = {};\n for (const prop2 of bgProps) {\n const values = props2[prop2].map(([value]) => value);\n const min = Math.min(...values);\n const max = Math.max(...values);\n const down = values.indexOf(min) < values.indexOf(max);\n const diff = max - min;\n positions[prop2] = `${(down ? -diff : 0) - (down ? min : max)}px`;\n dimEl[prop2 === \"bgy\" ? \"height\" : \"width\"] += diff;\n }\n const dim = Dimensions.cover(dimImage, dimEl);\n for (const prop2 of bgProps) {\n const attr = prop2 === \"bgy\" ? \"height\" : \"width\";\n const overflow = dim[attr] - dimEl[attr];\n positions[prop2] = `max(${getBackgroundPos(el, prop2)},-${overflow}px) + ${positions[prop2]}`;\n }\n const fn = setBackgroundPosFn(bgProps, positions, props2);\n return (css2, percent) => {\n fn(css2, percent);\n css2.backgroundSize = `${dim.width}px ${dim.height}px`;\n css2.backgroundRepeat = \"no-repeat\";\n };\n }\n function getBackgroundPos(el, prop) {\n return getCssValue(el, `background-position-${prop.slice(-1)}`, \"\");\n }\n function setBackgroundPosFn(bgProps, positions, props2) {\n return function(css2, percent) {\n for (const prop of bgProps) {\n const value = getValue(props2[prop], percent);\n css2[`background-position-${prop.slice(-1)}`] = `calc(${positions[prop]} + ${value}px)`;\n }\n };\n }\n const loading = {};\n const dimensions = {};\n function getBackgroundImageDimensions(el) {\n const src = css(el, \"backgroundImage\").replace(/^none|url\\([\"']?(.+?)[\"']?\\)$/, \"$1\");\n if (dimensions[src]) {\n return dimensions[src];\n }\n const image = new Image();\n if (src) {\n image.src = src;\n if (!image.naturalWidth && !loading[src]) {\n once(image, \"error load\", () => {\n dimensions[src] = toDimensions(image);\n trigger(el, createEvent(\"load\", false));\n });\n loading[src] = true;\n return toDimensions(image);\n }\n }\n return dimensions[src] = toDimensions(image);\n }\n function toDimensions(image) {\n return {\n width: image.naturalWidth,\n height: image.naturalHeight\n };\n }\n function parseStops(stops, fn = toFloat) {\n const result = [];\n const { length } = stops;\n let nullIndex = 0;\n for (let i = 0; i < length; i++) {\n let [value, percent] = isString(stops[i]) ? stops[i].trim().split(/ (?![^(]*\\))/) : [stops[i]];\n value = fn(value);\n percent = percent ? toFloat(percent) / 100 : null;\n if (i === 0) {\n if (percent === null) {\n percent = 0;\n } else if (percent) {\n result.push([value, 0]);\n }\n } else if (i === length - 1) {\n if (percent === null) {\n percent = 1;\n } else if (percent !== 1) {\n result.push([value, percent]);\n percent = 1;\n }\n }\n result.push([value, percent]);\n if (percent === null) {\n nullIndex++;\n } else if (nullIndex) {\n const leftPercent = result[i - nullIndex - 1][1];\n const p = (percent - leftPercent) / (nullIndex + 1);\n for (let j = nullIndex; j > 0; j--) {\n result[i - j][1] = leftPercent + p * (nullIndex - j + 1);\n }\n nullIndex = 0;\n }\n }\n return result;\n }\n function getStop(stops, percent) {\n const index = findIndex(stops.slice(1), ([, targetPercent]) => percent <= targetPercent) + 1;\n return [\n stops[index - 1][0],\n stops[index][0],\n (percent - stops[index - 1][1]) / (stops[index][1] - stops[index - 1][1])\n ];\n }\n function getValue(stops, percent) {\n const [start, end, p] = getStop(stops, percent);\n return start + Math.abs(start - end) * p * (start < end ? 1 : -1);\n }\n const unitRe = /^-?\\d+(?:\\.\\d+)?(\\S+)?/;\n function getUnit(stops, defaultUnit) {\n var _a;\n for (const stop of stops) {\n const match = (_a = stop.match) == null ? void 0 : _a.call(stop, unitRe);\n if (match) {\n return match[1];\n }\n }\n return defaultUnit;\n }\n function getCssValue(el, prop, value) {\n const prev = el.style[prop];\n const val = css(css(el, prop, value), prop);\n el.style[prop] = prev;\n return val;\n }\n function fillObject(keys2, value) {\n return keys2.reduce((data, prop) => {\n data[prop] = value;\n return data;\n }, {});\n }\n function ease(percent, easing) {\n return easing >= 0 ? Math.pow(percent, easing + 1) : 1 - Math.pow(1 - percent, 1 - easing);\n }\n\n var parallax = {\n mixins: [Parallax],\n props: {\n target: String,\n viewport: Number,\n // Deprecated\n easing: Number,\n start: String,\n end: String\n },\n data: {\n target: false,\n viewport: 1,\n easing: 1,\n start: 0,\n end: 0\n },\n computed: {\n target: ({ target }, $el) => getOffsetElement(target && query(target, $el) || $el),\n start({ start }) {\n return toPx(start, \"height\", this.target, true);\n },\n end({ end, viewport: viewport2 }) {\n return toPx(\n end || (viewport2 = (1 - viewport2) * 100) && `${viewport2}vh+${viewport2}%`,\n \"height\",\n this.target,\n true\n );\n }\n },\n observe: [\n viewport(),\n scroll$1({ target: ({ target }) => target }),\n resize({ target: ({ $el, target }) => [$el, target, scrollParent(target, true)] })\n ],\n update: {\n read({ percent }, types) {\n if (!types.has(\"scroll\")) {\n percent = false;\n }\n if (!isVisible(this.$el)) {\n return false;\n }\n if (!this.matchMedia) {\n return;\n }\n const prev = percent;\n percent = ease(scrolledOver(this.target, this.start, this.end), this.easing);\n return {\n percent,\n style: prev === percent ? false : this.getCss(percent)\n };\n },\n write({ style }) {\n if (!this.matchMedia) {\n this.reset();\n return;\n }\n style && css(this.$el, style);\n },\n events: [\"scroll\", \"resize\"]\n }\n };\n function getOffsetElement(el) {\n return el ? \"offsetTop\" in el ? el : getOffsetElement(parent(el)) : document.documentElement;\n }\n\n var SliderParallax = {\n props: {\n parallax: Boolean,\n parallaxTarget: Boolean,\n parallaxStart: String,\n parallaxEnd: String,\n parallaxEasing: Number\n },\n data: {\n parallax: false,\n parallaxTarget: false,\n parallaxStart: 0,\n parallaxEnd: 0,\n parallaxEasing: 0\n },\n observe: [\n resize({\n target: ({ $el, parallaxTarget }) => [$el, parallaxTarget],\n filter: ({ parallax }) => parallax\n }),\n scroll$1({ filter: ({ parallax }) => parallax })\n ],\n computed: {\n parallaxTarget({ parallaxTarget }, $el) {\n return parallaxTarget && query(parallaxTarget, $el) || this.list;\n }\n },\n update: {\n read() {\n if (!this.parallax) {\n return false;\n }\n const target = this.parallaxTarget;\n if (!target) {\n return false;\n }\n const start = toPx(this.parallaxStart, \"height\", target, true);\n const end = toPx(this.parallaxEnd, \"height\", target, true);\n const percent = ease(scrolledOver(target, start, end), this.parallaxEasing);\n return { parallax: this.getIndexAt(percent) };\n },\n write({ parallax }) {\n const [prevIndex, slidePercent] = parallax;\n const nextIndex = this.getValidIndex(prevIndex + Math.ceil(slidePercent));\n const prev = this.slides[prevIndex];\n const next = this.slides[nextIndex];\n const { triggerShow, triggerShown, triggerHide, triggerHidden } = useTriggers(this);\n if (~this.prevIndex) {\n for (const i of /* @__PURE__ */ new Set([this.index, this.prevIndex])) {\n if (!includes([nextIndex, prevIndex], i)) {\n triggerHide(this.slides[i]);\n triggerHidden(this.slides[i]);\n }\n }\n }\n const changed = this.prevIndex !== prevIndex || this.index !== nextIndex;\n this.dir = 1;\n this.prevIndex = prevIndex;\n this.index = nextIndex;\n if (prev !== next) {\n triggerHide(prev);\n }\n triggerShow(next);\n if (changed) {\n triggerShown(prev);\n }\n this._translate(prev === next ? 1 : slidePercent, prev, next);\n },\n events: [\"scroll\", \"resize\"]\n },\n methods: {\n getIndexAt(percent) {\n const index = percent * (this.length - 1);\n return [Math.floor(index), index % 1];\n }\n }\n };\n function useTriggers(cmp) {\n const { clsSlideActive, clsEnter, clsLeave } = cmp;\n return { triggerShow, triggerShown, triggerHide, triggerHidden };\n function triggerShow(el) {\n if (hasClass(el, clsLeave)) {\n triggerHide(el);\n triggerHidden(el);\n }\n if (!hasClass(el, clsSlideActive)) {\n trigger(el, \"beforeitemshow\", [cmp]);\n trigger(el, \"itemshow\", [cmp]);\n }\n }\n function triggerShown(el) {\n if (hasClass(el, clsEnter)) {\n trigger(el, \"itemshown\", [cmp]);\n }\n }\n function triggerHide(el) {\n if (!hasClass(el, clsSlideActive)) {\n triggerShow(el);\n }\n if (hasClass(el, clsEnter)) {\n triggerShown(el);\n }\n if (!hasClass(el, clsLeave)) {\n trigger(el, \"beforeitemhide\", [cmp]);\n trigger(el, \"itemhide\", [cmp]);\n }\n }\n function triggerHidden(el) {\n if (hasClass(el, clsLeave)) {\n trigger(el, \"itemhidden\", [cmp]);\n }\n }\n }\n\n var SliderReactive = {\n update: {\n write() {\n if (this.stack.length || this.dragging || this.parallax) {\n return;\n }\n const index = this.getValidIndex();\n if (!~this.prevIndex || this.index !== index) {\n this.show(index);\n } else {\n this._translate(1);\n }\n },\n events: [\"resize\"]\n }\n };\n\n var SliderPreload = {\n observe: lazyload({\n target: ({ slides }) => slides,\n targets: (instance) => instance.getAdjacentSlides()\n }),\n methods: {\n getAdjacentSlides() {\n return [1, -1].map((i) => this.slides[this.getIndex(this.index + i)]);\n }\n }\n };\n\n function Transitioner(prev, next, dir, { center, easing, list }) {\n const from = prev ? getLeft(prev, list, center) : getLeft(next, list, center) + dimensions$1(next).width * dir;\n const to = next ? getLeft(next, list, center) : from + dimensions$1(prev).width * dir * (isRtl ? -1 : 1);\n const { promise, resolve } = withResolvers();\n return {\n dir,\n show(duration, percent = 0, linear) {\n const timing = linear ? \"linear\" : easing;\n duration -= Math.round(duration * clamp(percent, -1, 1));\n css(list, \"transitionProperty\", \"none\");\n this.translate(percent);\n css(list, \"transitionProperty\", \"\");\n percent = prev ? percent : clamp(percent, 0, 1);\n triggerUpdate(this.getItemIn(), \"itemin\", { percent, duration, timing, dir });\n prev && triggerUpdate(this.getItemIn(true), \"itemout\", {\n percent: 1 - percent,\n duration,\n timing,\n dir\n });\n Transition.start(\n list,\n { transform: translate(-to * (isRtl ? -1 : 1), \"px\") },\n duration,\n timing\n ).then(resolve, noop);\n return promise;\n },\n cancel() {\n return Transition.cancel(list);\n },\n reset() {\n css(list, \"transform\", \"\");\n },\n async forward(duration, percent = this.percent()) {\n await this.cancel();\n return this.show(duration, percent, true);\n },\n translate(percent) {\n if (percent === this.percent()) {\n return;\n }\n const distance = this.getDistance() * dir * (isRtl ? -1 : 1);\n css(\n list,\n \"transform\",\n translate(\n clamp(\n -to + (distance - distance * percent),\n -getWidth(list),\n dimensions$1(list).width\n ) * (isRtl ? -1 : 1),\n \"px\"\n )\n );\n const actives = this.getActives();\n const itemIn = this.getItemIn();\n const itemOut = this.getItemIn(true);\n percent = prev ? clamp(percent, -1, 1) : 0;\n for (const slide of children(list)) {\n const isActive = includes(actives, slide);\n const isIn = slide === itemIn;\n const isOut = slide === itemOut;\n const translateIn = isIn || !isOut && (isActive || dir * (isRtl ? -1 : 1) === -1 ^ getElLeft(slide, list) > getElLeft(prev || next));\n triggerUpdate(slide, `itemtranslate${translateIn ? \"in\" : \"out\"}`, {\n dir,\n percent: isOut ? 1 - percent : isIn ? percent : isActive ? 1 : 0\n });\n }\n },\n percent() {\n return Math.abs(\n (new DOMMatrix(css(list, \"transform\")).m41 * (isRtl ? -1 : 1) + from) / (to - from)\n );\n },\n getDistance() {\n return Math.abs(to - from);\n },\n getItemIn(out = false) {\n let actives = this.getActives();\n let nextActives = inView(list, getLeft(next || prev, list, center));\n if (out) {\n const temp = actives;\n actives = nextActives;\n nextActives = temp;\n }\n return nextActives[findIndex(nextActives, (el) => !includes(actives, el))];\n },\n getActives() {\n return inView(list, getLeft(prev || next, list, center));\n }\n };\n }\n function getLeft(el, list, center) {\n const left = getElLeft(el, list);\n return center ? left - centerEl(el, list) : Math.min(left, getMax(list));\n }\n function getMax(list) {\n return Math.max(0, getWidth(list) - dimensions$1(list).width);\n }\n function getWidth(list, index) {\n return sumBy(children(list).slice(0, index), (el) => dimensions$1(el).width);\n }\n function centerEl(el, list) {\n return dimensions$1(list).width / 2 - dimensions$1(el).width / 2;\n }\n function getElLeft(el, list) {\n return el && (position(el).left + (isRtl ? dimensions$1(el).width - dimensions$1(list).width : 0)) * (isRtl ? -1 : 1) || 0;\n }\n function inView(list, listLeft) {\n listLeft -= 1;\n const listWidth = dimensions$1(list).width;\n const listRight = listLeft + listWidth + 2;\n return children(list).filter((slide) => {\n const slideLeft = getElLeft(slide, list);\n const slideRight = slideLeft + Math.min(dimensions$1(slide).width, listWidth);\n return slideLeft >= listLeft && slideRight <= listRight;\n });\n }\n\n var slider = {\n mixins: [Class, Slider, SliderReactive, SliderParallax, SliderPreload],\n props: {\n center: Boolean,\n sets: Boolean,\n active: String\n },\n data: {\n center: false,\n sets: false,\n attrItem: \"uk-slider-item\",\n selList: \".uk-slider-items\",\n selNav: \".uk-slider-nav\",\n clsContainer: \"uk-slider-container\",\n active: \"all\",\n Transitioner\n },\n computed: {\n finite({ finite }) {\n return finite || isFinite(this.list, this.center);\n },\n maxIndex() {\n if (!this.finite || this.center && !this.sets) {\n return this.length - 1;\n }\n if (this.center) {\n return last(this.sets);\n }\n let lft = 0;\n const max = getMax(this.list);\n const index = findIndex(this.slides, (el) => {\n if (lft >= max - 5e-3) {\n return true;\n }\n lft += dimensions$1(el).width;\n });\n return ~index ? index : this.length - 1;\n },\n sets({ sets: enabled }) {\n if (!enabled || this.parallax) {\n return;\n }\n let left = 0;\n const sets = [];\n const width = dimensions$1(this.list).width;\n for (let i = 0; i < this.length; i++) {\n const slideWidth = dimensions$1(this.slides[i]).width;\n if (left + slideWidth > width) {\n left = 0;\n }\n if (this.center) {\n if (left < width / 2 && left + slideWidth + dimensions$1(this.slides[getIndex(i + 1, this.slides)]).width / 2 > width / 2) {\n sets.push(i);\n left = width / 2 - slideWidth / 2;\n }\n } else if (left === 0) {\n sets.push(Math.min(i, this.maxIndex));\n }\n left += slideWidth;\n }\n if (sets.length) {\n return sets;\n }\n },\n transitionOptions() {\n return {\n center: this.center,\n list: this.list\n };\n },\n slides() {\n return children(this.list).filter(isVisible);\n }\n },\n connected() {\n toggleClass(this.$el, this.clsContainer, !$(`.${this.clsContainer}`, this.$el));\n },\n observe: resize({\n target: ({ slides, $el }) => [$el, ...slides]\n }),\n update: {\n write() {\n for (const el of this.navItems) {\n const index = toNumber(data(el, this.attrItem));\n if (index !== false) {\n el.hidden = !this.maxIndex || index > this.maxIndex || this.sets && !includes(this.sets, index);\n }\n }\n this.reorder();\n if (!this.parallax) {\n this._translate(1);\n }\n this.updateActiveClasses();\n },\n events: [\"resize\"]\n },\n events: {\n beforeitemshow(e) {\n if (!this.dragging && this.sets && this.stack.length < 2 && !includes(this.sets, this.index)) {\n this.index = this.getValidIndex();\n }\n const diff = Math.abs(\n this.index - this.prevIndex + (this.dir > 0 && this.index < this.prevIndex || this.dir < 0 && this.index > this.prevIndex ? (this.maxIndex + 1) * this.dir : 0)\n );\n if (!this.dragging && diff > 1) {\n for (let i = 0; i < diff; i++) {\n this.stack.splice(1, 0, this.dir > 0 ? \"next\" : \"previous\");\n }\n e.preventDefault();\n return;\n }\n const index = this.dir < 0 || !this.slides[this.prevIndex] ? this.index : this.prevIndex;\n const avgWidth = getWidth(this.list) / this.length;\n this.duration = speedUp(avgWidth / this.velocity) * (dimensions$1(this.slides[index]).width / avgWidth);\n this.reorder();\n },\n itemshow() {\n if (~this.prevIndex) {\n addClass(this._getTransitioner().getItemIn(), this.clsActive);\n }\n this.updateActiveClasses(this.prevIndex);\n },\n itemshown() {\n this.updateActiveClasses();\n }\n },\n methods: {\n reorder() {\n if (this.finite) {\n css(this.slides, \"order\", \"\");\n return;\n }\n const index = this.dir > 0 && this.slides[this.prevIndex] ? this.prevIndex : this.index;\n this.slides.forEach(\n (slide, i) => css(\n slide,\n \"order\",\n this.dir > 0 && i < index ? 1 : this.dir < 0 && i >= this.index ? -1 : \"\"\n )\n );\n if (!this.center || !this.length) {\n return;\n }\n const next = this.slides[index];\n let width = dimensions$1(this.list).width / 2 - dimensions$1(next).width / 2;\n let j = 0;\n while (width > 0) {\n const slideIndex = this.getIndex(--j + index, index);\n const slide = this.slides[slideIndex];\n css(slide, \"order\", slideIndex > index ? -2 : -1);\n width -= dimensions$1(slide).width;\n }\n },\n updateActiveClasses(currentIndex = this.index) {\n let actives = this._getTransitioner(currentIndex).getActives();\n if (this.active !== \"all\") {\n actives = [this.slides[this.getValidIndex(currentIndex)]];\n }\n const activeClasses = [\n this.clsActive,\n !this.sets || includes(this.sets, toFloat(this.index)) ? this.clsActivated : \"\"\n ];\n for (const slide of this.slides) {\n const active = includes(actives, slide);\n toggleClass(slide, activeClasses, active);\n attr(slide, \"aria-hidden\", !active);\n for (const focusable of $$(selFocusable, slide)) {\n if (!hasOwn(focusable, \"_tabindex\")) {\n focusable._tabindex = attr(focusable, \"tabindex\");\n }\n attr(focusable, \"tabindex\", active ? focusable._tabindex : -1);\n }\n }\n },\n getValidIndex(index = this.index, prevIndex = this.prevIndex) {\n index = this.getIndex(index, prevIndex);\n if (!this.sets) {\n return index;\n }\n let prev;\n do {\n if (includes(this.sets, index)) {\n return index;\n }\n prev = index;\n index = this.getIndex(index + this.dir, prevIndex);\n } while (index !== prev);\n return index;\n },\n getAdjacentSlides() {\n const { width } = dimensions$1(this.list);\n const left = -width;\n const right = width * 2;\n const slideWidth = dimensions$1(this.slides[this.index]).width;\n const slideLeft = this.center ? width / 2 - slideWidth / 2 : 0;\n const slides = /* @__PURE__ */ new Set();\n for (const i of [-1, 1]) {\n let currentLeft = slideLeft + (i > 0 ? slideWidth : 0);\n let j = 0;\n do {\n const slide = this.slides[this.getIndex(this.index + i + j++ * i)];\n currentLeft += dimensions$1(slide).width * i;\n slides.add(slide);\n } while (this.length > j && currentLeft > left && currentLeft < right);\n }\n return Array.from(slides);\n },\n getIndexAt(percent) {\n let index = -1;\n const scrollDist = this.center ? getWidth(this.list) - (dimensions$1(this.slides[0]).width / 2 + dimensions$1(last(this.slides)).width / 2) : getWidth(this.list, this.maxIndex);\n let dist = percent * scrollDist;\n let slidePercent = 0;\n do {\n const slideWidth = dimensions$1(this.slides[++index]).width;\n const slideDist = this.center ? slideWidth / 2 + dimensions$1(this.slides[index + 1]).width / 2 : slideWidth;\n slidePercent = dist / slideDist % 1;\n dist -= slideDist;\n } while (dist >= 0 && index < this.maxIndex);\n return [index, slidePercent];\n }\n }\n };\n function isFinite(list, center) {\n if (!list || list.length < 2) {\n return true;\n }\n const { width: listWidth } = dimensions$1(list);\n if (!center) {\n return Math.ceil(getWidth(list)) < Math.trunc(listWidth + getMaxElWidth(list));\n }\n const slides = children(list);\n const listHalf = Math.trunc(listWidth / 2);\n for (const index in slides) {\n const slide = slides[index];\n const slideWidth = dimensions$1(slide).width;\n const slidesInView = /* @__PURE__ */ new Set([slide]);\n let diff = 0;\n for (const i of [-1, 1]) {\n let left = slideWidth / 2;\n let j = 0;\n while (left < listHalf) {\n const nextSlide = slides[getIndex(+index + i + j++ * i, slides)];\n if (slidesInView.has(nextSlide)) {\n return true;\n }\n left += dimensions$1(nextSlide).width;\n slidesInView.add(nextSlide);\n }\n diff = Math.max(\n diff,\n slideWidth / 2 + dimensions$1(slides[getIndex(+index + i, slides)]).width / 2 - (left - listHalf)\n );\n }\n if (Math.trunc(diff) > sumBy(\n slides.filter((slide2) => !slidesInView.has(slide2)),\n (slide2) => dimensions$1(slide2).width\n )) {\n return true;\n }\n }\n return false;\n }\n function getMaxElWidth(list) {\n return Math.max(0, ...children(list).map((el) => dimensions$1(el).width));\n }\n\n var sliderParallax = {\n mixins: [Parallax],\n beforeConnect() {\n this.item = this.$el.closest(`.${this.$options.id.replace(\"parallax\", \"items\")} > *`);\n },\n disconnected() {\n this.item = null;\n },\n events: [\n {\n name: \"itemin itemout\",\n self: true,\n el: ({ item }) => item,\n handler({ type, detail: { percent, duration, timing, dir } }) {\n fastdom.read(() => {\n if (!this.matchMedia) {\n return;\n }\n const propsFrom = this.getCss(getCurrentPercent(type, dir, percent));\n const propsTo = this.getCss(isIn(type) ? 0.5 : dir > 0 ? 1 : 0);\n fastdom.write(() => {\n css(this.$el, propsFrom);\n Transition.start(this.$el, propsTo, duration, timing).catch(noop);\n });\n });\n }\n },\n {\n name: \"transitioncanceled transitionend\",\n self: true,\n el: ({ item }) => item,\n handler() {\n Transition.cancel(this.$el);\n }\n },\n {\n name: \"itemtranslatein itemtranslateout\",\n self: true,\n el: ({ item }) => item,\n handler({ type, detail: { percent, dir } }) {\n fastdom.read(() => {\n if (!this.matchMedia) {\n this.reset();\n return;\n }\n const props = this.getCss(getCurrentPercent(type, dir, percent));\n fastdom.write(() => css(this.$el, props));\n });\n }\n }\n ]\n };\n function isIn(type) {\n return endsWith(type, \"in\");\n }\n function getCurrentPercent(type, dir, percent) {\n percent /= 2;\n return isIn(type) ^ dir < 0 ? percent : 1 - percent;\n }\n\n var slideshow = {\n mixins: [Class, Slideshow, SliderReactive, SliderParallax, SliderPreload],\n props: {\n ratio: String,\n minHeight: String,\n maxHeight: String\n },\n data: {\n ratio: \"16:9\",\n minHeight: void 0,\n maxHeight: void 0,\n selList: \".uk-slideshow-items\",\n attrItem: \"uk-slideshow-item\",\n selNav: \".uk-slideshow-nav\",\n Animations: Animations$1\n },\n watch: {\n list(list) {\n css(list, {\n aspectRatio: this.ratio ? this.ratio.replace(\":\", \"/\") : void 0,\n minHeight: this.minHeight,\n maxHeight: this.maxHeight,\n width: \"100%\"\n });\n }\n },\n methods: {\n getAdjacentSlides() {\n return [1, -1].map((i) => this.slides[this.getIndex(this.index + i)]);\n }\n }\n };\n\n var sortable = {\n mixins: [Class, Animate],\n props: {\n group: String,\n threshold: Number,\n clsItem: String,\n clsPlaceholder: String,\n clsDrag: String,\n clsDragState: String,\n clsBase: String,\n clsNoDrag: String,\n clsEmpty: String,\n clsCustom: String,\n handle: String\n },\n data: {\n group: false,\n threshold: 5,\n clsItem: \"uk-sortable-item\",\n clsPlaceholder: \"uk-sortable-placeholder\",\n clsDrag: \"uk-sortable-drag\",\n clsDragState: \"uk-drag\",\n clsBase: \"uk-sortable\",\n clsNoDrag: \"uk-sortable-nodrag\",\n clsEmpty: \"uk-sortable-empty\",\n clsCustom: \"\",\n handle: false,\n pos: {}\n },\n events: {\n name: pointerDown$1,\n passive: false,\n handler(e) {\n this.init(e);\n }\n },\n computed: {\n target: (_, $el) => ($el.tBodies || [$el])[0],\n items() {\n return children(this.target);\n },\n isEmpty() {\n return !this.items.length;\n },\n handles({ handle }, $el) {\n return handle ? $$(handle, $el) : this.items;\n }\n },\n watch: {\n isEmpty(empty) {\n toggleClass(this.target, this.clsEmpty, empty);\n },\n handles(handles, prev) {\n css(prev, { touchAction: \"\", userSelect: \"\" });\n css(handles, { touchAction: \"none\", userSelect: \"none\" });\n }\n },\n update: {\n write(data) {\n if (!this.drag || !parent(this.placeholder)) {\n return;\n }\n const {\n pos: { x, y },\n origin: { offsetTop, offsetLeft },\n placeholder\n } = this;\n css(this.drag, {\n top: y - offsetTop,\n left: x - offsetLeft\n });\n const sortable = this.getSortable(document.elementFromPoint(x, y));\n if (!sortable) {\n return;\n }\n const { items } = sortable;\n if (items.some(Transition.inProgress)) {\n return;\n }\n const target = findTarget(items, { x, y });\n if (items.length && (!target || target === placeholder)) {\n return;\n }\n const previous = this.getSortable(placeholder);\n const insertTarget = findInsertTarget(\n sortable.target,\n target,\n placeholder,\n x,\n y,\n sortable === previous && data.moved !== target\n );\n if (insertTarget === false) {\n return;\n }\n if (insertTarget && placeholder === insertTarget) {\n return;\n }\n if (sortable !== previous) {\n previous.remove(placeholder);\n data.moved = target;\n } else {\n delete data.moved;\n }\n sortable.insert(placeholder, insertTarget);\n this.touched.add(sortable);\n },\n events: [\"move\"]\n },\n methods: {\n init(e) {\n const { target, button, defaultPrevented } = e;\n const [placeholder] = this.items.filter((el) => el.contains(target));\n if (!placeholder || defaultPrevented || button > 0 || isInput(target) || target.closest(`.${this.clsNoDrag}`) || this.handle && !target.closest(this.handle)) {\n return;\n }\n e.preventDefault();\n this.pos = getEventPos(e);\n this.touched = /* @__PURE__ */ new Set([this]);\n this.placeholder = placeholder;\n this.origin = { target, index: index(placeholder), ...this.pos };\n on(document, pointerMove$1, this.move);\n on(document, pointerUp$1, this.end);\n if (!this.threshold) {\n this.start(e);\n }\n },\n start(e) {\n this.drag = appendDrag(this.$container, this.placeholder);\n const { left, top } = dimensions$1(this.placeholder);\n assign(this.origin, { offsetLeft: this.pos.x - left, offsetTop: this.pos.y - top });\n addClass(this.drag, this.clsDrag, this.clsCustom);\n addClass(this.placeholder, this.clsPlaceholder);\n addClass(this.items, this.clsItem);\n addClass(document.documentElement, this.clsDragState);\n trigger(this.$el, \"start\", [this, this.placeholder]);\n trackScroll(this.pos);\n this.move(e);\n },\n move: throttle(function(e) {\n assign(this.pos, getEventPos(e));\n if (!this.drag && (Math.abs(this.pos.x - this.origin.x) > this.threshold || Math.abs(this.pos.y - this.origin.y) > this.threshold)) {\n this.start(e);\n }\n this.$emit(\"move\");\n }),\n end() {\n off(document, pointerMove$1, this.move);\n off(document, pointerUp$1, this.end);\n if (!this.drag) {\n return;\n }\n untrackScroll();\n const sortable = this.getSortable(this.placeholder);\n if (this === sortable) {\n if (this.origin.index !== index(this.placeholder)) {\n trigger(this.$el, \"moved\", [this, this.placeholder]);\n }\n } else {\n trigger(sortable.$el, \"added\", [sortable, this.placeholder]);\n trigger(this.$el, \"removed\", [this, this.placeholder]);\n }\n trigger(this.$el, \"stop\", [this, this.placeholder]);\n remove$1(this.drag);\n this.drag = null;\n for (const { clsPlaceholder, clsItem } of this.touched) {\n for (const sortable2 of this.touched) {\n removeClass(sortable2.items, clsPlaceholder, clsItem);\n }\n }\n this.touched = null;\n removeClass(document.documentElement, this.clsDragState);\n },\n insert(element, target) {\n addClass(this.items, this.clsItem);\n if (target && target.previousElementSibling !== element) {\n this.animate(() => before(target, element));\n } else if (!target && this.target.lastElementChild !== element) {\n this.animate(() => append(this.target, element));\n }\n },\n remove(element) {\n if (this.target.contains(element)) {\n this.animate(() => remove$1(element));\n }\n },\n getSortable(element) {\n do {\n const sortable = this.$getComponent(element, \"sortable\");\n if (sortable && (sortable === this || this.group !== false && sortable.group === this.group)) {\n return sortable;\n }\n } while (element = parent(element));\n }\n }\n };\n let trackTimer;\n function trackScroll(pos) {\n let last = Date.now();\n trackTimer = setInterval(() => {\n let { x, y } = pos;\n y += document.scrollingElement.scrollTop;\n const dist = (Date.now() - last) * 0.3;\n last = Date.now();\n scrollParents(document.elementFromPoint(x, pos.y)).reverse().some((scrollEl) => {\n let { scrollTop: scroll, scrollHeight } = scrollEl;\n const { top, bottom, height: height2 } = offsetViewport(scrollEl);\n if (top < y && top + 35 > y) {\n scroll -= dist;\n } else if (bottom > y && bottom - 35 < y) {\n scroll += dist;\n } else {\n return;\n }\n if (scroll > 0 && scroll < scrollHeight - height2) {\n scrollEl.scrollTop = scroll;\n return true;\n }\n });\n }, 15);\n }\n function untrackScroll() {\n clearInterval(trackTimer);\n }\n function appendDrag(container, element) {\n let clone;\n if (isTag(element, \"li\", \"tr\")) {\n clone = $(\"
    \");\n append(clone, element.cloneNode(true).children);\n for (const attribute of element.getAttributeNames()) {\n attr(clone, attribute, element.getAttribute(attribute));\n }\n } else {\n clone = element.cloneNode(true);\n }\n append(container, clone);\n css(clone, \"margin\", \"0\", \"important\");\n css(clone, {\n boxSizing: \"border-box\",\n width: element.offsetWidth,\n height: element.offsetHeight,\n padding: css(element, \"padding\")\n });\n height(clone.firstElementChild, height(element.firstElementChild));\n return clone;\n }\n function findTarget(items, point) {\n return items[findIndex(items, (item) => pointInRect(point, dimensions$1(item)))];\n }\n function findInsertTarget(list, target, placeholder, x, y, sameList) {\n if (!children(list).length) {\n return;\n }\n const rect = dimensions$1(target);\n if (!sameList) {\n if (!isHorizontal(list, placeholder)) {\n return y < rect.top + rect.height / 2 ? target : target.nextElementSibling;\n }\n return target;\n }\n const placeholderRect = dimensions$1(placeholder);\n const sameRow = linesIntersect(\n [rect.top, rect.bottom],\n [placeholderRect.top, placeholderRect.bottom]\n );\n const [pointerPos, lengthProp, startProp, endProp] = sameRow ? [x, \"width\", \"left\", \"right\"] : [y, \"height\", \"top\", \"bottom\"];\n const diff = placeholderRect[lengthProp] < rect[lengthProp] ? rect[lengthProp] - placeholderRect[lengthProp] : 0;\n if (placeholderRect[startProp] < rect[startProp]) {\n if (diff && pointerPos < rect[startProp] + diff) {\n return false;\n }\n return target.nextElementSibling;\n }\n if (diff && pointerPos > rect[endProp] - diff) {\n return false;\n }\n return target;\n }\n function isHorizontal(list, placeholder) {\n const single = children(list).length === 1;\n if (single) {\n append(list, placeholder);\n }\n const items = children(list);\n const isHorizontal2 = items.some((el, i) => {\n const rectA = dimensions$1(el);\n return items.slice(i + 1).some((el2) => {\n const rectB = dimensions$1(el2);\n return !linesIntersect([rectA.left, rectA.right], [rectB.left, rectB.right]);\n });\n });\n if (single) {\n remove$1(placeholder);\n }\n return isHorizontal2;\n }\n function linesIntersect(lineA, lineB) {\n return lineA[1] > lineB[0] && lineB[1] > lineA[0];\n }\n function throttle(fn) {\n let throttled;\n return function(...args) {\n if (!throttled) {\n throttled = true;\n fn.call(this, ...args);\n requestAnimationFrame(() => throttled = false);\n }\n };\n }\n\n var Position = {\n props: {\n pos: String,\n offset: Boolean,\n flip: Boolean,\n shift: Boolean,\n inset: Boolean\n },\n data: {\n pos: `bottom-${isRtl ? \"right\" : \"left\"}`,\n offset: false,\n flip: true,\n shift: true,\n inset: false\n },\n connected() {\n this.pos = this.$props.pos.split(\"-\").concat(\"center\").slice(0, 2);\n [this.dir, this.align] = this.pos;\n this.axis = includes([\"top\", \"bottom\"], this.dir) ? \"y\" : \"x\";\n },\n methods: {\n positionAt(element, target, boundary) {\n let offset = [this.getPositionOffset(element), this.getShiftOffset(element)];\n const placement = [this.flip && \"flip\", this.shift && \"shift\"];\n const attach = {\n element: [this.inset ? this.dir : flipPosition(this.dir), this.align],\n target: [this.dir, this.align]\n };\n if (this.axis === \"y\") {\n for (const prop in attach) {\n attach[prop].reverse();\n }\n offset.reverse();\n placement.reverse();\n }\n const restoreScrollPosition = storeScrollPosition(element);\n const elDim = dimensions$1(element);\n css(element, { top: -elDim.height, left: -elDim.width });\n positionAt(element, target, {\n attach,\n offset,\n boundary,\n placement,\n viewportOffset: this.getViewportOffset(element)\n });\n restoreScrollPosition();\n },\n getPositionOffset(element = this.$el) {\n return toPx(\n this.offset === false ? css(element, \"--uk-position-offset\") : this.offset,\n this.axis === \"x\" ? \"width\" : \"height\",\n element\n ) * (includes([\"left\", \"top\"], this.dir) ? -1 : 1) * (this.inset ? -1 : 1);\n },\n getShiftOffset(element = this.$el) {\n return this.align === \"center\" ? 0 : toPx(\n css(element, \"--uk-position-shift-offset\"),\n this.axis === \"y\" ? \"width\" : \"height\",\n element\n ) * (includes([\"left\", \"top\"], this.align) ? 1 : -1);\n },\n getViewportOffset(element) {\n return toPx(css(element, \"--uk-position-viewport-offset\"));\n }\n }\n };\n function storeScrollPosition(element) {\n const scrollElement = scrollParent(element);\n const { scrollTop } = scrollElement;\n return () => {\n if (scrollTop !== scrollElement.scrollTop) {\n scrollElement.scrollTop = scrollTop;\n }\n };\n }\n\n var tooltip = {\n mixins: [Container, Togglable, Position],\n data: {\n pos: \"top\",\n animation: [\"uk-animation-scale-up\"],\n duration: 100,\n cls: \"uk-active\"\n },\n connected() {\n makeFocusable(this.$el);\n },\n disconnected() {\n this.hide();\n },\n methods: {\n show() {\n if (this.isToggled(this.tooltip || null)) {\n return;\n }\n const { delay = 0, title } = parseProps(this.$options);\n if (!title) {\n return;\n }\n const titleAttr = attr(this.$el, \"title\");\n const off = on(this.$el, [\"blur\", pointerLeave], (e) => !isTouch(e) && this.hide());\n this.reset = () => {\n attr(this.$el, { title: titleAttr, \"aria-describedby\": null });\n off();\n };\n const id = generateId(this);\n attr(this.$el, { title: null, \"aria-describedby\": id });\n clearTimeout(this.showTimer);\n this.showTimer = setTimeout(() => this._show(title, id), delay);\n },\n async hide() {\n var _a;\n if (matches(this.$el, \"input:focus\")) {\n return;\n }\n clearTimeout(this.showTimer);\n if (this.isToggled(this.tooltip || null)) {\n await this.toggleElement(this.tooltip, false, false);\n }\n (_a = this.reset) == null ? void 0 : _a.call(this);\n remove$1(this.tooltip);\n this.tooltip = null;\n },\n async _show(title, id) {\n this.tooltip = append(\n this.container,\n `
    ${title}
    `\n );\n on(this.tooltip, \"toggled\", (e, toggled) => {\n if (!toggled) {\n return;\n }\n const update = () => this.positionAt(this.tooltip, this.$el);\n update();\n const [dir, align] = getAlignment(this.tooltip, this.$el, this.pos);\n this.origin = this.axis === \"y\" ? `${flipPosition(dir)}-${align}` : `${align}-${flipPosition(dir)}`;\n const handlers = [\n once(\n document,\n `keydown ${pointerDown$1}`,\n this.hide,\n false,\n (e2) => e2.type === pointerDown$1 && !this.$el.contains(e2.target) || e2.type === \"keydown\" && e2.keyCode === keyMap.ESC\n ),\n on([document, ...overflowParents(this.$el)], \"scroll\", update, {\n passive: true\n })\n ];\n once(this.tooltip, \"hide\", () => handlers.forEach((handler) => handler()), {\n self: true\n });\n });\n if (!await this.toggleElement(this.tooltip, true)) {\n this.hide();\n }\n }\n },\n events: {\n // Clicking a button does not give it focus on all browsers and platforms\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#clicking_and_focus\n [`focus ${pointerEnter} ${pointerDown$1}`](e) {\n if ((!isTouch(e) || e.type === pointerDown$1) && document.readyState !== \"loading\") {\n this.show();\n }\n }\n }\n };\n function makeFocusable(el) {\n if (!isFocusable(el)) {\n attr(el, \"tabindex\", \"0\");\n }\n }\n function getAlignment(el, target, [dir, align]) {\n const elOffset = offset(el);\n const targetOffset = offset(target);\n const properties = [\n [\"left\", \"right\"],\n [\"top\", \"bottom\"]\n ];\n for (const props2 of properties) {\n if (elOffset[props2[0]] >= targetOffset[props2[1]]) {\n dir = props2[1];\n break;\n }\n if (elOffset[props2[1]] <= targetOffset[props2[0]]) {\n dir = props2[0];\n break;\n }\n }\n const props = includes(properties[0], dir) ? properties[1] : properties[0];\n align = props.find((prop) => elOffset[prop] === targetOffset[prop]) || \"center\";\n return [dir, align];\n }\n function parseProps(options) {\n const { el, id, data: data$1 } = options;\n return [\"delay\", \"title\"].reduce((obj, key) => ({ [key]: data(el, key), ...obj }), {\n ...parseOptions(data(el, id), [\"title\"]),\n ...data$1\n });\n }\n\n var upload = {\n mixins: [I18n],\n i18n: {\n invalidMime: \"Invalid File Type: %s\",\n invalidName: \"Invalid File Name: %s\",\n invalidSize: \"Invalid File Size: %s Kilobytes Max\"\n },\n props: {\n allow: String,\n clsDragover: String,\n concurrent: Number,\n maxSize: Number,\n method: String,\n mime: String,\n multiple: Boolean,\n name: String,\n params: Object,\n type: String,\n url: String\n },\n data: {\n allow: false,\n clsDragover: \"uk-dragover\",\n concurrent: 1,\n maxSize: 0,\n method: \"POST\",\n mime: false,\n multiple: false,\n name: \"files[]\",\n params: {},\n type: \"\",\n url: \"\",\n abort: noop,\n beforeAll: noop,\n beforeSend: noop,\n complete: noop,\n completeAll: noop,\n error: noop,\n fail: noop,\n load: noop,\n loadEnd: noop,\n loadStart: noop,\n progress: noop\n },\n events: {\n change(e) {\n if (!matches(e.target, 'input[type=\"file\"]')) {\n return;\n }\n e.preventDefault();\n if (e.target.files) {\n this.upload(e.target.files);\n }\n e.target.value = \"\";\n },\n drop(e) {\n stop(e);\n const transfer = e.dataTransfer;\n if (!(transfer == null ? void 0 : transfer.files)) {\n return;\n }\n removeClass(this.$el, this.clsDragover);\n this.upload(transfer.files);\n },\n dragenter(e) {\n stop(e);\n },\n dragover(e) {\n stop(e);\n addClass(this.$el, this.clsDragover);\n },\n dragleave(e) {\n stop(e);\n removeClass(this.$el, this.clsDragover);\n }\n },\n methods: {\n async upload(files) {\n files = toArray(files);\n if (!files.length) {\n return;\n }\n trigger(this.$el, \"upload\", [files]);\n for (const file of files) {\n if (this.maxSize && this.maxSize * 1e3 < file.size) {\n this.fail(this.t(\"invalidSize\", this.maxSize));\n return;\n }\n if (this.allow && !match$1(this.allow, file.name)) {\n this.fail(this.t(\"invalidName\", this.allow));\n return;\n }\n if (this.mime && !match$1(this.mime, file.type)) {\n this.fail(this.t(\"invalidMime\", this.mime));\n return;\n }\n }\n if (!this.multiple) {\n files = files.slice(0, 1);\n }\n this.beforeAll(this, files);\n const chunks = chunk(files, this.concurrent);\n const upload = async (files2) => {\n const data = new FormData();\n files2.forEach((file) => data.append(this.name, file));\n for (const key in this.params) {\n data.append(key, this.params[key]);\n }\n try {\n const xhr = await ajax(this.url, {\n data,\n method: this.method,\n responseType: this.type,\n beforeSend: (env) => {\n const { xhr: xhr2 } = env;\n on(xhr2.upload, \"progress\", this.progress);\n for (const type of [\"loadStart\", \"load\", \"loadEnd\", \"abort\"]) {\n on(xhr2, type.toLowerCase(), this[type]);\n }\n return this.beforeSend(env);\n }\n });\n this.complete(xhr);\n if (chunks.length) {\n await upload(chunks.shift());\n } else {\n this.completeAll(xhr);\n }\n } catch (e) {\n this.error(e);\n }\n };\n await upload(chunks.shift());\n }\n }\n };\n function match$1(pattern, path) {\n return path.match(\n new RegExp(\n `^${pattern.replace(/\\//g, \"\\\\/\").replace(/\\*\\*/g, \"(\\\\/[^\\\\/]+)*\").replace(/\\*/g, \"[^\\\\/]+\").replace(/((?!\\\\))\\?/g, \"$1.\")}$`,\n \"i\"\n )\n );\n }\n function chunk(files, size) {\n const chunks = [];\n for (let i = 0; i < files.length; i += size) {\n chunks.push(files.slice(i, i + size));\n }\n return chunks;\n }\n function stop(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n async function ajax(url, options) {\n const env = {\n data: null,\n method: \"GET\",\n headers: {},\n xhr: new XMLHttpRequest(),\n beforeSend: noop,\n responseType: \"\",\n ...options\n };\n await env.beforeSend(env);\n return send(url, env);\n }\n function send(url, env) {\n return new Promise((resolve, reject) => {\n const { xhr } = env;\n for (const prop in env) {\n if (prop in xhr) {\n try {\n xhr[prop] = env[prop];\n } catch (e) {\n }\n }\n }\n xhr.open(env.method.toUpperCase(), url);\n for (const header in env.headers) {\n xhr.setRequestHeader(header, env.headers[header]);\n }\n on(xhr, \"load\", () => {\n if (xhr.status === 0 || xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {\n resolve(xhr);\n } else {\n reject(\n assign(Error(xhr.statusText), {\n xhr,\n status: xhr.status\n })\n );\n }\n });\n on(xhr, \"error\", () => reject(assign(Error(\"Network Error\"), { xhr })));\n on(xhr, \"timeout\", () => reject(assign(Error(\"Network Timeout\"), { xhr })));\n xhr.send(env.data);\n });\n }\n\n var components$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Countdown: countdown,\n Filter: filter,\n Lightbox: lightbox,\n LightboxPanel: LightboxPanel,\n Notification: notification,\n Parallax: parallax,\n Slider: slider,\n SliderParallax: sliderParallax,\n Slideshow: slideshow,\n SlideshowParallax: sliderParallax,\n Sortable: sortable,\n Tooltip: tooltip,\n Upload: upload\n });\n\n function boot(App) {\n if (inBrowser && window.MutationObserver) {\n if (document.body) {\n requestAnimationFrame(() => init(App));\n } else {\n new MutationObserver((records, observer) => {\n if (document.body) {\n init(App);\n observer.disconnect();\n }\n }).observe(document.documentElement, { childList: true });\n }\n }\n }\n function init(App) {\n trigger(document, \"uikit:init\", App);\n if (document.body) {\n apply(document.body, connect);\n }\n new MutationObserver(handleMutation).observe(document, {\n subtree: true,\n childList: true,\n attributes: true\n });\n App._initialized = true;\n }\n function handleMutation(records) {\n var _a;\n for (const { addedNodes, removedNodes, target, attributeName } of records) {\n for (const node of addedNodes) {\n apply(node, connect);\n }\n for (const node of removedNodes) {\n apply(node, disconnect);\n }\n const name = attributeName && getComponentName(attributeName);\n if (name) {\n if (hasAttr(target, attributeName)) {\n createComponent(name, target);\n } else {\n (_a = getComponent(target, name)) == null ? void 0 : _a.$destroy();\n }\n }\n }\n }\n function connect(node) {\n const components2 = getComponents(node);\n for (const name in components2) {\n callConnected(components2[name]);\n }\n for (const attributeName of node.getAttributeNames()) {\n const name = getComponentName(attributeName);\n name && createComponent(name, node);\n }\n }\n function disconnect(node) {\n const components2 = getComponents(node);\n for (const name in components2) {\n callDisconnected(components2[name]);\n }\n }\n function getComponentName(attribute) {\n if (startsWith(attribute, \"data-\")) {\n attribute = attribute.slice(5);\n }\n const cmp = components$2[attribute];\n return cmp && (cmp.options || cmp).name;\n }\n\n globalApi(App);\n instanceApi(App);\n\n var Accordion = {\n mixins: [Class, Togglable],\n props: {\n animation: Boolean,\n targets: String,\n active: null,\n collapsible: Boolean,\n multiple: Boolean,\n toggle: String,\n content: String,\n offset: Number\n },\n data: {\n targets: \"> *\",\n active: false,\n animation: true,\n collapsible: true,\n multiple: false,\n clsOpen: \"uk-open\",\n toggle: \"> .uk-accordion-title\",\n content: \"> .uk-accordion-content\",\n offset: 0\n },\n computed: {\n items: ({ targets }, $el) => $$(targets, $el),\n toggles({ toggle }) {\n return this.items.map((item) => $(toggle, item));\n },\n contents({ content }) {\n return this.items.map((item) => {\n var _a;\n return ((_a = item._wrapper) == null ? void 0 : _a.firstElementChild) || $(content, item);\n });\n }\n },\n watch: {\n items(items, prev) {\n if (prev || hasClass(items, this.clsOpen)) {\n return;\n }\n const active = this.active !== false && items[Number(this.active)] || !this.collapsible && items[0];\n if (active) {\n this.toggle(active, false);\n }\n },\n toggles() {\n this.$emit();\n },\n contents(items) {\n for (const el of items) {\n const isOpen = hasClass(\n this.items.find((item) => item.contains(el)),\n this.clsOpen\n );\n hide(el, !isOpen);\n }\n this.$emit();\n }\n },\n observe: lazyload(),\n events: [\n {\n name: \"click keydown\",\n delegate: ({ targets, $props }) => `${targets} ${$props.toggle}`,\n async handler(e) {\n var _a;\n if (e.type === \"keydown\" && e.keyCode !== keyMap.SPACE) {\n return;\n }\n e.preventDefault();\n (_a = this._off) == null ? void 0 : _a.call(this);\n this._off = keepScrollPosition(e.target);\n await this.toggle(index(this.toggles, e.current));\n this._off();\n }\n },\n {\n name: \"shown hidden\",\n self: true,\n delegate: ({ targets }) => targets,\n handler() {\n this.$emit();\n }\n }\n ],\n update() {\n const activeItems = filter$1(this.items, `.${this.clsOpen}`);\n for (const index2 in this.items) {\n const toggle = this.toggles[index2];\n const content = this.contents[index2];\n if (!toggle || !content) {\n continue;\n }\n toggle.id = generateId(this, toggle);\n content.id = generateId(this, content);\n const active = includes(activeItems, this.items[index2]);\n attr(toggle, {\n role: isTag(toggle, \"a\") ? \"button\" : null,\n \"aria-controls\": content.id,\n \"aria-expanded\": active,\n \"aria-disabled\": !this.collapsible && activeItems.length < 2 && active\n });\n attr(content, { role: \"region\", \"aria-labelledby\": toggle.id });\n if (isTag(content, \"ul\")) {\n attr(children(content), \"role\", \"presentation\");\n }\n }\n },\n methods: {\n toggle(item, animate) {\n item = this.items[getIndex(item, this.items)];\n let items = [item];\n const activeItems = filter$1(this.items, `.${this.clsOpen}`);\n if (!this.multiple && !includes(activeItems, items[0])) {\n items = items.concat(activeItems);\n }\n if (!this.collapsible && activeItems.length < 2 && includes(activeItems, item)) {\n return;\n }\n return Promise.all(\n items.map(\n (el) => this.toggleElement(el, !includes(activeItems, el), (el2, show) => {\n toggleClass(el2, this.clsOpen, show);\n if (animate === false || !this.animation) {\n hide($(this.content, el2), !show);\n return;\n }\n return transition(el2, show, this);\n })\n )\n );\n }\n }\n };\n function hide(el, hide2) {\n el && (el.hidden = hide2);\n }\n async function transition(el, show, { content, duration, velocity, transition: transition2 }) {\n var _a;\n content = ((_a = el._wrapper) == null ? void 0 : _a.firstElementChild) || $(content, el);\n if (!el._wrapper) {\n el._wrapper = wrapAll(content, \"
    \");\n }\n const wrapper = el._wrapper;\n css(wrapper, \"overflow\", \"hidden\");\n const currentHeight = toFloat(css(wrapper, \"height\"));\n await Transition.cancel(wrapper);\n hide(content, false);\n const endHeight = sumBy([\"marginTop\", \"marginBottom\"], (prop) => css(content, prop)) + dimensions$1(content).height;\n const percent = currentHeight / endHeight;\n duration = (velocity * endHeight + duration) * (show ? 1 - percent : percent);\n css(wrapper, \"height\", currentHeight);\n await Transition.start(wrapper, { height: show ? endHeight : 0 }, duration, transition2);\n unwrap(content);\n delete el._wrapper;\n if (!show) {\n hide(content, true);\n }\n }\n function keepScrollPosition(el) {\n const scrollElement = scrollParent(el, true);\n let frame;\n (function scroll() {\n frame = requestAnimationFrame(() => {\n const { top } = dimensions$1(el);\n if (top < 0) {\n scrollElement.scrollTop += top;\n }\n scroll();\n });\n })();\n return () => requestAnimationFrame(() => cancelAnimationFrame(frame));\n }\n\n var alert = {\n mixins: [Class, Togglable],\n args: \"animation\",\n props: {\n animation: Boolean,\n close: String\n },\n data: {\n animation: true,\n selClose: \".uk-alert-close\",\n duration: 150\n },\n events: {\n name: \"click\",\n delegate: ({ selClose }) => selClose,\n handler(e) {\n e.preventDefault();\n this.close();\n }\n },\n methods: {\n async close() {\n await this.toggleElement(this.$el, false, animate);\n this.$destroy(true);\n }\n }\n };\n function animate(el, show, { duration, transition, velocity }) {\n const height = toFloat(css(el, \"height\"));\n css(el, \"height\", height);\n return Transition.start(\n el,\n {\n height: 0,\n marginTop: 0,\n marginBottom: 0,\n paddingTop: 0,\n paddingBottom: 0,\n borderTop: 0,\n borderBottom: 0,\n opacity: 0\n },\n velocity * height + duration,\n transition\n );\n }\n\n var Video = {\n args: \"autoplay\",\n props: {\n automute: Boolean,\n autoplay: Boolean\n },\n data: {\n automute: false,\n autoplay: true\n },\n beforeConnect() {\n if (this.autoplay === \"inview\" && !hasAttr(this.$el, \"preload\")) {\n this.$el.preload = \"none\";\n }\n if (isTag(this.$el, \"iframe\") && !hasAttr(this.$el, \"allow\")) {\n this.$el.allow = \"autoplay\";\n }\n if (this.autoplay === \"hover\") {\n if (isTag(this.$el, \"video\")) {\n this.$el.tabindex = 0;\n } else {\n this.autoplay = true;\n }\n }\n if (this.automute) {\n mute(this.$el);\n }\n },\n events: [\n {\n name: `${pointerEnter} focusin`,\n filter: ({ autoplay }) => includes(autoplay, \"hover\"),\n handler(e) {\n if (!isTouch(e) || !isPlaying(this.$el)) {\n play(this.$el);\n } else {\n pause(this.$el);\n }\n }\n },\n {\n name: `${pointerLeave} focusout`,\n filter: ({ autoplay }) => includes(autoplay, \"hover\"),\n handler(e) {\n if (!isTouch(e)) {\n pause(this.$el);\n }\n }\n }\n ],\n observe: [\n intersection({\n filter: ({ autoplay }) => autoplay !== \"hover\",\n handler([{ isIntersecting }]) {\n if (!document.fullscreenElement) {\n if (isIntersecting) {\n if (this.autoplay) {\n play(this.$el);\n }\n } else {\n pause(this.$el);\n }\n }\n },\n args: { intersecting: false },\n options: ({ $el, autoplay }) => ({\n root: autoplay === \"inview\" ? null : parent($el).closest(\":not(a)\")\n })\n })\n ]\n };\n function isPlaying(videoEl) {\n return !videoEl.paused && !videoEl.ended;\n }\n\n var cover = {\n mixins: [Video],\n props: {\n width: Number,\n height: Number\n },\n data: {\n automute: true\n },\n created() {\n this.useObjectFit = isTag(this.$el, \"img\", \"video\");\n },\n observe: resize({\n target: ({ $el }) => getPositionedParent($el) || parent($el),\n filter: ({ useObjectFit }) => !useObjectFit\n }),\n update: {\n read() {\n if (this.useObjectFit) {\n return false;\n }\n const { ratio, cover } = Dimensions;\n const { $el, width, height } = this;\n let dim = { width, height };\n if (!width || !height) {\n const intrinsic = {\n width: $el.naturalWidth || $el.videoWidth || $el.clientWidth,\n height: $el.naturalHeight || $el.videoHeight || $el.clientHeight\n };\n if (width) {\n dim = ratio(intrinsic, \"width\", width);\n } else if (height) {\n dim = ratio(intrinsic, \"height\", height);\n } else {\n dim = intrinsic;\n }\n }\n const { offsetHeight: coverHeight, offsetWidth: coverWidth } = getPositionedParent($el) || parent($el);\n const coverDim = cover(dim, { width: coverWidth, height: coverHeight });\n if (!coverDim.width || !coverDim.height) {\n return false;\n }\n return coverDim;\n },\n write({ height, width }) {\n css(this.$el, { height, width });\n },\n events: [\"resize\"]\n }\n };\n function getPositionedParent(el) {\n while (el = parent(el)) {\n if (css(el, \"position\") !== \"static\") {\n return el;\n }\n }\n }\n\n let active;\n var drop = {\n mixins: [Container, Position, Togglable],\n args: \"pos\",\n props: {\n mode: \"list\",\n toggle: Boolean,\n boundary: Boolean,\n boundaryX: Boolean,\n boundaryY: Boolean,\n target: Boolean,\n targetX: Boolean,\n targetY: Boolean,\n stretch: Boolean,\n delayShow: Number,\n delayHide: Number,\n autoUpdate: Boolean,\n clsDrop: String,\n animateOut: Boolean,\n bgScroll: Boolean,\n closeOnScroll: Boolean\n },\n data: {\n mode: [\"click\", \"hover\"],\n toggle: \"- *\",\n boundary: false,\n boundaryX: false,\n boundaryY: false,\n target: false,\n targetX: false,\n targetY: false,\n stretch: false,\n delayShow: 0,\n delayHide: 800,\n autoUpdate: true,\n clsDrop: false,\n animateOut: false,\n bgScroll: true,\n animation: [\"uk-animation-fade\"],\n cls: \"uk-open\",\n container: false,\n closeOnScroll: false\n },\n computed: {\n boundary({ boundary, boundaryX, boundaryY }, $el) {\n return [\n query(boundaryX || boundary, $el) || window,\n query(boundaryY || boundary, $el) || window\n ];\n },\n target({ target, targetX, targetY }, $el) {\n targetX || (targetX = target || this.targetEl);\n targetY || (targetY = target || this.targetEl);\n return [\n targetX === true ? window : query(targetX, $el),\n targetY === true ? window : query(targetY, $el)\n ];\n }\n },\n created() {\n this.tracker = new MouseTracker();\n },\n beforeConnect() {\n this.clsDrop = this.$props.clsDrop || this.$options.id;\n },\n connected() {\n addClass(this.$el, \"uk-drop\", this.clsDrop);\n if (this.toggle && !this.targetEl) {\n this.targetEl = createToggleComponent(this);\n }\n this._style = pick(this.$el.style, [\"width\", \"height\"]);\n },\n disconnected() {\n if (this.isActive()) {\n this.hide(false);\n active = null;\n }\n css(this.$el, this._style);\n },\n events: [\n {\n name: \"click\",\n delegate: () => \".uk-drop-close\",\n handler(e) {\n e.preventDefault();\n this.hide(false);\n }\n },\n {\n name: \"click\",\n delegate: () => 'a[href*=\"#\"]',\n handler({ defaultPrevented, current }) {\n const { hash } = current;\n if (!defaultPrevented && hash && isSameSiteAnchor(current) && !this.$el.contains($(hash))) {\n this.hide(false);\n }\n }\n },\n {\n name: \"beforescroll\",\n handler() {\n this.hide(false);\n }\n },\n {\n name: \"toggle\",\n self: true,\n handler(e, toggle) {\n e.preventDefault();\n if (this.isToggled()) {\n this.hide(false);\n } else {\n this.show(toggle == null ? void 0 : toggle.$el, false);\n }\n }\n },\n {\n name: \"toggleshow\",\n self: true,\n handler(e, toggle) {\n e.preventDefault();\n this.show(toggle == null ? void 0 : toggle.$el);\n }\n },\n {\n name: \"togglehide\",\n self: true,\n handler(e) {\n e.preventDefault();\n if (!matches(this.$el, \":focus,:hover\")) {\n this.hide();\n }\n }\n },\n {\n name: `${pointerEnter} focusin`,\n filter: ({ mode }) => includes(mode, \"hover\"),\n handler(e) {\n if (!isTouch(e)) {\n this.clearTimers();\n }\n }\n },\n {\n name: `${pointerLeave} focusout`,\n filter: ({ mode }) => includes(mode, \"hover\"),\n handler(e) {\n if (!isTouch(e) && e.relatedTarget) {\n this.hide();\n }\n }\n },\n {\n name: \"toggled\",\n self: true,\n handler(e, toggled) {\n if (toggled) {\n this.clearTimers();\n this.position();\n }\n }\n },\n {\n name: \"show\",\n self: true,\n handler() {\n active = this;\n this.tracker.init();\n attr(this.targetEl, \"aria-expanded\", true);\n const handlers = [\n listenForResize(this),\n listenForEscClose(this),\n listenForBackgroundClose(this),\n this.autoUpdate && listenForScroll(this),\n this.closeOnScroll && listenForScrollClose(this)\n ];\n once(this.$el, \"hide\", () => handlers.forEach((handler) => handler && handler()), {\n self: true\n });\n if (!this.bgScroll) {\n once(this.$el, \"hidden\", preventBackgroundScroll(this.$el), { self: true });\n }\n }\n },\n {\n name: \"beforehide\",\n self: true,\n handler() {\n this.clearTimers();\n }\n },\n {\n name: \"hide\",\n handler({ target }) {\n if (this.$el !== target) {\n active = active === null && this.$el.contains(target) && this.isToggled() ? this : active;\n return;\n }\n active = this.isActive() ? null : active;\n this.tracker.cancel();\n attr(this.targetEl, \"aria-expanded\", null);\n }\n }\n ],\n update: {\n write() {\n if (this.isToggled() && !hasClass(this.$el, this.clsEnter)) {\n this.position();\n }\n }\n },\n methods: {\n show(target = this.targetEl, delay = true) {\n if (this.isToggled() && target && this.targetEl && target !== this.targetEl) {\n this.hide(false, false);\n }\n this.targetEl = target;\n this.clearTimers();\n if (this.isActive()) {\n return;\n }\n if (active) {\n if (delay && active.isDelaying()) {\n this.showTimer = setTimeout(() => matches(target, \":hover\") && this.show(), 10);\n return;\n }\n let prev;\n while (active && prev !== active && !active.$el.contains(this.$el)) {\n prev = active;\n active.hide(false, false);\n }\n }\n if (this.container && parent(this.$el) !== this.container) {\n append(this.container, this.$el);\n }\n this.showTimer = setTimeout(\n () => this.toggleElement(this.$el, true),\n delay && this.delayShow || 0\n );\n },\n hide(delay = true, animate = true) {\n const hide = () => this.toggleElement(this.$el, false, this.animateOut && animate);\n this.clearTimers();\n this.isDelayedHide = delay;\n if (delay && this.isDelaying()) {\n this.hideTimer = setTimeout(this.hide, 50);\n } else if (delay && this.delayHide) {\n this.hideTimer = setTimeout(hide, this.delayHide);\n } else {\n hide();\n }\n },\n clearTimers() {\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n this.showTimer = null;\n this.hideTimer = null;\n },\n isActive() {\n return active === this;\n },\n isDelaying() {\n return [this.$el, ...$$(\".uk-drop\", this.$el)].some((el) => this.tracker.movesTo(el));\n },\n position() {\n const restoreScrollPosition = storeScrollPosition(this.$el);\n removeClass(this.$el, \"uk-drop-stack\");\n css(this.$el, this._style);\n this.$el.hidden = true;\n const viewports = this.target.map((target) => getViewport$1(this.$el, target));\n const viewportOffset = this.getViewportOffset(this.$el);\n const dirs = [\n [0, [\"x\", \"width\", \"left\", \"right\"]],\n [1, [\"y\", \"height\", \"top\", \"bottom\"]]\n ];\n for (const [i, [axis, prop]] of dirs) {\n if (this.axis !== axis && includes([axis, true], this.stretch)) {\n css(this.$el, {\n [prop]: Math.min(\n offset(this.boundary[i])[prop],\n viewports[i][prop] - 2 * viewportOffset\n ),\n [`overflow-${axis}`]: \"auto\"\n });\n }\n }\n const maxWidth = viewports[0].width - 2 * viewportOffset;\n this.$el.hidden = false;\n css(this.$el, \"maxWidth\", \"\");\n if (this.$el.offsetWidth > maxWidth) {\n addClass(this.$el, \"uk-drop-stack\");\n }\n css(this.$el, \"maxWidth\", maxWidth);\n this.positionAt(this.$el, this.target, this.boundary);\n for (const [i, [axis, prop, start, end]] of dirs) {\n if (this.axis === axis && includes([axis, true], this.stretch)) {\n const positionOffset = Math.abs(this.getPositionOffset());\n const targetOffset = offset(this.target[i]);\n const elOffset = offset(this.$el);\n css(this.$el, {\n [prop]: (targetOffset[start] > elOffset[start] ? targetOffset[this.inset ? end : start] - Math.max(\n offset(this.boundary[i])[start],\n viewports[i][start] + viewportOffset\n ) : Math.min(\n offset(this.boundary[i])[end],\n viewports[i][end] - viewportOffset\n ) - targetOffset[this.inset ? start : end]) - positionOffset,\n [`overflow-${axis}`]: \"auto\"\n });\n this.positionAt(this.$el, this.target, this.boundary);\n }\n }\n restoreScrollPosition();\n }\n }\n };\n function getViewport$1(el, target) {\n return offsetViewport(overflowParents(target).find((parent2) => parent2.contains(el)));\n }\n function createToggleComponent(drop) {\n const { $el } = drop.$create(\"toggle\", query(drop.toggle, drop.$el), {\n target: drop.$el,\n mode: drop.mode\n });\n attr($el, \"aria-haspopup\", true);\n return $el;\n }\n function listenForResize(drop) {\n const update = () => drop.$emit();\n const off = [\n observeViewportResize(update),\n observeResize(overflowParents(drop.$el).concat(drop.target), update)\n ];\n return () => off.map((observer) => observer.disconnect());\n }\n function listenForScroll(drop, fn = () => drop.$emit()) {\n return on([document, ...overflowParents(drop.$el)], \"scroll\", fn, {\n passive: true\n });\n }\n function listenForEscClose(drop) {\n return on(document, \"keydown\", (e) => {\n if (e.keyCode === keyMap.ESC) {\n drop.hide(false);\n }\n });\n }\n function listenForScrollClose(drop) {\n return listenForScroll(drop, () => drop.hide(false));\n }\n function listenForBackgroundClose(drop) {\n return on(document, pointerDown$1, ({ target }) => {\n if (drop.$el.contains(target)) {\n return;\n }\n once(\n document,\n `${pointerUp$1} ${pointerCancel} scroll`,\n ({ defaultPrevented, type, target: newTarget }) => {\n var _a;\n if (!defaultPrevented && type === pointerUp$1 && target === newTarget && !((_a = drop.targetEl) == null ? void 0 : _a.contains(target))) {\n drop.hide(false);\n }\n },\n true\n );\n });\n }\n\n var Dropnav = {\n mixins: [Class, Container],\n props: {\n align: String,\n clsDrop: String,\n boundary: Boolean,\n dropbar: Boolean,\n dropbarAnchor: Boolean,\n duration: Number,\n mode: Boolean,\n offset: Boolean,\n stretch: Boolean,\n delayShow: Boolean,\n delayHide: Boolean,\n target: Boolean,\n targetX: Boolean,\n targetY: Boolean,\n animation: Boolean,\n animateOut: Boolean,\n closeOnScroll: Boolean\n },\n data: {\n align: isRtl ? \"right\" : \"left\",\n clsDrop: \"uk-dropdown\",\n clsDropbar: \"uk-dropnav-dropbar\",\n boundary: true,\n dropbar: false,\n dropbarAnchor: false,\n duration: 200,\n container: false,\n selNavItem: \"> li > a, > ul > li > a\"\n },\n computed: {\n dropbarAnchor: ({ dropbarAnchor }, $el) => query(dropbarAnchor, $el) || $el,\n dropbar({ dropbar }) {\n if (!dropbar) {\n return null;\n }\n dropbar = this._dropbar || query(dropbar, this.$el) || $(`+ .${this.clsDropbar}`, this.$el);\n return dropbar ? dropbar : this._dropbar = $(\"
    \");\n },\n dropContainer(_, $el) {\n return this.container || $el;\n },\n dropdowns({ clsDrop }, $el) {\n var _a;\n const dropdowns = $$(`.${clsDrop}`, $el);\n if (this.dropContainer !== $el) {\n for (const el of $$(`.${clsDrop}`, this.dropContainer)) {\n const target = (_a = this.getDropdown(el)) == null ? void 0 : _a.targetEl;\n if (!includes(dropdowns, el) && target && this.$el.contains(target)) {\n dropdowns.push(el);\n }\n }\n }\n return dropdowns;\n },\n items({ selNavItem }, $el) {\n return $$(selNavItem, $el);\n }\n },\n watch: {\n dropbar(dropbar) {\n addClass(\n dropbar,\n \"uk-dropbar\",\n \"uk-dropbar-top\",\n this.clsDropbar,\n `uk-${this.$options.name}-dropbar`\n );\n },\n dropdowns() {\n this.initializeDropdowns();\n }\n },\n connected() {\n this.initializeDropdowns();\n },\n disconnected() {\n remove$1(this._dropbar);\n delete this._dropbar;\n },\n events: [\n {\n name: \"mouseover focusin\",\n delegate: ({ selNavItem }) => selNavItem,\n handler({ current }) {\n const active2 = this.getActive();\n if (active2 && includes(active2.mode, \"hover\") && active2.targetEl && !current.contains(active2.targetEl) && !active2.isDelaying()) {\n active2.hide(false);\n }\n }\n },\n {\n name: \"keydown\",\n self: true,\n delegate: ({ selNavItem }) => selNavItem,\n handler(e) {\n var _a;\n const { current, keyCode } = e;\n const active2 = this.getActive();\n if (keyCode === keyMap.DOWN && (active2 == null ? void 0 : active2.targetEl) === current) {\n e.preventDefault();\n (_a = $(selFocusable, active2.$el)) == null ? void 0 : _a.focus();\n }\n handleNavItemNavigation(e, this.items, active2);\n }\n },\n {\n name: \"keydown\",\n el: ({ dropContainer }) => dropContainer,\n delegate: ({ clsDrop }) => `.${clsDrop}`,\n handler(e) {\n var _a;\n const { current, keyCode, target } = e;\n if (isInput(target) || !includes(this.dropdowns, current)) {\n return;\n }\n const active2 = this.getActive();\n let next = -1;\n if (keyCode === keyMap.HOME) {\n next = 0;\n } else if (keyCode === keyMap.END) {\n next = \"last\";\n } else if (keyCode === keyMap.UP) {\n next = \"previous\";\n } else if (keyCode === keyMap.DOWN) {\n next = \"next\";\n } else if (keyCode === keyMap.ESC) {\n (_a = active2.targetEl) == null ? void 0 : _a.focus();\n }\n if (~next) {\n e.preventDefault();\n const elements = $$(selFocusable, current);\n elements[getIndex(\n next,\n elements,\n findIndex(elements, (el) => matches(el, \":focus\"))\n )].focus();\n }\n handleNavItemNavigation(e, this.items, active2);\n }\n },\n {\n name: \"mouseleave\",\n el: ({ dropbar }) => dropbar,\n filter: ({ dropbar }) => dropbar,\n handler() {\n const active2 = this.getActive();\n if (active2 && includes(active2.mode, \"hover\") && !this.dropdowns.some((el) => matches(el, \":hover\"))) {\n active2.hide();\n }\n }\n },\n {\n name: \"beforeshow\",\n el: ({ dropContainer }) => dropContainer,\n filter: ({ dropbar }) => dropbar,\n handler({ target }) {\n if (!this.isDropbarDrop(target)) {\n return;\n }\n if (this.dropbar.previousElementSibling !== this.dropbarAnchor) {\n after(this.dropbarAnchor, this.dropbar);\n }\n addClass(target, `${this.clsDrop}-dropbar`);\n }\n },\n {\n name: \"show\",\n el: ({ dropContainer }) => dropContainer,\n filter: ({ dropbar }) => dropbar,\n handler({ target }) {\n if (!this.isDropbarDrop(target)) {\n return;\n }\n const drop = this.getDropdown(target);\n const adjustHeight = () => {\n const maxBottom = Math.max(\n ...parents(target, `.${this.clsDrop}`).concat(target).map((el) => offset(el).bottom)\n );\n offset(this.dropbar, {\n left: offset(this.dropbar).left,\n top: this.getDropbarOffset(drop.getPositionOffset())\n });\n this.transitionTo(\n maxBottom - offset(this.dropbar).top + toFloat(css(target, \"marginBottom\")),\n target\n );\n };\n this._observer = observeResize([drop.$el, ...drop.target], adjustHeight);\n adjustHeight();\n }\n },\n {\n name: \"beforehide\",\n el: ({ dropContainer }) => dropContainer,\n filter: ({ dropbar }) => dropbar,\n handler(e) {\n const active2 = this.getActive();\n if (matches(this.dropbar, \":hover\") && active2.$el === e.target && this.isDropbarDrop(active2.$el) && includes(active2.mode, \"hover\") && active2.isDelayedHide && !this.items.some((el) => active2.targetEl !== el && matches(el, \":focus\"))) {\n e.preventDefault();\n }\n }\n },\n {\n name: \"hide\",\n el: ({ dropContainer }) => dropContainer,\n filter: ({ dropbar }) => dropbar,\n handler({ target }) {\n var _a;\n if (!this.isDropbarDrop(target)) {\n return;\n }\n (_a = this._observer) == null ? void 0 : _a.disconnect();\n const active2 = this.getActive();\n if (!active2 || active2.$el === target) {\n this.transitionTo(0);\n }\n }\n }\n ],\n methods: {\n getActive() {\n var _a;\n return includes(this.dropdowns, (_a = active) == null ? void 0 : _a.$el) && active;\n },\n async transitionTo(newHeight, el) {\n const { dropbar } = this;\n const oldHeight = height(dropbar);\n el = oldHeight < newHeight && el;\n await Transition.cancel([el, dropbar]);\n if (el) {\n const diff = offset(el).top - offset(dropbar).top - oldHeight;\n if (diff > 0) {\n css(el, \"transitionDelay\", `${diff / newHeight * this.duration}ms`);\n }\n }\n css(el, \"clipPath\", `polygon(0 0,100% 0,100% ${oldHeight}px,0 ${oldHeight}px)`);\n height(dropbar, oldHeight);\n await Promise.all([\n Transition.start(dropbar, { height: newHeight }, this.duration),\n Transition.start(\n el,\n { clipPath: `polygon(0 0,100% 0,100% ${newHeight}px,0 ${newHeight}px)` },\n this.duration\n ).finally(() => css(el, { clipPath: \"\", transitionDelay: \"\" }))\n ]).catch(noop);\n },\n getDropdown(el) {\n return this.$getComponent(el, \"drop\") || this.$getComponent(el, \"dropdown\");\n },\n isDropbarDrop(el) {\n return includes(this.dropdowns, el) && hasClass(el, this.clsDrop);\n },\n getDropbarOffset(offsetTop) {\n const { $el, target, targetY } = this;\n const { top, height: height2 } = offset(query(targetY || target || $el, $el));\n return top + height2 + offsetTop;\n },\n initializeDropdowns() {\n this.$create(\n \"drop\",\n this.dropdowns.filter((el) => !this.getDropdown(el)),\n {\n ...this.$props,\n flip: false,\n shift: true,\n pos: `bottom-${this.align}`,\n boundary: this.boundary === true ? this.$el : this.boundary\n }\n );\n }\n }\n };\n function handleNavItemNavigation(e, toggles, active2) {\n var _a, _b, _c;\n const { current, keyCode } = e;\n let next = -1;\n if (keyCode === keyMap.HOME) {\n next = 0;\n } else if (keyCode === keyMap.END) {\n next = \"last\";\n } else if (keyCode === keyMap.LEFT) {\n next = \"previous\";\n } else if (keyCode === keyMap.RIGHT) {\n next = \"next\";\n } else if (keyCode === keyMap.TAB) {\n (_a = active2.targetEl) == null ? void 0 : _a.focus();\n (_b = active2.hide) == null ? void 0 : _b.call(active2, false);\n }\n if (~next) {\n e.preventDefault();\n (_c = active2.hide) == null ? void 0 : _c.call(active2, false);\n toggles[getIndex(next, toggles, toggles.indexOf(active2.targetEl || current))].focus();\n }\n }\n\n var formCustom = {\n mixins: [Class],\n args: \"target\",\n props: {\n target: Boolean\n },\n data: {\n target: false\n },\n computed: {\n input: (_, $el) => $(selInput, $el),\n state() {\n return this.input.nextElementSibling;\n },\n target({ target }, $el) {\n return target && (target === true && parent(this.input) === $el && this.input.nextElementSibling || $(target, $el));\n }\n },\n update() {\n var _a;\n const { target, input } = this;\n if (!target) {\n return;\n }\n let option;\n const prop = isInput(target) ? \"value\" : \"textContent\";\n const prev = target[prop];\n const value = ((_a = input.files) == null ? void 0 : _a[0]) ? input.files[0].name : matches(input, \"select\") && (option = $$(\"option\", input).filter((el) => el.selected)[0]) ? option.textContent : input.value;\n if (prev !== value) {\n target[prop] = value;\n }\n },\n events: [\n {\n name: \"change\",\n handler() {\n this.$emit();\n }\n },\n {\n name: \"reset\",\n el: ({ $el }) => $el.closest(\"form\"),\n handler() {\n this.$emit();\n }\n }\n ]\n };\n\n var grid = {\n extends: Margin,\n mixins: [Class],\n name: \"grid\",\n props: {\n masonry: Boolean,\n parallax: String,\n parallaxStart: String,\n parallaxEnd: String,\n parallaxJustify: Boolean\n },\n data: {\n margin: \"uk-grid-margin\",\n clsStack: \"uk-grid-stack\",\n masonry: false,\n parallax: 0,\n parallaxStart: 0,\n parallaxEnd: 0,\n parallaxJustify: false\n },\n connected() {\n this.masonry && addClass(this.$el, \"uk-flex-top\", \"uk-flex-wrap-top\");\n },\n observe: scroll$1({ filter: ({ parallax, parallaxJustify }) => parallax || parallaxJustify }),\n update: [\n {\n write({ rows }) {\n toggleClass(this.$el, this.clsStack, !rows.some((row) => row.length > 1));\n },\n events: [\"resize\"]\n },\n {\n read(data) {\n const { rows } = data;\n let { masonry, parallax, parallaxJustify, margin } = this;\n parallax = Math.max(0, toPx(parallax));\n if (!(masonry || parallax || parallaxJustify) || positionedAbsolute(rows) || rows[0].some(\n (el, i) => rows.some((row) => row[i] && row[i].offsetWidth !== el.offsetWidth)\n )) {\n return data.translates = data.scrollColumns = false;\n }\n let gutter = getGutter(rows, margin);\n let columns;\n let translates;\n if (masonry) {\n [columns, translates] = applyMasonry(rows, gutter, masonry === \"next\");\n } else {\n columns = transpose(rows);\n }\n const columnHeights = columns.map(\n (column) => sumBy(column, \"offsetHeight\") + gutter * (column.length - 1)\n );\n const height = Math.max(0, ...columnHeights);\n let scrollColumns;\n let parallaxStart;\n let parallaxEnd;\n if (parallax || parallaxJustify) {\n scrollColumns = columnHeights.map(\n (hgt, i) => parallaxJustify ? height - hgt + parallax : parallax / (i % 2 || 8)\n );\n if (!parallaxJustify) {\n parallax = Math.max(\n ...columnHeights.map((hgt, i) => hgt + scrollColumns[i] - height)\n );\n }\n parallaxStart = toPx(this.parallaxStart, \"height\", this.$el, true);\n parallaxEnd = toPx(this.parallaxEnd, \"height\", this.$el, true);\n }\n return {\n columns,\n translates,\n scrollColumns,\n parallaxStart,\n parallaxEnd,\n padding: parallax,\n height: translates ? height : \"\"\n };\n },\n write({ height, padding }) {\n css(this.$el, \"paddingBottom\", padding || \"\");\n height !== false && css(this.$el, \"height\", height);\n },\n events: [\"resize\"]\n },\n {\n read({ rows, scrollColumns, parallaxStart, parallaxEnd }) {\n return {\n scrolled: scrollColumns && !positionedAbsolute(rows) ? scrolledOver(this.$el, parallaxStart, parallaxEnd) : false\n };\n },\n write({ columns, scrolled, scrollColumns, translates }) {\n if (!scrolled && !translates) {\n return;\n }\n columns.forEach(\n (column, i) => column.forEach((el, j) => {\n let [x, y] = translates && translates[i][j] || [0, 0];\n if (scrolled) {\n y += scrolled * scrollColumns[i];\n }\n css(el, \"transform\", `translate(${x}px, ${y}px)`);\n })\n );\n },\n events: [\"scroll\", \"resize\"]\n }\n ]\n };\n function positionedAbsolute(rows) {\n return rows.flat().some((el) => css(el, \"position\") === \"absolute\");\n }\n function applyMasonry(rows, gutter, next) {\n const columns = [];\n const translates = [];\n const columnHeights = Array(rows[0].length).fill(0);\n let rowHeights = 0;\n for (let row of rows) {\n if (isRtl) {\n row.reverse();\n }\n let height = 0;\n for (const j in row) {\n const { offsetWidth, offsetHeight } = row[j];\n const index = next ? j : columnHeights.indexOf(Math.min(...columnHeights));\n push(columns, index, row[j]);\n push(translates, index, [\n (index - j) * offsetWidth * (isRtl ? -1 : 1),\n columnHeights[index] - rowHeights\n ]);\n columnHeights[index] += offsetHeight + gutter;\n height = Math.max(height, offsetHeight);\n }\n rowHeights += height + gutter;\n }\n return [columns, translates];\n }\n function getGutter(rows, cls) {\n const node = rows.flat().find((el) => hasClass(el, cls));\n return toFloat(node ? css(node, \"marginTop\") : css(rows[0][0], \"paddingLeft\"));\n }\n function transpose(rows) {\n const columns = [];\n for (const row of rows) {\n for (const i in row) {\n push(columns, i, row[i]);\n }\n }\n return columns;\n }\n function push(array, index, value) {\n if (!array[index]) {\n array[index] = [];\n }\n array[index].push(value);\n }\n\n var heightMatch = {\n args: \"target\",\n props: {\n target: String,\n row: Boolean\n },\n data: {\n target: \"> *\",\n row: true\n },\n computed: {\n elements: ({ target }, $el) => $$(target, $el)\n },\n observe: resize({\n target: ({ $el, elements }) => elements.reduce((elements2, el) => elements2.concat(el, ...el.children), [$el])\n }),\n events: {\n // Hidden elements may change height when fonts load\n name: \"loadingdone\",\n el: () => document.fonts,\n handler() {\n this.$emit(\"resize\");\n }\n },\n update: {\n read() {\n return {\n rows: (this.row ? getRows(this.elements) : [this.elements]).map(match)\n };\n },\n write({ rows }) {\n for (const { heights, elements } of rows) {\n elements.forEach((el, i) => css(el, \"minHeight\", heights[i]));\n }\n },\n events: [\"resize\"]\n }\n };\n function match(elements) {\n if (elements.length < 2) {\n return { heights: [\"\"], elements };\n }\n let heights = elements.map(getHeight);\n const max = Math.max(...heights);\n return {\n heights: elements.map((el, i) => heights[i].toFixed(2) === max.toFixed(2) ? \"\" : max),\n elements\n };\n }\n function getHeight(element) {\n const style = pick(element.style, [\"display\", \"minHeight\"]);\n if (!isVisible(element)) {\n css(element, \"display\", \"block\", \"important\");\n }\n css(element, \"minHeight\", \"\");\n const height = dimensions$1(element).height - boxModelAdjust(element, \"height\", \"content-box\");\n css(element, style);\n return height;\n }\n\n var heightPlaceholder = {\n args: \"target\",\n props: {\n target: String\n },\n data: {\n target: \"\"\n },\n computed: {\n target: {\n get: ({ target }, $el) => query(target, $el),\n observe: ({ target }) => target\n }\n },\n observe: resize({ target: ({ target }) => target }),\n update: {\n read() {\n return this.target ? { height: this.target.offsetHeight } : false;\n },\n write({ height }) {\n css(this.$el, { minHeight: height });\n },\n events: [\"resize\"]\n }\n };\n\n var heightViewport = {\n props: {\n expand: Boolean,\n offsetTop: Boolean,\n offsetBottom: Boolean,\n minHeight: Number\n },\n data: {\n expand: false,\n offsetTop: false,\n offsetBottom: false,\n minHeight: 0\n },\n // check for offsetTop change\n observe: [\n viewport({ filter: ({ expand }) => expand }),\n resize({ target: ({ $el }) => scrollParents($el) })\n ],\n update: {\n read() {\n if (!isVisible(this.$el)) {\n return false;\n }\n let minHeight = \"\";\n const box = boxModelAdjust(this.$el, \"height\", \"content-box\");\n const { body, scrollingElement } = document;\n const scrollElement = scrollParent(this.$el);\n const { height: viewportHeight } = offsetViewport(\n scrollElement === body ? scrollingElement : scrollElement\n );\n const isScrollingElement = scrollingElement === scrollElement || body === scrollElement;\n minHeight = `calc(${isScrollingElement ? \"100vh\" : `${viewportHeight}px`}`;\n if (this.expand) {\n const diff = dimensions$1(scrollElement).height - dimensions$1(this.$el).height;\n minHeight += ` - ${diff}px`;\n } else {\n if (this.offsetTop) {\n if (isScrollingElement) {\n const offsetTopEl = this.offsetTop === true ? this.$el : query(this.offsetTop, this.$el);\n const { top } = offset(offsetTopEl);\n minHeight += top > 0 && top < viewportHeight / 2 ? ` - ${top}px` : \"\";\n } else {\n minHeight += ` - ${boxModelAdjust(scrollElement, \"height\", css(scrollElement, \"boxSizing\"))}px`;\n }\n }\n if (this.offsetBottom === true) {\n minHeight += ` - ${dimensions$1(this.$el.nextElementSibling).height}px`;\n } else if (isNumeric(this.offsetBottom)) {\n minHeight += ` - ${this.offsetBottom}vh`;\n } else if (this.offsetBottom && endsWith(this.offsetBottom, \"px\")) {\n minHeight += ` - ${toFloat(this.offsetBottom)}px`;\n } else if (isString(this.offsetBottom)) {\n minHeight += ` - ${dimensions$1(query(this.offsetBottom, this.$el)).height}px`;\n }\n }\n minHeight += `${box ? ` - ${box}px` : \"\"})`;\n return { minHeight };\n },\n write({ minHeight }) {\n css(this.$el, \"minHeight\", `max(${this.minHeight || 0}px, ${minHeight})`);\n },\n events: [\"resize\"]\n }\n };\n\n var closeIcon = \"\";\n\n var closeLarge = \"\";\n\n var dropParentIcon = \"\";\n\n var marker = \"\";\n\n var navParentIconLarge = \"\";\n\n var navParentIcon = \"\";\n\n var navbarParentIcon = \"\";\n\n var navbarToggleIcon = \"\";\n\n var overlayIcon = \"\";\n\n var paginationNext = \"\";\n\n var paginationPrevious = \"\";\n\n var searchIcon = \"\";\n\n var searchLarge = \"\";\n\n var searchMedium = \"\";\n\n var slidenavNextLarge = \"\";\n\n var slidenavNext = \"\";\n\n var slidenavPreviousLarge = \"\";\n\n var slidenavPrevious = \"\";\n\n var spinner = \"\";\n\n var totop = \"\";\n\n var Svg = {\n args: \"src\",\n props: {\n width: Number,\n height: Number,\n ratio: Number\n },\n data: {\n ratio: 1\n },\n connected() {\n this.svg = this.getSvg().then((el) => {\n if (!this._connected) {\n return;\n }\n const svg = insertSVG(el, this.$el);\n if (this.svgEl && svg !== this.svgEl) {\n remove$1(this.svgEl);\n }\n applyWidthAndHeight.call(this, svg, el);\n return this.svgEl = svg;\n }, noop);\n },\n disconnected() {\n this.svg.then((svg) => {\n if (this._connected) {\n return;\n }\n if (isVoidElement(this.$el)) {\n this.$el.hidden = false;\n }\n remove$1(svg);\n this.svgEl = null;\n });\n this.svg = null;\n },\n methods: {\n async getSvg() {\n }\n }\n };\n function insertSVG(el, root) {\n if (isVoidElement(root) || isTag(root, \"canvas\")) {\n root.hidden = true;\n const next = root.nextElementSibling;\n return equals(el, next) ? next : after(root, el);\n }\n const last = root.lastElementChild;\n return equals(el, last) ? last : append(root, el);\n }\n function equals(el, other) {\n return isTag(el, \"svg\") && isTag(other, \"svg\") && el.innerHTML === other.innerHTML;\n }\n function applyWidthAndHeight(el, ref) {\n const props = [\"width\", \"height\"];\n let dimensions = props.map((prop) => this[prop]);\n if (!dimensions.some((val) => val)) {\n dimensions = props.map((prop) => attr(ref, prop));\n }\n const viewBox = attr(ref, \"viewBox\");\n if (viewBox && !dimensions.some((val) => val)) {\n dimensions = viewBox.split(\" \").slice(2);\n }\n dimensions.forEach((val, i) => attr(el, props[i], toFloat(val) * this.ratio || null));\n }\n\n const icons = {\n spinner,\n totop,\n marker,\n \"close-icon\": closeIcon,\n \"close-large\": closeLarge,\n \"drop-parent-icon\": dropParentIcon,\n \"nav-parent-icon\": navParentIcon,\n \"nav-parent-icon-large\": navParentIconLarge,\n \"navbar-parent-icon\": navbarParentIcon,\n \"navbar-toggle-icon\": navbarToggleIcon,\n \"overlay-icon\": overlayIcon,\n \"pagination-next\": paginationNext,\n \"pagination-previous\": paginationPrevious,\n \"search-icon\": searchIcon,\n \"search-medium\": searchMedium,\n \"search-large\": searchLarge,\n \"search-toggle-icon\": searchIcon,\n \"slidenav-next\": slidenavNext,\n \"slidenav-next-large\": slidenavNextLarge,\n \"slidenav-previous\": slidenavPrevious,\n \"slidenav-previous-large\": slidenavPreviousLarge\n };\n const Icon = {\n install: install$1,\n mixins: [Svg],\n args: \"icon\",\n props: { icon: String },\n isIcon: true,\n beforeConnect() {\n addClass(this.$el, \"uk-icon\");\n },\n methods: {\n async getSvg() {\n const icon = getIcon(this.icon);\n if (!icon) {\n throw \"Icon not found.\";\n }\n return icon;\n }\n }\n };\n const IconComponent = {\n args: false,\n extends: Icon,\n data: (vm) => ({\n icon: hyphenate(vm.constructor.options.name)\n }),\n beforeConnect() {\n addClass(this.$el, this.$options.id);\n }\n };\n const NavParentIcon = {\n extends: IconComponent,\n beforeConnect() {\n const icon = this.$props.icon;\n this.icon = this.$el.closest(\".uk-nav-primary\") ? `${icon}-large` : icon;\n }\n };\n const Search = {\n extends: IconComponent,\n mixins: [I18n],\n i18n: { toggle: \"Open Search\", submit: \"Submit Search\" },\n beforeConnect() {\n const isToggle = hasClass(this.$el, \"uk-search-toggle\") || hasClass(this.$el, \"uk-navbar-toggle\");\n this.icon = isToggle ? \"search-toggle-icon\" : hasClass(this.$el, \"uk-search-icon\") && this.$el.closest(\".uk-search-large\") ? \"search-large\" : this.$el.closest(\".uk-search-medium\") ? \"search-medium\" : this.$props.icon;\n if (hasAttr(this.$el, \"aria-label\")) {\n return;\n }\n if (isToggle) {\n const label = this.t(\"toggle\");\n attr(this.$el, \"aria-label\", label);\n } else {\n const button = this.$el.closest(\"a,button\");\n if (button) {\n const label = this.t(\"submit\");\n attr(button, \"aria-label\", label);\n }\n }\n }\n };\n const Spinner = {\n extends: IconComponent,\n beforeConnect() {\n attr(this.$el, \"role\", \"status\");\n },\n methods: {\n async getSvg() {\n const icon = await Icon.methods.getSvg.call(this);\n if (this.ratio !== 1) {\n css($(\"circle\", icon), \"strokeWidth\", 1 / this.ratio);\n }\n return icon;\n }\n }\n };\n const ButtonComponent = {\n extends: IconComponent,\n mixins: [I18n],\n beforeConnect() {\n const button = this.$el.closest(\"a,button\");\n attr(button, \"role\", this.role !== null && isTag(button, \"a\") ? \"button\" : this.role);\n const label = this.t(\"label\");\n if (label && !hasAttr(button, \"aria-label\")) {\n attr(button, \"aria-label\", label);\n }\n }\n };\n const Slidenav = {\n extends: ButtonComponent,\n beforeConnect() {\n addClass(this.$el, \"uk-slidenav\");\n const icon = this.$props.icon;\n this.icon = hasClass(this.$el, \"uk-slidenav-large\") ? `${icon}-large` : icon;\n }\n };\n const NavbarToggleIcon = {\n extends: ButtonComponent,\n i18n: { label: \"Open menu\" }\n };\n const Close = {\n extends: ButtonComponent,\n i18n: { label: \"Close\" },\n beforeConnect() {\n this.icon = `close-${hasClass(this.$el, \"uk-close-large\") ? \"large\" : \"icon\"}`;\n }\n };\n const Marker = {\n extends: ButtonComponent,\n i18n: { label: \"Open\" }\n };\n const Totop = {\n extends: ButtonComponent,\n i18n: { label: \"Back to top\" }\n };\n const PaginationNext = {\n extends: ButtonComponent,\n i18n: { label: \"Next page\" },\n data: { role: null }\n };\n const PaginationPrevious = {\n extends: ButtonComponent,\n i18n: { label: \"Previous page\" },\n data: { role: null }\n };\n const parsed = {};\n function install$1(UIkit) {\n UIkit.icon.add = (name, svg) => {\n const added = isString(name) ? { [name]: svg } : name;\n each(added, (svg2, name2) => {\n icons[name2] = svg2;\n delete parsed[name2];\n });\n if (UIkit._initialized) {\n apply(\n document.body,\n (el) => each(UIkit.getComponents(el), (cmp) => {\n cmp.$options.isIcon && cmp.icon in added && cmp.$reset();\n })\n );\n }\n };\n }\n const aliases = { twitter: \"x\" };\n function getIcon(icon) {\n icon = aliases[icon] || icon;\n if (!icons[icon]) {\n return null;\n }\n if (!parsed[icon]) {\n parsed[icon] = fragment(icons[applyRtl(icon)] || icons[icon]);\n }\n return parsed[icon].cloneNode(true);\n }\n function applyRtl(icon) {\n return isRtl ? swap(swap(icon, \"left\", \"right\"), \"previous\", \"next\") : icon;\n }\n\n var img = {\n args: \"dataSrc\",\n props: {\n dataSrc: String,\n sources: String,\n margin: String,\n target: String,\n loading: String\n },\n data: {\n dataSrc: \"\",\n sources: false,\n margin: \"50%\",\n target: false,\n loading: \"lazy\"\n },\n connected() {\n if (this.loading !== \"lazy\") {\n this.load();\n } else if (isImg(this.$el)) {\n this.$el.loading = \"lazy\";\n setSrcAttrs(this.$el);\n }\n },\n disconnected() {\n if (this.img) {\n this.img.onload = \"\";\n }\n delete this.img;\n },\n observe: intersection({\n handler(entries, observer) {\n this.load();\n observer.disconnect();\n },\n options: ({ margin }) => ({ rootMargin: margin }),\n filter: ({ loading }) => loading === \"lazy\",\n target: ({ $el, $props }) => $props.target ? [$el, ...queryAll($props.target, $el)] : $el\n }),\n methods: {\n load() {\n if (this.img) {\n return this.img;\n }\n const image = isImg(this.$el) ? this.$el : getImageFromElement(this.$el, this.dataSrc, this.sources);\n removeAttr(image, \"loading\");\n setSrcAttrs(this.$el, image.currentSrc);\n return this.img = image;\n }\n }\n };\n function setSrcAttrs(el, src) {\n if (isImg(el)) {\n const parentNode = parent(el);\n const elements = isTag(parentNode, \"picture\") ? children(parentNode) : [el];\n elements.forEach((el2) => setSourceProps(el2, el2));\n } else if (src) {\n const change = !includes(el.style.backgroundImage, src);\n if (change) {\n css(el, \"backgroundImage\", `url(${escape(src)})`);\n trigger(el, createEvent(\"load\", false));\n }\n }\n }\n const srcProps = [\"data-src\", \"data-srcset\", \"sizes\"];\n function setSourceProps(sourceEl, targetEl) {\n for (const prop of srcProps) {\n const value = data(sourceEl, prop);\n if (value) {\n attr(targetEl, prop.replace(/^(data-)+/, \"\"), value);\n }\n }\n }\n function getImageFromElement(el, src, sources) {\n const img = new Image();\n wrapInPicture(img, sources);\n setSourceProps(el, img);\n img.onload = () => {\n setSrcAttrs(el, img.currentSrc);\n };\n attr(img, \"src\", src);\n return img;\n }\n function wrapInPicture(img, sources) {\n sources = parseSources(sources);\n if (sources.length) {\n const picture = fragment(\"\");\n for (const attrs of sources) {\n const source = fragment(\"\");\n attr(source, attrs);\n append(picture, source);\n }\n append(picture, img);\n }\n }\n function parseSources(sources) {\n if (!sources) {\n return [];\n }\n if (startsWith(sources, \"[\")) {\n try {\n sources = JSON.parse(sources);\n } catch (e) {\n sources = [];\n }\n } else {\n sources = parseOptions(sources);\n }\n if (!isArray(sources)) {\n sources = [sources];\n }\n return sources.filter((source) => !isEmpty(source));\n }\n function isImg(el) {\n return isTag(el, \"img\");\n }\n\n var inverse = {\n props: {\n target: String,\n selActive: String\n },\n data: {\n target: false,\n selActive: false\n },\n computed: {\n target: ({ target }, $el) => target ? $$(target, $el) : $el\n },\n observe: [\n intersection({\n handler(entries) {\n this.isIntersecting = entries.some(({ isIntersecting }) => isIntersecting);\n this.$emit();\n },\n target: ({ target }) => target,\n args: { intersecting: false }\n }),\n mutation({\n target: ({ target }) => target,\n options: { attributes: true, attributeFilter: [\"class\"], attributeOldValue: true }\n }),\n {\n target: ({ target }) => target,\n observe: (target, handler) => {\n const observer = observeResize(\n [...toNodes(target), document.documentElement],\n handler\n );\n const listener = [\n on(document, \"scroll itemshown itemhidden\", handler, {\n passive: true,\n capture: true\n }),\n on(document, \"show hide transitionstart\", (e) => {\n handler();\n return observer.observe(e.target);\n }),\n on(document, \"shown hidden transitionend transitioncancel\", (e) => {\n handler();\n return observer.unobserve(e.target);\n })\n ];\n return {\n observe: observer.observe.bind(observer),\n unobserve: observer.unobserve.bind(observer),\n disconnect() {\n observer.disconnect();\n listener.map((off) => off());\n }\n };\n },\n handler() {\n this.$emit();\n }\n }\n ],\n update: {\n read() {\n if (!this.isIntersecting) {\n return false;\n }\n for (const target of toNodes(this.target)) {\n let color = !this.selActive || matches(target, this.selActive) ? findTargetColor(target) : \"\";\n if (color !== false) {\n replaceClass(target, \"uk-light uk-dark\", color);\n }\n }\n }\n }\n };\n function findTargetColor(target) {\n const dim = dimensions$1(target);\n const viewport = dimensions$1(window);\n if (!intersectRect(dim, viewport)) {\n return false;\n }\n const { left, top, height, width } = dim;\n let last;\n for (const percent of [0.25, 0.5, 0.75]) {\n const elements = target.ownerDocument.elementsFromPoint(\n Math.max(0, Math.min(left + width * percent, viewport.width - 1)),\n Math.max(0, Math.min(top + height / 2, viewport.height - 1))\n );\n for (const element of elements) {\n if (target.contains(element) || !checkVisibility(element) || element.closest('[class*=\"-leave\"]') && elements.some((el) => element !== el && matches(el, '[class*=\"-enter\"]'))) {\n continue;\n }\n const color = css(element, \"--uk-inverse\");\n if (color) {\n if (color === last) {\n return `uk-${color}`;\n }\n last = color;\n break;\n }\n }\n }\n return last ? `uk-${last}` : \"\";\n }\n function checkVisibility(element) {\n if (css(element, \"visibility\") !== \"visible\") {\n return false;\n }\n while (element) {\n if (css(element, \"opacity\") === \"0\") {\n return false;\n }\n element = parent(element);\n }\n return true;\n }\n\n var leader = {\n mixins: [Class, Media],\n props: {\n fill: String\n },\n data: {\n fill: \"\",\n clsWrapper: \"uk-leader-fill\",\n clsHide: \"uk-leader-hide\",\n attrFill: \"data-fill\"\n },\n computed: {\n fill: ({ fill }, $el) => fill || css($el, \"--uk-leader-fill-content\")\n },\n connected() {\n [this.wrapper] = wrapInner(this.$el, ``);\n },\n disconnected() {\n unwrap(this.wrapper.childNodes);\n },\n observe: resize(),\n update: {\n read() {\n const width = Math.trunc(this.$el.offsetWidth / 2);\n return {\n width,\n fill: this.fill,\n hide: !this.matchMedia\n };\n },\n write({ width, fill, hide }) {\n toggleClass(this.wrapper, this.clsHide, hide);\n attr(this.wrapper, this.attrFill, new Array(width).join(fill));\n },\n events: [\"resize\"]\n }\n };\n\n var modal = {\n install,\n mixins: [Modal],\n data: {\n clsPage: \"uk-modal-page\",\n selPanel: \".uk-modal-dialog\",\n selClose: '[class*=\"uk-modal-close\"]'\n },\n events: [\n {\n name: \"fullscreenchange webkitendfullscreen\",\n capture: true,\n handler(e) {\n if (isTag(e.target, \"video\") && this.isToggled() && !document.fullscreenElement) {\n this.hide();\n }\n }\n },\n {\n name: \"show\",\n self: true,\n handler() {\n if (hasClass(this.panel, \"uk-margin-auto-vertical\")) {\n addClass(this.$el, \"uk-flex\");\n } else {\n css(this.$el, \"display\", \"block\");\n }\n height(this.$el);\n }\n },\n {\n name: \"hidden\",\n self: true,\n handler() {\n css(this.$el, \"display\", \"\");\n removeClass(this.$el, \"uk-flex\");\n }\n }\n ]\n };\n function install({ modal }) {\n modal.dialog = function(content, options) {\n const dialog = modal($(`
    ${content}
    `), {\n stack: true,\n role: \"alertdialog\",\n ...options\n });\n dialog.show();\n on(\n dialog.$el,\n \"hidden\",\n async () => {\n await Promise.resolve();\n dialog.$destroy(true);\n },\n { self: true }\n );\n return dialog;\n };\n modal.alert = function(message, options) {\n return openDialog(\n ({ i18n }) => `
    ${isString(message) ? message : html(message)}
    `,\n options\n );\n };\n modal.confirm = function(message, options) {\n return openDialog(\n ({ i18n }) => `
    ${isString(message) ? message : html(message)}
    `,\n options,\n () => Promise.reject()\n );\n };\n modal.prompt = function(message, value, options) {\n const promise = openDialog(\n ({ i18n }) => `
    `,\n options,\n () => null,\n () => input.value\n );\n const { $el } = promise.dialog;\n const input = $(\"input\", $el);\n input.value = value || \"\";\n on($el, \"show\", () => input.select());\n return promise;\n };\n modal.i18n = {\n ok: \"Ok\",\n cancel: \"Cancel\"\n };\n function openDialog(tmpl, options, hideFn = noop, submitFn = noop) {\n options = {\n bgClose: false,\n escClose: true,\n ...options,\n i18n: { ...modal.i18n, ...options == null ? void 0 : options.i18n }\n };\n const dialog = modal.dialog(tmpl(options), options);\n return assign(\n new Promise((resolve) => {\n const off = on(dialog.$el, \"hide\", () => resolve(hideFn()));\n on(dialog.$el, \"submit\", \"form\", (e) => {\n e.preventDefault();\n resolve(submitFn(dialog));\n off();\n dialog.hide();\n });\n }),\n { dialog }\n );\n }\n }\n\n var nav = {\n extends: Accordion,\n data: {\n targets: \"> .uk-parent\",\n toggle: \"> a\",\n content: \"> ul\"\n }\n };\n\n const clsNavbarTransparent = \"uk-navbar-transparent\";\n var navbar = {\n extends: Dropnav,\n props: {\n dropbarTransparentMode: Boolean\n },\n data: {\n clsDrop: \"uk-navbar-dropdown\",\n selNavItem: \".uk-navbar-nav > li > a,a.uk-navbar-item,button.uk-navbar-item,.uk-navbar-item a,.uk-navbar-item button,.uk-navbar-toggle\",\n // Simplify with :where() selector once browser target is Safari 14+\n dropbarTransparentMode: false\n },\n computed: {\n navbarContainer: (_, $el) => $el.closest(\".uk-navbar-container\")\n },\n watch: {\n items() {\n const justify = hasClass(this.$el, \"uk-navbar-justify\");\n const containers = $$(\".uk-navbar-nav, .uk-navbar-left, .uk-navbar-right\", this.$el);\n for (const container of containers) {\n const items = justify ? $$(\".uk-navbar-nav > li > a, .uk-navbar-item, .uk-navbar-toggle\", container).length : \"\";\n css(container, \"flexGrow\", items);\n }\n }\n },\n events: [\n {\n name: \"show\",\n el: ({ dropContainer }) => dropContainer,\n handler({ target }) {\n if (this.getTransparentMode(target) === \"remove\" && hasClass(this.navbarContainer, clsNavbarTransparent)) {\n removeClass(this.navbarContainer, clsNavbarTransparent);\n this._transparent = true;\n }\n }\n },\n {\n name: \"hide\",\n el: ({ dropContainer }) => dropContainer,\n async handler(e) {\n if (parent(e.target) !== this.dropContainer) {\n return;\n }\n await awaitMacroTask();\n if (!this.getActive() && this._transparent) {\n addClass(this.navbarContainer, clsNavbarTransparent);\n this._transparent = null;\n }\n }\n }\n ],\n methods: {\n getTransparentMode(el) {\n if (!this.navbarContainer) {\n return;\n }\n if (this.dropbar && this.isDropbarDrop(el)) {\n return this.dropbarTransparentMode;\n }\n const drop = this.getDropdown(el);\n if (drop && hasClass(el, \"uk-dropbar\")) {\n return drop.inset ? \"behind\" : \"remove\";\n }\n },\n getDropbarOffset(offsetTop) {\n const { top, height } = offset(this.navbarContainer);\n return top + (this.dropbarTransparentMode === \"behind\" ? 0 : height + offsetTop);\n }\n }\n };\n function awaitMacroTask() {\n return new Promise((resolve) => setTimeout(resolve));\n }\n\n var offcanvas = {\n mixins: [Modal],\n args: \"mode\",\n props: {\n mode: String,\n flip: Boolean,\n overlay: Boolean,\n swiping: Boolean\n },\n data: {\n mode: \"slide\",\n flip: false,\n overlay: false,\n clsPage: \"uk-offcanvas-page\",\n clsContainer: \"uk-offcanvas-container\",\n selPanel: \".uk-offcanvas-bar\",\n clsFlip: \"uk-offcanvas-flip\",\n clsContainerAnimation: \"uk-offcanvas-container-animation\",\n clsSidebarAnimation: \"uk-offcanvas-bar-animation\",\n clsMode: \"uk-offcanvas\",\n clsOverlay: \"uk-offcanvas-overlay\",\n selClose: \".uk-offcanvas-close\",\n container: false,\n swiping: true\n },\n computed: {\n clsFlip: ({ flip, clsFlip }) => flip ? clsFlip : \"\",\n clsOverlay: ({ overlay, clsOverlay }) => overlay ? clsOverlay : \"\",\n clsMode: ({ mode, clsMode }) => `${clsMode}-${mode}`,\n clsSidebarAnimation: ({ mode, clsSidebarAnimation }) => mode === \"none\" || mode === \"reveal\" ? \"\" : clsSidebarAnimation,\n clsContainerAnimation: ({ mode, clsContainerAnimation }) => mode !== \"push\" && mode !== \"reveal\" ? \"\" : clsContainerAnimation,\n transitionElement({ mode }) {\n return mode === \"reveal\" ? parent(this.panel) : this.panel;\n }\n },\n observe: swipe({ filter: ({ swiping }) => swiping }),\n update: {\n read() {\n if (this.isToggled() && !isVisible(this.$el)) {\n this.hide();\n }\n },\n events: [\"resize\"]\n },\n events: [\n {\n name: \"touchmove\",\n self: true,\n passive: false,\n filter: ({ overlay }) => overlay,\n handler(e) {\n e.cancelable && e.preventDefault();\n }\n },\n {\n name: \"show\",\n self: true,\n handler() {\n if (this.mode === \"reveal\" && !hasClass(parent(this.panel), this.clsMode)) {\n addClass(wrapAll(this.panel, \"
    \"), this.clsMode);\n }\n const { body, scrollingElement } = document;\n addClass(body, this.clsContainer, this.clsFlip);\n css(body, \"touchAction\", \"pan-y pinch-zoom\");\n css(this.$el, \"display\", \"block\");\n css(this.panel, \"maxWidth\", scrollingElement.clientWidth);\n addClass(this.$el, this.clsOverlay);\n addClass(\n this.panel,\n this.clsSidebarAnimation,\n this.mode === \"reveal\" ? \"\" : this.clsMode\n );\n height(body);\n addClass(body, this.clsContainerAnimation);\n this.clsContainerAnimation && suppressUserScale();\n }\n },\n {\n name: \"hide\",\n self: true,\n handler() {\n removeClass(document.body, this.clsContainerAnimation);\n css(document.body, \"touchAction\", \"\");\n }\n },\n {\n name: \"hidden\",\n self: true,\n handler() {\n this.clsContainerAnimation && resumeUserScale();\n if (this.mode === \"reveal\" && hasClass(parent(this.panel), this.clsMode)) {\n unwrap(this.panel);\n }\n removeClass(this.panel, this.clsSidebarAnimation, this.clsMode);\n removeClass(this.$el, this.clsOverlay);\n css(this.$el, \"display\", \"\");\n css(this.panel, \"maxWidth\", \"\");\n removeClass(document.body, this.clsContainer, this.clsFlip);\n }\n },\n {\n name: \"swipeLeft swipeRight\",\n handler(e) {\n if (this.isToggled() && endsWith(e.type, \"Left\") ^ this.flip) {\n this.hide();\n }\n }\n }\n ]\n };\n function suppressUserScale() {\n getViewport().content += \",user-scalable=0\";\n }\n function resumeUserScale() {\n const viewport = getViewport();\n viewport.content = viewport.content.replace(/,user-scalable=0$/, \"\");\n }\n function getViewport() {\n return $('meta[name=\"viewport\"]', document.head) || append(document.head, '');\n }\n\n var overflowAuto = {\n mixins: [Class],\n props: {\n selContainer: String,\n selContent: String,\n minHeight: Number\n },\n data: {\n selContainer: \".uk-modal\",\n selContent: \".uk-modal-dialog\",\n minHeight: 150\n },\n computed: {\n container: ({ selContainer }, $el) => $el.closest(selContainer),\n content: ({ selContent }, $el) => $el.closest(selContent)\n },\n observe: resize({\n target: ({ container, content }) => [container, content]\n }),\n update: {\n read() {\n if (!this.content || !this.container || !isVisible(this.$el)) {\n return false;\n }\n return {\n max: Math.max(\n this.minHeight,\n height(this.container) - (dimensions$1(this.content).height - height(this.$el))\n )\n };\n },\n write({ max }) {\n css(this.$el, { minHeight: this.minHeight, maxHeight: max });\n },\n events: [\"resize\"]\n }\n };\n\n var responsive = {\n props: [\"width\", \"height\"],\n connected() {\n addClass(this.$el, \"uk-responsive-width\");\n css(this.$el, \"aspectRatio\", `${this.width}/${this.height}`);\n }\n };\n\n var scroll = {\n props: {\n offset: Number\n },\n data: {\n offset: 0\n },\n connected() {\n registerClick(this);\n },\n disconnected() {\n unregisterClick(this);\n },\n methods: {\n async scrollTo(el) {\n el = el && $(el) || document.body;\n if (trigger(this.$el, \"beforescroll\", [this, el])) {\n await scrollIntoView(el, { offset: this.offset });\n trigger(this.$el, \"scrolled\", [this, el]);\n }\n }\n }\n };\n const instances = /* @__PURE__ */ new Set();\n function registerClick(cmp) {\n if (!instances.size) {\n on(document, \"click\", clickHandler);\n }\n instances.add(cmp);\n }\n function unregisterClick(cmp) {\n instances.delete(cmp);\n if (!instances.size) {\n off(document, \"click\", clickHandler);\n }\n }\n function clickHandler(e) {\n if (e.defaultPrevented) {\n return;\n }\n for (const instance of instances) {\n if (instance.$el.contains(e.target) && isSameSiteAnchor(instance.$el)) {\n e.preventDefault();\n if (window.location.href !== instance.$el.href) {\n window.history.pushState({}, \"\", instance.$el.href);\n }\n instance.scrollTo(getTargetedElement(instance.$el));\n }\n }\n }\n\n const clsInView = \"uk-scrollspy-inview\";\n var scrollspy = {\n args: \"cls\",\n props: {\n cls: String,\n target: String,\n hidden: Boolean,\n margin: String,\n repeat: Boolean,\n delay: Number\n },\n data: () => ({\n cls: \"\",\n target: false,\n hidden: true,\n margin: \"-1px\",\n repeat: false,\n delay: 0\n }),\n computed: {\n elements: ({ target }, $el) => target ? $$(target, $el) : [$el]\n },\n watch: {\n elements(elements) {\n if (this.hidden) {\n css(filter$1(elements, `:not(.${clsInView})`), \"opacity\", 0);\n }\n }\n },\n connected() {\n this.elementData = /* @__PURE__ */ new Map();\n },\n disconnected() {\n for (const [el, state] of this.elementData.entries()) {\n removeClass(el, clsInView, (state == null ? void 0 : state.cls) || \"\");\n }\n delete this.elementData;\n },\n observe: intersection({\n target: ({ elements }) => elements,\n handler(records) {\n const elements = this.elementData;\n for (const { target: el, isIntersecting } of records) {\n if (!elements.has(el)) {\n elements.set(el, {\n cls: data(el, \"uk-scrollspy-class\") || this.cls\n });\n }\n const state = elements.get(el);\n if (!this.repeat && state.show) {\n continue;\n }\n state.show = isIntersecting;\n }\n this.$emit();\n },\n options: ({ margin }) => ({ rootMargin: margin }),\n args: { intersecting: false }\n }),\n update: [\n {\n write(data) {\n for (const [el, state] of this.elementData.entries()) {\n if (state.show && !state.inview && !state.queued) {\n state.queued = true;\n data.promise = (data.promise || Promise.resolve()).then(() => new Promise((resolve) => setTimeout(resolve, this.delay))).then(() => {\n this.toggle(el, true);\n setTimeout(() => {\n state.queued = false;\n this.$emit();\n }, 300);\n });\n } else if (!state.show && state.inview && !state.queued && this.repeat) {\n this.toggle(el, false);\n }\n }\n }\n }\n ],\n methods: {\n toggle(el, inview) {\n var _a, _b;\n const state = (_a = this.elementData) == null ? void 0 : _a.get(el);\n if (!state) {\n return;\n }\n (_b = state.off) == null ? void 0 : _b.call(state);\n css(el, \"opacity\", !inview && this.hidden ? 0 : \"\");\n toggleClass(el, clsInView, inview);\n toggleClass(el, state.cls);\n let match;\n if (match = state.cls.match(/\\buk-animation-[\\w-]+/g)) {\n const removeAnimationClasses = () => removeClass(el, match);\n if (inview) {\n state.off = once(el, \"animationcancel animationend\", removeAnimationClasses, {\n self: true\n });\n } else {\n removeAnimationClasses();\n }\n }\n trigger(el, inview ? \"inview\" : \"outview\");\n state.inview = inview;\n }\n }\n };\n\n var scrollspyNav = {\n props: {\n cls: String,\n closest: Boolean,\n scroll: Boolean,\n target: String,\n offset: Number\n },\n data: {\n cls: \"uk-active\",\n closest: false,\n scroll: false,\n target: 'a[href]:not([role=\"button\"])',\n offset: 0\n },\n computed: {\n links: ({ target }, $el) => $$(target, $el).filter((el) => isSameSiteAnchor(el)),\n elements({ closest }) {\n return this.links.map((el) => el.closest(closest || \"*\"));\n }\n },\n watch: {\n links(links) {\n if (this.scroll) {\n this.$create(\"scroll\", links, { offset: this.offset });\n }\n }\n },\n observe: [intersection(), scroll$1()],\n update: [\n {\n read() {\n const targets = this.links.map((el) => getTargetedElement(el)).filter(Boolean);\n const { length } = targets;\n if (!length || !isVisible(this.$el)) {\n return false;\n }\n const scrollElement = scrollParent(targets, true);\n const { scrollTop, scrollHeight } = scrollElement;\n const viewport = offsetViewport(scrollElement);\n const max = scrollHeight - viewport.height;\n let active = false;\n if (scrollTop >= max) {\n active = length - 1;\n } else {\n const offsetBy = this.offset + dimensions$1(getCoveringElement()).height + viewport.height * 0.1;\n for (let i = 0; i < targets.length; i++) {\n if (offset(targets[i]).top - viewport.top - offsetBy > 0) {\n break;\n }\n active = +i;\n }\n }\n return { active };\n },\n write({ active }) {\n const changed = active !== false && !hasClass(this.elements[active], this.cls);\n this.links.forEach((el) => el.blur());\n for (let i = 0; i < this.elements.length; i++) {\n toggleClass(this.elements[i], this.cls, +i === active);\n }\n if (changed) {\n trigger(this.$el, \"active\", [active, this.elements[active]]);\n }\n },\n events: [\"scroll\", \"resize\"]\n }\n ]\n };\n\n var sticky = {\n mixins: [Class, Media],\n props: {\n position: String,\n top: null,\n bottom: null,\n start: null,\n end: null,\n offset: String,\n overflowFlip: Boolean,\n animation: String,\n clsActive: String,\n clsInactive: String,\n clsFixed: String,\n clsBelow: String,\n selTarget: String,\n showOnUp: Boolean,\n targetOffset: Number\n },\n data: {\n position: \"top\",\n top: false,\n bottom: false,\n start: false,\n end: false,\n offset: 0,\n overflowFlip: false,\n animation: \"\",\n clsActive: \"uk-active\",\n clsInactive: \"\",\n clsFixed: \"uk-sticky-fixed\",\n clsBelow: \"uk-sticky-below\",\n selTarget: \"\",\n showOnUp: false,\n targetOffset: false\n },\n computed: {\n target: ({ selTarget }, $el) => selTarget && $(selTarget, $el) || $el\n },\n connected() {\n this.start = coerce(this.start || this.top);\n this.end = coerce(this.end || this.bottom);\n this.placeholder = $(\"+ .uk-sticky-placeholder\", this.$el) || $('
    ');\n this.isFixed = false;\n this.setActive(false);\n },\n beforeDisconnect() {\n if (this.isFixed) {\n this.hide();\n removeClass(this.target, this.clsInactive);\n }\n reset(this.$el);\n remove$1(this.placeholder);\n this.placeholder = null;\n },\n observe: [\n viewport(),\n scroll$1({ target: () => document.scrollingElement }),\n resize({\n target: ({ $el }) => [$el, getVisibleParent($el), document.scrollingElement],\n handler(entries) {\n this.$emit(\n this._data.resized && entries.some(({ target }) => target === getVisibleParent(this.$el)) ? \"update\" : \"resize\"\n );\n this._data.resized = true;\n }\n })\n ],\n events: [\n {\n name: \"load hashchange popstate\",\n el: () => window,\n filter: ({ targetOffset }) => targetOffset !== false,\n handler() {\n const { scrollingElement } = document;\n if (!location.hash || scrollingElement.scrollTop === 0) {\n return;\n }\n setTimeout(() => {\n const targetOffset = offset($(location.hash));\n const elOffset = offset(this.$el);\n if (this.isFixed && intersectRect(targetOffset, elOffset)) {\n scrollingElement.scrollTop = Math.ceil(\n targetOffset.top - elOffset.height - toPx(this.targetOffset, \"height\", this.placeholder) - toPx(this.offset, \"height\", this.placeholder)\n );\n }\n });\n }\n }\n ],\n update: [\n {\n read({ height: height$1, width, margin, sticky }, types) {\n this.inactive = !this.matchMedia || !isVisible(this.$el) || !this.$el.offsetHeight;\n if (this.inactive) {\n return;\n }\n const dynamicViewport = height(window);\n const maxScrollHeight = Math.max(\n 0,\n document.scrollingElement.scrollHeight - dynamicViewport\n );\n if (!maxScrollHeight) {\n this.inactive = true;\n return;\n }\n const hide = this.isFixed && types.has(\"update\");\n if (hide) {\n preventTransition(this.target);\n this.hide();\n }\n if (!this.active) {\n ({ height: height$1, width } = dimensions$1(this.$el));\n margin = css(this.$el, \"margin\");\n }\n if (hide) {\n this.show();\n }\n const viewport2 = toPx(\"100vh\", \"height\");\n let position = this.position;\n if (this.overflowFlip && height$1 > viewport2) {\n position = position === \"top\" ? \"bottom\" : \"top\";\n }\n const referenceElement = this.isFixed ? this.placeholder : this.$el;\n let offset$1 = toPx(this.offset, \"height\", sticky ? this.$el : referenceElement);\n if (position === \"bottom\" && (height$1 < dynamicViewport || this.overflowFlip)) {\n offset$1 += dynamicViewport - height$1;\n }\n const overflow = this.overflowFlip ? 0 : Math.max(0, height$1 + offset$1 - viewport2);\n const topOffset = offset(referenceElement).top - // offset possible `transform: translateY` animation 'uk-animation-slide-top' while hiding\n new DOMMatrix(css(referenceElement, \"transform\")).m42;\n const elHeight = dimensions$1(this.$el).height;\n const start = (this.start === false ? topOffset : parseProp(this.start, this.$el, topOffset)) - offset$1;\n const end = this.end === false ? maxScrollHeight : Math.min(\n maxScrollHeight,\n parseProp(this.end, this.$el, topOffset + height$1, true) - elHeight - offset$1 + overflow\n );\n sticky = !this.showOnUp && start + offset$1 === topOffset && end === Math.min(\n maxScrollHeight,\n parseProp(true, this.$el, 0, true) - elHeight - offset$1 + overflow\n ) && css(getVisibleParent(this.$el), \"overflowY\") !== \"hidden\";\n return {\n start,\n end,\n offset: offset$1,\n overflow,\n height: height$1,\n elHeight,\n width,\n margin,\n top: offsetPosition(referenceElement)[0],\n sticky,\n viewport: viewport2,\n maxScrollHeight\n };\n },\n write({ height, width, margin, offset, sticky }) {\n if (this.inactive || sticky || !this.isFixed) {\n reset(this.$el);\n }\n if (this.inactive) {\n return;\n }\n if (sticky) {\n height = width = margin = 0;\n css(this.$el, { position: \"sticky\", top: offset });\n }\n const { placeholder } = this;\n css(placeholder, { height, width, margin });\n if (parent(placeholder) !== parent(this.$el) || sticky ^ index(placeholder) < index(this.$el)) {\n (sticky ? before : after)(this.$el, placeholder);\n placeholder.hidden = true;\n }\n },\n events: [\"resize\"]\n },\n {\n read({\n scroll: prevScroll = 0,\n dir: prevDir = \"down\",\n overflow,\n overflowScroll = 0,\n start,\n end,\n elHeight,\n height,\n sticky,\n maxScrollHeight\n }) {\n const scroll2 = Math.min(document.scrollingElement.scrollTop, maxScrollHeight);\n const dir = prevScroll <= scroll2 ? \"down\" : \"up\";\n const referenceElement = this.isFixed ? this.placeholder : this.$el;\n return {\n dir,\n prevDir,\n scroll: scroll2,\n prevScroll,\n below: scroll2 > offset(referenceElement).top + (sticky ? Math.min(height, elHeight) : height),\n offsetParentTop: offset(referenceElement.offsetParent).top,\n overflowScroll: clamp(\n overflowScroll + clamp(scroll2, start, end) - clamp(prevScroll, start, end),\n 0,\n overflow\n )\n };\n },\n write(data, types) {\n const isScrollUpdate = types.has(\"scroll\");\n const {\n initTimestamp = 0,\n dir,\n prevDir,\n scroll: scroll2,\n prevScroll = 0,\n top,\n start,\n below\n } = data;\n if (scroll2 < 0 || scroll2 === prevScroll && isScrollUpdate || this.showOnUp && !isScrollUpdate && !this.isFixed) {\n return;\n }\n const now = Date.now();\n if (now - initTimestamp > 300 || dir !== prevDir) {\n data.initScroll = scroll2;\n data.initTimestamp = now;\n }\n if (this.showOnUp && !this.isFixed && Math.abs(data.initScroll - scroll2) <= 30 && Math.abs(prevScroll - scroll2) <= 10) {\n return;\n }\n if (this.inactive || scroll2 < start || this.showOnUp && (scroll2 <= start || dir === \"down\" && isScrollUpdate || dir === \"up\" && !this.isFixed && !below)) {\n if (!this.isFixed) {\n if (Animation.inProgress(this.$el) && top > scroll2) {\n Animation.cancel(this.$el);\n this.hide();\n }\n return;\n }\n if (this.animation && below) {\n if (hasClass(this.$el, \"uk-animation-leave\")) {\n return;\n }\n Animation.out(this.$el, this.animation).then(() => this.hide(), noop);\n } else {\n this.hide();\n }\n } else if (this.isFixed) {\n this.update();\n } else if (this.animation && below) {\n this.show();\n Animation.in(this.$el, this.animation).catch(noop);\n } else {\n preventTransition(this.target);\n this.show();\n }\n },\n events: [\"resize\", \"resizeViewport\", \"scroll\"]\n }\n ],\n methods: {\n show() {\n this.isFixed = true;\n this.update();\n this.placeholder.hidden = false;\n },\n hide() {\n const { offset, sticky } = this._data;\n this.setActive(false);\n removeClass(this.$el, this.clsFixed, this.clsBelow);\n if (sticky) {\n css(this.$el, \"top\", offset);\n } else {\n css(this.$el, {\n position: \"\",\n top: \"\",\n width: \"\",\n marginTop: \"\"\n });\n }\n this.placeholder.hidden = true;\n this.isFixed = false;\n },\n update() {\n let {\n width,\n scroll: scroll2 = 0,\n overflow,\n overflowScroll = 0,\n start,\n end,\n offset,\n offsetParentTop,\n sticky,\n below\n } = this._data;\n const active = start !== 0 || scroll2 > start;\n if (!sticky) {\n let position = \"fixed\";\n if (scroll2 > end) {\n offset += end - offsetParentTop + overflowScroll - overflow;\n position = \"absolute\";\n }\n css(this.$el, { position, width, marginTop: 0 }, \"important\");\n }\n css(this.$el, \"top\", offset - overflowScroll);\n this.setActive(active);\n toggleClass(this.$el, this.clsBelow, below);\n addClass(this.$el, this.clsFixed);\n },\n setActive(active) {\n const prev = this.active;\n this.active = active;\n if (active) {\n replaceClass(this.target, this.clsInactive, this.clsActive);\n prev !== active && trigger(this.$el, \"active\");\n } else {\n replaceClass(this.target, this.clsActive, this.clsInactive);\n if (prev !== active) {\n preventTransition(this.target);\n trigger(this.$el, \"inactive\");\n }\n }\n }\n }\n };\n function parseProp(value, el, propOffset, padding) {\n if (!value) {\n return 0;\n }\n if (isNumeric(value) || isString(value) && value.match(/^-?\\d/)) {\n return propOffset + toPx(value, \"height\", el, true);\n } else {\n const refElement = value === true ? getVisibleParent(el) : query(value, el);\n return offset(refElement).bottom - (padding && (refElement == null ? void 0 : refElement.contains(el)) ? toFloat(css(refElement, \"paddingBottom\")) + toFloat(css(refElement, \"borderBottomWidth\")) : 0);\n }\n }\n function coerce(value) {\n if (value === \"true\") {\n return true;\n } else if (value === \"false\") {\n return false;\n }\n return value;\n }\n function reset(el) {\n css(el, { position: \"\", top: \"\", marginTop: \"\", width: \"\" });\n }\n const clsTransitionDisable = \"uk-transition-disable\";\n function preventTransition(element) {\n if (!hasClass(element, clsTransitionDisable)) {\n addClass(element, clsTransitionDisable);\n requestAnimationFrame(() => removeClass(element, clsTransitionDisable));\n }\n }\n function getVisibleParent(element) {\n while (element = parent(element)) {\n if (isVisible(element)) {\n return element;\n }\n }\n }\n\n var svg = {\n mixins: [Svg],\n args: \"src\",\n props: {\n src: String,\n icon: String,\n attributes: \"list\",\n strokeAnimation: Boolean\n },\n data: {\n strokeAnimation: false\n },\n observe: [\n mutation({\n async handler() {\n const svg = await this.svg;\n if (svg) {\n applyAttributes.call(this, svg);\n }\n },\n options: {\n attributes: true,\n attributeFilter: [\"id\", \"class\", \"style\"]\n }\n })\n ],\n async connected() {\n if (includes(this.src, \"#\")) {\n [this.src, this.icon] = this.src.split(\"#\");\n }\n const svg = await this.svg;\n if (svg) {\n applyAttributes.call(this, svg);\n if (this.strokeAnimation) {\n applyAnimation(svg);\n }\n }\n },\n methods: {\n async getSvg() {\n if (isTag(this.$el, \"img\") && !this.$el.complete && this.$el.loading === \"lazy\") {\n await new Promise((resolve) => once(this.$el, \"load\", resolve));\n }\n return parseSVG(await loadSVG(this.src), this.icon) || Promise.reject(\"SVG not found.\");\n }\n }\n };\n function applyAttributes(el) {\n const { $el } = this;\n addClass(el, attr($el, \"class\"), \"uk-svg\");\n for (let i = 0; i < $el.style.length; i++) {\n const prop = $el.style[i];\n css(el, prop, css($el, prop));\n }\n for (const attribute in this.attributes) {\n const [prop, value] = this.attributes[attribute].split(\":\", 2);\n attr(el, prop, value);\n }\n if (!this.$el.id) {\n removeAttr(el, \"id\");\n }\n }\n const loadSVG = memoize(async (src) => {\n if (src) {\n if (startsWith(src, \"data:\")) {\n return decodeURIComponent(src.split(\",\")[1]);\n } else {\n const response = await fetch(src);\n if (response.headers.get(\"Content-Type\") === \"image/svg+xml\") {\n return response.text();\n }\n }\n }\n return Promise.reject();\n });\n function parseSVG(svg, icon) {\n if (icon && includes(svg, \"/g;\n const parseSymbols = memoize(function(svg) {\n const symbols = {};\n symbolRe.lastIndex = 0;\n let match;\n while (match = symbolRe.exec(svg)) {\n symbols[match[3]] = ``;\n }\n return symbols;\n });\n function applyAnimation(el) {\n const length = getMaxPathLength(el);\n if (length) {\n css(el, \"--uk-animation-stroke\", length);\n }\n }\n\n const selDisabled = \".uk-disabled *, .uk-disabled, [disabled]\";\n var Switcher = {\n mixins: [Togglable],\n args: \"connect\",\n props: {\n connect: String,\n toggle: String,\n itemNav: String,\n active: Number,\n followFocus: Boolean,\n swiping: Boolean\n },\n data: {\n connect: \"~.uk-switcher\",\n toggle: \"> * > :first-child\",\n itemNav: false,\n active: 0,\n cls: \"uk-active\",\n attrItem: \"uk-switcher-item\",\n selVertical: \".uk-nav\",\n followFocus: false,\n swiping: true\n },\n computed: {\n connects: {\n get: ({ connect }, $el) => queryAll(connect, $el),\n observe: ({ connect }) => connect\n },\n connectChildren() {\n return this.connects.map((el) => children(el)).flat();\n },\n toggles: ({ toggle }, $el) => $$(toggle, $el),\n children(_, $el) {\n return children($el).filter(\n (child) => this.toggles.some((toggle) => child.contains(toggle))\n );\n }\n },\n watch: {\n connects(connects) {\n if (this.swiping) {\n css(connects, \"touchAction\", \"pan-y pinch-zoom\");\n }\n this.$emit();\n },\n connectChildren() {\n let index = Math.max(0, this.index());\n for (const el of this.connects) {\n children(el).forEach((child, i) => toggleClass(child, this.cls, i === index));\n }\n this.$emit();\n },\n toggles(toggles) {\n this.$emit();\n const active = this.index();\n this.show(~active ? active : toggles[this.active] || toggles[0]);\n }\n },\n connected() {\n attr(this.$el, \"role\", \"tablist\");\n },\n observe: [\n lazyload({ targets: ({ connectChildren }) => connectChildren }),\n swipe({ target: ({ connects }) => connects, filter: ({ swiping }) => swiping })\n ],\n events: [\n {\n name: \"click keydown\",\n delegate: ({ toggle }) => toggle,\n handler(e) {\n if (!matches(e.current, selDisabled) && (e.type === \"click\" || e.keyCode === keyMap.SPACE)) {\n e.preventDefault();\n this.show(e.current);\n }\n }\n },\n {\n name: \"keydown\",\n delegate: ({ toggle }) => toggle,\n handler(e) {\n const { current, keyCode } = e;\n const isVertical = matches(this.$el, this.selVertical);\n let i = keyCode === keyMap.HOME ? 0 : keyCode === keyMap.END ? \"last\" : keyCode === keyMap.LEFT && !isVertical || keyCode === keyMap.UP && isVertical ? \"previous\" : keyCode === keyMap.RIGHT && !isVertical || keyCode === keyMap.DOWN && isVertical ? \"next\" : -1;\n if (~i) {\n e.preventDefault();\n const toggles = this.toggles.filter((el) => !matches(el, selDisabled));\n const next = toggles[getIndex(i, toggles, toggles.indexOf(current))];\n next.focus();\n if (this.followFocus) {\n this.show(next);\n }\n }\n }\n },\n {\n name: \"click\",\n el: ({ $el, connects, itemNav }) => connects.concat(itemNav ? queryAll(itemNav, $el) : []),\n delegate: ({ attrItem }) => `[${attrItem}],[data-${attrItem}]`,\n handler(e) {\n if (e.target.closest(\"a,button\")) {\n e.preventDefault();\n this.show(data(e.current, this.attrItem));\n }\n }\n },\n {\n name: \"swipeRight swipeLeft\",\n filter: ({ swiping }) => swiping,\n el: ({ connects }) => connects,\n handler({ type }) {\n this.show(endsWith(type, \"Left\") ? \"next\" : \"previous\");\n }\n }\n ],\n update() {\n var _a;\n for (const el of this.connects) {\n if (isTag(el, \"ul\")) {\n attr(el, \"role\", \"presentation\");\n }\n }\n attr(children(this.$el), \"role\", \"presentation\");\n for (const index in this.toggles) {\n const toggle = this.toggles[index];\n const item = (_a = this.connects[0]) == null ? void 0 : _a.children[index];\n attr(toggle, \"role\", \"tab\");\n if (!item) {\n continue;\n }\n toggle.id = generateId(this, toggle);\n item.id = generateId(this, item);\n attr(toggle, \"aria-controls\", item.id);\n attr(item, { role: \"tabpanel\", \"aria-labelledby\": toggle.id });\n }\n attr(this.$el, \"aria-orientation\", matches(this.$el, this.selVertical) ? \"vertical\" : null);\n },\n methods: {\n index() {\n return findIndex(this.children, (el) => hasClass(el, this.cls));\n },\n show(item) {\n const toggles = this.toggles.filter((el) => !matches(el, selDisabled));\n const prev = this.index();\n const next = getIndex(\n !isNode(item) || includes(toggles, item) ? item : 0,\n toggles,\n getIndex(this.toggles[prev], toggles)\n );\n const active = getIndex(toggles[next], this.toggles);\n this.children.forEach((child, i) => {\n toggleClass(child, this.cls, active === i);\n attr(this.toggles[i], {\n \"aria-selected\": active === i,\n tabindex: active === i ? null : -1\n });\n });\n const animate = prev >= 0 && prev !== next;\n this.connects.forEach(async ({ children: children2 }) => {\n const actives = toArray(children2).filter(\n (child, i) => i !== active && hasClass(child, this.cls)\n );\n if (await this.toggleElement(actives, false, animate)) {\n await this.toggleElement(children2[active], true, animate);\n }\n });\n }\n }\n };\n\n var tab = {\n mixins: [Class],\n extends: Switcher,\n props: {\n media: Boolean\n },\n data: {\n media: 960,\n attrItem: \"uk-tab-item\",\n selVertical: \".uk-tab-left,.uk-tab-right\"\n },\n connected() {\n const cls = hasClass(this.$el, \"uk-tab-left\") ? \"uk-tab-left\" : hasClass(this.$el, \"uk-tab-right\") ? \"uk-tab-right\" : false;\n if (cls) {\n this.$create(\"toggle\", this.$el, { cls, mode: \"media\", media: this.media });\n }\n }\n };\n\n const KEY_SPACE = 32;\n var toggle = {\n mixins: [Media, Togglable],\n args: \"target\",\n props: {\n href: String,\n target: null,\n mode: \"list\",\n queued: Boolean\n },\n data: {\n href: false,\n target: false,\n mode: \"click\",\n queued: true\n },\n computed: {\n target: {\n get: ({ target }, $el) => {\n target = queryAll(target || $el.hash, $el);\n return target.length ? target : [$el];\n },\n observe: ({ target }) => target\n }\n },\n connected() {\n if (!includes(this.mode, \"media\")) {\n if (!isFocusable(this.$el)) {\n attr(this.$el, \"tabindex\", \"0\");\n }\n if (!this.cls && isTag(this.$el, \"a\")) {\n attr(this.$el, \"role\", \"button\");\n }\n }\n },\n observe: lazyload({ targets: ({ target }) => target }),\n events: [\n {\n name: pointerDown$1,\n filter: ({ mode }) => includes(mode, \"hover\"),\n handler(e) {\n this._preventClick = null;\n if (!isTouch(e) || isBoolean(this._showState) || this.$el.disabled) {\n return;\n }\n trigger(this.$el, \"focus\");\n once(\n document,\n pointerDown$1,\n () => trigger(this.$el, \"blur\"),\n true,\n (e2) => !this.$el.contains(e2.target)\n );\n if (includes(this.mode, \"click\")) {\n this._preventClick = true;\n }\n }\n },\n {\n // mouseenter mouseleave are added because of Firefox bug,\n // where pointerleave is triggered immediately after pointerenter on scroll\n name: `mouseenter mouseleave ${pointerEnter} ${pointerLeave} focus blur`,\n filter: ({ mode }) => includes(mode, \"hover\"),\n handler(e) {\n if (isTouch(e) || this.$el.disabled || document.readyState === \"loading\") {\n return;\n }\n const show = includes([\"mouseenter\", pointerEnter, \"focus\"], e.type);\n const expanded = this.isToggled(this.target);\n if (!show && (!isBoolean(this._showState) || e.type !== \"blur\" && matches(this.$el, \":focus\") || e.type === \"blur\" && matches(this.$el, \":hover\"))) {\n if (expanded === this._showState) {\n this._showState = null;\n }\n return;\n }\n if (show && isBoolean(this._showState) && expanded !== this._showState) {\n return;\n }\n this._showState = show ? expanded : null;\n this.toggle(`toggle${show ? \"show\" : \"hide\"}`);\n }\n },\n {\n name: \"keydown\",\n filter: ({ $el, mode }) => includes(mode, \"click\") && !isTag($el, \"input\"),\n handler(e) {\n if (e.keyCode === KEY_SPACE) {\n e.preventDefault();\n this.$el.click();\n }\n }\n },\n {\n name: \"click\",\n filter: ({ mode }) => [\"click\", \"hover\"].some((m) => includes(mode, m)),\n handler(e) {\n let link;\n if (this._preventClick || e.target.closest('a[href=\"#\"], a[href=\"\"]') || (link = e.target.closest(\"a[href]\")) && (!this.isToggled(this.target) || link.hash && matches(this.target, link.hash))) {\n e.preventDefault();\n }\n if (!this._preventClick && includes(this.mode, \"click\")) {\n this.toggle();\n }\n }\n },\n {\n name: \"mediachange\",\n filter: ({ mode }) => includes(mode, \"media\"),\n el: ({ target }) => target,\n handler(e, mediaObj) {\n if (mediaObj.matches ^ this.isToggled(this.target)) {\n this.toggle();\n }\n }\n }\n ],\n methods: {\n async toggle(type) {\n if (!trigger(this.target, type || \"toggle\", [this])) {\n return;\n }\n if (hasAttr(this.$el, \"aria-expanded\")) {\n attr(this.$el, \"aria-expanded\", !this.isToggled(this.target));\n }\n if (!this.queued) {\n return this.toggleElement(this.target);\n }\n const leaving = this.target.filter((el) => hasClass(el, this.clsLeave));\n if (leaving.length) {\n for (const el of this.target) {\n const isLeaving = includes(leaving, el);\n this.toggleElement(el, isLeaving, isLeaving);\n }\n return;\n }\n const toggled = this.target.filter(this.isToggled);\n if (await this.toggleElement(toggled, false)) {\n await this.toggleElement(\n this.target.filter((el) => !includes(toggled, el)),\n true\n );\n }\n }\n }\n };\n\n var components = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Accordion: Accordion,\n Alert: alert,\n Close: Close,\n Cover: cover,\n Drop: drop,\n DropParentIcon: IconComponent,\n Dropdown: drop,\n Dropnav: Dropnav,\n FormCustom: formCustom,\n Grid: grid,\n HeightMatch: heightMatch,\n HeightPlaceholder: heightPlaceholder,\n HeightViewport: heightViewport,\n Icon: Icon,\n Img: img,\n Inverse: inverse,\n Leader: leader,\n Margin: Margin,\n Marker: Marker,\n Modal: modal,\n Nav: nav,\n NavParentIcon: NavParentIcon,\n Navbar: navbar,\n NavbarParentIcon: IconComponent,\n NavbarToggleIcon: NavbarToggleIcon,\n Offcanvas: offcanvas,\n OverflowAuto: overflowAuto,\n OverlayIcon: IconComponent,\n PaginationNext: PaginationNext,\n PaginationPrevious: PaginationPrevious,\n Responsive: responsive,\n Scroll: scroll,\n Scrollspy: scrollspy,\n ScrollspyNav: scrollspyNav,\n SearchIcon: Search,\n SlidenavNext: Slidenav,\n SlidenavPrevious: Slidenav,\n Spinner: Spinner,\n Sticky: sticky,\n Svg: svg,\n Switcher: Switcher,\n Tab: tab,\n Toggle: toggle,\n Totop: Totop,\n Video: Video\n });\n\n each(components, (component, name) => App.component(name, component));\n boot(App);\n\n each(components$1, (component, name) => App.component(name, component));\n\n return App;\n\n}));\n", ";(function(root, factory) { // eslint-disable-line no-extra-semi\n var deepDiff = factory(root);\n // eslint-disable-next-line no-undef\n if (typeof define === 'function' && define.amd) {\n // AMD\n define('DeepDiff', function() { // eslint-disable-line no-undef\n return deepDiff;\n });\n } else if (typeof exports === 'object' || typeof navigator === 'object' && navigator.product.match(/ReactNative/i)) {\n // Node.js or ReactNative\n module.exports = deepDiff;\n } else {\n // Browser globals\n var _deepdiff = root.DeepDiff;\n deepDiff.noConflict = function() {\n if (root.DeepDiff === deepDiff) {\n root.DeepDiff = _deepdiff;\n }\n return deepDiff;\n };\n root.DeepDiff = deepDiff;\n }\n}(this, function(root) {\n var validKinds = ['N', 'E', 'A', 'D'];\n\n // nodejs compatible on server side and in the browser.\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n\n function Diff(kind, path) {\n Object.defineProperty(this, 'kind', {\n value: kind,\n enumerable: true\n });\n if (path && path.length) {\n Object.defineProperty(this, 'path', {\n value: path,\n enumerable: true\n });\n }\n }\n\n function DiffEdit(path, origin, value) {\n DiffEdit.super_.call(this, 'E', path);\n Object.defineProperty(this, 'lhs', {\n value: origin,\n enumerable: true\n });\n Object.defineProperty(this, 'rhs', {\n value: value,\n enumerable: true\n });\n }\n inherits(DiffEdit, Diff);\n\n function DiffNew(path, value) {\n DiffNew.super_.call(this, 'N', path);\n Object.defineProperty(this, 'rhs', {\n value: value,\n enumerable: true\n });\n }\n inherits(DiffNew, Diff);\n\n function DiffDeleted(path, value) {\n DiffDeleted.super_.call(this, 'D', path);\n Object.defineProperty(this, 'lhs', {\n value: value,\n enumerable: true\n });\n }\n inherits(DiffDeleted, Diff);\n\n function DiffArray(path, index, item) {\n DiffArray.super_.call(this, 'A', path);\n Object.defineProperty(this, 'index', {\n value: index,\n enumerable: true\n });\n Object.defineProperty(this, 'item', {\n value: item,\n enumerable: true\n });\n }\n inherits(DiffArray, Diff);\n\n function arrayRemove(arr, from, to) {\n var rest = arr.slice((to || from) + 1 || arr.length);\n arr.length = from < 0 ? arr.length + from : from;\n arr.push.apply(arr, rest);\n return arr;\n }\n\n function realTypeOf(subject) {\n var type = typeof subject;\n if (type !== 'object') {\n return type;\n }\n\n if (subject === Math) {\n return 'math';\n } else if (subject === null) {\n return 'null';\n } else if (Array.isArray(subject)) {\n return 'array';\n } else if (Object.prototype.toString.call(subject) === '[object Date]') {\n return 'date';\n } else if (typeof subject.toString === 'function' && /^\\/.*\\//.test(subject.toString())) {\n return 'regexp';\n }\n return 'object';\n }\n\n // http://werxltd.com/wp/2010/05/13/javascript-implementation-of-javas-string-hashcode-method/\n function hashThisString(string) {\n var hash = 0;\n if (string.length === 0) { return hash; }\n for (var i = 0; i < string.length; i++) {\n var char = string.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return hash;\n }\n\n // Gets a hash of the given object in an array order-independent fashion\n // also object key order independent (easier since they can be alphabetized)\n function getOrderIndependentHash(object) {\n var accum = 0;\n var type = realTypeOf(object);\n\n if (type === 'array') {\n object.forEach(function (item) {\n // Addition is commutative so this is order indep\n accum += getOrderIndependentHash(item);\n });\n\n var arrayString = '[type: array, hash: ' + accum + ']';\n return accum + hashThisString(arrayString);\n }\n\n if (type === 'object') {\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n var keyValueString = '[ type: object, key: ' + key + ', value hash: ' + getOrderIndependentHash(object[key]) + ']';\n accum += hashThisString(keyValueString);\n }\n }\n\n return accum;\n }\n\n // Non object, non array...should be good?\n var stringToHash = '[ type: ' + type + ' ; value: ' + object + ']';\n return accum + hashThisString(stringToHash);\n }\n\n function deepDiff(lhs, rhs, changes, prefilter, path, key, stack, orderIndependent) {\n changes = changes || [];\n path = path || [];\n stack = stack || [];\n var currentPath = path.slice(0);\n if (typeof key !== 'undefined' && key !== null) {\n if (prefilter) {\n if (typeof (prefilter) === 'function' && prefilter(currentPath, key)) {\n return;\n } else if (typeof (prefilter) === 'object') {\n if (prefilter.prefilter && prefilter.prefilter(currentPath, key)) {\n return;\n }\n if (prefilter.normalize) {\n var alt = prefilter.normalize(currentPath, key, lhs, rhs);\n if (alt) {\n lhs = alt[0];\n rhs = alt[1];\n }\n }\n }\n }\n currentPath.push(key);\n }\n\n // Use string comparison for regexes\n if (realTypeOf(lhs) === 'regexp' && realTypeOf(rhs) === 'regexp') {\n lhs = lhs.toString();\n rhs = rhs.toString();\n }\n\n var ltype = typeof lhs;\n var rtype = typeof rhs;\n var i, j, k, other;\n\n var ldefined = ltype !== 'undefined' ||\n (stack && (stack.length > 0) && stack[stack.length - 1].lhs &&\n Object.getOwnPropertyDescriptor(stack[stack.length - 1].lhs, key));\n var rdefined = rtype !== 'undefined' ||\n (stack && (stack.length > 0) && stack[stack.length - 1].rhs &&\n Object.getOwnPropertyDescriptor(stack[stack.length - 1].rhs, key));\n\n if (!ldefined && rdefined) {\n changes.push(new DiffNew(currentPath, rhs));\n } else if (!rdefined && ldefined) {\n changes.push(new DiffDeleted(currentPath, lhs));\n } else if (realTypeOf(lhs) !== realTypeOf(rhs)) {\n changes.push(new DiffEdit(currentPath, lhs, rhs));\n } else if (realTypeOf(lhs) === 'date' && (lhs - rhs) !== 0) {\n changes.push(new DiffEdit(currentPath, lhs, rhs));\n } else if (ltype === 'object' && lhs !== null && rhs !== null) {\n for (i = stack.length - 1; i > -1; --i) {\n if (stack[i].lhs === lhs) {\n other = true;\n break;\n }\n }\n if (!other) {\n stack.push({ lhs: lhs, rhs: rhs });\n if (Array.isArray(lhs)) {\n // If order doesn't matter, we need to sort our arrays\n if (orderIndependent) {\n lhs.sort(function (a, b) {\n return getOrderIndependentHash(a) - getOrderIndependentHash(b);\n });\n\n rhs.sort(function (a, b) {\n return getOrderIndependentHash(a) - getOrderIndependentHash(b);\n });\n }\n i = rhs.length - 1;\n j = lhs.length - 1;\n while (i > j) {\n changes.push(new DiffArray(currentPath, i, new DiffNew(undefined, rhs[i--])));\n }\n while (j > i) {\n changes.push(new DiffArray(currentPath, j, new DiffDeleted(undefined, lhs[j--])));\n }\n for (; i >= 0; --i) {\n deepDiff(lhs[i], rhs[i], changes, prefilter, currentPath, i, stack, orderIndependent);\n }\n } else {\n var akeys = Object.keys(lhs);\n var pkeys = Object.keys(rhs);\n for (i = 0; i < akeys.length; ++i) {\n k = akeys[i];\n other = pkeys.indexOf(k);\n if (other >= 0) {\n deepDiff(lhs[k], rhs[k], changes, prefilter, currentPath, k, stack, orderIndependent);\n pkeys[other] = null;\n } else {\n deepDiff(lhs[k], undefined, changes, prefilter, currentPath, k, stack, orderIndependent);\n }\n }\n for (i = 0; i < pkeys.length; ++i) {\n k = pkeys[i];\n if (k) {\n deepDiff(undefined, rhs[k], changes, prefilter, currentPath, k, stack, orderIndependent);\n }\n }\n }\n stack.length = stack.length - 1;\n } else if (lhs !== rhs) {\n // lhs is contains a cycle at this element and it differs from rhs\n changes.push(new DiffEdit(currentPath, lhs, rhs));\n }\n } else if (lhs !== rhs) {\n if (!(ltype === 'number' && isNaN(lhs) && isNaN(rhs))) {\n changes.push(new DiffEdit(currentPath, lhs, rhs));\n }\n }\n }\n\n function observableDiff(lhs, rhs, observer, prefilter, orderIndependent) {\n var changes = [];\n deepDiff(lhs, rhs, changes, prefilter, null, null, null, orderIndependent);\n if (observer) {\n for (var i = 0; i < changes.length; ++i) {\n observer(changes[i]);\n }\n }\n return changes;\n }\n\n function orderIndependentDeepDiff(lhs, rhs, changes, prefilter, path, key, stack) {\n return deepDiff(lhs, rhs, changes, prefilter, path, key, stack, true);\n }\n\n function accumulateDiff(lhs, rhs, prefilter, accum) {\n var observer = (accum) ?\n function (difference) {\n if (difference) {\n accum.push(difference);\n }\n } : undefined;\n var changes = observableDiff(lhs, rhs, observer, prefilter);\n return (accum) ? accum : (changes.length) ? changes : undefined;\n }\n\n function accumulateOrderIndependentDiff(lhs, rhs, prefilter, accum) {\n var observer = (accum) ?\n function (difference) {\n if (difference) {\n accum.push(difference);\n }\n } : undefined;\n var changes = observableDiff(lhs, rhs, observer, prefilter, true);\n return (accum) ? accum : (changes.length) ? changes : undefined;\n }\n\n function applyArrayChange(arr, index, change) {\n if (change.path && change.path.length) {\n var it = arr[index],\n i, u = change.path.length - 1;\n for (i = 0; i < u; i++) {\n it = it[change.path[i]];\n }\n switch (change.kind) {\n case 'A':\n applyArrayChange(it[change.path[i]], change.index, change.item);\n break;\n case 'D':\n delete it[change.path[i]];\n break;\n case 'E':\n case 'N':\n it[change.path[i]] = change.rhs;\n break;\n }\n } else {\n switch (change.kind) {\n case 'A':\n applyArrayChange(arr[index], change.index, change.item);\n break;\n case 'D':\n arr = arrayRemove(arr, index);\n break;\n case 'E':\n case 'N':\n arr[index] = change.rhs;\n break;\n }\n }\n return arr;\n }\n\n function applyChange(target, source, change) {\n if (typeof change === 'undefined' && source && ~validKinds.indexOf(source.kind)) {\n change = source;\n }\n if (target && change && change.kind) {\n var it = target,\n i = -1,\n last = change.path ? change.path.length - 1 : 0;\n while (++i < last) {\n if (typeof it[change.path[i]] === 'undefined') {\n it[change.path[i]] = (typeof change.path[i + 1] !== 'undefined' && typeof change.path[i + 1] === 'number') ? [] : {};\n }\n it = it[change.path[i]];\n }\n switch (change.kind) {\n case 'A':\n if (change.path && typeof it[change.path[i]] === 'undefined') {\n it[change.path[i]] = [];\n }\n applyArrayChange(change.path ? it[change.path[i]] : it, change.index, change.item);\n break;\n case 'D':\n delete it[change.path[i]];\n break;\n case 'E':\n case 'N':\n it[change.path[i]] = change.rhs;\n break;\n }\n }\n }\n\n function revertArrayChange(arr, index, change) {\n if (change.path && change.path.length) {\n // the structure of the object at the index has changed...\n var it = arr[index],\n i, u = change.path.length - 1;\n for (i = 0; i < u; i++) {\n it = it[change.path[i]];\n }\n switch (change.kind) {\n case 'A':\n revertArrayChange(it[change.path[i]], change.index, change.item);\n break;\n case 'D':\n it[change.path[i]] = change.lhs;\n break;\n case 'E':\n it[change.path[i]] = change.lhs;\n break;\n case 'N':\n delete it[change.path[i]];\n break;\n }\n } else {\n // the array item is different...\n switch (change.kind) {\n case 'A':\n revertArrayChange(arr[index], change.index, change.item);\n break;\n case 'D':\n arr[index] = change.lhs;\n break;\n case 'E':\n arr[index] = change.lhs;\n break;\n case 'N':\n arr = arrayRemove(arr, index);\n break;\n }\n }\n return arr;\n }\n\n function revertChange(target, source, change) {\n if (target && source && change && change.kind) {\n var it = target,\n i, u;\n u = change.path.length - 1;\n for (i = 0; i < u; i++) {\n if (typeof it[change.path[i]] === 'undefined') {\n it[change.path[i]] = {};\n }\n it = it[change.path[i]];\n }\n switch (change.kind) {\n case 'A':\n // Array was modified...\n // it will be an array...\n revertArrayChange(it[change.path[i]], change.index, change.item);\n break;\n case 'D':\n // Item was deleted...\n it[change.path[i]] = change.lhs;\n break;\n case 'E':\n // Item was edited...\n it[change.path[i]] = change.lhs;\n break;\n case 'N':\n // Item is new...\n delete it[change.path[i]];\n break;\n }\n }\n }\n\n function applyDiff(target, source, filter) {\n if (target && source) {\n var onChange = function (change) {\n if (!filter || filter(target, source, change)) {\n applyChange(target, source, change);\n }\n };\n observableDiff(target, source, onChange);\n }\n }\n\n Object.defineProperties(accumulateDiff, {\n\n diff: {\n value: accumulateDiff,\n enumerable: true\n },\n orderIndependentDiff: {\n value: accumulateOrderIndependentDiff,\n enumerable: true\n },\n observableDiff: {\n value: observableDiff,\n enumerable: true\n },\n orderIndependentObservableDiff: {\n value: orderIndependentDeepDiff,\n enumerable: true\n },\n orderIndepHash: {\n value: getOrderIndependentHash,\n enumerable: true\n },\n applyDiff: {\n value: applyDiff,\n enumerable: true\n },\n applyChange: {\n value: applyChange,\n enumerable: true\n },\n revertChange: {\n value: revertChange,\n enumerable: true\n },\n isConflict: {\n value: function () {\n return typeof $conflict !== 'undefined';\n },\n enumerable: true\n }\n });\n\n // hackish...\n accumulateDiff.DeepDiff = accumulateDiff;\n // ...but works with:\n // import DeepDiff from 'deep-diff'\n // import { DeepDiff } from 'deep-diff'\n // const DeepDiff = require('deep-diff');\n // const { DeepDiff } = require('deep-diff');\n\n if (root) {\n root.DeepDiff = accumulateDiff;\n }\n\n return accumulateDiff;\n}));\n", "function ok() {\n return true;\n}\nfunction notOk() {\n return false;\n}\nfunction undef() {\n return undefined;\n}\nconst NOT_TYPED_FUNCTION = 'Argument is not a typed-function.';\n\n/**\n * @typedef {{\n * params: Param[],\n * fn: function,\n * test: function,\n * implementation: function\n * }} Signature\n *\n * @typedef {{\n * types: Type[],\n * hasAny: boolean,\n * hasConversion: boolean,\n * restParam: boolean\n * }} Param\n *\n * @typedef {{\n * name: string,\n * typeIndex: number,\n * test: function,\n * isAny: boolean,\n * conversion?: ConversionDef,\n * conversionIndex: number,\n * }} Type\n *\n * @typedef {{\n * from: string,\n * to: string,\n * convert: function (*) : *\n * }} ConversionDef\n *\n * @typedef {{\n * name: string,\n * test: function(*) : boolean,\n * isAny?: boolean\n * }} TypeDef\n */\n\n/**\n * @returns {() => function}\n */\nfunction create() {\n // data type tests\n\n /**\n * Returns true if the argument is a non-null \"plain\" object\n */\n function isPlainObject(x) {\n return typeof x === 'object' && x !== null && x.constructor === Object;\n }\n const _types = [{\n name: 'number',\n test: function (x) {\n return typeof x === 'number';\n }\n }, {\n name: 'string',\n test: function (x) {\n return typeof x === 'string';\n }\n }, {\n name: 'boolean',\n test: function (x) {\n return typeof x === 'boolean';\n }\n }, {\n name: 'Function',\n test: function (x) {\n return typeof x === 'function';\n }\n }, {\n name: 'Array',\n test: Array.isArray\n }, {\n name: 'Date',\n test: function (x) {\n return x instanceof Date;\n }\n }, {\n name: 'RegExp',\n test: function (x) {\n return x instanceof RegExp;\n }\n }, {\n name: 'Object',\n test: isPlainObject\n }, {\n name: 'null',\n test: function (x) {\n return x === null;\n }\n }, {\n name: 'undefined',\n test: function (x) {\n return x === undefined;\n }\n }];\n const anyType = {\n name: 'any',\n test: ok,\n isAny: true\n };\n\n // Data structures to track the types. As these are local variables in\n // create(), each typed universe will get its own copy, but the variables\n // will only be accessible through the (closures of the) functions supplied\n // as properties of the typed object, not directly.\n // These will be initialized in clear() below\n let typeMap; // primary store of all types\n let typeList; // Array of just type names, for the sake of ordering\n\n // And similar data structures for the type conversions:\n let nConversions = 0;\n // the actual conversions are stored on a property of the destination types\n\n // This is a temporary object, will be replaced with a function at the end\n let typed = {\n createCount: 0\n };\n\n /**\n * Takes a type name and returns the corresponding official type object\n * for that type.\n *\n * @param {string} typeName\n * @returns {TypeDef} type\n */\n function findType(typeName) {\n const type = typeMap.get(typeName);\n if (type) {\n return type;\n }\n // Remainder is error handling\n let message = 'Unknown type \"' + typeName + '\"';\n const name = typeName.toLowerCase();\n let otherName;\n for (otherName of typeList) {\n if (otherName.toLowerCase() === name) {\n message += '. Did you mean \"' + otherName + '\" ?';\n break;\n }\n }\n throw new TypeError(message);\n }\n\n /**\n * Adds an array `types` of type definitions to this typed instance.\n * Each type definition should be an object with properties:\n * 'name' - a string giving the name of the type; 'test' - function\n * returning a boolean that tests membership in the type; and optionally\n * 'isAny' - true only for the 'any' type.\n *\n * The second optional argument, `before`, gives the name of a type that\n * these types should be added before. The new types are added in the\n * order specified.\n * @param {TypeDef[]} types\n * @param {string | boolean} [beforeSpec='any'] before\n */\n function addTypes(types) {\n let beforeSpec = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'any';\n const beforeIndex = beforeSpec ? findType(beforeSpec).index : typeList.length;\n const newTypes = [];\n for (let i = 0; i < types.length; ++i) {\n if (!types[i] || typeof types[i].name !== 'string' || typeof types[i].test !== 'function') {\n throw new TypeError('Object with properties {name: string, test: function} expected');\n }\n const typeName = types[i].name;\n if (typeMap.has(typeName)) {\n throw new TypeError('Duplicate type name \"' + typeName + '\"');\n }\n newTypes.push(typeName);\n typeMap.set(typeName, {\n name: typeName,\n test: types[i].test,\n isAny: types[i].isAny,\n index: beforeIndex + i,\n conversionsTo: [] // Newly added type can't have any conversions to it\n });\n }\n // update the typeList\n const affectedTypes = typeList.slice(beforeIndex);\n typeList = typeList.slice(0, beforeIndex).concat(newTypes).concat(affectedTypes);\n // Fix the indices\n for (let i = beforeIndex + newTypes.length; i < typeList.length; ++i) {\n typeMap.get(typeList[i]).index = i;\n }\n }\n\n /**\n * Removes all types and conversions from this typed instance.\n * May cause previously constructed typed-functions to throw\n * strange errors when they are called with types that do not\n * match any of their signatures.\n */\n function clear() {\n typeMap = new Map();\n typeList = [];\n nConversions = 0;\n addTypes([anyType], false);\n }\n\n // initialize the types to the default list\n clear();\n addTypes(_types);\n\n /**\n * Removes all conversions, leaving the types alone.\n */\n function clearConversions() {\n let typeName;\n for (typeName of typeList) {\n typeMap.get(typeName).conversionsTo = [];\n }\n nConversions = 0;\n }\n\n /**\n * Find the type names that match a value.\n * @param {*} value\n * @return {string[]} Array of names of types for which\n * the type test matches the value.\n */\n function findTypeNames(value) {\n const matches = typeList.filter(name => {\n const type = typeMap.get(name);\n return !type.isAny && type.test(value);\n });\n if (matches.length) {\n return matches;\n }\n return ['any'];\n }\n\n /**\n * Check if an entity is a typed function created by any instance\n * @param {any} entity\n * @returns {boolean}\n */\n function isTypedFunction(entity) {\n return entity && typeof entity === 'function' && '_typedFunctionData' in entity;\n }\n\n /**\n * Find a specific signature from a (composed) typed function, for example:\n *\n * typed.findSignature(fn, ['number', 'string'])\n * typed.findSignature(fn, 'number, string')\n * typed.findSignature(fn, 'number,string', {exact: true})\n *\n * This function findSignature will by default return the best match to\n * the given signature, possibly employing type conversions.\n *\n * The (optional) third argument is a plain object giving options\n * controlling the signature search. Currently the only implemented\n * option is `exact`: if specified as true (default is false), only\n * exact matches will be returned (i.e. signatures for which `fn` was\n * directly defined). Note that a (possibly different) type matching\n * `any`, or one or more instances of TYPE matching `...TYPE` are\n * considered exact matches in this regard, as no conversions are used.\n *\n * This function returns a \"signature\" object, as does `typed.resolve()`,\n * which is a plain object with four keys: `params` (the array of parameters\n * for this signature), `fn` (the originally supplied function for this\n * signature), `test` (a generated function that determines if an argument\n * list matches this signature, and `implementation` (the function to call\n * on a matching argument list, that performs conversions if necessary and\n * then calls the originally supplied function).\n *\n * @param {Function} fn A typed-function\n * @param {string | string[]} signature\n * Signature to be found, can be an array or a comma separated string.\n * @param {object} options Controls the signature search as documented\n * @return {{ params: Param[], fn: function, test: function, implementation: function }}\n * Returns the matching signature, or throws an error when no signature\n * is found.\n */\n function findSignature(fn, signature, options) {\n if (!isTypedFunction(fn)) {\n throw new TypeError(NOT_TYPED_FUNCTION);\n }\n\n // Canonicalize input\n const exact = options && options.exact;\n const stringSignature = Array.isArray(signature) ? signature.join(',') : signature;\n const params = parseSignature(stringSignature);\n const canonicalSignature = stringifyParams(params);\n\n // First hope we get lucky and exactly match a signature\n if (!exact || canonicalSignature in fn.signatures) {\n // OK, we can check the internal signatures\n const match = fn._typedFunctionData.signatureMap.get(canonicalSignature);\n if (match) {\n return match;\n }\n }\n\n // Oh well, we did not; so we have to go back and check the parameters\n // one by one, in order to catch things like `any` and rest params.\n // Note here we can assume there is at least one parameter, because\n // the empty signature would have matched successfully above.\n const nParams = params.length;\n let remainingSignatures;\n if (exact) {\n remainingSignatures = [];\n let name;\n for (name in fn.signatures) {\n remainingSignatures.push(fn._typedFunctionData.signatureMap.get(name));\n }\n } else {\n remainingSignatures = fn._typedFunctionData.signatures;\n }\n for (let i = 0; i < nParams; ++i) {\n const want = params[i];\n const filteredSignatures = [];\n let possibility;\n for (possibility of remainingSignatures) {\n const have = getParamAtIndex(possibility.params, i);\n if (!have || want.restParam && !have.restParam) {\n continue;\n }\n if (!have.hasAny) {\n // have to check all of the wanted types are available\n const haveTypes = paramTypeSet(have);\n if (want.types.some(wtype => !haveTypes.has(wtype.name))) {\n continue;\n }\n }\n // OK, this looks good\n filteredSignatures.push(possibility);\n }\n remainingSignatures = filteredSignatures;\n if (remainingSignatures.length === 0) break;\n }\n // Return the first remaining signature that was totally matched:\n let candidate;\n for (candidate of remainingSignatures) {\n if (candidate.params.length <= nParams) {\n return candidate;\n }\n }\n throw new TypeError('Signature not found (signature: ' + (fn.name || 'unnamed') + '(' + stringifyParams(params, ', ') + '))');\n }\n\n /**\n * Find the proper function to call for a specific signature from\n * a (composed) typed function, for example:\n *\n * typed.find(fn, ['number', 'string'])\n * typed.find(fn, 'number, string')\n * typed.find(fn, 'number,string', {exact: true})\n *\n * This function find will by default return the best match to\n * the given signature, possibly employing type conversions (and returning\n * a function that will perform those conversions as needed). The\n * (optional) third argument is a plain object giving options contolling\n * the signature search. Currently only the option `exact` is implemented,\n * which defaults to \"false\". If `exact` is specified as true, then only\n * exact matches will be returned (i.e. signatures for which `fn` was\n * directly defined). Uses of `any` and `...TYPE` are considered exact if\n * no conversions are necessary to apply the corresponding function.\n *\n * @param {Function} fn A typed-function\n * @param {string | string[]} signature\n * Signature to be found, can be an array or a comma separated string.\n * @param {object} options Controls the signature match as documented\n * @return {function}\n * Returns the function to call for the given signature, or throws an\n * error if no match is found.\n */\n function find(fn, signature, options) {\n return findSignature(fn, signature, options).implementation;\n }\n\n /**\n * Convert a given value to another data type, specified by type name.\n *\n * @param {*} value\n * @param {string} typeName\n */\n function convert(value, typeName) {\n // check conversion is needed\n const type = findType(typeName);\n if (type.test(value)) {\n return value;\n }\n const conversions = type.conversionsTo;\n if (conversions.length === 0) {\n throw new Error('There are no conversions to ' + typeName + ' defined.');\n }\n for (let i = 0; i < conversions.length; i++) {\n const fromType = findType(conversions[i].from);\n if (fromType.test(value)) {\n return conversions[i].convert(value);\n }\n }\n throw new Error('Cannot convert ' + value + ' to ' + typeName);\n }\n\n /**\n * Stringify parameters in a normalized way\n * @param {Param[]} params\n * @param {string} [','] separator\n * @return {string}\n */\n function stringifyParams(params) {\n let separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ',';\n return params.map(p => p.name).join(separator);\n }\n\n /**\n * Parse a parameter, like \"...number | boolean\"\n * @param {string} param\n * @return {Param} param\n */\n function parseParam(param) {\n const restParam = param.indexOf('...') === 0;\n const types = !restParam ? param : param.length > 3 ? param.slice(3) : 'any';\n const typeDefs = types.split('|').map(s => findType(s.trim()));\n let hasAny = false;\n let paramName = restParam ? '...' : '';\n const exactTypes = typeDefs.map(function (type) {\n hasAny = type.isAny || hasAny;\n paramName += type.name + '|';\n return {\n name: type.name,\n typeIndex: type.index,\n test: type.test,\n isAny: type.isAny,\n conversion: null,\n conversionIndex: -1\n };\n });\n return {\n types: exactTypes,\n name: paramName.slice(0, -1),\n // remove trailing '|' from above\n hasAny,\n hasConversion: false,\n restParam\n };\n }\n\n /**\n * Expands a parsed parameter with the types available from currently\n * defined conversions.\n * @param {Param} param\n * @return {Param} param\n */\n function expandParam(param) {\n const typeNames = param.types.map(t => t.name);\n const matchingConversions = availableConversions(typeNames);\n let hasAny = param.hasAny;\n let newName = param.name;\n const convertibleTypes = matchingConversions.map(function (conversion) {\n const type = findType(conversion.from);\n hasAny = type.isAny || hasAny;\n newName += '|' + conversion.from;\n return {\n name: conversion.from,\n typeIndex: type.index,\n test: type.test,\n isAny: type.isAny,\n conversion,\n conversionIndex: conversion.index\n };\n });\n return {\n types: param.types.concat(convertibleTypes),\n name: newName,\n hasAny,\n hasConversion: convertibleTypes.length > 0,\n restParam: param.restParam\n };\n }\n\n /**\n * Return the set of type names in a parameter.\n * Caches the result for efficiency\n *\n * @param {Param} param\n * @return {Set} typenames\n */\n function paramTypeSet(param) {\n if (!param.typeSet) {\n param.typeSet = new Set();\n param.types.forEach(type => param.typeSet.add(type.name));\n }\n return param.typeSet;\n }\n\n /**\n * Parse a signature with comma separated parameters,\n * like \"number | boolean, ...string\"\n *\n * @param {string} signature\n * @return {Param[]} params\n */\n function parseSignature(rawSignature) {\n const params = [];\n if (typeof rawSignature !== 'string') {\n throw new TypeError('Signatures must be strings');\n }\n const signature = rawSignature.trim();\n if (signature === '') {\n return params;\n }\n const rawParams = signature.split(',');\n for (let i = 0; i < rawParams.length; ++i) {\n const parsedParam = parseParam(rawParams[i].trim());\n if (parsedParam.restParam && i !== rawParams.length - 1) {\n throw new SyntaxError('Unexpected rest parameter \"' + rawParams[i] + '\": ' + 'only allowed for the last parameter');\n }\n // if invalid, short-circuit (all the types may have been filtered)\n if (parsedParam.types.length === 0) {\n return null;\n }\n params.push(parsedParam);\n }\n return params;\n }\n\n /**\n * Test whether a set of params contains a restParam\n * @param {Param[]} params\n * @return {boolean} Returns true when the last parameter is a restParam\n */\n function hasRestParam(params) {\n const param = last(params);\n return param ? param.restParam : false;\n }\n\n /**\n * Create a type test for a single parameter, which can have one or multiple\n * types.\n * @param {Param} param\n * @return {function(x: *) : boolean} Returns a test function\n */\n function compileTest(param) {\n if (!param || param.types.length === 0) {\n // nothing to do\n return ok;\n } else if (param.types.length === 1) {\n return findType(param.types[0].name).test;\n } else if (param.types.length === 2) {\n const test0 = findType(param.types[0].name).test;\n const test1 = findType(param.types[1].name).test;\n return function or(x) {\n return test0(x) || test1(x);\n };\n } else {\n // param.types.length > 2\n const tests = param.types.map(function (type) {\n return findType(type.name).test;\n });\n return function or(x) {\n for (let i = 0; i < tests.length; i++) {\n if (tests[i](x)) {\n return true;\n }\n }\n return false;\n };\n }\n }\n\n /**\n * Create a test for all parameters of a signature\n * @param {Param[]} params\n * @return {function(args: Array<*>) : boolean}\n */\n function compileTests(params) {\n let tests, test0, test1;\n if (hasRestParam(params)) {\n // variable arguments like '...number'\n tests = initial(params).map(compileTest);\n const varIndex = tests.length;\n const lastTest = compileTest(last(params));\n const testRestParam = function (args) {\n for (let i = varIndex; i < args.length; i++) {\n if (!lastTest(args[i])) {\n return false;\n }\n }\n return true;\n };\n return function testArgs(args) {\n for (let i = 0; i < tests.length; i++) {\n if (!tests[i](args[i])) {\n return false;\n }\n }\n return testRestParam(args) && args.length >= varIndex + 1;\n };\n } else {\n // no variable arguments\n if (params.length === 0) {\n return function testArgs(args) {\n return args.length === 0;\n };\n } else if (params.length === 1) {\n test0 = compileTest(params[0]);\n return function testArgs(args) {\n return test0(args[0]) && args.length === 1;\n };\n } else if (params.length === 2) {\n test0 = compileTest(params[0]);\n test1 = compileTest(params[1]);\n return function testArgs(args) {\n return test0(args[0]) && test1(args[1]) && args.length === 2;\n };\n } else {\n // arguments.length > 2\n tests = params.map(compileTest);\n return function testArgs(args) {\n for (let i = 0; i < tests.length; i++) {\n if (!tests[i](args[i])) {\n return false;\n }\n }\n return args.length === tests.length;\n };\n }\n }\n }\n\n /**\n * Find the parameter at a specific index of a Params list.\n * Handles rest parameters.\n * @param {Param[]} params\n * @param {number} index\n * @return {Param | null} Returns the matching parameter when found,\n * null otherwise.\n */\n function getParamAtIndex(params, index) {\n return index < params.length ? params[index] : hasRestParam(params) ? last(params) : null;\n }\n\n /**\n * Get all type names of a parameter\n * @param {Params[]} params\n * @param {number} index\n * @return {string[]} Returns an array with type names\n */\n function getTypeSetAtIndex(params, index) {\n const param = getParamAtIndex(params, index);\n if (!param) {\n return new Set();\n }\n return paramTypeSet(param);\n }\n\n /**\n * Test whether a type is an exact type or conversion\n * @param {Type} type\n * @return {boolean} Returns true when\n */\n function isExactType(type) {\n return type.conversion === null || type.conversion === undefined;\n }\n\n /**\n * Helper function for creating error messages: create an array with\n * all available types on a specific argument index.\n * @param {Signature[]} signatures\n * @param {number} index\n * @return {string[]} Returns an array with available types\n */\n function mergeExpectedParams(signatures, index) {\n const typeSet = new Set();\n signatures.forEach(signature => {\n const paramSet = getTypeSetAtIndex(signature.params, index);\n let name;\n for (name of paramSet) {\n typeSet.add(name);\n }\n });\n return typeSet.has('any') ? ['any'] : Array.from(typeSet);\n }\n\n /**\n * Create\n * @param {string} name The name of the function\n * @param {array.<*>} args The actual arguments passed to the function\n * @param {Signature[]} signatures A list with available signatures\n * @return {TypeError} Returns a type error with additional data\n * attached to it in the property `data`\n */\n function createError(name, args, signatures) {\n let err, expected;\n const _name = name || 'unnamed';\n\n // test for wrong type at some index\n let matchingSignatures = signatures;\n let index;\n for (index = 0; index < args.length; index++) {\n const nextMatchingDefs = [];\n matchingSignatures.forEach(signature => {\n const param = getParamAtIndex(signature.params, index);\n const test = compileTest(param);\n if ((index < signature.params.length || hasRestParam(signature.params)) && test(args[index])) {\n nextMatchingDefs.push(signature);\n }\n });\n if (nextMatchingDefs.length === 0) {\n // no matching signatures anymore, throw error \"wrong type\"\n expected = mergeExpectedParams(matchingSignatures, index);\n if (expected.length > 0) {\n const actualTypes = findTypeNames(args[index]);\n err = new TypeError('Unexpected type of argument in function ' + _name + ' (expected: ' + expected.join(' or ') + ', actual: ' + actualTypes.join(' | ') + ', index: ' + index + ')');\n err.data = {\n category: 'wrongType',\n fn: _name,\n index,\n actual: actualTypes,\n expected\n };\n return err;\n }\n } else {\n matchingSignatures = nextMatchingDefs;\n }\n }\n\n // test for too few arguments\n const lengths = matchingSignatures.map(function (signature) {\n return hasRestParam(signature.params) ? Infinity : signature.params.length;\n });\n if (args.length < Math.min.apply(null, lengths)) {\n expected = mergeExpectedParams(matchingSignatures, index);\n err = new TypeError('Too few arguments in function ' + _name + ' (expected: ' + expected.join(' or ') + ', index: ' + args.length + ')');\n err.data = {\n category: 'tooFewArgs',\n fn: _name,\n index: args.length,\n expected\n };\n return err;\n }\n\n // test for too many arguments\n const maxLength = Math.max.apply(null, lengths);\n if (args.length > maxLength) {\n err = new TypeError('Too many arguments in function ' + _name + ' (expected: ' + maxLength + ', actual: ' + args.length + ')');\n err.data = {\n category: 'tooManyArgs',\n fn: _name,\n index: args.length,\n expectedLength: maxLength\n };\n return err;\n }\n\n // Generic error\n const argTypes = [];\n for (let i = 0; i < args.length; ++i) {\n argTypes.push(findTypeNames(args[i]).join('|'));\n }\n err = new TypeError('Arguments of type \"' + argTypes.join(', ') + '\" do not match any of the defined signatures of function ' + _name + '.');\n err.data = {\n category: 'mismatch',\n actual: argTypes\n };\n return err;\n }\n\n /**\n * Find the lowest index of all exact types of a parameter (no conversions)\n * @param {Param} param\n * @return {number} Returns the index of the lowest type in typed.types\n */\n function getLowestTypeIndex(param) {\n let min = typeList.length + 1;\n for (let i = 0; i < param.types.length; i++) {\n if (isExactType(param.types[i])) {\n min = Math.min(min, param.types[i].typeIndex);\n }\n }\n return min;\n }\n\n /**\n * Find the lowest index of the conversion of all types of the parameter\n * having a conversion\n * @param {Param} param\n * @return {number} Returns the lowest index of the conversions of this type\n */\n function getLowestConversionIndex(param) {\n let min = nConversions + 1;\n for (let i = 0; i < param.types.length; i++) {\n if (!isExactType(param.types[i])) {\n min = Math.min(min, param.types[i].conversionIndex);\n }\n }\n return min;\n }\n\n /**\n * Compare two params\n * @param {Param} param1\n * @param {Param} param2\n * @return {number} returns -1 when param1 must get a lower\n * index than param2, 1 when the opposite,\n * or zero when both are equal\n */\n function compareParams(param1, param2) {\n // We compare a number of metrics on a param in turn:\n // 1) 'any' parameters are the least preferred\n if (param1.hasAny) {\n if (!param2.hasAny) {\n return 1;\n }\n } else if (param2.hasAny) {\n return -1;\n }\n\n // 2) Prefer non-rest to rest parameters\n if (param1.restParam) {\n if (!param2.restParam) {\n return 1;\n }\n } else if (param2.restParam) {\n return -1;\n }\n\n // 3) Prefer exact type match to conversions\n if (param1.hasConversion) {\n if (!param2.hasConversion) {\n return 1;\n }\n } else if (param2.hasConversion) {\n return -1;\n }\n\n // 4) Prefer lower type index:\n const typeDiff = getLowestTypeIndex(param1) - getLowestTypeIndex(param2);\n if (typeDiff < 0) {\n return -1;\n }\n if (typeDiff > 0) {\n return 1;\n }\n\n // 5) Prefer lower conversion index\n const convDiff = getLowestConversionIndex(param1) - getLowestConversionIndex(param2);\n if (convDiff < 0) {\n return -1;\n }\n if (convDiff > 0) {\n return 1;\n }\n\n // Don't have a basis for preference\n return 0;\n }\n\n /**\n * Compare two signatures\n * @param {Signature} signature1\n * @param {Signature} signature2\n * @return {number} returns a negative number when param1 must get a lower\n * index than param2, a positive number when the opposite,\n * or zero when both are equal\n */\n function compareSignatures(signature1, signature2) {\n const pars1 = signature1.params;\n const pars2 = signature2.params;\n const last1 = last(pars1);\n const last2 = last(pars2);\n const hasRest1 = hasRestParam(pars1);\n const hasRest2 = hasRestParam(pars2);\n // We compare a number of metrics on signatures in turn:\n // 1) An \"any rest param\" is least preferred\n if (hasRest1 && last1.hasAny) {\n if (!hasRest2 || !last2.hasAny) {\n return 1;\n }\n } else if (hasRest2 && last2.hasAny) {\n return -1;\n }\n\n // 2) Minimize the number of 'any' parameters\n let any1 = 0;\n let conv1 = 0;\n let par;\n for (par of pars1) {\n if (par.hasAny) ++any1;\n if (par.hasConversion) ++conv1;\n }\n let any2 = 0;\n let conv2 = 0;\n for (par of pars2) {\n if (par.hasAny) ++any2;\n if (par.hasConversion) ++conv2;\n }\n if (any1 !== any2) {\n return any1 - any2;\n }\n\n // 3) A conversion rest param is less preferred\n if (hasRest1 && last1.hasConversion) {\n if (!hasRest2 || !last2.hasConversion) {\n return 1;\n }\n } else if (hasRest2 && last2.hasConversion) {\n return -1;\n }\n\n // 4) Minimize the number of conversions\n if (conv1 !== conv2) {\n return conv1 - conv2;\n }\n\n // 5) Prefer no rest param\n if (hasRest1) {\n if (!hasRest2) {\n return 1;\n }\n } else if (hasRest2) {\n return -1;\n }\n\n // 6) Prefer shorter with rest param, longer without\n const lengthCriterion = (pars1.length - pars2.length) * (hasRest1 ? -1 : 1);\n if (lengthCriterion !== 0) {\n return lengthCriterion;\n }\n\n // Signatures are identical in each of the above metrics.\n // In particular, they are the same length.\n // We can therefore compare the parameters one by one.\n // First we count which signature has more preferred parameters.\n const comparisons = [];\n let tc = 0;\n for (let i = 0; i < pars1.length; ++i) {\n const thisComparison = compareParams(pars1[i], pars2[i]);\n comparisons.push(thisComparison);\n tc += thisComparison;\n }\n if (tc !== 0) {\n return tc;\n }\n\n // They have the same number of preferred parameters, so go by the\n // earliest parameter in which we have a preference.\n // In other words, dispatch is driven somewhat more by earlier\n // parameters than later ones.\n let c;\n for (c of comparisons) {\n if (c !== 0) {\n return c;\n }\n }\n\n // It's a tossup:\n return 0;\n }\n\n /**\n * Produce a list of all conversions from distinct types to one of\n * the given types.\n *\n * @param {string[]} typeNames\n * @return {ConversionDef[]} Returns the conversions that are available\n * resulting in any given type (if any)\n */\n function availableConversions(typeNames) {\n if (typeNames.length === 0) {\n return [];\n }\n const types = typeNames.map(findType);\n if (typeNames.length > 1) {\n types.sort((t1, t2) => t1.index - t2.index);\n }\n let matches = types[0].conversionsTo;\n if (typeNames.length === 1) {\n return matches;\n }\n matches = matches.concat([]); // shallow copy the matches\n // Since the types are now in index order, we just want the first\n // occurrence of any from type:\n const knownTypes = new Set(typeNames);\n for (let i = 1; i < types.length; ++i) {\n let newMatch;\n for (newMatch of types[i].conversionsTo) {\n if (!knownTypes.has(newMatch.from)) {\n matches.push(newMatch);\n knownTypes.add(newMatch.from);\n }\n }\n }\n return matches;\n }\n\n /**\n * Preprocess arguments before calling the original function:\n * - if needed convert the parameters\n * - in case of rest parameters, move the rest parameters into an Array\n * @param {Param[]} params\n * @param {function} fn\n * @return {function} Returns a wrapped function\n */\n function compileArgsPreprocessing(params, fn) {\n let fnConvert = fn;\n\n // TODO: can we make this wrapper function smarter/simpler?\n\n if (params.some(p => p.hasConversion)) {\n const restParam = hasRestParam(params);\n const compiledConversions = params.map(compileArgConversion);\n fnConvert = function convertArgs() {\n const args = [];\n const last = restParam ? arguments.length - 1 : arguments.length;\n for (let i = 0; i < last; i++) {\n args[i] = compiledConversions[i](arguments[i]);\n }\n if (restParam) {\n args[last] = arguments[last].map(compiledConversions[last]);\n }\n return fn.apply(this, args);\n };\n }\n let fnPreprocess = fnConvert;\n if (hasRestParam(params)) {\n const offset = params.length - 1;\n fnPreprocess = function preprocessRestParams() {\n return fnConvert.apply(this, slice(arguments, 0, offset).concat([slice(arguments, offset)]));\n };\n }\n return fnPreprocess;\n }\n\n /**\n * Compile conversion for a parameter to the right type\n * @param {Param} param\n * @return {function} Returns the wrapped function that will convert arguments\n *\n */\n function compileArgConversion(param) {\n let test0, test1, conversion0, conversion1;\n const tests = [];\n const conversions = [];\n param.types.forEach(function (type) {\n if (type.conversion) {\n tests.push(findType(type.conversion.from).test);\n conversions.push(type.conversion.convert);\n }\n });\n\n // create optimized conversion functions depending on the number of conversions\n switch (conversions.length) {\n case 0:\n return function convertArg(arg) {\n return arg;\n };\n case 1:\n test0 = tests[0];\n conversion0 = conversions[0];\n return function convertArg(arg) {\n if (test0(arg)) {\n return conversion0(arg);\n }\n return arg;\n };\n case 2:\n test0 = tests[0];\n test1 = tests[1];\n conversion0 = conversions[0];\n conversion1 = conversions[1];\n return function convertArg(arg) {\n if (test0(arg)) {\n return conversion0(arg);\n }\n if (test1(arg)) {\n return conversion1(arg);\n }\n return arg;\n };\n default:\n return function convertArg(arg) {\n for (let i = 0; i < conversions.length; i++) {\n if (tests[i](arg)) {\n return conversions[i](arg);\n }\n }\n return arg;\n };\n }\n }\n\n /**\n * Split params with union types in to separate params.\n *\n * For example:\n *\n * splitParams([['Array', 'Object'], ['string', 'RegExp'])\n * // returns:\n * // [\n * // ['Array', 'string'],\n * // ['Array', 'RegExp'],\n * // ['Object', 'string'],\n * // ['Object', 'RegExp']\n * // ]\n *\n * @param {Param[]} params\n * @return {Param[]}\n */\n function splitParams(params) {\n function _splitParams(params, index, paramsSoFar) {\n if (index < params.length) {\n const param = params[index];\n let resultingParams = [];\n if (param.restParam) {\n // split the types of a rest parameter in two:\n // one with only exact types, and one with exact types and conversions\n const exactTypes = param.types.filter(isExactType);\n if (exactTypes.length < param.types.length) {\n resultingParams.push({\n types: exactTypes,\n name: '...' + exactTypes.map(t => t.name).join('|'),\n hasAny: exactTypes.some(t => t.isAny),\n hasConversion: false,\n restParam: true\n });\n }\n resultingParams.push(param);\n } else {\n // split all the types of a regular parameter into one type per param\n resultingParams = param.types.map(function (type) {\n return {\n types: [type],\n name: type.name,\n hasAny: type.isAny,\n hasConversion: type.conversion,\n restParam: false\n };\n });\n }\n\n // recurse over the groups with types\n return flatMap(resultingParams, function (nextParam) {\n return _splitParams(params, index + 1, paramsSoFar.concat([nextParam]));\n });\n } else {\n // we've reached the end of the parameters.\n return [paramsSoFar];\n }\n }\n return _splitParams(params, 0, []);\n }\n\n /**\n * Test whether two param lists represent conflicting signatures\n * @param {Param[]} params1\n * @param {Param[]} params2\n * @return {boolean} Returns true when the signatures conflict, false otherwise.\n */\n function conflicting(params1, params2) {\n const ii = Math.max(params1.length, params2.length);\n for (let i = 0; i < ii; i++) {\n const typeSet1 = getTypeSetAtIndex(params1, i);\n const typeSet2 = getTypeSetAtIndex(params2, i);\n let overlap = false;\n let name;\n for (name of typeSet2) {\n if (typeSet1.has(name)) {\n overlap = true;\n break;\n }\n }\n if (!overlap) {\n return false;\n }\n }\n const len1 = params1.length;\n const len2 = params2.length;\n const restParam1 = hasRestParam(params1);\n const restParam2 = hasRestParam(params2);\n return restParam1 ? restParam2 ? len1 === len2 : len2 >= len1 : restParam2 ? len1 >= len2 : len1 === len2;\n }\n\n /**\n * Helper function for `resolveReferences` that returns a copy of\n * functionList wihe any prior resolutions cleared out, in case we are\n * recycling signatures from a prior typed function construction.\n *\n * @param {Array.} functionList\n * @return {Array.}\n */\n function clearResolutions(functionList) {\n return functionList.map(fn => {\n if (isReferToSelf(fn)) {\n return referToSelf(fn.referToSelf.callback);\n }\n if (isReferTo(fn)) {\n return makeReferTo(fn.referTo.references, fn.referTo.callback);\n }\n return fn;\n });\n }\n\n /**\n * Take a list of references, a list of functions functionList, and a\n * signatureMap indexing signatures into functionList, and return\n * the list of resolutions, or a false-y value if they don't all\n * resolve in a valid way (yet).\n *\n * @param {string[]} references\n * @param {Array} signatureMap\n * @return {function[] | false} resolutions\n */\n function collectResolutions(references, functionList, signatureMap) {\n const resolvedReferences = [];\n let reference;\n for (reference of references) {\n let resolution = signatureMap[reference];\n if (typeof resolution !== 'number') {\n throw new TypeError('No definition for referenced signature \"' + reference + '\"');\n }\n resolution = functionList[resolution];\n if (typeof resolution !== 'function') {\n return false;\n }\n resolvedReferences.push(resolution);\n }\n return resolvedReferences;\n }\n\n /**\n * Resolve any references in the functionList for the typed function\n * itself. The signatureMap tells which index in the functionList a\n * given signature should be mapped to (for use in resolving typed.referTo)\n * and self provides the destions of a typed.referToSelf.\n *\n * @param {Array} functionList\n * @param {Object.} signatureMap\n * @param {function} self The typed-function itself\n * @return {Array} The list of resolved functions\n */\n function resolveReferences(functionList, signatureMap, self) {\n const resolvedFunctions = clearResolutions(functionList);\n const isResolved = new Array(resolvedFunctions.length).fill(false);\n let leftUnresolved = true;\n while (leftUnresolved) {\n leftUnresolved = false;\n let nothingResolved = true;\n for (let i = 0; i < resolvedFunctions.length; ++i) {\n if (isResolved[i]) continue;\n const fn = resolvedFunctions[i];\n if (isReferToSelf(fn)) {\n resolvedFunctions[i] = fn.referToSelf.callback(self);\n // Preserve reference in case signature is reused someday:\n resolvedFunctions[i].referToSelf = fn.referToSelf;\n isResolved[i] = true;\n nothingResolved = false;\n } else if (isReferTo(fn)) {\n const resolvedReferences = collectResolutions(fn.referTo.references, resolvedFunctions, signatureMap);\n if (resolvedReferences) {\n resolvedFunctions[i] = fn.referTo.callback.apply(this, resolvedReferences);\n // Preserve reference in case signature is reused someday:\n resolvedFunctions[i].referTo = fn.referTo;\n isResolved[i] = true;\n nothingResolved = false;\n } else {\n leftUnresolved = true;\n }\n }\n }\n if (nothingResolved && leftUnresolved) {\n throw new SyntaxError('Circular reference detected in resolving typed.referTo');\n }\n }\n return resolvedFunctions;\n }\n\n /**\n * Validate whether any of the function bodies contains a self-reference\n * usage like `this(...)` or `this.signatures`. This self-referencing is\n * deprecated since typed-function v3. It has been replaced with\n * the functions typed.referTo and typed.referToSelf.\n * @param {Object.} signaturesMap\n */\n function validateDeprecatedThis(signaturesMap) {\n // TODO: remove this deprecation warning logic some day (it's introduced in v3)\n\n // match occurrences like 'this(' and 'this.signatures'\n const deprecatedThisRegex = /\\bthis(\\(|\\.signatures\\b)/;\n Object.keys(signaturesMap).forEach(signature => {\n const fn = signaturesMap[signature];\n if (deprecatedThisRegex.test(fn.toString())) {\n throw new SyntaxError('Using `this` to self-reference a function ' + 'is deprecated since typed-function@3. ' + 'Use typed.referTo and typed.referToSelf instead.');\n }\n });\n }\n\n /**\n * Create a typed function\n * @param {String} name The name for the typed function\n * @param {Object.} rawSignaturesMap\n * An object with one or\n * multiple signatures as key, and the\n * function corresponding to the\n * signature as value.\n * @return {function} Returns the created typed function.\n */\n function createTypedFunction(name, rawSignaturesMap) {\n typed.createCount++;\n if (Object.keys(rawSignaturesMap).length === 0) {\n throw new SyntaxError('No signatures provided');\n }\n if (typed.warnAgainstDeprecatedThis) {\n validateDeprecatedThis(rawSignaturesMap);\n }\n\n // Main processing loop for signatures\n const parsedParams = [];\n const originalFunctions = [];\n const signaturesMap = {};\n const preliminarySignatures = []; // may have duplicates from conversions\n let signature;\n for (signature in rawSignaturesMap) {\n // A) Protect against polluted Object prototype:\n if (!Object.prototype.hasOwnProperty.call(rawSignaturesMap, signature)) {\n continue;\n }\n // B) Parse the signature\n const params = parseSignature(signature);\n if (!params) continue;\n // C) Check for conflicts\n parsedParams.forEach(function (pp) {\n if (conflicting(pp, params)) {\n throw new TypeError('Conflicting signatures \"' + stringifyParams(pp) + '\" and \"' + stringifyParams(params) + '\".');\n }\n });\n parsedParams.push(params);\n // D) Store the provided function and add conversions\n const functionIndex = originalFunctions.length;\n originalFunctions.push(rawSignaturesMap[signature]);\n const conversionParams = params.map(expandParam);\n // E) Split the signatures and collect them up\n let sp;\n for (sp of splitParams(conversionParams)) {\n const spName = stringifyParams(sp);\n preliminarySignatures.push({\n params: sp,\n name: spName,\n fn: functionIndex\n });\n if (sp.every(p => !p.hasConversion)) {\n signaturesMap[spName] = functionIndex;\n }\n }\n }\n preliminarySignatures.sort(compareSignatures);\n\n // Note the forward reference to theTypedFn\n const resolvedFunctions = resolveReferences(originalFunctions, signaturesMap, theTypedFn);\n\n // Fill in the proper function for each signature\n let s;\n for (s in signaturesMap) {\n if (Object.prototype.hasOwnProperty.call(signaturesMap, s)) {\n signaturesMap[s] = resolvedFunctions[signaturesMap[s]];\n }\n }\n const signatures = [];\n const internalSignatureMap = new Map(); // benchmarks faster than object\n for (s of preliminarySignatures) {\n // Note it's only safe to eliminate duplicates like this\n // _after_ the signature sorting step above; otherwise we might\n // remove the wrong one.\n if (!internalSignatureMap.has(s.name)) {\n s.fn = resolvedFunctions[s.fn];\n signatures.push(s);\n internalSignatureMap.set(s.name, s);\n }\n }\n\n // we create a highly optimized checks for the first couple of signatures with max 2 arguments\n const ok0 = signatures[0] && signatures[0].params.length <= 2 && !hasRestParam(signatures[0].params);\n const ok1 = signatures[1] && signatures[1].params.length <= 2 && !hasRestParam(signatures[1].params);\n const ok2 = signatures[2] && signatures[2].params.length <= 2 && !hasRestParam(signatures[2].params);\n const ok3 = signatures[3] && signatures[3].params.length <= 2 && !hasRestParam(signatures[3].params);\n const ok4 = signatures[4] && signatures[4].params.length <= 2 && !hasRestParam(signatures[4].params);\n const ok5 = signatures[5] && signatures[5].params.length <= 2 && !hasRestParam(signatures[5].params);\n const allOk = ok0 && ok1 && ok2 && ok3 && ok4 && ok5;\n\n // compile the tests\n for (let i = 0; i < signatures.length; ++i) {\n signatures[i].test = compileTests(signatures[i].params);\n }\n const test00 = ok0 ? compileTest(signatures[0].params[0]) : notOk;\n const test10 = ok1 ? compileTest(signatures[1].params[0]) : notOk;\n const test20 = ok2 ? compileTest(signatures[2].params[0]) : notOk;\n const test30 = ok3 ? compileTest(signatures[3].params[0]) : notOk;\n const test40 = ok4 ? compileTest(signatures[4].params[0]) : notOk;\n const test50 = ok5 ? compileTest(signatures[5].params[0]) : notOk;\n const test01 = ok0 ? compileTest(signatures[0].params[1]) : notOk;\n const test11 = ok1 ? compileTest(signatures[1].params[1]) : notOk;\n const test21 = ok2 ? compileTest(signatures[2].params[1]) : notOk;\n const test31 = ok3 ? compileTest(signatures[3].params[1]) : notOk;\n const test41 = ok4 ? compileTest(signatures[4].params[1]) : notOk;\n const test51 = ok5 ? compileTest(signatures[5].params[1]) : notOk;\n\n // compile the functions\n for (let i = 0; i < signatures.length; ++i) {\n signatures[i].implementation = compileArgsPreprocessing(signatures[i].params, signatures[i].fn);\n }\n const fn0 = ok0 ? signatures[0].implementation : undef;\n const fn1 = ok1 ? signatures[1].implementation : undef;\n const fn2 = ok2 ? signatures[2].implementation : undef;\n const fn3 = ok3 ? signatures[3].implementation : undef;\n const fn4 = ok4 ? signatures[4].implementation : undef;\n const fn5 = ok5 ? signatures[5].implementation : undef;\n const len0 = ok0 ? signatures[0].params.length : -1;\n const len1 = ok1 ? signatures[1].params.length : -1;\n const len2 = ok2 ? signatures[2].params.length : -1;\n const len3 = ok3 ? signatures[3].params.length : -1;\n const len4 = ok4 ? signatures[4].params.length : -1;\n const len5 = ok5 ? signatures[5].params.length : -1;\n\n // simple and generic, but also slow\n const iStart = allOk ? 6 : 0;\n const iEnd = signatures.length;\n // de-reference ahead for execution speed:\n const tests = signatures.map(s => s.test);\n const fns = signatures.map(s => s.implementation);\n const generic = function generic() {\n 'use strict';\n\n for (let i = iStart; i < iEnd; i++) {\n if (tests[i](arguments)) {\n return fns[i].apply(this, arguments);\n }\n }\n return typed.onMismatch(name, arguments, signatures);\n };\n\n // create the typed function\n // fast, specialized version. Falls back to the slower, generic one if needed\n function theTypedFn(arg0, arg1) {\n 'use strict';\n\n if (arguments.length === len0 && test00(arg0) && test01(arg1)) {\n return fn0.apply(this, arguments);\n }\n if (arguments.length === len1 && test10(arg0) && test11(arg1)) {\n return fn1.apply(this, arguments);\n }\n if (arguments.length === len2 && test20(arg0) && test21(arg1)) {\n return fn2.apply(this, arguments);\n }\n if (arguments.length === len3 && test30(arg0) && test31(arg1)) {\n return fn3.apply(this, arguments);\n }\n if (arguments.length === len4 && test40(arg0) && test41(arg1)) {\n return fn4.apply(this, arguments);\n }\n if (arguments.length === len5 && test50(arg0) && test51(arg1)) {\n return fn5.apply(this, arguments);\n }\n return generic.apply(this, arguments);\n }\n\n // attach name the typed function\n try {\n Object.defineProperty(theTypedFn, 'name', {\n value: name\n });\n } catch (err) {\n // old browsers do not support Object.defineProperty and some don't support setting the name property\n // the function name is not essential for the functioning, it's mostly useful for debugging,\n // so it's fine to have unnamed functions.\n }\n\n // attach signatures to the function.\n // This property is close to the original collection of signatures\n // used to create the typed-function, just with unions split:\n theTypedFn.signatures = signaturesMap;\n\n // Store internal data for functions like resolve, find, etc.\n // Also serves as the flag that this is a typed-function\n theTypedFn._typedFunctionData = {\n signatures,\n signatureMap: internalSignatureMap\n };\n return theTypedFn;\n }\n\n /**\n * Action to take on mismatch\n * @param {string} name Name of function that was attempted to be called\n * @param {Array} args Actual arguments to the call\n * @param {Array} signatures Known signatures of the named typed-function\n */\n function _onMismatch(name, args, signatures) {\n throw createError(name, args, signatures);\n }\n\n /**\n * Return all but the last items of an array or function Arguments\n * @param {Array | Arguments} arr\n * @return {Array}\n */\n function initial(arr) {\n return slice(arr, 0, arr.length - 1);\n }\n\n /**\n * return the last item of an array or function Arguments\n * @param {Array | Arguments} arr\n * @return {*}\n */\n function last(arr) {\n return arr[arr.length - 1];\n }\n\n /**\n * Slice an array or function Arguments\n * @param {Array | Arguments | IArguments} arr\n * @param {number} start\n * @param {number} [end]\n * @return {Array}\n */\n function slice(arr, start, end) {\n return Array.prototype.slice.call(arr, start, end);\n }\n\n /**\n * Return the first item from an array for which test(arr[i]) returns true\n * @param {Array} arr\n * @param {function} test\n * @return {* | undefined} Returns the first matching item\n * or undefined when there is no match\n */\n function findInArray(arr, test) {\n for (let i = 0; i < arr.length; i++) {\n if (test(arr[i])) {\n return arr[i];\n }\n }\n return undefined;\n }\n\n /**\n * Flat map the result invoking a callback for every item in an array.\n * https://gist.github.com/samgiles/762ee337dff48623e729\n * @param {Array} arr\n * @param {function} callback\n * @return {Array}\n */\n function flatMap(arr, callback) {\n return Array.prototype.concat.apply([], arr.map(callback));\n }\n\n /**\n * Create a reference callback to one or multiple signatures\n *\n * Syntax:\n *\n * typed.referTo(signature1, signature2, ..., function callback(fn1, fn2, ...) {\n * // ...\n * })\n *\n * @returns {{referTo: {references: string[], callback}}}\n */\n function referTo() {\n const references = initial(arguments).map(s => stringifyParams(parseSignature(s)));\n const callback = last(arguments);\n if (typeof callback !== 'function') {\n throw new TypeError('Callback function expected as last argument');\n }\n return makeReferTo(references, callback);\n }\n function makeReferTo(references, callback) {\n return {\n referTo: {\n references,\n callback\n }\n };\n }\n\n /**\n * Create a reference callback to the typed-function itself\n *\n * @param {(self: function) => function} callback\n * @returns {{referToSelf: { callback: function }}}\n */\n function referToSelf(callback) {\n if (typeof callback !== 'function') {\n throw new TypeError('Callback function expected as first argument');\n }\n return {\n referToSelf: {\n callback\n }\n };\n }\n\n /**\n * Test whether something is a referTo object, holding a list with reference\n * signatures and a callback.\n *\n * @param {Object | function} objectOrFn\n * @returns {boolean}\n */\n function isReferTo(objectOrFn) {\n return objectOrFn && typeof objectOrFn.referTo === 'object' && Array.isArray(objectOrFn.referTo.references) && typeof objectOrFn.referTo.callback === 'function';\n }\n\n /**\n * Test whether something is a referToSelf object, holding a callback where\n * to pass `self`.\n *\n * @param {Object | function} objectOrFn\n * @returns {boolean}\n */\n function isReferToSelf(objectOrFn) {\n return objectOrFn && typeof objectOrFn.referToSelf === 'object' && typeof objectOrFn.referToSelf.callback === 'function';\n }\n\n /**\n * Check if name is (A) new, (B) a match, or (C) a mismatch; and throw\n * an error in case (C).\n *\n * @param { string | undefined } nameSoFar\n * @param { string | undefined } newName\n * @returns { string } updated name\n */\n function checkName(nameSoFar, newName) {\n if (!nameSoFar) {\n return newName;\n }\n if (newName && newName !== nameSoFar) {\n const err = new Error('Function names do not match (expected: ' + nameSoFar + ', actual: ' + newName + ')');\n err.data = {\n actual: newName,\n expected: nameSoFar\n };\n throw err;\n }\n return nameSoFar;\n }\n\n /**\n * Retrieve the implied name from an object with signature keys\n * and function values, checking whether all value names match\n *\n * @param { {string: function} } obj\n */\n function getObjectName(obj) {\n let name;\n for (const key in obj) {\n // Only pay attention to own properties, and only if their values\n // are typed functions or functions with a signature property\n if (Object.prototype.hasOwnProperty.call(obj, key) && (isTypedFunction(obj[key]) || typeof obj[key].signature === 'string')) {\n name = checkName(name, obj[key].name);\n }\n }\n return name;\n }\n\n /**\n * Copy all of the signatures from the second argument into the first,\n * which is modified by side effect, checking for conflicts\n *\n * @param {Object.} dest\n * @param {Object.} source\n */\n function mergeSignatures(dest, source) {\n let key;\n for (key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (key in dest) {\n if (source[key] !== dest[key]) {\n const err = new Error('Signature \"' + key + '\" is defined twice');\n err.data = {\n signature: key,\n sourceFunction: source[key],\n destFunction: dest[key]\n };\n throw err;\n }\n // else: both signatures point to the same function, that's fine\n }\n dest[key] = source[key];\n }\n }\n }\n const saveTyped = typed;\n\n /**\n * Originally the main function was a typed function itself, but then\n * it might not be able to generate error messages if the client\n * replaced the type system with different names.\n *\n * Main entry: typed([name], functions/objects with signatures...)\n *\n * Assembles and returns a new typed-function from the given items\n * that provide signatures and implementations, each of which may be\n * * a plain object mapping (string) signatures to implementing functions,\n * * a previously constructed typed function, or\n * * any other single function with a string-valued property `signature`.\n * The name of the resulting typed-function will be given by the\n * string-valued name argument if present, or if not, by the name\n * of any of the arguments that have one, as long as any that do are\n * consistent with each other. If no name is specified, the name will be\n * an empty string.\n *\n * @param {string} maybeName [optional]\n * @param {(function|object)[]} signature providers\n * @returns {typed-function}\n */\n typed = function (maybeName) {\n const named = typeof maybeName === 'string';\n const start = named ? 1 : 0;\n let name = named ? maybeName : '';\n const allSignatures = {};\n for (let i = start; i < arguments.length; ++i) {\n const item = arguments[i];\n let theseSignatures = {};\n let thisName;\n if (typeof item === 'function') {\n thisName = item.name;\n if (typeof item.signature === 'string') {\n // Case 1: Ordinary function with a string 'signature' property\n theseSignatures[item.signature] = item;\n } else if (isTypedFunction(item)) {\n // Case 2: Existing typed function\n theseSignatures = item.signatures;\n }\n } else if (isPlainObject(item)) {\n // Case 3: Plain object, assume keys = signatures, values = functions\n theseSignatures = item;\n if (!named) {\n thisName = getObjectName(item);\n }\n }\n if (Object.keys(theseSignatures).length === 0) {\n const err = new TypeError('Argument to \\'typed\\' at index ' + i + ' is not a (typed) function, ' + 'nor an object with signatures as keys and functions as values.');\n err.data = {\n index: i,\n argument: item\n };\n throw err;\n }\n if (!named) {\n name = checkName(name, thisName);\n }\n mergeSignatures(allSignatures, theseSignatures);\n }\n return createTypedFunction(name || '', allSignatures);\n };\n typed.create = create;\n typed.createCount = saveTyped.createCount;\n typed.onMismatch = _onMismatch;\n typed.throwMismatchError = _onMismatch;\n typed.createError = createError;\n typed.clear = clear;\n typed.clearConversions = clearConversions;\n typed.addTypes = addTypes;\n typed._findType = findType; // For unit testing only\n typed.referTo = referTo;\n typed.referToSelf = referToSelf;\n typed.convert = convert;\n typed.findSignature = findSignature;\n typed.find = find;\n typed.isTypedFunction = isTypedFunction;\n typed.warnAgainstDeprecatedThis = true;\n\n /**\n * add a type (convenience wrapper for typed.addTypes)\n * @param {{name: string, test: function}} type\n * @param {boolean} [beforeObjectTest=true]\n * If true, the new test will be inserted before\n * the test with name 'Object' (if any), since\n * tests for Object match Array and classes too.\n */\n typed.addType = function (type, beforeObjectTest) {\n let before = 'any';\n if (beforeObjectTest !== false && typeMap.has('Object')) {\n before = 'Object';\n }\n typed.addTypes([type], before);\n };\n\n /**\n * Verify that the ConversionDef conversion has a valid format.\n *\n * @param {conversionDef} conversion\n * @return {void}\n * @throws {TypeError|SyntaxError}\n */\n function _validateConversion(conversion) {\n if (!conversion || typeof conversion.from !== 'string' || typeof conversion.to !== 'string' || typeof conversion.convert !== 'function') {\n throw new TypeError('Object with properties {from: string, to: string, convert: function} expected');\n }\n if (conversion.to === conversion.from) {\n throw new SyntaxError('Illegal to define conversion from \"' + conversion.from + '\" to itself.');\n }\n }\n\n /**\n * Add a conversion\n *\n * @param {ConversionDef} conversion\n * @param {{override: boolean}} [options]\n * @returns {void}\n * @throws {TypeError}\n */\n typed.addConversion = function (conversion) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n override: false\n };\n _validateConversion(conversion);\n const to = findType(conversion.to);\n const existing = to.conversionsTo.find(other => other.from === conversion.from);\n if (existing) {\n if (options && options.override) {\n typed.removeConversion({\n from: existing.from,\n to: conversion.to,\n convert: existing.convert\n });\n } else {\n throw new Error('There is already a conversion from \"' + conversion.from + '\" to \"' + to.name + '\"');\n }\n }\n to.conversionsTo.push({\n from: conversion.from,\n convert: conversion.convert,\n index: nConversions++\n });\n };\n\n /**\n * Convenience wrapper to call addConversion on each conversion in a list.\n *\n * @param {ConversionDef[]} conversions\n * @param {{override: boolean}} [options]\n * @returns {void}\n * @throws {TypeError}\n */\n typed.addConversions = function (conversions, options) {\n conversions.forEach(conversion => typed.addConversion(conversion, options));\n };\n\n /**\n * Remove the specified conversion. The format is the same as for\n * addConversion, and the convert function must match or an error\n * is thrown.\n *\n * @param {{from: string, to: string, convert: function}} conversion\n * @returns {void}\n * @throws {TypeError|SyntaxError|Error}\n */\n typed.removeConversion = function (conversion) {\n _validateConversion(conversion);\n const to = findType(conversion.to);\n const existingConversion = findInArray(to.conversionsTo, c => c.from === conversion.from);\n if (!existingConversion) {\n throw new Error('Attempt to remove nonexistent conversion from ' + conversion.from + ' to ' + conversion.to);\n }\n if (existingConversion.convert !== conversion.convert) {\n throw new Error('Conversion to remove does not match existing conversion');\n }\n const index = to.conversionsTo.indexOf(existingConversion);\n to.conversionsTo.splice(index, 1);\n };\n\n /**\n * Produce the specific signature that a typed function\n * will execute on the given arguments. Here, a \"signature\" is an\n * object with properties 'params', 'test', 'fn', and 'implementation'.\n * This last property is a function that converts params as necessary\n * and then calls 'fn'. Returns null if there is no matching signature.\n * @param {typed-function} tf\n * @param {any[]} argList\n * @returns {{params: string, test: function, fn: function, implementation: function}}\n */\n typed.resolve = function (tf, argList) {\n if (!isTypedFunction(tf)) {\n throw new TypeError(NOT_TYPED_FUNCTION);\n }\n const sigs = tf._typedFunctionData.signatures;\n for (let i = 0; i < sigs.length; ++i) {\n if (sigs[i].test(argList)) {\n return sigs[i];\n }\n }\n return null;\n };\n return typed;\n}\nexport default create();\n//# sourceMappingURL=typed-function.mjs.map", "/*\r\n * Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license\r\n * Author: Jim Palmer (based on chunking idea from Dave Koelle)\r\n */\r\n/*jshint unused:false */\r\nmodule.exports = function naturalSort (a, b) {\r\n\t\"use strict\";\r\n\tvar re = /(^([+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)?$|^0x[0-9a-f]+$|\\d+)/gi,\r\n\t\tsre = /(^[ ]*|[ ]*$)/g,\r\n\t\tdre = /(^([\\w ]+,?[\\w ]+)?[\\w ]+,?[\\w ]+\\d+:\\d+(:\\d+)?[\\w ]?|^\\d{1,4}[\\/\\-]\\d{1,4}[\\/\\-]\\d{1,4}|^\\w+, \\w+ \\d+, \\d{4})/,\r\n\t\thre = /^0x[0-9a-f]+$/i,\r\n\t\tore = /^0/,\r\n\t\ti = function(s) { return naturalSort.insensitive && ('' + s).toLowerCase() || '' + s; },\r\n\t\t// convert all to strings strip whitespace\r\n\t\tx = i(a).replace(sre, '') || '',\r\n\t\ty = i(b).replace(sre, '') || '',\r\n\t\t// chunk/tokenize\r\n\t\txN = x.replace(re, '\\0$1\\0').replace(/\\0$/,'').replace(/^\\0/,'').split('\\0'),\r\n\t\tyN = y.replace(re, '\\0$1\\0').replace(/\\0$/,'').replace(/^\\0/,'').split('\\0'),\r\n\t\t// numeric, hex or date detection\r\n\t\txD = parseInt(x.match(hre), 16) || (xN.length !== 1 && x.match(dre) && Date.parse(x)),\r\n\t\tyD = parseInt(y.match(hre), 16) || xD && y.match(dre) && Date.parse(y) || null,\r\n\t\toFxNcL, oFyNcL;\r\n\t// first try and sort Hex codes or Dates\r\n\tif (yD) {\r\n\t\tif ( xD < yD ) { return -1; }\r\n\t\telse if ( xD > yD ) { return 1; }\r\n\t}\r\n\t// natural sorting through split numeric strings and default strings\r\n\tfor(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) {\r\n\t\t// find floats not starting with '0', string or 0 if not defined (Clint Priest)\r\n\t\toFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;\r\n\t\toFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;\r\n\t\t// handle numeric vs string comparison - number < string - (Kyle Adams)\r\n\t\tif (isNaN(oFxNcL) !== isNaN(oFyNcL)) { return (isNaN(oFxNcL)) ? 1 : -1; }\r\n\t\t// rely on string comparison if different types - i.e. '02' < 2 != '02' < '2'\r\n\t\telse if (typeof oFxNcL !== typeof oFyNcL) {\r\n\t\t\toFxNcL += '';\r\n\t\t\toFyNcL += '';\r\n\t\t}\r\n\t\tif (oFxNcL < oFyNcL) { return -1; }\r\n\t\tif (oFxNcL > oFyNcL) { return 1; }\r\n\t}\r\n\treturn 0;\r\n};\r\n", "\"use strict\";\n\n// Map the characters to escape to their escaped values. The list is derived\n// from http://www.cespedes.org/blog/85/how-to-escape-latex-special-characters\n\nvar _extends = Object.assign || 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; };\n\nvar defaultEscapes = {\n \"{\": \"\\\\{\",\n \"}\": \"\\\\}\",\n \"\\\\\": \"\\\\textbackslash{}\",\n \"#\": \"\\\\#\",\n $: \"\\\\$\",\n \"%\": \"\\\\%\",\n \"&\": \"\\\\&\",\n \"^\": \"\\\\textasciicircum{}\",\n _: \"\\\\_\",\n \"~\": \"\\\\textasciitilde{}\"\n};\nvar formatEscapes = {\n \"\\u2013\": \"\\\\--\",\n \"\\u2014\": \"\\\\---\",\n \" \": \"~\",\n \"\\t\": \"\\\\qquad{}\",\n \"\\r\\n\": \"\\\\newline{}\",\n \"\\n\": \"\\\\newline{}\"\n};\n\nvar defaultEscapeMapFn = function defaultEscapeMapFn(defaultEscapes, formatEscapes) {\n return _extends({}, defaultEscapes, formatEscapes);\n};\n\n/**\n * Escape a string to be used in LaTeX documents.\n * @param {string} str the string to be escaped.\n * @param {boolean} params.preserveFormatting whether formatting escapes should\n * be performed (default: false).\n * @param {function} params.escapeMapFn the function to modify the escape maps.\n * @return {string} the escaped string, ready to be used in LaTeX.\n */\nmodule.exports = function (str) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$preserveFormatti = _ref.preserveFormatting,\n preserveFormatting = _ref$preserveFormatti === undefined ? false : _ref$preserveFormatti,\n _ref$escapeMapFn = _ref.escapeMapFn,\n escapeMapFn = _ref$escapeMapFn === undefined ? defaultEscapeMapFn : _ref$escapeMapFn;\n\n var runningStr = String(str);\n var result = \"\";\n\n var escapes = escapeMapFn(_extends({}, defaultEscapes), preserveFormatting ? _extends({}, formatEscapes) : {});\n var escapeKeys = Object.keys(escapes); // as it is reused later on\n\n // Algorithm: Go through the string character by character, if it matches\n // with one of the special characters then we'll replace it with the escaped\n // version.\n\n var _loop = function _loop() {\n var specialCharFound = false;\n escapeKeys.forEach(function (key, index) {\n if (specialCharFound) {\n return;\n }\n if (runningStr.length >= key.length && runningStr.slice(0, key.length) === key) {\n result += escapes[escapeKeys[index]];\n runningStr = runningStr.slice(key.length, runningStr.length);\n specialCharFound = true;\n }\n });\n if (!specialCharFound) {\n result += runningStr.slice(0, 1);\n runningStr = runningStr.slice(1, runningStr.length);\n }\n };\n\n while (runningStr) {\n _loop();\n }\n return result;\n};", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = String(data);\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2019 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (global, pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n\nvar width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n} else {\n // When included as a plain script, set up Math.seedrandom global.\n math['seed' + rngname] = seedrandom;\n}\n\n\n// End anonymous scope, and pass initial values.\n})(\n // global: `self` in browsers (including strict mode and web workers),\n // otherwise `this` in Node and other environments\n (typeof self !== 'undefined') ? self : this,\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "function E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n", "(function (window, factory) {\n if (typeof exports === 'object') {\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n define(factory);\n } else {\n window.jStat = factory();\n }\n})(this, function () {\nvar jStat = (function(Math, undefined) {\n\n// For quick reference.\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\nvar toString = Object.prototype.toString;\n\n// Calculate correction for IEEE error\n// TODO: This calculation can be improved.\nfunction calcRdx(n, m) {\n var val = n > m ? n : m;\n return Math.pow(10,\n 17 - ~~(Math.log(((val > 0) ? val : -val)) * Math.LOG10E));\n}\n\n\nvar isArray = Array.isArray || function isArray(arg) {\n return toString.call(arg) === '[object Array]';\n};\n\n\nfunction isFunction(arg) {\n return toString.call(arg) === '[object Function]';\n}\n\n\nfunction isNumber(num) {\n return (typeof num === 'number') ? num - num === 0 : false;\n}\n\n\n// Converts the jStat matrix to vector.\nfunction toVector(arr) {\n return concat.apply([], arr);\n}\n\n\n// The one and only jStat constructor.\nfunction jStat() {\n return new jStat._init(arguments);\n}\n\n\n// TODO: Remove after all references in src files have been removed.\njStat.fn = jStat.prototype;\n\n\n// By separating the initializer from the constructor it's easier to handle\n// always returning a new instance whether \"new\" was used or not.\njStat._init = function _init(args) {\n // If first argument is an array, must be vector or matrix.\n if (isArray(args[0])) {\n // Check if matrix.\n if (isArray(args[0][0])) {\n // See if a mapping function was also passed.\n if (isFunction(args[1]))\n args[0] = jStat.map(args[0], args[1]);\n // Iterate over each is faster than this.push.apply(this, args[0].\n for (var i = 0; i < args[0].length; i++)\n this[i] = args[0][i];\n this.length = args[0].length;\n\n // Otherwise must be a vector.\n } else {\n this[0] = isFunction(args[1]) ? jStat.map(args[0], args[1]) : args[0];\n this.length = 1;\n }\n\n // If first argument is number, assume creation of sequence.\n } else if (isNumber(args[0])) {\n this[0] = jStat.seq.apply(null, args);\n this.length = 1;\n\n // Handle case when jStat object is passed to jStat.\n } else if (args[0] instanceof jStat) {\n // Duplicate the object and pass it back.\n return jStat(args[0].toArray());\n\n // Unexpected argument value, return empty jStat object.\n // TODO: This is strange behavior. Shouldn't this throw or some such to let\n // the user know they had bad arguments?\n } else {\n this[0] = [];\n this.length = 1;\n }\n\n return this;\n};\njStat._init.prototype = jStat.prototype;\njStat._init.constructor = jStat;\n\n\n// Utility functions.\n// TODO: for internal use only?\njStat.utils = {\n calcRdx: calcRdx,\n isArray: isArray,\n isFunction: isFunction,\n isNumber: isNumber,\n toVector: toVector\n};\n\n\njStat._random_fn = Math.random;\njStat.setRandom = function setRandom(fn) {\n if (typeof fn !== 'function')\n throw new TypeError('fn is not a function');\n jStat._random_fn = fn;\n};\n\n\n// Easily extend the jStat object.\n// TODO: is this seriously necessary?\njStat.extend = function extend(obj) {\n var i, j;\n\n if (arguments.length === 1) {\n for (j in obj)\n jStat[j] = obj[j];\n return this;\n }\n\n for (i = 1; i < arguments.length; i++) {\n for (j in arguments[i])\n obj[j] = arguments[i][j];\n }\n\n return obj;\n};\n\n\n// Returns the number of rows in the matrix.\njStat.rows = function rows(arr) {\n return arr.length || 1;\n};\n\n\n// Returns the number of columns in the matrix.\njStat.cols = function cols(arr) {\n return arr[0].length || 1;\n};\n\n\n// Returns the dimensions of the object { rows: i, cols: j }\njStat.dimensions = function dimensions(arr) {\n return {\n rows: jStat.rows(arr),\n cols: jStat.cols(arr)\n };\n};\n\n\n// Returns a specified row as a vector or return a sub matrix by pick some rows\njStat.row = function row(arr, index) {\n if (isArray(index)) {\n return index.map(function(i) {\n return jStat.row(arr, i);\n })\n }\n return arr[index];\n};\n\n\n// return row as array\n// rowa([[1,2],[3,4]],0) -> [1,2]\njStat.rowa = function rowa(arr, i) {\n return jStat.row(arr, i);\n};\n\n\n// Returns the specified column as a vector or return a sub matrix by pick some\n// columns\njStat.col = function col(arr, index) {\n if (isArray(index)) {\n var submat = jStat.arange(arr.length).map(function() {\n return new Array(index.length);\n });\n index.forEach(function(ind, i){\n jStat.arange(arr.length).forEach(function(j) {\n submat[j][i] = arr[j][ind];\n });\n });\n return submat;\n }\n var column = new Array(arr.length);\n for (var i = 0; i < arr.length; i++)\n column[i] = [arr[i][index]];\n return column;\n};\n\n\n// return column as array\n// cola([[1,2],[3,4]],0) -> [1,3]\njStat.cola = function cola(arr, i) {\n return jStat.col(arr, i).map(function(a){ return a[0] });\n};\n\n\n// Returns the diagonal of the matrix\njStat.diag = function diag(arr) {\n var nrow = jStat.rows(arr);\n var res = new Array(nrow);\n for (var row = 0; row < nrow; row++)\n res[row] = [arr[row][row]];\n return res;\n};\n\n\n// Returns the anti-diagonal of the matrix\njStat.antidiag = function antidiag(arr) {\n var nrow = jStat.rows(arr) - 1;\n var res = new Array(nrow);\n for (var i = 0; nrow >= 0; nrow--, i++)\n res[i] = [arr[i][nrow]];\n return res;\n};\n\n// Transpose a matrix or array.\njStat.transpose = function transpose(arr) {\n var obj = [];\n var objArr, rows, cols, j, i;\n\n // Make sure arr is in matrix format.\n if (!isArray(arr[0]))\n arr = [arr];\n\n rows = arr.length;\n cols = arr[0].length;\n\n for (i = 0; i < cols; i++) {\n objArr = new Array(rows);\n for (j = 0; j < rows; j++)\n objArr[j] = arr[j][i];\n obj.push(objArr);\n }\n\n // If obj is vector, return only single array.\n return obj.length === 1 ? obj[0] : obj;\n};\n\n\n// Map a function to an array or array of arrays.\n// \"toAlter\" is an internal variable.\njStat.map = function map(arr, func, toAlter) {\n var row, nrow, ncol, res, col;\n\n if (!isArray(arr[0]))\n arr = [arr];\n\n nrow = arr.length;\n ncol = arr[0].length;\n res = toAlter ? arr : new Array(nrow);\n\n for (row = 0; row < nrow; row++) {\n // if the row doesn't exist, create it\n if (!res[row])\n res[row] = new Array(ncol);\n for (col = 0; col < ncol; col++)\n res[row][col] = func(arr[row][col], row, col);\n }\n\n return res.length === 1 ? res[0] : res;\n};\n\n\n// Cumulatively combine the elements of an array or array of arrays using a function.\njStat.cumreduce = function cumreduce(arr, func, toAlter) {\n var row, nrow, ncol, res, col;\n\n if (!isArray(arr[0]))\n arr = [arr];\n\n nrow = arr.length;\n ncol = arr[0].length;\n res = toAlter ? arr : new Array(nrow);\n\n for (row = 0; row < nrow; row++) {\n // if the row doesn't exist, create it\n if (!res[row])\n res[row] = new Array(ncol);\n if (ncol > 0)\n res[row][0] = arr[row][0];\n for (col = 1; col < ncol; col++)\n res[row][col] = func(res[row][col-1], arr[row][col]);\n }\n return res.length === 1 ? res[0] : res;\n};\n\n\n// Destructively alter an array.\njStat.alter = function alter(arr, func) {\n return jStat.map(arr, func, true);\n};\n\n\n// Generate a rows x cols matrix according to the supplied function.\njStat.create = function create(rows, cols, func) {\n var res = new Array(rows);\n var i, j;\n\n if (isFunction(cols)) {\n func = cols;\n cols = rows;\n }\n\n for (i = 0; i < rows; i++) {\n res[i] = new Array(cols);\n for (j = 0; j < cols; j++)\n res[i][j] = func(i, j);\n }\n\n return res;\n};\n\n\nfunction retZero() { return 0; }\n\n\n// Generate a rows x cols matrix of zeros.\njStat.zeros = function zeros(rows, cols) {\n if (!isNumber(cols))\n cols = rows;\n return jStat.create(rows, cols, retZero);\n};\n\n\nfunction retOne() { return 1; }\n\n\n// Generate a rows x cols matrix of ones.\njStat.ones = function ones(rows, cols) {\n if (!isNumber(cols))\n cols = rows;\n return jStat.create(rows, cols, retOne);\n};\n\n\n// Generate a rows x cols matrix of uniformly random numbers.\njStat.rand = function rand(rows, cols) {\n if (!isNumber(cols))\n cols = rows;\n return jStat.create(rows, cols, jStat._random_fn);\n};\n\n\nfunction retIdent(i, j) { return i === j ? 1 : 0; }\n\n\n// Generate an identity matrix of size row x cols.\njStat.identity = function identity(rows, cols) {\n if (!isNumber(cols))\n cols = rows;\n return jStat.create(rows, cols, retIdent);\n};\n\n\n// Tests whether a matrix is symmetric\njStat.symmetric = function symmetric(arr) {\n var size = arr.length;\n var row, col;\n\n if (arr.length !== arr[0].length)\n return false;\n\n for (row = 0; row < size; row++) {\n for (col = 0; col < size; col++)\n if (arr[col][row] !== arr[row][col])\n return false;\n }\n\n return true;\n};\n\n\n// Set all values to zero.\njStat.clear = function clear(arr) {\n return jStat.alter(arr, retZero);\n};\n\n\n// Generate sequence.\njStat.seq = function seq(min, max, length, func) {\n if (!isFunction(func))\n func = false;\n\n var arr = [];\n var hival = calcRdx(min, max);\n var step = (max * hival - min * hival) / ((length - 1) * hival);\n var current = min;\n var cnt;\n\n // Current is assigned using a technique to compensate for IEEE error.\n // TODO: Needs better implementation.\n for (cnt = 0;\n current <= max && cnt < length;\n cnt++, current = (min * hival + step * hival * cnt) / hival) {\n arr.push((func ? func(current, cnt) : current));\n }\n\n return arr;\n};\n\n\n// arange(5) -> [0,1,2,3,4]\n// arange(1,5) -> [1,2,3,4]\n// arange(5,1,-1) -> [5,4,3,2]\njStat.arange = function arange(start, end, step) {\n var rl = [];\n var i;\n step = step || 1;\n if (end === undefined) {\n end = start;\n start = 0;\n }\n if (start === end || step === 0) {\n return [];\n }\n if (start < end && step < 0) {\n return [];\n }\n if (start > end && step > 0) {\n return [];\n }\n if (step > 0) {\n for (i = start; i < end; i += step) {\n rl.push(i);\n }\n } else {\n for (i = start; i > end; i += step) {\n rl.push(i);\n }\n }\n return rl;\n};\n\n\n// A=[[1,2,3],[4,5,6],[7,8,9]]\n// slice(A,{row:{end:2},col:{start:1}}) -> [[2,3],[5,6]]\n// slice(A,1,{start:1}) -> [5,6]\n// as numpy code A[:2,1:]\njStat.slice = (function(){\n function _slice(list, start, end, step) {\n // note it's not equal to range.map mode it's a bug\n var i;\n var rl = [];\n var length = list.length;\n if (start === undefined && end === undefined && step === undefined) {\n return jStat.copy(list);\n }\n\n start = start || 0;\n end = end || list.length;\n start = start >= 0 ? start : length + start;\n end = end >= 0 ? end : length + end;\n step = step || 1;\n if (start === end || step === 0) {\n return [];\n }\n if (start < end && step < 0) {\n return [];\n }\n if (start > end && step > 0) {\n return [];\n }\n if (step > 0) {\n for (i = start; i < end; i += step) {\n rl.push(list[i]);\n }\n } else {\n for (i = start; i > end;i += step) {\n rl.push(list[i]);\n }\n }\n return rl;\n }\n\n function slice(list, rcSlice) {\n var colSlice, rowSlice;\n rcSlice = rcSlice || {};\n if (isNumber(rcSlice.row)) {\n if (isNumber(rcSlice.col))\n return list[rcSlice.row][rcSlice.col];\n var row = jStat.rowa(list, rcSlice.row);\n colSlice = rcSlice.col || {};\n return _slice(row, colSlice.start, colSlice.end, colSlice.step);\n }\n\n if (isNumber(rcSlice.col)) {\n var col = jStat.cola(list, rcSlice.col);\n rowSlice = rcSlice.row || {};\n return _slice(col, rowSlice.start, rowSlice.end, rowSlice.step);\n }\n\n rowSlice = rcSlice.row || {};\n colSlice = rcSlice.col || {};\n var rows = _slice(list, rowSlice.start, rowSlice.end, rowSlice.step);\n return rows.map(function(row) {\n return _slice(row, colSlice.start, colSlice.end, colSlice.step);\n });\n }\n\n return slice;\n}());\n\n\n// A=[[1,2,3],[4,5,6],[7,8,9]]\n// sliceAssign(A,{row:{start:1},col:{start:1}},[[0,0],[0,0]])\n// A=[[1,2,3],[4,0,0],[7,0,0]]\njStat.sliceAssign = function sliceAssign(A, rcSlice, B) {\n var nl, ml;\n if (isNumber(rcSlice.row)) {\n if (isNumber(rcSlice.col))\n return A[rcSlice.row][rcSlice.col] = B;\n rcSlice.col = rcSlice.col || {};\n rcSlice.col.start = rcSlice.col.start || 0;\n rcSlice.col.end = rcSlice.col.end || A[0].length;\n rcSlice.col.step = rcSlice.col.step || 1;\n nl = jStat.arange(rcSlice.col.start,\n Math.min(A.length, rcSlice.col.end),\n rcSlice.col.step);\n var m = rcSlice.row;\n nl.forEach(function(n, i) {\n A[m][n] = B[i];\n });\n return A;\n }\n\n if (isNumber(rcSlice.col)) {\n rcSlice.row = rcSlice.row || {};\n rcSlice.row.start = rcSlice.row.start || 0;\n rcSlice.row.end = rcSlice.row.end || A.length;\n rcSlice.row.step = rcSlice.row.step || 1;\n ml = jStat.arange(rcSlice.row.start,\n Math.min(A[0].length, rcSlice.row.end),\n rcSlice.row.step);\n var n = rcSlice.col;\n ml.forEach(function(m, j) {\n A[m][n] = B[j];\n });\n return A;\n }\n\n if (B[0].length === undefined) {\n B = [B];\n }\n rcSlice.row.start = rcSlice.row.start || 0;\n rcSlice.row.end = rcSlice.row.end || A.length;\n rcSlice.row.step = rcSlice.row.step || 1;\n rcSlice.col.start = rcSlice.col.start || 0;\n rcSlice.col.end = rcSlice.col.end || A[0].length;\n rcSlice.col.step = rcSlice.col.step || 1;\n ml = jStat.arange(rcSlice.row.start,\n Math.min(A.length, rcSlice.row.end),\n rcSlice.row.step);\n nl = jStat.arange(rcSlice.col.start,\n Math.min(A[0].length, rcSlice.col.end),\n rcSlice.col.step);\n ml.forEach(function(m, i) {\n nl.forEach(function(n, j) {\n A[m][n] = B[i][j];\n });\n });\n return A;\n};\n\n\n// [1,2,3] ->\n// [[1,0,0],[0,2,0],[0,0,3]]\njStat.diagonal = function diagonal(diagArray) {\n var mat = jStat.zeros(diagArray.length, diagArray.length);\n diagArray.forEach(function(t, i) {\n mat[i][i] = t;\n });\n return mat;\n};\n\n\n// return copy of A\njStat.copy = function copy(A) {\n return A.map(function(row) {\n if (isNumber(row))\n return row;\n return row.map(function(t) {\n return t;\n });\n });\n};\n\n\n// TODO: Go over this entire implementation. Seems a tragic waste of resources\n// doing all this work. Instead, and while ugly, use new Function() to generate\n// a custom function for each static method.\n\n// Quick reference.\nvar jProto = jStat.prototype;\n\n// Default length.\njProto.length = 0;\n\n// For internal use only.\n// TODO: Check if they're actually used, and if they are then rename them\n// to _*\njProto.push = Array.prototype.push;\njProto.sort = Array.prototype.sort;\njProto.splice = Array.prototype.splice;\njProto.slice = Array.prototype.slice;\n\n\n// Return a clean array.\njProto.toArray = function toArray() {\n return this.length > 1 ? slice.call(this) : slice.call(this)[0];\n};\n\n\n// Map a function to a matrix or vector.\njProto.map = function map(func, toAlter) {\n return jStat(jStat.map(this, func, toAlter));\n};\n\n\n// Cumulatively combine the elements of a matrix or vector using a function.\njProto.cumreduce = function cumreduce(func, toAlter) {\n return jStat(jStat.cumreduce(this, func, toAlter));\n};\n\n\n// Destructively alter an array.\njProto.alter = function alter(func) {\n jStat.alter(this, func);\n return this;\n};\n\n\n// Extend prototype with methods that have no argument.\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n jProto[passfunc] = function(func) {\n var self = this,\n results;\n // Check for callback.\n if (func) {\n setTimeout(function() {\n func.call(self, jProto[passfunc].call(self));\n });\n return this;\n }\n results = jStat[passfunc](this);\n return isArray(results) ? jStat(results) : results;\n };\n })(funcs[i]);\n})('transpose clear symmetric rows cols dimensions diag antidiag'.split(' '));\n\n\n// Extend prototype with methods that have one argument.\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n jProto[passfunc] = function(index, func) {\n var self = this;\n // check for callback\n if (func) {\n setTimeout(function() {\n func.call(self, jProto[passfunc].call(self, index));\n });\n return this;\n }\n return jStat(jStat[passfunc](this, index));\n };\n })(funcs[i]);\n})('row col'.split(' '));\n\n\n// Extend prototype with simple shortcut methods.\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n jProto[passfunc] = function() {\n return jStat(jStat[passfunc].apply(null, arguments));\n };\n })(funcs[i]);\n})('create zeros ones rand identity'.split(' '));\n\n\n// Exposing jStat.\nreturn jStat;\n\n}(Math));\n(function(jStat, Math) {\n\nvar isFunction = jStat.utils.isFunction;\n\n// Ascending functions for sort\nfunction ascNum(a, b) { return a - b; }\n\nfunction clip(arg, min, max) {\n return Math.max(min, Math.min(arg, max));\n}\n\n\n// sum of an array\njStat.sum = function sum(arr) {\n var sum = 0;\n var i = arr.length;\n while (--i >= 0)\n sum += arr[i];\n return sum;\n};\n\n\n// sum squared\njStat.sumsqrd = function sumsqrd(arr) {\n var sum = 0;\n var i = arr.length;\n while (--i >= 0)\n sum += arr[i] * arr[i];\n return sum;\n};\n\n\n// sum of squared errors of prediction (SSE)\njStat.sumsqerr = function sumsqerr(arr) {\n var mean = jStat.mean(arr);\n var sum = 0;\n var i = arr.length;\n var tmp;\n while (--i >= 0) {\n tmp = arr[i] - mean;\n sum += tmp * tmp;\n }\n return sum;\n};\n\n// sum of an array in each row\njStat.sumrow = function sumrow(arr) {\n var sum = 0;\n var i = arr.length;\n while (--i >= 0)\n sum += arr[i];\n return sum;\n};\n\n// product of an array\njStat.product = function product(arr) {\n var prod = 1;\n var i = arr.length;\n while (--i >= 0)\n prod *= arr[i];\n return prod;\n};\n\n\n// minimum value of an array\njStat.min = function min(arr) {\n var low = arr[0];\n var i = 0;\n while (++i < arr.length)\n if (arr[i] < low)\n low = arr[i];\n return low;\n};\n\n\n// maximum value of an array\njStat.max = function max(arr) {\n var high = arr[0];\n var i = 0;\n while (++i < arr.length)\n if (arr[i] > high)\n high = arr[i];\n return high;\n};\n\n\n// unique values of an array\njStat.unique = function unique(arr) {\n var hash = {}, _arr = [];\n for(var i = 0; i < arr.length; i++) {\n if (!hash[arr[i]]) {\n hash[arr[i]] = true;\n _arr.push(arr[i]);\n }\n }\n return _arr;\n};\n\n\n// mean value of an array\njStat.mean = function mean(arr) {\n return jStat.sum(arr) / arr.length;\n};\n\n\n// mean squared error (MSE)\njStat.meansqerr = function meansqerr(arr) {\n return jStat.sumsqerr(arr) / arr.length;\n};\n\n\n// geometric mean of an array\njStat.geomean = function geomean(arr) {\n var logs = arr.map(Math.log)\n var meanOfLogs = jStat.mean(logs)\n return Math.exp(meanOfLogs)\n};\n\n\n// median of an array\njStat.median = function median(arr) {\n var arrlen = arr.length;\n var _arr = arr.slice().sort(ascNum);\n // check if array is even or odd, then return the appropriate\n return !(arrlen & 1)\n ? (_arr[(arrlen / 2) - 1 ] + _arr[(arrlen / 2)]) / 2\n : _arr[(arrlen / 2) | 0 ];\n};\n\n\n// cumulative sum of an array\njStat.cumsum = function cumsum(arr) {\n return jStat.cumreduce(arr, function (a, b) { return a + b; });\n};\n\n\n// cumulative product of an array\njStat.cumprod = function cumprod(arr) {\n return jStat.cumreduce(arr, function (a, b) { return a * b; });\n};\n\n\n// successive differences of a sequence\njStat.diff = function diff(arr) {\n var diffs = [];\n var arrLen = arr.length;\n var i;\n for (i = 1; i < arrLen; i++)\n diffs.push(arr[i] - arr[i - 1]);\n return diffs;\n};\n\n\n// ranks of an array\njStat.rank = function (arr) {\n var i;\n var distinctNumbers = [];\n var numberCounts = {};\n for (i = 0; i < arr.length; i++) {\n var number = arr[i];\n if (numberCounts[number]) {\n numberCounts[number]++;\n } else {\n numberCounts[number] = 1;\n distinctNumbers.push(number);\n }\n }\n\n var sortedDistinctNumbers = distinctNumbers.sort(ascNum);\n var numberRanks = {};\n var currentRank = 1;\n for (i = 0; i < sortedDistinctNumbers.length; i++) {\n var number = sortedDistinctNumbers[i];\n var count = numberCounts[number];\n var first = currentRank;\n var last = currentRank + count - 1;\n var rank = (first + last) / 2;\n numberRanks[number] = rank;\n currentRank += count;\n }\n\n return arr.map(function (number) {\n return numberRanks[number];\n });\n};\n\n\n// mode of an array\n// if there are multiple modes of an array, return all of them\n// is this the appropriate way of handling it?\njStat.mode = function mode(arr) {\n var arrLen = arr.length;\n var _arr = arr.slice().sort(ascNum);\n var count = 1;\n var maxCount = 0;\n var numMaxCount = 0;\n var mode_arr = [];\n var i;\n\n for (i = 0; i < arrLen; i++) {\n if (_arr[i] === _arr[i + 1]) {\n count++;\n } else {\n if (count > maxCount) {\n mode_arr = [_arr[i]];\n maxCount = count;\n numMaxCount = 0;\n }\n // are there multiple max counts\n else if (count === maxCount) {\n mode_arr.push(_arr[i]);\n numMaxCount++;\n }\n // resetting count for new value in array\n count = 1;\n }\n }\n\n return numMaxCount === 0 ? mode_arr[0] : mode_arr;\n};\n\n\n// range of an array\njStat.range = function range(arr) {\n return jStat.max(arr) - jStat.min(arr);\n};\n\n// variance of an array\n// flag = true indicates sample instead of population\njStat.variance = function variance(arr, flag) {\n return jStat.sumsqerr(arr) / (arr.length - (flag ? 1 : 0));\n};\n\n// pooled variance of an array of arrays\njStat.pooledvariance = function pooledvariance(arr) {\n var sumsqerr = arr.reduce(function (a, samples) {return a + jStat.sumsqerr(samples);}, 0);\n var count = arr.reduce(function (a, samples) {return a + samples.length;}, 0);\n return sumsqerr / (count - arr.length);\n};\n\n// deviation of an array\njStat.deviation = function (arr) {\n var mean = jStat.mean(arr);\n var arrlen = arr.length;\n var dev = new Array(arrlen);\n for (var i = 0; i < arrlen; i++) {\n dev[i] = arr[i] - mean;\n }\n return dev;\n};\n\n// standard deviation of an array\n// flag = true indicates sample instead of population\njStat.stdev = function stdev(arr, flag) {\n return Math.sqrt(jStat.variance(arr, flag));\n};\n\n// pooled standard deviation of an array of arrays\njStat.pooledstdev = function pooledstdev(arr) {\n return Math.sqrt(jStat.pooledvariance(arr));\n};\n\n// mean deviation (mean absolute deviation) of an array\njStat.meandev = function meandev(arr) {\n var mean = jStat.mean(arr);\n var a = [];\n for (var i = arr.length - 1; i >= 0; i--) {\n a.push(Math.abs(arr[i] - mean));\n }\n return jStat.mean(a);\n};\n\n\n// median deviation (median absolute deviation) of an array\njStat.meddev = function meddev(arr) {\n var median = jStat.median(arr);\n var a = [];\n for (var i = arr.length - 1; i >= 0; i--) {\n a.push(Math.abs(arr[i] - median));\n }\n return jStat.median(a);\n};\n\n\n// coefficient of variation\njStat.coeffvar = function coeffvar(arr) {\n return jStat.stdev(arr) / jStat.mean(arr);\n};\n\n\n// quartiles of an array\njStat.quartiles = function quartiles(arr) {\n var arrlen = arr.length;\n var _arr = arr.slice().sort(ascNum);\n return [\n _arr[ Math.round((arrlen) / 4) - 1 ],\n _arr[ Math.round((arrlen) / 2) - 1 ],\n _arr[ Math.round((arrlen) * 3 / 4) - 1 ]\n ];\n};\n\n\n// Arbitary quantiles of an array. Direct port of the scipy.stats\n// implementation by Pierre GF Gerard-Marchant.\njStat.quantiles = function quantiles(arr, quantilesArray, alphap, betap) {\n var sortedArray = arr.slice().sort(ascNum);\n var quantileVals = [quantilesArray.length];\n var n = arr.length;\n var i, p, m, aleph, k, gamma;\n\n if (typeof alphap === 'undefined')\n alphap = 3 / 8;\n if (typeof betap === 'undefined')\n betap = 3 / 8;\n\n for (i = 0; i < quantilesArray.length; i++) {\n p = quantilesArray[i];\n m = alphap + p * (1 - alphap - betap);\n aleph = n * p + m;\n k = Math.floor(clip(aleph, 1, n - 1));\n gamma = clip(aleph - k, 0, 1);\n quantileVals[i] = (1 - gamma) * sortedArray[k - 1] + gamma * sortedArray[k];\n }\n\n return quantileVals;\n};\n\n// Return the k-th percentile of values in a range, where k is in the range 0..1, inclusive.\n// Passing true for the exclusive parameter excludes both endpoints of the range.\njStat.percentile = function percentile(arr, k, exclusive) {\n var _arr = arr.slice().sort(ascNum);\n var realIndex = k * (_arr.length + (exclusive ? 1 : -1)) + (exclusive ? 0 : 1);\n var index = parseInt(realIndex);\n var frac = realIndex - index;\n if (index + 1 < _arr.length) {\n return _arr[index - 1] + frac * (_arr[index] - _arr[index - 1]);\n } else {\n return _arr[index - 1];\n }\n}\n\n// The percentile rank of score in a given array. Returns the percentage\n// of all values in the input array that are less than (kind='strict') or\n// less or equal than (kind='weak') score. Default is weak.\njStat.percentileOfScore = function percentileOfScore(arr, score, kind) {\n var counter = 0;\n var len = arr.length;\n var strict = false;\n var value, i;\n\n if (kind === 'strict')\n strict = true;\n\n for (i = 0; i < len; i++) {\n value = arr[i];\n if ((strict && value < score) ||\n (!strict && value <= score)) {\n counter++;\n }\n }\n\n return counter / len;\n};\n\n\n// Histogram (bin count) data\njStat.histogram = function histogram(arr, binCnt) {\n binCnt = binCnt || 4;\n var first = jStat.min(arr);\n var binWidth = (jStat.max(arr) - first) / binCnt;\n var len = arr.length;\n var bins = [];\n var i;\n\n for (i = 0; i < binCnt; i++)\n bins[i] = 0;\n for (i = 0; i < len; i++)\n bins[Math.min(Math.floor(((arr[i] - first) / binWidth)), binCnt - 1)] += 1;\n\n return bins;\n};\n\n\n// covariance of two arrays\njStat.covariance = function covariance(arr1, arr2) {\n var u = jStat.mean(arr1);\n var v = jStat.mean(arr2);\n var arr1Len = arr1.length;\n var sq_dev = new Array(arr1Len);\n var i;\n\n for (i = 0; i < arr1Len; i++)\n sq_dev[i] = (arr1[i] - u) * (arr2[i] - v);\n\n return jStat.sum(sq_dev) / (arr1Len - 1);\n};\n\n\n// (pearson's) population correlation coefficient, rho\njStat.corrcoeff = function corrcoeff(arr1, arr2) {\n return jStat.covariance(arr1, arr2) /\n jStat.stdev(arr1, 1) /\n jStat.stdev(arr2, 1);\n};\n\n // (spearman's) rank correlation coefficient, sp\njStat.spearmancoeff = function (arr1, arr2) {\n arr1 = jStat.rank(arr1);\n arr2 = jStat.rank(arr2);\n //return pearson's correlation of the ranks:\n return jStat.corrcoeff(arr1, arr2);\n}\n\n\n// statistical standardized moments (general form of skew/kurt)\njStat.stanMoment = function stanMoment(arr, n) {\n var mu = jStat.mean(arr);\n var sigma = jStat.stdev(arr);\n var len = arr.length;\n var skewSum = 0;\n\n for (var i = 0; i < len; i++)\n skewSum += Math.pow((arr[i] - mu) / sigma, n);\n\n return skewSum / arr.length;\n};\n\n// (pearson's) moment coefficient of skewness\njStat.skewness = function skewness(arr) {\n return jStat.stanMoment(arr, 3);\n};\n\n// (pearson's) (excess) kurtosis\njStat.kurtosis = function kurtosis(arr) {\n return jStat.stanMoment(arr, 4) - 3;\n};\n\n\nvar jProto = jStat.prototype;\n\n\n// Extend jProto with method for calculating cumulative sums and products.\n// This differs from the similar extension below as cumsum and cumprod should\n// not be run again in the case fullbool === true.\n// If a matrix is passed, automatically assume operation should be done on the\n// columns.\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n // If a matrix is passed, automatically assume operation should be done on\n // the columns.\n jProto[passfunc] = function(fullbool, func) {\n var arr = [];\n var i = 0;\n var tmpthis = this;\n // Assignment reassignation depending on how parameters were passed in.\n if (isFunction(fullbool)) {\n func = fullbool;\n fullbool = false;\n }\n // Check if a callback was passed with the function.\n if (func) {\n setTimeout(function() {\n func.call(tmpthis, jProto[passfunc].call(tmpthis, fullbool));\n });\n return this;\n }\n // Check if matrix and run calculations.\n if (this.length > 1) {\n tmpthis = fullbool === true ? this : this.transpose();\n for (; i < tmpthis.length; i++)\n arr[i] = jStat[passfunc](tmpthis[i]);\n return arr;\n }\n // Pass fullbool if only vector, not a matrix. for variance and stdev.\n return jStat[passfunc](this[0], fullbool);\n };\n })(funcs[i]);\n})(('cumsum cumprod').split(' '));\n\n\n// Extend jProto with methods which don't require arguments and work on columns.\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n // If a matrix is passed, automatically assume operation should be done on\n // the columns.\n jProto[passfunc] = function(fullbool, func) {\n var arr = [];\n var i = 0;\n var tmpthis = this;\n // Assignment reassignation depending on how parameters were passed in.\n if (isFunction(fullbool)) {\n func = fullbool;\n fullbool = false;\n }\n // Check if a callback was passed with the function.\n if (func) {\n setTimeout(function() {\n func.call(tmpthis, jProto[passfunc].call(tmpthis, fullbool));\n });\n return this;\n }\n // Check if matrix and run calculations.\n if (this.length > 1) {\n if (passfunc !== 'sumrow')\n tmpthis = fullbool === true ? this : this.transpose();\n for (; i < tmpthis.length; i++)\n arr[i] = jStat[passfunc](tmpthis[i]);\n return fullbool === true\n ? jStat[passfunc](jStat.utils.toVector(arr))\n : arr;\n }\n // Pass fullbool if only vector, not a matrix. for variance and stdev.\n return jStat[passfunc](this[0], fullbool);\n };\n })(funcs[i]);\n})(('sum sumsqrd sumsqerr sumrow product min max unique mean meansqerr ' +\n 'geomean median diff rank mode range variance deviation stdev meandev ' +\n 'meddev coeffvar quartiles histogram skewness kurtosis').split(' '));\n\n\n// Extend jProto with functions that take arguments. Operations on matrices are\n// done on columns.\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n jProto[passfunc] = function() {\n var arr = [];\n var i = 0;\n var tmpthis = this;\n var args = Array.prototype.slice.call(arguments);\n var callbackFunction;\n\n // If the last argument is a function, we assume it's a callback; we\n // strip the callback out and call the function again.\n if (isFunction(args[args.length - 1])) {\n callbackFunction = args[args.length - 1];\n var argsToPass = args.slice(0, args.length - 1);\n\n setTimeout(function() {\n callbackFunction.call(tmpthis,\n jProto[passfunc].apply(tmpthis, argsToPass));\n });\n return this;\n\n // Otherwise we curry the function args and call normally.\n } else {\n callbackFunction = undefined;\n var curriedFunction = function curriedFunction(vector) {\n return jStat[passfunc].apply(tmpthis, [vector].concat(args));\n }\n }\n\n // If this is a matrix, run column-by-column.\n if (this.length > 1) {\n tmpthis = tmpthis.transpose();\n for (; i < tmpthis.length; i++)\n arr[i] = curriedFunction(tmpthis[i]);\n return arr;\n }\n\n // Otherwise run on the vector.\n return curriedFunction(this[0]);\n };\n })(funcs[i]);\n})('quantiles percentileOfScore'.split(' '));\n\n}(jStat, Math));\n// Special functions //\n(function(jStat, Math) {\n\n// Log-gamma function\njStat.gammaln = function gammaln(x) {\n var j = 0;\n var cof = [\n 76.18009172947146, -86.50532032941677, 24.01409824083091,\n -1.231739572450155, 0.1208650973866179e-2, -0.5395239384953e-5\n ];\n var ser = 1.000000000190015;\n var xx, y, tmp;\n tmp = (y = xx = x) + 5.5;\n tmp -= (xx + 0.5) * Math.log(tmp);\n for (; j < 6; j++)\n ser += cof[j] / ++y;\n return Math.log(2.5066282746310005 * ser / xx) - tmp;\n};\n\n/*\n * log-gamma function to support poisson distribution sampling. The\n * algorithm comes from SPECFUN by Shanjie Zhang and Jianming Jin and their\n * book \"Computation of Special Functions\", 1996, John Wiley & Sons, Inc.\n */\njStat.loggam = function loggam(x) {\n var x0, x2, xp, gl, gl0;\n var k, n;\n\n var a = [8.333333333333333e-02, -2.777777777777778e-03,\n 7.936507936507937e-04, -5.952380952380952e-04,\n 8.417508417508418e-04, -1.917526917526918e-03,\n 6.410256410256410e-03, -2.955065359477124e-02,\n 1.796443723688307e-01, -1.39243221690590e+00];\n x0 = x;\n n = 0;\n if ((x == 1.0) || (x == 2.0)) {\n return 0.0;\n }\n if (x <= 7.0) {\n n = Math.floor(7 - x);\n x0 = x + n;\n }\n x2 = 1.0 / (x0 * x0);\n xp = 2 * Math.PI;\n gl0 = a[9];\n for (k = 8; k >= 0; k--) {\n gl0 *= x2;\n gl0 += a[k];\n }\n gl = gl0 / x0 + 0.5 * Math.log(xp) + (x0 - 0.5) * Math.log(x0) - x0;\n if (x <= 7.0) {\n for (k = 1; k <= n; k++) {\n gl -= Math.log(x0 - 1.0);\n x0 -= 1.0;\n }\n }\n return gl;\n}\n\n// gamma of x\njStat.gammafn = function gammafn(x) {\n var p = [-1.716185138865495, 24.76565080557592, -379.80425647094563,\n 629.3311553128184, 866.9662027904133, -31451.272968848367,\n -36144.413418691176, 66456.14382024054\n ];\n var q = [-30.8402300119739, 315.35062697960416, -1015.1563674902192,\n -3107.771671572311, 22538.118420980151, 4755.8462775278811,\n -134659.9598649693, -115132.2596755535];\n var fact = false;\n var n = 0;\n var xden = 0;\n var xnum = 0;\n var y = x;\n var i, z, yi, res;\n if (x > 171.6243769536076) {\n return Infinity;\n }\n if (y <= 0) {\n res = y % 1 + 3.6e-16;\n if (res) {\n fact = (!(y & 1) ? 1 : -1) * Math.PI / Math.sin(Math.PI * res);\n y = 1 - y;\n } else {\n return Infinity;\n }\n }\n yi = y;\n if (y < 1) {\n z = y++;\n } else {\n z = (y -= n = (y | 0) - 1) - 1;\n }\n for (i = 0; i < 8; ++i) {\n xnum = (xnum + p[i]) * z;\n xden = xden * z + q[i];\n }\n res = xnum / xden + 1;\n if (yi < y) {\n res /= yi;\n } else if (yi > y) {\n for (i = 0; i < n; ++i) {\n res *= y;\n y++;\n }\n }\n if (fact) {\n res = fact / res;\n }\n return res;\n};\n\n\n// lower incomplete gamma function, which is usually typeset with a\n// lower-case greek gamma as the function symbol\njStat.gammap = function gammap(a, x) {\n return jStat.lowRegGamma(a, x) * jStat.gammafn(a);\n};\n\n\n// The lower regularized incomplete gamma function, usually written P(a,x)\njStat.lowRegGamma = function lowRegGamma(a, x) {\n var aln = jStat.gammaln(a);\n var ap = a;\n var sum = 1 / a;\n var del = sum;\n var b = x + 1 - a;\n var c = 1 / 1.0e-30;\n var d = 1 / b;\n var h = d;\n var i = 1;\n // calculate maximum number of itterations required for a\n var ITMAX = -~(Math.log((a >= 1) ? a : 1 / a) * 8.5 + a * 0.4 + 17);\n var an;\n\n if (x < 0 || a <= 0) {\n return NaN;\n } else if (x < a + 1) {\n for (; i <= ITMAX; i++) {\n sum += del *= x / ++ap;\n }\n return (sum * Math.exp(-x + a * Math.log(x) - (aln)));\n }\n\n for (; i <= ITMAX; i++) {\n an = -i * (i - a);\n b += 2;\n d = an * d + b;\n c = b + an / c;\n d = 1 / d;\n h *= d * c;\n }\n\n return (1 - h * Math.exp(-x + a * Math.log(x) - (aln)));\n};\n\n// natural log factorial of n\njStat.factorialln = function factorialln(n) {\n return n < 0 ? NaN : jStat.gammaln(n + 1);\n};\n\n// factorial of n\njStat.factorial = function factorial(n) {\n return n < 0 ? NaN : jStat.gammafn(n + 1);\n};\n\n// combinations of n, m\njStat.combination = function combination(n, m) {\n // make sure n or m don't exceed the upper limit of usable values\n return (n > 170 || m > 170)\n ? Math.exp(jStat.combinationln(n, m))\n : (jStat.factorial(n) / jStat.factorial(m)) / jStat.factorial(n - m);\n};\n\n\njStat.combinationln = function combinationln(n, m){\n return jStat.factorialln(n) - jStat.factorialln(m) - jStat.factorialln(n - m);\n};\n\n\n// permutations of n, m\njStat.permutation = function permutation(n, m) {\n return jStat.factorial(n) / jStat.factorial(n - m);\n};\n\n\n// beta function\njStat.betafn = function betafn(x, y) {\n // ensure arguments are positive\n if (x <= 0 || y <= 0)\n return undefined;\n // make sure x + y doesn't exceed the upper limit of usable values\n return (x + y > 170)\n ? Math.exp(jStat.betaln(x, y))\n : jStat.gammafn(x) * jStat.gammafn(y) / jStat.gammafn(x + y);\n};\n\n\n// natural logarithm of beta function\njStat.betaln = function betaln(x, y) {\n return jStat.gammaln(x) + jStat.gammaln(y) - jStat.gammaln(x + y);\n};\n\n\n// Evaluates the continued fraction for incomplete beta function by modified\n// Lentz's method.\njStat.betacf = function betacf(x, a, b) {\n var fpmin = 1e-30;\n var m = 1;\n var qab = a + b;\n var qap = a + 1;\n var qam = a - 1;\n var c = 1;\n var d = 1 - qab * x / qap;\n var m2, aa, del, h;\n\n // These q's will be used in factors that occur in the coefficients\n if (Math.abs(d) < fpmin)\n d = fpmin;\n d = 1 / d;\n h = d;\n\n for (; m <= 100; m++) {\n m2 = 2 * m;\n aa = m * (b - m) * x / ((qam + m2) * (a + m2));\n // One step (the even one) of the recurrence\n d = 1 + aa * d;\n if (Math.abs(d) < fpmin)\n d = fpmin;\n c = 1 + aa / c;\n if (Math.abs(c) < fpmin)\n c = fpmin;\n d = 1 / d;\n h *= d * c;\n aa = -(a + m) * (qab + m) * x / ((a + m2) * (qap + m2));\n // Next step of the recurrence (the odd one)\n d = 1 + aa * d;\n if (Math.abs(d) < fpmin)\n d = fpmin;\n c = 1 + aa / c;\n if (Math.abs(c) < fpmin)\n c = fpmin;\n d = 1 / d;\n del = d * c;\n h *= del;\n if (Math.abs(del - 1.0) < 3e-7)\n break;\n }\n\n return h;\n};\n\n\n// Returns the inverse of the lower regularized inomplete gamma function\njStat.gammapinv = function gammapinv(p, a) {\n var j = 0;\n var a1 = a - 1;\n var EPS = 1e-8;\n var gln = jStat.gammaln(a);\n var x, err, t, u, pp, lna1, afac;\n\n if (p >= 1)\n return Math.max(100, a + 100 * Math.sqrt(a));\n if (p <= 0)\n return 0;\n if (a > 1) {\n lna1 = Math.log(a1);\n afac = Math.exp(a1 * (lna1 - 1) - gln);\n pp = (p < 0.5) ? p : 1 - p;\n t = Math.sqrt(-2 * Math.log(pp));\n x = (2.30753 + t * 0.27061) / (1 + t * (0.99229 + t * 0.04481)) - t;\n if (p < 0.5)\n x = -x;\n x = Math.max(1e-3,\n a * Math.pow(1 - 1 / (9 * a) - x / (3 * Math.sqrt(a)), 3));\n } else {\n t = 1 - a * (0.253 + a * 0.12);\n if (p < t)\n x = Math.pow(p / t, 1 / a);\n else\n x = 1 - Math.log(1 - (p - t) / (1 - t));\n }\n\n for(; j < 12; j++) {\n if (x <= 0)\n return 0;\n err = jStat.lowRegGamma(a, x) - p;\n if (a > 1)\n t = afac * Math.exp(-(x - a1) + a1 * (Math.log(x) - lna1));\n else\n t = Math.exp(-x + a1 * Math.log(x) - gln);\n u = err / t;\n x -= (t = u / (1 - 0.5 * Math.min(1, u * ((a - 1) / x - 1))));\n if (x <= 0)\n x = 0.5 * (x + t);\n if (Math.abs(t) < EPS * x)\n break;\n }\n\n return x;\n};\n\n\n// Returns the error function erf(x)\njStat.erf = function erf(x) {\n var cof = [-1.3026537197817094, 6.4196979235649026e-1, 1.9476473204185836e-2,\n -9.561514786808631e-3, -9.46595344482036e-4, 3.66839497852761e-4,\n 4.2523324806907e-5, -2.0278578112534e-5, -1.624290004647e-6,\n 1.303655835580e-6, 1.5626441722e-8, -8.5238095915e-8,\n 6.529054439e-9, 5.059343495e-9, -9.91364156e-10,\n -2.27365122e-10, 9.6467911e-11, 2.394038e-12,\n -6.886027e-12, 8.94487e-13, 3.13092e-13,\n -1.12708e-13, 3.81e-16, 7.106e-15,\n -1.523e-15, -9.4e-17, 1.21e-16,\n -2.8e-17];\n var j = cof.length - 1;\n var isneg = false;\n var d = 0;\n var dd = 0;\n var t, ty, tmp, res;\n\n if (x < 0) {\n x = -x;\n isneg = true;\n }\n\n t = 2 / (2 + x);\n ty = 4 * t - 2;\n\n for(; j > 0; j--) {\n tmp = d;\n d = ty * d - dd + cof[j];\n dd = tmp;\n }\n\n res = t * Math.exp(-x * x + 0.5 * (cof[0] + ty * d) - dd);\n return isneg ? res - 1 : 1 - res;\n};\n\n\n// Returns the complmentary error function erfc(x)\njStat.erfc = function erfc(x) {\n return 1 - jStat.erf(x);\n};\n\n\n// Returns the inverse of the complementary error function\njStat.erfcinv = function erfcinv(p) {\n var j = 0;\n var x, err, t, pp;\n if (p >= 2)\n return -100;\n if (p <= 0)\n return 100;\n pp = (p < 1) ? p : 2 - p;\n t = Math.sqrt(-2 * Math.log(pp / 2));\n x = -0.70711 * ((2.30753 + t * 0.27061) /\n (1 + t * (0.99229 + t * 0.04481)) - t);\n for (; j < 2; j++) {\n err = jStat.erfc(x) - pp;\n x += err / (1.12837916709551257 * Math.exp(-x * x) - x * err);\n }\n return (p < 1) ? x : -x;\n};\n\n\n// Returns the inverse of the incomplete beta function\njStat.ibetainv = function ibetainv(p, a, b) {\n var EPS = 1e-8;\n var a1 = a - 1;\n var b1 = b - 1;\n var j = 0;\n var lna, lnb, pp, t, u, err, x, al, h, w, afac;\n if (p <= 0)\n return 0;\n if (p >= 1)\n return 1;\n if (a >= 1 && b >= 1) {\n pp = (p < 0.5) ? p : 1 - p;\n t = Math.sqrt(-2 * Math.log(pp));\n x = (2.30753 + t * 0.27061) / (1 + t* (0.99229 + t * 0.04481)) - t;\n if (p < 0.5)\n x = -x;\n al = (x * x - 3) / 6;\n h = 2 / (1 / (2 * a - 1) + 1 / (2 * b - 1));\n w = (x * Math.sqrt(al + h) / h) - (1 / (2 * b - 1) - 1 / (2 * a - 1)) *\n (al + 5 / 6 - 2 / (3 * h));\n x = a / (a + b * Math.exp(2 * w));\n } else {\n lna = Math.log(a / (a + b));\n lnb = Math.log(b / (a + b));\n t = Math.exp(a * lna) / a;\n u = Math.exp(b * lnb) / b;\n w = t + u;\n if (p < t / w)\n x = Math.pow(a * w * p, 1 / a);\n else\n x = 1 - Math.pow(b * w * (1 - p), 1 / b);\n }\n afac = -jStat.gammaln(a) - jStat.gammaln(b) + jStat.gammaln(a + b);\n for(; j < 10; j++) {\n if (x === 0 || x === 1)\n return x;\n err = jStat.ibeta(x, a, b) - p;\n t = Math.exp(a1 * Math.log(x) + b1 * Math.log(1 - x) + afac);\n u = err / t;\n x -= (t = u / (1 - 0.5 * Math.min(1, u * (a1 / x - b1 / (1 - x)))));\n if (x <= 0)\n x = 0.5 * (x + t);\n if (x >= 1)\n x = 0.5 * (x + t + 1);\n if (Math.abs(t) < EPS * x && j > 0)\n break;\n }\n return x;\n};\n\n\n// Returns the incomplete beta function I_x(a,b)\njStat.ibeta = function ibeta(x, a, b) {\n // Factors in front of the continued fraction.\n var bt = (x === 0 || x === 1) ? 0 :\n Math.exp(jStat.gammaln(a + b) - jStat.gammaln(a) -\n jStat.gammaln(b) + a * Math.log(x) + b *\n Math.log(1 - x));\n if (x < 0 || x > 1)\n return false;\n if (x < (a + 1) / (a + b + 2))\n // Use continued fraction directly.\n return bt * jStat.betacf(x, a, b) / a;\n // else use continued fraction after making the symmetry transformation.\n return 1 - bt * jStat.betacf(1 - x, b, a) / b;\n};\n\n\n// Returns a normal deviate (mu=0, sigma=1).\n// If n and m are specified it returns a object of normal deviates.\njStat.randn = function randn(n, m) {\n var u, v, x, y, q;\n if (!m)\n m = n;\n if (n)\n return jStat.create(n, m, function() { return jStat.randn(); });\n do {\n u = jStat._random_fn();\n v = 1.7156 * (jStat._random_fn() - 0.5);\n x = u - 0.449871;\n y = Math.abs(v) + 0.386595;\n q = x * x + y * (0.19600 * y - 0.25472 * x);\n } while (q > 0.27597 && (q > 0.27846 || v * v > -4 * Math.log(u) * u * u));\n return v / u;\n};\n\n\n// Returns a gamma deviate by the method of Marsaglia and Tsang.\njStat.randg = function randg(shape, n, m) {\n var oalph = shape;\n var a1, a2, u, v, x, mat;\n if (!m)\n m = n;\n if (!shape)\n shape = 1;\n if (n) {\n mat = jStat.zeros(n,m);\n mat.alter(function() { return jStat.randg(shape); });\n return mat;\n }\n if (shape < 1)\n shape += 1;\n a1 = shape - 1 / 3;\n a2 = 1 / Math.sqrt(9 * a1);\n do {\n do {\n x = jStat.randn();\n v = 1 + a2 * x;\n } while(v <= 0);\n v = v * v * v;\n u = jStat._random_fn();\n } while(u > 1 - 0.331 * Math.pow(x, 4) &&\n Math.log(u) > 0.5 * x*x + a1 * (1 - v + Math.log(v)));\n // alpha > 1\n if (shape == oalph)\n return a1 * v;\n // alpha < 1\n do {\n u = jStat._random_fn();\n } while(u === 0);\n return Math.pow(u, 1 / oalph) * a1 * v;\n};\n\n\n// making use of static methods on the instance\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n jStat.fn[passfunc] = function() {\n return jStat(\n jStat.map(this, function(value) { return jStat[passfunc](value); }));\n }\n })(funcs[i]);\n})('gammaln gammafn factorial factorialln'.split(' '));\n\n\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n jStat.fn[passfunc] = function() {\n return jStat(jStat[passfunc].apply(null, arguments));\n };\n })(funcs[i]);\n})('randn'.split(' '));\n\n}(jStat, Math));\n(function(jStat, Math) {\n\n// generate all distribution instance methods\n(function(list) {\n for (var i = 0; i < list.length; i++) (function(func) {\n // distribution instance method\n jStat[func] = function f(a, b, c) {\n if (!(this instanceof f))\n return new f(a, b, c);\n this._a = a;\n this._b = b;\n this._c = c;\n return this;\n };\n // distribution method to be used on a jStat instance\n jStat.fn[func] = function(a, b, c) {\n var newthis = jStat[func](a, b, c);\n newthis.data = this;\n return newthis;\n };\n // sample instance method\n jStat[func].prototype.sample = function(arr) {\n var a = this._a;\n var b = this._b;\n var c = this._c;\n if (arr)\n return jStat.alter(arr, function() {\n return jStat[func].sample(a, b, c);\n });\n else\n return jStat[func].sample(a, b, c);\n };\n // generate the pdf, cdf and inv instance methods\n (function(vals) {\n for (var i = 0; i < vals.length; i++) (function(fnfunc) {\n jStat[func].prototype[fnfunc] = function(x) {\n var a = this._a;\n var b = this._b;\n var c = this._c;\n if (!x && x !== 0)\n x = this.data;\n if (typeof x !== 'number') {\n return jStat.fn.map.call(x, function(x) {\n return jStat[func][fnfunc](x, a, b, c);\n });\n }\n return jStat[func][fnfunc](x, a, b, c);\n };\n })(vals[i]);\n })('pdf cdf inv'.split(' '));\n // generate the mean, median, mode and variance instance methods\n (function(vals) {\n for (var i = 0; i < vals.length; i++) (function(fnfunc) {\n jStat[func].prototype[fnfunc] = function() {\n return jStat[func][fnfunc](this._a, this._b, this._c);\n };\n })(vals[i]);\n })('mean median mode variance'.split(' '));\n })(list[i]);\n})((\n 'beta centralF cauchy chisquare exponential gamma invgamma kumaraswamy ' +\n 'laplace lognormal noncentralt normal pareto studentt weibull uniform ' +\n 'binomial negbin hypgeom poisson triangular tukey arcsine'\n).split(' '));\n\n\n\n// extend beta function with static methods\njStat.extend(jStat.beta, {\n pdf: function pdf(x, alpha, beta) {\n // PDF is zero outside the support\n if (x > 1 || x < 0)\n return 0;\n // PDF is one for the uniform case\n if (alpha == 1 && beta == 1)\n return 1;\n\n if (alpha < 512 && beta < 512) {\n return (Math.pow(x, alpha - 1) * Math.pow(1 - x, beta - 1)) /\n jStat.betafn(alpha, beta);\n } else {\n return Math.exp((alpha - 1) * Math.log(x) +\n (beta - 1) * Math.log(1 - x) -\n jStat.betaln(alpha, beta));\n }\n },\n\n cdf: function cdf(x, alpha, beta) {\n return (x > 1 || x < 0) ? (x > 1) * 1 : jStat.ibeta(x, alpha, beta);\n },\n\n inv: function inv(x, alpha, beta) {\n return jStat.ibetainv(x, alpha, beta);\n },\n\n mean: function mean(alpha, beta) {\n return alpha / (alpha + beta);\n },\n\n median: function median(alpha, beta) {\n return jStat.ibetainv(0.5, alpha, beta);\n },\n\n mode: function mode(alpha, beta) {\n return (alpha - 1 ) / ( alpha + beta - 2);\n },\n\n // return a random sample\n sample: function sample(alpha, beta) {\n var u = jStat.randg(alpha);\n return u / (u + jStat.randg(beta));\n },\n\n variance: function variance(alpha, beta) {\n return (alpha * beta) / (Math.pow(alpha + beta, 2) * (alpha + beta + 1));\n }\n});\n\n// extend F function with static methods\njStat.extend(jStat.centralF, {\n // This implementation of the pdf function avoids float overflow\n // See the way that R calculates this value:\n // https://svn.r-project.org/R/trunk/src/nmath/df.c\n pdf: function pdf(x, df1, df2) {\n var p, q, f;\n\n if (x < 0)\n return 0;\n\n if (df1 <= 2) {\n if (x === 0 && df1 < 2) {\n return Infinity;\n }\n if (x === 0 && df1 === 2) {\n return 1;\n }\n return (1 / jStat.betafn(df1 / 2, df2 / 2)) *\n Math.pow(df1 / df2, df1 / 2) *\n Math.pow(x, (df1/2) - 1) *\n Math.pow((1 + (df1 / df2) * x), -(df1 + df2) / 2);\n }\n\n p = (df1 * x) / (df2 + x * df1);\n q = df2 / (df2 + x * df1);\n f = df1 * q / 2.0;\n return f * jStat.binomial.pdf((df1 - 2) / 2, (df1 + df2 - 2) / 2, p);\n },\n\n cdf: function cdf(x, df1, df2) {\n if (x < 0)\n return 0;\n return jStat.ibeta((df1 * x) / (df1 * x + df2), df1 / 2, df2 / 2);\n },\n\n inv: function inv(x, df1, df2) {\n return df2 / (df1 * (1 / jStat.ibetainv(x, df1 / 2, df2 / 2) - 1));\n },\n\n mean: function mean(df1, df2) {\n return (df2 > 2) ? df2 / (df2 - 2) : undefined;\n },\n\n mode: function mode(df1, df2) {\n return (df1 > 2) ? (df2 * (df1 - 2)) / (df1 * (df2 + 2)) : undefined;\n },\n\n // return a random sample\n sample: function sample(df1, df2) {\n var x1 = jStat.randg(df1 / 2) * 2;\n var x2 = jStat.randg(df2 / 2) * 2;\n return (x1 / df1) / (x2 / df2);\n },\n\n variance: function variance(df1, df2) {\n if (df2 <= 4)\n return undefined;\n return 2 * df2 * df2 * (df1 + df2 - 2) /\n (df1 * (df2 - 2) * (df2 - 2) * (df2 - 4));\n }\n});\n\n\n// extend cauchy function with static methods\njStat.extend(jStat.cauchy, {\n pdf: function pdf(x, local, scale) {\n if (scale < 0) { return 0; }\n\n return (scale / (Math.pow(x - local, 2) + Math.pow(scale, 2))) / Math.PI;\n },\n\n cdf: function cdf(x, local, scale) {\n return Math.atan((x - local) / scale) / Math.PI + 0.5;\n },\n\n inv: function(p, local, scale) {\n return local + scale * Math.tan(Math.PI * (p - 0.5));\n },\n\n median: function median(local/*, scale*/) {\n return local;\n },\n\n mode: function mode(local/*, scale*/) {\n return local;\n },\n\n sample: function sample(local, scale) {\n return jStat.randn() *\n Math.sqrt(1 / (2 * jStat.randg(0.5))) * scale + local;\n }\n});\n\n\n\n// extend chisquare function with static methods\njStat.extend(jStat.chisquare, {\n pdf: function pdf(x, dof) {\n if (x < 0)\n return 0;\n return (x === 0 && dof === 2) ? 0.5 :\n Math.exp((dof / 2 - 1) * Math.log(x) - x / 2 - (dof / 2) *\n Math.log(2) - jStat.gammaln(dof / 2));\n },\n\n cdf: function cdf(x, dof) {\n if (x < 0)\n return 0;\n return jStat.lowRegGamma(dof / 2, x / 2);\n },\n\n inv: function(p, dof) {\n return 2 * jStat.gammapinv(p, 0.5 * dof);\n },\n\n mean : function(dof) {\n return dof;\n },\n\n // TODO: this is an approximation (is there a better way?)\n median: function median(dof) {\n return dof * Math.pow(1 - (2 / (9 * dof)), 3);\n },\n\n mode: function mode(dof) {\n return (dof - 2 > 0) ? dof - 2 : 0;\n },\n\n sample: function sample(dof) {\n return jStat.randg(dof / 2) * 2;\n },\n\n variance: function variance(dof) {\n return 2 * dof;\n }\n});\n\n\n\n// extend exponential function with static methods\njStat.extend(jStat.exponential, {\n pdf: function pdf(x, rate) {\n return x < 0 ? 0 : rate * Math.exp(-rate * x);\n },\n\n cdf: function cdf(x, rate) {\n return x < 0 ? 0 : 1 - Math.exp(-rate * x);\n },\n\n inv: function(p, rate) {\n return -Math.log(1 - p) / rate;\n },\n\n mean : function(rate) {\n return 1 / rate;\n },\n\n median: function (rate) {\n return (1 / rate) * Math.log(2);\n },\n\n mode: function mode(/*rate*/) {\n return 0;\n },\n\n sample: function sample(rate) {\n return -1 / rate * Math.log(jStat._random_fn());\n },\n\n variance : function(rate) {\n return Math.pow(rate, -2);\n }\n});\n\n\n\n// extend gamma function with static methods\njStat.extend(jStat.gamma, {\n pdf: function pdf(x, shape, scale) {\n if (x < 0)\n return 0;\n return (x === 0 && shape === 1) ? 1 / scale :\n Math.exp((shape - 1) * Math.log(x) - x / scale -\n jStat.gammaln(shape) - shape * Math.log(scale));\n },\n\n cdf: function cdf(x, shape, scale) {\n if (x < 0)\n return 0;\n return jStat.lowRegGamma(shape, x / scale);\n },\n\n inv: function(p, shape, scale) {\n return jStat.gammapinv(p, shape) * scale;\n },\n\n mean : function(shape, scale) {\n return shape * scale;\n },\n\n mode: function mode(shape, scale) {\n if(shape > 1) return (shape - 1) * scale;\n return undefined;\n },\n\n sample: function sample(shape, scale) {\n return jStat.randg(shape) * scale;\n },\n\n variance: function variance(shape, scale) {\n return shape * scale * scale;\n }\n});\n\n// extend inverse gamma function with static methods\njStat.extend(jStat.invgamma, {\n pdf: function pdf(x, shape, scale) {\n if (x <= 0)\n return 0;\n return Math.exp(-(shape + 1) * Math.log(x) - scale / x -\n jStat.gammaln(shape) + shape * Math.log(scale));\n },\n\n cdf: function cdf(x, shape, scale) {\n if (x <= 0)\n return 0;\n return 1 - jStat.lowRegGamma(shape, scale / x);\n },\n\n inv: function(p, shape, scale) {\n return scale / jStat.gammapinv(1 - p, shape);\n },\n\n mean : function(shape, scale) {\n return (shape > 1) ? scale / (shape - 1) : undefined;\n },\n\n mode: function mode(shape, scale) {\n return scale / (shape + 1);\n },\n\n sample: function sample(shape, scale) {\n return scale / jStat.randg(shape);\n },\n\n variance: function variance(shape, scale) {\n if (shape <= 2)\n return undefined;\n return scale * scale / ((shape - 1) * (shape - 1) * (shape - 2));\n }\n});\n\n\n// extend kumaraswamy function with static methods\njStat.extend(jStat.kumaraswamy, {\n pdf: function pdf(x, alpha, beta) {\n if (x === 0 && alpha === 1)\n return beta;\n else if (x === 1 && beta === 1)\n return alpha;\n return Math.exp(Math.log(alpha) + Math.log(beta) + (alpha - 1) *\n Math.log(x) + (beta - 1) *\n Math.log(1 - Math.pow(x, alpha)));\n },\n\n cdf: function cdf(x, alpha, beta) {\n if (x < 0)\n return 0;\n else if (x > 1)\n return 1;\n return (1 - Math.pow(1 - Math.pow(x, alpha), beta));\n },\n\n inv: function inv(p, alpha, beta) {\n return Math.pow(1 - Math.pow(1 - p, 1 / beta), 1 / alpha);\n },\n\n mean : function(alpha, beta) {\n return (beta * jStat.gammafn(1 + 1 / alpha) *\n jStat.gammafn(beta)) / (jStat.gammafn(1 + 1 / alpha + beta));\n },\n\n median: function median(alpha, beta) {\n return Math.pow(1 - Math.pow(2, -1 / beta), 1 / alpha);\n },\n\n mode: function mode(alpha, beta) {\n if (!(alpha >= 1 && beta >= 1 && (alpha !== 1 && beta !== 1)))\n return undefined;\n return Math.pow((alpha - 1) / (alpha * beta - 1), 1 / alpha);\n },\n\n variance: function variance(/*alpha, beta*/) {\n throw new Error('variance not yet implemented');\n // TODO: complete this\n }\n});\n\n\n\n// extend lognormal function with static methods\njStat.extend(jStat.lognormal, {\n pdf: function pdf(x, mu, sigma) {\n if (x <= 0)\n return 0;\n return Math.exp(-Math.log(x) - 0.5 * Math.log(2 * Math.PI) -\n Math.log(sigma) - Math.pow(Math.log(x) - mu, 2) /\n (2 * sigma * sigma));\n },\n\n cdf: function cdf(x, mu, sigma) {\n if (x < 0)\n return 0;\n return 0.5 +\n (0.5 * jStat.erf((Math.log(x) - mu) / Math.sqrt(2 * sigma * sigma)));\n },\n\n inv: function(p, mu, sigma) {\n return Math.exp(-1.41421356237309505 * sigma * jStat.erfcinv(2 * p) + mu);\n },\n\n mean: function mean(mu, sigma) {\n return Math.exp(mu + sigma * sigma / 2);\n },\n\n median: function median(mu/*, sigma*/) {\n return Math.exp(mu);\n },\n\n mode: function mode(mu, sigma) {\n return Math.exp(mu - sigma * sigma);\n },\n\n sample: function sample(mu, sigma) {\n return Math.exp(jStat.randn() * sigma + mu);\n },\n\n variance: function variance(mu, sigma) {\n return (Math.exp(sigma * sigma) - 1) * Math.exp(2 * mu + sigma * sigma);\n }\n});\n\n\n\n// extend noncentralt function with static methods\njStat.extend(jStat.noncentralt, {\n pdf: function pdf(x, dof, ncp) {\n var tol = 1e-14;\n if (Math.abs(ncp) < tol) // ncp approx 0; use student-t\n return jStat.studentt.pdf(x, dof)\n\n if (Math.abs(x) < tol) { // different formula for x == 0\n return Math.exp(jStat.gammaln((dof + 1) / 2) - ncp * ncp / 2 -\n 0.5 * Math.log(Math.PI * dof) - jStat.gammaln(dof / 2));\n }\n\n // formula for x != 0\n return dof / x *\n (jStat.noncentralt.cdf(x * Math.sqrt(1 + 2 / dof), dof+2, ncp) -\n jStat.noncentralt.cdf(x, dof, ncp));\n },\n\n cdf: function cdf(x, dof, ncp) {\n var tol = 1e-14;\n var min_iterations = 200;\n\n if (Math.abs(ncp) < tol) // ncp approx 0; use student-t\n return jStat.studentt.cdf(x, dof);\n\n // turn negative x into positive and flip result afterwards\n var flip = false;\n if (x < 0) {\n flip = true;\n ncp = -ncp;\n }\n\n var prob = jStat.normal.cdf(-ncp, 0, 1);\n var value = tol + 1;\n // use value at last two steps to determine convergence\n var lastvalue = value;\n var y = x * x / (x * x + dof);\n var j = 0;\n var p = Math.exp(-ncp * ncp / 2);\n var q = Math.exp(-ncp * ncp / 2 - 0.5 * Math.log(2) -\n jStat.gammaln(3 / 2)) * ncp;\n while (j < min_iterations || lastvalue > tol || value > tol) {\n lastvalue = value;\n if (j > 0) {\n p *= (ncp * ncp) / (2 * j);\n q *= (ncp * ncp) / (2 * (j + 1 / 2));\n }\n value = p * jStat.beta.cdf(y, j + 0.5, dof / 2) +\n q * jStat.beta.cdf(y, j+1, dof/2);\n prob += 0.5 * value;\n j++;\n }\n\n return flip ? (1 - prob) : prob;\n }\n});\n\n\n// extend normal function with static methods\njStat.extend(jStat.normal, {\n pdf: function pdf(x, mean, std) {\n return Math.exp(-0.5 * Math.log(2 * Math.PI) -\n Math.log(std) - Math.pow(x - mean, 2) / (2 * std * std));\n },\n\n cdf: function cdf(x, mean, std) {\n return 0.5 * (1 + jStat.erf((x - mean) / Math.sqrt(2 * std * std)));\n },\n\n inv: function(p, mean, std) {\n return -1.41421356237309505 * std * jStat.erfcinv(2 * p) + mean;\n },\n\n mean : function(mean/*, std*/) {\n return mean;\n },\n\n median: function median(mean/*, std*/) {\n return mean;\n },\n\n mode: function (mean/*, std*/) {\n return mean;\n },\n\n sample: function sample(mean, std) {\n return jStat.randn() * std + mean;\n },\n\n variance : function(mean, std) {\n return std * std;\n }\n});\n\n\n\n// extend pareto function with static methods\njStat.extend(jStat.pareto, {\n pdf: function pdf(x, scale, shape) {\n if (x < scale)\n return 0;\n return (shape * Math.pow(scale, shape)) / Math.pow(x, shape + 1);\n },\n\n cdf: function cdf(x, scale, shape) {\n if (x < scale)\n return 0;\n return 1 - Math.pow(scale / x, shape);\n },\n\n inv: function inv(p, scale, shape) {\n return scale / Math.pow(1 - p, 1 / shape);\n },\n\n mean: function mean(scale, shape) {\n if (shape <= 1)\n return undefined;\n return (shape * Math.pow(scale, shape)) / (shape - 1);\n },\n\n median: function median(scale, shape) {\n return scale * (shape * Math.SQRT2);\n },\n\n mode: function mode(scale/*, shape*/) {\n return scale;\n },\n\n variance : function(scale, shape) {\n if (shape <= 2)\n return undefined;\n return (scale*scale * shape) / (Math.pow(shape - 1, 2) * (shape - 2));\n }\n});\n\n\n\n// extend studentt function with static methods\njStat.extend(jStat.studentt, {\n pdf: function pdf(x, dof) {\n dof = dof > 1e100 ? 1e100 : dof;\n return (1/(Math.sqrt(dof) * jStat.betafn(0.5, dof/2))) *\n Math.pow(1 + ((x * x) / dof), -((dof + 1) / 2));\n },\n\n cdf: function cdf(x, dof) {\n var dof2 = dof / 2;\n return jStat.ibeta((x + Math.sqrt(x * x + dof)) /\n (2 * Math.sqrt(x * x + dof)), dof2, dof2);\n },\n\n inv: function(p, dof) {\n var x = jStat.ibetainv(2 * Math.min(p, 1 - p), 0.5 * dof, 0.5);\n x = Math.sqrt(dof * (1 - x) / x);\n return (p > 0.5) ? x : -x;\n },\n\n mean: function mean(dof) {\n return (dof > 1) ? 0 : undefined;\n },\n\n median: function median(/*dof*/) {\n return 0;\n },\n\n mode: function mode(/*dof*/) {\n return 0;\n },\n\n sample: function sample(dof) {\n return jStat.randn() * Math.sqrt(dof / (2 * jStat.randg(dof / 2)));\n },\n\n variance: function variance(dof) {\n return (dof > 2) ? dof / (dof - 2) : (dof > 1) ? Infinity : undefined;\n }\n});\n\n\n\n// extend weibull function with static methods\njStat.extend(jStat.weibull, {\n pdf: function pdf(x, scale, shape) {\n if (x < 0 || scale < 0 || shape < 0)\n return 0;\n return (shape / scale) * Math.pow((x / scale), (shape - 1)) *\n Math.exp(-(Math.pow((x / scale), shape)));\n },\n\n cdf: function cdf(x, scale, shape) {\n return x < 0 ? 0 : 1 - Math.exp(-Math.pow((x / scale), shape));\n },\n\n inv: function(p, scale, shape) {\n return scale * Math.pow(-Math.log(1 - p), 1 / shape);\n },\n\n mean : function(scale, shape) {\n return scale * jStat.gammafn(1 + 1 / shape);\n },\n\n median: function median(scale, shape) {\n return scale * Math.pow(Math.log(2), 1 / shape);\n },\n\n mode: function mode(scale, shape) {\n if (shape <= 1)\n return 0;\n return scale * Math.pow((shape - 1) / shape, 1 / shape);\n },\n\n sample: function sample(scale, shape) {\n return scale * Math.pow(-Math.log(jStat._random_fn()), 1 / shape);\n },\n\n variance: function variance(scale, shape) {\n return scale * scale * jStat.gammafn(1 + 2 / shape) -\n Math.pow(jStat.weibull.mean(scale, shape), 2);\n }\n});\n\n\n\n// extend uniform function with static methods\njStat.extend(jStat.uniform, {\n pdf: function pdf(x, a, b) {\n return (x < a || x > b) ? 0 : 1 / (b - a);\n },\n\n cdf: function cdf(x, a, b) {\n if (x < a)\n return 0;\n else if (x < b)\n return (x - a) / (b - a);\n return 1;\n },\n\n inv: function(p, a, b) {\n return a + (p * (b - a));\n },\n\n mean: function mean(a, b) {\n return 0.5 * (a + b);\n },\n\n median: function median(a, b) {\n return jStat.mean(a, b);\n },\n\n mode: function mode(/*a, b*/) {\n throw new Error('mode is not yet implemented');\n },\n\n sample: function sample(a, b) {\n return (a / 2 + b / 2) + (b / 2 - a / 2) * (2 * jStat._random_fn() - 1);\n },\n\n variance: function variance(a, b) {\n return Math.pow(b - a, 2) / 12;\n }\n});\n\n\n// Got this from http://www.math.ucla.edu/~tom/distributions/binomial.html\nfunction betinc(x, a, b, eps) {\n var a0 = 0;\n var b0 = 1;\n var a1 = 1;\n var b1 = 1;\n var m9 = 0;\n var a2 = 0;\n var c9;\n\n while (Math.abs((a1 - a2) / a1) > eps) {\n a2 = a1;\n c9 = -(a + m9) * (a + b + m9) * x / (a + 2 * m9) / (a + 2 * m9 + 1);\n a0 = a1 + c9 * a0;\n b0 = b1 + c9 * b0;\n m9 = m9 + 1;\n c9 = m9 * (b - m9) * x / (a + 2 * m9 - 1) / (a + 2 * m9);\n a1 = a0 + c9 * a1;\n b1 = b0 + c9 * b1;\n a0 = a0 / b1;\n b0 = b0 / b1;\n a1 = a1 / b1;\n b1 = 1;\n }\n\n return a1 / a;\n}\n\n\n// extend uniform function with static methods\njStat.extend(jStat.binomial, {\n pdf: function pdf(k, n, p) {\n return (p === 0 || p === 1) ?\n ((n * p) === k ? 1 : 0) :\n jStat.combination(n, k) * Math.pow(p, k) * Math.pow(1 - p, n - k);\n },\n\n cdf: function cdf(x, n, p) {\n var betacdf;\n var eps = 1e-10;\n\n if (x < 0)\n return 0;\n if (x >= n)\n return 1;\n if (p < 0 || p > 1 || n <= 0)\n return NaN;\n\n x = Math.floor(x);\n var z = p;\n var a = x + 1;\n var b = n - x;\n var s = a + b;\n var bt = Math.exp(jStat.gammaln(s) - jStat.gammaln(b) -\n jStat.gammaln(a) + a * Math.log(z) + b * Math.log(1 - z));\n\n if (z < (a + 1) / (s + 2))\n betacdf = bt * betinc(z, a, b, eps);\n else\n betacdf = 1 - bt * betinc(1 - z, b, a, eps);\n\n return Math.round((1 - betacdf) * (1 / eps)) / (1 / eps);\n }\n});\n\n\n\n// extend uniform function with static methods\njStat.extend(jStat.negbin, {\n pdf: function pdf(k, r, p) {\n if (k !== k >>> 0)\n return false;\n if (k < 0)\n return 0;\n return jStat.combination(k + r - 1, r - 1) *\n Math.pow(1 - p, k) * Math.pow(p, r);\n },\n\n cdf: function cdf(x, r, p) {\n var sum = 0,\n k = 0;\n if (x < 0) return 0;\n for (; k <= x; k++) {\n sum += jStat.negbin.pdf(k, r, p);\n }\n return sum;\n }\n});\n\n\n\n// extend uniform function with static methods\njStat.extend(jStat.hypgeom, {\n pdf: function pdf(k, N, m, n) {\n // Hypergeometric PDF.\n\n // A simplification of the CDF algorithm below.\n\n // k = number of successes drawn\n // N = population size\n // m = number of successes in population\n // n = number of items drawn from population\n\n if(k !== k | 0) {\n return false;\n } else if(k < 0 || k < m - (N - n)) {\n // It's impossible to have this few successes drawn.\n return 0;\n } else if(k > n || k > m) {\n // It's impossible to have this many successes drawn.\n return 0;\n } else if (m * 2 > N) {\n // More than half the population is successes.\n\n if(n * 2 > N) {\n // More than half the population is sampled.\n\n return jStat.hypgeom.pdf(N - m - n + k, N, N - m, N - n)\n } else {\n // Half or less of the population is sampled.\n\n return jStat.hypgeom.pdf(n - k, N, N - m, n);\n }\n\n } else if(n * 2 > N) {\n // Half or less is successes.\n\n return jStat.hypgeom.pdf(m - k, N, m, N - n);\n\n } else if(m < n) {\n // We want to have the number of things sampled to be less than the\n // successes available. So swap the definitions of successful and sampled.\n return jStat.hypgeom.pdf(k, N, n, m);\n } else {\n // If we get here, half or less of the population was sampled, half or\n // less of it was successes, and we had fewer sampled things than\n // successes. Now we can do this complicated iterative algorithm in an\n // efficient way.\n\n // The basic premise of the algorithm is that we partially normalize our\n // intermediate product to keep it in a numerically good region, and then\n // finish the normalization at the end.\n\n // This variable holds the scaled probability of the current number of\n // successes.\n var scaledPDF = 1;\n\n // This keeps track of how much we have normalized.\n var samplesDone = 0;\n\n for(var i = 0; i < k; i++) {\n // For every possible number of successes up to that observed...\n\n while(scaledPDF > 1 && samplesDone < n) {\n // Intermediate result is growing too big. Apply some of the\n // normalization to shrink everything.\n\n scaledPDF *= 1 - (m / (N - samplesDone));\n\n // Say we've normalized by this sample already.\n samplesDone++;\n }\n\n // Work out the partially-normalized hypergeometric PDF for the next\n // number of successes\n scaledPDF *= (n - i) * (m - i) / ((i + 1) * (N - m - n + i + 1));\n }\n\n for(; samplesDone < n; samplesDone++) {\n // Apply all the rest of the normalization\n scaledPDF *= 1 - (m / (N - samplesDone));\n }\n\n // Bound answer sanely before returning.\n return Math.min(1, Math.max(0, scaledPDF));\n }\n },\n\n cdf: function cdf(x, N, m, n) {\n // Hypergeometric CDF.\n\n // This algorithm is due to Prof. Thomas S. Ferguson, ,\n // and comes from his hypergeometric test calculator at\n // .\n\n // x = number of successes drawn\n // N = population size\n // m = number of successes in population\n // n = number of items drawn from population\n\n if(x < 0 || x < m - (N - n)) {\n // It's impossible to have this few successes drawn or fewer.\n return 0;\n } else if(x >= n || x >= m) {\n // We will always have this many successes or fewer.\n return 1;\n } else if (m * 2 > N) {\n // More than half the population is successes.\n\n if(n * 2 > N) {\n // More than half the population is sampled.\n\n return jStat.hypgeom.cdf(N - m - n + x, N, N - m, N - n)\n } else {\n // Half or less of the population is sampled.\n\n return 1 - jStat.hypgeom.cdf(n - x - 1, N, N - m, n);\n }\n\n } else if(n * 2 > N) {\n // Half or less is successes.\n\n return 1 - jStat.hypgeom.cdf(m - x - 1, N, m, N - n);\n\n } else if(m < n) {\n // We want to have the number of things sampled to be less than the\n // successes available. So swap the definitions of successful and sampled.\n return jStat.hypgeom.cdf(x, N, n, m);\n } else {\n // If we get here, half or less of the population was sampled, half or\n // less of it was successes, and we had fewer sampled things than\n // successes. Now we can do this complicated iterative algorithm in an\n // efficient way.\n\n // The basic premise of the algorithm is that we partially normalize our\n // intermediate sum to keep it in a numerically good region, and then\n // finish the normalization at the end.\n\n // Holds the intermediate, scaled total CDF.\n var scaledCDF = 1;\n\n // This variable holds the scaled probability of the current number of\n // successes.\n var scaledPDF = 1;\n\n // This keeps track of how much we have normalized.\n var samplesDone = 0;\n\n for(var i = 0; i < x; i++) {\n // For every possible number of successes up to that observed...\n\n while(scaledCDF > 1 && samplesDone < n) {\n // Intermediate result is growing too big. Apply some of the\n // normalization to shrink everything.\n\n var factor = 1 - (m / (N - samplesDone));\n\n scaledPDF *= factor;\n scaledCDF *= factor;\n\n // Say we've normalized by this sample already.\n samplesDone++;\n }\n\n // Work out the partially-normalized hypergeometric PDF for the next\n // number of successes\n scaledPDF *= (n - i) * (m - i) / ((i + 1) * (N - m - n + i + 1));\n\n // Add to the CDF answer.\n scaledCDF += scaledPDF;\n }\n\n for(; samplesDone < n; samplesDone++) {\n // Apply all the rest of the normalization\n scaledCDF *= 1 - (m / (N - samplesDone));\n }\n\n // Bound answer sanely before returning.\n return Math.min(1, Math.max(0, scaledCDF));\n }\n }\n});\n\n\n\n// extend uniform function with static methods\njStat.extend(jStat.poisson, {\n pdf: function pdf(k, l) {\n if (l < 0 || (k % 1) !== 0 || k < 0) {\n return 0;\n }\n\n return Math.pow(l, k) * Math.exp(-l) / jStat.factorial(k);\n },\n\n cdf: function cdf(x, l) {\n var sumarr = [],\n k = 0;\n if (x < 0) return 0;\n for (; k <= x; k++) {\n sumarr.push(jStat.poisson.pdf(k, l));\n }\n return jStat.sum(sumarr);\n },\n\n mean : function(l) {\n return l;\n },\n\n variance : function(l) {\n return l;\n },\n\n sampleSmall: function sampleSmall(l) {\n var p = 1, k = 0, L = Math.exp(-l);\n do {\n k++;\n p *= jStat._random_fn();\n } while (p > L);\n return k - 1;\n },\n\n sampleLarge: function sampleLarge(l) {\n var lam = l;\n var k;\n var U, V, slam, loglam, a, b, invalpha, vr, us;\n\n slam = Math.sqrt(lam);\n loglam = Math.log(lam);\n b = 0.931 + 2.53 * slam;\n a = -0.059 + 0.02483 * b;\n invalpha = 1.1239 + 1.1328 / (b - 3.4);\n vr = 0.9277 - 3.6224 / (b - 2);\n\n while (1) {\n U = Math.random() - 0.5;\n V = Math.random();\n us = 0.5 - Math.abs(U);\n k = Math.floor((2 * a / us + b) * U + lam + 0.43);\n if ((us >= 0.07) && (V <= vr)) {\n return k;\n }\n if ((k < 0) || ((us < 0.013) && (V > us))) {\n continue;\n }\n /* log(V) == log(0.0) ok here */\n /* if U==0.0 so that us==0.0, log is ok since always returns */\n if ((Math.log(V) + Math.log(invalpha) - Math.log(a / (us * us) + b)) <= (-lam + k * loglam - jStat.loggam(k + 1))) {\n return k;\n }\n }\n },\n\n sample: function sample(l) {\n if (l < 10)\n return this.sampleSmall(l);\n else\n return this.sampleLarge(l);\n }\n});\n\n// extend triangular function with static methods\njStat.extend(jStat.triangular, {\n pdf: function pdf(x, a, b, c) {\n if (b <= a || c < a || c > b) {\n return NaN;\n } else {\n if (x < a || x > b) {\n return 0;\n } else if (x < c) {\n return (2 * (x - a)) / ((b - a) * (c - a));\n } else if (x === c) {\n return (2 / (b - a));\n } else { // x > c\n return (2 * (b - x)) / ((b - a) * (b - c));\n }\n }\n },\n\n cdf: function cdf(x, a, b, c) {\n if (b <= a || c < a || c > b)\n return NaN;\n if (x <= a)\n return 0;\n else if (x >= b)\n return 1;\n if (x <= c)\n return Math.pow(x - a, 2) / ((b - a) * (c - a));\n else // x > c\n return 1 - Math.pow(b - x, 2) / ((b - a) * (b - c));\n },\n\n inv: function inv(p, a, b, c) {\n if (b <= a || c < a || c > b) {\n return NaN;\n } else {\n if (p <= ((c - a) / (b - a))) {\n return a + (b - a) * Math.sqrt(p * ((c - a) / (b - a)));\n } else { // p > ((c - a) / (b - a))\n return a + (b - a) * (1 - Math.sqrt((1 - p) * (1 - ((c - a) / (b - a)))));\n }\n }\n },\n\n mean: function mean(a, b, c) {\n return (a + b + c) / 3;\n },\n\n median: function median(a, b, c) {\n if (c <= (a + b) / 2) {\n return b - Math.sqrt((b - a) * (b - c)) / Math.sqrt(2);\n } else if (c > (a + b) / 2) {\n return a + Math.sqrt((b - a) * (c - a)) / Math.sqrt(2);\n }\n },\n\n mode: function mode(a, b, c) {\n return c;\n },\n\n sample: function sample(a, b, c) {\n var u = jStat._random_fn();\n if (u < ((c - a) / (b - a)))\n return a + Math.sqrt(u * (b - a) * (c - a))\n return b - Math.sqrt((1 - u) * (b - a) * (b - c));\n },\n\n variance: function variance(a, b, c) {\n return (a * a + b * b + c * c - a * b - a * c - b * c) / 18;\n }\n});\n\n\n// extend arcsine function with static methods\njStat.extend(jStat.arcsine, {\n pdf: function pdf(x, a, b) {\n if (b <= a) return NaN;\n\n return (x <= a || x >= b) ? 0 :\n (2 / Math.PI) *\n Math.pow(Math.pow(b - a, 2) -\n Math.pow(2 * x - a - b, 2), -0.5);\n },\n\n cdf: function cdf(x, a, b) {\n if (x < a)\n return 0;\n else if (x < b)\n return (2 / Math.PI) * Math.asin(Math.sqrt((x - a)/(b - a)));\n return 1;\n },\n\n inv: function(p, a, b) {\n return a + (0.5 - 0.5 * Math.cos(Math.PI * p)) * (b - a);\n },\n\n mean: function mean(a, b) {\n if (b <= a) return NaN;\n return (a + b) / 2;\n },\n\n median: function median(a, b) {\n if (b <= a) return NaN;\n return (a + b) / 2;\n },\n\n mode: function mode(/*a, b*/) {\n throw new Error('mode is not yet implemented');\n },\n\n sample: function sample(a, b) {\n return ((a + b) / 2) + ((b - a) / 2) *\n Math.sin(2 * Math.PI * jStat.uniform.sample(0, 1));\n },\n\n variance: function variance(a, b) {\n if (b <= a) return NaN;\n return Math.pow(b - a, 2) / 8;\n }\n});\n\n\nfunction laplaceSign(x) { return x / Math.abs(x); }\n\njStat.extend(jStat.laplace, {\n pdf: function pdf(x, mu, b) {\n return (b <= 0) ? 0 : (Math.exp(-Math.abs(x - mu) / b)) / (2 * b);\n },\n\n cdf: function cdf(x, mu, b) {\n if (b <= 0) { return 0; }\n\n if(x < mu) {\n return 0.5 * Math.exp((x - mu) / b);\n } else {\n return 1 - 0.5 * Math.exp(- (x - mu) / b);\n }\n },\n\n mean: function(mu/*, b*/) {\n return mu;\n },\n\n median: function(mu/*, b*/) {\n return mu;\n },\n\n mode: function(mu/*, b*/) {\n return mu;\n },\n\n variance: function(mu, b) {\n return 2 * b * b;\n },\n\n sample: function sample(mu, b) {\n var u = jStat._random_fn() - 0.5;\n\n return mu - (b * laplaceSign(u) * Math.log(1 - (2 * Math.abs(u))));\n }\n});\n\nfunction tukeyWprob(w, rr, cc) {\n var nleg = 12;\n var ihalf = 6;\n\n var C1 = -30;\n var C2 = -50;\n var C3 = 60;\n var bb = 8;\n var wlar = 3;\n var wincr1 = 2;\n var wincr2 = 3;\n var xleg = [\n 0.981560634246719250690549090149,\n 0.904117256370474856678465866119,\n 0.769902674194304687036893833213,\n 0.587317954286617447296702418941,\n 0.367831498998180193752691536644,\n 0.125233408511468915472441369464\n ];\n var aleg = [\n 0.047175336386511827194615961485,\n 0.106939325995318430960254718194,\n 0.160078328543346226334652529543,\n 0.203167426723065921749064455810,\n 0.233492536538354808760849898925,\n 0.249147045813402785000562436043\n ];\n\n var qsqz = w * 0.5;\n\n // if w >= 16 then the integral lower bound (occurs for c=20)\n // is 0.99999999999995 so return a value of 1.\n\n if (qsqz >= bb)\n return 1.0;\n\n // find (f(w/2) - 1) ^ cc\n // (first term in integral of hartley's form).\n\n var pr_w = 2 * jStat.normal.cdf(qsqz, 0, 1, 1, 0) - 1; // erf(qsqz / M_SQRT2)\n // if pr_w ^ cc < 2e-22 then set pr_w = 0\n if (pr_w >= Math.exp(C2 / cc))\n pr_w = Math.pow(pr_w, cc);\n else\n pr_w = 0.0;\n\n // if w is large then the second component of the\n // integral is small, so fewer intervals are needed.\n\n var wincr;\n if (w > wlar)\n wincr = wincr1;\n else\n wincr = wincr2;\n\n // find the integral of second term of hartley's form\n // for the integral of the range for equal-length\n // intervals using legendre quadrature. limits of\n // integration are from (w/2, 8). two or three\n // equal-length intervals are used.\n\n // blb and bub are lower and upper limits of integration.\n\n var blb = qsqz;\n var binc = (bb - qsqz) / wincr;\n var bub = blb + binc;\n var einsum = 0.0;\n\n // integrate over each interval\n\n var cc1 = cc - 1.0;\n for (var wi = 1; wi <= wincr; wi++) {\n var elsum = 0.0;\n var a = 0.5 * (bub + blb);\n\n // legendre quadrature with order = nleg\n\n var b = 0.5 * (bub - blb);\n\n for (var jj = 1; jj <= nleg; jj++) {\n var j, xx;\n if (ihalf < jj) {\n j = (nleg - jj) + 1;\n xx = xleg[j-1];\n } else {\n j = jj;\n xx = -xleg[j-1];\n }\n var c = b * xx;\n var ac = a + c;\n\n // if exp(-qexpo/2) < 9e-14,\n // then doesn't contribute to integral\n\n var qexpo = ac * ac;\n if (qexpo > C3)\n break;\n\n var pplus = 2 * jStat.normal.cdf(ac, 0, 1, 1, 0);\n var pminus= 2 * jStat.normal.cdf(ac, w, 1, 1, 0);\n\n // if rinsum ^ (cc-1) < 9e-14,\n // then doesn't contribute to integral\n\n var rinsum = (pplus * 0.5) - (pminus * 0.5);\n if (rinsum >= Math.exp(C1 / cc1)) {\n rinsum = (aleg[j-1] * Math.exp(-(0.5 * qexpo))) * Math.pow(rinsum, cc1);\n elsum += rinsum;\n }\n }\n elsum *= (((2.0 * b) * cc) / Math.sqrt(2 * Math.PI));\n einsum += elsum;\n blb = bub;\n bub += binc;\n }\n\n // if pr_w ^ rr < 9e-14, then return 0\n pr_w += einsum;\n if (pr_w <= Math.exp(C1 / rr))\n return 0;\n\n pr_w = Math.pow(pr_w, rr);\n if (pr_w >= 1) // 1 was iMax was eps\n return 1;\n return pr_w;\n}\n\nfunction tukeyQinv(p, c, v) {\n var p0 = 0.322232421088;\n var q0 = 0.993484626060e-01;\n var p1 = -1.0;\n var q1 = 0.588581570495;\n var p2 = -0.342242088547;\n var q2 = 0.531103462366;\n var p3 = -0.204231210125;\n var q3 = 0.103537752850;\n var p4 = -0.453642210148e-04;\n var q4 = 0.38560700634e-02;\n var c1 = 0.8832;\n var c2 = 0.2368;\n var c3 = 1.214;\n var c4 = 1.208;\n var c5 = 1.4142;\n var vmax = 120.0;\n\n var ps = 0.5 - 0.5 * p;\n var yi = Math.sqrt(Math.log(1.0 / (ps * ps)));\n var t = yi + (((( yi * p4 + p3) * yi + p2) * yi + p1) * yi + p0)\n / (((( yi * q4 + q3) * yi + q2) * yi + q1) * yi + q0);\n if (v < vmax) t += (t * t * t + t) / v / 4.0;\n var q = c1 - c2 * t;\n if (v < vmax) q += -c3 / v + c4 * t / v;\n return t * (q * Math.log(c - 1.0) + c5);\n}\n\njStat.extend(jStat.tukey, {\n cdf: function cdf(q, nmeans, df) {\n // Identical implementation as the R ptukey() function as of commit 68947\n var rr = 1;\n var cc = nmeans;\n\n var nlegq = 16;\n var ihalfq = 8;\n\n var eps1 = -30.0;\n var eps2 = 1.0e-14;\n var dhaf = 100.0;\n var dquar = 800.0;\n var deigh = 5000.0;\n var dlarg = 25000.0;\n var ulen1 = 1.0;\n var ulen2 = 0.5;\n var ulen3 = 0.25;\n var ulen4 = 0.125;\n var xlegq = [\n 0.989400934991649932596154173450,\n 0.944575023073232576077988415535,\n 0.865631202387831743880467897712,\n 0.755404408355003033895101194847,\n 0.617876244402643748446671764049,\n 0.458016777657227386342419442984,\n 0.281603550779258913230460501460,\n 0.950125098376374401853193354250e-1\n ];\n var alegq = [\n 0.271524594117540948517805724560e-1,\n 0.622535239386478928628438369944e-1,\n 0.951585116824927848099251076022e-1,\n 0.124628971255533872052476282192,\n 0.149595988816576732081501730547,\n 0.169156519395002538189312079030,\n 0.182603415044923588866763667969,\n 0.189450610455068496285396723208\n ];\n\n if (q <= 0)\n return 0;\n\n // df must be > 1\n // there must be at least two values\n\n if (df < 2 || rr < 1 || cc < 2) return NaN;\n\n if (!Number.isFinite(q))\n return 1;\n\n if (df > dlarg)\n return tukeyWprob(q, rr, cc);\n\n // calculate leading constant\n\n var f2 = df * 0.5;\n var f2lf = ((f2 * Math.log(df)) - (df * Math.log(2))) - jStat.gammaln(f2);\n var f21 = f2 - 1.0;\n\n // integral is divided into unit, half-unit, quarter-unit, or\n // eighth-unit length intervals depending on the value of the\n // degrees of freedom.\n\n var ff4 = df * 0.25;\n var ulen;\n if (df <= dhaf) ulen = ulen1;\n else if (df <= dquar) ulen = ulen2;\n else if (df <= deigh) ulen = ulen3;\n else ulen = ulen4;\n\n f2lf += Math.log(ulen);\n\n // integrate over each subinterval\n\n var ans = 0.0;\n\n for (var i = 1; i <= 50; i++) {\n var otsum = 0.0;\n\n // legendre quadrature with order = nlegq\n // nodes (stored in xlegq) are symmetric around zero.\n\n var twa1 = (2 * i - 1) * ulen;\n\n for (var jj = 1; jj <= nlegq; jj++) {\n var j, t1;\n if (ihalfq < jj) {\n j = jj - ihalfq - 1;\n t1 = (f2lf + (f21 * Math.log(twa1 + (xlegq[j] * ulen))))\n - (((xlegq[j] * ulen) + twa1) * ff4);\n } else {\n j = jj - 1;\n t1 = (f2lf + (f21 * Math.log(twa1 - (xlegq[j] * ulen))))\n + (((xlegq[j] * ulen) - twa1) * ff4);\n }\n\n // if exp(t1) < 9e-14, then doesn't contribute to integral\n var qsqz;\n if (t1 >= eps1) {\n if (ihalfq < jj) {\n qsqz = q * Math.sqrt(((xlegq[j] * ulen) + twa1) * 0.5);\n } else {\n qsqz = q * Math.sqrt(((-(xlegq[j] * ulen)) + twa1) * 0.5);\n }\n\n // call wprob to find integral of range portion\n\n var wprb = tukeyWprob(qsqz, rr, cc);\n var rotsum = (wprb * alegq[j]) * Math.exp(t1);\n otsum += rotsum;\n }\n // end legendre integral for interval i\n // L200:\n }\n\n // if integral for interval i < 1e-14, then stop.\n // However, in order to avoid small area under left tail,\n // at least 1 / ulen intervals are calculated.\n if (i * ulen >= 1.0 && otsum <= eps2)\n break;\n\n // end of interval i\n // L330:\n\n ans += otsum;\n }\n\n if (otsum > eps2) { // not converged\n throw new Error('tukey.cdf failed to converge');\n }\n if (ans > 1)\n ans = 1;\n return ans;\n },\n\n inv: function(p, nmeans, df) {\n // Identical implementation as the R qtukey() function as of commit 68947\n var rr = 1;\n var cc = nmeans;\n\n var eps = 0.0001;\n var maxiter = 50;\n\n // df must be > 1 ; there must be at least two values\n if (df < 2 || rr < 1 || cc < 2) return NaN;\n\n if (p < 0 || p > 1) return NaN;\n if (p === 0) return 0;\n if (p === 1) return Infinity;\n\n // Initial value\n\n var x0 = tukeyQinv(p, cc, df);\n\n // Find prob(value < x0)\n\n var valx0 = jStat.tukey.cdf(x0, nmeans, df) - p;\n\n // Find the second iterate and prob(value < x1).\n // If the first iterate has probability value\n // exceeding p then second iterate is 1 less than\n // first iterate; otherwise it is 1 greater.\n\n var x1;\n if (valx0 > 0.0)\n x1 = Math.max(0.0, x0 - 1.0);\n else\n x1 = x0 + 1.0;\n var valx1 = jStat.tukey.cdf(x1, nmeans, df) - p;\n\n // Find new iterate\n\n var ans;\n for(var iter = 1; iter < maxiter; iter++) {\n ans = x1 - ((valx1 * (x1 - x0)) / (valx1 - valx0));\n valx0 = valx1;\n\n // New iterate must be >= 0\n\n x0 = x1;\n if (ans < 0.0) {\n ans = 0.0;\n valx1 = -p;\n }\n // Find prob(value < new iterate)\n\n valx1 = jStat.tukey.cdf(ans, nmeans, df) - p;\n x1 = ans;\n\n // If the difference between two successive\n // iterates is less than eps, stop\n\n var xabs = Math.abs(x1 - x0);\n if (xabs < eps)\n return ans;\n }\n\n throw new Error('tukey.inv failed to converge');\n }\n});\n\n}(jStat, Math));\n/* Provides functions for the solution of linear system of equations, integration, extrapolation,\n * interpolation, eigenvalue problems, differential equations and PCA analysis. */\n\n(function(jStat, Math) {\n\nvar push = Array.prototype.push;\nvar isArray = jStat.utils.isArray;\n\nfunction isUsable(arg) {\n return isArray(arg) || arg instanceof jStat;\n}\n\njStat.extend({\n\n // add a vector/matrix to a vector/matrix or scalar\n add: function add(arr, arg) {\n // check if arg is a vector or scalar\n if (isUsable(arg)) {\n if (!isUsable(arg[0])) arg = [ arg ];\n return jStat.map(arr, function(value, row, col) {\n return value + arg[row][col];\n });\n }\n return jStat.map(arr, function(value) { return value + arg; });\n },\n\n // subtract a vector or scalar from the vector\n subtract: function subtract(arr, arg) {\n // check if arg is a vector or scalar\n if (isUsable(arg)) {\n if (!isUsable(arg[0])) arg = [ arg ];\n return jStat.map(arr, function(value, row, col) {\n return value - arg[row][col] || 0;\n });\n }\n return jStat.map(arr, function(value) { return value - arg; });\n },\n\n // matrix division\n divide: function divide(arr, arg) {\n if (isUsable(arg)) {\n if (!isUsable(arg[0])) arg = [ arg ];\n return jStat.multiply(arr, jStat.inv(arg));\n }\n return jStat.map(arr, function(value) { return value / arg; });\n },\n\n // matrix multiplication\n multiply: function multiply(arr, arg) {\n var row, col, nrescols, sum, nrow, ncol, res, rescols;\n // eg: arr = 2 arg = 3 -> 6 for res[0][0] statement closure\n if (arr.length === undefined && arg.length === undefined) {\n return arr * arg;\n }\n nrow = arr.length,\n ncol = arr[0].length,\n res = jStat.zeros(nrow, nrescols = (isUsable(arg)) ? arg[0].length : ncol),\n rescols = 0;\n if (isUsable(arg)) {\n for (; rescols < nrescols; rescols++) {\n for (row = 0; row < nrow; row++) {\n sum = 0;\n for (col = 0; col < ncol; col++)\n sum += arr[row][col] * arg[col][rescols];\n res[row][rescols] = sum;\n }\n }\n return (nrow === 1 && rescols === 1) ? res[0][0] : res;\n }\n return jStat.map(arr, function(value) { return value * arg; });\n },\n\n // outer([1,2,3],[4,5,6])\n // ===\n // [[1],[2],[3]] times [[4,5,6]]\n // ->\n // [[4,5,6],[8,10,12],[12,15,18]]\n outer:function outer(A, B) {\n return jStat.multiply(A.map(function(t){ return [t] }), [B]);\n },\n\n\n // Returns the dot product of two matricies\n dot: function dot(arr, arg) {\n if (!isUsable(arr[0])) arr = [ arr ];\n if (!isUsable(arg[0])) arg = [ arg ];\n // convert column to row vector\n var left = (arr[0].length === 1 && arr.length !== 1) ? jStat.transpose(arr) : arr,\n right = (arg[0].length === 1 && arg.length !== 1) ? jStat.transpose(arg) : arg,\n res = [],\n row = 0,\n nrow = left.length,\n ncol = left[0].length,\n sum, col;\n for (; row < nrow; row++) {\n res[row] = [];\n sum = 0;\n for (col = 0; col < ncol; col++)\n sum += left[row][col] * right[row][col];\n res[row] = sum;\n }\n return (res.length === 1) ? res[0] : res;\n },\n\n // raise every element by a scalar\n pow: function pow(arr, arg) {\n return jStat.map(arr, function(value) { return Math.pow(value, arg); });\n },\n\n // exponentiate every element\n exp: function exp(arr) {\n return jStat.map(arr, function(value) { return Math.exp(value); });\n },\n\n // generate the natural log of every element\n log: function exp(arr) {\n return jStat.map(arr, function(value) { return Math.log(value); });\n },\n\n // generate the absolute values of the vector\n abs: function abs(arr) {\n return jStat.map(arr, function(value) { return Math.abs(value); });\n },\n\n // computes the p-norm of the vector\n // In the case that a matrix is passed, uses the first row as the vector\n norm: function norm(arr, p) {\n var nnorm = 0,\n i = 0;\n // check the p-value of the norm, and set for most common case\n if (isNaN(p)) p = 2;\n // check if multi-dimensional array, and make vector correction\n if (isUsable(arr[0])) arr = arr[0];\n // vector norm\n for (; i < arr.length; i++) {\n nnorm += Math.pow(Math.abs(arr[i]), p);\n }\n return Math.pow(nnorm, 1 / p);\n },\n\n // computes the angle between two vectors in rads\n // In case a matrix is passed, this uses the first row as the vector\n angle: function angle(arr, arg) {\n return Math.acos(jStat.dot(arr, arg) / (jStat.norm(arr) * jStat.norm(arg)));\n },\n\n // augment one matrix by another\n // Note: this function returns a matrix, not a jStat object\n aug: function aug(a, b) {\n var newarr = [];\n var i;\n for (i = 0; i < a.length; i++) {\n newarr.push(a[i].slice());\n }\n for (i = 0; i < newarr.length; i++) {\n push.apply(newarr[i], b[i]);\n }\n return newarr;\n },\n\n // The inv() function calculates the inverse of a matrix\n // Create the inverse by augmenting the matrix by the identity matrix of the\n // appropriate size, and then use G-J elimination on the augmented matrix.\n inv: function inv(a) {\n var rows = a.length;\n var cols = a[0].length;\n var b = jStat.identity(rows, cols);\n var c = jStat.gauss_jordan(a, b);\n var result = [];\n var i = 0;\n var j;\n\n //We need to copy the inverse portion to a new matrix to rid G-J artifacts\n for (; i < rows; i++) {\n result[i] = [];\n for (j = cols; j < c[0].length; j++)\n result[i][j - cols] = c[i][j];\n }\n return result;\n },\n\n // calculate the determinant of a matrix\n det: function det(a) {\n if (a.length === 2) {\n return a[0][0] * a[1][1] - a[0][1] * a[1][0];\n }\n\n var determinant = 0;\n for (var i = 0; i < a.length; i++) {\n // build a sub matrix without column `i`\n var submatrix = [];\n for (var row = 1; row < a.length; row++) {\n submatrix[row - 1] = [];\n for (var col = 0; col < a.length; col++) {\n if (col < i) {\n submatrix[row - 1][col] = a[row][col];\n } else if (col > i) {\n submatrix[row - 1][col - 1] = a[row][col];\n }\n }\n }\n\n // alternate between + and - between determinants\n var sign = i % 2 ? -1 : 1;\n determinant += det(submatrix) * a[0][i] * sign;\n }\n\n return determinant\n },\n\n gauss_elimination: function gauss_elimination(a, b) {\n var i = 0,\n j = 0,\n n = a.length,\n m = a[0].length,\n factor = 1,\n sum = 0,\n x = [],\n maug, pivot, temp, k;\n a = jStat.aug(a, b);\n maug = a[0].length;\n for(i = 0; i < n; i++) {\n pivot = a[i][i];\n j = i;\n for (k = i + 1; k < m; k++) {\n if (pivot < Math.abs(a[k][i])) {\n pivot = a[k][i];\n j = k;\n }\n }\n if (j != i) {\n for(k = 0; k < maug; k++) {\n temp = a[i][k];\n a[i][k] = a[j][k];\n a[j][k] = temp;\n }\n }\n for (j = i + 1; j < n; j++) {\n factor = a[j][i] / a[i][i];\n for(k = i; k < maug; k++) {\n a[j][k] = a[j][k] - factor * a[i][k];\n }\n }\n }\n for (i = n - 1; i >= 0; i--) {\n sum = 0;\n for (j = i + 1; j<= n - 1; j++) {\n sum = sum + x[j] * a[i][j];\n }\n x[i] =(a[i][maug - 1] - sum) / a[i][i];\n }\n return x;\n },\n\n gauss_jordan: function gauss_jordan(a, b) {\n var m = jStat.aug(a, b);\n var h = m.length;\n var w = m[0].length;\n var c = 0;\n var x, y, y2;\n // find max pivot\n for (y = 0; y < h; y++) {\n var maxrow = y;\n for (y2 = y+1; y2 < h; y2++) {\n if (Math.abs(m[y2][y]) > Math.abs(m[maxrow][y]))\n maxrow = y2;\n }\n var tmp = m[y];\n m[y] = m[maxrow];\n m[maxrow] = tmp\n for (y2 = y+1; y2 < h; y2++) {\n c = m[y2][y] / m[y][y];\n for (x = y; x < w; x++) {\n m[y2][x] -= m[y][x] * c;\n }\n }\n }\n // backsubstitute\n for (y = h-1; y >= 0; y--) {\n c = m[y][y];\n for (y2 = 0; y2 < y; y2++) {\n for (x = w-1; x > y-1; x--) {\n m[y2][x] -= m[y][x] * m[y2][y] / c;\n }\n }\n m[y][y] /= c;\n for (x = h; x < w; x++) {\n m[y][x] /= c;\n }\n }\n return m;\n },\n\n // solve equation\n // Ax=b\n // A is upper triangular matrix\n // A=[[1,2,3],[0,4,5],[0,6,7]]\n // b=[1,2,3]\n // triaUpSolve(A,b) // -> [2.666,0.1666,1.666]\n // if you use matrix style\n // A=[[1,2,3],[0,4,5],[0,6,7]]\n // b=[[1],[2],[3]]\n // will return [[2.666],[0.1666],[1.666]]\n triaUpSolve: function triaUpSolve(A, b) {\n var size = A[0].length;\n var x = jStat.zeros(1, size)[0];\n var parts;\n var matrix_mode = false;\n\n if (b[0].length != undefined) {\n b = b.map(function(i){ return i[0] });\n matrix_mode = true;\n }\n\n jStat.arange(size - 1, -1, -1).forEach(function(i) {\n parts = jStat.arange(i + 1, size).map(function(j) {\n return x[j] * A[i][j];\n });\n x[i] = (b[i] - jStat.sum(parts)) / A[i][i];\n });\n\n if (matrix_mode)\n return x.map(function(i){ return [i] });\n return x;\n },\n\n triaLowSolve: function triaLowSolve(A, b) {\n // like to triaUpSolve but A is lower triangular matrix\n var size = A[0].length;\n var x = jStat.zeros(1, size)[0];\n var parts;\n\n var matrix_mode=false;\n if (b[0].length != undefined) {\n b = b.map(function(i){ return i[0] });\n matrix_mode = true;\n }\n\n jStat.arange(size).forEach(function(i) {\n parts = jStat.arange(i).map(function(j) {\n return A[i][j] * x[j];\n });\n x[i] = (b[i] - jStat.sum(parts)) / A[i][i];\n })\n\n if (matrix_mode)\n return x.map(function(i){ return [i] });\n return x;\n },\n\n\n // A -> [L,U]\n // A=LU\n // L is lower triangular matrix\n // U is upper triangular matrix\n lu: function lu(A) {\n var size = A.length;\n //var L=jStat.diagonal(jStat.ones(1,size)[0]);\n var L = jStat.identity(size);\n var R = jStat.zeros(A.length, A[0].length);\n var parts;\n jStat.arange(size).forEach(function(t) {\n R[0][t] = A[0][t];\n });\n jStat.arange(1, size).forEach(function(l) {\n jStat.arange(l).forEach(function(i) {\n parts = jStat.arange(i).map(function(jj) {\n return L[l][jj] * R[jj][i];\n });\n L[l][i] = (A[l][i] - jStat.sum(parts)) / R[i][i];\n });\n jStat.arange(l, size).forEach(function(j) {\n parts = jStat.arange(l).map(function(jj) {\n return L[l][jj] * R[jj][j];\n });\n R[l][j] = A[parts.length][j] - jStat.sum(parts);\n });\n });\n return [L, R];\n },\n\n // A -> T\n // A=TT'\n // T is lower triangular matrix\n cholesky: function cholesky(A) {\n var size = A.length;\n var T = jStat.zeros(A.length, A[0].length);\n var parts;\n jStat.arange(size).forEach(function(i) {\n parts = jStat.arange(i).map(function(t) {\n return Math.pow(T[i][t],2);\n });\n T[i][i] = Math.sqrt(A[i][i] - jStat.sum(parts));\n jStat.arange(i + 1, size).forEach(function(j) {\n parts = jStat.arange(i).map(function(t) {\n return T[i][t] * T[j][t];\n });\n T[j][i] = (A[i][j] - jStat.sum(parts)) / T[i][i];\n });\n });\n return T;\n },\n\n\n gauss_jacobi: function gauss_jacobi(a, b, x, r) {\n var i = 0;\n var j = 0;\n var n = a.length;\n var l = [];\n var u = [];\n var d = [];\n var xv, c, h, xk;\n for (; i < n; i++) {\n l[i] = [];\n u[i] = [];\n d[i] = [];\n for (j = 0; j < n; j++) {\n if (i > j) {\n l[i][j] = a[i][j];\n u[i][j] = d[i][j] = 0;\n } else if (i < j) {\n u[i][j] = a[i][j];\n l[i][j] = d[i][j] = 0;\n } else {\n d[i][j] = a[i][j];\n l[i][j] = u[i][j] = 0;\n }\n }\n }\n h = jStat.multiply(jStat.multiply(jStat.inv(d), jStat.add(l, u)), -1);\n c = jStat.multiply(jStat.inv(d), b);\n xv = x;\n xk = jStat.add(jStat.multiply(h, x), c);\n i = 2;\n while (Math.abs(jStat.norm(jStat.subtract(xk,xv))) > r) {\n xv = xk;\n xk = jStat.add(jStat.multiply(h, xv), c);\n i++;\n }\n return xk;\n },\n\n gauss_seidel: function gauss_seidel(a, b, x, r) {\n var i = 0;\n var n = a.length;\n var l = [];\n var u = [];\n var d = [];\n var j, xv, c, h, xk;\n for (; i < n; i++) {\n l[i] = [];\n u[i] = [];\n d[i] = [];\n for (j = 0; j < n; j++) {\n if (i > j) {\n l[i][j] = a[i][j];\n u[i][j] = d[i][j] = 0;\n } else if (i < j) {\n u[i][j] = a[i][j];\n l[i][j] = d[i][j] = 0;\n } else {\n d[i][j] = a[i][j];\n l[i][j] = u[i][j] = 0;\n }\n }\n }\n h = jStat.multiply(jStat.multiply(jStat.inv(jStat.add(d, l)), u), -1);\n c = jStat.multiply(jStat.inv(jStat.add(d, l)), b);\n xv = x;\n xk = jStat.add(jStat.multiply(h, x), c);\n i = 2;\n while (Math.abs(jStat.norm(jStat.subtract(xk, xv))) > r) {\n xv = xk;\n xk = jStat.add(jStat.multiply(h, xv), c);\n i = i + 1;\n }\n return xk;\n },\n\n SOR: function SOR(a, b, x, r, w) {\n var i = 0;\n var n = a.length;\n var l = [];\n var u = [];\n var d = [];\n var j, xv, c, h, xk;\n for (; i < n; i++) {\n l[i] = [];\n u[i] = [];\n d[i] = [];\n for (j = 0; j < n; j++) {\n if (i > j) {\n l[i][j] = a[i][j];\n u[i][j] = d[i][j] = 0;\n } else if (i < j) {\n u[i][j] = a[i][j];\n l[i][j] = d[i][j] = 0;\n } else {\n d[i][j] = a[i][j];\n l[i][j] = u[i][j] = 0;\n }\n }\n }\n h = jStat.multiply(jStat.inv(jStat.add(d, jStat.multiply(l, w))),\n jStat.subtract(jStat.multiply(d, 1 - w),\n jStat.multiply(u, w)));\n c = jStat.multiply(jStat.multiply(jStat.inv(jStat.add(d,\n jStat.multiply(l, w))), b), w);\n xv = x;\n xk = jStat.add(jStat.multiply(h, x), c);\n i = 2;\n while (Math.abs(jStat.norm(jStat.subtract(xk, xv))) > r) {\n xv = xk;\n xk = jStat.add(jStat.multiply(h, xv), c);\n i++;\n }\n return xk;\n },\n\n householder: function householder(a) {\n var m = a.length;\n var n = a[0].length;\n var i = 0;\n var w = [];\n var p = [];\n var alpha, r, k, j, factor;\n for (; i < m - 1; i++) {\n alpha = 0;\n for (j = i + 1; j < n; j++)\n alpha += (a[j][i] * a[j][i]);\n factor = (a[i + 1][i] > 0) ? -1 : 1;\n alpha = factor * Math.sqrt(alpha);\n r = Math.sqrt((((alpha * alpha) - a[i + 1][i] * alpha) / 2));\n w = jStat.zeros(m, 1);\n w[i + 1][0] = (a[i + 1][i] - alpha) / (2 * r);\n for (k = i + 2; k < m; k++) w[k][0] = a[k][i] / (2 * r);\n p = jStat.subtract(jStat.identity(m, n),\n jStat.multiply(jStat.multiply(w, jStat.transpose(w)), 2));\n a = jStat.multiply(p, jStat.multiply(a, p));\n }\n return a;\n },\n\n // A -> [Q,R]\n // Q is orthogonal matrix\n // R is upper triangular\n QR: (function() {\n // x -> Q\n // find a orthogonal matrix Q st.\n // Qx=y\n // y is [||x||,0,0,...]\n\n // quick ref\n var sum = jStat.sum;\n var range = jStat.arange;\n\n function qr2(x) {\n // quick impletation\n // https://www.stat.wisc.edu/~larget/math496/qr.html\n\n var n = x.length;\n var p = x[0].length;\n\n var r = jStat.zeros(p, p);\n x = jStat.copy(x);\n\n var i,j,k;\n for(j = 0; j < p; j++){\n r[j][j] = Math.sqrt(sum(range(n).map(function(i){\n return x[i][j] * x[i][j];\n })));\n for(i = 0; i < n; i++){\n x[i][j] = x[i][j] / r[j][j];\n }\n for(k = j+1; k < p; k++){\n r[j][k] = sum(range(n).map(function(i){\n return x[i][j] * x[i][k];\n }));\n for(i = 0; i < n; i++){\n x[i][k] = x[i][k] - x[i][j]*r[j][k];\n }\n }\n }\n return [x, r];\n }\n\n return qr2;\n }()),\n\n lstsq: (function() {\n // solve least squard problem for Ax=b as QR decomposition way if b is\n // [[b1],[b2],[b3]] form will return [[x1],[x2],[x3]] array form solution\n // else b is [b1,b2,b3] form will return [x1,x2,x3] array form solution\n function R_I(A) {\n A = jStat.copy(A);\n var size = A.length;\n var I = jStat.identity(size);\n jStat.arange(size - 1, -1, -1).forEach(function(i) {\n jStat.sliceAssign(\n I, { row: i }, jStat.divide(jStat.slice(I, { row: i }), A[i][i]));\n jStat.sliceAssign(\n A, { row: i }, jStat.divide(jStat.slice(A, { row: i }), A[i][i]));\n jStat.arange(i).forEach(function(j) {\n var c = jStat.multiply(A[j][i], -1);\n var Aj = jStat.slice(A, { row: j });\n var cAi = jStat.multiply(jStat.slice(A, { row: i }), c);\n jStat.sliceAssign(A, { row: j }, jStat.add(Aj, cAi));\n var Ij = jStat.slice(I, { row: j });\n var cIi = jStat.multiply(jStat.slice(I, { row: i }), c);\n jStat.sliceAssign(I, { row: j }, jStat.add(Ij, cIi));\n })\n });\n return I;\n }\n\n function qr_solve(A, b){\n var array_mode = false;\n if (b[0].length === undefined) {\n // [c1,c2,c3] mode\n b = b.map(function(x){ return [x] });\n array_mode = true;\n }\n var QR = jStat.QR(A);\n var Q = QR[0];\n var R = QR[1];\n var attrs = A[0].length;\n var Q1 = jStat.slice(Q,{col:{end:attrs}});\n var R1 = jStat.slice(R,{row:{end:attrs}});\n var RI = R_I(R1);\n var Q2 = jStat.transpose(Q1);\n\n if(Q2[0].length === undefined){\n Q2 = [Q2]; // The confusing jStat.multifly implementation threat nature process again.\n }\n\n var x = jStat.multiply(jStat.multiply(RI, Q2), b);\n\n if(x.length === undefined){\n x = [[x]]; // The confusing jStat.multifly implementation threat nature process again.\n }\n\n\n if (array_mode)\n return x.map(function(i){ return i[0] });\n return x;\n }\n\n return qr_solve;\n }()),\n\n jacobi: function jacobi(a) {\n var condition = 1;\n var n = a.length;\n var e = jStat.identity(n, n);\n var ev = [];\n var b, i, j, p, q, maxim, theta, s;\n // condition === 1 only if tolerance is not reached\n while (condition === 1) {\n maxim = a[0][1];\n p = 0;\n q = 1;\n for (i = 0; i < n; i++) {\n for (j = 0; j < n; j++) {\n if (i != j) {\n if (maxim < Math.abs(a[i][j])) {\n maxim = Math.abs(a[i][j]);\n p = i;\n q = j;\n }\n }\n }\n }\n if (a[p][p] === a[q][q])\n theta = (a[p][q] > 0) ? Math.PI / 4 : -Math.PI / 4;\n else\n theta = Math.atan(2 * a[p][q] / (a[p][p] - a[q][q])) / 2;\n s = jStat.identity(n, n);\n s[p][p] = Math.cos(theta);\n s[p][q] = -Math.sin(theta);\n s[q][p] = Math.sin(theta);\n s[q][q] = Math.cos(theta);\n // eigen vector matrix\n e = jStat.multiply(e, s);\n b = jStat.multiply(jStat.multiply(jStat.inv(s), a), s);\n a = b;\n condition = 0;\n for (i = 1; i < n; i++) {\n for (j = 1; j < n; j++) {\n if (i != j && Math.abs(a[i][j]) > 0.001) {\n condition = 1;\n }\n }\n }\n }\n for (i = 0; i < n; i++) ev.push(a[i][i]);\n //returns both the eigenvalue and eigenmatrix\n return [e, ev];\n },\n\n rungekutta: function rungekutta(f, h, p, t_j, u_j, order) {\n var k1, k2, u_j1, k3, k4;\n if (order === 2) {\n while (t_j <= p) {\n k1 = h * f(t_j, u_j);\n k2 = h * f(t_j + h, u_j + k1);\n u_j1 = u_j + (k1 + k2) / 2;\n u_j = u_j1;\n t_j = t_j + h;\n }\n }\n if (order === 4) {\n while (t_j <= p) {\n k1 = h * f(t_j, u_j);\n k2 = h * f(t_j + h / 2, u_j + k1 / 2);\n k3 = h * f(t_j + h / 2, u_j + k2 / 2);\n k4 = h * f(t_j +h, u_j + k3);\n u_j1 = u_j + (k1 + 2 * k2 + 2 * k3 + k4) / 6;\n u_j = u_j1;\n t_j = t_j + h;\n }\n }\n return u_j;\n },\n\n romberg: function romberg(f, a, b, order) {\n var i = 0;\n var h = (b - a) / 2;\n var x = [];\n var h1 = [];\n var g = [];\n var m, a1, j, k, I;\n while (i < order / 2) {\n I = f(a);\n for (j = a, k = 0; j <= b; j = j + h, k++) x[k] = j;\n m = x.length;\n for (j = 1; j < m - 1; j++) {\n I += (((j % 2) !== 0) ? 4 : 2) * f(x[j]);\n }\n I = (h / 3) * (I + f(b));\n g[i] = I;\n h /= 2;\n i++;\n }\n a1 = g.length;\n m = 1;\n while (a1 !== 1) {\n for (j = 0; j < a1 - 1; j++)\n h1[j] = ((Math.pow(4, m)) * g[j + 1] - g[j]) / (Math.pow(4, m) - 1);\n a1 = h1.length;\n g = h1;\n h1 = [];\n m++;\n }\n return g;\n },\n\n richardson: function richardson(X, f, x, h) {\n function pos(X, x) {\n var i = 0;\n var n = X.length;\n var p;\n for (; i < n; i++)\n if (X[i] === x) p = i;\n return p;\n }\n var h_min = Math.abs(x - X[pos(X, x) + 1]);\n var i = 0;\n var g = [];\n var h1 = [];\n var y1, y2, m, a, j;\n while (h >= h_min) {\n y1 = pos(X, x + h);\n y2 = pos(X, x);\n g[i] = (f[y1] - 2 * f[y2] + f[2 * y2 - y1]) / (h * h);\n h /= 2;\n i++;\n }\n a = g.length;\n m = 1;\n while (a != 1) {\n for (j = 0; j < a - 1; j++)\n h1[j] = ((Math.pow(4, m)) * g[j + 1] - g[j]) / (Math.pow(4, m) - 1);\n a = h1.length;\n g = h1;\n h1 = [];\n m++;\n }\n return g;\n },\n\n simpson: function simpson(f, a, b, n) {\n var h = (b - a) / n;\n var I = f(a);\n var x = [];\n var j = a;\n var k = 0;\n var i = 1;\n var m;\n for (; j <= b; j = j + h, k++)\n x[k] = j;\n m = x.length;\n for (; i < m - 1; i++) {\n I += ((i % 2 !== 0) ? 4 : 2) * f(x[i]);\n }\n return (h / 3) * (I + f(b));\n },\n\n hermite: function hermite(X, F, dF, value) {\n var n = X.length;\n var p = 0;\n var i = 0;\n var l = [];\n var dl = [];\n var A = [];\n var B = [];\n var j;\n for (; i < n; i++) {\n l[i] = 1;\n for (j = 0; j < n; j++) {\n if (i != j) l[i] *= (value - X[j]) / (X[i] - X[j]);\n }\n dl[i] = 0;\n for (j = 0; j < n; j++) {\n if (i != j) dl[i] += 1 / (X [i] - X[j]);\n }\n A[i] = (1 - 2 * (value - X[i]) * dl[i]) * (l[i] * l[i]);\n B[i] = (value - X[i]) * (l[i] * l[i]);\n p += (A[i] * F[i] + B[i] * dF[i]);\n }\n return p;\n },\n\n lagrange: function lagrange(X, F, value) {\n var p = 0;\n var i = 0;\n var j, l;\n var n = X.length;\n for (; i < n; i++) {\n l = F[i];\n for (j = 0; j < n; j++) {\n // calculating the lagrange polynomial L_i\n if (i != j) l *= (value - X[j]) / (X[i] - X[j]);\n }\n // adding the lagrange polynomials found above\n p += l;\n }\n return p;\n },\n\n cubic_spline: function cubic_spline(X, F, value) {\n var n = X.length;\n var i = 0, j;\n var A = [];\n var B = [];\n var alpha = [];\n var c = [];\n var h = [];\n var b = [];\n var d = [];\n for (; i < n - 1; i++)\n h[i] = X[i + 1] - X[i];\n alpha[0] = 0;\n for (i = 1; i < n - 1; i++) {\n alpha[i] = (3 / h[i]) * (F[i + 1] - F[i]) -\n (3 / h[i-1]) * (F[i] - F[i-1]);\n }\n for (i = 1; i < n - 1; i++) {\n A[i] = [];\n B[i] = [];\n A[i][i-1] = h[i-1];\n A[i][i] = 2 * (h[i - 1] + h[i]);\n A[i][i+1] = h[i];\n B[i][0] = alpha[i];\n }\n c = jStat.multiply(jStat.inv(A), B);\n for (j = 0; j < n - 1; j++) {\n b[j] = (F[j + 1] - F[j]) / h[j] - h[j] * (c[j + 1][0] + 2 * c[j][0]) / 3;\n d[j] = (c[j + 1][0] - c[j][0]) / (3 * h[j]);\n }\n for (j = 0; j < n; j++) {\n if (X[j] > value) break;\n }\n j -= 1;\n return F[j] + (value - X[j]) * b[j] + jStat.sq(value-X[j]) *\n c[j] + (value - X[j]) * jStat.sq(value - X[j]) * d[j];\n },\n\n gauss_quadrature: function gauss_quadrature() {\n throw new Error('gauss_quadrature not yet implemented');\n },\n\n PCA: function PCA(X) {\n var m = X.length;\n var n = X[0].length;\n var i = 0;\n var j, temp1;\n var u = [];\n var D = [];\n var result = [];\n var temp2 = [];\n var Y = [];\n var Bt = [];\n var B = [];\n var C = [];\n var V = [];\n var Vt = [];\n for (i = 0; i < m; i++) {\n u[i] = jStat.sum(X[i]) / n;\n }\n for (i = 0; i < n; i++) {\n B[i] = [];\n for(j = 0; j < m; j++) {\n B[i][j] = X[j][i] - u[j];\n }\n }\n B = jStat.transpose(B);\n for (i = 0; i < m; i++) {\n C[i] = [];\n for (j = 0; j < m; j++) {\n C[i][j] = (jStat.dot([B[i]], [B[j]])) / (n - 1);\n }\n }\n result = jStat.jacobi(C);\n V = result[0];\n D = result[1];\n Vt = jStat.transpose(V);\n for (i = 0; i < D.length; i++) {\n for (j = i; j < D.length; j++) {\n if(D[i] < D[j]) {\n temp1 = D[i];\n D[i] = D[j];\n D[j] = temp1;\n temp2 = Vt[i];\n Vt[i] = Vt[j];\n Vt[j] = temp2;\n }\n }\n }\n Bt = jStat.transpose(B);\n for (i = 0; i < m; i++) {\n Y[i] = [];\n for (j = 0; j < Bt.length; j++) {\n Y[i][j] = jStat.dot([Vt[i]], [Bt[j]]);\n }\n }\n return [X, D, Vt, Y];\n }\n});\n\n// extend jStat.fn with methods that require one argument\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n jStat.fn[passfunc] = function(arg, func) {\n var tmpthis = this;\n // check for callback\n if (func) {\n setTimeout(function() {\n func.call(tmpthis, jStat.fn[passfunc].call(tmpthis, arg));\n }, 15);\n return this;\n }\n if (typeof jStat[passfunc](this, arg) === 'number')\n return jStat[passfunc](this, arg);\n else\n return jStat(jStat[passfunc](this, arg));\n };\n }(funcs[i]));\n}('add divide multiply subtract dot pow exp log abs norm angle'.split(' ')));\n\n}(jStat, Math));\n(function(jStat, Math) {\n\nvar slice = [].slice;\nvar isNumber = jStat.utils.isNumber;\nvar isArray = jStat.utils.isArray;\n\n// flag==true denotes use of sample standard deviation\n// Z Statistics\njStat.extend({\n // 2 different parameter lists:\n // (value, mean, sd)\n // (value, array, flag)\n zscore: function zscore() {\n var args = slice.call(arguments);\n if (isNumber(args[1])) {\n return (args[0] - args[1]) / args[2];\n }\n return (args[0] - jStat.mean(args[1])) / jStat.stdev(args[1], args[2]);\n },\n\n // 3 different paramter lists:\n // (value, mean, sd, sides)\n // (zscore, sides)\n // (value, array, sides, flag)\n ztest: function ztest() {\n var args = slice.call(arguments);\n var z;\n if (isArray(args[1])) {\n // (value, array, sides, flag)\n z = jStat.zscore(args[0],args[1],args[3]);\n return (args[2] === 1) ?\n (jStat.normal.cdf(-Math.abs(z), 0, 1)) :\n (jStat.normal.cdf(-Math.abs(z), 0, 1)*2);\n } else {\n if (args.length > 2) {\n // (value, mean, sd, sides)\n z = jStat.zscore(args[0],args[1],args[2]);\n return (args[3] === 1) ?\n (jStat.normal.cdf(-Math.abs(z),0,1)) :\n (jStat.normal.cdf(-Math.abs(z),0,1)* 2);\n } else {\n // (zscore, sides)\n z = args[0];\n return (args[1] === 1) ?\n (jStat.normal.cdf(-Math.abs(z),0,1)) :\n (jStat.normal.cdf(-Math.abs(z),0,1)*2);\n }\n }\n }\n});\n\njStat.extend(jStat.fn, {\n zscore: function zscore(value, flag) {\n return (value - this.mean()) / this.stdev(flag);\n },\n\n ztest: function ztest(value, sides, flag) {\n var zscore = Math.abs(this.zscore(value, flag));\n return (sides === 1) ?\n (jStat.normal.cdf(-zscore, 0, 1)) :\n (jStat.normal.cdf(-zscore, 0, 1) * 2);\n }\n});\n\n// T Statistics\njStat.extend({\n // 2 parameter lists\n // (value, mean, sd, n)\n // (value, array)\n tscore: function tscore() {\n var args = slice.call(arguments);\n return (args.length === 4) ?\n ((args[0] - args[1]) / (args[2] / Math.sqrt(args[3]))) :\n ((args[0] - jStat.mean(args[1])) /\n (jStat.stdev(args[1], true) / Math.sqrt(args[1].length)));\n },\n\n // 3 different paramter lists:\n // (value, mean, sd, n, sides)\n // (tscore, n, sides)\n // (value, array, sides)\n ttest: function ttest() {\n var args = slice.call(arguments);\n var tscore;\n if (args.length === 5) {\n tscore = Math.abs(jStat.tscore(args[0], args[1], args[2], args[3]));\n return (args[4] === 1) ?\n (jStat.studentt.cdf(-tscore, args[3]-1)) :\n (jStat.studentt.cdf(-tscore, args[3]-1)*2);\n }\n if (isNumber(args[1])) {\n tscore = Math.abs(args[0])\n return (args[2] == 1) ?\n (jStat.studentt.cdf(-tscore, args[1]-1)) :\n (jStat.studentt.cdf(-tscore, args[1]-1) * 2);\n }\n tscore = Math.abs(jStat.tscore(args[0], args[1]))\n return (args[2] == 1) ?\n (jStat.studentt.cdf(-tscore, args[1].length-1)) :\n (jStat.studentt.cdf(-tscore, args[1].length-1) * 2);\n }\n});\n\njStat.extend(jStat.fn, {\n tscore: function tscore(value) {\n return (value - this.mean()) / (this.stdev(true) / Math.sqrt(this.cols()));\n },\n\n ttest: function ttest(value, sides) {\n return (sides === 1) ?\n (1 - jStat.studentt.cdf(Math.abs(this.tscore(value)), this.cols()-1)) :\n (jStat.studentt.cdf(-Math.abs(this.tscore(value)), this.cols()-1)*2);\n }\n});\n\n// F Statistics\njStat.extend({\n // Paramter list is as follows:\n // (array1, array2, array3, ...)\n // or it is an array of arrays\n // array of arrays conversion\n anovafscore: function anovafscore() {\n var args = slice.call(arguments),\n expVar, sample, sampMean, sampSampMean, tmpargs, unexpVar, i, j;\n if (args.length === 1) {\n tmpargs = new Array(args[0].length);\n for (i = 0; i < args[0].length; i++) {\n tmpargs[i] = args[0][i];\n }\n args = tmpargs;\n }\n // Builds sample array\n sample = new Array();\n for (i = 0; i < args.length; i++) {\n sample = sample.concat(args[i]);\n }\n sampMean = jStat.mean(sample);\n // Computes the explained variance\n expVar = 0;\n for (i = 0; i < args.length; i++) {\n expVar = expVar + args[i].length * Math.pow(jStat.mean(args[i]) - sampMean, 2);\n }\n expVar /= (args.length - 1);\n // Computes unexplained variance\n unexpVar = 0;\n for (i = 0; i < args.length; i++) {\n sampSampMean = jStat.mean(args[i]);\n for (j = 0; j < args[i].length; j++) {\n unexpVar += Math.pow(args[i][j] - sampSampMean, 2);\n }\n }\n unexpVar /= (sample.length - args.length);\n return expVar / unexpVar;\n },\n\n // 2 different paramter setups\n // (array1, array2, array3, ...)\n // (anovafscore, df1, df2)\n anovaftest: function anovaftest() {\n var args = slice.call(arguments),\n df1, df2, n, i;\n if (isNumber(args[0])) {\n return 1 - jStat.centralF.cdf(args[0], args[1], args[2]);\n }\n var anovafscore = jStat.anovafscore(args);\n df1 = args.length - 1;\n n = 0;\n for (i = 0; i < args.length; i++) {\n n = n + args[i].length;\n }\n df2 = n - df1 - 1;\n return 1 - jStat.centralF.cdf(anovafscore, df1, df2);\n },\n\n ftest: function ftest(fscore, df1, df2) {\n return 1 - jStat.centralF.cdf(fscore, df1, df2);\n }\n});\n\njStat.extend(jStat.fn, {\n anovafscore: function anovafscore() {\n return jStat.anovafscore(this.toArray());\n },\n\n anovaftes: function anovaftes() {\n var n = 0;\n var i;\n for (i = 0; i < this.length; i++) {\n n = n + this[i].length;\n }\n return jStat.ftest(this.anovafscore(), this.length - 1, n - this.length);\n }\n});\n\n// Tukey's range test\njStat.extend({\n // 2 parameter lists\n // (mean1, mean2, n1, n2, sd)\n // (array1, array2, sd)\n qscore: function qscore() {\n var args = slice.call(arguments);\n var mean1, mean2, n1, n2, sd;\n if (isNumber(args[0])) {\n mean1 = args[0];\n mean2 = args[1];\n n1 = args[2];\n n2 = args[3];\n sd = args[4];\n } else {\n mean1 = jStat.mean(args[0]);\n mean2 = jStat.mean(args[1]);\n n1 = args[0].length;\n n2 = args[1].length;\n sd = args[2];\n }\n return Math.abs(mean1 - mean2) / (sd * Math.sqrt((1 / n1 + 1 / n2) / 2));\n },\n\n // 3 different parameter lists:\n // (qscore, n, k)\n // (mean1, mean2, n1, n2, sd, n, k)\n // (array1, array2, sd, n, k)\n qtest: function qtest() {\n var args = slice.call(arguments);\n\n var qscore;\n if (args.length === 3) {\n qscore = args[0];\n args = args.slice(1);\n } else if (args.length === 7) {\n qscore = jStat.qscore(args[0], args[1], args[2], args[3], args[4]);\n args = args.slice(5);\n } else {\n qscore = jStat.qscore(args[0], args[1], args[2]);\n args = args.slice(3);\n }\n\n var n = args[0];\n var k = args[1];\n\n return 1 - jStat.tukey.cdf(qscore, k, n - k);\n },\n\n tukeyhsd: function tukeyhsd(arrays) {\n var sd = jStat.pooledstdev(arrays);\n var means = arrays.map(function (arr) {return jStat.mean(arr);});\n var n = arrays.reduce(function (n, arr) {return n + arr.length;}, 0);\n\n var results = [];\n for (var i = 0; i < arrays.length; ++i) {\n for (var j = i + 1; j < arrays.length; ++j) {\n var p = jStat.qtest(means[i], means[j], arrays[i].length, arrays[j].length, sd, n, arrays.length);\n results.push([[i, j], p]);\n }\n }\n\n return results;\n }\n});\n\n// Error Bounds\njStat.extend({\n // 2 different parameter setups\n // (value, alpha, sd, n)\n // (value, alpha, array)\n normalci: function normalci() {\n var args = slice.call(arguments),\n ans = new Array(2),\n change;\n if (args.length === 4) {\n change = Math.abs(jStat.normal.inv(args[1] / 2, 0, 1) *\n args[2] / Math.sqrt(args[3]));\n } else {\n change = Math.abs(jStat.normal.inv(args[1] / 2, 0, 1) *\n jStat.stdev(args[2]) / Math.sqrt(args[2].length));\n }\n ans[0] = args[0] - change;\n ans[1] = args[0] + change;\n return ans;\n },\n\n // 2 different parameter setups\n // (value, alpha, sd, n)\n // (value, alpha, array)\n tci: function tci() {\n var args = slice.call(arguments),\n ans = new Array(2),\n change;\n if (args.length === 4) {\n change = Math.abs(jStat.studentt.inv(args[1] / 2, args[3] - 1) *\n args[2] / Math.sqrt(args[3]));\n } else {\n change = Math.abs(jStat.studentt.inv(args[1] / 2, args[2].length - 1) *\n jStat.stdev(args[2], true) / Math.sqrt(args[2].length));\n }\n ans[0] = args[0] - change;\n ans[1] = args[0] + change;\n return ans;\n },\n\n significant: function significant(pvalue, alpha) {\n return pvalue < alpha;\n }\n});\n\njStat.extend(jStat.fn, {\n normalci: function normalci(value, alpha) {\n return jStat.normalci(value, alpha, this.toArray());\n },\n\n tci: function tci(value, alpha) {\n return jStat.tci(value, alpha, this.toArray());\n }\n});\n\n// internal method for calculating the z-score for a difference of proportions test\nfunction differenceOfProportions(p1, n1, p2, n2) {\n if (p1 > 1 || p2 > 1 || p1 <= 0 || p2 <= 0) {\n throw new Error(\"Proportions should be greater than 0 and less than 1\")\n }\n var pooled = (p1 * n1 + p2 * n2) / (n1 + n2);\n var se = Math.sqrt(pooled * (1 - pooled) * ((1/n1) + (1/n2)));\n return (p1 - p2) / se;\n}\n\n// Difference of Proportions\njStat.extend(jStat.fn, {\n oneSidedDifferenceOfProportions: function oneSidedDifferenceOfProportions(p1, n1, p2, n2) {\n var z = differenceOfProportions(p1, n1, p2, n2);\n return jStat.ztest(z, 1);\n },\n\n twoSidedDifferenceOfProportions: function twoSidedDifferenceOfProportions(p1, n1, p2, n2) {\n var z = differenceOfProportions(p1, n1, p2, n2);\n return jStat.ztest(z, 2);\n }\n});\n\n}(jStat, Math));\njStat.models = (function(){\n function sub_regress(exog) {\n var var_count = exog[0].length;\n var modelList = jStat.arange(var_count).map(function(endog_index) {\n var exog_index =\n jStat.arange(var_count).filter(function(i){return i!==endog_index});\n return ols(jStat.col(exog, endog_index).map(function(x){ return x[0] }),\n jStat.col(exog, exog_index))\n });\n return modelList;\n }\n\n // do OLS model regress\n // exog have include const columns ,it will not generate it .In fact, exog is\n // \"design matrix\" look at\n //https://en.wikipedia.org/wiki/Design_matrix\n function ols(endog, exog) {\n var nobs = endog.length;\n var df_model = exog[0].length - 1;\n var df_resid = nobs-df_model - 1;\n var coef = jStat.lstsq(exog, endog);\n var predict =\n jStat.multiply(exog, coef.map(function(x) { return [x] }))\n .map(function(p) { return p[0] });\n var resid = jStat.subtract(endog, predict);\n var ybar = jStat.mean(endog);\n // constant cause problem\n // var SST = jStat.sum(endog.map(function(y) {\n // return Math.pow(y-ybar,2);\n // }));\n var SSE = jStat.sum(predict.map(function(f) {\n return Math.pow(f - ybar, 2);\n }));\n var SSR = jStat.sum(endog.map(function(y, i) {\n return Math.pow(y - predict[i], 2);\n }));\n var SST = SSE + SSR;\n var R2 = (SSE / SST);\n return {\n exog:exog,\n endog:endog,\n nobs:nobs,\n df_model:df_model,\n df_resid:df_resid,\n coef:coef,\n predict:predict,\n resid:resid,\n ybar:ybar,\n SST:SST,\n SSE:SSE,\n SSR:SSR,\n R2:R2\n };\n }\n\n // H0: b_I=0\n // H1: b_I!=0\n function t_test(model) {\n var subModelList = sub_regress(model.exog);\n //var sigmaHat=jStat.stdev(model.resid);\n var sigmaHat = Math.sqrt(model.SSR / (model.df_resid));\n var seBetaHat = subModelList.map(function(mod) {\n var SST = mod.SST;\n var R2 = mod.R2;\n return sigmaHat / Math.sqrt(SST * (1 - R2));\n });\n var tStatistic = model.coef.map(function(coef, i) {\n return (coef - 0) / seBetaHat[i];\n });\n var pValue = tStatistic.map(function(t) {\n var leftppf = jStat.studentt.cdf(t, model.df_resid);\n return (leftppf > 0.5 ? 1 - leftppf : leftppf) * 2;\n });\n var c = jStat.studentt.inv(0.975, model.df_resid);\n var interval95 = model.coef.map(function(coef, i) {\n var d = c * seBetaHat[i];\n return [coef - d, coef + d];\n })\n return {\n se: seBetaHat,\n t: tStatistic,\n p: pValue,\n sigmaHat: sigmaHat,\n interval95: interval95\n };\n }\n\n function F_test(model) {\n var F_statistic =\n (model.R2 / model.df_model) / ((1 - model.R2) / model.df_resid);\n var fcdf = function(x, n1, n2) {\n return jStat.beta.cdf(x / (n2 / n1 + x), n1 / 2, n2 / 2)\n }\n var pvalue = 1 - fcdf(F_statistic, model.df_model, model.df_resid);\n return { F_statistic: F_statistic, pvalue: pvalue };\n }\n\n function ols_wrap(endog, exog) {\n var model = ols(endog,exog);\n var ttest = t_test(model);\n var ftest = F_test(model);\n // Provide the Wherry / Ezekiel / McNemar / Cohen Adjusted R^2\n // Which matches the 'adjusted R^2' provided by R's lm package\n var adjust_R2 =\n 1 - (1 - model.R2) * ((model.nobs - 1) / (model.df_resid));\n model.t = ttest;\n model.f = ftest;\n model.adjust_R2 = adjust_R2;\n return model;\n }\n\n return { ols: ols_wrap };\n})();\n//To regress, simply build X matrix\n//(append column of 1's) using\n//buildxmatrix and build the Y\n//matrix using buildymatrix\n//(simply the transpose)\n//and run regress.\n\n\n\n//Regressions\n\njStat.extend({\n buildxmatrix: function buildxmatrix(){\n //Parameters will be passed in as such\n //(array1,array2,array3,...)\n //as (x1,x2,x3,...)\n //needs to be (1,x1,x2,x3,...)\n var matrixRows = new Array(arguments.length);\n for(var i=0;i1){\n result = [];\n for (i = 0; i < A.rows(); i++) {\n result[i] = [];\n for (j = 0; j < B.cols(); j++) {\n sum = 0;\n for (k = 0; k < A.cols(); k++) {\n sum += A.toArray()[i][k] * B.toArray()[k][j];\n }\n result[i][j] = sum;\n }\n }\n return jStat(result);\n }\n result = [];\n for (i = 0; i < A.rows(); i++) {\n result[i] = [];\n for (j = 0; j < B.cols(); j++) {\n sum = 0;\n for (k = 0; k < A.cols(); k++) {\n sum += A.toArray()[i][k] * B.toArray()[j];\n }\n result[i][j] = sum;\n }\n }\n return jStat(result);\n }\n },\n\n //regress and regresst to be fixed\n\n regress: function regress(jMatX,jMatY){\n //print(\"regressin!\");\n //print(jMatX.toArray());\n var innerinv = jStat.xtranspxinv(jMatX);\n //print(innerinv);\n var xtransp = jMatX.transpose();\n var next = jStat.matrixmult(jStat(innerinv),xtransp);\n return jStat.matrixmult(next,jMatY);\n\n },\n\n regresst: function regresst(jMatX,jMatY,sides){\n var beta = jStat.regress(jMatX,jMatY);\n\n var compile = {};\n compile.anova = {};\n var jMatYBar = jStat.jMatYBar(jMatX, beta);\n compile.yBar = jMatYBar;\n var yAverage = jMatY.mean();\n compile.anova.residuals = jStat.residuals(jMatY, jMatYBar);\n\n compile.anova.ssr = jStat.ssr(jMatYBar, yAverage);\n compile.anova.msr = compile.anova.ssr / (jMatX[0].length - 1);\n\n compile.anova.sse = jStat.sse(jMatY, jMatYBar);\n compile.anova.mse =\n compile.anova.sse / (jMatY.length - (jMatX[0].length - 1) - 1);\n\n compile.anova.sst = jStat.sst(jMatY, yAverage);\n compile.anova.mst = compile.anova.sst / (jMatY.length - 1);\n\n compile.anova.r2 = 1 - (compile.anova.sse / compile.anova.sst);\n if (compile.anova.r2 < 0) compile.anova.r2 = 0;\n\n compile.anova.fratio = compile.anova.msr / compile.anova.mse;\n compile.anova.pvalue =\n jStat.anovaftest(compile.anova.fratio,\n jMatX[0].length - 1,\n jMatY.length - (jMatX[0].length - 1) - 1);\n\n compile.anova.rmse = Math.sqrt(compile.anova.mse);\n\n compile.anova.r2adj = 1 - (compile.anova.mse / compile.anova.mst);\n if (compile.anova.r2adj < 0) compile.anova.r2adj = 0;\n\n compile.stats = new Array(jMatX[0].length);\n var covar = jStat.xtranspxinv(jMatX);\n var sds, ts, ps;\n\n for(var i=0; i n) {\n ret = _bessel_iter(x, n, bessel0(x), bessel1(x),-1);\n } else {\n var m=2*M.floor((n+M.floor(M.sqrt(40*n)))/2);\n var jsum=false;\n var bjp=0.0, sum=0.0;\n var bj=1.0, bjm = 0.0;\n var tox = 2 / x;\n for (var j=m;j>0;j--) {\n bjm=j*tox*bj-bjp;\n bjp=bj;\n bj=bjm;\n if (M.abs(bj) > 1E10) {\n bj *= 1E-10;\n bjp *= 1E-10;\n ret *= 1E-10;\n sum *= 1E-10;\n }\n if (jsum) sum += bj;\n jsum=!jsum;\n if (j == n) ret=bjp;\n }\n sum=2.0*sum-bj;\n ret /= sum;\n }\n return ret;\n };\n})();\nvar bessely = (function() {\n var W = 0.636619772;\n\n var b0_a1a = [-2957821389.0, 7062834065.0, -512359803.6, 10879881.29, -86327.92757, 228.4622733].reverse();\n var b0_a2a = [40076544269.0, 745249964.8, 7189466.438, 47447.26470, 226.1030244, 1.0].reverse();\n var b0_a1b = [1.0, -0.1098628627e-2, 0.2734510407e-4, -0.2073370639e-5, 0.2093887211e-6].reverse();\n var b0_a2b = [-0.1562499995e-1, 0.1430488765e-3, -0.6911147651e-5, 0.7621095161e-6, -0.934945152e-7].reverse();\n\n function bessel0(x) {\n var a=0, a1=0, a2=0, y = x * x, xx = x - 0.785398164;\n if(x < 8) {\n a1 = _horner(b0_a1a, y);\n a2 = _horner(b0_a2a, y);\n a = a1/a2 + W * besselj(x,0) * M.log(x);\n } else {\n y = 64 / y;\n a1 = _horner(b0_a1b, y);\n a2 = _horner(b0_a2b, y);\n a = M.sqrt(W/x)*(M.sin(xx)*a1+M.cos(xx)*a2*8/x);\n }\n return a;\n }\n\n var b1_a1a = [-0.4900604943e13, 0.1275274390e13, -0.5153438139e11, 0.7349264551e9, -0.4237922726e7, 0.8511937935e4].reverse();\n var b1_a2a = [0.2499580570e14, 0.4244419664e12, 0.3733650367e10, 0.2245904002e8, 0.1020426050e6, 0.3549632885e3, 1].reverse();\n var b1_a1b = [1.0, 0.183105e-2, -0.3516396496e-4, 0.2457520174e-5, -0.240337019e-6].reverse();\n var b1_a2b = [0.04687499995, -0.2002690873e-3, 0.8449199096e-5, -0.88228987e-6, 0.105787412e-6].reverse();\n\n function bessel1(x) {\n var a=0, a1=0, a2=0, y = x*x, xx = x - 2.356194491;\n if(x < 8) {\n a1 = x*_horner(b1_a1a, y);\n a2 = _horner(b1_a2a, y);\n a = a1/a2 + W * (besselj(x,1) * M.log(x) - 1 / x);\n } else {\n y = 64 / y;\n a1=_horner(b1_a1b, y);\n a2=_horner(b1_a2b, y);\n a=M.sqrt(W/x)*(M.sin(xx)*a1+M.cos(xx)*a2*8/x);\n }\n return a;\n }\n\n return _bessel_wrap(bessel0, bessel1, 'BESSELY', 1, -1);\n})();\nvar besseli = (function() {\n var b0_a = [1.0, 3.5156229, 3.0899424, 1.2067492, 0.2659732, 0.360768e-1, 0.45813e-2].reverse();\n var b0_b = [0.39894228, 0.1328592e-1, 0.225319e-2, -0.157565e-2, 0.916281e-2, -0.2057706e-1, 0.2635537e-1, -0.1647633e-1, 0.392377e-2].reverse();\n\n function bessel0(x) {\n if(x <= 3.75) return _horner(b0_a, x*x/(3.75*3.75));\n return M.exp(M.abs(x))/M.sqrt(M.abs(x))*_horner(b0_b, 3.75/M.abs(x));\n }\n\n var b1_a = [0.5, 0.87890594, 0.51498869, 0.15084934, 0.2658733e-1, 0.301532e-2, 0.32411e-3].reverse();\n var b1_b = [0.39894228, -0.3988024e-1, -0.362018e-2, 0.163801e-2, -0.1031555e-1, 0.2282967e-1, -0.2895312e-1, 0.1787654e-1, -0.420059e-2].reverse();\n\n function bessel1(x) {\n if(x < 3.75) return x * _horner(b1_a, x*x/(3.75*3.75));\n return (x < 0 ? -1 : 1) * M.exp(M.abs(x))/M.sqrt(M.abs(x))*_horner(b1_b, 3.75/M.abs(x));\n }\n\n return function besseli(x, n) {\n n = Math.round(n);\n if(n === 0) return bessel0(x);\n if(n === 1) return bessel1(x);\n if(n < 0) return NaN;\n if(M.abs(x) === 0) return 0;\n if(x == Infinity) return Infinity;\n\n var ret = 0.0, j, tox = 2 / M.abs(x), bip = 0.0, bi=1.0, bim=0.0;\n var m=2*M.round((n+M.round(M.sqrt(40*n)))/2);\n for (j=m;j>0;j--) {\n bim=j*tox*bi + bip;\n bip=bi; bi=bim;\n if (M.abs(bi) > 1E10) {\n bi *= 1E-10;\n bip *= 1E-10;\n ret *= 1E-10;\n }\n if(j == n) ret = bip;\n }\n ret *= besseli(x, 0) / bi;\n return x < 0 && (n%2) ? -ret : ret;\n };\n\n})();\n\nvar besselk = (function() {\n var b0_a = [-0.57721566, 0.42278420, 0.23069756, 0.3488590e-1, 0.262698e-2, 0.10750e-3, 0.74e-5].reverse();\n var b0_b = [1.25331414, -0.7832358e-1, 0.2189568e-1, -0.1062446e-1, 0.587872e-2, -0.251540e-2, 0.53208e-3].reverse();\n\n function bessel0(x) {\n if(x <= 2) return -M.log(x/2) * besseli(x,0) + _horner(b0_a, x*x/4);\n return M.exp(-x) / M.sqrt(x) * _horner(b0_b, 2/x);\n }\n\n var b1_a = [1.0, 0.15443144, -0.67278579, -0.18156897, -0.1919402e-1, -0.110404e-2, -0.4686e-4].reverse();\n var b1_b = [1.25331414, 0.23498619, -0.3655620e-1, 0.1504268e-1, -0.780353e-2, 0.325614e-2, -0.68245e-3].reverse();\n\n function bessel1(x) {\n if(x <= 2) return M.log(x/2) * besseli(x,1) + (1/x) * _horner(b1_a, x*x/4);\n return M.exp(-x)/M.sqrt(x)*_horner(b1_b, 2/x);\n }\n\n return _bessel_wrap(bessel0, bessel1, 'BESSELK', 2, 1);\n})();\nBESSEL.besselj = besselj;\nBESSEL.bessely = bessely;\nBESSEL.besseli = besseli;\nBESSEL.besselk = besselk;\n}));\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// This is CodeMirror (https://codemirror.net/5), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\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 = global || self, global.CodeMirror = factory());\n}(this, (function () { 'use strict';\n\n // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\/(\\d+)/.exec(userAgent);\n var chrome_version = chrome && +chrome[1];\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n\n var ios = safari && (/Mobile\\/\\w+/.test(userAgent) || navigator.maxTouchPoints > 2);\n var android = /Android/.test(userAgent);\n // This is woefully incomplete. Suggestions for alternative methods welcome.\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n if (presto_version) { presto_version = Number(presto_version[1]); }\n if (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || (ie && ie_version >= 9);\n\n function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n var rmClass = function(node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n };\n\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count)\n { e.removeChild(e.firstChild); }\n return e\n }\n\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e)\n }\n\n function elt(tag, content, className, style) {\n var e = document.createElement(tag);\n if (className) { e.className = className; }\n if (style) { e.style.cssText = style; }\n if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n return e\n }\n // wrapper for elt, which removes the elt from the accessibility tree\n function eltP(tag, content, className, style) {\n var e = elt(tag, content, className, style);\n e.setAttribute(\"role\", \"presentation\");\n return e\n }\n\n var range;\n if (document.createRange) { range = function(node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r\n }; }\n else { range = function(node, start, end) {\n var r = document.body.createTextRange();\n try { r.moveToElementText(node.parentNode); }\n catch(e) { return r }\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r\n }; }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n { child = child.parentNode; }\n if (parent.contains)\n { return parent.contains(child) }\n do {\n if (child.nodeType == 11) { child = child.host; }\n if (child == parent) { return true }\n } while (child = child.parentNode)\n }\n\n function activeElt(rootNode) {\n // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n var doc = rootNode.ownerDocument || rootNode;\n var activeElement;\n try {\n activeElement = rootNode.activeElement;\n } catch(e) {\n activeElement = doc.body || null;\n }\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n { activeElement = activeElement.shadowRoot.activeElement; }\n return activeElement\n }\n\n function addClass(node, cls) {\n var current = node.className;\n if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n }\n function joinClasses(a, b) {\n var as = a.split(\" \");\n for (var i = 0; i < as.length; i++)\n { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n return b\n }\n\n var selectInput = function(node) { node.select(); };\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\n else if (ie) // Suppress mysterious IE10 errors\n { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\n function doc(cm) { return cm.display.wrapper.ownerDocument }\n\n function root(cm) {\n return rootNode(cm.display.wrapper)\n }\n\n function rootNode(element) {\n // Detect modern browsers (2017+).\n return element.getRootNode ? element.getRootNode() : element.ownerDocument\n }\n\n function win(cm) { return doc(cm).defaultView }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function(){return f.apply(null, args)}\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) { target = {}; }\n for (var prop in obj)\n { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n { target[prop] = obj[prop]; } }\n return target\n }\n\n // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n if (end == -1) { end = string.length; }\n }\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n if (nextTab < 0 || nextTab >= end)\n { return n + (end - i) }\n n += nextTab - i;\n n += tabSize - (n % tabSize);\n i = nextTab + 1;\n }\n }\n\n var Delayed = function() {\n this.id = null;\n this.f = null;\n this.time = 0;\n this.handler = bind(this.onTimeout, this);\n };\n Delayed.prototype.onTimeout = function (self) {\n self.id = 0;\n if (self.time <= +new Date) {\n self.f();\n } else {\n setTimeout(self.handler, self.time - +new Date);\n }\n };\n Delayed.prototype.set = function (ms, f) {\n this.f = f;\n var time = +new Date + ms;\n if (!this.id || time < this.time) {\n clearTimeout(this.id);\n this.id = setTimeout(this.handler, ms);\n this.time = time;\n }\n };\n\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i)\n { if (array[i] == elt) { return i } }\n return -1\n }\n\n // Number of pixels added to scroller and sizer to hide scrollbar\n var scrollerGap = 50;\n\n // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n var Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n // Reused option objects for setSelection & friends\n var sel_dontScroll = {scroll: false}, sel_mouse = {origin: \"*mouse\"}, sel_move = {origin: \"+move\"};\n\n // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n if (nextTab == -1) { nextTab = string.length; }\n var skipped = nextTab - pos;\n if (nextTab == string.length || col + skipped >= goal)\n { return pos + Math.min(skipped, goal - col) }\n col += nextTab - pos;\n col += tabSize - (col % tabSize);\n pos = nextTab + 1;\n if (col >= goal) { return pos }\n }\n }\n\n var spaceStrs = [\"\"];\n function spaceStr(n) {\n while (spaceStrs.length <= n)\n { spaceStrs.push(lst(spaceStrs) + \" \"); }\n return spaceStrs[n]\n }\n\n function lst(arr) { return arr[arr.length-1] }\n\n function map(array, f) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n return out\n }\n\n function insertSorted(array, value, score) {\n var pos = 0, priority = score(value);\n while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n if (props) { copyObj(props, inst); }\n return inst\n }\n\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" &&\n (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n }\n function isWordChar(ch, helper) {\n if (!helper) { return isWordCharBasic(ch) }\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n return helper.test(ch)\n }\n\n function isEmpty(obj) {\n for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n return true\n }\n\n // Extending unicode characters. A series of a non-extending char +\n // any number of extending chars is treated as a single unit as far\n // as editing and measuring is concerned. This is not fully correct,\n // since some scripts/fonts/browsers also treat other configurations\n // of code points as a group.\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n return pos\n }\n\n // Returns the value from the range [`from`; `to`] that satisfies\n // `pred` and is closest to `from`. Assumes that at least `to`\n // satisfies `pred`. Supports `from` being greater than `to`.\n function findFirst(pred, from, to) {\n // At any point we are certain `to` satisfies `pred`, don't know\n // whether `from` does.\n var dir = from > to ? -1 : 1;\n for (;;) {\n if (from == to) { return from }\n var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n if (mid == from) { return pred(mid) ? from : to }\n if (pred(mid)) { to = mid; }\n else { from = mid + dir; }\n }\n }\n\n // BIDI HELPERS\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) { return f(from, to, \"ltr\", 0) }\n var found = false;\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n found = true;\n }\n }\n if (!found) { f(from, to, \"ltr\"); }\n }\n\n var bidiOther = null;\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n if (cur.from < ch && cur.to > ch) { return i }\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") { found = i; }\n else { bidiOther = i; }\n }\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") { found = i; }\n else { bidiOther = i; }\n }\n }\n return found != null ? found : bidiOther\n }\n\n // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n\n // One-char codes used for character types:\n // L (L): Left-to-Right\n // R (R): Right-to-Left\n // r (AL): Right-to-Left Arabic\n // 1 (EN): European Number\n // + (ES): European Number Separator\n // % (ET): European Number Terminator\n // n (AN): Arabic Number\n // , (CS): Common Number Separator\n // m (NSM): Non-Spacing Mark\n // b (BN): Boundary Neutral\n // s (B): Paragraph Separator\n // t (S): Segment Separator\n // w (WS): Whitespace\n // N (ON): Other Neutrals\n\n // Returns null if characters are ordered as they appear\n // (left-to-right), or an array of sections ({from, to, level}\n // objects) in the order in which they occur visually.\n var bidiOrdering = (function() {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n // Character types for codepoints 0x600 to 0x6f9\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n function charType(code) {\n if (code <= 0xf7) { return lowTypes.charAt(code) }\n else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n else if (code == 0x200c) { return \"b\" }\n else { return \"L\" }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from; this.to = to;\n }\n\n return function(str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) { return false }\n var len = str.length, types = [];\n for (var i = 0; i < len; ++i)\n { types.push(charType(str.charCodeAt(i))); }\n\n // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n if (type == \"m\") { types[i$1] = prev; }\n else { prev = type; }\n }\n\n // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { types[i$2] = \"R\"; } }\n }\n\n // W4. A single European separator between two European numbers\n // changes to a European number. A single common separator between\n // two numbers of the same type changes to that type.\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n prev$1 = type$2;\n }\n\n // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n if (type$3 == \",\") { types[i$4] = \"N\"; }\n else if (type$3 == \"%\") {\n var end = (void 0);\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n for (var j = i$4; j < end; ++j) { types[j] = replace; }\n i$4 = end - 1;\n }\n }\n\n // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n else if (isStrong.test(type$4)) { cur$1 = type$4; }\n }\n\n // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = (void 0);\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n var before = (i$6 ? types[i$6-1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? (before ? \"L\" : \"R\") : outerType;\n for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n i$6 = end$1 - 1;\n }\n }\n\n // Here we depart from the documented algorithm, in order to avoid\n // building up an actual levels array. Since there are only three\n // levels (0, 1, 2) in an implementation that doesn't take\n // explicit embedding into account, we can build up the order on\n // the fly, without following the level-based algorithm.\n var order = [], m;\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7, at = order.length, isRTL = direction == \"rtl\" ? 1 : 0;\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); at += isRTL; }\n var nstart = j$2;\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n at += isRTL;\n pos = j$2;\n } else { ++j$2; }\n }\n if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\n }\n }\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n\n return direction == \"rtl\" ? order.reverse() : order\n }\n })();\n\n // Get the bidi ordering for the given line (and cache it). Returns\n // false for lines that are fully left-to-right, and an array of\n // BidiSpan objects otherwise.\n function getOrder(line, direction) {\n var order = line.order;\n if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n return order\n }\n\n // EVENT HANDLING\n\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n var noHandlers = [];\n\n var on = function(emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers || (emitter._handlers = {});\n map[type] = (map[type] || noHandlers).concat(f);\n }\n };\n\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers\n }\n\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers, arr = map && map[type];\n if (arr) {\n var index = indexOf(arr, f);\n if (index > -1)\n { map[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n }\n }\n }\n\n function signal(emitter, type /*, values...*/) {\n var handlers = getHandlers(emitter, type);\n if (!handlers.length) { return }\n var args = Array.prototype.slice.call(arguments, 2);\n for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n }\n\n // The DOM events that CodeMirror handles can be overridden by\n // registering a (non-DOM) handler on the editor for the event name,\n // and preventDefault-ing the event in that handler.\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\")\n { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore\n }\n\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n if (!arr) { return }\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n { set.push(arr[i]); } }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0\n }\n\n // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n function eventMixin(ctor) {\n ctor.prototype.on = function(type, f) {on(this, type, f);};\n ctor.prototype.off = function(type, f) {off(this, type, f);};\n }\n\n // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n function e_preventDefault(e) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n function e_stopPropagation(e) {\n if (e.stopPropagation) { e.stopPropagation(); }\n else { e.cancelBubble = true; }\n }\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n }\n function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\n function e_target(e) {return e.target || e.srcElement}\n function e_button(e) {\n var b = e.which;\n if (b == null) {\n if (e.button & 1) { b = 1; }\n else if (e.button & 2) { b = 3; }\n else if (e.button & 4) { b = 2; }\n }\n if (mac && e.ctrlKey && b == 1) { b = 3; }\n return b\n }\n\n // Detect drag-and-drop\n var dragAndDrop = function() {\n // There is *some* kind of drag-and-drop support in IE6-8, but I\n // couldn't get it to work yet.\n if (ie && ie_version < 9) { return false }\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div\n }();\n\n var zwspSupported;\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200b\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n if (measure.firstChild.offsetHeight != 0)\n { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n }\n var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node\n }\n\n // Feature-detect IE's crummy client rect reporting for bidi text\n var badBidiRects;\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) { return badBidiRects }\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n return badBidiRects = (r1.right - r0.right < 3)\n }\n\n // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0, result = [], l = string.length;\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n if (nl == -1) { nl = string.length; }\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n return result\n } : function (string) { return string.split(/\\r\\n?|\\n/); };\n\n var hasSelection = window.getSelection ? function (te) {\n try { return te.selectionStart != te.selectionEnd }\n catch(e) { return false }\n } : function (te) {\n var range;\n try {range = te.ownerDocument.selection.createRange();}\n catch(e) {}\n if (!range || range.parentElement() != te) { return false }\n return range.compareEndPoints(\"StartToEnd\", range) != 0\n };\n\n var hasCopyEvent = (function () {\n var e = elt(\"div\");\n if (\"oncopy\" in e) { return true }\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\"\n })();\n\n var badZoomedRects = null;\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) { return badZoomedRects }\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n }\n\n // Known modes, by name and by MIME\n var modes = {}, mimeModes = {};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n function defineMode(name, mode) {\n if (arguments.length > 2)\n { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n }\n\n // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n if (typeof found == \"string\") { found = {name: found}; }\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\")\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\")\n }\n if (typeof spec == \"string\") { return {name: spec} }\n else { return spec || {name: \"null\"} }\n }\n\n // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n if (!mfactory) { return getMode(options, \"text/plain\") }\n var modeObj = mfactory(options, spec);\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) { continue }\n if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n modeObj[prop] = exts[prop];\n }\n }\n modeObj.name = spec.name;\n if (spec.helperType) { modeObj.helperType = spec.helperType; }\n if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n return modeObj\n }\n\n // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n var modeExtensions = {};\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n copyObj(properties, exts);\n }\n\n function copyState(mode, state) {\n if (state === true) { return state }\n if (mode.copyState) { return mode.copyState(state) }\n var nstate = {};\n for (var n in state) {\n var val = state[n];\n if (val instanceof Array) { val = val.concat([]); }\n nstate[n] = val;\n }\n return nstate\n }\n\n // Given a mode and a state (for that mode), find the inner mode and\n // state at the position that the state refers to.\n function innerMode(mode, state) {\n var info;\n while (mode.innerMode) {\n info = mode.innerMode(state);\n if (!info || info.mode == mode) { break }\n state = info.state;\n mode = info.mode;\n }\n return info || {mode: mode, state: state}\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true\n }\n\n // STRING STREAM\n\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n var StringStream = function(string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n\n StringStream.prototype.eol = function () {return this.pos >= this.string.length};\n StringStream.prototype.sol = function () {return this.pos == this.lineStart};\n StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length)\n { return this.string.charAt(this.pos++) }\n };\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n if (typeof match == \"string\") { ok = ch == match; }\n else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n if (ok) {++this.pos; return ch}\n };\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n while (this.eat(match)){}\n return this.pos > start\n };\n StringStream.prototype.eatSpace = function () {\n var start = this.pos;\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this.pos; }\n return this.pos > start\n };\n StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n if (found > -1) {this.pos = found; return true}\n };\n StringStream.prototype.backUp = function (n) {this.pos -= n;};\n StringStream.prototype.column = function () {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) -\n (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n var substr = this.string.substr(this.pos, pattern.length);\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) { this.pos += pattern.length; }\n return true\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n if (match && match.index > 0) { return null }\n if (match && consume !== false) { this.pos += match[0].length; }\n return match\n }\n };\n StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n try { return inner() }\n finally { this.lineStart -= n; }\n };\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n)\n };\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos)\n };\n\n // Find the line object corresponding to the given line number.\n function getLine(doc, n) {\n n -= doc.first;\n if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n var chunk = doc;\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i], sz = child.chunkSize();\n if (n < sz) { chunk = child; break }\n n -= sz;\n }\n }\n return chunk.lines[n]\n }\n\n // Get the part of a document between two positions, as an array of\n // strings.\n function getBetween(doc, start, end) {\n var out = [], n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n if (n == end.line) { text = text.slice(0, end.ch); }\n if (n == start.line) { text = text.slice(start.ch); }\n out.push(text);\n ++n;\n });\n return out\n }\n // Get the lines between from and to, as array of strings.\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n return out\n }\n\n // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n }\n\n // Given a line object, find its line number by walking up through\n // its parent links.\n function lineNo(line) {\n if (line.parent == null) { return null }\n var cur = line.parent, no = indexOf(cur.lines, line);\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) { break }\n no += chunk.children[i].chunkSize();\n }\n }\n return no + cur.first\n }\n\n // Find the line at the given vertical position, using the height\n // information in the document tree.\n function lineAtHeight(chunk, h) {\n var n = chunk.first;\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1], ch = child.height;\n if (h < ch) { chunk = child; continue outer }\n h -= ch;\n n += child.chunkSize();\n }\n return n\n } while (!chunk.lines)\n var i = 0;\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i], lh = line.height;\n if (h < lh) { break }\n h -= lh;\n }\n return n + i\n }\n\n function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber))\n }\n\n // A Pos instance represents a position within the text.\n function Pos(line, ch, sticky) {\n if ( sticky === void 0 ) sticky = null;\n\n if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n }\n\n // Compare two positions, return 0 if they are the same, a negative\n // number when a is less, and a positive number otherwise.\n function cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\n function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\n function copyPos(x) {return Pos(x.line, x.ch)}\n function maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\n function minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\n function clipPos(doc, pos) {\n if (pos.line < doc.first) { return Pos(doc.first, 0) }\n var last = doc.first + doc.size - 1;\n if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n return clipToLen(pos, getLine(doc, pos.line).text.length)\n }\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n else if (ch < 0) { return Pos(pos.line, 0) }\n else { return pos }\n }\n function clipPosArray(doc, array) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n return out\n }\n\n var SavedContext = function(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function(doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n };\n\n Context.prototype.lookAhead = function (n) {\n var line = this.doc.getLine(this.line + n);\n if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; }\n return line\n };\n\n Context.prototype.baseToken = function (n) {\n if (!this.baseTokens) { return null }\n while (this.baseTokens[this.baseTokenPos] <= n)\n { this.baseTokenPos += 2; }\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n}\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n if (this.maxLookAhead > 0) { this.maxLookAhead--; }\n };\n\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext)\n { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) }\n else\n { return new Context(doc, copyState(doc.mode, saved), line) }\n };\n\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state\n };\n\n\n // Compute a style array (an array starting with a mode generation\n // -- for invalidation -- followed by pairs of end positions and\n // style strings), which is used to highlight the tokens on the\n // line.\n function highlightLine(cm, line, context, forceToEnd) {\n // A styles array always starts with a number identifying the\n // mode/overlays that it is based on (for easy invalidation).\n var st = [cm.state.modeGen], lineClasses = {};\n // Compute the base array of styles\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); },\n lineClasses, forceToEnd);\n var state = context.state;\n\n // Run overlays, adjust style array.\n var loop = function ( o ) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o], i = 1, at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i;\n // Ensure there's a token end at the current position, and that i points at it\n while (at < end) {\n var i_end = st[i];\n if (i_end > end)\n { st.splice(i, 1, end, st[i+1], i_end); }\n i += 2;\n at = Math.min(end, i_end);\n }\n if (!style) { return }\n if (overlay.opaque) {\n st.splice(start, i - start, end, \"overlay \" + style);\n i = start + 2;\n } else {\n for (; start < i; start += 2) {\n var cur = st[start+1];\n st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n\n for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\n\n return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n }\n\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n if (resetState) { context.state = resetState; }\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n if (result.classes) { line.styleClasses = result.classes; }\n else if (line.styleClasses) { line.styleClasses = null; }\n if (updateFrontier === cm.doc.highlightFrontier)\n { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); }\n }\n return line.styles\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc, display = cm.display;\n if (!doc.mode.startState) { return new Context(doc, true, n) }\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n\n doc.iter(start, n, function (line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n if (precise) { doc.modeFrontier = context.line; }\n return context\n }\n\n // Lightweight form of highlight -- proceed over this line and\n // update state, but don't save a style array. Used for lines that\n // aren't currently visible.\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n if (text == \"\") { callBlankLine(mode, context.state); }\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n\n function callBlankLine(mode, state) {\n if (mode.blankLine) { return mode.blankLine(state) }\n if (!mode.innerMode) { return }\n var inner = innerMode(mode, state);\n if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) { inner[0] = innerMode(mode, state).mode; }\n var style = mode.token(stream, state);\n if (stream.pos > stream.start) { return style }\n }\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n }\n\n var Token = function(stream, type, state) {\n this.start = stream.start; this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n };\n\n // Utility for getTokenAt and getLineTokens\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc, mode = doc.mode, style;\n pos = clipPos(doc, pos);\n var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context), tokens;\n if (asArray) { tokens = []; }\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); }\n }\n return asArray ? tokens : new Token(stream, style, context.state)\n }\n\n function extractLineClasses(type, output) {\n if (type) { for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n if (!lineClass) { break }\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n if (output[prop] == null)\n { output[prop] = lineClass[2]; }\n else if (!(new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\")).test(output[prop]))\n { output[prop] += \" \" + lineClass[2]; }\n } }\n return type\n }\n\n // Run the given mode's parser over a line, calling f for each token.\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n var curStart = 0, curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context), style;\n var inner = cm.options.addModeClass && [null];\n if (text == \"\") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); }\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n if (forceToEnd) { processLine(cm, text, context, stream.pos); }\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n if (inner) {\n var mName = inner[0].name;\n if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\n }\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5000);\n f(curStart, curStyle);\n }\n curStyle = style;\n }\n stream.start = stream.pos;\n }\n while (curStart < stream.pos) {\n // Webkit seems to refuse to render text nodes longer than 57444\n // characters, and returns inaccurate measurements in nodes\n // starting around 5000 chars.\n var pos = Math.min(stream.pos, curStart + 5000);\n f(pos, curStyle);\n curStart = pos;\n }\n }\n\n // Finds the line to start with when starting a parse. Tries to\n // find a line with a stateAfter, so that it can start with a\n // valid state. If that fails, it returns the line with the\n // smallest indentation, which tends to need the least context to\n // parse correctly.\n function findStartLine(cm, n, precise) {\n var minindent, minline, doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) { return doc.first }\n var line = getLine(doc, search - 1), after = line.stateAfter;\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))\n { return search }\n var indented = countColumn(line.text, null, cm.options.tabSize);\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n return minline\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n if (doc.highlightFrontier < n - 10) { return }\n var start = doc.first;\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter;\n // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break\n }\n }\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n }\n\n // Optimize some code when these features are not used.\n var sawReadOnlySpans = false, sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n }\n\n // TEXTMARKER SPANS\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from; this.to = to;\n }\n\n // Search an array of spans for a span matching the given marker.\n function getMarkedSpanFor(spans, marker) {\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.marker == marker) { return span }\n } }\n }\n\n // Remove a span from an array, returning undefined if no spans are\n // left (we don't store arrays for lines without spans).\n function removeMarkedSpan(spans, span) {\n var r;\n for (var i = 0; i < spans.length; ++i)\n { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n return r\n }\n\n // Add a span to a line.\n function addMarkedSpan(line, span, op) {\n var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = new WeakSet));\n if (inThisOp && line.markedSpans && inThisOp.has(line.markedSpans)) {\n line.markedSpans.push(span);\n } else {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n if (inThisOp) { inThisOp.add(line.markedSpans); }\n }\n span.marker.attachLine(line);\n }\n\n // Used for the algorithm that adjusts markers for a change in the\n // document. These functions cut an array of spans at a given\n // character position, returning an array of remaining chunks (or\n // undefined if nothing remains).\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n } }\n return nw\n }\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n span.to == null ? null : span.to - endCh));\n }\n } }\n return nw\n }\n\n // Given a change object, compute the new set of marker spans that\n // cover the line in which the change took place. Removes spans\n // entirely within the change, reconnects spans belonging to the\n // same marker that appear on both sides of the change, and cuts off\n // spans partially within the change. Returns an array of span\n // arrays with one element for each line in (after) the change.\n function stretchSpansOverChange(doc, change) {\n if (change.full) { return null }\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n if (!oldFirst && !oldLast) { return null }\n\n var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n // Get the spans that 'stick out' on both sides\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n // Next, merge those two ends\n var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n if (first) {\n // Fix up .to properties of first\n for (var i = 0; i < first.length; ++i) {\n var span = first[i];\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n if (!found) { span.to = startCh; }\n else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\n }\n }\n }\n if (last) {\n // Fix up .from in last (or move them into first in case of sameLine)\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\n var span$1 = last[i$1];\n if (span$1.to != null) { span$1.to += offset; }\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n if (!found$1) {\n span$1.from = offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n } else {\n span$1.from += offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n }\n }\n // Make sure we didn't create any zero-length spans\n if (first) { first = clearEmptySpans(first); }\n if (last && last != first) { last = clearEmptySpans(last); }\n\n var newMarkers = [first];\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2, gapMarkers;\n if (gap > 0 && first)\n { for (var i$2 = 0; i$2 < first.length; ++i$2)\n { if (first[i$2].to == null)\n { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\n for (var i$3 = 0; i$3 < gap; ++i$3)\n { newMarkers.push(gapMarkers); }\n newMarkers.push(last);\n }\n return newMarkers\n }\n\n // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n { spans.splice(i--, 1); }\n }\n if (!spans.length) { return null }\n return spans\n }\n\n // Used to 'clip' out readOnly ranges when making a change.\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n { (markers || (markers = [])).push(mark); }\n } }\n });\n if (!markers) { return null }\n var parts = [{from: from, to: to}];\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i], m = mk.find(0);\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n { newParts.push({from: p.from, to: m.from}); }\n if (dto > 0 || !mk.inclusiveRight && !dto)\n { newParts.push({from: m.to, to: p.to}); }\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n return parts\n }\n\n // Connect or disconnect spans from a line.\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.detachLine(line); }\n line.markedSpans = null;\n }\n function attachMarkedSpans(line, spans) {\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.attachLine(line); }\n line.markedSpans = spans;\n }\n\n // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\n function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n // Returns a number indicating which of two overlapping collapsed\n // spans is larger (and thus includes the other). Falls back to\n // comparing ids when the spans cover exactly the same range.\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n if (lenDiff != 0) { return lenDiff }\n var aPos = a.find(), bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n if (fromCmp) { return -fromCmp }\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n if (toCmp) { return toCmp }\n return b.id - a.id\n }\n\n // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n { found = sp.marker; }\n } }\n return found\n }\n function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\n function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; }\n } }\n return found\n }\n\n // Test whether there exists a collapsed span that partially\n // overlaps (covers the start or end, but not both) of a new span.\n // Such overlap is not allowed.\n function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n var line = getLine(doc, lineNo);\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n { return true }\n } }\n }\n\n // A visual line is a line as drawn on the screen. Folding, for\n // example, can cause multiple logical lines to appear on the same\n // visual line. This finds the start of the visual line that the\n // given line is part of (usually that is the line itself).\n function visualLine(line) {\n var merged;\n while (merged = collapsedSpanAtStart(line))\n { line = merged.find(-1, true).line; }\n return line\n }\n\n function visualLineEnd(line) {\n var merged;\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return line\n }\n\n // Returns an array of logical lines that continue the visual line\n // started by the argument, or undefined if there are no such lines.\n function visualLineContinued(line) {\n var merged, lines;\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line\n ;(lines || (lines = [])).push(line);\n }\n return lines\n }\n\n // Get the line number of the start of the visual line that the\n // given line number is part of.\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN), vis = visualLine(line);\n if (line == vis) { return lineN }\n return lineNo(vis)\n }\n\n // Get the line number of the start of the next visual line after\n // the given line.\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) { return lineN }\n var line = getLine(doc, lineN), merged;\n if (!lineIsHidden(doc, line)) { return lineN }\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return lineNo(line) + 1\n }\n\n // Compute whether a line is hidden. Lines count as hidden when they\n // are part of a visual line that starts with another line, or when\n // they are entirely covered by collapsed, non-widget span.\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n if (sp.from == null) { return true }\n if (sp.marker.widgetNode) { continue }\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n { return true }\n } }\n }\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n }\n if (span.marker.inclusiveRight && span.to == line.text.length)\n { return true }\n for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n (sp.to == null || sp.to != span.from) &&\n (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n lineIsHiddenInner(doc, line, sp)) { return true }\n }\n }\n\n // Find the height above the given line.\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n\n var h = 0, chunk = lineObj.parent;\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n if (line == lineObj) { break }\n else { h += line.height; }\n }\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n var cur = p.children[i$1];\n if (cur == chunk) { break }\n else { h += cur.height; }\n }\n }\n return h\n }\n\n // Compute the character length of a line, taking into account\n // collapsed ranges (see markText) that might hide parts, and join\n // other lines onto it.\n function lineLength(line) {\n if (line.height == 0) { return 0 }\n var len = line.text.length, merged, cur = line;\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n cur = line;\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n return len\n }\n\n // Find the longest line in the document.\n function findMaxLine(cm) {\n var d = cm.display, doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n }\n\n // LINE DATA STRUCTURE\n\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n var Line = function(text, markedSpans, estimateHeight) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight ? estimateHeight(this) : 1;\n };\n\n Line.prototype.lineNo = function () { return lineNo(this) };\n eventMixin(Line);\n\n // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n if (line.order != null) { line.order = null; }\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n }\n\n // Detach a line from the document tree and its markers.\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n }\n\n // Convert a style as returned by a mode (either null, or a string\n // containing one or more styles) to a CSS style. This is cached,\n // and also looks for line-wide styles.\n var styleToClassCache = {}, styleToClassCacheWithMode = {};\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) { return null }\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] ||\n (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n }\n\n // Render the DOM representation of the text of a line. Also builds\n // up a 'line map', which points at the DOM nodes that represent\n // specific stretches of text, and is used by the measuring code.\n // The returned object contains the DOM node, this map, and\n // information about line-wide styles that were set by the mode.\n function buildLineContent(cm, lineView) {\n // The padding-right forces the element to have a 'border', which\n // is needed on Webkit to be able to get line-level bounding\n // rectangles for it (in measureChar).\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n col: 0, pos: 0, cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")};\n lineView.measure = {};\n\n // Iterate over the logical lines that make up this visual line.\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n builder.pos = 0;\n builder.addToken = buildToken;\n // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n if (line.styleClasses) {\n if (line.styleClasses.bgClass)\n { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n if (line.styleClasses.textClass)\n { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n }\n\n // Ensure at least a single node is present, for measuring.\n if (builder.map.length == 0)\n { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n // Store the map and a cache object for the current logical line\n if (i == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n }\n\n // See issue #2901\n if (webkit) {\n var last = builder.content.lastChild;\n if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n { builder.content.className = \"cm-tab-wrap-hack\"; }\n }\n\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n if (builder.pre.className)\n { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\n\n return builder\n }\n\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token\n }\n\n // Build up the DOM representation for a single token, and add it to\n // the line map. Takes care to render special characters separately.\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) { return }\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars, mustWrap = false;\n var content;\n if (!special.test(text)) {\n builder.col += text.length;\n content = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text.length, content);\n if (ie && ie_version < 9) { mustWrap = true; }\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n else { content.appendChild(txt); }\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n if (!m) { break }\n pos += skipped + 1;\n var txt$1 = (void 0);\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n else { content.appendChild(txt$1); }\n builder.col += 1;\n }\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n if (style || startStyle || endStyle || mustWrap || css || attributes) {\n var fullStyle = style || \"\";\n if (startStyle) { fullStyle += startStyle; }\n if (endStyle) { fullStyle += endStyle; }\n var token = elt(\"span\", [content], fullStyle, css);\n if (attributes) {\n for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\")\n { token.setAttribute(attr, attributes[attr]); } }\n }\n return builder.content.appendChild(token)\n }\n builder.content.appendChild(content);\n }\n\n // Change some spaces to NBSP to prevent the browser from collapsing\n // trailing spaces at the end of a line when rendering text (issue #1362).\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) { return text }\n var spaceBefore = trailingBefore, result = \"\";\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n { ch = \"\\u00a0\"; }\n result += ch;\n spaceBefore = ch == \" \";\n }\n return result\n }\n\n // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos, end = start + text.length;\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = (void 0);\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n if (part.to > start && part.from <= start) { break }\n }\n if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, css, attributes) }\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n startStyle = null;\n text = text.slice(part.to - start);\n start = part.to;\n }\n }\n }\n\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget)\n { widget = builder.content.appendChild(document.createElement(\"span\")); }\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n builder.pos += size;\n builder.trailingSpace = false;\n }\n\n // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans, allText = line.text, at = 0;\n if (!spans) {\n for (var i$1 = 1; i$1 < styles.length; i$1+=2)\n { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\n return\n }\n\n var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes;\n for (;;) {\n if (nextChange == pos) { // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null; nextChange = Infinity;\n var foundBookmarks = [], endStyles = (void 0);\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j], m = sp.marker;\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n if (m.className) { spanStyle += \" \" + m.className; }\n if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n if (m.title) { (attributes || (attributes = {})).title = m.title; }\n if (m.attributes) {\n for (var attr in m.attributes)\n { (attributes || (attributes = {}))[attr] = m.attributes[attr]; }\n }\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n { collapsed = sp; }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n collapsed.marker, collapsed.from == null);\n if (collapsed.to == null) { return }\n if (collapsed.to == pos) { collapsed = false; }\n }\n }\n if (pos >= len) { break }\n\n var upto = Math.min(len, nextChange);\n while (true) {\n if (text) {\n var end = pos + text.length;\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n pos = end;\n spanStartStyle = \"\";\n }\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\n }\n }\n }\n\n\n // These objects are used to represent the visible (currently drawn)\n // part of the document. A LineView may correspond to multiple\n // logical lines, if those are connected by collapsed ranges.\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line;\n // Continuing lines, if any\n this.rest = visualLineContinued(line);\n // Number of logical lines in this visual line\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n }\n\n // Create a range of LineView objects for the given lines.\n function buildViewArray(cm, from, to) {\n var array = [], nextPos;\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n return array\n }\n\n var operationGroup = null;\n\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n\n function fireCallbacksForOps(group) {\n // Calls delayed callbacks and cursorActivity handlers until no\n // new ones appear\n var callbacks = group.delayedCallbacks, i = 0;\n do {\n for (; i < callbacks.length; i++)\n { callbacks[i].call(null); }\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n if (op.cursorActivityHandlers)\n { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n }\n } while (i < callbacks.length)\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n if (!group) { return }\n\n try { fireCallbacksForOps(group); }\n finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null;\n\n // Often, we want to signal events at a point where we are in the\n // middle of some work, but don't want the handler to start calling\n // other methods on the editor, which might be in an inconsistent\n // state or simply not expect any other events to happen.\n // signalLater looks whether there are any handlers, and schedules\n // them to be executed when the last operation ends, or, if no\n // operation is active, when a timeout fires.\n function signalLater(emitter, type /*, values...*/) {\n var arr = getHandlers(emitter, type);\n if (!arr.length) { return }\n var args = Array.prototype.slice.call(arguments, 2), list;\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n var loop = function ( i ) {\n list.push(function () { return arr[i].apply(null, args); });\n };\n\n for (var i = 0; i < arr.length; ++i)\n loop( i );\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n }\n\n // When an aspect of a line changes, a string is added to\n // lineView.changes. This updates the relevant part of the line's\n // DOM structure.\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n if (type == \"text\") { updateLineText(cm, lineView); }\n else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n else if (type == \"class\") { updateLineClasses(cm, lineView); }\n else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n }\n lineView.changes = null;\n }\n\n // Lines with gutter elements, widgets or a background class need to\n // be wrapped, and have the extra elements added to the wrapper div\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n if (lineView.text.parentNode)\n { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n lineView.node.appendChild(lineView.text);\n if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\n }\n return lineView.node\n }\n\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n if (cls) { cls += \" CodeMirror-linebackground\"; }\n if (lineView.background) {\n if (cls) { lineView.background.className = cls; }\n else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n } else if (cls) {\n var wrap = ensureLineWrapped(lineView);\n lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n }\n\n // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built\n }\n return buildLineContent(cm, lineView)\n }\n\n // Redraw the line's text. Interacts with the background and text\n // classes because the mode may output tokens that influence these\n // classes.\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n if (lineView.text == lineView.node) { lineView.node = built.pre; }\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n if (lineView.line.wrapClass)\n { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n else if (lineView.node != lineView.text)\n { lineView.node.className = \"\"; }\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + (dims.gutterTotalWidth) + \"px\"));\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\n }\n var markers = lineView.line.gutterMarkers;\n if (cm.options.lineNumbers || markers) {\n var wrap$1 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"));\n gutterWrap.setAttribute(\"aria-hidden\", \"true\");\n cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n if (lineView.line.gutterClass)\n { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n { lineView.lineNumber = gutterWrap.appendChild(\n elt(\"div\", lineNumberFor(cm.options, lineN),\n \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n if (markers) { for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n var id = cm.display.gutterSpecs[k].className, found = markers.hasOwnProperty(id) && markers[id];\n if (found)\n { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n } }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) { lineView.alignable = null; }\n var isWidget = classTest(\"CodeMirror-linewidget\");\n for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n next = node.nextSibling;\n if (isWidget.test(node.className)) { lineView.node.removeChild(node); }\n }\n insertLineWidgets(cm, lineView, dims);\n }\n\n // Build a line's DOM representation from scratch\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n if (built.bgClass) { lineView.bgClass = built.bgClass; }\n if (built.textClass) { lineView.textClass = built.textClass; }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node\n }\n\n // A lineView may contain multiple logical lines (when merged by\n // collapsed spans). The widgets for all of them need to be drawn.\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) { return }\n var wrap = ensureLineWrapped(lineView);\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n if (allowAbove && widget.above)\n { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n else\n { wrap.appendChild(node); }\n signalLater(widget, \"redraw\");\n }\n }\n\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n node.style.width = width + \"px\";\n }\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) { return widget.height }\n var cm = widget.doc.cm;\n if (!cm) { return 0 }\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n if (widget.coverGutter)\n { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n if (widget.noHScroll)\n { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n return widget.height = widget.node.parentNode.offsetHeight\n }\n\n // Return true when the given mouse event happened in a widget\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n (n.parentNode == display.sizer && n != display.mover))\n { return true }\n }\n }\n\n // POSITION MEASUREMENT\n\n function paddingTop(display) {return display.lineSpace.offsetTop}\n function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\n function paddingH(display) {\n if (display.cachedPaddingH) { return display.cachedPaddingH }\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n return data\n }\n\n function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n }\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n }\n\n // Ensure the lineView.wrapping.heights array is populated. This is\n // an array of bottom offsets for the lines that make up a drawn\n // line. When lineWrapping is on, there might be more than one\n // height.\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i], next = rects[i + 1];\n if (Math.abs(cur.bottom - next.bottom) > 2)\n { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n }\n }\n heights.push(rect.bottom - rect.top);\n }\n }\n\n // Find a line map (mapping character offsets to text nodes) and a\n // measurement cache for the given line number. (A line view might\n // contain multiple lines when collapsed ranges are present.)\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line)\n { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++)\n { if (lineView.rest[i] == line)\n { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n { if (lineNo(lineView.rest[i$1]) > lineN)\n { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\n }\n }\n\n // Render a line into the hidden node display.externalMeasured. Used\n // when measurement is needed for a line that's not in the viewport.\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view\n }\n\n // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n }\n\n // Find a line view that corresponds to the given line number.\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n { return cm.display.view[findViewIndex(cm, lineN)] }\n var ext = cm.display.externalMeasured;\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n { return ext }\n }\n\n // Measurement can be split in two steps, the set-up work that\n // applies to the whole line, and the measurement of the actual\n // character. Functions like coordsChar, that need to do a lot of\n // measurements in a row, can thus ensure that the set-up work is\n // only done once.\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n if (!view)\n { view = updateExternalMeasurement(cm, line); }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line, view: view, rect: null,\n map: info.map, cache: info.cache, before: info.before,\n hasHeights: false\n }\n }\n\n // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) { ch = -1; }\n var key = ch + (bias || \"\"), found;\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect)\n { prepared.rect = prepared.view.text.getBoundingClientRect(); }\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n found = measureCharInner(cm, prepared, ch, bias);\n if (!found.bogus) { prepared.cache[key] = found; }\n }\n return {left: found.left, right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom}\n }\n\n var nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\n function nodeAndOffsetInLineMap(map, ch, bias) {\n var node, start, end, collapse, mStart, mEnd;\n // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n for (var i = 0; i < map.length; i += 3) {\n mStart = map[i];\n mEnd = map[i + 1];\n if (ch < mStart) {\n start = 0; end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n if (ch >= mEnd) { collapse = \"right\"; }\n }\n if (start != null) {\n node = map[i + 2];\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n { collapse = bias; }\n if (bias == \"left\" && start == 0)\n { while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n node = map[(i -= 3) + 2];\n collapse = \"left\";\n } }\n if (bias == \"right\" && start == mEnd - mStart)\n { while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n node = map[(i += 3) + 2];\n collapse = \"right\";\n } }\n break\n }\n }\n return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) { break }\n } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) { break }\n } }\n return rect\n }\n\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n var rect;\n if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n { rect = node.parentNode.getBoundingClientRect(); }\n else\n { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\n if (rect.left || rect.right || start == 0) { break }\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n } else { // If it is a widget, simply get the box for the whole widget.\n if (start > 0) { collapse = bias = \"right\"; }\n var rects;\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n { rect = rects[bias == \"right\" ? rects.length - 1 : 0]; }\n else\n { rect = node.getBoundingClientRect(); }\n }\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n if (rSpan)\n { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n else\n { rect = nullRect; }\n }\n\n var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n for (; i < heights.length - 1; i++)\n { if (mid < heights[i]) { break } }\n var top = i ? heights[i - 1] : 0, bot = heights[i];\n var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top, bottom: bot};\n if (!rect.left && !rect.right) { result.bogus = true; }\n if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n return result\n }\n\n // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null ||\n screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n { return rect }\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {left: rect.left * scaleX, right: rect.right * scaleX,\n top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { lineView.measure.caches[i] = {}; } }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n for (var i = 0; i < cm.display.view.length; i++)\n { clearLineMeasurementCacheFor(cm.display.view[i]); }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\n cm.display.lineNumChars = null;\n }\n\n function pageScrollX(doc) {\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n // which causes page_Offset and bounding client rects to use\n // different reference viewports and invalidate our calculations.\n if (chrome && android) { return -(doc.body.getBoundingClientRect().left - parseInt(getComputedStyle(doc.body).marginLeft)) }\n return doc.defaultView.pageXOffset || (doc.documentElement || doc.body).scrollLeft\n }\n function pageScrollY(doc) {\n if (chrome && android) { return -(doc.body.getBoundingClientRect().top - parseInt(getComputedStyle(doc.body).marginTop)) }\n return doc.defaultView.pageYOffset || (doc.documentElement || doc.body).scrollTop\n }\n\n function widgetTopHeight(lineObj) {\n var ref = visualLine(lineObj);\n var widgets = ref.widgets;\n var height = 0;\n if (widgets) { for (var i = 0; i < widgets.length; ++i) { if (widgets[i].above)\n { height += widgetHeight(widgets[i]); } } }\n return height\n }\n\n // Converts a {top, bottom, left, right} box from line-local\n // coordinates into another coordinate system. Context may be one of\n // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n // or \"page\".\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height; rect.bottom += height;\n }\n if (context == \"line\") { return rect }\n if (!context) { context = \"local\"; }\n var yOff = heightAtLine(lineObj);\n if (context == \"local\") { yOff += paddingTop(cm.display); }\n else { yOff -= cm.display.viewOffset; }\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY(doc(cm)));\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX(doc(cm)));\n rect.left += xOff; rect.right += xOff;\n }\n rect.top += yOff; rect.bottom += yOff;\n return rect\n }\n\n // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") { return coords }\n var left = coords.left, top = coords.top;\n // First move into \"page\" coordinate system\n if (context == \"page\") {\n left -= pageScrollX(doc(cm));\n top -= pageScrollY(doc(cm));\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n }\n\n function charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n }\n\n // Returns a box for a given cursor position, which may have an\n // 'other' property containing the position of the secondary cursor\n // on a bidi boundary.\n // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n // and after `char - 1` in writing order of `char - 1`\n // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n // and before `char` in writing order of `char`\n // Examples (upper-case letters are RTL, lower-case are LTR):\n // Pos(0, 1, ...)\n // before after\n // ab a|b a|b\n // aB a|B aB|\n // Ab |Ab A|b\n // AB B|A B|A\n // Every position after the last character on a line is considered to stick\n // to the last character on the line.\n function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n if (right) { m.left = m.right; } else { m.right = m.left; }\n return intoCoordSystem(cm, lineObj, m, context)\n }\n var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos], right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert)\n }\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n return val\n }\n\n // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = clipPos(cm.doc, pos);\n if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n var lineObj = getLine(cm.doc, pos.line);\n var top = heightAtLine(lineObj) + paddingTop(cm.display);\n return {left: left, right: left, top: top, bottom: top + lineObj.height}\n }\n\n // Positions returned by coordsChar contain some extra information.\n // xRel is the relative x position of the input coordinates compared\n // to the found position (so xRel > 0 means the coordinates are to\n // the right of the character position, for example). When outside\n // is true, that means the coordinates lie outside the line's\n // vertical range.\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n if (outside) { pos.outside = outside; }\n return pos\n }\n\n // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n function coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n if (y < 0) { return PosWithInfo(doc.first, 0, null, -1, -1) }\n var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n if (lineN > last)\n { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1) }\n if (x < 0) { x = 0; }\n\n var lineObj = getLine(doc, lineN);\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n if (!collapsed) { return found }\n var rangeEnd = collapsed.find(1);\n if (rangeEnd.line == lineN) { return rangeEnd }\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0);\n end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end);\n return {begin: begin, end: end}\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n }\n\n // Returns true if the given side of a box is after the given\n // coordinates, in top-to-bottom, left-to-right order.\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x\n }\n\n function coordsCharInner(cm, lineObj, lineNo, x, y) {\n // Move y into line-local coordinate space\n y -= heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n var widgetHeight = widgetTopHeight(lineObj);\n var begin = 0, end = lineObj.text.length, ltr = true;\n\n var order = getOrder(lineObj, cm.doc.direction);\n // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)\n (cm, lineObj, lineNo, preparedMeasure, order, x, y);\n ltr = part.level != 1;\n // The awkward -1 offsets are needed because findFirst (called\n // on these below) will treat its first bound as inclusive,\n // second as exclusive, but we want to actually address the\n // characters in the part's range\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n }\n\n // A binary search to find the first character whose bounding box\n // starts after the coordinates. If we run across any whose box wrap\n // the coordinates, store that.\n var chAround = null, boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight; box.bottom += widgetHeight;\n if (!boxIsAfter(box, x, y, false)) { return false }\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n return true\n }, begin, end);\n\n var baseX, sticky, outside = false;\n // If a box around the coordinates was found, use that\n if (boxAround) {\n // Distinguish coordinates nearer to the left or right side of the box\n var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n // (Adjust for extended bound, if necessary.)\n if (!ltr && (ch == end || ch == begin)) { ch++; }\n // To determine which side to associate with, get the box to the\n // left of the character and compare it's vertical position to the\n // coordinates\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" :\n (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y) == ltr ?\n \"after\" : \"before\";\n // Now get accurate coordinates for this place, in order to get a\n // base X position\n var coords = cursorCoords(cm, Pos(lineNo, ch, sticky), \"line\", lineObj, preparedMeasure);\n baseX = coords.left;\n outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo, ch, sticky, outside, x - baseX)\n }\n\n function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) {\n // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n // situation, we can take this ordering to correspond to the visual\n // ordering. This finds the first part whose end is after the given\n // coordinates.\n var index = findFirst(function (i) {\n var part = order[i], ltr = part.level != 1;\n return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"),\n \"line\", lineObj, preparedMeasure), x, y, true)\n }, 0, order.length - 1);\n var part = order[index];\n // If this isn't the first part, the part's start is also after\n // the coordinates, and the coordinates aren't on the same line as\n // that start, move one part back.\n if (index > 0) {\n var ltr = part.level != 1;\n var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"),\n \"line\", lineObj, preparedMeasure);\n if (boxIsAfter(start, x, y, true) && start.top > y)\n { part = order[index - 1]; }\n }\n return part\n }\n\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n // In a wrapped line, rtl text on wrapping boundaries can do things\n // that don't correspond to the ordering in our `order` array at\n // all, so a binary search doesn't work, and we want to return a\n // part that only spans one line so that the binary search in\n // coordsCharInner is safe. As such, we first find the extent of the\n // wrapped line, and then do a flat search in which we discard any\n // spans that aren't on the line.\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n if (/\\s/.test(lineObj.text.charAt(end - 1))) { end--; }\n var part = null, closestDist = null;\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n if (p.from >= end || p.to <= begin) { continue }\n var ltr = p.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;\n // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n if (!part) { part = order[order.length - 1]; }\n // Clip the part to the wrapped line.\n if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; }\n if (part.to > end) { part = {from: part.from, to: end, level: part.level}; }\n return part\n }\n\n var measureText;\n // Compute the default text height.\n function textHeight(display) {\n if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n if (measureText == null) {\n measureText = elt(\"pre\", null, \"CodeMirror-line-like\");\n // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n if (height > 3) { display.cachedTextHeight = height; }\n removeChildren(display.measure);\n return height || 1\n }\n\n // Compute the default character width.\n function charWidth(display) {\n if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n if (width > 2) { display.cachedCharWidth = width; }\n return width || 10\n }\n\n // Do a bulk-read of the DOM positions and sizes needed to draw the\n // view, so that we don't interleave reading and writing to the DOM.\n function getDimensions(cm) {\n var d = cm.display, left = {}, width = {};\n var gutterLeft = d.gutters.clientLeft;\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n var id = cm.display.gutterSpecs[i].className;\n left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[id] = n.clientWidth;\n }\n return {fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth}\n }\n\n // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n }\n\n // Returns a function that estimates the height of a line, to use as\n // first approximation until the line becomes visible (and is thus\n // properly measurable).\n function estimateHeight(cm) {\n var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function (line) {\n if (lineIsHidden(cm.doc, line)) { return 0 }\n\n var widgetsHeight = 0;\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\n } }\n\n if (wrapping)\n { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\n else\n { return widgetsHeight + th }\n }\n }\n\n function estimateLineHeights(cm) {\n var doc = cm.doc, est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n });\n }\n\n // Given a mouse event, find the corresponding position. If liberal\n // is false, it checks whether a gutter or scrollbar was clicked,\n // and returns null if it was. forRect is used by rectangular\n // selections, and tries to estimate a character position even for\n // coordinates beyond the right of the text.\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n var x, y, space = display.lineSpace.getBoundingClientRect();\n // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n try { x = e.clientX - space.left; y = e.clientY - space.top; }\n catch (e$1) { return null }\n var coords = coordsChar(cm, x, y), line;\n if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n return coords\n }\n\n // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) { return null }\n n -= cm.display.viewFrom;\n if (n < 0) { return null }\n var view = cm.display.view;\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n if (n < 0) { return i }\n }\n }\n\n // Updates the display.view data structure for a given change to the\n // document. From and to are in pre-change coordinates. Lendiff is\n // the amount of lines added or subtracted by the change. This is\n // used for changes that span multiple lines, or change the way\n // lines are divided into visual lines. regLineChange (below)\n // registers single-line changes.\n function regChange(cm, from, to, lendiff) {\n if (from == null) { from = cm.doc.first; }\n if (to == null) { to = cm.doc.first + cm.doc.size; }\n if (!lendiff) { lendiff = 0; }\n\n var display = cm.display;\n if (lendiff && to < display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers > from))\n { display.updateLineNumbers = from; }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) { // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n { resetView(cm); }\n } else if (to <= display.viewFrom) { // Change before\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) { // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) { // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else { // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index)\n .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n .concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n if (ext) {\n if (to < ext.lineN)\n { ext.lineN += lendiff; }\n else if (from < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n }\n }\n\n // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display, ext = cm.display.externalMeasured;\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n\n if (line < display.viewFrom || line >= display.viewTo) { return }\n var lineView = display.view[findViewIndex(cm, line)];\n if (lineView.node == null) { return }\n var arr = lineView.changes || (lineView.changes = []);\n if (indexOf(arr, type) == -1) { arr.push(type); }\n }\n\n // Clear the view.\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n { return {index: index, lineN: newN} }\n var n = cm.display.viewFrom;\n for (var i = 0; i < index; i++)\n { n += view[i].size; }\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) { return null }\n diff = (n + view[index].size) - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n oldN += diff; newN += diff;\n }\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n return {index: index, lineN: newN}\n }\n\n // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n function adjustView(cm, from, to) {\n var display = cm.display, view = display.view;\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from)\n { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\n else if (display.viewFrom < from)\n { display.view = display.view.slice(findViewIndex(cm, from)); }\n display.viewFrom = from;\n if (display.viewTo < to)\n { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\n else if (display.viewTo > to)\n { display.view = display.view.slice(0, findViewIndex(cm, to)); }\n }\n display.viewTo = to;\n }\n\n // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n function countDirtyView(cm) {\n var view = cm.display.view, dirty = 0;\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n }\n return dirty\n }\n\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n\n function prepareSelection(cm, primary) {\n if ( primary === void 0 ) primary = true;\n\n var doc = cm.doc, result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n\n var customCursor = cm.options.$customCursor;\n if (customCursor) { primary = true; }\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) { continue }\n var range = doc.sel.ranges[i];\n if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) { continue }\n var collapsed = range.empty();\n if (customCursor) {\n var head = customCursor(cm, range);\n if (head) { drawSelectionCursor(cm, head, curFragment); }\n } else if (collapsed || cm.options.showCursorWhenSelecting) {\n drawSelectionCursor(cm, range.head, curFragment);\n }\n if (!collapsed)\n { drawSelectionRange(cm, range, selFragment); }\n }\n return result\n }\n\n // Draws a cursor for the given range\n function drawSelectionCursor(cm, head, output) {\n var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n if (/\\bcm-fat-cursor\\b/.test(cm.getWrapperElement().className)) {\n var charPos = charCoords(cm, head, \"div\", null, null);\n var width = charPos.right - charPos.left;\n cursor.style.width = (width > 0 ? width : cm.defaultCharWidth()) + \"px\";\n }\n\n if (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n }\n }\n\n function cmpCoords(a, b) { return a.top - b.top || a.left - b.left }\n\n // Draws the given range as a highlighted selection\n function drawSelectionRange(cm, range, output) {\n var display = cm.display, doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display), leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n\n function add(left, top, width, bottom) {\n if (top < 0) { top = 0; }\n top = Math.round(top);\n bottom = Math.round(bottom);\n fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", (\"position: absolute; left: \" + left + \"px;\\n top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top) + \"px\")));\n }\n\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n function coords(ch, bias) {\n return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n }\n\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop = (dir == \"ltr\") == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop)[prop]\n }\n\n var order = getOrder(lineObj, doc.direction);\n iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n\n var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen;\n var first = i == 0, last = !order || i == order.length - 1;\n if (toPos.top - fromPos.top <= 3) { // Single line\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else { // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); }\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; }\n if (cmpCoords(toPos, start) < 0) { start = toPos; }\n if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; }\n if (cmpCoords(toPos, end) < 0) { end = toPos; }\n });\n return {start: start, end: end}\n }\n\n var sFrom = range.from(), sTo = range.to();\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n if (leftEnd.bottom < rightStart.top)\n { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n }\n\n output.appendChild(fragment);\n }\n\n // Cursor-blinking\n function restartBlink(cm) {\n if (!cm.state.focused) { return }\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n if (cm.options.cursorBlinkRate > 0)\n { display.blinker = setInterval(function () {\n if (!cm.hasFocus()) { onBlur(cm); }\n display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n }, cm.options.cursorBlinkRate); }\n else if (cm.options.cursorBlinkRate < 0)\n { display.cursorDiv.style.visibility = \"hidden\"; }\n }\n\n function ensureFocus(cm) {\n if (!cm.hasFocus()) {\n cm.display.input.focus();\n if (!cm.state.focused) { onFocus(cm); }\n }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n if (cm.state.focused) { onBlur(cm); }\n } }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent && !cm.state.draggingText) { cm.state.delayingBlurEvent = false; }\n\n if (cm.options.readOnly == \"nocursor\") { return }\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\");\n // This test prevents this from firing when a context\n // menu is closed (since the input reset would kill the\n // select-all detection hack)\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n }\n cm.display.input.receivedFocus();\n }\n restartBlink(cm);\n }\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) { return }\n\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n clearInterval(cm.display.blinker);\n setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n }\n\n // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top);\n var oldHeight = display.lineDiv.getBoundingClientRect().top;\n var mustScroll = 0;\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i], wrapping = cm.options.lineWrapping;\n var height = (void 0), width = 0;\n if (cur.hidden) { continue }\n oldHeight += cur.line.height;\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top;\n // Check that lines don't extend past the right of the current\n // editor width\n if (!wrapping && cur.text.firstChild)\n { width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1; }\n }\n var diff = cur.line.height - height;\n if (diff > .005 || diff < -.005) {\n if (oldHeight < viewTop) { mustScroll -= diff; }\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n { updateWidgetHeight(cur.rest[j]); } }\n }\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n if (Math.abs(mustScroll) > 2) { display.scroller.scrollTop += mustScroll; }\n }\n\n // Read and store the height of line widgets associated with the\n // given line.\n function updateWidgetHeight(line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i], parent = w.node.parentNode;\n if (parent) { w.height = parent.offsetHeight; }\n } }\n }\n\n // Compute the lines that are visible in a given viewport (defaults\n // the current scroll position). viewport may contain top,\n // height, and ensure (see op.scrollToPos) properties.\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n if (ensureFrom < from) {\n from = ensureFrom;\n to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n return {from: from, to: Math.max(to, from + 1)}\n }\n\n // SCROLLING THINGS INTO VIEW\n\n // If an editor sits on the top or bottom of the window, partially\n // scrolled out of view, this ensures that the cursor is visible.\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n var doc = display.wrapper.ownerDocument;\n if (rect.top + box.top < 0) { doScroll = true; }\n else if (rect.bottom + box.top > (doc.defaultView.innerHeight || doc.documentElement.clientHeight)) { doScroll = false; }\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200b\", null, (\"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + (rect.left) + \"px; width: \" + (Math.max(2, rect.right - rect.left)) + \"px;\"));\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n }\n\n // Scroll a given position into view (immediately), verifying that\n // it actually became visible (as line heights are accurately\n // measured, the position of something may 'drift' during drawing).\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) { margin = 0; }\n var rect;\n if (!cm.options.lineWrapping && pos == end) {\n // Set pos and end to the cursor positions around the character pos sticks to\n // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n }\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n var coords = cursorCoords(cm, pos);\n var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n rect = {left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n }\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n }\n if (!changed) { break }\n }\n return rect\n }\n\n // Scroll a given set of coordinates into view (immediately).\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); }\n if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n }\n\n // Calculate a new scroll position needed to scroll the given\n // rectangle into view. Returns an object with scrollTop and\n // scrollLeft properties. When these are undefined, the\n // vertical/horizontal position does not need to be adjusted.\n function calculateScrollPos(cm, rect) {\n var display = cm.display, snapMargin = textHeight(cm.display);\n if (rect.top < 0) { rect.top = 0; }\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm), result = {};\n if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n if (newTop != screentop) { result.scrollTop = newTop; }\n }\n\n var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n var screenw = displayWidth(cm) - display.gutters.offsetWidth;\n var tooWide = rect.right - rect.left > screenw;\n if (tooWide) { rect.right = rect.left + screenw; }\n if (rect.left < 10)\n { result.scrollLeft = 0; }\n else if (rect.left < screenleft)\n { result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10)); }\n else if (rect.right > screenw + screenleft - 3)\n { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\n return result\n }\n\n // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n function addToScrollTop(cm, top) {\n if (top == null) { return }\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n }\n\n // Make sure that at the end of the operation the current cursor is\n // shown.\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin};\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) { resolveScrollToPos(cm); }\n if (x != null) { cm.curOp.scrollLeft = x; }\n if (y != null) { cm.curOp.scrollTop = y; }\n }\n\n function scrollToRange(cm, range) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range;\n }\n\n // When an operation has its scrollToPos property set, and another\n // scroll action is applied before the end of the operation, this\n // 'simulates' scrolling that position into view in a cheap way, so\n // that the effect of intermediate scroll commands is not ignored.\n function resolveScrollToPos(cm) {\n var range = cm.curOp.scrollToPos;\n if (range) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to);\n scrollToCoordsRange(cm, from, to, range.margin);\n }\n }\n\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n }\n\n // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n setScrollTop(cm, val, true);\n if (gecko) { updateDisplaySimple(cm); }\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n if (cm.display.scroller.scrollTop == val && !forceScroll) { return }\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n }\n\n // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return }\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n cm.display.scrollbars.setScrollLeft(val);\n }\n\n // SCROLLBARS\n\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n function measureForScrollbars(cm) {\n var d = cm.display, gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n }\n }\n\n var NativeScrollbars = function(place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert); place(horiz);\n\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n });\n\n this.checkedZeroWidth = false;\n // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\n };\n\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n // A bug in IE8 can cause this value to be negative, so guard it.\n this.vert.firstChild.style.height =\n Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.scrollTop = 0;\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width =\n Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) { this.zeroWidthHack(); }\n this.checkedZeroWidth = true;\n }\n\n return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\n };\n\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.visibility = this.vert.style.visibility = \"hidden\";\n this.disableHoriz = new Delayed;\n this.disableVert = new Delayed;\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.visibility = \"\";\n function maybeDisable() {\n // To find out whether the scrollbar is still visible, we\n // check whether the element under the pixel in the bottom\n // right corner of the scrollbar box is the scrollbar box\n // itself (when the bar is still visible) or its filler child\n // (when the bar is hidden). If it is still visible, we keep\n // it enabled, if it's hidden, we disable pointer events.\n var box = bar.getBoundingClientRect();\n var elt = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n if (elt != bar) { bar.style.visibility = \"hidden\"; }\n else { delay.set(1000, maybeDisable); }\n }\n delay.set(1000, maybeDisable);\n };\n\n NativeScrollbars.prototype.clear = function () {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n\n var NullScrollbars = function () {};\n\n NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\n NullScrollbars.prototype.setScrollLeft = function () {};\n NullScrollbars.prototype.setScrollTop = function () {};\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) { measure = measureForScrollbars(cm); }\n var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n { updateHeightsInViewport(cm); }\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n }\n }\n\n // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else { d.scrollbarFiller.style.display = \"\"; }\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else { d.gutterFiller.style.display = \"\"; }\n }\n\n var scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n if (cm.display.scrollbars.addClass)\n { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n // Prevent clicks in the scrollbars from killing focus\n on(node, \"mousedown\", function () {\n if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n else { updateScrollTop(cm, pos); }\n }, cm);\n if (cm.display.scrollbars.addClass)\n { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n // Operations are used to wrap a series of changes to the editor\n // state in such a way that each change won't have to update the\n // cursor and display (which would be awkward, slow, and\n // error-prone). Instead, display updates are batched and then all\n // combined and executed at once.\n\n var nextOpId = 0;\n // Start a new operation.\n function startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false, // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height, // Used to detect need to update scrollbar\n forceUpdate: false, // Used to force a redraw\n updateInput: 0, // Whether to reset the input textarea\n typing: false, // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null, // Accumulated changes, for firing change events\n cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n selectionChanged: false, // Whether the selection needs to be redrawn\n updateMaxLine: false, // Set when the widest line needs to be determined anew\n scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null, // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId, // Unique ID\n markArrays: null // Used by addMarkedSpan\n };\n pushOperation(cm.curOp);\n }\n\n // Finish an operation, updating the display and signalling delayed events\n function endOperation(cm) {\n var op = cm.curOp;\n if (op) { finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++)\n { group.ops[i].cm.curOp = null; }\n endOperations(group);\n }); }\n }\n\n // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n function endOperations(group) {\n var ops = group.ops;\n for (var i = 0; i < ops.length; i++) // Read DOM\n { endOperation_R1(ops[i]); }\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n { endOperation_W1(ops[i$1]); }\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n { endOperation_R2(ops[i$2]); }\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n { endOperation_W2(ops[i$3]); }\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n { endOperation_finish(ops[i$4]); }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm, display = cm.display;\n maybeClipScrollbars(cm);\n if (op.updateMaxLine) { findMaxLine(cm); }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n op.scrollToPos.to.line >= display.viewTo) ||\n display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate &&\n new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n }\n\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n\n function endOperation_R2(op) {\n var cm = op.cm, display = cm.display;\n if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n op.barMeasure = measureForScrollbars(cm);\n\n // If the max line changed since it was last measured, measure it,\n // and ensure the document's width matches it.\n // updateDisplay_W2 will use these properties to do the actual resizing\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth =\n Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n\n if (op.updatedDisplay || op.selectionChanged)\n { op.preparedSelection = display.input.prepareSelection(); }\n }\n\n function endOperation_W2(op) {\n var cm = op.cm;\n\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n if (op.maxScrollLeft < cm.doc.scrollLeft)\n { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt(root(cm));\n if (op.preparedSelection)\n { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n if (op.updatedDisplay || op.startHeight != cm.doc.height)\n { updateScrollbars(cm, op.barMeasure); }\n if (op.updatedDisplay)\n { setDocumentHeight(cm, op.barMeasure); }\n\n if (op.selectionChanged) { restartBlink(cm); }\n\n if (cm.state.focused && op.updateInput)\n { cm.display.input.reset(op.typing); }\n if (takeFocus) { ensureFocus(op.cm); }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm, display = cm.display, doc = cm.doc;\n\n if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n // Abort mouse wheel delta measurement, when scrolling explicitly\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n { display.wheelStartX = display.wheelStartY = null; }\n\n // Propagate the scroll position to the actual DOM scroller\n if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); }\n\n if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); }\n // If we need to scroll a specific position into view, do so.\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n }\n\n // Fire events for markers that are hidden/unidden by editing or\n // undoing\n var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n if (hidden) { for (var i = 0; i < hidden.length; ++i)\n { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n if (display.wrapper.offsetHeight)\n { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n // Fire change events, and delayed event handlers\n if (op.changeObjs)\n { signal(cm, \"changes\", cm, op.changeObjs); }\n if (op.update)\n { op.update.finish(); }\n }\n\n // Run the given function in an operation\n function runInOp(cm, f) {\n if (cm.curOp) { return f() }\n startOperation(cm);\n try { return f() }\n finally { endOperation(cm); }\n }\n // Wraps a function in an operation. Returns the wrapped function.\n function operation(cm, f) {\n return function() {\n if (cm.curOp) { return f.apply(cm, arguments) }\n startOperation(cm);\n try { return f.apply(cm, arguments) }\n finally { endOperation(cm); }\n }\n }\n // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n function methodOp(f) {\n return function() {\n if (this.curOp) { return f.apply(this, arguments) }\n startOperation(this);\n try { return f.apply(this, arguments) }\n finally { endOperation(this); }\n }\n }\n function docMethodOp(f) {\n return function() {\n var cm = this.cm;\n if (!cm || cm.curOp) { return f.apply(this, arguments) }\n startOperation(cm);\n try { return f.apply(this, arguments) }\n finally { endOperation(cm); }\n }\n }\n\n // HIGHLIGHT WORKER\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo)\n { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\n }\n\n function highlightWorker(cm) {\n var doc = cm.doc;\n if (doc.highlightFrontier >= cm.display.viewTo) { return }\n var end = +new Date + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) { // Visible\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n if (resetState) { context.state = resetState; }\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses, newCls = highlighted.classes;\n if (newCls) { line.styleClasses = newCls; }\n else if (oldCls) { line.styleClasses = null; }\n var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n if (ischange) { changedLines.push(context.line); }\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength)\n { processLine(cm, line.text, context); }\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n if (+new Date > end) {\n startWorker(cm, cm.options.workDelay);\n return true\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n if (changedLines.length) { runInOp(cm, function () {\n for (var i = 0; i < changedLines.length; i++)\n { regLineChange(cm, changedLines[i], \"text\"); }\n }); }\n }\n\n // DISPLAY DRAWING\n\n var DisplayUpdate = function(cm, viewport, force) {\n var display = cm.display;\n\n this.viewport = viewport;\n // Store some values that we'll need later (but don't want to force a relayout for)\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n };\n\n DisplayUpdate.prototype.signal = function (emitter, type) {\n if (hasHandler(emitter, type))\n { this.events.push(arguments); }\n };\n DisplayUpdate.prototype.finish = function () {\n for (var i = 0; i < this.events.length; i++)\n { signal.apply(null, this.events[i]); }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) { return null }\n var active = activeElt(root(cm));\n if (!active || !contains(cm.display.lineDiv, active)) { return null }\n var result = {activeElt: active};\n if (window.getSelection) {\n var sel = win(cm).getSelection();\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n return result\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt(rootNode(snapshot.activeElt))) { return }\n snapshot.activeElt.focus();\n if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) &&\n snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var doc = snapshot.activeElt.ownerDocument;\n var sel = doc.defaultView.getSelection(), range = doc.createRange();\n range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n }\n\n // Does the actual updating of the line display. Bails out\n // (returning false) when there is nothing to be done and forced is\n // false.\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display, doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false\n }\n\n // Bail out if the visible area is already rendered and nothing changed.\n if (!update.force &&\n update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n display.renderedView == display.view && countDirtyView(cm) == 0)\n { return false }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n }\n\n // Compute a suitable new viewport (from & to)\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n\n var different = from != display.viewFrom || to != display.viewTo ||\n display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n\n display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n // Position the mover div to align with the current scroll position\n cm.display.mover.style.top = display.viewOffset + \"px\";\n\n var toUpdate = countDirtyView(cm);\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n { return false }\n\n // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n var selSnapshot = selectionSnapshot(cm);\n if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n display.renderedView = display.view;\n // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n restoreSelection(selSnapshot);\n\n // Prevent selection and cursors from interfering with the scroll\n // width and height.\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n\n display.updateLineNumbers = null;\n\n return true\n }\n\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\n\n for (var first = true;; first = false) {\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n // Clip forced viewport to actual scrollable area.\n if (viewport && viewport.top != null)\n { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n { break }\n } else if (first) {\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n }\n if (!updateDisplayIfNeeded(cm, update)) { break }\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.force = false;\n }\n\n update.signal(cm, \"update\", cm);\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n if (updateDisplayIfNeeded(cm, update)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.finish();\n }\n }\n\n // Sync the actual display DOM structure with display.view, removing\n // nodes for lines that are no longer in view, and creating the ones\n // that are not there yet, and updating the ones that are out of\n // date.\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display, lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv, cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling;\n // Works around a throw-scroll bug in OS X Webkit\n if (webkit && mac && cm.display.currentWheelTarget == node)\n { node.style.display = \"none\"; }\n else\n { node.parentNode.removeChild(node); }\n return next\n }\n\n var view = display.view, lineN = display.viewFrom;\n // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else { // Already drawn\n while (cur != lineView.node) { cur = rm(cur); }\n var updateNumber = lineNumbers && updateNumbersFrom != null &&\n updateNumbersFrom <= lineN && lineView.lineNumber;\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n while (cur) { cur = rm(cur); }\n }\n\n function updateGutterSpace(display) {\n var width = display.gutters.offsetWidth;\n display.sizer.style.marginLeft = width + \"px\";\n // Send an event to consumers responding to changes in gutter width.\n signalLater(display, \"gutterChanged\", display);\n }\n\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\";\n }\n\n // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n function alignHorizontally(cm) {\n var display = cm.display, view = display.view;\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter)\n { view[i].gutter.style.left = left; }\n if (view[i].gutterBackground)\n { view[i].gutterBackground.style.left = left; }\n }\n var align = view[i].alignable;\n if (align) { for (var j = 0; j < align.length; j++)\n { align[j].style.left = left; } }\n } }\n if (cm.options.fixedGutter)\n { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n }\n\n // Used to ensure that the line number gutter is still the right\n // size for the current document size. Returns true when an update\n // is needed.\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) { return false }\n var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm.display);\n return true\n }\n return false\n }\n\n function getGutters(gutters, lineNumbers) {\n var result = [], sawLineNumbers = false;\n for (var i = 0; i < gutters.length; i++) {\n var name = gutters[i], style = null;\n if (typeof name != \"string\") { style = name.style; name = name.className; }\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) { continue }\n else { sawLineNumbers = true; }\n }\n result.push({className: name, style: style});\n }\n if (lineNumbers && !sawLineNumbers) { result.push({className: \"CodeMirror-linenumbers\", style: null}); }\n return result\n }\n\n // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n function renderGutters(display) {\n var gutters = display.gutters, specs = display.gutterSpecs;\n removeChildren(gutters);\n display.lineGutter = null;\n for (var i = 0; i < specs.length; ++i) {\n var ref = specs[i];\n var className = ref.className;\n var style = ref.style;\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n if (style) { gElt.style.cssText = style; }\n if (className == \"CodeMirror-linenumbers\") {\n display.lineGutter = gElt;\n gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n }\n }\n gutters.style.display = specs.length ? \"\" : \"none\";\n updateGutterSpace(display);\n }\n\n function updateGutters(cm) {\n renderGutters(cm.display);\n regChange(cm);\n alignHorizontally(cm);\n }\n\n // The display handles the DOM integration, both for input reading\n // and content drawing. It holds references to DOM nodes and\n // display-related state.\n\n function Display(place, doc, input, options) {\n var d = this;\n this.input = input;\n\n // Covers bottom-right square when both scrollbars are present.\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n // Will contain the actual code, positioned to cover the viewport.\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n // Elements are added to these to represent selection and cursors.\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n // A visibility: hidden element used to find the size of things.\n d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n // When lines outside of the viewport are measured, they are drawn in this.\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n // Wraps everything that needs to exist inside the vertically-padded coordinate system\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n // Moved around its parent to cover visible view.\n d.mover = elt(\"div\", [lines], null, \"position: relative\");\n // Set to the height of the document, allowing scrolling.\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null;\n // Behavior of elts with overflow: auto and padding is\n // inconsistent across browsers. This is used to ensure the\n // scrollable area is big enough.\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n // Will contain the gutters, if any.\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null;\n // Actual scrollable element.\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\");\n // The element in which the editor lives.\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n // See #6982. FIXME remove when this has been fixed for a while in Chrome\n if (chrome && chrome_version >= 105) { d.wrapper.style.clipPath = \"inset(0px)\"; }\n\n // This attribute is respected by automatic translation systems such as Google Translate,\n // and may also be respected by tools used by human translators.\n d.wrapper.setAttribute('translate', 'no');\n\n // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n if (place) {\n if (place.appendChild) { place.appendChild(d.wrapper); }\n else { place(d.wrapper); }\n }\n\n // Current rendered range (may be bigger than the view window).\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first;\n // Information about the rendered lines.\n d.view = [];\n d.renderedView = null;\n // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n d.externalMeasured = null;\n // Empty space (in pixels) above the view\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false;\n\n // Used to only resize the line number gutter when necessary (when\n // the amount of lines crosses a boundary that makes its width change)\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n // Set to true when a non-horizontal-scrolling line widget is\n // added. As an optimization, line widget aligning is skipped when\n // this is false.\n d.alignWidgets = false;\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false;\n\n // Used for measuring wheel scrolling granularity\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n // True when shift is held down.\n d.shift = false;\n\n // Used to track whether anything happened since the context menu\n // was opened.\n d.selForContextMenu = null;\n\n d.activeTouch = null;\n\n d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n\n input.init(d);\n }\n\n // Since the delta values reported on mouse wheel events are\n // unstandardized between browsers and even browser versions, and\n // generally horribly unpredictable, this code starts by measuring\n // the scroll effect that the first few mouse wheel events have,\n // and, from that, detects the way it can convert deltas to pixel\n // offsets afterwards.\n //\n // The reason we want to know the amount a wheel event will scroll\n // is that it gives us a chance to update the display before the\n // actual scrolling happens, reducing flickering.\n\n var wheelSamples = 0, wheelPixelsPerUnit = null;\n // Fill in a browser-detected starting value on browsers where we\n // know one. These don't have to be accurate -- the result of them\n // being wrong would just be a slight flicker on the first wheel\n // scroll (if it is large enough).\n if (ie) { wheelPixelsPerUnit = -.53; }\n else if (gecko) { wheelPixelsPerUnit = 15; }\n else if (chrome) { wheelPixelsPerUnit = -.7; }\n else if (safari) { wheelPixelsPerUnit = -1/3; }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n else if (dy == null) { dy = e.wheelDelta; }\n return {x: dx, y: dy}\n }\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta\n }\n\n function onScrollWheel(cm, e) {\n // On Chrome 102, viewport updates somehow stop wheel-based\n // scrolling. Turning off pointer events during the scroll seems\n // to avoid the issue.\n if (chrome && chrome_version == 102) {\n if (cm.display.chromeScrollHack == null) { cm.display.sizer.style.pointerEvents = \"none\"; }\n else { clearTimeout(cm.display.chromeScrollHack); }\n cm.display.chromeScrollHack = setTimeout(function () {\n cm.display.chromeScrollHack = null;\n cm.display.sizer.style.pointerEvents = \"\";\n }, 100);\n }\n var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n var pixelsPerUnit = wheelPixelsPerUnit;\n if (e.deltaMode === 0) {\n dx = e.deltaX;\n dy = e.deltaY;\n pixelsPerUnit = 1;\n }\n\n var display = cm.display, scroll = display.scroller;\n // Quit if there's nothing to scroll here\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n if (!(dx && canScrollX || dy && canScrollY)) { return }\n\n // Webkit browsers on OS X abort momentum scrolls when the target\n // of the scroll event is removed from the scrollable element.\n // This hack (see related code in patchDisplay) makes sure the\n // element is kept around.\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i = 0; i < view.length; i++) {\n if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer\n }\n }\n }\n }\n\n // On some browsers, horizontal scrolling will cause redraws to\n // happen before the gutter has been realigned, causing it to\n // wriggle around in a most unseemly way. When we have an\n // estimated pixels/delta value, we just handle horizontal\n // scrolling entirely here. It'll be slightly off from native, but\n // better than glitching out.\n if (dx && !gecko && !presto && pixelsPerUnit != null) {\n if (dy && canScrollY)\n { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * pixelsPerUnit)); }\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * pixelsPerUnit));\n // Only prevent default scrolling if vertical scrolling is\n // actually possible. Otherwise, it causes vertical scroll\n // jitter on OSX trackpads when deltaX is small and deltaY\n // is large (issue #3579)\n if (!dy || (dy && canScrollY))\n { e_preventDefault(e); }\n display.wheelStartX = null; // Abort measurement, if in progress\n return\n }\n\n // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n if (dy && pixelsPerUnit != null) {\n var pixels = dy * pixelsPerUnit;\n var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n updateDisplaySimple(cm, {top: top, bottom: bot});\n }\n\n if (wheelSamples < 20 && e.deltaMode !== 0) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx; display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) { return }\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n (movedX && display.wheelDX && movedX / display.wheelDX);\n display.wheelStartX = display.wheelStartY = null;\n if (!sample) { return }\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx; display.wheelDY += dy;\n }\n }\n }\n\n // Selection objects are immutable. A new one is created every time\n // the selection changes. A selection is one or more non-overlapping\n // (and non-touching) ranges, sorted, and an integer that indicates\n // which one is the primary selection (the one that's scrolled into\n // view, that getCursor returns, etc).\n var Selection = function(ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\n Selection.prototype.equals = function (other) {\n if (other == this) { return true }\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this.ranges[i], there = other.ranges[i];\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n }\n return true\n };\n\n Selection.prototype.deepCopy = function () {\n var out = [];\n for (var i = 0; i < this.ranges.length; i++)\n { out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); }\n return new Selection(out, this.primIndex)\n };\n\n Selection.prototype.somethingSelected = function () {\n for (var i = 0; i < this.ranges.length; i++)\n { if (!this.ranges[i].empty()) { return true } }\n return false\n };\n\n Selection.prototype.contains = function (pos, end) {\n if (!end) { end = pos; }\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this.ranges[i];\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n { return i }\n }\n return -1\n };\n\n var Range = function(anchor, head) {\n this.anchor = anchor; this.head = head;\n };\n\n Range.prototype.from = function () { return minPos(this.anchor, this.head) };\n Range.prototype.to = function () { return maxPos(this.anchor, this.head) };\n Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n primIndex = indexOf(ranges, prim);\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i], prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n if (i <= primIndex) { --primIndex; }\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n return new Selection(ranges, primIndex)\n }\n\n function simpleSelection(anchor, head) {\n return new Selection([new Range(anchor, head || anchor)], 0)\n }\n\n // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n function changeEnd(change) {\n if (!change.text) { return change.to }\n return Pos(change.from.line + change.text.length - 1,\n lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n }\n\n // Adjust a position to refer to the post-change position of the\n // same text, or the end of the change if the change covers it.\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) { return pos }\n if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n return Pos(line, ch)\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n var range = doc.sel.ranges[i];\n out.push(new Range(adjustForChange(range.anchor, change),\n adjustForChange(range.head, change)));\n }\n return normalizeSelection(doc.cm, out, doc.sel.primIndex)\n }\n\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line)\n { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\n else\n { return Pos(nw.line + (pos.line - old.line), pos.ch) }\n }\n\n // Used by replaceSelections to allow moving the selection to the\n // start or around the replaced test. Hint may be \"start\" or \"around\".\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n if (hint == \"around\") {\n var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n out[i] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i] = new Range(from, from);\n }\n }\n return new Selection(out, doc.sel.primIndex)\n }\n\n // Used to get the editor into a consistent state again when options change.\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n if (cm.curOp) { regChange(cm); }\n }\n\n // DOCUMENT DATA STRUCTURE\n\n // By default, updates that start and end at the beginning of a line\n // are treated specially, in order to make the association of line\n // widgets and marker elements with the text behave more intuitive.\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n }\n\n // Perform a change on the document data structure.\n function updateDoc(doc, change, markedSpans, estimateHeight) {\n function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight);\n signalLater(line, \"change\", line, change);\n }\n function linesFor(start, end) {\n var result = [];\n for (var i = start; i < end; ++i)\n { result.push(new Line(text[i], spansFor(i), estimateHeight)); }\n return result\n }\n\n var from = change.from, to = change.to, text = change.text;\n var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n // Adjust the line structure\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n // This is a whole-line replace. Treated specially to make\n // sure line objects move the way they are supposed to.\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n if (nlines) { doc.remove(from.line, nlines); }\n if (added.length) { doc.insert(from.line, added); }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n }\n\n // Call f for all linked documents.\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n if (rel.doc == skip) { continue }\n var shared = sharedHist && rel.sharedHist;\n if (sharedHistOnly && !shared) { continue }\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n } }\n }\n propagate(doc, null, true);\n }\n\n // Attach a document to an editor.\n function attachDoc(cm, doc) {\n if (doc.cm) { throw new Error(\"This document is already in use.\") }\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n cm.options.direction = doc.direction;\n if (!cm.options.lineWrapping) { findMaxLine(cm); }\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n\n function directionChanged(cm) {\n runInOp(cm, function () {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n\n function History(prev) {\n // Arrays of change events and selections. Doing something adds an\n // event to done and clears undo. Undoing moves events from done\n // to undone, redoing moves them in the other direction.\n this.done = []; this.undone = [];\n this.undoDepth = prev ? prev.undoDepth : Infinity;\n // Used to track when changes can be merged into a single undo\n // event\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null;\n // Used by the isClean() method\n this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1;\n }\n\n // Create a history change event from an updateDoc-style change\n // object.\n function historyChangeFromChange(doc, change) {\n var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n return histChange\n }\n\n // Pop all selection events off the end of a history array. Stop at\n // a change event.\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n if (last.ranges) { array.pop(); }\n else { break }\n }\n }\n\n // Find the top change event in the history. Pop off selection\n // events that are in the way.\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done)\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done)\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done)\n }\n }\n\n // Register a change in the history. Merges changes that are within\n // a single operation, or are close together with an origin that\n // allows merging (starting with \"+\") into a single event.\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date, cur;\n var last;\n\n if ((hist.lastOp == opId ||\n hist.lastOrigin == change.origin && change.origin &&\n ((change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) ||\n change.origin.charAt(0) == \"*\")) &&\n (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n } else {\n // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n if (!before || !before.ranges)\n { pushSelectionToHistory(doc.sel, hist.done); }\n cur = {changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation};\n hist.done.push(cur);\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n if (!hist.done[0].ranges) { hist.done.shift(); }\n }\n }\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n if (!last) { signal(doc, \"historyAdded\"); }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" ||\n ch == \"+\" &&\n prev.ranges.length == sel.ranges.length &&\n prev.somethingSelected() == sel.somethingSelected() &&\n new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n }\n\n // Called whenever the selection changes, sets the new selection as\n // the pending selection in the history, and pushes the old pending\n // selection into the 'done' array when it was significantly\n // different (in number of selected ranges, emptiness, or time).\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history, origin = options && options.origin;\n\n // A new event is started when the previous origin does not match\n // the current, or the origins don't allow matching. Origins\n // starting with * are always merged, those starting with + are\n // merged when similar and close together in time.\n if (opId == hist.lastSelOp ||\n (origin && hist.lastSelOrigin == origin &&\n (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n { hist.done[hist.done.length - 1] = sel; }\n else\n { pushSelectionToHistory(sel, hist.done); }\n\n hist.lastSelTime = +new Date;\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n if (options && options.clearRedo !== false)\n { clearSelectionEvents(hist.undone); }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n if (!(top && top.ranges && top.equals(sel)))\n { dest.push(sel); }\n }\n\n // Used to store marked span information in the history.\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id], n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans)\n { (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans; }\n ++n;\n });\n }\n\n // When un/re-doing restores text containing marked spans, those\n // that have been explicitly cleared should not be restored.\n function removeClearedSpans(spans) {\n if (!spans) { return null }\n var out;\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n else if (out) { out.push(spans[i]); }\n }\n return !out ? spans : out.length ? out : null\n }\n\n // Retrieve and filter the old marked spans stored in a change event.\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n if (!found) { return null }\n var nw = [];\n for (var i = 0; i < change.text.length; ++i)\n { nw.push(removeClearedSpans(found[i])); }\n return nw\n }\n\n // Used for un/re-doing changes from the history. Combines the\n // result of computing the existing spans with the set of spans that\n // existed in the history (so that deleting around a span and then\n // undoing brings back the span).\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n if (!old) { return stretched }\n if (!stretched) { return old }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i], stretchCur = stretched[i];\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n for (var k = 0; k < oldCur.length; ++k)\n { if (oldCur[k].marker == span.marker) { continue spans } }\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n return old\n }\n\n // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue\n }\n var changes = event.changes, newChanges = [];\n copy.push({changes: newChanges});\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j], m = (void 0);\n newChanges.push({from: change.from, to: change.to, text: change.text});\n if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop] = change[prop];\n delete change[prop];\n }\n } } }\n }\n }\n return copy\n }\n\n // The 'scroll' parameter given to many of these indicated whether\n // the new cursor position should be scrolled into view after\n // modifying the selection.\n\n // If shift is held or the extend flag is set, extends a range to\n // include a given position (and optionally a second position).\n // Otherwise, simply returns the range between the given positions.\n // Used for cursor motion and such.\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n if (posBefore != (cmp(other, anchor) < 0)) {\n anchor = head;\n head = other;\n } else if (posBefore != (cmp(head, other) < 0)) {\n head = other;\n }\n }\n return new Range(anchor, head)\n } else {\n return new Range(other || head, head)\n }\n }\n\n // Extend the primary selection range, discard the rest.\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); }\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n }\n\n // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n for (var i = 0; i < doc.sel.ranges.length; i++)\n { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n }\n\n // Updates a single range in the selection.\n function replaceOneSelection(doc, i, range, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i] = range;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n }\n\n // Reset the selection to a single range.\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n }\n\n // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function(ranges) {\n this.ranges = [];\n for (var i = 0; i < ranges.length; i++)\n { this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n clipPos(doc, ranges[i].head)); }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) }\n else { return sel }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done, last = lst(done);\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n }\n\n // Set a new selection.\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n { sel = filterSelectionChange(doc, sel, options); }\n\n var bias = options && options.bias ||\n (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption(\"readOnly\") != \"nocursor\")\n { ensureCursorVisible(doc.cm); }\n }\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) { return }\n\n doc.sel = sel;\n\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n signalLater(doc, \"cursorActivity\", doc);\n }\n\n // Verify that the selection does not partially select any atomic\n // marked ranges.\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n }\n\n // Return a selection that does not partially select any atomic\n // ranges.\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n var newHead = range.head == range.anchor ? newAnchor : skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) { out = sel.ranges.slice(0, i); }\n out[i] = new Range(newAnchor, newHead);\n }\n }\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel\n }\n\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i], m = sp.marker;\n\n // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n // is with selectLeft/Right\n var preventCursorLeft = (\"selectLeft\" in m) ? !m.selectLeft : m.inclusiveLeft;\n var preventCursorRight = (\"selectRight\" in m) ? !m.selectRight : m.inclusiveRight;\n\n if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n if (m.explicitlyCleared) {\n if (!line.markedSpans) { break }\n else {--i; continue}\n }\n }\n if (!m.atomic) { continue }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n if (dir < 0 ? preventCursorRight : preventCursorLeft)\n { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n { return skipAtomicInner(doc, near, pos, dir, mayClear) }\n }\n\n var far = m.find(dir < 0 ? -1 : 1);\n if (dir < 0 ? preventCursorLeft : preventCursorRight)\n { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n }\n } }\n return pos\n }\n\n // Ensure a given position is not inside an atomic range.\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0)\n }\n return found\n }\n\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\n else { return null }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n else { return null }\n } else {\n return new Pos(pos.line, pos.ch + dir)\n }\n }\n\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n }\n\n // UPDATING\n\n // Allow \"beforeChange\" event handlers to influence a change\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function () { return obj.canceled = true; }\n };\n if (update) { obj.update = function (from, to, text, origin) {\n if (from) { obj.from = clipPos(doc, from); }\n if (to) { obj.to = clipPos(doc, to); }\n if (text) { obj.text = text; }\n if (origin !== undefined) { obj.origin = origin; }\n }; }\n signal(doc, \"beforeChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n if (obj.canceled) {\n if (doc.cm) { doc.cm.curOp.updateInput = 2; }\n return null\n }\n return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n }\n\n // Apply a change to a document, and add it to the document's\n // history, and propagating it to all linked documents.\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n if (doc.cm.state.suppressEdits) { return }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n if (!change) { return }\n }\n\n // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n if (split) {\n for (var i = split.length - 1; i >= 0; --i)\n { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text, origin: change.origin}); }\n } else {\n makeChangeInner(doc, change);\n }\n }\n\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) { return }\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n }\n\n // Revert a change stored in a document's history.\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n if (suppress && !allowSelectionOnly) { return }\n\n var hist = doc.history, event, selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n var i = 0;\n for (; i < source.length; i++) {\n event = source[i];\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n { break }\n }\n if (i == source.length) { return }\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {clearRedo: false});\n return\n }\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return\n } else { break }\n }\n\n // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({changes: antiChanges, generation: hist.generation});\n hist.generation = event.generation || ++hist.maxGeneration;\n\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function ( i ) {\n var change = event.changes[i];\n change.origin = type;\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {}\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n var rebased = [];\n\n // Propagate to the linked documents\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n });\n };\n\n for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n var returned = loop( i$1 );\n\n if ( returned ) return returned.v;\n }\n }\n\n // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n function shiftDoc(doc, distance) {\n if (distance == 0) { return }\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n Pos(range.anchor.line + distance, range.anchor.ch),\n Pos(range.head.line + distance, range.head.ch)\n ); }), doc.sel.primIndex);\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n { regLineChange(doc.cm, l, \"gutter\"); }\n }\n }\n\n // More lower-level change function, handling only a single document\n // (not linked ones).\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp)\n { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\n\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return\n }\n if (change.from.line > doc.lastLine()) { return }\n\n // Clip the change to the size of this doc\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)], origin: change.origin};\n }\n var last = doc.lastLine();\n if (change.to.line > last) {\n change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]], origin: change.origin};\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n else { updateDoc(doc, change, spans); }\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n\n if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0)))\n { doc.cantEdit = false; }\n }\n\n // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n var recomputeMaxLength = false, checkWidthStart = from.line;\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function (line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true\n }\n });\n }\n\n if (doc.sel.contains(change.from, change.to) > -1)\n { signalCursorActivity(cm); }\n\n updateDoc(doc, change, spans, estimateHeight(cm));\n\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n var len = lineLength(line);\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n\n var lendiff = change.text.length - (to.line - from.line) - 1;\n // Remember that these lines changed, for updating the display\n if (change.full)\n { regChange(cm); }\n else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n { regLineChange(cm, from.line, \"text\"); }\n else\n { regChange(cm, from.line, to.line + 1, lendiff); }\n\n var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n if (changeHandler || changesHandler) {\n var obj = {\n from: from, to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n }\n cm.display.selForContextMenu = null;\n }\n\n function replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) { to = from; }\n if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); }\n if (typeof code == \"string\") { code = doc.splitLines(code); }\n makeChange(doc, {from: from, to: to, text: code, origin: origin});\n }\n\n // Rebasing/resetting history to deal with externally-sourced changes\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n }\n\n // Tries to rebase an array of history events given a change in the\n // document. If the change touches the same lines as the event, the\n // event, and everything 'behind' it, is discarded. If the change is\n // before the event, the event's positions are updated. Uses a\n // copy-on-write scheme for the positions, to avoid having to\n // reallocate them all on every rebase, but also avoid problems with\n // shared position objects being unsafely updated.\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i], ok = true;\n if (sub.ranges) {\n if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n continue\n }\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok = false;\n break\n }\n }\n if (!ok) {\n array.splice(0, i + 1);\n i = 0;\n }\n }\n }\n\n function rebaseHist(hist, change) {\n var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n }\n\n // Utility for applying a change to a line by handle or number,\n // returning the number and optionally registering the line as\n // changed.\n function changeLine(doc, handle, changeType, op) {\n var no = handle, line = handle;\n if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n else { no = lineNo(handle); }\n if (no == null) { return null }\n if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n return line\n }\n\n // The document is represented as a BTree consisting of leaves, with\n // chunk of lines in them, and branches, with up to ten leaves or\n // other branch nodes below them. The top node is always a branch\n // node, and is the document object itself (meaning it has\n // additional methods and properties).\n //\n // All nodes have parent links. The tree is used both to go from\n // line numbers to line objects, and to go from objects to numbers.\n // It also indexes by height, and is used to convert between height\n // and line object, and to find the total height of the document.\n //\n // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n function LeafChunk(lines) {\n this.lines = lines;\n this.parent = null;\n var height = 0;\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n height += lines[i].height;\n }\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function() { return this.lines.length },\n\n // Remove the n lines at offset 'at'.\n removeInner: function(at, n) {\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this.lines[i];\n this.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n this.lines.splice(at, n);\n },\n\n // Helper used to collapse a small branch into a single leaf.\n collapse: function(lines) {\n lines.push.apply(lines, this.lines);\n },\n\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function(at, lines, height) {\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n for (var i = 0; i < lines.length; ++i) { lines[i].parent = this; }\n },\n\n // Used to iterate over a part of the tree.\n iterN: function(at, n, op) {\n for (var e = at + n; at < e; ++at)\n { if (op(this.lines[at])) { return true } }\n }\n };\n\n function BranchChunk(children) {\n this.children = children;\n var size = 0, height = 0;\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize(); height += ch.height;\n ch.parent = this;\n }\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function() { return this.size },\n\n removeInner: function(at, n) {\n this.size -= n;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var rm = Math.min(n, sz - at), oldHeight = child.height;\n child.removeInner(at, rm);\n this.height -= oldHeight - child.height;\n if (sz == rm) { this.children.splice(i--, 1); child.parent = null; }\n if ((n -= rm) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n if (this.size - n < 25 &&\n (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n\n collapse: function(lines) {\n for (var i = 0; i < this.children.length; ++i) { this.children[i].collapse(lines); }\n },\n\n insertInner: function(at, lines, height) {\n this.size += lines.length;\n this.height += height;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at <= sz) {\n child.insertInner(at, lines, height);\n if (child.lines && child.lines.length > 50) {\n // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n var remaining = child.lines.length % 25 + 25;\n for (var pos = remaining; pos < child.lines.length;) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this.children.splice(++i, 0, leaf);\n leaf.parent = this;\n }\n child.lines = child.lines.slice(0, remaining);\n this.maybeSpill();\n }\n break\n }\n at -= sz;\n }\n },\n\n // When a node has grown, check whether it should be split.\n maybeSpill: function() {\n if (this.children.length <= 10) { return }\n var me = this;\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n if (!me.parent) { // Become the parent node\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n sibling.parent = me.parent;\n } while (me.children.length > 10)\n me.parent.maybeSpill();\n },\n\n iterN: function(at, n, op) {\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var used = Math.min(n, sz - at);\n if (child.iterN(at, used, op)) { return true }\n if ((n -= used) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n }\n };\n\n // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function(doc, node, options) {\n if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n { this[opt] = options[opt]; } } }\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n if (no == null || !ws) { return }\n for (var i = 0; i < ws.length; ++i) { if (ws[i] == this) { ws.splice(i--, 1); } }\n if (!ws.length) { line.widgets = null; }\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n if (cm) {\n runInOp(cm, function () {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n\n LineWidget.prototype.changed = function () {\n var this$1 = this;\n\n var oldH = this.height, cm = this.doc.cm, line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n if (!diff) { return }\n if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff); }\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n });\n }\n };\n eventMixin(LineWidget);\n\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n { addToScrollTop(cm, diff); }\n }\n\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n if (widget.insertAt == null) { widgets.push(widget); }\n else { widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget); }\n widget.line = line;\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n if (aboveVisible) { addToScrollTop(cm, widget.height); }\n cm.curOp.forceUpdate = true;\n }\n return true\n });\n if (cm) { signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle)); }\n return widget\n }\n\n // TEXTMARKERS\n\n // Created with markText and setBookmark methods. A TextMarker is a\n // handle that can be used to clear or find a marked position in the\n // document. Line objects hold arrays (markedSpans) containing\n // {from, to, marker} object pointing to such marker objects, and\n // indicating that such a marker is present on that line. Multiple\n // lines may point to the same marker when it spans across lines.\n // The spans will have null for their from/to properties when the\n // marker continues beyond the start/end of the line. Markers have\n // links back to the lines they currently touch.\n\n // Collapsed markers have unique ids, in order to be able to order\n // them, which is needed for uniquely determining an outer marker\n // when they overlap (they may nest, but not partially overlap).\n var nextMarkerId = 0;\n\n var TextMarker = function(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n };\n\n // Clear the marker.\n TextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n var cm = this.doc.cm, withOp = cm && !cm.curOp;\n if (withOp) { startOperation(cm); }\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n if (found) { signalLater(this, \"clear\", found.from, found.to); }\n }\n var min = null, max = null;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (cm && !this.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n else if (cm) {\n if (span.to != null) { max = lineNo(line); }\n if (span.from != null) { min = lineNo(line); }\n }\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm)\n { updateLineHeight(line, textHeight(cm.display)); }\n }\n if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this.lines[i$1]), len = lineLength(visual);\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n } }\n\n if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n this.lines.length = 0;\n this.explicitlyCleared = true;\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n if (cm) { reCheckSelection(cm.doc); }\n }\n if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n if (withOp) { endOperation(cm); }\n if (this.parent) { this.parent.clear(); }\n };\n\n // Find the position of the marker in the document. Returns a {from,\n // to} object by default. Side can be passed to get a specific side\n // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n // Pos objects returned contain a line object, rather than a line\n // number (used to prevent looking up the same line twice).\n TextMarker.prototype.find = function (side, lineObj) {\n if (side == null && this.type == \"bookmark\") { side = 1; }\n var from, to;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n if (side == -1) { return from }\n }\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n if (side == 1) { return to }\n }\n }\n return from && {from: from, to: to}\n };\n\n // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n\n var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n if (!pos || !cm) { return }\n runInOp(cm, function () {\n var line = pos.line, lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n cm.curOp.updateMaxLine = true;\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n if (dHeight)\n { updateLineHeight(line, line.height + dHeight); }\n }\n signalLater(cm, \"markerChanged\", cm, this$1);\n });\n };\n\n TextMarker.prototype.attachLine = function (line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n }\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp\n ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n eventMixin(TextMarker);\n\n // Create a marker, wire it up to the right lines, and\n function markText(doc, from, to, options, type) {\n // Shared markers (across linked documents) are handled separately\n // (markTextShared will call out to this again, once per\n // document).\n if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\n // Ensure we are in an operation.\n if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n var marker = new TextMarker(doc, type), diff = cmp(from, to);\n if (options) { copyObj(options, marker, false); }\n // Don't connect empty markers unless clearWhenEmpty is false\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n { return marker }\n if (marker.replacedWith) {\n // Showing up as a widget implies collapsed (widget replaces text)\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n }\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory)\n { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n var curLine = from.line, cm = doc.cm, updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n { updateMaxLine = true; }\n if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n addMarkedSpan(line, new MarkedSpan(marker,\n curLine == from.line ? from.ch : null,\n curLine == to.line ? to.ch : null), doc.cm && doc.cm.curOp);\n ++curLine;\n });\n // lineIsHidden depends on the presence of the spans, so needs a second pass\n if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n }); }\n\n if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n if (doc.history.done.length || doc.history.undone.length)\n { doc.clearHistory(); }\n }\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n if (cm) {\n // Sync editor state\n if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n if (marker.collapsed)\n { regChange(cm, from.line, to.line + 1); }\n else if (marker.className || marker.startStyle || marker.endStyle || marker.css ||\n marker.attributes || marker.title)\n { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n if (marker.atomic) { reCheckSelection(cm.doc); }\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n return marker\n }\n\n // SHARED TEXTMARKERS\n\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n var SharedTextMarker = function(markers, primary) {\n this.markers = markers;\n this.primary = primary;\n for (var i = 0; i < markers.length; ++i)\n { markers[i].parent = this; }\n };\n\n SharedTextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n this.explicitlyCleared = true;\n for (var i = 0; i < this.markers.length; ++i)\n { this.markers[i].clear(); }\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj)\n };\n eventMixin(SharedTextMarker);\n\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) { options.widgetNode = widget.cloneNode(true); }\n markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n for (var i = 0; i < doc.linked.length; ++i)\n { if (doc.linked[i].isParent) { return } }\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary)\n }\n\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i], pos = marker.find();\n var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n if (cmp(mFrom, mTo)) {\n var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function ( i ) {\n var marker = markers[i], linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n };\n\n for (var i = 0; i < markers.length; i++) loop( i );\n }\n\n var nextDocId = 0;\n var Doc = function(text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n if (firstLine == null) { firstLine = 0; }\n\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = (direction == \"rtl\") ? \"rtl\" : \"ltr\";\n this.extend = false;\n\n if (typeof text == \"string\") { text = this.splitLines(text); }\n updateDoc(this, {from: start, to: start, text: text});\n setSelection(this, simpleSelection(start), sel_dontScroll);\n };\n\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n // Iterate over the document. Supports two forms -- with only one\n // argument, it calls that for each line in the document. With\n // three, it iterates over the range given by the first two (with\n // the second being non-inclusive).\n iter: function(from, to, op) {\n if (op) { this.iterN(from - this.first, to - from, op); }\n else { this.iterN(this.first, this.first + this.size, from); }\n },\n\n // Non-public interface for adding and removing lines.\n insert: function(at, lines) {\n var height = 0;\n for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n this.insertInner(at - this.first, lines, height);\n },\n remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n // From here, the methods are part of the public interface. Most\n // are also available from CodeMirror (editor) instances.\n\n getValue: function(lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n setValue: docMethodOp(function(code) {\n var top = Pos(this.first, 0), last = this.first + this.size - 1;\n makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n if (this.cm) { scrollToCoords(this.cm, 0, 0); }\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function(code, from, to, origin) {\n from = clipPos(this, from);\n to = to ? clipPos(this, to) : from;\n replaceRange(this, code, from, to, origin);\n },\n getRange: function(from, to, lineSep) {\n var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n if (lineSep === false) { return lines }\n if (lineSep === '') { return lines.join('') }\n return lines.join(lineSep || this.lineSeparator())\n },\n\n getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n getLineNumber: function(line) {return lineNo(line)},\n\n getLineHandleVisualStart: function(line) {\n if (typeof line == \"number\") { line = getLine(this, line); }\n return visualLine(line)\n },\n\n lineCount: function() {return this.size},\n firstLine: function() {return this.first},\n lastLine: function() {return this.first + this.size - 1},\n\n clipPos: function(pos) {return clipPos(this, pos)},\n\n getCursor: function(start) {\n var range = this.sel.primary(), pos;\n if (start == null || start == \"head\") { pos = range.head; }\n else if (start == \"anchor\") { pos = range.anchor; }\n else if (start == \"end\" || start == \"to\" || start === false) { pos = range.to(); }\n else { pos = range.from(); }\n return pos\n },\n listSelections: function() { return this.sel.ranges },\n somethingSelected: function() {return this.sel.somethingSelected()},\n\n setCursor: docMethodOp(function(line, ch, options) {\n setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function(anchor, head, options) {\n setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n }),\n extendSelection: docMethodOp(function(head, other, options) {\n extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function(heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function(f, options) {\n var heads = map(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function(ranges, primary, options) {\n if (!ranges.length) { return }\n var out = [];\n for (var i = 0; i < ranges.length; i++)\n { out[i] = new Range(clipPos(this, ranges[i].anchor),\n clipPos(this, ranges[i].head || ranges[i].anchor)); }\n if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function(anchor, head, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n\n getSelection: function(lineSep) {\n var ranges = this.sel.ranges, lines;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n if (lineSep === false) { return lines }\n else { return lines.join(lineSep || this.lineSeparator()) }\n },\n getSelections: function(lineSep) {\n var parts = [], ranges = this.sel.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n if (lineSep !== false) { sel = sel.join(lineSep || this.lineSeparator()); }\n parts[i] = sel;\n }\n return parts\n },\n replaceSelection: function(code, collapse, origin) {\n var dup = [];\n for (var i = 0; i < this.sel.ranges.length; i++)\n { dup[i] = code; }\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function(code, collapse, origin) {\n var changes = [], sel = this.sel;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin};\n }\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n { makeChange(this, changes[i$1]); }\n if (newSel) { setSelectionReplaceHistory(this, newSel); }\n else if (this.cm) { ensureCursorVisible(this.cm); }\n }),\n undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n setExtending: function(val) {this.extend = val;},\n getExtending: function() {return this.extend},\n\n historySize: function() {\n var hist = this.history, done = 0, undone = 0;\n for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n return {undo: done, redo: undone}\n },\n clearHistory: function() {\n var this$1 = this;\n\n this.history = new History(this.history);\n linkedDocs(this, function (doc) { return doc.history = this$1.history; }, true);\n },\n\n markClean: function() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function(forceSplit) {\n if (forceSplit)\n { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n return this.history.generation\n },\n isClean: function (gen) {\n return this.history.generation == (gen || this.cleanGeneration)\n },\n\n getHistory: function() {\n return {done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)}\n },\n setHistory: function(histData) {\n var hist = this.history = new History(this.history);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n\n setGutterMarker: docMethodOp(function(line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function (line) {\n var markers = line.gutterMarkers || (line.gutterMarkers = {});\n markers[gutterID] = value;\n if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n return true\n })\n }),\n\n clearGutter: docMethodOp(function(gutterID) {\n var this$1 = this;\n\n this.iter(function (line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n return true\n });\n }\n });\n }),\n\n lineInfo: function(line) {\n var n;\n if (typeof line == \"number\") {\n if (!isLine(this, line)) { return null }\n n = line;\n line = getLine(this, line);\n if (!line) { return null }\n } else {\n n = lineNo(line);\n if (n == null) { return null }\n }\n return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n widgets: line.widgets}\n },\n\n addLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n if (!line[prop]) { line[prop] = cls; }\n else if (classTest(cls).test(line[prop])) { return false }\n else { line[prop] += \" \" + cls; }\n return true\n })\n }),\n removeLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n if (!cur) { return false }\n else if (cls == null) { line[prop] = null; }\n else {\n var found = cur.match(classTest(cls));\n if (!found) { return false }\n var end = found.index + found[0].length;\n line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n return true\n })\n }),\n\n addLineWidget: docMethodOp(function(handle, node, options) {\n return addLineWidget(this, handle, node, options)\n }),\n removeLineWidget: function(widget) { widget.clear(); },\n\n markText: function(from, to, options) {\n return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n },\n setBookmark: function(pos, options) {\n var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false, shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents};\n pos = clipPos(this, pos);\n return markText(this, pos, pos, realOpts, \"bookmark\")\n },\n findMarksAt: function(pos) {\n pos = clipPos(this, pos);\n var markers = [], spans = getLine(this, pos.line).markedSpans;\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if ((span.from == null || span.from <= pos.ch) &&\n (span.to == null || span.to >= pos.ch))\n { markers.push(span.marker.parent || span.marker); }\n } }\n return markers\n },\n findMarks: function(from, to, filter) {\n from = clipPos(this, from); to = clipPos(this, to);\n var found = [], lineNo = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n if (spans) { for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n if (!(span.to != null && lineNo == from.line && from.ch >= span.to ||\n span.from == null && lineNo != from.line ||\n span.from != null && lineNo == to.line && span.from >= to.ch) &&\n (!filter || filter(span.marker)))\n { found.push(span.marker.parent || span.marker); }\n } }\n ++lineNo;\n });\n return found\n },\n getAllMarks: function() {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i)\n { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n });\n return markers\n },\n\n posFromIndex: function(off) {\n var ch, lineNo = this.first, sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n if (sz > off) { ch = off; return true }\n off -= sz;\n ++lineNo;\n });\n return clipPos(this, Pos(lineNo, ch))\n },\n indexFromPos: function (coords) {\n coords = clipPos(this, coords);\n var index = coords.ch;\n if (coords.line < this.first || coords.ch < 0) { return 0 }\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index\n },\n\n copy: function(copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size),\n this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n return doc\n },\n\n linkedDoc: function(options) {\n if (!options) { options = {}; }\n var from = this.first, to = this.first + this.size;\n if (options.from != null && options.from > from) { from = options.from; }\n if (options.to != null && options.to < to) { to = options.to; }\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n if (options.sharedHist) { copy.history = this.history\n ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy\n },\n unlinkDoc: function(other) {\n if (other instanceof CodeMirror) { other = other.doc; }\n if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n var link = this.linked[i];\n if (link.doc != other) { continue }\n this.linked.splice(i, 1);\n other.unlinkDoc(this);\n detachSharedMarkers(findSharedMarkers(this));\n break\n } }\n // If the histories were shared, split them again\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n getMode: function() {return this.mode},\n getEditor: function() {return this.cm},\n\n splitLines: function(str) {\n if (this.lineSep) { return str.split(this.lineSep) }\n return splitLinesAuto(str)\n },\n lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") { dir = \"ltr\"; }\n if (dir == this.direction) { return }\n this.direction = dir;\n this.iter(function (line) { return line.order = null; });\n if (this.cm) { directionChanged(this.cm); }\n })\n });\n\n // Public alias.\n Doc.prototype.eachLine = Doc.prototype.iter;\n\n // Kludge to work around strange IE behavior where it'll sometimes\n // re-fire a series of drag-related events right after the drop (#1551)\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n { return }\n e_preventDefault(e);\n if (ie) { lastDrop = +new Date; }\n var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n if (!pos || cm.isReadOnly()) { return }\n // Might be a file drop, in which case we simply extract the text\n // and insert it.\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length, text = Array(n), read = 0;\n var markAsReadAndPasteIfAllFilesAreRead = function () {\n if (++read == n) {\n operation(cm, function () {\n pos = clipPos(cm.doc, pos);\n var change = {from: pos, to: pos,\n text: cm.doc.splitLines(\n text.filter(function (t) { return t != null; }).join(cm.doc.lineSeparator())),\n origin: \"paste\"};\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));\n })();\n }\n };\n var readTextFromFile = function (file, i) {\n if (cm.options.allowDropFileTypes &&\n indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n var reader = new FileReader;\n reader.onerror = function () { return markAsReadAndPasteIfAllFilesAreRead(); };\n reader.onload = function () {\n var content = reader.result;\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n text[i] = content;\n markAsReadAndPasteIfAllFilesAreRead();\n };\n reader.readAsText(file);\n };\n for (var i = 0; i < files.length; i++) { readTextFromFile(files[i], i); }\n } else { // Normal drop\n // Don't do a replace if the drop happened inside of the selected text.\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e);\n // Ensure the editor is re-focused\n setTimeout(function () { return cm.display.input.focus(); }, 20);\n return\n }\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n if (text$1) {\n var selected;\n if (cm.state.draggingText && !cm.state.draggingText.copy)\n { selected = cm.listSelections(); }\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\n { replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\"); } }\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n }\n catch(e$1){}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\";\n\n // Use dummy image instead of default browsers image.\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img);\n // Force a relayout, or Opera won't use our image for some obscure reason\n img._top = img.offsetTop;\n }\n e.dataTransfer.setDragImage(img, 0, 0);\n if (presto) { img.parentNode.removeChild(img); }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n if (!pos) { return }\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n }\n\n // These must be handled carefully, because naively registering a\n // handler for each editor will cause the editors to never be\n // garbage collected.\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) { return }\n var byClass = document.getElementsByClassName(\"CodeMirror\"), editors = [];\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n if (cm) { editors.push(cm); }\n }\n if (editors.length) { editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) { f(editors[i]); }\n }); }\n }\n\n var globalsRegistered = false;\n function ensureGlobalHandlers() {\n if (globalsRegistered) { return }\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n function registerGlobalHandlers() {\n // When the window resizes, we need to refresh active editors.\n var resizeTimer;\n on(window, \"resize\", function () {\n if (resizeTimer == null) { resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100); }\n });\n // When the window loses focus, we want to show the editor as blurred\n on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n }\n // Called when the window resizes\n function onResize(cm) {\n var d = cm.display;\n // Might be a text scaling operation, clear size caches.\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n 19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n 36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n 46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n 106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 145: \"ScrollLock\",\n 173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n 221: \"]\", 222: \"'\", 224: \"Mod\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n 63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n };\n\n // Number keys\n for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n // Alphabetic keys\n for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n // Function keys\n for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\n var keyMap = {};\n\n keyMap.basic = {\n \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n };\n // Note that the save and find-related commands aren't defined by\n // default. User code or addons can define them. Unknown commands\n // are simply ignored.\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n };\n // Very basic readline/emacs-style bindings, which are standard on Mac.\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\", \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\",\n \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\",\n \"Ctrl-T\": \"transposeChars\", \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n // KEYMAP DISPATCH\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n }\n if (alt) { name = \"Alt-\" + name; }\n if (ctrl) { name = \"Ctrl-\" + name; }\n if (cmd) { name = \"Cmd-\" + name; }\n if (shift) { name = \"Shift-\" + name; }\n return name\n }\n\n // This is a kludge to keep keymaps mostly working as raw objects\n // (backwards compatibility) while at the same time support features\n // like normalization and multi-stroke key bindings. It compiles a\n // new normalized keymap, and then updates the old object to reflect\n // this.\n function normalizeKeyMap(keymap) {\n var copy = {};\n for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n if (value == \"...\") { delete keymap[keyname]; continue }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n for (var i = 0; i < keys.length; i++) {\n var val = (void 0), name = (void 0);\n if (i == keys.length - 1) {\n name = keys.join(\" \");\n val = value;\n } else {\n name = keys.slice(0, i + 1).join(\" \");\n val = \"...\";\n }\n var prev = copy[name];\n if (!prev) { copy[name] = val; }\n else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n }\n delete keymap[keyname];\n } }\n for (var prop in copy) { keymap[prop] = copy[prop]; }\n return keymap\n }\n\n function lookupKey(key, map, handle, context) {\n map = getKeyMap(map);\n var found = map.call ? map.call(key, context) : map[key];\n if (found === false) { return \"nothing\" }\n if (found === \"...\") { return \"multi\" }\n if (found != null && handle(found)) { return \"handled\" }\n\n if (map.fallthrough) {\n if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\")\n { return lookupKey(key, map.fallthrough, handle, context) }\n for (var i = 0; i < map.fallthrough.length; i++) {\n var result = lookupKey(key, map.fallthrough[i], handle, context);\n if (result) { return result }\n }\n }\n }\n\n // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\"\n }\n\n function addModifierNames(name, event, noShift) {\n var base = name;\n if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Mod\") { name = \"Cmd-\" + name; }\n if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n return name\n }\n\n // Look up the name of a key as indicated by an event object.\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n var name = keyNames[event.keyCode];\n if (name == null || event.altGraphKey) { return false }\n // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n if (event.keyCode == 3 && event.code) { name = event.code; }\n return addModifierNames(name, event, noShift)\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val\n }\n\n // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges, kill = [];\n // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break\n }\n }\n kill.push(toKill);\n }\n // Next, remove those actual ranges.\n runInOp(cm, function () {\n for (var i = kill.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\"); }\n ensureCursorVisible(cm);\n });\n }\n\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target\n }\n\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\")\n }\n\n function endOfLine(visually, cm, lineObj, lineNo, dir) {\n if (visually) {\n if (cm.doc.direction == \"rtl\") { dir = -dir; }\n var order = getOrder(lineObj, cm.doc.direction);\n if (order) {\n var part = dir < 0 ? lst(order) : order[0];\n var moveInStorageOrder = (dir < 0) == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch;\n // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n // it could be that the last bidi part is not on the last visual line,\n // since visual lines contain content order-consecutive chunks.\n // Thus, in rtl, we are looking for the first (content-order) character\n // in the rtl chunk that is on the last line (that is, the same line\n // as the last (content-order) character).\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1); }\n } else { ch = dir < 0 ? part.to : part.from; }\n return new Pos(lineNo, ch, sticky)\n }\n }\n return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\")\n }\n\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n if (!bidi) { return moveLogically(line, start, dir) }\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n // nothing interesting happens.\n return moveLogically(line, start, dir)\n }\n\n var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n var prep;\n var getWrappedLineExtent = function (ch) {\n if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch)\n };\n var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = (part.level == 1) == (dir < 0);\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky)\n }\n }\n\n // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n ? new Pos(start.line, mv(ch, 1), \"before\")\n : new Pos(start.line, ch, \"after\"); };\n\n for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n var part = bidi[partPos];\n var moveInStorageOrder = (dir > 0) == (part.level != 1);\n var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n }\n };\n\n // Case 3a: Look for other bidi parts on the same visual line\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n if (res) { return res }\n\n // Case 3b: Look for other bidi parts on the next visual line\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n if (res) { return res }\n }\n\n // Case 4: Nowhere to move\n return null\n }\n\n // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n var commands = {\n selectAll: selectAll,\n singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n if (range.head.ch == len && range.head.line < cm.lastLine())\n { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n else\n { return {from: range.head, to: Pos(range.head.line, len)} }\n } else {\n return {from: range.from(), to: range.to()}\n }\n }); },\n deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0),\n to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n }); }); },\n delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0), to: range.from()\n }); }); },\n delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n return {from: leftPos, to: range.from()}\n }); },\n delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n return {from: range.from(), to: rightPos }\n }); },\n undo: function (cm) { return cm.undo(); },\n redo: function (cm) { return cm.redo(); },\n undoSelection: function (cm) { return cm.undoSelection(); },\n redoSelection: function (cm) { return cm.redoSelection(); },\n goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n {origin: \"+move\", bias: -1}\n ); },\n goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n }, sel_move); },\n goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: 0, top: top}, \"div\")\n }, sel_move); },\n goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n return pos\n }, sel_move); },\n goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n delCharBefore: function (cm) { return cm.deleteH(-1, \"codepoint\"); },\n delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n insertSoftTab: function (cm) {\n var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n cm.replaceSelections(spaces);\n },\n defaultTab: function (cm) {\n if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n else { cm.execCommand(\"insertTab\"); }\n },\n // Swap the two chars left and right of each selection's head.\n // Move cursor behind the two swapped characters afterwards.\n //\n // Doesn't consider line feeds a character.\n // Doesn't scan more than one line above to find a character.\n // Doesn't do anything on an empty line.\n // Doesn't do anything with non-empty selections.\n transposeChars: function (cm) { return runInOp(cm, function () {\n var ranges = cm.listSelections(), newSel = [];\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) { continue }\n var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n if (line) {\n if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n prev.charAt(prev.length - 1),\n Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n newSel.push(new Range(cur, cur));\n }\n cm.setSelections(newSel);\n }); },\n newlineAndIndent: function (cm) { return runInOp(cm, function () {\n var sels = cm.listSelections();\n for (var i = sels.length - 1; i >= 0; i--)\n { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n sels = cm.listSelections();\n for (var i$1 = 0; i$1 < sels.length; i$1++)\n { cm.indentLine(sels[i$1].from().line, null, true); }\n ensureCursorVisible(cm);\n }); },\n openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n };\n\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, visual, lineN, 1)\n }\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, line, lineN, -1)\n }\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\n }\n return start\n }\n\n // Run a handler that was bound to a key.\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n if (!bound) { return false }\n }\n // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift, done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n if (dropShift) { cm.display.shift = false; }\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n return done\n }\n\n function lookupKeyForEditor(cm, name, handle) {\n for (var i = 0; i < cm.state.keyMaps.length; i++) {\n var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n if (result) { return result }\n }\n return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n || lookupKey(name, cm.options.keyMap, handle, cm)\n }\n\n // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n var stopSeq = new Delayed;\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n if (seq) {\n if (isModifierKey(name)) { return \"handled\" }\n if (/\\'$/.test(name))\n { cm.state.keySeq = null; }\n else\n { stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n }); }\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) { return true }\n }\n return dispatchKeyInner(cm, name, e, handle)\n }\n\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n\n if (result == \"multi\")\n { cm.state.keySeq = name; }\n if (result == \"handled\")\n { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result\n }\n\n // Handle a key from the keydown event.\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n if (!name) { return false }\n\n if (e.shiftKey && !cm.state.keySeq) {\n // First try to resolve full name (including 'Shift-'). Failing\n // that, see if there is a cursor-motion command (starting with\n // 'go') bound to the keyname without 'Shift-'.\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\n || dispatchKey(cm, name, e, function (b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n { return doHandleBinding(cm, b) }\n })\n } else {\n return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n }\n }\n\n // Handle a key from the keypress event\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n }\n\n var lastStoppedKey = null;\n function onKeyDown(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n cm.curOp.focus = activeElt(root(cm));\n if (signalDOMEvent(cm, e)) { return }\n // IE does strange things with escape.\n if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n if (presto) {\n lastStoppedKey = handled ? code : null;\n // Opera has no cut event... we try to at least catch the key combo\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n { cm.replaceSelection(\"\", null, \"cut\"); }\n }\n if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand)\n { document.execCommand(\"cut\"); }\n\n // Turn mouse into crosshair when Alt is held on Mac.\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n { showCrossHair(cm); }\n }\n\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) { this.doc.sel.shift = false; }\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n var keyCode = e.keyCode, charCode = e.charCode;\n if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n // Some browsers fire keypress events for backspace\n if (ch == \"\\x08\") { return }\n if (handleCharBinding(cm, e, ch)) { return }\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function(time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n\n PastClick.prototype.compare = function (time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time &&\n cmp(pos, this.pos) == 0 && button == this.button\n };\n\n var lastClick, lastDoubleClick;\n function clickRepeat(pos, button) {\n var now = +new Date;\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\"\n } else if (lastClick && lastClick.compare(now, pos, button)) {\n lastDoubleClick = new PastClick(now, pos, button);\n lastClick = null;\n return \"double\"\n } else {\n lastClick = new PastClick(now, pos, button);\n lastDoubleClick = null;\n return \"single\"\n }\n }\n\n // A mouse down can be a single click, double click, triple click,\n // start of selection drag, start of text drag, new cursor\n // (ctrl-click), rectangle drag (alt-drag), or xwin\n // middle-click-paste. Or it might be a click on something we should\n // not interfere with, such as a scrollbar or widget.\n function onMouseDown(e) {\n var cm = this, display = cm.display;\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n\n if (eventInWidget(display, e)) {\n if (!webkit) {\n // Briefly turn off draggability, to allow widgets to do\n // normal dragging things.\n display.scroller.draggable = false;\n setTimeout(function () { return display.scroller.draggable = true; }, 100);\n }\n return\n }\n if (clickInGutter(cm, e)) { return }\n var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : \"single\";\n win(cm).focus();\n\n // #3261: make sure, that we're not starting a second selection\n if (button == 1 && cm.state.selectingText)\n { cm.state.selectingText(e); }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return }\n\n if (button == 1) {\n if (pos) { leftButtonDown(cm, pos, repeat, e); }\n else if (e_target(e) == display.scroller) { e_preventDefault(e); }\n } else if (button == 2) {\n if (pos) { extendSelection(cm.doc, pos); }\n setTimeout(function () { return display.input.focus(); }, 20);\n } else if (button == 3) {\n if (captureRightClick) { cm.display.input.onContextMenu(e); }\n else { delayBlurEvent(cm); }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n if (repeat == \"double\") { name = \"Double\" + name; }\n else if (repeat == \"triple\") { name = \"Triple\" + name; }\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") { bound = commands[bound]; }\n if (!bound) { return false }\n var done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n return done\n })\n }\n\n function configureMouse(cm, repeat, event) {\n var option = cm.getOption(\"configureMouse\");\n var value = option ? option(cm, repeat, event) : {};\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; }\n if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; }\n if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); }\n return value\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n else { cm.curOp.focus = activeElt(root(cm)); }\n\n var behavior = configureMouse(cm, repeat, event);\n\n var sel = cm.doc.sel, contained;\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n repeat == \"single\" && (contained = sel.contains(pos)) > -1 &&\n (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) &&\n (cmp(contained.to(), pos) > 0 || pos.xRel < 0))\n { leftButtonStartDrag(cm, event, pos, behavior); }\n else\n { leftButtonSelect(cm, event, pos, behavior); }\n }\n\n // Start a text drag. When it ends, see if any dragging actually\n // happen, and treat as a click if it didn't.\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display, moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) { display.scroller.draggable = false; }\n cm.state.draggingText = false;\n if (cm.state.delayingBlurEvent) {\n if (cm.hasFocus()) { cm.state.delayingBlurEvent = false; }\n else { delayBlurEvent(cm); }\n }\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n if (!moved) {\n e_preventDefault(e);\n if (!behavior.addNew)\n { extendSelection(cm.doc, pos, null, null, behavior.extend); }\n // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n if ((webkit && !safari) || ie && ie_version == 9)\n { setTimeout(function () {display.wrapper.ownerDocument.body.focus({preventScroll: true}); display.input.focus();}, 20); }\n else\n { display.input.focus(); }\n }\n });\n var mouseMove = function(e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n var dragStart = function () { return moved = true; };\n // Let the drag handler handle this.\n if (webkit) { display.scroller.draggable = true; }\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag;\n on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n on(display.scroller, \"dragstart\", dragStart);\n on(display.scroller, \"drop\", dragEnd);\n\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { return display.input.focus(); }, 20);\n // IE's approach to draggable\n if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") { return new Range(pos, pos) }\n if (unit == \"word\") { return cm.findWordAt(pos) }\n if (unit == \"line\") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) }\n var result = unit(cm, pos);\n return new Range(result.from, result.to)\n }\n\n // Normal selection, as opposed to text dragging.\n function leftButtonSelect(cm, event, start, behavior) {\n if (ie) { delayBlurEvent(cm); }\n var display = cm.display, doc = cm.doc;\n e_preventDefault(event);\n\n var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n if (ourIndex > -1)\n { ourRange = ranges[ourIndex]; }\n else\n { ourRange = new Range(start, start); }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) { ourRange = new Range(start, start); }\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range = rangeForUnit(cm, start, behavior.unit);\n if (behavior.extend)\n { ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend); }\n else\n { ourRange = range; }\n }\n\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),\n {scroll: false, origin: \"*mouse\"});\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n {scroll: false, origin: \"*mouse\"});\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) { return }\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [], tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n line <= end; line++) {\n var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n if (left == right)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\n else if (text.length > leftPos)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\n }\n if (!ranges.length) { ranges.push(new Range(start, start)); }\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n {origin: \"*mouse\", scroll: false});\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor, head;\n if (cmp(range.anchor, anchor) > 0) {\n head = range.head;\n anchor = minPos(oldRange.from(), range.anchor);\n } else {\n head = range.anchor;\n anchor = maxPos(oldRange.to(), range.head);\n }\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n\n var editorSize = display.wrapper.getBoundingClientRect();\n // Used to ensure timeout re-tries don't fire when another extend\n // happened in the meantime (clearTimeout isn't reliable -- at\n // least on Chrome, the timeouts still happen even when cleared,\n // if the clear happens after their scheduled firing time).\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n if (!cur) { return }\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt(root(cm));\n extendTo(cur);\n var visible = visibleLines(display, doc);\n if (cur.line >= visible.to || cur.line < visible.from)\n { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n if (outside) { setTimeout(operation(cm, function () {\n if (counter != curCount) { return }\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50); }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity;\n // If e is null or undefined we interpret this as someone trying\n // to explicitly cancel the selection rather than the user\n // letting go of the mouse button.\n if (e) {\n e_preventDefault(e);\n display.input.focus();\n }\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) { done(e); }\n else { extend(e); }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n }\n\n // Used when mouse-selecting to adjust the anchor to the proper side\n // of a bidi jump depending on the visual position of the head.\n function bidiSimplify(cm, range) {\n var anchor = range.anchor;\n var head = range.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range }\n var order = getOrder(anchorLine);\n if (!order) { return range }\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index];\n if (part.from != anchor.ch && part.to != anchor.ch) { return range }\n var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1);\n if (boundary == 0 || boundary == order.length) { return range }\n\n // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n var leftSide;\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n if (headIndex == boundary - 1 || headIndex == boundary)\n { leftSide = dir < 0; }\n else\n { leftSide = dir > 0; }\n }\n\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to, sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head)\n }\n\n\n // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try { mX = e.clientX; mY = e.clientY; }\n catch(e$1) { return false }\n }\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n if (prevent) { e_preventDefault(e); }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n mY -= lineBox.top - display.viewOffset;\n\n for (var i = 0; i < cm.display.gutterSpecs.length; ++i) {\n var g = display.gutters.childNodes[i];\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = lineAtHeight(cm.doc, mY);\n var gutter = cm.display.gutterSpecs[i];\n signal(cm, type, cm, line, gutter.className, e);\n return e_defaultPrevented(e)\n }\n }\n }\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true)\n }\n\n // CONTEXT MENU HANDLING\n\n // To make the context menu work, we need to briefly unhide the\n // textarea (making it as unobtrusive as possible) to let the\n // right-click take effect on it.\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n if (!captureRightClick) { cm.display.input.onContextMenu(e); }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\n return gutterEvent(cm, e, \"gutterContextMenu\", false)\n }\n\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {toString: function(){return \"CodeMirror.Init\"}};\n\n var defaults = {};\n var optionHandlers = {};\n\n function defineOptions(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n function option(name, deflt, handle, notOnInit) {\n CodeMirror.defaults[name] = deflt;\n if (handle) { optionHandlers[name] =\n notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n }\n\n CodeMirror.defineOption = option;\n\n // Passed to option handlers when there is no old value.\n CodeMirror.Init = Init;\n\n // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n\n option(\"indentUnit\", 2, loadMode, true);\n option(\"indentWithTabs\", false);\n option(\"smartIndent\", true);\n option(\"tabSize\", 4, function (cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n if (!val) { return }\n var newBreaks = [], lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n if (found == -1) { break }\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n lineNo++;\n });\n for (var i = newBreaks.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\u202d\\u202e\\u2066\\u2067\\u2069\\ufeff\\ufff9-\\ufffc]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n if (old != Init) { cm.refresh(); }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\n option(\"electricChars\", true);\n option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\") // FIXME\n }, true);\n option(\"spellcheck\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\n option(\"autocorrect\", false, function (cm, val) { return cm.getInputField().autocorrect = val; }, true);\n option(\"autocapitalize\", false, function (cm, val) { return cm.getInputField().autocapitalize = val; }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n updateGutters(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n if (prev && prev.detach) { prev.detach(cm, next); }\n if (next.attach) { next.attach(cm, prev || null); }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm, val) {\n cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n updateGutters(cm);\n }, true);\n option(\"fixedGutter\", true, function (cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option(\"coverGutterNextToScrollbar\", false, function (cm) { return updateScrollbars(cm); }, true);\n option(\"scrollbarStyle\", \"native\", function (cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option(\"lineNumbers\", false, function (cm, val) {\n cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n updateGutters(cm);\n }, true);\n option(\"firstLineNumber\", 1, updateGutters, true);\n option(\"lineNumberFormatter\", function (integer) { return integer; }, updateGutters, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n cm.display.input.readOnlyChanged(val);\n });\n\n option(\"screenReaderLabel\", null, function (cm, val) {\n val = (val === '') ? null : val;\n cm.display.input.screenReaderLabelChanged(val);\n });\n\n option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n\n option(\"cursorBlinkRate\", 530);\n option(\"cursorScrollMargin\", 0);\n option(\"cursorHeight\", 1, updateSelection, true);\n option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option(\"workTime\", 100);\n option(\"workDelay\", 100);\n option(\"flattenSpans\", true, resetModeState, true);\n option(\"addModeClass\", false, resetModeState, true);\n option(\"pollInterval\", 100);\n option(\"undoDepth\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) { cm.display.input.resetPosition(); }\n });\n\n option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n option(\"phrases\", null);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () { return updateScrollbars(cm); }, 100);\n }\n\n // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) }\n\n this.options = options = options ? copyObj(options) : {};\n // Determine effective options based on given values and defaults.\n copyObj(defaults, options, false);\n\n var doc = options.value;\n if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n else if (options.mode) { doc.modeOption = options.mode; }\n this.doc = doc;\n\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input, options);\n display.wrapper.CodeMirror = this;\n themeChanged(this);\n if (options.lineWrapping)\n { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n initScrollbars(this);\n\n this.state = {\n keyMaps: [], // stores maps added by addKeyMap\n overlays: [], // highlighting overlays, as added by addOverlay\n modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(), // stores highlight worker timeout\n keySeq: null, // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) { display.input.focus(); }\n\n // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n\n startOperation(this);\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if ((options.autofocus && !mobile) || this.hasFocus())\n { setTimeout(function () {\n if (this$1.hasFocus() && !this$1.state.focused) { onFocus(this$1); }\n }, 20); }\n else\n { onBlur(this); }\n\n for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n { optionHandlers[opt](this, options[opt], Init); } }\n maybeUpdateLineNumberWidth(this);\n if (options.finishInit) { options.finishInit(this); }\n for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this); }\n endOperation(this);\n // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n if (webkit && options.lineWrapping &&\n getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n { display.lineDiv.style.textRendering = \"auto\"; }\n }\n\n // The default configuration options.\n CodeMirror.defaults = defaults;\n // Functions to run when options are changed.\n CodeMirror.optionHandlers = optionHandlers;\n\n // Attach the necessary event handlers when initializing the editor\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n // Older IE's will not fire a second mousedown for a double click\n if (ie && ie_version < 11)\n { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) { return }\n var pos = posFromMouse(cm, e);\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n })); }\n else\n { on(d.scroller, \"dblclick\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\n // Some browsers fire contextmenu *after* opening the menu, at\n // which point we can't mess with it anymore. Context menu is\n // handled in onMouseDown for these browsers.\n on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); });\n on(d.input.getField(), \"contextmenu\", function (e) {\n if (!d.scroller.contains(e.target)) { onContextMenu(cm, e); }\n });\n\n // Used to suppress mouse event handling when a touch happens\n var touchFinished, prevTouch = {end: 0};\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date;\n }\n }\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) { return false }\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1\n }\n function farAway(touch, other) {\n if (other.left == null) { return true }\n var dx = other.left - touch.left, dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20\n }\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date;\n d.activeTouch = {start: now, moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null};\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function () {\n if (d.activeTouch) { d.activeTouch.moved = true; }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n if (touch && !eventInWidget(d, e) && touch.left != null &&\n !touch.moved && new Date - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n { range = new Range(pos, pos); }\n else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n { range = cm.findWordAt(pos); }\n else // Triple tap\n { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch);\n\n // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n });\n\n // Listen to wheel events in order to try and update the viewport on time.\n on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n // Prevent wrapper from ever scrolling\n on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n d.dragFunctions = {\n enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n start: function (e) { return onDragStart(cm, e); },\n drop: operation(cm, onDrop),\n leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n };\n\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n }\n\n var initHooks = [];\n CodeMirror.defineInitHook = function (f) { return initHooks.push(f); };\n\n // Indent the given line. The how parameter can be \"smart\",\n // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n // (typically set to true for forced single-line indents), empty\n // lines are not indented, and places where the mode returns Pass\n // are left alone.\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc, state;\n if (how == null) { how = \"add\"; }\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) { how = \"prev\"; }\n else { state = getContextBefore(cm, n).state; }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n if (line.stateAfter) { line.stateAfter = null; }\n var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) { return }\n how = \"prev\";\n }\n }\n if (how == \"prev\") {\n if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n else { indentation = 0; }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n indentation = Math.max(0, indentation);\n\n var indentString = \"\", pos = 0;\n if (cm.options.indentWithTabs)\n { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n if (indentString != curSpaceString) {\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n line.stateAfter = null;\n return true\n } else {\n // Ensure that, if the cursor was in the whitespace at the start\n // of the line, it is moved to the end of that space.\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n var range = doc.sel.ranges[i$1];\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n break\n }\n }\n }\n }\n\n // This will be set to a {lineWise: bool, text: [string]} object, so\n // that, when pasting, we know what kind of selections the copied\n // text was made out of.\n var lastCopied = null;\n\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n if (!sel) { sel = doc.sel; }\n\n var recent = +new Date - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted), multiPaste = null;\n // When pasting N lines into N selections, insert one line per selection\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n for (var i = 0; i < lastCopied.text.length; i++)\n { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) { return [l]; });\n }\n }\n\n var updateInput = cm.curOp.updateInput;\n // Normal behavior is to insert the new text into every selection\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range = sel.ranges[i$1];\n var from = range.from(), to = range.to();\n if (range.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n { from = Pos(from.line, from.ch - deleted); }\n else if (cm.state.overwrite && !paste) // Handle overwrite\n { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\n else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\"))\n { from = to = Pos(from.line, 0); }\n }\n var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")};\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n if (inserted && !paste)\n { triggerElectric(cm, inserted); }\n\n ensureCursorVisible(cm);\n if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput; }\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n if (pasted) {\n e.preventDefault();\n if (!cm.isReadOnly() && !cm.options.disableInput && cm.hasFocus())\n { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\n return true\n }\n }\n\n function triggerElectric(cm, inserted) {\n // When an 'electric' character is inserted, immediately trigger a reindent\n if (!cm.options.electricChars || !cm.options.smartIndent) { return }\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range = sel.ranges[i];\n if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) { continue }\n var mode = cm.getModeAt(range.head);\n var indented = false;\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++)\n { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range.head.line, \"smart\");\n break\n } }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch)))\n { indented = indentLine(cm, range.head.line, \"smart\"); }\n }\n if (indented) { signalLater(cm, \"electricInput\", cm, range.head.line); }\n }\n }\n\n function copyableRanges(cm) {\n var text = [], ranges = [];\n for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n var line = cm.doc.sel.ranges[i].head.line;\n var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n return {text: text, ranges: ranges}\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", autocorrect ? \"on\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"on\" : \"off\");\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; min-height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n // The textarea is kept positioned near the cursor to prevent the\n // fact that it'll be scrolled into view on input from scrolling\n // our fake cursor out of view. On webkit, when wrap=off, paste is\n // very slow. So make the area wide instead.\n if (webkit) { te.style.width = \"1000px\"; }\n else { te.setAttribute(\"wrap\", \"off\"); }\n // If border: 0; -- iOS fails to open keyboard (issue #1287)\n if (ios) { te.style.border = \"1px solid black\"; }\n return div\n }\n\n // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n\n // This is not the complete set of editor methods. Most of the\n // methods defined on the Doc type are also injected into\n // CodeMirror.prototype, for backwards compatibility and\n // convenience.\n\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n var helpers = CodeMirror.helpers = {};\n\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function(){win(this).focus(); this.display.input.focus();},\n\n setOption: function(option, value) {\n var options = this.options, old = options[option];\n if (options[option] == value && option != \"mode\") { return }\n options[option] = value;\n if (optionHandlers.hasOwnProperty(option))\n { operation(this, optionHandlers[option])(this, value, old); }\n signal(this, \"optionChange\", this, option);\n },\n\n getOption: function(option) {return this.options[option]},\n getDoc: function() {return this.doc},\n\n addKeyMap: function(map, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map));\n },\n removeKeyMap: function(map) {\n var maps = this.state.keyMaps;\n for (var i = 0; i < maps.length; ++i)\n { if (maps[i] == map || maps[i].name == map) {\n maps.splice(i, 1);\n return true\n } }\n },\n\n addOverlay: methodOp(function(spec, options) {\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n insertSorted(this.state.overlays,\n {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n priority: (options && options.priority) || 0},\n function (overlay) { return overlay.priority; });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function(spec) {\n var overlays = this.state.overlays;\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this.state.modeGen++;\n regChange(this);\n return\n }\n }\n }),\n\n indentLine: methodOp(function(n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n else { dir = dir ? \"add\" : \"subtract\"; }\n }\n if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n }),\n indentSelection: methodOp(function(how) {\n var ranges = this.doc.sel.ranges, end = -1;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (!range.empty()) {\n var from = range.from(), to = range.to();\n var start = Math.max(end, from.line);\n end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n for (var j = start; j < end; ++j)\n { indentLine(this, j, how); }\n var newRanges = this.doc.sel.ranges;\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n { replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n } else if (range.head.line > end) {\n indentLine(this, range.head.line, how, true);\n end = range.head.line;\n if (i == this.doc.sel.primIndex) { ensureCursorVisible(this); }\n }\n }\n }),\n\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function(pos, precise) {\n return takeToken(this, pos, precise)\n },\n\n getLineTokens: function(line, precise) {\n return takeToken(this, Pos(line), precise, true)\n },\n\n getTokenTypeAt: function(pos) {\n pos = clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n var type;\n if (ch == 0) { type = styles[2]; }\n else { for (;;) {\n var mid = (before + after) >> 1;\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n else { type = styles[mid * 2 + 2]; break }\n } }\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n },\n\n getModeAt: function(pos) {\n var mode = this.doc.mode;\n if (!mode.innerMode) { return mode }\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n },\n\n getHelper: function(pos, type) {\n return this.getHelpers(pos, type)[0]\n },\n\n getHelpers: function(pos, type) {\n var found = [];\n if (!helpers.hasOwnProperty(type)) { return found }\n var help = helpers[type], mode = this.getModeAt(pos);\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) { found.push(help[mode[type]]); }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n if (val) { found.push(val); }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n if (cur.pred(mode, this) && indexOf(found, cur.val) == -1)\n { found.push(cur.val); }\n }\n return found\n },\n\n getStateAfter: function(line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n return getContextBefore(this, line + 1, precise).state\n },\n\n cursorCoords: function(start, mode) {\n var pos, range = this.doc.sel.primary();\n if (start == null) { pos = range.head; }\n else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n else { pos = start ? range.from() : range.to(); }\n return cursorCoords(this, pos, mode || \"page\")\n },\n\n charCoords: function(pos, mode) {\n return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n },\n\n coordsChar: function(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return coordsChar(this, coords.left, coords.top)\n },\n\n lineAtHeight: function(height, mode) {\n height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n return lineAtHeight(this.doc, height + this.display.viewOffset)\n },\n heightAtLine: function(line, mode, includeWidgets) {\n var end = false, lineObj;\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n if (line < this.doc.first) { line = this.doc.first; }\n else if (line > last) { line = last; end = true; }\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n (end ? this.doc.height - heightAtLine(lineObj) : 0)\n },\n\n defaultTextHeight: function() { return textHeight(this.display) },\n defaultCharWidth: function() { return charWidth(this.display) },\n\n getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n addWidget: function(pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = cursorCoords(this, clipPos(this.doc, pos));\n var top = pos.bottom, left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n // Default to positioning above (if specified and possible); otherwise default to positioning below\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n { top = pos.top - node.offsetHeight; }\n else if (pos.bottom + node.offsetHeight <= vspace)\n { top = pos.bottom; }\n if (left + node.offsetWidth > hspace)\n { left = hspace - node.offsetWidth; }\n }\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") { left = 0; }\n else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n node.style.left = left + \"px\";\n }\n if (scroll)\n { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n },\n\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n\n execCommand: function(cmd) {\n if (commands.hasOwnProperty(cmd))\n { return commands[cmd].call(null, this) }\n },\n\n triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n findPosH: function(from, amount, unit, visually) {\n var dir = 1;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n cur = findPosH(this.doc, cur, dir, unit, visually);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveH: methodOp(function(dir, unit) {\n var this$1 = this;\n\n this.extendSelectionsBy(function (range) {\n if (this$1.display.shift || this$1.doc.extend || range.empty())\n { return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually) }\n else\n { return dir < 0 ? range.from() : range.to() }\n }, sel_move);\n }),\n\n deleteH: methodOp(function(dir, unit) {\n var sel = this.doc.sel, doc = this.doc;\n if (sel.somethingSelected())\n { doc.replaceSelection(\"\", null, \"+delete\"); }\n else\n { deleteNearSelection(this, function (range) {\n var other = findPosH(doc, range.head, dir, unit, false);\n return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}\n }); }\n }),\n\n findPosV: function(from, amount, unit, goalColumn) {\n var dir = 1, x = goalColumn;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n var coords = cursorCoords(this, cur, \"div\");\n if (x == null) { x = coords.left; }\n else { coords.left = x; }\n cur = findPosV(this, coords, dir, unit);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveV: methodOp(function(dir, unit) {\n var this$1 = this;\n\n var doc = this.doc, goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range) {\n if (collapse)\n { return dir < 0 ? range.from() : range.to() }\n var headPos = cursorCoords(this$1, range.head, \"div\");\n if (range.goalColumn != null) { headPos.left = range.goalColumn; }\n goals.push(headPos.left);\n var pos = findPosV(this$1, headPos, dir, unit);\n if (unit == \"page\" && range == doc.sel.primary())\n { addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top); }\n return pos\n }, sel_move);\n if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n { doc.sel.ranges[i].goalColumn = goals[i]; } }\n }),\n\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function(pos) {\n var doc = this.doc, line = getLine(doc, pos.line).text;\n var start = pos.ch, end = pos.ch;\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper)\n ? function (ch) { return isWordChar(ch, helper); }\n : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n while (start > 0 && check(line.charAt(start - 1))) { --start; }\n while (end < line.length && check(line.charAt(end))) { ++end; }\n }\n return new Range(Pos(pos.line, start), Pos(pos.line, end))\n },\n\n toggleOverwrite: function(value) {\n if (value != null && value == this.state.overwrite) { return }\n if (this.state.overwrite = !this.state.overwrite)\n { addClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n else\n { rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function() { return this.display.input.getField() == activeElt(root(this)) },\n isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),\n getScrollInfo: function() {\n var scroller = this.display.scroller;\n return {left: scroller.scrollLeft, top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\n },\n\n scrollIntoView: methodOp(function(range, margin) {\n if (range == null) {\n range = {from: this.doc.sel.primary().head, to: null};\n if (margin == null) { margin = this.options.cursorScrollMargin; }\n } else if (typeof range == \"number\") {\n range = {from: Pos(range, 0), to: null};\n } else if (range.from == null) {\n range = {from: range, to: null};\n }\n if (!range.to) { range.to = range.from; }\n range.margin = margin || 0;\n\n if (range.from.line != null) {\n scrollToRange(this, range);\n } else {\n scrollToCoordsRange(this, range.from, range.to, range.margin);\n }\n }),\n\n setSize: methodOp(function(width, height) {\n var this$1 = this;\n\n var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n if (width != null) { this.display.wrapper.style.width = interpret(width); }\n if (height != null) { this.display.wrapper.style.height = interpret(height); }\n if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n var lineNo = this.display.viewFrom;\n this.doc.iter(lineNo, this.display.viewTo, function (line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo, \"widget\"); break } } }\n ++lineNo;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n\n operation: function(f){return runInOp(this, f)},\n startOperation: function(){return startOperation(this)},\n endOperation: function(){return endOperation(this)},\n\n refresh: methodOp(function() {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this.display);\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping)\n { estimateLineHeights(this); }\n signal(this, \"refresh\", this);\n }),\n\n swapDoc: methodOp(function(doc) {\n var old = this.doc;\n old.cm = null;\n // Cancel the current text selection if any (#5821)\n if (this.state.selectingText) { this.state.selectingText(); }\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old\n }),\n\n phrase: function(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText\n },\n\n getInputField: function(){return this.display.input.getField()},\n getWrapperElement: function(){return this.display.wrapper},\n getScrollerElement: function(){return this.display.scroller},\n getGutterElement: function(){return this.display.gutters}\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function(type, name, value) {\n if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n helpers[type][name] = value;\n };\n CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n helpers[type]._global.push({pred: predicate, val: value});\n };\n }\n\n // Used for horizontal relative motion. Dir is -1 or 1 (left or\n // right), unit can be \"codepoint\", \"char\", \"column\" (like char, but\n // doesn't cross line boundaries), \"word\" (across next word), or\n // \"group\" (to the start of next group of word or\n // non-word-non-whitespace chars). The visually param controls\n // whether, in right-to-left text, direction 1 means to move towards\n // the next index in the string, or towards the character to the right\n // of the current position. The resulting position will have a\n // hitSide=true property if it reached the end of the document.\n function findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n function findNextLine() {\n var l = pos.line + lineDir;\n if (l < doc.first || l >= doc.first + doc.size) { return false }\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l)\n }\n function moveOnce(boundToLine) {\n var next;\n if (unit == \"codepoint\") {\n var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1));\n if (isNaN(ch)) {\n next = null;\n } else {\n var astral = dir > 0 ? ch >= 0xD800 && ch < 0xDC00 : ch >= 0xDC00 && ch < 0xDFFF;\n next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir);\n }\n } else if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n if (next == null) {\n if (!boundToLine && findNextLine())\n { pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir); }\n else\n { return false }\n } else {\n pos = next;\n }\n return true\n }\n\n if (unit == \"char\" || unit == \"codepoint\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null, group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) { break }\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\"\n : group && cur == \"\\n\" ? \"n\"\n : !group || /\\s/.test(cur) ? null\n : \"p\";\n if (group && !first && !type) { type = \"s\"; }\n if (sawType && sawType != type) {\n if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n break\n }\n\n if (type) { sawType = type; }\n if (dir > 0 && !moveOnce(!first)) { break }\n }\n }\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n return result\n }\n\n // For relative vertical movement. Dir may be -1 or 1. Unit can be\n // \"page\" or \"line\". The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n function findPosV(cm, pos, dir, unit) {\n var doc = cm.doc, x = pos.left, y;\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, win(cm).innerHeight || doc(cm).documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n var target;\n for (;;) {\n target = coordsChar(cm, x, y);\n if (!target.outside) { break }\n if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n y += dir * 5;\n }\n return target\n }\n\n // CONTENTEDITABLE INPUT STYLE\n\n var ContentEditableInput = function(cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n\n ContentEditableInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = input.cm;\n var div = input.div = display.lineDiv;\n div.contentEditable = true;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n function belongsToInput(e) {\n for (var t = e.target; t; t = t.parentNode) {\n if (t == div) { return true }\n if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) { break }\n }\n return false\n }\n\n on(div, \"paste\", function (e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n });\n\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {data: e.data, done: false};\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n this$1.composing.done = true;\n }\n });\n\n on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n on(div, \"input\", function () {\n if (!this$1.composing) { this$1.readFromDOMSoon(); }\n });\n\n function onCopyCut(e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\");\n // iOS exposes the clipboard API, but seems to discard content inserted into it\n e.clipboardData.setData(\"Text\", content);\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return\n }\n }\n // Old-fashioned briefly-focus-a-textarea hack\n var kludge = hiddenTextarea(), te = kludge.firstChild;\n disableBrowserMagic(te);\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = activeElt(rootNode(div));\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n if (hadFocus == div) { input.showPrimarySelection(); }\n }, 50);\n }\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.div.setAttribute('aria-label', label);\n } else {\n this.div.removeAttribute('aria-label');\n }\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = activeElt(rootNode(this.div)) == this.div;\n return result\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) { return }\n if (info.focus || takeFocus) { this.showPrimarySelection(); }\n this.showMultipleSelections(info);\n };\n\n ContentEditableInput.prototype.getSelection = function () {\n return this.cm.display.wrapper.ownerDocument.getSelection()\n };\n\n ContentEditableInput.prototype.showPrimarySelection = function () {\n var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n var from = prim.from(), to = prim.to();\n\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return\n }\n\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n cmp(minPos(curAnchor, curFocus), from) == 0 &&\n cmp(maxPos(curAnchor, curFocus), to) == 0)\n { return }\n\n var view = cm.display.view;\n var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\n {node: view[0].measure.map[2], offset: 0};\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]};\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0), rng;\n try { rng = range(start.node, start.offset, end.offset, end.node); }\n catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n if (old && sel.anchorNode == null) { sel.addRange(old); }\n else if (gecko) { this.startGracePeriod(); }\n }\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n if (this$1.selectionChanged())\n { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\n }, 20);\n };\n\n ContentEditableInput.prototype.showMultipleSelections = function (info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n\n ContentEditableInput.prototype.rememberSelection = function () {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n if (!sel.rangeCount) { return false }\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node)\n };\n\n ContentEditableInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor() || activeElt(rootNode(this.div)) != this.div)\n { this.showSelection(this.prepareSelection(), true); }\n this.div.focus();\n }\n };\n ContentEditableInput.prototype.blur = function () { this.div.blur(); };\n ContentEditableInput.prototype.getField = function () { return this.div };\n\n ContentEditableInput.prototype.supportsTouch = function () { return true };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var this$1 = this;\n\n var input = this;\n if (this.selectionInEditor())\n { setTimeout(function () { return this$1.pollSelection(); }, 20); }\n else\n { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\n\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n\n ContentEditableInput.prototype.selectionChanged = function () {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n var sel = this.getSelection(), cm = this.cm;\n // On Android Chrome (version 56, at least), backspacing into an\n // uneditable block element will put the cursor in that element,\n // and then, because it's not editable, hide the virtual keyboard.\n // Because Android doesn't allow us to actually detect backspace\n // presses in a sane way, this code checks for when that happens\n // and simulates a backspace press in this case.\n if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n this.blur();\n this.focus();\n return\n }\n if (this.composing) { return }\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (anchor && head) { runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\n }); }\n };\n\n ContentEditableInput.prototype.pollContent = function () {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n\n var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n var from = sel.from(), to = sel.to();\n if (from.ch == 0 && from.line > cm.firstLine())\n { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n { to = Pos(to.line + 1, 0); }\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n var fromIndex, fromLine, fromNode;\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n\n if (!fromNode) { return false }\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n else { break }\n }\n\n var cutFront = 0, cutEnd = 0;\n var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n { ++cutFront; }\n var newBot = lst(newText), oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n oldBot.length - (oldText.length == 1 ? cutFront : 0));\n while (cutEnd < maxCutEnd &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n { ++cutEnd; }\n // Try to move start of change to start of selection if ambiguous\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n return true\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) { return }\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) { return }\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n if (this$1.composing) {\n if (this$1.composing.done) { this$1.composing = null; }\n else { return }\n }\n this$1.updateFromDOM();\n }, 80);\n };\n\n ContentEditableInput.prototype.updateFromDOM = function () {\n var this$1 = this;\n\n if (this.cm.isReadOnly() || !this.pollContent())\n { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\n };\n\n ContentEditableInput.prototype.setUneditable = function (node) {\n node.contentEditable = \"false\";\n };\n\n ContentEditableInput.prototype.onKeyPress = function (e) {\n if (e.charCode == 0 || this.composing) { return }\n e.preventDefault();\n if (!this.cm.isReadOnly())\n { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\n };\n\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n ContentEditableInput.prototype.resetPosition = function () {};\n\n ContentEditableInput.prototype.needsContentAttribute = true;\n\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n if (!view || view.hidden) { return null }\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n\n var order = getOrder(line, cm.doc.direction), side = \"left\";\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result\n }\n\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode)\n { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\n return false\n }\n\n function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false;\n function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n function close() {\n if (closing) {\n text += lineSep;\n if (extraLinebreak) { text += lineSep; }\n closing = extraLinebreak = false;\n }\n }\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n if (cmText) {\n addText(cmText);\n return\n }\n var markerID = node.getAttribute(\"cm-marker\"), range;\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n if (found.length && (range = found[0].find(0)))\n { addText(getBetween(cm.doc, range.from, range.to).join(lineSep)); }\n return\n }\n if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return }\n\n if (isBlock) { close(); }\n for (var i = 0; i < node.childNodes.length; i++)\n { walk(node.childNodes[i]); }\n\n if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; }\n if (isBlock) { closing = true; }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n for (;;) {\n walk(from);\n if (from == to) { break }\n from = from.nextSibling;\n extraLinebreak = false;\n }\n return text\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n node = null; offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n }\n }\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n if (lineView.node == lineNode)\n { return locateNodeInLineView(lineView, node, offset) }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild, bad = false;\n if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad)\n }\n }\n\n var textNode = node.nodeType == 3 ? node : null, topNode = node;\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n if (offset) { offset = textNode.nodeValue.length; }\n }\n while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n var measure = lineView.measure, maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map = i < 0 ? measure.map : maps[i];\n for (var j = 0; j < map.length; j += 3) {\n var curNode = map[j + 2];\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map[j] + offset;\n if (offset < 0 || curNode != textNode) { ch = map[j + (offset ? 1 : 0)]; }\n return Pos(line, ch)\n }\n }\n }\n }\n var found = find(textNode, topNode, offset);\n if (found) { return badPos(found, bad) }\n\n // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n if (found)\n { return badPos(Pos(found.line, found.ch - dist), bad) }\n else\n { dist += after.textContent.length; }\n }\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n if (found)\n { return badPos(Pos(found.line, found.ch + dist$1), bad) }\n else\n { dist$1 += before.textContent.length; }\n }\n }\n\n // TEXTAREA INPUT STYLE\n\n var TextareaInput = function(cm) {\n this.cm = cm;\n // See input.poll and input.reset\n this.prevInput = \"\";\n\n // Flag that indicates whether we expect input to appear real soon\n // now (after some event like 'keypress' or 'input') and are\n // polling intensively.\n this.pollingFast = false;\n // Self-resetting timeout for the poller\n this.polling = new Delayed();\n // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n this.hasSelection = false;\n this.composing = null;\n this.resetting = false;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n\n // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n if (ios) { te.style.width = \"0px\"; }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n input.poll();\n });\n\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n cm.state.pasteIncoming = +new Date;\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n if (e.type == \"cut\") { cm.state.cutIncoming = +new Date; }\n }\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date;\n input.focus();\n return\n }\n\n // Pass the `paste` event to the textarea so it's handled by its event listener.\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n });\n\n // Prevent normal selection in the editor (we handle our own)\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) { e_preventDefault(e); }\n });\n\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n if (input.composing) { input.composing.range.clear(); }\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\n };\n });\n on(te, \"compositionend\", function () {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n\n TextareaInput.prototype.createField = function (_display) {\n // Wraps and hides input textarea\n this.wrapper = hiddenTextarea();\n // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n this.textarea = this.wrapper.firstChild;\n var opts = this.cm.options;\n disableBrowserMagic(this.textarea, opts.spellcheck, opts.autocorrect, opts.autocapitalize);\n };\n\n TextareaInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.textarea.setAttribute('aria-label', label);\n } else {\n this.textarea.removeAttribute('aria-label');\n }\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm, display = cm.display, doc = cm.doc;\n var result = prepareSelection(cm);\n\n // Move the hidden textarea near the cursor to prevent scrolling artifacts\n if (cm.options.moveInputWithCursor) {\n var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm, display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n };\n\n // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing && typing) { return }\n var cm = this.cm;\n this.resetting = true;\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n if (cm.state.focused) { selectInput(this.textarea); }\n if (ie && ie_version >= 9) { this.hasSelection = content; }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n }\n this.resetting = false;\n };\n\n TextareaInput.prototype.getField = function () { return this.textarea };\n\n TextareaInput.prototype.supportsTouch = function () { return false };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt(rootNode(this.textarea)) != this.textarea)) {\n try { this.textarea.focus(); }\n catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n }\n };\n\n TextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) { return }\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n if (this$1.cm.state.focused) { this$1.slowPoll(); }\n });\n };\n\n // When an event has just come in that is likely to add or change\n // something in the input textarea, we poll faster, to ensure that\n // the change appears on the screen quickly.\n TextareaInput.prototype.fastPoll = function () {\n var missed = false, input = this;\n input.pollingFast = true;\n function p() {\n var changed = input.poll();\n if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n else {input.pollingFast = false; input.slowPoll();}\n }\n input.polling.set(20, p);\n };\n\n // Read input from the textarea, and update the document to match.\n // When something is selected, it is present in the textarea, and\n // selected (unless it is huge, in which case a placeholder is\n // used). When nothing is selected, the cursor sits after previously\n // seen text (can be empty), which is stored in prevInput (we must\n // not reset the textarea when typing, because that breaks IME).\n TextareaInput.prototype.poll = function () {\n var this$1 = this;\n\n var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n // Since this is called a *lot*, try to bail out as cheaply as\n // possible when it is clear that nothing happened. hasSelection\n // will be the case when there is a lot of text in the textarea,\n // in which case reading its value would be expensive.\n if (this.contextMenuPending || this.resetting || !cm.state.focused ||\n (hasSelection(input) && !prevInput && !this.composing) ||\n cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n { return false }\n\n var text = input.value;\n // If nothing changed, bail.\n if (text == prevInput && !cm.somethingSelected()) { return false }\n // Work around nonsensical selection resetting in IE9/10, and\n // inexplicable appearance of private area unicode characters on\n // some key combos in Mac (#2689).\n if (ie && ie_version >= 9 && this.hasSelection === text ||\n mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false\n }\n\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n }\n // Find the part of the input that is actually new\n var same = 0, l = Math.min(prevInput.length, text.length);\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same,\n null, this$1.composing ? \"*compose\" : null);\n\n // Don't leave long text in the textarea, since it makes further polling slow\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n else { this$1.prevInput = text; }\n\n if (this$1.composing) {\n this$1.composing.range.clear();\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"),\n {className: \"CodeMirror-composing\"});\n }\n });\n return true\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n if (input.contextMenuPending) { input.contextMenuPending(); }\n var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n if (!pos || presto) { return } // Opera is difficult.\n\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n var reset = cm.options.resetSelectionOnContextMenu;\n if (reset && cm.doc.sel.contains(pos) == -1)\n { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n if (webkit) { oldScrollY = te.ownerDocument.defaultView.scrollY; } // Work around Chrome issue (#2712)\n display.input.focus();\n if (webkit) { te.ownerDocument.defaultView.scrollTo(null, oldScrollY); }\n display.input.reset();\n // Adds \"Select all\" to context menu in FF\n if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll);\n\n // Select-all will be greyed out if there's nothing to select, so\n // this adds a zero-width space so that we can later check whether\n // it got selected.\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200b\" + (selected ? te.value : \"\");\n te.value = \"\\u21da\"; // Used to catch context-menu undo\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200b\";\n te.selectionStart = 1; te.selectionEnd = extval.length;\n // Re-set this, in case some other handler touched the\n // selection in the meantime.\n display.selForContextMenu = cm.doc.sel;\n }\n }\n function rehide() {\n if (input.contextMenuPending != rehide) { return }\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n // Try to detect the user choosing select-all\n if (te.selectionStart != null) {\n if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n var i = 0, poll = function () {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n operation(cm, selectAll)(cm);\n } else if (i++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n if (captureRightClick) {\n e_stop(e);\n var mouseup = function () {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) { this.reset(); }\n this.textarea.disabled = val == \"nocursor\";\n this.textarea.readOnly = !!val;\n };\n\n TextareaInput.prototype.setUneditable = function () {};\n\n TextareaInput.prototype.needsContentAttribute = false;\n\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n if (!options.tabindex && textarea.tabIndex)\n { options.tabindex = textarea.tabIndex; }\n if (!options.placeholder && textarea.placeholder)\n { options.placeholder = textarea.placeholder; }\n // Set autofocus to true if this textarea is focused, or if it has\n // autofocus and no other element is focused.\n if (options.autofocus == null) {\n var hasFocus = activeElt(rootNode(textarea));\n options.autofocus = hasFocus == textarea ||\n textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {textarea.value = cm.getValue();}\n\n var realSubmit;\n if (textarea.form) {\n on(textarea.form, \"submit\", save);\n // Deplorable hack to make the submit method do the right thing.\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n try {\n var wrappedSubmit = form.submit = function () {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch(e) {}\n }\n }\n\n options.finishInit = function (cm) {\n cm.save = save;\n cm.getTextArea = function () { return textarea; };\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\")\n { textarea.form.submit = realSubmit; }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\n options);\n return cm\n }\n\n function addLegacyProps(CodeMirror) {\n CodeMirror.off = off;\n CodeMirror.on = on;\n CodeMirror.wheelEventPixels = wheelEventPixels;\n CodeMirror.Doc = Doc;\n CodeMirror.splitLines = splitLinesAuto;\n CodeMirror.countColumn = countColumn;\n CodeMirror.findColumn = findColumn;\n CodeMirror.isWordChar = isWordCharBasic;\n CodeMirror.Pass = Pass;\n CodeMirror.signal = signal;\n CodeMirror.Line = Line;\n CodeMirror.changeEnd = changeEnd;\n CodeMirror.scrollbarModel = scrollbarModel;\n CodeMirror.Pos = Pos;\n CodeMirror.cmpPos = cmp;\n CodeMirror.modes = modes;\n CodeMirror.mimeModes = mimeModes;\n CodeMirror.resolveMode = resolveMode;\n CodeMirror.getMode = getMode;\n CodeMirror.modeExtensions = modeExtensions;\n CodeMirror.extendMode = extendMode;\n CodeMirror.copyState = copyState;\n CodeMirror.startState = startState;\n CodeMirror.innerMode = innerMode;\n CodeMirror.commands = commands;\n CodeMirror.keyMap = keyMap;\n CodeMirror.keyName = keyName;\n CodeMirror.isModifierKey = isModifierKey;\n CodeMirror.lookupKey = lookupKey;\n CodeMirror.normalizeKeyMap = normalizeKeyMap;\n CodeMirror.StringStream = StringStream;\n CodeMirror.SharedTextMarker = SharedTextMarker;\n CodeMirror.TextMarker = TextMarker;\n CodeMirror.LineWidget = LineWidget;\n CodeMirror.e_preventDefault = e_preventDefault;\n CodeMirror.e_stopPropagation = e_stopPropagation;\n CodeMirror.e_stop = e_stop;\n CodeMirror.addClass = addClass;\n CodeMirror.contains = contains;\n CodeMirror.rmClass = rmClass;\n CodeMirror.keyNames = keyNames;\n }\n\n // EDITOR CONSTRUCTOR\n\n defineOptions(CodeMirror);\n\n addEditorMethods(CodeMirror);\n\n // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n { CodeMirror.prototype[prop] = (function(method) {\n return function() {return method.apply(this.doc, arguments)}\n })(Doc.prototype[prop]); } }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n CodeMirror.defineMode = function(name/*, mode, \u2026*/) {\n if (!CodeMirror.defaults.mode && name != \"null\") { CodeMirror.defaults.mode = name; }\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME;\n\n // Minimal default mode.\n CodeMirror.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\n CodeMirror.defineMIME(\"text/plain\", \"null\");\n\n // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n\n addLegacyProps(CodeMirror);\n\n CodeMirror.version = \"5.65.18\";\n\n return CodeMirror;\n\n})));\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"javascript\", function(config, parserConfig) {\n var indentUnit = config.indentUnit;\n var statementIndent = parserConfig.statementIndent;\n var jsonldMode = parserConfig.jsonld;\n var jsonMode = parserConfig.json || jsonldMode;\n var trackScope = parserConfig.trackScope !== false\n var isTS = parserConfig.typescript;\n var wordRE = parserConfig.wordCharacters || /[\\w$\\xa1-\\uffff]/;\n\n // Tokenizer\n\n var keywords = function(){\n function kw(type) {return {type: type, style: \"keyword\"};}\n var A = kw(\"keyword a\"), B = kw(\"keyword b\"), C = kw(\"keyword c\"), D = kw(\"keyword d\");\n var operator = kw(\"operator\"), atom = {type: \"atom\", style: \"atom\"};\n\n return {\n \"if\": kw(\"if\"), \"while\": A, \"with\": A, \"else\": B, \"do\": B, \"try\": B, \"finally\": B,\n \"return\": D, \"break\": D, \"continue\": D, \"new\": kw(\"new\"), \"delete\": C, \"void\": C, \"throw\": C,\n \"debugger\": kw(\"debugger\"), \"var\": kw(\"var\"), \"const\": kw(\"var\"), \"let\": kw(\"var\"),\n \"function\": kw(\"function\"), \"catch\": kw(\"catch\"),\n \"for\": kw(\"for\"), \"switch\": kw(\"switch\"), \"case\": kw(\"case\"), \"default\": kw(\"default\"),\n \"in\": operator, \"typeof\": operator, \"instanceof\": operator,\n \"true\": atom, \"false\": atom, \"null\": atom, \"undefined\": atom, \"NaN\": atom, \"Infinity\": atom,\n \"this\": kw(\"this\"), \"class\": kw(\"class\"), \"super\": kw(\"atom\"),\n \"yield\": C, \"export\": kw(\"export\"), \"import\": kw(\"import\"), \"extends\": C,\n \"await\": C\n };\n }();\n\n var isOperatorChar = /[+\\-*&%=<>!?|~^@]/;\n var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\"/;\n\n function readRegexp(stream) {\n var escaped = false, next, inSet = false;\n while ((next = stream.next()) != null) {\n if (!escaped) {\n if (next == \"/\" && !inSet) return;\n if (next == \"[\") inSet = true;\n else if (inSet && next == \"]\") inSet = false;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n }\n\n // Used as scratch variables to communicate multiple values without\n // consing up tons of objects.\n var type, content;\n function ret(tp, style, cont) {\n type = tp; content = cont;\n return style;\n }\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (ch == '\"' || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \".\" && stream.match(/^\\d[\\d_]*(?:[eE][+\\-]?[\\d_]+)?/)) {\n return ret(\"number\", \"number\");\n } else if (ch == \".\" && stream.match(\"..\")) {\n return ret(\"spread\", \"meta\");\n } else if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n return ret(ch);\n } else if (ch == \"=\" && stream.eat(\">\")) {\n return ret(\"=>\", \"operator\");\n } else if (ch == \"0\" && stream.match(/^(?:x[\\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) {\n return ret(\"number\", \"number\");\n } else if (/\\d/.test(ch)) {\n stream.match(/^[\\d_]*(?:n|(?:\\.[\\d_]*)?(?:[eE][+\\-]?[\\d_]+)?)?/);\n return ret(\"number\", \"number\");\n } else if (ch == \"/\") {\n if (stream.eat(\"*\")) {\n state.tokenize = tokenComment;\n return tokenComment(stream, state);\n } else if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return ret(\"comment\", \"comment\");\n } else if (expressionAllowed(stream, state, 1)) {\n readRegexp(stream);\n stream.match(/^\\b(([gimyus])(?![gimyus]*\\2))+\\b/);\n return ret(\"regexp\", \"string-2\");\n } else {\n stream.eat(\"=\");\n return ret(\"operator\", \"operator\", stream.current());\n }\n } else if (ch == \"`\") {\n state.tokenize = tokenQuasi;\n return tokenQuasi(stream, state);\n } else if (ch == \"#\" && stream.peek() == \"!\") {\n stream.skipToEnd();\n return ret(\"meta\", \"meta\");\n } else if (ch == \"#\" && stream.eatWhile(wordRE)) {\n return ret(\"variable\", \"property\")\n } else if (ch == \"<\" && stream.match(\"!--\") ||\n (ch == \"-\" && stream.match(\"->\") && !/\\S/.test(stream.string.slice(0, stream.start)))) {\n stream.skipToEnd()\n return ret(\"comment\", \"comment\")\n } else if (isOperatorChar.test(ch)) {\n if (ch != \">\" || !state.lexical || state.lexical.type != \">\") {\n if (stream.eat(\"=\")) {\n if (ch == \"!\" || ch == \"=\") stream.eat(\"=\")\n } else if (/[<>*+\\-|&?]/.test(ch)) {\n stream.eat(ch)\n if (ch == \">\") stream.eat(ch)\n }\n }\n if (ch == \"?\" && stream.eat(\".\")) return ret(\".\")\n return ret(\"operator\", \"operator\", stream.current());\n } else if (wordRE.test(ch)) {\n stream.eatWhile(wordRE);\n var word = stream.current()\n if (state.lastType != \".\") {\n if (keywords.propertyIsEnumerable(word)) {\n var kw = keywords[word]\n return ret(kw.type, kw.style, word)\n }\n if (word == \"async\" && stream.match(/^(\\s|\\/\\*([^*]|\\*(?!\\/))*?\\*\\/)*[\\[\\(\\w]/, false))\n return ret(\"async\", \"keyword\", word)\n }\n return ret(\"variable\", \"variable\", word)\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, next;\n if (jsonldMode && stream.peek() == \"@\" && stream.match(isJsonldKeyword)){\n state.tokenize = tokenBase;\n return ret(\"jsonld-keyword\", \"meta\");\n }\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped) break;\n escaped = !escaped && next == \"\\\\\";\n }\n if (!escaped) state.tokenize = tokenBase;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenComment(stream, state) {\n var maybeEnd = false, ch;\n while (ch = stream.next()) {\n if (ch == \"/\" && maybeEnd) {\n state.tokenize = tokenBase;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return ret(\"comment\", \"comment\");\n }\n\n function tokenQuasi(stream, state) {\n var escaped = false, next;\n while ((next = stream.next()) != null) {\n if (!escaped && (next == \"`\" || next == \"$\" && stream.eat(\"{\"))) {\n state.tokenize = tokenBase;\n break;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n return ret(\"quasi\", \"string-2\", stream.current());\n }\n\n var brackets = \"([{}])\";\n // This is a crude lookahead trick to try and notice that we're\n // parsing the argument patterns for a fat-arrow function before we\n // actually hit the arrow token. It only works if the arrow is on\n // the same line as the arguments and there's no strange noise\n // (comments) in between. Fallback is to only notice when we hit the\n // arrow, and not declare the arguments as locals for the arrow\n // body.\n function findFatArrow(stream, state) {\n if (state.fatArrowAt) state.fatArrowAt = null;\n var arrow = stream.string.indexOf(\"=>\", stream.start);\n if (arrow < 0) return;\n\n if (isTS) { // Try to skip TypeScript return type declarations after the arguments\n var m = /:\\s*(?:\\w+(?:<[^>]*>|\\[\\])?|\\{[^}]*\\})\\s*$/.exec(stream.string.slice(stream.start, arrow))\n if (m) arrow = m.index\n }\n\n var depth = 0, sawSomething = false;\n for (var pos = arrow - 1; pos >= 0; --pos) {\n var ch = stream.string.charAt(pos);\n var bracket = brackets.indexOf(ch);\n if (bracket >= 0 && bracket < 3) {\n if (!depth) { ++pos; break; }\n if (--depth == 0) { if (ch == \"(\") sawSomething = true; break; }\n } else if (bracket >= 3 && bracket < 6) {\n ++depth;\n } else if (wordRE.test(ch)) {\n sawSomething = true;\n } else if (/[\"'\\/`]/.test(ch)) {\n for (;; --pos) {\n if (pos == 0) return\n var next = stream.string.charAt(pos - 1)\n if (next == ch && stream.string.charAt(pos - 2) != \"\\\\\") { pos--; break }\n }\n } else if (sawSomething && !depth) {\n ++pos;\n break;\n }\n }\n if (sawSomething && !depth) state.fatArrowAt = pos;\n }\n\n // Parser\n\n var atomicTypes = {\"atom\": true, \"number\": true, \"variable\": true, \"string\": true,\n \"regexp\": true, \"this\": true, \"import\": true, \"jsonld-keyword\": true};\n\n function JSLexical(indented, column, type, align, prev, info) {\n this.indented = indented;\n this.column = column;\n this.type = type;\n this.prev = prev;\n this.info = info;\n if (align != null) this.align = align;\n }\n\n function inScope(state, varname) {\n if (!trackScope) return false\n for (var v = state.localVars; v; v = v.next)\n if (v.name == varname) return true;\n for (var cx = state.context; cx; cx = cx.prev) {\n for (var v = cx.vars; v; v = v.next)\n if (v.name == varname) return true;\n }\n }\n\n function parseJS(state, style, type, content, stream) {\n var cc = state.cc;\n // Communicate our context to the combinators.\n // (Less wasteful than consing up a hundred closures on every call.)\n cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style;\n\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = true;\n\n while(true) {\n var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;\n if (combinator(type, content)) {\n while(cc.length && cc[cc.length - 1].lex)\n cc.pop()();\n if (cx.marked) return cx.marked;\n if (type == \"variable\" && inScope(state, content)) return \"variable-2\";\n return style;\n }\n }\n }\n\n // Combinator utils\n\n var cx = {state: null, column: null, marked: null, cc: null};\n function pass() {\n for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n }\n function cont() {\n pass.apply(null, arguments);\n return true;\n }\n function inList(name, list) {\n for (var v = list; v; v = v.next) if (v.name == name) return true\n return false;\n }\n function register(varname) {\n var state = cx.state;\n cx.marked = \"def\";\n if (!trackScope) return\n if (state.context) {\n if (state.lexical.info == \"var\" && state.context && state.context.block) {\n // FIXME function decls are also not block scoped\n var newContext = registerVarScoped(varname, state.context)\n if (newContext != null) {\n state.context = newContext\n return\n }\n } else if (!inList(varname, state.localVars)) {\n state.localVars = new Var(varname, state.localVars)\n return\n }\n }\n // Fall through means this is global\n if (parserConfig.globalVars && !inList(varname, state.globalVars))\n state.globalVars = new Var(varname, state.globalVars)\n }\n function registerVarScoped(varname, context) {\n if (!context) {\n return null\n } else if (context.block) {\n var inner = registerVarScoped(varname, context.prev)\n if (!inner) return null\n if (inner == context.prev) return context\n return new Context(inner, context.vars, true)\n } else if (inList(varname, context.vars)) {\n return context\n } else {\n return new Context(context.prev, new Var(varname, context.vars), false)\n }\n }\n\n function isModifier(name) {\n return name == \"public\" || name == \"private\" || name == \"protected\" || name == \"abstract\" || name == \"readonly\"\n }\n\n // Combinators\n\n function Context(prev, vars, block) { this.prev = prev; this.vars = vars; this.block = block }\n function Var(name, next) { this.name = name; this.next = next }\n\n var defaultVars = new Var(\"this\", new Var(\"arguments\", null))\n function pushcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, false)\n cx.state.localVars = defaultVars\n }\n function pushblockcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, true)\n cx.state.localVars = null\n }\n pushcontext.lex = pushblockcontext.lex = true\n function popcontext() {\n cx.state.localVars = cx.state.context.vars\n cx.state.context = cx.state.context.prev\n }\n popcontext.lex = true\n function pushlex(type, info) {\n var result = function() {\n var state = cx.state, indent = state.indented;\n if (state.lexical.type == \"stat\") indent = state.lexical.indented;\n else for (var outer = state.lexical; outer && outer.type == \")\" && outer.align; outer = outer.prev)\n indent = outer.indented;\n state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);\n };\n result.lex = true;\n return result;\n }\n function poplex() {\n var state = cx.state;\n if (state.lexical.prev) {\n if (state.lexical.type == \")\")\n state.indented = state.lexical.indented;\n state.lexical = state.lexical.prev;\n }\n }\n poplex.lex = true;\n\n function expect(wanted) {\n function exp(type) {\n if (type == wanted) return cont();\n else if (wanted == \";\" || type == \"}\" || type == \")\" || type == \"]\") return pass();\n else return cont(exp);\n };\n return exp;\n }\n\n function statement(type, value) {\n if (type == \"var\") return cont(pushlex(\"vardef\", value), vardef, expect(\";\"), poplex);\n if (type == \"keyword a\") return cont(pushlex(\"form\"), parenExpr, statement, poplex);\n if (type == \"keyword b\") return cont(pushlex(\"form\"), statement, poplex);\n if (type == \"keyword d\") return cx.stream.match(/^\\s*$/, false) ? cont() : cont(pushlex(\"stat\"), maybeexpression, expect(\";\"), poplex);\n if (type == \"debugger\") return cont(expect(\";\"));\n if (type == \"{\") return cont(pushlex(\"}\"), pushblockcontext, block, poplex, popcontext);\n if (type == \";\") return cont();\n if (type == \"if\") {\n if (cx.state.lexical.info == \"else\" && cx.state.cc[cx.state.cc.length - 1] == poplex)\n cx.state.cc.pop()();\n return cont(pushlex(\"form\"), parenExpr, statement, poplex, maybeelse);\n }\n if (type == \"function\") return cont(functiondef);\n if (type == \"for\") return cont(pushlex(\"form\"), pushblockcontext, forspec, statement, popcontext, poplex);\n if (type == \"class\" || (isTS && value == \"interface\")) {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\", type == \"class\" ? type : value), className, poplex)\n }\n if (type == \"variable\") {\n if (isTS && value == \"declare\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else if (isTS && (value == \"module\" || value == \"enum\" || value == \"type\") && cx.stream.match(/^\\s*\\w/, false)) {\n cx.marked = \"keyword\"\n if (value == \"enum\") return cont(enumdef);\n else if (value == \"type\") return cont(typename, expect(\"operator\"), typeexpr, expect(\";\"));\n else return cont(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), block, poplex, poplex)\n } else if (isTS && value == \"namespace\") {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\"), expression, statement, poplex)\n } else if (isTS && value == \"abstract\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else {\n return cont(pushlex(\"stat\"), maybelabel);\n }\n }\n if (type == \"switch\") return cont(pushlex(\"form\"), parenExpr, expect(\"{\"), pushlex(\"}\", \"switch\"), pushblockcontext,\n block, poplex, poplex, popcontext);\n if (type == \"case\") return cont(expression, expect(\":\"));\n if (type == \"default\") return cont(expect(\":\"));\n if (type == \"catch\") return cont(pushlex(\"form\"), pushcontext, maybeCatchBinding, statement, poplex, popcontext);\n if (type == \"export\") return cont(pushlex(\"stat\"), afterExport, poplex);\n if (type == \"import\") return cont(pushlex(\"stat\"), afterImport, poplex);\n if (type == \"async\") return cont(statement)\n if (value == \"@\") return cont(expression, statement)\n return pass(pushlex(\"stat\"), expression, expect(\";\"), poplex);\n }\n function maybeCatchBinding(type) {\n if (type == \"(\") return cont(funarg, expect(\")\"))\n }\n function expression(type, value) {\n return expressionInner(type, value, false);\n }\n function expressionNoComma(type, value) {\n return expressionInner(type, value, true);\n }\n function parenExpr(type) {\n if (type != \"(\") return pass()\n return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex)\n }\n function expressionInner(type, value, noComma) {\n if (cx.state.fatArrowAt == cx.stream.start) {\n var body = noComma ? arrowBodyNoComma : arrowBody;\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, expect(\"=>\"), body, popcontext);\n else if (type == \"variable\") return pass(pushcontext, pattern, expect(\"=>\"), body, popcontext);\n }\n\n var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;\n if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);\n if (type == \"function\") return cont(functiondef, maybeop);\n if (type == \"class\" || (isTS && value == \"interface\")) { cx.marked = \"keyword\"; return cont(pushlex(\"form\"), classExpression, poplex); }\n if (type == \"keyword c\" || type == \"async\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"(\") return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex, maybeop);\n if (type == \"operator\" || type == \"spread\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"[\") return cont(pushlex(\"]\"), arrayLiteral, poplex, maybeop);\n if (type == \"{\") return contCommasep(objprop, \"}\", null, maybeop);\n if (type == \"quasi\") return pass(quasi, maybeop);\n if (type == \"new\") return cont(maybeTarget(noComma));\n return cont();\n }\n function maybeexpression(type) {\n if (type.match(/[;\\}\\)\\],]/)) return pass();\n return pass(expression);\n }\n\n function maybeoperatorComma(type, value) {\n if (type == \",\") return cont(maybeexpression);\n return maybeoperatorNoComma(type, value, false);\n }\n function maybeoperatorNoComma(type, value, noComma) {\n var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;\n var expr = noComma == false ? expression : expressionNoComma;\n if (type == \"=>\") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);\n if (type == \"operator\") {\n if (/\\+\\+|--/.test(value) || isTS && value == \"!\") return cont(me);\n if (isTS && value == \"<\" && cx.stream.match(/^([^<>]|<[^<>]*>)*>\\s*\\(/, false))\n return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, me);\n if (value == \"?\") return cont(expression, expect(\":\"), expr);\n return cont(expr);\n }\n if (type == \"quasi\") { return pass(quasi, me); }\n if (type == \";\") return;\n if (type == \"(\") return contCommasep(expressionNoComma, \")\", \"call\", me);\n if (type == \".\") return cont(property, me);\n if (type == \"[\") return cont(pushlex(\"]\"), maybeexpression, expect(\"]\"), poplex, me);\n if (isTS && value == \"as\") { cx.marked = \"keyword\"; return cont(typeexpr, me) }\n if (type == \"regexp\") {\n cx.state.lastType = cx.marked = \"operator\"\n cx.stream.backUp(cx.stream.pos - cx.stream.start - 1)\n return cont(expr)\n }\n }\n function quasi(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasi);\n return cont(maybeexpression, continueQuasi);\n }\n function continueQuasi(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasi);\n }\n }\n function arrowBody(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expression);\n }\n function arrowBodyNoComma(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expressionNoComma);\n }\n function maybeTarget(noComma) {\n return function(type) {\n if (type == \".\") return cont(noComma ? targetNoComma : target);\n else if (type == \"variable\" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma)\n else return pass(noComma ? expressionNoComma : expression);\n };\n }\n function target(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorComma); }\n }\n function targetNoComma(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorNoComma); }\n }\n function maybelabel(type) {\n if (type == \":\") return cont(poplex, statement);\n return pass(maybeoperatorComma, expect(\";\"), poplex);\n }\n function property(type) {\n if (type == \"variable\") {cx.marked = \"property\"; return cont();}\n }\n function objprop(type, value) {\n if (type == \"async\") {\n cx.marked = \"property\";\n return cont(objprop);\n } else if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n if (value == \"get\" || value == \"set\") return cont(getterSetter);\n var m // Work around fat-arrow-detection complication for detecting typescript typed arrow params\n if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\\s*:\\s*/, false)))\n cx.state.fatArrowAt = cx.stream.pos + m[0].length\n return cont(afterprop);\n } else if (type == \"number\" || type == \"string\") {\n cx.marked = jsonldMode ? \"property\" : (cx.style + \" property\");\n return cont(afterprop);\n } else if (type == \"jsonld-keyword\") {\n return cont(afterprop);\n } else if (isTS && isModifier(value)) {\n cx.marked = \"keyword\"\n return cont(objprop)\n } else if (type == \"[\") {\n return cont(expression, maybetype, expect(\"]\"), afterprop);\n } else if (type == \"spread\") {\n return cont(expressionNoComma, afterprop);\n } else if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(objprop);\n } else if (type == \":\") {\n return pass(afterprop)\n }\n }\n function getterSetter(type) {\n if (type != \"variable\") return pass(afterprop);\n cx.marked = \"property\";\n return cont(functiondef);\n }\n function afterprop(type) {\n if (type == \":\") return cont(expressionNoComma);\n if (type == \"(\") return pass(functiondef);\n }\n function commasep(what, end, sep) {\n function proceed(type, value) {\n if (sep ? sep.indexOf(type) > -1 : type == \",\") {\n var lex = cx.state.lexical;\n if (lex.info == \"call\") lex.pos = (lex.pos || 0) + 1;\n return cont(function(type, value) {\n if (type == end || value == end) return pass()\n return pass(what)\n }, proceed);\n }\n if (type == end || value == end) return cont();\n if (sep && sep.indexOf(\";\") > -1) return pass(what)\n return cont(expect(end));\n }\n return function(type, value) {\n if (type == end || value == end) return cont();\n return pass(what, proceed);\n };\n }\n function contCommasep(what, end, info) {\n for (var i = 3; i < arguments.length; i++)\n cx.cc.push(arguments[i]);\n return cont(pushlex(end, info), commasep(what, end), poplex);\n }\n function block(type) {\n if (type == \"}\") return cont();\n return pass(statement, block);\n }\n function maybetype(type, value) {\n if (isTS) {\n if (type == \":\") return cont(typeexpr);\n if (value == \"?\") return cont(maybetype);\n }\n }\n function maybetypeOrIn(type, value) {\n if (isTS && (type == \":\" || value == \"in\")) return cont(typeexpr)\n }\n function mayberettype(type) {\n if (isTS && type == \":\") {\n if (cx.stream.match(/^\\s*\\w+\\s+is\\b/, false)) return cont(expression, isKW, typeexpr)\n else return cont(typeexpr)\n }\n }\n function isKW(_, value) {\n if (value == \"is\") {\n cx.marked = \"keyword\"\n return cont()\n }\n }\n function typeexpr(type, value) {\n if (value == \"keyof\" || value == \"typeof\" || value == \"infer\" || value == \"readonly\") {\n cx.marked = \"keyword\"\n return cont(value == \"typeof\" ? expressionNoComma : typeexpr)\n }\n if (type == \"variable\" || value == \"void\") {\n cx.marked = \"type\"\n return cont(afterType)\n }\n if (value == \"|\" || value == \"&\") return cont(typeexpr)\n if (type == \"string\" || type == \"number\" || type == \"atom\") return cont(afterType);\n if (type == \"[\") return cont(pushlex(\"]\"), commasep(typeexpr, \"]\", \",\"), poplex, afterType)\n if (type == \"{\") return cont(pushlex(\"}\"), typeprops, poplex, afterType)\n if (type == \"(\") return cont(commasep(typearg, \")\"), maybeReturnType, afterType)\n if (type == \"<\") return cont(commasep(typeexpr, \">\"), typeexpr)\n if (type == \"quasi\") { return pass(quasiType, afterType); }\n }\n function maybeReturnType(type) {\n if (type == \"=>\") return cont(typeexpr)\n }\n function typeprops(type) {\n if (type.match(/[\\}\\)\\]]/)) return cont()\n if (type == \",\" || type == \";\") return cont(typeprops)\n return pass(typeprop, typeprops)\n }\n function typeprop(type, value) {\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\"\n return cont(typeprop)\n } else if (value == \"?\" || type == \"number\" || type == \"string\") {\n return cont(typeprop)\n } else if (type == \":\") {\n return cont(typeexpr)\n } else if (type == \"[\") {\n return cont(expect(\"variable\"), maybetypeOrIn, expect(\"]\"), typeprop)\n } else if (type == \"(\") {\n return pass(functiondecl, typeprop)\n } else if (!type.match(/[;\\}\\)\\],]/)) {\n return cont()\n }\n }\n function quasiType(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasiType);\n return cont(typeexpr, continueQuasiType);\n }\n function continueQuasiType(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasiType);\n }\n }\n function typearg(type, value) {\n if (type == \"variable\" && cx.stream.match(/^\\s*[?:]/, false) || value == \"?\") return cont(typearg)\n if (type == \":\") return cont(typeexpr)\n if (type == \"spread\") return cont(typearg)\n return pass(typeexpr)\n }\n function afterType(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n if (value == \"|\" || type == \".\" || value == \"&\") return cont(typeexpr)\n if (type == \"[\") return cont(typeexpr, expect(\"]\"), afterType)\n if (value == \"extends\" || value == \"implements\") { cx.marked = \"keyword\"; return cont(typeexpr) }\n if (value == \"?\") return cont(typeexpr, expect(\":\"), typeexpr)\n }\n function maybeTypeArgs(_, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n }\n function typeparam() {\n return pass(typeexpr, maybeTypeDefault)\n }\n function maybeTypeDefault(_, value) {\n if (value == \"=\") return cont(typeexpr)\n }\n function vardef(_, value) {\n if (value == \"enum\") {cx.marked = \"keyword\"; return cont(enumdef)}\n return pass(pattern, maybetype, maybeAssign, vardefCont);\n }\n function pattern(type, value) {\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(pattern) }\n if (type == \"variable\") { register(value); return cont(); }\n if (type == \"spread\") return cont(pattern);\n if (type == \"[\") return contCommasep(eltpattern, \"]\");\n if (type == \"{\") return contCommasep(proppattern, \"}\");\n }\n function proppattern(type, value) {\n if (type == \"variable\" && !cx.stream.match(/^\\s*:/, false)) {\n register(value);\n return cont(maybeAssign);\n }\n if (type == \"variable\") cx.marked = \"property\";\n if (type == \"spread\") return cont(pattern);\n if (type == \"}\") return pass();\n if (type == \"[\") return cont(expression, expect(']'), expect(':'), proppattern);\n return cont(expect(\":\"), pattern, maybeAssign);\n }\n function eltpattern() {\n return pass(pattern, maybeAssign)\n }\n function maybeAssign(_type, value) {\n if (value == \"=\") return cont(expressionNoComma);\n }\n function vardefCont(type) {\n if (type == \",\") return cont(vardef);\n }\n function maybeelse(type, value) {\n if (type == \"keyword b\" && value == \"else\") return cont(pushlex(\"form\", \"else\"), statement, poplex);\n }\n function forspec(type, value) {\n if (value == \"await\") return cont(forspec);\n if (type == \"(\") return cont(pushlex(\")\"), forspec1, poplex);\n }\n function forspec1(type) {\n if (type == \"var\") return cont(vardef, forspec2);\n if (type == \"variable\") return cont(forspec2);\n return pass(forspec2)\n }\n function forspec2(type, value) {\n if (type == \")\") return cont()\n if (type == \";\") return cont(forspec2)\n if (value == \"in\" || value == \"of\") { cx.marked = \"keyword\"; return cont(expression, forspec2) }\n return pass(expression, forspec2)\n }\n function functiondef(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondef);}\n if (type == \"variable\") {register(value); return cont(functiondef);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, statement, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondef)\n }\n function functiondecl(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondecl);}\n if (type == \"variable\") {register(value); return cont(functiondecl);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondecl)\n }\n function typename(type, value) {\n if (type == \"keyword\" || type == \"variable\") {\n cx.marked = \"type\"\n return cont(typename)\n } else if (value == \"<\") {\n return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex)\n }\n }\n function funarg(type, value) {\n if (value == \"@\") cont(expression, funarg)\n if (type == \"spread\") return cont(funarg);\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(funarg); }\n if (isTS && type == \"this\") return cont(maybetype, maybeAssign)\n return pass(pattern, maybetype, maybeAssign);\n }\n function classExpression(type, value) {\n // Class expressions may have an optional name.\n if (type == \"variable\") return className(type, value);\n return classNameAfter(type, value);\n }\n function className(type, value) {\n if (type == \"variable\") {register(value); return cont(classNameAfter);}\n }\n function classNameAfter(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, classNameAfter)\n if (value == \"extends\" || value == \"implements\" || (isTS && type == \",\")) {\n if (value == \"implements\") cx.marked = \"keyword\";\n return cont(isTS ? typeexpr : expression, classNameAfter);\n }\n if (type == \"{\") return cont(pushlex(\"}\"), classBody, poplex);\n }\n function classBody(type, value) {\n if (type == \"async\" ||\n (type == \"variable\" &&\n (value == \"static\" || value == \"get\" || value == \"set\" || (isTS && isModifier(value))) &&\n cx.stream.match(/^\\s+#?[\\w$\\xa1-\\uffff]/, false))) {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n return cont(classfield, classBody);\n }\n if (type == \"number\" || type == \"string\") return cont(classfield, classBody);\n if (type == \"[\")\n return cont(expression, maybetype, expect(\"]\"), classfield, classBody)\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (isTS && type == \"(\") return pass(functiondecl, classBody)\n if (type == \";\" || type == \",\") return cont(classBody);\n if (type == \"}\") return cont();\n if (value == \"@\") return cont(expression, classBody)\n }\n function classfield(type, value) {\n if (value == \"!\") return cont(classfield)\n if (value == \"?\") return cont(classfield)\n if (type == \":\") return cont(typeexpr, maybeAssign)\n if (value == \"=\") return cont(expressionNoComma)\n var context = cx.state.lexical.prev, isInterface = context && context.info == \"interface\"\n return pass(isInterface ? functiondecl : functiondef)\n }\n function afterExport(type, value) {\n if (value == \"*\") { cx.marked = \"keyword\"; return cont(maybeFrom, expect(\";\")); }\n if (value == \"default\") { cx.marked = \"keyword\"; return cont(expression, expect(\";\")); }\n if (type == \"{\") return cont(commasep(exportField, \"}\"), maybeFrom, expect(\";\"));\n return pass(statement);\n }\n function exportField(type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(expect(\"variable\")); }\n if (type == \"variable\") return pass(expressionNoComma, exportField);\n }\n function afterImport(type) {\n if (type == \"string\") return cont();\n if (type == \"(\") return pass(expression);\n if (type == \".\") return pass(maybeoperatorComma);\n return pass(importSpec, maybeMoreImports, maybeFrom);\n }\n function importSpec(type, value) {\n if (type == \"{\") return contCommasep(importSpec, \"}\");\n if (type == \"variable\") register(value);\n if (value == \"*\") cx.marked = \"keyword\";\n return cont(maybeAs);\n }\n function maybeMoreImports(type) {\n if (type == \",\") return cont(importSpec, maybeMoreImports)\n }\n function maybeAs(_type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(importSpec); }\n }\n function maybeFrom(_type, value) {\n if (value == \"from\") { cx.marked = \"keyword\"; return cont(expression); }\n }\n function arrayLiteral(type) {\n if (type == \"]\") return cont();\n return pass(commasep(expressionNoComma, \"]\"));\n }\n function enumdef() {\n return pass(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), commasep(enummember, \"}\"), poplex, poplex)\n }\n function enummember() {\n return pass(pattern, maybeAssign);\n }\n\n function isContinuedStatement(state, textAfter) {\n return state.lastType == \"operator\" || state.lastType == \",\" ||\n isOperatorChar.test(textAfter.charAt(0)) ||\n /[,.]/.test(textAfter.charAt(0));\n }\n\n function expressionAllowed(stream, state, backUp) {\n return state.tokenize == tokenBase &&\n /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\\[{}\\(,;:]|=>)$/.test(state.lastType) ||\n (state.lastType == \"quasi\" && /\\{\\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0))))\n }\n\n // Interface\n\n return {\n startState: function(basecolumn) {\n var state = {\n tokenize: tokenBase,\n lastType: \"sof\",\n cc: [],\n lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, \"block\", false),\n localVars: parserConfig.localVars,\n context: parserConfig.localVars && new Context(null, null, false),\n indented: basecolumn || 0\n };\n if (parserConfig.globalVars && typeof parserConfig.globalVars == \"object\")\n state.globalVars = parserConfig.globalVars;\n return state;\n },\n\n token: function(stream, state) {\n if (stream.sol()) {\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = false;\n state.indented = stream.indentation();\n findFatArrow(stream, state);\n }\n if (state.tokenize != tokenComment && stream.eatSpace()) return null;\n var style = state.tokenize(stream, state);\n if (type == \"comment\") return style;\n state.lastType = type == \"operator\" && (content == \"++\" || content == \"--\") ? \"incdec\" : type;\n return parseJS(state, style, type, content, stream);\n },\n\n indent: function(state, textAfter) {\n if (state.tokenize == tokenComment || state.tokenize == tokenQuasi) return CodeMirror.Pass;\n if (state.tokenize != tokenBase) return 0;\n var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, top\n // Kludge to prevent 'maybelse' from blocking lexical scope pops\n if (!/^\\s*else\\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {\n var c = state.cc[i];\n if (c == poplex) lexical = lexical.prev;\n else if (c != maybeelse && c != popcontext) break;\n }\n while ((lexical.type == \"stat\" || lexical.type == \"form\") &&\n (firstChar == \"}\" || ((top = state.cc[state.cc.length - 1]) &&\n (top == maybeoperatorComma || top == maybeoperatorNoComma) &&\n !/^[,\\.=+\\-*:?[\\(]/.test(textAfter))))\n lexical = lexical.prev;\n if (statementIndent && lexical.type == \")\" && lexical.prev.type == \"stat\")\n lexical = lexical.prev;\n var type = lexical.type, closing = firstChar == type;\n\n if (type == \"vardef\") return lexical.indented + (state.lastType == \"operator\" || state.lastType == \",\" ? lexical.info.length + 1 : 0);\n else if (type == \"form\" && firstChar == \"{\") return lexical.indented;\n else if (type == \"form\") return lexical.indented + indentUnit;\n else if (type == \"stat\")\n return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);\n else if (lexical.info == \"switch\" && !closing && parserConfig.doubleIndentSwitch != false)\n return lexical.indented + (/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 2 * indentUnit);\n else if (lexical.align) return lexical.column + (closing ? 0 : 1);\n else return lexical.indented + (closing ? 0 : indentUnit);\n },\n\n electricInput: /^\\s*(?:case .*?:|default:|\\{|\\})$/,\n blockCommentStart: jsonMode ? null : \"/*\",\n blockCommentEnd: jsonMode ? null : \"*/\",\n blockCommentContinue: jsonMode ? null : \" * \",\n lineComment: jsonMode ? null : \"//\",\n fold: \"brace\",\n closeBrackets: \"()[]{}''\\\"\\\"``\",\n\n helperType: jsonMode ? \"json\" : \"javascript\",\n jsonldMode: jsonldMode,\n jsonMode: jsonMode,\n\n expressionAllowed: expressionAllowed,\n\n skipExpression: function(state) {\n parseJS(state, \"atom\", \"atom\", \"true\", new CodeMirror.StringStream(\"\", 2, null))\n }\n };\n});\n\nCodeMirror.registerHelper(\"wordChars\", \"javascript\", /[\\w$]/);\n\nCodeMirror.defineMIME(\"text/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"text/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/x-javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/x-json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/manifest+json\", { name: \"javascript\", json: true })\nCodeMirror.defineMIME(\"application/ld+json\", { name: \"javascript\", jsonld: true });\nCodeMirror.defineMIME(\"text/typescript\", { name: \"javascript\", typescript: true });\nCodeMirror.defineMIME(\"application/typescript\", { name: \"javascript\", typescript: true });\n\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// Open simple dialogs on top of an editor. Relies on dialog.css.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n function dialogDiv(cm, template, bottom) {\n var wrap = cm.getWrapperElement();\n var dialog;\n dialog = wrap.appendChild(document.createElement(\"div\"));\n if (bottom)\n dialog.className = \"CodeMirror-dialog CodeMirror-dialog-bottom\";\n else\n dialog.className = \"CodeMirror-dialog CodeMirror-dialog-top\";\n\n if (typeof template == \"string\") {\n dialog.innerHTML = template;\n } else { // Assuming it's a detached DOM element.\n dialog.appendChild(template);\n }\n CodeMirror.addClass(wrap, 'dialog-opened');\n return dialog;\n }\n\n function closeNotification(cm, newVal) {\n if (cm.state.currentNotificationClose)\n cm.state.currentNotificationClose();\n cm.state.currentNotificationClose = newVal;\n }\n\n CodeMirror.defineExtension(\"openDialog\", function(template, callback, options) {\n if (!options) options = {};\n\n closeNotification(this, null);\n\n var dialog = dialogDiv(this, template, options.bottom);\n var closed = false, me = this;\n function close(newVal) {\n if (typeof newVal == 'string') {\n inp.value = newVal;\n } else {\n if (closed) return;\n closed = true;\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n me.focus();\n\n if (options.onClose) options.onClose(dialog);\n }\n }\n\n var inp = dialog.getElementsByTagName(\"input\")[0], button;\n if (inp) {\n inp.focus();\n\n if (options.value) {\n inp.value = options.value;\n if (options.selectValueOnOpen !== false) {\n inp.select();\n }\n }\n\n if (options.onInput)\n CodeMirror.on(inp, \"input\", function(e) { options.onInput(e, inp.value, close);});\n if (options.onKeyUp)\n CodeMirror.on(inp, \"keyup\", function(e) {options.onKeyUp(e, inp.value, close);});\n\n CodeMirror.on(inp, \"keydown\", function(e) {\n if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) { return; }\n if (e.keyCode == 27 || (options.closeOnEnter !== false && e.keyCode == 13)) {\n inp.blur();\n CodeMirror.e_stop(e);\n close();\n }\n if (e.keyCode == 13) callback(inp.value, e);\n });\n\n if (options.closeOnBlur !== false) CodeMirror.on(dialog, \"focusout\", function (evt) {\n if (evt.relatedTarget !== null) close();\n });\n } else if (button = dialog.getElementsByTagName(\"button\")[0]) {\n CodeMirror.on(button, \"click\", function() {\n close();\n me.focus();\n });\n\n if (options.closeOnBlur !== false) CodeMirror.on(button, \"blur\", close);\n\n button.focus();\n }\n return close;\n });\n\n CodeMirror.defineExtension(\"openConfirm\", function(template, callbacks, options) {\n closeNotification(this, null);\n var dialog = dialogDiv(this, template, options && options.bottom);\n var buttons = dialog.getElementsByTagName(\"button\");\n var closed = false, me = this, blurring = 1;\n function close() {\n if (closed) return;\n closed = true;\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n me.focus();\n }\n buttons[0].focus();\n for (var i = 0; i < buttons.length; ++i) {\n var b = buttons[i];\n (function(callback) {\n CodeMirror.on(b, \"click\", function(e) {\n CodeMirror.e_preventDefault(e);\n close();\n if (callback) callback(me);\n });\n })(callbacks[i]);\n CodeMirror.on(b, \"blur\", function() {\n --blurring;\n setTimeout(function() { if (blurring <= 0) close(); }, 200);\n });\n CodeMirror.on(b, \"focus\", function() { ++blurring; });\n }\n });\n\n /*\n * openNotification\n * Opens a notification, that can be closed with an optional timer\n * (default 5000ms timer) and always closes on click.\n *\n * If a notification is opened while another is opened, it will close the\n * currently opened one and open the new one immediately.\n */\n CodeMirror.defineExtension(\"openNotification\", function(template, options) {\n closeNotification(this, close);\n var dialog = dialogDiv(this, template, options && options.bottom);\n var closed = false, doneTimer;\n var duration = options && typeof options.duration !== \"undefined\" ? options.duration : 5000;\n\n function close() {\n if (closed) return;\n closed = true;\n clearTimeout(doneTimer);\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n }\n\n CodeMirror.on(dialog, 'click', function(e) {\n CodeMirror.e_preventDefault(e);\n close();\n });\n\n if (duration)\n doneTimer = setTimeout(close, duration);\n\n return close;\n });\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n CodeMirror.defineOption(\"placeholder\", \"\", function(cm, val, old) {\n var prev = old && old != CodeMirror.Init;\n if (val && !prev) {\n cm.on(\"blur\", onBlur);\n cm.on(\"change\", onChange);\n cm.on(\"swapDoc\", onChange);\n CodeMirror.on(cm.getInputField(), \"compositionupdate\", cm.state.placeholderCompose = function() { onComposition(cm) })\n onChange(cm);\n } else if (!val && prev) {\n cm.off(\"blur\", onBlur);\n cm.off(\"change\", onChange);\n cm.off(\"swapDoc\", onChange);\n CodeMirror.off(cm.getInputField(), \"compositionupdate\", cm.state.placeholderCompose)\n clearPlaceholder(cm);\n var wrapper = cm.getWrapperElement();\n wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\");\n }\n\n if (val && !cm.hasFocus()) onBlur(cm);\n });\n\n function clearPlaceholder(cm) {\n if (cm.state.placeholder) {\n cm.state.placeholder.parentNode.removeChild(cm.state.placeholder);\n cm.state.placeholder = null;\n }\n }\n function setPlaceholder(cm) {\n clearPlaceholder(cm);\n var elt = cm.state.placeholder = document.createElement(\"pre\");\n elt.style.cssText = \"height: 0; overflow: visible\";\n elt.style.direction = cm.getOption(\"direction\");\n elt.className = \"CodeMirror-placeholder CodeMirror-line-like\";\n var placeHolder = cm.getOption(\"placeholder\")\n if (typeof placeHolder == \"string\") placeHolder = document.createTextNode(placeHolder)\n elt.appendChild(placeHolder)\n cm.display.lineSpace.insertBefore(elt, cm.display.lineSpace.firstChild);\n }\n\n function onComposition(cm) {\n setTimeout(function() {\n var empty = false\n if (cm.lineCount() == 1) {\n var input = cm.getInputField()\n empty = input.nodeName == \"TEXTAREA\" ? !cm.getLine(0).length\n : !/[^\\u200b]/.test(input.querySelector(\".CodeMirror-line\").textContent)\n }\n if (empty) setPlaceholder(cm)\n else clearPlaceholder(cm)\n }, 20)\n }\n\n function onBlur(cm) {\n if (isEmpty(cm)) setPlaceholder(cm);\n }\n function onChange(cm) {\n var wrapper = cm.getWrapperElement(), empty = isEmpty(cm);\n wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\") + (empty ? \" CodeMirror-empty\" : \"\");\n\n if (empty) setPlaceholder(cm);\n else clearPlaceholder(cm);\n }\n\n function isEmpty(cm) {\n return (cm.lineCount() === 1) && (cm.getLine(0) === \"\");\n }\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n var defaults = {\n pairs: \"()[]{}''\\\"\\\"\",\n closeBefore: \")]}'\\\":;>\",\n triples: \"\",\n explode: \"[]{}\"\n };\n\n var Pos = CodeMirror.Pos;\n\n CodeMirror.defineOption(\"autoCloseBrackets\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.removeKeyMap(keyMap);\n cm.state.closeBrackets = null;\n }\n if (val) {\n ensureBound(getOption(val, \"pairs\"))\n cm.state.closeBrackets = val;\n cm.addKeyMap(keyMap);\n }\n });\n\n function getOption(conf, name) {\n if (name == \"pairs\" && typeof conf == \"string\") return conf;\n if (typeof conf == \"object\" && conf[name] != null) return conf[name];\n return defaults[name];\n }\n\n var keyMap = {Backspace: handleBackspace, Enter: handleEnter};\n function ensureBound(chars) {\n for (var i = 0; i < chars.length; i++) {\n var ch = chars.charAt(i), key = \"'\" + ch + \"'\"\n if (!keyMap[key]) keyMap[key] = handler(ch)\n }\n }\n ensureBound(defaults.pairs + \"`\")\n\n function handler(ch) {\n return function(cm) { return handleChar(cm, ch); };\n }\n\n function getConfig(cm) {\n var deflt = cm.state.closeBrackets;\n if (!deflt || deflt.override) return deflt;\n var mode = cm.getModeAt(cm.getCursor());\n return mode.closeBrackets || deflt;\n }\n\n function handleBackspace(cm) {\n var conf = getConfig(cm);\n if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var pairs = getOption(conf, \"pairs\");\n var ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) return CodeMirror.Pass;\n var around = charsAround(cm, ranges[i].head);\n if (!around || pairs.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n }\n for (var i = ranges.length - 1; i >= 0; i--) {\n var cur = ranges[i].head;\n cm.replaceRange(\"\", Pos(cur.line, cur.ch - 1), Pos(cur.line, cur.ch + 1), \"+delete\");\n }\n }\n\n function handleEnter(cm) {\n var conf = getConfig(cm);\n var explode = conf && getOption(conf, \"explode\");\n if (!explode || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) return CodeMirror.Pass;\n var around = charsAround(cm, ranges[i].head);\n if (!around || explode.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n }\n cm.operation(function() {\n var linesep = cm.lineSeparator() || \"\\n\";\n cm.replaceSelection(linesep + linesep, null);\n moveSel(cm, -1)\n ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n var line = ranges[i].head.line;\n cm.indentLine(line, null, true);\n cm.indentLine(line + 1, null, true);\n }\n });\n }\n\n function moveSel(cm, dir) {\n var newRanges = [], ranges = cm.listSelections(), primary = 0\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i]\n if (range.head == cm.getCursor()) primary = i\n var pos = range.head.ch || dir > 0 ? {line: range.head.line, ch: range.head.ch + dir} : {line: range.head.line - 1}\n newRanges.push({anchor: pos, head: pos})\n }\n cm.setSelections(newRanges, primary)\n }\n\n function contractSelection(sel) {\n var inverted = CodeMirror.cmpPos(sel.anchor, sel.head) > 0;\n return {anchor: new Pos(sel.anchor.line, sel.anchor.ch + (inverted ? -1 : 1)),\n head: new Pos(sel.head.line, sel.head.ch + (inverted ? 1 : -1))};\n }\n\n function handleChar(cm, ch) {\n var conf = getConfig(cm);\n if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var pairs = getOption(conf, \"pairs\");\n var pos = pairs.indexOf(ch);\n if (pos == -1) return CodeMirror.Pass;\n\n var closeBefore = getOption(conf,\"closeBefore\");\n\n var triples = getOption(conf, \"triples\");\n\n var identical = pairs.charAt(pos + 1) == ch;\n var ranges = cm.listSelections();\n var opening = pos % 2 == 0;\n\n var type;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i], cur = range.head, curType;\n var next = cm.getRange(cur, Pos(cur.line, cur.ch + 1));\n if (opening && !range.empty()) {\n curType = \"surround\";\n } else if ((identical || !opening) && next == ch) {\n if (identical && stringStartsAfter(cm, cur))\n curType = \"both\";\n else if (triples.indexOf(ch) >= 0 && cm.getRange(cur, Pos(cur.line, cur.ch + 3)) == ch + ch + ch)\n curType = \"skipThree\";\n else\n curType = \"skip\";\n } else if (identical && cur.ch > 1 && triples.indexOf(ch) >= 0 &&\n cm.getRange(Pos(cur.line, cur.ch - 2), cur) == ch + ch) {\n if (cur.ch > 2 && /\\bstring/.test(cm.getTokenTypeAt(Pos(cur.line, cur.ch - 2)))) return CodeMirror.Pass;\n curType = \"addFour\";\n } else if (identical) {\n var prev = cur.ch == 0 ? \" \" : cm.getRange(Pos(cur.line, cur.ch - 1), cur)\n if (!CodeMirror.isWordChar(next) && prev != ch && !CodeMirror.isWordChar(prev)) curType = \"both\";\n else return CodeMirror.Pass;\n } else if (opening && (next.length === 0 || /\\s/.test(next) || closeBefore.indexOf(next) > -1)) {\n curType = \"both\";\n } else {\n return CodeMirror.Pass;\n }\n if (!type) type = curType;\n else if (type != curType) return CodeMirror.Pass;\n }\n\n var left = pos % 2 ? pairs.charAt(pos - 1) : ch;\n var right = pos % 2 ? ch : pairs.charAt(pos + 1);\n cm.operation(function() {\n if (type == \"skip\") {\n moveSel(cm, 1)\n } else if (type == \"skipThree\") {\n moveSel(cm, 3)\n } else if (type == \"surround\") {\n var sels = cm.getSelections();\n for (var i = 0; i < sels.length; i++)\n sels[i] = left + sels[i] + right;\n cm.replaceSelections(sels, \"around\");\n sels = cm.listSelections().slice();\n for (var i = 0; i < sels.length; i++)\n sels[i] = contractSelection(sels[i]);\n cm.setSelections(sels);\n } else if (type == \"both\") {\n cm.replaceSelection(left + right, null);\n cm.triggerElectric(left + right);\n moveSel(cm, -1)\n } else if (type == \"addFour\") {\n cm.replaceSelection(left + left + left + left, \"before\");\n moveSel(cm, 1)\n }\n });\n }\n\n function charsAround(cm, pos) {\n var str = cm.getRange(Pos(pos.line, pos.ch - 1),\n Pos(pos.line, pos.ch + 1));\n return str.length == 2 ? str : null;\n }\n\n function stringStartsAfter(cm, pos) {\n var token = cm.getTokenAt(Pos(pos.line, pos.ch + 1))\n return /\\bstring/.test(token.type) && token.start == pos.ch &&\n (pos.ch == 0 || !/\\bstring/.test(cm.getTokenTypeAt(pos)))\n }\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n var ie_lt8 = /MSIE \\d/.test(navigator.userAgent) &&\n (document.documentMode == null || document.documentMode < 8);\n\n var Pos = CodeMirror.Pos;\n\n var matching = {\"(\": \")>\", \")\": \"(<\", \"[\": \"]>\", \"]\": \"[<\", \"{\": \"}>\", \"}\": \"{<\", \"<\": \">>\", \">\": \"<<\"};\n\n function bracketRegex(config) {\n return config && config.bracketRegex || /[(){}[\\]]/\n }\n\n function findMatchingBracket(cm, where, config) {\n var line = cm.getLineHandle(where.line), pos = where.ch - 1;\n var afterCursor = config && config.afterCursor\n if (afterCursor == null)\n afterCursor = /(^| )cm-fat-cursor($| )/.test(cm.getWrapperElement().className)\n var re = bracketRegex(config)\n\n // A cursor is defined as between two characters, but in vim command mode\n // (i.e. not insert mode), the cursor is visually represented as a\n // highlighted box on top of the 2nd character. Otherwise, we allow matches\n // from before or after the cursor.\n var match = (!afterCursor && pos >= 0 && re.test(line.text.charAt(pos)) && matching[line.text.charAt(pos)]) ||\n re.test(line.text.charAt(pos + 1)) && matching[line.text.charAt(++pos)];\n if (!match) return null;\n var dir = match.charAt(1) == \">\" ? 1 : -1;\n if (config && config.strict && (dir > 0) != (pos == where.ch)) return null;\n var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));\n\n var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style, config);\n if (found == null) return null;\n return {from: Pos(where.line, pos), to: found && found.pos,\n match: found && found.ch == match.charAt(0), forward: dir > 0};\n }\n\n // bracketRegex is used to specify which type of bracket to scan\n // should be a regexp, e.g. /[[\\]]/\n //\n // Note: If \"where\" is on an open bracket, then this bracket is ignored.\n //\n // Returns false when no bracket was found, null when it reached\n // maxScanLines and gave up\n function scanForBracket(cm, where, dir, style, config) {\n var maxScanLen = (config && config.maxScanLineLength) || 10000;\n var maxScanLines = (config && config.maxScanLines) || 1000;\n\n var stack = [];\n var re = bracketRegex(config)\n var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1)\n : Math.max(cm.firstLine() - 1, where.line - maxScanLines);\n for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {\n var line = cm.getLine(lineNo);\n if (!line) continue;\n var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1;\n if (line.length > maxScanLen) continue;\n if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);\n for (; pos != end; pos += dir) {\n var ch = line.charAt(pos);\n if (re.test(ch) && (style === undefined ||\n (cm.getTokenTypeAt(Pos(lineNo, pos + 1)) || \"\") == (style || \"\"))) {\n var match = matching[ch];\n if (match && (match.charAt(1) == \">\") == (dir > 0)) stack.push(ch);\n else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch};\n else stack.pop();\n }\n }\n }\n return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null;\n }\n\n function matchBrackets(cm, autoclear, config) {\n // Disable brace matching in long lines, since it'll cause hugely slow updates\n var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000,\n highlightNonMatching = config && config.highlightNonMatching;\n var marks = [], ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, config);\n if (match && (match.match || highlightNonMatching !== false) && cm.getLine(match.from.line).length <= maxHighlightLen) {\n var style = match.match ? \"CodeMirror-matchingbracket\" : \"CodeMirror-nonmatchingbracket\";\n marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style}));\n if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen)\n marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style}));\n }\n }\n\n if (marks.length) {\n // Kludge to work around the IE bug from issue #1193, where text\n // input stops going to the textarea whenever this fires.\n if (ie_lt8 && cm.state.focused) cm.focus();\n\n var clear = function() {\n cm.operation(function() {\n for (var i = 0; i < marks.length; i++) marks[i].clear();\n });\n };\n if (autoclear) setTimeout(clear, 800);\n else return clear;\n }\n }\n\n function doMatchBrackets(cm) {\n cm.operation(function() {\n if (cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n cm.state.matchBrackets.currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);\n });\n }\n\n function clearHighlighted(cm) {\n if (cm.state.matchBrackets && cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n }\n\n CodeMirror.defineOption(\"matchBrackets\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.off(\"cursorActivity\", doMatchBrackets);\n cm.off(\"focus\", doMatchBrackets)\n cm.off(\"blur\", clearHighlighted)\n clearHighlighted(cm);\n }\n if (val) {\n cm.state.matchBrackets = typeof val == \"object\" ? val : {};\n cm.on(\"cursorActivity\", doMatchBrackets);\n cm.on(\"focus\", doMatchBrackets)\n cm.on(\"blur\", clearHighlighted)\n }\n });\n\n CodeMirror.defineExtension(\"matchBrackets\", function() {matchBrackets(this, true);});\n CodeMirror.defineExtension(\"findMatchingBracket\", function(pos, config, oldConfig){\n // Backwards-compatibility kludge\n if (oldConfig || typeof config == \"boolean\") {\n if (!oldConfig) {\n config = config ? {strict: true} : null\n } else {\n oldConfig.strict = config\n config = oldConfig\n }\n }\n return findMatchingBracket(this, pos, config)\n });\n CodeMirror.defineExtension(\"scanForBracket\", function(pos, dir, style, config){\n return scanForBracket(this, pos, dir, style, config);\n });\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// declare global: DOMRect\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var HINT_ELEMENT_CLASS = \"CodeMirror-hint\";\n var ACTIVE_HINT_ELEMENT_CLASS = \"CodeMirror-hint-active\";\n\n // This is the old interface, kept around for now to stay\n // backwards-compatible.\n CodeMirror.showHint = function(cm, getHints, options) {\n if (!getHints) return cm.showHint(options);\n if (options && options.async) getHints.async = true;\n var newOpts = {hint: getHints};\n if (options) for (var prop in options) newOpts[prop] = options[prop];\n return cm.showHint(newOpts);\n };\n\n CodeMirror.defineExtension(\"showHint\", function(options) {\n options = parseOptions(this, this.getCursor(\"start\"), options);\n var selections = this.listSelections()\n if (selections.length > 1) return;\n // By default, don't allow completion when something is selected.\n // A hint function can have a `supportsSelection` property to\n // indicate that it can handle selections.\n if (this.somethingSelected()) {\n if (!options.hint.supportsSelection) return;\n // Don't try with cross-line selections\n for (var i = 0; i < selections.length; i++)\n if (selections[i].head.line != selections[i].anchor.line) return;\n }\n\n if (this.state.completionActive) this.state.completionActive.close();\n var completion = this.state.completionActive = new Completion(this, options);\n if (!completion.options.hint) return;\n\n CodeMirror.signal(this, \"startCompletion\", this);\n completion.update(true);\n });\n\n CodeMirror.defineExtension(\"closeHint\", function() {\n if (this.state.completionActive) this.state.completionActive.close()\n })\n\n function Completion(cm, options) {\n this.cm = cm;\n this.options = options;\n this.widget = null;\n this.debounce = 0;\n this.tick = 0;\n this.startPos = this.cm.getCursor(\"start\");\n this.startLen = this.cm.getLine(this.startPos.line).length - this.cm.getSelection().length;\n\n if (this.options.updateOnCursorActivity) {\n var self = this;\n cm.on(\"cursorActivity\", this.activityFunc = function() { self.cursorActivity(); });\n }\n }\n\n var requestAnimationFrame = window.requestAnimationFrame || function(fn) {\n return setTimeout(fn, 1000/60);\n };\n var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;\n\n Completion.prototype = {\n close: function() {\n if (!this.active()) return;\n this.cm.state.completionActive = null;\n this.tick = null;\n if (this.options.updateOnCursorActivity) {\n this.cm.off(\"cursorActivity\", this.activityFunc);\n }\n\n if (this.widget && this.data) CodeMirror.signal(this.data, \"close\");\n if (this.widget) this.widget.close();\n CodeMirror.signal(this.cm, \"endCompletion\", this.cm);\n },\n\n active: function() {\n return this.cm.state.completionActive == this;\n },\n\n pick: function(data, i) {\n var completion = data.list[i], self = this;\n this.cm.operation(function() {\n if (completion.hint)\n completion.hint(self.cm, data, completion);\n else\n self.cm.replaceRange(getText(completion), completion.from || data.from,\n completion.to || data.to, \"complete\");\n CodeMirror.signal(data, \"pick\", completion);\n self.cm.scrollIntoView();\n });\n if (this.options.closeOnPick) {\n this.close();\n }\n },\n\n cursorActivity: function() {\n if (this.debounce) {\n cancelAnimationFrame(this.debounce);\n this.debounce = 0;\n }\n\n var identStart = this.startPos;\n if(this.data) {\n identStart = this.data.from;\n }\n\n var pos = this.cm.getCursor(), line = this.cm.getLine(pos.line);\n if (pos.line != this.startPos.line || line.length - pos.ch != this.startLen - this.startPos.ch ||\n pos.ch < identStart.ch || this.cm.somethingSelected() ||\n (!pos.ch || this.options.closeCharacters.test(line.charAt(pos.ch - 1)))) {\n this.close();\n } else {\n var self = this;\n this.debounce = requestAnimationFrame(function() {self.update();});\n if (this.widget) this.widget.disable();\n }\n },\n\n update: function(first) {\n if (this.tick == null) return\n var self = this, myTick = ++this.tick\n fetchHints(this.options.hint, this.cm, this.options, function(data) {\n if (self.tick == myTick) self.finishUpdate(data, first)\n })\n },\n\n finishUpdate: function(data, first) {\n if (this.data) CodeMirror.signal(this.data, \"update\");\n\n var picked = (this.widget && this.widget.picked) || (first && this.options.completeSingle);\n if (this.widget) this.widget.close();\n\n this.data = data;\n\n if (data && data.list.length) {\n if (picked && data.list.length == 1) {\n this.pick(data, 0);\n } else {\n this.widget = new Widget(this, data);\n CodeMirror.signal(data, \"shown\");\n }\n }\n }\n };\n\n function parseOptions(cm, pos, options) {\n var editor = cm.options.hintOptions;\n var out = {};\n for (var prop in defaultOptions) out[prop] = defaultOptions[prop];\n if (editor) for (var prop in editor)\n if (editor[prop] !== undefined) out[prop] = editor[prop];\n if (options) for (var prop in options)\n if (options[prop] !== undefined) out[prop] = options[prop];\n if (out.hint.resolve) out.hint = out.hint.resolve(cm, pos)\n return out;\n }\n\n function getText(completion) {\n if (typeof completion == \"string\") return completion;\n else return completion.text;\n }\n\n function buildKeyMap(completion, handle) {\n var baseMap = {\n Up: function() {handle.moveFocus(-1);},\n Down: function() {handle.moveFocus(1);},\n PageUp: function() {handle.moveFocus(-handle.menuSize() + 1, true);},\n PageDown: function() {handle.moveFocus(handle.menuSize() - 1, true);},\n Home: function() {handle.setFocus(0);},\n End: function() {handle.setFocus(handle.length - 1);},\n Enter: handle.pick,\n Tab: handle.pick,\n Esc: handle.close\n };\n\n var mac = /Mac/.test(navigator.platform);\n\n if (mac) {\n baseMap[\"Ctrl-P\"] = function() {handle.moveFocus(-1);};\n baseMap[\"Ctrl-N\"] = function() {handle.moveFocus(1);};\n }\n\n var custom = completion.options.customKeys;\n var ourMap = custom ? {} : baseMap;\n function addBinding(key, val) {\n var bound;\n if (typeof val != \"string\")\n bound = function(cm) { return val(cm, handle); };\n // This mechanism is deprecated\n else if (baseMap.hasOwnProperty(val))\n bound = baseMap[val];\n else\n bound = val;\n ourMap[key] = bound;\n }\n if (custom)\n for (var key in custom) if (custom.hasOwnProperty(key))\n addBinding(key, custom[key]);\n var extra = completion.options.extraKeys;\n if (extra)\n for (var key in extra) if (extra.hasOwnProperty(key))\n addBinding(key, extra[key]);\n return ourMap;\n }\n\n function getHintElement(hintsElement, el) {\n while (el && el != hintsElement) {\n if (el.nodeName.toUpperCase() === \"LI\" && el.parentNode == hintsElement) return el;\n el = el.parentNode;\n }\n }\n\n function Widget(completion, data) {\n this.id = \"cm-complete-\" + Math.floor(Math.random(1e6))\n this.completion = completion;\n this.data = data;\n this.picked = false;\n var widget = this, cm = completion.cm;\n var ownerDocument = cm.getInputField().ownerDocument;\n var parentWindow = ownerDocument.defaultView || ownerDocument.parentWindow;\n\n var hints = this.hints = ownerDocument.createElement(\"ul\");\n hints.setAttribute(\"role\", \"listbox\")\n hints.setAttribute(\"aria-expanded\", \"true\")\n hints.id = this.id\n var theme = completion.cm.options.theme;\n hints.className = \"CodeMirror-hints \" + theme;\n this.selectedHint = data.selectedHint || 0;\n\n var completions = data.list;\n for (var i = 0; i < completions.length; ++i) {\n var elt = hints.appendChild(ownerDocument.createElement(\"li\")), cur = completions[i];\n var className = HINT_ELEMENT_CLASS + (i != this.selectedHint ? \"\" : \" \" + ACTIVE_HINT_ELEMENT_CLASS);\n if (cur.className != null) className = cur.className + \" \" + className;\n elt.className = className;\n if (i == this.selectedHint) elt.setAttribute(\"aria-selected\", \"true\")\n elt.id = this.id + \"-\" + i\n elt.setAttribute(\"role\", \"option\")\n if (cur.render) cur.render(elt, data, cur);\n else elt.appendChild(ownerDocument.createTextNode(cur.displayText || getText(cur)));\n elt.hintId = i;\n }\n\n var container = completion.options.container || ownerDocument.body;\n var pos = cm.cursorCoords(completion.options.alignWithWord ? data.from : null);\n var left = pos.left, top = pos.bottom, below = true;\n var offsetLeft = 0, offsetTop = 0;\n if (container !== ownerDocument.body) {\n // We offset the cursor position because left and top are relative to the offsetParent's top left corner.\n var isContainerPositioned = ['absolute', 'relative', 'fixed'].indexOf(parentWindow.getComputedStyle(container).position) !== -1;\n var offsetParent = isContainerPositioned ? container : container.offsetParent;\n var offsetParentPosition = offsetParent.getBoundingClientRect();\n var bodyPosition = ownerDocument.body.getBoundingClientRect();\n offsetLeft = (offsetParentPosition.left - bodyPosition.left - offsetParent.scrollLeft);\n offsetTop = (offsetParentPosition.top - bodyPosition.top - offsetParent.scrollTop);\n }\n hints.style.left = (left - offsetLeft) + \"px\";\n hints.style.top = (top - offsetTop) + \"px\";\n\n // If we're at the edge of the screen, then we want the menu to appear on the left of the cursor.\n var winW = parentWindow.innerWidth || Math.max(ownerDocument.body.offsetWidth, ownerDocument.documentElement.offsetWidth);\n var winH = parentWindow.innerHeight || Math.max(ownerDocument.body.offsetHeight, ownerDocument.documentElement.offsetHeight);\n container.appendChild(hints);\n cm.getInputField().setAttribute(\"aria-autocomplete\", \"list\")\n cm.getInputField().setAttribute(\"aria-owns\", this.id)\n cm.getInputField().setAttribute(\"aria-activedescendant\", this.id + \"-\" + this.selectedHint)\n\n var box = completion.options.moveOnOverlap ? hints.getBoundingClientRect() : new DOMRect();\n var scrolls = completion.options.paddingForScrollbar ? hints.scrollHeight > hints.clientHeight + 1 : false;\n\n // Compute in the timeout to avoid reflow on init\n var startScroll;\n setTimeout(function() { startScroll = cm.getScrollInfo(); });\n\n var overlapY = box.bottom - winH;\n if (overlapY > 0) { // Does not fit below\n var height = box.bottom - box.top, spaceAbove = box.top - (pos.bottom - pos.top) - 2\n if (winH - box.top < spaceAbove) { // More room at the top\n if (height > spaceAbove) hints.style.height = (height = spaceAbove) + \"px\";\n hints.style.top = ((top = pos.top - height) + offsetTop) + \"px\";\n below = false;\n } else {\n hints.style.height = (winH - box.top - 2) + \"px\";\n }\n }\n var overlapX = box.right - winW;\n if (scrolls) overlapX += cm.display.nativeBarWidth;\n if (overlapX > 0) {\n if (box.right - box.left > winW) {\n hints.style.width = (winW - 5) + \"px\";\n overlapX -= (box.right - box.left) - winW;\n }\n hints.style.left = (left = Math.max(pos.left - overlapX - offsetLeft, 0)) + \"px\";\n }\n if (scrolls) for (var node = hints.firstChild; node; node = node.nextSibling)\n node.style.paddingRight = cm.display.nativeBarWidth + \"px\"\n\n cm.addKeyMap(this.keyMap = buildKeyMap(completion, {\n moveFocus: function(n, avoidWrap) { widget.changeActive(widget.selectedHint + n, avoidWrap); },\n setFocus: function(n) { widget.changeActive(n); },\n menuSize: function() { return widget.screenAmount(); },\n length: completions.length,\n close: function() { completion.close(); },\n pick: function() { widget.pick(); },\n data: data\n }));\n\n if (completion.options.closeOnUnfocus) {\n var closingOnBlur;\n cm.on(\"blur\", this.onBlur = function() { closingOnBlur = setTimeout(function() { completion.close(); }, 100); });\n cm.on(\"focus\", this.onFocus = function() { clearTimeout(closingOnBlur); });\n }\n\n cm.on(\"scroll\", this.onScroll = function() {\n var curScroll = cm.getScrollInfo(), editor = cm.getWrapperElement().getBoundingClientRect();\n if (!startScroll) startScroll = cm.getScrollInfo();\n var newTop = top + startScroll.top - curScroll.top;\n var point = newTop - (parentWindow.pageYOffset || (ownerDocument.documentElement || ownerDocument.body).scrollTop);\n if (!below) point += hints.offsetHeight;\n if (point <= editor.top || point >= editor.bottom) return completion.close();\n hints.style.top = newTop + \"px\";\n hints.style.left = (left + startScroll.left - curScroll.left) + \"px\";\n });\n\n CodeMirror.on(hints, \"dblclick\", function(e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n if (t && t.hintId != null) {widget.changeActive(t.hintId); widget.pick();}\n });\n\n CodeMirror.on(hints, \"click\", function(e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n if (t && t.hintId != null) {\n widget.changeActive(t.hintId);\n if (completion.options.completeOnSingleClick) widget.pick();\n }\n });\n\n CodeMirror.on(hints, \"mousedown\", function() {\n setTimeout(function(){cm.focus();}, 20);\n });\n\n // The first hint doesn't need to be scrolled to on init\n var selectedHintRange = this.getSelectedHintRange();\n if (selectedHintRange.from !== 0 || selectedHintRange.to !== 0) {\n this.scrollToActive();\n }\n\n CodeMirror.signal(data, \"select\", completions[this.selectedHint], hints.childNodes[this.selectedHint]);\n return true;\n }\n\n Widget.prototype = {\n close: function() {\n if (this.completion.widget != this) return;\n this.completion.widget = null;\n if (this.hints.parentNode) this.hints.parentNode.removeChild(this.hints);\n this.completion.cm.removeKeyMap(this.keyMap);\n var input = this.completion.cm.getInputField()\n input.removeAttribute(\"aria-activedescendant\")\n input.removeAttribute(\"aria-owns\")\n\n var cm = this.completion.cm;\n if (this.completion.options.closeOnUnfocus) {\n cm.off(\"blur\", this.onBlur);\n cm.off(\"focus\", this.onFocus);\n }\n cm.off(\"scroll\", this.onScroll);\n },\n\n disable: function() {\n this.completion.cm.removeKeyMap(this.keyMap);\n var widget = this;\n this.keyMap = {Enter: function() { widget.picked = true; }};\n this.completion.cm.addKeyMap(this.keyMap);\n },\n\n pick: function() {\n this.completion.pick(this.data, this.selectedHint);\n },\n\n changeActive: function(i, avoidWrap) {\n if (i >= this.data.list.length)\n i = avoidWrap ? this.data.list.length - 1 : 0;\n else if (i < 0)\n i = avoidWrap ? 0 : this.data.list.length - 1;\n if (this.selectedHint == i) return;\n var node = this.hints.childNodes[this.selectedHint];\n if (node) {\n node.className = node.className.replace(\" \" + ACTIVE_HINT_ELEMENT_CLASS, \"\");\n node.removeAttribute(\"aria-selected\")\n }\n node = this.hints.childNodes[this.selectedHint = i];\n node.className += \" \" + ACTIVE_HINT_ELEMENT_CLASS;\n node.setAttribute(\"aria-selected\", \"true\")\n this.completion.cm.getInputField().setAttribute(\"aria-activedescendant\", node.id)\n this.scrollToActive()\n CodeMirror.signal(this.data, \"select\", this.data.list[this.selectedHint], node);\n },\n\n scrollToActive: function() {\n var selectedHintRange = this.getSelectedHintRange();\n var node1 = this.hints.childNodes[selectedHintRange.from];\n var node2 = this.hints.childNodes[selectedHintRange.to];\n var firstNode = this.hints.firstChild;\n if (node1.offsetTop < this.hints.scrollTop)\n this.hints.scrollTop = node1.offsetTop - firstNode.offsetTop;\n else if (node2.offsetTop + node2.offsetHeight > this.hints.scrollTop + this.hints.clientHeight)\n this.hints.scrollTop = node2.offsetTop + node2.offsetHeight - this.hints.clientHeight + firstNode.offsetTop;\n },\n\n screenAmount: function() {\n return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1;\n },\n\n getSelectedHintRange: function() {\n var margin = this.completion.options.scrollMargin || 0;\n return {\n from: Math.max(0, this.selectedHint - margin),\n to: Math.min(this.data.list.length - 1, this.selectedHint + margin),\n };\n }\n };\n\n function applicableHelpers(cm, helpers) {\n if (!cm.somethingSelected()) return helpers\n var result = []\n for (var i = 0; i < helpers.length; i++)\n if (helpers[i].supportsSelection) result.push(helpers[i])\n return result\n }\n\n function fetchHints(hint, cm, options, callback) {\n if (hint.async) {\n hint(cm, callback, options)\n } else {\n var result = hint(cm, options)\n if (result && result.then) result.then(callback)\n else callback(result)\n }\n }\n\n function resolveAutoHints(cm, pos) {\n var helpers = cm.getHelpers(pos, \"hint\"), words\n if (helpers.length) {\n var resolved = function(cm, callback, options) {\n var app = applicableHelpers(cm, helpers);\n function run(i) {\n if (i == app.length) return callback(null)\n fetchHints(app[i], cm, options, function(result) {\n if (result && result.list.length > 0) callback(result)\n else run(i + 1)\n })\n }\n run(0)\n }\n resolved.async = true\n resolved.supportsSelection = true\n return resolved\n } else if (words = cm.getHelper(cm.getCursor(), \"hintWords\")) {\n return function(cm) { return CodeMirror.hint.fromList(cm, {words: words}) }\n } else if (CodeMirror.hint.anyword) {\n return function(cm, options) { return CodeMirror.hint.anyword(cm, options) }\n } else {\n return function() {}\n }\n }\n\n CodeMirror.registerHelper(\"hint\", \"auto\", {\n resolve: resolveAutoHints\n });\n\n CodeMirror.registerHelper(\"hint\", \"fromList\", function(cm, options) {\n var cur = cm.getCursor(), token = cm.getTokenAt(cur)\n var term, from = CodeMirror.Pos(cur.line, token.start), to = cur\n if (token.start < cur.ch && /\\w/.test(token.string.charAt(cur.ch - token.start - 1))) {\n term = token.string.substr(0, cur.ch - token.start)\n } else {\n term = \"\"\n from = cur\n }\n var found = [];\n for (var i = 0; i < options.words.length; i++) {\n var word = options.words[i];\n if (word.slice(0, term.length) == term)\n found.push(word);\n }\n\n if (found.length) return {list: found, from: from, to: to};\n });\n\n CodeMirror.commands.autocomplete = CodeMirror.showHint;\n\n var defaultOptions = {\n hint: CodeMirror.hint.auto,\n completeSingle: true,\n alignWithWord: true,\n closeCharacters: /[\\s()\\[\\]{};:>,]/,\n closeOnPick: true,\n closeOnUnfocus: true,\n updateOnCursorActivity: true,\n completeOnSingleClick: true,\n container: null,\n customKeys: null,\n extraKeys: null,\n paddingForScrollbar: true,\n moveOnOverlap: true,\n };\n\n CodeMirror.defineOption(\"hintOptions\", null);\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// Defines jumpToLine command. Uses dialog.js if present.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../dialog/dialog\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../dialog/dialog\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n // default search panel location\n CodeMirror.defineOption(\"search\", {bottom: false});\n\n function dialog(cm, text, shortText, deflt, f) {\n if (cm.openDialog) cm.openDialog(text, f, {value: deflt, selectValueOnOpen: true, bottom: cm.options.search.bottom});\n else f(prompt(shortText, deflt));\n }\n\n function getJumpDialog(cm) {\n return cm.phrase(\"Jump to line:\") + ' ' + cm.phrase(\"(Use line:column or scroll% syntax)\") + '';\n }\n\n function interpretLine(cm, string) {\n var num = Number(string)\n if (/^[-+]/.test(string)) return cm.getCursor().line + num\n else return num - 1\n }\n\n CodeMirror.commands.jumpToLine = function(cm) {\n var cur = cm.getCursor();\n dialog(cm, getJumpDialog(cm), cm.phrase(\"Jump to line:\"), (cur.line + 1) + \":\" + cur.ch, function(posStr) {\n if (!posStr) return;\n\n var match;\n if (match = /^\\s*([\\+\\-]?\\d+)\\s*\\:\\s*(\\d+)\\s*$/.exec(posStr)) {\n cm.setCursor(interpretLine(cm, match[1]), Number(match[2]))\n } else if (match = /^\\s*([\\+\\-]?\\d+(\\.\\d+)?)\\%\\s*/.exec(posStr)) {\n var line = Math.round(cm.lineCount() * Number(match[1]) / 100);\n if (/^[-+]/.test(match[1])) line = cur.line + line + 1;\n cm.setCursor(line - 1, cur.ch);\n } else if (match = /^\\s*\\:?\\s*([\\+\\-]?\\d+)\\s*/.exec(posStr)) {\n cm.setCursor(interpretLine(cm, match[1]), cur.ch);\n }\n });\n };\n\n CodeMirror.keyMap[\"default\"][\"Alt-G\"] = \"jumpToLine\";\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"))\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod)\n else // Plain browser env\n mod(CodeMirror)\n})(function(CodeMirror) {\n \"use strict\"\n var Pos = CodeMirror.Pos\n\n function regexpFlags(regexp) {\n var flags = regexp.flags\n return flags != null ? flags : (regexp.ignoreCase ? \"i\" : \"\")\n + (regexp.global ? \"g\" : \"\")\n + (regexp.multiline ? \"m\" : \"\")\n }\n\n function ensureFlags(regexp, flags) {\n var current = regexpFlags(regexp), target = current\n for (var i = 0; i < flags.length; i++) if (target.indexOf(flags.charAt(i)) == -1)\n target += flags.charAt(i)\n return current == target ? regexp : new RegExp(regexp.source, target)\n }\n\n function maybeMultiline(regexp) {\n return /\\\\s|\\\\n|\\n|\\\\W|\\\\D|\\[\\^/.test(regexp.source)\n }\n\n function searchRegexpForward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\")\n for (var line = start.line, ch = start.ch, last = doc.lastLine(); line <= last; line++, ch = 0) {\n regexp.lastIndex = ch\n var string = doc.getLine(line), match = regexp.exec(string)\n if (match)\n return {from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match}\n }\n }\n\n function searchRegexpForwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpForward(doc, regexp, start)\n\n regexp = ensureFlags(regexp, \"gm\")\n var string, chunk = 1\n for (var line = start.line, last = doc.lastLine(); line <= last;) {\n // This grows the search buffer in exponentially-sized chunks\n // between matches, so that nearby matches are fast and don't\n // require concatenating the whole document (in case we're\n // searching for something that has tons of matches), but at the\n // same time, the amount of retries is limited.\n for (var i = 0; i < chunk; i++) {\n if (line > last) break\n var curLine = doc.getLine(line++)\n string = string == null ? curLine : string + \"\\n\" + curLine\n }\n chunk = chunk * 2\n regexp.lastIndex = start.ch\n var match = regexp.exec(string)\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"), inside = match[0].split(\"\\n\")\n var startLine = start.line + before.length - 1, startCh = before[before.length - 1].length\n return {from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1,\n inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match}\n }\n }\n }\n\n function lastMatchIn(string, regexp, endMargin) {\n var match, from = 0\n while (from <= string.length) {\n regexp.lastIndex = from\n var newMatch = regexp.exec(string)\n if (!newMatch) break\n var end = newMatch.index + newMatch[0].length\n if (end > string.length - endMargin) break\n if (!match || end > match.index + match[0].length)\n match = newMatch\n from = newMatch.index + 1\n }\n return match\n }\n\n function searchRegexpBackward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\")\n for (var line = start.line, ch = start.ch, first = doc.firstLine(); line >= first; line--, ch = -1) {\n var string = doc.getLine(line)\n var match = lastMatchIn(string, regexp, ch < 0 ? 0 : string.length - ch)\n if (match)\n return {from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match}\n }\n }\n\n function searchRegexpBackwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpBackward(doc, regexp, start)\n regexp = ensureFlags(regexp, \"gm\")\n var string, chunkSize = 1, endMargin = doc.getLine(start.line).length - start.ch\n for (var line = start.line, first = doc.firstLine(); line >= first;) {\n for (var i = 0; i < chunkSize && line >= first; i++) {\n var curLine = doc.getLine(line--)\n string = string == null ? curLine : curLine + \"\\n\" + string\n }\n chunkSize *= 2\n\n var match = lastMatchIn(string, regexp, endMargin)\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"), inside = match[0].split(\"\\n\")\n var startLine = line + before.length, startCh = before[before.length - 1].length\n return {from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1,\n inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match}\n }\n }\n }\n\n var doFold, noFold\n if (String.prototype.normalize) {\n doFold = function(str) { return str.normalize(\"NFD\").toLowerCase() }\n noFold = function(str) { return str.normalize(\"NFD\") }\n } else {\n doFold = function(str) { return str.toLowerCase() }\n noFold = function(str) { return str }\n }\n\n // Maps a position in a case-folded line back to a position in the original line\n // (compensating for codepoints increasing in number during folding)\n function adjustPos(orig, folded, pos, foldFunc) {\n if (orig.length == folded.length) return pos\n for (var min = 0, max = pos + Math.max(0, orig.length - folded.length);;) {\n if (min == max) return min\n var mid = (min + max) >> 1\n var len = foldFunc(orig.slice(0, mid)).length\n if (len == pos) return mid\n else if (len > pos) max = mid\n else min = mid + 1\n }\n }\n\n function searchStringForward(doc, query, start, caseFold) {\n // Empty string would match anything and never progress, so we\n // define it to match nothing instead.\n if (!query.length) return null\n var fold = caseFold ? doFold : noFold\n var lines = fold(query).split(/\\r|\\n\\r?/)\n\n search: for (var line = start.line, ch = start.ch, last = doc.lastLine() + 1 - lines.length; line <= last; line++, ch = 0) {\n var orig = doc.getLine(line).slice(ch), string = fold(orig)\n if (lines.length == 1) {\n var found = string.indexOf(lines[0])\n if (found == -1) continue search\n var start = adjustPos(orig, string, found, fold) + ch\n return {from: Pos(line, adjustPos(orig, string, found, fold) + ch),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold) + ch)}\n } else {\n var cutFrom = string.length - lines[0].length\n if (string.slice(cutFrom) != lines[0]) continue search\n for (var i = 1; i < lines.length - 1; i++)\n if (fold(doc.getLine(line + i)) != lines[i]) continue search\n var end = doc.getLine(line + lines.length - 1), endString = fold(end), lastLine = lines[lines.length - 1]\n if (endString.slice(0, lastLine.length) != lastLine) continue search\n return {from: Pos(line, adjustPos(orig, string, cutFrom, fold) + ch),\n to: Pos(line + lines.length - 1, adjustPos(end, endString, lastLine.length, fold))}\n }\n }\n }\n\n function searchStringBackward(doc, query, start, caseFold) {\n if (!query.length) return null\n var fold = caseFold ? doFold : noFold\n var lines = fold(query).split(/\\r|\\n\\r?/)\n\n search: for (var line = start.line, ch = start.ch, first = doc.firstLine() - 1 + lines.length; line >= first; line--, ch = -1) {\n var orig = doc.getLine(line)\n if (ch > -1) orig = orig.slice(0, ch)\n var string = fold(orig)\n if (lines.length == 1) {\n var found = string.lastIndexOf(lines[0])\n if (found == -1) continue search\n return {from: Pos(line, adjustPos(orig, string, found, fold)),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold))}\n } else {\n var lastLine = lines[lines.length - 1]\n if (string.slice(0, lastLine.length) != lastLine) continue search\n for (var i = 1, start = line - lines.length + 1; i < lines.length - 1; i++)\n if (fold(doc.getLine(start + i)) != lines[i]) continue search\n var top = doc.getLine(line + 1 - lines.length), topString = fold(top)\n if (topString.slice(topString.length - lines[0].length) != lines[0]) continue search\n return {from: Pos(line + 1 - lines.length, adjustPos(top, topString, top.length - lines[0].length, fold)),\n to: Pos(line, adjustPos(orig, string, lastLine.length, fold))}\n }\n }\n }\n\n function SearchCursor(doc, query, pos, options) {\n this.atOccurrence = false\n this.afterEmptyMatch = false\n this.doc = doc\n pos = pos ? doc.clipPos(pos) : Pos(0, 0)\n this.pos = {from: pos, to: pos}\n\n var caseFold\n if (typeof options == \"object\") {\n caseFold = options.caseFold\n } else { // Backwards compat for when caseFold was the 4th argument\n caseFold = options\n options = null\n }\n\n if (typeof query == \"string\") {\n if (caseFold == null) caseFold = false\n this.matches = function(reverse, pos) {\n return (reverse ? searchStringBackward : searchStringForward)(doc, query, pos, caseFold)\n }\n } else {\n query = ensureFlags(query, \"gm\")\n if (!options || options.multiline !== false)\n this.matches = function(reverse, pos) {\n return (reverse ? searchRegexpBackwardMultiline : searchRegexpForwardMultiline)(doc, query, pos)\n }\n else\n this.matches = function(reverse, pos) {\n return (reverse ? searchRegexpBackward : searchRegexpForward)(doc, query, pos)\n }\n }\n }\n\n SearchCursor.prototype = {\n findNext: function() {return this.find(false)},\n findPrevious: function() {return this.find(true)},\n\n find: function(reverse) {\n var head = this.doc.clipPos(reverse ? this.pos.from : this.pos.to);\n if (this.afterEmptyMatch && this.atOccurrence) {\n // do not return the same 0 width match twice\n head = Pos(head.line, head.ch)\n if (reverse) {\n head.ch--;\n if (head.ch < 0) {\n head.line--;\n head.ch = (this.doc.getLine(head.line) || \"\").length;\n }\n } else {\n head.ch++;\n if (head.ch > (this.doc.getLine(head.line) || \"\").length) {\n head.ch = 0;\n head.line++;\n }\n }\n if (CodeMirror.cmpPos(head, this.doc.clipPos(head)) != 0) {\n return this.atOccurrence = false\n }\n }\n var result = this.matches(reverse, head)\n this.afterEmptyMatch = result && CodeMirror.cmpPos(result.from, result.to) == 0\n\n if (result) {\n this.pos = result\n this.atOccurrence = true\n return this.pos.match || true\n } else {\n var end = Pos(reverse ? this.doc.firstLine() : this.doc.lastLine() + 1, 0)\n this.pos = {from: end, to: end}\n return this.atOccurrence = false\n }\n },\n\n from: function() {if (this.atOccurrence) return this.pos.from},\n to: function() {if (this.atOccurrence) return this.pos.to},\n\n replace: function(newText, origin) {\n if (!this.atOccurrence) return\n var lines = CodeMirror.splitLines(newText)\n this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin)\n this.pos.to = Pos(this.pos.from.line + lines.length - 1,\n lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0))\n }\n }\n\n CodeMirror.defineExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this.doc, query, pos, caseFold)\n })\n CodeMirror.defineDocExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this, query, pos, caseFold)\n })\n\n CodeMirror.defineExtension(\"selectMatches\", function(query, caseFold) {\n var ranges = []\n var cur = this.getSearchCursor(query, this.getCursor(\"from\"), caseFold)\n while (cur.findNext()) {\n if (CodeMirror.cmpPos(cur.to(), this.getCursor(\"to\")) > 0) break\n ranges.push({anchor: cur.from(), head: cur.to()})\n }\n if (ranges.length)\n this.setSelections(ranges, 0)\n })\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// Define search commands. Depends on dialog.js or another\n// implementation of the openDialog method.\n\n// Replace works a little oddly -- it will do the replace on the next\n// Ctrl-G (or whatever is bound to findNext) press. You prevent a\n// replace by making sure the match is no longer selected when hitting\n// Ctrl-G.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"./searchcursor\"), require(\"../dialog/dialog\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"./searchcursor\", \"../dialog/dialog\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n // default search panel location\n CodeMirror.defineOption(\"search\", {bottom: false});\n\n function searchOverlay(query, caseInsensitive) {\n if (typeof query == \"string\")\n query = new RegExp(query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\"), caseInsensitive ? \"gi\" : \"g\");\n else if (!query.global)\n query = new RegExp(query.source, query.ignoreCase ? \"gi\" : \"g\");\n\n return {token: function(stream) {\n query.lastIndex = stream.pos;\n var match = query.exec(stream.string);\n if (match && match.index == stream.pos) {\n stream.pos += match[0].length || 1;\n return \"searching\";\n } else if (match) {\n stream.pos = match.index;\n } else {\n stream.skipToEnd();\n }\n }};\n }\n\n function SearchState() {\n this.posFrom = this.posTo = this.lastQuery = this.query = null;\n this.overlay = null;\n }\n\n function getSearchState(cm) {\n return cm.state.search || (cm.state.search = new SearchState());\n }\n\n function queryCaseInsensitive(query) {\n return typeof query == \"string\" && query == query.toLowerCase();\n }\n\n function getSearchCursor(cm, query, pos) {\n // Heuristic: if the query string is all lowercase, do a case insensitive search.\n return cm.getSearchCursor(query, pos, {caseFold: queryCaseInsensitive(query), multiline: true});\n }\n\n function persistentDialog(cm, text, deflt, onEnter, onKeyDown) {\n cm.openDialog(text, onEnter, {\n value: deflt,\n selectValueOnOpen: true,\n closeOnEnter: false,\n onClose: function() { clearSearch(cm); },\n onKeyDown: onKeyDown,\n bottom: cm.options.search.bottom\n });\n }\n\n function dialog(cm, text, shortText, deflt, f) {\n if (cm.openDialog) cm.openDialog(text, f, {value: deflt, selectValueOnOpen: true, bottom: cm.options.search.bottom});\n else f(prompt(shortText, deflt));\n }\n\n function confirmDialog(cm, text, shortText, fs) {\n if (cm.openConfirm) cm.openConfirm(text, fs);\n else if (confirm(shortText)) fs[0]();\n }\n\n function parseString(string) {\n return string.replace(/\\\\([nrt\\\\])/g, function(match, ch) {\n if (ch == \"n\") return \"\\n\"\n if (ch == \"r\") return \"\\r\"\n if (ch == \"t\") return \"\\t\"\n if (ch == \"\\\\\") return \"\\\\\"\n return match\n })\n }\n\n function parseQuery(query) {\n var isRE = query.match(/^\\/(.*)\\/([a-z]*)$/);\n if (isRE) {\n try { query = new RegExp(isRE[1], isRE[2].indexOf(\"i\") == -1 ? \"\" : \"i\"); }\n catch(e) {} // Not a regular expression after all, do a string search\n } else {\n query = parseString(query)\n }\n if (typeof query == \"string\" ? query == \"\" : query.test(\"\"))\n query = /x^/;\n return query;\n }\n\n function startSearch(cm, state, query) {\n state.queryText = query;\n state.query = parseQuery(query);\n cm.removeOverlay(state.overlay, queryCaseInsensitive(state.query));\n state.overlay = searchOverlay(state.query, queryCaseInsensitive(state.query));\n cm.addOverlay(state.overlay);\n if (cm.showMatchesOnScrollbar) {\n if (state.annotate) { state.annotate.clear(); state.annotate = null; }\n state.annotate = cm.showMatchesOnScrollbar(state.query, queryCaseInsensitive(state.query));\n }\n }\n\n function doSearch(cm, rev, persistent, immediate) {\n var state = getSearchState(cm);\n if (state.query) return findNext(cm, rev);\n var q = cm.getSelection() || state.lastQuery;\n if (q instanceof RegExp && q.source == \"x^\") q = null\n if (persistent && cm.openDialog) {\n var hiding = null\n var searchNext = function(query, event) {\n CodeMirror.e_stop(event);\n if (!query) return;\n if (query != state.queryText) {\n startSearch(cm, state, query);\n state.posFrom = state.posTo = cm.getCursor();\n }\n if (hiding) hiding.style.opacity = 1\n findNext(cm, event.shiftKey, function(_, to) {\n var dialog\n if (to.line < 3 && document.querySelector &&\n (dialog = cm.display.wrapper.querySelector(\".CodeMirror-dialog\")) &&\n dialog.getBoundingClientRect().bottom - 4 > cm.cursorCoords(to, \"window\").top)\n (hiding = dialog).style.opacity = .4\n })\n };\n persistentDialog(cm, getQueryDialog(cm), q, searchNext, function(event, query) {\n var keyName = CodeMirror.keyName(event)\n var extra = cm.getOption('extraKeys'), cmd = (extra && extra[keyName]) || CodeMirror.keyMap[cm.getOption(\"keyMap\")][keyName]\n if (cmd == \"findNext\" || cmd == \"findPrev\" ||\n cmd == \"findPersistentNext\" || cmd == \"findPersistentPrev\") {\n CodeMirror.e_stop(event);\n startSearch(cm, getSearchState(cm), query);\n cm.execCommand(cmd);\n } else if (cmd == \"find\" || cmd == \"findPersistent\") {\n CodeMirror.e_stop(event);\n searchNext(query, event);\n }\n });\n if (immediate && q) {\n startSearch(cm, state, q);\n findNext(cm, rev);\n }\n } else {\n dialog(cm, getQueryDialog(cm), \"Search for:\", q, function(query) {\n if (query && !state.query) cm.operation(function() {\n startSearch(cm, state, query);\n state.posFrom = state.posTo = cm.getCursor();\n findNext(cm, rev);\n });\n });\n }\n }\n\n function findNext(cm, rev, callback) {cm.operation(function() {\n var state = getSearchState(cm);\n var cursor = getSearchCursor(cm, state.query, rev ? state.posFrom : state.posTo);\n if (!cursor.find(rev)) {\n cursor = getSearchCursor(cm, state.query, rev ? CodeMirror.Pos(cm.lastLine()) : CodeMirror.Pos(cm.firstLine(), 0));\n if (!cursor.find(rev)) return;\n }\n cm.setSelection(cursor.from(), cursor.to());\n cm.scrollIntoView({from: cursor.from(), to: cursor.to()}, 20);\n state.posFrom = cursor.from(); state.posTo = cursor.to();\n if (callback) callback(cursor.from(), cursor.to())\n });}\n\n function clearSearch(cm) {cm.operation(function() {\n var state = getSearchState(cm);\n state.lastQuery = state.query;\n if (!state.query) return;\n state.query = state.queryText = null;\n cm.removeOverlay(state.overlay);\n if (state.annotate) { state.annotate.clear(); state.annotate = null; }\n });}\n\n function el(tag, attrs) {\n var element = tag ? document.createElement(tag) : document.createDocumentFragment();\n for (var key in attrs) {\n element[key] = attrs[key];\n }\n for (var i = 2; i < arguments.length; i++) {\n var child = arguments[i]\n element.appendChild(typeof child == \"string\" ? document.createTextNode(child) : child);\n }\n return element;\n }\n\n function getQueryDialog(cm) {\n var label = el(\"label\", {className: \"CodeMirror-search-label\"},\n cm.phrase(\"Search:\"),\n el(\"input\", {type: \"text\", \"style\": \"width: 10em\", className: \"CodeMirror-search-field\",\n id: \"CodeMirror-search-field\"}));\n label.setAttribute(\"for\",\"CodeMirror-search-field\");\n return el(\"\", null, label, \" \",\n el(\"span\", {style: \"color: #666\", className: \"CodeMirror-search-hint\"},\n cm.phrase(\"(Use /re/ syntax for regexp search)\")));\n }\n function getReplaceQueryDialog(cm) {\n return el(\"\", null, \" \",\n el(\"input\", {type: \"text\", \"style\": \"width: 10em\", className: \"CodeMirror-search-field\"}), \" \",\n el(\"span\", {style: \"color: #666\", className: \"CodeMirror-search-hint\"},\n cm.phrase(\"(Use /re/ syntax for regexp search)\")));\n }\n function getReplacementQueryDialog(cm) {\n return el(\"\", null,\n el(\"span\", {className: \"CodeMirror-search-label\"}, cm.phrase(\"With:\")), \" \",\n el(\"input\", {type: \"text\", \"style\": \"width: 10em\", className: \"CodeMirror-search-field\"}));\n }\n function getDoReplaceConfirm(cm) {\n return el(\"\", null,\n el(\"span\", {className: \"CodeMirror-search-label\"}, cm.phrase(\"Replace?\")), \" \",\n el(\"button\", {}, cm.phrase(\"Yes\")), \" \",\n el(\"button\", {}, cm.phrase(\"No\")), \" \",\n el(\"button\", {}, cm.phrase(\"All\")), \" \",\n el(\"button\", {}, cm.phrase(\"Stop\")));\n }\n\n function replaceAll(cm, query, text) {\n cm.operation(function() {\n for (var cursor = getSearchCursor(cm, query); cursor.findNext();) {\n if (typeof query != \"string\") {\n var match = cm.getRange(cursor.from(), cursor.to()).match(query);\n cursor.replace(text.replace(/\\$(\\d)/g, function(_, i) {return match[i];}));\n } else cursor.replace(text);\n }\n });\n }\n\n function replace(cm, all) {\n if (cm.getOption(\"readOnly\")) return;\n var query = cm.getSelection() || getSearchState(cm).lastQuery;\n var dialogText = all ? cm.phrase(\"Replace all:\") : cm.phrase(\"Replace:\")\n var fragment = el(\"\", null,\n el(\"span\", {className: \"CodeMirror-search-label\"}, dialogText),\n getReplaceQueryDialog(cm))\n dialog(cm, fragment, dialogText, query, function(query) {\n if (!query) return;\n query = parseQuery(query);\n dialog(cm, getReplacementQueryDialog(cm), cm.phrase(\"Replace with:\"), \"\", function(text) {\n text = parseString(text)\n if (all) {\n replaceAll(cm, query, text)\n } else {\n clearSearch(cm);\n var cursor = getSearchCursor(cm, query, cm.getCursor(\"from\"));\n var advance = function() {\n var start = cursor.from(), match;\n if (!(match = cursor.findNext())) {\n cursor = getSearchCursor(cm, query);\n if (!(match = cursor.findNext()) ||\n (start && cursor.from().line == start.line && cursor.from().ch == start.ch)) return;\n }\n cm.setSelection(cursor.from(), cursor.to());\n cm.scrollIntoView({from: cursor.from(), to: cursor.to()});\n confirmDialog(cm, getDoReplaceConfirm(cm), cm.phrase(\"Replace?\"),\n [function() {doReplace(match);}, advance,\n function() {replaceAll(cm, query, text)}]);\n };\n var doReplace = function(match) {\n cursor.replace(typeof query == \"string\" ? text :\n text.replace(/\\$(\\d)/g, function(_, i) {return match[i];}));\n advance();\n };\n advance();\n }\n });\n });\n }\n\n CodeMirror.commands.find = function(cm) {clearSearch(cm); doSearch(cm);};\n CodeMirror.commands.findPersistent = function(cm) {clearSearch(cm); doSearch(cm, false, true);};\n CodeMirror.commands.findPersistentNext = function(cm) {doSearch(cm, false, true, true);};\n CodeMirror.commands.findPersistentPrev = function(cm) {doSearch(cm, true, true, true);};\n CodeMirror.commands.findNext = doSearch;\n CodeMirror.commands.findPrev = function(cm) {doSearch(cm, true);};\n CodeMirror.commands.clearSearch = clearSearch;\n CodeMirror.commands.replace = replace;\n CodeMirror.commands.replaceAll = function(cm) {replace(cm, true);};\n});\n", null, "export default function(x) {\n return function constant() {\n return x;\n };\n}\n", "export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n", "const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We\u2019re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n", "export {Path, path, pathRound} from \"./path.js\";\n", "import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n", "import constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\nimport {withPath} from \"./path.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null,\n path = withPath(arc);\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 \u2265 r0, da1 \u2265 da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle. If this\n // intersection fails, it\u2019s probably because the arc is too small, so\n // disable the corner radius entirely.\n if (da < pi) {\n if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n } else {\n rc0 = rc1 = 0;\n }\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector\u2019s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it\u2019s a circular sector?\n // Or perhaps it\u2019s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector\u2019s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n", "export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n", "function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n", "export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n", "import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n", "import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n var x1 = null,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(area);\n\n x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n function area(data) {\n var i,\n j,\n k,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n", "export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n", "export default function(d) {\n return d;\n}\n", "import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = (data = array(data)).length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n", "import curveLinear from \"./linear.js\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nexport default function curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n", "import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport line from \"./line.js\";\n\nexport function lineRadial(l) {\n var c = l.curve;\n\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n\n l.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return l;\n}\n\nexport default function() {\n return lineRadial(line().curve(curveRadialLinear));\n}\n", "import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport area from \"./area.js\";\nimport {lineRadial} from \"./lineRadial.js\";\n\nexport default function() {\n var a = area().curve(curveRadialLinear),\n c = a.curve,\n x0 = a.lineX0,\n x1 = a.lineX1,\n y0 = a.lineY0,\n y1 = a.lineY1;\n\n a.angle = a.x, delete a.x;\n a.startAngle = a.x0, delete a.x0;\n a.endAngle = a.x1, delete a.x1;\n a.radius = a.y, delete a.y;\n a.innerRadius = a.y0, delete a.y0;\n a.outerRadius = a.y1, delete a.y1;\n a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n a.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return a;\n}\n", "export default function(x, y) {\n return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n", "import pointRadial from \"../pointRadial.js\";\n\nclass Bump {\n constructor(context, x) {\n this._context = context;\n this._x = x;\n }\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n }\n point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: {\n this._point = 1;\n if (this._line) this._context.lineTo(x, y);\n else this._context.moveTo(x, y);\n break;\n }\n case 1: this._point = 2; // falls through\n default: {\n if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);\n else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y);\n break;\n }\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nclass BumpRadial {\n constructor(context) {\n this._context = context;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {}\n point(x, y) {\n x = +x, y = +y;\n if (this._point === 0) {\n this._point = 1;\n } else {\n const p0 = pointRadial(this._x0, this._y0);\n const p1 = pointRadial(this._x0, this._y0 = (this._y0 + y) / 2);\n const p2 = pointRadial(x, this._y0);\n const p3 = pointRadial(x, y);\n this._context.moveTo(...p0);\n this._context.bezierCurveTo(...p1, ...p2, ...p3);\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nexport function bumpX(context) {\n return new Bump(context, true);\n}\n\nexport function bumpY(context) {\n return new Bump(context, false);\n}\n\nexport function bumpRadial(context) {\n return new BumpRadial(context);\n}\n", "import {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport {bumpX, bumpY, bumpRadial} from \"./curve/bump.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nexport function link(curve) {\n let source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null,\n output = null,\n path = withPath(link);\n\n function link() {\n let buffer;\n const argv = slice.call(arguments);\n const s = source.apply(this, argv);\n const t = target.apply(this, argv);\n if (context == null) output = curve(buffer = path());\n output.lineStart();\n argv[0] = s, output.point(+x.apply(this, argv), +y.apply(this, argv));\n argv[0] = t, output.point(+x.apply(this, argv), +y.apply(this, argv));\n output.lineEnd();\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), link) : context;\n };\n\n return link;\n}\n\nexport function linkHorizontal() {\n return link(bumpX);\n}\n\nexport function linkVertical() {\n return link(bumpY);\n}\n\nexport function linkRadial() {\n const l = link(bumpRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n", "import {min, sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n draw(context, size) {\n const r = sqrt(size + min(size / 28, 0.75)) * 0.59436;\n const t = r / 2;\n const u = t * sqrt3;\n context.moveTo(0, r);\n context.lineTo(0, -r);\n context.moveTo(-u, -t);\n context.lineTo(u, t);\n context.moveTo(-u, t);\n context.lineTo(u, -t);\n }\n};\n", "import {pi, sqrt, tau} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n", "import {sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n", "import {sqrt} from \"../math.js\";\n\nconst tan30 = sqrt(1 / 3);\nconst tan30_2 = tan30 * 2;\n\nexport default {\n draw(context, size) {\n const y = sqrt(size / tan30_2);\n const x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n", "import {sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size) * 0.62625;\n context.moveTo(0, -r);\n context.lineTo(r, 0);\n context.lineTo(0, r);\n context.lineTo(-r, 0);\n context.closePath();\n }\n};\n", "import {min, sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size - min(size / 7, 2)) * 0.87559;\n context.moveTo(-r, 0);\n context.lineTo(r, 0);\n context.moveTo(0, r);\n context.lineTo(0, -r);\n }\n};\n", "import {sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const w = sqrt(size);\n const x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n", "import {sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size) * 0.4431;\n context.moveTo(r, r);\n context.lineTo(r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, r);\n context.closePath();\n }\n};\n", "import {sin, cos, sqrt, pi, tau} from \"../math.js\";\n\nconst ka = 0.89081309152928522810;\nconst kr = sin(pi / 10) / sin(7 * pi / 10);\nconst kx = sin(tau / 10) * kr;\nconst ky = -cos(tau / 10) * kr;\n\nexport default {\n draw(context, size) {\n const r = sqrt(size * ka);\n const x = kx * r;\n const y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (let i = 1; i < 5; ++i) {\n const a = tau * i / 5;\n const c = cos(a);\n const s = sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n", "import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n draw(context, size) {\n const y = -sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n", "import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n draw(context, size) {\n const s = sqrt(size) * 0.6824;\n const t = s / 2;\n const u = (s * sqrt3) / 2; // cos(Math.PI / 6)\n context.moveTo(0, -s);\n context.lineTo(u, t);\n context.lineTo(-u, t);\n context.closePath();\n }\n};\n", "import {sqrt} from \"../math.js\";\n\nconst c = -0.5;\nconst s = sqrt(3) / 2;\nconst k = 1 / sqrt(12);\nconst a = (k / 2 + 1) * 3;\n\nexport default {\n draw(context, size) {\n const r = sqrt(size / a);\n const x0 = r / 2, y0 = r * k;\n const x1 = x0, y1 = r * k + r;\n const x2 = -x1, y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n", "import {min, sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size - min(size / 6, 1.7)) * 0.6189;\n context.moveTo(-r, -r);\n context.lineTo(r, r);\n context.moveTo(-r, r);\n context.lineTo(r, -r);\n }\n};\n", "import constant from \"./constant.js\";\nimport {withPath} from \"./path.js\";\nimport asterisk from \"./symbol/asterisk.js\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport diamond2 from \"./symbol/diamond2.js\";\nimport plus from \"./symbol/plus.js\";\nimport square from \"./symbol/square.js\";\nimport square2 from \"./symbol/square2.js\";\nimport star from \"./symbol/star.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport triangle2 from \"./symbol/triangle2.js\";\nimport wye from \"./symbol/wye.js\";\nimport times from \"./symbol/times.js\";\n\n// These symbols are designed to be filled.\nexport const symbolsFill = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\n// These symbols are designed to be stroked (with a width of 1.5px and round caps).\nexport const symbolsStroke = [\n circle,\n plus,\n times,\n triangle2,\n asterisk,\n square2,\n diamond2\n];\n\nexport default function Symbol(type, size) {\n let context = null,\n path = withPath(symbol);\n\n type = typeof type === \"function\" ? type : constant(type || circle);\n size = typeof size === \"function\" ? size : constant(size === undefined ? 64 : +size);\n\n function symbol() {\n let buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n", "export default function() {}\n", "export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // falls through\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n", "import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n", "import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n", "import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n", "export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n", "import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n", "import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n", "import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // falls through\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n", "import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n", "import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n", "import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n", "function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic B\u00E9zier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n", "function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n", "function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n", "export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n", "export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n", "import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nfunction stackSeries(key) {\n const series = [];\n series.key = key;\n return series;\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var sz = Array.from(keys.apply(this, arguments), stackSeries),\n i, n = sz.length, j = -1,\n oz;\n\n for (const d of data) {\n for (i = 0, ++j; i < n; ++i) {\n (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d;\n }\n }\n\n for (i = 0, oz = array(order(sz)); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n", "import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n", "export default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n for (yp = yn = 0, i = 0; i < n; ++i) {\n if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {\n d[0] = yp, d[1] = yp += dy;\n } else if (dy < 0) {\n d[1] = yn, d[0] = yn += dy;\n } else {\n d[0] = 0, d[1] = dy;\n }\n }\n }\n}\n", "import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n", "import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n", "import none from \"./none.js\";\n\nexport default function(series) {\n var peaks = series.map(peak);\n return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n return j;\n}\n", "import none from \"./none.js\";\n\nexport default function(series) {\n var sums = series.map(sum);\n return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n var s = 0, i = -1, n = series.length, v;\n while (++i < n) if (v = +series[i][1]) s += v;\n return s;\n}\n", "import ascending from \"./ascending.js\";\n\nexport default function(series) {\n return ascending(series).reverse();\n}\n", "import appearance from \"./appearance.js\";\nimport {sum} from \"./ascending.js\";\n\nexport default function(series) {\n var n = series.length,\n i,\n j,\n sums = series.map(sum),\n order = appearance(series),\n top = 0,\n bottom = 0,\n tops = [],\n bottoms = [];\n\n for (i = 0; i < n; ++i) {\n j = order[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n\n return bottoms.reverse().concat(tops);\n}\n", "import none from \"./none.js\";\n\nexport default function(series) {\n return none(series).reverse();\n}\n", "export {default as arc} from \"./arc.js\";\nexport {default as area} from \"./area.js\";\nexport {default as line} from \"./line.js\";\nexport {default as pie} from \"./pie.js\";\nexport {default as areaRadial, default as radialArea} from \"./areaRadial.js\"; // Note: radialArea is deprecated!\nexport {default as lineRadial, default as radialLine} from \"./lineRadial.js\"; // Note: radialLine is deprecated!\nexport {default as pointRadial} from \"./pointRadial.js\";\nexport {link, linkHorizontal, linkVertical, linkRadial} from \"./link.js\";\n\nexport {default as symbol, symbolsStroke, symbolsFill, symbolsFill as symbols} from \"./symbol.js\";\nexport {default as symbolAsterisk} from \"./symbol/asterisk.js\";\nexport {default as symbolCircle} from \"./symbol/circle.js\";\nexport {default as symbolCross} from \"./symbol/cross.js\";\nexport {default as symbolDiamond} from \"./symbol/diamond.js\";\nexport {default as symbolDiamond2} from \"./symbol/diamond2.js\";\nexport {default as symbolPlus} from \"./symbol/plus.js\";\nexport {default as symbolSquare} from \"./symbol/square.js\";\nexport {default as symbolSquare2} from \"./symbol/square2.js\";\nexport {default as symbolStar} from \"./symbol/star.js\";\nexport {default as symbolTriangle} from \"./symbol/triangle.js\";\nexport {default as symbolTriangle2} from \"./symbol/triangle2.js\";\nexport {default as symbolWye} from \"./symbol/wye.js\";\nexport {default as symbolTimes, default as symbolX} from \"./symbol/times.js\";\n\nexport {default as curveBasisClosed} from \"./curve/basisClosed.js\";\nexport {default as curveBasisOpen} from \"./curve/basisOpen.js\";\nexport {default as curveBasis} from \"./curve/basis.js\";\nexport {bumpX as curveBumpX, bumpY as curveBumpY} from \"./curve/bump.js\";\nexport {default as curveBundle} from \"./curve/bundle.js\";\nexport {default as curveCardinalClosed} from \"./curve/cardinalClosed.js\";\nexport {default as curveCardinalOpen} from \"./curve/cardinalOpen.js\";\nexport {default as curveCardinal} from \"./curve/cardinal.js\";\nexport {default as curveCatmullRomClosed} from \"./curve/catmullRomClosed.js\";\nexport {default as curveCatmullRomOpen} from \"./curve/catmullRomOpen.js\";\nexport {default as curveCatmullRom} from \"./curve/catmullRom.js\";\nexport {default as curveLinearClosed} from \"./curve/linearClosed.js\";\nexport {default as curveLinear} from \"./curve/linear.js\";\nexport {monotoneX as curveMonotoneX, monotoneY as curveMonotoneY} from \"./curve/monotone.js\";\nexport {default as curveNatural} from \"./curve/natural.js\";\nexport {default as curveStep, stepAfter as curveStepAfter, stepBefore as curveStepBefore} from \"./curve/step.js\";\n\nexport {default as stack} from \"./stack.js\";\nexport {default as stackOffsetExpand} from \"./offset/expand.js\";\nexport {default as stackOffsetDiverging} from \"./offset/diverging.js\";\nexport {default as stackOffsetNone} from \"./offset/none.js\";\nexport {default as stackOffsetSilhouette} from \"./offset/silhouette.js\";\nexport {default as stackOffsetWiggle} from \"./offset/wiggle.js\";\nexport {default as stackOrderAppearance} from \"./order/appearance.js\";\nexport {default as stackOrderAscending} from \"./order/ascending.js\";\nexport {default as stackOrderDescending} from \"./order/descending.js\";\nexport {default as stackOrderInsideOut} from \"./order/insideOut.js\";\nexport {default as stackOrderNone} from \"./order/none.js\";\nexport {default as stackOrderReverse} from \"./order/reverse.js\";\n", "export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, \u00B1Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n", "export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n", "export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n", "// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n", "// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n", "import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n", "export default function(x) {\n return x;\n}\n", "import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"\u00B5\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"\u2212\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer \u201Cvalue\u201D part that can be\n // grouped, and fractional or exponential \u201Csuffix\u201D part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n", "import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n", "import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n", "import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n", "import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n", "export {default as formatDefaultLocale, format, formatPrefix} from \"./defaultLocale.js\";\nexport {default as formatLocale} from \"./locale.js\";\nexport {default as formatSpecifier, FormatSpecifier} from \"./formatSpecifier.js\";\nexport {default as precisionFixed} from \"./precisionFixed.js\";\nexport {default as precisionPrefix} from \"./precisionPrefix.js\";\nexport {default as precisionRound} from \"./precisionRound.js\";\n", "export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n", "export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n", "import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can\u2019t do this\n // for a comparator (except for specific, known comparators) because we can\u2019t\n // tell if the comparator is symmetric, and an asymmetric comparator can\u2019t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n", "export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n", "import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n", "export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n", "import ascending from \"./ascending.js\";\nimport permute from \"./permute.js\";\n\nexport default function sort(values, ...F) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n values = Array.from(values);\n let [f] = F;\n if ((f && f.length !== 2) || F.length > 1) {\n const index = Uint32Array.from(values, (d, i) => i);\n if (F.length > 1) {\n F = F.map(f => values.map(f));\n index.sort((i, j) => {\n for (const f of F) {\n const c = ascendingDefined(f[i], f[j]);\n if (c) return c;\n }\n });\n } else {\n f = values.map(f);\n index.sort((i, j) => ascendingDefined(f[i], f[j]));\n }\n return permute(values, index);\n }\n return values.sort(compareDefined(f));\n}\n\nexport function compareDefined(compare = ascending) {\n if (compare === ascending) return ascendingDefined;\n if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n return (a, b) => {\n const x = compare(a, b);\n if (x || x === 0) return x;\n return (compare(b, b) === 0) - (compare(a, a) === 0);\n };\n}\n\nexport function ascendingDefined(a, b) {\n return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}\n", "const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n", "export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n", "export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n", "import {ascendingDefined, compareDefined} from \"./sort.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = Infinity, compare) {\n k = Math.floor(k);\n left = Math.floor(Math.max(0, left));\n right = Math.floor(Math.min(array.length - 1, right));\n\n if (!(left <= k && k <= right)) return array;\n\n compare = compare === undefined ? ascendingDefined : compareDefined(compare);\n\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(array, k, newLeft, newRight, compare);\n }\n\n const t = array[k];\n let i = left;\n let j = right;\n\n swap(array, left, k);\n if (compare(array[right], t) > 0) swap(array, left, right);\n\n while (i < j) {\n swap(array, i, j), ++i, --j;\n while (compare(array[i], t) < 0) ++i;\n while (compare(array[j], t) > 0) --j;\n }\n\n if (compare(array[left], t) === 0) swap(array, left, j);\n else ++j, swap(array, j, right);\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n\n return array;\n}\n\nfunction swap(array, i, j) {\n const t = array[i];\n array[i] = array[j];\n array[j] = t;\n}\n", "import max from \"./max.js\";\nimport maxIndex from \"./maxIndex.js\";\nimport min from \"./min.js\";\nimport minIndex from \"./minIndex.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\nimport {ascendingDefined} from \"./sort.js\";\nimport greatest from \"./greatest.js\";\n\nexport default function quantile(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return min(values);\n if (p >= 1) return max(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n value1 = min(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileIndex(values, p, valueof = number) {\n if (isNaN(p = +p)) return;\n numbers = Float64Array.from(values, (_, i) => number(valueof(values[i], i, values)));\n if (p <= 0) return minIndex(numbers);\n if (p >= 1) return maxIndex(numbers);\n var numbers,\n index = Uint32Array.from(values, (_, i) => i),\n j = numbers.length - 1,\n i = Math.floor(j * p);\n quickselect(index, i, 0, j, (i, j) => ascendingDefined(numbers[i], numbers[j]));\n i = greatest(index.subarray(0, i + 1), (i) => numbers[i]);\n return i >= 0 ? i : -1;\n}\n", "export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n", "export {default as bisect, bisectRight, bisectLeft, bisectCenter} from \"./bisect.js\";\nexport {default as ascending} from \"./ascending.js\";\nexport {default as bisector} from \"./bisector.js\";\nexport {blur, blur2, blurImage} from \"./blur.js\";\nexport {default as count} from \"./count.js\";\nexport {default as cross} from \"./cross.js\";\nexport {default as cumsum} from \"./cumsum.js\";\nexport {default as descending} from \"./descending.js\";\nexport {default as deviation} from \"./deviation.js\";\nexport {default as extent} from \"./extent.js\";\nexport {Adder, fsum, fcumsum} from \"./fsum.js\";\nexport {default as group, flatGroup, flatRollup, groups, index, indexes, rollup, rollups} from \"./group.js\";\nexport {default as groupSort} from \"./groupSort.js\";\nexport {default as bin, default as histogram} from \"./bin.js\"; // Deprecated; use bin.\nexport {default as thresholdFreedmanDiaconis} from \"./threshold/freedmanDiaconis.js\";\nexport {default as thresholdScott} from \"./threshold/scott.js\";\nexport {default as thresholdSturges} from \"./threshold/sturges.js\";\nexport {default as max} from \"./max.js\";\nexport {default as maxIndex} from \"./maxIndex.js\";\nexport {default as mean} from \"./mean.js\";\nexport {default as median, medianIndex} from \"./median.js\";\nexport {default as merge} from \"./merge.js\";\nexport {default as min} from \"./min.js\";\nexport {default as minIndex} from \"./minIndex.js\";\nexport {default as mode} from \"./mode.js\";\nexport {default as nice} from \"./nice.js\";\nexport {default as pairs} from \"./pairs.js\";\nexport {default as permute} from \"./permute.js\";\nexport {default as quantile, quantileIndex, quantileSorted} from \"./quantile.js\";\nexport {default as quickselect} from \"./quickselect.js\";\nexport {default as range} from \"./range.js\";\nexport {default as rank} from \"./rank.js\";\nexport {default as least} from \"./least.js\";\nexport {default as leastIndex} from \"./leastIndex.js\";\nexport {default as greatest} from \"./greatest.js\";\nexport {default as greatestIndex} from \"./greatestIndex.js\";\nexport {default as scan} from \"./scan.js\"; // Deprecated; use leastIndex.\nexport {default as shuffle, shuffler} from \"./shuffle.js\";\nexport {default as sum} from \"./sum.js\";\nexport {default as ticks, tickIncrement, tickStep} from \"./ticks.js\";\nexport {default as transpose} from \"./transpose.js\";\nexport {default as variance} from \"./variance.js\";\nexport {default as zip} from \"./zip.js\";\nexport {default as every} from \"./every.js\";\nexport {default as some} from \"./some.js\";\nexport {default as filter} from \"./filter.js\";\nexport {default as map} from \"./map.js\";\nexport {default as reduce} from \"./reduce.js\";\nexport {default as reverse} from \"./reverse.js\";\nexport {default as sort} from \"./sort.js\";\nexport {default as difference} from \"./difference.js\";\nexport {default as disjoint} from \"./disjoint.js\";\nexport {default as intersection} from \"./intersection.js\";\nexport {default as subset} from \"./subset.js\";\nexport {default as superset} from \"./superset.js\";\nexport {default as union} from \"./union.js\";\nexport {InternMap, InternSet} from \"internmap\";\n", "export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n", "import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n", "import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 1,\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function(_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), [r0, r1])\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n", "export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n", "import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n", "export const radians = Math.PI / 180;\nexport const degrees = 180 / Math.PI;\n", "import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * degrees;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * radians;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb() {\n return hcl2lab(this).rgb();\n }\n}));\n", "import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * degrees - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * radians,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n", "export {default as color, rgb, hsl} from \"./color.js\";\nexport {default as lab, hcl, lch, gray} from \"./lab.js\";\nexport {default as cubehelix} from \"./cubehelix.js\";\n", "export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n", "import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n", "export default x => () => x;\n", "import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n", "import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n", "export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n", "import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n", "export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n", "export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n", "import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n", "import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n", "import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n", "export default function(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n", "import {hue} from \"./color.js\";\n\nexport default function(a, b) {\n var i = hue(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}\n", "export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n", "var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n", "import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n", "import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n", "var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 \u2245 u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\n", "import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n", "import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n", "import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n", "import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n", "import {default as value} from \"./value.js\";\n\nexport default function piecewise(interpolate, values) {\n if (values === undefined) values = interpolate, interpolate = value;\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n", "export default function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\n", "export {default as interpolate} from \"./value.js\";\nexport {default as interpolateArray} from \"./array.js\";\nexport {default as interpolateBasis} from \"./basis.js\";\nexport {default as interpolateBasisClosed} from \"./basisClosed.js\";\nexport {default as interpolateDate} from \"./date.js\";\nexport {default as interpolateDiscrete} from \"./discrete.js\";\nexport {default as interpolateHue} from \"./hue.js\";\nexport {default as interpolateNumber} from \"./number.js\";\nexport {default as interpolateNumberArray} from \"./numberArray.js\";\nexport {default as interpolateObject} from \"./object.js\";\nexport {default as interpolateRound} from \"./round.js\";\nexport {default as interpolateString} from \"./string.js\";\nexport {interpolateTransformCss, interpolateTransformSvg} from \"./transform/index.js\";\nexport {default as interpolateZoom} from \"./zoom.js\";\nexport {default as interpolateRgb, rgbBasis as interpolateRgbBasis, rgbBasisClosed as interpolateRgbBasisClosed} from \"./rgb.js\";\nexport {default as interpolateHsl, hslLong as interpolateHslLong} from \"./hsl.js\";\nexport {default as interpolateLab} from \"./lab.js\";\nexport {default as interpolateHcl, hclLong as interpolateHclLong} from \"./hcl.js\";\nexport {default as interpolateCubehelix, cubehelixLong as interpolateCubehelixLong} from \"./cubehelix.js\";\nexport {default as piecewise} from \"./piecewise.js\";\nexport {default as quantize} from \"./quantize.js\";\n", "export default function constants(x) {\n return function() {\n return x;\n };\n}\n", "export default function number(x) {\n return +x;\n}\n", "import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n", "import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n", "import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n", "import {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = Array.from(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? Array.from(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n", "export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n", "import {ticks} from \"d3-array\";\nimport {format, formatSpecifier} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : x => Math.pow(base, x);\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), x => Math.log(x) / base);\n}\n\nfunction reflect(f) {\n return (x, k) => -f(-x, k);\n}\n\nexport function loggish(transform) {\n const scale = transform(transformLog, transformExp);\n const domain = scale.domain;\n let base = 10;\n let logs;\n let pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = count => {\n const d = domain();\n let u = d[0];\n let v = d[d.length - 1];\n const r = v < u;\n\n if (r) ([u, v] = [v, u]);\n\n let i = logs(u);\n let j = logs(v);\n let k;\n let t;\n const n = count == null ? 10 : +count;\n let z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.floor(i), j = Math.ceil(j);\n if (u > 0) for (; i <= j; ++i) {\n for (k = 1; k < base; ++k) {\n t = i < 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i <= j; ++i) {\n for (k = base - 1; k >= 1; --k) {\n t = i > 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n if (z.length * 2 < n) z = ticks(u, v, n);\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = (count, specifier) => {\n if (count == null) count = 10;\n if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n if (typeof specifier !== \"function\") {\n if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true;\n specifier = format(specifier);\n }\n if (count === Infinity) return specifier;\n const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return d => {\n let i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = () => {\n return domain(nice(domain(), {\n floor: x => pows(Math.floor(logs(x))),\n ceil: x => pows(Math.ceil(logs(x)))\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n const scale = loggish(transformer()).domain([1, 10]);\n scale.copy = () => copy(scale, log()).base(scale.base());\n initRange.apply(scale, arguments);\n return scale;\n}\n", "import {linearish} from \"./linear.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n", "import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n", "import continuous from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nfunction square(x) {\n return Math.sign(x) * x * x;\n}\n\nfunction unsquare(x) {\n return Math.sign(x) * Math.sqrt(Math.abs(x));\n}\n\nexport default function radial() {\n var squared = continuous(),\n range = [0, 1],\n round = false,\n unknown;\n\n function scale(x) {\n var y = unsquare(squared(x));\n return isNaN(y) ? unknown : round ? Math.round(y) : y;\n }\n\n scale.invert = function(y) {\n return squared.invert(square(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (squared.domain(_), scale) : squared.domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (squared.range((range = Array.from(_, number)).map(square)), scale) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return scale.range(_).round(true);\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, scale) : round;\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (squared.clamp(_), scale) : squared.clamp();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return radial(squared.domain(), range)\n .round(round)\n .clamp(squared.clamp())\n .unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n", "import {ascending, bisect, quantileSorted as threshold} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n", "import {bisect} from \"d3-array\";\nimport {linearish} from \"./linear.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n", "import {bisect} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n", "const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n", "import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval((date) => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\n\nexport const milliseconds = millisecond.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n return (end - start) / durationSecond;\n}, (date) => {\n return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n return timeInterval((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return timeInterval((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek;\n });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n", "import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n", "import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport const utcYears = utcYear.range;\n", "import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n", "export {\n timeInterval\n} from \"./interval.js\";\n\nexport {\n millisecond as utcMillisecond,\n milliseconds as utcMilliseconds,\n millisecond as timeMillisecond,\n milliseconds as timeMilliseconds\n} from \"./millisecond.js\";\n\nexport {\n second as utcSecond,\n seconds as utcSeconds,\n second as timeSecond,\n seconds as timeSeconds\n} from \"./second.js\";\n\nexport {\n timeMinute,\n timeMinutes,\n utcMinute,\n utcMinutes\n} from \"./minute.js\";\n\nexport {\n timeHour,\n timeHours,\n utcHour,\n utcHours\n} from \"./hour.js\";\n\nexport {\n timeDay,\n timeDays,\n utcDay,\n utcDays,\n unixDay,\n unixDays\n} from \"./day.js\";\n\nexport {\n timeSunday as timeWeek,\n timeSundays as timeWeeks,\n timeSunday,\n timeSundays,\n timeMonday,\n timeMondays,\n timeTuesday,\n timeTuesdays,\n timeWednesday,\n timeWednesdays,\n timeThursday,\n timeThursdays,\n timeFriday,\n timeFridays,\n timeSaturday,\n timeSaturdays,\n utcSunday as utcWeek,\n utcSundays as utcWeeks,\n utcSunday,\n utcSundays,\n utcMonday,\n utcMondays,\n utcTuesday,\n utcTuesdays,\n utcWednesday,\n utcWednesdays,\n utcThursday,\n utcThursdays,\n utcFriday,\n utcFridays,\n utcSaturday,\n utcSaturdays\n} from \"./week.js\";\n\nexport {\n timeMonth,\n timeMonths,\n utcMonth,\n utcMonths\n} from \"./month.js\";\n\nexport {\n timeYear,\n timeYears,\n utcYear,\n utcYears\n} from \"./year.js\";\n\nexport {\n utcTicks,\n utcTickInterval,\n timeTicks,\n timeTickInterval\n} from \"./ticks.js\";\n", "import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n", "import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n", "export {default as timeFormatDefaultLocale, timeFormat, timeParse, utcFormat, utcParse} from \"./defaultLocale.js\";\nexport {default as timeFormatLocale} from \"./locale.js\";\nexport {default as isoFormat} from \"./isoFormat.js\";\nexport {default as isoParse} from \"./isoParse.js\";\n", "import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n", "import {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval} from \"d3-time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {calendar} from \"./time.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function utcTime() {\n return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n", "import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1;\n return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n", "import {ascending, bisect, quantile} from \"d3-array\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\n\nexport default function sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (x != null && !isNaN(x = +x)) return interpolator((bisect(domain, x, 1) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.range = function() {\n return domain.map((d, i) => interpolator(i / (domain.length - 1)));\n };\n\n scale.quantiles = function(n) {\n return Array.from({length: n + 1}, (_, i) => quantile(domain, i / n));\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n", "import {interpolate, interpolateRound, piecewise} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {copy} from \"./sequential.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n s = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1, r2;\n return arguments.length ? ([r0, r1, r2] = _, interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n", "export {\n default as scaleBand,\n point as scalePoint\n} from \"./band.js\";\n\nexport {\n default as scaleIdentity\n} from \"./identity.js\";\n\nexport {\n default as scaleLinear\n} from \"./linear.js\";\n\nexport {\n default as scaleLog\n} from \"./log.js\";\n\nexport {\n default as scaleSymlog\n} from \"./symlog.js\";\n\nexport {\n default as scaleOrdinal,\n implicit as scaleImplicit\n} from \"./ordinal.js\";\n\nexport {\n default as scalePow,\n sqrt as scaleSqrt\n} from \"./pow.js\";\n\nexport {\n default as scaleRadial\n} from \"./radial.js\";\n\nexport {\n default as scaleQuantile\n} from \"./quantile.js\";\n\nexport {\n default as scaleQuantize\n} from \"./quantize.js\";\n\nexport {\n default as scaleThreshold\n} from \"./threshold.js\";\n\nexport {\n default as scaleTime\n} from \"./time.js\";\n\nexport {\n default as scaleUtc\n} from \"./utcTime.js\";\n\nexport {\n default as scaleSequential,\n sequentialLog as scaleSequentialLog,\n sequentialPow as scaleSequentialPow,\n sequentialSqrt as scaleSequentialSqrt,\n sequentialSymlog as scaleSequentialSymlog\n} from \"./sequential.js\";\n\nexport {\n default as scaleSequentialQuantile\n} from \"./sequentialQuantile.js\";\n\nexport {\n default as scaleDiverging,\n divergingLog as scaleDivergingLog,\n divergingPow as scaleDivergingPow,\n divergingSqrt as scaleDivergingSqrt,\n divergingSymlog as scaleDivergingSymlog\n} from \"./diverging.js\";\n\nexport {\n default as tickFormat\n} from \"./tickFormat.js\";\n", "export default function(x) {\n return x;\n}\n", "import identity from \"./identity.js\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient === right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = Array.from(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n axis.offset = function(_) {\n return arguments.length ? (offset = +_, axis) : offset;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n", "export {\n axisTop,\n axisRight,\n axisBottom,\n axisLeft\n} from \"./axis.js\";\n", "var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n", "export {default as dispatch} from \"./dispatch.js\";\n", "export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n", "import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n", "import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n", "function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n", "import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n", "// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don\u2019t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n", "function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n", "import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n", "export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n", "import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n", "import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n", "import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n", "export default function(update) {\n return new Array(update.length);\n}\n", "import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n", "export default function(x) {\n return function() {\n return x;\n };\n}\n", "import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don\u2019t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn\u2019t worried about \u201Clive\u201D collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don\u2019t; we\u2019d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n", "import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n", "export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n", "import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n", "export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n", "import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n", "export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n", "export default function() {\n return Array.from(this);\n}\n", "export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n", "export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n", "export default function() {\n return !this.node();\n}\n", "export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n", "import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n", "export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n", "import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n", "function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n", "function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n", "function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n", "function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n", "function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n", "function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n", "import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n", "import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n", "function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n", "function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n", "export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n", "function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n", "import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n", "export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n", "import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n", "import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n", "import creator from \"./creator.js\";\nimport select from \"./select.js\";\n\nexport default function(name) {\n return select(creator(name).call(document.documentElement));\n}\n", "var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n", "export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n", "import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n", "import pointer from \"./pointer.js\";\nimport sourceEvent from \"./sourceEvent.js\";\n\nexport default function(events, node) {\n if (events.target) { // i.e., instanceof Event, not TouchList or iterable\n events = sourceEvent(events);\n if (node === undefined) node = events.currentTarget;\n events = events.touches || [events];\n }\n return Array.from(events, event => pointer(event, node));\n}\n", "import array from \"./array.js\";\nimport {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([array(selector)], root);\n}\n", "export {default as create} from \"./create.js\";\nexport {default as creator} from \"./creator.js\";\nexport {default as local} from \"./local.js\";\nexport {default as matcher} from \"./matcher.js\";\nexport {default as namespace} from \"./namespace.js\";\nexport {default as namespaces} from \"./namespaces.js\";\nexport {default as pointer} from \"./pointer.js\";\nexport {default as pointers} from \"./pointers.js\";\nexport {default as select} from \"./select.js\";\nexport {default as selectAll} from \"./selectAll.js\";\nexport {default as selection} from \"./selection/index.js\";\nexport {default as selector} from \"./selector.js\";\nexport {default as selectorAll} from \"./selectorAll.js\";\nexport {styleValue as style} from \"./selection/style.js\";\nexport {default as window} from \"./window.js\";\n", "// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n", "import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n", "export {default as drag} from \"./drag.js\";\nexport {default as dragDisable, yesdrag as dragEnable} from \"./nodrag.js\";\n", "var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we\u2019ve set an alarm, if we haven\u2019t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n", "import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n", "export {\n now,\n timer,\n timerFlush\n} from \"./timer.js\";\n\nexport {\n default as timeout\n} from \"./timeout.js\";\n\nexport {\n default as interval\n} from \"./interval.js\";\n", "import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n", "import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n", "import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n", "import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we\u2019re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we\u2019re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n", "import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n", "import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n", "import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n", "import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n", "import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n", "import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n", "import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n", "import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n", "import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n", "import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we\u2019re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n", "function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n", "import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n", "import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n", "import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n", "import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we\u2019re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n", "function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n", "import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n", "function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n", "import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n", "import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we\u2019re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n", "import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n", "export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n", "export {\n linear as easeLinear\n} from \"./linear.js\";\n\nexport {\n quadInOut as easeQuad,\n quadIn as easeQuadIn,\n quadOut as easeQuadOut,\n quadInOut as easeQuadInOut\n} from \"./quad.js\";\n\nexport {\n cubicInOut as easeCubic,\n cubicIn as easeCubicIn,\n cubicOut as easeCubicOut,\n cubicInOut as easeCubicInOut\n} from \"./cubic.js\";\n\nexport {\n polyInOut as easePoly,\n polyIn as easePolyIn,\n polyOut as easePolyOut,\n polyInOut as easePolyInOut\n} from \"./poly.js\";\n\nexport {\n sinInOut as easeSin,\n sinIn as easeSinIn,\n sinOut as easeSinOut,\n sinInOut as easeSinInOut\n} from \"./sin.js\";\n\nexport {\n expInOut as easeExp,\n expIn as easeExpIn,\n expOut as easeExpOut,\n expInOut as easeExpInOut\n} from \"./exp.js\";\n\nexport {\n circleInOut as easeCircle,\n circleIn as easeCircleIn,\n circleOut as easeCircleOut,\n circleInOut as easeCircleInOut\n} from \"./circle.js\";\n\nexport {\n bounceOut as easeBounce,\n bounceIn as easeBounceIn,\n bounceOut as easeBounceOut,\n bounceInOut as easeBounceInOut\n} from \"./bounce.js\";\n\nexport {\n backInOut as easeBack,\n backIn as easeBackIn,\n backOut as easeBackOut,\n backInOut as easeBackInOut\n} from \"./back.js\";\n\nexport {\n elasticOut as easeElastic,\n elasticIn as easeElasticIn,\n elasticOut as easeElasticOut,\n elasticInOut as easeElasticInOut\n} from \"./elastic.js\";\n", "import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n", "import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n", "import \"./selection/index.js\";\nexport {default as transition} from \"./transition/index.js\";\nexport {default as active} from \"./active.js\";\nexport {default as interrupt} from \"./interrupt.js\";\n", "export default x => () => x;\n", "export default function ZoomEvent(type, {\n sourceEvent,\n target,\n transform,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n transform: {value: transform, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n", "export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n", "export function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n", "import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchfirst,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0,\n tapDistance = 10;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled, {passive: false})\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point, event) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point, event);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .event(event)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p, event) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n\n zoom.scaleTo = function(selection, k, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n\n zoom.translateBy = function(selection, x, y, event) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n\n zoom.translateTo = function(selection, x, y, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point, event) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args).event(event),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n event: function(event) {\n if (event) this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function wheeled(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, args).event(event),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = pointer(event);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won\u2019t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned(event, ...args) {\n if (touchending || !filter.apply(this, arguments)) return;\n var currentTarget = event.currentTarget,\n g = gesture(this, args, true).event(event),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = pointer(event, currentTarget),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved(event) {\n noevent(event);\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event)\n .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped(event) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent(event);\n g.event(event).end();\n }\n }\n\n function dblclicked(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n noevent(event);\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n else select(this).call(zoom.transform, t1, p0, event);\n }\n\n function touchstarted(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, args, event.changedTouches.length === n).event(event),\n started, i, t, p;\n\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation(event);\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n zoom.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n };\n\n return zoom;\n}\n", "export {default as zoom} from \"./zoom.js\";\nexport {default as zoomTransform, identity as zoomIdentity, Transform as ZoomTransform} from \"./transform.js\";\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n", null, null, null, "module.exports = {\n EOF: 0,\n DELIMITER: 1,\n NUMBER: 2,\n STRING: 3,\n SYMBOL: 4\n}\n", "// token types\nvar tokenType = require('./token-type')\n\nvar ESCAPES = {\n 'n': '\\n',\n 'f': '\\f',\n 'r': '\\r',\n 't': '\\t',\n 'v': '\\v',\n '\\'': '\\'',\n '\"': '\"'\n}\n\nvar DELIMITERS = {\n ',': true,\n '(': true,\n ')': true,\n '[': true,\n ']': true,\n ';': true,\n\n // unary\n '~': true,\n\n // factorial\n '!': true,\n\n // arithmetic operators\n '+': true,\n '-': true,\n '*': true,\n '/': true,\n '%': true,\n '^': true,\n '**': true, // python power like\n\n // misc operators\n '|': true, // bitwise or\n '&': true, // bitwise and\n '^|': true, // bitwise xor\n '=': true,\n ':': true,\n '?': true,\n\n '||': true, // logical or\n '&&': true, // logical and\n 'xor': true, // logical xor\n\n // relational\n '==': true,\n '!=': true,\n '===': true,\n '!==': true,\n '<': true,\n '>': true,\n '>=': true,\n '<=': true,\n\n // shifts\n '>>>': true,\n '<<': true,\n '>>': true\n}\n\n// helpers\n\nfunction isDigit (c) {\n return c >= '0' && c <= '9'\n}\n\nfunction isIdentifier (c) {\n return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') ||\n c === '$' || c === '_'\n}\n\nfunction isWhitespace (c) {\n return c === ' ' || c === '\\r' || c === '\\t' ||\n c === '\\n' || c === '\\v' || c === '\\u00A0'\n}\n\nfunction isDelimiter (str) {\n return DELIMITERS[str]\n}\n\nfunction isQuote (c) {\n return c === '\\'' || c === '\"'\n}\n\n// lexer\n\nfunction Lexer () {}\n\nLexer.prototype.throwError = function (message, index) {\n index = typeof index === 'undefined' ? this.index : index\n\n var error = new Error(message + ' at index ' + index)\n error.index = index\n error.description = message\n throw error\n}\n\nLexer.prototype.lex = function (text) {\n this.text = text\n this.index = 0\n this.tokens = []\n\n while (this.index < this.text.length) {\n // skip whitespaces\n while (isWhitespace(this.peek())) {\n this.consume()\n }\n var c = this.peek()\n var c2 = c + this.peek(1)\n var c3 = c2 + this.peek(2)\n\n // order\n // - delimiter of 3 characters\n // - delimiter of 2 characters\n // - delimiter of 1 character\n // - number\n // - variables, functions and named operators\n if (isDelimiter(c3)) {\n this.tokens.push({\n type: tokenType.DELIMITER,\n value: c3\n })\n this.consume()\n this.consume()\n this.consume()\n } else if (isDelimiter(c2)) {\n this.tokens.push({\n type: tokenType.DELIMITER,\n value: c2\n })\n this.consume()\n this.consume()\n } else if (isDelimiter(c)) {\n this.tokens.push({\n type: tokenType.DELIMITER,\n value: c\n })\n this.consume()\n } else if (isDigit(c) ||\n (c === '.' && isDigit(this.peek(1)))) {\n this.tokens.push({\n type: tokenType.NUMBER,\n value: this.readNumber()\n })\n } else if (isQuote(c)) {\n this.tokens.push({\n type: tokenType.STRING,\n value: this.readString()\n })\n } else if (isIdentifier(c)) {\n this.tokens.push({\n type: tokenType.SYMBOL,\n value: this.readIdentifier()\n })\n } else {\n this.throwError('unexpected character ' + c)\n }\n }\n\n // end token\n this.tokens.push({ type: tokenType.EOF })\n\n return this.tokens\n}\n\nLexer.prototype.peek = function (nth) {\n nth = nth || 0\n if (this.index + nth >= this.text.length) {\n return\n }\n return this.text.charAt(this.index + nth)\n}\n\nLexer.prototype.consume = function () {\n var current = this.peek()\n this.index += 1\n return current\n}\n\nLexer.prototype.readNumber = function () {\n var number = ''\n\n if (this.peek() === '.') {\n number += this.consume()\n if (!isDigit(this.peek())) {\n this.throwError('number expected')\n }\n } else {\n while (isDigit(this.peek())) {\n number += this.consume()\n }\n if (this.peek() === '.') {\n number += this.consume()\n }\n }\n\n // numbers after the decimal dot\n while (isDigit(this.peek())) {\n number += this.consume()\n }\n\n // exponent if available\n if ((this.peek() === 'e' || this.peek() === 'E')) {\n number += this.consume()\n\n if (!(isDigit(this.peek()) ||\n this.peek() === '+' ||\n this.peek() === '-')) {\n this.throwError()\n }\n\n if (this.peek() === '+' || this.peek() === '-') {\n number += this.consume()\n }\n\n if (!isDigit(this.peek())) {\n this.throwError('number expected')\n }\n\n while (isDigit(this.peek())) {\n number += this.consume()\n }\n }\n return number\n}\n\nLexer.prototype.readIdentifier = function () {\n var text = ''\n while (isIdentifier(this.peek()) || isDigit(this.peek())) {\n text += this.consume()\n }\n return text\n}\n\nLexer.prototype.readString = function () {\n var quote = this.consume()\n var string = ''\n var escape\n while (true) {\n var c = this.consume()\n if (!c) {\n this.throwError('string is not closed')\n }\n if (escape) {\n if (c === 'u') {\n var hex = this.text.substring(this.index + 1, this.index + 5)\n if (!hex.match(/[\\da-f]{4}/i)) {\n this.throwError('invalid unicode escape')\n }\n this.index += 4\n string += String.fromCharCode(parseInt(hex, 16))\n } else {\n var replacement = ESCAPES[c]\n if (replacement) {\n string += replacement\n } else {\n string += c\n }\n }\n escape = false\n } else if (c === quote) {\n break\n } else if (c === '\\\\') {\n escape = true\n } else {\n string += c\n }\n }\n return string\n}\n\nmodule.exports = Lexer\n", "function Node () {\n\n}\n\nNode.prototype.type = 'Node'\n\nmodule.exports = Node\n", "var Node = require('./Node')\n\nvar SUPPORTED_TYPES = {\n number: true,\n string: true,\n 'boolean': true,\n 'undefined': true,\n 'null': true\n}\n\nfunction ConstantNode (value, type) {\n if (!SUPPORTED_TYPES[type]) {\n throw Error('unsupported type \\'' + type + '\\'')\n }\n this.value = value\n this.valueType = type\n}\n\nConstantNode.prototype = Object.create(Node.prototype)\n\nConstantNode.prototype.type = 'ConstantNode'\n\nmodule.exports = ConstantNode\n", "var Node = require('./Node')\n\nfunction OperatorNode (op, args) {\n this.op = op\n this.args = args || []\n}\n\nOperatorNode.prototype = Object.create(Node.prototype)\n\nOperatorNode.prototype.type = 'OperatorNode'\n\nmodule.exports = OperatorNode\n", "var Node = require('./Node')\n\nfunction UnaryNode (op, argument) {\n this.op = op\n this.argument = argument\n}\n\nUnaryNode.prototype = Object.create(Node.prototype)\n\nUnaryNode.prototype.type = 'UnaryNode'\n\nmodule.exports = UnaryNode\n", "var Node = require('./Node')\n\nfunction SymbolNode (name) {\n this.name = name\n}\n\nSymbolNode.prototype = Object.create(Node.prototype)\n\nSymbolNode.prototype.type = 'SymbolNode'\n\nmodule.exports = SymbolNode\n", "var Node = require('./Node')\n\nfunction FunctionNode (name, args) {\n this.name = name\n this.args = args\n}\n\nFunctionNode.prototype = Object.create(Node.prototype)\n\nFunctionNode.prototype.type = 'FunctionNode'\n\nmodule.exports = FunctionNode\n", "var Node = require('./Node')\n\nfunction ArrayNode (nodes) {\n this.nodes = nodes\n}\n\nArrayNode.prototype = Object.create(Node.prototype)\n\nArrayNode.prototype.type = 'ArrayNode'\n\nmodule.exports = ArrayNode\n", "var Node = require('./Node')\n\nfunction ConditionalNode (predicate, truthy, falsy) {\n this.condition = predicate\n this.trueExpr = truthy\n this.falseExpr = falsy\n}\n\nConditionalNode.prototype = Object.create(Node.prototype)\n\nConditionalNode.prototype.type = 'ConditionalNode'\n\nmodule.exports = ConditionalNode\n", "var Node = require('./Node')\n\nfunction AssignmentNode (name, expr) {\n this.name = name\n this.expr = expr\n}\n\nAssignmentNode.prototype = Object.create(Node.prototype)\n\nAssignmentNode.prototype.type = 'AssignmentNode'\n\nmodule.exports = AssignmentNode\n", "var Node = require('./Node')\n\nfunction BlockNode (blocks) {\n this.blocks = blocks\n}\n\nBlockNode.prototype = Object.create(Node.prototype)\n\nBlockNode.prototype.type = 'BlockNode'\n\nmodule.exports = BlockNode\n", "var tokenType = require('./token-type')\n\nvar Lexer = require('./Lexer')\nvar ConstantNode = require('./node/ConstantNode')\nvar OperatorNode = require('./node/OperatorNode')\nvar UnaryNode = require('./node/UnaryNode')\nvar SymbolNode = require('./node/SymbolNode')\nvar FunctionNode = require('./node/FunctionNode')\nvar ArrayNode = require('./node/ArrayNode')\nvar ConditionalNode = require('./node/ConditionalNode')\nvar AssignmentNode = require('./node/AssignmentNode')\nvar BlockNode = require('./node/BlockNode')\n\n/**\n * Grammar DSL:\n *\n * program : block (; block)*\n *\n * block : assignment\n *\n * assignment : ternary\n * | symbol `=` assignment\n *\n * ternary : logicalOR\n * | logicalOR `?` ternary `:` ternary\n *\n * logicalOR : logicalXOR\n * | logicalXOR (`||`,`or`) logicalOR\n *\n * logicalXOR : logicalAND\n * : logicalAND `xor` logicalXOR\n *\n * logicalAND : bitwiseOR\n * | bitwiseOR (`&&`,`and`) logicalAND\n *\n * bitwiseOR : bitwiseXOR\n * | bitwiseXOR `|` bitwiseOR\n *\n * bitwiseXOR : bitwiseAND\n * | bitwiseAND `^|` bitwiseXOR\n *\n * bitwiseAND : relational\n * | relational `&` bitwiseAND\n *\n * relational : shift\n * | shift (`!=` | `==` | `>` | '<' | '<=' |'>=') shift)\n *\n * shift : additive\n * | additive (`>>` | `<<` | `>>>`) shift\n *\n * additive : multiplicative\n * | multiplicative (`+` | `-`) additive\n *\n * multiplicative : unary\n * | unary (`*` | `/` | `%`) unary\n * | unary symbol\n *\n * unary : pow\n * | (`-` | `+` | `~`) unary\n *\n * pow : factorial\n * | factorial (`^`, '**') unary\n *\n * factorial : symbol\n * | symbol (`!`)\n *\n * symbol : symbolToken\n * | symbolToken functionCall\n * | string\n *\n * functionCall : `(` `)`\n * | `(` ternary (, ternary)* `)`\n *\n * string : `'` (character)* `'`\n * : `\"` (character)* `\"`\n * | array\n *\n * array : `[` `]`\n * | `[` assignment (, assignment)* `]`\n * | number\n *\n * number : number-token\n * | parentheses\n *\n * parentheses : `(` assignment `)`\n * : end\n *\n * end : NULL\n *\n * @param {[type]} lexer [description]\n */\nfunction Parser () {\n this.lexer = new Lexer()\n this.tokens = null\n}\n\nParser.prototype.current = function () {\n return this.tokens[0]\n}\n\nParser.prototype.next = function () {\n return this.tokens[1]\n}\n\nParser.prototype.peek = function () {\n if (this.tokens.length) {\n var first = this.tokens[0]\n for (var i = 0; i < arguments.length; i += 1) {\n if (first.value === arguments[i]) {\n return true\n }\n }\n }\n}\n\nParser.prototype.consume = function (e) {\n return this.tokens.shift()\n}\n\nParser.prototype.expect = function (e) {\n if (!this.peek(e)) {\n throw Error('expected ' + e)\n }\n return this.consume()\n}\n\nParser.prototype.isEOF = function () {\n return this.current().type === tokenType.EOF\n}\n\nParser.prototype.parse = function (text) {\n this.tokens = this.lexer.lex(text)\n return this.program()\n}\n\nParser.prototype.program = function () {\n var blocks = []\n while (!this.isEOF()) {\n blocks.push(this.assignment())\n if (this.peek(';')) {\n this.consume()\n }\n }\n this.end()\n return new BlockNode(blocks)\n}\n\nParser.prototype.assignment = function () {\n var left = this.ternary()\n if (left instanceof SymbolNode && this.peek('=')) {\n this.consume()\n return new AssignmentNode(left.name, this.assignment())\n }\n return left\n}\n\nParser.prototype.ternary = function () {\n var predicate = this.logicalOR()\n if (this.peek('?')) {\n this.consume()\n var truthy = this.ternary()\n this.expect(':')\n var falsy = this.ternary()\n return new ConditionalNode(predicate, truthy, falsy)\n }\n return predicate\n}\n\nParser.prototype.logicalOR = function () {\n var left = this.logicalXOR()\n if (this.peek('||')) {\n var op = this.consume()\n var right = this.logicalOR()\n return new OperatorNode(op.value, [left, right])\n }\n return left\n}\n\nParser.prototype.logicalXOR = function () {\n var left = this.logicalAND()\n if (this.current().value === 'xor') {\n var op = this.consume()\n var right = this.logicalXOR()\n return new OperatorNode(op.value, [left, right])\n }\n return left\n}\n\nParser.prototype.logicalAND = function () {\n var left = this.bitwiseOR()\n if (this.peek('&&')) {\n var op = this.consume()\n var right = this.logicalAND()\n return new OperatorNode(op.value, [left, right])\n }\n return left\n}\n\nParser.prototype.bitwiseOR = function () {\n var left = this.bitwiseXOR()\n if (this.peek('|')) {\n var op = this.consume()\n var right = this.bitwiseOR()\n return new OperatorNode(op.value, [left, right])\n }\n return left\n}\n\nParser.prototype.bitwiseXOR = function () {\n var left = this.bitwiseAND()\n if (this.peek('^|')) {\n var op = this.consume()\n var right = this.bitwiseXOR()\n return new OperatorNode(op.value, [left, right])\n }\n return left\n}\n\nParser.prototype.bitwiseAND = function () {\n var left = this.relational()\n if (this.peek('&')) {\n var op = this.consume()\n var right = this.bitwiseAND()\n return new OperatorNode(op.value, [left, right])\n }\n return left\n}\n\nParser.prototype.relational = function () {\n var left = this.shift()\n if (this.peek('==', '===', '!=', '!==', '>=', '<=', '>', '<')) {\n var op = this.consume()\n var right = this.shift()\n return new OperatorNode(op.value, [left, right])\n }\n return left\n}\n\nParser.prototype.shift = function () {\n var left = this.additive()\n if (this.peek('>>', '<<', '>>>')) {\n var op = this.consume()\n var right = this.shift()\n return new OperatorNode(op.value, [left, right])\n }\n return left\n}\n\nParser.prototype.additive = function () {\n var left = this.multiplicative()\n while (this.peek('+', '-')) {\n var op = this.consume()\n left = new OperatorNode(op.value, [left, this.multiplicative()])\n }\n return left\n}\n\nParser.prototype.multiplicative = function () {\n var op, right\n var left = this.unary()\n while (this.peek('*', '/', '%')) {\n op = this.consume()\n left = new OperatorNode(op.value, [left, this.unary()])\n }\n\n // implicit multiplication\n // - 2 x\n // - 2(x)\n // - (2)2\n if (this.current().type === tokenType.SYMBOL ||\n this.peek('(') ||\n (!(left.type instanceof ConstantNode) && this.current().type === tokenType.NUMBER)\n ) {\n right = this.multiplicative()\n return new OperatorNode('*', [left, right])\n }\n\n return left\n}\n\nParser.prototype.unary = function () {\n if (this.peek('-', '+', '~')) {\n var op = this.consume()\n var right = this.unary()\n return new UnaryNode(op.value, right)\n }\n return this.pow()\n}\n\nParser.prototype.pow = function () {\n var left = this.factorial()\n if (this.peek('^', '**')) {\n var op = this.consume()\n var right = this.unary()\n return new OperatorNode(op.value, [left, right])\n }\n return left\n}\n\nParser.prototype.factorial = function () {\n var left = this.symbol()\n if (this.peek('!')) {\n var op = this.consume()\n return new OperatorNode(op.value, [left])\n }\n return left\n}\n\nParser.prototype.symbol = function () {\n var current = this.current()\n if (current.type === tokenType.SYMBOL) {\n var symbol = this.consume()\n var node = this.functionCall(symbol)\n return node\n }\n return this.string()\n}\n\nParser.prototype.functionCall = function (symbolToken) {\n var name = symbolToken.value\n if (this.peek('(')) {\n this.consume()\n var params = []\n while (!this.peek(')') && !this.isEOF()) {\n params.push(this.assignment())\n if (this.peek(',')) {\n this.consume()\n }\n }\n this.expect(')')\n return new FunctionNode(name, params)\n }\n return new SymbolNode(name)\n}\n\nParser.prototype.string = function () {\n if (this.current().type === tokenType.STRING) {\n return new ConstantNode(this.consume().value, 'string')\n }\n return this.array()\n}\n\nParser.prototype.array = function () {\n if (this.peek('[')) {\n this.consume()\n var params = []\n while (!this.peek(']') && !this.isEOF()) {\n params.push(this.assignment())\n if (this.peek(',')) {\n this.consume()\n }\n }\n this.expect(']')\n return new ArrayNode(params)\n }\n return this.number()\n}\n\nParser.prototype.number = function () {\n var token = this.current()\n if (token.type === tokenType.NUMBER) {\n return new ConstantNode(this.consume().value, 'number')\n }\n return this.parentheses()\n}\n\nParser.prototype.parentheses = function () {\n var token = this.current()\n if (token.value === '(') {\n this.consume()\n var left = this.assignment()\n this.expect(')')\n return left\n }\n return this.end()\n}\n\nParser.prototype.end = function () {\n var token = this.current()\n if (token.type !== tokenType.EOF) {\n throw Error('unexpected end of expression')\n }\n}\n\nmodule.exports = Parser\n", "module.exports = {\n ArrayNode: require('./ArrayNode'),\n AssignmentNode: require('./AssignmentNode'),\n BlockNode: require('./BlockNode'),\n ConditionalNode: require('./ConditionalNode'),\n ConstantNode: require('./ConstantNode'),\n FunctionNode: require('./FunctionNode'),\n Node: require('./Node'),\n OperatorNode: require('./OperatorNode'),\n SymbolNode: require('./SymbolNode'),\n UnaryNode: require('./UnaryNode')\n}\n", "/*\n * mr-parser\n *\n * Copyright (c) 2015 Mauricio Poppe\n * Licensed under the MIT license.\n */\n\n'use strict'\n\nmodule.exports.Lexer = require('./lib/Lexer')\nmodule.exports.Parser = require('./lib/Parser')\nmodule.exports.nodeTypes = require('./lib/node/')\n", "'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n", "'use strict'\nmodule.exports = function (node) {\n var self = this\n var arr = []\n this.rawify(this.options.rawArrayExpressionElements, function () {\n arr = node.nodes.map(function (el) {\n return self.next(el)\n })\n })\n var arrString = '[' + arr.join(',') + ']'\n\n if (this.options.raw) {\n return arrString\n }\n return this.options.factory + '(' + arrString + ')'\n}\n", "'use strict'\n\nmodule.exports = function (node) {\n return 'scope[\"' + node.name + '\"] = ' + this.next(node.expr)\n}\n", "'use strict'\n\nmodule.exports = function (node) {\n var condition = '!!(' + this.next(node.condition) + ')'\n var trueExpr = this.next(node.trueExpr)\n var falseExpr = this.next(node.falseExpr)\n return '(' + condition + ' ? (' + trueExpr + ') : (' + falseExpr + ') )'\n}\n", "'use strict'\nmodule.exports = function (node) {\n if (this.options.raw) {\n return node.value\n }\n return this.options.factory + '(' + node.value + ')'\n}\n", "'use strict'\nvar SymbolNode = require('mr-parser').nodeTypes.SymbolNode\n\nvar functionProxy = function (node) {\n return '$$mathCodegen.functionProxy(' + this.next(new SymbolNode(node.name)) + ', \"' + node.name + '\")'\n}\n\nmodule.exports = function (node) {\n var self = this\n // wrap in a helper function to detect the type of symbol it must be a function\n // NOTE: if successful the wrapper returns the function itself\n // NOTE: node.name should be a symbol so that it's correctly represented as a string in SymbolNode\n var method = functionProxy.call(this, node)\n var args = []\n this.rawify(this.options.rawCallExpressionElements, function () {\n args = node.args.map(function (arg) {\n return self.next(arg)\n })\n })\n return method + '(' + args.join(', ') + ')'\n}\n\nmodule.exports.functionProxy = functionProxy\n", "'use strict'\n\nmodule.exports = {\n // arithmetic\n '+': 'add',\n '-': 'sub',\n '*': 'mul',\n '/': 'div',\n '^': 'pow',\n '%': 'mod',\n '!': 'factorial',\n\n // misc operators\n '|': 'bitwiseOR', // bitwise or\n '^|': 'bitwiseXOR', // bitwise xor\n '&': 'bitwiseAND', // bitwise and\n\n '||': 'logicalOR', // logical or\n 'xor': 'logicalXOR', // logical xor\n '&&': 'logicalAND', // logical and\n\n // comparison\n '<': 'lessThan',\n '>': 'greaterThan',\n '<=': 'lessEqualThan',\n '>=': 'greaterEqualThan',\n '===': 'strictlyEqual',\n '==': 'equal',\n '!==': 'strictlyNotEqual',\n '!=': 'notEqual',\n\n // shift\n '>>': 'shiftRight',\n '<<': 'shiftLeft',\n '>>>': 'unsignedRightShift'\n}\n", "'use strict'\n\nvar Operators = require('../misc/Operators')\n\nmodule.exports = function (node) {\n if (this.options.raw) {\n return ['(' + this.next(node.args[0]), node.op, this.next(node.args[1]) + ')'].join(' ')\n }\n\n var namedOperator = Operators[node.op]\n\n if (!namedOperator) {\n throw TypeError('unidentified operator')\n }\n\n /* eslint-disable new-cap */\n return this.FunctionNode({\n name: namedOperator,\n args: node.args\n })\n /* eslint-enable new-cap */\n}\n", "'use strict'\n\nmodule.exports = function (node) {\n var id = node.name\n return '$$mathCodegen.getProperty(\"' + id + '\", scope, ns)'\n}\n", "'use strict'\n\nmodule.exports = {\n '+': 'positive',\n '-': 'negative',\n '~': 'oneComplement'\n}\n", "'use strict'\n\nvar UnaryOperators = require('../misc/UnaryOperators')\n\nmodule.exports = function (node) {\n if (this.options.raw) {\n return node.op + this.next(node.argument)\n }\n\n if (!(node.op in UnaryOperators)) {\n throw new SyntaxError(node.op + ' not implemented')\n }\n\n var namedOperator = UnaryOperators[node.op]\n /* eslint-disable new-cap */\n return this.FunctionNode({\n name: namedOperator,\n args: [node.argument]\n })\n /* eslint-enable new-cap */\n}\n", "'use strict'\nvar extend = require('extend')\n\nvar types = {\n ArrayNode: require('./node/ArrayNode'),\n AssignmentNode: require('./node/AssignmentNode'),\n ConditionalNode: require('./node/ConditionalNode'),\n ConstantNode: require('./node/ConstantNode'),\n FunctionNode: require('./node/FunctionNode'),\n OperatorNode: require('./node/OperatorNode'),\n SymbolNode: require('./node/SymbolNode'),\n UnaryNode: require('./node/UnaryNode')\n}\n\nvar Interpreter = function (owner, options) {\n this.owner = owner\n this.options = extend({\n factory: 'ns.factory',\n raw: false,\n rawArrayExpressionElements: true,\n rawCallExpressionElements: false\n }, options)\n}\n\nextend(Interpreter.prototype, types)\n\n// main method which decides which expression to call\nInterpreter.prototype.next = function (node) {\n if (!(node.type in this)) {\n throw new TypeError('the node type ' + node.type + ' is not implemented')\n }\n return this[node.type](node)\n}\n\nInterpreter.prototype.rawify = function (test, fn) {\n var oldRaw = this.options.raw\n if (test) {\n this.options.raw = true\n }\n fn()\n if (test) {\n this.options.raw = oldRaw\n }\n}\n\nmodule.exports = Interpreter\n", "'use strict'\n\nvar Parser = require('mr-parser').Parser\nvar Interpreter = require('./Interpreter')\nvar extend = require('extend')\n\nfunction CodeGenerator (options, defs) {\n this.statements = []\n this.defs = defs || {}\n this.interpreter = new Interpreter(this, options)\n}\n\nCodeGenerator.prototype.setDefs = function (defs) {\n this.defs = extend(this.defs, defs)\n return this\n}\n\nCodeGenerator.prototype.compile = function (namespace) {\n if (!namespace || !(typeof namespace === 'object' || typeof namespace === 'function')) {\n throw TypeError('namespace must be an object')\n }\n if (typeof namespace.factory !== 'function') {\n throw TypeError('namespace.factory must be a function')\n }\n\n // definitions available in the function\n // each property under this.defs is mapped to local variables\n // e.g\n //\n // function (defs) {\n // var ns = defs['ns']\n // // code generated for the expression\n // }\n this.defs.ns = namespace\n this.defs.$$mathCodegen = {\n getProperty: function (symbol, scope, ns) {\n if (symbol in scope) {\n return scope[symbol]\n }\n if (symbol in ns) {\n return ns[symbol]\n }\n throw SyntaxError('symbol \"' + symbol + '\" is undefined')\n },\n functionProxy: function (fn, name) {\n if (typeof fn !== 'function') {\n throw SyntaxError('symbol \"' + name + '\" must be a function')\n }\n return fn\n }\n }\n this.defs.$$processScope = this.defs.$$processScope || function () {}\n\n var defsCode = Object.keys(this.defs).map(function (name) {\n return 'var ' + name + ' = defs[\"' + name + '\"]'\n })\n\n // statement join\n if (!this.statements.length) {\n throw Error('there are no statements saved in this generator, make sure you parse an expression before compiling it')\n }\n\n // last statement is always a return statement\n this.statements[this.statements.length - 1] = 'return ' + this.statements[this.statements.length - 1]\n\n var code = this.statements.join(';')\n var factoryCode = defsCode.join('\\n') + '\\n' + [\n 'return {',\n ' eval: function (scope) {',\n ' scope = scope || {}',\n ' $$processScope(scope)',\n ' ' + code,\n ' },',\n \" code: '\" + code + \"'\",\n '}'\n ].join('\\n')\n\n /* eslint-disable */\n var factory = new Function('defs', factoryCode)\n return factory(this.defs)\n /* eslint-enable */\n}\n\nCodeGenerator.prototype.parse = function (code) {\n var self = this\n var program = new Parser().parse(code)\n this.statements = program.blocks.map(function (statement) {\n return self.interpreter.next(statement)\n })\n return this\n}\n\nmodule.exports = CodeGenerator\n", "/*\n * math-codegen\n *\n * Copyright (c) 2015 Mauricio Poppe\n * Licensed under the MIT license.\n */\n'use strict'\nmodule.exports = require('./lib/CodeGenerator')\n", "'use strict'\nmodule.exports = function () {\n var math = Object.create(Math)\n\n math.factory = function (a) {\n if (typeof a !== 'number') {\n throw new TypeError('built-in math factory only accepts numbers')\n }\n return Number(a)\n }\n\n math.add = function (a, b) {\n return a + b\n }\n math.sub = function (a, b) {\n return a - b\n }\n math.mul = function (a, b) {\n return a * b\n }\n math.div = function (a, b) {\n return a / b\n }\n math.mod = function (a, b) {\n return a % b\n }\n math.factorial = function (a) {\n var res = 1\n for (var i = 2; i <= a; i += 1) {\n res *= i\n }\n return res\n }\n\n // taken from https://github.com/josdejong/mathjs/blob/master/lib/function/arithmetic/nthRoot.js\n math.nthRoot = function (a, root) {\n var inv = root < 0\n if (inv) {\n root = -root\n }\n\n if (root === 0) {\n throw new Error('Root must be non-zero')\n }\n if (a < 0 && (Math.abs(root) % 2 !== 1)) {\n throw new Error('Root must be odd when a is negative.')\n }\n\n // edge cases zero and infinity\n if (a === 0) {\n return 0\n }\n if (!isFinite(a)) {\n return inv ? 0 : a\n }\n\n var x = Math.pow(Math.abs(a), 1 / root)\n // If a < 0, we require that root is an odd integer,\n // so (-1) ^ (1/root) = -1\n x = a < 0 ? -x : x\n return inv ? 1 / x : x\n }\n\n // logical\n math.logicalOR = function (a, b) {\n return a || b\n }\n math.logicalXOR = function (a, b) {\n /* eslint-disable */\n return a != b\n /* eslint-enable*/\n }\n math.logicalAND = function (a, b) {\n return a && b\n }\n\n // bitwise\n math.bitwiseOR = function (a, b) {\n /* eslint-disable */\n return a | b\n /* eslint-enable*/\n }\n math.bitwiseXOR = function (a, b) {\n /* eslint-disable */\n return a ^ b\n /* eslint-enable*/\n }\n math.bitwiseAND = function (a, b) {\n /* eslint-disable */\n return a & b\n /* eslint-enable*/\n }\n\n // relational\n math.lessThan = function (a, b) {\n return a < b\n }\n math.lessEqualThan = function (a, b) {\n return a <= b\n }\n math.greaterThan = function (a, b) {\n return a > b\n }\n math.greaterEqualThan = function (a, b) {\n return a >= b\n }\n math.equal = function (a, b) {\n /* eslint-disable */\n return a == b\n /* eslint-enable*/\n }\n math.strictlyEqual = function (a, b) {\n return a === b\n }\n math.notEqual = function (a, b) {\n /* eslint-disable */\n return a != b\n /* eslint-enable*/\n }\n math.strictlyNotEqual = function (a, b) {\n return a !== b\n }\n\n // shift\n math.shiftRight = function (a, b) {\n return (a >> b)\n }\n math.shiftLeft = function (a, b) {\n return (a << b)\n }\n math.unsignedRightShift = function (a, b) {\n return (a >>> b)\n }\n\n // unary\n math.negative = function (a) {\n return -a\n }\n math.positive = function (a) {\n return a\n }\n\n return math\n}\n", "'use strict'\n\nvar CodeGenerator = require('math-codegen')\nvar math = require('./adapter')()\n\nfunction processScope (scope) {\n Object.keys(scope).forEach(function (k) {\n var value = scope[k]\n scope[k] = math.factory(value)\n })\n}\n\nmodule.exports = function (expression) {\n return new CodeGenerator()\n .setDefs({\n $$processScope: processScope\n })\n .parse(expression)\n .compile(math)\n}\n\nmodule.exports.math = math\n", "/*\n * built-in-math-eval\n *\n * Copyright (c) 2015 Mauricio Poppe\n * Licensed under the MIT license.\n */\n\n'use strict'\n\nmodule.exports = require('./lib/eval')\n", "'use strict'\nmodule.exports = function (node) {\n var self = this\n var arr = []\n this.rawify(this.options.rawArrayExpressionElements, function () {\n arr = node.nodes.map(function (el) {\n return self.next(el)\n })\n })\n var arrString = '[' + arr.join(',') + ']'\n\n if (this.options.raw) {\n return arrString\n }\n return this.options.factory + '(' + arrString + ')'\n}\n", "'use strict'\n\nmodule.exports = function (node) {\n return 'scope[\"' + node.name + '\"] = ' + this.next(node.expr)\n}\n", "'use strict'\n\nmodule.exports = function (node) {\n var condition = '!!(' + this.next(node.condition) + ')'\n var trueExpr = this.next(node.trueExpr)\n var falseExpr = this.next(node.falseExpr)\n return '(' + condition + ' ? (' + trueExpr + ') : (' + falseExpr + ') )'\n}\n", "'use strict'\nmodule.exports = function (node) {\n if (this.options.raw) {\n return node.value\n }\n return this.options.factory + '(' + node.value + ')'\n}\n", "'use strict'\nvar SymbolNode = require('mr-parser').nodeTypes.SymbolNode\n\nvar functionProxy = function (node) {\n return '$$mathCodegen.functionProxy(' + this.next(new SymbolNode(node.name)) + ', \"' + node.name + '\")'\n}\n\nmodule.exports = function (node) {\n var self = this\n // wrap in a helper function to detect the type of symbol it must be a function\n // NOTE: if successful the wrapper returns the function itself\n // NOTE: node.name should be a symbol so that it's correctly represented as a string in SymbolNode\n var method = functionProxy.call(this, node)\n var args = []\n this.rawify(this.options.rawCallExpressionElements, function () {\n args = node.args.map(function (arg) {\n return self.next(arg)\n })\n })\n return method + '(' + args.join(', ') + ')'\n}\n\nmodule.exports.functionProxy = functionProxy\n", "'use strict'\n\nmodule.exports = {\n // arithmetic\n '+': 'add',\n '-': 'sub',\n '*': 'mul',\n '/': 'div',\n '^': 'pow',\n '%': 'mod',\n '!': 'factorial',\n\n // misc operators\n '|': 'bitwiseOR', // bitwise or\n '^|': 'bitwiseXOR', // bitwise xor\n '&': 'bitwiseAND', // bitwise and\n\n '||': 'logicalOR', // logical or\n 'xor': 'logicalXOR', // logical xor\n '&&': 'logicalAND', // logical and\n\n // comparison\n '<': 'lessThan',\n '>': 'greaterThan',\n '<=': 'lessEqualThan',\n '>=': 'greaterEqualThan',\n '===': 'strictlyEqual',\n '==': 'equal',\n '!==': 'strictlyNotEqual',\n '!=': 'notEqual',\n\n // shift\n '>>': 'shiftRight',\n '<<': 'shiftLeft',\n '>>>': 'unsignedRightShift'\n}\n", "'use strict'\n\nvar Operators = require('../misc/Operators')\n\nmodule.exports = function (node) {\n if (this.options.raw) {\n return ['(' + this.next(node.args[0]), node.op, this.next(node.args[1]) + ')'].join(' ')\n }\n\n var namedOperator = Operators[node.op]\n\n if (!namedOperator) {\n throw TypeError('unidentified operator')\n }\n\n /* eslint-disable new-cap */\n return this.FunctionNode({\n name: namedOperator,\n args: node.args\n })\n /* eslint-enable new-cap */\n}\n", "'use strict'\n\nmodule.exports = function (node) {\n var id = node.name\n return '$$mathCodegen.getProperty(\"' + id + '\", scope, ns)'\n}\n", "'use strict'\n\nmodule.exports = {\n '+': 'positive',\n '-': 'negative',\n '~': 'oneComplement'\n}\n", "'use strict'\n\nvar UnaryOperators = require('../misc/UnaryOperators')\n\nmodule.exports = function (node) {\n if (this.options.raw) {\n return node.op + this.next(node.argument)\n }\n\n if (!(node.op in UnaryOperators)) {\n throw new SyntaxError(node.op + ' not implemented')\n }\n\n var namedOperator = UnaryOperators[node.op]\n /* eslint-disable new-cap */\n return this.FunctionNode({\n name: namedOperator,\n args: [node.argument]\n })\n /* eslint-enable new-cap */\n}\n", "'use strict'\nvar extend = require('extend')\n\nvar types = {\n ArrayNode: require('./node/ArrayNode'),\n AssignmentNode: require('./node/AssignmentNode'),\n ConditionalNode: require('./node/ConditionalNode'),\n ConstantNode: require('./node/ConstantNode'),\n FunctionNode: require('./node/FunctionNode'),\n OperatorNode: require('./node/OperatorNode'),\n SymbolNode: require('./node/SymbolNode'),\n UnaryNode: require('./node/UnaryNode')\n}\n\nvar Interpreter = function (owner, options) {\n this.owner = owner\n this.options = extend({\n factory: 'ns.factory',\n raw: false,\n rawArrayExpressionElements: true,\n rawCallExpressionElements: false,\n applyFactoryToScope: false\n }, options)\n}\n\nextend(Interpreter.prototype, types)\n\n// main method which decides which expression to call\nInterpreter.prototype.next = function (node) {\n if (!(node.type in this)) {\n throw new TypeError('the node type ' + node.type + ' is not implemented')\n }\n return this[node.type](node)\n}\n\nInterpreter.prototype.rawify = function (test, fn) {\n var oldRaw = this.options.raw\n if (test) {\n this.options.raw = true\n }\n fn()\n if (test) {\n this.options.raw = oldRaw\n }\n}\n\nmodule.exports = Interpreter\n", "'use strict'\n\nvar Parser = require('mr-parser').Parser\nvar Interpreter = require('./Interpreter')\nvar extend = require('extend')\n\nfunction CodeGenerator (options, defs) {\n this.statements = []\n this.defs = defs || {}\n this.interpreter = new Interpreter(this, options)\n}\n\nCodeGenerator.prototype.setDefs = function (defs) {\n this.defs = extend(this.defs, defs)\n return this\n}\n\nCodeGenerator.prototype.compile = function (namespace) {\n var self = this\n if (!namespace || !(typeof namespace === 'object' || typeof namespace === 'function')) {\n throw TypeError('namespace must be an object')\n }\n if (typeof namespace.factory !== 'function') {\n throw TypeError('namespace.factory must be a function')\n }\n\n // definitions available in the function\n // each property under this.defs is mapped to local variables\n // e.g\n //\n // function (defs) {\n // var ns = defs['ns']\n // // code generated for the expression\n // }\n this.defs.ns = namespace\n this.defs.$$mathCodegen = {\n getProperty: function (symbol, scope, ns) {\n function applyFactoryIfNeeded (value) {\n if (self.interpreter.options.applyFactoryToScope && typeof value !== 'function') {\n return ns.factory(value)\n }\n return value\n }\n\n if (symbol in scope) {\n return applyFactoryIfNeeded(scope[symbol])\n }\n if (symbol in ns) {\n return applyFactoryIfNeeded(ns[symbol])\n }\n throw SyntaxError('symbol \"' + symbol + '\" is undefined')\n },\n functionProxy: function (fn, name) {\n if (typeof fn !== 'function') {\n throw SyntaxError('symbol \"' + name + '\" must be a function')\n }\n return fn\n }\n }\n this.defs.$$processScope = this.defs.$$processScope || function () {}\n\n var defsCode = Object.keys(this.defs).map(function (name) {\n return 'var ' + name + ' = defs[\"' + name + '\"]'\n })\n\n // statement join\n if (!this.statements.length) {\n throw Error('there are no statements saved in this generator, make sure you parse an expression before compiling it')\n }\n\n // last statement is always a return statement\n this.statements[this.statements.length - 1] = 'return ' + this.statements[this.statements.length - 1]\n\n var code = this.statements.join(';')\n var factoryCode = defsCode.join('\\n') + '\\n' + [\n 'return {',\n ' eval: function (scope) {',\n ' scope = scope || {}',\n ' $$processScope(scope)',\n ' ' + code,\n ' },',\n \" code: '\" + code + \"'\",\n '}'\n ].join('\\n')\n\n /* eslint-disable */\n var factory = new Function('defs', factoryCode)\n return factory(this.defs)\n /* eslint-enable */\n}\n\nCodeGenerator.prototype.parse = function (code) {\n var self = this\n var program = new Parser().parse(code)\n this.statements = program.blocks.map(function (statement) {\n return self.interpreter.next(statement)\n })\n return this\n}\n\nmodule.exports = CodeGenerator\n", "/*\n * math-codegen\n *\n * Copyright (c) 2015 Mauricio Poppe\n * Licensed under the MIT license.\n */\n'use strict'\nmodule.exports = require('./lib/CodeGenerator')\n", null, "var hasTypedArrays = false\nif(typeof Float64Array !== \"undefined\") {\n var DOUBLE_VIEW = new Float64Array(1)\n , UINT_VIEW = new Uint32Array(DOUBLE_VIEW.buffer)\n DOUBLE_VIEW[0] = 1.0\n hasTypedArrays = true\n if(UINT_VIEW[1] === 0x3ff00000) {\n //Use little endian\n module.exports = function doubleBitsLE(n) {\n DOUBLE_VIEW[0] = n\n return [ UINT_VIEW[0], UINT_VIEW[1] ]\n }\n function toDoubleLE(lo, hi) {\n UINT_VIEW[0] = lo\n UINT_VIEW[1] = hi\n return DOUBLE_VIEW[0]\n }\n module.exports.pack = toDoubleLE\n function lowUintLE(n) {\n DOUBLE_VIEW[0] = n\n return UINT_VIEW[0]\n }\n module.exports.lo = lowUintLE\n function highUintLE(n) {\n DOUBLE_VIEW[0] = n\n return UINT_VIEW[1]\n }\n module.exports.hi = highUintLE\n } else if(UINT_VIEW[0] === 0x3ff00000) {\n //Use big endian\n module.exports = function doubleBitsBE(n) {\n DOUBLE_VIEW[0] = n\n return [ UINT_VIEW[1], UINT_VIEW[0] ]\n }\n function toDoubleBE(lo, hi) {\n UINT_VIEW[1] = lo\n UINT_VIEW[0] = hi\n return DOUBLE_VIEW[0]\n }\n module.exports.pack = toDoubleBE\n function lowUintBE(n) {\n DOUBLE_VIEW[0] = n\n return UINT_VIEW[1]\n }\n module.exports.lo = lowUintBE\n function highUintBE(n) {\n DOUBLE_VIEW[0] = n\n return UINT_VIEW[0]\n }\n module.exports.hi = highUintBE\n } else {\n hasTypedArrays = false\n }\n}\nif(!hasTypedArrays) {\n var buffer = new Buffer(8)\n module.exports = function doubleBits(n) {\n buffer.writeDoubleLE(n, 0, true)\n return [ buffer.readUInt32LE(0, true), buffer.readUInt32LE(4, true) ]\n }\n function toDouble(lo, hi) {\n buffer.writeUInt32LE(lo, 0, true)\n buffer.writeUInt32LE(hi, 4, true)\n return buffer.readDoubleLE(0, true)\n }\n module.exports.pack = toDouble \n function lowUint(n) {\n buffer.writeDoubleLE(n, 0, true)\n return buffer.readUInt32LE(0, true)\n }\n module.exports.lo = lowUint\n function highUint(n) {\n buffer.writeDoubleLE(n, 0, true)\n return buffer.readUInt32LE(4, true)\n }\n module.exports.hi = highUint\n}\n\nmodule.exports.sign = function(n) {\n return module.exports.hi(n) >>> 31\n}\n\nmodule.exports.exponent = function(n) {\n var b = module.exports.hi(n)\n return ((b<<1) >>> 21) - 1023\n}\n\nmodule.exports.fraction = function(n) {\n var lo = module.exports.lo(n)\n var hi = module.exports.hi(n)\n var b = hi & ((1<<20) - 1)\n if(hi & 0x7ff00000) {\n b += (1<<20)\n }\n return [lo, b]\n}\n\nmodule.exports.denormalized = function(n) {\n var hi = module.exports.hi(n)\n return !(hi & 0x7ff00000)\n}", "\"use strict\"\n\nvar doubleBits = require(\"double-bits\")\n\nvar SMALLEST_DENORM = Math.pow(2, -1074)\nvar UINT_MAX = (-1)>>>0\n\nmodule.exports = nextafter\n\nfunction nextafter(x, y) {\n if(isNaN(x) || isNaN(y)) {\n return NaN\n }\n if(x === y) {\n return x\n }\n if(x === 0) {\n if(y < 0) {\n return -SMALLEST_DENORM\n } else {\n return SMALLEST_DENORM\n }\n }\n var hi = doubleBits.hi(x)\n var lo = doubleBits.lo(x)\n if((y > x) === (x > 0)) {\n if(lo === UINT_MAX) {\n hi += 1\n lo = 0\n } else {\n lo += 1\n }\n } else {\n if(lo === 0) {\n lo = UINT_MAX\n hi -= 1\n } else {\n lo -= 1\n }\n }\n return doubleBits.pack(lo, hi)\n}", null, null, null, null, null, null, null, null, null, null, "'use strict'\nmodule.exports = function (ns) {\n // mod\n ns.mod = ns.fmod\n\n // relational\n ns.lessThan = ns.lt\n ns.lessEqualThan = ns.leq\n ns.greaterThan = ns.gt\n ns.greaterEqualThan = ns.geq\n\n ns.strictlyEqual = ns.equal\n ns.strictlyNotEqual = ns.notEqual\n\n ns.logicalAND = function (a, b) {\n return a && b\n }\n ns.logicalXOR = function (a, b) {\n return a ^ b\n }\n ns.logicalOR = function (a, b) {\n return a || b\n }\n}\n", "/**\n * Created by mauricio on 5/12/15.\n */\n'use strict'\nmodule.exports = function (Interval) {\n return {\n disableRounding: function () {\n Interval.round.disable()\n },\n\n enableRounding: function () {\n Interval.round.enable()\n }\n }\n}\n", "/**\n * Created by mauricio on 5/12/15.\n */\n'use strict'\n\nconst CodeGenerator = require('math-codegen')\nconst Interval = require('interval-arithmetic').default\nrequire('./adapter')(Interval)\n\nfunction processScope (scope) {\n Object.keys(scope).forEach(function (k) {\n const value = scope[k]\n if (typeof value === 'number' || Array.isArray(value)) {\n scope[k] = Interval.factory(value)\n } else if (typeof value === 'object' && 'lo' in value && 'hi' in value) {\n scope[k] = Interval.factory(value.lo, value.hi)\n }\n })\n}\n\nmodule.exports = function (expression) {\n return new CodeGenerator()\n .setDefs({\n $$processScope: processScope\n })\n .parse(expression)\n .compile(Interval)\n}\n\nmodule.exports.policies = require('./policies')(Interval)\nmodule.exports.Interval = Interval\n", "/*\n * interval-arithmetic-eval\n *\n * Copyright (c) 2015 Mauricio Poppe\n * Licensed under the MIT license.\n */\n'use strict'\nmodule.exports = require('./lib/eval')\n", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=types.js.map", null, "/** Query DOM element that matches the selector. */\nexport const $ = (selector) => document.querySelector(selector)\n\n/** Query all DOM elements matching the selector. */\nexport const $all = (selector) => document.querySelectorAll(selector)\n\n/** Local storage. */\nexport const store = {\n /** Get value from local storage. */\n get: (key) => JSON.parse(localStorage.getItem(key)),\n /** Save value to local storage. */\n set: (key, value) => {\n localStorage.setItem(key, JSON.stringify(value))\n }\n}\n\n/** App globals. */\nexport const app = {\n activePlot: null,\n activePage: null,\n colors: null,\n currencyRates: {},\n mathScope: {},\n plotFunction: null,\n refreshCM: true,\n settings: null,\n udfList: [],\n uduList: []\n}\n", "import { IconNode, IconNodeChild, SVGProps } from './types';\n\n/**\n * Creates a new HTMLElement from icon node\n * @param {string} tag\n * @param {object} attrs\n * @param {array} children\n * @returns {HTMLElement}\n */\nconst createElement = (tag: string, attrs: SVGProps, children: IconNodeChild[] = []) => {\n const element = document.createElementNS('http://www.w3.org/2000/svg', tag);\n\n Object.keys(attrs).forEach((name) => {\n element.setAttribute(name, String(attrs[name]));\n });\n\n if (children.length) {\n children.forEach((child) => {\n const childElement = createElement(...child);\n\n element.appendChild(childElement);\n });\n }\n\n return element;\n};\n\n/**\n * Creates a new HTMLElement from icon node\n * @param {[tag: string, attrs: object, children: array]} iconNode\n * @returns {HTMLElement}\n */\nexport default ([tag, attrs, children]: IconNode) => createElement(tag, attrs, children);\n", "import createElement from './createElement';\nimport { Icons } from './types';\n\nexport type CustomAttrs = { [attr: string]: any };\n\n/**\n * Get the attributes of an HTML element.\n * @param {HTMLElement} element\n * @returns {Object}\n */\nexport const getAttrs = (element: Element): Record =>\n Array.from(element.attributes).reduce>((attrs, attr) => {\n attrs[attr.name] = attr.value;\n return attrs;\n }, {});\n\n/**\n * Gets the classNames of an attributes Object.\n * @param {Object} attrs\n * @returns {Array}\n */\nexport const getClassNames = (attrs: Record | string): string | string[] => {\n if (typeof attrs === 'string') return attrs;\n if (!attrs || !attrs.class) return '';\n if (attrs.class && typeof attrs.class === 'string') {\n return attrs.class.split(' ');\n }\n if (attrs.class && Array.isArray(attrs.class)) {\n return attrs.class;\n }\n return '';\n};\n\n/**\n * Combines the classNames of array of classNames to a String\n * @param {array} arrayOfClassnames\n * @returns {string}\n */\nexport const combineClassNames = (arrayOfClassnames: (string | Record)[]) => {\n const classNameArray = arrayOfClassnames.flatMap(getClassNames);\n\n return classNameArray\n .map((classItem) => classItem.trim())\n .filter(Boolean)\n .filter((value, index, self) => self.indexOf(value) === index)\n .join(' ');\n};\n\nconst toPascalCase = (string: string): string =>\n string.replace(/(\\w)(\\w*)(_|-|\\s*)/g, (g0, g1, g2) => g1.toUpperCase() + g2.toLowerCase());\n\ninterface ReplaceElementOptions {\n nameAttr: string;\n icons: Icons;\n attrs: Record;\n}\n\n/**\n * ReplaceElement, replaces the given element with the created icon.\n * @param {HTMLElement} element\n * @param {{ nameAttr: string, icons: object, attrs: object }} options: { nameAttr, icons, attrs }\n * @returns {Function}\n */\nconst replaceElement = (element: Element, { nameAttr, icons, attrs }: ReplaceElementOptions) => {\n const iconName = element.getAttribute(nameAttr);\n\n if (iconName == null) return;\n\n const ComponentName = toPascalCase(iconName);\n\n const iconNode = icons[ComponentName];\n\n if (!iconNode) {\n return console.warn(\n `${element.outerHTML} icon name was not found in the provided icons object.`,\n );\n }\n\n const elementAttrs = getAttrs(element);\n const [tag, iconAttributes, children] = iconNode;\n\n const iconAttrs = {\n ...iconAttributes,\n 'data-lucide': iconName,\n ...attrs,\n ...elementAttrs,\n };\n\n const classNames = combineClassNames(['lucide', `lucide-${iconName}`, elementAttrs, attrs]);\n\n if (classNames) {\n Object.assign(iconAttrs, {\n class: classNames,\n });\n }\n\n const svgElement = createElement([tag, iconAttrs, children]);\n\n return element.parentNode?.replaceChild(svgElement, element);\n};\n\nexport default replaceElement;\n", "import { SVGProps } from './types';\n\nconst defaultAttributes: SVGProps = {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': 2,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n};\n\nexport default defaultAttributes;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name arrow-up-down\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMjEgMTYtNCA0LTQtNCIgLz4KICA8cGF0aCBkPSJNMTcgMjBWNCIgLz4KICA8cGF0aCBkPSJtMyA4IDQtNCA0IDQiIC8+CiAgPHBhdGggZD0iTTcgNHYxNiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/arrow-up-down\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst ArrowUpDown: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['path', { d: 'm21 16-4 4-4-4' }],\n ['path', { d: 'M17 20V4' }],\n ['path', { d: 'm3 8 4-4 4 4' }],\n ['path', { d: 'M7 4v16' }],\n ],\n];\n\nexport default ArrowUpDown;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name braces\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNOCAzSDdhMiAyIDAgMCAwLTIgMnY1YTIgMiAwIDAgMS0yIDIgMiAyIDAgMCAxIDIgMnY1YzAgMS4xLjkgMiAyIDJoMSIgLz4KICA8cGF0aCBkPSJNMTYgMjFoMWEyIDIgMCAwIDAgMi0ydi01YzAtMS4xLjktMiAyLTJhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMC0yLTJoLTEiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/braces\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst Braces: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['path', { d: 'M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1' }],\n ['path', { d: 'M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1' }],\n ],\n];\n\nexport default Braces;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name circle-alert\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8bGluZSB4MT0iMTIiIHgyPSIxMiIgeTE9IjgiIHkyPSIxMiIgLz4KICA8bGluZSB4MT0iMTIiIHgyPSIxMi4wMSIgeTE9IjE2IiB5Mj0iMTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/circle-alert\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst CircleAlert: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['circle', { cx: '12', cy: '12', r: '10' }],\n ['line', { x1: '12', x2: '12', y1: '8', y2: '12' }],\n ['line', { x1: '12', x2: '12.01', y1: '16', y2: '16' }],\n ],\n];\n\nexport default CircleAlert;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name circle\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/circle\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst Circle: IconNode = ['svg', defaultAttributes, [['circle', { cx: '12', cy: '12', r: '10' }]]];\n\nexport default Circle;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name copy\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHg9IjgiIHk9IjgiIHJ4PSIyIiByeT0iMiIgLz4KICA8cGF0aCBkPSJNNCAxNmMtMS4xIDAtMi0uOS0yLTJWNGMwLTEuMS45LTIgMi0yaDEwYzEuMSAwIDIgLjkgMiAyIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/copy\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst Copy: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['rect', { width: '14', height: '14', x: '8', y: '8', rx: '2', ry: '2' }],\n ['path', { d: 'M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2' }],\n ],\n];\n\nexport default Copy;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name corner-down-right\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cG9seWxpbmUgcG9pbnRzPSIxNSAxMCAyMCAxNSAxNSAyMCIgLz4KICA8cGF0aCBkPSJNNCA0djdhNCA0IDAgMCAwIDQgNGgxMiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/corner-down-right\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst CornerDownRight: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['polyline', { points: '15 10 20 15 15 20' }],\n ['path', { d: 'M4 4v7a4 4 0 0 0 4 4h12' }],\n ],\n];\n\nexport default CornerDownRight;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name dot\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMi4xIiBjeT0iMTIuMSIgcj0iMSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/dot\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst Dot: IconNode = ['svg', defaultAttributes, [['circle', { cx: '12.1', cy: '12.1', r: '1' }]]];\n\nexport default Dot;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name download\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNCIgLz4KICA8cG9seWxpbmUgcG9pbnRzPSI3IDEwIDEyIDE1IDE3IDEwIiAvPgogIDxsaW5lIHgxPSIxMiIgeDI9IjEyIiB5MT0iMTUiIHkyPSIzIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/download\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst Download: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['path', { d: 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4' }],\n ['polyline', { points: '7 10 12 15 17 10' }],\n ['line', { x1: '12', x2: '12', y1: '15', y2: '3' }],\n ],\n];\n\nexport default Download;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name ellipsis-vertical\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxIiAvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iNSIgcj0iMSIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjE5IiByPSIxIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/ellipsis-vertical\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst EllipsisVertical: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['circle', { cx: '12', cy: '12', r: '1' }],\n ['circle', { cx: '12', cy: '5', r: '1' }],\n ['circle', { cx: '12', cy: '19', r: '1' }],\n ],\n];\n\nexport default EllipsisVertical;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name eraser\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNyAyMS00LjMtNC4zYy0xLTEtMS0yLjUgMC0zLjRsOS42LTkuNmMxLTEgMi41LTEgMy40IDBsNS42IDUuNmMxIDEgMSAyLjUgMCAzLjRMMTMgMjEiIC8+CiAgPHBhdGggZD0iTTIyIDIxSDciIC8+CiAgPHBhdGggZD0ibTUgMTEgOSA5IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/eraser\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst Eraser: IconNode = [\n 'svg',\n defaultAttributes,\n [\n [\n 'path',\n { d: 'm7 21-4.3-4.3c-1-1-1-2.5 0-3.4l9.6-9.6c1-1 2.5-1 3.4 0l5.6 5.6c1 1 1 2.5 0 3.4L13 21' },\n ],\n ['path', { d: 'M22 21H7' }],\n ['path', { d: 'm5 11 9 9' }],\n ],\n];\n\nexport default Eraser;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name info\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8cGF0aCBkPSJNMTIgMTZ2LTQiIC8+CiAgPHBhdGggZD0iTTEyIDhoLjAxIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/info\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst Info: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['circle', { cx: '12', cy: '12', r: '10' }],\n ['path', { d: 'M12 16v-4' }],\n ['path', { d: 'M12 8h.01' }],\n ],\n];\n\nexport default Info;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name list-restart\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgNkgzIiAvPgogIDxwYXRoIGQ9Ik03IDEySDMiIC8+CiAgPHBhdGggZD0iTTcgMThIMyIgLz4KICA8cGF0aCBkPSJNMTIgMThhNSA1IDAgMCAwIDktMyA0LjUgNC41IDAgMCAwLTQuNS00LjVjLTEuMzMgMC0yLjU0LjU0LTMuNDEgMS40MUwxMSAxNCIgLz4KICA8cGF0aCBkPSJNMTEgMTB2NGg0IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/list-restart\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst ListRestart: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['path', { d: 'M21 6H3' }],\n ['path', { d: 'M7 12H3' }],\n ['path', { d: 'M7 18H3' }],\n ['path', { d: 'M12 18a5 5 0 0 0 9-3 4.5 4.5 0 0 0-4.5-4.5c-1.33 0-2.54.54-3.41 1.41L11 14' }],\n ['path', { d: 'M11 10v4h4' }],\n ],\n];\n\nexport default ListRestart;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name palette\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMy41IiBjeT0iNi41IiByPSIuNSIgZmlsbD0iY3VycmVudENvbG9yIiAvPgogIDxjaXJjbGUgY3g9IjE3LjUiIGN5PSIxMC41IiByPSIuNSIgZmlsbD0iY3VycmVudENvbG9yIiAvPgogIDxjaXJjbGUgY3g9IjguNSIgY3k9IjcuNSIgcj0iLjUiIGZpbGw9ImN1cnJlbnRDb2xvciIgLz4KICA8Y2lyY2xlIGN4PSI2LjUiIGN5PSIxMi41IiByPSIuNSIgZmlsbD0iY3VycmVudENvbG9yIiAvPgogIDxwYXRoIGQ9Ik0xMiAyQzYuNSAyIDIgNi41IDIgMTJzNC41IDEwIDEwIDEwYy45MjYgMCAxLjY0OC0uNzQ2IDEuNjQ4LTEuNjg4IDAtLjQzNy0uMTgtLjgzNS0uNDM3LTEuMTI1LS4yOS0uMjg5LS40MzgtLjY1Mi0uNDM4LTEuMTI1YTEuNjQgMS42NCAwIDAgMSAxLjY2OC0xLjY2OGgxLjk5NmMzLjA1MSAwIDUuNTU1LTIuNTAzIDUuNTU1LTUuNTU0QzIxLjk2NSA2LjAxMiAxNy40NjEgMiAxMiAyeiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/palette\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst Palette: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['circle', { cx: '13.5', cy: '6.5', r: '.5', fill: 'currentColor' }],\n ['circle', { cx: '17.5', cy: '10.5', r: '.5', fill: 'currentColor' }],\n ['circle', { cx: '8.5', cy: '7.5', r: '.5', fill: 'currentColor' }],\n ['circle', { cx: '6.5', cy: '12.5', r: '.5', fill: 'currentColor' }],\n [\n 'path',\n {\n d: 'M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z',\n },\n ],\n ],\n];\n\nexport default Palette;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name panel-left-close\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHg9IjMiIHk9IjMiIHJ4PSIyIiAvPgogIDxwYXRoIGQ9Ik05IDN2MTgiIC8+CiAgPHBhdGggZD0ibTE2IDE1LTMtMyAzLTMiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/panel-left-close\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst PanelLeftClose: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['rect', { width: '18', height: '18', x: '3', y: '3', rx: '2' }],\n ['path', { d: 'M9 3v18' }],\n ['path', { d: 'm16 15-3-3 3-3' }],\n ],\n];\n\nexport default PanelLeftClose;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name panel-left\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHg9IjMiIHk9IjMiIHJ4PSIyIiAvPgogIDxwYXRoIGQ9Ik05IDN2MTgiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/panel-left\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst PanelLeft: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['rect', { width: '18', height: '18', x: '3', y: '3', rx: '2' }],\n ['path', { d: 'M9 3v18' }],\n ],\n];\n\nexport default PanelLeft;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name plus\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJNMTIgNXYxNCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/plus\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst Plus: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['path', { d: 'M5 12h14' }],\n ['path', { d: 'M12 5v14' }],\n ],\n];\n\nexport default Plus;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name printer\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNiAxOEg0YTIgMiAwIDAgMS0yLTJ2LTVhMiAyIDAgMCAxIDItMmgxNmEyIDIgMCAwIDEgMiAydjVhMiAyIDAgMCAxLTIgMmgtMiIgLz4KICA8cGF0aCBkPSJNNiA5VjNhMSAxIDAgMCAxIDEtMWgxMGExIDEgMCAwIDEgMSAxdjYiIC8+CiAgPHJlY3QgeD0iNiIgeT0iMTQiIHdpZHRoPSIxMiIgaGVpZ2h0PSI4IiByeD0iMSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/printer\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst Printer: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['path', { d: 'M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2' }],\n ['path', { d: 'M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6' }],\n ['rect', { x: '6', y: '14', width: '12', height: '8', rx: '1' }],\n ],\n];\n\nexport default Printer;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name refresh-ccw\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgMTJhOSA5IDAgMCAwLTktOSA5Ljc1IDkuNzUgMCAwIDAtNi43NCAyLjc0TDMgOCIgLz4KICA8cGF0aCBkPSJNMyAzdjVoNSIgLz4KICA8cGF0aCBkPSJNMyAxMmE5IDkgMCAwIDAgOSA5IDkuNzUgOS43NSAwIDAgMCA2Ljc0LTIuNzRMMjEgMTYiIC8+CiAgPHBhdGggZD0iTTE2IDE2aDV2NSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/refresh-ccw\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst RefreshCcw: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['path', { d: 'M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8' }],\n ['path', { d: 'M3 3v5h5' }],\n ['path', { d: 'M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16' }],\n ['path', { d: 'M16 16h5v5' }],\n ],\n];\n\nexport default RefreshCcw;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name rotate-ccw\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMyAxMmE5IDkgMCAxIDAgOS05IDkuNzUgOS43NSAwIDAgMC02Ljc0IDIuNzRMMyA4IiAvPgogIDxwYXRoIGQ9Ik0zIDN2NWg1IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/rotate-ccw\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst RotateCcw: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['path', { d: 'M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8' }],\n ['path', { d: 'M3 3v5h5' }],\n ],\n];\n\nexport default RotateCcw;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name scaling\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGEyIDIgMCAwIDAgMi0ydi03IiAvPgogIDxwYXRoIGQ9Ik0xNCAxNUg5di01IiAvPgogIDxwYXRoIGQ9Ik0xNiAzaDV2NSIgLz4KICA8cGF0aCBkPSJNMjEgMyA5IDE1IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/scaling\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst Scaling: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['path', { d: 'M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7' }],\n ['path', { d: 'M14 15H9v-5' }],\n ['path', { d: 'M16 3h5v5' }],\n ['path', { d: 'M21 3 9 15' }],\n ],\n];\n\nexport default Scaling;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name settings\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIuMjIgMmgtLjQ0YTIgMiAwIDAgMC0yIDJ2LjE4YTIgMiAwIDAgMS0xIDEuNzNsLS40My4yNWEyIDIgMCAwIDEtMiAwbC0uMTUtLjA4YTIgMiAwIDAgMC0yLjczLjczbC0uMjIuMzhhMiAyIDAgMCAwIC43MyAyLjczbC4xNS4xYTIgMiAwIDAgMSAxIDEuNzJ2LjUxYTIgMiAwIDAgMS0xIDEuNzRsLS4xNS4wOWEyIDIgMCAwIDAtLjczIDIuNzNsLjIyLjM4YTIgMiAwIDAgMCAyLjczLjczbC4xNS0uMDhhMiAyIDAgMCAxIDIgMGwuNDMuMjVhMiAyIDAgMCAxIDEgMS43M1YyMGEyIDIgMCAwIDAgMiAyaC40NGEyIDIgMCAwIDAgMi0ydi0uMThhMiAyIDAgMCAxIDEtMS43M2wuNDMtLjI1YTIgMiAwIDAgMSAyIDBsLjE1LjA4YTIgMiAwIDAgMCAyLjczLS43M2wuMjItLjM5YTIgMiAwIDAgMC0uNzMtMi43M2wtLjE1LS4wOGEyIDIgMCAwIDEtMS0xLjc0di0uNWEyIDIgMCAwIDEgMS0xLjc0bC4xNS0uMDlhMiAyIDAgMCAwIC43My0yLjczbC0uMjItLjM4YTIgMiAwIDAgMC0yLjczLS43M2wtLjE1LjA4YTIgMiAwIDAgMS0yIDBsLS40My0uMjVhMiAyIDAgMCAxLTEtMS43M1Y0YTIgMiAwIDAgMC0yLTJ6IiAvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjMiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/settings\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst Settings: IconNode = [\n 'svg',\n defaultAttributes,\n [\n [\n 'path',\n {\n d: 'M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z',\n },\n ],\n ['circle', { cx: '12', cy: '12', r: '3' }],\n ],\n];\n\nexport default Settings;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name trash\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMyA2aDE4IiAvPgogIDxwYXRoIGQ9Ik0xOSA2djE0YzAgMS0xIDItMiAySDdjLTEgMC0yLTEtMi0yVjYiIC8+CiAgPHBhdGggZD0iTTggNlY0YzAtMSAxLTIgMi0yaDRjMSAwIDIgMSAyIDJ2MiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/trash\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst Trash: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['path', { d: 'M3 6h18' }],\n ['path', { d: 'M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6' }],\n ['path', { d: 'M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2' }],\n ],\n];\n\nexport default Trash;\n", "import defaultAttributes from '../defaultAttributes';\nimport type { IconNode } from '../types';\n\n/**\n * @name upload\n * @description Lucide SVG icon node.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNCIgLz4KICA8cG9seWxpbmUgcG9pbnRzPSIxNyA4IDEyIDMgNyA4IiAvPgogIDxsaW5lIHgxPSIxMiIgeDI9IjEyIiB5MT0iMyIgeTI9IjE1IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/upload\n * @see https://lucide.dev/guide/packages/lucide - Documentation\n *\n * @returns {Array}\n *\n */\nconst Upload: IconNode = [\n 'svg',\n defaultAttributes,\n [\n ['path', { d: 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4' }],\n ['polyline', { points: '17 8 12 3 7 8' }],\n ['line', { x1: '12', x2: '12', y1: '3', y2: '15' }],\n ],\n];\n\nexport default Upload;\n", "import replaceElement from './replaceElement';\nimport * as iconAndAliases from './iconsAndAliases';\n\n/**\n * Replaces all elements with matching nameAttr with the defined icons\n * @param {{ icons?: object, nameAttr?: string, attrs?: object }} options\n */\nconst createIcons = ({ icons = {}, nameAttr = 'data-lucide', attrs = {} } = {}) => {\n if (!Object.values(icons).length) {\n throw new Error(\n \"Please provide an icons object.\\nIf you want to use all the icons you can import it like:\\n `import { createIcons, icons } from 'lucide';\\nlucide.createIcons({icons});`\",\n );\n }\n\n if (typeof document === 'undefined') {\n throw new Error('`createIcons()` only works in a browser environment.');\n }\n\n const elementsToReplace = document.querySelectorAll(`[${nameAttr}]`);\n Array.from(elementsToReplace).forEach((element) =>\n replaceElement(element, { nameAttr, icons, attrs }),\n );\n\n /** @todo: remove this block in v1.0 */\n if (nameAttr === 'data-lucide') {\n const deprecatedElements = document.querySelectorAll('[icon-name]');\n if (deprecatedElements.length > 0) {\n console.warn(\n '[Lucide] Some icons were found with the now deprecated icon-name attribute. These will still be replaced for backwards compatibility, but will no longer be supported in v1.0 and you should switch to data-lucide',\n );\n Array.from(deprecatedElements).forEach((element) =>\n replaceElement(element, { nameAttr: 'icon-name', icons, attrs }),\n );\n }\n }\n};\n\nexport { createIcons };\n\n/*\n Create Element function export.\n*/\nexport { default as createElement } from './createElement';\n\n/*\n Icons exports.\n*/\nexport { iconAndAliases as icons };\nexport * from './icons';\nexport * from './aliases';\n\n/*\n Types exports.\n*/\nexport * from './types';\n", "import {\n createIcons,\n AlertCircle,\n ArrowUpDown,\n Braces,\n Circle,\n Copy,\n CornerDownRight,\n Dot,\n Download,\n EllipsisVertical,\n Eraser,\n Info,\n ListRestart,\n Palette,\n PanelLeft,\n PanelLeftClose,\n Plus,\n Printer,\n RefreshCcw,\n RotateCcw,\n Scaling,\n Settings,\n Trash,\n Upload\n} from 'lucide'\n\nconst icons = {\n AlertCircle,\n ArrowUpDown,\n Braces,\n Circle,\n Copy,\n CornerDownRight,\n Dot,\n Download,\n EllipsisVertical,\n Eraser,\n Info,\n ListRestart,\n Palette,\n PanelLeft,\n PanelLeftClose,\n Plus,\n Printer,\n RefreshCcw,\n RotateCcw,\n Scaling,\n Settings,\n Trash,\n Upload\n}\n\n/** Generate app icons. */\nexport const generateIcons = () => {\n createIcons({ icons })\n}\n", "import { $, app } from './common'\n\nimport UIkit from 'uikit'\n\nexport const modal = {\n /**\n * Show modal dialog for given id.\n *\n * @param {string} id Modal Id.\n */\n show: (id) => {\n UIkit.modal(id, { bgClose: false, stack: true }).show()\n },\n /**\n * Hide modal dialog for given id.\n *\n * @param {string} id Modal Id.\n */\n hide: (id) => {\n UIkit.modal(id).hide()\n }\n}\n\n/**\n * Show error dialog.\n *\n * @param {string} title Title of dialog box.\n * @param {string} e Error message to show.\n */\nexport function showError(title, error) {\n UIkit.util.on('#dialog-error', 'beforeshow', () => {\n $('#errTitle').innerHTML = title\n $('#errMsg').innerHTML = error\n })\n\n modal.show('#dialog-error')\n}\n\n/**\n * Show app notifications.\n *\n * @param {string} msg Notification to show.\n * @param {string} stat Notification status: primary | success | warning | danger\n */\nexport function notify(msg, stat) {\n UIkit.notification({\n message: msg,\n pos: app.settings.notifyLocation,\n status: stat || 'primary',\n timeout: +app.settings.notifyDuration\n })\n}\n\n/**\n * Show confirmation dialog.\n *\n * @param {string} msg Confirmation message to show.\n * @param {function} action Function to run upon selecting Yes.\n */\nexport function confirm(msg, action) {\n $('#confirmMsg').innerHTML = msg\n\n modal.show('#dialog-confirm')\n\n const yesAction = (event) => {\n action()\n\n event.stopPropagation()\n\n UIkit.modal('#dialog-confirm').hide()\n\n $('#confirm-yes').removeEventListener('click', yesAction)\n }\n\n $('#confirm-yes').addEventListener('click', yesAction)\n\n UIkit.util.on('#dialog-confirm', 'hidden', () => {\n $('#confirm-yes').removeEventListener('click', yesAction)\n })\n}\n", "import { $, app, store } from './common'\nimport { notify } from './modal'\n\n/** Check if app is running on MacOS. */\nexport const isMac = navigator.userAgent.toLowerCase().includes('mac')\n\n/** Check if app is running in Electron. */\nexport const isElectron = navigator.userAgent.toLowerCase().includes('electron')\n\n/** Get app theme */\nexport function getTheme() {\n app.settings = store.get('settings')\n\n return app.settings?.theme === 'system'\n ? isElectron\n ? numara.isDark()\n ? 'dark'\n : 'light'\n : 'light'\n : app.settings?.theme === 'dark'\n ? 'dark'\n : 'light'\n}\n\n/** Check user locale for thousands separator. */\nexport function checkLocale() {\n const locale =\n app.settings.locale === 'system'\n ? navigator.languages && navigator.languages.length\n ? navigator.languages[0]\n : navigator.language\n : app.settings.locale\n\n return (1.11).toLocaleString(locale).match(/[,]/)\n}\n\n/** Check window size. */\nexport function checkSize() {\n $('#resetSizeButton').style.display = isElectron\n ? numara.isResized() && !numara.isMaximized()\n ? 'block'\n : 'none'\n : 'none'\n}\n\n/** Minimize/maximize window. */\nexport function toggleMinMax() {\n if (numara.isMaximized()) {\n numara.unmaximize()\n } else {\n numara.maximize()\n }\n}\n\n/** Check for app updates */\nexport function checkUpdates() {\n if (isElectron) {\n numara.checkUpdate()\n\n numara.notifyUpdate(() => {\n notify(\n 'Downloading latest version... View status'\n )\n\n $('#notificationDot').style.display = 'block'\n })\n\n numara.updateStatus((event, status) => {\n if (status === 'ready') {\n $('#dialog-about-updateStatus').innerHTML = 'New version is ready to be installed.'\n $('#updateButton').style.display = 'inline-block'\n\n if (!$('#dialog-about').classList.contains('uk-open')) {\n notify(\n 'New version is ready to be installed. Install Now'\n )\n }\n } else {\n $('#dialog-about-updateStatus').innerHTML = status\n }\n })\n }\n}\n", "const Coloris = (() => {\n /*!\r\n * Copyright (c) 2021-2024 Momo Bassit.\r\n * Licensed under the MIT License (MIT)\r\n * https://github.com/mdbassit/Coloris\r\n * Version: 0.24.0\r\n * NPM: https://github.com/melloware/coloris-npm\r\n */\n\n return ((window, document, Math, undefined) => {\n const ctx = document.createElement('canvas').getContext('2d');\n const currentColor = { r: 0, g: 0, b: 0, h: 0, s: 0, v: 0, a: 1 };\n let container,picker,colorArea,colorMarker,colorPreview,colorValue,clearButton,closeButton,\n hueSlider,hueMarker,alphaSlider,alphaMarker,currentEl,currentFormat,oldColor,keyboardNav,\n colorAreaDims = {};\n\n // Default settings\n const settings = {\n el: '[data-coloris]',\n parent: 'body',\n theme: 'default',\n themeMode: 'light',\n rtl: false,\n wrap: true,\n margin: 2,\n format: 'hex',\n formatToggle: false,\n swatches: [],\n swatchesOnly: false,\n alpha: true,\n forceAlpha: false,\n focusInput: true,\n selectInput: false,\n inline: false,\n defaultColor: '#000000',\n clearButton: false,\n clearLabel: 'Clear',\n closeButton: false,\n closeLabel: 'Close',\n onChange: () => undefined,\n a11y: {\n open: 'Open color picker',\n close: 'Close color picker',\n clear: 'Clear the selected color',\n marker: 'Saturation: {s}. Brightness: {v}.',\n hueSlider: 'Hue slider',\n alphaSlider: 'Opacity slider',\n input: 'Color value field',\n format: 'Color format',\n swatch: 'Color swatch',\n instruction: 'Saturation and brightness selector. Use up, down, left and right arrow keys to select.'\n }\n };\n\n // Virtual instances cache\n const instances = {};\n let currentInstanceId = '';\n let defaultInstance = {};\n let hasInstance = false;\n\n /**\r\n * Configure the color picker.\r\n * @param {object} options Configuration options.\r\n */\n function configure(options) {\n if (typeof options !== 'object') {\n return;\n }\n\n for (const key in options) {\n switch (key) {\n case 'el':\n bindFields(options.el);\n if (options.wrap !== false) {\n wrapFields(options.el);\n }\n break;\n case 'parent':\n container = options.parent instanceof HTMLElement ? options.parent : document.querySelector(options.parent);\n if (container) {\n container.appendChild(picker);\n settings.parent = options.parent;\n\n // document.body is special\n if (container === document.body) {\n container = undefined;\n }\n }\n break;\n case 'themeMode':\n settings.themeMode = options.themeMode;\n if (options.themeMode === 'auto' && window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n settings.themeMode = 'dark';\n }\n // The lack of a break statement is intentional\n case 'theme':\n if (options.theme) {\n settings.theme = options.theme;\n }\n\n // Set the theme and color scheme\n picker.className = \"clr-picker clr-\" + settings.theme + \" clr-\" + settings.themeMode;\n\n // Update the color picker's position if inline mode is in use\n if (settings.inline) {\n updatePickerPosition();\n }\n break;\n case 'rtl':\n settings.rtl = !!options.rtl;\n Array.from(document.getElementsByClassName('clr-field')).forEach((field) => field.classList.toggle('clr-rtl', settings.rtl));\n break;\n case 'margin':\n options.margin *= 1;\n settings.margin = !isNaN(options.margin) ? options.margin : settings.margin;\n break;\n case 'wrap':\n if (options.el && options.wrap) {\n wrapFields(options.el);\n }\n break;\n case 'formatToggle':\n settings.formatToggle = !!options.formatToggle;\n getEl('clr-format').style.display = settings.formatToggle ? 'block' : 'none';\n if (settings.formatToggle) {\n settings.format = 'auto';\n }\n break;\n case 'swatches':\n if (Array.isArray(options.swatches)) {\n const swatchesContainer = getEl('clr-swatches');\n const swatches = document.createElement('div');\n\n // Clear current swatches\n swatchesContainer.textContent = '';\n\n // Build new swatches\n options.swatches.forEach((swatch, i) => {\n const button = document.createElement('button');\n\n button.setAttribute('type', \"button\");\n button.setAttribute('id', \"clr-swatch-\" + i);\n button.setAttribute('aria-labelledby', \"clr-swatch-label clr-swatch-\" + i);\n button.style.color = swatch;\n button.textContent = swatch;\n\n swatches.appendChild(button);\n });\n\n // Append new swatches if any\n if (options.swatches.length) {\n swatchesContainer.appendChild(swatches);\n }\n\n settings.swatches = options.swatches.slice();\n }\n break;\n case 'swatchesOnly':\n settings.swatchesOnly = !!options.swatchesOnly;\n picker.setAttribute('data-minimal', settings.swatchesOnly);\n break;\n case 'alpha':\n settings.alpha = !!options.alpha;\n picker.setAttribute('data-alpha', settings.alpha);\n break;\n case 'inline':\n settings.inline = !!options.inline;\n picker.setAttribute('data-inline', settings.inline);\n\n if (settings.inline) {\n const defaultColor = options.defaultColor || settings.defaultColor;\n\n currentFormat = getColorFormatFromStr(defaultColor);\n updatePickerPosition();\n setColorFromStr(defaultColor);\n }\n break;\n case 'clearButton':\n // Backward compatibility\n if (typeof options.clearButton === 'object') {\n if (options.clearButton.label) {\n settings.clearLabel = options.clearButton.label;\n clearButton.innerHTML = settings.clearLabel;\n }\n\n options.clearButton = options.clearButton.show;\n }\n\n settings.clearButton = !!options.clearButton;\n clearButton.style.display = settings.clearButton ? 'block' : 'none';\n break;\n case 'clearLabel':\n settings.clearLabel = options.clearLabel;\n clearButton.innerHTML = settings.clearLabel;\n break;\n case 'closeButton':\n settings.closeButton = !!options.closeButton;\n\n if (settings.closeButton) {\n picker.insertBefore(closeButton, colorPreview);\n } else {\n colorPreview.appendChild(closeButton);\n }\n\n break;\n case 'closeLabel':\n settings.closeLabel = options.closeLabel;\n closeButton.innerHTML = settings.closeLabel;\n break;\n case 'a11y':\n const labels = options.a11y;\n let update = false;\n\n if (typeof labels === 'object') {\n for (const label in labels) {\n if (labels[label] && settings.a11y[label]) {\n settings.a11y[label] = labels[label];\n update = true;\n }\n }\n }\n\n if (update) {\n const openLabel = getEl('clr-open-label');\n const swatchLabel = getEl('clr-swatch-label');\n\n openLabel.innerHTML = settings.a11y.open;\n swatchLabel.innerHTML = settings.a11y.swatch;\n closeButton.setAttribute('aria-label', settings.a11y.close);\n clearButton.setAttribute('aria-label', settings.a11y.clear);\n hueSlider.setAttribute('aria-label', settings.a11y.hueSlider);\n alphaSlider.setAttribute('aria-label', settings.a11y.alphaSlider);\n colorValue.setAttribute('aria-label', settings.a11y.input);\n colorArea.setAttribute('aria-label', settings.a11y.instruction);\n }\n break;\n default:\n settings[key] = options[key];\n }\n }\n }\n\n /**\r\n * Add or update a virtual instance.\r\n * @param {String} selector The CSS selector of the elements to which the instance is attached.\r\n * @param {Object} options Per-instance options to apply.\r\n */\n function setVirtualInstance(selector, options) {\n if (typeof selector === 'string' && typeof options === 'object') {\n instances[selector] = options;\n hasInstance = true;\n }\n }\n\n /**\r\n * Remove a virtual instance.\r\n * @param {String} selector The CSS selector of the elements to which the instance is attached.\r\n */\n function removeVirtualInstance(selector) {\n delete instances[selector];\n\n if (Object.keys(instances).length === 0) {\n hasInstance = false;\n\n if (selector === currentInstanceId) {\n resetVirtualInstance();\n }\n }\n }\n\n /**\r\n * Attach a virtual instance to an element if it matches a selector.\r\n * @param {Object} element Target element that will receive a virtual instance if applicable.\r\n */\n function attachVirtualInstance(element) {\n if (hasInstance) {\n // These options can only be set globally, not per instance\n const unsupportedOptions = ['el', 'wrap', 'rtl', 'inline', 'defaultColor', 'a11y'];\n\n for (let selector in instances) {\n const options = instances[selector];\n\n // If the element matches an instance's CSS selector\n if (element.matches(selector)) {\n currentInstanceId = selector;\n defaultInstance = {};\n\n // Delete unsupported options\n unsupportedOptions.forEach((option) => delete options[option]);\n\n // Back up the default options so we can restore them later\n for (let option in options) {\n defaultInstance[option] = Array.isArray(settings[option]) ? settings[option].slice() : settings[option];\n }\n\n // Set the instance's options\n configure(options);\n break;\n }\n }\n }\n }\n\n /**\r\n * Revert any per-instance options that were previously applied.\r\n */\n function resetVirtualInstance() {\n if (Object.keys(defaultInstance).length > 0) {\n configure(defaultInstance);\n currentInstanceId = '';\n defaultInstance = {};\n }\n }\n\n /**\r\n * Bind the color picker to input fields that match the selector.\r\n * @param {(string|HTMLElement|HTMLElement[])} selector A CSS selector string, a DOM element or a list of DOM elements.\r\n */\n function bindFields(selector) {\n if (selector instanceof HTMLElement) {\n selector = [selector];\n }\n\n if (Array.isArray(selector)) {\n selector.forEach((field) => {\n addListener(field, 'click', openPicker);\n addListener(field, 'input', updateColorPreview);\n });\n } else {\n addListener(document, 'click', selector, openPicker);\n addListener(document, 'input', selector, updateColorPreview);\n }\n }\n\n /**\r\n * Open the color picker.\r\n * @param {object} event The event that opens the color picker.\r\n */\n function openPicker(event) {\n // Skip if inline mode is in use\n if (settings.inline) {\n return;\n }\n\n // Apply any per-instance options first\n attachVirtualInstance(event.target);\n\n currentEl = event.target;\n oldColor = currentEl.value;\n currentFormat = getColorFormatFromStr(oldColor);\n picker.classList.add('clr-open');\n\n updatePickerPosition();\n setColorFromStr(oldColor);\n\n if (settings.focusInput || settings.selectInput) {\n colorValue.focus({ preventScroll: true });\n colorValue.setSelectionRange(currentEl.selectionStart, currentEl.selectionEnd);\n }\n\n if (settings.selectInput) {\n colorValue.select();\n }\n\n // Always focus the first element when using keyboard navigation\n if (keyboardNav || settings.swatchesOnly) {\n getFocusableElements().shift().focus();\n }\n\n // Trigger an \"open\" event\n currentEl.dispatchEvent(new Event('open', { bubbles: true }));\n }\n\n /**\r\n * Update the color picker's position and the color gradient's offset\r\n */\n function updatePickerPosition() {\n if (!picker || !currentEl && !settings.inline) return; //** DO NOT REMOVE: in case called before initialized\n const parent = container;\n const scrollY = window.scrollY;\n const pickerWidth = picker.offsetWidth;\n const pickerHeight = picker.offsetHeight;\n const reposition = { left: false, top: false };\n let parentStyle, parentMarginTop, parentBorderTop;\n let offset = { x: 0, y: 0 };\n\n if (parent) {\n parentStyle = window.getComputedStyle(parent);\n parentMarginTop = parseFloat(parentStyle.marginTop);\n parentBorderTop = parseFloat(parentStyle.borderTopWidth);\n\n offset = parent.getBoundingClientRect();\n offset.y += parentBorderTop + scrollY;\n }\n\n if (!settings.inline) {\n const coords = currentEl.getBoundingClientRect();\n let left = coords.x;\n let top = scrollY + coords.y + coords.height + settings.margin;\n\n // If the color picker is inside a custom container\n // set the position relative to it\n if (parent) {\n left -= offset.x;\n top -= offset.y;\n\n if (left + pickerWidth > parent.clientWidth) {\n left += coords.width - pickerWidth;\n reposition.left = true;\n }\n\n if (top + pickerHeight > parent.clientHeight - parentMarginTop) {\n if (pickerHeight + settings.margin <= coords.top - (offset.y - scrollY)) {\n top -= coords.height + pickerHeight + settings.margin * 2;\n reposition.top = true;\n }\n }\n\n top += parent.scrollTop;\n\n // Otherwise set the position relative to the whole document\n } else {\n if (left + pickerWidth > document.documentElement.clientWidth) {\n left += coords.width - pickerWidth;\n reposition.left = true;\n }\n\n if (top + pickerHeight - scrollY > document.documentElement.clientHeight) {\n if (pickerHeight + settings.margin <= coords.top) {\n top = scrollY + coords.y - pickerHeight - settings.margin;\n reposition.top = true;\n }\n }\n }\n\n picker.classList.toggle('clr-left', reposition.left);\n picker.classList.toggle('clr-top', reposition.top);\n picker.style.left = left + \"px\";\n picker.style.top = top + \"px\";\n offset.x += picker.offsetLeft;\n offset.y += picker.offsetTop;\n }\n\n colorAreaDims = {\n width: colorArea.offsetWidth,\n height: colorArea.offsetHeight,\n x: colorArea.offsetLeft + offset.x,\n y: colorArea.offsetTop + offset.y\n };\n }\n\n /**\r\n * Wrap the linked input fields in a div that adds a color preview.\r\n * @param {(string|HTMLElement|HTMLElement[])} selector A CSS selector string, a DOM element or a list of DOM elements.\r\n */\n function wrapFields(selector) {\n if (selector instanceof HTMLElement) {\n wrapColorField(selector);\n } else if (Array.isArray(selector)) {\n selector.forEach(wrapColorField);\n } else {\n document.querySelectorAll(selector).forEach(wrapColorField);\n }\n }\n\n /**\r\n * Wrap an input field in a div that adds a color preview.\r\n * @param {object} field The input field.\r\n */\n function wrapColorField(field) {\n const parentNode = field.parentNode;\n\n if (!parentNode.classList.contains('clr-field')) {\n const wrapper = document.createElement('div');\n let classes = 'clr-field';\n\n if (settings.rtl || field.classList.contains('clr-rtl')) {\n classes += ' clr-rtl';\n }\n\n wrapper.innerHTML = '';\n parentNode.insertBefore(wrapper, field);\n wrapper.className = classes;\n wrapper.style.color = field.value;\n wrapper.appendChild(field);\n }\n }\n\n /**\r\n * Update the color preview of an input field\r\n * @param {object} event The \"input\" event that triggers the color change.\r\n */\n function updateColorPreview(event) {\n const parent = event.target.parentNode;\n\n // Only update the preview if the field has been previously wrapped\n if (parent.classList.contains('clr-field')) {\n parent.style.color = event.target.value;\n }\n }\n\n /**\r\n * Close the color picker.\r\n * @param {boolean} [revert] If true, revert the color to the original value.\r\n */\n function closePicker(revert) {\n if (currentEl && !settings.inline) {\n const prevEl = currentEl;\n\n // Revert the color to the original value if needed\n if (revert) {\n // This will prevent the \"change\" event on the colorValue input to execute its handler\n currentEl = undefined;\n\n if (oldColor !== prevEl.value) {\n prevEl.value = oldColor;\n\n // Trigger an \"input\" event to force update the thumbnail next to the input field\n prevEl.dispatchEvent(new Event('input', { bubbles: true }));\n }\n }\n\n // Trigger a \"change\" event if needed\n setTimeout(() => {// Add this to the end of the event loop\n if (oldColor !== prevEl.value) {\n prevEl.dispatchEvent(new Event('change', { bubbles: true }));\n }\n });\n\n // Hide the picker dialog\n picker.classList.remove('clr-open');\n\n // Reset any previously set per-instance options\n if (hasInstance) {\n resetVirtualInstance();\n }\n\n // Trigger a \"close\" event\n prevEl.dispatchEvent(new Event('close', { bubbles: true }));\n\n if (settings.focusInput) {\n prevEl.focus({ preventScroll: true });\n }\n\n // This essentially marks the picker as closed\n currentEl = undefined;\n }\n }\n\n /**\r\n * Set the active color from a string.\r\n * @param {string} str String representing a color.\r\n */\n function setColorFromStr(str) {\n const rgba = strToRGBA(str);\n const hsva = RGBAtoHSVA(rgba);\n\n updateMarkerA11yLabel(hsva.s, hsva.v);\n updateColor(rgba, hsva);\n\n // Update the UI\n hueSlider.value = hsva.h;\n picker.style.color = \"hsl(\" + hsva.h + \", 100%, 50%)\";\n hueMarker.style.left = hsva.h / 360 * 100 + \"%\";\n\n colorMarker.style.left = colorAreaDims.width * hsva.s / 100 + \"px\";\n colorMarker.style.top = colorAreaDims.height - colorAreaDims.height * hsva.v / 100 + \"px\";\n\n alphaSlider.value = hsva.a * 100;\n alphaMarker.style.left = hsva.a * 100 + \"%\";\n }\n\n /**\r\n * Guess the color format from a string.\r\n * @param {string} str String representing a color.\r\n * @return {string} The color format.\r\n */\n function getColorFormatFromStr(str) {\n const format = str.substring(0, 3).toLowerCase();\n\n if (format === 'rgb' || format === 'hsl') {\n return format;\n }\n\n return 'hex';\n }\n\n /**\r\n * Copy the active color to the linked input field.\r\n * @param {number} [color] Color value to override the active color.\r\n */\n function pickColor(color) {\n color = color !== undefined ? color : colorValue.value;\n\n if (currentEl) {\n currentEl.value = color;\n currentEl.dispatchEvent(new Event('input', { bubbles: true }));\n }\n\n if (settings.onChange) {\n settings.onChange.call(window, color, currentEl);\n }\n\n document.dispatchEvent(new CustomEvent('coloris:pick', { detail: { color, currentEl } }));\n }\n\n /**\r\n * Set the active color based on a specific point in the color gradient.\r\n * @param {number} x Left position.\r\n * @param {number} y Top position.\r\n */\n function setColorAtPosition(x, y) {\n const hsva = {\n h: hueSlider.value * 1,\n s: x / colorAreaDims.width * 100,\n v: 100 - y / colorAreaDims.height * 100,\n a: alphaSlider.value / 100\n };\n const rgba = HSVAtoRGBA(hsva);\n\n updateMarkerA11yLabel(hsva.s, hsva.v);\n updateColor(rgba, hsva);\n pickColor();\n }\n\n /**\r\n * Update the color marker's accessibility label.\r\n * @param {number} saturation\r\n * @param {number} value\r\n */\n function updateMarkerA11yLabel(saturation, value) {\n let label = settings.a11y.marker;\n\n saturation = saturation.toFixed(1) * 1;\n value = value.toFixed(1) * 1;\n label = label.replace('{s}', saturation);\n label = label.replace('{v}', value);\n colorMarker.setAttribute('aria-label', label);\n }\n\n //\n /**\r\n * Get the pageX and pageY positions of the pointer.\r\n * @param {object} event The MouseEvent or TouchEvent object.\r\n * @return {object} The pageX and pageY positions.\r\n */\n function getPointerPosition(event) {\n return {\n pageX: event.changedTouches ? event.changedTouches[0].pageX : event.pageX,\n pageY: event.changedTouches ? event.changedTouches[0].pageY : event.pageY\n };\n }\n\n /**\r\n * Move the color marker when dragged.\r\n * @param {object} event The MouseEvent object.\r\n */\n function moveMarker(event) {\n const pointer = getPointerPosition(event);\n let x = pointer.pageX - colorAreaDims.x;\n let y = pointer.pageY - colorAreaDims.y;\n\n if (container) {\n y += container.scrollTop;\n }\n\n setMarkerPosition(x, y);\n\n // Prevent scrolling while dragging the marker\n event.preventDefault();\n event.stopPropagation();\n }\n\n /**\r\n * Move the color marker when the arrow keys are pressed.\r\n * @param {number} offsetX The horizontal amount to move.\r\n * @param {number} offsetY The vertical amount to move.\r\n */\n function moveMarkerOnKeydown(offsetX, offsetY) {\n let x = colorMarker.style.left.replace('px', '') * 1 + offsetX;\n let y = colorMarker.style.top.replace('px', '') * 1 + offsetY;\n\n setMarkerPosition(x, y);\n }\n\n /**\r\n * Set the color marker's position.\r\n * @param {number} x Left position.\r\n * @param {number} y Top position.\r\n */\n function setMarkerPosition(x, y) {\n // Make sure the marker doesn't go out of bounds\n x = x < 0 ? 0 : x > colorAreaDims.width ? colorAreaDims.width : x;\n y = y < 0 ? 0 : y > colorAreaDims.height ? colorAreaDims.height : y;\n\n // Set the position\n colorMarker.style.left = x + \"px\";\n colorMarker.style.top = y + \"px\";\n\n // Update the color\n setColorAtPosition(x, y);\n\n // Make sure the marker is focused\n colorMarker.focus();\n }\n\n /**\r\n * Update the color picker's input field and preview thumb.\r\n * @param {Object} rgba Red, green, blue and alpha values.\r\n * @param {Object} [hsva] Hue, saturation, value and alpha values.\r\n */\n function updateColor(rgba, hsva) {if (rgba === void 0) {rgba = {};}if (hsva === void 0) {hsva = {};}\n let format = settings.format;\n\n for (const key in rgba) {\n currentColor[key] = rgba[key];\n }\n\n for (const key in hsva) {\n currentColor[key] = hsva[key];\n }\n\n const hex = RGBAToHex(currentColor);\n const opaqueHex = hex.substring(0, 7);\n\n colorMarker.style.color = opaqueHex;\n alphaMarker.parentNode.style.color = opaqueHex;\n alphaMarker.style.color = hex;\n colorPreview.style.color = hex;\n\n // Force repaint the color and alpha gradients as a workaround for a Google Chrome bug\n colorArea.style.display = 'none';\n colorArea.offsetHeight;\n colorArea.style.display = '';\n alphaMarker.nextElementSibling.style.display = 'none';\n alphaMarker.nextElementSibling.offsetHeight;\n alphaMarker.nextElementSibling.style.display = '';\n\n if (format === 'mixed') {\n format = currentColor.a === 1 ? 'hex' : 'rgb';\n } else if (format === 'auto') {\n format = currentFormat;\n }\n\n switch (format) {\n case 'hex':\n colorValue.value = hex;\n break;\n case 'rgb':\n colorValue.value = RGBAToStr(currentColor);\n break;\n case 'hsl':\n colorValue.value = HSLAToStr(HSVAtoHSLA(currentColor));\n break;\n }\n\n // Select the current format in the format switcher\n document.querySelector(\".clr-format [value=\\\"\" + format + \"\\\"]\").checked = true;\n }\n\n /**\r\n * Set the hue when its slider is moved.\r\n */\n function setHue() {\n const hue = hueSlider.value * 1;\n const x = colorMarker.style.left.replace('px', '') * 1;\n const y = colorMarker.style.top.replace('px', '') * 1;\n\n picker.style.color = \"hsl(\" + hue + \", 100%, 50%)\";\n hueMarker.style.left = hue / 360 * 100 + \"%\";\n\n setColorAtPosition(x, y);\n }\n\n /**\r\n * Set the alpha when its slider is moved.\r\n */\n function setAlpha() {\n const alpha = alphaSlider.value / 100;\n\n alphaMarker.style.left = alpha * 100 + \"%\";\n updateColor({ a: alpha });\n pickColor();\n }\n\n /**\r\n * Convert HSVA to RGBA.\r\n * @param {object} hsva Hue, saturation, value and alpha values.\r\n * @return {object} Red, green, blue and alpha values.\r\n */\n function HSVAtoRGBA(hsva) {\n const saturation = hsva.s / 100;\n const value = hsva.v / 100;\n let chroma = saturation * value;\n let hueBy60 = hsva.h / 60;\n let x = chroma * (1 - Math.abs(hueBy60 % 2 - 1));\n let m = value - chroma;\n\n chroma = chroma + m;\n x = x + m;\n\n const index = Math.floor(hueBy60) % 6;\n const red = [chroma, x, m, m, x, chroma][index];\n const green = [x, chroma, chroma, x, m, m][index];\n const blue = [m, m, x, chroma, chroma, x][index];\n\n return {\n r: Math.round(red * 255),\n g: Math.round(green * 255),\n b: Math.round(blue * 255),\n a: hsva.a\n };\n }\n\n /**\r\n * Convert HSVA to HSLA.\r\n * @param {object} hsva Hue, saturation, value and alpha values.\r\n * @return {object} Hue, saturation, lightness and alpha values.\r\n */\n function HSVAtoHSLA(hsva) {\n const value = hsva.v / 100;\n const lightness = value * (1 - hsva.s / 100 / 2);\n let saturation;\n\n if (lightness > 0 && lightness < 1) {\n saturation = Math.round((value - lightness) / Math.min(lightness, 1 - lightness) * 100);\n }\n\n return {\n h: hsva.h,\n s: saturation || 0,\n l: Math.round(lightness * 100),\n a: hsva.a\n };\n }\n\n /**\r\n * Convert RGBA to HSVA.\r\n * @param {object} rgba Red, green, blue and alpha values.\r\n * @return {object} Hue, saturation, value and alpha values.\r\n */\n function RGBAtoHSVA(rgba) {\n const red = rgba.r / 255;\n const green = rgba.g / 255;\n const blue = rgba.b / 255;\n const xmax = Math.max(red, green, blue);\n const xmin = Math.min(red, green, blue);\n const chroma = xmax - xmin;\n const value = xmax;\n let hue = 0;\n let saturation = 0;\n\n if (chroma) {\n if (xmax === red) {hue = (green - blue) / chroma;}\n if (xmax === green) {hue = 2 + (blue - red) / chroma;}\n if (xmax === blue) {hue = 4 + (red - green) / chroma;}\n if (xmax) {saturation = chroma / xmax;}\n }\n\n hue = Math.floor(hue * 60);\n\n return {\n h: hue < 0 ? hue + 360 : hue,\n s: Math.round(saturation * 100),\n v: Math.round(value * 100),\n a: rgba.a\n };\n }\n\n /**\r\n * Parse a string to RGBA.\r\n * @param {string} str String representing a color.\r\n * @return {object} Red, green, blue and alpha values.\r\n */\n function strToRGBA(str) {\n const regex = /^((rgba)|rgb)[\\D]+([\\d.]+)[\\D]+([\\d.]+)[\\D]+([\\d.]+)[\\D]*?([\\d.]+|$)/i;\n let match, rgba;\n\n // Default to black for invalid color strings\n ctx.fillStyle = '#000';\n\n // Use canvas to convert the string to a valid color string\n ctx.fillStyle = str;\n match = regex.exec(ctx.fillStyle);\n\n if (match) {\n rgba = {\n r: match[3] * 1,\n g: match[4] * 1,\n b: match[5] * 1,\n a: match[6] * 1\n };\n\n } else {\n match = ctx.fillStyle.replace('#', '').match(/.{2}/g).map((h) => parseInt(h, 16));\n rgba = {\n r: match[0],\n g: match[1],\n b: match[2],\n a: 1\n };\n }\n\n return rgba;\n }\n\n /**\r\n * Convert RGBA to Hex.\r\n * @param {object} rgba Red, green, blue and alpha values.\r\n * @return {string} Hex color string.\r\n */\n function RGBAToHex(rgba) {\n let R = rgba.r.toString(16);\n let G = rgba.g.toString(16);\n let B = rgba.b.toString(16);\n let A = '';\n\n if (rgba.r < 16) {\n R = '0' + R;\n }\n\n if (rgba.g < 16) {\n G = '0' + G;\n }\n\n if (rgba.b < 16) {\n B = '0' + B;\n }\n\n if (settings.alpha && (rgba.a < 1 || settings.forceAlpha)) {\n const alpha = rgba.a * 255 | 0;\n A = alpha.toString(16);\n\n if (alpha < 16) {\n A = '0' + A;\n }\n }\n\n return '#' + R + G + B + A;\n }\n\n /**\r\n * Convert RGBA values to a CSS rgb/rgba string.\r\n * @param {object} rgba Red, green, blue and alpha values.\r\n * @return {string} CSS color string.\r\n */\n function RGBAToStr(rgba) {\n if (!settings.alpha || rgba.a === 1 && !settings.forceAlpha) {\n return \"rgb(\" + rgba.r + \", \" + rgba.g + \", \" + rgba.b + \")\";\n } else {\n return \"rgba(\" + rgba.r + \", \" + rgba.g + \", \" + rgba.b + \", \" + rgba.a + \")\";\n }\n }\n\n /**\r\n * Convert HSLA values to a CSS hsl/hsla string.\r\n * @param {object} hsla Hue, saturation, lightness and alpha values.\r\n * @return {string} CSS color string.\r\n */\n function HSLAToStr(hsla) {\n if (!settings.alpha || hsla.a === 1 && !settings.forceAlpha) {\n return \"hsl(\" + hsla.h + \", \" + hsla.s + \"%, \" + hsla.l + \"%)\";\n } else {\n return \"hsla(\" + hsla.h + \", \" + hsla.s + \"%, \" + hsla.l + \"%, \" + hsla.a + \")\";\n }\n }\n\n /**\r\n * Init the color picker.\r\n */\n function init() {\n if (document.getElementById('clr-picker')) return; //** DO NOT REMOVE: Prevent binding events multiple times\n // Render the UI\n container = undefined;\n picker = document.createElement('div');\n picker.setAttribute('id', 'clr-picker');\n picker.className = 'clr-picker';\n picker.innerHTML =\n \"\" + (\"
    \") +\n '
    ' +\n '
    ' +\n '
    ' + (\"\") +\n '
    ' +\n '
    ' +\n '
    ' + (\"\") +\n '
    ' +\n '' +\n '
    ' +\n '
    ' +\n '
    ' + (\"\" +\n settings.a11y.format + \"\") +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '
    ' +\n '
    ' +\n '
    ' + (\"\") +\n '
    ' + (\"\") +\n '
    ' + (\"\") + (\"\");\n\n // Append the color picker to the DOM\n document.body.appendChild(picker);\n\n // Reference the UI elements\n colorArea = getEl('clr-color-area');\n colorMarker = getEl('clr-color-marker');\n clearButton = getEl('clr-clear');\n closeButton = getEl('clr-close');\n colorPreview = getEl('clr-color-preview');\n colorValue = getEl('clr-color-value');\n hueSlider = getEl('clr-hue-slider');\n hueMarker = getEl('clr-hue-marker');\n alphaSlider = getEl('clr-alpha-slider');\n alphaMarker = getEl('clr-alpha-marker');\n\n // Bind the picker to the default selector\n bindFields(settings.el);\n wrapFields(settings.el);\n\n addListener(picker, 'mousedown', (event) => {\n picker.classList.remove('clr-keyboard-nav');\n event.stopPropagation();\n });\n\n addListener(colorArea, 'mousedown', (event) => {\n addListener(document, 'mousemove', moveMarker);\n });\n\n addListener(colorArea, 'contextmenu', (event) => {\n event.preventDefault();\n });\n\n addListener(colorArea, 'touchstart', (event) => {\n document.addEventListener('touchmove', moveMarker, { passive: false });\n });\n\n addListener(colorMarker, 'mousedown', (event) => {\n addListener(document, 'mousemove', moveMarker);\n });\n\n addListener(colorMarker, 'touchstart', (event) => {\n document.addEventListener('touchmove', moveMarker, { passive: false });\n });\n\n addListener(colorValue, 'change', (event) => {\n const value = colorValue.value;\n\n if (currentEl || settings.inline) {\n const color = value === '' ? value : setColorFromStr(value);\n pickColor(color);\n }\n });\n\n addListener(clearButton, 'click', (event) => {\n pickColor('');\n closePicker();\n });\n\n addListener(closeButton, 'click', (event) => {\n pickColor();\n closePicker();\n });\n\n addListener(getEl('clr-format'), 'click', '.clr-format input', (event) => {\n currentFormat = event.target.value;\n updateColor();\n pickColor();\n });\n\n addListener(picker, 'click', '.clr-swatches button', (event) => {\n setColorFromStr(event.target.textContent);\n pickColor();\n\n if (settings.swatchesOnly) {\n closePicker();\n }\n });\n\n addListener(document, 'mouseup', (event) => {\n document.removeEventListener('mousemove', moveMarker);\n });\n\n addListener(document, 'touchend', (event) => {\n document.removeEventListener('touchmove', moveMarker);\n });\n\n addListener(document, 'mousedown', (event) => {\n keyboardNav = false;\n picker.classList.remove('clr-keyboard-nav');\n closePicker();\n });\n\n addListener(document, 'keydown', (event) => {\n const key = event.key;\n const target = event.target;\n const shiftKey = event.shiftKey;\n const navKeys = ['Tab', 'ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'];\n\n if (key === 'Escape') {\n closePicker(true);\n\n // Display focus rings when using the keyboard\n } else if (navKeys.includes(key)) {\n keyboardNav = true;\n picker.classList.add('clr-keyboard-nav');\n }\n\n // Trap the focus within the color picker while it's open\n if (key === 'Tab' && target.matches('.clr-picker *')) {\n const focusables = getFocusableElements();\n const firstFocusable = focusables.shift();\n const lastFocusable = focusables.pop();\n\n if (shiftKey && target === firstFocusable) {\n lastFocusable.focus();\n event.preventDefault();\n } else if (!shiftKey && target === lastFocusable) {\n firstFocusable.focus();\n event.preventDefault();\n }\n }\n });\n\n addListener(document, 'click', '.clr-field button', (event) => {\n // Reset any previously set per-instance options\n if (hasInstance) {\n resetVirtualInstance();\n }\n\n // Open the color picker\n event.target.nextElementSibling.dispatchEvent(new Event('click', { bubbles: true }));\n });\n\n addListener(colorMarker, 'keydown', (event) => {\n const movements = {\n ArrowUp: [0, -1],\n ArrowDown: [0, 1],\n ArrowLeft: [-1, 0],\n ArrowRight: [1, 0]\n };\n\n if (Object.keys(movements).includes(event.key)) {\n moveMarkerOnKeydown(...movements[event.key]);\n event.preventDefault();\n }\n });\n\n addListener(colorArea, 'click', moveMarker);\n addListener(hueSlider, 'input', setHue);\n addListener(alphaSlider, 'input', setAlpha);\n }\n\n /**\r\n * Return a list of focusable elements within the color picker.\r\n * @return {array} The list of focusable DOM elemnts.\r\n */\n function getFocusableElements() {\n const controls = Array.from(picker.querySelectorAll('input, button'));\n const focusables = controls.filter((node) => !!node.offsetWidth);\n\n return focusables;\n }\n\n /**\r\n * Shortcut for getElementById to optimize the minified JS.\r\n * @param {string} id The element id.\r\n * @return {object} The DOM element with the provided id.\r\n */\n function getEl(id) {\n return document.getElementById(id);\n }\n\n /**\r\n * Shortcut for addEventListener to optimize the minified JS.\r\n * @param {object} context The context to which the listener is attached.\r\n * @param {string} type Event type.\r\n * @param {(string|function)} selector Event target if delegation is used, event handler if not.\r\n * @param {function} [fn] Event handler if delegation is used.\r\n */\n function addListener(context, type, selector, fn) {\n const matches = Element.prototype.matches || Element.prototype.msMatchesSelector;\n\n // Delegate event to the target of the selector\n if (typeof selector === 'string') {\n context.addEventListener(type, (event) => {\n if (matches.call(event.target, selector)) {\n fn.call(event.target, event);\n }\n });\n\n // If the selector is not a string then it's a function\n // in which case we need a regular event listener\n } else {\n fn = selector;\n context.addEventListener(type, fn);\n }\n }\n\n /**\r\n * Call a function only when the DOM is ready.\r\n * @param {function} fn The function to call.\r\n * @param {array} [args] Arguments to pass to the function.\r\n */\n function DOMReady(fn, args) {\n args = args !== undefined ? args : [];\n\n if (document.readyState !== 'loading') {\n fn(...args);\n } else {\n document.addEventListener('DOMContentLoaded', () => {\n fn(...args);\n });\n }\n }\n\n // Polyfill for Nodelist.forEach\n if (NodeList !== undefined && NodeList.prototype && !NodeList.prototype.forEach) {\n NodeList.prototype.forEach = Array.prototype.forEach;\n }\n\n //*****************************************************\n //******* NPM: Custom code starts here ****************\n //*****************************************************\n\n /**\r\n * Copy the active color to the linked input field and set the color.\r\n * @param {string} [color] Color value to override the active color.\r\n * @param {HTMLelement} [target] the element setting the color on\r\n */\n function setColor(color, target) {\n currentEl = target;\n oldColor = currentEl.value;\n attachVirtualInstance(target);\n currentFormat = getColorFormatFromStr(color);\n updatePickerPosition();\n setColorFromStr(color);\n pickColor();\n if (oldColor !== color) {\n currentEl.dispatchEvent(new Event('change', { bubbles: true }));\n }\n }\n\n // Expose the color picker to the global scope\n const Coloris = (() => {\n const methods = {\n init: init,\n set: configure,\n wrap: wrapFields,\n close: closePicker,\n setInstance: setVirtualInstance,\n setColor: setColor,\n removeInstance: removeVirtualInstance,\n updatePosition: updatePickerPosition,\n ready: DOMReady\n };\n\n function Coloris(options) {\n DOMReady(() => {\n if (options) {\n if (typeof options === 'string') {\n bindFields(options);\n } else {\n configure(options);\n }\n }\n });\n }\n\n for (const key in methods) {\n Coloris[key] = function () {for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}\n DOMReady(methods[key], args);\n };\n }\n\n // handle window resize events re-aligning the panel\n DOMReady(() => {\n window.addEventListener('resize', (event) => {Coloris.updatePosition();});\n window.addEventListener('scroll', (event) => {Coloris.updatePosition();});\n });\n\n return Coloris;\n })();\n\n // Ensure init function is available not only as as a default import\n Coloris.coloris = Coloris;\n\n // Init the color picker when the DOM is ready\n return Coloris;\n\n })(window, document, Math);\n})();\n\nconst _coloris = Coloris.coloris;\nconst _init = Coloris.init;\nconst _set = Coloris.set;\nconst _wrap = Coloris.wrap;\nconst _close = Coloris.close;\nconst _setInstance = Coloris.setInstance;\nconst _removeInstance = Coloris.removeInstance;\nconst _updatePosition = Coloris.updatePosition;\nexport default Coloris;\nexport {\n _coloris as coloris,\n _close as close,\n _init as init,\n _set as set,\n _wrap as wrap,\n _setInstance as setInstance,\n _removeInstance as removeInstance,\n _updatePosition as updatePosition };", "import { $, $all, app, store } from './common'\nimport { generateIcons } from './icons'\nimport { confirm, modal } from './modal'\nimport { getTheme } from './utils'\n\nimport Coloris from '@melloware/coloris'\nimport DeepDiff from 'deep-diff'\n\n/** Check for color schema changes. */\nfunction checkDefaultColors() {\n app.colors = store.get('colors')\n\n DeepDiff.observableDiff(app.colors, colors.defaults, (d) => {\n if (d.kind !== 'E') {\n DeepDiff.applyChange(app.colors, colors.defaults, d)\n\n store.set('colors', app.colors)\n }\n })\n}\n\n/** Check if color has changed. */\nexport function checkColorChange() {\n const pickers = $all('.colorInput')\n\n pickers.forEach((picker) => {\n const isSame = picker.value === colors.defaults[picker.dataset.class][picker.dataset.theme]\n\n picker.style.borderLeft = isSame\n ? getTheme() === 'light'\n ? '1px solid #eaeaea'\n : '1px solid #666666'\n : '2px solid #dd9359'\n })\n}\n\nlet activePicker\n\nexport const colors = {\n defaults: {\n answer: { title: 'Answers', class: '.output', dark: '#1eb5f0', light: '#17586b' },\n comment: { title: 'Comments', class: '.cm-comment', dark: '#5a5a5a', light: '#bebebe' },\n constant: { title: 'Constants', class: '.cm-constant', dark: '#eaa1f6', light: '#9c27b0' },\n currency: { title: 'Currencies', class: '.cm-currency', dark: `#009688`, light: '#009688' },\n error: {\n title: 'Errors',\n class: '.lineError, .lineError:hover, .lineError > div, .lineNoError > div',\n dark: '#d41111',\n light: '#b10e0e'\n },\n excel: { title: 'Excel', class: '.cm-excel', dark: '#3cc383', light: '#197b43' },\n function: { title: 'Functions', class: '.cm-formulajs, .cm-function, .cm-udf', dark: '#cb82f5', light: '#6f42c1' },\n keyword: { title: 'Keywords', class: '.cm-keyword, .cm-lineNo', dark: '#be6317', light: '#be6317' },\n number: { title: 'Numbers', class: '.cm-number', dark: '#e6e6e6', light: '#333333' },\n operator: { title: 'Operators', class: '.cm-operator', dark: '#bbbbbb', light: '#888888' },\n text: { title: 'Text', class: '.cm-text', dark: '#e6e6e6', light: '#333333' },\n unit: { title: 'Units', class: '.cm-unit, .cm-udu', dark: '#4d87c9', light: '#005cc5' },\n variable: { title: 'Variables', class: '.cm-variable', dark: '#96b4c4', light: '#57707c' }\n },\n\n initialize: () => {\n if (store.get('colors')) {\n checkDefaultColors()\n } else {\n store.set('colors', colors.defaults)\n }\n\n app.colors = store.get('colors')\n\n const pickers = $all('.colorInput')\n\n pickers.forEach((picker) => {\n picker.value = app.colors[picker.dataset.class][picker.dataset.theme]\n\n picker.addEventListener('click', (event) => {\n activePicker = event.target\n\n checkColorChange()\n })\n })\n\n Coloris.init()\n Coloris({\n el: '.colorInput',\n parent: '#dialog-theme',\n alpha: false,\n onChange: () => {\n checkColorChange()\n colors.save()\n }\n })\n\n Coloris.ready(() => {\n const picker = document.getElementById('clr-color-value')\n const button = document.createElement('a')\n\n picker.after(button)\n button.setAttribute('title', 'Reset color')\n button.classList.add('clr-custom-reset')\n button.innerHTML = ''\n button.addEventListener('click', () => {\n activePicker.value = colors.defaults[activePicker.dataset.class][activePicker.dataset.theme]\n activePicker.dispatchEvent(new Event('input', { bubbles: true }))\n\n $('#clr-color-value').value = colors.defaults[activePicker.dataset.class][activePicker.dataset.theme]\n $('#clr-color-value').dispatchEvent(new Event('change'))\n\n checkColorChange()\n\n colors.save()\n })\n\n generateIcons()\n })\n },\n\n apply: () => {\n const appTheme = getTheme()\n\n let colorSheet = ''\n\n app.colors = store.get('colors')\n\n Object.values(app.colors).forEach((color) => {\n colorSheet += color.class + ' { color: ' + color[appTheme] + '; }\\n'\n })\n\n $('#colorSheet').innerHTML = colorSheet\n },\n\n save: () => {\n const pickers = $all('.colorInput')\n\n pickers.forEach((picker) => {\n app.colors[picker.dataset.class][picker.dataset.theme] = picker.value\n })\n\n store.set('colors', app.colors)\n\n colors.apply()\n },\n\n reset: () => {\n store.set('colors', colors.defaults)\n\n app.colors = store.get('colors')\n\n const pickers = $all('.colorInput')\n\n pickers.forEach((picker) => {\n picker.value = colors.defaults[picker.dataset.class][picker.dataset.theme]\n picker.dispatchEvent(new Event('input', { bubbles: true }))\n })\n\n checkColorChange()\n\n colors.apply()\n }\n}\n\n$('#customizeThemeButton').addEventListener('click', () => {\n modal.show('#dialog-theme')\n})\n\n$('#resetColorsButton').addEventListener('click', () => {\n confirm('This will reset all colors to their default values', () => {\n colors.reset()\n })\n})\n", "// these aren't really private, but nor are they really useful to document\n\n/**\n * @private\n */\nclass LuxonError extends Error {}\n\n/**\n * @private\n */\nexport class InvalidDateTimeError extends LuxonError {\n constructor(reason) {\n super(`Invalid DateTime: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidIntervalError extends LuxonError {\n constructor(reason) {\n super(`Invalid Interval: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidDurationError extends LuxonError {\n constructor(reason) {\n super(`Invalid Duration: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class ConflictingSpecificationError extends LuxonError {}\n\n/**\n * @private\n */\nexport class InvalidUnitError extends LuxonError {\n constructor(unit) {\n super(`Invalid unit ${unit}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidArgumentError extends LuxonError {}\n\n/**\n * @private\n */\nexport class ZoneIsAbstractError extends LuxonError {\n constructor() {\n super(\"Zone is an abstract class\");\n }\n}\n", "/**\n * @private\n */\n\nconst n = \"numeric\",\n s = \"short\",\n l = \"long\";\n\nexport const DATE_SHORT = {\n year: n,\n month: n,\n day: n,\n};\n\nexport const DATE_MED = {\n year: n,\n month: s,\n day: n,\n};\n\nexport const DATE_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n};\n\nexport const DATE_FULL = {\n year: n,\n month: l,\n day: n,\n};\n\nexport const DATE_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n};\n\nexport const TIME_SIMPLE = {\n hour: n,\n minute: n,\n};\n\nexport const TIME_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const TIME_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s,\n};\n\nexport const TIME_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l,\n};\n\nexport const TIME_24_SIMPLE = {\n hour: n,\n minute: n,\n hourCycle: \"h23\",\n};\n\nexport const TIME_24_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n};\n\nexport const TIME_24_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n timeZoneName: s,\n};\n\nexport const TIME_24_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n timeZoneName: l,\n};\n\nexport const DATETIME_SHORT = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_SHORT_WITH_SECONDS = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const DATETIME_MED = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_MED_WITH_SECONDS = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const DATETIME_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_FULL = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n timeZoneName: s,\n};\n\nexport const DATETIME_FULL_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s,\n};\n\nexport const DATETIME_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n timeZoneName: l,\n};\n\nexport const DATETIME_HUGE_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l,\n};\n", "import { ZoneIsAbstractError } from \"./errors.js\";\n\n/**\n * @interface\n */\nexport default class Zone {\n /**\n * The type of zone\n * @abstract\n * @type {string}\n */\n get type() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * The name of this zone.\n * @abstract\n * @type {string}\n */\n get name() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * The IANA name of this zone.\n * Defaults to `name` if not overwritten by a subclass.\n * @abstract\n * @type {string}\n */\n get ianaName() {\n return this.name;\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year.\n * @abstract\n * @type {boolean}\n */\n get isUniversal() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's common name (such as EST) at the specified timestamp\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the name\n * @param {Object} opts - Options to affect the format\n * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\n * @param {string} opts.locale - What locale to return the offset name in.\n * @return {string}\n */\n offsetName(ts, opts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's value as a string\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to compute the offset\n * @return {number}\n */\n offset(ts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is equal to another zone\n * @abstract\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is valid.\n * @abstract\n * @type {boolean}\n */\n get isValid() {\n throw new ZoneIsAbstractError();\n }\n}\n", "import { formatOffset, parseZoneInfo } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * Represents the local zone for this JavaScript environment.\n * @implements {Zone}\n */\nexport default class SystemZone extends Zone {\n /**\n * Get a singleton instance of the local zone\n * @return {SystemZone}\n */\n static get instance() {\n if (singleton === null) {\n singleton = new SystemZone();\n }\n return singleton;\n }\n\n /** @override **/\n get type() {\n return \"system\";\n }\n\n /** @override **/\n get name() {\n return new Intl.DateTimeFormat().resolvedOptions().timeZone;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n return -new Date(ts).getTimezoneOffset();\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"system\";\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n", "import { formatOffset, parseZoneInfo, isUndefined, objToLocalTS } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet dtfCache = {};\nfunction makeDTF(zone) {\n if (!dtfCache[zone]) {\n dtfCache[zone] = new Intl.DateTimeFormat(\"en-US\", {\n hour12: false,\n timeZone: zone,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n era: \"short\",\n });\n }\n return dtfCache[zone];\n}\n\nconst typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n era: 3,\n hour: 4,\n minute: 5,\n second: 6,\n};\n\nfunction hackyOffset(dtf, date) {\n const formatted = dtf.format(date).replace(/\\u200E/g, \"\"),\n parsed = /(\\d+)\\/(\\d+)\\/(\\d+) (AD|BC),? (\\d+):(\\d+):(\\d+)/.exec(formatted),\n [, fMonth, fDay, fYear, fadOrBc, fHour, fMinute, fSecond] = parsed;\n return [fYear, fMonth, fDay, fadOrBc, fHour, fMinute, fSecond];\n}\n\nfunction partsOffset(dtf, date) {\n const formatted = dtf.formatToParts(date);\n const filled = [];\n for (let i = 0; i < formatted.length; i++) {\n const { type, value } = formatted[i];\n const pos = typeToPos[type];\n\n if (type === \"era\") {\n filled[pos] = value;\n } else if (!isUndefined(pos)) {\n filled[pos] = parseInt(value, 10);\n }\n }\n return filled;\n}\n\nlet ianaZoneCache = {};\n/**\n * A zone identified by an IANA identifier, like America/New_York\n * @implements {Zone}\n */\nexport default class IANAZone extends Zone {\n /**\n * @param {string} name - Zone name\n * @return {IANAZone}\n */\n static create(name) {\n if (!ianaZoneCache[name]) {\n ianaZoneCache[name] = new IANAZone(name);\n }\n return ianaZoneCache[name];\n }\n\n /**\n * Reset local caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCache() {\n ianaZoneCache = {};\n dtfCache = {};\n }\n\n /**\n * Returns whether the provided string is a valid specifier. This only checks the string's format, not that the specifier identifies a known zone; see isValidZone for that.\n * @param {string} s - The string to check validity on\n * @example IANAZone.isValidSpecifier(\"America/New_York\") //=> true\n * @example IANAZone.isValidSpecifier(\"Sport~~blorp\") //=> false\n * @deprecated For backward compatibility, this forwards to isValidZone, better use `isValidZone()` directly instead.\n * @return {boolean}\n */\n static isValidSpecifier(s) {\n return this.isValidZone(s);\n }\n\n /**\n * Returns whether the provided string identifies a real zone\n * @param {string} zone - The string to check\n * @example IANAZone.isValidZone(\"America/New_York\") //=> true\n * @example IANAZone.isValidZone(\"Fantasia/Castle\") //=> false\n * @example IANAZone.isValidZone(\"Sport~~blorp\") //=> false\n * @return {boolean}\n */\n static isValidZone(zone) {\n if (!zone) {\n return false;\n }\n try {\n new Intl.DateTimeFormat(\"en-US\", { timeZone: zone }).format();\n return true;\n } catch (e) {\n return false;\n }\n }\n\n constructor(name) {\n super();\n /** @private **/\n this.zoneName = name;\n /** @private **/\n this.valid = IANAZone.isValidZone(name);\n }\n\n /**\n * The type of zone. `iana` for all instances of `IANAZone`.\n * @override\n * @type {string}\n */\n get type() {\n return \"iana\";\n }\n\n /**\n * The name of this zone (i.e. the IANA zone name).\n * @override\n * @type {string}\n */\n get name() {\n return this.zoneName;\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year:\n * Always returns false for all IANA zones.\n * @override\n * @type {boolean}\n */\n get isUniversal() {\n return false;\n }\n\n /**\n * Returns the offset's common name (such as EST) at the specified timestamp\n * @override\n * @param {number} ts - Epoch milliseconds for which to get the name\n * @param {Object} opts - Options to affect the format\n * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\n * @param {string} opts.locale - What locale to return the offset name in.\n * @return {string}\n */\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale, this.name);\n }\n\n /**\n * Returns the offset's value as a string\n * @override\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n * @override\n * @param {number} ts - Epoch milliseconds for which to compute the offset\n * @return {number}\n */\n offset(ts) {\n const date = new Date(ts);\n\n if (isNaN(date)) return NaN;\n\n const dtf = makeDTF(this.name);\n let [year, month, day, adOrBc, hour, minute, second] = dtf.formatToParts\n ? partsOffset(dtf, date)\n : hackyOffset(dtf, date);\n\n if (adOrBc === \"BC\") {\n year = -Math.abs(year) + 1;\n }\n\n // because we're using hour12 and https://bugs.chromium.org/p/chromium/issues/detail?id=1025564&can=2&q=%2224%3A00%22%20datetimeformat\n const adjustedHour = hour === 24 ? 0 : hour;\n\n const asUTC = objToLocalTS({\n year,\n month,\n day,\n hour: adjustedHour,\n minute,\n second,\n millisecond: 0,\n });\n\n let asTS = +date;\n const over = asTS % 1000;\n asTS -= over >= 0 ? over : 1000 + over;\n return (asUTC - asTS) / (60 * 1000);\n }\n\n /**\n * Return whether this Zone is equal to another zone\n * @override\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n return otherZone.type === \"iana\" && otherZone.name === this.name;\n }\n\n /**\n * Return whether this Zone is valid.\n * @override\n * @type {boolean}\n */\n get isValid() {\n return this.valid;\n }\n}\n", "import { hasLocaleWeekInfo, hasRelative, padStart, roundTo, validateWeekSettings } from \"./util.js\";\nimport * as English from \"./english.js\";\nimport Settings from \"../settings.js\";\nimport DateTime from \"../datetime.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\n\n// todo - remap caching\n\nlet intlLFCache = {};\nfunction getCachedLF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlLFCache[key];\n if (!dtf) {\n dtf = new Intl.ListFormat(locString, opts);\n intlLFCache[key] = dtf;\n }\n return dtf;\n}\n\nlet intlDTCache = {};\nfunction getCachedDTF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlDTCache[key];\n if (!dtf) {\n dtf = new Intl.DateTimeFormat(locString, opts);\n intlDTCache[key] = dtf;\n }\n return dtf;\n}\n\nlet intlNumCache = {};\nfunction getCachedINF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let inf = intlNumCache[key];\n if (!inf) {\n inf = new Intl.NumberFormat(locString, opts);\n intlNumCache[key] = inf;\n }\n return inf;\n}\n\nlet intlRelCache = {};\nfunction getCachedRTF(locString, opts = {}) {\n const { base, ...cacheKeyOpts } = opts; // exclude `base` from the options\n const key = JSON.stringify([locString, cacheKeyOpts]);\n let inf = intlRelCache[key];\n if (!inf) {\n inf = new Intl.RelativeTimeFormat(locString, opts);\n intlRelCache[key] = inf;\n }\n return inf;\n}\n\nlet sysLocaleCache = null;\nfunction systemLocale() {\n if (sysLocaleCache) {\n return sysLocaleCache;\n } else {\n sysLocaleCache = new Intl.DateTimeFormat().resolvedOptions().locale;\n return sysLocaleCache;\n }\n}\n\nlet weekInfoCache = {};\nfunction getCachedWeekInfo(locString) {\n let data = weekInfoCache[locString];\n if (!data) {\n const locale = new Intl.Locale(locString);\n // browsers currently implement this as a property, but spec says it should be a getter function\n data = \"getWeekInfo\" in locale ? locale.getWeekInfo() : locale.weekInfo;\n weekInfoCache[locString] = data;\n }\n return data;\n}\n\nfunction parseLocaleString(localeStr) {\n // I really want to avoid writing a BCP 47 parser\n // see, e.g. https://github.com/wooorm/bcp-47\n // Instead, we'll do this:\n\n // a) if the string has no -u extensions, just leave it alone\n // b) if it does, use Intl to resolve everything\n // c) if Intl fails, try again without the -u\n\n // private subtags and unicode subtags have ordering requirements,\n // and we're not properly parsing this, so just strip out the\n // private ones if they exist.\n const xIndex = localeStr.indexOf(\"-x-\");\n if (xIndex !== -1) {\n localeStr = localeStr.substring(0, xIndex);\n }\n\n const uIndex = localeStr.indexOf(\"-u-\");\n if (uIndex === -1) {\n return [localeStr];\n } else {\n let options;\n let selectedStr;\n try {\n options = getCachedDTF(localeStr).resolvedOptions();\n selectedStr = localeStr;\n } catch (e) {\n const smaller = localeStr.substring(0, uIndex);\n options = getCachedDTF(smaller).resolvedOptions();\n selectedStr = smaller;\n }\n\n const { numberingSystem, calendar } = options;\n return [selectedStr, numberingSystem, calendar];\n }\n}\n\nfunction intlConfigString(localeStr, numberingSystem, outputCalendar) {\n if (outputCalendar || numberingSystem) {\n if (!localeStr.includes(\"-u-\")) {\n localeStr += \"-u\";\n }\n\n if (outputCalendar) {\n localeStr += `-ca-${outputCalendar}`;\n }\n\n if (numberingSystem) {\n localeStr += `-nu-${numberingSystem}`;\n }\n return localeStr;\n } else {\n return localeStr;\n }\n}\n\nfunction mapMonths(f) {\n const ms = [];\n for (let i = 1; i <= 12; i++) {\n const dt = DateTime.utc(2009, i, 1);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction mapWeekdays(f) {\n const ms = [];\n for (let i = 1; i <= 7; i++) {\n const dt = DateTime.utc(2016, 11, 13 + i);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction listStuff(loc, length, englishFn, intlFn) {\n const mode = loc.listingMode();\n\n if (mode === \"error\") {\n return null;\n } else if (mode === \"en\") {\n return englishFn(length);\n } else {\n return intlFn(length);\n }\n}\n\nfunction supportsFastNumbers(loc) {\n if (loc.numberingSystem && loc.numberingSystem !== \"latn\") {\n return false;\n } else {\n return (\n loc.numberingSystem === \"latn\" ||\n !loc.locale ||\n loc.locale.startsWith(\"en\") ||\n new Intl.DateTimeFormat(loc.intl).resolvedOptions().numberingSystem === \"latn\"\n );\n }\n}\n\n/**\n * @private\n */\n\nclass PolyNumberFormatter {\n constructor(intl, forceSimple, opts) {\n this.padTo = opts.padTo || 0;\n this.floor = opts.floor || false;\n\n const { padTo, floor, ...otherOpts } = opts;\n\n if (!forceSimple || Object.keys(otherOpts).length > 0) {\n const intlOpts = { useGrouping: false, ...opts };\n if (opts.padTo > 0) intlOpts.minimumIntegerDigits = opts.padTo;\n this.inf = getCachedINF(intl, intlOpts);\n }\n }\n\n format(i) {\n if (this.inf) {\n const fixed = this.floor ? Math.floor(i) : i;\n return this.inf.format(fixed);\n } else {\n // to match the browser's numberformatter defaults\n const fixed = this.floor ? Math.floor(i) : roundTo(i, 3);\n return padStart(fixed, this.padTo);\n }\n }\n}\n\n/**\n * @private\n */\n\nclass PolyDateFormatter {\n constructor(dt, intl, opts) {\n this.opts = opts;\n this.originalZone = undefined;\n\n let z = undefined;\n if (this.opts.timeZone) {\n // Don't apply any workarounds if a timeZone is explicitly provided in opts\n this.dt = dt;\n } else if (dt.zone.type === \"fixed\") {\n // UTC-8 or Etc/UTC-8 are not part of tzdata, only Etc/GMT+8 and the like.\n // That is why fixed-offset TZ is set to that unless it is:\n // 1. Representing offset 0 when UTC is used to maintain previous behavior and does not become GMT.\n // 2. Unsupported by the browser:\n // - some do not support Etc/\n // - < Etc/GMT-14, > Etc/GMT+12, and 30-minute or 45-minute offsets are not part of tzdata\n const gmtOffset = -1 * (dt.offset / 60);\n const offsetZ = gmtOffset >= 0 ? `Etc/GMT+${gmtOffset}` : `Etc/GMT${gmtOffset}`;\n if (dt.offset !== 0 && IANAZone.create(offsetZ).valid) {\n z = offsetZ;\n this.dt = dt;\n } else {\n // Not all fixed-offset zones like Etc/+4:30 are present in tzdata so\n // we manually apply the offset and substitute the zone as needed.\n z = \"UTC\";\n this.dt = dt.offset === 0 ? dt : dt.setZone(\"UTC\").plus({ minutes: dt.offset });\n this.originalZone = dt.zone;\n }\n } else if (dt.zone.type === \"system\") {\n this.dt = dt;\n } else if (dt.zone.type === \"iana\") {\n this.dt = dt;\n z = dt.zone.name;\n } else {\n // Custom zones can have any offset / offsetName so we just manually\n // apply the offset and substitute the zone as needed.\n z = \"UTC\";\n this.dt = dt.setZone(\"UTC\").plus({ minutes: dt.offset });\n this.originalZone = dt.zone;\n }\n\n const intlOpts = { ...this.opts };\n intlOpts.timeZone = intlOpts.timeZone || z;\n this.dtf = getCachedDTF(intl, intlOpts);\n }\n\n format() {\n if (this.originalZone) {\n // If we have to substitute in the actual zone name, we have to use\n // formatToParts so that the timezone can be replaced.\n return this.formatToParts()\n .map(({ value }) => value)\n .join(\"\");\n }\n return this.dtf.format(this.dt.toJSDate());\n }\n\n formatToParts() {\n const parts = this.dtf.formatToParts(this.dt.toJSDate());\n if (this.originalZone) {\n return parts.map((part) => {\n if (part.type === \"timeZoneName\") {\n const offsetName = this.originalZone.offsetName(this.dt.ts, {\n locale: this.dt.locale,\n format: this.opts.timeZoneName,\n });\n return {\n ...part,\n value: offsetName,\n };\n } else {\n return part;\n }\n });\n }\n return parts;\n }\n\n resolvedOptions() {\n return this.dtf.resolvedOptions();\n }\n}\n\n/**\n * @private\n */\nclass PolyRelFormatter {\n constructor(intl, isEnglish, opts) {\n this.opts = { style: \"long\", ...opts };\n if (!isEnglish && hasRelative()) {\n this.rtf = getCachedRTF(intl, opts);\n }\n }\n\n format(count, unit) {\n if (this.rtf) {\n return this.rtf.format(count, unit);\n } else {\n return English.formatRelativeTime(unit, count, this.opts.numeric, this.opts.style !== \"long\");\n }\n }\n\n formatToParts(count, unit) {\n if (this.rtf) {\n return this.rtf.formatToParts(count, unit);\n } else {\n return [];\n }\n }\n}\n\nconst fallbackWeekSettings = {\n firstDay: 1,\n minimalDays: 4,\n weekend: [6, 7],\n};\n\n/**\n * @private\n */\n\nexport default class Locale {\n static fromOpts(opts) {\n return Locale.create(\n opts.locale,\n opts.numberingSystem,\n opts.outputCalendar,\n opts.weekSettings,\n opts.defaultToEN\n );\n }\n\n static create(locale, numberingSystem, outputCalendar, weekSettings, defaultToEN = false) {\n const specifiedLocale = locale || Settings.defaultLocale;\n // the system locale is useful for human-readable strings but annoying for parsing/formatting known formats\n const localeR = specifiedLocale || (defaultToEN ? \"en-US\" : systemLocale());\n const numberingSystemR = numberingSystem || Settings.defaultNumberingSystem;\n const outputCalendarR = outputCalendar || Settings.defaultOutputCalendar;\n const weekSettingsR = validateWeekSettings(weekSettings) || Settings.defaultWeekSettings;\n return new Locale(localeR, numberingSystemR, outputCalendarR, weekSettingsR, specifiedLocale);\n }\n\n static resetCache() {\n sysLocaleCache = null;\n intlDTCache = {};\n intlNumCache = {};\n intlRelCache = {};\n }\n\n static fromObject({ locale, numberingSystem, outputCalendar, weekSettings } = {}) {\n return Locale.create(locale, numberingSystem, outputCalendar, weekSettings);\n }\n\n constructor(locale, numbering, outputCalendar, weekSettings, specifiedLocale) {\n const [parsedLocale, parsedNumberingSystem, parsedOutputCalendar] = parseLocaleString(locale);\n\n this.locale = parsedLocale;\n this.numberingSystem = numbering || parsedNumberingSystem || null;\n this.outputCalendar = outputCalendar || parsedOutputCalendar || null;\n this.weekSettings = weekSettings;\n this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar);\n\n this.weekdaysCache = { format: {}, standalone: {} };\n this.monthsCache = { format: {}, standalone: {} };\n this.meridiemCache = null;\n this.eraCache = {};\n\n this.specifiedLocale = specifiedLocale;\n this.fastNumbersCached = null;\n }\n\n get fastNumbers() {\n if (this.fastNumbersCached == null) {\n this.fastNumbersCached = supportsFastNumbers(this);\n }\n\n return this.fastNumbersCached;\n }\n\n listingMode() {\n const isActuallyEn = this.isEnglish();\n const hasNoWeirdness =\n (this.numberingSystem === null || this.numberingSystem === \"latn\") &&\n (this.outputCalendar === null || this.outputCalendar === \"gregory\");\n return isActuallyEn && hasNoWeirdness ? \"en\" : \"intl\";\n }\n\n clone(alts) {\n if (!alts || Object.getOwnPropertyNames(alts).length === 0) {\n return this;\n } else {\n return Locale.create(\n alts.locale || this.specifiedLocale,\n alts.numberingSystem || this.numberingSystem,\n alts.outputCalendar || this.outputCalendar,\n validateWeekSettings(alts.weekSettings) || this.weekSettings,\n alts.defaultToEN || false\n );\n }\n }\n\n redefaultToEN(alts = {}) {\n return this.clone({ ...alts, defaultToEN: true });\n }\n\n redefaultToSystem(alts = {}) {\n return this.clone({ ...alts, defaultToEN: false });\n }\n\n months(length, format = false) {\n return listStuff(this, length, English.months, () => {\n const intl = format ? { month: length, day: \"numeric\" } : { month: length },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.monthsCache[formatStr][length]) {\n this.monthsCache[formatStr][length] = mapMonths((dt) => this.extract(dt, intl, \"month\"));\n }\n return this.monthsCache[formatStr][length];\n });\n }\n\n weekdays(length, format = false) {\n return listStuff(this, length, English.weekdays, () => {\n const intl = format\n ? { weekday: length, year: \"numeric\", month: \"long\", day: \"numeric\" }\n : { weekday: length },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.weekdaysCache[formatStr][length]) {\n this.weekdaysCache[formatStr][length] = mapWeekdays((dt) =>\n this.extract(dt, intl, \"weekday\")\n );\n }\n return this.weekdaysCache[formatStr][length];\n });\n }\n\n meridiems() {\n return listStuff(\n this,\n undefined,\n () => English.meridiems,\n () => {\n // In theory there could be aribitrary day periods. We're gonna assume there are exactly two\n // for AM and PM. This is probably wrong, but it's makes parsing way easier.\n if (!this.meridiemCache) {\n const intl = { hour: \"numeric\", hourCycle: \"h12\" };\n this.meridiemCache = [DateTime.utc(2016, 11, 13, 9), DateTime.utc(2016, 11, 13, 19)].map(\n (dt) => this.extract(dt, intl, \"dayperiod\")\n );\n }\n\n return this.meridiemCache;\n }\n );\n }\n\n eras(length) {\n return listStuff(this, length, English.eras, () => {\n const intl = { era: length };\n\n // This is problematic. Different calendars are going to define eras totally differently. What I need is the minimum set of dates\n // to definitely enumerate them.\n if (!this.eraCache[length]) {\n this.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map((dt) =>\n this.extract(dt, intl, \"era\")\n );\n }\n\n return this.eraCache[length];\n });\n }\n\n extract(dt, intlOpts, field) {\n const df = this.dtFormatter(dt, intlOpts),\n results = df.formatToParts(),\n matching = results.find((m) => m.type.toLowerCase() === field);\n return matching ? matching.value : null;\n }\n\n numberFormatter(opts = {}) {\n // this forcesimple option is never used (the only caller short-circuits on it, but it seems safer to leave)\n // (in contrast, the rest of the condition is used heavily)\n return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts);\n }\n\n dtFormatter(dt, intlOpts = {}) {\n return new PolyDateFormatter(dt, this.intl, intlOpts);\n }\n\n relFormatter(opts = {}) {\n return new PolyRelFormatter(this.intl, this.isEnglish(), opts);\n }\n\n listFormatter(opts = {}) {\n return getCachedLF(this.intl, opts);\n }\n\n isEnglish() {\n return (\n this.locale === \"en\" ||\n this.locale.toLowerCase() === \"en-us\" ||\n new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith(\"en-us\")\n );\n }\n\n getWeekSettings() {\n if (this.weekSettings) {\n return this.weekSettings;\n } else if (!hasLocaleWeekInfo()) {\n return fallbackWeekSettings;\n } else {\n return getCachedWeekInfo(this.locale);\n }\n }\n\n getStartOfWeek() {\n return this.getWeekSettings().firstDay;\n }\n\n getMinDaysInFirstWeek() {\n return this.getWeekSettings().minimalDays;\n }\n\n getWeekendDays() {\n return this.getWeekSettings().weekend;\n }\n\n equals(other) {\n return (\n this.locale === other.locale &&\n this.numberingSystem === other.numberingSystem &&\n this.outputCalendar === other.outputCalendar\n );\n }\n\n toString() {\n return `Locale(${this.locale}, ${this.numberingSystem}, ${this.outputCalendar})`;\n }\n}\n", "import { formatOffset, signedOffset } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * A zone with a fixed offset (meaning no DST)\n * @implements {Zone}\n */\nexport default class FixedOffsetZone extends Zone {\n /**\n * Get a singleton instance of UTC\n * @return {FixedOffsetZone}\n */\n static get utcInstance() {\n if (singleton === null) {\n singleton = new FixedOffsetZone(0);\n }\n return singleton;\n }\n\n /**\n * Get an instance with a specified offset\n * @param {number} offset - The offset in minutes\n * @return {FixedOffsetZone}\n */\n static instance(offset) {\n return offset === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset);\n }\n\n /**\n * Get an instance of FixedOffsetZone from a UTC offset string, like \"UTC+6\"\n * @param {string} s - The offset string to parse\n * @example FixedOffsetZone.parseSpecifier(\"UTC+6\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC+06\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC-6:00\")\n * @return {FixedOffsetZone}\n */\n static parseSpecifier(s) {\n if (s) {\n const r = s.match(/^utc(?:([+-]\\d{1,2})(?::(\\d{2}))?)?$/i);\n if (r) {\n return new FixedOffsetZone(signedOffset(r[1], r[2]));\n }\n }\n return null;\n }\n\n constructor(offset) {\n super();\n /** @private **/\n this.fixed = offset;\n }\n\n /**\n * The type of zone. `fixed` for all instances of `FixedOffsetZone`.\n * @override\n * @type {string}\n */\n get type() {\n return \"fixed\";\n }\n\n /**\n * The name of this zone.\n * All fixed zones' names always start with \"UTC\" (plus optional offset)\n * @override\n * @type {string}\n */\n get name() {\n return this.fixed === 0 ? \"UTC\" : `UTC${formatOffset(this.fixed, \"narrow\")}`;\n }\n\n /**\n * The IANA name of this zone, i.e. `Etc/UTC` or `Etc/GMT+/-nn`\n *\n * @override\n * @type {string}\n */\n get ianaName() {\n if (this.fixed === 0) {\n return \"Etc/UTC\";\n } else {\n return `Etc/GMT${formatOffset(-this.fixed, \"narrow\")}`;\n }\n }\n\n /**\n * Returns the offset's common name at the specified timestamp.\n *\n * For fixed offset zones this equals to the zone name.\n * @override\n */\n offsetName() {\n return this.name;\n }\n\n /**\n * Returns the offset's value as a string\n * @override\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n return formatOffset(this.fixed, format);\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year:\n * Always returns true for all fixed offset zones.\n * @override\n * @type {boolean}\n */\n get isUniversal() {\n return true;\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n *\n * For fixed offset zones, this is constant and does not depend on a timestamp.\n * @override\n * @return {number}\n */\n offset() {\n return this.fixed;\n }\n\n /**\n * Return whether this Zone is equal to another zone (i.e. also fixed and same offset)\n * @override\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n return otherZone.type === \"fixed\" && otherZone.fixed === this.fixed;\n }\n\n /**\n * Return whether this Zone is valid:\n * All fixed offset zones are valid.\n * @override\n * @type {boolean}\n */\n get isValid() {\n return true;\n }\n}\n", "import Zone from \"../zone.js\";\n\n/**\n * A zone that failed to parse. You should never need to instantiate this.\n * @implements {Zone}\n */\nexport default class InvalidZone extends Zone {\n constructor(zoneName) {\n super();\n /** @private */\n this.zoneName = zoneName;\n }\n\n /** @override **/\n get type() {\n return \"invalid\";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName() {\n return null;\n }\n\n /** @override **/\n formatOffset() {\n return \"\";\n }\n\n /** @override **/\n offset() {\n return NaN;\n }\n\n /** @override **/\n equals() {\n return false;\n }\n\n /** @override **/\n get isValid() {\n return false;\n }\n}\n", "/**\n * @private\n */\n\nimport Zone from \"../zone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport InvalidZone from \"../zones/invalidZone.js\";\n\nimport { isUndefined, isString, isNumber } from \"./util.js\";\nimport SystemZone from \"../zones/systemZone.js\";\n\nexport function normalizeZone(input, defaultZone) {\n let offset;\n if (isUndefined(input) || input === null) {\n return defaultZone;\n } else if (input instanceof Zone) {\n return input;\n } else if (isString(input)) {\n const lowered = input.toLowerCase();\n if (lowered === \"default\") return defaultZone;\n else if (lowered === \"local\" || lowered === \"system\") return SystemZone.instance;\n else if (lowered === \"utc\" || lowered === \"gmt\") return FixedOffsetZone.utcInstance;\n else return FixedOffsetZone.parseSpecifier(lowered) || IANAZone.create(input);\n } else if (isNumber(input)) {\n return FixedOffsetZone.instance(input);\n } else if (typeof input === \"object\" && \"offset\" in input && typeof input.offset === \"function\") {\n // This is dumb, but the instanceof check above doesn't seem to really work\n // so we're duck checking it\n return input;\n } else {\n return new InvalidZone(input);\n }\n}\n", "const numberingSystems = {\n arab: \"[\\u0660-\\u0669]\",\n arabext: \"[\\u06F0-\\u06F9]\",\n bali: \"[\\u1B50-\\u1B59]\",\n beng: \"[\\u09E6-\\u09EF]\",\n deva: \"[\\u0966-\\u096F]\",\n fullwide: \"[\\uFF10-\\uFF19]\",\n gujr: \"[\\u0AE6-\\u0AEF]\",\n hanidec: \"[\u3007|\u4E00|\u4E8C|\u4E09|\u56DB|\u4E94|\u516D|\u4E03|\u516B|\u4E5D]\",\n khmr: \"[\\u17E0-\\u17E9]\",\n knda: \"[\\u0CE6-\\u0CEF]\",\n laoo: \"[\\u0ED0-\\u0ED9]\",\n limb: \"[\\u1946-\\u194F]\",\n mlym: \"[\\u0D66-\\u0D6F]\",\n mong: \"[\\u1810-\\u1819]\",\n mymr: \"[\\u1040-\\u1049]\",\n orya: \"[\\u0B66-\\u0B6F]\",\n tamldec: \"[\\u0BE6-\\u0BEF]\",\n telu: \"[\\u0C66-\\u0C6F]\",\n thai: \"[\\u0E50-\\u0E59]\",\n tibt: \"[\\u0F20-\\u0F29]\",\n latn: \"\\\\d\",\n};\n\nconst numberingSystemsUTF16 = {\n arab: [1632, 1641],\n arabext: [1776, 1785],\n bali: [6992, 7001],\n beng: [2534, 2543],\n deva: [2406, 2415],\n fullwide: [65296, 65303],\n gujr: [2790, 2799],\n khmr: [6112, 6121],\n knda: [3302, 3311],\n laoo: [3792, 3801],\n limb: [6470, 6479],\n mlym: [3430, 3439],\n mong: [6160, 6169],\n mymr: [4160, 4169],\n orya: [2918, 2927],\n tamldec: [3046, 3055],\n telu: [3174, 3183],\n thai: [3664, 3673],\n tibt: [3872, 3881],\n};\n\nconst hanidecChars = numberingSystems.hanidec.replace(/[\\[|\\]]/g, \"\").split(\"\");\n\nexport function parseDigits(str) {\n let value = parseInt(str, 10);\n if (isNaN(value)) {\n value = \"\";\n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n\n if (str[i].search(numberingSystems.hanidec) !== -1) {\n value += hanidecChars.indexOf(str[i]);\n } else {\n for (const key in numberingSystemsUTF16) {\n const [min, max] = numberingSystemsUTF16[key];\n if (code >= min && code <= max) {\n value += code - min;\n }\n }\n }\n }\n return parseInt(value, 10);\n } else {\n return value;\n }\n}\n\n// cache of {numberingSystem: {append: regex}}\nlet digitRegexCache = {};\nexport function resetDigitRegexCache() {\n digitRegexCache = {};\n}\n\nexport function digitRegex({ numberingSystem }, append = \"\") {\n const ns = numberingSystem || \"latn\";\n\n if (!digitRegexCache[ns]) {\n digitRegexCache[ns] = {};\n }\n if (!digitRegexCache[ns][append]) {\n digitRegexCache[ns][append] = new RegExp(`${numberingSystems[ns]}${append}`);\n }\n\n return digitRegexCache[ns][append];\n}\n", "import SystemZone from \"./zones/systemZone.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport Locale from \"./impl/locale.js\";\nimport DateTime from \"./datetime.js\";\n\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\nimport { validateWeekSettings } from \"./impl/util.js\";\nimport { resetDigitRegexCache } from \"./impl/digits.js\";\n\nlet now = () => Date.now(),\n defaultZone = \"system\",\n defaultLocale = null,\n defaultNumberingSystem = null,\n defaultOutputCalendar = null,\n twoDigitCutoffYear = 60,\n throwOnInvalid,\n defaultWeekSettings = null;\n\n/**\n * Settings contains static getters and setters that control Luxon's overall behavior. Luxon is a simple library with few options, but the ones it does have live here.\n */\nexport default class Settings {\n /**\n * Get the callback for returning the current timestamp.\n * @type {function}\n */\n static get now() {\n return now;\n }\n\n /**\n * Set the callback for returning the current timestamp.\n * The function should return a number, which will be interpreted as an Epoch millisecond count\n * @type {function}\n * @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future\n * @example Settings.now = () => 0 // always pretend it's Jan 1, 1970 at midnight in UTC time\n */\n static set now(n) {\n now = n;\n }\n\n /**\n * Set the default time zone to create DateTimes in. Does not affect existing instances.\n * Use the value \"system\" to reset this value to the system's time zone.\n * @type {string}\n */\n static set defaultZone(zone) {\n defaultZone = zone;\n }\n\n /**\n * Get the default time zone object currently used to create DateTimes. Does not affect existing instances.\n * The default value is the system's time zone (the one set on the machine that runs this code).\n * @type {Zone}\n */\n static get defaultZone() {\n return normalizeZone(defaultZone, SystemZone.instance);\n }\n\n /**\n * Get the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultLocale() {\n return defaultLocale;\n }\n\n /**\n * Set the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultLocale(locale) {\n defaultLocale = locale;\n }\n\n /**\n * Get the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultNumberingSystem() {\n return defaultNumberingSystem;\n }\n\n /**\n * Set the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultNumberingSystem(numberingSystem) {\n defaultNumberingSystem = numberingSystem;\n }\n\n /**\n * Get the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultOutputCalendar() {\n return defaultOutputCalendar;\n }\n\n /**\n * Set the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultOutputCalendar(outputCalendar) {\n defaultOutputCalendar = outputCalendar;\n }\n\n /**\n * @typedef {Object} WeekSettings\n * @property {number} firstDay\n * @property {number} minimalDays\n * @property {number[]} weekend\n */\n\n /**\n * @return {WeekSettings|null}\n */\n static get defaultWeekSettings() {\n return defaultWeekSettings;\n }\n\n /**\n * Allows overriding the default locale week settings, i.e. the start of the week, the weekend and\n * how many days are required in the first week of a year.\n * Does not affect existing instances.\n *\n * @param {WeekSettings|null} weekSettings\n */\n static set defaultWeekSettings(weekSettings) {\n defaultWeekSettings = validateWeekSettings(weekSettings);\n }\n\n /**\n * Get the cutoff year for whether a 2-digit year string is interpreted in the current or previous century. Numbers higher than the cutoff will be considered to mean 19xx and numbers lower or equal to the cutoff will be considered 20xx.\n * @type {number}\n */\n static get twoDigitCutoffYear() {\n return twoDigitCutoffYear;\n }\n\n /**\n * Set the cutoff year for whether a 2-digit year string is interpreted in the current or previous century. Numbers higher than the cutoff will be considered to mean 19xx and numbers lower or equal to the cutoff will be considered 20xx.\n * @type {number}\n * @example Settings.twoDigitCutoffYear = 0 // all 'yy' are interpreted as 20th century\n * @example Settings.twoDigitCutoffYear = 99 // all 'yy' are interpreted as 21st century\n * @example Settings.twoDigitCutoffYear = 50 // '49' -> 2049; '50' -> 1950\n * @example Settings.twoDigitCutoffYear = 1950 // interpreted as 50\n * @example Settings.twoDigitCutoffYear = 2050 // ALSO interpreted as 50\n */\n static set twoDigitCutoffYear(cutoffYear) {\n twoDigitCutoffYear = cutoffYear % 100;\n }\n\n /**\n * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static get throwOnInvalid() {\n return throwOnInvalid;\n }\n\n /**\n * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static set throwOnInvalid(t) {\n throwOnInvalid = t;\n }\n\n /**\n * Reset Luxon's global caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCaches() {\n Locale.resetCache();\n IANAZone.resetCache();\n DateTime.resetCache();\n resetDigitRegexCache();\n }\n}\n", "export default class Invalid {\n constructor(reason, explanation) {\n this.reason = reason;\n this.explanation = explanation;\n }\n\n toMessage() {\n if (this.explanation) {\n return `${this.reason}: ${this.explanation}`;\n } else {\n return this.reason;\n }\n }\n}\n", "import {\n integerBetween,\n isLeapYear,\n timeObject,\n daysInYear,\n daysInMonth,\n weeksInWeekYear,\n isInteger,\n isUndefined,\n} from \"./util.js\";\nimport Invalid from \"./invalid.js\";\nimport { ConflictingSpecificationError } from \"../errors.js\";\n\nconst nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334],\n leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\n\nfunction unitOutOfRange(unit, value) {\n return new Invalid(\n \"unit out of range\",\n `you specified ${value} (of type ${typeof value}) as a ${unit}, which is invalid`\n );\n}\n\nexport function dayOfWeek(year, month, day) {\n const d = new Date(Date.UTC(year, month - 1, day));\n\n if (year < 100 && year >= 0) {\n d.setUTCFullYear(d.getUTCFullYear() - 1900);\n }\n\n const js = d.getUTCDay();\n\n return js === 0 ? 7 : js;\n}\n\nfunction computeOrdinal(year, month, day) {\n return day + (isLeapYear(year) ? leapLadder : nonLeapLadder)[month - 1];\n}\n\nfunction uncomputeOrdinal(year, ordinal) {\n const table = isLeapYear(year) ? leapLadder : nonLeapLadder,\n month0 = table.findIndex((i) => i < ordinal),\n day = ordinal - table[month0];\n return { month: month0 + 1, day };\n}\n\nexport function isoWeekdayToLocal(isoWeekday, startOfWeek) {\n return ((isoWeekday - startOfWeek + 7) % 7) + 1;\n}\n\n/**\n * @private\n */\n\nexport function gregorianToWeek(gregObj, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const { year, month, day } = gregObj,\n ordinal = computeOrdinal(year, month, day),\n weekday = isoWeekdayToLocal(dayOfWeek(year, month, day), startOfWeek);\n\n let weekNumber = Math.floor((ordinal - weekday + 14 - minDaysInFirstWeek) / 7),\n weekYear;\n\n if (weekNumber < 1) {\n weekYear = year - 1;\n weekNumber = weeksInWeekYear(weekYear, minDaysInFirstWeek, startOfWeek);\n } else if (weekNumber > weeksInWeekYear(year, minDaysInFirstWeek, startOfWeek)) {\n weekYear = year + 1;\n weekNumber = 1;\n } else {\n weekYear = year;\n }\n\n return { weekYear, weekNumber, weekday, ...timeObject(gregObj) };\n}\n\nexport function weekToGregorian(weekData, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const { weekYear, weekNumber, weekday } = weekData,\n weekdayOfJan4 = isoWeekdayToLocal(dayOfWeek(weekYear, 1, minDaysInFirstWeek), startOfWeek),\n yearInDays = daysInYear(weekYear);\n\n let ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 7 + minDaysInFirstWeek,\n year;\n\n if (ordinal < 1) {\n year = weekYear - 1;\n ordinal += daysInYear(year);\n } else if (ordinal > yearInDays) {\n year = weekYear + 1;\n ordinal -= daysInYear(weekYear);\n } else {\n year = weekYear;\n }\n\n const { month, day } = uncomputeOrdinal(year, ordinal);\n return { year, month, day, ...timeObject(weekData) };\n}\n\nexport function gregorianToOrdinal(gregData) {\n const { year, month, day } = gregData;\n const ordinal = computeOrdinal(year, month, day);\n return { year, ordinal, ...timeObject(gregData) };\n}\n\nexport function ordinalToGregorian(ordinalData) {\n const { year, ordinal } = ordinalData;\n const { month, day } = uncomputeOrdinal(year, ordinal);\n return { year, month, day, ...timeObject(ordinalData) };\n}\n\n/**\n * Check if local week units like localWeekday are used in obj.\n * If so, validates that they are not mixed with ISO week units and then copies them to the normal week unit properties.\n * Modifies obj in-place!\n * @param obj the object values\n */\nexport function usesLocalWeekValues(obj, loc) {\n const hasLocaleWeekData =\n !isUndefined(obj.localWeekday) ||\n !isUndefined(obj.localWeekNumber) ||\n !isUndefined(obj.localWeekYear);\n if (hasLocaleWeekData) {\n const hasIsoWeekData =\n !isUndefined(obj.weekday) || !isUndefined(obj.weekNumber) || !isUndefined(obj.weekYear);\n\n if (hasIsoWeekData) {\n throw new ConflictingSpecificationError(\n \"Cannot mix locale-based week fields with ISO-based week fields\"\n );\n }\n if (!isUndefined(obj.localWeekday)) obj.weekday = obj.localWeekday;\n if (!isUndefined(obj.localWeekNumber)) obj.weekNumber = obj.localWeekNumber;\n if (!isUndefined(obj.localWeekYear)) obj.weekYear = obj.localWeekYear;\n delete obj.localWeekday;\n delete obj.localWeekNumber;\n delete obj.localWeekYear;\n return {\n minDaysInFirstWeek: loc.getMinDaysInFirstWeek(),\n startOfWeek: loc.getStartOfWeek(),\n };\n } else {\n return { minDaysInFirstWeek: 4, startOfWeek: 1 };\n }\n}\n\nexport function hasInvalidWeekData(obj, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const validYear = isInteger(obj.weekYear),\n validWeek = integerBetween(\n obj.weekNumber,\n 1,\n weeksInWeekYear(obj.weekYear, minDaysInFirstWeek, startOfWeek)\n ),\n validWeekday = integerBetween(obj.weekday, 1, 7);\n\n if (!validYear) {\n return unitOutOfRange(\"weekYear\", obj.weekYear);\n } else if (!validWeek) {\n return unitOutOfRange(\"week\", obj.weekNumber);\n } else if (!validWeekday) {\n return unitOutOfRange(\"weekday\", obj.weekday);\n } else return false;\n}\n\nexport function hasInvalidOrdinalData(obj) {\n const validYear = isInteger(obj.year),\n validOrdinal = integerBetween(obj.ordinal, 1, daysInYear(obj.year));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validOrdinal) {\n return unitOutOfRange(\"ordinal\", obj.ordinal);\n } else return false;\n}\n\nexport function hasInvalidGregorianData(obj) {\n const validYear = isInteger(obj.year),\n validMonth = integerBetween(obj.month, 1, 12),\n validDay = integerBetween(obj.day, 1, daysInMonth(obj.year, obj.month));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validMonth) {\n return unitOutOfRange(\"month\", obj.month);\n } else if (!validDay) {\n return unitOutOfRange(\"day\", obj.day);\n } else return false;\n}\n\nexport function hasInvalidTimeData(obj) {\n const { hour, minute, second, millisecond } = obj;\n const validHour =\n integerBetween(hour, 0, 23) ||\n (hour === 24 && minute === 0 && second === 0 && millisecond === 0),\n validMinute = integerBetween(minute, 0, 59),\n validSecond = integerBetween(second, 0, 59),\n validMillisecond = integerBetween(millisecond, 0, 999);\n\n if (!validHour) {\n return unitOutOfRange(\"hour\", hour);\n } else if (!validMinute) {\n return unitOutOfRange(\"minute\", minute);\n } else if (!validSecond) {\n return unitOutOfRange(\"second\", second);\n } else if (!validMillisecond) {\n return unitOutOfRange(\"millisecond\", millisecond);\n } else return false;\n}\n", "/*\n This is just a junk drawer, containing anything used across multiple classes.\n Because Luxon is small(ish), this should stay small and we won't worry about splitting\n it up into, say, parsingUtil.js and basicUtil.js and so on. But they are divided up by feature area.\n*/\n\nimport { InvalidArgumentError } from \"../errors.js\";\nimport Settings from \"../settings.js\";\nimport { dayOfWeek, isoWeekdayToLocal } from \"./conversions.js\";\n\n/**\n * @private\n */\n\n// TYPES\n\nexport function isUndefined(o) {\n return typeof o === \"undefined\";\n}\n\nexport function isNumber(o) {\n return typeof o === \"number\";\n}\n\nexport function isInteger(o) {\n return typeof o === \"number\" && o % 1 === 0;\n}\n\nexport function isString(o) {\n return typeof o === \"string\";\n}\n\nexport function isDate(o) {\n return Object.prototype.toString.call(o) === \"[object Date]\";\n}\n\n// CAPABILITIES\n\nexport function hasRelative() {\n try {\n return typeof Intl !== \"undefined\" && !!Intl.RelativeTimeFormat;\n } catch (e) {\n return false;\n }\n}\n\nexport function hasLocaleWeekInfo() {\n try {\n return (\n typeof Intl !== \"undefined\" &&\n !!Intl.Locale &&\n (\"weekInfo\" in Intl.Locale.prototype || \"getWeekInfo\" in Intl.Locale.prototype)\n );\n } catch (e) {\n return false;\n }\n}\n\n// OBJECTS AND ARRAYS\n\nexport function maybeArray(thing) {\n return Array.isArray(thing) ? thing : [thing];\n}\n\nexport function bestBy(arr, by, compare) {\n if (arr.length === 0) {\n return undefined;\n }\n return arr.reduce((best, next) => {\n const pair = [by(next), next];\n if (!best) {\n return pair;\n } else if (compare(best[0], pair[0]) === best[0]) {\n return best;\n } else {\n return pair;\n }\n }, null)[1];\n}\n\nexport function pick(obj, keys) {\n return keys.reduce((a, k) => {\n a[k] = obj[k];\n return a;\n }, {});\n}\n\nexport function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexport function validateWeekSettings(settings) {\n if (settings == null) {\n return null;\n } else if (typeof settings !== \"object\") {\n throw new InvalidArgumentError(\"Week settings must be an object\");\n } else {\n if (\n !integerBetween(settings.firstDay, 1, 7) ||\n !integerBetween(settings.minimalDays, 1, 7) ||\n !Array.isArray(settings.weekend) ||\n settings.weekend.some((v) => !integerBetween(v, 1, 7))\n ) {\n throw new InvalidArgumentError(\"Invalid week settings\");\n }\n return {\n firstDay: settings.firstDay,\n minimalDays: settings.minimalDays,\n weekend: Array.from(settings.weekend),\n };\n }\n}\n\n// NUMBERS AND STRINGS\n\nexport function integerBetween(thing, bottom, top) {\n return isInteger(thing) && thing >= bottom && thing <= top;\n}\n\n// x % n but takes the sign of n instead of x\nexport function floorMod(x, n) {\n return x - n * Math.floor(x / n);\n}\n\nexport function padStart(input, n = 2) {\n const isNeg = input < 0;\n let padded;\n if (isNeg) {\n padded = \"-\" + (\"\" + -input).padStart(n, \"0\");\n } else {\n padded = (\"\" + input).padStart(n, \"0\");\n }\n return padded;\n}\n\nexport function parseInteger(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseInt(string, 10);\n }\n}\n\nexport function parseFloating(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseFloat(string);\n }\n}\n\nexport function parseMillis(fraction) {\n // Return undefined (instead of 0) in these cases, where fraction is not set\n if (isUndefined(fraction) || fraction === null || fraction === \"\") {\n return undefined;\n } else {\n const f = parseFloat(\"0.\" + fraction) * 1000;\n return Math.floor(f);\n }\n}\n\nexport function roundTo(number, digits, towardZero = false) {\n const factor = 10 ** digits,\n rounder = towardZero ? Math.trunc : Math.round;\n return rounder(number * factor) / factor;\n}\n\n// DATE BASICS\n\nexport function isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nexport function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\nexport function daysInMonth(year, month) {\n const modMonth = floorMod(month - 1, 12) + 1,\n modYear = year + (month - modMonth) / 12;\n\n if (modMonth === 2) {\n return isLeapYear(modYear) ? 29 : 28;\n } else {\n return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1];\n }\n}\n\n// convert a calendar object to a local timestamp (epoch, but with the offset baked in)\nexport function objToLocalTS(obj) {\n let d = Date.UTC(\n obj.year,\n obj.month - 1,\n obj.day,\n obj.hour,\n obj.minute,\n obj.second,\n obj.millisecond\n );\n\n // for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that\n if (obj.year < 100 && obj.year >= 0) {\n d = new Date(d);\n // set the month and day again, this is necessary because year 2000 is a leap year, but year 100 is not\n // so if obj.year is in 99, but obj.day makes it roll over into year 100,\n // the calculations done by Date.UTC are using year 2000 - which is incorrect\n d.setUTCFullYear(obj.year, obj.month - 1, obj.day);\n }\n return +d;\n}\n\n// adapted from moment.js: https://github.com/moment/moment/blob/000ac1800e620f770f4eb31b5ae908f6167b0ab2/src/lib/units/week-calendar-utils.js\nfunction firstWeekOffset(year, minDaysInFirstWeek, startOfWeek) {\n const fwdlw = isoWeekdayToLocal(dayOfWeek(year, 1, minDaysInFirstWeek), startOfWeek);\n return -fwdlw + minDaysInFirstWeek - 1;\n}\n\nexport function weeksInWeekYear(weekYear, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const weekOffset = firstWeekOffset(weekYear, minDaysInFirstWeek, startOfWeek);\n const weekOffsetNext = firstWeekOffset(weekYear + 1, minDaysInFirstWeek, startOfWeek);\n return (daysInYear(weekYear) - weekOffset + weekOffsetNext) / 7;\n}\n\nexport function untruncateYear(year) {\n if (year > 99) {\n return year;\n } else return year > Settings.twoDigitCutoffYear ? 1900 + year : 2000 + year;\n}\n\n// PARSING\n\nexport function parseZoneInfo(ts, offsetFormat, locale, timeZone = null) {\n const date = new Date(ts),\n intlOpts = {\n hourCycle: \"h23\",\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n };\n\n if (timeZone) {\n intlOpts.timeZone = timeZone;\n }\n\n const modified = { timeZoneName: offsetFormat, ...intlOpts };\n\n const parsed = new Intl.DateTimeFormat(locale, modified)\n .formatToParts(date)\n .find((m) => m.type.toLowerCase() === \"timezonename\");\n return parsed ? parsed.value : null;\n}\n\n// signedOffset('-5', '30') -> -330\nexport function signedOffset(offHourStr, offMinuteStr) {\n let offHour = parseInt(offHourStr, 10);\n\n // don't || this because we want to preserve -0\n if (Number.isNaN(offHour)) {\n offHour = 0;\n }\n\n const offMin = parseInt(offMinuteStr, 10) || 0,\n offMinSigned = offHour < 0 || Object.is(offHour, -0) ? -offMin : offMin;\n return offHour * 60 + offMinSigned;\n}\n\n// COERCION\n\nexport function asNumber(value) {\n const numericValue = Number(value);\n if (typeof value === \"boolean\" || value === \"\" || Number.isNaN(numericValue))\n throw new InvalidArgumentError(`Invalid unit value ${value}`);\n return numericValue;\n}\n\nexport function normalizeObject(obj, normalizer) {\n const normalized = {};\n for (const u in obj) {\n if (hasOwnProperty(obj, u)) {\n const v = obj[u];\n if (v === undefined || v === null) continue;\n normalized[normalizer(u)] = asNumber(v);\n }\n }\n return normalized;\n}\n\n/**\n * Returns the offset's value as a string\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\nexport function formatOffset(offset, format) {\n const hours = Math.trunc(Math.abs(offset / 60)),\n minutes = Math.trunc(Math.abs(offset % 60)),\n sign = offset >= 0 ? \"+\" : \"-\";\n\n switch (format) {\n case \"short\":\n return `${sign}${padStart(hours, 2)}:${padStart(minutes, 2)}`;\n case \"narrow\":\n return `${sign}${hours}${minutes > 0 ? `:${minutes}` : \"\"}`;\n case \"techie\":\n return `${sign}${padStart(hours, 2)}${padStart(minutes, 2)}`;\n default:\n throw new RangeError(`Value format ${format} is out of range for property format`);\n }\n}\n\nexport function timeObject(obj) {\n return pick(obj, [\"hour\", \"minute\", \"second\", \"millisecond\"]);\n}\n", "import * as Formats from \"./formats.js\";\nimport { pick } from \"./util.js\";\n\nfunction stringify(obj) {\n return JSON.stringify(obj, Object.keys(obj).sort());\n}\n\n/**\n * @private\n */\n\nexport const monthsLong = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n\nexport const monthsShort = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n];\n\nexport const monthsNarrow = [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"];\n\nexport function months(length) {\n switch (length) {\n case \"narrow\":\n return [...monthsNarrow];\n case \"short\":\n return [...monthsShort];\n case \"long\":\n return [...monthsLong];\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"];\n case \"2-digit\":\n return [\"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\", \"10\", \"11\", \"12\"];\n default:\n return null;\n }\n}\n\nexport const weekdaysLong = [\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n \"Sunday\",\n];\n\nexport const weekdaysShort = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\n\nexport const weekdaysNarrow = [\"M\", \"T\", \"W\", \"T\", \"F\", \"S\", \"S\"];\n\nexport function weekdays(length) {\n switch (length) {\n case \"narrow\":\n return [...weekdaysNarrow];\n case \"short\":\n return [...weekdaysShort];\n case \"long\":\n return [...weekdaysLong];\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"];\n default:\n return null;\n }\n}\n\nexport const meridiems = [\"AM\", \"PM\"];\n\nexport const erasLong = [\"Before Christ\", \"Anno Domini\"];\n\nexport const erasShort = [\"BC\", \"AD\"];\n\nexport const erasNarrow = [\"B\", \"A\"];\n\nexport function eras(length) {\n switch (length) {\n case \"narrow\":\n return [...erasNarrow];\n case \"short\":\n return [...erasShort];\n case \"long\":\n return [...erasLong];\n default:\n return null;\n }\n}\n\nexport function meridiemForDateTime(dt) {\n return meridiems[dt.hour < 12 ? 0 : 1];\n}\n\nexport function weekdayForDateTime(dt, length) {\n return weekdays(length)[dt.weekday - 1];\n}\n\nexport function monthForDateTime(dt, length) {\n return months(length)[dt.month - 1];\n}\n\nexport function eraForDateTime(dt, length) {\n return eras(length)[dt.year < 0 ? 0 : 1];\n}\n\nexport function formatRelativeTime(unit, count, numeric = \"always\", narrow = false) {\n const units = {\n years: [\"year\", \"yr.\"],\n quarters: [\"quarter\", \"qtr.\"],\n months: [\"month\", \"mo.\"],\n weeks: [\"week\", \"wk.\"],\n days: [\"day\", \"day\", \"days\"],\n hours: [\"hour\", \"hr.\"],\n minutes: [\"minute\", \"min.\"],\n seconds: [\"second\", \"sec.\"],\n };\n\n const lastable = [\"hours\", \"minutes\", \"seconds\"].indexOf(unit) === -1;\n\n if (numeric === \"auto\" && lastable) {\n const isDay = unit === \"days\";\n switch (count) {\n case 1:\n return isDay ? \"tomorrow\" : `next ${units[unit][0]}`;\n case -1:\n return isDay ? \"yesterday\" : `last ${units[unit][0]}`;\n case 0:\n return isDay ? \"today\" : `this ${units[unit][0]}`;\n default: // fall through\n }\n }\n\n const isInPast = Object.is(count, -0) || count < 0,\n fmtValue = Math.abs(count),\n singular = fmtValue === 1,\n lilUnits = units[unit],\n fmtUnit = narrow\n ? singular\n ? lilUnits[1]\n : lilUnits[2] || lilUnits[1]\n : singular\n ? units[unit][0]\n : unit;\n return isInPast ? `${fmtValue} ${fmtUnit} ago` : `in ${fmtValue} ${fmtUnit}`;\n}\n\nexport function formatString(knownFormat) {\n // these all have the offsets removed because we don't have access to them\n // without all the intl stuff this is backfilling\n const filtered = pick(knownFormat, [\n \"weekday\",\n \"era\",\n \"year\",\n \"month\",\n \"day\",\n \"hour\",\n \"minute\",\n \"second\",\n \"timeZoneName\",\n \"hourCycle\",\n ]),\n key = stringify(filtered),\n dateTimeHuge = \"EEEE, LLLL d, yyyy, h:mm a\";\n switch (key) {\n case stringify(Formats.DATE_SHORT):\n return \"M/d/yyyy\";\n case stringify(Formats.DATE_MED):\n return \"LLL d, yyyy\";\n case stringify(Formats.DATE_MED_WITH_WEEKDAY):\n return \"EEE, LLL d, yyyy\";\n case stringify(Formats.DATE_FULL):\n return \"LLLL d, yyyy\";\n case stringify(Formats.DATE_HUGE):\n return \"EEEE, LLLL d, yyyy\";\n case stringify(Formats.TIME_SIMPLE):\n return \"h:mm a\";\n case stringify(Formats.TIME_WITH_SECONDS):\n return \"h:mm:ss a\";\n case stringify(Formats.TIME_WITH_SHORT_OFFSET):\n return \"h:mm a\";\n case stringify(Formats.TIME_WITH_LONG_OFFSET):\n return \"h:mm a\";\n case stringify(Formats.TIME_24_SIMPLE):\n return \"HH:mm\";\n case stringify(Formats.TIME_24_WITH_SECONDS):\n return \"HH:mm:ss\";\n case stringify(Formats.TIME_24_WITH_SHORT_OFFSET):\n return \"HH:mm\";\n case stringify(Formats.TIME_24_WITH_LONG_OFFSET):\n return \"HH:mm\";\n case stringify(Formats.DATETIME_SHORT):\n return \"M/d/yyyy, h:mm a\";\n case stringify(Formats.DATETIME_MED):\n return \"LLL d, yyyy, h:mm a\";\n case stringify(Formats.DATETIME_FULL):\n return \"LLLL d, yyyy, h:mm a\";\n case stringify(Formats.DATETIME_HUGE):\n return dateTimeHuge;\n case stringify(Formats.DATETIME_SHORT_WITH_SECONDS):\n return \"M/d/yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_MED_WITH_SECONDS):\n return \"LLL d, yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_MED_WITH_WEEKDAY):\n return \"EEE, d LLL yyyy, h:mm a\";\n case stringify(Formats.DATETIME_FULL_WITH_SECONDS):\n return \"LLLL d, yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_HUGE_WITH_SECONDS):\n return \"EEEE, LLLL d, yyyy, h:mm:ss a\";\n default:\n return dateTimeHuge;\n }\n}\n", "import * as English from \"./english.js\";\nimport * as Formats from \"./formats.js\";\nimport { padStart } from \"./util.js\";\n\nfunction stringifyTokens(splits, tokenToString) {\n let s = \"\";\n for (const token of splits) {\n if (token.literal) {\n s += token.val;\n } else {\n s += tokenToString(token.val);\n }\n }\n return s;\n}\n\nconst macroTokenToFormatOpts = {\n D: Formats.DATE_SHORT,\n DD: Formats.DATE_MED,\n DDD: Formats.DATE_FULL,\n DDDD: Formats.DATE_HUGE,\n t: Formats.TIME_SIMPLE,\n tt: Formats.TIME_WITH_SECONDS,\n ttt: Formats.TIME_WITH_SHORT_OFFSET,\n tttt: Formats.TIME_WITH_LONG_OFFSET,\n T: Formats.TIME_24_SIMPLE,\n TT: Formats.TIME_24_WITH_SECONDS,\n TTT: Formats.TIME_24_WITH_SHORT_OFFSET,\n TTTT: Formats.TIME_24_WITH_LONG_OFFSET,\n f: Formats.DATETIME_SHORT,\n ff: Formats.DATETIME_MED,\n fff: Formats.DATETIME_FULL,\n ffff: Formats.DATETIME_HUGE,\n F: Formats.DATETIME_SHORT_WITH_SECONDS,\n FF: Formats.DATETIME_MED_WITH_SECONDS,\n FFF: Formats.DATETIME_FULL_WITH_SECONDS,\n FFFF: Formats.DATETIME_HUGE_WITH_SECONDS,\n};\n\n/**\n * @private\n */\n\nexport default class Formatter {\n static create(locale, opts = {}) {\n return new Formatter(locale, opts);\n }\n\n static parseFormat(fmt) {\n // white-space is always considered a literal in user-provided formats\n // the \" \" token has a special meaning (see unitForToken)\n\n let current = null,\n currentFull = \"\",\n bracketed = false;\n const splits = [];\n for (let i = 0; i < fmt.length; i++) {\n const c = fmt.charAt(i);\n if (c === \"'\") {\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed || /^\\s+$/.test(currentFull), val: currentFull });\n }\n current = null;\n currentFull = \"\";\n bracketed = !bracketed;\n } else if (bracketed) {\n currentFull += c;\n } else if (c === current) {\n currentFull += c;\n } else {\n if (currentFull.length > 0) {\n splits.push({ literal: /^\\s+$/.test(currentFull), val: currentFull });\n }\n currentFull = c;\n current = c;\n }\n }\n\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed || /^\\s+$/.test(currentFull), val: currentFull });\n }\n\n return splits;\n }\n\n static macroTokenToFormatOpts(token) {\n return macroTokenToFormatOpts[token];\n }\n\n constructor(locale, formatOpts) {\n this.opts = formatOpts;\n this.loc = locale;\n this.systemLoc = null;\n }\n\n formatWithSystemDefault(dt, opts) {\n if (this.systemLoc === null) {\n this.systemLoc = this.loc.redefaultToSystem();\n }\n const df = this.systemLoc.dtFormatter(dt, { ...this.opts, ...opts });\n return df.format();\n }\n\n dtFormatter(dt, opts = {}) {\n return this.loc.dtFormatter(dt, { ...this.opts, ...opts });\n }\n\n formatDateTime(dt, opts) {\n return this.dtFormatter(dt, opts).format();\n }\n\n formatDateTimeParts(dt, opts) {\n return this.dtFormatter(dt, opts).formatToParts();\n }\n\n formatInterval(interval, opts) {\n const df = this.dtFormatter(interval.start, opts);\n return df.dtf.formatRange(interval.start.toJSDate(), interval.end.toJSDate());\n }\n\n resolvedOptions(dt, opts) {\n return this.dtFormatter(dt, opts).resolvedOptions();\n }\n\n num(n, p = 0) {\n // we get some perf out of doing this here, annoyingly\n if (this.opts.forceSimple) {\n return padStart(n, p);\n }\n\n const opts = { ...this.opts };\n\n if (p > 0) {\n opts.padTo = p;\n }\n\n return this.loc.numberFormatter(opts).format(n);\n }\n\n formatDateTimeFromString(dt, fmt) {\n const knownEnglish = this.loc.listingMode() === \"en\",\n useDateTimeFormatter = this.loc.outputCalendar && this.loc.outputCalendar !== \"gregory\",\n string = (opts, extract) => this.loc.extract(dt, opts, extract),\n formatOffset = (opts) => {\n if (dt.isOffsetFixed && dt.offset === 0 && opts.allowZ) {\n return \"Z\";\n }\n\n return dt.isValid ? dt.zone.formatOffset(dt.ts, opts.format) : \"\";\n },\n meridiem = () =>\n knownEnglish\n ? English.meridiemForDateTime(dt)\n : string({ hour: \"numeric\", hourCycle: \"h12\" }, \"dayperiod\"),\n month = (length, standalone) =>\n knownEnglish\n ? English.monthForDateTime(dt, length)\n : string(standalone ? { month: length } : { month: length, day: \"numeric\" }, \"month\"),\n weekday = (length, standalone) =>\n knownEnglish\n ? English.weekdayForDateTime(dt, length)\n : string(\n standalone ? { weekday: length } : { weekday: length, month: \"long\", day: \"numeric\" },\n \"weekday\"\n ),\n maybeMacro = (token) => {\n const formatOpts = Formatter.macroTokenToFormatOpts(token);\n if (formatOpts) {\n return this.formatWithSystemDefault(dt, formatOpts);\n } else {\n return token;\n }\n },\n era = (length) =>\n knownEnglish ? English.eraForDateTime(dt, length) : string({ era: length }, \"era\"),\n tokenToString = (token) => {\n // Where possible: https://cldr.unicode.org/translation/date-time/date-time-symbols\n switch (token) {\n // ms\n case \"S\":\n return this.num(dt.millisecond);\n case \"u\":\n // falls through\n case \"SSS\":\n return this.num(dt.millisecond, 3);\n // seconds\n case \"s\":\n return this.num(dt.second);\n case \"ss\":\n return this.num(dt.second, 2);\n // fractional seconds\n case \"uu\":\n return this.num(Math.floor(dt.millisecond / 10), 2);\n case \"uuu\":\n return this.num(Math.floor(dt.millisecond / 100));\n // minutes\n case \"m\":\n return this.num(dt.minute);\n case \"mm\":\n return this.num(dt.minute, 2);\n // hours\n case \"h\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12);\n case \"hh\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12, 2);\n case \"H\":\n return this.num(dt.hour);\n case \"HH\":\n return this.num(dt.hour, 2);\n // offset\n case \"Z\":\n // like +6\n return formatOffset({ format: \"narrow\", allowZ: this.opts.allowZ });\n case \"ZZ\":\n // like +06:00\n return formatOffset({ format: \"short\", allowZ: this.opts.allowZ });\n case \"ZZZ\":\n // like +0600\n return formatOffset({ format: \"techie\", allowZ: this.opts.allowZ });\n case \"ZZZZ\":\n // like EST\n return dt.zone.offsetName(dt.ts, { format: \"short\", locale: this.loc.locale });\n case \"ZZZZZ\":\n // like Eastern Standard Time\n return dt.zone.offsetName(dt.ts, { format: \"long\", locale: this.loc.locale });\n // zone\n case \"z\":\n // like America/New_York\n return dt.zoneName;\n // meridiems\n case \"a\":\n return meridiem();\n // dates\n case \"d\":\n return useDateTimeFormatter ? string({ day: \"numeric\" }, \"day\") : this.num(dt.day);\n case \"dd\":\n return useDateTimeFormatter ? string({ day: \"2-digit\" }, \"day\") : this.num(dt.day, 2);\n // weekdays - standalone\n case \"c\":\n // like 1\n return this.num(dt.weekday);\n case \"ccc\":\n // like 'Tues'\n return weekday(\"short\", true);\n case \"cccc\":\n // like 'Tuesday'\n return weekday(\"long\", true);\n case \"ccccc\":\n // like 'T'\n return weekday(\"narrow\", true);\n // weekdays - format\n case \"E\":\n // like 1\n return this.num(dt.weekday);\n case \"EEE\":\n // like 'Tues'\n return weekday(\"short\", false);\n case \"EEEE\":\n // like 'Tuesday'\n return weekday(\"long\", false);\n case \"EEEEE\":\n // like 'T'\n return weekday(\"narrow\", false);\n // months - standalone\n case \"L\":\n // like 1\n return useDateTimeFormatter\n ? string({ month: \"numeric\", day: \"numeric\" }, \"month\")\n : this.num(dt.month);\n case \"LL\":\n // like 01, doesn't seem to work\n return useDateTimeFormatter\n ? string({ month: \"2-digit\", day: \"numeric\" }, \"month\")\n : this.num(dt.month, 2);\n case \"LLL\":\n // like Jan\n return month(\"short\", true);\n case \"LLLL\":\n // like January\n return month(\"long\", true);\n case \"LLLLL\":\n // like J\n return month(\"narrow\", true);\n // months - format\n case \"M\":\n // like 1\n return useDateTimeFormatter\n ? string({ month: \"numeric\" }, \"month\")\n : this.num(dt.month);\n case \"MM\":\n // like 01\n return useDateTimeFormatter\n ? string({ month: \"2-digit\" }, \"month\")\n : this.num(dt.month, 2);\n case \"MMM\":\n // like Jan\n return month(\"short\", false);\n case \"MMMM\":\n // like January\n return month(\"long\", false);\n case \"MMMMM\":\n // like J\n return month(\"narrow\", false);\n // years\n case \"y\":\n // like 2014\n return useDateTimeFormatter ? string({ year: \"numeric\" }, \"year\") : this.num(dt.year);\n case \"yy\":\n // like 14\n return useDateTimeFormatter\n ? string({ year: \"2-digit\" }, \"year\")\n : this.num(dt.year.toString().slice(-2), 2);\n case \"yyyy\":\n // like 0012\n return useDateTimeFormatter\n ? string({ year: \"numeric\" }, \"year\")\n : this.num(dt.year, 4);\n case \"yyyyyy\":\n // like 000012\n return useDateTimeFormatter\n ? string({ year: \"numeric\" }, \"year\")\n : this.num(dt.year, 6);\n // eras\n case \"G\":\n // like AD\n return era(\"short\");\n case \"GG\":\n // like Anno Domini\n return era(\"long\");\n case \"GGGGG\":\n return era(\"narrow\");\n case \"kk\":\n return this.num(dt.weekYear.toString().slice(-2), 2);\n case \"kkkk\":\n return this.num(dt.weekYear, 4);\n case \"W\":\n return this.num(dt.weekNumber);\n case \"WW\":\n return this.num(dt.weekNumber, 2);\n case \"n\":\n return this.num(dt.localWeekNumber);\n case \"nn\":\n return this.num(dt.localWeekNumber, 2);\n case \"ii\":\n return this.num(dt.localWeekYear.toString().slice(-2), 2);\n case \"iiii\":\n return this.num(dt.localWeekYear, 4);\n case \"o\":\n return this.num(dt.ordinal);\n case \"ooo\":\n return this.num(dt.ordinal, 3);\n case \"q\":\n // like 1\n return this.num(dt.quarter);\n case \"qq\":\n // like 01\n return this.num(dt.quarter, 2);\n case \"X\":\n return this.num(Math.floor(dt.ts / 1000));\n case \"x\":\n return this.num(dt.ts);\n default:\n return maybeMacro(token);\n }\n };\n\n return stringifyTokens(Formatter.parseFormat(fmt), tokenToString);\n }\n\n formatDurationFromString(dur, fmt) {\n const tokenToField = (token) => {\n switch (token[0]) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"w\":\n return \"week\";\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n default:\n return null;\n }\n },\n tokenToString = (lildur) => (token) => {\n const mapped = tokenToField(token);\n if (mapped) {\n return this.num(lildur.get(mapped), token.length);\n } else {\n return token;\n }\n },\n tokens = Formatter.parseFormat(fmt),\n realTokens = tokens.reduce(\n (found, { literal, val }) => (literal ? found : found.concat(val)),\n []\n ),\n collapsed = dur.shiftTo(...realTokens.map(tokenToField).filter((t) => t));\n return stringifyTokens(tokens, tokenToString(collapsed));\n }\n}\n", "import {\n untruncateYear,\n signedOffset,\n parseInteger,\n parseMillis,\n isUndefined,\n parseFloating,\n} from \"./util.js\";\nimport * as English from \"./english.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\n\n/*\n * This file handles parsing for well-specified formats. Here's how it works:\n * Two things go into parsing: a regex to match with and an extractor to take apart the groups in the match.\n * An extractor is just a function that takes a regex match array and returns a { year: ..., month: ... } object\n * parse() does the work of executing the regex and applying the extractor. It takes multiple regex/extractor pairs to try in sequence.\n * Extractors can take a \"cursor\" representing the offset in the match to look at. This makes it easy to combine extractors.\n * combineExtractors() does the work of combining them, keeping track of the cursor through multiple extractions.\n * Some extractions are super dumb and simpleParse and fromStrings help DRY them.\n */\n\nconst ianaRegex = /[A-Za-z_+-]{1,256}(?::?\\/[A-Za-z0-9_+-]{1,256}(?:\\/[A-Za-z0-9_+-]{1,256})?)?/;\n\nfunction combineRegexes(...regexes) {\n const full = regexes.reduce((f, r) => f + r.source, \"\");\n return RegExp(`^${full}$`);\n}\n\nfunction combineExtractors(...extractors) {\n return (m) =>\n extractors\n .reduce(\n ([mergedVals, mergedZone, cursor], ex) => {\n const [val, zone, next] = ex(m, cursor);\n return [{ ...mergedVals, ...val }, zone || mergedZone, next];\n },\n [{}, null, 1]\n )\n .slice(0, 2);\n}\n\nfunction parse(s, ...patterns) {\n if (s == null) {\n return [null, null];\n }\n\n for (const [regex, extractor] of patterns) {\n const m = regex.exec(s);\n if (m) {\n return extractor(m);\n }\n }\n return [null, null];\n}\n\nfunction simpleParse(...keys) {\n return (match, cursor) => {\n const ret = {};\n let i;\n\n for (i = 0; i < keys.length; i++) {\n ret[keys[i]] = parseInteger(match[cursor + i]);\n }\n return [ret, null, cursor + i];\n };\n}\n\n// ISO and SQL parsing\nconst offsetRegex = /(?:(Z)|([+-]\\d\\d)(?::?(\\d\\d))?)/;\nconst isoExtendedZone = `(?:${offsetRegex.source}?(?:\\\\[(${ianaRegex.source})\\\\])?)?`;\nconst isoTimeBaseRegex = /(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:[.,](\\d{1,30}))?)?)?/;\nconst isoTimeRegex = RegExp(`${isoTimeBaseRegex.source}${isoExtendedZone}`);\nconst isoTimeExtensionRegex = RegExp(`(?:T${isoTimeRegex.source})?`);\nconst isoYmdRegex = /([+-]\\d{6}|\\d{4})(?:-?(\\d\\d)(?:-?(\\d\\d))?)?/;\nconst isoWeekRegex = /(\\d{4})-?W(\\d\\d)(?:-?(\\d))?/;\nconst isoOrdinalRegex = /(\\d{4})-?(\\d{3})/;\nconst extractISOWeekData = simpleParse(\"weekYear\", \"weekNumber\", \"weekDay\");\nconst extractISOOrdinalData = simpleParse(\"year\", \"ordinal\");\nconst sqlYmdRegex = /(\\d{4})-(\\d\\d)-(\\d\\d)/; // dumbed-down version of the ISO one\nconst sqlTimeRegex = RegExp(\n `${isoTimeBaseRegex.source} ?(?:${offsetRegex.source}|(${ianaRegex.source}))?`\n);\nconst sqlTimeExtensionRegex = RegExp(`(?: ${sqlTimeRegex.source})?`);\n\nfunction int(match, pos, fallback) {\n const m = match[pos];\n return isUndefined(m) ? fallback : parseInteger(m);\n}\n\nfunction extractISOYmd(match, cursor) {\n const item = {\n year: int(match, cursor),\n month: int(match, cursor + 1, 1),\n day: int(match, cursor + 2, 1),\n };\n\n return [item, null, cursor + 3];\n}\n\nfunction extractISOTime(match, cursor) {\n const item = {\n hours: int(match, cursor, 0),\n minutes: int(match, cursor + 1, 0),\n seconds: int(match, cursor + 2, 0),\n milliseconds: parseMillis(match[cursor + 3]),\n };\n\n return [item, null, cursor + 4];\n}\n\nfunction extractISOOffset(match, cursor) {\n const local = !match[cursor] && !match[cursor + 1],\n fullOffset = signedOffset(match[cursor + 1], match[cursor + 2]),\n zone = local ? null : FixedOffsetZone.instance(fullOffset);\n return [{}, zone, cursor + 3];\n}\n\nfunction extractIANAZone(match, cursor) {\n const zone = match[cursor] ? IANAZone.create(match[cursor]) : null;\n return [{}, zone, cursor + 1];\n}\n\n// ISO time parsing\n\nconst isoTimeOnly = RegExp(`^T?${isoTimeBaseRegex.source}$`);\n\n// ISO duration parsing\n\nconst isoDuration =\n /^-?P(?:(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)Y)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)W)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)D)?(?:T(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)H)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20})(?:[.,](-?\\d{1,20}))?S)?)?)$/;\n\nfunction extractISODuration(match) {\n const [s, yearStr, monthStr, weekStr, dayStr, hourStr, minuteStr, secondStr, millisecondsStr] =\n match;\n\n const hasNegativePrefix = s[0] === \"-\";\n const negativeSeconds = secondStr && secondStr[0] === \"-\";\n\n const maybeNegate = (num, force = false) =>\n num !== undefined && (force || (num && hasNegativePrefix)) ? -num : num;\n\n return [\n {\n years: maybeNegate(parseFloating(yearStr)),\n months: maybeNegate(parseFloating(monthStr)),\n weeks: maybeNegate(parseFloating(weekStr)),\n days: maybeNegate(parseFloating(dayStr)),\n hours: maybeNegate(parseFloating(hourStr)),\n minutes: maybeNegate(parseFloating(minuteStr)),\n seconds: maybeNegate(parseFloating(secondStr), secondStr === \"-0\"),\n milliseconds: maybeNegate(parseMillis(millisecondsStr), negativeSeconds),\n },\n ];\n}\n\n// These are a little braindead. EDT *should* tell us that we're in, say, America/New_York\n// and not just that we're in -240 *right now*. But since I don't think these are used that often\n// I'm just going to ignore that\nconst obsOffsets = {\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\nfunction fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n const result = {\n year: yearStr.length === 2 ? untruncateYear(parseInteger(yearStr)) : parseInteger(yearStr),\n month: English.monthsShort.indexOf(monthStr) + 1,\n day: parseInteger(dayStr),\n hour: parseInteger(hourStr),\n minute: parseInteger(minuteStr),\n };\n\n if (secondStr) result.second = parseInteger(secondStr);\n if (weekdayStr) {\n result.weekday =\n weekdayStr.length > 3\n ? English.weekdaysLong.indexOf(weekdayStr) + 1\n : English.weekdaysShort.indexOf(weekdayStr) + 1;\n }\n\n return result;\n}\n\n// RFC 2822/5322\nconst 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\\d)(\\d\\d)))$/;\n\nfunction extractRFC2822(match) {\n const [\n ,\n weekdayStr,\n dayStr,\n monthStr,\n yearStr,\n hourStr,\n minuteStr,\n secondStr,\n obsOffset,\n milOffset,\n offHourStr,\n offMinuteStr,\n ] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n\n let offset;\n if (obsOffset) {\n offset = obsOffsets[obsOffset];\n } else if (milOffset) {\n offset = 0;\n } else {\n offset = signedOffset(offHourStr, offMinuteStr);\n }\n\n return [result, new FixedOffsetZone(offset)];\n}\n\nfunction 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 .trim();\n}\n\n// http date\n\nconst rfc1123 =\n /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d\\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n rfc850 =\n /^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\\d\\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n ascii =\n /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \\d|\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) (\\d{4})$/;\n\nfunction extractRFC1123Or850(match) {\n const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nfunction extractASCII(match) {\n const [, weekdayStr, monthStr, dayStr, hourStr, minuteStr, secondStr, yearStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nconst isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex);\nconst isoWeekWithTimeExtensionRegex = combineRegexes(isoWeekRegex, isoTimeExtensionRegex);\nconst isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeExtensionRegex);\nconst isoTimeCombinedRegex = combineRegexes(isoTimeRegex);\n\nconst extractISOYmdTimeAndOffset = combineExtractors(\n extractISOYmd,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOWeekTimeAndOffset = combineExtractors(\n extractISOWeekData,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOOrdinalDateAndTime = combineExtractors(\n extractISOOrdinalData,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOTimeAndOffset = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\n/*\n * @private\n */\n\nexport function parseISODate(s) {\n return parse(\n s,\n [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset],\n [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDateAndTime],\n [isoTimeCombinedRegex, extractISOTimeAndOffset]\n );\n}\n\nexport function parseRFC2822Date(s) {\n return parse(preprocessRFC2822(s), [rfc2822, extractRFC2822]);\n}\n\nexport function parseHTTPDate(s) {\n return parse(\n s,\n [rfc1123, extractRFC1123Or850],\n [rfc850, extractRFC1123Or850],\n [ascii, extractASCII]\n );\n}\n\nexport function parseISODuration(s) {\n return parse(s, [isoDuration, extractISODuration]);\n}\n\nconst extractISOTimeOnly = combineExtractors(extractISOTime);\n\nexport function parseISOTimeOnly(s) {\n return parse(s, [isoTimeOnly, extractISOTimeOnly]);\n}\n\nconst sqlYmdWithTimeExtensionRegex = combineRegexes(sqlYmdRegex, sqlTimeExtensionRegex);\nconst sqlTimeCombinedRegex = combineRegexes(sqlTimeRegex);\n\nconst extractISOTimeOffsetAndIANAZone = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\nexport function parseSQL(s) {\n return parse(\n s,\n [sqlYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone]\n );\n}\n", "import { InvalidArgumentError, InvalidDurationError, InvalidUnitError } from \"./errors.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport Invalid from \"./impl/invalid.js\";\nimport Locale from \"./impl/locale.js\";\nimport { parseISODuration, parseISOTimeOnly } from \"./impl/regexParser.js\";\nimport {\n asNumber,\n hasOwnProperty,\n isNumber,\n isUndefined,\n normalizeObject,\n roundTo,\n} from \"./impl/util.js\";\nimport Settings from \"./settings.js\";\nimport DateTime from \"./datetime.js\";\n\nconst INVALID = \"Invalid Duration\";\n\n// unit conversion constants\nexport const lowOrderMatrix = {\n weeks: {\n days: 7,\n hours: 7 * 24,\n minutes: 7 * 24 * 60,\n seconds: 7 * 24 * 60 * 60,\n milliseconds: 7 * 24 * 60 * 60 * 1000,\n },\n days: {\n hours: 24,\n minutes: 24 * 60,\n seconds: 24 * 60 * 60,\n milliseconds: 24 * 60 * 60 * 1000,\n },\n hours: { minutes: 60, seconds: 60 * 60, milliseconds: 60 * 60 * 1000 },\n minutes: { seconds: 60, milliseconds: 60 * 1000 },\n seconds: { milliseconds: 1000 },\n },\n casualMatrix = {\n years: {\n quarters: 4,\n months: 12,\n weeks: 52,\n days: 365,\n hours: 365 * 24,\n minutes: 365 * 24 * 60,\n seconds: 365 * 24 * 60 * 60,\n milliseconds: 365 * 24 * 60 * 60 * 1000,\n },\n quarters: {\n months: 3,\n weeks: 13,\n days: 91,\n hours: 91 * 24,\n minutes: 91 * 24 * 60,\n seconds: 91 * 24 * 60 * 60,\n milliseconds: 91 * 24 * 60 * 60 * 1000,\n },\n months: {\n weeks: 4,\n days: 30,\n hours: 30 * 24,\n minutes: 30 * 24 * 60,\n seconds: 30 * 24 * 60 * 60,\n milliseconds: 30 * 24 * 60 * 60 * 1000,\n },\n\n ...lowOrderMatrix,\n },\n daysInYearAccurate = 146097.0 / 400,\n daysInMonthAccurate = 146097.0 / 4800,\n accurateMatrix = {\n years: {\n quarters: 4,\n months: 12,\n weeks: daysInYearAccurate / 7,\n days: daysInYearAccurate,\n hours: daysInYearAccurate * 24,\n minutes: daysInYearAccurate * 24 * 60,\n seconds: daysInYearAccurate * 24 * 60 * 60,\n milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000,\n },\n quarters: {\n months: 3,\n weeks: daysInYearAccurate / 28,\n days: daysInYearAccurate / 4,\n hours: (daysInYearAccurate * 24) / 4,\n minutes: (daysInYearAccurate * 24 * 60) / 4,\n seconds: (daysInYearAccurate * 24 * 60 * 60) / 4,\n milliseconds: (daysInYearAccurate * 24 * 60 * 60 * 1000) / 4,\n },\n months: {\n weeks: daysInMonthAccurate / 7,\n days: daysInMonthAccurate,\n hours: daysInMonthAccurate * 24,\n minutes: daysInMonthAccurate * 24 * 60,\n seconds: daysInMonthAccurate * 24 * 60 * 60,\n milliseconds: daysInMonthAccurate * 24 * 60 * 60 * 1000,\n },\n ...lowOrderMatrix,\n };\n\n// units ordered by size\nconst orderedUnits = [\n \"years\",\n \"quarters\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\",\n];\n\nconst reverseUnits = orderedUnits.slice(0).reverse();\n\n// clone really means \"create another instance just like this one, but with these changes\"\nfunction clone(dur, alts, clear = false) {\n // deep merge for vals\n const conf = {\n values: clear ? alts.values : { ...dur.values, ...(alts.values || {}) },\n loc: dur.loc.clone(alts.loc),\n conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy,\n matrix: alts.matrix || dur.matrix,\n };\n return new Duration(conf);\n}\n\nfunction durationToMillis(matrix, vals) {\n let sum = vals.milliseconds ?? 0;\n for (const unit of reverseUnits.slice(1)) {\n if (vals[unit]) {\n sum += vals[unit] * matrix[unit][\"milliseconds\"];\n }\n }\n return sum;\n}\n\n// NB: mutates parameters\nfunction normalizeValues(matrix, vals) {\n // the logic below assumes the overall value of the duration is positive\n // if this is not the case, factor is used to make it so\n const factor = durationToMillis(matrix, vals) < 0 ? -1 : 1;\n\n orderedUnits.reduceRight((previous, current) => {\n if (!isUndefined(vals[current])) {\n if (previous) {\n const previousVal = vals[previous] * factor;\n const conv = matrix[current][previous];\n\n // if (previousVal < 0):\n // lower order unit is negative (e.g. { years: 2, days: -2 })\n // normalize this by reducing the higher order unit by the appropriate amount\n // and increasing the lower order unit\n // this can never make the higher order unit negative, because this function only operates\n // on positive durations, so the amount of time represented by the lower order unit cannot\n // be larger than the higher order unit\n // else:\n // lower order unit is positive (e.g. { years: 2, days: 450 } or { years: -2, days: 450 })\n // in this case we attempt to convert as much as possible from the lower order unit into\n // the higher order one\n //\n // Math.floor takes care of both of these cases, rounding away from 0\n // if previousVal < 0 it makes the absolute value larger\n // if previousVal >= it makes the absolute value smaller\n const rollUp = Math.floor(previousVal / conv);\n vals[current] += rollUp * factor;\n vals[previous] -= rollUp * conv * factor;\n }\n return current;\n } else {\n return previous;\n }\n }, null);\n\n // try to convert any decimals into smaller units if possible\n // for example for { years: 2.5, days: 0, seconds: 0 } we want to get { years: 2, days: 182, hours: 12 }\n orderedUnits.reduce((previous, current) => {\n if (!isUndefined(vals[current])) {\n if (previous) {\n const fraction = vals[previous] % 1;\n vals[previous] -= fraction;\n vals[current] += fraction * matrix[previous][current];\n }\n return current;\n } else {\n return previous;\n }\n }, null);\n}\n\n// Remove all properties with a value of 0 from an object\nfunction removeZeroes(vals) {\n const newVals = {};\n for (const [key, value] of Object.entries(vals)) {\n if (value !== 0) {\n newVals[key] = value;\n }\n }\n return newVals;\n}\n\n/**\n * A Duration object represents a period of time, like \"2 months\" or \"1 day, 1 hour\". Conceptually, it's just a map of units to their quantities, accompanied by some additional configuration and methods for creating, parsing, interrogating, transforming, and formatting them. They can be used on their own or in conjunction with other Luxon types; for example, you can use {@link DateTime#plus} to add a Duration object to a DateTime, producing another DateTime.\n *\n * Here is a brief overview of commonly used methods and getters in Duration:\n *\n * * **Creation** To create a Duration, use {@link Duration.fromMillis}, {@link Duration.fromObject}, or {@link Duration.fromISO}.\n * * **Unit values** See the {@link Duration#years}, {@link Duration#months}, {@link Duration#weeks}, {@link Duration#days}, {@link Duration#hours}, {@link Duration#minutes}, {@link Duration#seconds}, {@link Duration#milliseconds} accessors.\n * * **Configuration** See {@link Duration#locale} and {@link Duration#numberingSystem} accessors.\n * * **Transformation** To create new Durations out of old ones use {@link Duration#plus}, {@link Duration#minus}, {@link Duration#normalize}, {@link Duration#set}, {@link Duration#reconfigure}, {@link Duration#shiftTo}, and {@link Duration#negate}.\n * * **Output** To convert the Duration into other representations, see {@link Duration#as}, {@link Duration#toISO}, {@link Duration#toFormat}, and {@link Duration#toJSON}\n *\n * There's are more methods documented below. In addition, for more information on subtler topics like internationalization and validity, see the external documentation.\n */\nexport default class Duration {\n /**\n * @private\n */\n constructor(config) {\n const accurate = config.conversionAccuracy === \"longterm\" || false;\n let matrix = accurate ? accurateMatrix : casualMatrix;\n\n if (config.matrix) {\n matrix = config.matrix;\n }\n\n /**\n * @access private\n */\n this.values = config.values;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.conversionAccuracy = accurate ? \"longterm\" : \"casual\";\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.matrix = matrix;\n /**\n * @access private\n */\n this.isLuxonDuration = true;\n }\n\n /**\n * Create Duration from a number of milliseconds.\n * @param {number} count of milliseconds\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n static fromMillis(count, opts) {\n return Duration.fromObject({ milliseconds: count }, opts);\n }\n\n /**\n * Create a Duration from a JavaScript object with keys like 'years' and 'hours'.\n * If this object is empty then a zero milliseconds duration is returned.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.years\n * @param {number} obj.quarters\n * @param {number} obj.months\n * @param {number} obj.weeks\n * @param {number} obj.days\n * @param {number} obj.hours\n * @param {number} obj.minutes\n * @param {number} obj.seconds\n * @param {number} obj.milliseconds\n * @param {Object} [opts=[]] - options for creating this Duration\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the custom conversion system to use\n * @return {Duration}\n */\n static fromObject(obj, opts = {}) {\n if (obj == null || typeof obj !== \"object\") {\n throw new InvalidArgumentError(\n `Duration.fromObject: argument expected to be an object, got ${\n obj === null ? \"null\" : typeof obj\n }`\n );\n }\n\n return new Duration({\n values: normalizeObject(obj, Duration.normalizeUnit),\n loc: Locale.fromObject(opts),\n conversionAccuracy: opts.conversionAccuracy,\n matrix: opts.matrix,\n });\n }\n\n /**\n * Create a Duration from DurationLike.\n *\n * @param {Object | number | Duration} durationLike\n * One of:\n * - object with keys like 'years' and 'hours'.\n * - number representing milliseconds\n * - Duration instance\n * @return {Duration}\n */\n static fromDurationLike(durationLike) {\n if (isNumber(durationLike)) {\n return Duration.fromMillis(durationLike);\n } else if (Duration.isDuration(durationLike)) {\n return durationLike;\n } else if (typeof durationLike === \"object\") {\n return Duration.fromObject(durationLike);\n } else {\n throw new InvalidArgumentError(\n `Unknown duration argument ${durationLike} of type ${typeof durationLike}`\n );\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 duration string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the preset conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromISO('P3Y6M1W4DT12H30M5S').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 }\n * @example Duration.fromISO('PT23H').toObject() //=> { hours: 23 }\n * @example Duration.fromISO('P5Y3M').toObject() //=> { years: 5, months: 3 }\n * @return {Duration}\n */\n static fromISO(text, opts) {\n const [parsed] = parseISODuration(text);\n if (parsed) {\n return Duration.fromObject(parsed, opts);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 time string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @example Duration.fromISOTime('11:22:33.444').toObject() //=> { hours: 11, minutes: 22, seconds: 33, milliseconds: 444 }\n * @example Duration.fromISOTime('11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @return {Duration}\n */\n static fromISOTime(text, opts) {\n const [parsed] = parseISOTimeOnly(text);\n if (parsed) {\n return Duration.fromObject(parsed, opts);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create an invalid Duration.\n * @param {string} reason - simple string of why this datetime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Duration}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Duration is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDurationError(invalid);\n } else {\n return new Duration({ invalid });\n }\n }\n\n /**\n * @private\n */\n static normalizeUnit(unit) {\n const normalized = {\n year: \"years\",\n years: \"years\",\n quarter: \"quarters\",\n quarters: \"quarters\",\n month: \"months\",\n months: \"months\",\n week: \"weeks\",\n weeks: \"weeks\",\n day: \"days\",\n days: \"days\",\n hour: \"hours\",\n hours: \"hours\",\n minute: \"minutes\",\n minutes: \"minutes\",\n second: \"seconds\",\n seconds: \"seconds\",\n millisecond: \"milliseconds\",\n milliseconds: \"milliseconds\",\n }[unit ? unit.toLowerCase() : unit];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n }\n\n /**\n * Check if an object is a Duration. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDuration(o) {\n return (o && o.isLuxonDuration) || false;\n }\n\n /**\n * Get the locale of a Duration, such 'en-GB'\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a Duration, such 'beng'. The numbering system is used when formatting the Duration\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Returns a string representation of this Duration formatted according to the specified format string. You may use these tokens:\n * * `S` for milliseconds\n * * `s` for seconds\n * * `m` for minutes\n * * `h` for hours\n * * `d` for days\n * * `w` for weeks\n * * `M` for months\n * * `y` for years\n * Notes:\n * * Add padding by repeating the token, e.g. \"yy\" pads the years to two digits, \"hhhh\" pads the hours out to four digits\n * * Tokens can be escaped by wrapping with single quotes.\n * * The duration will be converted to the set of units in the format string using {@link Duration#shiftTo} and the Durations's conversion accuracy setting.\n * @param {string} fmt - the format string\n * @param {Object} opts - options\n * @param {boolean} [opts.floor=true] - floor numerical values\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"y d s\") //=> \"1 6 2\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"yy dd sss\") //=> \"01 06 002\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"M S\") //=> \"12 518402000\"\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n // reverse-compat since 1.2; we always round down now, never up, and we do it by default\n const fmtOpts = {\n ...opts,\n floor: opts.round !== false && opts.floor !== false,\n };\n return this.isValid\n ? Formatter.create(this.loc, fmtOpts).formatDurationFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a string representation of a Duration with all units included.\n * To modify its behavior, use `listStyle` and any Intl.NumberFormat option, though `unitDisplay` is especially relevant.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#options\n * @param {Object} opts - Formatting options. Accepts the same keys as the options parameter of the native `Intl.NumberFormat` constructor, as well as `listStyle`.\n * @param {string} [opts.listStyle='narrow'] - How to format the merged list. Corresponds to the `style` property of the options parameter of the native `Intl.ListFormat` constructor.\n * @example\n * ```js\n * var dur = Duration.fromObject({ days: 1, hours: 5, minutes: 6 })\n * dur.toHuman() //=> '1 day, 5 hours, 6 minutes'\n * dur.toHuman({ listStyle: \"long\" }) //=> '1 day, 5 hours, and 6 minutes'\n * dur.toHuman({ unitDisplay: \"short\" }) //=> '1 day, 5 hr, 6 min'\n * ```\n */\n toHuman(opts = {}) {\n if (!this.isValid) return INVALID;\n\n const l = orderedUnits\n .map((unit) => {\n const val = this.values[unit];\n if (isUndefined(val)) {\n return null;\n }\n return this.loc\n .numberFormatter({ style: \"unit\", unitDisplay: \"long\", ...opts, unit: unit.slice(0, -1) })\n .format(val);\n })\n .filter((n) => n);\n\n return this.loc\n .listFormatter({ type: \"conjunction\", style: opts.listStyle || \"narrow\", ...opts })\n .format(l);\n }\n\n /**\n * Returns a JavaScript object with this Duration's values.\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 }\n * @return {Object}\n */\n toObject() {\n if (!this.isValid) return {};\n return { ...this.values };\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> 'P3YT45S'\n * @example Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> 'P4MT45S'\n * @example Duration.fromObject({ months: 5 }).toISO() //=> 'P5M'\n * @example Duration.fromObject({ minutes: 5 }).toISO() //=> 'PT5M'\n * @example Duration.fromObject({ milliseconds: 6 }).toISO() //=> 'PT0.006S'\n * @return {string}\n */\n toISO() {\n // we could use the formatter, but this is an easier way to get the minimum string\n if (!this.isValid) return null;\n\n let s = \"P\";\n if (this.years !== 0) s += this.years + \"Y\";\n if (this.months !== 0 || this.quarters !== 0) s += this.months + this.quarters * 3 + \"M\";\n if (this.weeks !== 0) s += this.weeks + \"W\";\n if (this.days !== 0) s += this.days + \"D\";\n if (this.hours !== 0 || this.minutes !== 0 || this.seconds !== 0 || this.milliseconds !== 0)\n s += \"T\";\n if (this.hours !== 0) s += this.hours + \"H\";\n if (this.minutes !== 0) s += this.minutes + \"M\";\n if (this.seconds !== 0 || this.milliseconds !== 0)\n // this will handle \"floating point madness\" by removing extra decimal places\n // https://stackoverflow.com/questions/588004/is-floating-point-math-broken\n s += roundTo(this.seconds + this.milliseconds / 1000, 3) + \"S\";\n if (s === \"P\") s += \"T0S\";\n return s;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration, formatted as a time of day.\n * Note that this will return null if the duration is invalid, negative, or equal to or greater than 24 hours.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example Duration.fromObject({ hours: 11 }).toISOTime() //=> '11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressMilliseconds: true }) //=> '11:00:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressSeconds: true }) //=> '11:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ includePrefix: true }) //=> 'T11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ format: 'basic' }) //=> '110000.000'\n * @return {string}\n */\n toISOTime(opts = {}) {\n if (!this.isValid) return null;\n\n const millis = this.toMillis();\n if (millis < 0 || millis >= 86400000) return null;\n\n opts = {\n suppressMilliseconds: false,\n suppressSeconds: false,\n includePrefix: false,\n format: \"extended\",\n ...opts,\n includeOffset: false,\n };\n\n const dateTime = DateTime.fromMillis(millis, { zone: \"UTC\" });\n return dateTime.toISOTime(opts);\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in debugging.\n * @return {string}\n */\n toString() {\n return this.toISO();\n }\n\n /**\n * Returns a string representation of this Duration appropriate for the REPL.\n * @return {string}\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n if (this.isValid) {\n return `Duration { values: ${JSON.stringify(this.values)} }`;\n } else {\n return `Duration { Invalid, reason: ${this.invalidReason} }`;\n }\n }\n\n /**\n * Returns an milliseconds value of this Duration.\n * @return {number}\n */\n toMillis() {\n if (!this.isValid) return NaN;\n\n return durationToMillis(this.matrix, this.values);\n }\n\n /**\n * Returns an milliseconds value of this Duration. Alias of {@link toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Make this Duration longer by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n plus(duration) {\n if (!this.isValid) return this;\n\n const dur = Duration.fromDurationLike(duration),\n result = {};\n\n for (const k of orderedUnits) {\n if (hasOwnProperty(dur.values, k) || hasOwnProperty(this.values, k)) {\n result[k] = dur.get(k) + this.get(k);\n }\n }\n\n return clone(this, { values: result }, true);\n }\n\n /**\n * Make this Duration shorter by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n minus(duration) {\n if (!this.isValid) return this;\n\n const dur = Duration.fromDurationLike(duration);\n return this.plus(dur.negate());\n }\n\n /**\n * Scale this Duration by the specified amount. Return a newly-constructed Duration.\n * @param {function} fn - The function to apply to each unit. Arity is 1 or 2: the value of the unit and, optionally, the unit name. Must return a number.\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits(x => x * 2) //=> { hours: 2, minutes: 60 }\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits((x, u) => u === \"hours\" ? x * 2 : x) //=> { hours: 2, minutes: 30 }\n * @return {Duration}\n */\n mapUnits(fn) {\n if (!this.isValid) return this;\n const result = {};\n for (const k of Object.keys(this.values)) {\n result[k] = asNumber(fn(this.values[k], k));\n }\n return clone(this, { values: result }, true);\n }\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example Duration.fromObject({years: 2, days: 3}).get('years') //=> 2\n * @example Duration.fromObject({years: 2, days: 3}).get('months') //=> 0\n * @example Duration.fromObject({years: 2, days: 3}).get('days') //=> 3\n * @return {number}\n */\n get(unit) {\n return this[Duration.normalizeUnit(unit)];\n }\n\n /**\n * \"Set\" the values of specified units. Return a newly-constructed Duration.\n * @param {Object} values - a mapping of units to numbers\n * @example dur.set({ years: 2017 })\n * @example dur.set({ hours: 8, minutes: 30 })\n * @return {Duration}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const mixed = { ...this.values, ...normalizeObject(values, Duration.normalizeUnit) };\n return clone(this, { values: mixed });\n }\n\n /**\n * \"Set\" the locale and/or numberingSystem. Returns a newly-constructed Duration.\n * @example dur.reconfigure({ locale: 'en-GB' })\n * @return {Duration}\n */\n reconfigure({ locale, numberingSystem, conversionAccuracy, matrix } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem });\n const opts = { loc, matrix, conversionAccuracy };\n return clone(this, opts);\n }\n\n /**\n * Return the length of the duration in the specified unit.\n * @param {string} unit - a unit such as 'minutes' or 'days'\n * @example Duration.fromObject({years: 1}).as('days') //=> 365\n * @example Duration.fromObject({years: 1}).as('months') //=> 12\n * @example Duration.fromObject({hours: 60}).as('days') //=> 2.5\n * @return {number}\n */\n as(unit) {\n return this.isValid ? this.shiftTo(unit).get(unit) : NaN;\n }\n\n /**\n * Reduce this Duration to its canonical representation in its current units.\n * Assuming the overall value of the Duration is positive, this means:\n * - excessive values for lower-order units are converted to higher-order units (if possible, see first and second example)\n * - negative lower-order units are converted to higher order units (there must be such a higher order unit, otherwise\n * the overall value would be negative, see third example)\n * - fractional values for higher-order units are converted to lower-order units (if possible, see fourth example)\n *\n * If the overall value is negative, the result of this method is equivalent to `this.negate().normalize().negate()`.\n * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 }\n * @example Duration.fromObject({ days: 5000 }).normalize().toObject() //=> { days: 5000 }\n * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 }\n * @example Duration.fromObject({ years: 2.5, days: 0, hours: 0 }).normalize().toObject() //=> { years: 2, days: 182, hours: 12 }\n * @return {Duration}\n */\n normalize() {\n if (!this.isValid) return this;\n const vals = this.toObject();\n normalizeValues(this.matrix, vals);\n return clone(this, { values: vals }, true);\n }\n\n /**\n * Rescale units to its largest representation\n * @example Duration.fromObject({ milliseconds: 90000 }).rescale().toObject() //=> { minutes: 1, seconds: 30 }\n * @return {Duration}\n */\n rescale() {\n if (!this.isValid) return this;\n const vals = removeZeroes(this.normalize().shiftToAll().toObject());\n return clone(this, { values: vals }, true);\n }\n\n /**\n * Convert this Duration into its representation in a different set of units.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo('minutes', 'milliseconds').toObject() //=> { minutes: 60, milliseconds: 30000 }\n * @return {Duration}\n */\n shiftTo(...units) {\n if (!this.isValid) return this;\n\n if (units.length === 0) {\n return this;\n }\n\n units = units.map((u) => Duration.normalizeUnit(u));\n\n const built = {},\n accumulated = {},\n vals = this.toObject();\n let lastUnit;\n\n for (const k of orderedUnits) {\n if (units.indexOf(k) >= 0) {\n lastUnit = k;\n\n let own = 0;\n\n // anything we haven't boiled down yet should get boiled to this unit\n for (const ak in accumulated) {\n own += this.matrix[ak][k] * accumulated[ak];\n accumulated[ak] = 0;\n }\n\n // plus anything that's already in this unit\n if (isNumber(vals[k])) {\n own += vals[k];\n }\n\n // only keep the integer part for now in the hopes of putting any decimal part\n // into a smaller unit later\n const i = Math.trunc(own);\n built[k] = i;\n accumulated[k] = (own * 1000 - i * 1000) / 1000;\n\n // otherwise, keep it in the wings to boil it later\n } else if (isNumber(vals[k])) {\n accumulated[k] = vals[k];\n }\n }\n\n // anything leftover becomes the decimal for the last unit\n // lastUnit must be defined since units is not empty\n for (const key in accumulated) {\n if (accumulated[key] !== 0) {\n built[lastUnit] +=\n key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key];\n }\n }\n\n normalizeValues(this.matrix, built);\n return clone(this, { values: built }, true);\n }\n\n /**\n * Shift this Duration to all available units.\n * Same as shiftTo(\"years\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", \"seconds\", \"milliseconds\")\n * @return {Duration}\n */\n shiftToAll() {\n if (!this.isValid) return this;\n return this.shiftTo(\n \"years\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\"\n );\n }\n\n /**\n * Return the negative of this Duration.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 }\n * @return {Duration}\n */\n negate() {\n if (!this.isValid) return this;\n const negated = {};\n for (const k of Object.keys(this.values)) {\n negated[k] = this.values[k] === 0 ? 0 : -this.values[k];\n }\n return clone(this, { values: negated }, true);\n }\n\n /**\n * Get the years.\n * @type {number}\n */\n get years() {\n return this.isValid ? this.values.years || 0 : NaN;\n }\n\n /**\n * Get the quarters.\n * @type {number}\n */\n get quarters() {\n return this.isValid ? this.values.quarters || 0 : NaN;\n }\n\n /**\n * Get the months.\n * @type {number}\n */\n get months() {\n return this.isValid ? this.values.months || 0 : NaN;\n }\n\n /**\n * Get the weeks\n * @type {number}\n */\n get weeks() {\n return this.isValid ? this.values.weeks || 0 : NaN;\n }\n\n /**\n * Get the days.\n * @type {number}\n */\n get days() {\n return this.isValid ? this.values.days || 0 : NaN;\n }\n\n /**\n * Get the hours.\n * @type {number}\n */\n get hours() {\n return this.isValid ? this.values.hours || 0 : NaN;\n }\n\n /**\n * Get the minutes.\n * @type {number}\n */\n get minutes() {\n return this.isValid ? this.values.minutes || 0 : NaN;\n }\n\n /**\n * Get the seconds.\n * @return {number}\n */\n get seconds() {\n return this.isValid ? this.values.seconds || 0 : NaN;\n }\n\n /**\n * Get the milliseconds.\n * @return {number}\n */\n get milliseconds() {\n return this.isValid ? this.values.milliseconds || 0 : NaN;\n }\n\n /**\n * Returns whether the Duration is invalid. Invalid durations are returned by diff operations\n * on invalid DateTimes or Intervals.\n * @return {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this Duration became invalid, or null if the Duration is valid\n * @return {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Duration became invalid, or null if the Duration is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Equality check\n * Two Durations are equal iff they have the same units and the same values for each unit.\n * @param {Duration} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n if (!this.loc.equals(other.loc)) {\n return false;\n }\n\n function eq(v1, v2) {\n // Consider 0 and undefined as equal\n if (v1 === undefined || v1 === 0) return v2 === undefined || v2 === 0;\n return v1 === v2;\n }\n\n for (const u of orderedUnits) {\n if (!eq(this.values[u], other.values[u])) {\n return false;\n }\n }\n return true;\n }\n}\n", "import DateTime, { friendlyDateTime } from \"./datetime.js\";\nimport Duration from \"./duration.js\";\nimport Settings from \"./settings.js\";\nimport { InvalidArgumentError, InvalidIntervalError } from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport * as Formats from \"./impl/formats.js\";\n\nconst INVALID = \"Invalid Interval\";\n\n// checks if the start is equal to or before the end\nfunction validateStartEnd(start, end) {\n if (!start || !start.isValid) {\n return Interval.invalid(\"missing or invalid start\");\n } else if (!end || !end.isValid) {\n return Interval.invalid(\"missing or invalid end\");\n } else if (end < start) {\n return Interval.invalid(\n \"end before start\",\n `The end of an interval must be after its start, but you had start=${start.toISO()} and end=${end.toISO()}`\n );\n } else {\n return null;\n }\n}\n\n/**\n * An Interval object represents a half-open interval of time, where each endpoint is a {@link DateTime}. Conceptually, it's a container for those two endpoints, accompanied by methods for creating, parsing, interrogating, comparing, transforming, and formatting them.\n *\n * Here is a brief overview of the most commonly used methods and getters in Interval:\n *\n * * **Creation** To create an Interval, use {@link Interval.fromDateTimes}, {@link Interval.after}, {@link Interval.before}, or {@link Interval.fromISO}.\n * * **Accessors** Use {@link Interval#start} and {@link Interval#end} to get the start and end.\n * * **Interrogation** To analyze the Interval, use {@link Interval#count}, {@link Interval#length}, {@link Interval#hasSame}, {@link Interval#contains}, {@link Interval#isAfter}, or {@link Interval#isBefore}.\n * * **Transformation** To create other Intervals out of this one, use {@link Interval#set}, {@link Interval#splitAt}, {@link Interval#splitBy}, {@link Interval#divideEqually}, {@link Interval.merge}, {@link Interval.xor}, {@link Interval#union}, {@link Interval#intersection}, or {@link Interval#difference}.\n * * **Comparison** To compare this Interval to another one, use {@link Interval#equals}, {@link Interval#overlaps}, {@link Interval#abutsStart}, {@link Interval#abutsEnd}, {@link Interval#engulfs}\n * * **Output** To convert the Interval into other representations, see {@link Interval#toString}, {@link Interval#toLocaleString}, {@link Interval#toISO}, {@link Interval#toISODate}, {@link Interval#toISOTime}, {@link Interval#toFormat}, and {@link Interval#toDuration}.\n */\nexport default class Interval {\n /**\n * @private\n */\n constructor(config) {\n /**\n * @access private\n */\n this.s = config.start;\n /**\n * @access private\n */\n this.e = config.end;\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.isLuxonInterval = true;\n }\n\n /**\n * Create an invalid Interval.\n * @param {string} reason - simple string of why this Interval is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Interval}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Interval is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidIntervalError(invalid);\n } else {\n return new Interval({ invalid });\n }\n }\n\n /**\n * Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end.\n * @param {DateTime|Date|Object} start\n * @param {DateTime|Date|Object} end\n * @return {Interval}\n */\n static fromDateTimes(start, end) {\n const builtStart = friendlyDateTime(start),\n builtEnd = friendlyDateTime(end);\n\n const validateError = validateStartEnd(builtStart, builtEnd);\n\n if (validateError == null) {\n return new Interval({\n start: builtStart,\n end: builtEnd,\n });\n } else {\n return validateError;\n }\n }\n\n /**\n * Create an Interval from a start DateTime and a Duration to extend to.\n * @param {DateTime|Date|Object} start\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static after(start, duration) {\n const dur = Duration.fromDurationLike(duration),\n dt = friendlyDateTime(start);\n return Interval.fromDateTimes(dt, dt.plus(dur));\n }\n\n /**\n * Create an Interval from an end DateTime and a Duration to extend backwards to.\n * @param {DateTime|Date|Object} end\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static before(end, duration) {\n const dur = Duration.fromDurationLike(duration),\n dt = friendlyDateTime(end);\n return Interval.fromDateTimes(dt.minus(dur), dt);\n }\n\n /**\n * Create an Interval from an ISO 8601 string.\n * Accepts `/`, `/`, and `/` formats.\n * @param {string} text - the ISO string to parse\n * @param {Object} [opts] - options to pass {@link DateTime#fromISO} and optionally {@link Duration#fromISO}\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {Interval}\n */\n static fromISO(text, opts) {\n const [s, e] = (text || \"\").split(\"/\", 2);\n if (s && e) {\n let start, startIsValid;\n try {\n start = DateTime.fromISO(s, opts);\n startIsValid = start.isValid;\n } catch (e) {\n startIsValid = false;\n }\n\n let end, endIsValid;\n try {\n end = DateTime.fromISO(e, opts);\n endIsValid = end.isValid;\n } catch (e) {\n endIsValid = false;\n }\n\n if (startIsValid && endIsValid) {\n return Interval.fromDateTimes(start, end);\n }\n\n if (startIsValid) {\n const dur = Duration.fromISO(e, opts);\n if (dur.isValid) {\n return Interval.after(start, dur);\n }\n } else if (endIsValid) {\n const dur = Duration.fromISO(s, opts);\n if (dur.isValid) {\n return Interval.before(end, dur);\n }\n }\n }\n return Interval.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n\n /**\n * Check if an object is an Interval. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isInterval(o) {\n return (o && o.isLuxonInterval) || false;\n }\n\n /**\n * Returns the start of the Interval\n * @type {DateTime}\n */\n get start() {\n return this.isValid ? this.s : null;\n }\n\n /**\n * Returns the end of the Interval\n * @type {DateTime}\n */\n get end() {\n return this.isValid ? this.e : null;\n }\n\n /**\n * Returns whether this Interval's end is at least its start, meaning that the Interval isn't 'backwards'.\n * @type {boolean}\n */\n get isValid() {\n return this.invalidReason === null;\n }\n\n /**\n * Returns an error code if this Interval is invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Interval became invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Returns the length of the Interval in the specified unit.\n * @param {string} unit - the unit (such as 'hours' or 'days') to return the length in.\n * @return {number}\n */\n length(unit = \"milliseconds\") {\n return this.isValid ? this.toDuration(...[unit]).get(unit) : NaN;\n }\n\n /**\n * Returns the count of minutes, hours, days, months, or years included in the Interval, even in part.\n * Unlike {@link Interval#length} this counts sections of the calendar, not periods of time, e.g. specifying 'day'\n * asks 'what dates are included in this interval?', not 'how many days long is this interval?'\n * @param {string} [unit='milliseconds'] - the unit of time to count.\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week; this operation will always use the locale of the start DateTime\n * @return {number}\n */\n count(unit = \"milliseconds\", opts) {\n if (!this.isValid) return NaN;\n const start = this.start.startOf(unit, opts);\n let end;\n if (opts?.useLocaleWeeks) {\n end = this.end.reconfigure({ locale: start.locale });\n } else {\n end = this.end;\n }\n end = end.startOf(unit, opts);\n return Math.floor(end.diff(start, unit).get(unit)) + (end.valueOf() !== this.end.valueOf());\n }\n\n /**\n * Returns whether this Interval's start and end are both in the same unit of time\n * @param {string} unit - the unit of time to check sameness on\n * @return {boolean}\n */\n hasSame(unit) {\n return this.isValid ? this.isEmpty() || this.e.minus(1).hasSame(this.s, unit) : false;\n }\n\n /**\n * Return whether this Interval has the same start and end DateTimes.\n * @return {boolean}\n */\n isEmpty() {\n return this.s.valueOf() === this.e.valueOf();\n }\n\n /**\n * Return whether this Interval's start is after the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isAfter(dateTime) {\n if (!this.isValid) return false;\n return this.s > dateTime;\n }\n\n /**\n * Return whether this Interval's end is before the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isBefore(dateTime) {\n if (!this.isValid) return false;\n return this.e <= dateTime;\n }\n\n /**\n * Return whether this Interval contains the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n contains(dateTime) {\n if (!this.isValid) return false;\n return this.s <= dateTime && this.e > dateTime;\n }\n\n /**\n * \"Sets\" the start and/or end dates. Returns a newly-constructed Interval.\n * @param {Object} values - the values to set\n * @param {DateTime} values.start - the starting DateTime\n * @param {DateTime} values.end - the ending DateTime\n * @return {Interval}\n */\n set({ start, end } = {}) {\n if (!this.isValid) return this;\n return Interval.fromDateTimes(start || this.s, end || this.e);\n }\n\n /**\n * Split this Interval at each of the specified DateTimes\n * @param {...DateTime} dateTimes - the unit of time to count.\n * @return {Array}\n */\n splitAt(...dateTimes) {\n if (!this.isValid) return [];\n const sorted = dateTimes\n .map(friendlyDateTime)\n .filter((d) => this.contains(d))\n .sort((a, b) => a.toMillis() - b.toMillis()),\n results = [];\n let { s } = this,\n i = 0;\n\n while (s < this.e) {\n const added = sorted[i] || this.e,\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n i += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into smaller Intervals, each of the specified length.\n * Left over time is grouped into a smaller interval\n * @param {Duration|Object|number} duration - The length of each resulting interval.\n * @return {Array}\n */\n splitBy(duration) {\n const dur = Duration.fromDurationLike(duration);\n\n if (!this.isValid || !dur.isValid || dur.as(\"milliseconds\") === 0) {\n return [];\n }\n\n let { s } = this,\n idx = 1,\n next;\n\n const results = [];\n while (s < this.e) {\n const added = this.start.plus(dur.mapUnits((x) => x * idx));\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n idx += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into the specified number of smaller intervals.\n * @param {number} numberOfParts - The number of Intervals to divide the Interval into.\n * @return {Array}\n */\n divideEqually(numberOfParts) {\n if (!this.isValid) return [];\n return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts);\n }\n\n /**\n * Return whether this Interval overlaps with the specified Interval\n * @param {Interval} other\n * @return {boolean}\n */\n overlaps(other) {\n return this.e > other.s && this.s < other.e;\n }\n\n /**\n * Return whether this Interval's end is adjacent to the specified Interval's start.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsStart(other) {\n if (!this.isValid) return false;\n return +this.e === +other.s;\n }\n\n /**\n * Return whether this Interval's start is adjacent to the specified Interval's end.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsEnd(other) {\n if (!this.isValid) return false;\n return +other.e === +this.s;\n }\n\n /**\n * Returns true if this Interval fully contains the specified Interval, specifically if the intersect (of this Interval and the other Interval) is equal to the other Interval; false otherwise.\n * @param {Interval} other\n * @return {boolean}\n */\n engulfs(other) {\n if (!this.isValid) return false;\n return this.s <= other.s && this.e >= other.e;\n }\n\n /**\n * Return whether this Interval has the same start and end as the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n return this.s.equals(other.s) && this.e.equals(other.e);\n }\n\n /**\n * Return an Interval representing the intersection of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals.\n * Returns null if the intersection is empty, meaning, the intervals don't intersect.\n * @param {Interval} other\n * @return {Interval}\n */\n intersection(other) {\n if (!this.isValid) return this;\n const s = this.s > other.s ? this.s : other.s,\n e = this.e < other.e ? this.e : other.e;\n\n if (s >= e) {\n return null;\n } else {\n return Interval.fromDateTimes(s, e);\n }\n }\n\n /**\n * Return an Interval representing the union of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals.\n * @param {Interval} other\n * @return {Interval}\n */\n union(other) {\n if (!this.isValid) return this;\n const s = this.s < other.s ? this.s : other.s,\n e = this.e > other.e ? this.e : other.e;\n return Interval.fromDateTimes(s, e);\n }\n\n /**\n * Merge an array of Intervals into a equivalent minimal set of Intervals.\n * Combines overlapping and adjacent Intervals.\n * @param {Array} intervals\n * @return {Array}\n */\n static merge(intervals) {\n const [found, final] = intervals\n .sort((a, b) => a.s - b.s)\n .reduce(\n ([sofar, current], item) => {\n if (!current) {\n return [sofar, item];\n } else if (current.overlaps(item) || current.abutsStart(item)) {\n return [sofar, current.union(item)];\n } else {\n return [sofar.concat([current]), item];\n }\n },\n [[], null]\n );\n if (final) {\n found.push(final);\n }\n return found;\n }\n\n /**\n * Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals.\n * @param {Array} intervals\n * @return {Array}\n */\n static xor(intervals) {\n let start = null,\n currentCount = 0;\n const results = [],\n ends = intervals.map((i) => [\n { time: i.s, type: \"s\" },\n { time: i.e, type: \"e\" },\n ]),\n flattened = Array.prototype.concat(...ends),\n arr = flattened.sort((a, b) => a.time - b.time);\n\n for (const i of arr) {\n currentCount += i.type === \"s\" ? 1 : -1;\n\n if (currentCount === 1) {\n start = i.time;\n } else {\n if (start && +start !== +i.time) {\n results.push(Interval.fromDateTimes(start, i.time));\n }\n\n start = null;\n }\n }\n\n return Interval.merge(results);\n }\n\n /**\n * Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals.\n * @param {...Interval} intervals\n * @return {Array}\n */\n difference(...intervals) {\n return Interval.xor([this].concat(intervals))\n .map((i) => this.intersection(i))\n .filter((i) => i && !i.isEmpty());\n }\n\n /**\n * Returns a string representation of this Interval appropriate for debugging.\n * @return {string}\n */\n toString() {\n if (!this.isValid) return INVALID;\n return `[${this.s.toISO()} \u2013 ${this.e.toISO()})`;\n }\n\n /**\n * Returns a string representation of this Interval appropriate for the REPL.\n * @return {string}\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n if (this.isValid) {\n return `Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`;\n } else {\n return `Interval { Invalid, reason: ${this.invalidReason} }`;\n }\n }\n\n /**\n * Returns a localized string representing this Interval. Accepts the same options as the\n * Intl.DateTimeFormat constructor and any presets defined by Luxon, such as\n * {@link DateTime.DATE_FULL} or {@link DateTime.TIME_SIMPLE}. The exact behavior of this method\n * is browser-specific, but in general it will return an appropriate representation of the\n * Interval in the assigned locale. Defaults to the system's locale if no locale has been\n * specified.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {Object} [formatOpts=DateTime.DATE_SHORT] - Either a DateTime preset or\n * Intl.DateTimeFormat constructor options.\n * @param {Object} opts - Options to override the configuration of the start DateTime.\n * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(); //=> 11/7/2022 \u2013 11/8/2022\n * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL); //=> November 7 \u2013 8, 2022\n * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL, { locale: 'fr-FR' }); //=> 7\u20138 novembre 2022\n * @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString(DateTime.TIME_SIMPLE); //=> 6:00 \u2013 8:00 PM\n * @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> Mon, Nov 07, 6:00 \u2013 8:00 p\n * @return {string}\n */\n toLocaleString(formatOpts = Formats.DATE_SHORT, opts = {}) {\n return this.isValid\n ? Formatter.create(this.s.loc.clone(opts), formatOpts).formatInterval(this)\n : INVALID;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Interval.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime#toISO}\n * @return {string}\n */\n toISO(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISO(opts)}/${this.e.toISO(opts)}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of date of this Interval.\n * The time components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {string}\n */\n toISODate() {\n if (!this.isValid) return INVALID;\n return `${this.s.toISODate()}/${this.e.toISODate()}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of time of this Interval.\n * The date components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime#toISO}\n * @return {string}\n */\n toISOTime(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISOTime(opts)}/${this.e.toISOTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this Interval formatted according to the specified format\n * string. **You may not want this.** See {@link Interval#toLocaleString} for a more flexible\n * formatting tool.\n * @param {string} dateFormat - The format string. This string formats the start and end time.\n * See {@link DateTime#toFormat} for details.\n * @param {Object} opts - Options.\n * @param {string} [opts.separator = ' \u2013 '] - A separator to place between the start and end\n * representations.\n * @return {string}\n */\n toFormat(dateFormat, { separator = \" \u2013 \" } = {}) {\n if (!this.isValid) return INVALID;\n return `${this.s.toFormat(dateFormat)}${separator}${this.e.toFormat(dateFormat)}`;\n }\n\n /**\n * Return a Duration representing the time spanned by this interval.\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 }\n * @return {Duration}\n */\n toDuration(unit, opts) {\n if (!this.isValid) {\n return Duration.invalid(this.invalidReason);\n }\n return this.e.diff(this.s, unit, opts);\n }\n\n /**\n * Run mapFn on the interval start and end, returning a new Interval from the resulting DateTimes\n * @param {function} mapFn\n * @return {Interval}\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.toUTC())\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.plus({ hours: 2 }))\n */\n mapEndpoints(mapFn) {\n return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e));\n }\n}\n", "import DateTime from \"./datetime.js\";\nimport Settings from \"./settings.js\";\nimport Locale from \"./impl/locale.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\n\nimport { hasLocaleWeekInfo, hasRelative } from \"./impl/util.js\";\n\n/**\n * The Info class contains static methods for retrieving general time and date related data. For example, it has methods for finding out if a time zone has a DST, for listing the months in any supported locale, and for discovering which of Luxon features are available in the current environment.\n */\nexport default class Info {\n /**\n * Return whether the specified zone contains a DST.\n * @param {string|Zone} [zone='local'] - Zone to check. Defaults to the environment's local zone.\n * @return {boolean}\n */\n static hasDST(zone = Settings.defaultZone) {\n const proto = DateTime.now().setZone(zone).set({ month: 12 });\n\n return !zone.isUniversal && proto.offset !== proto.set({ month: 6 }).offset;\n }\n\n /**\n * Return whether the specified zone is a valid IANA specifier.\n * @param {string} zone - Zone to check\n * @return {boolean}\n */\n static isValidIANAZone(zone) {\n return IANAZone.isValidZone(zone);\n }\n\n /**\n * Converts the input into a {@link Zone} instance.\n *\n * * If `input` is already a Zone instance, it is returned unchanged.\n * * If `input` is a string containing a valid time zone name, a Zone instance\n * with that name is returned.\n * * If `input` is a string that doesn't refer to a known time zone, a Zone\n * instance with {@link Zone#isValid} == false is returned.\n * * If `input is a number, a Zone instance with the specified fixed offset\n * in minutes is returned.\n * * If `input` is `null` or `undefined`, the default zone is returned.\n * @param {string|Zone|number} [input] - the value to be converted\n * @return {Zone}\n */\n static normalizeZone(input) {\n return normalizeZone(input, Settings.defaultZone);\n }\n\n /**\n * Get the weekday on which the week starts according to the given locale.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @returns {number} the start of the week, 1 for Monday through 7 for Sunday\n */\n static getStartOfWeek({ locale = null, locObj = null } = {}) {\n return (locObj || Locale.create(locale)).getStartOfWeek();\n }\n\n /**\n * Get the minimum number of days necessary in a week before it is considered part of the next year according\n * to the given locale.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @returns {number}\n */\n static getMinimumDaysInFirstWeek({ locale = null, locObj = null } = {}) {\n return (locObj || Locale.create(locale)).getMinDaysInFirstWeek();\n }\n\n /**\n * Get the weekdays, which are considered the weekend according to the given locale\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @returns {number[]} an array of weekdays, 1 for Monday through 7 for Sunday\n */\n static getWeekendWeekdays({ locale = null, locObj = null } = {}) {\n // copy the array, because we cache it internally\n return (locObj || Locale.create(locale)).getWeekendDays().slice();\n }\n\n /**\n * Return an array of standalone month names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @example Info.months()[0] //=> 'January'\n * @example Info.months('short')[0] //=> 'Jan'\n * @example Info.months('numeric')[0] //=> '1'\n * @example Info.months('short', { locale: 'fr-CA' } )[0] //=> 'janv.'\n * @example Info.months('numeric', { locale: 'ar' })[0] //=> '\u0661'\n * @example Info.months('long', { outputCalendar: 'islamic' })[0] //=> 'Rabi\u02BB I'\n * @return {Array}\n */\n static months(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null, outputCalendar = \"gregory\" } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length);\n }\n\n /**\n * Return an array of format month names.\n * Format months differ from standalone months in that they're meant to appear next to the day of the month. In some languages, that\n * changes the string.\n * See {@link Info#months}\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @return {Array}\n */\n static monthsFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null, outputCalendar = \"gregory\" } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length, true);\n }\n\n /**\n * Return an array of standalone week names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the weekday representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @example Info.weekdays()[0] //=> 'Monday'\n * @example Info.weekdays('short')[0] //=> 'Mon'\n * @example Info.weekdays('short', { locale: 'fr-CA' })[0] //=> 'lun.'\n * @example Info.weekdays('short', { locale: 'ar' })[0] //=> '\u0627\u0644\u0627\u062B\u0646\u064A\u0646'\n * @return {Array}\n */\n static weekdays(length = \"long\", { locale = null, numberingSystem = null, locObj = null } = {}) {\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length);\n }\n\n /**\n * Return an array of format week names.\n * Format weekdays differ from standalone weekdays in that they're meant to appear next to more date information. In some languages, that\n * changes the string.\n * See {@link Info#weekdays}\n * @param {string} [length='long'] - the length of the month representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale=null] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @return {Array}\n */\n static weekdaysFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length, true);\n }\n\n /**\n * Return an array of meridiems.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.meridiems() //=> [ 'AM', 'PM' ]\n * @example Info.meridiems({ locale: 'my' }) //=> [ '\u1014\u1036\u1014\u1000\u103A', '\u100A\u1014\u1031' ]\n * @return {Array}\n */\n static meridiems({ locale = null } = {}) {\n return Locale.create(locale).meridiems();\n }\n\n /**\n * Return an array of eras, such as ['BC', 'AD']. The locale can be specified, but the calendar system is always Gregorian.\n * @param {string} [length='short'] - the length of the era representation, such as \"short\" or \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.eras() //=> [ 'BC', 'AD' ]\n * @example Info.eras('long') //=> [ 'Before Christ', 'Anno Domini' ]\n * @example Info.eras('long', { locale: 'fr' }) //=> [ 'avant J\u00E9sus-Christ', 'apr\u00E8s J\u00E9sus-Christ' ]\n * @return {Array}\n */\n static eras(length = \"short\", { locale = null } = {}) {\n return Locale.create(locale, null, \"gregory\").eras(length);\n }\n\n /**\n * Return the set of available features in this environment.\n * Some features of Luxon are not available in all environments. For example, on older browsers, relative time formatting support is not available. Use this function to figure out if that's the case.\n * Keys:\n * * `relative`: whether this environment supports relative time formatting\n * * `localeWeek`: whether this environment supports different weekdays for the start of the week based on the locale\n * @example Info.features() //=> { relative: false, localeWeek: true }\n * @return {Object}\n */\n static features() {\n return { relative: hasRelative(), localeWeek: hasLocaleWeekInfo() };\n }\n}\n", "import Duration from \"../duration.js\";\n\nfunction dayDiff(earlier, later) {\n const utcDayStart = (dt) => dt.toUTC(0, { keepLocalTime: true }).startOf(\"day\").valueOf(),\n ms = utcDayStart(later) - utcDayStart(earlier);\n return Math.floor(Duration.fromMillis(ms).as(\"days\"));\n}\n\nfunction highOrderDiffs(cursor, later, units) {\n const differs = [\n [\"years\", (a, b) => b.year - a.year],\n [\"quarters\", (a, b) => b.quarter - a.quarter + (b.year - a.year) * 4],\n [\"months\", (a, b) => b.month - a.month + (b.year - a.year) * 12],\n [\n \"weeks\",\n (a, b) => {\n const days = dayDiff(a, b);\n return (days - (days % 7)) / 7;\n },\n ],\n [\"days\", dayDiff],\n ];\n\n const results = {};\n const earlier = cursor;\n let lowestOrder, highWater;\n\n /* This loop tries to diff using larger units first.\n If we overshoot, we backtrack and try the next smaller unit.\n \"cursor\" starts out at the earlier timestamp and moves closer and closer to \"later\"\n as we use smaller and smaller units.\n highWater keeps track of where we would be if we added one more of the smallest unit,\n this is used later to potentially convert any difference smaller than the smallest higher order unit\n into a fraction of that smallest higher order unit\n */\n for (const [unit, differ] of differs) {\n if (units.indexOf(unit) >= 0) {\n lowestOrder = unit;\n\n results[unit] = differ(cursor, later);\n highWater = earlier.plus(results);\n\n if (highWater > later) {\n // we overshot the end point, backtrack cursor by 1\n results[unit]--;\n cursor = earlier.plus(results);\n\n // if we are still overshooting now, we need to backtrack again\n // this happens in certain situations when diffing times in different zones,\n // because this calculation ignores time zones\n if (cursor > later) {\n // keep the \"overshot by 1\" around as highWater\n highWater = cursor;\n // backtrack cursor by 1\n results[unit]--;\n cursor = earlier.plus(results);\n }\n } else {\n cursor = highWater;\n }\n }\n }\n\n return [cursor, results, highWater, lowestOrder];\n}\n\nexport default function (earlier, later, units, opts) {\n let [cursor, results, highWater, lowestOrder] = highOrderDiffs(earlier, later, units);\n\n const remainingMillis = later - cursor;\n\n const lowerOrderUnits = units.filter(\n (u) => [\"hours\", \"minutes\", \"seconds\", \"milliseconds\"].indexOf(u) >= 0\n );\n\n if (lowerOrderUnits.length === 0) {\n if (highWater < later) {\n highWater = cursor.plus({ [lowestOrder]: 1 });\n }\n\n if (highWater !== cursor) {\n results[lowestOrder] = (results[lowestOrder] || 0) + remainingMillis / (highWater - cursor);\n }\n }\n\n const duration = Duration.fromObject(results, opts);\n\n if (lowerOrderUnits.length > 0) {\n return Duration.fromMillis(remainingMillis, opts)\n .shiftTo(...lowerOrderUnits)\n .plus(duration);\n } else {\n return duration;\n }\n}\n", "import { parseMillis, isUndefined, untruncateYear, signedOffset, hasOwnProperty } from \"./util.js\";\nimport Formatter from \"./formatter.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport DateTime from \"../datetime.js\";\nimport { digitRegex, parseDigits } from \"./digits.js\";\nimport { ConflictingSpecificationError } from \"../errors.js\";\n\nconst MISSING_FTP = \"missing Intl.DateTimeFormat.formatToParts support\";\n\nfunction intUnit(regex, post = (i) => i) {\n return { regex, deser: ([s]) => post(parseDigits(s)) };\n}\n\nconst NBSP = String.fromCharCode(160);\nconst spaceOrNBSP = `[ ${NBSP}]`;\nconst spaceOrNBSPRegExp = new RegExp(spaceOrNBSP, \"g\");\n\nfunction fixListRegex(s) {\n // make dots optional and also make them literal\n // make space and non breakable space characters interchangeable\n return s.replace(/\\./g, \"\\\\.?\").replace(spaceOrNBSPRegExp, spaceOrNBSP);\n}\n\nfunction stripInsensitivities(s) {\n return s\n .replace(/\\./g, \"\") // ignore dots that were made optional\n .replace(spaceOrNBSPRegExp, \" \") // interchange space and nbsp\n .toLowerCase();\n}\n\nfunction oneOf(strings, startIndex) {\n if (strings === null) {\n return null;\n } else {\n return {\n regex: RegExp(strings.map(fixListRegex).join(\"|\")),\n deser: ([s]) =>\n strings.findIndex((i) => stripInsensitivities(s) === stripInsensitivities(i)) + startIndex,\n };\n }\n}\n\nfunction offset(regex, groups) {\n return { regex, deser: ([, h, m]) => signedOffset(h, m), groups };\n}\n\nfunction simple(regex) {\n return { regex, deser: ([s]) => s };\n}\n\nfunction escapeToken(value) {\n return value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n}\n\n/**\n * @param token\n * @param {Locale} loc\n */\nfunction unitForToken(token, loc) {\n const one = digitRegex(loc),\n two = digitRegex(loc, \"{2}\"),\n three = digitRegex(loc, \"{3}\"),\n four = digitRegex(loc, \"{4}\"),\n six = digitRegex(loc, \"{6}\"),\n oneOrTwo = digitRegex(loc, \"{1,2}\"),\n oneToThree = digitRegex(loc, \"{1,3}\"),\n oneToSix = digitRegex(loc, \"{1,6}\"),\n oneToNine = digitRegex(loc, \"{1,9}\"),\n twoToFour = digitRegex(loc, \"{2,4}\"),\n fourToSix = digitRegex(loc, \"{4,6}\"),\n literal = (t) => ({ regex: RegExp(escapeToken(t.val)), deser: ([s]) => s, literal: true }),\n unitate = (t) => {\n if (token.literal) {\n return literal(t);\n }\n switch (t.val) {\n // era\n case \"G\":\n return oneOf(loc.eras(\"short\"), 0);\n case \"GG\":\n return oneOf(loc.eras(\"long\"), 0);\n // years\n case \"y\":\n return intUnit(oneToSix);\n case \"yy\":\n return intUnit(twoToFour, untruncateYear);\n case \"yyyy\":\n return intUnit(four);\n case \"yyyyy\":\n return intUnit(fourToSix);\n case \"yyyyyy\":\n return intUnit(six);\n // months\n case \"M\":\n return intUnit(oneOrTwo);\n case \"MM\":\n return intUnit(two);\n case \"MMM\":\n return oneOf(loc.months(\"short\", true), 1);\n case \"MMMM\":\n return oneOf(loc.months(\"long\", true), 1);\n case \"L\":\n return intUnit(oneOrTwo);\n case \"LL\":\n return intUnit(two);\n case \"LLL\":\n return oneOf(loc.months(\"short\", false), 1);\n case \"LLLL\":\n return oneOf(loc.months(\"long\", false), 1);\n // dates\n case \"d\":\n return intUnit(oneOrTwo);\n case \"dd\":\n return intUnit(two);\n // ordinals\n case \"o\":\n return intUnit(oneToThree);\n case \"ooo\":\n return intUnit(three);\n // time\n case \"HH\":\n return intUnit(two);\n case \"H\":\n return intUnit(oneOrTwo);\n case \"hh\":\n return intUnit(two);\n case \"h\":\n return intUnit(oneOrTwo);\n case \"mm\":\n return intUnit(two);\n case \"m\":\n return intUnit(oneOrTwo);\n case \"q\":\n return intUnit(oneOrTwo);\n case \"qq\":\n return intUnit(two);\n case \"s\":\n return intUnit(oneOrTwo);\n case \"ss\":\n return intUnit(two);\n case \"S\":\n return intUnit(oneToThree);\n case \"SSS\":\n return intUnit(three);\n case \"u\":\n return simple(oneToNine);\n case \"uu\":\n return simple(oneOrTwo);\n case \"uuu\":\n return intUnit(one);\n // meridiem\n case \"a\":\n return oneOf(loc.meridiems(), 0);\n // weekYear (k)\n case \"kkkk\":\n return intUnit(four);\n case \"kk\":\n return intUnit(twoToFour, untruncateYear);\n // weekNumber (W)\n case \"W\":\n return intUnit(oneOrTwo);\n case \"WW\":\n return intUnit(two);\n // weekdays\n case \"E\":\n case \"c\":\n return intUnit(one);\n case \"EEE\":\n return oneOf(loc.weekdays(\"short\", false), 1);\n case \"EEEE\":\n return oneOf(loc.weekdays(\"long\", false), 1);\n case \"ccc\":\n return oneOf(loc.weekdays(\"short\", true), 1);\n case \"cccc\":\n return oneOf(loc.weekdays(\"long\", true), 1);\n // offset/zone\n case \"Z\":\n case \"ZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(?::(${two.source}))?`), 2);\n case \"ZZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(${two.source})?`), 2);\n // we don't support ZZZZ (PST) or ZZZZZ (Pacific Standard Time) in parsing\n // because we don't have any way to figure out what they are\n case \"z\":\n return simple(/[a-z_+-/]{1,256}?/i);\n // this special-case \"token\" represents a place where a macro-token expanded into a white-space literal\n // in this case we accept any non-newline white-space\n case \" \":\n return simple(/[^\\S\\n\\r]/);\n default:\n return literal(t);\n }\n };\n\n const unit = unitate(token) || {\n invalidReason: MISSING_FTP,\n };\n\n unit.token = token;\n\n return unit;\n}\n\nconst partTypeStyleToTokenVal = {\n year: {\n \"2-digit\": \"yy\",\n numeric: \"yyyyy\",\n },\n month: {\n numeric: \"M\",\n \"2-digit\": \"MM\",\n short: \"MMM\",\n long: \"MMMM\",\n },\n day: {\n numeric: \"d\",\n \"2-digit\": \"dd\",\n },\n weekday: {\n short: \"EEE\",\n long: \"EEEE\",\n },\n dayperiod: \"a\",\n dayPeriod: \"a\",\n hour12: {\n numeric: \"h\",\n \"2-digit\": \"hh\",\n },\n hour24: {\n numeric: \"H\",\n \"2-digit\": \"HH\",\n },\n minute: {\n numeric: \"m\",\n \"2-digit\": \"mm\",\n },\n second: {\n numeric: \"s\",\n \"2-digit\": \"ss\",\n },\n timeZoneName: {\n long: \"ZZZZZ\",\n short: \"ZZZ\",\n },\n};\n\nfunction tokenForPart(part, formatOpts, resolvedOpts) {\n const { type, value } = part;\n\n if (type === \"literal\") {\n const isSpace = /^\\s+$/.test(value);\n return {\n literal: !isSpace,\n val: isSpace ? \" \" : value,\n };\n }\n\n const style = formatOpts[type];\n\n // The user might have explicitly specified hour12 or hourCycle\n // if so, respect their decision\n // if not, refer back to the resolvedOpts, which are based on the locale\n let actualType = type;\n if (type === \"hour\") {\n if (formatOpts.hour12 != null) {\n actualType = formatOpts.hour12 ? \"hour12\" : \"hour24\";\n } else if (formatOpts.hourCycle != null) {\n if (formatOpts.hourCycle === \"h11\" || formatOpts.hourCycle === \"h12\") {\n actualType = \"hour12\";\n } else {\n actualType = \"hour24\";\n }\n } else {\n // tokens only differentiate between 24 hours or not,\n // so we do not need to check hourCycle here, which is less supported anyways\n actualType = resolvedOpts.hour12 ? \"hour12\" : \"hour24\";\n }\n }\n let val = partTypeStyleToTokenVal[actualType];\n if (typeof val === \"object\") {\n val = val[style];\n }\n\n if (val) {\n return {\n literal: false,\n val,\n };\n }\n\n return undefined;\n}\n\nfunction buildRegex(units) {\n const re = units.map((u) => u.regex).reduce((f, r) => `${f}(${r.source})`, \"\");\n return [`^${re}$`, units];\n}\n\nfunction match(input, regex, handlers) {\n const matches = input.match(regex);\n\n if (matches) {\n const all = {};\n let matchIndex = 1;\n for (const i in handlers) {\n if (hasOwnProperty(handlers, i)) {\n const h = handlers[i],\n groups = h.groups ? h.groups + 1 : 1;\n if (!h.literal && h.token) {\n all[h.token.val[0]] = h.deser(matches.slice(matchIndex, matchIndex + groups));\n }\n matchIndex += groups;\n }\n }\n return [matches, all];\n } else {\n return [matches, {}];\n }\n}\n\nfunction dateTimeFromMatches(matches) {\n const toField = (token) => {\n switch (token) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n case \"H\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"o\":\n return \"ordinal\";\n case \"L\":\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n case \"E\":\n case \"c\":\n return \"weekday\";\n case \"W\":\n return \"weekNumber\";\n case \"k\":\n return \"weekYear\";\n case \"q\":\n return \"quarter\";\n default:\n return null;\n }\n };\n\n let zone = null;\n let specificOffset;\n if (!isUndefined(matches.z)) {\n zone = IANAZone.create(matches.z);\n }\n\n if (!isUndefined(matches.Z)) {\n if (!zone) {\n zone = new FixedOffsetZone(matches.Z);\n }\n specificOffset = matches.Z;\n }\n\n if (!isUndefined(matches.q)) {\n matches.M = (matches.q - 1) * 3 + 1;\n }\n\n if (!isUndefined(matches.h)) {\n if (matches.h < 12 && matches.a === 1) {\n matches.h += 12;\n } else if (matches.h === 12 && matches.a === 0) {\n matches.h = 0;\n }\n }\n\n if (matches.G === 0 && matches.y) {\n matches.y = -matches.y;\n }\n\n if (!isUndefined(matches.u)) {\n matches.S = parseMillis(matches.u);\n }\n\n const vals = Object.keys(matches).reduce((r, k) => {\n const f = toField(k);\n if (f) {\n r[f] = matches[k];\n }\n\n return r;\n }, {});\n\n return [vals, zone, specificOffset];\n}\n\nlet dummyDateTimeCache = null;\n\nfunction getDummyDateTime() {\n if (!dummyDateTimeCache) {\n dummyDateTimeCache = DateTime.fromMillis(1555555555555);\n }\n\n return dummyDateTimeCache;\n}\n\nfunction maybeExpandMacroToken(token, locale) {\n if (token.literal) {\n return token;\n }\n\n const formatOpts = Formatter.macroTokenToFormatOpts(token.val);\n const tokens = formatOptsToTokens(formatOpts, locale);\n\n if (tokens == null || tokens.includes(undefined)) {\n return token;\n }\n\n return tokens;\n}\n\nexport function expandMacroTokens(tokens, locale) {\n return Array.prototype.concat(...tokens.map((t) => maybeExpandMacroToken(t, locale)));\n}\n\n/**\n * @private\n */\n\nexport class TokenParser {\n constructor(locale, format) {\n this.locale = locale;\n this.format = format;\n this.tokens = expandMacroTokens(Formatter.parseFormat(format), locale);\n this.units = this.tokens.map((t) => unitForToken(t, locale));\n this.disqualifyingUnit = this.units.find((t) => t.invalidReason);\n\n if (!this.disqualifyingUnit) {\n const [regexString, handlers] = buildRegex(this.units);\n this.regex = RegExp(regexString, \"i\");\n this.handlers = handlers;\n }\n }\n\n explainFromTokens(input) {\n if (!this.isValid) {\n return { input, tokens: this.tokens, invalidReason: this.invalidReason };\n } else {\n const [rawMatches, matches] = match(input, this.regex, this.handlers),\n [result, zone, specificOffset] = matches\n ? dateTimeFromMatches(matches)\n : [null, null, undefined];\n if (hasOwnProperty(matches, \"a\") && hasOwnProperty(matches, \"H\")) {\n throw new ConflictingSpecificationError(\n \"Can't include meridiem when specifying 24-hour format\"\n );\n }\n return {\n input,\n tokens: this.tokens,\n regex: this.regex,\n rawMatches,\n matches,\n result,\n zone,\n specificOffset,\n };\n }\n }\n\n get isValid() {\n return !this.disqualifyingUnit;\n }\n\n get invalidReason() {\n return this.disqualifyingUnit ? this.disqualifyingUnit.invalidReason : null;\n }\n}\n\nexport function explainFromTokens(locale, input, format) {\n const parser = new TokenParser(locale, format);\n return parser.explainFromTokens(input);\n}\n\nexport function parseFromTokens(locale, input, format) {\n const { result, zone, specificOffset, invalidReason } = explainFromTokens(locale, input, format);\n return [result, zone, specificOffset, invalidReason];\n}\n\nexport function formatOptsToTokens(formatOpts, locale) {\n if (!formatOpts) {\n return null;\n }\n\n const formatter = Formatter.create(locale, formatOpts);\n const df = formatter.dtFormatter(getDummyDateTime());\n const parts = df.formatToParts();\n const resolvedOpts = df.resolvedOptions();\n return parts.map((p) => tokenForPart(p, formatOpts, resolvedOpts));\n}\n", "import Duration from \"./duration.js\";\nimport Interval from \"./interval.js\";\nimport Settings from \"./settings.js\";\nimport Info from \"./info.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport FixedOffsetZone from \"./zones/fixedOffsetZone.js\";\nimport Locale from \"./impl/locale.js\";\nimport {\n isUndefined,\n maybeArray,\n isDate,\n isNumber,\n bestBy,\n daysInMonth,\n daysInYear,\n isLeapYear,\n weeksInWeekYear,\n normalizeObject,\n roundTo,\n objToLocalTS,\n padStart,\n} from \"./impl/util.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\nimport diff from \"./impl/diff.js\";\nimport { parseRFC2822Date, parseISODate, parseHTTPDate, parseSQL } from \"./impl/regexParser.js\";\nimport {\n parseFromTokens,\n explainFromTokens,\n formatOptsToTokens,\n expandMacroTokens,\n TokenParser,\n} from \"./impl/tokenParser.js\";\nimport {\n gregorianToWeek,\n weekToGregorian,\n gregorianToOrdinal,\n ordinalToGregorian,\n hasInvalidGregorianData,\n hasInvalidWeekData,\n hasInvalidOrdinalData,\n hasInvalidTimeData,\n usesLocalWeekValues,\n isoWeekdayToLocal,\n} from \"./impl/conversions.js\";\nimport * as Formats from \"./impl/formats.js\";\nimport {\n InvalidArgumentError,\n ConflictingSpecificationError,\n InvalidUnitError,\n InvalidDateTimeError,\n} from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\n\nconst INVALID = \"Invalid DateTime\";\nconst MAX_DATE = 8.64e15;\n\nfunction unsupportedZone(zone) {\n return new Invalid(\"unsupported zone\", `the zone \"${zone.name}\" is not supported`);\n}\n\n// we cache week data on the DT object and this intermediates the cache\n/**\n * @param {DateTime} dt\n */\nfunction possiblyCachedWeekData(dt) {\n if (dt.weekData === null) {\n dt.weekData = gregorianToWeek(dt.c);\n }\n return dt.weekData;\n}\n\n/**\n * @param {DateTime} dt\n */\nfunction possiblyCachedLocalWeekData(dt) {\n if (dt.localWeekData === null) {\n dt.localWeekData = gregorianToWeek(\n dt.c,\n dt.loc.getMinDaysInFirstWeek(),\n dt.loc.getStartOfWeek()\n );\n }\n return dt.localWeekData;\n}\n\n// clone really means, \"make a new object with these modifications\". all \"setters\" really use this\n// to create a new object while only changing some of the properties\nfunction clone(inst, alts) {\n const current = {\n ts: inst.ts,\n zone: inst.zone,\n c: inst.c,\n o: inst.o,\n loc: inst.loc,\n invalid: inst.invalid,\n };\n return new DateTime({ ...current, ...alts, old: current });\n}\n\n// find the right offset a given local time. The o input is our guess, which determines which\n// offset we'll pick in ambiguous cases (e.g. there are two 3 AMs b/c Fallback DST)\nfunction fixOffset(localTS, o, tz) {\n // Our UTC time is just a guess because our offset is just a guess\n let utcGuess = localTS - o * 60 * 1000;\n\n // Test whether the zone matches the offset for this ts\n const o2 = tz.offset(utcGuess);\n\n // If so, offset didn't change and we're done\n if (o === o2) {\n return [utcGuess, o];\n }\n\n // If not, change the ts by the difference in the offset\n utcGuess -= (o2 - o) * 60 * 1000;\n\n // If that gives us the local time we want, we're done\n const o3 = tz.offset(utcGuess);\n if (o2 === o3) {\n return [utcGuess, o2];\n }\n\n // If it's different, we're in a hole time. The offset has changed, but the we don't adjust the time\n return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)];\n}\n\n// convert an epoch timestamp into a calendar object with the given offset\nfunction tsToObj(ts, offset) {\n ts += offset * 60 * 1000;\n\n const d = new Date(ts);\n\n return {\n year: d.getUTCFullYear(),\n month: d.getUTCMonth() + 1,\n day: d.getUTCDate(),\n hour: d.getUTCHours(),\n minute: d.getUTCMinutes(),\n second: d.getUTCSeconds(),\n millisecond: d.getUTCMilliseconds(),\n };\n}\n\n// convert a calendar object to a epoch timestamp\nfunction objToTS(obj, offset, zone) {\n return fixOffset(objToLocalTS(obj), offset, zone);\n}\n\n// create a new DT instance by adding a duration, adjusting for DSTs\nfunction adjustTime(inst, dur) {\n const oPre = inst.o,\n year = inst.c.year + Math.trunc(dur.years),\n month = inst.c.month + Math.trunc(dur.months) + Math.trunc(dur.quarters) * 3,\n c = {\n ...inst.c,\n year,\n month,\n day:\n Math.min(inst.c.day, daysInMonth(year, month)) +\n Math.trunc(dur.days) +\n Math.trunc(dur.weeks) * 7,\n },\n millisToAdd = Duration.fromObject({\n years: dur.years - Math.trunc(dur.years),\n quarters: dur.quarters - Math.trunc(dur.quarters),\n months: dur.months - Math.trunc(dur.months),\n weeks: dur.weeks - Math.trunc(dur.weeks),\n days: dur.days - Math.trunc(dur.days),\n hours: dur.hours,\n minutes: dur.minutes,\n seconds: dur.seconds,\n milliseconds: dur.milliseconds,\n }).as(\"milliseconds\"),\n localTS = objToLocalTS(c);\n\n let [ts, o] = fixOffset(localTS, oPre, inst.zone);\n\n if (millisToAdd !== 0) {\n ts += millisToAdd;\n // that could have changed the offset by going over a DST, but we want to keep the ts the same\n o = inst.zone.offset(ts);\n }\n\n return { ts, o };\n}\n\n// helper useful in turning the results of parsing into real dates\n// by handling the zone options\nfunction parseDataToDateTime(parsed, parsedZone, opts, format, text, specificOffset) {\n const { setZone, zone } = opts;\n if ((parsed && Object.keys(parsed).length !== 0) || parsedZone) {\n const interpretationZone = parsedZone || zone,\n inst = DateTime.fromObject(parsed, {\n ...opts,\n zone: interpretationZone,\n specificOffset,\n });\n return setZone ? inst : inst.setZone(zone);\n } else {\n return DateTime.invalid(\n new Invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ${format}`)\n );\n }\n}\n\n// if you want to output a technical format (e.g. RFC 2822), this helper\n// helps handle the details\nfunction toTechFormat(dt, format, allowZ = true) {\n return dt.isValid\n ? Formatter.create(Locale.create(\"en-US\"), {\n allowZ,\n forceSimple: true,\n }).formatDateTimeFromString(dt, format)\n : null;\n}\n\nfunction toISODate(o, extended) {\n const longFormat = o.c.year > 9999 || o.c.year < 0;\n let c = \"\";\n if (longFormat && o.c.year >= 0) c += \"+\";\n c += padStart(o.c.year, longFormat ? 6 : 4);\n\n if (extended) {\n c += \"-\";\n c += padStart(o.c.month);\n c += \"-\";\n c += padStart(o.c.day);\n } else {\n c += padStart(o.c.month);\n c += padStart(o.c.day);\n }\n return c;\n}\n\nfunction toISOTime(\n o,\n extended,\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n extendedZone\n) {\n let c = padStart(o.c.hour);\n if (extended) {\n c += \":\";\n c += padStart(o.c.minute);\n if (o.c.millisecond !== 0 || o.c.second !== 0 || !suppressSeconds) {\n c += \":\";\n }\n } else {\n c += padStart(o.c.minute);\n }\n\n if (o.c.millisecond !== 0 || o.c.second !== 0 || !suppressSeconds) {\n c += padStart(o.c.second);\n\n if (o.c.millisecond !== 0 || !suppressMilliseconds) {\n c += \".\";\n c += padStart(o.c.millisecond, 3);\n }\n }\n\n if (includeOffset) {\n if (o.isOffsetFixed && o.offset === 0 && !extendedZone) {\n c += \"Z\";\n } else if (o.o < 0) {\n c += \"-\";\n c += padStart(Math.trunc(-o.o / 60));\n c += \":\";\n c += padStart(Math.trunc(-o.o % 60));\n } else {\n c += \"+\";\n c += padStart(Math.trunc(o.o / 60));\n c += \":\";\n c += padStart(Math.trunc(o.o % 60));\n }\n }\n\n if (extendedZone) {\n c += \"[\" + o.zone.ianaName + \"]\";\n }\n return c;\n}\n\n// defaults for unspecified units in the supported calendars\nconst defaultUnitValues = {\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n defaultWeekUnitValues = {\n weekNumber: 1,\n weekday: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n defaultOrdinalUnitValues = {\n ordinal: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n };\n\n// Units in the supported calendars, sorted by bigness\nconst orderedUnits = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\", \"millisecond\"],\n orderedWeekUnits = [\n \"weekYear\",\n \"weekNumber\",\n \"weekday\",\n \"hour\",\n \"minute\",\n \"second\",\n \"millisecond\",\n ],\n orderedOrdinalUnits = [\"year\", \"ordinal\", \"hour\", \"minute\", \"second\", \"millisecond\"];\n\n// standardize case and plurality in units\nfunction normalizeUnit(unit) {\n const normalized = {\n year: \"year\",\n years: \"year\",\n month: \"month\",\n months: \"month\",\n day: \"day\",\n days: \"day\",\n hour: \"hour\",\n hours: \"hour\",\n minute: \"minute\",\n minutes: \"minute\",\n quarter: \"quarter\",\n quarters: \"quarter\",\n second: \"second\",\n seconds: \"second\",\n millisecond: \"millisecond\",\n milliseconds: \"millisecond\",\n weekday: \"weekday\",\n weekdays: \"weekday\",\n weeknumber: \"weekNumber\",\n weeksnumber: \"weekNumber\",\n weeknumbers: \"weekNumber\",\n weekyear: \"weekYear\",\n weekyears: \"weekYear\",\n ordinal: \"ordinal\",\n }[unit.toLowerCase()];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n}\n\nfunction normalizeUnitWithLocalWeeks(unit) {\n switch (unit.toLowerCase()) {\n case \"localweekday\":\n case \"localweekdays\":\n return \"localWeekday\";\n case \"localweeknumber\":\n case \"localweeknumbers\":\n return \"localWeekNumber\";\n case \"localweekyear\":\n case \"localweekyears\":\n return \"localWeekYear\";\n default:\n return normalizeUnit(unit);\n }\n}\n\n// cache offsets for zones based on the current timestamp when this function is\n// first called. When we are handling a datetime from components like (year,\n// month, day, hour) in a time zone, we need a guess about what the timezone\n// offset is so that we can convert into a UTC timestamp. One way is to find the\n// offset of now in the zone. The actual date may have a different offset (for\n// example, if we handle a date in June while we're in December in a zone that\n// observes DST), but we can check and adjust that.\n//\n// When handling many dates, calculating the offset for now every time is\n// expensive. It's just a guess, so we can cache the offset to use even if we\n// are right on a time change boundary (we'll just correct in the other\n// direction). Using a timestamp from first read is a slight optimization for\n// handling dates close to the current date, since those dates will usually be\n// in the same offset (we could set the timestamp statically, instead). We use a\n// single timestamp for all zones to make things a bit more predictable.\n//\n// This is safe for quickDT (used by local() and utc()) because we don't fill in\n// higher-order units from tsNow (as we do in fromObject, this requires that\n// offset is calculated from tsNow).\nfunction guessOffsetForZone(zone) {\n if (!zoneOffsetGuessCache[zone]) {\n if (zoneOffsetTs === undefined) {\n zoneOffsetTs = Settings.now();\n }\n\n zoneOffsetGuessCache[zone] = zone.offset(zoneOffsetTs);\n }\n return zoneOffsetGuessCache[zone];\n}\n\n// this is a dumbed down version of fromObject() that runs about 60% faster\n// but doesn't do any validation, makes a bunch of assumptions about what units\n// are present, and so on.\nfunction quickDT(obj, opts) {\n const zone = normalizeZone(opts.zone, Settings.defaultZone);\n if (!zone.isValid) {\n return DateTime.invalid(unsupportedZone(zone));\n }\n\n const loc = Locale.fromObject(opts);\n\n let ts, o;\n\n // assume we have the higher-order units\n if (!isUndefined(obj.year)) {\n for (const u of orderedUnits) {\n if (isUndefined(obj[u])) {\n obj[u] = defaultUnitValues[u];\n }\n }\n\n const invalid = hasInvalidGregorianData(obj) || hasInvalidTimeData(obj);\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n const offsetProvis = guessOffsetForZone(zone);\n [ts, o] = objToTS(obj, offsetProvis, zone);\n } else {\n ts = Settings.now();\n }\n\n return new DateTime({ ts, zone, loc, o });\n}\n\nfunction diffRelative(start, end, opts) {\n const round = isUndefined(opts.round) ? true : opts.round,\n format = (c, unit) => {\n c = roundTo(c, round || opts.calendary ? 0 : 2, true);\n const formatter = end.loc.clone(opts).relFormatter(opts);\n return formatter.format(c, unit);\n },\n differ = (unit) => {\n if (opts.calendary) {\n if (!end.hasSame(start, unit)) {\n return end.startOf(unit).diff(start.startOf(unit), unit).get(unit);\n } else return 0;\n } else {\n return end.diff(start, unit).get(unit);\n }\n };\n\n if (opts.unit) {\n return format(differ(opts.unit), opts.unit);\n }\n\n for (const unit of opts.units) {\n const count = differ(unit);\n if (Math.abs(count) >= 1) {\n return format(count, unit);\n }\n }\n return format(start > end ? -0 : 0, opts.units[opts.units.length - 1]);\n}\n\nfunction lastOpts(argList) {\n let opts = {},\n args;\n if (argList.length > 0 && typeof argList[argList.length - 1] === \"object\") {\n opts = argList[argList.length - 1];\n args = Array.from(argList).slice(0, argList.length - 1);\n } else {\n args = Array.from(argList);\n }\n return [opts, args];\n}\n\n/**\n * Timestamp to use for cached zone offset guesses (exposed for test)\n */\nlet zoneOffsetTs;\n/**\n * Cache for zone offset guesses (exposed for test).\n *\n * This optimizes quickDT via guessOffsetForZone to avoid repeated calls of\n * zone.offset().\n */\nlet zoneOffsetGuessCache = {};\n\n/**\n * A DateTime is an immutable data structure representing a specific date and time and accompanying methods. It contains class and instance methods for creating, parsing, interrogating, transforming, and formatting them.\n *\n * A DateTime comprises of:\n * * A timestamp. Each DateTime instance refers to a specific millisecond of the Unix epoch.\n * * A time zone. Each instance is considered in the context of a specific zone (by default the local system's zone).\n * * Configuration properties that effect how output strings are formatted, such as `locale`, `numberingSystem`, and `outputCalendar`.\n *\n * Here is a brief overview of the most commonly used functionality it provides:\n *\n * * **Creation**: To create a DateTime from its components, use one of its factory class methods: {@link DateTime.local}, {@link DateTime.utc}, and (most flexibly) {@link DateTime.fromObject}. To create one from a standard string format, use {@link DateTime.fromISO}, {@link DateTime.fromHTTP}, and {@link DateTime.fromRFC2822}. To create one from a custom string format, use {@link DateTime.fromFormat}. To create one from a native JS date, use {@link DateTime.fromJSDate}.\n * * **Gregorian calendar and time**: To examine the Gregorian properties of a DateTime individually (i.e as opposed to collectively through {@link DateTime#toObject}), use the {@link DateTime#year}, {@link DateTime#month},\n * {@link DateTime#day}, {@link DateTime#hour}, {@link DateTime#minute}, {@link DateTime#second}, {@link DateTime#millisecond} accessors.\n * * **Week calendar**: For ISO week calendar attributes, see the {@link DateTime#weekYear}, {@link DateTime#weekNumber}, and {@link DateTime#weekday} accessors.\n * * **Configuration** See the {@link DateTime#locale} and {@link DateTime#numberingSystem} accessors.\n * * **Transformation**: To transform the DateTime into other DateTimes, use {@link DateTime#set}, {@link DateTime#reconfigure}, {@link DateTime#setZone}, {@link DateTime#setLocale}, {@link DateTime.plus}, {@link DateTime#minus}, {@link DateTime#endOf}, {@link DateTime#startOf}, {@link DateTime#toUTC}, and {@link DateTime#toLocal}.\n * * **Output**: To convert the DateTime to other representations, use the {@link DateTime#toRelative}, {@link DateTime#toRelativeCalendar}, {@link DateTime#toJSON}, {@link DateTime#toISO}, {@link DateTime#toHTTP}, {@link DateTime#toObject}, {@link DateTime#toRFC2822}, {@link DateTime#toString}, {@link DateTime#toLocaleString}, {@link DateTime#toFormat}, {@link DateTime#toMillis} and {@link DateTime#toJSDate}.\n *\n * There's plenty others documented below. In addition, for more information on subtler topics like internationalization, time zones, alternative calendars, validity, and so on, see the external documentation.\n */\nexport default class DateTime {\n /**\n * @access private\n */\n constructor(config) {\n const zone = config.zone || Settings.defaultZone;\n\n let invalid =\n config.invalid ||\n (Number.isNaN(config.ts) ? new Invalid(\"invalid input\") : null) ||\n (!zone.isValid ? unsupportedZone(zone) : null);\n /**\n * @access private\n */\n this.ts = isUndefined(config.ts) ? Settings.now() : config.ts;\n\n let c = null,\n o = null;\n if (!invalid) {\n const unchanged = config.old && config.old.ts === this.ts && config.old.zone.equals(zone);\n\n if (unchanged) {\n [c, o] = [config.old.c, config.old.o];\n } else {\n // If an offset has been passed and we have not been called from\n // clone(), we can trust it and avoid the offset calculation.\n const ot = isNumber(config.o) && !config.old ? config.o : zone.offset(this.ts);\n c = tsToObj(this.ts, ot);\n invalid = Number.isNaN(c.year) ? new Invalid(\"invalid input\") : null;\n c = invalid ? null : c;\n o = invalid ? null : ot;\n }\n }\n\n /**\n * @access private\n */\n this._zone = zone;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.invalid = invalid;\n /**\n * @access private\n */\n this.weekData = null;\n /**\n * @access private\n */\n this.localWeekData = null;\n /**\n * @access private\n */\n this.c = c;\n /**\n * @access private\n */\n this.o = o;\n /**\n * @access private\n */\n this.isLuxonDateTime = true;\n }\n\n // CONSTRUCT\n\n /**\n * Create a DateTime for the current instant, in the system's time zone.\n *\n * Use Settings to override these default values if needed.\n * @example DateTime.now().toISO() //~> now in the ISO format\n * @return {DateTime}\n */\n static now() {\n return new DateTime({});\n }\n\n /**\n * Create a local DateTime\n * @param {number} [year] - The calendar year. If omitted (as in, call `local()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month, 1-indexed\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @example DateTime.local() //~> now\n * @example DateTime.local({ zone: \"America/New_York\" }) //~> now, in US east coast time\n * @example DateTime.local(2017) //~> 2017-01-01T00:00:00\n * @example DateTime.local(2017, 3) //~> 2017-03-01T00:00:00\n * @example DateTime.local(2017, 3, 12, { locale: \"fr\" }) //~> 2017-03-12T00:00:00, with a French locale\n * @example DateTime.local(2017, 3, 12, 5) //~> 2017-03-12T05:00:00\n * @example DateTime.local(2017, 3, 12, 5, { zone: \"utc\" }) //~> 2017-03-12T05:00:00, in UTC\n * @example DateTime.local(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00\n * @example DateTime.local(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10\n * @example DateTime.local(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765\n * @return {DateTime}\n */\n static local() {\n const [opts, args] = lastOpts(arguments),\n [year, month, day, hour, minute, second, millisecond] = args;\n return quickDT({ year, month, day, hour, minute, second, millisecond }, opts);\n }\n\n /**\n * Create a DateTime in UTC\n * @param {number} [year] - The calendar year. If omitted (as in, call `utc()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @param {Object} options - configuration options for the DateTime\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} [options.outputCalendar] - the output calendar to set on the resulting DateTime instance\n * @param {string} [options.numberingSystem] - the numbering system to set on the resulting DateTime instance\n * @param {string} [options.weekSettings] - the week settings to set on the resulting DateTime instance\n * @example DateTime.utc() //~> now\n * @example DateTime.utc(2017) //~> 2017-01-01T00:00:00Z\n * @example DateTime.utc(2017, 3) //~> 2017-03-01T00:00:00Z\n * @example DateTime.utc(2017, 3, 12) //~> 2017-03-12T00:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5) //~> 2017-03-12T05:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, { locale: \"fr\" }) //~> 2017-03-12T05:45:00Z with a French locale\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10, 765, { locale: \"fr\" }) //~> 2017-03-12T05:45:10.765Z with a French locale\n * @return {DateTime}\n */\n static utc() {\n const [opts, args] = lastOpts(arguments),\n [year, month, day, hour, minute, second, millisecond] = args;\n\n opts.zone = FixedOffsetZone.utcInstance;\n return quickDT({ year, month, day, hour, minute, second, millisecond }, opts);\n }\n\n /**\n * Create a DateTime from a JavaScript Date object. Uses the default zone.\n * @param {Date} date - a JavaScript Date object\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @return {DateTime}\n */\n static fromJSDate(date, options = {}) {\n const ts = isDate(date) ? date.valueOf() : NaN;\n if (Number.isNaN(ts)) {\n return DateTime.invalid(\"invalid input\");\n }\n\n const zoneToUse = normalizeZone(options.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n return new DateTime({\n ts: ts,\n zone: zoneToUse,\n loc: Locale.fromObject(options),\n });\n }\n\n /**\n * Create a DateTime from a number of milliseconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} milliseconds - a number of milliseconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @param {string} options.weekSettings - the week settings to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromMillis(milliseconds, options = {}) {\n if (!isNumber(milliseconds)) {\n throw new InvalidArgumentError(\n `fromMillis requires a numerical input, but received a ${typeof milliseconds} with value ${milliseconds}`\n );\n } else if (milliseconds < -MAX_DATE || milliseconds > MAX_DATE) {\n // this isn't perfect because we can still end up out of range because of additional shifting, but it's a start\n return DateTime.invalid(\"Timestamp out of range\");\n } else {\n return new DateTime({\n ts: milliseconds,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options),\n });\n }\n }\n\n /**\n * Create a DateTime from a number of seconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} seconds - a number of seconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @param {string} options.weekSettings - the week settings to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromSeconds(seconds, options = {}) {\n if (!isNumber(seconds)) {\n throw new InvalidArgumentError(\"fromSeconds requires a numerical input\");\n } else {\n return new DateTime({\n ts: seconds * 1000,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options),\n });\n }\n }\n\n /**\n * Create a DateTime from a JavaScript object with keys like 'year' and 'hour' with reasonable defaults.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.year - a year, such as 1987\n * @param {number} obj.month - a month, 1-12\n * @param {number} obj.day - a day of the month, 1-31, depending on the month\n * @param {number} obj.ordinal - day of the year, 1-365 or 366\n * @param {number} obj.weekYear - an ISO week year\n * @param {number} obj.weekNumber - an ISO week number, between 1 and 52 or 53, depending on the year\n * @param {number} obj.weekday - an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday\n * @param {number} obj.localWeekYear - a week year, according to the locale\n * @param {number} obj.localWeekNumber - a week number, between 1 and 52 or 53, depending on the year, according to the locale\n * @param {number} obj.localWeekday - a weekday, 1-7, where 1 is the first and 7 is the last day of the week, according to the locale\n * @param {number} obj.hour - hour of the day, 0-23\n * @param {number} obj.minute - minute of the hour, 0-59\n * @param {number} obj.second - second of the minute, 0-59\n * @param {number} obj.millisecond - millisecond of the second, 0-999\n * @param {Object} opts - options for creating this DateTime\n * @param {string|Zone} [opts.zone='local'] - interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone()\n * @param {string} [opts.locale='system\\'s locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n * @example DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25'\n * @example DateTime.fromObject({ year: 1982 }).toISODate() //=> '1982-01-01'\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }) //~> today at 10:26:06\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'utc' }),\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'local' })\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'America/New_York' })\n * @example DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13'\n * @example DateTime.fromObject({ localWeekYear: 2022, localWeekNumber: 1, localWeekday: 1 }, { locale: \"en-US\" }).toISODate() //=> '2021-12-26'\n * @return {DateTime}\n */\n static fromObject(obj, opts = {}) {\n obj = obj || {};\n const zoneToUse = normalizeZone(opts.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n const loc = Locale.fromObject(opts);\n const normalized = normalizeObject(obj, normalizeUnitWithLocalWeeks);\n const { minDaysInFirstWeek, startOfWeek } = usesLocalWeekValues(normalized, loc);\n\n const tsNow = Settings.now(),\n offsetProvis = !isUndefined(opts.specificOffset)\n ? opts.specificOffset\n : zoneToUse.offset(tsNow),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber;\n\n // cases:\n // just a weekday -> this week's instance of that weekday, no worries\n // (gregorian data or ordinal) + (weekYear or weekNumber) -> error\n // (gregorian month or day) + ordinal -> error\n // otherwise just use weeks or ordinals or gregorian, depending on what's specified\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n const useWeekData = definiteWeekDef || (normalized.weekday && !containsGregor);\n\n // configure ourselves to deal with gregorian dates or week stuff\n let units,\n defaultValues,\n objNow = tsToObj(tsNow, offsetProvis);\n if (useWeekData) {\n units = orderedWeekUnits;\n defaultValues = defaultWeekUnitValues;\n objNow = gregorianToWeek(objNow, minDaysInFirstWeek, startOfWeek);\n } else if (containsOrdinal) {\n units = orderedOrdinalUnits;\n defaultValues = defaultOrdinalUnitValues;\n objNow = gregorianToOrdinal(objNow);\n } else {\n units = orderedUnits;\n defaultValues = defaultUnitValues;\n }\n\n // set default values for missing stuff\n let foundFirst = false;\n for (const u of units) {\n const v = normalized[u];\n if (!isUndefined(v)) {\n foundFirst = true;\n } else if (foundFirst) {\n normalized[u] = defaultValues[u];\n } else {\n normalized[u] = objNow[u];\n }\n }\n\n // make sure the values we have are in range\n const higherOrderInvalid = useWeekData\n ? hasInvalidWeekData(normalized, minDaysInFirstWeek, startOfWeek)\n : containsOrdinal\n ? hasInvalidOrdinalData(normalized)\n : hasInvalidGregorianData(normalized),\n invalid = higherOrderInvalid || hasInvalidTimeData(normalized);\n\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n // compute the actual time\n const gregorian = useWeekData\n ? weekToGregorian(normalized, minDaysInFirstWeek, startOfWeek)\n : containsOrdinal\n ? ordinalToGregorian(normalized)\n : normalized,\n [tsFinal, offsetFinal] = objToTS(gregorian, offsetProvis, zoneToUse),\n inst = new DateTime({\n ts: tsFinal,\n zone: zoneToUse,\n o: offsetFinal,\n loc,\n });\n\n // gregorian data + weekday serves only to validate\n if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) {\n return DateTime.invalid(\n \"mismatched weekday\",\n `you can't specify both a weekday of ${normalized.weekday} and a date of ${inst.toISO()}`\n );\n }\n\n if (!inst.isValid) {\n return DateTime.invalid(inst.invalid);\n }\n\n return inst;\n }\n\n /**\n * Create a DateTime from an ISO 8601 string\n * @param {string} text - the ISO string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the time to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} [opts.outputCalendar] - the output calendar to set on the resulting DateTime instance\n * @param {string} [opts.numberingSystem] - the numbering system to set on the resulting DateTime instance\n * @param {string} [opts.weekSettings] - the week settings to set on the resulting DateTime instance\n * @example DateTime.fromISO('2016-05-25T09:08:34.123')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true})\n * @example DateTime.fromISO('2016-05-25T09:08:34.123', {zone: 'utc'})\n * @example DateTime.fromISO('2016-W05-4')\n * @return {DateTime}\n */\n static fromISO(text, opts = {}) {\n const [vals, parsedZone] = parseISODate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"ISO 8601\", text);\n }\n\n /**\n * Create a DateTime from an RFC 2822 string\n * @param {string} text - the RFC 2822 string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since the offset is always specified in the string itself, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23:12 GMT')\n * @example DateTime.fromRFC2822('Fri, 25 Nov 2016 13:23:12 +0600')\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23 Z')\n * @return {DateTime}\n */\n static fromRFC2822(text, opts = {}) {\n const [vals, parsedZone] = parseRFC2822Date(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"RFC 2822\", text);\n }\n\n /**\n * Create a DateTime from an HTTP header date\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @param {string} text - the HTTP header date\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since HTTP dates are always in UTC, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with the fixed-offset zone specified in the string. For HTTP dates, this is always UTC, so this option is equivalent to setting the `zone` option to 'utc', but this option is included for consistency with similar methods.\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n * @example DateTime.fromHTTP('Sun, 06 Nov 1994 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sunday, 06-Nov-94 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sun Nov 6 08:49:37 1994')\n * @return {DateTime}\n */\n static fromHTTP(text, opts = {}) {\n const [vals, parsedZone] = parseHTTPDate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"HTTP\", opts);\n }\n\n /**\n * Create a DateTime from an input string and format string.\n * Defaults to en-US if no locale has been specified, regardless of the system's locale. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/parsing?id=table-of-tokens).\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see the link below for the formats)\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromFormat(text, fmt, opts = {}) {\n if (isUndefined(text) || isUndefined(fmt)) {\n throw new InvalidArgumentError(\"fromFormat requires an input string and a format\");\n }\n\n const { locale = null, numberingSystem = null } = opts,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n }),\n [vals, parsedZone, specificOffset, invalid] = parseFromTokens(localeToUse, text, fmt);\n if (invalid) {\n return DateTime.invalid(invalid);\n } else {\n return parseDataToDateTime(vals, parsedZone, opts, `format ${fmt}`, text, specificOffset);\n }\n }\n\n /**\n * @deprecated use fromFormat instead\n */\n static fromString(text, fmt, opts = {}) {\n return DateTime.fromFormat(text, fmt, opts);\n }\n\n /**\n * Create a DateTime from a SQL date, time, or datetime\n * Defaults to en-US if no locale has been specified, regardless of the system's locale\n * @param {string} text - the string to parse\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @example DateTime.fromSQL('2017-05-15')\n * @example DateTime.fromSQL('2017-05-15 09:12:34')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342+06:00')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles', { setZone: true })\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342', { zone: 'America/Los_Angeles' })\n * @example DateTime.fromSQL('09:12:34.342')\n * @return {DateTime}\n */\n static fromSQL(text, opts = {}) {\n const [vals, parsedZone] = parseSQL(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"SQL\", text);\n }\n\n /**\n * Create an invalid DateTime.\n * @param {string} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent.\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {DateTime}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the DateTime is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDateTimeError(invalid);\n } else {\n return new DateTime({ invalid });\n }\n }\n\n /**\n * Check if an object is an instance of DateTime. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDateTime(o) {\n return (o && o.isLuxonDateTime) || false;\n }\n\n /**\n * Produce the format string for a set of options\n * @param formatOpts\n * @param localeOpts\n * @returns {string}\n */\n static parseFormatForOpts(formatOpts, localeOpts = {}) {\n const tokenList = formatOptsToTokens(formatOpts, Locale.fromObject(localeOpts));\n return !tokenList ? null : tokenList.map((t) => (t ? t.val : null)).join(\"\");\n }\n\n /**\n * Produce the the fully expanded format token for the locale\n * Does NOT quote characters, so quoted tokens will not round trip correctly\n * @param fmt\n * @param localeOpts\n * @returns {string}\n */\n static expandFormat(fmt, localeOpts = {}) {\n const expanded = expandMacroTokens(Formatter.parseFormat(fmt), Locale.fromObject(localeOpts));\n return expanded.map((t) => t.val).join(\"\");\n }\n\n static resetCache() {\n zoneOffsetTs = undefined;\n zoneOffsetGuessCache = {};\n }\n\n // INFO\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example DateTime.local(2017, 7, 4).get('month'); //=> 7\n * @example DateTime.local(2017, 7, 4).get('day'); //=> 4\n * @return {number}\n */\n get(unit) {\n return this[unit];\n }\n\n /**\n * Returns whether the DateTime is valid. Invalid DateTimes occur when:\n * * The DateTime was created from invalid calendar information, such as the 13th month or February 30\n * * The DateTime was created by an operation on another invalid date\n * @type {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this DateTime is invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this DateTime became invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Get the locale of a DateTime, such 'en-GB'. The locale is used when formatting the DateTime\n *\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a DateTime, such 'beng'. The numbering system is used when formatting the DateTime\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Get the output calendar of a DateTime, such 'islamic'. The output calendar is used when formatting the DateTime\n *\n * @type {string}\n */\n get outputCalendar() {\n return this.isValid ? this.loc.outputCalendar : null;\n }\n\n /**\n * Get the time zone associated with this DateTime.\n * @type {Zone}\n */\n get zone() {\n return this._zone;\n }\n\n /**\n * Get the name of the time zone.\n * @type {string}\n */\n get zoneName() {\n return this.isValid ? this.zone.name : null;\n }\n\n /**\n * Get the year\n * @example DateTime.local(2017, 5, 25).year //=> 2017\n * @type {number}\n */\n get year() {\n return this.isValid ? this.c.year : NaN;\n }\n\n /**\n * Get the quarter\n * @example DateTime.local(2017, 5, 25).quarter //=> 2\n * @type {number}\n */\n get quarter() {\n return this.isValid ? Math.ceil(this.c.month / 3) : NaN;\n }\n\n /**\n * Get the month (1-12).\n * @example DateTime.local(2017, 5, 25).month //=> 5\n * @type {number}\n */\n get month() {\n return this.isValid ? this.c.month : NaN;\n }\n\n /**\n * Get the day of the month (1-30ish).\n * @example DateTime.local(2017, 5, 25).day //=> 25\n * @type {number}\n */\n get day() {\n return this.isValid ? this.c.day : NaN;\n }\n\n /**\n * Get the hour of the day (0-23).\n * @example DateTime.local(2017, 5, 25, 9).hour //=> 9\n * @type {number}\n */\n get hour() {\n return this.isValid ? this.c.hour : NaN;\n }\n\n /**\n * Get the minute of the hour (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30).minute //=> 30\n * @type {number}\n */\n get minute() {\n return this.isValid ? this.c.minute : NaN;\n }\n\n /**\n * Get the second of the minute (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52).second //=> 52\n * @type {number}\n */\n get second() {\n return this.isValid ? this.c.second : NaN;\n }\n\n /**\n * Get the millisecond of the second (0-999).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52, 654).millisecond //=> 654\n * @type {number}\n */\n get millisecond() {\n return this.isValid ? this.c.millisecond : NaN;\n }\n\n /**\n * Get the week year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 12, 31).weekYear //=> 2015\n * @type {number}\n */\n get weekYear() {\n return this.isValid ? possiblyCachedWeekData(this).weekYear : NaN;\n }\n\n /**\n * Get the week number of the week year (1-52ish).\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2017, 5, 25).weekNumber //=> 21\n * @type {number}\n */\n get weekNumber() {\n return this.isValid ? possiblyCachedWeekData(this).weekNumber : NaN;\n }\n\n /**\n * Get the day of the week.\n * 1 is Monday and 7 is Sunday\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 11, 31).weekday //=> 4\n * @type {number}\n */\n get weekday() {\n return this.isValid ? possiblyCachedWeekData(this).weekday : NaN;\n }\n\n /**\n * Returns true if this date is on a weekend according to the locale, false otherwise\n * @returns {boolean}\n */\n get isWeekend() {\n return this.isValid && this.loc.getWeekendDays().includes(this.weekday);\n }\n\n /**\n * Get the day of the week according to the locale.\n * 1 is the first day of the week and 7 is the last day of the week.\n * If the locale assigns Sunday as the first day of the week, then a date which is a Sunday will return 1,\n * @returns {number}\n */\n get localWeekday() {\n return this.isValid ? possiblyCachedLocalWeekData(this).weekday : NaN;\n }\n\n /**\n * Get the week number of the week year according to the locale. Different locales assign week numbers differently,\n * because the week can start on different days of the week (see localWeekday) and because a different number of days\n * is required for a week to count as the first week of a year.\n * @returns {number}\n */\n get localWeekNumber() {\n return this.isValid ? possiblyCachedLocalWeekData(this).weekNumber : NaN;\n }\n\n /**\n * Get the week year according to the locale. Different locales assign week numbers (and therefor week years)\n * differently, see localWeekNumber.\n * @returns {number}\n */\n get localWeekYear() {\n return this.isValid ? possiblyCachedLocalWeekData(this).weekYear : NaN;\n }\n\n /**\n * Get the ordinal (meaning the day of the year)\n * @example DateTime.local(2017, 5, 25).ordinal //=> 145\n * @type {number|DateTime}\n */\n get ordinal() {\n return this.isValid ? gregorianToOrdinal(this.c).ordinal : NaN;\n }\n\n /**\n * Get the human readable short month name, such as 'Oct'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthShort //=> Oct\n * @type {string}\n */\n get monthShort() {\n return this.isValid ? Info.months(\"short\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable long month name, such as 'October'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthLong //=> October\n * @type {string}\n */\n get monthLong() {\n return this.isValid ? Info.months(\"long\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable short weekday, such as 'Mon'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayShort //=> Mon\n * @type {string}\n */\n get weekdayShort() {\n return this.isValid ? Info.weekdays(\"short\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the human readable long weekday, such as 'Monday'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayLong //=> Monday\n * @type {string}\n */\n get weekdayLong() {\n return this.isValid ? Info.weekdays(\"long\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the UTC offset of this DateTime in minutes\n * @example DateTime.now().offset //=> -240\n * @example DateTime.utc().offset //=> 0\n * @type {number}\n */\n get offset() {\n return this.isValid ? +this.o : NaN;\n }\n\n /**\n * Get the short human name for the zone's current offset, for example \"EST\" or \"EDT\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameShort() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"short\",\n locale: this.locale,\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get the long human name for the zone's current offset, for example \"Eastern Standard Time\" or \"Eastern Daylight Time\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameLong() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"long\",\n locale: this.locale,\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get whether this zone's offset ever changes, as in a DST.\n * @type {boolean}\n */\n get isOffsetFixed() {\n return this.isValid ? this.zone.isUniversal : null;\n }\n\n /**\n * Get whether the DateTime is in a DST.\n * @type {boolean}\n */\n get isInDST() {\n if (this.isOffsetFixed) {\n return false;\n } else {\n return (\n this.offset > this.set({ month: 1, day: 1 }).offset ||\n this.offset > this.set({ month: 5 }).offset\n );\n }\n }\n\n /**\n * Get those DateTimes which have the same local time as this DateTime, but a different offset from UTC\n * in this DateTime's zone. During DST changes local time can be ambiguous, for example\n * `2023-10-29T02:30:00` in `Europe/Berlin` can have offset `+01:00` or `+02:00`.\n * This method will return both possible DateTimes if this DateTime's local time is ambiguous.\n * @returns {DateTime[]}\n */\n getPossibleOffsets() {\n if (!this.isValid || this.isOffsetFixed) {\n return [this];\n }\n const dayMs = 86400000;\n const minuteMs = 60000;\n const localTS = objToLocalTS(this.c);\n const oEarlier = this.zone.offset(localTS - dayMs);\n const oLater = this.zone.offset(localTS + dayMs);\n\n const o1 = this.zone.offset(localTS - oEarlier * minuteMs);\n const o2 = this.zone.offset(localTS - oLater * minuteMs);\n if (o1 === o2) {\n return [this];\n }\n const ts1 = localTS - o1 * minuteMs;\n const ts2 = localTS - o2 * minuteMs;\n const c1 = tsToObj(ts1, o1);\n const c2 = tsToObj(ts2, o2);\n if (\n c1.hour === c2.hour &&\n c1.minute === c2.minute &&\n c1.second === c2.second &&\n c1.millisecond === c2.millisecond\n ) {\n return [clone(this, { ts: ts1 }), clone(this, { ts: ts2 })];\n }\n return [this];\n }\n\n /**\n * Returns true if this DateTime is in a leap year, false otherwise\n * @example DateTime.local(2016).isInLeapYear //=> true\n * @example DateTime.local(2013).isInLeapYear //=> false\n * @type {boolean}\n */\n get isInLeapYear() {\n return isLeapYear(this.year);\n }\n\n /**\n * Returns the number of days in this DateTime's month\n * @example DateTime.local(2016, 2).daysInMonth //=> 29\n * @example DateTime.local(2016, 3).daysInMonth //=> 31\n * @type {number}\n */\n get daysInMonth() {\n return daysInMonth(this.year, this.month);\n }\n\n /**\n * Returns the number of days in this DateTime's year\n * @example DateTime.local(2016).daysInYear //=> 366\n * @example DateTime.local(2013).daysInYear //=> 365\n * @type {number}\n */\n get daysInYear() {\n return this.isValid ? daysInYear(this.year) : NaN;\n }\n\n /**\n * Returns the number of weeks in this DateTime's year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2004).weeksInWeekYear //=> 53\n * @example DateTime.local(2013).weeksInWeekYear //=> 52\n * @type {number}\n */\n get weeksInWeekYear() {\n return this.isValid ? weeksInWeekYear(this.weekYear) : NaN;\n }\n\n /**\n * Returns the number of weeks in this DateTime's local week year\n * @example DateTime.local(2020, 6, {locale: 'en-US'}).weeksInLocalWeekYear //=> 52\n * @example DateTime.local(2020, 6, {locale: 'de-DE'}).weeksInLocalWeekYear //=> 53\n * @type {number}\n */\n get weeksInLocalWeekYear() {\n return this.isValid\n ? weeksInWeekYear(\n this.localWeekYear,\n this.loc.getMinDaysInFirstWeek(),\n this.loc.getStartOfWeek()\n )\n : NaN;\n }\n\n /**\n * Returns the resolved Intl options for this DateTime.\n * This is useful in understanding the behavior of formatting methods\n * @param {Object} opts - the same options as toLocaleString\n * @return {Object}\n */\n resolvedLocaleOptions(opts = {}) {\n const { locale, numberingSystem, calendar } = Formatter.create(\n this.loc.clone(opts),\n opts\n ).resolvedOptions(this);\n return { locale, numberingSystem, outputCalendar: calendar };\n }\n\n // TRANSFORM\n\n /**\n * \"Set\" the DateTime's zone to UTC. Returns a newly-constructed DateTime.\n *\n * Equivalent to {@link DateTime#setZone}('utc')\n * @param {number} [offset=0] - optionally, an offset from UTC in minutes\n * @param {Object} [opts={}] - options to pass to `setZone()`\n * @return {DateTime}\n */\n toUTC(offset = 0, opts = {}) {\n return this.setZone(FixedOffsetZone.instance(offset), opts);\n }\n\n /**\n * \"Set\" the DateTime's zone to the host's local zone. Returns a newly-constructed DateTime.\n *\n * Equivalent to `setZone('local')`\n * @return {DateTime}\n */\n toLocal() {\n return this.setZone(Settings.defaultZone);\n }\n\n /**\n * \"Set\" the DateTime's zone to specified zone. Returns a newly-constructed DateTime.\n *\n * By default, the setter keeps the underlying time the same (as in, the same timestamp), but the new instance will report different local times and consider DSTs when making computations, as with {@link DateTime#plus}. You may wish to use {@link DateTime#toLocal} and {@link DateTime#toUTC} which provide simple convenience wrappers for commonly used zones.\n * @param {string|Zone} [zone='local'] - a zone identifier. As a string, that can be any IANA zone supported by the host environment, or a fixed-offset name of the form 'UTC+3', or the strings 'local' or 'utc'. You may also supply an instance of a {@link DateTime#Zone} class.\n * @param {Object} opts - options\n * @param {boolean} [opts.keepLocalTime=false] - If true, adjust the underlying time so that the local time stays the same, but in the target zone. You should rarely need this.\n * @return {DateTime}\n */\n setZone(zone, { keepLocalTime = false, keepCalendarTime = false } = {}) {\n zone = normalizeZone(zone, Settings.defaultZone);\n if (zone.equals(this.zone)) {\n return this;\n } else if (!zone.isValid) {\n return DateTime.invalid(unsupportedZone(zone));\n } else {\n let newTS = this.ts;\n if (keepLocalTime || keepCalendarTime) {\n const offsetGuess = zone.offset(this.ts);\n const asObj = this.toObject();\n [newTS] = objToTS(asObj, offsetGuess, zone);\n }\n return clone(this, { ts: newTS, zone });\n }\n }\n\n /**\n * \"Set\" the locale, numberingSystem, or outputCalendar. Returns a newly-constructed DateTime.\n * @param {Object} properties - the properties to set\n * @example DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' })\n * @return {DateTime}\n */\n reconfigure({ locale, numberingSystem, outputCalendar } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem, outputCalendar });\n return clone(this, { loc });\n }\n\n /**\n * \"Set\" the locale. Returns a newly-constructed DateTime.\n * Just a convenient alias for reconfigure({ locale })\n * @example DateTime.local(2017, 5, 25).setLocale('en-GB')\n * @return {DateTime}\n */\n setLocale(locale) {\n return this.reconfigure({ locale });\n }\n\n /**\n * \"Set\" the values of specified units. Returns a newly-constructed DateTime.\n * You can only set units with this method; for \"setting\" metadata, see {@link DateTime#reconfigure} and {@link DateTime#setZone}.\n *\n * This method also supports setting locale-based week units, i.e. `localWeekday`, `localWeekNumber` and `localWeekYear`.\n * They cannot be mixed with ISO-week units like `weekday`.\n * @param {Object} values - a mapping of units to numbers\n * @example dt.set({ year: 2017 })\n * @example dt.set({ hour: 8, minute: 30 })\n * @example dt.set({ weekday: 5 })\n * @example dt.set({ year: 2005, ordinal: 234 })\n * @return {DateTime}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const normalized = normalizeObject(values, normalizeUnitWithLocalWeeks);\n const { minDaysInFirstWeek, startOfWeek } = usesLocalWeekValues(normalized, this.loc);\n\n const settingWeekStuff =\n !isUndefined(normalized.weekYear) ||\n !isUndefined(normalized.weekNumber) ||\n !isUndefined(normalized.weekday),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber;\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n let mixed;\n if (settingWeekStuff) {\n mixed = weekToGregorian(\n { ...gregorianToWeek(this.c, minDaysInFirstWeek, startOfWeek), ...normalized },\n minDaysInFirstWeek,\n startOfWeek\n );\n } else if (!isUndefined(normalized.ordinal)) {\n mixed = ordinalToGregorian({ ...gregorianToOrdinal(this.c), ...normalized });\n } else {\n mixed = { ...this.toObject(), ...normalized };\n\n // if we didn't set the day but we ended up on an overflow date,\n // use the last day of the right month\n if (isUndefined(normalized.day)) {\n mixed.day = Math.min(daysInMonth(mixed.year, mixed.month), mixed.day);\n }\n }\n\n const [ts, o] = objToTS(mixed, this.o, this.zone);\n return clone(this, { ts, o });\n }\n\n /**\n * Add a period of time to this DateTime and return the resulting DateTime\n *\n * Adding hours, minutes, seconds, or milliseconds increases the timestamp by the right number of milliseconds. Adding days, months, or years shifts the calendar, accounting for DSTs and leap years along the way. Thus, `dt.plus({ hours: 24 })` may result in a different time than `dt.plus({ days: 1 })` if there's a DST shift in between.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @example DateTime.now().plus(123) //~> in 123 milliseconds\n * @example DateTime.now().plus({ minutes: 15 }) //~> in 15 minutes\n * @example DateTime.now().plus({ days: 1 }) //~> this time tomorrow\n * @example DateTime.now().plus({ days: -1 }) //~> this time yesterday\n * @example DateTime.now().plus({ hours: 3, minutes: 13 }) //~> in 3 hr, 13 min\n * @example DateTime.now().plus(Duration.fromObject({ hours: 3, minutes: 13 })) //~> in 3 hr, 13 min\n * @return {DateTime}\n */\n plus(duration) {\n if (!this.isValid) return this;\n const dur = Duration.fromDurationLike(duration);\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * Subtract a period of time to this DateTime and return the resulting DateTime\n * See {@link DateTime#plus}\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n @return {DateTime}\n */\n minus(duration) {\n if (!this.isValid) return this;\n const dur = Duration.fromDurationLike(duration).negate();\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * \"Set\" this DateTime to the beginning of a unit of time.\n * @param {string} unit - The unit to go to the beginning of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week\n * @example DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01'\n * @example DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01'\n * @example DateTime.local(2014, 3, 3).startOf('week').toISODate(); //=> '2014-03-03', weeks always start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('day').toISOTime(); //=> '00:00.000-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00'\n * @return {DateTime}\n */\n startOf(unit, { useLocaleWeeks = false } = {}) {\n if (!this.isValid) return this;\n\n const o = {},\n normalizedUnit = Duration.normalizeUnit(unit);\n switch (normalizedUnit) {\n case \"years\":\n o.month = 1;\n // falls through\n case \"quarters\":\n case \"months\":\n o.day = 1;\n // falls through\n case \"weeks\":\n case \"days\":\n o.hour = 0;\n // falls through\n case \"hours\":\n o.minute = 0;\n // falls through\n case \"minutes\":\n o.second = 0;\n // falls through\n case \"seconds\":\n o.millisecond = 0;\n break;\n case \"milliseconds\":\n break;\n // no default, invalid units throw in normalizeUnit()\n }\n\n if (normalizedUnit === \"weeks\") {\n if (useLocaleWeeks) {\n const startOfWeek = this.loc.getStartOfWeek();\n const { weekday } = this;\n if (weekday < startOfWeek) {\n o.weekNumber = this.weekNumber - 1;\n }\n o.weekday = startOfWeek;\n } else {\n o.weekday = 1;\n }\n }\n\n if (normalizedUnit === \"quarters\") {\n const q = Math.ceil(this.month / 3);\n o.month = (q - 1) * 3 + 1;\n }\n\n return this.set(o);\n }\n\n /**\n * \"Set\" this DateTime to the end (meaning the last millisecond) of a unit of time\n * @param {string} unit - The unit to go to the end of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week\n * @example DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('week').toISO(); // => '2014-03-09T23:59:59.999-05:00', weeks start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('day').toISO(); //=> '2014-03-03T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00'\n * @return {DateTime}\n */\n endOf(unit, opts) {\n return this.isValid\n ? this.plus({ [unit]: 1 })\n .startOf(unit, opts)\n .minus(1)\n : this;\n }\n\n // OUTPUT\n\n /**\n * Returns a string representation of this DateTime formatted according to the specified format string.\n * **You may not want this.** See {@link DateTime#toLocaleString} for a more flexible formatting tool. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/formatting?id=table-of-tokens).\n * Defaults to en-US if no locale has been specified, regardless of the system's locale.\n * @param {string} fmt - the format string\n * @param {Object} opts - opts to override the configuration options on this DateTime\n * @example DateTime.now().toFormat('yyyy LLL dd') //=> '2017 Apr 22'\n * @example DateTime.now().setLocale('fr').toFormat('yyyy LLL dd') //=> '2017 avr. 22'\n * @example DateTime.now().toFormat('yyyy LLL dd', { locale: \"fr\" }) //=> '2017 avr. 22'\n * @example DateTime.now().toFormat(\"HH 'hours and' mm 'minutes'\") //=> '20 hours and 55 minutes'\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`.\n * The exact behavior of this method is browser-specific, but in general it will return an appropriate representation\n * of the DateTime in the assigned locale.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param formatOpts {Object} - Intl.DateTimeFormat constructor options and configuration options\n * @param {Object} opts - opts to override the configuration options on this DateTime\n * @example DateTime.now().toLocaleString(); //=> 4/20/2017\n * @example DateTime.now().setLocale('en-gb').toLocaleString(); //=> '20/04/2017'\n * @example DateTime.now().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017'\n * @example DateTime.now().toLocaleString(DateTime.DATE_FULL, { locale: 'fr' }); //=> '28 ao\u00FBt 2022'\n * @example DateTime.now().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM'\n * @example DateTime.now().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM'\n * @example DateTime.now().toLocaleString({ weekday: 'long', month: 'long', day: '2-digit' }); //=> 'Thursday, April 20'\n * @example DateTime.now().toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> 'Thu, Apr 20, 11:27 AM'\n * @example DateTime.now().toLocaleString({ hour: '2-digit', minute: '2-digit', hourCycle: 'h23' }); //=> '11:32'\n * @return {string}\n */\n toLocaleString(formatOpts = Formats.DATE_SHORT, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), formatOpts).formatDateTime(this)\n : INVALID;\n }\n\n /**\n * Returns an array of format \"parts\", meaning individual tokens along with metadata. This is allows callers to post-process individual sections of the formatted output.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts\n * @param opts {Object} - Intl.DateTimeFormat constructor options, same as `toLocaleString`.\n * @example DateTime.now().toLocaleParts(); //=> [\n * //=> { type: 'day', value: '25' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'month', value: '05' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'year', value: '1982' }\n * //=> ]\n */\n toLocaleParts(opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), opts).formatDateTimeParts(this)\n : [];\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.extendedZone=false] - add the time zone format extension\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1983, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z'\n * @example DateTime.now().toISO() //=> '2017-04-22T20:47:05.335-04:00'\n * @example DateTime.now().toISO({ includeOffset: false }) //=> '2017-04-22T20:47:05.335'\n * @example DateTime.now().toISO({ format: 'basic' }) //=> '20170422T204705.335-0400'\n * @return {string}\n */\n toISO({\n format = \"extended\",\n suppressSeconds = false,\n suppressMilliseconds = false,\n includeOffset = true,\n extendedZone = false,\n } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n const ext = format === \"extended\";\n\n let c = toISODate(this, ext);\n c += \"T\";\n c += toISOTime(this, ext, suppressSeconds, suppressMilliseconds, includeOffset, extendedZone);\n return c;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's date component\n * @param {Object} opts - options\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1982, 5, 25).toISODate() //=> '1982-05-25'\n * @example DateTime.utc(1982, 5, 25).toISODate({ format: 'basic' }) //=> '19820525'\n * @return {string}\n */\n toISODate({ format = \"extended\" } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return toISODate(this, format === \"extended\");\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's week date\n * @example DateTime.utc(1982, 5, 25).toISOWeekDate() //=> '1982-W21-2'\n * @return {string}\n */\n toISOWeekDate() {\n return toTechFormat(this, \"kkkk-'W'WW-c\");\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's time component\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.extendedZone=true] - add the time zone format extension\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime() //=> '07:34:19.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34, seconds: 0, milliseconds: 0 }).toISOTime({ suppressSeconds: true }) //=> '07:34Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ format: 'basic' }) //=> '073419.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ includePrefix: true }) //=> 'T07:34:19.361Z'\n * @return {string}\n */\n toISOTime({\n suppressMilliseconds = false,\n suppressSeconds = false,\n includeOffset = true,\n includePrefix = false,\n extendedZone = false,\n format = \"extended\",\n } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n let c = includePrefix ? \"T\" : \"\";\n return (\n c +\n toISOTime(\n this,\n format === \"extended\",\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n extendedZone\n )\n );\n }\n\n /**\n * Returns an RFC 2822-compatible string representation of this DateTime\n * @example DateTime.utc(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 +0000'\n * @example DateTime.local(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 -0400'\n * @return {string}\n */\n toRFC2822() {\n return toTechFormat(this, \"EEE, dd LLL yyyy HH:mm:ss ZZZ\", false);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in HTTP headers. The output is always expressed in GMT.\n * Specifically, the string conforms to RFC 1123.\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @example DateTime.utc(2014, 7, 13).toHTTP() //=> 'Sun, 13 Jul 2014 00:00:00 GMT'\n * @example DateTime.utc(2014, 7, 13, 19).toHTTP() //=> 'Sun, 13 Jul 2014 19:00:00 GMT'\n * @return {string}\n */\n toHTTP() {\n return toTechFormat(this.toUTC(), \"EEE, dd LLL yyyy HH:mm:ss 'GMT'\");\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Date\n * @example DateTime.utc(2014, 7, 13).toSQLDate() //=> '2014-07-13'\n * @return {string}\n */\n toSQLDate() {\n if (!this.isValid) {\n return null;\n }\n return toISODate(this, true);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Time\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'\n * @example DateTime.utc().toSQL() //=> '05:15:16.345'\n * @example DateTime.now().toSQL() //=> '05:15:16.345 -04:00'\n * @example DateTime.now().toSQL({ includeOffset: false }) //=> '05:15:16.345'\n * @example DateTime.now().toSQL({ includeZone: false }) //=> '05:15:16.345 America/New_York'\n * @return {string}\n */\n toSQLTime({ includeOffset = true, includeZone = false, includeOffsetSpace = true } = {}) {\n let fmt = \"HH:mm:ss.SSS\";\n\n if (includeZone || includeOffset) {\n if (includeOffsetSpace) {\n fmt += \" \";\n }\n if (includeZone) {\n fmt += \"z\";\n } else if (includeOffset) {\n fmt += \"ZZ\";\n }\n }\n\n return toTechFormat(this, fmt, true);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'\n * @example DateTime.utc(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 Z'\n * @example DateTime.local(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 -04:00'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeOffset: false }) //=> '2014-07-13 00:00:00.000'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeZone: true }) //=> '2014-07-13 00:00:00.000 America/New_York'\n * @return {string}\n */\n toSQL(opts = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return `${this.toSQLDate()} ${this.toSQLTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for debugging\n * @return {string}\n */\n toString() {\n return this.isValid ? this.toISO() : INVALID;\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for the REPL.\n * @return {string}\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n if (this.isValid) {\n return `DateTime { ts: ${this.toISO()}, zone: ${this.zone.name}, locale: ${this.locale} }`;\n } else {\n return `DateTime { Invalid, reason: ${this.invalidReason} }`;\n }\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime. Alias of {@link DateTime#toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime.\n * @return {number}\n */\n toMillis() {\n return this.isValid ? this.ts : NaN;\n }\n\n /**\n * Returns the epoch seconds of this DateTime.\n * @return {number}\n */\n toSeconds() {\n return this.isValid ? this.ts / 1000 : NaN;\n }\n\n /**\n * Returns the epoch seconds (as a whole number) of this DateTime.\n * @return {number}\n */\n toUnixInteger() {\n return this.isValid ? Math.floor(this.ts / 1000) : NaN;\n }\n\n /**\n * Returns an ISO 8601 representation of this DateTime appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns a BSON serializable equivalent to this DateTime.\n * @return {Date}\n */\n toBSON() {\n return this.toJSDate();\n }\n\n /**\n * Returns a JavaScript object with this DateTime's year, month, day, and so on.\n * @param opts - options for generating the object\n * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\n * @example DateTime.now().toObject() //=> { year: 2017, month: 4, day: 22, hour: 20, minute: 49, second: 42, millisecond: 268 }\n * @return {Object}\n */\n toObject(opts = {}) {\n if (!this.isValid) return {};\n\n const base = { ...this.c };\n\n if (opts.includeConfig) {\n base.outputCalendar = this.outputCalendar;\n base.numberingSystem = this.loc.numberingSystem;\n base.locale = this.loc.locale;\n }\n return base;\n }\n\n /**\n * Returns a JavaScript Date equivalent to this DateTime.\n * @return {Date}\n */\n toJSDate() {\n return new Date(this.isValid ? this.ts : NaN);\n }\n\n // COMPARE\n\n /**\n * Return the difference between two DateTimes as a Duration.\n * @param {DateTime} otherDateTime - the DateTime to compare this one to\n * @param {string|string[]} [unit=['milliseconds']] - the unit or array of units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example\n * var i1 = DateTime.fromISO('1982-05-25T09:45'),\n * i2 = DateTime.fromISO('1983-10-14T10:30');\n * i2.diff(i1).toObject() //=> { milliseconds: 43807500000 }\n * i2.diff(i1, 'hours').toObject() //=> { hours: 12168.75 }\n * i2.diff(i1, ['months', 'days']).toObject() //=> { months: 16, days: 19.03125 }\n * i2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 }\n * @return {Duration}\n */\n diff(otherDateTime, unit = \"milliseconds\", opts = {}) {\n if (!this.isValid || !otherDateTime.isValid) {\n return Duration.invalid(\"created by diffing an invalid DateTime\");\n }\n\n const durOpts = { locale: this.locale, numberingSystem: this.numberingSystem, ...opts };\n\n const units = maybeArray(unit).map(Duration.normalizeUnit),\n otherIsLater = otherDateTime.valueOf() > this.valueOf(),\n earlier = otherIsLater ? this : otherDateTime,\n later = otherIsLater ? otherDateTime : this,\n diffed = diff(earlier, later, units, durOpts);\n\n return otherIsLater ? diffed.negate() : diffed;\n }\n\n /**\n * Return the difference between this DateTime and right now.\n * See {@link DateTime#diff}\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units units (such as 'hours' or 'days') to include in the duration\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n diffNow(unit = \"milliseconds\", opts = {}) {\n return this.diff(DateTime.now(), unit, opts);\n }\n\n /**\n * Return an Interval spanning between this DateTime and another DateTime\n * @param {DateTime} otherDateTime - the other end point of the Interval\n * @return {Interval}\n */\n until(otherDateTime) {\n return this.isValid ? Interval.fromDateTimes(this, otherDateTime) : this;\n }\n\n /**\n * Return whether this DateTime is in the same unit of time as another DateTime.\n * Higher-order units must also be identical for this function to return `true`.\n * Note that time zones are **ignored** in this comparison, which compares the **local** calendar time. Use {@link DateTime#setZone} to convert one of the dates if needed.\n * @param {DateTime} otherDateTime - the other DateTime\n * @param {string} unit - the unit of time to check sameness on\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week; only the locale of this DateTime is used\n * @example DateTime.now().hasSame(otherDT, 'day'); //~> true if otherDT is in the same current calendar day\n * @return {boolean}\n */\n hasSame(otherDateTime, unit, opts) {\n if (!this.isValid) return false;\n\n const inputMs = otherDateTime.valueOf();\n const adjustedToZone = this.setZone(otherDateTime.zone, { keepLocalTime: true });\n return (\n adjustedToZone.startOf(unit, opts) <= inputMs && inputMs <= adjustedToZone.endOf(unit, opts)\n );\n }\n\n /**\n * Equality check\n * Two DateTimes are equal if and only if they represent the same millisecond, have the same zone and location, and are both valid.\n * To compare just the millisecond values, use `+dt1 === +dt2`.\n * @param {DateTime} other - the other DateTime\n * @return {boolean}\n */\n equals(other) {\n return (\n this.isValid &&\n other.isValid &&\n this.valueOf() === other.valueOf() &&\n this.zone.equals(other.zone) &&\n this.loc.equals(other.loc)\n );\n }\n\n /**\n * Returns a string representation of a this time relative to now, such as \"in two days\". Can only internationalize if your\n * platform supports Intl.RelativeTimeFormat. Rounds down by default.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} [options.style=\"long\"] - the style of units, must be \"long\", \"short\", or \"narrow\"\n * @param {string|string[]} options.unit - use a specific unit or array of units; if omitted, or an array, the method will pick the best unit. Use an array or one of \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", or \"seconds\"\n * @param {boolean} [options.round=true] - whether to round the numbers in the output.\n * @param {number} [options.padding=0] - padding in milliseconds. This allows you to round up the result if it fits inside the threshold. Don't use in combination with {round: false} because the decimal output will include the padding.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelative() //=> \"in 1 day\"\n * @example DateTime.now().setLocale(\"es\").toRelative({ days: 1 }) //=> \"dentro de 1 d\u00EDa\"\n * @example DateTime.now().plus({ days: 1 }).toRelative({ locale: \"fr\" }) //=> \"dans 23 heures\"\n * @example DateTime.now().minus({ days: 2 }).toRelative() //=> \"2 days ago\"\n * @example DateTime.now().minus({ days: 2 }).toRelative({ unit: \"hours\" }) //=> \"48 hours ago\"\n * @example DateTime.now().minus({ hours: 36 }).toRelative({ round: false }) //=> \"1.5 days ago\"\n */\n toRelative(options = {}) {\n if (!this.isValid) return null;\n const base = options.base || DateTime.fromObject({}, { zone: this.zone }),\n padding = options.padding ? (this < base ? -options.padding : options.padding) : 0;\n let units = [\"years\", \"months\", \"days\", \"hours\", \"minutes\", \"seconds\"];\n let unit = options.unit;\n if (Array.isArray(options.unit)) {\n units = options.unit;\n unit = undefined;\n }\n return diffRelative(base, this.plus(padding), {\n ...options,\n numeric: \"always\",\n units,\n unit,\n });\n }\n\n /**\n * Returns a string representation of this date relative to today, such as \"yesterday\" or \"next month\".\n * Only internationalizes on platforms that supports Intl.RelativeTimeFormat.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of \"years\", \"quarters\", \"months\", \"weeks\", or \"days\"\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar() //=> \"tomorrow\"\n * @example DateTime.now().setLocale(\"es\").plus({ days: 1 }).toRelative() //=> \"\"ma\u00F1ana\"\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar({ locale: \"fr\" }) //=> \"demain\"\n * @example DateTime.now().minus({ days: 2 }).toRelativeCalendar() //=> \"2 days ago\"\n */\n toRelativeCalendar(options = {}) {\n if (!this.isValid) return null;\n\n return diffRelative(options.base || DateTime.fromObject({}, { zone: this.zone }), this, {\n ...options,\n numeric: \"auto\",\n units: [\"years\", \"months\", \"days\"],\n calendary: true,\n });\n }\n\n /**\n * Return the min of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the minimum\n * @return {DateTime} the min DateTime, or undefined if called with no argument\n */\n static min(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"min requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, (i) => i.valueOf(), Math.min);\n }\n\n /**\n * Return the max of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the maximum\n * @return {DateTime} the max DateTime, or undefined if called with no argument\n */\n static max(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"max requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, (i) => i.valueOf(), Math.max);\n }\n\n // MISC\n\n /**\n * Explain how a string would be parsed by fromFormat()\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see description)\n * @param {Object} options - options taken by fromFormat()\n * @return {Object}\n */\n static fromFormatExplain(text, fmt, options = {}) {\n const { locale = null, numberingSystem = null } = options,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n });\n return explainFromTokens(localeToUse, text, fmt);\n }\n\n /**\n * @deprecated use fromFormatExplain instead\n */\n static fromStringExplain(text, fmt, options = {}) {\n return DateTime.fromFormatExplain(text, fmt, options);\n }\n\n /**\n * Build a parser for `fmt` using the given locale. This parser can be passed\n * to {@link DateTime.fromFormatParser} to a parse a date in this format. This\n * can be used to optimize cases where many dates need to be parsed in a\n * specific format.\n *\n * @param {String} fmt - the format the string is expected to be in (see\n * description)\n * @param {Object} options - options used to set locale and numberingSystem\n * for parser\n * @returns {TokenParser} - opaque object to be used\n */\n static buildFormatParser(fmt, options = {}) {\n const { locale = null, numberingSystem = null } = options,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n });\n return new TokenParser(localeToUse, fmt);\n }\n\n /**\n * Create a DateTime from an input string and format parser.\n *\n * The format parser must have been created with the same locale as this call.\n *\n * @param {String} text - the string to parse\n * @param {TokenParser} formatParser - parser from {@link DateTime.buildFormatParser}\n * @param {Object} opts - options taken by fromFormat()\n * @returns {DateTime}\n */\n static fromFormatParser(text, formatParser, opts = {}) {\n if (isUndefined(text) || isUndefined(formatParser)) {\n throw new InvalidArgumentError(\n \"fromFormatParser requires an input string and a format parser\"\n );\n }\n const { locale = null, numberingSystem = null } = opts,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n });\n\n if (!localeToUse.equals(formatParser.locale)) {\n throw new InvalidArgumentError(\n `fromFormatParser called with a locale of ${localeToUse}, ` +\n `but the format parser was created for ${formatParser.locale}`\n );\n }\n\n const { result, zone, specificOffset, invalidReason } = formatParser.explainFromTokens(text);\n\n if (invalidReason) {\n return DateTime.invalid(invalidReason);\n } else {\n return parseDataToDateTime(\n result,\n zone,\n opts,\n `format ${formatParser.format}`,\n text,\n specificOffset\n );\n }\n }\n\n // FORMAT PRESETS\n\n /**\n * {@link DateTime#toLocaleString} format like 10/14/1983\n * @type {Object}\n */\n static get DATE_SHORT() {\n return Formats.DATE_SHORT;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED() {\n return Formats.DATE_MED;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Fri, Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED_WITH_WEEKDAY() {\n return Formats.DATE_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983'\n * @type {Object}\n */\n static get DATE_FULL() {\n return Formats.DATE_FULL;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Tuesday, October 14, 1983'\n * @type {Object}\n */\n static get DATE_HUGE() {\n return Formats.DATE_HUGE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_SIMPLE() {\n return Formats.TIME_SIMPLE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SECONDS() {\n return Formats.TIME_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SHORT_OFFSET() {\n return Formats.TIME_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_LONG_OFFSET() {\n return Formats.TIME_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_SIMPLE() {\n return Formats.TIME_24_SIMPLE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SECONDS() {\n return Formats.TIME_24_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 EDT', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SHORT_OFFSET() {\n return Formats.TIME_24_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 Eastern Daylight Time', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_LONG_OFFSET() {\n return Formats.TIME_24_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT() {\n return Formats.DATETIME_SHORT;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT_WITH_SECONDS() {\n return Formats.DATETIME_SHORT_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED() {\n return Formats.DATETIME_MED;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_SECONDS() {\n return Formats.DATETIME_MED_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Fri, 14 Oct 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_WEEKDAY() {\n return Formats.DATETIME_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL() {\n return Formats.DATETIME_FULL;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30:33 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL_WITH_SECONDS() {\n return Formats.DATETIME_FULL_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE() {\n return Formats.DATETIME_HUGE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30:33 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE_WITH_SECONDS() {\n return Formats.DATETIME_HUGE_WITH_SECONDS;\n }\n}\n\n/**\n * @private\n */\nexport function friendlyDateTime(dateTimeish) {\n if (DateTime.isDateTime(dateTimeish)) {\n return dateTimeish;\n } else if (dateTimeish && dateTimeish.valueOf && isNumber(dateTimeish.valueOf())) {\n return DateTime.fromJSDate(dateTimeish);\n } else if (dateTimeish && typeof dateTimeish === \"object\") {\n return DateTime.fromObject(dateTimeish);\n } else {\n throw new InvalidArgumentError(\n `Unknown datetime argument: ${dateTimeish}, of type ${typeof dateTimeish}`\n );\n }\n}\n", "function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };", "export var DEFAULT_CONFIG = {\n // minimum relative difference between two compared values,\n // used by all comparison functions\n relTol: 1e-12,\n // minimum absolute difference between two compared values,\n // used by all comparison functions\n absTol: 1e-15,\n // type of default matrix output. Choose 'matrix' (default) or 'array'\n matrix: 'Matrix',\n // type of default number output. Choose 'number' (default) 'BigNumber', 'bigint', or 'Fraction'\n number: 'number',\n // type of fallback used for config { number: 'bigint' } when a value cannot be represented\n // in the configured numeric type. Choose 'number' (default) or 'BigNumber'.\n numberFallback: 'number',\n // number of significant digits in BigNumbers\n precision: 64,\n // predictable output type of functions. When true, output type depends only\n // on the input types. When false (default), output type can vary depending\n // on input values. For example `math.sqrt(-4)` returns `complex('2i')` when\n // predictable is false, and returns `NaN` when true.\n predictable: false,\n // random seed for seeded pseudo random number generation\n // null = randomly seed\n randomSeed: null\n};", "import { hasOwnProperty } from './object.js';\n\n/**\n * Get a property of a plain object\n * Throws an error in case the object is not a plain object or the\n * property is not defined on the object itself\n * @param {Object} object\n * @param {string} prop\n * @return {*} Returns the property value when safe\n */\nfunction getSafeProperty(object, prop) {\n // only allow getting safe properties of a plain object\n if (isSafeProperty(object, prop)) {\n return object[prop];\n }\n if (typeof object[prop] === 'function' && isSafeMethod(object, prop)) {\n throw new Error('Cannot access method \"' + prop + '\" as a property');\n }\n throw new Error('No access to property \"' + prop + '\"');\n}\n\n/**\n * Set a property on a plain object.\n * Throws an error in case the object is not a plain object or the\n * property would override an inherited property like .constructor or .toString\n * @param {Object} object\n * @param {string} prop\n * @param {*} value\n * @return {*} Returns the value\n */\n// TODO: merge this function into access.js?\nfunction setSafeProperty(object, prop, value) {\n // only allow setting safe properties of a plain object\n if (isSafeProperty(object, prop)) {\n object[prop] = value;\n return value;\n }\n throw new Error('No access to property \"' + prop + '\"');\n}\n\n/**\n * Test whether a property is safe to use on an object or Array.\n * For example .toString and .constructor are not safe\n * @param {Object | Array} object\n * @param {string} prop\n * @return {boolean} Returns true when safe\n */\nfunction isSafeProperty(object, prop) {\n if (!isPlainObject(object) && !Array.isArray(object)) {\n return false;\n }\n // SAFE: whitelisted\n // e.g length\n if (hasOwnProperty(safeNativeProperties, prop)) {\n return true;\n }\n // UNSAFE: inherited from Object prototype\n // e.g constructor\n if (prop in Object.prototype) {\n // 'in' is used instead of hasOwnProperty for nodejs v0.10\n // which is inconsistent on root prototypes. It is safe\n // here because Object.prototype is a root object\n return false;\n }\n // UNSAFE: inherited from Function prototype\n // e.g call, apply\n if (prop in Function.prototype) {\n // 'in' is used instead of hasOwnProperty for nodejs v0.10\n // which is inconsistent on root prototypes. It is safe\n // here because Function.prototype is a root object\n return false;\n }\n return true;\n}\n\n/**\n * Validate whether a method is safe.\n * Throws an error when that's not the case.\n * @param {Object} object\n * @param {string} method\n * @return {function} Returns the method when valid\n */\nfunction getSafeMethod(object, method) {\n if (!isSafeMethod(object, method)) {\n throw new Error('No access to method \"' + method + '\"');\n }\n return object[method];\n}\n\n/**\n * Check whether a method is safe.\n * Throws an error when that's not the case (for example for `constructor`).\n * @param {Object} object\n * @param {string} method\n * @return {boolean} Returns true when safe, false otherwise\n */\nfunction isSafeMethod(object, method) {\n if (object === null || object === undefined || typeof object[method] !== 'function') {\n return false;\n }\n // UNSAFE: ghosted\n // e.g overridden toString\n // Note that IE10 doesn't support __proto__ and we can't do this check there.\n if (hasOwnProperty(object, method) && Object.getPrototypeOf && method in Object.getPrototypeOf(object)) {\n return false;\n }\n // SAFE: whitelisted\n // e.g toString\n if (hasOwnProperty(safeNativeMethods, method)) {\n return true;\n }\n // UNSAFE: inherited from Object prototype\n // e.g constructor\n if (method in Object.prototype) {\n // 'in' is used instead of hasOwnProperty for nodejs v0.10\n // which is inconsistent on root prototypes. It is safe\n // here because Object.prototype is a root object\n return false;\n }\n // UNSAFE: inherited from Function prototype\n // e.g call, apply\n if (method in Function.prototype) {\n // 'in' is used instead of hasOwnProperty for nodejs v0.10\n // which is inconsistent on root prototypes. It is safe\n // here because Function.prototype is a root object\n return false;\n }\n return true;\n}\nfunction isPlainObject(object) {\n return typeof object === 'object' && object && object.constructor === Object;\n}\nvar safeNativeProperties = {\n length: true,\n name: true\n};\nvar safeNativeMethods = {\n toString: true,\n valueOf: true,\n toLocaleString: true\n};\nexport { getSafeProperty };\nexport { setSafeProperty };\nexport { isSafeProperty };\nexport { getSafeMethod };\nexport { isSafeMethod };\nexport { isPlainObject };", "import { getSafeProperty, isSafeProperty, setSafeProperty } from './customs.js';\nimport { isMap, isObject } from './is.js';\n\n/**\n * A map facade on a bare object.\n *\n * The small number of methods needed to implement a scope,\n * forwarding on to the SafeProperty functions. Over time, the codebase\n * will stop using this method, as all objects will be Maps, rather than\n * more security prone objects.\n */\nexport class ObjectWrappingMap {\n constructor(object) {\n this.wrappedObject = object;\n this[Symbol.iterator] = this.entries;\n }\n keys() {\n return Object.keys(this.wrappedObject).filter(key => this.has(key)).values();\n }\n get(key) {\n return getSafeProperty(this.wrappedObject, key);\n }\n set(key, value) {\n setSafeProperty(this.wrappedObject, key, value);\n return this;\n }\n has(key) {\n return isSafeProperty(this.wrappedObject, key) && key in this.wrappedObject;\n }\n entries() {\n return mapIterator(this.keys(), key => [key, this.get(key)]);\n }\n forEach(callback) {\n for (var key of this.keys()) {\n callback(this.get(key), key, this);\n }\n }\n delete(key) {\n if (isSafeProperty(this.wrappedObject, key)) {\n delete this.wrappedObject[key];\n }\n }\n clear() {\n for (var key of this.keys()) {\n this.delete(key);\n }\n }\n get size() {\n return Object.keys(this.wrappedObject).length;\n }\n}\n\n/**\n * Create a map with two partitions: a and b.\n * The set with bKeys determines which keys/values are read/written to map b,\n * all other values are read/written to map a\n *\n * For example:\n *\n * const a = new Map()\n * const b = new Map()\n * const p = new PartitionedMap(a, b, new Set(['x', 'y']))\n *\n * In this case, values `x` and `y` are read/written to map `b`,\n * all other values are read/written to map `a`.\n */\nexport class PartitionedMap {\n /**\n * @param {Map} a\n * @param {Map} b\n * @param {Set} bKeys\n */\n constructor(a, b, bKeys) {\n this.a = a;\n this.b = b;\n this.bKeys = bKeys;\n this[Symbol.iterator] = this.entries;\n }\n get(key) {\n return this.bKeys.has(key) ? this.b.get(key) : this.a.get(key);\n }\n set(key, value) {\n if (this.bKeys.has(key)) {\n this.b.set(key, value);\n } else {\n this.a.set(key, value);\n }\n return this;\n }\n has(key) {\n return this.b.has(key) || this.a.has(key);\n }\n keys() {\n return new Set([...this.a.keys(), ...this.b.keys()])[Symbol.iterator]();\n }\n entries() {\n return mapIterator(this.keys(), key => [key, this.get(key)]);\n }\n forEach(callback) {\n for (var key of this.keys()) {\n callback(this.get(key), key, this);\n }\n }\n delete(key) {\n return this.bKeys.has(key) ? this.b.delete(key) : this.a.delete(key);\n }\n clear() {\n this.a.clear();\n this.b.clear();\n }\n get size() {\n return [...this.keys()].length;\n }\n}\n\n/**\n * Create a new iterator that maps over the provided iterator, applying a mapping function to each item\n */\nfunction mapIterator(it, callback) {\n return {\n next: () => {\n var n = it.next();\n return n.done ? n : {\n value: callback(n.value),\n done: false\n };\n }\n };\n}\n\n/**\n * Creates an empty map, or whatever your platform's polyfill is.\n *\n * @returns an empty Map or Map like object.\n */\nexport function createEmptyMap() {\n return new Map();\n}\n\n/**\n * Creates a Map from the given object.\n *\n * @param { Map | { [key: string]: unknown } | undefined } mapOrObject\n * @returns\n */\nexport function createMap(mapOrObject) {\n if (!mapOrObject) {\n return createEmptyMap();\n }\n if (isMap(mapOrObject)) {\n return mapOrObject;\n }\n if (isObject(mapOrObject)) {\n return new ObjectWrappingMap(mapOrObject);\n }\n throw new Error('createMap can create maps from objects or Maps');\n}\n\n/**\n * Unwraps a map into an object.\n *\n * @param {Map} map\n * @returns { [key: string]: unknown }\n */\nexport function toObject(map) {\n if (map instanceof ObjectWrappingMap) {\n return map.wrappedObject;\n }\n var object = {};\n for (var key of map.keys()) {\n var value = map.get(key);\n setSafeProperty(object, key, value);\n }\n return object;\n}\n\n/**\n * Copies the contents of key-value pairs from each `objects` in to `map`.\n *\n * Object is `objects` can be a `Map` or object.\n *\n * This is the `Map` analog to `Object.assign`.\n */\nexport function assign(map) {\n for (var _len = arguments.length, objects = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n objects[_key - 1] = arguments[_key];\n }\n for (var args of objects) {\n if (!args) {\n continue;\n }\n if (isMap(args)) {\n for (var key of args.keys()) {\n map.set(key, args.get(key));\n }\n } else if (isObject(args)) {\n for (var _key2 of Object.keys(args)) {\n map.set(_key2, args[_key2]);\n }\n }\n }\n return map;\n}", "// type checks for all known types\n//\n// note that:\n//\n// - check by duck-typing on a property like `isUnit`, instead of checking instanceof.\n// instanceof cannot be used because that would not allow to pass data from\n// one instance of math.js to another since each has it's own instance of Unit.\n// - check the `isUnit` property via the constructor, so there will be no\n// matches for \"fake\" instances like plain objects with a property `isUnit`.\n// That is important for security reasons.\n// - It must not be possible to override the type checks used internally,\n// for security reasons, so these functions are not exposed in the expression\n// parser.\n\nimport { ObjectWrappingMap } from './map.js';\nexport function isNumber(x) {\n return typeof x === 'number';\n}\nexport function isBigNumber(x) {\n if (!x || typeof x !== 'object' || typeof x.constructor !== 'function') {\n return false;\n }\n if (x.isBigNumber === true && typeof x.constructor.prototype === 'object' && x.constructor.prototype.isBigNumber === true) {\n return true;\n }\n if (typeof x.constructor.isDecimal === 'function' && x.constructor.isDecimal(x) === true) {\n return true;\n }\n return false;\n}\nexport function isBigInt(x) {\n return typeof x === 'bigint';\n}\nexport function isComplex(x) {\n return x && typeof x === 'object' && Object.getPrototypeOf(x).isComplex === true || false;\n}\nexport function isFraction(x) {\n return x && typeof x === 'object' && Object.getPrototypeOf(x).isFraction === true || false;\n}\nexport function isUnit(x) {\n return x && x.constructor.prototype.isUnit === true || false;\n}\nexport function isString(x) {\n return typeof x === 'string';\n}\nexport var isArray = Array.isArray;\nexport function isMatrix(x) {\n return x && x.constructor.prototype.isMatrix === true || false;\n}\n\n/**\n * Test whether a value is a collection: an Array or Matrix\n * @param {*} x\n * @returns {boolean} isCollection\n */\nexport function isCollection(x) {\n return Array.isArray(x) || isMatrix(x);\n}\nexport function isDenseMatrix(x) {\n return x && x.isDenseMatrix && x.constructor.prototype.isMatrix === true || false;\n}\nexport function isSparseMatrix(x) {\n return x && x.isSparseMatrix && x.constructor.prototype.isMatrix === true || false;\n}\nexport function isRange(x) {\n return x && x.constructor.prototype.isRange === true || false;\n}\nexport function isIndex(x) {\n return x && x.constructor.prototype.isIndex === true || false;\n}\nexport function isBoolean(x) {\n return typeof x === 'boolean';\n}\nexport function isResultSet(x) {\n return x && x.constructor.prototype.isResultSet === true || false;\n}\nexport function isHelp(x) {\n return x && x.constructor.prototype.isHelp === true || false;\n}\nexport function isFunction(x) {\n return typeof x === 'function';\n}\nexport function isDate(x) {\n return x instanceof Date;\n}\nexport function isRegExp(x) {\n return x instanceof RegExp;\n}\nexport function isObject(x) {\n return !!(x && typeof x === 'object' && x.constructor === Object && !isComplex(x) && !isFraction(x));\n}\n\n/**\n * Returns `true` if the passed object appears to be a Map (i.e. duck typing).\n *\n * Methods looked for are `get`, `set`, `keys` and `has`.\n *\n * @param {Map | object} object\n * @returns\n */\nexport function isMap(object) {\n // We can use the fast instanceof, or a slower duck typing check.\n // The duck typing method needs to cover enough methods to not be confused with DenseMatrix.\n if (!object) {\n return false;\n }\n return object instanceof Map || object instanceof ObjectWrappingMap || typeof object.set === 'function' && typeof object.get === 'function' && typeof object.keys === 'function' && typeof object.has === 'function';\n}\nexport function isPartitionedMap(object) {\n return isMap(object) && isMap(object.a) && isMap(object.b);\n}\nexport function isObjectWrappingMap(object) {\n return isMap(object) && isObject(object.wrappedObject);\n}\nexport function isNull(x) {\n return x === null;\n}\nexport function isUndefined(x) {\n return x === undefined;\n}\nexport function isAccessorNode(x) {\n return x && x.isAccessorNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isArrayNode(x) {\n return x && x.isArrayNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isAssignmentNode(x) {\n return x && x.isAssignmentNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isBlockNode(x) {\n return x && x.isBlockNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isConditionalNode(x) {\n return x && x.isConditionalNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isConstantNode(x) {\n return x && x.isConstantNode === true && x.constructor.prototype.isNode === true || false;\n}\n\n/* Very specialized: returns true for those nodes which in the numerator of\n a fraction means that the division in that fraction has precedence over implicit\n multiplication, e.g. -2/3 x parses as (-2/3) x and 3/4 x parses as (3/4) x but\n 6!/8 x parses as 6! / (8x). It is located here because it is shared between\n parse.js and OperatorNode.js (for parsing and printing, respectively).\n\n This should *not* be exported from mathjs, unlike most of the tests here.\n Its name does not start with 'is' to prevent utils/snapshot.js from thinking\n it should be exported.\n*/\nexport function rule2Node(node) {\n return isConstantNode(node) || isOperatorNode(node) && node.args.length === 1 && isConstantNode(node.args[0]) && '-+~'.includes(node.op);\n}\nexport function isFunctionAssignmentNode(x) {\n return x && x.isFunctionAssignmentNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isFunctionNode(x) {\n return x && x.isFunctionNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isIndexNode(x) {\n return x && x.isIndexNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isNode(x) {\n return x && x.isNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isObjectNode(x) {\n return x && x.isObjectNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isOperatorNode(x) {\n return x && x.isOperatorNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isParenthesisNode(x) {\n return x && x.isParenthesisNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isRangeNode(x) {\n return x && x.isRangeNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isRelationalNode(x) {\n return x && x.isRelationalNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isSymbolNode(x) {\n return x && x.isSymbolNode === true && x.constructor.prototype.isNode === true || false;\n}\nexport function isChain(x) {\n return x && x.constructor.prototype.isChain === true || false;\n}\nexport function typeOf(x) {\n var t = typeof x;\n if (t === 'object') {\n if (x === null) return 'null';\n if (isBigNumber(x)) return 'BigNumber'; // Special: weird mashup with Decimal\n if (x.constructor && x.constructor.name) return x.constructor.name;\n return 'Object'; // just in case\n }\n return t; // can be 'string', 'number', 'boolean', 'function', 'bigint', ...\n}", "import { isBigNumber, isObject } from './is.js';\n\n/**\n * Clone an object\n *\n * clone(x)\n *\n * Can clone any primitive type, array, and object.\n * If x has a function clone, this function will be invoked to clone the object.\n *\n * @param {*} x\n * @return {*} clone\n */\nexport function clone(x) {\n var type = typeof x;\n\n // immutable primitive types\n if (type === 'number' || type === 'bigint' || type === 'string' || type === 'boolean' || x === null || x === undefined) {\n return x;\n }\n\n // use clone function of the object when available\n if (typeof x.clone === 'function') {\n return x.clone();\n }\n\n // array\n if (Array.isArray(x)) {\n return x.map(function (value) {\n return clone(value);\n });\n }\n if (x instanceof Date) return new Date(x.valueOf());\n if (isBigNumber(x)) return x; // bignumbers are immutable\n\n // object\n if (isObject(x)) {\n return mapObject(x, clone);\n }\n if (type === 'function') {\n // we assume that the function is immutable\n return x;\n }\n throw new TypeError(\"Cannot clone: unknown type of value (value: \".concat(x, \")\"));\n}\n\n/**\n * Apply map to all properties of an object\n * @param {Object} object\n * @param {function} callback\n * @return {Object} Returns a copy of the object with mapped properties\n */\nexport function mapObject(object, callback) {\n var clone = {};\n for (var key in object) {\n if (hasOwnProperty(object, key)) {\n clone[key] = callback(object[key]);\n }\n }\n return clone;\n}\n\n/**\n * Extend object a with the properties of object b\n * @param {Object} a\n * @param {Object} b\n * @return {Object} a\n */\nexport function extend(a, b) {\n for (var prop in b) {\n if (hasOwnProperty(b, prop)) {\n a[prop] = b[prop];\n }\n }\n return a;\n}\n\n/**\n * Deep extend an object a with the properties of object b\n * @param {Object} a\n * @param {Object} b\n * @returns {Object}\n */\nexport function deepExtend(a, b) {\n // TODO: add support for Arrays to deepExtend\n if (Array.isArray(b)) {\n throw new TypeError('Arrays are not supported by deepExtend');\n }\n for (var prop in b) {\n // We check against prop not being in Object.prototype or Function.prototype\n // to prevent polluting for example Object.__proto__.\n if (hasOwnProperty(b, prop) && !(prop in Object.prototype) && !(prop in Function.prototype)) {\n if (b[prop] && b[prop].constructor === Object) {\n if (a[prop] === undefined) {\n a[prop] = {};\n }\n if (a[prop] && a[prop].constructor === Object) {\n deepExtend(a[prop], b[prop]);\n } else {\n a[prop] = b[prop];\n }\n } else if (Array.isArray(b[prop])) {\n throw new TypeError('Arrays are not supported by deepExtend');\n } else {\n a[prop] = b[prop];\n }\n }\n }\n return a;\n}\n\n/**\n * Deep test equality of all fields in two pairs of arrays or objects.\n * Compares values and functions strictly (ie. 2 is not the same as '2').\n * @param {Array | Object} a\n * @param {Array | Object} b\n * @returns {boolean}\n */\nexport function deepStrictEqual(a, b) {\n var prop, i, len;\n if (Array.isArray(a)) {\n if (!Array.isArray(b)) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (i = 0, len = a.length; i < len; i++) {\n if (!deepStrictEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n } else if (typeof a === 'function') {\n return a === b;\n } else if (a instanceof Object) {\n if (Array.isArray(b) || !(b instanceof Object)) {\n return false;\n }\n for (prop in a) {\n // noinspection JSUnfilteredForInLoop\n if (!(prop in b) || !deepStrictEqual(a[prop], b[prop])) {\n return false;\n }\n }\n for (prop in b) {\n // noinspection JSUnfilteredForInLoop\n if (!(prop in a)) {\n return false;\n }\n }\n return true;\n } else {\n return a === b;\n }\n}\n\n/**\n * Recursively flatten a nested object.\n * @param {Object} nestedObject\n * @return {Object} Returns the flattened object\n */\nexport function deepFlatten(nestedObject) {\n var flattenedObject = {};\n _deepFlatten(nestedObject, flattenedObject);\n return flattenedObject;\n}\n\n// helper function used by deepFlatten\nfunction _deepFlatten(nestedObject, flattenedObject) {\n for (var prop in nestedObject) {\n if (hasOwnProperty(nestedObject, prop)) {\n var value = nestedObject[prop];\n if (typeof value === 'object' && value !== null) {\n _deepFlatten(value, flattenedObject);\n } else {\n flattenedObject[prop] = value;\n }\n }\n }\n}\n\n/**\n * Test whether the current JavaScript engine supports Object.defineProperty\n * @returns {boolean} returns true if supported\n */\nexport function canDefineProperty() {\n // test needed for broken IE8 implementation\n try {\n if (Object.defineProperty) {\n Object.defineProperty({}, 'x', {\n get: function get() {\n return null;\n }\n });\n return true;\n }\n } catch (e) {}\n return false;\n}\n\n/**\n * Attach a lazy loading property to a constant.\n * The given function `fn` is called once when the property is first requested.\n *\n * @param {Object} object Object where to add the property\n * @param {string} prop Property name\n * @param {Function} valueResolver Function returning the property value. Called\n * without arguments.\n */\nexport function lazy(object, prop, valueResolver) {\n var _uninitialized = true;\n var _value;\n Object.defineProperty(object, prop, {\n get: function get() {\n if (_uninitialized) {\n _value = valueResolver();\n _uninitialized = false;\n }\n return _value;\n },\n set: function set(value) {\n _value = value;\n _uninitialized = false;\n },\n configurable: true,\n enumerable: true\n });\n}\n\n/**\n * Traverse a path into an object.\n * When a namespace is missing, it will be created\n * @param {Object} object\n * @param {string | string[]} path A dot separated string like 'name.space'\n * @return {Object} Returns the object at the end of the path\n */\nexport function traverse(object, path) {\n if (path && typeof path === 'string') {\n return traverse(object, path.split('.'));\n }\n var obj = object;\n if (path) {\n for (var i = 0; i < path.length; i++) {\n var key = path[i];\n if (!(key in obj)) {\n obj[key] = {};\n }\n obj = obj[key];\n }\n }\n return obj;\n}\n\n/**\n * A safe hasOwnProperty\n * @param {Object} object\n * @param {string} property\n */\nexport function hasOwnProperty(object, property) {\n return object && Object.hasOwnProperty.call(object, property);\n}\n\n/**\n * Test whether an object is a factory. a factory has fields:\n *\n * - factory: function (type: Object, config: Object, load: function, typed: function [, math: Object]) (required)\n * - name: string (optional)\n * - path: string A dot separated path (optional)\n * - math: boolean If true (false by default), the math namespace is passed\n * as fifth argument of the factory function\n *\n * @param {*} object\n * @returns {boolean}\n */\nexport function isLegacyFactory(object) {\n return object && typeof object.factory === 'function';\n}\n\n/**\n * Get a nested property from an object\n * @param {Object} object\n * @param {string | string[]} path\n * @returns {Object}\n */\nexport function get(object, path) {\n if (typeof path === 'string') {\n if (isPath(path)) {\n return get(object, path.split('.'));\n } else {\n return object[path];\n }\n }\n var child = object;\n for (var i = 0; i < path.length; i++) {\n var key = path[i];\n child = child ? child[key] : undefined;\n }\n return child;\n}\n\n/**\n * Set a nested property in an object\n * Mutates the object itself\n * If the path doesn't exist, it will be created\n * @param {Object} object\n * @param {string | string[]} path\n * @param {*} value\n * @returns {Object}\n */\nexport function set(object, path, value) {\n if (typeof path === 'string') {\n if (isPath(path)) {\n return set(object, path.split('.'), value);\n } else {\n object[path] = value;\n return object;\n }\n }\n var child = object;\n for (var i = 0; i < path.length - 1; i++) {\n var key = path[i];\n if (child[key] === undefined) {\n child[key] = {};\n }\n child = child[key];\n }\n if (path.length > 0) {\n var lastKey = path[path.length - 1];\n child[lastKey] = value;\n }\n return object;\n}\n\n/**\n * Create an object composed of the picked object properties\n * @param {Object} object\n * @param {string[]} properties\n * @param {function} [transform] Optional value to transform a value when picking it\n * @return {Object}\n */\nexport function pick(object, properties, transform) {\n var copy = {};\n for (var i = 0; i < properties.length; i++) {\n var key = properties[i];\n var value = get(object, key);\n if (value !== undefined) {\n set(copy, key, transform ? transform(value, key) : value);\n }\n }\n return copy;\n}\n\n/**\n * Shallow version of pick, creating an object composed of the picked object properties\n * but not for nested properties\n * @param {Object} object\n * @param {string[]} properties\n * @return {Object}\n */\nexport function pickShallow(object, properties) {\n var copy = {};\n for (var i = 0; i < properties.length; i++) {\n var key = properties[i];\n var value = object[key];\n if (value !== undefined) {\n copy[key] = value;\n }\n }\n return copy;\n}\n\n// helper function to test whether a string contains a path like 'user.name'\nfunction isPath(str) {\n return str.includes('.');\n}", "import { clone, deepExtend } from '../../utils/object.js';\nimport { DEFAULT_CONFIG } from '../config.js';\nexport var MATRIX_OPTIONS = ['Matrix', 'Array']; // valid values for option matrix\nexport var NUMBER_OPTIONS = ['number', 'BigNumber', 'Fraction']; // valid values for option number\n\nexport function configFactory(config, emit) {\n /**\n * Set configuration options for math.js, and get current options.\n * Will emit a 'config' event, with arguments (curr, prev, changes).\n *\n * This function is only available on a mathjs instance created using `create`.\n *\n * Syntax:\n *\n * math.config(config: Object): Object\n *\n * Examples:\n *\n *\n * import { create, all } from 'mathjs'\n *\n * // create a mathjs instance\n * const math = create(all)\n *\n * math.config().number // outputs 'number'\n * math.evaluate('0.4') // outputs number 0.4\n * math.config({number: 'Fraction'})\n * math.evaluate('0.4') // outputs Fraction 2/5\n *\n * @param {Object} [options] Available options:\n * {number} relTol\n * Minimum relative difference between two\n * compared values, used by all comparison functions.\n * {number} absTol\n * Minimum absolute difference between two\n * compared values, used by all comparison functions.\n * {string} matrix\n * A string 'Matrix' (default) or 'Array'.\n * {string} number\n * A string 'number' (default), 'BigNumber', 'bigint', or 'Fraction'\n * {number} precision\n * The number of significant digits for BigNumbers.\n * Not applicable for Numbers.\n * {string} parenthesis\n * How to display parentheses in LaTeX and string\n * output.\n * {string} randomSeed\n * Random seed for seeded pseudo random number generator.\n * Set to null to randomly seed.\n * @return {Object} Returns the current configuration\n */\n function _config(options) {\n if (options) {\n if (options.epsilon !== undefined) {\n // this if is only for backwards compatibility, it can be removed in the future.\n console.warn('Warning: The configuration option \"epsilon\" is deprecated. Use \"relTol\" and \"absTol\" instead.');\n var optionsFix = clone(options);\n optionsFix.relTol = options.epsilon;\n optionsFix.absTol = options.epsilon * 1e-3;\n delete optionsFix.epsilon;\n return _config(optionsFix);\n }\n var prev = clone(config);\n\n // validate some of the options\n validateOption(options, 'matrix', MATRIX_OPTIONS);\n validateOption(options, 'number', NUMBER_OPTIONS);\n\n // merge options\n deepExtend(config, options);\n var curr = clone(config);\n var changes = clone(options);\n\n // emit 'config' event\n emit('config', curr, prev, changes);\n return curr;\n } else {\n return clone(config);\n }\n }\n\n // attach the valid options to the function so they can be extended\n _config.MATRIX_OPTIONS = MATRIX_OPTIONS;\n _config.NUMBER_OPTIONS = NUMBER_OPTIONS;\n\n // attach the config properties as readonly properties to the config function\n Object.keys(DEFAULT_CONFIG).forEach(key => {\n Object.defineProperty(_config, key, {\n get: () => config[key],\n enumerable: true,\n configurable: true\n });\n });\n return _config;\n}\n\n/**\n * Validate an option\n * @param {Object} options Object with options\n * @param {string} name Name of the option to validate\n * @param {Array.} values Array with valid values for this option\n */\nfunction validateOption(options, name, values) {\n if (options[name] !== undefined && !values.includes(options[name])) {\n // unknown value\n console.warn('Warning: Unknown value \"' + options[name] + '\" for configuration option \"' + name + '\". ' + 'Available options: ' + values.map(value => JSON.stringify(value)).join(', ') + '.');\n }\n}", "export { createTyped } from './core/function/typed.js';\nexport { createResultSet } from './type/resultset/ResultSet.js';\nexport { createBigNumberClass } from './type/bignumber/BigNumber.js';\nexport { createComplexClass } from './type/complex/Complex.js';\nexport { createFractionClass } from './type/fraction/Fraction.js';\nexport { createRangeClass } from './type/matrix/Range.js';\nexport { createMatrixClass } from './type/matrix/Matrix.js';\nexport { createDenseMatrixClass } from './type/matrix/DenseMatrix.js';\nexport { createClone } from './function/utils/clone.js';\nexport { createIsInteger } from './function/utils/isInteger.js';\nexport { createIsNegative } from './function/utils/isNegative.js';\nexport { createIsNumeric } from './function/utils/isNumeric.js';\nexport { createHasNumericValue } from './function/utils/hasNumericValue.js';\nexport { createIsPositive } from './function/utils/isPositive.js';\nexport { createIsZero } from './function/utils/isZero.js';\nexport { createIsNaN } from './function/utils/isNaN.js';\nexport { createTypeOf } from './function/utils/typeOf.js';\nexport { createEqualScalar } from './function/relational/equalScalar.js';\nexport { createSparseMatrixClass } from './type/matrix/SparseMatrix.js';\nexport { createNumber } from './type/number.js';\nexport { createBigint } from './type/bigint.js';\nexport { createString } from './type/string.js';\nexport { createBoolean } from './type/boolean.js';\nexport { createBignumber } from './type/bignumber/function/bignumber.js';\nexport { createComplex } from './type/complex/function/complex.js';\nexport { createFraction } from './type/fraction/function/fraction.js';\nexport { createMatrix } from './type/matrix/function/matrix.js';\nexport { createMatrixFromFunction } from './function/matrix/matrixFromFunction.js';\nexport { createMatrixFromRows } from './function/matrix/matrixFromRows.js';\nexport { createMatrixFromColumns } from './function/matrix/matrixFromColumns.js';\nexport { createSplitUnit } from './type/unit/function/splitUnit.js';\nexport { createUnaryMinus } from './function/arithmetic/unaryMinus.js';\nexport { createUnaryPlus } from './function/arithmetic/unaryPlus.js';\nexport { createAbs } from './function/arithmetic/abs.js';\nexport { createApply } from './function/matrix/apply.js';\nexport { createAddScalar } from './function/arithmetic/addScalar.js';\nexport { createSubtractScalar } from './function/arithmetic/subtractScalar.js';\nexport { createCbrt } from './function/arithmetic/cbrt.js';\nexport { createCeil } from './function/arithmetic/ceil.js';\nexport { createCube } from './function/arithmetic/cube.js';\nexport { createExp } from './function/arithmetic/exp.js';\nexport { createExpm1 } from './function/arithmetic/expm1.js';\nexport { createFix } from './function/arithmetic/fix.js';\nexport { createFloor } from './function/arithmetic/floor.js';\nexport { createGcd } from './function/arithmetic/gcd.js';\nexport { createLcm } from './function/arithmetic/lcm.js';\nexport { createLog10 } from './function/arithmetic/log10.js';\nexport { createLog2 } from './function/arithmetic/log2.js';\nexport { createMod } from './function/arithmetic/mod.js';\nexport { createMultiplyScalar } from './function/arithmetic/multiplyScalar.js';\nexport { createMultiply } from './function/arithmetic/multiply.js';\nexport { createNthRoot } from './function/arithmetic/nthRoot.js';\nexport { createSign } from './function/arithmetic/sign.js';\nexport { createSqrt } from './function/arithmetic/sqrt.js';\nexport { createSquare } from './function/arithmetic/square.js';\nexport { createSubtract } from './function/arithmetic/subtract.js';\nexport { createXgcd } from './function/arithmetic/xgcd.js';\nexport { createInvmod } from './function/arithmetic/invmod.js';\nexport { createDotMultiply } from './function/arithmetic/dotMultiply.js';\nexport { createBitAnd } from './function/bitwise/bitAnd.js';\nexport { createBitNot } from './function/bitwise/bitNot.js';\nexport { createBitOr } from './function/bitwise/bitOr.js';\nexport { createBitXor } from './function/bitwise/bitXor.js';\nexport { createArg } from './function/complex/arg.js';\nexport { createConj } from './function/complex/conj.js';\nexport { createIm } from './function/complex/im.js';\nexport { createRe } from './function/complex/re.js';\nexport { createNot } from './function/logical/not.js';\nexport { createOr } from './function/logical/or.js';\nexport { createXor } from './function/logical/xor.js';\nexport { createConcat } from './function/matrix/concat.js';\nexport { createColumn } from './function/matrix/column.js';\nexport { createCount } from './function/matrix/count.js';\nexport { createCross } from './function/matrix/cross.js';\nexport { createDiag } from './function/matrix/diag.js';\nexport { createFilter } from './function/matrix/filter.js';\nexport { createFlatten } from './function/matrix/flatten.js';\nexport { createForEach } from './function/matrix/forEach.js';\nexport { createGetMatrixDataType } from './function/matrix/getMatrixDataType.js';\nexport { createIdentity } from './function/matrix/identity.js';\nexport { createKron } from './function/matrix/kron.js';\nexport { createMap } from './function/matrix/map.js';\nexport { createDiff } from './function/matrix/diff.js';\nexport { createOnes } from './function/matrix/ones.js';\nexport { createRange } from './function/matrix/range.js';\nexport { createReshape } from './function/matrix/reshape.js';\nexport { createResize } from './function/matrix/resize.js';\nexport { createRotate } from './function/matrix/rotate.js';\nexport { createRotationMatrix } from './function/matrix/rotationMatrix.js';\nexport { createRow } from './function/matrix/row.js';\nexport { createSize } from './function/matrix/size.js';\nexport { createSqueeze } from './function/matrix/squeeze.js';\nexport { createSubset } from './function/matrix/subset.js';\nexport { createTranspose } from './function/matrix/transpose.js';\nexport { createCtranspose } from './function/matrix/ctranspose.js';\nexport { createZeros } from './function/matrix/zeros.js';\nexport { createFft } from './function/matrix/fft.js';\nexport { createIfft } from './function/matrix/ifft.js';\nexport { createSolveODE } from './function/numeric/solveODE.js';\nexport { createErf } from './function/special/erf.js';\nexport { createZeta } from './function/special/zeta.js';\nexport { createMode } from './function/statistics/mode.js';\nexport { createProd } from './function/statistics/prod.js';\nexport { createFormat } from './function/string/format.js';\nexport { createBin } from './function/string/bin.js';\nexport { createOct } from './function/string/oct.js';\nexport { createHex } from './function/string/hex.js';\nexport { createPrint } from './function/string/print.js';\nexport { createTo } from './function/unit/to.js';\nexport { createIsPrime } from './function/utils/isPrime.js';\nexport { createNumeric } from './function/utils/numeric.js';\nexport { createDivideScalar } from './function/arithmetic/divideScalar.js';\nexport { createPow } from './function/arithmetic/pow.js';\nexport { createRound } from './function/arithmetic/round.js';\nexport { createLog } from './function/arithmetic/log.js';\nexport { createLog1p } from './function/arithmetic/log1p.js';\nexport { createNthRoots } from './function/arithmetic/nthRoots.js';\nexport { createDotPow } from './function/arithmetic/dotPow.js';\nexport { createDotDivide } from './function/arithmetic/dotDivide.js';\nexport { createLsolve } from './function/algebra/solver/lsolve.js';\nexport { createUsolve } from './function/algebra/solver/usolve.js';\nexport { createLsolveAll } from './function/algebra/solver/lsolveAll.js';\nexport { createUsolveAll } from './function/algebra/solver/usolveAll.js';\nexport { createLeftShift } from './function/bitwise/leftShift.js';\nexport { createRightArithShift } from './function/bitwise/rightArithShift.js';\nexport { createRightLogShift } from './function/bitwise/rightLogShift.js';\nexport { createAnd } from './function/logical/and.js';\nexport { createCompare } from './function/relational/compare.js';\nexport { createCompareNatural } from './function/relational/compareNatural.js';\nexport { createCompareText } from './function/relational/compareText.js';\nexport { createEqual } from './function/relational/equal.js';\nexport { createEqualText } from './function/relational/equalText.js';\nexport { createSmaller } from './function/relational/smaller.js';\nexport { createSmallerEq } from './function/relational/smallerEq.js';\nexport { createLarger } from './function/relational/larger.js';\nexport { createLargerEq } from './function/relational/largerEq.js';\nexport { createDeepEqual } from './function/relational/deepEqual.js';\nexport { createUnequal } from './function/relational/unequal.js';\nexport { createPartitionSelect } from './function/matrix/partitionSelect.js';\nexport { createSort } from './function/matrix/sort.js';\nexport { createMax } from './function/statistics/max.js';\nexport { createMin } from './function/statistics/min.js';\nexport { createImmutableDenseMatrixClass } from './type/matrix/ImmutableDenseMatrix.js';\nexport { createIndexClass } from './type/matrix/MatrixIndex.js';\nexport { createFibonacciHeapClass } from './type/matrix/FibonacciHeap.js';\nexport { createSpaClass } from './type/matrix/Spa.js';\nexport { createUnitClass } from './type/unit/Unit.js';\nexport { createUnitFunction } from './type/unit/function/unit.js';\nexport { createSparse } from './type/matrix/function/sparse.js';\nexport { createCreateUnit } from './type/unit/function/createUnit.js';\nexport { createAcos } from './function/trigonometry/acos.js';\nexport { createAcosh } from './function/trigonometry/acosh.js';\nexport { createAcot } from './function/trigonometry/acot.js';\nexport { createAcoth } from './function/trigonometry/acoth.js';\nexport { createAcsc } from './function/trigonometry/acsc.js';\nexport { createAcsch } from './function/trigonometry/acsch.js';\nexport { createAsec } from './function/trigonometry/asec.js';\nexport { createAsech } from './function/trigonometry/asech.js';\nexport { createAsin } from './function/trigonometry/asin.js';\nexport { createAsinh } from './function/trigonometry/asinh.js';\nexport { createAtan } from './function/trigonometry/atan.js';\nexport { createAtan2 } from './function/trigonometry/atan2.js';\nexport { createAtanh } from './function/trigonometry/atanh.js';\nexport { createCos } from './function/trigonometry/cos.js';\nexport { createCosh } from './function/trigonometry/cosh.js';\nexport { createCot } from './function/trigonometry/cot.js';\nexport { createCoth } from './function/trigonometry/coth.js';\nexport { createCsc } from './function/trigonometry/csc.js';\nexport { createCsch } from './function/trigonometry/csch.js';\nexport { createSec } from './function/trigonometry/sec.js';\nexport { createSech } from './function/trigonometry/sech.js';\nexport { createSin } from './function/trigonometry/sin.js';\nexport { createSinh } from './function/trigonometry/sinh.js';\nexport { createTan } from './function/trigonometry/tan.js';\nexport { createTanh } from './function/trigonometry/tanh.js';\nexport { createSetCartesian } from './function/set/setCartesian.js';\nexport { createSetDifference } from './function/set/setDifference.js';\nexport { createSetDistinct } from './function/set/setDistinct.js';\nexport { createSetIntersect } from './function/set/setIntersect.js';\nexport { createSetIsSubset } from './function/set/setIsSubset.js';\nexport { createSetMultiplicity } from './function/set/setMultiplicity.js';\nexport { createSetPowerset } from './function/set/setPowerset.js';\nexport { createSetSize } from './function/set/setSize.js';\nexport { createSetSymDifference } from './function/set/setSymDifference.js';\nexport { createSetUnion } from './function/set/setUnion.js';\nexport { createAdd } from './function/arithmetic/add.js';\nexport { createHypot } from './function/arithmetic/hypot.js';\nexport { createNorm } from './function/arithmetic/norm.js';\nexport { createDot } from './function/matrix/dot.js';\nexport { createTrace } from './function/matrix/trace.js';\nexport { createIndex } from './type/matrix/function/index.js';\nexport { createNode } from './expression/node/Node.js';\nexport { createAccessorNode } from './expression/node/AccessorNode.js';\nexport { createArrayNode } from './expression/node/ArrayNode.js';\nexport { createAssignmentNode } from './expression/node/AssignmentNode.js';\nexport { createBlockNode } from './expression/node/BlockNode.js';\nexport { createConditionalNode } from './expression/node/ConditionalNode.js';\nexport { createConstantNode } from './expression/node/ConstantNode.js';\nexport { createFunctionAssignmentNode } from './expression/node/FunctionAssignmentNode.js';\nexport { createIndexNode } from './expression/node/IndexNode.js';\nexport { createObjectNode } from './expression/node/ObjectNode.js';\nexport { createOperatorNode } from './expression/node/OperatorNode.js';\nexport { createParenthesisNode } from './expression/node/ParenthesisNode.js';\nexport { createRangeNode } from './expression/node/RangeNode.js';\nexport { createRelationalNode } from './expression/node/RelationalNode.js';\nexport { createSymbolNode } from './expression/node/SymbolNode.js';\nexport { createFunctionNode } from './expression/node/FunctionNode.js';\nexport { createParse } from './expression/parse.js';\nexport { createCompile } from './expression/function/compile.js';\nexport { createEvaluate } from './expression/function/evaluate.js';\nexport { createParserClass } from './expression/Parser.js';\nexport { createParser } from './expression/function/parser.js';\nexport { createLup } from './function/algebra/decomposition/lup.js';\nexport { createQr } from './function/algebra/decomposition/qr.js';\nexport { createSlu } from './function/algebra/decomposition/slu.js';\nexport { createLusolve } from './function/algebra/solver/lusolve.js';\nexport { createPolynomialRoot } from './function/algebra/polynomialRoot.js';\nexport { createHelpClass } from './expression/Help.js';\nexport { createChainClass } from './type/chain/Chain.js';\nexport { createHelp } from './expression/function/help.js';\nexport { createChain } from './type/chain/function/chain.js';\nexport { createDet } from './function/matrix/det.js';\nexport { createInv } from './function/matrix/inv.js';\nexport { createPinv } from './function/matrix/pinv.js';\nexport { createEigs } from './function/matrix/eigs.js';\nexport { createExpm } from './function/matrix/expm.js';\nexport { createSqrtm } from './function/matrix/sqrtm.js';\nexport { createSylvester } from './function/algebra/sylvester.js';\nexport { createSchur } from './function/algebra/decomposition/schur.js';\nexport { createLyap } from './function/algebra/lyap.js';\nexport { createDivide } from './function/arithmetic/divide.js';\nexport { createDistance } from './function/geometry/distance.js';\nexport { createIntersect } from './function/geometry/intersect.js';\nexport { createSum } from './function/statistics/sum.js';\nexport { createCumSum } from './function/statistics/cumsum.js';\nexport { createMean } from './function/statistics/mean.js';\nexport { createMedian } from './function/statistics/median.js';\nexport { createMad } from './function/statistics/mad.js';\nexport { createVariance } from './function/statistics/variance.js';\nexport { createQuantileSeq } from './function/statistics/quantileSeq.js';\nexport { createStd } from './function/statistics/std.js';\nexport { createCorr } from './function/statistics/corr.js';\nexport { createCombinations } from './function/probability/combinations.js';\nexport { createCombinationsWithRep } from './function/probability/combinationsWithRep.js';\nexport { createGamma } from './function/probability/gamma.js';\nexport { createLgamma } from './function/probability/lgamma.js';\nexport { createFactorial } from './function/probability/factorial.js';\nexport { createKldivergence } from './function/probability/kldivergence.js';\nexport { createMultinomial } from './function/probability/multinomial.js';\nexport { createPermutations } from './function/probability/permutations.js';\nexport { createPickRandom } from './function/probability/pickRandom.js';\nexport { createRandom } from './function/probability/random.js';\nexport { createRandomInt } from './function/probability/randomInt.js';\nexport { createStirlingS2 } from './function/combinatorics/stirlingS2.js';\nexport { createBellNumbers } from './function/combinatorics/bellNumbers.js';\nexport { createCatalan } from './function/combinatorics/catalan.js';\nexport { createComposition } from './function/combinatorics/composition.js';\nexport { createLeafCount } from './function/algebra/leafCount.js';\nexport { createSimplify } from './function/algebra/simplify.js';\nexport { createSimplifyConstant } from './function/algebra/simplifyConstant.js';\nexport { createSimplifyCore } from './function/algebra/simplifyCore.js';\nexport { createResolve } from './function/algebra/resolve.js';\nexport { createSymbolicEqual } from './function/algebra/symbolicEqual.js';\nexport { createDerivative } from './function/algebra/derivative.js';\nexport { createRationalize } from './function/algebra/rationalize.js';\nexport { createZpk2tf } from './function/signal/zpk2tf.js';\nexport { createFreqz } from './function/signal/freqz.js';\nexport { createReviver } from './json/reviver.js';\nexport { createReplacer } from './json/replacer.js';\nexport { createE, createUppercaseE, createFalse, createI, createInfinity, createLN10, createLN2, createLOG10E, createLOG2E, createNaN, createNull, createPhi, createPi, createUppercasePi, createSQRT1_2,\n// eslint-disable-line camelcase\ncreateSQRT2, createTau, createTrue, createVersion } from './constants.js';\nexport { createAtomicMass, createAvogadro, createBohrMagneton, createBohrRadius, createBoltzmann, createClassicalElectronRadius, createConductanceQuantum, createCoulomb, createDeuteronMass, createEfimovFactor, createElectricConstant, createElectronMass, createElementaryCharge, createFaraday, createFermiCoupling, createFineStructure, createFirstRadiation, createGasConstant, createGravitationConstant, createGravity, createHartreeEnergy, createInverseConductanceQuantum, createKlitzing, createLoschmidt, createMagneticConstant, createMagneticFluxQuantum, createMolarMass, createMolarMassC12, createMolarPlanckConstant, createMolarVolume, createNeutronMass, createNuclearMagneton, createPlanckCharge, createPlanckConstant, createPlanckLength, createPlanckMass, createPlanckTemperature, createPlanckTime, createProtonMass, createQuantumOfCirculation, createReducedPlanckConstant, createRydberg, createSackurTetrode, createSecondRadiation, createSpeedOfLight, createStefanBoltzmann, createThomsonCrossSection, createVacuumImpedance, createWeakMixingAngle, createWienDisplacement } from './type/unit/physicalConstants.js';\nexport { createApplyTransform } from './expression/transform/apply.transform.js';\nexport { createColumnTransform } from './expression/transform/column.transform.js';\nexport { createFilterTransform } from './expression/transform/filter.transform.js';\nexport { createForEachTransform } from './expression/transform/forEach.transform.js';\nexport { createIndexTransform } from './expression/transform/index.transform.js';\nexport { createMapTransform } from './expression/transform/map.transform.js';\nexport { createMaxTransform } from './expression/transform/max.transform.js';\nexport { createMeanTransform } from './expression/transform/mean.transform.js';\nexport { createMinTransform } from './expression/transform/min.transform.js';\nexport { createRangeTransform } from './expression/transform/range.transform.js';\nexport { createRowTransform } from './expression/transform/row.transform.js';\nexport { createSubsetTransform } from './expression/transform/subset.transform.js';\nexport { createConcatTransform } from './expression/transform/concat.transform.js';\nexport { createDiffTransform } from './expression/transform/diff.transform.js';\nexport { createStdTransform } from './expression/transform/std.transform.js';\nexport { createSumTransform } from './expression/transform/sum.transform.js';\nexport { createQuantileSeqTransform } from './expression/transform/quantileSeq.transform.js';\nexport { createCumSumTransform } from './expression/transform/cumsum.transform.js';\nexport { createVarianceTransform } from './expression/transform/variance.transform.js';\nexport { createPrintTransform } from './expression/transform/print.transform.js';\nexport { createAndTransform } from './expression/transform/and.transform.js';\nexport { createOrTransform } from './expression/transform/or.transform.js';\nexport { createBitAndTransform } from './expression/transform/bitAnd.transform.js';\nexport { createBitOrTransform } from './expression/transform/bitOr.transform.js';", "/**\n * Create a typed-function which checks the types of the arguments and\n * can match them against multiple provided signatures. The typed-function\n * automatically converts inputs in order to find a matching signature.\n * Typed functions throw informative errors in case of wrong input arguments.\n *\n * See the library [typed-function](https://github.com/josdejong/typed-function)\n * for detailed documentation.\n *\n * Syntax:\n *\n * math.typed(name, signatures) : function\n * math.typed(signatures) : function\n *\n * Examples:\n *\n * // create a typed function with multiple types per argument (type union)\n * const fn2 = typed({\n * 'number | boolean': function (b) {\n * return 'b is a number or boolean'\n * },\n * 'string, number | boolean': function (a, b) {\n * return 'a is a string, b is a number or boolean'\n * }\n * })\n *\n * // create a typed function with an any type argument\n * const log = typed({\n * 'string, any': function (event, data) {\n * console.log('event: ' + event + ', data: ' + JSON.stringify(data))\n * }\n * })\n *\n * @param {string} [name] Optional name for the typed-function\n * @param {Object} signatures Object with one or multiple function signatures\n * @returns {function} The created typed-function.\n */\n\nimport typedFunction from 'typed-function';\nimport { factory } from '../../utils/factory.js';\nimport { isAccessorNode, isArray, isArrayNode, isAssignmentNode, isBigInt, isBigNumber, isBlockNode, isBoolean, isChain, isCollection, isComplex, isConditionalNode, isConstantNode, isDate, isDenseMatrix, isFraction, isFunction, isFunctionAssignmentNode, isFunctionNode, isHelp, isIndex, isIndexNode, isMap, isMatrix, isNode, isNull, isNumber, isObject, isObjectNode, isOperatorNode, isParenthesisNode, isRange, isRangeNode, isRegExp, isRelationalNode, isResultSet, isSparseMatrix, isString, isSymbolNode, isUndefined, isUnit } from '../../utils/is.js';\nimport { digits } from '../../utils/number.js';\n\n// returns a new instance of typed-function\nvar _createTyped2 = function _createTyped() {\n // initially, return the original instance of typed-function\n // consecutively, return a new instance from typed.create.\n _createTyped2 = typedFunction.create;\n return typedFunction;\n};\nvar dependencies = ['?BigNumber', '?Complex', '?DenseMatrix', '?Fraction'];\n\n/**\n * Factory function for creating a new typed instance\n * @param {Object} dependencies Object with data types like Complex and BigNumber\n * @returns {Function}\n */\nexport var createTyped = /* #__PURE__ */factory('typed', dependencies, function createTyped(_ref) {\n var {\n BigNumber,\n Complex,\n DenseMatrix,\n Fraction\n } = _ref;\n // TODO: typed-function must be able to silently ignore signatures with unknown data types\n\n // get a new instance of typed-function\n var typed = _createTyped2();\n\n // define all types. The order of the types determines in which order function\n // arguments are type-checked (so for performance it's important to put the\n // most used types first).\n typed.clear();\n typed.addTypes([{\n name: 'number',\n test: isNumber\n }, {\n name: 'Complex',\n test: isComplex\n }, {\n name: 'BigNumber',\n test: isBigNumber\n }, {\n name: 'bigint',\n test: isBigInt\n }, {\n name: 'Fraction',\n test: isFraction\n }, {\n name: 'Unit',\n test: isUnit\n },\n // The following type matches a valid variable name, i.e., an alphanumeric\n // string starting with an alphabetic character. It is used (at least)\n // in the definition of the derivative() function, as the argument telling\n // what to differentiate over must (currently) be a variable.\n // TODO: deprecate the identifier type (it's not used anymore, see https://github.com/josdejong/mathjs/issues/3253)\n {\n name: 'identifier',\n test: s => isString && /^(?:[A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C8A\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CD\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7DC\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDDC0-\\uDDF3\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDD4A-\\uDD65\\uDD6F-\\uDD85\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDEC2-\\uDEC4\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE3F\\uDE40\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61\\uDF80-\\uDF89\\uDF8B\\uDF8E\\uDF90-\\uDFB5\\uDFB7\\uDFD1\\uDFD3]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8\\uDFC0-\\uDFE0]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDF02\\uDF04-\\uDF10\\uDF12-\\uDF33\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD80E\\uD80F\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883\\uD885-\\uD887][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2F\\uDC41-\\uDC46\\uDC60-\\uDFFF]|\\uD810[\\uDC00-\\uDFFA]|\\uD811[\\uDC00-\\uDE46]|\\uD818[\\uDD00-\\uDD1D]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDD40-\\uDD6C\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDCFF-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD32\\uDD50-\\uDD52\\uDD55\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E\\uDF25-\\uDF2A]|\\uD838[\\uDC30-\\uDC6D\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDCD0-\\uDCEB\\uDDD0-\\uDDED\\uDDF0\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF39\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0\\uDFF0-\\uDFFF]|\\uD87B[\\uDC00-\\uDE5D]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A\\uDF50-\\uDFFF]|\\uD888[\\uDC00-\\uDFAF])(?:[0-9A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C8A\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CD\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7DC\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDDC0-\\uDDF3\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDD4A-\\uDD65\\uDD6F-\\uDD85\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDEC2-\\uDEC4\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE3F\\uDE40\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61\\uDF80-\\uDF89\\uDF8B\\uDF8E\\uDF90-\\uDFB5\\uDFB7\\uDFD1\\uDFD3]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8\\uDFC0-\\uDFE0]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDF02\\uDF04-\\uDF10\\uDF12-\\uDF33\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD80E\\uD80F\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883\\uD885-\\uD887][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2F\\uDC41-\\uDC46\\uDC60-\\uDFFF]|\\uD810[\\uDC00-\\uDFFA]|\\uD811[\\uDC00-\\uDE46]|\\uD818[\\uDD00-\\uDD1D]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDD40-\\uDD6C\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDCFF-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD32\\uDD50-\\uDD52\\uDD55\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E\\uDF25-\\uDF2A]|\\uD838[\\uDC30-\\uDC6D\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDCD0-\\uDCEB\\uDDD0-\\uDDED\\uDDF0\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF39\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0\\uDFF0-\\uDFFF]|\\uD87B[\\uDC00-\\uDE5D]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A\\uDF50-\\uDFFF]|\\uD888[\\uDC00-\\uDFAF])*$/.test(s)\n }, {\n name: 'string',\n test: isString\n }, {\n name: 'Chain',\n test: isChain\n }, {\n name: 'Array',\n test: isArray\n }, {\n name: 'Matrix',\n test: isMatrix\n }, {\n name: 'DenseMatrix',\n test: isDenseMatrix\n }, {\n name: 'SparseMatrix',\n test: isSparseMatrix\n }, {\n name: 'Range',\n test: isRange\n }, {\n name: 'Index',\n test: isIndex\n }, {\n name: 'boolean',\n test: isBoolean\n }, {\n name: 'ResultSet',\n test: isResultSet\n }, {\n name: 'Help',\n test: isHelp\n }, {\n name: 'function',\n test: isFunction\n }, {\n name: 'Date',\n test: isDate\n }, {\n name: 'RegExp',\n test: isRegExp\n }, {\n name: 'null',\n test: isNull\n }, {\n name: 'undefined',\n test: isUndefined\n }, {\n name: 'AccessorNode',\n test: isAccessorNode\n }, {\n name: 'ArrayNode',\n test: isArrayNode\n }, {\n name: 'AssignmentNode',\n test: isAssignmentNode\n }, {\n name: 'BlockNode',\n test: isBlockNode\n }, {\n name: 'ConditionalNode',\n test: isConditionalNode\n }, {\n name: 'ConstantNode',\n test: isConstantNode\n }, {\n name: 'FunctionNode',\n test: isFunctionNode\n }, {\n name: 'FunctionAssignmentNode',\n test: isFunctionAssignmentNode\n }, {\n name: 'IndexNode',\n test: isIndexNode\n }, {\n name: 'Node',\n test: isNode\n }, {\n name: 'ObjectNode',\n test: isObjectNode\n }, {\n name: 'OperatorNode',\n test: isOperatorNode\n }, {\n name: 'ParenthesisNode',\n test: isParenthesisNode\n }, {\n name: 'RangeNode',\n test: isRangeNode\n }, {\n name: 'RelationalNode',\n test: isRelationalNode\n }, {\n name: 'SymbolNode',\n test: isSymbolNode\n }, {\n name: 'Map',\n test: isMap\n }, {\n name: 'Object',\n test: isObject\n } // order 'Object' last, it matches on other classes too\n ]);\n typed.addConversions([{\n from: 'number',\n to: 'BigNumber',\n convert: function convert(x) {\n if (!BigNumber) {\n throwNoBignumber(x);\n }\n\n // note: conversion from number to BigNumber can fail if x has >15 digits\n if (digits(x) > 15) {\n throw new TypeError('Cannot implicitly convert a number with >15 significant digits to BigNumber ' + '(value: ' + x + '). ' + 'Use function bignumber(x) to convert to BigNumber.');\n }\n return new BigNumber(x);\n }\n }, {\n from: 'number',\n to: 'Complex',\n convert: function convert(x) {\n if (!Complex) {\n throwNoComplex(x);\n }\n return new Complex(x, 0);\n }\n }, {\n from: 'BigNumber',\n to: 'Complex',\n convert: function convert(x) {\n if (!Complex) {\n throwNoComplex(x);\n }\n return new Complex(x.toNumber(), 0);\n }\n }, {\n from: 'bigint',\n to: 'number',\n convert: function convert(x) {\n if (x > Number.MAX_SAFE_INTEGER) {\n throw new TypeError('Cannot implicitly convert bigint to number: ' + 'value exceeds the max safe integer value (value: ' + x + ')');\n }\n return Number(x);\n }\n }, {\n from: 'bigint',\n to: 'BigNumber',\n convert: function convert(x) {\n if (!BigNumber) {\n throwNoBignumber(x);\n }\n return new BigNumber(x.toString());\n }\n }, {\n from: 'bigint',\n to: 'Fraction',\n convert: function convert(x) {\n if (!Fraction) {\n throwNoFraction(x);\n }\n return new Fraction(x);\n }\n }, {\n from: 'Fraction',\n to: 'BigNumber',\n convert: function convert(x) {\n throw new TypeError('Cannot implicitly convert a Fraction to BigNumber or vice versa. ' + 'Use function bignumber(x) to convert to BigNumber or fraction(x) to convert to Fraction.');\n }\n }, {\n from: 'Fraction',\n to: 'Complex',\n convert: function convert(x) {\n if (!Complex) {\n throwNoComplex(x);\n }\n return new Complex(x.valueOf(), 0);\n }\n }, {\n from: 'number',\n to: 'Fraction',\n convert: function convert(x) {\n if (!Fraction) {\n throwNoFraction(x);\n }\n var f = new Fraction(x);\n if (f.valueOf() !== x) {\n throw new TypeError('Cannot implicitly convert a number to a Fraction when there will be a loss of precision ' + '(value: ' + x + '). ' + 'Use function fraction(x) to convert to Fraction.');\n }\n return f;\n }\n }, {\n // FIXME: add conversion from Fraction to number, for example for `sqrt(fraction(1,3))`\n // from: 'Fraction',\n // to: 'number',\n // convert: function (x) {\n // return x.valueOf()\n // }\n // }, {\n from: 'string',\n to: 'number',\n convert: function convert(x) {\n var n = Number(x);\n if (isNaN(n)) {\n throw new Error('Cannot convert \"' + x + '\" to a number');\n }\n return n;\n }\n }, {\n from: 'string',\n to: 'BigNumber',\n convert: function convert(x) {\n if (!BigNumber) {\n throwNoBignumber(x);\n }\n try {\n return new BigNumber(x);\n } catch (err) {\n throw new Error('Cannot convert \"' + x + '\" to BigNumber');\n }\n }\n }, {\n from: 'string',\n to: 'bigint',\n convert: function convert(x) {\n try {\n return BigInt(x);\n } catch (err) {\n throw new Error('Cannot convert \"' + x + '\" to BigInt');\n }\n }\n }, {\n from: 'string',\n to: 'Fraction',\n convert: function convert(x) {\n if (!Fraction) {\n throwNoFraction(x);\n }\n try {\n return new Fraction(x);\n } catch (err) {\n throw new Error('Cannot convert \"' + x + '\" to Fraction');\n }\n }\n }, {\n from: 'string',\n to: 'Complex',\n convert: function convert(x) {\n if (!Complex) {\n throwNoComplex(x);\n }\n try {\n return new Complex(x);\n } catch (err) {\n throw new Error('Cannot convert \"' + x + '\" to Complex');\n }\n }\n }, {\n from: 'boolean',\n to: 'number',\n convert: function convert(x) {\n return +x;\n }\n }, {\n from: 'boolean',\n to: 'BigNumber',\n convert: function convert(x) {\n if (!BigNumber) {\n throwNoBignumber(x);\n }\n return new BigNumber(+x);\n }\n }, {\n from: 'boolean',\n to: 'bigint',\n convert: function convert(x) {\n return BigInt(+x);\n }\n }, {\n from: 'boolean',\n to: 'Fraction',\n convert: function convert(x) {\n if (!Fraction) {\n throwNoFraction(x);\n }\n return new Fraction(+x);\n }\n }, {\n from: 'boolean',\n to: 'string',\n convert: function convert(x) {\n return String(x);\n }\n }, {\n from: 'Array',\n to: 'Matrix',\n convert: function convert(array) {\n if (!DenseMatrix) {\n throwNoMatrix();\n }\n return new DenseMatrix(array);\n }\n }, {\n from: 'Matrix',\n to: 'Array',\n convert: function convert(matrix) {\n return matrix.valueOf();\n }\n }]);\n\n // Provide a suggestion on how to call a function elementwise\n // This was added primarily as guidance for the v10 -> v11 transition,\n // and could potentially be removed in the future if it no longer seems\n // to be helpful.\n typed.onMismatch = (name, args, signatures) => {\n var usualError = typed.createError(name, args, signatures);\n if (['wrongType', 'mismatch'].includes(usualError.data.category) && args.length === 1 && isCollection(args[0]) &&\n // check if the function can be unary:\n signatures.some(sig => !sig.params.includes(','))) {\n var err = new TypeError(\"Function '\".concat(name, \"' doesn't apply to matrices. To call it \") + \"elementwise on a matrix 'M', try 'map(M, \".concat(name, \")'.\"));\n err.data = usualError.data;\n throw err;\n }\n throw usualError;\n };\n\n // Provide a suggestion on how to call a function elementwise\n // This was added primarily as guidance for the v10 -> v11 transition,\n // and could potentially be removed in the future if it no longer seems\n // to be helpful.\n typed.onMismatch = (name, args, signatures) => {\n var usualError = typed.createError(name, args, signatures);\n if (['wrongType', 'mismatch'].includes(usualError.data.category) && args.length === 1 && isCollection(args[0]) &&\n // check if the function can be unary:\n signatures.some(sig => !sig.params.includes(','))) {\n var err = new TypeError(\"Function '\".concat(name, \"' doesn't apply to matrices. To call it \") + \"elementwise on a matrix 'M', try 'map(M, \".concat(name, \")'.\"));\n err.data = usualError.data;\n throw err;\n }\n throw usualError;\n };\n return typed;\n});\nfunction throwNoBignumber(x) {\n throw new Error(\"Cannot convert value \".concat(x, \" into a BigNumber: no class 'BigNumber' provided\"));\n}\nfunction throwNoComplex(x) {\n throw new Error(\"Cannot convert value \".concat(x, \" into a Complex number: no class 'Complex' provided\"));\n}\nfunction throwNoMatrix() {\n throw new Error('Cannot convert array into a Matrix: no class \\'DenseMatrix\\' provided');\n}\nfunction throwNoFraction(x) {\n throw new Error(\"Cannot convert value \".concat(x, \" into a Fraction, no class 'Fraction' provided.\"));\n}", "import { pickShallow } from './object.js';\n\n/**\n * Create a factory function, which can be used to inject dependencies.\n *\n * The created functions are memoized, a consecutive call of the factory\n * with the exact same inputs will return the same function instance.\n * The memoized cache is exposed on `factory.cache` and can be cleared\n * if needed.\n *\n * Example:\n *\n * const name = 'log'\n * const dependencies = ['config', 'typed', 'divideScalar', 'Complex']\n *\n * export const createLog = factory(name, dependencies, ({ typed, config, divideScalar, Complex }) => {\n * // ... create the function log here and return it\n * }\n *\n * @param {string} name Name of the function to be created\n * @param {string[]} dependencies The names of all required dependencies\n * @param {function} create Callback function called with an object with all dependencies\n * @param {Object} [meta] Optional object with meta information that will be attached\n * to the created factory function as property `meta`.\n * @returns {function}\n */\nexport function factory(name, dependencies, create, meta) {\n function assertAndCreate(scope) {\n // we only pass the requested dependencies to the factory function\n // to prevent functions to rely on dependencies that are not explicitly\n // requested.\n var deps = pickShallow(scope, dependencies.map(stripOptionalNotation));\n assertDependencies(name, dependencies, scope);\n return create(deps);\n }\n assertAndCreate.isFactory = true;\n assertAndCreate.fn = name;\n assertAndCreate.dependencies = dependencies.slice().sort();\n if (meta) {\n assertAndCreate.meta = meta;\n }\n return assertAndCreate;\n}\n\n/**\n * Sort all factories such that when loading in order, the dependencies are resolved.\n *\n * @param {Array} factories\n * @returns {Array} Returns a new array with the sorted factories.\n */\nexport function sortFactories(factories) {\n var factoriesByName = {};\n factories.forEach(factory => {\n factoriesByName[factory.fn] = factory;\n });\n function containsDependency(factory, dependency) {\n // TODO: detect circular references\n if (isFactory(factory)) {\n if (factory.dependencies.includes(dependency.fn || dependency.name)) {\n return true;\n }\n if (factory.dependencies.some(d => containsDependency(factoriesByName[d], dependency))) {\n return true;\n }\n }\n return false;\n }\n var sorted = [];\n function addFactory(factory) {\n var index = 0;\n while (index < sorted.length && !containsDependency(sorted[index], factory)) {\n index++;\n }\n sorted.splice(index, 0, factory);\n }\n\n // sort regular factory functions\n factories.filter(isFactory).forEach(addFactory);\n\n // sort legacy factory functions AFTER the regular factory functions\n factories.filter(factory => !isFactory(factory)).forEach(addFactory);\n return sorted;\n}\n\n// TODO: comment or cleanup if unused in the end\nexport function create(factories) {\n var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n sortFactories(factories).forEach(factory => factory(scope));\n return scope;\n}\n\n/**\n * Test whether an object is a factory. This is the case when it has\n * properties name, dependencies, and a function create.\n * @param {*} obj\n * @returns {boolean}\n */\nexport function isFactory(obj) {\n return typeof obj === 'function' && typeof obj.fn === 'string' && Array.isArray(obj.dependencies);\n}\n\n/**\n * Assert that all dependencies of a list with dependencies are available in the provided scope.\n *\n * Will throw an exception when there are dependencies missing.\n *\n * @param {string} name Name for the function to be created. Used to generate a useful error message\n * @param {string[]} dependencies\n * @param {Object} scope\n */\nexport function assertDependencies(name, dependencies, scope) {\n var allDefined = dependencies.filter(dependency => !isOptionalDependency(dependency)) // filter optionals\n .every(dependency => scope[dependency] !== undefined);\n if (!allDefined) {\n var missingDependencies = dependencies.filter(dependency => scope[dependency] === undefined);\n\n // TODO: create a custom error class for this, a MathjsError or something like that\n throw new Error(\"Cannot create function \\\"\".concat(name, \"\\\", \") + \"some dependencies are missing: \".concat(missingDependencies.map(d => \"\\\"\".concat(d, \"\\\"\")).join(', '), \".\"));\n }\n}\nexport function isOptionalDependency(dependency) {\n return dependency && dependency[0] === '?';\n}\nexport function stripOptionalNotation(dependency) {\n return dependency && dependency[0] === '?' ? dependency.slice(1) : dependency;\n}", "import { isBigNumber, isNumber, isObject } from './is.js';\n\n/**\n * @typedef {{sign: '+' | '-' | '', coefficients: number[], exponent: number}} SplitValue\n */\n\n/**\n * Check if a number is integer\n * @param {number | boolean} value\n * @return {boolean} isInteger\n */\nexport function isInteger(value) {\n if (typeof value === 'boolean') {\n return true;\n }\n return isFinite(value) ? value === Math.round(value) : false;\n}\n\n/**\n * Check if a string contains an integer\n * @param {string} str\n * @return {boolean} isInteger\n */\nexport function isIntegerStr(str) {\n // regex matching strings like \"123\" and \"-123\"\n return /^-?\\d+$/.test(str);\n}\n\n/**\n * Ensure the number type is compatible with the provided value.\n * If not, return 'number' instead.\n *\n * For example:\n *\n * safeNumberType('2.3', { number: 'bigint', numberFallback: 'number' })\n *\n * will return 'number' and not 'bigint' because trying to create a bigint with\n * value 2.3 would throw an exception.\n *\n * @param {string} numberStr\n * @param {{\n * number: 'number' | 'BigNumber' | 'bigint' | 'Fraction'\n * numberFallback: 'number' | 'BigNumber'\n * }} config\n * @returns {'number' | 'BigNumber' | 'bigint' | 'Fraction'}\n */\nexport function safeNumberType(numberStr, config) {\n if (config.number === 'bigint' && !isIntegerStr(numberStr)) {\n return config.numberFallback;\n }\n return config.number;\n}\n\n/**\n * Calculate the sign of a number\n * @param {number} x\n * @returns {number}\n */\nexport var sign = Math.sign || function (x) {\n if (x > 0) {\n return 1;\n } else if (x < 0) {\n return -1;\n } else {\n return 0;\n }\n};\n\n/**\n * Calculate the base-2 logarithm of a number\n * @param {number} x\n * @returns {number}\n */\nexport var log2 = Math.log2 || function log2(x) {\n return Math.log(x) / Math.LN2;\n};\n\n/**\n * Calculate the base-10 logarithm of a number\n * @param {number} x\n * @returns {number}\n */\nexport var log10 = Math.log10 || function log10(x) {\n return Math.log(x) / Math.LN10;\n};\n\n/**\n * Calculate the natural logarithm of a number + 1\n * @param {number} x\n * @returns {number}\n */\nexport var log1p = Math.log1p || function (x) {\n return Math.log(x + 1);\n};\n\n/**\n * Calculate cubic root for a number\n *\n * Code from es6-shim.js:\n * https://github.com/paulmillr/es6-shim/blob/master/es6-shim.js#L1564-L1577\n *\n * @param {number} x\n * @returns {number} Returns the cubic root of x\n */\nexport var cbrt = Math.cbrt || function cbrt(x) {\n if (x === 0) {\n return x;\n }\n var negate = x < 0;\n var result;\n if (negate) {\n x = -x;\n }\n if (isFinite(x)) {\n result = Math.exp(Math.log(x) / 3);\n // from https://en.wikipedia.org/wiki/Cube_root#Numerical_methods\n result = (x / (result * result) + 2 * result) / 3;\n } else {\n result = x;\n }\n return negate ? -result : result;\n};\n\n/**\n * Calculates exponentiation minus 1\n * @param {number} x\n * @return {number} res\n */\nexport var expm1 = Math.expm1 || function expm1(x) {\n return x >= 2e-4 || x <= -2e-4 ? Math.exp(x) - 1 : x + x * x / 2 + x * x * x / 6;\n};\n\n/**\n * Formats a number in a given base\n * @param {number} n\n * @param {number} base\n * @param {number} size\n * @returns {string}\n */\nfunction formatNumberToBase(n, base, size) {\n var prefixes = {\n 2: '0b',\n 8: '0o',\n 16: '0x'\n };\n var prefix = prefixes[base];\n var suffix = '';\n if (size) {\n if (size < 1) {\n throw new Error('size must be in greater than 0');\n }\n if (!isInteger(size)) {\n throw new Error('size must be an integer');\n }\n if (n > 2 ** (size - 1) - 1 || n < -(2 ** (size - 1))) {\n throw new Error(\"Value must be in range [-2^\".concat(size - 1, \", 2^\").concat(size - 1, \"-1]\"));\n }\n if (!isInteger(n)) {\n throw new Error('Value must be an integer');\n }\n if (n < 0) {\n n = n + 2 ** size;\n }\n suffix = \"i\".concat(size);\n }\n var sign = '';\n if (n < 0) {\n n = -n;\n sign = '-';\n }\n return \"\".concat(sign).concat(prefix).concat(n.toString(base)).concat(suffix);\n}\n\n/**\n * Convert a number to a formatted string representation.\n *\n * Syntax:\n *\n * format(value)\n * format(value, options)\n * format(value, precision)\n * format(value, fn)\n *\n * Where:\n *\n * {number} value The value to be formatted\n * {Object} options An object with formatting options. Available options:\n * {string} notation\n * Number notation. Choose from:\n * 'fixed' Always use regular number notation.\n * For example '123.40' and '14000000'\n * 'exponential' Always use exponential notation.\n * For example '1.234e+2' and '1.4e+7'\n * 'engineering' Always use engineering notation.\n * For example '123.4e+0' and '14.0e+6'\n * 'auto' (default) Regular number notation for numbers\n * having an absolute value between\n * `lowerExp` and `upperExp` bounds, and\n * uses exponential notation elsewhere.\n * Lower bound is included, upper bound\n * is excluded.\n * For example '123.4' and '1.4e7'.\n * 'bin', 'oct, or\n * 'hex' Format the number using binary, octal,\n * or hexadecimal notation.\n * For example '0b1101' and '0x10fe'.\n * {number} wordSize The word size in bits to use for formatting\n * in binary, octal, or hexadecimal notation.\n * To be used only with 'bin', 'oct', or 'hex'\n * values for 'notation' option. When this option\n * is defined the value is formatted as a signed\n * twos complement integer of the given word size\n * and the size suffix is appended to the output.\n * For example\n * format(-1, {notation: 'hex', wordSize: 8}) === '0xffi8'.\n * Default value is undefined.\n * {number} precision A number between 0 and 16 to round\n * the digits of the number.\n * In case of notations 'exponential',\n * 'engineering', and 'auto',\n * `precision` defines the total\n * number of significant digits returned.\n * In case of notation 'fixed',\n * `precision` defines the number of\n * significant digits after the decimal\n * point.\n * `precision` is undefined by default,\n * not rounding any digits.\n * {number} lowerExp Exponent determining the lower boundary\n * for formatting a value with an exponent\n * when `notation='auto`.\n * Default value is `-3`.\n * {number} upperExp Exponent determining the upper boundary\n * for formatting a value with an exponent\n * when `notation='auto`.\n * Default value is `5`.\n * {Function} fn A custom formatting function. Can be used to override the\n * built-in notations. Function `fn` is called with `value` as\n * parameter and must return a string. Is useful for example to\n * format all values inside a matrix in a particular way.\n *\n * Examples:\n *\n * format(6.4) // '6.4'\n * format(1240000) // '1.24e6'\n * format(1/3) // '0.3333333333333333'\n * format(1/3, 3) // '0.333'\n * format(21385, 2) // '21000'\n * format(12.071, {notation: 'fixed'}) // '12'\n * format(2.3, {notation: 'fixed', precision: 2}) // '2.30'\n * format(52.8, {notation: 'exponential'}) // '5.28e+1'\n * format(12345678, {notation: 'engineering'}) // '12.345678e+6'\n *\n * @param {number} value\n * @param {Object | Function | number} [options]\n * @return {string} str The formatted value\n */\nexport function format(value, options) {\n if (typeof options === 'function') {\n // handle format(value, fn)\n return options(value);\n }\n\n // handle special cases\n if (value === Infinity) {\n return 'Infinity';\n } else if (value === -Infinity) {\n return '-Infinity';\n } else if (isNaN(value)) {\n return 'NaN';\n }\n var {\n notation,\n precision,\n wordSize\n } = normalizeFormatOptions(options);\n\n // handle the various notations\n switch (notation) {\n case 'fixed':\n return toFixed(value, precision);\n case 'exponential':\n return toExponential(value, precision);\n case 'engineering':\n return toEngineering(value, precision);\n case 'bin':\n return formatNumberToBase(value, 2, wordSize);\n case 'oct':\n return formatNumberToBase(value, 8, wordSize);\n case 'hex':\n return formatNumberToBase(value, 16, wordSize);\n case 'auto':\n // remove trailing zeros after the decimal point\n return toPrecision(value, precision, options).replace(/((\\.\\d*?)(0+))($|e)/, function () {\n var digits = arguments[2];\n var e = arguments[4];\n return digits !== '.' ? digits + e : e;\n });\n default:\n throw new Error('Unknown notation \"' + notation + '\". ' + 'Choose \"auto\", \"exponential\", \"fixed\", \"bin\", \"oct\", or \"hex.');\n }\n}\n\n/**\n * Normalize format options into an object:\n * {\n * notation: string,\n * precision: number | undefined,\n * wordSize: number | undefined\n * }\n */\nexport function normalizeFormatOptions(options) {\n // default values for options\n var notation = 'auto';\n var precision;\n var wordSize;\n if (options !== undefined) {\n if (isNumber(options)) {\n precision = options;\n } else if (isBigNumber(options)) {\n precision = options.toNumber();\n } else if (isObject(options)) {\n if (options.precision !== undefined) {\n precision = _toNumberOrThrow(options.precision, () => {\n throw new Error('Option \"precision\" must be a number or BigNumber');\n });\n }\n if (options.wordSize !== undefined) {\n wordSize = _toNumberOrThrow(options.wordSize, () => {\n throw new Error('Option \"wordSize\" must be a number or BigNumber');\n });\n }\n if (options.notation) {\n notation = options.notation;\n }\n } else {\n throw new Error('Unsupported type of options, number, BigNumber, or object expected');\n }\n }\n return {\n notation,\n precision,\n wordSize\n };\n}\n\n/**\n * Split a number into sign, coefficients, and exponent\n * @param {number | string} value\n * @return {SplitValue}\n * Returns an object containing sign, coefficients, and exponent\n */\nexport function splitNumber(value) {\n // parse the input value\n var match = String(value).toLowerCase().match(/^(-?)(\\d+\\.?\\d*)(e([+-]?\\d+))?$/);\n if (!match) {\n throw new SyntaxError('Invalid number ' + value);\n }\n var sign = match[1];\n var digits = match[2];\n var exponent = parseFloat(match[4] || '0');\n var dot = digits.indexOf('.');\n exponent += dot !== -1 ? dot - 1 : digits.length - 1;\n var coefficients = digits.replace('.', '') // remove the dot (must be removed before removing leading zeros)\n .replace(/^0*/, function (zeros) {\n // remove leading zeros, add their count to the exponent\n exponent -= zeros.length;\n return '';\n }).replace(/0*$/, '') // remove trailing zeros\n .split('').map(function (d) {\n return parseInt(d);\n });\n if (coefficients.length === 0) {\n coefficients.push(0);\n exponent++;\n }\n return {\n sign,\n coefficients,\n exponent\n };\n}\n\n/**\n * Format a number in engineering notation. Like '1.23e+6', '2.3e+0', '3.500e-3'\n * @param {number | string} value\n * @param {number} [precision] Optional number of significant figures to return.\n */\nexport function toEngineering(value, precision) {\n if (isNaN(value) || !isFinite(value)) {\n return String(value);\n }\n var split = splitNumber(value);\n var rounded = roundDigits(split, precision);\n var e = rounded.exponent;\n var c = rounded.coefficients;\n\n // find nearest lower multiple of 3 for exponent\n var newExp = e % 3 === 0 ? e : e < 0 ? e - 3 - e % 3 : e - e % 3;\n if (isNumber(precision)) {\n // add zeroes to give correct sig figs\n while (precision > c.length || e - newExp + 1 > c.length) {\n c.push(0);\n }\n } else {\n // concatenate coefficients with necessary zeros\n // add zeros if necessary (for example: 1e+8 -> 100e+6)\n var missingZeros = Math.abs(e - newExp) - (c.length - 1);\n for (var i = 0; i < missingZeros; i++) {\n c.push(0);\n }\n }\n\n // find difference in exponents\n var expDiff = Math.abs(e - newExp);\n var decimalIdx = 1;\n\n // push decimal index over by expDiff times\n while (expDiff > 0) {\n decimalIdx++;\n expDiff--;\n }\n\n // if all coefficient values are zero after the decimal point and precision is unset, don't add a decimal value.\n // otherwise concat with the rest of the coefficients\n var decimals = c.slice(decimalIdx).join('');\n var decimalVal = isNumber(precision) && decimals.length || decimals.match(/[1-9]/) ? '.' + decimals : '';\n var str = c.slice(0, decimalIdx).join('') + decimalVal + 'e' + (e >= 0 ? '+' : '') + newExp.toString();\n return rounded.sign + str;\n}\n\n/**\n * Format a number with fixed notation.\n * @param {number | string} value\n * @param {number} [precision=undefined] Optional number of decimals after the\n * decimal point. null by default.\n */\nexport function toFixed(value, precision) {\n if (isNaN(value) || !isFinite(value)) {\n return String(value);\n }\n var splitValue = splitNumber(value);\n var rounded = typeof precision === 'number' ? roundDigits(splitValue, splitValue.exponent + 1 + precision) : splitValue;\n var c = rounded.coefficients;\n var p = rounded.exponent + 1; // exponent may have changed\n\n // append zeros if needed\n var pp = p + (precision || 0);\n if (c.length < pp) {\n c = c.concat(zeros(pp - c.length));\n }\n\n // prepend zeros if needed\n if (p < 0) {\n c = zeros(-p + 1).concat(c);\n p = 1;\n }\n\n // insert a dot if needed\n if (p < c.length) {\n c.splice(p, 0, p === 0 ? '0.' : '.');\n }\n return rounded.sign + c.join('');\n}\n\n/**\n * Format a number in exponential notation. Like '1.23e+5', '2.3e+0', '3.500e-3'\n * @param {number | string} value\n * @param {number} [precision] Number of digits in formatted output.\n * If not provided, the maximum available digits\n * is used.\n */\nexport function toExponential(value, precision) {\n if (isNaN(value) || !isFinite(value)) {\n return String(value);\n }\n\n // round if needed, else create a clone\n var split = splitNumber(value);\n var rounded = precision ? roundDigits(split, precision) : split;\n var c = rounded.coefficients;\n var e = rounded.exponent;\n\n // append zeros if needed\n if (c.length < precision) {\n c = c.concat(zeros(precision - c.length));\n }\n\n // format as `C.CCCe+EEE` or `C.CCCe-EEE`\n var first = c.shift();\n return rounded.sign + first + (c.length > 0 ? '.' + c.join('') : '') + 'e' + (e >= 0 ? '+' : '') + e;\n}\n\n/**\n * Format a number with a certain precision\n * @param {number | string} value\n * @param {number} [precision=undefined] Optional number of digits.\n * @param {{lowerExp: number | undefined, upperExp: number | undefined}} [options]\n * By default:\n * lowerExp = -3 (incl)\n * upper = +5 (excl)\n * @return {string}\n */\nexport function toPrecision(value, precision, options) {\n if (isNaN(value) || !isFinite(value)) {\n return String(value);\n }\n\n // determine lower and upper bound for exponential notation.\n var lowerExp = _toNumberOrDefault(options === null || options === void 0 ? void 0 : options.lowerExp, -3);\n var upperExp = _toNumberOrDefault(options === null || options === void 0 ? void 0 : options.upperExp, 5);\n var split = splitNumber(value);\n var rounded = precision ? roundDigits(split, precision) : split;\n if (rounded.exponent < lowerExp || rounded.exponent >= upperExp) {\n // exponential notation\n return toExponential(value, precision);\n } else {\n var c = rounded.coefficients;\n var e = rounded.exponent;\n\n // append trailing zeros\n if (c.length < precision) {\n c = c.concat(zeros(precision - c.length));\n }\n\n // append trailing zeros\n // TODO: simplify the next statement\n c = c.concat(zeros(e - c.length + 1 + (c.length < precision ? precision - c.length : 0)));\n\n // prepend zeros\n c = zeros(-e).concat(c);\n var dot = e > 0 ? e : 0;\n if (dot < c.length - 1) {\n c.splice(dot + 1, 0, '.');\n }\n return rounded.sign + c.join('');\n }\n}\n\n/**\n * Round the number of digits of a number *\n * @param {SplitValue} split A value split with .splitNumber(value)\n * @param {number} precision A positive integer\n * @return {SplitValue}\n * Returns an object containing sign, coefficients, and exponent\n * with rounded digits\n */\nexport function roundDigits(split, precision) {\n // create a clone\n var rounded = {\n sign: split.sign,\n coefficients: split.coefficients,\n exponent: split.exponent\n };\n var c = rounded.coefficients;\n\n // prepend zeros if needed\n while (precision <= 0) {\n c.unshift(0);\n rounded.exponent++;\n precision++;\n }\n if (c.length > precision) {\n var removed = c.splice(precision, c.length - precision);\n if (removed[0] >= 5) {\n var i = precision - 1;\n c[i]++;\n while (c[i] === 10) {\n c.pop();\n if (i === 0) {\n c.unshift(0);\n rounded.exponent++;\n i++;\n }\n i--;\n c[i]++;\n }\n }\n }\n return rounded;\n}\n\n/**\n * Create an array filled with zeros.\n * @param {number} length\n * @return {Array}\n */\nfunction zeros(length) {\n var arr = [];\n for (var i = 0; i < length; i++) {\n arr.push(0);\n }\n return arr;\n}\n\n/**\n * Count the number of significant digits of a number.\n *\n * For example:\n * 2.34 returns 3\n * 0.0034 returns 2\n * 120.5e+30 returns 4\n *\n * @param {number} value\n * @return {number} digits Number of significant digits\n */\nexport function digits(value) {\n return value.toExponential().replace(/e.*$/, '') // remove exponential notation\n .replace(/^0\\.?0*|\\./, '') // remove decimal point and leading zeros\n .length;\n}\n\n/**\n * Minimum number added to one that makes the result different than one\n */\nexport var DBL_EPSILON = Number.EPSILON || 2.2204460492503130808472633361816E-16;\n\n/**\n * Compares two floating point numbers.\n * @param {number} a - First value to compare\n * @param {number} b - Second value to compare\n * @param {number} [relTol=1e-09] - The relative tolerance, indicating the maximum allowed difference relative to the larger absolute value. Must be greater than 0.\n * @param {number} [absTol=1e-12] - The minimum absolute tolerance, useful for comparisons near zero. Must be at least 0.\n * @return {boolean} whether the two numbers are nearly equal\n *\n * @throws {Error} If `relTol` is less than or equal to 0.\n * @throws {Error} If `absTol` is less than 0.\n *\n * @example\n * nearlyEqual(1.000000001, 1.0, 1e-8); // true\n * nearlyEqual(1.000000002, 1.0, 0); // false\n * nearlyEqual(1.0, 1.009, undefined, 0.01); // true\n * nearlyEqual(0.000000001, 0.0, undefined, 1e-8); // true\n */\nexport function nearlyEqual(a, b) {\n var relTol = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1e-8;\n var absTol = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n if (relTol <= 0) {\n throw new Error('Relative tolerance must be greater than 0');\n }\n if (absTol < 0) {\n throw new Error('Absolute tolerance must be at least 0');\n }\n\n // NaN\n if (isNaN(a) || isNaN(b)) {\n return false;\n }\n if (!isFinite(a) || !isFinite(b)) {\n return a === b;\n }\n if (a === b) {\n return true;\n }\n\n // abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)\n return Math.abs(a - b) <= Math.max(relTol * Math.max(Math.abs(a), Math.abs(b)), absTol);\n}\n\n/**\n * Calculate the hyperbolic arccos of a number\n * @param {number} x\n * @return {number}\n */\nexport var acosh = Math.acosh || function (x) {\n return Math.log(Math.sqrt(x * x - 1) + x);\n};\nexport var asinh = Math.asinh || function (x) {\n return Math.log(Math.sqrt(x * x + 1) + x);\n};\n\n/**\n * Calculate the hyperbolic arctangent of a number\n * @param {number} x\n * @return {number}\n */\nexport var atanh = Math.atanh || function (x) {\n return Math.log((1 + x) / (1 - x)) / 2;\n};\n\n/**\n * Calculate the hyperbolic cosine of a number\n * @param {number} x\n * @returns {number}\n */\nexport var cosh = Math.cosh || function (x) {\n return (Math.exp(x) + Math.exp(-x)) / 2;\n};\n\n/**\n * Calculate the hyperbolic sine of a number\n * @param {number} x\n * @returns {number}\n */\nexport var sinh = Math.sinh || function (x) {\n return (Math.exp(x) - Math.exp(-x)) / 2;\n};\n\n/**\n * Calculate the hyperbolic tangent of a number\n * @param {number} x\n * @returns {number}\n */\nexport var tanh = Math.tanh || function (x) {\n var e = Math.exp(2 * x);\n return (e - 1) / (e + 1);\n};\n\n/**\n * Returns a value with the magnitude of x and the sign of y.\n * @param {number} x\n * @param {number} y\n * @returns {number}\n */\nexport function copysign(x, y) {\n var signx = x > 0 ? true : x < 0 ? false : 1 / x === Infinity;\n var signy = y > 0 ? true : y < 0 ? false : 1 / y === Infinity;\n return signx ^ signy ? -x : x;\n}\nfunction _toNumberOrThrow(value, onError) {\n if (isNumber(value)) {\n return value;\n } else if (isBigNumber(value)) {\n return value.toNumber();\n } else {\n onError();\n }\n}\nfunction _toNumberOrDefault(value, defaultValue) {\n if (isNumber(value)) {\n return value;\n } else if (isBigNumber(value)) {\n return value.toNumber();\n } else {\n return defaultValue;\n }\n}", "import { factory } from '../../utils/factory.js';\nvar name = 'ResultSet';\nvar dependencies = [];\nexport var createResultSet = /* #__PURE__ */factory(name, dependencies, () => {\n /**\n * A ResultSet contains a list or results\n * @class ResultSet\n * @param {Array} entries\n * @constructor ResultSet\n */\n function ResultSet(entries) {\n if (!(this instanceof ResultSet)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n this.entries = entries || [];\n }\n\n /**\n * Attach type information\n */\n ResultSet.prototype.type = 'ResultSet';\n ResultSet.prototype.isResultSet = true;\n\n /**\n * Returns the array with results hold by this ResultSet\n * @memberof ResultSet\n * @returns {Array} entries\n */\n ResultSet.prototype.valueOf = function () {\n return this.entries;\n };\n\n /**\n * Returns the stringified results of the ResultSet\n * @memberof ResultSet\n * @returns {string} string\n */\n ResultSet.prototype.toString = function () {\n return '[' + this.entries.map(String).join(', ') + ']';\n };\n\n /**\n * Get a JSON representation of the ResultSet\n * @memberof ResultSet\n * @returns {Object} Returns a JSON object structured as:\n * `{\"mathjs\": \"ResultSet\", \"entries\": [...]}`\n */\n ResultSet.prototype.toJSON = function () {\n return {\n mathjs: 'ResultSet',\n entries: this.entries\n };\n };\n\n /**\n * Instantiate a ResultSet from a JSON object\n * @memberof ResultSet\n * @param {Object} json A JSON object structured as:\n * `{\"mathjs\": \"ResultSet\", \"entries\": [...]}`\n * @return {ResultSet}\n */\n ResultSet.fromJSON = function (json) {\n return new ResultSet(json.entries);\n };\n return ResultSet;\n}, {\n isClass: true\n});", "/*!\r\n * decimal.js v10.4.3\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js\r\n * Copyright (c) 2022 Michael Mclaughlin \r\n * MIT Licence\r\n */\r\n\r\n\r\n// ----------------------------------- EDITABLE DEFAULTS ------------------------------------ //\r\n\r\n\r\n // The maximum exponent magnitude.\r\n // The limit on the value of `toExpNeg`, `toExpPos`, `minE` and `maxE`.\r\nvar EXP_LIMIT = 9e15, // 0 to 9e15\r\n\r\n // The limit on the value of `precision`, and on the value of the first argument to\r\n // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n MAX_DIGITS = 1e9, // 0 to 1e9\r\n\r\n // Base conversion alphabet.\r\n NUMERALS = '0123456789abcdef',\r\n\r\n // The natural logarithm of 10 (1025 digits).\r\n LN10 = '2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058',\r\n\r\n // Pi (1025 digits).\r\n PI = '3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789',\r\n\r\n\r\n // The initial configuration properties of the Decimal constructor.\r\n DEFAULTS = {\r\n\r\n // These values must be integers within the stated ranges (inclusive).\r\n // Most of these values can be changed at run-time using the `Decimal.config` method.\r\n\r\n // The maximum number of significant digits of the result of a calculation or base conversion.\r\n // E.g. `Decimal.config({ precision: 20 });`\r\n precision: 20, // 1 to MAX_DIGITS\r\n\r\n // The rounding mode used when rounding to `precision`.\r\n //\r\n // ROUND_UP 0 Away from zero.\r\n // ROUND_DOWN 1 Towards zero.\r\n // ROUND_CEIL 2 Towards +Infinity.\r\n // ROUND_FLOOR 3 Towards -Infinity.\r\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n //\r\n // E.g.\r\n // `Decimal.rounding = 4;`\r\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n rounding: 4, // 0 to 8\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend (JavaScript %).\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 The IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). Always positive.\r\n //\r\n // Truncated division (1), floored division (3), the IEEE 754 remainder (6), and Euclidian\r\n // division (9) are commonly used for the modulus operation. The other rounding modes can also\r\n // be used, but they may not give useful results.\r\n modulo: 1, // 0 to 9\r\n\r\n // The exponent value at and beneath which `toString` returns exponential notation.\r\n // JavaScript numbers: -7\r\n toExpNeg: -7, // 0 to -EXP_LIMIT\r\n\r\n // The exponent value at and above which `toString` returns exponential notation.\r\n // JavaScript numbers: 21\r\n toExpPos: 21, // 0 to EXP_LIMIT\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // JavaScript numbers: -324 (5e-324)\r\n minE: -EXP_LIMIT, // -1 to -EXP_LIMIT\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // JavaScript numbers: 308 (1.7976931348623157e+308)\r\n maxE: EXP_LIMIT, // 1 to EXP_LIMIT\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n crypto: false // true/false\r\n },\r\n\r\n\r\n// ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n inexact, quadrant,\r\n external = true,\r\n\r\n decimalError = '[DecimalError] ',\r\n invalidArgument = decimalError + 'Invalid argument: ',\r\n precisionLimitExceeded = decimalError + 'Precision limit exceeded',\r\n cryptoUnavailable = decimalError + 'crypto unavailable',\r\n tag = '[object Decimal]',\r\n\r\n mathfloor = Math.floor,\r\n mathpow = Math.pow,\r\n\r\n isBinary = /^0b([01]+(\\.[01]*)?|\\.[01]+)(p[+-]?\\d+)?$/i,\r\n isHex = /^0x([0-9a-f]+(\\.[0-9a-f]*)?|\\.[0-9a-f]+)(p[+-]?\\d+)?$/i,\r\n isOctal = /^0o([0-7]+(\\.[0-7]*)?|\\.[0-7]+)(p[+-]?\\d+)?$/i,\r\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n\r\n LN10_PRECISION = LN10.length - 1,\r\n PI_PRECISION = PI.length - 1,\r\n\r\n // Decimal.prototype object\r\n P = { toStringTag: tag };\r\n\r\n\r\n// Decimal prototype methods\r\n\r\n\r\n/*\r\n * absoluteValue abs\r\n * ceil\r\n * clampedTo clamp\r\n * comparedTo cmp\r\n * cosine cos\r\n * cubeRoot cbrt\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy divToInt\r\n * equals eq\r\n * floor\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * hyperbolicCosine cosh\r\n * hyperbolicSine sinh\r\n * hyperbolicTangent tanh\r\n * inverseCosine acos\r\n * inverseHyperbolicCosine acosh\r\n * inverseHyperbolicSine asinh\r\n * inverseHyperbolicTangent atanh\r\n * inverseSine asin\r\n * inverseTangent atan\r\n * isFinite\r\n * isInteger isInt\r\n * isNaN\r\n * isNegative isNeg\r\n * isPositive isPos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * [maximum] [max]\r\n * [minimum] [min]\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * round\r\n * sine sin\r\n * squareRoot sqrt\r\n * tangent tan\r\n * times mul\r\n * toBinary\r\n * toDecimalPlaces toDP\r\n * toExponential\r\n * toFixed\r\n * toFraction\r\n * toHexadecimal toHex\r\n * toNearest\r\n * toNumber\r\n * toOctal\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits toSD\r\n * toString\r\n * truncated trunc\r\n * valueOf toJSON\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\r\nP.absoluteValue = P.abs = function () {\r\n var x = new this.constructor(this);\r\n if (x.s < 0) x.s = 1;\r\n return finalise(x);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of positive Infinity.\r\n *\r\n */\r\nP.ceil = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal clamped to the range\r\n * delineated by `min` and `max`.\r\n *\r\n * min {number|string|Decimal}\r\n * max {number|string|Decimal}\r\n *\r\n */\r\nP.clampedTo = P.clamp = function (min, max) {\r\n var k,\r\n x = this,\r\n Ctor = x.constructor;\r\n min = new Ctor(min);\r\n max = new Ctor(max);\r\n if (!min.s || !max.s) return new Ctor(NaN);\r\n if (min.gt(max)) throw Error(invalidArgument + max);\r\n k = x.cmp(min);\r\n return k < 0 ? min : x.cmp(max) > 0 ? max : new Ctor(x);\r\n};\r\n\r\n\r\n/*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value,\r\n * NaN if the value of either Decimal is NaN.\r\n *\r\n */\r\nP.comparedTo = P.cmp = function (y) {\r\n var i, j, xdL, ydL,\r\n x = this,\r\n xd = x.d,\r\n yd = (y = new x.constructor(y)).d,\r\n xs = x.s,\r\n ys = y.s;\r\n\r\n // Either NaN or \u00B1Infinity?\r\n if (!xd || !yd) {\r\n return !xs || !ys ? NaN : xs !== ys ? xs : xd === yd ? 0 : !xd ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Either zero?\r\n if (!xd[0] || !yd[0]) return xd[0] ? xs : yd[0] ? -ys : 0;\r\n\r\n // Signs differ?\r\n if (xs !== ys) return xs;\r\n\r\n // Compare exponents.\r\n if (x.e !== y.e) return x.e > y.e ^ xs < 0 ? 1 : -1;\r\n\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Compare digit by digit.\r\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n if (xd[i] !== yd[i]) return xd[i] > yd[i] ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return xdL === ydL ? 0 : xdL > ydL ^ xs < 0 ? 1 : -1;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cosine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * cos(0) = 1\r\n * cos(-0) = 1\r\n * cos(Infinity) = NaN\r\n * cos(-Infinity) = NaN\r\n * cos(NaN) = NaN\r\n *\r\n */\r\nP.cosine = P.cos = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.d) return new Ctor(NaN);\r\n\r\n // cos(0) = cos(-0) = 1\r\n if (!x.d[0]) return new Ctor(1);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = cosine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 3 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n *\r\n * Return a new Decimal whose value is the cube root of the value of this Decimal, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * cbrt(0) = 0\r\n * cbrt(-0) = -0\r\n * cbrt(1) = 1\r\n * cbrt(-1) = -1\r\n * cbrt(N) = N\r\n * cbrt(-I) = -I\r\n * cbrt(I) = I\r\n *\r\n * Math.cbrt(x) = (x < 0 ? -Math.pow(-x, 1/3) : Math.pow(x, 1/3))\r\n *\r\n */\r\nP.cubeRoot = P.cbrt = function () {\r\n var e, m, n, r, rep, s, sd, t, t3, t3plusx,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = x.s * mathpow(x.s * x, 1 / 3);\r\n\r\n // Math.cbrt underflow/overflow?\r\n // Pass x to Math.pow as integer, then adjust the exponent of the result.\r\n if (!s || Math.abs(s) == 1 / 0) {\r\n n = digitsToString(x.d);\r\n e = x.e;\r\n\r\n // Adjust n exponent so it is a multiple of 3 away from x exponent.\r\n if (s = (e - n.length + 1) % 3) n += (s == 1 || s == -2 ? '0' : '00');\r\n s = mathpow(n, 1 / 3);\r\n\r\n // Rarely, e may be one less than the result exponent value.\r\n e = mathfloor((e + 1) / 3) - (e % 3 == (e < 0 ? -1 : 2));\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n r.s = x.s;\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Halley's method.\r\n // TODO? Compare Newton's method.\r\n for (;;) {\r\n t = r;\r\n t3 = t.times(t).times(t);\r\n t3plusx = t3.plus(x);\r\n r = divide(t3plusx.plus(x).times(t), t3plusx.plus(t3), sd + 2, 1);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or 4999\r\n // , i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n};\r\n\r\n\r\n/*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\r\nP.decimalPlaces = P.dp = function () {\r\n var w,\r\n d = this.d,\r\n n = NaN;\r\n\r\n if (d) {\r\n w = d.length - 1;\r\n n = (w - mathfloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n w = d[w];\r\n if (w) for (; w % 10 == 0; w /= 10) n--;\r\n if (n < 0) n = 0;\r\n }\r\n\r\n return n;\r\n};\r\n\r\n\r\n/*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.dividedBy = P.div = function (y) {\r\n return divide(this, new this.constructor(y));\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.dividedToIntegerBy = P.divToInt = function (y) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return finalise(divide(x, new Ctor(y), 0, 1, 1), Ctor.precision, Ctor.rounding);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\r\nP.equals = P.eq = function (y) {\r\n return this.cmp(y) === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of negative Infinity.\r\n *\r\n */\r\nP.floor = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 3);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\r\nP.greaterThan = P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\r\nP.greaterThanOrEqualTo = P.gte = function (y) {\r\n var k = this.cmp(y);\r\n return k == 1 || k === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic cosine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [1, Infinity]\r\n *\r\n * cosh(x) = 1 + x^2/2! + x^4/4! + x^6/6! + ...\r\n *\r\n * cosh(0) = 1\r\n * cosh(-0) = 1\r\n * cosh(Infinity) = Infinity\r\n * cosh(-Infinity) = Infinity\r\n * cosh(NaN) = NaN\r\n *\r\n * x time taken (ms) result\r\n * 1000 9 9.8503555700852349694e+433\r\n * 10000 25 4.4034091128314607936e+4342\r\n * 100000 171 1.4033316802130615897e+43429\r\n * 1000000 3817 1.5166076984010437725e+434294\r\n * 10000000 abandoned after 2 minute wait\r\n *\r\n * TODO? Compare performance of cosh(x) = 0.5 * (exp(x) + exp(-x))\r\n *\r\n */\r\nP.hyperbolicCosine = P.cosh = function () {\r\n var k, n, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor,\r\n one = new Ctor(1);\r\n\r\n if (!x.isFinite()) return new Ctor(x.s ? 1 / 0 : NaN);\r\n if (x.isZero()) return one;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n // Argument reduction: cos(4x) = 1 - 8cos^2(x) + 8cos^4(x) + 1\r\n // i.e. cos(x) = 1 - cos^2(x/4)(8 - 8cos^2(x/4))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n // TODO? Estimation reused from cosine() and may not be optimal here.\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n n = (1 / tinyPow(4, k)).toString();\r\n } else {\r\n k = 16;\r\n n = '2.3283064365386962890625e-10';\r\n }\r\n\r\n x = taylorSeries(Ctor, 1, x.times(n), new Ctor(1), true);\r\n\r\n // Reverse argument reduction\r\n var cosh2_x,\r\n i = k,\r\n d8 = new Ctor(8);\r\n for (; i--;) {\r\n cosh2_x = x.times(x);\r\n x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8))));\r\n }\r\n\r\n return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic sine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * sinh(x) = x + x^3/3! + x^5/5! + x^7/7! + ...\r\n *\r\n * sinh(0) = 0\r\n * sinh(-0) = -0\r\n * sinh(Infinity) = Infinity\r\n * sinh(-Infinity) = -Infinity\r\n * sinh(NaN) = NaN\r\n *\r\n * x time taken (ms)\r\n * 10 2 ms\r\n * 100 5 ms\r\n * 1000 14 ms\r\n * 10000 82 ms\r\n * 100000 886 ms 1.4033316802130615897e+43429\r\n * 200000 2613 ms\r\n * 300000 5407 ms\r\n * 400000 8824 ms\r\n * 500000 13026 ms 8.7080643612718084129e+217146\r\n * 1000000 48543 ms\r\n *\r\n * TODO? Compare performance of sinh(x) = 0.5 * (exp(x) - exp(-x))\r\n *\r\n */\r\nP.hyperbolicSine = P.sinh = function () {\r\n var k, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n } else {\r\n\r\n // Alternative argument reduction: sinh(3x) = sinh(x)(3 + 4sinh^2(x))\r\n // i.e. sinh(x) = sinh(x/3)(3 + 4sinh^2(x/3))\r\n // 3 multiplications and 1 addition\r\n\r\n // Argument reduction: sinh(5x) = sinh(x)(5 + sinh^2(x)(20 + 16sinh^2(x)))\r\n // i.e. sinh(x) = sinh(x/5)(5 + sinh^2(x/5)(20 + 16sinh^2(x/5)))\r\n // 4 multiplications and 2 additions\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(1 / tinyPow(5, k));\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n\r\n // Reverse argument reduction\r\n var sinh2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sinh2_x = x.times(x);\r\n x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20))));\r\n }\r\n }\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic tangent of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * tanh(x) = sinh(x) / cosh(x)\r\n *\r\n * tanh(0) = 0\r\n * tanh(-0) = -0\r\n * tanh(Infinity) = 1\r\n * tanh(-Infinity) = -1\r\n * tanh(NaN) = NaN\r\n *\r\n */\r\nP.hyperbolicTangent = P.tanh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(x.s);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 7;\r\n Ctor.rounding = 1;\r\n\r\n return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arccosine (inverse cosine) in radians of the value of\r\n * this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [0, pi]\r\n *\r\n * acos(x) = pi/2 - asin(x)\r\n *\r\n * acos(0) = pi/2\r\n * acos(-0) = pi/2\r\n * acos(1) = 0\r\n * acos(-1) = pi\r\n * acos(1/2) = pi/3\r\n * acos(-1/2) = 2*pi/3\r\n * acos(|x| > 1) = NaN\r\n * acos(NaN) = NaN\r\n *\r\n */\r\nP.inverseCosine = P.acos = function () {\r\n var halfPi,\r\n x = this,\r\n Ctor = x.constructor,\r\n k = x.abs().cmp(1),\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n return k === 0\r\n // |x| is 1\r\n ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0)\r\n // |x| > 1 or x is NaN\r\n : new Ctor(NaN);\r\n }\r\n\r\n if (x.isZero()) return getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n // TODO? Special case acos(0.5) = pi/3 and acos(-0.5) = 2*pi/3\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n x = x.asin();\r\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return halfPi.minus(x);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [1, Infinity]\r\n * Range: [0, Infinity]\r\n *\r\n * acosh(x) = ln(x + sqrt(x^2 - 1))\r\n *\r\n * acosh(x < 1) = NaN\r\n * acosh(NaN) = NaN\r\n * acosh(Infinity) = Infinity\r\n * acosh(-Infinity) = NaN\r\n * acosh(0) = NaN\r\n * acosh(-0) = NaN\r\n * acosh(1) = 0\r\n * acosh(-1) = NaN\r\n *\r\n */\r\nP.inverseHyperbolicCosine = P.acosh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.lte(1)) return new Ctor(x.eq(1) ? 0 : NaN);\r\n if (!x.isFinite()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).minus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * asinh(x) = ln(x + sqrt(x^2 + 1))\r\n *\r\n * asinh(NaN) = NaN\r\n * asinh(Infinity) = Infinity\r\n * asinh(-Infinity) = -Infinity\r\n * asinh(0) = 0\r\n * asinh(-0) = -0\r\n *\r\n */\r\nP.inverseHyperbolicSine = P.asinh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 2 * Math.max(Math.abs(x.e), x.sd()) + 6;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).plus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * atanh(x) = 0.5 * ln((1 + x) / (1 - x))\r\n *\r\n * atanh(|x| > 1) = NaN\r\n * atanh(NaN) = NaN\r\n * atanh(Infinity) = NaN\r\n * atanh(-Infinity) = NaN\r\n * atanh(0) = 0\r\n * atanh(-0) = -0\r\n * atanh(1) = Infinity\r\n * atanh(-1) = -Infinity\r\n *\r\n */\r\nP.inverseHyperbolicTangent = P.atanh = function () {\r\n var pr, rm, wpr, xsd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.e >= 0) return new Ctor(x.abs().eq(1) ? x.s / 0 : x.isZero() ? x : NaN);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n xsd = x.sd();\r\n\r\n if (Math.max(xsd, pr) < 2 * -x.e - 1) return finalise(new Ctor(x), pr, rm, true);\r\n\r\n Ctor.precision = wpr = xsd - x.e;\r\n\r\n x = divide(x.plus(1), new Ctor(1).minus(x), wpr + pr, 1);\r\n\r\n Ctor.precision = pr + 4;\r\n Ctor.rounding = 1;\r\n\r\n x = x.ln();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(0.5);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arcsine (inverse sine) in radians of the value of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * asin(x) = 2*atan(x/(1 + sqrt(1 - x^2)))\r\n *\r\n * asin(0) = 0\r\n * asin(-0) = -0\r\n * asin(1/2) = pi/6\r\n * asin(-1/2) = -pi/6\r\n * asin(1) = pi/2\r\n * asin(-1) = -pi/2\r\n * asin(|x| > 1) = NaN\r\n * asin(NaN) = NaN\r\n *\r\n * TODO? Compare performance of Taylor series.\r\n *\r\n */\r\nP.inverseSine = P.asin = function () {\r\n var halfPi, k,\r\n pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n k = x.abs().cmp(1);\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n\r\n // |x| is 1\r\n if (k === 0) {\r\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n halfPi.s = x.s;\r\n return halfPi;\r\n }\r\n\r\n // |x| > 1 or x is NaN\r\n return new Ctor(NaN);\r\n }\r\n\r\n // TODO? Special case asin(1/2) = pi/6 and asin(-1/2) = -pi/6\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n x = x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent (inverse tangent) in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n *\r\n * atan(0) = 0\r\n * atan(-0) = -0\r\n * atan(1) = pi/4\r\n * atan(-1) = -pi/4\r\n * atan(Infinity) = pi/2\r\n * atan(-Infinity) = -pi/2\r\n * atan(NaN) = NaN\r\n *\r\n */\r\nP.inverseTangent = P.atan = function () {\r\n var i, j, k, n, px, t, r, wpr, x2,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (!x.isFinite()) {\r\n if (!x.s) return new Ctor(NaN);\r\n if (pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.5);\r\n r.s = x.s;\r\n return r;\r\n }\r\n } else if (x.isZero()) {\r\n return new Ctor(x);\r\n } else if (x.abs().eq(1) && pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.25);\r\n r.s = x.s;\r\n return r;\r\n }\r\n\r\n Ctor.precision = wpr = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n // TODO? if (x >= 1 && pr <= PI_PRECISION) atan(x) = halfPi * x.s - atan(1 / x);\r\n\r\n // Argument reduction\r\n // Ensure |x| < 0.42\r\n // atan(x) = 2 * atan(x / (1 + sqrt(1 + x^2)))\r\n\r\n k = Math.min(28, wpr / LOG_BASE + 2 | 0);\r\n\r\n for (i = k; i; --i) x = x.div(x.times(x).plus(1).sqrt().plus(1));\r\n\r\n external = false;\r\n\r\n j = Math.ceil(wpr / LOG_BASE);\r\n n = 1;\r\n x2 = x.times(x);\r\n r = new Ctor(x);\r\n px = x;\r\n\r\n // atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n for (; i !== -1;) {\r\n px = px.times(x2);\r\n t = r.minus(px.div(n += 2));\r\n\r\n px = px.times(x2);\r\n r = t.plus(px.div(n += 2));\r\n\r\n if (r.d[j] !== void 0) for (i = j; r.d[i] === t.d[i] && i--;);\r\n }\r\n\r\n if (k) r = r.times(2 << (k - 1));\r\n\r\n external = true;\r\n\r\n return finalise(r, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is a finite number, otherwise return false.\r\n *\r\n */\r\nP.isFinite = function () {\r\n return !!this.d;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\r\nP.isInteger = P.isInt = function () {\r\n return !!this.d && mathfloor(this.e / LOG_BASE) > this.d.length - 2;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is NaN, otherwise return false.\r\n *\r\n */\r\nP.isNaN = function () {\r\n return !this.s;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\r\nP.isNegative = P.isNeg = function () {\r\n return this.s < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\r\nP.isPositive = P.isPos = function () {\r\n return this.s > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is 0 or -0, otherwise return false.\r\n *\r\n */\r\nP.isZero = function () {\r\n return !!this.d && this.d[0] === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\r\nP.lessThan = P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\r\nP.lessThanOrEqualTo = P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n};\r\n\r\n\r\n/*\r\n * Return the logarithm of the value of this Decimal to the specified base, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * If no base is specified, return log[10](arg).\r\n *\r\n * log[base](arg) = ln(arg) / ln(base)\r\n *\r\n * The result will always be correctly rounded if the base of the log is 10, and 'almost always'\r\n * otherwise:\r\n *\r\n * Depending on the rounding mode, the result may be incorrectly rounded if the first fifteen\r\n * rounding digits are [49]99999999999999 or [50]00000000000000. In that case, the maximum error\r\n * between the result and the correctly rounded result will be one ulp (unit in the last place).\r\n *\r\n * log[-b](a) = NaN\r\n * log[0](a) = NaN\r\n * log[1](a) = NaN\r\n * log[NaN](a) = NaN\r\n * log[Infinity](a) = NaN\r\n * log[b](0) = -Infinity\r\n * log[b](-0) = -Infinity\r\n * log[b](-a) = NaN\r\n * log[b](1) = 0\r\n * log[b](Infinity) = Infinity\r\n * log[b](NaN) = NaN\r\n *\r\n * [base] {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\nP.logarithm = P.log = function (base) {\r\n var isBase10, d, denominator, k, inf, num, sd, r,\r\n arg = this,\r\n Ctor = arg.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding,\r\n guard = 5;\r\n\r\n // Default base is 10.\r\n if (base == null) {\r\n base = new Ctor(10);\r\n isBase10 = true;\r\n } else {\r\n base = new Ctor(base);\r\n d = base.d;\r\n\r\n // Return NaN if base is negative, or non-finite, or is 0 or 1.\r\n if (base.s < 0 || !d || !d[0] || base.eq(1)) return new Ctor(NaN);\r\n\r\n isBase10 = base.eq(10);\r\n }\r\n\r\n d = arg.d;\r\n\r\n // Is arg negative, non-finite, 0 or 1?\r\n if (arg.s < 0 || !d || !d[0] || arg.eq(1)) {\r\n return new Ctor(d && !d[0] ? -1 / 0 : arg.s != 1 ? NaN : d ? 0 : 1 / 0);\r\n }\r\n\r\n // The result will have a non-terminating decimal expansion if base is 10 and arg is not an\r\n // integer power of 10.\r\n if (isBase10) {\r\n if (d.length > 1) {\r\n inf = true;\r\n } else {\r\n for (k = d[0]; k % 10 === 0;) k /= 10;\r\n inf = k !== 1;\r\n }\r\n }\r\n\r\n external = false;\r\n sd = pr + guard;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n\r\n // The result will have 5 rounding digits.\r\n r = divide(num, denominator, sd, 1);\r\n\r\n // If at a rounding boundary, i.e. the result's rounding digits are [49]9999 or [50]0000,\r\n // calculate 10 further digits.\r\n //\r\n // If the result is known to have an infinite decimal expansion, repeat this until it is clear\r\n // that the result is above or below the boundary. Otherwise, if after calculating the 10\r\n // further digits, the last 14 are nines, round up and assume the result is exact.\r\n // Also assume the result is exact if the last 14 are zero.\r\n //\r\n // Example of a result that will be incorrectly rounded:\r\n // log[1048576](4503599627370502) = 2.60000000000000009610279511444746...\r\n // The above result correctly rounded using ROUND_CEIL to 1 decimal place should be 2.7, but it\r\n // will be given as 2.6 as there are 15 zeros immediately after the requested decimal place, so\r\n // the exact result would be assumed to be 2.6, which rounded using ROUND_CEIL to 1 decimal\r\n // place is still 2.6.\r\n if (checkRoundingDigits(r.d, k = pr, rm)) {\r\n\r\n do {\r\n sd += 10;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n r = divide(num, denominator, sd, 1);\r\n\r\n if (!inf) {\r\n\r\n // Check for 14 nines from the 2nd rounding digit, as the first may be 4.\r\n if (+digitsToString(r.d).slice(k + 1, k + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n\r\n break;\r\n }\r\n } while (checkRoundingDigits(r.d, k += 10, rm));\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, pr, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the maximum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\nP.max = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 'lt');\r\n};\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the minimum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\nP.min = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 'gt');\r\n};\r\n */\r\n\r\n\r\n/*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.minus = P.sub = function (y) {\r\n var d, e, i, j, k, len, pr, rm, xd, xe, xLTy, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return y negated if x is finite and y is \u00B1Infinity.\r\n else if (x.d) y.s = -y.s;\r\n\r\n // Return x if y is finite and x is \u00B1Infinity.\r\n // Return x if both are \u00B1Infinity with different signs.\r\n // Return NaN if both are \u00B1Infinity with the same sign.\r\n else y = new Ctor(y.d || x.s !== y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.plus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return y negated if x is zero and y is non-zero.\r\n if (yd[0]) y.s = -y.s;\r\n\r\n // Return x if y is zero and x is non-zero.\r\n else if (xd[0]) y = new Ctor(x);\r\n\r\n // Return zero if both are zero.\r\n // From IEEE 754 (2008) 6.3: 0 - 0 = -0 - -0 = -0 when rounding to -Infinity.\r\n else return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n e = mathfloor(y.e / LOG_BASE);\r\n xe = mathfloor(x.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n k = xe - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (k) {\r\n xLTy = k < 0;\r\n\r\n if (xLTy) {\r\n d = xd;\r\n k = -k;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = xe;\r\n len = xd.length;\r\n }\r\n\r\n // Numbers with massively different exponents would result in a very high number of\r\n // zeros needing to be prepended, but this can be avoided while still ensuring correct\r\n // rounding by limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n if (k > i) {\r\n k = i;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents.\r\n d.reverse();\r\n for (i = k; i--;) d.push(0);\r\n d.reverse();\r\n\r\n // Base 1e7 exponents equal.\r\n } else {\r\n\r\n // Check digits to determine which is the bigger number.\r\n\r\n i = xd.length;\r\n len = yd.length;\r\n xLTy = i < len;\r\n if (xLTy) len = i;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (xd[i] != yd[i]) {\r\n xLTy = xd[i] < yd[i];\r\n break;\r\n }\r\n }\r\n\r\n k = 0;\r\n }\r\n\r\n if (xLTy) {\r\n d = xd;\r\n xd = yd;\r\n yd = d;\r\n y.s = -y.s;\r\n }\r\n\r\n len = xd.length;\r\n\r\n // Append zeros to `xd` if shorter.\r\n // Don't add zeros to `yd` if shorter as subtraction only needs to start at `yd` length.\r\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n // Subtract yd from xd.\r\n for (i = yd.length; i > k;) {\r\n\r\n if (xd[--i] < yd[i]) {\r\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n --xd[j];\r\n xd[i] += BASE;\r\n }\r\n\r\n xd[i] -= yd[i];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] === 0;) xd.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n // Zero?\r\n if (!xd[0]) return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n};\r\n\r\n\r\n/*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * The result depends on the modulo mode.\r\n *\r\n */\r\nP.modulo = P.mod = function (y) {\r\n var q,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // Return NaN if x is \u00B1Infinity or NaN, or y is NaN or \u00B10.\r\n if (!x.d || !y.s || y.d && !y.d[0]) return new Ctor(NaN);\r\n\r\n // Return x if y is \u00B1Infinity or x is \u00B10.\r\n if (!y.d || x.d && !x.d[0]) {\r\n return finalise(new Ctor(x), Ctor.precision, Ctor.rounding);\r\n }\r\n\r\n // Prevent rounding of intermediate calculations.\r\n external = false;\r\n\r\n if (Ctor.modulo == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // result = x - q * y where 0 <= result < abs(y)\r\n q = divide(x, y.abs(), 0, 3, 1);\r\n q.s *= y.s;\r\n } else {\r\n q = divide(x, y, 0, Ctor.modulo, 1);\r\n }\r\n\r\n q = q.times(y);\r\n\r\n external = true;\r\n\r\n return x.minus(q);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.naturalExponential = P.exp = function () {\r\n return naturalExponential(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.naturalLogarithm = P.ln = function () {\r\n return naturalLogarithm(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\r\nP.negated = P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s;\r\n return finalise(x);\r\n};\r\n\r\n\r\n/*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.plus = P.add = function (y) {\r\n var carry, d, e, i, k, len, pr, rm, xd, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return x if y is finite and x is \u00B1Infinity.\r\n // Return x if both are \u00B1Infinity with the same sign.\r\n // Return NaN if both are \u00B1Infinity with different signs.\r\n // Return y if x is finite and y is \u00B1Infinity.\r\n else if (!x.d) y = new Ctor(y.d || x.s === y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.minus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return x if y is zero.\r\n // Return y if y is non-zero.\r\n if (!yd[0]) y = new Ctor(x);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n k = mathfloor(x.e / LOG_BASE);\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n i = k - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (i) {\r\n\r\n if (i < 0) {\r\n d = xd;\r\n i = -i;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = k;\r\n len = xd.length;\r\n }\r\n\r\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n k = Math.ceil(pr / LOG_BASE);\r\n len = k > len ? k + 1 : len + 1;\r\n\r\n if (i > len) {\r\n i = len;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n d.reverse();\r\n for (; i--;) d.push(0);\r\n d.reverse();\r\n }\r\n\r\n len = xd.length;\r\n i = yd.length;\r\n\r\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n if (len - i < 0) {\r\n i = len;\r\n d = yd;\r\n yd = xd;\r\n xd = d;\r\n }\r\n\r\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n for (carry = 0; i;) {\r\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n xd[i] %= BASE;\r\n }\r\n\r\n if (carry) {\r\n xd.unshift(carry);\r\n ++e;\r\n }\r\n\r\n // Remove trailing zeros.\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\r\nP.precision = P.sd = function (z) {\r\n var k,\r\n x = this;\r\n\r\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n if (x.d) {\r\n k = getPrecision(x.d);\r\n if (z && x.e + 1 > k) k = x.e + 1;\r\n } else {\r\n k = NaN;\r\n }\r\n\r\n return k;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\r\nP.round = function () {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n return finalise(new Ctor(x), x.e + 1, Ctor.rounding);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n *\r\n * sin(0) = 0\r\n * sin(-0) = -0\r\n * sin(Infinity) = NaN\r\n * sin(-Infinity) = NaN\r\n * sin(NaN) = NaN\r\n *\r\n */\r\nP.sine = P.sin = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = sine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant > 2 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n */\r\nP.squareRoot = P.sqrt = function () {\r\n var m, n, sd, r, rep, t,\r\n x = this,\r\n d = x.d,\r\n e = x.e,\r\n s = x.s,\r\n Ctor = x.constructor;\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !d || !d[0]) {\r\n return new Ctor(!s || s < 0 && (!d || d[0]) ? NaN : d ? x : 1 / 0);\r\n }\r\n\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = digitsToString(d);\r\n\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Newton-Raphson iteration.\r\n for (;;) {\r\n t = r;\r\n r = t.plus(divide(x, t, sd + 2, 1)).times(0.5);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the tangent of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * tan(0) = 0\r\n * tan(-0) = -0\r\n * tan(Infinity) = NaN\r\n * tan(-Infinity) = NaN\r\n * tan(NaN) = NaN\r\n *\r\n */\r\nP.tangent = P.tan = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n x = x.sin();\r\n x.s = 1;\r\n x = divide(x, new Ctor(1).minus(x.times(x)).sqrt(), pr + 10, 0);\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 4 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new Decimal whose value is this Decimal times `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.times = P.mul = function (y) {\r\n var carry, e, i, k, r, rL, t, xdL, ydL,\r\n x = this,\r\n Ctor = x.constructor,\r\n xd = x.d,\r\n yd = (y = new Ctor(y)).d;\r\n\r\n y.s *= x.s;\r\n\r\n // If either is NaN, \u00B1Infinity or \u00B10...\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(!y.s || xd && !xd[0] && !yd || yd && !yd[0] && !xd\r\n\r\n // Return NaN if either is NaN.\r\n // Return NaN if x is \u00B10 and y is \u00B1Infinity, or y is \u00B10 and x is \u00B1Infinity.\r\n ? NaN\r\n\r\n // Return \u00B1Infinity if either is \u00B1Infinity.\r\n // Return \u00B10 if either is \u00B10.\r\n : !xd || !yd ? y.s / 0 : y.s * 0);\r\n }\r\n\r\n e = mathfloor(x.e / LOG_BASE) + mathfloor(y.e / LOG_BASE);\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Ensure xd points to the longer array.\r\n if (xdL < ydL) {\r\n r = xd;\r\n xd = yd;\r\n yd = r;\r\n rL = xdL;\r\n xdL = ydL;\r\n ydL = rL;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n r = [];\r\n rL = xdL + ydL;\r\n for (i = rL; i--;) r.push(0);\r\n\r\n // Multiply!\r\n for (i = ydL; --i >= 0;) {\r\n carry = 0;\r\n for (k = xdL + i; k > i;) {\r\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n r[k--] = t % BASE | 0;\r\n carry = t / BASE | 0;\r\n }\r\n\r\n r[k] = (r[k] + carry) % BASE | 0;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; !r[--rL];) r.pop();\r\n\r\n if (carry) ++e;\r\n else r.shift();\r\n\r\n y.d = r;\r\n y.e = getBase10Exponent(r, e);\r\n\r\n return external ? finalise(y, Ctor.precision, Ctor.rounding) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 2, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toBinary = function (sd, rm) {\r\n return toStringBinary(this, 2, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toDecimalPlaces = P.toDP = function (dp, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n if (dp === void 0) return x;\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n return finalise(x, dp + x.e + 1, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toExponential = function (dp, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x, true);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), dp + 1, rm);\r\n str = finiteToString(x, true, dp + 1);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\r\nP.toFixed = function (dp, rm) {\r\n var str, y,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n y = finalise(new Ctor(x), dp + x.e + 1, rm);\r\n str = finiteToString(y, false, dp + y.e + 1);\r\n }\r\n\r\n // To determine whether to add the minus sign look at the value before it was rounded,\r\n // i.e. look at `x` rather than `y`.\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return an array representing the value of this Decimal as a simple fraction with an integer\r\n * numerator and an integer denominator.\r\n *\r\n * The denominator will be a positive non-zero value less than or equal to the specified maximum\r\n * denominator. If a maximum denominator is not specified, the denominator will be the lowest\r\n * value necessary to represent the number exactly.\r\n *\r\n * [maxD] {number|string|Decimal} Maximum denominator. Integer >= 1 and < Infinity.\r\n *\r\n */\r\nP.toFraction = function (maxD) {\r\n var d, d0, d1, d2, e, k, n, n0, n1, pr, q, r,\r\n x = this,\r\n xd = x.d,\r\n Ctor = x.constructor;\r\n\r\n if (!xd) return new Ctor(x);\r\n\r\n n1 = d0 = new Ctor(1);\r\n d1 = n0 = new Ctor(0);\r\n\r\n d = new Ctor(d1);\r\n e = d.e = getPrecision(xd) - x.e - 1;\r\n k = e % LOG_BASE;\r\n d.d[0] = mathpow(10, k < 0 ? LOG_BASE + k : k);\r\n\r\n if (maxD == null) {\r\n\r\n // d is 10**e, the minimum max-denominator needed.\r\n maxD = e > 0 ? d : n1;\r\n } else {\r\n n = new Ctor(maxD);\r\n if (!n.isInt() || n.lt(n1)) throw Error(invalidArgument + n);\r\n maxD = n.gt(d) ? (e > 0 ? d : n1) : n;\r\n }\r\n\r\n external = false;\r\n n = new Ctor(digitsToString(xd));\r\n pr = Ctor.precision;\r\n Ctor.precision = e = xd.length * LOG_BASE * 2;\r\n\r\n for (;;) {\r\n q = divide(n, d, 0, 1, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.cmp(maxD) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n d2 = n1;\r\n n1 = n0.plus(q.times(d2));\r\n n0 = d2;\r\n d2 = d;\r\n d = n.minus(q.times(d2));\r\n n = d2;\r\n }\r\n\r\n d2 = divide(maxD.minus(d0), d1, 0, 1, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1?\r\n r = divide(n1, d1, e, 1).minus(x).abs().cmp(divide(n0, d0, e, 1).minus(x).abs()) < 1\r\n ? [n1, d1] : [n0, d0];\r\n\r\n Ctor.precision = pr;\r\n external = true;\r\n\r\n return r;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 16, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toHexadecimal = P.toHex = function (sd, rm) {\r\n return toStringBinary(this, 16, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Returns a new Decimal whose value is the nearest multiple of `y` in the direction of rounding\r\n * mode `rm`, or `Decimal.rounding` if `rm` is omitted, to the value of this Decimal.\r\n *\r\n * The return value will always have the same sign as this Decimal, unless either this Decimal\r\n * or `y` is NaN, in which case the return value will be also be NaN.\r\n *\r\n * The return value is not affected by the value of `precision`.\r\n *\r\n * y {number|string|Decimal} The magnitude to round to a multiple of.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toNearest() rounding mode not an integer: {rm}'\r\n * 'toNearest() rounding mode out of range: {rm}'\r\n *\r\n */\r\nP.toNearest = function (y, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n\r\n if (y == null) {\r\n\r\n // If x is not finite, return x.\r\n if (!x.d) return x;\r\n\r\n y = new Ctor(1);\r\n rm = Ctor.rounding;\r\n } else {\r\n y = new Ctor(y);\r\n if (rm === void 0) {\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(rm, 0, 8);\r\n }\r\n\r\n // If x is not finite, return x if y is not NaN, else NaN.\r\n if (!x.d) return y.s ? x : y;\r\n\r\n // If y is not finite, return Infinity with the sign of x if y is Infinity, else NaN.\r\n if (!y.d) {\r\n if (y.s) y.s = x.s;\r\n return y;\r\n }\r\n }\r\n\r\n // If y is not zero, calculate the nearest multiple of y to x.\r\n if (y.d[0]) {\r\n external = false;\r\n x = divide(x, y, 0, rm, 1).times(y);\r\n external = true;\r\n finalise(x);\r\n\r\n // If y is zero, return zero with the sign of x.\r\n } else {\r\n y.s = x.s;\r\n x = y;\r\n }\r\n\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return the value of this Decimal converted to a number primitive.\r\n * Zero keeps its sign.\r\n *\r\n */\r\nP.toNumber = function () {\r\n return +this;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 8, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toOctal = function (sd, rm) {\r\n return toStringBinary(this, 8, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`, rounded\r\n * to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * ECMAScript compliant.\r\n *\r\n * pow(x, NaN) = NaN\r\n * pow(x, \u00B10) = 1\r\n\r\n * pow(NaN, non-zero) = NaN\r\n * pow(abs(x) > 1, +Infinity) = +Infinity\r\n * pow(abs(x) > 1, -Infinity) = +0\r\n * pow(abs(x) == 1, \u00B1Infinity) = NaN\r\n * pow(abs(x) < 1, +Infinity) = +0\r\n * pow(abs(x) < 1, -Infinity) = +Infinity\r\n * pow(+Infinity, y > 0) = +Infinity\r\n * pow(+Infinity, y < 0) = +0\r\n * pow(-Infinity, odd integer > 0) = -Infinity\r\n * pow(-Infinity, even integer > 0) = +Infinity\r\n * pow(-Infinity, odd integer < 0) = -0\r\n * pow(-Infinity, even integer < 0) = +0\r\n * pow(+0, y > 0) = +0\r\n * pow(+0, y < 0) = +Infinity\r\n * pow(-0, odd integer > 0) = -0\r\n * pow(-0, even integer > 0) = +0\r\n * pow(-0, odd integer < 0) = -Infinity\r\n * pow(-0, even integer < 0) = +Infinity\r\n * pow(finite x < 0, finite non-integer) = NaN\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * Assuming the first 15 rounding digits are each equally likely to be any digit 0-9, the\r\n * probability of an incorrectly rounded result\r\n * P([49]9{14} | [50]0{14}) = 2 * 0.2 * 10^-14 = 4e-15 = 1/2.5e+14\r\n * i.e. 1 in 250,000,000,000,000\r\n *\r\n * If a result is incorrectly rounded the maximum error will be 1 ulp (unit in last place).\r\n *\r\n * y {number|string|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\nP.toPower = P.pow = function (y) {\r\n var e, k, pr, r, rm, s,\r\n x = this,\r\n Ctor = x.constructor,\r\n yn = +(y = new Ctor(y));\r\n\r\n // Either \u00B1Infinity, NaN or \u00B10?\r\n if (!x.d || !y.d || !x.d[0] || !y.d[0]) return new Ctor(mathpow(+x, yn));\r\n\r\n x = new Ctor(x);\r\n\r\n if (x.eq(1)) return x;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (y.eq(1)) return finalise(x, pr, rm);\r\n\r\n // y exponent\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n if (e >= y.d.length - 1 && (k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n r = intPow(Ctor, x, k, pr);\r\n return y.s < 0 ? new Ctor(1).div(r) : finalise(r, pr, rm);\r\n }\r\n\r\n s = x.s;\r\n\r\n // if x is negative\r\n if (s < 0) {\r\n\r\n // if y is not an integer\r\n if (e < y.d.length - 1) return new Ctor(NaN);\r\n\r\n // Result is positive if x is negative and the last digit of integer y is even.\r\n if ((y.d[e] & 1) == 0) s = 1;\r\n\r\n // if x.eq(-1)\r\n if (x.e == 0 && x.d[0] == 1 && x.d.length == 1) {\r\n x.s = s;\r\n return x;\r\n }\r\n }\r\n\r\n // Estimate result exponent.\r\n // x^y = 10^e, where e = y * log10(x)\r\n // log10(x) = log10(x_significand) + x_exponent\r\n // log10(x_significand) = ln(x_significand) / ln(10)\r\n k = mathpow(+x, yn);\r\n e = k == 0 || !isFinite(k)\r\n ? mathfloor(yn * (Math.log('0.' + digitsToString(x.d)) / Math.LN10 + x.e + 1))\r\n : new Ctor(k + '').e;\r\n\r\n // Exponent estimate may be incorrect e.g. x: 0.999999999999999999, y: 2.29, e: 0, r.e: -1.\r\n\r\n // Overflow/underflow?\r\n if (e > Ctor.maxE + 1 || e < Ctor.minE - 1) return new Ctor(e > 0 ? s / 0 : 0);\r\n\r\n external = false;\r\n Ctor.rounding = x.s = 1;\r\n\r\n // Estimate the extra guard digits needed to ensure five correct rounding digits from\r\n // naturalLogarithm(x). Example of failure without these extra digits (precision: 10):\r\n // new Decimal(2.32456).pow('2087987436534566.46411')\r\n // should be 1.162377823e+764914905173815, but is 1.162355823e+764914905173815\r\n k = Math.min(12, (e + '').length);\r\n\r\n // r = x^y = exp(y*ln(x))\r\n r = naturalExponential(y.times(naturalLogarithm(x, pr + k)), pr);\r\n\r\n // r may be Infinity, e.g. (0.9999999999999999).pow(-1e+40)\r\n if (r.d) {\r\n\r\n // Truncate to the required precision plus five rounding digits.\r\n r = finalise(r, pr + 5, 1);\r\n\r\n // If the rounding digits are [49]9999 or [50]0000 increase the precision by 10 and recalculate\r\n // the result.\r\n if (checkRoundingDigits(r.d, pr, rm)) {\r\n e = pr + 10;\r\n\r\n // Truncate to the increased precision plus five rounding digits.\r\n r = finalise(naturalExponential(y.times(naturalLogarithm(x, e + k)), e), e + 5, 1);\r\n\r\n // Check for 14 nines from the 2nd rounding digit (the first rounding digit may be 4 or 9).\r\n if (+digitsToString(r.d).slice(pr + 1, pr + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n }\r\n }\r\n\r\n r.s = s;\r\n external = true;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(r, pr, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toPrecision = function (sd, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), sd, rm);\r\n str = finiteToString(x, sd <= x.e || x.e <= Ctor.toExpNeg, sd);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toSD() digits out of range: {sd}'\r\n * 'toSD() digits not an integer: {sd}'\r\n * 'toSD() rounding mode not an integer: {rm}'\r\n * 'toSD() rounding mode out of range: {rm}'\r\n *\r\n */\r\nP.toSignificantDigits = P.toSD = function (sd, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n }\r\n\r\n return finalise(new Ctor(x), sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\r\nP.toString = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal truncated to a whole number.\r\n *\r\n */\r\nP.truncated = P.trunc = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 1);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal.\r\n * Unlike `toString`, negative zero will include the minus sign.\r\n *\r\n */\r\nP.valueOf = P.toJSON = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() ? '-' + str : str;\r\n};\r\n\r\n\r\n// Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n/*\r\n * digitsToString P.cubeRoot, P.logarithm, P.squareRoot, P.toFraction, P.toPower,\r\n * finiteToString, naturalExponential, naturalLogarithm\r\n * checkInt32 P.toDecimalPlaces, P.toExponential, P.toFixed, P.toNearest,\r\n * P.toPrecision, P.toSignificantDigits, toStringBinary, random\r\n * checkRoundingDigits P.logarithm, P.toPower, naturalExponential, naturalLogarithm\r\n * convertBase toStringBinary, parseOther\r\n * cos P.cos\r\n * divide P.atanh, P.cubeRoot, P.dividedBy, P.dividedToIntegerBy,\r\n * P.logarithm, P.modulo, P.squareRoot, P.tan, P.tanh, P.toFraction,\r\n * P.toNearest, toStringBinary, naturalExponential, naturalLogarithm,\r\n * taylorSeries, atan2, parseOther\r\n * finalise P.absoluteValue, P.atan, P.atanh, P.ceil, P.cos, P.cosh,\r\n * P.cubeRoot, P.dividedToIntegerBy, P.floor, P.logarithm, P.minus,\r\n * P.modulo, P.negated, P.plus, P.round, P.sin, P.sinh, P.squareRoot,\r\n * P.tan, P.times, P.toDecimalPlaces, P.toExponential, P.toFixed,\r\n * P.toNearest, P.toPower, P.toPrecision, P.toSignificantDigits,\r\n * P.truncated, divide, getLn10, getPi, naturalExponential,\r\n * naturalLogarithm, ceil, floor, round, trunc\r\n * finiteToString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf,\r\n * toStringBinary\r\n * getBase10Exponent P.minus, P.plus, P.times, parseOther\r\n * getLn10 P.logarithm, naturalLogarithm\r\n * getPi P.acos, P.asin, P.atan, toLessThanHalfPi, atan2\r\n * getPrecision P.precision, P.toFraction\r\n * getZeroString digitsToString, finiteToString\r\n * intPow P.toPower, parseOther\r\n * isOdd toLessThanHalfPi\r\n * maxOrMin max, min\r\n * naturalExponential P.naturalExponential, P.toPower\r\n * naturalLogarithm P.acosh, P.asinh, P.atanh, P.logarithm, P.naturalLogarithm,\r\n * P.toPower, naturalExponential\r\n * nonFiniteToString finiteToString, toStringBinary\r\n * parseDecimal Decimal\r\n * parseOther Decimal\r\n * sin P.sin\r\n * taylorSeries P.cosh, P.sinh, cos, sin\r\n * toLessThanHalfPi P.cos, P.sin\r\n * toStringBinary P.toBinary, P.toHexadecimal, P.toOctal\r\n * truncate intPow\r\n *\r\n * Throws: P.logarithm, P.precision, P.toFraction, checkInt32, getLn10, getPi,\r\n * naturalLogarithm, config, parseOther, random, Decimal\r\n */\r\n\r\n\r\nfunction digitsToString(d) {\r\n var i, k, ws,\r\n indexOfLastWord = d.length - 1,\r\n str = '',\r\n w = d[0];\r\n\r\n if (indexOfLastWord > 0) {\r\n str += w;\r\n for (i = 1; i < indexOfLastWord; i++) {\r\n ws = d[i] + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n str += ws;\r\n }\r\n\r\n w = d[i];\r\n ws = w + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n } else if (w === 0) {\r\n return '0';\r\n }\r\n\r\n // Remove trailing zeros of last w.\r\n for (; w % 10 === 0;) w /= 10;\r\n\r\n return str + w;\r\n}\r\n\r\n\r\nfunction checkInt32(i, min, max) {\r\n if (i !== ~~i || i < min || i > max) {\r\n throw Error(invalidArgument + i);\r\n }\r\n}\r\n\r\n\r\n/*\r\n * Check 5 rounding digits if `repeating` is null, 4 otherwise.\r\n * `repeating == null` if caller is `log` or `pow`,\r\n * `repeating != null` if caller is `naturalLogarithm` or `naturalExponential`.\r\n */\r\nfunction checkRoundingDigits(d, i, rm, repeating) {\r\n var di, k, r, rd;\r\n\r\n // Get the length of the first word of the array d.\r\n for (k = d[0]; k >= 10; k /= 10) --i;\r\n\r\n // Is the rounding digit in the first word of d?\r\n if (--i < 0) {\r\n i += LOG_BASE;\r\n di = 0;\r\n } else {\r\n di = Math.ceil((i + 1) / LOG_BASE);\r\n i %= LOG_BASE;\r\n }\r\n\r\n // i is the index (0 - 6) of the rounding digit.\r\n // E.g. if within the word 3487563 the first rounding digit is 5,\r\n // then i = 4, k = 1000, rd = 3487563 % 1000 = 563\r\n k = mathpow(10, LOG_BASE - i);\r\n rd = d[di] % k | 0;\r\n\r\n if (repeating == null) {\r\n if (i < 3) {\r\n if (i == 0) rd = rd / 100 | 0;\r\n else if (i == 1) rd = rd / 10 | 0;\r\n r = rm < 4 && rd == 99999 || rm > 3 && rd == 49999 || rd == 50000 || rd == 0;\r\n } else {\r\n r = (rm < 4 && rd + 1 == k || rm > 3 && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 100 | 0) == mathpow(10, i - 2) - 1 ||\r\n (rd == k / 2 || rd == 0) && (d[di + 1] / k / 100 | 0) == 0;\r\n }\r\n } else {\r\n if (i < 4) {\r\n if (i == 0) rd = rd / 1000 | 0;\r\n else if (i == 1) rd = rd / 100 | 0;\r\n else if (i == 2) rd = rd / 10 | 0;\r\n r = (repeating || rm < 4) && rd == 9999 || !repeating && rm > 3 && rd == 4999;\r\n } else {\r\n r = ((repeating || rm < 4) && rd + 1 == k ||\r\n (!repeating && rm > 3) && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 1000 | 0) == mathpow(10, i - 3) - 1;\r\n }\r\n }\r\n\r\n return r;\r\n}\r\n\r\n\r\n// Convert string of `baseIn` to an array of numbers of `baseOut`.\r\n// Eg. convertBase('255', 10, 16) returns [15, 15].\r\n// Eg. convertBase('ff', 16, 10) returns [2, 5, 5].\r\nfunction convertBase(str, baseIn, baseOut) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n strL = str.length;\r\n\r\n for (; i < strL;) {\r\n for (arrL = arr.length; arrL--;) arr[arrL] *= baseIn;\r\n arr[0] += NUMERALS.indexOf(str.charAt(i++));\r\n for (j = 0; j < arr.length; j++) {\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] === void 0) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n}\r\n\r\n\r\n/*\r\n * cos(x) = 1 - x^2/2! + x^4/4! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\nfunction cosine(Ctor, x) {\r\n var k, len, y;\r\n\r\n if (x.isZero()) return x;\r\n\r\n // Argument reduction: cos(4x) = 8*(cos^4(x) - cos^2(x)) + 1\r\n // i.e. cos(x) = 8*(cos^4(x/4) - cos^2(x/4)) + 1\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n len = x.d.length;\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n y = (1 / tinyPow(4, k)).toString();\r\n } else {\r\n k = 16;\r\n y = '2.3283064365386962890625e-10';\r\n }\r\n\r\n Ctor.precision += k;\r\n\r\n x = taylorSeries(Ctor, 1, x.times(y), new Ctor(1));\r\n\r\n // Reverse argument reduction\r\n for (var i = k; i--;) {\r\n var cos2x = x.times(x);\r\n x = cos2x.times(cos2x).minus(cos2x).times(8).plus(1);\r\n }\r\n\r\n Ctor.precision -= k;\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Perform division in the specified base.\r\n */\r\nvar divide = (function () {\r\n\r\n // Assumes non-zero x and k, and hence non-zero result.\r\n function multiplyInteger(x, k, base) {\r\n var temp,\r\n carry = 0,\r\n i = x.length;\r\n\r\n for (x = x.slice(); i--;) {\r\n temp = x[i] * k + carry;\r\n x[i] = temp % base | 0;\r\n carry = temp / base | 0;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, r;\r\n\r\n if (aL != bL) {\r\n r = aL > bL ? 1 : -1;\r\n } else {\r\n for (i = r = 0; i < aL; i++) {\r\n if (a[i] != b[i]) {\r\n r = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1;) a.shift();\r\n }\r\n\r\n return function (x, y, pr, rm, dp, base) {\r\n var cmp, e, i, k, logBase, more, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0,\r\n yL, yz,\r\n Ctor = x.constructor,\r\n sign = x.s == y.s ? 1 : -1,\r\n xd = x.d,\r\n yd = y.d;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(// Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xd ? yd && xd[0] == yd[0] : !yd) ? NaN :\r\n\r\n // Return \u00B10 if x is 0 or y is \u00B1Infinity, or return \u00B1Infinity as y is 0.\r\n xd && xd[0] == 0 || !yd ? sign * 0 : sign / 0);\r\n }\r\n\r\n if (base) {\r\n logBase = 1;\r\n e = x.e - y.e;\r\n } else {\r\n base = BASE;\r\n logBase = LOG_BASE;\r\n e = mathfloor(x.e / logBase) - mathfloor(y.e / logBase);\r\n }\r\n\r\n yL = yd.length;\r\n xL = xd.length;\r\n q = new Ctor(sign);\r\n qd = q.d = [];\r\n\r\n // Result exponent may be one less than e.\r\n // The digit array of a Decimal from toStringBinary may have trailing zeros.\r\n for (i = 0; yd[i] == (xd[i] || 0); i++);\r\n\r\n if (yd[i] > (xd[i] || 0)) e--;\r\n\r\n if (pr == null) {\r\n sd = pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else if (dp) {\r\n sd = pr + (x.e - y.e) + 1;\r\n } else {\r\n sd = pr;\r\n }\r\n\r\n if (sd < 0) {\r\n qd.push(1);\r\n more = true;\r\n } else {\r\n\r\n // Convert precision in number of base 10 digits to base 1e7 digits.\r\n sd = sd / logBase + 2 | 0;\r\n i = 0;\r\n\r\n // divisor < 1e7\r\n if (yL == 1) {\r\n k = 0;\r\n yd = yd[0];\r\n sd++;\r\n\r\n // k is the carry.\r\n for (; (i < xL || k) && sd--; i++) {\r\n t = k * base + (xd[i] || 0);\r\n qd[i] = t / yd | 0;\r\n k = t % yd | 0;\r\n }\r\n\r\n more = k || i < xL;\r\n\r\n // divisor >= 1e7\r\n } else {\r\n\r\n // Normalise xd and yd so highest order digit of yd is >= base/2\r\n k = base / (yd[0] + 1) | 0;\r\n\r\n if (k > 1) {\r\n yd = multiplyInteger(yd, k, base);\r\n xd = multiplyInteger(xd, k, base);\r\n yL = yd.length;\r\n xL = xd.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xd.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL;) rem[remL++] = 0;\r\n\r\n yz = yd.slice();\r\n yz.unshift(0);\r\n yd0 = yd[0];\r\n\r\n if (yd[1] >= base / 2) ++yd0;\r\n\r\n do {\r\n k = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, k.\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // k will be how many times the divisor goes into the current remainder.\r\n k = rem0 / yd0 | 0;\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (k)\r\n // 2. if product > remainder: product -= divisor, k--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n if (k > 1) {\r\n if (k >= base) k = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiplyInteger(yd, k, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n cmp = compare(prod, rem, prodL, remL);\r\n\r\n // product > remainder.\r\n if (cmp == 1) {\r\n k--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yd, prodL, base);\r\n }\r\n } else {\r\n\r\n // cmp is -1.\r\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n if (k == 0) cmp = k = 1;\r\n prod = yd.slice();\r\n }\r\n\r\n prodL = prod.length;\r\n if (prodL < remL) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n\r\n // If product was < previous remainder.\r\n if (cmp == -1) {\r\n remL = rem.length;\r\n\r\n // Compare divisor and new remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n if (cmp < 1) {\r\n k++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yd, remL, base);\r\n }\r\n }\r\n\r\n remL = rem.length;\r\n } else if (cmp === 0) {\r\n k++;\r\n rem = [0];\r\n } // if cmp === 1, k will be 0\r\n\r\n // Add the next digit, k, to the result array.\r\n qd[i++] = k;\r\n\r\n // Update the remainder.\r\n if (cmp && rem[0]) {\r\n rem[remL++] = xd[xi] || 0;\r\n } else {\r\n rem = [xd[xi]];\r\n remL = 1;\r\n }\r\n\r\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n\r\n more = rem[0] !== void 0;\r\n }\r\n\r\n // Leading zero?\r\n if (!qd[0]) qd.shift();\r\n }\r\n\r\n // logBase is 1 when divide is being used for base conversion.\r\n if (logBase == 1) {\r\n q.e = e;\r\n inexact = more;\r\n } else {\r\n\r\n // To calculate q.e, first get the number of digits of qd[0].\r\n for (i = 1, k = qd[0]; k >= 10; k /= 10) i++;\r\n q.e = i + e * logBase - 1;\r\n\r\n finalise(q, dp ? pr + q.e + 1 : pr, rm, more);\r\n }\r\n\r\n return q;\r\n };\r\n})();\r\n\r\n\r\n/*\r\n * Round `x` to `sd` significant digits using rounding mode `rm`.\r\n * Check for over/under-flow.\r\n */\r\n function finalise(x, sd, rm, isTruncated) {\r\n var digits, i, j, k, rd, roundUp, w, xd, xdi,\r\n Ctor = x.constructor;\r\n\r\n // Don't round if sd is null or undefined.\r\n out: if (sd != null) {\r\n xd = x.d;\r\n\r\n // Infinity/NaN.\r\n if (!xd) return x;\r\n\r\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // w: the word of xd containing rd, a base 1e7 number.\r\n // xdi: the index of w within xd.\r\n // digits: the number of digits of w.\r\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n // they had leading zeros)\r\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n // Get the length of the first word of the digits array xd.\r\n for (digits = 1, k = xd[0]; k >= 10; k /= 10) digits++;\r\n i = sd - digits;\r\n\r\n // Is the rounding digit in the first word of xd?\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n w = xd[xdi = 0];\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = w / mathpow(10, digits - j - 1) % 10 | 0;\r\n } else {\r\n xdi = Math.ceil((i + 1) / LOG_BASE);\r\n k = xd.length;\r\n if (xdi >= k) {\r\n if (isTruncated) {\r\n\r\n // Needed by `naturalExponential`, `naturalLogarithm` and `squareRoot`.\r\n for (; k++ <= xdi;) xd.push(0);\r\n w = rd = 0;\r\n digits = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n w = k = xd[xdi];\r\n\r\n // Get the number of digits of w.\r\n for (digits = 1; k >= 10; k /= 10) digits++;\r\n\r\n // Get the index of rd within w.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within w, adjusted for leading zeros.\r\n // The number of leading zeros of w is given by LOG_BASE - digits.\r\n j = i - LOG_BASE + digits;\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = j < 0 ? 0 : w / mathpow(10, digits - j - 1) % 10 | 0;\r\n }\r\n }\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n isTruncated = isTruncated || sd < 0 ||\r\n xd[xdi + 1] !== void 0 || (j < 0 ? w : w % mathpow(10, digits - j - 1));\r\n\r\n // The expression `w % mathpow(10, digits - j - 1)` returns all the digits of w to the right\r\n // of the digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression\r\n // will give 714.\r\n\r\n roundUp = rm < 4\r\n ? (rd || isTruncated) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || isTruncated || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? w / mathpow(10, digits - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xd[0]) {\r\n xd.length = 0;\r\n if (roundUp) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xd[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xd.length = xdi;\r\n k = 1;\r\n xdi--;\r\n } else {\r\n xd.length = xdi + 1;\r\n k = mathpow(10, LOG_BASE - i);\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of w.\r\n xd[xdi] = j > 0 ? (w / mathpow(10, digits - j) % mathpow(10, j) | 0) * k : 0;\r\n }\r\n\r\n if (roundUp) {\r\n for (;;) {\r\n\r\n // Is the digit to be rounded up in the first word of xd?\r\n if (xdi == 0) {\r\n\r\n // i will be the length of xd[0] before k is added.\r\n for (i = 1, j = xd[0]; j >= 10; j /= 10) i++;\r\n j = xd[0] += k;\r\n for (k = 1; j >= 10; j /= 10) k++;\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xd[0] == BASE) xd[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xd[xdi] += k;\r\n if (xd[xdi] != BASE) break;\r\n xd[xdi--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n }\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > Ctor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < Ctor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // Ctor.underflow = true;\r\n } // else Ctor.underflow = false;\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\nfunction finiteToString(x, isExp, sd) {\r\n if (!x.isFinite()) return nonFiniteToString(x);\r\n var k,\r\n e = x.e,\r\n str = digitsToString(x.d),\r\n len = str.length;\r\n\r\n if (isExp) {\r\n if (sd && (k = sd - len) > 0) {\r\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n } else if (len > 1) {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n\r\n str = str + (x.e < 0 ? 'e' : 'e+') + x.e;\r\n } else if (e < 0) {\r\n str = '0.' + getZeroString(-e - 1) + str;\r\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n } else if (e >= len) {\r\n str += getZeroString(e + 1 - len);\r\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n } else {\r\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n if (sd && (k = sd - len) > 0) {\r\n if (e + 1 === len) str += '.';\r\n str += getZeroString(k);\r\n }\r\n }\r\n\r\n return str;\r\n}\r\n\r\n\r\n// Calculate the base 10 exponent from the base 1e7 exponent.\r\nfunction getBase10Exponent(digits, e) {\r\n var w = digits[0];\r\n\r\n // Add the number of digits of the first word of the digits array.\r\n for ( e *= LOG_BASE; w >= 10; w /= 10) e++;\r\n return e;\r\n}\r\n\r\n\r\nfunction getLn10(Ctor, sd, pr) {\r\n if (sd > LN10_PRECISION) {\r\n\r\n // Reset global state in case the exception is caught.\r\n external = true;\r\n if (pr) Ctor.precision = pr;\r\n throw Error(precisionLimitExceeded);\r\n }\r\n return finalise(new Ctor(LN10), sd, 1, true);\r\n}\r\n\r\n\r\nfunction getPi(Ctor, sd, rm) {\r\n if (sd > PI_PRECISION) throw Error(precisionLimitExceeded);\r\n return finalise(new Ctor(PI), sd, rm, true);\r\n}\r\n\r\n\r\nfunction getPrecision(digits) {\r\n var w = digits.length - 1,\r\n len = w * LOG_BASE + 1;\r\n\r\n w = digits[w];\r\n\r\n // If non-zero...\r\n if (w) {\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n for (; w % 10 == 0; w /= 10) len--;\r\n\r\n // Add the number of digits of the first word.\r\n for (w = digits[0]; w >= 10; w /= 10) len++;\r\n }\r\n\r\n return len;\r\n}\r\n\r\n\r\nfunction getZeroString(k) {\r\n var zs = '';\r\n for (; k--;) zs += '0';\r\n return zs;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of Decimal `x` to the power `n`, where `n` is an\r\n * integer of type number.\r\n *\r\n * Implements 'exponentiation by squaring'. Called by `pow` and `parseOther`.\r\n *\r\n */\r\nfunction intPow(Ctor, x, n, pr) {\r\n var isTruncated,\r\n r = new Ctor(1),\r\n\r\n // Max n of 9007199254740991 takes 53 loop iterations.\r\n // Maximum digits array length; leaves [28, 34] guard digits.\r\n k = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n external = false;\r\n\r\n for (;;) {\r\n if (n % 2) {\r\n r = r.times(x);\r\n if (truncate(r.d, k)) isTruncated = true;\r\n }\r\n\r\n n = mathfloor(n / 2);\r\n if (n === 0) {\r\n\r\n // To ensure correct rounding when r.d is truncated, increment the last word if it is zero.\r\n n = r.d.length - 1;\r\n if (isTruncated && r.d[n] === 0) ++r.d[n];\r\n break;\r\n }\r\n\r\n x = x.times(x);\r\n truncate(x.d, k);\r\n }\r\n\r\n external = true;\r\n\r\n return r;\r\n}\r\n\r\n\r\nfunction isOdd(n) {\r\n return n.d[n.d.length - 1] & 1;\r\n}\r\n\r\n\r\n/*\r\n * Handle `max` and `min`. `ltgt` is 'lt' or 'gt'.\r\n */\r\nfunction maxOrMin(Ctor, args, ltgt) {\r\n var y,\r\n x = new Ctor(args[0]),\r\n i = 0;\r\n\r\n for (; ++i < args.length;) {\r\n y = new Ctor(args[i]);\r\n if (!y.s) {\r\n x = y;\r\n break;\r\n } else if (x[ltgt](y)) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * Max integer argument: exp('20723265836946413') = 6.3e+9000000000000000\r\n * Min integer argument: exp('-20723265836946411') = 1.2e-9000000000000000\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(Infinity) = Infinity\r\n * exp(-Infinity) = 0\r\n * exp(NaN) = NaN\r\n * exp(\u00B10) = 1\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n * The result will always be correctly rounded.\r\n *\r\n */\r\nfunction naturalExponential(x, sd) {\r\n var denominator, guard, j, pow, sum, t, wpr,\r\n rep = 0,\r\n i = 0,\r\n k = 0,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // 0/NaN/Infinity?\r\n if (!x.d || !x.d[0] || x.e > 17) {\r\n\r\n return new Ctor(x.d\r\n ? !x.d[0] ? 1 : x.s < 0 ? 0 : 1 / 0\r\n : x.s ? x.s < 0 ? 0 : x : 0 / 0);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n t = new Ctor(0.03125);\r\n\r\n // while abs(x) >= 0.1\r\n while (x.e > -2) {\r\n\r\n // x = x / 2^5\r\n x = x.times(t);\r\n k += 5;\r\n }\r\n\r\n // Use 2 * log10(2^k) + 5 (empirically derived) to estimate the increase in precision\r\n // necessary to ensure the first 4 rounding digits are correct.\r\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n wpr += guard;\r\n denominator = pow = sum = new Ctor(1);\r\n Ctor.precision = wpr;\r\n\r\n for (;;) {\r\n pow = finalise(pow.times(x), wpr, 1);\r\n denominator = denominator.times(++i);\r\n t = sum.plus(divide(pow, denominator, wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n j = k;\r\n while (j--) sum = finalise(sum.times(sum), wpr, 1);\r\n\r\n // Check to see if the first 4 rounding digits are [49]999.\r\n // If so, repeat the summation with a higher precision, otherwise\r\n // e.g. with precision: 18, rounding: 1\r\n // exp(18.404272462595034083567793919843761) = 98372560.1229999999 (should be 98372560.123)\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n\r\n if (rep < 3 && checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += 10;\r\n denominator = pow = t = new Ctor(1);\r\n i = 0;\r\n rep++;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n }\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * ln(-n) = NaN\r\n * ln(0) = -Infinity\r\n * ln(-0) = -Infinity\r\n * ln(1) = 0\r\n * ln(Infinity) = Infinity\r\n * ln(-Infinity) = NaN\r\n * ln(NaN) = NaN\r\n *\r\n * ln(n) (n != 1) is non-terminating.\r\n *\r\n */\r\nfunction naturalLogarithm(y, sd) {\r\n var c, c0, denominator, e, numerator, rep, sum, t, wpr, x1, x2,\r\n n = 1,\r\n guard = 10,\r\n x = y,\r\n xd = x.d,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // Is x negative or Infinity, NaN, 0 or 1?\r\n if (x.s < 0 || !xd || !xd[0] || !x.e && xd[0] == 1 && xd.length == 1) {\r\n return new Ctor(xd && !xd[0] ? -1 / 0 : x.s != 1 ? NaN : xd ? 0 : x);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n Ctor.precision = wpr += guard;\r\n c = digitsToString(xd);\r\n c0 = c.charAt(0);\r\n\r\n if (Math.abs(e = x.e) < 1.5e15) {\r\n\r\n // Argument reduction.\r\n // The series converges faster the closer the argument is to 1, so using\r\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\r\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n // later be divided by this number, then separate out the power of 10 using\r\n // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n // max n is 6 (gives 0.7 - 1.3)\r\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n x = x.times(y);\r\n c = digitsToString(x.d);\r\n c0 = c.charAt(0);\r\n n++;\r\n }\r\n\r\n e = x.e;\r\n\r\n if (c0 > 1) {\r\n x = new Ctor('0.' + c);\r\n e++;\r\n } else {\r\n x = new Ctor(c0 + '.' + c.slice(1));\r\n }\r\n } else {\r\n\r\n // The argument reduction method above may result in overflow if the argument y is a massive\r\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n x = naturalLogarithm(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n Ctor.precision = pr;\r\n\r\n return sd == null ? finalise(x, pr, rm, external = true) : x;\r\n }\r\n\r\n // x1 is x reduced to a value near 1.\r\n x1 = x;\r\n\r\n // Taylor series.\r\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n // where x = (y - 1)/(y + 1) (|x| < 1)\r\n sum = numerator = x = divide(x.minus(1), x.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = 3;\r\n\r\n for (;;) {\r\n numerator = finalise(numerator.times(x2), wpr, 1);\r\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n sum = sum.times(2);\r\n\r\n // Reverse the argument reduction. Check that e is not 0 because, besides preventing an\r\n // unnecessary calculation, -0 + 0 = +0 and to ensure correct rounding -0 needs to stay -0.\r\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n sum = divide(sum, new Ctor(n), wpr, 1);\r\n\r\n // Is rm > 3 and the first 4 rounding digits 4999, or rm < 4 (or the summation has\r\n // been repeated previously) and the first 4 rounding digits 9999?\r\n // If so, restart the summation with a higher precision, otherwise\r\n // e.g. with precision: 12, rounding: 1\r\n // ln(135520028.6126091714265381533) = 18.7246299999 when it should be 18.72463.\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n if (checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += guard;\r\n t = numerator = x = divide(x1.minus(1), x1.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = rep = 1;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n denominator += 2;\r\n }\r\n}\r\n\r\n\r\n// \u00B1Infinity, NaN.\r\nfunction nonFiniteToString(x) {\r\n // Unsigned.\r\n return String(x.s * x.s / 0);\r\n}\r\n\r\n\r\n/*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\r\nfunction parseDecimal(x, str) {\r\n var e, i, len;\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(len - 1) === 48; --len);\r\n str = str.slice(i, len);\r\n\r\n if (str) {\r\n len -= i;\r\n x.e = e = e - i - 1;\r\n x.d = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first word of the digits array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.d.push(+str.slice(0, i));\r\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--;) str += '0';\r\n x.d.push(+str);\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > x.constructor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < x.constructor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // x.constructor.underflow = true;\r\n } // else x.constructor.underflow = false;\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Parse the value of a new Decimal `x` from a string `str`, which is not a decimal value.\r\n */\r\nfunction parseOther(x, str) {\r\n var base, Ctor, divisor, i, isFloat, len, p, xd, xe;\r\n\r\n if (str.indexOf('_') > -1) {\r\n str = str.replace(/(\\d)_(?=\\d)/g, '$1');\r\n if (isDecimal.test(str)) return parseDecimal(x, str);\r\n } else if (str === 'Infinity' || str === 'NaN') {\r\n if (!+str) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return x;\r\n }\r\n\r\n if (isHex.test(str)) {\r\n base = 16;\r\n str = str.toLowerCase();\r\n } else if (isBinary.test(str)) {\r\n base = 2;\r\n } else if (isOctal.test(str)) {\r\n base = 8;\r\n } else {\r\n throw Error(invalidArgument + str);\r\n }\r\n\r\n // Is there a binary exponent part?\r\n i = str.search(/p/i);\r\n\r\n if (i > 0) {\r\n p = +str.slice(i + 1);\r\n str = str.substring(2, i);\r\n } else {\r\n str = str.slice(2);\r\n }\r\n\r\n // Convert `str` as an integer then divide the result by `base` raised to a power such that the\r\n // fraction part will be restored.\r\n i = str.indexOf('.');\r\n isFloat = i >= 0;\r\n Ctor = x.constructor;\r\n\r\n if (isFloat) {\r\n str = str.replace('.', '');\r\n len = str.length;\r\n i = len - i;\r\n\r\n // log[10](16) = 1.2041... , log[10](88) = 1.9444....\r\n divisor = intPow(Ctor, new Ctor(base), i, i * 2);\r\n }\r\n\r\n xd = convertBase(str, base, BASE);\r\n xe = xd.length - 1;\r\n\r\n // Remove trailing zeros.\r\n for (i = xe; xd[i] === 0; --i) xd.pop();\r\n if (i < 0) return new Ctor(x.s * 0);\r\n x.e = getBase10Exponent(xd, xe);\r\n x.d = xd;\r\n external = false;\r\n\r\n // At what precision to perform the division to ensure exact conversion?\r\n // maxDecimalIntegerPartDigitCount = ceil(log[10](b) * otherBaseIntegerPartDigitCount)\r\n // log[10](2) = 0.30103, log[10](8) = 0.90309, log[10](16) = 1.20412\r\n // E.g. ceil(1.2 * 3) = 4, so up to 4 decimal digits are needed to represent 3 hex int digits.\r\n // maxDecimalFractionPartDigitCount = {Hex:4|Oct:3|Bin:1} * otherBaseFractionPartDigitCount\r\n // Therefore using 4 * the number of digits of str will always be enough.\r\n if (isFloat) x = divide(x, divisor, len * 4);\r\n\r\n // Multiply by the binary exponent part if present.\r\n if (p) x = x.times(Math.abs(p) < 54 ? mathpow(2, p) : Decimal.pow(2, p));\r\n external = true;\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\nfunction sine(Ctor, x) {\r\n var k,\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n return x.isZero() ? x : taylorSeries(Ctor, 2, x, x);\r\n }\r\n\r\n // Argument reduction: sin(5x) = 16*sin^5(x) - 20*sin^3(x) + 5*sin(x)\r\n // i.e. sin(x) = 16*sin^5(x/5) - 20*sin^3(x/5) + 5*sin(x/5)\r\n // and sin(x) = sin(x/5)(5 + sin^2(x/5)(16sin^2(x/5) - 20))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(1 / tinyPow(5, k));\r\n x = taylorSeries(Ctor, 2, x, x);\r\n\r\n // Reverse argument reduction\r\n var sin2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sin2_x = x.times(x);\r\n x = x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20))));\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n// Calculate Taylor series for `cos`, `cosh`, `sin` and `sinh`.\r\nfunction taylorSeries(Ctor, n, x, y, isHyperbolic) {\r\n var j, t, u, x2,\r\n i = 1,\r\n pr = Ctor.precision,\r\n k = Math.ceil(pr / LOG_BASE);\r\n\r\n external = false;\r\n x2 = x.times(x);\r\n u = new Ctor(y);\r\n\r\n for (;;) {\r\n t = divide(u.times(x2), new Ctor(n++ * n++), pr, 1);\r\n u = isHyperbolic ? y.plus(t) : y.minus(t);\r\n y = divide(t.times(x2), new Ctor(n++ * n++), pr, 1);\r\n t = u.plus(y);\r\n\r\n if (t.d[k] !== void 0) {\r\n for (j = k; t.d[j] === u.d[j] && j--;);\r\n if (j == -1) break;\r\n }\r\n\r\n j = u;\r\n u = y;\r\n y = t;\r\n t = j;\r\n i++;\r\n }\r\n\r\n external = true;\r\n t.d.length = k + 1;\r\n\r\n return t;\r\n}\r\n\r\n\r\n// Exponent e must be positive and non-zero.\r\nfunction tinyPow(b, e) {\r\n var n = b;\r\n while (--e) n *= b;\r\n return n;\r\n}\r\n\r\n\r\n// Return the absolute value of `x` reduced to less than or equal to half pi.\r\nfunction toLessThanHalfPi(Ctor, x) {\r\n var t,\r\n isNeg = x.s < 0,\r\n pi = getPi(Ctor, Ctor.precision, 1),\r\n halfPi = pi.times(0.5);\r\n\r\n x = x.abs();\r\n\r\n if (x.lte(halfPi)) {\r\n quadrant = isNeg ? 4 : 1;\r\n return x;\r\n }\r\n\r\n t = x.divToInt(pi);\r\n\r\n if (t.isZero()) {\r\n quadrant = isNeg ? 3 : 2;\r\n } else {\r\n x = x.minus(t.times(pi));\r\n\r\n // 0 <= x < pi\r\n if (x.lte(halfPi)) {\r\n quadrant = isOdd(t) ? (isNeg ? 2 : 3) : (isNeg ? 4 : 1);\r\n return x;\r\n }\r\n\r\n quadrant = isOdd(t) ? (isNeg ? 1 : 4) : (isNeg ? 3 : 2);\r\n }\r\n\r\n return x.minus(pi).abs();\r\n}\r\n\r\n\r\n/*\r\n * Return the value of Decimal `x` as a string in base `baseOut`.\r\n *\r\n * If the optional `sd` argument is present include a binary exponent suffix.\r\n */\r\nfunction toStringBinary(x, baseOut, sd, rm) {\r\n var base, e, i, k, len, roundUp, str, xd, y,\r\n Ctor = x.constructor,\r\n isExp = sd !== void 0;\r\n\r\n if (isExp) {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n } else {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n }\r\n\r\n if (!x.isFinite()) {\r\n str = nonFiniteToString(x);\r\n } else {\r\n str = finiteToString(x);\r\n i = str.indexOf('.');\r\n\r\n // Use exponential notation according to `toExpPos` and `toExpNeg`? No, but if required:\r\n // maxBinaryExponent = floor((decimalExponent + 1) * log[2](10))\r\n // minBinaryExponent = floor(decimalExponent * log[2](10))\r\n // log[2](10) = 3.321928094887362347870319429489390175864\r\n\r\n if (isExp) {\r\n base = 2;\r\n if (baseOut == 16) {\r\n sd = sd * 4 - 3;\r\n } else if (baseOut == 8) {\r\n sd = sd * 3 - 2;\r\n }\r\n } else {\r\n base = baseOut;\r\n }\r\n\r\n // Convert the number as an integer then divide the result by its base raised to a power such\r\n // that the fraction part will be restored.\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n str = str.replace('.', '');\r\n y = new Ctor(1);\r\n y.e = str.length - i;\r\n y.d = convertBase(finiteToString(y), 10, base);\r\n y.e = y.d.length;\r\n }\r\n\r\n xd = convertBase(str, 10, base);\r\n e = len = xd.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] == 0;) xd.pop();\r\n\r\n if (!xd[0]) {\r\n str = isExp ? '0p+0' : '0';\r\n } else {\r\n if (i < 0) {\r\n e--;\r\n } else {\r\n x = new Ctor(x);\r\n x.d = xd;\r\n x.e = e;\r\n x = divide(x, y, sd, rm, 0, base);\r\n xd = x.d;\r\n e = x.e;\r\n roundUp = inexact;\r\n }\r\n\r\n // The rounding digit, i.e. the digit after the digit that may be rounded up.\r\n i = xd[sd];\r\n k = base / 2;\r\n roundUp = roundUp || xd[sd + 1] !== void 0;\r\n\r\n roundUp = rm < 4\r\n ? (i !== void 0 || roundUp) && (rm === 0 || rm === (x.s < 0 ? 3 : 2))\r\n : i > k || i === k && (rm === 4 || roundUp || rm === 6 && xd[sd - 1] & 1 ||\r\n rm === (x.s < 0 ? 8 : 7));\r\n\r\n xd.length = sd;\r\n\r\n if (roundUp) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (; ++xd[--sd] > base - 1;) {\r\n xd[sd] = 0;\r\n if (!sd) {\r\n ++e;\r\n xd.unshift(1);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n\r\n // Add binary exponent suffix?\r\n if (isExp) {\r\n if (len > 1) {\r\n if (baseOut == 16 || baseOut == 8) {\r\n i = baseOut == 16 ? 4 : 3;\r\n for (--len; len % i; len++) str += '0';\r\n xd = convertBase(str, base, baseOut);\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // xd[0] will always be be 1\r\n for (i = 1, str = '1.'; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n } else {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n }\r\n\r\n str = str + (e < 0 ? 'p' : 'p+') + e;\r\n } else if (e < 0) {\r\n for (; ++e;) str = '0' + str;\r\n str = '0.' + str;\r\n } else {\r\n if (++e > len) for (e -= len; e-- ;) str += '0';\r\n else if (e < len) str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n str = (baseOut == 16 ? '0x' : baseOut == 2 ? '0b' : baseOut == 8 ? '0o' : '') + str;\r\n }\r\n\r\n return x.s < 0 ? '-' + str : str;\r\n}\r\n\r\n\r\n// Does not strip trailing zeros.\r\nfunction truncate(arr, len) {\r\n if (arr.length > len) {\r\n arr.length = len;\r\n return true;\r\n }\r\n}\r\n\r\n\r\n// Decimal methods\r\n\r\n\r\n/*\r\n * abs\r\n * acos\r\n * acosh\r\n * add\r\n * asin\r\n * asinh\r\n * atan\r\n * atanh\r\n * atan2\r\n * cbrt\r\n * ceil\r\n * clamp\r\n * clone\r\n * config\r\n * cos\r\n * cosh\r\n * div\r\n * exp\r\n * floor\r\n * hypot\r\n * ln\r\n * log\r\n * log2\r\n * log10\r\n * max\r\n * min\r\n * mod\r\n * mul\r\n * pow\r\n * random\r\n * round\r\n * set\r\n * sign\r\n * sin\r\n * sinh\r\n * sqrt\r\n * sub\r\n * sum\r\n * tan\r\n * tanh\r\n * trunc\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the absolute value of `x`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction abs(x) {\r\n return new this(x).abs();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arccosine in radians of `x`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction acos(x) {\r\n return new this(x).acos();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction acosh(x) {\r\n return new this(x).acosh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sum of `x` and `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction add(x, y) {\r\n return new this(x).plus(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arcsine in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction asin(x) {\r\n return new this(x).asin();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction asinh(x) {\r\n return new this(x).asinh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction atan(x) {\r\n return new this(x).atan();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction atanh(x) {\r\n return new this(x).atanh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent in radians of `y/x` in the range -pi to pi\r\n * (inclusive), rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi, pi]\r\n *\r\n * y {number|string|Decimal} The y-coordinate.\r\n * x {number|string|Decimal} The x-coordinate.\r\n *\r\n * atan2(\u00B10, -0) = \u00B1pi\r\n * atan2(\u00B10, +0) = \u00B10\r\n * atan2(\u00B10, -x) = \u00B1pi for x > 0\r\n * atan2(\u00B10, x) = \u00B10 for x > 0\r\n * atan2(-y, \u00B10) = -pi/2 for y > 0\r\n * atan2(y, \u00B10) = pi/2 for y > 0\r\n * atan2(\u00B1y, -Infinity) = \u00B1pi for finite y > 0\r\n * atan2(\u00B1y, +Infinity) = \u00B10 for finite y > 0\r\n * atan2(\u00B1Infinity, x) = \u00B1pi/2 for finite x\r\n * atan2(\u00B1Infinity, -Infinity) = \u00B13*pi/4\r\n * atan2(\u00B1Infinity, +Infinity) = \u00B1pi/4\r\n * atan2(NaN, x) = NaN\r\n * atan2(y, NaN) = NaN\r\n *\r\n */\r\nfunction atan2(y, x) {\r\n y = new this(y);\r\n x = new this(x);\r\n var r,\r\n pr = this.precision,\r\n rm = this.rounding,\r\n wpr = pr + 4;\r\n\r\n // Either NaN\r\n if (!y.s || !x.s) {\r\n r = new this(NaN);\r\n\r\n // Both \u00B1Infinity\r\n } else if (!y.d && !x.d) {\r\n r = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75);\r\n r.s = y.s;\r\n\r\n // x is \u00B1Infinity or y is \u00B10\r\n } else if (!x.d || y.isZero()) {\r\n r = x.s < 0 ? getPi(this, pr, rm) : new this(0);\r\n r.s = y.s;\r\n\r\n // y is \u00B1Infinity or x is \u00B10\r\n } else if (!y.d || x.isZero()) {\r\n r = getPi(this, wpr, 1).times(0.5);\r\n r.s = y.s;\r\n\r\n // Both non-zero and finite\r\n } else if (x.s < 0) {\r\n this.precision = wpr;\r\n this.rounding = 1;\r\n r = this.atan(divide(y, x, wpr, 1));\r\n x = getPi(this, wpr, 1);\r\n this.precision = pr;\r\n this.rounding = rm;\r\n r = y.s < 0 ? r.minus(x) : r.plus(x);\r\n } else {\r\n r = this.atan(divide(y, x, wpr, 1));\r\n }\r\n\r\n return r;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cube root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction cbrt(x) {\r\n return new this(x).cbrt();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` rounded to an integer using `ROUND_CEIL`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction ceil(x) {\r\n return finalise(x = new this(x), x.e + 1, 2);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` clamped to the range delineated by `min` and `max`.\r\n *\r\n * x {number|string|Decimal}\r\n * min {number|string|Decimal}\r\n * max {number|string|Decimal}\r\n *\r\n */\r\nfunction clamp(x, min, max) {\r\n return new this(x).clamp(min, max);\r\n}\r\n\r\n\r\n/*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n * maxE {number}\r\n * minE {number}\r\n * modulo {number}\r\n * crypto {boolean|number}\r\n * defaults {true}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\r\nfunction config(obj) {\r\n if (!obj || typeof obj !== 'object') throw Error(decimalError + 'Object expected');\r\n var i, p, v,\r\n useDefaults = obj.defaults === true,\r\n ps = [\r\n 'precision', 1, MAX_DIGITS,\r\n 'rounding', 0, 8,\r\n 'toExpNeg', -EXP_LIMIT, 0,\r\n 'toExpPos', 0, EXP_LIMIT,\r\n 'maxE', 0, EXP_LIMIT,\r\n 'minE', -EXP_LIMIT, 0,\r\n 'modulo', 0, 9\r\n ];\r\n\r\n for (i = 0; i < ps.length; i += 3) {\r\n if (p = ps[i], useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n if (p = 'crypto', useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (v === true || v === false || v === 0 || v === 1) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n this[p] = true;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n } else {\r\n this[p] = false;\r\n }\r\n } else {\r\n throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n return this;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cosine of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction cos(x) {\r\n return new this(x).cos();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic cosine of `x`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction cosh(x) {\r\n return new this(x).cosh();\r\n}\r\n\r\n\r\n/*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\r\nfunction clone(obj) {\r\n var i, p, ps;\r\n\r\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * v {number|string|Decimal} A numeric value.\r\n *\r\n */\r\n function Decimal(v) {\r\n var e, i, t,\r\n x = this;\r\n\r\n // Decimal called without new.\r\n if (!(x instanceof Decimal)) return new Decimal(v);\r\n\r\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n // which points to Object.\r\n x.constructor = Decimal;\r\n\r\n // Duplicate.\r\n if (isDecimalInstance(v)) {\r\n x.s = v.s;\r\n\r\n if (external) {\r\n if (!v.d || v.e > Decimal.maxE) {\r\n\r\n // Infinity.\r\n x.e = NaN;\r\n x.d = null;\r\n } else if (v.e < Decimal.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n } else {\r\n x.e = v.e;\r\n x.d = v.d.slice();\r\n }\r\n } else {\r\n x.e = v.e;\r\n x.d = v.d ? v.d.slice() : v.d;\r\n }\r\n\r\n return;\r\n }\r\n\r\n t = typeof v;\r\n\r\n if (t === 'number') {\r\n if (v === 0) {\r\n x.s = 1 / v < 0 ? -1 : 1;\r\n x.e = 0;\r\n x.d = [0];\r\n return;\r\n }\r\n\r\n if (v < 0) {\r\n v = -v;\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n // Fast path for small integers.\r\n if (v === ~~v && v < 1e7) {\r\n for (e = 0, i = v; i >= 10; i /= 10) e++;\r\n\r\n if (external) {\r\n if (e > Decimal.maxE) {\r\n x.e = NaN;\r\n x.d = null;\r\n } else if (e < Decimal.minE) {\r\n x.e = 0;\r\n x.d = [0];\r\n } else {\r\n x.e = e;\r\n x.d = [v];\r\n }\r\n } else {\r\n x.e = e;\r\n x.d = [v];\r\n }\r\n\r\n return;\r\n\r\n // Infinity, NaN.\r\n } else if (v * 0 !== 0) {\r\n if (!v) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return;\r\n }\r\n\r\n return parseDecimal(x, v.toString());\r\n\r\n } else if (t !== 'string') {\r\n throw Error(invalidArgument + v);\r\n }\r\n\r\n // Minus sign?\r\n if ((i = v.charCodeAt(0)) === 45) {\r\n v = v.slice(1);\r\n x.s = -1;\r\n } else {\r\n // Plus sign?\r\n if (i === 43) v = v.slice(1);\r\n x.s = 1;\r\n }\r\n\r\n return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v);\r\n }\r\n\r\n Decimal.prototype = P;\r\n\r\n Decimal.ROUND_UP = 0;\r\n Decimal.ROUND_DOWN = 1;\r\n Decimal.ROUND_CEIL = 2;\r\n Decimal.ROUND_FLOOR = 3;\r\n Decimal.ROUND_HALF_UP = 4;\r\n Decimal.ROUND_HALF_DOWN = 5;\r\n Decimal.ROUND_HALF_EVEN = 6;\r\n Decimal.ROUND_HALF_CEIL = 7;\r\n Decimal.ROUND_HALF_FLOOR = 8;\r\n Decimal.EUCLID = 9;\r\n\r\n Decimal.config = Decimal.set = config;\r\n Decimal.clone = clone;\r\n Decimal.isDecimal = isDecimalInstance;\r\n\r\n Decimal.abs = abs;\r\n Decimal.acos = acos;\r\n Decimal.acosh = acosh; // ES6\r\n Decimal.add = add;\r\n Decimal.asin = asin;\r\n Decimal.asinh = asinh; // ES6\r\n Decimal.atan = atan;\r\n Decimal.atanh = atanh; // ES6\r\n Decimal.atan2 = atan2;\r\n Decimal.cbrt = cbrt; // ES6\r\n Decimal.ceil = ceil;\r\n Decimal.clamp = clamp;\r\n Decimal.cos = cos;\r\n Decimal.cosh = cosh; // ES6\r\n Decimal.div = div;\r\n Decimal.exp = exp;\r\n Decimal.floor = floor;\r\n Decimal.hypot = hypot; // ES6\r\n Decimal.ln = ln;\r\n Decimal.log = log;\r\n Decimal.log10 = log10; // ES6\r\n Decimal.log2 = log2; // ES6\r\n Decimal.max = max;\r\n Decimal.min = min;\r\n Decimal.mod = mod;\r\n Decimal.mul = mul;\r\n Decimal.pow = pow;\r\n Decimal.random = random;\r\n Decimal.round = round;\r\n Decimal.sign = sign; // ES6\r\n Decimal.sin = sin;\r\n Decimal.sinh = sinh; // ES6\r\n Decimal.sqrt = sqrt;\r\n Decimal.sub = sub;\r\n Decimal.sum = sum;\r\n Decimal.tan = tan;\r\n Decimal.tanh = tanh; // ES6\r\n Decimal.trunc = trunc; // ES6\r\n\r\n if (obj === void 0) obj = {};\r\n if (obj) {\r\n if (obj.defaults !== true) {\r\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'maxE', 'minE', 'modulo', 'crypto'];\r\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n }\r\n }\r\n\r\n Decimal.config(obj);\r\n\r\n return Decimal;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` divided by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction div(x, y) {\r\n return new this(x).div(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} The power to which to raise the base of the natural log.\r\n *\r\n */\r\nfunction exp(x) {\r\n return new this(x).exp();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` round to an integer using `ROUND_FLOOR`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction floor(x) {\r\n return finalise(x = new this(x), x.e + 1, 3);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of the sum of the squares of the arguments,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * hypot(a, b, ...) = sqrt(a^2 + b^2 + ...)\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\nfunction hypot() {\r\n var i, n,\r\n t = new this(0);\r\n\r\n external = false;\r\n\r\n for (i = 0; i < arguments.length;) {\r\n n = new this(arguments[i++]);\r\n if (!n.d) {\r\n if (n.s) {\r\n external = true;\r\n return new this(1 / 0);\r\n }\r\n t = n;\r\n } else if (t.d) {\r\n t = t.plus(n.times(n));\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return t.sqrt();\r\n}\r\n\r\n\r\n/*\r\n * Return true if object is a Decimal instance (where Decimal is any Decimal constructor),\r\n * otherwise return false.\r\n *\r\n */\r\nfunction isDecimalInstance(obj) {\r\n return obj instanceof Decimal || obj && obj.toStringTag === tag || false;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction ln(x) {\r\n return new this(x).ln();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the log of `x` to the base `y`, or to base 10 if no base\r\n * is specified, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * log[y](x)\r\n *\r\n * x {number|string|Decimal} The argument of the logarithm.\r\n * y {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\nfunction log(x, y) {\r\n return new this(x).log(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the base 2 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction log2(x) {\r\n return new this(x).log(2);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the base 10 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction log10(x) {\r\n return new this(x).log(10);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\nfunction max() {\r\n return maxOrMin(this, arguments, 'lt');\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\nfunction min() {\r\n return maxOrMin(this, arguments, 'gt');\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` modulo `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction mod(x, y) {\r\n return new this(x).mod(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` multiplied by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction mul(x, y) {\r\n return new this(x).mul(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` raised to the power `y`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} The base.\r\n * y {number|string|Decimal} The exponent.\r\n *\r\n */\r\nfunction pow(x, y) {\r\n return new this(x).pow(y);\r\n}\r\n\r\n\r\n/*\r\n * Returns a new Decimal with a random value equal to or greater than 0 and less than 1, and with\r\n * `sd`, or `Decimal.precision` if `sd` is omitted, significant digits (or less if trailing zeros\r\n * are produced).\r\n *\r\n * [sd] {number} Significant digits. Integer, 0 to MAX_DIGITS inclusive.\r\n *\r\n */\r\nfunction random(sd) {\r\n var d, e, k, n,\r\n i = 0,\r\n r = new this(1),\r\n rd = [];\r\n\r\n if (sd === void 0) sd = this.precision;\r\n else checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n k = Math.ceil(sd / LOG_BASE);\r\n\r\n if (!this.crypto) {\r\n for (; i < k;) rd[i++] = Math.random() * 1e7 | 0;\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n } else if (crypto.getRandomValues) {\r\n d = crypto.getRandomValues(new Uint32Array(k));\r\n\r\n for (; i < k;) {\r\n n = d[i];\r\n\r\n // 0 <= n < 4294967296\r\n // Probability n >= 4.29e9, is 4967296 / 4294967296 = 0.00116 (1 in 865).\r\n if (n >= 4.29e9) {\r\n d[i] = crypto.getRandomValues(new Uint32Array(1))[0];\r\n } else {\r\n\r\n // 0 <= n <= 4289999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd[i++] = n % 1e7;\r\n }\r\n }\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n d = crypto.randomBytes(k *= 4);\r\n\r\n for (; i < k;) {\r\n\r\n // 0 <= n < 2147483648\r\n n = d[i] + (d[i + 1] << 8) + (d[i + 2] << 16) + ((d[i + 3] & 0x7f) << 24);\r\n\r\n // Probability n >= 2.14e9, is 7483648 / 2147483648 = 0.0035 (1 in 286).\r\n if (n >= 2.14e9) {\r\n crypto.randomBytes(4).copy(d, i);\r\n } else {\r\n\r\n // 0 <= n <= 2139999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd.push(n % 1e7);\r\n i += 4;\r\n }\r\n }\r\n\r\n i = k / 4;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n\r\n k = rd[--i];\r\n sd %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to sd.\r\n if (k && sd) {\r\n n = mathpow(10, LOG_BASE - sd);\r\n rd[i] = (k / n | 0) * n;\r\n }\r\n\r\n // Remove trailing words which are zero.\r\n for (; rd[i] === 0; i--) rd.pop();\r\n\r\n // Zero?\r\n if (i < 0) {\r\n e = 0;\r\n rd = [0];\r\n } else {\r\n e = -1;\r\n\r\n // Remove leading words which are zero and adjust exponent accordingly.\r\n for (; rd[0] === 0; e -= LOG_BASE) rd.shift();\r\n\r\n // Count the digits of the first word of rd to determine leading zeros.\r\n for (k = 1, n = rd[0]; n >= 10; n /= 10) k++;\r\n\r\n // Adjust the exponent for leading zeros of the first word of rd.\r\n if (k < LOG_BASE) e -= LOG_BASE - k;\r\n }\r\n\r\n r.e = e;\r\n r.d = rd;\r\n\r\n return r;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` rounded to an integer using rounding mode `rounding`.\r\n *\r\n * To emulate `Math.round`, set rounding to 7 (ROUND_HALF_CEIL).\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction round(x) {\r\n return finalise(x = new this(x), x.e + 1, this.rounding);\r\n}\r\n\r\n\r\n/*\r\n * Return\r\n * 1 if x > 0,\r\n * -1 if x < 0,\r\n * 0 if x is 0,\r\n * -0 if x is -0,\r\n * NaN otherwise\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction sign(x) {\r\n x = new this(x);\r\n return x.d ? (x.d[0] ? x.s : 0 * x.s) : x.s || NaN;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sine of `x`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction sin(x) {\r\n return new this(x).sin();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic sine of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction sinh(x) {\r\n return new this(x).sinh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction sqrt(x) {\r\n return new this(x).sqrt();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` minus `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction sub(x, y) {\r\n return new this(x).sub(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sum of the arguments, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * Only the result is rounded, not the intermediate calculations.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\nfunction sum() {\r\n var i = 0,\r\n args = arguments,\r\n x = new this(args[i]);\r\n\r\n external = false;\r\n for (; x.s && ++i < args.length;) x = x.plus(args[i]);\r\n external = true;\r\n\r\n return finalise(x, this.precision, this.rounding);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the tangent of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction tan(x) {\r\n return new this(x).tan();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic tangent of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction tanh(x) {\r\n return new this(x).tanh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` truncated to an integer.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction trunc(x) {\r\n return finalise(x = new this(x), x.e + 1, 1);\r\n}\r\n\r\n\r\nP[Symbol.for('nodejs.util.inspect.custom')] = P.toString;\r\nP[Symbol.toStringTag] = 'Decimal';\r\n\r\n// Create and configure initial Decimal constructor.\r\nexport var Decimal = P.constructor = clone(DEFAULTS);\r\n\r\n// Create the internal constants from their string values.\r\nLN10 = new Decimal(LN10);\r\nPI = new Decimal(PI);\r\n\r\nexport default Decimal;\r\n", "import Decimal from 'decimal.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'BigNumber';\nvar dependencies = ['?on', 'config'];\nexport var createBigNumberClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n on,\n config\n } = _ref;\n var BigNumber = Decimal.clone({\n precision: config.precision,\n modulo: Decimal.EUCLID\n });\n BigNumber.prototype = Object.create(BigNumber.prototype);\n\n /**\n * Attach type information\n */\n BigNumber.prototype.type = 'BigNumber';\n BigNumber.prototype.isBigNumber = true;\n\n /**\n * Get a JSON representation of a BigNumber containing\n * type information\n * @returns {Object} Returns a JSON object structured as:\n * `{\"mathjs\": \"BigNumber\", \"value\": \"0.2\"}`\n */\n BigNumber.prototype.toJSON = function () {\n return {\n mathjs: 'BigNumber',\n value: this.toString()\n };\n };\n\n /**\n * Instantiate a BigNumber from a JSON object\n * @param {Object} json a JSON object structured as:\n * `{\"mathjs\": \"BigNumber\", \"value\": \"0.2\"}`\n * @return {BigNumber}\n */\n BigNumber.fromJSON = function (json) {\n return new BigNumber(json.value);\n };\n if (on) {\n // listen for changed in the configuration, automatically apply changed precision\n on('config', function (curr, prev) {\n if (curr.precision !== prev.precision) {\n BigNumber.config({\n precision: curr.precision\n });\n }\n });\n }\n return BigNumber;\n}, {\n isClass: true\n});", "'use strict';\n\n/**\n *\n * This class allows the manipulation of complex numbers.\n * You can pass a complex number in different formats. Either as object, double, string or two integer parameters.\n *\n * Object form\n * { re: , im: }\n * { arg: , abs: }\n * { phi: , r: }\n *\n * Array / Vector form\n * [ real, imaginary ]\n *\n * Double form\n * 99.3 - Single double value\n *\n * String form\n * '23.1337' - Simple real number\n * '15+3i' - a simple complex number\n * '3-i' - a simple complex number\n *\n * Example:\n *\n * const c = new Complex('99.3+8i');\n * c.mul({r: 3, i: 9}).div(4.9).sub(3, 2);\n *\n */\n\n\nconst cosh = Math.cosh || function (x) {\n return Math.abs(x) < 1e-9 ? 1 - x : (Math.exp(x) + Math.exp(-x)) * 0.5;\n};\n\nconst sinh = Math.sinh || function (x) {\n return Math.abs(x) < 1e-9 ? x : (Math.exp(x) - Math.exp(-x)) * 0.5;\n};\n\n/**\n * Calculates cos(x) - 1 using Taylor series if x is small (-\u00BC\u03C0 \u2264 x \u2264 \u00BC\u03C0).\n *\n * @param {number} x\n * @returns {number} cos(x) - 1\n */\nconst cosm1 = function (x) {\n\n const b = Math.PI / 4;\n if (-b > x || x > b) {\n return Math.cos(x) - 1.0;\n }\n\n /* Calculate horner form of polynomial of taylor series in Q\n let fac = 1, alt = 1, pol = {};\n for (let i = 0; i <= 16; i++) {\n fac*= i || 1;\n if (i % 2 == 0) {\n pol[i] = new Fraction(1, alt * fac);\n alt = -alt;\n }\n }\n console.log(new Polynomial(pol).toHorner()); // (((((((1/20922789888000x^2-1/87178291200)x^2+1/479001600)x^2-1/3628800)x^2+1/40320)x^2-1/720)x^2+1/24)x^2-1/2)x^2+1\n */\n\n const xx = x * x;\n return xx * (\n xx * (\n xx * (\n xx * (\n xx * (\n xx * (\n xx * (\n xx / 20922789888000\n - 1 / 87178291200)\n + 1 / 479001600)\n - 1 / 3628800)\n + 1 / 40320)\n - 1 / 720)\n + 1 / 24)\n - 1 / 2);\n};\n\nconst hypot = function (x, y) {\n\n x = Math.abs(x);\n y = Math.abs(y);\n\n // Ensure `x` is the larger value\n if (x < y) [x, y] = [y, x];\n\n // If both are below the threshold, use straightforward Pythagoras\n if (x < 1e8) return Math.sqrt(x * x + y * y);\n\n // For larger values, scale to avoid overflow\n y /= x;\n return x * Math.sqrt(1 + y * y);\n};\n\nconst parser_exit = function () {\n throw SyntaxError('Invalid Param');\n};\n\n/**\n * Calculates log(sqrt(a^2+b^2)) in a way to avoid overflows\n *\n * @param {number} a\n * @param {number} b\n * @returns {number}\n */\nfunction logHypot(a, b) {\n\n const _a = Math.abs(a);\n const _b = Math.abs(b);\n\n if (a === 0) {\n return Math.log(_b);\n }\n\n if (b === 0) {\n return Math.log(_a);\n }\n\n if (_a < 3000 && _b < 3000) {\n return Math.log(a * a + b * b) * 0.5;\n }\n\n /* I got 4 ideas to compute this property without overflow:\n *\n * Testing 1000000 times with random samples for a,b \u2208 [1, 1000000000] against a big decimal library to get an error estimate\n *\n * 1. Only eliminate the square root: (OVERALL ERROR: 3.9122483030951116e-11)\n\n Math.log(a * a + b * b) / 2\n\n *\n *\n * 2. Try to use the non-overflowing pythagoras: (OVERALL ERROR: 8.889760039210159e-10)\n\n const fn = function(a, b) {\n a = Math.abs(a);\n b = Math.abs(b);\n let t = Math.min(a, b);\n a = Math.max(a, b);\n t = t / a;\n\n return Math.log(a) + Math.log(1 + t * t) / 2;\n };\n\n * 3. Abuse the identity cos(atan(y/x) = x / sqrt(x^2+y^2): (OVERALL ERROR: 3.4780178737037204e-10)\n\n Math.log(a / Math.cos(Math.atan2(b, a)))\n\n * 4. Use 3. and apply log rules: (OVERALL ERROR: 1.2014087502620896e-9)\n\n Math.log(a) - Math.log(Math.cos(Math.atan2(b, a)))\n\n */\n\n a = a * 0.5;\n b = b * 0.5;\n\n return 0.5 * Math.log(a * a + b * b) + Math.LN2;\n}\n\nconst P = { 're': 0, 'im': 0 };\nconst parse = function (a, b) {\n\n const z = P;\n\n if (a === undefined || a === null) {\n z['re'] =\n z['im'] = 0;\n } else if (b !== undefined) {\n z['re'] = a;\n z['im'] = b;\n } else\n switch (typeof a) {\n\n case 'object':\n\n if ('im' in a && 're' in a) {\n z['re'] = a['re'];\n z['im'] = a['im'];\n } else if ('abs' in a && 'arg' in a) {\n if (!isFinite(a['abs']) && isFinite(a['arg'])) {\n return Complex['INFINITY'];\n }\n z['re'] = a['abs'] * Math.cos(a['arg']);\n z['im'] = a['abs'] * Math.sin(a['arg']);\n } else if ('r' in a && 'phi' in a) {\n if (!isFinite(a['r']) && isFinite(a['phi'])) {\n return Complex['INFINITY'];\n }\n z['re'] = a['r'] * Math.cos(a['phi']);\n z['im'] = a['r'] * Math.sin(a['phi']);\n } else if (a.length === 2) { // Quick array check\n z['re'] = a[0];\n z['im'] = a[1];\n } else {\n parser_exit();\n }\n break;\n\n case 'string':\n\n z['im'] = /* void */\n z['re'] = 0;\n\n const tokens = a.replace(/_/g, '')\n .match(/\\d+\\.?\\d*e[+-]?\\d+|\\d+\\.?\\d*|\\.\\d+|./g);\n let plus = 1;\n let minus = 0;\n\n if (tokens === null) {\n parser_exit();\n }\n\n for (let i = 0; i < tokens.length; i++) {\n\n const c = tokens[i];\n\n if (c === ' ' || c === '\\t' || c === '\\n') {\n /* void */\n } else if (c === '+') {\n plus++;\n } else if (c === '-') {\n minus++;\n } else if (c === 'i' || c === 'I') {\n\n if (plus + minus === 0) {\n parser_exit();\n }\n\n if (tokens[i + 1] !== ' ' && !isNaN(tokens[i + 1])) {\n z['im'] += parseFloat((minus % 2 ? '-' : '') + tokens[i + 1]);\n i++;\n } else {\n z['im'] += parseFloat((minus % 2 ? '-' : '') + '1');\n }\n plus = minus = 0;\n\n } else {\n\n if (plus + minus === 0 || isNaN(c)) {\n parser_exit();\n }\n\n if (tokens[i + 1] === 'i' || tokens[i + 1] === 'I') {\n z['im'] += parseFloat((minus % 2 ? '-' : '') + c);\n i++;\n } else {\n z['re'] += parseFloat((minus % 2 ? '-' : '') + c);\n }\n plus = minus = 0;\n }\n }\n\n // Still something on the stack\n if (plus + minus > 0) {\n parser_exit();\n }\n break;\n\n case 'number':\n z['im'] = 0;\n z['re'] = a;\n break;\n\n default:\n parser_exit();\n }\n\n if (isNaN(z['re']) || isNaN(z['im'])) {\n // If a calculation is NaN, we treat it as NaN and don't throw\n //parser_exit();\n }\n\n return z;\n};\n\n/**\n * @constructor\n * @returns {Complex}\n */\nfunction Complex(a, b) {\n\n if (!(this instanceof Complex)) {\n return new Complex(a, b);\n }\n\n const z = parse(a, b);\n\n this['re'] = z['re'];\n this['im'] = z['im'];\n}\n\nComplex.prototype = {\n\n 're': 0,\n 'im': 0,\n\n /**\n * Calculates the sign of a complex number, which is a normalized complex\n *\n * @returns {Complex}\n */\n 'sign': function () {\n\n const abs = hypot(this['re'], this['im']);\n\n return new Complex(\n this['re'] / abs,\n this['im'] / abs);\n },\n\n /**\n * Adds two complex numbers\n *\n * @returns {Complex}\n */\n 'add': function (a, b) {\n\n const z = parse(a, b);\n\n const tInfin = this['isInfinite']();\n const zInfin = !(isFinite(z['re']) && isFinite(z['im']));\n\n if (tInfin || zInfin) {\n\n if (tInfin && zInfin) {\n // Infinity + Infinity = NaN\n return Complex['NAN'];\n }\n // Infinity + z = Infinity { where z != Infinity }\n return Complex['INFINITY'];\n }\n\n return new Complex(\n this['re'] + z['re'],\n this['im'] + z['im']);\n },\n\n /**\n * Subtracts two complex numbers\n *\n * @returns {Complex}\n */\n 'sub': function (a, b) {\n\n const z = parse(a, b);\n\n const tInfin = this['isInfinite']();\n const zInfin = !(isFinite(z['re']) && isFinite(z['im']));\n\n if (tInfin || zInfin) {\n\n if (tInfin && zInfin) {\n // Infinity - Infinity = NaN\n return Complex['NAN'];\n }\n // Infinity - z = Infinity { where z != Infinity }\n return Complex['INFINITY'];\n }\n\n return new Complex(\n this['re'] - z['re'],\n this['im'] - z['im']);\n },\n\n /**\n * Multiplies two complex numbers\n *\n * @returns {Complex}\n */\n 'mul': function (a, b) {\n\n const z = parse(a, b);\n\n const tInfin = this['isInfinite']();\n const zInfin = !(isFinite(z['re']) && isFinite(z['im']));\n const tIsZero = this['re'] === 0 && this['im'] === 0;\n const zIsZero = z['re'] === 0 && z['im'] === 0;\n\n // Infinity * 0 = NaN\n if (tInfin && zIsZero || zInfin && tIsZero) {\n return Complex['NAN'];\n }\n\n // Infinity * z = Infinity { where z != 0 }\n if (tInfin || zInfin) {\n return Complex['INFINITY'];\n }\n\n // Shortcut for real values\n if (z['im'] === 0 && this['im'] === 0) {\n return new Complex(this['re'] * z['re'], 0);\n }\n\n return new Complex(\n this['re'] * z['re'] - this['im'] * z['im'],\n this['re'] * z['im'] + this['im'] * z['re']);\n },\n\n /**\n * Divides two complex numbers\n *\n * @returns {Complex}\n */\n 'div': function (a, b) {\n\n const z = parse(a, b);\n\n const tInfin = this['isInfinite']();\n const zInfin = !(isFinite(z['re']) && isFinite(z['im']));\n const tIsZero = this['re'] === 0 && this['im'] === 0;\n const zIsZero = z['re'] === 0 && z['im'] === 0;\n\n // 0 / 0 = NaN and Infinity / Infinity = NaN\n if (tIsZero && zIsZero || tInfin && zInfin) {\n return Complex['NAN'];\n }\n\n // Infinity / 0 = Infinity\n if (zIsZero || tInfin) {\n return Complex['INFINITY'];\n }\n\n // 0 / Infinity = 0\n if (tIsZero || zInfin) {\n return Complex['ZERO'];\n }\n\n if (0 === z['im']) {\n // Divisor is real\n return new Complex(this['re'] / z['re'], this['im'] / z['re']);\n }\n\n if (Math.abs(z['re']) < Math.abs(z['im'])) {\n\n const x = z['re'] / z['im'];\n const t = z['re'] * x + z['im'];\n\n return new Complex(\n (this['re'] * x + this['im']) / t,\n (this['im'] * x - this['re']) / t);\n\n } else {\n\n const x = z['im'] / z['re'];\n const t = z['im'] * x + z['re'];\n\n return new Complex(\n (this['re'] + this['im'] * x) / t,\n (this['im'] - this['re'] * x) / t);\n }\n },\n\n /**\n * Calculate the power of two complex numbers\n *\n * @returns {Complex}\n */\n 'pow': function (a, b) {\n\n const z = parse(a, b);\n\n const tIsZero = this['re'] === 0 && this['im'] === 0;\n const zIsZero = z['re'] === 0 && z['im'] === 0;\n\n if (zIsZero) {\n return Complex['ONE'];\n }\n\n // If the exponent is real\n if (z['im'] === 0) {\n\n if (this['im'] === 0 && this['re'] > 0) {\n\n return new Complex(Math.pow(this['re'], z['re']), 0);\n\n } else if (this['re'] === 0) { // If base is fully imaginary\n\n switch ((z['re'] % 4 + 4) % 4) {\n case 0:\n return new Complex(Math.pow(this['im'], z['re']), 0);\n case 1:\n return new Complex(0, Math.pow(this['im'], z['re']));\n case 2:\n return new Complex(-Math.pow(this['im'], z['re']), 0);\n case 3:\n return new Complex(0, -Math.pow(this['im'], z['re']));\n }\n }\n }\n\n /* I couldn't find a good formula, so here is a derivation and optimization\n *\n * z_1^z_2 = (a + bi)^(c + di)\n * = exp((c + di) * log(a + bi)\n * = pow(a^2 + b^2, (c + di) / 2) * exp(i(c + di)atan2(b, a))\n * =>...\n * Re = (pow(a^2 + b^2, c / 2) * exp(-d * atan2(b, a))) * cos(d * log(a^2 + b^2) / 2 + c * atan2(b, a))\n * Im = (pow(a^2 + b^2, c / 2) * exp(-d * atan2(b, a))) * sin(d * log(a^2 + b^2) / 2 + c * atan2(b, a))\n *\n * =>...\n * Re = exp(c * log(sqrt(a^2 + b^2)) - d * atan2(b, a)) * cos(d * log(sqrt(a^2 + b^2)) + c * atan2(b, a))\n * Im = exp(c * log(sqrt(a^2 + b^2)) - d * atan2(b, a)) * sin(d * log(sqrt(a^2 + b^2)) + c * atan2(b, a))\n *\n * =>\n * Re = exp(c * logsq2 - d * arg(z_1)) * cos(d * logsq2 + c * arg(z_1))\n * Im = exp(c * logsq2 - d * arg(z_1)) * sin(d * logsq2 + c * arg(z_1))\n *\n */\n\n if (tIsZero && z['re'] > 0) { // Same behavior as Wolframalpha, Zero if real part is zero\n return Complex['ZERO'];\n }\n\n const arg = Math.atan2(this['im'], this['re']);\n const loh = logHypot(this['re'], this['im']);\n\n let re = Math.exp(z['re'] * loh - z['im'] * arg);\n let im = z['im'] * loh + z['re'] * arg;\n return new Complex(\n re * Math.cos(im),\n re * Math.sin(im));\n },\n\n /**\n * Calculate the complex square root\n *\n * @returns {Complex}\n */\n 'sqrt': function () {\n\n const a = this['re'];\n const b = this['im'];\n\n if (b === 0) {\n // Real number case\n if (a >= 0) {\n return new Complex(Math.sqrt(a), 0);\n } else {\n return new Complex(0, Math.sqrt(-a));\n }\n }\n\n const r = hypot(a, b);\n\n let re = Math.sqrt(0.5 * (r + Math.abs(a))); // sqrt(2x) / 2 = sqrt(x / 2)\n let im = Math.abs(b) / (2 * re);\n\n if (a >= 0) {\n return new Complex(re, b < 0 ? -im : im);\n } else {\n return new Complex(im, b < 0 ? -re : re);\n }\n },\n\n /**\n * Calculate the complex exponent\n *\n * @returns {Complex}\n */\n 'exp': function () {\n\n const er = Math.exp(this['re']);\n\n if (this['im'] === 0) {\n return new Complex(er, 0);\n }\n return new Complex(\n er * Math.cos(this['im']),\n er * Math.sin(this['im']));\n },\n\n /**\n * Calculate the complex exponent and subtracts one.\n *\n * This may be more accurate than `Complex(x).exp().sub(1)` if\n * `x` is small.\n *\n * @returns {Complex}\n */\n 'expm1': function () {\n\n /**\n * exp(a + i*b) - 1\n = exp(a) * (cos(b) + j*sin(b)) - 1\n = expm1(a)*cos(b) + cosm1(b) + j*exp(a)*sin(b)\n */\n\n const a = this['re'];\n const b = this['im'];\n\n return new Complex(\n Math.expm1(a) * Math.cos(b) + cosm1(b),\n Math.exp(a) * Math.sin(b));\n },\n\n /**\n * Calculate the natural log\n *\n * @returns {Complex}\n */\n 'log': function () {\n\n const a = this['re'];\n const b = this['im'];\n\n if (b === 0 && a > 0) {\n return new Complex(Math.log(a), 0);\n }\n\n return new Complex(\n logHypot(a, b),\n Math.atan2(b, a));\n },\n\n /**\n * Calculate the magnitude of the complex number\n *\n * @returns {number}\n */\n 'abs': function () {\n\n return hypot(this['re'], this['im']);\n },\n\n /**\n * Calculate the angle of the complex number\n *\n * @returns {number}\n */\n 'arg': function () {\n\n return Math.atan2(this['im'], this['re']);\n },\n\n /**\n * Calculate the sine of the complex number\n *\n * @returns {Complex}\n */\n 'sin': function () {\n\n // sin(z) = ( e^iz - e^-iz ) / 2i \n // = sin(a)cosh(b) + i cos(a)sinh(b)\n\n const a = this['re'];\n const b = this['im'];\n\n return new Complex(\n Math.sin(a) * cosh(b),\n Math.cos(a) * sinh(b));\n },\n\n /**\n * Calculate the cosine\n *\n * @returns {Complex}\n */\n 'cos': function () {\n\n // cos(z) = ( e^iz + e^-iz ) / 2 \n // = cos(a)cosh(b) - i sin(a)sinh(b)\n\n const a = this['re'];\n const b = this['im'];\n\n return new Complex(\n Math.cos(a) * cosh(b),\n -Math.sin(a) * sinh(b));\n },\n\n /**\n * Calculate the tangent\n *\n * @returns {Complex}\n */\n 'tan': function () {\n\n // tan(z) = sin(z) / cos(z) \n // = ( e^iz - e^-iz ) / ( i( e^iz + e^-iz ) )\n // = ( e^2iz - 1 ) / i( e^2iz + 1 )\n // = ( sin(2a) + i sinh(2b) ) / ( cos(2a) + cosh(2b) )\n\n const a = 2 * this['re'];\n const b = 2 * this['im'];\n const d = Math.cos(a) + cosh(b);\n\n return new Complex(\n Math.sin(a) / d,\n sinh(b) / d);\n },\n\n /**\n * Calculate the cotangent\n *\n * @returns {Complex}\n */\n 'cot': function () {\n\n // cot(c) = i(e^(ci) + e^(-ci)) / (e^(ci) - e^(-ci))\n\n const a = 2 * this['re'];\n const b = 2 * this['im'];\n const d = Math.cos(a) - cosh(b);\n\n return new Complex(\n -Math.sin(a) / d,\n sinh(b) / d);\n },\n\n /**\n * Calculate the secant\n *\n * @returns {Complex}\n */\n 'sec': function () {\n\n // sec(c) = 2 / (e^(ci) + e^(-ci))\n\n const a = this['re'];\n const b = this['im'];\n const d = 0.5 * cosh(2 * b) + 0.5 * Math.cos(2 * a);\n\n return new Complex(\n Math.cos(a) * cosh(b) / d,\n Math.sin(a) * sinh(b) / d);\n },\n\n /**\n * Calculate the cosecans\n *\n * @returns {Complex}\n */\n 'csc': function () {\n\n // csc(c) = 2i / (e^(ci) - e^(-ci))\n\n const a = this['re'];\n const b = this['im'];\n const d = 0.5 * cosh(2 * b) - 0.5 * Math.cos(2 * a);\n\n return new Complex(\n Math.sin(a) * cosh(b) / d,\n -Math.cos(a) * sinh(b) / d);\n },\n\n /**\n * Calculate the complex arcus sinus\n *\n * @returns {Complex}\n */\n 'asin': function () {\n\n // asin(c) = -i * log(ci + sqrt(1 - c^2))\n\n const a = this['re'];\n const b = this['im'];\n\n const t1 = new Complex(\n b * b - a * a + 1,\n -2 * a * b)['sqrt']();\n\n const t2 = new Complex(\n t1['re'] - b,\n t1['im'] + a)['log']();\n\n return new Complex(t2['im'], -t2['re']);\n },\n\n /**\n * Calculate the complex arcus cosinus\n *\n * @returns {Complex}\n */\n 'acos': function () {\n\n // acos(c) = i * log(c - i * sqrt(1 - c^2))\n\n const a = this['re'];\n const b = this['im'];\n\n const t1 = new Complex(\n b * b - a * a + 1,\n -2 * a * b)['sqrt']();\n\n const t2 = new Complex(\n t1['re'] - b,\n t1['im'] + a)['log']();\n\n return new Complex(Math.PI / 2 - t2['im'], t2['re']);\n },\n\n /**\n * Calculate the complex arcus tangent\n *\n * @returns {Complex}\n */\n 'atan': function () {\n\n // atan(c) = i / 2 log((i + x) / (i - x))\n\n const a = this['re'];\n const b = this['im'];\n\n if (a === 0) {\n\n if (b === 1) {\n return new Complex(0, Infinity);\n }\n\n if (b === -1) {\n return new Complex(0, -Infinity);\n }\n }\n\n const d = a * a + (1.0 - b) * (1.0 - b);\n\n const t1 = new Complex(\n (1 - b * b - a * a) / d,\n -2 * a / d).log();\n\n return new Complex(-0.5 * t1['im'], 0.5 * t1['re']);\n },\n\n /**\n * Calculate the complex arcus cotangent\n *\n * @returns {Complex}\n */\n 'acot': function () {\n\n // acot(c) = i / 2 log((c - i) / (c + i))\n\n const a = this['re'];\n const b = this['im'];\n\n if (b === 0) {\n return new Complex(Math.atan2(1, a), 0);\n }\n\n const d = a * a + b * b;\n return (d !== 0)\n ? new Complex(\n a / d,\n -b / d).atan()\n : new Complex(\n (a !== 0) ? a / 0 : 0,\n (b !== 0) ? -b / 0 : 0).atan();\n },\n\n /**\n * Calculate the complex arcus secant\n *\n * @returns {Complex}\n */\n 'asec': function () {\n\n // asec(c) = -i * log(1 / c + sqrt(1 - i / c^2))\n\n const a = this['re'];\n const b = this['im'];\n\n if (a === 0 && b === 0) {\n return new Complex(0, Infinity);\n }\n\n const d = a * a + b * b;\n return (d !== 0)\n ? new Complex(\n a / d,\n -b / d).acos()\n : new Complex(\n (a !== 0) ? a / 0 : 0,\n (b !== 0) ? -b / 0 : 0).acos();\n },\n\n /**\n * Calculate the complex arcus cosecans\n *\n * @returns {Complex}\n */\n 'acsc': function () {\n\n // acsc(c) = -i * log(i / c + sqrt(1 - 1 / c^2))\n\n const a = this['re'];\n const b = this['im'];\n\n if (a === 0 && b === 0) {\n return new Complex(Math.PI / 2, Infinity);\n }\n\n const d = a * a + b * b;\n return (d !== 0)\n ? new Complex(\n a / d,\n -b / d).asin()\n : new Complex(\n (a !== 0) ? a / 0 : 0,\n (b !== 0) ? -b / 0 : 0).asin();\n },\n\n /**\n * Calculate the complex sinh\n *\n * @returns {Complex}\n */\n 'sinh': function () {\n\n // sinh(c) = (e^c - e^-c) / 2\n\n const a = this['re'];\n const b = this['im'];\n\n return new Complex(\n sinh(a) * Math.cos(b),\n cosh(a) * Math.sin(b));\n },\n\n /**\n * Calculate the complex cosh\n *\n * @returns {Complex}\n */\n 'cosh': function () {\n\n // cosh(c) = (e^c + e^-c) / 2\n\n const a = this['re'];\n const b = this['im'];\n\n return new Complex(\n cosh(a) * Math.cos(b),\n sinh(a) * Math.sin(b));\n },\n\n /**\n * Calculate the complex tanh\n *\n * @returns {Complex}\n */\n 'tanh': function () {\n\n // tanh(c) = (e^c - e^-c) / (e^c + e^-c)\n\n const a = 2 * this['re'];\n const b = 2 * this['im'];\n const d = cosh(a) + Math.cos(b);\n\n return new Complex(\n sinh(a) / d,\n Math.sin(b) / d);\n },\n\n /**\n * Calculate the complex coth\n *\n * @returns {Complex}\n */\n 'coth': function () {\n\n // coth(c) = (e^c + e^-c) / (e^c - e^-c)\n\n const a = 2 * this['re'];\n const b = 2 * this['im'];\n const d = cosh(a) - Math.cos(b);\n\n return new Complex(\n sinh(a) / d,\n -Math.sin(b) / d);\n },\n\n /**\n * Calculate the complex coth\n *\n * @returns {Complex}\n */\n 'csch': function () {\n\n // csch(c) = 2 / (e^c - e^-c)\n\n const a = this['re'];\n const b = this['im'];\n const d = Math.cos(2 * b) - cosh(2 * a);\n\n return new Complex(\n -2 * sinh(a) * Math.cos(b) / d,\n 2 * cosh(a) * Math.sin(b) / d);\n },\n\n /**\n * Calculate the complex sech\n *\n * @returns {Complex}\n */\n 'sech': function () {\n\n // sech(c) = 2 / (e^c + e^-c)\n\n const a = this['re'];\n const b = this['im'];\n const d = Math.cos(2 * b) + cosh(2 * a);\n\n return new Complex(\n 2 * cosh(a) * Math.cos(b) / d,\n -2 * sinh(a) * Math.sin(b) / d);\n },\n\n /**\n * Calculate the complex asinh\n *\n * @returns {Complex}\n */\n 'asinh': function () {\n\n // asinh(c) = log(c + sqrt(c^2 + 1))\n\n let tmp = this['im'];\n this['im'] = -this['re'];\n this['re'] = tmp;\n const res = this['asin']();\n\n this['re'] = -this['im'];\n this['im'] = tmp;\n tmp = res['re'];\n\n res['re'] = -res['im'];\n res['im'] = tmp;\n return res;\n },\n\n /**\n * Calculate the complex acosh\n *\n * @returns {Complex}\n */\n 'acosh': function () {\n\n // acosh(c) = log(c + sqrt(c^2 - 1))\n\n const res = this['acos']();\n if (res['im'] <= 0) {\n const tmp = res['re'];\n res['re'] = -res['im'];\n res['im'] = tmp;\n } else {\n const tmp = res['im'];\n res['im'] = -res['re'];\n res['re'] = tmp;\n }\n return res;\n },\n\n /**\n * Calculate the complex atanh\n *\n * @returns {Complex}\n */\n 'atanh': function () {\n\n // atanh(c) = log((1+c) / (1-c)) / 2\n\n const a = this['re'];\n const b = this['im'];\n\n const noIM = a > 1 && b === 0;\n const oneMinus = 1 - a;\n const onePlus = 1 + a;\n const d = oneMinus * oneMinus + b * b;\n\n const x = (d !== 0)\n ? new Complex(\n (onePlus * oneMinus - b * b) / d,\n (b * oneMinus + onePlus * b) / d)\n : new Complex(\n (a !== -1) ? (a / 0) : 0,\n (b !== 0) ? (b / 0) : 0);\n\n const temp = x['re'];\n x['re'] = logHypot(x['re'], x['im']) / 2;\n x['im'] = Math.atan2(x['im'], temp) / 2;\n if (noIM) {\n x['im'] = -x['im'];\n }\n return x;\n },\n\n /**\n * Calculate the complex acoth\n *\n * @returns {Complex}\n */\n 'acoth': function () {\n\n // acoth(c) = log((c+1) / (c-1)) / 2\n\n const a = this['re'];\n const b = this['im'];\n\n if (a === 0 && b === 0) {\n return new Complex(0, Math.PI / 2);\n }\n\n const d = a * a + b * b;\n return (d !== 0)\n ? new Complex(\n a / d,\n -b / d).atanh()\n : new Complex(\n (a !== 0) ? a / 0 : 0,\n (b !== 0) ? -b / 0 : 0).atanh();\n },\n\n /**\n * Calculate the complex acsch\n *\n * @returns {Complex}\n */\n 'acsch': function () {\n\n // acsch(c) = log((1+sqrt(1+c^2))/c)\n\n const a = this['re'];\n const b = this['im'];\n\n if (b === 0) {\n\n return new Complex(\n (a !== 0)\n ? Math.log(a + Math.sqrt(a * a + 1))\n : Infinity, 0);\n }\n\n const d = a * a + b * b;\n return (d !== 0)\n ? new Complex(\n a / d,\n -b / d).asinh()\n : new Complex(\n (a !== 0) ? a / 0 : 0,\n (b !== 0) ? -b / 0 : 0).asinh();\n },\n\n /**\n * Calculate the complex asech\n *\n * @returns {Complex}\n */\n 'asech': function () {\n\n // asech(c) = log((1+sqrt(1-c^2))/c)\n\n const a = this['re'];\n const b = this['im'];\n\n if (this['isZero']()) {\n return Complex['INFINITY'];\n }\n\n const d = a * a + b * b;\n return (d !== 0)\n ? new Complex(\n a / d,\n -b / d).acosh()\n : new Complex(\n (a !== 0) ? a / 0 : 0,\n (b !== 0) ? -b / 0 : 0).acosh();\n },\n\n /**\n * Calculate the complex inverse 1/z\n *\n * @returns {Complex}\n */\n 'inverse': function () {\n\n // 1 / 0 = Infinity and 1 / Infinity = 0\n if (this['isZero']()) {\n return Complex['INFINITY'];\n }\n\n if (this['isInfinite']()) {\n return Complex['ZERO'];\n }\n\n const a = this['re'];\n const b = this['im'];\n\n const d = a * a + b * b;\n\n return new Complex(a / d, -b / d);\n },\n\n /**\n * Returns the complex conjugate\n *\n * @returns {Complex}\n */\n 'conjugate': function () {\n\n return new Complex(this['re'], -this['im']);\n },\n\n /**\n * Gets the negated complex number\n *\n * @returns {Complex}\n */\n 'neg': function () {\n\n return new Complex(-this['re'], -this['im']);\n },\n\n /**\n * Ceils the actual complex number\n *\n * @returns {Complex}\n */\n 'ceil': function (places) {\n\n places = Math.pow(10, places || 0);\n\n return new Complex(\n Math.ceil(this['re'] * places) / places,\n Math.ceil(this['im'] * places) / places);\n },\n\n /**\n * Floors the actual complex number\n *\n * @returns {Complex}\n */\n 'floor': function (places) {\n\n places = Math.pow(10, places || 0);\n\n return new Complex(\n Math.floor(this['re'] * places) / places,\n Math.floor(this['im'] * places) / places);\n },\n\n /**\n * Ceils the actual complex number\n *\n * @returns {Complex}\n */\n 'round': function (places) {\n\n places = Math.pow(10, places || 0);\n\n return new Complex(\n Math.round(this['re'] * places) / places,\n Math.round(this['im'] * places) / places);\n },\n\n /**\n * Compares two complex numbers\n *\n * **Note:** new Complex(Infinity).equals(Infinity) === false\n *\n * @returns {boolean}\n */\n 'equals': function (a, b) {\n\n const z = parse(a, b);\n\n return Math.abs(z['re'] - this['re']) <= Complex['EPSILON'] &&\n Math.abs(z['im'] - this['im']) <= Complex['EPSILON'];\n },\n\n /**\n * Clones the actual object\n *\n * @returns {Complex}\n */\n 'clone': function () {\n\n return new Complex(this['re'], this['im']);\n },\n\n /**\n * Gets a string of the actual complex number\n *\n * @returns {string}\n */\n 'toString': function () {\n\n let a = this['re'];\n let b = this['im'];\n let ret = \"\";\n\n if (this['isNaN']()) {\n return 'NaN';\n }\n\n if (this['isInfinite']()) {\n return 'Infinity';\n }\n\n if (Math.abs(a) < Complex['EPSILON']) {\n a = 0;\n }\n\n if (Math.abs(b) < Complex['EPSILON']) {\n b = 0;\n }\n\n // If is real number\n if (b === 0) {\n return ret + a;\n }\n\n if (a !== 0) {\n ret += a;\n ret += \" \";\n if (b < 0) {\n b = -b;\n ret += \"-\";\n } else {\n ret += \"+\";\n }\n ret += \" \";\n } else if (b < 0) {\n b = -b;\n ret += \"-\";\n }\n\n if (1 !== b) { // b is the absolute imaginary part\n ret += b;\n }\n return ret + \"i\";\n },\n\n /**\n * Returns the actual number as a vector\n *\n * @returns {Array}\n */\n 'toVector': function () {\n\n return [this['re'], this['im']];\n },\n\n /**\n * Returns the actual real value of the current object\n *\n * @returns {number|null}\n */\n 'valueOf': function () {\n\n if (this['im'] === 0) {\n return this['re'];\n }\n return null;\n },\n\n /**\n * Determines whether a complex number is not on the Riemann sphere.\n *\n * @returns {boolean}\n */\n 'isNaN': function () {\n return isNaN(this['re']) || isNaN(this['im']);\n },\n\n /**\n * Determines whether or not a complex number is at the zero pole of the\n * Riemann sphere.\n *\n * @returns {boolean}\n */\n 'isZero': function () {\n return this['im'] === 0 && this['re'] === 0;\n },\n\n /**\n * Determines whether a complex number is not at the infinity pole of the\n * Riemann sphere.\n *\n * @returns {boolean}\n */\n 'isFinite': function () {\n return isFinite(this['re']) && isFinite(this['im']);\n },\n\n /**\n * Determines whether or not a complex number is at the infinity pole of the\n * Riemann sphere.\n *\n * @returns {boolean}\n */\n 'isInfinite': function () {\n return !this['isFinite']();\n }\n};\n\nComplex['ZERO'] = new Complex(0, 0);\nComplex['ONE'] = new Complex(1, 0);\nComplex['I'] = new Complex(0, 1);\nComplex['PI'] = new Complex(Math.PI, 0);\nComplex['E'] = new Complex(Math.E, 0);\nComplex['INFINITY'] = new Complex(Infinity, Infinity);\nComplex['NAN'] = new Complex(NaN, NaN);\nComplex['EPSILON'] = 1e-15;\nexport {\n Complex as default, Complex\n};\n", "import Complex from 'complex.js';\nimport { format } from '../../utils/number.js';\nimport { isNumber, isUnit } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'Complex';\nvar dependencies = [];\nexport var createComplexClass = /* #__PURE__ */factory(name, dependencies, () => {\n /**\n * Attach type information\n */\n Object.defineProperty(Complex, 'name', {\n value: 'Complex'\n });\n Complex.prototype.constructor = Complex;\n Complex.prototype.type = 'Complex';\n Complex.prototype.isComplex = true;\n\n /**\n * Get a JSON representation of the complex number\n * @returns {Object} Returns a JSON object structured as:\n * `{\"mathjs\": \"Complex\", \"re\": 2, \"im\": 3}`\n */\n Complex.prototype.toJSON = function () {\n return {\n mathjs: 'Complex',\n re: this.re,\n im: this.im\n };\n };\n\n /*\n * Return the value of the complex number in polar notation\n * The angle phi will be set in the interval of [-pi, pi].\n * @return {{r: number, phi: number}} Returns and object with properties r and phi.\n */\n Complex.prototype.toPolar = function () {\n return {\n r: this.abs(),\n phi: this.arg()\n };\n };\n\n /**\n * Get a string representation of the complex number,\n * with optional formatting options.\n * @param {Object | number | Function} [options] Formatting options. See\n * lib/utils/number:format for a\n * description of the available\n * options.\n * @return {string} str\n */\n Complex.prototype.format = function (options) {\n var str = '';\n var im = this.im;\n var re = this.re;\n var strRe = format(this.re, options);\n var strIm = format(this.im, options);\n\n // round either re or im when smaller than the configured precision\n var precision = isNumber(options) ? options : options ? options.precision : null;\n if (precision !== null) {\n var epsilon = Math.pow(10, -precision);\n if (Math.abs(re / im) < epsilon) {\n re = 0;\n }\n if (Math.abs(im / re) < epsilon) {\n im = 0;\n }\n }\n if (im === 0) {\n // real value\n str = strRe;\n } else if (re === 0) {\n // purely complex value\n if (im === 1) {\n str = 'i';\n } else if (im === -1) {\n str = '-i';\n } else {\n str = strIm + 'i';\n }\n } else {\n // complex value\n if (im < 0) {\n if (im === -1) {\n str = strRe + ' - i';\n } else {\n str = strRe + ' - ' + strIm.substring(1) + 'i';\n }\n } else {\n if (im === 1) {\n str = strRe + ' + i';\n } else {\n str = strRe + ' + ' + strIm + 'i';\n }\n }\n }\n return str;\n };\n\n /**\n * Create a complex number from polar coordinates\n *\n * Usage:\n *\n * Complex.fromPolar(r: number, phi: number) : Complex\n * Complex.fromPolar({r: number, phi: number}) : Complex\n *\n * @param {*} args...\n * @return {Complex}\n */\n Complex.fromPolar = function (args) {\n switch (arguments.length) {\n case 1:\n {\n var arg = arguments[0];\n if (typeof arg === 'object') {\n return Complex(arg);\n } else {\n throw new TypeError('Input has to be an object with r and phi keys.');\n }\n }\n case 2:\n {\n var r = arguments[0];\n var phi = arguments[1];\n if (isNumber(r)) {\n if (isUnit(phi) && phi.hasBase('ANGLE')) {\n // convert unit to a number in radians\n phi = phi.toNumber('rad');\n }\n if (isNumber(phi)) {\n return new Complex({\n r,\n phi\n });\n }\n throw new TypeError('Phi is not a number nor an angle unit.');\n } else {\n throw new TypeError('Radius r is not a number.');\n }\n }\n default:\n throw new SyntaxError('Wrong number of arguments in function fromPolar');\n }\n };\n Complex.prototype.valueOf = Complex.prototype.toString;\n\n /**\n * Create a Complex number from a JSON object\n * @param {Object} json A JSON Object structured as\n * {\"mathjs\": \"Complex\", \"re\": 2, \"im\": 3}\n * All properties are optional, default values\n * for `re` and `im` are 0.\n * @return {Complex} Returns a new Complex number\n */\n Complex.fromJSON = function (json) {\n return new Complex(json);\n };\n\n /**\n * Compare two complex numbers, `a` and `b`:\n *\n * - Returns 1 when the real part of `a` is larger than the real part of `b`\n * - Returns -1 when the real part of `a` is smaller than the real part of `b`\n * - Returns 1 when the real parts are equal\n * and the imaginary part of `a` is larger than the imaginary part of `b`\n * - Returns -1 when the real parts are equal\n * and the imaginary part of `a` is smaller than the imaginary part of `b`\n * - Returns 0 when both real and imaginary parts are equal.\n *\n * @params {Complex} a\n * @params {Complex} b\n * @returns {number} Returns the comparison result: -1, 0, or 1\n */\n Complex.compare = function (a, b) {\n if (a.re > b.re) {\n return 1;\n }\n if (a.re < b.re) {\n return -1;\n }\n if (a.im > b.im) {\n return 1;\n }\n if (a.im < b.im) {\n return -1;\n }\n return 0;\n };\n return Complex;\n}, {\n isClass: true\n});", "'use strict';\n\n/**\n *\n * This class offers the possibility to calculate fractions.\n * You can pass a fraction in different formats. Either as array, as double, as string or as an integer.\n *\n * Array/Object form\n * [ 0 => , 1 => ]\n * { n => , d => }\n *\n * Integer form\n * - Single integer value as BigInt or Number\n *\n * Double form\n * - Single double value as Number\n *\n * String form\n * 123.456 - a simple double\n * 123/456 - a string fraction\n * 123.'456' - a double with repeating decimal places\n * 123.(456) - synonym\n * 123.45'6' - a double with repeating last place\n * 123.45(6) - synonym\n *\n * Example:\n * let f = new Fraction(\"9.4'31'\");\n * f.mul([-4, 3]).div(4.9);\n *\n */\n\n// Set Identity function to downgrade BigInt to Number if needed\nif (typeof BigInt === 'undefined') BigInt = function (n) { if (isNaN(n)) throw new Error(\"\"); return n; };\n\nconst C_ZERO = BigInt(0);\nconst C_ONE = BigInt(1);\nconst C_TWO = BigInt(2);\nconst C_FIVE = BigInt(5);\nconst C_TEN = BigInt(10);\n\n// Maximum search depth for cyclic rational numbers. 2000 should be more than enough.\n// Example: 1/7 = 0.(142857) has 6 repeating decimal places.\n// If MAX_CYCLE_LEN gets reduced, long cycles will not be detected and toString() only gets the first 10 digits\nconst MAX_CYCLE_LEN = 2000;\n\n// Parsed data to avoid calling \"new\" all the time\nconst P = {\n \"s\": C_ONE,\n \"n\": C_ZERO,\n \"d\": C_ONE\n};\n\nfunction assign(n, s) {\n\n try {\n n = BigInt(n);\n } catch (e) {\n throw InvalidParameter();\n }\n return n * s;\n}\n\nfunction trunc(x) {\n return typeof x === 'bigint' ? x : Math.floor(x);\n}\n\n// Creates a new Fraction internally without the need of the bulky constructor\nfunction newFraction(n, d) {\n\n if (d === C_ZERO) {\n throw DivisionByZero();\n }\n\n const f = Object.create(Fraction.prototype);\n f[\"s\"] = n < C_ZERO ? -C_ONE : C_ONE;\n\n n = n < C_ZERO ? -n : n;\n\n const a = gcd(n, d);\n\n f[\"n\"] = n / a;\n f[\"d\"] = d / a;\n return f;\n}\n\nfunction factorize(num) {\n\n const factors = {};\n\n let n = num;\n let i = C_TWO;\n let s = C_FIVE - C_ONE;\n\n while (s <= n) {\n\n while (n % i === C_ZERO) {\n n /= i;\n factors[i] = (factors[i] || C_ZERO) + C_ONE;\n }\n s += C_ONE + C_TWO * i++;\n }\n\n if (n !== num) {\n if (n > 1)\n factors[n] = (factors[n] || C_ZERO) + C_ONE;\n } else {\n factors[num] = (factors[num] || C_ZERO) + C_ONE;\n }\n return factors;\n}\n\nconst parse = function (p1, p2) {\n\n let n = C_ZERO, d = C_ONE, s = C_ONE;\n\n if (p1 === undefined || p1 === null) { // No argument\n /* void */\n } else if (p2 !== undefined) { // Two arguments\n\n if (typeof p1 === \"bigint\") {\n n = p1;\n } else if (isNaN(p1)) {\n throw InvalidParameter();\n } else if (p1 % 1 !== 0) {\n throw NonIntegerParameter();\n } else {\n n = BigInt(p1);\n }\n\n if (typeof p2 === \"bigint\") {\n d = p2;\n } else if (isNaN(p2)) {\n throw InvalidParameter();\n } else if (p2 % 1 !== 0) {\n throw NonIntegerParameter();\n } else {\n d = BigInt(p2);\n }\n\n s = n * d;\n\n } else if (typeof p1 === \"object\") {\n if (\"d\" in p1 && \"n\" in p1) {\n n = BigInt(p1[\"n\"]);\n d = BigInt(p1[\"d\"]);\n if (\"s\" in p1)\n n *= BigInt(p1[\"s\"]);\n } else if (0 in p1) {\n n = BigInt(p1[0]);\n if (1 in p1)\n d = BigInt(p1[1]);\n } else if (typeof p1 === \"bigint\") {\n n = p1;\n } else {\n throw InvalidParameter();\n }\n s = n * d;\n } else if (typeof p1 === \"number\") {\n\n if (isNaN(p1)) {\n throw InvalidParameter();\n }\n\n if (p1 < 0) {\n s = -C_ONE;\n p1 = -p1;\n }\n\n if (p1 % 1 === 0) {\n n = BigInt(p1);\n } else if (p1 > 0) { // check for != 0, scale would become NaN (log(0)), which converges really slow\n\n let z = 1;\n\n let A = 0, B = 1;\n let C = 1, D = 1;\n\n let N = 10000000;\n\n if (p1 >= 1) {\n z = 10 ** Math.floor(1 + Math.log10(p1));\n p1 /= z;\n }\n\n // Using Farey Sequences\n\n while (B <= N && D <= N) {\n let M = (A + C) / (B + D);\n\n if (p1 === M) {\n if (B + D <= N) {\n n = A + C;\n d = B + D;\n } else if (D > B) {\n n = C;\n d = D;\n } else {\n n = A;\n d = B;\n }\n break;\n\n } else {\n\n if (p1 > M) {\n A += C;\n B += D;\n } else {\n C += A;\n D += B;\n }\n\n if (B > N) {\n n = C;\n d = D;\n } else {\n n = A;\n d = B;\n }\n }\n }\n n = BigInt(n) * BigInt(z);\n d = BigInt(d);\n }\n\n } else if (typeof p1 === \"string\") {\n\n let ndx = 0;\n\n let v = C_ZERO, w = C_ZERO, x = C_ZERO, y = C_ONE, z = C_ONE;\n\n let match = p1.replace(/_/g, '').match(/\\d+|./g);\n\n if (match === null)\n throw InvalidParameter();\n\n if (match[ndx] === '-') {// Check for minus sign at the beginning\n s = -C_ONE;\n ndx++;\n } else if (match[ndx] === '+') {// Check for plus sign at the beginning\n ndx++;\n }\n\n if (match.length === ndx + 1) { // Check if it's just a simple number \"1234\"\n w = assign(match[ndx++], s);\n } else if (match[ndx + 1] === '.' || match[ndx] === '.') { // Check if it's a decimal number\n\n if (match[ndx] !== '.') { // Handle 0.5 and .5\n v = assign(match[ndx++], s);\n }\n ndx++;\n\n // Check for decimal places\n if (ndx + 1 === match.length || match[ndx + 1] === '(' && match[ndx + 3] === ')' || match[ndx + 1] === \"'\" && match[ndx + 3] === \"'\") {\n w = assign(match[ndx], s);\n y = C_TEN ** BigInt(match[ndx].length);\n ndx++;\n }\n\n // Check for repeating places\n if (match[ndx] === '(' && match[ndx + 2] === ')' || match[ndx] === \"'\" && match[ndx + 2] === \"'\") {\n x = assign(match[ndx + 1], s);\n z = C_TEN ** BigInt(match[ndx + 1].length) - C_ONE;\n ndx += 3;\n }\n\n } else if (match[ndx + 1] === '/' || match[ndx + 1] === ':') { // Check for a simple fraction \"123/456\" or \"123:456\"\n w = assign(match[ndx], s);\n y = assign(match[ndx + 2], C_ONE);\n ndx += 3;\n } else if (match[ndx + 3] === '/' && match[ndx + 1] === ' ') { // Check for a complex fraction \"123 1/2\"\n v = assign(match[ndx], s);\n w = assign(match[ndx + 2], s);\n y = assign(match[ndx + 4], C_ONE);\n ndx += 5;\n }\n\n if (match.length <= ndx) { // Check for more tokens on the stack\n d = y * z;\n s = /* void */\n n = x + d * v + z * w;\n } else {\n throw InvalidParameter();\n }\n\n } else if (typeof p1 === \"bigint\") {\n n = p1;\n s = p1;\n d = C_ONE;\n } else {\n throw InvalidParameter();\n }\n\n if (d === C_ZERO) {\n throw DivisionByZero();\n }\n\n P[\"s\"] = s < C_ZERO ? -C_ONE : C_ONE;\n P[\"n\"] = n < C_ZERO ? -n : n;\n P[\"d\"] = d < C_ZERO ? -d : d;\n};\n\nfunction modpow(b, e, m) {\n\n let r = C_ONE;\n for (; e > C_ZERO; b = (b * b) % m, e >>= C_ONE) {\n\n if (e & C_ONE) {\n r = (r * b) % m;\n }\n }\n return r;\n}\n\nfunction cycleLen(n, d) {\n\n for (; d % C_TWO === C_ZERO;\n d /= C_TWO) {\n }\n\n for (; d % C_FIVE === C_ZERO;\n d /= C_FIVE) {\n }\n\n if (d === C_ONE) // Catch non-cyclic numbers\n return C_ZERO;\n\n // If we would like to compute really large numbers quicker, we could make use of Fermat's little theorem:\n // 10^(d-1) % d == 1\n // However, we don't need such large numbers and MAX_CYCLE_LEN should be the capstone,\n // as we want to translate the numbers to strings.\n\n let rem = C_TEN % d;\n let t = 1;\n\n for (; rem !== C_ONE; t++) {\n rem = rem * C_TEN % d;\n\n if (t > MAX_CYCLE_LEN)\n return C_ZERO; // Returning 0 here means that we don't print it as a cyclic number. It's likely that the answer is `d-1`\n }\n return BigInt(t);\n}\n\nfunction cycleStart(n, d, len) {\n\n let rem1 = C_ONE;\n let rem2 = modpow(C_TEN, len, d);\n\n for (let t = 0; t < 300; t++) { // s < ~log10(Number.MAX_VALUE)\n // Solve 10^s == 10^(s+t) (mod d)\n\n if (rem1 === rem2)\n return BigInt(t);\n\n rem1 = rem1 * C_TEN % d;\n rem2 = rem2 * C_TEN % d;\n }\n return 0;\n}\n\nfunction gcd(a, b) {\n\n if (!a)\n return b;\n if (!b)\n return a;\n\n while (1) {\n a %= b;\n if (!a)\n return b;\n b %= a;\n if (!b)\n return a;\n }\n}\n\n/**\n * Module constructor\n *\n * @constructor\n * @param {number|Fraction=} a\n * @param {number=} b\n */\nfunction Fraction(a, b) {\n\n parse(a, b);\n\n if (this instanceof Fraction) {\n a = gcd(P[\"d\"], P[\"n\"]); // Abuse a\n this[\"s\"] = P[\"s\"];\n this[\"n\"] = P[\"n\"] / a;\n this[\"d\"] = P[\"d\"] / a;\n } else {\n return newFraction(P['s'] * P['n'], P['d']);\n }\n}\n\nvar DivisionByZero = function () { return new Error(\"Division by Zero\"); };\nvar InvalidParameter = function () { return new Error(\"Invalid argument\"); };\nvar NonIntegerParameter = function () { return new Error(\"Parameters must be integer\"); };\n\nFraction.prototype = {\n\n \"s\": C_ONE,\n \"n\": C_ZERO,\n \"d\": C_ONE,\n\n /**\n * Calculates the absolute value\n *\n * Ex: new Fraction(-4).abs() => 4\n **/\n \"abs\": function () {\n\n return newFraction(this[\"n\"], this[\"d\"]);\n },\n\n /**\n * Inverts the sign of the current fraction\n *\n * Ex: new Fraction(-4).neg() => 4\n **/\n \"neg\": function () {\n\n return newFraction(-this[\"s\"] * this[\"n\"], this[\"d\"]);\n },\n\n /**\n * Adds two rational numbers\n *\n * Ex: new Fraction({n: 2, d: 3}).add(\"14.9\") => 467 / 30\n **/\n \"add\": function (a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * this[\"n\"] * P[\"d\"] + P[\"s\"] * this[\"d\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Subtracts two rational numbers\n *\n * Ex: new Fraction({n: 2, d: 3}).add(\"14.9\") => -427 / 30\n **/\n \"sub\": function (a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * this[\"n\"] * P[\"d\"] - P[\"s\"] * this[\"d\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Multiplies two rational numbers\n *\n * Ex: new Fraction(\"-17.(345)\").mul(3) => 5776 / 111\n **/\n \"mul\": function (a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * P[\"s\"] * this[\"n\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Divides two rational numbers\n *\n * Ex: new Fraction(\"-17.(345)\").inverse().div(3)\n **/\n \"div\": function (a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * P[\"s\"] * this[\"n\"] * P[\"d\"],\n this[\"d\"] * P[\"n\"]\n );\n },\n\n /**\n * Clones the actual object\n *\n * Ex: new Fraction(\"-17.(345)\").clone()\n **/\n \"clone\": function () {\n return newFraction(this['s'] * this['n'], this['d']);\n },\n\n /**\n * Calculates the modulo of two rational numbers - a more precise fmod\n *\n * Ex: new Fraction('4.(3)').mod([7, 8]) => (13/3) % (7/8) = (5/6)\n * Ex: new Fraction(20, 10).mod().equals(0) ? \"is Integer\"\n **/\n \"mod\": function (a, b) {\n\n if (a === undefined) {\n return newFraction(this[\"s\"] * this[\"n\"] % this[\"d\"], C_ONE);\n }\n\n parse(a, b);\n if (C_ZERO === P[\"n\"] * this[\"d\"]) {\n throw DivisionByZero();\n }\n\n /*\n * First silly attempt, kinda slow\n *\n return that[\"sub\"]({\n \"n\": num[\"n\"] * Math.floor((this.n / this.d) / (num.n / num.d)),\n \"d\": num[\"d\"],\n \"s\": this[\"s\"]\n });*/\n\n /*\n * New attempt: a1 / b1 = a2 / b2 * q + r\n * => b2 * a1 = a2 * b1 * q + b1 * b2 * r\n * => (b2 * a1 % a2 * b1) / (b1 * b2)\n */\n return newFraction(\n this[\"s\"] * (P[\"d\"] * this[\"n\"]) % (P[\"n\"] * this[\"d\"]),\n P[\"d\"] * this[\"d\"]\n );\n },\n\n /**\n * Calculates the fractional gcd of two rational numbers\n *\n * Ex: new Fraction(5,8).gcd(3,7) => 1/56\n */\n \"gcd\": function (a, b) {\n\n parse(a, b);\n\n // gcd(a / b, c / d) = gcd(a, c) / lcm(b, d)\n\n return newFraction(gcd(P[\"n\"], this[\"n\"]) * gcd(P[\"d\"], this[\"d\"]), P[\"d\"] * this[\"d\"]);\n },\n\n /**\n * Calculates the fractional lcm of two rational numbers\n *\n * Ex: new Fraction(5,8).lcm(3,7) => 15\n */\n \"lcm\": function (a, b) {\n\n parse(a, b);\n\n // lcm(a / b, c / d) = lcm(a, c) / gcd(b, d)\n\n if (P[\"n\"] === C_ZERO && this[\"n\"] === C_ZERO) {\n return newFraction(C_ZERO, C_ONE);\n }\n return newFraction(P[\"n\"] * this[\"n\"], gcd(P[\"n\"], this[\"n\"]) * gcd(P[\"d\"], this[\"d\"]));\n },\n\n /**\n * Gets the inverse of the fraction, means numerator and denominator are exchanged\n *\n * Ex: new Fraction([-3, 4]).inverse() => -4 / 3\n **/\n \"inverse\": function () {\n return newFraction(this[\"s\"] * this[\"d\"], this[\"n\"]);\n },\n\n /**\n * Calculates the fraction to some integer exponent\n *\n * Ex: new Fraction(-1,2).pow(-3) => -8\n */\n \"pow\": function (a, b) {\n\n parse(a, b);\n\n // Trivial case when exp is an integer\n\n if (P['d'] === C_ONE) {\n\n if (P['s'] < C_ZERO) {\n return newFraction((this['s'] * this[\"d\"]) ** P['n'], this[\"n\"] ** P['n']);\n } else {\n return newFraction((this['s'] * this[\"n\"]) ** P['n'], this[\"d\"] ** P['n']);\n }\n }\n\n // Negative roots become complex\n // (-a/b)^(c/d) = x\n // \u21D4 (-1)^(c/d) * (a/b)^(c/d) = x\n // \u21D4 (cos(pi) + i*sin(pi))^(c/d) * (a/b)^(c/d) = x\n // \u21D4 (cos(c*pi/d) + i*sin(c*pi/d)) * (a/b)^(c/d) = x # DeMoivre's formula\n // From which follows that only for c=0 the root is non-complex\n if (this['s'] < C_ZERO) return null;\n\n // Now prime factor n and d\n let N = factorize(this['n']);\n let D = factorize(this['d']);\n\n // Exponentiate and take root for n and d individually\n let n = C_ONE;\n let d = C_ONE;\n for (let k in N) {\n if (k === '1') continue;\n if (k === '0') {\n n = C_ZERO;\n break;\n }\n N[k] *= P['n'];\n\n if (N[k] % P['d'] === C_ZERO) {\n N[k] /= P['d'];\n } else return null;\n n *= BigInt(k) ** N[k];\n }\n\n for (let k in D) {\n if (k === '1') continue;\n D[k] *= P['n'];\n\n if (D[k] % P['d'] === C_ZERO) {\n D[k] /= P['d'];\n } else return null;\n d *= BigInt(k) ** D[k];\n }\n\n if (P['s'] < C_ZERO) {\n return newFraction(d, n);\n }\n return newFraction(n, d);\n },\n\n /**\n * Calculates the logarithm of a fraction to a given rational base\n *\n * Ex: new Fraction(27, 8).log(9, 4) => 3/2\n */\n \"log\": function (a, b) {\n\n parse(a, b);\n\n if (this['s'] <= C_ZERO || P['s'] <= C_ZERO) return null;\n\n const allPrimes = {};\n\n const baseFactors = factorize(P['n']);\n const T1 = factorize(P['d']);\n\n const numberFactors = factorize(this['n']);\n const T2 = factorize(this['d']);\n\n for (const prime in T1) {\n baseFactors[prime] = (baseFactors[prime] || C_ZERO) - T1[prime];\n }\n for (const prime in T2) {\n numberFactors[prime] = (numberFactors[prime] || C_ZERO) - T2[prime];\n }\n\n for (const prime in baseFactors) {\n if (prime === '1') continue;\n allPrimes[prime] = true;\n }\n for (const prime in numberFactors) {\n if (prime === '1') continue;\n allPrimes[prime] = true;\n }\n\n let retN = null;\n let retD = null;\n\n // Iterate over all unique primes to determine if a consistent ratio exists\n for (const prime in allPrimes) {\n\n const baseExponent = baseFactors[prime] || C_ZERO;\n const numberExponent = numberFactors[prime] || C_ZERO;\n\n if (baseExponent === C_ZERO) {\n if (numberExponent !== C_ZERO) {\n return null; // Logarithm cannot be expressed as a rational number\n }\n continue; // Skip this prime since both exponents are zero\n }\n\n // Calculate the ratio of exponents for this prime\n let curN = numberExponent;\n let curD = baseExponent;\n\n // Simplify the current ratio\n const gcdValue = gcd(curN, curD);\n curN /= gcdValue;\n curD /= gcdValue;\n\n // Check if this is the first ratio; otherwise, ensure ratios are consistent\n if (retN === null && retD === null) {\n retN = curN;\n retD = curD;\n } else if (curN * retD !== retN * curD) {\n return null; // Ratios do not match, logarithm cannot be rational\n }\n }\n\n return retN !== null && retD !== null\n ? newFraction(retN, retD)\n : null;\n },\n\n /**\n * Check if two rational numbers are the same\n *\n * Ex: new Fraction(19.6).equals([98, 5]);\n **/\n \"equals\": function (a, b) {\n\n parse(a, b);\n return this[\"s\"] * this[\"n\"] * P[\"d\"] === P[\"s\"] * P[\"n\"] * this[\"d\"];\n },\n\n /**\n * Check if this rational number is less than another\n *\n * Ex: new Fraction(19.6).lt([98, 5]);\n **/\n \"lt\": function (a, b) {\n\n parse(a, b);\n return this[\"s\"] * this[\"n\"] * P[\"d\"] < P[\"s\"] * P[\"n\"] * this[\"d\"];\n },\n\n /**\n * Check if this rational number is less than or equal another\n *\n * Ex: new Fraction(19.6).lt([98, 5]);\n **/\n \"lte\": function (a, b) {\n\n parse(a, b);\n return this[\"s\"] * this[\"n\"] * P[\"d\"] <= P[\"s\"] * P[\"n\"] * this[\"d\"];\n },\n\n /**\n * Check if this rational number is greater than another\n *\n * Ex: new Fraction(19.6).lt([98, 5]);\n **/\n \"gt\": function (a, b) {\n\n parse(a, b);\n return this[\"s\"] * this[\"n\"] * P[\"d\"] > P[\"s\"] * P[\"n\"] * this[\"d\"];\n },\n\n /**\n * Check if this rational number is greater than or equal another\n *\n * Ex: new Fraction(19.6).lt([98, 5]);\n **/\n \"gte\": function (a, b) {\n\n parse(a, b);\n return this[\"s\"] * this[\"n\"] * P[\"d\"] >= P[\"s\"] * P[\"n\"] * this[\"d\"];\n },\n\n /**\n * Compare two rational numbers\n * < 0 iff this < that\n * > 0 iff this > that\n * = 0 iff this = that\n *\n * Ex: new Fraction(19.6).compare([98, 5]);\n **/\n \"compare\": function (a, b) {\n\n parse(a, b);\n let t = this[\"s\"] * this[\"n\"] * P[\"d\"] - P[\"s\"] * P[\"n\"] * this[\"d\"];\n\n return (C_ZERO < t) - (t < C_ZERO);\n },\n\n /**\n * Calculates the ceil of a rational number\n *\n * Ex: new Fraction('4.(3)').ceil() => (5 / 1)\n **/\n \"ceil\": function (places) {\n\n places = C_TEN ** BigInt(places || 0);\n\n return newFraction(trunc(this[\"s\"] * places * this[\"n\"] / this[\"d\"]) +\n (places * this[\"n\"] % this[\"d\"] > C_ZERO && this[\"s\"] >= C_ZERO ? C_ONE : C_ZERO),\n places);\n },\n\n /**\n * Calculates the floor of a rational number\n *\n * Ex: new Fraction('4.(3)').floor() => (4 / 1)\n **/\n \"floor\": function (places) {\n\n places = C_TEN ** BigInt(places || 0);\n\n return newFraction(trunc(this[\"s\"] * places * this[\"n\"] / this[\"d\"]) -\n (places * this[\"n\"] % this[\"d\"] > C_ZERO && this[\"s\"] < C_ZERO ? C_ONE : C_ZERO),\n places);\n },\n\n /**\n * Rounds a rational numbers\n *\n * Ex: new Fraction('4.(3)').round() => (4 / 1)\n **/\n \"round\": function (places) {\n\n places = C_TEN ** BigInt(places || 0);\n\n /* Derivation:\n\n s >= 0:\n round(n / d) = trunc(n / d) + (n % d) / d >= 0.5 ? 1 : 0\n = trunc(n / d) + 2(n % d) >= d ? 1 : 0\n s < 0:\n round(n / d) =-trunc(n / d) - (n % d) / d > 0.5 ? 1 : 0\n =-trunc(n / d) - 2(n % d) > d ? 1 : 0\n\n =>:\n\n round(s * n / d) = s * trunc(n / d) + s * (C + 2(n % d) > d ? 1 : 0)\n where C = s >= 0 ? 1 : 0, to fix the >= for the positve case.\n */\n\n return newFraction(trunc(this[\"s\"] * places * this[\"n\"] / this[\"d\"]) +\n this[\"s\"] * ((this[\"s\"] >= C_ZERO ? C_ONE : C_ZERO) + C_TWO * (places * this[\"n\"] % this[\"d\"]) > this[\"d\"] ? C_ONE : C_ZERO),\n places);\n },\n\n /**\n * Rounds a rational number to a multiple of another rational number\n *\n * Ex: new Fraction('0.9').roundTo(\"1/8\") => 7 / 8\n **/\n \"roundTo\": function (a, b) {\n\n /*\n k * x/y \u2264 a/b < (k+1) * x/y\n \u21D4 k \u2264 a/b / (x/y) < (k+1)\n \u21D4 k = floor(a/b * y/x)\n \u21D4 k = floor((a * y) / (b * x))\n */\n\n parse(a, b);\n\n const n = this['n'] * P['d'];\n const d = this['d'] * P['n'];\n const r = n % d;\n\n // round(n / d) = trunc(n / d) + 2(n % d) >= d ? 1 : 0\n let k = trunc(n / d);\n if (r + r >= d) {\n k++;\n }\n return newFraction(this['s'] * k * P['n'], P['d']);\n },\n\n /**\n * Check if two rational numbers are divisible\n *\n * Ex: new Fraction(19.6).divisible(1.5);\n */\n \"divisible\": function (a, b) {\n\n parse(a, b);\n return !(!(P[\"n\"] * this[\"d\"]) || ((this[\"n\"] * P[\"d\"]) % (P[\"n\"] * this[\"d\"])));\n },\n\n /**\n * Returns a decimal representation of the fraction\n *\n * Ex: new Fraction(\"100.'91823'\").valueOf() => 100.91823918239183\n **/\n 'valueOf': function () {\n // Best we can do so far\n return Number(this[\"s\"] * this[\"n\"]) / Number(this[\"d\"]);\n },\n\n /**\n * Creates a string representation of a fraction with all digits\n *\n * Ex: new Fraction(\"100.'91823'\").toString() => \"100.(91823)\"\n **/\n 'toString': function (dec) {\n\n let N = this[\"n\"];\n let D = this[\"d\"];\n\n dec = dec || 15; // 15 = decimal places when no repetition\n\n let cycLen = cycleLen(N, D); // Cycle length\n let cycOff = cycleStart(N, D, cycLen); // Cycle start\n\n let str = this['s'] < C_ZERO ? \"-\" : \"\";\n\n // Append integer part\n str += trunc(N / D);\n\n N %= D;\n N *= C_TEN;\n\n if (N)\n str += \".\";\n\n if (cycLen) {\n\n for (let i = cycOff; i--;) {\n str += trunc(N / D);\n N %= D;\n N *= C_TEN;\n }\n str += \"(\";\n for (let i = cycLen; i--;) {\n str += trunc(N / D);\n N %= D;\n N *= C_TEN;\n }\n str += \")\";\n } else {\n for (let i = dec; N && i--;) {\n str += trunc(N / D);\n N %= D;\n N *= C_TEN;\n }\n }\n return str;\n },\n\n /**\n * Returns a string-fraction representation of a Fraction object\n *\n * Ex: new Fraction(\"1.'3'\").toFraction() => \"4 1/3\"\n **/\n 'toFraction': function (showMixed) {\n\n let n = this[\"n\"];\n let d = this[\"d\"];\n let str = this['s'] < C_ZERO ? \"-\" : \"\";\n\n if (d === C_ONE) {\n str += n;\n } else {\n let whole = trunc(n / d);\n if (showMixed && whole > C_ZERO) {\n str += whole;\n str += \" \";\n n %= d;\n }\n\n str += n;\n str += '/';\n str += d;\n }\n return str;\n },\n\n /**\n * Returns a latex representation of a Fraction object\n *\n * Ex: new Fraction(\"1.'3'\").toLatex() => \"\\frac{4}{3}\"\n **/\n 'toLatex': function (showMixed) {\n\n let n = this[\"n\"];\n let d = this[\"d\"];\n let str = this['s'] < C_ZERO ? \"-\" : \"\";\n\n if (d === C_ONE) {\n str += n;\n } else {\n let whole = trunc(n / d);\n if (showMixed && whole > C_ZERO) {\n str += whole;\n n %= d;\n }\n\n str += \"\\\\frac{\";\n str += n;\n str += '}{';\n str += d;\n str += '}';\n }\n return str;\n },\n\n /**\n * Returns an array of continued fraction elements\n *\n * Ex: new Fraction(\"7/8\").toContinued() => [0,1,7]\n */\n 'toContinued': function () {\n\n let a = this['n'];\n let b = this['d'];\n let res = [];\n\n do {\n res.push(trunc(a / b));\n let t = a % b;\n a = b;\n b = t;\n } while (a !== C_ONE);\n\n return res;\n },\n\n \"simplify\": function (eps) {\n\n const ieps = BigInt(1 / (eps || 0.001) | 0);\n\n const thisABS = this['abs']();\n const cont = thisABS['toContinued']();\n\n for (let i = 1; i < cont.length; i++) {\n\n let s = newFraction(cont[i - 1], C_ONE);\n for (let k = i - 2; k >= 0; k--) {\n s = s['inverse']()['add'](cont[k]);\n }\n\n let t = s['sub'](thisABS);\n if (t['n'] * ieps < t['d']) { // More robust than Math.abs(t.valueOf()) < eps\n return s['mul'](this['s']);\n }\n }\n return this;\n }\n};\nexport {\n Fraction as default, Fraction\n};\n", "import Fraction from 'fraction.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'Fraction';\nvar dependencies = [];\nexport var createFractionClass = /* #__PURE__ */factory(name, dependencies, () => {\n /**\n * Attach type information\n */\n Object.defineProperty(Fraction, 'name', {\n value: 'Fraction'\n });\n Fraction.prototype.constructor = Fraction;\n Fraction.prototype.type = 'Fraction';\n Fraction.prototype.isFraction = true;\n\n /**\n * Get a JSON representation of a Fraction containing type information\n * @returns {Object} Returns a JSON object structured as:\n * `{\"mathjs\": \"Fraction\", \"n\": \"3\", \"d\": \"8\"}`\n */\n Fraction.prototype.toJSON = function () {\n return {\n mathjs: 'Fraction',\n n: String(this.s * this.n),\n d: String(this.d)\n };\n };\n\n /**\n * Instantiate a Fraction from a JSON object\n * @param {Object} json a JSON object structured as:\n * `{\"mathjs\": \"Fraction\", \"n\": \"3\", \"d\": \"8\"}`\n * @return {BigNumber}\n */\n Fraction.fromJSON = function (json) {\n return new Fraction(json);\n };\n return Fraction;\n}, {\n isClass: true\n});", "import { isBigNumber } from '../../utils/is.js';\nimport { format, sign } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'Range';\nvar dependencies = [];\nexport var createRangeClass = /* #__PURE__ */factory(name, dependencies, () => {\n /**\n * Create a range. A range has a start, step, and end, and contains functions\n * to iterate over the range.\n *\n * A range can be constructed as:\n *\n * const range = new Range(start, end)\n * const range = new Range(start, end, step)\n *\n * To get the result of the range:\n * range.forEach(function (x) {\n * console.log(x)\n * })\n * range.map(function (x) {\n * return math.sin(x)\n * })\n * range.toArray()\n *\n * Example usage:\n *\n * const c = new Range(2, 6) // 2:1:5\n * c.toArray() // [2, 3, 4, 5]\n * const d = new Range(2, -3, -1) // 2:-1:-2\n * d.toArray() // [2, 1, 0, -1, -2]\n *\n * @class Range\n * @constructor Range\n * @param {number} start included lower bound\n * @param {number} end excluded upper bound\n * @param {number} [step] step size, default value is 1\n */\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n var hasStart = start !== null && start !== undefined;\n var hasEnd = end !== null && end !== undefined;\n var hasStep = step !== null && step !== undefined;\n if (hasStart) {\n if (isBigNumber(start)) {\n start = start.toNumber();\n } else if (typeof start !== 'number') {\n throw new TypeError('Parameter start must be a number');\n }\n }\n if (hasEnd) {\n if (isBigNumber(end)) {\n end = end.toNumber();\n } else if (typeof end !== 'number') {\n throw new TypeError('Parameter end must be a number');\n }\n }\n if (hasStep) {\n if (isBigNumber(step)) {\n step = step.toNumber();\n } else if (typeof step !== 'number') {\n throw new TypeError('Parameter step must be a number');\n }\n }\n this.start = hasStart ? parseFloat(start) : 0;\n this.end = hasEnd ? parseFloat(end) : 0;\n this.step = hasStep ? parseFloat(step) : 1;\n }\n\n /**\n * Attach type information\n */\n Range.prototype.type = 'Range';\n Range.prototype.isRange = true;\n\n /**\n * Parse a string into a range,\n * The string contains the start, optional step, and end, separated by a colon.\n * If the string does not contain a valid range, null is returned.\n * For example str='0:2:11'.\n * @memberof Range\n * @param {string} str\n * @return {Range | null} range\n */\n Range.parse = function (str) {\n if (typeof str !== 'string') {\n return null;\n }\n var args = str.split(':');\n var nums = args.map(function (arg) {\n return parseFloat(arg);\n });\n var invalid = nums.some(function (num) {\n return isNaN(num);\n });\n if (invalid) {\n return null;\n }\n switch (nums.length) {\n case 2:\n return new Range(nums[0], nums[1]);\n case 3:\n return new Range(nums[0], nums[2], nums[1]);\n default:\n return null;\n }\n };\n\n /**\n * Create a clone of the range\n * @return {Range} clone\n */\n Range.prototype.clone = function () {\n return new Range(this.start, this.end, this.step);\n };\n\n /**\n * Retrieve the size of the range.\n * Returns an array containing one number, the number of elements in the range.\n * @memberof Range\n * @returns {number[]} size\n */\n Range.prototype.size = function () {\n var len = 0;\n var start = this.start;\n var step = this.step;\n var end = this.end;\n var diff = end - start;\n if (sign(step) === sign(diff)) {\n len = Math.ceil(diff / step);\n } else if (diff === 0) {\n len = 0;\n }\n if (isNaN(len)) {\n len = 0;\n }\n return [len];\n };\n\n /**\n * Calculate the minimum value in the range\n * @memberof Range\n * @return {number | undefined} min\n */\n Range.prototype.min = function () {\n var size = this.size()[0];\n if (size > 0) {\n if (this.step > 0) {\n // positive step\n return this.start;\n } else {\n // negative step\n return this.start + (size - 1) * this.step;\n }\n } else {\n return undefined;\n }\n };\n\n /**\n * Calculate the maximum value in the range\n * @memberof Range\n * @return {number | undefined} max\n */\n Range.prototype.max = function () {\n var size = this.size()[0];\n if (size > 0) {\n if (this.step > 0) {\n // positive step\n return this.start + (size - 1) * this.step;\n } else {\n // negative step\n return this.start;\n }\n } else {\n return undefined;\n }\n };\n\n /**\n * Execute a callback function for each value in the range.\n * @memberof Range\n * @param {function} callback The callback method is invoked with three\n * parameters: the value of the element, the index\n * of the element, and the Range being traversed.\n */\n Range.prototype.forEach = function (callback) {\n var x = this.start;\n var step = this.step;\n var end = this.end;\n var i = 0;\n if (step > 0) {\n while (x < end) {\n callback(x, [i], this);\n x += step;\n i++;\n }\n } else if (step < 0) {\n while (x > end) {\n callback(x, [i], this);\n x += step;\n i++;\n }\n }\n };\n\n /**\n * Execute a callback function for each value in the Range, and return the\n * results as an array\n * @memberof Range\n * @param {function} callback The callback method is invoked with three\n * parameters: the value of the element, the index\n * of the element, and the Matrix being traversed.\n * @returns {Array} array\n */\n Range.prototype.map = function (callback) {\n var array = [];\n this.forEach(function (value, index, obj) {\n array[index[0]] = callback(value, index, obj);\n });\n return array;\n };\n\n /**\n * Create an Array with a copy of the Ranges data\n * @memberof Range\n * @returns {Array} array\n */\n Range.prototype.toArray = function () {\n var array = [];\n this.forEach(function (value, index) {\n array[index[0]] = value;\n });\n return array;\n };\n\n /**\n * Get the primitive value of the Range, a one dimensional array\n * @memberof Range\n * @returns {Array} array\n */\n Range.prototype.valueOf = function () {\n // TODO: implement a caching mechanism for range.valueOf()\n return this.toArray();\n };\n\n /**\n * Get a string representation of the range, with optional formatting options.\n * Output is formatted as 'start:step:end', for example '2:6' or '0:0.2:11'\n * @memberof Range\n * @param {Object | number | function} [options] Formatting options. See\n * lib/utils/number:format for a\n * description of the available\n * options.\n * @returns {string} str\n */\n Range.prototype.format = function (options) {\n var str = format(this.start, options);\n if (this.step !== 1) {\n str += ':' + format(this.step, options);\n }\n str += ':' + format(this.end, options);\n return str;\n };\n\n /**\n * Get a string representation of the range.\n * @memberof Range\n * @returns {string}\n */\n Range.prototype.toString = function () {\n return this.format();\n };\n\n /**\n * Get a JSON representation of the range\n * @memberof Range\n * @returns {Object} Returns a JSON object structured as:\n * `{\"mathjs\": \"Range\", \"start\": 2, \"end\": 4, \"step\": 1}`\n */\n Range.prototype.toJSON = function () {\n return {\n mathjs: 'Range',\n start: this.start,\n end: this.end,\n step: this.step\n };\n };\n\n /**\n * Instantiate a Range from a JSON object\n * @memberof Range\n * @param {Object} json A JSON object structured as:\n * `{\"mathjs\": \"Range\", \"start\": 2, \"end\": 4, \"step\": 1}`\n * @return {Range}\n */\n Range.fromJSON = function (json) {\n return new Range(json.start, json.end, json.step);\n };\n return Range;\n}, {\n isClass: true\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'Matrix';\nvar dependencies = [];\nexport var createMatrixClass = /* #__PURE__ */factory(name, dependencies, () => {\n /**\n * @constructor Matrix\n *\n * A Matrix is a wrapper around an Array. A matrix can hold a multi dimensional\n * array. A matrix can be constructed as:\n *\n * let matrix = math.matrix(data)\n *\n * Matrix contains the functions to resize, get and set values, get the size,\n * clone the matrix and to convert the matrix to a vector, array, or scalar.\n * Furthermore, one can iterate over the matrix using map and forEach.\n * The internal Array of the Matrix can be accessed using the function valueOf.\n *\n * Example usage:\n *\n * let matrix = math.matrix([[1, 2], [3, 4]])\n * matix.size() // [2, 2]\n * matrix.resize([3, 2], 5)\n * matrix.valueOf() // [[1, 2], [3, 4], [5, 5]]\n * matrix.subset([1,2]) // 3 (indexes are zero-based)\n *\n */\n function Matrix() {\n if (!(this instanceof Matrix)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n }\n\n /**\n * Attach type information\n */\n Matrix.prototype.type = 'Matrix';\n Matrix.prototype.isMatrix = true;\n\n /**\n * Get the storage format used by the matrix.\n *\n * Usage:\n * const format = matrix.storage() // retrieve storage format\n *\n * @return {string} The storage format.\n */\n Matrix.prototype.storage = function () {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke storage on a Matrix interface');\n };\n\n /**\n * Get the datatype of the data stored in the matrix.\n *\n * Usage:\n * const format = matrix.datatype() // retrieve matrix datatype\n *\n * @return {string} The datatype.\n */\n Matrix.prototype.datatype = function () {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke datatype on a Matrix interface');\n };\n\n /**\n * Create a new Matrix With the type of the current matrix instance\n * @param {Array | Object} data\n * @param {string} [datatype]\n */\n Matrix.prototype.create = function (data, datatype) {\n throw new Error('Cannot invoke create on a Matrix interface');\n };\n\n /**\n * Get a subset of the matrix, or replace a subset of the matrix.\n *\n * Usage:\n * const subset = matrix.subset(index) // retrieve subset\n * const value = matrix.subset(index, replacement) // replace subset\n *\n * @param {Index} index\n * @param {Array | Matrix | *} [replacement]\n * @param {*} [defaultValue=0] Default value, filled in on new entries when\n * the matrix is resized. If not provided,\n * new matrix elements will be filled with zeros.\n */\n Matrix.prototype.subset = function (index, replacement, defaultValue) {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke subset on a Matrix interface');\n };\n\n /**\n * Get a single element from the matrix.\n * @param {number[]} index Zero-based index\n * @return {*} value\n */\n Matrix.prototype.get = function (index) {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke get on a Matrix interface');\n };\n\n /**\n * Replace a single element in the matrix.\n * @param {number[]} index Zero-based index\n * @param {*} value\n * @param {*} [defaultValue] Default value, filled in on new entries when\n * the matrix is resized. If not provided,\n * new matrix elements will be left undefined.\n * @return {Matrix} self\n */\n Matrix.prototype.set = function (index, value, defaultValue) {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke set on a Matrix interface');\n };\n\n /**\n * Resize the matrix to the given size. Returns a copy of the matrix when\n * `copy=true`, otherwise return the matrix itself (resize in place).\n *\n * @param {number[]} size The new size the matrix should have.\n * @param {*} [defaultValue=0] Default value, filled in on new entries.\n * If not provided, the matrix elements will\n * be filled with zeros.\n * @param {boolean} [copy] Return a resized copy of the matrix\n *\n * @return {Matrix} The resized matrix\n */\n Matrix.prototype.resize = function (size, defaultValue) {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke resize on a Matrix interface');\n };\n\n /**\n * Reshape the matrix to the given size. Returns a copy of the matrix when\n * `copy=true`, otherwise return the matrix itself (reshape in place).\n *\n * @param {number[]} size The new size the matrix should have.\n * @param {boolean} [copy] Return a reshaped copy of the matrix\n *\n * @return {Matrix} The reshaped matrix\n */\n Matrix.prototype.reshape = function (size, defaultValue) {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke reshape on a Matrix interface');\n };\n\n /**\n * Create a clone of the matrix\n * @return {Matrix} clone\n */\n Matrix.prototype.clone = function () {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke clone on a Matrix interface');\n };\n\n /**\n * Retrieve the size of the matrix.\n * @returns {number[]} size\n */\n Matrix.prototype.size = function () {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke size on a Matrix interface');\n };\n\n /**\n * Create a new matrix with the results of the callback function executed on\n * each entry of the matrix.\n * @param {Function} callback The callback function is invoked with three\n * parameters: the value of the element, the index\n * of the element, and the Matrix being traversed.\n * @param {boolean} [skipZeros] Invoke callback function for non-zero values only.\n *\n * @return {Matrix} matrix\n */\n Matrix.prototype.map = function (callback, skipZeros) {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke map on a Matrix interface');\n };\n\n /**\n * Execute a callback function on each entry of the matrix.\n * @param {Function} callback The callback function is invoked with three\n * parameters: the value of the element, the index\n * of the element, and the Matrix being traversed.\n */\n Matrix.prototype.forEach = function (callback) {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke forEach on a Matrix interface');\n };\n\n /**\n * Iterate over the matrix elements\n * @return {Iterable<{ value, index: number[] }>}\n */\n Matrix.prototype[Symbol.iterator] = function () {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot iterate a Matrix interface');\n };\n\n /**\n * Create an Array with a copy of the data of the Matrix\n * @returns {Array} array\n */\n Matrix.prototype.toArray = function () {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke toArray on a Matrix interface');\n };\n\n /**\n * Get the primitive value of the Matrix: a multidimensional array\n * @returns {Array} array\n */\n Matrix.prototype.valueOf = function () {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke valueOf on a Matrix interface');\n };\n\n /**\n * Get a string representation of the matrix, with optional formatting options.\n * @param {Object | number | Function} [options] Formatting options. See\n * lib/utils/number:format for a\n * description of the available\n * options.\n * @returns {string} str\n */\n Matrix.prototype.format = function (options) {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke format on a Matrix interface');\n };\n\n /**\n * Get a string representation of the matrix\n * @returns {string} str\n */\n Matrix.prototype.toString = function () {\n // must be implemented by each of the Matrix implementations\n throw new Error('Cannot invoke toString on a Matrix interface');\n };\n return Matrix;\n}, {\n isClass: true\n});", "import { isBigNumber, isNumber } from '../is.js';\nimport { isInteger, normalizeFormatOptions } from '../number.js';\n\n/**\n * Formats a BigNumber in a given base\n * @param {BigNumber} n\n * @param {number} base\n * @param {number} size\n * @returns {string}\n */\nfunction formatBigNumberToBase(n, base, size) {\n var BigNumberCtor = n.constructor;\n var big2 = new BigNumberCtor(2);\n var suffix = '';\n if (size) {\n if (size < 1) {\n throw new Error('size must be in greater than 0');\n }\n if (!isInteger(size)) {\n throw new Error('size must be an integer');\n }\n if (n.greaterThan(big2.pow(size - 1).sub(1)) || n.lessThan(big2.pow(size - 1).mul(-1))) {\n throw new Error(\"Value must be in range [-2^\".concat(size - 1, \", 2^\").concat(size - 1, \"-1]\"));\n }\n if (!n.isInteger()) {\n throw new Error('Value must be an integer');\n }\n if (n.lessThan(0)) {\n n = n.add(big2.pow(size));\n }\n suffix = \"i\".concat(size);\n }\n switch (base) {\n case 2:\n return \"\".concat(n.toBinary()).concat(suffix);\n case 8:\n return \"\".concat(n.toOctal()).concat(suffix);\n case 16:\n return \"\".concat(n.toHexadecimal()).concat(suffix);\n default:\n throw new Error(\"Base \".concat(base, \" not supported \"));\n }\n}\n\n/**\n * Convert a BigNumber to a formatted string representation.\n *\n * Syntax:\n *\n * format(value)\n * format(value, options)\n * format(value, precision)\n * format(value, fn)\n *\n * Where:\n *\n * {number} value The value to be formatted\n * {Object} options An object with formatting options. Available options:\n * {string} notation\n * Number notation. Choose from:\n * 'fixed' Always use regular number notation.\n * For example '123.40' and '14000000'\n * 'exponential' Always use exponential notation.\n * For example '1.234e+2' and '1.4e+7'\n * 'auto' (default) Regular number notation for numbers\n * having an absolute value between\n * `lower` and `upper` bounds, and uses\n * exponential notation elsewhere.\n * Lower bound is included, upper bound\n * is excluded.\n * For example '123.4' and '1.4e7'.\n * 'bin', 'oct, or\n * 'hex' Format the number using binary, octal,\n * or hexadecimal notation.\n * For example '0b1101' and '0x10fe'.\n * {number} wordSize The word size in bits to use for formatting\n * in binary, octal, or hexadecimal notation.\n * To be used only with 'bin', 'oct', or 'hex'\n * values for 'notation' option. When this option\n * is defined the value is formatted as a signed\n * twos complement integer of the given word size\n * and the size suffix is appended to the output.\n * For example\n * format(-1, {notation: 'hex', wordSize: 8}) === '0xffi8'.\n * Default value is undefined.\n * {number} precision A number between 0 and 16 to round\n * the digits of the number.\n * In case of notations 'exponential',\n * 'engineering', and 'auto',\n * `precision` defines the total\n * number of significant digits returned.\n * In case of notation 'fixed',\n * `precision` defines the number of\n * significant digits after the decimal\n * point.\n * `precision` is undefined by default.\n * {number} lowerExp Exponent determining the lower boundary\n * for formatting a value with an exponent\n * when `notation='auto`.\n * Default value is `-3`.\n * {number} upperExp Exponent determining the upper boundary\n * for formatting a value with an exponent\n * when `notation='auto`.\n * Default value is `5`.\n * {Function} fn A custom formatting function. Can be used to override the\n * built-in notations. Function `fn` is called with `value` as\n * parameter and must return a string. Is useful for example to\n * format all values inside a matrix in a particular way.\n *\n * Examples:\n *\n * format(6.4) // '6.4'\n * format(1240000) // '1.24e6'\n * format(1/3) // '0.3333333333333333'\n * format(1/3, 3) // '0.333'\n * format(21385, 2) // '21000'\n * format(12e8, {notation: 'fixed'}) // returns '1200000000'\n * format(2.3, {notation: 'fixed', precision: 4}) // returns '2.3000'\n * format(52.8, {notation: 'exponential'}) // returns '5.28e+1'\n * format(12400, {notation: 'engineering'}) // returns '12.400e+3'\n *\n * @param {BigNumber} value\n * @param {Object | Function | number | BigNumber} [options]\n * @return {string} str The formatted value\n */\nexport function format(value, options) {\n if (typeof options === 'function') {\n // handle format(value, fn)\n return options(value);\n }\n\n // handle special cases\n if (!value.isFinite()) {\n return value.isNaN() ? 'NaN' : value.gt(0) ? 'Infinity' : '-Infinity';\n }\n var {\n notation,\n precision,\n wordSize\n } = normalizeFormatOptions(options);\n\n // handle the various notations\n switch (notation) {\n case 'fixed':\n return toFixed(value, precision);\n case 'exponential':\n return toExponential(value, precision);\n case 'engineering':\n return toEngineering(value, precision);\n case 'bin':\n return formatBigNumberToBase(value, 2, wordSize);\n case 'oct':\n return formatBigNumberToBase(value, 8, wordSize);\n case 'hex':\n return formatBigNumberToBase(value, 16, wordSize);\n case 'auto':\n {\n // determine lower and upper bound for exponential notation.\n // TODO: implement support for upper and lower to be BigNumbers themselves\n var lowerExp = _toNumberOrDefault(options === null || options === void 0 ? void 0 : options.lowerExp, -3);\n var upperExp = _toNumberOrDefault(options === null || options === void 0 ? void 0 : options.upperExp, 5);\n\n // handle special case zero\n if (value.isZero()) return '0';\n\n // determine whether or not to output exponential notation\n var str;\n var rounded = value.toSignificantDigits(precision);\n var exp = rounded.e;\n if (exp >= lowerExp && exp < upperExp) {\n // normal number notation\n str = rounded.toFixed();\n } else {\n // exponential notation\n str = toExponential(value, precision);\n }\n\n // remove trailing zeros after the decimal point\n return str.replace(/((\\.\\d*?)(0+))($|e)/, function () {\n var digits = arguments[2];\n var e = arguments[4];\n return digits !== '.' ? digits + e : e;\n });\n }\n default:\n throw new Error('Unknown notation \"' + notation + '\". ' + 'Choose \"auto\", \"exponential\", \"fixed\", \"bin\", \"oct\", or \"hex.');\n }\n}\n\n/**\n * Format a BigNumber in engineering notation. Like '1.23e+6', '2.3e+0', '3.500e-3'\n * @param {BigNumber} value\n * @param {number} [precision] Optional number of significant figures to return.\n */\nexport function toEngineering(value, precision) {\n // find nearest lower multiple of 3 for exponent\n var e = value.e;\n var newExp = e % 3 === 0 ? e : e < 0 ? e - 3 - e % 3 : e - e % 3;\n\n // find difference in exponents, and calculate the value without exponent\n var valueWithoutExp = value.mul(Math.pow(10, -newExp));\n var valueStr = valueWithoutExp.toPrecision(precision);\n if (valueStr.includes('e')) {\n var BigNumber = value.constructor;\n valueStr = new BigNumber(valueStr).toFixed();\n }\n return valueStr + 'e' + (e >= 0 ? '+' : '') + newExp.toString();\n}\n\n/**\n * Format a number in exponential notation. Like '1.23e+5', '2.3e+0', '3.500e-3'\n * @param {BigNumber} value\n * @param {number} [precision] Number of digits in formatted output.\n * If not provided, the maximum available digits\n * is used.\n * @returns {string} str\n */\nexport function toExponential(value, precision) {\n if (precision !== undefined) {\n return value.toExponential(precision - 1); // Note the offset of one\n } else {\n return value.toExponential();\n }\n}\n\n/**\n * Format a number with fixed notation.\n * @param {BigNumber} value\n * @param {number} [precision=undefined] Optional number of decimals after the\n * decimal point. Undefined by default.\n */\nexport function toFixed(value, precision) {\n return value.toFixed(precision);\n}\nfunction _toNumberOrDefault(value, defaultValue) {\n if (isNumber(value)) {\n return value;\n } else if (isBigNumber(value)) {\n return value.toNumber();\n } else {\n return defaultValue;\n }\n}", "import { isBigNumber, isString, typeOf } from './is.js';\nimport { format as formatNumber } from './number.js';\nimport { format as formatBigNumber } from './bignumber/formatter.js';\n\n/**\n * Check if a text ends with a certain string.\n * @param {string} text\n * @param {string} search\n */\nexport function endsWith(text, search) {\n var start = text.length - search.length;\n var end = text.length;\n return text.substring(start, end) === search;\n}\n\n/**\n * Format a value of any type into a string.\n *\n * Usage:\n * math.format(value)\n * math.format(value, precision)\n * math.format(value, options)\n *\n * When value is a function:\n *\n * - When the function has a property `syntax`, it returns this\n * syntax description.\n * - In other cases, a string `'function'` is returned.\n *\n * When `value` is an Object:\n *\n * - When the object contains a property `format` being a function, this\n * function is invoked as `value.format(options)` and the result is returned.\n * - When the object has its own `toString` method, this method is invoked\n * and the result is returned.\n * - In other cases the function will loop over all object properties and\n * return JSON object notation like '{\"a\": 2, \"b\": 3}'.\n *\n * Example usage:\n * math.format(2/7) // '0.2857142857142857'\n * math.format(math.pi, 3) // '3.14'\n * math.format(new Complex(2, 3)) // '2 + 3i'\n * math.format('hello') // '\"hello\"'\n *\n * @param {*} value Value to be stringified\n * @param {Object | number | Function} [options]\n * Formatting options. See src/utils/number.js:format for a\n * description of the available options controlling number output.\n * This generic \"format\" also supports the option property `truncate: NN`\n * giving the maximum number NN of characters to return (if there would\n * have been more, they are deleted and replaced by an ellipsis).\n * @return {string} str\n */\nexport function format(value, options) {\n var result = _format(value, options);\n if (options && typeof options === 'object' && 'truncate' in options && result.length > options.truncate) {\n return result.substring(0, options.truncate - 3) + '...';\n }\n return result;\n}\nfunction _format(value, options) {\n if (typeof value === 'number') {\n return formatNumber(value, options);\n }\n if (isBigNumber(value)) {\n return formatBigNumber(value, options);\n }\n\n // note: we use unsafe duck-typing here to check for Fractions, this is\n // ok here since we're only invoking toString or concatenating its values\n if (looksLikeFraction(value)) {\n if (!options || options.fraction !== 'decimal') {\n // output as ratio, like '1/3'\n return \"\".concat(value.s * value.n, \"/\").concat(value.d);\n } else {\n // output as decimal, like '0.(3)'\n return value.toString();\n }\n }\n if (Array.isArray(value)) {\n return formatArray(value, options);\n }\n if (isString(value)) {\n return stringify(value);\n }\n if (typeof value === 'function') {\n return value.syntax ? String(value.syntax) : 'function';\n }\n if (value && typeof value === 'object') {\n if (typeof value.format === 'function') {\n return value.format(options);\n } else if (value && value.toString(options) !== {}.toString()) {\n // this object has a non-native toString method, use that one\n return value.toString(options);\n } else {\n var entries = Object.keys(value).map(key => {\n return stringify(key) + ': ' + format(value[key], options);\n });\n return '{' + entries.join(', ') + '}';\n }\n }\n return String(value);\n}\n\n/**\n * Stringify a value into a string enclosed in double quotes.\n * Unescaped double quotes and backslashes inside the value are escaped.\n * @param {*} value\n * @return {string}\n */\nexport function stringify(value) {\n var text = String(value);\n var escaped = '';\n var i = 0;\n while (i < text.length) {\n var c = text.charAt(i);\n escaped += c in controlCharacters ? controlCharacters[c] : c;\n i++;\n }\n return '\"' + escaped + '\"';\n}\nvar controlCharacters = {\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\',\n '\\b': '\\\\b',\n '\\f': '\\\\f',\n '\\n': '\\\\n',\n '\\r': '\\\\r',\n '\\t': '\\\\t'\n};\n\n/**\n * Escape special HTML characters\n * @param {*} value\n * @return {string}\n */\nexport function escape(value) {\n var text = String(value);\n text = text.replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(//g, '>');\n return text;\n}\n\n/**\n * Recursively format an n-dimensional matrix\n * Example output: \"[[1, 2], [3, 4]]\"\n * @param {Array} array\n * @param {Object | number | Function} [options] Formatting options. See\n * lib/utils/number:format for a\n * description of the available\n * options.\n * @returns {string} str\n */\nfunction formatArray(array, options) {\n if (Array.isArray(array)) {\n var str = '[';\n var len = array.length;\n for (var i = 0; i < len; i++) {\n if (i !== 0) {\n str += ', ';\n }\n str += formatArray(array[i], options);\n }\n str += ']';\n return str;\n } else {\n return format(array, options);\n }\n}\n\n/**\n * Check whether a value looks like a Fraction (unsafe duck-type check)\n * @param {*} value\n * @return {boolean}\n */\nfunction looksLikeFraction(value) {\n return value && typeof value === 'object' && typeof value.s === 'bigint' && typeof value.n === 'bigint' && typeof value.d === 'bigint' || false;\n}\n\n/**\n * Compare two strings\n * @param {string} x\n * @param {string} y\n * @returns {number}\n */\nexport function compareText(x, y) {\n // we don't want to convert numbers to string, only accept string input\n if (!isString(x)) {\n throw new TypeError('Unexpected type of argument in function compareText ' + '(expected: string or Array or Matrix, actual: ' + typeOf(x) + ', index: 0)');\n }\n if (!isString(y)) {\n throw new TypeError('Unexpected type of argument in function compareText ' + '(expected: string or Array or Matrix, actual: ' + typeOf(y) + ', index: 1)');\n }\n return x === y ? 0 : x > y ? 1 : -1;\n}", "/**\n * Create a range error with the message:\n * 'Dimension mismatch ( != )'\n * @param {number | number[]} actual The actual size\n * @param {number | number[]} expected The expected size\n * @param {string} [relation='!='] Optional relation between actual\n * and expected size: '!=', '<', etc.\n * @extends RangeError\n */\nexport function DimensionError(actual, expected, relation) {\n if (!(this instanceof DimensionError)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n this.actual = actual;\n this.expected = expected;\n this.relation = relation;\n this.message = 'Dimension mismatch (' + (Array.isArray(actual) ? '[' + actual.join(', ') + ']' : actual) + ' ' + (this.relation || '!=') + ' ' + (Array.isArray(expected) ? '[' + expected.join(', ') + ']' : expected) + ')';\n this.stack = new Error().stack;\n}\nDimensionError.prototype = new RangeError();\nDimensionError.prototype.constructor = RangeError;\nDimensionError.prototype.name = 'DimensionError';\nDimensionError.prototype.isDimensionError = true;", "/**\n * Create a range error with the message:\n * 'Index out of range (index < min)'\n * 'Index out of range (index < max)'\n *\n * @param {number} index The actual index\n * @param {number} [min=0] Minimum index (included)\n * @param {number} [max] Maximum index (excluded)\n * @extends RangeError\n */\nexport function IndexError(index, min, max) {\n if (!(this instanceof IndexError)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n this.index = index;\n if (arguments.length < 3) {\n this.min = 0;\n this.max = min;\n } else {\n this.min = min;\n this.max = max;\n }\n if (this.min !== undefined && this.index < this.min) {\n this.message = 'Index out of range (' + this.index + ' < ' + this.min + ')';\n } else if (this.max !== undefined && this.index >= this.max) {\n this.message = 'Index out of range (' + this.index + ' > ' + (this.max - 1) + ')';\n } else {\n this.message = 'Index out of range (' + this.index + ')';\n }\n this.stack = new Error().stack;\n}\nIndexError.prototype = new RangeError();\nIndexError.prototype.constructor = RangeError;\nIndexError.prototype.name = 'IndexError';\nIndexError.prototype.isIndexError = true;", "import _extends from \"@babel/runtime/helpers/extends\";\nimport { isInteger } from './number.js';\nimport { isNumber, isBigNumber, isArray, isString } from './is.js';\nimport { format } from './string.js';\nimport { DimensionError } from '../error/DimensionError.js';\nimport { IndexError } from '../error/IndexError.js';\nimport { deepStrictEqual } from './object.js';\n\n/**\n * Calculate the size of a multi dimensional array.\n * This function checks the size of the first entry, it does not validate\n * whether all dimensions match. (use function `validate` for that)\n * @param {Array} x\n * @Return {Number[]} size\n */\nexport function arraySize(x) {\n var s = [];\n while (Array.isArray(x)) {\n s.push(x.length);\n x = x[0];\n }\n return s;\n}\n\n/**\n * Recursively validate whether each element in a multi dimensional array\n * has a size corresponding to the provided size array.\n * @param {Array} array Array to be validated\n * @param {number[]} size Array with the size of each dimension\n * @param {number} dim Current dimension\n * @throws DimensionError\n * @private\n */\nfunction _validate(array, size, dim) {\n var i;\n var len = array.length;\n if (len !== size[dim]) {\n throw new DimensionError(len, size[dim]);\n }\n if (dim < size.length - 1) {\n // recursively validate each child array\n var dimNext = dim + 1;\n for (i = 0; i < len; i++) {\n var child = array[i];\n if (!Array.isArray(child)) {\n throw new DimensionError(size.length - 1, size.length, '<');\n }\n _validate(array[i], size, dimNext);\n }\n } else {\n // last dimension. none of the childs may be an array\n for (i = 0; i < len; i++) {\n if (Array.isArray(array[i])) {\n throw new DimensionError(size.length + 1, size.length, '>');\n }\n }\n }\n}\n\n/**\n * Validate whether each element in a multi dimensional array has\n * a size corresponding to the provided size array.\n * @param {Array} array Array to be validated\n * @param {number[]} size Array with the size of each dimension\n * @throws DimensionError\n */\nexport function validate(array, size) {\n var isScalar = size.length === 0;\n if (isScalar) {\n // scalar\n if (Array.isArray(array)) {\n throw new DimensionError(array.length, 0);\n }\n } else {\n // array\n _validate(array, size, 0);\n }\n}\n\n/**\n * Validate whether the source of the index matches the size of the Array\n * @param {Array | Matrix} array Array to be validated\n * @param {Index} index Index with the source information to validate\n * @throws DimensionError\n */\nexport function validateIndexSourceSize(value, index) {\n var valueSize = value.isMatrix ? value._size : arraySize(value);\n var sourceSize = index._sourceSize;\n // checks if the source size is not null and matches the valueSize\n sourceSize.forEach((sourceDim, i) => {\n if (sourceDim !== null && sourceDim !== valueSize[i]) {\n throw new DimensionError(sourceDim, valueSize[i]);\n }\n });\n}\n\n/**\n * Test whether index is an integer number with index >= 0 and index < length\n * when length is provided\n * @param {number} index Zero-based index\n * @param {number} [length] Length of the array\n */\nexport function validateIndex(index, length) {\n if (index !== undefined) {\n if (!isNumber(index) || !isInteger(index)) {\n throw new TypeError('Index must be an integer (value: ' + index + ')');\n }\n if (index < 0 || typeof length === 'number' && index >= length) {\n throw new IndexError(index, length);\n }\n }\n}\n\n/**\n * Test if and index has empty values\n * @param {number} index Zero-based index\n */\nexport function isEmptyIndex(index) {\n for (var i = 0; i < index._dimensions.length; ++i) {\n var dimension = index._dimensions[i];\n if (dimension._data && isArray(dimension._data)) {\n if (dimension._size[0] === 0) {\n return true;\n }\n } else if (dimension.isRange) {\n if (dimension.start === dimension.end) {\n return true;\n }\n } else if (isString(dimension)) {\n if (dimension.length === 0) {\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * Resize a multi dimensional array. The resized array is returned.\n * @param {Array | number} array Array to be resized\n * @param {number[]} size Array with the size of each dimension\n * @param {*} [defaultValue=0] Value to be filled in in new entries,\n * zero by default. Specify for example `null`,\n * to clearly see entries that are not explicitly\n * set.\n * @return {Array} array The resized array\n */\nexport function resize(array, size, defaultValue) {\n // check the type of the arguments\n if (!Array.isArray(size)) {\n throw new TypeError('Array expected');\n }\n if (size.length === 0) {\n throw new Error('Resizing to scalar is not supported');\n }\n\n // check whether size contains positive integers\n size.forEach(function (value) {\n if (!isNumber(value) || !isInteger(value) || value < 0) {\n throw new TypeError('Invalid size, must contain positive integers ' + '(size: ' + format(size) + ')');\n }\n });\n\n // convert number to an array\n if (isNumber(array) || isBigNumber(array)) {\n array = [array];\n }\n\n // recursively resize the array\n var _defaultValue = defaultValue !== undefined ? defaultValue : 0;\n _resize(array, size, 0, _defaultValue);\n return array;\n}\n\n/**\n * Recursively resize a multi dimensional array\n * @param {Array} array Array to be resized\n * @param {number[]} size Array with the size of each dimension\n * @param {number} dim Current dimension\n * @param {*} [defaultValue] Value to be filled in in new entries,\n * undefined by default.\n * @private\n */\nfunction _resize(array, size, dim, defaultValue) {\n var i;\n var elem;\n var oldLen = array.length;\n var newLen = size[dim];\n var minLen = Math.min(oldLen, newLen);\n\n // apply new length\n array.length = newLen;\n if (dim < size.length - 1) {\n // non-last dimension\n var dimNext = dim + 1;\n\n // resize existing child arrays\n for (i = 0; i < minLen; i++) {\n // resize child array\n elem = array[i];\n if (!Array.isArray(elem)) {\n elem = [elem]; // add a dimension\n array[i] = elem;\n }\n _resize(elem, size, dimNext, defaultValue);\n }\n\n // create new child arrays\n for (i = minLen; i < newLen; i++) {\n // get child array\n elem = [];\n array[i] = elem;\n\n // resize new child array\n _resize(elem, size, dimNext, defaultValue);\n }\n } else {\n // last dimension\n\n // remove dimensions of existing values\n for (i = 0; i < minLen; i++) {\n while (Array.isArray(array[i])) {\n array[i] = array[i][0];\n }\n }\n\n // fill new elements with the default value\n for (i = minLen; i < newLen; i++) {\n array[i] = defaultValue;\n }\n }\n}\n\n/**\n * Re-shape a multi dimensional array to fit the specified dimensions\n * @param {Array} array Array to be reshaped\n * @param {number[]} sizes List of sizes for each dimension\n * @returns {Array} Array whose data has been formatted to fit the\n * specified dimensions\n *\n * @throws {DimensionError} If the product of the new dimension sizes does\n * not equal that of the old ones\n */\nexport function reshape(array, sizes) {\n var flatArray = flatten(array);\n var currentLength = flatArray.length;\n if (!Array.isArray(array) || !Array.isArray(sizes)) {\n throw new TypeError('Array expected');\n }\n if (sizes.length === 0) {\n throw new DimensionError(0, currentLength, '!=');\n }\n sizes = processSizesWildcard(sizes, currentLength);\n var newLength = product(sizes);\n if (currentLength !== newLength) {\n throw new DimensionError(newLength, currentLength, '!=');\n }\n try {\n return _reshape(flatArray, sizes);\n } catch (e) {\n if (e instanceof DimensionError) {\n throw new DimensionError(newLength, currentLength, '!=');\n }\n throw e;\n }\n}\n\n/**\n * Replaces the wildcard -1 in the sizes array.\n * @param {number[]} sizes List of sizes for each dimension. At most on wildcard.\n * @param {number} currentLength Number of elements in the array.\n * @throws {Error} If more than one wildcard or unable to replace it.\n * @returns {number[]} The sizes array with wildcard replaced.\n */\nexport function processSizesWildcard(sizes, currentLength) {\n var newLength = product(sizes);\n var processedSizes = sizes.slice();\n var WILDCARD = -1;\n var wildCardIndex = sizes.indexOf(WILDCARD);\n var isMoreThanOneWildcard = sizes.indexOf(WILDCARD, wildCardIndex + 1) >= 0;\n if (isMoreThanOneWildcard) {\n throw new Error('More than one wildcard in sizes');\n }\n var hasWildcard = wildCardIndex >= 0;\n var canReplaceWildcard = currentLength % newLength === 0;\n if (hasWildcard) {\n if (canReplaceWildcard) {\n processedSizes[wildCardIndex] = -currentLength / newLength;\n } else {\n throw new Error('Could not replace wildcard, since ' + currentLength + ' is no multiple of ' + -newLength);\n }\n }\n return processedSizes;\n}\n\n/**\n * Computes the product of all array elements.\n * @param {number[]} array Array of factors\n * @returns {number} Product of all elements\n */\nfunction product(array) {\n return array.reduce((prev, curr) => prev * curr, 1);\n}\n\n/**\n * Iteratively re-shape a multi dimensional array to fit the specified dimensions\n * @param {Array} array Array to be reshaped\n * @param {number[]} sizes List of sizes for each dimension\n * @returns {Array} Array whose data has been formatted to fit the\n * specified dimensions\n */\n\nfunction _reshape(array, sizes) {\n // testing if there are enough elements for the requested shape\n var tmpArray = array;\n var tmpArray2;\n // for each dimensions starting by the last one and ignoring the first one\n for (var sizeIndex = sizes.length - 1; sizeIndex > 0; sizeIndex--) {\n var size = sizes[sizeIndex];\n tmpArray2 = [];\n\n // aggregate the elements of the current tmpArray in elements of the requested size\n var length = tmpArray.length / size;\n for (var i = 0; i < length; i++) {\n tmpArray2.push(tmpArray.slice(i * size, (i + 1) * size));\n }\n // set it as the new tmpArray for the next loop turn or for return\n tmpArray = tmpArray2;\n }\n return tmpArray;\n}\n\n/**\n * Squeeze a multi dimensional array\n * @param {Array} array\n * @param {Array} [size]\n * @returns {Array} returns the array itself\n */\nexport function squeeze(array, size) {\n var s = size || arraySize(array);\n\n // squeeze outer dimensions\n while (Array.isArray(array) && array.length === 1) {\n array = array[0];\n s.shift();\n }\n\n // find the first dimension to be squeezed\n var dims = s.length;\n while (s[dims - 1] === 1) {\n dims--;\n }\n\n // squeeze inner dimensions\n if (dims < s.length) {\n array = _squeeze(array, dims, 0);\n s.length = dims;\n }\n return array;\n}\n\n/**\n * Recursively squeeze a multi dimensional array\n * @param {Array} array\n * @param {number} dims Required number of dimensions\n * @param {number} dim Current dimension\n * @returns {Array | *} Returns the squeezed array\n * @private\n */\nfunction _squeeze(array, dims, dim) {\n var i, ii;\n if (dim < dims) {\n var next = dim + 1;\n for (i = 0, ii = array.length; i < ii; i++) {\n array[i] = _squeeze(array[i], dims, next);\n }\n } else {\n while (Array.isArray(array)) {\n array = array[0];\n }\n }\n return array;\n}\n\n/**\n * Unsqueeze a multi dimensional array: add dimensions when missing\n *\n * Paramter `size` will be mutated to match the new, unqueezed matrix size.\n *\n * @param {Array} array\n * @param {number} dims Desired number of dimensions of the array\n * @param {number} [outer] Number of outer dimensions to be added\n * @param {Array} [size] Current size of array.\n * @returns {Array} returns the array itself\n * @private\n */\nexport function unsqueeze(array, dims, outer, size) {\n var s = size || arraySize(array);\n\n // unsqueeze outer dimensions\n if (outer) {\n for (var i = 0; i < outer; i++) {\n array = [array];\n s.unshift(1);\n }\n }\n\n // unsqueeze inner dimensions\n array = _unsqueeze(array, dims, 0);\n while (s.length < dims) {\n s.push(1);\n }\n return array;\n}\n\n/**\n * Recursively unsqueeze a multi dimensional array\n * @param {Array} array\n * @param {number} dims Required number of dimensions\n * @param {number} dim Current dimension\n * @returns {Array | *} Returns the squeezed array\n * @private\n */\nfunction _unsqueeze(array, dims, dim) {\n var i, ii;\n if (Array.isArray(array)) {\n var next = dim + 1;\n for (i = 0, ii = array.length; i < ii; i++) {\n array[i] = _unsqueeze(array[i], dims, next);\n }\n } else {\n for (var d = dim; d < dims; d++) {\n array = [array];\n }\n }\n return array;\n}\n/**\n * Flatten a multi dimensional array, put all elements in a one dimensional\n * array\n * @param {Array} array A multi dimensional array\n * @return {Array} The flattened array (1 dimensional)\n */\nexport function flatten(array) {\n if (!Array.isArray(array)) {\n // if not an array, return as is\n return array;\n }\n var flat = [];\n array.forEach(function callback(value) {\n if (Array.isArray(value)) {\n value.forEach(callback); // traverse through sub-arrays recursively\n } else {\n flat.push(value);\n }\n });\n return flat;\n}\n\n/**\n * A safe map\n * @param {Array} array\n * @param {function} callback\n */\nexport function map(array, callback) {\n return Array.prototype.map.call(array, callback);\n}\n\n/**\n * A safe forEach\n * @param {Array} array\n * @param {function} callback\n */\nexport function forEach(array, callback) {\n Array.prototype.forEach.call(array, callback);\n}\n\n/**\n * A safe filter\n * @param {Array} array\n * @param {function} callback\n */\nexport function filter(array, callback) {\n if (arraySize(array).length !== 1) {\n throw new Error('Only one dimensional matrices supported');\n }\n return Array.prototype.filter.call(array, callback);\n}\n\n/**\n * Filter values in a callback given a regular expression\n * @param {Array} array\n * @param {RegExp} regexp\n * @return {Array} Returns the filtered array\n * @private\n */\nexport function filterRegExp(array, regexp) {\n if (arraySize(array).length !== 1) {\n throw new Error('Only one dimensional matrices supported');\n }\n return Array.prototype.filter.call(array, entry => regexp.test(entry));\n}\n\n/**\n * A safe join\n * @param {Array} array\n * @param {string} separator\n */\nexport function join(array, separator) {\n return Array.prototype.join.call(array, separator);\n}\n\n/**\n * Assign a numeric identifier to every element of a sorted array\n * @param {Array} a An array\n * @return {Array} An array of objects containing the original value and its identifier\n */\nexport function identify(a) {\n if (!Array.isArray(a)) {\n throw new TypeError('Array input expected');\n }\n if (a.length === 0) {\n return a;\n }\n var b = [];\n var count = 0;\n b[0] = {\n value: a[0],\n identifier: 0\n };\n for (var i = 1; i < a.length; i++) {\n if (a[i] === a[i - 1]) {\n count++;\n } else {\n count = 0;\n }\n b.push({\n value: a[i],\n identifier: count\n });\n }\n return b;\n}\n\n/**\n * Remove the numeric identifier from the elements\n * @param {array} a An array\n * @return {array} An array of values without identifiers\n */\nexport function generalize(a) {\n if (!Array.isArray(a)) {\n throw new TypeError('Array input expected');\n }\n if (a.length === 0) {\n return a;\n }\n var b = [];\n for (var i = 0; i < a.length; i++) {\n b.push(a[i].value);\n }\n return b;\n}\n\n/**\n * Check the datatype of a given object\n * This is a low level implementation that should only be used by\n * parent Matrix classes such as SparseMatrix or DenseMatrix\n * This method does not validate Array Matrix shape\n * @param {Array} array\n * @param {function} typeOf Callback function to use to determine the type of a value\n * @return {string}\n */\nexport function getArrayDataType(array, typeOf) {\n var type; // to hold type info\n var length = 0; // to hold length value to ensure it has consistent sizes\n\n for (var i = 0; i < array.length; i++) {\n var item = array[i];\n var _isArray = Array.isArray(item);\n\n // Saving the target matrix row size\n if (i === 0 && _isArray) {\n length = item.length;\n }\n\n // If the current item is an array but the length does not equal the targetVectorSize\n if (_isArray && item.length !== length) {\n return undefined;\n }\n var itemType = _isArray ? getArrayDataType(item, typeOf) // recurse into a nested array\n : typeOf(item);\n if (type === undefined) {\n type = itemType; // first item\n } else if (type !== itemType) {\n return 'mixed';\n } else {\n // we're good, everything has the same type so far\n }\n }\n return type;\n}\n\n/**\n * Return the last item from an array\n * @param {array}\n * @returns {*}\n */\nexport function last(array) {\n return array[array.length - 1];\n}\n\n/**\n * Get all but the last element of array.\n * @param {array}\n * @returns {*}\n */\nexport function initial(array) {\n return array.slice(0, array.length - 1);\n}\n\n/**\n * Recursively concatenate two matrices.\n * The contents of the matrices is not cloned.\n * @param {Array} a Multi dimensional array\n * @param {Array} b Multi dimensional array\n * @param {number} concatDim The dimension on which to concatenate (zero-based)\n * @param {number} dim The current dim (zero-based)\n * @return {Array} c The concatenated matrix\n * @private\n */\nfunction concatRecursive(a, b, concatDim, dim) {\n if (dim < concatDim) {\n // recurse into next dimension\n if (a.length !== b.length) {\n throw new DimensionError(a.length, b.length);\n }\n var c = [];\n for (var i = 0; i < a.length; i++) {\n c[i] = concatRecursive(a[i], b[i], concatDim, dim + 1);\n }\n return c;\n } else {\n // concatenate this dimension\n return a.concat(b);\n }\n}\n\n/**\n * Concatenates many arrays in the specified direction\n * @param {...Array} arrays All the arrays to concatenate\n * @param {number} concatDim The dimension on which to concatenate (zero-based)\n * @returns\n*/\nexport function concat() {\n var arrays = Array.prototype.slice.call(arguments, 0, -1);\n var concatDim = Array.prototype.slice.call(arguments, -1);\n if (arrays.length === 1) {\n return arrays[0];\n }\n if (arrays.length > 1) {\n return arrays.slice(1).reduce(function (A, B) {\n return concatRecursive(A, B, concatDim, 0);\n }, arrays[0]);\n } else {\n throw new Error('Wrong number of arguments in function concat');\n }\n}\n\n/**\n * Receives two or more sizes and get's the broadcasted size for both.\n * @param {...number[]} sizes Sizes to broadcast together\n * @returns\n */\nexport function broadcastSizes() {\n for (var _len = arguments.length, sizes = new Array(_len), _key = 0; _key < _len; _key++) {\n sizes[_key] = arguments[_key];\n }\n var dimensions = sizes.map(s => s.length);\n var N = Math.max(...dimensions);\n var sizeMax = new Array(N).fill(null);\n // check for every size\n for (var i = 0; i < sizes.length; i++) {\n var size = sizes[i];\n var dim = dimensions[i];\n for (var j = 0; j < dim; j++) {\n var n = N - dim + j;\n if (size[j] > sizeMax[n]) {\n sizeMax[n] = size[j];\n }\n }\n }\n for (var _i = 0; _i < sizes.length; _i++) {\n checkBroadcastingRules(sizes[_i], sizeMax);\n }\n return sizeMax;\n}\n\n/**\n * Checks if it's possible to broadcast a size to another size\n * @param {number[]} size The size of the array to check\n * @param {number[]} toSize The size of the array to validate if it can be broadcasted to\n */\nexport function checkBroadcastingRules(size, toSize) {\n var N = toSize.length;\n var dim = size.length;\n for (var j = 0; j < dim; j++) {\n var n = N - dim + j;\n if (size[j] < toSize[n] && size[j] > 1 || size[j] > toSize[n]) {\n throw new Error(\"shape missmatch: missmatch is found in arg with shape (\".concat(size, \") not possible to broadcast dimension \").concat(dim, \" with size \").concat(size[j], \" to size \").concat(toSize[n]));\n }\n }\n}\n\n/**\n * Broadcasts a single array to a certain size\n * @param {array} array Array to be broadcasted\n * @param {number[]} toSize Size to broadcast the array\n * @returns The broadcasted array\n */\nexport function broadcastTo(array, toSize) {\n var Asize = arraySize(array);\n if (deepStrictEqual(Asize, toSize)) {\n return array;\n }\n checkBroadcastingRules(Asize, toSize);\n var broadcastedSize = broadcastSizes(Asize, toSize);\n var N = broadcastedSize.length;\n var paddedSize = [...Array(N - Asize.length).fill(1), ...Asize];\n var A = clone(array);\n // reshape A if needed to make it ready for concat\n if (Asize.length < N) {\n A = reshape(A, paddedSize);\n Asize = arraySize(A);\n }\n\n // stretches the array on each dimension to make it the same size as index\n for (var dim = 0; dim < N; dim++) {\n if (Asize[dim] < broadcastedSize[dim]) {\n A = stretch(A, broadcastedSize[dim], dim);\n Asize = arraySize(A);\n }\n }\n return A;\n}\n\n/**\n * Broadcasts arrays and returns the broadcasted arrays in an array\n * @param {...Array | any} arrays\n * @returns\n */\nexport function broadcastArrays() {\n for (var _len2 = arguments.length, arrays = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n arrays[_key2] = arguments[_key2];\n }\n if (arrays.length === 0) {\n throw new Error('Insuficient number of argumnets in function broadcastArrays');\n }\n if (arrays.length === 1) {\n return arrays[0];\n }\n var sizes = arrays.map(function (array) {\n return arraySize(array);\n });\n var broadcastedSize = broadcastSizes(...sizes);\n var broadcastedArrays = [];\n arrays.forEach(function (array) {\n broadcastedArrays.push(broadcastTo(array, broadcastedSize));\n });\n return broadcastedArrays;\n}\n\n/**\n * stretches a matrix up to a certain size in a certain dimension\n * @param {Array} arrayToStretch\n * @param {number[]} sizeToStretch\n * @param {number} dimToStretch\n * @returns\n */\nexport function stretch(arrayToStretch, sizeToStretch, dimToStretch) {\n return concat(...Array(sizeToStretch).fill(arrayToStretch), dimToStretch);\n}\n\n/**\n* Retrieves a single element from an array given an index.\n*\n* @param {Array} array - The array from which to retrieve the value.\n* @param {Array} idx - An array of indices specifying the position of the desired element in each dimension.\n* @returns {*} - The value at the specified position in the array.\n*\n* @example\n* const arr = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]];\n* const index = [1, 0, 1];\n* console.log(getValue(arr, index)); // 6\n*/\nexport function get(array, index) {\n if (!Array.isArray(array)) {\n throw new Error('Array expected');\n }\n var size = arraySize(array);\n if (index.length !== size.length) {\n throw new DimensionError(index.length, size.length);\n }\n for (var x = 0; x < index.length; x++) {\n validateIndex(index[x], size[x]);\n }\n return index.reduce((acc, curr) => acc[curr], array);\n}\n\n/**\n * Recursive function to map a multi-dimensional array.\n *\n * @param {*} value - The current value being processed in the array.\n * @param {Array} index - The index of the current value being processed in the array.\n * @param {Array} array - The array being processed.\n * @param {Function} callback - Function that produces the element of the new Array, taking three arguments: the value of the element, the index of the element, and the Array being processed.\n * @returns {*} The new array with each element being the result of the callback function.\n */\nexport function recurse(value, index, array, callback) {\n if (Array.isArray(value)) {\n return value.map(function (child, i) {\n // we create a copy of the index array and append the new index value\n return recurse(child, index.concat(i), array, callback);\n });\n } else {\n // invoke the callback function with the right number of arguments\n return callback(value, index, array);\n }\n}\n\n/**\n * Deep clones a multidimensional array\n * @param {Array} array\n * @returns cloned array\n */\nexport function clone(array) {\n return _extends([], array);\n}", "import typed from 'typed-function';\nimport { get, arraySize } from './array.js';\nimport { typeOf as _typeOf } from './is.js';\n\n/**\n * Simplifies a callback function by reducing its complexity and potentially improving its performance.\n *\n * @param {Function} callback The original callback function to simplify.\n * @param {Array|Matrix} array The array that will be used with the callback function.\n * @param {string} name The name of the function that is using the callback.\n * @returns {Function} Returns a simplified version of the callback function.\n */\nexport function optimizeCallback(callback, array, name) {\n if (typed.isTypedFunction(callback)) {\n var firstIndex = (array.isMatrix ? array.size() : arraySize(array)).map(() => 0);\n var firstValue = array.isMatrix ? array.get(firstIndex) : get(array, firstIndex);\n var hasSingleSignature = Object.keys(callback.signatures).length === 1;\n var numberOfArguments = _findNumberOfArguments(callback, firstValue, firstIndex, array);\n var fastCallback = hasSingleSignature ? Object.values(callback.signatures)[0] : callback;\n if (numberOfArguments >= 1 && numberOfArguments <= 3) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _tryFunctionWithArgs(fastCallback, args.slice(0, numberOfArguments), name, callback.name);\n };\n }\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return _tryFunctionWithArgs(fastCallback, args, name, callback.name);\n };\n }\n return callback;\n}\nfunction _findNumberOfArguments(callback, value, index, array) {\n var testArgs = [value, index, array];\n for (var i = 3; i > 0; i--) {\n var args = testArgs.slice(0, i);\n if (typed.resolve(callback, args) !== null) {\n return i;\n }\n }\n}\n\n/**\n * @param {function} func The selected function taken from one of the signatures of the callback function\n * @param {Array} args List with arguments to apply to the selected signature\n * @param {string} mappingFnName the name of the function that is using the callback\n * @param {string} callbackName the name of the callback function\n * @returns {*} Returns the return value of the invoked signature\n * @throws {TypeError} Throws an error when no matching signature was found\n */\nfunction _tryFunctionWithArgs(func, args, mappingFnName, callbackName) {\n try {\n return func(...args);\n } catch (err) {\n _createCallbackError(err, args, mappingFnName, callbackName);\n }\n}\n\n/**\n * Creates and throws a detailed TypeError when a callback function fails.\n *\n * @param {Error} err The original error thrown by the callback function.\n * @param {Array} args The arguments that were passed to the callback function.\n * @param {string} mappingFnName The name of the function that is using the callback.\n * @param {string} callbackName The name of the callback function.\n * @throws {TypeError} Throws a detailed TypeError with enriched error message.\n */\nfunction _createCallbackError(err, args, mappingFnName, callbackName) {\n var _err$data;\n // Enrich the error message so the user understands that it took place inside the callback function\n if (err instanceof TypeError && ((_err$data = err.data) === null || _err$data === void 0 ? void 0 : _err$data.category) === 'wrongType') {\n var argsDesc = [];\n argsDesc.push(\"value: \".concat(_typeOf(args[0])));\n if (args.length >= 2) {\n argsDesc.push(\"index: \".concat(_typeOf(args[1])));\n }\n if (args.length >= 3) {\n argsDesc.push(\"array: \".concat(_typeOf(args[2])));\n }\n throw new TypeError(\"Function \".concat(mappingFnName, \" cannot apply callback arguments \") + \"\".concat(callbackName, \"(\").concat(argsDesc.join(', '), \") at index \").concat(JSON.stringify(args[1])));\n } else {\n throw new TypeError(\"Function \".concat(mappingFnName, \" cannot apply callback arguments \") + \"to function \".concat(callbackName, \": \").concat(err.message));\n }\n}", "// deno-lint-ignore-file no-this-alias\nimport { isArray, isBigNumber, isCollection, isIndex, isMatrix, isNumber, isString, typeOf } from '../../utils/is.js';\nimport { arraySize, getArrayDataType, processSizesWildcard, reshape, resize, unsqueeze, validate, validateIndex, broadcastTo, get } from '../../utils/array.js';\nimport { format } from '../../utils/string.js';\nimport { isInteger } from '../../utils/number.js';\nimport { clone, deepStrictEqual } from '../../utils/object.js';\nimport { DimensionError } from '../../error/DimensionError.js';\nimport { factory } from '../../utils/factory.js';\nimport { optimizeCallback } from '../../utils/optimizeCallback.js';\nvar name = 'DenseMatrix';\nvar dependencies = ['Matrix'];\nexport var createDenseMatrixClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Matrix\n } = _ref;\n /**\n * Dense Matrix implementation. A regular, dense matrix, supporting multi-dimensional matrices. This is the default matrix type.\n * @class DenseMatrix\n * @enum {{ value, index: number[] }}\n */\n function DenseMatrix(data, datatype) {\n if (!(this instanceof DenseMatrix)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n if (datatype && !isString(datatype)) {\n throw new Error('Invalid datatype: ' + datatype);\n }\n if (isMatrix(data)) {\n // check data is a DenseMatrix\n if (data.type === 'DenseMatrix') {\n // clone data & size\n this._data = clone(data._data);\n this._size = clone(data._size);\n this._datatype = datatype || data._datatype;\n } else {\n // build data from existing matrix\n this._data = data.toArray();\n this._size = data.size();\n this._datatype = datatype || data._datatype;\n }\n } else if (data && isArray(data.data) && isArray(data.size)) {\n // initialize fields from JSON representation\n this._data = data.data;\n this._size = data.size;\n // verify the dimensions of the array\n validate(this._data, this._size);\n this._datatype = datatype || data.datatype;\n } else if (isArray(data)) {\n // replace nested Matrices with Arrays\n this._data = preprocess(data);\n // get the dimensions of the array\n this._size = arraySize(this._data);\n // verify the dimensions of the array, TODO: compute size while processing array\n validate(this._data, this._size);\n // data type unknown\n this._datatype = datatype;\n } else if (data) {\n // unsupported type\n throw new TypeError('Unsupported type of data (' + typeOf(data) + ')');\n } else {\n // nothing provided\n this._data = [];\n this._size = [0];\n this._datatype = datatype;\n }\n }\n DenseMatrix.prototype = new Matrix();\n\n /**\n * Create a new DenseMatrix\n */\n DenseMatrix.prototype.createDenseMatrix = function (data, datatype) {\n return new DenseMatrix(data, datatype);\n };\n\n /**\n * Attach type information\n */\n Object.defineProperty(DenseMatrix, 'name', {\n value: 'DenseMatrix'\n });\n DenseMatrix.prototype.constructor = DenseMatrix;\n DenseMatrix.prototype.type = 'DenseMatrix';\n DenseMatrix.prototype.isDenseMatrix = true;\n\n /**\n * Get the matrix type\n *\n * Usage:\n * const matrixType = matrix.getDataType() // retrieves the matrix type\n *\n * @memberOf DenseMatrix\n * @return {string} type information; if multiple types are found from the Matrix, it will return \"mixed\"\n */\n DenseMatrix.prototype.getDataType = function () {\n return getArrayDataType(this._data, typeOf);\n };\n\n /**\n * Get the storage format used by the matrix.\n *\n * Usage:\n * const format = matrix.storage() // retrieve storage format\n *\n * @memberof DenseMatrix\n * @return {string} The storage format.\n */\n DenseMatrix.prototype.storage = function () {\n return 'dense';\n };\n\n /**\n * Get the datatype of the data stored in the matrix.\n *\n * Usage:\n * const format = matrix.datatype() // retrieve matrix datatype\n *\n * @memberof DenseMatrix\n * @return {string} The datatype.\n */\n DenseMatrix.prototype.datatype = function () {\n return this._datatype;\n };\n\n /**\n * Create a new DenseMatrix\n * @memberof DenseMatrix\n * @param {Array} data\n * @param {string} [datatype]\n */\n DenseMatrix.prototype.create = function (data, datatype) {\n return new DenseMatrix(data, datatype);\n };\n\n /**\n * Get a subset of the matrix, or replace a subset of the matrix.\n *\n * Usage:\n * const subset = matrix.subset(index) // retrieve subset\n * const value = matrix.subset(index, replacement) // replace subset\n *\n * @memberof DenseMatrix\n * @param {Index} index\n * @param {Array | Matrix | *} [replacement]\n * @param {*} [defaultValue=0] Default value, filled in on new entries when\n * the matrix is resized. If not provided,\n * new matrix elements will be filled with zeros.\n */\n DenseMatrix.prototype.subset = function (index, replacement, defaultValue) {\n switch (arguments.length) {\n case 1:\n return _get(this, index);\n\n // intentional fall through\n case 2:\n case 3:\n return _set(this, index, replacement, defaultValue);\n default:\n throw new SyntaxError('Wrong number of arguments');\n }\n };\n\n /**\n * Get a single element from the matrix.\n * @memberof DenseMatrix\n * @param {number[]} index Zero-based index\n * @return {*} value\n */\n DenseMatrix.prototype.get = function (index) {\n return get(this._data, index);\n };\n\n /**\n * Replace a single element in the matrix.\n * @memberof DenseMatrix\n * @param {number[]} index Zero-based index\n * @param {*} value\n * @param {*} [defaultValue] Default value, filled in on new entries when\n * the matrix is resized. If not provided,\n * new matrix elements will be left undefined.\n * @return {DenseMatrix} self\n */\n DenseMatrix.prototype.set = function (index, value, defaultValue) {\n if (!isArray(index)) {\n throw new TypeError('Array expected');\n }\n if (index.length < this._size.length) {\n throw new DimensionError(index.length, this._size.length, '<');\n }\n var i, ii, indexI;\n\n // enlarge matrix when needed\n var size = index.map(function (i) {\n return i + 1;\n });\n _fit(this, size, defaultValue);\n\n // traverse over the dimensions\n var data = this._data;\n for (i = 0, ii = index.length - 1; i < ii; i++) {\n indexI = index[i];\n validateIndex(indexI, data.length);\n data = data[indexI];\n }\n\n // set new value\n indexI = index[index.length - 1];\n validateIndex(indexI, data.length);\n data[indexI] = value;\n return this;\n };\n\n /**\n * Get a submatrix of this matrix\n * @memberof DenseMatrix\n * @param {DenseMatrix} matrix\n * @param {Index} index Zero-based index\n * @private\n */\n function _get(matrix, index) {\n if (!isIndex(index)) {\n throw new TypeError('Invalid index');\n }\n var isScalar = index.isScalar();\n if (isScalar) {\n // return a scalar\n return matrix.get(index.min());\n } else {\n // validate dimensions\n var size = index.size();\n if (size.length !== matrix._size.length) {\n throw new DimensionError(size.length, matrix._size.length);\n }\n\n // validate if any of the ranges in the index is out of range\n var min = index.min();\n var max = index.max();\n for (var i = 0, ii = matrix._size.length; i < ii; i++) {\n validateIndex(min[i], matrix._size[i]);\n validateIndex(max[i], matrix._size[i]);\n }\n\n // retrieve submatrix\n // TODO: more efficient when creating an empty matrix and setting _data and _size manually\n return new DenseMatrix(_getSubmatrix(matrix._data, index, size.length, 0), matrix._datatype);\n }\n }\n\n /**\n * Recursively get a submatrix of a multi dimensional matrix.\n * Index is not checked for correct number or length of dimensions.\n * @memberof DenseMatrix\n * @param {Array} data\n * @param {Index} index\n * @param {number} dims Total number of dimensions\n * @param {number} dim Current dimension\n * @return {Array} submatrix\n * @private\n */\n function _getSubmatrix(data, index, dims, dim) {\n var last = dim === dims - 1;\n var range = index.dimension(dim);\n if (last) {\n return range.map(function (i) {\n validateIndex(i, data.length);\n return data[i];\n }).valueOf();\n } else {\n return range.map(function (i) {\n validateIndex(i, data.length);\n var child = data[i];\n return _getSubmatrix(child, index, dims, dim + 1);\n }).valueOf();\n }\n }\n\n /**\n * Replace a submatrix in this matrix\n * Indexes are zero-based.\n * @memberof DenseMatrix\n * @param {DenseMatrix} matrix\n * @param {Index} index\n * @param {DenseMatrix | Array | *} submatrix\n * @param {*} defaultValue Default value, filled in on new entries when\n * the matrix is resized.\n * @return {DenseMatrix} matrix\n * @private\n */\n function _set(matrix, index, submatrix, defaultValue) {\n if (!index || index.isIndex !== true) {\n throw new TypeError('Invalid index');\n }\n\n // get index size and check whether the index contains a single value\n var iSize = index.size();\n var isScalar = index.isScalar();\n\n // calculate the size of the submatrix, and convert it into an Array if needed\n var sSize;\n if (isMatrix(submatrix)) {\n sSize = submatrix.size();\n submatrix = submatrix.valueOf();\n } else {\n sSize = arraySize(submatrix);\n }\n if (isScalar) {\n // set a scalar\n\n // check whether submatrix is a scalar\n if (sSize.length !== 0) {\n throw new TypeError('Scalar expected');\n }\n matrix.set(index.min(), submatrix, defaultValue);\n } else {\n // set a submatrix\n\n // broadcast submatrix\n if (!deepStrictEqual(sSize, iSize)) {\n try {\n if (sSize.length === 0) {\n submatrix = broadcastTo([submatrix], iSize);\n } else {\n submatrix = broadcastTo(submatrix, iSize);\n }\n sSize = arraySize(submatrix);\n } catch (_unused) {}\n }\n\n // validate dimensions\n if (iSize.length < matrix._size.length) {\n throw new DimensionError(iSize.length, matrix._size.length, '<');\n }\n if (sSize.length < iSize.length) {\n // calculate number of missing outer dimensions\n var i = 0;\n var outer = 0;\n while (iSize[i] === 1 && sSize[i] === 1) {\n i++;\n }\n while (iSize[i] === 1) {\n outer++;\n i++;\n }\n\n // unsqueeze both outer and inner dimensions\n submatrix = unsqueeze(submatrix, iSize.length, outer, sSize);\n }\n\n // check whether the size of the submatrix matches the index size\n if (!deepStrictEqual(iSize, sSize)) {\n throw new DimensionError(iSize, sSize, '>');\n }\n\n // enlarge matrix when needed\n var size = index.max().map(function (i) {\n return i + 1;\n });\n _fit(matrix, size, defaultValue);\n\n // insert the sub matrix\n var dims = iSize.length;\n var dim = 0;\n _setSubmatrix(matrix._data, index, submatrix, dims, dim);\n }\n return matrix;\n }\n\n /**\n * Replace a submatrix of a multi dimensional matrix.\n * @memberof DenseMatrix\n * @param {Array} data\n * @param {Index} index\n * @param {Array} submatrix\n * @param {number} dims Total number of dimensions\n * @param {number} dim\n * @private\n */\n function _setSubmatrix(data, index, submatrix, dims, dim) {\n var last = dim === dims - 1;\n var range = index.dimension(dim);\n if (last) {\n range.forEach(function (dataIndex, subIndex) {\n validateIndex(dataIndex);\n data[dataIndex] = submatrix[subIndex[0]];\n });\n } else {\n range.forEach(function (dataIndex, subIndex) {\n validateIndex(dataIndex);\n _setSubmatrix(data[dataIndex], index, submatrix[subIndex[0]], dims, dim + 1);\n });\n }\n }\n\n /**\n * Resize the matrix to the given size. Returns a copy of the matrix when\n * `copy=true`, otherwise return the matrix itself (resize in place).\n *\n * @memberof DenseMatrix\n * @param {number[] || Matrix} size The new size the matrix should have.\n * @param {*} [defaultValue=0] Default value, filled in on new entries.\n * If not provided, the matrix elements will\n * be filled with zeros.\n * @param {boolean} [copy] Return a resized copy of the matrix\n *\n * @return {Matrix} The resized matrix\n */\n DenseMatrix.prototype.resize = function (size, defaultValue, copy) {\n // validate arguments\n if (!isCollection(size)) {\n throw new TypeError('Array or Matrix expected');\n }\n\n // SparseMatrix input is always 2d, flatten this into 1d if it's indeed a vector\n var sizeArray = size.valueOf().map(value => {\n return Array.isArray(value) && value.length === 1 ? value[0] : value;\n });\n\n // matrix to resize\n var m = copy ? this.clone() : this;\n // resize matrix\n return _resize(m, sizeArray, defaultValue);\n };\n function _resize(matrix, size, defaultValue) {\n // check size\n if (size.length === 0) {\n // first value in matrix\n var v = matrix._data;\n // go deep\n while (isArray(v)) {\n v = v[0];\n }\n return v;\n }\n // resize matrix\n matrix._size = size.slice(0); // copy the array\n matrix._data = resize(matrix._data, matrix._size, defaultValue);\n // return matrix\n return matrix;\n }\n\n /**\n * Reshape the matrix to the given size. Returns a copy of the matrix when\n * `copy=true`, otherwise return the matrix itself (reshape in place).\n *\n * NOTE: This might be better suited to copy by default, instead of modifying\n * in place. For now, it operates in place to remain consistent with\n * resize().\n *\n * @memberof DenseMatrix\n * @param {number[]} size The new size the matrix should have.\n * @param {boolean} [copy] Return a reshaped copy of the matrix\n *\n * @return {Matrix} The reshaped matrix\n */\n DenseMatrix.prototype.reshape = function (size, copy) {\n var m = copy ? this.clone() : this;\n m._data = reshape(m._data, size);\n var currentLength = m._size.reduce((length, size) => length * size);\n m._size = processSizesWildcard(size, currentLength);\n return m;\n };\n\n /**\n * Enlarge the matrix when it is smaller than given size.\n * If the matrix is larger or equal sized, nothing is done.\n * @memberof DenseMatrix\n * @param {DenseMatrix} matrix The matrix to be resized\n * @param {number[]} size\n * @param {*} defaultValue Default value, filled in on new entries.\n * @private\n */\n function _fit(matrix, size, defaultValue) {\n var\n // copy the array\n newSize = matrix._size.slice(0);\n var changed = false;\n\n // add dimensions when needed\n while (newSize.length < size.length) {\n newSize.push(0);\n changed = true;\n }\n\n // enlarge size when needed\n for (var i = 0, ii = size.length; i < ii; i++) {\n if (size[i] > newSize[i]) {\n newSize[i] = size[i];\n changed = true;\n }\n }\n if (changed) {\n // resize only when size is changed\n _resize(matrix, newSize, defaultValue);\n }\n }\n\n /**\n * Create a clone of the matrix\n * @memberof DenseMatrix\n * @return {DenseMatrix} clone\n */\n DenseMatrix.prototype.clone = function () {\n var m = new DenseMatrix({\n data: clone(this._data),\n size: clone(this._size),\n datatype: this._datatype\n });\n return m;\n };\n\n /**\n * Retrieve the size of the matrix.\n * @memberof DenseMatrix\n * @returns {number[]} size\n */\n DenseMatrix.prototype.size = function () {\n return this._size.slice(0); // return a clone of _size\n };\n\n /**\n * Applies a callback function to a reference to each element of the matrix\n * @memberof DenseMatrix\n * @param {Function} callback The callback function is invoked with three\n * parameters: an array, an integer index to that\n * array, and the Matrix being traversed.\n */\n DenseMatrix.prototype._forEach = function (callback) {\n // matrix instance\n var me = this;\n var s = me.size();\n\n // if there is only one dimension, just loop through it\n if (s.length === 1) {\n for (var i = 0; i < s[0]; i++) {\n callback(me._data, i, [i]);\n }\n return;\n }\n\n // keep track of the current index permutation\n var index = Array(s.length).fill(0);\n\n // store a reference of each dimension of the matrix for faster access\n var data = Array(s.length - 1);\n var last = data.length - 1;\n data[0] = me._data[0];\n for (var _i = 0; _i < last; _i++) {\n data[_i + 1] = data[_i][0];\n }\n index[last] = -1;\n while (true) {\n var _i2 = void 0;\n for (_i2 = last; _i2 >= 0; _i2--) {\n // march index to the next permutation\n index[_i2]++;\n if (index[_i2] === s[_i2]) {\n index[_i2] = 0;\n continue;\n }\n\n // update references to matrix dimensions\n data[_i2] = _i2 === 0 ? me._data[index[_i2]] : data[_i2 - 1][index[_i2]];\n for (var j = _i2; j < last; j++) {\n data[j + 1] = data[j][0];\n }\n\n // loop through the last dimension and map each value\n for (var _j = 0; _j < s[data.length]; _j++) {\n index[data.length] = _j;\n callback(data[last], _j, index.slice(0));\n }\n break;\n }\n if (_i2 === -1) {\n break;\n }\n }\n };\n\n /**\n * Create a new matrix with the results of the callback function executed on\n * each entry of the matrix.\n * @memberof DenseMatrix\n * @param {Function} callback The callback function is invoked with three\n * parameters: the value of the element, the index\n * of the element, and the Matrix being traversed.\n *\n * @return {DenseMatrix} matrix\n */\n DenseMatrix.prototype.map = function (callback) {\n var me = this;\n var result = new DenseMatrix(me);\n var fastCallback = optimizeCallback(callback, me._data, 'map');\n result._forEach(function (arr, i, index) {\n arr[i] = fastCallback(arr[i], index, me);\n });\n return result;\n };\n\n /**\n * Execute a callback function on each entry of the matrix.\n * @memberof DenseMatrix\n * @param {Function} callback The callback function is invoked with three\n * parameters: the value of the element, the index\n * of the element, and the Matrix being traversed.\n */\n DenseMatrix.prototype.forEach = function (callback) {\n var me = this;\n var fastCallback = optimizeCallback(callback, me._data, 'map');\n me._forEach(function (arr, i, index) {\n fastCallback(arr[i], index, me);\n });\n };\n\n /**\n * Iterate over the matrix elements\n * @return {Iterable<{ value, index: number[] }>}\n */\n DenseMatrix.prototype[Symbol.iterator] = function* () {\n var _recurse = function* recurse(value, index) {\n if (isArray(value)) {\n for (var i = 0; i < value.length; i++) {\n yield* _recurse(value[i], index.concat(i));\n }\n } else {\n yield {\n value,\n index\n };\n }\n };\n yield* _recurse(this._data, []);\n };\n\n /**\n * Returns an array containing the rows of a 2D matrix\n * @returns {Array}\n */\n DenseMatrix.prototype.rows = function () {\n var result = [];\n var s = this.size();\n if (s.length !== 2) {\n throw new TypeError('Rows can only be returned for a 2D matrix.');\n }\n var data = this._data;\n for (var row of data) {\n result.push(new DenseMatrix([row], this._datatype));\n }\n return result;\n };\n\n /**\n * Returns an array containing the columns of a 2D matrix\n * @returns {Array}\n */\n DenseMatrix.prototype.columns = function () {\n var _this = this;\n var result = [];\n var s = this.size();\n if (s.length !== 2) {\n throw new TypeError('Rows can only be returned for a 2D matrix.');\n }\n var data = this._data;\n var _loop = function _loop(i) {\n var col = data.map(row => [row[i]]);\n result.push(new DenseMatrix(col, _this._datatype));\n };\n for (var i = 0; i < s[1]; i++) {\n _loop(i);\n }\n return result;\n };\n\n /**\n * Create an Array with a copy of the data of the DenseMatrix\n * @memberof DenseMatrix\n * @returns {Array} array\n */\n DenseMatrix.prototype.toArray = function () {\n return clone(this._data);\n };\n\n /**\n * Get the primitive value of the DenseMatrix: a multidimensional array\n * @memberof DenseMatrix\n * @returns {Array} array\n */\n DenseMatrix.prototype.valueOf = function () {\n return this._data;\n };\n\n /**\n * Get a string representation of the matrix, with optional formatting options.\n * @memberof DenseMatrix\n * @param {Object | number | Function} [options] Formatting options. See\n * lib/utils/number:format for a\n * description of the available\n * options.\n * @returns {string} str\n */\n DenseMatrix.prototype.format = function (options) {\n return format(this._data, options);\n };\n\n /**\n * Get a string representation of the matrix\n * @memberof DenseMatrix\n * @returns {string} str\n */\n DenseMatrix.prototype.toString = function () {\n return format(this._data);\n };\n\n /**\n * Get a JSON representation of the matrix\n * @memberof DenseMatrix\n * @returns {Object}\n */\n DenseMatrix.prototype.toJSON = function () {\n return {\n mathjs: 'DenseMatrix',\n data: this._data,\n size: this._size,\n datatype: this._datatype\n };\n };\n\n /**\n * Get the kth Matrix diagonal.\n *\n * @memberof DenseMatrix\n * @param {number | BigNumber} [k=0] The kth diagonal where the vector will retrieved.\n *\n * @returns {Matrix} The matrix with the diagonal values.\n */\n DenseMatrix.prototype.diagonal = function (k) {\n // validate k if any\n if (k) {\n // convert BigNumber to a number\n if (isBigNumber(k)) {\n k = k.toNumber();\n }\n // is must be an integer\n if (!isNumber(k) || !isInteger(k)) {\n throw new TypeError('The parameter k must be an integer number');\n }\n } else {\n // default value\n k = 0;\n }\n var kSuper = k > 0 ? k : 0;\n var kSub = k < 0 ? -k : 0;\n\n // rows & columns\n var rows = this._size[0];\n var columns = this._size[1];\n\n // number diagonal values\n var n = Math.min(rows - kSub, columns - kSuper);\n\n // x is a matrix get diagonal from matrix\n var data = [];\n\n // loop rows\n for (var i = 0; i < n; i++) {\n data[i] = this._data[i + kSub][i + kSuper];\n }\n\n // create DenseMatrix\n return new DenseMatrix({\n data,\n size: [n],\n datatype: this._datatype\n });\n };\n\n /**\n * Create a diagonal matrix.\n *\n * @memberof DenseMatrix\n * @param {Array} size The matrix size.\n * @param {number | Matrix | Array } value The values for the diagonal.\n * @param {number | BigNumber} [k=0] The kth diagonal where the vector will be filled in.\n * @param {number} [defaultValue] The default value for non-diagonal\n * @param {string} [datatype] The datatype for the diagonal\n *\n * @returns {DenseMatrix}\n */\n DenseMatrix.diagonal = function (size, value, k, defaultValue) {\n if (!isArray(size)) {\n throw new TypeError('Array expected, size parameter');\n }\n if (size.length !== 2) {\n throw new Error('Only two dimensions matrix are supported');\n }\n\n // map size & validate\n size = size.map(function (s) {\n // check it is a big number\n if (isBigNumber(s)) {\n // convert it\n s = s.toNumber();\n }\n // validate arguments\n if (!isNumber(s) || !isInteger(s) || s < 1) {\n throw new Error('Size values must be positive integers');\n }\n return s;\n });\n\n // validate k if any\n if (k) {\n // convert BigNumber to a number\n if (isBigNumber(k)) {\n k = k.toNumber();\n }\n // is must be an integer\n if (!isNumber(k) || !isInteger(k)) {\n throw new TypeError('The parameter k must be an integer number');\n }\n } else {\n // default value\n k = 0;\n }\n var kSuper = k > 0 ? k : 0;\n var kSub = k < 0 ? -k : 0;\n\n // rows and columns\n var rows = size[0];\n var columns = size[1];\n\n // number of non-zero items\n var n = Math.min(rows - kSub, columns - kSuper);\n\n // value extraction function\n var _value;\n\n // check value\n if (isArray(value)) {\n // validate array\n if (value.length !== n) {\n // number of values in array must be n\n throw new Error('Invalid value array length');\n }\n // define function\n _value = function _value(i) {\n // return value @ i\n return value[i];\n };\n } else if (isMatrix(value)) {\n // matrix size\n var ms = value.size();\n // validate matrix\n if (ms.length !== 1 || ms[0] !== n) {\n // number of values in array must be n\n throw new Error('Invalid matrix length');\n }\n // define function\n _value = function _value(i) {\n // return value @ i\n return value.get([i]);\n };\n } else {\n // define function\n _value = function _value() {\n // return value\n return value;\n };\n }\n\n // discover default value if needed\n if (!defaultValue) {\n // check first value in array\n defaultValue = isBigNumber(_value(0)) ? _value(0).mul(0) // trick to create a BigNumber with value zero\n : 0;\n }\n\n // empty array\n var data = [];\n\n // check we need to resize array\n if (size.length > 0) {\n // resize array\n data = resize(data, size, defaultValue);\n // fill diagonal\n for (var d = 0; d < n; d++) {\n data[d + kSub][d + kSuper] = _value(d);\n }\n }\n\n // create DenseMatrix\n return new DenseMatrix({\n data,\n size: [rows, columns]\n });\n };\n\n /**\n * Generate a matrix from a JSON object\n * @memberof DenseMatrix\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"DenseMatrix\", data: [], size: []}`,\n * where mathjs is optional\n * @returns {DenseMatrix}\n */\n DenseMatrix.fromJSON = function (json) {\n return new DenseMatrix(json);\n };\n\n /**\n * Swap rows i and j in Matrix.\n *\n * @memberof DenseMatrix\n * @param {number} i Matrix row index 1\n * @param {number} j Matrix row index 2\n *\n * @return {Matrix} The matrix reference\n */\n DenseMatrix.prototype.swapRows = function (i, j) {\n // check index\n if (!isNumber(i) || !isInteger(i) || !isNumber(j) || !isInteger(j)) {\n throw new Error('Row index must be positive integers');\n }\n // check dimensions\n if (this._size.length !== 2) {\n throw new Error('Only two dimensional matrix is supported');\n }\n // validate index\n validateIndex(i, this._size[0]);\n validateIndex(j, this._size[0]);\n\n // swap rows\n DenseMatrix._swapRows(i, j, this._data);\n // return current instance\n return this;\n };\n\n /**\n * Swap rows i and j in Dense Matrix data structure.\n *\n * @param {number} i Matrix row index 1\n * @param {number} j Matrix row index 2\n * @param {Array} data Matrix data\n */\n DenseMatrix._swapRows = function (i, j, data) {\n // swap values i <-> j\n var vi = data[i];\n data[i] = data[j];\n data[j] = vi;\n };\n\n /**\n * Preprocess data, which can be an Array or DenseMatrix with nested Arrays and\n * Matrices. Clones all (nested) Arrays, and replaces all nested Matrices with Arrays\n * @memberof DenseMatrix\n * @param {Array | Matrix} data\n * @return {Array} data\n */\n function preprocess(data) {\n if (isMatrix(data)) {\n return preprocess(data.valueOf());\n }\n if (isArray(data)) {\n return data.map(preprocess);\n }\n return data;\n }\n return DenseMatrix;\n}, {\n isClass: true\n});", "import { clone as objectClone } from '../../utils/object.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'clone';\nvar dependencies = ['typed'];\nexport var createClone = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Clone an object. Will make a deep copy of the data.\n *\n * Syntax:\n *\n * math.clone(x)\n *\n * Examples:\n *\n * math.clone(3.5) // returns number 3.5\n * math.clone(math.complex('2-4i')) // returns Complex 2 - 4i\n * math.clone(math.unit(45, 'deg')) // returns Unit 45 deg\n * math.clone([[1, 2], [3, 4]]) // returns Array [[1, 2], [3, 4]]\n * math.clone(\"hello world\") // returns string \"hello world\"\n *\n * @param {*} x Object to be cloned\n * @return {*} A clone of object x\n */\n return typed(name, {\n any: objectClone\n });\n});", "/**\n * Transpose a matrix\n * @param {Array} mat\n * @returns {Array} ret\n * @private\n */\nexport function _switch(mat) {\n var I = mat.length;\n var J = mat[0].length;\n var i, j;\n var ret = [];\n for (j = 0; j < J; j++) {\n var tmp = [];\n for (i = 0; i < I; i++) {\n tmp.push(mat[i][j]);\n }\n ret.push(tmp);\n }\n return ret;\n}", "import { isCollection, isMatrix } from './is.js';\nimport { IndexError } from '../error/IndexError.js';\nimport { arraySize } from './array.js';\nimport { _switch } from './switch.js';\n\n/**\n * Test whether an array contains collections\n * @param {Array} array\n * @returns {boolean} Returns true when the array contains one or multiple\n * collections (Arrays or Matrices). Returns false otherwise.\n */\nexport function containsCollections(array) {\n for (var i = 0; i < array.length; i++) {\n if (isCollection(array[i])) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Recursively loop over all elements in a given multi dimensional array\n * and invoke the callback on each of the elements.\n * @param {Array | Matrix} array\n * @param {Function} callback The callback method is invoked with one\n * parameter: the current element in the array\n */\nexport function deepForEach(array, callback) {\n if (isMatrix(array)) {\n array = array.valueOf();\n }\n for (var i = 0, ii = array.length; i < ii; i++) {\n var value = array[i];\n if (Array.isArray(value)) {\n deepForEach(value, callback);\n } else {\n callback(value);\n }\n }\n}\n\n/**\n * Execute the callback function element wise for each element in array and any\n * nested array\n * Returns an array with the results\n * @param {Array | Matrix} array\n * @param {Function} callback The callback is called with two parameters:\n * value1 and value2, which contain the current\n * element of both arrays.\n * @param {boolean} [skipZeros] Invoke callback function for non-zero values only.\n *\n * @return {Array | Matrix} res\n */\nexport function deepMap(array, callback, skipZeros) {\n if (array && typeof array.map === 'function') {\n // TODO: replace array.map with a for loop to improve performance\n return array.map(function (x) {\n return deepMap(x, callback, skipZeros);\n });\n } else {\n return callback(array);\n }\n}\n\n/**\n * Reduce a given matrix or array to a new matrix or\n * array with one less dimension, applying the given\n * callback in the selected dimension.\n * @param {Array | Matrix} mat\n * @param {number} dim\n * @param {Function} callback\n * @return {Array | Matrix} res\n */\nexport function reduce(mat, dim, callback) {\n var size = Array.isArray(mat) ? arraySize(mat) : mat.size();\n if (dim < 0 || dim >= size.length) {\n // TODO: would be more clear when throwing a DimensionError here\n throw new IndexError(dim, size.length);\n }\n if (isMatrix(mat)) {\n return mat.create(_reduce(mat.valueOf(), dim, callback), mat.datatype());\n } else {\n return _reduce(mat, dim, callback);\n }\n}\n\n/**\n * Recursively reduce a matrix\n * @param {Array} mat\n * @param {number} dim\n * @param {Function} callback\n * @returns {Array} ret\n * @private\n */\nfunction _reduce(mat, dim, callback) {\n var i, ret, val, tran;\n if (dim <= 0) {\n if (!Array.isArray(mat[0])) {\n val = mat[0];\n for (i = 1; i < mat.length; i++) {\n val = callback(val, mat[i]);\n }\n return val;\n } else {\n tran = _switch(mat);\n ret = [];\n for (i = 0; i < tran.length; i++) {\n ret[i] = _reduce(tran[i], dim - 1, callback);\n }\n return ret;\n }\n } else {\n ret = [];\n for (i = 0; i < mat.length; i++) {\n ret[i] = _reduce(mat[i], dim - 1, callback);\n }\n return ret;\n }\n}\n\n// TODO: document function scatter\nexport function scatter(a, j, w, x, u, mark, cindex, f, inverse, update, value) {\n // a arrays\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n\n // vars\n var k, k0, k1, i;\n\n // check we need to process values (pattern matrix)\n if (x) {\n // values in j\n for (k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {\n // row\n i = aindex[k];\n // check value exists in current j\n if (w[i] !== mark) {\n // i is new entry in j\n w[i] = mark;\n // add i to pattern of C\n cindex.push(i);\n // x(i) = A, check we need to call function this time\n if (update) {\n // copy value to workspace calling callback function\n x[i] = inverse ? f(avalues[k], value) : f(value, avalues[k]);\n // function was called on current row\n u[i] = mark;\n } else {\n // copy value to workspace\n x[i] = avalues[k];\n }\n } else {\n // i exists in C already\n x[i] = inverse ? f(avalues[k], x[i]) : f(x[i], avalues[k]);\n // function was called on current row\n u[i] = mark;\n }\n }\n } else {\n // values in j\n for (k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {\n // row\n i = aindex[k];\n // check value exists in current j\n if (w[i] !== mark) {\n // i is new entry in j\n w[i] = mark;\n // add i to pattern of C\n cindex.push(i);\n } else {\n // indicate function was called on current row\n u[i] = mark;\n }\n }\n }\n}", "import { deepMap } from '../../utils/collection.js';\nimport { isInteger as isIntegerNumber } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'isInteger';\nvar dependencies = ['typed'];\nexport var createIsInteger = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Test whether a value is an integer number.\n * The function supports `number`, `BigNumber`, and `Fraction`.\n *\n * The function is evaluated element-wise in case of Array or Matrix input.\n *\n * Syntax:\n *\n * math.isInteger(x)\n *\n * Examples:\n *\n * math.isInteger(2) // returns true\n * math.isInteger(0) // returns true\n * math.isInteger(0.5) // returns false\n * math.isInteger(math.bignumber(500)) // returns true\n * math.isInteger(math.fraction(4)) // returns true\n * math.isInteger('3') // returns true\n * math.isInteger([3, 0.5, -2]) // returns [true, false, true]\n * math.isInteger(math.complex('2-4i')) // throws an error\n *\n * See also:\n *\n * isNumeric, isPositive, isNegative, isZero\n *\n * @param {number | BigNumber | bigint | Fraction | Array | Matrix} x Value to be tested\n * @return {boolean} Returns true when `x` contains a numeric, integer value.\n * Throws an error in case of an unknown data type.\n */\n return typed(name, {\n number: isIntegerNumber,\n // TODO: what to do with isInteger(add(0.1, 0.2)) ?\n\n BigNumber: function BigNumber(x) {\n return x.isInt();\n },\n bigint: function bigint(x) {\n return true;\n },\n Fraction: function Fraction(x) {\n return x.d === 1n;\n },\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { cbrt, expm1, isInteger, log10, log1p, log2, sign, toFixed } from '../../utils/number.js';\nvar n1 = 'number';\nvar n2 = 'number, number';\nexport function absNumber(a) {\n return Math.abs(a);\n}\nabsNumber.signature = n1;\nexport function addNumber(a, b) {\n return a + b;\n}\naddNumber.signature = n2;\nexport function subtractNumber(a, b) {\n return a - b;\n}\nsubtractNumber.signature = n2;\nexport function multiplyNumber(a, b) {\n return a * b;\n}\nmultiplyNumber.signature = n2;\nexport function divideNumber(a, b) {\n return a / b;\n}\ndivideNumber.signature = n2;\nexport function unaryMinusNumber(x) {\n return -x;\n}\nunaryMinusNumber.signature = n1;\nexport function unaryPlusNumber(x) {\n return x;\n}\nunaryPlusNumber.signature = n1;\nexport function cbrtNumber(x) {\n return cbrt(x);\n}\ncbrtNumber.signature = n1;\nexport function cubeNumber(x) {\n return x * x * x;\n}\ncubeNumber.signature = n1;\nexport function expNumber(x) {\n return Math.exp(x);\n}\nexpNumber.signature = n1;\nexport function expm1Number(x) {\n return expm1(x);\n}\nexpm1Number.signature = n1;\n\n/**\n * Calculate gcd for numbers\n * @param {number} a\n * @param {number} b\n * @returns {number} Returns the greatest common denominator of a and b\n */\nexport function gcdNumber(a, b) {\n if (!isInteger(a) || !isInteger(b)) {\n throw new Error('Parameters in function gcd must be integer numbers');\n }\n\n // https://en.wikipedia.org/wiki/Euclidean_algorithm\n var r;\n while (b !== 0) {\n r = a % b;\n a = b;\n b = r;\n }\n return a < 0 ? -a : a;\n}\ngcdNumber.signature = n2;\n\n/**\n * Calculate lcm for two numbers\n * @param {number} a\n * @param {number} b\n * @returns {number} Returns the least common multiple of a and b\n */\nexport function lcmNumber(a, b) {\n if (!isInteger(a) || !isInteger(b)) {\n throw new Error('Parameters in function lcm must be integer numbers');\n }\n if (a === 0 || b === 0) {\n return 0;\n }\n\n // https://en.wikipedia.org/wiki/Euclidean_algorithm\n // evaluate lcm here inline to reduce overhead\n var t;\n var prod = a * b;\n while (b !== 0) {\n t = b;\n b = a % t;\n a = t;\n }\n return Math.abs(prod / a);\n}\nlcmNumber.signature = n2;\n\n/**\n * Calculate the logarithm of a value, optionally to a given base.\n * @param {number} x\n * @param {number | null | undefined} base\n * @return {number}\n */\nexport function logNumber(x, y) {\n if (y) {\n return Math.log(x) / Math.log(y);\n }\n return Math.log(x);\n}\n\n/**\n * Calculate the 10-base logarithm of a number\n * @param {number} x\n * @return {number}\n */\nexport function log10Number(x) {\n return log10(x);\n}\nlog10Number.signature = n1;\n\n/**\n * Calculate the 2-base logarithm of a number\n * @param {number} x\n * @return {number}\n */\nexport function log2Number(x) {\n return log2(x);\n}\nlog2Number.signature = n1;\n\n/**\n * Calculate the natural logarithm of a `number+1`\n * @param {number} x\n * @returns {number}\n */\nexport function log1pNumber(x) {\n return log1p(x);\n}\nlog1pNumber.signature = n1;\n\n/**\n * Calculate the modulus of two numbers\n * @param {number} x\n * @param {number} y\n * @returns {number} res\n * @private\n */\nexport function modNumber(x, y) {\n // We don't use JavaScript's % operator here as this doesn't work\n // correctly for x < 0 and x === 0\n // see https://en.wikipedia.org/wiki/Modulo_operation\n return y === 0 ? x : x - y * Math.floor(x / y);\n}\nmodNumber.signature = n2;\n\n/**\n * Calculate the nth root of a, solve x^root == a\n * http://rosettacode.org/wiki/Nth_root#JavaScript\n * @param {number} a\n * @param {number} [2] root\n * @private\n */\nexport function nthRootNumber(a) {\n var root = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n var inv = root < 0;\n if (inv) {\n root = -root;\n }\n if (root === 0) {\n throw new Error('Root must be non-zero');\n }\n if (a < 0 && Math.abs(root) % 2 !== 1) {\n throw new Error('Root must be odd when a is negative.');\n }\n\n // edge cases zero and infinity\n if (a === 0) {\n return inv ? Infinity : 0;\n }\n if (!isFinite(a)) {\n return inv ? 0 : a;\n }\n var x = Math.pow(Math.abs(a), 1 / root);\n // If a < 0, we require that root is an odd integer,\n // so (-1) ^ (1/root) = -1\n x = a < 0 ? -x : x;\n return inv ? 1 / x : x;\n\n // Very nice algorithm, but fails with nthRoot(-2, 3).\n // Newton's method has some well-known problems at times:\n // https://en.wikipedia.org/wiki/Newton%27s_method#Failure_analysis\n /*\n let x = 1 // Initial guess\n let xPrev = 1\n let i = 0\n const iMax = 10000\n do {\n const delta = (a / Math.pow(x, root - 1) - x) / root\n xPrev = x\n x = x + delta\n i++\n }\n while (xPrev !== x && i < iMax)\n if (xPrev !== x) {\n throw new Error('Function nthRoot failed to converge')\n }\n return inv ? 1 / x : x\n */\n}\nexport function signNumber(x) {\n return sign(x);\n}\nsignNumber.signature = n1;\nexport function sqrtNumber(x) {\n return Math.sqrt(x);\n}\nsqrtNumber.signature = n1;\nexport function squareNumber(x) {\n return x * x;\n}\nsquareNumber.signature = n1;\n\n/**\n * Calculate xgcd for two numbers\n * @param {number} a\n * @param {number} b\n * @return {number} result\n * @private\n */\nexport function xgcdNumber(a, b) {\n // source: https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm\n var t; // used to swap two variables\n var q; // quotient\n var r; // remainder\n var x = 0;\n var lastx = 1;\n var y = 1;\n var lasty = 0;\n if (!isInteger(a) || !isInteger(b)) {\n throw new Error('Parameters in function xgcd must be integer numbers');\n }\n while (b) {\n q = Math.floor(a / b);\n r = a - q * b;\n t = x;\n x = lastx - q * x;\n lastx = t;\n t = y;\n y = lasty - q * y;\n lasty = t;\n a = b;\n b = r;\n }\n var res;\n if (a < 0) {\n res = [-a, -lastx, -lasty];\n } else {\n res = [a, a ? lastx : 0, lasty];\n }\n return res;\n}\nxgcdNumber.signature = n2;\n\n/**\n * Calculates the power of x to y, x^y, for two numbers.\n * @param {number} x\n * @param {number} y\n * @return {number} res\n */\nexport function powNumber(x, y) {\n // x^Infinity === 0 if -1 < x < 1\n // A real number 0 is returned instead of complex(0)\n if (x * x < 1 && y === Infinity || x * x > 1 && y === -Infinity) {\n return 0;\n }\n return Math.pow(x, y);\n}\npowNumber.signature = n2;\n\n/**\n * round a number to the given number of decimals, or to zero if decimals is\n * not provided\n * @param {number} value\n * @param {number} decimals number of decimals, between 0 and 15 (0 by default)\n * @return {number} roundedValue\n */\nexport function roundNumber(value) {\n var decimals = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n if (!isInteger(decimals) || decimals < 0 || decimals > 15) {\n throw new Error('Number of decimals in function round must be an integer from 0 to 15 inclusive');\n }\n return parseFloat(toFixed(value, decimals));\n}\n\n/**\n * Calculate the norm of a number, the absolute value.\n * @param {number} x\n * @return {number}\n */\nexport function normNumber(x) {\n return Math.abs(x);\n}\nnormNumber.signature = n1;", "import { isInteger } from '../../utils/number.js';\nvar n1 = 'number';\nvar n2 = 'number, number';\nexport function bitAndNumber(x, y) {\n if (!isInteger(x) || !isInteger(y)) {\n throw new Error('Integers expected in function bitAnd');\n }\n return x & y;\n}\nbitAndNumber.signature = n2;\nexport function bitNotNumber(x) {\n if (!isInteger(x)) {\n throw new Error('Integer expected in function bitNot');\n }\n return ~x;\n}\nbitNotNumber.signature = n1;\nexport function bitOrNumber(x, y) {\n if (!isInteger(x) || !isInteger(y)) {\n throw new Error('Integers expected in function bitOr');\n }\n return x | y;\n}\nbitOrNumber.signature = n2;\nexport function bitXorNumber(x, y) {\n if (!isInteger(x) || !isInteger(y)) {\n throw new Error('Integers expected in function bitXor');\n }\n return x ^ y;\n}\nbitXorNumber.signature = n2;\nexport function leftShiftNumber(x, y) {\n if (!isInteger(x) || !isInteger(y)) {\n throw new Error('Integers expected in function leftShift');\n }\n return x << y;\n}\nleftShiftNumber.signature = n2;\nexport function rightArithShiftNumber(x, y) {\n if (!isInteger(x) || !isInteger(y)) {\n throw new Error('Integers expected in function rightArithShift');\n }\n return x >> y;\n}\nrightArithShiftNumber.signature = n2;\nexport function rightLogShiftNumber(x, y) {\n if (!isInteger(x) || !isInteger(y)) {\n throw new Error('Integers expected in function rightLogShift');\n }\n return x >>> y;\n}\nrightLogShiftNumber.signature = n2;", "/** @param {number} i\n * @param {number} n\n * @returns {number} product of i to n\n */\nexport function product(i, n) {\n if (n < i) {\n return 1;\n }\n if (n === i) {\n return n;\n }\n var half = n + i >> 1; // divide (n + i) by 2 and truncate to integer\n return product(i, half) * product(half + 1, n);\n}", "import { isInteger } from '../../utils/number.js';\nimport { product } from '../../utils/product.js';\nexport function combinationsNumber(n, k) {\n if (!isInteger(n) || n < 0) {\n throw new TypeError('Positive integer value expected in function combinations');\n }\n if (!isInteger(k) || k < 0) {\n throw new TypeError('Positive integer value expected in function combinations');\n }\n if (k > n) {\n throw new TypeError('k must be less than or equal to n');\n }\n var nMinusk = n - k;\n var answer = 1;\n var firstnumerator = k < nMinusk ? nMinusk + 1 : k + 1;\n var nextdivisor = 2;\n var lastdivisor = k < nMinusk ? k : nMinusk;\n // balance multiplications and divisions to try to keep intermediate values\n // in exact-integer range as long as possible\n for (var nextnumerator = firstnumerator; nextnumerator <= n; ++nextnumerator) {\n answer *= nextnumerator;\n while (nextdivisor <= lastdivisor && answer % nextdivisor === 0) {\n answer /= nextdivisor;\n ++nextdivisor;\n }\n }\n // for big n, k, floating point may have caused weirdness in remainder\n if (nextdivisor <= lastdivisor) {\n answer /= product(nextdivisor, lastdivisor);\n }\n return answer;\n}\ncombinationsNumber.signature = 'number, number';", "export var pi = Math.PI;\nexport var tau = 2 * Math.PI;\nexport var e = Math.E;\nexport var phi = 1.6180339887498948; // eslint-disable-line no-loss-of-precision", "var n1 = 'number';\nvar n2 = 'number, number';\nexport function notNumber(x) {\n return !x;\n}\nnotNumber.signature = n1;\nexport function orNumber(x, y) {\n return !!(x || y);\n}\norNumber.signature = n2;\nexport function xorNumber(x, y) {\n return !!x !== !!y;\n}\nxorNumber.signature = n2;\nexport function andNumber(x, y) {\n return !!(x && y);\n}\nandNumber.signature = n2;", "/* eslint-disable no-loss-of-precision */\n\nimport { isInteger } from '../../utils/number.js';\nimport { product } from '../../utils/product.js';\nexport function gammaNumber(n) {\n var x;\n if (isInteger(n)) {\n if (n <= 0) {\n return isFinite(n) ? Infinity : NaN;\n }\n if (n > 171) {\n return Infinity; // Will overflow\n }\n return product(1, n - 1);\n }\n if (n < 0.5) {\n return Math.PI / (Math.sin(Math.PI * n) * gammaNumber(1 - n));\n }\n if (n >= 171.35) {\n return Infinity; // will overflow\n }\n if (n > 85.0) {\n // Extended Stirling Approx\n var twoN = n * n;\n var threeN = twoN * n;\n var fourN = threeN * n;\n var fiveN = fourN * n;\n return Math.sqrt(2 * Math.PI / n) * Math.pow(n / Math.E, n) * (1 + 1 / (12 * n) + 1 / (288 * twoN) - 139 / (51840 * threeN) - 571 / (2488320 * fourN) + 163879 / (209018880 * fiveN) + 5246819 / (75246796800 * fiveN * n));\n }\n --n;\n x = gammaP[0];\n for (var i = 1; i < gammaP.length; ++i) {\n x += gammaP[i] / (n + i);\n }\n var t = n + gammaG + 0.5;\n return Math.sqrt(2 * Math.PI) * Math.pow(t, n + 0.5) * Math.exp(-t) * x;\n}\ngammaNumber.signature = 'number';\n\n// TODO: comment on the variables g and p\n\nexport var gammaG = 4.7421875;\nexport var gammaP = [0.99999999999999709182, 57.156235665862923517, -59.597960355475491248, 14.136097974741747174, -0.49191381609762019978, 0.33994649984811888699e-4, 0.46523628927048575665e-4, -0.98374475304879564677e-4, 0.15808870322491248884e-3, -0.21026444172410488319e-3, 0.21743961811521264320e-3, -0.16431810653676389022e-3, 0.84418223983852743293e-4, -0.26190838401581408670e-4, 0.36899182659531622704e-5];\n\n// lgamma implementation ref: https://mrob.com/pub/ries/lanczos-gamma.html#code\n\n// log(2 * pi) / 2\nexport var lnSqrt2PI = 0.91893853320467274178;\nexport var lgammaG = 5; // Lanczos parameter \"g\"\nexport var lgammaN = 7; // Range of coefficients \"n\"\n\nexport var lgammaSeries = [1.000000000190015, 76.18009172947146, -86.50532032941677, 24.01409824083091, -1.231739572450155, 0.1208650973866179e-2, -0.5395239384953e-5];\nexport function lgammaNumber(n) {\n if (n < 0) return NaN;\n if (n === 0) return Infinity;\n if (!isFinite(n)) return n;\n if (n < 0.5) {\n // Use Euler's reflection formula:\n // gamma(z) = PI / (sin(PI * z) * gamma(1 - z))\n return Math.log(Math.PI / Math.sin(Math.PI * n)) - lgammaNumber(1 - n);\n }\n\n // Compute the logarithm of the Gamma function using the Lanczos method\n\n n = n - 1;\n var base = n + lgammaG + 0.5; // Base of the Lanczos exponential\n var sum = lgammaSeries[0];\n\n // We start with the terms that have the smallest coefficients and largest denominator\n for (var i = lgammaN - 1; i >= 1; i--) {\n sum += lgammaSeries[i] / (n + i);\n }\n return lnSqrt2PI + (n + 0.5) * Math.log(base) - base + Math.log(sum);\n}\nlgammaNumber.signature = 'number';", "import { acosh, asinh, atanh, cosh, sign, sinh, tanh } from '../../utils/number.js';\nvar n1 = 'number';\nvar n2 = 'number, number';\nexport function acosNumber(x) {\n return Math.acos(x);\n}\nacosNumber.signature = n1;\nexport function acoshNumber(x) {\n return acosh(x);\n}\nacoshNumber.signature = n1;\nexport function acotNumber(x) {\n return Math.atan(1 / x);\n}\nacotNumber.signature = n1;\nexport function acothNumber(x) {\n return isFinite(x) ? (Math.log((x + 1) / x) + Math.log(x / (x - 1))) / 2 : 0;\n}\nacothNumber.signature = n1;\nexport function acscNumber(x) {\n return Math.asin(1 / x);\n}\nacscNumber.signature = n1;\nexport function acschNumber(x) {\n var xInv = 1 / x;\n return Math.log(xInv + Math.sqrt(xInv * xInv + 1));\n}\nacschNumber.signature = n1;\nexport function asecNumber(x) {\n return Math.acos(1 / x);\n}\nasecNumber.signature = n1;\nexport function asechNumber(x) {\n var xInv = 1 / x;\n var ret = Math.sqrt(xInv * xInv - 1);\n return Math.log(ret + xInv);\n}\nasechNumber.signature = n1;\nexport function asinNumber(x) {\n return Math.asin(x);\n}\nasinNumber.signature = n1;\nexport function asinhNumber(x) {\n return asinh(x);\n}\nasinhNumber.signature = n1;\nexport function atanNumber(x) {\n return Math.atan(x);\n}\natanNumber.signature = n1;\nexport function atan2Number(y, x) {\n return Math.atan2(y, x);\n}\natan2Number.signature = n2;\nexport function atanhNumber(x) {\n return atanh(x);\n}\natanhNumber.signature = n1;\nexport function cosNumber(x) {\n return Math.cos(x);\n}\ncosNumber.signature = n1;\nexport function coshNumber(x) {\n return cosh(x);\n}\ncoshNumber.signature = n1;\nexport function cotNumber(x) {\n return 1 / Math.tan(x);\n}\ncotNumber.signature = n1;\nexport function cothNumber(x) {\n var e = Math.exp(2 * x);\n return (e + 1) / (e - 1);\n}\ncothNumber.signature = n1;\nexport function cscNumber(x) {\n return 1 / Math.sin(x);\n}\ncscNumber.signature = n1;\nexport function cschNumber(x) {\n // consider values close to zero (+/-)\n if (x === 0) {\n return Number.POSITIVE_INFINITY;\n } else {\n return Math.abs(2 / (Math.exp(x) - Math.exp(-x))) * sign(x);\n }\n}\ncschNumber.signature = n1;\nexport function secNumber(x) {\n return 1 / Math.cos(x);\n}\nsecNumber.signature = n1;\nexport function sechNumber(x) {\n return 2 / (Math.exp(x) + Math.exp(-x));\n}\nsechNumber.signature = n1;\nexport function sinNumber(x) {\n return Math.sin(x);\n}\nsinNumber.signature = n1;\nexport function sinhNumber(x) {\n return sinh(x);\n}\nsinhNumber.signature = n1;\nexport function tanNumber(x) {\n return Math.tan(x);\n}\ntanNumber.signature = n1;\nexport function tanhNumber(x) {\n return tanh(x);\n}\ntanhNumber.signature = n1;", "import { isInteger } from '../../utils/number.js';\nvar n1 = 'number';\nexport function isIntegerNumber(x) {\n return isInteger(x);\n}\nisIntegerNumber.signature = n1;\nexport function isNegativeNumber(x) {\n return x < 0;\n}\nisNegativeNumber.signature = n1;\nexport function isPositiveNumber(x) {\n return x > 0;\n}\nisPositiveNumber.signature = n1;\nexport function isZeroNumber(x) {\n return x === 0;\n}\nisZeroNumber.signature = n1;\nexport function isNaNNumber(x) {\n return Number.isNaN(x);\n}\nisNaNNumber.signature = n1;", "/**\n * Compares two BigNumbers.\n * @param {BigNumber} a - First value to compare\n * @param {BigNumber} b - Second value to compare\n * @param {number} [relTol=1e-09] - The relative tolerance, indicating the maximum allowed difference relative to the larger absolute value. Must be greater than 0.\n * @param {number} [absTol=0] - The minimum absolute tolerance, useful for comparisons near zero. Must be at least 0.\n * @returns {boolean} whether the two numbers are nearly equal\n * @throws {Error} If `relTol` is less than or equal to 0.\n * @throws {Error} If `absTol` is less than 0.\n *\n * @example\n * nearlyEqual(1.000000001, 1.0, 1e-9); // true\n * nearlyEqual(1.000000002, 1.0, 0); // false\n * nearlyEqual(1.0, 1.009, undefined, 0.02); // true\n * nearlyEqual(0.000000001, 0.0, undefined, 1e-8); // true\n */\nexport function nearlyEqual(a, b) {\n var relTol = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1e-9;\n var absTol = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n if (relTol <= 0) {\n throw new Error('Relative tolerance must be greater than 0');\n }\n if (absTol < 0) {\n throw new Error('Absolute tolerance must be at least 0');\n }\n // NaN\n if (a.isNaN() || b.isNaN()) {\n return false;\n }\n if (!a.isFinite() || !b.isFinite()) {\n return a.eq(b);\n }\n // use \"==\" operator, handles infinities\n if (a.eq(b)) {\n return true;\n }\n // abs(a-b) <= max(relTol * max(abs(a), abs(b)), absTol)\n return a.minus(b).abs().lte(a.constructor.max(a.constructor.max(a.abs(), b.abs()).mul(relTol), absTol));\n}", "import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { isNegativeNumber } from '../../plain/number/index.js';\nimport { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { nearlyEqual } from '../../utils/number.js';\nvar name = 'isNegative';\nvar dependencies = ['typed', 'config'];\nexport var createIsNegative = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config\n } = _ref;\n /**\n * Test whether a value is negative: smaller than zero.\n * The function supports types `number`, `BigNumber`, `Fraction`, and `Unit`.\n *\n * The function is evaluated element-wise in case of Array or Matrix input.\n *\n * Syntax:\n *\n * math.isNegative(x)\n *\n * Examples:\n *\n * math.isNegative(3) // returns false\n * math.isNegative(-2) // returns true\n * math.isNegative(0) // returns false\n * math.isNegative(-0) // returns false\n * math.isNegative(math.bignumber(2)) // returns false\n * math.isNegative(math.fraction(-2, 5)) // returns true\n * math.isNegative('-2') // returns true\n * math.isNegative([2, 0, -3]) // returns [false, false, true]\n *\n * See also:\n *\n * isNumeric, isPositive, isZero, isInteger\n *\n * @param {number | BigNumber | bigint | Fraction | Unit | Array | Matrix} x Value to be tested\n * @return {boolean} Returns true when `x` is larger than zero.\n * Throws an error in case of an unknown data type.\n */\n return typed(name, {\n number: x => nearlyEqual(x, 0, config.relTol, config.absTol) ? false : isNegativeNumber(x),\n BigNumber: x => bigNearlyEqual(x, new x.constructor(0), config.relTol, config.absTol) ? false : x.isNeg() && !x.isZero() && !x.isNaN(),\n bigint: x => x < 0n,\n Fraction: x => x.s < 0n,\n // It's enough to decide on the sign\n\n Unit: typed.referToSelf(self => x => typed.find(self, x.valueType())(x.value)),\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'isNumeric';\nvar dependencies = ['typed'];\nexport var createIsNumeric = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Test whether a value is an numeric value.\n *\n * The function is evaluated element-wise in case of Array or Matrix input.\n *\n * Syntax:\n *\n * math.isNumeric(x)\n *\n * Examples:\n *\n * math.isNumeric(2) // returns true\n * math.isNumeric('2') // returns false\n * math.hasNumericValue('2') // returns true\n * math.isNumeric(0) // returns true\n * math.isNumeric(math.bignumber('42')) // returns true\n * math.isNumeric(math.bigint('42')) // returns true\n * math.isNumeric(math.fraction(4)) // returns true\n * math.isNumeric(math.complex('2-4i')) // returns false\n * math.isNumeric([2.3, 'foo', false]) // returns [true, false, true]\n *\n * See also:\n *\n * isZero, isPositive, isNegative, isInteger, hasNumericValue\n *\n * @param {*} x Value to be tested\n * @return {boolean} Returns true when `x` is a `number`, `BigNumber`,\n * `Fraction`, or `boolean`. Returns false for other types.\n * Throws an error in case of unknown types.\n */\n return typed(name, {\n 'number | BigNumber | bigint | Fraction | boolean': () => true,\n 'Complex | Unit | string | null | undefined | Node': () => false,\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'hasNumericValue';\nvar dependencies = ['typed', 'isNumeric'];\nexport var createHasNumericValue = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n isNumeric\n } = _ref;\n /**\n * Test whether a value is an numeric value.\n *\n * In case of a string, true is returned if the string contains a numeric value.\n *\n * Syntax:\n *\n * math.hasNumericValue(x)\n *\n * Examples:\n *\n * math.hasNumericValue(2) // returns true\n * math.hasNumericValue('2') // returns true\n * math.isNumeric('2') // returns false\n * math.hasNumericValue(0) // returns true\n * math.hasNumericValue(math.bignumber('500')) // returns true\n * math.hasNumericValue(math.bigint('42')) // returns true\n * math.hasNumericValue(42n) // returns true\n * math.hasNumericValue(math.fraction(4)) // returns true\n * math.hasNumericValue(math.complex('2-4i')) // returns false\n * math.hasNumericValue(false) // returns true\n * math.hasNumericValue([2.3, 'foo', false]) // returns [true, false, true]\n *\n * See also:\n *\n * isZero, isPositive, isNegative, isInteger, isNumeric\n *\n * @param {*} x Value to be tested\n * @return {boolean} Returns true when `x` is a `number`, `BigNumber`,\n * `Fraction`, `Boolean`, or a `String` containing number. Returns false for other types.\n * Throws an error in case of unknown types.\n */\n return typed(name, {\n boolean: () => true,\n string: function string(x) {\n return x.trim().length > 0 && !isNaN(Number(x));\n },\n any: function any(x) {\n return isNumeric(x);\n }\n });\n});", "import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { isPositiveNumber } from '../../plain/number/index.js';\nimport { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { nearlyEqual } from '../../utils/number.js';\nvar name = 'isPositive';\nvar dependencies = ['typed', 'config'];\nexport var createIsPositive = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config\n } = _ref;\n /**\n * Test whether a value is positive: larger than zero.\n * The function supports types `number`, `BigNumber`, `Fraction`, and `Unit`.\n *\n * The function is evaluated element-wise in case of Array or Matrix input.\n *\n * Syntax:\n *\n * math.isPositive(x)\n *\n * Examples:\n *\n * math.isPositive(3) // returns true\n * math.isPositive(-2) // returns false\n * math.isPositive(0) // returns false\n * math.isPositive(-0) // returns false\n * math.isPositive(0.5) // returns true\n * math.isPositive(math.bignumber(2)) // returns true\n * math.isPositive(math.fraction(-2, 5)) // returns false\n * math.isPositive(math.fraction(1, 3)) // returns true\n * math.isPositive('2') // returns true\n * math.isPositive([2, 0, -3]) // returns [true, false, false]\n *\n * See also:\n *\n * isNumeric, isZero, isNegative, isInteger\n *\n * @param {number | BigNumber | bigint | Fraction | Unit | Array | Matrix} x Value to be tested\n * @return {boolean} Returns true when `x` is larger than zero.\n * Throws an error in case of an unknown data type.\n */\n return typed(name, {\n number: x => nearlyEqual(x, 0, config.relTol, config.absTol) ? false : isPositiveNumber(x),\n BigNumber: x => bigNearlyEqual(x, new x.constructor(0), config.relTol, config.absTol) ? false : !x.isNeg() && !x.isZero() && !x.isNaN(),\n bigint: x => x > 0n,\n Fraction: x => x.s > 0n && x.n > 0n,\n Unit: typed.referToSelf(self => x => typed.find(self, x.valueType())(x.value)),\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'isZero';\nvar dependencies = ['typed', 'equalScalar'];\nexport var createIsZero = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar\n } = _ref;\n /**\n * Test whether a value is zero.\n * The function can check for zero for types `number`, `BigNumber`, `Fraction`,\n * `Complex`, and `Unit`.\n *\n * The function is evaluated element-wise in case of Array or Matrix input.\n *\n * Syntax:\n *\n * math.isZero(x)\n *\n * Examples:\n *\n * math.isZero(0) // returns true\n * math.isZero(2) // returns false\n * math.isZero(0.5) // returns false\n * math.isZero(math.bignumber(0)) // returns true\n * math.isZero(math.fraction(0)) // returns true\n * math.isZero(math.fraction(1,3)) // returns false\n * math.isZero(math.complex('2 - 4i')) // returns false\n * math.isZero(math.complex('0i')) // returns true\n * math.isZero('0') // returns true\n * math.isZero('2') // returns false\n * math.isZero([2, 0, -3]) // returns [false, true, false]\n *\n * See also:\n *\n * isNumeric, isPositive, isNegative, isInteger\n *\n * @param {number | BigNumber | bigint | Complex | Fraction | Unit | Array | Matrix} x Value to be tested\n * @return {boolean} Returns true when `x` is zero.\n * Throws an error in case of an unknown data type.\n */\n return typed(name, {\n 'number | BigNumber | Complex | Fraction': x => equalScalar(x, 0),\n bigint: x => x === 0n,\n Unit: typed.referToSelf(self => x => typed.find(self, x.valueType())(x.value)),\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { isNaNNumber } from '../../plain/number/index.js';\nvar name = 'isNaN';\nvar dependencies = ['typed'];\nexport var createIsNaN = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Test whether a value is NaN (not a number).\n * The function supports types `number`, `BigNumber`, `Fraction`, `Unit` and `Complex`.\n *\n * The function is evaluated element-wise in case of Array or Matrix input.\n *\n * Syntax:\n *\n * math.isNaN(x)\n *\n * Examples:\n *\n * math.isNaN(3) // returns false\n * math.isNaN(NaN) // returns true\n * math.isNaN(0) // returns false\n * math.isNaN(math.bignumber(NaN)) // returns true\n * math.isNaN(math.bignumber(0)) // returns false\n * math.isNaN(math.fraction(-2, 5)) // returns false\n * math.isNaN('-2') // returns false\n * math.isNaN([2, 0, -3, NaN]) // returns [false, false, false, true]\n *\n * See also:\n *\n * isNumeric, isNegative, isPositive, isZero, isInteger\n *\n * @param {number | BigNumber | bigint | Fraction | Unit | Array | Matrix} x Value to be tested\n * @return {boolean} Returns true when `x` is NaN.\n * Throws an error in case of an unknown data type.\n */\n return typed(name, {\n number: isNaNNumber,\n BigNumber: function BigNumber(x) {\n return x.isNaN();\n },\n bigint: function bigint(x) {\n return false;\n },\n Fraction: function Fraction(x) {\n return false;\n },\n Complex: function Complex(x) {\n return x.isNaN();\n },\n Unit: function Unit(x) {\n return Number.isNaN(x.value);\n },\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { typeOf as _typeOf } from '../../utils/is.js';\nvar name = 'typeOf';\nvar dependencies = ['typed'];\nexport var createTypeOf = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Determine the type of an entity.\n *\n * Syntax:\n *\n * math.typeOf(x)\n *\n * Examples:\n *\n * // This list is intended to include all relevant types, for testing\n * // purposes:\n * math.typeOf(3.5) // returns 'number'\n * math.typeOf(42n) // returns 'bigint'\n * math.typeOf(math.complex('2-4i')) // returns 'Complex'\n * math.typeOf(math.unit('45 deg')) // returns 'Unit'\n * math.typeOf('hello world') // returns 'string'\n * math.typeOf(null) // returns 'null'\n * math.typeOf(true) // returns 'boolean'\n * math.typeOf([1, 2, 3]) // returns 'Array'\n * math.typeOf(new Date()) // returns 'Date'\n * math.typeOf(function () {}) // returns 'function'\n * math.typeOf({a: 2, b: 3}) // returns 'Object'\n * math.typeOf(/a regexp/) // returns 'RegExp'\n * math.typeOf(undefined) // returns 'undefined'\n * math.typeOf(math.bignumber('23e99')) // returns 'BigNumber'\n * math.typeOf(math.chain(2)) // returns 'Chain'\n * math.typeOf(math.fraction(1, 3)) // returns 'Fraction'\n * math.typeOf(math.help('sqrt')) // returns 'Help'\n * math.typeOf(math.index(1, 3)) // returns 'Index'\n * math.typeOf(math.matrix([[1],[3]])) // returns 'DenseMatrix'\n * math.typeOf(math.matrix([],'sparse')) // returns 'SparseMatrix'\n * math.typeOf(new math.Range(0, 10)) // returns 'Range'\n * math.typeOf(math.evaluate('a=2\\na')) // returns 'ResultSet'\n * math.typeOf(math.parse('A[2]')) // returns 'AccessorNode'\n * math.typeOf(math.parse('[1,2,3]')) // returns 'ArrayNode'\n * math.typeOf(math.parse('x=2')) // returns 'AssignmentNode'\n * math.typeOf(math.parse('a=2; b=3')) // returns 'BlockNode'\n * math.typeOf(math.parse('x<0?-1:1')) // returns 'ConditionalNode'\n * math.typeOf(math.parse('2.3')) // returns 'ConstantNode'\n * math.typeOf(math.parse('f(x)=x^2')) // returns 'FunctionAssignmentNode'\n * math.typeOf(math.parse('sqrt(4)')) // returns 'FunctionNode'\n * math.typeOf(math.parse('A[2]').index) // returns 'IndexNode'\n * math.typeOf(math.parse('{a:2}')) // returns 'ObjectNode'\n * math.typeOf(math.parse('(2+3)')) // returns 'ParenthesisNode'\n * math.typeOf(math.parse('1:10')) // returns 'RangeNode'\n * math.typeOf(math.parse('a {\n var {\n typed\n } = _ref;\n return {\n 'Unit, Unit': typed.referToSelf(self => (x, y) => {\n if (!x.equalBase(y)) {\n throw new Error('Cannot compare units with different base');\n }\n return typed.find(self, [x.valueType(), y.valueType()])(x.value, y.value);\n })\n };\n});", "import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { nearlyEqual } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nimport { complexEquals } from '../../utils/complex.js';\nimport { createCompareUnits } from './compareUnits.js';\nvar name = 'equalScalar';\nvar dependencies = ['typed', 'config'];\nexport var createEqualScalar = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config\n } = _ref;\n var compareUnits = createCompareUnits({\n typed\n });\n\n /**\n * Test whether two scalar values are nearly equal.\n *\n * @param {number | BigNumber | bigint | Fraction | boolean | Complex | Unit} x First value to compare\n * @param {number | BigNumber | bigint | Fraction | boolean | Complex} y Second value to compare\n * @return {boolean} Returns true when the compared values are equal, else returns false\n * @private\n */\n return typed(name, {\n 'boolean, boolean': function boolean_boolean(x, y) {\n return x === y;\n },\n 'number, number': function number_number(x, y) {\n return nearlyEqual(x, y, config.relTol, config.absTol);\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n return x.eq(y) || bigNearlyEqual(x, y, config.relTol, config.absTol);\n },\n 'bigint, bigint': function bigint_bigint(x, y) {\n return x === y;\n },\n 'Fraction, Fraction': function Fraction_Fraction(x, y) {\n return x.equals(y);\n },\n 'Complex, Complex': function Complex_Complex(x, y) {\n return complexEquals(x, y, config.relTol, config.absTol);\n }\n }, compareUnits);\n});\nexport var createEqualScalarNumber = factory(name, ['typed', 'config'], _ref2 => {\n var {\n typed,\n config\n } = _ref2;\n return typed(name, {\n 'number, number': function number_number(x, y) {\n return nearlyEqual(x, y, config.relTol, config.absTol);\n }\n });\n});", "import { isArray, isBigNumber, isCollection, isIndex, isMatrix, isNumber, isString, typeOf } from '../../utils/is.js';\nimport { isInteger } from '../../utils/number.js';\nimport { format } from '../../utils/string.js';\nimport { clone, deepStrictEqual } from '../../utils/object.js';\nimport { arraySize, getArrayDataType, processSizesWildcard, unsqueeze, validateIndex } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { DimensionError } from '../../error/DimensionError.js';\nimport { optimizeCallback } from '../../utils/optimizeCallback.js';\nvar name = 'SparseMatrix';\nvar dependencies = ['typed', 'equalScalar', 'Matrix'];\nexport var createSparseMatrixClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar,\n Matrix\n } = _ref;\n /**\n * Sparse Matrix implementation. This type implements\n * a [Compressed Column Storage](https://en.wikipedia.org/wiki/Sparse_matrix#Compressed_sparse_column_(CSC_or_CCS))\n * format for two-dimensional sparse matrices.\n * @class SparseMatrix\n */\n function SparseMatrix(data, datatype) {\n if (!(this instanceof SparseMatrix)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n if (datatype && !isString(datatype)) {\n throw new Error('Invalid datatype: ' + datatype);\n }\n if (isMatrix(data)) {\n // create from matrix\n _createFromMatrix(this, data, datatype);\n } else if (data && isArray(data.index) && isArray(data.ptr) && isArray(data.size)) {\n // initialize fields\n this._values = data.values;\n this._index = data.index;\n this._ptr = data.ptr;\n this._size = data.size;\n this._datatype = datatype || data.datatype;\n } else if (isArray(data)) {\n // create from array\n _createFromArray(this, data, datatype);\n } else if (data) {\n // unsupported type\n throw new TypeError('Unsupported type of data (' + typeOf(data) + ')');\n } else {\n // nothing provided\n this._values = [];\n this._index = [];\n this._ptr = [0];\n this._size = [0, 0];\n this._datatype = datatype;\n }\n }\n function _createFromMatrix(matrix, source, datatype) {\n // check matrix type\n if (source.type === 'SparseMatrix') {\n // clone arrays\n matrix._values = source._values ? clone(source._values) : undefined;\n matrix._index = clone(source._index);\n matrix._ptr = clone(source._ptr);\n matrix._size = clone(source._size);\n matrix._datatype = datatype || source._datatype;\n } else {\n // build from matrix data\n _createFromArray(matrix, source.valueOf(), datatype || source._datatype);\n }\n }\n function _createFromArray(matrix, data, datatype) {\n // initialize fields\n matrix._values = [];\n matrix._index = [];\n matrix._ptr = [];\n matrix._datatype = datatype;\n // discover rows & columns, do not use math.size() to avoid looping array twice\n var rows = data.length;\n var columns = 0;\n\n // equal signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n if (isString(datatype)) {\n // find signature that matches (datatype, datatype)\n eq = typed.find(equalScalar, [datatype, datatype]) || equalScalar;\n // convert 0 to the same datatype\n zero = typed.convert(0, datatype);\n }\n\n // check we have rows (empty array)\n if (rows > 0) {\n // column index\n var j = 0;\n do {\n // store pointer to values index\n matrix._ptr.push(matrix._index.length);\n // loop rows\n for (var i = 0; i < rows; i++) {\n // current row\n var row = data[i];\n // check row is an array\n if (isArray(row)) {\n // update columns if needed (only on first column)\n if (j === 0 && columns < row.length) {\n columns = row.length;\n }\n // check row has column\n if (j < row.length) {\n // value\n var v = row[j];\n // check value != 0\n if (!eq(v, zero)) {\n // store value\n matrix._values.push(v);\n // index\n matrix._index.push(i);\n }\n }\n } else {\n // update columns if needed (only on first column)\n if (j === 0 && columns < 1) {\n columns = 1;\n }\n // check value != 0 (row is a scalar)\n if (!eq(row, zero)) {\n // store value\n matrix._values.push(row);\n // index\n matrix._index.push(i);\n }\n }\n }\n // increment index\n j++;\n } while (j < columns);\n }\n // store number of values in ptr\n matrix._ptr.push(matrix._index.length);\n // size\n matrix._size = [rows, columns];\n }\n SparseMatrix.prototype = new Matrix();\n\n /**\n * Create a new SparseMatrix\n */\n SparseMatrix.prototype.createSparseMatrix = function (data, datatype) {\n return new SparseMatrix(data, datatype);\n };\n\n /**\n * Attach type information\n */\n Object.defineProperty(SparseMatrix, 'name', {\n value: 'SparseMatrix'\n });\n SparseMatrix.prototype.constructor = SparseMatrix;\n SparseMatrix.prototype.type = 'SparseMatrix';\n SparseMatrix.prototype.isSparseMatrix = true;\n\n /**\n * Get the matrix type\n *\n * Usage:\n * const matrixType = matrix.getDataType() // retrieves the matrix type\n *\n * @memberOf SparseMatrix\n * @return {string} type information; if multiple types are found from the Matrix, it will return \"mixed\"\n */\n SparseMatrix.prototype.getDataType = function () {\n return getArrayDataType(this._values, typeOf);\n };\n\n /**\n * Get the storage format used by the matrix.\n *\n * Usage:\n * const format = matrix.storage() // retrieve storage format\n *\n * @memberof SparseMatrix\n * @return {string} The storage format.\n */\n SparseMatrix.prototype.storage = function () {\n return 'sparse';\n };\n\n /**\n * Get the datatype of the data stored in the matrix.\n *\n * Usage:\n * const format = matrix.datatype() // retrieve matrix datatype\n *\n * @memberof SparseMatrix\n * @return {string} The datatype.\n */\n SparseMatrix.prototype.datatype = function () {\n return this._datatype;\n };\n\n /**\n * Create a new SparseMatrix\n * @memberof SparseMatrix\n * @param {Array} data\n * @param {string} [datatype]\n */\n SparseMatrix.prototype.create = function (data, datatype) {\n return new SparseMatrix(data, datatype);\n };\n\n /**\n * Get the matrix density.\n *\n * Usage:\n * const density = matrix.density() // retrieve matrix density\n *\n * @memberof SparseMatrix\n * @return {number} The matrix density.\n */\n SparseMatrix.prototype.density = function () {\n // rows & columns\n var rows = this._size[0];\n var columns = this._size[1];\n // calculate density\n return rows !== 0 && columns !== 0 ? this._index.length / (rows * columns) : 0;\n };\n\n /**\n * Get a subset of the matrix, or replace a subset of the matrix.\n *\n * Usage:\n * const subset = matrix.subset(index) // retrieve subset\n * const value = matrix.subset(index, replacement) // replace subset\n *\n * @memberof SparseMatrix\n * @param {Index} index\n * @param {Array | Matrix | *} [replacement]\n * @param {*} [defaultValue=0] Default value, filled in on new entries when\n * the matrix is resized. If not provided,\n * new matrix elements will be filled with zeros.\n */\n SparseMatrix.prototype.subset = function (index, replacement, defaultValue) {\n // check it is a pattern matrix\n if (!this._values) {\n throw new Error('Cannot invoke subset on a Pattern only matrix');\n }\n\n // check arguments\n switch (arguments.length) {\n case 1:\n return _getsubset(this, index);\n\n // intentional fall through\n case 2:\n case 3:\n return _setsubset(this, index, replacement, defaultValue);\n default:\n throw new SyntaxError('Wrong number of arguments');\n }\n };\n function _getsubset(matrix, idx) {\n // check idx\n if (!isIndex(idx)) {\n throw new TypeError('Invalid index');\n }\n var isScalar = idx.isScalar();\n if (isScalar) {\n // return a scalar\n return matrix.get(idx.min());\n }\n // validate dimensions\n var size = idx.size();\n if (size.length !== matrix._size.length) {\n throw new DimensionError(size.length, matrix._size.length);\n }\n\n // vars\n var i, ii, k, kk;\n\n // validate if any of the ranges in the index is out of range\n var min = idx.min();\n var max = idx.max();\n for (i = 0, ii = matrix._size.length; i < ii; i++) {\n validateIndex(min[i], matrix._size[i]);\n validateIndex(max[i], matrix._size[i]);\n }\n\n // matrix arrays\n var mvalues = matrix._values;\n var mindex = matrix._index;\n var mptr = matrix._ptr;\n\n // rows & columns dimensions for result matrix\n var rows = idx.dimension(0);\n var columns = idx.dimension(1);\n\n // workspace & permutation vector\n var w = [];\n var pv = [];\n\n // loop rows in resulting matrix\n rows.forEach(function (i, r) {\n // update permutation vector\n pv[i] = r[0];\n // mark i in workspace\n w[i] = true;\n });\n\n // result matrix arrays\n var values = mvalues ? [] : undefined;\n var index = [];\n var ptr = [];\n\n // loop columns in result matrix\n columns.forEach(function (j) {\n // update ptr\n ptr.push(index.length);\n // loop values in column j\n for (k = mptr[j], kk = mptr[j + 1]; k < kk; k++) {\n // row\n i = mindex[k];\n // check row is in result matrix\n if (w[i] === true) {\n // push index\n index.push(pv[i]);\n // check we need to process values\n if (values) {\n values.push(mvalues[k]);\n }\n }\n }\n });\n // update ptr\n ptr.push(index.length);\n\n // return matrix\n return new SparseMatrix({\n values,\n index,\n ptr,\n size,\n datatype: matrix._datatype\n });\n }\n function _setsubset(matrix, index, submatrix, defaultValue) {\n // check index\n if (!index || index.isIndex !== true) {\n throw new TypeError('Invalid index');\n }\n\n // get index size and check whether the index contains a single value\n var iSize = index.size();\n var isScalar = index.isScalar();\n\n // calculate the size of the submatrix, and convert it into an Array if needed\n var sSize;\n if (isMatrix(submatrix)) {\n // submatrix size\n sSize = submatrix.size();\n // use array representation\n submatrix = submatrix.toArray();\n } else {\n // get submatrix size (array, scalar)\n sSize = arraySize(submatrix);\n }\n\n // check index is a scalar\n if (isScalar) {\n // verify submatrix is a scalar\n if (sSize.length !== 0) {\n throw new TypeError('Scalar expected');\n }\n // set value\n matrix.set(index.min(), submatrix, defaultValue);\n } else {\n // validate dimensions, index size must be one or two dimensions\n if (iSize.length !== 1 && iSize.length !== 2) {\n throw new DimensionError(iSize.length, matrix._size.length, '<');\n }\n\n // check submatrix and index have the same dimensions\n if (sSize.length < iSize.length) {\n // calculate number of missing outer dimensions\n var i = 0;\n var outer = 0;\n while (iSize[i] === 1 && sSize[i] === 1) {\n i++;\n }\n while (iSize[i] === 1) {\n outer++;\n i++;\n }\n // unsqueeze both outer and inner dimensions\n submatrix = unsqueeze(submatrix, iSize.length, outer, sSize);\n }\n\n // check whether the size of the submatrix matches the index size\n if (!deepStrictEqual(iSize, sSize)) {\n throw new DimensionError(iSize, sSize, '>');\n }\n\n // insert the sub matrix\n if (iSize.length === 1) {\n // if the replacement index only has 1 dimension, go trough each one and set its value\n var range = index.dimension(0);\n range.forEach(function (dataIndex, subIndex) {\n validateIndex(dataIndex);\n matrix.set([dataIndex, 0], submatrix[subIndex[0]], defaultValue);\n });\n } else {\n // if the replacement index has 2 dimensions, go through each one and set the value in the correct index\n var firstDimensionRange = index.dimension(0);\n var secondDimensionRange = index.dimension(1);\n firstDimensionRange.forEach(function (firstDataIndex, firstSubIndex) {\n validateIndex(firstDataIndex);\n secondDimensionRange.forEach(function (secondDataIndex, secondSubIndex) {\n validateIndex(secondDataIndex);\n matrix.set([firstDataIndex, secondDataIndex], submatrix[firstSubIndex[0]][secondSubIndex[0]], defaultValue);\n });\n });\n }\n }\n return matrix;\n }\n\n /**\n * Get a single element from the matrix.\n * @memberof SparseMatrix\n * @param {number[]} index Zero-based index\n * @return {*} value\n */\n SparseMatrix.prototype.get = function (index) {\n if (!isArray(index)) {\n throw new TypeError('Array expected');\n }\n if (index.length !== this._size.length) {\n throw new DimensionError(index.length, this._size.length);\n }\n\n // check it is a pattern matrix\n if (!this._values) {\n throw new Error('Cannot invoke get on a Pattern only matrix');\n }\n\n // row and column\n var i = index[0];\n var j = index[1];\n\n // check i, j are valid\n validateIndex(i, this._size[0]);\n validateIndex(j, this._size[1]);\n\n // find value index\n var k = _getValueIndex(i, this._ptr[j], this._ptr[j + 1], this._index);\n // check k is prior to next column k and it is in the correct row\n if (k < this._ptr[j + 1] && this._index[k] === i) {\n return this._values[k];\n }\n return 0;\n };\n\n /**\n * Replace a single element in the matrix.\n * @memberof SparseMatrix\n * @param {number[]} index Zero-based index\n * @param {*} v\n * @param {*} [defaultValue] Default value, filled in on new entries when\n * the matrix is resized. If not provided,\n * new matrix elements will be set to zero.\n * @return {SparseMatrix} self\n */\n SparseMatrix.prototype.set = function (index, v, defaultValue) {\n if (!isArray(index)) {\n throw new TypeError('Array expected');\n }\n if (index.length !== this._size.length) {\n throw new DimensionError(index.length, this._size.length);\n }\n\n // check it is a pattern matrix\n if (!this._values) {\n throw new Error('Cannot invoke set on a Pattern only matrix');\n }\n\n // row and column\n var i = index[0];\n var j = index[1];\n\n // rows & columns\n var rows = this._size[0];\n var columns = this._size[1];\n\n // equal signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n if (isString(this._datatype)) {\n // find signature that matches (datatype, datatype)\n eq = typed.find(equalScalar, [this._datatype, this._datatype]) || equalScalar;\n // convert 0 to the same datatype\n zero = typed.convert(0, this._datatype);\n }\n\n // check we need to resize matrix\n if (i > rows - 1 || j > columns - 1) {\n // resize matrix\n _resize(this, Math.max(i + 1, rows), Math.max(j + 1, columns), defaultValue);\n // update rows & columns\n rows = this._size[0];\n columns = this._size[1];\n }\n\n // check i, j are valid\n validateIndex(i, rows);\n validateIndex(j, columns);\n\n // find value index\n var k = _getValueIndex(i, this._ptr[j], this._ptr[j + 1], this._index);\n // check k is prior to next column k and it is in the correct row\n if (k < this._ptr[j + 1] && this._index[k] === i) {\n // check value != 0\n if (!eq(v, zero)) {\n // update value\n this._values[k] = v;\n } else {\n // remove value from matrix\n _remove(k, j, this._values, this._index, this._ptr);\n }\n } else {\n if (!eq(v, zero)) {\n // insert value @ (i, j)\n _insert(k, i, j, v, this._values, this._index, this._ptr);\n }\n }\n return this;\n };\n function _getValueIndex(i, top, bottom, index) {\n // check row is on the bottom side\n if (bottom - top === 0) {\n return bottom;\n }\n // loop rows [top, bottom[\n for (var r = top; r < bottom; r++) {\n // check we found value index\n if (index[r] === i) {\n return r;\n }\n }\n // we did not find row\n return top;\n }\n function _remove(k, j, values, index, ptr) {\n // remove value @ k\n values.splice(k, 1);\n index.splice(k, 1);\n // update pointers\n for (var x = j + 1; x < ptr.length; x++) {\n ptr[x]--;\n }\n }\n function _insert(k, i, j, v, values, index, ptr) {\n // insert value\n values.splice(k, 0, v);\n // update row for k\n index.splice(k, 0, i);\n // update column pointers\n for (var x = j + 1; x < ptr.length; x++) {\n ptr[x]++;\n }\n }\n\n /**\n * Resize the matrix to the given size. Returns a copy of the matrix when\n * `copy=true`, otherwise return the matrix itself (resize in place).\n *\n * @memberof SparseMatrix\n * @param {number[] | Matrix} size The new size the matrix should have.\n * Since sparse matrices are always two-dimensional,\n * size must be two numbers in either an array or a matrix\n * @param {*} [defaultValue=0] Default value, filled in on new entries.\n * If not provided, the matrix elements will\n * be filled with zeros.\n * @param {boolean} [copy] Return a resized copy of the matrix\n *\n * @return {Matrix} The resized matrix\n */\n SparseMatrix.prototype.resize = function (size, defaultValue, copy) {\n // validate arguments\n if (!isCollection(size)) {\n throw new TypeError('Array or Matrix expected');\n }\n\n // SparseMatrix input is always 2d, flatten this into 1d if it's indeed a vector\n var sizeArray = size.valueOf().map(value => {\n return Array.isArray(value) && value.length === 1 ? value[0] : value;\n });\n if (sizeArray.length !== 2) {\n throw new Error('Only two dimensions matrix are supported');\n }\n\n // check sizes\n sizeArray.forEach(function (value) {\n if (!isNumber(value) || !isInteger(value) || value < 0) {\n throw new TypeError('Invalid size, must contain positive integers ' + '(size: ' + format(sizeArray) + ')');\n }\n });\n\n // matrix to resize\n var m = copy ? this.clone() : this;\n // resize matrix\n return _resize(m, sizeArray[0], sizeArray[1], defaultValue);\n };\n function _resize(matrix, rows, columns, defaultValue) {\n // value to insert at the time of growing matrix\n var value = defaultValue || 0;\n\n // equal signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n if (isString(matrix._datatype)) {\n // find signature that matches (datatype, datatype)\n eq = typed.find(equalScalar, [matrix._datatype, matrix._datatype]) || equalScalar;\n // convert 0 to the same datatype\n zero = typed.convert(0, matrix._datatype);\n // convert value to the same datatype\n value = typed.convert(value, matrix._datatype);\n }\n\n // should we insert the value?\n var ins = !eq(value, zero);\n\n // old columns and rows\n var r = matrix._size[0];\n var c = matrix._size[1];\n var i, j, k;\n\n // check we need to increase columns\n if (columns > c) {\n // loop new columns\n for (j = c; j < columns; j++) {\n // update matrix._ptr for current column\n matrix._ptr[j] = matrix._values.length;\n // check we need to insert matrix._values\n if (ins) {\n // loop rows\n for (i = 0; i < r; i++) {\n // add new matrix._values\n matrix._values.push(value);\n // update matrix._index\n matrix._index.push(i);\n }\n }\n }\n // store number of matrix._values in matrix._ptr\n matrix._ptr[columns] = matrix._values.length;\n } else if (columns < c) {\n // truncate matrix._ptr\n matrix._ptr.splice(columns + 1, c - columns);\n // truncate matrix._values and matrix._index\n matrix._values.splice(matrix._ptr[columns], matrix._values.length);\n matrix._index.splice(matrix._ptr[columns], matrix._index.length);\n }\n // update columns\n c = columns;\n\n // check we need to increase rows\n if (rows > r) {\n // check we have to insert values\n if (ins) {\n // inserts\n var n = 0;\n // loop columns\n for (j = 0; j < c; j++) {\n // update matrix._ptr for current column\n matrix._ptr[j] = matrix._ptr[j] + n;\n // where to insert matrix._values\n k = matrix._ptr[j + 1] + n;\n // pointer\n var p = 0;\n // loop new rows, initialize pointer\n for (i = r; i < rows; i++, p++) {\n // add value\n matrix._values.splice(k + p, 0, value);\n // update matrix._index\n matrix._index.splice(k + p, 0, i);\n // increment inserts\n n++;\n }\n }\n // store number of matrix._values in matrix._ptr\n matrix._ptr[c] = matrix._values.length;\n }\n } else if (rows < r) {\n // deletes\n var d = 0;\n // loop columns\n for (j = 0; j < c; j++) {\n // update matrix._ptr for current column\n matrix._ptr[j] = matrix._ptr[j] - d;\n // where matrix._values start for next column\n var k0 = matrix._ptr[j];\n var k1 = matrix._ptr[j + 1] - d;\n // loop matrix._index\n for (k = k0; k < k1; k++) {\n // row\n i = matrix._index[k];\n // check we need to delete value and matrix._index\n if (i > rows - 1) {\n // remove value\n matrix._values.splice(k, 1);\n // remove item from matrix._index\n matrix._index.splice(k, 1);\n // increase deletes\n d++;\n }\n }\n }\n // update matrix._ptr for current column\n matrix._ptr[j] = matrix._values.length;\n }\n // update matrix._size\n matrix._size[0] = rows;\n matrix._size[1] = columns;\n // return matrix\n return matrix;\n }\n\n /**\n * Reshape the matrix to the given size. Returns a copy of the matrix when\n * `copy=true`, otherwise return the matrix itself (reshape in place).\n *\n * NOTE: This might be better suited to copy by default, instead of modifying\n * in place. For now, it operates in place to remain consistent with\n * resize().\n *\n * @memberof SparseMatrix\n * @param {number[]} sizes The new size the matrix should have.\n * Since sparse matrices are always two-dimensional,\n * size must be two numbers in either an array or a matrix\n * @param {boolean} [copy] Return a reshaped copy of the matrix\n *\n * @return {Matrix} The reshaped matrix\n */\n SparseMatrix.prototype.reshape = function (sizes, copy) {\n // validate arguments\n if (!isArray(sizes)) {\n throw new TypeError('Array expected');\n }\n if (sizes.length !== 2) {\n throw new Error('Sparse matrices can only be reshaped in two dimensions');\n }\n\n // check sizes\n sizes.forEach(function (value) {\n if (!isNumber(value) || !isInteger(value) || value <= -2 || value === 0) {\n throw new TypeError('Invalid size, must contain positive integers or -1 ' + '(size: ' + format(sizes) + ')');\n }\n });\n var currentLength = this._size[0] * this._size[1];\n sizes = processSizesWildcard(sizes, currentLength);\n var newLength = sizes[0] * sizes[1];\n\n // m * n must not change\n if (currentLength !== newLength) {\n throw new Error('Reshaping sparse matrix will result in the wrong number of elements');\n }\n\n // matrix to reshape\n var m = copy ? this.clone() : this;\n\n // return unchanged if the same shape\n if (this._size[0] === sizes[0] && this._size[1] === sizes[1]) {\n return m;\n }\n\n // Convert to COO format (generate a column index)\n var colIndex = [];\n for (var i = 0; i < m._ptr.length; i++) {\n for (var j = 0; j < m._ptr[i + 1] - m._ptr[i]; j++) {\n colIndex.push(i);\n }\n }\n\n // Clone the values array\n var values = m._values.slice();\n\n // Clone the row index array\n var rowIndex = m._index.slice();\n\n // Transform the (row, column) indices\n for (var _i = 0; _i < m._index.length; _i++) {\n var r1 = rowIndex[_i];\n var c1 = colIndex[_i];\n var flat = r1 * m._size[1] + c1;\n colIndex[_i] = flat % sizes[1];\n rowIndex[_i] = Math.floor(flat / sizes[1]);\n }\n\n // Now reshaping is supposed to preserve the row-major order, BUT these sparse matrices are stored\n // in column-major order, so we have to reorder the value array now. One option is to use a multisort,\n // sorting several arrays based on some other array.\n\n // OR, we could easily just:\n\n // 1. Remove all values from the matrix\n m._values.length = 0;\n m._index.length = 0;\n m._ptr.length = sizes[1] + 1;\n m._size = sizes.slice();\n for (var _i2 = 0; _i2 < m._ptr.length; _i2++) {\n m._ptr[_i2] = 0;\n }\n\n // 2. Re-insert all elements in the proper order (simplified code from SparseMatrix.prototype.set)\n // This step is probably the most time-consuming\n for (var h = 0; h < values.length; h++) {\n var _i3 = rowIndex[h];\n var _j = colIndex[h];\n var v = values[h];\n var k = _getValueIndex(_i3, m._ptr[_j], m._ptr[_j + 1], m._index);\n _insert(k, _i3, _j, v, m._values, m._index, m._ptr);\n }\n\n // The value indices are inserted out of order, but apparently that's... still OK?\n\n return m;\n };\n\n /**\n * Create a clone of the matrix\n * @memberof SparseMatrix\n * @return {SparseMatrix} clone\n */\n SparseMatrix.prototype.clone = function () {\n var m = new SparseMatrix({\n values: this._values ? clone(this._values) : undefined,\n index: clone(this._index),\n ptr: clone(this._ptr),\n size: clone(this._size),\n datatype: this._datatype\n });\n return m;\n };\n\n /**\n * Retrieve the size of the matrix.\n * @memberof SparseMatrix\n * @returns {number[]} size\n */\n SparseMatrix.prototype.size = function () {\n return this._size.slice(0); // copy the Array\n };\n\n /**\n * Create a new matrix with the results of the callback function executed on\n * each entry of the matrix.\n * @memberof SparseMatrix\n * @param {Function} callback The callback function is invoked with three\n * parameters: the value of the element, the index\n * of the element, and the Matrix being traversed.\n * @param {boolean} [skipZeros] Invoke callback function for non-zero values only.\n *\n * @return {SparseMatrix} matrix\n */\n SparseMatrix.prototype.map = function (callback, skipZeros) {\n // check it is a pattern matrix\n if (!this._values) {\n throw new Error('Cannot invoke map on a Pattern only matrix');\n }\n // matrix instance\n var me = this;\n // rows and columns\n var rows = this._size[0];\n var columns = this._size[1];\n var fastCallback = optimizeCallback(callback, me, 'map');\n // invoke callback\n var invoke = function invoke(v, i, j) {\n // invoke callback\n return fastCallback(v, [i, j], me);\n };\n // invoke _map\n return _map(this, 0, rows - 1, 0, columns - 1, invoke, skipZeros);\n };\n\n /**\n * Create a new matrix with the results of the callback function executed on the interval\n * [minRow..maxRow, minColumn..maxColumn].\n */\n function _map(matrix, minRow, maxRow, minColumn, maxColumn, callback, skipZeros) {\n // result arrays\n var values = [];\n var index = [];\n var ptr = [];\n\n // equal signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n if (isString(matrix._datatype)) {\n // find signature that matches (datatype, datatype)\n eq = typed.find(equalScalar, [matrix._datatype, matrix._datatype]) || equalScalar;\n // convert 0 to the same datatype\n zero = typed.convert(0, matrix._datatype);\n }\n\n // invoke callback\n var invoke = function invoke(v, x, y) {\n // invoke callback\n var value = callback(v, x, y);\n // check value != 0\n if (!eq(value, zero)) {\n // store value\n values.push(value);\n // index\n index.push(x);\n }\n };\n // loop columns\n for (var j = minColumn; j <= maxColumn; j++) {\n // store pointer to values index\n ptr.push(values.length);\n // k0 <= k < k1 where k0 = _ptr[j] && k1 = _ptr[j+1]\n var k0 = matrix._ptr[j];\n var k1 = matrix._ptr[j + 1];\n if (skipZeros) {\n // loop k within [k0, k1[\n for (var k = k0; k < k1; k++) {\n // row index\n var i = matrix._index[k];\n // check i is in range\n if (i >= minRow && i <= maxRow) {\n // value @ k\n invoke(matrix._values[k], i - minRow, j - minColumn);\n }\n }\n } else {\n // create a cache holding all defined values\n var _values = {};\n for (var _k = k0; _k < k1; _k++) {\n var _i4 = matrix._index[_k];\n _values[_i4] = matrix._values[_k];\n }\n\n // loop over all rows (indexes can be unordered so we can't use that),\n // and either read the value or zero\n for (var _i5 = minRow; _i5 <= maxRow; _i5++) {\n var value = _i5 in _values ? _values[_i5] : 0;\n invoke(value, _i5 - minRow, j - minColumn);\n }\n }\n }\n\n // store number of values in ptr\n ptr.push(values.length);\n // return sparse matrix\n return new SparseMatrix({\n values,\n index,\n ptr,\n size: [maxRow - minRow + 1, maxColumn - minColumn + 1]\n });\n }\n\n /**\n * Execute a callback function on each entry of the matrix.\n * @memberof SparseMatrix\n * @param {Function} callback The callback function is invoked with three\n * parameters: the value of the element, the index\n * of the element, and the Matrix being traversed.\n * @param {boolean} [skipZeros] Invoke callback function for non-zero values only.\n * If false, the indices are guaranteed to be in order,\n * if true, the indices can be unordered.\n */\n SparseMatrix.prototype.forEach = function (callback, skipZeros) {\n // check it is a pattern matrix\n if (!this._values) {\n throw new Error('Cannot invoke forEach on a Pattern only matrix');\n }\n // matrix instance\n var me = this;\n // rows and columns\n var rows = this._size[0];\n var columns = this._size[1];\n var fastCallback = optimizeCallback(callback, me, 'forEach');\n // loop columns\n for (var j = 0; j < columns; j++) {\n // k0 <= k < k1 where k0 = _ptr[j] && k1 = _ptr[j+1]\n var k0 = this._ptr[j];\n var k1 = this._ptr[j + 1];\n if (skipZeros) {\n // loop k within [k0, k1[\n for (var k = k0; k < k1; k++) {\n // row index\n var i = this._index[k];\n\n // value @ k\n fastCallback(this._values[k], [i, j], me);\n }\n } else {\n // create a cache holding all defined values\n var values = {};\n for (var _k2 = k0; _k2 < k1; _k2++) {\n var _i6 = this._index[_k2];\n values[_i6] = this._values[_k2];\n }\n\n // loop over all rows (indexes can be unordered so we can't use that),\n // and either read the value or zero\n for (var _i7 = 0; _i7 < rows; _i7++) {\n var value = _i7 in values ? values[_i7] : 0;\n fastCallback(value, [_i7, j], me);\n }\n }\n }\n };\n\n /**\n * Iterate over the matrix elements, skipping zeros\n * @return {Iterable<{ value, index: number[] }>}\n */\n SparseMatrix.prototype[Symbol.iterator] = function* () {\n if (!this._values) {\n throw new Error('Cannot iterate a Pattern only matrix');\n }\n var columns = this._size[1];\n for (var j = 0; j < columns; j++) {\n var k0 = this._ptr[j];\n var k1 = this._ptr[j + 1];\n for (var k = k0; k < k1; k++) {\n // row index\n var i = this._index[k];\n yield {\n value: this._values[k],\n index: [i, j]\n };\n }\n }\n };\n\n /**\n * Create an Array with a copy of the data of the SparseMatrix\n * @memberof SparseMatrix\n * @returns {Array} array\n */\n SparseMatrix.prototype.toArray = function () {\n return _toArray(this._values, this._index, this._ptr, this._size, true);\n };\n\n /**\n * Get the primitive value of the SparseMatrix: a two dimensions array\n * @memberof SparseMatrix\n * @returns {Array} array\n */\n SparseMatrix.prototype.valueOf = function () {\n return _toArray(this._values, this._index, this._ptr, this._size, false);\n };\n function _toArray(values, index, ptr, size, copy) {\n // rows and columns\n var rows = size[0];\n var columns = size[1];\n // result\n var a = [];\n // vars\n var i, j;\n // initialize array\n for (i = 0; i < rows; i++) {\n a[i] = [];\n for (j = 0; j < columns; j++) {\n a[i][j] = 0;\n }\n }\n\n // loop columns\n for (j = 0; j < columns; j++) {\n // k0 <= k < k1 where k0 = _ptr[j] && k1 = _ptr[j+1]\n var k0 = ptr[j];\n var k1 = ptr[j + 1];\n // loop k within [k0, k1[\n for (var k = k0; k < k1; k++) {\n // row index\n i = index[k];\n // set value (use one for pattern matrix)\n a[i][j] = values ? copy ? clone(values[k]) : values[k] : 1;\n }\n }\n return a;\n }\n\n /**\n * Get a string representation of the matrix, with optional formatting options.\n * @memberof SparseMatrix\n * @param {Object | number | Function} [options] Formatting options. See\n * lib/utils/number:format for a\n * description of the available\n * options.\n * @returns {string} str\n */\n SparseMatrix.prototype.format = function (options) {\n // rows and columns\n var rows = this._size[0];\n var columns = this._size[1];\n // density\n var density = this.density();\n // rows & columns\n var str = 'Sparse Matrix [' + format(rows, options) + ' x ' + format(columns, options) + '] density: ' + format(density, options) + '\\n';\n // loop columns\n for (var j = 0; j < columns; j++) {\n // k0 <= k < k1 where k0 = _ptr[j] && k1 = _ptr[j+1]\n var k0 = this._ptr[j];\n var k1 = this._ptr[j + 1];\n // loop k within [k0, k1[\n for (var k = k0; k < k1; k++) {\n // row index\n var i = this._index[k];\n // append value\n str += '\\n (' + format(i, options) + ', ' + format(j, options) + ') ==> ' + (this._values ? format(this._values[k], options) : 'X');\n }\n }\n return str;\n };\n\n /**\n * Get a string representation of the matrix\n * @memberof SparseMatrix\n * @returns {string} str\n */\n SparseMatrix.prototype.toString = function () {\n return format(this.toArray());\n };\n\n /**\n * Get a JSON representation of the matrix\n * @memberof SparseMatrix\n * @returns {Object}\n */\n SparseMatrix.prototype.toJSON = function () {\n return {\n mathjs: 'SparseMatrix',\n values: this._values,\n index: this._index,\n ptr: this._ptr,\n size: this._size,\n datatype: this._datatype\n };\n };\n\n /**\n * Get the kth Matrix diagonal.\n *\n * @memberof SparseMatrix\n * @param {number | BigNumber} [k=0] The kth diagonal where the vector will retrieved.\n *\n * @returns {Matrix} The matrix vector with the diagonal values.\n */\n SparseMatrix.prototype.diagonal = function (k) {\n // validate k if any\n if (k) {\n // convert BigNumber to a number\n if (isBigNumber(k)) {\n k = k.toNumber();\n }\n // is must be an integer\n if (!isNumber(k) || !isInteger(k)) {\n throw new TypeError('The parameter k must be an integer number');\n }\n } else {\n // default value\n k = 0;\n }\n var kSuper = k > 0 ? k : 0;\n var kSub = k < 0 ? -k : 0;\n\n // rows & columns\n var rows = this._size[0];\n var columns = this._size[1];\n\n // number diagonal values\n var n = Math.min(rows - kSub, columns - kSuper);\n\n // diagonal arrays\n var values = [];\n var index = [];\n var ptr = [];\n // initial ptr value\n ptr[0] = 0;\n // loop columns\n for (var j = kSuper; j < columns && values.length < n; j++) {\n // k0 <= k < k1 where k0 = _ptr[j] && k1 = _ptr[j+1]\n var k0 = this._ptr[j];\n var k1 = this._ptr[j + 1];\n // loop x within [k0, k1[\n for (var x = k0; x < k1; x++) {\n // row index\n var i = this._index[x];\n // check row\n if (i === j - kSuper + kSub) {\n // value on this column\n values.push(this._values[x]);\n // store row\n index[values.length - 1] = i - kSub;\n // exit loop\n break;\n }\n }\n }\n // close ptr\n ptr.push(values.length);\n // return matrix\n return new SparseMatrix({\n values,\n index,\n ptr,\n size: [n, 1]\n });\n };\n\n /**\n * Generate a matrix from a JSON object\n * @memberof SparseMatrix\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"SparseMatrix\", \"values\": [], \"index\": [], \"ptr\": [], \"size\": []}`,\n * where mathjs is optional\n * @returns {SparseMatrix}\n */\n SparseMatrix.fromJSON = function (json) {\n return new SparseMatrix(json);\n };\n\n /**\n * Create a diagonal matrix.\n *\n * @memberof SparseMatrix\n * @param {Array} size The matrix size.\n * @param {number | Array | Matrix } value The values for the diagonal.\n * @param {number | BigNumber} [k=0] The kth diagonal where the vector will be filled in.\n * @param {number} [defaultValue] The default value for non-diagonal\n * @param {string} [datatype] The Matrix datatype, values must be of this datatype.\n *\n * @returns {SparseMatrix}\n */\n SparseMatrix.diagonal = function (size, value, k, defaultValue, datatype) {\n if (!isArray(size)) {\n throw new TypeError('Array expected, size parameter');\n }\n if (size.length !== 2) {\n throw new Error('Only two dimensions matrix are supported');\n }\n\n // map size & validate\n size = size.map(function (s) {\n // check it is a big number\n if (isBigNumber(s)) {\n // convert it\n s = s.toNumber();\n }\n // validate arguments\n if (!isNumber(s) || !isInteger(s) || s < 1) {\n throw new Error('Size values must be positive integers');\n }\n return s;\n });\n\n // validate k if any\n if (k) {\n // convert BigNumber to a number\n if (isBigNumber(k)) {\n k = k.toNumber();\n }\n // is must be an integer\n if (!isNumber(k) || !isInteger(k)) {\n throw new TypeError('The parameter k must be an integer number');\n }\n } else {\n // default value\n k = 0;\n }\n\n // equal signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n if (isString(datatype)) {\n // find signature that matches (datatype, datatype)\n eq = typed.find(equalScalar, [datatype, datatype]) || equalScalar;\n // convert 0 to the same datatype\n zero = typed.convert(0, datatype);\n }\n var kSuper = k > 0 ? k : 0;\n var kSub = k < 0 ? -k : 0;\n\n // rows and columns\n var rows = size[0];\n var columns = size[1];\n\n // number of non-zero items\n var n = Math.min(rows - kSub, columns - kSuper);\n\n // value extraction function\n var _value;\n\n // check value\n if (isArray(value)) {\n // validate array\n if (value.length !== n) {\n // number of values in array must be n\n throw new Error('Invalid value array length');\n }\n // define function\n _value = function _value(i) {\n // return value @ i\n return value[i];\n };\n } else if (isMatrix(value)) {\n // matrix size\n var ms = value.size();\n // validate matrix\n if (ms.length !== 1 || ms[0] !== n) {\n // number of values in array must be n\n throw new Error('Invalid matrix length');\n }\n // define function\n _value = function _value(i) {\n // return value @ i\n return value.get([i]);\n };\n } else {\n // define function\n _value = function _value() {\n // return value\n return value;\n };\n }\n\n // create arrays\n var values = [];\n var index = [];\n var ptr = [];\n\n // loop items\n for (var j = 0; j < columns; j++) {\n // number of rows with value\n ptr.push(values.length);\n // diagonal index\n var i = j - kSuper;\n // check we need to set diagonal value\n if (i >= 0 && i < n) {\n // get value @ i\n var v = _value(i);\n // check for zero\n if (!eq(v, zero)) {\n // column\n index.push(i + kSub);\n // add value\n values.push(v);\n }\n }\n }\n // last value should be number of values\n ptr.push(values.length);\n // create SparseMatrix\n return new SparseMatrix({\n values,\n index,\n ptr,\n size: [rows, columns]\n });\n };\n\n /**\n * Swap rows i and j in Matrix.\n *\n * @memberof SparseMatrix\n * @param {number} i Matrix row index 1\n * @param {number} j Matrix row index 2\n *\n * @return {Matrix} The matrix reference\n */\n SparseMatrix.prototype.swapRows = function (i, j) {\n // check index\n if (!isNumber(i) || !isInteger(i) || !isNumber(j) || !isInteger(j)) {\n throw new Error('Row index must be positive integers');\n }\n // check dimensions\n if (this._size.length !== 2) {\n throw new Error('Only two dimensional matrix is supported');\n }\n // validate index\n validateIndex(i, this._size[0]);\n validateIndex(j, this._size[0]);\n\n // swap rows\n SparseMatrix._swapRows(i, j, this._size[1], this._values, this._index, this._ptr);\n // return current instance\n return this;\n };\n\n /**\n * Loop rows with data in column j.\n *\n * @param {number} j Column\n * @param {Array} values Matrix values\n * @param {Array} index Matrix row indeces\n * @param {Array} ptr Matrix column pointers\n * @param {Function} callback Callback function invoked for every row in column j\n */\n SparseMatrix._forEachRow = function (j, values, index, ptr, callback) {\n // indeces for column j\n var k0 = ptr[j];\n var k1 = ptr[j + 1];\n\n // loop\n for (var k = k0; k < k1; k++) {\n // invoke callback\n callback(index[k], values[k]);\n }\n };\n\n /**\n * Swap rows x and y in Sparse Matrix data structures.\n *\n * @param {number} x Matrix row index 1\n * @param {number} y Matrix row index 2\n * @param {number} columns Number of columns in matrix\n * @param {Array} values Matrix values\n * @param {Array} index Matrix row indeces\n * @param {Array} ptr Matrix column pointers\n */\n SparseMatrix._swapRows = function (x, y, columns, values, index, ptr) {\n // loop columns\n for (var j = 0; j < columns; j++) {\n // k0 <= k < k1 where k0 = _ptr[j] && k1 = _ptr[j+1]\n var k0 = ptr[j];\n var k1 = ptr[j + 1];\n // find value index @ x\n var kx = _getValueIndex(x, k0, k1, index);\n // find value index @ x\n var ky = _getValueIndex(y, k0, k1, index);\n // check both rows exist in matrix\n if (kx < k1 && ky < k1 && index[kx] === x && index[ky] === y) {\n // swap values (check for pattern matrix)\n if (values) {\n var v = values[kx];\n values[kx] = values[ky];\n values[ky] = v;\n }\n // next column\n continue;\n }\n // check x row exist & no y row\n if (kx < k1 && index[kx] === x && (ky >= k1 || index[ky] !== y)) {\n // value @ x (check for pattern matrix)\n var vx = values ? values[kx] : undefined;\n // insert value @ y\n index.splice(ky, 0, y);\n if (values) {\n values.splice(ky, 0, vx);\n }\n // remove value @ x (adjust array index if needed)\n index.splice(ky <= kx ? kx + 1 : kx, 1);\n if (values) {\n values.splice(ky <= kx ? kx + 1 : kx, 1);\n }\n // next column\n continue;\n }\n // check y row exist & no x row\n if (ky < k1 && index[ky] === y && (kx >= k1 || index[kx] !== x)) {\n // value @ y (check for pattern matrix)\n var vy = values ? values[ky] : undefined;\n // insert value @ x\n index.splice(kx, 0, x);\n if (values) {\n values.splice(kx, 0, vy);\n }\n // remove value @ y (adjust array index if needed)\n index.splice(kx <= ky ? ky + 1 : ky, 1);\n if (values) {\n values.splice(kx <= ky ? ky + 1 : ky, 1);\n }\n }\n }\n };\n return SparseMatrix;\n}, {\n isClass: true\n});", "import { factory } from '../utils/factory.js';\nimport { deepMap } from '../utils/collection.js';\nvar name = 'number';\nvar dependencies = ['typed'];\n\n/**\n * Separates the radix, integer part, and fractional part of a non decimal number string\n * @param {string} input string to parse\n * @returns {object} the parts of the string or null if not a valid input\n */\nfunction getNonDecimalNumberParts(input) {\n var nonDecimalWithRadixMatch = input.match(/(0[box])([0-9a-fA-F]*)\\.([0-9a-fA-F]*)/);\n if (nonDecimalWithRadixMatch) {\n var radix = {\n '0b': 2,\n '0o': 8,\n '0x': 16\n }[nonDecimalWithRadixMatch[1]];\n var integerPart = nonDecimalWithRadixMatch[2];\n var fractionalPart = nonDecimalWithRadixMatch[3];\n return {\n input,\n radix,\n integerPart,\n fractionalPart\n };\n } else {\n return null;\n }\n}\n\n/**\n * Makes a number from a radix, and integer part, and a fractional part\n * @param {parts} [x] parts of the number string (from getNonDecimalNumberParts)\n * @returns {number} the number\n */\nfunction makeNumberFromNonDecimalParts(parts) {\n var n = parseInt(parts.integerPart, parts.radix);\n var f = 0;\n for (var i = 0; i < parts.fractionalPart.length; i++) {\n var digitValue = parseInt(parts.fractionalPart[i], parts.radix);\n f += digitValue / Math.pow(parts.radix, i + 1);\n }\n var result = n + f;\n if (isNaN(result)) {\n throw new SyntaxError('String \"' + parts.input + '\" is not a valid number');\n }\n return result;\n}\nexport var createNumber = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Create a number or convert a string, boolean, or unit to a number.\n * When value is a matrix, all elements will be converted to number.\n *\n * Syntax:\n *\n * math.number(value)\n * math.number(unit, valuelessUnit)\n *\n * Examples:\n *\n * math.number(2) // returns number 2\n * math.number('7.2') // returns number 7.2\n * math.number(true) // returns number 1\n * math.number([true, false, true, true]) // returns [1, 0, 1, 1]\n * math.number(math.unit('52cm'), 'm') // returns 0.52\n *\n * See also:\n *\n * bignumber, bigint, boolean, numeric, complex, index, matrix, string, unit\n *\n * @param {string | number | BigNumber | Fraction | boolean | Array | Matrix | Unit | null} [value] Value to be converted\n * @param {Unit | string} [valuelessUnit] A valueless unit, used to convert a unit to a number\n * @return {number | Array | Matrix} The created number\n */\n var number = typed('number', {\n '': function _() {\n return 0;\n },\n number: function number(x) {\n return x;\n },\n string: function string(x) {\n if (x === 'NaN') return NaN;\n var nonDecimalNumberParts = getNonDecimalNumberParts(x);\n if (nonDecimalNumberParts) {\n return makeNumberFromNonDecimalParts(nonDecimalNumberParts);\n }\n var size = 0;\n var wordSizeSuffixMatch = x.match(/(0[box][0-9a-fA-F]*)i([0-9]*)/);\n if (wordSizeSuffixMatch) {\n // x includes a size suffix like 0xffffi32, so we extract\n // the suffix and remove it from x\n size = Number(wordSizeSuffixMatch[2]);\n x = wordSizeSuffixMatch[1];\n }\n var num = Number(x);\n if (isNaN(num)) {\n throw new SyntaxError('String \"' + x + '\" is not a valid number');\n }\n if (wordSizeSuffixMatch) {\n // x is a signed bin, oct, or hex literal\n // num is the value of string x if x is interpreted as unsigned\n if (num > 2 ** size - 1) {\n // literal is too large for size suffix\n throw new SyntaxError(\"String \\\"\".concat(x, \"\\\" is out of range\"));\n }\n // check if the bit at index size - 1 is set and if so do the twos complement\n if (num >= 2 ** (size - 1)) {\n num = num - 2 ** size;\n }\n }\n return num;\n },\n BigNumber: function BigNumber(x) {\n return x.toNumber();\n },\n bigint: function bigint(x) {\n return Number(x);\n },\n Fraction: function Fraction(x) {\n return x.valueOf();\n },\n Unit: typed.referToSelf(self => x => {\n var clone = x.clone();\n clone.value = self(x.value);\n return clone;\n }),\n null: function _null(x) {\n return 0;\n },\n 'Unit, string | Unit': function Unit_string__Unit(unit, valuelessUnit) {\n return unit.toNumber(valuelessUnit);\n },\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n\n // reviver function to parse a JSON object like:\n //\n // {\"mathjs\":\"number\",\"value\":\"2.3\"}\n //\n // into a number 2.3\n number.fromJSON = function (json) {\n return parseFloat(json.value);\n };\n return number;\n});", "import { factory } from '../utils/factory.js';\nimport { deepMap } from '../utils/collection.js';\nvar name = 'bigint';\nvar dependencies = ['typed'];\nexport var createBigint = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Create a bigint or convert a string, boolean, or unit to a bigint.\n * When value is a matrix, all elements will be converted to bigint.\n *\n * Syntax:\n *\n * math.bigint(value)\n *\n * Examples:\n *\n * math.bigint(2) // returns 2n\n * math.bigint('123') // returns 123n\n * math.bigint(true) // returns 1n\n * math.bigint([true, false, true, true]) // returns [1n, 0n, 1n, 1n]\n *\n * See also:\n *\n * number, bignumber, boolean, complex, index, matrix, string, unit\n *\n * @param {string | number | BigNumber | bigint | Fraction | boolean | Array | Matrix | null} [value] Value to be converted\n * @return {bigint | Array | Matrix} The created bigint\n */\n var bigint = typed('bigint', {\n '': function _() {\n return 0n;\n },\n bigint: function bigint(x) {\n return x;\n },\n number: function number(x) {\n return BigInt(x.toFixed());\n },\n BigNumber: function BigNumber(x) {\n return BigInt(x.round().toString());\n },\n Fraction: function Fraction(x) {\n return BigInt(x.valueOf().toFixed());\n },\n 'string | boolean': function string__boolean(x) {\n return BigInt(x);\n },\n null: function _null(x) {\n return 0n;\n },\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n\n // reviver function to parse a JSON object like:\n //\n // {\"mathjs\":\"bigint\",\"value\":\"123\"}\n //\n // into a bigint 123n\n bigint.fromJSON = function (json) {\n return BigInt(json.value);\n };\n return bigint;\n});", "import { factory } from '../utils/factory.js';\nimport { deepMap } from '../utils/collection.js';\nimport { format } from '../utils/number.js';\nvar name = 'string';\nvar dependencies = ['typed'];\nexport var createString = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Create a string or convert any object into a string.\n * Elements of Arrays and Matrices are processed element wise.\n *\n * Syntax:\n *\n * math.string(value)\n *\n * Examples:\n *\n * math.string(4.2) // returns string '4.2'\n * math.string(math.complex(3, 2) // returns string '3 + 2i'\n *\n * const u = math.unit(5, 'km')\n * math.string(u.to('m')) // returns string '5000 m'\n *\n * math.string([true, false]) // returns ['true', 'false']\n *\n * See also:\n *\n * bignumber, boolean, complex, index, matrix, number, unit\n *\n * @param {* | Array | Matrix | null} [value] A value to convert to a string\n * @return {string | Array | Matrix} The created string\n */\n return typed(name, {\n '': function _() {\n return '';\n },\n number: format,\n null: function _null(x) {\n return 'null';\n },\n boolean: function boolean(x) {\n return x + '';\n },\n string: function string(x) {\n return x;\n },\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self)),\n any: function any(x) {\n return String(x);\n }\n });\n});", "import { factory } from '../utils/factory.js';\nimport { deepMap } from '../utils/collection.js';\nvar name = 'boolean';\nvar dependencies = ['typed'];\nexport var createBoolean = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Create a boolean or convert a string or number to a boolean.\n * In case of a number, `true` is returned for non-zero numbers, and `false` in\n * case of zero.\n * Strings can be `'true'` or `'false'`, or can contain a number.\n * When value is a matrix, all elements will be converted to boolean.\n *\n * Syntax:\n *\n * math.boolean(x)\n *\n * Examples:\n *\n * math.boolean(0) // returns false\n * math.boolean(1) // returns true\n * math.boolean(-3) // returns true\n * math.boolean('true') // returns true\n * math.boolean('false') // returns false\n * math.boolean([1, 0, 1, 1]) // returns [true, false, true, true]\n *\n * See also:\n *\n * bignumber, complex, index, matrix, string, unit\n *\n * @param {string | number | boolean | Array | Matrix | null} value A value of any type\n * @return {boolean | Array | Matrix} The boolean value\n */\n return typed(name, {\n '': function _() {\n return false;\n },\n boolean: function boolean(x) {\n return x;\n },\n number: function number(x) {\n return !!x;\n },\n null: function _null(x) {\n return false;\n },\n BigNumber: function BigNumber(x) {\n return !x.isZero();\n },\n string: function string(x) {\n // try case insensitive\n var lcase = x.toLowerCase();\n if (lcase === 'true') {\n return true;\n } else if (lcase === 'false') {\n return false;\n }\n\n // test whether value is a valid number\n var num = Number(x);\n if (x !== '' && !isNaN(num)) {\n return !!num;\n }\n throw new Error('Cannot convert \"' + x + '\" to a boolean');\n },\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { factory } from '../../../utils/factory.js';\nimport { deepMap } from '../../../utils/collection.js';\nvar name = 'bignumber';\nvar dependencies = ['typed', 'BigNumber'];\nexport var createBignumber = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber\n } = _ref;\n /**\n * Create a BigNumber, which can store numbers with arbitrary precision.\n * When a matrix is provided, all elements will be converted to BigNumber.\n *\n * Syntax:\n *\n * math.bignumber(x)\n *\n * Examples:\n *\n * 0.1 + 0.2 // returns number 0.30000000000000004\n * math.bignumber(0.1) + math.bignumber(0.2) // returns BigNumber 0.3\n *\n *\n * 7.2e500 // returns number Infinity\n * math.bignumber('7.2e500') // returns BigNumber 7.2e500\n *\n * See also:\n *\n * number, bigint, boolean, complex, index, matrix, string, unit\n *\n * @param {number | string | Fraction | BigNumber | bigint | Array | Matrix | boolean | null} [value] Value for the big number,\n * 0 by default.\n * @returns {BigNumber} The created bignumber\n */\n return typed('bignumber', {\n '': function _() {\n return new BigNumber(0);\n },\n number: function number(x) {\n // convert to string to prevent errors in case of >15 digits\n return new BigNumber(x + '');\n },\n string: function string(x) {\n var wordSizeSuffixMatch = x.match(/(0[box][0-9a-fA-F]*)i([0-9]*)/);\n if (wordSizeSuffixMatch) {\n // x has a word size suffix\n var size = wordSizeSuffixMatch[2];\n var n = BigNumber(wordSizeSuffixMatch[1]);\n var twoPowSize = new BigNumber(2).pow(Number(size));\n if (n.gt(twoPowSize.sub(1))) {\n throw new SyntaxError(\"String \\\"\".concat(x, \"\\\" is out of range\"));\n }\n var twoPowSizeSubOne = new BigNumber(2).pow(Number(size) - 1);\n if (n.gte(twoPowSizeSubOne)) {\n return n.sub(twoPowSize);\n } else {\n return n;\n }\n }\n return new BigNumber(x);\n },\n BigNumber: function BigNumber(x) {\n // we assume a BigNumber is immutable\n return x;\n },\n bigint: function bigint(x) {\n return new BigNumber(x.toString());\n },\n Unit: typed.referToSelf(self => x => {\n var clone = x.clone();\n clone.value = self(x.value);\n return clone;\n }),\n Fraction: function Fraction(x) {\n return new BigNumber(String(x.n)).div(String(x.d)).times(String(x.s));\n },\n null: function _null(_x) {\n return new BigNumber(0);\n },\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { factory } from '../../../utils/factory.js';\nimport { deepMap } from '../../../utils/collection.js';\nvar name = 'complex';\nvar dependencies = ['typed', 'Complex'];\nexport var createComplex = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Complex\n } = _ref;\n /**\n * Create a complex value or convert a value to a complex value.\n *\n * Syntax:\n *\n * math.complex() // creates a complex value with zero\n * // as real and imaginary part.\n * math.complex(re : number, im : string) // creates a complex value with provided\n * // values for real and imaginary part.\n * math.complex(re : number) // creates a complex value with provided\n * // real value and zero imaginary part.\n * math.complex(complex : Complex) // clones the provided complex value.\n * math.complex(arg : string) // parses a string into a complex value.\n * math.complex(array : Array) // converts the elements of the array\n * // or matrix element wise into a\n * // complex value.\n * math.complex({re: number, im: number}) // creates a complex value with provided\n * // values for real an imaginary part.\n * math.complex({r: number, phi: number}) // creates a complex value with provided\n * // polar coordinates\n *\n * Examples:\n *\n * const a = math.complex(3, -4) // a = Complex 3 - 4i\n * a.re = 5 // a = Complex 5 - 4i\n * const i = a.im // Number -4\n * const b = math.complex('2 + 6i') // Complex 2 + 6i\n * const c = math.complex() // Complex 0 + 0i\n * const d = math.add(a, b) // Complex 5 + 2i\n *\n * See also:\n *\n * bignumber, boolean, index, matrix, number, string, unit\n *\n * @param {* | Array | Matrix} [args]\n * Arguments specifying the real and imaginary part of the complex number\n * @return {Complex | Array | Matrix} Returns a complex value\n */\n return typed('complex', {\n '': function _() {\n return Complex.ZERO;\n },\n number: function number(x) {\n return new Complex(x, 0);\n },\n 'number, number': function number_number(re, im) {\n return new Complex(re, im);\n },\n // TODO: this signature should be redundant\n 'BigNumber, BigNumber': function BigNumber_BigNumber(re, im) {\n return new Complex(re.toNumber(), im.toNumber());\n },\n Fraction: function Fraction(x) {\n return new Complex(x.valueOf(), 0);\n },\n Complex: function Complex(x) {\n return x.clone();\n },\n string: function string(x) {\n return Complex(x); // for example '2 + 3i'\n },\n null: function _null(x) {\n return Complex(0);\n },\n Object: function Object(x) {\n if ('re' in x && 'im' in x) {\n return new Complex(x.re, x.im);\n }\n if ('r' in x && 'phi' in x || 'abs' in x && 'arg' in x) {\n return new Complex(x);\n }\n throw new Error('Expected object with properties (re and im) or (r and phi) or (abs and arg)');\n },\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { factory } from '../../../utils/factory.js';\nimport { deepMap } from '../../../utils/collection.js';\nvar name = 'fraction';\nvar dependencies = ['typed', 'Fraction'];\nexport var createFraction = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Fraction\n } = _ref;\n /**\n * Create a fraction or convert a value to a fraction.\n *\n * With one numeric argument, produces the closest rational approximation to the\n * input.\n * With two arguments, the first is the numerator and the second is the denominator,\n * and creates the corresponding fraction. Both numerator and denominator must be\n * integers.\n * With one object argument, looks for the integer numerator as the value of property\n * 'n' and the integer denominator as the value of property 'd'.\n * With a matrix argument, creates a matrix of the same shape with entries\n * converted into fractions.\n *\n * Syntax:\n * math.fraction(value)\n * math.fraction(numerator, denominator)\n * math.fraction({n: numerator, d: denominator})\n * math.fraction(matrix: Array | Matrix)\n *\n * Examples:\n *\n * math.fraction(6.283) // returns Fraction 6283/1000\n * math.fraction(1, 3) // returns Fraction 1/3\n * math.fraction('2/3') // returns Fraction 2/3\n * math.fraction({n: 2, d: 3}) // returns Fraction 2/3\n * math.fraction([0.2, 0.25, 1.25]) // returns Array [1/5, 1/4, 5/4]\n * math.fraction(4, 5.1) // throws Error: Parameters must be integer\n *\n * See also:\n *\n * bignumber, number, string, unit\n *\n * @param {number | string | Fraction | BigNumber | bigint | Unit | Array | Matrix} [args]\n * Arguments specifying the value, or numerator and denominator of\n * the fraction\n * @return {Fraction | Array | Matrix} Returns a fraction\n */\n return typed('fraction', {\n number: function number(x) {\n if (!isFinite(x) || isNaN(x)) {\n throw new Error(x + ' cannot be represented as a fraction');\n }\n return new Fraction(x);\n },\n string: function string(x) {\n return new Fraction(x);\n },\n 'number, number': function number_number(numerator, denominator) {\n return new Fraction(numerator, denominator);\n },\n 'bigint, bigint': function bigint_bigint(numerator, denominator) {\n return new Fraction(numerator, denominator);\n },\n null: function _null(x) {\n return new Fraction(0);\n },\n BigNumber: function BigNumber(x) {\n return new Fraction(x.toString());\n },\n bigint: function bigint(x) {\n return new Fraction(x.toString());\n },\n Fraction: function Fraction(x) {\n return x; // fractions are immutable\n },\n Unit: typed.referToSelf(self => x => {\n var clone = x.clone();\n clone.value = self(x.value);\n return clone;\n }),\n Object: function Object(x) {\n return new Fraction(x);\n },\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { factory } from '../../../utils/factory.js';\nvar name = 'matrix';\nvar dependencies = ['typed', 'Matrix', 'DenseMatrix', 'SparseMatrix'];\nexport var createMatrix = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Matrix,\n DenseMatrix,\n SparseMatrix\n } = _ref;\n /**\n * Create a Matrix. The function creates a new `math.Matrix` object from\n * an `Array`. A Matrix has utility functions to manipulate the data in the\n * matrix, like getting the size and getting or setting values in the matrix.\n * Supported storage formats are 'dense' and 'sparse'.\n *\n * Syntax:\n *\n * math.matrix() // creates an empty matrix using default storage format (dense).\n * math.matrix(data) // creates a matrix with initial data using default storage format (dense).\n * math.matrix('dense') // creates an empty matrix using the given storage format.\n * math.matrix(data, 'dense') // creates a matrix with initial data using the given storage format.\n * math.matrix(data, 'sparse') // creates a sparse matrix with initial data.\n * math.matrix(data, 'sparse', 'number') // creates a sparse matrix with initial data, number data type.\n *\n * Examples:\n *\n * let m = math.matrix([[1, 2], [3, 4]])\n * m.size() // Array [2, 2]\n * m.resize([3, 2], 5)\n * m.valueOf() // Array [[1, 2], [3, 4], [5, 5]]\n * m.get([1, 0]) // number 3\n *\n * See also:\n *\n * bignumber, boolean, complex, index, number, string, unit, sparse\n *\n * @param {Array | Matrix} [data] A multi dimensional array\n * @param {string} [format] The Matrix storage format, either `'dense'` or `'sparse'`\n * @param {string} [datatype] Type of the values\n *\n * @return {Matrix} The created matrix\n */\n return typed(name, {\n '': function _() {\n return _create([]);\n },\n string: function string(format) {\n return _create([], format);\n },\n 'string, string': function string_string(format, datatype) {\n return _create([], format, datatype);\n },\n Array: function Array(data) {\n return _create(data);\n },\n Matrix: function Matrix(data) {\n return _create(data, data.storage());\n },\n 'Array | Matrix, string': _create,\n 'Array | Matrix, string, string': _create\n });\n\n /**\n * Create a new Matrix with given storage format\n * @param {Array} data\n * @param {string} [format]\n * @param {string} [datatype]\n * @returns {Matrix} Returns a new Matrix\n * @private\n */\n function _create(data, format, datatype) {\n // get storage format constructor\n if (format === 'dense' || format === 'default' || format === undefined) {\n return new DenseMatrix(data, datatype);\n }\n if (format === 'sparse') {\n return new SparseMatrix(data, datatype);\n }\n throw new TypeError('Unknown matrix type ' + JSON.stringify(format) + '.');\n }\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'matrixFromFunction';\nvar dependencies = ['typed', 'matrix', 'isZero'];\nexport var createMatrixFromFunction = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n isZero\n } = _ref;\n /**\n * Create a matrix by evaluating a generating function at each index.\n * The simplest overload returns a multi-dimensional array as long as `size` is an array.\n * Passing `size` as a Matrix or specifying a `format` will result in returning a Matrix.\n *\n * Syntax:\n *\n * math.matrixFromFunction(size, fn)\n * math.matrixFromFunction(size, fn, format)\n * math.matrixFromFunction(size, fn, format, datatype)\n * math.matrixFromFunction(size, format, fn)\n * math.matrixFromFunction(size, format, datatype, fn)\n *\n * Examples:\n *\n * math.matrixFromFunction([3,3], i => i[0] - i[1]) // an antisymmetric matrix\n * math.matrixFromFunction([100, 100], 'sparse', i => i[0] - i[1] === 1 ? 4 : 0) // a sparse subdiagonal matrix\n * math.matrixFromFunction([5], i => math.random()) // a random vector\n *\n * See also:\n *\n * matrix, zeros\n *\n * @param {Array | Matrix} size The size of the matrix to be created\n * @param {function} fn Callback function invoked for every entry in the matrix\n * @param {string} [format] The Matrix storage format, either `'dense'` or `'sparse'`\n * @param {string} [datatype] Type of the values\n * @return {Array | Matrix} Returns the created matrix\n */\n return typed(name, {\n 'Array | Matrix, function, string, string': function Array__Matrix_function_string_string(size, fn, format, datatype) {\n return _create(size, fn, format, datatype);\n },\n 'Array | Matrix, function, string': function Array__Matrix_function_string(size, fn, format) {\n return _create(size, fn, format);\n },\n 'Matrix, function': function Matrix_function(size, fn) {\n return _create(size, fn, 'dense');\n },\n 'Array, function': function Array_function(size, fn) {\n return _create(size, fn, 'dense').toArray();\n },\n 'Array | Matrix, string, function': function Array__Matrix_string_function(size, format, fn) {\n return _create(size, fn, format);\n },\n 'Array | Matrix, string, string, function': function Array__Matrix_string_string_function(size, format, datatype, fn) {\n return _create(size, fn, format, datatype);\n }\n });\n function _create(size, fn, format, datatype) {\n var m;\n if (datatype !== undefined) {\n m = matrix(format, datatype);\n } else {\n m = matrix(format);\n }\n m.resize(size);\n m.forEach(function (_, index) {\n var val = fn(index);\n if (isZero(val)) return;\n m.set(index, val);\n });\n return m;\n }\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'matrixFromRows';\nvar dependencies = ['typed', 'matrix', 'flatten', 'size'];\nexport var createMatrixFromRows = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n flatten,\n size\n } = _ref;\n /**\n * Create a dense matrix from vectors as individual rows.\n * If you pass column vectors, they will be transposed (but not conjugated!)\n *\n * Syntax:\n *\n * math.matrixFromRows(...arr)\n * math.matrixFromRows(row1, row2)\n * math.matrixFromRows(row1, row2, row3)\n *\n * Examples:\n *\n * math.matrixFromRows([1, 2, 3], [[4],[5],[6]])\n * math.matrixFromRows(...vectors)\n *\n * See also:\n *\n * matrix, matrixFromColumns, matrixFromFunction, zeros\n *\n * @param {... Array | Matrix} rows Multiple rows\n * @return { number[][] | Matrix } if at least one of the arguments is an array, an array will be returned\n */\n return typed(name, {\n '...Array': function Array(arr) {\n return _createArray(arr);\n },\n '...Matrix': function Matrix(arr) {\n return matrix(_createArray(arr.map(m => m.toArray())));\n }\n\n // TODO implement this properly for SparseMatrix\n });\n function _createArray(arr) {\n if (arr.length === 0) throw new TypeError('At least one row is needed to construct a matrix.');\n var N = checkVectorTypeAndReturnLength(arr[0]);\n var result = [];\n for (var row of arr) {\n var rowLength = checkVectorTypeAndReturnLength(row);\n if (rowLength !== N) {\n throw new TypeError('The vectors had different length: ' + (N | 0) + ' \u2260 ' + (rowLength | 0));\n }\n result.push(flatten(row));\n }\n return result;\n }\n function checkVectorTypeAndReturnLength(vec) {\n var s = size(vec);\n if (s.length === 1) {\n // 1D vector\n return s[0];\n } else if (s.length === 2) {\n // 2D vector\n if (s[0] === 1) {\n // row vector\n return s[1];\n } else if (s[1] === 1) {\n // col vector\n return s[0];\n } else {\n throw new TypeError('At least one of the arguments is not a vector.');\n }\n } else {\n throw new TypeError('Only one- or two-dimensional vectors are supported.');\n }\n }\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'matrixFromColumns';\nvar dependencies = ['typed', 'matrix', 'flatten', 'size'];\nexport var createMatrixFromColumns = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n flatten,\n size\n } = _ref;\n /**\n * Create a dense matrix from vectors as individual columns.\n * If you pass row vectors, they will be transposed (but not conjugated!)\n *\n * Syntax:\n *\n * math.matrixFromColumns(...arr)\n * math.matrixFromColumns(col1, col2)\n * math.matrixFromColumns(col1, col2, col3)\n *\n * Examples:\n *\n * math.matrixFromColumns([1, 2, 3], [[4],[5],[6]])\n * math.matrixFromColumns(...vectors)\n *\n * See also:\n *\n * matrix, matrixFromRows, matrixFromFunction, zeros\n *\n * @param {... Array | Matrix} cols Multiple columns\n * @return { number[][] | Matrix } if at least one of the arguments is an array, an array will be returned\n */\n return typed(name, {\n '...Array': function Array(arr) {\n return _createArray(arr);\n },\n '...Matrix': function Matrix(arr) {\n return matrix(_createArray(arr.map(m => m.toArray())));\n }\n\n // TODO implement this properly for SparseMatrix\n });\n function _createArray(arr) {\n if (arr.length === 0) throw new TypeError('At least one column is needed to construct a matrix.');\n var N = checkVectorTypeAndReturnLength(arr[0]);\n\n // create an array with empty rows\n var result = [];\n for (var i = 0; i < N; i++) {\n result[i] = [];\n }\n\n // loop columns\n for (var col of arr) {\n var colLength = checkVectorTypeAndReturnLength(col);\n if (colLength !== N) {\n throw new TypeError('The vectors had different length: ' + (N | 0) + ' \u2260 ' + (colLength | 0));\n }\n var f = flatten(col);\n\n // push a value to each row\n for (var _i = 0; _i < N; _i++) {\n result[_i].push(f[_i]);\n }\n }\n return result;\n }\n function checkVectorTypeAndReturnLength(vec) {\n var s = size(vec);\n if (s.length === 1) {\n // 1D vector\n return s[0];\n } else if (s.length === 2) {\n // 2D vector\n if (s[0] === 1) {\n // row vector\n return s[1];\n } else if (s[1] === 1) {\n // col vector\n return s[0];\n } else {\n throw new TypeError('At least one of the arguments is not a vector.');\n }\n } else {\n throw new TypeError('Only one- or two-dimensional vectors are supported.');\n }\n }\n});", "import { factory } from '../../../utils/factory.js';\nvar name = 'splitUnit';\nvar dependencies = ['typed'];\nexport var createSplitUnit = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Split a unit in an array of units whose sum is equal to the original unit.\n *\n * Syntax:\n *\n * math.splitUnit(unit: Unit, parts: Array.)\n *\n * Example:\n *\n * math.splitUnit(new Unit(1, 'm'), ['feet', 'inch'])\n * // [ 3 feet, 3.3700787401575 inch ]\n *\n * See also:\n *\n * unit\n *\n * @param {Array} [parts] An array of strings or valueless units.\n * @return {Array} An array of units.\n */\n return typed(name, {\n 'Unit, Array': function Unit_Array(unit, parts) {\n return unit.splitUnit(parts);\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { unaryMinusNumber } from '../../plain/number/index.js';\nvar name = 'unaryMinus';\nvar dependencies = ['typed'];\nexport var createUnaryMinus = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Inverse the sign of a value, apply a unary minus operation.\n *\n * For matrices, the function is evaluated element wise. Boolean values and\n * strings will be converted to a number. For complex numbers, both real and\n * complex value are inverted.\n *\n * Syntax:\n *\n * math.unaryMinus(x)\n *\n * Examples:\n *\n * math.unaryMinus(3.5) // returns -3.5\n * math.unaryMinus(-4.2) // returns 4.2\n *\n * See also:\n *\n * add, subtract, unaryPlus\n *\n * @param {number | BigNumber | bigint | Fraction | Complex | Unit | Array | Matrix} x Number to be inverted.\n * @return {number | BigNumber | bigint | Fraction | Complex | Unit | Array | Matrix} Returns the value with inverted sign.\n */\n return typed(name, {\n number: unaryMinusNumber,\n 'Complex | BigNumber | Fraction': x => x.neg(),\n bigint: x => -x,\n Unit: typed.referToSelf(self => x => {\n var res = x.clone();\n res.value = typed.find(self, res.valueType())(x.value);\n return res;\n }),\n // deep map collection, skip zeros since unaryMinus(0) = 0\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self, true))\n\n // TODO: add support for string\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { unaryPlusNumber } from '../../plain/number/index.js';\nimport { safeNumberType } from '../../utils/number.js';\nvar name = 'unaryPlus';\nvar dependencies = ['typed', 'config', 'numeric'];\nexport var createUnaryPlus = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n numeric\n } = _ref;\n /**\n * Unary plus operation.\n * Boolean values and strings will be converted to a number, numeric values will be returned as is.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.unaryPlus(x)\n *\n * Examples:\n *\n * math.unaryPlus(3.5) // returns 3.5\n * math.unaryPlus(1) // returns 1\n *\n * See also:\n *\n * unaryMinus, add, subtract\n *\n * @param {number | BigNumber | bigint | Fraction | string | Complex | Unit | Array | Matrix} x\n * Input value\n * @return {number | BigNumber | bigint | Fraction | Complex | Unit | Array | Matrix}\n * Returns the input value when numeric, converts to a number when input is non-numeric.\n */\n return typed(name, {\n number: unaryPlusNumber,\n Complex: function Complex(x) {\n return x; // complex numbers are immutable\n },\n BigNumber: function BigNumber(x) {\n return x; // bignumbers are immutable\n },\n bigint: function bigint(x) {\n return x;\n },\n Fraction: function Fraction(x) {\n return x; // fractions are immutable\n },\n Unit: function Unit(x) {\n return x.clone();\n },\n // deep map collection, skip zeros since unaryPlus(0) = 0\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self, true)),\n boolean: function boolean(x) {\n return numeric(x ? 1 : 0, config.number);\n },\n string: function string(x) {\n return numeric(x, safeNumberType(x, config));\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { absNumber } from '../../plain/number/index.js';\nvar name = 'abs';\nvar dependencies = ['typed'];\nexport var createAbs = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Calculate the absolute value of a number. For matrices, the function is\n * evaluated element wise.\n *\n * Syntax:\n *\n * math.abs(x)\n *\n * Examples:\n *\n * math.abs(3.5) // returns number 3.5\n * math.abs(-4.2) // returns number 4.2\n *\n * math.abs([3, -5, -1, 0, 2]) // returns Array [3, 5, 1, 0, 2]\n *\n * See also:\n *\n * sign\n *\n * @param {number | BigNumber | bigint | Fraction | Complex | Array | Matrix | Unit} x\n * A number or matrix for which to get the absolute value\n * @return {number | BigNumber | bigint | Fraction | Complex | Array | Matrix | Unit}\n * Absolute value of `x`\n */\n return typed(name, {\n number: absNumber,\n 'Complex | BigNumber | Fraction | Unit': x => x.abs(),\n bigint: x => x < 0n ? -x : x,\n // deep map collection, skip zeros since abs(0) = 0\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self, true))\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { arraySize } from '../../utils/array.js';\nimport { isMatrix } from '../../utils/is.js';\nimport { IndexError } from '../../error/IndexError.js';\nvar name = 'apply';\nvar dependencies = ['typed', 'isInteger'];\nexport var createApply = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n isInteger\n } = _ref;\n /**\n * Apply a function that maps an array to a scalar\n * along a given axis of a matrix or array.\n * Returns a new matrix or array with one less dimension than the input.\n *\n * Syntax:\n *\n * math.apply(A, dim, callback)\n *\n * Where:\n *\n * - `dim: number` is a zero-based dimension over which to concatenate the matrices.\n *\n * Examples:\n *\n * const A = [[1, 2], [3, 4]]\n * const sum = math.sum\n *\n * math.apply(A, 0, sum) // returns [4, 6]\n * math.apply(A, 1, sum) // returns [3, 7]\n *\n * See also:\n *\n * map, filter, forEach\n *\n * @param {Array | Matrix} array The input Matrix\n * @param {number} dim The dimension along which the callback is applied\n * @param {Function} callback The callback function that is applied. This Function\n * should take an array or 1-d matrix as an input and\n * return a number.\n * @return {Array | Matrix} res The residual matrix with the function applied over some dimension.\n */\n return typed(name, {\n 'Array | Matrix, number | BigNumber, function': function Array__Matrix_number__BigNumber_function(mat, dim, callback) {\n if (!isInteger(dim)) {\n throw new TypeError('Integer number expected for dimension');\n }\n var size = Array.isArray(mat) ? arraySize(mat) : mat.size();\n if (dim < 0 || dim >= size.length) {\n throw new IndexError(dim, size.length);\n }\n if (isMatrix(mat)) {\n return mat.create(_apply(mat.valueOf(), dim, callback), mat.datatype());\n } else {\n return _apply(mat, dim, callback);\n }\n }\n });\n});\n\n/**\n * Recursively reduce a matrix\n * @param {Array} mat\n * @param {number} dim\n * @param {Function} callback\n * @returns {Array} ret\n * @private\n */\nfunction _apply(mat, dim, callback) {\n var i, ret, tran;\n if (dim <= 0) {\n if (!Array.isArray(mat[0])) {\n return callback(mat);\n } else {\n tran = _switch(mat);\n ret = [];\n for (i = 0; i < tran.length; i++) {\n ret[i] = _apply(tran[i], dim - 1, callback);\n }\n return ret;\n }\n } else {\n ret = [];\n for (i = 0; i < mat.length; i++) {\n ret[i] = _apply(mat[i], dim - 1, callback);\n }\n return ret;\n }\n}\n\n/**\n * Transpose a matrix\n * @param {Array} mat\n * @returns {Array} ret\n * @private\n */\nfunction _switch(mat) {\n var I = mat.length;\n var J = mat[0].length;\n var i, j;\n var ret = [];\n for (j = 0; j < J; j++) {\n var tmp = [];\n for (i = 0; i < I; i++) {\n tmp.push(mat[i][j]);\n }\n ret.push(tmp);\n }\n return ret;\n}", "import { factory } from '../../utils/factory.js';\nimport { addNumber } from '../../plain/number/index.js';\nvar name = 'addScalar';\nvar dependencies = ['typed'];\nexport var createAddScalar = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Add two scalar values, `x + y`.\n * This function is meant for internal use: it is used by the public function\n * `add`\n *\n * This function does not support collections (Array or Matrix).\n *\n * @param {number | BigNumber | bigint | Fraction | Complex | Unit} x First value to add\n * @param {number | BigNumber | bigint | Fraction | Complex} y Second value to add\n * @return {number | BigNumber | bigint | Fraction | Complex | Unit} Sum of `x` and `y`\n * @private\n */\n return typed(name, {\n 'number, number': addNumber,\n 'Complex, Complex': function Complex_Complex(x, y) {\n return x.add(y);\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n return x.plus(y);\n },\n 'bigint, bigint': function bigint_bigint(x, y) {\n return x + y;\n },\n 'Fraction, Fraction': function Fraction_Fraction(x, y) {\n return x.add(y);\n },\n 'Unit, Unit': typed.referToSelf(self => (x, y) => {\n if (x.value === null || x.value === undefined) {\n throw new Error('Parameter x contains a unit with undefined value');\n }\n if (y.value === null || y.value === undefined) {\n throw new Error('Parameter y contains a unit with undefined value');\n }\n if (!x.equalBase(y)) throw new Error('Units do not match');\n var res = x.clone();\n res.value = typed.find(self, [res.valueType(), y.valueType()])(res.value, y.value);\n res.fixPrefix = false;\n return res;\n })\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { subtractNumber } from '../../plain/number/index.js';\nvar name = 'subtractScalar';\nvar dependencies = ['typed'];\nexport var createSubtractScalar = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Subtract two scalar values, `x - y`.\n * This function is meant for internal use: it is used by the public function\n * `subtract`\n *\n * This function does not support collections (Array or Matrix).\n *\n * @param {number | BigNumber | bigint | Fraction | Complex | Unit} x First value\n * @param {number | BigNumber | bigint | Fraction | Complex} y Second value to be subtracted from `x`\n * @return {number | BigNumber | bigint | Fraction | Complex | Unit} Difference of `x` and `y`\n * @private\n */\n return typed(name, {\n 'number, number': subtractNumber,\n 'Complex, Complex': function Complex_Complex(x, y) {\n return x.sub(y);\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n return x.minus(y);\n },\n 'bigint, bigint': function bigint_bigint(x, y) {\n return x - y;\n },\n 'Fraction, Fraction': function Fraction_Fraction(x, y) {\n return x.sub(y);\n },\n 'Unit, Unit': typed.referToSelf(self => (x, y) => {\n if (x.value === null || x.value === undefined) {\n throw new Error('Parameter x contains a unit with undefined value');\n }\n if (y.value === null || y.value === undefined) {\n throw new Error('Parameter y contains a unit with undefined value');\n }\n if (!x.equalBase(y)) throw new Error('Units do not match');\n var res = x.clone();\n res.value = typed.find(self, [res.valueType(), y.valueType()])(res.value, y.value);\n res.fixPrefix = false;\n return res;\n })\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { isBigNumber, isComplex, isFraction } from '../../utils/is.js';\nimport { cbrtNumber } from '../../plain/number/index.js';\nvar name = 'cbrt';\nvar dependencies = ['config', 'typed', 'isNegative', 'unaryMinus', 'matrix', 'Complex', 'BigNumber', 'Fraction'];\nexport var createCbrt = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n config,\n typed,\n isNegative,\n unaryMinus,\n matrix,\n Complex,\n BigNumber,\n Fraction\n } = _ref;\n /**\n * Calculate the cubic root of a value.\n *\n * To avoid confusion with the matrix cube root, this function does not\n * apply to matrices. For a matrix, to take the cube root elementwise,\n * see the examples.\n *\n * Syntax:\n *\n * math.cbrt(x)\n * math.cbrt(x, allRoots)\n *\n * Examples:\n *\n * math.cbrt(27) // returns 3\n * math.cube(3) // returns 27\n * math.cbrt(-64) // returns -4\n * math.cbrt(math.unit('27 m^3')) // returns Unit 3 m\n * math.map([27, 64, 125], x => math.cbrt(x)) // returns [3, 4, 5]\n *\n * const x = math.complex('8i')\n * math.cbrt(x) // returns Complex 1.7320508075689 + i\n * math.cbrt(x, true) // returns Matrix [\n * // 1.7320508075689 + i\n * // -1.7320508075689 + i\n * // -2i\n * // ]\n *\n * See also:\n *\n * square, sqrt, cube\n *\n * @param {number | BigNumber | Complex | Unit} x\n * Value for which to calculate the cubic root.\n * @param {boolean} [allRoots] Optional, false by default. Only applicable\n * when `x` is a number or complex number. If true, all complex\n * roots are returned, if false (default) the principal root is\n * returned.\n * @return {number | BigNumber | Complex | Unit}\n * Returns the cubic root of `x`\n */\n return typed(name, {\n number: cbrtNumber,\n // note: signature 'number, boolean' is also supported,\n // created by typed as it knows how to convert number to Complex\n\n Complex: _cbrtComplex,\n 'Complex, boolean': _cbrtComplex,\n BigNumber: function BigNumber(x) {\n return x.cbrt();\n },\n Unit: _cbrtUnit\n });\n\n /**\n * Calculate the cubic root for a complex number\n * @param {Complex} x\n * @param {boolean} [allRoots] If true, the function will return an array\n * with all three roots. If false or undefined,\n * the principal root is returned.\n * @returns {Complex | Array. | Matrix.} Returns the cubic root(s) of x\n * @private\n */\n function _cbrtComplex(x, allRoots) {\n // https://www.wikiwand.com/en/Cube_root#/Complex_numbers\n\n var arg3 = x.arg() / 3;\n var abs = x.abs();\n\n // principal root:\n var principal = new Complex(cbrtNumber(abs), 0).mul(new Complex(0, arg3).exp());\n if (allRoots) {\n var all = [principal, new Complex(cbrtNumber(abs), 0).mul(new Complex(0, arg3 + Math.PI * 2 / 3).exp()), new Complex(cbrtNumber(abs), 0).mul(new Complex(0, arg3 - Math.PI * 2 / 3).exp())];\n return config.matrix === 'Array' ? all : matrix(all);\n } else {\n return principal;\n }\n }\n\n /**\n * Calculate the cubic root for a Unit\n * @param {Unit} x\n * @return {Unit} Returns the cubic root of x\n * @private\n */\n function _cbrtUnit(x) {\n if (x.value && isComplex(x.value)) {\n var result = x.clone();\n result.value = 1.0;\n result = result.pow(1.0 / 3); // Compute the units\n result.value = _cbrtComplex(x.value); // Compute the value\n return result;\n } else {\n var negate = isNegative(x.value);\n if (negate) {\n x.value = unaryMinus(x.value);\n }\n\n // TODO: create a helper function for this\n var third;\n if (isBigNumber(x.value)) {\n third = new BigNumber(1).div(3);\n } else if (isFraction(x.value)) {\n third = new Fraction(1, 3);\n } else {\n third = 1 / 3;\n }\n var _result = x.pow(third);\n if (negate) {\n _result.value = unaryMinus(_result.value);\n }\n return _result;\n }\n }\n});", "import { factory } from '../../../utils/factory.js';\nvar name = 'matAlgo11xS0s';\nvar dependencies = ['typed', 'equalScalar'];\nexport var createMatAlgo11xS0s = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar\n } = _ref;\n /**\n * Iterates over SparseMatrix S nonzero items and invokes the callback function f(Sij, b).\n * Callback function invoked NZ times (number of nonzero items in S).\n *\n *\n * \u250C f(Sij, b) ; S(i,j) !== 0\n * C(i,j) = \u2524\n * \u2514 0 ; otherwise\n *\n *\n * @param {Matrix} s The SparseMatrix instance (S)\n * @param {Scalar} b The Scalar value\n * @param {Function} callback The f(Aij,b) operation to invoke\n * @param {boolean} inverse A true value indicates callback should be invoked f(b,Sij)\n *\n * @return {Matrix} SparseMatrix (C)\n *\n * https://github.com/josdejong/mathjs/pull/346#issuecomment-97626813\n */\n return function matAlgo11xS0s(s, b, callback, inverse) {\n // sparse matrix arrays\n var avalues = s._values;\n var aindex = s._index;\n var aptr = s._ptr;\n var asize = s._size;\n var adt = s._datatype;\n\n // sparse matrix cannot be a Pattern matrix\n if (!avalues) {\n throw new Error('Cannot perform operation on Pattern Sparse Matrix and Scalar value');\n }\n\n // rows & columns\n var rows = asize[0];\n var columns = asize[1];\n\n // datatype\n var dt;\n // equal signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n // callback signature to use\n var cf = callback;\n\n // process data types\n if (typeof adt === 'string') {\n // datatype\n dt = adt;\n // find signature that matches (dt, dt)\n eq = typed.find(equalScalar, [dt, dt]);\n // convert 0 to the same datatype\n zero = typed.convert(0, dt);\n // convert b to the same datatype\n b = typed.convert(b, dt);\n // callback\n cf = typed.find(callback, [dt, dt]);\n }\n\n // result arrays\n var cvalues = [];\n var cindex = [];\n var cptr = [];\n\n // loop columns\n for (var j = 0; j < columns; j++) {\n // initialize ptr\n cptr[j] = cindex.length;\n // values in j\n for (var k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {\n // row\n var i = aindex[k];\n // invoke callback\n var v = inverse ? cf(b, avalues[k]) : cf(avalues[k], b);\n // check value is zero\n if (!eq(v, zero)) {\n // push index & value\n cindex.push(i);\n cvalues.push(v);\n }\n }\n }\n // update ptr\n cptr[columns] = cindex.length;\n\n // return sparse matrix\n return s.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [rows, columns],\n datatype: dt\n });\n };\n});", "import { factory } from '../../../utils/factory.js';\nvar name = 'matAlgo12xSfs';\nvar dependencies = ['typed', 'DenseMatrix'];\nexport var createMatAlgo12xSfs = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n DenseMatrix\n } = _ref;\n /**\n * Iterates over SparseMatrix S nonzero items and invokes the callback function f(Sij, b).\n * Callback function invoked MxN times.\n *\n *\n * \u250C f(Sij, b) ; S(i,j) !== 0\n * C(i,j) = \u2524\n * \u2514 f(0, b) ; otherwise\n *\n *\n * @param {Matrix} s The SparseMatrix instance (S)\n * @param {Scalar} b The Scalar value\n * @param {Function} callback The f(Aij,b) operation to invoke\n * @param {boolean} inverse A true value indicates callback should be invoked f(b,Sij)\n *\n * @return {Matrix} DenseMatrix (C)\n *\n * https://github.com/josdejong/mathjs/pull/346#issuecomment-97626813\n */\n return function matAlgo12xSfs(s, b, callback, inverse) {\n // sparse matrix arrays\n var avalues = s._values;\n var aindex = s._index;\n var aptr = s._ptr;\n var asize = s._size;\n var adt = s._datatype;\n\n // sparse matrix cannot be a Pattern matrix\n if (!avalues) {\n throw new Error('Cannot perform operation on Pattern Sparse Matrix and Scalar value');\n }\n\n // rows & columns\n var rows = asize[0];\n var columns = asize[1];\n\n // datatype\n var dt;\n // callback signature to use\n var cf = callback;\n\n // process data types\n if (typeof adt === 'string') {\n // datatype\n dt = adt;\n // convert b to the same datatype\n b = typed.convert(b, dt);\n // callback\n cf = typed.find(callback, [dt, dt]);\n }\n\n // result arrays\n var cdata = [];\n\n // workspaces\n var x = [];\n // marks indicating we have a value in x for a given column\n var w = [];\n\n // loop columns\n for (var j = 0; j < columns; j++) {\n // columns mark\n var mark = j + 1;\n // values in j\n for (var k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {\n // row\n var r = aindex[k];\n // update workspace\n x[r] = avalues[k];\n w[r] = mark;\n }\n // loop rows\n for (var i = 0; i < rows; i++) {\n // initialize C on first column\n if (j === 0) {\n // create row array\n cdata[i] = [];\n }\n // check sparse matrix has a value @ i,j\n if (w[i] === mark) {\n // invoke callback, update C\n cdata[i][j] = inverse ? cf(b, x[i]) : cf(x[i], b);\n } else {\n // dense matrix value @ i, j\n cdata[i][j] = inverse ? cf(b, 0) : cf(0, b);\n }\n }\n }\n\n // return dense matrix\n return new DenseMatrix({\n data: cdata,\n size: [rows, columns],\n datatype: dt\n });\n };\n});", "import { factory } from '../../../utils/factory.js';\nimport { clone } from '../../../utils/object.js';\nvar name = 'matAlgo14xDs';\nvar dependencies = ['typed'];\nexport var createMatAlgo14xDs = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Iterates over DenseMatrix items and invokes the callback function f(Aij..z, b).\n * Callback function invoked MxN times.\n *\n * C(i,j,...z) = f(Aij..z, b)\n *\n * @param {Matrix} a The DenseMatrix instance (A)\n * @param {Scalar} b The Scalar value\n * @param {Function} callback The f(Aij..z,b) operation to invoke\n * @param {boolean} inverse A true value indicates callback should be invoked f(b,Aij..z)\n *\n * @return {Matrix} DenseMatrix (C)\n *\n * https://github.com/josdejong/mathjs/pull/346#issuecomment-97659042\n */\n return function matAlgo14xDs(a, b, callback, inverse) {\n // a arrays\n var adata = a._data;\n var asize = a._size;\n var adt = a._datatype;\n\n // datatype\n var dt;\n // callback signature to use\n var cf = callback;\n\n // process data types\n if (typeof adt === 'string') {\n // datatype\n dt = adt;\n // convert b to the same datatype\n b = typed.convert(b, dt);\n // callback\n cf = typed.find(callback, [dt, dt]);\n }\n\n // populate cdata, iterate through dimensions\n var cdata = asize.length > 0 ? _iterate(cf, 0, asize, asize[0], adata, b, inverse) : [];\n\n // c matrix\n return a.createDenseMatrix({\n data: cdata,\n size: clone(asize),\n datatype: dt\n });\n };\n\n // recursive function\n function _iterate(f, level, s, n, av, bv, inverse) {\n // initialize array for this level\n var cv = [];\n // check we reach the last level\n if (level === s.length - 1) {\n // loop arrays in last level\n for (var i = 0; i < n; i++) {\n // invoke callback and store value\n cv[i] = inverse ? f(bv, av[i]) : f(av[i], bv);\n }\n } else {\n // iterate current level\n for (var j = 0; j < n; j++) {\n // iterate next level\n cv[j] = _iterate(f, level + 1, s, s[level + 1], av[j], bv, inverse);\n }\n }\n return cv;\n }\n});", "import Decimal from 'decimal.js';\nimport { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { nearlyEqual } from '../../utils/number.js';\nimport { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';\nvar name = 'ceil';\nvar dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix'];\nexport var createCeilNumber = /* #__PURE__ */factory(name, ['typed', 'config', 'round'], _ref => {\n var {\n typed,\n config,\n round\n } = _ref;\n return typed(name, {\n number: function number(x) {\n if (nearlyEqual(x, round(x), config.relTol, config.absTol)) {\n return round(x);\n } else {\n return Math.ceil(x);\n }\n },\n 'number, number': function number_number(x, n) {\n if (nearlyEqual(x, round(x, n), config.relTol, config.absTol)) {\n return round(x, n);\n } else {\n var [number, exponent] = \"\".concat(x, \"e\").split('e');\n var result = Math.ceil(Number(\"\".concat(number, \"e\").concat(Number(exponent) + n)));\n [number, exponent] = \"\".concat(result, \"e\").split('e');\n return Number(\"\".concat(number, \"e\").concat(Number(exponent) - n));\n }\n }\n });\n});\nexport var createCeil = /* #__PURE__ */factory(name, dependencies, _ref2 => {\n var {\n typed,\n config,\n round,\n matrix,\n equalScalar,\n zeros,\n DenseMatrix\n } = _ref2;\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matAlgo14xDs = createMatAlgo14xDs({\n typed\n });\n var ceilNumber = createCeilNumber({\n typed,\n config,\n round\n });\n /**\n * Round a value towards plus infinity\n * If `x` is complex, both real and imaginary part are rounded towards plus infinity.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.ceil(x)\n * math.ceil(x, n)\n * math.ceil(unit, valuelessUnit)\n * math.ceil(unit, n, valuelessUnit)\n *\n * Examples:\n *\n * math.ceil(3.2) // returns number 4\n * math.ceil(3.8) // returns number 4\n * math.ceil(-4.2) // returns number -4\n * math.ceil(-4.7) // returns number -4\n *\n * math.ceil(3.212, 2) // returns number 3.22\n * math.ceil(3.288, 2) // returns number 3.29\n * math.ceil(-4.212, 2) // returns number -4.21\n * math.ceil(-4.782, 2) // returns number -4.78\n *\n * const c = math.complex(3.24, -2.71)\n * math.ceil(c) // returns Complex 4 - 2i\n * math.ceil(c, 1) // returns Complex 3.3 - 2.7i\n *\n * const unit = math.unit('3.241 cm')\n * const cm = math.unit('cm')\n * const mm = math.unit('mm')\n * math.ceil(unit, 1, cm) // returns Unit 3.3 cm\n * math.ceil(unit, 1, mm) // returns Unit 32.5 mm\n *\n * math.ceil([3.2, 3.8, -4.7]) // returns Array [4, 4, -4]\n * math.ceil([3.21, 3.82, -4.71], 1) // returns Array [3.3, 3.9, -4.7]\n *\n * See also:\n *\n * floor, fix, round\n *\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x Value to be rounded\n * @param {number | BigNumber | Array} [n=0] Number of decimals\n * @param {Unit} [valuelessUnit] A valueless unit\n * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} Rounded value\n */\n return typed('ceil', {\n number: ceilNumber.signatures.number,\n 'number,number': ceilNumber.signatures['number,number'],\n Complex: function Complex(x) {\n return x.ceil();\n },\n 'Complex, number': function Complex_number(x, n) {\n return x.ceil(n);\n },\n 'Complex, BigNumber': function Complex_BigNumber(x, n) {\n return x.ceil(n.toNumber());\n },\n BigNumber: function BigNumber(x) {\n if (bigNearlyEqual(x, round(x), config.relTol, config.absTol)) {\n return round(x);\n } else {\n return x.ceil();\n }\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, n) {\n if (bigNearlyEqual(x, round(x, n), config.relTol, config.absTol)) {\n return round(x, n);\n } else {\n return x.toDecimalPlaces(n.toNumber(), Decimal.ROUND_CEIL);\n }\n },\n Fraction: function Fraction(x) {\n return x.ceil();\n },\n 'Fraction, number': function Fraction_number(x, n) {\n return x.ceil(n);\n },\n 'Fraction, BigNumber': function Fraction_BigNumber(x, n) {\n return x.ceil(n.toNumber());\n },\n 'Unit, number, Unit': typed.referToSelf(self => function (x, n, unit) {\n var valueless = x.toNumeric(unit);\n return unit.multiply(self(valueless, n));\n }),\n 'Unit, BigNumber, Unit': typed.referToSelf(self => (x, n, unit) => self(x, n.toNumber(), unit)),\n 'Array | Matrix, number | BigNumber, Unit': typed.referToSelf(self => (x, n, unit) => {\n // deep map collection, skip zeros since ceil(0) = 0\n return deepMap(x, value => self(value, n, unit), true);\n }),\n 'Array | Matrix | Unit, Unit': typed.referToSelf(self => (x, unit) => self(x, 0, unit)),\n 'Array | Matrix': typed.referToSelf(self => x => {\n // deep map collection, skip zeros since ceil(0) = 0\n return deepMap(x, self, true);\n }),\n 'Array, number | BigNumber': typed.referToSelf(self => (x, n) => {\n // deep map collection, skip zeros since ceil(0) = 0\n return deepMap(x, i => self(i, n), true);\n }),\n 'SparseMatrix, number | BigNumber': typed.referToSelf(self => (x, y) => {\n return matAlgo11xS0s(x, y, self, false);\n }),\n 'DenseMatrix, number | BigNumber': typed.referToSelf(self => (x, y) => {\n return matAlgo14xDs(x, y, self, false);\n }),\n 'number | Complex | Fraction | BigNumber, Array': typed.referToSelf(self => (x, y) => {\n // use matrix implementation\n return matAlgo14xDs(matrix(y), x, self, true).valueOf();\n }),\n 'number | Complex | Fraction | BigNumber, Matrix': typed.referToSelf(self => (x, y) => {\n if (equalScalar(x, 0)) return zeros(y.size(), y.storage());\n if (y.storage() === 'dense') {\n return matAlgo14xDs(y, x, self, true);\n }\n return matAlgo12xSfs(y, x, self, true);\n })\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { cubeNumber } from '../../plain/number/index.js';\nvar name = 'cube';\nvar dependencies = ['typed'];\nexport var createCube = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Compute the cube of a value, `x * x * x`.\n * To avoid confusion with `pow(M,3)`, this function does not apply to matrices.\n * If you wish to cube every entry of a matrix, see the examples.\n *\n * Syntax:\n *\n * math.cube(x)\n *\n * Examples:\n *\n * math.cube(2) // returns number 8\n * math.pow(2, 3) // returns number 8\n * math.cube(4) // returns number 64\n * 4 * 4 * 4 // returns number 64\n *\n * math.map([1, 2, 3, 4], math.cube) // returns Array [1, 8, 27, 64]\n *\n * See also:\n *\n * multiply, square, pow, cbrt\n *\n * @param {number | BigNumber | bigint | Fraction | Complex | Unit} x Number for which to calculate the cube\n * @return {number | BigNumber | bigint | Fraction | Complex | Unit} Cube of x\n */\n return typed(name, {\n number: cubeNumber,\n Complex: function Complex(x) {\n return x.mul(x).mul(x); // Is faster than pow(x, 3)\n },\n BigNumber: function BigNumber(x) {\n return x.times(x).times(x);\n },\n bigint: function bigint(x) {\n return x * x * x;\n },\n Fraction: function Fraction(x) {\n return x.pow(3); // Is faster than mul()mul()mul()\n },\n Unit: function Unit(x) {\n return x.pow(3);\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { expNumber } from '../../plain/number/index.js';\nvar name = 'exp';\nvar dependencies = ['typed'];\nexport var createExp = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Calculate the exponential of a value.\n * For matrices, if you want the matrix exponential of square matrix, use\n * the `expm` function; if you want to take the exponential of each element,\n * see the examples.\n *\n * Syntax:\n *\n * math.exp(x)\n *\n * Examples:\n *\n * math.exp(2) // returns number 7.3890560989306495\n * math.pow(math.e, 2) // returns number 7.3890560989306495\n * math.log(math.exp(2)) // returns number 2\n *\n * math.map([1, 2, 3], math.exp)\n * // returns Array [\n * // 2.718281828459045,\n * // 7.3890560989306495,\n * // 20.085536923187668\n * // ]\n *\n * See also:\n *\n * expm1, expm, log, pow\n *\n * @param {number | BigNumber | Complex} x A number to exponentiate\n * @return {number | BigNumber | Complex} Exponential of `x`\n */\n return typed(name, {\n number: expNumber,\n Complex: function Complex(x) {\n return x.exp();\n },\n BigNumber: function BigNumber(x) {\n return x.exp();\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { expm1Number } from '../../plain/number/index.js';\nvar name = 'expm1';\nvar dependencies = ['typed', 'Complex'];\nexport var createExpm1 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Complex: _Complex\n } = _ref;\n /**\n * Calculate the value of subtracting 1 from the exponential value.\n * This function is more accurate than `math.exp(x)-1` when `x` is near 0\n * To avoid ambiguity with the matrix exponential `expm`, this function\n * does not operate on matrices; if you wish to apply it elementwise, see\n * the examples.\n *\n * Syntax:\n *\n * math.expm1(x)\n *\n * Examples:\n *\n * math.expm1(2) // returns number 6.38905609893065\n * math.pow(math.e, 2) - 1 // returns number 6.3890560989306495\n * math.expm1(1e-8) // returns number 1.0000000050000001e-8\n * math.exp(1e-8) - 1 // returns number 9.9999999392253e-9\n * math.log(math.expm1(2) + 1) // returns number 2\n *\n * math.map([1, 2, 3], math.expm1)\n * // returns Array [\n * // 1.718281828459045,\n * // 6.3890560989306495,\n * // 19.085536923187668\n * // ]\n *\n * See also:\n *\n * exp, expm, log, pow\n *\n * @param {number | BigNumber | Complex} x The number to exponentiate\n * @return {number | BigNumber | Complex} Exponential of `x`, minus one\n */\n return typed(name, {\n number: expm1Number,\n Complex: function Complex(x) {\n var r = Math.exp(x.re);\n return new _Complex(r * Math.cos(x.im) - 1, r * Math.sin(x.im));\n },\n BigNumber: function BigNumber(x) {\n return x.exp().minus(1);\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';\nvar name = 'fix';\nvar dependencies = ['typed', 'Complex', 'matrix', 'ceil', 'floor', 'equalScalar', 'zeros', 'DenseMatrix'];\nexport var createFixNumber = /* #__PURE__ */factory(name, ['typed', 'ceil', 'floor'], _ref => {\n var {\n typed,\n ceil,\n floor\n } = _ref;\n return typed(name, {\n number: function number(x) {\n return x > 0 ? floor(x) : ceil(x);\n },\n 'number, number': function number_number(x, n) {\n return x > 0 ? floor(x, n) : ceil(x, n);\n }\n });\n});\nexport var createFix = /* #__PURE__ */factory(name, dependencies, _ref2 => {\n var {\n typed,\n Complex: _Complex,\n matrix,\n ceil,\n floor,\n equalScalar,\n zeros,\n DenseMatrix\n } = _ref2;\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matAlgo14xDs = createMatAlgo14xDs({\n typed\n });\n var fixNumber = createFixNumber({\n typed,\n ceil,\n floor\n });\n /**\n * Round a value towards zero.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.fix(x)\n * math.fix(x,n)\n * math.fix(unit, valuelessUnit)\n * math.fix(unit, n, valuelessUnit)\n *\n * Examples:\n *\n * math.fix(3.2) // returns number 3\n * math.fix(3.8) // returns number 3\n * math.fix(-4.2) // returns number -4\n * math.fix(-4.7) // returns number -4\n *\n * math.fix(3.12, 1) // returns number 3.1\n * math.fix(3.18, 1) // returns number 3.1\n * math.fix(-4.12, 1) // returns number -4.1\n * math.fix(-4.17, 1) // returns number -4.1\n *\n * const c = math.complex(3.22, -2.78)\n * math.fix(c) // returns Complex 3 - 2i\n * math.fix(c, 1) // returns Complex 3.2 -2.7i\n *\n * const unit = math.unit('3.241 cm')\n * const cm = math.unit('cm')\n * const mm = math.unit('mm')\n * math.fix(unit, 1, cm) // returns Unit 3.2 cm\n * math.fix(unit, 1, mm) // returns Unit 32.4 mm\n *\n * math.fix([3.2, 3.8, -4.7]) // returns Array [3, 3, -4]\n * math.fix([3.2, 3.8, -4.7], 1) // returns Array [3.2, 3.8, -4.7]\n *\n * See also:\n *\n * ceil, floor, round\n *\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x Value to be rounded\n * @param {number | BigNumber | Array} [n=0] Number of decimals\n * @param {Unit} [valuelessUnit] A valueless unit\n * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} Rounded value\n */\n return typed('fix', {\n number: fixNumber.signatures.number,\n 'number, number | BigNumber': fixNumber.signatures['number,number'],\n Complex: function Complex(x) {\n return new _Complex(x.re > 0 ? Math.floor(x.re) : Math.ceil(x.re), x.im > 0 ? Math.floor(x.im) : Math.ceil(x.im));\n },\n 'Complex, number': function Complex_number(x, n) {\n return new _Complex(x.re > 0 ? floor(x.re, n) : ceil(x.re, n), x.im > 0 ? floor(x.im, n) : ceil(x.im, n));\n },\n 'Complex, BigNumber': function Complex_BigNumber(x, bn) {\n var n = bn.toNumber();\n return new _Complex(x.re > 0 ? floor(x.re, n) : ceil(x.re, n), x.im > 0 ? floor(x.im, n) : ceil(x.im, n));\n },\n BigNumber: function BigNumber(x) {\n return x.isNegative() ? ceil(x) : floor(x);\n },\n 'BigNumber, number | BigNumber': function BigNumber_number__BigNumber(x, n) {\n return x.isNegative() ? ceil(x, n) : floor(x, n);\n },\n Fraction: function Fraction(x) {\n return x.s < 0n ? x.ceil() : x.floor();\n },\n 'Fraction, number | BigNumber': function Fraction_number__BigNumber(x, n) {\n return x.s < 0n ? ceil(x, n) : floor(x, n);\n },\n 'Unit, number, Unit': typed.referToSelf(self => function (x, n, unit) {\n var valueless = x.toNumeric(unit);\n return unit.multiply(self(valueless, n));\n }),\n 'Unit, BigNumber, Unit': typed.referToSelf(self => (x, n, unit) => self(x, n.toNumber(), unit)),\n 'Array | Matrix, number | BigNumber, Unit': typed.referToSelf(self => (x, n, unit) => {\n // deep map collection, skip zeros since fix(0) = 0\n return deepMap(x, value => self(value, n, unit), true);\n }),\n 'Array | Matrix | Unit, Unit': typed.referToSelf(self => (x, unit) => self(x, 0, unit)),\n 'Array | Matrix': typed.referToSelf(self => x => {\n // deep map collection, skip zeros since fix(0) = 0\n return deepMap(x, self, true);\n }),\n 'Array | Matrix, number | BigNumber': typed.referToSelf(self => (x, n) => {\n // deep map collection, skip zeros since fix(0) = 0\n return deepMap(x, i => self(i, n), true);\n }),\n 'number | Complex | Fraction | BigNumber, Array': typed.referToSelf(self => (x, y) => {\n // use matrix implementation\n return matAlgo14xDs(matrix(y), x, self, true).valueOf();\n }),\n 'number | Complex | Fraction | BigNumber, Matrix': typed.referToSelf(self => (x, y) => {\n if (equalScalar(x, 0)) return zeros(y.size(), y.storage());\n if (y.storage() === 'dense') {\n return matAlgo14xDs(y, x, self, true);\n }\n return matAlgo12xSfs(y, x, self, true);\n })\n });\n});", "import Decimal from 'decimal.js';\nimport { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { nearlyEqual } from '../../utils/number.js';\nimport { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';\nvar name = 'floor';\nvar dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix'];\nexport var createFloorNumber = /* #__PURE__ */factory(name, ['typed', 'config', 'round'], _ref => {\n var {\n typed,\n config,\n round\n } = _ref;\n return typed(name, {\n number: function number(x) {\n if (nearlyEqual(x, round(x), config.relTol, config.absTol)) {\n return round(x);\n } else {\n return Math.floor(x);\n }\n },\n 'number, number': function number_number(x, n) {\n if (nearlyEqual(x, round(x, n), config.relTol, config.absTol)) {\n return round(x, n);\n } else {\n var [number, exponent] = \"\".concat(x, \"e\").split('e');\n var result = Math.floor(Number(\"\".concat(number, \"e\").concat(Number(exponent) + n)));\n [number, exponent] = \"\".concat(result, \"e\").split('e');\n return Number(\"\".concat(number, \"e\").concat(Number(exponent) - n));\n }\n }\n });\n});\nexport var createFloor = /* #__PURE__ */factory(name, dependencies, _ref2 => {\n var {\n typed,\n config,\n round,\n matrix,\n equalScalar,\n zeros,\n DenseMatrix\n } = _ref2;\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matAlgo14xDs = createMatAlgo14xDs({\n typed\n });\n var floorNumber = createFloorNumber({\n typed,\n config,\n round\n });\n /**\n * Round a value towards minus infinity.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.floor(x)\n * math.floor(x, n)\n * math.floor(unit, valuelessUnit)\n * math.floor(unit, n, valuelessUnit)\n *\n * Examples:\n *\n * math.floor(3.2) // returns number 3\n * math.floor(3.8) // returns number 3\n * math.floor(-4.2) // returns number -5\n * math.floor(-4.7) // returns number -5\n *\n * math.floor(3.212, 2) // returns number 3.21\n * math.floor(3.288, 2) // returns number 3.28\n * math.floor(-4.212, 2) // returns number -4.22\n * math.floor(-4.782, 2) // returns number -4.79\n *\n * const c = math.complex(3.24, -2.71)\n * math.floor(c) // returns Complex 3 - 3i\n * math.floor(c, 1) // returns Complex 3.2 -2.8i\n *\n * const unit = math.unit('3.241 cm')\n * const cm = math.unit('cm')\n * const mm = math.unit('mm')\n * math.floor(unit, 1, cm) // returns Unit 3.2 cm\n * math.floor(unit, 1, mm) // returns Unit 32.4 mm\n *\n * math.floor([3.2, 3.8, -4.7]) // returns Array [3, 3, -5]\n * math.floor([3.21, 3.82, -4.71], 1) // returns Array [3.2, 3.8, -4.8]\n *\n * math.floor(math.tau, [2, 3]) // returns Array [6.28, 6.283]\n *\n * // Note that floor(array, array) currently not implemented.\n *\n * See also:\n *\n * ceil, fix, round\n *\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x Value to be rounded\n * @param {number | BigNumber | Array} [n=0] Number of decimals\n * @param {Unit} [valuelessUnit] A valueless unit\n * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} Rounded value\n */\n return typed('floor', {\n number: floorNumber.signatures.number,\n 'number,number': floorNumber.signatures['number,number'],\n Complex: function Complex(x) {\n return x.floor();\n },\n 'Complex, number': function Complex_number(x, n) {\n return x.floor(n);\n },\n 'Complex, BigNumber': function Complex_BigNumber(x, n) {\n return x.floor(n.toNumber());\n },\n BigNumber: function BigNumber(x) {\n if (bigNearlyEqual(x, round(x), config.relTol, config.absTol)) {\n return round(x);\n } else {\n return x.floor();\n }\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, n) {\n if (bigNearlyEqual(x, round(x, n), config.relTol, config.absTol)) {\n return round(x, n);\n } else {\n return x.toDecimalPlaces(n.toNumber(), Decimal.ROUND_FLOOR);\n }\n },\n Fraction: function Fraction(x) {\n return x.floor();\n },\n 'Fraction, number': function Fraction_number(x, n) {\n return x.floor(n);\n },\n 'Fraction, BigNumber': function Fraction_BigNumber(x, n) {\n return x.floor(n.toNumber());\n },\n 'Unit, number, Unit': typed.referToSelf(self => function (x, n, unit) {\n var valueless = x.toNumeric(unit);\n return unit.multiply(self(valueless, n));\n }),\n 'Unit, BigNumber, Unit': typed.referToSelf(self => (x, n, unit) => self(x, n.toNumber(), unit)),\n 'Array | Matrix, number | BigNumber, Unit': typed.referToSelf(self => (x, n, unit) => {\n // deep map collection, skip zeros since floor(0) = 0\n return deepMap(x, value => self(value, n, unit), true);\n }),\n 'Array | Matrix | Unit, Unit': typed.referToSelf(self => (x, unit) => self(x, 0, unit)),\n 'Array | Matrix': typed.referToSelf(self => x => {\n // deep map collection, skip zeros since floor(0) = 0\n return deepMap(x, self, true);\n }),\n 'Array, number | BigNumber': typed.referToSelf(self => (x, n) => {\n // deep map collection, skip zeros since ceil(0) = 0\n return deepMap(x, i => self(i, n), true);\n }),\n 'SparseMatrix, number | BigNumber': typed.referToSelf(self => (x, y) => {\n return matAlgo11xS0s(x, y, self, false);\n }),\n 'DenseMatrix, number | BigNumber': typed.referToSelf(self => (x, y) => {\n return matAlgo14xDs(x, y, self, false);\n }),\n 'number | Complex | Fraction | BigNumber, Array': typed.referToSelf(self => (x, y) => {\n // use matrix implementation\n return matAlgo14xDs(matrix(y), x, self, true).valueOf();\n }),\n 'number | Complex | Fraction | BigNumber, Matrix': typed.referToSelf(self => (x, y) => {\n if (equalScalar(x, 0)) return zeros(y.size(), y.storage());\n if (y.storage() === 'dense') {\n return matAlgo14xDs(y, x, self, true);\n }\n return matAlgo12xSfs(y, x, self, true);\n })\n });\n});", "import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nvar name = 'matAlgo02xDS0';\nvar dependencies = ['typed', 'equalScalar'];\nexport var createMatAlgo02xDS0 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar\n } = _ref;\n /**\n * Iterates over SparseMatrix nonzero items and invokes the callback function f(Dij, Sij).\n * Callback function invoked NNZ times (number of nonzero items in SparseMatrix).\n *\n *\n * \u250C f(Dij, Sij) ; S(i,j) !== 0\n * C(i,j) = \u2524\n * \u2514 0 ; otherwise\n *\n *\n * @param {Matrix} denseMatrix The DenseMatrix instance (D)\n * @param {Matrix} sparseMatrix The SparseMatrix instance (S)\n * @param {Function} callback The f(Dij,Sij) operation to invoke, where Dij = DenseMatrix(i,j) and Sij = SparseMatrix(i,j)\n * @param {boolean} inverse A true value indicates callback should be invoked f(Sij,Dij)\n *\n * @return {Matrix} SparseMatrix (C)\n *\n * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97477571\n */\n return function matAlgo02xDS0(denseMatrix, sparseMatrix, callback, inverse) {\n // dense matrix arrays\n var adata = denseMatrix._data;\n var asize = denseMatrix._size;\n var adt = denseMatrix._datatype || denseMatrix.getDataType();\n // sparse matrix arrays\n var bvalues = sparseMatrix._values;\n var bindex = sparseMatrix._index;\n var bptr = sparseMatrix._ptr;\n var bsize = sparseMatrix._size;\n var bdt = sparseMatrix._datatype || sparseMatrix._data === undefined ? sparseMatrix._datatype : sparseMatrix.getDataType();\n\n // validate dimensions\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n }\n\n // check rows & columns\n if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n }\n\n // sparse matrix cannot be a Pattern matrix\n if (!bvalues) {\n throw new Error('Cannot perform operation on Dense Matrix and Pattern Sparse Matrix');\n }\n\n // rows & columns\n var rows = asize[0];\n var columns = asize[1];\n\n // datatype\n var dt;\n // equal signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n // callback signature to use\n var cf = callback;\n\n // process data types\n if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {\n // datatype\n dt = adt;\n // find signature that matches (dt, dt)\n eq = typed.find(equalScalar, [dt, dt]);\n // convert 0 to the same datatype\n zero = typed.convert(0, dt);\n // callback\n cf = typed.find(callback, [dt, dt]);\n }\n\n // result (SparseMatrix)\n var cvalues = [];\n var cindex = [];\n var cptr = [];\n\n // loop columns in b\n for (var j = 0; j < columns; j++) {\n // update cptr\n cptr[j] = cindex.length;\n // values in column j\n for (var k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) {\n // row\n var i = bindex[k];\n // update C(i,j)\n var cij = inverse ? cf(bvalues[k], adata[i][j]) : cf(adata[i][j], bvalues[k]);\n // check for nonzero\n if (!eq(cij, zero)) {\n // push i & v\n cindex.push(i);\n cvalues.push(cij);\n }\n }\n }\n // update cptr\n cptr[columns] = cindex.length;\n\n // return sparse matrix\n return sparseMatrix.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [rows, columns],\n datatype: adt === denseMatrix._datatype && bdt === sparseMatrix._datatype ? dt : undefined\n });\n };\n});", "import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nvar name = 'matAlgo03xDSf';\nvar dependencies = ['typed'];\nexport var createMatAlgo03xDSf = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Iterates over SparseMatrix items and invokes the callback function f(Dij, Sij).\n * Callback function invoked M*N times.\n *\n *\n * \u250C f(Dij, Sij) ; S(i,j) !== 0\n * C(i,j) = \u2524\n * \u2514 f(Dij, 0) ; otherwise\n *\n *\n * @param {Matrix} denseMatrix The DenseMatrix instance (D)\n * @param {Matrix} sparseMatrix The SparseMatrix instance (C)\n * @param {Function} callback The f(Dij,Sij) operation to invoke, where Dij = DenseMatrix(i,j) and Sij = SparseMatrix(i,j)\n * @param {boolean} inverse A true value indicates callback should be invoked f(Sij,Dij)\n *\n * @return {Matrix} DenseMatrix (C)\n *\n * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97477571\n */\n return function matAlgo03xDSf(denseMatrix, sparseMatrix, callback, inverse) {\n // dense matrix arrays\n var adata = denseMatrix._data;\n var asize = denseMatrix._size;\n var adt = denseMatrix._datatype || denseMatrix.getDataType();\n // sparse matrix arrays\n var bvalues = sparseMatrix._values;\n var bindex = sparseMatrix._index;\n var bptr = sparseMatrix._ptr;\n var bsize = sparseMatrix._size;\n var bdt = sparseMatrix._datatype || sparseMatrix._data === undefined ? sparseMatrix._datatype : sparseMatrix.getDataType();\n\n // validate dimensions\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n }\n\n // check rows & columns\n if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n }\n\n // sparse matrix cannot be a Pattern matrix\n if (!bvalues) {\n throw new Error('Cannot perform operation on Dense Matrix and Pattern Sparse Matrix');\n }\n\n // rows & columns\n var rows = asize[0];\n var columns = asize[1];\n\n // datatype\n var dt;\n // zero value\n var zero = 0;\n // callback signature to use\n var cf = callback;\n\n // process data types\n if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {\n // datatype\n dt = adt;\n // convert 0 to the same datatype\n zero = typed.convert(0, dt);\n // callback\n cf = typed.find(callback, [dt, dt]);\n }\n\n // result (DenseMatrix)\n var cdata = [];\n\n // initialize dense matrix\n for (var z = 0; z < rows; z++) {\n // initialize row\n cdata[z] = [];\n }\n\n // workspace\n var x = [];\n // marks indicating we have a value in x for a given column\n var w = [];\n\n // loop columns in b\n for (var j = 0; j < columns; j++) {\n // column mark\n var mark = j + 1;\n // values in column j\n for (var k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) {\n // row\n var i = bindex[k];\n // update workspace\n x[i] = inverse ? cf(bvalues[k], adata[i][j]) : cf(adata[i][j], bvalues[k]);\n w[i] = mark;\n }\n // process workspace\n for (var y = 0; y < rows; y++) {\n // check we have a calculated value for current row\n if (w[y] === mark) {\n // use calculated value\n cdata[y][j] = x[y];\n } else {\n // calculate value\n cdata[y][j] = inverse ? cf(zero, adata[y][j]) : cf(adata[y][j], zero);\n }\n }\n }\n\n // return dense matrix\n return denseMatrix.createDenseMatrix({\n data: cdata,\n size: [rows, columns],\n datatype: adt === denseMatrix._datatype && bdt === sparseMatrix._datatype ? dt : undefined\n });\n };\n});", "import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nvar name = 'matAlgo05xSfSf';\nvar dependencies = ['typed', 'equalScalar'];\nexport var createMatAlgo05xSfSf = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar\n } = _ref;\n /**\n * Iterates over SparseMatrix A and SparseMatrix B nonzero items and invokes the callback function f(Aij, Bij).\n * Callback function invoked MAX(NNZA, NNZB) times\n *\n *\n * \u250C f(Aij, Bij) ; A(i,j) !== 0 || B(i,j) !== 0\n * C(i,j) = \u2524\n * \u2514 0 ; otherwise\n *\n *\n * @param {Matrix} a The SparseMatrix instance (A)\n * @param {Matrix} b The SparseMatrix instance (B)\n * @param {Function} callback The f(Aij,Bij) operation to invoke\n *\n * @return {Matrix} SparseMatrix (C)\n *\n * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294\n */\n return function matAlgo05xSfSf(a, b, callback) {\n // sparse matrix arrays\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n var asize = a._size;\n var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();\n // sparse matrix arrays\n var bvalues = b._values;\n var bindex = b._index;\n var bptr = b._ptr;\n var bsize = b._size;\n var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();\n\n // validate dimensions\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n }\n\n // check rows & columns\n if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n }\n\n // rows & columns\n var rows = asize[0];\n var columns = asize[1];\n\n // datatype\n var dt;\n // equal signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n // callback signature to use\n var cf = callback;\n\n // process data types\n if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {\n // datatype\n dt = adt;\n // find signature that matches (dt, dt)\n eq = typed.find(equalScalar, [dt, dt]);\n // convert 0 to the same datatype\n zero = typed.convert(0, dt);\n // callback\n cf = typed.find(callback, [dt, dt]);\n }\n\n // result arrays\n var cvalues = avalues && bvalues ? [] : undefined;\n var cindex = [];\n var cptr = [];\n\n // workspaces\n var xa = cvalues ? [] : undefined;\n var xb = cvalues ? [] : undefined;\n // marks indicating we have a value in x for a given column\n var wa = [];\n var wb = [];\n\n // vars\n var i, j, k, k1;\n\n // loop columns\n for (j = 0; j < columns; j++) {\n // update cptr\n cptr[j] = cindex.length;\n // columns mark\n var mark = j + 1;\n // loop values A(:,j)\n for (k = aptr[j], k1 = aptr[j + 1]; k < k1; k++) {\n // row\n i = aindex[k];\n // push index\n cindex.push(i);\n // update workspace\n wa[i] = mark;\n // check we need to process values\n if (xa) {\n xa[i] = avalues[k];\n }\n }\n // loop values B(:,j)\n for (k = bptr[j], k1 = bptr[j + 1]; k < k1; k++) {\n // row\n i = bindex[k];\n // check row existed in A\n if (wa[i] !== mark) {\n // push index\n cindex.push(i);\n }\n // update workspace\n wb[i] = mark;\n // check we need to process values\n if (xb) {\n xb[i] = bvalues[k];\n }\n }\n // check we need to process values (non pattern matrix)\n if (cvalues) {\n // initialize first index in j\n k = cptr[j];\n // loop index in j\n while (k < cindex.length) {\n // row\n i = cindex[k];\n // marks\n var wai = wa[i];\n var wbi = wb[i];\n // check Aij or Bij are nonzero\n if (wai === mark || wbi === mark) {\n // matrix values @ i,j\n var va = wai === mark ? xa[i] : zero;\n var vb = wbi === mark ? xb[i] : zero;\n // Cij\n var vc = cf(va, vb);\n // check for zero\n if (!eq(vc, zero)) {\n // push value\n cvalues.push(vc);\n // increment pointer\n k++;\n } else {\n // remove value @ i, do not increment pointer\n cindex.splice(k, 1);\n }\n }\n }\n }\n }\n // update cptr\n cptr[columns] = cindex.length;\n\n // return sparse matrix\n return a.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [rows, columns],\n datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined\n });\n };\n});", "import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nvar name = 'matAlgo13xDD';\nvar dependencies = ['typed'];\nexport var createMatAlgo13xDD = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Iterates over DenseMatrix items and invokes the callback function f(Aij..z, Bij..z).\n * Callback function invoked MxN times.\n *\n * C(i,j,...z) = f(Aij..z, Bij..z)\n *\n * @param {Matrix} a The DenseMatrix instance (A)\n * @param {Matrix} b The DenseMatrix instance (B)\n * @param {Function} callback The f(Aij..z,Bij..z) operation to invoke\n *\n * @return {Matrix} DenseMatrix (C)\n *\n * https://github.com/josdejong/mathjs/pull/346#issuecomment-97658658\n */\n return function matAlgo13xDD(a, b, callback) {\n // a arrays\n var adata = a._data;\n var asize = a._size;\n var adt = a._datatype;\n // b arrays\n var bdata = b._data;\n var bsize = b._size;\n var bdt = b._datatype;\n // c arrays\n var csize = [];\n\n // validate dimensions\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n }\n\n // validate each one of the dimension sizes\n for (var s = 0; s < asize.length; s++) {\n // must match\n if (asize[s] !== bsize[s]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n }\n // update dimension in c\n csize[s] = asize[s];\n }\n\n // datatype\n var dt;\n // callback signature to use\n var cf = callback;\n\n // process data types\n if (typeof adt === 'string' && adt === bdt) {\n // datatype\n dt = adt;\n // callback\n cf = typed.find(callback, [dt, dt]);\n }\n\n // populate cdata, iterate through dimensions\n var cdata = csize.length > 0 ? _iterate(cf, 0, csize, csize[0], adata, bdata) : [];\n\n // c matrix\n return a.createDenseMatrix({\n data: cdata,\n size: csize,\n datatype: dt\n });\n };\n\n // recursive function\n function _iterate(f, level, s, n, av, bv) {\n // initialize array for this level\n var cv = [];\n // check we reach the last level\n if (level === s.length - 1) {\n // loop arrays in last level\n for (var i = 0; i < n; i++) {\n // invoke callback and store value\n cv[i] = f(av[i], bv[i]);\n }\n } else {\n // iterate current level\n for (var j = 0; j < n; j++) {\n // iterate next level\n cv[j] = _iterate(f, level + 1, s, s[level + 1], av[j], bv[j]);\n }\n }\n return cv;\n }\n});", "import { broadcastSizes, broadcastTo } from '../../../utils/array.js';\nimport { deepStrictEqual } from '../../../utils/object.js';\n\n/**\n* Broadcasts two matrices, and return both in an array\n* It checks if it's possible with broadcasting rules\n*\n* @param {Matrix} A First Matrix\n* @param {Matrix} B Second Matrix\n*\n* @return {Matrix[]} [ broadcastedA, broadcastedB ]\n*/\n\nexport function broadcast(A, B) {\n if (deepStrictEqual(A.size(), B.size())) {\n // If matrices have the same size return them\n return [A, B];\n }\n\n // calculate the broadcasted sizes\n var newSize = broadcastSizes(A.size(), B.size());\n\n // return the array with the two broadcasted matrices\n return [A, B].map(M => _broadcastTo(M, newSize));\n}\n\n/**\n * Broadcasts a matrix to the given size.\n *\n * @param {Matrix} M - The matrix to be broadcasted.\n * @param {number[]} size - The desired size of the broadcasted matrix.\n * @returns {Matrix} The broadcasted matrix.\n * @throws {Error} If the size parameter is not an array of numbers.\n */\nfunction _broadcastTo(M, size) {\n if (deepStrictEqual(M.size(), size)) {\n return M;\n }\n return M.create(broadcastTo(M.valueOf(), size), M.datatype());\n}", "import { factory } from '../../../utils/factory.js';\nimport { extend } from '../../../utils/object.js';\nimport { createMatAlgo13xDD } from './matAlgo13xDD.js';\nimport { createMatAlgo14xDs } from './matAlgo14xDs.js';\nimport { broadcast } from './broadcast.js';\nvar name = 'matrixAlgorithmSuite';\nvar dependencies = ['typed', 'matrix'];\nexport var createMatrixAlgorithmSuite = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix\n } = _ref;\n var matAlgo13xDD = createMatAlgo13xDD({\n typed\n });\n var matAlgo14xDs = createMatAlgo14xDs({\n typed\n });\n\n /**\n * Return a signatures object with the usual boilerplate of\n * matrix algorithms, based on a plain options object with the\n * following properties:\n * elop: function -- the elementwise operation to use, defaults to self\n * SS: function -- the algorithm to apply for two sparse matrices\n * DS: function -- the algorithm to apply for a dense and a sparse matrix\n * SD: function -- algo for a sparse and a dense; defaults to SD flipped\n * Ss: function -- the algorithm to apply for a sparse matrix and scalar\n * sS: function -- algo for scalar and sparse; defaults to Ss flipped\n * scalar: string -- typed-function type for scalars, defaults to 'any'\n *\n * If Ss is not specified, no matrix-scalar signatures are generated.\n *\n * @param {object} options\n * @return {Object} signatures\n */\n return function matrixAlgorithmSuite(options) {\n var elop = options.elop;\n var SD = options.SD || options.DS;\n var matrixSignatures;\n if (elop) {\n // First the dense ones\n matrixSignatures = {\n 'DenseMatrix, DenseMatrix': (x, y) => matAlgo13xDD(...broadcast(x, y), elop),\n 'Array, Array': (x, y) => matAlgo13xDD(...broadcast(matrix(x), matrix(y)), elop).valueOf(),\n 'Array, DenseMatrix': (x, y) => matAlgo13xDD(...broadcast(matrix(x), y), elop),\n 'DenseMatrix, Array': (x, y) => matAlgo13xDD(...broadcast(x, matrix(y)), elop)\n };\n // Now incorporate sparse matrices\n if (options.SS) {\n matrixSignatures['SparseMatrix, SparseMatrix'] = (x, y) => options.SS(...broadcast(x, y), elop, false);\n }\n if (options.DS) {\n matrixSignatures['DenseMatrix, SparseMatrix'] = (x, y) => options.DS(...broadcast(x, y), elop, false);\n matrixSignatures['Array, SparseMatrix'] = (x, y) => options.DS(...broadcast(matrix(x), y), elop, false);\n }\n if (SD) {\n matrixSignatures['SparseMatrix, DenseMatrix'] = (x, y) => SD(...broadcast(y, x), elop, true);\n matrixSignatures['SparseMatrix, Array'] = (x, y) => SD(...broadcast(matrix(y), x), elop, true);\n }\n } else {\n // No elop, use this\n // First the dense ones\n matrixSignatures = {\n 'DenseMatrix, DenseMatrix': typed.referToSelf(self => (x, y) => {\n return matAlgo13xDD(...broadcast(x, y), self);\n }),\n 'Array, Array': typed.referToSelf(self => (x, y) => {\n return matAlgo13xDD(...broadcast(matrix(x), matrix(y)), self).valueOf();\n }),\n 'Array, DenseMatrix': typed.referToSelf(self => (x, y) => {\n return matAlgo13xDD(...broadcast(matrix(x), y), self);\n }),\n 'DenseMatrix, Array': typed.referToSelf(self => (x, y) => {\n return matAlgo13xDD(...broadcast(x, matrix(y)), self);\n })\n };\n // Now incorporate sparse matrices\n if (options.SS) {\n matrixSignatures['SparseMatrix, SparseMatrix'] = typed.referToSelf(self => (x, y) => {\n return options.SS(...broadcast(x, y), self, false);\n });\n }\n if (options.DS) {\n matrixSignatures['DenseMatrix, SparseMatrix'] = typed.referToSelf(self => (x, y) => {\n return options.DS(...broadcast(x, y), self, false);\n });\n matrixSignatures['Array, SparseMatrix'] = typed.referToSelf(self => (x, y) => {\n return options.DS(...broadcast(matrix(x), y), self, false);\n });\n }\n if (SD) {\n matrixSignatures['SparseMatrix, DenseMatrix'] = typed.referToSelf(self => (x, y) => {\n return SD(...broadcast(y, x), self, true);\n });\n matrixSignatures['SparseMatrix, Array'] = typed.referToSelf(self => (x, y) => {\n return SD(...broadcast(matrix(y), x), self, true);\n });\n }\n }\n\n // Now add the scalars\n var scalar = options.scalar || 'any';\n var Ds = options.Ds || options.Ss;\n if (Ds) {\n if (elop) {\n matrixSignatures['DenseMatrix,' + scalar] = (x, y) => matAlgo14xDs(x, y, elop, false);\n matrixSignatures[scalar + ', DenseMatrix'] = (x, y) => matAlgo14xDs(y, x, elop, true);\n matrixSignatures['Array,' + scalar] = (x, y) => matAlgo14xDs(matrix(x), y, elop, false).valueOf();\n matrixSignatures[scalar + ', Array'] = (x, y) => matAlgo14xDs(matrix(y), x, elop, true).valueOf();\n } else {\n matrixSignatures['DenseMatrix,' + scalar] = typed.referToSelf(self => (x, y) => {\n return matAlgo14xDs(x, y, self, false);\n });\n matrixSignatures[scalar + ', DenseMatrix'] = typed.referToSelf(self => (x, y) => {\n return matAlgo14xDs(y, x, self, true);\n });\n matrixSignatures['Array,' + scalar] = typed.referToSelf(self => (x, y) => {\n return matAlgo14xDs(matrix(x), y, self, false).valueOf();\n });\n matrixSignatures[scalar + ', Array'] = typed.referToSelf(self => (x, y) => {\n return matAlgo14xDs(matrix(y), x, self, true).valueOf();\n });\n }\n }\n var sS = options.sS !== undefined ? options.sS : options.Ss;\n if (elop) {\n if (options.Ss) {\n matrixSignatures['SparseMatrix,' + scalar] = (x, y) => options.Ss(x, y, elop, false);\n }\n if (sS) {\n matrixSignatures[scalar + ', SparseMatrix'] = (x, y) => sS(y, x, elop, true);\n }\n } else {\n if (options.Ss) {\n matrixSignatures['SparseMatrix,' + scalar] = typed.referToSelf(self => (x, y) => {\n return options.Ss(x, y, self, false);\n });\n }\n if (sS) {\n matrixSignatures[scalar + ', SparseMatrix'] = typed.referToSelf(self => (x, y) => {\n return sS(y, x, self, true);\n });\n }\n }\n // Also pull in the scalar signatures if the operator is a typed function\n if (elop && elop.signatures) {\n extend(matrixSignatures, elop.signatures);\n }\n return matrixSignatures;\n };\n});", "import { factory } from '../../utils/factory.js';\nimport { createFloor } from './floor.js';\nimport { createMatAlgo02xDS0 } from '../../type/matrix/utils/matAlgo02xDS0.js';\nimport { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo05xSfSf } from '../../type/matrix/utils/matAlgo05xSfSf.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nvar name = 'mod';\nvar dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix', 'concat'];\nexport var createMod = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n round,\n matrix,\n equalScalar,\n zeros,\n DenseMatrix,\n concat\n } = _ref;\n var floor = createFloor({\n typed,\n config,\n round,\n matrix,\n equalScalar,\n zeros,\n DenseMatrix\n });\n var matAlgo02xDS0 = createMatAlgo02xDS0({\n typed,\n equalScalar\n });\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo05xSfSf = createMatAlgo05xSfSf({\n typed,\n equalScalar\n });\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Calculates the modulus, the remainder of an integer division.\n *\n * For matrices, the function is evaluated element wise.\n *\n * The modulus is defined as:\n *\n * x - y * floor(x / y)\n *\n * See https://en.wikipedia.org/wiki/Modulo_operation.\n *\n * Syntax:\n *\n * math.mod(x, y)\n *\n * Examples:\n *\n * math.mod(8, 3) // returns 2\n * math.mod(11, 2) // returns 1\n *\n * function isOdd(x) {\n * return math.mod(x, 2) != 0\n * }\n *\n * isOdd(2) // returns false\n * isOdd(3) // returns true\n *\n * See also:\n *\n * divide\n *\n * @param {number | BigNumber | bigint | Fraction | Array | Matrix} x Dividend\n * @param {number | BigNumber | bigint | Fraction | Array | Matrix} y Divisor\n * @return {number | BigNumber | bigint | Fraction | Array | Matrix} Returns the remainder of `x` divided by `y`.\n */\n return typed(name, {\n 'number, number': _modNumber,\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n return y.isZero() ? x : x.sub(y.mul(floor(x.div(y))));\n },\n 'bigint, bigint': function bigint_bigint(x, y) {\n if (y === 0n) {\n return x;\n }\n if (x < 0) {\n var m = x % y;\n return m === 0n ? m : m + y;\n }\n return x % y;\n },\n 'Fraction, Fraction': function Fraction_Fraction(x, y) {\n return y.equals(0) ? x : x.sub(y.mul(floor(x.div(y))));\n }\n }, matrixAlgorithmSuite({\n SS: matAlgo05xSfSf,\n DS: matAlgo03xDSf,\n SD: matAlgo02xDS0,\n Ss: matAlgo11xS0s,\n sS: matAlgo12xSfs\n }));\n\n /**\n * Calculate the modulus of two numbers\n * @param {number} x\n * @param {number} y\n * @returns {number} res\n * @private\n */\n function _modNumber(x, y) {\n // We don't use JavaScript's % operator here as this doesn't work\n // correctly for x < 0 and x === 0\n // see https://en.wikipedia.org/wiki/Modulo_operation\n\n // We use mathjs floor to handle errors associated with\n // precision float approximation\n return y === 0 ? x : x - y * floor(x / y);\n }\n});", "import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nvar name = 'matAlgo01xDSid';\nvar dependencies = ['typed'];\nexport var createMatAlgo01xDSid = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Iterates over SparseMatrix nonzero items and invokes the callback function f(Dij, Sij).\n * Callback function invoked NNZ times (number of nonzero items in SparseMatrix).\n *\n *\n * \u250C f(Dij, Sij) ; S(i,j) !== 0\n * C(i,j) = \u2524\n * \u2514 Dij ; otherwise\n *\n *\n * @param {Matrix} denseMatrix The DenseMatrix instance (D)\n * @param {Matrix} sparseMatrix The SparseMatrix instance (S)\n * @param {Function} callback The f(Dij,Sij) operation to invoke, where Dij = DenseMatrix(i,j) and Sij = SparseMatrix(i,j)\n * @param {boolean} inverse A true value indicates callback should be invoked f(Sij,Dij)\n *\n * @return {Matrix} DenseMatrix (C)\n *\n * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97477571\n */\n return function algorithm1(denseMatrix, sparseMatrix, callback, inverse) {\n // dense matrix arrays\n var adata = denseMatrix._data;\n var asize = denseMatrix._size;\n var adt = denseMatrix._datatype || denseMatrix.getDataType();\n // sparse matrix arrays\n var bvalues = sparseMatrix._values;\n var bindex = sparseMatrix._index;\n var bptr = sparseMatrix._ptr;\n var bsize = sparseMatrix._size;\n var bdt = sparseMatrix._datatype || sparseMatrix._data === undefined ? sparseMatrix._datatype : sparseMatrix.getDataType();\n\n // validate dimensions\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n }\n\n // check rows & columns\n if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n }\n\n // sparse matrix cannot be a Pattern matrix\n if (!bvalues) {\n throw new Error('Cannot perform operation on Dense Matrix and Pattern Sparse Matrix');\n }\n\n // rows & columns\n var rows = asize[0];\n var columns = asize[1];\n\n // process data types\n var dt = typeof adt === 'string' && adt !== 'mixed' && adt === bdt ? adt : undefined;\n // callback function\n var cf = dt ? typed.find(callback, [dt, dt]) : callback;\n\n // vars\n var i, j;\n\n // result (DenseMatrix)\n var cdata = [];\n // initialize c\n for (i = 0; i < rows; i++) {\n cdata[i] = [];\n }\n\n // workspace\n var x = [];\n // marks indicating we have a value in x for a given column\n var w = [];\n\n // loop columns in b\n for (j = 0; j < columns; j++) {\n // column mark\n var mark = j + 1;\n // values in column j\n for (var k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) {\n // row\n i = bindex[k];\n // update workspace\n x[i] = inverse ? cf(bvalues[k], adata[i][j]) : cf(adata[i][j], bvalues[k]);\n // mark i as updated\n w[i] = mark;\n }\n // loop rows\n for (i = 0; i < rows; i++) {\n // check row is in workspace\n if (w[i] === mark) {\n // c[i][j] was already calculated\n cdata[i][j] = x[i];\n } else {\n // item does not exist in S\n cdata[i][j] = adata[i][j];\n }\n }\n }\n\n // return dense matrix\n return denseMatrix.createDenseMatrix({\n data: cdata,\n size: [rows, columns],\n datatype: adt === denseMatrix._datatype && bdt === sparseMatrix._datatype ? dt : undefined\n });\n };\n});", "import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nvar name = 'matAlgo04xSidSid';\nvar dependencies = ['typed', 'equalScalar'];\nexport var createMatAlgo04xSidSid = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar\n } = _ref;\n /**\n * Iterates over SparseMatrix A and SparseMatrix B nonzero items and invokes the callback function f(Aij, Bij).\n * Callback function invoked MAX(NNZA, NNZB) times\n *\n *\n * \u250C f(Aij, Bij) ; A(i,j) !== 0 && B(i,j) !== 0\n * C(i,j) = \u2524 A(i,j) ; A(i,j) !== 0 && B(i,j) === 0\n * \u2514 B(i,j) ; A(i,j) === 0\n *\n *\n * @param {Matrix} a The SparseMatrix instance (A)\n * @param {Matrix} b The SparseMatrix instance (B)\n * @param {Function} callback The f(Aij,Bij) operation to invoke\n *\n * @return {Matrix} SparseMatrix (C)\n *\n * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294\n */\n return function matAlgo04xSidSid(a, b, callback) {\n // sparse matrix arrays\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n var asize = a._size;\n var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();\n // sparse matrix arrays\n var bvalues = b._values;\n var bindex = b._index;\n var bptr = b._ptr;\n var bsize = b._size;\n var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();\n\n // validate dimensions\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n }\n\n // check rows & columns\n if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n }\n\n // rows & columns\n var rows = asize[0];\n var columns = asize[1];\n\n // datatype\n var dt;\n // equal signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n // callback signature to use\n var cf = callback;\n\n // process data types\n if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {\n // datatype\n dt = adt;\n // find signature that matches (dt, dt)\n eq = typed.find(equalScalar, [dt, dt]);\n // convert 0 to the same datatype\n zero = typed.convert(0, dt);\n // callback\n cf = typed.find(callback, [dt, dt]);\n }\n\n // result arrays\n var cvalues = avalues && bvalues ? [] : undefined;\n var cindex = [];\n var cptr = [];\n\n // workspace\n var xa = avalues && bvalues ? [] : undefined;\n var xb = avalues && bvalues ? [] : undefined;\n // marks indicating we have a value in x for a given column\n var wa = [];\n var wb = [];\n\n // vars\n var i, j, k, k0, k1;\n\n // loop columns\n for (j = 0; j < columns; j++) {\n // update cptr\n cptr[j] = cindex.length;\n // columns mark\n var mark = j + 1;\n // loop A(:,j)\n for (k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {\n // row\n i = aindex[k];\n // update c\n cindex.push(i);\n // update workspace\n wa[i] = mark;\n // check we need to process values\n if (xa) {\n xa[i] = avalues[k];\n }\n }\n // loop B(:,j)\n for (k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) {\n // row\n i = bindex[k];\n // check row exists in A\n if (wa[i] === mark) {\n // update record in xa @ i\n if (xa) {\n // invoke callback\n var v = cf(xa[i], bvalues[k]);\n // check for zero\n if (!eq(v, zero)) {\n // update workspace\n xa[i] = v;\n } else {\n // remove mark (index will be removed later)\n wa[i] = null;\n }\n }\n } else {\n // update c\n cindex.push(i);\n // update workspace\n wb[i] = mark;\n // check we need to process values\n if (xb) {\n xb[i] = bvalues[k];\n }\n }\n }\n // check we need to process values (non pattern matrix)\n if (xa && xb) {\n // initialize first index in j\n k = cptr[j];\n // loop index in j\n while (k < cindex.length) {\n // row\n i = cindex[k];\n // check workspace has value @ i\n if (wa[i] === mark) {\n // push value (Aij != 0 || (Aij != 0 && Bij != 0))\n cvalues[k] = xa[i];\n // increment pointer\n k++;\n } else if (wb[i] === mark) {\n // push value (bij != 0)\n cvalues[k] = xb[i];\n // increment pointer\n k++;\n } else {\n // remove index @ k\n cindex.splice(k, 1);\n }\n }\n }\n }\n // update cptr\n cptr[columns] = cindex.length;\n\n // return sparse matrix\n return a.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [rows, columns],\n datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined\n });\n };\n});", "import { factory } from '../../../utils/factory.js';\nvar name = 'matAlgo10xSids';\nvar dependencies = ['typed', 'DenseMatrix'];\nexport var createMatAlgo10xSids = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n DenseMatrix\n } = _ref;\n /**\n * Iterates over SparseMatrix S nonzero items and invokes the callback function f(Sij, b).\n * Callback function invoked NZ times (number of nonzero items in S).\n *\n *\n * \u250C f(Sij, b) ; S(i,j) !== 0\n * C(i,j) = \u2524\n * \u2514 b ; otherwise\n *\n *\n * @param {Matrix} s The SparseMatrix instance (S)\n * @param {Scalar} b The Scalar value\n * @param {Function} callback The f(Aij,b) operation to invoke\n * @param {boolean} inverse A true value indicates callback should be invoked f(b,Sij)\n *\n * @return {Matrix} DenseMatrix (C)\n *\n * https://github.com/josdejong/mathjs/pull/346#issuecomment-97626813\n */\n return function matAlgo10xSids(s, b, callback, inverse) {\n // sparse matrix arrays\n var avalues = s._values;\n var aindex = s._index;\n var aptr = s._ptr;\n var asize = s._size;\n var adt = s._datatype;\n\n // sparse matrix cannot be a Pattern matrix\n if (!avalues) {\n throw new Error('Cannot perform operation on Pattern Sparse Matrix and Scalar value');\n }\n\n // rows & columns\n var rows = asize[0];\n var columns = asize[1];\n\n // datatype\n var dt;\n // callback signature to use\n var cf = callback;\n\n // process data types\n if (typeof adt === 'string') {\n // datatype\n dt = adt;\n // convert b to the same datatype\n b = typed.convert(b, dt);\n // callback\n cf = typed.find(callback, [dt, dt]);\n }\n\n // result arrays\n var cdata = [];\n\n // workspaces\n var x = [];\n // marks indicating we have a value in x for a given column\n var w = [];\n\n // loop columns\n for (var j = 0; j < columns; j++) {\n // columns mark\n var mark = j + 1;\n // values in j\n for (var k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {\n // row\n var r = aindex[k];\n // update workspace\n x[r] = avalues[k];\n w[r] = mark;\n }\n // loop rows\n for (var i = 0; i < rows; i++) {\n // initialize C on first column\n if (j === 0) {\n // create row array\n cdata[i] = [];\n }\n // check sparse matrix has a value @ i,j\n if (w[i] === mark) {\n // invoke callback, update C\n cdata[i][j] = inverse ? cf(b, x[i]) : cf(x[i], b);\n } else {\n // dense matrix value @ i, j\n cdata[i][j] = b;\n }\n }\n }\n\n // return dense matrix\n return new DenseMatrix({\n data: cdata,\n size: [rows, columns],\n datatype: dt\n });\n };\n});", "/**\n * Create a syntax error with the message:\n * 'Wrong number of arguments in function ( provided, - expected)'\n * @param {string} fn Function name\n * @param {number} count Actual argument count\n * @param {number} min Minimum required argument count\n * @param {number} [max] Maximum required argument count\n * @extends Error\n */\nexport function ArgumentsError(fn, count, min, max) {\n if (!(this instanceof ArgumentsError)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n this.fn = fn;\n this.count = count;\n this.min = min;\n this.max = max;\n this.message = 'Wrong number of arguments in function ' + fn + ' (' + count + ' provided, ' + min + (max !== undefined && max !== null ? '-' + max : '') + ' expected)';\n this.stack = new Error().stack;\n}\nArgumentsError.prototype = new Error();\nArgumentsError.prototype.constructor = Error;\nArgumentsError.prototype.name = 'ArgumentsError';\nArgumentsError.prototype.isArgumentsError = true;", "import { isInteger } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMod } from './mod.js';\nimport { createMatAlgo01xDSid } from '../../type/matrix/utils/matAlgo01xDSid.js';\nimport { createMatAlgo04xSidSid } from '../../type/matrix/utils/matAlgo04xSidSid.js';\nimport { createMatAlgo10xSids } from '../../type/matrix/utils/matAlgo10xSids.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { ArgumentsError } from '../../error/ArgumentsError.js';\nvar name = 'gcd';\nvar dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar', 'zeros', 'BigNumber', 'DenseMatrix', 'concat'];\nvar gcdTypes = 'number | BigNumber | Fraction | Matrix | Array';\nvar gcdManyTypesSignature = \"\".concat(gcdTypes, \", \").concat(gcdTypes, \", ...\").concat(gcdTypes);\nfunction is1d(array) {\n return !array.some(element => Array.isArray(element));\n}\nexport var createGcd = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n config,\n round,\n equalScalar,\n zeros,\n BigNumber,\n DenseMatrix,\n concat\n } = _ref;\n var mod = createMod({\n typed,\n config,\n round,\n matrix,\n equalScalar,\n zeros,\n DenseMatrix,\n concat\n });\n var matAlgo01xDSid = createMatAlgo01xDSid({\n typed\n });\n var matAlgo04xSidSid = createMatAlgo04xSidSid({\n typed,\n equalScalar\n });\n var matAlgo10xSids = createMatAlgo10xSids({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Calculate the greatest common divisor for two or more values or arrays.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.gcd(a, b)\n * math.gcd(a, b, c, ...)\n *\n * Examples:\n *\n * math.gcd(8, 12) // returns 4\n * math.gcd(-4, 6) // returns 2\n * math.gcd(25, 15, -10) // returns 5\n *\n * math.gcd([8, -4], [12, 6]) // returns [4, 2]\n *\n * See also:\n *\n * lcm, xgcd\n *\n * @param {... number | BigNumber | Fraction | Array | Matrix} args Two or more integer numbers\n * @return {number | BigNumber | Fraction | Array | Matrix} The greatest common divisor\n */\n return typed(name, {\n 'number, number': _gcdNumber,\n 'BigNumber, BigNumber': _gcdBigNumber,\n 'Fraction, Fraction': (x, y) => x.gcd(y)\n }, matrixAlgorithmSuite({\n SS: matAlgo04xSidSid,\n DS: matAlgo01xDSid,\n Ss: matAlgo10xSids\n }), {\n [gcdManyTypesSignature]: typed.referToSelf(self => (a, b, args) => {\n var res = self(a, b);\n for (var i = 0; i < args.length; i++) {\n res = self(res, args[i]);\n }\n return res;\n }),\n Array: typed.referToSelf(self => array => {\n if (array.length === 1 && Array.isArray(array[0]) && is1d(array[0])) {\n return self(...array[0]);\n }\n if (is1d(array)) {\n return self(...array);\n }\n throw new ArgumentsError('gcd() supports only 1d matrices!');\n }),\n Matrix: typed.referToSelf(self => matrix => {\n return self(matrix.toArray());\n })\n });\n\n /**\n * Calculate gcd for numbers\n * @param {number} a\n * @param {number} b\n * @returns {number} Returns the greatest common denominator of a and b\n * @private\n */\n function _gcdNumber(a, b) {\n if (!isInteger(a) || !isInteger(b)) {\n throw new Error('Parameters in function gcd must be integer numbers');\n }\n\n // https://en.wikipedia.org/wiki/Euclidean_algorithm\n var r;\n while (b !== 0) {\n r = mod(a, b);\n a = b;\n b = r;\n }\n return a < 0 ? -a : a;\n }\n\n /**\n * Calculate gcd for BigNumbers\n * @param {BigNumber} a\n * @param {BigNumber} b\n * @returns {BigNumber} Returns greatest common denominator of a and b\n * @private\n */\n function _gcdBigNumber(a, b) {\n if (!a.isInt() || !b.isInt()) {\n throw new Error('Parameters in function gcd must be integer numbers');\n }\n\n // https://en.wikipedia.org/wiki/Euclidean_algorithm\n var zero = new BigNumber(0);\n while (!b.isZero()) {\n var r = mod(a, b);\n a = b;\n b = r;\n }\n return a.lt(zero) ? a.neg() : a;\n }\n});", "import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nimport { scatter } from '../../../utils/collection.js';\nvar name = 'matAlgo06xS0S0';\nvar dependencies = ['typed', 'equalScalar'];\nexport var createMatAlgo06xS0S0 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar\n } = _ref;\n /**\n * Iterates over SparseMatrix A and SparseMatrix B nonzero items and invokes the callback function f(Aij, Bij).\n * Callback function invoked (Anz U Bnz) times, where Anz and Bnz are the nonzero elements in both matrices.\n *\n *\n * \u250C f(Aij, Bij) ; A(i,j) !== 0 && B(i,j) !== 0\n * C(i,j) = \u2524\n * \u2514 0 ; otherwise\n *\n *\n * @param {Matrix} a The SparseMatrix instance (A)\n * @param {Matrix} b The SparseMatrix instance (B)\n * @param {Function} callback The f(Aij,Bij) operation to invoke\n *\n * @return {Matrix} SparseMatrix (C)\n *\n * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294\n */\n return function matAlgo06xS0S0(a, b, callback) {\n // sparse matrix arrays\n var avalues = a._values;\n var asize = a._size;\n var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();\n // sparse matrix arrays\n var bvalues = b._values;\n var bsize = b._size;\n var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();\n\n // validate dimensions\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n }\n\n // check rows & columns\n if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n }\n\n // rows & columns\n var rows = asize[0];\n var columns = asize[1];\n\n // datatype\n var dt;\n // equal signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n // callback signature to use\n var cf = callback;\n\n // process data types\n if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {\n // datatype\n dt = adt;\n // find signature that matches (dt, dt)\n eq = typed.find(equalScalar, [dt, dt]);\n // convert 0 to the same datatype\n zero = typed.convert(0, dt);\n // callback\n cf = typed.find(callback, [dt, dt]);\n }\n\n // result arrays\n var cvalues = avalues && bvalues ? [] : undefined;\n var cindex = [];\n var cptr = [];\n\n // workspaces\n var x = cvalues ? [] : undefined;\n // marks indicating we have a value in x for a given column\n var w = [];\n // marks indicating value in a given row has been updated\n var u = [];\n\n // loop columns\n for (var j = 0; j < columns; j++) {\n // update cptr\n cptr[j] = cindex.length;\n // columns mark\n var mark = j + 1;\n // scatter the values of A(:,j) into workspace\n scatter(a, j, w, x, u, mark, cindex, cf);\n // scatter the values of B(:,j) into workspace\n scatter(b, j, w, x, u, mark, cindex, cf);\n // check we need to process values (non pattern matrix)\n if (x) {\n // initialize first index in j\n var k = cptr[j];\n // loop index in j\n while (k < cindex.length) {\n // row\n var i = cindex[k];\n // check function was invoked on current row (Aij !=0 && Bij != 0)\n if (u[i] === mark) {\n // value @ i\n var v = x[i];\n // check for zero value\n if (!eq(v, zero)) {\n // push value\n cvalues.push(v);\n // increment pointer\n k++;\n } else {\n // remove value @ i, do not increment pointer\n cindex.splice(k, 1);\n }\n } else {\n // remove value @ i, do not increment pointer\n cindex.splice(k, 1);\n }\n }\n } else {\n // initialize first index in j\n var p = cptr[j];\n // loop index in j\n while (p < cindex.length) {\n // row\n var r = cindex[p];\n // check function was invoked on current row (Aij !=0 && Bij != 0)\n if (u[r] !== mark) {\n // remove value @ i, do not increment pointer\n cindex.splice(p, 1);\n } else {\n // increment pointer\n p++;\n }\n }\n }\n }\n // update cptr\n cptr[columns] = cindex.length;\n\n // return sparse matrix\n return a.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [rows, columns],\n datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined\n });\n };\n});", "import { factory } from '../../utils/factory.js';\nimport { createMatAlgo02xDS0 } from '../../type/matrix/utils/matAlgo02xDS0.js';\nimport { createMatAlgo06xS0S0 } from '../../type/matrix/utils/matAlgo06xS0S0.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { lcmNumber } from '../../plain/number/index.js';\nvar name = 'lcm';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'concat'];\nexport var createLcm = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n concat\n } = _ref;\n var matAlgo02xDS0 = createMatAlgo02xDS0({\n typed,\n equalScalar\n });\n var matAlgo06xS0S0 = createMatAlgo06xS0S0({\n typed,\n equalScalar\n });\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n var lcmTypes = 'number | BigNumber | Fraction | Matrix | Array';\n var lcmManySignature = {};\n lcmManySignature[\"\".concat(lcmTypes, \", \").concat(lcmTypes, \", ...\").concat(lcmTypes)] = typed.referToSelf(self => (a, b, args) => {\n var res = self(a, b);\n for (var i = 0; i < args.length; i++) {\n res = self(res, args[i]);\n }\n return res;\n });\n\n /**\n * Calculate the least common multiple for two or more values or arrays.\n *\n * lcm is defined as:\n *\n * lcm(a, b) = abs(a * b) / gcd(a, b)\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.lcm(a, b)\n * math.lcm(a, b, c, ...)\n *\n * Examples:\n *\n * math.lcm(4, 6) // returns 12\n * math.lcm(6, 21) // returns 42\n * math.lcm(6, 21, 5) // returns 210\n *\n * math.lcm([4, 6], [6, 21]) // returns [12, 42]\n *\n * See also:\n *\n * gcd, xgcd\n *\n * @param {... number | BigNumber | Array | Matrix} args Two or more integer numbers\n * @return {number | BigNumber | Array | Matrix} The least common multiple\n */\n return typed(name, {\n 'number, number': lcmNumber,\n 'BigNumber, BigNumber': _lcmBigNumber,\n 'Fraction, Fraction': (x, y) => x.lcm(y)\n }, matrixAlgorithmSuite({\n SS: matAlgo06xS0S0,\n DS: matAlgo02xDS0,\n Ss: matAlgo11xS0s\n }), lcmManySignature);\n\n /**\n * Calculate lcm for two BigNumbers\n * @param {BigNumber} a\n * @param {BigNumber} b\n * @returns {BigNumber} Returns the least common multiple of a and b\n * @private\n */\n function _lcmBigNumber(a, b) {\n if (!a.isInt() || !b.isInt()) {\n throw new Error('Parameters in function lcm must be integer numbers');\n }\n if (a.isZero()) {\n return a;\n }\n if (b.isZero()) {\n return b;\n }\n\n // https://en.wikipedia.org/wiki/Euclidean_algorithm\n // evaluate lcm here inline to reduce overhead\n var prod = a.times(b);\n while (!b.isZero()) {\n var t = b;\n b = a.mod(t);\n a = t;\n }\n return prod.div(a).abs();\n }\n});", "import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { log10Number } from '../../plain/number/index.js';\nvar name = 'log10';\nvar dependencies = ['typed', 'config', 'Complex'];\nexport var createLog10 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex: _Complex\n } = _ref;\n /**\n * Calculate the 10-base logarithm of a value. This is the same as calculating `log(x, 10)`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.log10(x)\n *\n * Examples:\n *\n * math.log10(0.00001) // returns -5\n * math.log10(10000) // returns 4\n * math.log(10000) / math.log(10) // returns 4\n * math.pow(10, 4) // returns 10000\n *\n * See also:\n *\n * exp, log, log1p, log2\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x\n * Value for which to calculate the logarithm.\n * @return {number | BigNumber | Complex | Array | Matrix}\n * Returns the 10-base logarithm of `x`\n */\n return typed(name, {\n number: function number(x) {\n if (x >= 0 || config.predictable) {\n return log10Number(x);\n } else {\n // negative value -> complex value computation\n return new _Complex(x, 0).log().div(Math.LN10);\n }\n },\n Complex: function Complex(x) {\n return new _Complex(x).log().div(Math.LN10);\n },\n BigNumber: function BigNumber(x) {\n if (!x.isNegative() || config.predictable) {\n return x.log();\n } else {\n // downgrade to number, return Complex valued result\n return new _Complex(x.toNumber(), 0).log().div(Math.LN10);\n }\n },\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { log2Number } from '../../plain/number/index.js';\nvar name = 'log2';\nvar dependencies = ['typed', 'config', 'Complex'];\nexport var createLog2 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex\n } = _ref;\n /**\n * Calculate the 2-base of a value. This is the same as calculating `log(x, 2)`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.log2(x)\n *\n * Examples:\n *\n * math.log2(0.03125) // returns -5\n * math.log2(16) // returns 4\n * math.log2(16) / math.log2(2) // returns 4\n * math.pow(2, 4) // returns 16\n *\n * See also:\n *\n * exp, log, log1p, log10\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x\n * Value for which to calculate the logarithm.\n * @return {number | BigNumber | Complex | Array | Matrix}\n * Returns the 2-base logarithm of `x`\n */\n return typed(name, {\n number: function number(x) {\n if (x >= 0 || config.predictable) {\n return log2Number(x);\n } else {\n // negative value -> complex value computation\n return _log2Complex(new Complex(x, 0));\n }\n },\n Complex: _log2Complex,\n BigNumber: function BigNumber(x) {\n if (!x.isNegative() || config.predictable) {\n return x.log(2);\n } else {\n // downgrade to number, return Complex valued result\n return _log2Complex(new Complex(x.toNumber(), 0));\n }\n },\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n\n /**\n * Calculate log2 for a complex value\n * @param {Complex} x\n * @returns {Complex}\n * @private\n */\n function _log2Complex(x) {\n var newX = Math.sqrt(x.re * x.re + x.im * x.im);\n return new Complex(Math.log2 ? Math.log2(newX) : Math.log(newX) / Math.LN2, Math.atan2(x.im, x.re) / Math.LN2);\n }\n});", "import { factory } from '../../utils/factory.js';\nimport { multiplyNumber } from '../../plain/number/index.js';\nvar name = 'multiplyScalar';\nvar dependencies = ['typed'];\nexport var createMultiplyScalar = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Multiply two scalar values, `x * y`.\n * This function is meant for internal use: it is used by the public function\n * `multiply`\n *\n * This function does not support collections (Array or Matrix).\n *\n * @param {number | BigNumber | bigint | Fraction | Complex | Unit} x First value to multiply\n * @param {number | BigNumber | bigint | Fraction | Complex} y Second value to multiply\n * @return {number | BigNumber | bigint | Fraction | Complex | Unit} Multiplication of `x` and `y`\n * @private\n */\n return typed('multiplyScalar', {\n 'number, number': multiplyNumber,\n 'Complex, Complex': function Complex_Complex(x, y) {\n return x.mul(y);\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n return x.times(y);\n },\n 'bigint, bigint': function bigint_bigint(x, y) {\n return x * y;\n },\n 'Fraction, Fraction': function Fraction_Fraction(x, y) {\n return x.mul(y);\n },\n 'number | Fraction | BigNumber | Complex, Unit': (x, y) => y.multiply(x),\n 'Unit, number | Fraction | BigNumber | Complex | Unit': (x, y) => x.multiply(y)\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { isMatrix } from '../../utils/is.js';\nimport { arraySize } from '../../utils/array.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';\nvar name = 'multiply';\nvar dependencies = ['typed', 'matrix', 'addScalar', 'multiplyScalar', 'equalScalar', 'dot'];\nexport var createMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n addScalar,\n multiplyScalar,\n equalScalar,\n dot\n } = _ref;\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matAlgo14xDs = createMatAlgo14xDs({\n typed\n });\n function _validateMatrixDimensions(size1, size2) {\n // check left operand dimensions\n switch (size1.length) {\n case 1:\n // check size2\n switch (size2.length) {\n case 1:\n // Vector x Vector\n if (size1[0] !== size2[0]) {\n // throw error\n throw new RangeError('Dimension mismatch in multiplication. Vectors must have the same length');\n }\n break;\n case 2:\n // Vector x Matrix\n if (size1[0] !== size2[0]) {\n // throw error\n throw new RangeError('Dimension mismatch in multiplication. Vector length (' + size1[0] + ') must match Matrix rows (' + size2[0] + ')');\n }\n break;\n default:\n throw new Error('Can only multiply a 1 or 2 dimensional matrix (Matrix B has ' + size2.length + ' dimensions)');\n }\n break;\n case 2:\n // check size2\n switch (size2.length) {\n case 1:\n // Matrix x Vector\n if (size1[1] !== size2[0]) {\n // throw error\n throw new RangeError('Dimension mismatch in multiplication. Matrix columns (' + size1[1] + ') must match Vector length (' + size2[0] + ')');\n }\n break;\n case 2:\n // Matrix x Matrix\n if (size1[1] !== size2[0]) {\n // throw error\n throw new RangeError('Dimension mismatch in multiplication. Matrix A columns (' + size1[1] + ') must match Matrix B rows (' + size2[0] + ')');\n }\n break;\n default:\n throw new Error('Can only multiply a 1 or 2 dimensional matrix (Matrix B has ' + size2.length + ' dimensions)');\n }\n break;\n default:\n throw new Error('Can only multiply a 1 or 2 dimensional matrix (Matrix A has ' + size1.length + ' dimensions)');\n }\n }\n\n /**\n * C = A * B\n *\n * @param {Matrix} a Dense Vector (N)\n * @param {Matrix} b Dense Vector (N)\n *\n * @return {number} Scalar value\n */\n function _multiplyVectorVector(a, b, n) {\n // check empty vector\n if (n === 0) {\n throw new Error('Cannot multiply two empty vectors');\n }\n return dot(a, b);\n }\n\n /**\n * C = A * B\n *\n * @param {Matrix} a Dense Vector (M)\n * @param {Matrix} b Matrix (MxN)\n *\n * @return {Matrix} Dense Vector (N)\n */\n function _multiplyVectorMatrix(a, b) {\n // process storage\n if (b.storage() !== 'dense') {\n throw new Error('Support for SparseMatrix not implemented');\n }\n return _multiplyVectorDenseMatrix(a, b);\n }\n\n /**\n * C = A * B\n *\n * @param {Matrix} a Dense Vector (M)\n * @param {Matrix} b Dense Matrix (MxN)\n *\n * @return {Matrix} Dense Vector (N)\n */\n function _multiplyVectorDenseMatrix(a, b) {\n // a dense\n var adata = a._data;\n var asize = a._size;\n var adt = a._datatype || a.getDataType();\n // b dense\n var bdata = b._data;\n var bsize = b._size;\n var bdt = b._datatype || b.getDataType();\n // rows & columns\n var alength = asize[0];\n var bcolumns = bsize[1];\n\n // datatype\n var dt;\n // addScalar signature to use\n var af = addScalar;\n // multiplyScalar signature to use\n var mf = multiplyScalar;\n\n // process data types\n if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') {\n // datatype\n dt = adt;\n // find signatures that matches (dt, dt)\n af = typed.find(addScalar, [dt, dt]);\n mf = typed.find(multiplyScalar, [dt, dt]);\n }\n\n // result\n var c = [];\n\n // loop matrix columns\n for (var j = 0; j < bcolumns; j++) {\n // sum (do not initialize it with zero)\n var sum = mf(adata[0], bdata[0][j]);\n // loop vector\n for (var i = 1; i < alength; i++) {\n // multiply & accumulate\n sum = af(sum, mf(adata[i], bdata[i][j]));\n }\n c[j] = sum;\n }\n\n // return matrix\n return a.createDenseMatrix({\n data: c,\n size: [bcolumns],\n datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined\n });\n }\n\n /**\n * C = A * B\n *\n * @param {Matrix} a Matrix (MxN)\n * @param {Matrix} b Dense Vector (N)\n *\n * @return {Matrix} Dense Vector (M)\n */\n var _multiplyMatrixVector = typed('_multiplyMatrixVector', {\n 'DenseMatrix, any': _multiplyDenseMatrixVector,\n 'SparseMatrix, any': _multiplySparseMatrixVector\n });\n\n /**\n * C = A * B\n *\n * @param {Matrix} a Matrix (MxN)\n * @param {Matrix} b Matrix (NxC)\n *\n * @return {Matrix} Matrix (MxC)\n */\n var _multiplyMatrixMatrix = typed('_multiplyMatrixMatrix', {\n 'DenseMatrix, DenseMatrix': _multiplyDenseMatrixDenseMatrix,\n 'DenseMatrix, SparseMatrix': _multiplyDenseMatrixSparseMatrix,\n 'SparseMatrix, DenseMatrix': _multiplySparseMatrixDenseMatrix,\n 'SparseMatrix, SparseMatrix': _multiplySparseMatrixSparseMatrix\n });\n\n /**\n * C = A * B\n *\n * @param {Matrix} a DenseMatrix (MxN)\n * @param {Matrix} b Dense Vector (N)\n *\n * @return {Matrix} Dense Vector (M)\n */\n function _multiplyDenseMatrixVector(a, b) {\n // a dense\n var adata = a._data;\n var asize = a._size;\n var adt = a._datatype || a.getDataType();\n // b dense\n var bdata = b._data;\n var bdt = b._datatype || b.getDataType();\n // rows & columns\n var arows = asize[0];\n var acolumns = asize[1];\n\n // datatype\n var dt;\n // addScalar signature to use\n var af = addScalar;\n // multiplyScalar signature to use\n var mf = multiplyScalar;\n\n // process data types\n if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') {\n // datatype\n dt = adt;\n // find signatures that matches (dt, dt)\n af = typed.find(addScalar, [dt, dt]);\n mf = typed.find(multiplyScalar, [dt, dt]);\n }\n\n // result\n var c = [];\n\n // loop matrix a rows\n for (var i = 0; i < arows; i++) {\n // current row\n var row = adata[i];\n // sum (do not initialize it with zero)\n var sum = mf(row[0], bdata[0]);\n // loop matrix a columns\n for (var j = 1; j < acolumns; j++) {\n // multiply & accumulate\n sum = af(sum, mf(row[j], bdata[j]));\n }\n c[i] = sum;\n }\n\n // return matrix\n return a.createDenseMatrix({\n data: c,\n size: [arows],\n datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined\n });\n }\n\n /**\n * C = A * B\n *\n * @param {Matrix} a DenseMatrix (MxN)\n * @param {Matrix} b DenseMatrix (NxC)\n *\n * @return {Matrix} DenseMatrix (MxC)\n */\n function _multiplyDenseMatrixDenseMatrix(a, b) {\n // getDataType()\n // a dense\n var adata = a._data;\n var asize = a._size;\n var adt = a._datatype || a.getDataType();\n // b dense\n var bdata = b._data;\n var bsize = b._size;\n var bdt = b._datatype || b.getDataType();\n // rows & columns\n var arows = asize[0];\n var acolumns = asize[1];\n var bcolumns = bsize[1];\n\n // datatype\n var dt;\n // addScalar signature to use\n var af = addScalar;\n // multiplyScalar signature to use\n var mf = multiplyScalar;\n\n // process data types\n if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed' && adt !== 'mixed') {\n // datatype\n dt = adt;\n // find signatures that matches (dt, dt)\n af = typed.find(addScalar, [dt, dt]);\n mf = typed.find(multiplyScalar, [dt, dt]);\n }\n\n // result\n var c = [];\n\n // loop matrix a rows\n for (var i = 0; i < arows; i++) {\n // current row\n var row = adata[i];\n // initialize row array\n c[i] = [];\n // loop matrix b columns\n for (var j = 0; j < bcolumns; j++) {\n // sum (avoid initializing sum to zero)\n var sum = mf(row[0], bdata[0][j]);\n // loop matrix a columns\n for (var x = 1; x < acolumns; x++) {\n // multiply & accumulate\n sum = af(sum, mf(row[x], bdata[x][j]));\n }\n c[i][j] = sum;\n }\n }\n\n // return matrix\n return a.createDenseMatrix({\n data: c,\n size: [arows, bcolumns],\n datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined\n });\n }\n\n /**\n * C = A * B\n *\n * @param {Matrix} a DenseMatrix (MxN)\n * @param {Matrix} b SparseMatrix (NxC)\n *\n * @return {Matrix} SparseMatrix (MxC)\n */\n function _multiplyDenseMatrixSparseMatrix(a, b) {\n // a dense\n var adata = a._data;\n var asize = a._size;\n var adt = a._datatype || a.getDataType();\n // b sparse\n var bvalues = b._values;\n var bindex = b._index;\n var bptr = b._ptr;\n var bsize = b._size;\n var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();\n // validate b matrix\n if (!bvalues) {\n throw new Error('Cannot multiply Dense Matrix times Pattern only Matrix');\n }\n // rows & columns\n var arows = asize[0];\n var bcolumns = bsize[1];\n\n // datatype\n var dt;\n // addScalar signature to use\n var af = addScalar;\n // multiplyScalar signature to use\n var mf = multiplyScalar;\n // equalScalar signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n\n // process data types\n if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') {\n // datatype\n dt = adt;\n // find signatures that matches (dt, dt)\n af = typed.find(addScalar, [dt, dt]);\n mf = typed.find(multiplyScalar, [dt, dt]);\n eq = typed.find(equalScalar, [dt, dt]);\n // convert 0 to the same datatype\n zero = typed.convert(0, dt);\n }\n\n // result\n var cvalues = [];\n var cindex = [];\n var cptr = [];\n // c matrix\n var c = b.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [arows, bcolumns],\n datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined\n });\n\n // loop b columns\n for (var jb = 0; jb < bcolumns; jb++) {\n // update ptr\n cptr[jb] = cindex.length;\n // indeces in column jb\n var kb0 = bptr[jb];\n var kb1 = bptr[jb + 1];\n // do not process column jb if no data exists\n if (kb1 > kb0) {\n // last row mark processed\n var last = 0;\n // loop a rows\n for (var i = 0; i < arows; i++) {\n // column mark\n var mark = i + 1;\n // C[i, jb]\n var cij = void 0;\n // values in b column j\n for (var kb = kb0; kb < kb1; kb++) {\n // row\n var ib = bindex[kb];\n // check value has been initialized\n if (last !== mark) {\n // first value in column jb\n cij = mf(adata[i][ib], bvalues[kb]);\n // update mark\n last = mark;\n } else {\n // accumulate value\n cij = af(cij, mf(adata[i][ib], bvalues[kb]));\n }\n }\n // check column has been processed and value != 0\n if (last === mark && !eq(cij, zero)) {\n // push row & value\n cindex.push(i);\n cvalues.push(cij);\n }\n }\n }\n }\n // update ptr\n cptr[bcolumns] = cindex.length;\n\n // return sparse matrix\n return c;\n }\n\n /**\n * C = A * B\n *\n * @param {Matrix} a SparseMatrix (MxN)\n * @param {Matrix} b Dense Vector (N)\n *\n * @return {Matrix} SparseMatrix (M, 1)\n */\n function _multiplySparseMatrixVector(a, b) {\n // a sparse\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();\n // validate a matrix\n if (!avalues) {\n throw new Error('Cannot multiply Pattern only Matrix times Dense Matrix');\n }\n // b dense\n var bdata = b._data;\n var bdt = b._datatype || b.getDataType();\n // rows & columns\n var arows = a._size[0];\n var brows = b._size[0];\n // result\n var cvalues = [];\n var cindex = [];\n var cptr = [];\n\n // datatype\n var dt;\n // addScalar signature to use\n var af = addScalar;\n // multiplyScalar signature to use\n var mf = multiplyScalar;\n // equalScalar signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n\n // process data types\n if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') {\n // datatype\n dt = adt;\n // find signatures that matches (dt, dt)\n af = typed.find(addScalar, [dt, dt]);\n mf = typed.find(multiplyScalar, [dt, dt]);\n eq = typed.find(equalScalar, [dt, dt]);\n // convert 0 to the same datatype\n zero = typed.convert(0, dt);\n }\n\n // workspace\n var x = [];\n // vector with marks indicating a value x[i] exists in a given column\n var w = [];\n\n // update ptr\n cptr[0] = 0;\n // rows in b\n for (var ib = 0; ib < brows; ib++) {\n // b[ib]\n var vbi = bdata[ib];\n // check b[ib] != 0, avoid loops\n if (!eq(vbi, zero)) {\n // A values & index in ib column\n for (var ka0 = aptr[ib], ka1 = aptr[ib + 1], ka = ka0; ka < ka1; ka++) {\n // a row\n var ia = aindex[ka];\n // check value exists in current j\n if (!w[ia]) {\n // ia is new entry in j\n w[ia] = true;\n // add i to pattern of C\n cindex.push(ia);\n // x(ia) = A\n x[ia] = mf(vbi, avalues[ka]);\n } else {\n // i exists in C already\n x[ia] = af(x[ia], mf(vbi, avalues[ka]));\n }\n }\n }\n }\n // copy values from x to column jb of c\n for (var p1 = cindex.length, p = 0; p < p1; p++) {\n // row\n var ic = cindex[p];\n // copy value\n cvalues[p] = x[ic];\n }\n // update ptr\n cptr[1] = cindex.length;\n\n // matrix to return\n return a.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [arows, 1],\n datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined\n });\n }\n\n /**\n * C = A * B\n *\n * @param {Matrix} a SparseMatrix (MxN)\n * @param {Matrix} b DenseMatrix (NxC)\n *\n * @return {Matrix} SparseMatrix (MxC)\n */\n function _multiplySparseMatrixDenseMatrix(a, b) {\n // a sparse\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();\n // validate a matrix\n if (!avalues) {\n throw new Error('Cannot multiply Pattern only Matrix times Dense Matrix');\n }\n // b dense\n var bdata = b._data;\n var bdt = b._datatype || b.getDataType();\n // rows & columns\n var arows = a._size[0];\n var brows = b._size[0];\n var bcolumns = b._size[1];\n\n // datatype\n var dt;\n // addScalar signature to use\n var af = addScalar;\n // multiplyScalar signature to use\n var mf = multiplyScalar;\n // equalScalar signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n\n // process data types\n if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') {\n // datatype\n dt = adt;\n // find signatures that matches (dt, dt)\n af = typed.find(addScalar, [dt, dt]);\n mf = typed.find(multiplyScalar, [dt, dt]);\n eq = typed.find(equalScalar, [dt, dt]);\n // convert 0 to the same datatype\n zero = typed.convert(0, dt);\n }\n\n // result\n var cvalues = [];\n var cindex = [];\n var cptr = [];\n // c matrix\n var c = a.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [arows, bcolumns],\n datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined\n });\n\n // workspace\n var x = [];\n // vector with marks indicating a value x[i] exists in a given column\n var w = [];\n\n // loop b columns\n for (var jb = 0; jb < bcolumns; jb++) {\n // update ptr\n cptr[jb] = cindex.length;\n // mark in workspace for current column\n var mark = jb + 1;\n // rows in jb\n for (var ib = 0; ib < brows; ib++) {\n // b[ib, jb]\n var vbij = bdata[ib][jb];\n // check b[ib, jb] != 0, avoid loops\n if (!eq(vbij, zero)) {\n // A values & index in ib column\n for (var ka0 = aptr[ib], ka1 = aptr[ib + 1], ka = ka0; ka < ka1; ka++) {\n // a row\n var ia = aindex[ka];\n // check value exists in current j\n if (w[ia] !== mark) {\n // ia is new entry in j\n w[ia] = mark;\n // add i to pattern of C\n cindex.push(ia);\n // x(ia) = A\n x[ia] = mf(vbij, avalues[ka]);\n } else {\n // i exists in C already\n x[ia] = af(x[ia], mf(vbij, avalues[ka]));\n }\n }\n }\n }\n // copy values from x to column jb of c\n for (var p0 = cptr[jb], p1 = cindex.length, p = p0; p < p1; p++) {\n // row\n var ic = cindex[p];\n // copy value\n cvalues[p] = x[ic];\n }\n }\n // update ptr\n cptr[bcolumns] = cindex.length;\n\n // return sparse matrix\n return c;\n }\n\n /**\n * C = A * B\n *\n * @param {Matrix} a SparseMatrix (MxN)\n * @param {Matrix} b SparseMatrix (NxC)\n *\n * @return {Matrix} SparseMatrix (MxC)\n */\n function _multiplySparseMatrixSparseMatrix(a, b) {\n // a sparse\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();\n // b sparse\n var bvalues = b._values;\n var bindex = b._index;\n var bptr = b._ptr;\n var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();\n\n // rows & columns\n var arows = a._size[0];\n var bcolumns = b._size[1];\n // flag indicating both matrices (a & b) contain data\n var values = avalues && bvalues;\n\n // datatype\n var dt;\n // addScalar signature to use\n var af = addScalar;\n // multiplyScalar signature to use\n var mf = multiplyScalar;\n\n // process data types\n if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') {\n // datatype\n dt = adt;\n // find signatures that matches (dt, dt)\n af = typed.find(addScalar, [dt, dt]);\n mf = typed.find(multiplyScalar, [dt, dt]);\n }\n\n // result\n var cvalues = values ? [] : undefined;\n var cindex = [];\n var cptr = [];\n // c matrix\n var c = a.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [arows, bcolumns],\n datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined\n });\n\n // workspace\n var x = values ? [] : undefined;\n // vector with marks indicating a value x[i] exists in a given column\n var w = [];\n // variables\n var ka, ka0, ka1, kb, kb0, kb1, ia, ib;\n // loop b columns\n for (var jb = 0; jb < bcolumns; jb++) {\n // update ptr\n cptr[jb] = cindex.length;\n // mark in workspace for current column\n var mark = jb + 1;\n // B values & index in j\n for (kb0 = bptr[jb], kb1 = bptr[jb + 1], kb = kb0; kb < kb1; kb++) {\n // b row\n ib = bindex[kb];\n // check we need to process values\n if (values) {\n // loop values in a[:,ib]\n for (ka0 = aptr[ib], ka1 = aptr[ib + 1], ka = ka0; ka < ka1; ka++) {\n // row\n ia = aindex[ka];\n // check value exists in current j\n if (w[ia] !== mark) {\n // ia is new entry in j\n w[ia] = mark;\n // add i to pattern of C\n cindex.push(ia);\n // x(ia) = A\n x[ia] = mf(bvalues[kb], avalues[ka]);\n } else {\n // i exists in C already\n x[ia] = af(x[ia], mf(bvalues[kb], avalues[ka]));\n }\n }\n } else {\n // loop values in a[:,ib]\n for (ka0 = aptr[ib], ka1 = aptr[ib + 1], ka = ka0; ka < ka1; ka++) {\n // row\n ia = aindex[ka];\n // check value exists in current j\n if (w[ia] !== mark) {\n // ia is new entry in j\n w[ia] = mark;\n // add i to pattern of C\n cindex.push(ia);\n }\n }\n }\n }\n // check we need to process matrix values (pattern matrix)\n if (values) {\n // copy values from x to column jb of c\n for (var p0 = cptr[jb], p1 = cindex.length, p = p0; p < p1; p++) {\n // row\n var ic = cindex[p];\n // copy value\n cvalues[p] = x[ic];\n }\n }\n }\n // update ptr\n cptr[bcolumns] = cindex.length;\n\n // return sparse matrix\n return c;\n }\n\n /**\n * Multiply two or more values, `x * y`.\n * For matrices, the matrix product is calculated.\n *\n * Syntax:\n *\n * math.multiply(x, y)\n * math.multiply(x, y, z, ...)\n *\n * Examples:\n *\n * math.multiply(4, 5.2) // returns number 20.8\n * math.multiply(2, 3, 4) // returns number 24\n *\n * const a = math.complex(2, 3)\n * const b = math.complex(4, 1)\n * math.multiply(a, b) // returns Complex 5 + 14i\n *\n * const c = [[1, 2], [4, 3]]\n * const d = [[1, 2, 3], [3, -4, 7]]\n * math.multiply(c, d) // returns Array [[7, -6, 17], [13, -4, 33]]\n *\n * const e = math.unit('2.1 km')\n * math.multiply(3, e) // returns Unit 6.3 km\n *\n * See also:\n *\n * divide, prod, cross, dot\n *\n * @param {number | BigNumber | bigint | Fraction | Complex | Unit | Array | Matrix} x First value to multiply\n * @param {number | BigNumber | bigint | Fraction | Complex | Unit | Array | Matrix} y Second value to multiply\n * @return {number | BigNumber | bigint | Fraction | Complex | Unit | Array | Matrix} Multiplication of `x` and `y`\n */\n return typed(name, multiplyScalar, {\n // we extend the signatures of multiplyScalar with signatures dealing with matrices\n\n 'Array, Array': typed.referTo('Matrix, Matrix', selfMM => (x, y) => {\n // check dimensions\n _validateMatrixDimensions(arraySize(x), arraySize(y));\n\n // use dense matrix implementation\n var m = selfMM(matrix(x), matrix(y));\n // return array or scalar\n return isMatrix(m) ? m.valueOf() : m;\n }),\n 'Matrix, Matrix': function Matrix_Matrix(x, y) {\n // dimensions\n var xsize = x.size();\n var ysize = y.size();\n\n // check dimensions\n _validateMatrixDimensions(xsize, ysize);\n\n // process dimensions\n if (xsize.length === 1) {\n // process y dimensions\n if (ysize.length === 1) {\n // Vector * Vector\n return _multiplyVectorVector(x, y, xsize[0]);\n }\n // Vector * Matrix\n return _multiplyVectorMatrix(x, y);\n }\n // process y dimensions\n if (ysize.length === 1) {\n // Matrix * Vector\n return _multiplyMatrixVector(x, y);\n }\n // Matrix * Matrix\n return _multiplyMatrixMatrix(x, y);\n },\n 'Matrix, Array': typed.referTo('Matrix,Matrix', selfMM => (x, y) => selfMM(x, matrix(y))),\n 'Array, Matrix': typed.referToSelf(self => (x, y) => {\n // use Matrix * Matrix implementation\n return self(matrix(x, y.storage()), y);\n }),\n 'SparseMatrix, any': function SparseMatrix_any(x, y) {\n return matAlgo11xS0s(x, y, multiplyScalar, false);\n },\n 'DenseMatrix, any': function DenseMatrix_any(x, y) {\n return matAlgo14xDs(x, y, multiplyScalar, false);\n },\n 'any, SparseMatrix': function any_SparseMatrix(x, y) {\n return matAlgo11xS0s(y, x, multiplyScalar, true);\n },\n 'any, DenseMatrix': function any_DenseMatrix(x, y) {\n return matAlgo14xDs(y, x, multiplyScalar, true);\n },\n 'Array, any': function Array_any(x, y) {\n // use matrix implementation\n return matAlgo14xDs(matrix(x), y, multiplyScalar, false).valueOf();\n },\n 'any, Array': function any_Array(x, y) {\n // use matrix implementation\n return matAlgo14xDs(matrix(y), x, multiplyScalar, true).valueOf();\n },\n 'any, any': multiplyScalar,\n 'any, any, ...any': typed.referToSelf(self => (x, y, rest) => {\n var result = self(x, y);\n for (var i = 0; i < rest.length; i++) {\n result = self(result, rest[i]);\n }\n return result;\n })\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { createMatAlgo01xDSid } from '../../type/matrix/utils/matAlgo01xDSid.js';\nimport { createMatAlgo02xDS0 } from '../../type/matrix/utils/matAlgo02xDS0.js';\nimport { createMatAlgo06xS0S0 } from '../../type/matrix/utils/matAlgo06xS0S0.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { nthRootNumber } from '../../plain/number/index.js';\nvar name = 'nthRoot';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'BigNumber', 'concat'];\nexport var createNthRoot = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n BigNumber: _BigNumber,\n concat\n } = _ref;\n var matAlgo01xDSid = createMatAlgo01xDSid({\n typed\n });\n var matAlgo02xDS0 = createMatAlgo02xDS0({\n typed,\n equalScalar\n });\n var matAlgo06xS0S0 = createMatAlgo06xS0S0({\n typed,\n equalScalar\n });\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Calculate the nth root of a value.\n * The principal nth root of a positive real number A, is the positive real\n * solution of the equation\n *\n * x^root = A\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.nthRoot(a)\n * math.nthRoot(a, root)\n *\n * Examples:\n *\n * math.nthRoot(9, 2) // returns 3 (since 3^2 == 9)\n * math.sqrt(9) // returns 3 (since 3^2 == 9)\n * math.nthRoot(64, 3) // returns 4 (since 4^3 == 64)\n *\n * See also:\n *\n * sqrt, pow\n *\n * @param {number | BigNumber | Array | Matrix | Complex} a\n * Value for which to calculate the nth root\n * @param {number | BigNumber} [root=2] The root.\n * @return {number | Complex | Array | Matrix} Returns the nth root of `a`\n */\n function complexErr() {\n throw new Error('Complex number not supported in function nthRoot. Use nthRoots instead.');\n }\n return typed(name, {\n number: nthRootNumber,\n 'number, number': nthRootNumber,\n BigNumber: x => _bigNthRoot(x, new _BigNumber(2)),\n 'BigNumber, BigNumber': _bigNthRoot,\n Complex: complexErr,\n 'Complex, number': complexErr,\n Array: typed.referTo('DenseMatrix,number', selfDn => x => selfDn(matrix(x), 2).valueOf()),\n DenseMatrix: typed.referTo('DenseMatrix,number', selfDn => x => selfDn(x, 2)),\n SparseMatrix: typed.referTo('SparseMatrix,number', selfSn => x => selfSn(x, 2)),\n 'SparseMatrix, SparseMatrix': typed.referToSelf(self => (x, y) => {\n // density must be one (no zeros in matrix)\n if (y.density() === 1) {\n // sparse + sparse\n return matAlgo06xS0S0(x, y, self);\n } else {\n // throw exception\n throw new Error('Root must be non-zero');\n }\n }),\n 'DenseMatrix, SparseMatrix': typed.referToSelf(self => (x, y) => {\n // density must be one (no zeros in matrix)\n if (y.density() === 1) {\n // dense + sparse\n return matAlgo01xDSid(x, y, self, false);\n } else {\n // throw exception\n throw new Error('Root must be non-zero');\n }\n }),\n 'Array, SparseMatrix': typed.referTo('DenseMatrix,SparseMatrix', selfDS => (x, y) => selfDS(matrix(x), y)),\n 'number | BigNumber, SparseMatrix': typed.referToSelf(self => (x, y) => {\n // density must be one (no zeros in matrix)\n if (y.density() === 1) {\n // sparse - scalar\n return matAlgo11xS0s(y, x, self, true);\n } else {\n // throw exception\n throw new Error('Root must be non-zero');\n }\n })\n }, matrixAlgorithmSuite({\n scalar: 'number | BigNumber',\n SD: matAlgo02xDS0,\n Ss: matAlgo11xS0s,\n sS: false\n }));\n\n /**\n * Calculate the nth root of a for BigNumbers, solve x^root == a\n * https://rosettacode.org/wiki/Nth_root#JavaScript\n * @param {BigNumber} a\n * @param {BigNumber} root\n * @private\n */\n function _bigNthRoot(a, root) {\n var precision = _BigNumber.precision;\n var Big = _BigNumber.clone({\n precision: precision + 2\n });\n var zero = new _BigNumber(0);\n var one = new Big(1);\n var inv = root.isNegative();\n if (inv) {\n root = root.neg();\n }\n if (root.isZero()) {\n throw new Error('Root must be non-zero');\n }\n if (a.isNegative() && !root.abs().mod(2).equals(1)) {\n throw new Error('Root must be odd when a is negative.');\n }\n\n // edge cases zero and infinity\n if (a.isZero()) {\n return inv ? new Big(Infinity) : 0;\n }\n if (!a.isFinite()) {\n return inv ? zero : a;\n }\n var x = a.abs().pow(one.div(root));\n // If a < 0, we require that root is an odd integer,\n // so (-1) ^ (1/root) = -1\n x = a.isNeg() ? x.neg() : x;\n return new _BigNumber((inv ? one.div(x) : x).toPrecision(precision));\n }\n});\nexport var createNthRootNumber = /* #__PURE__ */factory(name, ['typed'], _ref2 => {\n var {\n typed\n } = _ref2;\n return typed(name, {\n number: nthRootNumber,\n 'number, number': nthRootNumber\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { signNumber } from '../../plain/number/index.js';\nvar name = 'sign';\nvar dependencies = ['typed', 'BigNumber', 'Fraction', 'complex'];\nexport var createSign = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber: _BigNumber,\n complex,\n Fraction: _Fraction\n } = _ref;\n /**\n * Compute the sign of a value. The sign of a value x is:\n *\n * - 1 when x > 0\n * - -1 when x < 0\n * - 0 when x == 0\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.sign(x)\n *\n * Examples:\n *\n * math.sign(3.5) // returns 1\n * math.sign(-4.2) // returns -1\n * math.sign(0) // returns 0\n *\n * math.sign([3, 5, -2, 0, 2]) // returns [1, 1, -1, 0, 1]\n *\n * See also:\n *\n * abs\n *\n * @param {number | BigNumber | bigint | Fraction | Complex | Array | Matrix | Unit} x\n * The number for which to determine the sign\n * @return {number | BigNumber | bigint | Fraction | Complex | Array | Matrix | Unit}\n * The sign of `x`\n */\n return typed(name, {\n number: signNumber,\n Complex: function Complex(x) {\n return x.im === 0 ? complex(signNumber(x.re)) : x.sign();\n },\n BigNumber: function BigNumber(x) {\n return new _BigNumber(x.cmp(0));\n },\n bigint: function bigint(x) {\n return x > 0n ? 1n : x < 0n ? -1n : 0n;\n },\n Fraction: function Fraction(x) {\n return new _Fraction(x.s);\n },\n // deep map collection, skip zeros since sign(0) = 0\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self, true)),\n Unit: typed.referToSelf(self => x => {\n if (!x._isDerived() && x.units[0].unit.offset !== 0) {\n throw new TypeError('sign is ambiguous for units with offset');\n }\n return typed.find(self, x.valueType())(x.value);\n })\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'sqrt';\nvar dependencies = ['config', 'typed', 'Complex'];\nexport var createSqrt = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n config,\n typed,\n Complex\n } = _ref;\n /**\n * Calculate the square root of a value.\n *\n * For matrices, if you want the matrix square root of a square matrix,\n * use the `sqrtm` function. If you wish to apply `sqrt` elementwise to\n * a matrix M, use `math.map(M, math.sqrt)`.\n *\n * Syntax:\n *\n * math.sqrt(x)\n *\n * Examples:\n *\n * math.sqrt(25) // returns 5\n * math.square(5) // returns 25\n * math.sqrt(-4) // returns Complex 2i\n *\n * See also:\n *\n * square, multiply, cube, cbrt, sqrtm\n *\n * @param {number | BigNumber | Complex | Unit} x\n * Value for which to calculate the square root.\n * @return {number | BigNumber | Complex | Unit}\n * Returns the square root of `x`\n */\n return typed('sqrt', {\n number: _sqrtNumber,\n Complex: function Complex(x) {\n return x.sqrt();\n },\n BigNumber: function BigNumber(x) {\n if (!x.isNegative() || config.predictable) {\n return x.sqrt();\n } else {\n // negative value -> downgrade to number to do complex value computation\n return _sqrtNumber(x.toNumber());\n }\n },\n Unit: function Unit(x) {\n // Someday will work for complex units when they are implemented\n return x.pow(0.5);\n }\n });\n\n /**\n * Calculate sqrt for a number\n * @param {number} x\n * @returns {number | Complex} Returns the square root of x\n * @private\n */\n function _sqrtNumber(x) {\n if (isNaN(x)) {\n return NaN;\n } else if (x >= 0 || config.predictable) {\n return Math.sqrt(x);\n } else {\n return new Complex(x, 0).sqrt();\n }\n }\n});", "import { factory } from '../../utils/factory.js';\nimport { squareNumber } from '../../plain/number/index.js';\nvar name = 'square';\nvar dependencies = ['typed'];\nexport var createSquare = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Compute the square of a value, `x * x`.\n * To avoid confusion with multiplying a square matrix by itself,\n * this function does not apply to matrices. If you wish to square\n * every element of a matrix, see the examples.\n *\n * Syntax:\n *\n * math.square(x)\n *\n * Examples:\n *\n * math.square(2) // returns number 4\n * math.square(3) // returns number 9\n * math.pow(3, 2) // returns number 9\n * math.multiply(3, 3) // returns number 9\n *\n * math.map([1, 2, 3, 4], math.square) // returns Array [1, 4, 9, 16]\n *\n * See also:\n *\n * multiply, cube, sqrt, pow\n *\n * @param {number | BigNumber | bigint | Fraction | Complex | Unit} x\n * Number for which to calculate the square\n * @return {number | BigNumber | bigint | Fraction | Complex | Unit}\n * Squared value\n */\n return typed(name, {\n number: squareNumber,\n Complex: function Complex(x) {\n return x.mul(x);\n },\n BigNumber: function BigNumber(x) {\n return x.times(x);\n },\n bigint: function bigint(x) {\n return x * x;\n },\n Fraction: function Fraction(x) {\n return x.mul(x);\n },\n Unit: function Unit(x) {\n return x.pow(2);\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { createMatAlgo01xDSid } from '../../type/matrix/utils/matAlgo01xDSid.js';\nimport { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo05xSfSf } from '../../type/matrix/utils/matAlgo05xSfSf.js';\nimport { createMatAlgo10xSids } from '../../type/matrix/utils/matAlgo10xSids.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nvar name = 'subtract';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'subtractScalar', 'unaryMinus', 'DenseMatrix', 'concat'];\nexport var createSubtract = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n subtractScalar,\n unaryMinus,\n DenseMatrix,\n concat\n } = _ref;\n // TODO: split function subtract in two: subtract and subtractScalar\n\n var matAlgo01xDSid = createMatAlgo01xDSid({\n typed\n });\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo05xSfSf = createMatAlgo05xSfSf({\n typed,\n equalScalar\n });\n var matAlgo10xSids = createMatAlgo10xSids({\n typed,\n DenseMatrix\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Subtract two values, `x - y`.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.subtract(x, y)\n *\n * Examples:\n *\n * math.subtract(5.3, 2) // returns number 3.3\n *\n * const a = math.complex(2, 3)\n * const b = math.complex(4, 1)\n * math.subtract(a, b) // returns Complex -2 + 2i\n *\n * math.subtract([5, 7, 4], 4) // returns Array [1, 3, 0]\n *\n * const c = math.unit('2.1 km')\n * const d = math.unit('500m')\n * math.subtract(c, d) // returns Unit 1.6 km\n *\n * See also:\n *\n * add\n *\n * @param {number | BigNumber | bigint | Fraction | Complex | Unit | Array | Matrix} x Initial value\n * @param {number | BigNumber | bigint | Fraction | Complex | Unit | Array | Matrix} y Value to subtract from `x`\n * @return {number | BigNumber | bigint | Fraction | Complex | Unit | Array | Matrix} Subtraction of `x` and `y`\n */\n return typed(name, {\n 'any, any': subtractScalar\n }, matrixAlgorithmSuite({\n elop: subtractScalar,\n SS: matAlgo05xSfSf,\n DS: matAlgo01xDSid,\n SD: matAlgo03xDSf,\n Ss: matAlgo12xSfs,\n sS: matAlgo10xSids\n }));\n});", "import { factory } from '../../utils/factory.js';\nimport { xgcdNumber } from '../../plain/number/index.js';\nvar name = 'xgcd';\nvar dependencies = ['typed', 'config', 'matrix', 'BigNumber'];\nexport var createXgcd = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n BigNumber\n } = _ref;\n /**\n * Calculate the extended greatest common divisor for two values.\n * See https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm.\n *\n * Syntax:\n *\n * math.xgcd(a, b)\n *\n * Examples:\n *\n * math.xgcd(8, 12) // returns [4, -1, 1]\n * math.gcd(8, 12) // returns 4\n * math.xgcd(36163, 21199) // returns [1247, -7, 12]\n *\n * See also:\n *\n * gcd, lcm\n *\n * @param {number | BigNumber} a An integer number\n * @param {number | BigNumber} b An integer number\n * @return {Array} Returns an array containing 3 integers `[div, m, n]`\n * where `div = gcd(a, b)` and `a*m + b*n = div`\n */\n return typed(name, {\n 'number, number': function number_number(a, b) {\n var res = xgcdNumber(a, b);\n return config.matrix === 'Array' ? res : matrix(res);\n },\n 'BigNumber, BigNumber': _xgcdBigNumber\n // TODO: implement support for Fraction\n });\n\n /**\n * Calculate xgcd for two BigNumbers\n * @param {BigNumber} a\n * @param {BigNumber} b\n * @return {BigNumber[]} result\n * @private\n */\n function _xgcdBigNumber(a, b) {\n // source: https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm\n var\n // used to swap two variables\n t;\n var\n // quotient\n q;\n var\n // remainder\n r;\n var zero = new BigNumber(0);\n var one = new BigNumber(1);\n var x = zero;\n var lastx = one;\n var y = one;\n var lasty = zero;\n if (!a.isInt() || !b.isInt()) {\n throw new Error('Parameters in function xgcd must be integer numbers');\n }\n while (!b.isZero()) {\n q = a.div(b).floor();\n r = a.mod(b);\n t = x;\n x = lastx.minus(q.times(x));\n lastx = t;\n t = y;\n y = lasty.minus(q.times(y));\n lasty = t;\n a = b;\n b = r;\n }\n var res;\n if (a.lt(zero)) {\n res = [a.neg(), lastx.neg(), lasty.neg()];\n } else {\n res = [a, !a.isZero() ? lastx : 0, lasty];\n }\n return config.matrix === 'Array' ? res : matrix(res);\n }\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'invmod';\nvar dependencies = ['typed', 'config', 'BigNumber', 'xgcd', 'equal', 'smaller', 'mod', 'add', 'isInteger'];\nexport var createInvmod = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n BigNumber,\n xgcd,\n equal,\n smaller,\n mod,\n add,\n isInteger\n } = _ref;\n /**\n * Calculate the (modular) multiplicative inverse of a modulo b. Solution to the equation `ax \u2263 1 (mod b)`\n * See https://en.wikipedia.org/wiki/Modular_multiplicative_inverse.\n *\n * Syntax:\n *\n * math.invmod(a, b)\n *\n * Examples:\n *\n * math.invmod(8, 12) // returns NaN\n * math.invmod(7, 13) // returns 2\n * math.invmod(15151, 15122) // returns 10429\n *\n * See also:\n *\n * gcd, xgcd\n *\n * @param {number | BigNumber} a An integer number\n * @param {number | BigNumber} b An integer number\n * @return {number | BigNumber } Returns an integer number\n * where `invmod(a,b)*a \u2263 1 (mod b)`\n */\n return typed(name, {\n 'number, number': invmod,\n 'BigNumber, BigNumber': invmod\n });\n function invmod(a, b) {\n if (!isInteger(a) || !isInteger(b)) throw new Error('Parameters in function invmod must be integer numbers');\n a = mod(a, b);\n if (equal(b, 0)) throw new Error('Divisor must be non zero');\n var res = xgcd(a, b);\n res = res.valueOf();\n var [gcd, inv] = res;\n if (!equal(gcd, BigNumber(1))) return NaN;\n inv = mod(inv, b);\n if (smaller(inv, BigNumber(0))) inv = add(inv, b);\n return inv;\n }\n});", "import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nvar name = 'matAlgo09xS0Sf';\nvar dependencies = ['typed', 'equalScalar'];\nexport var createMatAlgo09xS0Sf = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar\n } = _ref;\n /**\n * Iterates over SparseMatrix A and invokes the callback function f(Aij, Bij).\n * Callback function invoked NZA times, number of nonzero elements in A.\n *\n *\n * \u250C f(Aij, Bij) ; A(i,j) !== 0\n * C(i,j) = \u2524\n * \u2514 0 ; otherwise\n *\n *\n * @param {Matrix} a The SparseMatrix instance (A)\n * @param {Matrix} b The SparseMatrix instance (B)\n * @param {Function} callback The f(Aij,Bij) operation to invoke\n *\n * @return {Matrix} SparseMatrix (C)\n *\n * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294\n */\n return function matAlgo09xS0Sf(a, b, callback) {\n // sparse matrix arrays\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n var asize = a._size;\n var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();\n // sparse matrix arrays\n var bvalues = b._values;\n var bindex = b._index;\n var bptr = b._ptr;\n var bsize = b._size;\n var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();\n\n // validate dimensions\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n }\n\n // check rows & columns\n if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n }\n\n // rows & columns\n var rows = asize[0];\n var columns = asize[1];\n\n // datatype\n var dt;\n // equal signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n // callback signature to use\n var cf = callback;\n\n // process data types\n if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {\n // datatype\n dt = adt;\n // find signature that matches (dt, dt)\n eq = typed.find(equalScalar, [dt, dt]);\n // convert 0 to the same datatype\n zero = typed.convert(0, dt);\n // callback\n cf = typed.find(callback, [dt, dt]);\n }\n\n // result arrays\n var cvalues = avalues && bvalues ? [] : undefined;\n var cindex = [];\n var cptr = [];\n\n // workspaces\n var x = cvalues ? [] : undefined;\n // marks indicating we have a value in x for a given column\n var w = [];\n\n // vars\n var i, j, k, k0, k1;\n\n // loop columns\n for (j = 0; j < columns; j++) {\n // update cptr\n cptr[j] = cindex.length;\n // column mark\n var mark = j + 1;\n // check we need to process values\n if (x) {\n // loop B(:,j)\n for (k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) {\n // row\n i = bindex[k];\n // update workspace\n w[i] = mark;\n x[i] = bvalues[k];\n }\n }\n // loop A(:,j)\n for (k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {\n // row\n i = aindex[k];\n // check we need to process values\n if (x) {\n // b value @ i,j\n var vb = w[i] === mark ? x[i] : zero;\n // invoke f\n var vc = cf(avalues[k], vb);\n // check zero value\n if (!eq(vc, zero)) {\n // push index\n cindex.push(i);\n // push value\n cvalues.push(vc);\n }\n } else {\n // push index\n cindex.push(i);\n }\n }\n }\n // update cptr\n cptr[columns] = cindex.length;\n\n // return sparse matrix\n return a.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [rows, columns],\n datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined\n });\n };\n});", "import { factory } from '../../utils/factory.js';\nimport { createMatAlgo02xDS0 } from '../../type/matrix/utils/matAlgo02xDS0.js';\nimport { createMatAlgo09xS0Sf } from '../../type/matrix/utils/matAlgo09xS0Sf.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nvar name = 'dotMultiply';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'multiplyScalar', 'concat'];\nexport var createDotMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n multiplyScalar,\n concat\n } = _ref;\n var matAlgo02xDS0 = createMatAlgo02xDS0({\n typed,\n equalScalar\n });\n var matAlgo09xS0Sf = createMatAlgo09xS0Sf({\n typed,\n equalScalar\n });\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Multiply two matrices element wise. The function accepts both matrices and\n * scalar values.\n *\n * Syntax:\n *\n * math.dotMultiply(x, y)\n *\n * Examples:\n *\n * math.dotMultiply(2, 4) // returns 8\n *\n * a = [[9, 5], [6, 1]]\n * b = [[3, 2], [5, 2]]\n *\n * math.dotMultiply(a, b) // returns [[27, 10], [30, 2]]\n * math.multiply(a, b) // returns [[52, 28], [23, 14]]\n *\n * See also:\n *\n * multiply, divide, dotDivide\n *\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x Left hand value\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} y Right hand value\n * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} Multiplication of `x` and `y`\n */\n return typed(name, matrixAlgorithmSuite({\n elop: multiplyScalar,\n SS: matAlgo09xS0Sf,\n DS: matAlgo02xDS0,\n Ss: matAlgo11xS0s\n }));\n});", "/**\n * Bitwise and for Bignumbers\n *\n * Special Cases:\n * N & n = N\n * n & 0 = 0\n * n & -1 = n\n * n & n = n\n * I & I = I\n * -I & -I = -I\n * I & -I = 0\n * I & n = n\n * I & -n = I\n * -I & n = 0\n * -I & -n = -I\n *\n * @param {BigNumber} x\n * @param {BigNumber} y\n * @return {BigNumber} Result of `x` & `y`, is fully precise\n * @private\n */\nexport function bitAndBigNumber(x, y) {\n if (x.isFinite() && !x.isInteger() || y.isFinite() && !y.isInteger()) {\n throw new Error('Integers expected in function bitAnd');\n }\n var BigNumber = x.constructor;\n if (x.isNaN() || y.isNaN()) {\n return new BigNumber(NaN);\n }\n if (x.isZero() || y.eq(-1) || x.eq(y)) {\n return x;\n }\n if (y.isZero() || x.eq(-1)) {\n return y;\n }\n if (!x.isFinite() || !y.isFinite()) {\n if (!x.isFinite() && !y.isFinite()) {\n if (x.isNegative() === y.isNegative()) {\n return x;\n }\n return new BigNumber(0);\n }\n if (!x.isFinite()) {\n if (y.isNegative()) {\n return x;\n }\n if (x.isNegative()) {\n return new BigNumber(0);\n }\n return y;\n }\n if (!y.isFinite()) {\n if (x.isNegative()) {\n return y;\n }\n if (y.isNegative()) {\n return new BigNumber(0);\n }\n return x;\n }\n }\n return bitwise(x, y, function (a, b) {\n return a & b;\n });\n}\n\n/**\n * Bitwise not\n * @param {BigNumber} x\n * @return {BigNumber} Result of ~`x`, fully precise\n *\n */\nexport function bitNotBigNumber(x) {\n if (x.isFinite() && !x.isInteger()) {\n throw new Error('Integer expected in function bitNot');\n }\n var BigNumber = x.constructor;\n var prevPrec = BigNumber.precision;\n BigNumber.config({\n precision: 1E9\n });\n var result = x.plus(new BigNumber(1));\n result.s = -result.s || null;\n BigNumber.config({\n precision: prevPrec\n });\n return result;\n}\n\n/**\n * Bitwise OR for BigNumbers\n *\n * Special Cases:\n * N | n = N\n * n | 0 = n\n * n | -1 = -1\n * n | n = n\n * I | I = I\n * -I | -I = -I\n * I | -n = -1\n * I | -I = -1\n * I | n = I\n * -I | n = -I\n * -I | -n = -n\n *\n * @param {BigNumber} x\n * @param {BigNumber} y\n * @return {BigNumber} Result of `x` | `y`, fully precise\n */\nexport function bitOrBigNumber(x, y) {\n if (x.isFinite() && !x.isInteger() || y.isFinite() && !y.isInteger()) {\n throw new Error('Integers expected in function bitOr');\n }\n var BigNumber = x.constructor;\n if (x.isNaN() || y.isNaN()) {\n return new BigNumber(NaN);\n }\n var negOne = new BigNumber(-1);\n if (x.isZero() || y.eq(negOne) || x.eq(y)) {\n return y;\n }\n if (y.isZero() || x.eq(negOne)) {\n return x;\n }\n if (!x.isFinite() || !y.isFinite()) {\n if (!x.isFinite() && !x.isNegative() && y.isNegative() || x.isNegative() && !y.isNegative() && !y.isFinite()) {\n return negOne;\n }\n if (x.isNegative() && y.isNegative()) {\n return x.isFinite() ? x : y;\n }\n return x.isFinite() ? y : x;\n }\n return bitwise(x, y, function (a, b) {\n return a | b;\n });\n}\n\n/**\n * Applies bitwise function to numbers\n * @param {BigNumber} x\n * @param {BigNumber} y\n * @param {function (a, b)} func\n * @return {BigNumber}\n */\nexport function bitwise(x, y, func) {\n var BigNumber = x.constructor;\n var xBits, yBits;\n var xSign = +(x.s < 0);\n var ySign = +(y.s < 0);\n if (xSign) {\n xBits = decCoefficientToBinaryString(bitNotBigNumber(x));\n for (var i = 0; i < xBits.length; ++i) {\n xBits[i] ^= 1;\n }\n } else {\n xBits = decCoefficientToBinaryString(x);\n }\n if (ySign) {\n yBits = decCoefficientToBinaryString(bitNotBigNumber(y));\n for (var _i = 0; _i < yBits.length; ++_i) {\n yBits[_i] ^= 1;\n }\n } else {\n yBits = decCoefficientToBinaryString(y);\n }\n var minBits, maxBits, minSign;\n if (xBits.length <= yBits.length) {\n minBits = xBits;\n maxBits = yBits;\n minSign = xSign;\n } else {\n minBits = yBits;\n maxBits = xBits;\n minSign = ySign;\n }\n var shortLen = minBits.length;\n var longLen = maxBits.length;\n var expFuncVal = func(xSign, ySign) ^ 1;\n var outVal = new BigNumber(expFuncVal ^ 1);\n var twoPower = new BigNumber(1);\n var two = new BigNumber(2);\n var prevPrec = BigNumber.precision;\n BigNumber.config({\n precision: 1E9\n });\n while (shortLen > 0) {\n if (func(minBits[--shortLen], maxBits[--longLen]) === expFuncVal) {\n outVal = outVal.plus(twoPower);\n }\n twoPower = twoPower.times(two);\n }\n while (longLen > 0) {\n if (func(minSign, maxBits[--longLen]) === expFuncVal) {\n outVal = outVal.plus(twoPower);\n }\n twoPower = twoPower.times(two);\n }\n BigNumber.config({\n precision: prevPrec\n });\n if (expFuncVal === 0) {\n outVal.s = -outVal.s;\n }\n return outVal;\n}\n\n/* Extracted from decimal.js, and edited to specialize. */\nfunction decCoefficientToBinaryString(x) {\n // Convert to string\n var a = x.d; // array with digits\n var r = a[0] + '';\n for (var i = 1; i < a.length; ++i) {\n var s = a[i] + '';\n for (var z = 7 - s.length; z--;) {\n s = '0' + s;\n }\n r += s;\n }\n var j = r.length;\n while (r.charAt(j) === '0') {\n j--;\n }\n var xe = x.e;\n var str = r.slice(0, j + 1 || 1);\n var strL = str.length;\n if (xe > 0) {\n if (++xe > strL) {\n // Append zeros.\n xe -= strL;\n while (xe--) {\n str += '0';\n }\n } else if (xe < strL) {\n str = str.slice(0, xe) + '.' + str.slice(xe);\n }\n }\n\n // Convert from base 10 (decimal) to base 2\n var arr = [0];\n for (var _i2 = 0; _i2 < str.length;) {\n var arrL = arr.length;\n while (arrL--) {\n arr[arrL] *= 10;\n }\n arr[0] += parseInt(str.charAt(_i2++)); // convert to int\n for (var _j = 0; _j < arr.length; ++_j) {\n if (arr[_j] > 1) {\n if (arr[_j + 1] === null || arr[_j + 1] === undefined) {\n arr[_j + 1] = 0;\n }\n arr[_j + 1] += arr[_j] >> 1;\n arr[_j] &= 1;\n }\n }\n }\n return arr.reverse();\n}\n\n/**\n * Bitwise XOR for BigNumbers\n *\n * Special Cases:\n * N ^ n = N\n * n ^ 0 = n\n * n ^ n = 0\n * n ^ -1 = ~n\n * I ^ n = I\n * I ^ -n = -I\n * I ^ -I = -1\n * -I ^ n = -I\n * -I ^ -n = I\n *\n * @param {BigNumber} x\n * @param {BigNumber} y\n * @return {BigNumber} Result of `x` ^ `y`, fully precise\n *\n */\nexport function bitXor(x, y) {\n if (x.isFinite() && !x.isInteger() || y.isFinite() && !y.isInteger()) {\n throw new Error('Integers expected in function bitXor');\n }\n var BigNumber = x.constructor;\n if (x.isNaN() || y.isNaN()) {\n return new BigNumber(NaN);\n }\n if (x.isZero()) {\n return y;\n }\n if (y.isZero()) {\n return x;\n }\n if (x.eq(y)) {\n return new BigNumber(0);\n }\n var negOne = new BigNumber(-1);\n if (x.eq(negOne)) {\n return bitNotBigNumber(y);\n }\n if (y.eq(negOne)) {\n return bitNotBigNumber(x);\n }\n if (!x.isFinite() || !y.isFinite()) {\n if (!x.isFinite() && !y.isFinite()) {\n return negOne;\n }\n return new BigNumber(x.isNegative() === y.isNegative() ? Infinity : -Infinity);\n }\n return bitwise(x, y, function (a, b) {\n return a ^ b;\n });\n}\n\n/**\n * Bitwise left shift\n *\n * Special Cases:\n * n << -n = N\n * n << N = N\n * N << n = N\n * n << 0 = n\n * 0 << n = 0\n * I << I = N\n * I << n = I\n * n << I = I\n *\n * @param {BigNumber} x\n * @param {BigNumber} y\n * @return {BigNumber} Result of `x` << `y`\n *\n */\nexport function leftShiftBigNumber(x, y) {\n if (x.isFinite() && !x.isInteger() || y.isFinite() && !y.isInteger()) {\n throw new Error('Integers expected in function leftShift');\n }\n var BigNumber = x.constructor;\n if (x.isNaN() || y.isNaN() || y.isNegative() && !y.isZero()) {\n return new BigNumber(NaN);\n }\n if (x.isZero() || y.isZero()) {\n return x;\n }\n if (!x.isFinite() && !y.isFinite()) {\n return new BigNumber(NaN);\n }\n\n // Math.pow(2, y) is fully precise for y < 55, and fast\n if (y.lt(55)) {\n return x.times(Math.pow(2, y.toNumber()) + '');\n }\n return x.times(new BigNumber(2).pow(y));\n}\n\n/*\n * Special Cases:\n * n >> -n = N\n * n >> N = N\n * N >> n = N\n * I >> I = N\n * n >> 0 = n\n * I >> n = I\n * -I >> n = -I\n * -I >> I = -I\n * n >> I = I\n * -n >> I = -1\n * 0 >> n = 0\n *\n * @param {BigNumber} value\n * @param {BigNumber} value\n * @return {BigNumber} Result of `x` >> `y`\n *\n */\nexport function rightArithShiftBigNumber(x, y) {\n if (x.isFinite() && !x.isInteger() || y.isFinite() && !y.isInteger()) {\n throw new Error('Integers expected in function rightArithShift');\n }\n var BigNumber = x.constructor;\n if (x.isNaN() || y.isNaN() || y.isNegative() && !y.isZero()) {\n return new BigNumber(NaN);\n }\n if (x.isZero() || y.isZero()) {\n return x;\n }\n if (!y.isFinite()) {\n if (x.isNegative()) {\n return new BigNumber(-1);\n }\n if (!x.isFinite()) {\n return new BigNumber(NaN);\n }\n return new BigNumber(0);\n }\n\n // Math.pow(2, y) is fully precise for y < 55, and fast\n if (y.lt(55)) {\n return x.div(Math.pow(2, y.toNumber()) + '').floor();\n }\n return x.div(new BigNumber(2).pow(y)).floor();\n}", "import { bitAndBigNumber } from '../../utils/bignumber/bitwise.js';\nimport { createMatAlgo02xDS0 } from '../../type/matrix/utils/matAlgo02xDS0.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatAlgo06xS0S0 } from '../../type/matrix/utils/matAlgo06xS0S0.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { bitAndNumber } from '../../plain/number/index.js';\nvar name = 'bitAnd';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'concat'];\nexport var createBitAnd = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n concat\n } = _ref;\n var matAlgo02xDS0 = createMatAlgo02xDS0({\n typed,\n equalScalar\n });\n var matAlgo06xS0S0 = createMatAlgo06xS0S0({\n typed,\n equalScalar\n });\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Bitwise AND two values, `x & y`.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.bitAnd(x, y)\n *\n * Examples:\n *\n * math.bitAnd(53, 131) // returns number 1\n *\n * math.bitAnd([1, 12, 31], 42) // returns Array [0, 8, 10]\n *\n * See also:\n *\n * bitNot, bitOr, bitXor, leftShift, rightArithShift, rightLogShift\n *\n * @param {number | BigNumber | bigint | Array | Matrix} x First value to and\n * @param {number | BigNumber | bigint | Array | Matrix} y Second value to and\n * @return {number | BigNumber | bigint | Array | Matrix} AND of `x` and `y`\n */\n return typed(name, {\n 'number, number': bitAndNumber,\n 'BigNumber, BigNumber': bitAndBigNumber,\n 'bigint, bigint': (x, y) => x & y\n }, matrixAlgorithmSuite({\n SS: matAlgo06xS0S0,\n DS: matAlgo02xDS0,\n Ss: matAlgo11xS0s\n }));\n});", "import { bitNotBigNumber } from '../../utils/bignumber/bitwise.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { bitNotNumber } from '../../plain/number/index.js';\nvar name = 'bitNot';\nvar dependencies = ['typed'];\nexport var createBitNot = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Bitwise NOT value, `~x`.\n * For matrices, the function is evaluated element wise.\n * For units, the function is evaluated on the best prefix base.\n *\n * Syntax:\n *\n * math.bitNot(x)\n *\n * Examples:\n *\n * math.bitNot(1) // returns number -2\n *\n * math.bitNot([2, -3, 4]) // returns Array [-3, 2, -5]\n *\n * See also:\n *\n * bitAnd, bitOr, bitXor, leftShift, rightArithShift, rightLogShift\n *\n * @param {number | BigNumber | bigint | Array | Matrix} x Value to not\n * @return {number | BigNumber | bigint | Array | Matrix} NOT of `x`\n */\n return typed(name, {\n number: bitNotNumber,\n BigNumber: bitNotBigNumber,\n bigint: x => ~x,\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { bitOrBigNumber } from '../../utils/bignumber/bitwise.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatAlgo10xSids } from '../../type/matrix/utils/matAlgo10xSids.js';\nimport { createMatAlgo04xSidSid } from '../../type/matrix/utils/matAlgo04xSidSid.js';\nimport { createMatAlgo01xDSid } from '../../type/matrix/utils/matAlgo01xDSid.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { bitOrNumber } from '../../plain/number/index.js';\nvar name = 'bitOr';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'DenseMatrix', 'concat'];\nexport var createBitOr = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n DenseMatrix,\n concat\n } = _ref;\n var matAlgo01xDSid = createMatAlgo01xDSid({\n typed\n });\n var matAlgo04xSidSid = createMatAlgo04xSidSid({\n typed,\n equalScalar\n });\n var matAlgo10xSids = createMatAlgo10xSids({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Bitwise OR two values, `x | y`.\n * For matrices, the function is evaluated element wise.\n * For units, the function is evaluated on the lowest print base.\n *\n * Syntax:\n *\n * math.bitOr(x, y)\n *\n * Examples:\n *\n * math.bitOr(1, 2) // returns number 3\n *\n * math.bitOr([1, 2, 3], 4) // returns Array [5, 6, 7]\n *\n * See also:\n *\n * bitAnd, bitNot, bitXor, leftShift, rightArithShift, rightLogShift\n *\n * @param {number | BigNumber | bigint | Array | Matrix} x First value to or\n * @param {number | BigNumber | bigint | Array | Matrix} y Second value to or\n * @return {number | BigNumber | bigint | Array | Matrix} OR of `x` and `y`\n */\n return typed(name, {\n 'number, number': bitOrNumber,\n 'BigNumber, BigNumber': bitOrBigNumber,\n 'bigint, bigint': (x, y) => x | y\n }, matrixAlgorithmSuite({\n SS: matAlgo04xSidSid,\n DS: matAlgo01xDSid,\n Ss: matAlgo10xSids\n }));\n});", "import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nvar name = 'matAlgo07xSSf';\nvar dependencies = ['typed', 'SparseMatrix'];\nexport var createMatAlgo07xSSf = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n SparseMatrix\n } = _ref;\n /**\n * Iterates over SparseMatrix A and SparseMatrix B items (zero and nonzero) and invokes the callback function f(Aij, Bij).\n * Callback function invoked MxN times.\n *\n * C(i,j) = f(Aij, Bij)\n *\n * @param {Matrix} a The SparseMatrix instance (A)\n * @param {Matrix} b The SparseMatrix instance (B)\n * @param {Function} callback The f(Aij,Bij) operation to invoke\n *\n * @return {Matrix} SparseMatrix (C)\n *\n * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294\n */\n return function matAlgo07xSSf(a, b, callback) {\n // sparse matrix arrays\n var asize = a._size;\n var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();\n var bsize = b._size;\n var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();\n\n // validate dimensions\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n }\n if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n }\n\n // rows & columns\n var rows = asize[0];\n var columns = asize[1];\n\n // datatype\n var dt;\n var zero = 0;\n var cf = callback;\n\n // process data types\n if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {\n dt = adt;\n zero = typed.convert(0, dt);\n cf = typed.find(callback, [dt, dt]);\n }\n\n // result arrays for sparse format\n var cvalues = [];\n var cindex = [];\n var cptr = new Array(columns + 1).fill(0); // Start with column pointer array\n\n // workspaces\n var xa = [];\n var xb = [];\n var wa = [];\n var wb = [];\n\n // loop columns\n for (var j = 0; j < columns; j++) {\n var mark = j + 1;\n var nonZeroCount = 0;\n _scatter(a, j, wa, xa, mark);\n _scatter(b, j, wb, xb, mark);\n\n // loop rows\n for (var i = 0; i < rows; i++) {\n var va = wa[i] === mark ? xa[i] : zero;\n var vb = wb[i] === mark ? xb[i] : zero;\n\n // invoke callback\n var cij = cf(va, vb);\n // Store all non zero and true values\n if (cij !== 0 && cij !== false) {\n cindex.push(i); // row index\n cvalues.push(cij); // computed value\n nonZeroCount++;\n }\n }\n\n // Update column pointer with cumulative count of non-zero values\n cptr[j + 1] = cptr[j] + nonZeroCount;\n }\n\n // Return the result as a sparse matrix\n return new SparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [rows, columns],\n datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined\n });\n };\n function _scatter(m, j, w, x, mark) {\n // a arrays\n var values = m._values;\n var index = m._index;\n var ptr = m._ptr;\n // loop values in column j\n for (var k = ptr[j], k1 = ptr[j + 1]; k < k1; k++) {\n // row\n var i = index[k];\n // update workspace\n w[i] = mark;\n x[i] = values[k];\n }\n }\n});", "import { bitXor as bigBitXor } from '../../utils/bignumber/bitwise.js';\nimport { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo07xSSf } from '../../type/matrix/utils/matAlgo07xSSf.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { bitXorNumber } from '../../plain/number/index.js';\nvar name = 'bitXor';\nvar dependencies = ['typed', 'matrix', 'DenseMatrix', 'concat', 'SparseMatrix'];\nexport var createBitXor = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n DenseMatrix,\n concat,\n SparseMatrix\n } = _ref;\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo07xSSf = createMatAlgo07xSSf({\n typed,\n SparseMatrix\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Bitwise XOR two values, `x ^ y`.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.bitXor(x, y)\n *\n * Examples:\n *\n * math.bitXor(1, 2) // returns number 3\n *\n * math.bitXor([2, 3, 4], 4) // returns Array [6, 7, 0]\n *\n * See also:\n *\n * bitAnd, bitNot, bitOr, leftShift, rightArithShift, rightLogShift\n *\n * @param {number | BigNumber | bigint | Array | Matrix} x First value to xor\n * @param {number | BigNumber | bigint | Array | Matrix} y Second value to xor\n * @return {number | BigNumber | bigint | Array | Matrix} XOR of `x` and `y`\n */\n return typed(name, {\n 'number, number': bitXorNumber,\n 'BigNumber, BigNumber': bigBitXor,\n 'bigint, bigint': (x, y) => x ^ y\n }, matrixAlgorithmSuite({\n SS: matAlgo07xSSf,\n DS: matAlgo03xDSf,\n Ss: matAlgo12xSfs\n }));\n});", "import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nvar name = 'arg';\nvar dependencies = ['typed'];\nexport var createArg = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Compute the argument of a complex value.\n * For a complex number `a + bi`, the argument is computed as `atan2(b, a)`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.arg(x)\n *\n * Examples:\n *\n * const a = math.complex(2, 2)\n * math.arg(a) / math.pi // returns number 0.25\n *\n * const b = math.complex('2 + 3i')\n * math.arg(b) // returns number 0.982793723247329\n * math.atan2(3, 2) // returns number 0.982793723247329\n *\n * See also:\n *\n * re, im, conj, abs\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x\n * A complex number or array with complex numbers\n * @return {number | BigNumber | Array | Matrix} The argument of x\n */\n return typed(name, {\n number: function number(x) {\n return Math.atan2(0, x);\n },\n BigNumber: function BigNumber(x) {\n return x.constructor.atan2(0, x);\n },\n Complex: function Complex(x) {\n return x.arg();\n },\n // TODO: implement BigNumber support for function arg\n\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nvar name = 'conj';\nvar dependencies = ['typed'];\nexport var createConj = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Compute the complex conjugate of a complex value.\n * If `x = a+bi`, the complex conjugate of `x` is `a - bi`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.conj(x)\n *\n * Examples:\n *\n * math.conj(math.complex('2 + 3i')) // returns Complex 2 - 3i\n * math.conj(math.complex('2 - 3i')) // returns Complex 2 + 3i\n * math.conj(math.complex('-5.2i')) // returns Complex 5.2i\n *\n * See also:\n *\n * re, im, arg, abs\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x\n * A complex number or array with complex numbers\n * @return {number | BigNumber | Complex | Array | Matrix}\n * The complex conjugate of x\n */\n return typed(name, {\n 'number | BigNumber | Fraction': x => x,\n Complex: x => x.conjugate(),\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nvar name = 'im';\nvar dependencies = ['typed'];\nexport var createIm = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Get the imaginary part of a complex number.\n * For a complex number `a + bi`, the function returns `b`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.im(x)\n *\n * Examples:\n *\n * const a = math.complex(2, 3)\n * math.re(a) // returns number 2\n * math.im(a) // returns number 3\n *\n * math.re(math.complex('-5.2i')) // returns number -5.2\n * math.re(math.complex(2.4)) // returns number 0\n *\n * See also:\n *\n * re, conj, abs, arg\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x\n * A complex number or array with complex numbers\n * @return {number | BigNumber | Array | Matrix} The imaginary part of x\n */\n return typed(name, {\n number: () => 0,\n 'BigNumber | Fraction': x => x.mul(0),\n Complex: x => x.im,\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nvar name = 're';\nvar dependencies = ['typed'];\nexport var createRe = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Get the real part of a complex number.\n * For a complex number `a + bi`, the function returns `a`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.re(x)\n *\n * Examples:\n *\n * const a = math.complex(2, 3)\n * math.re(a) // returns number 2\n * math.im(a) // returns number 3\n *\n * math.re(math.complex('-5.2i')) // returns number 0\n * math.re(math.complex(2.4)) // returns number 2.4\n *\n * See also:\n *\n * im, conj, abs, arg\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x\n * A complex number or array with complex numbers\n * @return {number | BigNumber | Array | Matrix} The real part of x\n */\n return typed(name, {\n 'number | BigNumber | Fraction': x => x,\n Complex: x => x.re,\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { notNumber } from '../../plain/number/index.js';\nvar name = 'not';\nvar dependencies = ['typed'];\nexport var createNot = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Logical `not`. Flips boolean value of a given parameter.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.not(x)\n *\n * Examples:\n *\n * math.not(2) // returns false\n * math.not(0) // returns true\n * math.not(true) // returns false\n *\n * a = [2, -7, 0]\n * math.not(a) // returns [false, false, true]\n *\n * See also:\n *\n * and, or, xor\n *\n * @param {number | BigNumber | bigint | Complex | Unit | Array | Matrix} x First value to check\n * @return {boolean | Array | Matrix}\n * Returns true when input is a zero or empty value.\n */\n return typed(name, {\n 'null | undefined': () => true,\n number: notNumber,\n Complex: function Complex(x) {\n return x.re === 0 && x.im === 0;\n },\n BigNumber: function BigNumber(x) {\n return x.isZero() || x.isNaN();\n },\n bigint: x => !x,\n Unit: typed.referToSelf(self => x => typed.find(self, x.valueType())(x.value)),\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatAlgo05xSfSf } from '../../type/matrix/utils/matAlgo05xSfSf.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { orNumber } from '../../plain/number/index.js';\nvar name = 'or';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'DenseMatrix', 'concat'];\nexport var createOr = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n DenseMatrix,\n concat\n } = _ref;\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo05xSfSf = createMatAlgo05xSfSf({\n typed,\n equalScalar\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Logical `or`. Test if at least one value is defined with a nonzero/nonempty value.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.or(x, y)\n *\n * Examples:\n *\n * math.or(2, 4) // returns true\n *\n * a = [2, 5, 0]\n * b = [0, 22, 0]\n * c = 0\n *\n * math.or(a, b) // returns [true, true, false]\n * math.or(b, c) // returns [false, true, false]\n *\n * See also:\n *\n * and, not, xor\n *\n * @param {number | BigNumber | bigint | Complex | Unit | Array | Matrix} x First value to check\n * @param {number | BigNumber | bigint | Complex | Unit | Array | Matrix} y Second value to check\n * @return {boolean | Array | Matrix}\n * Returns true when one of the inputs is defined with a nonzero/nonempty value.\n */\n return typed(name, {\n 'number, number': orNumber,\n 'Complex, Complex': function Complex_Complex(x, y) {\n return x.re !== 0 || x.im !== 0 || y.re !== 0 || y.im !== 0;\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n return !x.isZero() && !x.isNaN() || !y.isZero() && !y.isNaN();\n },\n 'bigint, bigint': orNumber,\n 'Unit, Unit': typed.referToSelf(self => (x, y) => self(x.value || 0, y.value || 0))\n }, matrixAlgorithmSuite({\n SS: matAlgo05xSfSf,\n DS: matAlgo03xDSf,\n Ss: matAlgo12xSfs\n }));\n});", "import { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo07xSSf } from '../../type/matrix/utils/matAlgo07xSSf.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { xorNumber } from '../../plain/number/index.js';\nvar name = 'xor';\nvar dependencies = ['typed', 'matrix', 'DenseMatrix', 'concat', 'SparseMatrix'];\nexport var createXor = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n DenseMatrix,\n concat,\n SparseMatrix\n } = _ref;\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo07xSSf = createMatAlgo07xSSf({\n typed,\n SparseMatrix\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Logical `xor`. Test whether one and only one value is defined with a nonzero/nonempty value.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.xor(x, y)\n *\n * Examples:\n *\n * math.xor(2, 4) // returns false\n *\n * a = [2, 0, 0]\n * b = [2, 7, 0]\n * c = 0\n *\n * math.xor(a, b) // returns [false, true, false]\n * math.xor(a, c) // returns [true, false, false]\n *\n * See also:\n *\n * and, not, or\n *\n * @param {number | BigNumber | bigint | Complex | Unit | Array | Matrix} x First value to check\n * @param {number | BigNumber | bigint | Complex | Unit | Array | Matrix} y Second value to check\n * @return {boolean | Array | Matrix}\n * Returns true when one and only one input is defined with a nonzero/nonempty value.\n */\n return typed(name, {\n 'number, number': xorNumber,\n 'Complex, Complex': function Complex_Complex(x, y) {\n return (x.re !== 0 || x.im !== 0) !== (y.re !== 0 || y.im !== 0);\n },\n 'bigint, bigint': xorNumber,\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n return (!x.isZero() && !x.isNaN()) !== (!y.isZero() && !y.isNaN());\n },\n 'Unit, Unit': typed.referToSelf(self => (x, y) => self(x.value || 0, y.value || 0))\n }, matrixAlgorithmSuite({\n SS: matAlgo07xSSf,\n DS: matAlgo03xDSf,\n Ss: matAlgo12xSfs\n }));\n});", "import { isBigNumber, isMatrix, isNumber } from '../../utils/is.js';\nimport { clone } from '../../utils/object.js';\nimport { arraySize, concat as _concat } from '../../utils/array.js';\nimport { IndexError } from '../../error/IndexError.js';\nimport { DimensionError } from '../../error/DimensionError.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'concat';\nvar dependencies = ['typed', 'matrix', 'isInteger'];\nexport var createConcat = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n isInteger\n } = _ref;\n /**\n * Concatenate two or more matrices.\n *\n * Syntax:\n *\n * math.concat(A, B, C, ...)\n * math.concat(A, B, C, ..., dim)\n *\n * Where:\n *\n * - `dim: number` is a zero-based dimension over which to concatenate the matrices.\n * By default the last dimension of the matrices.\n *\n * Examples:\n *\n * const A = [[1, 2], [5, 6]]\n * const B = [[3, 4], [7, 8]]\n *\n * math.concat(A, B) // returns [[1, 2, 3, 4], [5, 6, 7, 8]]\n * math.concat(A, B, 0) // returns [[1, 2], [5, 6], [3, 4], [7, 8]]\n * math.concat('hello', ' ', 'world') // returns 'hello world'\n *\n * See also:\n *\n * size, squeeze, subset, transpose\n *\n * @param {... Array | Matrix} args Two or more matrices\n * @return {Array | Matrix} Concatenated matrix\n */\n return typed(name, {\n // TODO: change signature to '...Array | Matrix, dim?' when supported\n '...Array | Matrix | number | BigNumber': function Array__Matrix__number__BigNumber(args) {\n var i;\n var len = args.length;\n var dim = -1; // zero-based dimension\n var prevDim;\n var asMatrix = false;\n var matrices = []; // contains multi dimensional arrays\n\n for (i = 0; i < len; i++) {\n var arg = args[i];\n\n // test whether we need to return a Matrix (if not we return an Array)\n if (isMatrix(arg)) {\n asMatrix = true;\n }\n if (isNumber(arg) || isBigNumber(arg)) {\n if (i !== len - 1) {\n throw new Error('Dimension must be specified as last argument');\n }\n\n // last argument contains the dimension on which to concatenate\n prevDim = dim;\n dim = arg.valueOf(); // change BigNumber to number\n\n if (!isInteger(dim)) {\n throw new TypeError('Integer number expected for dimension');\n }\n if (dim < 0 || i > 0 && dim > prevDim) {\n // TODO: would be more clear when throwing a DimensionError here\n throw new IndexError(dim, prevDim + 1);\n }\n } else {\n // this is a matrix or array\n var m = clone(arg).valueOf();\n var size = arraySize(m);\n matrices[i] = m;\n prevDim = dim;\n dim = size.length - 1;\n\n // verify whether each of the matrices has the same number of dimensions\n if (i > 0 && dim !== prevDim) {\n throw new DimensionError(prevDim + 1, dim + 1);\n }\n }\n }\n if (matrices.length === 0) {\n throw new SyntaxError('At least one matrix expected');\n }\n var res = matrices.shift();\n while (matrices.length) {\n res = _concat(res, matrices.shift(), dim);\n }\n return asMatrix ? matrix(res) : res;\n },\n '...string': function string(args) {\n return args.join('');\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { isMatrix } from '../../utils/is.js';\nimport { clone } from '../../utils/object.js';\nimport { validateIndex } from '../../utils/array.js';\nvar name = 'column';\nvar dependencies = ['typed', 'Index', 'matrix', 'range'];\nexport var createColumn = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Index,\n matrix,\n range\n } = _ref;\n /**\n * Return a column from a Matrix.\n *\n * Syntax:\n *\n * math.column(value, index)\n *\n * Example:\n *\n * // get a column\n * const d = [[1, 2], [3, 4]]\n * math.column(d, 1) // returns [[2], [4]]\n *\n * See also:\n *\n * row\n *\n * @param {Array | Matrix } value An array or matrix\n * @param {number} column The index of the column\n * @return {Array | Matrix} The retrieved column\n */\n return typed(name, {\n 'Matrix, number': _column,\n 'Array, number': function Array_number(value, column) {\n return _column(matrix(clone(value)), column).valueOf();\n }\n });\n\n /**\n * Retrieve a column of a matrix\n * @param {Matrix } value A matrix\n * @param {number} column The index of the column\n * @return {Matrix} The retrieved column\n */\n function _column(value, column) {\n // check dimensions\n if (value.size().length !== 2) {\n throw new Error('Only two dimensional matrix is supported');\n }\n validateIndex(column, value.size()[1]);\n var rowRange = range(0, value.size()[0]);\n var index = new Index(rowRange, column);\n var result = value.subset(index);\n return isMatrix(result) ? result : matrix([[result]]);\n }\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'count';\nvar dependencies = ['typed', 'size', 'prod'];\nexport var createCount = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n prod\n } = _ref;\n /**\n * Count the number of elements of a matrix, array or string.\n *\n * Syntax:\n *\n * math.count(x)\n *\n * Examples:\n *\n * math.count('hello world') // returns 11\n * const A = [[1, 2, 3], [4, 5, 6]]\n * math.count(A) // returns 6\n * math.count(math.range(1,6)) // returns 5\n *\n * See also:\n *\n * size\n *\n * @param {string | Array | Matrix} x A matrix or string\n * @return {number} An integer with the elements in `x`.\n */\n return typed(name, {\n string: function string(x) {\n return x.length;\n },\n 'Matrix | Array': function Matrix__Array(x) {\n return prod(size(x));\n }\n });\n});", "import { arraySize, squeeze } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'cross';\nvar dependencies = ['typed', 'matrix', 'subtract', 'multiply'];\nexport var createCross = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n subtract,\n multiply\n } = _ref;\n /**\n * Calculate the cross product for two vectors in three dimensional space.\n * The cross product of `A = [a1, a2, a3]` and `B = [b1, b2, b3]` is defined\n * as:\n *\n * cross(A, B) = [\n * a2 * b3 - a3 * b2,\n * a3 * b1 - a1 * b3,\n * a1 * b2 - a2 * b1\n * ]\n *\n * If one of the input vectors has a dimension greater than 1, the output\n * vector will be a 1x3 (2-dimensional) matrix.\n *\n * Syntax:\n *\n * math.cross(x, y)\n *\n * Examples:\n *\n * math.cross([1, 1, 0], [0, 1, 1]) // Returns [1, -1, 1]\n * math.cross([3, -3, 1], [4, 9, 2]) // Returns [-15, -2, 39]\n * math.cross([2, 3, 4], [5, 6, 7]) // Returns [-3, 6, -3]\n * math.cross([[1, 2, 3]], [[4], [5], [6]]) // Returns [[-3, 6, -3]]\n *\n * See also:\n *\n * dot, multiply\n *\n * @param {Array | Matrix} x First vector\n * @param {Array | Matrix} y Second vector\n * @return {Array | Matrix} Returns the cross product of `x` and `y`\n */\n return typed(name, {\n 'Matrix, Matrix': function Matrix_Matrix(x, y) {\n return matrix(_cross(x.toArray(), y.toArray()));\n },\n 'Matrix, Array': function Matrix_Array(x, y) {\n return matrix(_cross(x.toArray(), y));\n },\n 'Array, Matrix': function Array_Matrix(x, y) {\n return matrix(_cross(x, y.toArray()));\n },\n 'Array, Array': _cross\n });\n\n /**\n * Calculate the cross product for two arrays\n * @param {Array} x First vector\n * @param {Array} y Second vector\n * @returns {Array} Returns the cross product of x and y\n * @private\n */\n function _cross(x, y) {\n var highestDimension = Math.max(arraySize(x).length, arraySize(y).length);\n x = squeeze(x);\n y = squeeze(y);\n var xSize = arraySize(x);\n var ySize = arraySize(y);\n if (xSize.length !== 1 || ySize.length !== 1 || xSize[0] !== 3 || ySize[0] !== 3) {\n throw new RangeError('Vectors with length 3 expected ' + '(Size A = [' + xSize.join(', ') + '], B = [' + ySize.join(', ') + '])');\n }\n var product = [subtract(multiply(x[1], y[2]), multiply(x[2], y[1])), subtract(multiply(x[2], y[0]), multiply(x[0], y[2])), subtract(multiply(x[0], y[1]), multiply(x[1], y[0]))];\n if (highestDimension > 1) {\n return [product];\n } else {\n return product;\n }\n }\n});", "import { isMatrix } from '../../utils/is.js';\nimport { arraySize } from '../../utils/array.js';\nimport { isInteger } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'diag';\nvar dependencies = ['typed', 'matrix', 'DenseMatrix', 'SparseMatrix'];\nexport var createDiag = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n DenseMatrix,\n SparseMatrix\n } = _ref;\n /**\n * Create a diagonal matrix or retrieve the diagonal of a matrix\n *\n * When `x` is a vector, a matrix with vector `x` on the diagonal will be returned.\n * When `x` is a two dimensional matrix, the matrixes `k`th diagonal will be returned as vector.\n * When k is positive, the values are placed on the super diagonal.\n * When k is negative, the values are placed on the sub diagonal.\n *\n * Syntax:\n *\n * math.diag(X)\n * math.diag(X, format)\n * math.diag(X, k)\n * math.diag(X, k, format)\n *\n * Examples:\n *\n * // create a diagonal matrix\n * math.diag([1, 2, 3]) // returns [[1, 0, 0], [0, 2, 0], [0, 0, 3]]\n * math.diag([1, 2, 3], 1) // returns [[0, 1, 0, 0], [0, 0, 2, 0], [0, 0, 0, 3]]\n * math.diag([1, 2, 3], -1) // returns [[0, 0, 0], [1, 0, 0], [0, 2, 0], [0, 0, 3]]\n *\n * // retrieve the diagonal from a matrix\n * const a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]\n * math.diag(a) // returns [1, 5, 9]\n *\n * See also:\n *\n * ones, zeros, identity\n *\n * @param {Matrix | Array} x A two dimensional matrix or a vector\n * @param {number | BigNumber} [k=0] The diagonal where the vector will be filled\n * in or retrieved.\n * @param {string} [format='dense'] The matrix storage format.\n *\n * @returns {Matrix | Array} Diagonal matrix from input vector, or diagonal from input matrix.\n */\n return typed(name, {\n // FIXME: simplify this huge amount of signatures as soon as typed-function supports optional arguments\n\n Array: function Array(x) {\n return _diag(x, 0, arraySize(x), null);\n },\n 'Array, number': function Array_number(x, k) {\n return _diag(x, k, arraySize(x), null);\n },\n 'Array, BigNumber': function Array_BigNumber(x, k) {\n return _diag(x, k.toNumber(), arraySize(x), null);\n },\n 'Array, string': function Array_string(x, format) {\n return _diag(x, 0, arraySize(x), format);\n },\n 'Array, number, string': function Array_number_string(x, k, format) {\n return _diag(x, k, arraySize(x), format);\n },\n 'Array, BigNumber, string': function Array_BigNumber_string(x, k, format) {\n return _diag(x, k.toNumber(), arraySize(x), format);\n },\n Matrix: function Matrix(x) {\n return _diag(x, 0, x.size(), x.storage());\n },\n 'Matrix, number': function Matrix_number(x, k) {\n return _diag(x, k, x.size(), x.storage());\n },\n 'Matrix, BigNumber': function Matrix_BigNumber(x, k) {\n return _diag(x, k.toNumber(), x.size(), x.storage());\n },\n 'Matrix, string': function Matrix_string(x, format) {\n return _diag(x, 0, x.size(), format);\n },\n 'Matrix, number, string': function Matrix_number_string(x, k, format) {\n return _diag(x, k, x.size(), format);\n },\n 'Matrix, BigNumber, string': function Matrix_BigNumber_string(x, k, format) {\n return _diag(x, k.toNumber(), x.size(), format);\n }\n });\n\n /**\n * Creeate diagonal matrix from a vector or vice versa\n * @param {Array | Matrix} x\n * @param {number} k\n * @param {string} format Storage format for matrix. If null,\n * an Array is returned\n * @returns {Array | Matrix}\n * @private\n */\n function _diag(x, k, size, format) {\n if (!isInteger(k)) {\n throw new TypeError('Second parameter in function diag must be an integer');\n }\n var kSuper = k > 0 ? k : 0;\n var kSub = k < 0 ? -k : 0;\n\n // check dimensions\n switch (size.length) {\n case 1:\n return _createDiagonalMatrix(x, k, format, size[0], kSub, kSuper);\n case 2:\n return _getDiagonal(x, k, format, size, kSub, kSuper);\n }\n throw new RangeError('Matrix for function diag must be 2 dimensional');\n }\n function _createDiagonalMatrix(x, k, format, l, kSub, kSuper) {\n // matrix size\n var ms = [l + kSub, l + kSuper];\n if (format && format !== 'sparse' && format !== 'dense') {\n throw new TypeError(\"Unknown matrix type \".concat(format, \"\\\"\"));\n }\n\n // create diagonal matrix\n var m = format === 'sparse' ? SparseMatrix.diagonal(ms, x, k) : DenseMatrix.diagonal(ms, x, k);\n // check we need to return a matrix\n return format !== null ? m : m.valueOf();\n }\n function _getDiagonal(x, k, format, s, kSub, kSuper) {\n // check x is a Matrix\n if (isMatrix(x)) {\n // get diagonal matrix\n var dm = x.diagonal(k);\n // check we need to return a matrix\n if (format !== null) {\n // check we need to change matrix format\n if (format !== dm.storage()) {\n return matrix(dm, format);\n }\n return dm;\n }\n return dm.valueOf();\n }\n // vector size\n var n = Math.min(s[0] - kSub, s[1] - kSuper);\n // diagonal values\n var vector = [];\n // loop diagonal\n for (var i = 0; i < n; i++) {\n vector[i] = x[i + kSub][i + kSuper];\n }\n // check we need to return a matrix\n return format !== null ? matrix(vector) : vector;\n }\n});", "import { optimizeCallback } from '../../utils/optimizeCallback.js';\nimport { filter, filterRegExp } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'filter';\nvar dependencies = ['typed'];\nexport var createFilter = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Filter the items in an array or one dimensional matrix.\n *\n * The callback is invoked with three arguments: the current value,\n * the current index, and the matrix operated upon.\n * Note that because the matrix/array might be\n * multidimensional, the \"index\" argument is always an array of numbers giving\n * the index in each dimension. This is true even for vectors: the \"index\"\n * argument is an array of length 1, rather than simply a number.\n *\n * Syntax:\n *\n * math.filter(x, test)\n *\n * Examples:\n *\n * function isPositive (x) {\n * return x > 0\n * }\n * math.filter([6, -2, -1, 4, 3], isPositive) // returns [6, 4, 3]\n *\n * math.filter([\"23\", \"foo\", \"100\", \"55\", \"bar\"], /[0-9]+/) // returns [\"23\", \"100\", \"55\"]\n *\n * See also:\n *\n * forEach, map, sort\n *\n * @param {Matrix | Array} x A one dimensional matrix or array to filter\n * @param {Function | RegExp} test\n * A function or regular expression to test items.\n * All entries for which `test` returns true are returned.\n * When `test` is a function, it is invoked with three parameters:\n * the value of the element, the index of the element, and the\n * matrix/array being traversed. The function must return a boolean.\n * @return {Matrix | Array} Returns the filtered matrix.\n */\n return typed('filter', {\n 'Array, function': _filterCallback,\n 'Matrix, function': function Matrix_function(x, test) {\n return x.create(_filterCallback(x.valueOf(), test), x.datatype());\n },\n 'Array, RegExp': filterRegExp,\n 'Matrix, RegExp': function Matrix_RegExp(x, test) {\n return x.create(filterRegExp(x.valueOf(), test), x.datatype());\n }\n });\n});\n\n/**\n * Filter values in a callback given a callback function\n * @param {Array} x\n * @param {Function} callback\n * @return {Array} Returns the filtered array\n * @private\n */\nfunction _filterCallback(x, callback) {\n var fastCallback = optimizeCallback(callback, x, 'filter');\n return filter(x, function (value, index, array) {\n // invoke the callback function with the right number of arguments\n return fastCallback(value, [index], array);\n });\n}", "import { flatten as flattenArray } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'flatten';\nvar dependencies = ['typed'];\nexport var createFlatten = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Flatten a multidimensional matrix into a single dimensional matrix.\n * A new matrix is returned, the original matrix is left untouched.\n *\n * Syntax:\n *\n * math.flatten(x)\n *\n * Examples:\n *\n * math.flatten([[1,2], [3,4]]) // returns [1, 2, 3, 4]\n *\n * See also:\n *\n * concat, resize, size, squeeze\n *\n * @param {Matrix | Array} x Matrix to be flattened\n * @return {Matrix | Array} Returns the flattened matrix\n */\n return typed(name, {\n Array: function Array(x) {\n return flattenArray(x);\n },\n Matrix: function Matrix(x) {\n // Return the same matrix type as x (Dense or Sparse Matrix)\n // Return the same data type as x\n return x.create(flattenArray(x.toArray()), x.datatype());\n }\n });\n});", "import { optimizeCallback } from '../../utils/optimizeCallback.js';\nimport { factory } from '../../utils/factory.js';\nimport { recurse } from '../../utils/array.js';\nvar name = 'forEach';\nvar dependencies = ['typed'];\nexport var createForEach = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Iterate over all elements of a matrix/array, and executes the given callback function.\n *\n * The callback is invoked with three arguments: the current value,\n * the current index, and the matrix operated upon.\n * Note that because the matrix/array might be\n * multidimensional, the \"index\" argument is always an array of numbers giving\n * the index in each dimension. This is true even for vectors: the \"index\"\n * argument is an array of length 1, rather than simply a number.\n *\n * Syntax:\n *\n * math.forEach(x, callback)\n *\n * Examples:\n *\n * math.forEach([1, 2, 3], function(value) {\n * console.log(value)\n * })\n * // outputs 1, 2, 3\n *\n * See also:\n *\n * filter, map, sort\n *\n * @param {Matrix | Array} x The matrix to iterate on.\n * @param {Function} callback The callback function is invoked with three\n * parameters: the value of the element, the index\n * of the element, and the Matrix/array being traversed.\n */\n return typed(name, {\n 'Array, function': _forEach,\n 'Matrix, function': function Matrix_function(x, callback) {\n x.forEach(callback);\n }\n });\n});\n\n/**\n * forEach for a multidimensional array\n * @param {Array} array\n * @param {Function} callback\n * @private\n */\nfunction _forEach(array, callback) {\n recurse(array, [], array, optimizeCallback(callback, array, name));\n}", "import { factory } from '../../utils/factory.js';\nimport { getArrayDataType } from '../../utils/array.js';\nimport { typeOf } from '../../utils/is.js';\nvar name = 'getMatrixDataType';\nvar dependencies = ['typed'];\nexport var createGetMatrixDataType = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Find the data type of all elements in a matrix or array,\n * for example 'number' if all items are a number and 'Complex' if all values\n * are complex numbers.\n * If a matrix contains more than one data type, it will return 'mixed'.\n *\n * Syntax:\n *\n * math.getMatrixDataType(x)\n *\n * Examples:\n *\n * const x = [ [1, 2, 3], [4, 5, 6] ]\n * const mixedX = [ [1, true], [2, 3] ]\n * const fractionX = [ [math.fraction(1, 3)], [math.fraction(1, 3)] ]\n * const unitX = [ [math.unit('5cm')], [math.unit('5cm')] ]\n * const bigNumberX = [ [math.bignumber(1)], [math.bignumber(0)] ]\n * const sparse = math.sparse(x)\n * const dense = math.matrix(x)\n * math.getMatrixDataType(x) // returns 'number'\n * math.getMatrixDataType(sparse) // returns 'number'\n * math.getMatrixDataType(dense) // returns 'number'\n * math.getMatrixDataType(mixedX) // returns 'mixed'\n * math.getMatrixDataType(fractionX) // returns 'Fraction'\n * math.getMatrixDataType(unitX) // returns 'Unit'\n * math.getMatrixDataType(bigNumberX) // return 'BigNumber'\n *\n * See also:\n * SparseMatrix, DenseMatrix\n *\n * @param {...Matrix | Array} x The Matrix with values.\n *\n * @return {string} A string representation of the matrix type\n */\n return typed(name, {\n Array: function Array(x) {\n return getArrayDataType(x, typeOf);\n },\n Matrix: function Matrix(x) {\n return x.getDataType();\n }\n });\n});", "import { isBigNumber } from '../../utils/is.js';\nimport { resize } from '../../utils/array.js';\nimport { isInteger } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'identity';\nvar dependencies = ['typed', 'config', 'matrix', 'BigNumber', 'DenseMatrix', 'SparseMatrix'];\nexport var createIdentity = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n BigNumber,\n DenseMatrix,\n SparseMatrix\n } = _ref;\n /**\n * Create a 2-dimensional identity matrix with size m x n or n x n.\n * The matrix has ones on the diagonal and zeros elsewhere.\n *\n * Syntax:\n *\n * math.identity(n)\n * math.identity(n, format)\n * math.identity(m, n)\n * math.identity(m, n, format)\n * math.identity([m, n])\n * math.identity([m, n], format)\n *\n * Examples:\n *\n * math.identity(3) // returns [[1, 0, 0], [0, 1, 0], [0, 0, 1]]\n * math.identity(3, 2) // returns [[1, 0], [0, 1], [0, 0]]\n *\n * const A = [[1, 2, 3], [4, 5, 6]]\n * math.identity(math.size(A)) // returns [[1, 0, 0], [0, 1, 0]]\n *\n * See also:\n *\n * diag, ones, zeros, size, range\n *\n * @param {...number | Matrix | Array} size The size for the matrix\n * @param {string} [format] The Matrix storage format\n *\n * @return {Matrix | Array | number} A matrix with ones on the diagonal.\n */\n return typed(name, {\n '': function _() {\n return config.matrix === 'Matrix' ? matrix([]) : [];\n },\n string: function string(format) {\n return matrix(format);\n },\n 'number | BigNumber': function number__BigNumber(rows) {\n return _identity(rows, rows, config.matrix === 'Matrix' ? 'dense' : undefined);\n },\n 'number | BigNumber, string': function number__BigNumber_string(rows, format) {\n return _identity(rows, rows, format);\n },\n 'number | BigNumber, number | BigNumber': function number__BigNumber_number__BigNumber(rows, cols) {\n return _identity(rows, cols, config.matrix === 'Matrix' ? 'dense' : undefined);\n },\n 'number | BigNumber, number | BigNumber, string': function number__BigNumber_number__BigNumber_string(rows, cols, format) {\n return _identity(rows, cols, format);\n },\n Array: function Array(size) {\n return _identityVector(size);\n },\n 'Array, string': function Array_string(size, format) {\n return _identityVector(size, format);\n },\n Matrix: function Matrix(size) {\n return _identityVector(size.valueOf(), size.storage());\n },\n 'Matrix, string': function Matrix_string(size, format) {\n return _identityVector(size.valueOf(), format);\n }\n });\n function _identityVector(size, format) {\n switch (size.length) {\n case 0:\n return format ? matrix(format) : [];\n case 1:\n return _identity(size[0], size[0], format);\n case 2:\n return _identity(size[0], size[1], format);\n default:\n throw new Error('Vector containing two values expected');\n }\n }\n\n /**\n * Create an identity matrix\n * @param {number | BigNumber} rows\n * @param {number | BigNumber} cols\n * @param {string} [format]\n * @returns {Matrix}\n * @private\n */\n function _identity(rows, cols, format) {\n // BigNumber constructor with the right precision\n var Big = isBigNumber(rows) || isBigNumber(cols) ? BigNumber : null;\n if (isBigNumber(rows)) rows = rows.toNumber();\n if (isBigNumber(cols)) cols = cols.toNumber();\n if (!isInteger(rows) || rows < 1) {\n throw new Error('Parameters in function identity must be positive integers');\n }\n if (!isInteger(cols) || cols < 1) {\n throw new Error('Parameters in function identity must be positive integers');\n }\n var one = Big ? new BigNumber(1) : 1;\n var defaultValue = Big ? new Big(0) : 0;\n var size = [rows, cols];\n\n // check we need to return a matrix\n if (format) {\n // create diagonal matrix (use optimized implementation for storage format)\n if (format === 'sparse') {\n return SparseMatrix.diagonal(size, one, 0, defaultValue);\n }\n if (format === 'dense') {\n return DenseMatrix.diagonal(size, one, 0, defaultValue);\n }\n throw new TypeError(\"Unknown matrix type \\\"\".concat(format, \"\\\"\"));\n }\n\n // create and resize array\n var res = resize([], size, defaultValue);\n // fill in ones on the diagonal\n var minimum = rows < cols ? rows : cols;\n // fill diagonal\n for (var d = 0; d < minimum; d++) {\n res[d][d] = one;\n }\n return res;\n }\n});", "import { arraySize as size } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'kron';\nvar dependencies = ['typed', 'matrix', 'multiplyScalar'];\nexport var createKron = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n multiplyScalar\n } = _ref;\n /**\n * Calculates the Kronecker product of 2 matrices or vectors.\n *\n * NOTE: If a one dimensional vector / matrix is given, it will be\n * wrapped so its two dimensions.\n * See the examples.\n *\n * Syntax:\n *\n * math.kron(x, y)\n *\n * Examples:\n *\n * math.kron([[1, 0], [0, 1]], [[1, 2], [3, 4]])\n * // returns [ [ 1, 2, 0, 0 ], [ 3, 4, 0, 0 ], [ 0, 0, 1, 2 ], [ 0, 0, 3, 4 ] ]\n *\n * math.kron([1,1], [2,3,4])\n * // returns [ [ 2, 3, 4, 2, 3, 4 ] ]\n *\n * See also:\n *\n * multiply, dot, cross\n *\n * @param {Array | Matrix} x First vector\n * @param {Array | Matrix} y Second vector\n * @return {Array | Matrix} Returns the Kronecker product of `x` and `y`\n */\n return typed(name, {\n 'Matrix, Matrix': function Matrix_Matrix(x, y) {\n return matrix(_kron(x.toArray(), y.toArray()));\n },\n 'Matrix, Array': function Matrix_Array(x, y) {\n return matrix(_kron(x.toArray(), y));\n },\n 'Array, Matrix': function Array_Matrix(x, y) {\n return matrix(_kron(x, y.toArray()));\n },\n 'Array, Array': _kron\n });\n\n /**\n * Calculate the Kronecker product of two matrices / vectors\n * @param {Array} a First vector\n * @param {Array} b Second vector\n * @returns {Array} Returns the Kronecker product of x and y\n * @private\n */\n function _kron(a, b) {\n // Deal with the dimensions of the matricies.\n if (size(a).length === 1) {\n // Wrap it in a 2D Matrix\n a = [a];\n }\n if (size(b).length === 1) {\n // Wrap it in a 2D Matrix\n b = [b];\n }\n if (size(a).length > 2 || size(b).length > 2) {\n throw new RangeError('Vectors with dimensions greater then 2 are not supported expected ' + '(Size x = ' + JSON.stringify(a.length) + ', y = ' + JSON.stringify(b.length) + ')');\n }\n var t = [];\n var r = [];\n return a.map(function (a) {\n return b.map(function (b) {\n r = [];\n t.push(r);\n return a.map(function (y) {\n return b.map(function (x) {\n return r.push(multiplyScalar(y, x));\n });\n });\n });\n }) && t;\n }\n});", "import { optimizeCallback } from '../../utils/optimizeCallback.js';\nimport { arraySize, broadcastSizes, broadcastTo, get, recurse } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'map';\nvar dependencies = ['typed'];\nexport var createMap = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Create a new matrix or array with the results of a callback function executed on\n * each entry of a given matrix/array.\n *\n * For each entry of the input,\n *\n * the callback is invoked with 2N + 1 arguments:\n * the N values of the entry, the index at which that entry occurs, and the N full\n * broadcasted matrix/array being traversed where N is the number of matrices being traversed.\n * Note that because the matrix/array might be\n * multidimensional, the \"index\" argument is always an array of numbers giving\n * the index in each dimension. This is true even for vectors: the \"index\"\n * argument is an array of length 1, rather than simply a number.\n *\n * Syntax:\n *\n * math.map(x, callback)\n * math.map(x, y, ..., callback)\n *\n * Examples:\n *\n * math.map([1, 2, 3], function(value) {\n * return value * value\n * }) // returns [1, 4, 9]\n * math.map([1, 2], [3, 4], function(a, b) {\n * return a + b\n * }) // returns [4, 6]\n *\n * // The callback is normally called with three arguments:\n * // callback(value, index, Array)\n * // If you want to call with only one argument, use:\n * math.map([1, 2, 3], x => math.format(x)) // returns ['1', '2', '3']\n * // It can also be called with 2N + 1 arguments: for N arrays\n * // callback(value1, value2, index, BroadcastedArray1, BroadcastedArray2)\n *\n * See also:\n *\n * filter, forEach, sort\n *\n * @param {Matrix | Array} x The input to iterate on.\n * @param {Function} callback\n * The function to call (as described above) on each entry of the input\n * @return {Matrix | array}\n * Transformed map of x; always has the same type and shape as x\n */\n return typed(name, {\n 'Array, function': _mapArray,\n 'Matrix, function': function Matrix_function(x, callback) {\n return x.map(callback);\n },\n 'Array|Matrix, Array|Matrix, ...Array|Matrix|function': (A, B, rest) => _mapMultiple([A, B, ...rest.slice(0, rest.length - 1)], rest[rest.length - 1])\n });\n\n /**\n * Maps over multiple arrays or matrices.\n *\n * @param {Array} Arrays - An array of arrays or matrices to map over.\n * @param {function} multiCallback - The callback function to apply to each element.\n * @throws {Error} If the last argument is not a callback function.\n * @returns {Array|Matrix} A new array or matrix with each element being the result of the callback function.\n *\n * @example\n * _mapMultiple([[1, 2, 3], [4, 5, 6]], (a, b) => a + b); // Returns [5, 7, 9]\n */\n function _mapMultiple(Arrays, multiCallback) {\n if (typeof multiCallback !== 'function') {\n throw new Error('Last argument must be a callback function');\n }\n var firstArrayIsMatrix = Arrays[0].isMatrix;\n var newSize = broadcastSizes(...Arrays.map(M => M.isMatrix ? M.size() : arraySize(M)));\n var _get = firstArrayIsMatrix ? (matrix, idx) => matrix.get(idx) : get;\n var broadcastedArrays = firstArrayIsMatrix ? Arrays.map(M => M.isMatrix ? M.create(broadcastTo(M.toArray(), newSize), M.datatype()) : Arrays[0].create(broadcastTo(M.valueOf(), newSize))) : Arrays.map(M => M.isMatrix ? broadcastTo(M.toArray(), newSize) : broadcastTo(M, newSize));\n var callback;\n if (typed.isTypedFunction(multiCallback)) {\n var firstIndex = newSize.map(() => 0);\n var firstValues = broadcastedArrays.map(array => _get(array, firstIndex));\n var callbackCase = _getTypedCallbackCase(multiCallback, firstValues, firstIndex, broadcastedArrays);\n callback = _getLimitedCallback(callbackCase);\n } else {\n var numberOfArrays = Arrays.length;\n var _callbackCase = _getCallbackCase(multiCallback, numberOfArrays);\n callback = _getLimitedCallback(_callbackCase);\n }\n var broadcastedArraysCallback = (x, idx) => callback([x, ...broadcastedArrays.slice(1).map(Array => _get(Array, idx))], idx);\n if (firstArrayIsMatrix) {\n return broadcastedArrays[0].map(broadcastedArraysCallback);\n } else {\n return _mapArray(broadcastedArrays[0], broadcastedArraysCallback);\n }\n function _getLimitedCallback(callbackCase) {\n switch (callbackCase) {\n case 0:\n return x => multiCallback(...x);\n case 1:\n return (x, idx) => multiCallback(...x, idx);\n case 2:\n return (x, idx) => multiCallback(...x, idx, ...broadcastedArrays);\n }\n }\n function _getCallbackCase(callback, numberOfArrays) {\n if (callback.length > numberOfArrays + 1) {\n return 2;\n }\n if (callback.length === numberOfArrays + 1) {\n return 1;\n }\n return 0;\n }\n function _getTypedCallbackCase(callback, values, idx, arrays) {\n if (typed.resolve(callback, [...values, idx, ...arrays]) !== null) {\n return 2;\n }\n if (typed.resolve(callback, [...values, idx]) !== null) {\n return 1;\n }\n if (typed.resolve(callback, values) !== null) {\n return 0;\n }\n // this should never happen\n return 0;\n }\n }\n /**\n * Map for a multi dimensional array\n * @param {Array} array\n * @param {Function} callback\n * @return {Array}\n * @private\n */\n function _mapArray(array, callback) {\n return recurse(array, [], array, optimizeCallback(callback, array, name));\n }\n});", "import { factory } from '../../utils/factory.js';\nimport { isInteger } from '../../utils/number.js';\nimport { isMatrix } from '../../utils/is.js';\nvar name = 'diff';\nvar dependencies = ['typed', 'matrix', 'subtract', 'number'];\nexport var createDiff = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n subtract,\n number\n } = _ref;\n /**\n * Create a new matrix or array of the difference between elements of the given array\n * The optional dim parameter lets you specify the dimension to evaluate the difference of\n * If no dimension parameter is passed it is assumed as dimension 0\n *\n * Dimension is zero-based in javascript and one-based in the parser and can be a number or bignumber\n * Arrays must be 'rectangular' meaning arrays like [1, 2]\n * If something is passed as a matrix it will be returned as a matrix but other than that all matrices are converted to arrays\n *\n * Syntax:\n *\n * math.diff(arr)\n * math.diff(arr, dim)\n *\n * Examples:\n *\n * const arr = [1, 2, 4, 7, 0]\n * math.diff(arr) // returns [1, 2, 3, -7] (no dimension passed so 0 is assumed)\n * math.diff(math.matrix(arr)) // returns Matrix [1, 2, 3, -7]\n *\n * const arr = [[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [9, 8, 7, 6, 4]]\n * math.diff(arr) // returns [[0, 0, 0, 0, 0], [8, 6, 4, 2, -1]]\n * math.diff(arr, 0) // returns [[0, 0, 0, 0, 0], [8, 6, 4, 2, -1]]\n * math.diff(arr, 1) // returns [[1, 1, 1, 1], [1, 1, 1, 1], [-1, -1, -1, -2]]\n * math.diff(arr, math.bignumber(1)) // returns [[1, 1, 1, 1], [1, 1, 1, 1], [-1, -1, -1, -2]]\n *\n * math.diff(arr, 2) // throws RangeError as arr is 2 dimensional not 3\n * math.diff(arr, -1) // throws RangeError as negative dimensions are not allowed\n *\n * // These will all produce the same result\n * math.diff([[1, 2], [3, 4]])\n * math.diff([math.matrix([1, 2]), math.matrix([3, 4])])\n * math.diff([[1, 2], math.matrix([3, 4])])\n * math.diff([math.matrix([1, 2]), [3, 4]])\n * // They do not produce the same result as math.diff(math.matrix([[1, 2], [3, 4]])) as this returns a matrix\n *\n * See Also:\n *\n * sum\n * subtract\n * partitionSelect\n *\n * @param {Array | Matrix} arr An array or matrix\n * @param {number | BigNumber} dim Dimension\n * @return {Array | Matrix} Difference between array elements in given dimension\n */\n return typed(name, {\n 'Array | Matrix': function Array__Matrix(arr) {\n // No dimension specified => assume dimension 0\n if (isMatrix(arr)) {\n return matrix(_diff(arr.toArray()));\n } else {\n return _diff(arr);\n }\n },\n 'Array | Matrix, number': function Array__Matrix_number(arr, dim) {\n if (!isInteger(dim)) throw new RangeError('Dimension must be a whole number');\n if (isMatrix(arr)) {\n return matrix(_recursive(arr.toArray(), dim));\n } else {\n return _recursive(arr, dim);\n }\n },\n 'Array, BigNumber': typed.referTo('Array,number', selfAn => (arr, dim) => selfAn(arr, number(dim))),\n 'Matrix, BigNumber': typed.referTo('Matrix,number', selfMn => (arr, dim) => selfMn(arr, number(dim)))\n });\n\n /**\n * Recursively find the correct dimension in the array/matrix\n * Then Apply _diff to that dimension\n *\n * @param {Array} arr The array\n * @param {number} dim Dimension\n * @return {Array} resulting array\n */\n function _recursive(arr, dim) {\n if (isMatrix(arr)) {\n arr = arr.toArray(); // Makes sure arrays like [ matrix([0, 1]), matrix([1, 0]) ] are processed properly\n }\n if (!Array.isArray(arr)) {\n throw RangeError('Array/Matrix does not have that many dimensions');\n }\n if (dim > 0) {\n var result = [];\n arr.forEach(element => {\n result.push(_recursive(element, dim - 1));\n });\n return result;\n } else if (dim === 0) {\n return _diff(arr);\n } else {\n throw RangeError('Cannot have negative dimension');\n }\n }\n\n /**\n * Difference between elements in the array\n *\n * @param {Array} arr An array\n * @return {Array} resulting array\n */\n function _diff(arr) {\n var result = [];\n var size = arr.length;\n for (var i = 1; i < size; i++) {\n result.push(_ElementDiff(arr[i - 1], arr[i]));\n }\n return result;\n }\n\n /**\n * Difference between 2 objects\n *\n * @param {Object} obj1 First object\n * @param {Object} obj2 Second object\n * @return {Array} resulting array\n */\n function _ElementDiff(obj1, obj2) {\n // Convert matrices to arrays\n if (isMatrix(obj1)) obj1 = obj1.toArray();\n if (isMatrix(obj2)) obj2 = obj2.toArray();\n var obj1IsArray = Array.isArray(obj1);\n var obj2IsArray = Array.isArray(obj2);\n if (obj1IsArray && obj2IsArray) {\n return _ArrayDiff(obj1, obj2);\n }\n if (!obj1IsArray && !obj2IsArray) {\n return subtract(obj2, obj1); // Difference is (second - first) NOT (first - second)\n }\n throw TypeError('Cannot calculate difference between 1 array and 1 non-array');\n }\n\n /**\n * Difference of elements in 2 arrays\n *\n * @param {Array} arr1 Array 1\n * @param {Array} arr2 Array 2\n * @return {Array} resulting array\n */\n function _ArrayDiff(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n throw RangeError('Not all sub-arrays have the same length');\n }\n var result = [];\n var size = arr1.length;\n for (var i = 0; i < size; i++) {\n result.push(_ElementDiff(arr1[i], arr2[i]));\n }\n return result;\n }\n});", "import { isBigNumber } from '../../utils/is.js';\nimport { isInteger } from '../../utils/number.js';\nimport { resize } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'ones';\nvar dependencies = ['typed', 'config', 'matrix', 'BigNumber'];\nexport var createOnes = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n BigNumber\n } = _ref;\n /**\n * Create a matrix filled with ones. The created matrix can have one or\n * multiple dimensions.\n *\n * Syntax:\n *\n * math.ones(m)\n * math.ones(m, format)\n * math.ones(m, n)\n * math.ones(m, n, format)\n * math.ones([m, n])\n * math.ones([m, n], format)\n * math.ones([m, n, p, ...])\n * math.ones([m, n, p, ...], format)\n *\n * Examples:\n *\n * math.ones() // returns []\n * math.ones(3) // returns [1, 1, 1]\n * math.ones(3, 2) // returns [[1, 1], [1, 1], [1, 1]]\n * math.ones(3, 2, 'dense') // returns Dense Matrix [[1, 1], [1, 1], [1, 1]]\n *\n * const A = [[1, 2, 3], [4, 5, 6]]\n * math.ones(math.size(A)) // returns [[1, 1, 1], [1, 1, 1]]\n *\n * See also:\n *\n * zeros, identity, size, range\n *\n * @param {...(number|BigNumber) | Array} size The size of each dimension of the matrix\n * @param {string} [format] The Matrix storage format\n *\n * @return {Array | Matrix | number} A matrix filled with ones\n */\n return typed('ones', {\n '': function _() {\n return config.matrix === 'Array' ? _ones([]) : _ones([], 'default');\n },\n // math.ones(m, n, p, ..., format)\n // TODO: more accurate signature '...number | BigNumber, string' as soon as typed-function supports this\n '...number | BigNumber | string': function number__BigNumber__string(size) {\n var last = size[size.length - 1];\n if (typeof last === 'string') {\n var format = size.pop();\n return _ones(size, format);\n } else if (config.matrix === 'Array') {\n return _ones(size);\n } else {\n return _ones(size, 'default');\n }\n },\n Array: _ones,\n Matrix: function Matrix(size) {\n var format = size.storage();\n return _ones(size.valueOf(), format);\n },\n 'Array | Matrix, string': function Array__Matrix_string(size, format) {\n return _ones(size.valueOf(), format);\n }\n });\n\n /**\n * Create an Array or Matrix with ones\n * @param {Array} size\n * @param {string} [format='default']\n * @return {Array | Matrix}\n * @private\n */\n function _ones(size, format) {\n var hasBigNumbers = _normalize(size);\n var defaultValue = hasBigNumbers ? new BigNumber(1) : 1;\n _validate(size);\n if (format) {\n // return a matrix\n var m = matrix(format);\n if (size.length > 0) {\n return m.resize(size, defaultValue);\n }\n return m;\n } else {\n // return an Array\n var arr = [];\n if (size.length > 0) {\n return resize(arr, size, defaultValue);\n }\n return arr;\n }\n }\n\n // replace BigNumbers with numbers, returns true if size contained BigNumbers\n function _normalize(size) {\n var hasBigNumbers = false;\n size.forEach(function (value, index, arr) {\n if (isBigNumber(value)) {\n hasBigNumbers = true;\n arr[index] = value.toNumber();\n }\n });\n return hasBigNumbers;\n }\n\n // validate arguments\n function _validate(size) {\n size.forEach(function (value) {\n if (typeof value !== 'number' || !isInteger(value) || value < 0) {\n throw new Error('Parameters in function ones must be positive integers');\n }\n });\n }\n});", "export function noBignumber() {\n throw new Error('No \"bignumber\" implementation available');\n}\nexport function noFraction() {\n throw new Error('No \"fraction\" implementation available');\n}\nexport function noMatrix() {\n throw new Error('No \"matrix\" implementation available');\n}\nexport function noIndex() {\n throw new Error('No \"index\" implementation available');\n}\nexport function noSubset() {\n throw new Error('No \"matrix\" implementation available');\n}", "import { factory } from '../../utils/factory.js';\nimport { noBignumber, noMatrix } from '../../utils/noop.js';\nvar name = 'range';\nvar dependencies = ['typed', 'config', '?matrix', '?bignumber', 'smaller', 'smallerEq', 'larger', 'largerEq', 'add', 'isPositive'];\nexport var createRange = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n bignumber,\n smaller,\n smallerEq,\n larger,\n largerEq,\n add,\n isPositive\n } = _ref;\n /**\n * Create an array from a range.\n * By default, the range end is excluded. This can be customized by providing\n * an extra parameter `includeEnd`.\n *\n * Syntax:\n *\n * math.range(str [, includeEnd]) // Create a range from a string,\n * // where the string contains the\n * // start, optional step, and end,\n * // separated by a colon.\n * math.range(start, end [, includeEnd]) // Create a range with start and\n * // end and a step size of 1.\n * math.range(start, end, step [, includeEnd]) // Create a range with start, step,\n * // and end.\n *\n * Where:\n *\n * - `str: string`\n * A string 'start:end' or 'start:step:end'\n * - `start: {number | BigNumber | Unit}`\n * Start of the range\n * - `end: number | BigNumber | Unit`\n * End of the range, excluded by default, included when parameter includeEnd=true\n * - `step: number | BigNumber | Unit`\n * Step size. Default value is 1.\n * - `includeEnd: boolean`\n * Option to specify whether to include the end or not. False by default.\n *\n * Examples:\n *\n * math.range(2, 6) // [2, 3, 4, 5]\n * math.range(2, -3, -1) // [2, 1, 0, -1, -2]\n * math.range('2:1:6') // [2, 3, 4, 5]\n * math.range(2, 6, true) // [2, 3, 4, 5, 6]\n * math.range(math.unit(2, 'm'), math.unit(-3, 'm'), math.unit(-1, 'm')) // [2 m, 1 m, 0 m , -1 m, -2 m]\n *\n * See also:\n *\n * ones, zeros, size, subset\n *\n * @param {*} args Parameters describing the ranges `start`, `end`, and optional `step`.\n * @return {Array | Matrix} range\n */\n return typed(name, {\n // TODO: simplify signatures when typed-function supports default values and optional arguments\n\n // TODO: a number or boolean should not be converted to string here\n string: _strRange,\n 'string, boolean': _strRange,\n 'number, number': function number_number(start, end) {\n return _out(_range(start, end, 1, false));\n },\n 'number, number, number': function number_number_number(start, end, step) {\n return _out(_range(start, end, step, false));\n },\n 'number, number, boolean': function number_number_boolean(start, end, includeEnd) {\n return _out(_range(start, end, 1, includeEnd));\n },\n 'number, number, number, boolean': function number_number_number_boolean(start, end, step, includeEnd) {\n return _out(_range(start, end, step, includeEnd));\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(start, end) {\n var BigNumber = start.constructor;\n return _out(_range(start, end, new BigNumber(1), false));\n },\n 'BigNumber, BigNumber, BigNumber': function BigNumber_BigNumber_BigNumber(start, end, step) {\n return _out(_range(start, end, step, false));\n },\n 'BigNumber, BigNumber, boolean': function BigNumber_BigNumber_boolean(start, end, includeEnd) {\n var BigNumber = start.constructor;\n return _out(_range(start, end, new BigNumber(1), includeEnd));\n },\n 'BigNumber, BigNumber, BigNumber, boolean': function BigNumber_BigNumber_BigNumber_boolean(start, end, step, includeEnd) {\n return _out(_range(start, end, step, includeEnd));\n },\n 'Unit, Unit, Unit': function Unit_Unit_Unit(start, end, step) {\n return _out(_range(start, end, step, false));\n },\n 'Unit, Unit, Unit, boolean': function Unit_Unit_Unit_boolean(start, end, step, includeEnd) {\n return _out(_range(start, end, step, includeEnd));\n }\n });\n function _out(arr) {\n if (config.matrix === 'Matrix') {\n return matrix ? matrix(arr) : noMatrix();\n }\n return arr;\n }\n function _strRange(str, includeEnd) {\n var r = _parse(str);\n if (!r) {\n throw new SyntaxError('String \"' + str + '\" is no valid range');\n }\n if (config.number === 'BigNumber') {\n if (bignumber === undefined) {\n noBignumber();\n }\n return _out(_range(bignumber(r.start), bignumber(r.end), bignumber(r.step)), includeEnd);\n } else {\n return _out(_range(r.start, r.end, r.step, includeEnd));\n }\n }\n\n /**\n * Create a range with numbers or BigNumbers\n * @param {number | BigNumber | Unit} start\n * @param {number | BigNumber | Unit} end\n * @param {number | BigNumber | Unit} step\n * @param {boolean} includeEnd\n * @returns {Array} range\n * @private\n */\n function _range(start, end, step, includeEnd) {\n var array = [];\n var ongoing = isPositive(step) ? includeEnd ? smallerEq : smaller : includeEnd ? largerEq : larger;\n var x = start;\n while (ongoing(x, end)) {\n array.push(x);\n x = add(x, step);\n }\n return array;\n }\n\n /**\n * Parse a string into a range,\n * The string contains the start, optional step, and end, separated by a colon.\n * If the string does not contain a valid range, null is returned.\n * For example str='0:2:11'.\n * @param {string} str\n * @return {{start: number, end: number, step: number} | null} range Object containing properties start, end, step\n * @private\n */\n function _parse(str) {\n var args = str.split(':');\n\n // number\n var nums = args.map(function (arg) {\n // use Number and not parseFloat as Number returns NaN on invalid garbage in the string\n return Number(arg);\n });\n var invalid = nums.some(function (num) {\n return isNaN(num);\n });\n if (invalid) {\n return null;\n }\n switch (nums.length) {\n case 2:\n return {\n start: nums[0],\n end: nums[1],\n step: 1\n };\n case 3:\n return {\n start: nums[0],\n end: nums[2],\n step: nums[1]\n };\n default:\n return null;\n }\n }\n});", "import { reshape as arrayReshape } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'reshape';\nvar dependencies = ['typed', 'isInteger', 'matrix'];\nexport var createReshape = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n isInteger\n } = _ref;\n /**\n * Reshape a multi dimensional array to fit the specified dimensions\n *\n * Syntax:\n *\n * math.reshape(x, sizes)\n *\n * Examples:\n *\n * math.reshape([1, 2, 3, 4, 5, 6], [2, 3])\n * // returns Array [[1, 2, 3], [4, 5, 6]]\n *\n * math.reshape([[1, 2], [3, 4]], [1, 4])\n * // returns Array [[1, 2, 3, 4]]\n *\n * math.reshape([[1, 2], [3, 4]], [4])\n * // returns Array [1, 2, 3, 4]\n *\n * const x = math.matrix([1, 2, 3, 4, 5, 6, 7, 8])\n * math.reshape(x, [2, 2, 2])\n * // returns Matrix [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]\n *\n * math.reshape([1, 2, 3, 4], [-1, 2])\n * // returns Matrix [[1, 2], [3, 4]]\n *\n * See also:\n *\n * size, squeeze, resize\n *\n * @param {Array | Matrix | *} x Matrix to be reshaped\n * @param {number[]} sizes One dimensional array with integral sizes for\n * each dimension. One -1 is allowed as wildcard,\n * which calculates this dimension automatically.\n *\n * @return {* | Array | Matrix} A reshaped clone of matrix `x`\n *\n * @throws {TypeError} If `sizes` does not contain solely integers\n * @throws {DimensionError} If the product of the new dimension sizes does\n * not equal that of the old ones\n */\n return typed(name, {\n 'Matrix, Array': function Matrix_Array(x, sizes) {\n return x.reshape(sizes, true);\n },\n 'Array, Array': function Array_Array(x, sizes) {\n sizes.forEach(function (size) {\n if (!isInteger(size)) {\n throw new TypeError('Invalid size for dimension: ' + size);\n }\n });\n return arrayReshape(x, sizes);\n }\n });\n});", "import { isBigNumber, isMatrix } from '../../utils/is.js';\nimport { DimensionError } from '../../error/DimensionError.js';\nimport { ArgumentsError } from '../../error/ArgumentsError.js';\nimport { isInteger } from '../../utils/number.js';\nimport { format } from '../../utils/string.js';\nimport { clone } from '../../utils/object.js';\nimport { resize as arrayResize } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'resize';\nvar dependencies = ['config', 'matrix'];\nexport var createResize = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n config,\n matrix\n } = _ref;\n /**\n * Resize a matrix\n *\n * Syntax:\n *\n * math.resize(x, size)\n * math.resize(x, size, defaultValue)\n *\n * Examples:\n *\n * math.resize([1, 2, 3, 4, 5], [3]) // returns Array [1, 2, 3]\n * math.resize([1, 2, 3], [5], 0) // returns Array [1, 2, 3, 0, 0]\n * math.resize(2, [2, 3], 0) // returns Matrix [[2, 0, 0], [0, 0, 0]]\n * math.resize(\"hello\", [8], \"!\") // returns string 'hello!!!'\n *\n * See also:\n *\n * size, squeeze, subset, reshape\n *\n * @param {Array | Matrix | *} x Matrix to be resized\n * @param {Array | Matrix} size One dimensional array with numbers\n * @param {number | string} [defaultValue=0] Zero by default, except in\n * case of a string, in that case\n * defaultValue = ' '\n * @return {* | Array | Matrix} A resized clone of matrix `x`\n */\n // TODO: rework resize to a typed-function\n return function resize(x, size, defaultValue) {\n if (arguments.length !== 2 && arguments.length !== 3) {\n throw new ArgumentsError('resize', arguments.length, 2, 3);\n }\n if (isMatrix(size)) {\n size = size.valueOf(); // get Array\n }\n if (isBigNumber(size[0])) {\n // convert bignumbers to numbers\n size = size.map(function (value) {\n return !isBigNumber(value) ? value : value.toNumber();\n });\n }\n\n // check x is a Matrix\n if (isMatrix(x)) {\n // use optimized matrix implementation, return copy\n return x.resize(size, defaultValue, true);\n }\n if (typeof x === 'string') {\n // resize string\n return _resizeString(x, size, defaultValue);\n }\n\n // check result should be a matrix\n var asMatrix = Array.isArray(x) ? false : config.matrix !== 'Array';\n if (size.length === 0) {\n // output a scalar\n while (Array.isArray(x)) {\n x = x[0];\n }\n return clone(x);\n } else {\n // output an array/matrix\n if (!Array.isArray(x)) {\n x = [x];\n }\n x = clone(x);\n var res = arrayResize(x, size, defaultValue);\n return asMatrix ? matrix(res) : res;\n }\n };\n\n /**\n * Resize a string\n * @param {string} str\n * @param {number[]} size\n * @param {string} [defaultChar=' ']\n * @private\n */\n function _resizeString(str, size, defaultChar) {\n if (defaultChar !== undefined) {\n if (typeof defaultChar !== 'string' || defaultChar.length !== 1) {\n throw new TypeError('Single character expected as defaultValue');\n }\n } else {\n defaultChar = ' ';\n }\n if (size.length !== 1) {\n throw new DimensionError(size.length, 1);\n }\n var len = size[0];\n if (typeof len !== 'number' || !isInteger(len)) {\n throw new TypeError('Invalid size, must contain positive integers ' + '(size: ' + format(size) + ')');\n }\n if (str.length > len) {\n return str.substring(0, len);\n } else if (str.length < len) {\n var res = str;\n for (var i = 0, ii = len - str.length; i < ii; i++) {\n res += defaultChar;\n }\n return res;\n } else {\n return str;\n }\n }\n});", "import { factory } from '../../utils/factory.js';\nimport { arraySize } from '../../utils/array.js';\nvar name = 'rotate';\nvar dependencies = ['typed', 'multiply', 'rotationMatrix'];\nexport var createRotate = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n multiply,\n rotationMatrix\n } = _ref;\n /**\n * Rotate a vector of size 1x2 counter-clockwise by a given angle\n * Rotate a vector of size 1x3 counter-clockwise by a given angle around the given axis\n *\n * Syntax:\n *\n * math.rotate(w, theta)\n * math.rotate(w, theta, v)\n *\n * Examples:\n *\n * math.rotate([11, 12], math.pi / 2) // returns [-12, 11]\n * math.rotate(matrix([11, 12]), math.pi / 2) // returns [-12, 11]\n *\n * math.rotate([1, 0, 0], unit('90deg'), [0, 0, 1]) // returns [0, 1, 0]\n * math.rotate(matrix([1, 0, 0]), unit('90deg'), [0, 0, 1]) // returns Matrix [0, 1, 0]\n *\n * math.rotate([1, 0], math.complex(1 + i)) // returns [cos(1 + i) - sin(1 + i), sin(1 + i) + cos(1 + i)]\n *\n * See also:\n *\n * matrix, rotationMatrix\n *\n * @param {Array | Matrix} w Vector to rotate\n * @param {number | BigNumber | Complex | Unit} theta Rotation angle\n * @param {Array | Matrix} [v] Rotation axis\n * @return {Array | Matrix} Multiplication of the rotation matrix and w\n */\n return typed(name, {\n 'Array , number | BigNumber | Complex | Unit': function Array__number__BigNumber__Complex__Unit(w, theta) {\n _validateSize(w, 2);\n var matrixRes = multiply(rotationMatrix(theta), w);\n return matrixRes.toArray();\n },\n 'Matrix , number | BigNumber | Complex | Unit': function Matrix__number__BigNumber__Complex__Unit(w, theta) {\n _validateSize(w, 2);\n return multiply(rotationMatrix(theta), w);\n },\n 'Array, number | BigNumber | Complex | Unit, Array | Matrix': function Array_number__BigNumber__Complex__Unit_Array__Matrix(w, theta, v) {\n _validateSize(w, 3);\n var matrixRes = multiply(rotationMatrix(theta, v), w);\n return matrixRes;\n },\n 'Matrix, number | BigNumber | Complex | Unit, Array | Matrix': function Matrix_number__BigNumber__Complex__Unit_Array__Matrix(w, theta, v) {\n _validateSize(w, 3);\n return multiply(rotationMatrix(theta, v), w);\n }\n });\n function _validateSize(v, expectedSize) {\n var actualSize = Array.isArray(v) ? arraySize(v) : v.size();\n if (actualSize.length > 2) {\n throw new RangeError(\"Vector must be of dimensions 1x\".concat(expectedSize));\n }\n if (actualSize.length === 2 && actualSize[1] !== 1) {\n throw new RangeError(\"Vector must be of dimensions 1x\".concat(expectedSize));\n }\n if (actualSize[0] !== expectedSize) {\n throw new RangeError(\"Vector must be of dimensions 1x\".concat(expectedSize));\n }\n }\n});", "import { isBigNumber } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'rotationMatrix';\nvar dependencies = ['typed', 'config', 'multiplyScalar', 'addScalar', 'unaryMinus', 'norm', 'matrix', 'BigNumber', 'DenseMatrix', 'SparseMatrix', 'cos', 'sin'];\nexport var createRotationMatrix = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n multiplyScalar,\n addScalar,\n unaryMinus,\n norm,\n BigNumber,\n matrix,\n DenseMatrix,\n SparseMatrix,\n cos,\n sin\n } = _ref;\n /**\n * Create a 2-dimensional counter-clockwise rotation matrix (2x2) for a given angle (expressed in radians).\n * Create a 2-dimensional counter-clockwise rotation matrix (3x3) by a given angle (expressed in radians) around a given axis (1x3).\n *\n * Syntax:\n *\n * math.rotationMatrix(theta)\n * math.rotationMatrix(theta, format)\n * math.rotationMatrix(theta, [v])\n * math.rotationMatrix(theta, [v], format)\n *\n * Examples:\n *\n * math.rotationMatrix(math.pi / 2) // returns [[0, -1], [1, 0]]\n * math.rotationMatrix(math.bignumber(1)) // returns [[bignumber(cos(1)), bignumber(-sin(1))], [bignumber(sin(1)), bignumber(cos(1))]]\n * math.rotationMatrix(math.complex(1 + i)) // returns [[cos(1 + i), -sin(1 + i)], [sin(1 + i), cos(1 + i)]]\n * math.rotationMatrix(math.unit('1rad')) // returns [[cos(1), -sin(1)], [sin(1), cos(1)]]\n *\n * math.rotationMatrix(math.pi / 2, [0, 1, 0]) // returns [[0, 0, 1], [0, 1, 0], [-1, 0, 0]]\n * math.rotationMatrix(math.pi / 2, matrix([0, 1, 0])) // returns matrix([[0, 0, 1], [0, 1, 0], [-1, 0, 0]])\n *\n *\n * See also:\n *\n * matrix, cos, sin\n *\n *\n * @param {number | BigNumber | Complex | Unit} theta Rotation angle\n * @param {Array | Matrix} [v] Rotation axis\n * @param {string} [format] Result Matrix storage format\n * @return {Array | Matrix} Rotation matrix\n */\n\n return typed(name, {\n '': function _() {\n return config.matrix === 'Matrix' ? matrix([]) : [];\n },\n string: function string(format) {\n return matrix(format);\n },\n 'number | BigNumber | Complex | Unit': function number__BigNumber__Complex__Unit(theta) {\n return _rotationMatrix2x2(theta, config.matrix === 'Matrix' ? 'dense' : undefined);\n },\n 'number | BigNumber | Complex | Unit, string': function number__BigNumber__Complex__Unit_string(theta, format) {\n return _rotationMatrix2x2(theta, format);\n },\n 'number | BigNumber | Complex | Unit, Array': function number__BigNumber__Complex__Unit_Array(theta, v) {\n var matrixV = matrix(v);\n _validateVector(matrixV);\n return _rotationMatrix3x3(theta, matrixV, undefined);\n },\n 'number | BigNumber | Complex | Unit, Matrix': function number__BigNumber__Complex__Unit_Matrix(theta, v) {\n _validateVector(v);\n var storageType = v.storage() || (config.matrix === 'Matrix' ? 'dense' : undefined);\n return _rotationMatrix3x3(theta, v, storageType);\n },\n 'number | BigNumber | Complex | Unit, Array, string': function number__BigNumber__Complex__Unit_Array_string(theta, v, format) {\n var matrixV = matrix(v);\n _validateVector(matrixV);\n return _rotationMatrix3x3(theta, matrixV, format);\n },\n 'number | BigNumber | Complex | Unit, Matrix, string': function number__BigNumber__Complex__Unit_Matrix_string(theta, v, format) {\n _validateVector(v);\n return _rotationMatrix3x3(theta, v, format);\n }\n });\n\n /**\n * Returns 2x2 matrix of 2D rotation of angle theta\n *\n * @param {number | BigNumber | Complex | Unit} theta The rotation angle\n * @param {string} format The result Matrix storage format\n * @returns {Matrix}\n * @private\n */\n function _rotationMatrix2x2(theta, format) {\n var Big = isBigNumber(theta);\n var minusOne = Big ? new BigNumber(-1) : -1;\n var cosTheta = cos(theta);\n var sinTheta = sin(theta);\n var data = [[cosTheta, multiplyScalar(minusOne, sinTheta)], [sinTheta, cosTheta]];\n return _convertToFormat(data, format);\n }\n function _validateVector(v) {\n var size = v.size();\n if (size.length < 1 || size[0] !== 3) {\n throw new RangeError('Vector must be of dimensions 1x3');\n }\n }\n function _mul(array) {\n return array.reduce((p, curr) => multiplyScalar(p, curr));\n }\n function _convertToFormat(data, format) {\n if (format) {\n if (format === 'sparse') {\n return new SparseMatrix(data);\n }\n if (format === 'dense') {\n return new DenseMatrix(data);\n }\n throw new TypeError(\"Unknown matrix type \\\"\".concat(format, \"\\\"\"));\n }\n return data;\n }\n\n /**\n * Returns a 3x3 matrix of rotation of angle theta around vector v\n *\n * @param {number | BigNumber | Complex | Unit} theta The rotation angle\n * @param {Matrix} v The rotation axis vector\n * @param {string} format The storage format of the resulting matrix\n * @returns {Matrix}\n * @private\n */\n function _rotationMatrix3x3(theta, v, format) {\n var normV = norm(v);\n if (normV === 0) {\n throw new RangeError('Rotation around zero vector');\n }\n var Big = isBigNumber(theta) ? BigNumber : null;\n var one = Big ? new Big(1) : 1;\n var minusOne = Big ? new Big(-1) : -1;\n var vx = Big ? new Big(v.get([0]) / normV) : v.get([0]) / normV;\n var vy = Big ? new Big(v.get([1]) / normV) : v.get([1]) / normV;\n var vz = Big ? new Big(v.get([2]) / normV) : v.get([2]) / normV;\n var c = cos(theta);\n var oneMinusC = addScalar(one, unaryMinus(c));\n var s = sin(theta);\n var r11 = addScalar(c, _mul([vx, vx, oneMinusC]));\n var r12 = addScalar(_mul([vx, vy, oneMinusC]), _mul([minusOne, vz, s]));\n var r13 = addScalar(_mul([vx, vz, oneMinusC]), _mul([vy, s]));\n var r21 = addScalar(_mul([vx, vy, oneMinusC]), _mul([vz, s]));\n var r22 = addScalar(c, _mul([vy, vy, oneMinusC]));\n var r23 = addScalar(_mul([vy, vz, oneMinusC]), _mul([minusOne, vx, s]));\n var r31 = addScalar(_mul([vx, vz, oneMinusC]), _mul([minusOne, vy, s]));\n var r32 = addScalar(_mul([vy, vz, oneMinusC]), _mul([vx, s]));\n var r33 = addScalar(c, _mul([vz, vz, oneMinusC]));\n var data = [[r11, r12, r13], [r21, r22, r23], [r31, r32, r33]];\n return _convertToFormat(data, format);\n }\n});", "import { factory } from '../../utils/factory.js';\nimport { isMatrix } from '../../utils/is.js';\nimport { clone } from '../../utils/object.js';\nimport { validateIndex } from '../../utils/array.js';\nvar name = 'row';\nvar dependencies = ['typed', 'Index', 'matrix', 'range'];\nexport var createRow = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Index,\n matrix,\n range\n } = _ref;\n /**\n * Return a row from a Matrix.\n *\n * Syntax:\n *\n * math.row(value, index)\n *\n * Example:\n *\n * // get a row\n * const d = [[1, 2], [3, 4]]\n * math.row(d, 1) // returns [[3, 4]]\n *\n * See also:\n *\n * column\n *\n * @param {Array | Matrix } value An array or matrix\n * @param {number} row The index of the row\n * @return {Array | Matrix} The retrieved row\n */\n return typed(name, {\n 'Matrix, number': _row,\n 'Array, number': function Array_number(value, row) {\n return _row(matrix(clone(value)), row).valueOf();\n }\n });\n\n /**\n * Retrieve a row of a matrix\n * @param {Matrix } value A matrix\n * @param {number} row The index of the row\n * @return {Matrix} The retrieved row\n */\n function _row(value, row) {\n // check dimensions\n if (value.size().length !== 2) {\n throw new Error('Only two dimensional matrix is supported');\n }\n validateIndex(row, value.size()[0]);\n var columnRange = range(0, value.size()[1]);\n var index = new Index(row, columnRange);\n var result = value.subset(index);\n return isMatrix(result) ? result : matrix([[result]]);\n }\n});", "import { arraySize } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { noMatrix } from '../../utils/noop.js';\nvar name = 'size';\nvar dependencies = ['typed', 'config', '?matrix'];\nexport var createSize = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix\n } = _ref;\n /**\n * Calculate the size of a matrix or scalar.\n *\n * Syntax:\n *\n * math.size(x)\n *\n * Examples:\n *\n * math.size(2.3) // returns []\n * math.size('hello world') // returns [11]\n *\n * const A = [[1, 2, 3], [4, 5, 6]]\n * math.size(A) // returns [2, 3]\n * math.size(math.range(1,6).toArray()) // returns [5]\n *\n * See also:\n *\n * count, resize, squeeze, subset\n *\n * @param {boolean | number | Complex | Unit | string | Array | Matrix} x A matrix\n * @return {Array | Matrix} A vector with size of `x`.\n */\n return typed(name, {\n Matrix: function Matrix(x) {\n return x.create(x.size(), 'number');\n },\n Array: arraySize,\n string: function string(x) {\n return config.matrix === 'Array' ? [x.length] : matrix([x.length], 'dense', 'number');\n },\n 'number | Complex | BigNumber | Unit | boolean | null': function number__Complex__BigNumber__Unit__boolean__null(x) {\n // scalar\n return config.matrix === 'Array' ? [] : matrix ? matrix([], 'dense', 'number') : noMatrix();\n }\n });\n});", "import { clone } from '../../utils/object.js';\nimport { squeeze as arraySqueeze } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'squeeze';\nvar dependencies = ['typed'];\nexport var createSqueeze = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Squeeze a matrix, remove inner and outer singleton dimensions from a matrix.\n *\n * Syntax:\n *\n * math.squeeze(x)\n *\n * Examples:\n *\n * math.squeeze([3]) // returns 3\n * math.squeeze([[3]]) // returns 3\n *\n * const A = math.zeros(3, 1) // returns [[0], [0], [0]] (size 3x1)\n * math.squeeze(A) // returns [0, 0, 0] (size 3)\n *\n * const B = math.zeros(1, 3) // returns [[0, 0, 0]] (size 1x3)\n * math.squeeze(B) // returns [0, 0, 0] (size 3)\n *\n * // only inner and outer dimensions are removed\n * const C = math.zeros(2, 1, 3) // returns [[[0, 0, 0]], [[0, 0, 0]]] (size 2x1x3)\n * math.squeeze(C) // returns [[[0, 0, 0]], [[0, 0, 0]]] (size 2x1x3)\n *\n * See also:\n *\n * subset\n *\n * @param {Matrix | Array} x Matrix to be squeezed\n * @return {Matrix | Array} Squeezed matrix\n */\n return typed(name, {\n Array: function Array(x) {\n return arraySqueeze(clone(x));\n },\n Matrix: function Matrix(x) {\n var res = arraySqueeze(x.toArray());\n // FIXME: return the same type of matrix as the input\n return Array.isArray(res) ? x.create(res, x.datatype()) : res;\n },\n any: function any(x) {\n // scalar\n return clone(x);\n }\n });\n});", "import { isIndex } from '../../utils/is.js';\nimport { clone } from '../../utils/object.js';\nimport { isEmptyIndex, validateIndex, validateIndexSourceSize } from '../../utils/array.js';\nimport { getSafeProperty, setSafeProperty } from '../../utils/customs.js';\nimport { DimensionError } from '../../error/DimensionError.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'subset';\nvar dependencies = ['typed', 'matrix', 'zeros', 'add'];\nexport var createSubset = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n zeros,\n add\n } = _ref;\n /**\n * Get or set a subset of a matrix or string.\n *\n * Syntax:\n * math.subset(value, index) // retrieve a subset\n * math.subset(value, index, replacement [, defaultValue]) // replace a subset\n *\n * Examples:\n *\n * // get a subset\n * const d = [[1, 2], [3, 4]]\n * math.subset(d, math.index(1, 0)) // returns 3\n * math.subset(d, math.index([0, 1], 1)) // returns [[2], [4]]\n * math.subset(d, math.index([false, true], 0)) // returns [[3]]\n *\n * // replace a subset\n * const e = []\n * const f = math.subset(e, math.index(0, [0, 2]), [5, 6]) // f = [[5, 0, 6]]\n * const g = math.subset(f, math.index(1, 1), 7, 0) // g = [[5, 0, 6], [0, 7, 0]]\n * math.subset(g, math.index([false, true], 1), 8) // returns [[5, 0, 6], [0, 8, 0]]\n *\n * // get submatrix using ranges\n * const M = [\n * [1,2,3],\n * [4,5,6],\n * [7,8,9]\n * ]\n * math.subset(M, math.index(math.range(0,2), math.range(0,3))) // [[1, 2, 3], [4, 5, 6]]\n *\n * See also:\n *\n * size, resize, squeeze, index\n *\n * @param {Array | Matrix | string} matrix An array, matrix, or string\n * @param {Index} index\n * For each dimension of the target, specifies an index or a list of\n * indices to fetch or set. `subset` uses the cartesian product of\n * the indices specified in each dimension.\n * @param {*} [replacement] An array, matrix, or scalar.\n * If provided, the subset is replaced with replacement.\n * If not provided, the subset is returned\n * @param {*} [defaultValue=undefined] Default value, filled in on new entries when\n * the matrix is resized. If not provided,\n * math.matrix elements will be left undefined.\n * @return {Array | Matrix | string} Either the retrieved subset or the updated matrix.\n */\n\n return typed(name, {\n // get subset\n 'Matrix, Index': function Matrix_Index(value, index) {\n if (isEmptyIndex(index)) {\n return matrix();\n }\n validateIndexSourceSize(value, index);\n return value.subset(index);\n },\n 'Array, Index': typed.referTo('Matrix, Index', function (subsetRef) {\n return function (value, index) {\n var subsetResult = subsetRef(matrix(value), index);\n return index.isScalar() ? subsetResult : subsetResult.valueOf();\n };\n }),\n 'Object, Index': _getObjectProperty,\n 'string, Index': _getSubstring,\n // set subset\n 'Matrix, Index, any, any': function Matrix_Index_any_any(value, index, replacement, defaultValue) {\n if (isEmptyIndex(index)) {\n return value;\n }\n validateIndexSourceSize(value, index);\n return value.clone().subset(index, _broadcastReplacement(replacement, index), defaultValue);\n },\n 'Array, Index, any, any': typed.referTo('Matrix, Index, any, any', function (subsetRef) {\n return function (value, index, replacement, defaultValue) {\n var subsetResult = subsetRef(matrix(value), index, replacement, defaultValue);\n return subsetResult.isMatrix ? subsetResult.valueOf() : subsetResult;\n };\n }),\n 'Array, Index, any': typed.referTo('Matrix, Index, any, any', function (subsetRef) {\n return function (value, index, replacement) {\n return subsetRef(matrix(value), index, replacement, undefined).valueOf();\n };\n }),\n 'Matrix, Index, any': typed.referTo('Matrix, Index, any, any', function (subsetRef) {\n return function (value, index, replacement) {\n return subsetRef(value, index, replacement, undefined);\n };\n }),\n 'string, Index, string': _setSubstring,\n 'string, Index, string, string': _setSubstring,\n 'Object, Index, any': _setObjectProperty\n });\n\n /**\n * Broadcasts a replacment value to be the same size as index\n * @param {number | BigNumber | Array | Matrix} replacement Replacement value to try to broadcast\n * @param {*} index Index value\n * @returns broadcasted replacement that matches the size of index\n */\n\n function _broadcastReplacement(replacement, index) {\n if (typeof replacement === 'string') {\n throw new Error('can\\'t boradcast a string');\n }\n if (index._isScalar) {\n return replacement;\n }\n var indexSize = index.size();\n if (indexSize.every(d => d > 0)) {\n try {\n return add(replacement, zeros(indexSize));\n } catch (error) {\n return replacement;\n }\n } else {\n return replacement;\n }\n }\n});\n\n/**\n * Retrieve a subset of a string\n * @param {string} str string from which to get a substring\n * @param {Index} index An index or list of indices (character positions)\n * @returns {string} substring\n * @private\n */\nfunction _getSubstring(str, index) {\n if (!isIndex(index)) {\n // TODO: better error message\n throw new TypeError('Index expected');\n }\n if (isEmptyIndex(index)) {\n return '';\n }\n validateIndexSourceSize(Array.from(str), index);\n if (index.size().length !== 1) {\n throw new DimensionError(index.size().length, 1);\n }\n\n // validate whether the range is out of range\n var strLen = str.length;\n validateIndex(index.min()[0], strLen);\n validateIndex(index.max()[0], strLen);\n var range = index.dimension(0);\n var substr = '';\n range.forEach(function (v) {\n substr += str.charAt(v);\n });\n return substr;\n}\n\n/**\n * Replace a substring in a string\n * @param {string} str string to be replaced\n * @param {Index} index An index or list of indices (character positions)\n * @param {string} replacement Replacement string\n * @param {string} [defaultValue] Default value to be used when resizing\n * the string. is ' ' by default\n * @returns {string} result\n * @private\n */\nfunction _setSubstring(str, index, replacement, defaultValue) {\n if (!index || index.isIndex !== true) {\n // TODO: better error message\n throw new TypeError('Index expected');\n }\n if (isEmptyIndex(index)) {\n return str;\n }\n validateIndexSourceSize(Array.from(str), index);\n if (index.size().length !== 1) {\n throw new DimensionError(index.size().length, 1);\n }\n if (defaultValue !== undefined) {\n if (typeof defaultValue !== 'string' || defaultValue.length !== 1) {\n throw new TypeError('Single character expected as defaultValue');\n }\n } else {\n defaultValue = ' ';\n }\n var range = index.dimension(0);\n var len = range.size()[0];\n if (len !== replacement.length) {\n throw new DimensionError(range.size()[0], replacement.length);\n }\n\n // validate whether the range is out of range\n var strLen = str.length;\n validateIndex(index.min()[0]);\n validateIndex(index.max()[0]);\n\n // copy the string into an array with characters\n var chars = [];\n for (var i = 0; i < strLen; i++) {\n chars[i] = str.charAt(i);\n }\n range.forEach(function (v, i) {\n chars[v] = replacement.charAt(i[0]);\n });\n\n // initialize undefined characters with a space\n if (chars.length > strLen) {\n for (var _i = strLen - 1, _len = chars.length; _i < _len; _i++) {\n if (!chars[_i]) {\n chars[_i] = defaultValue;\n }\n }\n }\n return chars.join('');\n}\n\n/**\n * Retrieve a property from an object\n * @param {Object} object\n * @param {Index} index\n * @return {*} Returns the value of the property\n * @private\n */\nfunction _getObjectProperty(object, index) {\n if (isEmptyIndex(index)) {\n return undefined;\n }\n if (index.size().length !== 1) {\n throw new DimensionError(index.size(), 1);\n }\n var key = index.dimension(0);\n if (typeof key !== 'string') {\n throw new TypeError('String expected as index to retrieve an object property');\n }\n return getSafeProperty(object, key);\n}\n\n/**\n * Set a property on an object\n * @param {Object} object\n * @param {Index} index\n * @param {*} replacement\n * @return {*} Returns the updated object\n * @private\n */\nfunction _setObjectProperty(object, index, replacement) {\n if (isEmptyIndex(index)) {\n return object;\n }\n if (index.size().length !== 1) {\n throw new DimensionError(index.size(), 1);\n }\n var key = index.dimension(0);\n if (typeof key !== 'string') {\n throw new TypeError('String expected as index to retrieve an object property');\n }\n\n // clone the object, and apply the property to the clone\n var updated = clone(object);\n setSafeProperty(updated, key, replacement);\n return updated;\n}", "import { clone } from '../../utils/object.js';\nimport { format } from '../../utils/string.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'transpose';\nvar dependencies = ['typed', 'matrix'];\nexport var createTranspose = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix\n } = _ref;\n /**\n * Transpose a matrix. All values of the matrix are reflected over its\n * main diagonal. Only applicable to two dimensional matrices containing\n * a vector (i.e. having size `[1,n]` or `[n,1]`). One dimensional\n * vectors and scalars return the input unchanged.\n *\n * Syntax:\n *\n * math.transpose(x)\n *\n * Examples:\n *\n * const A = [[1, 2, 3], [4, 5, 6]]\n * math.transpose(A) // returns [[1, 4], [2, 5], [3, 6]]\n *\n * See also:\n *\n * diag, inv, subset, squeeze\n *\n * @param {Array | Matrix} x Matrix to be transposed\n * @return {Array | Matrix} The transposed matrix\n */\n return typed(name, {\n Array: x => transposeMatrix(matrix(x)).valueOf(),\n Matrix: transposeMatrix,\n any: clone // scalars\n });\n function transposeMatrix(x) {\n // matrix size\n var size = x.size();\n\n // result\n var c;\n\n // process dimensions\n switch (size.length) {\n case 1:\n // vector\n c = x.clone();\n break;\n case 2:\n {\n // rows and columns\n var rows = size[0];\n var columns = size[1];\n\n // check columns\n if (columns === 0) {\n // throw exception\n throw new RangeError('Cannot transpose a 2D matrix with no columns (size: ' + format(size) + ')');\n }\n\n // process storage format\n switch (x.storage()) {\n case 'dense':\n c = _denseTranspose(x, rows, columns);\n break;\n case 'sparse':\n c = _sparseTranspose(x, rows, columns);\n break;\n }\n }\n break;\n default:\n // multi dimensional\n throw new RangeError('Matrix must be a vector or two dimensional (size: ' + format(size) + ')');\n }\n return c;\n }\n function _denseTranspose(m, rows, columns) {\n // matrix array\n var data = m._data;\n // transposed matrix data\n var transposed = [];\n var transposedRow;\n // loop columns\n for (var j = 0; j < columns; j++) {\n // initialize row\n transposedRow = transposed[j] = [];\n // loop rows\n for (var i = 0; i < rows; i++) {\n // set data\n transposedRow[i] = clone(data[i][j]);\n }\n }\n // return matrix\n return m.createDenseMatrix({\n data: transposed,\n size: [columns, rows],\n datatype: m._datatype\n });\n }\n function _sparseTranspose(m, rows, columns) {\n // matrix arrays\n var values = m._values;\n var index = m._index;\n var ptr = m._ptr;\n // result matrices\n var cvalues = values ? [] : undefined;\n var cindex = [];\n var cptr = [];\n // row counts\n var w = [];\n for (var x = 0; x < rows; x++) {\n w[x] = 0;\n }\n // vars\n var p, l, j;\n // loop values in matrix\n for (p = 0, l = index.length; p < l; p++) {\n // number of values in row\n w[index[p]]++;\n }\n // cumulative sum\n var sum = 0;\n // initialize cptr with the cummulative sum of row counts\n for (var i = 0; i < rows; i++) {\n // update cptr\n cptr.push(sum);\n // update sum\n sum += w[i];\n // update w\n w[i] = cptr[i];\n }\n // update cptr\n cptr.push(sum);\n // loop columns\n for (j = 0; j < columns; j++) {\n // values & index in column\n for (var k0 = ptr[j], k1 = ptr[j + 1], k = k0; k < k1; k++) {\n // C values & index\n var q = w[index[k]]++;\n // C[j, i] = A[i, j]\n cindex[q] = j;\n // check we need to process values (pattern matrix)\n if (values) {\n cvalues[q] = clone(values[k]);\n }\n }\n }\n // return matrix\n return m.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [columns, rows],\n datatype: m._datatype\n });\n }\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'ctranspose';\nvar dependencies = ['typed', 'transpose', 'conj'];\nexport var createCtranspose = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n transpose,\n conj\n } = _ref;\n /**\n * Transpose and complex conjugate a matrix. All values of the matrix are\n * reflected over its main diagonal and then the complex conjugate is\n * taken. This is equivalent to complex conjugation for scalars and\n * vectors.\n *\n * Syntax:\n *\n * math.ctranspose(x)\n *\n * Examples:\n *\n * const A = [[1, 2, 3], [4, 5, math.complex(6,7)]]\n * math.ctranspose(A) // returns [[1, 4], [2, 5], [3, {re:6,im:7}]]\n *\n * See also:\n *\n * transpose, diag, inv, subset, squeeze\n *\n * @param {Array | Matrix} x Matrix to be ctransposed\n * @return {Array | Matrix} The ctransposed matrix\n */\n return typed(name, {\n any: function any(x) {\n return conj(transpose(x));\n }\n });\n});", "import { isBigNumber } from '../../utils/is.js';\nimport { isInteger } from '../../utils/number.js';\nimport { resize } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'zeros';\nvar dependencies = ['typed', 'config', 'matrix', 'BigNumber'];\nexport var createZeros = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n BigNumber\n } = _ref;\n /**\n * Create a matrix filled with zeros. The created matrix can have one or\n * multiple dimensions.\n *\n * Syntax:\n *\n * math.zeros(m)\n * math.zeros(m, format)\n * math.zeros(m, n)\n * math.zeros(m, n, format)\n * math.zeros([m, n])\n * math.zeros([m, n], format)\n *\n * Examples:\n *\n * math.zeros() // returns []\n * math.zeros(3) // returns [0, 0, 0]\n * math.zeros(3, 2) // returns [[0, 0], [0, 0], [0, 0]]\n * math.zeros(3, 'dense') // returns [0, 0, 0]\n *\n * const A = [[1, 2, 3], [4, 5, 6]]\n * math.zeros(math.size(A)) // returns [[0, 0, 0], [0, 0, 0]]\n *\n * See also:\n *\n * ones, identity, size, range\n *\n * @param {...(number|BigNumber) | Array} size The size of each dimension of the matrix\n * @param {string} [format] The Matrix storage format\n *\n * @return {Array | Matrix} A matrix filled with zeros\n */\n return typed(name, {\n '': function _() {\n return config.matrix === 'Array' ? _zeros([]) : _zeros([], 'default');\n },\n // math.zeros(m, n, p, ..., format)\n // TODO: more accurate signature '...number | BigNumber, string' as soon as typed-function supports this\n '...number | BigNumber | string': function number__BigNumber__string(size) {\n var last = size[size.length - 1];\n if (typeof last === 'string') {\n var format = size.pop();\n return _zeros(size, format);\n } else if (config.matrix === 'Array') {\n return _zeros(size);\n } else {\n return _zeros(size, 'default');\n }\n },\n Array: _zeros,\n Matrix: function Matrix(size) {\n var format = size.storage();\n return _zeros(size.valueOf(), format);\n },\n 'Array | Matrix, string': function Array__Matrix_string(size, format) {\n return _zeros(size.valueOf(), format);\n }\n });\n\n /**\n * Create an Array or Matrix with zeros\n * @param {Array} size\n * @param {string} [format='default']\n * @return {Array | Matrix}\n * @private\n */\n function _zeros(size, format) {\n var hasBigNumbers = _normalize(size);\n var defaultValue = hasBigNumbers ? new BigNumber(0) : 0;\n _validate(size);\n if (format) {\n // return a matrix\n var m = matrix(format);\n if (size.length > 0) {\n return m.resize(size, defaultValue);\n }\n return m;\n } else {\n // return an Array\n var arr = [];\n if (size.length > 0) {\n return resize(arr, size, defaultValue);\n }\n return arr;\n }\n }\n\n // replace BigNumbers with numbers, returns true if size contained BigNumbers\n function _normalize(size) {\n var hasBigNumbers = false;\n size.forEach(function (value, index, arr) {\n if (isBigNumber(value)) {\n hasBigNumbers = true;\n arr[index] = value.toNumber();\n }\n });\n return hasBigNumbers;\n }\n\n // validate arguments\n function _validate(size) {\n size.forEach(function (value) {\n if (typeof value !== 'number' || !isInteger(value) || value < 0) {\n throw new Error('Parameters in function zeros must be positive integers');\n }\n });\n }\n});\n\n// TODO: zeros contains almost the same code as ones. Reuse this?", "import { arraySize } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'fft';\nvar dependencies = ['typed', 'matrix', 'addScalar', 'multiplyScalar', 'divideScalar', 'exp', 'tau', 'i', 'dotDivide', 'conj', 'pow', 'ceil', 'log2'];\nexport var createFft = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n addScalar,\n multiplyScalar,\n divideScalar,\n exp,\n tau,\n i: I,\n dotDivide,\n conj,\n pow,\n ceil,\n log2\n } = _ref;\n /**\n * Calculate N-dimensional Fourier transform\n *\n * Syntax:\n *\n * math.fft(arr)\n *\n * Examples:\n *\n * math.fft([[1, 0], [1, 0]]) // returns [[{re:2, im:0}, {re:2, im:0}], [{re:0, im:0}, {re:0, im:0}]]\n *\n *\n * See Also:\n *\n * ifft\n *\n * @param {Array | Matrix} arr An array or matrix\n * @return {Array | Matrix} N-dimensional Fourier transformation of the array\n */\n return typed(name, {\n Array: _ndFft,\n Matrix: function Matrix(matrix) {\n return matrix.create(_ndFft(matrix.valueOf()), matrix.datatype());\n }\n });\n\n /**\n * Perform an N-dimensional Fourier transform\n *\n * @param {Array} arr The array\n * @return {Array} resulting array\n */\n function _ndFft(arr) {\n var size = arraySize(arr);\n if (size.length === 1) return _fft(arr, size[0]);\n // ndFft along dimension 1,...,N-1 then 1dFft along dimension 0\n return _1dFft(arr.map(slice => _ndFft(slice, size.slice(1))), 0);\n }\n\n /**\n * Perform an 1-dimensional Fourier transform\n *\n * @param {Array} arr The array\n * @param {number} dim dimension of the array to perform on\n * @return {Array} resulting array\n */\n function _1dFft(arr, dim) {\n var size = arraySize(arr);\n if (dim !== 0) return new Array(size[0]).fill(0).map((_, i) => _1dFft(arr[i], dim - 1));\n if (size.length === 1) return _fft(arr);\n function _transpose(arr) {\n // Swap first 2 dimensions\n var size = arraySize(arr);\n return new Array(size[1]).fill(0).map((_, j) => new Array(size[0]).fill(0).map((_, i) => arr[i][j]));\n }\n return _transpose(_1dFft(_transpose(arr), 1));\n }\n /**\n * Perform an 1-dimensional non-power-of-2 Fourier transform using Chirp-Z Transform\n *\n * @param {Array} arr The array\n * @return {Array} resulting array\n */\n function _czt(arr) {\n var n = arr.length;\n var w = exp(divideScalar(multiplyScalar(-1, multiplyScalar(I, tau)), n));\n var chirp = [];\n for (var i = 1 - n; i < n; i++) {\n chirp.push(pow(w, divideScalar(pow(i, 2), 2)));\n }\n var N2 = pow(2, ceil(log2(n + n - 1)));\n var xp = [...new Array(n).fill(0).map((_, i) => multiplyScalar(arr[i], chirp[n - 1 + i])), ...new Array(N2 - n).fill(0)];\n var ichirp = [...new Array(n + n - 1).fill(0).map((_, i) => divideScalar(1, chirp[i])), ...new Array(N2 - (n + n - 1)).fill(0)];\n var fftXp = _fft(xp);\n var fftIchirp = _fft(ichirp);\n var fftProduct = new Array(N2).fill(0).map((_, i) => multiplyScalar(fftXp[i], fftIchirp[i]));\n var ifftProduct = dotDivide(conj(_ndFft(conj(fftProduct))), N2);\n var ret = [];\n for (var _i = n - 1; _i < n + n - 1; _i++) {\n ret.push(multiplyScalar(ifftProduct[_i], chirp[_i]));\n }\n return ret;\n }\n /**\n * Perform an 1-dimensional Fourier transform\n *\n * @param {Array} arr The array\n * @return {Array} resulting array\n */\n function _fft(arr) {\n var len = arr.length;\n if (len === 1) return [arr[0]];\n if (len % 2 === 0) {\n var ret = [..._fft(arr.filter((_, i) => i % 2 === 0), len / 2), ..._fft(arr.filter((_, i) => i % 2 === 1), len / 2)];\n for (var k = 0; k < len / 2; k++) {\n var p = ret[k];\n var q = multiplyScalar(ret[k + len / 2], exp(multiplyScalar(multiplyScalar(tau, I), divideScalar(-k, len))));\n ret[k] = addScalar(p, q);\n ret[k + len / 2] = addScalar(p, multiplyScalar(-1, q));\n }\n return ret;\n } else {\n // use chirp-z transform for non-power-of-2 FFT\n return _czt(arr);\n }\n // throw new Error('Can only calculate FFT of power-of-two size')\n }\n});", "import { arraySize } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { isMatrix } from '../../utils/is.js';\nvar name = 'ifft';\nvar dependencies = ['typed', 'fft', 'dotDivide', 'conj'];\nexport var createIfft = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n fft,\n dotDivide,\n conj\n } = _ref;\n /**\n * Calculate N-dimensional inverse Fourier transform\n *\n * Syntax:\n *\n * math.ifft(arr)\n *\n * Examples:\n *\n * math.ifft([[2, 2], [0, 0]]) // returns [[{re:1, im:0}, {re:0, im:0}], [{re:1, im:0}, {re:0, im:0}]]\n *\n * See Also:\n *\n * fft\n *\n * @param {Array | Matrix} arr An array or matrix\n * @return {Array | Matrix} N-dimensional Fourier transformation of the array\n */\n return typed(name, {\n 'Array | Matrix': function Array__Matrix(arr) {\n var size = isMatrix(arr) ? arr.size() : arraySize(arr);\n return dotDivide(conj(fft(conj(arr))), size.reduce((acc, curr) => acc * curr, 1));\n }\n });\n});", "function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };", "import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };", "import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };", "import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport { isUnit, isNumber, isBigNumber } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'solveODE';\nvar dependencies = ['typed', 'add', 'subtract', 'multiply', 'divide', 'max', 'map', 'abs', 'isPositive', 'isNegative', 'larger', 'smaller', 'matrix', 'bignumber', 'unaryMinus'];\nexport var createSolveODE = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n subtract,\n multiply,\n divide,\n max,\n map,\n abs,\n isPositive,\n isNegative,\n larger,\n smaller,\n matrix,\n bignumber,\n unaryMinus\n } = _ref;\n /**\n * Numerical Integration of Ordinary Differential Equations\n *\n * Two variable step methods are provided:\n * - \"RK23\": Bogacki\u2013Shampine method\n * - \"RK45\": Dormand-Prince method RK5(4)7M (default)\n *\n * The arguments are expected as follows.\n *\n * - `func` should be the forcing function `f(t, y)`\n * - `tspan` should be a vector of two numbers or units `[tStart, tEnd]`\n * - `y0` the initial state values, should be a scalar or a flat array\n * - `options` should be an object with the following information:\n * - `method` ('RK45'): ['RK23', 'RK45']\n * - `tol` (1e-3): Numeric tolerance of the method, the solver keeps the error estimates less than this value\n * - `firstStep`: Initial step size\n * - `minStep`: minimum step size of the method\n * - `maxStep`: maximum step size of the method\n * - `minDelta` (0.2): minimum ratio of change for the step\n * - `maxDelta` (5): maximum ratio of change for the step\n * - `maxIter` (1e4): maximum number of iterations\n *\n * The returned value is an object with `{t, y}` please note that even though `t` means time, it can represent any other independant variable like `x`:\n * - `t` an array of size `[n]`\n * - `y` the states array can be in two ways\n * - **if `y0` is a scalar:** returns an array-like of size `[n]`\n * - **if `y0` is a flat array-like of size [m]:** returns an array like of size `[n, m]`\n *\n * Syntax:\n *\n * math.solveODE(func, tspan, y0)\n * math.solveODE(func, tspan, y0, options)\n *\n * Examples:\n *\n * function func(t, y) {return y}\n * const tspan = [0, 4]\n * const y0 = 1\n * math.solveODE(func, tspan, y0)\n * math.solveODE(func, tspan, [1, 2])\n * math.solveODE(func, tspan, y0, { method:\"RK23\", maxStep:0.1 })\n *\n * See also:\n *\n * derivative, simplifyCore\n *\n * @param {function} func The forcing function f(t,y)\n * @param {Array | Matrix} tspan The time span\n * @param {number | BigNumber | Unit | Array | Matrix} y0 The initial value\n * @param {Object} [options] Optional configuration options\n * @return {Object} Return an object with t and y values as arrays\n */\n\n function _rk(butcherTableau) {\n // generates an adaptive runge kutta method from it's butcher tableau\n\n return function (f, tspan, y0, options) {\n // adaptive runge kutta methods\n var wrongTSpan = !(tspan.length === 2 && (tspan.every(isNumOrBig) || tspan.every(isUnit)));\n if (wrongTSpan) {\n throw new Error('\"tspan\" must be an Array of two numeric values or two units [tStart, tEnd]');\n }\n var t0 = tspan[0]; // initial time\n var tf = tspan[1]; // final time\n var isForwards = larger(tf, t0);\n var firstStep = options.firstStep;\n if (firstStep !== undefined && !isPositive(firstStep)) {\n throw new Error('\"firstStep\" must be positive');\n }\n var maxStep = options.maxStep;\n if (maxStep !== undefined && !isPositive(maxStep)) {\n throw new Error('\"maxStep\" must be positive');\n }\n var minStep = options.minStep;\n if (minStep && isNegative(minStep)) {\n throw new Error('\"minStep\" must be positive or zero');\n }\n var timeVars = [t0, tf, firstStep, minStep, maxStep].filter(x => x !== undefined);\n if (!(timeVars.every(isNumOrBig) || timeVars.every(isUnit))) {\n throw new Error('Inconsistent type of \"t\" dependant variables');\n }\n var steps = 1; // divide time in this number of steps\n var tol = options.tol ? options.tol : 1e-4; // define a tolerance (must be an option)\n var minDelta = options.minDelta ? options.minDelta : 0.2;\n var maxDelta = options.maxDelta ? options.maxDelta : 5;\n var maxIter = options.maxIter ? options.maxIter : 10000; // stop inifite evaluation if something goes wrong\n var hasBigNumbers = [t0, tf, ...y0, maxStep, minStep].some(isBigNumber);\n var [a, c, b, bp] = hasBigNumbers ? [bignumber(butcherTableau.a), bignumber(butcherTableau.c), bignumber(butcherTableau.b), bignumber(butcherTableau.bp)] : [butcherTableau.a, butcherTableau.c, butcherTableau.b, butcherTableau.bp];\n var h = firstStep ? isForwards ? firstStep : unaryMinus(firstStep) : divide(subtract(tf, t0), steps); // define the first step size\n var t = [t0]; // start the time array\n var y = [y0]; // start the solution array\n\n var deltaB = subtract(b, bp); // b - bp\n\n var n = 0;\n var iter = 0;\n var ongoing = _createOngoing(isForwards);\n var trimStep = _createTrimStep(isForwards);\n // iterate unitil it reaches either the final time or maximum iterations\n while (ongoing(t[n], tf)) {\n var k = [];\n\n // trim the time step so that it doesn't overshoot\n h = trimStep(t[n], tf, h);\n\n // calculate the first value of k\n k.push(f(t[n], y[n]));\n\n // calculate the rest of the values of k\n for (var i = 1; i < c.length; ++i) {\n k.push(f(add(t[n], multiply(c[i], h)), add(y[n], multiply(h, a[i], k))));\n }\n\n // estimate the error by comparing solutions of different orders\n var TE = max(abs(map(multiply(deltaB, k), X => isUnit(X) ? X.value : X)));\n if (TE < tol && tol / TE > 1 / 4) {\n // push solution if within tol\n t.push(add(t[n], h));\n y.push(add(y[n], multiply(h, b, k)));\n n++;\n }\n\n // estimate the delta value that will affect the step size\n var delta = 0.84 * (tol / TE) ** (1 / 5);\n if (smaller(delta, minDelta)) {\n delta = minDelta;\n } else if (larger(delta, maxDelta)) {\n delta = maxDelta;\n }\n delta = hasBigNumbers ? bignumber(delta) : delta;\n h = multiply(h, delta);\n if (maxStep && larger(abs(h), maxStep)) {\n h = isForwards ? maxStep : unaryMinus(maxStep);\n } else if (minStep && smaller(abs(h), minStep)) {\n h = isForwards ? minStep : unaryMinus(minStep);\n }\n iter++;\n if (iter > maxIter) {\n throw new Error('Maximum number of iterations reached, try changing options');\n }\n }\n return {\n t,\n y\n };\n };\n }\n function _rk23(f, tspan, y0, options) {\n // Bogacki\u2013Shampine method\n\n // Define the butcher table\n var a = [[], [1 / 2], [0, 3 / 4], [2 / 9, 1 / 3, 4 / 9]];\n var c = [null, 1 / 2, 3 / 4, 1];\n var b = [2 / 9, 1 / 3, 4 / 9, 0];\n var bp = [7 / 24, 1 / 4, 1 / 3, 1 / 8];\n var butcherTableau = {\n a,\n c,\n b,\n bp\n };\n\n // Solve an adaptive step size rk method\n return _rk(butcherTableau)(f, tspan, y0, options);\n }\n function _rk45(f, tspan, y0, options) {\n // Dormand Prince method\n\n // Define the butcher tableau\n var a = [[], [1 / 5], [3 / 40, 9 / 40], [44 / 45, -56 / 15, 32 / 9], [19372 / 6561, -25360 / 2187, 64448 / 6561, -212 / 729], [9017 / 3168, -355 / 33, 46732 / 5247, 49 / 176, -5103 / 18656], [35 / 384, 0, 500 / 1113, 125 / 192, -2187 / 6784, 11 / 84]];\n var c = [null, 1 / 5, 3 / 10, 4 / 5, 8 / 9, 1, 1];\n var b = [35 / 384, 0, 500 / 1113, 125 / 192, -2187 / 6784, 11 / 84, 0];\n var bp = [5179 / 57600, 0, 7571 / 16695, 393 / 640, -92097 / 339200, 187 / 2100, 1 / 40];\n var butcherTableau = {\n a,\n c,\n b,\n bp\n };\n\n // Solve an adaptive step size rk method\n return _rk(butcherTableau)(f, tspan, y0, options);\n }\n function _solveODE(f, tspan, y0, opt) {\n var method = opt.method ? opt.method : 'RK45';\n var methods = {\n RK23: _rk23,\n RK45: _rk45\n };\n if (method.toUpperCase() in methods) {\n var methodOptions = _objectSpread({}, opt); // clone the options object\n delete methodOptions.method; // delete the method as it won't be needed\n return methods[method.toUpperCase()](f, tspan, y0, methodOptions);\n } else {\n // throw an error indicating there is no such method\n var methodsWithQuotes = Object.keys(methods).map(x => \"\\\"\".concat(x, \"\\\"\"));\n // generates a string of methods like: \"BDF\", \"RK23\" and \"RK45\"\n var availableMethodsString = \"\".concat(methodsWithQuotes.slice(0, -1).join(', '), \" and \").concat(methodsWithQuotes.slice(-1));\n throw new Error(\"Unavailable method \\\"\".concat(method, \"\\\". Available methods are \").concat(availableMethodsString));\n }\n }\n function _createOngoing(isForwards) {\n // returns the correct function to test if it's still iterating\n return isForwards ? smaller : larger;\n }\n function _createTrimStep(isForwards) {\n var outOfBounds = isForwards ? larger : smaller;\n return function (t, tf, h) {\n var next = add(t, h);\n return outOfBounds(next, tf) ? subtract(tf, t) : h;\n };\n }\n function isNumOrBig(x) {\n // checks if it's a number or bignumber\n return isBigNumber(x) || isNumber(x);\n }\n function _matrixSolveODE(f, T, y0, options) {\n // receives matrices and returns matrices\n var sol = _solveODE(f, T.toArray(), y0.toArray(), options);\n return {\n t: matrix(sol.t),\n y: matrix(sol.y)\n };\n }\n return typed('solveODE', {\n 'function, Array, Array, Object': _solveODE,\n 'function, Matrix, Matrix, Object': _matrixSolveODE,\n 'function, Array, Array': (f, T, y0) => _solveODE(f, T, y0, {}),\n 'function, Matrix, Matrix': (f, T, y0) => _matrixSolveODE(f, T, y0, {}),\n 'function, Array, number | BigNumber | Unit': (f, T, y0) => {\n var sol = _solveODE(f, T, [y0], {});\n return {\n t: sol.t,\n y: sol.y.map(Y => Y[0])\n };\n },\n 'function, Matrix, number | BigNumber | Unit': (f, T, y0) => {\n var sol = _solveODE(f, T.toArray(), [y0], {});\n return {\n t: matrix(sol.t),\n y: matrix(sol.y.map(Y => Y[0]))\n };\n },\n 'function, Array, number | BigNumber | Unit, Object': (f, T, y0, options) => {\n var sol = _solveODE(f, T, [y0], options);\n return {\n t: sol.t,\n y: sol.y.map(Y => Y[0])\n };\n },\n 'function, Matrix, number | BigNumber | Unit, Object': (f, T, y0, options) => {\n var sol = _solveODE(f, T.toArray(), [y0], options);\n return {\n t: matrix(sol.t),\n y: matrix(sol.y.map(Y => Y[0]))\n };\n }\n });\n});", "/* eslint-disable no-loss-of-precision */\n\nimport { deepMap } from '../../utils/collection.js';\nimport { sign } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'erf';\nvar dependencies = ['typed'];\nexport var createErf = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Compute the erf function of a value using a rational Chebyshev\n * approximations for different intervals of x.\n *\n * This is a translation of W. J. Cody's Fortran implementation from 1987\n * ( https://www.netlib.org/specfun/erf ). See the AMS publication\n * \"Rational Chebyshev Approximations for the Error Function\" by W. J. Cody\n * for an explanation of this process.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.erf(x)\n *\n * Examples:\n *\n * math.erf(0.2) // returns 0.22270258921047847\n * math.erf(-0.5) // returns -0.5204998778130465\n * math.erf(4) // returns 0.9999999845827421\n *\n * See also:\n * zeta\n *\n * @param {number | Array | Matrix} x A real number\n * @return {number | Array | Matrix} The erf of `x`\n */\n return typed('name', {\n number: function number(x) {\n var y = Math.abs(x);\n if (y >= MAX_NUM) {\n return sign(x);\n }\n if (y <= THRESH) {\n return sign(x) * erf1(y);\n }\n if (y <= 4.0) {\n return sign(x) * (1 - erfc2(y));\n }\n return sign(x) * (1 - erfc3(y));\n },\n 'Array | Matrix': typed.referToSelf(self => n => deepMap(n, self))\n\n // TODO: For complex numbers, use the approximation for the Faddeeva function\n // from \"More Efficient Computation of the Complex Error Function\" (AMS)\n });\n\n /**\n * Approximates the error function erf() for x <= 0.46875 using this function:\n * n\n * erf(x) = x * sum (p_j * x^(2j)) / (q_j * x^(2j))\n * j=0\n */\n function erf1(y) {\n var ysq = y * y;\n var xnum = P[0][4] * ysq;\n var xden = ysq;\n var i;\n for (i = 0; i < 3; i += 1) {\n xnum = (xnum + P[0][i]) * ysq;\n xden = (xden + Q[0][i]) * ysq;\n }\n return y * (xnum + P[0][3]) / (xden + Q[0][3]);\n }\n\n /**\n * Approximates the complement of the error function erfc() for\n * 0.46875 <= x <= 4.0 using this function:\n * n\n * erfc(x) = e^(-x^2) * sum (p_j * x^j) / (q_j * x^j)\n * j=0\n */\n function erfc2(y) {\n var xnum = P[1][8] * y;\n var xden = y;\n var i;\n for (i = 0; i < 7; i += 1) {\n xnum = (xnum + P[1][i]) * y;\n xden = (xden + Q[1][i]) * y;\n }\n var result = (xnum + P[1][7]) / (xden + Q[1][7]);\n var ysq = parseInt(y * 16) / 16;\n var del = (y - ysq) * (y + ysq);\n return Math.exp(-ysq * ysq) * Math.exp(-del) * result;\n }\n\n /**\n * Approximates the complement of the error function erfc() for x > 4.0 using\n * this function:\n *\n * erfc(x) = (e^(-x^2) / x) * [ 1/sqrt(pi) +\n * n\n * 1/(x^2) * sum (p_j * x^(-2j)) / (q_j * x^(-2j)) ]\n * j=0\n */\n function erfc3(y) {\n var ysq = 1 / (y * y);\n var xnum = P[2][5] * ysq;\n var xden = ysq;\n var i;\n for (i = 0; i < 4; i += 1) {\n xnum = (xnum + P[2][i]) * ysq;\n xden = (xden + Q[2][i]) * ysq;\n }\n var result = ysq * (xnum + P[2][4]) / (xden + Q[2][4]);\n result = (SQRPI - result) / y;\n ysq = parseInt(y * 16) / 16;\n var del = (y - ysq) * (y + ysq);\n return Math.exp(-ysq * ysq) * Math.exp(-del) * result;\n }\n});\n\n/**\n * Upper bound for the first approximation interval, 0 <= x <= THRESH\n * @constant\n */\nvar THRESH = 0.46875;\n\n/**\n * Constant used by W. J. Cody's Fortran77 implementation to denote sqrt(pi)\n * @constant\n */\nvar SQRPI = 5.6418958354775628695e-1;\n\n/**\n * Coefficients for each term of the numerator sum (p_j) for each approximation\n * interval (see W. J. Cody's paper for more details)\n * @constant\n */\nvar P = [[3.16112374387056560e00, 1.13864154151050156e02, 3.77485237685302021e02, 3.20937758913846947e03, 1.85777706184603153e-1], [5.64188496988670089e-1, 8.88314979438837594e00, 6.61191906371416295e01, 2.98635138197400131e02, 8.81952221241769090e02, 1.71204761263407058e03, 2.05107837782607147e03, 1.23033935479799725e03, 2.15311535474403846e-8], [3.05326634961232344e-1, 3.60344899949804439e-1, 1.25781726111229246e-1, 1.60837851487422766e-2, 6.58749161529837803e-4, 1.63153871373020978e-2]];\n\n/**\n * Coefficients for each term of the denominator sum (q_j) for each approximation\n * interval (see W. J. Cody's paper for more details)\n * @constant\n */\nvar Q = [[2.36012909523441209e01, 2.44024637934444173e02, 1.28261652607737228e03, 2.84423683343917062e03], [1.57449261107098347e01, 1.17693950891312499e02, 5.37181101862009858e02, 1.62138957456669019e03, 3.29079923573345963e03, 4.36261909014324716e03, 3.43936767414372164e03, 1.23033935480374942e03], [2.56852019228982242e00, 1.87295284992346047e00, 5.27905102951428412e-1, 6.05183413124413191e-2, 2.33520497626869185e-3]];\n\n/**\n * Maximum/minimum safe numbers to input to erf() (in ES6+, this number is\n * Number.[MAX|MIN]_SAFE_INTEGER). erf() for all numbers beyond this limit will\n * return 1\n */\nvar MAX_NUM = Math.pow(2, 53);", "import { factory } from '../../utils/factory.js';\nvar name = 'zeta';\nvar dependencies = ['typed', 'config', 'multiply', 'pow', 'divide', 'factorial', 'equal', 'smallerEq', 'isNegative', 'gamma', 'sin', 'subtract', 'add', '?Complex', '?BigNumber', 'pi'];\nexport var createZeta = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n multiply,\n pow,\n divide,\n factorial,\n equal,\n smallerEq,\n isNegative,\n gamma,\n sin,\n subtract,\n add,\n Complex,\n BigNumber: _BigNumber,\n pi\n } = _ref;\n /**\n * Compute the Riemann Zeta function of a value using an infinite series for\n * all of the complex plane using Riemann's Functional equation.\n *\n * Based off the paper by Xavier Gourdon and Pascal Sebah\n * ( http://numbers.computation.free.fr/Constants/Miscellaneous/zetaevaluations.pdf )\n *\n * Implementation and slight modification by Anik Patel\n *\n * Note: the implementation is accurate up to about 6 digits.\n *\n * Syntax:\n *\n * math.zeta(n)\n *\n * Examples:\n *\n * math.zeta(5) // returns 1.0369277551433895\n * math.zeta(-0.5) // returns -0.2078862249773449\n * math.zeta(math.i) // returns 0.0033002236853253153 - 0.4181554491413212i\n *\n * See also:\n * erf\n *\n * @param {number | Complex | BigNumber} s A Real, Complex or BigNumber parameter to the Riemann Zeta Function\n * @return {number | Complex | BigNumber} The Riemann Zeta of `s`\n */\n return typed(name, {\n number: s => zetaNumeric(s, value => value, () => 20),\n BigNumber: s => zetaNumeric(s, value => new _BigNumber(value), () => {\n // relTol is for example 1e-12. Extract the positive exponent 12 from that\n return Math.abs(Math.log10(config.relTol));\n }),\n Complex: zetaComplex\n });\n\n /**\n * @param {number | BigNumber} s\n * @param {(value: number) => number | BigNumber} createValue\n * @param {(value: number | BigNumber | Complex) => number} determineDigits\n * @returns {number | BigNumber}\n */\n function zetaNumeric(s, createValue, determineDigits) {\n if (equal(s, 0)) {\n return createValue(-0.5);\n }\n if (equal(s, 1)) {\n return createValue(NaN);\n }\n if (!isFinite(s)) {\n return isNegative(s) ? createValue(NaN) : createValue(1);\n }\n return zeta(s, createValue, determineDigits, s => s);\n }\n\n /**\n * @param {Complex} s\n * @returns {Complex}\n */\n function zetaComplex(s) {\n if (s.re === 0 && s.im === 0) {\n return new Complex(-0.5);\n }\n if (s.re === 1) {\n return new Complex(NaN, NaN);\n }\n if (s.re === Infinity && s.im === 0) {\n return new Complex(1);\n }\n if (s.im === Infinity || s.re === -Infinity) {\n return new Complex(NaN, NaN);\n }\n return zeta(s, value => value, s => Math.round(1.3 * 15 + 0.9 * Math.abs(s.im)), s => s.re);\n }\n\n /**\n * @param {number | BigNumber | Complex} s\n * @param {(value: number) => number | BigNumber | Complex} createValue\n * @param {(value: number | BigNumber | Complex) => number} determineDigits\n * @param {(value: number | BigNumber | Complex) => number} getRe\n * @returns {*|number}\n */\n function zeta(s, createValue, determineDigits, getRe) {\n var n = determineDigits(s);\n if (getRe(s) > -(n - 1) / 2) {\n return f(s, createValue(n), createValue);\n } else {\n // Function Equation for reflection to x < 1\n var c = multiply(pow(2, s), pow(createValue(pi), subtract(s, 1)));\n c = multiply(c, sin(multiply(divide(createValue(pi), 2), s)));\n c = multiply(c, gamma(subtract(1, s)));\n return multiply(c, zeta(subtract(1, s), createValue, determineDigits, getRe));\n }\n }\n\n /**\n * Calculate a portion of the sum\n * @param {number | BigNumber} k a positive integer\n * @param {number | BigNumber} n a positive integer\n * @return {number} the portion of the sum\n **/\n function d(k, n) {\n var S = k;\n for (var j = k; smallerEq(j, n); j = add(j, 1)) {\n var factor = divide(multiply(factorial(add(n, subtract(j, 1))), pow(4, j)), multiply(factorial(subtract(n, j)), factorial(multiply(2, j))));\n S = add(S, factor);\n }\n return multiply(n, S);\n }\n\n /**\n * Calculate the positive Riemann Zeta function\n * @param {number} s a real or complex number with s.re > 1\n * @param {number} n a positive integer\n * @param {(number) => number | BigNumber | Complex} createValue\n * @return {number} Riemann Zeta of s\n **/\n function f(s, n, createValue) {\n var c = divide(1, multiply(d(createValue(0), n), subtract(1, pow(2, subtract(1, s)))));\n var S = createValue(0);\n for (var k = createValue(1); smallerEq(k, n); k = add(k, 1)) {\n S = add(S, divide(multiply((-1) ** (k - 1), d(k, n)), pow(k, s)));\n }\n return multiply(c, S);\n }\n});", "import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'mode';\nvar dependencies = ['typed', 'isNaN', 'isNumeric'];\nexport var createMode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n isNaN,\n isNumeric\n } = _ref;\n /**\n * Computes the mode of a set of numbers or a list with values(numbers or characters).\n * If there are multiple modes, it returns a list of those values.\n *\n * Syntax:\n *\n * math.mode(a, b, c, ...)\n * math.mode(A)\n *\n * Examples:\n *\n * math.mode(2, 1, 4, 3, 1) // returns [1]\n * math.mode([1, 2.7, 3.2, 4, 2.7]) // returns [2.7]\n * math.mode(1, 4, 6, 1, 6) // returns [1, 6]\n * math.mode('a','a','b','c') // returns [\"a\"]\n * math.mode(1, 1.5, 'abc') // returns [1, 1.5, \"abc\"]\n *\n * See also:\n *\n * median,\n * mean\n *\n * @param {... *} args A single matrix\n * @return {*} The mode of all values\n */\n return typed(name, {\n 'Array | Matrix': _mode,\n '...': function _(args) {\n return _mode(args);\n }\n });\n\n /**\n * Calculates the mode in an 1-dimensional array\n * @param {Array} values\n * @return {Array} mode\n * @private\n */\n function _mode(values) {\n values = flatten(values.valueOf());\n var num = values.length;\n if (num === 0) {\n throw new Error('Cannot calculate mode of an empty array');\n }\n var count = {};\n var mode = [];\n var max = 0;\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n if (isNumeric(value) && isNaN(value)) {\n throw new Error('Cannot calculate mode of an array containing NaN values');\n }\n if (!(value in count)) {\n count[value] = 0;\n }\n count[value]++;\n if (count[value] === max) {\n mode.push(value);\n } else if (count[value] > max) {\n max = count[value];\n mode = [value];\n }\n }\n return mode;\n }\n});", "import { typeOf } from '../../../utils/is.js';\n\n/**\n * Improve error messages for statistics functions. Errors are typically\n * thrown in an internally used function like larger, causing the error\n * not to mention the function (like max) which is actually used by the user.\n *\n * @param {Error} err\n * @param {String} fnName\n * @param {*} [value]\n * @return {Error}\n */\nexport function improveErrorMessage(err, fnName, value) {\n // TODO: add information with the index (also needs transform in expression parser)\n var details;\n if (String(err).includes('Unexpected type')) {\n details = arguments.length > 2 ? ' (type: ' + typeOf(value) + ', value: ' + JSON.stringify(value) + ')' : ' (type: ' + err.data.actual + ')';\n return new TypeError('Cannot calculate ' + fnName + ', unexpected type of argument' + details);\n }\n if (String(err).includes('complex numbers')) {\n details = arguments.length > 2 ? ' (type: ' + typeOf(value) + ', value: ' + JSON.stringify(value) + ')' : '';\n return new TypeError('Cannot calculate ' + fnName + ', no ordering relation is defined for complex numbers' + details);\n }\n return err;\n}", "import { deepForEach } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { safeNumberType } from '../../utils/number.js';\nimport { improveErrorMessage } from './utils/improveErrorMessage.js';\nvar name = 'prod';\nvar dependencies = ['typed', 'config', 'multiplyScalar', 'numeric'];\nexport var createProd = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n multiplyScalar,\n numeric\n } = _ref;\n /**\n * Compute the product of a matrix or a list with values.\n * In case of a multidimensional array or matrix, the sum of all\n * elements will be calculated.\n *\n * Syntax:\n *\n * math.prod(a, b, c, ...)\n * math.prod(A)\n *\n * Examples:\n *\n * math.multiply(2, 3) // returns 6\n * math.prod(2, 3) // returns 6\n * math.prod(2, 3, 4) // returns 24\n * math.prod([2, 3, 4]) // returns 24\n * math.prod([[2, 5], [4, 3]]) // returns 120\n *\n * See also:\n *\n * mean, median, min, max, sum, std, variance\n *\n * @param {... *} args A single matrix or or multiple scalar values\n * @return {*} The product of all values\n */\n return typed(name, {\n // prod([a, b, c, d, ...])\n 'Array | Matrix': _prod,\n // prod([a, b, c, d, ...], dim)\n 'Array | Matrix, number | BigNumber': function Array__Matrix_number__BigNumber(array, dim) {\n // TODO: implement prod(A, dim)\n throw new Error('prod(A, dim) is not yet supported');\n // return reduce(arguments[0], arguments[1], math.prod)\n },\n // prod(a, b, c, d, ...)\n '...': function _(args) {\n return _prod(args);\n }\n });\n\n /**\n * Recursively calculate the product of an n-dimensional array\n * @param {Array} array\n * @return {number} prod\n * @private\n */\n function _prod(array) {\n var prod;\n deepForEach(array, function (value) {\n try {\n prod = prod === undefined ? value : multiplyScalar(prod, value);\n } catch (err) {\n throw improveErrorMessage(err, 'prod', value);\n }\n });\n\n // make sure returning numeric value: parse a string into a numeric value\n if (typeof prod === 'string') {\n prod = numeric(prod, safeNumberType(prod, config));\n }\n if (prod === undefined) {\n throw new Error('Cannot calculate prod of an empty array');\n }\n return prod;\n }\n});", "import { format as formatString } from '../../utils/string.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'format';\nvar dependencies = ['typed'];\nexport var createFormat = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Format a value of any type into a string.\n *\n * Syntax:\n *\n * math.format(value)\n * math.format(value, options)\n * math.format(value, precision)\n * math.format(value, callback)\n *\n * Where:\n *\n * - `value: *`\n * The value to be formatted\n * - `options: Object`\n * An object with formatting options. Available options:\n * - `notation: string`\n * Number notation. Choose from:\n * - `'fixed'`\n * Always use regular number notation.\n * For example `'123.40'` and `'14000000'`\n * - `'exponential'`\n * Always use exponential notation.\n * For example `'1.234e+2'` and `'1.4e+7'`\n * - `'engineering'`\n * Always use engineering notation: always have exponential notation,\n * and select the exponent to be a multiple of `3`.\n * For example `'123.4e+0'` and `'14.0e+6'`\n * - `'auto'` (default)\n * Regular number notation for numbers having an absolute value between\n * `lower` and `upper` bounds, and uses exponential notation elsewhere.\n * Lower bound is included, upper bound is excluded.\n * For example `'123.4'` and `'1.4e7'`.\n * - `'bin'`, `'oct'`, or `'hex'`\n * Format the number using binary, octal, or hexadecimal notation.\n * For example `'0b1101'` and `'0x10fe'`.\n * - `wordSize: number | BigNumber`\n * The word size in bits to use for formatting in binary, octal, or\n * hexadecimal notation. To be used only with `'bin'`, `'oct'`, or `'hex'`\n * values for `notation` option. When this option is defined the value\n * is formatted as a signed twos complement integer of the given word\n * size and the size suffix is appended to the output.\n * For example `format(-1, {notation: 'hex', wordSize: 8}) === '0xffi8'`.\n * Default value is undefined.\n * - `precision: number | BigNumber`\n * Limit the number of digits of the formatted value.\n * For regular numbers, must be a number between `0` and `16`.\n * For bignumbers, the maximum depends on the configured precision,\n * see function `config()`.\n * In case of notations `'exponential'`, `'engineering'`, and `'auto'`,\n * `precision` defines the total number of significant digits returned.\n * In case of notation `'fixed'`, `precision` defines the number of\n * significant digits after the decimal point.\n * `precision` is undefined by default.\n * - `lowerExp: number`\n * Exponent determining the lower boundary for formatting a value with\n * an exponent when `notation='auto'`. Default value is `-3`.\n * - `upperExp: number`\n * Exponent determining the upper boundary for formatting a value with\n * an exponent when `notation='auto'`. Default value is `5`.\n * - `fraction: string`. Available values: `'ratio'` (default) or `'decimal'`.\n * For example `format(fraction(1, 3))` will output `'1/3'` when `'ratio'`\n * is configured, and will output `'0.(3)'` when `'decimal'` is configured.\n * - `truncate: number`. Specifies the maximum allowed length of the\n * returned string. If it had been longer, the excess characters\n * are deleted and replaced with `'...'`.\n * - `callback: function`\n * A custom formatting function, invoked for all numeric elements in `value`,\n * for example all elements of a matrix, or the real and imaginary\n * parts of a complex number. This callback can be used to override the\n * built-in numeric notation with any type of formatting. Function `callback`\n * is called with `value` as parameter and must return a string.\n *\n * When `value` is an Object:\n *\n * - When the object contains a property `format` being a function, this function\n * is invoked as `value.format(options)` and the result is returned.\n * - When the object has its own `toString` method, this method is invoked\n * and the result is returned.\n * - In other cases the function will loop over all object properties and\n * return JSON object notation like '{\"a\": 2, \"b\": 3}'.\n *\n * When value is a function:\n *\n * - When the function has a property `syntax`, it returns this\n * syntax description.\n * - In other cases, a string `'function'` is returned.\n *\n * Examples:\n *\n * math.format(6.4) // returns '6.4'\n * math.format(1240000) // returns '1.24e+6'\n * math.format(1/3) // returns '0.3333333333333333'\n * math.format(1/3, 3) // returns '0.333'\n * math.format(21385, 2) // returns '21000'\n * math.format(12e8, {notation: 'fixed'}) // returns '1200000000'\n * math.format(2.3, {notation: 'fixed', precision: 4}) // returns '2.3000'\n * math.format(52.8, {notation: 'exponential'}) // returns '5.28e+1'\n * math.format(12400, {notation: 'engineering'}) // returns '12.4e+3'\n * math.format(2000, {lowerExp: -2, upperExp: 2}) // returns '2e+3'\n *\n * function formatCurrency(value) {\n * // return currency notation with two digits:\n * return '$' + value.toFixed(2)\n *\n * // you could also use math.format inside the callback:\n * // return '$' + math.format(value, {notation: 'fixed', precision: 2})\n * }\n * math.format([2.1, 3, 0.016], formatCurrency) // returns '[$2.10, $3.00, $0.02]'\n *\n * See also:\n *\n * print\n *\n * @param {*} value Value to be stringified\n * @param {Object | Function | number} [options] Formatting options\n * @return {string} The formatted value\n */\n return typed(name, {\n any: formatString,\n 'any, Object | function | number | BigNumber': formatString\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'bin';\nvar dependencies = ['typed', 'format'];\n\n/**\n * Format a number as binary.\n *\n * Syntax:\n *\n * math.bin(value)\n *\n * Examples:\n *\n * //the following outputs \"0b10\"\n * math.bin(2)\n *\n * See also:\n *\n * oct\n * hex\n *\n * @param {number | BigNumber} value Value to be stringified\n * @param {number | BigNumber} wordSize Optional word size (see `format`)\n * @return {string} The formatted value\n */\nexport var createBin = factory(name, dependencies, _ref => {\n var {\n typed,\n format\n } = _ref;\n return typed(name, {\n 'number | BigNumber': function number__BigNumber(n) {\n return format(n, {\n notation: 'bin'\n });\n },\n 'number | BigNumber, number | BigNumber': function number__BigNumber_number__BigNumber(n, wordSize) {\n return format(n, {\n notation: 'bin',\n wordSize\n });\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'oct';\nvar dependencies = ['typed', 'format'];\n\n/**\n * Format a number as octal.\n *\n * Syntax:\n *\n * math.oct(value)\n *\n * Examples:\n *\n * //the following outputs \"0o70\"\n * math.oct(56)\n *\n * See also:\n *\n * bin\n * hex\n *\n * @param {number | BigNumber} value Value to be stringified\n * @param {number | BigNumber} wordSize Optional word size (see `format`)\n * @return {string} The formatted value\n */\n\nexport var createOct = factory(name, dependencies, _ref => {\n var {\n typed,\n format\n } = _ref;\n return typed(name, {\n 'number | BigNumber': function number__BigNumber(n) {\n return format(n, {\n notation: 'oct'\n });\n },\n 'number | BigNumber, number | BigNumber': function number__BigNumber_number__BigNumber(n, wordSize) {\n return format(n, {\n notation: 'oct',\n wordSize\n });\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'hex';\nvar dependencies = ['typed', 'format'];\n\n/**\n * Format a number as hexadecimal.\n *\n * Syntax:\n *\n * math.hex(value)\n *\n * Examples:\n *\n * math.hex(240) // returns \"0xF0\"\n *\n * See also:\n *\n * oct\n * bin\n *\n * @param {number | BigNumber} value Value to be stringified\n * @param {number | BigNumber} wordSize Optional word size (see `format`)\n * @return {string} The formatted value\n */\nexport var createHex = factory(name, dependencies, _ref => {\n var {\n typed,\n format\n } = _ref;\n return typed(name, {\n 'number | BigNumber': function number__BigNumber(n) {\n return format(n, {\n notation: 'hex'\n });\n },\n 'number | BigNumber, number | BigNumber': function number__BigNumber_number__BigNumber(n, wordSize) {\n return format(n, {\n notation: 'hex',\n wordSize\n });\n }\n });\n});", "export var printTemplate = /\\$([\\w.]+)/g;", "import { format } from '../../utils/string.js';\nimport { isString } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nimport { printTemplate } from '../../utils/print.js';\nvar name = 'print';\nvar dependencies = ['typed'];\nexport var createPrint = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Interpolate values into a string template.\n *\n * Syntax:\n *\n * math.print(template, values)\n * math.print(template, values, precision)\n * math.print(template, values, options)\n *\n * Example usage:\n *\n * // the following outputs: 'Lucy is 5 years old'\n * math.print('Lucy is $age years old', {age: 5})\n *\n * // the following outputs: 'The value of pi is 3.141592654'\n * math.print('The value of pi is $pi', {pi: math.pi}, 10)\n *\n * // the following outputs: 'hello Mary! The date is 2013-03-23'\n * math.print('Hello $user.name! The date is $date', {\n * user: {\n * name: 'Mary',\n * },\n * date: new Date(2013, 2, 23).toISOString().substring(0, 10)\n * })\n *\n * // the following outputs: 'My favorite fruits are apples and bananas !'\n * math.print('My favorite fruits are $0 and $1 !', [\n * 'apples',\n * 'bananas'\n * ])\n *\n * See also:\n *\n * format\n *\n * @param {string} template A string containing variable placeholders.\n * @param {Object | Array | Matrix} values An object or array containing variables\n * which will be filled in in the template.\n * @param {number | Object} [options] Formatting options,\n * or the number of digits to format numbers.\n * See function math.format for a description\n * of all options.\n * @return {string} Interpolated string\n */\n return typed(name, {\n // note: Matrix will be converted automatically to an Array\n 'string, Object | Array': _print,\n 'string, Object | Array, number | Object': _print\n });\n});\n\n/**\n * Interpolate values into a string template.\n * @param {string} template\n * @param {Object} values\n * @param {number | Object} [options]\n * @returns {string} Interpolated string\n * @private\n */\nfunction _print(template, values, options) {\n return template.replace(printTemplate, function (original, key) {\n var keys = key.split('.');\n var value = values[keys.shift()];\n if (value !== undefined && value.isMatrix) {\n value = value.toArray();\n }\n while (keys.length && value !== undefined) {\n var k = keys.shift();\n value = k ? value[k] : value + '.';\n }\n if (value !== undefined) {\n if (!isString(value)) {\n return format(value, options);\n } else {\n return value;\n }\n }\n return original;\n });\n}", "import { factory } from '../../utils/factory.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nvar name = 'to';\nvar dependencies = ['typed', 'matrix', 'concat'];\nexport var createTo = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n concat\n } = _ref;\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Change the unit of a value.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.to(x, unit)\n *\n * Examples:\n *\n * math.to(math.unit('2 inch'), 'cm') // returns Unit 5.08 cm\n * math.to(math.unit('2 inch'), math.unit('cm')) // returns Unit 5.08 cm\n * math.to(math.unit(16, 'bytes'), 'bits') // returns Unit 128 bits\n *\n * See also:\n *\n * unit\n *\n * @param {Unit | Array | Matrix} x The unit to be converted.\n * @param {Unit | Array | Matrix} unit New unit. Can be a string like \"cm\"\n * or a unit without value.\n * @return {Unit | Array | Matrix} value with changed, fixed unit.\n */\n return typed(name, {\n 'Unit, Unit | string': (x, unit) => x.to(unit)\n }, matrixAlgorithmSuite({\n Ds: true\n }));\n});", "import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'isPrime';\nvar dependencies = ['typed'];\nexport var createIsPrime = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Test whether a value is prime: has no divisors other than itself and one.\n * The function supports type `number`, `bignumber`.\n *\n * The function is evaluated element-wise in case of Array or Matrix input.\n *\n * Syntax:\n *\n * math.isPrime(x)\n *\n * Examples:\n *\n * math.isPrime(3) // returns true\n * math.isPrime(-2) // returns false\n * math.isPrime(0) // returns false\n * math.isPrime(-0) // returns false\n * math.isPrime(0.5) // returns false\n * math.isPrime('2') // returns true\n * math.isPrime([2, 17, 100]) // returns [true, true, false]\n *\n * See also:\n *\n * isNumeric, isZero, isNegative, isInteger\n *\n * @param {number | BigNumber | bigint | Array | Matrix} x Value to be tested\n * @return {boolean} Returns true when `x` is larger than zero.\n * Throws an error in case of an unknown data type.\n */\n return typed(name, {\n number: function number(x) {\n if (x <= 3) {\n return x > 1;\n }\n if (x % 2 === 0 || x % 3 === 0) {\n return false;\n }\n for (var i = 5; i * i <= x; i += 6) {\n if (x % i === 0 || x % (i + 2) === 0) {\n return false;\n }\n }\n return true;\n },\n bigint: function bigint(x) {\n if (x <= 3n) {\n return x > 1n;\n }\n if (x % 2n === 0n || x % 3n === 0n) {\n return false;\n }\n for (var i = 5n; i * i <= x; i += 6n) {\n if (x % i === 0n || x % (i + 2n) === 0n) {\n return false;\n }\n }\n return true;\n },\n BigNumber: function BigNumber(n) {\n if (n.lte(3)) return n.gt(1);\n if (n.mod(2).eq(0) || n.mod(3).eq(0)) return false;\n if (n.lt(Math.pow(2, 32))) {\n var x = n.toNumber();\n for (var i = 5; i * i <= x; i += 6) {\n if (x % i === 0 || x % (i + 2) === 0) {\n return false;\n }\n }\n return true;\n }\n function modPow(base, exponent, modulus) {\n // exponent can be huge, use non-recursive variant\n var accumulator = 1;\n while (!exponent.eq(0)) {\n if (exponent.mod(2).eq(0)) {\n exponent = exponent.div(2);\n base = base.mul(base).mod(modulus);\n } else {\n exponent = exponent.sub(1);\n accumulator = base.mul(accumulator).mod(modulus);\n }\n }\n return accumulator;\n }\n\n // https://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test#Deterministic_variants\n var Decimal = n.constructor.clone({\n precision: n.toFixed(0).length * 2\n });\n n = new Decimal(n);\n var r = 0;\n var d = n.sub(1);\n while (d.mod(2).eq(0)) {\n d = d.div(2);\n r += 1;\n }\n var bases = null;\n // https://en.wikipedia.org/wiki/Miller\u2013Rabin_primality_test#Testing_against_small_sets_of_bases\n if (n.lt('3317044064679887385961981')) {\n bases = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41].filter(x => x < n);\n } else {\n var max = Math.min(n.toNumber() - 2, Math.floor(2 * Math.pow(n.toFixed(0).length * Math.log(10), 2)));\n bases = [];\n for (var _i = 2; _i <= max; _i += 1) {\n bases.push(max);\n }\n }\n for (var _i2 = 0; _i2 < bases.length; _i2 += 1) {\n var a = bases[_i2];\n var adn = modPow(n.sub(n).add(a), d, n);\n if (!adn.eq(1)) {\n for (var _i3 = 0, _x = adn; !_x.eq(n.sub(1)); _i3 += 1, _x = _x.mul(_x).mod(n)) {\n if (_i3 === r - 1) {\n return false;\n }\n }\n }\n }\n return true;\n },\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { typeOf } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nimport { noBignumber, noFraction } from '../../utils/noop.js';\nvar name = 'numeric';\nvar dependencies = ['number', '?bignumber', '?fraction'];\nexport var createNumeric = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n number: _number,\n bignumber,\n fraction\n } = _ref;\n var validInputTypes = {\n string: true,\n number: true,\n BigNumber: true,\n Fraction: true\n };\n\n // Load the conversion functions for each output type\n var validOutputTypes = {\n number: x => _number(x),\n BigNumber: bignumber ? x => bignumber(x) : noBignumber,\n bigint: x => BigInt(x),\n Fraction: fraction ? x => fraction(x) : noFraction\n };\n\n /**\n * Convert a numeric input to a specific numeric type: number, BigNumber, bigint, or Fraction.\n *\n * Syntax:\n *\n * math.numeric(x)\n *\n * Examples:\n *\n * math.numeric('4') // returns 4\n * math.numeric('4', 'number') // returns 4\n * math.numeric('4', 'bigint') // returns 4n\n * math.numeric('4', 'BigNumber') // returns BigNumber 4\n * math.numeric('4', 'Fraction') // returns Fraction 4\n * math.numeric(4, 'Fraction') // returns Fraction 4\n * math.numeric(math.fraction(2, 5), 'number') // returns 0.4\n *\n * See also:\n *\n * number, fraction, bignumber, bigint, string, format\n *\n * @param {string | number | BigNumber | bigint | Fraction } value\n * A numeric value or a string containing a numeric value\n * @param {string} outputType\n * Desired numeric output type.\n * Available values: 'number', 'BigNumber', or 'Fraction'\n * @return {number | BigNumber | bigint | Fraction}\n * Returns an instance of the numeric in the requested type\n */\n return function numeric(value) {\n var outputType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'number';\n var check = arguments.length > 2 ? arguments[2] : undefined;\n if (check !== undefined) {\n throw new SyntaxError('numeric() takes one or two arguments');\n }\n var inputType = typeOf(value);\n if (!(inputType in validInputTypes)) {\n throw new TypeError('Cannot convert ' + value + ' of type \"' + inputType + '\"; valid input types are ' + Object.keys(validInputTypes).join(', '));\n }\n if (!(outputType in validOutputTypes)) {\n throw new TypeError('Cannot convert ' + value + ' to type \"' + outputType + '\"; valid output types are ' + Object.keys(validOutputTypes).join(', '));\n }\n if (outputType === inputType) {\n return value;\n } else {\n return validOutputTypes[outputType](value);\n }\n };\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'divideScalar';\nvar dependencies = ['typed', 'numeric'];\nexport var createDivideScalar = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n numeric\n } = _ref;\n /**\n * Divide two scalar values, `x / y`.\n * This function is meant for internal use: it is used by the public functions\n * `divide` and `inv`.\n *\n * This function does not support collections (Array or Matrix).\n *\n * @param {number | BigNumber | bigint | Fraction | Complex | Unit} x Numerator\n * @param {number | BigNumber | bigint | Fraction | Complex} y Denominator\n * @return {number | BigNumber | bigint | Fraction | Complex | Unit} Quotient, `x / y`\n * @private\n */\n return typed(name, {\n 'number, number': function number_number(x, y) {\n return x / y;\n },\n 'Complex, Complex': function Complex_Complex(x, y) {\n return x.div(y);\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n return x.div(y);\n },\n 'bigint, bigint': function bigint_bigint(x, y) {\n return x / y;\n },\n 'Fraction, Fraction': function Fraction_Fraction(x, y) {\n return x.div(y);\n },\n 'Unit, number | Complex | Fraction | BigNumber | Unit': (x, y) => x.divide(y),\n 'number | Fraction | Complex | BigNumber, Unit': (x, y) => y.divideInto(x)\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { isInteger } from '../../utils/number.js';\nimport { arraySize as size } from '../../utils/array.js';\nimport { powNumber } from '../../plain/number/index.js';\nvar name = 'pow';\nvar dependencies = ['typed', 'config', 'identity', 'multiply', 'matrix', 'inv', 'fraction', 'number', 'Complex'];\nexport var createPow = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n identity,\n multiply,\n matrix,\n inv,\n number,\n fraction,\n Complex\n } = _ref;\n /**\n * Calculates the power of x to y, `x ^ y`.\n *\n * Matrix exponentiation is supported for square matrices `x` and integers `y`:\n * when `y` is nonnegative, `x` may be any square matrix; and when `y` is\n * negative, `x` must be invertible, and then this function returns\n * inv(x)^(-y).\n *\n * For cubic roots of negative numbers, the function returns the principal\n * root by default. In order to let the function return the real root,\n * math.js can be configured with `math.config({predictable: true})`.\n * To retrieve all cubic roots of a value, use `math.cbrt(x, true)`.\n *\n * Syntax:\n *\n * math.pow(x, y)\n *\n * Examples:\n *\n * math.pow(2, 3) // returns number 8\n *\n * const a = math.complex(2, 3)\n * math.pow(a, 2) // returns Complex -5 + 12i\n *\n * const b = [[1, 2], [4, 3]]\n * math.pow(b, 2) // returns Array [[9, 8], [16, 17]]\n *\n * const c = [[1, 2], [4, 3]]\n * math.pow(c, -1) // returns Array [[-0.6, 0.4], [0.8, -0.2]]\n *\n * See also:\n *\n * multiply, sqrt, cbrt, nthRoot\n *\n * @param {number | BigNumber | bigint | Complex | Unit | Array | Matrix} x The base\n * @param {number | BigNumber | bigint | Complex} y The exponent\n * @return {number | BigNumber | bigint | Complex | Array | Matrix} The value of `x` to the power `y`\n */\n return typed(name, {\n 'number, number': _pow,\n 'Complex, Complex': function Complex_Complex(x, y) {\n return x.pow(y);\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n if (y.isInteger() || x >= 0 || config.predictable) {\n return x.pow(y);\n } else {\n return new Complex(x.toNumber(), 0).pow(y.toNumber(), 0);\n }\n },\n 'bigint, bigint': (x, y) => x ** y,\n 'Fraction, Fraction': function Fraction_Fraction(x, y) {\n var result = x.pow(y);\n if (result != null) {\n return result;\n }\n if (config.predictable) {\n throw new Error('Result of pow is non-rational and cannot be expressed as a fraction');\n } else {\n return _pow(x.valueOf(), y.valueOf());\n }\n },\n 'Array, number': _powArray,\n 'Array, BigNumber': function Array_BigNumber(x, y) {\n return _powArray(x, y.toNumber());\n },\n 'Matrix, number': _powMatrix,\n 'Matrix, BigNumber': function Matrix_BigNumber(x, y) {\n return _powMatrix(x, y.toNumber());\n },\n 'Unit, number | BigNumber': function Unit_number__BigNumber(x, y) {\n return x.pow(y);\n }\n });\n\n /**\n * Calculates the power of x to y, x^y, for two numbers.\n * @param {number} x\n * @param {number} y\n * @return {number | Complex} res\n * @private\n */\n function _pow(x, y) {\n // Alternatively could define a 'realmode' config option or something, but\n // 'predictable' will work for now\n if (config.predictable && !isInteger(y) && x < 0) {\n // Check to see if y can be represented as a fraction\n try {\n var yFrac = fraction(y);\n var yNum = number(yFrac);\n if (y === yNum || Math.abs((y - yNum) / y) < 1e-14) {\n if (yFrac.d % 2n === 1n) {\n return (yFrac.n % 2n === 0n ? 1 : -1) * Math.pow(-x, y);\n }\n }\n } catch (ex) {\n // fraction() throws an error if y is Infinity, etc.\n }\n\n // Unable to express y as a fraction, so continue on\n }\n\n // **for predictable mode** x^Infinity === NaN if x < -1\n // N.B. this behavour is different from `Math.pow` which gives\n // (-2)^Infinity === Infinity\n if (config.predictable && (x < -1 && y === Infinity || x > -1 && x < 0 && y === -Infinity)) {\n return NaN;\n }\n if (isInteger(y) || x >= 0 || config.predictable) {\n return powNumber(x, y);\n } else {\n // TODO: the following infinity checks are duplicated from powNumber. Deduplicate this somehow\n\n // x^Infinity === 0 if -1 < x < 1\n // A real number 0 is returned instead of complex(0)\n if (x * x < 1 && y === Infinity || x * x > 1 && y === -Infinity) {\n return 0;\n }\n return new Complex(x, 0).pow(y, 0);\n }\n }\n\n /**\n * Calculate the power of a 2d array\n * @param {Array} x must be a 2 dimensional, square matrix\n * @param {number} y a integer value (positive if `x` is not invertible)\n * @returns {Array}\n * @private\n */\n function _powArray(x, y) {\n if (!isInteger(y)) {\n throw new TypeError('For A^b, b must be an integer (value is ' + y + ')');\n }\n // verify that A is a 2 dimensional square matrix\n var s = size(x);\n if (s.length !== 2) {\n throw new Error('For A^b, A must be 2 dimensional (A has ' + s.length + ' dimensions)');\n }\n if (s[0] !== s[1]) {\n throw new Error('For A^b, A must be square (size is ' + s[0] + 'x' + s[1] + ')');\n }\n if (y < 0) {\n try {\n return _powArray(inv(x), -y);\n } catch (error) {\n if (error.message === 'Cannot calculate inverse, determinant is zero') {\n throw new TypeError('For A^b, when A is not invertible, b must be a positive integer (value is ' + y + ')');\n }\n throw error;\n }\n }\n var res = identity(s[0]).valueOf();\n var px = x;\n while (y >= 1) {\n if ((y & 1) === 1) {\n res = multiply(px, res);\n }\n y >>= 1;\n px = multiply(px, px);\n }\n return res;\n }\n\n /**\n * Calculate the power of a 2d matrix\n * @param {Matrix} x must be a 2 dimensional, square matrix\n * @param {number} y a positive, integer value\n * @returns {Matrix}\n * @private\n */\n function _powMatrix(x, y) {\n return matrix(_powArray(x.valueOf(), y));\n }\n});", "import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { nearlyEqual, splitNumber } from '../../utils/number.js';\nimport { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';\nimport { roundNumber } from '../../plain/number/index.js';\nvar NO_INT = 'Number of decimals in function round must be an integer';\nvar name = 'round';\nvar dependencies = ['typed', 'config', 'matrix', 'equalScalar', 'zeros', 'BigNumber', 'DenseMatrix'];\nexport var createRound = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n equalScalar,\n zeros,\n BigNumber: _BigNumber,\n DenseMatrix\n } = _ref;\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matAlgo14xDs = createMatAlgo14xDs({\n typed\n });\n function toExponent(epsilon) {\n return Math.abs(splitNumber(epsilon).exponent);\n }\n\n /**\n * Round a value towards the nearest rounded value.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.round(x)\n * math.round(x, n)\n * math.round(unit, valuelessUnit)\n * math.round(unit, n, valuelessUnit)\n *\n * Examples:\n *\n * math.round(3.22) // returns number 3\n * math.round(3.82) // returns number 4\n * math.round(-4.2) // returns number -4\n * math.round(-4.7) // returns number -5\n * math.round(3.22, 1) // returns number 3.2\n * math.round(3.88, 1) // returns number 3.9\n * math.round(-4.21, 1) // returns number -4.2\n * math.round(-4.71, 1) // returns number -4.7\n * math.round(math.pi, 3) // returns number 3.142\n * math.round(123.45678, 2) // returns number 123.46\n *\n * const c = math.complex(3.2, -2.7)\n * math.round(c) // returns Complex 3 - 3i\n *\n * const unit = math.unit('3.241 cm')\n * const cm = math.unit('cm')\n * const mm = math.unit('mm')\n * math.round(unit, 1, cm) // returns Unit 3.2 cm\n * math.round(unit, 1, mm) // returns Unit 32.4 mm\n *\n * math.round([3.2, 3.8, -4.7]) // returns Array [3, 4, -5]\n *\n * See also:\n *\n * ceil, fix, floor\n *\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x Value to be rounded\n * @param {number | BigNumber | Array} [n=0] Number of decimals\n * @param {Unit} [valuelessUnit] A valueless unit\n * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} Rounded value\n */\n return typed(name, {\n number: function number(x) {\n // Handle round off errors by first rounding to relTol precision\n var xEpsilon = roundNumber(x, toExponent(config.relTol));\n var xSelected = nearlyEqual(x, xEpsilon, config.relTol, config.absTol) ? xEpsilon : x;\n return roundNumber(xSelected);\n },\n 'number, number': function number_number(x, n) {\n // Same as number: unless user specifies more decimals than relTol\n var epsilonExponent = toExponent(config.relTol);\n if (n >= epsilonExponent) {\n return roundNumber(x, n);\n }\n var xEpsilon = roundNumber(x, epsilonExponent);\n var xSelected = nearlyEqual(x, xEpsilon, config.relTol, config.absTol) ? xEpsilon : x;\n return roundNumber(xSelected, n);\n },\n 'number, BigNumber': function number_BigNumber(x, n) {\n if (!n.isInteger()) {\n throw new TypeError(NO_INT);\n }\n return new _BigNumber(x).toDecimalPlaces(n.toNumber());\n },\n Complex: function Complex(x) {\n return x.round();\n },\n 'Complex, number': function Complex_number(x, n) {\n if (n % 1) {\n throw new TypeError(NO_INT);\n }\n return x.round(n);\n },\n 'Complex, BigNumber': function Complex_BigNumber(x, n) {\n if (!n.isInteger()) {\n throw new TypeError(NO_INT);\n }\n var _n = n.toNumber();\n return x.round(_n);\n },\n BigNumber: function BigNumber(x) {\n // Handle round off errors by first rounding to relTol precision\n var xEpsilon = new _BigNumber(x).toDecimalPlaces(toExponent(config.relTol));\n var xSelected = bigNearlyEqual(x, xEpsilon, config.relTol, config.absTol) ? xEpsilon : x;\n return xSelected.toDecimalPlaces(0);\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, n) {\n if (!n.isInteger()) {\n throw new TypeError(NO_INT);\n }\n\n // Same as BigNumber: unless user specifies more decimals than relTol\n var epsilonExponent = toExponent(config.relTol);\n if (n >= epsilonExponent) {\n return x.toDecimalPlaces(n.toNumber());\n }\n var xEpsilon = x.toDecimalPlaces(epsilonExponent);\n var xSelected = bigNearlyEqual(x, xEpsilon, config.relTol, config.absTol) ? xEpsilon : x;\n return xSelected.toDecimalPlaces(n.toNumber());\n },\n Fraction: function Fraction(x) {\n return x.round();\n },\n 'Fraction, number': function Fraction_number(x, n) {\n if (n % 1) {\n throw new TypeError(NO_INT);\n }\n return x.round(n);\n },\n 'Fraction, BigNumber': function Fraction_BigNumber(x, n) {\n if (!n.isInteger()) {\n throw new TypeError(NO_INT);\n }\n return x.round(n.toNumber());\n },\n 'Unit, number, Unit': typed.referToSelf(self => function (x, n, unit) {\n var valueless = x.toNumeric(unit);\n return unit.multiply(self(valueless, n));\n }),\n 'Unit, BigNumber, Unit': typed.referToSelf(self => (x, n, unit) => self(x, n.toNumber(), unit)),\n 'Array | Matrix, number | BigNumber, Unit': typed.referToSelf(self => (x, n, unit) => {\n // deep map collection, skip zeros since round(0) = 0\n return deepMap(x, value => self(value, n, unit), true);\n }),\n 'Array | Matrix | Unit, Unit': typed.referToSelf(self => (x, unit) => self(x, 0, unit)),\n 'Array | Matrix': typed.referToSelf(self => x => {\n // deep map collection, skip zeros since round(0) = 0\n return deepMap(x, self, true);\n }),\n 'SparseMatrix, number | BigNumber': typed.referToSelf(self => (x, n) => {\n return matAlgo11xS0s(x, n, self, false);\n }),\n 'DenseMatrix, number | BigNumber': typed.referToSelf(self => (x, n) => {\n return matAlgo14xDs(x, n, self, false);\n }),\n 'Array, number | BigNumber': typed.referToSelf(self => (x, n) => {\n // use matrix implementation\n return matAlgo14xDs(matrix(x), n, self, false).valueOf();\n }),\n 'number | Complex | BigNumber | Fraction, SparseMatrix': typed.referToSelf(self => (x, n) => {\n // check scalar is zero\n if (equalScalar(x, 0)) {\n // do not execute algorithm, result will be a zero matrix\n return zeros(n.size(), n.storage());\n }\n return matAlgo12xSfs(n, x, self, true);\n }),\n 'number | Complex | BigNumber | Fraction, DenseMatrix': typed.referToSelf(self => (x, n) => {\n // check scalar is zero\n if (equalScalar(x, 0)) {\n // do not execute algorithm, result will be a zero matrix\n return zeros(n.size(), n.storage());\n }\n return matAlgo14xDs(n, x, self, true);\n }),\n 'number | Complex | BigNumber | Fraction, Array': typed.referToSelf(self => (x, n) => {\n // use matrix implementation\n return matAlgo14xDs(matrix(n), x, self, true).valueOf();\n })\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { logNumber } from '../../plain/number/index.js';\nvar name = 'log';\nvar dependencies = ['config', 'typed', 'typeOf', 'divideScalar', 'Complex'];\nexport var createLog = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n typeOf,\n config,\n divideScalar,\n Complex\n } = _ref;\n /**\n * Calculate the logarithm of a value.\n *\n * To avoid confusion with the matrix logarithm, this function does not\n * apply to matrices.\n *\n * Syntax:\n *\n * math.log(x)\n * math.log(x, base)\n *\n * Examples:\n *\n * math.log(3.5) // returns 1.252762968495368\n * math.exp(math.log(2.4)) // returns 2.4\n *\n * math.pow(10, 4) // returns 10000\n * math.log(10000, 10) // returns 4\n * math.log(10000) / math.log(10) // returns 4\n *\n * math.log(1024, 2) // returns 10\n * math.pow(2, 10) // returns 1024\n *\n * See also:\n *\n * exp, log2, log10, log1p\n *\n * @param {number | BigNumber | Fraction | Complex} x\n * Value for which to calculate the logarithm.\n * @param {number | BigNumber | Fraction | Complex} [base=e]\n * Optional base for the logarithm. If not provided, the natural\n * logarithm of `x` is calculated.\n * @return {number | BigNumber | Fraction | Complex}\n * Returns the logarithm of `x`\n */\n return typed(name, {\n number: function number(x) {\n if (x >= 0 || config.predictable) {\n return logNumber(x);\n } else {\n // negative value -> complex value computation\n return new Complex(x, 0).log();\n }\n },\n Complex: function Complex(x) {\n return x.log();\n },\n BigNumber: function BigNumber(x) {\n if (!x.isNegative() || config.predictable) {\n return x.ln();\n } else {\n // downgrade to number, return Complex valued result\n return new Complex(x.toNumber(), 0).log();\n }\n },\n 'any, any': typed.referToSelf(self => (x, base) => {\n // calculate logarithm for a specified base, log(x, base)\n\n if (typeOf(x) === 'Fraction' && typeOf(base) === 'Fraction') {\n var result = x.log(base);\n if (result !== null) {\n return result;\n }\n }\n return divideScalar(self(x), self(base));\n })\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { deepMap } from '../../utils/collection.js';\nimport { log1p as _log1p } from '../../utils/number.js';\nvar name = 'log1p';\nvar dependencies = ['typed', 'config', 'divideScalar', 'log', 'Complex'];\nexport var createLog1p = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n divideScalar,\n log,\n Complex\n } = _ref;\n /**\n * Calculate the logarithm of a `value+1`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.log1p(x)\n * math.log1p(x, base)\n *\n * Examples:\n *\n * math.log1p(2.5) // returns 1.252762968495368\n * math.exp(math.log1p(1.4)) // returns 2.4\n *\n * math.pow(10, 4) // returns 10000\n * math.log1p(9999, 10) // returns 4\n * math.log1p(9999) / math.log(10) // returns 4\n *\n * See also:\n *\n * exp, log, log2, log10\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x\n * Value for which to calculate the logarithm of `x+1`.\n * @param {number | BigNumber | Complex} [base=e]\n * Optional base for the logarithm. If not provided, the natural\n * logarithm of `x+1` is calculated.\n * @return {number | BigNumber | Complex | Array | Matrix}\n * Returns the logarithm of `x+1`\n */\n return typed(name, {\n number: function number(x) {\n if (x >= -1 || config.predictable) {\n return _log1p(x);\n } else {\n // negative value -> complex value computation\n return _log1pComplex(new Complex(x, 0));\n }\n },\n Complex: _log1pComplex,\n BigNumber: function BigNumber(x) {\n var y = x.plus(1);\n if (!y.isNegative() || config.predictable) {\n return y.ln();\n } else {\n // downgrade to number, return Complex valued result\n return _log1pComplex(new Complex(x.toNumber(), 0));\n }\n },\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self)),\n 'any, any': typed.referToSelf(self => (x, base) => {\n // calculate logarithm for a specified base, log1p(x, base)\n return divideScalar(self(x), log(base));\n })\n });\n\n /**\n * Calculate the natural logarithm of a complex number + 1\n * @param {Complex} x\n * @returns {Complex}\n * @private\n */\n function _log1pComplex(x) {\n var xRe1p = x.re + 1;\n return new Complex(Math.log(Math.sqrt(xRe1p * xRe1p + x.im * x.im)), Math.atan2(x.im, xRe1p));\n }\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'nthRoots';\nvar dependencies = ['config', 'typed', 'divideScalar', 'Complex'];\nexport var createNthRoots = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n divideScalar,\n Complex\n } = _ref;\n /**\n * Each function here returns a real multiple of i as a Complex value.\n * @param {number} val\n * @return {Complex} val, i*val, -val or -i*val for index 0, 1, 2, 3\n */\n // This is used to fix float artifacts for zero-valued components.\n var _calculateExactResult = [function realPos(val) {\n return new Complex(val, 0);\n }, function imagPos(val) {\n return new Complex(0, val);\n }, function realNeg(val) {\n return new Complex(-val, 0);\n }, function imagNeg(val) {\n return new Complex(0, -val);\n }];\n\n /**\n * Calculate the nth root of a Complex Number a using De Movire's Theorem.\n * @param {Complex} a\n * @param {number} root\n * @return {Array} array of n Complex Roots\n */\n function _nthComplexRoots(a, root) {\n if (root < 0) throw new Error('Root must be greater than zero');\n if (root === 0) throw new Error('Root must be non-zero');\n if (root % 1 !== 0) throw new Error('Root must be an integer');\n if (a === 0 || a.abs() === 0) return [new Complex(0, 0)];\n var aIsNumeric = typeof a === 'number';\n var offset;\n // determine the offset (argument of a)/(pi/2)\n if (aIsNumeric || a.re === 0 || a.im === 0) {\n if (aIsNumeric) {\n offset = 2 * +(a < 0); // numeric value on the real axis\n } else if (a.im === 0) {\n offset = 2 * +(a.re < 0); // complex value on the real axis\n } else {\n offset = 2 * +(a.im < 0) + 1; // complex value on the imaginary axis\n }\n }\n var arg = a.arg();\n var abs = a.abs();\n var roots = [];\n var r = Math.pow(abs, 1 / root);\n for (var k = 0; k < root; k++) {\n var halfPiFactor = (offset + 4 * k) / root;\n /**\n * If (offset + 4*k)/root is an integral multiple of pi/2\n * then we can produce a more exact result.\n */\n if (halfPiFactor === Math.round(halfPiFactor)) {\n roots.push(_calculateExactResult[halfPiFactor % 4](r));\n continue;\n }\n roots.push(new Complex({\n r,\n phi: (arg + 2 * Math.PI * k) / root\n }));\n }\n return roots;\n }\n\n /**\n * Calculate the nth roots of a value.\n * An nth root of a positive real number A,\n * is a positive real solution of the equation \"x^root = A\".\n * This function returns an array of complex values.\n *\n * Syntax:\n *\n * math.nthRoots(x)\n * math.nthRoots(x, root)\n *\n * Examples:\n *\n * math.nthRoots(1)\n * // returns [\n * // {re: 1, im: 0},\n * // {re: -1, im: 0}\n * // ]\n * math.nthRoots(1, 3)\n * // returns [\n * // { re: 1, im: 0 },\n * // { re: -0.4999999999999998, im: 0.8660254037844387 },\n * // { re: -0.5000000000000004, im: -0.8660254037844385 }\n * // ]\n *\n * See also:\n *\n * nthRoot, pow, sqrt\n *\n * @param {number | BigNumber | Fraction | Complex} x Number to be rounded\n * @param {number} [root=2] Optional root, default value is 2\n * @return {number | BigNumber | Fraction | Complex} Returns the nth roots\n */\n return typed(name, {\n Complex: function Complex(x) {\n return _nthComplexRoots(x, 2);\n },\n 'Complex, number': _nthComplexRoots\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo07xSSf } from '../../type/matrix/utils/matAlgo07xSSf.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nvar name = 'dotPow';\nvar dependencies = ['typed', 'equalScalar', 'matrix', 'pow', 'DenseMatrix', 'concat', 'SparseMatrix'];\nexport var createDotPow = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar,\n matrix,\n pow,\n DenseMatrix,\n concat,\n SparseMatrix\n } = _ref;\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo07xSSf = createMatAlgo07xSSf({\n typed,\n SparseMatrix\n });\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n var powScalarSignatures = {};\n for (var signature in pow.signatures) {\n if (Object.prototype.hasOwnProperty.call(pow.signatures, signature)) {\n if (!signature.includes('Matrix') && !signature.includes('Array')) {\n powScalarSignatures[signature] = pow.signatures[signature];\n }\n }\n }\n var powScalar = typed(powScalarSignatures);\n\n /**\n * Calculates the power of x to y element wise.\n *\n * Syntax:\n *\n * math.dotPow(x, y)\n *\n * Examples:\n *\n * math.dotPow(2, 3) // returns number 8\n *\n * const a = [[1, 2], [4, 3]]\n * math.dotPow(a, 2) // returns Array [[1, 4], [16, 9]]\n * math.pow(a, 2) // returns Array [[9, 8], [16, 17]]\n *\n * See also:\n *\n * pow, sqrt, multiply\n *\n * @param {number | BigNumber | Complex | Unit | Array | Matrix} x The base\n * @param {number | BigNumber | Complex | Unit | Array | Matrix} y The exponent\n * @return {number | BigNumber | Complex | Unit | Array | Matrix} The value of `x` to the power `y`\n */\n return typed(name, matrixAlgorithmSuite({\n elop: powScalar,\n SS: matAlgo07xSSf,\n DS: matAlgo03xDSf,\n Ss: matAlgo11xS0s,\n sS: matAlgo12xSfs\n }));\n});", "import { factory } from '../../utils/factory.js';\nimport { createMatAlgo02xDS0 } from '../../type/matrix/utils/matAlgo02xDS0.js';\nimport { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo07xSSf } from '../../type/matrix/utils/matAlgo07xSSf.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nvar name = 'dotDivide';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'divideScalar', 'DenseMatrix', 'concat', 'SparseMatrix'];\nexport var createDotDivide = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n divideScalar,\n DenseMatrix,\n concat,\n SparseMatrix\n } = _ref;\n var matAlgo02xDS0 = createMatAlgo02xDS0({\n typed,\n equalScalar\n });\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo07xSSf = createMatAlgo07xSSf({\n typed,\n SparseMatrix\n });\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Divide two matrices element wise. The function accepts both matrices and\n * scalar values.\n *\n * Syntax:\n *\n * math.dotDivide(x, y)\n *\n * Examples:\n *\n * math.dotDivide(2, 4) // returns 0.5\n *\n * a = [[9, 5], [6, 1]]\n * b = [[3, 2], [5, 2]]\n *\n * math.dotDivide(a, b) // returns [[3, 2.5], [1.2, 0.5]]\n * math.divide(a, b) // returns [[1.75, 0.75], [-1.75, 2.25]]\n *\n * See also:\n *\n * divide, multiply, dotMultiply\n *\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x Numerator\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} y Denominator\n * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} Quotient, `x ./ y`\n */\n return typed(name, matrixAlgorithmSuite({\n elop: divideScalar,\n SS: matAlgo07xSSf,\n DS: matAlgo03xDSf,\n SD: matAlgo02xDS0,\n Ss: matAlgo11xS0s,\n sS: matAlgo12xSfs\n }));\n});", "import { isArray, isMatrix, isDenseMatrix, isSparseMatrix } from '../../../../utils/is.js';\nimport { arraySize } from '../../../../utils/array.js';\nimport { format } from '../../../../utils/string.js';\nexport function createSolveValidation(_ref) {\n var {\n DenseMatrix\n } = _ref;\n /**\n * Validates matrix and column vector b for backward/forward substitution algorithms.\n *\n * @param {Matrix} m An N x N matrix\n * @param {Array | Matrix} b A column vector\n * @param {Boolean} copy Return a copy of vector b\n *\n * @return {DenseMatrix} Dense column vector b\n */\n return function solveValidation(m, b, copy) {\n var mSize = m.size();\n if (mSize.length !== 2) {\n throw new RangeError('Matrix must be two dimensional (size: ' + format(mSize) + ')');\n }\n var rows = mSize[0];\n var columns = mSize[1];\n if (rows !== columns) {\n throw new RangeError('Matrix must be square (size: ' + format(mSize) + ')');\n }\n var data = [];\n if (isMatrix(b)) {\n var bSize = b.size();\n var bdata = b._data;\n\n // 1-dim vector\n if (bSize.length === 1) {\n if (bSize[0] !== rows) {\n throw new RangeError('Dimension mismatch. Matrix columns must match vector length.');\n }\n for (var i = 0; i < rows; i++) {\n data[i] = [bdata[i]];\n }\n return new DenseMatrix({\n data,\n size: [rows, 1],\n datatype: b._datatype\n });\n }\n\n // 2-dim column\n if (bSize.length === 2) {\n if (bSize[0] !== rows || bSize[1] !== 1) {\n throw new RangeError('Dimension mismatch. Matrix columns must match vector length.');\n }\n if (isDenseMatrix(b)) {\n if (copy) {\n data = [];\n for (var _i = 0; _i < rows; _i++) {\n data[_i] = [bdata[_i][0]];\n }\n return new DenseMatrix({\n data,\n size: [rows, 1],\n datatype: b._datatype\n });\n }\n return b;\n }\n if (isSparseMatrix(b)) {\n for (var _i2 = 0; _i2 < rows; _i2++) {\n data[_i2] = [0];\n }\n var values = b._values;\n var index = b._index;\n var ptr = b._ptr;\n for (var k1 = ptr[1], k = ptr[0]; k < k1; k++) {\n var _i3 = index[k];\n data[_i3][0] = values[k];\n }\n return new DenseMatrix({\n data,\n size: [rows, 1],\n datatype: b._datatype\n });\n }\n }\n throw new RangeError('Dimension mismatch. The right side has to be either 1- or 2-dimensional vector.');\n }\n if (isArray(b)) {\n var bsize = arraySize(b);\n if (bsize.length === 1) {\n if (bsize[0] !== rows) {\n throw new RangeError('Dimension mismatch. Matrix columns must match vector length.');\n }\n for (var _i4 = 0; _i4 < rows; _i4++) {\n data[_i4] = [b[_i4]];\n }\n return new DenseMatrix({\n data,\n size: [rows, 1]\n });\n }\n if (bsize.length === 2) {\n if (bsize[0] !== rows || bsize[1] !== 1) {\n throw new RangeError('Dimension mismatch. Matrix columns must match vector length.');\n }\n for (var _i5 = 0; _i5 < rows; _i5++) {\n data[_i5] = [b[_i5][0]];\n }\n return new DenseMatrix({\n data,\n size: [rows, 1]\n });\n }\n throw new RangeError('Dimension mismatch. The right side has to be either 1- or 2-dimensional vector.');\n }\n };\n}", "import { factory } from '../../../utils/factory.js';\nimport { createSolveValidation } from './utils/solveValidation.js';\nvar name = 'lsolve';\nvar dependencies = ['typed', 'matrix', 'divideScalar', 'multiplyScalar', 'subtractScalar', 'equalScalar', 'DenseMatrix'];\nexport var createLsolve = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n divideScalar,\n multiplyScalar,\n subtractScalar,\n equalScalar,\n DenseMatrix\n } = _ref;\n var solveValidation = createSolveValidation({\n DenseMatrix\n });\n\n /**\n * Finds one solution of a linear equation system by forwards substitution. Matrix must be a lower triangular matrix. Throws an error if there's no solution.\n *\n * `L * x = b`\n *\n * Syntax:\n *\n * math.lsolve(L, b)\n *\n * Examples:\n *\n * const a = [[-2, 3], [2, 1]]\n * const b = [11, 9]\n * const x = lsolve(a, b) // [[-5.5], [20]]\n *\n * See also:\n *\n * lsolveAll, lup, slu, usolve, lusolve\n *\n * @param {Matrix, Array} L A N x N matrix or array (L)\n * @param {Matrix, Array} b A column vector with the b values\n *\n * @return {DenseMatrix | Array} A column vector with the linear system solution (x)\n */\n return typed(name, {\n 'SparseMatrix, Array | Matrix': function SparseMatrix_Array__Matrix(m, b) {\n return _sparseForwardSubstitution(m, b);\n },\n 'DenseMatrix, Array | Matrix': function DenseMatrix_Array__Matrix(m, b) {\n return _denseForwardSubstitution(m, b);\n },\n 'Array, Array | Matrix': function Array_Array__Matrix(a, b) {\n var m = matrix(a);\n var r = _denseForwardSubstitution(m, b);\n return r.valueOf();\n }\n });\n function _denseForwardSubstitution(m, b) {\n // validate matrix and vector, return copy of column vector b\n b = solveValidation(m, b, true);\n var bdata = b._data;\n var rows = m._size[0];\n var columns = m._size[1];\n\n // result\n var x = [];\n var mdata = m._data;\n\n // loop columns\n for (var j = 0; j < columns; j++) {\n var bj = bdata[j][0] || 0;\n var xj = void 0;\n if (!equalScalar(bj, 0)) {\n // non-degenerate row, find solution\n\n var vjj = mdata[j][j];\n if (equalScalar(vjj, 0)) {\n throw new Error('Linear system cannot be solved since matrix is singular');\n }\n xj = divideScalar(bj, vjj);\n\n // loop rows\n for (var i = j + 1; i < rows; i++) {\n bdata[i] = [subtractScalar(bdata[i][0] || 0, multiplyScalar(xj, mdata[i][j]))];\n }\n } else {\n // degenerate row, we can choose any value\n xj = 0;\n }\n x[j] = [xj];\n }\n return new DenseMatrix({\n data: x,\n size: [rows, 1]\n });\n }\n function _sparseForwardSubstitution(m, b) {\n // validate matrix and vector, return copy of column vector b\n b = solveValidation(m, b, true);\n var bdata = b._data;\n var rows = m._size[0];\n var columns = m._size[1];\n var values = m._values;\n var index = m._index;\n var ptr = m._ptr;\n\n // result\n var x = [];\n\n // loop columns\n for (var j = 0; j < columns; j++) {\n var bj = bdata[j][0] || 0;\n if (!equalScalar(bj, 0)) {\n // non-degenerate row, find solution\n\n var vjj = 0;\n // matrix values & indices (column j)\n var jValues = [];\n var jIndices = [];\n\n // first and last index in the column\n var firstIndex = ptr[j];\n var lastIndex = ptr[j + 1];\n\n // values in column, find value at [j, j]\n for (var k = firstIndex; k < lastIndex; k++) {\n var i = index[k];\n\n // check row (rows are not sorted!)\n if (i === j) {\n vjj = values[k];\n } else if (i > j) {\n // store lower triangular\n jValues.push(values[k]);\n jIndices.push(i);\n }\n }\n\n // at this point we must have a value in vjj\n if (equalScalar(vjj, 0)) {\n throw new Error('Linear system cannot be solved since matrix is singular');\n }\n var xj = divideScalar(bj, vjj);\n for (var _k = 0, l = jIndices.length; _k < l; _k++) {\n var _i = jIndices[_k];\n bdata[_i] = [subtractScalar(bdata[_i][0] || 0, multiplyScalar(xj, jValues[_k]))];\n }\n x[j] = [xj];\n } else {\n // degenerate row, we can choose any value\n x[j] = [0];\n }\n }\n return new DenseMatrix({\n data: x,\n size: [rows, 1]\n });\n }\n});", "import { factory } from '../../../utils/factory.js';\nimport { createSolveValidation } from './utils/solveValidation.js';\nvar name = 'usolve';\nvar dependencies = ['typed', 'matrix', 'divideScalar', 'multiplyScalar', 'subtractScalar', 'equalScalar', 'DenseMatrix'];\nexport var createUsolve = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n divideScalar,\n multiplyScalar,\n subtractScalar,\n equalScalar,\n DenseMatrix\n } = _ref;\n var solveValidation = createSolveValidation({\n DenseMatrix\n });\n\n /**\n * Finds one solution of a linear equation system by backward substitution. Matrix must be an upper triangular matrix. Throws an error if there's no solution.\n *\n * `U * x = b`\n *\n * Syntax:\n *\n * math.usolve(U, b)\n *\n * Examples:\n *\n * const a = [[-2, 3], [2, 1]]\n * const b = [11, 9]\n * const x = usolve(a, b) // [[8], [9]]\n *\n * See also:\n *\n * usolveAll, lup, slu, usolve, lusolve\n *\n * @param {Matrix, Array} U A N x N matrix or array (U)\n * @param {Matrix, Array} b A column vector with the b values\n *\n * @return {DenseMatrix | Array} A column vector with the linear system solution (x)\n */\n return typed(name, {\n 'SparseMatrix, Array | Matrix': function SparseMatrix_Array__Matrix(m, b) {\n return _sparseBackwardSubstitution(m, b);\n },\n 'DenseMatrix, Array | Matrix': function DenseMatrix_Array__Matrix(m, b) {\n return _denseBackwardSubstitution(m, b);\n },\n 'Array, Array | Matrix': function Array_Array__Matrix(a, b) {\n var m = matrix(a);\n var r = _denseBackwardSubstitution(m, b);\n return r.valueOf();\n }\n });\n function _denseBackwardSubstitution(m, b) {\n // make b into a column vector\n b = solveValidation(m, b, true);\n var bdata = b._data;\n var rows = m._size[0];\n var columns = m._size[1];\n\n // result\n var x = [];\n var mdata = m._data;\n // loop columns backwards\n for (var j = columns - 1; j >= 0; j--) {\n // b[j]\n var bj = bdata[j][0] || 0;\n // x[j]\n var xj = void 0;\n if (!equalScalar(bj, 0)) {\n // value at [j, j]\n var vjj = mdata[j][j];\n if (equalScalar(vjj, 0)) {\n // system cannot be solved\n throw new Error('Linear system cannot be solved since matrix is singular');\n }\n xj = divideScalar(bj, vjj);\n\n // loop rows\n for (var i = j - 1; i >= 0; i--) {\n // update copy of b\n bdata[i] = [subtractScalar(bdata[i][0] || 0, multiplyScalar(xj, mdata[i][j]))];\n }\n } else {\n // zero value at j\n xj = 0;\n }\n // update x\n x[j] = [xj];\n }\n return new DenseMatrix({\n data: x,\n size: [rows, 1]\n });\n }\n function _sparseBackwardSubstitution(m, b) {\n // make b into a column vector\n b = solveValidation(m, b, true);\n var bdata = b._data;\n var rows = m._size[0];\n var columns = m._size[1];\n var values = m._values;\n var index = m._index;\n var ptr = m._ptr;\n\n // result\n var x = [];\n\n // loop columns backwards\n for (var j = columns - 1; j >= 0; j--) {\n var bj = bdata[j][0] || 0;\n if (!equalScalar(bj, 0)) {\n // non-degenerate row, find solution\n\n var vjj = 0;\n\n // upper triangular matrix values & index (column j)\n var jValues = [];\n var jIndices = [];\n\n // first & last indeces in column\n var firstIndex = ptr[j];\n var lastIndex = ptr[j + 1];\n\n // values in column, find value at [j, j], loop backwards\n for (var k = lastIndex - 1; k >= firstIndex; k--) {\n var i = index[k];\n\n // check row (rows are not sorted!)\n if (i === j) {\n vjj = values[k];\n } else if (i < j) {\n // store upper triangular\n jValues.push(values[k]);\n jIndices.push(i);\n }\n }\n\n // at this point we must have a value in vjj\n if (equalScalar(vjj, 0)) {\n throw new Error('Linear system cannot be solved since matrix is singular');\n }\n var xj = divideScalar(bj, vjj);\n for (var _k = 0, _lastIndex = jIndices.length; _k < _lastIndex; _k++) {\n var _i = jIndices[_k];\n bdata[_i] = [subtractScalar(bdata[_i][0], multiplyScalar(xj, jValues[_k]))];\n }\n x[j] = [xj];\n } else {\n // degenerate row, we can choose any value\n x[j] = [0];\n }\n }\n return new DenseMatrix({\n data: x,\n size: [rows, 1]\n });\n }\n});", "import { factory } from '../../../utils/factory.js';\nimport { createSolveValidation } from './utils/solveValidation.js';\nvar name = 'lsolveAll';\nvar dependencies = ['typed', 'matrix', 'divideScalar', 'multiplyScalar', 'subtractScalar', 'equalScalar', 'DenseMatrix'];\nexport var createLsolveAll = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n divideScalar,\n multiplyScalar,\n subtractScalar,\n equalScalar,\n DenseMatrix\n } = _ref;\n var solveValidation = createSolveValidation({\n DenseMatrix\n });\n\n /**\n * Finds all solutions of a linear equation system by forwards substitution. Matrix must be a lower triangular matrix.\n *\n * `L * x = b`\n *\n * Syntax:\n *\n * math.lsolveAll(L, b)\n *\n * Examples:\n *\n * const a = [[-2, 3], [2, 1]]\n * const b = [11, 9]\n * const x = lsolveAll(a, b) // [ [[-5.5], [20]] ]\n *\n * See also:\n *\n * lsolve, lup, slu, usolve, lusolve\n *\n * @param {Matrix, Array} L A N x N matrix or array (L)\n * @param {Matrix, Array} b A column vector with the b values\n *\n * @return {DenseMatrix[] | Array[]} An array of affine-independent column vectors (x) that solve the linear system\n */\n return typed(name, {\n 'SparseMatrix, Array | Matrix': function SparseMatrix_Array__Matrix(m, b) {\n return _sparseForwardSubstitution(m, b);\n },\n 'DenseMatrix, Array | Matrix': function DenseMatrix_Array__Matrix(m, b) {\n return _denseForwardSubstitution(m, b);\n },\n 'Array, Array | Matrix': function Array_Array__Matrix(a, b) {\n var m = matrix(a);\n var R = _denseForwardSubstitution(m, b);\n return R.map(r => r.valueOf());\n }\n });\n function _denseForwardSubstitution(m, b_) {\n // the algorithm is derived from\n // https://www.overleaf.com/read/csvgqdxggyjv\n\n // array of right-hand sides\n var B = [solveValidation(m, b_, true)._data.map(e => e[0])];\n var M = m._data;\n var rows = m._size[0];\n var columns = m._size[1];\n\n // loop columns\n for (var i = 0; i < columns; i++) {\n var L = B.length;\n\n // loop right-hand sides\n for (var k = 0; k < L; k++) {\n var b = B[k];\n if (!equalScalar(M[i][i], 0)) {\n // non-singular row\n\n b[i] = divideScalar(b[i], M[i][i]);\n for (var j = i + 1; j < columns; j++) {\n // b[j] -= b[i] * M[j,i]\n b[j] = subtractScalar(b[j], multiplyScalar(b[i], M[j][i]));\n }\n } else if (!equalScalar(b[i], 0)) {\n // singular row, nonzero RHS\n\n if (k === 0) {\n // There is no valid solution\n return [];\n } else {\n // This RHS is invalid but other solutions may still exist\n B.splice(k, 1);\n k -= 1;\n L -= 1;\n }\n } else if (k === 0) {\n // singular row, RHS is zero\n\n var bNew = [...b];\n bNew[i] = 1;\n for (var _j = i + 1; _j < columns; _j++) {\n bNew[_j] = subtractScalar(bNew[_j], M[_j][i]);\n }\n B.push(bNew);\n }\n }\n }\n return B.map(x => new DenseMatrix({\n data: x.map(e => [e]),\n size: [rows, 1]\n }));\n }\n function _sparseForwardSubstitution(m, b_) {\n // array of right-hand sides\n var B = [solveValidation(m, b_, true)._data.map(e => e[0])];\n var rows = m._size[0];\n var columns = m._size[1];\n var values = m._values;\n var index = m._index;\n var ptr = m._ptr;\n\n // loop columns\n for (var i = 0; i < columns; i++) {\n var L = B.length;\n\n // loop right-hand sides\n for (var k = 0; k < L; k++) {\n var b = B[k];\n\n // values & indices (column i)\n var iValues = [];\n var iIndices = [];\n\n // first & last indeces in column\n var firstIndex = ptr[i];\n var lastIndex = ptr[i + 1];\n\n // find the value at [i, i]\n var Mii = 0;\n for (var j = firstIndex; j < lastIndex; j++) {\n var J = index[j];\n // check row\n if (J === i) {\n Mii = values[j];\n } else if (J > i) {\n // store lower triangular\n iValues.push(values[j]);\n iIndices.push(J);\n }\n }\n if (!equalScalar(Mii, 0)) {\n // non-singular row\n\n b[i] = divideScalar(b[i], Mii);\n for (var _j2 = 0, _lastIndex = iIndices.length; _j2 < _lastIndex; _j2++) {\n var _J = iIndices[_j2];\n b[_J] = subtractScalar(b[_J], multiplyScalar(b[i], iValues[_j2]));\n }\n } else if (!equalScalar(b[i], 0)) {\n // singular row, nonzero RHS\n\n if (k === 0) {\n // There is no valid solution\n return [];\n } else {\n // This RHS is invalid but other solutions may still exist\n B.splice(k, 1);\n k -= 1;\n L -= 1;\n }\n } else if (k === 0) {\n // singular row, RHS is zero\n\n var bNew = [...b];\n bNew[i] = 1;\n for (var _j3 = 0, _lastIndex2 = iIndices.length; _j3 < _lastIndex2; _j3++) {\n var _J2 = iIndices[_j3];\n bNew[_J2] = subtractScalar(bNew[_J2], iValues[_j3]);\n }\n B.push(bNew);\n }\n }\n }\n return B.map(x => new DenseMatrix({\n data: x.map(e => [e]),\n size: [rows, 1]\n }));\n }\n});", "import { factory } from '../../../utils/factory.js';\nimport { createSolveValidation } from './utils/solveValidation.js';\nvar name = 'usolveAll';\nvar dependencies = ['typed', 'matrix', 'divideScalar', 'multiplyScalar', 'subtractScalar', 'equalScalar', 'DenseMatrix'];\nexport var createUsolveAll = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n divideScalar,\n multiplyScalar,\n subtractScalar,\n equalScalar,\n DenseMatrix\n } = _ref;\n var solveValidation = createSolveValidation({\n DenseMatrix\n });\n\n /**\n * Finds all solutions of a linear equation system by backward substitution. Matrix must be an upper triangular matrix.\n *\n * `U * x = b`\n *\n * Syntax:\n *\n * math.usolveAll(U, b)\n *\n * Examples:\n *\n * const a = [[-2, 3], [2, 1]]\n * const b = [11, 9]\n * const x = usolveAll(a, b) // [ [[8], [9]] ]\n *\n * See also:\n *\n * usolve, lup, slu, usolve, lusolve\n *\n * @param {Matrix, Array} U A N x N matrix or array (U)\n * @param {Matrix, Array} b A column vector with the b values\n *\n * @return {DenseMatrix[] | Array[]} An array of affine-independent column vectors (x) that solve the linear system\n */\n return typed(name, {\n 'SparseMatrix, Array | Matrix': function SparseMatrix_Array__Matrix(m, b) {\n return _sparseBackwardSubstitution(m, b);\n },\n 'DenseMatrix, Array | Matrix': function DenseMatrix_Array__Matrix(m, b) {\n return _denseBackwardSubstitution(m, b);\n },\n 'Array, Array | Matrix': function Array_Array__Matrix(a, b) {\n var m = matrix(a);\n var R = _denseBackwardSubstitution(m, b);\n return R.map(r => r.valueOf());\n }\n });\n function _denseBackwardSubstitution(m, b_) {\n // the algorithm is derived from\n // https://www.overleaf.com/read/csvgqdxggyjv\n\n // array of right-hand sides\n var B = [solveValidation(m, b_, true)._data.map(e => e[0])];\n var M = m._data;\n var rows = m._size[0];\n var columns = m._size[1];\n\n // loop columns backwards\n for (var i = columns - 1; i >= 0; i--) {\n var L = B.length;\n\n // loop right-hand sides\n for (var k = 0; k < L; k++) {\n var b = B[k];\n if (!equalScalar(M[i][i], 0)) {\n // non-singular row\n\n b[i] = divideScalar(b[i], M[i][i]);\n for (var j = i - 1; j >= 0; j--) {\n // b[j] -= b[i] * M[j,i]\n b[j] = subtractScalar(b[j], multiplyScalar(b[i], M[j][i]));\n }\n } else if (!equalScalar(b[i], 0)) {\n // singular row, nonzero RHS\n\n if (k === 0) {\n // There is no valid solution\n return [];\n } else {\n // This RHS is invalid but other solutions may still exist\n B.splice(k, 1);\n k -= 1;\n L -= 1;\n }\n } else if (k === 0) {\n // singular row, RHS is zero\n\n var bNew = [...b];\n bNew[i] = 1;\n for (var _j = i - 1; _j >= 0; _j--) {\n bNew[_j] = subtractScalar(bNew[_j], M[_j][i]);\n }\n B.push(bNew);\n }\n }\n }\n return B.map(x => new DenseMatrix({\n data: x.map(e => [e]),\n size: [rows, 1]\n }));\n }\n function _sparseBackwardSubstitution(m, b_) {\n // array of right-hand sides\n var B = [solveValidation(m, b_, true)._data.map(e => e[0])];\n var rows = m._size[0];\n var columns = m._size[1];\n var values = m._values;\n var index = m._index;\n var ptr = m._ptr;\n\n // loop columns backwards\n for (var i = columns - 1; i >= 0; i--) {\n var L = B.length;\n\n // loop right-hand sides\n for (var k = 0; k < L; k++) {\n var b = B[k];\n\n // values & indices (column i)\n var iValues = [];\n var iIndices = [];\n\n // first & last indeces in column\n var firstIndex = ptr[i];\n var lastIndex = ptr[i + 1];\n\n // find the value at [i, i]\n var Mii = 0;\n for (var j = lastIndex - 1; j >= firstIndex; j--) {\n var J = index[j];\n // check row\n if (J === i) {\n Mii = values[j];\n } else if (J < i) {\n // store upper triangular\n iValues.push(values[j]);\n iIndices.push(J);\n }\n }\n if (!equalScalar(Mii, 0)) {\n // non-singular row\n\n b[i] = divideScalar(b[i], Mii);\n\n // loop upper triangular\n for (var _j2 = 0, _lastIndex = iIndices.length; _j2 < _lastIndex; _j2++) {\n var _J = iIndices[_j2];\n b[_J] = subtractScalar(b[_J], multiplyScalar(b[i], iValues[_j2]));\n }\n } else if (!equalScalar(b[i], 0)) {\n // singular row, nonzero RHS\n\n if (k === 0) {\n // There is no valid solution\n return [];\n } else {\n // This RHS is invalid but other solutions may still exist\n B.splice(k, 1);\n k -= 1;\n L -= 1;\n }\n } else if (k === 0) {\n // singular row, RHS is zero\n\n var bNew = [...b];\n bNew[i] = 1;\n\n // loop upper triangular\n for (var _j3 = 0, _lastIndex2 = iIndices.length; _j3 < _lastIndex2; _j3++) {\n var _J2 = iIndices[_j3];\n bNew[_J2] = subtractScalar(bNew[_J2], iValues[_j3]);\n }\n B.push(bNew);\n }\n }\n }\n return B.map(x => new DenseMatrix({\n data: x.map(e => [e]),\n size: [rows, 1]\n }));\n }\n});", "import { factory } from '../../../utils/factory.js';\nimport { DimensionError } from '../../../error/DimensionError.js';\nvar name = 'matAlgo08xS0Sid';\nvar dependencies = ['typed', 'equalScalar'];\nexport var createMatAlgo08xS0Sid = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equalScalar\n } = _ref;\n /**\n * Iterates over SparseMatrix A and SparseMatrix B nonzero items and invokes the callback function f(Aij, Bij).\n * Callback function invoked MAX(NNZA, NNZB) times\n *\n *\n * \u250C f(Aij, Bij) ; A(i,j) !== 0 && B(i,j) !== 0\n * C(i,j) = \u2524 A(i,j) ; A(i,j) !== 0 && B(i,j) === 0\n * \u2514 0 ; otherwise\n *\n *\n * @param {Matrix} a The SparseMatrix instance (A)\n * @param {Matrix} b The SparseMatrix instance (B)\n * @param {Function} callback The f(Aij,Bij) operation to invoke\n *\n * @return {Matrix} SparseMatrix (C)\n *\n * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294\n */\n return function matAlgo08xS0Sid(a, b, callback) {\n // sparse matrix arrays\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n var asize = a._size;\n var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();\n // sparse matrix arrays\n var bvalues = b._values;\n var bindex = b._index;\n var bptr = b._ptr;\n var bsize = b._size;\n var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();\n\n // validate dimensions\n if (asize.length !== bsize.length) {\n throw new DimensionError(asize.length, bsize.length);\n }\n\n // check rows & columns\n if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {\n throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');\n }\n\n // sparse matrix cannot be a Pattern matrix\n if (!avalues || !bvalues) {\n throw new Error('Cannot perform operation on Pattern Sparse Matrices');\n }\n\n // rows & columns\n var rows = asize[0];\n var columns = asize[1];\n\n // datatype\n var dt;\n // equal signature to use\n var eq = equalScalar;\n // zero value\n var zero = 0;\n // callback signature to use\n var cf = callback;\n\n // process data types\n if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {\n // datatype\n dt = adt;\n // find signature that matches (dt, dt)\n eq = typed.find(equalScalar, [dt, dt]);\n // convert 0 to the same datatype\n zero = typed.convert(0, dt);\n // callback\n cf = typed.find(callback, [dt, dt]);\n }\n\n // result arrays\n var cvalues = [];\n var cindex = [];\n var cptr = [];\n\n // workspace\n var x = [];\n // marks indicating we have a value in x for a given column\n var w = [];\n\n // vars\n var k, k0, k1, i;\n\n // loop columns\n for (var j = 0; j < columns; j++) {\n // update cptr\n cptr[j] = cindex.length;\n // columns mark\n var mark = j + 1;\n // loop values in a\n for (k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {\n // row\n i = aindex[k];\n // mark workspace\n w[i] = mark;\n // set value\n x[i] = avalues[k];\n // add index\n cindex.push(i);\n }\n // loop values in b\n for (k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) {\n // row\n i = bindex[k];\n // check value exists in workspace\n if (w[i] === mark) {\n // evaluate callback\n x[i] = cf(x[i], bvalues[k]);\n }\n }\n // initialize first index in j\n k = cptr[j];\n // loop index in j\n while (k < cindex.length) {\n // row\n i = cindex[k];\n // value @ i\n var v = x[i];\n // check for zero value\n if (!eq(v, zero)) {\n // push value\n cvalues.push(v);\n // increment pointer\n k++;\n } else {\n // remove value @ i, do not increment pointer\n cindex.splice(k, 1);\n }\n }\n }\n // update cptr\n cptr[columns] = cindex.length;\n\n // return sparse matrix\n return a.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [rows, columns],\n datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined\n });\n };\n});", "import { factory } from '../../utils/factory.js';\nexport var createUseMatrixForArrayScalar = /* #__PURE__ */factory('useMatrixForArrayScalar', ['typed', 'matrix'], _ref => {\n var {\n typed,\n matrix\n } = _ref;\n return {\n 'Array, number': typed.referTo('DenseMatrix, number', selfDn => (x, y) => selfDn(matrix(x), y).valueOf()),\n 'Array, BigNumber': typed.referTo('DenseMatrix, BigNumber', selfDB => (x, y) => selfDB(matrix(x), y).valueOf()),\n 'number, Array': typed.referTo('number, DenseMatrix', selfnD => (x, y) => selfnD(x, matrix(y)).valueOf()),\n 'BigNumber, Array': typed.referTo('BigNumber, DenseMatrix', selfBD => (x, y) => selfBD(x, matrix(y)).valueOf())\n };\n});", "import { createMatAlgo02xDS0 } from '../../type/matrix/utils/matAlgo02xDS0.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';\nimport { createMatAlgo01xDSid } from '../../type/matrix/utils/matAlgo01xDSid.js';\nimport { createMatAlgo10xSids } from '../../type/matrix/utils/matAlgo10xSids.js';\nimport { createMatAlgo08xS0Sid } from '../../type/matrix/utils/matAlgo08xS0Sid.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { createUseMatrixForArrayScalar } from './useMatrixForArrayScalar.js';\nimport { leftShiftNumber } from '../../plain/number/index.js';\nimport { leftShiftBigNumber } from '../../utils/bignumber/bitwise.js';\nvar name = 'leftShift';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix', 'concat'];\nexport var createLeftShift = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n zeros,\n DenseMatrix,\n concat\n } = _ref;\n var matAlgo01xDSid = createMatAlgo01xDSid({\n typed\n });\n var matAlgo02xDS0 = createMatAlgo02xDS0({\n typed,\n equalScalar\n });\n var matAlgo08xS0Sid = createMatAlgo08xS0Sid({\n typed,\n equalScalar\n });\n var matAlgo10xSids = createMatAlgo10xSids({\n typed,\n DenseMatrix\n });\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matAlgo14xDs = createMatAlgo14xDs({\n typed\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n var useMatrixForArrayScalar = createUseMatrixForArrayScalar({\n typed,\n matrix\n });\n\n /**\n * Bitwise left logical shift of a value x by y number of bits, `x << y`.\n * For matrices, the function is evaluated element wise.\n * For units, the function is evaluated on the best prefix base.\n *\n * Syntax:\n *\n * math.leftShift(x, y)\n *\n * Examples:\n *\n * math.leftShift(1, 2) // returns number 4\n *\n * math.leftShift([1, 2, 4], 4) // returns Array [16, 32, 64]\n *\n * See also:\n *\n * leftShift, bitNot, bitOr, bitXor, rightArithShift, rightLogShift\n *\n * @param {number | BigNumber | bigint | Array | Matrix} x Value to be shifted\n * @param {number | BigNumber | bigint} y Amount of shifts\n * @return {number | BigNumber | bigint | Array | Matrix} `x` shifted left `y` times\n */\n return typed(name, {\n 'number, number': leftShiftNumber,\n 'BigNumber, BigNumber': leftShiftBigNumber,\n 'bigint, bigint': (x, y) => x << y,\n 'SparseMatrix, number | BigNumber': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (equalScalar(y, 0)) {\n return x.clone();\n }\n return matAlgo11xS0s(x, y, self, false);\n }),\n 'DenseMatrix, number | BigNumber': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (equalScalar(y, 0)) {\n return x.clone();\n }\n return matAlgo14xDs(x, y, self, false);\n }),\n 'number | BigNumber, SparseMatrix': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (equalScalar(x, 0)) {\n return zeros(y.size(), y.storage());\n }\n return matAlgo10xSids(y, x, self, true);\n }),\n 'number | BigNumber, DenseMatrix': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (equalScalar(x, 0)) {\n return zeros(y.size(), y.storage());\n }\n return matAlgo14xDs(y, x, self, true);\n })\n }, useMatrixForArrayScalar, matrixAlgorithmSuite({\n SS: matAlgo08xS0Sid,\n DS: matAlgo01xDSid,\n SD: matAlgo02xDS0\n }));\n});", "import { rightArithShiftBigNumber } from '../../utils/bignumber/bitwise.js';\nimport { createMatAlgo02xDS0 } from '../../type/matrix/utils/matAlgo02xDS0.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';\nimport { createMatAlgo01xDSid } from '../../type/matrix/utils/matAlgo01xDSid.js';\nimport { createMatAlgo10xSids } from '../../type/matrix/utils/matAlgo10xSids.js';\nimport { createMatAlgo08xS0Sid } from '../../type/matrix/utils/matAlgo08xS0Sid.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { createUseMatrixForArrayScalar } from './useMatrixForArrayScalar.js';\nimport { rightArithShiftNumber } from '../../plain/number/index.js';\nvar name = 'rightArithShift';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix', 'concat'];\nexport var createRightArithShift = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n zeros,\n DenseMatrix,\n concat\n } = _ref;\n var matAlgo01xDSid = createMatAlgo01xDSid({\n typed\n });\n var matAlgo02xDS0 = createMatAlgo02xDS0({\n typed,\n equalScalar\n });\n var matAlgo08xS0Sid = createMatAlgo08xS0Sid({\n typed,\n equalScalar\n });\n var matAlgo10xSids = createMatAlgo10xSids({\n typed,\n DenseMatrix\n });\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matAlgo14xDs = createMatAlgo14xDs({\n typed\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n var useMatrixForArrayScalar = createUseMatrixForArrayScalar({\n typed,\n matrix\n });\n\n /**\n * Bitwise right arithmetic shift of a value x by y number of bits, `x >> y`.\n * For matrices, the function is evaluated element wise.\n * For units, the function is evaluated on the best prefix base.\n *\n * Syntax:\n *\n * math.rightArithShift(x, y)\n *\n * Examples:\n *\n * math.rightArithShift(4, 2) // returns number 1\n *\n * math.rightArithShift([16, -32, 64], 4) // returns Array [1, -2, 4]\n *\n * See also:\n *\n * bitAnd, bitNot, bitOr, bitXor, rightArithShift, rightLogShift\n *\n * @param {number | BigNumber | bigint | Array | Matrix} x Value to be shifted\n * @param {number | BigNumber | bigint} y Amount of shifts\n * @return {number | BigNumber | bigint | Array | Matrix} `x` zero-filled shifted right `y` times\n */\n return typed(name, {\n 'number, number': rightArithShiftNumber,\n 'BigNumber, BigNumber': rightArithShiftBigNumber,\n 'bigint, bigint': (x, y) => x >> y,\n 'SparseMatrix, number | BigNumber': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (equalScalar(y, 0)) {\n return x.clone();\n }\n return matAlgo11xS0s(x, y, self, false);\n }),\n 'DenseMatrix, number | BigNumber': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (equalScalar(y, 0)) {\n return x.clone();\n }\n return matAlgo14xDs(x, y, self, false);\n }),\n 'number | BigNumber, SparseMatrix': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (equalScalar(x, 0)) {\n return zeros(y.size(), y.storage());\n }\n return matAlgo10xSids(y, x, self, true);\n }),\n 'number | BigNumber, DenseMatrix': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (equalScalar(x, 0)) {\n return zeros(y.size(), y.storage());\n }\n return matAlgo14xDs(y, x, self, true);\n })\n }, useMatrixForArrayScalar, matrixAlgorithmSuite({\n SS: matAlgo08xS0Sid,\n DS: matAlgo01xDSid,\n SD: matAlgo02xDS0\n }));\n});", "import { createMatAlgo02xDS0 } from '../../type/matrix/utils/matAlgo02xDS0.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';\nimport { createMatAlgo01xDSid } from '../../type/matrix/utils/matAlgo01xDSid.js';\nimport { createMatAlgo10xSids } from '../../type/matrix/utils/matAlgo10xSids.js';\nimport { createMatAlgo08xS0Sid } from '../../type/matrix/utils/matAlgo08xS0Sid.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { rightLogShiftNumber } from '../../plain/number/index.js';\nimport { createUseMatrixForArrayScalar } from './useMatrixForArrayScalar.js';\nvar name = 'rightLogShift';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix', 'concat'];\nexport var createRightLogShift = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n zeros,\n DenseMatrix,\n concat\n } = _ref;\n var matAlgo01xDSid = createMatAlgo01xDSid({\n typed\n });\n var matAlgo02xDS0 = createMatAlgo02xDS0({\n typed,\n equalScalar\n });\n var matAlgo08xS0Sid = createMatAlgo08xS0Sid({\n typed,\n equalScalar\n });\n var matAlgo10xSids = createMatAlgo10xSids({\n typed,\n DenseMatrix\n });\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matAlgo14xDs = createMatAlgo14xDs({\n typed\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n var useMatrixForArrayScalar = createUseMatrixForArrayScalar({\n typed,\n matrix\n });\n\n /**\n * Bitwise right logical shift of value x by y number of bits, `x >>> y`.\n * For matrices, the function is evaluated element wise.\n * For units, the function is evaluated on the best prefix base.\n *\n * Syntax:\n *\n * math.rightLogShift(x, y)\n *\n * Examples:\n *\n * math.rightLogShift(4, 2) // returns number 1\n *\n * math.rightLogShift([16, 32, 64], 4) // returns Array [1, 2, 4]\n *\n * See also:\n *\n * bitAnd, bitNot, bitOr, bitXor, leftShift, rightLogShift\n *\n * @param {number | Array | Matrix} x Value to be shifted\n * @param {number} y Amount of shifts\n * @return {number | Array | Matrix} `x` zero-filled shifted right `y` times\n */\n\n return typed(name, {\n 'number, number': rightLogShiftNumber,\n // 'BigNumber, BigNumber': ..., // TODO: implement BigNumber support for rightLogShift\n\n 'SparseMatrix, number | BigNumber': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (equalScalar(y, 0)) {\n return x.clone();\n }\n return matAlgo11xS0s(x, y, self, false);\n }),\n 'DenseMatrix, number | BigNumber': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (equalScalar(y, 0)) {\n return x.clone();\n }\n return matAlgo14xDs(x, y, self, false);\n }),\n 'number | BigNumber, SparseMatrix': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (equalScalar(x, 0)) {\n return zeros(y.size(), y.storage());\n }\n return matAlgo10xSids(y, x, self, true);\n }),\n 'number | BigNumber, DenseMatrix': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (equalScalar(x, 0)) {\n return zeros(y.size(), y.storage());\n }\n return matAlgo14xDs(y, x, self, true);\n })\n }, useMatrixForArrayScalar, matrixAlgorithmSuite({\n SS: matAlgo08xS0Sid,\n DS: matAlgo01xDSid,\n SD: matAlgo02xDS0\n }));\n});", "import { createMatAlgo02xDS0 } from '../../type/matrix/utils/matAlgo02xDS0.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';\nimport { createMatAlgo06xS0S0 } from '../../type/matrix/utils/matAlgo06xS0S0.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { andNumber } from '../../plain/number/index.js';\nvar name = 'and';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'zeros', 'not', 'concat'];\nexport var createAnd = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n zeros,\n not,\n concat\n } = _ref;\n var matAlgo02xDS0 = createMatAlgo02xDS0({\n typed,\n equalScalar\n });\n var matAlgo06xS0S0 = createMatAlgo06xS0S0({\n typed,\n equalScalar\n });\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matAlgo14xDs = createMatAlgo14xDs({\n typed\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Logical `and`. Test whether two values are both defined with a nonzero/nonempty value.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.and(x, y)\n *\n * Examples:\n *\n * math.and(2, 4) // returns true\n *\n * a = [2, 0, 0]\n * b = [3, 7, 0]\n * c = 0\n *\n * math.and(a, b) // returns [true, false, false]\n * math.and(a, c) // returns [false, false, false]\n *\n * See also:\n *\n * not, or, xor\n *\n * @param {number | BigNumber | bigint | Complex | Unit | Array | Matrix} x First value to check\n * @param {number | BigNumber | bigint | Complex | Unit | Array | Matrix} y Second value to check\n * @return {boolean | Array | Matrix}\n * Returns true when both inputs are defined with a nonzero/nonempty value.\n */\n return typed(name, {\n 'number, number': andNumber,\n 'Complex, Complex': function Complex_Complex(x, y) {\n return (x.re !== 0 || x.im !== 0) && (y.re !== 0 || y.im !== 0);\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n return !x.isZero() && !y.isZero() && !x.isNaN() && !y.isNaN();\n },\n 'bigint, bigint': andNumber,\n 'Unit, Unit': typed.referToSelf(self => (x, y) => self(x.value || 0, y.value || 0)),\n 'SparseMatrix, any': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (not(y)) {\n // return zero matrix\n return zeros(x.size(), x.storage());\n }\n return matAlgo11xS0s(x, y, self, false);\n }),\n 'DenseMatrix, any': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (not(y)) {\n // return zero matrix\n return zeros(x.size(), x.storage());\n }\n return matAlgo14xDs(x, y, self, false);\n }),\n 'any, SparseMatrix': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (not(x)) {\n // return zero matrix\n return zeros(x.size(), x.storage());\n }\n return matAlgo11xS0s(y, x, self, true);\n }),\n 'any, DenseMatrix': typed.referToSelf(self => (x, y) => {\n // check scalar\n if (not(x)) {\n // return zero matrix\n return zeros(x.size(), x.storage());\n }\n return matAlgo14xDs(y, x, self, true);\n }),\n 'Array, any': typed.referToSelf(self => (x, y) => {\n // use matrix implementation\n return self(matrix(x), y).valueOf();\n }),\n 'any, Array': typed.referToSelf(self => (x, y) => {\n // use matrix implementation\n return self(x, matrix(y)).valueOf();\n })\n }, matrixAlgorithmSuite({\n SS: matAlgo06xS0S0,\n DS: matAlgo02xDS0\n }));\n});", "import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { nearlyEqual } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatAlgo05xSfSf } from '../../type/matrix/utils/matAlgo05xSfSf.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { createCompareUnits } from './compareUnits.js';\nvar name = 'compare';\nvar dependencies = ['typed', 'config', 'matrix', 'equalScalar', 'BigNumber', 'Fraction', 'DenseMatrix', 'concat'];\nexport var createCompare = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n equalScalar,\n matrix,\n BigNumber,\n Fraction,\n DenseMatrix,\n concat\n } = _ref;\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo05xSfSf = createMatAlgo05xSfSf({\n typed,\n equalScalar\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n var compareUnits = createCompareUnits({\n typed\n });\n\n /**\n * Compare two values. Returns 1 when x > y, -1 when x < y, and 0 when x == y.\n *\n * x and y are considered equal when the relative difference between x and y\n * is smaller than the configured absTol and relTol. The function cannot be used to\n * compare values smaller than approximately 2.22e-16.\n *\n * For matrices, the function is evaluated element wise.\n * Strings are compared by their numerical value.\n *\n * Syntax:\n *\n * math.compare(x, y)\n *\n * Examples:\n *\n * math.compare(6, 1) // returns 1\n * math.compare(2, 3) // returns -1\n * math.compare(7, 7) // returns 0\n * math.compare('10', '2') // returns 1\n * math.compare('1000', '1e3') // returns 0\n *\n * const a = math.unit('5 cm')\n * const b = math.unit('40 mm')\n * math.compare(a, b) // returns 1\n *\n * math.compare(2, [1, 2, 3]) // returns [1, 0, -1]\n *\n * See also:\n *\n * equal, unequal, smaller, smallerEq, larger, largerEq, compareNatural, compareText\n *\n * @param {number | BigNumber | bigint | Fraction | Unit | string | Array | Matrix} x First value to compare\n * @param {number | BigNumber | bigint | Fraction | Unit | string | Array | Matrix} y Second value to compare\n * @return {number | BigNumber | bigint | Fraction | Array | Matrix} Returns the result of the comparison:\n * 1 when x > y, -1 when x < y, and 0 when x == y.\n */\n return typed(name, createCompareNumber({\n typed,\n config\n }), {\n 'boolean, boolean': function boolean_boolean(x, y) {\n return x === y ? 0 : x > y ? 1 : -1;\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n return bigNearlyEqual(x, y, config.relTol, config.absTol) ? new BigNumber(0) : new BigNumber(x.cmp(y));\n },\n 'bigint, bigint': function bigint_bigint(x, y) {\n return x === y ? 0n : x > y ? 1n : -1n;\n },\n 'Fraction, Fraction': function Fraction_Fraction(x, y) {\n return new Fraction(x.compare(y));\n },\n 'Complex, Complex': function Complex_Complex() {\n throw new TypeError('No ordering relation is defined for complex numbers');\n }\n }, compareUnits, matrixAlgorithmSuite({\n SS: matAlgo05xSfSf,\n DS: matAlgo03xDSf,\n Ss: matAlgo12xSfs\n }));\n});\nexport var createCompareNumber = /* #__PURE__ */factory(name, ['typed', 'config'], _ref2 => {\n var {\n typed,\n config\n } = _ref2;\n return typed(name, {\n 'number, number': function number_number(x, y) {\n return nearlyEqual(x, y, config.relTol, config.absTol) ? 0 : x > y ? 1 : -1;\n }\n });\n});", "import naturalSort from 'javascript-natural-sort';\nimport { isDenseMatrix, isSparseMatrix, typeOf } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'compareNatural';\nvar dependencies = ['typed', 'compare'];\nexport var createCompareNatural = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n compare\n } = _ref;\n var compareBooleans = compare.signatures['boolean,boolean'];\n\n /**\n * Compare two values of any type in a deterministic, natural way.\n *\n * For numeric values, the function works the same as `math.compare`.\n * For types of values that can't be compared mathematically,\n * the function compares in a natural way.\n *\n * For numeric values, x and y are considered equal when the relative\n * difference between x and y is smaller than the configured relTol and absTol.\n * The function cannot be used to compare values smaller than\n * approximately 2.22e-16.\n *\n * For Complex numbers, first the real parts are compared. If equal,\n * the imaginary parts are compared.\n *\n * Strings are compared with a natural sorting algorithm, which\n * orders strings in a \"logic\" way following some heuristics.\n * This differs from the function `compare`, which converts the string\n * into a numeric value and compares that. The function `compareText`\n * on the other hand compares text lexically.\n *\n * Arrays and Matrices are compared value by value until there is an\n * unequal pair of values encountered. Objects are compared by sorted\n * keys until the keys or their values are unequal.\n *\n * Syntax:\n *\n * math.compareNatural(x, y)\n *\n * Examples:\n *\n * math.compareNatural(6, 1) // returns 1\n * math.compareNatural(2, 3) // returns -1\n * math.compareNatural(7, 7) // returns 0\n *\n * math.compareNatural('10', '2') // returns 1\n * math.compareText('10', '2') // returns -1\n * math.compare('10', '2') // returns 1\n *\n * math.compareNatural('Answer: 10', 'Answer: 2') // returns 1\n * math.compareText('Answer: 10', 'Answer: 2') // returns -1\n * math.compare('Answer: 10', 'Answer: 2')\n * // Error: Cannot convert \"Answer: 10\" to a number\n *\n * const a = math.unit('5 cm')\n * const b = math.unit('40 mm')\n * math.compareNatural(a, b) // returns 1\n *\n * const c = math.complex('2 + 3i')\n * const d = math.complex('2 + 4i')\n * math.compareNatural(c, d) // returns -1\n *\n * math.compareNatural([1, 2, 4], [1, 2, 3]) // returns 1\n * math.compareNatural([1, 2, 3], [1, 2]) // returns 1\n * math.compareNatural([1, 5], [1, 2, 3]) // returns 1\n * math.compareNatural([1, 2], [1, 2]) // returns 0\n *\n * math.compareNatural({a: 2}, {a: 4}) // returns -1\n *\n * See also:\n *\n * compare, compareText\n *\n * @param {*} x First value to compare\n * @param {*} y Second value to compare\n * @return {number} Returns the result of the comparison:\n * 1 when x > y, -1 when x < y, and 0 when x == y.\n */\n return typed(name, {\n 'any, any': _compareNatural\n }); // just to check # args\n\n function _compareNatural(x, y) {\n var typeX = typeOf(x);\n var typeY = typeOf(y);\n var c;\n\n // numeric types\n if ((typeX === 'number' || typeX === 'BigNumber' || typeX === 'Fraction') && (typeY === 'number' || typeY === 'BigNumber' || typeY === 'Fraction')) {\n c = compare(x, y);\n if (c.toString() !== '0') {\n // c can be number, BigNumber, or Fraction\n return c > 0 ? 1 : -1; // return a number\n } else {\n return naturalSort(typeX, typeY);\n }\n }\n\n // matrix types\n var matTypes = ['Array', 'DenseMatrix', 'SparseMatrix'];\n if (matTypes.includes(typeX) || matTypes.includes(typeY)) {\n c = compareMatricesAndArrays(_compareNatural, x, y);\n if (c !== 0) {\n return c;\n } else {\n return naturalSort(typeX, typeY);\n }\n }\n\n // in case of different types, order by name of type, i.e. 'BigNumber' < 'Complex'\n if (typeX !== typeY) {\n return naturalSort(typeX, typeY);\n }\n if (typeX === 'Complex') {\n return compareComplexNumbers(x, y);\n }\n if (typeX === 'Unit') {\n if (x.equalBase(y)) {\n return _compareNatural(x.value, y.value);\n }\n\n // compare by units\n return compareArrays(_compareNatural, x.formatUnits(), y.formatUnits());\n }\n if (typeX === 'boolean') {\n return compareBooleans(x, y);\n }\n if (typeX === 'string') {\n return naturalSort(x, y);\n }\n if (typeX === 'Object') {\n return compareObjects(_compareNatural, x, y);\n }\n if (typeX === 'null') {\n return 0;\n }\n if (typeX === 'undefined') {\n return 0;\n }\n\n // this should not occur...\n throw new TypeError('Unsupported type of value \"' + typeX + '\"');\n }\n\n /**\n * Compare mixed matrix/array types, by converting to same-shaped array.\n * This comparator is non-deterministic regarding input types.\n * @param {Array | SparseMatrix | DenseMatrix | *} x\n * @param {Array | SparseMatrix | DenseMatrix | *} y\n * @returns {number} Returns the comparison result: -1, 0, or 1\n */\n function compareMatricesAndArrays(compareNatural, x, y) {\n if (isSparseMatrix(x) && isSparseMatrix(y)) {\n return compareArrays(compareNatural, x.toJSON().values, y.toJSON().values);\n }\n if (isSparseMatrix(x)) {\n // note: convert to array is expensive\n return compareMatricesAndArrays(compareNatural, x.toArray(), y);\n }\n if (isSparseMatrix(y)) {\n // note: convert to array is expensive\n return compareMatricesAndArrays(compareNatural, x, y.toArray());\n }\n\n // convert DenseArray into Array\n if (isDenseMatrix(x)) {\n return compareMatricesAndArrays(compareNatural, x.toJSON().data, y);\n }\n if (isDenseMatrix(y)) {\n return compareMatricesAndArrays(compareNatural, x, y.toJSON().data);\n }\n\n // convert scalars to array\n if (!Array.isArray(x)) {\n return compareMatricesAndArrays(compareNatural, [x], y);\n }\n if (!Array.isArray(y)) {\n return compareMatricesAndArrays(compareNatural, x, [y]);\n }\n return compareArrays(compareNatural, x, y);\n }\n\n /**\n * Compare two Arrays\n *\n * - First, compares value by value\n * - Next, if all corresponding values are equal,\n * look at the length: longest array will be considered largest\n *\n * @param {Array} x\n * @param {Array} y\n * @returns {number} Returns the comparison result: -1, 0, or 1\n */\n function compareArrays(compareNatural, x, y) {\n // compare each value\n for (var i = 0, ii = Math.min(x.length, y.length); i < ii; i++) {\n var v = compareNatural(x[i], y[i]);\n if (v !== 0) {\n return v;\n }\n }\n\n // compare the size of the arrays\n if (x.length > y.length) {\n return 1;\n }\n if (x.length < y.length) {\n return -1;\n }\n\n // both Arrays have equal size and content\n return 0;\n }\n\n /**\n * Compare two objects\n *\n * - First, compare sorted property names\n * - Next, compare the property values\n *\n * @param {Object} x\n * @param {Object} y\n * @returns {number} Returns the comparison result: -1, 0, or 1\n */\n function compareObjects(compareNatural, x, y) {\n var keysX = Object.keys(x);\n var keysY = Object.keys(y);\n\n // compare keys\n keysX.sort(naturalSort);\n keysY.sort(naturalSort);\n var c = compareArrays(compareNatural, keysX, keysY);\n if (c !== 0) {\n return c;\n }\n\n // compare values\n for (var i = 0; i < keysX.length; i++) {\n var v = compareNatural(x[keysX[i]], y[keysY[i]]);\n if (v !== 0) {\n return v;\n }\n }\n return 0;\n }\n});\n\n/**\n * Compare two complex numbers, `x` and `y`:\n *\n * - First, compare the real values of `x` and `y`\n * - If equal, compare the imaginary values of `x` and `y`\n *\n * @params {Complex} x\n * @params {Complex} y\n * @returns {number} Returns the comparison result: -1, 0, or 1\n */\nfunction compareComplexNumbers(x, y) {\n if (x.re > y.re) {\n return 1;\n }\n if (x.re < y.re) {\n return -1;\n }\n if (x.im > y.im) {\n return 1;\n }\n if (x.im < y.im) {\n return -1;\n }\n return 0;\n}", "import { compareText as _compareText } from '../../utils/string.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nvar name = 'compareText';\nvar dependencies = ['typed', 'matrix', 'concat'];\n_compareText.signature = 'any, any';\nexport var createCompareText = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n concat\n } = _ref;\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Compare two strings lexically. Comparison is case sensitive.\n * Returns 1 when x > y, -1 when x < y, and 0 when x == y.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.compareText(x, y)\n *\n * Examples:\n *\n * math.compareText('B', 'A') // returns 1\n * math.compareText('2', '10') // returns 1\n * math.compare('2', '10') // returns -1\n * math.compareNatural('2', '10') // returns -1\n *\n * math.compareText('B', ['A', 'B', 'C']) // returns [1, 0, -1]\n *\n * See also:\n *\n * equal, equalText, compare, compareNatural\n *\n * @param {string | Array | DenseMatrix} x First string to compare\n * @param {string | Array | DenseMatrix} y Second string to compare\n * @return {number | Array | DenseMatrix} Returns the result of the comparison:\n * 1 when x > y, -1 when x < y, and 0 when x == y.\n */\n return typed(name, _compareText, matrixAlgorithmSuite({\n elop: _compareText,\n Ds: true\n }));\n});\nexport var createCompareTextNumber = /* #__PURE__ */factory(name, ['typed'], _ref2 => {\n var {\n typed\n } = _ref2;\n return typed(name, _compareText);\n});", "import { factory } from '../../utils/factory.js';\nimport { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo07xSSf } from '../../type/matrix/utils/matAlgo07xSSf.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nvar name = 'equal';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'DenseMatrix', 'concat', 'SparseMatrix'];\nexport var createEqual = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n DenseMatrix,\n concat,\n SparseMatrix\n } = _ref;\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo07xSSf = createMatAlgo07xSSf({\n typed,\n SparseMatrix\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Test whether two values are equal.\n *\n * The function tests whether the relative difference between x and y is\n * smaller than the configured relTol and absTol. The function cannot be used to\n * compare values smaller than approximately 2.22e-16.\n *\n * For matrices, the function is evaluated element wise.\n * In case of complex numbers, x.re must equal y.re, and x.im must equal y.im.\n *\n * Values `null` and `undefined` are compared strictly, thus `null` is only\n * equal to `null` and nothing else, and `undefined` is only equal to\n * `undefined` and nothing else. Strings are compared by their numerical value.\n *\n * Syntax:\n *\n * math.equal(x, y)\n *\n * Examples:\n *\n * math.equal(2 + 2, 3) // returns false\n * math.equal(2 + 2, 4) // returns true\n *\n * const a = math.unit('50 cm')\n * const b = math.unit('5 m')\n * math.equal(a, b) // returns true\n *\n * const c = [2, 5, 1]\n * const d = [2, 7, 1]\n *\n * math.equal(c, d) // returns [true, false, true]\n * math.deepEqual(c, d) // returns false\n *\n * math.equal(\"1000\", \"1e3\") // returns true\n * math.equal(0, null) // returns false\n *\n * See also:\n *\n * unequal, smaller, smallerEq, larger, largerEq, compare, deepEqual, equalText\n *\n * @param {number | BigNumber | bigint | boolean | Complex | Unit | string | Array | Matrix} x First value to compare\n * @param {number | BigNumber | bigint | boolean | Complex | Unit | string | Array | Matrix} y Second value to compare\n * @return {boolean | Array | Matrix} Returns true when the compared values are equal, else returns false\n */\n return typed(name, createEqualNumber({\n typed,\n equalScalar\n }), matrixAlgorithmSuite({\n elop: equalScalar,\n SS: matAlgo07xSSf,\n DS: matAlgo03xDSf,\n Ss: matAlgo12xSfs\n }));\n});\nexport var createEqualNumber = factory(name, ['typed', 'equalScalar'], _ref2 => {\n var {\n typed,\n equalScalar\n } = _ref2;\n return typed(name, {\n 'any, any': function any_any(x, y) {\n // strict equality for null and undefined?\n if (x === null) {\n return y === null;\n }\n if (y === null) {\n return x === null;\n }\n if (x === undefined) {\n return y === undefined;\n }\n if (y === undefined) {\n return x === undefined;\n }\n return equalScalar(x, y);\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'equalText';\nvar dependencies = ['typed', 'compareText', 'isZero'];\nexport var createEqualText = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n compareText,\n isZero\n } = _ref;\n /**\n * Check equality of two strings. Comparison is case sensitive.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.equalText(x, y)\n *\n * Examples:\n *\n * math.equalText('Hello', 'Hello') // returns true\n * math.equalText('a', 'A') // returns false\n * math.equal('2e3', '2000') // returns true\n * math.equalText('2e3', '2000') // returns false\n *\n * math.equalText('B', ['A', 'B', 'C']) // returns [false, true, false]\n *\n * See also:\n *\n * equal, compareText, compare, compareNatural\n *\n * @param {string | Array | DenseMatrix} x First string to compare\n * @param {string | Array | DenseMatrix} y Second string to compare\n * @return {number | Array | DenseMatrix} Returns true if the values are equal, and false if not.\n */\n return typed(name, {\n 'any, any': function any_any(x, y) {\n return isZero(compareText(x, y));\n }\n });\n});", "import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { nearlyEqual } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo07xSSf } from '../../type/matrix/utils/matAlgo07xSSf.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { createCompareUnits } from './compareUnits.js';\nvar name = 'smaller';\nvar dependencies = ['typed', 'config', 'matrix', 'DenseMatrix', 'concat', 'SparseMatrix'];\nexport var createSmaller = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n DenseMatrix,\n concat,\n SparseMatrix\n } = _ref;\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo07xSSf = createMatAlgo07xSSf({\n typed,\n SparseMatrix\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n var compareUnits = createCompareUnits({\n typed\n });\n\n /**\n * Test whether value x is smaller than y.\n *\n * The function returns true when x is smaller than y and the relative\n * difference between x and y is smaller than the configured relTol and absTol. The\n * function cannot be used to compare values smaller than approximately 2.22e-16.\n *\n * For matrices, the function is evaluated element wise.\n * Strings are compared by their numerical value.\n *\n * Syntax:\n *\n * math.smaller(x, y)\n *\n * Examples:\n *\n * math.smaller(2, 3) // returns true\n * math.smaller(5, 2 * 2) // returns false\n *\n * const a = math.unit('5 cm')\n * const b = math.unit('2 inch')\n * math.smaller(a, b) // returns true\n *\n * See also:\n *\n * equal, unequal, smallerEq, smaller, smallerEq, compare\n *\n * @param {number | BigNumber | bigint | Fraction | boolean | Unit | string | Array | Matrix} x First value to compare\n * @param {number | BigNumber | bigint | Fraction | boolean | Unit | string | Array | Matrix} y Second value to compare\n * @return {boolean | Array | Matrix} Returns true when the x is smaller than y, else returns false\n */\n return typed(name, createSmallerNumber({\n typed,\n config\n }), {\n 'boolean, boolean': (x, y) => x < y,\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n return x.lt(y) && !bigNearlyEqual(x, y, config.relTol, config.absTol);\n },\n 'bigint, bigint': (x, y) => x < y,\n 'Fraction, Fraction': (x, y) => x.compare(y) === -1,\n 'Complex, Complex': function Complex_Complex(x, y) {\n throw new TypeError('No ordering relation is defined for complex numbers');\n }\n }, compareUnits, matrixAlgorithmSuite({\n SS: matAlgo07xSSf,\n DS: matAlgo03xDSf,\n Ss: matAlgo12xSfs\n }));\n});\nexport var createSmallerNumber = /* #__PURE__ */factory(name, ['typed', 'config'], _ref2 => {\n var {\n typed,\n config\n } = _ref2;\n return typed(name, {\n 'number, number': function number_number(x, y) {\n return x < y && !nearlyEqual(x, y, config.relTol, config.absTol);\n }\n });\n});", "import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { nearlyEqual } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo07xSSf } from '../../type/matrix/utils/matAlgo07xSSf.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { createCompareUnits } from './compareUnits.js';\nvar name = 'smallerEq';\nvar dependencies = ['typed', 'config', 'matrix', 'DenseMatrix', 'concat', 'SparseMatrix'];\nexport var createSmallerEq = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n DenseMatrix,\n concat,\n SparseMatrix\n } = _ref;\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo07xSSf = createMatAlgo07xSSf({\n typed,\n SparseMatrix\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n var compareUnits = createCompareUnits({\n typed\n });\n\n /**\n * Test whether value x is smaller or equal to y.\n *\n * The function returns true when x is smaller than y or the relative\n * difference between x and y is smaller than the configured relTol and absTol. The\n * function cannot be used to compare values smaller than approximately 2.22e-16.\n *\n * For matrices, the function is evaluated element wise.\n * Strings are compared by their numerical value.\n *\n * Syntax:\n *\n * math.smallerEq(x, y)\n *\n * Examples:\n *\n * math.smaller(1 + 2, 3) // returns false\n * math.smallerEq(1 + 2, 3) // returns true\n *\n * See also:\n *\n * equal, unequal, smaller, larger, largerEq, compare\n *\n * @param {number | BigNumber | bigint | Fraction | boolean | Unit | string | Array | Matrix} x First value to compare\n * @param {number | BigNumber | bigint | Fraction | boolean | Unit | string | Array | Matrix} y Second value to compare\n * @return {boolean | Array | Matrix} Returns true when the x is smaller than y, else returns false\n */\n return typed(name, createSmallerEqNumber({\n typed,\n config\n }), {\n 'boolean, boolean': (x, y) => x <= y,\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n return x.lte(y) || bigNearlyEqual(x, y, config.relTol, config.absTol);\n },\n 'bigint, bigint': (x, y) => x <= y,\n 'Fraction, Fraction': (x, y) => x.compare(y) !== 1,\n 'Complex, Complex': function Complex_Complex() {\n throw new TypeError('No ordering relation is defined for complex numbers');\n }\n }, compareUnits, matrixAlgorithmSuite({\n SS: matAlgo07xSSf,\n DS: matAlgo03xDSf,\n Ss: matAlgo12xSfs\n }));\n});\nexport var createSmallerEqNumber = /* #__PURE__ */factory(name, ['typed', 'config'], _ref2 => {\n var {\n typed,\n config\n } = _ref2;\n return typed(name, {\n 'number, number': function number_number(x, y) {\n return x <= y || nearlyEqual(x, y, config.relTol, config.absTol);\n }\n });\n});", "import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { nearlyEqual } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo07xSSf } from '../../type/matrix/utils/matAlgo07xSSf.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { createCompareUnits } from './compareUnits.js';\nvar name = 'larger';\nvar dependencies = ['typed', 'config', 'matrix', 'DenseMatrix', 'concat', 'SparseMatrix'];\nexport var createLarger = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n DenseMatrix,\n concat,\n SparseMatrix\n } = _ref;\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo07xSSf = createMatAlgo07xSSf({\n typed,\n SparseMatrix\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n var compareUnits = createCompareUnits({\n typed\n });\n\n /**\n * Test whether value x is larger than y.\n *\n * The function returns true when x is larger than y and the relative\n * difference between x and y is larger than the configured relTol and absTol. The\n * function cannot be used to compare values smaller than approximately 2.22e-16.\n *\n * For matrices, the function is evaluated element wise.\n * Strings are compared by their numerical value.\n *\n * Syntax:\n *\n * math.larger(x, y)\n *\n * Examples:\n *\n * math.larger(2, 3) // returns false\n * math.larger(5, 2 + 2) // returns true\n *\n * const a = math.unit('5 cm')\n * const b = math.unit('2 inch')\n * math.larger(a, b) // returns false\n *\n * See also:\n *\n * equal, unequal, smaller, smallerEq, largerEq, compare\n *\n * @param {number | BigNumber | bigint | Fraction | boolean | Unit | string | Array | Matrix} x First value to compare\n * @param {number | BigNumber | bigint | Fraction | boolean | Unit | string | Array | Matrix} y Second value to compare\n * @return {boolean | Array | Matrix} Returns true when the x is larger than y, else returns false\n */\n return typed(name, createLargerNumber({\n typed,\n config\n }), {\n 'boolean, boolean': (x, y) => x > y,\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n return x.gt(y) && !bigNearlyEqual(x, y, config.relTol, config.absTol);\n },\n 'bigint, bigint': (x, y) => x > y,\n 'Fraction, Fraction': (x, y) => x.compare(y) === 1,\n 'Complex, Complex': function Complex_Complex() {\n throw new TypeError('No ordering relation is defined for complex numbers');\n }\n }, compareUnits, matrixAlgorithmSuite({\n SS: matAlgo07xSSf,\n DS: matAlgo03xDSf,\n Ss: matAlgo12xSfs\n }));\n});\nexport var createLargerNumber = /* #__PURE__ */factory(name, ['typed', 'config'], _ref2 => {\n var {\n typed,\n config\n } = _ref2;\n return typed(name, {\n 'number, number': function number_number(x, y) {\n return x > y && !nearlyEqual(x, y, config.relTol, config.absTol);\n }\n });\n});", "import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';\nimport { nearlyEqual } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo07xSSf } from '../../type/matrix/utils/matAlgo07xSSf.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nimport { createCompareUnits } from './compareUnits.js';\nvar name = 'largerEq';\nvar dependencies = ['typed', 'config', 'matrix', 'DenseMatrix', 'concat', 'SparseMatrix'];\nexport var createLargerEq = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n DenseMatrix,\n concat,\n SparseMatrix\n } = _ref;\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo07xSSf = createMatAlgo07xSSf({\n typed,\n SparseMatrix\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n var compareUnits = createCompareUnits({\n typed\n });\n\n /**\n * Test whether value x is larger or equal to y.\n *\n * The function returns true when x is larger than y or the relative\n * difference between x and y is smaller than the configured relTol and absTol. The\n * function cannot be used to compare values smaller than approximately 2.22e-16.\n *\n * For matrices, the function is evaluated element wise.\n * Strings are compared by their numerical value.\n *\n * Syntax:\n *\n * math.largerEq(x, y)\n *\n * Examples:\n *\n * math.larger(2, 1 + 1) // returns false\n * math.largerEq(2, 1 + 1) // returns true\n *\n * See also:\n *\n * equal, unequal, smaller, smallerEq, larger, compare\n *\n * @param {number | BigNumber | bigint | Fraction | boolean | Unit | string | Array | Matrix} x First value to compare\n * @param {number | BigNumber | bigint | Fraction | boolean | Unit | string | Array | Matrix} y Second value to compare\n * @return {boolean | Array | Matrix} Returns true when the x is larger or equal to y, else returns false\n */\n return typed(name, createLargerEqNumber({\n typed,\n config\n }), {\n 'boolean, boolean': (x, y) => x >= y,\n 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {\n return x.gte(y) || bigNearlyEqual(x, y, config.relTol, config.absTol);\n },\n 'bigint, bigint': function bigint_bigint(x, y) {\n return x >= y;\n },\n 'Fraction, Fraction': (x, y) => x.compare(y) !== -1,\n 'Complex, Complex': function Complex_Complex() {\n throw new TypeError('No ordering relation is defined for complex numbers');\n }\n }, compareUnits, matrixAlgorithmSuite({\n SS: matAlgo07xSSf,\n DS: matAlgo03xDSf,\n Ss: matAlgo12xSfs\n }));\n});\nexport var createLargerEqNumber = /* #__PURE__ */factory(name, ['typed', 'config'], _ref2 => {\n var {\n typed,\n config\n } = _ref2;\n return typed(name, {\n 'number, number': function number_number(x, y) {\n return x >= y || nearlyEqual(x, y, config.relTol, config.absTol);\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'deepEqual';\nvar dependencies = ['typed', 'equal'];\nexport var createDeepEqual = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n equal\n } = _ref;\n /**\n * Test element wise whether two matrices are equal.\n * The function accepts both matrices and scalar values.\n *\n * Strings are compared by their numerical value.\n *\n * Syntax:\n *\n * math.deepEqual(x, y)\n *\n * Examples:\n *\n * math.deepEqual(2, 4) // returns false\n *\n * a = [2, 5, 1]\n * b = [2, 7, 1]\n *\n * math.deepEqual(a, b) // returns false\n * math.equal(a, b) // returns [true, false, true]\n *\n * See also:\n *\n * equal, unequal\n *\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x First matrix to compare\n * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} y Second matrix to compare\n * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix}\n * Returns true when the input matrices have the same size and each of their elements is equal.\n */\n return typed(name, {\n 'any, any': function any_any(x, y) {\n return _deepEqual(x.valueOf(), y.valueOf());\n }\n });\n\n /**\n * Test whether two arrays have the same size and all elements are equal\n * @param {Array | *} x\n * @param {Array | *} y\n * @return {boolean} Returns true if both arrays are deep equal\n */\n function _deepEqual(x, y) {\n if (Array.isArray(x)) {\n if (Array.isArray(y)) {\n var len = x.length;\n if (len !== y.length) {\n return false;\n }\n for (var i = 0; i < len; i++) {\n if (!_deepEqual(x[i], y[i])) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n } else {\n if (Array.isArray(y)) {\n return false;\n } else {\n return equal(x, y);\n }\n }\n }\n});", "import { factory } from '../../utils/factory.js';\nimport { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo07xSSf } from '../../type/matrix/utils/matAlgo07xSSf.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nvar name = 'unequal';\nvar dependencies = ['typed', 'config', 'equalScalar', 'matrix', 'DenseMatrix', 'concat', 'SparseMatrix'];\nexport var createUnequal = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n equalScalar,\n matrix,\n DenseMatrix,\n concat,\n SparseMatrix\n } = _ref;\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo07xSSf = createMatAlgo07xSSf({\n typed,\n SparseMatrix\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Test whether two values are unequal.\n *\n * The function tests whether the relative difference between x and y is\n * larger than the configured relTol and absTol. The function cannot be used to compare\n * values smaller than approximately 2.22e-16.\n *\n * For matrices, the function is evaluated element wise.\n * In case of complex numbers, x.re must unequal y.re, or x.im must unequal y.im.\n * Strings are compared by their numerical value.\n *\n * Values `null` and `undefined` are compared strictly, thus `null` is unequal\n * with everything except `null`, and `undefined` is unequal with everything\n * except `undefined`.\n *\n * Syntax:\n *\n * math.unequal(x, y)\n *\n * Examples:\n *\n * math.unequal(2 + 2, 3) // returns true\n * math.unequal(2 + 2, 4) // returns false\n *\n * const a = math.unit('50 cm')\n * const b = math.unit('5 m')\n * math.unequal(a, b) // returns false\n *\n * const c = [2, 5, 1]\n * const d = [2, 7, 1]\n *\n * math.unequal(c, d) // returns [false, true, false]\n * math.deepEqual(c, d) // returns false\n *\n * math.unequal(0, null) // returns true\n * See also:\n *\n * equal, deepEqual, smaller, smallerEq, larger, largerEq, compare\n *\n * @param {number | BigNumber | Fraction | boolean | Complex | Unit | string | Array | Matrix | undefined} x First value to compare\n * @param {number | BigNumber | Fraction | boolean | Complex | Unit | string | Array | Matrix | undefined} y Second value to compare\n * @return {boolean | Array | Matrix} Returns true when the compared values are unequal, else returns false\n */\n return typed(name, createUnequalNumber({\n typed,\n equalScalar\n }), matrixAlgorithmSuite({\n elop: _unequal,\n SS: matAlgo07xSSf,\n DS: matAlgo03xDSf,\n Ss: matAlgo12xSfs\n }));\n function _unequal(x, y) {\n return !equalScalar(x, y);\n }\n});\nexport var createUnequalNumber = factory(name, ['typed', 'equalScalar'], _ref2 => {\n var {\n typed,\n equalScalar\n } = _ref2;\n return typed(name, {\n 'any, any': function any_any(x, y) {\n // strict equality for null and undefined?\n if (x === null) {\n return y !== null;\n }\n if (y === null) {\n return x !== null;\n }\n if (x === undefined) {\n return y !== undefined;\n }\n if (y === undefined) {\n return x !== undefined;\n }\n return !equalScalar(x, y);\n }\n });\n});", "import { isMatrix } from '../../utils/is.js';\nimport { isInteger } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'partitionSelect';\nvar dependencies = ['typed', 'isNumeric', 'isNaN', 'compare'];\nexport var createPartitionSelect = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n isNumeric,\n isNaN,\n compare\n } = _ref;\n var asc = compare;\n var desc = (a, b) => -compare(a, b);\n\n /**\n * Partition-based selection of an array or 1D matrix.\n * Will find the kth smallest value, and mutates the input array.\n * Uses Quickselect.\n *\n * Syntax:\n *\n * math.partitionSelect(x, k)\n * math.partitionSelect(x, k, compare)\n *\n * Examples:\n *\n * math.partitionSelect([5, 10, 1], 2) // returns 10\n * math.partitionSelect(['C', 'B', 'A', 'D'], 1, math.compareText) // returns 'B'\n *\n * function sortByLength (a, b) {\n * return a.length - b.length\n * }\n * math.partitionSelect(['Langdon', 'Tom', 'Sara'], 2, sortByLength) // returns 'Langdon'\n *\n * // the input array is mutated\n * arr = [5, 2, 1]\n * math.partitionSelect(arr, 0) // returns 1, arr is now: [1, 2, 5]\n * math.partitionSelect(arr, 1, 'desc') // returns 2, arr is now: [5, 2, 1]\n *\n * See also:\n *\n * sort\n *\n * @param {Matrix | Array} x A one dimensional matrix or array to sort\n * @param {Number} k The kth smallest value to be retrieved zero-based index\n * @param {Function | 'asc' | 'desc'} [compare='asc']\n * An optional comparator function. The function is called as\n * `compare(a, b)`, and must return 1 when a > b, -1 when a < b,\n * and 0 when a == b.\n * @return {*} Returns the kth lowest value.\n */\n return typed(name, {\n 'Array | Matrix, number': function Array__Matrix_number(x, k) {\n return _partitionSelect(x, k, asc);\n },\n 'Array | Matrix, number, string': function Array__Matrix_number_string(x, k, compare) {\n if (compare === 'asc') {\n return _partitionSelect(x, k, asc);\n } else if (compare === 'desc') {\n return _partitionSelect(x, k, desc);\n } else {\n throw new Error('Compare string must be \"asc\" or \"desc\"');\n }\n },\n 'Array | Matrix, number, function': _partitionSelect\n });\n function _partitionSelect(x, k, compare) {\n if (!isInteger(k) || k < 0) {\n throw new Error('k must be a non-negative integer');\n }\n if (isMatrix(x)) {\n var size = x.size();\n if (size.length > 1) {\n throw new Error('Only one dimensional matrices supported');\n }\n return quickSelect(x.valueOf(), k, compare);\n }\n if (Array.isArray(x)) {\n return quickSelect(x, k, compare);\n }\n }\n\n /**\n * Quickselect algorithm.\n * Code adapted from:\n * https://blog.teamleadnet.com/2012/07/quick-select-algorithm-find-kth-element.html\n *\n * @param {Array} arr\n * @param {Number} k\n * @param {Function} compare\n * @private\n */\n function quickSelect(arr, k, compare) {\n if (k >= arr.length) {\n throw new Error('k out of bounds');\n }\n\n // check for NaN values since these can cause an infinite while loop\n for (var i = 0; i < arr.length; i++) {\n if (isNumeric(arr[i]) && isNaN(arr[i])) {\n return arr[i]; // return NaN\n }\n }\n var from = 0;\n var to = arr.length - 1;\n\n // if from == to we reached the kth element\n while (from < to) {\n var r = from;\n var w = to;\n var pivot = arr[Math.floor(Math.random() * (to - from + 1)) + from];\n\n // stop if the reader and writer meets\n while (r < w) {\n // arr[r] >= pivot\n if (compare(arr[r], pivot) >= 0) {\n // put the large values at the end\n var tmp = arr[w];\n arr[w] = arr[r];\n arr[r] = tmp;\n --w;\n } else {\n // the value is smaller than the pivot, skip\n ++r;\n }\n }\n\n // if we stepped up (r++) we need to step one down (arr[r] > pivot)\n if (compare(arr[r], pivot) > 0) {\n --r;\n }\n\n // the r pointer is on the end of the first k elements\n if (k <= r) {\n to = r;\n } else {\n from = r + 1;\n }\n }\n return arr[k];\n }\n});", "import { arraySize as size } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'sort';\nvar dependencies = ['typed', 'matrix', 'compare', 'compareNatural'];\nexport var createSort = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n compare,\n compareNatural\n } = _ref;\n var compareAsc = compare;\n var compareDesc = (a, b) => -compare(a, b);\n\n /**\n * Sort the items in a matrix.\n *\n * Syntax:\n *\n * math.sort(x)\n * math.sort(x, compare)\n *\n * Examples:\n *\n * math.sort([5, 10, 1]) // returns [1, 5, 10]\n * math.sort(['C', 'B', 'A', 'D'], math.compareNatural)\n * // returns ['A', 'B', 'C', 'D']\n *\n * function sortByLength (a, b) {\n * return a.length - b.length\n * }\n * math.sort(['Langdon', 'Tom', 'Sara'], sortByLength)\n * // returns ['Tom', 'Sara', 'Langdon']\n *\n * See also:\n *\n * filter, forEach, map, compare, compareNatural\n *\n * @param {Matrix | Array} x A one dimensional matrix or array to sort\n * @param {Function | 'asc' | 'desc' | 'natural'} [compare='asc']\n * An optional _comparator function or name. The function is called as\n * `compare(a, b)`, and must return 1 when a > b, -1 when a < b,\n * and 0 when a == b.\n * @return {Matrix | Array} Returns the sorted matrix.\n */\n return typed(name, {\n Array: function Array(x) {\n _arrayIsVector(x);\n return x.sort(compareAsc);\n },\n Matrix: function Matrix(x) {\n _matrixIsVector(x);\n return matrix(x.toArray().sort(compareAsc), x.storage());\n },\n 'Array, function': function Array_function(x, _comparator) {\n _arrayIsVector(x);\n return x.sort(_comparator);\n },\n 'Matrix, function': function Matrix_function(x, _comparator) {\n _matrixIsVector(x);\n return matrix(x.toArray().sort(_comparator), x.storage());\n },\n 'Array, string': function Array_string(x, order) {\n _arrayIsVector(x);\n return x.sort(_comparator(order));\n },\n 'Matrix, string': function Matrix_string(x, order) {\n _matrixIsVector(x);\n return matrix(x.toArray().sort(_comparator(order)), x.storage());\n }\n });\n\n /**\n * Get the comparator for given order ('asc', 'desc', 'natural')\n * @param {'asc' | 'desc' | 'natural'} order\n * @return {Function} Returns a _comparator function\n */\n function _comparator(order) {\n if (order === 'asc') {\n return compareAsc;\n } else if (order === 'desc') {\n return compareDesc;\n } else if (order === 'natural') {\n return compareNatural;\n } else {\n throw new Error('String \"asc\", \"desc\", or \"natural\" expected');\n }\n }\n\n /**\n * Validate whether an array is one dimensional\n * Throws an error when this is not the case\n * @param {Array} array\n * @private\n */\n function _arrayIsVector(array) {\n if (size(array).length !== 1) {\n throw new Error('One dimensional array expected');\n }\n }\n\n /**\n * Validate whether a matrix is one dimensional\n * Throws an error when this is not the case\n * @param {Matrix} matrix\n * @private\n */\n function _matrixIsVector(matrix) {\n if (matrix.size().length !== 1) {\n throw new Error('One dimensional matrix expected');\n }\n }\n});", "import { deepForEach, reduce, containsCollections } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { safeNumberType } from '../../utils/number.js';\nimport { improveErrorMessage } from './utils/improveErrorMessage.js';\nvar name = 'max';\nvar dependencies = ['typed', 'config', 'numeric', 'larger'];\nexport var createMax = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n numeric,\n larger\n } = _ref;\n /**\n * Compute the maximum value of a matrix or a list with values.\n * In case of a multidimensional array, the maximum of the flattened array\n * will be calculated. When `dim` is provided, the maximum over the selected\n * dimension will be calculated. Parameter `dim` is zero-based.\n *\n * Syntax:\n *\n * math.max(a, b, c, ...)\n * math.max(A)\n * math.max(A, dimension)\n *\n * Examples:\n *\n * math.max(2, 1, 4, 3) // returns 4\n * math.max([2, 1, 4, 3]) // returns 4\n *\n * // maximum over a specified dimension (zero-based)\n * math.max([[2, 5], [4, 3], [1, 7]], 0) // returns [4, 7]\n * math.max([[2, 5], [4, 3], [1, 7]], 1) // returns [5, 4, 7]\n *\n * math.max(2.7, 7.1, -4.5, 2.0, 4.1) // returns 7.1\n * math.min(2.7, 7.1, -4.5, 2.0, 4.1) // returns -4.5\n *\n * See also:\n *\n * mean, median, min, prod, std, sum, variance\n *\n * @param {... *} args A single matrix or or multiple scalar values\n * @return {*} The maximum value\n */\n return typed(name, {\n // max([a, b, c, d, ...])\n 'Array | Matrix': _max,\n // max([a, b, c, d, ...], dim)\n 'Array | Matrix, number | BigNumber': function Array__Matrix_number__BigNumber(array, dim) {\n return reduce(array, dim.valueOf(), _largest);\n },\n // max(a, b, c, d, ...)\n '...': function _(args) {\n if (containsCollections(args)) {\n throw new TypeError('Scalar values expected in function max');\n }\n return _max(args);\n }\n });\n\n /**\n * Return the largest of two values\n * @param {*} x\n * @param {*} y\n * @returns {*} Returns x when x is largest, or y when y is largest\n * @private\n */\n function _largest(x, y) {\n try {\n return larger(x, y) ? x : y;\n } catch (err) {\n throw improveErrorMessage(err, 'max', y);\n }\n }\n\n /**\n * Recursively calculate the maximum value in an n-dimensional array\n * @param {Array} array\n * @return {number} max\n * @private\n */\n function _max(array) {\n var res;\n deepForEach(array, function (value) {\n try {\n if (isNaN(value) && typeof value === 'number') {\n res = NaN;\n } else if (res === undefined || larger(value, res)) {\n res = value;\n }\n } catch (err) {\n throw improveErrorMessage(err, 'max', value);\n }\n });\n if (res === undefined) {\n throw new Error('Cannot calculate max of an empty array');\n }\n\n // make sure returning numeric value: parse a string into a numeric value\n if (typeof res === 'string') {\n res = numeric(res, safeNumberType(res, config));\n }\n return res;\n }\n});", "import { containsCollections, deepForEach, reduce } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { safeNumberType } from '../../utils/number.js';\nimport { improveErrorMessage } from './utils/improveErrorMessage.js';\nvar name = 'min';\nvar dependencies = ['typed', 'config', 'numeric', 'smaller'];\nexport var createMin = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n numeric,\n smaller\n } = _ref;\n /**\n * Compute the minimum value of a matrix or a list of values.\n * In case of a multidimensional array, the minimum of the flattened array\n * will be calculated. When `dim` is provided, the minimum over the selected\n * dimension will be calculated. Parameter `dim` is zero-based.\n *\n * Syntax:\n *\n * math.min(a, b, c, ...)\n * math.min(A)\n * math.min(A, dimension)\n *\n * Examples:\n *\n * math.min(2, 1, 4, 3) // returns 1\n * math.min([2, 1, 4, 3]) // returns 1\n *\n * // minimum over a specified dimension (zero-based)\n * math.min([[2, 5], [4, 3], [1, 7]], 0) // returns [1, 3]\n * math.min([[2, 5], [4, 3], [1, 7]], 1) // returns [2, 3, 1]\n *\n * math.max(2.7, 7.1, -4.5, 2.0, 4.1) // returns 7.1\n * math.min(2.7, 7.1, -4.5, 2.0, 4.1) // returns -4.5\n *\n * See also:\n *\n * mean, median, max, prod, std, sum, variance\n *\n * @param {... *} args A single matrix or or multiple scalar values\n * @return {*} The minimum value\n */\n return typed(name, {\n // min([a, b, c, d, ...])\n 'Array | Matrix': _min,\n // min([a, b, c, d, ...], dim)\n 'Array | Matrix, number | BigNumber': function Array__Matrix_number__BigNumber(array, dim) {\n return reduce(array, dim.valueOf(), _smallest);\n },\n // min(a, b, c, d, ...)\n '...': function _(args) {\n if (containsCollections(args)) {\n throw new TypeError('Scalar values expected in function min');\n }\n return _min(args);\n }\n });\n\n /**\n * Return the smallest of two values\n * @param {*} x\n * @param {*} y\n * @returns {*} Returns x when x is smallest, or y when y is smallest\n * @private\n */\n function _smallest(x, y) {\n try {\n return smaller(x, y) ? x : y;\n } catch (err) {\n throw improveErrorMessage(err, 'min', y);\n }\n }\n\n /**\n * Recursively calculate the minimum value in an n-dimensional array\n * @param {Array} array\n * @return {number} min\n * @private\n */\n function _min(array) {\n var min;\n deepForEach(array, function (value) {\n try {\n if (isNaN(value) && typeof value === 'number') {\n min = NaN;\n } else if (min === undefined || smaller(value, min)) {\n min = value;\n }\n } catch (err) {\n throw improveErrorMessage(err, 'min', value);\n }\n });\n if (min === undefined) {\n throw new Error('Cannot calculate min of an empty array');\n }\n\n // make sure returning numeric value: parse a string into a numeric value\n if (typeof min === 'string') {\n min = numeric(min, safeNumberType(min, config));\n }\n return min;\n }\n});", "import { isArray, isMatrix, isString, typeOf } from '../../utils/is.js';\nimport { clone } from '../../utils/object.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'ImmutableDenseMatrix';\nvar dependencies = ['smaller', 'DenseMatrix'];\nexport var createImmutableDenseMatrixClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n smaller,\n DenseMatrix\n } = _ref;\n function ImmutableDenseMatrix(data, datatype) {\n if (!(this instanceof ImmutableDenseMatrix)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n if (datatype && !isString(datatype)) {\n throw new Error('Invalid datatype: ' + datatype);\n }\n if (isMatrix(data) || isArray(data)) {\n // use DenseMatrix implementation\n var matrix = new DenseMatrix(data, datatype);\n // internal structures\n this._data = matrix._data;\n this._size = matrix._size;\n this._datatype = matrix._datatype;\n this._min = null;\n this._max = null;\n } else if (data && isArray(data.data) && isArray(data.size)) {\n // initialize fields from JSON representation\n this._data = data.data;\n this._size = data.size;\n this._datatype = data.datatype;\n this._min = typeof data.min !== 'undefined' ? data.min : null;\n this._max = typeof data.max !== 'undefined' ? data.max : null;\n } else if (data) {\n // unsupported type\n throw new TypeError('Unsupported type of data (' + typeOf(data) + ')');\n } else {\n // nothing provided\n this._data = [];\n this._size = [0];\n this._datatype = datatype;\n this._min = null;\n this._max = null;\n }\n }\n ImmutableDenseMatrix.prototype = new DenseMatrix();\n\n /**\n * Attach type information\n */\n ImmutableDenseMatrix.prototype.type = 'ImmutableDenseMatrix';\n ImmutableDenseMatrix.prototype.isImmutableDenseMatrix = true;\n\n /**\n * Get a subset of the matrix, or replace a subset of the matrix.\n *\n * Usage:\n * const subset = matrix.subset(index) // retrieve subset\n * const value = matrix.subset(index, replacement) // replace subset\n *\n * @param {Index} index\n * @param {Array | ImmutableDenseMatrix | *} [replacement]\n * @param {*} [defaultValue=0] Default value, filled in on new entries when\n * the matrix is resized. If not provided,\n * new matrix elements will be filled with zeros.\n */\n ImmutableDenseMatrix.prototype.subset = function (index) {\n switch (arguments.length) {\n case 1:\n {\n // use base implementation\n var m = DenseMatrix.prototype.subset.call(this, index);\n // check result is a matrix\n if (isMatrix(m)) {\n // return immutable matrix\n return new ImmutableDenseMatrix({\n data: m._data,\n size: m._size,\n datatype: m._datatype\n });\n }\n return m;\n }\n // intentional fall through\n case 2:\n case 3:\n throw new Error('Cannot invoke set subset on an Immutable Matrix instance');\n default:\n throw new SyntaxError('Wrong number of arguments');\n }\n };\n\n /**\n * Replace a single element in the matrix.\n * @param {Number[]} index Zero-based index\n * @param {*} value\n * @param {*} [defaultValue] Default value, filled in on new entries when\n * the matrix is resized. If not provided,\n * new matrix elements will be left undefined.\n * @return {ImmutableDenseMatrix} self\n */\n ImmutableDenseMatrix.prototype.set = function () {\n throw new Error('Cannot invoke set on an Immutable Matrix instance');\n };\n\n /**\n * Resize the matrix to the given size. Returns a copy of the matrix when\n * `copy=true`, otherwise return the matrix itself (resize in place).\n *\n * @param {Number[]} size The new size the matrix should have.\n * @param {*} [defaultValue=0] Default value, filled in on new entries.\n * If not provided, the matrix elements will\n * be filled with zeros.\n * @param {boolean} [copy] Return a resized copy of the matrix\n *\n * @return {Matrix} The resized matrix\n */\n ImmutableDenseMatrix.prototype.resize = function () {\n throw new Error('Cannot invoke resize on an Immutable Matrix instance');\n };\n\n /**\n * Disallows reshaping in favor of immutability.\n *\n * @throws {Error} Operation not allowed\n */\n ImmutableDenseMatrix.prototype.reshape = function () {\n throw new Error('Cannot invoke reshape on an Immutable Matrix instance');\n };\n\n /**\n * Create a clone of the matrix\n * @return {ImmutableDenseMatrix} clone\n */\n ImmutableDenseMatrix.prototype.clone = function () {\n return new ImmutableDenseMatrix({\n data: clone(this._data),\n size: clone(this._size),\n datatype: this._datatype\n });\n };\n\n /**\n * Get a JSON representation of the matrix\n * @returns {Object}\n */\n ImmutableDenseMatrix.prototype.toJSON = function () {\n return {\n mathjs: 'ImmutableDenseMatrix',\n data: this._data,\n size: this._size,\n datatype: this._datatype\n };\n };\n\n /**\n * Generate a matrix from a JSON object\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"ImmutableDenseMatrix\", data: [], size: []}`,\n * where mathjs is optional\n * @returns {ImmutableDenseMatrix}\n */\n ImmutableDenseMatrix.fromJSON = function (json) {\n return new ImmutableDenseMatrix(json);\n };\n\n /**\n * Swap rows i and j in Matrix.\n *\n * @param {Number} i Matrix row index 1\n * @param {Number} j Matrix row index 2\n *\n * @return {Matrix} The matrix reference\n */\n ImmutableDenseMatrix.prototype.swapRows = function () {\n throw new Error('Cannot invoke swapRows on an Immutable Matrix instance');\n };\n\n /**\n * Calculate the minimum value in the set\n * @return {Number | undefined} min\n */\n ImmutableDenseMatrix.prototype.min = function () {\n // check min has been calculated before\n if (this._min === null) {\n // minimum\n var m = null;\n // compute min\n this.forEach(function (v) {\n if (m === null || smaller(v, m)) {\n m = v;\n }\n });\n this._min = m !== null ? m : undefined;\n }\n return this._min;\n };\n\n /**\n * Calculate the maximum value in the set\n * @return {Number | undefined} max\n */\n ImmutableDenseMatrix.prototype.max = function () {\n // check max has been calculated before\n if (this._max === null) {\n // maximum\n var m = null;\n // compute max\n this.forEach(function (v) {\n if (m === null || smaller(m, v)) {\n m = v;\n }\n });\n this._max = m !== null ? m : undefined;\n }\n return this._max;\n };\n return ImmutableDenseMatrix;\n}, {\n isClass: true\n});", "import { isArray, isMatrix, isRange } from '../../utils/is.js';\nimport { clone } from '../../utils/object.js';\nimport { isInteger } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'Index';\nvar dependencies = ['ImmutableDenseMatrix', 'getMatrixDataType'];\nexport var createIndexClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n ImmutableDenseMatrix,\n getMatrixDataType\n } = _ref;\n /**\n * Create an index. An Index can store ranges and sets for multiple dimensions.\n * Matrix.get, Matrix.set, and math.subset accept an Index as input.\n *\n * Usage:\n * const index = new Index(range1, range2, matrix1, array1, ...)\n *\n * Where each parameter can be any of:\n * A number\n * A string (containing a name of an object property)\n * An instance of Range\n * An Array with the Set values\n * An Array with Booleans\n * A Matrix with the Set values\n * A Matrix with Booleans\n *\n * The parameters start, end, and step must be integer numbers.\n *\n * @class Index\n * @Constructor Index\n * @param {...*} ranges\n */\n function Index(ranges) {\n if (!(this instanceof Index)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n this._dimensions = [];\n this._sourceSize = [];\n this._isScalar = true;\n for (var i = 0, ii = arguments.length; i < ii; i++) {\n var arg = arguments[i];\n var argIsArray = isArray(arg);\n var argIsMatrix = isMatrix(arg);\n var sourceSize = null;\n if (isRange(arg)) {\n this._dimensions.push(arg);\n this._isScalar = false;\n } else if (argIsArray || argIsMatrix) {\n // create matrix\n var m = void 0;\n if (getMatrixDataType(arg) === 'boolean') {\n if (argIsArray) m = _createImmutableMatrix(_booleansArrayToNumbersForIndex(arg).valueOf());\n if (argIsMatrix) m = _createImmutableMatrix(_booleansArrayToNumbersForIndex(arg._data).valueOf());\n sourceSize = arg.valueOf().length;\n } else {\n m = _createImmutableMatrix(arg.valueOf());\n }\n this._dimensions.push(m);\n // size\n var size = m.size();\n // scalar\n if (size.length !== 1 || size[0] !== 1 || sourceSize !== null) {\n this._isScalar = false;\n }\n } else if (typeof arg === 'number') {\n this._dimensions.push(_createImmutableMatrix([arg]));\n } else if (typeof arg === 'string') {\n // object property (arguments.count should be 1)\n this._dimensions.push(arg);\n } else {\n throw new TypeError('Dimension must be an Array, Matrix, number, string, or Range');\n }\n this._sourceSize.push(sourceSize);\n // TODO: implement support for wildcard '*'\n }\n }\n\n /**\n * Attach type information\n */\n Index.prototype.type = 'Index';\n Index.prototype.isIndex = true;\n function _createImmutableMatrix(arg) {\n // loop array elements\n for (var i = 0, l = arg.length; i < l; i++) {\n if (typeof arg[i] !== 'number' || !isInteger(arg[i])) {\n throw new TypeError('Index parameters must be positive integer numbers');\n }\n }\n // create matrix\n return new ImmutableDenseMatrix(arg);\n }\n\n /**\n * Create a clone of the index\n * @memberof Index\n * @return {Index} clone\n */\n Index.prototype.clone = function () {\n var index = new Index();\n index._dimensions = clone(this._dimensions);\n index._isScalar = this._isScalar;\n index._sourceSize = this._sourceSize;\n return index;\n };\n\n /**\n * Create an index from an array with ranges/numbers\n * @memberof Index\n * @param {Array.} ranges\n * @return {Index} index\n * @private\n */\n Index.create = function (ranges) {\n var index = new Index();\n Index.apply(index, ranges);\n return index;\n };\n\n /**\n * Retrieve the size of the index, the number of elements for each dimension.\n * @memberof Index\n * @returns {number[]} size\n */\n Index.prototype.size = function () {\n var size = [];\n for (var i = 0, ii = this._dimensions.length; i < ii; i++) {\n var d = this._dimensions[i];\n size[i] = typeof d === 'string' ? 1 : d.size()[0];\n }\n return size;\n };\n\n /**\n * Get the maximum value for each of the indexes ranges.\n * @memberof Index\n * @returns {number[]} max\n */\n Index.prototype.max = function () {\n var values = [];\n for (var i = 0, ii = this._dimensions.length; i < ii; i++) {\n var range = this._dimensions[i];\n values[i] = typeof range === 'string' ? range : range.max();\n }\n return values;\n };\n\n /**\n * Get the minimum value for each of the indexes ranges.\n * @memberof Index\n * @returns {number[]} min\n */\n Index.prototype.min = function () {\n var values = [];\n for (var i = 0, ii = this._dimensions.length; i < ii; i++) {\n var range = this._dimensions[i];\n values[i] = typeof range === 'string' ? range : range.min();\n }\n return values;\n };\n\n /**\n * Loop over each of the ranges of the index\n * @memberof Index\n * @param {Function} callback Called for each range with a Range as first\n * argument, the dimension as second, and the\n * index object as third.\n */\n Index.prototype.forEach = function (callback) {\n for (var i = 0, ii = this._dimensions.length; i < ii; i++) {\n callback(this._dimensions[i], i, this);\n }\n };\n\n /**\n * Retrieve the dimension for the given index\n * @memberof Index\n * @param {Number} dim Number of the dimension\n * @returns {Range | null} range\n */\n Index.prototype.dimension = function (dim) {\n if (typeof dim !== 'number') {\n return null;\n }\n return this._dimensions[dim] || null;\n };\n\n /**\n * Test whether this index contains an object property\n * @returns {boolean} Returns true if the index is an object property\n */\n Index.prototype.isObjectProperty = function () {\n return this._dimensions.length === 1 && typeof this._dimensions[0] === 'string';\n };\n\n /**\n * Returns the object property name when the Index holds a single object property,\n * else returns null\n * @returns {string | null}\n */\n Index.prototype.getObjectProperty = function () {\n return this.isObjectProperty() ? this._dimensions[0] : null;\n };\n\n /**\n * Test whether this index contains only a single value.\n *\n * This is the case when the index is created with only scalar values as ranges,\n * not for ranges resolving into a single value.\n * @memberof Index\n * @return {boolean} isScalar\n */\n Index.prototype.isScalar = function () {\n return this._isScalar;\n };\n\n /**\n * Expand the Index into an array.\n * For example new Index([0,3], [2,7]) returns [[0,1,2], [2,3,4,5,6]]\n * @memberof Index\n * @returns {Array} array\n */\n Index.prototype.toArray = function () {\n var array = [];\n for (var i = 0, ii = this._dimensions.length; i < ii; i++) {\n var dimension = this._dimensions[i];\n array.push(typeof dimension === 'string' ? dimension : dimension.toArray());\n }\n return array;\n };\n\n /**\n * Get the primitive value of the Index, a two dimensional array.\n * Equivalent to Index.toArray().\n * @memberof Index\n * @returns {Array} array\n */\n Index.prototype.valueOf = Index.prototype.toArray;\n\n /**\n * Get the string representation of the index, for example '[2:6]' or '[0:2:10, 4:7, [1,2,3]]'\n * @memberof Index\n * @returns {String} str\n */\n Index.prototype.toString = function () {\n var strings = [];\n for (var i = 0, ii = this._dimensions.length; i < ii; i++) {\n var dimension = this._dimensions[i];\n if (typeof dimension === 'string') {\n strings.push(JSON.stringify(dimension));\n } else {\n strings.push(dimension.toString());\n }\n }\n return '[' + strings.join(', ') + ']';\n };\n\n /**\n * Get a JSON representation of the Index\n * @memberof Index\n * @returns {Object} Returns a JSON object structured as:\n * `{\"mathjs\": \"Index\", \"ranges\": [{\"mathjs\": \"Range\", start: 0, end: 10, step:1}, ...]}`\n */\n Index.prototype.toJSON = function () {\n return {\n mathjs: 'Index',\n dimensions: this._dimensions\n };\n };\n\n /**\n * Instantiate an Index from a JSON object\n * @memberof Index\n * @param {Object} json A JSON object structured as:\n * `{\"mathjs\": \"Index\", \"dimensions\": [{\"mathjs\": \"Range\", start: 0, end: 10, step:1}, ...]}`\n * @return {Index}\n */\n Index.fromJSON = function (json) {\n return Index.create(json.dimensions);\n };\n return Index;\n}, {\n isClass: true\n});\n\n/**\n * Receives an array of booleans and returns an array of Numbers for Index\n * @param {Array} booleanArrayIndex An array of booleans\n * @return {Array} A set of numbers ready for index\n */\nfunction _booleansArrayToNumbersForIndex(booleanArrayIndex) {\n // gets an array of booleans and returns an array of numbers\n var indexOfNumbers = [];\n booleanArrayIndex.forEach((bool, idx) => {\n if (bool) {\n indexOfNumbers.push(idx);\n }\n });\n return indexOfNumbers;\n}", "import { factory } from '../../utils/factory.js';\nvar name = 'FibonacciHeap';\nvar dependencies = ['smaller', 'larger'];\nexport var createFibonacciHeapClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n smaller,\n larger\n } = _ref;\n var oneOverLogPhi = 1.0 / Math.log((1.0 + Math.sqrt(5.0)) / 2.0);\n\n /**\n * Fibonacci Heap implementation, used interally for Matrix math.\n * @class FibonacciHeap\n * @constructor FibonacciHeap\n */\n function FibonacciHeap() {\n if (!(this instanceof FibonacciHeap)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n // initialize fields\n this._minimum = null;\n this._size = 0;\n }\n\n /**\n * Attach type information\n */\n FibonacciHeap.prototype.type = 'FibonacciHeap';\n FibonacciHeap.prototype.isFibonacciHeap = true;\n\n /**\n * Inserts a new data element into the heap. No heap consolidation is\n * performed at this time, the new node is simply inserted into the root\n * list of this heap. Running time: O(1) actual.\n * @memberof FibonacciHeap\n */\n FibonacciHeap.prototype.insert = function (key, value) {\n // create node\n var node = {\n key,\n value,\n degree: 0\n };\n // check we have a node in the minimum\n if (this._minimum) {\n // minimum node\n var minimum = this._minimum;\n // update left & right of node\n node.left = minimum;\n node.right = minimum.right;\n minimum.right = node;\n node.right.left = node;\n // update minimum node in heap if needed\n if (smaller(key, minimum.key)) {\n // node has a smaller key, use it as minimum\n this._minimum = node;\n }\n } else {\n // set left & right\n node.left = node;\n node.right = node;\n // this is the first node\n this._minimum = node;\n }\n // increment number of nodes in heap\n this._size++;\n // return node\n return node;\n };\n\n /**\n * Returns the number of nodes in heap. Running time: O(1) actual.\n * @memberof FibonacciHeap\n */\n FibonacciHeap.prototype.size = function () {\n return this._size;\n };\n\n /**\n * Removes all elements from this heap.\n * @memberof FibonacciHeap\n */\n FibonacciHeap.prototype.clear = function () {\n this._minimum = null;\n this._size = 0;\n };\n\n /**\n * Returns true if the heap is empty, otherwise false.\n * @memberof FibonacciHeap\n */\n FibonacciHeap.prototype.isEmpty = function () {\n return this._size === 0;\n };\n\n /**\n * Extracts the node with minimum key from heap. Amortized running\n * time: O(log n).\n * @memberof FibonacciHeap\n */\n FibonacciHeap.prototype.extractMinimum = function () {\n // node to remove\n var node = this._minimum;\n // check we have a minimum\n if (node === null) {\n return node;\n }\n // current minimum\n var minimum = this._minimum;\n // get number of children\n var numberOfChildren = node.degree;\n // pointer to the first child\n var x = node.child;\n // for each child of node do...\n while (numberOfChildren > 0) {\n // store node in right side\n var tempRight = x.right;\n // remove x from child list\n x.left.right = x.right;\n x.right.left = x.left;\n // add x to root list of heap\n x.left = minimum;\n x.right = minimum.right;\n minimum.right = x;\n x.right.left = x;\n // set Parent[x] to null\n x.parent = null;\n x = tempRight;\n numberOfChildren--;\n }\n // remove node from root list of heap\n node.left.right = node.right;\n node.right.left = node.left;\n // update minimum\n if (node === node.right) {\n // empty\n minimum = null;\n } else {\n // update minimum\n minimum = node.right;\n // we need to update the pointer to the root with minimum key\n minimum = _findMinimumNode(minimum, this._size);\n }\n // decrement size of heap\n this._size--;\n // update minimum\n this._minimum = minimum;\n // return node\n return node;\n };\n\n /**\n * Removes a node from the heap given the reference to the node. The trees\n * in the heap will be consolidated, if necessary. This operation may fail\n * to remove the correct element if there are nodes with key value -Infinity.\n * Running time: O(log n) amortized.\n * @memberof FibonacciHeap\n */\n FibonacciHeap.prototype.remove = function (node) {\n // decrease key value\n this._minimum = _decreaseKey(this._minimum, node, -1);\n // remove the smallest\n this.extractMinimum();\n };\n\n /**\n * Decreases the key value for a heap node, given the new value to take on.\n * The structure of the heap may be changed and will not be consolidated.\n * Running time: O(1) amortized.\n * @memberof FibonacciHeap\n */\n function _decreaseKey(minimum, node, key) {\n // set node key\n node.key = key;\n // get parent node\n var parent = node.parent;\n if (parent && smaller(node.key, parent.key)) {\n // remove node from parent\n _cut(minimum, node, parent);\n // remove all nodes from parent to the root parent\n _cascadingCut(minimum, parent);\n }\n // update minimum node if needed\n if (smaller(node.key, minimum.key)) {\n minimum = node;\n }\n // return minimum\n return minimum;\n }\n\n /**\n * The reverse of the link operation: removes node from the child list of parent.\n * This method assumes that min is non-null. Running time: O(1).\n * @memberof FibonacciHeap\n */\n function _cut(minimum, node, parent) {\n // remove node from parent children and decrement Degree[parent]\n node.left.right = node.right;\n node.right.left = node.left;\n parent.degree--;\n // reset y.child if necessary\n if (parent.child === node) {\n parent.child = node.right;\n }\n // remove child if degree is 0\n if (parent.degree === 0) {\n parent.child = null;\n }\n // add node to root list of heap\n node.left = minimum;\n node.right = minimum.right;\n minimum.right = node;\n node.right.left = node;\n // set parent[node] to null\n node.parent = null;\n // set mark[node] to false\n node.mark = false;\n }\n\n /**\n * Performs a cascading cut operation. This cuts node from its parent and then\n * does the same for its parent, and so on up the tree.\n * Running time: O(log n); O(1) excluding the recursion.\n * @memberof FibonacciHeap\n */\n function _cascadingCut(minimum, node) {\n // store parent node\n var parent = node.parent;\n // if there's a parent...\n if (!parent) {\n return;\n }\n // if node is unmarked, set it marked\n if (!node.mark) {\n node.mark = true;\n } else {\n // it's marked, cut it from parent\n _cut(minimum, node, parent);\n // cut its parent as well\n _cascadingCut(parent);\n }\n }\n\n /**\n * Make the first node a child of the second one. Running time: O(1) actual.\n * @memberof FibonacciHeap\n */\n var _linkNodes = function _linkNodes(node, parent) {\n // remove node from root list of heap\n node.left.right = node.right;\n node.right.left = node.left;\n // make node a Child of parent\n node.parent = parent;\n if (!parent.child) {\n parent.child = node;\n node.right = node;\n node.left = node;\n } else {\n node.left = parent.child;\n node.right = parent.child.right;\n parent.child.right = node;\n node.right.left = node;\n }\n // increase degree[parent]\n parent.degree++;\n // set mark[node] false\n node.mark = false;\n };\n function _findMinimumNode(minimum, size) {\n // to find trees of the same degree efficiently we use an array of length O(log n) in which we keep a pointer to one root of each degree\n var arraySize = Math.floor(Math.log(size) * oneOverLogPhi) + 1;\n // create list with initial capacity\n var array = new Array(arraySize);\n // find the number of root nodes.\n var numRoots = 0;\n var x = minimum;\n if (x) {\n numRoots++;\n x = x.right;\n while (x !== minimum) {\n numRoots++;\n x = x.right;\n }\n }\n // vars\n var y;\n // For each node in root list do...\n while (numRoots > 0) {\n // access this node's degree..\n var d = x.degree;\n // get next node\n var next = x.right;\n // check if there is a node already in array with the same degree\n while (true) {\n // get node with the same degree is any\n y = array[d];\n if (!y) {\n break;\n }\n // make one node with the same degree a child of the other, do this based on the key value.\n if (larger(x.key, y.key)) {\n var temp = y;\n y = x;\n x = temp;\n }\n // make y a child of x\n _linkNodes(y, x);\n // we have handled this degree, go to next one.\n array[d] = null;\n d++;\n }\n // save this node for later when we might encounter another of the same degree.\n array[d] = x;\n // move forward through list.\n x = next;\n numRoots--;\n }\n // Set min to null (effectively losing the root list) and reconstruct the root list from the array entries in array[].\n minimum = null;\n // loop nodes in array\n for (var i = 0; i < arraySize; i++) {\n // get current node\n y = array[i];\n if (!y) {\n continue;\n }\n // check if we have a linked list\n if (minimum) {\n // First remove node from root list.\n y.left.right = y.right;\n y.right.left = y.left;\n // now add to root list, again.\n y.left = minimum;\n y.right = minimum.right;\n minimum.right = y;\n y.right.left = y;\n // check if this is a new min.\n if (smaller(y.key, minimum.key)) {\n minimum = y;\n }\n } else {\n minimum = y;\n }\n }\n return minimum;\n }\n return FibonacciHeap;\n}, {\n isClass: true\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'Spa';\nvar dependencies = ['addScalar', 'equalScalar', 'FibonacciHeap'];\nexport var createSpaClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n addScalar,\n equalScalar,\n FibonacciHeap\n } = _ref;\n /**\n * An ordered Sparse Accumulator is a representation for a sparse vector that includes a dense array\n * of the vector elements and an ordered list of non-zero elements.\n */\n function Spa() {\n if (!(this instanceof Spa)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n // allocate vector, TODO use typed arrays\n this._values = [];\n this._heap = new FibonacciHeap();\n }\n\n /**\n * Attach type information\n */\n Spa.prototype.type = 'Spa';\n Spa.prototype.isSpa = true;\n\n /**\n * Set the value for index i.\n *\n * @param {number} i The index\n * @param {number | BigNumber | Complex} The value at index i\n */\n Spa.prototype.set = function (i, v) {\n // check we have a value @ i\n if (!this._values[i]) {\n // insert in heap\n var node = this._heap.insert(i, v);\n // set the value @ i\n this._values[i] = node;\n } else {\n // update the value @ i\n this._values[i].value = v;\n }\n };\n Spa.prototype.get = function (i) {\n var node = this._values[i];\n if (node) {\n return node.value;\n }\n return 0;\n };\n Spa.prototype.accumulate = function (i, v) {\n // node @ i\n var node = this._values[i];\n if (!node) {\n // insert in heap\n node = this._heap.insert(i, v);\n // initialize value\n this._values[i] = node;\n } else {\n // accumulate value\n node.value = addScalar(node.value, v);\n }\n };\n Spa.prototype.forEach = function (from, to, callback) {\n // references\n var heap = this._heap;\n var values = this._values;\n // nodes\n var nodes = [];\n // node with minimum key, save it\n var node = heap.extractMinimum();\n if (node) {\n nodes.push(node);\n }\n // extract nodes from heap (ordered)\n while (node && node.key <= to) {\n // check it is in range\n if (node.key >= from) {\n // check value is not zero\n if (!equalScalar(node.value, 0)) {\n // invoke callback\n callback(node.key, node.value, this);\n }\n }\n // extract next node, save it\n node = heap.extractMinimum();\n if (node) {\n nodes.push(node);\n }\n }\n // reinsert all nodes in heap\n for (var i = 0; i < nodes.length; i++) {\n // current node\n var n = nodes[i];\n // insert node in heap\n node = heap.insert(n.key, n.value);\n // update values\n values[node.key] = node;\n }\n };\n Spa.prototype.swap = function (i, j) {\n // node @ i and j\n var nodei = this._values[i];\n var nodej = this._values[j];\n // check we need to insert indeces\n if (!nodei && nodej) {\n // insert in heap\n nodei = this._heap.insert(i, nodej.value);\n // remove from heap\n this._heap.remove(nodej);\n // set values\n this._values[i] = nodei;\n this._values[j] = undefined;\n } else if (nodei && !nodej) {\n // insert in heap\n nodej = this._heap.insert(j, nodei.value);\n // remove from heap\n this._heap.remove(nodei);\n // set values\n this._values[j] = nodej;\n this._values[i] = undefined;\n } else if (nodei && nodej) {\n // swap values\n var v = nodei.value;\n nodei.value = nodej.value;\n nodej.value = v;\n }\n };\n return Spa;\n}, {\n isClass: true\n});", "// (c) 2018, Mariusz Nowak\n// SPDX-License-Identifier: ISC\n// Derived from https://github.com/medikoo/lru-queue\nexport function lruQueue(limit) {\n var size = 0;\n var base = 1;\n var queue = Object.create(null);\n var map = Object.create(null);\n var index = 0;\n var del = function del(id) {\n var oldIndex = map[id];\n if (!oldIndex) return;\n delete queue[oldIndex];\n delete map[id];\n --size;\n if (base !== oldIndex) return;\n if (!size) {\n index = 0;\n base = 1;\n return;\n }\n while (!Object.prototype.hasOwnProperty.call(queue, ++base)) {/* empty */}\n };\n limit = Math.abs(limit);\n return {\n hit: function hit(id) {\n var oldIndex = map[id];\n var nuIndex = ++index;\n queue[nuIndex] = id;\n map[id] = nuIndex;\n if (!oldIndex) {\n ++size;\n if (size <= limit) return undefined;\n id = queue[base];\n del(id);\n return id;\n }\n delete queue[oldIndex];\n if (base !== oldIndex) return undefined;\n while (!Object.prototype.hasOwnProperty.call(queue, ++base)) {/* empty */}\n return undefined;\n },\n delete: del,\n clear: function clear() {\n size = index = 0;\n base = 1;\n queue = Object.create(null);\n map = Object.create(null);\n }\n };\n}", "// function utils\n\nimport { lruQueue } from './lruQueue.js';\n\n/**\n * Memoize a given function by caching the computed result.\n * The cache of a memoized function can be cleared by deleting the `cache`\n * property of the function.\n *\n * @param {function} fn The function to be memoized.\n * Must be a pure function.\n * @param {Object} [options]\n * @param {function(args: Array): string} [options.hasher]\n * A custom hash builder. Is JSON.stringify by default.\n * @param {number | undefined} [options.limit]\n * Maximum number of values that may be cached. Undefined indicates\n * unlimited (default)\n * @return {function} Returns the memoized function\n */\nexport function memoize(fn) {\n var {\n hasher,\n limit\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n limit = limit == null ? Number.POSITIVE_INFINITY : limit;\n hasher = hasher == null ? JSON.stringify : hasher;\n return function memoize() {\n if (typeof memoize.cache !== 'object') {\n memoize.cache = {\n values: new Map(),\n lru: lruQueue(limit || Number.POSITIVE_INFINITY)\n };\n }\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n var hash = hasher(args);\n if (memoize.cache.values.has(hash)) {\n memoize.cache.lru.hit(hash);\n return memoize.cache.values.get(hash);\n }\n var newVal = fn.apply(fn, args);\n memoize.cache.values.set(hash, newVal);\n memoize.cache.values.delete(memoize.cache.lru.hit(hash));\n return newVal;\n };\n}\n\n/**\n * Memoize a given function by caching all results and the arguments,\n * and comparing against the arguments of previous results before\n * executing again.\n * This is less performant than `memoize` which calculates a hash,\n * which is very fast to compare. Use `memoizeCompare` only when it is\n * not possible to create a unique serializable hash from the function\n * arguments.\n * The isEqual function must compare two sets of arguments\n * and return true when equal (can be a deep equality check for example).\n * @param {function} fn\n * @param {function(a: *, b: *) : boolean} isEqual\n * @returns {function}\n */\nexport function memoizeCompare(fn, isEqual) {\n var memoize = function memoize() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n for (var c = 0; c < memoize.cache.length; c++) {\n var cached = memoize.cache[c];\n if (isEqual(args, cached.args)) {\n // TODO: move this cache entry to the top so recently used entries move up?\n return cached.res;\n }\n }\n var res = fn.apply(fn, args);\n memoize.cache.unshift({\n args,\n res\n });\n return res;\n };\n memoize.cache = [];\n return memoize;\n}", "import { memoize } from '../function.js';\n\n/**\n * Calculate BigNumber e\n * @param {function} BigNumber BigNumber constructor\n * @returns {BigNumber} Returns e\n */\nexport var createBigNumberE = memoize(function (BigNumber) {\n return new BigNumber(1).exp();\n}, {\n hasher\n});\n\n/**\n * Calculate BigNumber golden ratio, phi = (1+sqrt(5))/2\n * @param {function} BigNumber BigNumber constructor\n * @returns {BigNumber} Returns phi\n */\nexport var createBigNumberPhi = memoize(function (BigNumber) {\n return new BigNumber(1).plus(new BigNumber(5).sqrt()).div(2);\n}, {\n hasher\n});\n\n/**\n * Calculate BigNumber pi.\n * @param {function} BigNumber BigNumber constructor\n * @returns {BigNumber} Returns pi\n */\nexport var createBigNumberPi = memoize(function (BigNumber) {\n return BigNumber.acos(-1);\n}, {\n hasher\n});\n\n/**\n * Calculate BigNumber tau, tau = 2 * pi\n * @param {function} BigNumber BigNumber constructor\n * @returns {BigNumber} Returns tau\n */\nexport var createBigNumberTau = memoize(function (BigNumber) {\n return createBigNumberPi(BigNumber).times(2);\n}, {\n hasher\n});\n\n/**\n * Create a hash for a BigNumber constructor function. The created has is\n * the configured precision\n * @param {Array} args Supposed to contain a single entry with\n * a BigNumber constructor\n * @return {number} precision\n * @private\n */\nfunction hasher(args) {\n return args[0].precision;\n}", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport { isComplex, isUnit, typeOf } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nimport { memoize } from '../../utils/function.js';\nimport { endsWith } from '../../utils/string.js';\nimport { clone, hasOwnProperty } from '../../utils/object.js';\nimport { createBigNumberPi as createPi } from '../../utils/bignumber/constants.js';\nvar name = 'Unit';\nvar dependencies = ['?on', 'config', 'addScalar', 'subtractScalar', 'multiplyScalar', 'divideScalar', 'pow', 'abs', 'fix', 'round', 'equal', 'isNumeric', 'format', 'number', 'Complex', 'BigNumber', 'Fraction'];\nexport var createUnitClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n on,\n config,\n addScalar,\n subtractScalar,\n multiplyScalar,\n divideScalar,\n pow,\n abs,\n fix,\n round,\n equal,\n isNumeric,\n format,\n number: _number,\n Complex,\n BigNumber: _BigNumber,\n Fraction: _Fraction\n } = _ref;\n var toNumber = _number;\n /**\n * A unit can be constructed in the following ways:\n *\n * const a = new Unit(value, valuelessUnit)\n * const b = new Unit(null, valuelessUnit)\n * const c = Unit.parse(str)\n *\n * Example usage:\n *\n * const a = new Unit(5, 'cm') // 50 mm\n * const b = Unit.parse('23 kg') // 23 kg\n * const c = math.in(a, new Unit(null, 'm') // 0.05 m\n * const d = new Unit(9.81, \"m/s^2\") // 9.81 m/s^2\n *\n * @class Unit\n * @constructor Unit\n * @param {number | BigNumber | Fraction | Complex | boolean} [value] A value like 5.2\n * @param {string | Unit} valuelessUnit A unit without value. Can have prefix, like \"cm\"\n */\n function Unit(value, valuelessUnit) {\n if (!(this instanceof Unit)) {\n throw new Error('Constructor must be called with the new operator');\n }\n if (!(value === null || value === undefined || isNumeric(value) || isComplex(value))) {\n throw new TypeError('First parameter in Unit constructor must be number, BigNumber, Fraction, Complex, or undefined');\n }\n this.fixPrefix = false; // if true, function format will not search for the\n // best prefix but leave it as initially provided.\n // fixPrefix is set true by the method Unit.to\n\n // The justification behind this is that if the constructor is explicitly called,\n // the caller wishes the units to be returned exactly as supplied.\n this.skipAutomaticSimplification = true;\n if (valuelessUnit === undefined) {\n this.units = [];\n this.dimensions = BASE_DIMENSIONS.map(x => 0);\n } else if (typeof valuelessUnit === 'string') {\n var u = Unit.parse(valuelessUnit);\n this.units = u.units;\n this.dimensions = u.dimensions;\n } else if (isUnit(valuelessUnit) && valuelessUnit.value === null) {\n // clone from valuelessUnit\n this.fixPrefix = valuelessUnit.fixPrefix;\n this.skipAutomaticSimplification = valuelessUnit.skipAutomaticSimplification;\n this.dimensions = valuelessUnit.dimensions.slice(0);\n this.units = valuelessUnit.units.map(u => _extends({}, u));\n } else {\n throw new TypeError('Second parameter in Unit constructor must be a string or valueless Unit');\n }\n this.value = this._normalize(value);\n }\n\n /**\n * Attach type information\n */\n Object.defineProperty(Unit, 'name', {\n value: 'Unit'\n });\n Unit.prototype.constructor = Unit;\n Unit.prototype.type = 'Unit';\n Unit.prototype.isUnit = true;\n\n // private variables and functions for the Unit parser\n var text, index, c;\n function skipWhitespace() {\n while (c === ' ' || c === '\\t') {\n next();\n }\n }\n function isDigitDot(c) {\n return c >= '0' && c <= '9' || c === '.';\n }\n function isDigit(c) {\n return c >= '0' && c <= '9';\n }\n function next() {\n index++;\n c = text.charAt(index);\n }\n function revert(oldIndex) {\n index = oldIndex;\n c = text.charAt(index);\n }\n function parseNumber() {\n var number = '';\n var oldIndex = index;\n if (c === '+') {\n next();\n } else if (c === '-') {\n number += c;\n next();\n }\n if (!isDigitDot(c)) {\n // a + or - must be followed by a digit\n revert(oldIndex);\n return null;\n }\n\n // get number, can have a single dot\n if (c === '.') {\n number += c;\n next();\n if (!isDigit(c)) {\n // this is no legal number, it is just a dot\n revert(oldIndex);\n return null;\n }\n } else {\n while (isDigit(c)) {\n number += c;\n next();\n }\n if (c === '.') {\n number += c;\n next();\n }\n }\n while (isDigit(c)) {\n number += c;\n next();\n }\n\n // check for exponential notation like \"2.3e-4\" or \"1.23e50\"\n if (c === 'E' || c === 'e') {\n // The grammar branches here. This could either be part of an exponent or the start of a unit that begins with the letter e, such as \"4exabytes\"\n\n var tentativeNumber = '';\n var tentativeIndex = index;\n tentativeNumber += c;\n next();\n if (c === '+' || c === '-') {\n tentativeNumber += c;\n next();\n }\n\n // Scientific notation MUST be followed by an exponent (otherwise we assume it is not scientific notation)\n if (!isDigit(c)) {\n // The e or E must belong to something else, so return the number without the e or E.\n revert(tentativeIndex);\n return number;\n }\n\n // We can now safely say that this is scientific notation.\n number = number + tentativeNumber;\n while (isDigit(c)) {\n number += c;\n next();\n }\n }\n return number;\n }\n function parseUnit() {\n var unitName = '';\n\n // Alphanumeric characters only; matches [a-zA-Z0-9]\n while (isDigit(c) || Unit.isValidAlpha(c)) {\n unitName += c;\n next();\n }\n\n // Must begin with [a-zA-Z]\n var firstC = unitName.charAt(0);\n if (Unit.isValidAlpha(firstC)) {\n return unitName;\n } else {\n return null;\n }\n }\n function parseCharacter(toFind) {\n if (c === toFind) {\n next();\n return toFind;\n } else {\n return null;\n }\n }\n\n /**\n * Parse a string into a unit. The value of the unit is parsed as number,\n * BigNumber, or Fraction depending on the math.js config setting `number`.\n *\n * Throws an exception if the provided string does not contain a valid unit or\n * cannot be parsed.\n * @memberof Unit\n * @param {string} str A string like \"5.2 inch\", \"4e2 cm/s^2\"\n * @return {Unit} unit\n */\n Unit.parse = function (str, options) {\n options = options || {};\n text = str;\n index = -1;\n c = '';\n if (typeof text !== 'string') {\n throw new TypeError('Invalid argument in Unit.parse, string expected');\n }\n var unit = new Unit();\n unit.units = [];\n var powerMultiplierCurrent = 1;\n var expectingUnit = false;\n\n // A unit should follow this pattern:\n // [number] ...[ [*/] unit[^number] ]\n // unit[^number] ... [ [*/] unit[^number] ]\n\n // Rules:\n // number is any floating point number.\n // unit is any alphanumeric string beginning with an alpha. Units with names like e3 should be avoided because they look like the exponent of a floating point number!\n // The string may optionally begin with a number.\n // Each unit may optionally be followed by ^number.\n // Whitespace or a forward slash is recommended between consecutive units, although the following technically is parseable:\n // 2m^2kg/s^2\n // it is not good form. If a unit starts with e, then it could be confused as a floating point number:\n // 4erg\n\n next();\n skipWhitespace();\n\n // Optional number at the start of the string\n var valueStr = parseNumber();\n var value = null;\n if (valueStr) {\n if (config.number === 'BigNumber') {\n value = new _BigNumber(valueStr);\n } else if (config.number === 'Fraction') {\n try {\n // not all numbers can be turned in Fractions, for example very small numbers not\n value = new _Fraction(valueStr);\n } catch (err) {\n value = parseFloat(valueStr);\n }\n } else {\n // number\n value = parseFloat(valueStr);\n }\n skipWhitespace(); // Whitespace is not required here\n\n // handle multiplication or division right after the value, like '1/s'\n if (parseCharacter('*')) {\n powerMultiplierCurrent = 1;\n expectingUnit = true;\n } else if (parseCharacter('/')) {\n powerMultiplierCurrent = -1;\n expectingUnit = true;\n }\n }\n\n // Stack to keep track of powerMultipliers applied to each parentheses group\n var powerMultiplierStack = [];\n\n // Running product of all elements in powerMultiplierStack\n var powerMultiplierStackProduct = 1;\n while (true) {\n skipWhitespace();\n\n // Check for and consume opening parentheses, pushing powerMultiplierCurrent to the stack\n // A '(' will always appear directly before a unit.\n while (c === '(') {\n powerMultiplierStack.push(powerMultiplierCurrent);\n powerMultiplierStackProduct *= powerMultiplierCurrent;\n powerMultiplierCurrent = 1;\n next();\n skipWhitespace();\n }\n\n // Is there something here?\n var uStr = void 0;\n if (c) {\n var oldC = c;\n uStr = parseUnit();\n if (uStr === null) {\n throw new SyntaxError('Unexpected \"' + oldC + '\" in \"' + text + '\" at index ' + index.toString());\n }\n } else {\n // End of input.\n break;\n }\n\n // Verify the unit exists and get the prefix (if any)\n var res = _findUnit(uStr);\n if (res === null) {\n // Unit not found.\n throw new SyntaxError('Unit \"' + uStr + '\" not found.');\n }\n var power = powerMultiplierCurrent * powerMultiplierStackProduct;\n // Is there a \"^ number\"?\n skipWhitespace();\n if (parseCharacter('^')) {\n skipWhitespace();\n var p = parseNumber();\n if (p === null) {\n // No valid number found for the power!\n throw new SyntaxError('In \"' + str + '\", \"^\" must be followed by a floating-point number');\n }\n power *= p;\n }\n\n // Add the unit to the list\n unit.units.push({\n unit: res.unit,\n prefix: res.prefix,\n power\n });\n for (var i = 0; i < BASE_DIMENSIONS.length; i++) {\n unit.dimensions[i] += (res.unit.dimensions[i] || 0) * power;\n }\n\n // Check for and consume closing parentheses, popping from the stack.\n // A ')' will always follow a unit.\n skipWhitespace();\n while (c === ')') {\n if (powerMultiplierStack.length === 0) {\n throw new SyntaxError('Unmatched \")\" in \"' + text + '\" at index ' + index.toString());\n }\n powerMultiplierStackProduct /= powerMultiplierStack.pop();\n next();\n skipWhitespace();\n }\n\n // \"*\" and \"/\" should mean we are expecting something to come next.\n // Is there a forward slash? If so, negate powerMultiplierCurrent. The next unit or paren group is in the denominator.\n expectingUnit = false;\n if (parseCharacter('*')) {\n // explicit multiplication\n powerMultiplierCurrent = 1;\n expectingUnit = true;\n } else if (parseCharacter('/')) {\n // division\n powerMultiplierCurrent = -1;\n expectingUnit = true;\n } else {\n // implicit multiplication\n powerMultiplierCurrent = 1;\n }\n\n // Replace the unit into the auto unit system\n if (res.unit.base) {\n var baseDim = res.unit.base.key;\n UNIT_SYSTEMS.auto[baseDim] = {\n unit: res.unit,\n prefix: res.prefix\n };\n }\n }\n\n // Has the string been entirely consumed?\n skipWhitespace();\n if (c) {\n throw new SyntaxError('Could not parse: \"' + str + '\"');\n }\n\n // Is there a trailing slash?\n if (expectingUnit) {\n throw new SyntaxError('Trailing characters: \"' + str + '\"');\n }\n\n // Is the parentheses stack empty?\n if (powerMultiplierStack.length !== 0) {\n throw new SyntaxError('Unmatched \"(\" in \"' + text + '\"');\n }\n\n // Are there any units at all?\n if (unit.units.length === 0 && !options.allowNoUnits) {\n throw new SyntaxError('\"' + str + '\" contains no units');\n }\n unit.value = value !== undefined ? unit._normalize(value) : null;\n return unit;\n };\n\n /**\n * create a copy of this unit\n * @memberof Unit\n * @return {Unit} Returns a cloned version of the unit\n */\n Unit.prototype.clone = function () {\n var unit = new Unit();\n unit.fixPrefix = this.fixPrefix;\n unit.skipAutomaticSimplification = this.skipAutomaticSimplification;\n unit.value = clone(this.value);\n unit.dimensions = this.dimensions.slice(0);\n unit.units = [];\n for (var i = 0; i < this.units.length; i++) {\n unit.units[i] = {};\n for (var p in this.units[i]) {\n if (hasOwnProperty(this.units[i], p)) {\n unit.units[i][p] = this.units[i][p];\n }\n }\n }\n return unit;\n };\n\n /**\n * Return the type of the value of this unit\n *\n * @memberof Unit\n * @return {string} type of the value of the unit\n */\n Unit.prototype.valueType = function () {\n return typeOf(this.value);\n };\n\n /**\n * Return whether the unit is derived (such as m/s, or cm^2, but not N)\n * @memberof Unit\n * @return {boolean} True if the unit is derived\n * @private\n */\n Unit.prototype._isDerived = function () {\n if (this.units.length === 0) {\n return false;\n }\n return this.units.length > 1 || Math.abs(this.units[0].power - 1.0) > 1e-15;\n };\n\n /**\n * Normalize a value, based on its currently set unit(s)\n * @memberof Unit\n * @param {number | BigNumber | Fraction | boolean} value\n * @return {number | BigNumber | Fraction | boolean} normalized value\n * @private\n */\n Unit.prototype._normalize = function (value) {\n if (value === null || value === undefined || this.units.length === 0) {\n return value;\n }\n var res = value;\n var convert = Unit._getNumberConverter(typeOf(value)); // convert to Fraction or BigNumber if needed\n\n for (var i = 0; i < this.units.length; i++) {\n var unitValue = convert(this.units[i].unit.value);\n var unitPrefixValue = convert(this.units[i].prefix.value);\n var unitPower = convert(this.units[i].power);\n res = multiplyScalar(res, pow(multiplyScalar(unitValue, unitPrefixValue), unitPower));\n }\n return res;\n };\n\n /**\n * Denormalize a value, based on its currently set unit(s)\n * @memberof Unit\n * @param {number} value\n * @param {number} [prefixValue] Optional prefix value to be used (ignored if this is a derived unit)\n * @return {number} denormalized value\n * @private\n */\n Unit.prototype._denormalize = function (value, prefixValue) {\n if (value === null || value === undefined || this.units.length === 0) {\n return value;\n }\n var res = value;\n var convert = Unit._getNumberConverter(typeOf(value)); // convert to Fraction or BigNumber if needed\n\n for (var i = 0; i < this.units.length; i++) {\n var unitValue = convert(this.units[i].unit.value);\n var unitPrefixValue = convert(this.units[i].prefix.value);\n var unitPower = convert(this.units[i].power);\n res = divideScalar(res, pow(multiplyScalar(unitValue, unitPrefixValue), unitPower));\n }\n return res;\n };\n\n /**\n * Find a unit from a string\n * @memberof Unit\n * @param {string} str A string like 'cm' or 'inch'\n * @returns {Object | null} result When found, an object with fields unit and\n * prefix is returned. Else, null is returned.\n * @private\n */\n var _findUnit = memoize(str => {\n // First, match units names exactly. For example, a user could define 'mm' as 10^-4 m, which is silly, but then we would want 'mm' to match the user-defined unit.\n if (hasOwnProperty(UNITS, str)) {\n var unit = UNITS[str];\n var prefix = unit.prefixes[''];\n return {\n unit,\n prefix\n };\n }\n for (var _name in UNITS) {\n if (hasOwnProperty(UNITS, _name)) {\n if (endsWith(str, _name)) {\n var _unit = UNITS[_name];\n var prefixLen = str.length - _name.length;\n var prefixName = str.substring(0, prefixLen);\n var _prefix = hasOwnProperty(_unit.prefixes, prefixName) ? _unit.prefixes[prefixName] : undefined;\n if (_prefix !== undefined) {\n // store unit, prefix, and value\n return {\n unit: _unit,\n prefix: _prefix\n };\n }\n }\n }\n }\n return null;\n }, {\n hasher: args => args[0],\n limit: 100\n });\n\n /**\n * Test if the given expression is a unit.\n * The unit can have a prefix but cannot have a value.\n * @memberof Unit\n * @param {string} name A string to be tested whether it is a value less unit.\n * The unit can have prefix, like \"cm\"\n * @return {boolean} true if the given string is a unit\n */\n Unit.isValuelessUnit = function (name) {\n return _findUnit(name) !== null;\n };\n\n /**\n * check if this unit has given base unit\n * If this unit is a derived unit, this will ALWAYS return false, since by definition base units are not derived.\n * @memberof Unit\n * @param {BASE_UNIT | string | undefined} base\n */\n Unit.prototype.hasBase = function (base) {\n if (typeof base === 'string') {\n base = BASE_UNITS[base];\n }\n if (!base) {\n return false;\n }\n\n // All dimensions must be the same\n for (var i = 0; i < BASE_DIMENSIONS.length; i++) {\n if (Math.abs((this.dimensions[i] || 0) - (base.dimensions[i] || 0)) > 1e-12) {\n return false;\n }\n }\n return true;\n };\n\n /**\n * Check if this unit has a base or bases equal to another base or bases\n * For derived units, the exponent on each base also must match\n * @memberof Unit\n * @param {Unit} other\n * @return {boolean} true if equal base\n */\n Unit.prototype.equalBase = function (other) {\n // All dimensions must be the same\n for (var i = 0; i < BASE_DIMENSIONS.length; i++) {\n if (Math.abs((this.dimensions[i] || 0) - (other.dimensions[i] || 0)) > 1e-12) {\n return false;\n }\n }\n return true;\n };\n\n /**\n * Check if this unit equals another unit\n * @memberof Unit\n * @param {Unit} other\n * @return {boolean} true if both units are equal\n */\n Unit.prototype.equals = function (other) {\n return this.equalBase(other) && equal(this.value, other.value);\n };\n\n /**\n * Multiply this unit with another one or with a scalar\n * @memberof Unit\n * @param {Unit} other\n * @return {Unit} product of this unit and the other unit\n */\n Unit.prototype.multiply = function (_other) {\n var res = this.clone();\n var other = isUnit(_other) ? _other : new Unit(_other);\n for (var i = 0; i < BASE_DIMENSIONS.length; i++) {\n // Dimensions arrays may be of different lengths. Default to 0.\n res.dimensions[i] = (this.dimensions[i] || 0) + (other.dimensions[i] || 0);\n }\n\n // Append other's units list onto res\n for (var _i = 0; _i < other.units.length; _i++) {\n // Make a shallow copy of every unit\n var inverted = _objectSpread({}, other.units[_i]);\n res.units.push(inverted);\n }\n\n // If at least one operand has a value, then the result should also have a value\n if (this.value !== null || other.value !== null) {\n var valThis = this.value === null ? this._normalize(1) : this.value;\n var valOther = other.value === null ? other._normalize(1) : other.value;\n res.value = multiplyScalar(valThis, valOther);\n } else {\n res.value = null;\n }\n if (isUnit(_other)) {\n res.skipAutomaticSimplification = false;\n }\n return getNumericIfUnitless(res);\n };\n\n /**\n * Divide a number by this unit\n *\n * @memberof Unit\n * @param {numeric} numerator\n * @param {unit} result of dividing numerator by this unit\n */\n Unit.prototype.divideInto = function (numerator) {\n return new Unit(numerator).divide(this);\n };\n\n /**\n * Divide this unit by another one\n * @memberof Unit\n * @param {Unit | numeric} other\n * @return {Unit} result of dividing this unit by the other unit\n */\n Unit.prototype.divide = function (_other) {\n var res = this.clone();\n var other = isUnit(_other) ? _other : new Unit(_other);\n for (var i = 0; i < BASE_DIMENSIONS.length; i++) {\n // Dimensions arrays may be of different lengths. Default to 0.\n res.dimensions[i] = (this.dimensions[i] || 0) - (other.dimensions[i] || 0);\n }\n\n // Invert and append other's units list onto res\n for (var _i2 = 0; _i2 < other.units.length; _i2++) {\n // Make a shallow copy of every unit\n var inverted = _objectSpread(_objectSpread({}, other.units[_i2]), {}, {\n power: -other.units[_i2].power\n });\n res.units.push(inverted);\n }\n\n // If at least one operand has a value, the result should have a value\n if (this.value !== null || other.value !== null) {\n var valThis = this.value === null ? this._normalize(1) : this.value;\n var valOther = other.value === null ? other._normalize(1) : other.value;\n res.value = divideScalar(valThis, valOther);\n } else {\n res.value = null;\n }\n if (isUnit(_other)) {\n res.skipAutomaticSimplification = false;\n }\n return getNumericIfUnitless(res);\n };\n\n /**\n * Calculate the power of a unit\n * @memberof Unit\n * @param {number | Fraction | BigNumber} p\n * @returns {Unit} The result: this^p\n */\n Unit.prototype.pow = function (p) {\n var res = this.clone();\n for (var i = 0; i < BASE_DIMENSIONS.length; i++) {\n // Dimensions arrays may be of different lengths. Default to 0.\n res.dimensions[i] = (this.dimensions[i] || 0) * p;\n }\n\n // Adjust the power of each unit in the list\n for (var _i3 = 0; _i3 < res.units.length; _i3++) {\n res.units[_i3].power *= p;\n }\n if (res.value !== null) {\n res.value = pow(res.value, p);\n\n // only allow numeric output, we don't want to return a Complex number\n // if (!isNumeric(res.value)) {\n // res.value = NaN\n // }\n // Update: Complex supported now\n } else {\n res.value = null;\n }\n res.skipAutomaticSimplification = false;\n return getNumericIfUnitless(res);\n };\n\n /**\n * Return the numeric value of this unit if it is dimensionless, has a value, and config.predictable == false; or the original unit otherwise\n * @param {Unit} unit\n * @returns {number | Fraction | BigNumber | Unit} The numeric value of the unit if conditions are met, or the original unit otherwise\n */\n function getNumericIfUnitless(unit) {\n if (unit.equalBase(BASE_UNITS.NONE) && unit.value !== null && !config.predictable) {\n return unit.value;\n } else {\n return unit;\n }\n }\n\n /**\n * Calculate the absolute value of a unit\n * @memberof Unit\n * @param {number | Fraction | BigNumber} x\n * @returns {Unit} The result: |x|, absolute value of x\n */\n Unit.prototype.abs = function () {\n var ret = this.clone();\n if (ret.value !== null) {\n if (ret._isDerived() || ret.units.length === 0 || ret.units[0].unit.offset === 0) {\n ret.value = abs(ret.value);\n } else {\n // To give the correct, but unexpected, results for units with an offset.\n // For example, abs(-283.15 degC) = -263.15 degC !!!\n // We must take the offset into consideration here\n var convert = ret._numberConverter(); // convert to Fraction or BigNumber if needed\n var unitValue = convert(ret.units[0].unit.value);\n var nominalOffset = convert(ret.units[0].unit.offset);\n var unitOffset = multiplyScalar(unitValue, nominalOffset);\n ret.value = subtractScalar(abs(addScalar(ret.value, unitOffset)), unitOffset);\n }\n }\n for (var i in ret.units) {\n if (ret.units[i].unit.name === 'VA' || ret.units[i].unit.name === 'VAR') {\n ret.units[i].unit = UNITS.W;\n }\n }\n return ret;\n };\n\n /**\n * Convert the unit to a specific unit name.\n * @memberof Unit\n * @param {string | Unit} valuelessUnit A unit without value. Can have prefix, like \"cm\"\n * @returns {Unit} Returns a clone of the unit with a fixed prefix and unit.\n */\n Unit.prototype.to = function (valuelessUnit) {\n var value = this.value === null ? this._normalize(1) : this.value;\n var other;\n if (typeof valuelessUnit === 'string') {\n other = Unit.parse(valuelessUnit);\n } else if (isUnit(valuelessUnit)) {\n other = valuelessUnit.clone();\n } else {\n throw new Error('String or Unit expected as parameter');\n }\n if (!this.equalBase(other)) {\n throw new Error(\"Units do not match ('\".concat(other.toString(), \"' != '\").concat(this.toString(), \"')\"));\n }\n if (other.value !== null) {\n throw new Error('Cannot convert to a unit with a value');\n }\n if (this.value === null || this._isDerived() || this.units.length === 0 || other.units.length === 0 || this.units[0].unit.offset === other.units[0].unit.offset) {\n other.value = clone(value);\n } else {\n /* Need to adjust value by difference in offset to convert */\n var convert = Unit._getNumberConverter(typeOf(value)); // convert to Fraction or BigNumber if needed\n\n var thisUnitValue = this.units[0].unit.value;\n var thisNominalOffset = this.units[0].unit.offset;\n var thisUnitOffset = multiplyScalar(thisUnitValue, thisNominalOffset);\n var otherUnitValue = other.units[0].unit.value;\n var otherNominalOffset = other.units[0].unit.offset;\n var otherUnitOffset = multiplyScalar(otherUnitValue, otherNominalOffset);\n other.value = addScalar(value, convert(subtractScalar(thisUnitOffset, otherUnitOffset)));\n }\n other.fixPrefix = true;\n other.skipAutomaticSimplification = true;\n return other;\n };\n\n /**\n * Return the value of the unit when represented with given valueless unit\n * @memberof Unit\n * @param {string | Unit} valuelessUnit For example 'cm' or 'inch'\n * @return {number} Returns the unit value as number.\n */\n // TODO: deprecate Unit.toNumber? It's always better to use toNumeric\n Unit.prototype.toNumber = function (valuelessUnit) {\n return toNumber(this.toNumeric(valuelessUnit));\n };\n\n /**\n * Return the value of the unit in the original numeric type\n * @memberof Unit\n * @param {string | Unit} valuelessUnit For example 'cm' or 'inch'\n * @return {number | BigNumber | Fraction} Returns the unit value\n */\n Unit.prototype.toNumeric = function (valuelessUnit) {\n var other;\n if (valuelessUnit) {\n // Allow getting the numeric value without converting to a different unit\n other = this.to(valuelessUnit);\n } else {\n other = this.clone();\n }\n if (other._isDerived() || other.units.length === 0) {\n return other._denormalize(other.value);\n } else {\n return other._denormalize(other.value, other.units[0].prefix.value);\n }\n };\n\n /**\n * Get a string representation of the unit.\n * @memberof Unit\n * @return {string}\n */\n Unit.prototype.toString = function () {\n return this.format();\n };\n\n /**\n * Get a JSON representation of the unit\n * @memberof Unit\n * @returns {Object} Returns a JSON object structured as:\n * `{\"mathjs\": \"Unit\", \"value\": 2, \"unit\": \"cm\", \"fixPrefix\": false}`\n */\n Unit.prototype.toJSON = function () {\n return {\n mathjs: 'Unit',\n value: this._denormalize(this.value),\n unit: this.units.length > 0 ? this.formatUnits() : null,\n fixPrefix: this.fixPrefix\n };\n };\n\n /**\n * Instantiate a Unit from a JSON object\n * @memberof Unit\n * @param {Object} json A JSON object structured as:\n * `{\"mathjs\": \"Unit\", \"value\": 2, \"unit\": \"cm\", \"fixPrefix\": false}`\n * @return {Unit}\n */\n Unit.fromJSON = function (json) {\n var _json$unit;\n var unit = new Unit(json.value, (_json$unit = json.unit) !== null && _json$unit !== void 0 ? _json$unit : undefined);\n unit.fixPrefix = json.fixPrefix || false;\n return unit;\n };\n\n /**\n * Returns the string representation of the unit.\n * @memberof Unit\n * @return {string}\n */\n Unit.prototype.valueOf = Unit.prototype.toString;\n\n /**\n * Simplify this Unit's unit list and return a new Unit with the simplified list.\n * The returned Unit will contain a list of the \"best\" units for formatting.\n */\n Unit.prototype.simplify = function () {\n var ret = this.clone();\n var proposedUnitList = [];\n\n // Search for a matching base\n var matchingBase;\n for (var key in currentUnitSystem) {\n if (hasOwnProperty(currentUnitSystem, key)) {\n if (ret.hasBase(BASE_UNITS[key])) {\n matchingBase = key;\n break;\n }\n }\n }\n if (matchingBase === 'NONE') {\n ret.units = [];\n } else {\n var matchingUnit;\n if (matchingBase) {\n // Does the unit system have a matching unit?\n if (hasOwnProperty(currentUnitSystem, matchingBase)) {\n matchingUnit = currentUnitSystem[matchingBase];\n }\n }\n if (matchingUnit) {\n ret.units = [{\n unit: matchingUnit.unit,\n prefix: matchingUnit.prefix,\n power: 1.0\n }];\n } else {\n // Multiple units or units with powers are formatted like this:\n // 5 (kg m^2) / (s^3 mol)\n // Build an representation from the base units of the current unit system\n var missingBaseDim = false;\n for (var i = 0; i < BASE_DIMENSIONS.length; i++) {\n var baseDim = BASE_DIMENSIONS[i];\n if (Math.abs(ret.dimensions[i] || 0) > 1e-12) {\n if (hasOwnProperty(currentUnitSystem, baseDim)) {\n proposedUnitList.push({\n unit: currentUnitSystem[baseDim].unit,\n prefix: currentUnitSystem[baseDim].prefix,\n power: ret.dimensions[i] || 0\n });\n } else {\n missingBaseDim = true;\n }\n }\n }\n\n // Is the proposed unit list \"simpler\" than the existing one?\n if (proposedUnitList.length < ret.units.length && !missingBaseDim) {\n // Replace this unit list with the proposed list\n ret.units = proposedUnitList;\n }\n }\n }\n return ret;\n };\n\n /**\n * Returns a new Unit in the SI system with the same value as this one\n */\n Unit.prototype.toSI = function () {\n var ret = this.clone();\n var proposedUnitList = [];\n\n // Multiple units or units with powers are formatted like this:\n // 5 (kg m^2) / (s^3 mol)\n // Build an representation from the base units of the SI unit system\n for (var i = 0; i < BASE_DIMENSIONS.length; i++) {\n var baseDim = BASE_DIMENSIONS[i];\n if (Math.abs(ret.dimensions[i] || 0) > 1e-12) {\n if (hasOwnProperty(UNIT_SYSTEMS.si, baseDim)) {\n proposedUnitList.push({\n unit: UNIT_SYSTEMS.si[baseDim].unit,\n prefix: UNIT_SYSTEMS.si[baseDim].prefix,\n power: ret.dimensions[i] || 0\n });\n } else {\n throw new Error('Cannot express custom unit ' + baseDim + ' in SI units');\n }\n }\n }\n\n // Replace this unit list with the proposed list\n ret.units = proposedUnitList;\n ret.fixPrefix = true;\n ret.skipAutomaticSimplification = true;\n if (this.value !== null) {\n ret.value = null;\n return this.to(ret);\n }\n return ret;\n };\n\n /**\n * Get a string representation of the units of this Unit, without the value. The unit list is formatted as-is without first being simplified.\n * @memberof Unit\n * @return {string}\n */\n Unit.prototype.formatUnits = function () {\n var strNum = '';\n var strDen = '';\n var nNum = 0;\n var nDen = 0;\n for (var i = 0; i < this.units.length; i++) {\n if (this.units[i].power > 0) {\n nNum++;\n strNum += ' ' + this.units[i].prefix.name + this.units[i].unit.name;\n if (Math.abs(this.units[i].power - 1.0) > 1e-15) {\n strNum += '^' + this.units[i].power;\n }\n } else if (this.units[i].power < 0) {\n nDen++;\n }\n }\n if (nDen > 0) {\n for (var _i4 = 0; _i4 < this.units.length; _i4++) {\n if (this.units[_i4].power < 0) {\n if (nNum > 0) {\n strDen += ' ' + this.units[_i4].prefix.name + this.units[_i4].unit.name;\n if (Math.abs(this.units[_i4].power + 1.0) > 1e-15) {\n strDen += '^' + -this.units[_i4].power;\n }\n } else {\n strDen += ' ' + this.units[_i4].prefix.name + this.units[_i4].unit.name;\n strDen += '^' + this.units[_i4].power;\n }\n }\n }\n }\n // Remove leading \" \"\n strNum = strNum.substr(1);\n strDen = strDen.substr(1);\n\n // Add parans for better copy/paste back into evaluate, for example, or for better pretty print formatting\n if (nNum > 1 && nDen > 0) {\n strNum = '(' + strNum + ')';\n }\n if (nDen > 1 && nNum > 0) {\n strDen = '(' + strDen + ')';\n }\n var str = strNum;\n if (nNum > 0 && nDen > 0) {\n str += ' / ';\n }\n str += strDen;\n return str;\n };\n\n /**\n * Get a string representation of the Unit, with optional formatting options.\n * @memberof Unit\n * @param {Object | number | Function} [options] Formatting options. See\n * lib/utils/number:format for a\n * description of the available\n * options.\n * @return {string}\n */\n Unit.prototype.format = function (options) {\n // Simplfy the unit list, unless it is valueless or was created directly in the\n // constructor or as the result of to or toSI\n var simp = this.skipAutomaticSimplification || this.value === null ? this.clone() : this.simplify();\n\n // Apply some custom logic for handling VA and VAR. The goal is to express the value of the unit as a real value, if possible. Otherwise, use a real-valued unit instead of a complex-valued one.\n var isImaginary = false;\n if (typeof simp.value !== 'undefined' && simp.value !== null && isComplex(simp.value)) {\n // TODO: Make this better, for example, use relative magnitude of re and im rather than absolute\n isImaginary = Math.abs(simp.value.re) < 1e-14;\n }\n for (var i in simp.units) {\n if (hasOwnProperty(simp.units, i)) {\n if (simp.units[i].unit) {\n if (simp.units[i].unit.name === 'VA' && isImaginary) {\n simp.units[i].unit = UNITS.VAR;\n } else if (simp.units[i].unit.name === 'VAR' && !isImaginary) {\n simp.units[i].unit = UNITS.VA;\n }\n }\n }\n }\n\n // Now apply the best prefix\n // Units must have only one unit and not have the fixPrefix flag set\n if (simp.units.length === 1 && !simp.fixPrefix) {\n // Units must have integer powers, otherwise the prefix will change the\n // outputted value by not-an-integer-power-of-ten\n if (Math.abs(simp.units[0].power - Math.round(simp.units[0].power)) < 1e-14) {\n // Apply the best prefix\n simp.units[0].prefix = simp._bestPrefix();\n }\n }\n var value = simp._denormalize(simp.value);\n var str = simp.value !== null ? format(value, options || {}) : '';\n var unitStr = simp.formatUnits();\n if (simp.value && isComplex(simp.value)) {\n str = '(' + str + ')'; // Surround complex values with ( ) to enable better parsing\n }\n if (unitStr.length > 0 && str.length > 0) {\n str += ' ';\n }\n str += unitStr;\n return str;\n };\n\n /**\n * Calculate the best prefix using current value.\n * @memberof Unit\n * @returns {Object} prefix\n * @private\n */\n Unit.prototype._bestPrefix = function () {\n if (this.units.length !== 1) {\n throw new Error('Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!');\n }\n if (Math.abs(this.units[0].power - Math.round(this.units[0].power)) >= 1e-14) {\n throw new Error('Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!');\n }\n\n // find the best prefix value (resulting in the value of which\n // the absolute value of the log10 is closest to zero,\n // though with a little offset of 1.2 for nicer values: you get a\n // sequence 1mm 100mm 500mm 0.6m 1m 10m 100m 500m 0.6km 1km ...\n\n // Note: the units value can be any numeric type, but to find the best\n // prefix it's enough to work with limited precision of a regular number\n // Update: using mathjs abs since we also allow complex numbers\n var absValue = this.value !== null ? abs(this.value) : 0;\n var absUnitValue = abs(this.units[0].unit.value);\n var bestPrefix = this.units[0].prefix;\n if (absValue === 0) {\n return bestPrefix;\n }\n var power = this.units[0].power;\n var bestDiff = Math.log(absValue / Math.pow(bestPrefix.value * absUnitValue, power)) / Math.LN10 - 1.2;\n if (bestDiff > -2.200001 && bestDiff < 1.800001) return bestPrefix; // Allow the original prefix\n bestDiff = Math.abs(bestDiff);\n var prefixes = this.units[0].unit.prefixes;\n for (var p in prefixes) {\n if (hasOwnProperty(prefixes, p)) {\n var prefix = prefixes[p];\n if (prefix.scientific) {\n var diff = Math.abs(Math.log(absValue / Math.pow(prefix.value * absUnitValue, power)) / Math.LN10 - 1.2);\n if (diff < bestDiff || diff === bestDiff && prefix.name.length < bestPrefix.name.length) {\n // choose the prefix with the smallest diff, or if equal, choose the one\n // with the shortest name (can happen with SHORTLONG for example)\n bestPrefix = prefix;\n bestDiff = diff;\n }\n }\n }\n }\n return bestPrefix;\n };\n\n /**\n * Returns an array of units whose sum is equal to this unit\n * @memberof Unit\n * @param {Array} [parts] An array of strings or valueless units.\n *\n * Example:\n *\n * const u = new Unit(1, 'm')\n * u.splitUnit(['feet', 'inch'])\n * [ 3 feet, 3.3700787401575 inch ]\n *\n * @return {Array} An array of units.\n */\n Unit.prototype.splitUnit = function (parts) {\n var x = this.clone();\n var ret = [];\n for (var i = 0; i < parts.length; i++) {\n // Convert x to the requested unit\n x = x.to(parts[i]);\n if (i === parts.length - 1) break;\n\n // Get the numeric value of this unit\n var xNumeric = x.toNumeric();\n\n // Check to see if xNumeric is nearly equal to an integer,\n // since fix can incorrectly round down if there is round-off error\n var xRounded = round(xNumeric);\n var xFixed = void 0;\n var isNearlyEqual = equal(xRounded, xNumeric);\n if (isNearlyEqual) {\n xFixed = xRounded;\n } else {\n xFixed = fix(x.toNumeric());\n }\n var y = new Unit(xFixed, parts[i].toString());\n ret.push(y);\n x = subtractScalar(x, y);\n }\n\n // This little bit fixes a bug where the remainder should be 0 but is a little bit off.\n // But instead of comparing x, the remainder, with zero--we will compare the sum of\n // all the parts so far with the original value. If they are nearly equal,\n // we set the remainder to 0.\n var testSum = 0;\n for (var _i5 = 0; _i5 < ret.length; _i5++) {\n testSum = addScalar(testSum, ret[_i5].value);\n }\n if (equal(testSum, this.value)) {\n x.value = 0;\n }\n ret.push(x);\n return ret;\n };\n var PREFIXES = {\n NONE: {\n '': {\n name: '',\n value: 1,\n scientific: true\n }\n },\n SHORT: {\n '': {\n name: '',\n value: 1,\n scientific: true\n },\n da: {\n name: 'da',\n value: 1e1,\n scientific: false\n },\n h: {\n name: 'h',\n value: 1e2,\n scientific: false\n },\n k: {\n name: 'k',\n value: 1e3,\n scientific: true\n },\n M: {\n name: 'M',\n value: 1e6,\n scientific: true\n },\n G: {\n name: 'G',\n value: 1e9,\n scientific: true\n },\n T: {\n name: 'T',\n value: 1e12,\n scientific: true\n },\n P: {\n name: 'P',\n value: 1e15,\n scientific: true\n },\n E: {\n name: 'E',\n value: 1e18,\n scientific: true\n },\n Z: {\n name: 'Z',\n value: 1e21,\n scientific: true\n },\n Y: {\n name: 'Y',\n value: 1e24,\n scientific: true\n },\n R: {\n name: 'R',\n value: 1e27,\n scientific: true\n },\n Q: {\n name: 'Q',\n value: 1e30,\n scientific: true\n },\n d: {\n name: 'd',\n value: 1e-1,\n scientific: false\n },\n c: {\n name: 'c',\n value: 1e-2,\n scientific: false\n },\n m: {\n name: 'm',\n value: 1e-3,\n scientific: true\n },\n u: {\n name: 'u',\n value: 1e-6,\n scientific: true\n },\n n: {\n name: 'n',\n value: 1e-9,\n scientific: true\n },\n p: {\n name: 'p',\n value: 1e-12,\n scientific: true\n },\n f: {\n name: 'f',\n value: 1e-15,\n scientific: true\n },\n a: {\n name: 'a',\n value: 1e-18,\n scientific: true\n },\n z: {\n name: 'z',\n value: 1e-21,\n scientific: true\n },\n y: {\n name: 'y',\n value: 1e-24,\n scientific: true\n },\n r: {\n name: 'r',\n value: 1e-27,\n scientific: true\n },\n q: {\n name: 'q',\n value: 1e-30,\n scientific: true\n }\n },\n LONG: {\n '': {\n name: '',\n value: 1,\n scientific: true\n },\n deca: {\n name: 'deca',\n value: 1e1,\n scientific: false\n },\n hecto: {\n name: 'hecto',\n value: 1e2,\n scientific: false\n },\n kilo: {\n name: 'kilo',\n value: 1e3,\n scientific: true\n },\n mega: {\n name: 'mega',\n value: 1e6,\n scientific: true\n },\n giga: {\n name: 'giga',\n value: 1e9,\n scientific: true\n },\n tera: {\n name: 'tera',\n value: 1e12,\n scientific: true\n },\n peta: {\n name: 'peta',\n value: 1e15,\n scientific: true\n },\n exa: {\n name: 'exa',\n value: 1e18,\n scientific: true\n },\n zetta: {\n name: 'zetta',\n value: 1e21,\n scientific: true\n },\n yotta: {\n name: 'yotta',\n value: 1e24,\n scientific: true\n },\n ronna: {\n name: 'ronna',\n value: 1e27,\n scientific: true\n },\n quetta: {\n name: 'quetta',\n value: 1e30,\n scientific: true\n },\n deci: {\n name: 'deci',\n value: 1e-1,\n scientific: false\n },\n centi: {\n name: 'centi',\n value: 1e-2,\n scientific: false\n },\n milli: {\n name: 'milli',\n value: 1e-3,\n scientific: true\n },\n micro: {\n name: 'micro',\n value: 1e-6,\n scientific: true\n },\n nano: {\n name: 'nano',\n value: 1e-9,\n scientific: true\n },\n pico: {\n name: 'pico',\n value: 1e-12,\n scientific: true\n },\n femto: {\n name: 'femto',\n value: 1e-15,\n scientific: true\n },\n atto: {\n name: 'atto',\n value: 1e-18,\n scientific: true\n },\n zepto: {\n name: 'zepto',\n value: 1e-21,\n scientific: true\n },\n yocto: {\n name: 'yocto',\n value: 1e-24,\n scientific: true\n },\n ronto: {\n name: 'ronto',\n value: 1e-27,\n scientific: true\n },\n quecto: {\n name: 'quecto',\n value: 1e-30,\n scientific: true\n }\n },\n SQUARED: {\n '': {\n name: '',\n value: 1,\n scientific: true\n },\n da: {\n name: 'da',\n value: 1e2,\n scientific: false\n },\n h: {\n name: 'h',\n value: 1e4,\n scientific: false\n },\n k: {\n name: 'k',\n value: 1e6,\n scientific: true\n },\n M: {\n name: 'M',\n value: 1e12,\n scientific: true\n },\n G: {\n name: 'G',\n value: 1e18,\n scientific: true\n },\n T: {\n name: 'T',\n value: 1e24,\n scientific: true\n },\n P: {\n name: 'P',\n value: 1e30,\n scientific: true\n },\n E: {\n name: 'E',\n value: 1e36,\n scientific: true\n },\n Z: {\n name: 'Z',\n value: 1e42,\n scientific: true\n },\n Y: {\n name: 'Y',\n value: 1e48,\n scientific: true\n },\n R: {\n name: 'R',\n value: 1e54,\n scientific: true\n },\n Q: {\n name: 'Q',\n value: 1e60,\n scientific: true\n },\n d: {\n name: 'd',\n value: 1e-2,\n scientific: false\n },\n c: {\n name: 'c',\n value: 1e-4,\n scientific: false\n },\n m: {\n name: 'm',\n value: 1e-6,\n scientific: true\n },\n u: {\n name: 'u',\n value: 1e-12,\n scientific: true\n },\n n: {\n name: 'n',\n value: 1e-18,\n scientific: true\n },\n p: {\n name: 'p',\n value: 1e-24,\n scientific: true\n },\n f: {\n name: 'f',\n value: 1e-30,\n scientific: true\n },\n a: {\n name: 'a',\n value: 1e-36,\n scientific: true\n },\n z: {\n name: 'z',\n value: 1e-42,\n scientific: true\n },\n y: {\n name: 'y',\n value: 1e-48,\n scientific: true\n },\n r: {\n name: 'r',\n value: 1e-54,\n scientific: true\n },\n q: {\n name: 'q',\n value: 1e-60,\n scientific: true\n }\n },\n CUBIC: {\n '': {\n name: '',\n value: 1,\n scientific: true\n },\n da: {\n name: 'da',\n value: 1e3,\n scientific: false\n },\n h: {\n name: 'h',\n value: 1e6,\n scientific: false\n },\n k: {\n name: 'k',\n value: 1e9,\n scientific: true\n },\n M: {\n name: 'M',\n value: 1e18,\n scientific: true\n },\n G: {\n name: 'G',\n value: 1e27,\n scientific: true\n },\n T: {\n name: 'T',\n value: 1e36,\n scientific: true\n },\n P: {\n name: 'P',\n value: 1e45,\n scientific: true\n },\n E: {\n name: 'E',\n value: 1e54,\n scientific: true\n },\n Z: {\n name: 'Z',\n value: 1e63,\n scientific: true\n },\n Y: {\n name: 'Y',\n value: 1e72,\n scientific: true\n },\n R: {\n name: 'R',\n value: 1e81,\n scientific: true\n },\n Q: {\n name: 'Q',\n value: 1e90,\n scientific: true\n },\n d: {\n name: 'd',\n value: 1e-3,\n scientific: false\n },\n c: {\n name: 'c',\n value: 1e-6,\n scientific: false\n },\n m: {\n name: 'm',\n value: 1e-9,\n scientific: true\n },\n u: {\n name: 'u',\n value: 1e-18,\n scientific: true\n },\n n: {\n name: 'n',\n value: 1e-27,\n scientific: true\n },\n p: {\n name: 'p',\n value: 1e-36,\n scientific: true\n },\n f: {\n name: 'f',\n value: 1e-45,\n scientific: true\n },\n a: {\n name: 'a',\n value: 1e-54,\n scientific: true\n },\n z: {\n name: 'z',\n value: 1e-63,\n scientific: true\n },\n y: {\n name: 'y',\n value: 1e-72,\n scientific: true\n },\n r: {\n name: 'r',\n value: 1e-81,\n scientific: true\n },\n q: {\n name: 'q',\n value: 1e-90,\n scientific: true\n }\n },\n BINARY_SHORT_SI: {\n '': {\n name: '',\n value: 1,\n scientific: true\n },\n k: {\n name: 'k',\n value: 1e3,\n scientific: true\n },\n M: {\n name: 'M',\n value: 1e6,\n scientific: true\n },\n G: {\n name: 'G',\n value: 1e9,\n scientific: true\n },\n T: {\n name: 'T',\n value: 1e12,\n scientific: true\n },\n P: {\n name: 'P',\n value: 1e15,\n scientific: true\n },\n E: {\n name: 'E',\n value: 1e18,\n scientific: true\n },\n Z: {\n name: 'Z',\n value: 1e21,\n scientific: true\n },\n Y: {\n name: 'Y',\n value: 1e24,\n scientific: true\n }\n },\n BINARY_SHORT_IEC: {\n '': {\n name: '',\n value: 1,\n scientific: true\n },\n Ki: {\n name: 'Ki',\n value: 1024,\n scientific: true\n },\n Mi: {\n name: 'Mi',\n value: Math.pow(1024, 2),\n scientific: true\n },\n Gi: {\n name: 'Gi',\n value: Math.pow(1024, 3),\n scientific: true\n },\n Ti: {\n name: 'Ti',\n value: Math.pow(1024, 4),\n scientific: true\n },\n Pi: {\n name: 'Pi',\n value: Math.pow(1024, 5),\n scientific: true\n },\n Ei: {\n name: 'Ei',\n value: Math.pow(1024, 6),\n scientific: true\n },\n Zi: {\n name: 'Zi',\n value: Math.pow(1024, 7),\n scientific: true\n },\n Yi: {\n name: 'Yi',\n value: Math.pow(1024, 8),\n scientific: true\n }\n },\n BINARY_LONG_SI: {\n '': {\n name: '',\n value: 1,\n scientific: true\n },\n kilo: {\n name: 'kilo',\n value: 1e3,\n scientific: true\n },\n mega: {\n name: 'mega',\n value: 1e6,\n scientific: true\n },\n giga: {\n name: 'giga',\n value: 1e9,\n scientific: true\n },\n tera: {\n name: 'tera',\n value: 1e12,\n scientific: true\n },\n peta: {\n name: 'peta',\n value: 1e15,\n scientific: true\n },\n exa: {\n name: 'exa',\n value: 1e18,\n scientific: true\n },\n zetta: {\n name: 'zetta',\n value: 1e21,\n scientific: true\n },\n yotta: {\n name: 'yotta',\n value: 1e24,\n scientific: true\n }\n },\n BINARY_LONG_IEC: {\n '': {\n name: '',\n value: 1,\n scientific: true\n },\n kibi: {\n name: 'kibi',\n value: 1024,\n scientific: true\n },\n mebi: {\n name: 'mebi',\n value: Math.pow(1024, 2),\n scientific: true\n },\n gibi: {\n name: 'gibi',\n value: Math.pow(1024, 3),\n scientific: true\n },\n tebi: {\n name: 'tebi',\n value: Math.pow(1024, 4),\n scientific: true\n },\n pebi: {\n name: 'pebi',\n value: Math.pow(1024, 5),\n scientific: true\n },\n exi: {\n name: 'exi',\n value: Math.pow(1024, 6),\n scientific: true\n },\n zebi: {\n name: 'zebi',\n value: Math.pow(1024, 7),\n scientific: true\n },\n yobi: {\n name: 'yobi',\n value: Math.pow(1024, 8),\n scientific: true\n }\n },\n BTU: {\n '': {\n name: '',\n value: 1,\n scientific: true\n },\n MM: {\n name: 'MM',\n value: 1e6,\n scientific: true\n }\n }\n };\n PREFIXES.SHORTLONG = _extends({}, PREFIXES.SHORT, PREFIXES.LONG);\n PREFIXES.BINARY_SHORT = _extends({}, PREFIXES.BINARY_SHORT_SI, PREFIXES.BINARY_SHORT_IEC);\n PREFIXES.BINARY_LONG = _extends({}, PREFIXES.BINARY_LONG_SI, PREFIXES.BINARY_LONG_IEC);\n\n /* Internally, each unit is represented by a value and a dimension array. The elements of the dimensions array have the following meaning:\n * Index Dimension\n * ----- ---------\n * 0 Length\n * 1 Mass\n * 2 Time\n * 3 Current\n * 4 Temperature\n * 5 Luminous intensity\n * 6 Amount of substance\n * 7 Angle\n * 8 Bit (digital)\n * For example, the unit \"298.15 K\" is a pure temperature and would have a value of 298.15 and a dimension array of [0, 0, 0, 0, 1, 0, 0, 0, 0]. The unit \"1 cal / (gm \u00B0C)\" can be written in terms of the 9 fundamental dimensions as [length^2] / ([time^2] * [temperature]), and would a value of (after conversion to SI) 4184.0 and a dimensions array of [2, 0, -2, 0, -1, 0, 0, 0, 0].\n *\n */\n\n var BASE_DIMENSIONS = ['MASS', 'LENGTH', 'TIME', 'CURRENT', 'TEMPERATURE', 'LUMINOUS_INTENSITY', 'AMOUNT_OF_SUBSTANCE', 'ANGLE', 'BIT'];\n var BASE_UNITS = {\n NONE: {\n dimensions: [0, 0, 0, 0, 0, 0, 0, 0, 0]\n },\n MASS: {\n dimensions: [1, 0, 0, 0, 0, 0, 0, 0, 0]\n },\n LENGTH: {\n dimensions: [0, 1, 0, 0, 0, 0, 0, 0, 0]\n },\n TIME: {\n dimensions: [0, 0, 1, 0, 0, 0, 0, 0, 0]\n },\n CURRENT: {\n dimensions: [0, 0, 0, 1, 0, 0, 0, 0, 0]\n },\n TEMPERATURE: {\n dimensions: [0, 0, 0, 0, 1, 0, 0, 0, 0]\n },\n LUMINOUS_INTENSITY: {\n dimensions: [0, 0, 0, 0, 0, 1, 0, 0, 0]\n },\n AMOUNT_OF_SUBSTANCE: {\n dimensions: [0, 0, 0, 0, 0, 0, 1, 0, 0]\n },\n FORCE: {\n dimensions: [1, 1, -2, 0, 0, 0, 0, 0, 0]\n },\n SURFACE: {\n dimensions: [0, 2, 0, 0, 0, 0, 0, 0, 0]\n },\n VOLUME: {\n dimensions: [0, 3, 0, 0, 0, 0, 0, 0, 0]\n },\n ENERGY: {\n dimensions: [1, 2, -2, 0, 0, 0, 0, 0, 0]\n },\n POWER: {\n dimensions: [1, 2, -3, 0, 0, 0, 0, 0, 0]\n },\n PRESSURE: {\n dimensions: [1, -1, -2, 0, 0, 0, 0, 0, 0]\n },\n ELECTRIC_CHARGE: {\n dimensions: [0, 0, 1, 1, 0, 0, 0, 0, 0]\n },\n ELECTRIC_CAPACITANCE: {\n dimensions: [-1, -2, 4, 2, 0, 0, 0, 0, 0]\n },\n ELECTRIC_POTENTIAL: {\n dimensions: [1, 2, -3, -1, 0, 0, 0, 0, 0]\n },\n ELECTRIC_RESISTANCE: {\n dimensions: [1, 2, -3, -2, 0, 0, 0, 0, 0]\n },\n ELECTRIC_INDUCTANCE: {\n dimensions: [1, 2, -2, -2, 0, 0, 0, 0, 0]\n },\n ELECTRIC_CONDUCTANCE: {\n dimensions: [-1, -2, 3, 2, 0, 0, 0, 0, 0]\n },\n MAGNETIC_FLUX: {\n dimensions: [1, 2, -2, -1, 0, 0, 0, 0, 0]\n },\n MAGNETIC_FLUX_DENSITY: {\n dimensions: [1, 0, -2, -1, 0, 0, 0, 0, 0]\n },\n FREQUENCY: {\n dimensions: [0, 0, -1, 0, 0, 0, 0, 0, 0]\n },\n ANGLE: {\n dimensions: [0, 0, 0, 0, 0, 0, 0, 1, 0]\n },\n BIT: {\n dimensions: [0, 0, 0, 0, 0, 0, 0, 0, 1]\n }\n };\n for (var key in BASE_UNITS) {\n if (hasOwnProperty(BASE_UNITS, key)) {\n BASE_UNITS[key].key = key;\n }\n }\n var BASE_UNIT_NONE = {};\n var UNIT_NONE = {\n name: '',\n base: BASE_UNIT_NONE,\n value: 1,\n offset: 0,\n dimensions: BASE_DIMENSIONS.map(x => 0)\n };\n var UNITS = {\n // length\n meter: {\n name: 'meter',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n inch: {\n name: 'inch',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 0.0254,\n offset: 0\n },\n foot: {\n name: 'foot',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 0.3048,\n offset: 0\n },\n yard: {\n name: 'yard',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 0.9144,\n offset: 0\n },\n mile: {\n name: 'mile',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 1609.344,\n offset: 0\n },\n link: {\n name: 'link',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 0.201168,\n offset: 0\n },\n rod: {\n name: 'rod',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 5.0292,\n offset: 0\n },\n chain: {\n name: 'chain',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 20.1168,\n offset: 0\n },\n angstrom: {\n name: 'angstrom',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 1e-10,\n offset: 0\n },\n m: {\n name: 'm',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n in: {\n name: 'in',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 0.0254,\n offset: 0\n },\n ft: {\n name: 'ft',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 0.3048,\n offset: 0\n },\n yd: {\n name: 'yd',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 0.9144,\n offset: 0\n },\n mi: {\n name: 'mi',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 1609.344,\n offset: 0\n },\n li: {\n name: 'li',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 0.201168,\n offset: 0\n },\n rd: {\n name: 'rd',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 5.029210,\n offset: 0\n },\n ch: {\n name: 'ch',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 20.1168,\n offset: 0\n },\n mil: {\n name: 'mil',\n base: BASE_UNITS.LENGTH,\n prefixes: PREFIXES.NONE,\n value: 0.0000254,\n offset: 0\n },\n // 1/1000 inch\n\n // Surface\n m2: {\n name: 'm2',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.SQUARED,\n value: 1,\n offset: 0\n },\n sqin: {\n name: 'sqin',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.NONE,\n value: 0.00064516,\n offset: 0\n },\n // 645.16 mm2\n sqft: {\n name: 'sqft',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.NONE,\n value: 0.09290304,\n offset: 0\n },\n // 0.09290304 m2\n sqyd: {\n name: 'sqyd',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.NONE,\n value: 0.83612736,\n offset: 0\n },\n // 0.83612736 m2\n sqmi: {\n name: 'sqmi',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.NONE,\n value: 2589988.110336,\n offset: 0\n },\n // 2.589988110336 km2\n sqrd: {\n name: 'sqrd',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.NONE,\n value: 25.29295,\n offset: 0\n },\n // 25.29295 m2\n sqch: {\n name: 'sqch',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.NONE,\n value: 404.6873,\n offset: 0\n },\n // 404.6873 m2\n sqmil: {\n name: 'sqmil',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.NONE,\n value: 6.4516e-10,\n offset: 0\n },\n // 6.4516 * 10^-10 m2\n acre: {\n name: 'acre',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.NONE,\n value: 4046.86,\n offset: 0\n },\n // 4046.86 m2\n hectare: {\n name: 'hectare',\n base: BASE_UNITS.SURFACE,\n prefixes: PREFIXES.NONE,\n value: 10000,\n offset: 0\n },\n // 10000 m2\n\n // Volume\n m3: {\n name: 'm3',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.CUBIC,\n value: 1,\n offset: 0\n },\n L: {\n name: 'L',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.SHORT,\n value: 0.001,\n offset: 0\n },\n // litre\n l: {\n name: 'l',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.SHORT,\n value: 0.001,\n offset: 0\n },\n // litre\n litre: {\n name: 'litre',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.LONG,\n value: 0.001,\n offset: 0\n },\n cuin: {\n name: 'cuin',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 1.6387064e-5,\n offset: 0\n },\n // 1.6387064e-5 m3\n cuft: {\n name: 'cuft',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.028316846592,\n offset: 0\n },\n // 28.316 846 592 L\n cuyd: {\n name: 'cuyd',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.764554857984,\n offset: 0\n },\n // 764.554 857 984 L\n teaspoon: {\n name: 'teaspoon',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.000005,\n offset: 0\n },\n // 5 mL\n tablespoon: {\n name: 'tablespoon',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.000015,\n offset: 0\n },\n // 15 mL\n // {name: 'cup', base: BASE_UNITS.VOLUME, prefixes: PREFIXES.NONE, value: 0.000240, offset: 0}, // 240 mL // not possible, we have already another cup\n drop: {\n name: 'drop',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 5e-8,\n offset: 0\n },\n // 0.05 mL = 5e-8 m3\n gtt: {\n name: 'gtt',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 5e-8,\n offset: 0\n },\n // 0.05 mL = 5e-8 m3\n\n // Liquid volume\n minim: {\n name: 'minim',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.000000061611519921875,\n offset: 0\n },\n // 1/61440 gallons\n fluiddram: {\n name: 'fluiddram',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.0000036966911953125,\n offset: 0\n },\n // 1/1024 gallons\n fluidounce: {\n name: 'fluidounce',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.0000295735295625,\n offset: 0\n },\n // 1/128 gallons\n gill: {\n name: 'gill',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.00011829411825,\n offset: 0\n },\n // 1/32 gallons\n cc: {\n name: 'cc',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 1e-6,\n offset: 0\n },\n // 1e-6 L\n cup: {\n name: 'cup',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.0002365882365,\n offset: 0\n },\n // 1/16 gallons\n pint: {\n name: 'pint',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.000473176473,\n offset: 0\n },\n // 1/8 gallons\n quart: {\n name: 'quart',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.000946352946,\n offset: 0\n },\n // 1/4 gallons\n gallon: {\n name: 'gallon',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.003785411784,\n offset: 0\n },\n // 3.785411784 L\n beerbarrel: {\n name: 'beerbarrel',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.117347765304,\n offset: 0\n },\n // 31 gallons\n oilbarrel: {\n name: 'oilbarrel',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.158987294928,\n offset: 0\n },\n // 42 gallons\n hogshead: {\n name: 'hogshead',\n base: BASE_UNITS.VOLUME,\n prefixes: PREFIXES.NONE,\n value: 0.238480942392,\n offset: 0\n },\n // 63 gallons\n\n // Mass\n g: {\n name: 'g',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.SHORT,\n value: 0.001,\n offset: 0\n },\n gram: {\n name: 'gram',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.LONG,\n value: 0.001,\n offset: 0\n },\n ton: {\n name: 'ton',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.SHORT,\n value: 907.18474,\n offset: 0\n },\n t: {\n name: 't',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.SHORT,\n value: 1000,\n offset: 0\n },\n tonne: {\n name: 'tonne',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.LONG,\n value: 1000,\n offset: 0\n },\n grain: {\n name: 'grain',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 64.79891e-6,\n offset: 0\n },\n dram: {\n name: 'dram',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 1.7718451953125e-3,\n offset: 0\n },\n ounce: {\n name: 'ounce',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 28.349523125e-3,\n offset: 0\n },\n poundmass: {\n name: 'poundmass',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 453.59237e-3,\n offset: 0\n },\n hundredweight: {\n name: 'hundredweight',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 45.359237,\n offset: 0\n },\n stick: {\n name: 'stick',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 115e-3,\n offset: 0\n },\n stone: {\n name: 'stone',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 6.35029318,\n offset: 0\n },\n gr: {\n name: 'gr',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 64.79891e-6,\n offset: 0\n },\n dr: {\n name: 'dr',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 1.7718451953125e-3,\n offset: 0\n },\n oz: {\n name: 'oz',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 28.349523125e-3,\n offset: 0\n },\n lbm: {\n name: 'lbm',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 453.59237e-3,\n offset: 0\n },\n cwt: {\n name: 'cwt',\n base: BASE_UNITS.MASS,\n prefixes: PREFIXES.NONE,\n value: 45.359237,\n offset: 0\n },\n // Time\n s: {\n name: 's',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n min: {\n name: 'min',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 60,\n offset: 0\n },\n h: {\n name: 'h',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 3600,\n offset: 0\n },\n second: {\n name: 'second',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n sec: {\n name: 'sec',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n minute: {\n name: 'minute',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 60,\n offset: 0\n },\n hour: {\n name: 'hour',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 3600,\n offset: 0\n },\n day: {\n name: 'day',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 86400,\n offset: 0\n },\n week: {\n name: 'week',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 7 * 86400,\n offset: 0\n },\n month: {\n name: 'month',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 2629800,\n // 1/12th of Julian year\n offset: 0\n },\n year: {\n name: 'year',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 31557600,\n // Julian year\n offset: 0\n },\n decade: {\n name: 'decade',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 315576000,\n // Julian decade\n offset: 0\n },\n century: {\n name: 'century',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 3155760000,\n // Julian century\n offset: 0\n },\n millennium: {\n name: 'millennium',\n base: BASE_UNITS.TIME,\n prefixes: PREFIXES.NONE,\n value: 31557600000,\n // Julian millennium\n offset: 0\n },\n // Frequency\n hertz: {\n name: 'Hertz',\n base: BASE_UNITS.FREQUENCY,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0,\n reciprocal: true\n },\n Hz: {\n name: 'Hz',\n base: BASE_UNITS.FREQUENCY,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0,\n reciprocal: true\n },\n // Angle\n rad: {\n name: 'rad',\n base: BASE_UNITS.ANGLE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n radian: {\n name: 'radian',\n base: BASE_UNITS.ANGLE,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n // deg = rad / (2*pi) * 360 = rad / 0.017453292519943295769236907684888\n deg: {\n name: 'deg',\n base: BASE_UNITS.ANGLE,\n prefixes: PREFIXES.SHORT,\n value: null,\n // will be filled in by calculateAngleValues()\n offset: 0\n },\n degree: {\n name: 'degree',\n base: BASE_UNITS.ANGLE,\n prefixes: PREFIXES.LONG,\n value: null,\n // will be filled in by calculateAngleValues()\n offset: 0\n },\n // grad = rad / (2*pi) * 400 = rad / 0.015707963267948966192313216916399\n grad: {\n name: 'grad',\n base: BASE_UNITS.ANGLE,\n prefixes: PREFIXES.SHORT,\n value: null,\n // will be filled in by calculateAngleValues()\n offset: 0\n },\n gradian: {\n name: 'gradian',\n base: BASE_UNITS.ANGLE,\n prefixes: PREFIXES.LONG,\n value: null,\n // will be filled in by calculateAngleValues()\n offset: 0\n },\n // cycle = rad / (2*pi) = rad / 6.2831853071795864769252867665793\n cycle: {\n name: 'cycle',\n base: BASE_UNITS.ANGLE,\n prefixes: PREFIXES.NONE,\n value: null,\n // will be filled in by calculateAngleValues()\n offset: 0\n },\n // arcsec = rad / (3600 * (360 / 2 * pi)) = rad / 0.0000048481368110953599358991410235795\n arcsec: {\n name: 'arcsec',\n base: BASE_UNITS.ANGLE,\n prefixes: PREFIXES.NONE,\n value: null,\n // will be filled in by calculateAngleValues()\n offset: 0\n },\n // arcmin = rad / (60 * (360 / 2 * pi)) = rad / 0.00029088820866572159615394846141477\n arcmin: {\n name: 'arcmin',\n base: BASE_UNITS.ANGLE,\n prefixes: PREFIXES.NONE,\n value: null,\n // will be filled in by calculateAngleValues()\n offset: 0\n },\n // Electric current\n A: {\n name: 'A',\n base: BASE_UNITS.CURRENT,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n ampere: {\n name: 'ampere',\n base: BASE_UNITS.CURRENT,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n // Temperature\n // K(C) = \u00B0C + 273.15\n // K(F) = (\u00B0F + 459.67) * (5 / 9)\n // K(R) = \u00B0R * (5 / 9)\n K: {\n name: 'K',\n base: BASE_UNITS.TEMPERATURE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n degC: {\n name: 'degC',\n base: BASE_UNITS.TEMPERATURE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 273.15\n },\n degF: {\n name: 'degF',\n base: BASE_UNITS.TEMPERATURE,\n prefixes: PREFIXES.SHORT,\n value: new _Fraction(5, 9),\n offset: 459.67\n },\n degR: {\n name: 'degR',\n base: BASE_UNITS.TEMPERATURE,\n prefixes: PREFIXES.SHORT,\n value: new _Fraction(5, 9),\n offset: 0\n },\n kelvin: {\n name: 'kelvin',\n base: BASE_UNITS.TEMPERATURE,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n celsius: {\n name: 'celsius',\n base: BASE_UNITS.TEMPERATURE,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 273.15\n },\n fahrenheit: {\n name: 'fahrenheit',\n base: BASE_UNITS.TEMPERATURE,\n prefixes: PREFIXES.LONG,\n value: new _Fraction(5, 9),\n offset: 459.67\n },\n rankine: {\n name: 'rankine',\n base: BASE_UNITS.TEMPERATURE,\n prefixes: PREFIXES.LONG,\n value: new _Fraction(5, 9),\n offset: 0\n },\n // amount of substance\n mol: {\n name: 'mol',\n base: BASE_UNITS.AMOUNT_OF_SUBSTANCE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n mole: {\n name: 'mole',\n base: BASE_UNITS.AMOUNT_OF_SUBSTANCE,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n // luminous intensity\n cd: {\n name: 'cd',\n base: BASE_UNITS.LUMINOUS_INTENSITY,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n candela: {\n name: 'candela',\n base: BASE_UNITS.LUMINOUS_INTENSITY,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n // TODO: units STERADIAN\n // {name: 'sr', base: BASE_UNITS.STERADIAN, prefixes: PREFIXES.NONE, value: 1, offset: 0},\n // {name: 'steradian', base: BASE_UNITS.STERADIAN, prefixes: PREFIXES.NONE, value: 1, offset: 0},\n\n // Force\n N: {\n name: 'N',\n base: BASE_UNITS.FORCE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n newton: {\n name: 'newton',\n base: BASE_UNITS.FORCE,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n dyn: {\n name: 'dyn',\n base: BASE_UNITS.FORCE,\n prefixes: PREFIXES.SHORT,\n value: 0.00001,\n offset: 0\n },\n dyne: {\n name: 'dyne',\n base: BASE_UNITS.FORCE,\n prefixes: PREFIXES.LONG,\n value: 0.00001,\n offset: 0\n },\n lbf: {\n name: 'lbf',\n base: BASE_UNITS.FORCE,\n prefixes: PREFIXES.NONE,\n value: 4.4482216152605,\n offset: 0\n },\n poundforce: {\n name: 'poundforce',\n base: BASE_UNITS.FORCE,\n prefixes: PREFIXES.NONE,\n value: 4.4482216152605,\n offset: 0\n },\n kip: {\n name: 'kip',\n base: BASE_UNITS.FORCE,\n prefixes: PREFIXES.LONG,\n value: 4448.2216,\n offset: 0\n },\n kilogramforce: {\n name: 'kilogramforce',\n base: BASE_UNITS.FORCE,\n prefixes: PREFIXES.NONE,\n value: 9.80665,\n offset: 0\n },\n // Energy\n J: {\n name: 'J',\n base: BASE_UNITS.ENERGY,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n joule: {\n name: 'joule',\n base: BASE_UNITS.ENERGY,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n erg: {\n name: 'erg',\n base: BASE_UNITS.ENERGY,\n prefixes: PREFIXES.SHORTLONG,\n // Both kiloerg and kerg are acceptable\n value: 1e-7,\n offset: 0\n },\n Wh: {\n name: 'Wh',\n base: BASE_UNITS.ENERGY,\n prefixes: PREFIXES.SHORT,\n value: 3600,\n offset: 0\n },\n BTU: {\n name: 'BTU',\n base: BASE_UNITS.ENERGY,\n prefixes: PREFIXES.BTU,\n value: 1055.05585262,\n offset: 0\n },\n eV: {\n name: 'eV',\n base: BASE_UNITS.ENERGY,\n prefixes: PREFIXES.SHORT,\n value: 1.602176565e-19,\n offset: 0\n },\n electronvolt: {\n name: 'electronvolt',\n base: BASE_UNITS.ENERGY,\n prefixes: PREFIXES.LONG,\n value: 1.602176565e-19,\n offset: 0\n },\n // Power\n W: {\n name: 'W',\n base: BASE_UNITS.POWER,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n watt: {\n name: 'watt',\n base: BASE_UNITS.POWER,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n hp: {\n name: 'hp',\n base: BASE_UNITS.POWER,\n prefixes: PREFIXES.NONE,\n value: 745.6998715386,\n offset: 0\n },\n // Electrical power units\n VAR: {\n name: 'VAR',\n base: BASE_UNITS.POWER,\n prefixes: PREFIXES.SHORT,\n value: Complex.I,\n offset: 0\n },\n VA: {\n name: 'VA',\n base: BASE_UNITS.POWER,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n // Pressure\n Pa: {\n name: 'Pa',\n base: BASE_UNITS.PRESSURE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n psi: {\n name: 'psi',\n base: BASE_UNITS.PRESSURE,\n prefixes: PREFIXES.NONE,\n value: 6894.75729276459,\n offset: 0\n },\n atm: {\n name: 'atm',\n base: BASE_UNITS.PRESSURE,\n prefixes: PREFIXES.NONE,\n value: 101325,\n offset: 0\n },\n bar: {\n name: 'bar',\n base: BASE_UNITS.PRESSURE,\n prefixes: PREFIXES.SHORTLONG,\n value: 100000,\n offset: 0\n },\n torr: {\n name: 'torr',\n base: BASE_UNITS.PRESSURE,\n prefixes: PREFIXES.NONE,\n value: 133.322,\n offset: 0\n },\n mmHg: {\n name: 'mmHg',\n base: BASE_UNITS.PRESSURE,\n prefixes: PREFIXES.NONE,\n value: 133.322,\n offset: 0\n },\n mmH2O: {\n name: 'mmH2O',\n base: BASE_UNITS.PRESSURE,\n prefixes: PREFIXES.NONE,\n value: 9.80665,\n offset: 0\n },\n cmH2O: {\n name: 'cmH2O',\n base: BASE_UNITS.PRESSURE,\n prefixes: PREFIXES.NONE,\n value: 98.0665,\n offset: 0\n },\n // Electric charge\n coulomb: {\n name: 'coulomb',\n base: BASE_UNITS.ELECTRIC_CHARGE,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n C: {\n name: 'C',\n base: BASE_UNITS.ELECTRIC_CHARGE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n // Electric capacitance\n farad: {\n name: 'farad',\n base: BASE_UNITS.ELECTRIC_CAPACITANCE,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n F: {\n name: 'F',\n base: BASE_UNITS.ELECTRIC_CAPACITANCE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n // Electric potential\n volt: {\n name: 'volt',\n base: BASE_UNITS.ELECTRIC_POTENTIAL,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n V: {\n name: 'V',\n base: BASE_UNITS.ELECTRIC_POTENTIAL,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n // Electric resistance\n ohm: {\n name: 'ohm',\n base: BASE_UNITS.ELECTRIC_RESISTANCE,\n prefixes: PREFIXES.SHORTLONG,\n // Both Mohm and megaohm are acceptable\n value: 1,\n offset: 0\n },\n /*\n * Unicode breaks in browsers if charset is not specified\n \u03A9: {\n name: '\u03A9',\n base: BASE_UNITS.ELECTRIC_RESISTANCE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n */\n // Electric inductance\n henry: {\n name: 'henry',\n base: BASE_UNITS.ELECTRIC_INDUCTANCE,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n H: {\n name: 'H',\n base: BASE_UNITS.ELECTRIC_INDUCTANCE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n // Electric conductance\n siemens: {\n name: 'siemens',\n base: BASE_UNITS.ELECTRIC_CONDUCTANCE,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n S: {\n name: 'S',\n base: BASE_UNITS.ELECTRIC_CONDUCTANCE,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n // Magnetic flux\n weber: {\n name: 'weber',\n base: BASE_UNITS.MAGNETIC_FLUX,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n Wb: {\n name: 'Wb',\n base: BASE_UNITS.MAGNETIC_FLUX,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n // Magnetic flux density\n tesla: {\n name: 'tesla',\n base: BASE_UNITS.MAGNETIC_FLUX_DENSITY,\n prefixes: PREFIXES.LONG,\n value: 1,\n offset: 0\n },\n T: {\n name: 'T',\n base: BASE_UNITS.MAGNETIC_FLUX_DENSITY,\n prefixes: PREFIXES.SHORT,\n value: 1,\n offset: 0\n },\n // Binary\n b: {\n name: 'b',\n base: BASE_UNITS.BIT,\n prefixes: PREFIXES.BINARY_SHORT,\n value: 1,\n offset: 0\n },\n bits: {\n name: 'bits',\n base: BASE_UNITS.BIT,\n prefixes: PREFIXES.BINARY_LONG,\n value: 1,\n offset: 0\n },\n B: {\n name: 'B',\n base: BASE_UNITS.BIT,\n prefixes: PREFIXES.BINARY_SHORT,\n value: 8,\n offset: 0\n },\n bytes: {\n name: 'bytes',\n base: BASE_UNITS.BIT,\n prefixes: PREFIXES.BINARY_LONG,\n value: 8,\n offset: 0\n }\n };\n\n // aliases (formerly plurals)\n // note that ALIASES is only used at creation to create more entries in UNITS by copying the aliased units\n var ALIASES = {\n meters: 'meter',\n inches: 'inch',\n feet: 'foot',\n yards: 'yard',\n miles: 'mile',\n links: 'link',\n rods: 'rod',\n chains: 'chain',\n angstroms: 'angstrom',\n lt: 'l',\n litres: 'litre',\n liter: 'litre',\n liters: 'litre',\n teaspoons: 'teaspoon',\n tablespoons: 'tablespoon',\n minims: 'minim',\n fldr: 'fluiddram',\n fluiddrams: 'fluiddram',\n floz: 'fluidounce',\n fluidounces: 'fluidounce',\n gi: 'gill',\n gills: 'gill',\n cp: 'cup',\n cups: 'cup',\n pt: 'pint',\n pints: 'pint',\n qt: 'quart',\n quarts: 'quart',\n gal: 'gallon',\n gallons: 'gallon',\n bbl: 'beerbarrel',\n beerbarrels: 'beerbarrel',\n obl: 'oilbarrel',\n oilbarrels: 'oilbarrel',\n hogsheads: 'hogshead',\n gtts: 'gtt',\n grams: 'gram',\n tons: 'ton',\n tonnes: 'tonne',\n grains: 'grain',\n drams: 'dram',\n ounces: 'ounce',\n poundmasses: 'poundmass',\n hundredweights: 'hundredweight',\n sticks: 'stick',\n lb: 'lbm',\n lbs: 'lbm',\n kips: 'kip',\n kgf: 'kilogramforce',\n acres: 'acre',\n hectares: 'hectare',\n sqfeet: 'sqft',\n sqyard: 'sqyd',\n sqmile: 'sqmi',\n sqmiles: 'sqmi',\n mmhg: 'mmHg',\n mmh2o: 'mmH2O',\n cmh2o: 'cmH2O',\n seconds: 'second',\n secs: 'second',\n minutes: 'minute',\n mins: 'minute',\n hours: 'hour',\n hr: 'hour',\n hrs: 'hour',\n days: 'day',\n weeks: 'week',\n months: 'month',\n years: 'year',\n decades: 'decade',\n centuries: 'century',\n millennia: 'millennium',\n hertz: 'hertz',\n radians: 'radian',\n degrees: 'degree',\n gradians: 'gradian',\n cycles: 'cycle',\n arcsecond: 'arcsec',\n arcseconds: 'arcsec',\n arcminute: 'arcmin',\n arcminutes: 'arcmin',\n BTUs: 'BTU',\n watts: 'watt',\n joules: 'joule',\n amperes: 'ampere',\n amps: 'ampere',\n amp: 'ampere',\n coulombs: 'coulomb',\n volts: 'volt',\n ohms: 'ohm',\n farads: 'farad',\n webers: 'weber',\n teslas: 'tesla',\n electronvolts: 'electronvolt',\n moles: 'mole',\n bit: 'bits',\n byte: 'bytes'\n };\n\n /**\n * Calculate the values for the angle units.\n * Value is calculated as number or BigNumber depending on the configuration\n * @param {{number: 'number' | 'BigNumber'}} config\n */\n function calculateAngleValues(config) {\n if (config.number === 'BigNumber') {\n var pi = createPi(_BigNumber);\n UNITS.rad.value = new _BigNumber(1);\n UNITS.deg.value = pi.div(180); // 2 * pi / 360\n UNITS.grad.value = pi.div(200); // 2 * pi / 400\n UNITS.cycle.value = pi.times(2); // 2 * pi\n UNITS.arcsec.value = pi.div(648000); // 2 * pi / 360 / 3600\n UNITS.arcmin.value = pi.div(10800); // 2 * pi / 360 / 60\n } else {\n // number\n UNITS.rad.value = 1;\n UNITS.deg.value = Math.PI / 180; // 2 * pi / 360\n UNITS.grad.value = Math.PI / 200; // 2 * pi / 400\n UNITS.cycle.value = Math.PI * 2; // 2 * pi\n UNITS.arcsec.value = Math.PI / 648000; // 2 * pi / 360 / 3600\n UNITS.arcmin.value = Math.PI / 10800; // 2 * pi / 360 / 60\n }\n\n // copy to the full names of the angles\n UNITS.radian.value = UNITS.rad.value;\n UNITS.degree.value = UNITS.deg.value;\n UNITS.gradian.value = UNITS.grad.value;\n }\n\n // apply the angle values now\n calculateAngleValues(config);\n if (on) {\n // recalculate the values on change of configuration\n on('config', function (curr, prev) {\n if (curr.number !== prev.number) {\n calculateAngleValues(curr);\n }\n });\n }\n\n /**\n * A unit system is a set of dimensionally independent base units plus a set of derived units, formed by multiplication and division of the base units, that are by convention used with the unit system.\n * A user perhaps could issue a command to select a preferred unit system, or use the default (see below).\n * Auto unit system: The default unit system is updated on the fly anytime a unit is parsed. The corresponding unit in the default unit system is updated, so that answers are given in the same units the user supplies.\n */\n var UNIT_SYSTEMS = {\n si: {\n // Base units\n NONE: {\n unit: UNIT_NONE,\n prefix: PREFIXES.NONE['']\n },\n LENGTH: {\n unit: UNITS.m,\n prefix: PREFIXES.SHORT['']\n },\n MASS: {\n unit: UNITS.g,\n prefix: PREFIXES.SHORT.k\n },\n TIME: {\n unit: UNITS.s,\n prefix: PREFIXES.SHORT['']\n },\n CURRENT: {\n unit: UNITS.A,\n prefix: PREFIXES.SHORT['']\n },\n TEMPERATURE: {\n unit: UNITS.K,\n prefix: PREFIXES.SHORT['']\n },\n LUMINOUS_INTENSITY: {\n unit: UNITS.cd,\n prefix: PREFIXES.SHORT['']\n },\n AMOUNT_OF_SUBSTANCE: {\n unit: UNITS.mol,\n prefix: PREFIXES.SHORT['']\n },\n ANGLE: {\n unit: UNITS.rad,\n prefix: PREFIXES.SHORT['']\n },\n BIT: {\n unit: UNITS.bits,\n prefix: PREFIXES.SHORT['']\n },\n // Derived units\n FORCE: {\n unit: UNITS.N,\n prefix: PREFIXES.SHORT['']\n },\n ENERGY: {\n unit: UNITS.J,\n prefix: PREFIXES.SHORT['']\n },\n POWER: {\n unit: UNITS.W,\n prefix: PREFIXES.SHORT['']\n },\n PRESSURE: {\n unit: UNITS.Pa,\n prefix: PREFIXES.SHORT['']\n },\n ELECTRIC_CHARGE: {\n unit: UNITS.C,\n prefix: PREFIXES.SHORT['']\n },\n ELECTRIC_CAPACITANCE: {\n unit: UNITS.F,\n prefix: PREFIXES.SHORT['']\n },\n ELECTRIC_POTENTIAL: {\n unit: UNITS.V,\n prefix: PREFIXES.SHORT['']\n },\n ELECTRIC_RESISTANCE: {\n unit: UNITS.ohm,\n prefix: PREFIXES.SHORT['']\n },\n ELECTRIC_INDUCTANCE: {\n unit: UNITS.H,\n prefix: PREFIXES.SHORT['']\n },\n ELECTRIC_CONDUCTANCE: {\n unit: UNITS.S,\n prefix: PREFIXES.SHORT['']\n },\n MAGNETIC_FLUX: {\n unit: UNITS.Wb,\n prefix: PREFIXES.SHORT['']\n },\n MAGNETIC_FLUX_DENSITY: {\n unit: UNITS.T,\n prefix: PREFIXES.SHORT['']\n },\n FREQUENCY: {\n unit: UNITS.Hz,\n prefix: PREFIXES.SHORT['']\n }\n }\n };\n\n // Clone to create the other unit systems\n UNIT_SYSTEMS.cgs = JSON.parse(JSON.stringify(UNIT_SYSTEMS.si));\n UNIT_SYSTEMS.cgs.LENGTH = {\n unit: UNITS.m,\n prefix: PREFIXES.SHORT.c\n };\n UNIT_SYSTEMS.cgs.MASS = {\n unit: UNITS.g,\n prefix: PREFIXES.SHORT['']\n };\n UNIT_SYSTEMS.cgs.FORCE = {\n unit: UNITS.dyn,\n prefix: PREFIXES.SHORT['']\n };\n UNIT_SYSTEMS.cgs.ENERGY = {\n unit: UNITS.erg,\n prefix: PREFIXES.NONE['']\n };\n // there are wholly 4 unique cgs systems for electricity and magnetism,\n // so let's not worry about it unless somebody complains\n\n UNIT_SYSTEMS.us = JSON.parse(JSON.stringify(UNIT_SYSTEMS.si));\n UNIT_SYSTEMS.us.LENGTH = {\n unit: UNITS.ft,\n prefix: PREFIXES.NONE['']\n };\n UNIT_SYSTEMS.us.MASS = {\n unit: UNITS.lbm,\n prefix: PREFIXES.NONE['']\n };\n UNIT_SYSTEMS.us.TEMPERATURE = {\n unit: UNITS.degF,\n prefix: PREFIXES.NONE['']\n };\n UNIT_SYSTEMS.us.FORCE = {\n unit: UNITS.lbf,\n prefix: PREFIXES.NONE['']\n };\n UNIT_SYSTEMS.us.ENERGY = {\n unit: UNITS.BTU,\n prefix: PREFIXES.BTU['']\n };\n UNIT_SYSTEMS.us.POWER = {\n unit: UNITS.hp,\n prefix: PREFIXES.NONE['']\n };\n UNIT_SYSTEMS.us.PRESSURE = {\n unit: UNITS.psi,\n prefix: PREFIXES.NONE['']\n };\n\n // Add additional unit systems here.\n\n // Choose a unit system to seed the auto unit system.\n UNIT_SYSTEMS.auto = JSON.parse(JSON.stringify(UNIT_SYSTEMS.si));\n\n // Set the current unit system\n var currentUnitSystem = UNIT_SYSTEMS.auto;\n\n /**\n * Set a unit system for formatting derived units.\n * @memberof Unit\n * @param {string} [name] The name of the unit system.\n */\n Unit.setUnitSystem = function (name) {\n if (hasOwnProperty(UNIT_SYSTEMS, name)) {\n currentUnitSystem = UNIT_SYSTEMS[name];\n } else {\n throw new Error('Unit system ' + name + ' does not exist. Choices are: ' + Object.keys(UNIT_SYSTEMS).join(', '));\n }\n };\n\n /**\n * Return the current unit system.\n * @memberof Unit\n * @return {string} The current unit system.\n */\n Unit.getUnitSystem = function () {\n for (var _key in UNIT_SYSTEMS) {\n if (hasOwnProperty(UNIT_SYSTEMS, _key)) {\n if (UNIT_SYSTEMS[_key] === currentUnitSystem) {\n return _key;\n }\n }\n }\n };\n\n /**\n * Converters to convert from number to an other numeric type like BigNumber\n * or Fraction\n */\n Unit.typeConverters = {\n BigNumber: function BigNumber(x) {\n if (x !== null && x !== void 0 && x.isFraction) return new _BigNumber(String(x.n)).div(String(x.d)).times(String(x.s));\n return new _BigNumber(x + ''); // stringify to prevent constructor error\n },\n Fraction: function Fraction(x) {\n return new _Fraction(x);\n },\n Complex: function Complex(x) {\n return x;\n },\n number: function number(x) {\n if (x !== null && x !== void 0 && x.isFraction) return _number(x);\n return x;\n }\n };\n\n /**\n * Retrieve the right converter function corresponding with this unit's\n * value\n *\n * @memberof Unit\n * @return {Function}\n */\n Unit.prototype._numberConverter = function () {\n var convert = Unit.typeConverters[this.valueType()];\n if (convert) {\n return convert;\n }\n throw new TypeError('Unsupported Unit value type \"' + this.valueType() + '\"');\n };\n\n /**\n * Retrieve the right convertor function corresponding with the type\n * of provided exampleValue.\n *\n * @param {string} type A string 'number', 'BigNumber', or 'Fraction'\n * In case of an unknown type,\n * @return {Function}\n */\n Unit._getNumberConverter = function (type) {\n if (!Unit.typeConverters[type]) {\n throw new TypeError('Unsupported type \"' + type + '\"');\n }\n return Unit.typeConverters[type];\n };\n\n // Add dimensions to each built-in unit\n for (var _key2 in UNITS) {\n if (hasOwnProperty(UNITS, _key2)) {\n var unit = UNITS[_key2];\n unit.dimensions = unit.base.dimensions;\n }\n }\n\n // Create aliases\n for (var _name2 in ALIASES) {\n if (hasOwnProperty(ALIASES, _name2)) {\n var _unit2 = UNITS[ALIASES[_name2]];\n var alias = {};\n for (var _key3 in _unit2) {\n if (hasOwnProperty(_unit2, _key3)) {\n alias[_key3] = _unit2[_key3];\n }\n }\n alias.name = _name2;\n UNITS[_name2] = alias;\n }\n }\n\n /**\n * Checks if a character is a valid latin letter (upper or lower case).\n * Note that this function can be overridden, for example to allow support of other alphabets.\n * @memberof Unit\n * @param {string} c Tested character\n * @return {boolean} true if the character is a latin letter\n */\n Unit.isValidAlpha = function isValidAlpha(c) {\n return /^[a-zA-Z]$/.test(c);\n };\n function assertUnitNameIsValid(name) {\n for (var i = 0; i < name.length; i++) {\n c = name.charAt(i);\n if (i === 0 && !Unit.isValidAlpha(c)) {\n throw new Error('Invalid unit name (must begin with alpha character): \"' + name + '\"');\n }\n if (i > 0 && !(Unit.isValidAlpha(c) || isDigit(c))) {\n throw new Error('Invalid unit name (only alphanumeric characters are allowed): \"' + name + '\"');\n }\n }\n }\n\n /**\n * Wrapper around createUnitSingle.\n * Example:\n * createUnit( {\n * foo: {\n * prefixes: 'long',\n * baseName: 'essence-of-foo'\n * },\n * bar: '40 foo',\n * baz: {\n * definition: '1 bar/hour',\n * prefixes: 'long'\n * }\n * },\n * {\n * override: true\n * })\n * @memberof Unit\n * @param {object} obj Object map. Each key becomes a unit which is defined by its value.\n * @param {object} options\n * @return {Unit} the last created unit\n */\n Unit.createUnit = function (obj, options) {\n if (typeof obj !== 'object') {\n throw new TypeError(\"createUnit expects first parameter to be of type 'Object'\");\n }\n\n // Remove all units and aliases we are overriding\n if (options && options.override) {\n for (var _key4 in obj) {\n if (hasOwnProperty(obj, _key4)) {\n Unit.deleteUnit(_key4);\n }\n if (obj[_key4].aliases) {\n for (var i = 0; i < obj[_key4].aliases.length; i++) {\n Unit.deleteUnit(obj[_key4].aliases[i]);\n }\n }\n }\n }\n\n // TODO: traverse multiple times until all units have been added\n var lastUnit;\n for (var _key5 in obj) {\n if (hasOwnProperty(obj, _key5)) {\n lastUnit = Unit.createUnitSingle(_key5, obj[_key5]);\n }\n }\n return lastUnit;\n };\n\n /**\n * Create a user-defined unit and register it with the Unit type.\n * Example:\n * createUnitSingle('knot', '0.514444444 m/s')\n *\n * @memberof Unit\n * @param {string} name The name of the new unit. Must be unique. Example: 'knot'\n * @param {string | Unit | object} definition Definition of the unit in terms\n * of existing units. For example, '0.514444444 m / s'. Can be a Unit, a string,\n * or an Object. If an Object, may have the following properties:\n * - definition {string | Unit} The definition of this unit.\n * - prefixes {string} \"none\", \"short\", \"long\", \"binary_short\", or \"binary_long\".\n * The default is \"none\".\n * - aliases {Array} Array of strings. Example: ['knots', 'kt', 'kts']\n * - offset {Numeric} An offset to apply when converting from the unit. For\n * example, the offset for celsius is 273.15 and the offset for farhenheit\n * is 459.67. Default is 0.\n * - baseName {string} If the unit's dimension does not match that of any other\n * base unit, the name of the newly create base unit. Otherwise, this property\n * has no effect.\n *\n * @return {Unit}\n */\n Unit.createUnitSingle = function (name, obj) {\n if (typeof obj === 'undefined' || obj === null) {\n obj = {};\n }\n if (typeof name !== 'string') {\n throw new TypeError(\"createUnitSingle expects first parameter to be of type 'string'\");\n }\n\n // Check collisions with existing units\n if (hasOwnProperty(UNITS, name)) {\n throw new Error('Cannot create unit \"' + name + '\": a unit with that name already exists');\n }\n\n // TODO: Validate name for collisions with other built-in functions (like abs or cos, for example), and for acceptable variable names. For example, '42' is probably not a valid unit. Nor is '%', since it is also an operator.\n\n assertUnitNameIsValid(name);\n var defUnit = null; // The Unit from which the new unit will be created.\n var aliases = [];\n var offset = 0;\n var definition;\n var prefixes;\n var baseName;\n if (obj && obj.type === 'Unit') {\n defUnit = obj.clone();\n } else if (typeof obj === 'string') {\n if (obj !== '') {\n definition = obj;\n }\n } else if (typeof obj === 'object') {\n definition = obj.definition;\n prefixes = obj.prefixes;\n offset = obj.offset;\n baseName = obj.baseName;\n if (obj.aliases) {\n aliases = obj.aliases.valueOf(); // aliases could be a Matrix, so convert to Array\n }\n } else {\n throw new TypeError('Cannot create unit \"' + name + '\" from \"' + obj.toString() + '\": expecting \"string\" or \"Unit\" or \"Object\"');\n }\n if (aliases) {\n for (var i = 0; i < aliases.length; i++) {\n if (hasOwnProperty(UNITS, aliases[i])) {\n throw new Error('Cannot create alias \"' + aliases[i] + '\": a unit with that name already exists');\n }\n }\n }\n if (definition && typeof definition === 'string' && !defUnit) {\n try {\n defUnit = Unit.parse(definition, {\n allowNoUnits: true\n });\n } catch (ex) {\n ex.message = 'Could not create unit \"' + name + '\" from \"' + definition + '\": ' + ex.message;\n throw ex;\n }\n } else if (definition && definition.type === 'Unit') {\n defUnit = definition.clone();\n }\n aliases = aliases || [];\n offset = offset || 0;\n if (prefixes && prefixes.toUpperCase) {\n prefixes = PREFIXES[prefixes.toUpperCase()] || PREFIXES.NONE;\n } else {\n prefixes = PREFIXES.NONE;\n }\n\n // If defUnit is null, it is because the user did not\n // specify a defintion. So create a new base dimension.\n var newUnit = {};\n if (!defUnit) {\n // Add a new base dimension\n baseName = baseName || name + '_STUFF'; // foo --> foo_STUFF, or the essence of foo\n if (BASE_DIMENSIONS.indexOf(baseName) >= 0) {\n throw new Error('Cannot create new base unit \"' + name + '\": a base unit with that name already exists (and cannot be overridden)');\n }\n BASE_DIMENSIONS.push(baseName);\n\n // Push 0 onto existing base units\n for (var b in BASE_UNITS) {\n if (hasOwnProperty(BASE_UNITS, b)) {\n BASE_UNITS[b].dimensions[BASE_DIMENSIONS.length - 1] = 0;\n }\n }\n\n // Add the new base unit\n var newBaseUnit = {\n dimensions: []\n };\n for (var _i6 = 0; _i6 < BASE_DIMENSIONS.length; _i6++) {\n newBaseUnit.dimensions[_i6] = 0;\n }\n newBaseUnit.dimensions[BASE_DIMENSIONS.length - 1] = 1;\n newBaseUnit.key = baseName;\n BASE_UNITS[baseName] = newBaseUnit;\n newUnit = {\n name,\n value: 1,\n dimensions: BASE_UNITS[baseName].dimensions.slice(0),\n prefixes,\n offset,\n base: BASE_UNITS[baseName]\n };\n currentUnitSystem[baseName] = {\n unit: newUnit,\n prefix: PREFIXES.NONE['']\n };\n } else {\n newUnit = {\n name,\n value: defUnit.value,\n dimensions: defUnit.dimensions.slice(0),\n prefixes,\n offset\n };\n\n // Create a new base if no matching base exists\n var anyMatch = false;\n for (var _i7 in BASE_UNITS) {\n if (hasOwnProperty(BASE_UNITS, _i7)) {\n var match = true;\n for (var j = 0; j < BASE_DIMENSIONS.length; j++) {\n if (Math.abs((newUnit.dimensions[j] || 0) - (BASE_UNITS[_i7].dimensions[j] || 0)) > 1e-12) {\n match = false;\n break;\n }\n }\n if (match) {\n anyMatch = true;\n newUnit.base = BASE_UNITS[_i7];\n break;\n }\n }\n }\n if (!anyMatch) {\n baseName = baseName || name + '_STUFF'; // foo --> foo_STUFF, or the essence of foo\n // Add the new base unit\n var _newBaseUnit = {\n dimensions: defUnit.dimensions.slice(0)\n };\n _newBaseUnit.key = baseName;\n BASE_UNITS[baseName] = _newBaseUnit;\n currentUnitSystem[baseName] = {\n unit: newUnit,\n prefix: PREFIXES.NONE['']\n };\n newUnit.base = BASE_UNITS[baseName];\n }\n }\n Unit.UNITS[name] = newUnit;\n for (var _i8 = 0; _i8 < aliases.length; _i8++) {\n var aliasName = aliases[_i8];\n var _alias = {};\n for (var _key6 in newUnit) {\n if (hasOwnProperty(newUnit, _key6)) {\n _alias[_key6] = newUnit[_key6];\n }\n }\n _alias.name = aliasName;\n Unit.UNITS[aliasName] = _alias;\n }\n\n // delete the memoization cache because we created a new unit\n delete _findUnit.cache;\n return new Unit(null, name);\n };\n Unit.deleteUnit = function (name) {\n delete Unit.UNITS[name];\n\n // delete the memoization cache because we deleted a unit\n delete _findUnit.cache;\n };\n\n // expose arrays with prefixes, dimensions, units, systems\n Unit.PREFIXES = PREFIXES;\n Unit.BASE_DIMENSIONS = BASE_DIMENSIONS;\n Unit.BASE_UNITS = BASE_UNITS;\n Unit.UNIT_SYSTEMS = UNIT_SYSTEMS;\n Unit.UNITS = UNITS;\n return Unit;\n}, {\n isClass: true\n});", "import { factory } from '../../../utils/factory.js';\nimport { deepMap } from '../../../utils/collection.js';\nvar name = 'unit';\nvar dependencies = ['typed', 'Unit'];\n\n// This function is named createUnitFunction to prevent a naming conflict with createUnit\nexport var createUnitFunction = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Unit\n } = _ref;\n /**\n * Create a unit. Depending on the passed arguments, the function\n * will create and return a new math.Unit object.\n * When a matrix is provided, all elements will be converted to units.\n *\n * Syntax:\n *\n * math.unit(unit : string)\n * math.unit(value : number, valuelessUnit : Unit)\n * math.unit(value : number, valuelessUnit : string)\n *\n * Examples:\n *\n * const kph = math.unit('km/h') // returns Unit km/h (valueless)\n * const v = math.unit(25, kph) // returns Unit 25 km/h\n * const a = math.unit(5, 'cm') // returns Unit 50 mm\n * const b = math.unit('23 kg') // returns Unit 23 kg\n * a.to('m') // returns Unit 0.05 m\n *\n * See also:\n *\n * bignumber, boolean, complex, index, matrix, number, string, createUnit\n *\n * @param {* | Array | Matrix} args A number and unit.\n * @return {Unit | Array | Matrix} The created unit\n */\n\n return typed(name, {\n Unit: function Unit(x) {\n return x.clone();\n },\n string: function string(x) {\n if (Unit.isValuelessUnit(x)) {\n return new Unit(null, x); // a pure unit\n }\n return Unit.parse(x, {\n allowNoUnits: true\n }); // a unit with value, like '5cm'\n },\n 'number | BigNumber | Fraction | Complex, string | Unit': function number__BigNumber__Fraction__Complex_string__Unit(value, unit) {\n return new Unit(value, unit);\n },\n 'number | BigNumber | Fraction': function number__BigNumber__Fraction(value) {\n // dimensionless\n return new Unit(value);\n },\n 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))\n });\n});", "import { factory } from '../../../utils/factory.js';\nvar name = 'sparse';\nvar dependencies = ['typed', 'SparseMatrix'];\nexport var createSparse = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n SparseMatrix\n } = _ref;\n /**\n * Create a Sparse Matrix. The function creates a new `math.Matrix` object from\n * an `Array`. A Matrix has utility functions to manipulate the data in the\n * matrix, like getting the size and getting or setting values in the matrix.\n * Note that a Sparse Matrix is always 2-dimensional, so for example if\n * you create one from a plain array of _n_ numbers, you get an _n_ by 1\n * Sparse \"column vector\".\n *\n * Syntax:\n *\n * math.sparse() // creates an empty sparse matrix.\n * math.sparse(data) // creates a sparse matrix with initial data.\n * math.sparse(data, 'number') // creates a sparse matrix with initial data, number datatype.\n *\n * Examples:\n *\n * let m = math.sparse([[1, 2], [3, 4]])\n * m.size() // Array [2, 2]\n * m.resize([3, 2], 5)\n * m.valueOf() // Array [[1, 2], [3, 4], [5, 5]]\n * m.get([1, 0]) // number 3\n * let v = math.sparse([0, 0, 1])\n * v.size() // Array [3, 1]\n * v.get([2, 0]) // number 1\n *\n * See also:\n *\n * bignumber, boolean, complex, index, number, string, unit, matrix\n *\n * @param {Array | Matrix} [data] A two dimensional array\n *\n * @return {Matrix} The created matrix\n */\n return typed(name, {\n '': function _() {\n return new SparseMatrix([]);\n },\n string: function string(datatype) {\n return new SparseMatrix([], datatype);\n },\n 'Array | Matrix': function Array__Matrix(data) {\n return new SparseMatrix(data);\n },\n 'Array | Matrix, string': function Array__Matrix_string(data, datatype) {\n return new SparseMatrix(data, datatype);\n }\n });\n});", "import { factory } from '../../../utils/factory.js';\nvar name = 'createUnit';\nvar dependencies = ['typed', 'Unit'];\nexport var createCreateUnit = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Unit\n } = _ref;\n /**\n * Create a user-defined unit and register it with the Unit type.\n *\n * Syntax:\n *\n * math.createUnit({\n * baseUnit1: {\n * aliases: [string, ...]\n * prefixes: object\n * },\n * unit2: {\n * definition: string,\n * aliases: [string, ...]\n * prefixes: object,\n * offset: number\n * },\n * unit3: string // Shortcut\n * })\n *\n * // Another shortcut:\n * math.createUnit(string, unit : string, [object])\n *\n * Examples:\n *\n * math.createUnit('foo')\n * math.createUnit('knot', {definition: '0.514444444 m/s', aliases: ['knots', 'kt', 'kts']})\n * math.createUnit('mph', '1 mile/hour')\n * math.createUnit('km', math.unit(1000, 'm'))\n *\n * @param {string} name The name of the new unit. Must be unique. Example: 'knot'\n * @param {string, UnitDefinition, Unit} definition Definition of the unit in terms of existing units. For example, '0.514444444 m / s'.\n * @param {Object} options (optional) An object containing any of the following properties:\n * - `prefixes {string}` \"none\", \"short\", \"long\", \"binary_short\", or \"binary_long\". The default is \"none\".\n * - `aliases {Array}` Array of strings. Example: ['knots', 'kt', 'kts']\n * - `offset {Numeric}` An offset to apply when converting from the unit. For example, the offset for celsius is 273.15. Default is 0.\n *\n * See also:\n *\n * unit\n *\n * @return {Unit} The new unit\n */\n return typed(name, {\n // General function signature. First parameter is an object where each property is the definition of a new unit. The object keys are the unit names and the values are the definitions. The values can be objects, strings, or Units. If a property is an empty object or an empty string, a new base unit is created. The second parameter is the options.\n 'Object, Object': function Object_Object(obj, options) {\n return Unit.createUnit(obj, options);\n },\n // Same as above but without the options.\n Object: function Object(obj) {\n return Unit.createUnit(obj, {});\n },\n // Shortcut method for creating one unit.\n 'string, Unit | string | Object, Object': function string_Unit__string__Object_Object(name, def, options) {\n var obj = {};\n obj[name] = def;\n return Unit.createUnit(obj, options);\n },\n // Same as above but without the options.\n 'string, Unit | string | Object': function string_Unit__string__Object(name, def) {\n var obj = {};\n obj[name] = def;\n return Unit.createUnit(obj, {});\n },\n // Without a definition, creates a base unit.\n string: function string(name) {\n var obj = {};\n obj[name] = {};\n return Unit.createUnit(obj, {});\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'acos';\nvar dependencies = ['typed', 'config', 'Complex'];\nexport var createAcos = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex\n } = _ref;\n /**\n * Calculate the inverse cosine of a value.\n *\n * To avoid confusion with the matrix arccosine, this function does not\n * apply to matrices.\n *\n * Syntax:\n *\n * math.acos(x)\n *\n * Examples:\n *\n * math.acos(0.5) // returns number 1.0471975511965979\n * math.acos(math.cos(1.5)) // returns number 1.5\n *\n * math.acos(2) // returns Complex 0 + 1.3169578969248166 i\n *\n * See also:\n *\n * cos, atan, asin\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} The arc cosine of x\n */\n return typed(name, {\n number: function number(x) {\n if (x >= -1 && x <= 1 || config.predictable) {\n return Math.acos(x);\n } else {\n return new Complex(x, 0).acos();\n }\n },\n Complex: function Complex(x) {\n return x.acos();\n },\n BigNumber: function BigNumber(x) {\n return x.acos();\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { acoshNumber } from '../../plain/number/index.js';\nvar name = 'acosh';\nvar dependencies = ['typed', 'config', 'Complex'];\nexport var createAcosh = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex\n } = _ref;\n /**\n * Calculate the hyperbolic arccos of a value,\n * defined as `acosh(x) = ln(sqrt(x^2 - 1) + x)`.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.acosh(x)\n *\n * Examples:\n *\n * math.acosh(1.5) // returns 0.9624236501192069\n *\n * See also:\n *\n * cosh, asinh, atanh\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} Hyperbolic arccosine of x\n */\n return typed(name, {\n number: function number(x) {\n if (x >= 1 || config.predictable) {\n return acoshNumber(x);\n }\n if (x <= -1) {\n return new Complex(Math.log(Math.sqrt(x * x - 1) - x), Math.PI);\n }\n return new Complex(x, 0).acosh();\n },\n Complex: function Complex(x) {\n return x.acosh();\n },\n BigNumber: function BigNumber(x) {\n return x.acosh();\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { acotNumber } from '../../plain/number/index.js';\nvar name = 'acot';\nvar dependencies = ['typed', 'BigNumber'];\nexport var createAcot = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber: _BigNumber\n } = _ref;\n /**\n * Calculate the inverse cotangent of a value, defined as `acot(x) = atan(1/x)`.\n *\n * To avoid confusion with the matrix arccotanget, this function does not\n * apply to matrices.\n *\n * Syntax:\n *\n * math.acot(x)\n *\n * Examples:\n *\n * math.acot(0.5) // returns number 1.1071487177940904\n * math.acot(2) // returns number 0.4636476090008061\n * math.acot(math.cot(1.5)) // returns number 1.5\n *\n * See also:\n *\n * cot, atan\n *\n * @param {number | BigNumber| Complex} x Function input\n * @return {number | BigNumber| Complex} The arc cotangent of x\n */\n return typed(name, {\n number: acotNumber,\n Complex: function Complex(x) {\n return x.acot();\n },\n BigNumber: function BigNumber(x) {\n return new _BigNumber(1).div(x).atan();\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { acothNumber } from '../../plain/number/index.js';\nvar name = 'acoth';\nvar dependencies = ['typed', 'config', 'Complex', 'BigNumber'];\nexport var createAcoth = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex,\n BigNumber: _BigNumber\n } = _ref;\n /**\n * Calculate the inverse hyperbolic tangent of a value,\n * defined as `acoth(x) = atanh(1/x) = (ln((x+1)/x) + ln(x/(x-1))) / 2`.\n *\n * To avoid confusion with the matrix inverse hyperbolic tangent, this\n * function does not apply to matrices.\n *\n * Syntax:\n *\n * math.acoth(x)\n *\n * Examples:\n *\n * math.acoth(0.5) // returns 0.8047189562170503\n *\n * See also:\n *\n * acsch, asech\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} Hyperbolic arccotangent of x\n */\n return typed(name, {\n number: function number(x) {\n if (x >= 1 || x <= -1 || config.predictable) {\n return acothNumber(x);\n }\n return new Complex(x, 0).acoth();\n },\n Complex: function Complex(x) {\n return x.acoth();\n },\n BigNumber: function BigNumber(x) {\n return new _BigNumber(1).div(x).atanh();\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { acscNumber } from '../../plain/number/index.js';\nvar name = 'acsc';\nvar dependencies = ['typed', 'config', 'Complex', 'BigNumber'];\nexport var createAcsc = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex,\n BigNumber: _BigNumber\n } = _ref;\n /**\n * Calculate the inverse cosecant of a value, defined as `acsc(x) = asin(1/x)`.\n *\n * To avoid confusion with the matrix arccosecant, this function does not\n * apply to matrices.\n *\n * Syntax:\n *\n * math.acsc(x)\n *\n * Examples:\n *\n * math.acsc(2) // returns 0.5235987755982989\n * math.acsc(0.5) // returns Complex 1.5707963267948966 -1.3169578969248166i\n * math.acsc(math.csc(1.5)) // returns number ~1.5\n *\n * See also:\n *\n * csc, asin, asec\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} The arc cosecant of x\n */\n return typed(name, {\n number: function number(x) {\n if (x <= -1 || x >= 1 || config.predictable) {\n return acscNumber(x);\n }\n return new Complex(x, 0).acsc();\n },\n Complex: function Complex(x) {\n return x.acsc();\n },\n BigNumber: function BigNumber(x) {\n return new _BigNumber(1).div(x).asin();\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { acschNumber } from '../../plain/number/index.js';\nvar name = 'acsch';\nvar dependencies = ['typed', 'BigNumber'];\nexport var createAcsch = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber: _BigNumber\n } = _ref;\n /**\n * Calculate the inverse hyperbolic cosecant of a value,\n * defined as `acsch(x) = asinh(1/x) = ln(1/x + sqrt(1/x^2 + 1))`.\n *\n * To avoid confusion with the matrix inverse hyperbolic cosecant, this function\n * does not apply to matrices.\n *\n * Syntax:\n *\n * math.acsch(x)\n *\n * Examples:\n *\n * math.acsch(0.5) // returns 1.4436354751788103\n *\n * See also:\n *\n * asech, acoth\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} Hyperbolic arccosecant of x\n */\n return typed(name, {\n number: acschNumber,\n Complex: function Complex(x) {\n return x.acsch();\n },\n BigNumber: function BigNumber(x) {\n return new _BigNumber(1).div(x).asinh();\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { asecNumber } from '../../plain/number/index.js';\nvar name = 'asec';\nvar dependencies = ['typed', 'config', 'Complex', 'BigNumber'];\nexport var createAsec = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex,\n BigNumber: _BigNumber\n } = _ref;\n /**\n * Calculate the inverse secant of a value. Defined as `asec(x) = acos(1/x)`.\n *\n * To avoid confusion with the matrix arcsecant, this function does not\n * apply to matrices.\n *\n * Syntax:\n *\n * math.asec(x)\n *\n * Examples:\n *\n * math.asec(2) // returns 1.0471975511965979\n * math.asec(math.sec(1.5)) // returns 1.5\n *\n * math.asec(0.5) // returns Complex 0 + 1.3169578969248166i\n *\n * See also:\n *\n * acos, acot, acsc\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} The arc secant of x\n */\n return typed(name, {\n number: function number(x) {\n if (x <= -1 || x >= 1 || config.predictable) {\n return asecNumber(x);\n }\n return new Complex(x, 0).asec();\n },\n Complex: function Complex(x) {\n return x.asec();\n },\n BigNumber: function BigNumber(x) {\n return new _BigNumber(1).div(x).acos();\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { asechNumber } from '../../plain/number/index.js';\nvar name = 'asech';\nvar dependencies = ['typed', 'config', 'Complex', 'BigNumber'];\nexport var createAsech = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex,\n BigNumber: _BigNumber\n } = _ref;\n /**\n * Calculate the hyperbolic arcsecant of a value,\n * defined as `asech(x) = acosh(1/x) = ln(sqrt(1/x^2 - 1) + 1/x)`.\n *\n * To avoid confusion with the matrix hyperbolic arcsecant, this function\n * does not apply to matrices.\n *\n * Syntax:\n *\n * math.asech(x)\n *\n * Examples:\n *\n * math.asech(0.5) // returns 1.3169578969248166\n *\n * See also:\n *\n * acsch, acoth\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} Hyperbolic arcsecant of x\n */\n return typed(name, {\n number: function number(x) {\n if (x <= 1 && x >= -1 || config.predictable) {\n var xInv = 1 / x;\n if (xInv > 0 || config.predictable) {\n return asechNumber(x);\n }\n var ret = Math.sqrt(xInv * xInv - 1);\n return new Complex(Math.log(ret - xInv), Math.PI);\n }\n return new Complex(x, 0).asech();\n },\n Complex: function Complex(x) {\n return x.asech();\n },\n BigNumber: function BigNumber(x) {\n return new _BigNumber(1).div(x).acosh();\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'asin';\nvar dependencies = ['typed', 'config', 'Complex'];\nexport var createAsin = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex\n } = _ref;\n /**\n * Calculate the inverse sine of a value.\n *\n * To avoid confusion with the matric arcsine, this function does not apply\n * to matrices.\n *\n * Syntax:\n *\n * math.asin(x)\n *\n * Examples:\n *\n * math.asin(0.5) // returns number 0.5235987755982989\n * math.asin(math.sin(1.5)) // returns number ~1.5\n *\n * math.asin(2) // returns Complex 1.5707963267948966 -1.3169578969248166i\n *\n * See also:\n *\n * sin, atan, acos\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} The arc sine of x\n */\n return typed(name, {\n number: function number(x) {\n if (x >= -1 && x <= 1 || config.predictable) {\n return Math.asin(x);\n } else {\n return new Complex(x, 0).asin();\n }\n },\n Complex: function Complex(x) {\n return x.asin();\n },\n BigNumber: function BigNumber(x) {\n return x.asin();\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { asinhNumber } from '../../plain/number/index.js';\nvar name = 'asinh';\nvar dependencies = ['typed'];\nexport var createAsinh = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Calculate the hyperbolic arcsine of a value,\n * defined as `asinh(x) = ln(x + sqrt(x^2 + 1))`.\n *\n * To avoid confusion with the matrix hyperbolic arcsine, this function\n * does not apply to matrices.\n *\n * Syntax:\n *\n * math.asinh(x)\n *\n * Examples:\n *\n * math.asinh(0.5) // returns 0.48121182505960347\n *\n * See also:\n *\n * acosh, atanh\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} Hyperbolic arcsine of x\n */\n return typed('asinh', {\n number: asinhNumber,\n Complex: function Complex(x) {\n return x.asinh();\n },\n BigNumber: function BigNumber(x) {\n return x.asinh();\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'atan';\nvar dependencies = ['typed'];\nexport var createAtan = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Calculate the inverse tangent of a value.\n *\n * To avoid confusion with matrix arctangent, this function does not apply\n * to matrices.\n *\n * Syntax:\n *\n * math.atan(x)\n *\n * Examples:\n *\n * math.atan(0.5) // returns number 0.4636476090008061\n * math.atan(2) // returns number 1.1071487177940904\n * math.atan(math.tan(1.5)) // returns number 1.5\n *\n * See also:\n *\n * tan, asin, acos\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} The arc tangent of x\n */\n return typed('atan', {\n number: function number(x) {\n return Math.atan(x);\n },\n Complex: function Complex(x) {\n return x.atan();\n },\n BigNumber: function BigNumber(x) {\n return x.atan();\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { createMatAlgo02xDS0 } from '../../type/matrix/utils/matAlgo02xDS0.js';\nimport { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';\nimport { createMatAlgo09xS0Sf } from '../../type/matrix/utils/matAlgo09xS0Sf.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nvar name = 'atan2';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'BigNumber', 'DenseMatrix', 'concat'];\nexport var createAtan2 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n BigNumber,\n DenseMatrix,\n concat\n } = _ref;\n var matAlgo02xDS0 = createMatAlgo02xDS0({\n typed,\n equalScalar\n });\n var matAlgo03xDSf = createMatAlgo03xDSf({\n typed\n });\n var matAlgo09xS0Sf = createMatAlgo09xS0Sf({\n typed,\n equalScalar\n });\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matAlgo12xSfs = createMatAlgo12xSfs({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n\n /**\n * Calculate the inverse tangent function with two arguments, y/x.\n * By providing two arguments, the right quadrant of the computed angle can be\n * determined.\n *\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.atan2(y, x)\n *\n * Examples:\n *\n * math.atan2(2, 2) / math.pi // returns number 0.25\n *\n * const angle = math.unit(60, 'deg') // returns Unit 60 deg\n * const x = math.cos(angle)\n * const y = math.sin(angle)\n *\n * math.atan(2) // returns number 1.1071487177940904\n *\n * See also:\n *\n * tan, atan, sin, cos\n *\n * @param {number | Array | Matrix} y Second dimension\n * @param {number | Array | Matrix} x First dimension\n * @return {number | Array | Matrix} Four-quadrant inverse tangent\n */\n return typed(name, {\n 'number, number': Math.atan2,\n // Complex numbers doesn't seem to have a reasonable implementation of\n // atan2(). Even Matlab removed the support, after they only calculated\n // the atan only on base of the real part of the numbers and ignored\n // the imaginary.\n\n 'BigNumber, BigNumber': (y, x) => BigNumber.atan2(y, x)\n }, matrixAlgorithmSuite({\n scalar: 'number | BigNumber',\n SS: matAlgo09xS0Sf,\n DS: matAlgo03xDSf,\n SD: matAlgo02xDS0,\n Ss: matAlgo11xS0s,\n sS: matAlgo12xSfs\n }));\n});", "import { factory } from '../../utils/factory.js';\nimport { atanhNumber } from '../../plain/number/index.js';\nvar name = 'atanh';\nvar dependencies = ['typed', 'config', 'Complex'];\nexport var createAtanh = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n Complex\n } = _ref;\n /**\n * Calculate the hyperbolic arctangent of a value,\n * defined as `atanh(x) = ln((1 + x)/(1 - x)) / 2`.\n *\n * To avoid confusion with the matrix hyperbolic arctangent, this function\n * does not apply to matrices.\n *\n * Syntax:\n *\n * math.atanh(x)\n *\n * Examples:\n *\n * math.atanh(0.5) // returns 0.5493061443340549\n *\n * See also:\n *\n * acosh, asinh\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} Hyperbolic arctangent of x\n */\n return typed(name, {\n number: function number(x) {\n if (x <= 1 && x >= -1 || config.predictable) {\n return atanhNumber(x);\n }\n return new Complex(x, 0).atanh();\n },\n Complex: function Complex(x) {\n return x.atanh();\n },\n BigNumber: function BigNumber(x) {\n return x.atanh();\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nexport var createTrigUnit = /* #__PURE__ */factory('trigUnit', ['typed'], _ref => {\n var {\n typed\n } = _ref;\n return {\n Unit: typed.referToSelf(self => x => {\n if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {\n throw new TypeError('Unit in function cot is no angle');\n }\n return typed.find(self, x.valueType())(x.value);\n })\n };\n});", "import { factory } from '../../utils/factory.js';\nimport { createTrigUnit } from './trigUnit.js';\nvar name = 'cos';\nvar dependencies = ['typed'];\nexport var createCos = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n var trigUnit = createTrigUnit({\n typed\n });\n\n /**\n * Calculate the cosine of a value.\n *\n * To avoid confusion with the matrix cosine, this function does not\n * apply to matrices.\n *\n * Syntax:\n *\n * math.cos(x)\n *\n * Examples:\n *\n * math.cos(2) // returns number -0.4161468365471422\n * math.cos(math.pi / 4) // returns number 0.7071067811865475\n * math.cos(math.unit(180, 'deg')) // returns number -1\n * math.cos(math.unit(60, 'deg')) // returns number 0.5\n *\n * const angle = 0.2\n * math.pow(math.sin(angle), 2) + math.pow(math.cos(angle), 2) // returns number ~1\n *\n * See also:\n *\n * cos, tan\n *\n * @param {number | BigNumber | Complex | Unit} x Function input\n * @return {number | BigNumber | Complex} Cosine of x\n */\n return typed(name, {\n number: Math.cos,\n 'Complex | BigNumber': x => x.cos()\n }, trigUnit);\n});", "import { factory } from '../../utils/factory.js';\nimport { cosh as coshNumber } from '../../utils/number.js';\nvar name = 'cosh';\nvar dependencies = ['typed'];\nexport var createCosh = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Calculate the hyperbolic cosine of a value,\n * defined as `cosh(x) = 1/2 * (exp(x) + exp(-x))`.\n *\n * To avoid confusion with the matrix hyperbolic cosine, this function does\n * not apply to matrices.\n *\n * Syntax:\n *\n * math.cosh(x)\n *\n * Examples:\n *\n * math.cosh(0.5) // returns number 1.1276259652063807\n *\n * See also:\n *\n * sinh, tanh\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} Hyperbolic cosine of x\n */\n return typed(name, {\n number: coshNumber,\n 'Complex | BigNumber': x => x.cosh()\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { cotNumber } from '../../plain/number/index.js';\nimport { createTrigUnit } from './trigUnit.js';\nvar name = 'cot';\nvar dependencies = ['typed', 'BigNumber'];\nexport var createCot = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber: _BigNumber\n } = _ref;\n var trigUnit = createTrigUnit({\n typed\n });\n\n /**\n * Calculate the cotangent of a value. Defined as `cot(x) = 1 / tan(x)`.\n *\n * To avoid confusion with the matrix cotangent, this function does not\n * apply to matrices.\n *\n * Syntax:\n *\n * math.cot(x)\n *\n * Examples:\n *\n * math.cot(2) // returns number -0.45765755436028577\n * 1 / math.tan(2) // returns number -0.45765755436028577\n *\n * See also:\n *\n * tan, sec, csc\n *\n * @param {number | Complex | Unit | Array | Matrix} x Function input\n * @return {number | Complex | Array | Matrix} Cotangent of x\n */\n return typed(name, {\n number: cotNumber,\n Complex: x => x.cot(),\n BigNumber: x => new _BigNumber(1).div(x.tan())\n }, trigUnit);\n});", "import { factory } from '../../utils/factory.js';\nimport { cothNumber } from '../../plain/number/index.js';\nvar name = 'coth';\nvar dependencies = ['typed', 'BigNumber'];\nexport var createCoth = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber: _BigNumber\n } = _ref;\n /**\n * Calculate the hyperbolic cotangent of a value,\n * defined as `coth(x) = 1 / tanh(x)`.\n *\n * To avoid confusion with the matrix hyperbolic cotangent, this function\n * does not apply to matrices.\n *\n * Syntax:\n *\n * math.coth(x)\n *\n * Examples:\n *\n * // coth(x) = 1 / tanh(x)\n * math.coth(2) // returns 1.0373147207275482\n * 1 / math.tanh(2) // returns 1.0373147207275482\n *\n * See also:\n *\n * sinh, tanh, cosh\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} Hyperbolic cotangent of x\n */\n return typed(name, {\n number: cothNumber,\n Complex: x => x.coth(),\n BigNumber: x => new _BigNumber(1).div(x.tanh())\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { cscNumber } from '../../plain/number/index.js';\nimport { createTrigUnit } from './trigUnit.js';\nvar name = 'csc';\nvar dependencies = ['typed', 'BigNumber'];\nexport var createCsc = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber: _BigNumber\n } = _ref;\n var trigUnit = createTrigUnit({\n typed\n });\n\n /**\n * Calculate the cosecant of a value, defined as `csc(x) = 1/sin(x)`.\n *\n * To avoid confusion with the matrix cosecant, this function does not\n * apply to matrices.\n *\n * Syntax:\n *\n * math.csc(x)\n *\n * Examples:\n *\n * math.csc(2) // returns number 1.099750170294617\n * 1 / math.sin(2) // returns number 1.099750170294617\n *\n * See also:\n *\n * sin, sec, cot\n *\n * @param {number | BigNumber | Complex | Unit} x Function input\n * @return {number | BigNumber | Complex} Cosecant of x\n */\n return typed(name, {\n number: cscNumber,\n Complex: x => x.csc(),\n BigNumber: x => new _BigNumber(1).div(x.sin())\n }, trigUnit);\n});", "import { factory } from '../../utils/factory.js';\nimport { cschNumber } from '../../plain/number/index.js';\nvar name = 'csch';\nvar dependencies = ['typed', 'BigNumber'];\nexport var createCsch = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber: _BigNumber\n } = _ref;\n /**\n * Calculate the hyperbolic cosecant of a value,\n * defined as `csch(x) = 1 / sinh(x)`.\n *\n * To avoid confusion with the matrix hyperbolic cosecant, this function\n * does not apply to matrices.\n *\n * Syntax:\n *\n * math.csch(x)\n *\n * Examples:\n *\n * // csch(x) = 1/ sinh(x)\n * math.csch(0.5) // returns 1.9190347513349437\n * 1 / math.sinh(0.5) // returns 1.9190347513349437\n *\n * See also:\n *\n * sinh, sech, coth\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} Hyperbolic cosecant of x\n */\n return typed(name, {\n number: cschNumber,\n Complex: x => x.csch(),\n BigNumber: x => new _BigNumber(1).div(x.sinh())\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { secNumber } from '../../plain/number/index.js';\nimport { createTrigUnit } from './trigUnit.js';\nvar name = 'sec';\nvar dependencies = ['typed', 'BigNumber'];\nexport var createSec = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber: _BigNumber\n } = _ref;\n var trigUnit = createTrigUnit({\n typed\n });\n\n /**\n * Calculate the secant of a value, defined as `sec(x) = 1/cos(x)`.\n *\n * To avoid confusion with the matrix secant, this function does not\n * apply to matrices.\n *\n * Syntax:\n *\n * math.sec(x)\n *\n * Examples:\n *\n * math.sec(2) // returns number -2.4029979617223822\n * 1 / math.cos(2) // returns number -2.4029979617223822\n *\n * See also:\n *\n * cos, csc, cot\n *\n * @param {number | BigNumber | Complex | Unit} x Function input\n * @return {number | BigNumber | Complex} Secant of x\n */\n return typed(name, {\n number: secNumber,\n Complex: x => x.sec(),\n BigNumber: x => new _BigNumber(1).div(x.cos())\n }, trigUnit);\n});", "import { factory } from '../../utils/factory.js';\nimport { sechNumber } from '../../plain/number/index.js';\nvar name = 'sech';\nvar dependencies = ['typed', 'BigNumber'];\nexport var createSech = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n BigNumber: _BigNumber\n } = _ref;\n /**\n * Calculate the hyperbolic secant of a value,\n * defined as `sech(x) = 1 / cosh(x)`.\n *\n * To avoid confusion with the matrix hyperbolic secant, this function does\n * not apply to matrices.\n *\n * Syntax:\n *\n * math.sech(x)\n *\n * Examples:\n *\n * // sech(x) = 1/ cosh(x)\n * math.sech(0.5) // returns 0.886818883970074\n * 1 / math.cosh(0.5) // returns 0.886818883970074\n *\n * See also:\n *\n * cosh, csch, coth\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} Hyperbolic secant of x\n */\n return typed(name, {\n number: sechNumber,\n Complex: x => x.sech(),\n BigNumber: x => new _BigNumber(1).div(x.cosh())\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { createTrigUnit } from './trigUnit.js';\nvar name = 'sin';\nvar dependencies = ['typed'];\nexport var createSin = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n var trigUnit = createTrigUnit({\n typed\n });\n\n /**\n * Calculate the sine of a value.\n *\n * To avoid confusion with the matrix sine, this function does not apply\n * to matrices.\n *\n * Syntax:\n *\n * math.sin(x)\n *\n * Examples:\n *\n * math.sin(2) // returns number 0.9092974268256813\n * math.sin(math.pi / 4) // returns number 0.7071067811865475\n * math.sin(math.unit(90, 'deg')) // returns number 1\n * math.sin(math.unit(30, 'deg')) // returns number 0.5\n *\n * const angle = 0.2\n * math.pow(math.sin(angle), 2) + math.pow(math.cos(angle), 2) // returns number ~1\n *\n * See also:\n *\n * cos, tan\n *\n * @param {number | BigNumber | Complex | Unit} x Function input\n * @return {number | BigNumber | Complex} Sine of x\n */\n return typed(name, {\n number: Math.sin,\n 'Complex | BigNumber': x => x.sin()\n }, trigUnit);\n});", "import { factory } from '../../utils/factory.js';\nimport { sinhNumber } from '../../plain/number/index.js';\nvar name = 'sinh';\nvar dependencies = ['typed'];\nexport var createSinh = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Calculate the hyperbolic sine of a value,\n * defined as `sinh(x) = 1/2 * (exp(x) - exp(-x))`.\n *\n * To avoid confusion with the matrix hyperbolic sine, this function does\n * not apply to matrices.\n *\n * Syntax:\n *\n * math.sinh(x)\n *\n * Examples:\n *\n * math.sinh(0.5) // returns number 0.5210953054937474\n *\n * See also:\n *\n * cosh, tanh\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} Hyperbolic sine of x\n */\n return typed(name, {\n number: sinhNumber,\n 'Complex | BigNumber': x => x.sinh()\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { createTrigUnit } from './trigUnit.js';\nvar name = 'tan';\nvar dependencies = ['typed'];\nexport var createTan = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n var trigUnit = createTrigUnit({\n typed\n });\n\n /**\n * Calculate the tangent of a value. `tan(x)` is equal to `sin(x) / cos(x)`.\n *\n * To avoid confusion with the matrix tangent, this function does not apply\n * to matrices.\n *\n * Syntax:\n *\n * math.tan(x)\n *\n * Examples:\n *\n * math.tan(0.5) // returns number 0.5463024898437905\n * math.sin(0.5) / math.cos(0.5) // returns number 0.5463024898437905\n * math.tan(math.pi / 4) // returns number 1\n * math.tan(math.unit(45, 'deg')) // returns number 1\n *\n * See also:\n *\n * atan, sin, cos\n *\n * @param {number | BigNumber | Complex | Unit} x Function input\n * @return {number | BigNumber | Complex} Tangent of x\n */\n return typed(name, {\n number: Math.tan,\n 'Complex | BigNumber': x => x.tan()\n }, trigUnit);\n});", "import { factory } from '../../utils/factory.js';\nimport { tanh as _tanh } from '../../utils/number.js';\nvar name = 'tanh';\nvar dependencies = ['typed'];\nexport var createTanh = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Calculate the hyperbolic tangent of a value,\n * defined as `tanh(x) = (exp(2 * x) - 1) / (exp(2 * x) + 1)`.\n *\n * To avoid confusion with matrix hyperbolic tangent, this function does\n * not apply to matrices.\n *\n * Syntax:\n *\n * math.tanh(x)\n *\n * Examples:\n *\n * // tanh(x) = sinh(x) / cosh(x) = 1 / coth(x)\n * math.tanh(0.5) // returns 0.46211715726000974\n * math.sinh(0.5) / math.cosh(0.5) // returns 0.46211715726000974\n * 1 / math.coth(0.5) // returns 0.46211715726000974\n *\n * See also:\n *\n * sinh, cosh, coth\n *\n * @param {number | BigNumber | Complex} x Function input\n * @return {number | BigNumber | Complex} Hyperbolic tangent of x\n */\n return typed('tanh', {\n number: _tanh,\n 'Complex | BigNumber': x => x.tanh()\n });\n});", "import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setCartesian';\nvar dependencies = ['typed', 'size', 'subset', 'compareNatural', 'Index', 'DenseMatrix'];\nexport var createSetCartesian = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n subset,\n compareNatural,\n Index,\n DenseMatrix\n } = _ref;\n /**\n * Create the cartesian product of two (multi)sets.\n * Multi-dimension arrays will be converted to single-dimension arrays\n * and the values will be sorted in ascending order before the operation.\n *\n * Syntax:\n *\n * math.setCartesian(set1, set2)\n *\n * Examples:\n *\n * math.setCartesian([1, 2], [3, 4]) // returns [[1, 3], [1, 4], [2, 3], [2, 4]]\n * math.setCartesian([4, 3], [2, 1]) // returns [[3, 1], [3, 2], [4, 1], [4, 2]]\n *\n * See also:\n *\n * setUnion, setIntersect, setDifference, setPowerset\n *\n * @param {Array | Matrix} a1 A (multi)set\n * @param {Array | Matrix} a2 A (multi)set\n * @return {Array | Matrix} The cartesian product of two (multi)sets\n */\n return typed(name, {\n 'Array | Matrix, Array | Matrix': function Array__Matrix_Array__Matrix(a1, a2) {\n var result = [];\n if (subset(size(a1), new Index(0)) !== 0 && subset(size(a2), new Index(0)) !== 0) {\n // if any of them is empty, return empty\n var b1 = flatten(Array.isArray(a1) ? a1 : a1.toArray()).sort(compareNatural);\n var b2 = flatten(Array.isArray(a2) ? a2 : a2.toArray()).sort(compareNatural);\n result = [];\n for (var i = 0; i < b1.length; i++) {\n for (var j = 0; j < b2.length; j++) {\n result.push([b1[i], b2[j]]);\n }\n }\n }\n // return an array, if both inputs were arrays\n if (Array.isArray(a1) && Array.isArray(a2)) {\n return result;\n }\n // return a matrix otherwise\n return new DenseMatrix(result);\n }\n });\n});", "import { flatten, generalize, identify } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setDifference';\nvar dependencies = ['typed', 'size', 'subset', 'compareNatural', 'Index', 'DenseMatrix'];\nexport var createSetDifference = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n subset,\n compareNatural,\n Index,\n DenseMatrix\n } = _ref;\n /**\n * Create the difference of two (multi)sets: every element of set1, that is not the element of set2.\n * Multi-dimension arrays will be converted to single-dimension arrays before the operation.\n *\n * Syntax:\n *\n * math.setDifference(set1, set2)\n *\n * Examples:\n *\n * math.setDifference([1, 2, 3, 4], [3, 4, 5, 6]) // returns [1, 2]\n * math.setDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]]) // returns [1, 2]\n *\n * See also:\n *\n * setUnion, setIntersect, setSymDifference\n *\n * @param {Array | Matrix} a1 A (multi)set\n * @param {Array | Matrix} a2 A (multi)set\n * @return {Array | Matrix} The difference of two (multi)sets\n */\n return typed(name, {\n 'Array | Matrix, Array | Matrix': function Array__Matrix_Array__Matrix(a1, a2) {\n var result;\n if (subset(size(a1), new Index(0)) === 0) {\n // empty-anything=empty\n result = [];\n } else if (subset(size(a2), new Index(0)) === 0) {\n // anything-empty=anything\n return flatten(a1.toArray());\n } else {\n var b1 = identify(flatten(Array.isArray(a1) ? a1 : a1.toArray()).sort(compareNatural));\n var b2 = identify(flatten(Array.isArray(a2) ? a2 : a2.toArray()).sort(compareNatural));\n result = [];\n var inb2;\n for (var i = 0; i < b1.length; i++) {\n inb2 = false;\n for (var j = 0; j < b2.length; j++) {\n if (compareNatural(b1[i].value, b2[j].value) === 0 && b1[i].identifier === b2[j].identifier) {\n // the identifier is always a decimal int\n inb2 = true;\n break;\n }\n }\n if (!inb2) {\n result.push(b1[i]);\n }\n }\n }\n // return an array, if both inputs were arrays\n if (Array.isArray(a1) && Array.isArray(a2)) {\n return generalize(result);\n }\n // return a matrix otherwise\n return new DenseMatrix(generalize(result));\n }\n });\n});", "import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setDistinct';\nvar dependencies = ['typed', 'size', 'subset', 'compareNatural', 'Index', 'DenseMatrix'];\nexport var createSetDistinct = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n subset,\n compareNatural,\n Index,\n DenseMatrix\n } = _ref;\n /**\n * Collect the distinct elements of a multiset.\n * A multi-dimension array will be converted to a single-dimension array before the operation.\n *\n * Syntax:\n *\n * math.setDistinct(set)\n *\n * Examples:\n *\n * math.setDistinct([1, 1, 1, 2, 2, 3]) // returns [1, 2, 3]\n *\n * See also:\n *\n * setMultiplicity\n *\n * @param {Array | Matrix} a A multiset\n * @return {Array | Matrix} A set containing the distinc elements of the multiset\n */\n return typed(name, {\n 'Array | Matrix': function Array__Matrix(a) {\n var result;\n if (subset(size(a), new Index(0)) === 0) {\n // if empty, return empty\n result = [];\n } else {\n var b = flatten(Array.isArray(a) ? a : a.toArray()).sort(compareNatural);\n result = [];\n result.push(b[0]);\n for (var i = 1; i < b.length; i++) {\n if (compareNatural(b[i], b[i - 1]) !== 0) {\n result.push(b[i]);\n }\n }\n }\n // return an array, if the input was an array\n if (Array.isArray(a)) {\n return result;\n }\n // return a matrix otherwise\n return new DenseMatrix(result);\n }\n });\n});", "import { flatten, generalize, identify } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setIntersect';\nvar dependencies = ['typed', 'size', 'subset', 'compareNatural', 'Index', 'DenseMatrix'];\nexport var createSetIntersect = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n subset,\n compareNatural,\n Index,\n DenseMatrix\n } = _ref;\n /**\n * Create the intersection of two (multi)sets.\n * Multi-dimension arrays will be converted to single-dimension arrays before the operation.\n *\n * Syntax:\n *\n * math.setIntersect(set1, set2)\n *\n * Examples:\n *\n * math.setIntersect([1, 2, 3, 4], [3, 4, 5, 6]) // returns [3, 4]\n * math.setIntersect([[1, 2], [3, 4]], [[3, 4], [5, 6]]) // returns [3, 4]\n *\n * See also:\n *\n * setUnion, setDifference\n *\n * @param {Array | Matrix} a1 A (multi)set\n * @param {Array | Matrix} a2 A (multi)set\n * @return {Array | Matrix} The intersection of two (multi)sets\n */\n return typed(name, {\n 'Array | Matrix, Array | Matrix': function Array__Matrix_Array__Matrix(a1, a2) {\n var result;\n if (subset(size(a1), new Index(0)) === 0 || subset(size(a2), new Index(0)) === 0) {\n // of any of them is empty, return empty\n result = [];\n } else {\n var b1 = identify(flatten(Array.isArray(a1) ? a1 : a1.toArray()).sort(compareNatural));\n var b2 = identify(flatten(Array.isArray(a2) ? a2 : a2.toArray()).sort(compareNatural));\n result = [];\n for (var i = 0; i < b1.length; i++) {\n for (var j = 0; j < b2.length; j++) {\n if (compareNatural(b1[i].value, b2[j].value) === 0 && b1[i].identifier === b2[j].identifier) {\n // the identifier is always a decimal int\n result.push(b1[i]);\n break;\n }\n }\n }\n }\n // return an array, if both inputs were arrays\n if (Array.isArray(a1) && Array.isArray(a2)) {\n return generalize(result);\n }\n // return a matrix otherwise\n return new DenseMatrix(generalize(result));\n }\n });\n});", "import { flatten, identify } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setIsSubset';\nvar dependencies = ['typed', 'size', 'subset', 'compareNatural', 'Index'];\nexport var createSetIsSubset = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n subset,\n compareNatural,\n Index\n } = _ref;\n /**\n * Check whether a (multi)set is a subset of another (multi)set. (Every element of set1 is the element of set2.)\n * Multi-dimension arrays will be converted to single-dimension arrays before the operation.\n *\n * Syntax:\n *\n * math.setIsSubset(set1, set2)\n *\n * Examples:\n *\n * math.setIsSubset([1, 2], [3, 4, 5, 6]) // returns false\n * math.setIsSubset([3, 4], [3, 4, 5, 6]) // returns true\n *\n * See also:\n *\n * setUnion, setIntersect, setDifference\n *\n * @param {Array | Matrix} a1 A (multi)set\n * @param {Array | Matrix} a2 A (multi)set\n * @return {boolean} Returns true when a1 is a subset of a2, returns false otherwise\n */\n return typed(name, {\n 'Array | Matrix, Array | Matrix': function Array__Matrix_Array__Matrix(a1, a2) {\n if (subset(size(a1), new Index(0)) === 0) {\n // empty is a subset of anything\n return true;\n } else if (subset(size(a2), new Index(0)) === 0) {\n // anything is not a subset of empty\n return false;\n }\n var b1 = identify(flatten(Array.isArray(a1) ? a1 : a1.toArray()).sort(compareNatural));\n var b2 = identify(flatten(Array.isArray(a2) ? a2 : a2.toArray()).sort(compareNatural));\n var inb2;\n for (var i = 0; i < b1.length; i++) {\n inb2 = false;\n for (var j = 0; j < b2.length; j++) {\n if (compareNatural(b1[i].value, b2[j].value) === 0 && b1[i].identifier === b2[j].identifier) {\n // the identifier is always a decimal int\n inb2 = true;\n break;\n }\n }\n if (inb2 === false) {\n return false;\n }\n }\n return true;\n }\n });\n});", "import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setMultiplicity';\nvar dependencies = ['typed', 'size', 'subset', 'compareNatural', 'Index'];\nexport var createSetMultiplicity = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n subset,\n compareNatural,\n Index\n } = _ref;\n /**\n * Count the multiplicity of an element in a multiset.\n * A multi-dimension array will be converted to a single-dimension array before the operation.\n *\n * Syntax:\n *\n * math.setMultiplicity(element, set)\n *\n * Examples:\n *\n * math.setMultiplicity(1, [1, 2, 2, 4]) // returns 1\n * math.setMultiplicity(2, [1, 2, 2, 4]) // returns 2\n *\n * See also:\n *\n * setDistinct, setSize\n *\n * @param {number | BigNumber | Fraction | Complex} e An element in the multiset\n * @param {Array | Matrix} a A multiset\n * @return {number} The number of how many times the multiset contains the element\n */\n return typed(name, {\n 'number | BigNumber | Fraction | Complex, Array | Matrix': function number__BigNumber__Fraction__Complex_Array__Matrix(e, a) {\n if (subset(size(a), new Index(0)) === 0) {\n // if empty, return 0\n return 0;\n }\n var b = flatten(Array.isArray(a) ? a : a.toArray());\n var count = 0;\n for (var i = 0; i < b.length; i++) {\n if (compareNatural(b[i], e) === 0) {\n count++;\n }\n }\n return count;\n }\n });\n});", "import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setPowerset';\nvar dependencies = ['typed', 'size', 'subset', 'compareNatural', 'Index'];\nexport var createSetPowerset = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n subset,\n compareNatural,\n Index\n } = _ref;\n /**\n * Create the powerset of a (multi)set. (The powerset contains very possible subsets of a (multi)set.)\n * A multi-dimension array will be converted to a single-dimension array before the operation.\n *\n * Syntax:\n *\n * math.setPowerset(set)\n *\n * Examples:\n *\n * math.setPowerset([1, 2, 3]) // returns [[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]\n *\n * See also:\n *\n * setCartesian\n *\n * @param {Array | Matrix} a A (multi)set\n * @return {Array} The powerset of the (multi)set\n */\n return typed(name, {\n 'Array | Matrix': function Array__Matrix(a) {\n if (subset(size(a), new Index(0)) === 0) {\n // if empty, return empty\n return [];\n }\n var b = flatten(Array.isArray(a) ? a : a.toArray()).sort(compareNatural);\n var result = [];\n var number = 0;\n while (number.toString(2).length <= b.length) {\n result.push(_subset(b, number.toString(2).split('').reverse()));\n number++;\n }\n // can not return a matrix, because of the different size of the subarrays\n return _sort(result);\n }\n });\n\n // create subset\n function _subset(array, bitarray) {\n var result = [];\n for (var i = 0; i < bitarray.length; i++) {\n if (bitarray[i] === '1') {\n result.push(array[i]);\n }\n }\n return result;\n }\n\n // sort subsests by length\n function _sort(array) {\n var temp = [];\n for (var i = array.length - 1; i > 0; i--) {\n for (var j = 0; j < i; j++) {\n if (array[j].length > array[j + 1].length) {\n temp = array[j];\n array[j] = array[j + 1];\n array[j + 1] = temp;\n }\n }\n }\n return array;\n }\n});", "import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setSize';\nvar dependencies = ['typed', 'compareNatural'];\nexport var createSetSize = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n compareNatural\n } = _ref;\n /**\n * Count the number of elements of a (multi)set. When a second parameter is 'true', count only the unique values.\n * A multi-dimension array will be converted to a single-dimension array before the operation.\n *\n * Syntax:\n *\n * math.setSize(set)\n * math.setSize(set, unique)\n *\n * Examples:\n *\n * math.setSize([1, 2, 2, 4]) // returns 4\n * math.setSize([1, 2, 2, 4], true) // returns 3\n *\n * See also:\n *\n * setUnion, setIntersect, setDifference\n *\n * @param {Array | Matrix} a A multiset\n * @param {boolean} [unique] If true, only the unique values are counted. False by default\n * @return {number} The number of elements of the (multi)set\n */\n return typed(name, {\n 'Array | Matrix': function Array__Matrix(a) {\n return Array.isArray(a) ? flatten(a).length : flatten(a.toArray()).length;\n },\n 'Array | Matrix, boolean': function Array__Matrix_boolean(a, unique) {\n if (unique === false || a.length === 0) {\n return Array.isArray(a) ? flatten(a).length : flatten(a.toArray()).length;\n } else {\n var b = flatten(Array.isArray(a) ? a : a.toArray()).sort(compareNatural);\n var count = 1;\n for (var i = 1; i < b.length; i++) {\n if (compareNatural(b[i], b[i - 1]) !== 0) {\n count++;\n }\n }\n return count;\n }\n }\n });\n});", "import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setSymDifference';\nvar dependencies = ['typed', 'size', 'concat', 'subset', 'setDifference', 'Index'];\nexport var createSetSymDifference = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n concat,\n subset,\n setDifference,\n Index\n } = _ref;\n /**\n * Create the symmetric difference of two (multi)sets.\n * Multi-dimension arrays will be converted to single-dimension arrays before the operation.\n *\n * Syntax:\n *\n * math.setSymDifference(set1, set2)\n *\n * Examples:\n *\n * math.setSymDifference([1, 2, 3, 4], [3, 4, 5, 6]) // returns [1, 2, 5, 6]\n * math.setSymDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]]) // returns [1, 2, 5, 6]\n *\n * See also:\n *\n * setUnion, setIntersect, setDifference\n *\n * @param {Array | Matrix} a1 A (multi)set\n * @param {Array | Matrix} a2 A (multi)set\n * @return {Array | Matrix} The symmetric difference of two (multi)sets\n */\n return typed(name, {\n 'Array | Matrix, Array | Matrix': function Array__Matrix_Array__Matrix(a1, a2) {\n if (subset(size(a1), new Index(0)) === 0) {\n // if any of them is empty, return the other one\n return flatten(a2);\n } else if (subset(size(a2), new Index(0)) === 0) {\n return flatten(a1);\n }\n var b1 = flatten(a1);\n var b2 = flatten(a2);\n return concat(setDifference(b1, b2), setDifference(b2, b1));\n }\n });\n});", "import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'setUnion';\nvar dependencies = ['typed', 'size', 'concat', 'subset', 'setIntersect', 'setSymDifference', 'Index'];\nexport var createSetUnion = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n size,\n concat,\n subset,\n setIntersect,\n setSymDifference,\n Index\n } = _ref;\n /**\n * Create the union of two (multi)sets.\n * Multi-dimension arrays will be converted to single-dimension arrays before the operation.\n *\n * Syntax:\n *\n * math.setUnion(set1, set2)\n *\n * Examples:\n *\n * math.setUnion([1, 2, 3, 4], [3, 4, 5, 6]) // returns [1, 2, 3, 4, 5, 6]\n * math.setUnion([[1, 2], [3, 4]], [[3, 4], [5, 6]]) // returns [1, 2, 3, 4, 5, 6]\n *\n * See also:\n *\n * setIntersect, setDifference\n *\n * @param {Array | Matrix} a1 A (multi)set\n * @param {Array | Matrix} a2 A (multi)set\n * @return {Array | Matrix} The union of two (multi)sets\n */\n return typed(name, {\n 'Array | Matrix, Array | Matrix': function Array__Matrix_Array__Matrix(a1, a2) {\n if (subset(size(a1), new Index(0)) === 0) {\n // if any of them is empty, return the other one\n return flatten(a2);\n } else if (subset(size(a2), new Index(0)) === 0) {\n return flatten(a1);\n }\n var b1 = flatten(a1);\n var b2 = flatten(a2);\n return concat(setSymDifference(b1, b2), setIntersect(b1, b2));\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { createMatAlgo01xDSid } from '../../type/matrix/utils/matAlgo01xDSid.js';\nimport { createMatAlgo04xSidSid } from '../../type/matrix/utils/matAlgo04xSidSid.js';\nimport { createMatAlgo10xSids } from '../../type/matrix/utils/matAlgo10xSids.js';\nimport { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';\nvar name = 'add';\nvar dependencies = ['typed', 'matrix', 'addScalar', 'equalScalar', 'DenseMatrix', 'SparseMatrix', 'concat'];\nexport var createAdd = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n addScalar,\n equalScalar,\n DenseMatrix,\n SparseMatrix,\n concat\n } = _ref;\n var matAlgo01xDSid = createMatAlgo01xDSid({\n typed\n });\n var matAlgo04xSidSid = createMatAlgo04xSidSid({\n typed,\n equalScalar\n });\n var matAlgo10xSids = createMatAlgo10xSids({\n typed,\n DenseMatrix\n });\n var matrixAlgorithmSuite = createMatrixAlgorithmSuite({\n typed,\n matrix,\n concat\n });\n /**\n * Add two or more values, `x + y`.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.add(x, y)\n * math.add(x, y, z, ...)\n *\n * Examples:\n *\n * math.add(2, 3) // returns number 5\n * math.add(2, 3, 4) // returns number 9\n *\n * const a = math.complex(2, 3)\n * const b = math.complex(-4, 1)\n * math.add(a, b) // returns Complex -2 + 4i\n *\n * math.add([1, 2, 3], 4) // returns Array [5, 6, 7]\n *\n * const c = math.unit('5 cm')\n * const d = math.unit('2.1 mm')\n * math.add(c, d) // returns Unit 52.1 mm\n *\n * math.add(\"2.3\", \"4\") // returns number 6.3\n *\n * See also:\n *\n * subtract, sum\n *\n * @param {number | BigNumber | bigint | Fraction | Complex | Unit | Array | Matrix} x First value to add\n * @param {number | BigNumber | bigint | Fraction | Complex | Unit | Array | Matrix} y Second value to add\n * @return {number | BigNumber | bigint | Fraction | Complex | Unit | Array | Matrix} Sum of `x` and `y`\n */\n return typed(name, {\n 'any, any': addScalar,\n 'any, any, ...any': typed.referToSelf(self => (x, y, rest) => {\n var result = self(x, y);\n for (var i = 0; i < rest.length; i++) {\n result = self(result, rest[i]);\n }\n return result;\n })\n }, matrixAlgorithmSuite({\n elop: addScalar,\n DS: matAlgo01xDSid,\n SS: matAlgo04xSidSid,\n Ss: matAlgo10xSids\n }));\n});", "import { factory } from '../../utils/factory.js';\nimport { flatten } from '../../utils/array.js';\nimport { isComplex } from '../../utils/is.js';\nvar name = 'hypot';\nvar dependencies = ['typed', 'abs', 'addScalar', 'divideScalar', 'multiplyScalar', 'sqrt', 'smaller', 'isPositive'];\nexport var createHypot = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n abs,\n addScalar,\n divideScalar,\n multiplyScalar,\n sqrt,\n smaller,\n isPositive\n } = _ref;\n /**\n * Calculate the hypotenuse of a list with values. The hypotenuse is defined as:\n *\n * hypot(a, b, c, ...) = sqrt(a^2 + b^2 + c^2 + ...)\n *\n * For matrix input, the hypotenuse is calculated for all values in the matrix.\n *\n * Syntax:\n *\n * math.hypot(a, b, ...)\n * math.hypot([a, b, c, ...])\n *\n * Examples:\n *\n * math.hypot(3, 4) // 5\n * math.hypot(3, 4, 5) // 7.0710678118654755\n * math.hypot([3, 4, 5]) // 7.0710678118654755\n * math.hypot(-2) // 2\n *\n * See also:\n *\n * abs, norm\n *\n * @param {... number | BigNumber | Array | Matrix} args A list with numeric values or an Array or Matrix.\n * Matrix and Array input is flattened and returns a\n * single number for the whole matrix.\n * @return {number | BigNumber} Returns the hypothenusa of the input values.\n */\n return typed(name, {\n '... number | BigNumber': _hypot,\n Array: _hypot,\n Matrix: M => _hypot(flatten(M.toArray()))\n });\n\n /**\n * Calculate the hypotenuse for an Array with values\n * @param {Array.} args\n * @return {number | BigNumber} Returns the result\n * @private\n */\n function _hypot(args) {\n // code based on `hypot` from es6-shim:\n // https://github.com/paulmillr/es6-shim/blob/master/es6-shim.js#L1619-L1633\n var result = 0;\n var largest = 0;\n for (var i = 0; i < args.length; i++) {\n if (isComplex(args[i])) {\n throw new TypeError('Unexpected type of argument to hypot');\n }\n var value = abs(args[i]);\n if (smaller(largest, value)) {\n result = multiplyScalar(result, multiplyScalar(divideScalar(largest, value), divideScalar(largest, value)));\n result = addScalar(result, 1);\n largest = value;\n } else {\n result = addScalar(result, isPositive(value) ? multiplyScalar(divideScalar(value, largest), divideScalar(value, largest)) : value);\n }\n }\n return multiplyScalar(largest, sqrt(result));\n }\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'norm';\nvar dependencies = ['typed', 'abs', 'add', 'pow', 'conj', 'sqrt', 'multiply', 'equalScalar', 'larger', 'smaller', 'matrix', 'ctranspose', 'eigs'];\nexport var createNorm = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n abs,\n add,\n pow,\n conj,\n sqrt,\n multiply,\n equalScalar,\n larger,\n smaller,\n matrix,\n ctranspose,\n eigs\n } = _ref;\n /**\n * Calculate the norm of a number, vector or matrix.\n *\n * The second parameter p is optional. If not provided, it defaults to 2.\n *\n * Syntax:\n *\n * math.norm(x)\n * math.norm(x, p)\n *\n * Examples:\n *\n * math.abs(-3.5) // returns 3.5\n * math.norm(-3.5) // returns 3.5\n *\n * math.norm(math.complex(3, -4)) // returns 5\n *\n * math.norm([1, 2, -3], Infinity) // returns 3\n * math.norm([1, 2, -3], -Infinity) // returns 1\n *\n * math.norm([3, 4], 2) // returns 5\n *\n * math.norm([[1, 2], [3, 4]], 1) // returns 6\n * math.norm([[1, 2], [3, 4]], 'inf') // returns 7\n * math.norm([[1, 2], [3, 4]], 'fro') // returns 5.477225575051661\n *\n * See also:\n *\n * abs, hypot\n *\n * @param {number | BigNumber | Complex | Array | Matrix} x\n * Value for which to calculate the norm\n * @param {number | BigNumber | string} [p=2]\n * Vector space.\n * Supported numbers include Infinity and -Infinity.\n * Supported strings are: 'inf', '-inf', and 'fro' (The Frobenius norm)\n * @return {number | BigNumber} the p-norm\n */\n return typed(name, {\n number: Math.abs,\n Complex: function Complex(x) {\n return x.abs();\n },\n BigNumber: function BigNumber(x) {\n // norm(x) = abs(x)\n return x.abs();\n },\n boolean: function boolean(x) {\n // norm(x) = abs(x)\n return Math.abs(x);\n },\n Array: function Array(x) {\n return _norm(matrix(x), 2);\n },\n Matrix: function Matrix(x) {\n return _norm(x, 2);\n },\n 'Array, number | BigNumber | string': function Array_number__BigNumber__string(x, p) {\n return _norm(matrix(x), p);\n },\n 'Matrix, number | BigNumber | string': function Matrix_number__BigNumber__string(x, p) {\n return _norm(x, p);\n }\n });\n\n /**\n * Calculate the plus infinity norm for a vector\n * @param {Matrix} x\n * @returns {number} Returns the norm\n * @private\n */\n function _vectorNormPlusInfinity(x) {\n // norm(x, Infinity) = max(abs(x))\n var pinf = 0;\n // skip zeros since abs(0) === 0\n x.forEach(function (value) {\n var v = abs(value);\n if (larger(v, pinf)) {\n pinf = v;\n }\n }, true);\n return pinf;\n }\n\n /**\n * Calculate the minus infinity norm for a vector\n * @param {Matrix} x\n * @returns {number} Returns the norm\n * @private\n */\n function _vectorNormMinusInfinity(x) {\n // norm(x, -Infinity) = min(abs(x))\n var ninf;\n // skip zeros since abs(0) === 0\n x.forEach(function (value) {\n var v = abs(value);\n if (!ninf || smaller(v, ninf)) {\n ninf = v;\n }\n }, true);\n return ninf || 0;\n }\n\n /**\n * Calculate the norm for a vector\n * @param {Matrix} x\n * @param {number | string} p\n * @returns {number} Returns the norm\n * @private\n */\n function _vectorNorm(x, p) {\n // check p\n if (p === Number.POSITIVE_INFINITY || p === 'inf') {\n return _vectorNormPlusInfinity(x);\n }\n if (p === Number.NEGATIVE_INFINITY || p === '-inf') {\n return _vectorNormMinusInfinity(x);\n }\n if (p === 'fro') {\n return _norm(x, 2);\n }\n if (typeof p === 'number' && !isNaN(p)) {\n // check p != 0\n if (!equalScalar(p, 0)) {\n // norm(x, p) = sum(abs(xi) ^ p) ^ 1/p\n var n = 0;\n // skip zeros since abs(0) === 0\n x.forEach(function (value) {\n n = add(pow(abs(value), p), n);\n }, true);\n return pow(n, 1 / p);\n }\n return Number.POSITIVE_INFINITY;\n }\n // invalid parameter value\n throw new Error('Unsupported parameter value');\n }\n\n /**\n * Calculate the Frobenius norm for a matrix\n * @param {Matrix} x\n * @returns {number} Returns the norm\n * @private\n */\n function _matrixNormFrobenius(x) {\n // norm(x) = sqrt(sum(diag(x'x)))\n var fro = 0;\n x.forEach(function (value, index) {\n fro = add(fro, multiply(value, conj(value)));\n });\n return abs(sqrt(fro));\n }\n\n /**\n * Calculate the norm L1 for a matrix\n * @param {Matrix} x\n * @returns {number} Returns the norm\n * @private\n */\n function _matrixNormOne(x) {\n // norm(x) = the largest column sum\n var c = [];\n // result\n var maxc = 0;\n // skip zeros since abs(0) == 0\n x.forEach(function (value, index) {\n var j = index[1];\n var cj = add(c[j] || 0, abs(value));\n if (larger(cj, maxc)) {\n maxc = cj;\n }\n c[j] = cj;\n }, true);\n return maxc;\n }\n\n /**\n * Calculate the norm L2 for a matrix\n * @param {Matrix} x\n * @returns {number} Returns the norm\n * @private\n */\n function _matrixNormTwo(x) {\n // norm(x) = sqrt( max eigenvalue of A*.A)\n var sizeX = x.size();\n if (sizeX[0] !== sizeX[1]) {\n throw new RangeError('Invalid matrix dimensions');\n }\n var tx = ctranspose(x);\n var squaredX = multiply(tx, x);\n var eigenVals = eigs(squaredX).values.toArray();\n var rho = eigenVals[eigenVals.length - 1];\n return abs(sqrt(rho));\n }\n\n /**\n * Calculate the infinity norm for a matrix\n * @param {Matrix} x\n * @returns {number} Returns the norm\n * @private\n */\n function _matrixNormInfinity(x) {\n // norm(x) = the largest row sum\n var r = [];\n // result\n var maxr = 0;\n // skip zeros since abs(0) == 0\n x.forEach(function (value, index) {\n var i = index[0];\n var ri = add(r[i] || 0, abs(value));\n if (larger(ri, maxr)) {\n maxr = ri;\n }\n r[i] = ri;\n }, true);\n return maxr;\n }\n\n /**\n * Calculate the norm for a 2D Matrix (M*N)\n * @param {Matrix} x\n * @param {number | string} p\n * @returns {number} Returns the norm\n * @private\n */\n function _matrixNorm(x, p) {\n // check p\n if (p === 1) {\n return _matrixNormOne(x);\n }\n if (p === Number.POSITIVE_INFINITY || p === 'inf') {\n return _matrixNormInfinity(x);\n }\n if (p === 'fro') {\n return _matrixNormFrobenius(x);\n }\n if (p === 2) {\n return _matrixNormTwo(x);\n } // invalid parameter value\n\n throw new Error('Unsupported parameter value ' + p);\n }\n\n /**\n * Calculate the norm for an array\n * @param {Matrix} x\n * @param {number | string} p\n * @returns {number} Returns the norm\n * @private\n */\n function _norm(x, p) {\n // size\n var sizeX = x.size();\n\n // check if it is a vector\n if (sizeX.length === 1) {\n return _vectorNorm(x, p);\n }\n // MxN matrix\n if (sizeX.length === 2) {\n if (sizeX[0] && sizeX[1]) {\n return _matrixNorm(x, p);\n } else {\n throw new RangeError('Invalid matrix dimensions');\n }\n }\n }\n});", "import { factory } from '../../utils/factory.js';\nimport { isMatrix } from '../../utils/is.js';\nvar name = 'dot';\nvar dependencies = ['typed', 'addScalar', 'multiplyScalar', 'conj', 'size'];\nexport var createDot = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n addScalar,\n multiplyScalar,\n conj,\n size\n } = _ref;\n /**\n * Calculate the dot product of two vectors. The dot product of\n * `A = [a1, a2, ..., an]` and `B = [b1, b2, ..., bn]` is defined as:\n *\n * dot(A, B) = conj(a1) * b1 + conj(a2) * b2 + ... + conj(an) * bn\n *\n * Syntax:\n *\n * math.dot(x, y)\n *\n * Examples:\n *\n * math.dot([2, 4, 1], [2, 2, 3]) // returns number 15\n * math.multiply([2, 4, 1], [2, 2, 3]) // returns number 15\n *\n * See also:\n *\n * multiply, cross\n *\n * @param {Array | Matrix} x First vector\n * @param {Array | Matrix} y Second vector\n * @return {number} Returns the dot product of `x` and `y`\n */\n return typed(name, {\n 'Array | DenseMatrix, Array | DenseMatrix': _denseDot,\n 'SparseMatrix, SparseMatrix': _sparseDot\n });\n function _validateDim(x, y) {\n var xSize = _size(x);\n var ySize = _size(y);\n var xLen, yLen;\n if (xSize.length === 1) {\n xLen = xSize[0];\n } else if (xSize.length === 2 && xSize[1] === 1) {\n xLen = xSize[0];\n } else {\n throw new RangeError('Expected a column vector, instead got a matrix of size (' + xSize.join(', ') + ')');\n }\n if (ySize.length === 1) {\n yLen = ySize[0];\n } else if (ySize.length === 2 && ySize[1] === 1) {\n yLen = ySize[0];\n } else {\n throw new RangeError('Expected a column vector, instead got a matrix of size (' + ySize.join(', ') + ')');\n }\n if (xLen !== yLen) throw new RangeError('Vectors must have equal length (' + xLen + ' != ' + yLen + ')');\n if (xLen === 0) throw new RangeError('Cannot calculate the dot product of empty vectors');\n return xLen;\n }\n function _denseDot(a, b) {\n var N = _validateDim(a, b);\n var adata = isMatrix(a) ? a._data : a;\n var adt = isMatrix(a) ? a._datatype || a.getDataType() : undefined;\n var bdata = isMatrix(b) ? b._data : b;\n var bdt = isMatrix(b) ? b._datatype || b.getDataType() : undefined;\n\n // are these 2-dimensional column vectors? (as opposed to 1-dimensional vectors)\n var aIsColumn = _size(a).length === 2;\n var bIsColumn = _size(b).length === 2;\n var add = addScalar;\n var mul = multiplyScalar;\n\n // process data types\n if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') {\n var dt = adt;\n // find signatures that matches (dt, dt)\n add = typed.find(addScalar, [dt, dt]);\n mul = typed.find(multiplyScalar, [dt, dt]);\n }\n\n // both vectors 1-dimensional\n if (!aIsColumn && !bIsColumn) {\n var c = mul(conj(adata[0]), bdata[0]);\n for (var i = 1; i < N; i++) {\n c = add(c, mul(conj(adata[i]), bdata[i]));\n }\n return c;\n }\n\n // a is 1-dim, b is column\n if (!aIsColumn && bIsColumn) {\n var _c = mul(conj(adata[0]), bdata[0][0]);\n for (var _i = 1; _i < N; _i++) {\n _c = add(_c, mul(conj(adata[_i]), bdata[_i][0]));\n }\n return _c;\n }\n\n // a is column, b is 1-dim\n if (aIsColumn && !bIsColumn) {\n var _c2 = mul(conj(adata[0][0]), bdata[0]);\n for (var _i2 = 1; _i2 < N; _i2++) {\n _c2 = add(_c2, mul(conj(adata[_i2][0]), bdata[_i2]));\n }\n return _c2;\n }\n\n // both vectors are column\n if (aIsColumn && bIsColumn) {\n var _c3 = mul(conj(adata[0][0]), bdata[0][0]);\n for (var _i3 = 1; _i3 < N; _i3++) {\n _c3 = add(_c3, mul(conj(adata[_i3][0]), bdata[_i3][0]));\n }\n return _c3;\n }\n }\n function _sparseDot(x, y) {\n _validateDim(x, y);\n var xindex = x._index;\n var xvalues = x._values;\n var yindex = y._index;\n var yvalues = y._values;\n\n // TODO optimize add & mul using datatype\n var c = 0;\n var add = addScalar;\n var mul = multiplyScalar;\n var i = 0;\n var j = 0;\n while (i < xindex.length && j < yindex.length) {\n var I = xindex[i];\n var J = yindex[j];\n if (I < J) {\n i++;\n continue;\n }\n if (I > J) {\n j++;\n continue;\n }\n if (I === J) {\n c = add(c, mul(xvalues[i], yvalues[j]));\n i++;\n j++;\n }\n }\n return c;\n }\n\n // TODO remove this once #1771 is fixed\n function _size(x) {\n return isMatrix(x) ? x.size() : size(x);\n }\n});", "import { clone } from '../../utils/object.js';\nimport { format } from '../../utils/string.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'trace';\nvar dependencies = ['typed', 'matrix', 'add'];\nexport var createTrace = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n add\n } = _ref;\n /**\n * Calculate the trace of a matrix: the sum of the elements on the main\n * diagonal of a square matrix.\n *\n * Syntax:\n *\n * math.trace(x)\n *\n * Examples:\n *\n * math.trace([[1, 2], [3, 4]]) // returns 5\n *\n * const A = [\n * [1, 2, 3],\n * [-1, 2, 3],\n * [2, 0, 3]\n * ]\n * math.trace(A) // returns 6\n *\n * See also:\n *\n * diag\n *\n * @param {Array | Matrix} x A matrix\n *\n * @return {number} The trace of `x`\n */\n return typed('trace', {\n Array: function _arrayTrace(x) {\n // use dense matrix implementation\n return _denseTrace(matrix(x));\n },\n SparseMatrix: _sparseTrace,\n DenseMatrix: _denseTrace,\n any: clone\n });\n function _denseTrace(m) {\n // matrix size & data\n var size = m._size;\n var data = m._data;\n\n // process dimensions\n switch (size.length) {\n case 1:\n // vector\n if (size[0] === 1) {\n // return data[0]\n return clone(data[0]);\n }\n throw new RangeError('Matrix must be square (size: ' + format(size) + ')');\n case 2:\n {\n // two dimensional\n var rows = size[0];\n var cols = size[1];\n if (rows === cols) {\n // calulate sum\n var sum = 0;\n // loop diagonal\n for (var i = 0; i < rows; i++) {\n sum = add(sum, data[i][i]);\n }\n // return trace\n return sum;\n } else {\n throw new RangeError('Matrix must be square (size: ' + format(size) + ')');\n }\n }\n default:\n // multi dimensional\n throw new RangeError('Matrix must be two dimensional (size: ' + format(size) + ')');\n }\n }\n function _sparseTrace(m) {\n // matrix arrays\n var values = m._values;\n var index = m._index;\n var ptr = m._ptr;\n var size = m._size;\n // check dimensions\n var rows = size[0];\n var columns = size[1];\n // matrix must be square\n if (rows === columns) {\n // calulate sum\n var sum = 0;\n // check we have data (avoid looping columns)\n if (values.length > 0) {\n // loop columns\n for (var j = 0; j < columns; j++) {\n // k0 <= k < k1 where k0 = _ptr[j] && k1 = _ptr[j+1]\n var k0 = ptr[j];\n var k1 = ptr[j + 1];\n // loop k within [k0, k1[\n for (var k = k0; k < k1; k++) {\n // row index\n var i = index[k];\n // check row\n if (i === j) {\n // accumulate value\n sum = add(sum, values[k]);\n // exit loop\n break;\n }\n if (i > j) {\n // exit loop, no value on the diagonal for column j\n break;\n }\n }\n }\n }\n // return trace\n return sum;\n }\n throw new RangeError('Matrix must be square (size: ' + format(size) + ')');\n }\n});", "import { isBigNumber, isMatrix, isArray } from '../../../utils/is.js';\nimport { factory } from '../../../utils/factory.js';\nvar name = 'index';\nvar dependencies = ['typed', 'Index'];\nexport var createIndex = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Index\n } = _ref;\n /**\n * Create an index. An Index can store ranges having start, step, and end\n * for multiple dimensions.\n * Matrix.get, Matrix.set, and math.subset accept an Index as input.\n *\n * Syntax:\n *\n * math.index(range1, range2, ...)\n *\n * Where each range can be any of:\n *\n * - A number\n * - A string for getting/setting an object property\n * - An instance of `Range`\n * - A one-dimensional Array or a Matrix with numbers or booleans\n *\n * Indexes must be zero-based, integer numbers.\n *\n * Examples:\n *\n * const b = [1, 2, 3, 4, 5]\n * math.subset(b, math.index([1, 2, 3])) // returns [2, 3, 4]\n * math.subset(b, math.index([false, true, true, true, false])) // returns [2, 3, 4]\n *\n * const a = math.matrix([[1, 2], [3, 4]])\n * a.subset(math.index(0, 1)) // returns 2\n * a.subset(math.index(0, [false, true])) // returns 2\n *\n * See also:\n *\n * bignumber, boolean, complex, matrix, number, string, unit\n *\n * @param {...*} ranges Zero or more ranges or numbers.\n * @return {Index} Returns the created index\n */\n return typed(name, {\n '...number | string | BigNumber | Range | Array | Matrix': function number__string__BigNumber__Range__Array__Matrix(args) {\n var ranges = args.map(function (arg) {\n if (isBigNumber(arg)) {\n return arg.toNumber(); // convert BigNumber to Number\n } else if (isArray(arg) || isMatrix(arg)) {\n return arg.map(function (elem) {\n // convert BigNumber to Number\n return isBigNumber(elem) ? elem.toNumber() : elem;\n });\n } else {\n return arg;\n }\n });\n var res = new Index();\n Index.apply(res, ranges);\n return res;\n }\n });\n});", "// Reserved keywords not allowed to use in the parser\nexport var keywords = new Set(['end']);", "import { isNode } from '../../utils/is.js';\nimport { keywords } from '../keywords.js';\nimport { deepStrictEqual } from '../../utils/object.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMap } from '../../utils/map.js';\nvar name = 'Node';\nvar dependencies = ['mathWithTransform'];\nexport var createNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n mathWithTransform\n } = _ref;\n /**\n * Validate the symbol names of a scope.\n * Throws an error when the scope contains an illegal symbol.\n * @param {Object} scope\n */\n function _validateScope(scope) {\n for (var symbol of [...keywords]) {\n if (scope.has(symbol)) {\n throw new Error('Scope contains an illegal symbol, \"' + symbol + '\" is a reserved keyword');\n }\n }\n }\n class Node {\n get type() {\n return 'Node';\n }\n get isNode() {\n return true;\n }\n\n /**\n * Evaluate the node\n * @param {Object} [scope] Scope to read/write variables\n * @return {*} Returns the result\n */\n evaluate(scope) {\n return this.compile().evaluate(scope);\n }\n\n /**\n * Compile the node into an optimized, evauatable JavaScript function\n * @return {{evaluate: function([Object])}} object\n * Returns an object with a function 'evaluate',\n * which can be invoked as expr.evaluate([scope: Object]),\n * where scope is an optional object with\n * variables.\n */\n compile() {\n var expr = this._compile(mathWithTransform, {});\n var args = {};\n var context = null;\n function evaluate(scope) {\n var s = createMap(scope);\n _validateScope(s);\n return expr(s, args, context);\n }\n return {\n evaluate\n };\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n throw new Error('Method _compile must be implemented by type ' + this.type);\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n // must be implemented by each of the Node implementations\n throw new Error('Cannot run forEach on a Node interface');\n }\n\n /**\n * Create a new Node whose children are the results of calling the\n * provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {OperatorNode} Returns a transformed copy of the node\n */\n map(callback) {\n // must be implemented by each of the Node implementations\n throw new Error('Cannot run map on a Node interface');\n }\n\n /**\n * Validate whether an object is a Node, for use with map\n * @param {Node} node\n * @returns {Node} Returns the input if it's a node, else throws an Error\n * @protected\n */\n _ifNode(node) {\n if (!isNode(node)) {\n throw new TypeError('Callback function must return a Node');\n }\n return node;\n }\n\n /**\n * Recursively traverse all nodes in a node tree. Executes given callback for\n * this node and each of its child nodes.\n * @param {function(node: Node, path: string, parent: Node)} callback\n * A callback called for every node in the node tree.\n */\n traverse(callback) {\n // execute callback for itself\n // eslint-disable-next-line\n callback(this, null, null);\n\n // recursively traverse over all children of a node\n function _traverse(node, callback) {\n node.forEach(function (child, path, parent) {\n callback(child, path, parent);\n _traverse(child, callback);\n });\n }\n _traverse(this, callback);\n }\n\n /**\n * Recursively transform a node tree via a transform function.\n *\n * For example, to replace all nodes of type SymbolNode having name 'x' with\n * a ConstantNode with value 2:\n *\n * const res = Node.transform(function (node, path, parent) {\n * if (node && node.isSymbolNode) && (node.name === 'x')) {\n * return new ConstantNode(2)\n * }\n * else {\n * return node\n * }\n * })\n *\n * @param {function(node: Node, path: string, parent: Node) : Node} callback\n * A mapping function accepting a node, and returning\n * a replacement for the node or the original node. The \"signature\"\n * of the callback must be:\n * callback(node: Node, index: string, parent: Node) : Node\n * @return {Node} Returns the original node or its replacement\n */\n transform(callback) {\n function _transform(child, path, parent) {\n var replacement = callback(child, path, parent);\n if (replacement !== child) {\n // stop iterating when the node is replaced\n return replacement;\n }\n return child.map(_transform);\n }\n return _transform(this, null, null);\n }\n\n /**\n * Find any node in the node tree matching given filter function. For\n * example, to find all nodes of type SymbolNode having name 'x':\n *\n * const results = Node.filter(function (node) {\n * return (node && node.isSymbolNode) && (node.name === 'x')\n * })\n *\n * @param {function(node: Node, path: string, parent: Node) : Node} callback\n * A test function returning true when a node matches, and false\n * otherwise. Function signature:\n * callback(node: Node, index: string, parent: Node) : boolean\n * @return {Node[]} nodes\n * An array with nodes matching given filter criteria\n */\n filter(callback) {\n var nodes = [];\n this.traverse(function (node, path, parent) {\n if (callback(node, path, parent)) {\n nodes.push(node);\n }\n });\n return nodes;\n }\n\n /**\n * Create a shallow clone of this node\n * @return {Node}\n */\n clone() {\n // must be implemented by each of the Node implementations\n throw new Error('Cannot clone a Node interface');\n }\n\n /**\n * Create a deep clone of this node\n * @return {Node}\n */\n cloneDeep() {\n return this.map(function (node) {\n return node.cloneDeep();\n });\n }\n\n /**\n * Deep compare this node with another node.\n * @param {Node} other\n * @return {boolean} Returns true when both nodes are of the same type and\n * contain the same values (as do their childs)\n */\n equals(other) {\n return other ? this.type === other.type && deepStrictEqual(this, other) : false;\n }\n\n /**\n * Get string representation. (wrapper function)\n *\n * This function can get an object of the following form:\n * {\n * handler: //This can be a callback function of the form\n * // \"function callback(node, options)\"or\n * // a map that maps function names (used in FunctionNodes)\n * // to callbacks\n * parenthesis: \"keep\" //the parenthesis option (This is optional)\n * }\n *\n * @param {Object} [options]\n * @return {string}\n */\n toString(options) {\n var customString = this._getCustomString(options);\n if (typeof customString !== 'undefined') {\n return customString;\n }\n return this._toString(options);\n }\n\n /**\n * Internal function to generate the string output.\n * This has to be implemented by every Node\n *\n * @throws {Error}\n */\n _toString() {\n // must be implemented by each of the Node implementations\n throw new Error('_toString not implemented for ' + this.type);\n }\n\n /**\n * Get a JSON representation of the node\n * Both .toJSON() and the static .fromJSON(json) should be implemented by all\n * implementations of Node\n * @returns {Object}\n */\n toJSON() {\n throw new Error('Cannot serialize object: toJSON not implemented by ' + this.type);\n }\n\n /**\n * Get HTML representation. (wrapper function)\n *\n * This function can get an object of the following form:\n * {\n * handler: //This can be a callback function of the form\n * // \"function callback(node, options)\" or\n * // a map that maps function names (used in FunctionNodes)\n * // to callbacks\n * parenthesis: \"keep\" //the parenthesis option (This is optional)\n * }\n *\n * @param {Object} [options]\n * @return {string}\n */\n toHTML(options) {\n var customString = this._getCustomString(options);\n if (typeof customString !== 'undefined') {\n return customString;\n }\n return this._toHTML(options);\n }\n\n /**\n * Internal function to generate the HTML output.\n * This has to be implemented by every Node\n *\n * @throws {Error}\n */\n _toHTML() {\n // must be implemented by each of the Node implementations\n throw new Error('_toHTML not implemented for ' + this.type);\n }\n\n /**\n * Get LaTeX representation. (wrapper function)\n *\n * This function can get an object of the following form:\n * {\n * handler: //This can be a callback function of the form\n * // \"function callback(node, options)\"or\n * // a map that maps function names (used in FunctionNodes)\n * // to callbacks\n * parenthesis: \"keep\" //the parenthesis option (This is optional)\n * }\n *\n * @param {Object} [options]\n * @return {string}\n */\n toTex(options) {\n var customString = this._getCustomString(options);\n if (typeof customString !== 'undefined') {\n return customString;\n }\n return this._toTex(options);\n }\n\n /**\n * Internal function to generate the LaTeX output.\n * This has to be implemented by every Node\n *\n * @param {Object} [options]\n * @throws {Error}\n */\n _toTex(options) {\n // must be implemented by each of the Node implementations\n throw new Error('_toTex not implemented for ' + this.type);\n }\n\n /**\n * Helper used by `to...` functions.\n */\n _getCustomString(options) {\n if (options && typeof options === 'object') {\n switch (typeof options.handler) {\n case 'object':\n case 'undefined':\n return;\n case 'function':\n return options.handler(this, options);\n default:\n throw new TypeError('Object or function expected as callback');\n }\n }\n }\n\n /**\n * Get identifier.\n * @return {string}\n */\n getIdentifier() {\n return this.type;\n }\n\n /**\n * Get the content of the current Node.\n * @return {Node} node\n **/\n getContent() {\n return this;\n }\n }\n return Node;\n}, {\n isClass: true,\n isNode: true\n});", "import { IndexError } from '../../../error/IndexError.js';\n\n/**\n * Transform zero-based indices to one-based indices in errors\n * @param {Error} err\n * @returns {Error | IndexError} Returns the transformed error\n */\nexport function errorTransform(err) {\n if (err && err.isIndexError) {\n return new IndexError(err.index + 1, err.min + 1, err.max !== undefined ? err.max + 1 : undefined);\n }\n return err;\n}", "import { errorTransform } from '../../transform/utils/errorTransform.js';\nimport { getSafeProperty } from '../../../utils/customs.js';\nexport function accessFactory(_ref) {\n var {\n subset\n } = _ref;\n /**\n * Retrieve part of an object:\n *\n * - Retrieve a property from an object\n * - Retrieve a part of a string\n * - Retrieve a matrix subset\n *\n * @param {Object | Array | Matrix | string} object\n * @param {Index} index\n * @return {Object | Array | Matrix | string} Returns the subset\n */\n return function access(object, index) {\n try {\n if (Array.isArray(object)) {\n return subset(object, index);\n } else if (object && typeof object.subset === 'function') {\n // Matrix\n return object.subset(index);\n } else if (typeof object === 'string') {\n // TODO: move getStringSubset into a separate util file, use that\n return subset(object, index);\n } else if (typeof object === 'object') {\n if (!index.isObjectProperty()) {\n throw new TypeError('Cannot apply a numeric index as object property');\n }\n return getSafeProperty(object, index.getObjectProperty());\n } else {\n throw new TypeError('Cannot apply index: unsupported type of object');\n }\n } catch (err) {\n throw errorTransform(err);\n }\n };\n}", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isAccessorNode, isArrayNode, isConstantNode, isFunctionNode, isIndexNode, isNode, isObjectNode, isParenthesisNode, isSymbolNode } from '../../utils/is.js';\nimport { getSafeProperty } from '../../utils/customs.js';\nimport { factory } from '../../utils/factory.js';\nimport { accessFactory } from './utils/access.js';\nvar name = 'AccessorNode';\nvar dependencies = ['subset', 'Node'];\nexport var createAccessorNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n subset,\n Node\n } = _ref;\n var access = accessFactory({\n subset\n });\n\n /**\n * Are parenthesis needed?\n * @private\n */\n function needParenthesis(node) {\n // TODO: maybe make a method on the nodes which tells whether they need parenthesis?\n return !(isAccessorNode(node) || isArrayNode(node) || isConstantNode(node) || isFunctionNode(node) || isObjectNode(node) || isParenthesisNode(node) || isSymbolNode(node));\n }\n class AccessorNode extends Node {\n /**\n * @constructor AccessorNode\n * @extends {Node}\n * Access an object property or get a matrix subset\n *\n * @param {Node} object The object from which to retrieve\n * a property or subset.\n * @param {IndexNode} index IndexNode containing ranges\n */\n constructor(object, index) {\n super();\n if (!isNode(object)) {\n throw new TypeError('Node expected for parameter \"object\"');\n }\n if (!isIndexNode(index)) {\n throw new TypeError('IndexNode expected for parameter \"index\"');\n }\n this.object = object;\n this.index = index;\n }\n\n // readonly property name\n get name() {\n if (this.index) {\n return this.index.isObjectProperty() ? this.index.getObjectProperty() : '';\n } else {\n return this.object.name || '';\n }\n }\n get type() {\n return name;\n }\n get isAccessorNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var evalObject = this.object._compile(math, argNames);\n var evalIndex = this.index._compile(math, argNames);\n if (this.index.isObjectProperty()) {\n var prop = this.index.getObjectProperty();\n return function evalAccessorNode(scope, args, context) {\n // get a property from an object evaluated using the scope.\n return getSafeProperty(evalObject(scope, args, context), prop);\n };\n } else {\n return function evalAccessorNode(scope, args, context) {\n var object = evalObject(scope, args, context);\n // we pass just object here instead of context:\n var index = evalIndex(scope, args, object);\n return access(object, index);\n };\n }\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n callback(this.object, 'object', this);\n callback(this.index, 'index', this);\n }\n\n /**\n * Create a new AccessorNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {AccessorNode} Returns a transformed copy of the node\n */\n map(callback) {\n return new AccessorNode(this._ifNode(callback(this.object, 'object', this)), this._ifNode(callback(this.index, 'index', this)));\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {AccessorNode}\n */\n clone() {\n return new AccessorNode(this.object, this.index);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string}\n */\n _toString(options) {\n var object = this.object.toString(options);\n if (needParenthesis(this.object)) {\n object = '(' + object + ')';\n }\n return object + this.index.toString(options);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string}\n */\n _toHTML(options) {\n var object = this.object.toHTML(options);\n if (needParenthesis(this.object)) {\n object = '(' + object + ')';\n }\n return object + this.index.toHTML(options);\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string}\n */\n _toTex(options) {\n var object = this.object.toTex(options);\n if (needParenthesis(this.object)) {\n object = '\\\\left(\\' + object + \\'\\\\right)';\n }\n return object + this.index.toTex(options);\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n object: this.object,\n index: this.index\n };\n }\n\n /**\n * Instantiate an AccessorNode from its JSON representation\n * @param {Object} json\n * An object structured like\n * `{\"mathjs\": \"AccessorNode\", object: ..., index: ...}`,\n * where mathjs is optional\n * @returns {AccessorNode}\n */\n static fromJSON(json) {\n return new AccessorNode(json.object, json.index);\n }\n }\n _defineProperty(AccessorNode, \"name\", name);\n return AccessorNode;\n}, {\n isClass: true,\n isNode: true\n});", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isArrayNode, isNode } from '../../utils/is.js';\nimport { map } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'ArrayNode';\nvar dependencies = ['Node'];\nexport var createArrayNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n class ArrayNode extends Node {\n /**\n * @constructor ArrayNode\n * @extends {Node}\n * Holds an 1-dimensional array with items\n * @param {Node[]} [items] 1 dimensional array with items\n */\n constructor(items) {\n super();\n this.items = items || [];\n\n // validate input\n if (!Array.isArray(this.items) || !this.items.every(isNode)) {\n throw new TypeError('Array containing Nodes expected');\n }\n }\n get type() {\n return name;\n }\n get isArrayNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var evalItems = map(this.items, function (item) {\n return item._compile(math, argNames);\n });\n var asMatrix = math.config.matrix !== 'Array';\n if (asMatrix) {\n var matrix = math.matrix;\n return function evalArrayNode(scope, args, context) {\n return matrix(map(evalItems, function (evalItem) {\n return evalItem(scope, args, context);\n }));\n };\n } else {\n return function evalArrayNode(scope, args, context) {\n return map(evalItems, function (evalItem) {\n return evalItem(scope, args, context);\n });\n };\n }\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n for (var i = 0; i < this.items.length; i++) {\n var node = this.items[i];\n callback(node, 'items[' + i + ']', this);\n }\n }\n\n /**\n * Create a new ArrayNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {ArrayNode} Returns a transformed copy of the node\n */\n map(callback) {\n var items = [];\n for (var i = 0; i < this.items.length; i++) {\n items[i] = this._ifNode(callback(this.items[i], 'items[' + i + ']', this));\n }\n return new ArrayNode(items);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {ArrayNode}\n */\n clone() {\n return new ArrayNode(this.items.slice(0));\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toString(options) {\n var items = this.items.map(function (node) {\n return node.toString(options);\n });\n return '[' + items.join(', ') + ']';\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n items: this.items\n };\n }\n\n /**\n * Instantiate an ArrayNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"ArrayNode\", items: [...]}`,\n * where mathjs is optional\n * @returns {ArrayNode}\n */\n static fromJSON(json) {\n return new ArrayNode(json.items);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toHTML(options) {\n var items = this.items.map(function (node) {\n return node.toHTML(options);\n });\n return '[' + items.join(',') + ']';\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n function itemsToTex(items, nested) {\n var mixedItems = items.some(isArrayNode) && !items.every(isArrayNode);\n var itemsFormRow = nested || mixedItems;\n var itemSep = itemsFormRow ? '&' : '\\\\\\\\';\n var itemsTex = items.map(function (node) {\n if (node.items) {\n return itemsToTex(node.items, !nested);\n } else {\n return node.toTex(options);\n }\n }).join(itemSep);\n return mixedItems || !itemsFormRow || itemsFormRow && !nested ? '\\\\begin{bmatrix}' + itemsTex + '\\\\end{bmatrix}' : itemsTex;\n }\n return itemsToTex(this.items, false);\n }\n }\n _defineProperty(ArrayNode, \"name\", name);\n return ArrayNode;\n}, {\n isClass: true,\n isNode: true\n});", "import { errorTransform } from '../../transform/utils/errorTransform.js';\nimport { setSafeProperty } from '../../../utils/customs.js';\nexport function assignFactory(_ref) {\n var {\n subset,\n matrix\n } = _ref;\n /**\n * Replace part of an object:\n *\n * - Assign a property to an object\n * - Replace a part of a string\n * - Replace a matrix subset\n *\n * @param {Object | Array | Matrix | string} object\n * @param {Index} index\n * @param {*} value\n * @return {Object | Array | Matrix | string} Returns the original object\n * except in case of a string\n */\n // TODO: change assign to return the value instead of the object\n return function assign(object, index, value) {\n try {\n if (Array.isArray(object)) {\n var result = matrix(object).subset(index, value).valueOf();\n\n // shallow copy all (updated) items into the original array\n result.forEach((item, index) => {\n object[index] = item;\n });\n return object;\n } else if (object && typeof object.subset === 'function') {\n // Matrix\n return object.subset(index, value);\n } else if (typeof object === 'string') {\n // TODO: move setStringSubset into a separate util file, use that\n return subset(object, index, value);\n } else if (typeof object === 'object') {\n if (!index.isObjectProperty()) {\n throw TypeError('Cannot apply a numeric index as object property');\n }\n setSafeProperty(object, index.getObjectProperty(), value);\n return object;\n } else {\n throw new TypeError('Cannot apply index: unsupported type of object');\n }\n } catch (err) {\n throw errorTransform(err);\n }\n };\n}", "// list of identifiers of nodes in order of their precedence\n// also contains information about left/right associativity\n// and which other operator the operator is associative with\n// Example:\n// addition is associative with addition and subtraction, because:\n// (a+b)+c=a+(b+c)\n// (a+b)-c=a+(b-c)\n//\n// postfix operators are left associative, prefix operators\n// are right associative\n//\n// It's also possible to set the following properties:\n// latexParens: if set to false, this node doesn't need to be enclosed\n// in parentheses when using LaTeX\n// latexLeftParens: if set to false, this !OperatorNode's!\n// left argument doesn't need to be enclosed\n// in parentheses\n// latexRightParens: the same for the right argument\nimport { hasOwnProperty } from '../utils/object.js';\nimport { isConstantNode, isParenthesisNode, rule2Node } from '../utils/is.js';\nexport var properties = [{\n // assignment\n AssignmentNode: {},\n FunctionAssignmentNode: {}\n}, {\n // conditional expression\n ConditionalNode: {\n latexLeftParens: false,\n latexRightParens: false,\n latexParens: false\n // conditionals don't need parentheses in LaTeX because\n // they are 2 dimensional\n }\n}, {\n // logical or\n 'OperatorNode:or': {\n op: 'or',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // logical xor\n 'OperatorNode:xor': {\n op: 'xor',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // logical and\n 'OperatorNode:and': {\n op: 'and',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // bitwise or\n 'OperatorNode:bitOr': {\n op: '|',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // bitwise xor\n 'OperatorNode:bitXor': {\n op: '^|',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // bitwise and\n 'OperatorNode:bitAnd': {\n op: '&',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // relational operators\n 'OperatorNode:equal': {\n op: '==',\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:unequal': {\n op: '!=',\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:smaller': {\n op: '<',\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:larger': {\n op: '>',\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:smallerEq': {\n op: '<=',\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:largerEq': {\n op: '>=',\n associativity: 'left',\n associativeWith: []\n },\n RelationalNode: {\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // bitshift operators\n 'OperatorNode:leftShift': {\n op: '<<',\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:rightArithShift': {\n op: '>>',\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:rightLogShift': {\n op: '>>>',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // unit conversion\n 'OperatorNode:to': {\n op: 'to',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // range\n RangeNode: {}\n}, {\n // addition, subtraction\n 'OperatorNode:add': {\n op: '+',\n associativity: 'left',\n associativeWith: ['OperatorNode:add', 'OperatorNode:subtract']\n },\n 'OperatorNode:subtract': {\n op: '-',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // multiply, divide, modulus\n 'OperatorNode:multiply': {\n op: '*',\n associativity: 'left',\n associativeWith: ['OperatorNode:multiply', 'OperatorNode:divide', 'Operator:dotMultiply', 'Operator:dotDivide']\n },\n 'OperatorNode:divide': {\n op: '/',\n associativity: 'left',\n associativeWith: [],\n latexLeftParens: false,\n latexRightParens: false,\n latexParens: false\n // fractions don't require parentheses because\n // they're 2 dimensional, so parens aren't needed\n // in LaTeX\n },\n 'OperatorNode:dotMultiply': {\n op: '.*',\n associativity: 'left',\n associativeWith: ['OperatorNode:multiply', 'OperatorNode:divide', 'OperatorNode:dotMultiply', 'OperatorNode:doDivide']\n },\n 'OperatorNode:dotDivide': {\n op: './',\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:mod': {\n op: 'mod',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // Repeat multiplication for implicit multiplication\n 'OperatorNode:multiply': {\n associativity: 'left',\n associativeWith: ['OperatorNode:multiply', 'OperatorNode:divide', 'Operator:dotMultiply', 'Operator:dotDivide']\n }\n}, {\n // unary prefix operators\n 'OperatorNode:unaryPlus': {\n op: '+',\n associativity: 'right'\n },\n 'OperatorNode:unaryMinus': {\n op: '-',\n associativity: 'right'\n },\n 'OperatorNode:bitNot': {\n op: '~',\n associativity: 'right'\n },\n 'OperatorNode:not': {\n op: 'not',\n associativity: 'right'\n }\n}, {\n // exponentiation\n 'OperatorNode:pow': {\n op: '^',\n associativity: 'right',\n associativeWith: [],\n latexRightParens: false\n // the exponent doesn't need parentheses in\n // LaTeX because it's 2 dimensional\n // (it's on top)\n },\n 'OperatorNode:dotPow': {\n op: '.^',\n associativity: 'right',\n associativeWith: []\n }\n}, {\n // factorial\n 'OperatorNode:factorial': {\n op: '!',\n associativity: 'left'\n }\n}, {\n // matrix transpose\n 'OperatorNode:ctranspose': {\n op: \"'\",\n associativity: 'left'\n }\n}];\n\n/**\n * Returns the first non-parenthesis internal node, but only\n * when the 'parenthesis' option is unset or auto.\n * @param {Node} _node\n * @param {string} parenthesis\n * @return {Node}\n */\nfunction unwrapParen(_node, parenthesis) {\n if (!parenthesis || parenthesis !== 'auto') return _node;\n var node = _node;\n while (isParenthesisNode(node)) node = node.content;\n return node;\n}\n\n/**\n * Get the precedence of a Node.\n * Higher number for higher precedence, starting with 0.\n * Returns null if the precedence is undefined.\n *\n * @param {Node} _node\n * @param {string} parenthesis\n * @param {string} implicit\n * @param {Node} parent (for determining context for implicit multiplication)\n * @return {number | null}\n */\nexport function getPrecedence(_node, parenthesis, implicit, parent) {\n var node = _node;\n if (parenthesis !== 'keep') {\n // ParenthesisNodes are only ignored when not in 'keep' mode\n node = _node.getContent();\n }\n var identifier = node.getIdentifier();\n var precedence = null;\n for (var i = 0; i < properties.length; i++) {\n if (identifier in properties[i]) {\n precedence = i;\n break;\n }\n }\n // Bump up precedence of implicit multiplication, except when preceded\n // by a \"Rule 2\" fraction ( [unaryOp]constant / constant )\n if (identifier === 'OperatorNode:multiply' && node.implicit && implicit !== 'show') {\n var leftArg = unwrapParen(node.args[0], parenthesis);\n if (!(isConstantNode(leftArg) && parent && parent.getIdentifier() === 'OperatorNode:divide' && rule2Node(unwrapParen(parent.args[0], parenthesis))) && !(leftArg.getIdentifier() === 'OperatorNode:divide' && rule2Node(unwrapParen(leftArg.args[0], parenthesis)) && isConstantNode(unwrapParen(leftArg.args[1])))) {\n precedence += 1;\n }\n }\n return precedence;\n}\n\n/**\n * Get the associativity of an operator (left or right).\n * Returns a string containing 'left' or 'right' or null if\n * the associativity is not defined.\n *\n * @param {Node} _node\n * @param {string} parenthesis\n * @return {string|null}\n * @throws {Error}\n */\nexport function getAssociativity(_node, parenthesis) {\n var node = _node;\n if (parenthesis !== 'keep') {\n // ParenthesisNodes are only ignored when not in 'keep' mode\n node = _node.getContent();\n }\n var identifier = node.getIdentifier();\n var index = getPrecedence(node, parenthesis);\n if (index === null) {\n // node isn't in the list\n return null;\n }\n var property = properties[index][identifier];\n if (hasOwnProperty(property, 'associativity')) {\n if (property.associativity === 'left') {\n return 'left';\n }\n if (property.associativity === 'right') {\n return 'right';\n }\n // associativity is invalid\n throw Error('\\'' + identifier + '\\' has the invalid associativity \\'' + property.associativity + '\\'.');\n }\n\n // associativity is undefined\n return null;\n}\n\n/**\n * Check if an operator is associative with another operator.\n * Returns either true or false or null if not defined.\n *\n * @param {Node} nodeA\n * @param {Node} nodeB\n * @param {string} parenthesis\n * @return {boolean | null}\n */\nexport function isAssociativeWith(nodeA, nodeB, parenthesis) {\n // ParenthesisNodes are only ignored when not in 'keep' mode\n var a = parenthesis !== 'keep' ? nodeA.getContent() : nodeA;\n var b = parenthesis !== 'keep' ? nodeA.getContent() : nodeB;\n var identifierA = a.getIdentifier();\n var identifierB = b.getIdentifier();\n var index = getPrecedence(a, parenthesis);\n if (index === null) {\n // node isn't in the list\n return null;\n }\n var property = properties[index][identifierA];\n if (hasOwnProperty(property, 'associativeWith') && property.associativeWith instanceof Array) {\n for (var i = 0; i < property.associativeWith.length; i++) {\n if (property.associativeWith[i] === identifierB) {\n return true;\n }\n }\n return false;\n }\n\n // associativeWith is not defined\n return null;\n}\n\n/**\n * Get the operator associated with a function name.\n * Returns a string with the operator symbol, or null if the\n * input is not the name of a function associated with an\n * operator.\n *\n * @param {string} Function name\n * @return {string | null} Associated operator symbol, if any\n */\nexport function getOperator(fn) {\n var identifier = 'OperatorNode:' + fn;\n for (var group of properties) {\n if (identifier in group) {\n return group[identifier].op;\n }\n }\n return null;\n}", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isAccessorNode, isIndexNode, isNode, isSymbolNode } from '../../utils/is.js';\nimport { getSafeProperty, setSafeProperty } from '../../utils/customs.js';\nimport { factory } from '../../utils/factory.js';\nimport { accessFactory } from './utils/access.js';\nimport { assignFactory } from './utils/assign.js';\nimport { getPrecedence } from '../operators.js';\nvar name = 'AssignmentNode';\nvar dependencies = ['subset', '?matrix',\n// FIXME: should not be needed at all, should be handled by subset\n'Node'];\nexport var createAssignmentNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n subset,\n matrix,\n Node\n } = _ref;\n var access = accessFactory({\n subset\n });\n var assign = assignFactory({\n subset,\n matrix\n });\n\n /*\n * Is parenthesis needed?\n * @param {node} node\n * @param {string} [parenthesis='keep']\n * @param {string} implicit\n * @private\n */\n function needParenthesis(node, parenthesis, implicit) {\n if (!parenthesis) {\n parenthesis = 'keep';\n }\n var precedence = getPrecedence(node, parenthesis, implicit);\n var exprPrecedence = getPrecedence(node.value, parenthesis, implicit);\n return parenthesis === 'all' || exprPrecedence !== null && exprPrecedence <= precedence;\n }\n class AssignmentNode extends Node {\n /**\n * @constructor AssignmentNode\n * @extends {Node}\n *\n * Define a symbol, like `a=3.2`, update a property like `a.b=3.2`, or\n * replace a subset of a matrix like `A[2,2]=42`.\n *\n * Syntax:\n *\n * new AssignmentNode(symbol, value)\n * new AssignmentNode(object, index, value)\n *\n * Usage:\n *\n * new AssignmentNode(new SymbolNode('a'), new ConstantNode(2)) // a=2\n * new AssignmentNode(new SymbolNode('a'),\n * new IndexNode('b'),\n * new ConstantNode(2)) // a.b=2\n * new AssignmentNode(new SymbolNode('a'),\n * new IndexNode(1, 2),\n * new ConstantNode(3)) // a[1,2]=3\n *\n * @param {SymbolNode | AccessorNode} object\n * Object on which to assign a value\n * @param {IndexNode} [index=null]\n * Index, property name or matrix index. Optional. If not provided\n * and `object` is a SymbolNode, the property is assigned to the\n * global scope.\n * @param {Node} value\n * The value to be assigned\n */\n constructor(object, index, value) {\n super();\n this.object = object;\n this.index = value ? index : null;\n this.value = value || index;\n\n // validate input\n if (!isSymbolNode(object) && !isAccessorNode(object)) {\n throw new TypeError('SymbolNode or AccessorNode expected as \"object\"');\n }\n if (isSymbolNode(object) && object.name === 'end') {\n throw new Error('Cannot assign to symbol \"end\"');\n }\n if (this.index && !isIndexNode(this.index)) {\n // index is optional\n throw new TypeError('IndexNode expected as \"index\"');\n }\n if (!isNode(this.value)) {\n throw new TypeError('Node expected as \"value\"');\n }\n }\n\n // class name for typing purposes:\n\n // readonly property name\n get name() {\n if (this.index) {\n return this.index.isObjectProperty() ? this.index.getObjectProperty() : '';\n } else {\n return this.object.name || '';\n }\n }\n get type() {\n return name;\n }\n get isAssignmentNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var evalObject = this.object._compile(math, argNames);\n var evalIndex = this.index ? this.index._compile(math, argNames) : null;\n var evalValue = this.value._compile(math, argNames);\n var name = this.object.name;\n if (!this.index) {\n // apply a variable to the scope, for example `a=2`\n if (!isSymbolNode(this.object)) {\n throw new TypeError('SymbolNode expected as object');\n }\n return function evalAssignmentNode(scope, args, context) {\n var value = evalValue(scope, args, context);\n scope.set(name, value);\n return value;\n };\n } else if (this.index.isObjectProperty()) {\n // apply an object property for example `a.b=2`\n var prop = this.index.getObjectProperty();\n return function evalAssignmentNode(scope, args, context) {\n var object = evalObject(scope, args, context);\n var value = evalValue(scope, args, context);\n setSafeProperty(object, prop, value);\n return value;\n };\n } else if (isSymbolNode(this.object)) {\n // update a matrix subset, for example `a[2]=3`\n return function evalAssignmentNode(scope, args, context) {\n var childObject = evalObject(scope, args, context);\n var value = evalValue(scope, args, context);\n // Important: we pass childObject instead of context:\n var index = evalIndex(scope, args, childObject);\n scope.set(name, assign(childObject, index, value));\n return value;\n };\n } else {\n // isAccessorNode(node.object) === true\n // update a matrix subset, for example `a.b[2]=3`\n\n // we will not use the compile function of the AccessorNode, but\n // compile it ourselves here as we need the parent object of the\n // AccessorNode:\n // wee need to apply the updated object to parent object\n var evalParentObject = this.object.object._compile(math, argNames);\n if (this.object.index.isObjectProperty()) {\n var parentProp = this.object.index.getObjectProperty();\n return function evalAssignmentNode(scope, args, context) {\n var parent = evalParentObject(scope, args, context);\n var childObject = getSafeProperty(parent, parentProp);\n // Important: we pass childObject instead of context:\n var index = evalIndex(scope, args, childObject);\n var value = evalValue(scope, args, context);\n setSafeProperty(parent, parentProp, assign(childObject, index, value));\n return value;\n };\n } else {\n // if some parameters use the 'end' parameter, we need to calculate\n // the size\n var evalParentIndex = this.object.index._compile(math, argNames);\n return function evalAssignmentNode(scope, args, context) {\n var parent = evalParentObject(scope, args, context);\n // Important: we pass parent instead of context:\n var parentIndex = evalParentIndex(scope, args, parent);\n var childObject = access(parent, parentIndex);\n // Important: we pass childObject instead of context\n var index = evalIndex(scope, args, childObject);\n var value = evalValue(scope, args, context);\n assign(parent, parentIndex, assign(childObject, index, value));\n return value;\n };\n }\n }\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n callback(this.object, 'object', this);\n if (this.index) {\n callback(this.index, 'index', this);\n }\n callback(this.value, 'value', this);\n }\n\n /**\n * Create a new AssignmentNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {AssignmentNode} Returns a transformed copy of the node\n */\n map(callback) {\n var object = this._ifNode(callback(this.object, 'object', this));\n var index = this.index ? this._ifNode(callback(this.index, 'index', this)) : null;\n var value = this._ifNode(callback(this.value, 'value', this));\n return new AssignmentNode(object, index, value);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {AssignmentNode}\n */\n clone() {\n return new AssignmentNode(this.object, this.index, this.value);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string}\n */\n _toString(options) {\n var object = this.object.toString(options);\n var index = this.index ? this.index.toString(options) : '';\n var value = this.value.toString(options);\n if (needParenthesis(this, options && options.parenthesis, options && options.implicit)) {\n value = '(' + value + ')';\n }\n return object + index + ' = ' + value;\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n object: this.object,\n index: this.index,\n value: this.value\n };\n }\n\n /**\n * Instantiate an AssignmentNode from its JSON representation\n * @param {Object} json\n * An object structured like\n * `{\"mathjs\": \"AssignmentNode\", object: ..., index: ..., value: ...}`,\n * where mathjs is optional\n * @returns {AssignmentNode}\n */\n static fromJSON(json) {\n return new AssignmentNode(json.object, json.index, json.value);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string}\n */\n _toHTML(options) {\n var object = this.object.toHTML(options);\n var index = this.index ? this.index.toHTML(options) : '';\n var value = this.value.toHTML(options);\n if (needParenthesis(this, options && options.parenthesis, options && options.implicit)) {\n value = '(' + value + ')';\n }\n return object + index + '=' + value;\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string}\n */\n _toTex(options) {\n var object = this.object.toTex(options);\n var index = this.index ? this.index.toTex(options) : '';\n var value = this.value.toTex(options);\n if (needParenthesis(this, options && options.parenthesis, options && options.implicit)) {\n value = \"\\\\left(\".concat(value, \"\\\\right)\");\n }\n return object + index + '=' + value;\n }\n }\n _defineProperty(AssignmentNode, \"name\", name);\n return AssignmentNode;\n}, {\n isClass: true,\n isNode: true\n});", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isNode } from '../../utils/is.js';\nimport { forEach, map } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'BlockNode';\nvar dependencies = ['ResultSet', 'Node'];\nexport var createBlockNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n ResultSet,\n Node\n } = _ref;\n class BlockNode extends Node {\n /**\n * @constructor BlockNode\n * @extends {Node}\n * Holds a set with blocks\n * @param {Array.<{node: Node} | {node: Node, visible: boolean}>} blocks\n * An array with blocks, where a block is constructed as an\n * Object with properties block, which is a Node, and visible,\n * which is a boolean. The property visible is optional and\n * is true by default\n */\n constructor(blocks) {\n super();\n // validate input, copy blocks\n if (!Array.isArray(blocks)) throw new Error('Array expected');\n this.blocks = blocks.map(function (block) {\n var node = block && block.node;\n var visible = block && block.visible !== undefined ? block.visible : true;\n if (!isNode(node)) throw new TypeError('Property \"node\" must be a Node');\n if (typeof visible !== 'boolean') {\n throw new TypeError('Property \"visible\" must be a boolean');\n }\n return {\n node,\n visible\n };\n });\n }\n get type() {\n return name;\n }\n get isBlockNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var evalBlocks = map(this.blocks, function (block) {\n return {\n evaluate: block.node._compile(math, argNames),\n visible: block.visible\n };\n });\n return function evalBlockNodes(scope, args, context) {\n var results = [];\n forEach(evalBlocks, function evalBlockNode(block) {\n var result = block.evaluate(scope, args, context);\n if (block.visible) {\n results.push(result);\n }\n });\n return new ResultSet(results);\n };\n }\n\n /**\n * Execute a callback for each of the child blocks of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n for (var i = 0; i < this.blocks.length; i++) {\n callback(this.blocks[i].node, 'blocks[' + i + '].node', this);\n }\n }\n\n /**\n * Create a new BlockNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {BlockNode} Returns a transformed copy of the node\n */\n map(callback) {\n var blocks = [];\n for (var i = 0; i < this.blocks.length; i++) {\n var block = this.blocks[i];\n var node = this._ifNode(callback(block.node, 'blocks[' + i + '].node', this));\n blocks[i] = {\n node,\n visible: block.visible\n };\n }\n return new BlockNode(blocks);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {BlockNode}\n */\n clone() {\n var blocks = this.blocks.map(function (block) {\n return {\n node: block.node,\n visible: block.visible\n };\n });\n return new BlockNode(blocks);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toString(options) {\n return this.blocks.map(function (param) {\n return param.node.toString(options) + (param.visible ? '' : ';');\n }).join('\\n');\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n blocks: this.blocks\n };\n }\n\n /**\n * Instantiate an BlockNode from its JSON representation\n * @param {Object} json\n * An object structured like\n * `{\"mathjs\": \"BlockNode\", blocks: [{node: ..., visible: false}, ...]}`,\n * where mathjs is optional\n * @returns {BlockNode}\n */\n static fromJSON(json) {\n return new BlockNode(json.blocks);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toHTML(options) {\n return this.blocks.map(function (param) {\n return param.node.toHTML(options) + (param.visible ? '' : ';');\n }).join('
    ');\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n return this.blocks.map(function (param) {\n return param.node.toTex(options) + (param.visible ? '' : ';');\n }).join('\\\\;\\\\;\\n');\n }\n }\n _defineProperty(BlockNode, \"name\", name);\n return BlockNode;\n}, {\n isClass: true,\n isNode: true\n});", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isBigNumber, isComplex, isNode, isUnit, typeOf } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nimport { getPrecedence } from '../operators.js';\nvar name = 'ConditionalNode';\nvar dependencies = ['Node'];\nexport var createConditionalNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n /**\n * Test whether a condition is met\n * @param {*} condition\n * @returns {boolean} true if condition is true or non-zero, else false\n */\n function testCondition(condition) {\n if (typeof condition === 'number' || typeof condition === 'boolean' || typeof condition === 'string') {\n return !!condition;\n }\n if (condition) {\n if (isBigNumber(condition)) {\n return !condition.isZero();\n }\n if (isComplex(condition)) {\n return !!(condition.re || condition.im);\n }\n if (isUnit(condition)) {\n return !!condition.value;\n }\n }\n if (condition === null || condition === undefined) {\n return false;\n }\n throw new TypeError('Unsupported type of condition \"' + typeOf(condition) + '\"');\n }\n class ConditionalNode extends Node {\n /**\n * A lazy evaluating conditional operator: 'condition ? trueExpr : falseExpr'\n *\n * @param {Node} condition Condition, must result in a boolean\n * @param {Node} trueExpr Expression evaluated when condition is true\n * @param {Node} falseExpr Expression evaluated when condition is true\n *\n * @constructor ConditionalNode\n * @extends {Node}\n */\n constructor(condition, trueExpr, falseExpr) {\n super();\n if (!isNode(condition)) {\n throw new TypeError('Parameter condition must be a Node');\n }\n if (!isNode(trueExpr)) {\n throw new TypeError('Parameter trueExpr must be a Node');\n }\n if (!isNode(falseExpr)) {\n throw new TypeError('Parameter falseExpr must be a Node');\n }\n this.condition = condition;\n this.trueExpr = trueExpr;\n this.falseExpr = falseExpr;\n }\n get type() {\n return name;\n }\n get isConditionalNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var evalCondition = this.condition._compile(math, argNames);\n var evalTrueExpr = this.trueExpr._compile(math, argNames);\n var evalFalseExpr = this.falseExpr._compile(math, argNames);\n return function evalConditionalNode(scope, args, context) {\n return testCondition(evalCondition(scope, args, context)) ? evalTrueExpr(scope, args, context) : evalFalseExpr(scope, args, context);\n };\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n callback(this.condition, 'condition', this);\n callback(this.trueExpr, 'trueExpr', this);\n callback(this.falseExpr, 'falseExpr', this);\n }\n\n /**\n * Create a new ConditionalNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {ConditionalNode} Returns a transformed copy of the node\n */\n map(callback) {\n return new ConditionalNode(this._ifNode(callback(this.condition, 'condition', this)), this._ifNode(callback(this.trueExpr, 'trueExpr', this)), this._ifNode(callback(this.falseExpr, 'falseExpr', this)));\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {ConditionalNode}\n */\n clone() {\n return new ConditionalNode(this.condition, this.trueExpr, this.falseExpr);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n */\n _toString(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var precedence = getPrecedence(this, parenthesis, options && options.implicit);\n\n // Enclose Arguments in parentheses if they are an OperatorNode\n // or have lower or equal precedence\n // NOTE: enclosing all OperatorNodes in parentheses is a decision\n // purely based on aesthetics and readability\n var condition = this.condition.toString(options);\n var conditionPrecedence = getPrecedence(this.condition, parenthesis, options && options.implicit);\n if (parenthesis === 'all' || this.condition.type === 'OperatorNode' || conditionPrecedence !== null && conditionPrecedence <= precedence) {\n condition = '(' + condition + ')';\n }\n var trueExpr = this.trueExpr.toString(options);\n var truePrecedence = getPrecedence(this.trueExpr, parenthesis, options && options.implicit);\n if (parenthesis === 'all' || this.trueExpr.type === 'OperatorNode' || truePrecedence !== null && truePrecedence <= precedence) {\n trueExpr = '(' + trueExpr + ')';\n }\n var falseExpr = this.falseExpr.toString(options);\n var falsePrecedence = getPrecedence(this.falseExpr, parenthesis, options && options.implicit);\n if (parenthesis === 'all' || this.falseExpr.type === 'OperatorNode' || falsePrecedence !== null && falsePrecedence <= precedence) {\n falseExpr = '(' + falseExpr + ')';\n }\n return condition + ' ? ' + trueExpr + ' : ' + falseExpr;\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n condition: this.condition,\n trueExpr: this.trueExpr,\n falseExpr: this.falseExpr\n };\n }\n\n /**\n * Instantiate an ConditionalNode from its JSON representation\n * @param {Object} json\n * An object structured like\n * ```\n * {\"mathjs\": \"ConditionalNode\",\n * \"condition\": ...,\n * \"trueExpr\": ...,\n * \"falseExpr\": ...}\n * ```\n * where mathjs is optional\n * @returns {ConditionalNode}\n */\n static fromJSON(json) {\n return new ConditionalNode(json.condition, json.trueExpr, json.falseExpr);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n _toHTML(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var precedence = getPrecedence(this, parenthesis, options && options.implicit);\n\n // Enclose Arguments in parentheses if they are an OperatorNode\n // or have lower or equal precedence\n // NOTE: enclosing all OperatorNodes in parentheses is a decision\n // purely based on aesthetics and readability\n var condition = this.condition.toHTML(options);\n var conditionPrecedence = getPrecedence(this.condition, parenthesis, options && options.implicit);\n if (parenthesis === 'all' || this.condition.type === 'OperatorNode' || conditionPrecedence !== null && conditionPrecedence <= precedence) {\n condition = '(' + condition + ')';\n }\n var trueExpr = this.trueExpr.toHTML(options);\n var truePrecedence = getPrecedence(this.trueExpr, parenthesis, options && options.implicit);\n if (parenthesis === 'all' || this.trueExpr.type === 'OperatorNode' || truePrecedence !== null && truePrecedence <= precedence) {\n trueExpr = '(' + trueExpr + ')';\n }\n var falseExpr = this.falseExpr.toHTML(options);\n var falsePrecedence = getPrecedence(this.falseExpr, parenthesis, options && options.implicit);\n if (parenthesis === 'all' || this.falseExpr.type === 'OperatorNode' || falsePrecedence !== null && falsePrecedence <= precedence) {\n falseExpr = '(' + falseExpr + ')';\n }\n return condition + '?' + trueExpr + ':' + falseExpr;\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n return '\\\\begin{cases} {' + this.trueExpr.toTex(options) + '}, &\\\\quad{\\\\text{if }\\\\;' + this.condition.toTex(options) + '}\\\\\\\\{' + this.falseExpr.toTex(options) + '}, &\\\\quad{\\\\text{otherwise}}\\\\end{cases}';\n }\n }\n _defineProperty(ConditionalNode, \"name\", name);\n return ConditionalNode;\n}, {\n isClass: true,\n isNode: true\n});", "/* eslint no-template-curly-in-string: \"off\" */\n\nimport escapeLatexLib from 'escape-latex';\nimport { hasOwnProperty } from './object.js';\nexport var latexSymbols = {\n // GREEK LETTERS\n Alpha: 'A',\n alpha: '\\\\alpha',\n Beta: 'B',\n beta: '\\\\beta',\n Gamma: '\\\\Gamma',\n gamma: '\\\\gamma',\n Delta: '\\\\Delta',\n delta: '\\\\delta',\n Epsilon: 'E',\n epsilon: '\\\\epsilon',\n varepsilon: '\\\\varepsilon',\n Zeta: 'Z',\n zeta: '\\\\zeta',\n Eta: 'H',\n eta: '\\\\eta',\n Theta: '\\\\Theta',\n theta: '\\\\theta',\n vartheta: '\\\\vartheta',\n Iota: 'I',\n iota: '\\\\iota',\n Kappa: 'K',\n kappa: '\\\\kappa',\n varkappa: '\\\\varkappa',\n Lambda: '\\\\Lambda',\n lambda: '\\\\lambda',\n Mu: 'M',\n mu: '\\\\mu',\n Nu: 'N',\n nu: '\\\\nu',\n Xi: '\\\\Xi',\n xi: '\\\\xi',\n Omicron: 'O',\n omicron: 'o',\n Pi: '\\\\Pi',\n pi: '\\\\pi',\n varpi: '\\\\varpi',\n Rho: 'P',\n rho: '\\\\rho',\n varrho: '\\\\varrho',\n Sigma: '\\\\Sigma',\n sigma: '\\\\sigma',\n varsigma: '\\\\varsigma',\n Tau: 'T',\n tau: '\\\\tau',\n Upsilon: '\\\\Upsilon',\n upsilon: '\\\\upsilon',\n Phi: '\\\\Phi',\n phi: '\\\\phi',\n varphi: '\\\\varphi',\n Chi: 'X',\n chi: '\\\\chi',\n Psi: '\\\\Psi',\n psi: '\\\\psi',\n Omega: '\\\\Omega',\n omega: '\\\\omega',\n // logic\n true: '\\\\mathrm{True}',\n false: '\\\\mathrm{False}',\n // other\n i: 'i',\n // TODO use \\i ??\n inf: '\\\\infty',\n Inf: '\\\\infty',\n infinity: '\\\\infty',\n Infinity: '\\\\infty',\n oo: '\\\\infty',\n lim: '\\\\lim',\n undefined: '\\\\mathbf{?}'\n};\nexport var latexOperators = {\n transpose: '^\\\\top',\n ctranspose: '^H',\n factorial: '!',\n pow: '^',\n dotPow: '.^\\\\wedge',\n // TODO find ideal solution\n unaryPlus: '+',\n unaryMinus: '-',\n bitNot: '\\\\~',\n // TODO find ideal solution\n not: '\\\\neg',\n multiply: '\\\\cdot',\n divide: '\\\\frac',\n // TODO how to handle that properly?\n dotMultiply: '.\\\\cdot',\n // TODO find ideal solution\n dotDivide: '.:',\n // TODO find ideal solution\n mod: '\\\\mod',\n add: '+',\n subtract: '-',\n to: '\\\\rightarrow',\n leftShift: '<<',\n rightArithShift: '>>',\n rightLogShift: '>>>',\n equal: '=',\n unequal: '\\\\neq',\n smaller: '<',\n larger: '>',\n smallerEq: '\\\\leq',\n largerEq: '\\\\geq',\n bitAnd: '\\\\&',\n bitXor: '\\\\underline{|}',\n bitOr: '|',\n and: '\\\\wedge',\n xor: '\\\\veebar',\n or: '\\\\vee'\n};\nexport var latexFunctions = {\n // arithmetic\n abs: {\n 1: '\\\\left|${args[0]}\\\\right|'\n },\n add: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.add, \"${args[1]}\\\\right)\")\n },\n cbrt: {\n 1: '\\\\sqrt[3]{${args[0]}}'\n },\n ceil: {\n 1: '\\\\left\\\\lceil${args[0]}\\\\right\\\\rceil'\n },\n cube: {\n 1: '\\\\left(${args[0]}\\\\right)^3'\n },\n divide: {\n 2: '\\\\frac{${args[0]}}{${args[1]}}'\n },\n dotDivide: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.dotDivide, \"${args[1]}\\\\right)\")\n },\n dotMultiply: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.dotMultiply, \"${args[1]}\\\\right)\")\n },\n dotPow: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.dotPow, \"${args[1]}\\\\right)\")\n },\n exp: {\n 1: '\\\\exp\\\\left(${args[0]}\\\\right)'\n },\n expm1: \"\\\\left(e\".concat(latexOperators.pow, \"{${args[0]}}-1\\\\right)\"),\n fix: {\n 1: '\\\\mathrm{${name}}\\\\left(${args[0]}\\\\right)'\n },\n floor: {\n 1: '\\\\left\\\\lfloor${args[0]}\\\\right\\\\rfloor'\n },\n gcd: '\\\\gcd\\\\left(${args}\\\\right)',\n hypot: '\\\\hypot\\\\left(${args}\\\\right)',\n log: {\n 1: '\\\\ln\\\\left(${args[0]}\\\\right)',\n 2: '\\\\log_{${args[1]}}\\\\left(${args[0]}\\\\right)'\n },\n log10: {\n 1: '\\\\log_{10}\\\\left(${args[0]}\\\\right)'\n },\n log1p: {\n 1: '\\\\ln\\\\left(${args[0]}+1\\\\right)',\n 2: '\\\\log_{${args[1]}}\\\\left(${args[0]}+1\\\\right)'\n },\n log2: '\\\\log_{2}\\\\left(${args[0]}\\\\right)',\n mod: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.mod, \"${args[1]}\\\\right)\")\n },\n multiply: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.multiply, \"${args[1]}\\\\right)\")\n },\n norm: {\n 1: '\\\\left\\\\|${args[0]}\\\\right\\\\|',\n 2: undefined // use default template\n },\n nthRoot: {\n 2: '\\\\sqrt[${args[1]}]{${args[0]}}'\n },\n nthRoots: {\n 2: '\\\\{y : $y^{args[1]} = {${args[0]}}\\\\}'\n },\n pow: {\n 2: \"\\\\left(${args[0]}\\\\right)\".concat(latexOperators.pow, \"{${args[1]}}\")\n },\n round: {\n 1: '\\\\left\\\\lfloor${args[0]}\\\\right\\\\rceil',\n 2: undefined // use default template\n },\n sign: {\n 1: '\\\\mathrm{${name}}\\\\left(${args[0]}\\\\right)'\n },\n sqrt: {\n 1: '\\\\sqrt{${args[0]}}'\n },\n square: {\n 1: '\\\\left(${args[0]}\\\\right)^2'\n },\n subtract: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.subtract, \"${args[1]}\\\\right)\")\n },\n unaryMinus: {\n 1: \"\".concat(latexOperators.unaryMinus, \"\\\\left(${args[0]}\\\\right)\")\n },\n unaryPlus: {\n 1: \"\".concat(latexOperators.unaryPlus, \"\\\\left(${args[0]}\\\\right)\")\n },\n // bitwise\n bitAnd: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.bitAnd, \"${args[1]}\\\\right)\")\n },\n bitNot: {\n 1: latexOperators.bitNot + '\\\\left(${args[0]}\\\\right)'\n },\n bitOr: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.bitOr, \"${args[1]}\\\\right)\")\n },\n bitXor: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.bitXor, \"${args[1]}\\\\right)\")\n },\n leftShift: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.leftShift, \"${args[1]}\\\\right)\")\n },\n rightArithShift: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.rightArithShift, \"${args[1]}\\\\right)\")\n },\n rightLogShift: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.rightLogShift, \"${args[1]}\\\\right)\")\n },\n // combinatorics\n bellNumbers: {\n 1: '\\\\mathrm{B}_{${args[0]}}'\n },\n catalan: {\n 1: '\\\\mathrm{C}_{${args[0]}}'\n },\n stirlingS2: {\n 2: '\\\\mathrm{S}\\\\left(${args}\\\\right)'\n },\n // complex\n arg: {\n 1: '\\\\arg\\\\left(${args[0]}\\\\right)'\n },\n conj: {\n 1: '\\\\left(${args[0]}\\\\right)^*'\n },\n im: {\n 1: '\\\\Im\\\\left\\\\lbrace${args[0]}\\\\right\\\\rbrace'\n },\n re: {\n 1: '\\\\Re\\\\left\\\\lbrace${args[0]}\\\\right\\\\rbrace'\n },\n // logical\n and: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.and, \"${args[1]}\\\\right)\")\n },\n not: {\n 1: latexOperators.not + '\\\\left(${args[0]}\\\\right)'\n },\n or: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.or, \"${args[1]}\\\\right)\")\n },\n xor: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.xor, \"${args[1]}\\\\right)\")\n },\n // matrix\n cross: {\n 2: '\\\\left(${args[0]}\\\\right)\\\\times\\\\left(${args[1]}\\\\right)'\n },\n ctranspose: {\n 1: \"\\\\left(${args[0]}\\\\right)\".concat(latexOperators.ctranspose)\n },\n det: {\n 1: '\\\\det\\\\left(${args[0]}\\\\right)'\n },\n dot: {\n 2: '\\\\left(${args[0]}\\\\cdot${args[1]}\\\\right)'\n },\n expm: {\n 1: '\\\\exp\\\\left(${args[0]}\\\\right)'\n },\n inv: {\n 1: '\\\\left(${args[0]}\\\\right)^{-1}'\n },\n pinv: {\n 1: '\\\\left(${args[0]}\\\\right)^{+}'\n },\n sqrtm: {\n 1: \"{${args[0]}}\".concat(latexOperators.pow, \"{\\\\frac{1}{2}}\")\n },\n trace: {\n 1: '\\\\mathrm{tr}\\\\left(${args[0]}\\\\right)'\n },\n transpose: {\n 1: \"\\\\left(${args[0]}\\\\right)\".concat(latexOperators.transpose)\n },\n // probability\n combinations: {\n 2: '\\\\binom{${args[0]}}{${args[1]}}'\n },\n combinationsWithRep: {\n 2: '\\\\left(\\\\!\\\\!{\\\\binom{${args[0]}}{${args[1]}}}\\\\!\\\\!\\\\right)'\n },\n factorial: {\n 1: \"\\\\left(${args[0]}\\\\right)\".concat(latexOperators.factorial)\n },\n gamma: {\n 1: '\\\\Gamma\\\\left(${args[0]}\\\\right)'\n },\n lgamma: {\n 1: '\\\\ln\\\\Gamma\\\\left(${args[0]}\\\\right)'\n },\n // relational\n equal: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.equal, \"${args[1]}\\\\right)\")\n },\n larger: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.larger, \"${args[1]}\\\\right)\")\n },\n largerEq: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.largerEq, \"${args[1]}\\\\right)\")\n },\n smaller: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.smaller, \"${args[1]}\\\\right)\")\n },\n smallerEq: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.smallerEq, \"${args[1]}\\\\right)\")\n },\n unequal: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.unequal, \"${args[1]}\\\\right)\")\n },\n // special\n erf: {\n 1: 'erf\\\\left(${args[0]}\\\\right)'\n },\n // statistics\n max: '\\\\max\\\\left(${args}\\\\right)',\n min: '\\\\min\\\\left(${args}\\\\right)',\n variance: '\\\\mathrm{Var}\\\\left(${args}\\\\right)',\n // trigonometry\n acos: {\n 1: '\\\\cos^{-1}\\\\left(${args[0]}\\\\right)'\n },\n acosh: {\n 1: '\\\\cosh^{-1}\\\\left(${args[0]}\\\\right)'\n },\n acot: {\n 1: '\\\\cot^{-1}\\\\left(${args[0]}\\\\right)'\n },\n acoth: {\n 1: '\\\\coth^{-1}\\\\left(${args[0]}\\\\right)'\n },\n acsc: {\n 1: '\\\\csc^{-1}\\\\left(${args[0]}\\\\right)'\n },\n acsch: {\n 1: '\\\\mathrm{csch}^{-1}\\\\left(${args[0]}\\\\right)'\n },\n asec: {\n 1: '\\\\sec^{-1}\\\\left(${args[0]}\\\\right)'\n },\n asech: {\n 1: '\\\\mathrm{sech}^{-1}\\\\left(${args[0]}\\\\right)'\n },\n asin: {\n 1: '\\\\sin^{-1}\\\\left(${args[0]}\\\\right)'\n },\n asinh: {\n 1: '\\\\sinh^{-1}\\\\left(${args[0]}\\\\right)'\n },\n atan: {\n 1: '\\\\tan^{-1}\\\\left(${args[0]}\\\\right)'\n },\n atan2: {\n 2: '\\\\mathrm{atan2}\\\\left(${args}\\\\right)'\n },\n atanh: {\n 1: '\\\\tanh^{-1}\\\\left(${args[0]}\\\\right)'\n },\n cos: {\n 1: '\\\\cos\\\\left(${args[0]}\\\\right)'\n },\n cosh: {\n 1: '\\\\cosh\\\\left(${args[0]}\\\\right)'\n },\n cot: {\n 1: '\\\\cot\\\\left(${args[0]}\\\\right)'\n },\n coth: {\n 1: '\\\\coth\\\\left(${args[0]}\\\\right)'\n },\n csc: {\n 1: '\\\\csc\\\\left(${args[0]}\\\\right)'\n },\n csch: {\n 1: '\\\\mathrm{csch}\\\\left(${args[0]}\\\\right)'\n },\n sec: {\n 1: '\\\\sec\\\\left(${args[0]}\\\\right)'\n },\n sech: {\n 1: '\\\\mathrm{sech}\\\\left(${args[0]}\\\\right)'\n },\n sin: {\n 1: '\\\\sin\\\\left(${args[0]}\\\\right)'\n },\n sinh: {\n 1: '\\\\sinh\\\\left(${args[0]}\\\\right)'\n },\n tan: {\n 1: '\\\\tan\\\\left(${args[0]}\\\\right)'\n },\n tanh: {\n 1: '\\\\tanh\\\\left(${args[0]}\\\\right)'\n },\n // unit\n to: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.to, \"${args[1]}\\\\right)\")\n },\n // utils\n numeric: function numeric(node, options) {\n // Not sure if this is strictly right but should work correctly for the vast majority of use cases.\n return node.args[0].toTex();\n },\n // type\n number: {\n 0: '0',\n 1: '\\\\left(${args[0]}\\\\right)',\n 2: '\\\\left(\\\\left(${args[0]}\\\\right)${args[1]}\\\\right)'\n },\n string: {\n 0: '\\\\mathtt{\"\"}',\n 1: '\\\\mathrm{string}\\\\left(${args[0]}\\\\right)'\n },\n bignumber: {\n 0: '0',\n 1: '\\\\left(${args[0]}\\\\right)'\n },\n bigint: {\n 0: '0',\n 1: '\\\\left(${args[0]}\\\\right)'\n },\n complex: {\n 0: '0',\n 1: '\\\\left(${args[0]}\\\\right)',\n 2: \"\\\\left(\\\\left(${args[0]}\\\\right)+\".concat(latexSymbols.i, \"\\\\cdot\\\\left(${args[1]}\\\\right)\\\\right)\")\n },\n matrix: {\n 0: '\\\\begin{bmatrix}\\\\end{bmatrix}',\n 1: '\\\\left(${args[0]}\\\\right)',\n 2: '\\\\left(${args[0]}\\\\right)'\n },\n sparse: {\n 0: '\\\\begin{bsparse}\\\\end{bsparse}',\n 1: '\\\\left(${args[0]}\\\\right)'\n },\n unit: {\n 1: '\\\\left(${args[0]}\\\\right)',\n 2: '\\\\left(\\\\left(${args[0]}\\\\right)${args[1]}\\\\right)'\n }\n};\nexport var defaultTemplate = '\\\\mathrm{${name}}\\\\left(${args}\\\\right)';\nvar latexUnits = {\n deg: '^\\\\circ'\n};\nexport function escapeLatex(string) {\n return escapeLatexLib(string, {\n preserveFormatting: true\n });\n}\n\n// @param {string} name\n// @param {boolean} isUnit\nexport function toSymbol(name, isUnit) {\n isUnit = typeof isUnit === 'undefined' ? false : isUnit;\n if (isUnit) {\n if (hasOwnProperty(latexUnits, name)) {\n return latexUnits[name];\n }\n return '\\\\mathrm{' + escapeLatex(name) + '}';\n }\n if (hasOwnProperty(latexSymbols, name)) {\n return latexSymbols[name];\n }\n return escapeLatex(name);\n}", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { format } from '../../utils/string.js';\nimport { typeOf } from '../../utils/is.js';\nimport { escapeLatex } from '../../utils/latex.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'ConstantNode';\nvar dependencies = ['Node'];\nexport var createConstantNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n class ConstantNode extends Node {\n /**\n * A ConstantNode holds a constant value like a number or string.\n *\n * Usage:\n *\n * new ConstantNode(2.3)\n * new ConstantNode('hello')\n *\n * @param {*} value Value can be any type (number, BigNumber, bigint, string, ...)\n * @constructor ConstantNode\n * @extends {Node}\n */\n constructor(value) {\n super();\n this.value = value;\n }\n get type() {\n return name;\n }\n get isConstantNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var value = this.value;\n return function evalConstantNode() {\n return value;\n };\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n // nothing to do, we don't have any children\n }\n\n /**\n * Create a new ConstantNode with children produced by the given callback.\n * Trivial because there are no children.\n * @param {function(child: Node, path: string, parent: Node) : Node} callback\n * @returns {ConstantNode} Returns a clone of the node\n */\n map(callback) {\n return this.clone();\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {ConstantNode}\n */\n clone() {\n return new ConstantNode(this.value);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n */\n _toString(options) {\n return format(this.value, options);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n _toHTML(options) {\n var value = this._toString(options);\n switch (typeOf(this.value)) {\n case 'number':\n case 'bigint':\n case 'BigNumber':\n case 'Fraction':\n return '' + value + '';\n case 'string':\n return '' + value + '';\n case 'boolean':\n return '' + value + '';\n case 'null':\n return '' + value + '';\n case 'undefined':\n return '' + value + '';\n default:\n return '' + value + '';\n }\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n value: this.value\n };\n }\n\n /**\n * Instantiate a ConstantNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"SymbolNode\", value: 2.3}`,\n * where mathjs is optional\n * @returns {ConstantNode}\n */\n static fromJSON(json) {\n return new ConstantNode(json.value);\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n var value = this._toString(options);\n var type = typeOf(this.value);\n switch (type) {\n case 'string':\n return '\\\\mathtt{' + escapeLatex(value) + '}';\n case 'number':\n case 'BigNumber':\n {\n var finite = type === 'BigNumber' ? this.value.isFinite() : isFinite(this.value);\n if (!finite) {\n return this.value.valueOf() < 0 ? '-\\\\infty' : '\\\\infty';\n }\n var index = value.toLowerCase().indexOf('e');\n if (index !== -1) {\n return value.substring(0, index) + '\\\\cdot10^{' + value.substring(index + 1) + '}';\n }\n return value;\n }\n case 'bigint':\n {\n return value.toString();\n }\n case 'Fraction':\n return this.value.toLatex();\n default:\n return value;\n }\n }\n }\n _defineProperty(ConstantNode, \"name\", name);\n return ConstantNode;\n}, {\n isClass: true,\n isNode: true\n});", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isNode } from '../../utils/is.js';\nimport { keywords } from '../keywords.js';\nimport { escape } from '../../utils/string.js';\nimport { forEach, join } from '../../utils/array.js';\nimport { toSymbol } from '../../utils/latex.js';\nimport { getPrecedence } from '../operators.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'FunctionAssignmentNode';\nvar dependencies = ['typed', 'Node'];\nexport var createFunctionAssignmentNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Node\n } = _ref;\n /**\n * Is parenthesis needed?\n * @param {Node} node\n * @param {Object} parenthesis\n * @param {string} implicit\n * @private\n */\n function needParenthesis(node, parenthesis, implicit) {\n var precedence = getPrecedence(node, parenthesis, implicit);\n var exprPrecedence = getPrecedence(node.expr, parenthesis, implicit);\n return parenthesis === 'all' || exprPrecedence !== null && exprPrecedence <= precedence;\n }\n class FunctionAssignmentNode extends Node {\n /**\n * @constructor FunctionAssignmentNode\n * @extends {Node}\n * Function assignment\n *\n * @param {string} name Function name\n * @param {string[] | Array.<{name: string, type: string}>} params\n * Array with function parameter names, or an\n * array with objects containing the name\n * and type of the parameter\n * @param {Node} expr The function expression\n */\n constructor(name, params, expr) {\n super();\n // validate input\n if (typeof name !== 'string') {\n throw new TypeError('String expected for parameter \"name\"');\n }\n if (!Array.isArray(params)) {\n throw new TypeError('Array containing strings or objects expected for parameter \"params\"');\n }\n if (!isNode(expr)) {\n throw new TypeError('Node expected for parameter \"expr\"');\n }\n if (keywords.has(name)) {\n throw new Error('Illegal function name, \"' + name + '\" is a reserved keyword');\n }\n var paramNames = new Set();\n for (var param of params) {\n var _name = typeof param === 'string' ? param : param.name;\n if (paramNames.has(_name)) {\n throw new Error(\"Duplicate parameter name \\\"\".concat(_name, \"\\\"\"));\n } else {\n paramNames.add(_name);\n }\n }\n this.name = name;\n this.params = params.map(function (param) {\n return param && param.name || param;\n });\n this.types = params.map(function (param) {\n return param && param.type || 'any';\n });\n this.expr = expr;\n }\n get type() {\n return name;\n }\n get isFunctionAssignmentNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var childArgNames = Object.create(argNames);\n forEach(this.params, function (param) {\n childArgNames[param] = true;\n });\n\n // compile the function expression with the child args\n var evalExpr = this.expr._compile(math, childArgNames);\n var name = this.name;\n var params = this.params;\n var signature = join(this.types, ',');\n var syntax = name + '(' + join(this.params, ', ') + ')';\n return function evalFunctionAssignmentNode(scope, args, context) {\n var signatures = {};\n signatures[signature] = function () {\n var childArgs = Object.create(args);\n for (var i = 0; i < params.length; i++) {\n childArgs[params[i]] = arguments[i];\n }\n return evalExpr(scope, childArgs, context);\n };\n var fn = typed(name, signatures);\n fn.syntax = syntax;\n scope.set(name, fn);\n return fn;\n };\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n callback(this.expr, 'expr', this);\n }\n\n /**\n * Create a new FunctionAssignmentNode whose children are the results of\n * calling the provided callback function for each child of the original\n * node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {FunctionAssignmentNode} Returns a transformed copy of the node\n */\n map(callback) {\n var expr = this._ifNode(callback(this.expr, 'expr', this));\n return new FunctionAssignmentNode(this.name, this.params.slice(0), expr);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {FunctionAssignmentNode}\n */\n clone() {\n return new FunctionAssignmentNode(this.name, this.params.slice(0), this.expr);\n }\n\n /**\n * get string representation\n * @param {Object} options\n * @return {string} str\n */\n _toString(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var expr = this.expr.toString(options);\n if (needParenthesis(this, parenthesis, options && options.implicit)) {\n expr = '(' + expr + ')';\n }\n return this.name + '(' + this.params.join(', ') + ') = ' + expr;\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n var types = this.types;\n return {\n mathjs: name,\n name: this.name,\n params: this.params.map(function (param, index) {\n return {\n name: param,\n type: types[index]\n };\n }),\n expr: this.expr\n };\n }\n\n /**\n * Instantiate an FunctionAssignmentNode from its JSON representation\n * @param {Object} json\n * An object structured like\n * ```\n * {\"mathjs\": \"FunctionAssignmentNode\",\n * name: ..., params: ..., expr: ...}\n * ```\n * where mathjs is optional\n * @returns {FunctionAssignmentNode}\n */\n static fromJSON(json) {\n return new FunctionAssignmentNode(json.name, json.params, json.expr);\n }\n\n /**\n * get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n _toHTML(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var params = [];\n for (var i = 0; i < this.params.length; i++) {\n params.push('' + escape(this.params[i]) + '');\n }\n var expr = this.expr.toHTML(options);\n if (needParenthesis(this, parenthesis, options && options.implicit)) {\n expr = '(' + expr + ')';\n }\n return '' + escape(this.name) + '' + '(' + params.join(',') + ')' + '=' + expr;\n }\n\n /**\n * get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var expr = this.expr.toTex(options);\n if (needParenthesis(this, parenthesis, options && options.implicit)) {\n expr = \"\\\\left(\".concat(expr, \"\\\\right)\");\n }\n return '\\\\mathrm{' + this.name + '}\\\\left(' + this.params.map(toSymbol).join(',') + '\\\\right)=' + expr;\n }\n }\n _defineProperty(FunctionAssignmentNode, \"name\", name);\n return FunctionAssignmentNode;\n}, {\n isClass: true,\n isNode: true\n});", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { map } from '../../utils/array.js';\nimport { getSafeProperty } from '../../utils/customs.js';\nimport { factory } from '../../utils/factory.js';\nimport { isArray, isConstantNode, isMatrix, isNode, isString, typeOf } from '../../utils/is.js';\nimport { escape } from '../../utils/string.js';\nvar name = 'IndexNode';\nvar dependencies = ['Node', 'size'];\nexport var createIndexNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node,\n size\n } = _ref;\n class IndexNode extends Node {\n /**\n * @constructor IndexNode\n * @extends Node\n *\n * Describes a subset of a matrix or an object property.\n * Cannot be used on its own, needs to be used within an AccessorNode or\n * AssignmentNode.\n *\n * @param {Node[]} dimensions\n * @param {boolean} [dotNotation=false]\n * Optional property describing whether this index was written using dot\n * notation like `a.b`, or using bracket notation like `a[\"b\"]`\n * (which is the default). This property is used for string conversion.\n */\n constructor(dimensions, dotNotation) {\n super();\n this.dimensions = dimensions;\n this.dotNotation = dotNotation || false;\n\n // validate input\n if (!Array.isArray(dimensions) || !dimensions.every(isNode)) {\n throw new TypeError('Array containing Nodes expected for parameter \"dimensions\"');\n }\n if (this.dotNotation && !this.isObjectProperty()) {\n throw new Error('dotNotation only applicable for object properties');\n }\n }\n get type() {\n return name;\n }\n get isIndexNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n // TODO: implement support for bignumber (currently bignumbers are silently\n // reduced to numbers when changing the value to zero-based)\n\n // TODO: Optimization: when the range values are ConstantNodes,\n // we can beforehand resolve the zero-based value\n\n // optimization for a simple object property\n var evalDimensions = map(this.dimensions, function (dimension, i) {\n var needsEnd = dimension.filter(node => node.isSymbolNode && node.name === 'end').length > 0;\n if (needsEnd) {\n // SymbolNode 'end' is used inside the index,\n // like in `A[end]` or `A[end - 2]`\n var childArgNames = Object.create(argNames);\n childArgNames.end = true;\n var _evalDimension = dimension._compile(math, childArgNames);\n return function evalDimension(scope, args, context) {\n if (!isMatrix(context) && !isArray(context) && !isString(context)) {\n throw new TypeError('Cannot resolve \"end\": ' + 'context must be a Matrix, Array, or string but is ' + typeOf(context));\n }\n var s = size(context).valueOf();\n var childArgs = Object.create(args);\n childArgs.end = s[i];\n return _evalDimension(scope, childArgs, context);\n };\n } else {\n // SymbolNode `end` not used\n return dimension._compile(math, argNames);\n }\n });\n var index = getSafeProperty(math, 'index');\n return function evalIndexNode(scope, args, context) {\n var dimensions = map(evalDimensions, function (evalDimension) {\n return evalDimension(scope, args, context);\n });\n return index(...dimensions);\n };\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n for (var i = 0; i < this.dimensions.length; i++) {\n callback(this.dimensions[i], 'dimensions[' + i + ']', this);\n }\n }\n\n /**\n * Create a new IndexNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {IndexNode} Returns a transformed copy of the node\n */\n map(callback) {\n var dimensions = [];\n for (var i = 0; i < this.dimensions.length; i++) {\n dimensions[i] = this._ifNode(callback(this.dimensions[i], 'dimensions[' + i + ']', this));\n }\n return new IndexNode(dimensions, this.dotNotation);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {IndexNode}\n */\n clone() {\n return new IndexNode(this.dimensions.slice(0), this.dotNotation);\n }\n\n /**\n * Test whether this IndexNode contains a single property name\n * @return {boolean}\n */\n isObjectProperty() {\n return this.dimensions.length === 1 && isConstantNode(this.dimensions[0]) && typeof this.dimensions[0].value === 'string';\n }\n\n /**\n * Returns the property name if IndexNode contains a property.\n * If not, returns null.\n * @return {string | null}\n */\n getObjectProperty() {\n return this.isObjectProperty() ? this.dimensions[0].value : null;\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n */\n _toString(options) {\n // format the parameters like \"[1, 0:5]\"\n return this.dotNotation ? '.' + this.getObjectProperty() : '[' + this.dimensions.join(', ') + ']';\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n dimensions: this.dimensions,\n dotNotation: this.dotNotation\n };\n }\n\n /**\n * Instantiate an IndexNode from its JSON representation\n * @param {Object} json\n * An object structured like\n * `{\"mathjs\": \"IndexNode\", dimensions: [...], dotNotation: false}`,\n * where mathjs is optional\n * @returns {IndexNode}\n */\n static fromJSON(json) {\n return new IndexNode(json.dimensions, json.dotNotation);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n _toHTML(options) {\n // format the parameters like \"[1, 0:5]\"\n var dimensions = [];\n for (var i = 0; i < this.dimensions.length; i++) {\n dimensions[i] = this.dimensions[i].toHTML();\n }\n if (this.dotNotation) {\n return '.' + '' + escape(this.getObjectProperty()) + '';\n } else {\n return '[' + dimensions.join(',') + ']';\n }\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n var dimensions = this.dimensions.map(function (range) {\n return range.toTex(options);\n });\n return this.dotNotation ? '.' + this.getObjectProperty() + '' : '_{' + dimensions.join(',') + '}';\n }\n }\n _defineProperty(IndexNode, \"name\", name);\n return IndexNode;\n}, {\n isClass: true,\n isNode: true\n});", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { getSafeProperty } from '../../utils/customs.js';\nimport { factory } from '../../utils/factory.js';\nimport { isNode } from '../../utils/is.js';\nimport { hasOwnProperty } from '../../utils/object.js';\nimport { escape, stringify } from '../../utils/string.js';\nvar name = 'ObjectNode';\nvar dependencies = ['Node'];\nexport var createObjectNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n class ObjectNode extends Node {\n /**\n * @constructor ObjectNode\n * @extends {Node}\n * Holds an object with keys/values\n * @param {Object.} [properties] object with key/value pairs\n */\n constructor(properties) {\n super();\n this.properties = properties || {};\n\n // validate input\n if (properties) {\n if (!(typeof properties === 'object') || !Object.keys(properties).every(function (key) {\n return isNode(properties[key]);\n })) {\n throw new TypeError('Object containing Nodes expected');\n }\n }\n }\n get type() {\n return name;\n }\n get isObjectNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var evalEntries = {};\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n // we stringify/parse the key here to resolve unicode characters,\n // so you cannot create a key like {\"co\\\\u006Estructor\": null}\n var stringifiedKey = stringify(key);\n var parsedKey = JSON.parse(stringifiedKey);\n var prop = getSafeProperty(this.properties, key);\n evalEntries[parsedKey] = prop._compile(math, argNames);\n }\n }\n return function evalObjectNode(scope, args, context) {\n var obj = {};\n for (var _key in evalEntries) {\n if (hasOwnProperty(evalEntries, _key)) {\n obj[_key] = evalEntries[_key](scope, args, context);\n }\n }\n return obj;\n };\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n callback(this.properties[key], 'properties[' + stringify(key) + ']', this);\n }\n }\n }\n\n /**\n * Create a new ObjectNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {ObjectNode} Returns a transformed copy of the node\n */\n map(callback) {\n var properties = {};\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n properties[key] = this._ifNode(callback(this.properties[key], 'properties[' + stringify(key) + ']', this));\n }\n }\n return new ObjectNode(properties);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {ObjectNode}\n */\n clone() {\n var properties = {};\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n properties[key] = this.properties[key];\n }\n }\n return new ObjectNode(properties);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toString(options) {\n var entries = [];\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n entries.push(stringify(key) + ': ' + this.properties[key].toString(options));\n }\n }\n return '{' + entries.join(', ') + '}';\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n properties: this.properties\n };\n }\n\n /**\n * Instantiate an OperatorNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"ObjectNode\", \"properties\": {...}}`,\n * where mathjs is optional\n * @returns {ObjectNode}\n */\n static fromJSON(json) {\n return new ObjectNode(json.properties);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toHTML(options) {\n var entries = [];\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n entries.push('' + escape(key) + '' + '' + ':' + this.properties[key].toHTML(options));\n }\n }\n return '{' + entries.join(',') + '}';\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n var entries = [];\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n entries.push('\\\\mathbf{' + key + ':} & ' + this.properties[key].toTex(options) + '\\\\\\\\');\n }\n }\n var tex = '\\\\left\\\\{\\\\begin{array}{ll}' + entries.join('\\n') + '\\\\end{array}\\\\right\\\\}';\n return tex;\n }\n }\n _defineProperty(ObjectNode, \"name\", name);\n return ObjectNode;\n}, {\n isClass: true,\n isNode: true\n});", "import { ObjectWrappingMap, PartitionedMap } from './map.js';\n\n/**\n * Create a new scope which can access the parent scope,\n * but does not affect it when written. This is suitable for variable definitions\n * within a block node, or function definition.\n *\n * If parent scope has a createSubScope method, it delegates to that. Otherwise,\n * creates an empty map, and copies the parent scope to it, adding in\n * the remaining `args`.\n *\n * @param {Map} parentScope\n * @param {Object} args\n * @returns {PartitionedMap}\n */\nexport function createSubScope(parentScope, args) {\n return new PartitionedMap(parentScope, new ObjectWrappingMap(args), new Set(Object.keys(args)));\n}", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isNode, isConstantNode, isOperatorNode, isParenthesisNode } from '../../utils/is.js';\nimport { map } from '../../utils/array.js';\nimport { createSubScope } from '../../utils/scope.js';\nimport { escape } from '../../utils/string.js';\nimport { getSafeProperty, isSafeMethod } from '../../utils/customs.js';\nimport { getAssociativity, getPrecedence, isAssociativeWith, properties } from '../operators.js';\nimport { latexOperators } from '../../utils/latex.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'OperatorNode';\nvar dependencies = ['Node'];\nexport var createOperatorNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n /**\n * Returns true if the expression starts with a constant, under\n * the current parenthesization:\n * @param {Node} expression\n * @param {string} parenthesis\n * @return {boolean}\n */\n function startsWithConstant(expr, parenthesis) {\n var curNode = expr;\n if (parenthesis === 'auto') {\n while (isParenthesisNode(curNode)) curNode = curNode.content;\n }\n if (isConstantNode(curNode)) return true;\n if (isOperatorNode(curNode)) {\n return startsWithConstant(curNode.args[0], parenthesis);\n }\n return false;\n }\n\n /**\n * Calculate which parentheses are necessary. Gets an OperatorNode\n * (which is the root of the tree) and an Array of Nodes\n * (this.args) and returns an array where 'true' means that an argument\n * has to be enclosed in parentheses whereas 'false' means the opposite.\n *\n * @param {OperatorNode} root\n * @param {string} parenthesis\n * @param {Node[]} args\n * @param {boolean} latex\n * @return {boolean[]}\n * @private\n */\n function calculateNecessaryParentheses(root, parenthesis, implicit, args, latex) {\n // precedence of the root OperatorNode\n var precedence = getPrecedence(root, parenthesis, implicit);\n var associativity = getAssociativity(root, parenthesis);\n if (parenthesis === 'all' || args.length > 2 && root.getIdentifier() !== 'OperatorNode:add' && root.getIdentifier() !== 'OperatorNode:multiply') {\n return args.map(function (arg) {\n switch (arg.getContent().type) {\n // Nodes that don't need extra parentheses\n case 'ArrayNode':\n case 'ConstantNode':\n case 'SymbolNode':\n case 'ParenthesisNode':\n return false;\n default:\n return true;\n }\n });\n }\n var result;\n switch (args.length) {\n case 0:\n result = [];\n break;\n case 1:\n // unary operators\n {\n // precedence of the operand\n var operandPrecedence = getPrecedence(args[0], parenthesis, implicit, root);\n\n // handle special cases for LaTeX, where some of the parentheses aren't needed\n if (latex && operandPrecedence !== null) {\n var operandIdentifier;\n var rootIdentifier;\n if (parenthesis === 'keep') {\n operandIdentifier = args[0].getIdentifier();\n rootIdentifier = root.getIdentifier();\n } else {\n // Ignore Parenthesis Nodes when not in 'keep' mode\n operandIdentifier = args[0].getContent().getIdentifier();\n rootIdentifier = root.getContent().getIdentifier();\n }\n if (properties[precedence][rootIdentifier].latexLeftParens === false) {\n result = [false];\n break;\n }\n if (properties[operandPrecedence][operandIdentifier].latexParens === false) {\n result = [false];\n break;\n }\n }\n if (operandPrecedence === null) {\n // if the operand has no defined precedence, no parens are needed\n result = [false];\n break;\n }\n if (operandPrecedence <= precedence) {\n // if the operands precedence is lower, parens are needed\n result = [true];\n break;\n }\n\n // otherwise, no parens needed\n result = [false];\n }\n break;\n case 2:\n // binary operators\n {\n var lhsParens; // left hand side needs parenthesis?\n // precedence of the left hand side\n var lhsPrecedence = getPrecedence(args[0], parenthesis, implicit, root);\n // is the root node associative with the left hand side\n var assocWithLhs = isAssociativeWith(root, args[0], parenthesis);\n if (lhsPrecedence === null) {\n // if the left hand side has no defined precedence, no parens are needed\n // FunctionNode for example\n lhsParens = false;\n } else if (lhsPrecedence === precedence && associativity === 'right' && !assocWithLhs) {\n // In case of equal precedence, if the root node is left associative\n // parens are **never** necessary for the left hand side.\n // If it is right associative however, parens are necessary\n // if the root node isn't associative with the left hand side\n lhsParens = true;\n } else if (lhsPrecedence < precedence) {\n lhsParens = true;\n } else {\n lhsParens = false;\n }\n var rhsParens; // right hand side needs parenthesis?\n // precedence of the right hand side\n var rhsPrecedence = getPrecedence(args[1], parenthesis, implicit, root);\n // is the root node associative with the right hand side?\n var assocWithRhs = isAssociativeWith(root, args[1], parenthesis);\n if (rhsPrecedence === null) {\n // if the right hand side has no defined precedence, no parens are needed\n // FunctionNode for example\n rhsParens = false;\n } else if (rhsPrecedence === precedence && associativity === 'left' && !assocWithRhs) {\n // In case of equal precedence, if the root node is right associative\n // parens are **never** necessary for the right hand side.\n // If it is left associative however, parens are necessary\n // if the root node isn't associative with the right hand side\n rhsParens = true;\n } else if (rhsPrecedence < precedence) {\n rhsParens = true;\n } else {\n rhsParens = false;\n }\n\n // handle special cases for LaTeX, where some of the parentheses aren't needed\n if (latex) {\n var _rootIdentifier;\n var lhsIdentifier;\n var rhsIdentifier;\n if (parenthesis === 'keep') {\n _rootIdentifier = root.getIdentifier();\n lhsIdentifier = root.args[0].getIdentifier();\n rhsIdentifier = root.args[1].getIdentifier();\n } else {\n // Ignore ParenthesisNodes when not in 'keep' mode\n _rootIdentifier = root.getContent().getIdentifier();\n lhsIdentifier = root.args[0].getContent().getIdentifier();\n rhsIdentifier = root.args[1].getContent().getIdentifier();\n }\n if (lhsPrecedence !== null) {\n if (properties[precedence][_rootIdentifier].latexLeftParens === false) {\n lhsParens = false;\n }\n if (properties[lhsPrecedence][lhsIdentifier].latexParens === false) {\n lhsParens = false;\n }\n }\n if (rhsPrecedence !== null) {\n if (properties[precedence][_rootIdentifier].latexRightParens === false) {\n rhsParens = false;\n }\n if (properties[rhsPrecedence][rhsIdentifier].latexParens === false) {\n rhsParens = false;\n }\n }\n }\n result = [lhsParens, rhsParens];\n }\n break;\n default:\n if (root.getIdentifier() === 'OperatorNode:add' || root.getIdentifier() === 'OperatorNode:multiply') {\n result = args.map(function (arg) {\n var argPrecedence = getPrecedence(arg, parenthesis, implicit, root);\n var assocWithArg = isAssociativeWith(root, arg, parenthesis);\n var argAssociativity = getAssociativity(arg, parenthesis);\n if (argPrecedence === null) {\n // if the argument has no defined precedence, no parens are needed\n return false;\n } else if (precedence === argPrecedence && associativity === argAssociativity && !assocWithArg) {\n return true;\n } else if (argPrecedence < precedence) {\n return true;\n }\n return false;\n });\n }\n break;\n }\n\n // Handles an edge case of parentheses with implicit multiplication\n // of ConstantNode.\n // In that case, parenthesize ConstantNodes that follow an unparenthesized\n // expression, even though they normally wouldn't be printed.\n if (args.length >= 2 && root.getIdentifier() === 'OperatorNode:multiply' && root.implicit && parenthesis !== 'all' && implicit === 'hide') {\n for (var i = 1; i < result.length; ++i) {\n if (startsWithConstant(args[i], parenthesis) && !result[i - 1] && (parenthesis !== 'keep' || !isParenthesisNode(args[i - 1]))) {\n result[i] = true;\n }\n }\n }\n return result;\n }\n class OperatorNode extends Node {\n /**\n * @constructor OperatorNode\n * @extends {Node}\n * An operator with two arguments, like 2+3\n *\n * @param {string} op Operator name, for example '+'\n * @param {string} fn Function name, for example 'add'\n * @param {Node[]} args Operator arguments\n * @param {boolean} [implicit] Is this an implicit multiplication?\n * @param {boolean} [isPercentage] Is this an percentage Operation?\n */\n constructor(op, fn, args, implicit, isPercentage) {\n super();\n // validate input\n if (typeof op !== 'string') {\n throw new TypeError('string expected for parameter \"op\"');\n }\n if (typeof fn !== 'string') {\n throw new TypeError('string expected for parameter \"fn\"');\n }\n if (!Array.isArray(args) || !args.every(isNode)) {\n throw new TypeError('Array containing Nodes expected for parameter \"args\"');\n }\n this.implicit = implicit === true;\n this.isPercentage = isPercentage === true;\n this.op = op;\n this.fn = fn;\n this.args = args || [];\n }\n get type() {\n return name;\n }\n get isOperatorNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n // validate fn\n if (typeof this.fn !== 'string' || !isSafeMethod(math, this.fn)) {\n if (!math[this.fn]) {\n throw new Error('Function ' + this.fn + ' missing in provided namespace \"math\"');\n } else {\n throw new Error('No access to function \"' + this.fn + '\"');\n }\n }\n var fn = getSafeProperty(math, this.fn);\n var evalArgs = map(this.args, function (arg) {\n return arg._compile(math, argNames);\n });\n if (typeof fn === 'function' && fn.rawArgs === true) {\n // pass unevaluated parameters (nodes) to the function\n // \"raw\" evaluation\n var rawArgs = this.args;\n return function evalOperatorNode(scope, args, context) {\n return fn(rawArgs, math, createSubScope(scope, args));\n };\n } else if (evalArgs.length === 1) {\n var evalArg0 = evalArgs[0];\n return function evalOperatorNode(scope, args, context) {\n return fn(evalArg0(scope, args, context));\n };\n } else if (evalArgs.length === 2) {\n var _evalArg = evalArgs[0];\n var evalArg1 = evalArgs[1];\n return function evalOperatorNode(scope, args, context) {\n return fn(_evalArg(scope, args, context), evalArg1(scope, args, context));\n };\n } else {\n return function evalOperatorNode(scope, args, context) {\n return fn.apply(null, map(evalArgs, function (evalArg) {\n return evalArg(scope, args, context);\n }));\n };\n }\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n for (var i = 0; i < this.args.length; i++) {\n callback(this.args[i], 'args[' + i + ']', this);\n }\n }\n\n /**\n * Create a new OperatorNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {OperatorNode} Returns a transformed copy of the node\n */\n map(callback) {\n var args = [];\n for (var i = 0; i < this.args.length; i++) {\n args[i] = this._ifNode(callback(this.args[i], 'args[' + i + ']', this));\n }\n return new OperatorNode(this.op, this.fn, args, this.implicit, this.isPercentage);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {OperatorNode}\n */\n clone() {\n return new OperatorNode(this.op, this.fn, this.args.slice(0), this.implicit, this.isPercentage);\n }\n\n /**\n * Check whether this is an unary OperatorNode:\n * has exactly one argument, like `-a`.\n * @return {boolean}\n * Returns true when an unary operator node, false otherwise.\n */\n isUnary() {\n return this.args.length === 1;\n }\n\n /**\n * Check whether this is a binary OperatorNode:\n * has exactly two arguments, like `a + b`.\n * @return {boolean}\n * Returns true when a binary operator node, false otherwise.\n */\n isBinary() {\n return this.args.length === 2;\n }\n\n /**\n * Get string representation.\n * @param {Object} options\n * @return {string} str\n */\n _toString(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var implicit = options && options.implicit ? options.implicit : 'hide';\n var args = this.args;\n var parens = calculateNecessaryParentheses(this, parenthesis, implicit, args, false);\n if (args.length === 1) {\n // unary operators\n var assoc = getAssociativity(this, parenthesis);\n var operand = args[0].toString(options);\n if (parens[0]) {\n operand = '(' + operand + ')';\n }\n\n // for example for \"not\", we want a space between operand and argument\n var opIsNamed = /[a-zA-Z]+/.test(this.op);\n if (assoc === 'right') {\n // prefix operator\n return this.op + (opIsNamed ? ' ' : '') + operand;\n } else if (assoc === 'left') {\n // postfix\n return operand + (opIsNamed ? ' ' : '') + this.op;\n }\n\n // fall back to postfix\n return operand + this.op;\n } else if (args.length === 2) {\n var lhs = args[0].toString(options); // left hand side\n var rhs = args[1].toString(options); // right hand side\n if (parens[0]) {\n // left hand side in parenthesis?\n lhs = '(' + lhs + ')';\n }\n if (parens[1]) {\n // right hand side in parenthesis?\n rhs = '(' + rhs + ')';\n }\n if (this.implicit && this.getIdentifier() === 'OperatorNode:multiply' && implicit === 'hide') {\n return lhs + ' ' + rhs;\n }\n return lhs + ' ' + this.op + ' ' + rhs;\n } else if (args.length > 2 && (this.getIdentifier() === 'OperatorNode:add' || this.getIdentifier() === 'OperatorNode:multiply')) {\n var stringifiedArgs = args.map(function (arg, index) {\n arg = arg.toString(options);\n if (parens[index]) {\n // put in parenthesis?\n arg = '(' + arg + ')';\n }\n return arg;\n });\n if (this.implicit && this.getIdentifier() === 'OperatorNode:multiply' && implicit === 'hide') {\n return stringifiedArgs.join(' ');\n }\n return stringifiedArgs.join(' ' + this.op + ' ');\n } else {\n // fallback to formatting as a function call\n return this.fn + '(' + this.args.join(', ') + ')';\n }\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n op: this.op,\n fn: this.fn,\n args: this.args,\n implicit: this.implicit,\n isPercentage: this.isPercentage\n };\n }\n\n /**\n * Instantiate an OperatorNode from its JSON representation\n * @param {Object} json\n * An object structured like\n * ```\n * {\"mathjs\": \"OperatorNode\",\n * \"op\": \"+\", \"fn\": \"add\", \"args\": [...],\n * \"implicit\": false,\n * \"isPercentage\":false}\n * ```\n * where mathjs is optional\n * @returns {OperatorNode}\n */\n static fromJSON(json) {\n return new OperatorNode(json.op, json.fn, json.args, json.implicit, json.isPercentage);\n }\n\n /**\n * Get HTML representation.\n * @param {Object} options\n * @return {string} str\n */\n _toHTML(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var implicit = options && options.implicit ? options.implicit : 'hide';\n var args = this.args;\n var parens = calculateNecessaryParentheses(this, parenthesis, implicit, args, false);\n if (args.length === 1) {\n // unary operators\n var assoc = getAssociativity(this, parenthesis);\n var operand = args[0].toHTML(options);\n if (parens[0]) {\n operand = '(' + operand + ')';\n }\n if (assoc === 'right') {\n // prefix operator\n return '' + escape(this.op) + '' + operand;\n } else {\n // postfix when assoc === 'left' or undefined\n return operand + '' + escape(this.op) + '';\n }\n } else if (args.length === 2) {\n // binary operatoes\n var lhs = args[0].toHTML(options); // left hand side\n var rhs = args[1].toHTML(options); // right hand side\n if (parens[0]) {\n // left hand side in parenthesis?\n lhs = '(' + lhs + ')';\n }\n if (parens[1]) {\n // right hand side in parenthesis?\n rhs = '(' + rhs + ')';\n }\n if (this.implicit && this.getIdentifier() === 'OperatorNode:multiply' && implicit === 'hide') {\n return lhs + '' + rhs;\n }\n return lhs + '' + escape(this.op) + '' + rhs;\n } else {\n var stringifiedArgs = args.map(function (arg, index) {\n arg = arg.toHTML(options);\n if (parens[index]) {\n // put in parenthesis?\n arg = '(' + arg + ')';\n }\n return arg;\n });\n if (args.length > 2 && (this.getIdentifier() === 'OperatorNode:add' || this.getIdentifier() === 'OperatorNode:multiply')) {\n if (this.implicit && this.getIdentifier() === 'OperatorNode:multiply' && implicit === 'hide') {\n return stringifiedArgs.join('');\n }\n return stringifiedArgs.join('' + escape(this.op) + '');\n } else {\n // fallback to formatting as a function call\n return '' + escape(this.fn) + '' + '(' + stringifiedArgs.join(',') + ')';\n }\n }\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var implicit = options && options.implicit ? options.implicit : 'hide';\n var args = this.args;\n var parens = calculateNecessaryParentheses(this, parenthesis, implicit, args, true);\n var op = latexOperators[this.fn];\n op = typeof op === 'undefined' ? this.op : op; // fall back to using this.op\n\n if (args.length === 1) {\n // unary operators\n var assoc = getAssociativity(this, parenthesis);\n var operand = args[0].toTex(options);\n if (parens[0]) {\n operand = \"\\\\left(\".concat(operand, \"\\\\right)\");\n }\n if (assoc === 'right') {\n // prefix operator\n return op + operand;\n } else if (assoc === 'left') {\n // postfix operator\n return operand + op;\n }\n\n // fall back to postfix\n return operand + op;\n } else if (args.length === 2) {\n // binary operators\n var lhs = args[0]; // left hand side\n var lhsTex = lhs.toTex(options);\n if (parens[0]) {\n lhsTex = \"\\\\left(\".concat(lhsTex, \"\\\\right)\");\n }\n var rhs = args[1]; // right hand side\n var rhsTex = rhs.toTex(options);\n if (parens[1]) {\n rhsTex = \"\\\\left(\".concat(rhsTex, \"\\\\right)\");\n }\n\n // handle some exceptions (due to the way LaTeX works)\n var lhsIdentifier;\n if (parenthesis === 'keep') {\n lhsIdentifier = lhs.getIdentifier();\n } else {\n // Ignore ParenthesisNodes if in 'keep' mode\n lhsIdentifier = lhs.getContent().getIdentifier();\n }\n switch (this.getIdentifier()) {\n case 'OperatorNode:divide':\n // op contains '\\\\frac' at this point\n return op + '{' + lhsTex + '}' + '{' + rhsTex + '}';\n case 'OperatorNode:pow':\n lhsTex = '{' + lhsTex + '}';\n rhsTex = '{' + rhsTex + '}';\n switch (lhsIdentifier) {\n case 'ConditionalNode': //\n case 'OperatorNode:divide':\n lhsTex = \"\\\\left(\".concat(lhsTex, \"\\\\right)\");\n }\n break;\n case 'OperatorNode:multiply':\n if (this.implicit && implicit === 'hide') {\n return lhsTex + '~' + rhsTex;\n }\n }\n return lhsTex + op + rhsTex;\n } else if (args.length > 2 && (this.getIdentifier() === 'OperatorNode:add' || this.getIdentifier() === 'OperatorNode:multiply')) {\n var texifiedArgs = args.map(function (arg, index) {\n arg = arg.toTex(options);\n if (parens[index]) {\n arg = \"\\\\left(\".concat(arg, \"\\\\right)\");\n }\n return arg;\n });\n if (this.getIdentifier() === 'OperatorNode:multiply' && this.implicit && implicit === 'hide') {\n return texifiedArgs.join('~');\n }\n return texifiedArgs.join(op);\n } else {\n // fall back to formatting as a function call\n // as this is a fallback, it doesn't use\n // fancy function names\n return '\\\\mathrm{' + this.fn + '}\\\\left(' + args.map(function (arg) {\n return arg.toTex(options);\n }).join(',') + '\\\\right)';\n }\n }\n\n /**\n * Get identifier.\n * @return {string}\n */\n getIdentifier() {\n return this.type + ':' + this.fn;\n }\n }\n _defineProperty(OperatorNode, \"name\", name);\n return OperatorNode;\n}, {\n isClass: true,\n isNode: true\n});", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isNode } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'ParenthesisNode';\nvar dependencies = ['Node'];\nexport var createParenthesisNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n class ParenthesisNode extends Node {\n /**\n * @constructor ParenthesisNode\n * @extends {Node}\n * A parenthesis node describes manual parenthesis from the user input\n * @param {Node} content\n * @extends {Node}\n */\n constructor(content) {\n super();\n // validate input\n if (!isNode(content)) {\n throw new TypeError('Node expected for parameter \"content\"');\n }\n this.content = content;\n }\n get type() {\n return name;\n }\n get isParenthesisNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n return this.content._compile(math, argNames);\n }\n\n /**\n * Get the content of the current Node.\n * @return {Node} content\n * @override\n **/\n getContent() {\n return this.content.getContent();\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n callback(this.content, 'content', this);\n }\n\n /**\n * Create a new ParenthesisNode whose child is the result of calling\n * the provided callback function on the child of this node.\n * @param {function(child: Node, path: string, parent: Node) : Node} callback\n * @returns {ParenthesisNode} Returns a clone of the node\n */\n map(callback) {\n var content = callback(this.content, 'content', this);\n return new ParenthesisNode(content);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {ParenthesisNode}\n */\n clone() {\n return new ParenthesisNode(this.content);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toString(options) {\n if (!options || options && !options.parenthesis || options && options.parenthesis === 'keep') {\n return '(' + this.content.toString(options) + ')';\n }\n return this.content.toString(options);\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n content: this.content\n };\n }\n\n /**\n * Instantiate an ParenthesisNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"ParenthesisNode\", \"content\": ...}`,\n * where mathjs is optional\n * @returns {ParenthesisNode}\n */\n static fromJSON(json) {\n return new ParenthesisNode(json.content);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toHTML(options) {\n if (!options || options && !options.parenthesis || options && options.parenthesis === 'keep') {\n return '(' + this.content.toHTML(options) + ')';\n }\n return this.content.toHTML(options);\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toTex(options) {\n if (!options || options && !options.parenthesis || options && options.parenthesis === 'keep') {\n return \"\\\\left(\".concat(this.content.toTex(options), \"\\\\right)\");\n }\n return this.content.toTex(options);\n }\n }\n _defineProperty(ParenthesisNode, \"name\", name);\n return ParenthesisNode;\n}, {\n isClass: true,\n isNode: true\n});", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isNode, isSymbolNode } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nimport { getPrecedence } from '../operators.js';\nvar name = 'RangeNode';\nvar dependencies = ['Node'];\nexport var createRangeNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n /**\n * Calculate the necessary parentheses\n * @param {Node} node\n * @param {string} parenthesis\n * @param {string} implicit\n * @return {Object} parentheses\n * @private\n */\n function calculateNecessaryParentheses(node, parenthesis, implicit) {\n var precedence = getPrecedence(node, parenthesis, implicit);\n var parens = {};\n var startPrecedence = getPrecedence(node.start, parenthesis, implicit);\n parens.start = startPrecedence !== null && startPrecedence <= precedence || parenthesis === 'all';\n if (node.step) {\n var stepPrecedence = getPrecedence(node.step, parenthesis, implicit);\n parens.step = stepPrecedence !== null && stepPrecedence <= precedence || parenthesis === 'all';\n }\n var endPrecedence = getPrecedence(node.end, parenthesis, implicit);\n parens.end = endPrecedence !== null && endPrecedence <= precedence || parenthesis === 'all';\n return parens;\n }\n class RangeNode extends Node {\n /**\n * @constructor RangeNode\n * @extends {Node}\n * create a range\n * @param {Node} start included lower-bound\n * @param {Node} end included upper-bound\n * @param {Node} [step] optional step\n */\n constructor(start, end, step) {\n super();\n // validate inputs\n if (!isNode(start)) throw new TypeError('Node expected');\n if (!isNode(end)) throw new TypeError('Node expected');\n if (step && !isNode(step)) throw new TypeError('Node expected');\n if (arguments.length > 3) throw new Error('Too many arguments');\n this.start = start; // included lower-bound\n this.end = end; // included upper-bound\n this.step = step || null; // optional step\n }\n get type() {\n return name;\n }\n get isRangeNode() {\n return true;\n }\n\n /**\n * Check whether the RangeNode needs the `end` symbol to be defined.\n * This end is the size of the Matrix in current dimension.\n * @return {boolean}\n */\n needsEnd() {\n // find all `end` symbols in this RangeNode\n var endSymbols = this.filter(function (node) {\n return isSymbolNode(node) && node.name === 'end';\n });\n return endSymbols.length > 0;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var range = math.range;\n var evalStart = this.start._compile(math, argNames);\n var evalEnd = this.end._compile(math, argNames);\n if (this.step) {\n var evalStep = this.step._compile(math, argNames);\n return function evalRangeNode(scope, args, context) {\n return range(evalStart(scope, args, context), evalEnd(scope, args, context), evalStep(scope, args, context));\n };\n } else {\n return function evalRangeNode(scope, args, context) {\n return range(evalStart(scope, args, context), evalEnd(scope, args, context));\n };\n }\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n callback(this.start, 'start', this);\n callback(this.end, 'end', this);\n if (this.step) {\n callback(this.step, 'step', this);\n }\n }\n\n /**\n * Create a new RangeNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {RangeNode} Returns a transformed copy of the node\n */\n map(callback) {\n return new RangeNode(this._ifNode(callback(this.start, 'start', this)), this._ifNode(callback(this.end, 'end', this)), this.step && this._ifNode(callback(this.step, 'step', this)));\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {RangeNode}\n */\n clone() {\n return new RangeNode(this.start, this.end, this.step && this.step);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n */\n _toString(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var parens = calculateNecessaryParentheses(this, parenthesis, options && options.implicit);\n\n // format string as start:step:stop\n var str;\n var start = this.start.toString(options);\n if (parens.start) {\n start = '(' + start + ')';\n }\n str = start;\n if (this.step) {\n var step = this.step.toString(options);\n if (parens.step) {\n step = '(' + step + ')';\n }\n str += ':' + step;\n }\n var end = this.end.toString(options);\n if (parens.end) {\n end = '(' + end + ')';\n }\n str += ':' + end;\n return str;\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n start: this.start,\n end: this.end,\n step: this.step\n };\n }\n\n /**\n * Instantiate an RangeNode from its JSON representation\n * @param {Object} json\n * An object structured like\n * `{\"mathjs\": \"RangeNode\", \"start\": ..., \"end\": ..., \"step\": ...}`,\n * where mathjs is optional\n * @returns {RangeNode}\n */\n static fromJSON(json) {\n return new RangeNode(json.start, json.end, json.step);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n _toHTML(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var parens = calculateNecessaryParentheses(this, parenthesis, options && options.implicit);\n\n // format string as start:step:stop\n var str;\n var start = this.start.toHTML(options);\n if (parens.start) {\n start = '(' + start + ')';\n }\n str = start;\n if (this.step) {\n var step = this.step.toHTML(options);\n if (parens.step) {\n step = '(' + step + ')';\n }\n str += ':' + step;\n }\n var end = this.end.toHTML(options);\n if (parens.end) {\n end = '(' + end + ')';\n }\n str += ':' + end;\n return str;\n }\n\n /**\n * Get LaTeX representation\n * @params {Object} options\n * @return {string} str\n */\n _toTex(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var parens = calculateNecessaryParentheses(this, parenthesis, options && options.implicit);\n var str = this.start.toTex(options);\n if (parens.start) {\n str = \"\\\\left(\".concat(str, \"\\\\right)\");\n }\n if (this.step) {\n var step = this.step.toTex(options);\n if (parens.step) {\n step = \"\\\\left(\".concat(step, \"\\\\right)\");\n }\n str += ':' + step;\n }\n var end = this.end.toTex(options);\n if (parens.end) {\n end = \"\\\\left(\".concat(end, \"\\\\right)\");\n }\n str += ':' + end;\n return str;\n }\n }\n _defineProperty(RangeNode, \"name\", name);\n return RangeNode;\n}, {\n isClass: true,\n isNode: true\n});", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { getPrecedence } from '../operators.js';\nimport { escape } from '../../utils/string.js';\nimport { getSafeProperty } from '../../utils/customs.js';\nimport { latexOperators } from '../../utils/latex.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'RelationalNode';\nvar dependencies = ['Node'];\nexport var createRelationalNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n var operatorMap = {\n equal: '==',\n unequal: '!=',\n smaller: '<',\n larger: '>',\n smallerEq: '<=',\n largerEq: '>='\n };\n class RelationalNode extends Node {\n /**\n * A node representing a chained conditional expression, such as 'x > y > z'\n *\n * @param {String[]} conditionals\n * An array of conditional operators used to compare the parameters\n * @param {Node[]} params\n * The parameters that will be compared\n *\n * @constructor RelationalNode\n * @extends {Node}\n */\n constructor(conditionals, params) {\n super();\n if (!Array.isArray(conditionals)) {\n throw new TypeError('Parameter conditionals must be an array');\n }\n if (!Array.isArray(params)) {\n throw new TypeError('Parameter params must be an array');\n }\n if (conditionals.length !== params.length - 1) {\n throw new TypeError('Parameter params must contain exactly one more element ' + 'than parameter conditionals');\n }\n this.conditionals = conditionals;\n this.params = params;\n }\n get type() {\n return name;\n }\n get isRelationalNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var self = this;\n var compiled = this.params.map(p => p._compile(math, argNames));\n return function evalRelationalNode(scope, args, context) {\n var evalLhs;\n var evalRhs = compiled[0](scope, args, context);\n for (var i = 0; i < self.conditionals.length; i++) {\n evalLhs = evalRhs;\n evalRhs = compiled[i + 1](scope, args, context);\n var condFn = getSafeProperty(math, self.conditionals[i]);\n if (!condFn(evalLhs, evalRhs)) {\n return false;\n }\n }\n return true;\n };\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n this.params.forEach((n, i) => callback(n, 'params[' + i + ']', this), this);\n }\n\n /**\n * Create a new RelationalNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {RelationalNode} Returns a transformed copy of the node\n */\n map(callback) {\n return new RelationalNode(this.conditionals.slice(), this.params.map((n, i) => this._ifNode(callback(n, 'params[' + i + ']', this)), this));\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {RelationalNode}\n */\n clone() {\n return new RelationalNode(this.conditionals, this.params);\n }\n\n /**\n * Get string representation.\n * @param {Object} options\n * @return {string} str\n */\n _toString(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var precedence = getPrecedence(this, parenthesis, options && options.implicit);\n var paramStrings = this.params.map(function (p, index) {\n var paramPrecedence = getPrecedence(p, parenthesis, options && options.implicit);\n return parenthesis === 'all' || paramPrecedence !== null && paramPrecedence <= precedence ? '(' + p.toString(options) + ')' : p.toString(options);\n });\n var ret = paramStrings[0];\n for (var i = 0; i < this.conditionals.length; i++) {\n ret += ' ' + operatorMap[this.conditionals[i]];\n ret += ' ' + paramStrings[i + 1];\n }\n return ret;\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n conditionals: this.conditionals,\n params: this.params\n };\n }\n\n /**\n * Instantiate a RelationalNode from its JSON representation\n * @param {Object} json\n * An object structured like\n * `{\"mathjs\": \"RelationalNode\", \"conditionals\": ..., \"params\": ...}`,\n * where mathjs is optional\n * @returns {RelationalNode}\n */\n static fromJSON(json) {\n return new RelationalNode(json.conditionals, json.params);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n _toHTML(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var precedence = getPrecedence(this, parenthesis, options && options.implicit);\n var paramStrings = this.params.map(function (p, index) {\n var paramPrecedence = getPrecedence(p, parenthesis, options && options.implicit);\n return parenthesis === 'all' || paramPrecedence !== null && paramPrecedence <= precedence ? '(' + p.toHTML(options) + ')' : p.toHTML(options);\n });\n var ret = paramStrings[0];\n for (var i = 0; i < this.conditionals.length; i++) {\n ret += '' + escape(operatorMap[this.conditionals[i]]) + '' + paramStrings[i + 1];\n }\n return ret;\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var precedence = getPrecedence(this, parenthesis, options && options.implicit);\n var paramStrings = this.params.map(function (p, index) {\n var paramPrecedence = getPrecedence(p, parenthesis, options && options.implicit);\n return parenthesis === 'all' || paramPrecedence !== null && paramPrecedence <= precedence ? '\\\\left(' + p.toTex(options) + '\\right)' : p.toTex(options);\n });\n var ret = paramStrings[0];\n for (var i = 0; i < this.conditionals.length; i++) {\n ret += latexOperators[this.conditionals[i]] + paramStrings[i + 1];\n }\n return ret;\n }\n }\n _defineProperty(RelationalNode, \"name\", name);\n return RelationalNode;\n}, {\n isClass: true,\n isNode: true\n});", "import { escape } from '../../utils/string.js';\nimport { getSafeProperty } from '../../utils/customs.js';\nimport { factory } from '../../utils/factory.js';\nimport { toSymbol } from '../../utils/latex.js';\nvar name = 'SymbolNode';\nvar dependencies = ['math', '?Unit', 'Node'];\nexport var createSymbolNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n math,\n Unit,\n Node\n } = _ref;\n /**\n * Check whether some name is a valueless unit like \"inch\".\n * @param {string} name\n * @return {boolean}\n */\n function isValuelessUnit(name) {\n return Unit ? Unit.isValuelessUnit(name) : false;\n }\n class SymbolNode extends Node {\n /**\n * @constructor SymbolNode\n * @extends {Node}\n * A symbol node can hold and resolve a symbol\n * @param {string} name\n * @extends {Node}\n */\n constructor(name) {\n super();\n // validate input\n if (typeof name !== 'string') {\n throw new TypeError('String expected for parameter \"name\"');\n }\n this.name = name;\n }\n get type() {\n return 'SymbolNode';\n }\n get isSymbolNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var name = this.name;\n if (argNames[name] === true) {\n // this is a FunctionAssignment argument\n // (like an x when inside the expression of a function\n // assignment `f(x) = ...`)\n return function (scope, args, context) {\n return getSafeProperty(args, name);\n };\n } else if (name in math) {\n return function (scope, args, context) {\n return scope.has(name) ? scope.get(name) : getSafeProperty(math, name);\n };\n } else {\n var isUnit = isValuelessUnit(name);\n return function (scope, args, context) {\n return scope.has(name) ? scope.get(name) : isUnit ? new Unit(null, name) : SymbolNode.onUndefinedSymbol(name);\n };\n }\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n // nothing to do, we don't have any children\n }\n\n /**\n * Create a new SymbolNode with children produced by the given callback.\n * Trivial since a SymbolNode has no children\n * @param {function(child: Node, path: string, parent: Node) : Node} callback\n * @returns {SymbolNode} Returns a clone of the node\n */\n map(callback) {\n return this.clone();\n }\n\n /**\n * Throws an error 'Undefined symbol {name}'\n * @param {string} name\n */\n static onUndefinedSymbol(name) {\n throw new Error('Undefined symbol ' + name);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {SymbolNode}\n */\n clone() {\n return new SymbolNode(this.name);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toString(options) {\n return this.name;\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toHTML(options) {\n var name = escape(this.name);\n if (name === 'true' || name === 'false') {\n return '' + name + '';\n } else if (name === 'i') {\n return '' + name + '';\n } else if (name === 'Infinity') {\n return '' + name + '';\n } else if (name === 'NaN') {\n return '' + name + '';\n } else if (name === 'null') {\n return '' + name + '';\n } else if (name === 'undefined') {\n return '' + name + '';\n }\n return '' + name + '';\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: 'SymbolNode',\n name: this.name\n };\n }\n\n /**\n * Instantiate a SymbolNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"SymbolNode\", name: \"x\"}`,\n * where mathjs is optional\n * @returns {SymbolNode}\n */\n static fromJSON(json) {\n return new SymbolNode(json.name);\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toTex(options) {\n var isUnit = false;\n if (typeof math[this.name] === 'undefined' && isValuelessUnit(this.name)) {\n isUnit = true;\n }\n var symbol = toSymbol(this.name, isUnit);\n if (symbol[0] === '\\\\') {\n // no space needed if the symbol starts with '\\'\n return symbol;\n }\n // the space prevents symbols from breaking stuff like '\\cdot'\n // if it's written right before the symbol\n return ' ' + symbol;\n }\n }\n return SymbolNode;\n}, {\n isClass: true,\n isNode: true\n});", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isAccessorNode, isFunctionAssignmentNode, isIndexNode, isNode, isSymbolNode } from '../../utils/is.js';\nimport { escape, format } from '../../utils/string.js';\nimport { hasOwnProperty } from '../../utils/object.js';\nimport { getSafeProperty, getSafeMethod } from '../../utils/customs.js';\nimport { createSubScope } from '../../utils/scope.js';\nimport { factory } from '../../utils/factory.js';\nimport { defaultTemplate, latexFunctions } from '../../utils/latex.js';\nvar name = 'FunctionNode';\nvar dependencies = ['math', 'Node', 'SymbolNode'];\nexport var createFunctionNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var _FunctionNode;\n var {\n math,\n Node,\n SymbolNode\n } = _ref;\n /* format to fixed length */\n var strin = entity => format(entity, {\n truncate: 78\n });\n\n /*\n * Expand a LaTeX template\n *\n * @param {string} template\n * @param {Node} node\n * @param {Object} options\n * @private\n **/\n function expandTemplate(template, node, options) {\n var latex = '';\n\n // Match everything of the form ${identifier} or ${identifier[2]} or $$\n // while submatching identifier and 2 (in the second case)\n var regex = /\\$(?:\\{([a-z_][a-z_0-9]*)(?:\\[([0-9]+)\\])?\\}|\\$)/gi;\n var inputPos = 0; // position in the input string\n var match;\n while ((match = regex.exec(template)) !== null) {\n // go through all matches\n // add everything in front of the match to the LaTeX string\n latex += template.substring(inputPos, match.index);\n inputPos = match.index;\n if (match[0] === '$$') {\n // escaped dollar sign\n latex += '$';\n inputPos++;\n } else {\n // template parameter\n inputPos += match[0].length;\n var property = node[match[1]];\n if (!property) {\n throw new ReferenceError('Template: Property ' + match[1] + ' does not exist.');\n }\n if (match[2] === undefined) {\n // no square brackets\n switch (typeof property) {\n case 'string':\n latex += property;\n break;\n case 'object':\n if (isNode(property)) {\n latex += property.toTex(options);\n } else if (Array.isArray(property)) {\n // make array of Nodes into comma separated list\n latex += property.map(function (arg, index) {\n if (isNode(arg)) {\n return arg.toTex(options);\n }\n throw new TypeError('Template: ' + match[1] + '[' + index + '] is not a Node.');\n }).join(',');\n } else {\n throw new TypeError('Template: ' + match[1] + ' has to be a Node, String or array of Nodes');\n }\n break;\n default:\n throw new TypeError('Template: ' + match[1] + ' has to be a Node, String or array of Nodes');\n }\n } else {\n // with square brackets\n if (isNode(property[match[2]] && property[match[2]])) {\n latex += property[match[2]].toTex(options);\n } else {\n throw new TypeError('Template: ' + match[1] + '[' + match[2] + '] is not a Node.');\n }\n }\n }\n }\n latex += template.slice(inputPos); // append rest of the template\n\n return latex;\n }\n class FunctionNode extends Node {\n /**\n * @constructor FunctionNode\n * @extends {./Node}\n * invoke a list with arguments on a node\n * @param {./Node | string} fn\n * Item resolving to a function on which to invoke\n * the arguments, typically a SymbolNode or AccessorNode\n * @param {./Node[]} args\n */\n constructor(fn, args) {\n super();\n if (typeof fn === 'string') {\n fn = new SymbolNode(fn);\n }\n\n // validate input\n if (!isNode(fn)) throw new TypeError('Node expected as parameter \"fn\"');\n if (!Array.isArray(args) || !args.every(isNode)) {\n throw new TypeError('Array containing Nodes expected for parameter \"args\"');\n }\n this.fn = fn;\n this.args = args || [];\n }\n\n // readonly property name\n get name() {\n return this.fn.name || '';\n }\n get type() {\n return name;\n }\n get isFunctionNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n // compile arguments\n var evalArgs = this.args.map(arg => arg._compile(math, argNames));\n if (isSymbolNode(this.fn)) {\n var _name = this.fn.name;\n if (!argNames[_name]) {\n // we can statically determine whether the function\n // has the rawArgs property\n var fn = _name in math ? getSafeProperty(math, _name) : undefined;\n var isRaw = typeof fn === 'function' && fn.rawArgs === true;\n var resolveFn = scope => {\n var value;\n if (scope.has(_name)) {\n value = scope.get(_name);\n } else if (_name in math) {\n value = getSafeProperty(math, _name);\n } else {\n return FunctionNode.onUndefinedFunction(_name);\n }\n if (typeof value === 'function') {\n return value;\n }\n throw new TypeError(\"'\".concat(_name, \"' is not a function; its value is:\\n \").concat(strin(value)));\n };\n if (isRaw) {\n // pass unevaluated parameters (nodes) to the function\n // \"raw\" evaluation\n var rawArgs = this.args;\n return function evalFunctionNode(scope, args, context) {\n var fn = resolveFn(scope);\n\n // the original function can be overwritten in the scope with a non-rawArgs function\n if (fn.rawArgs === true) {\n return fn(rawArgs, math, createSubScope(scope, args));\n } else {\n // \"regular\" evaluation\n var values = evalArgs.map(evalArg => evalArg(scope, args, context));\n return fn(...values);\n }\n };\n } else {\n // \"regular\" evaluation\n switch (evalArgs.length) {\n case 0:\n return function evalFunctionNode(scope, args, context) {\n var fn = resolveFn(scope);\n return fn();\n };\n case 1:\n return function evalFunctionNode(scope, args, context) {\n var fn = resolveFn(scope);\n var evalArg0 = evalArgs[0];\n return fn(evalArg0(scope, args, context));\n };\n case 2:\n return function evalFunctionNode(scope, args, context) {\n var fn = resolveFn(scope);\n var evalArg0 = evalArgs[0];\n var evalArg1 = evalArgs[1];\n return fn(evalArg0(scope, args, context), evalArg1(scope, args, context));\n };\n default:\n return function evalFunctionNode(scope, args, context) {\n var fn = resolveFn(scope);\n var values = evalArgs.map(evalArg => evalArg(scope, args, context));\n return fn(...values);\n };\n }\n }\n } else {\n // the function symbol is an argName\n var _rawArgs = this.args;\n return function evalFunctionNode(scope, args, context) {\n var fn = getSafeProperty(args, _name);\n if (typeof fn !== 'function') {\n throw new TypeError(\"Argument '\".concat(_name, \"' was not a function; received: \").concat(strin(fn)));\n }\n if (fn.rawArgs) {\n // \"Raw\" evaluation\n return fn(_rawArgs, math, createSubScope(scope, args));\n } else {\n var values = evalArgs.map(evalArg => evalArg(scope, args, context));\n return fn.apply(fn, values);\n }\n };\n }\n } else if (isAccessorNode(this.fn) && isIndexNode(this.fn.index) && this.fn.index.isObjectProperty()) {\n // execute the function with the right context:\n // the object of the AccessorNode\n\n var evalObject = this.fn.object._compile(math, argNames);\n var prop = this.fn.index.getObjectProperty();\n var _rawArgs2 = this.args;\n return function evalFunctionNode(scope, args, context) {\n var object = evalObject(scope, args, context);\n var fn = getSafeMethod(object, prop);\n if (fn !== null && fn !== void 0 && fn.rawArgs) {\n // \"Raw\" evaluation\n return fn(_rawArgs2, math, createSubScope(scope, args));\n } else {\n // \"regular\" evaluation\n var values = evalArgs.map(evalArg => evalArg(scope, args, context));\n return fn.apply(object, values);\n }\n };\n } else {\n // node.fn.isAccessorNode && !node.fn.index.isObjectProperty()\n // we have to dynamically determine whether the function has the\n // rawArgs property\n var fnExpr = this.fn.toString();\n var evalFn = this.fn._compile(math, argNames);\n var _rawArgs3 = this.args;\n return function evalFunctionNode(scope, args, context) {\n var fn = evalFn(scope, args, context);\n if (typeof fn !== 'function') {\n throw new TypeError(\"Expression '\".concat(fnExpr, \"' did not evaluate to a function; value is:\") + \"\\n \".concat(strin(fn)));\n }\n if (fn.rawArgs) {\n // \"Raw\" evaluation\n return fn(_rawArgs3, math, createSubScope(scope, args));\n } else {\n // \"regular\" evaluation\n var values = evalArgs.map(evalArg => evalArg(scope, args, context));\n return fn.apply(fn, values);\n }\n };\n }\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n callback(this.fn, 'fn', this);\n for (var i = 0; i < this.args.length; i++) {\n callback(this.args[i], 'args[' + i + ']', this);\n }\n }\n\n /**\n * Create a new FunctionNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {FunctionNode} Returns a transformed copy of the node\n */\n map(callback) {\n var fn = this._ifNode(callback(this.fn, 'fn', this));\n var args = [];\n for (var i = 0; i < this.args.length; i++) {\n args[i] = this._ifNode(callback(this.args[i], 'args[' + i + ']', this));\n }\n return new FunctionNode(fn, args);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {FunctionNode}\n */\n clone() {\n return new FunctionNode(this.fn, this.args.slice(0));\n }\n\n /**\n * Throws an error 'Undefined function {name}'\n * @param {string} name\n */\n\n /**\n * Get string representation. (wrapper function)\n * This overrides parts of Node's toString function.\n * If callback is an object containing callbacks, it\n * calls the correct callback for the current node,\n * otherwise it falls back to calling Node's toString\n * function.\n *\n * @param {Object} options\n * @return {string} str\n * @override\n */\n toString(options) {\n var customString;\n var name = this.fn.toString(options);\n if (options && typeof options.handler === 'object' && hasOwnProperty(options.handler, name)) {\n // callback is a map of callback functions\n customString = options.handler[name](this, options);\n }\n if (typeof customString !== 'undefined') {\n return customString;\n }\n\n // fall back to Node's toString\n return super.toString(options);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n */\n _toString(options) {\n var args = this.args.map(function (arg) {\n return arg.toString(options);\n });\n var fn = isFunctionAssignmentNode(this.fn) ? '(' + this.fn.toString(options) + ')' : this.fn.toString(options);\n\n // format the arguments like \"add(2, 4.2)\"\n return fn + '(' + args.join(', ') + ')';\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n fn: this.fn,\n args: this.args\n };\n }\n\n /**\n * Instantiate an AssignmentNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"FunctionNode\", fn: ..., args: ...}`,\n * where mathjs is optional\n * @returns {FunctionNode}\n */\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n _toHTML(options) {\n var args = this.args.map(function (arg) {\n return arg.toHTML(options);\n });\n\n // format the arguments like \"add(2, 4.2)\"\n return '' + escape(this.fn) + '(' + args.join(',') + ')';\n }\n\n /**\n * Get LaTeX representation. (wrapper function)\n * This overrides parts of Node's toTex function.\n * If callback is an object containing callbacks, it\n * calls the correct callback for the current node,\n * otherwise it falls back to calling Node's toTex\n * function.\n *\n * @param {Object} options\n * @return {string}\n */\n toTex(options) {\n var customTex;\n if (options && typeof options.handler === 'object' && hasOwnProperty(options.handler, this.name)) {\n // callback is a map of callback functions\n customTex = options.handler[this.name](this, options);\n }\n if (typeof customTex !== 'undefined') {\n return customTex;\n }\n\n // fall back to Node's toTex\n return super.toTex(options);\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n var args = this.args.map(function (arg) {\n // get LaTeX of the arguments\n return arg.toTex(options);\n });\n var latexConverter;\n if (latexFunctions[this.name]) {\n latexConverter = latexFunctions[this.name];\n }\n\n // toTex property on the function itself\n if (math[this.name] && (typeof math[this.name].toTex === 'function' || typeof math[this.name].toTex === 'object' || typeof math[this.name].toTex === 'string')) {\n // .toTex is a callback function\n latexConverter = math[this.name].toTex;\n }\n var customToTex;\n switch (typeof latexConverter) {\n case 'function':\n // a callback function\n customToTex = latexConverter(this, options);\n break;\n case 'string':\n // a template string\n customToTex = expandTemplate(latexConverter, this, options);\n break;\n case 'object':\n // an object with different \"converters\" for different\n // numbers of arguments\n switch (typeof latexConverter[args.length]) {\n case 'function':\n customToTex = latexConverter[args.length](this, options);\n break;\n case 'string':\n customToTex = expandTemplate(latexConverter[args.length], this, options);\n break;\n }\n }\n if (typeof customToTex !== 'undefined') {\n return customToTex;\n }\n return expandTemplate(defaultTemplate, this, options);\n }\n\n /**\n * Get identifier.\n * @return {string}\n */\n getIdentifier() {\n return this.type + ':' + this.name;\n }\n }\n _FunctionNode = FunctionNode;\n _defineProperty(FunctionNode, \"name\", name);\n _defineProperty(FunctionNode, \"onUndefinedFunction\", function (name) {\n throw new Error('Undefined function ' + name);\n });\n _defineProperty(FunctionNode, \"fromJSON\", function (json) {\n return new _FunctionNode(json.fn, json.args);\n });\n return FunctionNode;\n}, {\n isClass: true,\n isNode: true\n});", "import _extends from \"@babel/runtime/helpers/extends\";\nimport { factory } from '../utils/factory.js';\nimport { isAccessorNode, isConstantNode, isFunctionNode, isOperatorNode, isSymbolNode, rule2Node } from '../utils/is.js';\nimport { deepMap } from '../utils/collection.js';\nimport { safeNumberType } from '../utils/number.js';\nimport { hasOwnProperty } from '../utils/object.js';\nvar name = 'parse';\nvar dependencies = ['typed', 'numeric', 'config', 'AccessorNode', 'ArrayNode', 'AssignmentNode', 'BlockNode', 'ConditionalNode', 'ConstantNode', 'FunctionAssignmentNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'ParenthesisNode', 'RangeNode', 'RelationalNode', 'SymbolNode'];\nexport var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n numeric,\n config,\n AccessorNode,\n ArrayNode,\n AssignmentNode,\n BlockNode,\n ConditionalNode,\n ConstantNode,\n FunctionAssignmentNode,\n FunctionNode,\n IndexNode,\n ObjectNode,\n OperatorNode,\n ParenthesisNode,\n RangeNode,\n RelationalNode,\n SymbolNode\n } = _ref;\n /**\n * Parse an expression. Returns a node tree, which can be evaluated by\n * invoking node.evaluate().\n *\n * Note the evaluating arbitrary expressions may involve security risks,\n * see [https://mathjs.org/docs/expressions/security.html](https://mathjs.org/docs/expressions/security.html) for more information.\n *\n * Syntax:\n *\n * math.parse(expr)\n * math.parse(expr, options)\n * math.parse([expr1, expr2, expr3, ...])\n * math.parse([expr1, expr2, expr3, ...], options)\n *\n * Example:\n *\n * const node1 = math.parse('sqrt(3^2 + 4^2)')\n * node1.compile().evaluate() // 5\n *\n * let scope = {a:3, b:4}\n * const node2 = math.parse('a * b') // 12\n * const code2 = node2.compile()\n * code2.evaluate(scope) // 12\n * scope.a = 5\n * code2.evaluate(scope) // 20\n *\n * const nodes = math.parse(['a = 3', 'b = 4', 'a * b'])\n * nodes[2].compile().evaluate() // 12\n *\n * See also:\n *\n * evaluate, compile\n *\n * @param {string | string[] | Matrix} expr Expression to be parsed\n * @param {{nodes: Object}} [options] Available options:\n * - `nodes` a set of custom nodes\n * @return {Node | Node[]} node\n * @throws {Error}\n */\n var parse = typed(name, {\n string: function string(expression) {\n return parseStart(expression, {});\n },\n 'Array | Matrix': function Array__Matrix(expressions) {\n return parseMultiple(expressions, {});\n },\n 'string, Object': function string_Object(expression, options) {\n var extraNodes = options.nodes !== undefined ? options.nodes : {};\n return parseStart(expression, extraNodes);\n },\n 'Array | Matrix, Object': parseMultiple\n });\n function parseMultiple(expressions) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var extraNodes = options.nodes !== undefined ? options.nodes : {};\n\n // parse an array or matrix with expressions\n return deepMap(expressions, function (elem) {\n if (typeof elem !== 'string') throw new TypeError('String expected');\n return parseStart(elem, extraNodes);\n });\n }\n\n // token types enumeration\n var TOKENTYPE = {\n NULL: 0,\n DELIMITER: 1,\n NUMBER: 2,\n SYMBOL: 3,\n UNKNOWN: 4\n };\n\n // map with all delimiters\n var DELIMITERS = {\n ',': true,\n '(': true,\n ')': true,\n '[': true,\n ']': true,\n '{': true,\n '}': true,\n '\"': true,\n '\\'': true,\n ';': true,\n '+': true,\n '-': true,\n '*': true,\n '.*': true,\n '/': true,\n './': true,\n '%': true,\n '^': true,\n '.^': true,\n '~': true,\n '!': true,\n '&': true,\n '|': true,\n '^|': true,\n '=': true,\n ':': true,\n '?': true,\n '==': true,\n '!=': true,\n '<': true,\n '>': true,\n '<=': true,\n '>=': true,\n '<<': true,\n '>>': true,\n '>>>': true\n };\n\n // map with all named delimiters\n var NAMED_DELIMITERS = {\n mod: true,\n to: true,\n in: true,\n and: true,\n xor: true,\n or: true,\n not: true\n };\n var CONSTANTS = {\n true: true,\n false: false,\n null: null,\n undefined\n };\n var NUMERIC_CONSTANTS = ['NaN', 'Infinity'];\n var ESCAPE_CHARACTERS = {\n '\"': '\"',\n \"'\": \"'\",\n '\\\\': '\\\\',\n '/': '/',\n b: '\\b',\n f: '\\f',\n n: '\\n',\n r: '\\r',\n t: '\\t'\n // note that \\u is handled separately in parseStringToken()\n };\n function initialState() {\n return {\n extraNodes: {},\n // current extra nodes, must be careful not to mutate\n expression: '',\n // current expression\n comment: '',\n // last parsed comment\n index: 0,\n // current index in expr\n token: '',\n // current token\n tokenType: TOKENTYPE.NULL,\n // type of the token\n nestingLevel: 0,\n // level of nesting inside parameters, used to ignore newline characters\n conditionalLevel: null // when a conditional is being parsed, the level of the conditional is stored here\n };\n }\n\n /**\n * View upto `length` characters of the expression starting at the current character.\n *\n * @param {Object} state\n * @param {number} [length=1] Number of characters to view\n * @returns {string}\n * @private\n */\n function currentString(state, length) {\n return state.expression.substr(state.index, length);\n }\n\n /**\n * View the current character. Returns '' if end of expression is reached.\n *\n * @param {Object} state\n * @returns {string}\n * @private\n */\n function currentCharacter(state) {\n return currentString(state, 1);\n }\n\n /**\n * Get the next character from the expression.\n * The character is stored into the char c. If the end of the expression is\n * reached, the function puts an empty string in c.\n * @private\n */\n function next(state) {\n state.index++;\n }\n\n /**\n * Preview the previous character from the expression.\n * @return {string} cNext\n * @private\n */\n function prevCharacter(state) {\n return state.expression.charAt(state.index - 1);\n }\n\n /**\n * Preview the next character from the expression.\n * @return {string} cNext\n * @private\n */\n function nextCharacter(state) {\n return state.expression.charAt(state.index + 1);\n }\n\n /**\n * Get next token in the current string expr.\n * The token and token type are available as token and tokenType\n * @private\n */\n function getToken(state) {\n state.tokenType = TOKENTYPE.NULL;\n state.token = '';\n state.comment = '';\n\n // skip over ignored characters:\n while (true) {\n // comments:\n if (currentCharacter(state) === '#') {\n while (currentCharacter(state) !== '\\n' && currentCharacter(state) !== '') {\n state.comment += currentCharacter(state);\n next(state);\n }\n }\n // whitespace: space, tab, and newline when inside parameters\n if (parse.isWhitespace(currentCharacter(state), state.nestingLevel)) {\n next(state);\n } else {\n break;\n }\n }\n\n // check for end of expression\n if (currentCharacter(state) === '') {\n // token is still empty\n state.tokenType = TOKENTYPE.DELIMITER;\n return;\n }\n\n // check for new line character\n if (currentCharacter(state) === '\\n' && !state.nestingLevel) {\n state.tokenType = TOKENTYPE.DELIMITER;\n state.token = currentCharacter(state);\n next(state);\n return;\n }\n var c1 = currentCharacter(state);\n var c2 = currentString(state, 2);\n var c3 = currentString(state, 3);\n if (c3.length === 3 && DELIMITERS[c3]) {\n state.tokenType = TOKENTYPE.DELIMITER;\n state.token = c3;\n next(state);\n next(state);\n next(state);\n return;\n }\n\n // check for delimiters consisting of 2 characters\n if (c2.length === 2 && DELIMITERS[c2]) {\n state.tokenType = TOKENTYPE.DELIMITER;\n state.token = c2;\n next(state);\n next(state);\n return;\n }\n\n // check for delimiters consisting of 1 character\n if (DELIMITERS[c1]) {\n state.tokenType = TOKENTYPE.DELIMITER;\n state.token = c1;\n next(state);\n return;\n }\n\n // check for a number\n if (parse.isDigitDot(c1)) {\n state.tokenType = TOKENTYPE.NUMBER;\n\n // check for binary, octal, or hex\n var _c = currentString(state, 2);\n if (_c === '0b' || _c === '0o' || _c === '0x') {\n state.token += currentCharacter(state);\n next(state);\n state.token += currentCharacter(state);\n next(state);\n while (parse.isHexDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n if (currentCharacter(state) === '.') {\n // this number has a radix point\n state.token += '.';\n next(state);\n // get the digits after the radix\n while (parse.isHexDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n } else if (currentCharacter(state) === 'i') {\n // this number has a word size suffix\n state.token += 'i';\n next(state);\n // get the word size\n while (parse.isDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n }\n return;\n }\n\n // get number, can have a single dot\n if (currentCharacter(state) === '.') {\n state.token += currentCharacter(state);\n next(state);\n if (!parse.isDigit(currentCharacter(state))) {\n // this is no number, it is just a dot (can be dot notation)\n state.tokenType = TOKENTYPE.DELIMITER;\n return;\n }\n } else {\n while (parse.isDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n if (parse.isDecimalMark(currentCharacter(state), nextCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n }\n while (parse.isDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n // check for exponential notation like \"2.3e-4\", \"1.23e50\" or \"2e+4\"\n if (currentCharacter(state) === 'E' || currentCharacter(state) === 'e') {\n if (parse.isDigit(nextCharacter(state)) || nextCharacter(state) === '-' || nextCharacter(state) === '+') {\n state.token += currentCharacter(state);\n next(state);\n if (currentCharacter(state) === '+' || currentCharacter(state) === '-') {\n state.token += currentCharacter(state);\n next(state);\n }\n // Scientific notation MUST be followed by an exponent\n if (!parse.isDigit(currentCharacter(state))) {\n throw createSyntaxError(state, 'Digit expected, got \"' + currentCharacter(state) + '\"');\n }\n while (parse.isDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n if (parse.isDecimalMark(currentCharacter(state), nextCharacter(state))) {\n throw createSyntaxError(state, 'Digit expected, got \"' + currentCharacter(state) + '\"');\n }\n } else if (nextCharacter(state) === '.') {\n next(state);\n throw createSyntaxError(state, 'Digit expected, got \"' + currentCharacter(state) + '\"');\n }\n }\n return;\n }\n\n // check for variables, functions, named operators\n if (parse.isAlpha(currentCharacter(state), prevCharacter(state), nextCharacter(state))) {\n while (parse.isAlpha(currentCharacter(state), prevCharacter(state), nextCharacter(state)) || parse.isDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n if (hasOwnProperty(NAMED_DELIMITERS, state.token)) {\n state.tokenType = TOKENTYPE.DELIMITER;\n } else {\n state.tokenType = TOKENTYPE.SYMBOL;\n }\n return;\n }\n\n // something unknown is found, wrong characters -> a syntax error\n state.tokenType = TOKENTYPE.UNKNOWN;\n while (currentCharacter(state) !== '') {\n state.token += currentCharacter(state);\n next(state);\n }\n throw createSyntaxError(state, 'Syntax error in part \"' + state.token + '\"');\n }\n\n /**\n * Get next token and skip newline tokens\n */\n function getTokenSkipNewline(state) {\n do {\n getToken(state);\n } while (state.token === '\\n'); // eslint-disable-line no-unmodified-loop-condition\n }\n\n /**\n * Open parameters.\n * New line characters will be ignored until closeParams(state) is called\n */\n function openParams(state) {\n state.nestingLevel++;\n }\n\n /**\n * Close parameters.\n * New line characters will no longer be ignored\n */\n function closeParams(state) {\n state.nestingLevel--;\n }\n\n /**\n * Checks whether the current character `c` is a valid alpha character:\n *\n * - A latin letter (upper or lower case) Ascii: a-z, A-Z\n * - An underscore Ascii: _\n * - A dollar sign Ascii: $\n * - A latin letter with accents Unicode: \\u00C0 - \\u02AF\n * - A greek letter Unicode: \\u0370 - \\u03FF\n * - A mathematical alphanumeric symbol Unicode: \\u{1D400} - \\u{1D7FF} excluding invalid code points\n *\n * The previous and next characters are needed to determine whether\n * this character is part of a unicode surrogate pair.\n *\n * @param {string} c Current character in the expression\n * @param {string} cPrev Previous character\n * @param {string} cNext Next character\n * @return {boolean}\n */\n parse.isAlpha = function isAlpha(c, cPrev, cNext) {\n return parse.isValidLatinOrGreek(c) || parse.isValidMathSymbol(c, cNext) || parse.isValidMathSymbol(cPrev, c);\n };\n\n /**\n * Test whether a character is a valid latin, greek, or letter-like character\n * @param {string} c\n * @return {boolean}\n */\n parse.isValidLatinOrGreek = function isValidLatinOrGreek(c) {\n return /^[a-zA-Z_$\\u00C0-\\u02AF\\u0370-\\u03FF\\u2100-\\u214F]$/.test(c);\n };\n\n /**\n * Test whether two given 16 bit characters form a surrogate pair of a\n * unicode math symbol.\n *\n * https://unicode-table.com/en/\n * https://www.wikiwand.com/en/Mathematical_operators_and_symbols_in_Unicode\n *\n * Note: In ES6 will be unicode aware:\n * https://stackoverflow.com/questions/280712/javascript-unicode-regexes\n * https://mathiasbynens.be/notes/es6-unicode-regex\n *\n * @param {string} high\n * @param {string} low\n * @return {boolean}\n */\n parse.isValidMathSymbol = function isValidMathSymbol(high, low) {\n return /^[\\uD835]$/.test(high) && /^[\\uDC00-\\uDFFF]$/.test(low) && /^[^\\uDC55\\uDC9D\\uDCA0\\uDCA1\\uDCA3\\uDCA4\\uDCA7\\uDCA8\\uDCAD\\uDCBA\\uDCBC\\uDCC4\\uDD06\\uDD0B\\uDD0C\\uDD15\\uDD1D\\uDD3A\\uDD3F\\uDD45\\uDD47-\\uDD49\\uDD51\\uDEA6\\uDEA7\\uDFCC\\uDFCD]$/.test(low);\n };\n\n /**\n * Check whether given character c is a white space character: space, tab, or enter\n * @param {string} c\n * @param {number} nestingLevel\n * @return {boolean}\n */\n parse.isWhitespace = function isWhitespace(c, nestingLevel) {\n // TODO: also take '\\r' carriage return as newline? Or does that give problems on mac?\n return c === ' ' || c === '\\t' || c === '\\n' && nestingLevel > 0;\n };\n\n /**\n * Test whether the character c is a decimal mark (dot).\n * This is the case when it's not the start of a delimiter '.*', './', or '.^'\n * @param {string} c\n * @param {string} cNext\n * @return {boolean}\n */\n parse.isDecimalMark = function isDecimalMark(c, cNext) {\n return c === '.' && cNext !== '/' && cNext !== '*' && cNext !== '^';\n };\n\n /**\n * checks if the given char c is a digit or dot\n * @param {string} c a string with one character\n * @return {boolean}\n */\n parse.isDigitDot = function isDigitDot(c) {\n return c >= '0' && c <= '9' || c === '.';\n };\n\n /**\n * checks if the given char c is a digit\n * @param {string} c a string with one character\n * @return {boolean}\n */\n parse.isDigit = function isDigit(c) {\n return c >= '0' && c <= '9';\n };\n\n /**\n * checks if the given char c is a hex digit\n * @param {string} c a string with one character\n * @return {boolean}\n */\n parse.isHexDigit = function isHexDigit(c) {\n return c >= '0' && c <= '9' || c >= 'a' && c <= 'f' || c >= 'A' && c <= 'F';\n };\n\n /**\n * Start of the parse levels below, in order of precedence\n * @return {Node} node\n * @private\n */\n function parseStart(expression, extraNodes) {\n var state = initialState();\n _extends(state, {\n expression,\n extraNodes\n });\n getToken(state);\n var node = parseBlock(state);\n\n // check for garbage at the end of the expression\n // an expression ends with a empty character '' and tokenType DELIMITER\n if (state.token !== '') {\n if (state.tokenType === TOKENTYPE.DELIMITER) {\n // user entered a not existing operator like \"//\"\n\n // TODO: give hints for aliases, for example with \"<>\" give as hint \" did you mean !== ?\"\n throw createError(state, 'Unexpected operator ' + state.token);\n } else {\n throw createSyntaxError(state, 'Unexpected part \"' + state.token + '\"');\n }\n }\n return node;\n }\n\n /**\n * Parse a block with expressions. Expressions can be separated by a newline\n * character '\\n', or by a semicolon ';'. In case of a semicolon, no output\n * of the preceding line is returned.\n * @return {Node} node\n * @private\n */\n function parseBlock(state) {\n var node;\n var blocks = [];\n var visible;\n if (state.token !== '' && state.token !== '\\n' && state.token !== ';') {\n node = parseAssignment(state);\n if (state.comment) {\n node.comment = state.comment;\n }\n }\n\n // TODO: simplify this loop\n while (state.token === '\\n' || state.token === ';') {\n // eslint-disable-line no-unmodified-loop-condition\n if (blocks.length === 0 && node) {\n visible = state.token !== ';';\n blocks.push({\n node,\n visible\n });\n }\n getToken(state);\n if (state.token !== '\\n' && state.token !== ';' && state.token !== '') {\n node = parseAssignment(state);\n if (state.comment) {\n node.comment = state.comment;\n }\n visible = state.token !== ';';\n blocks.push({\n node,\n visible\n });\n }\n }\n if (blocks.length > 0) {\n return new BlockNode(blocks);\n } else {\n if (!node) {\n node = new ConstantNode(undefined);\n if (state.comment) {\n node.comment = state.comment;\n }\n }\n return node;\n }\n }\n\n /**\n * Assignment of a function or variable,\n * - can be a variable like 'a=2.3'\n * - or a updating an existing variable like 'matrix(2,3:5)=[6,7,8]'\n * - defining a function like 'f(x) = x^2'\n * @return {Node} node\n * @private\n */\n function parseAssignment(state) {\n var name, args, value, valid;\n var node = parseConditional(state);\n if (state.token === '=') {\n if (isSymbolNode(node)) {\n // parse a variable assignment like 'a = 2/3'\n name = node.name;\n getTokenSkipNewline(state);\n value = parseAssignment(state);\n return new AssignmentNode(new SymbolNode(name), value);\n } else if (isAccessorNode(node)) {\n // parse a matrix subset assignment like 'A[1,2] = 4'\n getTokenSkipNewline(state);\n value = parseAssignment(state);\n return new AssignmentNode(node.object, node.index, value);\n } else if (isFunctionNode(node) && isSymbolNode(node.fn)) {\n // parse function assignment like 'f(x) = x^2'\n valid = true;\n args = [];\n name = node.name;\n node.args.forEach(function (arg, index) {\n if (isSymbolNode(arg)) {\n args[index] = arg.name;\n } else {\n valid = false;\n }\n });\n if (valid) {\n getTokenSkipNewline(state);\n value = parseAssignment(state);\n return new FunctionAssignmentNode(name, args, value);\n }\n }\n throw createSyntaxError(state, 'Invalid left hand side of assignment operator =');\n }\n return node;\n }\n\n /**\n * conditional operation\n *\n * condition ? truePart : falsePart\n *\n * Note: conditional operator is right-associative\n *\n * @return {Node} node\n * @private\n */\n function parseConditional(state) {\n var node = parseLogicalOr(state);\n while (state.token === '?') {\n // eslint-disable-line no-unmodified-loop-condition\n // set a conditional level, the range operator will be ignored as long\n // as conditionalLevel === state.nestingLevel.\n var prev = state.conditionalLevel;\n state.conditionalLevel = state.nestingLevel;\n getTokenSkipNewline(state);\n var condition = node;\n var trueExpr = parseAssignment(state);\n if (state.token !== ':') throw createSyntaxError(state, 'False part of conditional expression expected');\n state.conditionalLevel = null;\n getTokenSkipNewline(state);\n var falseExpr = parseAssignment(state); // Note: check for conditional operator again, right associativity\n\n node = new ConditionalNode(condition, trueExpr, falseExpr);\n\n // restore the previous conditional level\n state.conditionalLevel = prev;\n }\n return node;\n }\n\n /**\n * logical or, 'x or y'\n * @return {Node} node\n * @private\n */\n function parseLogicalOr(state) {\n var node = parseLogicalXor(state);\n while (state.token === 'or') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('or', 'or', [node, parseLogicalXor(state)]);\n }\n return node;\n }\n\n /**\n * logical exclusive or, 'x xor y'\n * @return {Node} node\n * @private\n */\n function parseLogicalXor(state) {\n var node = parseLogicalAnd(state);\n while (state.token === 'xor') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('xor', 'xor', [node, parseLogicalAnd(state)]);\n }\n return node;\n }\n\n /**\n * logical and, 'x and y'\n * @return {Node} node\n * @private\n */\n function parseLogicalAnd(state) {\n var node = parseBitwiseOr(state);\n while (state.token === 'and') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('and', 'and', [node, parseBitwiseOr(state)]);\n }\n return node;\n }\n\n /**\n * bitwise or, 'x | y'\n * @return {Node} node\n * @private\n */\n function parseBitwiseOr(state) {\n var node = parseBitwiseXor(state);\n while (state.token === '|') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('|', 'bitOr', [node, parseBitwiseXor(state)]);\n }\n return node;\n }\n\n /**\n * bitwise exclusive or (xor), 'x ^| y'\n * @return {Node} node\n * @private\n */\n function parseBitwiseXor(state) {\n var node = parseBitwiseAnd(state);\n while (state.token === '^|') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('^|', 'bitXor', [node, parseBitwiseAnd(state)]);\n }\n return node;\n }\n\n /**\n * bitwise and, 'x & y'\n * @return {Node} node\n * @private\n */\n function parseBitwiseAnd(state) {\n var node = parseRelational(state);\n while (state.token === '&') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('&', 'bitAnd', [node, parseRelational(state)]);\n }\n return node;\n }\n\n /**\n * Parse a chained conditional, like 'a > b >= c'\n * @return {Node} node\n */\n function parseRelational(state) {\n var params = [parseShift(state)];\n var conditionals = [];\n var operators = {\n '==': 'equal',\n '!=': 'unequal',\n '<': 'smaller',\n '>': 'larger',\n '<=': 'smallerEq',\n '>=': 'largerEq'\n };\n while (hasOwnProperty(operators, state.token)) {\n // eslint-disable-line no-unmodified-loop-condition\n var cond = {\n name: state.token,\n fn: operators[state.token]\n };\n conditionals.push(cond);\n getTokenSkipNewline(state);\n params.push(parseShift(state));\n }\n if (params.length === 1) {\n return params[0];\n } else if (params.length === 2) {\n return new OperatorNode(conditionals[0].name, conditionals[0].fn, params);\n } else {\n return new RelationalNode(conditionals.map(c => c.fn), params);\n }\n }\n\n /**\n * Bitwise left shift, bitwise right arithmetic shift, bitwise right logical shift\n * @return {Node} node\n * @private\n */\n function parseShift(state) {\n var node, name, fn, params;\n node = parseConversion(state);\n var operators = {\n '<<': 'leftShift',\n '>>': 'rightArithShift',\n '>>>': 'rightLogShift'\n };\n while (hasOwnProperty(operators, state.token)) {\n name = state.token;\n fn = operators[name];\n getTokenSkipNewline(state);\n params = [node, parseConversion(state)];\n node = new OperatorNode(name, fn, params);\n }\n return node;\n }\n\n /**\n * conversion operators 'to' and 'in'\n * @return {Node} node\n * @private\n */\n function parseConversion(state) {\n var node, name, fn, params;\n node = parseRange(state);\n var operators = {\n to: 'to',\n in: 'to' // alias of 'to'\n };\n while (hasOwnProperty(operators, state.token)) {\n name = state.token;\n fn = operators[name];\n getTokenSkipNewline(state);\n if (name === 'in' && state.token === '') {\n // end of expression -> this is the unit 'in' ('inch')\n node = new OperatorNode('*', 'multiply', [node, new SymbolNode('in')], true);\n } else {\n // operator 'a to b' or 'a in b'\n params = [node, parseRange(state)];\n node = new OperatorNode(name, fn, params);\n }\n }\n return node;\n }\n\n /**\n * parse range, \"start:end\", \"start:step:end\", \":\", \"start:\", \":end\", etc\n * @return {Node} node\n * @private\n */\n function parseRange(state) {\n var node;\n var params = [];\n if (state.token === ':') {\n // implicit start=1 (one-based)\n node = new ConstantNode(1);\n } else {\n // explicit start\n node = parseAddSubtract(state);\n }\n if (state.token === ':' && state.conditionalLevel !== state.nestingLevel) {\n // we ignore the range operator when a conditional operator is being processed on the same level\n params.push(node);\n\n // parse step and end\n while (state.token === ':' && params.length < 3) {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n if (state.token === ')' || state.token === ']' || state.token === ',' || state.token === '') {\n // implicit end\n params.push(new SymbolNode('end'));\n } else {\n // explicit end\n params.push(parseAddSubtract(state));\n }\n }\n if (params.length === 3) {\n // params = [start, step, end]\n node = new RangeNode(params[0], params[2], params[1]); // start, end, step\n } else {\n // length === 2\n // params = [start, end]\n node = new RangeNode(params[0], params[1]); // start, end\n }\n }\n return node;\n }\n\n /**\n * add or subtract\n * @return {Node} node\n * @private\n */\n function parseAddSubtract(state) {\n var node, name, fn, params;\n node = parseMultiplyDivideModulusPercentage(state);\n var operators = {\n '+': 'add',\n '-': 'subtract'\n };\n while (hasOwnProperty(operators, state.token)) {\n name = state.token;\n fn = operators[name];\n getTokenSkipNewline(state);\n var rightNode = parseMultiplyDivideModulusPercentage(state);\n if (rightNode.isPercentage) {\n params = [node, new OperatorNode('*', 'multiply', [node, rightNode])];\n } else {\n params = [node, rightNode];\n }\n node = new OperatorNode(name, fn, params);\n }\n return node;\n }\n\n /**\n * multiply, divide, modulus, percentage\n * @return {Node} node\n * @private\n */\n function parseMultiplyDivideModulusPercentage(state) {\n var node, last, name, fn;\n node = parseImplicitMultiplication(state);\n last = node;\n var operators = {\n '*': 'multiply',\n '.*': 'dotMultiply',\n '/': 'divide',\n './': 'dotDivide',\n '%': 'mod',\n mod: 'mod'\n };\n while (true) {\n if (hasOwnProperty(operators, state.token)) {\n // explicit operators\n name = state.token;\n fn = operators[name];\n getTokenSkipNewline(state);\n if (name === '%' && state.tokenType === TOKENTYPE.DELIMITER && state.token !== '(') {\n // If the expression contains only %, then treat that as /100\n if (state.token !== '' && operators[state.token]) {\n var left = new OperatorNode('/', 'divide', [node, new ConstantNode(100)], false, true);\n name = state.token;\n fn = operators[name];\n getTokenSkipNewline(state);\n last = parseImplicitMultiplication(state);\n node = new OperatorNode(name, fn, [left, last]);\n } else {\n node = new OperatorNode('/', 'divide', [node, new ConstantNode(100)], false, true);\n }\n // return node\n } else {\n last = parseImplicitMultiplication(state);\n node = new OperatorNode(name, fn, [node, last]);\n }\n } else {\n break;\n }\n }\n return node;\n }\n\n /**\n * implicit multiplication\n * @return {Node} node\n * @private\n */\n function parseImplicitMultiplication(state) {\n var node, last;\n node = parseRule2(state);\n last = node;\n while (true) {\n if (state.tokenType === TOKENTYPE.SYMBOL || state.token === 'in' && isConstantNode(node) || state.token === 'in' && isOperatorNode(node) && node.fn === 'unaryMinus' && isConstantNode(node.args[0]) || state.tokenType === TOKENTYPE.NUMBER && !isConstantNode(last) && (!isOperatorNode(last) || last.op === '!') || state.token === '(') {\n // parse implicit multiplication\n //\n // symbol: implicit multiplication like '2a', '(2+3)a', 'a b'\n // number: implicit multiplication like '(2+3)2'\n // parenthesis: implicit multiplication like '2(3+4)', '(3+4)(1+2)'\n last = parseRule2(state);\n node = new OperatorNode('*', 'multiply', [node, last], true /* implicit */);\n } else {\n break;\n }\n }\n return node;\n }\n\n /**\n * Infamous \"rule 2\" as described in https://github.com/josdejong/mathjs/issues/792#issuecomment-361065370\n * And as amended in https://github.com/josdejong/mathjs/issues/2370#issuecomment-1054052164\n * Explicit division gets higher precedence than implicit multiplication\n * when the division matches this pattern:\n * [unaryPrefixOp]?[number] / [number] [symbol]\n * @return {Node} node\n * @private\n */\n function parseRule2(state) {\n var node = parseUnary(state);\n var last = node;\n var tokenStates = [];\n while (true) {\n // Match the \"number /\" part of the pattern \"number / number symbol\"\n if (state.token === '/' && rule2Node(last)) {\n // Look ahead to see if the next token is a number\n tokenStates.push(_extends({}, state));\n getTokenSkipNewline(state);\n\n // Match the \"number / number\" part of the pattern\n if (state.tokenType === TOKENTYPE.NUMBER) {\n // Look ahead again\n tokenStates.push(_extends({}, state));\n getTokenSkipNewline(state);\n\n // Match the \"symbol\" part of the pattern, or a left parenthesis\n if (state.tokenType === TOKENTYPE.SYMBOL || state.token === '(' || state.token === 'in') {\n // We've matched the pattern \"number / number symbol\".\n // Rewind once and build the \"number / number\" node; the symbol will be consumed later\n _extends(state, tokenStates.pop());\n tokenStates.pop();\n last = parseUnary(state);\n node = new OperatorNode('/', 'divide', [node, last]);\n } else {\n // Not a match, so rewind\n tokenStates.pop();\n _extends(state, tokenStates.pop());\n break;\n }\n } else {\n // Not a match, so rewind\n _extends(state, tokenStates.pop());\n break;\n }\n } else {\n break;\n }\n }\n return node;\n }\n\n /**\n * Unary plus and minus, and logical and bitwise not\n * @return {Node} node\n * @private\n */\n function parseUnary(state) {\n var name, params, fn;\n var operators = {\n '-': 'unaryMinus',\n '+': 'unaryPlus',\n '~': 'bitNot',\n not: 'not'\n };\n if (hasOwnProperty(operators, state.token)) {\n fn = operators[state.token];\n name = state.token;\n getTokenSkipNewline(state);\n params = [parseUnary(state)];\n return new OperatorNode(name, fn, params);\n }\n return parsePow(state);\n }\n\n /**\n * power\n * Note: power operator is right associative\n * @return {Node} node\n * @private\n */\n function parsePow(state) {\n var node, name, fn, params;\n node = parseLeftHandOperators(state);\n if (state.token === '^' || state.token === '.^') {\n name = state.token;\n fn = name === '^' ? 'pow' : 'dotPow';\n getTokenSkipNewline(state);\n params = [node, parseUnary(state)]; // Go back to unary, we can have '2^-3'\n node = new OperatorNode(name, fn, params);\n }\n return node;\n }\n\n /**\n * Left hand operators: factorial x!, ctranspose x'\n * @return {Node} node\n * @private\n */\n function parseLeftHandOperators(state) {\n var node, name, fn, params;\n node = parseCustomNodes(state);\n var operators = {\n '!': 'factorial',\n '\\'': 'ctranspose'\n };\n while (hasOwnProperty(operators, state.token)) {\n name = state.token;\n fn = operators[name];\n getToken(state);\n params = [node];\n node = new OperatorNode(name, fn, params);\n node = parseAccessors(state, node);\n }\n return node;\n }\n\n /**\n * Parse a custom node handler. A node handler can be used to process\n * nodes in a custom way, for example for handling a plot.\n *\n * A handler must be passed as second argument of the parse function.\n * - must extend math.Node\n * - must contain a function _compile(defs: Object) : string\n * - must contain a function find(filter: Object) : Node[]\n * - must contain a function toString() : string\n * - the constructor is called with a single argument containing all parameters\n *\n * For example:\n *\n * nodes = {\n * 'plot': PlotHandler\n * }\n *\n * The constructor of the handler is called as:\n *\n * node = new PlotHandler(params)\n *\n * The handler will be invoked when evaluating an expression like:\n *\n * node = math.parse('plot(sin(x), x)', nodes)\n *\n * @return {Node} node\n * @private\n */\n function parseCustomNodes(state) {\n var params = [];\n if (state.tokenType === TOKENTYPE.SYMBOL && hasOwnProperty(state.extraNodes, state.token)) {\n var CustomNode = state.extraNodes[state.token];\n getToken(state);\n\n // parse parameters\n if (state.token === '(') {\n params = [];\n openParams(state);\n getToken(state);\n if (state.token !== ')') {\n params.push(parseAssignment(state));\n\n // parse a list with parameters\n while (state.token === ',') {\n // eslint-disable-line no-unmodified-loop-condition\n getToken(state);\n params.push(parseAssignment(state));\n }\n }\n if (state.token !== ')') {\n throw createSyntaxError(state, 'Parenthesis ) expected');\n }\n closeParams(state);\n getToken(state);\n }\n\n // create a new custom node\n // noinspection JSValidateTypes\n return new CustomNode(params);\n }\n return parseSymbol(state);\n }\n\n /**\n * parse symbols: functions, variables, constants, units\n * @return {Node} node\n * @private\n */\n function parseSymbol(state) {\n var node, name;\n if (state.tokenType === TOKENTYPE.SYMBOL || state.tokenType === TOKENTYPE.DELIMITER && state.token in NAMED_DELIMITERS) {\n name = state.token;\n getToken(state);\n if (hasOwnProperty(CONSTANTS, name)) {\n // true, false, null, ...\n node = new ConstantNode(CONSTANTS[name]);\n } else if (NUMERIC_CONSTANTS.includes(name)) {\n // NaN, Infinity\n node = new ConstantNode(numeric(name, 'number'));\n } else {\n node = new SymbolNode(name);\n }\n\n // parse function parameters and matrix index\n node = parseAccessors(state, node);\n return node;\n }\n return parseString(state);\n }\n\n /**\n * parse accessors:\n * - function invocation in round brackets (...), for example sqrt(2)\n * - index enclosed in square brackets [...], for example A[2,3]\n * - dot notation for properties, like foo.bar\n * @param {Object} state\n * @param {Node} node Node on which to apply the parameters. If there\n * are no parameters in the expression, the node\n * itself is returned\n * @param {string[]} [types] Filter the types of notations\n * can be ['(', '[', '.']\n * @return {Node} node\n * @private\n */\n function parseAccessors(state, node, types) {\n var params;\n while ((state.token === '(' || state.token === '[' || state.token === '.') && (!types || types.includes(state.token))) {\n // eslint-disable-line no-unmodified-loop-condition\n params = [];\n if (state.token === '(') {\n if (isSymbolNode(node) || isAccessorNode(node)) {\n // function invocation like fn(2, 3) or obj.fn(2, 3)\n openParams(state);\n getToken(state);\n if (state.token !== ')') {\n params.push(parseAssignment(state));\n\n // parse a list with parameters\n while (state.token === ',') {\n // eslint-disable-line no-unmodified-loop-condition\n getToken(state);\n params.push(parseAssignment(state));\n }\n }\n if (state.token !== ')') {\n throw createSyntaxError(state, 'Parenthesis ) expected');\n }\n closeParams(state);\n getToken(state);\n node = new FunctionNode(node, params);\n } else {\n // implicit multiplication like (2+3)(4+5) or sqrt(2)(1+2)\n // don't parse it here but let it be handled by parseImplicitMultiplication\n // with correct precedence\n return node;\n }\n } else if (state.token === '[') {\n // index notation like variable[2, 3]\n openParams(state);\n getToken(state);\n if (state.token !== ']') {\n params.push(parseAssignment(state));\n\n // parse a list with parameters\n while (state.token === ',') {\n // eslint-disable-line no-unmodified-loop-condition\n getToken(state);\n params.push(parseAssignment(state));\n }\n }\n if (state.token !== ']') {\n throw createSyntaxError(state, 'Parenthesis ] expected');\n }\n closeParams(state);\n getToken(state);\n node = new AccessorNode(node, new IndexNode(params));\n } else {\n // dot notation like variable.prop\n getToken(state);\n var isPropertyName = state.tokenType === TOKENTYPE.SYMBOL || state.tokenType === TOKENTYPE.DELIMITER && state.token in NAMED_DELIMITERS;\n if (!isPropertyName) {\n throw createSyntaxError(state, 'Property name expected after dot');\n }\n params.push(new ConstantNode(state.token));\n getToken(state);\n var dotNotation = true;\n node = new AccessorNode(node, new IndexNode(params, dotNotation));\n }\n }\n return node;\n }\n\n /**\n * Parse a single or double quoted string.\n * @return {Node} node\n * @private\n */\n function parseString(state) {\n var node, str;\n if (state.token === '\"' || state.token === \"'\") {\n str = parseStringToken(state, state.token);\n\n // create constant\n node = new ConstantNode(str);\n\n // parse index parameters\n node = parseAccessors(state, node);\n return node;\n }\n return parseMatrix(state);\n }\n\n /**\n * Parse a string surrounded by single or double quotes\n * @param {Object} state\n * @param {\"'\" | \"\\\"\"} quote\n * @return {string}\n */\n function parseStringToken(state, quote) {\n var str = '';\n while (currentCharacter(state) !== '' && currentCharacter(state) !== quote) {\n if (currentCharacter(state) === '\\\\') {\n next(state);\n var char = currentCharacter(state);\n var escapeChar = ESCAPE_CHARACTERS[char];\n if (escapeChar !== undefined) {\n // an escaped control character like \\\" or \\n\n str += escapeChar;\n state.index += 1;\n } else if (char === 'u') {\n // escaped unicode character\n var unicode = state.expression.slice(state.index + 1, state.index + 5);\n if (/^[0-9A-Fa-f]{4}$/.test(unicode)) {\n // test whether the string holds four hexadecimal values\n str += String.fromCharCode(parseInt(unicode, 16));\n state.index += 5;\n } else {\n throw createSyntaxError(state, \"Invalid unicode character \\\\u\".concat(unicode));\n }\n } else {\n throw createSyntaxError(state, \"Bad escape character \\\\\".concat(char));\n }\n } else {\n // any regular character\n str += currentCharacter(state);\n next(state);\n }\n }\n getToken(state);\n if (state.token !== quote) {\n throw createSyntaxError(state, \"End of string \".concat(quote, \" expected\"));\n }\n getToken(state);\n return str;\n }\n\n /**\n * parse the matrix\n * @return {Node} node\n * @private\n */\n function parseMatrix(state) {\n var array, params, rows, cols;\n if (state.token === '[') {\n // matrix [...]\n openParams(state);\n getToken(state);\n if (state.token !== ']') {\n // this is a non-empty matrix\n var row = parseRow(state);\n if (state.token === ';') {\n // 2 dimensional array\n rows = 1;\n params = [row];\n\n // the rows of the matrix are separated by dot-comma's\n while (state.token === ';') {\n // eslint-disable-line no-unmodified-loop-condition\n getToken(state);\n if (state.token !== ']') {\n params[rows] = parseRow(state);\n rows++;\n }\n }\n if (state.token !== ']') {\n throw createSyntaxError(state, 'End of matrix ] expected');\n }\n closeParams(state);\n getToken(state);\n\n // check if the number of columns matches in all rows\n cols = params[0].items.length;\n for (var r = 1; r < rows; r++) {\n if (params[r].items.length !== cols) {\n throw createError(state, 'Column dimensions mismatch ' + '(' + params[r].items.length + ' !== ' + cols + ')');\n }\n }\n array = new ArrayNode(params);\n } else {\n // 1 dimensional vector\n if (state.token !== ']') {\n throw createSyntaxError(state, 'End of matrix ] expected');\n }\n closeParams(state);\n getToken(state);\n array = row;\n }\n } else {\n // this is an empty matrix \"[ ]\"\n closeParams(state);\n getToken(state);\n array = new ArrayNode([]);\n }\n return parseAccessors(state, array);\n }\n return parseObject(state);\n }\n\n /**\n * Parse a single comma-separated row from a matrix, like 'a, b, c'\n * @return {ArrayNode} node\n */\n function parseRow(state) {\n var params = [parseAssignment(state)];\n var len = 1;\n while (state.token === ',') {\n // eslint-disable-line no-unmodified-loop-condition\n getToken(state);\n\n // parse expression\n if (state.token !== ']' && state.token !== ';') {\n params[len] = parseAssignment(state);\n len++;\n }\n }\n return new ArrayNode(params);\n }\n\n /**\n * parse an object, enclosed in angle brackets{...}, for example {value: 2}\n * @return {Node} node\n * @private\n */\n function parseObject(state) {\n if (state.token === '{') {\n openParams(state);\n var key;\n var properties = {};\n do {\n getToken(state);\n if (state.token !== '}') {\n // parse key\n if (state.token === '\"' || state.token === \"'\") {\n key = parseStringToken(state, state.token);\n } else if (state.tokenType === TOKENTYPE.SYMBOL || state.tokenType === TOKENTYPE.DELIMITER && state.token in NAMED_DELIMITERS) {\n key = state.token;\n getToken(state);\n } else {\n throw createSyntaxError(state, 'Symbol or string expected as object key');\n }\n\n // parse key/value separator\n if (state.token !== ':') {\n throw createSyntaxError(state, 'Colon : expected after object key');\n }\n getToken(state);\n\n // parse key\n properties[key] = parseAssignment(state);\n }\n } while (state.token === ','); // eslint-disable-line no-unmodified-loop-condition\n\n if (state.token !== '}') {\n throw createSyntaxError(state, 'Comma , or bracket } expected after object value');\n }\n closeParams(state);\n getToken(state);\n var node = new ObjectNode(properties);\n\n // parse index parameters\n node = parseAccessors(state, node);\n return node;\n }\n return parseNumber(state);\n }\n\n /**\n * parse a number\n * @return {Node} node\n * @private\n */\n function parseNumber(state) {\n var numberStr;\n if (state.tokenType === TOKENTYPE.NUMBER) {\n // this is a number\n numberStr = state.token;\n getToken(state);\n var numericType = safeNumberType(numberStr, config);\n var value = numeric(numberStr, numericType);\n return new ConstantNode(value);\n }\n return parseParentheses(state);\n }\n\n /**\n * parentheses\n * @return {Node} node\n * @private\n */\n function parseParentheses(state) {\n var node;\n\n // check if it is a parenthesized expression\n if (state.token === '(') {\n // parentheses (...)\n openParams(state);\n getToken(state);\n node = parseAssignment(state); // start again\n\n if (state.token !== ')') {\n throw createSyntaxError(state, 'Parenthesis ) expected');\n }\n closeParams(state);\n getToken(state);\n node = new ParenthesisNode(node);\n node = parseAccessors(state, node);\n return node;\n }\n return parseEnd(state);\n }\n\n /**\n * Evaluated when the expression is not yet ended but expected to end\n * @return {Node} res\n * @private\n */\n function parseEnd(state) {\n if (state.token === '') {\n // syntax error or unexpected end of expression\n throw createSyntaxError(state, 'Unexpected end of expression');\n } else {\n throw createSyntaxError(state, 'Value expected');\n }\n }\n\n /**\n * Shortcut for getting the current row value (one based)\n * Returns the line of the currently handled expression\n * @private\n */\n /* TODO: implement keeping track on the row number\n function row () {\n return null\n }\n */\n\n /**\n * Shortcut for getting the current col value (one based)\n * Returns the column (position) where the last state.token starts\n * @private\n */\n function col(state) {\n return state.index - state.token.length + 1;\n }\n\n /**\n * Create an error\n * @param {Object} state\n * @param {string} message\n * @return {SyntaxError} instantiated error\n * @private\n */\n function createSyntaxError(state, message) {\n var c = col(state);\n var error = new SyntaxError(message + ' (char ' + c + ')');\n error.char = c;\n return error;\n }\n\n /**\n * Create an error\n * @param {Object} state\n * @param {string} message\n * @return {Error} instantiated error\n * @private\n */\n function createError(state, message) {\n var c = col(state);\n var error = new SyntaxError(message + ' (char ' + c + ')');\n error.char = c;\n return error;\n }\n\n // Now that we can parse, automatically convert strings to Nodes by parsing\n typed.addConversion({\n from: 'string',\n to: 'Node',\n convert: parse\n });\n return parse;\n});", "import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'compile';\nvar dependencies = ['typed', 'parse'];\nexport var createCompile = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n parse\n } = _ref;\n /**\n * Parse and compile an expression.\n * Returns a an object with a function `evaluate([scope])` to evaluate the\n * compiled expression.\n *\n * Syntax:\n *\n * math.compile(expr) // returns one node\n * math.compile([expr1, expr2, expr3, ...]) // returns an array with nodes\n *\n * Examples:\n *\n * const code1 = math.compile('sqrt(3^2 + 4^2)')\n * code1.evaluate() // 5\n *\n * let scope = {a: 3, b: 4}\n * const code2 = math.compile('a * b') // 12\n * code2.evaluate(scope) // 12\n * scope.a = 5\n * code2.evaluate(scope) // 20\n *\n * const nodes = math.compile(['a = 3', 'b = 4', 'a * b'])\n * nodes[2].evaluate() // 12\n *\n * See also:\n *\n * parse, evaluate\n *\n * @param {string | string[] | Array | Matrix} expr\n * The expression to be compiled\n * @return {{evaluate: Function} | Array.<{evaluate: Function}>} code\n * An object with the compiled expression\n * @throws {Error}\n */\n return typed(name, {\n string: function string(expr) {\n return parse(expr).compile();\n },\n 'Array | Matrix': function Array__Matrix(expr) {\n return deepMap(expr, function (entry) {\n return parse(entry).compile();\n });\n }\n });\n});", "import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { createEmptyMap } from '../../utils/map.js';\nvar name = 'evaluate';\nvar dependencies = ['typed', 'parse'];\nexport var createEvaluate = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n parse\n } = _ref;\n /**\n * Evaluate an expression.\n *\n * The expression parser does not use JavaScript. Its syntax is close\n * to JavaScript but more suited for mathematical expressions.\n * See [https://mathjs.org/docs/expressions/syntax.html](https://mathjs.org/docs/expressions/syntax.html) to learn\n * the syntax and get an overview of the exact differences from JavaScript.\n *\n * Note the evaluating arbitrary expressions may involve security risks,\n * see [https://mathjs.org/docs/expressions/security.html](https://mathjs.org/docs/expressions/security.html) for more information.\n *\n * Syntax:\n *\n * math.evaluate(expr)\n * math.evaluate(expr, scope)\n * math.evaluate([expr1, expr2, expr3, ...])\n * math.evaluate([expr1, expr2, expr3, ...], scope)\n *\n * Example:\n *\n * math.evaluate('(2+3)/4') // 1.25\n * math.evaluate('sqrt(3^2 + 4^2)') // 5\n * math.evaluate('sqrt(-4)') // 2i\n * math.evaluate(['a=3', 'b=4', 'a*b']) // [3, 4, 12]\n *\n * let scope = {a:3, b:4}\n * math.evaluate('a * b', scope) // 12\n *\n * See also:\n *\n * parse, compile\n *\n * @param {string | string[] | Matrix} expr The expression to be evaluated\n * @param {Object} [scope] Scope to read/write variables\n * @return {*} The result of the expression\n * @throws {Error}\n */\n return typed(name, {\n string: function string(expr) {\n var scope = createEmptyMap();\n return parse(expr).compile().evaluate(scope);\n },\n 'string, Map | Object': function string_Map__Object(expr, scope) {\n return parse(expr).compile().evaluate(scope);\n },\n 'Array | Matrix': function Array__Matrix(expr) {\n var scope = createEmptyMap();\n return deepMap(expr, function (entry) {\n return parse(entry).compile().evaluate(scope);\n });\n },\n 'Array | Matrix, Map | Object': function Array__Matrix_Map__Object(expr, scope) {\n return deepMap(expr, function (entry) {\n return parse(entry).compile().evaluate(scope);\n });\n }\n });\n});", "import { factory } from '../utils/factory.js';\nimport { createEmptyMap, toObject } from '../utils/map.js';\nvar name = 'Parser';\nvar dependencies = ['evaluate', 'parse'];\nexport var createParserClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n evaluate,\n parse\n } = _ref;\n /**\n * @constructor Parser\n * Parser contains methods to evaluate or parse expressions, and has a number\n * of convenience methods to get, set, and remove variables from memory. Parser\n * keeps a scope containing variables in memory, which is used for all\n * evaluations.\n *\n * Methods:\n * const result = parser.evaluate(expr) // evaluate an expression\n * const value = parser.get(name) // retrieve a variable from the parser\n * const values = parser.getAll() // retrieve all defined variables\n * parser.set(name, value) // set a variable in the parser\n * parser.remove(name) // clear a variable from the\n * // parsers scope\n * parser.clear() // clear the parsers scope\n *\n * Example usage:\n * const parser = new Parser()\n * // Note: there is a convenience method which can be used instead:\n * // const parser = new math.parser()\n *\n * // evaluate expressions\n * parser.evaluate('sqrt(3^2 + 4^2)') // 5\n * parser.evaluate('sqrt(-4)') // 2i\n * parser.evaluate('2 inch in cm') // 5.08 cm\n * parser.evaluate('cos(45 deg)') // 0.7071067811865476\n *\n * // define variables and functions\n * parser.evaluate('x = 7 / 2') // 3.5\n * parser.evaluate('x + 3') // 6.5\n * parser.evaluate('f(x, y) = x^y') // f(x, y)\n * parser.evaluate('f(2, 3)') // 8\n *\n * // get and set variables and functions\n * const x = parser.get('x') // 3.5\n * const f = parser.get('f') // function\n * const g = f(3, 2) // 9\n * parser.set('h', 500)\n * const i = parser.evaluate('h / 2') // 250\n * parser.set('hello', function (name) {\n * return 'hello, ' + name + '!'\n * })\n * parser.evaluate('hello(\"user\")') // \"hello, user!\"\n *\n * // clear defined functions and variables\n * parser.clear()\n *\n */\n function Parser() {\n if (!(this instanceof Parser)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n Object.defineProperty(this, 'scope', {\n value: createEmptyMap(),\n writable: false\n });\n }\n\n /**\n * Attach type information\n */\n Parser.prototype.type = 'Parser';\n Parser.prototype.isParser = true;\n\n /**\n * Parse and evaluate the given expression\n * @param {string | string[]} expr A string containing an expression,\n * for example \"2+3\", or a list with expressions\n * @return {*} result The result, or undefined when the expression was empty\n * @throws {Error}\n */\n Parser.prototype.evaluate = function (expr) {\n // TODO: validate arguments\n return evaluate(expr, this.scope);\n };\n\n /**\n * Get a variable (a function or variable) by name from the parsers scope.\n * Returns undefined when not found\n * @param {string} name\n * @return {* | undefined} value\n */\n Parser.prototype.get = function (name) {\n // TODO: validate arguments\n if (this.scope.has(name)) {\n return this.scope.get(name);\n }\n };\n\n /**\n * Get a map with all defined variables\n * @return {Object} values\n */\n Parser.prototype.getAll = function () {\n return toObject(this.scope);\n };\n\n /**\n * Get a map with all defined variables\n * @return {Map} values\n */\n Parser.prototype.getAllAsMap = function () {\n return this.scope;\n };\n function isValidVariableName(name) {\n if (name.length === 0) {\n return false;\n }\n for (var i = 0; i < name.length; i++) {\n var cPrev = name.charAt(i - 1);\n var c = name.charAt(i);\n var cNext = name.charAt(i + 1);\n var valid = parse.isAlpha(c, cPrev, cNext) || i > 0 && parse.isDigit(c);\n if (!valid) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Set a symbol (a function or variable) by name from the parsers scope.\n * @param {string} name\n * @param {* | undefined} value\n */\n Parser.prototype.set = function (name, value) {\n if (!isValidVariableName(name)) {\n throw new Error(\"Invalid variable name: '\".concat(name, \"'. Variable names must follow the specified rules.\"));\n }\n this.scope.set(name, value);\n return value;\n };\n\n /**\n * Remove a variable from the parsers scope\n * @param {string} name\n */\n Parser.prototype.remove = function (name) {\n this.scope.delete(name);\n };\n\n /**\n * Clear the scope with variables and functions\n */\n Parser.prototype.clear = function () {\n this.scope.clear();\n };\n return Parser;\n}, {\n isClass: true\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'parser';\nvar dependencies = ['typed', 'Parser'];\nexport var createParser = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Parser\n } = _ref;\n /**\n * Create a parser. The function creates a new `math.Parser` object.\n *\n * Syntax:\n *\n * math.parser()\n *\n * Examples:\n *\n * const parser = new math.parser()\n *\n * // evaluate expressions\n * const a = parser.evaluate('sqrt(3^2 + 4^2)') // 5\n * const b = parser.evaluate('sqrt(-4)') // 2i\n * const c = parser.evaluate('2 inch in cm') // 5.08 cm\n * const d = parser.evaluate('cos(45 deg)') // 0.7071067811865476\n *\n * // define variables and functions\n * parser.evaluate('x = 7 / 2') // 3.5\n * parser.evaluate('x + 3') // 6.5\n * parser.evaluate('f(x, y) = x^y') // f(x, y)\n * parser.evaluate('f(2, 3)') // 8\n *\n * // get and set variables and functions\n * const x = parser.get('x') // 3.5\n * const f = parser.get('f') // function\n * const g = f(3, 2) // 9\n * parser.set('h', 500)\n * const i = parser.evaluate('h / 2') // 250\n * parser.set('hello', function (name) {\n * return 'hello, ' + name + '!'\n * })\n * parser.evaluate('hello(\"user\")') // \"hello, user!\"\n *\n * // clear defined functions and variables\n * parser.clear()\n *\n * See also:\n *\n * evaluate, compile, parse\n *\n * @return {Parser} Parser\n */\n return typed(name, {\n '': function _() {\n return new Parser();\n }\n });\n});", "import { clone } from '../../../utils/object.js';\nimport { factory } from '../../../utils/factory.js';\nvar name = 'lup';\nvar dependencies = ['typed', 'matrix', 'abs', 'addScalar', 'divideScalar', 'multiplyScalar', 'subtractScalar', 'larger', 'equalScalar', 'unaryMinus', 'DenseMatrix', 'SparseMatrix', 'Spa'];\nexport var createLup = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n abs,\n addScalar,\n divideScalar,\n multiplyScalar,\n subtractScalar,\n larger,\n equalScalar,\n unaryMinus,\n DenseMatrix,\n SparseMatrix,\n Spa\n } = _ref;\n /**\n * Calculate the Matrix LU decomposition with partial pivoting. Matrix `A` is decomposed in two matrices (`L`, `U`) and a\n * row permutation vector `p` where `A[p,:] = L * U`\n *\n * Syntax:\n *\n * math.lup(A)\n *\n * Example:\n *\n * const m = [[2, 1], [1, 4]]\n * const r = math.lup(m)\n * // r = {\n * // L: [[1, 0], [0.5, 1]],\n * // U: [[2, 1], [0, 3.5]],\n * // P: [0, 1]\n * // }\n *\n * See also:\n *\n * slu, lsolve, lusolve, usolve\n *\n * @param {Matrix | Array} A A two dimensional matrix or array for which to get the LUP decomposition.\n *\n * @return {{L: Array | Matrix, U: Array | Matrix, P: Array.}} The lower triangular matrix, the upper triangular matrix and the permutation matrix.\n */\n return typed(name, {\n DenseMatrix: function DenseMatrix(m) {\n return _denseLUP(m);\n },\n SparseMatrix: function SparseMatrix(m) {\n return _sparseLUP(m);\n },\n Array: function Array(a) {\n // create dense matrix from array\n var m = matrix(a);\n // lup, use matrix implementation\n var r = _denseLUP(m);\n // result\n return {\n L: r.L.valueOf(),\n U: r.U.valueOf(),\n p: r.p\n };\n }\n });\n function _denseLUP(m) {\n // rows & columns\n var rows = m._size[0];\n var columns = m._size[1];\n // minimum rows and columns\n var n = Math.min(rows, columns);\n // matrix array, clone original data\n var data = clone(m._data);\n // l matrix arrays\n var ldata = [];\n var lsize = [rows, n];\n // u matrix arrays\n var udata = [];\n var usize = [n, columns];\n // vars\n var i, j, k;\n // permutation vector\n var p = [];\n for (i = 0; i < rows; i++) {\n p[i] = i;\n }\n // loop columns\n for (j = 0; j < columns; j++) {\n // skip first column in upper triangular matrix\n if (j > 0) {\n // loop rows\n for (i = 0; i < rows; i++) {\n // min i,j\n var min = Math.min(i, j);\n // v[i, j]\n var s = 0;\n // loop up to min\n for (k = 0; k < min; k++) {\n // s = l[i, k] - data[k, j]\n s = addScalar(s, multiplyScalar(data[i][k], data[k][j]));\n }\n data[i][j] = subtractScalar(data[i][j], s);\n }\n }\n // row with larger value in cvector, row >= j\n var pi = j;\n var pabsv = 0;\n var vjj = 0;\n // loop rows\n for (i = j; i < rows; i++) {\n // data @ i, j\n var v = data[i][j];\n // absolute value\n var absv = abs(v);\n // value is greater than pivote value\n if (larger(absv, pabsv)) {\n // store row\n pi = i;\n // update max value\n pabsv = absv;\n // value @ [j, j]\n vjj = v;\n }\n }\n // swap rows (j <-> pi)\n if (j !== pi) {\n // swap values j <-> pi in p\n p[j] = [p[pi], p[pi] = p[j]][0];\n // swap j <-> pi in data\n DenseMatrix._swapRows(j, pi, data);\n }\n // check column is in lower triangular matrix\n if (j < rows) {\n // loop rows (lower triangular matrix)\n for (i = j + 1; i < rows; i++) {\n // value @ i, j\n var vij = data[i][j];\n if (!equalScalar(vij, 0)) {\n // update data\n data[i][j] = divideScalar(data[i][j], vjj);\n }\n }\n }\n }\n // loop columns\n for (j = 0; j < columns; j++) {\n // loop rows\n for (i = 0; i < rows; i++) {\n // initialize row in arrays\n if (j === 0) {\n // check row exists in upper triangular matrix\n if (i < columns) {\n // U\n udata[i] = [];\n }\n // L\n ldata[i] = [];\n }\n // check we are in the upper triangular matrix\n if (i < j) {\n // check row exists in upper triangular matrix\n if (i < columns) {\n // U\n udata[i][j] = data[i][j];\n }\n // check column exists in lower triangular matrix\n if (j < rows) {\n // L\n ldata[i][j] = 0;\n }\n continue;\n }\n // diagonal value\n if (i === j) {\n // check row exists in upper triangular matrix\n if (i < columns) {\n // U\n udata[i][j] = data[i][j];\n }\n // check column exists in lower triangular matrix\n if (j < rows) {\n // L\n ldata[i][j] = 1;\n }\n continue;\n }\n // check row exists in upper triangular matrix\n if (i < columns) {\n // U\n udata[i][j] = 0;\n }\n // check column exists in lower triangular matrix\n if (j < rows) {\n // L\n ldata[i][j] = data[i][j];\n }\n }\n }\n // l matrix\n var l = new DenseMatrix({\n data: ldata,\n size: lsize\n });\n // u matrix\n var u = new DenseMatrix({\n data: udata,\n size: usize\n });\n // p vector\n var pv = [];\n for (i = 0, n = p.length; i < n; i++) {\n pv[p[i]] = i;\n }\n // return matrices\n return {\n L: l,\n U: u,\n p: pv,\n toString: function toString() {\n return 'L: ' + this.L.toString() + '\\nU: ' + this.U.toString() + '\\nP: ' + this.p;\n }\n };\n }\n function _sparseLUP(m) {\n // rows & columns\n var rows = m._size[0];\n var columns = m._size[1];\n // minimum rows and columns\n var n = Math.min(rows, columns);\n // matrix arrays (will not be modified, thanks to permutation vector)\n var values = m._values;\n var index = m._index;\n var ptr = m._ptr;\n // l matrix arrays\n var lvalues = [];\n var lindex = [];\n var lptr = [];\n var lsize = [rows, n];\n // u matrix arrays\n var uvalues = [];\n var uindex = [];\n var uptr = [];\n var usize = [n, columns];\n // vars\n var i, j, k;\n // permutation vectors, (current index -> original index) and (original index -> current index)\n var pvCo = [];\n var pvOc = [];\n for (i = 0; i < rows; i++) {\n pvCo[i] = i;\n pvOc[i] = i;\n }\n // swap indices in permutation vectors (condition x < y)!\n var swapIndeces = function swapIndeces(x, y) {\n // find pv indeces getting data from x and y\n var kx = pvOc[x];\n var ky = pvOc[y];\n // update permutation vector current -> original\n pvCo[kx] = y;\n pvCo[ky] = x;\n // update permutation vector original -> current\n pvOc[x] = ky;\n pvOc[y] = kx;\n };\n // loop columns\n var _loop = function _loop() {\n // sparse accumulator\n var spa = new Spa();\n // check lower triangular matrix has a value @ column j\n if (j < rows) {\n // update ptr\n lptr.push(lvalues.length);\n // first value in j column for lower triangular matrix\n lvalues.push(1);\n lindex.push(j);\n }\n // update ptr\n uptr.push(uvalues.length);\n // k0 <= k < k1 where k0 = _ptr[j] && k1 = _ptr[j+1]\n var k0 = ptr[j];\n var k1 = ptr[j + 1];\n // copy column j into sparse accumulator\n for (k = k0; k < k1; k++) {\n // row\n i = index[k];\n // copy column values into sparse accumulator (use permutation vector)\n spa.set(pvCo[i], values[k]);\n }\n // skip first column in upper triangular matrix\n if (j > 0) {\n // loop rows in column j (above diagonal)\n spa.forEach(0, j - 1, function (k, vkj) {\n // loop rows in column k (L)\n SparseMatrix._forEachRow(k, lvalues, lindex, lptr, function (i, vik) {\n // check row is below k\n if (i > k) {\n // update spa value\n spa.accumulate(i, unaryMinus(multiplyScalar(vik, vkj)));\n }\n });\n });\n }\n // row with larger value in spa, row >= j\n var pi = j;\n var vjj = spa.get(j);\n var pabsv = abs(vjj);\n // loop values in spa (order by row, below diagonal)\n spa.forEach(j + 1, rows - 1, function (x, v) {\n // absolute value\n var absv = abs(v);\n // value is greater than pivote value\n if (larger(absv, pabsv)) {\n // store row\n pi = x;\n // update max value\n pabsv = absv;\n // value @ [j, j]\n vjj = v;\n }\n });\n // swap rows (j <-> pi)\n if (j !== pi) {\n // swap values j <-> pi in L\n SparseMatrix._swapRows(j, pi, lsize[1], lvalues, lindex, lptr);\n // swap values j <-> pi in U\n SparseMatrix._swapRows(j, pi, usize[1], uvalues, uindex, uptr);\n // swap values in spa\n spa.swap(j, pi);\n // update permutation vector (swap values @ j, pi)\n swapIndeces(j, pi);\n }\n // loop values in spa (order by row)\n spa.forEach(0, rows - 1, function (x, v) {\n // check we are above diagonal\n if (x <= j) {\n // update upper triangular matrix\n uvalues.push(v);\n uindex.push(x);\n } else {\n // update value\n v = divideScalar(v, vjj);\n // check value is non zero\n if (!equalScalar(v, 0)) {\n // update lower triangular matrix\n lvalues.push(v);\n lindex.push(x);\n }\n }\n });\n };\n for (j = 0; j < columns; j++) {\n _loop();\n }\n // update ptrs\n uptr.push(uvalues.length);\n lptr.push(lvalues.length);\n\n // return matrices\n return {\n L: new SparseMatrix({\n values: lvalues,\n index: lindex,\n ptr: lptr,\n size: lsize\n }),\n U: new SparseMatrix({\n values: uvalues,\n index: uindex,\n ptr: uptr,\n size: usize\n }),\n p: pvCo,\n toString: function toString() {\n return 'L: ' + this.L.toString() + '\\nU: ' + this.U.toString() + '\\nP: ' + this.p;\n }\n };\n }\n});", "import _extends from \"@babel/runtime/helpers/extends\";\nimport { factory } from '../../../utils/factory.js';\nvar name = 'qr';\nvar dependencies = ['typed', 'matrix', 'zeros', 'identity', 'isZero', 'equal', 'sign', 'sqrt', 'conj', 'unaryMinus', 'addScalar', 'divideScalar', 'multiplyScalar', 'subtractScalar', 'complex'];\nexport var createQr = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n zeros,\n identity,\n isZero,\n equal,\n sign,\n sqrt,\n conj,\n unaryMinus,\n addScalar,\n divideScalar,\n multiplyScalar,\n subtractScalar,\n complex\n } = _ref;\n /**\n * Calculate the Matrix QR decomposition. Matrix `A` is decomposed in\n * two matrices (`Q`, `R`) where `Q` is an\n * orthogonal matrix and `R` is an upper triangular matrix.\n *\n * Syntax:\n *\n * math.qr(A)\n *\n * Example:\n *\n * const m = [\n * [1, -1, 4],\n * [1, 4, -2],\n * [1, 4, 2],\n * [1, -1, 0]\n * ]\n * const result = math.qr(m)\n * // r = {\n * // Q: [\n * // [0.5, -0.5, 0.5],\n * // [0.5, 0.5, -0.5],\n * // [0.5, 0.5, 0.5],\n * // [0.5, -0.5, -0.5],\n * // ],\n * // R: [\n * // [2, 3, 2],\n * // [0, 5, -2],\n * // [0, 0, 4],\n * // [0, 0, 0]\n * // ]\n * // }\n *\n * See also:\n *\n * lup, lusolve\n *\n * @param {Matrix | Array} A A two dimensional matrix or array\n * for which to get the QR decomposition.\n *\n * @return {{Q: Array | Matrix, R: Array | Matrix}} Q: the orthogonal\n * matrix and R: the upper triangular matrix\n */\n return _extends(typed(name, {\n DenseMatrix: function DenseMatrix(m) {\n return _denseQR(m);\n },\n SparseMatrix: function SparseMatrix(m) {\n return _sparseQR(m);\n },\n Array: function Array(a) {\n // create dense matrix from array\n var m = matrix(a);\n // lup, use matrix implementation\n var r = _denseQR(m);\n // result\n return {\n Q: r.Q.valueOf(),\n R: r.R.valueOf()\n };\n }\n }), {\n _denseQRimpl\n });\n function _denseQRimpl(m) {\n // rows & columns (m x n)\n var rows = m._size[0]; // m\n var cols = m._size[1]; // n\n\n var Q = identity([rows], 'dense');\n var Qdata = Q._data;\n var R = m.clone();\n var Rdata = R._data;\n\n // vars\n var i, j, k;\n var w = zeros([rows], '');\n for (k = 0; k < Math.min(cols, rows); ++k) {\n /*\n * **k-th Household matrix**\n *\n * The matrix I - 2*v*transpose(v)\n * x = first column of A\n * x1 = first element of x\n * alpha = x1 / |x1| * |x|\n * e1 = tranpose([1, 0, 0, ...])\n * u = x - alpha * e1\n * v = u / |u|\n *\n * Household matrix = I - 2 * v * tranpose(v)\n *\n * * Initially Q = I and R = A.\n * * Household matrix is a reflection in a plane normal to v which\n * will zero out all but the top right element in R.\n * * Appplying reflection to both Q and R will not change product.\n * * Repeat this process on the (1,1) minor to get R as an upper\n * triangular matrix.\n * * Reflections leave the magnitude of the columns of Q unchanged\n * so Q remains othoganal.\n *\n */\n\n var pivot = Rdata[k][k];\n var sgn = unaryMinus(equal(pivot, 0) ? 1 : sign(pivot));\n var conjSgn = conj(sgn);\n var alphaSquared = 0;\n for (i = k; i < rows; i++) {\n alphaSquared = addScalar(alphaSquared, multiplyScalar(Rdata[i][k], conj(Rdata[i][k])));\n }\n var alpha = multiplyScalar(sgn, sqrt(alphaSquared));\n if (!isZero(alpha)) {\n // first element in vector u\n var u1 = subtractScalar(pivot, alpha);\n\n // w = v * u1 / |u| (only elements k to (rows-1) are used)\n w[k] = 1;\n for (i = k + 1; i < rows; i++) {\n w[i] = divideScalar(Rdata[i][k], u1);\n }\n\n // tau = - conj(u1 / alpha)\n var tau = unaryMinus(conj(divideScalar(u1, alpha)));\n var s = void 0;\n\n /*\n * tau and w have been choosen so that\n *\n * 2 * v * tranpose(v) = tau * w * tranpose(w)\n */\n\n /*\n * -- calculate R = R - tau * w * tranpose(w) * R --\n * Only do calculation with rows k to (rows-1)\n * Additionally columns 0 to (k-1) will not be changed by this\n * multiplication so do not bother recalculating them\n */\n for (j = k; j < cols; j++) {\n s = 0.0;\n\n // calculate jth element of [tranpose(w) * R]\n for (i = k; i < rows; i++) {\n s = addScalar(s, multiplyScalar(conj(w[i]), Rdata[i][j]));\n }\n\n // calculate the jth element of [tau * transpose(w) * R]\n s = multiplyScalar(s, tau);\n for (i = k; i < rows; i++) {\n Rdata[i][j] = multiplyScalar(subtractScalar(Rdata[i][j], multiplyScalar(w[i], s)), conjSgn);\n }\n }\n /*\n * -- calculate Q = Q - tau * Q * w * transpose(w) --\n * Q is a square matrix (rows x rows)\n * Only do calculation with columns k to (rows-1)\n * Additionally rows 0 to (k-1) will not be changed by this\n * multiplication so do not bother recalculating them\n */\n for (i = 0; i < rows; i++) {\n s = 0.0;\n\n // calculate ith element of [Q * w]\n for (j = k; j < rows; j++) {\n s = addScalar(s, multiplyScalar(Qdata[i][j], w[j]));\n }\n\n // calculate the ith element of [tau * Q * w]\n s = multiplyScalar(s, tau);\n for (j = k; j < rows; ++j) {\n Qdata[i][j] = divideScalar(subtractScalar(Qdata[i][j], multiplyScalar(s, conj(w[j]))), conjSgn);\n }\n }\n }\n }\n\n // return matrices\n return {\n Q,\n R,\n toString: function toString() {\n return 'Q: ' + this.Q.toString() + '\\nR: ' + this.R.toString();\n }\n };\n }\n function _denseQR(m) {\n var ret = _denseQRimpl(m);\n var Rdata = ret.R._data;\n if (m._data.length > 0) {\n var zero = Rdata[0][0].type === 'Complex' ? complex(0) : 0;\n for (var i = 0; i < Rdata.length; ++i) {\n for (var j = 0; j < i && j < (Rdata[0] || []).length; ++j) {\n Rdata[i][j] = zero;\n }\n }\n }\n return ret;\n }\n function _sparseQR(m) {\n throw new Error('qr not implemented for sparse matrices yet');\n }\n});", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\n\n/**\n * Permutes a sparse matrix C = P * A * Q\n *\n * @param {SparseMatrix} a The Matrix A\n * @param {Array} pinv The row permutation vector\n * @param {Array} q The column permutation vector\n * @param {boolean} values Create a pattern matrix (false), values and pattern otherwise\n *\n * @return {Matrix} C = P * A * Q, null on error\n */\nexport function csPermute(a, pinv, q, values) {\n // a arrays\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n var asize = a._size;\n var adt = a._datatype;\n // rows & columns\n var m = asize[0];\n var n = asize[1];\n // c arrays\n var cvalues = values && a._values ? [] : null;\n var cindex = []; // (aptr[n])\n var cptr = []; // (n + 1)\n // initialize vars\n var nz = 0;\n // loop columns\n for (var k = 0; k < n; k++) {\n // column k of C is column q[k] of A\n cptr[k] = nz;\n // apply column permutation\n var j = q ? q[k] : k;\n // loop values in column j of A\n for (var t0 = aptr[j], t1 = aptr[j + 1], t = t0; t < t1; t++) {\n // row i of A is row pinv[i] of C\n var r = pinv ? pinv[aindex[t]] : aindex[t];\n // index\n cindex[nz] = r;\n // check we need to populate values\n if (cvalues) {\n cvalues[nz] = avalues[t];\n }\n // increment number of nonzero elements\n nz++;\n }\n }\n // finalize the last column of C\n cptr[n] = nz;\n // return C matrix\n return a.createSparseMatrix({\n values: cvalues,\n index: cindex,\n ptr: cptr,\n size: [m, n],\n datatype: adt\n });\n}", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\n\n/**\n * Depth-first search and postorder of a tree rooted at node j\n *\n * @param {Number} j The tree node\n * @param {Number} k\n * @param {Array} w The workspace array\n * @param {Number} head The index offset within the workspace for the head array\n * @param {Number} next The index offset within the workspace for the next array\n * @param {Array} post The post ordering array\n * @param {Number} stack The index offset within the workspace for the stack array\n */\nexport function csTdfs(j, k, w, head, next, post, stack) {\n // variables\n var top = 0;\n // place j on the stack\n w[stack] = j;\n // while (stack is not empty)\n while (top >= 0) {\n // p = top of stack\n var p = w[stack + top];\n // i = youngest child of p\n var i = w[head + p];\n if (i === -1) {\n // p has no unordered children left\n top--;\n // node p is the kth postordered node\n post[k++] = p;\n } else {\n // remove i from children of p\n w[head + p] = w[next + i];\n // increment top\n ++top;\n // start dfs on child node i\n w[stack + top] = i;\n }\n }\n return k;\n}", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\nimport { csTdfs } from './csTdfs.js';\n\n/**\n * Post order a tree of forest\n *\n * @param {Array} parent The tree or forest\n * @param {Number} n Number of columns\n */\nexport function csPost(parent, n) {\n // check inputs\n if (!parent) {\n return null;\n }\n // vars\n var k = 0;\n var j;\n // allocate result\n var post = []; // (n)\n // workspace, head: first n entries, next: next n entries, stack: last n entries\n var w = []; // (3 * n)\n var head = 0;\n var next = n;\n var stack = 2 * n;\n // initialize workspace\n for (j = 0; j < n; j++) {\n // empty linked lists\n w[head + j] = -1;\n }\n // traverse nodes in reverse order\n for (j = n - 1; j >= 0; j--) {\n // check j is a root\n if (parent[j] === -1) {\n continue;\n }\n // add j to list of its parent\n w[next + j] = w[head + parent[j]];\n w[head + parent[j]] = j;\n }\n // loop nodes\n for (j = 0; j < n; j++) {\n // skip j if it is not a root\n if (parent[j] !== -1) {\n continue;\n }\n // depth-first search\n k = csTdfs(j, k, w, head, next, post, stack);\n }\n return post;\n}", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\n\n/**\n * Computes the elimination tree of Matrix A (using triu(A)) or the\n * elimination tree of A'A without forming A'A.\n *\n * @param {Matrix} a The A Matrix\n * @param {boolean} ata A value of true the function computes the etree of A'A\n */\nexport function csEtree(a, ata) {\n // check inputs\n if (!a) {\n return null;\n }\n // a arrays\n var aindex = a._index;\n var aptr = a._ptr;\n var asize = a._size;\n // rows & columns\n var m = asize[0];\n var n = asize[1];\n\n // allocate result\n var parent = []; // (n)\n\n // allocate workspace\n var w = []; // (n + (ata ? m : 0))\n var ancestor = 0; // first n entries in w\n var prev = n; // last m entries (ata = true)\n\n var i, inext;\n\n // check we are calculating A'A\n if (ata) {\n // initialize workspace\n for (i = 0; i < m; i++) {\n w[prev + i] = -1;\n }\n }\n // loop columns\n for (var k = 0; k < n; k++) {\n // node k has no parent yet\n parent[k] = -1;\n // nor does k have an ancestor\n w[ancestor + k] = -1;\n // values in column k\n for (var p0 = aptr[k], p1 = aptr[k + 1], p = p0; p < p1; p++) {\n // row\n var r = aindex[p];\n // node\n i = ata ? w[prev + r] : r;\n // traverse from i to k\n for (; i !== -1 && i < k; i = inext) {\n // inext = ancestor of i\n inext = w[ancestor + i];\n // path compression\n w[ancestor + i] = k;\n // check no anc., parent is k\n if (inext === -1) {\n parent[i] = k;\n }\n }\n if (ata) {\n w[prev + r] = k;\n }\n }\n }\n return parent;\n}", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\n\n/**\n * Keeps entries in the matrix when the callback function returns true, removes the entry otherwise\n *\n * @param {Matrix} a The sparse matrix\n * @param {function} callback The callback function, function will be invoked with the following args:\n * - The entry row\n * - The entry column\n * - The entry value\n * - The state parameter\n * @param {any} other The state\n *\n * @return The number of nonzero elements in the matrix\n */\nexport function csFkeep(a, callback, other) {\n // a arrays\n var avalues = a._values;\n var aindex = a._index;\n var aptr = a._ptr;\n var asize = a._size;\n // columns\n var n = asize[1];\n // nonzero items\n var nz = 0;\n // loop columns\n for (var j = 0; j < n; j++) {\n // get current location of col j\n var p = aptr[j];\n // record new location of col j\n aptr[j] = nz;\n for (; p < aptr[j + 1]; p++) {\n // check we need to keep this item\n if (callback(aindex[p], j, avalues ? avalues[p] : 1, other)) {\n // keep A(i,j)\n aindex[nz] = aindex[p];\n // check we need to process values (pattern only)\n if (avalues) {\n avalues[nz] = avalues[p];\n }\n // increment nonzero items\n nz++;\n }\n }\n }\n // finalize A\n aptr[n] = nz;\n // trim arrays\n aindex.splice(nz, aindex.length - nz);\n // check we need to process values (pattern only)\n if (avalues) {\n avalues.splice(nz, avalues.length - nz);\n }\n // return number of nonzero items\n return nz;\n}", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\n\n/**\n * This function \"flips\" its input about the integer -1.\n *\n * @param {Number} i The value to flip\n */\nexport function csFlip(i) {\n // flip the value\n return -i - 2;\n}", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\nimport { factory } from '../../../utils/factory.js';\nimport { csFkeep } from './csFkeep.js';\nimport { csFlip } from './csFlip.js';\nimport { csTdfs } from './csTdfs.js';\nvar name = 'csAmd';\nvar dependencies = ['add', 'multiply', 'transpose'];\nexport var createCsAmd = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n add,\n multiply,\n transpose\n } = _ref;\n /**\n * Approximate minimum degree ordering. The minimum degree algorithm is a widely used\n * heuristic for finding a permutation P so that P*A*P' has fewer nonzeros in its factorization\n * than A. It is a gready method that selects the sparsest pivot row and column during the course\n * of a right looking sparse Cholesky factorization.\n *\n * @param {Number} order 0: Natural, 1: Cholesky, 2: LU, 3: QR\n * @param {Matrix} m Sparse Matrix\n */\n return function csAmd(order, a) {\n // check input parameters\n if (!a || order <= 0 || order > 3) {\n return null;\n }\n // a matrix arrays\n var asize = a._size;\n // rows and columns\n var m = asize[0];\n var n = asize[1];\n // initialize vars\n var lemax = 0;\n // dense threshold\n var dense = Math.max(16, 10 * Math.sqrt(n));\n dense = Math.min(n - 2, dense);\n // create target matrix C\n var cm = _createTargetMatrix(order, a, m, n, dense);\n // drop diagonal entries\n csFkeep(cm, _diag, null);\n // C matrix arrays\n var cindex = cm._index;\n var cptr = cm._ptr;\n\n // number of nonzero elements in C\n var cnz = cptr[n];\n\n // allocate result (n+1)\n var P = [];\n\n // create workspace (8 * (n + 1))\n var W = [];\n var len = 0; // first n + 1 entries\n var nv = n + 1; // next n + 1 entries\n var next = 2 * (n + 1); // next n + 1 entries\n var head = 3 * (n + 1); // next n + 1 entries\n var elen = 4 * (n + 1); // next n + 1 entries\n var degree = 5 * (n + 1); // next n + 1 entries\n var w = 6 * (n + 1); // next n + 1 entries\n var hhead = 7 * (n + 1); // last n + 1 entries\n\n // use P as workspace for last\n var last = P;\n\n // initialize quotient graph\n var mark = _initializeQuotientGraph(n, cptr, W, len, head, last, next, hhead, nv, w, elen, degree);\n\n // initialize degree lists\n var nel = _initializeDegreeLists(n, cptr, W, degree, elen, w, dense, nv, head, last, next);\n\n // minimum degree node\n var mindeg = 0;\n\n // vars\n var i, j, k, k1, k2, e, pj, ln, nvi, pk, eln, p1, p2, pn, h, d;\n\n // while (selecting pivots) do\n while (nel < n) {\n // select node of minimum approximate degree. amd() is now ready to start eliminating the graph. It first\n // finds a node k of minimum degree and removes it from its degree list. The variable nel keeps track of thow\n // many nodes have been eliminated.\n for (k = -1; mindeg < n && (k = W[head + mindeg]) === -1; mindeg++);\n if (W[next + k] !== -1) {\n last[W[next + k]] = -1;\n }\n // remove k from degree list\n W[head + mindeg] = W[next + k];\n // elenk = |Ek|\n var elenk = W[elen + k];\n // # of nodes k represents\n var nvk = W[nv + k];\n // W[nv + k] nodes of A eliminated\n nel += nvk;\n\n // Construct a new element. The new element Lk is constructed in place if |Ek| = 0. nv[i] is\n // negated for all nodes i in Lk to flag them as members of this set. Each node i is removed from the\n // degree lists. All elements e in Ek are absorved into element k.\n var dk = 0;\n // flag k as in Lk\n W[nv + k] = -nvk;\n var p = cptr[k];\n // do in place if W[elen + k] === 0\n var pk1 = elenk === 0 ? p : cnz;\n var pk2 = pk1;\n for (k1 = 1; k1 <= elenk + 1; k1++) {\n if (k1 > elenk) {\n // search the nodes in k\n e = k;\n // list of nodes starts at cindex[pj]\n pj = p;\n // length of list of nodes in k\n ln = W[len + k] - elenk;\n } else {\n // search the nodes in e\n e = cindex[p++];\n pj = cptr[e];\n // length of list of nodes in e\n ln = W[len + e];\n }\n for (k2 = 1; k2 <= ln; k2++) {\n i = cindex[pj++];\n // check node i dead, or seen\n if ((nvi = W[nv + i]) <= 0) {\n continue;\n }\n // W[degree + Lk] += size of node i\n dk += nvi;\n // negate W[nv + i] to denote i in Lk\n W[nv + i] = -nvi;\n // place i in Lk\n cindex[pk2++] = i;\n if (W[next + i] !== -1) {\n last[W[next + i]] = last[i];\n }\n // check we need to remove i from degree list\n if (last[i] !== -1) {\n W[next + last[i]] = W[next + i];\n } else {\n W[head + W[degree + i]] = W[next + i];\n }\n }\n if (e !== k) {\n // absorb e into k\n cptr[e] = csFlip(k);\n // e is now a dead element\n W[w + e] = 0;\n }\n }\n // cindex[cnz...nzmax] is free\n if (elenk !== 0) {\n cnz = pk2;\n }\n // external degree of k - |Lk\\i|\n W[degree + k] = dk;\n // element k is in cindex[pk1..pk2-1]\n cptr[k] = pk1;\n W[len + k] = pk2 - pk1;\n // k is now an element\n W[elen + k] = -2;\n\n // Find set differences. The scan1 function now computes the set differences |Le \\ Lk| for all elements e. At the start of the\n // scan, no entry in the w array is greater than or equal to mark.\n\n // clear w if necessary\n mark = _wclear(mark, lemax, W, w, n);\n // scan 1: find |Le\\Lk|\n for (pk = pk1; pk < pk2; pk++) {\n i = cindex[pk];\n // check if W[elen + i] empty, skip it\n if ((eln = W[elen + i]) <= 0) {\n continue;\n }\n // W[nv + i] was negated\n nvi = -W[nv + i];\n var wnvi = mark - nvi;\n // scan Ei\n for (p = cptr[i], p1 = cptr[i] + eln - 1; p <= p1; p++) {\n e = cindex[p];\n if (W[w + e] >= mark) {\n // decrement |Le\\Lk|\n W[w + e] -= nvi;\n } else if (W[w + e] !== 0) {\n // ensure e is a live element, 1st time e seen in scan 1\n W[w + e] = W[degree + e] + wnvi;\n }\n }\n }\n\n // degree update\n // The second pass computes the approximate degree di, prunes the sets Ei and Ai, and computes a hash\n // function h(i) for all nodes in Lk.\n\n // scan2: degree update\n for (pk = pk1; pk < pk2; pk++) {\n // consider node i in Lk\n i = cindex[pk];\n p1 = cptr[i];\n p2 = p1 + W[elen + i] - 1;\n pn = p1;\n // scan Ei\n for (h = 0, d = 0, p = p1; p <= p2; p++) {\n e = cindex[p];\n // check e is an unabsorbed element\n if (W[w + e] !== 0) {\n // dext = |Le\\Lk|\n var dext = W[w + e] - mark;\n if (dext > 0) {\n // sum up the set differences\n d += dext;\n // keep e in Ei\n cindex[pn++] = e;\n // compute the hash of node i\n h += e;\n } else {\n // aggressive absorb. e->k\n cptr[e] = csFlip(k);\n // e is a dead element\n W[w + e] = 0;\n }\n }\n }\n // W[elen + i] = |Ei|\n W[elen + i] = pn - p1 + 1;\n var p3 = pn;\n var p4 = p1 + W[len + i];\n // prune edges in Ai\n for (p = p2 + 1; p < p4; p++) {\n j = cindex[p];\n // check node j dead or in Lk\n var nvj = W[nv + j];\n if (nvj <= 0) {\n continue;\n }\n // degree(i) += |j|\n d += nvj;\n // place j in node list of i\n cindex[pn++] = j;\n // compute hash for node i\n h += j;\n }\n // check for mass elimination\n if (d === 0) {\n // absorb i into k\n cptr[i] = csFlip(k);\n nvi = -W[nv + i];\n // |Lk| -= |i|\n dk -= nvi;\n // |k| += W[nv + i]\n nvk += nvi;\n nel += nvi;\n W[nv + i] = 0;\n // node i is dead\n W[elen + i] = -1;\n } else {\n // update degree(i)\n W[degree + i] = Math.min(W[degree + i], d);\n // move first node to end\n cindex[pn] = cindex[p3];\n // move 1st el. to end of Ei\n cindex[p3] = cindex[p1];\n // add k as 1st element in of Ei\n cindex[p1] = k;\n // new len of adj. list of node i\n W[len + i] = pn - p1 + 1;\n // finalize hash of i\n h = (h < 0 ? -h : h) % n;\n // place i in hash bucket\n W[next + i] = W[hhead + h];\n W[hhead + h] = i;\n // save hash of i in last[i]\n last[i] = h;\n }\n }\n // finalize |Lk|\n W[degree + k] = dk;\n lemax = Math.max(lemax, dk);\n // clear w\n mark = _wclear(mark + lemax, lemax, W, w, n);\n\n // Supernode detection. Supernode detection relies on the hash function h(i) computed for each node i.\n // If two nodes have identical adjacency lists, their hash functions wil be identical.\n for (pk = pk1; pk < pk2; pk++) {\n i = cindex[pk];\n // check i is dead, skip it\n if (W[nv + i] >= 0) {\n continue;\n }\n // scan hash bucket of node i\n h = last[i];\n i = W[hhead + h];\n // hash bucket will be empty\n W[hhead + h] = -1;\n for (; i !== -1 && W[next + i] !== -1; i = W[next + i], mark++) {\n ln = W[len + i];\n eln = W[elen + i];\n for (p = cptr[i] + 1; p <= cptr[i] + ln - 1; p++) {\n W[w + cindex[p]] = mark;\n }\n var jlast = i;\n // compare i with all j\n for (j = W[next + i]; j !== -1;) {\n var ok = W[len + j] === ln && W[elen + j] === eln;\n for (p = cptr[j] + 1; ok && p <= cptr[j] + ln - 1; p++) {\n // compare i and j\n if (W[w + cindex[p]] !== mark) {\n ok = 0;\n }\n }\n // check i and j are identical\n if (ok) {\n // absorb j into i\n cptr[j] = csFlip(i);\n W[nv + i] += W[nv + j];\n W[nv + j] = 0;\n // node j is dead\n W[elen + j] = -1;\n // delete j from hash bucket\n j = W[next + j];\n W[next + jlast] = j;\n } else {\n // j and i are different\n jlast = j;\n j = W[next + j];\n }\n }\n }\n }\n\n // Finalize new element. The elimination of node k is nearly complete. All nodes i in Lk are scanned one last time.\n // Node i is removed from Lk if it is dead. The flagged status of nv[i] is cleared.\n for (p = pk1, pk = pk1; pk < pk2; pk++) {\n i = cindex[pk];\n // check i is dead, skip it\n if ((nvi = -W[nv + i]) <= 0) {\n continue;\n }\n // restore W[nv + i]\n W[nv + i] = nvi;\n // compute external degree(i)\n d = W[degree + i] + dk - nvi;\n d = Math.min(d, n - nel - nvi);\n if (W[head + d] !== -1) {\n last[W[head + d]] = i;\n }\n // put i back in degree list\n W[next + i] = W[head + d];\n last[i] = -1;\n W[head + d] = i;\n // find new minimum degree\n mindeg = Math.min(mindeg, d);\n W[degree + i] = d;\n // place i in Lk\n cindex[p++] = i;\n }\n // # nodes absorbed into k\n W[nv + k] = nvk;\n // length of adj list of element k\n if ((W[len + k] = p - pk1) === 0) {\n // k is a root of the tree\n cptr[k] = -1;\n // k is now a dead element\n W[w + k] = 0;\n }\n if (elenk !== 0) {\n // free unused space in Lk\n cnz = p;\n }\n }\n\n // Postordering. The elimination is complete, but no permutation has been computed. All that is left\n // of the graph is the assembly tree (ptr) and a set of dead nodes and elements (i is a dead node if\n // nv[i] is zero and a dead element if nv[i] > 0). It is from this information only that the final permutation\n // is computed. The tree is restored by unflipping all of ptr.\n\n // fix assembly tree\n for (i = 0; i < n; i++) {\n cptr[i] = csFlip(cptr[i]);\n }\n for (j = 0; j <= n; j++) {\n W[head + j] = -1;\n }\n // place unordered nodes in lists\n for (j = n; j >= 0; j--) {\n // skip if j is an element\n if (W[nv + j] > 0) {\n continue;\n }\n // place j in list of its parent\n W[next + j] = W[head + cptr[j]];\n W[head + cptr[j]] = j;\n }\n // place elements in lists\n for (e = n; e >= 0; e--) {\n // skip unless e is an element\n if (W[nv + e] <= 0) {\n continue;\n }\n if (cptr[e] !== -1) {\n // place e in list of its parent\n W[next + e] = W[head + cptr[e]];\n W[head + cptr[e]] = e;\n }\n }\n // postorder the assembly tree\n for (k = 0, i = 0; i <= n; i++) {\n if (cptr[i] === -1) {\n k = csTdfs(i, k, W, head, next, P, w);\n }\n }\n // remove last item in array\n P.splice(P.length - 1, 1);\n // return P\n return P;\n };\n\n /**\n * Creates the matrix that will be used by the approximate minimum degree ordering algorithm. The function accepts the matrix M as input and returns a permutation\n * vector P. The amd algorithm operates on a symmetrix matrix, so one of three symmetric matrices is formed.\n *\n * Order: 0\n * A natural ordering P=null matrix is returned.\n *\n * Order: 1\n * Matrix must be square. This is appropriate for a Cholesky or LU factorization.\n * P = M + M'\n *\n * Order: 2\n * Dense columns from M' are dropped, M recreated from M'. This is appropriatefor LU factorization of unsymmetric matrices.\n * P = M' * M\n *\n * Order: 3\n * This is best used for QR factorization or LU factorization is matrix M has no dense rows. A dense row is a row with more than 10*sqr(columns) entries.\n * P = M' * M\n */\n function _createTargetMatrix(order, a, m, n, dense) {\n // compute A'\n var at = transpose(a);\n\n // check order = 1, matrix must be square\n if (order === 1 && n === m) {\n // C = A + A'\n return add(a, at);\n }\n\n // check order = 2, drop dense columns from M'\n if (order === 2) {\n // transpose arrays\n var tindex = at._index;\n var tptr = at._ptr;\n // new column index\n var p2 = 0;\n // loop A' columns (rows)\n for (var j = 0; j < m; j++) {\n // column j of AT starts here\n var p = tptr[j];\n // new column j starts here\n tptr[j] = p2;\n // skip dense col j\n if (tptr[j + 1] - p > dense) {\n continue;\n }\n // map rows in column j of A\n for (var p1 = tptr[j + 1]; p < p1; p++) {\n tindex[p2++] = tindex[p];\n }\n }\n // finalize AT\n tptr[m] = p2;\n // recreate A from new transpose matrix\n a = transpose(at);\n // use A' * A\n return multiply(at, a);\n }\n\n // use A' * A, square or rectangular matrix\n return multiply(at, a);\n }\n\n /**\n * Initialize quotient graph. There are four kind of nodes and elements that must be represented:\n *\n * - A live node is a node i (or a supernode) that has not been selected as a pivot nad has not been merged into another supernode.\n * - A dead node i is one that has been removed from the graph, having been absorved into r = flip(ptr[i]).\n * - A live element e is one that is in the graph, having been formed when node e was selected as the pivot.\n * - A dead element e is one that has benn absorved into a subsequent element s = flip(ptr[e]).\n */\n function _initializeQuotientGraph(n, cptr, W, len, head, last, next, hhead, nv, w, elen, degree) {\n // Initialize quotient graph\n for (var k = 0; k < n; k++) {\n W[len + k] = cptr[k + 1] - cptr[k];\n }\n W[len + n] = 0;\n // initialize workspace\n for (var i = 0; i <= n; i++) {\n // degree list i is empty\n W[head + i] = -1;\n last[i] = -1;\n W[next + i] = -1;\n // hash list i is empty\n W[hhead + i] = -1;\n // node i is just one node\n W[nv + i] = 1;\n // node i is alive\n W[w + i] = 1;\n // Ek of node i is empty\n W[elen + i] = 0;\n // degree of node i\n W[degree + i] = W[len + i];\n }\n // clear w\n var mark = _wclear(0, 0, W, w, n);\n // n is a dead element\n W[elen + n] = -2;\n // n is a root of assembly tree\n cptr[n] = -1;\n // n is a dead element\n W[w + n] = 0;\n // return mark\n return mark;\n }\n\n /**\n * Initialize degree lists. Each node is placed in its degree lists. Nodes of zero degree are eliminated immediately. Nodes with\n * degree >= dense are alsol eliminated and merged into a placeholder node n, a dead element. Thes nodes will appera last in the\n * output permutation p.\n */\n function _initializeDegreeLists(n, cptr, W, degree, elen, w, dense, nv, head, last, next) {\n // result\n var nel = 0;\n // loop columns\n for (var i = 0; i < n; i++) {\n // degree @ i\n var d = W[degree + i];\n // check node i is empty\n if (d === 0) {\n // element i is dead\n W[elen + i] = -2;\n nel++;\n // i is a root of assembly tree\n cptr[i] = -1;\n W[w + i] = 0;\n } else if (d > dense) {\n // absorb i into element n\n W[nv + i] = 0;\n // node i is dead\n W[elen + i] = -1;\n nel++;\n cptr[i] = csFlip(n);\n W[nv + n]++;\n } else {\n var h = W[head + d];\n if (h !== -1) {\n last[h] = i;\n }\n // put node i in degree list d\n W[next + i] = W[head + d];\n W[head + d] = i;\n }\n }\n return nel;\n }\n function _wclear(mark, lemax, W, w, n) {\n if (mark < 2 || mark + lemax < 0) {\n for (var k = 0; k < n; k++) {\n if (W[w + k] !== 0) {\n W[w + k] = 1;\n }\n }\n mark = 2;\n }\n // at this point, W [0..n-1] < mark holds\n return mark;\n }\n function _diag(i, j) {\n return i !== j;\n }\n});", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\n\n/**\n * This function determines if j is a leaf of the ith row subtree.\n * Consider A(i,j), node j in ith row subtree and return lca(jprev,j)\n *\n * @param {Number} i The ith row subtree\n * @param {Number} j The node to test\n * @param {Array} w The workspace array\n * @param {Number} first The index offset within the workspace for the first array\n * @param {Number} maxfirst The index offset within the workspace for the maxfirst array\n * @param {Number} prevleaf The index offset within the workspace for the prevleaf array\n * @param {Number} ancestor The index offset within the workspace for the ancestor array\n *\n * @return {Object}\n */\nexport function csLeaf(i, j, w, first, maxfirst, prevleaf, ancestor) {\n var s, sparent;\n\n // our result\n var jleaf = 0;\n var q;\n\n // check j is a leaf\n if (i <= j || w[first + j] <= w[maxfirst + i]) {\n return -1;\n }\n // update max first[j] seen so far\n w[maxfirst + i] = w[first + j];\n // jprev = previous leaf of ith subtree\n var jprev = w[prevleaf + i];\n w[prevleaf + i] = j;\n\n // check j is first or subsequent leaf\n if (jprev === -1) {\n // 1st leaf, q = root of ith subtree\n jleaf = 1;\n q = i;\n } else {\n // update jleaf\n jleaf = 2;\n // q = least common ancester (jprev,j)\n for (q = jprev; q !== w[ancestor + q]; q = w[ancestor + q]);\n for (s = jprev; s !== q; s = sparent) {\n // path compression\n sparent = w[ancestor + s];\n w[ancestor + s] = q;\n }\n }\n return {\n jleaf,\n q\n };\n}", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\nimport { factory } from '../../../utils/factory.js';\nimport { csLeaf } from './csLeaf.js';\nvar name = 'csCounts';\nvar dependencies = ['transpose'];\nexport var createCsCounts = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n transpose\n } = _ref;\n /**\n * Computes the column counts using the upper triangular part of A.\n * It transposes A internally, none of the input parameters are modified.\n *\n * @param {Matrix} a The sparse matrix A\n *\n * @param {Matrix} ata Count the columns of A'A instead\n *\n * @return An array of size n of the column counts or null on error\n */\n return function (a, parent, post, ata) {\n // check inputs\n if (!a || !parent || !post) {\n return null;\n }\n // a matrix arrays\n var asize = a._size;\n // rows and columns\n var m = asize[0];\n var n = asize[1];\n // variables\n var i, j, k, J, p, p0, p1;\n\n // workspace size\n var s = 4 * n + (ata ? n + m + 1 : 0);\n // allocate workspace\n var w = []; // (s)\n var ancestor = 0; // first n entries\n var maxfirst = n; // next n entries\n var prevleaf = 2 * n; // next n entries\n var first = 3 * n; // next n entries\n var head = 4 * n; // next n + 1 entries (used when ata is true)\n var next = 5 * n + 1; // last entries in workspace\n // clear workspace w[0..s-1]\n for (k = 0; k < s; k++) {\n w[k] = -1;\n }\n\n // allocate result\n var colcount = []; // (n)\n\n // AT = A'\n var at = transpose(a);\n // at arrays\n var tindex = at._index;\n var tptr = at._ptr;\n\n // find w[first + j]\n for (k = 0; k < n; k++) {\n j = post[k];\n // colcount[j]=1 if j is a leaf\n colcount[j] = w[first + j] === -1 ? 1 : 0;\n for (; j !== -1 && w[first + j] === -1; j = parent[j]) {\n w[first + j] = k;\n }\n }\n\n // initialize ata if needed\n if (ata) {\n // invert post\n for (k = 0; k < n; k++) {\n w[post[k]] = k;\n }\n // loop rows (columns in AT)\n for (i = 0; i < m; i++) {\n // values in column i of AT\n for (k = n, p0 = tptr[i], p1 = tptr[i + 1], p = p0; p < p1; p++) {\n k = Math.min(k, w[tindex[p]]);\n }\n // place row i in linked list k\n w[next + i] = w[head + k];\n w[head + k] = i;\n }\n }\n\n // each node in its own set\n for (i = 0; i < n; i++) {\n w[ancestor + i] = i;\n }\n for (k = 0; k < n; k++) {\n // j is the kth node in postordered etree\n j = post[k];\n // check j is not a root\n if (parent[j] !== -1) {\n colcount[parent[j]]--;\n }\n\n // J=j for LL'=A case\n for (J = ata ? w[head + k] : j; J !== -1; J = ata ? w[next + J] : -1) {\n for (p = tptr[J]; p < tptr[J + 1]; p++) {\n i = tindex[p];\n var r = csLeaf(i, j, w, first, maxfirst, prevleaf, ancestor);\n // check A(i,j) is in skeleton\n if (r.jleaf >= 1) {\n colcount[j]++;\n }\n // check account for overlap in q\n if (r.jleaf === 2) {\n colcount[r.q]--;\n }\n }\n }\n if (parent[j] !== -1) {\n w[ancestor + j] = parent[j];\n }\n }\n // sum up colcount's of each child\n for (j = 0; j < n; j++) {\n if (parent[j] !== -1) {\n colcount[parent[j]] += colcount[j];\n }\n }\n return colcount;\n };\n});", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\nimport { csPermute } from './csPermute.js';\nimport { csPost } from './csPost.js';\nimport { csEtree } from './csEtree.js';\nimport { createCsAmd } from './csAmd.js';\nimport { createCsCounts } from './csCounts.js';\nimport { factory } from '../../../utils/factory.js';\nvar name = 'csSqr';\nvar dependencies = ['add', 'multiply', 'transpose'];\nexport var createCsSqr = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n add,\n multiply,\n transpose\n } = _ref;\n var csAmd = createCsAmd({\n add,\n multiply,\n transpose\n });\n var csCounts = createCsCounts({\n transpose\n });\n\n /**\n * Symbolic ordering and analysis for QR and LU decompositions.\n *\n * @param {Number} order The ordering strategy (see csAmd for more details)\n * @param {Matrix} a The A matrix\n * @param {boolean} qr Symbolic ordering and analysis for QR decomposition (true) or\n * symbolic ordering and analysis for LU decomposition (false)\n *\n * @return {Object} The Symbolic ordering and analysis for matrix A\n */\n return function csSqr(order, a, qr) {\n // a arrays\n var aptr = a._ptr;\n var asize = a._size;\n // columns\n var n = asize[1];\n // vars\n var k;\n // symbolic analysis result\n var s = {};\n // fill-reducing ordering\n s.q = csAmd(order, a);\n // validate results\n if (order && !s.q) {\n return null;\n }\n // QR symbolic analysis\n if (qr) {\n // apply permutations if needed\n var c = order ? csPermute(a, null, s.q, 0) : a;\n // etree of C'*C, where C=A(:,q)\n s.parent = csEtree(c, 1);\n // post order elimination tree\n var post = csPost(s.parent, n);\n // col counts chol(C'*C)\n s.cp = csCounts(c, s.parent, post, 1);\n // check we have everything needed to calculate number of nonzero elements\n if (c && s.parent && s.cp && _vcount(c, s)) {\n // calculate number of nonzero elements\n for (s.unz = 0, k = 0; k < n; k++) {\n s.unz += s.cp[k];\n }\n }\n } else {\n // for LU factorization only, guess nnz(L) and nnz(U)\n s.unz = 4 * aptr[n] + n;\n s.lnz = s.unz;\n }\n // return result S\n return s;\n };\n\n /**\n * Compute nnz(V) = s.lnz, s.pinv, s.leftmost, s.m2 from A and s.parent\n */\n function _vcount(a, s) {\n // a arrays\n var aptr = a._ptr;\n var aindex = a._index;\n var asize = a._size;\n // rows & columns\n var m = asize[0];\n var n = asize[1];\n // initialize s arrays\n s.pinv = []; // (m + n)\n s.leftmost = []; // (m)\n // vars\n var parent = s.parent;\n var pinv = s.pinv;\n var leftmost = s.leftmost;\n // workspace, next: first m entries, head: next n entries, tail: next n entries, nque: next n entries\n var w = []; // (m + 3 * n)\n var next = 0;\n var head = m;\n var tail = m + n;\n var nque = m + 2 * n;\n // vars\n var i, k, p, p0, p1;\n // initialize w\n for (k = 0; k < n; k++) {\n // queue k is empty\n w[head + k] = -1;\n w[tail + k] = -1;\n w[nque + k] = 0;\n }\n // initialize row arrays\n for (i = 0; i < m; i++) {\n leftmost[i] = -1;\n }\n // loop columns backwards\n for (k = n - 1; k >= 0; k--) {\n // values & index for column k\n for (p0 = aptr[k], p1 = aptr[k + 1], p = p0; p < p1; p++) {\n // leftmost[i] = min(find(A(i,:)))\n leftmost[aindex[p]] = k;\n }\n }\n // scan rows in reverse order\n for (i = m - 1; i >= 0; i--) {\n // row i is not yet ordered\n pinv[i] = -1;\n k = leftmost[i];\n // check row i is empty\n if (k === -1) {\n continue;\n }\n // first row in queue k\n if (w[nque + k]++ === 0) {\n w[tail + k] = i;\n }\n // put i at head of queue k\n w[next + i] = w[head + k];\n w[head + k] = i;\n }\n s.lnz = 0;\n s.m2 = m;\n // find row permutation and nnz(V)\n for (k = 0; k < n; k++) {\n // remove row i from queue k\n i = w[head + k];\n // count V(k,k) as nonzero\n s.lnz++;\n // add a fictitious row\n if (i < 0) {\n i = s.m2++;\n }\n // associate row i with V(:,k)\n pinv[i] = k;\n // skip if V(k+1:m,k) is empty\n if (--nque[k] <= 0) {\n continue;\n }\n // nque[k] is nnz (V(k+1:m,k))\n s.lnz += w[nque + k];\n // move all rows to parent of k\n var pa = parent[k];\n if (pa !== -1) {\n if (w[nque + pa] === 0) {\n w[tail + pa] = w[tail + k];\n }\n w[next + w[tail + k]] = w[head + pa];\n w[head + pa] = w[next + i];\n w[nque + pa] += w[nque + k];\n }\n }\n for (i = 0; i < m; i++) {\n if (pinv[i] < 0) {\n pinv[i] = k++;\n }\n }\n return true;\n }\n});", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\n\n/**\n * Checks if the node at w[j] is marked\n *\n * @param {Array} w The array\n * @param {Number} j The array index\n */\nexport function csMarked(w, j) {\n // check node is marked\n return w[j] < 0;\n}", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\n\nimport { csFlip } from './csFlip.js';\n\n/**\n * Marks the node at w[j]\n *\n * @param {Array} w The array\n * @param {Number} j The array index\n */\nexport function csMark(w, j) {\n // mark w[j]\n w[j] = csFlip(w[j]);\n}", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\nimport { csFlip } from './csFlip.js';\n\n/**\n * Flips the value if it is negative of returns the same value otherwise.\n *\n * @param {Number} i The value to flip\n */\nexport function csUnflip(i) {\n // flip the value if it is negative\n return i < 0 ? csFlip(i) : i;\n}", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\nimport { csMarked } from './csMarked.js';\nimport { csMark } from './csMark.js';\nimport { csUnflip } from './csUnflip.js';\n\n/**\n * Depth-first search computes the nonzero pattern xi of the directed graph G (Matrix) starting\n * at nodes in B (see csReach()).\n *\n * @param {Number} j The starting node for the DFS algorithm\n * @param {Matrix} g The G matrix to search, ptr array modified, then restored\n * @param {Number} top Start index in stack xi[top..n-1]\n * @param {Number} k The kth column in B\n * @param {Array} xi The nonzero pattern xi[top] .. xi[n - 1], an array of size = 2 * n\n * The first n entries is the nonzero pattern, the last n entries is the stack\n * @param {Array} pinv The inverse row permutation vector, must be null for L * x = b\n *\n * @return {Number} New value of top\n */\nexport function csDfs(j, g, top, xi, pinv) {\n // g arrays\n var index = g._index;\n var ptr = g._ptr;\n var size = g._size;\n // columns\n var n = size[1];\n // vars\n var i, p, p2;\n // initialize head\n var head = 0;\n // initialize the recursion stack\n xi[0] = j;\n // loop\n while (head >= 0) {\n // get j from the top of the recursion stack\n j = xi[head];\n // apply permutation vector\n var jnew = pinv ? pinv[j] : j;\n // check node j is marked\n if (!csMarked(ptr, j)) {\n // mark node j as visited\n csMark(ptr, j);\n // update stack (last n entries in xi)\n xi[n + head] = jnew < 0 ? 0 : csUnflip(ptr[jnew]);\n }\n // node j done if no unvisited neighbors\n var done = 1;\n // examine all neighbors of j, stack (last n entries in xi)\n for (p = xi[n + head], p2 = jnew < 0 ? 0 : csUnflip(ptr[jnew + 1]); p < p2; p++) {\n // consider neighbor node i\n i = index[p];\n // check we have visited node i, skip it\n if (csMarked(ptr, i)) {\n continue;\n }\n // pause depth-first search of node j, update stack (last n entries in xi)\n xi[n + head] = p;\n // start dfs at node i\n xi[++head] = i;\n // node j is not done\n done = 0;\n // break, to start dfs(i)\n break;\n }\n // check depth-first search at node j is done\n if (done) {\n // remove j from the recursion stack\n head--;\n // and place in the output stack\n xi[--top] = j;\n }\n }\n return top;\n}", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\n\nimport { csMarked } from './csMarked.js';\nimport { csMark } from './csMark.js';\nimport { csDfs } from './csDfs.js';\n\n/**\n * The csReach function computes X = Reach(B), where B is the nonzero pattern of the n-by-1\n * sparse column of vector b. The function returns the set of nodes reachable from any node in B. The\n * nonzero pattern xi of the solution x to the sparse linear system Lx=b is given by X=Reach(B).\n *\n * @param {Matrix} g The G matrix\n * @param {Matrix} b The B matrix\n * @param {Number} k The kth column in B\n * @param {Array} xi The nonzero pattern xi[top] .. xi[n - 1], an array of size = 2 * n\n * The first n entries is the nonzero pattern, the last n entries is the stack\n * @param {Array} pinv The inverse row permutation vector\n *\n * @return {Number} The index for the nonzero pattern\n */\nexport function csReach(g, b, k, xi, pinv) {\n // g arrays\n var gptr = g._ptr;\n var gsize = g._size;\n // b arrays\n var bindex = b._index;\n var bptr = b._ptr;\n // columns\n var n = gsize[1];\n // vars\n var p, p0, p1;\n // initialize top\n var top = n;\n // loop column indeces in B\n for (p0 = bptr[k], p1 = bptr[k + 1], p = p0; p < p1; p++) {\n // node i\n var i = bindex[p];\n // check node i is marked\n if (!csMarked(gptr, i)) {\n // start a dfs at unmarked node i\n top = csDfs(i, g, top, xi, pinv);\n }\n }\n // loop columns from top -> n - 1\n for (p = top; p < n; p++) {\n // restore G\n csMark(gptr, xi[p]);\n }\n return top;\n}", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\nimport { csReach } from './csReach.js';\nimport { factory } from '../../../utils/factory.js';\nvar name = 'csSpsolve';\nvar dependencies = ['divideScalar', 'multiply', 'subtract'];\nexport var createCsSpsolve = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n divideScalar,\n multiply,\n subtract\n } = _ref;\n /**\n * The function csSpsolve() computes the solution to G * x = bk, where bk is the\n * kth column of B. When lo is true, the function assumes G = L is lower triangular with the\n * diagonal entry as the first entry in each column. When lo is true, the function assumes G = U\n * is upper triangular with the diagonal entry as the last entry in each column.\n *\n * @param {Matrix} g The G matrix\n * @param {Matrix} b The B matrix\n * @param {Number} k The kth column in B\n * @param {Array} xi The nonzero pattern xi[top] .. xi[n - 1], an array of size = 2 * n\n * The first n entries is the nonzero pattern, the last n entries is the stack\n * @param {Array} x The soluton to the linear system G * x = b\n * @param {Array} pinv The inverse row permutation vector, must be null for L * x = b\n * @param {boolean} lo The lower (true) upper triangular (false) flag\n *\n * @return {Number} The index for the nonzero pattern\n */\n return function csSpsolve(g, b, k, xi, x, pinv, lo) {\n // g arrays\n var gvalues = g._values;\n var gindex = g._index;\n var gptr = g._ptr;\n var gsize = g._size;\n // columns\n var n = gsize[1];\n // b arrays\n var bvalues = b._values;\n var bindex = b._index;\n var bptr = b._ptr;\n // vars\n var p, p0, p1, q;\n // xi[top..n-1] = csReach(B(:,k))\n var top = csReach(g, b, k, xi, pinv);\n // clear x\n for (p = top; p < n; p++) {\n x[xi[p]] = 0;\n }\n // scatter b\n for (p0 = bptr[k], p1 = bptr[k + 1], p = p0; p < p1; p++) {\n x[bindex[p]] = bvalues[p];\n }\n // loop columns\n for (var px = top; px < n; px++) {\n // x array index for px\n var j = xi[px];\n // apply permutation vector (U x = b), j maps to column J of G\n var J = pinv ? pinv[j] : j;\n // check column J is empty\n if (J < 0) {\n continue;\n }\n // column value indeces in G, p0 <= p < p1\n p0 = gptr[J];\n p1 = gptr[J + 1];\n // x(j) /= G(j,j)\n x[j] = divideScalar(x[j], gvalues[lo ? p0 : p1 - 1]);\n // first entry L(j,j)\n p = lo ? p0 + 1 : p0;\n q = lo ? p1 : p1 - 1;\n // loop\n for (; p < q; p++) {\n // row\n var i = gindex[p];\n // x(i) -= G(i,j) * x(j)\n x[i] = subtract(x[i], multiply(gvalues[p], x[j]));\n }\n }\n // return top of stack\n return top;\n };\n});", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\n\nimport { factory } from '../../../utils/factory.js';\nimport { createCsSpsolve } from './csSpsolve.js';\nvar name = 'csLu';\nvar dependencies = ['abs', 'divideScalar', 'multiply', 'subtract', 'larger', 'largerEq', 'SparseMatrix'];\nexport var createCsLu = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n abs,\n divideScalar,\n multiply,\n subtract,\n larger,\n largerEq,\n SparseMatrix\n } = _ref;\n var csSpsolve = createCsSpsolve({\n divideScalar,\n multiply,\n subtract\n });\n\n /**\n * Computes the numeric LU factorization of the sparse matrix A. Implements a Left-looking LU factorization\n * algorithm that computes L and U one column at a tume. At the kth step, it access columns 1 to k-1 of L\n * and column k of A. Given the fill-reducing column ordering q (see parameter s) computes L, U and pinv so\n * L * U = A(p, q), where p is the inverse of pinv.\n *\n * @param {Matrix} m The A Matrix to factorize\n * @param {Object} s The symbolic analysis from csSqr(). Provides the fill-reducing\n * column ordering q\n * @param {Number} tol Partial pivoting threshold (1 for partial pivoting)\n *\n * @return {Number} The numeric LU factorization of A or null\n */\n return function csLu(m, s, tol) {\n // validate input\n if (!m) {\n return null;\n }\n // m arrays\n var size = m._size;\n // columns\n var n = size[1];\n // symbolic analysis result\n var q;\n var lnz = 100;\n var unz = 100;\n // update symbolic analysis parameters\n if (s) {\n q = s.q;\n lnz = s.lnz || lnz;\n unz = s.unz || unz;\n }\n // L arrays\n var lvalues = []; // (lnz)\n var lindex = []; // (lnz)\n var lptr = []; // (n + 1)\n // L\n var L = new SparseMatrix({\n values: lvalues,\n index: lindex,\n ptr: lptr,\n size: [n, n]\n });\n // U arrays\n var uvalues = []; // (unz)\n var uindex = []; // (unz)\n var uptr = []; // (n + 1)\n // U\n var U = new SparseMatrix({\n values: uvalues,\n index: uindex,\n ptr: uptr,\n size: [n, n]\n });\n // inverse of permutation vector\n var pinv = []; // (n)\n // vars\n var i, p;\n // allocate arrays\n var x = []; // (n)\n var xi = []; // (2 * n)\n // initialize variables\n for (i = 0; i < n; i++) {\n // clear workspace\n x[i] = 0;\n // no rows pivotal yet\n pinv[i] = -1;\n // no cols of L yet\n lptr[i + 1] = 0;\n }\n // reset number of nonzero elements in L and U\n lnz = 0;\n unz = 0;\n // compute L(:,k) and U(:,k)\n for (var k = 0; k < n; k++) {\n // update ptr\n lptr[k] = lnz;\n uptr[k] = unz;\n // apply column permutations if needed\n var col = q ? q[k] : k;\n // solve triangular system, x = L\\A(:,col)\n var top = csSpsolve(L, m, col, xi, x, pinv, 1);\n // find pivot\n var ipiv = -1;\n var a = -1;\n // loop xi[] from top -> n\n for (p = top; p < n; p++) {\n // x[i] is nonzero\n i = xi[p];\n // check row i is not yet pivotal\n if (pinv[i] < 0) {\n // absolute value of x[i]\n var xabs = abs(x[i]);\n // check absoulte value is greater than pivot value\n if (larger(xabs, a)) {\n // largest pivot candidate so far\n a = xabs;\n ipiv = i;\n }\n } else {\n // x(i) is the entry U(pinv[i],k)\n uindex[unz] = pinv[i];\n uvalues[unz++] = x[i];\n }\n }\n // validate we found a valid pivot\n if (ipiv === -1 || a <= 0) {\n return null;\n }\n // update actual pivot column, give preference to diagonal value\n if (pinv[col] < 0 && largerEq(abs(x[col]), multiply(a, tol))) {\n ipiv = col;\n }\n // the chosen pivot\n var pivot = x[ipiv];\n // last entry in U(:,k) is U(k,k)\n uindex[unz] = k;\n uvalues[unz++] = pivot;\n // ipiv is the kth pivot row\n pinv[ipiv] = k;\n // first entry in L(:,k) is L(k,k) = 1\n lindex[lnz] = ipiv;\n lvalues[lnz++] = 1;\n // L(k+1:n,k) = x / pivot\n for (p = top; p < n; p++) {\n // row\n i = xi[p];\n // check x(i) is an entry in L(:,k)\n if (pinv[i] < 0) {\n // save unpermuted row in L\n lindex[lnz] = i;\n // scale pivot column\n lvalues[lnz++] = divideScalar(x[i], pivot);\n }\n // x[0..n-1] = 0 for next k\n x[i] = 0;\n }\n }\n // update ptr\n lptr[n] = lnz;\n uptr[n] = unz;\n // fix row indices of L for final pinv\n for (p = 0; p < lnz; p++) {\n lindex[p] = pinv[lindex[p]];\n }\n // trim arrays\n lvalues.splice(lnz, lvalues.length - lnz);\n lindex.splice(lnz, lindex.length - lnz);\n uvalues.splice(unz, uvalues.length - unz);\n uindex.splice(unz, uindex.length - unz);\n // return LU factor\n return {\n L,\n U,\n pinv\n };\n };\n});", "import { isInteger } from '../../../utils/number.js';\nimport { factory } from '../../../utils/factory.js';\nimport { createCsSqr } from '../sparse/csSqr.js';\nimport { createCsLu } from '../sparse/csLu.js';\nvar name = 'slu';\nvar dependencies = ['typed', 'abs', 'add', 'multiply', 'transpose', 'divideScalar', 'subtract', 'larger', 'largerEq', 'SparseMatrix'];\nexport var createSlu = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n abs,\n add,\n multiply,\n transpose,\n divideScalar,\n subtract,\n larger,\n largerEq,\n SparseMatrix\n } = _ref;\n var csSqr = createCsSqr({\n add,\n multiply,\n transpose\n });\n var csLu = createCsLu({\n abs,\n divideScalar,\n multiply,\n subtract,\n larger,\n largerEq,\n SparseMatrix\n });\n\n /**\n * Calculate the Sparse Matrix LU decomposition with full pivoting. Sparse Matrix `A` is decomposed in two matrices (`L`, `U`) and two permutation vectors (`pinv`, `q`) where\n *\n * `P * A * Q = L * U`\n *\n * Syntax:\n *\n * math.slu(A, order, threshold)\n *\n * Examples:\n *\n * const A = math.sparse([[4,3], [6, 3]])\n * math.slu(A, 1, 0.001)\n * // returns:\n * // {\n * // L: [[1, 0], [1.5, 1]]\n * // U: [[4, 3], [0, -1.5]]\n * // p: [0, 1]\n * // q: [0, 1]\n * // }\n *\n * See also:\n *\n * lup, lsolve, usolve, lusolve\n *\n * @param {SparseMatrix} A A two dimensional sparse matrix for which to get the LU decomposition.\n * @param {Number} order The Symbolic Ordering and Analysis order:\n * 0 - Natural ordering, no permutation vector q is returned\n * 1 - Matrix must be square, symbolic ordering and analisis is performed on M = A + A'\n * 2 - Symbolic ordering and analisis is performed on M = A' * A. Dense columns from A' are dropped, A recreated from A'.\n * This is appropriatefor LU factorization of unsymmetric matrices.\n * 3 - Symbolic ordering and analisis is performed on M = A' * A. This is best used for LU factorization is matrix M has no dense rows.\n * A dense row is a row with more than 10*sqr(columns) entries.\n * @param {Number} threshold Partial pivoting threshold (1 for partial pivoting)\n *\n * @return {Object} The lower triangular matrix, the upper triangular matrix and the permutation vectors.\n */\n return typed(name, {\n 'SparseMatrix, number, number': function SparseMatrix_number_number(a, order, threshold) {\n // verify order\n if (!isInteger(order) || order < 0 || order > 3) {\n throw new Error('Symbolic Ordering and Analysis order must be an integer number in the interval [0, 3]');\n }\n // verify threshold\n if (threshold < 0 || threshold > 1) {\n throw new Error('Partial pivoting threshold must be a number from 0 to 1');\n }\n\n // perform symbolic ordering and analysis\n var s = csSqr(order, a, false);\n\n // perform lu decomposition\n var f = csLu(a, s, threshold);\n\n // return decomposition\n return {\n L: f.L,\n U: f.U,\n p: f.pinv,\n q: s.q,\n toString: function toString() {\n return 'L: ' + this.L.toString() + '\\nU: ' + this.U.toString() + '\\np: ' + this.p.toString() + (this.q ? '\\nq: ' + this.q.toString() : '') + '\\n';\n }\n };\n }\n });\n});", "// Copyright (c) 2006-2024, Timothy A. Davis, All Rights Reserved.\n// SPDX-License-Identifier: LGPL-2.1+\n// https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source\n\n/**\n * Permutes a vector; x = P'b. In MATLAB notation, x(p)=b.\n *\n * @param {Array} p The permutation vector of length n. null value denotes identity\n * @param {Array} b The input vector\n *\n * @return {Array} The output vector x = P'b\n */\nexport function csIpvec(p, b) {\n // vars\n var k;\n var n = b.length;\n var x = [];\n // check permutation vector was provided, p = null denotes identity\n if (p) {\n // loop vector\n for (k = 0; k < n; k++) {\n // apply permutation\n x[p[k]] = b[k];\n }\n } else {\n // loop vector\n for (k = 0; k < n; k++) {\n // x[i] = b[i]\n x[k] = b[k];\n }\n }\n return x;\n}", "import { isArray, isMatrix } from '../../../utils/is.js';\nimport { factory } from '../../../utils/factory.js';\nimport { createSolveValidation } from './utils/solveValidation.js';\nimport { csIpvec } from '../sparse/csIpvec.js';\nvar name = 'lusolve';\nvar dependencies = ['typed', 'matrix', 'lup', 'slu', 'usolve', 'lsolve', 'DenseMatrix'];\nexport var createLusolve = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n lup,\n slu,\n usolve,\n lsolve,\n DenseMatrix\n } = _ref;\n var solveValidation = createSolveValidation({\n DenseMatrix\n });\n\n /**\n * Solves the linear system `A * x = b` where `A` is an [n x n] matrix and `b` is a [n] column vector.\n *\n * Syntax:\n *\n * math.lusolve(A, b) // returns column vector with the solution to the linear system A * x = b\n * math.lusolve(lup, b) // returns column vector with the solution to the linear system A * x = b, lup = math.lup(A)\n *\n * Examples:\n *\n * const m = [[1, 0, 0, 0], [0, 2, 0, 0], [0, 0, 3, 0], [0, 0, 0, 4]]\n *\n * const x = math.lusolve(m, [-1, -1, -1, -1]) // x = [[-1], [-0.5], [-1/3], [-0.25]]\n *\n * const f = math.lup(m)\n * const x1 = math.lusolve(f, [-1, -1, -1, -1]) // x1 = [[-1], [-0.5], [-1/3], [-0.25]]\n * const x2 = math.lusolve(f, [1, 2, 1, -1]) // x2 = [[1], [1], [1/3], [-0.25]]\n *\n * const a = [[-2, 3], [2, 1]]\n * const b = [11, 9]\n * const x = math.lusolve(a, b) // [[2], [5]]\n *\n * See also:\n *\n * lup, slu, lsolve, usolve\n *\n * @param {Matrix | Array | Object} A Invertible Matrix or the Matrix LU decomposition\n * @param {Matrix | Array} b Column Vector\n * @param {number} [order] The Symbolic Ordering and Analysis order, see slu for details. Matrix must be a SparseMatrix\n * @param {Number} [threshold] Partial pivoting threshold (1 for partial pivoting), see slu for details. Matrix must be a SparseMatrix.\n *\n * @return {DenseMatrix | Array} Column vector with the solution to the linear system A * x = b\n */\n return typed(name, {\n 'Array, Array | Matrix': function Array_Array__Matrix(a, b) {\n a = matrix(a);\n var d = lup(a);\n var x = _lusolve(d.L, d.U, d.p, null, b);\n return x.valueOf();\n },\n 'DenseMatrix, Array | Matrix': function DenseMatrix_Array__Matrix(a, b) {\n var d = lup(a);\n return _lusolve(d.L, d.U, d.p, null, b);\n },\n 'SparseMatrix, Array | Matrix': function SparseMatrix_Array__Matrix(a, b) {\n var d = lup(a);\n return _lusolve(d.L, d.U, d.p, null, b);\n },\n 'SparseMatrix, Array | Matrix, number, number': function SparseMatrix_Array__Matrix_number_number(a, b, order, threshold) {\n var d = slu(a, order, threshold);\n return _lusolve(d.L, d.U, d.p, d.q, b);\n },\n 'Object, Array | Matrix': function Object_Array__Matrix(d, b) {\n return _lusolve(d.L, d.U, d.p, d.q, b);\n }\n });\n function _toMatrix(a) {\n if (isMatrix(a)) {\n return a;\n }\n if (isArray(a)) {\n return matrix(a);\n }\n throw new TypeError('Invalid Matrix LU decomposition');\n }\n function _lusolve(l, u, p, q, b) {\n // verify decomposition\n l = _toMatrix(l);\n u = _toMatrix(u);\n\n // apply row permutations if needed (b is a DenseMatrix)\n if (p) {\n b = solveValidation(l, b, true);\n b._data = csIpvec(p, b._data);\n }\n\n // use forward substitution to resolve L * y = b\n var y = lsolve(l, b);\n // use backward substitution to resolve U * x = y\n var x = usolve(u, y);\n\n // apply column permutations if needed (x is a DenseMatrix)\n if (q) {\n x._data = csIpvec(q, x._data);\n }\n return x;\n }\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'polynomialRoot';\nvar dependencies = ['typed', 'isZero', 'equalScalar', 'add', 'subtract', 'multiply', 'divide', 'sqrt', 'unaryMinus', 'cbrt', 'typeOf', 'im', 're'];\nexport var createPolynomialRoot = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n isZero,\n equalScalar,\n add,\n subtract,\n multiply,\n divide,\n sqrt,\n unaryMinus,\n cbrt,\n typeOf,\n im,\n re\n } = _ref;\n /**\n * Finds the numerical values of the distinct roots of a polynomial with real or complex coefficients.\n * Currently operates only on linear, quadratic, and cubic polynomials using the standard\n * formulas for the roots.\n *\n * Syntax:\n *\n * math.polynomialRoot(constant, linearCoeff, quadraticCoeff, cubicCoeff)\n *\n * Examples:\n * // linear\n * math.polynomialRoot(6, 3) // [-2]\n * math.polynomialRoot(math.complex(6,3), 3) // [-2 - i]\n * math.polynomialRoot(math.complex(6,3), math.complex(2,1)) // [-3 + 0i]\n * // quadratic\n * math.polynomialRoot(2, -3, 1) // [2, 1]\n * math.polynomialRoot(8, 8, 2) // [-2]\n * math.polynomialRoot(-2, 0, 1) // [1.4142135623730951, -1.4142135623730951]\n * math.polynomialRoot(2, -2, 1) // [1 + i, 1 - i]\n * math.polynomialRoot(math.complex(1,3), math.complex(-3, -2), 1) // [2 + i, 1 + i]\n * // cubic\n * math.polynomialRoot(-6, 11, -6, 1) // [1, 3, 2]\n * math.polynomialRoot(-8, 0, 0, 1) // [-1 - 1.7320508075688774i, 2, -1 + 1.7320508075688774i]\n * math.polynomialRoot(0, 8, 8, 2) // [0, -2]\n * math.polynomialRoot(1, 1, 1, 1) // [-1 + 0i, 0 - i, 0 + i]\n *\n * See also:\n * cbrt, sqrt\n *\n * @param {... number | Complex} coeffs\n * The coefficients of the polynomial, starting with with the constant coefficent, followed\n * by the linear coefficient and subsequent coefficients of increasing powers.\n * @return {Array} The distinct roots of the polynomial\n */\n\n return typed(name, {\n 'number|Complex, ...number|Complex': (constant, restCoeffs) => {\n var coeffs = [constant, ...restCoeffs];\n while (coeffs.length > 0 && isZero(coeffs[coeffs.length - 1])) {\n coeffs.pop();\n }\n if (coeffs.length < 2) {\n throw new RangeError(\"Polynomial [\".concat(constant, \", \").concat(restCoeffs, \"] must have a non-zero non-constant coefficient\"));\n }\n switch (coeffs.length) {\n case 2:\n // linear\n return [unaryMinus(divide(coeffs[0], coeffs[1]))];\n case 3:\n {\n // quadratic\n var [c, b, a] = coeffs;\n var denom = multiply(2, a);\n var d1 = multiply(b, b);\n var d2 = multiply(4, a, c);\n if (equalScalar(d1, d2)) return [divide(unaryMinus(b), denom)];\n var discriminant = sqrt(subtract(d1, d2));\n return [divide(subtract(discriminant, b), denom), divide(subtract(unaryMinus(discriminant), b), denom)];\n }\n case 4:\n {\n // cubic, cf. https://en.wikipedia.org/wiki/Cubic_equation\n var [d, _c, _b, _a] = coeffs;\n var _denom = unaryMinus(multiply(3, _a));\n var D0_1 = multiply(_b, _b);\n var D0_2 = multiply(3, _a, _c);\n var D1_1 = add(multiply(2, _b, _b, _b), multiply(27, _a, _a, d));\n var D1_2 = multiply(9, _a, _b, _c);\n if (equalScalar(D0_1, D0_2) && equalScalar(D1_1, D1_2)) {\n return [divide(_b, _denom)];\n }\n var Delta0 = subtract(D0_1, D0_2);\n var Delta1 = subtract(D1_1, D1_2);\n var discriminant1 = add(multiply(18, _a, _b, _c, d), multiply(_b, _b, _c, _c));\n var discriminant2 = add(multiply(4, _b, _b, _b, d), multiply(4, _a, _c, _c, _c), multiply(27, _a, _a, d, d));\n if (equalScalar(discriminant1, discriminant2)) {\n return [divide(subtract(multiply(4, _a, _b, _c), add(multiply(9, _a, _a, d), multiply(_b, _b, _b))), multiply(_a, Delta0)),\n // simple root\n divide(subtract(multiply(9, _a, d), multiply(_b, _c)), multiply(2, Delta0)) // double root\n ];\n }\n // OK, we have three distinct roots\n var Ccubed;\n if (equalScalar(D0_1, D0_2)) {\n Ccubed = Delta1;\n } else {\n Ccubed = divide(add(Delta1, sqrt(subtract(multiply(Delta1, Delta1), multiply(4, Delta0, Delta0, Delta0)))), 2);\n }\n var allRoots = true;\n var rawRoots = cbrt(Ccubed, allRoots).toArray().map(C => divide(add(_b, C, divide(Delta0, C)), _denom));\n return rawRoots.map(r => {\n if (typeOf(r) === 'Complex' && equalScalar(re(r), re(r) + im(r))) {\n return re(r);\n }\n return r;\n });\n }\n default:\n throw new RangeError(\"only implemented for cubic or lower-order polynomials, not \".concat(coeffs));\n }\n }\n });\n});", "import { isHelp } from '../utils/is.js';\nimport { clone } from '../utils/object.js';\nimport { format } from '../utils/string.js';\nimport { factory } from '../utils/factory.js';\nvar name = 'Help';\nvar dependencies = ['evaluate'];\nexport var createHelpClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n evaluate\n } = _ref;\n /**\n * Documentation object\n * @param {Object} doc Object containing properties:\n * {string} name\n * {string} category\n * {string} description\n * {string[]} syntax\n * {string[]} examples\n * {string[]} seealso\n * @constructor\n */\n function Help(doc) {\n if (!(this instanceof Help)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n if (!doc) throw new Error('Argument \"doc\" missing');\n this.doc = doc;\n }\n\n /**\n * Attach type information\n */\n Help.prototype.type = 'Help';\n Help.prototype.isHelp = true;\n\n /**\n * Generate a string representation of the Help object\n * @return {string} Returns a string\n * @private\n */\n Help.prototype.toString = function () {\n var doc = this.doc || {};\n var desc = '\\n';\n if (doc.name) {\n desc += 'Name: ' + doc.name + '\\n\\n';\n }\n if (doc.category) {\n desc += 'Category: ' + doc.category + '\\n\\n';\n }\n if (doc.description) {\n desc += 'Description:\\n ' + doc.description + '\\n\\n';\n }\n if (doc.syntax) {\n desc += 'Syntax:\\n ' + doc.syntax.join('\\n ') + '\\n\\n';\n }\n if (doc.examples) {\n desc += 'Examples:\\n';\n\n // after evaluating the examples, we restore config in case the examples\n // did change the config.\n var configChanged = false;\n var originalConfig = evaluate('config()');\n var scope = {\n config: newConfig => {\n configChanged = true;\n return evaluate('config(newConfig)', {\n newConfig\n });\n }\n };\n for (var i = 0; i < doc.examples.length; i++) {\n var expr = doc.examples[i];\n desc += ' ' + expr + '\\n';\n var res = void 0;\n try {\n // note: res can be undefined when `expr` is an empty string\n res = evaluate(expr, scope);\n } catch (e) {\n res = e;\n }\n if (res !== undefined && !isHelp(res)) {\n desc += ' ' + format(res, {\n precision: 14\n }) + '\\n';\n }\n }\n desc += '\\n';\n if (configChanged) {\n evaluate('config(originalConfig)', {\n originalConfig\n });\n }\n }\n if (doc.mayThrow && doc.mayThrow.length) {\n desc += 'Throws: ' + doc.mayThrow.join(', ') + '\\n\\n';\n }\n if (doc.seealso && doc.seealso.length) {\n desc += 'See also: ' + doc.seealso.join(', ') + '\\n';\n }\n return desc;\n };\n\n /**\n * Export the help object to JSON\n */\n Help.prototype.toJSON = function () {\n var obj = clone(this.doc);\n obj.mathjs = 'Help';\n return obj;\n };\n\n /**\n * Instantiate a Help object from a JSON object\n * @param {Object} json\n * @returns {Help} Returns a new Help object\n */\n Help.fromJSON = function (json) {\n var doc = {};\n Object.keys(json).filter(prop => prop !== 'mathjs').forEach(prop => {\n doc[prop] = json[prop];\n });\n return new Help(doc);\n };\n\n /**\n * Returns a string representation of the Help object\n */\n Help.prototype.valueOf = Help.prototype.toString;\n return Help;\n}, {\n isClass: true\n});", "import { isChain } from '../../utils/is.js';\nimport { format } from '../../utils/string.js';\nimport { hasOwnProperty, lazy } from '../../utils/object.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'Chain';\nvar dependencies = ['?on', 'math', 'typed'];\nexport var createChainClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n on,\n math,\n typed\n } = _ref;\n /**\n * @constructor Chain\n * Wrap any value in a chain, allowing to perform chained operations on\n * the value.\n *\n * All methods available in the math.js library can be called upon the chain,\n * and then will be evaluated with the value itself as first argument.\n * The chain can be closed by executing chain.done(), which will return\n * the final value.\n *\n * The Chain has a number of special functions:\n * - done() Finalize the chained operation and return the\n * chain's value.\n * - valueOf() The same as done()\n * - toString() Returns a string representation of the chain's value.\n *\n * @param {*} [value]\n */\n function Chain(value) {\n if (!(this instanceof Chain)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n if (isChain(value)) {\n this.value = value.value;\n } else {\n this.value = value;\n }\n }\n\n /**\n * Attach type information\n */\n Chain.prototype.type = 'Chain';\n Chain.prototype.isChain = true;\n\n /**\n * Close the chain. Returns the final value.\n * Does the same as method valueOf()\n * @returns {*} value\n */\n Chain.prototype.done = function () {\n return this.value;\n };\n\n /**\n * Close the chain. Returns the final value.\n * Does the same as method done()\n * @returns {*} value\n */\n Chain.prototype.valueOf = function () {\n return this.value;\n };\n\n /**\n * Get a string representation of the value in the chain\n * @returns {string}\n */\n Chain.prototype.toString = function () {\n return format(this.value);\n };\n\n /**\n * Get a JSON representation of the chain\n * @returns {Object}\n */\n Chain.prototype.toJSON = function () {\n return {\n mathjs: 'Chain',\n value: this.value\n };\n };\n\n /**\n * Instantiate a Chain from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"Chain\", value: ...}`,\n * where mathjs is optional\n * @returns {Chain}\n */\n Chain.fromJSON = function (json) {\n return new Chain(json.value);\n };\n\n /**\n * Create a proxy method for the chain\n * @param {string} name\n * @param {Function} fn The function to be proxied\n * If fn is no function, it is silently ignored.\n * @private\n */\n function createProxy(name, fn) {\n if (typeof fn === 'function') {\n Chain.prototype[name] = chainify(fn);\n }\n }\n\n /**\n * Create a proxy method for the chain\n * @param {string} name\n * @param {function} resolver The function resolving with the\n * function to be proxied\n * @private\n */\n function createLazyProxy(name, resolver) {\n lazy(Chain.prototype, name, function outerResolver() {\n var fn = resolver();\n if (typeof fn === 'function') {\n return chainify(fn);\n }\n return undefined; // if not a function, ignore\n });\n }\n\n /**\n * Make a function chainable\n * @param {function} fn\n * @return {Function} chain function\n * @private\n */\n function chainify(fn) {\n return function () {\n // Here, `this` will be the context of a Chain instance\n if (arguments.length === 0) {\n return new Chain(fn(this.value));\n }\n var args = [this.value];\n for (var i = 0; i < arguments.length; i++) {\n args[i + 1] = arguments[i];\n }\n if (typed.isTypedFunction(fn)) {\n var sigObject = typed.resolve(fn, args);\n // We want to detect if a rest parameter has matched across the\n // value in the chain and the current arguments of this call.\n // That is the case if and only if the matching signature has\n // exactly one parameter (which then must be a rest parameter\n // as it is matching at least two actual arguments).\n if (sigObject.params.length === 1) {\n throw new Error('chain function ' + fn.name + ' cannot match rest parameter between chain value and additional arguments.');\n }\n return new Chain(sigObject.implementation.apply(fn, args));\n }\n return new Chain(fn.apply(fn, args));\n };\n }\n\n /**\n * Create a proxy for a single method, or an object with multiple methods.\n * Example usage:\n *\n * Chain.createProxy('add', function add (x, y) {...})\n * Chain.createProxy({\n * add: function add (x, y) {...},\n * subtract: function subtract (x, y) {...}\n * }\n *\n * @param {string | Object} arg0 A name (string), or an object with\n * functions\n * @param {*} [arg1] A function, when arg0 is a name\n */\n Chain.createProxy = function (arg0, arg1) {\n if (typeof arg0 === 'string') {\n // createProxy(name, value)\n createProxy(arg0, arg1);\n } else {\n var _loop = function _loop(_name) {\n if (hasOwnProperty(arg0, _name) && excludedNames[_name] === undefined) {\n createLazyProxy(_name, () => arg0[_name]);\n }\n };\n // createProxy(values)\n for (var _name in arg0) {\n _loop(_name);\n }\n }\n };\n var excludedNames = {\n expression: true,\n docs: true,\n type: true,\n classes: true,\n json: true,\n error: true,\n isChain: true // conflicts with the property isChain of a Chain instance\n };\n\n // create proxy for everything that is in math.js\n Chain.createProxy(math);\n\n // register on the import event, automatically add a proxy for every imported function.\n if (on) {\n on('import', function (name, resolver, path) {\n if (!path) {\n // an imported function (not a data type or something special)\n createLazyProxy(name, resolver);\n }\n });\n }\n return Chain;\n}, {\n isClass: true\n});", "export var eDocs = {\n name: 'e',\n category: 'Constants',\n syntax: ['e'],\n description: 'Euler\\'s number, the base of the natural logarithm. Approximately equal to 2.71828',\n examples: ['e', 'e ^ 2', 'exp(2)', 'log(e)'],\n seealso: ['exp']\n};", "export var falseDocs = {\n name: 'false',\n category: 'Constants',\n syntax: ['false'],\n description: 'Boolean value false',\n examples: ['false'],\n seealso: ['true']\n};", "export var iDocs = {\n name: 'i',\n category: 'Constants',\n syntax: ['i'],\n description: 'Imaginary unit, defined as i*i=-1. A complex number is described as a + b*i, where a is the real part, and b is the imaginary part.',\n examples: ['i', 'i * i', 'sqrt(-1)'],\n seealso: []\n};", "export var InfinityDocs = {\n name: 'Infinity',\n category: 'Constants',\n syntax: ['Infinity'],\n description: 'Infinity, a number which is larger than the maximum number that can be handled by a floating point number.',\n examples: ['Infinity', '1 / 0'],\n seealso: []\n};", "export var LN10Docs = {\n name: 'LN10',\n category: 'Constants',\n syntax: ['LN10'],\n description: 'Returns the natural logarithm of 10, approximately equal to 2.302',\n examples: ['LN10', 'log(10)'],\n seealso: []\n};", "export var LN2Docs = {\n name: 'LN2',\n category: 'Constants',\n syntax: ['LN2'],\n description: 'Returns the natural logarithm of 2, approximately equal to 0.693',\n examples: ['LN2', 'log(2)'],\n seealso: []\n};", "export var LOG10EDocs = {\n name: 'LOG10E',\n category: 'Constants',\n syntax: ['LOG10E'],\n description: 'Returns the base-10 logarithm of E, approximately equal to 0.434',\n examples: ['LOG10E', 'log(e, 10)'],\n seealso: []\n};", "export var LOG2EDocs = {\n name: 'LOG2E',\n category: 'Constants',\n syntax: ['LOG2E'],\n description: 'Returns the base-2 logarithm of E, approximately equal to 1.442',\n examples: ['LOG2E', 'log(e, 2)'],\n seealso: []\n};", "export var NaNDocs = {\n name: 'NaN',\n category: 'Constants',\n syntax: ['NaN'],\n description: 'Not a number',\n examples: ['NaN', '0 / 0'],\n seealso: []\n};", "export var nullDocs = {\n name: 'null',\n category: 'Constants',\n syntax: ['null'],\n description: 'Value null',\n examples: ['null'],\n seealso: ['true', 'false']\n};", "export var phiDocs = {\n name: 'phi',\n category: 'Constants',\n syntax: ['phi'],\n description: 'Phi is the golden ratio. Two quantities are in the golden ratio if their ratio is the same as the ratio of their sum to the larger of the two quantities. Phi is defined as `(1 + sqrt(5)) / 2` and is approximately 1.618034...',\n examples: ['phi'],\n seealso: []\n};", "export var piDocs = {\n name: 'pi',\n category: 'Constants',\n syntax: ['pi'],\n description: 'The number pi is a mathematical constant that is the ratio of a circle\\'s circumference to its diameter, and is approximately equal to 3.14159',\n examples: ['pi', 'sin(pi/2)'],\n seealso: ['tau']\n};", "export var SQRT12Docs = {\n name: 'SQRT1_2',\n category: 'Constants',\n syntax: ['SQRT1_2'],\n description: 'Returns the square root of 1/2, approximately equal to 0.707',\n examples: ['SQRT1_2', 'sqrt(1/2)'],\n seealso: []\n};", "export var SQRT2Docs = {\n name: 'SQRT2',\n category: 'Constants',\n syntax: ['SQRT2'],\n description: 'Returns the square root of 2, approximately equal to 1.414',\n examples: ['SQRT2', 'sqrt(2)'],\n seealso: []\n};", "export var tauDocs = {\n name: 'tau',\n category: 'Constants',\n syntax: ['tau'],\n description: 'Tau is the ratio constant of a circle\\'s circumference to radius, equal to 2 * pi, approximately 6.2832.',\n examples: ['tau', '2 * pi'],\n seealso: ['pi']\n};", "export var trueDocs = {\n name: 'true',\n category: 'Constants',\n syntax: ['true'],\n description: 'Boolean value true',\n examples: ['true'],\n seealso: ['false']\n};", "export var versionDocs = {\n name: 'version',\n category: 'Constants',\n syntax: ['version'],\n description: 'A string with the version number of math.js',\n examples: ['version'],\n seealso: []\n};", "export var bignumberDocs = {\n name: 'bignumber',\n category: 'Construction',\n syntax: ['bignumber(x)'],\n description: 'Create a big number from a number or string.',\n examples: ['0.1 + 0.2', 'bignumber(0.1) + bignumber(0.2)', 'bignumber(\"7.2\")', 'bignumber(\"7.2e500\")', 'bignumber([0.1, 0.2, 0.3])'],\n seealso: ['boolean', 'bigint', 'complex', 'fraction', 'index', 'matrix', 'string', 'unit']\n};", "export var bigintDocs = {\n name: 'bigint',\n category: 'Construction',\n syntax: ['bigint(x)'],\n description: 'Create a bigint, an integer with an arbitrary number of digits, from a number or string.',\n examples: ['123123123123123123 # a large number will lose digits', 'bigint(\"123123123123123123\")', 'bignumber([\"1\", \"3\", \"5\"])'],\n seealso: ['boolean', 'bignumber', 'number', 'complex', 'fraction', 'index', 'matrix', 'string', 'unit']\n};", "export var booleanDocs = {\n name: 'boolean',\n category: 'Construction',\n syntax: ['x', 'boolean(x)'],\n description: 'Convert a string or number into a boolean.',\n examples: ['boolean(0)', 'boolean(1)', 'boolean(3)', 'boolean(\"true\")', 'boolean(\"false\")', 'boolean([1, 0, 1, 1])'],\n seealso: ['bignumber', 'complex', 'index', 'matrix', 'number', 'string', 'unit']\n};", "export var complexDocs = {\n name: 'complex',\n category: 'Construction',\n syntax: ['complex()', 'complex(re, im)', 'complex(string)'],\n description: 'Create a complex number.',\n examples: ['complex()', 'complex(2, 3)', 'complex(\"7 - 2i\")'],\n seealso: ['bignumber', 'boolean', 'index', 'matrix', 'number', 'string', 'unit']\n};", "export var createUnitDocs = {\n name: 'createUnit',\n category: 'Construction',\n syntax: ['createUnit(definitions)', 'createUnit(name, definition)'],\n description: 'Create a user-defined unit and register it with the Unit type.',\n examples: ['createUnit(\"foo\")', 'createUnit(\"knot\", {definition: \"0.514444444 m/s\", aliases: [\"knots\", \"kt\", \"kts\"]})', 'createUnit(\"mph\", \"1 mile/hour\")'],\n seealso: ['unit', 'splitUnit']\n};", "export var fractionDocs = {\n name: 'fraction',\n category: 'Construction',\n syntax: ['fraction(num)', 'fraction(matrix)', 'fraction(num,den)', 'fraction({n: num, d: den})'],\n description: 'Create a fraction from a number or from integer numerator and denominator.',\n examples: ['fraction(0.125)', 'fraction(1, 3) + fraction(2, 5)', 'fraction({n: 333, d: 53})', 'fraction([sqrt(9), sqrt(10), sqrt(11)])'],\n seealso: ['bignumber', 'boolean', 'complex', 'index', 'matrix', 'string', 'unit']\n};", "export var indexDocs = {\n name: 'index',\n category: 'Construction',\n syntax: ['[start]', '[start:end]', '[start:step:end]', '[start1, start 2, ...]', '[start1:end1, start2:end2, ...]', '[start1:step1:end1, start2:step2:end2, ...]'],\n description: 'Create an index to get or replace a subset of a matrix',\n examples: ['A = [1, 2, 3; 4, 5, 6]', 'A[1, :]', 'A[1, 2] = 50', 'A[1:2, 1:2] = 1', 'B = [1, 2, 3]', 'B[B>1 and B<3]'],\n seealso: ['bignumber', 'boolean', 'complex', 'matrix,', 'number', 'range', 'string', 'unit']\n};", "export var matrixDocs = {\n name: 'matrix',\n category: 'Construction',\n syntax: ['[]', '[a1, b1, ...; a2, b2, ...]', 'matrix()', 'matrix(\"dense\")', 'matrix([...])'],\n description: 'Create a matrix.',\n examples: ['[]', '[1, 2, 3]', '[1, 2, 3; 4, 5, 6]', 'matrix()', 'matrix([3, 4])', 'matrix([3, 4; 5, 6], \"sparse\")', 'matrix([3, 4; 5, 6], \"sparse\", \"number\")'],\n seealso: ['bignumber', 'boolean', 'complex', 'index', 'number', 'string', 'unit', 'sparse']\n};", "export var numberDocs = {\n name: 'number',\n category: 'Construction',\n syntax: ['x', 'number(x)', 'number(unit, valuelessUnit)'],\n description: 'Create a number or convert a string or boolean into a number.',\n examples: ['2', '2e3', '4.05', 'number(2)', 'number(\"7.2\")', 'number(true)', 'number([true, false, true, true])', 'number(unit(\"52cm\"), \"m\")'],\n seealso: ['bignumber', 'bigint', 'boolean', 'complex', 'fraction', 'index', 'matrix', 'string', 'unit']\n};", "export var sparseDocs = {\n name: 'sparse',\n category: 'Construction',\n syntax: ['sparse()', 'sparse([a1, b1, ...; a1, b2, ...])', 'sparse([a1, b1, ...; a1, b2, ...], \"number\")'],\n description: 'Create a sparse matrix.',\n examples: ['sparse()', 'sparse([3, 4; 5, 6])', 'sparse([3, 0; 5, 0], \"number\")'],\n seealso: ['bignumber', 'boolean', 'complex', 'index', 'number', 'string', 'unit', 'matrix']\n};", "export var splitUnitDocs = {\n name: 'splitUnit',\n category: 'Construction',\n syntax: ['splitUnit(unit: Unit, parts: Unit[])'],\n description: 'Split a unit in an array of units whose sum is equal to the original unit.',\n examples: ['splitUnit(1 m, [\"feet\", \"inch\"])'],\n seealso: ['unit', 'createUnit']\n};", "export var stringDocs = {\n name: 'string',\n category: 'Construction',\n syntax: ['\"text\"', 'string(x)'],\n description: 'Create a string or convert a value to a string',\n examples: ['\"Hello World!\"', 'string(4.2)', 'string(3 + 2i)'],\n seealso: ['bignumber', 'boolean', 'complex', 'index', 'matrix', 'number', 'unit']\n};", "export var unitDocs = {\n name: 'unit',\n category: 'Construction',\n syntax: ['value unit', 'unit(value, unit)', 'unit(string)'],\n description: 'Create a unit.',\n examples: ['5.5 mm', '3 inch', 'unit(7.1, \"kilogram\")', 'unit(\"23 deg\")'],\n seealso: ['bignumber', 'boolean', 'complex', 'index', 'matrix', 'number', 'string']\n};", "export var configDocs = {\n name: 'config',\n category: 'Core',\n syntax: ['config()', 'config(options)'],\n description: 'Get configuration or change configuration.',\n examples: ['config()', '1/3 + 1/4', 'config({number: \"Fraction\"})', '1/3 + 1/4'],\n seealso: []\n};", "export var importDocs = {\n name: 'import',\n category: 'Core',\n syntax: ['import(functions)', 'import(functions, options)'],\n description: 'Import functions or constants from an object.',\n examples: ['import({myFn: f(x)=x^2, myConstant: 32 })', 'myFn(2)', 'myConstant'],\n seealso: []\n};", "export var typedDocs = {\n name: 'typed',\n category: 'Core',\n syntax: ['typed(signatures)', 'typed(name, signatures)'],\n description: 'Create a typed function.',\n examples: ['double = typed({ \"number\": f(x)=x+x, \"string\": f(x)=concat(x,x) })', 'double(2)', 'double(\"hello\")'],\n seealso: []\n};", "export var derivativeDocs = {\n name: 'derivative',\n category: 'Algebra',\n syntax: ['derivative(expr, variable)', 'derivative(expr, variable, {simplify: boolean})'],\n description: 'Takes the derivative of an expression expressed in parser Nodes. The derivative will be taken over the supplied variable in the second parameter. If there are multiple variables in the expression, it will return a partial derivative.',\n examples: ['derivative(\"2x^3\", \"x\")', 'derivative(\"2x^3\", \"x\", {simplify: false})', 'derivative(\"2x^2 + 3x + 4\", \"x\")', 'derivative(\"sin(2x)\", \"x\")', 'f = parse(\"x^2 + x\")', 'x = parse(\"x\")', 'df = derivative(f, x)', 'df.evaluate({x: 3})'],\n seealso: ['simplify', 'parse', 'evaluate']\n};", "export var leafCountDocs = {\n name: 'leafCount',\n category: 'Algebra',\n syntax: ['leafCount(expr)'],\n description: 'Computes the number of leaves in the parse tree of the given expression',\n examples: ['leafCount(\"e^(i*pi)-1\")', 'leafCount(parse(\"{a: 22/7, b: 10^(1/2)}\"))'],\n seealso: ['simplify']\n};", "export var lsolveDocs = {\n name: 'lsolve',\n category: 'Algebra',\n syntax: ['x=lsolve(L, b)'],\n description: 'Finds one solution of the linear system L * x = b where L is an [n x n] lower triangular matrix and b is a [n] column vector.',\n examples: ['a = [-2, 3; 2, 1]', 'b = [11, 9]', 'x = lsolve(a, b)'],\n seealso: ['lsolveAll', 'lup', 'lusolve', 'usolve', 'matrix', 'sparse']\n};", "export var lsolveAllDocs = {\n name: 'lsolveAll',\n category: 'Algebra',\n syntax: ['x=lsolveAll(L, b)'],\n description: 'Finds all solutions of the linear system L * x = b where L is an [n x n] lower triangular matrix and b is a [n] column vector.',\n examples: ['a = [-2, 3; 2, 1]', 'b = [11, 9]', 'x = lsolve(a, b)'],\n seealso: ['lsolve', 'lup', 'lusolve', 'usolve', 'matrix', 'sparse']\n};", "export var lupDocs = {\n name: 'lup',\n category: 'Algebra',\n syntax: ['lup(m)'],\n description: 'Calculate the Matrix LU decomposition with partial pivoting. Matrix A is decomposed in three matrices (L, U, P) where P * A = L * U',\n examples: ['lup([[2, 1], [1, 4]])', 'lup(matrix([[2, 1], [1, 4]]))', 'lup(sparse([[2, 1], [1, 4]]))'],\n seealso: ['lusolve', 'lsolve', 'usolve', 'matrix', 'sparse', 'slu', 'qr']\n};", "export var lusolveDocs = {\n name: 'lusolve',\n category: 'Algebra',\n syntax: ['x=lusolve(A, b)', 'x=lusolve(lu, b)'],\n description: 'Solves the linear system A * x = b where A is an [n x n] matrix and b is a [n] column vector.',\n examples: ['a = [-2, 3; 2, 1]', 'b = [11, 9]', 'x = lusolve(a, b)'],\n seealso: ['lup', 'slu', 'lsolve', 'usolve', 'matrix', 'sparse']\n};", "export var polynomialRootDocs = {\n name: 'polynomialRoot',\n category: 'Algebra',\n syntax: ['x=polynomialRoot(-6, 3)', 'x=polynomialRoot(4, -4, 1)', 'x=polynomialRoot(-8, 12, -6, 1)'],\n description: 'Finds the roots of a univariate polynomial given by its coefficients starting from constant, linear, and so on, increasing in degree.',\n examples: ['a = polynomialRoot(-6, 11, -6, 1)'],\n seealso: ['cbrt', 'sqrt']\n};", "export var qrDocs = {\n name: 'qr',\n category: 'Algebra',\n syntax: ['qr(A)'],\n description: 'Calculates the Matrix QR decomposition. Matrix `A` is decomposed in two matrices (`Q`, `R`) where `Q` is an orthogonal matrix and `R` is an upper triangular matrix.',\n examples: ['qr([[1, -1, 4], [1, 4, -2], [1, 4, 2], [1, -1, 0]])'],\n seealso: ['lup', 'slu', 'matrix']\n};", "export var rationalizeDocs = {\n name: 'rationalize',\n category: 'Algebra',\n syntax: ['rationalize(expr)', 'rationalize(expr, scope)', 'rationalize(expr, scope, detailed)'],\n description: 'Transform a rationalizable expression in a rational fraction. If rational fraction is one variable polynomial then converts the numerator and denominator in canonical form, with decreasing exponents, returning the coefficients of numerator.',\n examples: ['rationalize(\"2x/y - y/(x+1)\")', 'rationalize(\"2x/y - y/(x+1)\", true)'],\n seealso: ['simplify']\n};", "export var resolveDocs = {\n name: 'resolve',\n category: 'Algebra',\n syntax: ['resolve(node, scope)'],\n description: 'Recursively substitute variables in an expression tree.',\n examples: ['resolve(parse(\"1 + x\"), { x: 7 })', 'resolve(parse(\"size(text)\"), { text: \"Hello World\" })', 'resolve(parse(\"x + y\"), { x: parse(\"3z\") })', 'resolve(parse(\"3x\"), { x: parse(\"y+z\"), z: parse(\"w^y\") })'],\n seealso: ['simplify', 'evaluate'],\n mayThrow: ['ReferenceError']\n};", "export var simplifyDocs = {\n name: 'simplify',\n category: 'Algebra',\n syntax: ['simplify(expr)', 'simplify(expr, rules)'],\n description: 'Simplify an expression tree.',\n examples: ['simplify(\"3 + 2 / 4\")', 'simplify(\"2x + x\")', 'f = parse(\"x * (x + 2 + x)\")', 'simplified = simplify(f)', 'simplified.evaluate({x: 2})'],\n seealso: ['simplifyCore', 'derivative', 'evaluate', 'parse', 'rationalize', 'resolve']\n};", "export var simplifyConstantDocs = {\n name: 'simplifyConstant',\n category: 'Algebra',\n syntax: ['simplifyConstant(expr)', 'simplifyConstant(expr, options)'],\n description: 'Replace constant subexpressions of node with their values.',\n examples: ['simplifyConstant(\"(3-3)*x\")', 'simplifyConstant(parse(\"z-cos(tau/8)\"))'],\n seealso: ['simplify', 'simplifyCore', 'evaluate']\n};", "export var simplifyCoreDocs = {\n name: 'simplifyCore',\n category: 'Algebra',\n syntax: ['simplifyCore(node)'],\n description: 'Perform simple one-pass simplifications on an expression tree.',\n examples: ['simplifyCore(parse(\"0*x\"))', 'simplifyCore(parse(\"(x+0)*2\"))'],\n seealso: ['simplify', 'simplifyConstant', 'evaluate']\n};", "export var sluDocs = {\n name: 'slu',\n category: 'Algebra',\n syntax: ['slu(A, order, threshold)'],\n description: 'Calculate the Matrix LU decomposition with full pivoting. Matrix A is decomposed in two matrices (L, U) and two permutation vectors (pinv, q) where P * A * Q = L * U',\n examples: ['slu(sparse([4.5, 0, 3.2, 0; 3.1, 2.9, 0, 0.9; 0, 1.7, 3, 0; 3.5, 0.4, 0, 1]), 1, 0.001)'],\n seealso: ['lusolve', 'lsolve', 'usolve', 'matrix', 'sparse', 'lup', 'qr']\n};", "export var symbolicEqualDocs = {\n name: 'symbolicEqual',\n category: 'Algebra',\n syntax: ['symbolicEqual(expr1, expr2)', 'symbolicEqual(expr1, expr2, options)'],\n description: 'Returns true if the difference of the expressions simplifies to 0',\n examples: ['symbolicEqual(\"x*y\",\"y*x\")', 'symbolicEqual(\"abs(x^2)\", \"x^2\")', 'symbolicEqual(\"abs(x)\", \"x\", {context: {abs: {trivial: true}}})'],\n seealso: ['simplify', 'evaluate']\n};", "export var usolveDocs = {\n name: 'usolve',\n category: 'Algebra',\n syntax: ['x=usolve(U, b)'],\n description: 'Finds one solution of the linear system U * x = b where U is an [n x n] upper triangular matrix and b is a [n] column vector.',\n examples: ['x=usolve(sparse([1, 1, 1, 1; 0, 1, 1, 1; 0, 0, 1, 1; 0, 0, 0, 1]), [1; 2; 3; 4])'],\n seealso: ['usolveAll', 'lup', 'lusolve', 'lsolve', 'matrix', 'sparse']\n};", "export var usolveAllDocs = {\n name: 'usolveAll',\n category: 'Algebra',\n syntax: ['x=usolve(U, b)'],\n description: 'Finds all solutions of the linear system U * x = b where U is an [n x n] upper triangular matrix and b is a [n] column vector.',\n examples: ['x=usolve(sparse([1, 1, 1, 1; 0, 1, 1, 1; 0, 0, 1, 1; 0, 0, 0, 1]), [1; 2; 3; 4])'],\n seealso: ['usolve', 'lup', 'lusolve', 'lsolve', 'matrix', 'sparse']\n};", "export var absDocs = {\n name: 'abs',\n category: 'Arithmetic',\n syntax: ['abs(x)'],\n description: 'Compute the absolute value.',\n examples: ['abs(3.5)', 'abs(-4.2)'],\n seealso: ['sign']\n};", "export var addDocs = {\n name: 'add',\n category: 'Operators',\n syntax: ['x + y', 'add(x, y)'],\n description: 'Add two values.',\n examples: ['a = 2.1 + 3.6', 'a - 3.6', '3 + 2i', '3 cm + 2 inch', '\"2.3\" + \"4\"'],\n seealso: ['subtract']\n};", "export var cbrtDocs = {\n name: 'cbrt',\n category: 'Arithmetic',\n syntax: ['cbrt(x)', 'cbrt(x, allRoots)'],\n description: 'Compute the cubic root value. If x = y * y * y, then y is the cubic root of x. When `x` is a number or complex number, an optional second argument `allRoots` can be provided to return all three cubic roots. If not provided, the principal root is returned',\n examples: ['cbrt(64)', 'cube(4)', 'cbrt(-8)', 'cbrt(2 + 3i)', 'cbrt(8i)', 'cbrt(8i, true)', 'cbrt(27 m^3)'],\n seealso: ['square', 'sqrt', 'cube', 'multiply']\n};", "export var ceilDocs = {\n name: 'ceil',\n category: 'Arithmetic',\n syntax: ['ceil(x)', 'ceil(x, n)', 'ceil(unit, valuelessUnit)', 'ceil(unit, n, valuelessUnit)'],\n description: 'Round a value towards plus infinity. If x is complex, both real and imaginary part are rounded towards plus infinity.',\n examples: ['ceil(3.2)', 'ceil(3.8)', 'ceil(-4.2)', 'ceil(3.241cm, cm)', 'ceil(3.241cm, 2, cm)'],\n seealso: ['floor', 'fix', 'round']\n};", "export var cubeDocs = {\n name: 'cube',\n category: 'Arithmetic',\n syntax: ['cube(x)'],\n description: 'Compute the cube of a value. The cube of x is x * x * x.',\n examples: ['cube(2)', '2^3', '2 * 2 * 2'],\n seealso: ['multiply', 'square', 'pow']\n};", "export var divideDocs = {\n name: 'divide',\n category: 'Operators',\n syntax: ['x / y', 'divide(x, y)'],\n description: 'Divide two values.',\n examples: ['a = 2 / 3', 'a * 3', '4.5 / 2', '3 + 4 / 2', '(3 + 4) / 2', '18 km / 4.5'],\n seealso: ['multiply']\n};", "export var dotDivideDocs = {\n name: 'dotDivide',\n category: 'Operators',\n syntax: ['x ./ y', 'dotDivide(x, y)'],\n description: 'Divide two values element wise.',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'b = [2, 1, 1; 3, 2, 5]', 'a ./ b'],\n seealso: ['multiply', 'dotMultiply', 'divide']\n};", "export var dotMultiplyDocs = {\n name: 'dotMultiply',\n category: 'Operators',\n syntax: ['x .* y', 'dotMultiply(x, y)'],\n description: 'Multiply two values element wise.',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'b = [2, 1, 1; 3, 2, 5]', 'a .* b'],\n seealso: ['multiply', 'divide', 'dotDivide']\n};", "export var dotPowDocs = {\n name: 'dotPow',\n category: 'Operators',\n syntax: ['x .^ y', 'dotPow(x, y)'],\n description: 'Calculates the power of x to y element wise.',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'a .^ 2'],\n seealso: ['pow']\n};", "export var expDocs = {\n name: 'exp',\n category: 'Arithmetic',\n syntax: ['exp(x)'],\n description: 'Calculate the exponent of a value.',\n examples: ['exp(1.3)', 'e ^ 1.3', 'log(exp(1.3))', 'x = 2.4', '(exp(i*x) == cos(x) + i*sin(x)) # Euler\\'s formula'],\n seealso: ['expm', 'expm1', 'pow', 'log']\n};", "export var expmDocs = {\n name: 'expm',\n category: 'Arithmetic',\n syntax: ['exp(x)'],\n description: 'Compute the matrix exponential, expm(A) = e^A. ' + 'The matrix must be square. ' + 'Not to be confused with exp(a), which performs element-wise exponentiation.',\n examples: ['expm([[0,2],[0,0]])'],\n seealso: ['exp']\n};", "export var expm1Docs = {\n name: 'expm1',\n category: 'Arithmetic',\n syntax: ['expm1(x)'],\n description: 'Calculate the value of subtracting 1 from the exponential value.',\n examples: ['expm1(2)', 'pow(e, 2) - 1', 'log(expm1(2) + 1)'],\n seealso: ['exp', 'pow', 'log']\n};", "export var fixDocs = {\n name: 'fix',\n category: 'Arithmetic',\n syntax: ['fix(x)', 'fix(x, n)', 'fix(unit, valuelessUnit)', 'fix(unit, n, valuelessUnit)'],\n description: 'Round a value towards zero. If x is complex, both real and imaginary part are rounded towards zero.',\n examples: ['fix(3.2)', 'fix(3.8)', 'fix(-4.2)', 'fix(-4.8)', 'fix(3.241cm, cm)', 'fix(3.241cm, 2, cm)'],\n seealso: ['ceil', 'floor', 'round']\n};", "export var floorDocs = {\n name: 'floor',\n category: 'Arithmetic',\n syntax: ['floor(x)', 'floor(x, n)', 'floor(unit, valuelessUnit)', 'floor(unit, n, valuelessUnit)'],\n description: 'Round a value towards minus infinity.If x is complex, both real and imaginary part are rounded towards minus infinity.',\n examples: ['floor(3.2)', 'floor(3.8)', 'floor(-4.2)', 'floor(3.241cm, cm)', 'floor(3.241cm, 2, cm)'],\n seealso: ['ceil', 'fix', 'round']\n};", "export var gcdDocs = {\n name: 'gcd',\n category: 'Arithmetic',\n syntax: ['gcd(a, b)', 'gcd(a, b, c, ...)'],\n description: 'Compute the greatest common divisor.',\n examples: ['gcd(8, 12)', 'gcd(-4, 6)', 'gcd(25, 15, -10)'],\n seealso: ['lcm', 'xgcd']\n};", "export var hypotDocs = {\n name: 'hypot',\n category: 'Arithmetic',\n syntax: ['hypot(a, b, c, ...)', 'hypot([a, b, c, ...])'],\n description: 'Calculate the hypotenuse of a list with values.',\n examples: ['hypot(3, 4)', 'sqrt(3^2 + 4^2)', 'hypot(-2)', 'hypot([3, 4, 5])'],\n seealso: ['abs', 'norm']\n};", "export var invmodDocs = {\n name: 'invmod',\n category: 'Arithmetic',\n syntax: ['invmod(a, b)'],\n description: 'Calculate the (modular) multiplicative inverse of a modulo b. Solution to the equation ax \u2263 1 (mod b)',\n examples: ['invmod(8, 12)', 'invmod(7, 13)', 'invmod(15151, 15122)'],\n seealso: ['gcd', 'xgcd']\n};", "export var lcmDocs = {\n name: 'lcm',\n category: 'Arithmetic',\n syntax: ['lcm(x, y)'],\n description: 'Compute the least common multiple.',\n examples: ['lcm(4, 6)', 'lcm(6, 21)', 'lcm(6, 21, 5)'],\n seealso: ['gcd']\n};", "export var logDocs = {\n name: 'log',\n category: 'Arithmetic',\n syntax: ['log(x)', 'log(x, base)'],\n description: 'Compute the logarithm of a value. If no base is provided, the natural logarithm of x is calculated. If base if provided, the logarithm is calculated for the specified base. log(x, base) is defined as log(x) / log(base).',\n examples: ['log(3.5)', 'a = log(2.4)', 'exp(a)', '10 ^ 4', 'log(10000, 10)', 'log(10000) / log(10)', 'b = log(1024, 2)', '2 ^ b'],\n seealso: ['exp', 'log1p', 'log2', 'log10']\n};", "export var log10Docs = {\n name: 'log10',\n category: 'Arithmetic',\n syntax: ['log10(x)'],\n description: 'Compute the 10-base logarithm of a value.',\n examples: ['log10(0.00001)', 'log10(10000)', '10 ^ 4', 'log(10000) / log(10)', 'log(10000, 10)'],\n seealso: ['exp', 'log']\n};", "export var log1pDocs = {\n name: 'log1p',\n category: 'Arithmetic',\n syntax: ['log1p(x)', 'log1p(x, base)'],\n description: 'Calculate the logarithm of a `value+1`',\n examples: ['log1p(2.5)', 'exp(log1p(1.4))', 'pow(10, 4)', 'log1p(9999, 10)', 'log1p(9999) / log(10)'],\n seealso: ['exp', 'log', 'log2', 'log10']\n};", "export var log2Docs = {\n name: 'log2',\n category: 'Arithmetic',\n syntax: ['log2(x)'],\n description: 'Calculate the 2-base of a value. This is the same as calculating `log(x, 2)`.',\n examples: ['log2(0.03125)', 'log2(16)', 'log2(16) / log2(2)', 'pow(2, 4)'],\n seealso: ['exp', 'log1p', 'log', 'log10']\n};", "export var modDocs = {\n name: 'mod',\n category: 'Operators',\n syntax: ['x % y', 'x mod y', 'mod(x, y)'],\n description: 'Calculates the modulus, the remainder of an integer division.',\n examples: ['7 % 3', '11 % 2', '10 mod 4', 'isOdd(x) = x % 2', 'isOdd(2)', 'isOdd(3)'],\n seealso: ['divide']\n};", "export var multiplyDocs = {\n name: 'multiply',\n category: 'Operators',\n syntax: ['x * y', 'multiply(x, y)'],\n description: 'multiply two values.',\n examples: ['a = 2.1 * 3.4', 'a / 3.4', '2 * 3 + 4', '2 * (3 + 4)', '3 * 2.1 km'],\n seealso: ['divide']\n};", "export var normDocs = {\n name: 'norm',\n category: 'Arithmetic',\n syntax: ['norm(x)', 'norm(x, p)'],\n description: 'Calculate the norm of a number, vector or matrix.',\n examples: ['abs(-3.5)', 'norm(-3.5)', 'norm(3 - 4i)', 'norm([1, 2, -3], Infinity)', 'norm([1, 2, -3], -Infinity)', 'norm([3, 4], 2)', 'norm([[1, 2], [3, 4]], 1)', 'norm([[1, 2], [3, 4]], \"inf\")', 'norm([[1, 2], [3, 4]], \"fro\")']\n};", "export var nthRootDocs = {\n name: 'nthRoot',\n category: 'Arithmetic',\n syntax: ['nthRoot(a)', 'nthRoot(a, root)'],\n description: 'Calculate the nth root of a value. ' + 'The principal nth root of a positive real number A, ' + 'is the positive real solution of the equation \"x^root = A\".',\n examples: ['4 ^ 3', 'nthRoot(64, 3)', 'nthRoot(9, 2)', 'sqrt(9)'],\n seealso: ['nthRoots', 'pow', 'sqrt']\n};", "export var nthRootsDocs = {\n name: 'nthRoots',\n category: 'Arithmetic',\n syntax: ['nthRoots(A)', 'nthRoots(A, root)'],\n description: '' + 'Calculate the nth roots of a value. ' + 'An nth root of a positive real number A, ' + 'is a positive real solution of the equation \"x^root = A\". ' + 'This function returns an array of complex values.',\n examples: ['nthRoots(1)', 'nthRoots(1, 3)'],\n seealso: ['sqrt', 'pow', 'nthRoot']\n};", "export var powDocs = {\n name: 'pow',\n category: 'Operators',\n syntax: ['x ^ y', 'pow(x, y)'],\n description: 'Calculates the power of x to y, x^y.',\n examples: ['2^3', '2*2*2', '1 + e ^ (pi * i)', 'pow([[1, 2], [4, 3]], 2)', 'pow([[1, 2], [4, 3]], -1)'],\n seealso: ['multiply', 'nthRoot', 'nthRoots', 'sqrt']\n};", "export var roundDocs = {\n name: 'round',\n category: 'Arithmetic',\n syntax: ['round(x)', 'round(x, n)', 'round(unit, valuelessUnit)', 'round(unit, n, valuelessUnit)'],\n description: 'round a value towards the nearest integer.If x is complex, both real and imaginary part are rounded towards the nearest integer. When n is specified, the value is rounded to n decimals.',\n examples: ['round(3.2)', 'round(3.8)', 'round(-4.2)', 'round(-4.8)', 'round(pi, 3)', 'round(123.45678, 2)', 'round(3.241cm, 2, cm)', 'round([3.2, 3.8, -4.7])'],\n seealso: ['ceil', 'floor', 'fix']\n};", "export var signDocs = {\n name: 'sign',\n category: 'Arithmetic',\n syntax: ['sign(x)'],\n description: 'Compute the sign of a value. The sign of a value x is 1 when x>1, -1 when x<0, and 0 when x=0.',\n examples: ['sign(3.5)', 'sign(-4.2)', 'sign(0)'],\n seealso: ['abs']\n};", "export var sqrtDocs = {\n name: 'sqrt',\n category: 'Arithmetic',\n syntax: ['sqrt(x)'],\n description: 'Compute the square root value. If x = y * y, then y is the square root of x.',\n examples: ['sqrt(25)', '5 * 5', 'sqrt(-1)'],\n seealso: ['square', 'sqrtm', 'multiply', 'nthRoot', 'nthRoots', 'pow']\n};", "export var sqrtmDocs = {\n name: 'sqrtm',\n category: 'Arithmetic',\n syntax: ['sqrtm(x)'],\n description: 'Calculate the principal square root of a square matrix. The principal square root matrix `X` of another matrix `A` is such that `X * X = A`.',\n examples: ['sqrtm([[33, 24], [48, 57]])'],\n seealso: ['sqrt', 'abs', 'square', 'multiply']\n};", "export var sylvesterDocs = {\n name: 'sylvester',\n category: 'Algebra',\n syntax: ['sylvester(A,B,C)'],\n description: 'Solves the real-valued Sylvester equation AX+XB=C for X',\n examples: ['sylvester([[-1, -2], [1, 1]], [[-2, 1], [-1, 2]], [[-3, 2], [3, 0]])', 'A = [[-1, -2], [1, 1]]; B = [[2, -1], [1, -2]]; C = [[-3, 2], [3, 0]]', 'sylvester(A, B, C)'],\n seealso: ['schur', 'lyap']\n};", "export var schurDocs = {\n name: 'schur',\n category: 'Algebra',\n syntax: ['schur(A)'],\n description: 'Performs a real Schur decomposition of the real matrix A = UTU\\'',\n examples: ['schur([[1, 0], [-4, 3]])', 'A = [[1, 0], [-4, 3]]', 'schur(A)'],\n seealso: ['lyap', 'sylvester']\n};", "export var lyapDocs = {\n name: 'lyap',\n category: 'Algebra',\n syntax: ['lyap(A,Q)'],\n description: 'Solves the Continuous-time Lyapunov equation AP+PA\\'+Q=0 for P',\n examples: ['lyap([[-2, 0], [1, -4]], [[3, 1], [1, 3]])', 'A = [[-2, 0], [1, -4]]', 'Q = [[3, 1], [1, 3]]', 'lyap(A,Q)'],\n seealso: ['schur', 'sylvester']\n};", "export var squareDocs = {\n name: 'square',\n category: 'Arithmetic',\n syntax: ['square(x)'],\n description: 'Compute the square of a value. The square of x is x * x.',\n examples: ['square(3)', 'sqrt(9)', '3^2', '3 * 3'],\n seealso: ['multiply', 'pow', 'sqrt', 'cube']\n};", "export var subtractDocs = {\n name: 'subtract',\n category: 'Operators',\n syntax: ['x - y', 'subtract(x, y)'],\n description: 'subtract two values.',\n examples: ['a = 5.3 - 2', 'a + 2', '2/3 - 1/6', '2 * 3 - 3', '2.1 km - 500m'],\n seealso: ['add']\n};", "export var unaryMinusDocs = {\n name: 'unaryMinus',\n category: 'Operators',\n syntax: ['-x', 'unaryMinus(x)'],\n description: 'Inverse the sign of a value. Converts booleans and strings to numbers.',\n examples: ['-4.5', '-(-5.6)', '-\"22\"'],\n seealso: ['add', 'subtract', 'unaryPlus']\n};", "export var unaryPlusDocs = {\n name: 'unaryPlus',\n category: 'Operators',\n syntax: ['+x', 'unaryPlus(x)'],\n description: 'Converts booleans and strings to numbers.',\n examples: ['+true', '+\"2\"'],\n seealso: ['add', 'subtract', 'unaryMinus']\n};", "export var xgcdDocs = {\n name: 'xgcd',\n category: 'Arithmetic',\n syntax: ['xgcd(a, b)'],\n description: 'Calculate the extended greatest common divisor for two values. The result is an array [d, x, y] with 3 entries, where d is the greatest common divisor, and d = x * a + y * b.',\n examples: ['xgcd(8, 12)', 'gcd(8, 12)', 'xgcd(36163, 21199)'],\n seealso: ['gcd', 'lcm']\n};", "export var bitAndDocs = {\n name: 'bitAnd',\n category: 'Bitwise',\n syntax: ['x & y', 'bitAnd(x, y)'],\n description: 'Bitwise AND operation. Performs the logical AND operation on each pair of the corresponding bits of the two given values by multiplying them. If both bits in the compared position are 1, the bit in the resulting binary representation is 1, otherwise, the result is 0',\n examples: ['5 & 3', 'bitAnd(53, 131)', '[1, 12, 31] & 42'],\n seealso: ['bitNot', 'bitOr', 'bitXor', 'leftShift', 'rightArithShift', 'rightLogShift']\n};", "export var bitNotDocs = {\n name: 'bitNot',\n category: 'Bitwise',\n syntax: ['~x', 'bitNot(x)'],\n description: 'Bitwise NOT operation. Performs a logical negation on each bit of the given value. Bits that are 0 become 1, and those that are 1 become 0.',\n examples: ['~1', '~2', 'bitNot([2, -3, 4])'],\n seealso: ['bitAnd', 'bitOr', 'bitXor', 'leftShift', 'rightArithShift', 'rightLogShift']\n};", "export var bitOrDocs = {\n name: 'bitOr',\n category: 'Bitwise',\n syntax: ['x | y', 'bitOr(x, y)'],\n description: 'Bitwise OR operation. Performs the logical inclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if the first bit is 1 or the second bit is 1 or both bits are 1, otherwise, the result is 0.',\n examples: ['5 | 3', 'bitOr([1, 2, 3], 4)'],\n seealso: ['bitAnd', 'bitNot', 'bitXor', 'leftShift', 'rightArithShift', 'rightLogShift']\n};", "export var bitXorDocs = {\n name: 'bitXor',\n category: 'Bitwise',\n syntax: ['bitXor(x, y)'],\n description: 'Bitwise XOR operation, exclusive OR. Performs the logical exclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if only the first bit is 1 or only the second bit is 1, but will be 0 if both are 0 or both are 1.',\n examples: ['bitOr(1, 2)', 'bitXor([2, 3, 4], 4)'],\n seealso: ['bitAnd', 'bitNot', 'bitOr', 'leftShift', 'rightArithShift', 'rightLogShift']\n};", "export var leftShiftDocs = {\n name: 'leftShift',\n category: 'Bitwise',\n syntax: ['x << y', 'leftShift(x, y)'],\n description: 'Bitwise left logical shift of a value x by y number of bits.',\n examples: ['4 << 1', '8 >> 1'],\n seealso: ['bitAnd', 'bitNot', 'bitOr', 'bitXor', 'rightArithShift', 'rightLogShift']\n};", "export var rightArithShiftDocs = {\n name: 'rightArithShift',\n category: 'Bitwise',\n syntax: ['x >> y', 'rightArithShift(x, y)'],\n description: 'Bitwise right arithmetic shift of a value x by y number of bits.',\n examples: ['8 >> 1', '4 << 1', '-12 >> 2'],\n seealso: ['bitAnd', 'bitNot', 'bitOr', 'bitXor', 'leftShift', 'rightLogShift']\n};", "export var rightLogShiftDocs = {\n name: 'rightLogShift',\n category: 'Bitwise',\n syntax: ['x >>> y', 'rightLogShift(x, y)'],\n description: 'Bitwise right logical shift of a value x by y number of bits.',\n examples: ['8 >>> 1', '4 << 1', '-12 >>> 2'],\n seealso: ['bitAnd', 'bitNot', 'bitOr', 'bitXor', 'leftShift', 'rightArithShift']\n};", "export var bellNumbersDocs = {\n name: 'bellNumbers',\n category: 'Combinatorics',\n syntax: ['bellNumbers(n)'],\n description: 'The Bell Numbers count the number of partitions of a set. A partition is a pairwise disjoint subset of S whose union is S. `bellNumbers` only takes integer arguments. The following condition must be enforced: n >= 0.',\n examples: ['bellNumbers(3)', 'bellNumbers(8)'],\n seealso: ['stirlingS2']\n};", "export var catalanDocs = {\n name: 'catalan',\n category: 'Combinatorics',\n syntax: ['catalan(n)'],\n description: 'The Catalan Numbers enumerate combinatorial structures of many different types. catalan only takes integer arguments. The following condition must be enforced: n >= 0.',\n examples: ['catalan(3)', 'catalan(8)'],\n seealso: ['bellNumbers']\n};", "export var compositionDocs = {\n name: 'composition',\n category: 'Combinatorics',\n syntax: ['composition(n, k)'],\n description: 'The composition counts of n into k parts. composition only takes integer arguments. The following condition must be enforced: k <= n.',\n examples: ['composition(5, 3)'],\n seealso: ['combinations']\n};", "export var stirlingS2Docs = {\n name: 'stirlingS2',\n category: 'Combinatorics',\n syntax: ['stirlingS2(n, k)'],\n description: 'he Stirling numbers of the second kind, counts the number of ways to partition a set of n labelled objects into k nonempty unlabelled subsets. `stirlingS2` only takes integer arguments. The following condition must be enforced: k <= n. If n = k or k = 1, then s(n,k) = 1.',\n examples: ['stirlingS2(5, 3)'],\n seealso: ['bellNumbers']\n};", "export var argDocs = {\n name: 'arg',\n category: 'Complex',\n syntax: ['arg(x)'],\n description: 'Compute the argument of a complex value. If x = a+bi, the argument is computed as atan2(b, a).',\n examples: ['arg(2 + 2i)', 'atan2(3, 2)', 'arg(2 + 3i)'],\n seealso: ['re', 'im', 'conj', 'abs']\n};", "export var conjDocs = {\n name: 'conj',\n category: 'Complex',\n syntax: ['conj(x)'],\n description: 'Compute the complex conjugate of a complex value. If x = a+bi, the complex conjugate is a-bi.',\n examples: ['conj(2 + 3i)', 'conj(2 - 3i)', 'conj(-5.2i)'],\n seealso: ['re', 'im', 'abs', 'arg']\n};", "export var imDocs = {\n name: 'im',\n category: 'Complex',\n syntax: ['im(x)'],\n description: 'Get the imaginary part of a complex number.',\n examples: ['im(2 + 3i)', 're(2 + 3i)', 'im(-5.2i)', 'im(2.4)'],\n seealso: ['re', 'conj', 'abs', 'arg']\n};", "export var reDocs = {\n name: 're',\n category: 'Complex',\n syntax: ['re(x)'],\n description: 'Get the real part of a complex number.',\n examples: ['re(2 + 3i)', 'im(2 + 3i)', 're(-5.2i)', 're(2.4)'],\n seealso: ['im', 'conj', 'abs', 'arg']\n};", "export var evaluateDocs = {\n name: 'evaluate',\n category: 'Expression',\n syntax: ['evaluate(expression)', 'evaluate(expression, scope)', 'evaluate([expr1, expr2, expr3, ...])', 'evaluate([expr1, expr2, expr3, ...], scope)'],\n description: 'Evaluate an expression or an array with expressions.',\n examples: ['evaluate(\"2 + 3\")', 'evaluate(\"sqrt(16)\")', 'evaluate(\"2 inch to cm\")', 'evaluate(\"sin(x * pi)\", { \"x\": 1/2 })', 'evaluate([\"width=2\", \"height=4\",\"width*height\"])'],\n seealso: []\n};", "export var helpDocs = {\n name: 'help',\n category: 'Expression',\n syntax: ['help(object)', 'help(string)'],\n description: 'Display documentation on a function or data type.',\n examples: ['help(sqrt)', 'help(\"complex\")'],\n seealso: []\n};", "export var distanceDocs = {\n name: 'distance',\n category: 'Geometry',\n syntax: ['distance([x1, y1], [x2, y2])', 'distance([[x1, y1], [x2, y2]])'],\n description: 'Calculates the Euclidean distance between two points.',\n examples: ['distance([0,0], [4,4])', 'distance([[0,0], [4,4]])'],\n seealso: []\n};", "export var intersectDocs = {\n name: 'intersect',\n category: 'Geometry',\n syntax: ['intersect(expr1, expr2, expr3, expr4)', 'intersect(expr1, expr2, expr3)'],\n description: 'Computes the intersection point of lines and/or planes.',\n examples: ['intersect([0, 0], [10, 10], [10, 0], [0, 10])', 'intersect([1, 0, 1], [4, -2, 2], [1, 1, 1, 6])'],\n seealso: []\n};", "export var andDocs = {\n name: 'and',\n category: 'Logical',\n syntax: ['x and y', 'and(x, y)'],\n description: 'Logical and. Test whether two values are both defined with a nonzero/nonempty value.',\n examples: ['true and false', 'true and true', '2 and 4'],\n seealso: ['not', 'or', 'xor']\n};", "export var notDocs = {\n name: 'not',\n category: 'Logical',\n syntax: ['not x', 'not(x)'],\n description: 'Logical not. Flips the boolean value of given argument.',\n examples: ['not true', 'not false', 'not 2', 'not 0'],\n seealso: ['and', 'or', 'xor']\n};", "export var orDocs = {\n name: 'or',\n category: 'Logical',\n syntax: ['x or y', 'or(x, y)'],\n description: 'Logical or. Test if at least one value is defined with a nonzero/nonempty value.',\n examples: ['true or false', 'false or false', '0 or 4'],\n seealso: ['not', 'and', 'xor']\n};", "export var xorDocs = {\n name: 'xor',\n category: 'Logical',\n syntax: ['x xor y', 'xor(x, y)'],\n description: 'Logical exclusive or, xor. Test whether one and only one value is defined with a nonzero/nonempty value.',\n examples: ['true xor false', 'false xor false', 'true xor true', '0 xor 4'],\n seealso: ['not', 'and', 'or']\n};", "export var columnDocs = {\n name: 'column',\n category: 'Matrix',\n syntax: ['column(x, index)'],\n description: 'Return a column from a matrix or array.',\n examples: ['A = [[1, 2], [3, 4]]', 'column(A, 1)', 'column(A, 2)'],\n seealso: ['row', 'matrixFromColumns']\n};", "export var concatDocs = {\n name: 'concat',\n category: 'Matrix',\n syntax: ['concat(A, B, C, ...)', 'concat(A, B, C, ..., dim)'],\n description: 'Concatenate matrices. By default, the matrices are concatenated by the last dimension. The dimension on which to concatenate can be provided as last argument.',\n examples: ['A = [1, 2; 5, 6]', 'B = [3, 4; 7, 8]', 'concat(A, B)', 'concat(A, B, 1)', 'concat(A, B, 2)'],\n seealso: ['det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};", "export var countDocs = {\n name: 'count',\n category: 'Matrix',\n syntax: ['count(x)'],\n description: 'Count the number of elements of a matrix, array or string.',\n examples: ['a = [1, 2; 3, 4; 5, 6]', 'count(a)', 'size(a)', 'count(\"hello world\")'],\n seealso: ['size']\n};", "export var crossDocs = {\n name: 'cross',\n category: 'Matrix',\n syntax: ['cross(A, B)'],\n description: 'Calculate the cross product for two vectors in three dimensional space.',\n examples: ['cross([1, 1, 0], [0, 1, 1])', 'cross([3, -3, 1], [4, 9, 2])', 'cross([2, 3, 4], [5, 6, 7])'],\n seealso: ['multiply', 'dot']\n};", "export var ctransposeDocs = {\n name: 'ctranspose',\n category: 'Matrix',\n syntax: ['x\\'', 'ctranspose(x)'],\n description: 'Complex Conjugate and Transpose a matrix',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'a\\'', 'ctranspose(a)'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'zeros']\n};", "export var detDocs = {\n name: 'det',\n category: 'Matrix',\n syntax: ['det(x)'],\n description: 'Calculate the determinant of a matrix',\n examples: ['det([1, 2; 3, 4])', 'det([-2, 2, 3; -1, 1, 3; 2, 0, -1])'],\n seealso: ['concat', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};", "export var diagDocs = {\n name: 'diag',\n category: 'Matrix',\n syntax: ['diag(x)', 'diag(x, k)'],\n description: 'Create a diagonal matrix or retrieve the diagonal of a matrix. When x is a vector, a matrix with the vector values on the diagonal will be returned. When x is a matrix, a vector with the diagonal values of the matrix is returned. When k is provided, the k-th diagonal will be filled in or retrieved, if k is positive, the values are placed on the super diagonal. When k is negative, the values are placed on the sub diagonal.',\n examples: ['diag(1:3)', 'diag(1:3, 1)', 'a = [1, 2, 3; 4, 5, 6; 7, 8, 9]', 'diag(a)'],\n seealso: ['concat', 'det', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};", "export var diffDocs = {\n name: 'diff',\n category: 'Matrix',\n syntax: ['diff(arr)', 'diff(arr, dim)'],\n description: ['Create a new matrix or array with the difference of the passed matrix or array.', 'Dim parameter is optional and used to indicate the dimension of the array/matrix to apply the difference', 'If no dimension parameter is passed it is assumed as dimension 0', 'Dimension is zero-based in javascript and one-based in the parser', 'Arrays must be \\'rectangular\\' meaning arrays like [1, 2]', 'If something is passed as a matrix it will be returned as a matrix but other than that all matrices are converted to arrays'],\n examples: ['A = [1, 2, 4, 7, 0]', 'diff(A)', 'diff(A, 1)', 'B = [[1, 2], [3, 4]]', 'diff(B)', 'diff(B, 1)', 'diff(B, 2)', 'diff(B, bignumber(2))', 'diff([[1, 2], matrix([3, 4])], 2)'],\n seealso: ['subtract', 'partitionSelect']\n};", "export var dotDocs = {\n name: 'dot',\n category: 'Matrix',\n syntax: ['dot(A, B)', 'A * B'],\n description: 'Calculate the dot product of two vectors. ' + 'The dot product of A = [a1, a2, a3, ..., an] and B = [b1, b2, b3, ..., bn] ' + 'is defined as dot(A, B) = a1 * b1 + a2 * b2 + a3 * b3 + ... + an * bn',\n examples: ['dot([2, 4, 1], [2, 2, 3])', '[2, 4, 1] * [2, 2, 3]'],\n seealso: ['multiply', 'cross']\n};", "export var eigsDocs = {\n name: 'eigs',\n category: 'Matrix',\n syntax: ['eigs(x)'],\n description: 'Calculate the eigenvalues and optionally eigenvectors of a square matrix',\n examples: ['eigs([[5, 2.3], [2.3, 1]])', 'eigs([[1, 2, 3], [4, 5, 6], [7, 8, 9]], { precision: 1e-6, eigenvectors: false })'],\n seealso: ['inv']\n};", "export var filterDocs = {\n name: 'filter',\n category: 'Matrix',\n syntax: ['filter(x, test)'],\n description: 'Filter items in a matrix.',\n examples: ['isPositive(x) = x > 0', 'filter([6, -2, -1, 4, 3], isPositive)', 'filter([6, -2, 0, 1, 0], x != 0)'],\n seealso: ['sort', 'map', 'forEach']\n};", "export var flattenDocs = {\n name: 'flatten',\n category: 'Matrix',\n syntax: ['flatten(x)'],\n description: 'Flatten a multi dimensional matrix into a single dimensional matrix.',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'size(a)', 'b = flatten(a)', 'size(b)'],\n seealso: ['concat', 'resize', 'size', 'squeeze']\n};", "export var forEachDocs = {\n name: 'forEach',\n category: 'Matrix',\n syntax: ['forEach(x, callback)'],\n description: 'Iterates over all elements of a matrix/array, and executes the given callback function.',\n examples: ['numberOfPets = {}', 'addPet(n) = numberOfPets[n] = (numberOfPets[n] ? numberOfPets[n]:0 ) + 1;', 'forEach([\"Dog\",\"Cat\",\"Cat\"], addPet)', 'numberOfPets'],\n seealso: ['map', 'sort', 'filter']\n};", "export var getMatrixDataTypeDocs = {\n name: 'getMatrixDataType',\n category: 'Matrix',\n syntax: ['getMatrixDataType(x)'],\n description: 'Find the data type of all elements in a matrix or array, ' + 'for example \"number\" if all items are a number ' + 'and \"Complex\" if all values are complex numbers. ' + 'If a matrix contains more than one data type, it will return \"mixed\".',\n examples: ['getMatrixDataType([1, 2, 3])', 'getMatrixDataType([[5 cm], [2 inch]])', 'getMatrixDataType([1, \"text\"])', 'getMatrixDataType([1, bignumber(4)])'],\n seealso: ['matrix', 'sparse', 'typeOf']\n};", "export var identityDocs = {\n name: 'identity',\n category: 'Matrix',\n syntax: ['identity(n)', 'identity(m, n)', 'identity([m, n])'],\n description: 'Returns the identity matrix with size m-by-n. The matrix has ones on the diagonal and zeros elsewhere.',\n examples: ['identity(3)', 'identity(3, 5)', 'a = [1, 2, 3; 4, 5, 6]', 'identity(size(a))'],\n seealso: ['concat', 'det', 'diag', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};", "export var invDocs = {\n name: 'inv',\n category: 'Matrix',\n syntax: ['inv(x)'],\n description: 'Calculate the inverse of a matrix',\n examples: ['inv([1, 2; 3, 4])', 'inv(4)', '1 / 4'],\n seealso: ['concat', 'det', 'diag', 'identity', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};", "export var pinvDocs = {\n name: 'pinv',\n category: 'Matrix',\n syntax: ['pinv(x)'],\n description: 'Calculate the Moore\u2013Penrose inverse of a matrix',\n examples: ['pinv([1, 2; 3, 4])', 'pinv([[1, 0], [0, 1], [0, 1]])', 'pinv(4)'],\n seealso: ['inv']\n};", "export var kronDocs = {\n name: 'kron',\n category: 'Matrix',\n syntax: ['kron(x, y)'],\n description: 'Calculates the Kronecker product of 2 matrices or vectors.',\n examples: ['kron([[1, 0], [0, 1]], [[1, 2], [3, 4]])', 'kron([1,1], [2,3,4])'],\n seealso: ['multiply', 'dot', 'cross']\n};", "export var mapDocs = {\n name: 'map',\n category: 'Matrix',\n syntax: ['map(x, callback)', 'map(x, y, ..., callback)'],\n description: 'Create a new matrix or array with the results of the callback function executed on each entry of the matrix/array or the matrices/arrays.',\n examples: ['map([1, 2, 3], square)', 'map([1, 2], [3, 4], f(a,b) = a + b)'],\n seealso: ['filter', 'forEach']\n};", "export var matrixFromColumnsDocs = {\n name: 'matrixFromColumns',\n category: 'Matrix',\n syntax: ['matrixFromColumns(...arr)', 'matrixFromColumns(row1, row2)', 'matrixFromColumns(row1, row2, row3)'],\n description: 'Create a dense matrix from vectors as individual columns.',\n examples: ['matrixFromColumns([1, 2, 3], [[4],[5],[6]])'],\n seealso: ['matrix', 'matrixFromRows', 'matrixFromFunction', 'zeros']\n};", "export var matrixFromFunctionDocs = {\n name: 'matrixFromFunction',\n category: 'Matrix',\n syntax: ['matrixFromFunction(size, fn)', 'matrixFromFunction(size, fn, format)', 'matrixFromFunction(size, fn, format, datatype)', 'matrixFromFunction(size, format, fn)', 'matrixFromFunction(size, format, datatype, fn)'],\n description: 'Create a matrix by evaluating a generating function at each index.',\n examples: ['f(I) = I[1] - I[2]', 'matrixFromFunction([3,3], f)', 'g(I) = I[1] - I[2] == 1 ? 4 : 0', 'matrixFromFunction([100, 100], \"sparse\", g)', 'matrixFromFunction([5], random)'],\n seealso: ['matrix', 'matrixFromRows', 'matrixFromColumns', 'zeros']\n};", "export var matrixFromRowsDocs = {\n name: 'matrixFromRows',\n category: 'Matrix',\n syntax: ['matrixFromRows(...arr)', 'matrixFromRows(row1, row2)', 'matrixFromRows(row1, row2, row3)'],\n description: 'Create a dense matrix from vectors as individual rows.',\n examples: ['matrixFromRows([1, 2, 3], [[4],[5],[6]])'],\n seealso: ['matrix', 'matrixFromColumns', 'matrixFromFunction', 'zeros']\n};", "export var onesDocs = {\n name: 'ones',\n category: 'Matrix',\n syntax: ['ones(m)', 'ones(m, n)', 'ones(m, n, p, ...)', 'ones([m])', 'ones([m, n])', 'ones([m, n, p, ...])'],\n description: 'Create a matrix containing ones.',\n examples: ['ones(3)', 'ones(3, 5)', 'ones([2,3]) * 4.5', 'a = [1, 2, 3; 4, 5, 6]', 'ones(size(a))'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};", "export var partitionSelectDocs = {\n name: 'partitionSelect',\n category: 'Matrix',\n syntax: ['partitionSelect(x, k)', 'partitionSelect(x, k, compare)'],\n description: 'Partition-based selection of an array or 1D matrix. Will find the kth smallest value, and mutates the input array. Uses Quickselect.',\n examples: ['partitionSelect([5, 10, 1], 2)', 'partitionSelect([\"C\", \"B\", \"A\", \"D\"], 1, compareText)', 'arr = [5, 2, 1]', 'partitionSelect(arr, 0) # returns 1, arr is now: [1, 2, 5]', 'arr', 'partitionSelect(arr, 1, \\'desc\\') # returns 2, arr is now: [5, 2, 1]', 'arr'],\n seealso: ['sort']\n};", "export var rangeDocs = {\n name: 'range',\n category: 'Type',\n syntax: ['start:end', 'start:step:end', 'range(start, end)', 'range(start, end, step)', 'range(string)'],\n description: 'Create a range. Lower bound of the range is included, upper bound is excluded.',\n examples: ['1:5', '3:-1:-3', 'range(3, 7)', 'range(0, 12, 2)', 'range(\"4:10\")', 'range(1m, 1m, 3m)', 'a = [1, 2, 3, 4; 5, 6, 7, 8]', 'a[1:2, 1:2]'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};", "export var reshapeDocs = {\n name: 'reshape',\n category: 'Matrix',\n syntax: ['reshape(x, sizes)'],\n description: 'Reshape a multi dimensional array to fit the specified dimensions.',\n examples: ['reshape([1, 2, 3, 4, 5, 6], [2, 3])', 'reshape([[1, 2], [3, 4]], [1, 4])', 'reshape([[1, 2], [3, 4]], [4])', 'reshape([1, 2, 3, 4], [-1, 2])'],\n seealso: ['size', 'squeeze', 'resize']\n};", "export var resizeDocs = {\n name: 'resize',\n category: 'Matrix',\n syntax: ['resize(x, size)', 'resize(x, size, defaultValue)'],\n description: 'Resize a matrix.',\n examples: ['resize([1,2,3,4,5], [3])', 'resize([1,2,3], [5])', 'resize([1,2,3], [5], -1)', 'resize(2, [2, 3])', 'resize(\"hello\", [8], \"!\")'],\n seealso: ['size', 'subset', 'squeeze', 'reshape']\n};", "export var rotateDocs = {\n name: 'rotate',\n category: 'Matrix',\n syntax: ['rotate(w, theta)', 'rotate(w, theta, v)'],\n description: 'Returns a 2-D rotation matrix (2x2) for a given angle (in radians). ' + 'Returns a 2-D rotation matrix (3x3) of a given angle (in radians) around given axis.',\n examples: ['rotate([1, 0], pi / 2)', 'rotate(matrix([1, 0]), unit(\"35deg\"))', 'rotate([1, 0, 0], unit(\"90deg\"), [0, 0, 1])', 'rotate(matrix([1, 0, 0]), unit(\"90deg\"), matrix([0, 0, 1]))'],\n seealso: ['matrix', 'rotationMatrix']\n};", "export var rotationMatrixDocs = {\n name: 'rotationMatrix',\n category: 'Matrix',\n syntax: ['rotationMatrix(theta)', 'rotationMatrix(theta, v)', 'rotationMatrix(theta, v, format)'],\n description: 'Returns a 2-D rotation matrix (2x2) for a given angle (in radians). ' + 'Returns a 2-D rotation matrix (3x3) of a given angle (in radians) around given axis.',\n examples: ['rotationMatrix(pi / 2)', 'rotationMatrix(unit(\"45deg\"), [0, 0, 1])', 'rotationMatrix(1, matrix([0, 0, 1]), \"sparse\")'],\n seealso: ['cos', 'sin']\n};", "export var rowDocs = {\n name: 'row',\n category: 'Matrix',\n syntax: ['row(x, index)'],\n description: 'Return a row from a matrix or array.',\n examples: ['A = [[1, 2], [3, 4]]', 'row(A, 1)', 'row(A, 2)'],\n seealso: ['column', 'matrixFromRows']\n};", "export var sizeDocs = {\n name: 'size',\n category: 'Matrix',\n syntax: ['size(x)'],\n description: 'Calculate the size of a matrix.',\n examples: ['size(2.3)', 'size(\"hello world\")', 'a = [1, 2; 3, 4; 5, 6]', 'size(a)', 'size(1:6)'],\n seealso: ['concat', 'count', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};", "export var sortDocs = {\n name: 'sort',\n category: 'Matrix',\n syntax: ['sort(x)', 'sort(x, compare)'],\n description: 'Sort the items in a matrix. Compare can be a string \"asc\", \"desc\", \"natural\", or a custom sort function.',\n examples: ['sort([5, 10, 1])', 'sort([\"C\", \"B\", \"A\", \"D\"], \"natural\")', 'sortByLength(a, b) = size(a)[1] - size(b)[1]', 'sort([\"Langdon\", \"Tom\", \"Sara\"], sortByLength)', 'sort([\"10\", \"1\", \"2\"], \"natural\")'],\n seealso: ['map', 'filter', 'forEach']\n};", "export var squeezeDocs = {\n name: 'squeeze',\n category: 'Matrix',\n syntax: ['squeeze(x)'],\n description: 'Remove inner and outer singleton dimensions from a matrix.',\n examples: ['a = zeros(3,2,1)', 'size(squeeze(a))', 'b = zeros(1,1,3)', 'size(squeeze(b))'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'subset', 'trace', 'transpose', 'zeros']\n};", "export var subsetDocs = {\n name: 'subset',\n category: 'Matrix',\n syntax: ['value(index)', 'value(index) = replacement', 'subset(value, [index])', 'subset(value, [index], replacement)'],\n description: 'Get or set a subset of the entries of a matrix or ' + 'characters of a string. ' + 'Indexes are one-based. There should be one index specification for ' + 'each dimension of the target. Each specification can be a single ' + 'index, a list of indices, or a range in colon notation `l:u`. ' + 'In a range, both the lower bound l and upper bound u are included; ' + 'and if a bound is omitted it defaults to the most extreme valid value. ' + 'The cartesian product of the indices specified in each dimension ' + 'determines the target of the operation.',\n examples: ['d = [1, 2; 3, 4]', 'e = []', 'e[1, 1:2] = [5, 6]', 'e[2, :] = [7, 8]', 'f = d * e', 'f[2, 1]', 'f[:, 1]', 'f[[1,2], [1,3]] = [9, 10; 11, 12]', 'f'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'trace', 'transpose', 'zeros']\n};", "export var traceDocs = {\n name: 'trace',\n category: 'Matrix',\n syntax: ['trace(A)'],\n description: 'Calculate the trace of a matrix: the sum of the elements on the main diagonal of a square matrix.',\n examples: ['A = [1, 2, 3; -1, 2, 3; 2, 0, 3]', 'trace(A)'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'transpose', 'zeros']\n};", "export var transposeDocs = {\n name: 'transpose',\n category: 'Matrix',\n syntax: ['x\\'', 'transpose(x)'],\n description: 'Transpose a matrix',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'a\\'', 'transpose(a)'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'zeros']\n};", "export var zerosDocs = {\n name: 'zeros',\n category: 'Matrix',\n syntax: ['zeros(m)', 'zeros(m, n)', 'zeros(m, n, p, ...)', 'zeros([m])', 'zeros([m, n])', 'zeros([m, n, p, ...])'],\n description: 'Create a matrix containing zeros.',\n examples: ['zeros(3)', 'zeros(3, 5)', 'a = [1, 2, 3; 4, 5, 6]', 'zeros(size(a))'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose']\n};", "export var fftDocs = {\n name: 'fft',\n category: 'Matrix',\n syntax: ['fft(x)'],\n description: 'Calculate N-dimensional Fourier transform',\n examples: ['fft([[1, 0], [1, 0]])'],\n seealso: ['ifft']\n};", "export var ifftDocs = {\n name: 'ifft',\n category: 'Matrix',\n syntax: ['ifft(x)'],\n description: 'Calculate N-dimensional inverse Fourier transform',\n examples: ['ifft([[2, 2], [0, 0]])'],\n seealso: ['fft']\n};", "export var combinationsDocs = {\n name: 'combinations',\n category: 'Probability',\n syntax: ['combinations(n, k)'],\n description: 'Compute the number of combinations of n items taken k at a time',\n examples: ['combinations(7, 5)'],\n seealso: ['combinationsWithRep', 'permutations', 'factorial']\n};", "export var combinationsWithRepDocs = {\n name: 'combinationsWithRep',\n category: 'Probability',\n syntax: ['combinationsWithRep(n, k)'],\n description: 'Compute the number of combinations of n items taken k at a time with replacements.',\n examples: ['combinationsWithRep(7, 5)'],\n seealso: ['combinations', 'permutations', 'factorial']\n};", "export var factorialDocs = {\n name: 'factorial',\n category: 'Probability',\n syntax: ['n!', 'factorial(n)'],\n description: 'Compute the factorial of a value',\n examples: ['5!', '5 * 4 * 3 * 2 * 1', '3!'],\n seealso: ['combinations', 'combinationsWithRep', 'permutations', 'gamma']\n};", "export var gammaDocs = {\n name: 'gamma',\n category: 'Probability',\n syntax: ['gamma(n)'],\n description: 'Compute the gamma function. For small values, the Lanczos approximation is used, and for large values the extended Stirling approximation.',\n examples: ['gamma(4)', '3!', 'gamma(1/2)', 'sqrt(pi)'],\n seealso: ['factorial']\n};", "export var lgammaDocs = {\n name: 'lgamma',\n category: 'Probability',\n syntax: ['lgamma(n)'],\n description: 'Logarithm of the gamma function for real, positive numbers and complex numbers, ' + 'using Lanczos approximation for numbers and Stirling series for complex numbers.',\n examples: ['lgamma(4)', 'lgamma(1/2)', 'lgamma(i)', 'lgamma(complex(1.1, 2))'],\n seealso: ['gamma']\n};", "export var kldivergenceDocs = {\n name: 'kldivergence',\n category: 'Probability',\n syntax: ['kldivergence(x, y)'],\n description: 'Calculate the Kullback-Leibler (KL) divergence between two distributions.',\n examples: ['kldivergence([0.7,0.5,0.4], [0.2,0.9,0.5])'],\n seealso: []\n};", "export var multinomialDocs = {\n name: 'multinomial',\n category: 'Probability',\n syntax: ['multinomial(A)'],\n description: 'Multinomial Coefficients compute the number of ways of picking a1, a2, ..., ai unordered outcomes from `n` possibilities. multinomial takes one array of integers as an argument. The following condition must be enforced: every ai > 0.',\n examples: ['multinomial([1, 2, 1])'],\n seealso: ['combinations', 'factorial']\n};", "export var permutationsDocs = {\n name: 'permutations',\n category: 'Probability',\n syntax: ['permutations(n)', 'permutations(n, k)'],\n description: 'Compute the number of permutations of n items taken k at a time',\n examples: ['permutations(5)', 'permutations(5, 3)'],\n seealso: ['combinations', 'combinationsWithRep', 'factorial']\n};", "export var pickRandomDocs = {\n name: 'pickRandom',\n category: 'Probability',\n syntax: ['pickRandom(array)', 'pickRandom(array, number)', 'pickRandom(array, weights)', 'pickRandom(array, number, weights)', 'pickRandom(array, weights, number)'],\n description: 'Pick a random entry from a given array.',\n examples: ['pickRandom(0:10)', 'pickRandom([1, 3, 1, 6])', 'pickRandom([1, 3, 1, 6], 2)', 'pickRandom([1, 3, 1, 6], [2, 3, 2, 1])', 'pickRandom([1, 3, 1, 6], 2, [2, 3, 2, 1])', 'pickRandom([1, 3, 1, 6], [2, 3, 2, 1], 2)'],\n seealso: ['random', 'randomInt']\n};", "export var randomDocs = {\n name: 'random',\n category: 'Probability',\n syntax: ['random()', 'random(max)', 'random(min, max)', 'random(size)', 'random(size, max)', 'random(size, min, max)'],\n description: 'Return a random number.',\n examples: ['random()', 'random(10, 20)', 'random([2, 3])'],\n seealso: ['pickRandom', 'randomInt']\n};", "export var randomIntDocs = {\n name: 'randomInt',\n category: 'Probability',\n syntax: ['randomInt(max)', 'randomInt(min, max)', 'randomInt(size)', 'randomInt(size, max)', 'randomInt(size, min, max)'],\n description: 'Return a random integer number',\n examples: ['randomInt(10, 20)', 'randomInt([2, 3], 10)'],\n seealso: ['pickRandom', 'random']\n};", "export var compareDocs = {\n name: 'compare',\n category: 'Relational',\n syntax: ['compare(x, y)'],\n description: 'Compare two values. ' + 'Returns 1 when x > y, -1 when x < y, and 0 when x == y.',\n examples: ['compare(2, 3)', 'compare(3, 2)', 'compare(2, 2)', 'compare(5cm, 40mm)', 'compare(2, [1, 2, 3])'],\n seealso: ['equal', 'unequal', 'smaller', 'smallerEq', 'largerEq', 'compareNatural', 'compareText']\n};", "export var compareNaturalDocs = {\n name: 'compareNatural',\n category: 'Relational',\n syntax: ['compareNatural(x, y)'],\n description: 'Compare two values of any type in a deterministic, natural way. ' + 'Returns 1 when x > y, -1 when x < y, and 0 when x == y.',\n examples: ['compareNatural(2, 3)', 'compareNatural(3, 2)', 'compareNatural(2, 2)', 'compareNatural(5cm, 40mm)', 'compareNatural(\"2\", \"10\")', 'compareNatural(2 + 3i, 2 + 4i)', 'compareNatural([1, 2, 4], [1, 2, 3])', 'compareNatural([1, 5], [1, 2, 3])', 'compareNatural([1, 2], [1, 2])', 'compareNatural({a: 2}, {a: 4})'],\n seealso: ['equal', 'unequal', 'smaller', 'smallerEq', 'largerEq', 'compare', 'compareText']\n};", "export var compareTextDocs = {\n name: 'compareText',\n category: 'Relational',\n syntax: ['compareText(x, y)'],\n description: 'Compare two strings lexically. Comparison is case sensitive. ' + 'Returns 1 when x > y, -1 when x < y, and 0 when x == y.',\n examples: ['compareText(\"B\", \"A\")', 'compareText(\"A\", \"B\")', 'compareText(\"A\", \"A\")', 'compareText(\"2\", \"10\")', 'compare(\"2\", \"10\")', 'compare(2, 10)', 'compareNatural(\"2\", \"10\")', 'compareText(\"B\", [\"A\", \"B\", \"C\"])'],\n seealso: ['compare', 'compareNatural']\n};", "export var deepEqualDocs = {\n name: 'deepEqual',\n category: 'Relational',\n syntax: ['deepEqual(x, y)'],\n description: 'Check equality of two matrices element wise. Returns true if the size of both matrices is equal and when and each of the elements are equal.',\n examples: ['deepEqual([1,3,4], [1,3,4])', 'deepEqual([1,3,4], [1,3])'],\n seealso: ['equal', 'unequal', 'smaller', 'larger', 'smallerEq', 'largerEq', 'compare']\n};", "export var equalDocs = {\n name: 'equal',\n category: 'Relational',\n syntax: ['x == y', 'equal(x, y)'],\n description: 'Check equality of two values. Returns true if the values are equal, and false if not.',\n examples: ['2+2 == 3', '2+2 == 4', 'a = 3.2', 'b = 6-2.8', 'a == b', '50cm == 0.5m'],\n seealso: ['unequal', 'smaller', 'larger', 'smallerEq', 'largerEq', 'compare', 'deepEqual', 'equalText']\n};", "export var equalTextDocs = {\n name: 'equalText',\n category: 'Relational',\n syntax: ['equalText(x, y)'],\n description: 'Check equality of two strings. Comparison is case sensitive. Returns true if the values are equal, and false if not.',\n examples: ['equalText(\"Hello\", \"Hello\")', 'equalText(\"a\", \"A\")', 'equal(\"2e3\", \"2000\")', 'equalText(\"2e3\", \"2000\")', 'equalText(\"B\", [\"A\", \"B\", \"C\"])'],\n seealso: ['compare', 'compareNatural', 'compareText', 'equal']\n};", "export var largerDocs = {\n name: 'larger',\n category: 'Relational',\n syntax: ['x > y', 'larger(x, y)'],\n description: 'Check if value x is larger than y. Returns true if x is larger than y, and false if not.',\n examples: ['2 > 3', '5 > 2*2', 'a = 3.3', 'b = 6-2.8', '(a > b)', '(b < a)', '5 cm > 2 inch'],\n seealso: ['equal', 'unequal', 'smaller', 'smallerEq', 'largerEq', 'compare']\n};", "export var largerEqDocs = {\n name: 'largerEq',\n category: 'Relational',\n syntax: ['x >= y', 'largerEq(x, y)'],\n description: 'Check if value x is larger or equal to y. Returns true if x is larger or equal to y, and false if not.',\n examples: ['2 >= 1+1', '2 > 1+1', 'a = 3.2', 'b = 6-2.8', '(a >= b)'],\n seealso: ['equal', 'unequal', 'smallerEq', 'smaller', 'compare']\n};", "export var smallerDocs = {\n name: 'smaller',\n category: 'Relational',\n syntax: ['x < y', 'smaller(x, y)'],\n description: 'Check if value x is smaller than value y. Returns true if x is smaller than y, and false if not.',\n examples: ['2 < 3', '5 < 2*2', 'a = 3.3', 'b = 6-2.8', '(a < b)', '5 cm < 2 inch'],\n seealso: ['equal', 'unequal', 'larger', 'smallerEq', 'largerEq', 'compare']\n};", "export var smallerEqDocs = {\n name: 'smallerEq',\n category: 'Relational',\n syntax: ['x <= y', 'smallerEq(x, y)'],\n description: 'Check if value x is smaller or equal to value y. Returns true if x is smaller than y, and false if not.',\n examples: ['2 <= 1+1', '2 < 1+1', 'a = 3.2', 'b = 6-2.8', '(a <= b)'],\n seealso: ['equal', 'unequal', 'larger', 'smaller', 'largerEq', 'compare']\n};", "export var unequalDocs = {\n name: 'unequal',\n category: 'Relational',\n syntax: ['x != y', 'unequal(x, y)'],\n description: 'Check unequality of two values. Returns true if the values are unequal, and false if they are equal.',\n examples: ['2+2 != 3', '2+2 != 4', 'a = 3.2', 'b = 6-2.8', 'a != b', '50cm != 0.5m', '5 cm != 2 inch'],\n seealso: ['equal', 'smaller', 'larger', 'smallerEq', 'largerEq', 'compare', 'deepEqual']\n};", "export var setCartesianDocs = {\n name: 'setCartesian',\n category: 'Set',\n syntax: ['setCartesian(set1, set2)'],\n description: 'Create the cartesian product of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays and the values will be sorted in ascending order before the operation.',\n examples: ['setCartesian([1, 2], [3, 4])'],\n seealso: ['setUnion', 'setIntersect', 'setDifference', 'setPowerset']\n};", "export var setDifferenceDocs = {\n name: 'setDifference',\n category: 'Set',\n syntax: ['setDifference(set1, set2)'],\n description: 'Create the difference of two (multi)sets: every element of set1, that is not the element of set2. Multi-dimension arrays will be converted to single-dimension arrays before the operation.',\n examples: ['setDifference([1, 2, 3, 4], [3, 4, 5, 6])', 'setDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]])'],\n seealso: ['setUnion', 'setIntersect', 'setSymDifference']\n};", "export var setDistinctDocs = {\n name: 'setDistinct',\n category: 'Set',\n syntax: ['setDistinct(set)'],\n description: 'Collect the distinct elements of a multiset. A multi-dimension array will be converted to a single-dimension array before the operation.',\n examples: ['setDistinct([1, 1, 1, 2, 2, 3])'],\n seealso: ['setMultiplicity']\n};", "export var setIntersectDocs = {\n name: 'setIntersect',\n category: 'Set',\n syntax: ['setIntersect(set1, set2)'],\n description: 'Create the intersection of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.',\n examples: ['setIntersect([1, 2, 3, 4], [3, 4, 5, 6])', 'setIntersect([[1, 2], [3, 4]], [[3, 4], [5, 6]])'],\n seealso: ['setUnion', 'setDifference']\n};", "export var setIsSubsetDocs = {\n name: 'setIsSubset',\n category: 'Set',\n syntax: ['setIsSubset(set1, set2)'],\n description: 'Check whether a (multi)set is a subset of another (multi)set: every element of set1 is the element of set2. Multi-dimension arrays will be converted to single-dimension arrays before the operation.',\n examples: ['setIsSubset([1, 2], [3, 4, 5, 6])', 'setIsSubset([3, 4], [3, 4, 5, 6])'],\n seealso: ['setUnion', 'setIntersect', 'setDifference']\n};", "export var setMultiplicityDocs = {\n name: 'setMultiplicity',\n category: 'Set',\n syntax: ['setMultiplicity(element, set)'],\n description: 'Count the multiplicity of an element in a multiset. A multi-dimension array will be converted to a single-dimension array before the operation.',\n examples: ['setMultiplicity(1, [1, 2, 2, 4])', 'setMultiplicity(2, [1, 2, 2, 4])'],\n seealso: ['setDistinct', 'setSize']\n};", "export var setPowersetDocs = {\n name: 'setPowerset',\n category: 'Set',\n syntax: ['setPowerset(set)'],\n description: 'Create the powerset of a (multi)set: the powerset contains very possible subsets of a (multi)set. A multi-dimension array will be converted to a single-dimension array before the operation.',\n examples: ['setPowerset([1, 2, 3])'],\n seealso: ['setCartesian']\n};", "export var setSizeDocs = {\n name: 'setSize',\n category: 'Set',\n syntax: ['setSize(set)', 'setSize(set, unique)'],\n description: 'Count the number of elements of a (multi)set. When the second parameter \"unique\" is true, count only the unique values. A multi-dimension array will be converted to a single-dimension array before the operation.',\n examples: ['setSize([1, 2, 2, 4])', 'setSize([1, 2, 2, 4], true)'],\n seealso: ['setUnion', 'setIntersect', 'setDifference']\n};", "export var setSymDifferenceDocs = {\n name: 'setSymDifference',\n category: 'Set',\n syntax: ['setSymDifference(set1, set2)'],\n description: 'Create the symmetric difference of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.',\n examples: ['setSymDifference([1, 2, 3, 4], [3, 4, 5, 6])', 'setSymDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]])'],\n seealso: ['setUnion', 'setIntersect', 'setDifference']\n};", "export var setUnionDocs = {\n name: 'setUnion',\n category: 'Set',\n syntax: ['setUnion(set1, set2)'],\n description: 'Create the union of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.',\n examples: ['setUnion([1, 2, 3, 4], [3, 4, 5, 6])', 'setUnion([[1, 2], [3, 4]], [[3, 4], [5, 6]])'],\n seealso: ['setIntersect', 'setDifference']\n};", "export var zpk2tfDocs = {\n name: 'zpk2tf',\n category: 'Signal',\n syntax: ['zpk2tf(z, p, k)'],\n description: 'Compute the transfer function of a zero-pole-gain model.',\n examples: ['zpk2tf([1, 2], [-1, -2], 1)', 'zpk2tf([1, 2], [-1, -2])', 'zpk2tf([1 - 3i, 2 + 2i], [-1, -2])'],\n seealso: []\n};", "export var freqzDocs = {\n name: 'freqz',\n category: 'Signal',\n syntax: ['freqz(b, a)', 'freqz(b, a, w)'],\n description: 'Calculates the frequency response of a filter given its numerator and denominator coefficients.',\n examples: ['freqz([1, 2], [1, 2, 3])', 'freqz([1, 2], [1, 2, 3], [0, 1])', 'freqz([1, 2], [1, 2, 3], 512)'],\n seealso: []\n};", "export var erfDocs = {\n name: 'erf',\n category: 'Special',\n syntax: ['erf(x)'],\n description: 'Compute the erf function of a value using a rational Chebyshev approximations for different intervals of x',\n examples: ['erf(0.2)', 'erf(-0.5)', 'erf(4)'],\n seealso: []\n};", "export var zetaDocs = {\n name: 'zeta',\n category: 'Special',\n syntax: ['zeta(s)'],\n description: 'Compute the Riemann Zeta Function using an infinite series and Riemann\\'s Functional Equation for the entire complex plane',\n examples: ['zeta(0.2)', 'zeta(-0.5)', 'zeta(4)'],\n seealso: []\n};", "export var madDocs = {\n name: 'mad',\n category: 'Statistics',\n syntax: ['mad(a, b, c, ...)', 'mad(A)'],\n description: 'Compute the median absolute deviation of a matrix or a list with values. The median absolute deviation is defined as the median of the absolute deviations from the median.',\n examples: ['mad(10, 20, 30)', 'mad([1, 2, 3])'],\n seealso: ['mean', 'median', 'std', 'abs']\n};", "export var maxDocs = {\n name: 'max',\n category: 'Statistics',\n syntax: ['max(a, b, c, ...)', 'max(A)', 'max(A, dimension)'],\n description: 'Compute the maximum value of a list of values.',\n examples: ['max(2, 3, 4, 1)', 'max([2, 3, 4, 1])', 'max([2, 5; 4, 3])', 'max([2, 5; 4, 3], 1)', 'max([2, 5; 4, 3], 2)', 'max(2.7, 7.1, -4.5, 2.0, 4.1)', 'min(2.7, 7.1, -4.5, 2.0, 4.1)'],\n seealso: ['mean', 'median', 'min', 'prod', 'std', 'sum', 'variance']\n};", "export var meanDocs = {\n name: 'mean',\n category: 'Statistics',\n syntax: ['mean(a, b, c, ...)', 'mean(A)', 'mean(A, dimension)'],\n description: 'Compute the arithmetic mean of a list of values.',\n examples: ['mean(2, 3, 4, 1)', 'mean([2, 3, 4, 1])', 'mean([2, 5; 4, 3])', 'mean([2, 5; 4, 3], 1)', 'mean([2, 5; 4, 3], 2)', 'mean([1.0, 2.7, 3.2, 4.0])'],\n seealso: ['max', 'median', 'min', 'prod', 'std', 'sum', 'variance']\n};", "export var medianDocs = {\n name: 'median',\n category: 'Statistics',\n syntax: ['median(a, b, c, ...)', 'median(A)'],\n description: 'Compute the median of all values. The values are sorted and the middle value is returned. In case of an even number of values, the average of the two middle values is returned.',\n examples: ['median(5, 2, 7)', 'median([3, -1, 5, 7])'],\n seealso: ['max', 'mean', 'min', 'prod', 'std', 'sum', 'variance', 'quantileSeq']\n};", "export var minDocs = {\n name: 'min',\n category: 'Statistics',\n syntax: ['min(a, b, c, ...)', 'min(A)', 'min(A, dimension)'],\n description: 'Compute the minimum value of a list of values.',\n examples: ['min(2, 3, 4, 1)', 'min([2, 3, 4, 1])', 'min([2, 5; 4, 3])', 'min([2, 5; 4, 3], 1)', 'min([2, 5; 4, 3], 2)', 'min(2.7, 7.1, -4.5, 2.0, 4.1)', 'max(2.7, 7.1, -4.5, 2.0, 4.1)'],\n seealso: ['max', 'mean', 'median', 'prod', 'std', 'sum', 'variance']\n};", "export var modeDocs = {\n name: 'mode',\n category: 'Statistics',\n syntax: ['mode(a, b, c, ...)', 'mode(A)', 'mode(A, a, b, B, c, ...)'],\n description: 'Computes the mode of all values as an array. In case mode being more than one, multiple values are returned in an array.',\n examples: ['mode(2, 1, 4, 3, 1)', 'mode([1, 2.7, 3.2, 4, 2.7])', 'mode(1, 4, 6, 1, 6)'],\n seealso: ['max', 'mean', 'min', 'median', 'prod', 'std', 'sum', 'variance']\n};", "export var prodDocs = {\n name: 'prod',\n category: 'Statistics',\n syntax: ['prod(a, b, c, ...)', 'prod(A)'],\n description: 'Compute the product of all values.',\n examples: ['prod(2, 3, 4)', 'prod([2, 3, 4])', 'prod([2, 5; 4, 3])'],\n seealso: ['max', 'mean', 'min', 'median', 'min', 'std', 'sum', 'variance']\n};", "export var quantileSeqDocs = {\n name: 'quantileSeq',\n category: 'Statistics',\n syntax: ['quantileSeq(A, prob[, sorted])', 'quantileSeq(A, [prob1, prob2, ...][, sorted])', 'quantileSeq(A, N[, sorted])'],\n description: 'Compute the prob order quantile of a matrix or a list with values. The sequence is sorted and the middle value is returned. Supported types of sequence values are: Number, BigNumber, Unit Supported types of probability are: Number, BigNumber. \\n\\nIn case of a (multi dimensional) array or matrix, the prob order quantile of all elements will be calculated.',\n examples: ['quantileSeq([3, -1, 5, 7], 0.5)', 'quantileSeq([3, -1, 5, 7], [1/3, 2/3])', 'quantileSeq([3, -1, 5, 7], 2)', 'quantileSeq([-1, 3, 5, 7], 0.5, true)'],\n seealso: ['mean', 'median', 'min', 'max', 'prod', 'std', 'sum', 'variance']\n};", "export var stdDocs = {\n name: 'std',\n category: 'Statistics',\n syntax: ['std(a, b, c, ...)', 'std(A)', 'std(A, dimension)', 'std(A, normalization)', 'std(A, dimension, normalization)'],\n description: 'Compute the standard deviation of all values, defined as std(A) = sqrt(variance(A)). Optional parameter normalization can be \"unbiased\" (default), \"uncorrected\", or \"biased\".',\n examples: ['std(2, 4, 6)', 'std([2, 4, 6, 8])', 'std([2, 4, 6, 8], \"uncorrected\")', 'std([2, 4, 6, 8], \"biased\")', 'std([1, 2, 3; 4, 5, 6])'],\n seealso: ['max', 'mean', 'min', 'median', 'prod', 'sum', 'variance']\n};", "export var cumSumDocs = {\n name: 'cumsum',\n category: 'Statistics',\n syntax: ['cumsum(a, b, c, ...)', 'cumsum(A)'],\n description: 'Compute the cumulative sum of all values.',\n examples: ['cumsum(2, 3, 4, 1)', 'cumsum([2, 3, 4, 1])', 'cumsum([1, 2; 3, 4])', 'cumsum([1, 2; 3, 4], 1)', 'cumsum([1, 2; 3, 4], 2)'],\n seealso: ['max', 'mean', 'median', 'min', 'prod', 'std', 'sum', 'variance']\n};", "export var sumDocs = {\n name: 'sum',\n category: 'Statistics',\n syntax: ['sum(a, b, c, ...)', 'sum(A)', 'sum(A, dimension)'],\n description: 'Compute the sum of all values.',\n examples: ['sum(2, 3, 4, 1)', 'sum([2, 3, 4, 1])', 'sum([2, 5; 4, 3])'],\n seealso: ['max', 'mean', 'median', 'min', 'prod', 'std', 'sum', 'variance']\n};", "export var varianceDocs = {\n name: 'variance',\n category: 'Statistics',\n syntax: ['variance(a, b, c, ...)', 'variance(A)', 'variance(A, dimension)', 'variance(A, normalization)', 'variance(A, dimension, normalization)'],\n description: 'Compute the variance of all values. Optional parameter normalization can be \"unbiased\" (default), \"uncorrected\", or \"biased\".',\n examples: ['variance(2, 4, 6)', 'variance([2, 4, 6, 8])', 'variance([2, 4, 6, 8], \"uncorrected\")', 'variance([2, 4, 6, 8], \"biased\")', 'variance([1, 2, 3; 4, 5, 6])'],\n seealso: ['max', 'mean', 'min', 'median', 'min', 'prod', 'std', 'sum']\n};", "export var corrDocs = {\n name: 'corr',\n category: 'Statistics',\n syntax: ['corr(A,B)'],\n description: 'Compute the correlation coefficient of a two list with values, For matrices, the matrix correlation coefficient is calculated.',\n examples: ['corr([2, 4, 6, 8],[1, 2, 3, 6])', 'corr(matrix([[1, 2.2, 3, 4.8, 5], [1, 2, 3, 4, 5]]), matrix([[4, 5.3, 6.6, 7, 8], [1, 2, 3, 4, 5]]))'],\n seealso: ['max', 'mean', 'min', 'median', 'min', 'prod', 'std', 'sum']\n};", "export var acosDocs = {\n name: 'acos',\n category: 'Trigonometry',\n syntax: ['acos(x)'],\n description: 'Compute the inverse cosine of a value in radians.',\n examples: ['acos(0.5)', 'acos(cos(2.3))'],\n seealso: ['cos', 'atan', 'asin']\n};", "export var acoshDocs = {\n name: 'acosh',\n category: 'Trigonometry',\n syntax: ['acosh(x)'],\n description: 'Calculate the hyperbolic arccos of a value, defined as `acosh(x) = ln(sqrt(x^2 - 1) + x)`.',\n examples: ['acosh(1.5)'],\n seealso: ['cosh', 'asinh', 'atanh']\n};", "export var acotDocs = {\n name: 'acot',\n category: 'Trigonometry',\n syntax: ['acot(x)'],\n description: 'Calculate the inverse cotangent of a value.',\n examples: ['acot(0.5)', 'acot(cot(0.5))', 'acot(2)'],\n seealso: ['cot', 'atan']\n};", "export var acothDocs = {\n name: 'acoth',\n category: 'Trigonometry',\n syntax: ['acoth(x)'],\n description: 'Calculate the inverse hyperbolic tangent of a value, defined as `acoth(x) = (ln((x+1)/x) + ln(x/(x-1))) / 2`.',\n examples: ['acoth(2)', 'acoth(0.5)'],\n seealso: ['acsch', 'asech']\n};", "export var acscDocs = {\n name: 'acsc',\n category: 'Trigonometry',\n syntax: ['acsc(x)'],\n description: 'Calculate the inverse cotangent of a value.',\n examples: ['acsc(2)', 'acsc(csc(0.5))', 'acsc(0.5)'],\n seealso: ['csc', 'asin', 'asec']\n};", "export var acschDocs = {\n name: 'acsch',\n category: 'Trigonometry',\n syntax: ['acsch(x)'],\n description: 'Calculate the inverse hyperbolic cosecant of a value, defined as `acsch(x) = ln(1/x + sqrt(1/x^2 + 1))`.',\n examples: ['acsch(0.5)'],\n seealso: ['asech', 'acoth']\n};", "export var asecDocs = {\n name: 'asec',\n category: 'Trigonometry',\n syntax: ['asec(x)'],\n description: 'Calculate the inverse secant of a value.',\n examples: ['asec(0.5)', 'asec(sec(0.5))', 'asec(2)'],\n seealso: ['acos', 'acot', 'acsc']\n};", "export var asechDocs = {\n name: 'asech',\n category: 'Trigonometry',\n syntax: ['asech(x)'],\n description: 'Calculate the inverse secant of a value.',\n examples: ['asech(0.5)'],\n seealso: ['acsch', 'acoth']\n};", "export var asinDocs = {\n name: 'asin',\n category: 'Trigonometry',\n syntax: ['asin(x)'],\n description: 'Compute the inverse sine of a value in radians.',\n examples: ['asin(0.5)', 'asin(sin(0.5))'],\n seealso: ['sin', 'acos', 'atan']\n};", "export var asinhDocs = {\n name: 'asinh',\n category: 'Trigonometry',\n syntax: ['asinh(x)'],\n description: 'Calculate the hyperbolic arcsine of a value, defined as `asinh(x) = ln(x + sqrt(x^2 + 1))`.',\n examples: ['asinh(0.5)'],\n seealso: ['acosh', 'atanh']\n};", "export var atanDocs = {\n name: 'atan',\n category: 'Trigonometry',\n syntax: ['atan(x)'],\n description: 'Compute the inverse tangent of a value in radians.',\n examples: ['atan(0.5)', 'atan(tan(0.5))'],\n seealso: ['tan', 'acos', 'asin']\n};", "export var atan2Docs = {\n name: 'atan2',\n category: 'Trigonometry',\n syntax: ['atan2(y, x)'],\n description: 'Computes the principal value of the arc tangent of y/x in radians.',\n examples: ['atan2(2, 2) / pi', 'angle = 60 deg in rad', 'x = cos(angle)', 'y = sin(angle)', 'atan2(y, x)'],\n seealso: ['sin', 'cos', 'tan']\n};", "export var atanhDocs = {\n name: 'atanh',\n category: 'Trigonometry',\n syntax: ['atanh(x)'],\n description: 'Calculate the hyperbolic arctangent of a value, defined as `atanh(x) = ln((1 + x)/(1 - x)) / 2`.',\n examples: ['atanh(0.5)'],\n seealso: ['acosh', 'asinh']\n};", "export var cosDocs = {\n name: 'cos',\n category: 'Trigonometry',\n syntax: ['cos(x)'],\n description: 'Compute the cosine of x in radians.',\n examples: ['cos(2)', 'cos(pi / 4) ^ 2', 'cos(180 deg)', 'cos(60 deg)', 'sin(0.2)^2 + cos(0.2)^2'],\n seealso: ['acos', 'sin', 'tan']\n};", "export var coshDocs = {\n name: 'cosh',\n category: 'Trigonometry',\n syntax: ['cosh(x)'],\n description: 'Compute the hyperbolic cosine of x in radians.',\n examples: ['cosh(0.5)'],\n seealso: ['sinh', 'tanh', 'coth']\n};", "export var cotDocs = {\n name: 'cot',\n category: 'Trigonometry',\n syntax: ['cot(x)'],\n description: 'Compute the cotangent of x in radians. Defined as 1/tan(x)',\n examples: ['cot(2)', '1 / tan(2)'],\n seealso: ['sec', 'csc', 'tan']\n};", "export var cothDocs = {\n name: 'coth',\n category: 'Trigonometry',\n syntax: ['coth(x)'],\n description: 'Compute the hyperbolic cotangent of x in radians.',\n examples: ['coth(2)', '1 / tanh(2)'],\n seealso: ['sech', 'csch', 'tanh']\n};", "export var cscDocs = {\n name: 'csc',\n category: 'Trigonometry',\n syntax: ['csc(x)'],\n description: 'Compute the cosecant of x in radians. Defined as 1/sin(x)',\n examples: ['csc(2)', '1 / sin(2)'],\n seealso: ['sec', 'cot', 'sin']\n};", "export var cschDocs = {\n name: 'csch',\n category: 'Trigonometry',\n syntax: ['csch(x)'],\n description: 'Compute the hyperbolic cosecant of x in radians. Defined as 1/sinh(x)',\n examples: ['csch(2)', '1 / sinh(2)'],\n seealso: ['sech', 'coth', 'sinh']\n};", "export var secDocs = {\n name: 'sec',\n category: 'Trigonometry',\n syntax: ['sec(x)'],\n description: 'Compute the secant of x in radians. Defined as 1/cos(x)',\n examples: ['sec(2)', '1 / cos(2)'],\n seealso: ['cot', 'csc', 'cos']\n};", "export var sechDocs = {\n name: 'sech',\n category: 'Trigonometry',\n syntax: ['sech(x)'],\n description: 'Compute the hyperbolic secant of x in radians. Defined as 1/cosh(x)',\n examples: ['sech(2)', '1 / cosh(2)'],\n seealso: ['coth', 'csch', 'cosh']\n};", "export var sinDocs = {\n name: 'sin',\n category: 'Trigonometry',\n syntax: ['sin(x)'],\n description: 'Compute the sine of x in radians.',\n examples: ['sin(2)', 'sin(pi / 4) ^ 2', 'sin(90 deg)', 'sin(30 deg)', 'sin(0.2)^2 + cos(0.2)^2'],\n seealso: ['asin', 'cos', 'tan']\n};", "export var sinhDocs = {\n name: 'sinh',\n category: 'Trigonometry',\n syntax: ['sinh(x)'],\n description: 'Compute the hyperbolic sine of x in radians.',\n examples: ['sinh(0.5)'],\n seealso: ['cosh', 'tanh']\n};", "export var tanDocs = {\n name: 'tan',\n category: 'Trigonometry',\n syntax: ['tan(x)'],\n description: 'Compute the tangent of x in radians.',\n examples: ['tan(0.5)', 'sin(0.5) / cos(0.5)', 'tan(pi / 4)', 'tan(45 deg)'],\n seealso: ['atan', 'sin', 'cos']\n};", "export var tanhDocs = {\n name: 'tanh',\n category: 'Trigonometry',\n syntax: ['tanh(x)'],\n description: 'Compute the hyperbolic tangent of x in radians.',\n examples: ['tanh(0.5)', 'sinh(0.5) / cosh(0.5)'],\n seealso: ['sinh', 'cosh']\n};", "export var toDocs = {\n name: 'to',\n category: 'Units',\n syntax: ['x to unit', 'to(x, unit)'],\n description: 'Change the unit of a value.',\n examples: ['5 inch to cm', '3.2kg to g', '16 bytes in bits'],\n seealso: []\n};", "export var binDocs = {\n name: 'bin',\n category: 'Utils',\n syntax: ['bin(value)'],\n description: 'Format a number as binary',\n examples: ['bin(2)'],\n seealso: ['oct', 'hex']\n};", "export var cloneDocs = {\n name: 'clone',\n category: 'Utils',\n syntax: ['clone(x)'],\n description: 'Clone a variable. Creates a copy of primitive variables, and a deep copy of matrices',\n examples: ['clone(3.5)', 'clone(2 - 4i)', 'clone(45 deg)', 'clone([1, 2; 3, 4])', 'clone(\"hello world\")'],\n seealso: []\n};", "export var formatDocs = {\n name: 'format',\n category: 'Utils',\n syntax: ['format(value)', 'format(value, precision)'],\n description: 'Format a value of any type as string.',\n examples: ['format(2.3)', 'format(3 - 4i)', 'format([])', 'format(pi, 3)'],\n seealso: ['print']\n};", "export var hasNumericValueDocs = {\n name: 'hasNumericValue',\n category: 'Utils',\n syntax: ['hasNumericValue(x)'],\n description: 'Test whether a value is an numeric value. ' + 'In case of a string, true is returned if the string contains a numeric value.',\n examples: ['hasNumericValue(2)', 'hasNumericValue(\"2\")', 'isNumeric(\"2\")', 'hasNumericValue(0)', 'hasNumericValue(bignumber(500))', 'hasNumericValue(fraction(0.125))', 'hasNumericValue(2 + 3i)', 'hasNumericValue([2.3, \"foo\", false])'],\n seealso: ['isInteger', 'isZero', 'isNegative', 'isPositive', 'isNaN', 'isNumeric']\n};", "export var hexDocs = {\n name: 'hex',\n category: 'Utils',\n syntax: ['hex(value)'],\n description: 'Format a number as hexadecimal',\n examples: ['hex(240)'],\n seealso: ['bin', 'oct']\n};", "export var isIntegerDocs = {\n name: 'isInteger',\n category: 'Utils',\n syntax: ['isInteger(x)'],\n description: 'Test whether a value is an integer number.',\n examples: ['isInteger(2)', 'isInteger(3.5)', 'isInteger([3, 0.5, -2])'],\n seealso: ['isNegative', 'isNumeric', 'isPositive', 'isZero']\n};", "export var isNaNDocs = {\n name: 'isNaN',\n category: 'Utils',\n syntax: ['isNaN(x)'],\n description: 'Test whether a value is NaN (not a number)',\n examples: ['isNaN(2)', 'isNaN(0 / 0)', 'isNaN(NaN)', 'isNaN(Infinity)'],\n seealso: ['isNegative', 'isNumeric', 'isPositive', 'isZero']\n};", "export var isNegativeDocs = {\n name: 'isNegative',\n category: 'Utils',\n syntax: ['isNegative(x)'],\n description: 'Test whether a value is negative: smaller than zero.',\n examples: ['isNegative(2)', 'isNegative(0)', 'isNegative(-4)', 'isNegative([3, 0.5, -2])'],\n seealso: ['isInteger', 'isNumeric', 'isPositive', 'isZero']\n};", "export var isNumericDocs = {\n name: 'isNumeric',\n category: 'Utils',\n syntax: ['isNumeric(x)'],\n description: 'Test whether a value is a numeric value. ' + 'Returns true when the input is a number, BigNumber, Fraction, or boolean.',\n examples: ['isNumeric(2)', 'isNumeric(\"2\")', 'hasNumericValue(\"2\")', 'isNumeric(0)', 'isNumeric(bignumber(500))', 'isNumeric(fraction(0.125))', 'isNumeric(2 + 3i)', 'isNumeric([2.3, \"foo\", false])'],\n seealso: ['isInteger', 'isZero', 'isNegative', 'isPositive', 'isNaN', 'hasNumericValue']\n};", "export var isPositiveDocs = {\n name: 'isPositive',\n category: 'Utils',\n syntax: ['isPositive(x)'],\n description: 'Test whether a value is positive: larger than zero.',\n examples: ['isPositive(2)', 'isPositive(0)', 'isPositive(-4)', 'isPositive([3, 0.5, -2])'],\n seealso: ['isInteger', 'isNumeric', 'isNegative', 'isZero']\n};", "export var isPrimeDocs = {\n name: 'isPrime',\n category: 'Utils',\n syntax: ['isPrime(x)'],\n description: 'Test whether a value is prime: has no divisors other than itself and one.',\n examples: ['isPrime(3)', 'isPrime(-2)', 'isPrime([2, 17, 100])'],\n seealso: ['isInteger', 'isNumeric', 'isNegative', 'isZero']\n};", "export var isZeroDocs = {\n name: 'isZero',\n category: 'Utils',\n syntax: ['isZero(x)'],\n description: 'Test whether a value is zero.',\n examples: ['isZero(2)', 'isZero(0)', 'isZero(-4)', 'isZero([3, 0, -2, 0])'],\n seealso: ['isInteger', 'isNumeric', 'isNegative', 'isPositive']\n};", "export var numericDocs = {\n name: 'numeric',\n category: 'Utils',\n syntax: ['numeric(x)'],\n description: 'Convert a numeric input to a specific numeric type: number, BigNumber, bigint, or Fraction.',\n examples: ['numeric(\"4\")', 'numeric(\"4\", \"number\")', 'numeric(\"4\", \"bigint\")', 'numeric(\"4\", \"BigNumber\")', 'numeric(\"4\", \"Fraction\")', 'numeric(4, \"Fraction\")', 'numeric(fraction(2, 5), \"number\")'],\n seealso: ['number', 'bigint', 'fraction', 'bignumber', 'string', 'format']\n};", "export var octDocs = {\n name: 'oct',\n category: 'Utils',\n syntax: ['oct(value)'],\n description: 'Format a number as octal',\n examples: ['oct(56)'],\n seealso: ['bin', 'hex']\n};", "export var printDocs = {\n name: 'print',\n category: 'Utils',\n syntax: ['print(template, values)', 'print(template, values, precision)'],\n description: 'Interpolate values into a string template.',\n examples: ['print(\"Lucy is $age years old\", {age: 5})', 'print(\"The value of pi is $pi\", {pi: pi}, 3)', 'print(\"Hello, $user.name!\", {user: {name: \"John\"}})', 'print(\"Values: $1, $2, $3\", [6, 9, 4])'],\n seealso: ['format']\n};", "export var typeOfDocs = {\n name: 'typeOf',\n category: 'Utils',\n syntax: ['typeOf(x)'],\n description: 'Get the type of a variable.',\n examples: ['typeOf(3.5)', 'typeOf(2 - 4i)', 'typeOf(45 deg)', 'typeOf(\"hello world\")'],\n seealso: ['getMatrixDataType']\n};", "export var solveODEDocs = {\n name: 'solveODE',\n category: 'Numeric',\n syntax: ['solveODE(func, tspan, y0)', 'solveODE(func, tspan, y0, options)'],\n description: 'Numerical Integration of Ordinary Differential Equations.',\n examples: ['f(t,y) = y', 'tspan = [0, 4]', 'solveODE(f, tspan, 1)', 'solveODE(f, tspan, [1, 2])', 'solveODE(f, tspan, 1, { method:\"RK23\", maxStep:0.1 })'],\n seealso: ['derivative', 'simplifyCore']\n};", "import { eDocs } from './constants/e.js';\nimport { falseDocs } from './constants/false.js';\nimport { iDocs } from './constants/i.js';\nimport { InfinityDocs } from './constants/Infinity.js';\nimport { LN10Docs } from './constants/LN10.js';\nimport { LN2Docs } from './constants/LN2.js';\nimport { LOG10EDocs } from './constants/LOG10E.js';\nimport { LOG2EDocs } from './constants/LOG2E.js';\nimport { NaNDocs } from './constants/NaN.js';\nimport { nullDocs } from './constants/null.js';\nimport { phiDocs } from './constants/phi.js';\nimport { piDocs } from './constants/pi.js';\nimport { SQRT12Docs } from './constants/SQRT1_2.js';\nimport { SQRT2Docs } from './constants/SQRT2.js';\nimport { tauDocs } from './constants/tau.js';\nimport { trueDocs } from './constants/true.js';\nimport { versionDocs } from './constants/version.js';\nimport { bignumberDocs } from './construction/bignumber.js';\nimport { bigintDocs } from './construction/bigint.js';\nimport { booleanDocs } from './construction/boolean.js';\nimport { complexDocs } from './construction/complex.js';\nimport { createUnitDocs } from './construction/createUnit.js';\nimport { fractionDocs } from './construction/fraction.js';\nimport { indexDocs } from './construction/index.js';\nimport { matrixDocs } from './construction/matrix.js';\nimport { numberDocs } from './construction/number.js';\nimport { sparseDocs } from './construction/sparse.js';\nimport { splitUnitDocs } from './construction/splitUnit.js';\nimport { stringDocs } from './construction/string.js';\nimport { unitDocs } from './construction/unit.js';\nimport { configDocs } from './core/config.js';\nimport { importDocs } from './core/import.js';\nimport { typedDocs } from './core/typed.js';\nimport { derivativeDocs } from './function/algebra/derivative.js';\nimport { leafCountDocs } from './function/algebra/leafCount.js';\nimport { lsolveDocs } from './function/algebra/lsolve.js';\nimport { lsolveAllDocs } from './function/algebra/lsolveAll.js';\nimport { lupDocs } from './function/algebra/lup.js';\nimport { lusolveDocs } from './function/algebra/lusolve.js';\nimport { polynomialRootDocs } from './function/algebra/polynomialRoot.js';\nimport { qrDocs } from './function/algebra/qr.js';\nimport { rationalizeDocs } from './function/algebra/rationalize.js';\nimport { resolveDocs } from './function/algebra/resolve.js';\nimport { simplifyDocs } from './function/algebra/simplify.js';\nimport { simplifyConstantDocs } from './function/algebra/simplifyConstant.js';\nimport { simplifyCoreDocs } from './function/algebra/simplifyCore.js';\nimport { sluDocs } from './function/algebra/slu.js';\nimport { symbolicEqualDocs } from './function/algebra/symbolicEqual.js';\nimport { usolveDocs } from './function/algebra/usolve.js';\nimport { usolveAllDocs } from './function/algebra/usolveAll.js';\nimport { absDocs } from './function/arithmetic/abs.js';\nimport { addDocs } from './function/arithmetic/add.js';\nimport { cbrtDocs } from './function/arithmetic/cbrt.js';\nimport { ceilDocs } from './function/arithmetic/ceil.js';\nimport { cubeDocs } from './function/arithmetic/cube.js';\nimport { divideDocs } from './function/arithmetic/divide.js';\nimport { dotDivideDocs } from './function/arithmetic/dotDivide.js';\nimport { dotMultiplyDocs } from './function/arithmetic/dotMultiply.js';\nimport { dotPowDocs } from './function/arithmetic/dotPow.js';\nimport { expDocs } from './function/arithmetic/exp.js';\nimport { expmDocs } from './function/arithmetic/expm.js';\nimport { expm1Docs } from './function/arithmetic/expm1.js';\nimport { fixDocs } from './function/arithmetic/fix.js';\nimport { floorDocs } from './function/arithmetic/floor.js';\nimport { gcdDocs } from './function/arithmetic/gcd.js';\nimport { hypotDocs } from './function/arithmetic/hypot.js';\nimport { invmodDocs } from './function/arithmetic/invmod.js';\nimport { lcmDocs } from './function/arithmetic/lcm.js';\nimport { logDocs } from './function/arithmetic/log.js';\nimport { log10Docs } from './function/arithmetic/log10.js';\nimport { log1pDocs } from './function/arithmetic/log1p.js';\nimport { log2Docs } from './function/arithmetic/log2.js';\nimport { modDocs } from './function/arithmetic/mod.js';\nimport { multiplyDocs } from './function/arithmetic/multiply.js';\nimport { normDocs } from './function/arithmetic/norm.js';\nimport { nthRootDocs } from './function/arithmetic/nthRoot.js';\nimport { nthRootsDocs } from './function/arithmetic/nthRoots.js';\nimport { powDocs } from './function/arithmetic/pow.js';\nimport { roundDocs } from './function/arithmetic/round.js';\nimport { signDocs } from './function/arithmetic/sign.js';\nimport { sqrtDocs } from './function/arithmetic/sqrt.js';\nimport { sqrtmDocs } from './function/arithmetic/sqrtm.js';\nimport { sylvesterDocs } from './function/algebra/sylvester.js';\nimport { schurDocs } from './function/algebra/schur.js';\nimport { lyapDocs } from './function/algebra/lyap.js';\nimport { squareDocs } from './function/arithmetic/square.js';\nimport { subtractDocs } from './function/arithmetic/subtract.js';\nimport { unaryMinusDocs } from './function/arithmetic/unaryMinus.js';\nimport { unaryPlusDocs } from './function/arithmetic/unaryPlus.js';\nimport { xgcdDocs } from './function/arithmetic/xgcd.js';\nimport { bitAndDocs } from './function/bitwise/bitAnd.js';\nimport { bitNotDocs } from './function/bitwise/bitNot.js';\nimport { bitOrDocs } from './function/bitwise/bitOr.js';\nimport { bitXorDocs } from './function/bitwise/bitXor.js';\nimport { leftShiftDocs } from './function/bitwise/leftShift.js';\nimport { rightArithShiftDocs } from './function/bitwise/rightArithShift.js';\nimport { rightLogShiftDocs } from './function/bitwise/rightLogShift.js';\nimport { bellNumbersDocs } from './function/combinatorics/bellNumbers.js';\nimport { catalanDocs } from './function/combinatorics/catalan.js';\nimport { compositionDocs } from './function/combinatorics/composition.js';\nimport { stirlingS2Docs } from './function/combinatorics/stirlingS2.js';\nimport { argDocs } from './function/complex/arg.js';\nimport { conjDocs } from './function/complex/conj.js';\nimport { imDocs } from './function/complex/im.js';\nimport { reDocs } from './function/complex/re.js';\nimport { evaluateDocs } from './function/expression/evaluate.js';\nimport { helpDocs } from './function/expression/help.js';\nimport { distanceDocs } from './function/geometry/distance.js';\nimport { intersectDocs } from './function/geometry/intersect.js';\nimport { andDocs } from './function/logical/and.js';\nimport { notDocs } from './function/logical/not.js';\nimport { orDocs } from './function/logical/or.js';\nimport { xorDocs } from './function/logical/xor.js';\nimport { columnDocs } from './function/matrix/column.js';\nimport { concatDocs } from './function/matrix/concat.js';\nimport { countDocs } from './function/matrix/count.js';\nimport { crossDocs } from './function/matrix/cross.js';\nimport { ctransposeDocs } from './function/matrix/ctranspose.js';\nimport { detDocs } from './function/matrix/det.js';\nimport { diagDocs } from './function/matrix/diag.js';\nimport { diffDocs } from './function/matrix/diff.js';\nimport { dotDocs } from './function/matrix/dot.js';\nimport { eigsDocs } from './function/matrix/eigs.js';\nimport { filterDocs } from './function/matrix/filter.js';\nimport { flattenDocs } from './function/matrix/flatten.js';\nimport { forEachDocs } from './function/matrix/forEach.js';\nimport { getMatrixDataTypeDocs } from './function/matrix/getMatrixDataType.js';\nimport { identityDocs } from './function/matrix/identity.js';\nimport { invDocs } from './function/matrix/inv.js';\nimport { pinvDocs } from './function/matrix/pinv.js';\nimport { kronDocs } from './function/matrix/kron.js';\nimport { mapDocs } from './function/matrix/map.js';\nimport { matrixFromColumnsDocs } from './function/matrix/matrixFromColumns.js';\nimport { matrixFromFunctionDocs } from './function/matrix/matrixFromFunction.js';\nimport { matrixFromRowsDocs } from './function/matrix/matrixFromRows.js';\nimport { onesDocs } from './function/matrix/ones.js';\nimport { partitionSelectDocs } from './function/matrix/partitionSelect.js';\nimport { rangeDocs } from './function/matrix/range.js';\nimport { reshapeDocs } from './function/matrix/reshape.js';\nimport { resizeDocs } from './function/matrix/resize.js';\nimport { rotateDocs } from './function/matrix/rotate.js';\nimport { rotationMatrixDocs } from './function/matrix/rotationMatrix.js';\nimport { rowDocs } from './function/matrix/row.js';\nimport { sizeDocs } from './function/matrix/size.js';\nimport { sortDocs } from './function/matrix/sort.js';\nimport { squeezeDocs } from './function/matrix/squeeze.js';\nimport { subsetDocs } from './function/matrix/subset.js';\nimport { traceDocs } from './function/matrix/trace.js';\nimport { transposeDocs } from './function/matrix/transpose.js';\nimport { zerosDocs } from './function/matrix/zeros.js';\nimport { fftDocs } from './function/matrix/fft.js';\nimport { ifftDocs } from './function/matrix/ifft.js';\nimport { combinationsDocs } from './function/probability/combinations.js';\nimport { combinationsWithRepDocs } from './function/probability/combinationsWithRep.js';\nimport { factorialDocs } from './function/probability/factorial.js';\nimport { gammaDocs } from './function/probability/gamma.js';\nimport { lgammaDocs } from './function/probability/lgamma.js';\nimport { kldivergenceDocs } from './function/probability/kldivergence.js';\nimport { multinomialDocs } from './function/probability/multinomial.js';\nimport { permutationsDocs } from './function/probability/permutations.js';\nimport { pickRandomDocs } from './function/probability/pickRandom.js';\nimport { randomDocs } from './function/probability/random.js';\nimport { randomIntDocs } from './function/probability/randomInt.js';\nimport { compareDocs } from './function/relational/compare.js';\nimport { compareNaturalDocs } from './function/relational/compareNatural.js';\nimport { compareTextDocs } from './function/relational/compareText.js';\nimport { deepEqualDocs } from './function/relational/deepEqual.js';\nimport { equalDocs } from './function/relational/equal.js';\nimport { equalTextDocs } from './function/relational/equalText.js';\nimport { largerDocs } from './function/relational/larger.js';\nimport { largerEqDocs } from './function/relational/largerEq.js';\nimport { smallerDocs } from './function/relational/smaller.js';\nimport { smallerEqDocs } from './function/relational/smallerEq.js';\nimport { unequalDocs } from './function/relational/unequal.js';\nimport { setCartesianDocs } from './function/set/setCartesian.js';\nimport { setDifferenceDocs } from './function/set/setDifference.js';\nimport { setDistinctDocs } from './function/set/setDistinct.js';\nimport { setIntersectDocs } from './function/set/setIntersect.js';\nimport { setIsSubsetDocs } from './function/set/setIsSubset.js';\nimport { setMultiplicityDocs } from './function/set/setMultiplicity.js';\nimport { setPowersetDocs } from './function/set/setPowerset.js';\nimport { setSizeDocs } from './function/set/setSize.js';\nimport { setSymDifferenceDocs } from './function/set/setSymDifference.js';\nimport { setUnionDocs } from './function/set/setUnion.js';\nimport { zpk2tfDocs } from './function/signal/zpk2tf.js';\nimport { freqzDocs } from './function/signal/freqz.js';\nimport { erfDocs } from './function/special/erf.js';\nimport { zetaDocs } from './function/special/zeta.js';\nimport { madDocs } from './function/statistics/mad.js';\nimport { maxDocs } from './function/statistics/max.js';\nimport { meanDocs } from './function/statistics/mean.js';\nimport { medianDocs } from './function/statistics/median.js';\nimport { minDocs } from './function/statistics/min.js';\nimport { modeDocs } from './function/statistics/mode.js';\nimport { prodDocs } from './function/statistics/prod.js';\nimport { quantileSeqDocs } from './function/statistics/quantileSeq.js';\nimport { stdDocs } from './function/statistics/std.js';\nimport { cumSumDocs } from './function/statistics/cumsum.js';\nimport { sumDocs } from './function/statistics/sum.js';\nimport { varianceDocs } from './function/statistics/variance.js';\nimport { corrDocs } from './function/statistics/corr.js';\nimport { acosDocs } from './function/trigonometry/acos.js';\nimport { acoshDocs } from './function/trigonometry/acosh.js';\nimport { acotDocs } from './function/trigonometry/acot.js';\nimport { acothDocs } from './function/trigonometry/acoth.js';\nimport { acscDocs } from './function/trigonometry/acsc.js';\nimport { acschDocs } from './function/trigonometry/acsch.js';\nimport { asecDocs } from './function/trigonometry/asec.js';\nimport { asechDocs } from './function/trigonometry/asech.js';\nimport { asinDocs } from './function/trigonometry/asin.js';\nimport { asinhDocs } from './function/trigonometry/asinh.js';\nimport { atanDocs } from './function/trigonometry/atan.js';\nimport { atan2Docs } from './function/trigonometry/atan2.js';\nimport { atanhDocs } from './function/trigonometry/atanh.js';\nimport { cosDocs } from './function/trigonometry/cos.js';\nimport { coshDocs } from './function/trigonometry/cosh.js';\nimport { cotDocs } from './function/trigonometry/cot.js';\nimport { cothDocs } from './function/trigonometry/coth.js';\nimport { cscDocs } from './function/trigonometry/csc.js';\nimport { cschDocs } from './function/trigonometry/csch.js';\nimport { secDocs } from './function/trigonometry/sec.js';\nimport { sechDocs } from './function/trigonometry/sech.js';\nimport { sinDocs } from './function/trigonometry/sin.js';\nimport { sinhDocs } from './function/trigonometry/sinh.js';\nimport { tanDocs } from './function/trigonometry/tan.js';\nimport { tanhDocs } from './function/trigonometry/tanh.js';\nimport { toDocs } from './function/units/to.js';\nimport { binDocs } from './function/utils/bin.js';\nimport { cloneDocs } from './function/utils/clone.js';\nimport { formatDocs } from './function/utils/format.js';\nimport { hasNumericValueDocs } from './function/utils/hasNumericValue.js';\nimport { hexDocs } from './function/utils/hex.js';\nimport { isIntegerDocs } from './function/utils/isInteger.js';\nimport { isNaNDocs } from './function/utils/isNaN.js';\nimport { isNegativeDocs } from './function/utils/isNegative.js';\nimport { isNumericDocs } from './function/utils/isNumeric.js';\nimport { isPositiveDocs } from './function/utils/isPositive.js';\nimport { isPrimeDocs } from './function/utils/isPrime.js';\nimport { isZeroDocs } from './function/utils/isZero.js';\nimport { numericDocs } from './function/utils/numeric.js';\nimport { octDocs } from './function/utils/oct.js';\nimport { printDocs } from './function/utils/print.js';\nimport { typeOfDocs } from './function/utils/typeOf.js';\nimport { solveODEDocs } from './function/numeric/solveODE.js';\nexport var embeddedDocs = {\n // construction functions\n bignumber: bignumberDocs,\n bigint: bigintDocs,\n boolean: booleanDocs,\n complex: complexDocs,\n createUnit: createUnitDocs,\n fraction: fractionDocs,\n index: indexDocs,\n matrix: matrixDocs,\n number: numberDocs,\n sparse: sparseDocs,\n splitUnit: splitUnitDocs,\n string: stringDocs,\n unit: unitDocs,\n // constants\n e: eDocs,\n E: eDocs,\n false: falseDocs,\n i: iDocs,\n Infinity: InfinityDocs,\n LN2: LN2Docs,\n LN10: LN10Docs,\n LOG2E: LOG2EDocs,\n LOG10E: LOG10EDocs,\n NaN: NaNDocs,\n null: nullDocs,\n pi: piDocs,\n PI: piDocs,\n phi: phiDocs,\n SQRT1_2: SQRT12Docs,\n SQRT2: SQRT2Docs,\n tau: tauDocs,\n true: trueDocs,\n version: versionDocs,\n // physical constants\n // TODO: more detailed docs for physical constants\n speedOfLight: {\n description: 'Speed of light in vacuum',\n examples: ['speedOfLight']\n },\n gravitationConstant: {\n description: 'Newtonian constant of gravitation',\n examples: ['gravitationConstant']\n },\n planckConstant: {\n description: 'Planck constant',\n examples: ['planckConstant']\n },\n reducedPlanckConstant: {\n description: 'Reduced Planck constant',\n examples: ['reducedPlanckConstant']\n },\n magneticConstant: {\n description: 'Magnetic constant (vacuum permeability)',\n examples: ['magneticConstant']\n },\n electricConstant: {\n description: 'Electric constant (vacuum permeability)',\n examples: ['electricConstant']\n },\n vacuumImpedance: {\n description: 'Characteristic impedance of vacuum',\n examples: ['vacuumImpedance']\n },\n coulomb: {\n description: 'Coulomb\\'s constant',\n examples: ['coulomb']\n },\n elementaryCharge: {\n description: 'Elementary charge',\n examples: ['elementaryCharge']\n },\n bohrMagneton: {\n description: 'Bohr magneton',\n examples: ['bohrMagneton']\n },\n conductanceQuantum: {\n description: 'Conductance quantum',\n examples: ['conductanceQuantum']\n },\n inverseConductanceQuantum: {\n description: 'Inverse conductance quantum',\n examples: ['inverseConductanceQuantum']\n },\n // josephson: {description: 'Josephson constant', examples: ['josephson']},\n magneticFluxQuantum: {\n description: 'Magnetic flux quantum',\n examples: ['magneticFluxQuantum']\n },\n nuclearMagneton: {\n description: 'Nuclear magneton',\n examples: ['nuclearMagneton']\n },\n klitzing: {\n description: 'Von Klitzing constant',\n examples: ['klitzing']\n },\n bohrRadius: {\n description: 'Bohr radius',\n examples: ['bohrRadius']\n },\n classicalElectronRadius: {\n description: 'Classical electron radius',\n examples: ['classicalElectronRadius']\n },\n electronMass: {\n description: 'Electron mass',\n examples: ['electronMass']\n },\n fermiCoupling: {\n description: 'Fermi coupling constant',\n examples: ['fermiCoupling']\n },\n fineStructure: {\n description: 'Fine-structure constant',\n examples: ['fineStructure']\n },\n hartreeEnergy: {\n description: 'Hartree energy',\n examples: ['hartreeEnergy']\n },\n protonMass: {\n description: 'Proton mass',\n examples: ['protonMass']\n },\n deuteronMass: {\n description: 'Deuteron Mass',\n examples: ['deuteronMass']\n },\n neutronMass: {\n description: 'Neutron mass',\n examples: ['neutronMass']\n },\n quantumOfCirculation: {\n description: 'Quantum of circulation',\n examples: ['quantumOfCirculation']\n },\n rydberg: {\n description: 'Rydberg constant',\n examples: ['rydberg']\n },\n thomsonCrossSection: {\n description: 'Thomson cross section',\n examples: ['thomsonCrossSection']\n },\n weakMixingAngle: {\n description: 'Weak mixing angle',\n examples: ['weakMixingAngle']\n },\n efimovFactor: {\n description: 'Efimov factor',\n examples: ['efimovFactor']\n },\n atomicMass: {\n description: 'Atomic mass constant',\n examples: ['atomicMass']\n },\n avogadro: {\n description: 'Avogadro\\'s number',\n examples: ['avogadro']\n },\n boltzmann: {\n description: 'Boltzmann constant',\n examples: ['boltzmann']\n },\n faraday: {\n description: 'Faraday constant',\n examples: ['faraday']\n },\n firstRadiation: {\n description: 'First radiation constant',\n examples: ['firstRadiation']\n },\n loschmidt: {\n description: 'Loschmidt constant at T=273.15 K and p=101.325 kPa',\n examples: ['loschmidt']\n },\n gasConstant: {\n description: 'Gas constant',\n examples: ['gasConstant']\n },\n molarPlanckConstant: {\n description: 'Molar Planck constant',\n examples: ['molarPlanckConstant']\n },\n molarVolume: {\n description: 'Molar volume of an ideal gas at T=273.15 K and p=101.325 kPa',\n examples: ['molarVolume']\n },\n sackurTetrode: {\n description: 'Sackur-Tetrode constant at T=1 K and p=101.325 kPa',\n examples: ['sackurTetrode']\n },\n secondRadiation: {\n description: 'Second radiation constant',\n examples: ['secondRadiation']\n },\n stefanBoltzmann: {\n description: 'Stefan-Boltzmann constant',\n examples: ['stefanBoltzmann']\n },\n wienDisplacement: {\n description: 'Wien displacement law constant',\n examples: ['wienDisplacement']\n },\n // spectralRadiance: {description: 'First radiation constant for spectral radiance', examples: ['spectralRadiance']},\n\n molarMass: {\n description: 'Molar mass constant',\n examples: ['molarMass']\n },\n molarMassC12: {\n description: 'Molar mass constant of carbon-12',\n examples: ['molarMassC12']\n },\n gravity: {\n description: 'Standard acceleration of gravity (standard acceleration of free-fall on Earth)',\n examples: ['gravity']\n },\n planckLength: {\n description: 'Planck length',\n examples: ['planckLength']\n },\n planckMass: {\n description: 'Planck mass',\n examples: ['planckMass']\n },\n planckTime: {\n description: 'Planck time',\n examples: ['planckTime']\n },\n planckCharge: {\n description: 'Planck charge',\n examples: ['planckCharge']\n },\n planckTemperature: {\n description: 'Planck temperature',\n examples: ['planckTemperature']\n },\n // functions - algebra\n derivative: derivativeDocs,\n lsolve: lsolveDocs,\n lsolveAll: lsolveAllDocs,\n lup: lupDocs,\n lusolve: lusolveDocs,\n leafCount: leafCountDocs,\n polynomialRoot: polynomialRootDocs,\n resolve: resolveDocs,\n simplify: simplifyDocs,\n simplifyConstant: simplifyConstantDocs,\n simplifyCore: simplifyCoreDocs,\n symbolicEqual: symbolicEqualDocs,\n rationalize: rationalizeDocs,\n slu: sluDocs,\n usolve: usolveDocs,\n usolveAll: usolveAllDocs,\n qr: qrDocs,\n // functions - arithmetic\n abs: absDocs,\n add: addDocs,\n cbrt: cbrtDocs,\n ceil: ceilDocs,\n cube: cubeDocs,\n divide: divideDocs,\n dotDivide: dotDivideDocs,\n dotMultiply: dotMultiplyDocs,\n dotPow: dotPowDocs,\n exp: expDocs,\n expm: expmDocs,\n expm1: expm1Docs,\n fix: fixDocs,\n floor: floorDocs,\n gcd: gcdDocs,\n hypot: hypotDocs,\n lcm: lcmDocs,\n log: logDocs,\n log2: log2Docs,\n log1p: log1pDocs,\n log10: log10Docs,\n mod: modDocs,\n multiply: multiplyDocs,\n norm: normDocs,\n nthRoot: nthRootDocs,\n nthRoots: nthRootsDocs,\n pow: powDocs,\n round: roundDocs,\n sign: signDocs,\n sqrt: sqrtDocs,\n sqrtm: sqrtmDocs,\n square: squareDocs,\n subtract: subtractDocs,\n unaryMinus: unaryMinusDocs,\n unaryPlus: unaryPlusDocs,\n xgcd: xgcdDocs,\n invmod: invmodDocs,\n // functions - bitwise\n bitAnd: bitAndDocs,\n bitNot: bitNotDocs,\n bitOr: bitOrDocs,\n bitXor: bitXorDocs,\n leftShift: leftShiftDocs,\n rightArithShift: rightArithShiftDocs,\n rightLogShift: rightLogShiftDocs,\n // functions - combinatorics\n bellNumbers: bellNumbersDocs,\n catalan: catalanDocs,\n composition: compositionDocs,\n stirlingS2: stirlingS2Docs,\n // functions - core\n config: configDocs,\n import: importDocs,\n typed: typedDocs,\n // functions - complex\n arg: argDocs,\n conj: conjDocs,\n re: reDocs,\n im: imDocs,\n // functions - expression\n evaluate: evaluateDocs,\n help: helpDocs,\n // functions - geometry\n distance: distanceDocs,\n intersect: intersectDocs,\n // functions - logical\n and: andDocs,\n not: notDocs,\n or: orDocs,\n xor: xorDocs,\n // functions - matrix\n concat: concatDocs,\n count: countDocs,\n cross: crossDocs,\n column: columnDocs,\n ctranspose: ctransposeDocs,\n det: detDocs,\n diag: diagDocs,\n diff: diffDocs,\n dot: dotDocs,\n getMatrixDataType: getMatrixDataTypeDocs,\n identity: identityDocs,\n filter: filterDocs,\n flatten: flattenDocs,\n forEach: forEachDocs,\n inv: invDocs,\n pinv: pinvDocs,\n eigs: eigsDocs,\n kron: kronDocs,\n matrixFromFunction: matrixFromFunctionDocs,\n matrixFromRows: matrixFromRowsDocs,\n matrixFromColumns: matrixFromColumnsDocs,\n map: mapDocs,\n ones: onesDocs,\n partitionSelect: partitionSelectDocs,\n range: rangeDocs,\n resize: resizeDocs,\n reshape: reshapeDocs,\n rotate: rotateDocs,\n rotationMatrix: rotationMatrixDocs,\n row: rowDocs,\n size: sizeDocs,\n sort: sortDocs,\n squeeze: squeezeDocs,\n subset: subsetDocs,\n trace: traceDocs,\n transpose: transposeDocs,\n zeros: zerosDocs,\n fft: fftDocs,\n ifft: ifftDocs,\n sylvester: sylvesterDocs,\n schur: schurDocs,\n lyap: lyapDocs,\n // functions - numeric\n solveODE: solveODEDocs,\n // functions - probability\n combinations: combinationsDocs,\n combinationsWithRep: combinationsWithRepDocs,\n // distribution: distributionDocs,\n factorial: factorialDocs,\n gamma: gammaDocs,\n kldivergence: kldivergenceDocs,\n lgamma: lgammaDocs,\n multinomial: multinomialDocs,\n permutations: permutationsDocs,\n pickRandom: pickRandomDocs,\n random: randomDocs,\n randomInt: randomIntDocs,\n // functions - relational\n compare: compareDocs,\n compareNatural: compareNaturalDocs,\n compareText: compareTextDocs,\n deepEqual: deepEqualDocs,\n equal: equalDocs,\n equalText: equalTextDocs,\n larger: largerDocs,\n largerEq: largerEqDocs,\n smaller: smallerDocs,\n smallerEq: smallerEqDocs,\n unequal: unequalDocs,\n // functions - set\n setCartesian: setCartesianDocs,\n setDifference: setDifferenceDocs,\n setDistinct: setDistinctDocs,\n setIntersect: setIntersectDocs,\n setIsSubset: setIsSubsetDocs,\n setMultiplicity: setMultiplicityDocs,\n setPowerset: setPowersetDocs,\n setSize: setSizeDocs,\n setSymDifference: setSymDifferenceDocs,\n setUnion: setUnionDocs,\n // functions - signal\n zpk2tf: zpk2tfDocs,\n freqz: freqzDocs,\n // functions - special\n erf: erfDocs,\n zeta: zetaDocs,\n // functions - statistics\n cumsum: cumSumDocs,\n mad: madDocs,\n max: maxDocs,\n mean: meanDocs,\n median: medianDocs,\n min: minDocs,\n mode: modeDocs,\n prod: prodDocs,\n quantileSeq: quantileSeqDocs,\n std: stdDocs,\n sum: sumDocs,\n variance: varianceDocs,\n corr: corrDocs,\n // functions - trigonometry\n acos: acosDocs,\n acosh: acoshDocs,\n acot: acotDocs,\n acoth: acothDocs,\n acsc: acscDocs,\n acsch: acschDocs,\n asec: asecDocs,\n asech: asechDocs,\n asin: asinDocs,\n asinh: asinhDocs,\n atan: atanDocs,\n atanh: atanhDocs,\n atan2: atan2Docs,\n cos: cosDocs,\n cosh: coshDocs,\n cot: cotDocs,\n coth: cothDocs,\n csc: cscDocs,\n csch: cschDocs,\n sec: secDocs,\n sech: sechDocs,\n sin: sinDocs,\n sinh: sinhDocs,\n tan: tanDocs,\n tanh: tanhDocs,\n // functions - units\n to: toDocs,\n // functions - utils\n clone: cloneDocs,\n format: formatDocs,\n bin: binDocs,\n oct: octDocs,\n hex: hexDocs,\n isNaN: isNaNDocs,\n isInteger: isIntegerDocs,\n isNegative: isNegativeDocs,\n isNumeric: isNumericDocs,\n hasNumericValue: hasNumericValueDocs,\n isPositive: isPositiveDocs,\n isPrime: isPrimeDocs,\n isZero: isZeroDocs,\n print: printDocs,\n typeOf: typeOfDocs,\n numeric: numericDocs\n};", "import { factory } from '../../utils/factory.js';\nimport { getSafeProperty } from '../../utils/customs.js';\nimport { embeddedDocs } from '../embeddedDocs/embeddedDocs.js';\nimport { hasOwnProperty } from '../../utils/object.js';\nvar name = 'help';\nvar dependencies = ['typed', 'mathWithTransform', 'Help'];\nexport var createHelp = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n mathWithTransform,\n Help\n } = _ref;\n /**\n * Retrieve help on a function or data type.\n * Help files are retrieved from the embedded documentation in math.docs.\n *\n * Syntax:\n *\n * math.help(search)\n *\n * Examples:\n *\n * console.log(math.help('sin').toString())\n * console.log(math.help(math.add).toString())\n * console.log(math.help(math.add).toJSON())\n *\n * @param {Function | string | Object} search A function or function name\n * for which to get help\n * @return {Help} A help object\n */\n return typed(name, {\n any: function any(search) {\n var prop;\n var searchName = search;\n if (typeof search !== 'string') {\n for (prop in mathWithTransform) {\n // search in functions and constants\n if (hasOwnProperty(mathWithTransform, prop) && search === mathWithTransform[prop]) {\n searchName = prop;\n break;\n }\n }\n\n /* TODO: implement help for data types\n if (!text) {\n // search data type\n for (prop in math.type) {\n if (hasOwnProperty(math, prop)) {\n if (search === math.type[prop]) {\n text = prop\n break\n }\n }\n }\n }\n */\n }\n var doc = getSafeProperty(embeddedDocs, searchName);\n if (!doc) {\n var searchText = typeof searchName === 'function' ? searchName.name : searchName;\n throw new Error('No documentation found on \"' + searchText + '\"');\n }\n return new Help(doc);\n }\n });\n});", "import { factory } from '../../../utils/factory.js';\nvar name = 'chain';\nvar dependencies = ['typed', 'Chain'];\nexport var createChain = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Chain\n } = _ref;\n /**\n * Wrap any value in a chain, allowing to perform chained operations on\n * the value.\n *\n * All methods available in the math.js library can be called upon the chain,\n * and then will be evaluated with the value itself as first argument.\n * The chain can be closed by executing `chain.done()`, which returns\n * the final value.\n *\n * The chain has a number of special functions:\n *\n * - `done()` Finalize the chain and return the chain's value.\n * - `valueOf()` The same as `done()`\n * - `toString()` Executes `math.format()` onto the chain's value, returning\n * a string representation of the value.\n *\n * Syntax:\n *\n * math.chain(value)\n *\n * Examples:\n *\n * math.chain(3)\n * .add(4)\n * .subtract(2)\n * .done() // 5\n *\n * math.chain( [[1, 2], [3, 4]] )\n * .subset(math.index(0, 0), 8)\n * .multiply(3)\n * .done() // [[24, 6], [9, 12]]\n *\n * @param {*} [value] A value of any type on which to start a chained operation.\n * @return {math.Chain} The created chain\n */\n return typed(name, {\n '': function _() {\n return new Chain();\n },\n any: function any(value) {\n return new Chain(value);\n }\n });\n});", "import { isMatrix } from '../../utils/is.js';\nimport { clone } from '../../utils/object.js';\nimport { format } from '../../utils/string.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'det';\nvar dependencies = ['typed', 'matrix', 'subtractScalar', 'multiply', 'divideScalar', 'isZero', 'unaryMinus'];\nexport var createDet = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n subtractScalar,\n multiply,\n divideScalar,\n isZero,\n unaryMinus\n } = _ref;\n /**\n * Calculate the determinant of a matrix.\n *\n * Syntax:\n *\n * math.det(x)\n *\n * Examples:\n *\n * math.det([[1, 2], [3, 4]]) // returns -2\n *\n * const A = [\n * [-2, 2, 3],\n * [-1, 1, 3],\n * [2, 0, -1]\n * ]\n * math.det(A) // returns 6\n *\n * See also:\n *\n * inv\n *\n * @param {Array | Matrix} x A matrix\n * @return {number} The determinant of `x`\n */\n return typed(name, {\n any: function any(x) {\n return clone(x);\n },\n 'Array | Matrix': function det(x) {\n var size;\n if (isMatrix(x)) {\n size = x.size();\n } else if (Array.isArray(x)) {\n x = matrix(x);\n size = x.size();\n } else {\n // a scalar\n size = [];\n }\n switch (size.length) {\n case 0:\n // scalar\n return clone(x);\n case 1:\n // vector\n if (size[0] === 1) {\n return clone(x.valueOf()[0]);\n }\n if (size[0] === 0) {\n return 1; // det of an empty matrix is per definition 1\n } else {\n throw new RangeError('Matrix must be square ' + '(size: ' + format(size) + ')');\n }\n case 2:\n {\n // two-dimensional array\n var rows = size[0];\n var cols = size[1];\n if (rows === cols) {\n return _det(x.clone().valueOf(), rows, cols);\n }\n if (cols === 0) {\n return 1; // det of an empty matrix is per definition 1\n } else {\n throw new RangeError('Matrix must be square ' + '(size: ' + format(size) + ')');\n }\n }\n default:\n // multi dimensional array\n throw new RangeError('Matrix must be two dimensional ' + '(size: ' + format(size) + ')');\n }\n }\n });\n\n /**\n * Calculate the determinant of a matrix\n * @param {Array[]} matrix A square, two dimensional matrix\n * @param {number} rows Number of rows of the matrix (zero-based)\n * @param {number} cols Number of columns of the matrix (zero-based)\n * @returns {number} det\n * @private\n */\n function _det(matrix, rows, cols) {\n if (rows === 1) {\n // this is a 1 x 1 matrix\n return clone(matrix[0][0]);\n } else if (rows === 2) {\n // this is a 2 x 2 matrix\n // the determinant of [a11,a12;a21,a22] is det = a11*a22-a21*a12\n return subtractScalar(multiply(matrix[0][0], matrix[1][1]), multiply(matrix[1][0], matrix[0][1]));\n } else {\n // Bareiss algorithm\n // this algorithm have same complexity as LUP decomposition (O(n^3))\n // but it preserve precision of floating point more relative to the LUP decomposition\n var negated = false;\n var rowIndices = new Array(rows).fill(0).map((_, i) => i); // matrix index of row i\n for (var k = 0; k < rows; k++) {\n var k_ = rowIndices[k];\n if (isZero(matrix[k_][k])) {\n var _k = void 0;\n for (_k = k + 1; _k < rows; _k++) {\n if (!isZero(matrix[rowIndices[_k]][k])) {\n k_ = rowIndices[_k];\n rowIndices[_k] = rowIndices[k];\n rowIndices[k] = k_;\n negated = !negated;\n break;\n }\n }\n if (_k === rows) return matrix[k_][k]; // some zero of the type\n }\n var piv = matrix[k_][k];\n var piv_ = k === 0 ? 1 : matrix[rowIndices[k - 1]][k - 1];\n for (var i = k + 1; i < rows; i++) {\n var i_ = rowIndices[i];\n for (var j = k + 1; j < rows; j++) {\n matrix[i_][j] = divideScalar(subtractScalar(multiply(matrix[i_][j], piv), multiply(matrix[i_][k], matrix[k_][j])), piv_);\n }\n }\n }\n var det = matrix[rowIndices[rows - 1]][rows - 1];\n return negated ? unaryMinus(det) : det;\n }\n }\n});", "import { isMatrix } from '../../utils/is.js';\nimport { arraySize } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { format } from '../../utils/string.js';\nvar name = 'inv';\nvar dependencies = ['typed', 'matrix', 'divideScalar', 'addScalar', 'multiply', 'unaryMinus', 'det', 'identity', 'abs'];\nexport var createInv = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n divideScalar,\n addScalar,\n multiply,\n unaryMinus,\n det,\n identity,\n abs\n } = _ref;\n /**\n * Calculate the inverse of a square matrix.\n *\n * Syntax:\n *\n * math.inv(x)\n *\n * Examples:\n *\n * math.inv([[1, 2], [3, 4]]) // returns [[-2, 1], [1.5, -0.5]]\n * math.inv(4) // returns 0.25\n * 1 / 4 // returns 0.25\n *\n * See also:\n *\n * det, transpose\n *\n * @param {number | Complex | Array | Matrix} x Matrix to be inversed\n * @return {number | Complex | Array | Matrix} The inverse of `x`.\n */\n return typed(name, {\n 'Array | Matrix': function Array__Matrix(x) {\n var size = isMatrix(x) ? x.size() : arraySize(x);\n switch (size.length) {\n case 1:\n // vector\n if (size[0] === 1) {\n if (isMatrix(x)) {\n return matrix([divideScalar(1, x.valueOf()[0])]);\n } else {\n return [divideScalar(1, x[0])];\n }\n } else {\n throw new RangeError('Matrix must be square ' + '(size: ' + format(size) + ')');\n }\n case 2:\n // two dimensional array\n {\n var rows = size[0];\n var cols = size[1];\n if (rows === cols) {\n if (isMatrix(x)) {\n return matrix(_inv(x.valueOf(), rows, cols), x.storage());\n } else {\n // return an Array\n return _inv(x, rows, cols);\n }\n } else {\n throw new RangeError('Matrix must be square ' + '(size: ' + format(size) + ')');\n }\n }\n default:\n // multi dimensional array\n throw new RangeError('Matrix must be two dimensional ' + '(size: ' + format(size) + ')');\n }\n },\n any: function any(x) {\n // scalar\n return divideScalar(1, x); // FIXME: create a BigNumber one when configured for bignumbers\n }\n });\n\n /**\n * Calculate the inverse of a square matrix\n * @param {Array[]} mat A square matrix\n * @param {number} rows Number of rows\n * @param {number} cols Number of columns, must equal rows\n * @return {Array[]} inv Inverse matrix\n * @private\n */\n function _inv(mat, rows, cols) {\n var r, s, f, value, temp;\n if (rows === 1) {\n // this is a 1 x 1 matrix\n value = mat[0][0];\n if (value === 0) {\n throw Error('Cannot calculate inverse, determinant is zero');\n }\n return [[divideScalar(1, value)]];\n } else if (rows === 2) {\n // this is a 2 x 2 matrix\n var d = det(mat);\n if (d === 0) {\n throw Error('Cannot calculate inverse, determinant is zero');\n }\n return [[divideScalar(mat[1][1], d), divideScalar(unaryMinus(mat[0][1]), d)], [divideScalar(unaryMinus(mat[1][0]), d), divideScalar(mat[0][0], d)]];\n } else {\n // this is a matrix of 3 x 3 or larger\n // calculate inverse using gauss-jordan elimination\n // https://en.wikipedia.org/wiki/Gaussian_elimination\n // http://mathworld.wolfram.com/MatrixInverse.html\n // http://math.uww.edu/~mcfarlat/inverse.htm\n\n // make a copy of the matrix (only the arrays, not of the elements)\n var A = mat.concat();\n for (r = 0; r < rows; r++) {\n A[r] = A[r].concat();\n }\n\n // create an identity matrix which in the end will contain the\n // matrix inverse\n var B = identity(rows).valueOf();\n\n // loop over all columns, and perform row reductions\n for (var c = 0; c < cols; c++) {\n // Pivoting: Swap row c with row r, where row r contains the largest element A[r][c]\n var ABig = abs(A[c][c]);\n var rBig = c;\n r = c + 1;\n while (r < rows) {\n if (abs(A[r][c]) > ABig) {\n ABig = abs(A[r][c]);\n rBig = r;\n }\n r++;\n }\n if (ABig === 0) {\n throw Error('Cannot calculate inverse, determinant is zero');\n }\n r = rBig;\n if (r !== c) {\n temp = A[c];\n A[c] = A[r];\n A[r] = temp;\n temp = B[c];\n B[c] = B[r];\n B[r] = temp;\n }\n\n // eliminate non-zero values on the other rows at column c\n var Ac = A[c];\n var Bc = B[c];\n for (r = 0; r < rows; r++) {\n var Ar = A[r];\n var Br = B[r];\n if (r !== c) {\n // eliminate value at column c and row r\n if (Ar[c] !== 0) {\n f = divideScalar(unaryMinus(Ar[c]), Ac[c]);\n\n // add (f * row c) to row r to eliminate the value\n // at column c\n for (s = c; s < cols; s++) {\n Ar[s] = addScalar(Ar[s], multiply(f, Ac[s]));\n }\n for (s = 0; s < cols; s++) {\n Br[s] = addScalar(Br[s], multiply(f, Bc[s]));\n }\n }\n } else {\n // normalize value at Acc to 1,\n // divide each value on row r with the value at Acc\n f = Ac[c];\n for (s = c; s < cols; s++) {\n Ar[s] = divideScalar(Ar[s], f);\n }\n for (s = 0; s < cols; s++) {\n Br[s] = divideScalar(Br[s], f);\n }\n }\n }\n }\n return B;\n }\n }\n});", "import { isMatrix } from '../../utils/is.js';\nimport { arraySize } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { format } from '../../utils/string.js';\nimport { clone } from '../../utils/object.js';\nvar name = 'pinv';\nvar dependencies = ['typed', 'matrix', 'inv', 'deepEqual', 'equal', 'dotDivide', 'dot', 'ctranspose', 'divideScalar', 'multiply', 'add', 'Complex'];\nexport var createPinv = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n inv,\n deepEqual,\n equal,\n dotDivide,\n dot,\n ctranspose,\n divideScalar,\n multiply,\n add,\n Complex\n } = _ref;\n /**\n * Calculate the Moore\u2013Penrose inverse of a matrix.\n *\n * Syntax:\n *\n * math.pinv(x)\n *\n * Examples:\n *\n * math.pinv([[1, 2], [3, 4]]) // returns [[-2, 1], [1.5, -0.5]]\n * math.pinv([[1, 0], [0, 1], [0, 1]]) // returns [[1, 0, 0], [0, 0.5, 0.5]]\n * math.pinv(4) // returns 0.25\n *\n * See also:\n *\n * inv\n *\n * @param {number | Complex | Array | Matrix} x Matrix to be inversed\n * @return {number | Complex | Array | Matrix} The inverse of `x`.\n */\n return typed(name, {\n 'Array | Matrix': function Array__Matrix(x) {\n var size = isMatrix(x) ? x.size() : arraySize(x);\n switch (size.length) {\n case 1:\n // vector\n if (_isZeros(x)) return ctranspose(x); // null vector\n if (size[0] === 1) {\n return inv(x); // invertible matrix\n } else {\n return dotDivide(ctranspose(x), dot(x, x));\n }\n case 2:\n // two dimensional array\n {\n if (_isZeros(x)) return ctranspose(x); // zero matrixx\n var rows = size[0];\n var cols = size[1];\n if (rows === cols) {\n try {\n return inv(x); // invertible matrix\n } catch (err) {\n if (err instanceof Error && err.message.match(/Cannot calculate inverse, determinant is zero/)) {\n // Expected\n } else {\n throw err;\n }\n }\n }\n if (isMatrix(x)) {\n return matrix(_pinv(x.valueOf(), rows, cols), x.storage());\n } else {\n // return an Array\n return _pinv(x, rows, cols);\n }\n }\n default:\n // multi dimensional array\n throw new RangeError('Matrix must be two dimensional ' + '(size: ' + format(size) + ')');\n }\n },\n any: function any(x) {\n // scalar\n if (equal(x, 0)) return clone(x); // zero\n return divideScalar(1, x);\n }\n });\n\n /**\n * Calculate the Moore\u2013Penrose inverse of a matrix\n * @param {Array[]} mat A matrix\n * @param {number} rows Number of rows\n * @param {number} cols Number of columns\n * @return {Array[]} pinv Pseudoinverse matrix\n * @private\n */\n function _pinv(mat, rows, cols) {\n var {\n C,\n F\n } = _rankFact(mat, rows, cols); // TODO: Use SVD instead (may improve precision)\n var Cpinv = multiply(inv(multiply(ctranspose(C), C)), ctranspose(C));\n var Fpinv = multiply(ctranspose(F), inv(multiply(F, ctranspose(F))));\n return multiply(Fpinv, Cpinv);\n }\n\n /**\n * Calculate the reduced row echelon form of a matrix\n *\n * Modified from https://rosettacode.org/wiki/Reduced_row_echelon_form\n *\n * @param {Array[]} mat A matrix\n * @param {number} rows Number of rows\n * @param {number} cols Number of columns\n * @return {Array[]} Reduced row echelon form\n * @private\n */\n function _rref(mat, rows, cols) {\n var M = clone(mat);\n var lead = 0;\n for (var r = 0; r < rows; r++) {\n if (cols <= lead) {\n return M;\n }\n var i = r;\n while (_isZero(M[i][lead])) {\n i++;\n if (rows === i) {\n i = r;\n lead++;\n if (cols === lead) {\n return M;\n }\n }\n }\n [M[i], M[r]] = [M[r], M[i]];\n var val = M[r][lead];\n for (var j = 0; j < cols; j++) {\n M[r][j] = dotDivide(M[r][j], val);\n }\n for (var _i = 0; _i < rows; _i++) {\n if (_i === r) continue;\n val = M[_i][lead];\n for (var _j = 0; _j < cols; _j++) {\n M[_i][_j] = add(M[_i][_j], multiply(-1, multiply(val, M[r][_j])));\n }\n }\n lead++;\n }\n return M;\n }\n\n /**\n * Calculate the rank factorization of a matrix\n *\n * @param {Array[]} mat A matrix (M)\n * @param {number} rows Number of rows\n * @param {number} cols Number of columns\n * @return {{C: Array, F: Array}} rank factorization where M = C F\n * @private\n */\n function _rankFact(mat, rows, cols) {\n var rref = _rref(mat, rows, cols);\n var C = mat.map((_, i) => _.filter((_, j) => j < rows && !_isZero(dot(rref[j], rref[j]))));\n var F = rref.filter((_, i) => !_isZero(dot(rref[i], rref[i])));\n return {\n C,\n F\n };\n }\n function _isZero(x) {\n return equal(add(x, Complex(1, 1)), add(0, Complex(1, 1)));\n }\n function _isZeros(arr) {\n return deepEqual(add(arr, Complex(1, 1)), add(multiply(arr, 0), Complex(1, 1)));\n }\n});", "import { clone } from '../../../utils/object.js';\nexport function createComplexEigs(_ref) {\n var {\n addScalar,\n subtract,\n flatten,\n multiply,\n multiplyScalar,\n divideScalar,\n sqrt,\n abs,\n bignumber,\n diag,\n size,\n reshape,\n inv,\n qr,\n usolve,\n usolveAll,\n equal,\n complex,\n larger,\n smaller,\n matrixFromColumns,\n dot\n } = _ref;\n /**\n * @param {number[][]} arr the matrix to find eigenvalues of\n * @param {number} N size of the matrix\n * @param {number|BigNumber} prec precision, anything lower will be considered zero\n * @param {'number'|'BigNumber'|'Complex'} type\n * @param {boolean} findVectors should we find eigenvectors?\n *\n * @returns {{ values: number[], vectors: number[][] }}\n */\n function complexEigs(arr, N, prec, type) {\n var findVectors = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n // TODO check if any row/col are zero except the diagonal\n\n // make sure corresponding rows and columns have similar magnitude\n // important because of numerical stability\n // MODIFIES arr by side effect!\n var R = balance(arr, N, prec, type, findVectors);\n\n // R is the row transformation matrix\n // arr = A' = R A R^-1, A is the original matrix\n // (if findVectors is false, R is undefined)\n // (And so to return to original matrix: A = R^-1 arr R)\n\n // TODO if magnitudes of elements vary over many orders,\n // move greatest elements to the top left corner\n\n // using similarity transformations, reduce the matrix\n // to Hessenberg form (upper triangular plus one subdiagonal row)\n // updates the transformation matrix R with new row operationsq\n // MODIFIES arr by side effect!\n reduceToHessenberg(arr, N, prec, type, findVectors, R);\n // still true that original A = R^-1 arr R)\n\n // find eigenvalues\n var {\n values,\n C\n } = iterateUntilTriangular(arr, N, prec, type, findVectors);\n\n // values is the list of eigenvalues, C is the column\n // transformation matrix that transforms arr, the hessenberg\n // matrix, to upper triangular\n // (So U = C^-1 arr C and the relationship between current arr\n // and original A is unchanged.)\n\n if (findVectors) {\n var eigenvectors = findEigenvectors(arr, N, C, R, values, prec, type);\n return {\n values,\n eigenvectors\n };\n }\n return {\n values\n };\n }\n\n /**\n * @param {number[][]} arr\n * @param {number} N\n * @param {number} prec\n * @param {'number'|'BigNumber'|'Complex'} type\n * @returns {number[][]}\n */\n function balance(arr, N, prec, type, findVectors) {\n var big = type === 'BigNumber';\n var cplx = type === 'Complex';\n var realzero = big ? bignumber(0) : 0;\n var one = big ? bignumber(1) : cplx ? complex(1) : 1;\n var realone = big ? bignumber(1) : 1;\n\n // base of the floating-point arithmetic\n var radix = big ? bignumber(10) : 2;\n var radixSq = multiplyScalar(radix, radix);\n\n // the diagonal transformation matrix R\n var Rdiag;\n if (findVectors) {\n Rdiag = Array(N).fill(one);\n }\n\n // this isn't the only time we loop thru the matrix...\n var last = false;\n while (!last) {\n // ...haha I'm joking! unless...\n last = true;\n for (var i = 0; i < N; i++) {\n // compute the taxicab norm of i-th column and row\n // TODO optimize for complex numbers\n var colNorm = realzero;\n var rowNorm = realzero;\n for (var j = 0; j < N; j++) {\n if (i === j) continue;\n colNorm = addScalar(colNorm, abs(arr[j][i]));\n rowNorm = addScalar(rowNorm, abs(arr[i][j]));\n }\n if (!equal(colNorm, 0) && !equal(rowNorm, 0)) {\n // find integer power closest to balancing the matrix\n // (we want to scale only by integer powers of radix,\n // so that we don't lose any precision due to round-off)\n\n var f = realone;\n var c = colNorm;\n var rowDivRadix = divideScalar(rowNorm, radix);\n var rowMulRadix = multiplyScalar(rowNorm, radix);\n while (smaller(c, rowDivRadix)) {\n c = multiplyScalar(c, radixSq);\n f = multiplyScalar(f, radix);\n }\n while (larger(c, rowMulRadix)) {\n c = divideScalar(c, radixSq);\n f = divideScalar(f, radix);\n }\n\n // check whether balancing is needed\n // condition = (c + rowNorm) / f < 0.95 * (colNorm + rowNorm)\n var condition = smaller(divideScalar(addScalar(c, rowNorm), f), multiplyScalar(addScalar(colNorm, rowNorm), 0.95));\n\n // apply balancing similarity transformation\n if (condition) {\n // we should loop once again to check whether\n // another rebalancing is needed\n last = false;\n var g = divideScalar(1, f);\n for (var _j = 0; _j < N; _j++) {\n if (i === _j) {\n continue;\n }\n arr[i][_j] = multiplyScalar(arr[i][_j], g);\n arr[_j][i] = multiplyScalar(arr[_j][i], f);\n }\n\n // keep track of transformations\n if (findVectors) {\n Rdiag[i] = multiplyScalar(Rdiag[i], g);\n }\n }\n }\n }\n }\n\n // return the diagonal row transformation matrix\n return findVectors ? diag(Rdiag) : null;\n }\n\n /**\n * @param {number[][]} arr\n * @param {number} N\n * @param {number} prec\n * @param {'number'|'BigNumber'|'Complex'} type\n * @param {boolean} findVectors\n * @param {number[][]} R the row transformation matrix that will be modified\n */\n function reduceToHessenberg(arr, N, prec, type, findVectors, R) {\n var big = type === 'BigNumber';\n var cplx = type === 'Complex';\n var zero = big ? bignumber(0) : cplx ? complex(0) : 0;\n if (big) {\n prec = bignumber(prec);\n }\n for (var i = 0; i < N - 2; i++) {\n // Find the largest subdiag element in the i-th col\n\n var maxIndex = 0;\n var max = zero;\n for (var j = i + 1; j < N; j++) {\n var el = arr[j][i];\n if (smaller(abs(max), abs(el))) {\n max = el;\n maxIndex = j;\n }\n }\n\n // This col is pivoted, no need to do anything\n if (smaller(abs(max), prec)) {\n continue;\n }\n if (maxIndex !== i + 1) {\n // Interchange maxIndex-th and (i+1)-th row\n var tmp1 = arr[maxIndex];\n arr[maxIndex] = arr[i + 1];\n arr[i + 1] = tmp1;\n\n // Interchange maxIndex-th and (i+1)-th column\n for (var _j2 = 0; _j2 < N; _j2++) {\n var tmp2 = arr[_j2][maxIndex];\n arr[_j2][maxIndex] = arr[_j2][i + 1];\n arr[_j2][i + 1] = tmp2;\n }\n\n // keep track of transformations\n if (findVectors) {\n var tmp3 = R[maxIndex];\n R[maxIndex] = R[i + 1];\n R[i + 1] = tmp3;\n }\n }\n\n // Reduce following rows and columns\n for (var _j3 = i + 2; _j3 < N; _j3++) {\n var n = divideScalar(arr[_j3][i], max);\n if (n === 0) {\n continue;\n }\n\n // from j-th row subtract n-times (i+1)th row\n for (var k = 0; k < N; k++) {\n arr[_j3][k] = subtract(arr[_j3][k], multiplyScalar(n, arr[i + 1][k]));\n }\n\n // to (i+1)th column add n-times j-th column\n for (var _k = 0; _k < N; _k++) {\n arr[_k][i + 1] = addScalar(arr[_k][i + 1], multiplyScalar(n, arr[_k][_j3]));\n }\n\n // keep track of transformations\n if (findVectors) {\n for (var _k2 = 0; _k2 < N; _k2++) {\n R[_j3][_k2] = subtract(R[_j3][_k2], multiplyScalar(n, R[i + 1][_k2]));\n }\n }\n }\n }\n return R;\n }\n\n /**\n * @returns {{values: values, C: Matrix}}\n * @see Press, Wiliams: Numerical recipes in Fortran 77\n * @see https://en.wikipedia.org/wiki/QR_algorithm\n */\n function iterateUntilTriangular(A, N, prec, type, findVectors) {\n var big = type === 'BigNumber';\n var cplx = type === 'Complex';\n var one = big ? bignumber(1) : cplx ? complex(1) : 1;\n if (big) {\n prec = bignumber(prec);\n }\n\n // The Francis Algorithm\n // The core idea of this algorithm is that doing successive\n // A' = QtAQ transformations will eventually converge to block-\n // upper-triangular with diagonal blocks either 1x1 or 2x2.\n // The Q here is the one from the QR decomposition, A = QR.\n // Since the eigenvalues of a block-upper-triangular matrix are\n // the eigenvalues of its diagonal blocks and we know how to find\n // eigenvalues of a 2x2 matrix, we know the eigenvalues of A.\n\n var arr = clone(A);\n\n // the list of converged eigenvalues\n var lambdas = [];\n\n // size of arr, which will get smaller as eigenvalues converge\n var n = N;\n\n // the diagonal of the block-diagonal matrix that turns\n // converged 2x2 matrices into upper triangular matrices\n var Sdiag = [];\n\n // N\u00D7N matrix describing the overall transformation done during the QR algorithm\n var Qtotal = findVectors ? diag(Array(N).fill(one)) : undefined;\n\n // nxn matrix describing the QR transformations done since last convergence\n var Qpartial = findVectors ? diag(Array(n).fill(one)) : undefined;\n\n // last eigenvalue converged before this many steps\n var lastConvergenceBefore = 0;\n while (lastConvergenceBefore <= 100) {\n lastConvergenceBefore += 1;\n\n // TODO if the convergence is slow, do something clever\n\n // Perform the factorization\n\n var k = arr[n - 1][n - 1]; // TODO this is apparently a somewhat\n // old-fashioned choice; ideally set close to an eigenvalue, or\n // perhaps better yet switch to the implicit QR version that is sometimes\n // specifically called the \"Francis algorithm\" that is alluded to\n // in the following TODO. (Or perhaps we switch to an independently\n // optimized third-party package for the linear algebra operations...)\n\n for (var i = 0; i < n; i++) {\n arr[i][i] = subtract(arr[i][i], k);\n }\n\n // TODO do an implicit QR transformation\n var {\n Q,\n R\n } = qr(arr);\n arr = multiply(R, Q);\n for (var _i = 0; _i < n; _i++) {\n arr[_i][_i] = addScalar(arr[_i][_i], k);\n }\n\n // keep track of transformations\n if (findVectors) {\n Qpartial = multiply(Qpartial, Q);\n }\n\n // The rightmost diagonal element converged to an eigenvalue\n if (n === 1 || smaller(abs(arr[n - 1][n - 2]), prec)) {\n lastConvergenceBefore = 0;\n lambdas.push(arr[n - 1][n - 1]);\n\n // keep track of transformations\n if (findVectors) {\n Sdiag.unshift([[1]]);\n inflateMatrix(Qpartial, N);\n Qtotal = multiply(Qtotal, Qpartial);\n if (n > 1) {\n Qpartial = diag(Array(n - 1).fill(one));\n }\n }\n\n // reduce the matrix size\n n -= 1;\n arr.pop();\n for (var _i2 = 0; _i2 < n; _i2++) {\n arr[_i2].pop();\n }\n\n // The rightmost diagonal 2x2 block converged\n } else if (n === 2 || smaller(abs(arr[n - 2][n - 3]), prec)) {\n lastConvergenceBefore = 0;\n var ll = eigenvalues2x2(arr[n - 2][n - 2], arr[n - 2][n - 1], arr[n - 1][n - 2], arr[n - 1][n - 1]);\n lambdas.push(...ll);\n\n // keep track of transformations\n if (findVectors) {\n Sdiag.unshift(jordanBase2x2(arr[n - 2][n - 2], arr[n - 2][n - 1], arr[n - 1][n - 2], arr[n - 1][n - 1], ll[0], ll[1], prec, type));\n inflateMatrix(Qpartial, N);\n Qtotal = multiply(Qtotal, Qpartial);\n if (n > 2) {\n Qpartial = diag(Array(n - 2).fill(one));\n }\n }\n\n // reduce the matrix size\n n -= 2;\n arr.pop();\n arr.pop();\n for (var _i3 = 0; _i3 < n; _i3++) {\n arr[_i3].pop();\n arr[_i3].pop();\n }\n }\n if (n === 0) {\n break;\n }\n }\n\n // standard sorting\n lambdas.sort((a, b) => +subtract(abs(a), abs(b)));\n\n // the algorithm didn't converge\n if (lastConvergenceBefore > 100) {\n var err = Error('The eigenvalues failed to converge. Only found these eigenvalues: ' + lambdas.join(', '));\n err.values = lambdas;\n err.vectors = [];\n throw err;\n }\n\n // combine the overall QR transformation Qtotal with the subsequent\n // transformation S that turns the diagonal 2x2 blocks to upper triangular\n var C = findVectors ? multiply(Qtotal, blockDiag(Sdiag, N)) : undefined;\n return {\n values: lambdas,\n C\n };\n }\n\n /**\n * @param {Matrix} A hessenberg-form matrix\n * @param {number} N size of A\n * @param {Matrix} C column transformation matrix that turns A into upper triangular\n * @param {Matrix} R similarity that turns original matrix into A\n * @param {number[]} values array of eigenvalues of A\n * @param {'number'|'BigNumber'|'Complex'} type\n * @returns {number[][]} eigenvalues\n */\n function findEigenvectors(A, N, C, R, values, prec, type) {\n var Cinv = inv(C);\n var U = multiply(Cinv, A, C);\n var big = type === 'BigNumber';\n var cplx = type === 'Complex';\n var zero = big ? bignumber(0) : cplx ? complex(0) : 0;\n var one = big ? bignumber(1) : cplx ? complex(1) : 1;\n\n // turn values into a kind of \"multiset\"\n // this way it is easier to find eigenvectors\n var uniqueValues = [];\n var multiplicities = [];\n for (var lambda of values) {\n var i = indexOf(uniqueValues, lambda, equal);\n if (i === -1) {\n uniqueValues.push(lambda);\n multiplicities.push(1);\n } else {\n multiplicities[i] += 1;\n }\n }\n\n // find eigenvectors by solving U \u2212 lambdaE = 0\n // TODO replace with an iterative eigenvector algorithm\n // (this one might fail for imprecise eigenvalues)\n\n var vectors = [];\n var len = uniqueValues.length;\n var b = Array(N).fill(zero);\n var E = diag(Array(N).fill(one));\n var _loop = function _loop() {\n var lambda = uniqueValues[_i4];\n var S = subtract(U, multiply(lambda, E)); // the characteristic matrix\n\n var solutions = usolveAll(S, b);\n solutions.shift(); // ignore the null vector\n\n // looks like we missed something, try inverse iteration\n // But if that fails, just presume that the original matrix truly\n // was defective.\n while (solutions.length < multiplicities[_i4]) {\n var approxVec = inverseIterate(S, N, solutions, prec, type);\n if (approxVec === null) {\n break;\n } // no more vectors were found\n solutions.push(approxVec);\n }\n\n // Transform back into original array coordinates\n var correction = multiply(inv(R), C);\n solutions = solutions.map(v => multiply(correction, v));\n vectors.push(...solutions.map(v => ({\n value: lambda,\n vector: flatten(v)\n })));\n };\n for (var _i4 = 0; _i4 < len; _i4++) {\n _loop();\n }\n return vectors;\n }\n\n /**\n * Compute the eigenvalues of an 2x2 matrix\n * @return {[number,number]}\n */\n function eigenvalues2x2(a, b, c, d) {\n // lambda_+- = 1/2 trA +- 1/2 sqrt( tr^2 A - 4 detA )\n var trA = addScalar(a, d);\n var detA = subtract(multiplyScalar(a, d), multiplyScalar(b, c));\n var x = multiplyScalar(trA, 0.5);\n var y = multiplyScalar(sqrt(subtract(multiplyScalar(trA, trA), multiplyScalar(4, detA))), 0.5);\n return [addScalar(x, y), subtract(x, y)];\n }\n\n /**\n * For an 2x2 matrix compute the transformation matrix S,\n * so that SAS^-1 is an upper triangular matrix\n * @return {[[number,number],[number,number]]}\n * @see https://math.berkeley.edu/~ogus/old/Math_54-05/webfoils/jordan.pdf\n * @see http://people.math.harvard.edu/~knill/teaching/math21b2004/exhibits/2dmatrices/index.html\n */\n function jordanBase2x2(a, b, c, d, l1, l2, prec, type) {\n var big = type === 'BigNumber';\n var cplx = type === 'Complex';\n var zero = big ? bignumber(0) : cplx ? complex(0) : 0;\n var one = big ? bignumber(1) : cplx ? complex(1) : 1;\n\n // matrix is already upper triangular\n // return an identity matrix\n if (smaller(abs(c), prec)) {\n return [[one, zero], [zero, one]];\n }\n\n // matrix is diagonalizable\n // return its eigenvectors as columns\n if (larger(abs(subtract(l1, l2)), prec)) {\n return [[subtract(l1, d), subtract(l2, d)], [c, c]];\n }\n\n // matrix is not diagonalizable\n // compute diagonal elements of N = A - lambdaI\n var na = subtract(a, l1);\n var nd = subtract(d, l1);\n\n // col(N,2) = 0 implies S = ( col(N,1), e_1 )\n // col(N,2) != 0 implies S = ( col(N,2), e_2 )\n\n if (smaller(abs(b), prec) && smaller(abs(nd), prec)) {\n return [[na, one], [c, zero]];\n } else {\n return [[b, zero], [nd, one]];\n }\n }\n\n /**\n * Enlarge the matrix from nxn to NxN, setting the new\n * elements to 1 on diagonal and 0 elsewhere\n */\n function inflateMatrix(arr, N) {\n // add columns\n for (var i = 0; i < arr.length; i++) {\n arr[i].push(...Array(N - arr[i].length).fill(0));\n }\n\n // add rows\n for (var _i5 = arr.length; _i5 < N; _i5++) {\n arr.push(Array(N).fill(0));\n arr[_i5][_i5] = 1;\n }\n return arr;\n }\n\n /**\n * Create a block-diagonal matrix with the given square matrices on the diagonal\n * @param {Matrix[] | number[][][]} arr array of matrices to be placed on the diagonal\n * @param {number} N the size of the resulting matrix\n */\n function blockDiag(arr, N) {\n var M = [];\n for (var i = 0; i < N; i++) {\n M[i] = Array(N).fill(0);\n }\n var I = 0;\n for (var sub of arr) {\n var n = sub.length;\n for (var _i6 = 0; _i6 < n; _i6++) {\n for (var j = 0; j < n; j++) {\n M[I + _i6][I + j] = sub[_i6][j];\n }\n }\n I += n;\n }\n return M;\n }\n\n /**\n * Finds the index of an element in an array using a custom equality function\n * @template T\n * @param {Array} arr array in which to search\n * @param {T} el the element to find\n * @param {function(T, T): boolean} fn the equality function, first argument is an element of `arr`, the second is always `el`\n * @returns {number} the index of `el`, or -1 when it's not in `arr`\n */\n function indexOf(arr, el, fn) {\n for (var i = 0; i < arr.length; i++) {\n if (fn(arr[i], el)) {\n return i;\n }\n }\n return -1;\n }\n\n /**\n * Provided a near-singular upper-triangular matrix A and a list of vectors,\n * finds an eigenvector of A with the smallest eigenvalue, which is orthogonal\n * to each vector in the list\n * @template T\n * @param {T[][]} A near-singular square matrix\n * @param {number} N dimension\n * @param {T[][]} orthog list of vectors\n * @param {number} prec epsilon\n * @param {'number'|'BigNumber'|'Complex'} type\n * @return {T[] | null} eigenvector\n *\n * @see Numerical Recipes for Fortran 77 \u2013 11.7 Eigenvalues or Eigenvectors by Inverse Iteration\n */\n function inverseIterate(A, N, orthog, prec, type) {\n var largeNum = type === 'BigNumber' ? bignumber(1000) : 1000;\n var b; // the vector\n\n // you better choose a random vector before I count to five\n var i = 0;\n for (; i < 5; ++i) {\n b = randomOrthogonalVector(N, orthog, type);\n try {\n b = usolve(A, b);\n } catch (_unused) {\n // That direction didn't work, likely because the original matrix\n // was defective. But still make the full number of tries...\n continue;\n }\n if (larger(norm(b), largeNum)) {\n break;\n }\n }\n if (i >= 5) {\n return null; // couldn't find any orthogonal vector in the image\n }\n\n // you better converge before I count to ten\n i = 0;\n while (true) {\n var c = usolve(A, b);\n if (smaller(norm(orthogonalComplement(b, [c])), prec)) {\n break;\n }\n if (++i >= 10) {\n return null;\n }\n b = normalize(c);\n }\n return b;\n }\n\n /**\n * Generates a random unit vector of dimension N, orthogonal to each vector in the list\n * @template T\n * @param {number} N dimension\n * @param {T[][]} orthog list of vectors\n * @param {'number'|'BigNumber'|'Complex'} type\n * @returns {T[]} random vector\n */\n function randomOrthogonalVector(N, orthog, type) {\n var big = type === 'BigNumber';\n var cplx = type === 'Complex';\n\n // generate random vector with the correct type\n var v = Array(N).fill(0).map(_ => 2 * Math.random() - 1);\n if (big) {\n v = v.map(n => bignumber(n));\n }\n if (cplx) {\n v = v.map(n => complex(n));\n }\n\n // project to orthogonal complement\n v = orthogonalComplement(v, orthog);\n\n // normalize\n return normalize(v, type);\n }\n\n /**\n * Project vector v to the orthogonal complement of an array of vectors\n */\n function orthogonalComplement(v, orthog) {\n var vectorShape = size(v);\n for (var w of orthog) {\n w = reshape(w, vectorShape); // make sure this is just a vector computation\n // v := v \u2212 (w, v)/|w|^2 w\n v = subtract(v, multiply(divideScalar(dot(w, v), dot(w, w)), w));\n }\n return v;\n }\n\n /**\n * Calculate the norm of a vector.\n * We can't use math.norm because factory can't handle circular dependency.\n * Seriously, I'm really fed up with factory.\n */\n function norm(v) {\n return abs(sqrt(dot(v, v)));\n }\n\n /**\n * Normalize a vector\n * @template T\n * @param {T[]} v\n * @param {'number'|'BigNumber'|'Complex'} type\n * @returns {T[]} normalized vec\n */\n function normalize(v, type) {\n var big = type === 'BigNumber';\n var cplx = type === 'Complex';\n var one = big ? bignumber(1) : cplx ? complex(1) : 1;\n return multiply(divideScalar(one, norm(v)), v);\n }\n return complexEigs;\n}", "import { clone } from '../../../utils/object.js';\nexport function createRealSymmetric(_ref) {\n var {\n config,\n addScalar,\n subtract,\n abs,\n atan,\n cos,\n sin,\n multiplyScalar,\n inv,\n bignumber,\n multiply,\n add\n } = _ref;\n /**\n * @param {number[] | BigNumber[]} arr\n * @param {number} N\n * @param {number} prec\n * @param {'number' | 'BigNumber'} type\n */\n function main(arr, N) {\n var prec = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : config.relTol;\n var type = arguments.length > 3 ? arguments[3] : undefined;\n var computeVectors = arguments.length > 4 ? arguments[4] : undefined;\n if (type === 'number') {\n return diag(arr, prec, computeVectors);\n }\n if (type === 'BigNumber') {\n return diagBig(arr, prec, computeVectors);\n }\n throw TypeError('Unsupported data type: ' + type);\n }\n\n // diagonalization implementation for number (efficient)\n function diag(x, precision, computeVectors) {\n var N = x.length;\n var e0 = Math.abs(precision / N);\n var psi;\n var Sij;\n if (computeVectors) {\n Sij = new Array(N);\n // Sij is Identity Matrix\n for (var i = 0; i < N; i++) {\n Sij[i] = Array(N).fill(0);\n Sij[i][i] = 1.0;\n }\n }\n // initial error\n var Vab = getAij(x);\n while (Math.abs(Vab[1]) >= Math.abs(e0)) {\n var _i = Vab[0][0];\n var j = Vab[0][1];\n psi = getTheta(x[_i][_i], x[j][j], x[_i][j]);\n x = x1(x, psi, _i, j);\n if (computeVectors) Sij = Sij1(Sij, psi, _i, j);\n Vab = getAij(x);\n }\n var Ei = Array(N).fill(0); // eigenvalues\n for (var _i2 = 0; _i2 < N; _i2++) {\n Ei[_i2] = x[_i2][_i2];\n }\n return sorting(clone(Ei), Sij, computeVectors);\n }\n\n // diagonalization implementation for bigNumber\n function diagBig(x, precision, computeVectors) {\n var N = x.length;\n var e0 = abs(precision / N);\n var psi;\n var Sij;\n if (computeVectors) {\n Sij = new Array(N);\n // Sij is Identity Matrix\n for (var i = 0; i < N; i++) {\n Sij[i] = Array(N).fill(0);\n Sij[i][i] = 1.0;\n }\n }\n // initial error\n var Vab = getAijBig(x);\n while (abs(Vab[1]) >= abs(e0)) {\n var _i3 = Vab[0][0];\n var j = Vab[0][1];\n psi = getThetaBig(x[_i3][_i3], x[j][j], x[_i3][j]);\n x = x1Big(x, psi, _i3, j);\n if (computeVectors) Sij = Sij1Big(Sij, psi, _i3, j);\n Vab = getAijBig(x);\n }\n var Ei = Array(N).fill(0); // eigenvalues\n for (var _i4 = 0; _i4 < N; _i4++) {\n Ei[_i4] = x[_i4][_i4];\n }\n // return [clone(Ei), clone(Sij)]\n return sorting(clone(Ei), Sij, computeVectors);\n }\n\n // get angle\n function getTheta(aii, ajj, aij) {\n var denom = ajj - aii;\n if (Math.abs(denom) <= config.relTol) {\n return Math.PI / 4.0;\n } else {\n return 0.5 * Math.atan(2.0 * aij / (ajj - aii));\n }\n }\n\n // get angle\n function getThetaBig(aii, ajj, aij) {\n var denom = subtract(ajj, aii);\n if (abs(denom) <= config.relTol) {\n return bignumber(-1).acos().div(4);\n } else {\n return multiplyScalar(0.5, atan(multiply(2.0, aij, inv(denom))));\n }\n }\n\n // update eigvec\n function Sij1(Sij, theta, i, j) {\n var N = Sij.length;\n var c = Math.cos(theta);\n var s = Math.sin(theta);\n var Ski = Array(N).fill(0);\n var Skj = Array(N).fill(0);\n for (var k = 0; k < N; k++) {\n Ski[k] = c * Sij[k][i] - s * Sij[k][j];\n Skj[k] = s * Sij[k][i] + c * Sij[k][j];\n }\n for (var _k = 0; _k < N; _k++) {\n Sij[_k][i] = Ski[_k];\n Sij[_k][j] = Skj[_k];\n }\n return Sij;\n }\n // update eigvec for overlap\n function Sij1Big(Sij, theta, i, j) {\n var N = Sij.length;\n var c = cos(theta);\n var s = sin(theta);\n var Ski = Array(N).fill(bignumber(0));\n var Skj = Array(N).fill(bignumber(0));\n for (var k = 0; k < N; k++) {\n Ski[k] = subtract(multiplyScalar(c, Sij[k][i]), multiplyScalar(s, Sij[k][j]));\n Skj[k] = addScalar(multiplyScalar(s, Sij[k][i]), multiplyScalar(c, Sij[k][j]));\n }\n for (var _k2 = 0; _k2 < N; _k2++) {\n Sij[_k2][i] = Ski[_k2];\n Sij[_k2][j] = Skj[_k2];\n }\n return Sij;\n }\n\n // update matrix\n function x1Big(Hij, theta, i, j) {\n var N = Hij.length;\n var c = bignumber(cos(theta));\n var s = bignumber(sin(theta));\n var c2 = multiplyScalar(c, c);\n var s2 = multiplyScalar(s, s);\n var Aki = Array(N).fill(bignumber(0));\n var Akj = Array(N).fill(bignumber(0));\n // 2cs Hij\n var csHij = multiply(bignumber(2), c, s, Hij[i][j]);\n // Aii\n var Aii = addScalar(subtract(multiplyScalar(c2, Hij[i][i]), csHij), multiplyScalar(s2, Hij[j][j]));\n var Ajj = add(multiplyScalar(s2, Hij[i][i]), csHij, multiplyScalar(c2, Hij[j][j]));\n // 0 to i\n for (var k = 0; k < N; k++) {\n Aki[k] = subtract(multiplyScalar(c, Hij[i][k]), multiplyScalar(s, Hij[j][k]));\n Akj[k] = addScalar(multiplyScalar(s, Hij[i][k]), multiplyScalar(c, Hij[j][k]));\n }\n // Modify Hij\n Hij[i][i] = Aii;\n Hij[j][j] = Ajj;\n Hij[i][j] = bignumber(0);\n Hij[j][i] = bignumber(0);\n // 0 to i\n for (var _k3 = 0; _k3 < N; _k3++) {\n if (_k3 !== i && _k3 !== j) {\n Hij[i][_k3] = Aki[_k3];\n Hij[_k3][i] = Aki[_k3];\n Hij[j][_k3] = Akj[_k3];\n Hij[_k3][j] = Akj[_k3];\n }\n }\n return Hij;\n }\n\n // update matrix\n function x1(Hij, theta, i, j) {\n var N = Hij.length;\n var c = Math.cos(theta);\n var s = Math.sin(theta);\n var c2 = c * c;\n var s2 = s * s;\n var Aki = Array(N).fill(0);\n var Akj = Array(N).fill(0);\n // Aii\n var Aii = c2 * Hij[i][i] - 2 * c * s * Hij[i][j] + s2 * Hij[j][j];\n var Ajj = s2 * Hij[i][i] + 2 * c * s * Hij[i][j] + c2 * Hij[j][j];\n // 0 to i\n for (var k = 0; k < N; k++) {\n Aki[k] = c * Hij[i][k] - s * Hij[j][k];\n Akj[k] = s * Hij[i][k] + c * Hij[j][k];\n }\n // Modify Hij\n Hij[i][i] = Aii;\n Hij[j][j] = Ajj;\n Hij[i][j] = 0;\n Hij[j][i] = 0;\n // 0 to i\n for (var _k4 = 0; _k4 < N; _k4++) {\n if (_k4 !== i && _k4 !== j) {\n Hij[i][_k4] = Aki[_k4];\n Hij[_k4][i] = Aki[_k4];\n Hij[j][_k4] = Akj[_k4];\n Hij[_k4][j] = Akj[_k4];\n }\n }\n return Hij;\n }\n\n // get max off-diagonal value from Upper Diagonal\n function getAij(Mij) {\n var N = Mij.length;\n var maxMij = 0;\n var maxIJ = [0, 1];\n for (var i = 0; i < N; i++) {\n for (var j = i + 1; j < N; j++) {\n if (Math.abs(maxMij) < Math.abs(Mij[i][j])) {\n maxMij = Math.abs(Mij[i][j]);\n maxIJ = [i, j];\n }\n }\n }\n return [maxIJ, maxMij];\n }\n\n // get max off-diagonal value from Upper Diagonal\n function getAijBig(Mij) {\n var N = Mij.length;\n var maxMij = 0;\n var maxIJ = [0, 1];\n for (var i = 0; i < N; i++) {\n for (var j = i + 1; j < N; j++) {\n if (abs(maxMij) < abs(Mij[i][j])) {\n maxMij = abs(Mij[i][j]);\n maxIJ = [i, j];\n }\n }\n }\n return [maxIJ, maxMij];\n }\n\n // sort results\n function sorting(E, S, computeVectors) {\n var N = E.length;\n var values = Array(N);\n var vecs;\n if (computeVectors) {\n vecs = Array(N);\n for (var k = 0; k < N; k++) {\n vecs[k] = Array(N);\n }\n }\n for (var i = 0; i < N; i++) {\n var minID = 0;\n var minE = E[0];\n for (var j = 0; j < E.length; j++) {\n if (abs(E[j]) < abs(minE)) {\n minID = j;\n minE = E[minID];\n }\n }\n values[i] = E.splice(minID, 1)[0];\n if (computeVectors) {\n for (var _k5 = 0; _k5 < N; _k5++) {\n vecs[i][_k5] = S[_k5][minID];\n S[_k5].splice(minID, 1);\n }\n }\n }\n if (!computeVectors) return {\n values\n };\n var eigenvectors = vecs.map((vector, i) => ({\n value: values[i],\n vector\n }));\n return {\n values,\n eigenvectors\n };\n }\n return main;\n}", "import _extends from \"@babel/runtime/helpers/extends\";\nimport { factory } from '../../utils/factory.js';\nimport { format } from '../../utils/string.js';\nimport { createComplexEigs } from './eigs/complexEigs.js';\nimport { createRealSymmetric } from './eigs/realSymmetric.js';\nimport { typeOf, isNumber, isBigNumber, isComplex, isFraction } from '../../utils/is.js';\nvar name = 'eigs';\n\n// The absolute state of math.js's dependency system:\nvar dependencies = ['config', 'typed', 'matrix', 'addScalar', 'equal', 'subtract', 'abs', 'atan', 'cos', 'sin', 'multiplyScalar', 'divideScalar', 'inv', 'bignumber', 'multiply', 'add', 'larger', 'column', 'flatten', 'number', 'complex', 'sqrt', 'diag', 'size', 'reshape', 'qr', 'usolve', 'usolveAll', 'im', 're', 'smaller', 'matrixFromColumns', 'dot'];\nexport var createEigs = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n config,\n typed,\n matrix,\n addScalar,\n subtract,\n equal,\n abs,\n atan,\n cos,\n sin,\n multiplyScalar,\n divideScalar,\n inv,\n bignumber,\n multiply,\n add,\n larger,\n column,\n flatten,\n number,\n complex,\n sqrt,\n diag,\n size,\n reshape,\n qr,\n usolve,\n usolveAll,\n im,\n re,\n smaller,\n matrixFromColumns,\n dot\n } = _ref;\n var doRealSymmetric = createRealSymmetric({\n config,\n addScalar,\n subtract,\n column,\n flatten,\n equal,\n abs,\n atan,\n cos,\n sin,\n multiplyScalar,\n inv,\n bignumber,\n complex,\n multiply,\n add\n });\n var doComplexEigs = createComplexEigs({\n config,\n addScalar,\n subtract,\n multiply,\n multiplyScalar,\n flatten,\n divideScalar,\n sqrt,\n abs,\n bignumber,\n diag,\n size,\n reshape,\n qr,\n inv,\n usolve,\n usolveAll,\n equal,\n complex,\n larger,\n smaller,\n matrixFromColumns,\n dot\n });\n\n /**\n * Compute eigenvalues and optionally eigenvectors of a square matrix.\n * The eigenvalues are sorted by their absolute value, ascending, and\n * returned as a vector in the `values` property of the returned project.\n * An eigenvalue with algebraic multiplicity k will be listed k times, so\n * that the returned `values` vector always has length equal to the size\n * of the input matrix.\n *\n * The `eigenvectors` property of the return value provides the eigenvectors.\n * It is an array of plain objects: the `value` property of each gives the\n * associated eigenvalue, and the `vector` property gives the eigenvector\n * itself. Note that the same `value` property will occur as many times in\n * the list provided by `eigenvectors` as the geometric multiplicity of\n * that value.\n *\n * If the algorithm fails to converge, it will throw an error \u2013\n * in that case, however, you may still find useful information\n * in `err.values` and `err.vectors`.\n *\n * Note that the 'precision' option does not directly specify the _accuracy_\n * of the returned eigenvalues. Rather, it determines how small an entry\n * of the iterative approximations to an upper triangular matrix must be\n * in order to be considered zero. The actual accuracy of the returned\n * eigenvalues may be greater or less than the precision, depending on the\n * conditioning of the matrix and how far apart or close the actual\n * eigenvalues are. Note that currently, relatively simple, \"traditional\"\n * methods of eigenvalue computation are being used; this is not a modern,\n * high-precision eigenvalue computation. That said, it should typically\n * produce fairly reasonable results.\n *\n * Syntax:\n *\n * math.eigs(x, [prec])\n * math.eigs(x, {options})\n *\n * Examples:\n *\n * const { eigs, multiply, column, transpose, matrixFromColumns } = math\n * const H = [[5, 2.3], [2.3, 1]]\n * const ans = eigs(H) // returns {values: [E1,E2...sorted], eigenvectors: [{value: E1, vector: v2}, {value: e, vector: v2}, ...]\n * const E = ans.values\n * const V = ans.eigenvectors\n * multiply(H, V[0].vector)) // returns multiply(E[0], V[0].vector))\n * const U = matrixFromColumns(...V.map(obj => obj.vector))\n * const UTxHxU = multiply(transpose(U), H, U) // diagonalizes H if possible\n * E[0] == UTxHxU[0][0] // returns true always\n *\n * // Compute only approximate eigenvalues:\n * const {values} = eigs(H, {eigenvectors: false, precision: 1e-6})\n *\n * See also:\n *\n * inv\n *\n * @param {Array | Matrix} x Matrix to be diagonalized\n *\n * @param {number | BigNumber | OptsObject} [opts] Object with keys `precision`, defaulting to config.relTol, and `eigenvectors`, defaulting to true and specifying whether to compute eigenvectors. If just a number, specifies precision.\n * @return {{values: Array|Matrix, eigenvectors?: Array}} Object containing an array of eigenvalues and an array of {value: number|BigNumber, vector: Array|Matrix} objects. The eigenvectors property is undefined if eigenvectors were not requested.\n *\n */\n return typed('eigs', {\n // The conversion to matrix in the first two implementations,\n // just to convert back to an array right away in\n // computeValuesAndVectors, is unfortunate, and should perhaps be\n // streamlined. It is done because the Matrix object carries some\n // type information about its entries, and so constructing the matrix\n // is a roundabout way of doing type detection.\n Array: function Array(x) {\n return doEigs(matrix(x));\n },\n 'Array, number|BigNumber': function Array_numberBigNumber(x, prec) {\n return doEigs(matrix(x), {\n precision: prec\n });\n },\n 'Array, Object'(x, opts) {\n return doEigs(matrix(x), opts);\n },\n Matrix: function Matrix(mat) {\n return doEigs(mat, {\n matricize: true\n });\n },\n 'Matrix, number|BigNumber': function Matrix_numberBigNumber(mat, prec) {\n return doEigs(mat, {\n precision: prec,\n matricize: true\n });\n },\n 'Matrix, Object': function Matrix_Object(mat, opts) {\n var useOpts = {\n matricize: true\n };\n _extends(useOpts, opts);\n return doEigs(mat, useOpts);\n }\n });\n function doEigs(mat) {\n var _opts$precision;\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var computeVectors = 'eigenvectors' in opts ? opts.eigenvectors : true;\n var prec = (_opts$precision = opts.precision) !== null && _opts$precision !== void 0 ? _opts$precision : config.relTol;\n var result = computeValuesAndVectors(mat, prec, computeVectors);\n if (opts.matricize) {\n result.values = matrix(result.values);\n if (computeVectors) {\n result.eigenvectors = result.eigenvectors.map(_ref2 => {\n var {\n value,\n vector\n } = _ref2;\n return {\n value,\n vector: matrix(vector)\n };\n });\n }\n }\n if (computeVectors) {\n Object.defineProperty(result, 'vectors', {\n enumerable: false,\n // to make sure that the eigenvectors can still be\n // converted to string.\n get: () => {\n throw new Error('eigs(M).vectors replaced with eigs(M).eigenvectors');\n }\n });\n }\n return result;\n }\n function computeValuesAndVectors(mat, prec, computeVectors) {\n var arr = mat.toArray(); // NOTE: arr is guaranteed to be unaliased\n // and so safe to modify in place\n var asize = mat.size();\n if (asize.length !== 2 || asize[0] !== asize[1]) {\n throw new RangeError(\"Matrix must be square (size: \".concat(format(asize), \")\"));\n }\n var N = asize[0];\n if (isReal(arr, N, prec)) {\n coerceReal(arr, N); // modifies arr by side effect\n\n if (isSymmetric(arr, N, prec)) {\n var _type = coerceTypes(mat, arr, N); // modifies arr by side effect\n return doRealSymmetric(arr, N, prec, _type, computeVectors);\n }\n }\n var type = coerceTypes(mat, arr, N); // modifies arr by side effect\n return doComplexEigs(arr, N, prec, type, computeVectors);\n }\n\n /** @return {boolean} */\n function isSymmetric(arr, N, prec) {\n for (var i = 0; i < N; i++) {\n for (var j = i; j < N; j++) {\n // TODO proper comparison of bignum and frac\n if (larger(bignumber(abs(subtract(arr[i][j], arr[j][i]))), prec)) {\n return false;\n }\n }\n }\n return true;\n }\n\n /** @return {boolean} */\n function isReal(arr, N, prec) {\n for (var i = 0; i < N; i++) {\n for (var j = 0; j < N; j++) {\n // TODO proper comparison of bignum and frac\n if (larger(bignumber(abs(im(arr[i][j]))), prec)) {\n return false;\n }\n }\n }\n return true;\n }\n function coerceReal(arr, N) {\n for (var i = 0; i < N; i++) {\n for (var j = 0; j < N; j++) {\n arr[i][j] = re(arr[i][j]);\n }\n }\n }\n\n /** @return {'number' | 'BigNumber' | 'Complex'} */\n function coerceTypes(mat, arr, N) {\n /** @type {string} */\n var type = mat.datatype();\n if (type === 'number' || type === 'BigNumber' || type === 'Complex') {\n return type;\n }\n var hasNumber = false;\n var hasBig = false;\n var hasComplex = false;\n for (var i = 0; i < N; i++) {\n for (var j = 0; j < N; j++) {\n var el = arr[i][j];\n if (isNumber(el) || isFraction(el)) {\n hasNumber = true;\n } else if (isBigNumber(el)) {\n hasBig = true;\n } else if (isComplex(el)) {\n hasComplex = true;\n } else {\n throw TypeError('Unsupported type in Matrix: ' + typeOf(el));\n }\n }\n }\n if (hasBig && hasComplex) {\n console.warn('Complex BigNumbers not supported, this operation will lose precission.');\n }\n if (hasComplex) {\n for (var _i = 0; _i < N; _i++) {\n for (var _j = 0; _j < N; _j++) {\n arr[_i][_j] = complex(arr[_i][_j]);\n }\n }\n return 'Complex';\n }\n if (hasBig) {\n for (var _i2 = 0; _i2 < N; _i2++) {\n for (var _j2 = 0; _j2 < N; _j2++) {\n arr[_i2][_j2] = bignumber(arr[_i2][_j2]);\n }\n }\n return 'BigNumber';\n }\n if (hasNumber) {\n for (var _i3 = 0; _i3 < N; _i3++) {\n for (var _j3 = 0; _j3 < N; _j3++) {\n arr[_i3][_j3] = number(arr[_i3][_j3]);\n }\n }\n return 'number';\n } else {\n throw TypeError('Matrix contains unsupported types only.');\n }\n }\n});", "import { isSparseMatrix } from '../../utils/is.js';\nimport { format } from '../../utils/string.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'expm';\nvar dependencies = ['typed', 'abs', 'add', 'identity', 'inv', 'multiply'];\nexport var createExpm = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n abs,\n add,\n identity,\n inv,\n multiply\n } = _ref;\n /**\n * Compute the matrix exponential, expm(A) = e^A. The matrix must be square.\n * Not to be confused with exp(a), which performs element-wise\n * exponentiation.\n *\n * The exponential is calculated using the Pad\u00E9 approximant with scaling and\n * squaring; see \"Nineteen Dubious Ways to Compute the Exponential of a\n * Matrix,\" by Moler and Van Loan.\n *\n * Syntax:\n *\n * math.expm(x)\n *\n * Examples:\n *\n * const A = [[0,2],[0,0]]\n * math.expm(A) // returns [[1,2],[0,1]]\n *\n * See also:\n *\n * exp\n *\n * @param {Matrix} x A square Matrix\n * @return {Matrix} The exponential of x\n */\n return typed(name, {\n Matrix: function Matrix(A) {\n // Check matrix size\n var size = A.size();\n if (size.length !== 2 || size[0] !== size[1]) {\n throw new RangeError('Matrix must be square ' + '(size: ' + format(size) + ')');\n }\n var n = size[0];\n\n // Desired accuracy of the approximant (The actual accuracy\n // will be affected by round-off error)\n var eps = 1e-15;\n\n // The Pad\u00E9 approximant is not so accurate when the values of A\n // are \"large\", so scale A by powers of two. Then compute the\n // exponential, and square the result repeatedly according to\n // the identity e^A = (e^(A/m))^m\n\n // Compute infinity-norm of A, ||A||, to see how \"big\" it is\n var infNorm = infinityNorm(A);\n\n // Find the optimal scaling factor and number of terms in the\n // Pad\u00E9 approximant to reach the desired accuracy\n var params = findParams(infNorm, eps);\n var q = params.q;\n var j = params.j;\n\n // The Pade approximation to e^A is:\n // Rqq(A) = Dqq(A) ^ -1 * Nqq(A)\n // where\n // Nqq(A) = sum(i=0, q, (2q-i)!p! / [ (2q)!i!(q-i)! ] A^i\n // Dqq(A) = sum(i=0, q, (2q-i)!q! / [ (2q)!i!(q-i)! ] (-A)^i\n\n // Scale A by 1 / 2^j\n var Apos = multiply(A, Math.pow(2, -j));\n\n // The i=0 term is just the identity matrix\n var N = identity(n);\n var D = identity(n);\n\n // Initialization (i=0)\n var factor = 1;\n\n // Initialization (i=1)\n var AposToI = Apos; // Cloning not necessary\n var alternate = -1;\n for (var i = 1; i <= q; i++) {\n if (i > 1) {\n AposToI = multiply(AposToI, Apos);\n alternate = -alternate;\n }\n factor = factor * (q - i + 1) / ((2 * q - i + 1) * i);\n N = add(N, multiply(factor, AposToI));\n D = add(D, multiply(factor * alternate, AposToI));\n }\n var R = multiply(inv(D), N);\n\n // Square j times\n for (var _i = 0; _i < j; _i++) {\n R = multiply(R, R);\n }\n return isSparseMatrix(A) ? A.createSparseMatrix(R) : R;\n }\n });\n function infinityNorm(A) {\n var n = A.size()[0];\n var infNorm = 0;\n for (var i = 0; i < n; i++) {\n var rowSum = 0;\n for (var j = 0; j < n; j++) {\n rowSum += abs(A.get([i, j]));\n }\n infNorm = Math.max(rowSum, infNorm);\n }\n return infNorm;\n }\n\n /**\n * Find the best parameters for the Pade approximant given\n * the matrix norm and desired accuracy. Returns the first acceptable\n * combination in order of increasing computational load.\n */\n function findParams(infNorm, eps) {\n var maxSearchSize = 30;\n for (var k = 0; k < maxSearchSize; k++) {\n for (var q = 0; q <= k; q++) {\n var j = k - q;\n if (errorEstimate(infNorm, q, j) < eps) {\n return {\n q,\n j\n };\n }\n }\n }\n throw new Error('Could not find acceptable parameters to compute the matrix exponential (try increasing maxSearchSize in expm.js)');\n }\n\n /**\n * Returns the estimated error of the Pade approximant for the given\n * parameters.\n */\n function errorEstimate(infNorm, q, j) {\n var qfac = 1;\n for (var i = 2; i <= q; i++) {\n qfac *= i;\n }\n var twoqfac = qfac;\n for (var _i2 = q + 1; _i2 <= 2 * q; _i2++) {\n twoqfac *= _i2;\n }\n var twoqp1fac = twoqfac * (2 * q + 1);\n return 8.0 * Math.pow(infNorm / Math.pow(2, j), 2 * q) * qfac * qfac / (twoqfac * twoqp1fac);\n }\n});", "import { isMatrix } from '../../utils/is.js';\nimport { format } from '../../utils/string.js';\nimport { arraySize } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'sqrtm';\nvar dependencies = ['typed', 'abs', 'add', 'multiply', 'map', 'sqrt', 'subtract', 'inv', 'size', 'max', 'identity'];\nexport var createSqrtm = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n abs,\n add,\n multiply,\n map,\n sqrt,\n subtract,\n inv,\n size,\n max,\n identity\n } = _ref;\n var _maxIterations = 1e3;\n var _tolerance = 1e-6;\n\n /**\n * Calculate the principal square root matrix using the Denman\u2013Beavers iterative method\n *\n * https://en.wikipedia.org/wiki/Square_root_of_a_matrix#By_Denman\u2013Beavers_iteration\n *\n * @param {Array | Matrix} A The square matrix `A`\n * @return {Array | Matrix} The principal square root of matrix `A`\n * @private\n */\n function _denmanBeavers(A) {\n var error;\n var iterations = 0;\n var Y = A;\n var Z = identity(size(A));\n do {\n var Yk = Y;\n Y = multiply(0.5, add(Yk, inv(Z)));\n Z = multiply(0.5, add(Z, inv(Yk)));\n error = max(abs(subtract(Y, Yk)));\n if (error > _tolerance && ++iterations > _maxIterations) {\n throw new Error('computing square root of matrix: iterative method could not converge');\n }\n } while (error > _tolerance);\n return Y;\n }\n\n /**\n * Calculate the principal square root of a square matrix.\n * The principal square root matrix `X` of another matrix `A` is such that `X * X = A`.\n *\n * https://en.wikipedia.org/wiki/Square_root_of_a_matrix\n *\n * Syntax:\n *\n * math.sqrtm(A)\n *\n * Examples:\n *\n * math.sqrtm([[33, 24], [48, 57]]) // returns [[5, 2], [4, 7]]\n *\n * See also:\n *\n * sqrt, pow\n *\n * @param {Array | Matrix} A The square matrix `A`\n * @return {Array | Matrix} The principal square root of matrix `A`\n */\n return typed(name, {\n 'Array | Matrix': function Array__Matrix(A) {\n var size = isMatrix(A) ? A.size() : arraySize(A);\n switch (size.length) {\n case 1:\n // Single element Array | Matrix\n if (size[0] === 1) {\n return map(A, sqrt);\n } else {\n throw new RangeError('Matrix must be square ' + '(size: ' + format(size) + ')');\n }\n case 2:\n {\n // Two-dimensional Array | Matrix\n var rows = size[0];\n var cols = size[1];\n if (rows === cols) {\n return _denmanBeavers(A);\n } else {\n throw new RangeError('Matrix must be square ' + '(size: ' + format(size) + ')');\n }\n }\n default:\n // Multi dimensional array\n throw new RangeError('Matrix must be at most two dimensional ' + '(size: ' + format(size) + ')');\n }\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'sylvester';\nvar dependencies = ['typed', 'schur', 'matrixFromColumns', 'matrix', 'multiply', 'range', 'concat', 'transpose', 'index', 'subset', 'add', 'subtract', 'identity', 'lusolve', 'abs'];\nexport var createSylvester = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n schur,\n matrixFromColumns,\n matrix,\n multiply,\n range,\n concat,\n transpose,\n index,\n subset,\n add,\n subtract,\n identity,\n lusolve,\n abs\n } = _ref;\n /**\n *\n * Solves the real-valued Sylvester equation AX+XB=C for X, where A, B and C are\n * matrices of appropriate dimensions, being A and B squared. Notice that other\n * equivalent definitions for the Sylvester equation exist and this function\n * assumes the one presented in the original publication of the the Bartels-\n * Stewart algorithm, which is implemented by this function.\n * https://en.wikipedia.org/wiki/Sylvester_equation\n *\n * Syntax:\n *\n * math.sylvester(A, B, C)\n *\n * Examples:\n *\n * const A = [[-1, -2], [1, 1]]\n * const B = [[2, -1], [1, -2]]\n * const C = [[-3, 2], [3, 0]]\n * math.sylvester(A, B, C) // returns DenseMatrix [[-0.25, 0.25], [1.5, -1.25]]\n *\n * See also:\n *\n * schur, lyap\n *\n * @param {Matrix | Array} A Matrix A\n * @param {Matrix | Array} B Matrix B\n * @param {Matrix | Array} C Matrix C\n * @return {Matrix | Array} Matrix X, solving the Sylvester equation\n */\n return typed(name, {\n 'Matrix, Matrix, Matrix': _sylvester,\n 'Array, Matrix, Matrix': function Array_Matrix_Matrix(A, B, C) {\n return _sylvester(matrix(A), B, C);\n },\n 'Array, Array, Matrix': function Array_Array_Matrix(A, B, C) {\n return _sylvester(matrix(A), matrix(B), C);\n },\n 'Array, Matrix, Array': function Array_Matrix_Array(A, B, C) {\n return _sylvester(matrix(A), B, matrix(C));\n },\n 'Matrix, Array, Matrix': function Matrix_Array_Matrix(A, B, C) {\n return _sylvester(A, matrix(B), C);\n },\n 'Matrix, Array, Array': function Matrix_Array_Array(A, B, C) {\n return _sylvester(A, matrix(B), matrix(C));\n },\n 'Matrix, Matrix, Array': function Matrix_Matrix_Array(A, B, C) {\n return _sylvester(A, B, matrix(C));\n },\n 'Array, Array, Array': function Array_Array_Array(A, B, C) {\n return _sylvester(matrix(A), matrix(B), matrix(C)).toArray();\n }\n });\n function _sylvester(A, B, C) {\n var n = B.size()[0];\n var m = A.size()[0];\n var sA = schur(A);\n var F = sA.T;\n var U = sA.U;\n var sB = schur(multiply(-1, B));\n var G = sB.T;\n var V = sB.U;\n var D = multiply(multiply(transpose(U), C), V);\n var all = range(0, m);\n var y = [];\n var hc = (a, b) => concat(a, b, 1);\n var vc = (a, b) => concat(a, b, 0);\n for (var k = 0; k < n; k++) {\n if (k < n - 1 && abs(subset(G, index(k + 1, k))) > 1e-5) {\n var RHS = vc(subset(D, index(all, k)), subset(D, index(all, k + 1)));\n for (var j = 0; j < k; j++) {\n RHS = add(RHS, vc(multiply(y[j], subset(G, index(j, k))), multiply(y[j], subset(G, index(j, k + 1)))));\n }\n var gkk = multiply(identity(m), multiply(-1, subset(G, index(k, k))));\n var gmk = multiply(identity(m), multiply(-1, subset(G, index(k + 1, k))));\n var gkm = multiply(identity(m), multiply(-1, subset(G, index(k, k + 1))));\n var gmm = multiply(identity(m), multiply(-1, subset(G, index(k + 1, k + 1))));\n var LHS = vc(hc(add(F, gkk), gmk), hc(gkm, add(F, gmm)));\n var yAux = lusolve(LHS, RHS);\n y[k] = yAux.subset(index(range(0, m), 0));\n y[k + 1] = yAux.subset(index(range(m, 2 * m), 0));\n k++;\n } else {\n var _RHS = subset(D, index(all, k));\n for (var _j = 0; _j < k; _j++) {\n _RHS = add(_RHS, multiply(y[_j], subset(G, index(_j, k))));\n }\n var _gkk = subset(G, index(k, k));\n var _LHS = subtract(F, multiply(_gkk, identity(m)));\n y[k] = lusolve(_LHS, _RHS);\n }\n }\n var Y = matrix(matrixFromColumns(...y));\n var X = multiply(U, multiply(Y, transpose(V)));\n return X;\n }\n});", "import { factory } from '../../../utils/factory.js';\nvar name = 'schur';\nvar dependencies = ['typed', 'matrix', 'identity', 'multiply', 'qr', 'norm', 'subtract'];\nexport var createSchur = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n identity,\n multiply,\n qr,\n norm,\n subtract\n } = _ref;\n /**\n *\n * Performs a real Schur decomposition of the real matrix A = UTU' where U is orthogonal\n * and T is upper quasi-triangular.\n * https://en.wikipedia.org/wiki/Schur_decomposition\n *\n * Syntax:\n *\n * math.schur(A)\n *\n * Examples:\n *\n * const A = [[1, 0], [-4, 3]]\n * math.schur(A) // returns {T: [[3, 4], [0, 1]], R: [[0, 1], [-1, 0]]}\n *\n * See also:\n *\n * sylvester, lyap, qr\n *\n * @param {Array | Matrix} A Matrix A\n * @return {{U: Array | Matrix, T: Array | Matrix}} Object containing both matrix U and T of the Schur Decomposition A=UTU'\n */\n return typed(name, {\n Array: function Array(X) {\n var r = _schur(matrix(X));\n return {\n U: r.U.valueOf(),\n T: r.T.valueOf()\n };\n },\n Matrix: function Matrix(X) {\n return _schur(X);\n }\n });\n function _schur(X) {\n var n = X.size()[0];\n var A = X;\n var U = identity(n);\n var k = 0;\n var A0;\n do {\n A0 = A;\n var QR = qr(A);\n var Q = QR.Q;\n var R = QR.R;\n A = multiply(R, Q);\n U = multiply(U, Q);\n if (k++ > 100) {\n break;\n }\n } while (norm(subtract(A, A0)) > 1e-4);\n return {\n U,\n T: A\n };\n }\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'lyap';\nvar dependencies = ['typed', 'matrix', 'sylvester', 'multiply', 'transpose'];\nexport var createLyap = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n sylvester,\n multiply,\n transpose\n } = _ref;\n /**\n *\n * Solves the Continuous-time Lyapunov equation AP+PA'+Q=0 for P, where\n * Q is an input matrix. When Q is symmetric, P is also symmetric. Notice\n * that different equivalent definitions exist for the Continuous-time\n * Lyapunov equation.\n * https://en.wikipedia.org/wiki/Lyapunov_equation\n *\n * Syntax:\n *\n * math.lyap(A, Q)\n *\n * Examples:\n *\n * const A = [[-2, 0], [1, -4]]\n * const Q = [[3, 1], [1, 3]]\n * const P = math.lyap(A, Q)\n *\n * See also:\n *\n * sylvester, schur\n *\n * @param {Matrix | Array} A Matrix A\n * @param {Matrix | Array} Q Matrix Q\n * @return {Matrix | Array} Matrix P solution to the Continuous-time Lyapunov equation AP+PA'=Q\n */\n return typed(name, {\n 'Matrix, Matrix': function Matrix_Matrix(A, Q) {\n return sylvester(A, transpose(A), multiply(-1, Q));\n },\n 'Array, Matrix': function Array_Matrix(A, Q) {\n return sylvester(matrix(A), transpose(matrix(A)), multiply(-1, Q));\n },\n 'Matrix, Array': function Matrix_Array(A, Q) {\n return sylvester(A, transpose(matrix(A)), matrix(multiply(-1, Q)));\n },\n 'Array, Array': function Array_Array(A, Q) {\n return sylvester(matrix(A), transpose(matrix(A)), matrix(multiply(-1, Q))).toArray();\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nimport { extend } from '../../utils/object.js';\nimport { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';\nimport { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';\nvar name = 'divide';\nvar dependencies = ['typed', 'matrix', 'multiply', 'equalScalar', 'divideScalar', 'inv'];\nexport var createDivide = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n multiply,\n equalScalar,\n divideScalar,\n inv\n } = _ref;\n var matAlgo11xS0s = createMatAlgo11xS0s({\n typed,\n equalScalar\n });\n var matAlgo14xDs = createMatAlgo14xDs({\n typed\n });\n\n /**\n * Divide two values, `x / y`.\n * To divide matrices, `x` is multiplied with the inverse of `y`: `x * inv(y)`.\n *\n * Syntax:\n *\n * math.divide(x, y)\n *\n * Examples:\n *\n * math.divide(2, 3) // returns number 0.6666666666666666\n *\n * const a = math.complex(5, 14)\n * const b = math.complex(4, 1)\n * math.divide(a, b) // returns Complex 2 + 3i\n *\n * const c = [[7, -6], [13, -4]]\n * const d = [[1, 2], [4, 3]]\n * math.divide(c, d) // returns Array [[-9, 4], [-11, 6]]\n *\n * const e = math.unit('18 km')\n * math.divide(e, 4.5) // returns Unit 4 km\n *\n * See also:\n *\n * multiply\n *\n * @param {number | BigNumber | bigint | Fraction | Complex | Unit | Array | Matrix} x Numerator\n * @param {number | BigNumber | bigint | Fraction | Complex | Array | Matrix} y Denominator\n * @return {number | BigNumber | bigint | Fraction | Complex | Unit | Array | Matrix} Quotient, `x / y`\n */\n return typed('divide', extend({\n // we extend the signatures of divideScalar with signatures dealing with matrices\n\n 'Array | Matrix, Array | Matrix': function Array__Matrix_Array__Matrix(x, y) {\n // TODO: implement matrix right division using pseudo inverse\n // https://www.mathworks.nl/help/matlab/ref/mrdivide.html\n // https://www.gnu.org/software/octave/doc/interpreter/Arithmetic-Ops.html\n // https://stackoverflow.com/questions/12263932/how-does-gnu-octave-matrix-division-work-getting-unexpected-behaviour\n return multiply(x, inv(y));\n },\n 'DenseMatrix, any': function DenseMatrix_any(x, y) {\n return matAlgo14xDs(x, y, divideScalar, false);\n },\n 'SparseMatrix, any': function SparseMatrix_any(x, y) {\n return matAlgo11xS0s(x, y, divideScalar, false);\n },\n 'Array, any': function Array_any(x, y) {\n // use matrix implementation\n return matAlgo14xDs(matrix(x), y, divideScalar, false).valueOf();\n },\n 'any, Array | Matrix': function any_Array__Matrix(x, y) {\n return multiply(x, inv(y));\n }\n }, divideScalar.signatures));\n});", "import { isBigNumber } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'distance';\nvar dependencies = ['typed', 'addScalar', 'subtractScalar', 'divideScalar', 'multiplyScalar', 'deepEqual', 'sqrt', 'abs'];\nexport var createDistance = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n addScalar,\n subtractScalar,\n multiplyScalar,\n divideScalar,\n deepEqual,\n sqrt,\n abs\n } = _ref;\n /**\n * Calculates:\n * The eucledian distance between two points in N-dimensional spaces.\n * Distance between point and a line in 2 and 3 dimensional spaces.\n * Pairwise distance between a set of 2D or 3D points\n * NOTE:\n * When substituting coefficients of a line(a, b and c), use ax + by + c = 0 instead of ax + by = c\n * For parametric equation of a 3D line, x0, y0, z0, a, b, c are from: (x\u2212x0, y\u2212y0, z\u2212z0) = t(a, b, c)\n *\n * Syntax:\n *\n * math.distance([x1,y1], [x2,y2])\n * math.distance({pointOneX, pointOneY}, {pointTwoX, pointTwoY})\n * math.distance([x1,y1,z1], [x2,y2,z2])\n * math.distance({pointOneX, pointOneY, pointOneZ}, {pointTwoX, pointTwoY, pointTwoZ})\n * math.distance([x1,y1,z1,a1], [x2,y2,z2,a2])\n * math.distance([[x1,y1], [x2,y2], [x3,y3]])\n * math.distance([[x1,y1,z1], [x2,y2,z2], [x3,y3,z3]])\n * math.distance([pointX,pointY], [a,b,c])\n * math.distance([pointX,pointY], [lineOnePtX,lineOnePtY], [lineTwoPtX,lineTwoPtY])\n * math.distance({pointX, pointY}, {lineOnePtX, lineOnePtY}, {lineTwoPtX, lineTwoPtY})\n * math.distance([pointX,pointY,pointZ], [x0, y0, z0, a, b, c])\n * math.distance({pointX, pointY, pointZ}, {x0, y0, z0, a, b, c})\n *\n * Examples:\n * math.distance([0,0], [4,4]) // Returns 5.656854249492381\n * math.distance(\n * {pointOneX: 0, pointOneY: 0},\n * {pointTwoX: 10, pointTwoY: 10}) // Returns 14.142135623730951\n * math.distance([1, 0, 1], [4, -2, 2]) // Returns 3.7416573867739413\n * math.distance(\n * {pointOneX: 4, pointOneY: 5, pointOneZ: 8},\n * {pointTwoX: 2, pointTwoY: 7, pointTwoZ: 9}) // Returns 3\n * math.distance([1, 0, 1, 0], [0, -1, 0, -1]) // Returns 2\n * math.distance([[1, 2], [1, 2], [1, 3]]) // Returns [0, 1, 1]\n * math.distance([[1,2,4], [1,2,6], [8,1,3]]) // Returns [2, 7.14142842854285, 7.681145747868608]\n * math.distance([10, 10], [8, 1, 3]) // Returns 11.535230316796387\n * math.distance([0, 0], [3, 0], [0, 4]) // Returns 2.4\n * math.distance(\n * {pointX: 0, pointY: 0},\n * {lineOnePtX: 3, lineOnePtY: 0},\n * {lineTwoPtX: 0, lineTwoPtY: 4}) // Returns 2.4\n * math.distance([2, 3, 1], [1, 1, 2, 5, 0, 1]) // Returns 2.3204774044612857\n * math.distance(\n * {pointX: 2, pointY: 3, pointZ: 1},\n * {x0: 1, y0: 1, z0: 2, a: 5, b: 0, c: 1}) // Returns 2.3204774044612857\n *\n * @param {Array | Matrix | Object} x Co-ordinates of first point\n * @param {Array | Matrix | Object} y Co-ordinates of second point\n * @return {Number | BigNumber} Returns the distance from two/three points\n */\n return typed(name, {\n 'Array, Array, Array': function Array_Array_Array(x, y, z) {\n // Point to Line 2D (x=Point, y=LinePoint1, z=LinePoint2)\n if (x.length === 2 && y.length === 2 && z.length === 2) {\n if (!_2d(x)) {\n throw new TypeError('Array with 2 numbers or BigNumbers expected for first argument');\n }\n if (!_2d(y)) {\n throw new TypeError('Array with 2 numbers or BigNumbers expected for second argument');\n }\n if (!_2d(z)) {\n throw new TypeError('Array with 2 numbers or BigNumbers expected for third argument');\n }\n if (deepEqual(y, z)) {\n throw new TypeError('LinePoint1 should not be same with LinePoint2');\n }\n var xCoeff = subtractScalar(z[1], y[1]);\n var yCoeff = subtractScalar(y[0], z[0]);\n var constant = subtractScalar(multiplyScalar(z[0], y[1]), multiplyScalar(y[0], z[1]));\n return _distancePointLine2D(x[0], x[1], xCoeff, yCoeff, constant);\n } else {\n throw new TypeError('Invalid Arguments: Try again');\n }\n },\n 'Object, Object, Object': function Object_Object_Object(x, y, z) {\n if (Object.keys(x).length === 2 && Object.keys(y).length === 2 && Object.keys(z).length === 2) {\n if (!_2d(x)) {\n throw new TypeError('Values of pointX and pointY should be numbers or BigNumbers');\n }\n if (!_2d(y)) {\n throw new TypeError('Values of lineOnePtX and lineOnePtY should be numbers or BigNumbers');\n }\n if (!_2d(z)) {\n throw new TypeError('Values of lineTwoPtX and lineTwoPtY should be numbers or BigNumbers');\n }\n if (deepEqual(_objectToArray(y), _objectToArray(z))) {\n throw new TypeError('LinePoint1 should not be same with LinePoint2');\n }\n if ('pointX' in x && 'pointY' in x && 'lineOnePtX' in y && 'lineOnePtY' in y && 'lineTwoPtX' in z && 'lineTwoPtY' in z) {\n var xCoeff = subtractScalar(z.lineTwoPtY, y.lineOnePtY);\n var yCoeff = subtractScalar(y.lineOnePtX, z.lineTwoPtX);\n var constant = subtractScalar(multiplyScalar(z.lineTwoPtX, y.lineOnePtY), multiplyScalar(y.lineOnePtX, z.lineTwoPtY));\n return _distancePointLine2D(x.pointX, x.pointY, xCoeff, yCoeff, constant);\n } else {\n throw new TypeError('Key names do not match');\n }\n } else {\n throw new TypeError('Invalid Arguments: Try again');\n }\n },\n 'Array, Array': function Array_Array(x, y) {\n // Point to Line 2D (x=[pointX, pointY], y=[x-coeff, y-coeff, const])\n if (x.length === 2 && y.length === 3) {\n if (!_2d(x)) {\n throw new TypeError('Array with 2 numbers or BigNumbers expected for first argument');\n }\n if (!_3d(y)) {\n throw new TypeError('Array with 3 numbers or BigNumbers expected for second argument');\n }\n return _distancePointLine2D(x[0], x[1], y[0], y[1], y[2]);\n } else if (x.length === 3 && y.length === 6) {\n // Point to Line 3D\n if (!_3d(x)) {\n throw new TypeError('Array with 3 numbers or BigNumbers expected for first argument');\n }\n if (!_parametricLine(y)) {\n throw new TypeError('Array with 6 numbers or BigNumbers expected for second argument');\n }\n return _distancePointLine3D(x[0], x[1], x[2], y[0], y[1], y[2], y[3], y[4], y[5]);\n } else if (x.length === y.length && x.length > 0) {\n // Point to Point N-dimensions\n if (!_containsOnlyNumbers(x)) {\n throw new TypeError('All values of an array should be numbers or BigNumbers');\n }\n if (!_containsOnlyNumbers(y)) {\n throw new TypeError('All values of an array should be numbers or BigNumbers');\n }\n return _euclideanDistance(x, y);\n } else {\n throw new TypeError('Invalid Arguments: Try again');\n }\n },\n 'Object, Object': function Object_Object(x, y) {\n if (Object.keys(x).length === 2 && Object.keys(y).length === 3) {\n if (!_2d(x)) {\n throw new TypeError('Values of pointX and pointY should be numbers or BigNumbers');\n }\n if (!_3d(y)) {\n throw new TypeError('Values of xCoeffLine, yCoeffLine and constant should be numbers or BigNumbers');\n }\n if ('pointX' in x && 'pointY' in x && 'xCoeffLine' in y && 'yCoeffLine' in y && 'constant' in y) {\n return _distancePointLine2D(x.pointX, x.pointY, y.xCoeffLine, y.yCoeffLine, y.constant);\n } else {\n throw new TypeError('Key names do not match');\n }\n } else if (Object.keys(x).length === 3 && Object.keys(y).length === 6) {\n // Point to Line 3D\n if (!_3d(x)) {\n throw new TypeError('Values of pointX, pointY and pointZ should be numbers or BigNumbers');\n }\n if (!_parametricLine(y)) {\n throw new TypeError('Values of x0, y0, z0, a, b and c should be numbers or BigNumbers');\n }\n if ('pointX' in x && 'pointY' in x && 'x0' in y && 'y0' in y && 'z0' in y && 'a' in y && 'b' in y && 'c' in y) {\n return _distancePointLine3D(x.pointX, x.pointY, x.pointZ, y.x0, y.y0, y.z0, y.a, y.b, y.c);\n } else {\n throw new TypeError('Key names do not match');\n }\n } else if (Object.keys(x).length === 2 && Object.keys(y).length === 2) {\n // Point to Point 2D\n if (!_2d(x)) {\n throw new TypeError('Values of pointOneX and pointOneY should be numbers or BigNumbers');\n }\n if (!_2d(y)) {\n throw new TypeError('Values of pointTwoX and pointTwoY should be numbers or BigNumbers');\n }\n if ('pointOneX' in x && 'pointOneY' in x && 'pointTwoX' in y && 'pointTwoY' in y) {\n return _euclideanDistance([x.pointOneX, x.pointOneY], [y.pointTwoX, y.pointTwoY]);\n } else {\n throw new TypeError('Key names do not match');\n }\n } else if (Object.keys(x).length === 3 && Object.keys(y).length === 3) {\n // Point to Point 3D\n if (!_3d(x)) {\n throw new TypeError('Values of pointOneX, pointOneY and pointOneZ should be numbers or BigNumbers');\n }\n if (!_3d(y)) {\n throw new TypeError('Values of pointTwoX, pointTwoY and pointTwoZ should be numbers or BigNumbers');\n }\n if ('pointOneX' in x && 'pointOneY' in x && 'pointOneZ' in x && 'pointTwoX' in y && 'pointTwoY' in y && 'pointTwoZ' in y) {\n return _euclideanDistance([x.pointOneX, x.pointOneY, x.pointOneZ], [y.pointTwoX, y.pointTwoY, y.pointTwoZ]);\n } else {\n throw new TypeError('Key names do not match');\n }\n } else {\n throw new TypeError('Invalid Arguments: Try again');\n }\n },\n Array: function Array(arr) {\n if (!_pairwise(arr)) {\n throw new TypeError('Incorrect array format entered for pairwise distance calculation');\n }\n return _distancePairwise(arr);\n }\n });\n function _isNumber(a) {\n // distance supports numbers and bignumbers\n return typeof a === 'number' || isBigNumber(a);\n }\n function _2d(a) {\n // checks if the number of arguments are correct in count and are valid (should be numbers)\n if (a.constructor !== Array) {\n a = _objectToArray(a);\n }\n return _isNumber(a[0]) && _isNumber(a[1]);\n }\n function _3d(a) {\n // checks if the number of arguments are correct in count and are valid (should be numbers)\n if (a.constructor !== Array) {\n a = _objectToArray(a);\n }\n return _isNumber(a[0]) && _isNumber(a[1]) && _isNumber(a[2]);\n }\n function _containsOnlyNumbers(a) {\n // checks if the number of arguments are correct in count and are valid (should be numbers)\n if (!Array.isArray(a)) {\n a = _objectToArray(a);\n }\n return a.every(_isNumber);\n }\n function _parametricLine(a) {\n if (a.constructor !== Array) {\n a = _objectToArray(a);\n }\n return _isNumber(a[0]) && _isNumber(a[1]) && _isNumber(a[2]) && _isNumber(a[3]) && _isNumber(a[4]) && _isNumber(a[5]);\n }\n function _objectToArray(o) {\n var keys = Object.keys(o);\n var a = [];\n for (var i = 0; i < keys.length; i++) {\n a.push(o[keys[i]]);\n }\n return a;\n }\n function _pairwise(a) {\n // checks for valid arguments passed to _distancePairwise(Array)\n if (a[0].length === 2 && _isNumber(a[0][0]) && _isNumber(a[0][1])) {\n if (a.some(aI => aI.length !== 2 || !_isNumber(aI[0]) || !_isNumber(aI[1]))) {\n return false;\n }\n } else if (a[0].length === 3 && _isNumber(a[0][0]) && _isNumber(a[0][1]) && _isNumber(a[0][2])) {\n if (a.some(aI => aI.length !== 3 || !_isNumber(aI[0]) || !_isNumber(aI[1]) || !_isNumber(aI[2]))) {\n return false;\n }\n } else {\n return false;\n }\n return true;\n }\n function _distancePointLine2D(x, y, a, b, c) {\n var num = abs(addScalar(addScalar(multiplyScalar(a, x), multiplyScalar(b, y)), c));\n var den = sqrt(addScalar(multiplyScalar(a, a), multiplyScalar(b, b)));\n return divideScalar(num, den);\n }\n function _distancePointLine3D(x, y, z, x0, y0, z0, a, b, c) {\n var num = [subtractScalar(multiplyScalar(subtractScalar(y0, y), c), multiplyScalar(subtractScalar(z0, z), b)), subtractScalar(multiplyScalar(subtractScalar(z0, z), a), multiplyScalar(subtractScalar(x0, x), c)), subtractScalar(multiplyScalar(subtractScalar(x0, x), b), multiplyScalar(subtractScalar(y0, y), a))];\n num = sqrt(addScalar(addScalar(multiplyScalar(num[0], num[0]), multiplyScalar(num[1], num[1])), multiplyScalar(num[2], num[2])));\n var den = sqrt(addScalar(addScalar(multiplyScalar(a, a), multiplyScalar(b, b)), multiplyScalar(c, c)));\n return divideScalar(num, den);\n }\n function _euclideanDistance(x, y) {\n var vectorSize = x.length;\n var result = 0;\n var diff = 0;\n for (var i = 0; i < vectorSize; i++) {\n diff = subtractScalar(x[i], y[i]);\n result = addScalar(multiplyScalar(diff, diff), result);\n }\n return sqrt(result);\n }\n function _distancePairwise(a) {\n var result = [];\n var pointA = [];\n var pointB = [];\n for (var i = 0; i < a.length - 1; i++) {\n for (var j = i + 1; j < a.length; j++) {\n if (a[0].length === 2) {\n pointA = [a[i][0], a[i][1]];\n pointB = [a[j][0], a[j][1]];\n } else if (a[0].length === 3) {\n pointA = [a[i][0], a[i][1], a[i][2]];\n pointB = [a[j][0], a[j][1], a[j][2]];\n }\n result.push(_euclideanDistance(pointA, pointB));\n }\n }\n return result;\n }\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'intersect';\nvar dependencies = ['typed', 'config', 'abs', 'add', 'addScalar', 'matrix', 'multiply', 'multiplyScalar', 'divideScalar', 'subtract', 'smaller', 'equalScalar', 'flatten', 'isZero', 'isNumeric'];\nexport var createIntersect = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n abs,\n add,\n addScalar,\n matrix,\n multiply,\n multiplyScalar,\n divideScalar,\n subtract,\n smaller,\n equalScalar,\n flatten,\n isZero,\n isNumeric\n } = _ref;\n /**\n * Calculates the point of intersection of two lines in two or three dimensions\n * and of a line and a plane in three dimensions. The inputs are in the form of\n * arrays or 1 dimensional matrices. The line intersection functions return null\n * if the lines do not meet.\n *\n * Note: Fill the plane coefficients as `x + y + z = c` and not as `x + y + z + c = 0`.\n *\n * Syntax:\n *\n * math.intersect(endPoint1Line1, endPoint2Line1, endPoint1Line2, endPoint2Line2)\n * math.intersect(endPoint1, endPoint2, planeCoefficients)\n *\n * Examples:\n *\n * math.intersect([0, 0], [10, 10], [10, 0], [0, 10]) // Returns [5, 5]\n * math.intersect([0, 0, 0], [10, 10, 0], [10, 0, 0], [0, 10, 0]) // Returns [5, 5, 0]\n * math.intersect([1, 0, 1], [4, -2, 2], [1, 1, 1, 6]) // Returns [7, -4, 3]\n *\n * @param {Array | Matrix} w Co-ordinates of first end-point of first line\n * @param {Array | Matrix} x Co-ordinates of second end-point of first line\n * @param {Array | Matrix} y Co-ordinates of first end-point of second line\n * OR Co-efficients of the plane's equation\n * @param {Array | Matrix} z Co-ordinates of second end-point of second line\n * OR undefined if the calculation is for line and plane\n * @return {Array} Returns the point of intersection of lines/lines-planes\n */\n return typed('intersect', {\n 'Array, Array, Array': _AAA,\n 'Array, Array, Array, Array': _AAAA,\n 'Matrix, Matrix, Matrix': function Matrix_Matrix_Matrix(x, y, plane) {\n var arr = _AAA(x.valueOf(), y.valueOf(), plane.valueOf());\n return arr === null ? null : matrix(arr);\n },\n 'Matrix, Matrix, Matrix, Matrix': function Matrix_Matrix_Matrix_Matrix(w, x, y, z) {\n // TODO: output matrix type should match input matrix type\n var arr = _AAAA(w.valueOf(), x.valueOf(), y.valueOf(), z.valueOf());\n return arr === null ? null : matrix(arr);\n }\n });\n function _AAA(x, y, plane) {\n x = _coerceArr(x);\n y = _coerceArr(y);\n plane = _coerceArr(plane);\n if (!_3d(x)) {\n throw new TypeError('Array with 3 numbers or BigNumbers expected for first argument');\n }\n if (!_3d(y)) {\n throw new TypeError('Array with 3 numbers or BigNumbers expected for second argument');\n }\n if (!_4d(plane)) {\n throw new TypeError('Array with 4 numbers expected as third argument');\n }\n return _intersectLinePlane(x[0], x[1], x[2], y[0], y[1], y[2], plane[0], plane[1], plane[2], plane[3]);\n }\n function _AAAA(w, x, y, z) {\n w = _coerceArr(w);\n x = _coerceArr(x);\n y = _coerceArr(y);\n z = _coerceArr(z);\n if (w.length === 2) {\n if (!_2d(w)) {\n throw new TypeError('Array with 2 numbers or BigNumbers expected for first argument');\n }\n if (!_2d(x)) {\n throw new TypeError('Array with 2 numbers or BigNumbers expected for second argument');\n }\n if (!_2d(y)) {\n throw new TypeError('Array with 2 numbers or BigNumbers expected for third argument');\n }\n if (!_2d(z)) {\n throw new TypeError('Array with 2 numbers or BigNumbers expected for fourth argument');\n }\n return _intersect2d(w, x, y, z);\n } else if (w.length === 3) {\n if (!_3d(w)) {\n throw new TypeError('Array with 3 numbers or BigNumbers expected for first argument');\n }\n if (!_3d(x)) {\n throw new TypeError('Array with 3 numbers or BigNumbers expected for second argument');\n }\n if (!_3d(y)) {\n throw new TypeError('Array with 3 numbers or BigNumbers expected for third argument');\n }\n if (!_3d(z)) {\n throw new TypeError('Array with 3 numbers or BigNumbers expected for fourth argument');\n }\n return _intersect3d(w[0], w[1], w[2], x[0], x[1], x[2], y[0], y[1], y[2], z[0], z[1], z[2]);\n } else {\n throw new TypeError('Arrays with two or thee dimensional points expected');\n }\n }\n\n /** Coerce row and column 2-dim arrays to 1-dim array */\n function _coerceArr(arr) {\n // row matrix\n if (arr.length === 1) return arr[0];\n\n // column matrix\n if (arr.length > 1 && Array.isArray(arr[0])) {\n if (arr.every(el => Array.isArray(el) && el.length === 1)) return flatten(arr);\n }\n return arr;\n }\n function _2d(x) {\n return x.length === 2 && isNumeric(x[0]) && isNumeric(x[1]);\n }\n function _3d(x) {\n return x.length === 3 && isNumeric(x[0]) && isNumeric(x[1]) && isNumeric(x[2]);\n }\n function _4d(x) {\n return x.length === 4 && isNumeric(x[0]) && isNumeric(x[1]) && isNumeric(x[2]) && isNumeric(x[3]);\n }\n function _intersect2d(p1a, p1b, p2a, p2b) {\n var o1 = p1a;\n var o2 = p2a;\n var d1 = subtract(o1, p1b);\n var d2 = subtract(o2, p2b);\n var det = subtract(multiplyScalar(d1[0], d2[1]), multiplyScalar(d2[0], d1[1]));\n if (isZero(det)) return null;\n if (smaller(abs(det), config.relTol)) {\n return null;\n }\n var d20o11 = multiplyScalar(d2[0], o1[1]);\n var d21o10 = multiplyScalar(d2[1], o1[0]);\n var d20o21 = multiplyScalar(d2[0], o2[1]);\n var d21o20 = multiplyScalar(d2[1], o2[0]);\n var t = divideScalar(addScalar(subtract(subtract(d20o11, d21o10), d20o21), d21o20), det);\n return add(multiply(d1, t), o1);\n }\n function _intersect3dHelper(a, b, c, d, e, f, g, h, i, j, k, l) {\n // (a - b)*(c - d) + (e - f)*(g - h) + (i - j)*(k - l)\n var add1 = multiplyScalar(subtract(a, b), subtract(c, d));\n var add2 = multiplyScalar(subtract(e, f), subtract(g, h));\n var add3 = multiplyScalar(subtract(i, j), subtract(k, l));\n return addScalar(addScalar(add1, add2), add3);\n }\n function _intersect3d(x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4) {\n var d1343 = _intersect3dHelper(x1, x3, x4, x3, y1, y3, y4, y3, z1, z3, z4, z3);\n var d4321 = _intersect3dHelper(x4, x3, x2, x1, y4, y3, y2, y1, z4, z3, z2, z1);\n var d1321 = _intersect3dHelper(x1, x3, x2, x1, y1, y3, y2, y1, z1, z3, z2, z1);\n var d4343 = _intersect3dHelper(x4, x3, x4, x3, y4, y3, y4, y3, z4, z3, z4, z3);\n var d2121 = _intersect3dHelper(x2, x1, x2, x1, y2, y1, y2, y1, z2, z1, z2, z1);\n var numerator = subtract(multiplyScalar(d1343, d4321), multiplyScalar(d1321, d4343));\n var denominator = subtract(multiplyScalar(d2121, d4343), multiplyScalar(d4321, d4321));\n if (isZero(denominator)) return null;\n var ta = divideScalar(numerator, denominator);\n var tb = divideScalar(addScalar(d1343, multiplyScalar(ta, d4321)), d4343);\n var pax = addScalar(x1, multiplyScalar(ta, subtract(x2, x1)));\n var pay = addScalar(y1, multiplyScalar(ta, subtract(y2, y1)));\n var paz = addScalar(z1, multiplyScalar(ta, subtract(z2, z1)));\n var pbx = addScalar(x3, multiplyScalar(tb, subtract(x4, x3)));\n var pby = addScalar(y3, multiplyScalar(tb, subtract(y4, y3)));\n var pbz = addScalar(z3, multiplyScalar(tb, subtract(z4, z3)));\n if (equalScalar(pax, pbx) && equalScalar(pay, pby) && equalScalar(paz, pbz)) {\n return [pax, pay, paz];\n } else {\n return null;\n }\n }\n function _intersectLinePlane(x1, y1, z1, x2, y2, z2, x, y, z, c) {\n var x1x = multiplyScalar(x1, x);\n var x2x = multiplyScalar(x2, x);\n var y1y = multiplyScalar(y1, y);\n var y2y = multiplyScalar(y2, y);\n var z1z = multiplyScalar(z1, z);\n var z2z = multiplyScalar(z2, z);\n var numerator = subtract(subtract(subtract(c, x1x), y1y), z1z);\n var denominator = subtract(subtract(subtract(addScalar(addScalar(x2x, y2y), z2z), x1x), y1y), z1z);\n var t = divideScalar(numerator, denominator);\n var px = addScalar(x1, multiplyScalar(t, subtract(x2, x1)));\n var py = addScalar(y1, multiplyScalar(t, subtract(y2, y1)));\n var pz = addScalar(z1, multiplyScalar(t, subtract(z2, z1)));\n return [px, py, pz];\n // TODO: Add cases when line is parallel to the plane:\n // (a) no intersection,\n // (b) line contained in plane\n }\n});", "import { containsCollections, deepForEach, reduce } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { safeNumberType } from '../../utils/number.js';\nimport { improveErrorMessage } from './utils/improveErrorMessage.js';\nvar name = 'sum';\nvar dependencies = ['typed', 'config', 'add', 'numeric'];\nexport var createSum = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n add,\n numeric\n } = _ref;\n /**\n * Compute the sum of a matrix or a list with values.\n * In case of a multidimensional array or matrix, the sum of all\n * elements will be calculated.\n *\n * Syntax:\n *\n * math.sum(a, b, c, ...)\n * math.sum(A)\n * math.sum(A, dimension)\n *\n * Examples:\n *\n * math.sum(2, 1, 4, 3) // returns 10\n * math.sum([2, 1, 4, 3]) // returns 10\n * math.sum([[2, 5], [4, 3], [1, 7]]) // returns 22\n *\n * See also:\n *\n * mean, median, min, max, prod, std, variance, cumsum\n *\n * @param {... *} args A single matrix or multiple scalar values\n * @return {*} The sum of all values\n */\n return typed(name, {\n // sum([a, b, c, d, ...])\n 'Array | Matrix': _sum,\n // sum([a, b, c, d, ...], dim)\n 'Array | Matrix, number | BigNumber': _nsumDim,\n // sum(a, b, c, d, ...)\n '...': function _(args) {\n if (containsCollections(args)) {\n throw new TypeError('Scalar values expected in function sum');\n }\n return _sum(args);\n }\n });\n\n /**\n * Recursively calculate the sum of an n-dimensional array\n * @param {Array | Matrix} array\n * @return {number} sum\n * @private\n */\n function _sum(array) {\n var sum;\n deepForEach(array, function (value) {\n try {\n sum = sum === undefined ? value : add(sum, value);\n } catch (err) {\n throw improveErrorMessage(err, 'sum', value);\n }\n });\n\n // make sure returning numeric value: parse a string into a numeric value\n if (sum === undefined) {\n sum = numeric(0, config.number);\n }\n if (typeof sum === 'string') {\n sum = numeric(sum, safeNumberType(sum, config));\n }\n return sum;\n }\n function _nsumDim(array, dim) {\n try {\n var sum = reduce(array, dim, add);\n return sum;\n } catch (err) {\n throw improveErrorMessage(err, 'sum');\n }\n }\n});", "import { containsCollections } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { _switch } from '../../utils/switch.js';\nimport { improveErrorMessage } from './utils/improveErrorMessage.js';\nimport { arraySize } from '../../utils/array.js';\nimport { IndexError } from '../../error/IndexError.js';\nvar name = 'cumsum';\nvar dependencies = ['typed', 'add', 'unaryPlus'];\nexport var createCumSum = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n unaryPlus\n } = _ref;\n /**\n * Compute the cumulative sum of a matrix or a list with values.\n * In case of a (multi dimensional) array or matrix, the cumulative sums\n * along a specified dimension (defaulting to the first) will be calculated.\n *\n * Syntax:\n *\n * math.cumsum(a, b, c, ...)\n * math.cumsum(A)\n *\n * Examples:\n *\n * math.cumsum(2, 1, 4, 3) // returns [2, 3, 7, 10]\n * math.cumsum([2, 1, 4, 3]) // returns [2, 3, 7, 10]\n * math.cumsum([[1, 2], [3, 4]]) // returns [[1, 2], [4, 6]]\n * math.cumsum([[1, 2], [3, 4]], 0) // returns [[1, 2], [4, 6]]\n * math.cumsum([[1, 2], [3, 4]], 1) // returns [[1, 3], [3, 7]]\n * math.cumsum([[2, 5], [4, 3], [1, 7]]) // returns [[2, 5], [6, 8], [7, 15]]\n *\n * See also:\n *\n * mean, median, min, max, prod, std, variance, sum\n *\n * @param {... *} args A single matrix or or multiple scalar values\n * @return {*} The cumulative sum of all values\n */\n return typed(name, {\n // sum([a, b, c, d, ...])\n Array: _cumsum,\n Matrix: function Matrix(matrix) {\n return matrix.create(_cumsum(matrix.valueOf(), matrix.datatype()));\n },\n // sum([a, b, c, d, ...], dim)\n 'Array, number | BigNumber': _ncumSumDim,\n 'Matrix, number | BigNumber': function Matrix_number__BigNumber(matrix, dim) {\n return matrix.create(_ncumSumDim(matrix.valueOf(), dim), matrix.datatype());\n },\n // cumsum(a, b, c, d, ...)\n '...': function _(args) {\n if (containsCollections(args)) {\n throw new TypeError('All values expected to be scalar in function cumsum');\n }\n return _cumsum(args);\n }\n });\n\n /**\n * Recursively calculate the cumulative sum of an n-dimensional array\n * @param {Array} array\n * @return {number} cumsum\n * @private\n */\n function _cumsum(array) {\n try {\n return _cumsummap(array);\n } catch (err) {\n throw improveErrorMessage(err, name);\n }\n }\n function _cumsummap(array) {\n if (array.length === 0) {\n return [];\n }\n var sums = [unaryPlus(array[0])]; // unaryPlus converts to number if need be\n for (var i = 1; i < array.length; ++i) {\n // Must use add below and not addScalar for the case of summing a\n // 2+-dimensional array along the 0th dimension (the row vectors,\n // or higher-d analogues, are literally added to each other).\n sums.push(add(sums[i - 1], array[i]));\n }\n return sums;\n }\n function _ncumSumDim(array, dim) {\n var size = arraySize(array);\n if (dim < 0 || dim >= size.length) {\n // TODO: would be more clear when throwing a DimensionError here\n throw new IndexError(dim, size.length);\n }\n try {\n return _cumsumDimensional(array, dim);\n } catch (err) {\n throw improveErrorMessage(err, name);\n }\n }\n\n /* Possible TODO: Refactor _reduce in collection.js to be able to work here as well */\n function _cumsumDimensional(mat, dim) {\n var i, ret, tran;\n if (dim <= 0) {\n var initialValue = mat[0][0];\n if (!Array.isArray(initialValue)) {\n return _cumsummap(mat);\n } else {\n tran = _switch(mat);\n ret = [];\n for (i = 0; i < tran.length; i++) {\n ret[i] = _cumsumDimensional(tran[i], dim - 1);\n }\n return ret;\n }\n } else {\n ret = [];\n for (i = 0; i < mat.length; i++) {\n ret[i] = _cumsumDimensional(mat[i], dim - 1);\n }\n return ret;\n }\n }\n});", "import { containsCollections, deepForEach, reduce } from '../../utils/collection.js';\nimport { arraySize } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { improveErrorMessage } from './utils/improveErrorMessage.js';\nvar name = 'mean';\nvar dependencies = ['typed', 'add', 'divide'];\nexport var createMean = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n divide\n } = _ref;\n /**\n * Compute the mean value of matrix or a list with values.\n * In case of a multidimensional array, the mean of the flattened array\n * will be calculated. When `dim` is provided, the maximum over the selected\n * dimension will be calculated. Parameter `dim` is zero-based.\n *\n * Syntax:\n *\n * math.mean(a, b, c, ...)\n * math.mean(A)\n * math.mean(A, dimension)\n *\n * Examples:\n *\n * math.mean(2, 1, 4, 3) // returns 2.5\n * math.mean([1, 2.7, 3.2, 4]) // returns 2.725\n *\n * math.mean([[2, 5], [6, 3], [1, 7]], 0) // returns [3, 5]\n * math.mean([[2, 5], [6, 3], [1, 7]], 1) // returns [3.5, 4.5, 4]\n *\n * See also:\n *\n * median, min, max, sum, prod, std, variance\n *\n * @param {... *} args A single matrix or or multiple scalar values\n * @return {*} The mean of all values\n */\n return typed(name, {\n // mean([a, b, c, d, ...])\n 'Array | Matrix': _mean,\n // mean([a, b, c, d, ...], dim)\n 'Array | Matrix, number | BigNumber': _nmeanDim,\n // mean(a, b, c, d, ...)\n '...': function _(args) {\n if (containsCollections(args)) {\n throw new TypeError('Scalar values expected in function mean');\n }\n return _mean(args);\n }\n });\n\n /**\n * Calculate the mean value in an n-dimensional array, returning a\n * n-1 dimensional array\n * @param {Array} array\n * @param {number} dim\n * @return {number} mean\n * @private\n */\n function _nmeanDim(array, dim) {\n try {\n var sum = reduce(array, dim, add);\n var s = Array.isArray(array) ? arraySize(array) : array.size();\n return divide(sum, s[dim]);\n } catch (err) {\n throw improveErrorMessage(err, 'mean');\n }\n }\n\n /**\n * Recursively calculate the mean value in an n-dimensional array\n * @param {Array} array\n * @return {number} mean\n * @private\n */\n function _mean(array) {\n var sum;\n var num = 0;\n deepForEach(array, function (value) {\n try {\n sum = sum === undefined ? value : add(sum, value);\n num++;\n } catch (err) {\n throw improveErrorMessage(err, 'mean', value);\n }\n });\n if (num === 0) {\n throw new Error('Cannot calculate the mean of an empty array');\n }\n return divide(sum, num);\n }\n});", "import { containsCollections } from '../../utils/collection.js';\nimport { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { improveErrorMessage } from './utils/improveErrorMessage.js';\nvar name = 'median';\nvar dependencies = ['typed', 'add', 'divide', 'compare', 'partitionSelect'];\nexport var createMedian = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n divide,\n compare,\n partitionSelect\n } = _ref;\n /**\n * Recursively calculate the median of an n-dimensional array\n * @param {Array} array\n * @return {Number} median\n * @private\n */\n function _median(array) {\n try {\n array = flatten(array.valueOf());\n var num = array.length;\n if (num === 0) {\n throw new Error('Cannot calculate median of an empty array');\n }\n if (num % 2 === 0) {\n // even: return the average of the two middle values\n var mid = num / 2 - 1;\n var right = partitionSelect(array, mid + 1);\n\n // array now partitioned at mid + 1, take max of left part\n var left = array[mid];\n for (var i = 0; i < mid; ++i) {\n if (compare(array[i], left) > 0) {\n left = array[i];\n }\n }\n return middle2(left, right);\n } else {\n // odd: return the middle value\n var m = partitionSelect(array, (num - 1) / 2);\n return middle(m);\n }\n } catch (err) {\n throw improveErrorMessage(err, 'median');\n }\n }\n\n // helper function to type check the middle value of the array\n var middle = typed({\n 'number | BigNumber | Complex | Unit': function number__BigNumber__Complex__Unit(value) {\n return value;\n }\n });\n\n // helper function to type check the two middle value of the array\n var middle2 = typed({\n 'number | BigNumber | Complex | Unit, number | BigNumber | Complex | Unit': function number__BigNumber__Complex__Unit_number__BigNumber__Complex__Unit(left, right) {\n return divide(add(left, right), 2);\n }\n });\n\n /**\n * Compute the median of a matrix or a list with values. The values are\n * sorted and the middle value is returned. In case of an even number of\n * values, the average of the two middle values is returned.\n * Supported types of values are: Number, BigNumber, Unit\n *\n * In case of a (multi dimensional) array or matrix, the median of all\n * elements will be calculated.\n *\n * Syntax:\n *\n * math.median(a, b, c, ...)\n * math.median(A)\n *\n * Examples:\n *\n * math.median(5, 2, 7) // returns 5\n * math.median([3, -1, 5, 7]) // returns 4\n *\n * See also:\n *\n * mean, min, max, sum, prod, std, variance, quantileSeq\n *\n * @param {... *} args A single matrix or or multiple scalar values\n * @return {*} The median\n */\n return typed(name, {\n // median([a, b, c, d, ...])\n 'Array | Matrix': _median,\n // median([a, b, c, d, ...], dim)\n 'Array | Matrix, number | BigNumber': function Array__Matrix_number__BigNumber(array, dim) {\n // TODO: implement median(A, dim)\n throw new Error('median(A, dim) is not yet supported');\n // return reduce(arguments[0], arguments[1], ...)\n },\n // median(a, b, c, d, ...)\n '...': function _(args) {\n if (containsCollections(args)) {\n throw new TypeError('Scalar values expected in function median');\n }\n return _median(args);\n }\n });\n});", "import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { improveErrorMessage } from './utils/improveErrorMessage.js';\nvar name = 'mad';\nvar dependencies = ['typed', 'abs', 'map', 'median', 'subtract'];\nexport var createMad = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n abs,\n map,\n median,\n subtract\n } = _ref;\n /**\n * Compute the median absolute deviation of a matrix or a list with values.\n * The median absolute deviation is defined as the median of the absolute\n * deviations from the median.\n *\n * Syntax:\n *\n * math.mad(a, b, c, ...)\n * math.mad(A)\n *\n * Examples:\n *\n * math.mad(10, 20, 30) // returns 10\n * math.mad([1, 2, 3]) // returns 1\n * math.mad([[1, 2, 3], [4, 5, 6]]) // returns 1.5\n *\n * See also:\n *\n * median, mean, std, abs\n *\n * @param {Array | Matrix} array\n * A single matrix or multiple scalar values.\n * @return {*} The median absolute deviation.\n */\n return typed(name, {\n // mad([a, b, c, d, ...])\n 'Array | Matrix': _mad,\n // mad(a, b, c, d, ...)\n '...': function _(args) {\n return _mad(args);\n }\n });\n function _mad(array) {\n array = flatten(array.valueOf());\n if (array.length === 0) {\n throw new Error('Cannot calculate median absolute deviation (mad) of an empty array');\n }\n try {\n var med = median(array);\n return median(map(array, function (value) {\n return abs(subtract(value, med));\n }));\n } catch (err) {\n if (err instanceof TypeError && err.message.includes('median')) {\n throw new TypeError(err.message.replace('median', 'mad'));\n } else {\n throw improveErrorMessage(err, 'mad');\n }\n }\n }\n});", "import { deepForEach } from '../../utils/collection.js';\nimport { isBigNumber } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nimport { improveErrorMessage } from './utils/improveErrorMessage.js';\nvar DEFAULT_NORMALIZATION = 'unbiased';\nvar name = 'variance';\nvar dependencies = ['typed', 'add', 'subtract', 'multiply', 'divide', 'apply', 'isNaN'];\nexport var createVariance = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n subtract,\n multiply,\n divide,\n apply,\n isNaN\n } = _ref;\n /**\n * Compute the variance of a matrix or a list with values.\n * In case of a multidimensional array or matrix, the variance over all\n * elements will be calculated.\n *\n * Additionally, it is possible to compute the variance along the rows\n * or columns of a matrix by specifying the dimension as the second argument.\n *\n * Optionally, the type of normalization can be specified as the final\n * parameter. The parameter `normalization` can be one of the following values:\n *\n * - 'unbiased' (default) The sum of squared errors is divided by (n - 1)\n * - 'uncorrected' The sum of squared errors is divided by n\n * - 'biased' The sum of squared errors is divided by (n + 1)\n *\n *\n * Note that older browser may not like the variable name `var`. In that\n * case, the function can be called as `math['var'](...)` instead of\n * `math.var(...)`.\n *\n * Syntax:\n *\n * math.variance(a, b, c, ...)\n * math.variance(A)\n * math.variance(A, normalization)\n * math.variance(A, dimension)\n * math.variance(A, dimension, normalization)\n *\n * Examples:\n *\n * math.variance(2, 4, 6) // returns 4\n * math.variance([2, 4, 6, 8]) // returns 6.666666666666667\n * math.variance([2, 4, 6, 8], 'uncorrected') // returns 5\n * math.variance([2, 4, 6, 8], 'biased') // returns 4\n *\n * math.variance([[1, 2, 3], [4, 5, 6]]) // returns 3.5\n * math.variance([[1, 2, 3], [4, 6, 8]], 0) // returns [4.5, 8, 12.5]\n * math.variance([[1, 2, 3], [4, 6, 8]], 1) // returns [1, 4]\n * math.variance([[1, 2, 3], [4, 6, 8]], 1, 'biased') // returns [0.5, 2]\n *\n * See also:\n *\n * mean, median, max, min, prod, std, sum\n *\n * @param {Array | Matrix} array\n * A single matrix or or multiple scalar values\n * @param {string} [normalization='unbiased']\n * Determines how to normalize the variance.\n * Choose 'unbiased' (default), 'uncorrected', or 'biased'.\n * @param dimension {number | BigNumber}\n * Determines the axis to compute the variance for a matrix\n * @return {*} The variance\n */\n return typed(name, {\n // variance([a, b, c, d, ...])\n 'Array | Matrix': function Array__Matrix(array) {\n return _var(array, DEFAULT_NORMALIZATION);\n },\n // variance([a, b, c, d, ...], normalization)\n 'Array | Matrix, string': _var,\n // variance([a, b, c, c, ...], dim)\n 'Array | Matrix, number | BigNumber': function Array__Matrix_number__BigNumber(array, dim) {\n return _varDim(array, dim, DEFAULT_NORMALIZATION);\n },\n // variance([a, b, c, c, ...], dim, normalization)\n 'Array | Matrix, number | BigNumber, string': _varDim,\n // variance(a, b, c, d, ...)\n '...': function _(args) {\n return _var(args, DEFAULT_NORMALIZATION);\n }\n });\n\n /**\n * Recursively calculate the variance of an n-dimensional array\n * @param {Array} array\n * @param {string} normalization\n * Determines how to normalize the variance:\n * - 'unbiased' The sum of squared errors is divided by (n - 1)\n * - 'uncorrected' The sum of squared errors is divided by n\n * - 'biased' The sum of squared errors is divided by (n + 1)\n * @return {number | BigNumber} variance\n * @private\n */\n function _var(array, normalization) {\n var sum;\n var num = 0;\n if (array.length === 0) {\n throw new SyntaxError('Function variance requires one or more parameters (0 provided)');\n }\n\n // calculate the mean and number of elements\n deepForEach(array, function (value) {\n try {\n sum = sum === undefined ? value : add(sum, value);\n num++;\n } catch (err) {\n throw improveErrorMessage(err, 'variance', value);\n }\n });\n if (num === 0) throw new Error('Cannot calculate variance of an empty array');\n var mean = divide(sum, num);\n\n // calculate the variance\n sum = undefined;\n deepForEach(array, function (value) {\n var diff = subtract(value, mean);\n sum = sum === undefined ? multiply(diff, diff) : add(sum, multiply(diff, diff));\n });\n if (isNaN(sum)) {\n return sum;\n }\n switch (normalization) {\n case 'uncorrected':\n return divide(sum, num);\n case 'biased':\n return divide(sum, num + 1);\n case 'unbiased':\n {\n var zero = isBigNumber(sum) ? sum.mul(0) : 0;\n return num === 1 ? zero : divide(sum, num - 1);\n }\n default:\n throw new Error('Unknown normalization \"' + normalization + '\". ' + 'Choose \"unbiased\" (default), \"uncorrected\", or \"biased\".');\n }\n }\n function _varDim(array, dim, normalization) {\n try {\n if (array.length === 0) {\n throw new SyntaxError('Function variance requires one or more parameters (0 provided)');\n }\n return apply(array, dim, x => _var(x, normalization));\n } catch (err) {\n throw improveErrorMessage(err, 'variance');\n }\n }\n});", "import { isNumber } from '../../utils/is.js';\nimport { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { createApply } from '../matrix/apply.js';\nvar name = 'quantileSeq';\nvar dependencies = ['typed', '?bignumber', 'add', 'subtract', 'divide', 'multiply', 'partitionSelect', 'compare', 'isInteger', 'smaller', 'smallerEq', 'larger'];\nexport var createQuantileSeq = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n bignumber,\n add,\n subtract,\n divide,\n multiply,\n partitionSelect,\n compare,\n isInteger,\n smaller,\n smallerEq,\n larger\n } = _ref;\n var apply = createApply({\n typed,\n isInteger\n });\n\n /**\n * Compute the prob order quantile of a matrix or a list with values.\n * The sequence is sorted and the middle value is returned.\n * Supported types of sequence values are: Number, BigNumber, Unit\n * Supported types of probability are: Number, BigNumber\n *\n * In case of a multidimensional array or matrix, the prob order quantile\n * of all elements will be calculated.\n *\n * Syntax:\n *\n * math.quantileSeq(A, prob[, sorted])\n * math.quantileSeq(A, [prob1, prob2, ...][, sorted])\n * math.quantileSeq(A, N[, sorted])\n *\n * Examples:\n *\n * math.quantileSeq([3, -1, 5, 7], 0.5) // returns 4\n * math.quantileSeq([3, -1, 5, 7], [1/3, 2/3]) // returns [3, 5]\n * math.quantileSeq([3, -1, 5, 7], 2) // returns [3, 5]\n * math.quantileSeq([-1, 3, 5, 7], 0.5, true) // returns 4\n *\n * See also:\n *\n * median, mean, min, max, sum, prod, std, variance\n *\n * @param {Array, Matrix} data A single matrix or Array\n * @param {Number, BigNumber, Array} probOrN prob is the order of the quantile, while N is\n * the amount of evenly distributed steps of\n * probabilities; only one of these options can\n * be provided\n * @param {Boolean} sorted=false is data sorted in ascending order\n * @return {Number, BigNumber, Unit, Array} Quantile(s)\n */\n return typed(name, {\n 'Array | Matrix, number | BigNumber': (data, p) => _quantileSeqProbNumber(data, p, false),\n 'Array | Matrix, number | BigNumber, number': (data, prob, dim) => _quantileSeqDim(data, prob, false, dim, _quantileSeqProbNumber),\n 'Array | Matrix, number | BigNumber, boolean': _quantileSeqProbNumber,\n 'Array | Matrix, number | BigNumber, boolean, number': (data, prob, sorted, dim) => _quantileSeqDim(data, prob, sorted, dim, _quantileSeqProbNumber),\n 'Array | Matrix, Array | Matrix': (data, p) => _quantileSeqProbCollection(data, p, false),\n 'Array | Matrix, Array | Matrix, number': (data, prob, dim) => _quantileSeqDim(data, prob, false, dim, _quantileSeqProbCollection),\n 'Array | Matrix, Array | Matrix, boolean': _quantileSeqProbCollection,\n 'Array | Matrix, Array | Matrix, boolean, number': (data, prob, sorted, dim) => _quantileSeqDim(data, prob, sorted, dim, _quantileSeqProbCollection)\n });\n function _quantileSeqDim(data, prob, sorted, dim, fn) {\n return apply(data, dim, x => fn(x, prob, sorted));\n }\n function _quantileSeqProbNumber(data, probOrN, sorted) {\n var probArr;\n var dataArr = data.valueOf();\n if (smaller(probOrN, 0)) {\n throw new Error('N/prob must be non-negative');\n }\n if (smallerEq(probOrN, 1)) {\n // quantileSeq([a, b, c, d, ...], prob[,sorted])\n return isNumber(probOrN) ? _quantileSeq(dataArr, probOrN, sorted) : bignumber(_quantileSeq(dataArr, probOrN, sorted));\n }\n if (larger(probOrN, 1)) {\n // quantileSeq([a, b, c, d, ...], N[,sorted])\n if (!isInteger(probOrN)) {\n throw new Error('N must be a positive integer');\n }\n\n // largest possible Array length is 2^32-1\n // 2^32 < 10^15, thus safe conversion guaranteed\n if (larger(probOrN, 4294967295)) {\n throw new Error('N must be less than or equal to 2^32-1, as that is the maximum length of an Array');\n }\n var nPlusOne = add(probOrN, 1);\n probArr = [];\n for (var i = 0; smaller(i, probOrN); i++) {\n var prob = divide(i + 1, nPlusOne);\n probArr.push(_quantileSeq(dataArr, prob, sorted));\n }\n return isNumber(probOrN) ? probArr : bignumber(probArr);\n }\n }\n\n /**\n * Calculate the prob order quantile of an n-dimensional array.\n *\n * @param {Array, Matrix} array\n * @param {Array, Matrix} prob\n * @param {Boolean} sorted\n * @return {Number, BigNumber, Unit} prob order quantile\n * @private\n */\n\n function _quantileSeqProbCollection(data, probOrN, sorted) {\n var dataArr = data.valueOf();\n // quantileSeq([a, b, c, d, ...], [prob1, prob2, ...][,sorted])\n var probOrNArr = probOrN.valueOf();\n var probArr = [];\n for (var i = 0; i < probOrNArr.length; ++i) {\n probArr.push(_quantileSeq(dataArr, probOrNArr[i], sorted));\n }\n return probArr;\n }\n\n /**\n * Calculate the prob order quantile of an n-dimensional array.\n *\n * @param {Array} array\n * @param {Number, BigNumber} prob\n * @param {Boolean} sorted\n * @return {Number, BigNumber, Unit} prob order quantile\n * @private\n */\n function _quantileSeq(array, prob, sorted) {\n var flat = flatten(array);\n var len = flat.length;\n if (len === 0) {\n throw new Error('Cannot calculate quantile of an empty sequence');\n }\n var index = isNumber(prob) ? prob * (len - 1) : prob.times(len - 1);\n var integerPart = isNumber(prob) ? Math.floor(index) : index.floor().toNumber();\n var fracPart = isNumber(prob) ? index % 1 : index.minus(integerPart);\n if (isInteger(index)) {\n return sorted ? flat[index] : partitionSelect(flat, isNumber(prob) ? index : index.valueOf());\n }\n var left;\n var right;\n if (sorted) {\n left = flat[integerPart];\n right = flat[integerPart + 1];\n } else {\n right = partitionSelect(flat, integerPart + 1);\n\n // max of partition is kth largest\n left = flat[integerPart];\n for (var i = 0; i < integerPart; ++i) {\n if (compare(flat[i], left) > 0) {\n left = flat[i];\n }\n }\n }\n // Q(prob) = (1-f)*A[floor(index)] + f*A[floor(index)+1]\n return add(multiply(left, subtract(1, fracPart)), multiply(right, fracPart));\n }\n});", "import { factory } from '../../utils/factory.js';\nimport { isCollection } from '../../utils/is.js';\nvar name = 'std';\nvar dependencies = ['typed', 'map', 'sqrt', 'variance'];\nexport var createStd = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n map,\n sqrt,\n variance\n } = _ref;\n /**\n * Compute the standard deviation of a matrix or a list with values.\n * The standard deviations is defined as the square root of the variance:\n * `std(A) = sqrt(variance(A))`.\n * In case of a (multi dimensional) array or matrix, the standard deviation\n * over all elements will be calculated by default, unless an axis is specified\n * in which case the standard deviation will be computed along that axis.\n *\n * Additionally, it is possible to compute the standard deviation along the rows\n * or columns of a matrix by specifying the dimension as the second argument.\n *\n * Optionally, the type of normalization can be specified as the final\n * parameter. The parameter `normalization` can be one of the following values:\n *\n * - 'unbiased' (default) The sum of squared errors is divided by (n - 1)\n * - 'uncorrected' The sum of squared errors is divided by n\n * - 'biased' The sum of squared errors is divided by (n + 1)\n *\n *\n * Syntax:\n *\n * math.std(a, b, c, ...)\n * math.std(A)\n * math.std(A, normalization)\n * math.std(A, dimension)\n * math.std(A, dimension, normalization)\n *\n * Examples:\n *\n * math.std(2, 4, 6) // returns 2\n * math.std([2, 4, 6, 8]) // returns 2.581988897471611\n * math.std([2, 4, 6, 8], 'uncorrected') // returns 2.23606797749979\n * math.std([2, 4, 6, 8], 'biased') // returns 2\n *\n * math.std([[1, 2, 3], [4, 5, 6]]) // returns 1.8708286933869707\n * math.std([[1, 2, 3], [4, 6, 8]], 0) // returns [2.1213203435596424, 2.8284271247461903, 3.5355339059327378]\n * math.std([[1, 2, 3], [4, 6, 8]], 1) // returns [1, 2]\n * math.std([[1, 2, 3], [4, 6, 8]], 1, 'biased') // returns [0.7071067811865476, 1.4142135623730951]\n *\n * See also:\n *\n * mean, median, max, min, prod, sum, variance\n *\n * @param {Array | Matrix} array\n * A single matrix or or multiple scalar values\n * @param {string} [normalization='unbiased']\n * Determines how to normalize the variance.\n * Choose 'unbiased' (default), 'uncorrected', or 'biased'.\n * @param dimension {number | BigNumber}\n * Determines the axis to compute the standard deviation for a matrix\n * @return {*} The standard deviation\n */\n return typed(name, {\n // std([a, b, c, d, ...])\n 'Array | Matrix': _std,\n // std([a, b, c, d, ...], normalization)\n 'Array | Matrix, string': _std,\n // std([a, b, c, c, ...], dim)\n 'Array | Matrix, number | BigNumber': _std,\n // std([a, b, c, c, ...], dim, normalization)\n 'Array | Matrix, number | BigNumber, string': _std,\n // std(a, b, c, d, ...)\n '...': function _(args) {\n return _std(args);\n }\n });\n function _std(array, normalization) {\n if (array.length === 0) {\n throw new SyntaxError('Function std requires one or more parameters (0 provided)');\n }\n try {\n var v = variance.apply(null, arguments);\n if (isCollection(v)) {\n return map(v, sqrt);\n } else {\n return sqrt(v);\n }\n } catch (err) {\n if (err instanceof TypeError && err.message.includes(' variance')) {\n throw new TypeError(err.message.replace(' variance', ' std'));\n } else {\n throw err;\n }\n }\n }\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'corr';\nvar dependencies = ['typed', 'matrix', 'mean', 'sqrt', 'sum', 'add', 'subtract', 'multiply', 'pow', 'divide'];\nexport var createCorr = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n sqrt,\n sum,\n add,\n subtract,\n multiply,\n pow,\n divide\n } = _ref;\n /**\n * Compute the correlation coefficient of a two list with values, For matrices, the matrix correlation coefficient is calculated.\n *\n * Syntax:\n *\n * math.corr(A, B)\n *\n * Examples:\n *\n * math.corr([1, 2, 3, 4, 5], [4, 5, 6, 7, 8]) // returns 1\n * math.corr([1, 2.2, 3, 4.8, 5], [4, 5.3, 6.6, 7, 8]) //returns 0.9569941688503644\n * math.corr([[1, 2.2, 3, 4.8, 5], [4, 5.3, 6.6, 7, 8]],[[1, 2.2, 3, 4.8, 5], [4, 5.3, 6.6, 7, 8]]) // returns [1,1]\n *\n * See also:\n *\n * median, mean, min, max, sum, prod, std, variance\n *\n * @param {Array | Matrix} A The first array or matrix to compute correlation coefficient\n * @param {Array | Matrix} B The second array or matrix to compute correlation coefficient\n * @return {*} The correlation coefficient\n */\n return typed(name, {\n 'Array, Array': function Array_Array(A, B) {\n return _corr(A, B);\n },\n 'Matrix, Matrix': function Matrix_Matrix(A, B) {\n var res = _corr(A.toArray(), B.toArray());\n return Array.isArray(res) ? matrix(res) : res;\n }\n });\n /**\n * Calculate the correlation coefficient between two arrays or matrices.\n * @param {Array | Matrix} A\n * @param {Array | Matrix} B\n * @return {*} correlation coefficient\n * @private\n */\n function _corr(A, B) {\n var correlations = [];\n if (Array.isArray(A[0]) && Array.isArray(B[0])) {\n if (A.length !== B.length) {\n throw new SyntaxError('Dimension mismatch. Array A and B must have the same length.');\n }\n for (var i = 0; i < A.length; i++) {\n if (A[i].length !== B[i].length) {\n throw new SyntaxError('Dimension mismatch. Array A and B must have the same number of elements.');\n }\n correlations.push(correlation(A[i], B[i]));\n }\n return correlations;\n } else {\n if (A.length !== B.length) {\n throw new SyntaxError('Dimension mismatch. Array A and B must have the same number of elements.');\n }\n return correlation(A, B);\n }\n }\n function correlation(A, B) {\n var n = A.length;\n var sumX = sum(A);\n var sumY = sum(B);\n var sumXY = A.reduce((acc, x, index) => add(acc, multiply(x, B[index])), 0);\n var sumXSquare = sum(A.map(x => pow(x, 2)));\n var sumYSquare = sum(B.map(y => pow(y, 2)));\n var numerator = subtract(multiply(n, sumXY), multiply(sumX, sumY));\n var denominator = sqrt(multiply(subtract(multiply(n, sumXSquare), pow(sumX, 2)), subtract(multiply(n, sumYSquare), pow(sumY, 2))));\n return divide(numerator, denominator);\n }\n});", "import { factory } from '../../utils/factory.js';\nimport { combinationsNumber } from '../../plain/number/combinations.js';\nvar name = 'combinations';\nvar dependencies = ['typed'];\nexport var createCombinations = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Compute the number of ways of picking `k` unordered outcomes from `n`\n * possibilities.\n *\n * Combinations only takes integer arguments.\n * The following condition must be enforced: k <= n.\n *\n * Syntax:\n *\n * math.combinations(n, k)\n *\n * Examples:\n *\n * math.combinations(7, 5) // returns 21\n *\n * See also:\n *\n * combinationsWithRep, permutations, factorial\n *\n * @param {number | BigNumber} n Total number of objects in the set\n * @param {number | BigNumber} k Number of objects in the subset\n * @return {number | BigNumber} Number of possible combinations.\n */\n return typed(name, {\n 'number, number': combinationsNumber,\n 'BigNumber, BigNumber': function BigNumber_BigNumber(n, k) {\n var BigNumber = n.constructor;\n var result, i;\n var nMinusk = n.minus(k);\n var one = new BigNumber(1);\n if (!isPositiveInteger(n) || !isPositiveInteger(k)) {\n throw new TypeError('Positive integer value expected in function combinations');\n }\n if (k.gt(n)) {\n throw new TypeError('k must be less than n in function combinations');\n }\n result = one;\n if (k.lt(nMinusk)) {\n for (i = one; i.lte(nMinusk); i = i.plus(one)) {\n result = result.times(k.plus(i)).dividedBy(i);\n }\n } else {\n for (i = one; i.lte(k); i = i.plus(one)) {\n result = result.times(nMinusk.plus(i)).dividedBy(i);\n }\n }\n return result;\n }\n\n // TODO: implement support for collection in combinations\n });\n});\n\n/**\n * Test whether BigNumber n is a positive integer\n * @param {BigNumber} n\n * @returns {boolean} isPositiveInteger\n */\nfunction isPositiveInteger(n) {\n return n.isInteger() && n.gte(0);\n}", "import { factory } from '../../utils/factory.js';\nimport { isInteger } from '../../utils/number.js';\nimport { product } from '../../utils/product.js';\nvar name = 'combinationsWithRep';\nvar dependencies = ['typed'];\nexport var createCombinationsWithRep = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Compute the number of ways of picking `k` unordered outcomes from `n`\n * possibilities, allowing individual outcomes to be repeated more than once.\n *\n * CombinationsWithRep only takes integer arguments.\n * The following condition must be enforced: k <= n + k -1.\n *\n * Syntax:\n *\n * math.combinationsWithRep(n, k)\n *\n * Examples:\n *\n * math.combinationsWithRep(7, 5) // returns 462\n *\n * See also:\n *\n * combinations, permutations, factorial\n *\n * @param {number | BigNumber} n Total number of objects in the set\n * @param {number | BigNumber} k Number of objects in the subset\n * @return {number | BigNumber} Number of possible combinations with replacement.\n */\n return typed(name, {\n 'number, number': function number_number(n, k) {\n if (!isInteger(n) || n < 0) {\n throw new TypeError('Positive integer value expected in function combinationsWithRep');\n }\n if (!isInteger(k) || k < 0) {\n throw new TypeError('Positive integer value expected in function combinationsWithRep');\n }\n if (n < 1) {\n throw new TypeError('k must be less than or equal to n + k - 1');\n }\n if (k < n - 1) {\n var _prodrange = product(n, n + k - 1);\n return _prodrange / product(1, k);\n }\n var prodrange = product(k + 1, n + k - 1);\n return prodrange / product(1, n - 1);\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(n, k) {\n var BigNumber = n.constructor;\n var result, i;\n var one = new BigNumber(1);\n var nMinusOne = n.minus(one);\n if (!isPositiveInteger(n) || !isPositiveInteger(k)) {\n throw new TypeError('Positive integer value expected in function combinationsWithRep');\n }\n if (n.lt(one)) {\n throw new TypeError('k must be less than or equal to n + k - 1 in function combinationsWithRep');\n }\n result = one;\n if (k.lt(nMinusOne)) {\n for (i = one; i.lte(nMinusOne); i = i.plus(one)) {\n result = result.times(k.plus(i)).dividedBy(i);\n }\n } else {\n for (i = one; i.lte(k); i = i.plus(one)) {\n result = result.times(nMinusOne.plus(i)).dividedBy(i);\n }\n }\n return result;\n }\n });\n});\n\n/**\n * Test whether BigNumber n is a positive integer\n * @param {BigNumber} n\n * @returns {boolean} isPositiveInteger\n */\nfunction isPositiveInteger(n) {\n return n.isInteger() && n.gte(0);\n}", "import { factory } from '../../utils/factory.js';\nimport { gammaG, gammaNumber, gammaP } from '../../plain/number/index.js';\nvar name = 'gamma';\nvar dependencies = ['typed', 'config', 'multiplyScalar', 'pow', 'BigNumber', 'Complex'];\nexport var createGamma = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n multiplyScalar,\n pow,\n BigNumber: _BigNumber,\n Complex\n } = _ref;\n /**\n * Compute the gamma function of a value using Lanczos approximation for\n * small values, and an extended Stirling approximation for large values.\n *\n * To avoid confusion with the matrix Gamma function, this function does\n * not apply to matrices.\n *\n * Syntax:\n *\n * math.gamma(n)\n *\n * Examples:\n *\n * math.gamma(5) // returns 24\n * math.gamma(-0.5) // returns -3.5449077018110335\n * math.gamma(math.i) // returns -0.15494982830180973 - 0.49801566811835596i\n *\n * See also:\n *\n * combinations, factorial, permutations\n *\n * @param {number | BigNumber | Complex} n A real or complex number\n * @return {number | BigNumber | Complex} The gamma of `n`\n */\n\n function gammaComplex(n) {\n if (n.im === 0) {\n return gammaNumber(n.re);\n }\n\n // Lanczos approximation doesn't work well with real part lower than 0.5\n // So reflection formula is required\n if (n.re < 0.5) {\n // Euler's reflection formula\n // gamma(1-z) * gamma(z) = PI / sin(PI * z)\n // real part of Z should not be integer [sin(PI) == 0 -> 1/0 - undefined]\n // thanks to imperfect sin implementation sin(PI * n) != 0\n // we can safely use it anyway\n var _t = new Complex(1 - n.re, -n.im);\n var r = new Complex(Math.PI * n.re, Math.PI * n.im);\n return new Complex(Math.PI).div(r.sin()).div(gammaComplex(_t));\n }\n\n // Lanczos approximation\n // z -= 1\n n = new Complex(n.re - 1, n.im);\n\n // x = gammaPval[0]\n var x = new Complex(gammaP[0], 0);\n // for (i, gammaPval) in enumerate(gammaP):\n for (var i = 1; i < gammaP.length; ++i) {\n // x += gammaPval / (z + i)\n var gammaPval = new Complex(gammaP[i], 0);\n x = x.add(gammaPval.div(n.add(i)));\n }\n // t = z + gammaG + 0.5\n var t = new Complex(n.re + gammaG + 0.5, n.im);\n\n // y = sqrt(2 * pi) * t ** (z + 0.5) * exp(-t) * x\n var twoPiSqrt = Math.sqrt(2 * Math.PI);\n var tpow = t.pow(n.add(0.5));\n var expt = t.neg().exp();\n\n // y = [x] * [sqrt(2 * pi)] * [t ** (z + 0.5)] * [exp(-t)]\n return x.mul(twoPiSqrt).mul(tpow).mul(expt);\n }\n return typed(name, {\n number: gammaNumber,\n Complex: gammaComplex,\n BigNumber: function BigNumber(n) {\n if (n.isInteger()) {\n return n.isNegative() || n.isZero() ? new _BigNumber(Infinity) : bigFactorial(n.minus(1));\n }\n if (!n.isFinite()) {\n return new _BigNumber(n.isNegative() ? NaN : Infinity);\n }\n throw new Error('Integer BigNumber expected');\n }\n });\n\n /**\n * Calculate factorial for a BigNumber\n * @param {BigNumber} n\n * @returns {BigNumber} Returns the factorial of n\n */\n function bigFactorial(n) {\n if (n < 8) {\n return new _BigNumber([1, 1, 2, 6, 24, 120, 720, 5040][n]);\n }\n var precision = config.precision + (Math.log(n.toNumber()) | 0);\n var Big = _BigNumber.clone({\n precision\n });\n if (n % 2 === 1) {\n return n.times(bigFactorial(new _BigNumber(n - 1)));\n }\n var p = n;\n var prod = new Big(n);\n var sum = n.toNumber();\n while (p > 2) {\n p -= 2;\n sum += p;\n prod = prod.times(sum);\n }\n return new _BigNumber(prod.toPrecision(_BigNumber.precision));\n }\n});", "/* eslint-disable no-loss-of-precision */\n\n// References\n// ----------\n// [1] Hare, \"Computing the Principal Branch of log-Gamma\", Journal of Algorithms, 1997.\n// [2] https://math.stackexchange.com/questions/1338753/how-do-i-calculate-values-for-gamma-function-with-complex-arguments\n\nimport { lgammaNumber, lnSqrt2PI } from '../../plain/number/index.js';\nimport { factory } from '../../utils/factory.js';\nimport { copysign } from '../../utils/number.js';\nvar name = 'lgamma';\nvar dependencies = ['Complex', 'typed'];\nexport var createLgamma = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Complex,\n typed\n } = _ref;\n // Stirling series is non-convergent, we need to use the recurrence `lgamma(z) = lgamma(z+1) - log z` to get\n // sufficient accuracy.\n //\n // These two values are copied from Scipy implementation:\n // https://github.com/scipy/scipy/blob/v1.8.0/scipy/special/_loggamma.pxd#L37\n var SMALL_RE = 7;\n var SMALL_IM = 7;\n\n /**\n * The coefficients are B[2*n]/(2*n*(2*n - 1)) where B[2*n] is the (2*n)th Bernoulli number. See (1.1) in [1].\n *\n * If you cannot access the paper, can also get these values from the formula in [2].\n *\n * 1 / 12 = 0.00833333333333333333333333333333\n * 1 / 360 = 0.00277777777777777777777777777778\n * ...\n * 3617 / 133400 = 0.02955065359477124183006535947712\n */\n var coeffs = [-2.955065359477124183e-2, 6.4102564102564102564e-3, -1.9175269175269175269e-3, 8.4175084175084175084e-4, -5.952380952380952381e-4, 7.9365079365079365079e-4, -2.7777777777777777778e-3, 8.3333333333333333333e-2];\n\n /**\n * Logarithm of the gamma function for real, positive numbers and complex numbers,\n * using Lanczos approximation for numbers and Stirling series for complex numbers.\n *\n * Syntax:\n *\n * math.lgamma(n)\n *\n * Examples:\n *\n * math.lgamma(5) // returns 3.178053830347945\n * math.lgamma(0) // returns Infinity\n * math.lgamma(-0.5) // returns NaN\n * math.lgamma(math.i) // returns -0.6509231993018536 - 1.8724366472624294i\n *\n * See also:\n *\n * gamma\n *\n * @param {number | Complex} n A real or complex number\n * @return {number | Complex} The log gamma of `n`\n */\n return typed(name, {\n number: lgammaNumber,\n Complex: lgammaComplex,\n BigNumber: function BigNumber() {\n throw new Error(\"mathjs doesn't yet provide an implementation of the algorithm lgamma for BigNumber\");\n }\n });\n function lgammaComplex(n) {\n var TWOPI = 6.2831853071795864769252842; // 2*pi\n var LOGPI = 1.1447298858494001741434262; // log(pi)\n\n var REFLECTION = 0.1;\n if (n.isNaN()) {\n return new Complex(NaN, NaN);\n } else if (n.im === 0) {\n return new Complex(lgammaNumber(n.re), 0);\n } else if (n.re >= SMALL_RE || Math.abs(n.im) >= SMALL_IM) {\n return lgammaStirling(n);\n } else if (n.re <= REFLECTION) {\n // Reflection formula. see Proposition 3.1 in [1]\n var tmp = copysign(TWOPI, n.im) * Math.floor(0.5 * n.re + 0.25);\n var a = n.mul(Math.PI).sin().log();\n var b = lgammaComplex(new Complex(1 - n.re, -n.im));\n return new Complex(LOGPI, tmp).sub(a).sub(b);\n } else if (n.im >= 0) {\n return lgammaRecurrence(n);\n } else {\n return lgammaRecurrence(n.conjugate()).conjugate();\n }\n }\n function lgammaStirling(z) {\n // formula ref in [2]\n // computation ref:\n // https://github.com/scipy/scipy/blob/v1.8.0/scipy/special/_loggamma.pxd#L101\n\n // left part\n\n // x (log(x) - 1) + 1/2 (log(2PI) - log(x))\n // => (x - 0.5) * log(x) - x + log(2PI) / 2\n var leftPart = z.sub(0.5).mul(z.log()).sub(z).add(lnSqrt2PI);\n\n // right part\n\n var rz = new Complex(1, 0).div(z);\n var rzz = rz.div(z);\n var a = coeffs[0];\n var b = coeffs[1];\n var r = 2 * rzz.re;\n var s = rzz.re * rzz.re + rzz.im * rzz.im;\n for (var i = 2; i < 8; i++) {\n var tmp = b;\n b = -s * a + coeffs[i];\n a = r * a + tmp;\n }\n var rightPart = rz.mul(rzz.mul(a).add(b));\n\n // plus left and right\n\n return leftPart.add(rightPart);\n }\n function lgammaRecurrence(z) {\n // computation ref:\n // https://github.com/scipy/scipy/blob/v1.8.0/scipy/special/_loggamma.pxd#L78\n\n var signflips = 0;\n var sb = 0;\n var shiftprod = z;\n z = z.add(1);\n while (z.re <= SMALL_RE) {\n shiftprod = shiftprod.mul(z);\n var nsb = shiftprod.im < 0 ? 1 : 0;\n if (nsb !== 0 && sb === 0) signflips++;\n sb = nsb;\n z = z.add(1);\n }\n return lgammaStirling(z).sub(shiftprod.log()).sub(new Complex(0, signflips * 2 * Math.PI * 1));\n }\n});", "import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'factorial';\nvar dependencies = ['typed', 'gamma'];\nexport var createFactorial = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n gamma\n } = _ref;\n /**\n * Compute the factorial of a value\n *\n * Factorial only supports an integer value as argument.\n * For matrices, the function is evaluated element wise.\n *\n * Syntax:\n *\n * math.factorial(n)\n *\n * Examples:\n *\n * math.factorial(5) // returns 120\n * math.factorial(3) // returns 6\n *\n * See also:\n *\n * combinations, combinationsWithRep, gamma, permutations\n *\n * @param {number | BigNumber | Array | Matrix} n An integer number\n * @return {number | BigNumber | Array | Matrix} The factorial of `n`\n */\n return typed(name, {\n number: function number(n) {\n if (n < 0) {\n throw new Error('Value must be non-negative');\n }\n return gamma(n + 1);\n },\n BigNumber: function BigNumber(n) {\n if (n.isNegative()) {\n throw new Error('Value must be non-negative');\n }\n return gamma(n.plus(1));\n },\n 'Array | Matrix': typed.referToSelf(self => n => deepMap(n, self))\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'kldivergence';\nvar dependencies = ['typed', 'matrix', 'divide', 'sum', 'multiply', 'map', 'dotDivide', 'log', 'isNumeric'];\nexport var createKldivergence = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n divide,\n sum,\n multiply,\n map,\n dotDivide,\n log,\n isNumeric\n } = _ref;\n /**\n * Calculate the Kullback-Leibler (KL) divergence between two distributions\n *\n * Syntax:\n *\n * math.kldivergence(x, y)\n *\n * Examples:\n *\n * math.kldivergence([0.7,0.5,0.4], [0.2,0.9,0.5]) //returns 0.24376698773121153\n *\n *\n * @param {Array | Matrix} q First vector\n * @param {Array | Matrix} p Second vector\n * @return {number} Returns distance between q and p\n */\n return typed(name, {\n 'Array, Array': function Array_Array(q, p) {\n return _kldiv(matrix(q), matrix(p));\n },\n 'Matrix, Array': function Matrix_Array(q, p) {\n return _kldiv(q, matrix(p));\n },\n 'Array, Matrix': function Array_Matrix(q, p) {\n return _kldiv(matrix(q), p);\n },\n 'Matrix, Matrix': function Matrix_Matrix(q, p) {\n return _kldiv(q, p);\n }\n });\n function _kldiv(q, p) {\n var plength = p.size().length;\n var qlength = q.size().length;\n if (plength > 1) {\n throw new Error('first object must be one dimensional');\n }\n if (qlength > 1) {\n throw new Error('second object must be one dimensional');\n }\n if (plength !== qlength) {\n throw new Error('Length of two vectors must be equal');\n }\n\n // Before calculation, apply normalization\n var sumq = sum(q);\n if (sumq === 0) {\n throw new Error('Sum of elements in first object must be non zero');\n }\n var sump = sum(p);\n if (sump === 0) {\n throw new Error('Sum of elements in second object must be non zero');\n }\n var qnorm = divide(q, sum(q));\n var pnorm = divide(p, sum(p));\n var result = sum(multiply(qnorm, map(dotDivide(qnorm, pnorm), x => log(x))));\n if (isNumeric(result)) {\n return result;\n } else {\n return Number.NaN;\n }\n }\n});", "import { deepForEach } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'multinomial';\nvar dependencies = ['typed', 'add', 'divide', 'multiply', 'factorial', 'isInteger', 'isPositive'];\nexport var createMultinomial = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n divide,\n multiply,\n factorial,\n isInteger,\n isPositive\n } = _ref;\n /**\n * Multinomial Coefficients compute the number of ways of picking a1, a2, ..., ai unordered outcomes from `n` possibilities.\n *\n * multinomial takes one array of integers as an argument.\n * The following condition must be enforced: every ai <= 0\n *\n * Syntax:\n *\n * math.multinomial(a) // a is an array type\n *\n * Examples:\n *\n * math.multinomial([1,2,1]) // returns 12\n *\n * See also:\n *\n * combinations, factorial\n *\n * @param {number[] | BigNumber[]} a Integer numbers of objects in the subset\n * @return {Number | BigNumber} Multinomial coefficient.\n */\n return typed(name, {\n 'Array | Matrix': function Array__Matrix(a) {\n var sum = 0;\n var denom = 1;\n deepForEach(a, function (ai) {\n if (!isInteger(ai) || !isPositive(ai)) {\n throw new TypeError('Positive integer value expected in function multinomial');\n }\n sum = add(sum, ai);\n denom = multiply(denom, factorial(ai));\n });\n return divide(factorial(sum), denom);\n }\n });\n});", "import { isInteger } from '../../utils/number.js';\nimport { product } from '../../utils/product.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'permutations';\nvar dependencies = ['typed', 'factorial'];\nexport var createPermutations = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n factorial\n } = _ref;\n /**\n * Compute the number of ways of obtaining an ordered subset of `k` elements\n * from a set of `n` elements.\n *\n * Permutations only takes integer arguments.\n * The following condition must be enforced: k <= n.\n *\n * Syntax:\n *\n * math.permutations(n)\n * math.permutations(n, k)\n *\n * Examples:\n *\n * math.permutations(5) // 120\n * math.permutations(5, 3) // 60\n *\n * See also:\n *\n * combinations, combinationsWithRep, factorial\n *\n * @param {number | BigNumber} n The number of objects in total\n * @param {number | BigNumber} [k] The number of objects in the subset\n * @return {number | BigNumber} The number of permutations\n */\n return typed(name, {\n 'number | BigNumber': factorial,\n 'number, number': function number_number(n, k) {\n if (!isInteger(n) || n < 0) {\n throw new TypeError('Positive integer value expected in function permutations');\n }\n if (!isInteger(k) || k < 0) {\n throw new TypeError('Positive integer value expected in function permutations');\n }\n if (k > n) {\n throw new TypeError('second argument k must be less than or equal to first argument n');\n }\n // Permute n objects, k at a time\n return product(n - k + 1, n);\n },\n 'BigNumber, BigNumber': function BigNumber_BigNumber(n, k) {\n var result, i;\n if (!isPositiveInteger(n) || !isPositiveInteger(k)) {\n throw new TypeError('Positive integer value expected in function permutations');\n }\n if (k.gt(n)) {\n throw new TypeError('second argument k must be less than or equal to first argument n');\n }\n var one = n.mul(0).add(1);\n result = one;\n for (i = n.minus(k).plus(1); i.lte(n); i = i.plus(1)) {\n result = result.times(i);\n }\n return result;\n }\n\n // TODO: implement support for collection in permutations\n });\n});\n\n/**\n * Test whether BigNumber n is a positive integer\n * @param {BigNumber} n\n * @returns {boolean} isPositiveInteger\n */\nfunction isPositiveInteger(n) {\n return n.isInteger() && n.gte(0);\n}", "import seedrandom from 'seedrandom';\nvar singletonRandom = /* #__PURE__ */seedrandom(Date.now());\nexport function createRng(randomSeed) {\n var random;\n\n // create a new random generator with given seed\n function setSeed(seed) {\n random = seed === null ? singletonRandom : seedrandom(String(seed));\n }\n\n // initialize a seeded pseudo random number generator with config's random seed\n setSeed(randomSeed);\n\n // wrapper function so the rng can be updated via generator\n function rng() {\n return random();\n }\n return rng;\n}", "import { flatten } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { isMatrix, isNumber } from '../../utils/is.js';\nimport { createRng } from './util/seededRNG.js';\nvar name = 'pickRandom';\nvar dependencies = ['typed', 'config', '?on'];\nexport var createPickRandom = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n on\n } = _ref;\n // seeded pseudo random number generator\n var rng = createRng(config.randomSeed);\n if (on) {\n on('config', function (curr, prev) {\n if (curr.randomSeed !== prev.randomSeed) {\n rng = createRng(curr.randomSeed);\n }\n });\n }\n\n /**\n * Random pick one or more values from a one dimensional array.\n * Array elements are picked using a random function with uniform or weighted distribution.\n *\n * Syntax:\n *\n * math.pickRandom(array)\n * math.pickRandom(array, number)\n * math.pickRandom(array, weights)\n * math.pickRandom(array, number, weights)\n * math.pickRandom(array, weights, number)\n * math.pickRandom(array, { weights, number, elementWise })\n *\n * Examples:\n *\n * math.pickRandom([3, 6, 12, 2]) // returns one of the values in the array\n * math.pickRandom([3, 6, 12, 2], 2) // returns an array of two of the values in the array\n * math.pickRandom([3, 6, 12, 2], { number: 2 }) // returns an array of two of the values in the array\n * math.pickRandom([3, 6, 12, 2], [1, 3, 2, 1]) // returns one of the values in the array with weighted distribution\n * math.pickRandom([3, 6, 12, 2], 2, [1, 3, 2, 1]) // returns an array of two of the values in the array with weighted distribution\n * math.pickRandom([3, 6, 12, 2], [1, 3, 2, 1], 2) // returns an array of two of the values in the array with weighted distribution\n *\n * math.pickRandom([{x: 1.0, y: 2.0}, {x: 1.1, y: 2.0}], { elementWise: false })\n * // returns one of the items in the array\n *\n * See also:\n *\n * random, randomInt\n *\n * @param {Array | Matrix} array A one dimensional array\n * @param {Int} number An int or float\n * @param {Array | Matrix} weights An array of ints or floats\n * @return {number | Array} Returns a single random value from array when number is undefined.\n * Returns an array with the configured number of elements when number is defined.\n */\n return typed(name, {\n 'Array | Matrix': function Array__Matrix(possibles) {\n return _pickRandom(possibles, {});\n },\n 'Array | Matrix, Object': function Array__Matrix_Object(possibles, options) {\n return _pickRandom(possibles, options);\n },\n 'Array | Matrix, number': function Array__Matrix_number(possibles, number) {\n return _pickRandom(possibles, {\n number\n });\n },\n 'Array | Matrix, Array | Matrix': function Array__Matrix_Array__Matrix(possibles, weights) {\n return _pickRandom(possibles, {\n weights\n });\n },\n 'Array | Matrix, Array | Matrix, number': function Array__Matrix_Array__Matrix_number(possibles, weights, number) {\n return _pickRandom(possibles, {\n number,\n weights\n });\n },\n 'Array | Matrix, number, Array | Matrix': function Array__Matrix_number_Array__Matrix(possibles, number, weights) {\n return _pickRandom(possibles, {\n number,\n weights\n });\n }\n });\n\n /**\n * @param {Array | Matrix} possibles\n * @param {{\n * number?: number,\n * weights?: Array | Matrix,\n * elementWise: boolean\n * }} options\n * @returns {number | Array}\n * @private\n */\n function _pickRandom(possibles, _ref2) {\n var {\n number,\n weights,\n elementWise = true\n } = _ref2;\n var single = typeof number === 'undefined';\n if (single) {\n number = 1;\n }\n var createMatrix = isMatrix(possibles) ? possibles.create : isMatrix(weights) ? weights.create : null;\n possibles = possibles.valueOf(); // get Array\n if (weights) {\n weights = weights.valueOf(); // get Array\n }\n if (elementWise === true) {\n possibles = flatten(possibles);\n weights = flatten(weights);\n }\n var totalWeights = 0;\n if (typeof weights !== 'undefined') {\n if (weights.length !== possibles.length) {\n throw new Error('Weights must have the same length as possibles');\n }\n for (var i = 0, len = weights.length; i < len; i++) {\n if (!isNumber(weights[i]) || weights[i] < 0) {\n throw new Error('Weights must be an array of positive numbers');\n }\n totalWeights += weights[i];\n }\n }\n var length = possibles.length;\n var result = [];\n var pick;\n while (result.length < number) {\n if (typeof weights === 'undefined') {\n pick = possibles[Math.floor(rng() * length)];\n } else {\n var randKey = rng() * totalWeights;\n for (var _i = 0, _len = possibles.length; _i < _len; _i++) {\n randKey -= weights[_i];\n if (randKey < 0) {\n pick = possibles[_i];\n break;\n }\n }\n }\n result.push(pick);\n }\n return single ? result[0] : createMatrix ? createMatrix(result) : result;\n }\n});", "/**\n * This is a util function for generating a random matrix recursively.\n * @param {number[]} size\n * @param {function} random\n * @returns {Array}\n */\nexport function randomMatrix(size, random) {\n var data = [];\n size = size.slice(0);\n if (size.length > 1) {\n for (var i = 0, length = size.shift(); i < length; i++) {\n data.push(randomMatrix(size, random));\n }\n } else {\n for (var _i = 0, _length = size.shift(); _i < _length; _i++) {\n data.push(random());\n }\n }\n return data;\n}", "import { factory } from '../../utils/factory.js';\nimport { isMatrix } from '../../utils/is.js';\nimport { createRng } from './util/seededRNG.js';\nimport { randomMatrix } from './util/randomMatrix.js';\nvar name = 'random';\nvar dependencies = ['typed', 'config', '?on'];\nexport var createRandom = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n on\n } = _ref;\n // seeded pseudo random number generator\n var rng = createRng(config.randomSeed);\n if (on) {\n on('config', function (curr, prev) {\n if (curr.randomSeed !== prev.randomSeed) {\n rng = createRng(curr.randomSeed);\n }\n });\n }\n\n /**\n * Return a random number larger or equal to `min` and smaller than `max`\n * using a uniform distribution.\n *\n * Syntax:\n *\n * math.random() // generate a random number between 0 and 1\n * math.random(max) // generate a random number between 0 and max\n * math.random(min, max) // generate a random number between min and max\n * math.random(size) // generate a matrix with random numbers between 0 and 1\n * math.random(size, max) // generate a matrix with random numbers between 0 and max\n * math.random(size, min, max) // generate a matrix with random numbers between min and max\n *\n * Examples:\n *\n * math.random() // returns a random number between 0 and 1\n * math.random(100) // returns a random number between 0 and 100\n * math.random(30, 40) // returns a random number between 30 and 40\n * math.random([2, 3]) // returns a 2x3 matrix with random numbers between 0 and 1\n *\n * See also:\n *\n * randomInt, pickRandom\n *\n * @param {Array | Matrix} [size] If provided, an array or matrix with given\n * size and filled with random values is returned\n * @param {number} [min] Minimum boundary for the random value, included\n * @param {number} [max] Maximum boundary for the random value, excluded\n * @return {number | Array | Matrix} A random number\n */\n return typed(name, {\n '': () => _random(0, 1),\n number: max => _random(0, max),\n 'number, number': (min, max) => _random(min, max),\n 'Array | Matrix': size => _randomMatrix(size, 0, 1),\n 'Array | Matrix, number': (size, max) => _randomMatrix(size, 0, max),\n 'Array | Matrix, number, number': (size, min, max) => _randomMatrix(size, min, max)\n });\n function _randomMatrix(size, min, max) {\n var res = randomMatrix(size.valueOf(), () => _random(min, max));\n return isMatrix(size) ? size.create(res, 'number') : res;\n }\n function _random(min, max) {\n return min + rng() * (max - min);\n }\n});\n\n// number only implementation of random, no matrix support\n// TODO: there is quite some duplicate code in both createRandom and createRandomNumber, can we improve that?\nexport var createRandomNumber = /* #__PURE__ */factory(name, ['typed', 'config', '?on'], _ref2 => {\n var {\n typed,\n config,\n on,\n matrix\n } = _ref2;\n // seeded pseudo random number generator1\n var rng = createRng(config.randomSeed);\n if (on) {\n on('config', function (curr, prev) {\n if (curr.randomSeed !== prev.randomSeed) {\n rng = createRng(curr.randomSeed);\n }\n });\n }\n return typed(name, {\n '': () => _random(0, 1),\n number: max => _random(0, max),\n 'number, number': (min, max) => _random(min, max)\n });\n function _random(min, max) {\n return min + rng() * (max - min);\n }\n});", "import { factory } from '../../utils/factory.js';\nimport { randomMatrix } from './util/randomMatrix.js';\nimport { createRng } from './util/seededRNG.js';\nimport { isMatrix } from '../../utils/is.js';\nvar name = 'randomInt';\nvar dependencies = ['typed', 'config', '?on'];\nexport var createRandomInt = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n on\n } = _ref;\n // seeded pseudo random number generator\n var rng = createRng(config.randomSeed);\n if (on) {\n on('config', function (curr, prev) {\n if (curr.randomSeed !== prev.randomSeed) {\n rng = createRng(curr.randomSeed);\n }\n });\n }\n\n /**\n * Return a random integer number larger or equal to `min` and smaller than `max`\n * using a uniform distribution.\n *\n * Syntax:\n *\n * math.randomInt() // generate a random integer between 0 and 1\n * math.randomInt(max) // generate a random integer between 0 and max\n * math.randomInt(min, max) // generate a random integer between min and max\n * math.randomInt(size) // generate a matrix with random integer between 0 and 1\n * math.randomInt(size, max) // generate a matrix with random integer between 0 and max\n * math.randomInt(size, min, max) // generate a matrix with random integer between min and max\n *\n * Examples:\n *\n * math.randomInt(100) // returns a random integer between 0 and 100\n * math.randomInt(30, 40) // returns a random integer between 30 and 40\n * math.randomInt([2, 3]) // returns a 2x3 matrix with random integers between 0 and 1\n *\n * See also:\n *\n * random, pickRandom\n *\n * @param {Array | Matrix} [size] If provided, an array or matrix with given\n * size and filled with random values is returned\n * @param {number} [min] Minimum boundary for the random value, included\n * @param {number} [max] Maximum boundary for the random value, excluded\n * @return {number | Array | Matrix} A random integer value\n */\n return typed(name, {\n '': () => _randomInt(0, 1),\n number: max => _randomInt(0, max),\n 'number, number': (min, max) => _randomInt(min, max),\n 'Array | Matrix': size => _randomIntMatrix(size, 0, 1),\n 'Array | Matrix, number': (size, max) => _randomIntMatrix(size, 0, max),\n 'Array | Matrix, number, number': (size, min, max) => _randomIntMatrix(size, min, max)\n });\n function _randomIntMatrix(size, min, max) {\n var res = randomMatrix(size.valueOf(), () => _randomInt(min, max));\n return isMatrix(size) ? size.create(res, 'number') : res;\n }\n function _randomInt(min, max) {\n return Math.floor(min + rng() * (max - min));\n }\n});", "import { factory } from '../../utils/factory.js';\nimport { isNumber } from '../../utils/is.js';\nvar name = 'stirlingS2';\nvar dependencies = ['typed', 'addScalar', 'subtractScalar', 'multiplyScalar', 'divideScalar', 'pow', 'factorial', 'combinations', 'isNegative', 'isInteger', 'number', '?bignumber', 'larger'];\nexport var createStirlingS2 = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n addScalar,\n subtractScalar,\n multiplyScalar,\n divideScalar,\n pow,\n factorial,\n combinations,\n isNegative,\n isInteger,\n number,\n bignumber,\n larger\n } = _ref;\n var smallCache = [];\n var bigCache = [];\n /**\n * The Stirling numbers of the second kind, counts the number of ways to partition\n * a set of n labelled objects into k nonempty unlabelled subsets.\n * stirlingS2 only takes integer arguments.\n * The following condition must be enforced: k <= n.\n *\n * If n = k or k = 1 <= n, then s(n,k) = 1\n * If k = 0 < n, then s(n,k) = 0\n *\n * Note that if either n or k is supplied as a BigNumber, the result will be\n * as well.\n *\n * Syntax:\n *\n * math.stirlingS2(n, k)\n *\n * Examples:\n *\n * math.stirlingS2(5, 3) //returns 25\n *\n * See also:\n *\n * bellNumbers\n *\n * @param {Number | BigNumber} n Total number of objects in the set\n * @param {Number | BigNumber} k Number of objects in the subset\n * @return {Number | BigNumber} S(n,k)\n */\n return typed(name, {\n 'number | BigNumber, number | BigNumber': function number__BigNumber_number__BigNumber(n, k) {\n if (!isInteger(n) || isNegative(n) || !isInteger(k) || isNegative(k)) {\n throw new TypeError('Non-negative integer value expected in function stirlingS2');\n } else if (larger(k, n)) {\n throw new TypeError('k must be less than or equal to n in function stirlingS2');\n }\n var big = !(isNumber(n) && isNumber(k));\n var cache = big ? bigCache : smallCache;\n var make = big ? bignumber : number;\n var nn = number(n);\n var nk = number(k);\n /* See if we already have the value: */\n if (cache[nn] && cache[nn].length > nk) {\n return cache[nn][nk];\n }\n /* Fill the cache */\n for (var m = 0; m <= nn; ++m) {\n if (!cache[m]) {\n cache[m] = [m === 0 ? make(1) : make(0)];\n }\n if (m === 0) continue;\n var row = cache[m];\n var prev = cache[m - 1];\n for (var i = row.length; i <= m && i <= nk; ++i) {\n if (i === m) {\n row[i] = 1;\n } else {\n row[i] = addScalar(multiplyScalar(make(i), prev[i]), prev[i - 1]);\n }\n }\n }\n return cache[nn][nk];\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'bellNumbers';\nvar dependencies = ['typed', 'addScalar', 'isNegative', 'isInteger', 'stirlingS2'];\nexport var createBellNumbers = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n addScalar,\n isNegative,\n isInteger,\n stirlingS2\n } = _ref;\n /**\n * The Bell Numbers count the number of partitions of a set. A partition is a pairwise disjoint subset of S whose union is S.\n * bellNumbers only takes integer arguments.\n * The following condition must be enforced: n >= 0\n *\n * Syntax:\n *\n * math.bellNumbers(n)\n *\n * Examples:\n *\n * math.bellNumbers(3) // returns 5\n * math.bellNumbers(8) // returns 4140\n *\n * See also:\n *\n * stirlingS2\n *\n * @param {Number | BigNumber} n Total number of objects in the set\n * @return {Number | BigNumber} B(n)\n */\n return typed(name, {\n 'number | BigNumber': function number__BigNumber(n) {\n if (!isInteger(n) || isNegative(n)) {\n throw new TypeError('Non-negative integer value expected in function bellNumbers');\n }\n\n // Sum (k=0, n) S(n,k).\n var result = 0;\n for (var i = 0; i <= n; i++) {\n result = addScalar(result, stirlingS2(n, i));\n }\n return result;\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'catalan';\nvar dependencies = ['typed', 'addScalar', 'divideScalar', 'multiplyScalar', 'combinations', 'isNegative', 'isInteger'];\nexport var createCatalan = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n addScalar,\n divideScalar,\n multiplyScalar,\n combinations,\n isNegative,\n isInteger\n } = _ref;\n /**\n * The Catalan Numbers enumerate combinatorial structures of many different types.\n * catalan only takes integer arguments.\n * The following condition must be enforced: n >= 0\n *\n * Syntax:\n *\n * math.catalan(n)\n *\n * Examples:\n *\n * math.catalan(3) // returns 5\n * math.catalan(8) // returns 1430\n *\n * See also:\n *\n * bellNumbers\n *\n * @param {Number | BigNumber} n nth Catalan number\n * @return {Number | BigNumber} Cn(n)\n */\n return typed(name, {\n 'number | BigNumber': function number__BigNumber(n) {\n if (!isInteger(n) || isNegative(n)) {\n throw new TypeError('Non-negative integer value expected in function catalan');\n }\n return divideScalar(combinations(multiplyScalar(n, 2), n), addScalar(n, 1));\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'composition';\nvar dependencies = ['typed', 'addScalar', 'combinations', 'isNegative', 'isPositive', 'isInteger', 'larger'];\nexport var createComposition = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n addScalar,\n combinations,\n isPositive,\n isNegative,\n isInteger,\n larger\n } = _ref;\n /**\n * The composition counts of n into k parts.\n *\n * composition only takes integer arguments.\n * The following condition must be enforced: k <= n.\n *\n * Syntax:\n *\n * math.composition(n, k)\n *\n * Examples:\n *\n * math.composition(5, 3) // returns 6\n *\n * See also:\n *\n * combinations\n *\n * @param {Number | BigNumber} n Total number of objects in the set\n * @param {Number | BigNumber} k Number of objects in the subset\n * @return {Number | BigNumber} Returns the composition counts of n into k parts.\n */\n return typed(name, {\n 'number | BigNumber, number | BigNumber': function number__BigNumber_number__BigNumber(n, k) {\n if (!isInteger(n) || !isPositive(n) || !isInteger(k) || !isPositive(k)) {\n throw new TypeError('Positive integer value expected in function composition');\n } else if (larger(k, n)) {\n throw new TypeError('k must be less than or equal to n in function composition');\n }\n return combinations(addScalar(n, -1), addScalar(k, -1));\n }\n });\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'leafCount';\nvar dependencies = ['parse', 'typed'];\nexport var createLeafCount = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n parse,\n typed\n } = _ref;\n // This does the real work, but we don't have to recurse through\n // a typed call if we separate it out\n function countLeaves(node) {\n var count = 0;\n node.forEach(n => {\n count += countLeaves(n);\n });\n return count || 1;\n }\n\n /**\n * Gives the number of \"leaf nodes\" in the parse tree of the given expression\n * A leaf node is one that has no subexpressions, essentially either a\n * symbol or a constant. Note that `5!` has just one leaf, the '5'; the\n * unary factorial operator does not add a leaf. On the other hand,\n * function symbols do add leaves, so `sin(x)/cos(x)` has four leaves.\n *\n * The `simplify()` function should generally not increase the `leafCount()`\n * of an expression, although currently there is no guarantee that it never\n * does so. In many cases, `simplify()` reduces the leaf count.\n *\n * Syntax:\n *\n * math.leafCount(expr)\n *\n * Examples:\n *\n * math.leafCount('x') // 1\n * math.leafCount(math.parse('a*d-b*c')) // 4\n * math.leafCount('[a,b;c,d][0,1]') // 6\n *\n * See also:\n *\n * simplify\n *\n * @param {Node|string} expr The expression to count the leaves of\n *\n * @return {number} The number of leaves of `expr`\n *\n */\n return typed(name, {\n Node: function Node(expr) {\n return countLeaves(expr);\n }\n });\n});", "import { isConstantNode, isFunctionNode, isOperatorNode, isParenthesisNode } from '../../../utils/is.js';\nexport { isConstantNode, isSymbolNode as isVariableNode } from '../../../utils/is.js';\nexport function isNumericNode(x) {\n return isConstantNode(x) || isOperatorNode(x) && x.isUnary() && isConstantNode(x.args[0]);\n}\nexport function isConstantExpression(x) {\n if (isConstantNode(x)) {\n // Basic Constant types\n return true;\n }\n if ((isFunctionNode(x) || isOperatorNode(x)) && x.args.every(isConstantExpression)) {\n // Can be constant depending on arguments\n return true;\n }\n if (isParenthesisNode(x) && isConstantExpression(x.content)) {\n // Parenthesis are transparent\n return true;\n }\n return false; // Probably missing some edge cases\n}", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport { isFunctionNode, isOperatorNode, isParenthesisNode } from '../../../utils/is.js';\nimport { factory } from '../../../utils/factory.js';\nimport { hasOwnProperty } from '../../../utils/object.js';\nvar name = 'simplifyUtil';\nvar dependencies = ['FunctionNode', 'OperatorNode', 'SymbolNode'];\nexport var createUtil = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n FunctionNode,\n OperatorNode,\n SymbolNode\n } = _ref;\n // TODO commutative/associative properties rely on the arguments\n // e.g. multiply is not commutative for matrices\n // The properties should be calculated from an argument to simplify, or possibly something in math.config\n // the other option is for typed() to specify a return type so that we can evaluate the type of arguments\n\n /* So that properties of an operator fit on one line: */\n var T = true;\n var F = false;\n var defaultName = 'defaultF';\n var defaultContext = {\n /* */add: {\n trivial: T,\n total: T,\n commutative: T,\n associative: T\n },\n /**/unaryPlus: {\n trivial: T,\n total: T,\n commutative: T,\n associative: T\n },\n /* */subtract: {\n trivial: F,\n total: T,\n commutative: F,\n associative: F\n },\n /* */multiply: {\n trivial: T,\n total: T,\n commutative: T,\n associative: T\n },\n /* */divide: {\n trivial: F,\n total: T,\n commutative: F,\n associative: F\n },\n /* */paren: {\n trivial: T,\n total: T,\n commutative: T,\n associative: F\n },\n /* */defaultF: {\n trivial: F,\n total: T,\n commutative: F,\n associative: F\n }\n };\n var realContext = {\n divide: {\n total: F\n },\n log: {\n total: F\n }\n };\n var positiveContext = {\n subtract: {\n total: F\n },\n abs: {\n trivial: T\n },\n log: {\n total: T\n }\n };\n function hasProperty(nodeOrName, property) {\n var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultContext;\n var name = defaultName;\n if (typeof nodeOrName === 'string') {\n name = nodeOrName;\n } else if (isOperatorNode(nodeOrName)) {\n name = nodeOrName.fn.toString();\n } else if (isFunctionNode(nodeOrName)) {\n name = nodeOrName.name;\n } else if (isParenthesisNode(nodeOrName)) {\n name = 'paren';\n }\n if (hasOwnProperty(context, name)) {\n var properties = context[name];\n if (hasOwnProperty(properties, property)) {\n return properties[property];\n }\n if (hasOwnProperty(defaultContext, name)) {\n return defaultContext[name][property];\n }\n }\n if (hasOwnProperty(context, defaultName)) {\n var _properties = context[defaultName];\n if (hasOwnProperty(_properties, property)) {\n return _properties[property];\n }\n return defaultContext[defaultName][property];\n }\n /* name not found in context and context has no global default */\n /* So use default context. */\n if (hasOwnProperty(defaultContext, name)) {\n var _properties2 = defaultContext[name];\n if (hasOwnProperty(_properties2, property)) {\n return _properties2[property];\n }\n }\n return defaultContext[defaultName][property];\n }\n function isCommutative(node) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultContext;\n return hasProperty(node, 'commutative', context);\n }\n function isAssociative(node) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultContext;\n return hasProperty(node, 'associative', context);\n }\n\n /**\n * Merge the given contexts, with primary overriding secondary\n * wherever they might conflict\n */\n function mergeContext(primary, secondary) {\n var merged = _objectSpread({}, primary);\n for (var prop in secondary) {\n if (hasOwnProperty(primary, prop)) {\n merged[prop] = _objectSpread(_objectSpread({}, secondary[prop]), primary[prop]);\n } else {\n merged[prop] = secondary[prop];\n }\n }\n return merged;\n }\n\n /**\n * Flatten all associative operators in an expression tree.\n * Assumes parentheses have already been removed.\n */\n function flatten(node, context) {\n if (!node.args || node.args.length === 0) {\n return node;\n }\n node.args = allChildren(node, context);\n for (var i = 0; i < node.args.length; i++) {\n flatten(node.args[i], context);\n }\n }\n\n /**\n * Get the children of a node as if it has been flattened.\n * TODO implement for FunctionNodes\n */\n function allChildren(node, context) {\n var op;\n var children = [];\n var _findChildren = function findChildren(node) {\n for (var i = 0; i < node.args.length; i++) {\n var child = node.args[i];\n if (isOperatorNode(child) && op === child.op) {\n _findChildren(child);\n } else {\n children.push(child);\n }\n }\n };\n if (isAssociative(node, context)) {\n op = node.op;\n _findChildren(node);\n return children;\n } else {\n return node.args;\n }\n }\n\n /**\n * Unflatten all flattened operators to a right-heavy binary tree.\n */\n function unflattenr(node, context) {\n if (!node.args || node.args.length === 0) {\n return;\n }\n var makeNode = createMakeNodeFunction(node);\n var l = node.args.length;\n for (var i = 0; i < l; i++) {\n unflattenr(node.args[i], context);\n }\n if (l > 2 && isAssociative(node, context)) {\n var curnode = node.args.pop();\n while (node.args.length > 0) {\n curnode = makeNode([node.args.pop(), curnode]);\n }\n node.args = curnode.args;\n }\n }\n\n /**\n * Unflatten all flattened operators to a left-heavy binary tree.\n */\n function unflattenl(node, context) {\n if (!node.args || node.args.length === 0) {\n return;\n }\n var makeNode = createMakeNodeFunction(node);\n var l = node.args.length;\n for (var i = 0; i < l; i++) {\n unflattenl(node.args[i], context);\n }\n if (l > 2 && isAssociative(node, context)) {\n var curnode = node.args.shift();\n while (node.args.length > 0) {\n curnode = makeNode([curnode, node.args.shift()]);\n }\n node.args = curnode.args;\n }\n }\n function createMakeNodeFunction(node) {\n if (isOperatorNode(node)) {\n return function (args) {\n try {\n return new OperatorNode(node.op, node.fn, args, node.implicit);\n } catch (err) {\n console.error(err);\n return [];\n }\n };\n } else {\n return function (args) {\n return new FunctionNode(new SymbolNode(node.name), args);\n };\n }\n }\n return {\n createMakeNodeFunction,\n hasProperty,\n isCommutative,\n isAssociative,\n mergeContext,\n flatten,\n allChildren,\n unflattenr,\n unflattenl,\n defaultContext,\n realContext,\n positiveContext\n };\n});", "import { isParenthesisNode } from '../../utils/is.js';\nimport { isConstantNode, isVariableNode, isNumericNode, isConstantExpression } from './simplify/wildcards.js';\nimport { factory } from '../../utils/factory.js';\nimport { createUtil } from './simplify/util.js';\nimport { hasOwnProperty } from '../../utils/object.js';\nimport { createEmptyMap, createMap } from '../../utils/map.js';\nvar name = 'simplify';\nvar dependencies = ['typed', 'parse', 'equal', 'resolve', 'simplifyConstant', 'simplifyCore', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'ParenthesisNode', 'SymbolNode', 'replacer'];\nexport var createSimplify = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n parse,\n equal,\n resolve,\n simplifyConstant,\n simplifyCore,\n AccessorNode,\n ArrayNode,\n ConstantNode,\n FunctionNode,\n IndexNode,\n ObjectNode,\n OperatorNode,\n ParenthesisNode,\n SymbolNode,\n replacer\n } = _ref;\n var {\n hasProperty,\n isCommutative,\n isAssociative,\n mergeContext,\n flatten,\n unflattenr,\n unflattenl,\n createMakeNodeFunction,\n defaultContext,\n realContext,\n positiveContext\n } = createUtil({\n FunctionNode,\n OperatorNode,\n SymbolNode\n });\n\n /**\n * Simplify an expression tree.\n *\n * A list of rules are applied to an expression, repeating over the list until\n * no further changes are made.\n * It's possible to pass a custom set of rules to the function as second\n * argument. A rule can be specified as an object, string, or function:\n *\n * const rules = [\n * { l: 'n1*n3 + n2*n3', r: '(n1+n2)*n3' },\n * 'n1*n3 + n2*n3 -> (n1+n2)*n3',\n * function (node) {\n * // ... return a new node or return the node unchanged\n * return node\n * }\n * ]\n *\n * String and object rules consist of a left and right pattern. The left is\n * used to match against the expression and the right determines what matches\n * are replaced with. The main difference between a pattern and a normal\n * expression is that variables starting with the following characters are\n * interpreted as wildcards:\n *\n * - 'n' - Matches any node [Node]\n * - 'c' - Matches a constant literal (5 or 3.2) [ConstantNode]\n * - 'cl' - Matches a constant literal; same as c [ConstantNode]\n * - 'cd' - Matches a decimal literal (5 or -3.2) [ConstantNode or unaryMinus wrapping a ConstantNode]\n * - 'ce' - Matches a constant expression (-5 or \u221A3) [Expressions consisting of only ConstantNodes, functions, and operators]\n * - 'v' - Matches a variable; anything not matched by c (-5 or x) [Node that is not a ConstantNode]\n * - 'vl' - Matches a variable literal (x or y) [SymbolNode]\n * - 'vd' - Matches a non-decimal expression; anything not matched by cd (x or \u221A3) [Node that is not a ConstantNode or unaryMinus that is wrapping a ConstantNode]\n * - 've' - Matches a variable expression; anything not matched by ce (x or 2x) [Expressions that contain a SymbolNode or other non-constant term]\n *\n * The default list of rules is exposed on the function as `simplify.rules`\n * and can be used as a basis to built a set of custom rules. Note that since\n * the `simplifyCore` function is in the default list of rules, by default\n * simplify will convert any function calls in the expression that have\n * operator equivalents to their operator forms.\n *\n * To specify a rule as a string, separate the left and right pattern by '->'\n * When specifying a rule as an object, the following keys are meaningful:\n * - l - the left pattern\n * - r - the right pattern\n * - s - in lieu of l and r, the string form that is broken at -> to give them\n * - repeat - whether to repeat this rule until the expression stabilizes\n * - assuming - gives a context object, as in the 'context' option to\n * simplify. Every property in the context object must match the current\n * context in order, or else the rule will not be applied.\n * - imposeContext - gives a context object, as in the 'context' option to\n * simplify. Any settings specified will override the incoming context\n * for all matches of this rule.\n *\n * For more details on the theory, see:\n *\n * - [Strategies for simplifying math expressions (Stackoverflow)](https://stackoverflow.com/questions/7540227/strategies-for-simplifying-math-expressions)\n * - [Symbolic computation - Simplification (Wikipedia)](https://en.wikipedia.org/wiki/Symbolic_computation#Simplification)\n *\n * An optional `options` argument can be passed as last argument of `simplify`.\n * Currently available options (defaults in parentheses):\n * - `consoleDebug` (false): whether to write the expression being simplified\n * and any changes to it, along with the rule responsible, to console\n * - `context` (simplify.defaultContext): an object giving properties of\n * each operator, which determine what simplifications are allowed. The\n * currently meaningful properties are commutative, associative,\n * total (whether the operation is defined for all arguments), and\n * trivial (whether the operation applied to a single argument leaves\n * that argument unchanged). The default context is very permissive and\n * allows almost all simplifications. Only properties differing from\n * the default need to be specified; the default context is used as a\n * fallback. Additional contexts `simplify.realContext` and\n * `simplify.positiveContext` are supplied to cause simplify to perform\n * just simplifications guaranteed to preserve all values of the expression\n * assuming all variables and subexpressions are real numbers or\n * positive real numbers, respectively. (Note that these are in some cases\n * more restrictive than the default context; for example, the default\n * context will allow `x/x` to simplify to 1, whereas\n * `simplify.realContext` will not, as `0/0` is not equal to 1.)\n * - `exactFractions` (true): whether to try to convert all constants to\n * exact rational numbers.\n * - `fractionsLimit` (10000): when `exactFractions` is true, constants will\n * be expressed as fractions only when both numerator and denominator\n * are smaller than `fractionsLimit`.\n *\n * Syntax:\n *\n * math.simplify(expr)\n * math.simplify(expr, rules)\n * math.simplify(expr, rules)\n * math.simplify(expr, rules, scope)\n * math.simplify(expr, rules, scope, options)\n * math.simplify(expr, scope)\n * math.simplify(expr, scope, options)\n *\n * Examples:\n *\n * math.simplify('2 * 1 * x ^ (2 - 1)') // Node \"2 * x\"\n * math.simplify('2 * 3 * x', {x: 4}) // Node \"24\"\n * const f = math.parse('2 * 1 * x ^ (2 - 1)')\n * math.simplify(f) // Node \"2 * x\"\n * math.simplify('0.4 * x', {}, {exactFractions: true}) // Node \"x * 2 / 5\"\n * math.simplify('0.4 * x', {}, {exactFractions: false}) // Node \"0.4 * x\"\n *\n * See also:\n *\n * simplifyCore, derivative, evaluate, parse, rationalize, resolve\n *\n * @param {Node | string} expr\n * The expression to be simplified\n * @param {SimplifyRule[]} [rules]\n * Optional list with custom rules\n * @param {Object} [scope] Optional scope with variables\n * @param {SimplifyOptions} [options] Optional configuration settings\n * @return {Node} Returns the simplified form of `expr`\n */\n typed.addConversion({\n from: 'Object',\n to: 'Map',\n convert: createMap\n });\n var simplify = typed('simplify', {\n Node: _simplify,\n 'Node, Map': (expr, scope) => _simplify(expr, false, scope),\n 'Node, Map, Object': (expr, scope, options) => _simplify(expr, false, scope, options),\n 'Node, Array': _simplify,\n 'Node, Array, Map': _simplify,\n 'Node, Array, Map, Object': _simplify\n });\n typed.removeConversion({\n from: 'Object',\n to: 'Map',\n convert: createMap\n });\n simplify.defaultContext = defaultContext;\n simplify.realContext = realContext;\n simplify.positiveContext = positiveContext;\n function removeParens(node) {\n return node.transform(function (node) {\n return isParenthesisNode(node) ? removeParens(node.content) : node;\n });\n }\n\n // All constants that are allowed in rules\n var SUPPORTED_CONSTANTS = {\n true: true,\n false: true,\n e: true,\n i: true,\n Infinity: true,\n LN2: true,\n LN10: true,\n LOG2E: true,\n LOG10E: true,\n NaN: true,\n phi: true,\n pi: true,\n SQRT1_2: true,\n SQRT2: true,\n tau: true\n // null: false,\n // undefined: false,\n // version: false,\n };\n\n // Array of strings, used to build the ruleSet.\n // Each l (left side) and r (right side) are parsed by\n // the expression parser into a node tree.\n // Left hand sides are matched to subtrees within the\n // expression to be parsed and replaced with the right\n // hand side.\n // TODO: Add support for constraints on constants (either in the form of a '=' expression or a callback [callback allows things like comparing symbols alphabetically])\n // To evaluate lhs constants for rhs constants, use: { l: 'c1+c2', r: 'c3', evaluate: 'c3 = c1 + c2' }. Multiple assignments are separated by ';' in block format.\n // It is possible to get into an infinite loop with conflicting rules\n simplify.rules = [simplifyCore,\n // { l: 'n+0', r: 'n' }, // simplifyCore\n // { l: 'n^0', r: '1' }, // simplifyCore\n // { l: '0*n', r: '0' }, // simplifyCore\n // { l: 'n/n', r: '1'}, // simplifyCore\n // { l: 'n^1', r: 'n' }, // simplifyCore\n // { l: '+n1', r:'n1' }, // simplifyCore\n // { l: 'n--n1', r:'n+n1' }, // simplifyCore\n {\n l: 'log(e)',\n r: '1'\n },\n // temporary rules\n // Note initially we tend constants to the right because like-term\n // collection prefers the left, and we would rather collect nonconstants\n {\n s: 'n-n1 -> n+-n1',\n // temporarily replace 'subtract' so we can further flatten the 'add' operator\n assuming: {\n subtract: {\n total: true\n }\n }\n }, {\n s: 'n-n -> 0',\n // partial alternative when we can't always subtract\n assuming: {\n subtract: {\n total: false\n }\n }\n }, {\n s: '-(cl*v) -> v * (-cl)',\n // make non-constant terms positive\n assuming: {\n multiply: {\n commutative: true\n },\n subtract: {\n total: true\n }\n }\n }, {\n s: '-(cl*v) -> (-cl) * v',\n // non-commutative version, part 1\n assuming: {\n multiply: {\n commutative: false\n },\n subtract: {\n total: true\n }\n }\n }, {\n s: '-(v*cl) -> v * (-cl)',\n // non-commutative version, part 2\n assuming: {\n multiply: {\n commutative: false\n },\n subtract: {\n total: true\n }\n }\n }, {\n l: '-(n1/n2)',\n r: '-n1/n2'\n }, {\n l: '-v',\n r: 'v * (-1)'\n },\n // finish making non-constant terms positive\n {\n l: '(n1 + n2)*(-1)',\n r: 'n1*(-1) + n2*(-1)',\n repeat: true\n },\n // expand negations to achieve as much sign cancellation as possible\n {\n l: 'n/n1^n2',\n r: 'n*n1^-n2'\n },\n // temporarily replace 'divide' so we can further flatten the 'multiply' operator\n {\n l: 'n/n1',\n r: 'n*n1^-1'\n }, {\n s: '(n1*n2)^n3 -> n1^n3 * n2^n3',\n assuming: {\n multiply: {\n commutative: true\n }\n }\n }, {\n s: '(n1*n2)^(-1) -> n2^(-1) * n1^(-1)',\n assuming: {\n multiply: {\n commutative: false\n }\n }\n },\n // expand nested exponentiation\n {\n s: '(n ^ n1) ^ n2 -> n ^ (n1 * n2)',\n assuming: {\n divide: {\n total: true\n }\n } // 1/(1/n) = n needs 1/n to exist\n },\n // collect like factors; into a sum, only do this for nonconstants\n {\n l: ' vd * ( vd * n1 + n2)',\n r: 'vd^2 * n1 + vd * n2'\n }, {\n s: ' vd * (vd^n4 * n1 + n2) -> vd^(1+n4) * n1 + vd * n2',\n assuming: {\n divide: {\n total: true\n }\n } // v*1/v = v^(1+-1) needs 1/v\n }, {\n s: 'vd^n3 * ( vd * n1 + n2) -> vd^(n3+1) * n1 + vd^n3 * n2',\n assuming: {\n divide: {\n total: true\n }\n }\n }, {\n s: 'vd^n3 * (vd^n4 * n1 + n2) -> vd^(n3+n4) * n1 + vd^n3 * n2',\n assuming: {\n divide: {\n total: true\n }\n }\n }, {\n l: 'n*n',\n r: 'n^2'\n }, {\n s: 'n * n^n1 -> n^(n1+1)',\n assuming: {\n divide: {\n total: true\n }\n } // n*1/n = n^(-1+1) needs 1/n\n }, {\n s: 'n^n1 * n^n2 -> n^(n1+n2)',\n assuming: {\n divide: {\n total: true\n }\n } // ditto for n^2*1/n^2\n },\n // Unfortunately, to deal with more complicated cancellations, it\n // becomes necessary to simplify constants twice per pass. It's not\n // terribly expensive compared to matching rules, so this should not\n // pose a performance problem.\n simplifyConstant,\n // First: before collecting like terms\n\n // collect like terms\n {\n s: 'n+n -> 2*n',\n assuming: {\n add: {\n total: true\n }\n } // 2 = 1 + 1 needs to exist\n }, {\n l: 'n+-n',\n r: '0'\n }, {\n l: 'vd*n + vd',\n r: 'vd*(n+1)'\n },\n // NOTE: leftmost position is special:\n {\n l: 'n3*n1 + n3*n2',\n r: 'n3*(n1+n2)'\n },\n // All sub-monomials tried there.\n {\n l: 'n3^(-n4)*n1 + n3 * n2',\n r: 'n3^(-n4)*(n1 + n3^(n4+1) *n2)'\n }, {\n l: 'n3^(-n4)*n1 + n3^n5 * n2',\n r: 'n3^(-n4)*(n1 + n3^(n4+n5)*n2)'\n },\n // noncommutative additional cases (term collection & factoring)\n {\n s: 'n*vd + vd -> (n+1)*vd',\n assuming: {\n multiply: {\n commutative: false\n }\n }\n }, {\n s: 'vd + n*vd -> (1+n)*vd',\n assuming: {\n multiply: {\n commutative: false\n }\n }\n }, {\n s: 'n1*n3 + n2*n3 -> (n1+n2)*n3',\n assuming: {\n multiply: {\n commutative: false\n }\n }\n }, {\n s: 'n^n1 * n -> n^(n1+1)',\n assuming: {\n divide: {\n total: true\n },\n multiply: {\n commutative: false\n }\n }\n }, {\n s: 'n1*n3^(-n4) + n2 * n3 -> (n1 + n2*n3^(n4 + 1))*n3^(-n4)',\n assuming: {\n multiply: {\n commutative: false\n }\n }\n }, {\n s: 'n1*n3^(-n4) + n2 * n3^n5 -> (n1 + n2*n3^(n4 + n5))*n3^(-n4)',\n assuming: {\n multiply: {\n commutative: false\n }\n }\n }, {\n l: 'n*cd + cd',\n r: '(n+1)*cd'\n }, {\n s: 'cd*n + cd -> cd*(n+1)',\n assuming: {\n multiply: {\n commutative: false\n }\n }\n }, {\n s: 'cd + cd*n -> cd*(1+n)',\n assuming: {\n multiply: {\n commutative: false\n }\n }\n }, simplifyConstant,\n // Second: before returning expressions to \"standard form\"\n\n // make factors positive (and undo 'make non-constant terms positive')\n {\n s: '(-n)*n1 -> -(n*n1)',\n assuming: {\n subtract: {\n total: true\n }\n }\n }, {\n s: 'n1*(-n) -> -(n1*n)',\n // in case * non-commutative\n assuming: {\n subtract: {\n total: true\n },\n multiply: {\n commutative: false\n }\n }\n },\n // final ordering of constants\n {\n s: 'ce+ve -> ve+ce',\n assuming: {\n add: {\n commutative: true\n }\n },\n imposeContext: {\n add: {\n commutative: false\n }\n }\n }, {\n s: 'vd*cd -> cd*vd',\n assuming: {\n multiply: {\n commutative: true\n }\n },\n imposeContext: {\n multiply: {\n commutative: false\n }\n }\n },\n // undo temporary rules\n // { l: '(-1) * n', r: '-n' }, // #811 added test which proved this is redundant\n {\n l: 'n+-n1',\n r: 'n-n1'\n },\n // undo replace 'subtract'\n {\n l: 'n+-(n1)',\n r: 'n-(n1)'\n }, {\n s: 'n*(n1^-1) -> n/n1',\n // undo replace 'divide'; for * commutative\n assuming: {\n multiply: {\n commutative: true\n }\n } // o.w. / not conventional\n }, {\n s: 'n*n1^-n2 -> n/n1^n2',\n assuming: {\n multiply: {\n commutative: true\n }\n } // o.w. / not conventional\n }, {\n s: 'n^-1 -> 1/n',\n assuming: {\n multiply: {\n commutative: true\n }\n } // o.w. / not conventional\n }, {\n l: 'n^1',\n r: 'n'\n },\n // can be produced by power cancellation\n {\n s: 'n*(n1/n2) -> (n*n1)/n2',\n // '*' before '/'\n assuming: {\n multiply: {\n associative: true\n }\n }\n }, {\n s: 'n-(n1+n2) -> n-n1-n2',\n // '-' before '+'\n assuming: {\n addition: {\n associative: true,\n commutative: true\n }\n }\n },\n // { l: '(n1/n2)/n3', r: 'n1/(n2*n3)' },\n // { l: '(n*n1)/(n*n2)', r: 'n1/n2' },\n\n // simplifyConstant can leave an extra factor of 1, which can always\n // be eliminated, since the identity always commutes\n {\n l: '1*n',\n r: 'n',\n imposeContext: {\n multiply: {\n commutative: true\n }\n }\n }, {\n s: 'n1/(n2/n3) -> (n1*n3)/n2',\n assuming: {\n multiply: {\n associative: true\n }\n }\n }, {\n l: 'n1/(-n2)',\n r: '-n1/n2'\n }];\n\n /**\n * Takes any rule object as allowed by the specification in simplify\n * and puts it in a standard form used by applyRule\n */\n function _canonicalizeRule(ruleObject, context) {\n var newRule = {};\n if (ruleObject.s) {\n var lr = ruleObject.s.split('->');\n if (lr.length === 2) {\n newRule.l = lr[0];\n newRule.r = lr[1];\n } else {\n throw SyntaxError('Could not parse rule: ' + ruleObject.s);\n }\n } else {\n newRule.l = ruleObject.l;\n newRule.r = ruleObject.r;\n }\n newRule.l = removeParens(parse(newRule.l));\n newRule.r = removeParens(parse(newRule.r));\n for (var prop of ['imposeContext', 'repeat', 'assuming']) {\n if (prop in ruleObject) {\n newRule[prop] = ruleObject[prop];\n }\n }\n if (ruleObject.evaluate) {\n newRule.evaluate = parse(ruleObject.evaluate);\n }\n if (isAssociative(newRule.l, context)) {\n var nonCommutative = !isCommutative(newRule.l, context);\n var leftExpandsym;\n // Gen. the LHS placeholder used in this NC-context specific expansion rules\n if (nonCommutative) leftExpandsym = _getExpandPlaceholderSymbol();\n var makeNode = createMakeNodeFunction(newRule.l);\n var expandsym = _getExpandPlaceholderSymbol();\n newRule.expanded = {};\n newRule.expanded.l = makeNode([newRule.l, expandsym]);\n // Push the expandsym into the deepest possible branch.\n // This helps to match the newRule against nodes returned from getSplits() later on.\n flatten(newRule.expanded.l, context);\n unflattenr(newRule.expanded.l, context);\n newRule.expanded.r = makeNode([newRule.r, expandsym]);\n\n // In and for a non-commutative context, attempting with yet additional expansion rules makes\n // way for more matches cases of multi-arg expressions; such that associative rules (such as\n // 'n*n -> n^2') can be applied to exprs. such as 'a * b * b' and 'a * b * b * a'.\n if (nonCommutative) {\n // 'Non-commutative' 1: LHS (placeholder) only\n newRule.expandedNC1 = {};\n newRule.expandedNC1.l = makeNode([leftExpandsym, newRule.l]);\n newRule.expandedNC1.r = makeNode([leftExpandsym, newRule.r]);\n // 'Non-commutative' 2: farmost LHS and RHS placeholders\n newRule.expandedNC2 = {};\n newRule.expandedNC2.l = makeNode([leftExpandsym, newRule.expanded.l]);\n newRule.expandedNC2.r = makeNode([leftExpandsym, newRule.expanded.r]);\n }\n }\n return newRule;\n }\n\n /**\n * Parse the string array of rules into nodes\n *\n * Example syntax for rules:\n *\n * Position constants to the left in a product:\n * { l: 'n1 * c1', r: 'c1 * n1' }\n * n1 is any Node, and c1 is a ConstantNode.\n *\n * Apply difference of squares formula:\n * { l: '(n1 - n2) * (n1 + n2)', r: 'n1^2 - n2^2' }\n * n1, n2 mean any Node.\n *\n * Short hand notation:\n * 'n1 * c1 -> c1 * n1'\n */\n function _buildRules(rules, context) {\n // Array of rules to be used to simplify expressions\n var ruleSet = [];\n for (var i = 0; i < rules.length; i++) {\n var rule = rules[i];\n var newRule = void 0;\n var ruleType = typeof rule;\n switch (ruleType) {\n case 'string':\n rule = {\n s: rule\n };\n /* falls through */\n case 'object':\n newRule = _canonicalizeRule(rule, context);\n break;\n case 'function':\n newRule = rule;\n break;\n default:\n throw TypeError('Unsupported type of rule: ' + ruleType);\n }\n // console.log('Adding rule: ' + rules[i])\n // console.log(newRule)\n ruleSet.push(newRule);\n }\n return ruleSet;\n }\n var _lastsym = 0;\n function _getExpandPlaceholderSymbol() {\n return new SymbolNode('_p' + _lastsym++);\n }\n function _simplify(expr, rules) {\n var scope = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : createEmptyMap();\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var debug = options.consoleDebug;\n rules = _buildRules(rules || simplify.rules, options.context);\n var res = resolve(expr, scope);\n res = removeParens(res);\n var visited = {};\n var str = res.toString({\n parenthesis: 'all'\n });\n while (!visited[str]) {\n visited[str] = true;\n _lastsym = 0; // counter for placeholder symbols\n var laststr = str;\n if (debug) console.log('Working on: ', str);\n for (var i = 0; i < rules.length; i++) {\n var rulestr = '';\n if (typeof rules[i] === 'function') {\n res = rules[i](res, options);\n if (debug) rulestr = rules[i].name;\n } else {\n flatten(res, options.context);\n res = applyRule(res, rules[i], options.context);\n if (debug) {\n rulestr = \"\".concat(rules[i].l.toString(), \" -> \").concat(rules[i].r.toString());\n }\n }\n if (debug) {\n var newstr = res.toString({\n parenthesis: 'all'\n });\n if (newstr !== laststr) {\n console.log('Applying', rulestr, 'produced', newstr);\n laststr = newstr;\n }\n }\n /* Use left-heavy binary tree internally,\n * since custom rule functions may expect it\n */\n unflattenl(res, options.context);\n }\n str = res.toString({\n parenthesis: 'all'\n });\n }\n return res;\n }\n function mapRule(nodes, rule, context) {\n var resNodes = nodes;\n if (nodes) {\n for (var i = 0; i < nodes.length; ++i) {\n var newNode = applyRule(nodes[i], rule, context);\n if (newNode !== nodes[i]) {\n if (resNodes === nodes) {\n resNodes = nodes.slice();\n }\n resNodes[i] = newNode;\n }\n }\n }\n return resNodes;\n }\n\n /**\n * Returns a simplfied form of node, or the original node if no simplification was possible.\n *\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} node\n * @param {Object | Function} rule\n * @param {Object} context -- information about assumed properties of operators\n * @return {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} The simplified form of `expr`, or the original node if no simplification was possible.\n */\n function applyRule(node, rule, context) {\n // console.log('Entering applyRule(\"', rule.l.toString({parenthesis:'all'}), '->', rule.r.toString({parenthesis:'all'}), '\",', node.toString({parenthesis:'all'}),')')\n\n // check that the assumptions for this rule are satisfied by the current\n // context:\n if (rule.assuming) {\n for (var symbol in rule.assuming) {\n for (var property in rule.assuming[symbol]) {\n if (hasProperty(symbol, property, context) !== rule.assuming[symbol][property]) {\n return node;\n }\n }\n }\n }\n var mergedContext = mergeContext(rule.imposeContext, context);\n\n // Do not clone node unless we find a match\n var res = node;\n\n // First replace our child nodes with their simplified versions\n // If a child could not be simplified, applying the rule to it\n // will have no effect since the node is returned unchanged\n if (res instanceof OperatorNode || res instanceof FunctionNode) {\n var newArgs = mapRule(res.args, rule, context);\n if (newArgs !== res.args) {\n res = res.clone();\n res.args = newArgs;\n }\n } else if (res instanceof ParenthesisNode) {\n if (res.content) {\n var newContent = applyRule(res.content, rule, context);\n if (newContent !== res.content) {\n res = new ParenthesisNode(newContent);\n }\n }\n } else if (res instanceof ArrayNode) {\n var newItems = mapRule(res.items, rule, context);\n if (newItems !== res.items) {\n res = new ArrayNode(newItems);\n }\n } else if (res instanceof AccessorNode) {\n var newObj = res.object;\n if (res.object) {\n newObj = applyRule(res.object, rule, context);\n }\n var newIndex = res.index;\n if (res.index) {\n newIndex = applyRule(res.index, rule, context);\n }\n if (newObj !== res.object || newIndex !== res.index) {\n res = new AccessorNode(newObj, newIndex);\n }\n } else if (res instanceof IndexNode) {\n var newDims = mapRule(res.dimensions, rule, context);\n if (newDims !== res.dimensions) {\n res = new IndexNode(newDims);\n }\n } else if (res instanceof ObjectNode) {\n var changed = false;\n var newProps = {};\n for (var prop in res.properties) {\n newProps[prop] = applyRule(res.properties[prop], rule, context);\n if (newProps[prop] !== res.properties[prop]) {\n changed = true;\n }\n }\n if (changed) {\n res = new ObjectNode(newProps);\n }\n }\n\n // Try to match a rule against this node\n var repl = rule.r;\n var matches = _ruleMatch(rule.l, res, mergedContext)[0];\n\n // If the rule is associative operator, we can try matching it while allowing additional terms.\n // This allows us to match rules like 'n+n' to the expression '(1+x)+x' or even 'x+1+x' if the operator is commutative.\n if (!matches && rule.expanded) {\n repl = rule.expanded.r;\n matches = _ruleMatch(rule.expanded.l, res, mergedContext)[0];\n }\n // Additional, non-commutative context expansion-rules\n if (!matches && rule.expandedNC1) {\n repl = rule.expandedNC1.r;\n matches = _ruleMatch(rule.expandedNC1.l, res, mergedContext)[0];\n if (!matches) {\n // Existence of NC1 implies NC2\n repl = rule.expandedNC2.r;\n matches = _ruleMatch(rule.expandedNC2.l, res, mergedContext)[0];\n }\n }\n if (matches) {\n // const before = res.toString({parenthesis: 'all'})\n\n // Create a new node by cloning the rhs of the matched rule\n // we keep any implicit multiplication state if relevant\n var implicit = res.implicit;\n res = repl.clone();\n if (implicit && 'implicit' in repl) {\n res.implicit = true;\n }\n\n // Replace placeholders with their respective nodes without traversing deeper into the replaced nodes\n res = res.transform(function (node) {\n if (node.isSymbolNode && hasOwnProperty(matches.placeholders, node.name)) {\n return matches.placeholders[node.name].clone();\n } else {\n return node;\n }\n });\n\n // const after = res.toString({parenthesis: 'all'})\n // console.log('Simplified ' + before + ' to ' + after)\n }\n if (rule.repeat && res !== node) {\n res = applyRule(res, rule, context);\n }\n return res;\n }\n\n /**\n * Get (binary) combinations of a flattened binary node\n * e.g. +(node1, node2, node3) -> [\n * +(node1, +(node2, node3)),\n * +(node2, +(node1, node3)),\n * +(node3, +(node1, node2))]\n *\n */\n function getSplits(node, context) {\n var res = [];\n var right, rightArgs;\n var makeNode = createMakeNodeFunction(node);\n if (isCommutative(node, context)) {\n for (var i = 0; i < node.args.length; i++) {\n rightArgs = node.args.slice(0);\n rightArgs.splice(i, 1);\n right = rightArgs.length === 1 ? rightArgs[0] : makeNode(rightArgs);\n res.push(makeNode([node.args[i], right]));\n }\n } else {\n // Keep order, but try all parenthesizations\n for (var _i = 1; _i < node.args.length; _i++) {\n var left = node.args[0];\n if (_i > 1) {\n left = makeNode(node.args.slice(0, _i));\n }\n rightArgs = node.args.slice(_i);\n right = rightArgs.length === 1 ? rightArgs[0] : makeNode(rightArgs);\n res.push(makeNode([left, right]));\n }\n }\n return res;\n }\n\n /**\n * Returns the set union of two match-placeholders or null if there is a conflict.\n */\n function mergeMatch(match1, match2) {\n var res = {\n placeholders: {}\n };\n\n // Some matches may not have placeholders; this is OK\n if (!match1.placeholders && !match2.placeholders) {\n return res;\n } else if (!match1.placeholders) {\n return match2;\n } else if (!match2.placeholders) {\n return match1;\n }\n\n // Placeholders with the same key must match exactly\n for (var key in match1.placeholders) {\n if (hasOwnProperty(match1.placeholders, key)) {\n res.placeholders[key] = match1.placeholders[key];\n if (hasOwnProperty(match2.placeholders, key)) {\n if (!_exactMatch(match1.placeholders[key], match2.placeholders[key])) {\n return null;\n }\n }\n }\n }\n for (var _key in match2.placeholders) {\n if (hasOwnProperty(match2.placeholders, _key)) {\n res.placeholders[_key] = match2.placeholders[_key];\n }\n }\n return res;\n }\n\n /**\n * Combine two lists of matches by applying mergeMatch to the cartesian product of two lists of matches.\n * Each list represents matches found in one child of a node.\n */\n function combineChildMatches(list1, list2) {\n var res = [];\n if (list1.length === 0 || list2.length === 0) {\n return res;\n }\n var merged;\n for (var i1 = 0; i1 < list1.length; i1++) {\n for (var i2 = 0; i2 < list2.length; i2++) {\n merged = mergeMatch(list1[i1], list2[i2]);\n if (merged) {\n res.push(merged);\n }\n }\n }\n return res;\n }\n\n /**\n * Combine multiple lists of matches by applying mergeMatch to the cartesian product of two lists of matches.\n * Each list represents matches found in one child of a node.\n * Returns a list of unique matches.\n */\n function mergeChildMatches(childMatches) {\n if (childMatches.length === 0) {\n return childMatches;\n }\n var sets = childMatches.reduce(combineChildMatches);\n var uniqueSets = [];\n var unique = {};\n for (var i = 0; i < sets.length; i++) {\n var s = JSON.stringify(sets[i], replacer);\n if (!unique[s]) {\n unique[s] = true;\n uniqueSets.push(sets[i]);\n }\n }\n return uniqueSets;\n }\n\n /**\n * Determines whether node matches rule.\n *\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} rule\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} node\n * @param {Object} context -- provides assumed properties of operators\n * @param {Boolean} isSplit -- whether we are in process of splitting an\n * n-ary operator node into possible binary combinations.\n * Defaults to false.\n * @return {Object} Information about the match, if it exists.\n */\n function _ruleMatch(rule, node, context, isSplit) {\n // console.log('Entering _ruleMatch(' + JSON.stringify(rule) + ', ' + JSON.stringify(node) + ')')\n // console.log('rule = ' + rule)\n // console.log('node = ' + node)\n\n // console.log('Entering _ruleMatch(', rule.toString({parenthesis:'all'}), ', ', node.toString({parenthesis:'all'}), ', ', context, ')')\n var res = [{\n placeholders: {}\n }];\n if (rule instanceof OperatorNode && node instanceof OperatorNode || rule instanceof FunctionNode && node instanceof FunctionNode) {\n // If the rule is an OperatorNode or a FunctionNode, then node must match exactly\n if (rule instanceof OperatorNode) {\n if (rule.op !== node.op || rule.fn !== node.fn) {\n return [];\n }\n } else if (rule instanceof FunctionNode) {\n if (rule.name !== node.name) {\n return [];\n }\n }\n\n // rule and node match. Search the children of rule and node.\n if (node.args.length === 1 && rule.args.length === 1 || !isAssociative(node, context) && node.args.length === rule.args.length || isSplit) {\n // Expect non-associative operators to match exactly,\n // except in any order if operator is commutative\n var childMatches = [];\n for (var i = 0; i < rule.args.length; i++) {\n var childMatch = _ruleMatch(rule.args[i], node.args[i], context);\n if (childMatch.length === 0) {\n // Child did not match, so stop searching immediately\n break;\n }\n // The child matched, so add the information returned from the child to our result\n childMatches.push(childMatch);\n }\n if (childMatches.length !== rule.args.length) {\n if (!isCommutative(node, context) ||\n // exact match in order needed\n rule.args.length === 1) {\n // nothing to commute\n return [];\n }\n if (rule.args.length > 2) {\n /* Need to generate all permutations and try them.\n * It's a bit complicated, and unlikely to come up since there\n * are very few ternary or higher operators. So punt for now.\n */\n throw new Error('permuting >2 commutative non-associative rule arguments not yet implemented');\n }\n /* Exactly two arguments, try them reversed */\n var leftMatch = _ruleMatch(rule.args[0], node.args[1], context);\n if (leftMatch.length === 0) {\n return [];\n }\n var rightMatch = _ruleMatch(rule.args[1], node.args[0], context);\n if (rightMatch.length === 0) {\n return [];\n }\n childMatches = [leftMatch, rightMatch];\n }\n res = mergeChildMatches(childMatches);\n } else if (node.args.length >= 2 && rule.args.length === 2) {\n // node is flattened, rule is not\n // Associative operators/functions can be split in different ways so we check if the rule\n // matches for each of them and return their union.\n var splits = getSplits(node, context);\n var splitMatches = [];\n for (var _i2 = 0; _i2 < splits.length; _i2++) {\n var matchSet = _ruleMatch(rule, splits[_i2], context, true); // recursing at the same tree depth here\n splitMatches = splitMatches.concat(matchSet);\n }\n return splitMatches;\n } else if (rule.args.length > 2) {\n throw Error('Unexpected non-binary associative function: ' + rule.toString());\n } else {\n // Incorrect number of arguments in rule and node, so no match\n return [];\n }\n } else if (rule instanceof SymbolNode) {\n // If the rule is a SymbolNode, then it carries a special meaning\n // according to the first one or two characters of the symbol node name.\n // These meanings are expalined in the documentation for simplify()\n if (rule.name.length === 0) {\n throw new Error('Symbol in rule has 0 length...!?');\n }\n if (SUPPORTED_CONSTANTS[rule.name]) {\n // built-in constant must match exactly\n if (rule.name !== node.name) {\n return [];\n }\n } else {\n // wildcards are composed of up to two alphabetic or underscore characters\n switch (rule.name[1] >= 'a' && rule.name[1] <= 'z' ? rule.name.substring(0, 2) : rule.name[0]) {\n case 'n':\n case '_p':\n // rule matches _anything_, so assign this node to the rule.name placeholder\n // Assign node to the rule.name placeholder.\n // Our parent will check for matches among placeholders.\n res[0].placeholders[rule.name] = node;\n break;\n case 'c':\n case 'cl':\n // rule matches a ConstantNode\n if (isConstantNode(node)) {\n res[0].placeholders[rule.name] = node;\n } else {\n // mis-match: rule does not encompass current node\n return [];\n }\n break;\n case 'v':\n // rule matches anything other than a ConstantNode\n if (!isConstantNode(node)) {\n res[0].placeholders[rule.name] = node;\n } else {\n // mis-match: rule does not encompass current node\n return [];\n }\n break;\n case 'vl':\n // rule matches VariableNode\n if (isVariableNode(node)) {\n res[0].placeholders[rule.name] = node;\n } else {\n // mis-match: rule does not encompass current node\n return [];\n }\n break;\n case 'cd':\n // rule matches a ConstantNode or unaryMinus-wrapped ConstantNode\n if (isNumericNode(node)) {\n res[0].placeholders[rule.name] = node;\n } else {\n // mis-match: rule does not encompass current node\n return [];\n }\n break;\n case 'vd':\n // rule matches anything other than a ConstantNode or unaryMinus-wrapped ConstantNode\n if (!isNumericNode(node)) {\n res[0].placeholders[rule.name] = node;\n } else {\n // mis-match: rule does not encompass current node\n return [];\n }\n break;\n case 'ce':\n // rule matches expressions that have a constant value\n if (isConstantExpression(node)) {\n res[0].placeholders[rule.name] = node;\n } else {\n // mis-match: rule does not encompass current node\n return [];\n }\n break;\n case 've':\n // rule matches expressions that do not have a constant value\n if (!isConstantExpression(node)) {\n res[0].placeholders[rule.name] = node;\n } else {\n // mis-match: rule does not encompass current node\n return [];\n }\n break;\n default:\n throw new Error('Invalid symbol in rule: ' + rule.name);\n }\n }\n } else if (rule instanceof ConstantNode) {\n // Literal constant must match exactly\n if (!equal(rule.value, node.value)) {\n return [];\n }\n } else {\n // Some other node was encountered which we aren't prepared for, so no match\n return [];\n }\n\n // It's a match!\n\n // console.log('_ruleMatch(' + rule.toString() + ', ' + node.toString() + ') found a match')\n return res;\n }\n\n /**\n * Determines whether p and q (and all their children nodes) are identical.\n *\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} p\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} q\n * @return {Object} Information about the match, if it exists.\n */\n function _exactMatch(p, q) {\n if (p instanceof ConstantNode && q instanceof ConstantNode) {\n if (!equal(p.value, q.value)) {\n return false;\n }\n } else if (p instanceof SymbolNode && q instanceof SymbolNode) {\n if (p.name !== q.name) {\n return false;\n }\n } else if (p instanceof OperatorNode && q instanceof OperatorNode || p instanceof FunctionNode && q instanceof FunctionNode) {\n if (p instanceof OperatorNode) {\n if (p.op !== q.op || p.fn !== q.fn) {\n return false;\n }\n } else if (p instanceof FunctionNode) {\n if (p.name !== q.name) {\n return false;\n }\n }\n if (p.args.length !== q.args.length) {\n return false;\n }\n for (var i = 0; i < p.args.length; i++) {\n if (!_exactMatch(p.args[i], q.args[i])) {\n return false;\n }\n }\n } else {\n return false;\n }\n return true;\n }\n return simplify;\n});", "import { isFraction, isMatrix, isNode, isArrayNode, isConstantNode, isIndexNode, isObjectNode, isOperatorNode } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nimport { safeNumberType } from '../../utils/number.js';\nimport { createUtil } from './simplify/util.js';\nimport { noBignumber, noFraction } from '../../utils/noop.js';\nvar name = 'simplifyConstant';\nvar dependencies = ['typed', 'config', 'mathWithTransform', 'matrix', '?fraction', '?bignumber', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'SymbolNode'];\nexport var createSimplifyConstant = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n mathWithTransform,\n matrix,\n fraction,\n bignumber,\n AccessorNode,\n ArrayNode,\n ConstantNode,\n FunctionNode,\n IndexNode,\n ObjectNode,\n OperatorNode,\n SymbolNode\n } = _ref;\n var {\n isCommutative,\n isAssociative,\n allChildren,\n createMakeNodeFunction\n } = createUtil({\n FunctionNode,\n OperatorNode,\n SymbolNode\n });\n\n /**\n * simplifyConstant() takes a mathjs expression (either a Node representing\n * a parse tree or a string which it parses to produce a node), and replaces\n * any subexpression of it consisting entirely of constants with the computed\n * value of that subexpression.\n *\n * Syntax:\n *\n * math.simplifyConstant(expr)\n * math.simplifyConstant(expr, options)\n *\n * Examples:\n *\n * math.simplifyConstant('x + 4*3/6') // Node \"x + 2\"\n * math.simplifyConstant('z cos(0)') // Node \"z 1\"\n * math.simplifyConstant('(5.2 + 1.08)t', {exactFractions: false}) // Node \"6.28 t\"\n *\n * See also:\n *\n * simplify, simplifyCore, resolve, derivative\n *\n * @param {Node | string} node\n * The expression to be simplified\n * @param {Object} options\n * Simplification options, as per simplify()\n * @return {Node} Returns expression with constant subexpressions evaluated\n */\n var simplifyConstant = typed('simplifyConstant', {\n Node: node => _ensureNode(foldFraction(node, {})),\n 'Node, Object': function Node_Object(expr, options) {\n return _ensureNode(foldFraction(expr, options));\n }\n });\n function _removeFractions(thing) {\n if (isFraction(thing)) {\n return thing.valueOf();\n }\n if (thing instanceof Array) {\n return thing.map(_removeFractions);\n }\n if (isMatrix(thing)) {\n return matrix(_removeFractions(thing.valueOf()));\n }\n return thing;\n }\n function _eval(fnname, args, options) {\n try {\n return mathWithTransform[fnname].apply(null, args);\n } catch (ignore) {\n // sometimes the implicit type conversion causes the evaluation to fail, so we'll try again after removing Fractions\n args = args.map(_removeFractions);\n return _toNumber(mathWithTransform[fnname].apply(null, args), options);\n }\n }\n var _toNode = typed({\n Fraction: _fractionToNode,\n number: function number(n) {\n if (n < 0) {\n return unaryMinusNode(new ConstantNode(-n));\n }\n return new ConstantNode(n);\n },\n BigNumber: function BigNumber(n) {\n if (n < 0) {\n return unaryMinusNode(new ConstantNode(-n));\n }\n return new ConstantNode(n); // old parameters: (n.toString(), 'number')\n },\n bigint: function bigint(n) {\n if (n < 0n) {\n return unaryMinusNode(new ConstantNode(-n));\n }\n return new ConstantNode(n);\n },\n Complex: function Complex(s) {\n throw new Error('Cannot convert Complex number to Node');\n },\n string: function string(s) {\n return new ConstantNode(s);\n },\n Matrix: function Matrix(m) {\n return new ArrayNode(m.valueOf().map(e => _toNode(e)));\n }\n });\n function _ensureNode(thing) {\n if (isNode(thing)) {\n return thing;\n }\n return _toNode(thing);\n }\n\n // convert a number to a fraction only if it can be expressed exactly,\n // and when both numerator and denominator are small enough\n function _exactFraction(n, options) {\n var exactFractions = options && options.exactFractions !== false;\n if (exactFractions && isFinite(n) && fraction) {\n var f = fraction(n);\n var fractionsLimit = options && typeof options.fractionsLimit === 'number' ? options.fractionsLimit : Infinity; // no limit by default\n\n if (f.valueOf() === n && f.n < fractionsLimit && f.d < fractionsLimit) {\n return f;\n }\n }\n return n;\n }\n\n // Convert numbers to a preferred number type in preference order: Fraction, number, Complex\n // BigNumbers are left alone\n var _toNumber = typed({\n 'string, Object': function string_Object(s, options) {\n var numericType = safeNumberType(s, config);\n if (numericType === 'BigNumber') {\n if (bignumber === undefined) {\n noBignumber();\n }\n return bignumber(s);\n } else if (numericType === 'bigint') {\n return BigInt(s);\n } else if (numericType === 'Fraction') {\n if (fraction === undefined) {\n noFraction();\n }\n return fraction(s);\n } else {\n var n = parseFloat(s);\n return _exactFraction(n, options);\n }\n },\n 'Fraction, Object': function Fraction_Object(s, options) {\n return s;\n },\n // we don't need options here\n\n 'BigNumber, Object': function BigNumber_Object(s, options) {\n return s;\n },\n // we don't need options here\n\n 'number, Object': function number_Object(s, options) {\n return _exactFraction(s, options);\n },\n 'bigint, Object': function bigint_Object(s, options) {\n return s;\n },\n 'Complex, Object': function Complex_Object(s, options) {\n if (s.im !== 0) {\n return s;\n }\n return _exactFraction(s.re, options);\n },\n 'Matrix, Object': function Matrix_Object(s, options) {\n return matrix(_exactFraction(s.valueOf()));\n },\n 'Array, Object': function Array_Object(s, options) {\n return s.map(_exactFraction);\n }\n });\n function unaryMinusNode(n) {\n return new OperatorNode('-', 'unaryMinus', [n]);\n }\n function _fractionToNode(f) {\n // note: we convert await from bigint values, because bigint values gives issues with divisions: 1n/2n=0n and not 0.5\n var fromBigInt = value => config.number === 'BigNumber' && bignumber ? bignumber(value) : Number(value);\n var numeratorValue = f.s * f.n;\n var numeratorNode = numeratorValue < 0n ? new OperatorNode('-', 'unaryMinus', [new ConstantNode(-fromBigInt(numeratorValue))]) : new ConstantNode(fromBigInt(numeratorValue));\n return f.d === 1n ? numeratorNode : new OperatorNode('/', 'divide', [numeratorNode, new ConstantNode(fromBigInt(f.d))]);\n }\n\n /* Handles constant indexing of ArrayNodes, matrices, and ObjectNodes */\n function _foldAccessor(obj, index, options) {\n if (!isIndexNode(index)) {\n // don't know what to do with that...\n return new AccessorNode(_ensureNode(obj), _ensureNode(index));\n }\n if (isArrayNode(obj) || isMatrix(obj)) {\n var remainingDims = Array.from(index.dimensions);\n /* We will resolve constant indices one at a time, looking\n * just in the first or second dimensions because (a) arrays\n * of more than two dimensions are likely rare, and (b) pulling\n * out the third or higher dimension would be pretty intricate.\n * The price is that we miss simplifying [..3d array][x,y,1]\n */\n while (remainingDims.length > 0) {\n if (isConstantNode(remainingDims[0]) && typeof remainingDims[0].value !== 'string') {\n var first = _toNumber(remainingDims.shift().value, options);\n if (isArrayNode(obj)) {\n obj = obj.items[first - 1];\n } else {\n // matrix\n obj = obj.valueOf()[first - 1];\n if (obj instanceof Array) {\n obj = matrix(obj);\n }\n }\n } else if (remainingDims.length > 1 && isConstantNode(remainingDims[1]) && typeof remainingDims[1].value !== 'string') {\n var second = _toNumber(remainingDims[1].value, options);\n var tryItems = [];\n var fromItems = isArrayNode(obj) ? obj.items : obj.valueOf();\n for (var item of fromItems) {\n if (isArrayNode(item)) {\n tryItems.push(item.items[second - 1]);\n } else if (isMatrix(obj)) {\n tryItems.push(item[second - 1]);\n } else {\n break;\n }\n }\n if (tryItems.length === fromItems.length) {\n if (isArrayNode(obj)) {\n obj = new ArrayNode(tryItems);\n } else {\n // matrix\n obj = matrix(tryItems);\n }\n remainingDims.splice(1, 1);\n } else {\n // extracting slice along 2nd dimension failed, give up\n break;\n }\n } else {\n // neither 1st or 2nd dimension is constant, give up\n break;\n }\n }\n if (remainingDims.length === index.dimensions.length) {\n /* No successful constant indexing */\n return new AccessorNode(_ensureNode(obj), index);\n }\n if (remainingDims.length > 0) {\n /* Indexed some but not all dimensions */\n index = new IndexNode(remainingDims);\n return new AccessorNode(_ensureNode(obj), index);\n }\n /* All dimensions were constant, access completely resolved */\n return obj;\n }\n if (isObjectNode(obj) && index.dimensions.length === 1 && isConstantNode(index.dimensions[0])) {\n var key = index.dimensions[0].value;\n if (key in obj.properties) {\n return obj.properties[key];\n }\n return new ConstantNode(); // undefined\n }\n /* Don't know how to index this sort of obj, at least not with this index */\n return new AccessorNode(_ensureNode(obj), index);\n }\n\n /*\n * Create a binary tree from a list of Fractions and Nodes.\n * Tries to fold Fractions by evaluating them until the first Node in the list is hit, so\n * `args` should be sorted to have the Fractions at the start (if the operator is commutative).\n * @param args - list of Fractions and Nodes\n * @param fn - evaluator for the binary operation evaluator that accepts two Fractions\n * @param makeNode - creates a binary OperatorNode/FunctionNode from a list of child Nodes\n * if args.length is 1, returns args[0]\n * @return - Either a Node representing a binary expression or Fraction\n */\n function foldOp(fn, args, makeNode, options) {\n var first = args.shift();\n\n // In the following reduction, sofar always has one of the three following\n // forms: [NODE], [CONSTANT], or [NODE, CONSTANT]\n var reduction = args.reduce((sofar, next) => {\n if (!isNode(next)) {\n var last = sofar.pop();\n if (isNode(last)) {\n return [last, next];\n }\n // Two constants in a row, try to fold them into one\n try {\n sofar.push(_eval(fn, [last, next], options));\n return sofar;\n } catch (ignoreandcontinue) {\n sofar.push(last);\n // fall through to Node case\n }\n }\n\n // Encountered a Node, or failed folding --\n // collapse everything so far into a single tree:\n sofar.push(_ensureNode(sofar.pop()));\n var newtree = sofar.length === 1 ? sofar[0] : makeNode(sofar);\n return [makeNode([newtree, _ensureNode(next)])];\n }, [first]);\n if (reduction.length === 1) {\n return reduction[0];\n }\n // Might end up with a tree and a constant at the end:\n return makeNode([reduction[0], _toNode(reduction[1])]);\n }\n\n // destroys the original node and returns a folded one\n function foldFraction(node, options) {\n switch (node.type) {\n case 'SymbolNode':\n return node;\n case 'ConstantNode':\n switch (typeof node.value) {\n case 'number':\n return _toNumber(node.value, options);\n case 'bigint':\n return _toNumber(node.value, options);\n case 'string':\n return node.value;\n default:\n if (!isNaN(node.value)) return _toNumber(node.value, options);\n }\n return node;\n case 'FunctionNode':\n if (mathWithTransform[node.name] && mathWithTransform[node.name].rawArgs) {\n return node;\n }\n {\n // Process operators as OperatorNode\n var operatorFunctions = ['add', 'multiply'];\n if (!operatorFunctions.includes(node.name)) {\n var args = node.args.map(arg => foldFraction(arg, options));\n\n // If all args are numbers\n if (!args.some(isNode)) {\n try {\n return _eval(node.name, args, options);\n } catch (ignoreandcontinue) {}\n }\n\n // Size of a matrix does not depend on entries\n if (node.name === 'size' && args.length === 1 && isArrayNode(args[0])) {\n var sz = [];\n var section = args[0];\n while (isArrayNode(section)) {\n sz.push(section.items.length);\n section = section.items[0];\n }\n return matrix(sz);\n }\n\n // Convert all args to nodes and construct a symbolic function call\n return new FunctionNode(node.name, args.map(_ensureNode));\n } else {\n // treat as operator\n }\n }\n /* falls through */\n case 'OperatorNode':\n {\n var fn = node.fn.toString();\n var _args;\n var res;\n var makeNode = createMakeNodeFunction(node);\n if (isOperatorNode(node) && node.isUnary()) {\n _args = [foldFraction(node.args[0], options)];\n if (!isNode(_args[0])) {\n res = _eval(fn, _args, options);\n } else {\n res = makeNode(_args);\n }\n } else if (isAssociative(node, options.context)) {\n _args = allChildren(node, options.context);\n _args = _args.map(arg => foldFraction(arg, options));\n if (isCommutative(fn, options.context)) {\n // commutative binary operator\n var consts = [];\n var vars = [];\n for (var i = 0; i < _args.length; i++) {\n if (!isNode(_args[i])) {\n consts.push(_args[i]);\n } else {\n vars.push(_args[i]);\n }\n }\n if (consts.length > 1) {\n res = foldOp(fn, consts, makeNode, options);\n vars.unshift(res);\n res = foldOp(fn, vars, makeNode, options);\n } else {\n // we won't change the children order since it's not neccessary\n res = foldOp(fn, _args, makeNode, options);\n }\n } else {\n // non-commutative binary operator\n res = foldOp(fn, _args, makeNode, options);\n }\n } else {\n // non-associative binary operator\n _args = node.args.map(arg => foldFraction(arg, options));\n res = foldOp(fn, _args, makeNode, options);\n }\n return res;\n }\n case 'ParenthesisNode':\n // remove the uneccessary parenthesis\n return foldFraction(node.content, options);\n case 'AccessorNode':\n return _foldAccessor(foldFraction(node.object, options), foldFraction(node.index, options), options);\n case 'ArrayNode':\n {\n var foldItems = node.items.map(item => foldFraction(item, options));\n if (foldItems.some(isNode)) {\n return new ArrayNode(foldItems.map(_ensureNode));\n }\n /* All literals -- return a Matrix so we can operate on it */\n return matrix(foldItems);\n }\n case 'IndexNode':\n {\n return new IndexNode(node.dimensions.map(n => simplifyConstant(n, options)));\n }\n case 'ObjectNode':\n {\n var foldProps = {};\n for (var prop in node.properties) {\n foldProps[prop] = simplifyConstant(node.properties[prop], options);\n }\n return new ObjectNode(foldProps);\n }\n case 'AssignmentNode':\n /* falls through */\n case 'BlockNode':\n /* falls through */\n case 'FunctionAssignmentNode':\n /* falls through */\n case 'RangeNode':\n /* falls through */\n case 'ConditionalNode':\n /* falls through */\n default:\n throw new Error(\"Unimplemented node type in simplifyConstant: \".concat(node.type));\n }\n }\n return simplifyConstant;\n});", "import { isAccessorNode, isArrayNode, isConstantNode, isFunctionNode, isIndexNode, isObjectNode, isOperatorNode } from '../../utils/is.js';\nimport { getOperator } from '../../expression/operators.js';\nimport { createUtil } from './simplify/util.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'simplifyCore';\nvar dependencies = ['typed', 'parse', 'equal', 'isZero', 'add', 'subtract', 'multiply', 'divide', 'pow', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'ParenthesisNode', 'SymbolNode'];\nexport var createSimplifyCore = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n parse,\n equal,\n isZero,\n add,\n subtract,\n multiply,\n divide,\n pow,\n AccessorNode,\n ArrayNode,\n ConstantNode,\n FunctionNode,\n IndexNode,\n ObjectNode,\n OperatorNode,\n ParenthesisNode,\n SymbolNode\n } = _ref;\n var node0 = new ConstantNode(0);\n var node1 = new ConstantNode(1);\n var nodeT = new ConstantNode(true);\n var nodeF = new ConstantNode(false);\n // test if a node will always have a boolean value (true/false)\n // not sure if this list is complete\n function isAlwaysBoolean(node) {\n return isOperatorNode(node) && ['and', 'not', 'or'].includes(node.op);\n }\n var {\n hasProperty,\n isCommutative\n } = createUtil({\n FunctionNode,\n OperatorNode,\n SymbolNode\n });\n /**\n * simplifyCore() performs single pass simplification suitable for\n * applications requiring ultimate performance. To roughly summarize,\n * it handles cases along the lines of simplifyConstant() but where\n * knowledge of a single argument is sufficient to determine the value.\n * In contrast, simplify() extends simplifyCore() with additional passes\n * to provide deeper simplification (such as gathering like terms).\n *\n * Specifically, simplifyCore:\n *\n * * Converts all function calls with operator equivalents to their\n * operator forms.\n * * Removes operators or function calls that are guaranteed to have no\n * effect (such as unary '+').\n * * Removes double unary '-', '~', and 'not'\n * * Eliminates addition/subtraction of 0 and multiplication/division/powers\n * by 1 or 0.\n * * Converts addition of a negation into subtraction.\n * * Eliminates logical operations with constant true or false leading\n * arguments.\n * * Puts constants on the left of a product, if multiplication is\n * considered commutative by the options (which is the default)\n *\n * Syntax:\n *\n * math.simplifyCore(expr)\n * math.simplifyCore(expr, options)\n *\n * Examples:\n *\n * const f = math.parse('2 * 1 * x ^ (1 - 0)')\n * math.simplifyCore(f) // Node \"2 * x\"\n * math.simplify('2 * 1 * x ^ (1 - 0)', [math.simplifyCore]) // Node \"2 * x\"\n *\n * See also:\n *\n * simplify, simplifyConstant, resolve, derivative\n *\n * @param {Node | string} node\n * The expression to be simplified\n * @param {Object} options\n * Simplification options, as per simplify()\n * @return {Node} Returns expression with basic simplifications applied\n */\n function _simplifyCore(nodeToSimplify) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var context = options ? options.context : undefined;\n if (hasProperty(nodeToSimplify, 'trivial', context)) {\n // This node does nothing if it has only one argument, so if so,\n // return that argument simplified\n if (isFunctionNode(nodeToSimplify) && nodeToSimplify.args.length === 1) {\n return _simplifyCore(nodeToSimplify.args[0], options);\n }\n // For other node types, we try the generic methods\n var simpChild = false;\n var childCount = 0;\n nodeToSimplify.forEach(c => {\n ++childCount;\n if (childCount === 1) {\n simpChild = _simplifyCore(c, options);\n }\n });\n if (childCount === 1) {\n return simpChild;\n }\n }\n var node = nodeToSimplify;\n if (isFunctionNode(node)) {\n var op = getOperator(node.name);\n if (op) {\n // Replace FunctionNode with a new OperatorNode\n if (node.args.length > 2 && hasProperty(node, 'associative', context)) {\n // unflatten into binary operations since that's what simplifyCore handles\n while (node.args.length > 2) {\n var last = node.args.pop();\n var seclast = node.args.pop();\n node.args.push(new OperatorNode(op, node.name, [last, seclast]));\n }\n }\n node = new OperatorNode(op, node.name, node.args);\n } else {\n return new FunctionNode(_simplifyCore(node.fn), node.args.map(n => _simplifyCore(n, options)));\n }\n }\n if (isOperatorNode(node) && node.isUnary()) {\n var a0 = _simplifyCore(node.args[0], options);\n if (node.op === '~') {\n // bitwise not\n if (isOperatorNode(a0) && a0.isUnary() && a0.op === '~') {\n return a0.args[0];\n }\n }\n if (node.op === 'not') {\n // logical not\n if (isOperatorNode(a0) && a0.isUnary() && a0.op === 'not') {\n // Has the effect of turning the argument into a boolean\n // So can only eliminate the double negation if\n // the inside is already boolean\n if (isAlwaysBoolean(a0.args[0])) {\n return a0.args[0];\n }\n }\n }\n var finish = true;\n if (node.op === '-') {\n // unary minus\n if (isOperatorNode(a0)) {\n if (a0.isBinary() && a0.fn === 'subtract') {\n node = new OperatorNode('-', 'subtract', [a0.args[1], a0.args[0]]);\n finish = false; // continue to process the new binary node\n }\n if (a0.isUnary() && a0.op === '-') {\n return a0.args[0];\n }\n }\n }\n if (finish) return new OperatorNode(node.op, node.fn, [a0]);\n }\n if (isOperatorNode(node) && node.isBinary()) {\n var _a = _simplifyCore(node.args[0], options);\n var a1 = _simplifyCore(node.args[1], options);\n if (node.op === '+') {\n if (isConstantNode(_a) && isZero(_a.value)) {\n return a1;\n }\n if (isConstantNode(a1) && isZero(a1.value)) {\n return _a;\n }\n if (isOperatorNode(a1) && a1.isUnary() && a1.op === '-') {\n a1 = a1.args[0];\n node = new OperatorNode('-', 'subtract', [_a, a1]);\n }\n }\n if (node.op === '-') {\n if (isOperatorNode(a1) && a1.isUnary() && a1.op === '-') {\n return _simplifyCore(new OperatorNode('+', 'add', [_a, a1.args[0]]), options);\n }\n if (isConstantNode(_a) && isZero(_a.value)) {\n return _simplifyCore(new OperatorNode('-', 'unaryMinus', [a1]));\n }\n if (isConstantNode(a1) && isZero(a1.value)) {\n return _a;\n }\n return new OperatorNode(node.op, node.fn, [_a, a1]);\n }\n if (node.op === '*') {\n if (isConstantNode(_a)) {\n if (isZero(_a.value)) {\n return node0;\n } else if (equal(_a.value, 1)) {\n return a1;\n }\n }\n if (isConstantNode(a1)) {\n if (isZero(a1.value)) {\n return node0;\n } else if (equal(a1.value, 1)) {\n return _a;\n }\n if (isCommutative(node, context)) {\n return new OperatorNode(node.op, node.fn, [a1, _a], node.implicit); // constants on left\n }\n }\n return new OperatorNode(node.op, node.fn, [_a, a1], node.implicit);\n }\n if (node.op === '/') {\n if (isConstantNode(_a) && isZero(_a.value)) {\n return node0;\n }\n if (isConstantNode(a1) && equal(a1.value, 1)) {\n return _a;\n }\n return new OperatorNode(node.op, node.fn, [_a, a1]);\n }\n if (node.op === '^') {\n if (isConstantNode(a1)) {\n if (isZero(a1.value)) {\n return node1;\n } else if (equal(a1.value, 1)) {\n return _a;\n }\n }\n }\n if (node.op === 'and') {\n if (isConstantNode(_a)) {\n if (_a.value) {\n if (isAlwaysBoolean(a1)) return a1;\n if (isConstantNode(a1)) {\n return a1.value ? nodeT : nodeF;\n }\n } else {\n return nodeF;\n }\n }\n if (isConstantNode(a1)) {\n if (a1.value) {\n if (isAlwaysBoolean(_a)) return _a;\n } else {\n return nodeF;\n }\n }\n }\n if (node.op === 'or') {\n if (isConstantNode(_a)) {\n if (_a.value) {\n return nodeT;\n } else {\n if (isAlwaysBoolean(a1)) return a1;\n }\n }\n if (isConstantNode(a1)) {\n if (a1.value) {\n return nodeT;\n } else {\n if (isAlwaysBoolean(_a)) return _a;\n }\n }\n }\n return new OperatorNode(node.op, node.fn, [_a, a1]);\n }\n if (isOperatorNode(node)) {\n return new OperatorNode(node.op, node.fn, node.args.map(a => _simplifyCore(a, options)));\n }\n if (isArrayNode(node)) {\n return new ArrayNode(node.items.map(n => _simplifyCore(n, options)));\n }\n if (isAccessorNode(node)) {\n return new AccessorNode(_simplifyCore(node.object, options), _simplifyCore(node.index, options));\n }\n if (isIndexNode(node)) {\n return new IndexNode(node.dimensions.map(n => _simplifyCore(n, options)));\n }\n if (isObjectNode(node)) {\n var newProps = {};\n for (var prop in node.properties) {\n newProps[prop] = _simplifyCore(node.properties[prop], options);\n }\n return new ObjectNode(newProps);\n }\n // cannot simplify\n return node;\n }\n return typed(name, {\n Node: _simplifyCore,\n 'Node,Object': _simplifyCore\n });\n});", "import { createMap } from '../../utils/map.js';\nimport { isFunctionNode, isNode, isOperatorNode, isParenthesisNode, isSymbolNode } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'resolve';\nvar dependencies = ['typed', 'parse', 'ConstantNode', 'FunctionNode', 'OperatorNode', 'ParenthesisNode'];\nexport var createResolve = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n parse,\n ConstantNode,\n FunctionNode,\n OperatorNode,\n ParenthesisNode\n } = _ref;\n /**\n * resolve(expr, scope) replaces variable nodes with their scoped values\n *\n * Syntax:\n *\n * math.resolve(expr, scope)\n *\n * Examples:\n *\n * math.resolve('x + y', {x:1, y:2}) // Node '1 + 2'\n * math.resolve(math.parse('x+y'), {x:1, y:2}) // Node '1 + 2'\n * math.simplify('x+y', {x:2, y: math.parse('x+x')}).toString() // \"6\"\n *\n * See also:\n *\n * simplify, evaluate\n *\n * @param {Node | Node[]} node\n * The expression tree (or trees) to be simplified\n * @param {Object} scope\n * Scope specifying variables to be resolved\n * @return {Node | Node[]} Returns `node` with variables recursively substituted.\n * @throws {ReferenceError}\n * If there is a cyclic dependency among the variables in `scope`,\n * resolution is impossible and a ReferenceError is thrown.\n */\n function _resolve(node, scope) {\n var within = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Set();\n // note `within`:\n // `within` is not documented, since it is for internal cycle\n // detection only\n if (!scope) {\n return node;\n }\n if (isSymbolNode(node)) {\n if (within.has(node.name)) {\n var variables = Array.from(within).join(', ');\n throw new ReferenceError(\"recursive loop of variable definitions among {\".concat(variables, \"}\"));\n }\n var value = scope.get(node.name);\n if (isNode(value)) {\n var nextWithin = new Set(within);\n nextWithin.add(node.name);\n return _resolve(value, scope, nextWithin);\n } else if (typeof value === 'number') {\n return parse(String(value));\n } else if (value !== undefined) {\n return new ConstantNode(value);\n } else {\n return node;\n }\n } else if (isOperatorNode(node)) {\n var args = node.args.map(function (arg) {\n return _resolve(arg, scope, within);\n });\n return new OperatorNode(node.op, node.fn, args, node.implicit);\n } else if (isParenthesisNode(node)) {\n return new ParenthesisNode(_resolve(node.content, scope, within));\n } else if (isFunctionNode(node)) {\n var _args = node.args.map(function (arg) {\n return _resolve(arg, scope, within);\n });\n return new FunctionNode(node.name, _args);\n }\n\n // Otherwise just recursively resolve any children (might also work\n // for some of the above special cases)\n return node.map(child => _resolve(child, scope, within));\n }\n return typed('resolve', {\n Node: _resolve,\n 'Node, Map | null | undefined': _resolve,\n 'Node, Object': (n, scope) => _resolve(n, createMap(scope)),\n // For arrays and matrices, we map `self` rather than `_resolve`\n // because resolve is fairly expensive anyway, and this way\n // we get nice error messages if one entry in the array has wrong type.\n 'Array | Matrix': typed.referToSelf(self => A => A.map(n => self(n))),\n 'Array | Matrix, null | undefined': typed.referToSelf(self => A => A.map(n => self(n))),\n 'Array, Object': typed.referTo('Array,Map', selfAM => (A, scope) => selfAM(A, createMap(scope))),\n 'Matrix, Object': typed.referTo('Matrix,Map', selfMM => (A, scope) => selfMM(A, createMap(scope))),\n 'Array | Matrix, Map': typed.referToSelf(self => (A, scope) => A.map(n => self(n, scope)))\n });\n});", "import { isConstantNode } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'symbolicEqual';\nvar dependencies = ['parse', 'simplify', 'typed', 'OperatorNode'];\nexport var createSymbolicEqual = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n parse,\n simplify,\n typed,\n OperatorNode\n } = _ref;\n /**\n * Attempts to determine if two expressions are symbolically equal, i.e.\n * one is the result of valid algebraic manipulations on the other.\n * Currently, this simply checks if the difference of the two expressions\n * simplifies down to 0. So there are two important caveats:\n * 1. whether two expressions are symbolically equal depends on the\n * manipulations allowed. Therefore, this function takes an optional\n * third argument, which are the options that control the behavior\n * as documented for the `simplify()` function.\n * 2. it is in general intractable to find the minimal simplification of\n * an arbitrarily complicated expression. So while a `true` value\n * of `symbolicEqual` ensures that the two expressions can be manipulated\n * to match each other, a `false` value does not absolutely rule this out.\n *\n * Syntax:\n *\n * math.symbolicEqual(expr1, expr2)\n * math.symbolicEqual(expr1, expr2, options)\n *\n * Examples:\n *\n * math.symbolicEqual('x*y', 'y*x') // Returns true\n * math.symbolicEqual('x*y', 'y*x', {context: {multiply: {commutative: false}}}) // Returns false\n * math.symbolicEqual('x/y', '(y*x^(-1))^(-1)') // Returns true\n * math.symbolicEqual('abs(x)','x') // Returns false\n * math.symbolicEqual('abs(x)','x', simplify.positiveContext) // Returns true\n *\n * See also:\n *\n * simplify, evaluate\n *\n * @param {Node|string} expr1 The first expression to compare\n * @param {Node|string} expr2 The second expression to compare\n * @param {Object} [options] Optional option object, passed to simplify\n * @returns {boolean}\n * Returns true if a valid manipulation making the expressions equal\n * is found.\n */\n function _symbolicEqual(e1, e2) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var diff = new OperatorNode('-', 'subtract', [e1, e2]);\n var simplified = simplify(diff, {}, options);\n return isConstantNode(simplified) && !simplified.value;\n }\n return typed(name, {\n 'Node, Node': _symbolicEqual,\n 'Node, Node, Object': _symbolicEqual\n });\n});", "import { isConstantNode, typeOf } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nimport { safeNumberType } from '../../utils/number.js';\nvar name = 'derivative';\nvar dependencies = ['typed', 'config', 'parse', 'simplify', 'equal', 'isZero', 'numeric', 'ConstantNode', 'FunctionNode', 'OperatorNode', 'ParenthesisNode', 'SymbolNode'];\nexport var createDerivative = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n parse,\n simplify,\n equal,\n isZero,\n numeric,\n ConstantNode,\n FunctionNode,\n OperatorNode,\n ParenthesisNode,\n SymbolNode\n } = _ref;\n /**\n * Takes the derivative of an expression expressed in parser Nodes.\n * The derivative will be taken over the supplied variable in the\n * second parameter. If there are multiple variables in the expression,\n * it will return a partial derivative.\n *\n * This uses rules of differentiation which can be found here:\n *\n * - [Differentiation rules (Wikipedia)](https://en.wikipedia.org/wiki/Differentiation_rules)\n *\n * Syntax:\n *\n * math.derivative(expr, variable)\n * math.derivative(expr, variable, options)\n *\n * Examples:\n *\n * math.derivative('x^2', 'x') // Node '2 * x'\n * math.derivative('x^2', 'x', {simplify: false}) // Node '2 * 1 * x ^ (2 - 1)'\n * math.derivative('sin(2x)', 'x')) // Node '2 * cos(2 * x)'\n * math.derivative('2*x', 'x').evaluate() // number 2\n * math.derivative('x^2', 'x').evaluate({x: 4}) // number 8\n * const f = math.parse('x^2')\n * const x = math.parse('x')\n * math.derivative(f, x) // Node {2 * x}\n *\n * See also:\n *\n * simplify, parse, evaluate\n *\n * @param {Node | string} expr The expression to differentiate\n * @param {SymbolNode | string} variable The variable over which to differentiate\n * @param {{simplify: boolean}} [options]\n * There is one option available, `simplify`, which\n * is true by default. When false, output will not\n * be simplified.\n * @return {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} The derivative of `expr`\n */\n function plainDerivative(expr, variable) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n simplify: true\n };\n var constNodes = {};\n constTag(constNodes, expr, variable.name);\n var res = _derivative(expr, constNodes);\n return options.simplify ? simplify(res) : res;\n }\n function parseIdentifier(string) {\n var symbol = parse(string);\n if (!symbol.isSymbolNode) {\n throw new TypeError('Invalid variable. ' + \"Cannot parse \".concat(JSON.stringify(string), \" into a variable in function derivative\"));\n }\n return symbol;\n }\n var derivative = typed(name, {\n 'Node, SymbolNode': plainDerivative,\n 'Node, SymbolNode, Object': plainDerivative,\n 'Node, string': (node, symbol) => plainDerivative(node, parseIdentifier(symbol)),\n 'Node, string, Object': (node, symbol, options) => plainDerivative(node, parseIdentifier(symbol), options)\n\n /* TODO: implement and test syntax with order of derivatives -> implement as an option {order: number}\n 'Node, SymbolNode, ConstantNode': function (expr, variable, {order}) {\n let res = expr\n for (let i = 0; i < order; i++) {\n let constNodes = {}\n constTag(constNodes, expr, variable.name)\n res = _derivative(res, constNodes)\n }\n return res\n }\n */\n });\n derivative._simplify = true;\n derivative.toTex = function (deriv) {\n return _derivTex.apply(null, deriv.args);\n };\n\n // FIXME: move the toTex method of derivative to latex.js. Difficulty is that it relies on parse.\n // NOTE: the optional \"order\" parameter here is currently unused\n var _derivTex = typed('_derivTex', {\n 'Node, SymbolNode': function Node_SymbolNode(expr, x) {\n if (isConstantNode(expr) && typeOf(expr.value) === 'string') {\n return _derivTex(parse(expr.value).toString(), x.toString(), 1);\n } else {\n return _derivTex(expr.toTex(), x.toString(), 1);\n }\n },\n 'Node, ConstantNode': function Node_ConstantNode(expr, x) {\n if (typeOf(x.value) === 'string') {\n return _derivTex(expr, parse(x.value));\n } else {\n throw new Error(\"The second parameter to 'derivative' is a non-string constant\");\n }\n },\n 'Node, SymbolNode, ConstantNode': function Node_SymbolNode_ConstantNode(expr, x, order) {\n return _derivTex(expr.toString(), x.name, order.value);\n },\n 'string, string, number': function string_string_number(expr, x, order) {\n var d;\n if (order === 1) {\n d = '{d\\\\over d' + x + '}';\n } else {\n d = '{d^{' + order + '}\\\\over d' + x + '^{' + order + '}}';\n }\n return d + \"\\\\left[\".concat(expr, \"\\\\right]\");\n }\n });\n\n /**\n * Does a depth-first search on the expression tree to identify what Nodes\n * are constants (e.g. 2 + 2), and stores the ones that are constants in\n * constNodes. Classification is done as follows:\n *\n * 1. ConstantNodes are constants.\n * 2. If there exists a SymbolNode, of which we are differentiating over,\n * in the subtree it is not constant.\n *\n * @param {Object} constNodes Holds the nodes that are constant\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} node\n * @param {string} varName Variable that we are differentiating\n * @return {boolean} if node is constant\n */\n // TODO: can we rewrite constTag into a pure function?\n var constTag = typed('constTag', {\n 'Object, ConstantNode, string': function Object_ConstantNode_string(constNodes, node) {\n constNodes[node] = true;\n return true;\n },\n 'Object, SymbolNode, string': function Object_SymbolNode_string(constNodes, node, varName) {\n // Treat other variables like constants. For reasoning, see:\n // https://en.wikipedia.org/wiki/Partial_derivative\n if (node.name !== varName) {\n constNodes[node] = true;\n return true;\n }\n return false;\n },\n 'Object, ParenthesisNode, string': function Object_ParenthesisNode_string(constNodes, node, varName) {\n return constTag(constNodes, node.content, varName);\n },\n 'Object, FunctionAssignmentNode, string': function Object_FunctionAssignmentNode_string(constNodes, node, varName) {\n if (!node.params.includes(varName)) {\n constNodes[node] = true;\n return true;\n }\n return constTag(constNodes, node.expr, varName);\n },\n 'Object, FunctionNode | OperatorNode, string': function Object_FunctionNode__OperatorNode_string(constNodes, node, varName) {\n if (node.args.length > 0) {\n var isConst = constTag(constNodes, node.args[0], varName);\n for (var i = 1; i < node.args.length; ++i) {\n isConst = constTag(constNodes, node.args[i], varName) && isConst;\n }\n if (isConst) {\n constNodes[node] = true;\n return true;\n }\n }\n return false;\n }\n });\n\n /**\n * Applies differentiation rules.\n *\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} node\n * @param {Object} constNodes Holds the nodes that are constant\n * @return {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} The derivative of `expr`\n */\n var _derivative = typed('_derivative', {\n 'ConstantNode, Object': function ConstantNode_Object(node) {\n return createConstantNode(0);\n },\n 'SymbolNode, Object': function SymbolNode_Object(node, constNodes) {\n if (constNodes[node] !== undefined) {\n return createConstantNode(0);\n }\n return createConstantNode(1);\n },\n 'ParenthesisNode, Object': function ParenthesisNode_Object(node, constNodes) {\n return new ParenthesisNode(_derivative(node.content, constNodes));\n },\n 'FunctionAssignmentNode, Object': function FunctionAssignmentNode_Object(node, constNodes) {\n if (constNodes[node] !== undefined) {\n return createConstantNode(0);\n }\n return _derivative(node.expr, constNodes);\n },\n 'FunctionNode, Object': function FunctionNode_Object(node, constNodes) {\n if (constNodes[node] !== undefined) {\n return createConstantNode(0);\n }\n var arg0 = node.args[0];\n var arg1;\n var div = false; // is output a fraction?\n var negative = false; // is output negative?\n\n var funcDerivative;\n switch (node.name) {\n case 'cbrt':\n // d/dx(cbrt(x)) = 1 / (3x^(2/3))\n div = true;\n funcDerivative = new OperatorNode('*', 'multiply', [createConstantNode(3), new OperatorNode('^', 'pow', [arg0, new OperatorNode('/', 'divide', [createConstantNode(2), createConstantNode(3)])])]);\n break;\n case 'sqrt':\n case 'nthRoot':\n // d/dx(sqrt(x)) = 1 / (2*sqrt(x))\n if (node.args.length === 1) {\n div = true;\n funcDerivative = new OperatorNode('*', 'multiply', [createConstantNode(2), new FunctionNode('sqrt', [arg0])]);\n } else if (node.args.length === 2) {\n // Rearrange from nthRoot(x, a) -> x^(1/a)\n arg1 = new OperatorNode('/', 'divide', [createConstantNode(1), node.args[1]]);\n\n // Is a variable?\n constNodes[arg1] = constNodes[node.args[1]];\n return _derivative(new OperatorNode('^', 'pow', [arg0, arg1]), constNodes);\n }\n break;\n case 'log10':\n arg1 = createConstantNode(10);\n /* fall through! */\n case 'log':\n if (!arg1 && node.args.length === 1) {\n // d/dx(log(x)) = 1 / x\n funcDerivative = arg0.clone();\n div = true;\n } else if (node.args.length === 1 && arg1 || node.args.length === 2 && constNodes[node.args[1]] !== undefined) {\n // d/dx(log(x, c)) = 1 / (x*ln(c))\n funcDerivative = new OperatorNode('*', 'multiply', [arg0.clone(), new FunctionNode('log', [arg1 || node.args[1]])]);\n div = true;\n } else if (node.args.length === 2) {\n // d/dx(log(f(x), g(x))) = d/dx(log(f(x)) / log(g(x)))\n return _derivative(new OperatorNode('/', 'divide', [new FunctionNode('log', [arg0]), new FunctionNode('log', [node.args[1]])]), constNodes);\n }\n break;\n case 'pow':\n if (node.args.length === 2) {\n constNodes[arg1] = constNodes[node.args[1]];\n // Pass to pow operator node parser\n return _derivative(new OperatorNode('^', 'pow', [arg0, node.args[1]]), constNodes);\n }\n break;\n case 'exp':\n // d/dx(e^x) = e^x\n funcDerivative = new FunctionNode('exp', [arg0.clone()]);\n break;\n case 'sin':\n // d/dx(sin(x)) = cos(x)\n funcDerivative = new FunctionNode('cos', [arg0.clone()]);\n break;\n case 'cos':\n // d/dx(cos(x)) = -sin(x)\n funcDerivative = new OperatorNode('-', 'unaryMinus', [new FunctionNode('sin', [arg0.clone()])]);\n break;\n case 'tan':\n // d/dx(tan(x)) = sec(x)^2\n funcDerivative = new OperatorNode('^', 'pow', [new FunctionNode('sec', [arg0.clone()]), createConstantNode(2)]);\n break;\n case 'sec':\n // d/dx(sec(x)) = sec(x)tan(x)\n funcDerivative = new OperatorNode('*', 'multiply', [node, new FunctionNode('tan', [arg0.clone()])]);\n break;\n case 'csc':\n // d/dx(csc(x)) = -csc(x)cot(x)\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [node, new FunctionNode('cot', [arg0.clone()])]);\n break;\n case 'cot':\n // d/dx(cot(x)) = -csc(x)^2\n negative = true;\n funcDerivative = new OperatorNode('^', 'pow', [new FunctionNode('csc', [arg0.clone()]), createConstantNode(2)]);\n break;\n case 'asin':\n // d/dx(asin(x)) = 1 / sqrt(1 - x^2)\n div = true;\n funcDerivative = new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [createConstantNode(1), new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)])])]);\n break;\n case 'acos':\n // d/dx(acos(x)) = -1 / sqrt(1 - x^2)\n div = true;\n negative = true;\n funcDerivative = new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [createConstantNode(1), new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)])])]);\n break;\n case 'atan':\n // d/dx(atan(x)) = 1 / (x^2 + 1)\n div = true;\n funcDerivative = new OperatorNode('+', 'add', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)]);\n break;\n case 'asec':\n // d/dx(asec(x)) = 1 / (|x|*sqrt(x^2 - 1))\n div = true;\n funcDerivative = new OperatorNode('*', 'multiply', [new FunctionNode('abs', [arg0.clone()]), new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)])])]);\n break;\n case 'acsc':\n // d/dx(acsc(x)) = -1 / (|x|*sqrt(x^2 - 1))\n div = true;\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [new FunctionNode('abs', [arg0.clone()]), new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)])])]);\n break;\n case 'acot':\n // d/dx(acot(x)) = -1 / (x^2 + 1)\n div = true;\n negative = true;\n funcDerivative = new OperatorNode('+', 'add', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)]);\n break;\n case 'sinh':\n // d/dx(sinh(x)) = cosh(x)\n funcDerivative = new FunctionNode('cosh', [arg0.clone()]);\n break;\n case 'cosh':\n // d/dx(cosh(x)) = sinh(x)\n funcDerivative = new FunctionNode('sinh', [arg0.clone()]);\n break;\n case 'tanh':\n // d/dx(tanh(x)) = sech(x)^2\n funcDerivative = new OperatorNode('^', 'pow', [new FunctionNode('sech', [arg0.clone()]), createConstantNode(2)]);\n break;\n case 'sech':\n // d/dx(sech(x)) = -sech(x)tanh(x)\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [node, new FunctionNode('tanh', [arg0.clone()])]);\n break;\n case 'csch':\n // d/dx(csch(x)) = -csch(x)coth(x)\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [node, new FunctionNode('coth', [arg0.clone()])]);\n break;\n case 'coth':\n // d/dx(coth(x)) = -csch(x)^2\n negative = true;\n funcDerivative = new OperatorNode('^', 'pow', [new FunctionNode('csch', [arg0.clone()]), createConstantNode(2)]);\n break;\n case 'asinh':\n // d/dx(asinh(x)) = 1 / sqrt(x^2 + 1)\n div = true;\n funcDerivative = new FunctionNode('sqrt', [new OperatorNode('+', 'add', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)])]);\n break;\n case 'acosh':\n // d/dx(acosh(x)) = 1 / sqrt(x^2 - 1); XXX potentially only for x >= 1 (the real spectrum)\n div = true;\n funcDerivative = new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)])]);\n break;\n case 'atanh':\n // d/dx(atanh(x)) = 1 / (1 - x^2)\n div = true;\n funcDerivative = new OperatorNode('-', 'subtract', [createConstantNode(1), new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)])]);\n break;\n case 'asech':\n // d/dx(asech(x)) = -1 / (x*sqrt(1 - x^2))\n div = true;\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [arg0.clone(), new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [createConstantNode(1), new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)])])])]);\n break;\n case 'acsch':\n // d/dx(acsch(x)) = -1 / (|x|*sqrt(x^2 + 1))\n div = true;\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [new FunctionNode('abs', [arg0.clone()]), new FunctionNode('sqrt', [new OperatorNode('+', 'add', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)])])]);\n break;\n case 'acoth':\n // d/dx(acoth(x)) = -1 / (1 - x^2)\n div = true;\n negative = true;\n funcDerivative = new OperatorNode('-', 'subtract', [createConstantNode(1), new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)])]);\n break;\n case 'abs':\n // d/dx(abs(x)) = abs(x)/x\n funcDerivative = new OperatorNode('/', 'divide', [new FunctionNode(new SymbolNode('abs'), [arg0.clone()]), arg0.clone()]);\n break;\n case 'gamma': // Needs digamma function, d/dx(gamma(x)) = gamma(x)digamma(x)\n default:\n throw new Error('Cannot process function \"' + node.name + '\" in derivative: ' + 'the function is not supported, undefined, or the number of arguments passed to it are not supported');\n }\n var op, func;\n if (div) {\n op = '/';\n func = 'divide';\n } else {\n op = '*';\n func = 'multiply';\n }\n\n /* Apply chain rule to all functions:\n F(x) = f(g(x))\n F'(x) = g'(x)*f'(g(x)) */\n var chainDerivative = _derivative(arg0, constNodes);\n if (negative) {\n chainDerivative = new OperatorNode('-', 'unaryMinus', [chainDerivative]);\n }\n return new OperatorNode(op, func, [chainDerivative, funcDerivative]);\n },\n 'OperatorNode, Object': function OperatorNode_Object(node, constNodes) {\n if (constNodes[node] !== undefined) {\n return createConstantNode(0);\n }\n if (node.op === '+') {\n // d/dx(sum(f(x)) = sum(f'(x))\n return new OperatorNode(node.op, node.fn, node.args.map(function (arg) {\n return _derivative(arg, constNodes);\n }));\n }\n if (node.op === '-') {\n // d/dx(+/-f(x)) = +/-f'(x)\n if (node.isUnary()) {\n return new OperatorNode(node.op, node.fn, [_derivative(node.args[0], constNodes)]);\n }\n\n // Linearity of differentiation, d/dx(f(x) +/- g(x)) = f'(x) +/- g'(x)\n if (node.isBinary()) {\n return new OperatorNode(node.op, node.fn, [_derivative(node.args[0], constNodes), _derivative(node.args[1], constNodes)]);\n }\n }\n if (node.op === '*') {\n // d/dx(c*f(x)) = c*f'(x)\n var constantTerms = node.args.filter(function (arg) {\n return constNodes[arg] !== undefined;\n });\n if (constantTerms.length > 0) {\n var nonConstantTerms = node.args.filter(function (arg) {\n return constNodes[arg] === undefined;\n });\n var nonConstantNode = nonConstantTerms.length === 1 ? nonConstantTerms[0] : new OperatorNode('*', 'multiply', nonConstantTerms);\n var newArgs = constantTerms.concat(_derivative(nonConstantNode, constNodes));\n return new OperatorNode('*', 'multiply', newArgs);\n }\n\n // Product Rule, d/dx(f(x)*g(x)) = f'(x)*g(x) + f(x)*g'(x)\n return new OperatorNode('+', 'add', node.args.map(function (argOuter) {\n return new OperatorNode('*', 'multiply', node.args.map(function (argInner) {\n return argInner === argOuter ? _derivative(argInner, constNodes) : argInner.clone();\n }));\n }));\n }\n if (node.op === '/' && node.isBinary()) {\n var arg0 = node.args[0];\n var arg1 = node.args[1];\n\n // d/dx(f(x) / c) = f'(x) / c\n if (constNodes[arg1] !== undefined) {\n return new OperatorNode('/', 'divide', [_derivative(arg0, constNodes), arg1]);\n }\n\n // Reciprocal Rule, d/dx(c / f(x)) = -c(f'(x)/f(x)^2)\n if (constNodes[arg0] !== undefined) {\n return new OperatorNode('*', 'multiply', [new OperatorNode('-', 'unaryMinus', [arg0]), new OperatorNode('/', 'divide', [_derivative(arg1, constNodes), new OperatorNode('^', 'pow', [arg1.clone(), createConstantNode(2)])])]);\n }\n\n // Quotient rule, d/dx(f(x) / g(x)) = (f'(x)g(x) - f(x)g'(x)) / g(x)^2\n return new OperatorNode('/', 'divide', [new OperatorNode('-', 'subtract', [new OperatorNode('*', 'multiply', [_derivative(arg0, constNodes), arg1.clone()]), new OperatorNode('*', 'multiply', [arg0.clone(), _derivative(arg1, constNodes)])]), new OperatorNode('^', 'pow', [arg1.clone(), createConstantNode(2)])]);\n }\n if (node.op === '^' && node.isBinary()) {\n var _arg = node.args[0];\n var _arg2 = node.args[1];\n if (constNodes[_arg] !== undefined) {\n // If is secretly constant; 0^f(x) = 1 (in JS), 1^f(x) = 1\n if (isConstantNode(_arg) && (isZero(_arg.value) || equal(_arg.value, 1))) {\n return createConstantNode(0);\n }\n\n // d/dx(c^f(x)) = c^f(x)*ln(c)*f'(x)\n return new OperatorNode('*', 'multiply', [node, new OperatorNode('*', 'multiply', [new FunctionNode('log', [_arg.clone()]), _derivative(_arg2.clone(), constNodes)])]);\n }\n if (constNodes[_arg2] !== undefined) {\n if (isConstantNode(_arg2)) {\n // If is secretly constant; f(x)^0 = 1 -> d/dx(1) = 0\n if (isZero(_arg2.value)) {\n return createConstantNode(0);\n }\n // Ignore exponent; f(x)^1 = f(x)\n if (equal(_arg2.value, 1)) {\n return _derivative(_arg, constNodes);\n }\n }\n\n // Elementary Power Rule, d/dx(f(x)^c) = c*f'(x)*f(x)^(c-1)\n var powMinusOne = new OperatorNode('^', 'pow', [_arg.clone(), new OperatorNode('-', 'subtract', [_arg2, createConstantNode(1)])]);\n return new OperatorNode('*', 'multiply', [_arg2.clone(), new OperatorNode('*', 'multiply', [_derivative(_arg, constNodes), powMinusOne])]);\n }\n\n // Functional Power Rule, d/dx(f^g) = f^g*[f'*(g/f) + g'ln(f)]\n return new OperatorNode('*', 'multiply', [new OperatorNode('^', 'pow', [_arg.clone(), _arg2.clone()]), new OperatorNode('+', 'add', [new OperatorNode('*', 'multiply', [_derivative(_arg, constNodes), new OperatorNode('/', 'divide', [_arg2.clone(), _arg.clone()])]), new OperatorNode('*', 'multiply', [_derivative(_arg2, constNodes), new FunctionNode('log', [_arg.clone()])])])]);\n }\n throw new Error('Cannot process operator \"' + node.op + '\" in derivative: ' + 'the operator is not supported, undefined, or the number of arguments passed to it are not supported');\n }\n });\n\n /**\n * Helper function to create a constant node with a specific type\n * (number, BigNumber, Fraction)\n * @param {number} value\n * @param {string} [valueType]\n * @return {ConstantNode}\n */\n function createConstantNode(value, valueType) {\n return new ConstantNode(numeric(value, valueType || safeNumberType(String(value), config)));\n }\n return derivative;\n});", "import { isInteger } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'rationalize';\nvar dependencies = ['config', 'typed', 'equal', 'isZero', 'add', 'subtract', 'multiply', 'divide', 'pow', 'parse', 'simplifyConstant', 'simplifyCore', 'simplify', '?bignumber', '?fraction', 'mathWithTransform', 'matrix', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'SymbolNode', 'ParenthesisNode'];\nexport var createRationalize = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n config,\n typed,\n equal,\n isZero,\n add,\n subtract,\n multiply,\n divide,\n pow,\n parse,\n simplifyConstant,\n simplifyCore,\n simplify,\n fraction,\n bignumber,\n mathWithTransform,\n matrix,\n AccessorNode,\n ArrayNode,\n ConstantNode,\n FunctionNode,\n IndexNode,\n ObjectNode,\n OperatorNode,\n SymbolNode,\n ParenthesisNode\n } = _ref;\n /**\n * Transform a rationalizable expression in a rational fraction.\n * If rational fraction is one variable polynomial then converts\n * the numerator and denominator in canonical form, with decreasing\n * exponents, returning the coefficients of numerator.\n *\n * Syntax:\n *\n * math.rationalize(expr)\n * math.rationalize(expr, detailed)\n * math.rationalize(expr, scope)\n * math.rationalize(expr, scope, detailed)\n *\n * Examples:\n *\n * math.rationalize('sin(x)+y')\n * // Error: There is an unsolved function call\n * math.rationalize('2x/y - y/(x+1)')\n * // (2*x^2-y^2+2*x)/(x*y+y)\n * math.rationalize('(2x+1)^6')\n * // 64*x^6+192*x^5+240*x^4+160*x^3+60*x^2+12*x+1\n * math.rationalize('2x/( (2x-1) / (3x+2) ) - 5x/ ( (3x+4) / (2x^2-5) ) + 3')\n * // -20*x^4+28*x^3+104*x^2+6*x-12)/(6*x^2+5*x-4)\n * math.rationalize('x/(1-x)/(x-2)/(x-3)/(x-4) + 2x/ ( (1-2x)/(2-3x) )/ ((3-4x)/(4-5x) )') =\n * // (-30*x^7+344*x^6-1506*x^5+3200*x^4-3472*x^3+1846*x^2-381*x)/\n * // (-8*x^6+90*x^5-383*x^4+780*x^3-797*x^2+390*x-72)\n *\n * math.rationalize('x+x+x+y',{y:1}) // 3*x+1\n * math.rationalize('x+x+x+y',{}) // 3*x+y\n *\n * const ret = math.rationalize('x+x+x+y',{},true)\n * // ret.expression=3*x+y, ret.variables = [\"x\",\"y\"]\n * const ret = math.rationalize('-2+5x^2',{},true)\n * // ret.expression=5*x^2-2, ret.variables = [\"x\"], ret.coefficients=[-2,0,5]\n *\n * See also:\n *\n * simplify\n *\n * @param {Node|string} expr The expression to check if is a polynomial expression\n * @param {Object|boolean} optional scope of expression or true for already evaluated rational expression at input\n * @param {Boolean} detailed optional True if return an object, false if return expression node (default)\n *\n * @return {Object | Node} The rational polynomial of `expr` or an object\n * `{expression, numerator, denominator, variables, coefficients}`, where\n * `expression` is a `Node` with the node simplified expression,\n * `numerator` is a `Node` with the simplified numerator of expression,\n * `denominator` is a `Node` or `boolean` with the simplified denominator or `false` (if there is no denominator),\n * `variables` is an array with variable names,\n * and `coefficients` is an array with coefficients of numerator sorted by increased exponent\n * {Expression Node} node simplified expression\n *\n */\n function _rationalize(expr) {\n var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var detailed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var setRules = rulesRationalize(); // Rules for change polynomial in near canonical form\n var polyRet = polynomial(expr, scope, true, setRules.firstRules); // Check if expression is a rationalizable polynomial\n var nVars = polyRet.variables.length;\n var noExactFractions = {\n exactFractions: false\n };\n var withExactFractions = {\n exactFractions: true\n };\n expr = polyRet.expression;\n if (nVars >= 1) {\n // If expression in not a constant\n expr = expandPower(expr); // First expand power of polynomials (cannot be made from rules!)\n var sBefore; // Previous expression\n var rules;\n var eDistrDiv = true;\n var redoInic = false;\n // Apply the initial rules, including succ div rules:\n expr = simplify(expr, setRules.firstRules, {}, noExactFractions);\n var s;\n while (true) {\n // Alternate applying successive division rules and distr.div.rules\n // until there are no more changes:\n rules = eDistrDiv ? setRules.distrDivRules : setRules.sucDivRules;\n expr = simplify(expr, rules, {}, withExactFractions);\n eDistrDiv = !eDistrDiv; // Swap between Distr.Div and Succ. Div. Rules\n\n s = expr.toString();\n if (s === sBefore) {\n break; // No changes : end of the loop\n }\n redoInic = true;\n sBefore = s;\n }\n if (redoInic) {\n // Apply first rules again without succ div rules (if there are changes)\n expr = simplify(expr, setRules.firstRulesAgain, {}, noExactFractions);\n }\n // Apply final rules:\n expr = simplify(expr, setRules.finalRules, {}, noExactFractions);\n } // NVars >= 1\n\n var coefficients = [];\n var retRationalize = {};\n if (expr.type === 'OperatorNode' && expr.isBinary() && expr.op === '/') {\n // Separate numerator from denominator\n if (nVars === 1) {\n expr.args[0] = polyToCanonical(expr.args[0], coefficients);\n expr.args[1] = polyToCanonical(expr.args[1]);\n }\n if (detailed) {\n retRationalize.numerator = expr.args[0];\n retRationalize.denominator = expr.args[1];\n }\n } else {\n if (nVars === 1) {\n expr = polyToCanonical(expr, coefficients);\n }\n if (detailed) {\n retRationalize.numerator = expr;\n retRationalize.denominator = null;\n }\n }\n // nVars\n\n if (!detailed) return expr;\n retRationalize.coefficients = coefficients;\n retRationalize.variables = polyRet.variables;\n retRationalize.expression = expr;\n return retRationalize;\n }\n return typed(name, {\n Node: _rationalize,\n 'Node, boolean': (expr, detailed) => _rationalize(expr, {}, detailed),\n 'Node, Object': _rationalize,\n 'Node, Object, boolean': _rationalize\n }); // end of typed rationalize\n\n /**\n * Function to simplify an expression using an optional scope and\n * return it if the expression is a polynomial expression, i.e.\n * an expression with one or more variables and the operators\n * +, -, *, and ^, where the exponent can only be a positive integer.\n *\n * Syntax:\n *\n * polynomial(expr,scope,extended, rules)\n *\n * @param {Node | string} expr The expression to simplify and check if is polynomial expression\n * @param {object} scope Optional scope for expression simplification\n * @param {boolean} extended Optional. Default is false. When true allows divide operator.\n * @param {array} rules Optional. Default is no rule.\n *\n *\n * @return {Object}\n * {Object} node: node simplified expression\n * {Array} variables: variable names\n */\n function polynomial(expr, scope, extended, rules) {\n var variables = [];\n var node = simplify(expr, rules, scope, {\n exactFractions: false\n }); // Resolves any variables and functions with all defined parameters\n extended = !!extended;\n var oper = '+-*' + (extended ? '/' : '');\n recPoly(node);\n var retFunc = {};\n retFunc.expression = node;\n retFunc.variables = variables;\n return retFunc;\n\n // -------------------------------------------------------------------------------------------------------\n\n /**\n * Function to simplify an expression using an optional scope and\n * return it if the expression is a polynomial expression, i.e.\n * an expression with one or more variables and the operators\n * +, -, *, and ^, where the exponent can only be a positive integer.\n *\n * Syntax:\n *\n * recPoly(node)\n *\n *\n * @param {Node} node The current sub tree expression in recursion\n *\n * @return nothing, throw an exception if error\n */\n function recPoly(node) {\n var tp = node.type; // node type\n if (tp === 'FunctionNode') {\n // No function call in polynomial expression\n throw new Error('There is an unsolved function call');\n } else if (tp === 'OperatorNode') {\n if (node.op === '^') {\n // TODO: handle negative exponents like in '1/x^(-2)'\n if (node.args[1].type !== 'ConstantNode' || !isInteger(parseFloat(node.args[1].value))) {\n throw new Error('There is a non-integer exponent');\n } else {\n recPoly(node.args[0]);\n }\n } else {\n if (!oper.includes(node.op)) {\n throw new Error('Operator ' + node.op + ' invalid in polynomial expression');\n }\n for (var i = 0; i < node.args.length; i++) {\n recPoly(node.args[i]);\n }\n } // type of operator\n } else if (tp === 'SymbolNode') {\n var _name = node.name; // variable name\n var pos = variables.indexOf(_name);\n if (pos === -1) {\n // new variable in expression\n variables.push(_name);\n }\n } else if (tp === 'ParenthesisNode') {\n recPoly(node.content);\n } else if (tp !== 'ConstantNode') {\n throw new Error('type ' + tp + ' is not allowed in polynomial expression');\n }\n } // end of recPoly\n } // end of polynomial\n\n // ---------------------------------------------------------------------------------------\n /**\n * Return a rule set to rationalize an polynomial expression in rationalize\n *\n * Syntax:\n *\n * rulesRationalize()\n *\n * @return {array} rule set to rationalize an polynomial expression\n */\n function rulesRationalize() {\n var oldRules = [simplifyCore,\n // sCore\n {\n l: 'n+n',\n r: '2*n'\n }, {\n l: 'n+-n',\n r: '0'\n }, simplifyConstant,\n // sConstant\n {\n l: 'n*(n1^-1)',\n r: 'n/n1'\n }, {\n l: 'n*n1^-n2',\n r: 'n/n1^n2'\n }, {\n l: 'n1^-1',\n r: '1/n1'\n }, {\n l: 'n*(n1/n2)',\n r: '(n*n1)/n2'\n }, {\n l: '1*n',\n r: 'n'\n }];\n var rulesFirst = [{\n l: '(-n1)/(-n2)',\n r: 'n1/n2'\n },\n // Unary division\n {\n l: '(-n1)*(-n2)',\n r: 'n1*n2'\n },\n // Unary multiplication\n {\n l: 'n1--n2',\n r: 'n1+n2'\n },\n // '--' elimination\n {\n l: 'n1-n2',\n r: 'n1+(-n2)'\n },\n // Subtraction turn into add with un\uFFFDry minus\n {\n l: '(n1+n2)*n3',\n r: '(n1*n3 + n2*n3)'\n },\n // Distributive 1\n {\n l: 'n1*(n2+n3)',\n r: '(n1*n2+n1*n3)'\n },\n // Distributive 2\n {\n l: 'c1*n + c2*n',\n r: '(c1+c2)*n'\n },\n // Joining constants\n {\n l: 'c1*n + n',\n r: '(c1+1)*n'\n },\n // Joining constants\n {\n l: 'c1*n - c2*n',\n r: '(c1-c2)*n'\n },\n // Joining constants\n {\n l: 'c1*n - n',\n r: '(c1-1)*n'\n },\n // Joining constants\n {\n l: 'v/c',\n r: '(1/c)*v'\n },\n // variable/constant (new!)\n {\n l: 'v/-c',\n r: '-(1/c)*v'\n },\n // variable/constant (new!)\n {\n l: '-v*-c',\n r: 'c*v'\n },\n // Inversion constant and variable 1\n {\n l: '-v*c',\n r: '-c*v'\n },\n // Inversion constant and variable 2\n {\n l: 'v*-c',\n r: '-c*v'\n },\n // Inversion constant and variable 3\n {\n l: 'v*c',\n r: 'c*v'\n },\n // Inversion constant and variable 4\n {\n l: '-(-n1*n2)',\n r: '(n1*n2)'\n },\n // Unary propagation\n {\n l: '-(n1*n2)',\n r: '(-n1*n2)'\n },\n // Unary propagation\n {\n l: '-(-n1+n2)',\n r: '(n1-n2)'\n },\n // Unary propagation\n {\n l: '-(n1+n2)',\n r: '(-n1-n2)'\n },\n // Unary propagation\n {\n l: '(n1^n2)^n3',\n r: '(n1^(n2*n3))'\n },\n // Power to Power\n {\n l: '-(-n1/n2)',\n r: '(n1/n2)'\n },\n // Division and Unary\n {\n l: '-(n1/n2)',\n r: '(-n1/n2)'\n }]; // Divisao and Unary\n\n var rulesDistrDiv = [{\n l: '(n1/n2 + n3/n4)',\n r: '((n1*n4 + n3*n2)/(n2*n4))'\n },\n // Sum of fractions\n {\n l: '(n1/n2 + n3)',\n r: '((n1 + n3*n2)/n2)'\n },\n // Sum fraction with number 1\n {\n l: '(n1 + n2/n3)',\n r: '((n1*n3 + n2)/n3)'\n }]; // Sum fraction with number 1\n\n var rulesSucDiv = [{\n l: '(n1/(n2/n3))',\n r: '((n1*n3)/n2)'\n },\n // Division simplification\n {\n l: '(n1/n2/n3)',\n r: '(n1/(n2*n3))'\n }];\n var setRules = {}; // rules set in 4 steps.\n\n // All rules => infinite loop\n // setRules.allRules =oldRules.concat(rulesFirst,rulesDistrDiv,rulesSucDiv)\n\n setRules.firstRules = oldRules.concat(rulesFirst, rulesSucDiv); // First rule set\n setRules.distrDivRules = rulesDistrDiv; // Just distr. div. rules\n setRules.sucDivRules = rulesSucDiv; // Jus succ. div. rules\n setRules.firstRulesAgain = oldRules.concat(rulesFirst); // Last rules set without succ. div.\n\n // Division simplification\n\n // Second rule set.\n // There is no aggregate expression with parentesis, but the only variable can be scattered.\n setRules.finalRules = [simplifyCore,\n // simplify.rules[0]\n {\n l: 'n*-n',\n r: '-n^2'\n },\n // Joining multiply with power 1\n {\n l: 'n*n',\n r: 'n^2'\n },\n // Joining multiply with power 2\n simplifyConstant,\n // simplify.rules[14] old 3rd index in oldRules\n {\n l: 'n*-n^n1',\n r: '-n^(n1+1)'\n },\n // Joining multiply with power 3\n {\n l: 'n*n^n1',\n r: 'n^(n1+1)'\n },\n // Joining multiply with power 4\n {\n l: 'n^n1*-n^n2',\n r: '-n^(n1+n2)'\n },\n // Joining multiply with power 5\n {\n l: 'n^n1*n^n2',\n r: 'n^(n1+n2)'\n },\n // Joining multiply with power 6\n {\n l: 'n^n1*-n',\n r: '-n^(n1+1)'\n },\n // Joining multiply with power 7\n {\n l: 'n^n1*n',\n r: 'n^(n1+1)'\n },\n // Joining multiply with power 8\n {\n l: 'n^n1/-n',\n r: '-n^(n1-1)'\n },\n // Joining multiply with power 8\n {\n l: 'n^n1/n',\n r: 'n^(n1-1)'\n },\n // Joining division with power 1\n {\n l: 'n/-n^n1',\n r: '-n^(1-n1)'\n },\n // Joining division with power 2\n {\n l: 'n/n^n1',\n r: 'n^(1-n1)'\n },\n // Joining division with power 3\n {\n l: 'n^n1/-n^n2',\n r: 'n^(n1-n2)'\n },\n // Joining division with power 4\n {\n l: 'n^n1/n^n2',\n r: 'n^(n1-n2)'\n },\n // Joining division with power 5\n {\n l: 'n1+(-n2*n3)',\n r: 'n1-n2*n3'\n },\n // Solving useless parenthesis 1\n {\n l: 'v*(-c)',\n r: '-c*v'\n },\n // Solving useless unary 2\n {\n l: 'n1+-n2',\n r: 'n1-n2'\n },\n // Solving +- together (new!)\n {\n l: 'v*c',\n r: 'c*v'\n },\n // inversion constant with variable\n {\n l: '(n1^n2)^n3',\n r: '(n1^(n2*n3))'\n } // Power to Power\n ];\n return setRules;\n } // End rulesRationalize\n\n // ---------------------------------------------------------------------------------------\n /**\n * Expand recursively a tree node for handling with expressions with exponents\n * (it's not for constants, symbols or functions with exponents)\n * PS: The other parameters are internal for recursion\n *\n * Syntax:\n *\n * expandPower(node)\n *\n * @param {Node} node Current expression node\n * @param {node} parent Parent current node inside the recursion\n * @param (int} Parent number of chid inside the rercursion\n *\n * @return {node} node expression with all powers expanded.\n */\n function expandPower(node, parent, indParent) {\n var tp = node.type;\n var internal = arguments.length > 1; // TRUE in internal calls\n\n if (tp === 'OperatorNode' && node.isBinary()) {\n var does = false;\n var val;\n if (node.op === '^') {\n // First operator: Parenthesis or UnaryMinus\n if ((node.args[0].type === 'ParenthesisNode' || node.args[0].type === 'OperatorNode') && node.args[1].type === 'ConstantNode') {\n // Second operator: Constant\n val = parseFloat(node.args[1].value);\n does = val >= 2 && isInteger(val);\n }\n }\n if (does) {\n // Exponent >= 2\n // Before:\n // operator A --> Subtree\n // parent pow\n // constant\n //\n if (val > 2) {\n // Exponent > 2,\n // AFTER: (exponent > 2)\n // operator A --> Subtree\n // parent *\n // deep clone (operator A --> Subtree\n // pow\n // constant - 1\n //\n var nEsqTopo = node.args[0];\n var nDirTopo = new OperatorNode('^', 'pow', [node.args[0].cloneDeep(), new ConstantNode(val - 1)]);\n node = new OperatorNode('*', 'multiply', [nEsqTopo, nDirTopo]);\n } else {\n // Expo = 2 - no power\n // AFTER: (exponent = 2)\n // operator A --> Subtree\n // parent oper\n // deep clone (operator A --> Subtree)\n //\n node = new OperatorNode('*', 'multiply', [node.args[0], node.args[0].cloneDeep()]);\n }\n if (internal) {\n // Change parent references in internal recursive calls\n if (indParent === 'content') {\n parent.content = node;\n } else {\n parent.args[indParent] = node;\n }\n }\n } // does\n } // binary OperatorNode\n\n if (tp === 'ParenthesisNode') {\n // Recursion\n expandPower(node.content, node, 'content');\n } else if (tp !== 'ConstantNode' && tp !== 'SymbolNode') {\n for (var i = 0; i < node.args.length; i++) {\n expandPower(node.args[i], node, i);\n }\n }\n if (!internal) {\n // return the root node\n return node;\n }\n } // End expandPower\n\n // ---------------------------------------------------------------------------------------\n /**\n * Auxilary function for rationalize\n * Convert near canonical polynomial in one variable in a canonical polynomial\n * with one term for each exponent in decreasing order\n *\n * Syntax:\n *\n * polyToCanonical(node [, coefficients])\n *\n * @param {Node | string} expr The near canonical polynomial expression to convert in a a canonical polynomial expression\n *\n * The string or tree expression needs to be at below syntax, with free spaces:\n * ( (^(-)? | [+-]? )cte (*)? var (^expo)? | cte )+\n * Where 'var' is one variable with any valid name\n * 'cte' are real numeric constants with any value. It can be omitted if equal than 1\n * 'expo' are integers greater than 0. It can be omitted if equal than 1.\n *\n * @param {array} coefficients Optional returns coefficients sorted by increased exponent\n *\n *\n * @return {node} new node tree with one variable polynomial or string error.\n */\n function polyToCanonical(node, coefficients) {\n if (coefficients === undefined) {\n coefficients = [];\n } // coefficients.\n\n coefficients[0] = 0; // index is the exponent\n var o = {};\n o.cte = 1;\n o.oper = '+';\n\n // fire: mark with * or ^ when finds * or ^ down tree, reset to \"\" with + and -.\n // It is used to deduce the exponent: 1 for *, 0 for \"\".\n o.fire = '';\n var maxExpo = 0; // maximum exponent\n var varname = ''; // variable name\n\n recurPol(node, null, o);\n maxExpo = coefficients.length - 1;\n var first = true;\n var no;\n for (var i = maxExpo; i >= 0; i--) {\n if (coefficients[i] === 0) continue;\n var n1 = new ConstantNode(first ? coefficients[i] : Math.abs(coefficients[i]));\n var op = coefficients[i] < 0 ? '-' : '+';\n if (i > 0) {\n // Is not a constant without variable\n var n2 = new SymbolNode(varname);\n if (i > 1) {\n var n3 = new ConstantNode(i);\n n2 = new OperatorNode('^', 'pow', [n2, n3]);\n }\n if (coefficients[i] === -1 && first) {\n n1 = new OperatorNode('-', 'unaryMinus', [n2]);\n } else if (Math.abs(coefficients[i]) === 1) {\n n1 = n2;\n } else {\n n1 = new OperatorNode('*', 'multiply', [n1, n2]);\n }\n }\n if (first) {\n no = n1;\n } else if (op === '+') {\n no = new OperatorNode('+', 'add', [no, n1]);\n } else {\n no = new OperatorNode('-', 'subtract', [no, n1]);\n }\n first = false;\n } // for\n\n if (first) {\n return new ConstantNode(0);\n } else {\n return no;\n }\n\n /**\n * Recursive auxilary function inside polyToCanonical for\n * converting expression in canonical form\n *\n * Syntax:\n *\n * recurPol(node, noPai, obj)\n *\n * @param {Node} node The current subpolynomial expression\n * @param {Node | Null} noPai The current parent node\n * @param {object} obj Object with many internal flags\n *\n * @return {} No return. If error, throws an exception\n */\n function recurPol(node, noPai, o) {\n var tp = node.type;\n if (tp === 'FunctionNode') {\n // ***** FunctionName *****\n // No function call in polynomial expression\n throw new Error('There is an unsolved function call');\n } else if (tp === 'OperatorNode') {\n // ***** OperatorName *****\n if (!'+-*^'.includes(node.op)) throw new Error('Operator ' + node.op + ' invalid');\n if (noPai !== null) {\n // -(unary),^ : children of *,+,-\n if ((node.fn === 'unaryMinus' || node.fn === 'pow') && noPai.fn !== 'add' && noPai.fn !== 'subtract' && noPai.fn !== 'multiply') {\n throw new Error('Invalid ' + node.op + ' placing');\n }\n\n // -,+,* : children of +,-\n if ((node.fn === 'subtract' || node.fn === 'add' || node.fn === 'multiply') && noPai.fn !== 'add' && noPai.fn !== 'subtract') {\n throw new Error('Invalid ' + node.op + ' placing');\n }\n\n // -,+ : first child\n if ((node.fn === 'subtract' || node.fn === 'add' || node.fn === 'unaryMinus') && o.noFil !== 0) {\n throw new Error('Invalid ' + node.op + ' placing');\n }\n } // Has parent\n\n // Firers: ^,* Old: ^,&,-(unary): firers\n if (node.op === '^' || node.op === '*') {\n o.fire = node.op;\n }\n for (var _i = 0; _i < node.args.length; _i++) {\n // +,-: reset fire\n if (node.fn === 'unaryMinus') o.oper = '-';\n if (node.op === '+' || node.fn === 'subtract') {\n o.fire = '';\n o.cte = 1; // default if there is no constant\n o.oper = _i === 0 ? '+' : node.op;\n }\n o.noFil = _i; // number of son\n recurPol(node.args[_i], node, o);\n } // for in children\n } else if (tp === 'SymbolNode') {\n // ***** SymbolName *****\n if (node.name !== varname && varname !== '') {\n throw new Error('There is more than one variable');\n }\n varname = node.name;\n if (noPai === null) {\n coefficients[1] = 1;\n return;\n }\n\n // ^: Symbol is First child\n if (noPai.op === '^' && o.noFil !== 0) {\n throw new Error('In power the variable should be the first parameter');\n }\n\n // *: Symbol is Second child\n if (noPai.op === '*' && o.noFil !== 1) {\n throw new Error('In multiply the variable should be the second parameter');\n }\n\n // Symbol: firers '',* => it means there is no exponent above, so it's 1 (cte * var)\n if (o.fire === '' || o.fire === '*') {\n if (maxExpo < 1) coefficients[1] = 0;\n coefficients[1] += o.cte * (o.oper === '+' ? 1 : -1);\n maxExpo = Math.max(1, maxExpo);\n }\n } else if (tp === 'ConstantNode') {\n var valor = parseFloat(node.value);\n if (noPai === null) {\n coefficients[0] = valor;\n return;\n }\n if (noPai.op === '^') {\n // cte: second child of power\n if (o.noFil !== 1) throw new Error('Constant cannot be powered');\n if (!isInteger(valor) || valor <= 0) {\n throw new Error('Non-integer exponent is not allowed');\n }\n for (var _i2 = maxExpo + 1; _i2 < valor; _i2++) coefficients[_i2] = 0;\n if (valor > maxExpo) coefficients[valor] = 0;\n coefficients[valor] += o.cte * (o.oper === '+' ? 1 : -1);\n maxExpo = Math.max(valor, maxExpo);\n return;\n }\n o.cte = valor;\n\n // Cte: firer '' => There is no exponent and no multiplication, so the exponent is 0.\n if (o.fire === '') {\n coefficients[0] += o.cte * (o.oper === '+' ? 1 : -1);\n }\n } else {\n throw new Error('Type ' + tp + ' is not allowed');\n }\n } // End of recurPol\n } // End of polyToCanonical\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'zpk2tf';\nvar dependencies = ['typed', 'add', 'multiply', 'Complex', 'number'];\nexport var createZpk2tf = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n multiply,\n Complex,\n number\n } = _ref;\n /**\n * Compute the transfer function of a zero-pole-gain model.\n *\n * Syntax:\n * math.zpk2tf(z, p, k)\n *\n * Examples:\n * math.zpk2tf([1, 2], [-1, -2], 1) // returns [[1, -3, 2], [1, 3, 2]]\n *\n * See also:\n * freqz\n *\n * @param {Array} z Array of zeros values\n * @param {Array} p Array of poles values\n * @param {number} k Gain value\n * @return {Array} Two dimensional array containing the numerator (first row) and denominator (second row) polynomials\n *\n */\n return typed(name, {\n 'Array,Array,number': function ArrayArrayNumber(z, p, k) {\n return _zpk2tf(z, p, k);\n },\n 'Array,Array': function ArrayArray(z, p) {\n return _zpk2tf(z, p, 1);\n },\n 'Matrix,Matrix,number': function MatrixMatrixNumber(z, p, k) {\n return _zpk2tf(z.valueOf(), p.valueOf(), k);\n },\n 'Matrix,Matrix': function MatrixMatrix(z, p) {\n return _zpk2tf(z.valueOf(), p.valueOf(), 1);\n }\n });\n function _zpk2tf(z, p, k) {\n // if z is bignumber, convert it to number\n if (z.some(el => el.type === 'BigNumber')) {\n z = z.map(el => number(el));\n }\n // if p is bignumber, convert it to number\n if (p.some(el => el.type === 'BigNumber')) {\n p = p.map(el => number(el));\n }\n var num = [Complex(1, 0)];\n var den = [Complex(1, 0)];\n for (var i = 0; i < z.length; i++) {\n var zero = z[i];\n if (typeof zero === 'number') zero = Complex(zero, 0);\n num = _multiply(num, [Complex(1, 0), Complex(-zero.re, -zero.im)]);\n }\n for (var _i = 0; _i < p.length; _i++) {\n var pole = p[_i];\n if (typeof pole === 'number') pole = Complex(pole, 0);\n den = _multiply(den, [Complex(1, 0), Complex(-pole.re, -pole.im)]);\n }\n for (var _i2 = 0; _i2 < num.length; _i2++) {\n num[_i2] = multiply(num[_i2], k);\n }\n return [num, den];\n }\n function _multiply(a, b) {\n var c = [];\n for (var i = 0; i < a.length + b.length - 1; i++) {\n c[i] = Complex(0, 0);\n for (var j = 0; j < a.length; j++) {\n if (i - j >= 0 && i - j < b.length) {\n c[i] = add(c[i], multiply(a[j], b[i - j]));\n }\n }\n }\n return c;\n }\n});", "import { factory } from '../../utils/factory.js';\nvar name = 'freqz';\nvar dependencies = ['typed', 'add', 'multiply', 'Complex', 'divide', 'matrix'];\nexport var createFreqz = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n multiply,\n Complex,\n divide,\n matrix\n } = _ref;\n /**\n * Calculates the frequency response of a filter given its numerator and denominator coefficients.\n *\n * Syntax:\n * math.freqz(b, a)\n * math.freqz(b, a, w)\n *\n * Examples:\n * math.freqz([1, 2], [1, 2, 3], 4) // returns { h: [0.5 + 0i, 0.4768589245763655 + 0.2861153547458193i, 0.25000000000000006 + 0.75i, -0.770976571635189 + 0.4625859429811135i], w: [0, 0.7853981633974483, 1.5707963267948966, 2.356194490192345 ] }\n * math.freqz([1, 2], [1, 2, 3], [0, 1]) // returns { h: [0.5 + 0i, 0.45436781 + 0.38598051i], w: [0, 1] }\n *\n * See also:\n * zpk2tf\n *\n * @param {Array.} b The numerator coefficients of the filter.\n * @param {Array.} a The denominator coefficients of the filter.\n * @param {Array.} [w] A vector of frequencies (in radians/sample) at which the frequency response is to be computed or the number of points to compute (if a number is not provided, the default is 512 points)\n * @returns {Object} An object with two properties: h, a vector containing the complex frequency response, and w, a vector containing the normalized frequencies (in radians/sample) at which the response was computed.\n *\n *\n */\n return typed(name, {\n 'Array, Array': function Array_Array(b, a) {\n var w = createBins(512);\n return _freqz(b, a, w);\n },\n 'Array, Array, Array': function Array_Array_Array(b, a, w) {\n return _freqz(b, a, w);\n },\n 'Array, Array, number': function Array_Array_number(b, a, w) {\n if (w < 0) {\n throw new Error('w must be a positive number');\n }\n var w2 = createBins(w);\n return _freqz(b, a, w2);\n },\n 'Matrix, Matrix': function Matrix_Matrix(b, a) {\n // console.log('here')\n var _w = createBins(512);\n var {\n w,\n h\n } = _freqz(b.valueOf(), a.valueOf(), _w);\n return {\n w: matrix(w),\n h: matrix(h)\n };\n },\n 'Matrix, Matrix, Matrix': function Matrix_Matrix_Matrix(b, a, w) {\n var {\n h\n } = _freqz(b.valueOf(), a.valueOf(), w.valueOf());\n return {\n h: matrix(h),\n w: matrix(w)\n };\n },\n 'Matrix, Matrix, number': function Matrix_Matrix_number(b, a, w) {\n if (w < 0) {\n throw new Error('w must be a positive number');\n }\n var _w = createBins(w);\n var {\n h\n } = _freqz(b.valueOf(), a.valueOf(), _w);\n return {\n h: matrix(h),\n w: matrix(_w)\n };\n }\n });\n function _freqz(b, a, w) {\n var num = [];\n var den = [];\n for (var i = 0; i < w.length; i++) {\n var sumNum = Complex(0, 0);\n var sumDen = Complex(0, 0);\n for (var j = 0; j < b.length; j++) {\n sumNum = add(sumNum, multiply(b[j], Complex(Math.cos(-j * w[i]), Math.sin(-j * w[i]))));\n }\n for (var _j = 0; _j < a.length; _j++) {\n sumDen = add(sumDen, multiply(a[_j], Complex(Math.cos(-_j * w[i]), Math.sin(-_j * w[i]))));\n }\n num.push(sumNum);\n den.push(sumDen);\n }\n var h = [];\n for (var _i = 0; _i < num.length; _i++) {\n h.push(divide(num[_i], den[_i]));\n }\n return {\n h,\n w\n };\n }\n function createBins(n) {\n var bins = [];\n for (var i = 0; i < n; i++) {\n bins.push(i / n * Math.PI);\n }\n return bins;\n }\n});", "import { factory } from '../utils/factory.js';\nvar name = 'reviver';\nvar dependencies = ['classes'];\nexport var createReviver = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n classes\n } = _ref;\n /**\n * Instantiate mathjs data types from their JSON representation\n * @param {string} key\n * @param {*} value\n * @returns {*} Returns the revived object\n */\n return function reviver(key, value) {\n var constructor = classes[value && value.mathjs];\n if (constructor && typeof constructor.fromJSON === 'function') {\n return constructor.fromJSON(value);\n }\n return value;\n };\n});", "import { factory } from '../utils/factory.js';\nvar name = 'replacer';\nvar dependencies = [];\nexport var createReplacer = /* #__PURE__ */factory(name, dependencies, () => {\n /**\n * Stringify data types into their JSON representation.\n * Most data types can be serialized using their `.toJSON` method,\n * but not all, for example the number `Infinity`. For these cases you have\n * to use the replacer. Example usage:\n *\n * JSON.stringify([2, Infinity], math.replacer)\n *\n * @param {string} key\n * @param {*} value\n * @returns {*} Returns the replaced object\n */\n return function replacer(key, value) {\n // the numeric values Infinitiy, -Infinity, and NaN cannot be serialized to JSON\n if (typeof value === 'number' && (!isFinite(value) || isNaN(value))) {\n return {\n mathjs: 'number',\n value: String(value)\n };\n }\n if (typeof value === 'bigint') {\n return {\n mathjs: 'bigint',\n value: String(value)\n };\n }\n return value;\n };\n});", "export var version = '14.0.0';\n// Note: This file is automatically generated when building math.js.\n// Changes made in this file will be overwritten.", "import { factory } from './utils/factory.js';\nimport { version } from './version.js';\nimport { createBigNumberE, createBigNumberPhi, createBigNumberPi, createBigNumberTau } from './utils/bignumber/constants.js';\nimport { pi, tau, e, phi } from './plain/number/index.js';\nexport var createTrue = /* #__PURE__ */factory('true', [], () => true);\nexport var createFalse = /* #__PURE__ */factory('false', [], () => false);\nexport var createNull = /* #__PURE__ */factory('null', [], () => null);\nexport var createInfinity = /* #__PURE__ */recreateFactory('Infinity', ['config', '?BigNumber'], _ref => {\n var {\n config,\n BigNumber\n } = _ref;\n return config.number === 'BigNumber' ? new BigNumber(Infinity) : Infinity;\n});\nexport var createNaN = /* #__PURE__ */recreateFactory('NaN', ['config', '?BigNumber'], _ref2 => {\n var {\n config,\n BigNumber\n } = _ref2;\n return config.number === 'BigNumber' ? new BigNumber(NaN) : NaN;\n});\nexport var createPi = /* #__PURE__ */recreateFactory('pi', ['config', '?BigNumber'], _ref3 => {\n var {\n config,\n BigNumber\n } = _ref3;\n return config.number === 'BigNumber' ? createBigNumberPi(BigNumber) : pi;\n});\nexport var createTau = /* #__PURE__ */recreateFactory('tau', ['config', '?BigNumber'], _ref4 => {\n var {\n config,\n BigNumber\n } = _ref4;\n return config.number === 'BigNumber' ? createBigNumberTau(BigNumber) : tau;\n});\nexport var createE = /* #__PURE__ */recreateFactory('e', ['config', '?BigNumber'], _ref5 => {\n var {\n config,\n BigNumber\n } = _ref5;\n return config.number === 'BigNumber' ? createBigNumberE(BigNumber) : e;\n});\n\n// golden ratio, (1+sqrt(5))/2\nexport var createPhi = /* #__PURE__ */recreateFactory('phi', ['config', '?BigNumber'], _ref6 => {\n var {\n config,\n BigNumber\n } = _ref6;\n return config.number === 'BigNumber' ? createBigNumberPhi(BigNumber) : phi;\n});\nexport var createLN2 = /* #__PURE__ */recreateFactory('LN2', ['config', '?BigNumber'], _ref7 => {\n var {\n config,\n BigNumber\n } = _ref7;\n return config.number === 'BigNumber' ? new BigNumber(2).ln() : Math.LN2;\n});\nexport var createLN10 = /* #__PURE__ */recreateFactory('LN10', ['config', '?BigNumber'], _ref8 => {\n var {\n config,\n BigNumber\n } = _ref8;\n return config.number === 'BigNumber' ? new BigNumber(10).ln() : Math.LN10;\n});\nexport var createLOG2E = /* #__PURE__ */recreateFactory('LOG2E', ['config', '?BigNumber'], _ref9 => {\n var {\n config,\n BigNumber\n } = _ref9;\n return config.number === 'BigNumber' ? new BigNumber(1).div(new BigNumber(2).ln()) : Math.LOG2E;\n});\nexport var createLOG10E = /* #__PURE__ */recreateFactory('LOG10E', ['config', '?BigNumber'], _ref10 => {\n var {\n config,\n BigNumber\n } = _ref10;\n return config.number === 'BigNumber' ? new BigNumber(1).div(new BigNumber(10).ln()) : Math.LOG10E;\n});\nexport var createSQRT1_2 = /* #__PURE__ */recreateFactory(\n// eslint-disable-line camelcase\n'SQRT1_2', ['config', '?BigNumber'], _ref11 => {\n var {\n config,\n BigNumber\n } = _ref11;\n return config.number === 'BigNumber' ? new BigNumber('0.5').sqrt() : Math.SQRT1_2;\n});\nexport var createSQRT2 = /* #__PURE__ */recreateFactory('SQRT2', ['config', '?BigNumber'], _ref12 => {\n var {\n config,\n BigNumber\n } = _ref12;\n return config.number === 'BigNumber' ? new BigNumber(2).sqrt() : Math.SQRT2;\n});\nexport var createI = /* #__PURE__ */recreateFactory('i', ['Complex'], _ref13 => {\n var {\n Complex\n } = _ref13;\n return Complex.I;\n});\n\n// for backward compatibility with v5\nexport var createUppercasePi = /* #__PURE__ */factory('PI', ['pi'], _ref14 => {\n var {\n pi\n } = _ref14;\n return pi;\n});\nexport var createUppercaseE = /* #__PURE__ */factory('E', ['e'], _ref15 => {\n var {\n e\n } = _ref15;\n return e;\n});\nexport var createVersion = /* #__PURE__ */factory('version', [], () => version);\n\n// helper function to create a factory with a flag recreateOnConfigChange\n// idea: allow passing optional properties to be attached to the factory function as 4th argument?\nfunction recreateFactory(name, dependencies, create) {\n return factory(name, dependencies, create, {\n recreateOnConfigChange: true\n });\n}", "import { factory } from '../../utils/factory.js';\n\n// Source: https://en.wikipedia.org/wiki/Physical_constant\n\n// Universal constants\nexport var createSpeedOfLight = /* #__PURE__ */unitFactory('speedOfLight', '299792458', 'm s^-1');\nexport var createGravitationConstant = /* #__PURE__ */unitFactory('gravitationConstant', '6.67430e-11', 'm^3 kg^-1 s^-2');\nexport var createPlanckConstant = /* #__PURE__ */unitFactory('planckConstant', '6.62607015e-34', 'J s');\nexport var createReducedPlanckConstant = /* #__PURE__ */unitFactory('reducedPlanckConstant', '1.0545718176461565e-34', 'J s');\n\n// Electromagnetic constants\nexport var createMagneticConstant = /* #__PURE__ */unitFactory('magneticConstant', '1.25663706212e-6', 'N A^-2');\nexport var createElectricConstant = /* #__PURE__ */unitFactory('electricConstant', '8.8541878128e-12', 'F m^-1');\nexport var createVacuumImpedance = /* #__PURE__ */unitFactory('vacuumImpedance', '376.730313667', 'ohm');\nexport var createCoulomb = /* #__PURE__ */unitFactory('coulomb', '8.987551792261171e9', 'N m^2 C^-2');\nexport var createElementaryCharge = /* #__PURE__ */unitFactory('elementaryCharge', '1.602176634e-19', 'C');\nexport var createBohrMagneton = /* #__PURE__ */unitFactory('bohrMagneton', '9.2740100783e-24', 'J T^-1');\nexport var createConductanceQuantum = /* #__PURE__ */unitFactory('conductanceQuantum', '7.748091729863649e-5', 'S');\nexport var createInverseConductanceQuantum = /* #__PURE__ */unitFactory('inverseConductanceQuantum', '12906.403729652257', 'ohm');\nexport var createMagneticFluxQuantum = /* #__PURE__ */unitFactory('magneticFluxQuantum', '2.0678338484619295e-15', 'Wb');\nexport var createNuclearMagneton = /* #__PURE__ */unitFactory('nuclearMagneton', '5.0507837461e-27', 'J T^-1');\nexport var createKlitzing = /* #__PURE__ */unitFactory('klitzing', '25812.807459304513', 'ohm');\nexport var createJosephson = /* #__PURE__ */unitFactory('josephson', '4.835978484169836e14 Hz V', 'Hz V^-1'); // TODO: support for Hz needed\n\n// Atomic and nuclear constants\nexport var createBohrRadius = /* #__PURE__ */unitFactory('bohrRadius', '5.29177210903e-11', 'm');\nexport var createClassicalElectronRadius = /* #__PURE__ */unitFactory('classicalElectronRadius', '2.8179403262e-15', 'm');\nexport var createElectronMass = /* #__PURE__ */unitFactory('electronMass', '9.1093837015e-31', 'kg');\nexport var createFermiCoupling = /* #__PURE__ */unitFactory('fermiCoupling', '1.1663787e-5', 'GeV^-2');\nexport var createFineStructure = numberFactory('fineStructure', 7.2973525693e-3);\nexport var createHartreeEnergy = /* #__PURE__ */unitFactory('hartreeEnergy', '4.3597447222071e-18', 'J');\nexport var createProtonMass = /* #__PURE__ */unitFactory('protonMass', '1.67262192369e-27', 'kg');\nexport var createDeuteronMass = /* #__PURE__ */unitFactory('deuteronMass', '3.3435830926e-27', 'kg');\nexport var createNeutronMass = /* #__PURE__ */unitFactory('neutronMass', '1.6749271613e-27', 'kg');\nexport var createQuantumOfCirculation = /* #__PURE__ */unitFactory('quantumOfCirculation', '3.6369475516e-4', 'm^2 s^-1');\nexport var createRydberg = /* #__PURE__ */unitFactory('rydberg', '10973731.568160', 'm^-1');\nexport var createThomsonCrossSection = /* #__PURE__ */unitFactory('thomsonCrossSection', '6.6524587321e-29', 'm^2');\nexport var createWeakMixingAngle = numberFactory('weakMixingAngle', 0.22290);\nexport var createEfimovFactor = numberFactory('efimovFactor', 22.7);\n\n// Physico-chemical constants\nexport var createAtomicMass = /* #__PURE__ */unitFactory('atomicMass', '1.66053906660e-27', 'kg');\nexport var createAvogadro = /* #__PURE__ */unitFactory('avogadro', '6.02214076e23', 'mol^-1');\nexport var createBoltzmann = /* #__PURE__ */unitFactory('boltzmann', '1.380649e-23', 'J K^-1');\nexport var createFaraday = /* #__PURE__ */unitFactory('faraday', '96485.33212331001', 'C mol^-1');\nexport var createFirstRadiation = /* #__PURE__ */unitFactory('firstRadiation', '3.7417718521927573e-16', 'W m^2');\n// TODO spectralRadiance = 1.1910429723971881e-16 W m^2 sr^-1\nexport var createLoschmidt = /* #__PURE__ */unitFactory('loschmidt', '2.686780111798444e25', 'm^-3');\nexport var createGasConstant = /* #__PURE__ */unitFactory('gasConstant', '8.31446261815324', 'J K^-1 mol^-1');\nexport var createMolarPlanckConstant = /* #__PURE__ */unitFactory('molarPlanckConstant', '3.990312712893431e-10', 'J s mol^-1');\nexport var createMolarVolume = /* #__PURE__ */unitFactory('molarVolume', '0.022413969545014137', 'm^3 mol^-1');\nexport var createSackurTetrode = numberFactory('sackurTetrode', -1.16487052358);\nexport var createSecondRadiation = /* #__PURE__ */unitFactory('secondRadiation', '0.014387768775039337', 'm K');\nexport var createStefanBoltzmann = /* #__PURE__ */unitFactory('stefanBoltzmann', '5.67037441918443e-8', 'W m^-2 K^-4');\nexport var createWienDisplacement = /* #__PURE__ */unitFactory('wienDisplacement', '2.897771955e-3', 'm K');\n\n// Adopted values\nexport var createMolarMass = /* #__PURE__ */unitFactory('molarMass', '0.99999999965e-3', 'kg mol^-1');\nexport var createMolarMassC12 = /* #__PURE__ */unitFactory('molarMassC12', '11.9999999958e-3', 'kg mol^-1');\nexport var createGravity = /* #__PURE__ */unitFactory('gravity', '9.80665', 'm s^-2');\n// atm is defined in Unit.js\n\n// Natural units\nexport var createPlanckLength = /* #__PURE__ */unitFactory('planckLength', '1.616255e-35', 'm');\nexport var createPlanckMass = /* #__PURE__ */unitFactory('planckMass', '2.176435e-8', 'kg');\nexport var createPlanckTime = /* #__PURE__ */unitFactory('planckTime', '5.391245e-44', 's');\nexport var createPlanckCharge = /* #__PURE__ */unitFactory('planckCharge', '1.87554603778e-18', 'C');\nexport var createPlanckTemperature = /* #__PURE__ */unitFactory('planckTemperature', '1.416785e+32', 'K');\n\n// helper function to create a factory function which creates a physical constant,\n// a Unit with either a number value or a BigNumber value depending on the configuration\nfunction unitFactory(name, valueStr, unitStr) {\n var dependencies = ['config', 'Unit', 'BigNumber'];\n return factory(name, dependencies, _ref => {\n var {\n config,\n Unit,\n BigNumber\n } = _ref;\n // Note that we can parse into number or BigNumber.\n // We do not parse into Fractions as that doesn't make sense: we would lose precision of the values\n // Therefore we dont use Unit.parse()\n var value = config.number === 'BigNumber' ? new BigNumber(valueStr) : parseFloat(valueStr);\n var unit = new Unit(value, unitStr);\n unit.fixPrefix = true;\n return unit;\n });\n}\n\n// helper function to create a factory function which creates a numeric constant,\n// either a number or BigNumber depending on the configuration\nfunction numberFactory(name, value) {\n var dependencies = ['config', 'BigNumber'];\n return factory(name, dependencies, _ref2 => {\n var {\n config,\n BigNumber\n } = _ref2;\n return config.number === 'BigNumber' ? new BigNumber(value) : value;\n });\n}", "import { errorTransform } from './utils/errorTransform.js';\nimport { factory } from '../../utils/factory.js';\nimport { createApply } from '../../function/matrix/apply.js';\nimport { isBigNumber, isNumber } from '../../utils/is.js';\nvar name = 'apply';\nvar dependencies = ['typed', 'isInteger'];\n\n/**\n * Attach a transform function to math.apply\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function apply\n * from one-based to zero based\n */\nexport var createApplyTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n isInteger\n } = _ref;\n var apply = createApply({\n typed,\n isInteger\n });\n\n // @see: comment of concat itself\n return typed('apply', {\n '...any': function any(args) {\n // change dim from one-based to zero-based\n var dim = args[1];\n if (isNumber(dim)) {\n args[1] = dim - 1;\n } else if (isBigNumber(dim)) {\n args[1] = dim.minus(1);\n }\n try {\n return apply.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});", "import { errorTransform } from './utils/errorTransform.js';\nimport { factory } from '../../utils/factory.js';\nimport { createColumn } from '../../function/matrix/column.js';\nimport { isNumber } from '../../utils/is.js';\nvar name = 'column';\nvar dependencies = ['typed', 'Index', 'matrix', 'range'];\n\n/**\n * Attach a transform function to matrix.column\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `index` parameter of function column\n * from zero-based to one-based\n */\nexport var createColumnTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Index,\n matrix,\n range\n } = _ref;\n var column = createColumn({\n typed,\n Index,\n matrix,\n range\n });\n\n // @see: comment of column itself\n return typed('column', {\n '...any': function any(args) {\n // change last argument from zero-based to one-based\n var lastIndex = args.length - 1;\n var last = args[lastIndex];\n if (isNumber(last)) {\n args[lastIndex] = last - 1;\n }\n try {\n return column.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});", "import { isSymbolNode } from '../../../utils/is.js';\nimport { PartitionedMap } from '../../../utils/map.js';\n\n/**\n * Compile an inline expression like \"x > 0\"\n * @param {Node} expression\n * @param {Object} math\n * @param {Map} scope\n * @return {function} Returns a function with one argument which fills in the\n * undefined variable (like \"x\") and evaluates the expression\n */\nexport function compileInlineExpression(expression, math, scope) {\n // find an undefined symbol\n var symbol = expression.filter(function (node) {\n return isSymbolNode(node) && !(node.name in math) && !scope.has(node.name);\n })[0];\n if (!symbol) {\n throw new Error('No undefined variable found in inline expression \"' + expression + '\"');\n }\n\n // create a test function for this equation\n var name = symbol.name; // variable name\n var argsScope = new Map();\n var subScope = new PartitionedMap(scope, argsScope, new Set([name]));\n var eq = expression.compile();\n return function inlineExpression(x) {\n argsScope.set(name, x);\n return eq.evaluate(subScope);\n };\n}", "import { factory } from '../../../utils/factory.js';\nvar name = 'transformCallback';\nvar dependencies = ['typed'];\nexport var createTransformCallback = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Transforms the given callback function based on its type and number of arrays.\n *\n * @param {Function} callback - The callback function to transform.\n * @param {number} numberOfArrays - The number of arrays to pass to the callback function.\n * @returns {*} - The transformed callback function.\n */\n return function (callback, numberOfArrays) {\n if (typed.isTypedFunction(callback)) {\n return _transformTypedCallbackFunction(callback, numberOfArrays);\n } else {\n return _transformCallbackFunction(callback, callback.length, numberOfArrays);\n }\n };\n\n /**\n * Transforms the given typed callback function based on the number of arrays.\n *\n * @param {Function} typedFunction - The typed callback function to transform.\n * @param {number} numberOfArrays - The number of arrays to pass to the callback function.\n * @returns {*} - The transformed callback function.\n */\n function _transformTypedCallbackFunction(typedFunction, numberOfArrays) {\n var signatures = Object.fromEntries(Object.entries(typedFunction.signatures).map(_ref2 => {\n var [signature, callbackFunction] = _ref2;\n var numberOfCallbackInputs = signature.split(',').length;\n if (typed.isTypedFunction(callbackFunction)) {\n return [signature, _transformTypedCallbackFunction(callbackFunction, numberOfArrays)];\n } else {\n return [signature, _transformCallbackFunction(callbackFunction, numberOfCallbackInputs, numberOfArrays)];\n }\n }));\n if (typeof typedFunction.name === 'string') {\n return typed(typedFunction.name, signatures);\n } else {\n return typed(signatures);\n }\n }\n});\n\n/**\n * Transforms the callback function based on the number of callback inputs and arrays.\n * There are three cases:\n * 1. The callback function has N arguments.\n * 2. The callback function has N+1 arguments.\n * 3. The callback function has 2N+1 arguments.\n *\n * @param {Function} callbackFunction - The callback function to transform.\n * @param {number} numberOfCallbackInputs - The number of callback inputs.\n * @param {number} numberOfArrays - The number of arrays.\n * @returns {Function} The transformed callback function.\n */\nfunction _transformCallbackFunction(callbackFunction, numberOfCallbackInputs, numberOfArrays) {\n if (numberOfCallbackInputs === numberOfArrays) {\n return callbackFunction;\n } else if (numberOfCallbackInputs === numberOfArrays + 1) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var vals = args.slice(0, numberOfArrays);\n var idx = _transformDims(args[numberOfArrays]);\n return callbackFunction(...vals, idx);\n };\n } else if (numberOfCallbackInputs > numberOfArrays + 1) {\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n var vals = args.slice(0, numberOfArrays);\n var idx = _transformDims(args[numberOfArrays]);\n var rest = args.slice(numberOfArrays + 1);\n return callbackFunction(...vals, idx, ...rest);\n };\n } else {\n return callbackFunction;\n }\n}\n\n/**\n * Transforms the dimensions by adding 1 to each dimension.\n *\n * @param {Array} dims - The dimensions to transform.\n * @returns {Array} The transformed dimensions.\n */\nfunction _transformDims(dims) {\n return dims.map(dim => dim + 1);\n}", "import { createFilter } from '../../function/matrix/filter.js';\nimport { factory } from '../../utils/factory.js';\nimport { isFunctionAssignmentNode, isSymbolNode } from '../../utils/is.js';\nimport { compileInlineExpression } from './utils/compileInlineExpression.js';\nimport { createTransformCallback } from './utils/transformCallback.js';\nvar name = 'filter';\nvar dependencies = ['typed'];\nexport var createFilterTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Attach a transform function to math.filter\n * Adds a property transform containing the transform function.\n *\n * This transform adds support for equations as test function for math.filter,\n * so you can do something like 'filter([3, -2, 5], x > 0)'.\n */\n function filterTransform(args, math, scope) {\n var filter = createFilter({\n typed\n });\n var transformCallback = createTransformCallback({\n typed\n });\n if (args.length === 0) {\n return filter();\n }\n var x = args[0];\n if (args.length === 1) {\n return filter(x);\n }\n var N = args.length - 1;\n var callback = args[N];\n if (x) {\n x = _compileAndEvaluate(x, scope);\n }\n if (callback) {\n if (isSymbolNode(callback) || isFunctionAssignmentNode(callback)) {\n // a function pointer, like filter([3, -2, 5], myTestFunction)\n callback = _compileAndEvaluate(callback, scope);\n } else {\n // an expression like filter([3, -2, 5], x > 0)\n callback = compileInlineExpression(callback, math, scope);\n }\n }\n return filter(x, transformCallback(callback, N));\n }\n filterTransform.rawArgs = true;\n function _compileAndEvaluate(arg, scope) {\n return arg.compile().evaluate(scope);\n }\n return filterTransform;\n}, {\n isTransformFunction: true\n});", "import { createForEach } from '../../function/matrix/forEach.js';\nimport { createTransformCallback } from './utils/transformCallback.js';\nimport { factory } from '../../utils/factory.js';\nimport { isFunctionAssignmentNode, isSymbolNode } from '../../utils/is.js';\nimport { compileInlineExpression } from './utils/compileInlineExpression.js';\nvar name = 'forEach';\nvar dependencies = ['typed'];\nexport var createForEachTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Attach a transform function to math.forEach\n * Adds a property transform containing the transform function.\n *\n * This transform creates a one-based index instead of a zero-based index\n */\n var forEach = createForEach({\n typed\n });\n var transformCallback = createTransformCallback({\n typed\n });\n function forEachTransform(args, math, scope) {\n if (args.length === 0) {\n return forEach();\n }\n var x = args[0];\n if (args.length === 1) {\n return forEach(x);\n }\n var N = args.length - 1;\n var callback = args[N];\n if (x) {\n x = _compileAndEvaluate(x, scope);\n }\n if (callback) {\n if (isSymbolNode(callback) || isFunctionAssignmentNode(callback)) {\n // a function pointer, like filter([3, -2, 5], myTestFunction)\n callback = _compileAndEvaluate(callback, scope);\n } else {\n // an expression like filter([3, -2, 5], x > 0)\n callback = compileInlineExpression(callback, math, scope);\n }\n }\n return forEach(x, transformCallback(callback, N));\n }\n forEachTransform.rawArgs = true;\n function _compileAndEvaluate(arg, scope) {\n return arg.compile().evaluate(scope);\n }\n return forEachTransform;\n}, {\n isTransformFunction: true\n});", "import { isArray, isBigNumber, isMatrix, isNumber, isRange } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'index';\nvar dependencies = ['Index', 'getMatrixDataType'];\nexport var createIndexTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Index,\n getMatrixDataType\n } = _ref;\n /**\n * Attach a transform function to math.index\n * Adds a property transform containing the transform function.\n *\n * This transform creates a one-based index instead of a zero-based index\n */\n return function indexTransform() {\n var args = [];\n for (var i = 0, ii = arguments.length; i < ii; i++) {\n var arg = arguments[i];\n\n // change from one-based to zero based, convert BigNumber to number and leave Array of Booleans as is\n if (isRange(arg)) {\n arg.start--;\n arg.end -= arg.step > 0 ? 0 : 2;\n } else if (arg && arg.isSet === true) {\n arg = arg.map(function (v) {\n return v - 1;\n });\n } else if (isArray(arg) || isMatrix(arg)) {\n if (getMatrixDataType(arg) !== 'boolean') {\n arg = arg.map(function (v) {\n return v - 1;\n });\n }\n } else if (isNumber(arg)) {\n arg--;\n } else if (isBigNumber(arg)) {\n arg = arg.toNumber() - 1;\n } else if (typeof arg === 'string') {\n // leave as is\n } else {\n throw new TypeError('Dimension must be an Array, Matrix, number, string, or Range');\n }\n args[i] = arg;\n }\n var res = new Index();\n Index.apply(res, args);\n return res;\n };\n}, {\n isTransformFunction: true\n});", "import { factory } from '../../utils/factory.js';\nimport { isFunctionAssignmentNode, isSymbolNode } from '../../utils/is.js';\nimport { createMap } from '../../function/matrix/map.js';\nimport { compileInlineExpression } from './utils/compileInlineExpression.js';\nimport { createTransformCallback } from './utils/transformCallback.js';\nvar name = 'map';\nvar dependencies = ['typed'];\nexport var createMapTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Attach a transform function to math.map\n * Adds a property transform containing the transform function.\n *\n * This transform creates a one-based index instead of a zero-based index\n */\n var map = createMap({\n typed\n });\n var transformCallback = createTransformCallback({\n typed\n });\n function mapTransform(args, math, scope) {\n if (args.length === 0) {\n return map();\n }\n if (args.length === 1) {\n return map(args[0]);\n }\n var N = args.length - 1;\n var X = args.slice(0, N);\n var callback = args[N];\n X = X.map(arg => _compileAndEvaluate(arg, scope));\n if (callback) {\n if (isSymbolNode(callback) || isFunctionAssignmentNode(callback)) {\n // a function pointer, like filter([3, -2, 5], myTestFunction)\n callback = _compileAndEvaluate(callback, scope);\n } else {\n // an expression like filter([3, -2, 5], x > 0)\n callback = compileInlineExpression(callback, math, scope);\n }\n }\n return map(...X, transformCallback(callback, N));\n function _compileAndEvaluate(arg, scope) {\n return arg.compile().evaluate(scope);\n }\n }\n mapTransform.rawArgs = true;\n return mapTransform;\n}, {\n isTransformFunction: true\n});", "import { isNumber, isBigNumber } from '../../../utils/is.js';\n/**\n * Change last argument dim from one-based to zero-based.\n */\nexport function dimToZeroBase(dim) {\n if (isNumber(dim)) {\n return dim - 1;\n } else if (isBigNumber(dim)) {\n return dim.minus(1);\n } else {\n return dim;\n }\n}\nexport function isNumberOrBigNumber(n) {\n return isNumber(n) || isBigNumber(n);\n}", "import { isCollection } from '../../../utils/is.js';\nimport { dimToZeroBase, isNumberOrBigNumber } from './dimToZeroBase.js';\n/**\n * Change last argument dim from one-based to zero-based.\n */\nexport function lastDimToZeroBase(args) {\n if (args.length === 2 && isCollection(args[0])) {\n args = args.slice();\n var dim = args[1];\n if (isNumberOrBigNumber(dim)) {\n args[1] = dimToZeroBase(dim);\n }\n }\n return args;\n}", "import { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createMax } from '../../function/statistics/max.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\nvar name = 'max';\nvar dependencies = ['typed', 'config', 'numeric', 'larger'];\nexport var createMaxTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n numeric,\n larger\n } = _ref;\n var max = createMax({\n typed,\n config,\n numeric,\n larger\n });\n\n /**\n * Attach a transform function to math.max\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function max\n * from one-based to zero based\n */\n return typed('max', {\n '...any': function any(args) {\n args = lastDimToZeroBase(args);\n try {\n return max.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});", "import { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createMean } from '../../function/statistics/mean.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\nvar name = 'mean';\nvar dependencies = ['typed', 'add', 'divide'];\nexport var createMeanTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n divide\n } = _ref;\n var mean = createMean({\n typed,\n add,\n divide\n });\n\n /**\n * Attach a transform function to math.mean\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function mean\n * from one-based to zero based\n */\n return typed('mean', {\n '...any': function any(args) {\n args = lastDimToZeroBase(args);\n try {\n return mean.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});", "import { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createMin } from '../../function/statistics/min.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\nvar name = 'min';\nvar dependencies = ['typed', 'config', 'numeric', 'smaller'];\nexport var createMinTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n numeric,\n smaller\n } = _ref;\n var min = createMin({\n typed,\n config,\n numeric,\n smaller\n });\n\n /**\n * Attach a transform function to math.min\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function min\n * from one-based to zero based\n */\n return typed('min', {\n '...any': function any(args) {\n args = lastDimToZeroBase(args);\n try {\n return min.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});", "import { factory } from '../../utils/factory.js';\nimport { createRange } from '../../function/matrix/range.js';\nvar name = 'range';\nvar dependencies = ['typed', 'config', '?matrix', '?bignumber', 'smaller', 'smallerEq', 'larger', 'largerEq', 'add', 'isPositive'];\nexport var createRangeTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n bignumber,\n smaller,\n smallerEq,\n larger,\n largerEq,\n add,\n isPositive\n } = _ref;\n var range = createRange({\n typed,\n config,\n matrix,\n bignumber,\n smaller,\n smallerEq,\n larger,\n largerEq,\n add,\n isPositive\n });\n\n /**\n * Attach a transform function to math.range\n * Adds a property transform containing the transform function.\n *\n * This transform creates a range which includes the end value\n */\n return typed('range', {\n '...any': function any(args) {\n var lastIndex = args.length - 1;\n var last = args[lastIndex];\n if (typeof last !== 'boolean') {\n // append a parameter includeEnd=true\n args.push(true);\n }\n return range.apply(null, args);\n }\n });\n}, {\n isTransformFunction: true\n});", "import { factory } from '../../utils/factory.js';\nimport { createRow } from '../../function/matrix/row.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { isNumber } from '../../utils/is.js';\nvar name = 'row';\nvar dependencies = ['typed', 'Index', 'matrix', 'range'];\n\n/**\n * Attach a transform function to matrix.column\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `index` parameter of function column\n * from zero-based to one-based\n */\nexport var createRowTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Index,\n matrix,\n range\n } = _ref;\n var row = createRow({\n typed,\n Index,\n matrix,\n range\n });\n\n // @see: comment of row itself\n return typed('row', {\n '...any': function any(args) {\n // change last argument from zero-based to one-based\n var lastIndex = args.length - 1;\n var last = args[lastIndex];\n if (isNumber(last)) {\n args[lastIndex] = last - 1;\n }\n try {\n return row.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});", "import { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createSubset } from '../../function/matrix/subset.js';\nvar name = 'subset';\nvar dependencies = ['typed', 'matrix', 'zeros', 'add'];\nexport var createSubsetTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n zeros,\n add\n } = _ref;\n var subset = createSubset({\n typed,\n matrix,\n zeros,\n add\n });\n\n /**\n * Attach a transform function to math.subset\n * Adds a property transform containing the transform function.\n *\n * This transform creates a range which includes the end value\n */\n return typed('subset', {\n '...any': function any(args) {\n try {\n return subset.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});", "import { isBigNumber, isNumber } from '../../utils/is.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { factory } from '../../utils/factory.js';\nimport { createConcat } from '../../function/matrix/concat.js';\nvar name = 'concat';\nvar dependencies = ['typed', 'matrix', 'isInteger'];\nexport var createConcatTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n isInteger\n } = _ref;\n var concat = createConcat({\n typed,\n matrix,\n isInteger\n });\n\n /**\n * Attach a transform function to math.range\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function concat\n * from one-based to zero based\n */\n return typed('concat', {\n '...any': function any(args) {\n // change last argument from one-based to zero-based\n var lastIndex = args.length - 1;\n var last = args[lastIndex];\n if (isNumber(last)) {\n args[lastIndex] = last - 1;\n } else if (isBigNumber(last)) {\n args[lastIndex] = last.minus(1);\n }\n try {\n return concat.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});", "import { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createDiff } from '../../function/matrix/diff.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\nvar name = 'diff';\nvar dependencies = ['typed', 'matrix', 'subtract', 'number', 'bignumber'];\nexport var createDiffTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n subtract,\n number,\n bignumber\n } = _ref;\n var diff = createDiff({\n typed,\n matrix,\n subtract,\n number,\n bignumber\n });\n\n /**\n * Attach a transform function to math.diff\n * Adds a property transform containing the transform function.\n *\n * This transform creates a range which includes the end value\n */\n return typed(name, {\n '...any': function any(args) {\n args = lastDimToZeroBase(args);\n try {\n return diff.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});", "import { factory } from '../../utils/factory.js';\nimport { createStd } from '../../function/statistics/std.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\nvar name = 'std';\nvar dependencies = ['typed', 'map', 'sqrt', 'variance'];\n\n/**\n * Attach a transform function to math.std\n * Adds a property transform containing the transform function.\n *\n * This transform changed the `dim` parameter of function std\n * from one-based to zero based\n */\nexport var createStdTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n map,\n sqrt,\n variance\n } = _ref;\n var std = createStd({\n typed,\n map,\n sqrt,\n variance\n });\n return typed('std', {\n '...any': function any(args) {\n args = lastDimToZeroBase(args);\n try {\n return std.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});", "import { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createSum } from '../../function/statistics/sum.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\n\n/**\n * Attach a transform function to math.sum\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function sum\n * from one-based to zero based\n */\nvar name = 'sum';\nvar dependencies = ['typed', 'config', 'add', 'numeric'];\nexport var createSumTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n add,\n numeric\n } = _ref;\n var sum = createSum({\n typed,\n config,\n add,\n numeric\n });\n return typed(name, {\n '...any': function any(args) {\n args = lastDimToZeroBase(args);\n try {\n return sum.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});", "import { factory } from '../../utils/factory.js';\nimport { createQuantileSeq } from '../../function/statistics/quantileSeq.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\nvar name = 'quantileSeq';\nvar dependencies = ['typed', 'bignumber', 'add', 'subtract', 'divide', 'multiply', 'partitionSelect', 'compare', 'isInteger', 'smaller', 'smallerEq', 'larger'];\n\n/**\n * Attach a transform function to math.quantileSeq\n * Adds a property transform containing the transform function.\n *\n * This transform changed the `dim` parameter of function std\n * from one-based to zero based\n */\nexport var createQuantileSeqTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n bignumber,\n add,\n subtract,\n divide,\n multiply,\n partitionSelect,\n compare,\n isInteger,\n smaller,\n smallerEq,\n larger\n } = _ref;\n var quantileSeq = createQuantileSeq({\n typed,\n bignumber,\n add,\n subtract,\n divide,\n multiply,\n partitionSelect,\n compare,\n isInteger,\n smaller,\n smallerEq,\n larger\n });\n return typed('quantileSeq', {\n 'Array | Matrix, number | BigNumber': quantileSeq,\n 'Array | Matrix, number | BigNumber, number': (arr, prob, dim) => quantileSeq(arr, prob, dimToZeroBase(dim)),\n 'Array | Matrix, number | BigNumber, boolean': quantileSeq,\n 'Array | Matrix, number | BigNumber, boolean, number': (arr, prob, sorted, dim) => quantileSeq(arr, prob, sorted, dimToZeroBase(dim)),\n 'Array | Matrix, Array | Matrix': quantileSeq,\n 'Array | Matrix, Array | Matrix, number': (data, prob, dim) => quantileSeq(data, prob, dimToZeroBase(dim)),\n 'Array | Matrix, Array | Matrix, boolean': quantileSeq,\n 'Array | Matrix, Array | Matrix, boolean, number': (data, prob, sorted, dim) => quantileSeq(data, prob, sorted, dimToZeroBase(dim))\n });\n function dimToZeroBase(dim) {\n // TODO: find a better way, maybe lastDimToZeroBase could apply to more cases.\n return lastDimToZeroBase([[], dim])[1];\n }\n}, {\n isTransformFunction: true\n});", "import { isBigNumber, isCollection, isNumber } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createCumSum } from '../../function/statistics/cumsum.js';\n\n/**\n * Attach a transform function to math.sum\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function sum\n * from one-based to zero based\n */\nvar name = 'cumsum';\nvar dependencies = ['typed', 'add', 'unaryPlus'];\nexport var createCumSumTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n unaryPlus\n } = _ref;\n var cumsum = createCumSum({\n typed,\n add,\n unaryPlus\n });\n return typed(name, {\n '...any': function any(args) {\n // change last argument dim from one-based to zero-based\n if (args.length === 2 && isCollection(args[0])) {\n var dim = args[1];\n if (isNumber(dim)) {\n args[1] = dim - 1;\n } else if (isBigNumber(dim)) {\n args[1] = dim.minus(1);\n }\n }\n try {\n return cumsum.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});", "import { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createVariance } from '../../function/statistics/variance.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\nvar name = 'variance';\nvar dependencies = ['typed', 'add', 'subtract', 'multiply', 'divide', 'apply', 'isNaN'];\n\n/**\n * Attach a transform function to math.var\n * Adds a property transform containing the transform function.\n *\n * This transform changed the `dim` parameter of function var\n * from one-based to zero based\n */\nexport var createVarianceTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n subtract,\n multiply,\n divide,\n apply,\n isNaN\n } = _ref;\n var variance = createVariance({\n typed,\n add,\n subtract,\n multiply,\n divide,\n apply,\n isNaN\n });\n return typed(name, {\n '...any': function any(args) {\n args = lastDimToZeroBase(args);\n try {\n return variance.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});", "import { createPrint } from '../../function/string/print.js';\nimport { factory } from '../../utils/factory.js';\nimport { printTemplate } from '../../utils/print.js';\nvar name = 'print';\nvar dependencies = ['typed', 'matrix', 'zeros', 'add'];\nexport var createPrintTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n zeros,\n add\n } = _ref;\n var print = createPrint({\n typed,\n matrix,\n zeros,\n add\n });\n return typed(name, {\n 'string, Object | Array': function string_Object__Array(template, values) {\n return print(_convertTemplateToZeroBasedIndex(template), values);\n },\n 'string, Object | Array, number | Object': function string_Object__Array_number__Object(template, values, options) {\n return print(_convertTemplateToZeroBasedIndex(template), values, options);\n }\n });\n function _convertTemplateToZeroBasedIndex(template) {\n return template.replace(printTemplate, x => {\n var parts = x.slice(1).split('.');\n var result = parts.map(function (part) {\n if (!isNaN(part) && part.length > 0) {\n return parseInt(part) - 1;\n } else {\n return part;\n }\n });\n return '$' + result.join('.');\n });\n }\n}, {\n isTransformFunction: true\n});", "import { createAnd } from '../../function/logical/and.js';\nimport { factory } from '../../utils/factory.js';\nimport { isCollection } from '../../utils/is.js';\nvar name = 'and';\nvar dependencies = ['typed', 'matrix', 'zeros', 'add', 'equalScalar', 'not', 'concat'];\nexport var createAndTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n zeros,\n not,\n concat\n } = _ref;\n var and = createAnd({\n typed,\n matrix,\n equalScalar,\n zeros,\n not,\n concat\n });\n function andTransform(args, math, scope) {\n var condition1 = args[0].compile().evaluate(scope);\n if (!isCollection(condition1) && !and(condition1, true)) {\n return false;\n }\n var condition2 = args[1].compile().evaluate(scope);\n return and(condition1, condition2);\n }\n andTransform.rawArgs = true;\n return andTransform;\n}, {\n isTransformFunction: true\n});", "import { createOr } from '../../function/logical/or.js';\nimport { factory } from '../../utils/factory.js';\nimport { isCollection } from '../../utils/is.js';\nvar name = 'or';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'DenseMatrix', 'concat'];\nexport var createOrTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n DenseMatrix,\n concat\n } = _ref;\n var or = createOr({\n typed,\n matrix,\n equalScalar,\n DenseMatrix,\n concat\n });\n function orTransform(args, math, scope) {\n var condition1 = args[0].compile().evaluate(scope);\n if (!isCollection(condition1) && or(condition1, false)) {\n return true;\n }\n var condition2 = args[1].compile().evaluate(scope);\n return or(condition1, condition2);\n }\n orTransform.rawArgs = true;\n return orTransform;\n}, {\n isTransformFunction: true\n});", "import { createBitAnd } from '../../function/bitwise/bitAnd.js';\nimport { factory } from '../../utils/factory.js';\nimport { isCollection } from '../../utils/is.js';\nvar name = 'bitAnd';\nvar dependencies = ['typed', 'matrix', 'zeros', 'add', 'equalScalar', 'not', 'concat'];\nexport var createBitAndTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n zeros,\n not,\n concat\n } = _ref;\n var bitAnd = createBitAnd({\n typed,\n matrix,\n equalScalar,\n zeros,\n not,\n concat\n });\n function bitAndTransform(args, math, scope) {\n var condition1 = args[0].compile().evaluate(scope);\n if (!isCollection(condition1)) {\n if (isNaN(condition1)) {\n return NaN;\n }\n if (condition1 === 0 || condition1 === false) {\n return 0;\n }\n }\n var condition2 = args[1].compile().evaluate(scope);\n return bitAnd(condition1, condition2);\n }\n bitAndTransform.rawArgs = true;\n return bitAndTransform;\n}, {\n isTransformFunction: true\n});", "import { createBitOr } from '../../function/bitwise/bitOr.js';\nimport { factory } from '../../utils/factory.js';\nimport { isCollection } from '../../utils/is.js';\nvar name = 'bitOr';\nvar dependencies = ['typed', 'matrix', 'equalScalar', 'DenseMatrix', 'concat'];\nexport var createBitOrTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n equalScalar,\n DenseMatrix,\n concat\n } = _ref;\n var bitOr = createBitOr({\n typed,\n matrix,\n equalScalar,\n DenseMatrix,\n concat\n });\n function bitOrTransform(args, math, scope) {\n var condition1 = args[0].compile().evaluate(scope);\n if (!isCollection(condition1)) {\n if (isNaN(condition1)) {\n return NaN;\n }\n if (condition1 === -1) {\n return -1;\n }\n if (condition1 === true) {\n return 1;\n }\n }\n var condition2 = args[1].compile().evaluate(scope);\n return bitOr(condition1, condition2);\n }\n bitOrTransform.rawArgs = true;\n return bitOrTransform;\n}, {\n isTransformFunction: true\n});", "// creating all factories here in a separate file is needed to get tree-shaking working\nimport * as allFactories from '../factoriesAny.js';\nexport var all = allFactories;", "import _extends from \"@babel/runtime/helpers/extends\";\nimport typedFunction from 'typed-function';\nimport { ArgumentsError } from '../error/ArgumentsError.js';\nimport { DimensionError } from '../error/DimensionError.js';\nimport { IndexError } from '../error/IndexError.js';\nimport { factory, isFactory } from '../utils/factory.js';\nimport { isAccessorNode, isArray, isArrayNode, isAssignmentNode, isBigInt, isBigNumber, isBlockNode, isBoolean, isChain, isCollection, isComplex, isConditionalNode, isConstantNode, isDate, isDenseMatrix, isFraction, isFunction, isFunctionAssignmentNode, isFunctionNode, isHelp, isIndex, isIndexNode, isMap, isMatrix, isNode, isNull, isNumber, isObject, isObjectNode, isObjectWrappingMap, isOperatorNode, isParenthesisNode, isPartitionedMap, isRange, isRangeNode, isRegExp, isRelationalNode, isResultSet, isSparseMatrix, isString, isSymbolNode, isUndefined, isUnit } from '../utils/is.js';\nimport { deepFlatten, isLegacyFactory } from '../utils/object.js';\nimport * as emitter from './../utils/emitter.js';\nimport { DEFAULT_CONFIG } from './config.js';\nimport { configFactory } from './function/config.js';\nimport { importFactory } from './function/import.js';\n\n/**\n * Create a mathjs instance from given factory functions and optionally config\n *\n * Usage:\n *\n * const mathjs1 = create({ createAdd, createMultiply, ...})\n * const config = { number: 'BigNumber' }\n * const mathjs2 = create(all, config)\n *\n * @param {Object} [factories] An object with factory functions\n * The object can contain nested objects,\n * all nested objects will be flattened.\n * @param {Object} [config] Available options:\n * {number} relTol\n * Minimum relative difference between two\n * compared values, used by all comparison functions.\n * {number} absTol\n * Minimum absolute difference between two\n * compared values, used by all comparison functions.\n * {string} matrix\n * A string 'Matrix' (default) or 'Array'.\n * {string} number\n * A string 'number' (default), 'BigNumber', or 'Fraction'\n * {number} precision\n * The number of significant digits for BigNumbers.\n * Not applicable for Numbers.\n * {boolean} predictable\n * Predictable output type of functions. When true,\n * output type depends only on the input types. When\n * false (default), output type can vary depending\n * on input values. For example `math.sqrt(-4)`\n * returns `complex('2i')` when predictable is false, and\n * returns `NaN` when true.\n * {string} randomSeed\n * Random seed for seeded pseudo random number generator.\n * Set to null to randomly seed.\n * @returns {Object} Returns a bare-bone math.js instance containing\n * functions:\n * - `import` to add new functions\n * - `config` to change configuration\n * - `on`, `off`, `once`, `emit` for events\n */\nexport function create(factories, config) {\n var configInternal = _extends({}, DEFAULT_CONFIG, config);\n\n // simple test for ES5 support\n if (typeof Object.create !== 'function') {\n throw new Error('ES5 not supported by this JavaScript engine. ' + 'Please load the es5-shim and es5-sham library for compatibility.');\n }\n\n // create the mathjs instance\n var math = emitter.mixin({\n // only here for backward compatibility for legacy factory functions\n isNumber,\n isComplex,\n isBigNumber,\n isBigInt,\n isFraction,\n isUnit,\n isString,\n isArray,\n isMatrix,\n isCollection,\n isDenseMatrix,\n isSparseMatrix,\n isRange,\n isIndex,\n isBoolean,\n isResultSet,\n isHelp,\n isFunction,\n isDate,\n isRegExp,\n isObject,\n isMap,\n isPartitionedMap,\n isObjectWrappingMap,\n isNull,\n isUndefined,\n isAccessorNode,\n isArrayNode,\n isAssignmentNode,\n isBlockNode,\n isConditionalNode,\n isConstantNode,\n isFunctionAssignmentNode,\n isFunctionNode,\n isIndexNode,\n isNode,\n isObjectNode,\n isOperatorNode,\n isParenthesisNode,\n isRangeNode,\n isRelationalNode,\n isSymbolNode,\n isChain\n });\n\n // load config function and apply provided config\n math.config = configFactory(configInternal, math.emit);\n math.expression = {\n transform: {},\n mathWithTransform: {\n config: math.config\n }\n };\n\n // cached factories and instances used by function load\n var legacyFactories = [];\n var legacyInstances = [];\n\n /**\n * Load a function or data type from a factory.\n * If the function or data type already exists, the existing instance is\n * returned.\n * @param {Function} factory\n * @returns {*}\n */\n function load(factory) {\n if (isFactory(factory)) {\n return factory(math);\n }\n var firstProperty = factory[Object.keys(factory)[0]];\n if (isFactory(firstProperty)) {\n return firstProperty(math);\n }\n if (!isLegacyFactory(factory)) {\n console.warn('Factory object with properties `type`, `name`, and `factory` expected', factory);\n throw new Error('Factory object with properties `type`, `name`, and `factory` expected');\n }\n var index = legacyFactories.indexOf(factory);\n var instance;\n if (index === -1) {\n // doesn't yet exist\n if (factory.math === true) {\n // pass with math namespace\n instance = factory.factory(math.type, configInternal, load, math.typed, math);\n } else {\n instance = factory.factory(math.type, configInternal, load, math.typed);\n }\n\n // append to the cache\n legacyFactories.push(factory);\n legacyInstances.push(instance);\n } else {\n // already existing function, return the cached instance\n instance = legacyInstances[index];\n }\n return instance;\n }\n var importedFactories = {};\n\n // load the import function\n function lazyTyped() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return math.typed.apply(math.typed, args);\n }\n lazyTyped.isTypedFunction = typedFunction.isTypedFunction;\n var internalImport = importFactory(lazyTyped, load, math, importedFactories);\n math.import = internalImport;\n\n // listen for changes in config, import all functions again when changed\n // TODO: move this listener into the import function?\n math.on('config', () => {\n Object.values(importedFactories).forEach(factory => {\n if (factory && factory.meta && factory.meta.recreateOnConfigChange) {\n // FIXME: only re-create when the current instance is the same as was initially created\n // FIXME: delete the functions/constants before importing them again?\n internalImport(factory, {\n override: true\n });\n }\n });\n });\n\n // the create function exposed on the mathjs instance is bound to\n // the factory functions passed before\n math.create = create.bind(null, factories);\n\n // export factory function\n math.factory = factory;\n\n // import the factory functions like createAdd as an array instead of object,\n // else they will get a different naming (`createAdd` instead of `add`).\n math.import(Object.values(deepFlatten(factories)));\n math.ArgumentsError = ArgumentsError;\n math.DimensionError = DimensionError;\n math.IndexError = IndexError;\n return math;\n}", "import Emitter from 'tiny-emitter';\n\n/**\n * Extend given object with emitter functions `on`, `off`, `once`, `emit`\n * @param {Object} obj\n * @return {Object} obj\n */\nexport function mixin(obj) {\n // create event emitter\n var emitter = new Emitter();\n\n // bind methods to obj (we don't want to expose the emitter.e Array...)\n obj.on = emitter.on.bind(emitter);\n obj.off = emitter.off.bind(emitter);\n obj.once = emitter.once.bind(emitter);\n obj.emit = emitter.emit.bind(emitter);\n return obj;\n}", "import { isBigNumber, isComplex, isFraction, isMatrix, isUnit } from '../../utils/is.js';\nimport { isFactory, stripOptionalNotation } from '../../utils/factory.js';\nimport { hasOwnProperty, lazy } from '../../utils/object.js';\nimport { ArgumentsError } from '../../error/ArgumentsError.js';\nexport function importFactory(typed, load, math, importedFactories) {\n /**\n * Import functions from an object or a module.\n *\n * This function is only available on a mathjs instance created using `create`.\n *\n * Syntax:\n *\n * math.import(functions)\n * math.import(functions, options)\n *\n * Where:\n *\n * - `functions: Object`\n * An object with functions or factories to be imported.\n * - `options: Object` An object with import options. Available options:\n * - `override: boolean`\n * If true, existing functions will be overwritten. False by default.\n * - `silent: boolean`\n * If true, the function will not throw errors on duplicates or invalid\n * types. False by default.\n * - `wrap: boolean`\n * If true, the functions will be wrapped in a wrapper function\n * which converts data types like Matrix to primitive data types like Array.\n * The wrapper is needed when extending math.js with libraries which do not\n * support these data type. False by default.\n *\n * Examples:\n *\n * import { create, all } from 'mathjs'\n * import * as numbers from 'numbers'\n *\n * // create a mathjs instance\n * const math = create(all)\n *\n * // define new functions and variables\n * math.import({\n * myvalue: 42,\n * hello: function (name) {\n * return 'hello, ' + name + '!'\n * }\n * })\n *\n * // use the imported function and variable\n * math.myvalue * 2 // 84\n * math.hello('user') // 'hello, user!'\n *\n * // import the npm module 'numbers'\n * // (must be installed first with `npm install numbers`)\n * math.import(numbers, {wrap: true})\n *\n * math.fibonacci(7) // returns 13\n *\n * @param {Object | Array} functions Object with functions to be imported.\n * @param {Object} [options] Import options.\n */\n function mathImport(functions, options) {\n var num = arguments.length;\n if (num !== 1 && num !== 2) {\n throw new ArgumentsError('import', num, 1, 2);\n }\n if (!options) {\n options = {};\n }\n function flattenImports(flatValues, value, name) {\n if (Array.isArray(value)) {\n value.forEach(item => flattenImports(flatValues, item));\n } else if (typeof value === 'object') {\n for (var _name in value) {\n if (hasOwnProperty(value, _name)) {\n flattenImports(flatValues, value[_name], _name);\n }\n }\n } else if (isFactory(value) || name !== undefined) {\n var flatName = isFactory(value) ? isTransformFunctionFactory(value) ? value.fn + '.transform' // TODO: this is ugly\n : value.fn : name;\n\n // we allow importing the same function twice if it points to the same implementation\n if (hasOwnProperty(flatValues, flatName) && flatValues[flatName] !== value && !options.silent) {\n throw new Error('Cannot import \"' + flatName + '\" twice');\n }\n flatValues[flatName] = value;\n } else {\n if (!options.silent) {\n throw new TypeError('Factory, Object, or Array expected');\n }\n }\n }\n var flatValues = {};\n flattenImports(flatValues, functions);\n for (var name in flatValues) {\n if (hasOwnProperty(flatValues, name)) {\n // console.log('import', name)\n var value = flatValues[name];\n if (isFactory(value)) {\n // we ignore name here and enforce the name of the factory\n // maybe at some point we do want to allow overriding it\n // in that case we can implement an option overrideFactoryNames: true\n _importFactory(value, options);\n } else if (isSupportedType(value)) {\n _import(name, value, options);\n } else {\n if (!options.silent) {\n throw new TypeError('Factory, Object, or Array expected');\n }\n }\n }\n }\n }\n\n /**\n * Add a property to the math namespace\n * @param {string} name\n * @param {*} value\n * @param {Object} options See import for a description of the options\n * @private\n */\n function _import(name, value, options) {\n var _math$Unit;\n // TODO: refactor this function, it's to complicated and contains duplicate code\n if (options.wrap && typeof value === 'function') {\n // create a wrapper around the function\n value = _wrap(value);\n }\n\n // turn a plain function with a typed-function signature into a typed-function\n if (hasTypedFunctionSignature(value)) {\n value = typed(name, {\n [value.signature]: value\n });\n }\n if (typed.isTypedFunction(math[name]) && typed.isTypedFunction(value)) {\n if (options.override) {\n // give the typed function the right name\n value = typed(name, value.signatures);\n } else {\n // merge the existing and typed function\n value = typed(math[name], value);\n }\n math[name] = value;\n delete importedFactories[name];\n _importTransform(name, value);\n math.emit('import', name, function resolver() {\n return value;\n });\n return;\n }\n var isDefined = math[name] !== undefined;\n var isValuelessUnit = (_math$Unit = math.Unit) === null || _math$Unit === void 0 ? void 0 : _math$Unit.isValuelessUnit(name);\n if (!isDefined && !isValuelessUnit || options.override) {\n math[name] = value;\n delete importedFactories[name];\n _importTransform(name, value);\n math.emit('import', name, function resolver() {\n return value;\n });\n return;\n }\n if (!options.silent) {\n throw new Error('Cannot import \"' + name + '\": already exists');\n }\n }\n function _importTransform(name, value) {\n if (value && typeof value.transform === 'function') {\n math.expression.transform[name] = value.transform;\n if (allowedInExpressions(name)) {\n math.expression.mathWithTransform[name] = value.transform;\n }\n } else {\n // remove existing transform\n delete math.expression.transform[name];\n if (allowedInExpressions(name)) {\n math.expression.mathWithTransform[name] = value;\n }\n }\n }\n function _deleteTransform(name) {\n delete math.expression.transform[name];\n if (allowedInExpressions(name)) {\n math.expression.mathWithTransform[name] = math[name];\n } else {\n delete math.expression.mathWithTransform[name];\n }\n }\n\n /**\n * Create a wrapper a round an function which converts the arguments\n * to their primitive values (like convert a Matrix to Array)\n * @param {Function} fn\n * @return {Function} Returns the wrapped function\n * @private\n */\n function _wrap(fn) {\n var wrapper = function wrapper() {\n var args = [];\n for (var i = 0, len = arguments.length; i < len; i++) {\n var arg = arguments[i];\n args[i] = arg && arg.valueOf();\n }\n return fn.apply(math, args);\n };\n if (fn.transform) {\n wrapper.transform = fn.transform;\n }\n return wrapper;\n }\n\n /**\n * Import an instance of a factory into math.js\n * @param {function(scope: object)} factory\n * @param {Object} options See import for a description of the options\n * @param {string} [name=factory.name] Optional custom name\n * @private\n */\n function _importFactory(factory, options) {\n var name = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : factory.fn;\n if (name.includes('.')) {\n throw new Error('Factory name should not contain a nested path. ' + 'Name: ' + JSON.stringify(name));\n }\n var namespace = isTransformFunctionFactory(factory) ? math.expression.transform : math;\n var existingTransform = name in math.expression.transform;\n var existing = hasOwnProperty(namespace, name) ? namespace[name] : undefined;\n var resolver = function resolver() {\n // collect all dependencies, handle finding both functions and classes and other special cases\n var dependencies = {};\n factory.dependencies.map(stripOptionalNotation).forEach(dependency => {\n if (dependency.includes('.')) {\n throw new Error('Factory dependency should not contain a nested path. ' + 'Name: ' + JSON.stringify(dependency));\n }\n if (dependency === 'math') {\n dependencies.math = math;\n } else if (dependency === 'mathWithTransform') {\n dependencies.mathWithTransform = math.expression.mathWithTransform;\n } else if (dependency === 'classes') {\n // special case for json reviver\n dependencies.classes = math;\n } else {\n dependencies[dependency] = math[dependency];\n }\n });\n var instance = /* #__PURE__ */factory(dependencies);\n if (instance && typeof instance.transform === 'function') {\n throw new Error('Transforms cannot be attached to factory functions. ' + 'Please create a separate function for it with export const path = \"expression.transform\"');\n }\n if (existing === undefined || options.override) {\n return instance;\n }\n if (typed.isTypedFunction(existing) && typed.isTypedFunction(instance)) {\n // merge the existing and new typed function\n return typed(existing, instance);\n }\n if (options.silent) {\n // keep existing, ignore imported function\n return existing;\n } else {\n throw new Error('Cannot import \"' + name + '\": already exists');\n }\n };\n\n // TODO: add unit test with non-lazy factory\n if (!factory.meta || factory.meta.lazy !== false) {\n lazy(namespace, name, resolver);\n\n // FIXME: remove the `if (existing &&` condition again. Can we make sure subset is loaded before subset.transform? (Name collision, and no dependencies between the two)\n if (existing && existingTransform) {\n _deleteTransform(name);\n } else {\n if (isTransformFunctionFactory(factory) || factoryAllowedInExpressions(factory)) {\n lazy(math.expression.mathWithTransform, name, () => namespace[name]);\n }\n }\n } else {\n namespace[name] = resolver();\n\n // FIXME: remove the `if (existing &&` condition again. Can we make sure subset is loaded before subset.transform? (Name collision, and no dependencies between the two)\n if (existing && existingTransform) {\n _deleteTransform(name);\n } else {\n if (isTransformFunctionFactory(factory) || factoryAllowedInExpressions(factory)) {\n lazy(math.expression.mathWithTransform, name, () => namespace[name]);\n }\n }\n }\n\n // TODO: improve factories, store a list with imports instead which can be re-played\n importedFactories[name] = factory;\n math.emit('import', name, resolver);\n }\n\n /**\n * Check whether given object is a type which can be imported\n * @param {Function | number | string | boolean | null | Unit | Complex} object\n * @return {boolean}\n * @private\n */\n function isSupportedType(object) {\n return typeof object === 'function' || typeof object === 'number' || typeof object === 'string' || typeof object === 'boolean' || object === null || isUnit(object) || isComplex(object) || isBigNumber(object) || isFraction(object) || isMatrix(object) || Array.isArray(object);\n }\n function hasTypedFunctionSignature(fn) {\n return typeof fn === 'function' && typeof fn.signature === 'string';\n }\n function allowedInExpressions(name) {\n return !hasOwnProperty(unsafe, name);\n }\n function factoryAllowedInExpressions(factory) {\n return !factory.fn.includes('.') &&\n // FIXME: make checking on path redundant, check on meta data instead\n !hasOwnProperty(unsafe, factory.fn) && (!factory.meta || !factory.meta.isClass);\n }\n function isTransformFunctionFactory(factory) {\n return factory !== undefined && factory.meta !== undefined && factory.meta.isTransformFunction === true || false;\n }\n\n // namespaces and functions not available in the parser for safety reasons\n var unsafe = {\n expression: true,\n type: true,\n docs: true,\n error: true,\n json: true,\n chain: true // chain method not supported. Note that there is a unit chain too.\n };\n return mathImport;\n}", "import jStat from 'jstat';\nimport bessel from 'bessel';\n\nconst nil = new Error('#NULL!');\nconst div0 = new Error('#DIV/0!');\nconst value = new Error('#VALUE!');\nconst ref = new Error('#REF!');\nconst name = new Error('#NAME?');\nconst num = new Error('#NUM!');\nconst na = new Error('#N/A');\nconst error = new Error('#ERROR!');\nconst data = new Error('#GETTING_DATA');\n\nvar errors = /*#__PURE__*/Object.freeze({\n __proto__: null,\n data: data,\n div0: div0,\n error: error,\n na: na,\n name: name,\n nil: nil,\n num: num,\n ref: ref,\n value: value\n});\n\nconst defaultOperator = '=';\nconst validSymbols = ['>', '>=', '<', '<=', '=', '<>'];\nconst _TOKEN_TYPE_OPERATOR = 'operator';\nconst _TOKEN_TYPE_LITERAL = 'literal';\nconst SUPPORTED_TOKENS = [_TOKEN_TYPE_OPERATOR, _TOKEN_TYPE_LITERAL];\n\nconst TOKEN_TYPE_OPERATOR = _TOKEN_TYPE_OPERATOR;\nconst TOKEN_TYPE_LITERAL = _TOKEN_TYPE_LITERAL;\n\n/**\n * Create token which describe passed symbol/value.\n *\n * @param {String} value Value/Symbol to describe.\n * @param {String} type Type of the token 'operator' or 'literal'.\n * @return {Object}\n */\nfunction createToken(value, type) {\n if (SUPPORTED_TOKENS.indexOf(type) === -1) {\n throw new Error('Unsupported token type: ' + type)\n }\n\n return {\n value: value,\n type: type\n }\n}\n\n/**\n * Tries to cast numeric values to their type passed as a string.\n *\n * @param {*} value\n * @return {*}\n */\nfunction castValueToCorrectType(value) {\n if (typeof value !== 'string') {\n return value\n }\n\n if (/^\\d+(\\.\\d+)?$/.test(value)) {\n value = value.indexOf('.') === -1 ? parseInt(value, 10) : parseFloat(value);\n }\n\n return value\n}\n\n/**\n * Generate stream of tokens from passed expression.\n *\n * @param {String} expression\n * @return {String[]}\n */\nfunction tokenizeExpression(expression) {\n const expressionLength = expression.length;\n const tokens = [];\n let cursorIndex = 0;\n let processedValue = '';\n let processedSymbol = '';\n\n while (cursorIndex < expressionLength) {\n const char = expression.charAt(cursorIndex);\n\n switch (char) {\n case '>':\n case '<':\n case '=':\n processedSymbol = processedSymbol + char;\n\n if (processedValue.length > 0) {\n tokens.push(processedValue);\n processedValue = '';\n }\n\n break\n default:\n if (processedSymbol.length > 0) {\n tokens.push(processedSymbol);\n processedSymbol = '';\n }\n\n processedValue = processedValue + char;\n break\n }\n\n cursorIndex++;\n }\n\n if (processedValue.length > 0) {\n tokens.push(processedValue);\n }\n\n if (processedSymbol.length > 0) {\n tokens.push(processedSymbol);\n }\n\n return tokens\n}\n\n/**\n * Analyze and convert tokens to an object which describes their meaning.\n *\n * @param {String[]} tokens\n * @return {Object[]}\n */\nfunction analyzeTokens(tokens) {\n let literalValue = '';\n const analyzedTokens = [];\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n\n if (i === 0 && validSymbols.indexOf(token) >= 0) {\n analyzedTokens.push(createToken(token, TOKEN_TYPE_OPERATOR));\n } else {\n literalValue += token;\n }\n }\n\n if (literalValue.length > 0) {\n analyzedTokens.push(createToken(castValueToCorrectType(literalValue), TOKEN_TYPE_LITERAL));\n }\n\n if (analyzedTokens.length > 0 && analyzedTokens[0].type !== TOKEN_TYPE_OPERATOR) {\n analyzedTokens.unshift(createToken(defaultOperator, TOKEN_TYPE_OPERATOR));\n }\n\n return analyzedTokens\n}\n\n/**\n * Compute/Evaluate an expression passed as an array of tokens.\n *\n * @param {Object[]} tokens\n * @return {Boolean}\n */\nfunction computeExpression(tokens) {\n const values = [];\n let operator;\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n\n switch (token.type) {\n case TOKEN_TYPE_OPERATOR:\n operator = token.value;\n break\n case TOKEN_TYPE_LITERAL:\n values.push(token.value);\n break\n }\n }\n\n return evaluate(values, operator)\n}\n\n/**\n * Evaluate values based on passed math operator.\n *\n * @param {*} values\n * @param {String} operator\n * @return {Boolean}\n */\nfunction evaluate(values, operator) {\n let result = false;\n\n switch (operator) {\n case '>':\n result = values[0] > values[1];\n break\n case '>=':\n result = values[0] >= values[1];\n break\n case '<':\n result = values[0] < values[1];\n break\n case '<=':\n result = values[0] <= values[1];\n break\n case '=':\n result = values[0] == values[1];\n break\n case '<>':\n result = values[0] != values[1];\n break\n }\n\n return result\n}\n\nfunction parse(expression) {\n return analyzeTokens(tokenizeExpression(expression))\n}\n\nconst compute = computeExpression;\n\n// Arrays\nfunction argsToArray(args) {\n const result = [];\n\n arrayEach(args, (value) => {\n result.push(value);\n });\n\n return result\n}\n\nfunction arrayEach(array, iteratee) {\n let index = -1;\n const length = array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break\n }\n }\n\n return array\n}\n\nfunction arrayValuesToNumbers(arr) {\n let n = arr.length;\n let el;\n\n while (n--) {\n el = arr[n];\n\n if (typeof el === 'number') {\n continue\n }\n\n if (el === true) {\n arr[n] = 1;\n continue\n }\n\n if (el === false) {\n arr[n] = 0;\n continue\n }\n\n if (typeof el === 'string') {\n const number = parseNumber(el);\n\n arr[n] = number instanceof Error ? 0 : number;\n }\n }\n\n return arr\n}\n\nfunction fillMatrix(matrix, fill_value) {\n if (!matrix) {\n return value\n }\n\n if (!matrix.every((el) => Array.isArray(el)) || matrix.length === 0) {\n matrix = [[...matrix]];\n }\n\n matrix.map((arr, i) => {\n arr.map((a, j) => {\n if (!a) {\n matrix[i][j] = 0;\n }\n });\n });\n\n const longestArrayIndex = matrix.reduce((acc, arr, i) => (arr.length > matrix[acc].length ? i : acc), 0);\n const longestArrayLength = matrix[longestArrayIndex].length;\n\n return matrix.map((el) => [...el, ...Array(longestArrayLength - el.length).fill(0)])\n}\n\nfunction flatten() {\n let result;\n\n if (arguments.length === 1) {\n const argument = arguments[0];\n result = isArrayLike(argument) ? argsToArray.apply(null, arguments) : [argument];\n } else {\n result = Array.from(arguments);\n }\n\n while (!isFlat(result)) {\n result = flattenShallow(result);\n }\n\n return result\n}\n\nfunction flattenShallow(array) {\n if (!array || !array.reduce) {\n return [array]\n }\n\n return array.reduce((a, b) => {\n const aIsArray = Array.isArray(a);\n const bIsArray = Array.isArray(b);\n\n if (aIsArray && bIsArray) {\n return a.concat(b)\n }\n\n if (aIsArray) {\n a.push(b);\n\n return a\n }\n\n if (bIsArray) {\n return [a].concat(b)\n }\n\n return [a, b]\n })\n}\n\nfunction initial(array, idx) {\n idx = idx || 1;\n\n if (!array || typeof array.slice !== 'function') {\n return array\n }\n\n return array.slice(0, array.length - idx)\n}\n\nfunction isArrayLike(a) {\n return a != null && typeof a.length === 'number' && typeof a !== 'string'\n}\n\nfunction isFlat(array) {\n if (!array) {\n return false\n }\n\n for (let i = 0; i < array.length; ++i) {\n if (Array.isArray(array[i])) {\n return false\n }\n }\n\n return true\n}\n\nfunction rest(array, idx) {\n idx = idx || 1;\n\n if (!array || typeof array.slice !== 'function') {\n return array\n }\n\n return array.slice(idx)\n}\n\nfunction transpose(matrix) {\n if (!matrix) {\n return value\n }\n\n return matrix[0].map((col, i) => matrix.map((row) => row[i]))\n}\n\n// Databases\nfunction findField(database, title) {\n let index = null;\n\n arrayEach(database, (value, i) => {\n if (value[0] === title) {\n index = i;\n\n return false\n }\n });\n\n // Return error if the input field title is incorrect\n if (index == null) {\n return value\n }\n\n return index\n}\n\n// Errors\nfunction anyError() {\n for (let n = 0; n < arguments.length; n++) {\n if (arguments[n] instanceof Error) {\n return arguments[n]\n }\n }\n\n return undefined\n}\n\nfunction anyIsError() {\n let n = arguments.length;\n\n while (n--) {\n if (arguments[n] instanceof Error) {\n return true\n }\n }\n\n return false\n}\n\n// Numbers\nfunction cleanFloat(number) {\n const power = 1e14;\n\n return Math.round(number * power) / power\n}\n\nfunction numbers() {\n const possibleNumbers = flatten.apply(null, arguments);\n\n return possibleNumbers.filter((el) => typeof el === 'number')\n}\n\nfunction serialNumberToDate(serial) {\n if (serial < 60) {\n serial += 1;\n }\n\n const utc_days = Math.floor(serial - 25569);\n const utc_value = utc_days * 86400;\n const date_info = new Date(utc_value * 1000);\n const fractional_day = serial - Math.floor(serial) + 0.0000001;\n\n let total_seconds = Math.floor(86400 * fractional_day);\n\n const seconds = total_seconds % 60;\n\n total_seconds -= seconds;\n\n const hours = Math.floor(total_seconds / (60 * 60));\n const minutes = Math.floor(total_seconds / 60) % 60;\n let days = date_info.getUTCDate();\n let month = date_info.getUTCMonth();\n\n if (serial >= 60 && serial < 61) {\n days = 29;\n month = 1;\n }\n\n return new Date(date_info.getUTCFullYear(), month, days, hours, minutes, seconds)\n}\n\n// Parsers\nfunction parseBool(bool) {\n if (typeof bool === 'boolean') {\n return bool\n }\n\n if (bool instanceof Error) {\n return bool\n }\n\n if (typeof bool === 'number') {\n return bool !== 0\n }\n\n if (typeof bool === 'string') {\n const up = bool.toUpperCase();\n\n if (up === 'TRUE') {\n return true\n }\n\n if (up === 'FALSE') {\n return false\n }\n }\n\n if (bool instanceof Date && !isNaN(bool)) {\n return true\n }\n\n return value\n}\n\nfunction parseDate(date) {\n if (!isNaN(date)) {\n if (date instanceof Date) {\n return new Date(date)\n }\n\n const d = parseFloat(date);\n\n if (d < 0 || d >= 2958466) {\n return num\n }\n\n return serialNumberToDate(d)\n }\n\n if (typeof date === 'string') {\n date = /(\\d{4})-(\\d\\d?)-(\\d\\d?)$/.test(date) ? new Date(date + 'T00:00:00.000') : new Date(date);\n\n if (!isNaN(date)) {\n return date\n }\n }\n\n return value\n}\n\nfunction parseDateArray(arr) {\n let len = arr.length;\n let parsed;\n\n while (len--) {\n parsed = parseDate(arr[len]);\n\n if (parsed === value) {\n return parsed\n }\n\n arr[len] = parsed;\n }\n\n return arr\n}\n\nfunction parseNumber(string) {\n if (string instanceof Error) {\n return string\n }\n\n if (string === undefined || string === null) {\n return 0\n }\n\n if (typeof string === 'boolean') {\n string = +string;\n }\n\n if (!isNaN(string) && string !== '') {\n return parseFloat(string)\n }\n\n return value\n}\n\nfunction parseNumberArray(arr) {\n let len;\n\n if (!arr || (len = arr.length) === 0) {\n return value\n }\n\n let parsed;\n\n while (len--) {\n if (arr[len] instanceof Error) {\n return arr[len]\n }\n\n parsed = parseNumber(arr[len]);\n\n if (parsed instanceof Error) {\n return parsed\n }\n\n arr[len] = parsed;\n }\n\n return arr\n}\n\nfunction parseString(string) {\n if (string instanceof Error) {\n return string\n }\n\n if (string === undefined || string === null) {\n return ''\n }\n\n return string.toString()\n}\n\n// Strings\nfunction anyIsString() {\n let n = arguments.length;\n\n while (n--) {\n if (typeof arguments[n] === 'string') {\n return true\n }\n }\n\n return false\n}\n\n// Misc\n//Filters values from a given range based on multiple criteria.\n//Returns an array containing the values that satisfy all the specified criteria.\nfunction applyCriteria() {\n const args = argsToArray(arguments);\n const range = parseNumberArray(flatten(args.shift()));\n if (range instanceof Error) {\n return range\n }\n\n const criterias = args;\n const criteriaLength = criterias.length / 2;\n\n for (let i = 0; i < criteriaLength; i++) {\n criterias[i * 2] = flatten(criterias[i * 2]);\n }\n\n let values = [];\n\n for (let i = 0; i < range.length; i++) {\n let isMetCondition = false;\n\n for (let j = 0; j < criteriaLength; j++) {\n const valueToTest = criterias[j * 2][i];\n const criteria = criterias[j * 2 + 1];\n const isWildcard = criteria === void 0 || criteria === '*';\n let computedResult = false;\n\n if (isWildcard) {\n computedResult = true;\n } else {\n const tokenizedCriteria = parse(criteria + '');\n const tokens = [createToken(valueToTest, TOKEN_TYPE_LITERAL)].concat(\n tokenizedCriteria\n );\n\n computedResult = compute(tokens);\n }\n\n // Criterias are calculated as AND so any `false` breaks the loop as unmeet condition\n if (!computedResult) {\n isMetCondition = false;\n break\n }\n\n isMetCondition = true;\n }\n\n if (isMetCondition) {\n values.push(range[i]);\n }\n }\n return values\n}\n\nfunction isDefined(arg) {\n return arg !== undefined && arg !== null\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns information about the formatting, location, or contents of a value.\n *\n * Category: Information\n *\n * @returns\n */\nfunction CELL() {\n throw new Error('CELL is not implemented')\n}\n\nconst ERROR = {};\n\nERROR.TYPE = (error_val) => {\n switch (error_val) {\n case nil:\n return 1\n case div0:\n return 2\n case value:\n return 3\n case ref:\n return 4\n case name:\n return 5\n case num:\n return 6\n case na:\n return 7\n case data:\n return 8\n }\n\n return na\n};\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns information about the current operating environment.\n *\n * Category: Information\n *\n * @returns\n */\nfunction INFO() {\n throw new Error('INFO is not implemented')\n}\n\n/**\n * Returns TRUE if the value is blank.\n *\n * Category: Information\n *\n * @param {*} value The value that you want tested. The value argument can be a blank (empty value), error, logical value, text, number, or reference value, or a name referring to any of these.\n * @returns\n */\nfunction ISBLANK(value) {\n return value === null\n}\n\n/**\n * Returns TRUE if the value is any error value except #N/A.\n *\n * Category: Information\n *\n * @param {*} value The value that you want tested. The value argument can be a blank (empty value), error, logical value, text, number, or reference value, or a name referring to any of these.\n * @returns\n */\nfunction ISERR(value$1) {\n return (\n [value, ref, div0, num, name, nil].indexOf(value$1) >= 0 ||\n (typeof value$1 === 'number' && (isNaN(value$1) || !isFinite(value$1)))\n )\n}\n\n/**\n * Returns TRUE if the value is any error value.\n *\n * Category: Information\n *\n * @param {*} value The value that you want tested. The value argument can be a blank (empty value), error, logical value, text, number, or reference value, or a name referring to any of these.\n * @returns\n */\nfunction ISERROR(value) {\n return ISERR(value) || value === na\n}\n\n/**\n * Returns TRUE if the number is even.\n *\n * Category: Information\n *\n * @param {*} number The value to test. If number is not an integer, it is truncated.\n * @returns\n */\nfunction ISEVEN(number) {\n return !(Math.floor(Math.abs(number)) & 1)\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns TRUE if there is a reference to a value that contains a formula.\n *\n * Category: Information\n *\n * @param {*} reference Reference is a reference to the value you want to test. Reference can be a value reference, a formula, or a name that refers to a value.\n * @returns\n */\nfunction ISFORMULA() {\n throw new Error('ISFORMULA is not implemented')\n}\n\n/**\n * Returns TRUE if the value is a logical value.\n *\n * Category: Information\n *\n * @param {*} value The value that you want tested. The value argument can be a blank (empty value), error, logical value, text, number, or reference value, or a name referring to any of these.\n * @returns\n */\nfunction ISLOGICAL(value) {\n return value === true || value === false\n}\n\n/**\n * Returns TRUE if the value is the #N/A error value.\n *\n * Category: Information\n *\n * @param {*} value The value that you want tested. The value argument can be a blank (empty value), error, logical value, text, number, or reference value, or a name referring to any of these.\n * @returns\n */\nfunction ISNA(value) {\n return value === na\n}\n\n/**\n * Returns TRUE if the value is not text.\n *\n * Category: Information\n *\n * @param {*} value The value that you want tested. The value argument can be a blank (empty value), error, logical value, text, number, or reference value, or a name referring to any of these.\n * @returns\n */\nfunction ISNONTEXT(value) {\n return typeof value !== 'string'\n}\n\n/**\n * Returns TRUE if the value is a number.\n *\n * Category: Information\n *\n * @param {*} value The value that you want tested. The value argument can be a blank (empty value), error, logical value, text, number, or reference value, or a name referring to any of these.\n * @returns\n */\nfunction ISNUMBER(value) {\n return typeof value === 'number' && !isNaN(value) && isFinite(value)\n}\n\n/**\n * Returns TRUE if the number is odd.\n *\n * Category: Information\n *\n * @param {*} value The value that you want tested. The value argument can be a blank (empty value), error, logical value, text, number, or reference value, or a name referring to any of these.\n * @returns\n */\nfunction ISODD(value) {\n return !!(Math.floor(Math.abs(value)) & 1)\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns TRUE if the value is a reference.\n *\n * Category: Information\n *\n * @param {*} value The value that you want tested. The value argument can be a blank (empty value), error, logical value, text, number, or reference value, or a name referring to any of these.\n * @returns\n */\nfunction ISREF() {\n throw new Error('ISREF is not implemented')\n}\n\n/**\n * Returns TRUE if the value is text.\n *\n * Category: Information\n *\n * @param {*} value The value that you want tested. The value argument can be a blank (empty value), error, logical value, text, number, or reference value, or a name referring to any of these.\n * @returns\n */\nfunction ISTEXT(value) {\n return typeof value === 'string'\n}\n\n/**\n * Returns a value converted to a number.\n *\n * Category: Information\n *\n * @param {*} value The value you want converted. N converts values listed in the following table.\n * @returns\n */\nfunction N(value) {\n if (ISNUMBER(value)) {\n return value\n }\n\n if (value instanceof Date) {\n return value.getTime()\n }\n\n if (value === true) {\n return 1\n }\n\n if (value === false) {\n return 0\n }\n\n if (ISERROR(value)) {\n return value\n }\n\n return 0\n}\n\n/**\n * Returns the error value #N/A.\n *\n * Category: Information\n *\n * @returns\n */\nfunction NA() {\n return na\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the sheet number of the referenced sheet.\n *\n * Category: Information\n *\n * @param {*} value Optional. Value is the name of a sheet or a reference for which you want the sheet number. If value is omitted, SHEET returns the number of the sheet that contains the function.\n * @returns\n */\nfunction SHEET() {\n throw new Error('SHEET is not implemented')\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the number of sheets in a reference.\n *\n * Category: Information\n *\n * @param {*} reference Optional. Reference is a reference for which you want to know the number of sheets it contains. If Reference is omitted, SHEETS returns the number of sheets in the workbook that contains the function.\n * @returns\n */\nfunction SHEETS() {\n throw new Error('SHEETS is not implemented')\n}\n\n/**\n * Returns a number indicating the data type of a value.\n *\n * Category: Information\n *\n * @param {*} value Can be any Microsoft Excel value, such as a number, text, logical value, and so on.\n * @returns\n */\nfunction TYPE(value) {\n if (ISNUMBER(value)) {\n return 1\n }\n\n if (ISTEXT(value)) {\n return 2\n }\n\n if (ISLOGICAL(value)) {\n return 4\n }\n\n if (ISERROR(value)) {\n return 16\n }\n\n if (Array.isArray(value)) {\n return 64\n }\n}\n\n/**\n * Chooses a value from a list of values.\n *\n * Category: Lookup and reference\n *\n * @param {*} index_num Specifies which value argument is selected. Index_num must be a number between 1 and 254, or a formula or reference to a value containing a number between 1 and 254. If index_num is 1, CHOOSE returns value1; if it is 2, CHOOSE returns value2; and so on. If index_num is less than 1 or greater than the number of the last value in the list, CHOOSE returns the #VALUE! error value. If index_num is a fraction, it is truncated to the lowest integer before being used.\n - If index_num is 1, CHOOSE returns value1; if it is 2, CHOOSE returns value2; and so on.\n - If index_num is less than 1 or greater than the number of the last value in the list, CHOOSE returns the #VALUE! error value.\n - If index_num is a fraction, it is truncated to the lowest integer before being used.\n * @param {*} args value1, value2, ... Value 1 is required, subsequent values are optional. 1 to 254 value arguments from which CHOOSE selects a value or an action to perform based on index_num. The arguments can be numbers, value references, defined names, formulas, functions, or text.\n * @returns\n */\nfunction CHOOSE() {\n if (arguments.length < 2) {\n return na\n }\n\n const index = arguments[0];\n\n if (index < 1 || index > 254) {\n return value\n }\n\n if (arguments.length < index + 1) {\n return value\n }\n\n return arguments[index]\n}\n\n/**\n * Returns the column number of a reference.\n *\n * Category: Lookup and reference\n *\n * @param {*} reference the value or range of values for which you want to return the column number.\n * @param {*} index\n * @returns\n */\nfunction COLUMN(reference, index) {\n if (arguments.length !== 2) {\n return na\n }\n\n if (index < 0) {\n return num\n }\n\n if (!(reference instanceof Array) || typeof index !== 'number') {\n return value\n }\n\n if (reference.length === 0) {\n return undefined\n }\n\n return jStat.col(reference, index)\n}\n\n/**\n * Returns the number of columns in a reference.\n *\n * Category: Lookup and reference\n *\n * @param {*} array An array or array formula, or a reference to a range of values for which you want the number of columns.\n * @returns\n */\nfunction COLUMNS(array) {\n if (arguments.length !== 1) {\n return na\n }\n\n if (!(array instanceof Array)) {\n return value\n }\n\n if (array.length === 0) {\n return 0\n }\n\n return jStat.cols(array)\n}\n\n/**\n * Looks in the top row of an array and returns the value of the indicated value.\n *\n * Category: Lookup and reference\n *\n * @param {*} lookup_value The value to be found in the first row of the table. Lookup_value can be a value, a reference, or a text string.\n * @param {*} table_array A table of information in which data is looked up. Use a reference to a range or a range name.\n * @param {*} row_index_num The row number in table_array from which the matching value will be returned. A row_index_num of 1 returns the first row value in table_array, a row_index_num of 2 returns the second row value in table_array, and so on. If row_index_num is less than 1, HLOOKUP returns the #VALUE! error value; if row_index_num is greater than the number of rows on table_array, HLOOKUP returns the #REF! error value.\n * @param {*} range_lookup Optional. A logical value that specifies whether you want HLOOKUP to find an exact match or an approximate match. If TRUE or omitted, an approximate match is returned. In other words, if an exact match is not found, the next largest value that is less than lookup_value is returned. If FALSE, HLOOKUP will find an exact match. If one is not found, the error value #N/A is returned.\n * @returns\n */\nfunction HLOOKUP(lookup_value, table_array, row_index_num, range_lookup) {\n return VLOOKUP(lookup_value, transpose(table_array), row_index_num, range_lookup)\n}\n\n/**\n * Uses an index to choose a value from a reference or array.\n *\n * Category: Lookup and reference\n *\n * @param {*} array A range of values or an array constant.\n - If array contains only one row or column, the corresponding row_num or column_num argument is optional.\n - If array has more than one row and more than one column, and only row_num or column_num is used, INDEX returns an array of the entire row or column in array.\n * @param {*} row_num Required, unless column_num is present. Selects the row in array from which to return a value. If row_num is omitted, column_num is required.\n * @param {*} column_num Optional. Selects the column in array from which to return a value. If column_num is omitted, row_num is required.\n * @returns\n */\nfunction INDEX(array, row_num, column_num) {\n const someError = anyError(array, row_num, column_num);\n\n if (someError) {\n return someError\n }\n\n if (!Array.isArray(array)) {\n return value\n }\n\n const isOneDimensionRange = array.length > 0 && !Array.isArray(array[0]);\n\n if (isOneDimensionRange && !column_num) {\n column_num = row_num;\n row_num = 1;\n } else {\n column_num = column_num || 1;\n row_num = row_num || 1;\n }\n\n if (column_num < 0 || row_num < 0) {\n return value\n }\n\n if (isOneDimensionRange && row_num === 1 && column_num <= array.length) {\n return array[column_num - 1]\n } else if (row_num <= array.length && column_num <= array[row_num - 1].length) {\n return array[row_num - 1][column_num - 1]\n }\n\n return ref\n}\n\n/**\n * Looks up values in a vector or array.\n *\n * Category: Lookup and reference\n *\n * @param {*} lookup_value A value that LOOKUP searches for in an array. The lookup_value argument can be a number, text, a logical value, or a name or reference that refers to a value.\n - If LOOKUP can't find the value of lookup_value, it uses the largest value in the array that is less than or equal to lookup_value.\n - If the value of lookup_value is smaller than the smallest value in the first row or column (depending on the array dimensions), LOOKUP returns the #N/A error value.\n * @param {*} array A range of values that contains text, numbers, or logical values that you want to compare with lookup_value. The array form of LOOKUP is very similar to the HLOOKUP and VLOOKUP functions. The difference is that HLOOKUP searches for the value of lookup_value in the first row, VLOOKUP searches in the first column, and LOOKUP searches according to the dimensions of array.\n* @param {*} result_array Optional. A range that contains only one row or column. The result_array argument must be the same size as lookup_value. It has to be the same size.\n * @returns\n */\nfunction LOOKUP(lookup_value, array, result_array) {\n array = flatten(array);\n result_array = result_array ? flatten(result_array) : array;\n\n const isNumberLookup = typeof lookup_value === 'number';\n let result = na;\n\n for (let i = 0; i < array.length; i++) {\n if (array[i] === lookup_value) {\n return result_array[i]\n } else if (\n (isNumberLookup && array[i] <= lookup_value) ||\n (typeof array[i] === 'string' && array[i].localeCompare(lookup_value) < 0)\n ) {\n result = result_array[i];\n } else if (isNumberLookup && array[i] > lookup_value) {\n return result\n }\n }\n\n return result\n}\n\n/**\n * Looks up values in a reference or array.\n *\n * Category: Lookup and reference\n *\n * @param {*} lookup_value The value that you want to match in lookup_array. For example, when you look up someone's number in a telephone book, you are using the person's name as the lookup value, but the telephone number is the value you want.The lookup_value argument can be a value (number, text, or logical value) or a value reference to a number, text, or logical value.\n * @param {*} lookup_array The range of values being searched.\n * @param {*} match_type Optional. The number -1, 0, or 1. The match_type argument specifies how Excel matches lookup_value with values in lookup_array. The default value for this argument is 1.\n * @returns\n */\nfunction MATCH(lookup_value, lookup_array, match_type) {\n if ((!lookup_value && lookup_value !== 0) || !lookup_array) {\n return na\n }\n\n if (arguments.length === 2) {\n match_type = 1;\n }\n\n lookup_array = flatten(lookup_array);\n\n if (!(lookup_array instanceof Array)) {\n return na\n }\n\n if (match_type !== -1 && match_type !== 0 && match_type !== 1) {\n return na\n }\n\n let index;\n let indexValue;\n\n for (let idx = 0; idx < lookup_array.length; idx++) {\n if (match_type === 1) {\n if (lookup_array[idx] === lookup_value) {\n return idx + 1\n } else if (lookup_array[idx] < lookup_value) {\n if (!indexValue) {\n index = idx + 1;\n indexValue = lookup_array[idx];\n } else if (lookup_array[idx] > indexValue) {\n index = idx + 1;\n indexValue = lookup_array[idx];\n }\n }\n } else if (match_type === 0) {\n if (typeof lookup_value === 'string' && typeof lookup_array[idx] === 'string') {\n const lookupValueStr = lookup_value\n .toLowerCase()\n .replace(/\\?/g, '.')\n .replace(/\\*/g, '.*')\n .replace(/~/g, '\\\\')\n .replace(/\\+/g, '\\\\+')\n .replace(/\\(/g, '\\\\(')\n .replace(/\\)/g, '\\\\)')\n .replace(/\\[/g, '\\\\[')\n .replace(/\\]/g, '\\\\]');\n\n const regex = new RegExp('^' + lookupValueStr + '$');\n\n if (regex.test(lookup_array[idx].toLowerCase())) {\n return idx + 1\n }\n } else {\n if (lookup_array[idx] === lookup_value) {\n return idx + 1\n }\n }\n } else if (match_type === -1) {\n if (lookup_array[idx] === lookup_value) {\n return idx + 1\n } else if (lookup_array[idx] > lookup_value) {\n if (!indexValue) {\n index = idx + 1;\n indexValue = lookup_array[idx];\n } else if (lookup_array[idx] < indexValue) {\n index = idx + 1;\n indexValue = lookup_array[idx];\n }\n }\n }\n }\n\n return index || na\n}\n\n/**\n * Returns the number of rows in a reference.\n *\n * Category: Lookup and reference\n *\n * @param {*} array An array, an array formula, or a reference to a range of values for which you want the number of rows.\n * @returns\n */\nfunction ROWS(array) {\n if (arguments.length !== 1) {\n return na\n }\n\n if (!(array instanceof Array)) {\n return value\n }\n\n if (array.length === 0) {\n return 0\n }\n\n return jStat.rows(array)\n}\n/**\n * Returns a sorted array of the elements in an array. The returned array is the same shape as the provided array argument.\n *\n * Category: Lookup and reference\n *\n * @param {*} array Array to sort\n * @param {*} sort_index Optional. A number indicating the row or column to sort by\n * @param {*} sort_order Optional. A number indicating the desired sort order; 1 for ascending order (default), -1 for descending order\n * @param {*} by_col Optional. A logical value indicating the desired sort direction; FALSE to sort by row (default), TRUE to sort by column\n * @returns\n */\nfunction SORT(array, sort_index = 1, sort_order = 1, by_col = false) {\n if (!array || !Array.isArray(array)) {\n return na\n }\n\n if (array.length === 0) {\n return 0\n }\n\n sort_index = parseNumber(sort_index);\n if (!sort_index || sort_index < 1) {\n return value\n }\n\n sort_order = parseNumber(sort_order);\n if (sort_order !== 1 && sort_order !== -1) {\n return value\n }\n\n by_col = parseBool(by_col);\n if (typeof by_col !== 'boolean') {\n return name\n }\n\n const sortArray = (arr) =>\n arr.sort((a, b) => {\n a = parseString(a[sort_index - 1]);\n b = parseString(b[sort_index - 1]);\n\n return sort_order === 1 ? (a < b ? sort_order * -1 : sort_order) : a > b ? sort_order : sort_order * -1\n });\n\n const matrix = fillMatrix(array);\n const result = by_col ? transpose(matrix) : matrix;\n\n return sort_index >= 1 && sort_index <= result[0].length\n ? by_col\n ? transpose(sortArray(result))\n : sortArray(result)\n : value\n}\n\n/**\n * Returns the transpose of an array.\n *\n * Category: Lookup and reference\n *\n * @param {*} array An array or range of values on a worksheet that you want to transpose. The transpose of an array is created by using the first row of the array as the first column of the new array, the second row of the array as the second column of the new array, and so on. If you're not sure of how to enter an array formula, see Create an array formula.\n * @returns\n */\nfunction TRANSPOSE(array) {\n if (!array) {\n return na\n }\n\n const matrix = fillMatrix(array);\n\n return transpose(matrix)\n}\n\n/**\n * Returns a list of unique values in a list or range.\n *\n * Category: Lookup and reference\n *\n * @returns\n */\nfunction UNIQUE() {\n const result = [];\n\n for (let i = 0; i < arguments.length; ++i) {\n let hasElement = false;\n const element = arguments[i];\n\n // Check if we've already seen this element.\n\n for (let j = 0; j < result.length; ++j) {\n hasElement = result[j] === element;\n\n if (hasElement) {\n break\n }\n }\n\n // If we did not find it, add it to the result.\n if (!hasElement) {\n result.push(element);\n }\n }\n\n return result\n}\n\n/**\n * Looks in the first column of an array and moves across the row to return the value of a value.\n *\n * Category: Lookup and reference\n *\n * @param {*} lookup_value The value to be found in the first row of the table. Lookup_value can be a value, a reference, or a text string.\n * @param {*} table_array A table of information in which data is looked up. Use a reference to a range or a range name.\n * @param {*} col_index_num The row number in table_array from which the matching value will be returned. A row_index_num of 1 returns the first row value in table_array, a row_index_num of 2 returns the second row value in table_array, and so on. If row_index_num is less than 1, HLOOKUP returns the #VALUE! error value; if row_index_num is greater than the number of rows on table_array, HLOOKUP returns the #REF! error value.\n * @param {*} range_lookup Optional. A logical value that specifies whether you want HLOOKUP to find an exact match or an approximate match. If TRUE or omitted, an approximate match is returned. In other words, if an exact match is not found, the next largest value that is less than lookup_value is returned. If FALSE, HLOOKUP will find an exact match. If one is not found, the error value #N/A is returned.\n * @returns\n */\nfunction VLOOKUP(lookup_value, table_array, col_index_num, range_lookup) {\n if (!table_array || !col_index_num) {\n return na\n }\n\n range_lookup = !(range_lookup === 0 || range_lookup === false);\n\n let result = na;\n let exactMatchOnly = false;\n\n const isNumberLookup = typeof lookup_value === 'number';\n const lookupValue = typeof lookup_value === 'string' ? lookup_value.toLowerCase() : lookup_value;\n\n for (let i = 0; i < table_array.length; i++) {\n const row = table_array[i];\n const rowValue = typeof row[0] === 'string' ? row[0].toLowerCase() : row[0];\n\n if (rowValue === lookupValue) {\n result = col_index_num < row.length + 1 ? row[col_index_num - 1] : ref;\n break\n } else if (\n !exactMatchOnly &&\n ((isNumberLookup && range_lookup && rowValue <= lookup_value) ||\n (range_lookup && typeof rowValue === 'string' && rowValue.localeCompare(lookup_value) < 0))\n ) {\n result = col_index_num < row.length + 1 ? row[col_index_num - 1] : ref;\n }\n\n if (isNumberLookup && rowValue > lookup_value) {\n exactMatchOnly = true;\n }\n }\n\n return result\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Changes full-width (double-byte) English letters or katakana within a character string to half-width (single-byte) characters.\n *\n * Category: Text\n *\n * @param {*} text The text or a reference to a value that contains the text you want to change. If text does not contain any full-width letters, text is not changed.\n * @returns\n */\nfunction ASC() {\n throw new Error('ASC is not implemented')\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Converts a number to text, using the \u00DF (baht) currency format.\n *\n * Category: Text\n *\n * @param {*} number A number you want to convert to text, or a reference to a value containing a number, or a formula that evaluates to a number.\n * @returns\n */\nfunction BAHTTEXT() {\n throw new Error('BAHTTEXT is not implemented')\n}\n\n/**\n * Returns the character specified by the code number.\n *\n * Category: Text\n *\n * @param {*} number A number between 1 and 255 specifying which character you want. The character is from the character set used by your computer. Note: Excel for the web supports only CHAR(9), CHAR(10), CHAR(13), and CHAR(32) and above.\n * @returns\n */\nfunction CHAR(number) {\n number = parseNumber(number);\n\n if (number === 0) {\n return value\n }\n\n if (number instanceof Error) {\n return number\n }\n\n return String.fromCharCode(number)\n}\n\n/**\n * Removes all nonprintable characters from text.\n *\n * Category: Text\n *\n * @param {*} text Any worksheet information from which you want to remove nonprintable characters.\n * @returns\n */\nfunction CLEAN(text) {\n if (anyIsError(text)) {\n return text\n }\n\n text = text || '';\n const re = /[\\0-\\x1F]/g;\n\n return text.replace(re, '')\n}\n\n/**\n * Returns a numeric code for the first character in a text string.\n *\n * Category: Text\n *\n * @param {*} text The text for which you want the code of the first character.\n * @returns\n */\nfunction CODE(text) {\n if (anyIsError(text)) {\n return text\n }\n\n text = text || '';\n let result = text.charCodeAt(0);\n\n if (isNaN(result)) {\n result = value;\n }\n\n return result\n}\n\n/**\n * Joins several text items into one text item.\n *\n * Category: Text\n *\n * @returns\n */\nfunction CONCATENATE() {\n const args = flatten(arguments);\n const someError = anyError.apply(undefined, args);\n\n if (someError) {\n return someError\n }\n\n let trueFound = 0;\n\n while ((trueFound = args.indexOf(true)) > -1) {\n args[trueFound] = 'TRUE';\n }\n\n let falseFound = 0;\n\n while ((falseFound = args.indexOf(false)) > -1) {\n args[falseFound] = 'FALSE';\n }\n\n return args.join('')\n}\n\nconst CONCAT = CONCATENATE;\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Changes half-width (single-byte) English letters or katakana within a character string to full-width (double-byte) characters.\n *\n * Category: Text\n *\n * @param {*} text The text or a reference to a value that contains the text you want to change. If text does not contain any half-width English letters or katakana, text is not changed.\n * @returns\n */\nfunction DBCS() {\n throw new Error('DBCS is not implemented')\n}\n\n/**\n * Converts a number to text, using the $ (dollar) currency format.\n *\n * Category: Text\n *\n * @param {*} number A number, a reference to a value containing a number, or a formula that evaluates to a number.\n * @param {*} decimals Optional. The number of digits to the right of the decimal point. If this is negative, the number is rounded to the left of the decimal point. If you omit decimals, it is assumed to be 2.\n * @returns\n */\nfunction DOLLAR(number, decimals = 2) {\n number = parseNumber(number);\n if (isNaN(number)) {\n return value\n }\n\n number = ROUND(number, decimals);\n\n const options = {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: decimals >= 0 ? decimals : 0,\n maximumFractionDigits: decimals >= 0 ? decimals : 0\n };\n\n const formattedNumber = number.toLocaleString('en-US', options);\n\n if (number < 0) {\n return '$(' + formattedNumber.slice(2) + ')'\n }\n\n return formattedNumber\n}\n\n/**\n * Checks to see if two text values are identical.\n *\n * Category: Text\n *\n * @param {*} text1 The first text string.\n * @param {*} text2 The second text string.\n * @returns\n */\nfunction EXACT(text1, text2) {\n if (arguments.length !== 2) {\n return na\n }\n\n const someError = anyError(text1, text2);\n\n if (someError) {\n return someError\n }\n\n text1 = parseString(text1);\n text2 = parseString(text2);\n\n return text1 === text2\n}\n\n/**\n * Locate one text string within a second text string, and return the number of the starting position of the first text string from the first character of the second text string.\n *\n * Category: Text\n *\n * @param {*} find_text The text you want to find.\n * @param {*} within_text The text containing the text you want to find.\n * @param {*} start_num Optional. Specifies the character at which to start the search. The first character in within_text is character number 1. If you omit start_num, it is assumed to be 1.\n * @returns\n */\nfunction FIND(find_text, within_text, start_num) {\n if (arguments.length < 2) {\n return na\n }\n\n find_text = parseString(find_text);\n within_text = parseString(within_text);\n start_num = start_num === undefined ? 0 : start_num;\n const found_index = within_text.indexOf(find_text, start_num - 1);\n\n if (found_index === -1) {\n return value\n }\n\n return found_index + 1\n}\n\n/**\n * Formats a number as text with a fixed number of decimals.\n *\n * Category: Text\n *\n * @param {*} number The number you want to round and convert to text.\n * @param {*} decimals Optional. The number of digits to the right of the decimal point.\n * @param {*} no_commas Optional. A logical value that, if TRUE, prevents FIXED from including commas in the returned text.\n * @returns\n */\nfunction FIXED(number, decimals = 2, no_commas = false) {\n number = parseNumber(number);\n if (isNaN(number)) {\n return value\n }\n\n decimals = parseNumber(decimals);\n if (isNaN(decimals)) {\n return value\n }\n\n if (decimals < 0) {\n const factor = Math.pow(10, -decimals);\n number = Math.round(number / factor) * factor;\n } else {\n number = number.toFixed(decimals);\n }\n\n if (no_commas) {\n number = number.toString().replace(/,/g, '');\n } else {\n const parts = number.toString().split('.');\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+$)/g, ',');\n number = parts.join('.');\n }\n\n return number\n}\n\n/**\n * Returns the leftmost characters from a text value.\n *\n * Category: Text\n *\n * @param {*} text The text string that contains the characters you want to extract.\n * @param {*} num_chars Optional. Specifies the number of characters you want LEFT to extract.\n * @returns\n */\nfunction LEFT(text, num_chars) {\n const someError = anyError(text, num_chars);\n\n if (someError) {\n return someError\n }\n\n text = parseString(text);\n num_chars = num_chars === undefined ? 1 : num_chars;\n num_chars = parseNumber(num_chars);\n\n if (num_chars instanceof Error || typeof text !== 'string') {\n return value\n }\n\n return text.substring(0, num_chars)\n}\n\n/**\n * Returns the number of characters in a text string\n *\n * Category: Text\n *\n * @param {*} text The text whose length you want to find. Spaces count as characters.\n * @returns\n */\nfunction LEN(text) {\n if (arguments.length === 0) {\n return error\n }\n\n if (text instanceof Error) {\n return text\n }\n\n if (Array.isArray(text)) {\n return value\n }\n\n const textAsString = parseString(text);\n\n return textAsString.length\n}\n\n/**\n * Converts text to lowercase.\n *\n * Category: Text\n *\n * @param {*} text The text you want to convert to lowercase. LOWER does not change characters in text that are not letters.\n * @returns\n */\nfunction LOWER(text) {\n if (arguments.length !== 1) {\n return value\n }\n\n text = parseString(text);\n\n if (anyIsError(text)) {\n return text\n }\n\n return text.toLowerCase()\n}\n\n/**\n * Returns a specific number of characters from a text string starting at the position you specify\n *\n * Category: Text\n *\n * @param {*} text The text string containing the characters you want to extract.\n * @param {*} start_num The position of the first character you want to extract in text. The first character in text has start_num 1, and so on.\n * @param {*} num_chars Specifies the number of characters you want MID to return from text.\n * @returns\n */\nfunction MID(text, start_num, num_chars) {\n if (start_num === undefined || start_num === null) {\n return value\n }\n\n start_num = parseNumber(start_num);\n num_chars = parseNumber(num_chars);\n\n if (anyIsError(start_num, num_chars) || typeof text !== 'string') {\n return num_chars\n }\n\n const begin = start_num - 1;\n const end = begin + num_chars;\n\n return text.substring(begin, end)\n}\n\n// TODO\n/**\n * Converts text to number in a locale-independent manner.\n *\n * Category: Text\n *\n * @param {*} text The text to convert to a number.\n * @param {*} decimal_separator Optional. The character used to separate the integer and fractional part of the result.\n * @param {*} group_separator Optional. The character used to separate groupings of numbers, such as thousands from hundreds and millions from thousands.\n * @returns\n */\nfunction NUMBERVALUE(text, decimal_separator, group_separator) {\n text = isDefined(text) ? text : '';\n\n if (typeof text === 'number') {\n return text\n }\n\n if (typeof text !== 'string') {\n return na\n }\n\n decimal_separator = typeof decimal_separator === 'undefined' ? '.' : decimal_separator;\n group_separator = typeof group_separator === 'undefined' ? ',' : group_separator;\n\n return Number(text.replace(decimal_separator, '.').replace(group_separator, ''))\n}\n\n// TODO\n/**\n * -- Not implemented --\n */\nfunction PRONETIC() {\n throw new Error('PRONETIC is not implemented')\n}\n\n/**\n * Capitalizes the first letter in each word of a text value.\n *\n * Category: Text\n *\n * @param {*} text Text enclosed in quotation marks, a formula that returns text, or a reference to a value containing the text you want to partially capitalize.\n * @returns\n */\nfunction PROPER(text) {\n if (anyIsError(text)) {\n return text\n }\n\n if (isNaN(text) && typeof text === 'number') {\n return value\n }\n\n text = parseString(text);\n\n return text.replace(/\\w\\S*/g, (txt) => txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase())\n}\n\n/**\n * Replaces characters within text\n *\n * Category: Text\n *\n * @param {*} old_text Text in which you want to replace some characters.\n * @param {*} num_chars The number of characters in old_text that you want REPLACE to replace with new_text.\n * @param {*} length he number of characters in old_text that you want REPLACEB to replace with new_text.\n * @param {*} new_text he text that will replace characters in old_text.\n * @returns\n */\nfunction REPLACE(old_text, num_chars, length, new_text) {\n num_chars = parseNumber(num_chars);\n length = parseNumber(length);\n\n if (anyIsError(num_chars, length) || typeof old_text !== 'string' || typeof new_text !== 'string') {\n return value\n }\n\n return old_text.substr(0, num_chars - 1) + new_text + old_text.substr(num_chars - 1 + length)\n}\n\n/**\n * Repeats text a given number of times.\n *\n * Category: Text\n *\n * @param {*} text The text you want to repeat.\n * @param {*} number_times A positive number specifying the number of times to repeat text.\n * @returns\n */\nfunction REPT(text, number_times) {\n const someError = anyError(text, number_times);\n\n if (someError) {\n return someError\n }\n\n text = parseString(text);\n number_times = parseNumber(number_times);\n\n if (number_times instanceof Error) {\n return number_times\n }\n\n return new Array(number_times + 1).join(text)\n}\n\n/**\n * Returns the rightmost characters from a text value\n *\n * Category: Text\n *\n * @param {*} text The text string containing the characters you want to extract.\n * @param {*} num_chars Optional. Specifies the number of characters you want RIGHT to extract.\n * @returns\n */\nfunction RIGHT(text, num_chars) {\n const someError = anyError(text, num_chars);\n\n if (someError) {\n return someError\n }\n\n text = parseString(text);\n num_chars = num_chars === undefined ? 1 : num_chars;\n num_chars = parseNumber(num_chars);\n\n if (num_chars instanceof Error) {\n return num_chars\n }\n\n return text.substring(text.length - num_chars)\n}\n\n/**\n * Finds one text value within another (not case-sensitive)\n *\n * Category: Text\n *\n * @param {*} find_text The text that you want to find.\n * @param {*} within_text The text in which you want to search for the value of the find_text argument.\n * @param {*} start_num Optional. The character number in the within_text argument at which you want to start searching.\n * @returns\n */\nfunction SEARCH(find_text, within_text, start_num) {\n let foundAt;\n\n if (typeof find_text !== 'string' || typeof within_text !== 'string') {\n return value\n }\n\n start_num = start_num === undefined ? 0 : start_num;\n foundAt = within_text.toLowerCase().indexOf(find_text.toLowerCase(), start_num - 1) + 1;\n\n return foundAt === 0 ? value : foundAt\n}\n\n/**\n * Substitutes new text for old text in a text string.\n *\n * Category: Text\n *\n * @param {*} text The text or the reference to a value containing text for which you want to substitute characters.\n * @param {*} old_text The text you want to replace.\n * @param {*} new_text The text you want to replace old_text with.\n * @param {*} instance_num Optional. Specifies which occurrence of old_text you want to replace with new_text. If you specify instance_num, only that instance of old_text is replaced. Otherwise, every occurrence of old_text in text is changed to new_text.\n * @returns\n */\nfunction SUBSTITUTE(text, old_text, new_text, instance_num) {\n if (arguments.length < 3) {\n return na\n }\n\n if (!text || !old_text) {\n return text\n } else if (instance_num === undefined) {\n return text.split(old_text).join(new_text)\n } else {\n instance_num = Math.floor(Number(instance_num));\n\n if (Number.isNaN(instance_num) || instance_num <= 0) {\n return value\n }\n\n let index = 0;\n let i = 0;\n\n while (index > -1 && text.indexOf(old_text, index) > -1) {\n index = text.indexOf(old_text, index + 1);\n i++;\n\n if (index > -1 && i === instance_num) {\n return text.substring(0, index) + new_text + text.substring(index + old_text.length)\n }\n }\n\n return text\n }\n}\n\n/**\n * Converts its arguments to text.\n *\n * Category: Text\n *\n * @param {*} value The value you want to test.\n * @returns\n */\nfunction T(value) {\n if (value instanceof Error) {\n return value\n }\n\n return typeof value === 'string' ? value : ''\n}\n\n/**\n * Formats a number and converts it to text.\n *\n * Category: Text\n *\n * @param {*} value A numeric value that you want to be converted into text.\n * @param {*} format_text A text string that defines the formatting that you want to be applied to the supplied value.\n * @returns\n */\nfunction TEXT(value$1, format_text) {\n if (value$1 === undefined || value$1 instanceof Error || format_text instanceof Error) {\n return na\n }\n\n if (value$1 instanceof Date) {\n return value$1.toISOString().slice(0, 10)\n }\n\n if (format_text === undefined || format_text === null) {\n return ''\n }\n\n if (typeof format_text === 'number') {\n return String(format_text)\n }\n\n if (typeof format_text !== 'string') {\n return value\n }\n\n const currencySymbol = format_text.startsWith('$') ? '$' : '';\n const isPercent = format_text.endsWith('%');\n format_text = format_text.replace(/%/g, '').replace(/\\$/g, '');\n\n // count all 0s after the decimal point\n const decimalPlaces = format_text.includes('.') ? format_text.split('.')[1].match(/0/g).length : 0;\n\n const noCommas = !format_text.includes(',');\n\n if (isPercent) {\n value$1 = value$1 * 100;\n }\n\n value$1 = FIXED(value$1, decimalPlaces, noCommas);\n\n if (value$1.startsWith('-')) {\n value$1 = value$1.replace('-', '');\n value$1 = '-' + currencySymbol + value$1;\n } else {\n value$1 = currencySymbol + value$1;\n }\n\n if (isPercent) {\n value$1 = value$1 + '%';\n }\n\n return value$1\n}\n\n/**\n * Combines the text from multiple ranges and/or strings.\n *\n * Category: Text\n * @param {*} delimiter A text string, either empty, or one or more characters enclosed by double quotes, or a reference to a valid text string. If a number is supplied, it will be treated as text.\n * @param {*} ignore_empty If TRUE, ignores empty values.\n * @param {*} args Text item to be joined. A text string, or array of strings, such as a range of values.\n * @returns\n */\nfunction TEXTJOIN(delimiter, ignore_empty, ...args) {\n if (typeof ignore_empty !== 'boolean') {\n ignore_empty = parseBool(ignore_empty);\n }\n\n if (arguments.length < 3) {\n return na\n }\n\n delimiter = delimiter !== null && delimiter !== undefined ? delimiter : '';\n\n let flatArgs = flatten(args);\n let textToJoin = ignore_empty ? flatArgs.filter((text) => text) : flatArgs;\n\n if (Array.isArray(delimiter)) {\n delimiter = flatten(delimiter);\n\n let chunks = textToJoin.map((item) => [item]);\n let index = 0;\n\n for (let i = 0; i < chunks.length - 1; i++) {\n chunks[i].push(delimiter[index]);\n index++;\n\n if (index === delimiter.length) {\n index = 0;\n }\n }\n\n textToJoin = flatten(chunks);\n\n return textToJoin.join('')\n }\n\n return textToJoin.join(delimiter)\n}\n\n/**\n * Removes spaces from text.\n *\n * Category: Text\n *\n * @param {*} text The text from which you want spaces removed.\n * @returns\n */\nfunction TRIM(text) {\n text = parseString(text);\n\n if (text instanceof Error) {\n return text\n }\n\n return text.replace(/\\s+/g, ' ').trim()\n}\n\nconst UNICHAR = CHAR;\n\nconst UNICODE = CODE;\n\n/**\n * Converts text to uppercase.\n *\n * Category: Text\n *\n * @param {*} text The text you want converted to uppercase. Text can be a reference or text string.\n * @returns\n */\nfunction UPPER(text) {\n text = parseString(text);\n\n if (text instanceof Error) {\n return text\n }\n\n return text.toUpperCase()\n}\n\n/**\n * Converts a text argument to a number.\n *\n * Category: Text\n *\n * @param {*} text The text enclosed in quotation marks or a reference to a value containing the text you want to convert.\n * @returns\n */\nfunction VALUE(text) {\n const anyError$1 = anyError(text);\n\n if (anyError$1) {\n return anyError$1\n }\n\n if (typeof text === 'number') {\n return text\n }\n\n if (!isDefined(text)) {\n text = '';\n }\n\n if (typeof text !== 'string') {\n return value\n }\n\n const isPercent = /(%)$/.test(text) || /^(%)/.test(text);\n text = text.replace(/^[^0-9-]{0,3}/, '');\n text = text.replace(/[^0-9]{0,3}$/, '');\n text = text.replace(/[ ,]/g, '');\n\n if (text === '') {\n return 0\n }\n\n let output = Number(text);\n\n if (isNaN(output)) {\n return value\n }\n\n output = output || 0;\n\n if (isPercent) {\n output = output * 0.01;\n }\n\n return output\n}\n\nconst SQRT2PI = 2.5066282746310002;\n\n/**\n * Returns the average of the absolute deviations of data points from their mean.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Number1 is required, subsequent numbers are optional. 1 to 255 arguments for which you want the average of the absolute deviations. You can also use a single array or a reference to an array instead of arguments separated by commas.\n * @returns\n */\nfunction AVEDEV() {\n const flatArguments = flatten(arguments);\n const flatArgumentsDefined = flatArguments.filter(isDefined);\n\n if (flatArgumentsDefined.length === 0) {\n return num\n }\n\n const range = parseNumberArray(flatArgumentsDefined);\n\n if (range instanceof Error) {\n return range\n }\n\n return jStat.sum(jStat(range).subtract(jStat.mean(range)).abs()[0]) / range.length\n}\n\n/**\n * Returns the average of its arguments.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ...Numbers, value references or ranges for which you want the average.\n * @returns\n */\nfunction AVERAGE() {\n const flatArguments = flatten(arguments);\n const flatArgumentsDefined = flatArguments.filter(isDefined);\n\n if (flatArgumentsDefined.length === 0) {\n return div0\n }\n\n const someError = anyError.apply(undefined, flatArgumentsDefined);\n\n if (someError) {\n return someError\n }\n\n const range = numbers(flatArgumentsDefined);\n const n = range.length;\n\n let sum = 0;\n let count = 0;\n let result;\n\n for (let i = 0; i < n; i++) {\n sum += range[i];\n count += 1;\n }\n\n result = sum / count;\n\n if (isNaN(result)) {\n result = num;\n }\n\n return result\n}\n\n/**\n * Returns the average of its arguments, including numbers, text, and logical values.\n *\n * Category: Statistical\n *\n * @param {*} args value1, value2, ... Value1 is required, subsequent values are optional. 1 to 255 values, ranges of values, or values for which you want the average.\n * @returns\n */\nfunction AVERAGEA() {\n const flatArguments = flatten(arguments);\n const flatArgumentsDefined = flatArguments.filter(isDefined);\n\n if (flatArgumentsDefined.length === 0) {\n return div0\n }\n\n const someError = anyError.apply(undefined, flatArgumentsDefined);\n\n if (someError) {\n return someError\n }\n\n const range = flatArgumentsDefined;\n const n = range.length;\n\n let sum = 0;\n let count = 0;\n let result;\n\n for (let i = 0; i < n; i++) {\n const el = range[i];\n\n if (typeof el === 'number') {\n sum += el;\n }\n\n if (el === true) {\n sum++;\n }\n\n if (el !== null) {\n count++;\n }\n }\n\n result = sum / count;\n\n if (isNaN(result)) {\n result = num;\n }\n\n return result\n}\n\n/**\n * Returns the average (arithmetic mean) of all the values in a range that meet a given criteria.\n *\n * Category: Statistical\n *\n * @param {*} range One or more values to average, including numbers or names, arrays, or references that contain numbers.\n * @param {*} criteria The criteria in the form of a number, expression, value reference, or text that defines which values are averaged.\n * @param {*} average_range Optional. The actual set of values to average. If omitted, range is used.\n * @returns\n */\nfunction AVERAGEIF(range, criteria, average_range) {\n if (arguments.length <= 1) {\n return na\n }\n\n average_range = average_range || range;\n\n const flatAverageRange = flatten(average_range);\n const flatAverageRangeDefined = flatAverageRange.filter(isDefined);\n\n average_range = parseNumberArray(flatAverageRangeDefined);\n range = flatten(range);\n\n if (average_range instanceof Error) {\n return average_range\n }\n\n let average_count = 0;\n let result = 0;\n\n const isWildcard = criteria === void 0 || criteria === '*';\n const tokenizedCriteria = isWildcard ? null : parse(criteria + '');\n\n for (let i = 0; i < range.length; i++) {\n const value = range[i];\n\n if (isWildcard) {\n result += average_range[i];\n average_count++;\n } else {\n const tokens = [createToken(value, TOKEN_TYPE_LITERAL)].concat(tokenizedCriteria);\n\n if (compute(tokens)) {\n result += average_range[i];\n average_count++;\n }\n }\n }\n\n return result / average_count\n}\n\n/**\n * Returns the average (arithmetic mean) of all values that meet multiple criteria.\n *\n * Category: Statistical\n *\n * @param {*} args One or more values to average, including numbers or names, arrays, or references that contain numbers.\n * @returns\n */\nfunction AVERAGEIFS() {\n // Does not work with multi dimensional ranges yet!\n // http://office.microsoft.com/en-001/excel-help/averageifs-function-HA010047493.aspx\n const values = applyCriteria(...arguments);\n const result = values.reduce((acc, value) => acc + value, 0);\n const average = result / values.length;\n\n return isNaN(average) ? 0 : average\n}\n\nconst BETA = {};\n\n/**\n * Returns the beta cumulative distribution function.\n *\n * Category: Statistical\n *\n * @param {*} x The value between A and B at which to evaluate the function\n * @param {*} alpha A parameter of the distribution.\n * @param {*} beta A parameter of the distribution.\n * @param {*} cumulative A logical value that determines the form of the function. If cumulative is TRUE, BETA.DIST returns the cumulative distribution function; if FALSE, it returns the probability density function.\n * @param {*} a Optional. A lower bound to the interval of x.\n * @param {*} b Optional. An upper bound to the interval of x.\n * @returns\n */\nBETA.DIST = function (x, alpha, beta, cumulative, a, b) {\n if (arguments.length < 4) {\n return value\n }\n\n a = a === undefined ? 0 : a;\n b = b === undefined ? 1 : b;\n\n x = parseNumber(x);\n alpha = parseNumber(alpha);\n beta = parseNumber(beta);\n a = parseNumber(a);\n b = parseNumber(b);\n\n if (anyIsError(x, alpha, beta, a, b)) {\n return value\n }\n\n x = (x - a) / (b - a);\n\n return cumulative ? jStat.beta.cdf(x, alpha, beta) : jStat.beta.pdf(x, alpha, beta)\n};\n\n/**\n * Returns the inverse of the cumulative distribution function for a specified beta distribution.\n *\n * Category: Statistical\n *\n * @param {*} probability A probability associated with the beta distribution.\n * @param {*} alpha A parameter of the distribution.\n * @param {*} beta A parameter the distribution.\n * @param {*} a Optional. A lower bound to the interval of x.\n * @param {*} b Optional. An upper bound to the interval of x.\n * @returns\n */\nBETA.INV = (probability, alpha, beta, a, b) => {\n a = a === undefined ? 0 : a;\n b = b === undefined ? 1 : b;\n probability = parseNumber(probability);\n alpha = parseNumber(alpha);\n beta = parseNumber(beta);\n a = parseNumber(a);\n b = parseNumber(b);\n\n if (anyIsError(probability, alpha, beta, a, b)) {\n return value\n }\n\n return jStat.beta.inv(probability, alpha, beta) * (b - a) + a\n};\n\nconst BINOM = {};\n\n/**\n * Returns the individual term binomial distribution probability.\n *\n * Category: Statistical\n *\n * @param {*} number_s The number of successes in trials.\n * @param {*} trials The number of independent trials.\n * @param {*} probability_s The probability of success on each trial.\n * @param {*} cumulative A logical value that determines the form of the function. If cumulative is TRUE, then BINOM.DIST returns the cumulative distribution function, which is the probability that there are at most number_s successes; if FALSE, it returns the probability mass function, which is the probability that there are number_s successes.\n * @returns\n */\nBINOM.DIST = (number_s, trials, probability_s, cumulative) => {\n number_s = parseNumber(number_s);\n trials = parseNumber(trials);\n probability_s = parseNumber(probability_s);\n cumulative = parseNumber(cumulative);\n\n if (anyIsError(number_s, trials, probability_s, cumulative)) {\n return value\n }\n\n return cumulative\n ? jStat.binomial.cdf(number_s, trials, probability_s)\n : jStat.binomial.pdf(number_s, trials, probability_s)\n};\n\n/**\n * Returns the probability of a trial result using a binomial distribution.\n *\n * Category: Statistical\n *\n * @param {*} trials The number of independent trials. Must be greater than or equal to 0.\n * @param {*} probability_s The probability of success in each trial. Must be greater than or equal to 0 and less than or equal to 1.\n * @param {*} number_s The number of successes in trials. Must be greater than or equal to 0 and less than or equal to Trials.\n * @param {*} number_s2 Optional. If provided, returns the probability that the number of successful trials will fall between Number_s and number_s2. Must be greater than or equal to Number_s and less than or equal to Trials.\n * @returns\n */\nBINOM.DIST.RANGE = (trials, probability_s, number_s, number_s2) => {\n number_s2 = number_s2 === undefined ? number_s : number_s2;\n\n trials = parseNumber(trials);\n probability_s = parseNumber(probability_s);\n number_s = parseNumber(number_s);\n number_s2 = parseNumber(number_s2);\n\n if (anyIsError(trials, probability_s, number_s, number_s2)) {\n return value\n }\n\n let result = 0;\n\n for (let i = number_s; i <= number_s2; i++) {\n result += COMBIN(trials, i) * Math.pow(probability_s, i) * Math.pow(1 - probability_s, trials - i);\n }\n\n return result\n};\n\n/**\n * Returns the smallest value for which the cumulative binomial distribution is less than or equal to a criterion value.\n *\n * Category: Statistical\n *\n * @param {*} trials The number of Bernoulli trials.\n * @param {*} probability_s The probability of a success on each trial.\n * @param {*} alpha The criterion value.\n * @returns\n */\nBINOM.INV = (trials, probability_s, alpha) => {\n trials = parseNumber(trials);\n probability_s = parseNumber(probability_s);\n alpha = parseNumber(alpha);\n\n if (anyIsError(trials, probability_s, alpha)) {\n return value\n }\n\n let x = 0;\n\n while (x <= trials) {\n if (jStat.binomial.cdf(x, trials, probability_s) >= alpha) {\n return x\n }\n\n x++;\n }\n};\n\nconst CHISQ = {};\n\n/**\n * Returns the cumulative beta probability density function.\n *\n * Category: Statistical\n *\n * @param {*} x The value at which you want to evaluate the distribution.\n * @param {*} deg_freedom The number of degrees of freedom.\n * @param {*} cumulative A logical value that determines the form of the function. If cumulative is TRUE, CHISQ.DIST returns the cumulative distribution function; if FALSE, it returns the probability density function.\n * @returns\n */\nCHISQ.DIST = (x, deg_freedom, cumulative) => {\n x = parseNumber(x);\n deg_freedom = parseNumber(deg_freedom);\n\n if (anyIsError(x, deg_freedom)) {\n return value\n }\n\n return cumulative ? jStat.chisquare.cdf(x, deg_freedom) : jStat.chisquare.pdf(x, deg_freedom)\n};\n\n/**\n * Returns the one-tailed probability of the chi-squared distribution.\n *\n * Category: Statistical\n *\n * @param {*} x The value at which you want to evaluate the distribution.\n * @param {*} deg_freedom The number of degrees of freedom.\n * @returns\n */\nCHISQ.DIST.RT = (x, deg_freedom) => {\n if (!x | !deg_freedom) {\n return na\n }\n\n if (x < 1 || deg_freedom > Math.pow(10, 10)) {\n return num\n }\n\n if (typeof x !== 'number' || typeof deg_freedom !== 'number') {\n return value\n }\n\n return 1 - jStat.chisquare.cdf(x, deg_freedom)\n};\n\n/**\n * Returns the cumulative beta probability density function.\n *\n * Category: Statistical\n *\n * @param {*} probability A probability associated with the chi-squared distribution.\n * @param {*} deg_freedom The number of degrees of freedom.\n * @returns\n */\nCHISQ.INV = (probability, deg_freedom) => {\n probability = parseNumber(probability);\n deg_freedom = parseNumber(deg_freedom);\n\n if (anyIsError(probability, deg_freedom)) {\n return value\n }\n\n return jStat.chisquare.inv(probability, deg_freedom)\n};\n\n/**\n * Returns the inverse of the one-tailed probability of the chi-squared distribution.\n *\n * Category: Statistical\n *\n * @param {*} probability A probability associated with the chi-squared distribution.\n * @param {*} deg_freedom The number of degrees of freedom.\n * @returns\n */\nCHISQ.INV.RT = (probability, deg_freedom) => {\n if (!probability | !deg_freedom) {\n return na\n }\n\n if (probability < 0 || probability > 1 || deg_freedom < 1 || deg_freedom > Math.pow(10, 10)) {\n return num\n }\n\n if (typeof probability !== 'number' || typeof deg_freedom !== 'number') {\n return value\n }\n\n return jStat.chisquare.inv(1.0 - probability, deg_freedom)\n};\n\n/**\n * Returns the test for independence.\n *\n * Category: Statistical\n *\n * @param {*} actual_range The range of data that contains observations to test against expected values.\n * @param {*} expected_range The range of data that contains the ratio of the product of row totals and column totals to the grand total.\n * @returns\n */\nCHISQ.TEST = function (actual_range, expected_range) {\n if (arguments.length !== 2) {\n return na\n }\n\n if (!(actual_range instanceof Array) || !(expected_range instanceof Array)) {\n return value\n }\n\n if (actual_range.length !== expected_range.length) {\n return value\n }\n\n if (actual_range[0] && expected_range[0] && actual_range[0].length !== expected_range[0].length) {\n return value\n }\n\n const row = actual_range.length;\n\n let tmp, i, j;\n\n // Convert single-dimension array into two-dimension array\n\n for (i = 0; i < row; i++) {\n if (!(actual_range[i] instanceof Array)) {\n tmp = actual_range[i];\n\n actual_range[i] = [];\n actual_range[i].push(tmp);\n }\n\n if (!(expected_range[i] instanceof Array)) {\n tmp = expected_range[i];\n\n expected_range[i] = [];\n expected_range[i].push(tmp);\n }\n }\n\n const col = actual_range[0].length;\n const dof = col === 1 ? row - 1 : (row - 1) * (col - 1);\n\n let xsqr = 0;\n\n const Pi = Math.PI;\n\n for (i = 0; i < row; i++) {\n for (j = 0; j < col; j++) {\n xsqr += Math.pow(actual_range[i][j] - expected_range[i][j], 2) / expected_range[i][j];\n }\n }\n\n // Get independency by X square and its degree of freedom\n function ChiSq(xsqr, dof) {\n let p = Math.exp(-0.5 * xsqr);\n\n if (dof % 2 === 1) {\n p = p * Math.sqrt((2 * xsqr) / Pi);\n }\n\n let k = dof;\n\n while (k >= 2) {\n p = (p * xsqr) / k;\n k = k - 2;\n }\n\n let t = p;\n let a = dof;\n\n while (t > 0.0000000001 * p) {\n a = a + 2;\n t = (t * xsqr) / a;\n p = p + t;\n }\n\n return 1 - p\n }\n\n return Math.round(ChiSq(xsqr, dof) * 1000000) / 1000000\n};\n\nconst CONFIDENCE = {};\n\n/**\n * Returns the confidence interval for a population mean.\n *\n * Category: Statistical\n *\n * @param {*} alpha The significance level used to compute the confidence level. The confidence level equals 100*(1 - alpha)%, or in other words, an alpha of 0.05 indicates a 95 percent confidence level.\n * @param {*} standard_dev The population standard deviation for the data range and is assumed to be known.\n * @param {*} size The sample size.\n * @returns\n */\nCONFIDENCE.NORM = (alpha, standard_dev, size) => {\n alpha = parseNumber(alpha);\n standard_dev = parseNumber(standard_dev);\n size = parseNumber(size);\n\n if (anyIsError(alpha, standard_dev, size)) {\n return value\n }\n\n return jStat.normalci(1, alpha, standard_dev, size)[1] - 1\n};\n\n/**\n * Returns the confidence interval for a population mean, using a Student's t distribution.\n *\n * Category: Statistical\n *\n * @param {*} alpha The significance level used to compute the confidence level. The confidence level equals 100*(1 - alpha)%, or in other words, an alpha of 0.05 indicates a 95 percent confidence level.\n * @param {*} standard_dev The population standard deviation for the data range and is assumed to be known.\n * @param {*} size The sample size.\n * @returns\n */\nCONFIDENCE.T = (alpha, standard_dev, size) => {\n alpha = parseNumber(alpha);\n standard_dev = parseNumber(standard_dev);\n size = parseNumber(size);\n\n if (anyIsError(alpha, standard_dev, size)) {\n return value\n }\n\n return jStat.tci(1, alpha, standard_dev, size)[1] - 1\n};\n\n/**\n * Returns the correlation coefficient between two data sets.\n *\n * Category: Statistical\n *\n * @param {*} array1 A range of value values.\n * @param {*} array2 A second range of value values.\n * @returns\n */\nfunction CORREL(array1, array2) {\n array1 = parseNumberArray(flatten(array1));\n array2 = parseNumberArray(flatten(array2));\n\n if (anyIsError(array1, array2)) {\n return value\n }\n\n return jStat.corrcoeff(array1, array2)\n}\n\n/**\n * Counts how many numbers are in the list of arguments.\n *\n * Category: Statistical\n *\n * @param {*} args Cell reference, or range within which you want to count numbers.count numbers.\n * @returns\n */\nfunction COUNT() {\n const flatArguments = flatten(arguments);\n\n return numbers(flatArguments).length\n}\n\n/**\n * Counts how many values are in the list of arguments.\n *\n * Category: Statistical\n *\n * @param {*} args Arguments representing the values that you want to count.\n * @returns\n */\nfunction COUNTA() {\n const flatArguments = flatten(arguments);\n\n return flatArguments.length - COUNTBLANK(flatArguments)\n}\n\n/**\n * Counts the number of blank values within a range.\n *\n * Category: Statistical\n *\n * @param {*} args The range from which you want to count the blank values.\n * @returns\n */\nfunction COUNTBLANK() {\n const range = flatten(arguments);\n\n let blanks = 0;\n let element;\n\n for (let i = 0; i < range.length; i++) {\n element = range[i];\n\n if (element === undefined || element === null || element === '') {\n blanks++;\n }\n }\n\n return blanks\n}\n\n/**\n * Counts the number of values within a range that meet the given criteria.\n *\n * Category: Statistical\n *\n * @returns\n */\nfunction COUNTIF(range, criteria) {\n range = flatten(range);\n\n const isWildcard = criteria === void 0 || criteria === '*';\n\n if (isWildcard) {\n return range.length\n }\n\n let matches = 0;\n\n const tokenizedCriteria = parse(criteria + '');\n\n for (let i = 0; i < range.length; i++) {\n const value = range[i];\n const tokens = [createToken(value, TOKEN_TYPE_LITERAL)].concat(tokenizedCriteria);\n\n if (compute(tokens)) {\n matches++;\n }\n }\n\n return matches\n}\n\n/**\n * Counts the number of values within a range that meet multiple criteria.\n *\n * Category: Statistical\n *\n * @param {*} args Range in which to evaluate the associated criteria.\n * @returns\n */\nfunction COUNTIFS() {\n const args = argsToArray(arguments);\n const results = new Array(flatten(args[0]).length);\n\n for (let i = 0; i < results.length; i++) {\n results[i] = true;\n }\n\n for (let i = 0; i < args.length; i += 2) {\n const range = flatten(args[i]);\n const criteria = args[i + 1];\n const isWildcard = criteria === void 0 || criteria === '*';\n\n if (!isWildcard) {\n const tokenizedCriteria = parse(criteria + '');\n\n for (let j = 0; j < range.length; j++) {\n const value = range[j];\n const tokens = [createToken(value, TOKEN_TYPE_LITERAL)].concat(tokenizedCriteria);\n\n results[j] = results[j] && compute(tokens);\n }\n }\n }\n\n let result = 0;\n\n for (let i = 0; i < results.length; i++) {\n if (results[i]) {\n result++;\n }\n }\n\n return result\n}\n\nconst COVARIANCE = {};\n\n/**\n * Returns covariance, the average of the products of paired deviations.\n *\n * Category: Statistical\n *\n * @param {*} array1 The first value range of integers.\n * @param {*} array2 The second value range of integers.\n * @returns\n */\nCOVARIANCE.P = (array1, array2) => {\n array1 = parseNumberArray(flatten(array1));\n array2 = parseNumberArray(flatten(array2));\n\n if (anyIsError(array1, array2)) {\n return value\n }\n\n const mean1 = jStat.mean(array1);\n const mean2 = jStat.mean(array2);\n\n let result = 0;\n\n const n = array1.length;\n\n for (let i = 0; i < n; i++) {\n result += (array1[i] - mean1) * (array2[i] - mean2);\n }\n\n return result / n\n};\n\n/**\n * Returns the sample covariance, the average of the products deviations for each data point pair in two data sets.\n *\n * Category: Statistical\n *\n * @param {*} array1 The first value range of integers.\n * @param {*} array2 The second value range of integers.\n * @returns\n */\nCOVARIANCE.S = (array1, array2) => {\n array1 = parseNumberArray(flatten(array1));\n array2 = parseNumberArray(flatten(array2));\n\n if (anyIsError(array1, array2)) {\n return value\n }\n\n return jStat.covariance(array1, array2)\n};\n\n/**\n * Returns the sum of squares of deviations.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Number1 is required, subsequent numbers are optional. 1 to 255 arguments for which you want to calculate the sum of squared deviations. You can also use a single array or a reference to an array instead of arguments separated by commas.\n * @returns\n */\nfunction DEVSQ() {\n const range = parseNumberArray(flatten(arguments));\n\n if (range instanceof Error) {\n return range\n }\n\n const mean = jStat.mean(range);\n\n let result = 0;\n\n for (let i = 0; i < range.length; i++) {\n result += Math.pow(range[i] - mean, 2);\n }\n\n return result\n}\n\nconst EXPON = {};\n\n/**\n * Returns the exponential distribution.\n *\n * Category: Statistical\n *\n * @param {*} x The value of the function.\n * @param {*} lambda The parameter value.\n * @param {*} cumulative A logical value that indicates which form of the exponential function to provide. If cumulative is TRUE, EXPON.DIST returns the cumulative distribution function; if FALSE, it returns the probability density function.\n * @returns\n */\nEXPON.DIST = (x, lambda, cumulative) => {\n x = parseNumber(x);\n lambda = parseNumber(lambda);\n\n if (anyIsError(x, lambda)) {\n return value\n }\n\n return cumulative ? jStat.exponential.cdf(x, lambda) : jStat.exponential.pdf(x, lambda)\n};\n\nconst F = {};\n\n/**\n * Returns the F probability distribution.\n *\n * Category: Statistical\n *\n * @param {*} x The value at which to evaluate the function.\n * @param {*} deg_freedom1 The numerator degrees of freedom.\n * @param {*} deg_freedom2 The denominator degrees of freedom.\n * @param {*} cumulative A logical value that determines the form of the function. If cumulative is TRUE, F.DIST returns the cumulative distribution function; if FALSE, it returns the probability density function.\n * @returns\n */\nF.DIST = (x, deg_freedom1, deg_freedom2, cumulative) => {\n x = parseNumber(x);\n deg_freedom1 = parseNumber(deg_freedom1);\n deg_freedom2 = parseNumber(deg_freedom2);\n\n if (anyIsError(x, deg_freedom1, deg_freedom2)) {\n return value\n }\n\n return cumulative\n ? jStat.centralF.cdf(x, deg_freedom1, deg_freedom2)\n : jStat.centralF.pdf(x, deg_freedom1, deg_freedom2)\n};\n\n/**\n * Returns the F probability distribution.\n *\n * Category: Statistical\n *\n * @param {*} x The value at which to evaluate the function.\n * @param {*} deg_freedom1 The numerator degrees of freedom.\n * @param {*} deg_freedom2 The denominator degrees of freedom.\n * @returns\n */\nF.DIST.RT = function (x, deg_freedom1, deg_freedom2) {\n if (arguments.length !== 3) {\n return na\n }\n\n if (x < 0 || deg_freedom1 < 1 || deg_freedom2 < 1) {\n return num\n }\n\n if (typeof x !== 'number' || typeof deg_freedom1 !== 'number' || typeof deg_freedom2 !== 'number') {\n return value\n }\n\n return 1 - jStat.centralF.cdf(x, deg_freedom1, deg_freedom2)\n};\n\n/**\n * Returns the inverse of the F probability distribution.\n *\n * Category: Statistical\n *\n * @param {*} probability A probability associated with the F cumulative distribution.\n * @param {*} deg_freedom1 The numerator degrees of freedom.\n * @param {*} deg_freedom2 The denominator degrees of freedom.\n * @returns\n */\nF.INV = (probability, deg_freedom1, deg_freedom2) => {\n probability = parseNumber(probability);\n deg_freedom1 = parseNumber(deg_freedom1);\n deg_freedom2 = parseNumber(deg_freedom2);\n\n if (anyIsError(probability, deg_freedom1, deg_freedom2)) {\n return value\n }\n\n if (probability <= 0.0 || probability > 1.0) {\n return num\n }\n\n return jStat.centralF.inv(probability, deg_freedom1, deg_freedom2)\n};\n\n/**\n * Returns the inverse of the F probability distribution.\n *\n * Category: Statistical\n *\n * @param {*} probability A probability associated with the F cumulative distribution.\n * @param {*} deg_freedom1 The numerator degrees of freedom.\n * @param {*} deg_freedom2 The denominator degrees of freedom.\n * @returns\n */\nF.INV.RT = function (probability, deg_freedom1, deg_freedom2) {\n if (arguments.length !== 3) {\n return na\n }\n\n if (\n probability < 0 ||\n probability > 1 ||\n deg_freedom1 < 1 ||\n deg_freedom1 > Math.pow(10, 10) ||\n deg_freedom2 < 1 ||\n deg_freedom2 > Math.pow(10, 10)\n ) {\n return num\n }\n\n if (typeof probability !== 'number' || typeof deg_freedom1 !== 'number' || typeof deg_freedom2 !== 'number') {\n return value\n }\n\n return jStat.centralF.inv(1.0 - probability, deg_freedom1, deg_freedom2)\n};\n\n/**\n * Returns the result of an F-test.\n *\n * Category: Statistical\n *\n * @param {*} array1 The first array or range of data.\n * @param {*} array2 The second array or range of data.\n * @returns\n */\nF.TEST = (array1, array2) => {\n if (!array1 || !array2) {\n return na\n }\n\n if (!(array1 instanceof Array) || !(array2 instanceof Array)) {\n return na\n }\n\n if (array1.length < 2 || array2.length < 2) {\n return div0\n }\n\n const sumOfSquares = (values, x1) => {\n let sum = 0;\n\n for (let i = 0; i < values.length; i++) {\n sum += Math.pow(values[i] - x1, 2);\n }\n\n return sum\n };\n\n const x1 = SUM(array1) / array1.length;\n const x2 = SUM(array2) / array2.length;\n const sum1 = sumOfSquares(array1, x1) / (array1.length - 1);\n const sum2 = sumOfSquares(array2, x2) / (array2.length - 1);\n\n return sum1 / sum2\n};\n\n/**\n * Returns the Fisher transformation.\n *\n * Category: Statistical\n *\n * @param {*} x A numeric value for which you want the transformation.\n * @returns\n */\nfunction FISHER(x) {\n x = parseNumber(x);\n\n if (x instanceof Error) {\n return x\n }\n\n return Math.log((1 + x) / (1 - x)) / 2\n}\n\n/**\n * Returns the inverse of the Fisher transformation.\n *\n * Category: Statistical\n *\n * @param {*} y The value for which you want to perform the inverse of the transformation.\n * @returns\n */\nfunction FISHERINV(y) {\n y = parseNumber(y);\n\n if (y instanceof Error) {\n return y\n }\n\n const e2y = Math.exp(2 * y);\n\n return (e2y - 1) / (e2y + 1)\n}\n\n/**\n * Returns a value along a linear trend.\n *\n * Category: Statistical\n *\n * @param {*} x The data point for which you want to predict a value.\n * @param {*} known_ys The dependent array or range of data.\n * @param {*} known_xs The independent array or range of data.\n * @returns\n */\nfunction FORECAST(x, known_ys, known_xs) {\n x = parseNumber(x);\n known_ys = parseNumberArray(flatten(known_ys));\n known_xs = parseNumberArray(flatten(known_xs));\n\n if (anyIsError(x, known_ys, known_xs)) {\n return value\n }\n\n const xmean = jStat.mean(known_xs);\n const ymean = jStat.mean(known_ys);\n\n const n = known_xs.length;\n\n let num = 0;\n let den = 0;\n\n for (let i = 0; i < n; i++) {\n num += (known_xs[i] - xmean) * (known_ys[i] - ymean);\n den += Math.pow(known_xs[i] - xmean, 2);\n }\n\n const b = num / den;\n const a = ymean - b * xmean;\n\n return a + b * x\n}\n\n/**\n * Returns a frequency distribution as a vertical array.\n *\n * Category: Statistical\n *\n * @param {*} data_array An array of or reference to a set of values for which you want to count frequencies. If data_array contains no values, FREQUENCY returns an array of zeros.\n * @param {*} bins_array An array of or reference to intervals into which you want to group the values in data_array. If bins_array contains no values, FREQUENCY returns the number of elements in data_array.\n * @returns\n */\nfunction FREQUENCY(data_array, bins_array) {\n data_array = parseNumberArray(flatten(data_array));\n bins_array = parseNumberArray(flatten(bins_array));\n\n if (anyIsError(data_array, bins_array)) {\n return value\n }\n\n const n = data_array.length;\n const b = bins_array.length;\n const r = [];\n\n for (let i = 0; i <= b; i++) {\n r[i] = 0;\n\n for (let j = 0; j < n; j++) {\n if (i === 0) {\n if (data_array[j] <= bins_array[0]) {\n r[0] += 1;\n }\n } else if (i < b) {\n if (data_array[j] > bins_array[i - 1] && data_array[j] <= bins_array[i]) {\n r[i] += 1;\n }\n } else if (i === b) {\n if (data_array[j] > bins_array[b - 1]) {\n r[b] += 1;\n }\n }\n }\n }\n\n return r\n}\n\n/**\n * Returns the Gamma function value.\n *\n * Category: Statistical\n *\n * @param {*} number Returns a number.\n * @returns\n */\nfunction GAMMA(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n if (number === 0) {\n return num\n }\n\n if (parseInt(number, 10) === number && number < 0) {\n return num\n }\n\n return jStat.gammafn(number)\n}\n\n/**\n * Returns the gamma distribution.\n *\n * Category: Statistical\n *\n * @param {*} x The value at which you want to evaluate the distribution.\n * @param {*} alpha A parameter to the distribution.\n * @param {*} beta A parameter to the distribution. If beta = 1, GAMMA.DIST returns the standard gamma distribution.\n * @param {*} cumulative A logical value that determines the form of the function. If cumulative is TRUE, GAMMA.DIST returns the cumulative distribution function; if FALSE, it returns the probability density function.\n * @returns\n */\nGAMMA.DIST = function (value$1, alpha, beta, cumulative) {\n if (arguments.length !== 4) {\n return na\n }\n\n if (value$1 < 0 || alpha <= 0 || beta <= 0) {\n return value\n }\n\n if (typeof value$1 !== 'number' || typeof alpha !== 'number' || typeof beta !== 'number') {\n return value\n }\n\n return cumulative ? jStat.gamma.cdf(value$1, alpha, beta, true) : jStat.gamma.pdf(value$1, alpha, beta, false)\n};\n\n/**\n * Returns the inverse of the gamma cumulative distribution.\n *\n * Category: Statistical\n *\n * @param {*} probability The probability associated with the gamma distribution.\n * @param {*} alpha A parameter to the distribution.\n * @param {*} beta A parameter to the distribution. If beta = 1, GAMMA.INV returns the standard gamma distribution.\n * @returns\n */\nGAMMA.INV = function (probability, alpha, beta) {\n if (arguments.length !== 3) {\n return na\n }\n\n if (probability < 0 || probability > 1 || alpha <= 0 || beta <= 0) {\n return num\n }\n\n if (typeof probability !== 'number' || typeof alpha !== 'number' || typeof beta !== 'number') {\n return value\n }\n\n return jStat.gamma.inv(probability, alpha, beta)\n};\n\n/**\n * Returns the natural logarithm of the gamma function, \u0393(x).\n *\n * Category: Statistical\n *\n * @param {*} x The value for which you want to calculate GAMMALN.\n * @returns\n */\nfunction GAMMALN(x) {\n x = parseNumber(x);\n\n if (x instanceof Error) {\n return x\n }\n\n return jStat.gammaln(x)\n}\n\n/**\n * Returns the natural logarithm of the gamma function, \u0393(x).\n *\n * Category: Statistical\n *\n * @param {*} x The value for which you want to calculate GAMMALN.PRECISE.\n * @returns\n */\nGAMMALN.PRECISE = function (x) {\n if (arguments.length !== 1) {\n return na\n }\n\n if (x <= 0) {\n return num\n }\n\n if (typeof x !== 'number') {\n return value\n }\n\n return jStat.gammaln(x)\n};\n\n/**\n * Returns 0.5 less than the standard normal cumulative distribution.\n *\n * Category: Statistical\n *\n * @param {*} z Returns a number.\n * @returns\n */\nfunction GAUSS(z) {\n z = parseNumber(z);\n\n if (z instanceof Error) {\n return z\n }\n\n return jStat.normal.cdf(z, 0, 1) - 0.5\n}\n\n/**\n * Returns the geometric mean.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Number1 is required, subsequent numbers are optional. 1 to 255 arguments for which you want to calculate the mean. You can also use a single array or a reference to an array instead of arguments separated by commas.\n * @returns\n */\nfunction GEOMEAN() {\n const args = parseNumberArray(flatten(arguments));\n\n if (args instanceof Error) {\n return args\n }\n\n return jStat.geomean(args)\n}\n\n/**\n * Returns values along an exponential trend.\n *\n * Category: Statistical\n *\n * @param {*} known_y The set of y-values you already know in the relationship y = b*m^x.\n - If the array known_y's is in a single column, then each column of known_x's is interpreted as a separate variable.\n - If the array known_y's is in a single row, then each row of known_x's is interpreted as a separate variable.\n - If any of the numbers in known_y's is 0 or negative, GROWTH returns the #NUM! error value.\n * @param {*} known_x Optional. An optional set of x-values that you may already know in the relationship y = b*m^x.\n - The array known_x's can include one or more sets of variables. If only one variable is used, known_y's and known_x's can be ranges of any shape, as long as they have equal dimensions. If more than one variable is used, known_y's must be a vector (that is, a range with a height of one row or a width of one column).\n - If known_x's is omitted, it is assumed to be the array {1,2,3,...} that is the same size as known_y's.\n * @param {*} new_x Optional. Are new x-values for which you want GROWTH to return corresponding y-values.\n - new_x's must include a column (or row) for each independent variable, just as known_x's does. So, if known_y's is in a single column, known_x's and new_x's must have the same number of columns. If known_y's is in a single row, known_x's and new_x's must have the same number of rows.\n - If new_x's is omitted, it is assumed to be the same as known_x's.\n - If both known_x's and new_x's are omitted, they are assumed to be the array {1,2,3,...} that is the same size as known_y's.\n * @param {*} use_const Optional. A logical value specifying whether to force the constant b to equal 1. If const is TRUE or omitted, b is calculated normally. If const is FALSE, b is set equal to 1 and the m-values are adjusted so that y = m^x.\n - If const is TRUE or omitted, b is calculated normally.\n - If const is FALSE, b is set equal to 1 and the m-values are adjusted so that y = m^x.\n * @returns\n */\nfunction GROWTH(known_y, known_x, new_x, use_const) {\n // Credits: Ilmari Karonen (http://stackoverflow.com/questions/14161990/how-to-implement-growth-function-in-javascript)\n known_y = parseNumberArray(flatten(known_y));\n\n if (known_y instanceof Error) {\n return known_y\n }\n\n // Default values for optional parameters:\n let i;\n\n if (known_x === undefined) {\n known_x = [];\n\n for (i = 1; i <= known_y.length; i++) {\n known_x.push(i);\n }\n }\n\n if (new_x === undefined) {\n new_x = known_x;\n }\n\n known_x = parseNumberArray(flatten(known_x));\n new_x = parseNumberArray(flatten(new_x));\n\n if (anyIsError(known_x, new_x)) {\n return value\n }\n\n if (use_const === undefined) {\n use_const = true;\n }\n\n // Calculate sums over the data:\n const n = known_y.length;\n\n let avg_x = 0;\n let avg_y = 0;\n let avg_xy = 0;\n let avg_xx = 0;\n\n for (i = 0; i < n; i++) {\n const x = known_x[i];\n const y = Math.log(known_y[i]);\n\n avg_x += x;\n avg_y += y;\n avg_xy += x * y;\n avg_xx += x * x;\n }\n\n avg_x /= n;\n avg_y /= n;\n avg_xy /= n;\n avg_xx /= n;\n\n // Compute linear regression coefficients:\n let beta;\n let alpha;\n\n if (use_const) {\n beta = (avg_xy - avg_x * avg_y) / (avg_xx - avg_x * avg_x);\n alpha = avg_y - beta * avg_x;\n } else {\n beta = avg_xy / avg_xx;\n alpha = 0;\n }\n\n // Compute and return result array:\n const new_y = [];\n\n for (i = 0; i < new_x.length; i++) {\n new_y.push(Math.exp(alpha + beta * new_x[i]));\n }\n\n return new_y\n}\n\n/**\n * Returns the harmonic mean.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Number1 is required, subsequent numbers are optional. 1 to 255 arguments for which you want to calculate the mean. You can also use a single array or a reference to an array instead of arguments separated by commas.\n * @returns\n */\nfunction HARMEAN() {\n const range = parseNumberArray(flatten(arguments));\n\n if (range instanceof Error) {\n return range\n }\n\n const n = range.length;\n\n let den = 0;\n\n for (let i = 0; i < n; i++) {\n den += 1 / range[i];\n }\n\n return n / den\n}\n\nconst HYPGEOM = {};\n\n/**\n * Returns the hypergeometric distribution.\n *\n * Category: Statistical\n *\n * @param {*} sample_s The number of successes in the sample.\n * @param {*} number_sample The size of the sample.\n * @param {*} population_s The number of successes in the population.\n * @param {*} number_pop The population size.\n * @param {*} cumulative A logical value that determines the form of the function. If cumulative is TRUE, then HYPGEOM.DIST returns the cumulative distribution function; if FALSE, it returns the probability mass function.\n * @returns\n */\nHYPGEOM.DIST = (sample_s, number_sample, population_s, number_pop, cumulative) => {\n sample_s = parseNumber(sample_s);\n number_sample = parseNumber(number_sample);\n population_s = parseNumber(population_s);\n number_pop = parseNumber(number_pop);\n\n if (anyIsError(sample_s, number_sample, population_s, number_pop)) {\n return value\n }\n\n function pdf(x, n, M, N) {\n return (COMBIN(M, x) * COMBIN(N - M, n - x)) / COMBIN(N, n)\n }\n\n function cdf(x, n, M, N) {\n let result = 0;\n\n for (let i = 0; i <= x; i++) {\n result += pdf(i, n, M, N);\n }\n\n return result\n }\n\n return cumulative\n ? cdf(sample_s, number_sample, population_s, number_pop)\n : pdf(sample_s, number_sample, population_s, number_pop)\n};\n\n/**\n * Returns the intercept of the linear regression line.\n *\n * Category: Statistical\n *\n * @param {*} known_y The dependent set of observations or data.\n * @param {*} known_x The independent set of observations or data.\n * @returns\n */\nfunction INTERCEPT(known_y, known_x) {\n known_y = parseNumberArray(known_y);\n known_x = parseNumberArray(known_x);\n\n if (anyIsError(known_y, known_x)) {\n return value\n }\n\n if (known_y.length !== known_x.length) {\n return na\n }\n\n return FORECAST(0, known_y, known_x)\n}\n\n/**\n * Returns the kurtosis of a data set.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Number1 is required, subsequent numbers are optional. 1 to 255 arguments for which you want to calculate kurtosis. You can also use a single array or a reference to an array instead of arguments separated by commas.\n * @returns\n */\nfunction KURT() {\n const range = parseNumberArray(flatten(arguments));\n\n if (range instanceof Error) {\n return range\n }\n\n const mean = jStat.mean(range);\n const n = range.length;\n\n let sigma = 0;\n\n for (let i = 0; i < n; i++) {\n sigma += Math.pow(range[i] - mean, 4);\n }\n\n sigma = sigma / Math.pow(jStat.stdev(range, true), 4);\n\n return ((n * (n + 1)) / ((n - 1) * (n - 2) * (n - 3))) * sigma - (3 * (n - 1) * (n - 1)) / ((n - 2) * (n - 3))\n}\n\n/**\n * Returns the k-th largest value in a data set.\n *\n * Category: Statistical\n *\n * @param {*} array The array or range of data for which you want to determine the k-th largest value.\n * @param {*} k The position (from the largest) in the array or value range of data to return.\n * @returns\n */\nfunction LARGE(array, k) {\n const someError = anyError.apply(undefined, array);\n\n if (someError) {\n return someError\n }\n\n if (anyIsError(k)) {\n return k\n }\n\n array = numbers(flatten(array));\n k = parseNumber(k);\n\n if (k < 0 || array.length < k) {\n return value\n }\n\n return array.sort((a, b) => b - a)[k - 1]\n}\n\n/**\n * Returns the parameters of a linear trend.\n *\n * Category: Statistical\n *\n * @param {*} known_y The set of y-values that you already know in the relationship y = mx + b.\n - If the range of known_y's is in a single column, each column of known_x's is interpreted as a separate variable.\n - If the range of known_y's is contained in a single row, each row of known_x's is interpreted as a separate variable.\n * @param {*} known_x Optional. A set of x-values that you may already know in the relationship y = mx + b.\n - The range of known_x's can include one or more sets of variables. If only one variable is used, known_y's and known_x's can be ranges of any shape, as long as they have equal dimensions. If more than one variable is used, known_y's must be a vector (that is, a range with a height of one row or a width of one column).\n - If known_x's is omitted, it is assumed to be the array {1,2,3,...} that is the same size as known_y's.\n * @returns\n */\nfunction LINEST(known_y, known_x) {\n known_y = parseNumberArray(flatten(known_y));\n known_x = parseNumberArray(flatten(known_x));\n\n if (anyIsError(known_y, known_x)) {\n return value\n }\n\n const ymean = jStat.mean(known_y);\n const xmean = jStat.mean(known_x);\n const n = known_x.length;\n\n let num = 0;\n let den = 0;\n\n for (let i = 0; i < n; i++) {\n num += (known_x[i] - xmean) * (known_y[i] - ymean);\n den += Math.pow(known_x[i] - xmean, 2);\n }\n\n const m = num / den;\n const b = ymean - m * xmean;\n\n return [m, b]\n}\n\n// According to Microsoft:\n// http://office.microsoft.com/en-us/starter-help/logest-function-HP010342665.aspx\n// LOGEST returns are based on the following linear model:\n// ln y = x1 ln m1 + ... + xn ln mn + ln b\n/**\n * Returns the parameters of an exponential trend.\n *\n * Category: Statistical\n *\n * @param {*} known_y The set of y-values you already know in the relationship y = b*m^x.\n - If the array known_y's is in a single column, then each column of known_x's is interpreted as a separate variable.\n - If the array known_y's is in a single row, then each row of known_x's is interpreted as a separate variable.\n * @param {*} known_x Optional. An optional set of x-values that you may already know in the relationship y = b*m^x.\n - The array known_x's can include one or more sets of variables. If only one variable is used, known_y's and known_x's can be ranges of any shape, as long as they have equal dimensions. If more than one variable is used, known_y's must be a range of values with a height of one row or a width of one column (which is also known as a vector).\n - If known_x's is omitted, it is assumed to be the array {1,2,3,...} that is the same size as known_y's.\n * @returns\n */\nfunction LOGEST(known_y, known_x) {\n known_y = parseNumberArray(flatten(known_y));\n known_x = parseNumberArray(flatten(known_x));\n\n if (anyIsError(known_y, known_x)) {\n return value\n }\n\n if (known_y.length !== known_x.length) {\n return value\n }\n\n for (let i = 0; i < known_y.length; i++) {\n known_y[i] = Math.log(known_y[i]);\n }\n\n const result = LINEST(known_y, known_x);\n\n result[0] = Math.round(Math.exp(result[0]) * 1000000) / 1000000;\n result[1] = Math.round(Math.exp(result[1]) * 1000000) / 1000000;\n\n return result\n}\n\nconst LOGNORM = {};\n\n/**\n * Returns the cumulative lognormal distribution.\n *\n * Category: Statistical\n *\n * @param {*} x The value at which to evaluate the function.\n * @param {*} mean The mean of ln(x).\n * @param {*} standard_dev The standard deviation of ln(x).\n * @param {*} cumulative A logical value that determines the form of the function. If cumulative is TRUE, LOGNORM.DIST returns the cumulative distribution function; if FALSE, it returns the probability density function.\n * @returns\n */\nLOGNORM.DIST = (x, mean, standard_dev, cumulative) => {\n x = parseNumber(x);\n mean = parseNumber(mean);\n standard_dev = parseNumber(standard_dev);\n\n if (anyIsError(x, mean, standard_dev)) {\n return value\n }\n\n return cumulative ? jStat.lognormal.cdf(x, mean, standard_dev) : jStat.lognormal.pdf(x, mean, standard_dev)\n};\n\n/**\n * Returns the inverse of the lognormal cumulative distribution.\n *\n * Category: Statistical\n *\n * @param {*} probability A probability associated with the lognormal distribution.\n * @param {*} mean The mean of ln(x).\n * @param {*} standard_dev The standard deviation of ln(x).\n * @returns\n */\nLOGNORM.INV = (probability, mean, standard_dev) => {\n probability = parseNumber(probability);\n mean = parseNumber(mean);\n standard_dev = parseNumber(standard_dev);\n\n if (anyIsError(probability, mean, standard_dev)) {\n return value\n }\n\n return jStat.lognormal.inv(probability, mean, standard_dev)\n};\n\n/**\n * Returns the maximum value in a list of arguments.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Number1 is required, subsequent numbers are optional. 1 to 255 numbers for which you want to find the maximum value.\n * @returns\n */\nfunction MAX() {\n const flatArguments = flatten(arguments);\n const someError = anyError.apply(undefined, flatArguments);\n\n if (someError) {\n return someError\n }\n\n const range = numbers(flatArguments);\n\n return range.length === 0 ? 0 : Math.max.apply(Math, range)\n}\n\n/**\n * Returns the maximum value in a list of arguments, including numbers, text, and logical values.\n *\n * Category: Statistical\n *\n * @param {*} args value1, value2,... Number arguments 2 to 255 for which you want to find the largest value.\n * @returns\n */\nfunction MAXA() {\n const flatArguments = flatten(arguments);\n const someError = anyError.apply(undefined, flatArguments);\n\n if (someError) {\n return someError\n }\n\n let range = arrayValuesToNumbers(flatArguments);\n\n range = range.map((value) => (value === undefined || value === null ? 0 : value));\n\n return range.length === 0 ? 0 : Math.max.apply(Math, range)\n}\n\n/**\n * Returns the maximum of all values in a range that meet multiple criteria.\n *\n * Category: Statistical\n *\n * @returns\n */\nfunction MAXIFS() {\n const values = applyCriteria(...arguments);\n\n return values.length === 0 ? 0 : Math.max.apply(Math, values)\n}\n\n/**\n * Returns the median of the given numbers.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Number1 is required, subsequent numbers are optional. 1 to 255 numbers for which you want the median.\n * @returns\n */\nfunction MEDIAN() {\n const flatArguments = flatten(arguments);\n const someError = anyError.apply(undefined, flatArguments);\n\n if (someError) {\n return someError\n }\n\n const range = arrayValuesToNumbers(flatArguments);\n\n let result = jStat.median(range);\n\n if (isNaN(result)) {\n result = num;\n }\n\n return result\n}\n\n/**\n * Returns the minimum value in a list of arguments.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Number1 is optional, subsequent numbers are optional. 1 to 255 numbers for which you want to find the minimum value.\n * @returns\n */\nfunction MIN() {\n const flatArguments = flatten(arguments);\n const someError = anyError.apply(undefined, flatArguments);\n\n if (someError) {\n return someError\n }\n\n const range = numbers(flatArguments);\n\n return range.length === 0 ? 0 : Math.min.apply(Math, range)\n}\n\n/**\n * Returns the smallest value in a list of arguments, including numbers, text, and logical values.\n *\n * Category: Statistical\n *\n * @param {*} args value1, value2, ... Value1 is required, subsequent values are optional. 1 to 255 values for which you want to find the smallest value.\n * @returns\n */\nfunction MINA() {\n const flatArguments = flatten(arguments);\n const someError = anyError.apply(undefined, flatArguments);\n\n if (someError) {\n return someError\n }\n\n let range = arrayValuesToNumbers(flatArguments);\n\n range = range.map((value) => (value === undefined || value === null ? 0 : value));\n\n return range.length === 0 ? 0 : Math.min.apply(Math, range)\n}\n\n/**\n * Returns the minimum of all values in a range that meet multiple criteria.\n *\n * Category: Statistical\n *\n * @returns\n */\nfunction MINIFS() {\n const values = applyCriteria(...arguments);\n\n return values.length === 0 ? 0 : Math.min.apply(Math, values)\n}\n\nconst MODE = {};\n\n/**\n * Returns a vertical array of the most frequently occurring, or repetitive values in an array or range of data.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Number arguments 2 to 254 for which you want to calculate the mode. You can also use a single array or a reference to an array instead of arguments separated by commas.\n * @returns\n */\nMODE.MULT = function () {\n // Credits: Ro\u00F6na\u00E4n\n const range = parseNumberArray(flatten(arguments));\n\n if (range instanceof Error) {\n return range\n }\n\n const n = range.length;\n const count = {};\n\n let maxItems = [];\n let max = 0;\n let currentItem;\n\n for (let i = 0; i < n; i++) {\n currentItem = range[i];\n count[currentItem] = count[currentItem] ? count[currentItem] + 1 : 1;\n\n if (count[currentItem] > max) {\n max = count[currentItem];\n maxItems = [];\n }\n\n if (count[currentItem] === max) {\n maxItems[maxItems.length] = currentItem;\n }\n }\n\n return maxItems\n};\n\n/**\n * Returns the most common value in a data set.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Arguments 2 to 254 for which you want to calculate the mode. You can also use a single array or a reference to an array instead of arguments separated by commas.\n * @returns\n */\nMODE.SNGL = function () {\n const range = parseNumberArray(flatten(arguments));\n\n if (range instanceof Error) {\n return range\n }\n\n return MODE.MULT(range).sort((a, b) => a - b)[0]\n};\n\nconst NEGBINOM = {};\n\n/**\n * Returns the negative binomial distribution.\n *\n * Category: Statistical\n *\n * @param {*} number_f The number of failures.\n * @param {*} number_s The threshold number of successes.\n * @param {*} probability_s The probability of a success.\n * @param {*} cumulative A logical value that determines the form of the function. If cumulative is TRUE, NEGBINOM.DIST returns the cumulative distribution function; if FALSE, it returns the probability density function.\n * @returns\n */\nNEGBINOM.DIST = (number_f, number_s, probability_s, cumulative) => {\n number_f = parseNumber(number_f);\n number_s = parseNumber(number_s);\n probability_s = parseNumber(probability_s);\n\n if (anyIsError(number_f, number_s, probability_s)) {\n return value\n }\n\n return cumulative\n ? jStat.negbin.cdf(number_f, number_s, probability_s)\n : jStat.negbin.pdf(number_f, number_s, probability_s)\n};\n\nconst NORM = {};\n\n/**\n * Returns the normal cumulative distribution.\n *\n * Category: Statistical\n *\n * @param {*} x The value for which you want the distribution.\n * @param {*} mean The arithmetic mean of the distribution.\n * @param {*} standard_dev The standard deviation of the distribution.\n * @param {*} cumulative A logical value that determines the form of the function. If cumulative is TRUE, NORM.DIST returns the cumulative distribution function; if FALSE, it returns the probability density function.\n * @returns\n */\nNORM.DIST = (x, mean, standard_dev, cumulative) => {\n x = parseNumber(x);\n mean = parseNumber(mean);\n standard_dev = parseNumber(standard_dev);\n\n if (anyIsError(x, mean, standard_dev)) {\n return value\n }\n\n if (standard_dev <= 0) {\n return num\n }\n\n // Return normal distribution computed by jStat [http://jstat.org]\n return cumulative ? jStat.normal.cdf(x, mean, standard_dev) : jStat.normal.pdf(x, mean, standard_dev)\n};\n\n/**\n * Returns the inverse of the normal cumulative distribution.\n *\n * Category: Statistical\n *\n * @param {*} probability A probability corresponding to the normal distribution.\n * @param {*} mean The arithmetic mean of the distribution.\n * @param {*} standard_dev The standard deviation of the distribution.\n * @returns\n */\nNORM.INV = (probability, mean, standard_dev) => {\n probability = parseNumber(probability);\n mean = parseNumber(mean);\n standard_dev = parseNumber(standard_dev);\n\n if (anyIsError(probability, mean, standard_dev)) {\n return value\n }\n\n return jStat.normal.inv(probability, mean, standard_dev)\n};\n\nNORM.S = {};\n\n/**\n * Returns the standard normal cumulative distribution.\n *\n * Category: Statistical\n *\n * @param {*} z The value for which you want the distribution.\n * @param {*} cumulative Cumulative is a logical value that determines the form of the function. If cumulative is TRUE, NORMS.DIST returns the cumulative distribution function; if FALSE, it returns the probability mass function.\n * @returns\n */\nNORM.S.DIST = (z, cumulative) => {\n z = parseNumber(z);\n\n if (z instanceof Error) {\n return value\n }\n\n return cumulative ? jStat.normal.cdf(z, 0, 1) : jStat.normal.pdf(z, 0, 1)\n};\n\n/**\n * Returns the inverse of the standard normal cumulative distribution.\n *\n * Category: Statistical\n *\n * @param {*} probability A probability corresponding to the normal distribution.\n * @returns\n */\nNORM.S.INV = (probability) => {\n probability = parseNumber(probability);\n\n if (probability instanceof Error) {\n return value\n }\n\n return jStat.normal.inv(probability, 0, 1)\n};\n\n/**\n * Returns the Pearson product moment correlation coefficient.\n *\n * Category: Statistical\n *\n * @param {*} array1 A set of independent values.\n * @param {*} array2 A set of dependent values.\n * @returns\n */\nfunction PEARSON(array1, array2) {\n array2 = parseNumberArray(flatten(array2));\n array1 = parseNumberArray(flatten(array1));\n\n if (anyIsError(array2, array1)) {\n return value\n }\n\n const xmean = jStat.mean(array1);\n const ymean = jStat.mean(array2);\n const n = array1.length;\n\n let num = 0;\n let den1 = 0;\n let den2 = 0;\n\n for (let i = 0; i < n; i++) {\n num += (array1[i] - xmean) * (array2[i] - ymean);\n den1 += Math.pow(array1[i] - xmean, 2);\n den2 += Math.pow(array2[i] - ymean, 2);\n }\n\n return num / Math.sqrt(den1 * den2)\n}\n\nconst PERCENTILE = {};\n\n/**\n * Returns the k-th percentile of values in a range, where k is in the range 0..1, exclusive.\n *\n * Category: Statistical\n *\n * @returns\n */\nPERCENTILE.EXC = (array, k) => {\n array = parseNumberArray(flatten(array));\n k = parseNumber(k);\n\n if (anyIsError(array, k)) {\n return value\n }\n\n array = array.sort((a, b) => a - b);\n\n const n = array.length;\n\n if (k < 1 / (n + 1) || k > 1 - 1 / (n + 1)) {\n return num\n }\n\n const l = k * (n + 1) - 1;\n const fl = Math.floor(l);\n\n return cleanFloat(l === fl ? array[l] : array[fl] + (l - fl) * (array[fl + 1] - array[fl]))\n};\n\n/**\n * Returns the k-th percentile of values in a range.\n *\n * Category: Statistical\n *\n * @param {*} array The array or range of data that defines relative standing.\n * @param {*} k The percentile value in the range 0..1, inclusive.\n * @returns\n */\nPERCENTILE.INC = (array, k) => {\n array = parseNumberArray(flatten(array));\n k = parseNumber(k);\n\n if (anyIsError(array, k)) {\n return value\n }\n\n array = array.sort((a, b) => a - b);\n\n const n = array.length;\n const l = k * (n - 1);\n const fl = Math.floor(l);\n\n return cleanFloat(l === fl ? array[l] : array[fl] + (l - fl) * (array[fl + 1] - array[fl]))\n};\n\nconst PERCENTRANK = {};\n\n/**\n * Returns the rank of a value in a data set as a percentage (0..1, exclusive) of the data set.\n *\n * Category: Statistical\n *\n * @param {*} array The array or range of data with numeric values that defines relative standing\n * @param {*} x The value for which you want to know the rank.\n * @param {*} significance Optional. A value that identifies the number of significant digits for the returned percentage value. If omitted, PERCENTRANK.EXC uses three digits (0.xxx).\n * @returns\n */\nPERCENTRANK.EXC = (array, x, significance) => {\n significance = significance === undefined ? 3 : significance;\n array = parseNumberArray(flatten(array));\n x = parseNumber(x);\n significance = parseNumber(significance);\n\n if (anyIsError(array, x, significance)) {\n return value\n }\n\n array = array.sort((a, b) => a - b);\n\n const uniques = UNIQUE.apply(null, array);\n const n = array.length;\n const m = uniques.length;\n const power = Math.pow(10, significance);\n\n let result = 0;\n let match = false;\n let i = 0;\n\n while (!match && i < m) {\n if (x === uniques[i]) {\n result = (array.indexOf(uniques[i]) + 1) / (n + 1);\n match = true;\n } else if (x >= uniques[i] && (x < uniques[i + 1] || i === m - 1)) {\n result = (array.indexOf(uniques[i]) + 1 + (x - uniques[i]) / (uniques[i + 1] - uniques[i])) / (n + 1);\n match = true;\n }\n\n i++;\n }\n\n return Math.floor(result * power) / power\n};\n\n/**\n * Returns the percentage rank of a value in a data set.\n *\n * Category: Statistical\n *\n * @param {*} array The array or range of data with numeric values that defines relative standing.\n * @param {*} x The value for which you want to know the rank.\n * @param {*} significance Optional. A value that identifies the number of significant digits for the returned percentage value. If omitted, PERCENTRANK.INC uses three digits (0.xxx).\n * @returns\n */\nPERCENTRANK.INC = (array, x, significance) => {\n significance = significance === undefined ? 3 : significance;\n array = parseNumberArray(flatten(array));\n x = parseNumber(x);\n significance = parseNumber(significance);\n\n if (anyIsError(array, x, significance)) {\n return value\n }\n\n array = array.sort((a, b) => a - b);\n\n const uniques = UNIQUE.apply(null, array);\n const n = array.length;\n const m = uniques.length;\n const power = Math.pow(10, significance);\n\n let result = 0;\n let match = false;\n let i = 0;\n\n while (!match && i < m) {\n if (x === uniques[i]) {\n result = array.indexOf(uniques[i]) / (n - 1);\n match = true;\n } else if (x >= uniques[i] && (x < uniques[i + 1] || i === m - 1)) {\n result = (array.indexOf(uniques[i]) + (x - uniques[i]) / (uniques[i + 1] - uniques[i])) / (n - 1);\n match = true;\n }\n\n i++;\n }\n\n return Math.floor(result * power) / power\n};\n\n/**\n * Returns the number of permutations for a given number of objects.\n *\n * Category: Statistical\n *\n * @param {*} number An integer that describes the number of objects.\n * @param {*} number_chosen An integer that describes the number of objects in each permutation.\n * @returns\n */\nfunction PERMUT(number, number_chosen) {\n number = parseNumber(number);\n number_chosen = parseNumber(number_chosen);\n\n if (anyIsError(number, number_chosen)) {\n return value\n }\n\n return FACT(number) / FACT(number - number_chosen)\n}\n\n/**\n * Returns the number of permutations for a given number of objects (with repetitions) that can be selected from the total objects.\n *\n * Category: Statistical\n *\n * @param {*} number An integer that describes the total number of objects.\n * @param {*} number_chosen An integer that describes the number of objects in each permutation.\n * @returns\n */\nfunction PERMUTATIONA(number, number_chosen) {\n number = parseNumber(number);\n number_chosen = parseNumber(number_chosen);\n\n if (anyIsError(number, number_chosen)) {\n return value\n }\n\n return Math.pow(number, number_chosen)\n}\n\n/**\n * Returns the value of the density function for a standard normal distribution.\n *\n * Category: Statistical\n *\n * @param {*} x X is the number for which you want the density of the standard normal distribution.\n * @returns\n */\nfunction PHI(x) {\n x = parseNumber(x);\n\n if (x instanceof Error) {\n return value\n }\n\n return Math.exp(-0.5 * x * x) / SQRT2PI\n}\n\nconst POISSON = {};\n\n/**\n * Returns the Poisson distribution.\n *\n * Category: Statistical\n *\n * @param {*} x The number of events.\n * @param {*} mean The expected numeric value.\n * @param {*} cumulative A logical value that determines the form of the probability distribution returned. If cumulative is TRUE, POISSON.DIST returns the cumulative Poisson probability that the number of random events occurring will be between zero and x inclusive; if FALSE, it returns the Poisson probability mass function that the number of events occurring will be exactly x.\n * @returns\n */\nPOISSON.DIST = (x, mean, cumulative) => {\n x = parseNumber(x);\n mean = parseNumber(mean);\n\n if (anyIsError(x, mean)) {\n return value\n }\n\n return cumulative ? jStat.poisson.cdf(x, mean) : jStat.poisson.pdf(x, mean)\n};\n\n/**\n * Returns the probability that values in a range are between two limits.\n *\n * Category: Statistical\n *\n * @param {*} x_range The range of numeric values of x with which there are associated probabilities.\n * @param {*} prob_range A set of probabilities associated with values in x_range.\n * @param {*} lower_limit Optional. The lower bound on the value for which you want a probability.\n * @param {*} upper_limit Optional. The optional upper bound on the value for which you want a probability.\n * @returns\n */\nfunction PROB(x_range, prob_range, lower_limit, upper_limit) {\n if (lower_limit === undefined) {\n return 0\n }\n\n upper_limit = upper_limit === undefined ? lower_limit : upper_limit;\n\n x_range = parseNumberArray(flatten(x_range));\n prob_range = parseNumberArray(flatten(prob_range));\n lower_limit = parseNumber(lower_limit);\n upper_limit = parseNumber(upper_limit);\n\n if (anyIsError(x_range, prob_range, lower_limit, upper_limit)) {\n return value\n }\n\n if (lower_limit === upper_limit) {\n return x_range.indexOf(lower_limit) >= 0 ? prob_range[x_range.indexOf(lower_limit)] : 0\n }\n\n const sorted = x_range.sort((a, b) => a - b);\n const n = sorted.length;\n\n let result = 0;\n\n for (let i = 0; i < n; i++) {\n if (sorted[i] >= lower_limit && sorted[i] <= upper_limit) {\n result += prob_range[x_range.indexOf(sorted[i])];\n }\n }\n\n return result\n}\n\nconst QUARTILE = {};\n\n/**\n * Returns the quartile of the data set, based on percentile values from 0..1, exclusive.\n *\n * Category: Statistical\n *\n * @param {*} array The array or value range of numeric values for which you want the quartile value.\n * @param {*} quart Indicates which value to return.\n * @returns\n */\nQUARTILE.EXC = (range, quart) => {\n range = parseNumberArray(numbers(flatten(range)));\n quart = parseNumber(quart);\n\n if (anyIsError(range, quart)) {\n return value\n }\n\n switch (quart) {\n case 1:\n return PERCENTILE.EXC(range, 0.25)\n case 2:\n return PERCENTILE.EXC(range, 0.5)\n case 3:\n return PERCENTILE.EXC(range, 0.75)\n default:\n return num\n }\n};\n\n/**\n * Returns the quartile of a data set.\n *\n * Category: Statistical\n *\n * @param {*} array The array or value range of numeric values for which you want the quartile value.\n * @param {*} quart Indicates which value to return.\n * @returns\n */\nQUARTILE.INC = (range, quart) => {\n range = parseNumberArray(numbers(flatten(range)));\n quart = parseNumber(quart);\n\n if (anyIsError(range, quart)) {\n return value\n }\n\n switch (quart) {\n case 1:\n return PERCENTILE.INC(range, 0.25)\n case 2:\n return PERCENTILE.INC(range, 0.5)\n case 3:\n return PERCENTILE.INC(range, 0.75)\n default:\n return num\n }\n};\n\nconst RANK = {};\n\n/**\n * Returns the rank of a number in a list of numbers.\n *\n * Category: Statistical\n *\n * @param {*} number The number whose rank you want to find.\n * @param {*} ref An array of, or a reference to, a list of numbers. Nonnumeric values in Ref are ignored.\n * @param {*} order Optional. A number specifying how to rank number.\n * @returns\n */\nRANK.AVG = (number, ref, order) => {\n number = parseNumber(number);\n ref = parseNumberArray(flatten(ref));\n\n if (anyIsError(number, ref)) {\n return value\n }\n\n ref = flatten(ref);\n order = order || false;\n\n const sort = order ? (a, b) => a - b : (a, b) => b - a;\n\n ref = ref.sort(sort);\n\n const length = ref.length;\n\n let count = 0;\n\n for (let i = 0; i < length; i++) {\n if (ref[i] === number) {\n count++;\n }\n }\n\n return count > 1 ? (2 * ref.indexOf(number) + count + 1) / 2 : ref.indexOf(number) + 1\n};\n\n/**\n * Returns the rank of a number in a list of numbers.\n *\n * Category: Statistical\n *\n * @param {*} number The number whose rank you want to find.\n * @param {*} ref An array of, or a reference to, a list of numbers. Non-numeric values in Ref are ignored.\n * @param {*} order Optional. A number specifying how to rank number.\n * @returns\n */\nRANK.EQ = (number, ref, order) => {\n number = parseNumber(number);\n ref = parseNumberArray(flatten(ref));\n\n if (anyIsError(number, ref)) {\n return value\n }\n\n order = order || false;\n\n const sort = order ? (a, b) => a - b : (a, b) => b - a;\n\n ref = ref.sort(sort);\n\n return ref.indexOf(number) + 1\n};\n\n/**\n * Returns the row number of a reference.\n *\n * Category: Lookup and reference\n *\n * @param {*} reference the value or range of values for which you want the row number.\n * @param {*} index\n * @returns\n */\nfunction ROW(reference, index) {\n if (arguments.length !== 2) {\n return na\n }\n\n if (index < 0) {\n return num\n }\n\n if (!(reference instanceof Array) || typeof index !== 'number') {\n return value\n }\n\n if (reference.length === 0) {\n return undefined\n }\n\n return jStat.row(reference, index)\n}\n\n/**\n * Returns the square of the Pearson product moment correlation coefficient.\n *\n * Category: Statistical\n *\n * @param {*} known_y An array or range of data points.\n * @param {*} known_x An array or range of data points.\n * @returns\n */\nfunction RSQ(known_y, known_x) {\n // no need to flatten here, PEARSON will take care of that\n known_y = parseNumberArray(flatten(known_y));\n known_x = parseNumberArray(flatten(known_x));\n\n if (anyIsError(known_y, known_x)) {\n return value\n }\n\n return Math.pow(PEARSON(known_y, known_x), 2)\n}\n\n/**\n * Returns the skewness of a distribution.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Number1 is required, subsequent numbers are optional. 1 to 255 arguments for which you want to calculate skewness. You can also use a single array or a reference to an array instead of arguments separated by commas.\n * @returns\n */\nfunction SKEW() {\n const range = parseNumberArray(flatten(arguments));\n\n if (range instanceof Error) {\n return range\n }\n\n const mean = jStat.mean(range);\n const n = range.length;\n\n let sigma = 0;\n\n for (let i = 0; i < n; i++) {\n sigma += Math.pow(range[i] - mean, 3);\n }\n\n return (n * sigma) / ((n - 1) * (n - 2) * Math.pow(jStat.stdev(range, true), 3))\n}\n\n/**\n * Returns the skewness of a distribution based on a population.\n *\n * Category: Statistical\n *\n * @returns\n */\nSKEW.P = function () {\n const range = parseNumberArray(flatten(arguments));\n\n if (range instanceof Error) {\n return range\n }\n\n const mean = jStat.mean(range);\n const n = range.length;\n\n let m2 = 0;\n let m3 = 0;\n\n for (let i = 0; i < n; i++) {\n m3 += Math.pow(range[i] - mean, 3);\n m2 += Math.pow(range[i] - mean, 2);\n }\n\n m3 = m3 / n;\n m2 = m2 / n;\n\n return m3 / Math.pow(m2, 3 / 2)\n};\n\n/**\n * Returns the slope of the linear regression line.\n *\n * Category: Statistical\n *\n * @param {*} known_y An array or value range of numeric dependent data points.\n * @param {*} known_x The set of independent data points.\n * @returns\n */\nfunction SLOPE(known_y, known_x) {\n known_y = parseNumberArray(flatten(known_y));\n known_x = parseNumberArray(flatten(known_x));\n\n if (anyIsError(known_y, known_x)) {\n return value\n }\n\n const xmean = jStat.mean(known_x);\n const ymean = jStat.mean(known_y);\n const n = known_x.length;\n\n let num = 0;\n let den = 0;\n\n for (let i = 0; i < n; i++) {\n num += (known_x[i] - xmean) * (known_y[i] - ymean);\n den += Math.pow(known_x[i] - xmean, 2);\n }\n\n return num / den\n}\n\n/**\n * Returns the k-th smallest value in a data set.\n *\n * Category: Statistical\n *\n * @param {*} array An array or range of numerical data for which you want to determine the k-th smallest value.\n * @param {*} k The position (from the smallest) in the array or range of data to return.\n * @returns\n */\nfunction SMALL(array, k) {\n array = parseNumberArray(flatten(array));\n k = parseNumber(k);\n\n if (anyIsError(array, k)) {\n return array\n }\n\n return array.sort((a, b) => a - b)[k - 1]\n}\n\n/**\n * Returns a normalized value.\n *\n * Category: Statistical\n *\n * @param {*} x The value you want to normalize.\n * @param {*} mean The arithmetic mean of the distribution.\n * @param {*} standard_dev The standard deviation of the distribution.\n * @returns\n */\nfunction STANDARDIZE(x, mean, standard_dev) {\n x = parseNumber(x);\n mean = parseNumber(mean);\n standard_dev = parseNumber(standard_dev);\n\n if (anyIsError(x, mean, standard_dev)) {\n return value\n }\n\n return (x - mean) / standard_dev\n}\n\nconst STDEV = {};\n\n/**\n * Calculates standard deviation based on the entire population.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Number arguments 2 to 254 corresponding to a population. You can also use a single array or a reference to an array instead of arguments separated by commas.\n * @returns\n */\nSTDEV.P = function () {\n const v = VAR.P.apply(this, arguments);\n\n let result = Math.sqrt(v);\n\n if (isNaN(result)) {\n result = num;\n }\n\n return result\n};\n\n/**\n * Estimates standard deviation based on a sample.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Number arguments 2 to 254 corresponding to a sample of a population. You can also use a single array or a reference to an array instead of arguments separated by commas.\n * @returns\n */\nSTDEV.S = function () {\n const v = VAR.S.apply(this, arguments);\n const result = Math.sqrt(v);\n\n return result\n};\n\n/**\n * Estimates standard deviation based on a sample, including numbers, text, and logical values.\n *\n * Category: Statistical\n *\n * @param {*} args value1, value2, ... Value1 is required, subsequent values are optional. 1 to 255 values corresponding to a sample of a population. You can also use a single array or a reference to an array instead of arguments separated by commas.\n * @returns\n */\nfunction STDEVA() {\n const v = VARA.apply(this, arguments);\n const result = Math.sqrt(v);\n\n return result\n}\n\n/**\n * Calculates standard deviation based on the entire population, including numbers, text, and logical values.\n *\n * Category: Statistical\n *\n * @param {*} args value1, value2, ... Value1 is required, subsequent values are optional. 1 to 255 values corresponding to a population. You can also use a single array or a reference to an array instead of arguments separated by commas.\n * @returns\n */\nfunction STDEVPA() {\n const v = VARPA.apply(this, arguments);\n\n let result = Math.sqrt(v);\n\n if (isNaN(result)) {\n result = num;\n }\n\n return result\n}\n\n/**\n * Returns the standard error of the predicted y-value for each x in the regression.\n *\n * Category: Statistical\n *\n * @param {*} known_y An array or range of dependent data points.\n * @param {*} known_x An array or range of independent data points.\n * @returns\n */\nfunction STEYX(known_y, known_x) {\n known_y = parseNumberArray(flatten(known_y));\n known_x = parseNumberArray(flatten(known_x));\n\n if (anyIsError(known_y, known_x)) {\n return value\n }\n\n const xmean = jStat.mean(known_x);\n const ymean = jStat.mean(known_y);\n const n = known_x.length;\n\n let lft = 0;\n let num = 0;\n let den = 0;\n\n for (let i = 0; i < n; i++) {\n lft += Math.pow(known_y[i] - ymean, 2);\n num += (known_x[i] - xmean) * (known_y[i] - ymean);\n den += Math.pow(known_x[i] - xmean, 2);\n }\n\n return Math.sqrt((lft - (num * num) / den) / (n - 2))\n}\n\n/**\n * Returns the Percentage Points (probability) for the Student t-distribution.\n *\n * Category: Statistical\n *\n * @param {*} x The numeric value at which to evaluate the distribution\n * @param {*} deg_freedom An integer indicating the number of degrees of freedom.\n * @param {*} cumulative A logical value that determines the form of the function. If cumulative is TRUE, T.DIST returns the cumulative distribution function; if FALSE, it returns the probability density function.\n * @returns\n */\nT.DIST = (x, deg_freedom, cumulative) => {\n if (cumulative !== 1 && cumulative !== 2) {\n return num\n }\n\n return cumulative === 1 ? T.DIST.RT(x, deg_freedom) : T.DIST['2T'](x, deg_freedom)\n};\n\n/**\n * Returns the Percentage Points (probability) for the Student t-distribution\n *\n * Category: Statistical\n *\n * @param {*} x The numeric value at which to evaluate the distribution.\n * @param {*} deg_freedom An integer indicating the number of degrees of freedom.\n * @returns\n */\nT.DIST['2T'] = function (x, deg_freedom) {\n if (arguments.length !== 2) {\n return na\n }\n\n if (x < 0 || deg_freedom < 1) {\n return num\n }\n\n if (typeof x !== 'number' || typeof deg_freedom !== 'number') {\n return value\n }\n\n return (1 - jStat.studentt.cdf(x, deg_freedom)) * 2\n};\n\n/**\n * Returns the Student's t-distribution.\n *\n * Category: Statistical\n *\n * @param {*} x The numeric value at which to evaluate the distribution.\n * @param {*} deg_freedom An integer indicating the number of degrees of freedom.\n * @returns\n */\nT.DIST.RT = function (x, deg_freedom) {\n if (arguments.length !== 2) {\n return na\n }\n\n if (x < 0 || deg_freedom < 1) {\n return num\n }\n\n if (typeof x !== 'number' || typeof deg_freedom !== 'number') {\n return value\n }\n\n return 1 - jStat.studentt.cdf(x, deg_freedom)\n};\n\n/**\n * Returns the t-value of the Student's t-distribution as a function of the probability and the degrees of freedom.\n *\n * Category: Statistical\n *\n * @param {*} probability The probability associated with the Student's t-distribution.\n * @param {*} deg_freedom The number of degrees of freedom with which to characterize the distribution.\n * @returns\n */\nT.INV = (probability, deg_freedom) => {\n probability = parseNumber(probability);\n deg_freedom = parseNumber(deg_freedom);\n\n if (anyIsError(probability, deg_freedom)) {\n return value\n }\n\n return jStat.studentt.inv(probability, deg_freedom)\n};\n\n/**\n * Returns the inverse of the Student's t-distribution\n *\n * Category: Statistical\n *\n * @param {*} probability The probability associated with the Student's t-distribution.\n * @param {*} deg_freedom The number of degrees of freedom with which to characterize the distribution.\n * @returns\n */\nT.INV['2T'] = (probability, deg_freedom) => {\n probability = parseNumber(probability);\n deg_freedom = parseNumber(deg_freedom);\n\n if (probability <= 0 || probability > 1 || deg_freedom < 1) {\n return num\n }\n\n if (anyIsError(probability, deg_freedom)) {\n return value\n }\n\n return Math.abs(jStat.studentt.inv(probability / 2, deg_freedom))\n};\n\n// The algorithm can be found here:\n// http://www.chem.uoa.gr/applets/AppletTtest/Appl_Ttest2.html\n/**\n * Returns the probability associated with a Student's t-test.\n *\n * Category: Statistical\n *\n * @param {*} array1 The first data set.\n * @param {*} array2 The second data set.\n * @returns\n */\nT.TEST = (array1, array2) => {\n array1 = parseNumberArray(flatten(array1));\n array2 = parseNumberArray(flatten(array2));\n\n if (anyIsError(array1, array2)) {\n return value\n }\n\n const mean_x = jStat.mean(array1);\n const mean_y = jStat.mean(array2);\n\n let s_x = 0;\n let s_y = 0;\n let i;\n\n for (i = 0; i < array1.length; i++) {\n s_x += Math.pow(array1[i] - mean_x, 2);\n }\n\n for (i = 0; i < array2.length; i++) {\n s_y += Math.pow(array2[i] - mean_y, 2);\n }\n\n s_x = s_x / (array1.length - 1);\n s_y = s_y / (array2.length - 1);\n\n const t = Math.abs(mean_x - mean_y) / Math.sqrt(s_x / array1.length + s_y / array2.length);\n\n return T.DIST['2T'](t, array1.length + array2.length - 2)\n};\n\n/**\n * Returns values along a linear trend.\n *\n * Category: Statistical\n *\n * @param {*} known_ys The set of y-values you already know in the relationship y = mx + b\n * @param {*} known_xs An optional set of x-values that you may already know in the relationship y = mx + b\n * @param {*} new_xs Optional. New x-values for which you want TREND to return corresponding y-values.\n * @returns\n */\nfunction TREND(known_ys, known_xs, new_xs) {\n known_ys = parseNumberArray(flatten(known_ys));\n known_xs = parseNumberArray(flatten(known_xs));\n new_xs = parseNumberArray(flatten(new_xs));\n\n if (anyIsError(known_ys, known_xs, new_xs)) {\n return value\n }\n\n const linest = LINEST(known_ys, known_xs);\n const m = linest[0];\n const b = linest[1];\n const result = [];\n\n new_xs.forEach((x) => {\n result.push(m * x + b);\n });\n\n return result\n}\n\n/**\n * Returns the mean of the interior of a data set.\n *\n * Category: Statistical\n *\n * @param {*} array The array or range of values to trim and average.\n * @param {*} percent The fractional number of data points to exclude from the calculation. For example, if percent = 0.2, 4 points are trimmed from a data set of 20 points (20 x 0.2): 2 from the top and 2 from the bottom of the set.\n * @returns\n */\nfunction TRIMMEAN(range, percent) {\n range = parseNumberArray(flatten(range));\n percent = parseNumber(percent);\n\n if (anyIsError(range, percent)) {\n return value\n }\n\n const trim = FLOOR(range.length * percent, 2) / 2;\n\n return jStat.mean(\n initial(\n rest(\n range.sort((a, b) => a - b),\n trim\n ),\n trim\n )\n )\n}\n\nconst VAR = {};\n\n/**\n * Calculates variance based on the entire population.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Number arguments 2 to 254 corresponding to a population.\n * @returns\n */\nVAR.P = function () {\n const range = numbers(flatten(arguments));\n const n = range.length;\n\n let sigma = 0;\n\n const mean = AVERAGE(range);\n\n let result;\n\n for (let i = 0; i < n; i++) {\n sigma += Math.pow(range[i] - mean, 2);\n }\n\n result = sigma / n;\n\n if (isNaN(result)) {\n result = num;\n }\n\n return result\n};\n\n/**\n * Estimates variance based on a sample.\n *\n * Category: Statistical\n *\n * @param {*} args number1, number2, ... Number arguments 2 to 254 corresponding to a sample of a population.\n * @returns\n */\nVAR.S = function () {\n const range = numbers(flatten(arguments));\n const n = range.length;\n\n let sigma = 0;\n\n const mean = AVERAGE(range);\n\n for (let i = 0; i < n; i++) {\n sigma += Math.pow(range[i] - mean, 2);\n }\n\n return sigma / (n - 1)\n};\n\n/**\n * Estimates variance based on a sample, including numbers, text, and logical values.\n *\n * Category: Statistical\n *\n * @param {*} args value1, value2, ... Value1 is required, subsequent values are optional. 1 to 255 value arguments corresponding to a sample of a population.\n * @returns\n */\nfunction VARA() {\n const range = flatten(arguments);\n const n = range.length;\n\n let sigma = 0;\n let count = 0;\n\n const mean = AVERAGEA(range);\n\n for (let i = 0; i < n; i++) {\n const el = range[i];\n\n if (typeof el === 'number') {\n sigma += Math.pow(el - mean, 2);\n } else if (el === true) {\n sigma += Math.pow(1 - mean, 2);\n } else {\n sigma += Math.pow(0 - mean, 2);\n }\n\n if (el !== null) {\n count++;\n }\n }\n\n return sigma / (count - 1)\n}\n\n/**\n * Calculates variance based on the entire population, including numbers, text, and logical values.\n *\n * Category: Statistical\n *\n * @param {*} args value1, value2, ... Value1 is required, subsequent values are optional. 1 to 255 value arguments corresponding to a population.\n * @returns\n */\nfunction VARPA() {\n const range = flatten(arguments);\n const n = range.length;\n\n let sigma = 0;\n let count = 0;\n\n const mean = AVERAGEA(range);\n\n let result;\n\n for (let i = 0; i < n; i++) {\n const el = range[i];\n\n if (typeof el === 'number') {\n sigma += Math.pow(el - mean, 2);\n } else if (el === true) {\n sigma += Math.pow(1 - mean, 2);\n } else {\n sigma += Math.pow(0 - mean, 2);\n }\n\n if (el !== null) {\n count++;\n }\n }\n\n result = sigma / count;\n\n if (isNaN(result)) {\n result = num;\n }\n\n return result\n}\n\nconst WEIBULL = {};\n\n/**\n * Returns the Weibull distribution.\n *\n * Category: Statistical\n *\n * @param {*} x The value at which to evaluate the function.\n * @param {*} alpha A parameter to the distribution.\n * @param {*} beta A parameter to the distribution.\n * @param {*} cumulative Determines the form of the function.\n * @returns\n */\nWEIBULL.DIST = (x, alpha, beta, cumulative) => {\n x = parseNumber(x);\n alpha = parseNumber(alpha);\n beta = parseNumber(beta);\n\n if (anyIsError(x, alpha, beta)) {\n return value\n }\n\n return cumulative\n ? 1 - Math.exp(-Math.pow(x / beta, alpha))\n : (Math.pow(x, alpha - 1) * Math.exp(-Math.pow(x / beta, alpha)) * alpha) / Math.pow(beta, alpha)\n};\n\nconst Z = {};\n\n/**\n * Returns the one-tailed probability-value of a z-test.\n *\n * Category: Statistical\n *\n * @param {*} array The array or range of data against which to test x.\n * @param {*} x The value to test.\n * @param {*} sigma Optional. The population (known) standard deviation. If omitted, the sample standard deviation is used.\n * @returns\n */\nZ.TEST = (array, x, sigma) => {\n array = parseNumberArray(flatten(array));\n x = parseNumber(x);\n\n if (anyIsError(array, x)) {\n return value\n }\n\n sigma = sigma || STDEV.S(array);\n\n const n = array.length;\n\n return 1 - NORM.S.DIST((AVERAGE(array) - x) / (sigma / Math.sqrt(n)), true)\n};\n\n/**\n * Returns the absolute value of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The real number of which you want the absolute value.\n * @returns\n */\nfunction ABS(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n const result = Math.abs(number);\n\n return result\n}\n\n/**\n * Returns the arccosine of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The cosine of the angle you want and must be from -1 to 1.\n * @returns\n */\nfunction ACOS(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n let result = Math.acos(number);\n\n if (isNaN(result)) {\n result = num;\n }\n\n return result\n}\n\n/**\n * Returns the inverse hyperbolic cosine of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number Any real number equal to or greater than 1.\n * @returns\n */\nfunction ACOSH(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n let result = Math.log(number + Math.sqrt(number * number - 1));\n\n if (isNaN(result)) {\n result = num;\n }\n\n return result\n}\n\n/**\n * Returns the arccotangent of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number Number is the cotangent of the angle you want. This must be a real number.\n * @returns\n */\nfunction ACOT(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n const result = Math.atan(1 / number);\n\n return result\n}\n\n/**\n * Returns the hyperbolic arccotangent of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The absolute value of Number must be greater than 1.\n * @returns\n */\nfunction ACOTH(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n let result = 0.5 * Math.log((number + 1) / (number - 1));\n\n if (isNaN(result)) {\n result = num;\n }\n\n return result\n}\n\n// TODO: use options\n/**\n * Returns an aggregate in a list or database.\n *\n * Category: Math and trigonometry\n *\n * @param {*} function_num A number 1 to 19 that specifies which function to use.\n * @param {*} options A numerical value that determines which values to ignore in the evaluation range for the function. Note: The function will not ignore hidden rows, nested subtotals or nested aggregates if the array argument includes a calculation, for example: =AGGREGATE(14,3,A1:A100*(A1:A100>0),1)\n * @param {*} ref1 The first numeric argument for functions that take multiple numeric arguments for which you want the aggregate value.\n * @param {*} ref2 Optional. Numeric arguments 2 to 253 for which you want the aggregate value. For functions that take an array, ref1 is an array, an array formula, or a reference to a range of values for which you want the aggregate value. Ref2 is a second argument that is required for certain functions.\n * @returns\n */\nfunction AGGREGATE(function_num, options, ref1, ref2) {\n function_num = parseNumber(function_num);\n options = parseNumber(function_num);\n\n if (anyIsError(function_num, options)) {\n return value\n }\n\n switch (function_num) {\n case 1:\n return AVERAGE(ref1)\n case 2:\n return COUNT(ref1)\n case 3:\n return COUNTA(ref1)\n case 4:\n return MAX(ref1)\n case 5:\n return MIN(ref1)\n case 6:\n return PRODUCT(ref1)\n case 7:\n return STDEV.S(ref1)\n case 8:\n return STDEV.P(ref1)\n case 9:\n return SUM(ref1)\n case 10:\n return VAR.S(ref1)\n case 11:\n return VAR.P(ref1)\n case 12:\n return MEDIAN(ref1)\n case 13:\n return MODE.SNGL(ref1)\n case 14:\n return LARGE(ref1, ref2)\n case 15:\n return SMALL(ref1, ref2)\n case 16:\n return PERCENTILE.INC(ref1, ref2)\n case 17:\n return QUARTILE.INC(ref1, ref2)\n case 18:\n return PERCENTILE.EXC(ref1, ref2)\n case 19:\n return QUARTILE.EXC(ref1, ref2)\n }\n}\n\n/**\n * Converts a Roman number to Arabic, as a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} text A string enclosed in quotation marks, an empty string (\"\"), or a reference to a value containing text.\n * @returns\n */\nfunction ARABIC(text) {\n if (text === undefined || text === null) {\n return 0\n }\n\n if (text instanceof Error) {\n return text\n }\n\n // Credits: Rafa? Kukawski\n if (!/^M*(?:D?C{0,3}|C[MD])(?:L?X{0,3}|X[CL])(?:V?I{0,3}|I[XV])$/.test(text)) {\n return value\n }\n\n let r = 0;\n text.replace(/[MDLV]|C[MD]?|X[CL]?|I[XV]?/g, (i) => {\n r += {\n M: 1000,\n CM: 900,\n D: 500,\n CD: 400,\n C: 100,\n XC: 90,\n L: 50,\n XL: 40,\n X: 10,\n IX: 9,\n V: 5,\n IV: 4,\n I: 1\n }[i];\n });\n\n return r\n}\n\n/**\n * Returns the arcsine of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The sine of the angle you want and must be from -1 to 1.\n * @returns\n */\nfunction ASIN(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n let result = Math.asin(number);\n\n if (isNaN(result)) {\n result = num;\n }\n\n return result\n}\n\n/**\n * Returns the inverse hyperbolic sine of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number Any real number.\n * @returns\n */\nfunction ASINH(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n return Math.log(number + Math.sqrt(number * number + 1))\n}\n\n/**\n * Returns the arctangent of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The tangent of the angle you want.\n * @returns\n */\nfunction ATAN(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n return Math.atan(number)\n}\n\n/**\n * Returns the arctangent from x- and y-coordinates.\n *\n * Category: Math and trigonometry\n *\n * @param {*} x_num The x-coordinate of the point.\n * @param {*} y_num The y-coordinate of the point.\n * @returns\n */\nfunction ATAN2(x_num, y_num) {\n x_num = parseNumber(x_num);\n y_num = parseNumber(y_num);\n const anyError$1 = anyError(x_num, y_num);\n\n if (anyError$1) {\n return anyError$1\n }\n\n return Math.atan2(x_num, y_num)\n}\n\n/**\n * Returns the inverse hyperbolic tangent of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number Any real number between 1 and -1.\n * @returns\n */\nfunction ATANH(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n let result = Math.log((1 + number) / (1 - number)) / 2;\n\n if (isNaN(result)) {\n result = num;\n }\n\n return result\n}\n\n/**\n * Converts a number into a text representation with the given radix (base).\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The number that you want to convert. Must be an integer greater than or equal to 0 and less than 2^53.\n * @param {*} radix The base radix that you want to convert the number into. Must be an integer greater than or equal to 2 and less than or equal to 36.\n * @param {*} min_length Optional. The minimum length of the returned string. Must be an integer greater than or equal to 0.\n * @returns\n */\nfunction BASE(number, radix, min_length) {\n number = parseNumber(number);\n radix = parseNumber(radix);\n min_length = parseNumber(min_length);\n const anyError$1 = anyError(number, radix, min_length);\n\n if (anyError$1) {\n return anyError$1\n }\n\n if (radix === 0) {\n return num\n }\n\n const result = number.toString(radix);\n\n return new Array(Math.max(min_length + 1 - result.length, 0)).join('0') + result\n}\n\n/**\n * Rounds a number to the nearest integer or to the nearest multiple of significance.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The value you want to round.\n * @param {*} significance The multiple to which you want to round.\n * @param {*} mode Optional. For negative numbers, controls whether Number is rounded toward or away from zero.\n * @returns\n */\nfunction CEILING(number, significance, mode) {\n number = parseNumber(number);\n significance = parseNumber(significance);\n mode = parseNumber(mode);\n const anyError$1 = anyError(number, significance, mode);\n\n if (anyError$1) {\n return anyError$1\n }\n\n if (significance === 0) {\n return 0\n }\n\n significance = Math.abs(significance);\n const precision = -Math.floor(Math.log(significance) / Math.log(10));\n\n if (number >= 0) {\n return ROUND(Math.ceil(number / significance) * significance, precision)\n } else {\n if (mode === 0) {\n return -ROUND(Math.floor(Math.abs(number) / significance) * significance, precision)\n } else {\n return -ROUND(Math.ceil(Math.abs(number) / significance) * significance, precision)\n }\n }\n}\n\nCEILING.MATH = CEILING;\n\nCEILING.PRECISE = CEILING;\n\n/**\n * Returns the number of combinations for a given number of objects.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The number of items.\n * @param {*} number_chosen The number of items in each combination.\n * @returns\n */\nfunction COMBIN(number, number_chosen) {\n number = parseNumber(number);\n number_chosen = parseNumber(number_chosen);\n const anyError$1 = anyError(number, number_chosen);\n\n if (anyError$1) {\n return anyError$1\n }\n\n if (number < number_chosen) {\n return num\n }\n\n return FACT(number) / (FACT(number_chosen) * FACT(number - number_chosen))\n}\n\n/**\n * Returns the number of combinations with repetitions for a given number of items.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number Must be greater than or equal to 0, and greater than or equal to Number_chosen. Non-integer values are truncated.\n * @param {*} number_chosen Must be greater than or equal to 0. Non-integer values are truncated.\n * @returns\n */\nfunction COMBINA(number, number_chosen) {\n number = parseNumber(number);\n number_chosen = parseNumber(number_chosen);\n const anyError$1 = anyError(number, number_chosen);\n\n if (anyError$1) {\n return anyError$1\n }\n\n if (number < number_chosen) {\n return num\n }\n\n return number === 0 && number_chosen === 0 ? 1 : COMBIN(number + number_chosen - 1, number - 1)\n}\n\n/**\n * Returns the cosine of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The angle in radians for which you want the cosine.\n * @returns\n */\nfunction COS(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n return Math.cos(number)\n}\n\n/**\n * Returns the hyperbolic cosine of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number Any real number for which you want to find the hyperbolic cosine.\n * @returns\n */\nfunction COSH(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n return (Math.exp(number) + Math.exp(-number)) / 2\n}\n\n/**\n * Returns the hyperbolic cosine of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The angle in radians for which you want the cotangent.\n * @returns\n */\nfunction COT(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n if (number === 0) {\n return div0\n }\n\n return 1 / Math.tan(number)\n}\n\n/**\n * Returns the cotangent of an angle.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number\n * @returns\n */\nfunction COTH(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n if (number === 0) {\n return div0\n }\n\n const e2 = Math.exp(2 * number);\n\n return (e2 + 1) / (e2 - 1)\n}\n\n/**\n * Returns the cosecant of an angle.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number\n * @returns\n */\nfunction CSC(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n if (number === 0) {\n return div0\n }\n\n return 1 / Math.sin(number)\n}\n\n/**\n * Returns the hyperbolic cosecant of an angle.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number\n * @returns\n */\nfunction CSCH(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n if (number === 0) {\n return div0\n }\n\n return 2 / (Math.exp(number) - Math.exp(-number))\n}\n\n/**\n * Converts a text representation of a number in a given base into a decimal number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} text\n * @param {*} radix Radix must be an integer.\n * @returns\n */\nfunction DECIMAL(text, radix) {\n if (arguments.length < 2) {\n return na\n }\n\n text = text || '0';\n radix = parseNumber(radix);\n const anyError$1 = anyError(text, radix);\n\n if (anyError$1) {\n return anyError$1\n }\n\n if (radix === 0) {\n return num\n }\n\n const result = parseInt(text, radix);\n\n if (isNaN(result)) {\n return num\n }\n\n return result\n}\n\n/**\n * Converts radians to degrees.\n *\n * Category: Math and trigonometry\n *\n * @param {*} angle The angle in radians that you want to convert.\n * @returns\n */\nfunction DEGREES(angle) {\n angle = parseNumber(angle);\n\n if (angle instanceof Error) {\n return angle\n }\n\n return (angle * 180) / Math.PI\n}\n\n/**\n * Rounds a number up to the nearest even integer.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The value to round.\n * @returns\n */\nfunction EVEN(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n return CEILING(number, -2, -1)\n}\n\n/**\n * Returns e raised to the power of a given number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The exponent applied to the base e.\n * @returns\n */\nfunction EXP(number) {\n if (arguments.length < 1) {\n return na\n }\n\n if (arguments.length > 1) {\n return error\n }\n\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n number = Math.exp(number);\n\n return number\n}\n\nconst MEMOIZED_FACT = [];\n/**\n * Returns the factorial of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The nonnegative number for which you want the factorial. If number is not an integer, it is truncated.\n * @returns\n */\nfunction FACT(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n const n = Math.floor(number);\n\n if (n === 0 || n === 1) {\n return 1\n } else if (MEMOIZED_FACT[n] > 0) {\n return MEMOIZED_FACT[n]\n } else {\n MEMOIZED_FACT[n] = FACT(n - 1) * n;\n\n return MEMOIZED_FACT[n]\n }\n}\n\n/**\n * Returns the double factorial of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The value for which to return the double factorial. If number is not an integer, it is truncated.\n * @returns\n */\nfunction FACTDOUBLE(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n const n = Math.floor(number);\n\n return n <= 0 ? 1 : n * FACTDOUBLE(n - 2)\n}\n\n/**\n * Rounds a number down, toward zero.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The numeric value you want to round.\n * @param {*} significance The multiple to which you want to round.\n * @returns\n */\nfunction FLOOR(number, significance) {\n number = parseNumber(number);\n significance = parseNumber(significance);\n const anyError$1 = anyError(number, significance);\n\n if (anyError$1) {\n return anyError$1\n }\n\n if (significance === 0) {\n return 0\n }\n\n if (!(number >= 0 && significance > 0) && !(number <= 0 && significance < 0)) {\n return num\n }\n\n significance = Math.abs(significance);\n const precision = -Math.floor(Math.log(significance) / Math.log(10));\n\n return number >= 0\n ? ROUND(Math.floor(number / significance) * significance, precision)\n : -ROUND(Math.ceil(Math.abs(number) / significance), precision)\n}\n\n// TODO: Verify\n\n/**\n * Rounds a number down, to the nearest integer or to the nearest multiple of significance.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The number to be rounded down.\n * @param {*} significance Optional. The multiple to which you want to round.\n * @param {*} mode Optional. The direction (toward or away from 0) to round negative numbers.\n * @returns\n */\nFLOOR.MATH = (number, significance, mode) => {\n if (significance instanceof Error) {\n return significance\n }\n\n significance = significance === undefined ? 0 : significance;\n\n number = parseNumber(number);\n significance = parseNumber(significance);\n mode = parseNumber(mode);\n const anyError$1 = anyError(number, significance, mode);\n\n if (anyError$1) {\n return anyError$1\n }\n\n if (significance === 0) {\n return 0\n }\n\n significance = significance ? Math.abs(significance) : 1;\n const precision = -Math.floor(Math.log(significance) / Math.log(10));\n\n if (number >= 0) {\n return ROUND(Math.floor(number / significance) * significance, precision)\n } else if (mode === 0 || mode === undefined) {\n return -ROUND(Math.ceil(Math.abs(number) / significance) * significance, precision)\n }\n\n return -ROUND(Math.floor(Math.abs(number) / significance) * significance, precision)\n};\n\n// Deprecated\n\n/**\n * Rounds a number the nearest integer or to the nearest multiple of significance. Regardless of the sign of the number, the number is rounded up.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The value to be rounded.\n * @param {*} significance Optional. The multiple to which number is to be rounded. If significance is omitted, its default value is 1.\n * @returns\n */\nFLOOR.PRECISE = FLOOR['MATH'];\n\n// adapted http://rosettacode.org/wiki/Greatest_common_divisor#JavaScript\n/**\n * Returns the greatest common divisor.\n *\n * Category: Math and trigonometry\n *\n * @param {*} args number1, number2, ... Number1 is required, subsequent numbers are optional. 1 to 255 values. If any value is not an integer, it is truncated.\n * @returns\n */\nfunction GCD() {\n const range = parseNumberArray(flatten(arguments));\n\n if (range instanceof Error) {\n return range\n }\n\n const n = range.length;\n const r0 = range[0];\n let x = r0 < 0 ? -r0 : r0;\n\n for (let i = 1; i < n; i++) {\n const ri = range[i];\n let y = ri < 0 ? -ri : ri;\n\n while (x && y) {\n if (x > y) {\n x %= y;\n } else {\n y %= x;\n }\n }\n\n x += y;\n }\n\n return x\n}\n\n/**\n * Rounds a number down to the nearest integer.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The real number you want to round down to an integer.\n * @returns\n */\nfunction INT(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n return Math.floor(number)\n}\n\n// TODO: verify\nconst ISO = {\n CEILING: CEILING\n};\n\n/**\n * Returns the least common multiple.\n *\n * Category: Math and trigonometry\n *\n * @param {*} args number1, number2,... Number1 is required, subsequent numbers are optional. 1 to 255 values for which you want the least common multiple. If value is not an integer, it is truncated.\n * @returns\n */\nfunction LCM() {\n // Credits: Jonas Raoni Soares Silva\n const o = parseNumberArray(flatten(arguments));\n\n if (o instanceof Error) {\n return o\n }\n\n for (var i, j, n, d, r = 1; (n = o.pop()) !== undefined; ) {\n if (n === 0) {\n return 0\n }\n\n while (n > 1) {\n if (n % 2) {\n for (i = 3, j = Math.floor(Math.sqrt(n)); i <= j && n % i; i += 2) {\n // empty\n }\n\n d = i <= j ? i : n;\n } else {\n d = 2;\n }\n\n for (n /= d, r *= d, i = o.length; i; o[--i] % d === 0 && (o[i] /= d) === 1 && o.splice(i, 1)) {\n // empty\n }\n }\n }\n\n return r\n}\n\n/**\n * Returns the natural logarithm of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The positive real number for which you want the natural logarithm.\n * @returns\n */\nfunction LN(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n if (number === 0) {\n return num\n }\n\n return Math.log(number)\n}\n\n/**\n * Returns the logarithm of a number to a specified base.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The positive real number for which you want the logarithm.\n * @param {*} base Optional. The base of the logarithm. If base is omitted, it is assumed to be 10.\n * @returns\n */\nfunction LOG(number, base) {\n number = parseNumber(number);\n base = base ? parseNumber(base) : 10;\n const anyError$1 = anyError(number, base);\n if (anyError$1) {\n return anyError$1\n }\n\n if (number === 0 || base === 0) {\n return num\n }\n\n return Math.log(number) / Math.log(base)\n}\n\n/**\n * Returns the base-10 logarithm of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The positive real number for which you want the base-10 logarithm.\n * @returns\n */\nfunction LOG10(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n if (number === 0) {\n return num\n }\n\n return Math.log(number) / Math.log(10)\n}\n\n/**\n * Returns the matrix product of two arrays. The result is an array with the same number of rows as array1 and the same number of columns as array2.\n *\n * Category: Math and trigonometry\n *\n * @param {*} array1 Required. 1st array you want to multiply.\n * @param {*} array2 Required. 2nd array you want to multiply.\n * @returns\n */\nfunction MMULT(array1, array2) {\n if (\n //Arguments are not arrays\n !Array.isArray(array1) ||\n !Array.isArray(array2) ||\n // There are empty arrays\n array1.some((el) => !el.length) ||\n array2.some((el) => !el.length) ||\n // Not all array elements are numbers\n flattenShallow(array1).some((el) => typeof el !== 'number') ||\n flattenShallow(array2).some((el) => typeof el !== 'number') ||\n // Number of columns in array1 is different from the number of rows in array2\n array1[0].length !== array2.length\n ) {\n return value\n }\n\n const matrix = Array(array1.length)\n .fill(0)\n .map(() => Array(array2[0].length).fill(0));\n\n return matrix.map((row, i) => row.map((_, j) => array1[i].reduce((sum, el, k) => sum + el * array2[k][j], 0)))\n}\n\n/**\n * Returns the remainder from division.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The number for which you want to find the remainder.\n * @param {*} divisor The number by which you want to divide number.\n * @returns\n */\nfunction MOD(number, divisor) {\n number = parseNumber(number);\n divisor = parseNumber(divisor);\n const anyError$1 = anyError(number, divisor);\n\n if (anyError$1) {\n return anyError$1\n }\n\n if (divisor === 0) {\n return div0\n }\n\n let modulus = Math.abs(number % divisor);\n modulus = number < 0 ? divisor - modulus : modulus;\n\n return divisor > 0 ? modulus : -modulus\n}\n\n/**\n * Returns a number rounded to the desired multiple.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The value to round.\n * @param {*} multiple The multiple to which you want to round number.\n * @returns\n */\nfunction MROUND(number, multiple) {\n number = parseNumber(number);\n multiple = parseNumber(multiple);\n const anyError$1 = anyError(number, multiple);\n\n if (anyError$1) {\n return anyError$1\n }\n\n if (number * multiple === 0) {\n return 0\n }\n\n if (number * multiple < 0) {\n return num\n }\n\n return Math.round(number / multiple) * multiple\n}\n\n/**\n * Returns the multinomial of a set of numbers.\n *\n * Category: Math and trigonometry\n *\n * @param {*} args number1, number2, ... Number1 is required, subsequent numbers are optional. 1 to 255 values for which you want the multinomial.\n * @returns\n */\nfunction MULTINOMIAL() {\n const args = parseNumberArray(flatten(arguments));\n\n if (args instanceof Error) {\n return args\n }\n\n let sum = 0;\n let divisor = 1;\n\n for (let i = 0; i < args.length; i++) {\n sum += args[i];\n divisor *= FACT(args[i]);\n }\n\n return FACT(sum) / divisor\n}\n\n/**\n * Returns the unit matrix for the specified dimension.\n *\n * Category: Math and trigonometry\n *\n * @param {*} dimension Required. Dimension is an integer specifying the dimension of the unit matrix that you want to return. It returns an array. The dimension has to be greater than zero.\n * @returns\n */\nfunction MUNIT(dimension) {\n if (arguments.length > 1) {\n return na\n }\n\n dimension = parseInt(dimension);\n\n if (!dimension || dimension <= 0) {\n return value\n }\n\n return Array(dimension)\n .fill(0)\n .map(() => Array(dimension).fill(0))\n .map((el, i) => {\n el[i] = 1;\n return el\n })\n}\n\n/**\n * Rounds a number up to the nearest odd integer.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number: The value to round.\n * @returns\n */\nfunction ODD(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n let temp = Math.ceil(Math.abs(number));\n temp = temp & 1 ? temp : temp + 1;\n\n return number >= 0 ? temp : -temp\n}\n\n/**\n * Returns the value of pi.\n *\n * Category: Math and trigonometry\n *\n * @returns\n */\nfunction PI() {\n return Math.PI\n}\n\n/**\n * Returns the result of a number raised to a power.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The base number. It can be any real number.\n * @param {*} power The exponent to which the base number is raised.\n * @returns\n */\nfunction POWER(number, power) {\n number = parseNumber(number);\n power = parseNumber(power);\n const anyError$1 = anyError(number, power);\n\n if (anyError$1) {\n return anyError$1\n }\n\n if (number === 0 && power === 0) {\n return num\n }\n\n const result = Math.pow(number, power);\n\n if (isNaN(result)) {\n return num\n }\n\n return result\n}\n\n/**\n * Multiplies its arguments.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number1 The first number or range that you want to multiply.\n * @param {*} args number2, ... Optional. Additional numbers or ranges that you want to multiply, up to a maximum of 255 arguments.\n * @returns\n */\nfunction PRODUCT() {\n const flatArguments = flatten(arguments);\n const flatArgumentsDefined = flatArguments.filter((arg) => arg !== undefined && arg !== null);\n\n if (flatArgumentsDefined.length === 0) {\n return 0\n }\n\n const args = parseNumberArray(flatArgumentsDefined);\n\n if (args instanceof Error) {\n return args\n }\n\n let result = 1;\n\n for (let i = 0; i < args.length; i++) {\n result *= args[i];\n }\n\n return result\n}\n\n/**\n * Returns the integer portion of a division.\n *\n * Category: Math and trigonometry\n *\n * @param {*} numerator The dividend.\n * @param {*} denominator The divisor.\n * @returns\n */\nfunction QUOTIENT(numerator, denominator) {\n numerator = parseNumber(numerator);\n denominator = parseNumber(denominator);\n const anyError$1 = anyError(numerator, denominator);\n\n if (anyError$1) {\n return anyError$1\n }\n\n return parseInt(numerator / denominator, 10)\n}\n\n/**\n * Converts degrees to radians.\n *\n * Category: Math and trigonometry\n *\n * @param {*} angle An angle in degrees that you want to convert.\n * @returns\n */\nfunction RADIANS(angle) {\n angle = parseNumber(angle);\n\n if (angle instanceof Error) {\n return angle\n }\n\n return (angle * Math.PI) / 180\n}\n\n/**\n * Returns a random number between 0 and 1.\n *\n * Category: Math and trigonometry\n *\n * @returns\n */\nfunction RAND() {\n return Math.random()\n}\n\n/**\n * Returns a random number between the numbers you specify.\n *\n * Category: Math and trigonometry\n *\n * @param {*} bottom The smallest integer RANDBETWEEN will return.\n * @param {*} top The largest integer RANDBETWEEN will return.\n * @returns\n */\nfunction RANDBETWEEN(bottom, top) {\n bottom = parseNumber(bottom);\n top = parseNumber(top);\n const anyError$1 = anyError(bottom, top);\n\n if (anyError$1) {\n return anyError$1\n }\n // Creative Commons Attribution 3.0 License\n // Copyright (c) 2012 eqcode\n\n return bottom + Math.ceil((top - bottom + 1) * Math.random()) - 1\n}\n\n// TODO\n/**\n * Converts an arabic numeral to roman, as text.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The Arabic numeral you want converted.\n * @returns\n */\nfunction ROMAN(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n // The MIT License\n // Copyright (c) 2008 Steven Levithan\n const digits = String(number).split('');\n const key = [\n '',\n 'C',\n 'CC',\n 'CCC',\n 'CD',\n 'D',\n 'DC',\n 'DCC',\n 'DCCC',\n 'CM',\n '',\n 'X',\n 'XX',\n 'XXX',\n 'XL',\n 'L',\n 'LX',\n 'LXX',\n 'LXXX',\n 'XC',\n '',\n 'I',\n 'II',\n 'III',\n 'IV',\n 'V',\n 'VI',\n 'VII',\n 'VIII',\n 'IX'\n ];\n let roman = '';\n let i = 3;\n\n while (i--) {\n roman = (key[+digits.pop() + i * 10] || '') + roman;\n }\n\n return new Array(+digits.join('') + 1).join('M') + roman\n}\n\n/**\n * Rounds a number to a specified number of digits.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The number that you want to round.\n * @param {*} num_digits The number of digits to which you want to round the number argument.\n * @returns\n */\nfunction ROUND(number, num_digits) {\n number = parseNumber(number);\n num_digits = parseNumber(num_digits);\n const anyError$1 = anyError(number, num_digits);\n\n if (anyError$1) {\n return anyError$1\n }\n\n return Number(Math.round(Number(number + 'e' + num_digits)) + 'e' + num_digits * -1)\n}\n\n/**\n * Rounds a number down, toward zero.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number Any real number that you want rounded down.\n * @param {*} num_digits The number of digits to which you want to round number.\n * @returns\n */\nfunction ROUNDDOWN(number, num_digits) {\n number = parseNumber(number);\n num_digits = parseNumber(num_digits);\n const anyError$1 = anyError(number, num_digits);\n\n if (anyError$1) {\n return anyError$1\n }\n\n const sign = number > 0 ? 1 : -1;\n\n return (sign * Math.floor(Math.abs(number) * Math.pow(10, num_digits))) / Math.pow(10, num_digits)\n}\n\n/**\n * Rounds a number up, away from zero.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number Any real number that you want rounded up.\n * @param {*} num_digits The number of digits to which you want to round number.\n * @returns\n */\nfunction ROUNDUP(number, num_digits) {\n number = parseNumber(number);\n num_digits = parseNumber(num_digits);\n const anyError$1 = anyError(number, num_digits);\n\n if (anyError$1) {\n return anyError$1\n }\n\n const sign = number > 0 ? 1 : -1;\n\n return (sign * Math.ceil(Math.abs(number) * Math.pow(10, num_digits))) / Math.pow(10, num_digits)\n}\n\n/**\n * Returns the secant of an angle.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The angle in radians for which you want the secant.\n * @returns\n */\nfunction SEC(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n return 1 / Math.cos(number)\n}\n\n/**\n * Returns the hyperbolic secant of an angle.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The angle in radians for which you want the hyperbolic secant.\n * @returns\n */\nfunction SECH(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n return 2 / (Math.exp(number) + Math.exp(-number))\n}\n\n/**\n * Returns the sum of a power series based on the formula.\n *\n * Category: Math and trigonometry\n *\n * @param {*} x The input value to the power series.\n * @param {*} n The initial power to which you want to raise x.\n * @param {*} m The step by which to increase n for each term in the series.\n * @param {*} coefficients A set of coefficients by which each successive power of x is multiplied. The number of values in coefficients determines the number of terms in the power series. For example, if there are three values in coefficients, then there will be three terms in the power series.\n * @returns\n */\nfunction SERIESSUM(x, n, m, coefficients) {\n x = parseNumber(x);\n n = parseNumber(n);\n m = parseNumber(m);\n coefficients = parseNumberArray(coefficients);\n\n if (anyIsError(x, n, m, coefficients)) {\n return value\n }\n\n let result = coefficients[0] * Math.pow(x, n);\n\n for (let i = 1; i < coefficients.length; i++) {\n result += coefficients[i] * Math.pow(x, n + i * m);\n }\n\n return result\n}\n\n/**\n * Returns the sign of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number Any real number.\n * @returns\n */\nfunction SIGN(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n if (number < 0) {\n return -1\n } else if (number === 0) {\n return 0\n } else {\n return 1\n }\n}\n\n/**\n * Returns the sine of the given angle.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The angle in radians for which you want the sine.\n * @returns\n */\nfunction SIN(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n return Math.sin(number)\n}\n\n/**\n * Returns the hyperbolic sine of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number Any real number.\n * @returns\n */\nfunction SINH(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n return (Math.exp(number) - Math.exp(-number)) / 2\n}\n\n/**\n * Returns a positive square root.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The number for which you want the square root.\n * @returns\n */\nfunction SQRT(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n if (number < 0) {\n return num\n }\n\n return Math.sqrt(number)\n}\n\n/**\n * Returns the square root of (number * pi).\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The number by which pi is multiplied.\n * @returns\n */\nfunction SQRTPI(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n return Math.sqrt(number * Math.PI)\n}\n\n/**\n * Returns a subtotal in a list or database.\n *\n * Category: Math and trigonometry\n *\n * @param {*} function_num The number 1-11 or 101-111 that specifies the function to use for the subtotal. 1-11 includes manually-hidden rows, while 101-111 excludes them; filtered-out values are always excluded.\n * @param {*} ref1 The first named range or reference for which you want the subtotal.\n * @returns\n */\nfunction SUBTOTAL(function_num, ref1) {\n function_num = parseNumber(function_num);\n\n if (function_num instanceof Error) {\n return function_num\n }\n\n switch (function_num) {\n case 1:\n return AVERAGE(ref1)\n case 2:\n return COUNT(ref1)\n case 3:\n return COUNTA(ref1)\n case 4:\n return MAX(ref1)\n case 5:\n return MIN(ref1)\n case 6:\n return PRODUCT(ref1)\n case 7:\n return STDEV.S(ref1)\n case 8:\n return STDEV.P(ref1)\n case 9:\n return SUM(ref1)\n case 10:\n return VAR.S(ref1)\n case 11:\n return VAR.P(ref1)\n // no hidden values for us\n case 101:\n return AVERAGE(ref1)\n case 102:\n return COUNT(ref1)\n case 103:\n return COUNTA(ref1)\n case 104:\n return MAX(ref1)\n case 105:\n return MIN(ref1)\n case 106:\n return PRODUCT(ref1)\n case 107:\n return STDEV.S(ref1)\n case 108:\n return STDEV.P(ref1)\n case 109:\n return SUM(ref1)\n case 110:\n return VAR.S(ref1)\n case 111:\n return VAR.P(ref1)\n }\n}\n\n/**\n * Adds its arguments.\n *\n * Category: Math and trigonometry\n *\n * @returns\n */\nfunction SUM() {\n let result = 0;\n\n arrayEach(argsToArray(arguments), (value) => {\n if (result instanceof Error) {\n return false\n } else if (value instanceof Error) {\n result = value;\n } else if (typeof value === 'number') {\n result += value;\n } else if (typeof value === 'string') {\n const parsed = parseFloat(value);\n\n !isNaN(parsed) && (result += parsed);\n } else if (Array.isArray(value)) {\n const inner_result = SUM.apply(null, value);\n\n if (inner_result instanceof Error) {\n result = inner_result;\n } else {\n result += inner_result;\n }\n }\n });\n\n return result\n}\n\n/**\n * Adds the values specified by a given criteria.\n *\n * Category: Math and trigonometry\n *\n * @param {*} range The range of values that you want evaluated by criteria. Cells in each range must be numbers or names, arrays, or references that contain numbers. Blank and text values are ignored.\n * @param {*} criteria The criteria in the form of a number, expression, a value reference, text, or a function that defines which values will be added.\n * @param {*} sum_range Optional. The actual values to add, if you want to add values other than those specified in the range argument. If the sum_range argument is omitted, Excel adds the values that are specified in the range argument (the same values to which the criteria is applied). Sum_range should be the same size and shape as range. If it isn't, performance may suffer, and the formula will sum a range of values that starts with the first value in sum_range but has the same dimensions as range.\n * @returns\n */\nfunction SUMIF(range, criteria, sum_range) {\n range = flatten(range);\n\n sum_range = sum_range ? flatten(sum_range) : range;\n\n if (range instanceof Error) {\n return range\n }\n\n if (criteria === undefined || criteria === null || criteria instanceof Error) {\n return 0\n }\n\n let result = 0;\n const isWildcard = criteria === '*';\n const tokenizedCriteria = isWildcard ? null : parse(criteria + '');\n\n for (let i = 0; i < range.length; i++) {\n const value = range[i];\n const sumValue = sum_range[i];\n\n if (isWildcard) {\n result += value;\n } else {\n const tokens = [createToken(value, TOKEN_TYPE_LITERAL)].concat(tokenizedCriteria);\n\n result += compute(tokens) ? sumValue : 0;\n }\n }\n\n return result\n}\n\n/**\n * Adds the values in a range that meet multiple criteria.\n *\n * Category: Math and trigonometry\n *\n * @returns\n */\nfunction SUMIFS() {\n const values = applyCriteria(...arguments);\n return SUM(values)\n}\n\n/**\n * Returns the sum of the products of corresponding array components.\n *\n * Category: Math and trigonometry\n *\n * @returns\n */\nfunction SUMPRODUCT() {\n if (!arguments || arguments.length === 0) {\n return value\n }\n\n const arrays = arguments.length + 1;\n let result = 0;\n let product;\n let k;\n let _i;\n let _ij;\n\n for (let i = 0; i < arguments[0].length; i++) {\n if (!(arguments[0][i] instanceof Array)) {\n product = 1;\n\n for (k = 1; k < arrays; k++) {\n const _i_arg = arguments[k - 1][i];\n\n if (_i_arg instanceof Error) {\n return _i_arg\n }\n\n _i = parseNumber(_i_arg);\n\n if (_i instanceof Error) {\n return _i\n }\n\n product *= _i;\n }\n\n result += product;\n } else {\n for (let j = 0; j < arguments[0][i].length; j++) {\n product = 1;\n\n for (k = 1; k < arrays; k++) {\n const _ij_arg = arguments[k - 1][i][j];\n\n if (_ij_arg instanceof Error) {\n return _ij_arg\n }\n\n _ij = parseNumber(_ij_arg);\n\n if (_ij instanceof Error) {\n return _ij\n }\n\n product *= _ij;\n }\n\n result += product;\n }\n }\n }\n\n return result\n}\n\n/**\n * Returns the sum of the squares of the arguments.\n *\n * Category: Math and trigonometry\n *\n * @param {*} args number1, number2, ... Number1 is required, subsequent numbers are optional. 1 to 255 arguments for which you want the sum of the squares. You can also use a single array or a reference to an array instead of arguments separated by commas.\n * @returns\n */\nfunction SUMSQ() {\n const numbers = parseNumberArray(flatten(arguments));\n\n if (numbers instanceof Error) {\n return numbers\n }\n\n let result = 0;\n const length = numbers.length;\n\n for (let i = 0; i < length; i++) {\n result += ISNUMBER(numbers[i]) ? numbers[i] * numbers[i] : 0;\n }\n\n return result\n}\n\n/**\n * Returns the sum of the difference of squares of corresponding values in two arrays.\n *\n * Category: Math and trigonometry\n *\n * @param {*} array_x The first array or range of values.\n * @param {*} array_y The second array or range of values.\n * @returns\n */\nfunction SUMX2MY2(array_x, array_y) {\n array_x = parseNumberArray(flatten(array_x));\n array_y = parseNumberArray(flatten(array_y));\n\n if (anyIsError(array_x, array_y)) {\n return value\n }\n\n let result = 0;\n\n for (let i = 0; i < array_x.length; i++) {\n result += array_x[i] * array_x[i] - array_y[i] * array_y[i];\n }\n\n return result\n}\n\n/**\n * Returns the sum of the sum of squares of corresponding values in two arrays.\n *\n * Category: Math and trigonometry\n *\n * @param {*} array_x The first array or range of values.\n * @param {*} array_y The second array or range of values.\n * @returns\n */\nfunction SUMX2PY2(array_x, array_y) {\n array_x = parseNumberArray(flatten(array_x));\n array_y = parseNumberArray(flatten(array_y));\n\n if (anyIsError(array_x, array_y)) {\n return value\n }\n\n let result = 0;\n array_x = parseNumberArray(flatten(array_x));\n array_y = parseNumberArray(flatten(array_y));\n\n for (let i = 0; i < array_x.length; i++) {\n result += array_x[i] * array_x[i] + array_y[i] * array_y[i];\n }\n\n return result\n}\n\n/**\n * Returns the sum of squares of differences of corresponding values in two arrays.\n *\n * Category: Math and trigonometry\n *\n * @param {*} array_x The first array or range of values.\n * @param {*} array_y The second array or range of values.\n * @returns\n */\nfunction SUMXMY2(array_x, array_y) {\n array_x = parseNumberArray(flatten(array_x));\n array_y = parseNumberArray(flatten(array_y));\n\n if (anyIsError(array_x, array_y)) {\n return value\n }\n\n let result = 0;\n array_x = flatten(array_x);\n array_y = flatten(array_y);\n\n for (let i = 0; i < array_x.length; i++) {\n result += Math.pow(array_x[i] - array_y[i], 2);\n }\n\n return result\n}\n\n/**\n * Returns the tangent of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The angle in radians for which you want the tangent.\n * @returns\n */\nfunction TAN(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n return Math.tan(number)\n}\n\n/**\n * Returns the hyperbolic tangent of a number.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number Any real number.\n * @returns\n */\nfunction TANH(number) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n const e2 = Math.exp(2 * number);\n\n return (e2 - 1) / (e2 + 1)\n}\n\n/**\n * Truncates a number to an integer.\n *\n * Category: Math and trigonometry\n *\n * @param {*} number The number you want to truncate.\n * @param {*} num_digits Optional. A number specifying the precision of the truncation. The default value for num_digits is 0 (zero).\n * @returns\n */\nfunction TRUNC(number, num_digits) {\n number = parseNumber(number);\n num_digits = parseNumber(num_digits);\n const anyError$1 = anyError(number, num_digits);\n\n if (anyError$1) {\n return anyError$1\n }\n\n const sign = number > 0 ? 1 : -1;\n\n return (sign * Math.floor(Math.abs(number) * Math.pow(10, num_digits))) / Math.pow(10, num_digits)\n}\n\n/**\n * Following functions are part of Formula.js only and not found in Excel.\n * Purpose of these functions is to implement an Excel like behaviour for fundamental math symbols such as +, -, /, *, etc.\n */\n\n/**\n * Formula.js only.\n *\n * @param {*} num1\n * @param {*} num2\n * @returns\n */\nfunction ADD(num1, num2) {\n if (arguments.length !== 2) {\n return na\n }\n\n num1 = parseNumber(num1);\n num2 = parseNumber(num2);\n const anyError$1 = anyError(num1, num2);\n\n if (anyError$1) {\n return anyError$1\n }\n\n return num1 + num2\n}\n\n/**\n * Formula.js only\n *\n * @param {*} dividend\n * @param {*} divisor\n * @returns\n */\nfunction DIVIDE(dividend, divisor) {\n if (arguments.length !== 2) {\n return na\n }\n\n dividend = parseNumber(dividend);\n divisor = parseNumber(divisor);\n const anyError$1 = anyError(dividend, divisor);\n\n if (anyError$1) {\n return anyError$1\n }\n\n if (divisor === 0) {\n return div0\n }\n\n return dividend / divisor\n}\n\n/**\n * Formula.js only\n *\n * @param {*} value1\n * @param {*} value2\n * @returns\n */\nfunction EQ(value1, value2) {\n if (arguments.length !== 2) {\n return na\n }\n\n if (value1 instanceof Error) {\n return value1\n }\n\n if (value2 instanceof Error) {\n return value2\n }\n\n if (value1 === null) {\n value1 = undefined;\n }\n\n if (value2 === null) {\n value2 = undefined;\n }\n\n return value1 === value2\n}\n\n/**\n * Formula.js only\n *\n * @param {*} num1\n * @param {*} num2\n * @returns\n */\nfunction GT(num1, num2) {\n if (arguments.length !== 2) {\n return na\n }\n\n if (num1 instanceof Error) {\n return num1\n }\n\n if (num2 instanceof Error) {\n return num2\n }\n\n if (anyIsString(num1, num2)) {\n num1 = parseString(num1);\n num2 = parseString(num2);\n } else {\n num1 = parseNumber(num1);\n num2 = parseNumber(num2);\n }\n\n const anyError$1 = anyError(num1, num2);\n\n if (anyError$1) {\n return anyError$1\n }\n\n return num1 > num2\n}\n\n/**\n * Formula.js only\n *\n * @param {*} num1\n * @param {*} num2\n * @returns\n */\nfunction GTE(num1, num2) {\n if (arguments.length !== 2) {\n return na\n }\n\n if (anyIsString(num1, num2)) {\n num1 = parseString(num1);\n num2 = parseString(num2);\n } else {\n num1 = parseNumber(num1);\n num2 = parseNumber(num2);\n }\n\n const anyError$1 = anyError(num1, num2);\n\n if (anyError$1) {\n return anyError$1\n }\n\n return num1 >= num2\n}\n\n/**\n * Formula.js only\n *\n * @param {*} num1\n * @param {*} num2\n * @returns\n */\nfunction LT(num1, num2) {\n if (arguments.length !== 2) {\n return na\n }\n\n if (anyIsString(num1, num2)) {\n num1 = parseString(num1);\n num2 = parseString(num2);\n } else {\n num1 = parseNumber(num1);\n num2 = parseNumber(num2);\n }\n\n const anyError$1 = anyError(num1, num2);\n\n if (anyError$1) {\n return anyError$1\n }\n\n return num1 < num2\n}\n\n/**\n * Formula.js only\n *\n * @param {*} num1\n * @param {*} num2\n * @returns\n */\nfunction LTE(num1, num2) {\n if (arguments.length !== 2) {\n return na\n }\n\n if (anyIsString(num1, num2)) {\n num1 = parseString(num1);\n num2 = parseString(num2);\n } else {\n num1 = parseNumber(num1);\n num2 = parseNumber(num2);\n }\n\n const anyError$1 = anyError(num1, num2);\n\n if (anyError$1) {\n return anyError$1\n }\n\n return num1 <= num2\n}\n\n/**\n * Formula.js only\n *\n * @param {*} num1\n * @param {*} num2\n * @returns\n */\nfunction MINUS(num1, num2) {\n if (arguments.length !== 2) {\n return na\n }\n\n num1 = parseNumber(num1);\n num2 = parseNumber(num2);\n const anyError$1 = anyError(num1, num2);\n\n if (anyError$1) {\n return anyError$1\n }\n\n return num1 - num2\n}\n\n/**\n * Formula.js only\n *\n * @param {*} factor1\n * @param {*} factor2\n * @returns\n */\nfunction MULTIPLY(factor1, factor2) {\n if (arguments.length !== 2) {\n return na\n }\n\n factor1 = parseNumber(factor1);\n factor2 = parseNumber(factor2);\n const anyError$1 = anyError(factor1, factor2);\n\n if (anyError$1) {\n return anyError$1\n }\n\n return factor1 * factor2\n}\n\n/**\n * Formula.js only\n *\n * @param {*} value1\n * @param {*} value2\n * @returns\n */\nfunction NE(value1, value2) {\n if (arguments.length !== 2) {\n return na\n }\n\n if (value1 instanceof Error) {\n return value1\n }\n\n if (value2 instanceof Error) {\n return value2\n }\n\n if (value1 === null) {\n value1 = undefined;\n }\n\n if (value2 === null) {\n value2 = undefined;\n }\n\n return value1 !== value2\n}\n\n/**\n * Formula.js only\n *\n * @param {*} base\n * @param {*} exponent\n * @returns\n */\nfunction POW(base, exponent) {\n if (arguments.length !== 2) {\n return na\n }\n\n return POWER(base, exponent)\n}\n\nvar symbols = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ADD: ADD,\n DIVIDE: DIVIDE,\n EQ: EQ,\n GT: GT,\n GTE: GTE,\n LT: LT,\n LTE: LTE,\n MINUS: MINUS,\n MULTIPLY: MULTIPLY,\n NE: NE,\n POW: POW\n});\n\nconst d1900 = new Date(Date.UTC(1900, 0, 1));\nconst WEEK_STARTS = [\n undefined,\n 0,\n 1,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 0\n];\nconst WEEK_TYPES = [\n [],\n [1, 2, 3, 4, 5, 6, 7],\n [7, 1, 2, 3, 4, 5, 6],\n [6, 0, 1, 2, 3, 4, 5],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [7, 1, 2, 3, 4, 5, 6],\n [6, 7, 1, 2, 3, 4, 5],\n [5, 6, 7, 1, 2, 3, 4],\n [4, 5, 6, 7, 1, 2, 3],\n [3, 4, 5, 6, 7, 1, 2],\n [2, 3, 4, 5, 6, 7, 1],\n [1, 2, 3, 4, 5, 6, 7]\n];\nconst WEEKEND_TYPES = [\n [],\n [6, 0],\n [0, 1],\n [1, 2],\n [2, 3],\n [3, 4],\n [4, 5],\n [5, 6],\n undefined,\n undefined,\n undefined,\n [0, 0],\n [1, 1],\n [2, 2],\n [3, 3],\n [4, 4],\n [5, 5],\n [6, 6]\n];\n\n/**\n * Returns the serial number of a particular date.\n *\n * Category: Date and time\n *\n * @param {*} year Year\n * @param {*} month Month\n * @param {*} day Day\n * @returns\n */\nfunction DATE(year, month, day) {\n let result;\n\n year = parseNumber(year);\n month = parseNumber(month);\n day = parseNumber(day);\n\n if (anyIsError(year, month, day)) {\n result = value;\n } else {\n result = new Date(year, month - 1, day);\n\n if (result.getFullYear() < 0) {\n result = num;\n }\n }\n\n return result\n}\n\n/**\n * Calculates the number of days, months, or years between two dates. This function is useful in formulas where you need to calculate an age.\n *\n * Category: Date and time\n *\n * @param {*} start_date A date that represents the first, or starting date of a given period.\n * @param {*} end_date A date that represents the last, or ending, date of the period.\n * @param {*} unit The type of information that you want returned, where:\n - \"Y\": The number of complete years in the period.\n - \"M\": The number of complete months in the period.\n - \"D\": The number of days in the period.\n - \"MD\": The difference between the days in start_date and end_date. The months and years of the dates are ignored.\n - \"YM\": The difference between the months in start_date and end_date. The days and years of the dates are ignored\n - \"YD\": The difference between the days of start_date and end_date. The years of the dates are ignored.\n * @returns\n */\nfunction DATEDIF(start_date, end_date, unit) {\n unit = unit.toUpperCase();\n start_date = parseDate(start_date);\n end_date = parseDate(end_date);\n\n const start_date_year = start_date.getFullYear();\n const start_date_month = start_date.getMonth();\n const start_date_day = start_date.getDate();\n const end_date_year = end_date.getFullYear();\n const end_date_month = end_date.getMonth();\n const end_date_day = end_date.getDate();\n\n let result;\n\n switch (unit) {\n case 'Y':\n result = Math.floor(YEARFRAC(start_date, end_date));\n break\n case 'D':\n result = DAYS(end_date, start_date);\n break\n case 'M':\n result = end_date_month - start_date_month + 12 * (end_date_year - start_date_year);\n\n if (end_date_day < start_date_day) {\n result--;\n }\n\n break\n case 'MD':\n if (start_date_day <= end_date_day) {\n result = end_date_day - start_date_day;\n } else {\n if (end_date_month === 0) {\n start_date.setFullYear(end_date_year - 1);\n start_date.setMonth(12);\n } else {\n start_date.setFullYear(end_date_year);\n start_date.setMonth(end_date_month - 1);\n }\n\n result = DAYS(end_date, start_date);\n }\n\n break\n case 'YM':\n result = end_date_month - start_date_month + 12 * (end_date_year - start_date_year);\n\n if (end_date_day < start_date_day) {\n result--;\n }\n\n result = result % 12;\n break\n case 'YD':\n if (end_date_month > start_date_month || (end_date_month === start_date_month && end_date_day < start_date_day)) {\n start_date.setFullYear(end_date_year);\n } else {\n start_date.setFullYear(end_date_year - 1);\n }\n\n result = DAYS(end_date, start_date);\n break\n }\n\n return result\n}\n\n/**\n * Converts a date in the form of text to a serial number.\n *\n * Category: Date and time\n *\n * @param {*} date_text Text that represents a date in an Excel date format, or a reference to a value that contains text that represents a date in an Excel date format.\n * @returns\n */\nfunction DATEVALUE(date_text) {\n if (typeof date_text !== 'string') {\n return value\n }\n\n const date = Date.parse(date_text);\n\n if (isNaN(date)) {\n return value\n }\n\n return new Date(date_text)\n}\n\n/**\n * Converts a serial number to a day of the month.\n *\n * Category: Date and time\n *\n * @param {*} serial_number The date of the day you are trying to find.\n * @returns\n */\nfunction DAY(serial_number) {\n const date = parseDate(serial_number);\n\n if (date instanceof Error) {\n return date\n }\n\n return date.getDate()\n}\n\nfunction startOfDay(date) {\n const newDate = new Date(date);\n newDate.setHours(0, 0, 0, 0);\n\n return newDate\n}\n\n/**\n * Returns the number of days between two dates.\n *\n * Category: Date and time\n *\n * @param {*} end_date Start_date and End_date are the two dates between which you want to know the number of days.\n * @param {*} start_date Start_date and End_date are the two dates between which you want to know the number of days.\n * @returns\n */\nfunction DAYS(end_date, start_date) {\n end_date = parseDate(end_date);\n start_date = parseDate(start_date);\n\n if (end_date instanceof Error) {\n return end_date\n }\n\n if (start_date instanceof Error) {\n return start_date\n }\n\n return serial(startOfDay(end_date)) - serial(startOfDay(start_date))\n}\n\n/**\n * Calculates the number of days between two dates based on a 360-day year.\n *\n * Category: Date and time\n *\n * @param {*} start_date A date that represents the start date. If start_date occurs after end_date, the DAYS360 function returns a negative number.\n * @param {*} end_date A date that represents the end date.\n * @param {*} method Optional. A logical value that specifies whether to use the U.S. or European method in the calculation.\n * @returns\n */\nfunction DAYS360(start_date, end_date, method) {\n method = parseBool(method || 'false');\n start_date = parseDate(start_date);\n end_date = parseDate(end_date);\n\n if (start_date instanceof Error) {\n return start_date\n }\n\n if (end_date instanceof Error) {\n return end_date\n }\n\n if (method instanceof Error) {\n return method\n }\n\n const sm = start_date.getMonth();\n let em = end_date.getMonth();\n let sd, ed;\n\n if (method) {\n sd = start_date.getDate() === 31 ? 30 : start_date.getDate();\n ed = end_date.getDate() === 31 ? 30 : end_date.getDate();\n } else {\n const smd = new Date(start_date.getFullYear(), sm + 1, 0).getDate();\n const emd = new Date(end_date.getFullYear(), em + 1, 0).getDate();\n sd = start_date.getDate() === smd ? 30 : start_date.getDate();\n\n if (end_date.getDate() === emd) {\n if (sd < 30) {\n em++;\n ed = 1;\n } else {\n ed = 30;\n }\n } else {\n ed = end_date.getDate();\n }\n }\n\n return 360 * (end_date.getFullYear() - start_date.getFullYear()) + 30 * (em - sm) + (ed - sd)\n}\n\n/**\n * Returns the serial number of the date that is the indicated number of months before or after the start date.\n *\n * Category: Date and time\n *\n * @param {*} start_date A date that represents the start date.\n * @param {*} months The number of months before or after start_date. A positive value for months yields a future date; a negative value yields a past date.\n * @returns\n */\nfunction EDATE(start_date, months) {\n start_date = parseDate(start_date);\n\n if (start_date instanceof Error) {\n return start_date\n }\n\n if (isNaN(months)) {\n return value\n }\n\n // store the day and temporarily set to 1, which is safe\n let storedDay = start_date.getDate();\n start_date.setDate(1);\n\n months = parseInt(months, 10);\n start_date.setMonth(start_date.getMonth() + months);\n\n let targetMonth = start_date.getMonth();\n\n // if storedDay > 28 then we need to check end-of-month scenarios\n if (storedDay > 28) {\n let daysInTargetMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][targetMonth];\n\n // if target month is February, check for a leap year\n let targetYear = start_date.getFullYear();\n if (targetMonth === 1 && ((targetYear % 4 === 0 && targetYear % 100 !== 0) || targetYear % 400 === 0)) {\n daysInTargetMonth = 29;\n }\n storedDay = Math.min(storedDay, daysInTargetMonth);\n }\n\n start_date.setDate(storedDay);\n\n return start_date\n}\n\n/**\n * Returns the serial number of the last day of the month before or after a specified number of months.\n *\n * Category: Date and time\n *\n * @param {*} start_date A date that represents the starting date.\n * @param {*} months The number of months before or after start_date. A positive value for months yields a future date; a negative value yields a past date.\n * @returns\n */\nfunction EOMONTH(start_date, months) {\n start_date = parseDate(start_date);\n\n if (start_date instanceof Error) {\n return start_date\n }\n\n if (isNaN(months)) {\n return value\n }\n\n months = parseInt(months, 10);\n\n return new Date(start_date.getFullYear(), start_date.getMonth() + months + 1, 0)\n}\n\n/**\n * Converts a serial number to an hour.\n *\n * Category: Date and time\n *\n * @param {*} serial_number The time that contains the hour you want to find. Times may be entered as text strings within quotation marks (for example, \"6:45 PM\"), as decimal numbers (for example, 0.78125, which represents 6:45 PM), or as results of other formulas or functions (for example, TIMEVALUE(\"6:45 PM\")).\n * @returns\n */\nfunction HOUR(serial_number) {\n serial_number = parseDate(serial_number);\n\n if (serial_number instanceof Error) {\n return serial_number\n }\n\n return serial_number.getHours()\n}\n\n/**\n * Returns the number of the ISO week number of the year for a given date.\n *\n * Category: Date and time\n *\n * @param {*} date Date is the date-time code used by Excel for date and time calculation.\n * @returns\n */\nfunction ISOWEEKNUM(date) {\n date = parseDate(date);\n\n if (date instanceof Error) {\n return date\n }\n\n date = startOfDay(date);\n date.setDate(date.getDate() + 4 - (date.getDay() || 7));\n const yearStart = new Date(date.getFullYear(), 0, 1);\n\n return Math.ceil(((date - yearStart) / 86400000 + 1) / 7)\n}\n\n/**\n * Converts a serial number to a minute.\n *\n * Category: Date and time\n *\n * @param {*} serial_number The time that contains the minute you want to find. Times may be entered as text strings within quotation marks (for example, \"6:45 PM\"), as decimal numbers (for example, 0.78125, which represents 6:45 PM), or as results of other formulas or functions (for example, TIMEVALUE(\"6:45 PM\")).\n * @returns\n */\nfunction MINUTE(serial_number) {\n serial_number = parseDate(serial_number);\n\n if (serial_number instanceof Error) {\n return serial_number\n }\n\n return serial_number.getMinutes()\n}\n\n/**\n * Converts a serial number to a month.\n *\n * Category: Date and time\n *\n * @param {*} serial_number The date of the month you are trying to find.\n * @returns\n */\nfunction MONTH(serial_number) {\n serial_number = parseDate(serial_number);\n\n if (serial_number instanceof Error) {\n return serial_number\n }\n\n return serial_number.getMonth() + 1\n}\n\n/**\n * Returns the number of whole workdays between two dates.\n *\n * Category: Date and time\n *\n * @param {*} start_date A date that represents the start date.\n * @param {*} end_date A date that represents the end date.\n * @param {*} holidays Optional. An optional range of one or more dates to exclude from the working calendar, such as state and federal holidays and floating holidays. The list can be either a range of values that contains the dates or an array constant of the serial numbers that represent the dates.\n * @returns\n */\nfunction NETWORKDAYS(start_date, end_date, holidays) {\n return NETWORKDAYS.INTL(start_date, end_date, 1, holidays)\n}\n\n/**\n * Returns the number of whole workdays between two dates using parameters to indicate which and how many days are weekend days.\n *\n * Category: Date and time\n *\n * @param {*} start_date The date for from which the difference is to be computed. The start_date can be earlier than, the same as, or later than the end_date.\n * @param {*} end_date The date for to which the difference is to be computed.\n * @param {*} weekend Optional. Indicates the days of the week that are weekend days and are not included in the number of whole working days between start_date and end_date. Weekend is a weekend number or string that specifies when weekends occur. Weekend number values indicate the following weekend days:\n * @param {*} holidays Optional. An optional set of one or more dates that are to be excluded from the working day calendar. holidays shall be a range of values that contain the dates, or an array constant of the serial values that represent those dates. The ordering of dates or serial values in holidays can be arbitrary.\n * @returns\n */\nNETWORKDAYS.INTL = (start_date, end_date, weekend, holidays) => {\n start_date = parseDate(start_date);\n\n if (start_date instanceof Error) {\n return start_date\n }\n\n end_date = parseDate(end_date);\n\n if (end_date instanceof Error) {\n return end_date\n }\n\n let isMask = false;\n const maskDays = [];\n const maskIndex = [1, 2, 3, 4, 5, 6, 0];\n const maskRegex = new RegExp('^[0|1]{7}$');\n\n if (weekend === undefined) {\n weekend = WEEKEND_TYPES[1];\n } else if (typeof weekend === 'string' && maskRegex.test(weekend)) {\n isMask = true;\n weekend = weekend.split('');\n\n for (let i = 0; i < weekend.length; i++) {\n if (weekend[i] === '1') {\n maskDays.push(maskIndex[i]);\n }\n }\n } else {\n weekend = WEEKEND_TYPES[weekend];\n }\n\n if (!(weekend instanceof Array)) {\n return value\n }\n\n if (holidays === undefined) {\n holidays = [];\n } else if (!(holidays instanceof Array)) {\n holidays = [holidays];\n }\n\n for (let i = 0; i < holidays.length; i++) {\n const h = parseDate(holidays[i]);\n\n if (h instanceof Error) {\n return h\n }\n\n holidays[i] = h;\n }\n\n const days = Math.round((end_date - start_date) / (1000 * 60 * 60 * 24)) + 1;\n let total = days;\n const day = start_date;\n\n for (let i = 0; i < days; i++) {\n const d = new Date().getTimezoneOffset() > 0 ? day.getUTCDay() : day.getDay();\n let dec = isMask ? maskDays.includes(d) : d === weekend[0] || d === weekend[1];\n\n for (let j = 0; j < holidays.length; j++) {\n const holiday = holidays[j];\n\n if (\n holiday.getDate() === day.getDate() &&\n holiday.getMonth() === day.getMonth() &&\n holiday.getFullYear() === day.getFullYear()\n ) {\n dec = true;\n break\n }\n }\n\n if (dec) {\n total--;\n }\n\n day.setDate(day.getDate() + 1);\n }\n\n return total\n};\n\n/**\n * Returns the serial number of the current date and time.\n *\n * Category: Date and time\n *\n * @returns\n */\nfunction NOW() {\n return new Date()\n}\n\n/**\n * Converts a serial number to a second.\n *\n * Category: Date and time\n *\n * @param {*} serial_number The time that contains the seconds you want to find. Times may be entered as text strings within quotation marks (for example, \"6:45 PM\"), as decimal numbers (for example, 0.78125, which represents 6:45 PM), or as results of other formulas or functions (for example, TIMEVALUE(\"6:45 PM\")).\n * @returns\n */\nfunction SECOND(serial_number) {\n serial_number = parseDate(serial_number);\n\n if (serial_number instanceof Error) {\n return serial_number\n }\n\n return serial_number.getSeconds()\n}\n\n/**\n * Returns the serial number of a particular time.\n *\n * Category: Date and time\n *\n * @param {*} hour A number from 0 (zero) to 32767 representing the hour. Any value greater than 23 will be divided by 24 and the remainder will be treated as the hour value. For example, TIME(27,0,0) = TIME(3,0,0) = .125 or 3:00 AM.\n * @param {*} minute A number from 0 to 32767 representing the minute. Any value greater than 59 will be converted to hours and minutes. For example, TIME(0,750,0) = TIME(12,30,0) = .520833 or 12:30 PM.\n * @param {*} second A number from 0 to 32767 representing the second. Any value greater than 59 will be converted to hours, minutes, and seconds. For example, TIME(0,0,2000) = TIME(0,33,22) = .023148 or 12:33:20 AM\n * @returns\n */\nfunction TIME(hour, minute, second) {\n hour = parseNumber(hour);\n minute = parseNumber(minute);\n second = parseNumber(second);\n\n if (anyIsError(hour, minute, second)) {\n return value\n }\n\n if (hour < 0 || minute < 0 || second < 0) {\n return num\n }\n\n return (3600 * hour + 60 * minute + second) / 86400\n}\n\n/**\n * Converts a time in the form of text to a serial number.\n *\n * Category: Date and time\n *\n * @param {*} time_text A text string that represents a time in any one of the Microsoft Excel time formats; for example, \"6:45 PM\" and \"18:45\" text strings within quotation marks that represent time.\n * @returns\n */\nfunction TIMEVALUE(time_text) {\n time_text = parseDate(time_text);\n\n if (time_text instanceof Error) {\n return time_text\n }\n\n return (3600 * time_text.getHours() + 60 * time_text.getMinutes() + time_text.getSeconds()) / 86400\n}\n\n/**\n * Returns the serial number of today's date.\n *\n * Category: Date and time\n *\n * @returns\n */\nfunction TODAY() {\n return startOfDay(new Date())\n}\n\n/**\n * Converts a serial number to a day of the week.\n *\n * Category: Date and time\n *\n * @param {*} serial_number A sequential number that represents the date of the day you are trying to find.\n * @param {*} return_type Optional. A number that determines the type of return value.\n * @returns\n */\nfunction WEEKDAY(serial_number, return_type) {\n serial_number = parseDate(serial_number);\n\n if (serial_number instanceof Error) {\n return serial_number\n }\n\n if (return_type === undefined) {\n return_type = 1;\n }\n\n const day = serial_number.getDay();\n\n return WEEK_TYPES[return_type][day]\n}\n\n/**\n * Converts a serial number to a number representing where the week falls numerically with a year.\n *\n * Category: Date and time\n *\n * @param {*} serial_number A date within the week.\n * @param {*} return_type Optional. A number that determines on which day the week begins. The default is 1.\n * @returns\n */\nfunction WEEKNUM(serial_number, return_type) {\n serial_number = parseDate(serial_number);\n\n if (serial_number instanceof Error) {\n return serial_number\n }\n\n if (return_type === undefined) {\n return_type = 1;\n }\n\n if (return_type === 21) {\n return ISOWEEKNUM(serial_number)\n }\n\n const week_start = WEEK_STARTS[return_type];\n let jan = new Date(serial_number.getFullYear(), 0, 1);\n const inc = jan.getDay() < week_start ? 1 : 0;\n jan -= Math.abs(jan.getDay() - week_start) * 24 * 60 * 60 * 1000;\n\n return Math.floor((serial_number - jan) / (1000 * 60 * 60 * 24) / 7 + 1) + inc\n}\n\n/**\n * Returns the serial number of the date before or after a specified number of workdays.\n *\n * Category: Date and time\n *\n * @param {*} start_date A date that represents the start date.\n * @param {*} days The number of nonweekend and nonholiday days before or after start_date. A positive value for days yields a future date; a negative value yields a past date.\n * @param {*} holidays Optional. An optional list of one or more dates to exclude from the working calendar, such as state and federal holidays and floating holidays. The list can be either a range of values that contain the dates or an array constant of the serial numbers that represent the dates.\n * @returns\n */\nfunction WORKDAY(start_date, days, holidays) {\n return WORKDAY.INTL(start_date, days, 1, holidays)\n}\n\n/**\n * Returns the serial number of the date before or after a specified number of workdays using parameters to indicate which and how many days are weekend days.\n *\n * Category: Date and time\n *\n * @param {*} start_date The start date, truncated to integer.\n * @param {*} days The number of workdays before or after the start_date. A positive value yields a future date; a negative value yields a past date; a zero value yields the start_date. Day-offset is truncated to an integer.\n * @param {*} weekend Optional. Indicates the days of the week that are weekend days and are not considered working days. Weekend is a weekend number or string that specifies when weekends occur. Weekend number values indicate the following weekend days:\n * @param {*} holidays Optional. An optional set of one or more dates that are to be excluded from the working day calendar. Holidays shall be a range of values that contain the dates, or an array constant of the serial values that represent those dates. The ordering of dates or serial values in holidays can be arbitrary.\n * @returns\n */\nWORKDAY.INTL = (start_date, days, weekend, holidays) => {\n start_date = parseDate(start_date);\n\n if (start_date instanceof Error) {\n return start_date\n }\n\n days = parseNumber(days);\n\n if (days instanceof Error) {\n return days\n }\n\n if (weekend === undefined) {\n weekend = WEEKEND_TYPES[1];\n } else {\n weekend = WEEKEND_TYPES[weekend];\n }\n\n if (!(weekend instanceof Array)) {\n return value\n }\n\n if (holidays === undefined) {\n holidays = [];\n } else if (!(holidays instanceof Array)) {\n holidays = [holidays];\n }\n\n for (let i = 0; i < holidays.length; i++) {\n const h = parseDate(holidays[i]);\n\n if (h instanceof Error) {\n return h\n }\n\n holidays[i] = h;\n }\n\n let d = 0;\n\n const sign = Math.sign(days);\n\n while (d < days * sign) {\n start_date.setDate(start_date.getDate() + sign);\n\n const day = start_date.getDay();\n\n if (day === weekend[0] || day === weekend[1]) {\n continue\n }\n\n for (let j = 0; j < holidays.length; j++) {\n const holiday = holidays[j];\n\n if (\n holiday.getDate() === start_date.getDate() &&\n holiday.getMonth() === start_date.getMonth() &&\n holiday.getFullYear() === start_date.getFullYear()\n ) {\n d--;\n break\n }\n }\n\n d++;\n }\n\n // EXCEL does not recognize dates before 1900.\n if (start_date.getFullYear() < 1900) {\n return value\n }\n\n return start_date\n};\n\n/**\n * Converts a serial number to a year.\n *\n * Category: Date and time\n *\n * @param {*} serial_number The date of the year you want to find.\n * @returns\n */\nfunction YEAR(serial_number) {\n serial_number = parseDate(serial_number);\n\n if (serial_number instanceof Error) {\n return serial_number\n }\n\n return serial_number.getFullYear()\n}\n\nfunction isLeapYear(year) {\n return new Date(year, 1, 29).getMonth() === 1\n}\n\n// TODO : Use DAYS ?\nfunction daysBetween(start_date, end_date) {\n return Math.ceil((end_date - start_date) / 1000 / 60 / 60 / 24)\n}\n\n/**\n * Returns the year fraction representing the number of whole days between start_date and end_date.\n *\n * Category: Date and time\n *\n * @param {*} start_date A date that represents the start date.\n * @param {*} end_date A date that represents the end date.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction YEARFRAC(start_date, end_date, basis) {\n start_date = parseDate(start_date);\n\n if (start_date instanceof Error) {\n return start_date\n }\n\n end_date = parseDate(end_date);\n\n if (end_date instanceof Error) {\n return end_date\n }\n\n basis = basis || 0;\n let sd = start_date.getDate();\n const sm = start_date.getMonth() + 1;\n const sy = start_date.getFullYear();\n let ed = end_date.getDate();\n const em = end_date.getMonth() + 1;\n const ey = end_date.getFullYear();\n\n switch (basis) {\n case 0:\n // US (NASD) 30/360\n if (sd === 31 && ed === 31) {\n sd = 30;\n ed = 30;\n } else if (sd === 31) {\n sd = 30;\n } else if (sd === 30 && ed === 31) {\n ed = 30;\n }\n\n return (ed + em * 30 + ey * 360 - (sd + sm * 30 + sy * 360)) / 360\n case 1: {\n // Actual/actual\n const feb29Between = (date1, date2) => {\n const year1 = date1.getFullYear();\n const mar1year1 = new Date(year1, 2, 1);\n\n if (isLeapYear(year1) && date1 < mar1year1 && date2 >= mar1year1) {\n return true\n }\n\n const year2 = date2.getFullYear();\n const mar1year2 = new Date(year2, 2, 1);\n\n return isLeapYear(year2) && date2 >= mar1year2 && date1 < mar1year2\n };\n\n let ylength = 365;\n\n if (sy === ey || (sy + 1 === ey && (sm > em || (sm === em && sd >= ed)))) {\n if ((sy === ey && isLeapYear(sy)) || feb29Between(start_date, end_date) || (em === 1 && ed === 29)) {\n ylength = 366;\n }\n\n return daysBetween(start_date, end_date) / ylength\n }\n\n const years = ey - sy + 1;\n const days = (new Date(ey + 1, 0, 1) - new Date(sy, 0, 1)) / 1000 / 60 / 60 / 24;\n const average = days / years;\n\n return daysBetween(start_date, end_date) / average\n }\n\n case 2:\n // Actual/360\n\n return daysBetween(start_date, end_date) / 360\n case 3:\n // Actual/365\n\n return daysBetween(start_date, end_date) / 365\n case 4:\n // European 30/360\n\n return (ed + em * 30 + ey * 360 - (sd + sm * 30 + sy * 360)) / 360\n }\n}\n\nfunction serial(date) {\n const addOn = date > -2203891200000 ? 2 : 1;\n\n return Math.ceil((date - d1900) / 86400000) + addOn\n}\n\nfunction isValidBinaryNumber(number) {\n return /^[01]{1,10}$/.test(number)\n}\n\n/**\n * Returns the modified Bessel function In(x).\n *\n * Category: Engineering\n *\n * @param {*} x The value at which to evaluate the function.\n * @param {*} n The order of the Bessel function. If n is not an integer, it is truncated.\n * @returns\n */\nfunction BESSELI(x, n) {\n x = parseNumber(x);\n n = parseNumber(n);\n\n if (anyIsError(x, n)) {\n return value\n }\n\n return bessel.besseli(x, n)\n}\n\n/**\n * Returns the Bessel function Jn(x).\n *\n * Category: Engineering\n *\n * @param {*} x The value at which to evaluate the function.\n * @param {*} n The order of the Bessel function. If n is not an integer, it is truncated.\n * @returns\n */\nfunction BESSELJ(x, n) {\n x = parseNumber(x);\n n = parseNumber(n);\n\n if (anyIsError(x, n)) {\n return value\n }\n\n return bessel.besselj(x, n)\n}\n\n/**\n * Returns the modified Bessel function Kn(x).\n *\n * Category: Engineering\n *\n * @param {*} x The value at which to evaluate the function.\n * @param {*} n The order of the function. If n is not an integer, it is truncated.\n * @returns\n */\nfunction BESSELK(x, n) {\n x = parseNumber(x);\n n = parseNumber(n);\n\n if (anyIsError(x, n)) {\n return value\n }\n\n return bessel.besselk(x, n)\n}\n\n/**\n * Returns the Bessel function Yn(x).\n *\n * Category: Engineering\n *\n * @param {*} x The value at which to evaluate the function.\n * @param {*} n The order of the function. If n is not an integer, it is truncated.\n * @returns\n */\nfunction BESSELY(x, n) {\n x = parseNumber(x);\n n = parseNumber(n);\n\n if (anyIsError(x, n)) {\n return value\n }\n\n return bessel.bessely(x, n)\n}\n\n/**\n * Converts a binary number to decimal.\n *\n * Category: Engineering\n *\n * @param {*} number The binary number you want to convert. Number cannot contain more than 10 characters (10 bits). The most significant bit of number is the sign bit. The remaining 9 bits are magnitude bits. Negative numbers are represented using two's-complement notation.\n * @returns\n */\nfunction BIN2DEC(number) {\n // Return error if number is not binary or contains more than 10 characters (10 digits)\n if (!isValidBinaryNumber(number)) {\n return num\n }\n\n // Convert binary number to decimal\n const result = parseInt(number, 2);\n\n // Handle negative numbers\n const stringified = number.toString();\n\n if (stringified.length === 10 && stringified.substring(0, 1) === '1') {\n return parseInt(stringified.substring(1), 2) - 512\n } else {\n return result\n }\n}\n\n/**\n * Converts a binary number to hexadecimal.\n *\n * Category: Engineering\n *\n * @param {*} number The binary number you want to convert. Number cannot contain more than 10 characters (10 bits). The most significant bit of number is the sign bit. The remaining 9 bits are magnitude bits. Negative numbers are represented using two's-complement notation.\n * @param {*} places Optional. The number of characters to use. If places is omitted, BIN2HEX uses the minimum number of characters necessary. Places is useful for padding the return value with leading 0s (zeros).\n * @returns\n */\nfunction BIN2HEX(number, places) {\n // Return error if number is not binary or contains more than 10 characters (10 digits)\n if (!isValidBinaryNumber(number)) {\n return num\n }\n\n // Ignore places and return a 10-character hexadecimal number if number is negative\n const stringified = number.toString();\n\n if (stringified.length === 10 && stringified.substring(0, 1) === '1') {\n return (1099511627264 + parseInt(stringified.substring(1), 2)).toString(16)\n }\n\n // Convert binary number to hexadecimal\n const result = parseInt(number, 2).toString(16);\n\n // Return hexadecimal number using the minimum number of characters necessary if places is undefined\n if (places === undefined) {\n return result\n } else {\n // Return error if places is nonnumeric\n if (isNaN(places)) {\n return value\n }\n\n // Return error if places is negative\n if (places < 0) {\n return num\n }\n\n // Truncate places in case it is not an integer\n places = Math.floor(places);\n\n // Pad return value with leading 0s (zeros) if necessary (using Underscore.string)\n return places >= result.length ? REPT('0', places - result.length) + result : num\n }\n}\n\n/**\n * Converts a binary number to octal.\n *\n * Category: Engineering\n *\n * @param {*} number The binary number you want to convert. Number cannot contain more than 10 characters (10 bits). The most significant bit of number is the sign bit. The remaining 9 bits are magnitude bits. Negative numbers are represented using two's-complement notation.\n * @param {*} places Optional. The number of characters to use. If places is omitted, BIN2OCT uses the minimum number of characters necessary. Places is useful for padding the return value with leading 0s (zeros).\n * @returns\n */\nfunction BIN2OCT(number, places) {\n // Return error if number is not binary or contains more than 10 characters (10 digits)\n if (!isValidBinaryNumber(number)) {\n return num\n }\n\n // Ignore places and return a 10-character octal number if number is negative\n const stringified = number.toString();\n\n if (stringified.length === 10 && stringified.substring(0, 1) === '1') {\n return (1073741312 + parseInt(stringified.substring(1), 2)).toString(8)\n }\n\n // Convert binary number to octal\n const result = parseInt(number, 2).toString(8);\n\n // Return octal number using the minimum number of characters necessary if places is undefined\n if (places === undefined) {\n return result\n } else {\n // Return error if places is nonnumeric\n if (isNaN(places)) {\n return value\n }\n\n // Return error if places is negative\n if (places < 0) {\n return num\n }\n\n // Truncate places in case it is not an integer\n places = Math.floor(places);\n\n // Pad return value with leading 0s (zeros) if necessary (using Underscore.string)\n return places >= result.length ? REPT('0', places - result.length) + result : num\n }\n}\n\n/**\n * Returns a 'Bitwise And' of two numbers.\n *\n * Category: Engineering\n *\n * @param {*} number1 Must be in decimal form and greater than or equal to 0.\n * @param {*} number2 Must be in decimal form and greater than or equal to 0.\n * @returns\n */\nfunction BITAND(number1, number2) {\n // Return error if either number is a non-numeric value\n number1 = parseNumber(number1);\n number2 = parseNumber(number2);\n\n if (anyIsError(number1, number2)) {\n return value\n }\n\n // Return error if either number is less than 0\n if (number1 < 0 || number2 < 0) {\n return num\n }\n\n // Return error if either number is a non-integer\n if (Math.floor(number1) !== number1 || Math.floor(number2) !== number2) {\n return num\n }\n\n // Return error if either number is greater than (2^48)-1\n if (number1 > 281474976710655 || number2 > 281474976710655) {\n return num\n }\n\n // Return bitwise AND of two numbers\n return number1 & number2\n}\n\n/**\n * Returns a value number shifted left by shift_amount bits.\n *\n * Category: Engineering\n *\n * @param {*} number Number must be an integer greater than or equal to 0.\n * @param {*} shift_amount Shift_amount must be an integer.\n * @returns\n */\nfunction BITLSHIFT(number, shift_amount) {\n number = parseNumber(number);\n shift_amount = parseNumber(shift_amount);\n\n if (anyIsError(number, shift_amount)) {\n return value\n }\n\n // Return error if number is less than 0\n if (number < 0) {\n return num\n }\n\n // Return error if number is a non-integer\n if (Math.floor(number) !== number) {\n return num\n }\n\n // Return error if number is greater than (2^48)-1\n if (number > 281474976710655) {\n return num\n }\n\n // Return error if the absolute value of shift is greater than 53\n if (Math.abs(shift_amount) > 53) {\n return num\n }\n\n // Return number shifted by shift bits to the left or to the right if shift is negative\n return shift_amount >= 0 ? number << shift_amount : number >> -shift_amount\n}\n\n/**\n * Returns a bitwise OR of 2 numbers.\n *\n * Category: Engineering\n *\n * @param {*} number1 Must be in decimal form and greater than or equal to 0.\n * @param {*} number2 Must be in decimal form and greater than or equal to 0.\n * @returns\n */\nfunction BITOR(number1, number2) {\n number1 = parseNumber(number1);\n number2 = parseNumber(number2);\n\n if (anyIsError(number1, number2)) {\n return value\n }\n\n // Return error if either number is less than 0\n if (number1 < 0 || number2 < 0) {\n return num\n }\n\n // Return error if either number is a non-integer\n if (Math.floor(number1) !== number1 || Math.floor(number2) !== number2) {\n return num\n }\n\n // Return error if either number is greater than (2^48)-1\n if (number1 > 281474976710655 || number2 > 281474976710655) {\n return num\n }\n\n // Return bitwise OR of two numbers\n return number1 | number2\n}\n\n/**\n * Returns a value number shifted right by shift_amount bits.\n *\n * Category: Engineering\n *\n * @param {*} number Must be an integer greater than or equal to 0.\n * @param {*} shift_amount Must be an integer.\n * @returns\n */\nfunction BITRSHIFT(number, shift_amount) {\n number = parseNumber(number);\n shift_amount = parseNumber(shift_amount);\n\n if (anyIsError(number, shift_amount)) {\n return value\n }\n\n // Return error if number is less than 0\n if (number < 0) {\n return num\n }\n\n // Return error if number is a non-integer\n if (Math.floor(number) !== number) {\n return num\n }\n\n // Return error if number is greater than (2^48)-1\n if (number > 281474976710655) {\n return num\n }\n\n // Return error if the absolute value of shift is greater than 53\n if (Math.abs(shift_amount) > 53) {\n return num\n }\n\n // Return number shifted by shift bits to the right or to the left if shift is negative\n return shift_amount >= 0 ? number >> shift_amount : number << -shift_amount\n}\n\n/**\n * Returns a bitwise 'Exclusive Or' of two numbers.\n *\n * Category: Engineering\n *\n * @param {*} number1 Must be greater than or equal to 0.\n * @param {*} number2 Must be greater than or equal to 0.\n * @returns\n */\nfunction BITXOR(number1, number2) {\n number1 = parseNumber(number1);\n number2 = parseNumber(number2);\n\n if (anyIsError(number1, number2)) {\n return value\n }\n\n // Return error if either number is less than 0\n if (number1 < 0 || number2 < 0) {\n return num\n }\n\n // Return error if either number is a non-integer\n if (Math.floor(number1) !== number1 || Math.floor(number2) !== number2) {\n return num\n }\n\n // Return error if either number is greater than (2^48)-1\n if (number1 > 281474976710655 || number2 > 281474976710655) {\n return num\n }\n\n // Return bitwise XOR of two numbers\n return number1 ^ number2\n}\n\n/**\n * Converts real and imaginary coefficients into a complex number.\n *\n * Category: Engineering\n *\n * @param {*} real_num The real coefficient of the complex number.\n * @param {*} i_num The imaginary coefficient of the complex number.\n * @param {*} suffix Optional. The suffix for the imaginary component of the complex number. If omitted, suffix is assumed to be \"i\".\n * @returns\n */\nfunction COMPLEX(real_num, i_num, suffix) {\n real_num = parseNumber(real_num);\n i_num = parseNumber(i_num);\n\n if (anyIsError(real_num, i_num)) {\n return real_num\n }\n\n // Set suffix\n suffix = suffix === undefined ? 'i' : suffix;\n\n // Return error if suffix is neither \"i\" nor \"j\"\n if (suffix !== 'i' && suffix !== 'j') {\n return value\n }\n\n // Return complex number\n if (real_num === 0 && i_num === 0) {\n return 0\n } else if (real_num === 0) {\n return i_num === 1 ? suffix : i_num.toString() + suffix\n } else if (i_num === 0) {\n return real_num.toString()\n } else {\n const sign = i_num > 0 ? '+' : '';\n return real_num.toString() + sign + (i_num === 1 ? suffix : i_num.toString() + suffix)\n }\n}\n\n/**\n * Converts a number from one measurement system to another.\n *\n * Category: Engineering\n *\n * @param {*} number is the value in from_units to convert.\n * @param {*} from_unit is the units for number.\n * @param {*} to_unit is the units for the result. CONVERT accepts the following text values (in quotation marks) for from_unit and to_unit.\n * @returns\n */\nfunction CONVERT(number, from_unit, to_unit) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n // List of units supported by CONVERT and units defined by the International System of Units\n // [Name, Symbol, Alternate symbols, Quantity, ISU, CONVERT, Conversion ratio]\n const units = [\n ['a.u. of action', '?', null, 'action', false, false, 1.05457168181818e-34],\n ['a.u. of charge', 'e', null, 'electric_charge', false, false, 1.60217653141414e-19],\n ['a.u. of energy', 'Eh', null, 'energy', false, false, 4.35974417757576e-18],\n ['a.u. of length', 'a?', null, 'length', false, false, 5.29177210818182e-11],\n ['a.u. of mass', 'm?', null, 'mass', false, false, 9.10938261616162e-31],\n ['a.u. of time', '?/Eh', null, 'time', false, false, 2.41888432650516e-17],\n ['admiralty knot', 'admkn', null, 'speed', false, true, 0.514773333],\n ['ampere', 'A', null, 'electric_current', true, false, 1],\n ['ampere per meter', 'A/m', null, 'magnetic_field_intensity', true, false, 1],\n ['\u00E5ngstr\u00F6m', '\u00C5', ['ang'], 'length', false, true, 1e-10],\n ['are', 'ar', null, 'area', false, true, 100],\n ['astronomical unit', 'ua', null, 'length', false, false, 1.49597870691667e-11],\n ['bar', 'bar', null, 'pressure', false, false, 100000],\n ['barn', 'b', null, 'area', false, false, 1e-28],\n ['becquerel', 'Bq', null, 'radioactivity', true, false, 1],\n ['bit', 'bit', ['b'], 'information', false, true, 1],\n ['btu', 'BTU', ['btu'], 'energy', false, true, 1055.05585262],\n ['byte', 'byte', null, 'information', false, true, 8],\n ['candela', 'cd', null, 'luminous_intensity', true, false, 1],\n ['candela per square metre', 'cd/m?', null, 'luminance', true, false, 1],\n ['coulomb', 'C', null, 'electric_charge', true, false, 1],\n ['cubic \u00E5ngstr\u00F6m', 'ang3', ['ang^3'], 'volume', false, true, 1e-30],\n ['cubic foot', 'ft3', ['ft^3'], 'volume', false, true, 0.028316846592],\n ['cubic inch', 'in3', ['in^3'], 'volume', false, true, 0.000016387064],\n ['cubic light-year', 'ly3', ['ly^3'], 'volume', false, true, 8.46786664623715e-47],\n ['cubic metre', 'm3', ['m^3'], 'volume', true, true, 1],\n ['cubic mile', 'mi3', ['mi^3'], 'volume', false, true, 4168181825.44058],\n ['cubic nautical mile', 'Nmi3', ['Nmi^3'], 'volume', false, true, 6352182208],\n ['cubic Pica', 'Pica3', ['Picapt3', 'Pica^3', 'Picapt^3'], 'volume', false, true, 7.58660370370369e-8],\n ['cubic yard', 'yd3', ['yd^3'], 'volume', false, true, 0.764554857984],\n ['cup', 'cup', null, 'volume', false, true, 0.0002365882365],\n ['dalton', 'Da', ['u'], 'mass', false, false, 1.66053886282828e-27],\n ['day', 'd', ['day'], 'time', false, true, 86400],\n ['degree', '\u00B0', null, 'angle', false, false, 0.0174532925199433],\n ['degrees Rankine', 'Rank', null, 'temperature', false, true, 0.555555555555556],\n ['dyne', 'dyn', ['dy'], 'force', false, true, 0.00001],\n ['electronvolt', 'eV', ['ev'], 'energy', false, true, 1.60217656514141],\n ['ell', 'ell', null, 'length', false, true, 1.143],\n ['erg', 'erg', ['e'], 'energy', false, true, 1e-7],\n ['farad', 'F', null, 'electric_capacitance', true, false, 1],\n ['fluid ounce', 'oz', null, 'volume', false, true, 0.0000295735295625],\n ['foot', 'ft', null, 'length', false, true, 0.3048],\n ['foot-pound', 'flb', null, 'energy', false, true, 1.3558179483314],\n ['gal', 'Gal', null, 'acceleration', false, false, 0.01],\n ['gallon', 'gal', null, 'volume', false, true, 0.003785411784],\n ['gauss', 'G', ['ga'], 'magnetic_flux_density', false, true, 1],\n ['grain', 'grain', null, 'mass', false, true, 0.0000647989],\n ['gram', 'g', null, 'mass', false, true, 0.001],\n ['gray', 'Gy', null, 'absorbed_dose', true, false, 1],\n ['gross registered ton', 'GRT', ['regton'], 'volume', false, true, 2.8316846592],\n ['hectare', 'ha', null, 'area', false, true, 10000],\n ['henry', 'H', null, 'inductance', true, false, 1],\n ['hertz', 'Hz', null, 'frequency', true, false, 1],\n ['horsepower', 'HP', ['h'], 'power', false, true, 745.69987158227],\n ['horsepower-hour', 'HPh', ['hh', 'hph'], 'energy', false, true, 2684519.538],\n ['hour', 'h', ['hr'], 'time', false, true, 3600],\n ['imperial gallon (U.K.)', 'uk_gal', null, 'volume', false, true, 0.00454609],\n ['imperial hundredweight', 'lcwt', ['uk_cwt', 'hweight'], 'mass', false, true, 50.802345],\n ['imperial quart (U.K)', 'uk_qt', null, 'volume', false, true, 0.0011365225],\n ['imperial ton', 'brton', ['uk_ton', 'LTON'], 'mass', false, true, 1016.046909],\n ['inch', 'in', null, 'length', false, true, 0.0254],\n ['international acre', 'uk_acre', null, 'area', false, true, 4046.8564224],\n ['IT calorie', 'cal', null, 'energy', false, true, 4.1868],\n ['joule', 'J', null, 'energy', true, true, 1],\n ['katal', 'kat', null, 'catalytic_activity', true, false, 1],\n ['kelvin', 'K', ['kel'], 'temperature', true, true, 1],\n ['kilogram', 'kg', null, 'mass', true, true, 1],\n ['knot', 'kn', null, 'speed', false, true, 0.514444444444444],\n ['light-year', 'ly', null, 'length', false, true, 9460730472580800],\n ['litre', 'L', ['l', 'lt'], 'volume', false, true, 0.001],\n ['lumen', 'lm', null, 'luminous_flux', true, false, 1],\n ['lux', 'lx', null, 'illuminance', true, false, 1],\n ['maxwell', 'Mx', null, 'magnetic_flux', false, false, 1e-18],\n ['measurement ton', 'MTON', null, 'volume', false, true, 1.13267386368],\n ['meter per hour', 'm/h', ['m/hr'], 'speed', false, true, 0.00027777777777778],\n ['meter per second', 'm/s', ['m/sec'], 'speed', true, true, 1],\n ['meter per second squared', 'm?s??', null, 'acceleration', true, false, 1],\n ['parsec', 'pc', ['parsec'], 'length', false, true, 30856775814671900],\n ['meter squared per second', 'm?/s', null, 'kinematic_viscosity', true, false, 1],\n ['metre', 'm', null, 'length', true, true, 1],\n ['miles per hour', 'mph', null, 'speed', false, true, 0.44704],\n ['millimetre of mercury', 'mmHg', null, 'pressure', false, false, 133.322],\n ['minute', '?', null, 'angle', false, false, 0.000290888208665722],\n ['minute', 'min', ['mn'], 'time', false, true, 60],\n ['modern teaspoon', 'tspm', null, 'volume', false, true, 0.000005],\n ['mole', 'mol', null, 'amount_of_substance', true, false, 1],\n ['morgen', 'Morgen', null, 'area', false, true, 2500],\n ['n.u. of action', '?', null, 'action', false, false, 1.05457168181818e-34],\n ['n.u. of mass', 'm?', null, 'mass', false, false, 9.10938261616162e-31],\n ['n.u. of speed', 'c?', null, 'speed', false, false, 299792458],\n ['n.u. of time', '?/(me?c??)', null, 'time', false, false, 1.28808866778687e-21],\n ['nautical mile', 'M', ['Nmi'], 'length', false, true, 1852],\n ['newton', 'N', null, 'force', true, true, 1],\n ['\u0153rsted', 'Oe ', null, 'magnetic_field_intensity', false, false, 79.5774715459477],\n ['ohm', '\u03A9', null, 'electric_resistance', true, false, 1],\n ['ounce mass', 'ozm', null, 'mass', false, true, 0.028349523125],\n ['pascal', 'Pa', null, 'pressure', true, false, 1],\n ['pascal second', 'Pa?s', null, 'dynamic_viscosity', true, false, 1],\n ['pferdest\u00E4rke', 'PS', null, 'power', false, true, 735.49875],\n ['phot', 'ph', null, 'illuminance', false, false, 0.0001],\n ['pica (1/6 inch)', 'pica', null, 'length', false, true, 0.00035277777777778],\n ['pica (1/72 inch)', 'Pica', ['Picapt'], 'length', false, true, 0.00423333333333333],\n ['poise', 'P', null, 'dynamic_viscosity', false, false, 0.1],\n ['pond', 'pond', null, 'force', false, true, 0.00980665],\n ['pound force', 'lbf', null, 'force', false, true, 4.4482216152605],\n ['pound mass', 'lbm', null, 'mass', false, true, 0.45359237],\n ['quart', 'qt', null, 'volume', false, true, 0.000946352946],\n ['radian', 'rad', null, 'angle', true, false, 1],\n ['second', '?', null, 'angle', false, false, 0.00000484813681109536],\n ['second', 's', ['sec'], 'time', true, true, 1],\n ['short hundredweight', 'cwt', ['shweight'], 'mass', false, true, 45.359237],\n ['siemens', 'S', null, 'electrical_conductance', true, false, 1],\n ['sievert', 'Sv', null, 'equivalent_dose', true, false, 1],\n ['slug', 'sg', null, 'mass', false, true, 14.59390294],\n ['square \u00E5ngstr\u00F6m', 'ang2', ['ang^2'], 'area', false, true, 1e-20],\n ['square foot', 'ft2', ['ft^2'], 'area', false, true, 0.09290304],\n ['square inch', 'in2', ['in^2'], 'area', false, true, 0.00064516],\n ['square light-year', 'ly2', ['ly^2'], 'area', false, true, 8.95054210748189e31],\n ['square meter', 'm?', null, 'area', true, true, 1],\n ['square mile', 'mi2', ['mi^2'], 'area', false, true, 2589988.110336],\n ['square nautical mile', 'Nmi2', ['Nmi^2'], 'area', false, true, 3429904],\n ['square Pica', 'Pica2', ['Picapt2', 'Pica^2', 'Picapt^2'], 'area', false, true, 0.00001792111111111],\n ['square yard', 'yd2', ['yd^2'], 'area', false, true, 0.83612736],\n ['statute mile', 'mi', null, 'length', false, true, 1609.344],\n ['steradian', 'sr', null, 'solid_angle', true, false, 1],\n ['stilb', 'sb', null, 'luminance', false, false, 0.0001],\n ['stokes', 'St', null, 'kinematic_viscosity', false, false, 0.0001],\n ['stone', 'stone', null, 'mass', false, true, 6.35029318],\n ['tablespoon', 'tbs', null, 'volume', false, true, 0.0000147868],\n ['teaspoon', 'tsp', null, 'volume', false, true, 0.00000492892],\n ['tesla', 'T', null, 'magnetic_flux_density', true, true, 1],\n ['thermodynamic calorie', 'c', null, 'energy', false, true, 4.184],\n ['ton', 'ton', null, 'mass', false, true, 907.18474],\n ['tonne', 't', null, 'mass', false, false, 1000],\n ['U.K. pint', 'uk_pt', null, 'volume', false, true, 0.00056826125],\n ['U.S. bushel', 'bushel', null, 'volume', false, true, 0.03523907],\n ['U.S. oil barrel', 'barrel', null, 'volume', false, true, 0.158987295],\n ['U.S. pint', 'pt', ['us_pt'], 'volume', false, true, 0.000473176473],\n ['U.S. survey mile', 'survey_mi', null, 'length', false, true, 1609.347219],\n ['U.S. survey/statute acre', 'us_acre', null, 'area', false, true, 4046.87261],\n ['volt', 'V', null, 'voltage', true, false, 1],\n ['watt', 'W', null, 'power', true, true, 1],\n ['watt-hour', 'Wh', ['wh'], 'energy', false, true, 3600],\n ['weber', 'Wb', null, 'magnetic_flux', true, false, 1],\n ['yard', 'yd', null, 'length', false, true, 0.9144],\n ['year', 'yr', null, 'time', false, true, 31557600]\n ];\n\n // Binary prefixes\n // [Name, Prefix power of 2 value, Previx value, Abbreviation, Derived from]\n const binary_prefixes = {\n Yi: ['yobi', 80, 1208925819614629174706176, 'Yi', 'yotta'],\n Zi: ['zebi', 70, 1180591620717411303424, 'Zi', 'zetta'],\n Ei: ['exbi', 60, 1152921504606846976, 'Ei', 'exa'],\n Pi: ['pebi', 50, 1125899906842624, 'Pi', 'peta'],\n Ti: ['tebi', 40, 1099511627776, 'Ti', 'tera'],\n Gi: ['gibi', 30, 1073741824, 'Gi', 'giga'],\n Mi: ['mebi', 20, 1048576, 'Mi', 'mega'],\n ki: ['kibi', 10, 1024, 'ki', 'kilo']\n };\n\n // Unit prefixes\n // [Name, Multiplier, Abbreviation]\n const unit_prefixes = {\n Y: ['yotta', 1e24, 'Y'],\n Z: ['zetta', 1e21, 'Z'],\n E: ['exa', 1e18, 'E'],\n P: ['peta', 1e15, 'P'],\n T: ['tera', 1e12, 'T'],\n G: ['giga', 1e9, 'G'],\n M: ['mega', 1e6, 'M'],\n k: ['kilo', 1e3, 'k'],\n h: ['hecto', 1e2, 'h'],\n e: ['dekao', 1e1, 'e'],\n d: ['deci', 1e-1, 'd'],\n c: ['centi', 1e-2, 'c'],\n m: ['milli', 1e-3, 'm'],\n u: ['micro', 1e-6, 'u'],\n n: ['nano', 1e-9, 'n'],\n p: ['pico', 1e-12, 'p'],\n f: ['femto', 1e-15, 'f'],\n a: ['atto', 1e-18, 'a'],\n z: ['zepto', 1e-21, 'z'],\n y: ['yocto', 1e-24, 'y']\n };\n\n // Initialize units and multipliers\n let from = null;\n let to = null;\n let base_from_unit = from_unit;\n let base_to_unit = to_unit;\n let from_multiplier = 1;\n let to_multiplier = 1;\n let alt;\n\n // Lookup from and to units\n for (let i = 0; i < units.length; i++) {\n alt = units[i][2] === null ? [] : units[i][2];\n\n if (units[i][1] === base_from_unit || alt.indexOf(base_from_unit) >= 0) {\n from = units[i];\n }\n\n if (units[i][1] === base_to_unit || alt.indexOf(base_to_unit) >= 0) {\n to = units[i];\n }\n }\n\n // Lookup from prefix\n if (from === null) {\n const from_binary_prefix = binary_prefixes[from_unit.substring(0, 2)];\n let from_unit_prefix = unit_prefixes[from_unit.substring(0, 1)];\n\n // Handle dekao unit prefix (only unit prefix with two characters)\n if (from_unit.substring(0, 2) === 'da') {\n from_unit_prefix = ['dekao', 1e1, 'da'];\n }\n\n // Handle binary prefixes first (so that 'Yi' is processed before 'Y')\n if (from_binary_prefix) {\n from_multiplier = from_binary_prefix[2];\n base_from_unit = from_unit.substring(2);\n } else if (from_unit_prefix) {\n from_multiplier = from_unit_prefix[1];\n base_from_unit = from_unit.substring(from_unit_prefix[2].length);\n }\n\n // Lookup from unit\n for (let j = 0; j < units.length; j++) {\n alt = units[j][2] === null ? [] : units[j][2];\n\n if (units[j][1] === base_from_unit || alt.indexOf(base_from_unit) >= 0) {\n from = units[j];\n }\n }\n }\n\n // Lookup to prefix\n if (to === null) {\n const to_binary_prefix = binary_prefixes[to_unit.substring(0, 2)];\n let to_unit_prefix = unit_prefixes[to_unit.substring(0, 1)];\n\n // Handle dekao unit prefix (only unit prefix with two characters)\n if (to_unit.substring(0, 2) === 'da') {\n to_unit_prefix = ['dekao', 1e1, 'da'];\n }\n\n // Handle binary prefixes first (so that 'Yi' is processed before 'Y')\n if (to_binary_prefix) {\n to_multiplier = to_binary_prefix[2];\n base_to_unit = to_unit.substring(2);\n } else if (to_unit_prefix) {\n to_multiplier = to_unit_prefix[1];\n base_to_unit = to_unit.substring(to_unit_prefix[2].length);\n }\n\n // Lookup to unit\n for (let k = 0; k < units.length; k++) {\n alt = units[k][2] === null ? [] : units[k][2];\n\n if (units[k][1] === base_to_unit || alt.indexOf(base_to_unit) >= 0) {\n to = units[k];\n }\n }\n }\n\n // Return error if a unit does not exist\n if (from === null || to === null) {\n return na\n }\n\n // Return error if units represent different quantities\n if (from[3] !== to[3]) {\n return na\n }\n\n // Return converted number\n return (number * from[6] * from_multiplier) / (to[6] * to_multiplier)\n}\n\n/**\n * Converts a decimal number to binary.\n *\n * Category: Engineering\n *\n * @param {*} number The decimal integer you want to convert. If number is negative, valid place values are ignored and DEC2BIN returns a 10-character (10-bit) binary number in which the most significant bit is the sign bit. The remaining 9 bits are magnitude bits. Negative numbers are represented using two's-complement notation.\n * @param {*} places Optional. The number of characters to use. If places is omitted, DEC2BIN uses the minimum number of characters necessary. Places is useful for padding the return value with leading 0s (zeros).\n * @returns\n */\nfunction DEC2BIN(number, places) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n // Return error if number is not decimal, is lower than -512, or is greater than 511\n if (!/^-?[0-9]{1,3}$/.test(number) || number < -512 || number > 511) {\n return num\n }\n\n // Ignore places and return a 10-character binary number if number is negative\n if (number < 0) {\n return '1' + REPT('0', 9 - (512 + number).toString(2).length) + (512 + number).toString(2)\n }\n\n // Convert decimal number to binary\n const result = parseInt(number, 10).toString(2);\n\n // Return binary number using the minimum number of characters necessary if places is undefined\n if (typeof places === 'undefined') {\n return result\n } else {\n // Return error if places is nonnumeric\n if (isNaN(places)) {\n return value\n }\n\n // Return error if places is negative\n if (places < 0) {\n return num\n }\n\n // Truncate places in case it is not an integer\n places = Math.floor(places);\n\n // Pad return value with leading 0s (zeros) if necessary (using Underscore.string)\n return places >= result.length ? REPT('0', places - result.length) + result : num\n }\n}\n\n/**\n * Converts a decimal number to hexadecimal.\n *\n * Category: Engineering\n *\n * @param {*} number The decimal integer you want to convert. If number is negative, places is ignored and DEC2HEX returns a 10-character (40-bit) hexadecimal number in which the most significant bit is the sign bit. The remaining 39 bits are magnitude bits. Negative numbers are represented using two's-complement notation.\n * @param {*} places Optional. The number of characters to use. If places is omitted, DEC2HEX uses the minimum number of characters necessary. Places is useful for padding the return value with leading 0s (zeros).\n * @returns\n */\nfunction DEC2HEX(number, places) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n // Return error if number is not decimal, is lower than -549755813888, or is greater than 549755813887\n if (!/^-?[0-9]{1,12}$/.test(number) || number < -549755813888 || number > 549755813887) {\n return num\n }\n\n // Ignore places and return a 10-character hexadecimal number if number is negative\n if (number < 0) {\n return (1099511627776 + number).toString(16)\n }\n\n // Convert decimal number to hexadecimal\n const result = parseInt(number, 10).toString(16);\n\n // Return hexadecimal number using the minimum number of characters necessary if places is undefined\n if (typeof places === 'undefined') {\n return result\n } else {\n // Return error if places is nonnumeric\n if (isNaN(places)) {\n return value\n }\n\n // Return error if places is negative\n if (places < 0) {\n return num\n }\n\n // Truncate places in case it is not an integer\n places = Math.floor(places);\n\n // Pad return value with leading 0s (zeros) if necessary (using Underscore.string)\n return places >= result.length ? REPT('0', places - result.length) + result : num\n }\n}\n\n/**\n * Converts a decimal number to octal.\n *\n * Category: Engineering\n *\n * @param {*} number The decimal integer you want to convert. If number is negative, places is ignored and DEC2OCT returns a 10-character (30-bit) octal number in which the most significant bit is the sign bit. The remaining 29 bits are magnitude bits. Negative numbers are represented using two's-complement notation.\n * @param {*} places Optional. The number of characters to use. If places is omitted, DEC2OCT uses the minimum number of characters necessary. Places is useful for padding the return value with leading 0s (zeros).\n * @returns\n */\nfunction DEC2OCT(number, places) {\n number = parseNumber(number);\n\n if (number instanceof Error) {\n return number\n }\n\n // Return error if number is not decimal, is lower than -549755813888, or is greater than 549755813887\n if (!/^-?[0-9]{1,9}$/.test(number) || number < -536870912 || number > 536870911) {\n return num\n }\n\n // Ignore places and return a 10-character octal number if number is negative\n if (number < 0) {\n return (1073741824 + number).toString(8)\n }\n\n // Convert decimal number to octal\n const result = parseInt(number, 10).toString(8);\n\n // Return octal number using the minimum number of characters necessary if places is undefined\n if (typeof places === 'undefined') {\n return result\n } else {\n // Return error if places is nonnumeric\n if (isNaN(places)) {\n return value\n }\n\n // Return error if places is negative\n if (places < 0) {\n return num\n }\n\n // Truncate places in case it is not an integer\n places = Math.floor(places);\n\n // Pad return value with leading 0s (zeros) if necessary (using Underscore.string)\n return places >= result.length ? REPT('0', places - result.length) + result : num\n }\n}\n\n/**\n * Tests whether two values are equal.\n *\n * Category: Engineering\n *\n * @param {*} number1 The first number.\n * @param {*} number2 Optional. The second number. If omitted, number2 is assumed to be zero.\n * @returns\n */\nfunction DELTA(number1, number2) {\n // Set number2 to zero if undefined\n number2 = number2 === undefined ? 0 : number2;\n number1 = parseNumber(number1);\n number2 = parseNumber(number2);\n\n if (anyIsError(number1, number2)) {\n return value\n }\n\n // Return delta\n return number1 === number2 ? 1 : 0\n}\n\n// TODO: why is upper_bound not used ? The excel documentation has no examples with upper_bound\n/**\n * Returns the error function.\n *\n * Category: Engineering\n *\n * @param {*} lower_limit The lower bound for integrating ERF.\n * @param {*} upper_limit Optional. The upper bound for integrating ERF. If omitted, ERF integrates between zero and lower_limit.\n * @returns\n */\nfunction ERF(lower_limit, upper_limit) {\n // Set number2 to zero if undefined\n upper_limit = upper_limit === undefined ? 0 : upper_limit;\n\n lower_limit = parseNumber(lower_limit);\n upper_limit = parseNumber(upper_limit);\n\n if (anyIsError(lower_limit, upper_limit)) {\n return value\n }\n\n return jStat.erf(lower_limit)\n}\n\n// TODO\n\n/**\n * -- Not implemented --\n *\n * Returns the error function.\n *\n * Category: Engineering\n *\n * @param {*} x The lower bound for integrating ERF.PRECISE.\n * @returns\n */\nERF.PRECISE = () => {\n throw new Error('ERF.PRECISE is not implemented')\n};\n\n/**\n * Returns the complementary error function.\n *\n * Category: Engineering\n *\n * @param {*} x The lower bound for integrating ERFC.\n * @returns\n */\nfunction ERFC(x) {\n // Return error if x is not a number\n if (isNaN(x)) {\n return value\n }\n\n return jStat.erfc(x)\n}\n\n// TODO\n\n/**\n * -- Not implemented --\n *\n * Returns the complementary ERF function integrated between x and infinity.\n *\n * Category: Engineering\n *\n * @param {*} x The lower bound for integrating ERFC.PRECISE.\n * @returns\n */\nERFC.PRECISE = () => {\n throw new Error('ERFC.PRECISE is not implemented')\n};\n\n/**\n * Tests whether a number is greater than a threshold value.\n *\n * Category: Engineering\n *\n * @param {*} number The value to test against step.\n * @param {*} step Optional. The threshold value. If you omit a value for step, GESTEP uses zero.\n * @returns\n */\nfunction GESTEP(number, step) {\n step = step || 0;\n number = parseNumber(number);\n\n if (anyIsError(step, number)) {\n return number\n }\n\n // Return delta\n return number >= step ? 1 : 0\n}\n\n/**\n * Converts a hexadecimal number to binary.\n *\n * Category: Engineering\n *\n * @param {*} number The hexadecimal number you want to convert. Number cannot contain more than 10 characters. The most significant bit of number is the sign bit (40th bit from the right). The remaining 9 bits are magnitude bits. Negative numbers are represented using two's-complement notation.\n * @param {*} places Optional. The number of characters to use. If places is omitted, HEX2BIN uses the minimum number of characters necessary. Places is useful for padding the return value with leading 0s (zeros).\n * @returns\n */\nfunction HEX2BIN(number, places) {\n // Return error if number is not hexadecimal or contains more than ten characters (10 digits)\n if (!/^[0-9A-Fa-f]{1,10}$/.test(number)) {\n return num\n }\n\n // Check if number is negative\n const negative = !!(number.length === 10 && number.substring(0, 1).toLowerCase() === 'f');\n\n // Convert hexadecimal number to decimal\n const decimal = negative ? parseInt(number, 16) - 1099511627776 : parseInt(number, 16);\n\n // Return error if number is lower than -512 or greater than 511\n if (decimal < -512 || decimal > 511) {\n return num\n }\n\n // Ignore places and return a 10-character binary number if number is negative\n if (negative) {\n return '1' + REPT('0', 9 - (512 + decimal).toString(2).length) + (512 + decimal).toString(2)\n }\n\n // Convert decimal number to binary\n const result = decimal.toString(2);\n\n // Return binary number using the minimum number of characters necessary if places is undefined\n if (places === undefined) {\n return result\n } else {\n // Return error if places is nonnumeric\n if (isNaN(places)) {\n return value\n }\n\n // Return error if places is negative\n if (places < 0) {\n return num\n }\n\n // Truncate places in case it is not an integer\n places = Math.floor(places);\n\n // Pad return value with leading 0s (zeros) if necessary (using Underscore.string)\n return places >= result.length ? REPT('0', places - result.length) + result : num\n }\n}\n\n/**\n * Converts a hexadecimal number to decimal.\n *\n * Category: Engineering\n *\n * @param {*} number The hexadecimal number you want to convert. Number cannot contain more than 10 characters (40 bits). The most significant bit of number is the sign bit. The remaining 39 bits are magnitude bits. Negative numbers are represented using two's-complement notation.\n * @returns\n */\nfunction HEX2DEC(number) {\n // Return error if number is not hexadecimal or contains more than ten characters (10 digits)\n if (!/^[0-9A-Fa-f]{1,10}$/.test(number)) {\n return num\n }\n\n // Convert hexadecimal number to decimal\n const decimal = parseInt(number, 16);\n\n // Return decimal number\n return decimal >= 549755813888 ? decimal - 1099511627776 : decimal\n}\n\n/**\n * Converts a hexadecimal number to octal.\n *\n * Category: Engineering\n *\n * @param {*} number The hexadecimal number you want to convert. Number cannot contain more than 10 characters. The most significant bit of number is the sign bit. The remaining 39 bits are magnitude bits. Negative numbers are represented using two's-complement notation.\n * @param {*} places Optional. The number of characters to use. If places is omitted, HEX2OCT uses the minimum number of characters necessary. Places is useful for padding the return value with leading 0s (zeros).\n * @returns\n */\nfunction HEX2OCT(number, places) {\n // Return error if number is not hexadecimal or contains more than ten characters (10 digits)\n if (!/^[0-9A-Fa-f]{1,10}$/.test(number)) {\n return num\n }\n\n // Convert hexadecimal number to decimal\n const decimal = parseInt(number, 16);\n\n // Return error if number is positive and greater than 0x1fffffff (536870911)\n if (decimal > 536870911 && decimal < 1098974756864) {\n return num\n }\n\n // Ignore places and return a 10-character octal number if number is negative\n if (decimal >= 1098974756864) {\n return (decimal - 1098437885952).toString(8)\n }\n\n // Convert decimal number to octal\n const result = decimal.toString(8);\n\n // Return octal number using the minimum number of characters necessary if places is undefined\n if (places === undefined) {\n return result\n } else {\n // Return error if places is nonnumeric\n if (isNaN(places)) {\n return value\n }\n\n // Return error if places is negative\n if (places < 0) {\n return num\n }\n\n // Truncate places in case it is not an integer\n places = Math.floor(places);\n\n // Pad return value with leading 0s (zeros) if necessary (using Underscore.string)\n return places >= result.length ? REPT('0', places - result.length) + result : num\n }\n}\n\n/**\n * Returns the absolute value (modulus) of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the absolute value.\n * @returns\n */\nfunction IMABS(inumber) {\n // Lookup real and imaginary coefficients using exports.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n // Return error if either coefficient is not a number\n if (anyIsError(x, y)) {\n return value\n }\n\n // Return absolute value of complex number\n return Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2))\n}\n\n/**\n * Returns the imaginary coefficient of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the imaginary coefficient.\n * @returns\n */\nfunction IMAGINARY(inumber) {\n if (inumber === undefined || inumber === true || inumber === false) {\n return value\n }\n\n // Return 0 if inumber is equal to 0\n if (inumber === 0 || inumber === '0') {\n return 0\n }\n\n // Handle special cases\n if (['i', 'j'].indexOf(inumber) >= 0) {\n return 1\n }\n\n // Force string type\n inumber = inumber + '';\n\n // Normalize imaginary coefficient\n inumber = inumber.replace('+i', '+1i').replace('-i', '-1i').replace('+j', '+1j').replace('-j', '-1j');\n\n // Lookup sign\n let plus = inumber.indexOf('+');\n let minus = inumber.indexOf('-');\n\n if (plus === 0) {\n plus = inumber.indexOf('+', 1);\n }\n\n if (minus === 0) {\n minus = inumber.indexOf('-', 1);\n }\n\n // Lookup imaginary unit\n const last = inumber.substring(inumber.length - 1, inumber.length);\n const unit = last === 'i' || last === 'j';\n\n if (plus >= 0 || minus >= 0) {\n // Return error if imaginary unit is neither i nor j\n if (!unit) {\n return num\n }\n\n // Return imaginary coefficient of complex number\n if (plus >= 0) {\n return isNaN(inumber.substring(0, plus)) || isNaN(inumber.substring(plus + 1, inumber.length - 1))\n ? num\n : Number(inumber.substring(plus + 1, inumber.length - 1))\n } else {\n return isNaN(inumber.substring(0, minus)) || isNaN(inumber.substring(minus + 1, inumber.length - 1))\n ? num\n : -Number(inumber.substring(minus + 1, inumber.length - 1))\n }\n } else {\n if (unit) {\n return isNaN(inumber.substring(0, inumber.length - 1)) ? num : inumber.substring(0, inumber.length - 1)\n } else {\n return isNaN(inumber) ? num : 0\n }\n }\n}\n\n/**\n * Returns the argument theta, an angle expressed in radians.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the argument .\n * @returns\n */\nfunction IMARGUMENT(inumber) {\n // Lookup real and imaginary coefficients using exports.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n // Return error if either coefficient is not a number\n if (anyIsError(x, y)) {\n return value\n }\n\n // Return error if inumber is equal to zero\n if (x === 0 && y === 0) {\n return div0\n }\n\n // Return PI/2 if x is equal to zero and y is positive\n if (x === 0 && y > 0) {\n return Math.PI / 2\n }\n\n // Return -PI/2 if x is equal to zero and y is negative\n if (x === 0 && y < 0) {\n return -Math.PI / 2\n }\n\n // Return zero if x is negative and y is equal to zero\n if (y === 0 && x > 0) {\n return 0\n }\n\n // Return zero if x is negative and y is equal to zero\n if (y === 0 && x < 0) {\n return -Math.PI\n }\n\n // Return argument of complex number\n if (x > 0) {\n return Math.atan(y / x)\n } else if (x < 0 && y >= 0) {\n return Math.atan(y / x) + Math.PI\n } else {\n return Math.atan(y / x) - Math.PI\n }\n}\n\n/**\n * Returns the complex conjugate of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the conjugate.\n * @returns\n */\nfunction IMCONJUGATE(inumber) {\n // Lookup real and imaginary coefficients using exports.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(x, y)) {\n return value\n }\n\n // Lookup imaginary unit\n let unit = inumber.substring(inumber.length - 1);\n unit = unit === 'i' || unit === 'j' ? unit : 'i';\n\n // Return conjugate of complex number\n return y !== 0 ? COMPLEX(x, -y, unit) : inumber\n}\n\n/**\n * Returns the cosine of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the cosine.\n * @returns\n */\nfunction IMCOS(inumber) {\n // Lookup real and imaginary coefficients using exports.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(x, y)) {\n return value\n }\n\n // Lookup imaginary unit\n let unit = inumber.substring(inumber.length - 1);\n unit = unit === 'i' || unit === 'j' ? unit : 'i';\n\n // Return cosine of complex number\n return COMPLEX(\n (Math.cos(x) * (Math.exp(y) + Math.exp(-y))) / 2,\n (-Math.sin(x) * (Math.exp(y) - Math.exp(-y))) / 2,\n unit\n )\n}\n\n/**\n * Returns the hyperbolic cosine of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the hyperbolic cosine.\n * @returns\n */\nfunction IMCOSH(inumber) {\n // Lookup real and imaginary coefficients using exports.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(x, y)) {\n return value\n }\n\n // Lookup imaginary unit\n let unit = inumber.substring(inumber.length - 1);\n unit = unit === 'i' || unit === 'j' ? unit : 'i';\n\n // Return hyperbolic cosine of complex number\n return COMPLEX(\n (Math.cos(y) * (Math.exp(x) + Math.exp(-x))) / 2,\n (Math.sin(y) * (Math.exp(x) - Math.exp(-x))) / 2,\n unit\n )\n}\n\n/**\n * Returns the cotangent of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the cotangent.\n * @returns\n */\nfunction IMCOT(inumber) {\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(x, y)) {\n return value\n }\n\n // Return cotangent of complex number\n return IMDIV(IMCOS(inumber), IMSIN(inumber))\n}\n\n/**\n * Returns the quotient of two complex numbers.\n *\n * Category: Engineering\n *\n * @param {*} inumber1 The complex numerator or dividend.\n * @param {*} inumber2 The complex denominator or divisor.\n * @returns\n */\nfunction IMDIV(inumber1, inumber2) {\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const a = IMREAL(inumber1);\n const b = IMAGINARY(inumber1);\n const c = IMREAL(inumber2);\n const d = IMAGINARY(inumber2);\n\n if (anyIsError(a, b, c, d)) {\n return value\n }\n\n // Lookup imaginary unit\n const unit1 = inumber1.substring(inumber1.length - 1);\n const unit2 = inumber2.substring(inumber2.length - 1);\n let unit = 'i';\n\n if (unit1 === 'j') {\n unit = 'j';\n } else if (unit2 === 'j') {\n unit = 'j';\n }\n\n // Return error if inumber2 is null\n if (c === 0 && d === 0) {\n return num\n }\n\n // Return exponential of complex number\n const den = c * c + d * d;\n return COMPLEX((a * c + b * d) / den, (b * c - a * d) / den, unit)\n}\n\n/**\n * Returns the exponential of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the exponential.\n * @returns\n */\nfunction IMEXP(inumber) {\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(x, y)) {\n return value\n }\n\n // Lookup imaginary unit\n let unit = inumber.substring(inumber.length - 1);\n unit = unit === 'i' || unit === 'j' ? unit : 'i';\n\n // Return exponential of complex number\n const e = Math.exp(x);\n return COMPLEX(e * Math.cos(y), e * Math.sin(y), unit)\n}\n\n/**\n * Returns the natural logarithm of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the natural logarithm.\n * @returns\n */\nfunction IMLN(inumber) {\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(x, y)) {\n return value\n }\n\n // Lookup imaginary unit\n let unit = inumber.substring(inumber.length - 1);\n unit = unit === 'i' || unit === 'j' ? unit : 'i';\n\n // Return exponential of complex number\n return COMPLEX(Math.log(Math.sqrt(x * x + y * y)), Math.atan(y / x), unit)\n}\n\n/**\n * Returns the base-10 logarithm of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the common logarithm.\n * @returns\n */\nfunction IMLOG10(inumber) {\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(x, y)) {\n return value\n }\n\n // Lookup imaginary unit\n let unit = inumber.substring(inumber.length - 1);\n unit = unit === 'i' || unit === 'j' ? unit : 'i';\n\n // Return exponential of complex number\n return COMPLEX(Math.log(Math.sqrt(x * x + y * y)) / Math.log(10), Math.atan(y / x) / Math.log(10), unit)\n}\n\n/**\n * Returns the base-2 logarithm of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the base-2 logarithm.\n * @returns\n */\nfunction IMLOG2(inumber) {\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(x, y)) {\n return value\n }\n\n // Lookup imaginary unit\n let unit = inumber.substring(inumber.length - 1);\n unit = unit === 'i' || unit === 'j' ? unit : 'i';\n\n // Return exponential of complex number\n return COMPLEX(Math.log(Math.sqrt(x * x + y * y)) / Math.log(2), Math.atan(y / x) / Math.log(2), unit)\n}\n\n/**\n * Returns a complex number raised to an integer power.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number you want to raise to a power.\n * @param {*} number The power to which you want to raise the complex number.\n * @returns\n */\nfunction IMPOWER(inumber, number) {\n number = parseNumber(number);\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(number, x, y)) {\n return value\n }\n\n // Lookup imaginary unit\n let unit = inumber.substring(inumber.length - 1);\n unit = unit === 'i' || unit === 'j' ? unit : 'i';\n\n // Calculate power of modulus\n const p = Math.pow(IMABS(inumber), number);\n\n // Calculate argument\n const t = IMARGUMENT(inumber);\n\n // Return exponential of complex number\n return COMPLEX(p * Math.cos(number * t), p * Math.sin(number * t), unit)\n}\n\n/**\n * Returns the product of complex numbers.\n *\n * Category: Engineering\n *\n * @param {*} args inumber1, [inumber2], \u2026 Inumber1 is required, subsequent inumbers are not. 1 to 255 complex numbers to multiply.\n * @returns\n */\nfunction IMPRODUCT() {\n // Initialize result\n let result = arguments[0];\n\n if (!arguments.length) {\n return value\n }\n\n // Loop on all numbers\n for (let i = 1; i < arguments.length; i++) {\n // Lookup coefficients of two complex numbers\n const a = IMREAL(result);\n const b = IMAGINARY(result);\n const c = IMREAL(arguments[i]);\n const d = IMAGINARY(arguments[i]);\n\n if (anyIsError(a, b, c, d)) {\n return value\n }\n\n // Complute product of two complex numbers\n result = COMPLEX(a * c - b * d, a * d + b * c);\n }\n\n // Return product of complex numbers\n return result\n}\n\n/**\n * Returns the real coefficient of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the real coefficient.\n * @returns\n */\nfunction IMREAL(inumber) {\n if (inumber === undefined || inumber === true || inumber === false) {\n return value\n }\n\n // Return 0 if inumber is equal to 0\n if (inumber === 0 || inumber === '0') {\n return 0\n }\n\n // Handle special cases\n if (['i', '+i', '1i', '+1i', '-i', '-1i', 'j', '+j', '1j', '+1j', '-j', '-1j'].indexOf(inumber) >= 0) {\n return 0\n }\n\n // Force String type\n inumber = inumber + '';\n\n // Lookup sign\n let plus = inumber.indexOf('+');\n let minus = inumber.indexOf('-');\n\n if (plus === 0) {\n plus = inumber.indexOf('+', 1);\n }\n\n if (minus === 0) {\n minus = inumber.indexOf('-', 1);\n }\n\n // Lookup imaginary unit\n const last = inumber.substring(inumber.length - 1, inumber.length);\n const unit = last === 'i' || last === 'j';\n\n if (plus >= 0 || minus >= 0) {\n // Return error if imaginary unit is neither i nor j\n if (!unit) {\n return num\n }\n\n // Return real coefficient of complex number\n if (plus >= 0) {\n return isNaN(inumber.substring(0, plus)) || isNaN(inumber.substring(plus + 1, inumber.length - 1))\n ? num\n : Number(inumber.substring(0, plus))\n } else {\n return isNaN(inumber.substring(0, minus)) || isNaN(inumber.substring(minus + 1, inumber.length - 1))\n ? num\n : Number(inumber.substring(0, minus))\n }\n } else {\n if (unit) {\n return isNaN(inumber.substring(0, inumber.length - 1)) ? num : 0\n } else {\n return isNaN(inumber) ? num : inumber\n }\n }\n}\n\n/**\n * Returns the secant of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the secant.\n * @returns\n */\nfunction IMSEC(inumber) {\n // Return error if inumber is a logical value\n if (inumber === true || inumber === false) {\n return value\n }\n\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(x, y)) {\n return value\n }\n\n // Return secant of complex number\n return IMDIV('1', IMCOS(inumber))\n}\n\n/**\n * Returns the hyperbolic secant of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the hyperbolic secant.\n * @returns\n */\nfunction IMSECH(inumber) {\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(x, y)) {\n return value\n }\n\n // Return hyperbolic secant of complex number\n return IMDIV('1', IMCOSH(inumber))\n}\n\n/**\n * Returns the sine of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the sine.\n * @returns\n */\nfunction IMSIN(inumber) {\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(x, y)) {\n return value\n }\n\n // Lookup imaginary unit\n let unit = inumber.substring(inumber.length - 1);\n unit = unit === 'i' || unit === 'j' ? unit : 'i';\n\n // Return sine of complex number\n return COMPLEX(\n (Math.sin(x) * (Math.exp(y) + Math.exp(-y))) / 2,\n (Math.cos(x) * (Math.exp(y) - Math.exp(-y))) / 2,\n unit\n )\n}\n\n/**\n * Returns the hyperbolic sine of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the hyperbolic sine.\n * @returns\n */\nfunction IMSINH(inumber) {\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(x, y)) {\n return value\n }\n\n // Lookup imaginary unit\n let unit = inumber.substring(inumber.length - 1);\n unit = unit === 'i' || unit === 'j' ? unit : 'i';\n\n // Return hyperbolic sine of complex number\n return COMPLEX(\n (Math.cos(y) * (Math.exp(x) - Math.exp(-x))) / 2,\n (Math.sin(y) * (Math.exp(x) + Math.exp(-x))) / 2,\n unit\n )\n}\n\n/**\n * Returns the square root of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the square root.\n * @returns\n */\nfunction IMSQRT(inumber) {\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(x, y)) {\n return value\n }\n\n // Lookup imaginary unit\n let unit = inumber.substring(inumber.length - 1);\n unit = unit === 'i' || unit === 'j' ? unit : 'i';\n\n // Calculate power of modulus\n const s = Math.sqrt(IMABS(inumber));\n\n // Calculate argument\n const t = IMARGUMENT(inumber);\n\n // Return exponential of complex number\n return COMPLEX(s * Math.cos(t / 2), s * Math.sin(t / 2), unit)\n}\n\n/**\n * Returns the cosecant of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the cosecant.\n * @returns\n */\nfunction IMCSC(inumber) {\n // Return error if inumber is a logical value\n if (inumber === true || inumber === false) {\n return value\n }\n\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n // Return error if either coefficient is not a number\n if (anyIsError(x, y)) {\n return num\n }\n\n // Return cosecant of complex number\n return IMDIV('1', IMSIN(inumber))\n}\n\n/**\n * Returns the hyperbolic cosecant of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the hyperbolic cosecant.\n * @returns\n */\nfunction IMCSCH(inumber) {\n // Return error if inumber is a logical value\n if (inumber === true || inumber === false) {\n return value\n }\n\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n // Return error if either coefficient is not a number\n if (anyIsError(x, y)) {\n return num\n }\n\n // Return hyperbolic cosecant of complex number\n return IMDIV('1', IMSINH(inumber))\n}\n\n/**\n * Returns the difference between two complex numbers.\n *\n * Category: Engineering\n *\n * @param {*} inumber1 The complex number from which to subtract inumber2.\n * @param {*} inumber2 The complex number to subtract from inumber1.\n * @returns\n */\nfunction IMSUB(inumber1, inumber2) {\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const a = IMREAL(inumber1);\n const b = IMAGINARY(inumber1);\n const c = IMREAL(inumber2);\n const d = IMAGINARY(inumber2);\n\n if (anyIsError(a, b, c, d)) {\n return value\n }\n\n // Lookup imaginary unit\n const unit1 = inumber1.substring(inumber1.length - 1);\n const unit2 = inumber2.substring(inumber2.length - 1);\n let unit = 'i';\n\n if (unit1 === 'j') {\n unit = 'j';\n } else if (unit2 === 'j') {\n unit = 'j';\n }\n\n // Return _ of two complex numbers\n return COMPLEX(a - c, b - d, unit)\n}\n\n/**\n * Returns the sum of complex numbers.\n *\n * Category: Engineering\n *\n * @param {*} args inumber1, [inumber2], ... Inumber1 is required, subsequent numbers are not. 1 to 255 complex numbers to add.\n * @returns\n */\nfunction IMSUM() {\n if (!arguments.length) {\n return value\n }\n\n const args = flatten(arguments);\n\n // Initialize result\n let result = args[0];\n\n // Loop on all numbers\n for (let i = 1; i < args.length; i++) {\n // Lookup coefficients of two complex numbers\n const a = IMREAL(result);\n const b = IMAGINARY(result);\n const c = IMREAL(args[i]);\n const d = IMAGINARY(args[i]);\n\n if (anyIsError(a, b, c, d)) {\n return value\n }\n\n // Complute product of two complex numbers\n result = COMPLEX(a + c, b + d);\n }\n\n // Return sum of complex numbers\n return result\n}\n\n/**\n * Returns the tangent of a complex number.\n *\n * Category: Engineering\n *\n * @param {*} inumber A complex number for which you want the tangent.\n * @returns\n */\nfunction IMTAN(inumber) {\n // Return error if inumber is a logical value\n if (inumber === true || inumber === false) {\n return value\n }\n\n // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n const x = IMREAL(inumber);\n const y = IMAGINARY(inumber);\n\n if (anyIsError(x, y)) {\n return value\n }\n\n // Return tangent of complex number\n return IMDIV(IMSIN(inumber), IMCOS(inumber))\n}\n\n/**\n * Converts an octal number to binary.\n *\n * Category: Engineering\n *\n * @param {*} number The octal number you want to convert. Number may not contain more than 10 characters. The most significant bit of number is the sign bit. The remaining 29 bits are magnitude bits. Negative numbers are represented using two's-complement notation.\n * @param {*} places Optional. The number of characters to use. If places is omitted, OCT2BIN uses the minimum number of characters necessary. Places is useful for padding the return value with leading 0s (zeros).\n * @returns\n */\nfunction OCT2BIN(number, places) {\n // Return error if number is not hexadecimal or contains more than ten characters (10 digits)\n if (!/^[0-7]{1,10}$/.test(number)) {\n return num\n }\n\n // Check if number is negative\n const negative = !!(number.length === 10 && number.substring(0, 1) === '7');\n\n // Convert octal number to decimal\n const decimal = negative ? parseInt(number, 8) - 1073741824 : parseInt(number, 8);\n\n // Return error if number is lower than -512 or greater than 511\n if (decimal < -512 || decimal > 511) {\n return num\n }\n\n // Ignore places and return a 10-character binary number if number is negative\n if (negative) {\n return '1' + REPT('0', 9 - (512 + decimal).toString(2).length) + (512 + decimal).toString(2)\n }\n\n // Convert decimal number to binary\n const result = decimal.toString(2);\n\n // Return binary number using the minimum number of characters necessary if places is undefined\n if (typeof places === 'undefined') {\n return result\n } else {\n // Return error if places is nonnumeric\n if (isNaN(places)) {\n return value\n }\n\n // Return error if places is negative\n if (places < 0) {\n return num\n }\n\n // Truncate places in case it is not an integer\n places = Math.floor(places);\n\n // Pad return value with leading 0s (zeros) if necessary (using Underscore.string)\n return places >= result.length ? REPT('0', places - result.length) + result : num\n }\n}\n\n/**\n * Converts an octal number to decimal.\n *\n * Category: Engineering\n *\n * @param {*} number The octal number you want to convert. Number may not contain more than 10 octal characters (30 bits). The most significant bit of number is the sign bit. The remaining 29 bits are magnitude bits. Negative numbers are represented using two's-complement notation.\n * @returns\n */\nfunction OCT2DEC(number) {\n // Return error if number is not octal or contains more than ten characters (10 digits)\n if (!/^[0-7]{1,10}$/.test(number)) {\n return num\n }\n\n // Convert octal number to decimal\n const decimal = parseInt(number, 8);\n\n // Return decimal number\n return decimal >= 536870912 ? decimal - 1073741824 : decimal\n}\n\n/**\n * Converts an octal number to hexadecimal.\n *\n * Category: Engineering\n *\n * @param {*} number The octal number you want to convert. Number may not contain more than 10 octal characters (30 bits). The most significant bit of number is the sign bit. The remaining 29 bits are magnitude bits. Negative numbers are represented using two's-complement notation.\n * @param {*} places Optional. The number of characters to use. If places is omitted, OCT2HEX uses the minimum number of characters necessary. Places is useful for padding the return value with leading 0s (zeros).\n * @returns\n */\nfunction OCT2HEX(number, places) {\n // Return error if number is not octal or contains more than ten characters (10 digits)\n if (!/^[0-7]{1,10}$/.test(number)) {\n return num\n }\n\n // Convert octal number to decimal\n const decimal = parseInt(number, 8);\n\n // Ignore places and return a 10-character octal number if number is negative\n if (decimal >= 536870912) {\n return 'ff' + (decimal + 3221225472).toString(16)\n }\n\n // Convert decimal number to hexadecimal\n const result = decimal.toString(16);\n\n // Return hexadecimal number using the minimum number of characters necessary if places is undefined\n if (places === undefined) {\n return result\n } else {\n // Return error if places is nonnumeric\n if (isNaN(places)) {\n return value\n }\n\n // Return error if places is negative\n if (places < 0) {\n return num\n }\n\n // Truncate places in case it is not an integer\n places = Math.floor(places);\n\n // Pad return value with leading 0s (zeros) if necessary (using Underscore.string)\n return places >= result.length ? REPT('0', places - result.length) + result : num\n }\n}\n\nconst BETADIST = BETA.DIST;\nconst BETAINV = BETA.INV;\nconst BINOMDIST = BINOM.DIST;\nconst CEILINGMATH = CEILING.MATH;\nconst CEILINGPRECISE = CEILING.PRECISE;\nconst CHIDIST = CHISQ.DIST;\nconst CHIDISTRT = CHISQ.DIST.RT;\nconst CHIINV = CHISQ.INV;\nconst CHIINVRT = CHISQ.INV.RT;\nconst CHITEST = CHISQ.TEST;\nconst COVAR = COVARIANCE.P;\nconst COVARIANCEP = COVARIANCE.P;\nconst COVARIANCES = COVARIANCE.S;\nconst CRITBINOM = BINOM.INV;\nconst ERFCPRECISE = ERFC.PRECISE;\nconst ERFPRECISE = ERF.PRECISE;\nconst EXPONDIST = EXPON.DIST;\nconst FDIST = F.DIST;\nconst FDISTRT = F.DIST.RT;\nconst FINV = F.INV;\nconst FINVRT = F.INV.RT;\nconst FLOORMATH = FLOOR.MATH;\nconst FLOORPRECISE = FLOOR.PRECISE;\nconst FTEST = F.TEST;\nconst GAMMADIST = GAMMA.DIST;\nconst GAMMAINV = GAMMA.INV;\nconst GAMMALNPRECISE = GAMMALN.PRECISE;\nconst HYPGEOMDIST = HYPGEOM.DIST;\nconst LOGINV = LOGNORM.INV;\nconst LOGNORMDIST = LOGNORM.DIST;\nconst LOGNORMINV = LOGNORM.INV;\nconst MODEMULT = MODE.MULT;\nconst MODESNGL = MODE.SNGL;\nconst NEGBINOMDIST = NEGBINOM.DIST;\nconst NETWORKDAYSINTL = NETWORKDAYS.INTL;\nconst NORMDIST = NORM.DIST;\nconst NORMINV = NORM.INV;\nconst NORMSDIST = NORM.S.DIST;\nconst NORMSINV = NORM.S.INV;\nconst PERCENTILEEXC = PERCENTILE.EXC;\nconst PERCENTILEINC = PERCENTILE.INC;\nconst PERCENTRANKEXC = PERCENTRANK.EXC;\nconst PERCENTRANKINC = PERCENTRANK.INC;\nconst POISSONDIST = POISSON.DIST;\nconst QUARTILEEXC = QUARTILE.EXC;\nconst QUARTILEINC = QUARTILE.INC;\nconst RANKAVG = RANK.AVG;\nconst RANKEQ = RANK.EQ;\nconst SKEWP = SKEW.P;\nconst STDEVP = STDEV.P;\nconst STDEVS = STDEV.S;\nconst TDIST = T.DIST;\nconst TDISTRT = T.DIST.RT;\nconst TINV = T.INV;\nconst TTEST = T.TEST;\nconst VARP = VAR.P;\nconst VARS = VAR.S;\nconst WEIBULLDIST = WEIBULL.DIST;\nconst WORKDAYINTL = WORKDAY.INTL;\nconst ZTEST = Z.TEST;\n\nfunction compact(array) {\n const result = [];\n\n arrayEach(array, (value) => {\n if (value) {\n result.push(value);\n }\n });\n\n return result\n}\n\nfunction findResultIndex(database, criterias) {\n const matches = {};\n\n for (let i = 1; i < database[0].length; ++i) {\n matches[i] = true;\n }\n\n let maxCriteriaLength = criterias[0].length;\n\n for (let i = 1; i < criterias.length; ++i) {\n if (criterias[i].length > maxCriteriaLength) {\n maxCriteriaLength = criterias[i].length;\n }\n }\n\n for (let k = 1; k < database.length; ++k) {\n for (let l = 1; l < database[k].length; ++l) {\n let currentCriteriaResult = false;\n let hasMatchingCriteria = false;\n\n for (let j = 0; j < criterias.length; ++j) {\n const criteria = criterias[j];\n\n if (criteria.length < maxCriteriaLength) {\n continue\n }\n\n const criteriaField = criteria[0];\n\n if (database[k][0] !== criteriaField) {\n continue\n }\n\n hasMatchingCriteria = true;\n\n for (let p = 1; p < criteria.length; ++p) {\n if (!currentCriteriaResult) {\n const isWildcard = criteria[p] === void 0 || criteria[p] === '*';\n\n if (isWildcard) {\n currentCriteriaResult = true;\n } else {\n const tokenizedCriteria = parse(criteria[p] + '');\n const tokens = [createToken(database[k][l], TOKEN_TYPE_LITERAL)].concat(\n tokenizedCriteria\n );\n\n currentCriteriaResult = compute(tokens);\n }\n }\n }\n }\n\n if (hasMatchingCriteria) {\n matches[l] = matches[l] && currentCriteriaResult;\n }\n }\n }\n\n const result = [];\n\n for (let n = 0; n < database[0].length; ++n) {\n if (matches[n]) {\n result.push(n - 1);\n }\n }\n\n return result\n}\n\n// Database functions\n/**\n * Returns the average of selected database entries.\n *\n * Category: Database\n *\n * @param {*} database Range of values that makes up the list or database. A database is a list of related data in which rows of related information are records, and columns of data are fields. The first row of the list contains labels for each column.\n * @param {*} field Indicates which column is used in the function. Enter the column label enclosed between double quotation marks, such as \"Age\" or \"Yield,\" or a number (without quotation marks) that represents the position of the column within the list: 1 for the first column, 2 for the second column, and so on.\n * @param {*} criteria Range of values that contains the conditions you specify. You can use any range for the criteria argument, as long as it includes at least one column label and at least one value below the column label in which you specify a condition for the column.\n * @returns\n */\nfunction DAVERAGE(database, field, criteria) {\n // Return error if field is not a number and not a string\n if (isNaN(field) && typeof field !== 'string') {\n return value\n }\n\n const resultIndexes = findResultIndex(database, criteria);\n let targetFields = [];\n\n if (typeof field === 'string') {\n const index = findField(database, field);\n targetFields = rest(database[index]);\n } else {\n targetFields = rest(database[field]);\n }\n\n let sum = 0;\n\n arrayEach(resultIndexes, (value) => {\n sum += targetFields[value];\n });\n\n return resultIndexes.length === 0 ? div0 : sum / resultIndexes.length\n}\n\n/**\n * Counts the values that contain numbers in a database.\n *\n * Category: Database\n *\n * @param {*} database The range of values that makes up the list or database. A database is a list of related data in which rows of related information are records, and columns of data are fields. The first row of the list contains labels for each column.\n * @param {*} field Indicates which column is used in the function. Enter the column label enclosed between double quotation marks, such as \"Age\" or \"Yield,\" or a number (without quotation marks) that represents the position of the column within the list: 1 for the first column, 2 for the second column, and so on.\n * @param {*} criteria The range of values that contains the conditions that you specify. You can use any range for the criteria argument, as long as the argument includes at least one column label and at least one value below the column label in which you specify a condition for the column.\n * @returns\n */\nfunction DCOUNT(database, field, criteria) {\n // Return error if field is not a number and not a string\n if (isNaN(field) && typeof field !== 'string') {\n return value\n }\n\n const resultIndexes = findResultIndex(database, criteria);\n let targetFields = [];\n\n if (typeof field === 'string') {\n const index = findField(database, field);\n targetFields = rest(database[index]);\n } else {\n targetFields = rest(database[field]);\n }\n\n const targetValues = [];\n\n arrayEach(resultIndexes, (value) => {\n targetValues.push(targetFields[value]);\n });\n\n return COUNT(targetValues)\n}\n\n/**\n * Counts nonblank values in a database.\n *\n * Category: Database\n *\n * @param {*} database The range of values that makes up the list or database. A database is a list of related data in which rows of related information are records, and columns of data are fields. The first row of the list contains labels for each column.\n * @param {*} field Optional. Indicates which column is used in the function. Enter the column label enclosed between double quotation marks, such as \"Age\" or \"Yield,\" or a number (without quotation marks) that represents the position of the column within the list: 1 for the first column, 2 for the second column, and so on.\n * @param {*} criteria The range of values that contains the conditions that you specify. You can use any range for the criteria argument, as long as it includes at least one column label and at least one value below the column label in which you specify a condition for the column.\n * @returns\n */\nfunction DCOUNTA(database, field, criteria) {\n // Return error if field is not a number and not a string\n if (isNaN(field) && typeof field !== 'string') {\n return value\n }\n\n const resultIndexes = findResultIndex(database, criteria);\n let targetFields = [];\n\n if (typeof field === 'string') {\n const index = findField(database, field);\n targetFields = rest(database[index]);\n } else {\n targetFields = rest(database[field]);\n }\n\n const targetValues = [];\n\n arrayEach(resultIndexes, (value) => {\n targetValues.push(targetFields[value]);\n });\n\n return COUNTA(targetValues)\n}\n\n/**\n * Extracts from a database a single record that matches the specified criteria.\n *\n * Category: Database\n *\n * @param {*} database The range of values that makes up the list or database. A database is a list of related data in which rows of related information are records, and columns of data are fields. The first row of the list contains labels for each column.\n * @param {*} field Indicates which column is used in the function. Enter the column label enclosed between double quotation marks, such as \"Age\" or \"Yield,\" or a number (without quotation marks) that represents the position of the column within the list: 1 for the first column, 2 for the second column, and so on.\n * @param {*} criteria The range of values that contains the conditions that you specify. You can use any range for the criteria argument, as long as it includes at least one column label and at least one value below the column label in which you specify a condition for the column.\n * @returns\n */\nfunction DGET(database, field, criteria) {\n // Return error if field is not a number and not a string\n if (isNaN(field) && typeof field !== 'string') {\n return value\n }\n\n const resultIndexes = findResultIndex(database, criteria);\n let targetFields = [];\n\n if (typeof field === 'string') {\n const index = findField(database, field);\n targetFields = rest(database[index]);\n } else {\n targetFields = rest(database[field]);\n }\n\n // Return error if no record meets the criteria\n if (resultIndexes.length === 0) {\n return value\n }\n // Returns the #NUM! error value because more than one record meets the\n // criteria\n if (resultIndexes.length > 1) {\n return num\n }\n\n return targetFields[resultIndexes[0]]\n}\n\n/**\n * Returns the maximum value from selected database entries.\n *\n * Category: Database\n *\n * @param {*} database The range of values that makes up the list or database. A database is a list of related data in which rows of related information are records, and columns of data are fields. The first row of the list contains labels for each column.\n * @param {*} field Indicates which column is used in the function. Enter the column label enclosed between double quotation marks, such as \"Age\" or \"Yield,\" or a number (without quotation marks) that represents the position of the column within the list: 1 for the first column, 2 for the second column, and so on.\n * @param {*} criteria The range of values that contains the conditions that you specify. You can use any range for the criteria argument, as long as it includes at least one column label and at least one value below the column label in which you specify a condition for the column.\n * @returns\n */\nfunction DMAX(database, field, criteria) {\n // Return error if field is not a number and not a string\n\n if (isNaN(field) && typeof field !== 'string') {\n return value\n }\n\n const resultIndexes = findResultIndex(database, criteria);\n let targetFields = [];\n\n if (typeof field === 'string') {\n const index = findField(database, field);\n targetFields = rest(database[index]);\n } else {\n targetFields = rest(database[field]);\n }\n\n let maxValue = targetFields[resultIndexes[0]];\n\n arrayEach(resultIndexes, (value) => {\n if (maxValue < targetFields[value]) {\n maxValue = targetFields[value];\n }\n });\n\n return maxValue\n}\n\n/**\n * Returns the minimum value from selected database entries.\n *\n * Category: Database\n *\n * @param {*} database The range of values that makes up the list or database. A database is a list of related data in which rows of related information are records, and columns of data are fields. The first row of the list contains labels for each column.\n * @param {*} field Indicates which column is used in the function. Enter the column label enclosed between double quotation marks, such as \"Age\" or \"Yield,\" or a number (without quotation marks) that represents the position of the column within the list: 1 for the first column, 2 for the second column, and so on.\n * @param {*} criteria The range of values that contains the conditions that you specify. You can use any range for the criteria argument, as long as it includes at least one column label and at least one value below the column label in which you specify a condition for the column.\n * @returns\n */\nfunction DMIN(database, field, criteria) {\n // Return error if field is not a number and not a string\n if (isNaN(field) && typeof field !== 'string') {\n return value\n }\n\n const resultIndexes = findResultIndex(database, criteria);\n let targetFields = [];\n\n if (typeof field === 'string') {\n const index = findField(database, field);\n targetFields = rest(database[index]);\n } else {\n targetFields = rest(database[field]);\n }\n\n let minValue = targetFields[resultIndexes[0]];\n\n arrayEach(resultIndexes, (value) => {\n if (minValue > targetFields[value]) {\n minValue = targetFields[value];\n }\n });\n\n return minValue\n}\n\n/**\n * Multiplies the values in a particular field of records that match the criteria in a database.\n *\n * Category: Database\n *\n * @param {*} database The range of values that makes up the list or database. A database is a list of related data in which rows of related information are records, and columns of data are fields. The first row of the list contains labels for each column.\n * @param {*} field Indicates which column is used in the function. Enter the column label enclosed between double quotation marks, such as \"Age\" or \"Yield,\" or a number (without quotation marks) that represents the position of the column within the list: 1 for the first column, 2 for the second column, and so on.\n * @param {*} criteria The range of values that contains the conditions that you specify. You can use any range for the criteria argument, as long as it includes at least one column label and at least one value below the column label in which you specify a condition for the column.\n * @returns\n */\nfunction DPRODUCT(database, field, criteria) {\n // Return error if field is not a number and not a string\n if (isNaN(field) && typeof field !== 'string') {\n return value\n }\n\n const resultIndexes = findResultIndex(database, criteria);\n let targetFields = [];\n\n if (typeof field === 'string') {\n const index = findField(database, field);\n targetFields = rest(database[index]);\n } else {\n targetFields = rest(database[field]);\n }\n\n let targetValues = [];\n\n arrayEach(resultIndexes, (value) => {\n targetValues.push(targetFields[value]);\n });\n targetValues = compact(targetValues);\n\n let result = 1;\n\n arrayEach(targetValues, (value) => {\n result *= value;\n });\n\n return result\n}\n\n/**\n * Estimates the standard deviation based on a sample of selected database entries.\n *\n * Category: Database\n *\n * @param {*} database The range of values that makes up the list or database. A database is a list of related data in which rows of related information are records, and columns of data are fields. The first row of the list contains labels for each column.\n * @param {*} field Indicates which column is used in the function. Enter the column label enclosed between double quotation marks, such as \"Age\" or \"Yield,\" or a number (without quotation marks) that represents the position of the column within the list: 1 for the first column, 2 for the second column, and so on.\n * @param {*} criteria The range of values that contains the conditions that you specify. You can use any range for the criteria argument, as long as it includes at least one column label and at least one value below the column label in which you specify a condition for the column.\n * @returns\n */\nfunction DSTDEV(database, field, criteria) {\n // Return error if field is not a number and not a string\n if (isNaN(field) && typeof field !== 'string') {\n return value\n }\n\n const resultIndexes = findResultIndex(database, criteria);\n let targetFields = [];\n\n if (typeof field === 'string') {\n const index = findField(database, field);\n targetFields = rest(database[index]);\n } else {\n targetFields = rest(database[field]);\n }\n\n let targetValues = [];\n\n arrayEach(resultIndexes, (value) => {\n targetValues.push(targetFields[value]);\n });\n\n targetValues = compact(targetValues);\n\n return STDEV.S(targetValues)\n}\n\n/**\n * Calculates the standard deviation based on the entire population of selected database entries.\n *\n * Category: Database\n *\n * @param {*} database The range of values that makes up the list or database. A database is a list of related data in which rows of related information are records, and columns of data are fields. The first row of the list contains labels for each column.\n * @param {*} field Indicates which column is used in the function. Enter the column label enclosed between double quotation marks, such as \"Age\" or \"Yield,\" or a number (without quotation marks) that represents the position of the column within the list: 1 for the first column, 2 for the second column, and so on.\n * @param {*} criteria The range of values that contains the conditions that you specify. You can use any range for the criteria argument, as long as it includes at least one column label and at least one value below the column label in which you specify a condition for the column.\n * @returns\n */\nfunction DSTDEVP(database, field, criteria) {\n // Return error if field is not a number and not a string\n if (isNaN(field) && typeof field !== 'string') {\n return value\n }\n\n const resultIndexes = findResultIndex(database, criteria);\n let targetFields = [];\n\n if (typeof field === 'string') {\n const index = findField(database, field);\n targetFields = rest(database[index]);\n } else {\n targetFields = rest(database[field]);\n }\n\n let targetValues = [];\n\n arrayEach(resultIndexes, (value) => {\n targetValues.push(targetFields[value]);\n });\n\n targetValues = compact(targetValues);\n\n return STDEV.P(targetValues)\n}\n\n/**\n * Adds the numbers in the field column of records in the database that match the criteria.\n *\n * Category: Database\n *\n * @param {*} database The range of values that makes up the list or database. A database is a list of related data in which rows of related information are records, and columns of data are fields. The first row of the list contains labels for each column.\n * @param {*} field Indicates which column is used in the function. Enter the column label enclosed between double quotation marks, such as \"Age\" or \"Yield,\" or a number (without quotation marks) that represents the position of the column within the list: 1 for the first column, 2 for the second column, and so on.\n * @param {*} criteria Is the range of values that contains the conditions that you specify. You can use any range for the criteria argument, as long as it includes at least one column label and at least one value below the column label in which you specify a condition for the column.\n * @returns\n */\nfunction DSUM(database, field, criteria) {\n // Return error if field is not a number and not a string\n if (isNaN(field) && typeof field !== 'string') {\n return value\n }\n\n const resultIndexes = findResultIndex(database, criteria);\n let targetFields = [];\n\n if (typeof field === 'string') {\n const index = findField(database, field);\n targetFields = rest(database[index]);\n } else {\n targetFields = rest(database[field]);\n }\n\n const targetValues = [];\n\n arrayEach(resultIndexes, (value) => {\n targetValues.push(targetFields[value]);\n });\n\n return SUM(targetValues)\n}\n\n/**\n * Estimates variance based on a sample from selected database entries.\n *\n * Category: Database\n *\n * @param {*} database The range of values that makes up the list or database. A database is a list of related data in which rows of related information are records, and columns of data are fields. The first row of the list contains labels for each column.\n * @param {*} field Indicates which column is used in the function. Enter the column label enclosed between double quotation marks, such as \"Age\" or \"Yield,\" or a number (without quotation marks) that represents the position of the column within the list: 1 for the first column, 2 for the second column, and so on.\n * @param {*} criteria The range of values that contains the conditions that you specify. You can use any range for the criteria argument, as long as it includes at least one column label and at least one value below the column label in which you specify a condition for the column.\n * @returns\n */\nfunction DVAR(database, field, criteria) {\n // Return error if field is not a number and not a string\n if (isNaN(field) && typeof field !== 'string') {\n return value\n }\n\n const resultIndexes = findResultIndex(database, criteria);\n let targetFields = [];\n\n if (typeof field === 'string') {\n const index = findField(database, field);\n targetFields = rest(database[index]);\n } else {\n targetFields = rest(database[field]);\n }\n\n const targetValues = [];\n\n arrayEach(resultIndexes, (value) => {\n targetValues.push(targetFields[value]);\n });\n\n return VAR.S(targetValues)\n}\n\n/**\n * Calculates variance based on the entire population of selected database entries.\n *\n * Category: Database\n *\n * @param {*} database The range of values that makes up the list or database. A database is a list of related data in which rows of related information are records, and columns of data are fields. The first row of the list contains labels for each column.\n * @param {*} field Indicates which column is used in the function. Enter the column label enclosed between double quotation marks, such as \"Age\" or \"Yield,\" or a number (without quotation marks) that represents the position of the column within the list: 1 for the first column, 2 for the second column, and so on.\n * @param {*} criteria The range of values that contains the conditions that you specify. You can use any range for the criteria argument, as long as it includes at least one column label and at least one value below the column label in which you specify a condition for the column.\n * @returns\n */\nfunction DVARP(database, field, criteria) {\n // Return error if field is not a number and not a string\n\n if (isNaN(field) && typeof field !== 'string') {\n return value\n }\n\n const resultIndexes = findResultIndex(database, criteria);\n let targetFields = [];\n\n if (typeof field === 'string') {\n const index = findField(database, field);\n targetFields = rest(database[index]);\n } else {\n targetFields = rest(database[field]);\n }\n\n const targetValues = [];\n\n arrayEach(resultIndexes, (value) => {\n targetValues.push(targetFields[value]);\n });\n\n return VAR.P(targetValues)\n}\n\nfunction validDate(d) {\n return d && d.getTime && !isNaN(d.getTime())\n}\n\nfunction ensureDate(d) {\n return d instanceof Date ? d : new Date(d)\n}\n\n// Calculate last coupon date before settlement\nfunction lastCoupDateBeforeSettlement(settlement, maturity, frequency) {\n let date = parseDate(maturity);\n date.setFullYear(settlement.getFullYear());\n\n if (date < settlement) {\n date.setFullYear(date.getFullYear() + 1);\n }\n\n // Adjust the date based on the coupon frequency until date is later than settlement\n while (date > settlement) {\n date.setMonth(date.getMonth() + -12 / frequency);\n }\n\n return date\n}\n\nfunction validateFrequency(frequency) {\n frequency = parseNumber(frequency);\n\n // Return error if frequency is neither 1, 2, or 4\n if ([1, 2, 4].indexOf(frequency) === -1) {\n return num\n }\n\n return frequency\n}\n\nfunction validateBasis(basis) {\n basis = parseNumber(basis);\n\n // Return error if basis is neither 0, 1, 2, 3, or 4\n if ([0, 1, 2, 3, 4].indexOf(basis) === -1) {\n return num\n }\n\n return basis\n}\n\n/**\n * Returns the accrued interest for a security that pays periodic interest.\n *\n * Category: Financial\n *\n * @param {*} issue The security's issue date.\n * @param {*} first_interest The security's first interest date.\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} rate The security's annual coupon rate.\n * @param {*} par The security's par value. If you omit par, ACCRINT uses $1,000.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @param {*} calc_method Optional. Not implemented in formulajs. A logical value that specifies the way to calculate the total accrued interest when the date of settlement is later than the date of first_interest. A value of TRUE (1) returns the total accrued interest from issue to settlement. A value of FALSE (0) returns the accrued interest from first_interest to settlement. If you do not enter the argument, it defaults to TRUE.\n * @returns\n */\nfunction ACCRINT(issue, first_interest, settlement, rate, par, frequency, basis) {\n // Return error if either date is invalid\n issue = ensureDate(issue);\n first_interest = ensureDate(first_interest);\n settlement = ensureDate(settlement);\n frequency = validateFrequency(frequency);\n basis = validateBasis(basis);\n\n if (anyError(frequency, basis)) {\n return num\n }\n\n if (!validDate(issue) || !validDate(first_interest) || !validDate(settlement)) {\n return value\n }\n\n // Return error if either rate or par are lower than or equal to zero\n if (rate <= 0 || par <= 0) {\n return num\n }\n\n // Return error if settlement is before or equal to issue\n if (settlement <= issue) {\n return num\n }\n\n // Set default values\n par = par || 0;\n basis = basis || 0;\n\n // Compute accrued interest\n return par * rate * YEARFRAC(issue, settlement, basis)\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the accrued interest for a security that pays interest at maturity.\n *\n * Category: Financial\n *\n * @param {*} issue The security's issue date.\n * @param {*} settlement The security's maturity date.\n * @param {*} rate The security's annual coupon rate.\n * @param {*} par The security's par value. If you omit par, ACCRINTM uses $1,000.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction ACCRINTM() {\n throw new Error('ACCRINTM is not implemented')\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the depreciation for each accounting period by using a depreciation coefficient.\n *\n * Category: Financial\n *\n * @param {*} cost The cost of the asset.\n * @param {*} date_purchased The date of the purchase of the asset.\n * @param {*} first_period The date of the end of the first period.\n * @param {*} salvage The salvage value at the end of the life of the asset.\n * @param {*} period The period.\n * @param {*} rate The rate of depreciation.\n * @param {*} basis Optional. The year basis to be used.\n * @returns\n */\nfunction AMORDEGRC() {\n throw new Error('AMORDEGRC is not implemented')\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the depreciation for each accounting period.\n *\n * Category: Financial\n *\n * @param {*} cost The cost of the asset.\n * @param {*} date_purchased The date of the purchase of the asset.\n * @param {*} first_period The date of the end of the first period.\n * @param {*} salvage The salvage value at the end of the life of the asset.\n * @param {*} period The period.\n * @param {*} rate The rate of depreciation.\n * @param {*} basis Optional. The year basis to be used.\n * @returns\n */\nfunction AMORLINC() {\n throw new Error('AMORLINC is not implemented')\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the number of days from the beginning of the coupon period to the settlement date.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction COUPDAYBS() {\n throw new Error('COUPDAYBS is not implemented')\n}\n\n/**\n *\n * Returns the number of days in the coupon period that contains the settlement date.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction COUPDAYS(settlement, maturity, frequency, basis) {\n basis = validateBasis(basis);\n frequency = validateFrequency(frequency);\n settlement = parseDate(settlement);\n maturity = parseDate(maturity);\n\n if (anyError(settlement, maturity)) {\n return value\n }\n\n if (anyError(frequency, basis) || settlement >= maturity) {\n return num\n }\n\n if (basis === 1) {\n let date = lastCoupDateBeforeSettlement(settlement, maturity, frequency);\n let nextDate = parseDate(date);\n\n // Set month of the nextDate to the next coupon month\n nextDate.setMonth(nextDate.getMonth() + 12 / frequency);\n\n return DATEDIF(date, nextDate, 'D')\n }\n\n let numOfDays;\n\n switch (basis) {\n case 0:\n case 2:\n case 4:\n numOfDays = 360;\n break\n case 3:\n numOfDays = 365;\n break\n default:\n return num\n }\n\n return numOfDays / frequency\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the number of days from the settlement date to the next coupon date.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction COUPDAYSNC() {\n throw new Error('COUPDAYSNC is not implemented')\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the next coupon date after the settlement date.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction COUPNCD() {\n throw new Error('COUPNCD is not implemented')\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the number of coupons payable between the settlement date and maturity date.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction COUPNUM() {\n throw new Error('COUPNUM is not implemented')\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the previous coupon date before the settlement date.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction COUPPCD() {\n throw new Error('COUPPCD is not implemented')\n}\n\n/**\n * Returns the cumulative interest paid between two periods.\n *\n * Category: Financial\n *\n * @param {*} rate The interest rate.\n * @param {*} nper The total number of payment periods.\n * @param {*} pv The present value.\n * @param {*} start_period The first period in the calculation. Payment periods are numbered beginning with 1.\n * @param {*} end_period The last period in the calculation.\n * @param {*} type The timing of the payment.\n * @returns\n */\nfunction CUMIPMT(rate, nper, pv, start_period, end_period, type) {\n rate = parseNumber(rate);\n nper = parseNumber(nper);\n pv = parseNumber(pv);\n\n if (anyIsError(rate, nper, pv)) {\n return value\n }\n\n if (rate <= 0 || nper <= 0 || pv <= 0) {\n return num\n }\n\n if (start_period < 1 || end_period < 1 || start_period > end_period) {\n return num\n }\n\n if (type !== 0 && type !== 1) {\n return num\n }\n\n const payment = PMT(rate, nper, pv, 0, type);\n let interest = 0;\n\n if (start_period === 1) {\n if (type === 0) {\n interest = -pv;\n }\n\n start_period++;\n }\n\n for (let i = start_period; i <= end_period; i++) {\n interest += type === 1 ? FV(rate, i - 2, payment, pv, 1) - payment : FV(rate, i - 1, payment, pv, 0);\n }\n\n interest *= rate;\n\n return interest\n}\n\n/**\n * Returns the cumulative principal paid on a loan between two periods.\n *\n * Category: Financial\n *\n * @param {*} rate The interest rate.\n * @param {*} nper The total number of payment periods.\n * @param {*} pv The present value.\n * @param {*} start_period The first period in the calculation. Payment periods are numbered beginning with 1.\n * @param {*} end_period The last period in the calculation.\n * @param {*} type The timing of the payment.\n * @returns\n */\nfunction CUMPRINC(rate, nper, pv, start_period, end, type) {\n // Credits: algorithm inspired by Apache OpenOffice\n // Credits: Hannes Stiebitzhofer for the translations of function and variable names\n rate = parseNumber(rate);\n nper = parseNumber(nper);\n pv = parseNumber(pv);\n\n if (anyIsError(rate, nper, pv)) {\n return value\n }\n\n // Return error if either rate, nper, or value are lower than or equal to zero\n if (rate <= 0 || nper <= 0 || pv <= 0) {\n return num\n }\n\n // Return error if start < 1, end < 1, or start > end\n if (start_period < 1 || end < 1 || start_period > end) {\n return num\n }\n\n // Return error if type is neither 0 nor 1\n if (type !== 0 && type !== 1) {\n return num\n }\n\n // Compute cumulative principal\n const payment = PMT(rate, nper, pv, 0, type);\n let principal = 0;\n\n if (start_period === 1) {\n principal = type === 0 ? payment + pv * rate : payment;\n\n start_period++;\n }\n\n for (let i = start_period; i <= end; i++) {\n principal +=\n type > 0\n ? payment - (FV(rate, i - 2, payment, pv, 1) - payment) * rate\n : payment - FV(rate, i - 1, payment, pv, 0) * rate;\n }\n\n // Return cumulative principal\n return principal\n}\n\n/**\n * Returns the depreciation of an asset for a specified period by using the fixed-declining balance method.\n *\n * Category: Financial\n *\n * @param {*} cost The initial cost of the asset.\n * @param {*} salvage The value at the end of the depreciation (sometimes called the salvage value of the asset).\n * @param {*} life The number of periods over which the asset is being depreciated (sometimes called the useful life of the asset).\n * @param {*} period The period for which you want to calculate the depreciation. Period must use the same units as life.\n * @param {*} month Optional. The number of months in the first year. If month is omitted, it is assumed to be 12.\n * @returns\n */\nfunction DB(cost, salvage, life, period, month) {\n // Initialize month\n month = month === undefined ? 12 : month;\n\n cost = parseNumber(cost);\n salvage = parseNumber(salvage);\n life = parseNumber(life);\n period = parseNumber(period);\n month = parseNumber(month);\n\n if (anyIsError(cost, salvage, life, period, month)) {\n return value\n }\n\n // Return error if any of the parameters is negative\n if (cost < 0 || salvage < 0 || life < 0 || period < 0) {\n return num\n }\n\n // Return error if month is not an integer between 1 and 12\n if ([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12].indexOf(month) === -1) {\n return num\n }\n\n // Return error if period is greater than life\n if (period > life) {\n return num\n }\n\n // Return 0 (zero) if salvage is greater than or equal to cost\n if (salvage >= cost) {\n return 0\n }\n\n // Rate is rounded to three decimals places\n const rate = (1 - Math.pow(salvage / cost, 1 / life)).toFixed(3);\n\n // Compute initial depreciation\n const initial = (cost * rate * month) / 12;\n\n // Compute total depreciation\n let total = initial;\n let current = 0;\n const ceiling = period === life ? life - 1 : period;\n\n for (let i = 2; i <= ceiling; i++) {\n current = (cost - total) * rate;\n total += current;\n }\n\n // Depreciation for the first and last periods are special cases\n if (period === 1) {\n // First period\n return initial\n } else if (period === life) {\n // Last period\n\n return (cost - total) * rate\n } else {\n return current\n }\n}\n\n/**\n * Returns the depreciation of an asset for a specified period by using the double-declining balance method or some other method that you specify.\n *\n * Category: Financial\n *\n * @param {*} cost The initial cost of the asset.\n * @param {*} salvage The value at the end of the depreciation (sometimes called the salvage value of the asset). This value can be 0.\n * @param {*} life The number of periods over which the asset is being depreciated (sometimes called the useful life of the asset).\n * @param {*} period The period for which you want to calculate the depreciation. Period must use the same units as life.\n * @param {*} factor Optional. The rate at which the balance declines. If factor is omitted, it is assumed to be 2 (the double-declining balance method).\n * @returns\n */\nfunction DDB(cost, salvage, life, period, factor) {\n // Initialize factor\n factor = factor === undefined ? 2 : factor;\n\n cost = parseNumber(cost);\n salvage = parseNumber(salvage);\n life = parseNumber(life);\n period = parseNumber(period);\n factor = parseNumber(factor);\n\n if (anyIsError(cost, salvage, life, period, factor)) {\n return value\n }\n\n // Return error if any of the parameters is negative or if factor is null\n if (cost < 0 || salvage < 0 || life < 0 || period < 0 || factor <= 0) {\n return num\n }\n\n // Return error if period is greater than life\n if (period > life) {\n return num\n }\n\n // Return 0 (zero) if salvage is greater than or equal to cost\n if (salvage >= cost) {\n return 0\n }\n\n // Compute depreciation\n let total = 0;\n let current = 0;\n\n for (let i = 1; i <= period; i++) {\n current = Math.min((cost - total) * (factor / life), cost - salvage - total);\n total += current;\n }\n\n // Return depreciation\n return current\n}\n\n/**\n * Returns the discount rate for a security.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} pr The security's price per $100 face value.\n * @param {*} redemption The security's redemption value per $100 face value.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction DISC(settlement, maturity, pr, redemption, basis) {\n settlement = parseDate(settlement);\n maturity = parseDate(maturity);\n pr = parseNumber(pr);\n redemption = parseNumber(redemption);\n basis = parseNumber(basis);\n\n basis = basis || 0;\n\n if (anyIsError(settlement, maturity, pr, redemption, basis)) {\n return value\n }\n\n if (pr <= 0 || redemption <= 0) {\n return num\n }\n\n if (settlement >= maturity) {\n return value\n }\n\n let basisVal, diff;\n switch (basis) {\n case 0:\n basisVal = 360;\n diff = DAYS360(settlement, maturity, false);\n break\n case 1:\n basisVal = 365;\n diff = DATEDIF(settlement, maturity, 'D');\n break\n case 2:\n basisVal = 360;\n diff = DATEDIF(settlement, maturity, 'D');\n break\n case 3:\n basisVal = 365;\n diff = DATEDIF(settlement, maturity, 'D');\n break\n case 4:\n basisVal = 360;\n diff = DAYS360(settlement, maturity, true);\n break\n default:\n return num\n }\n\n return (((redemption - pr) / redemption) * basisVal) / diff\n}\n\n/**\n * Converts a dollar price, expressed as a fraction, into a dollar price, expressed as a decimal number.\n *\n * Category: Financial\n *\n * @param {*} fractional_dollar A number expressed as an integer part and a fraction part, separated by a decimal symbol.\n * @param {*} fraction The integer to use in the denominator of the fraction.\n * @returns\n */\nfunction DOLLARDE(fractional_dollar, fraction) {\n // Credits: algorithm inspired by Apache OpenOffice\n fractional_dollar = parseNumber(fractional_dollar);\n fraction = parseNumber(fraction);\n\n if (anyIsError(fractional_dollar, fraction)) {\n return value\n }\n\n // Return error if fraction is negative\n if (fraction < 0) {\n return num\n }\n\n // Return error if fraction is greater than or equal to 0 and less than 1\n if (fraction >= 0 && fraction < 1) {\n return div0\n }\n\n // Truncate fraction if it is not an integer\n fraction = parseInt(fraction, 10);\n\n // Compute integer part\n let result = parseInt(fractional_dollar, 10);\n\n // Add decimal part\n result += ((fractional_dollar % 1) * Math.pow(10, Math.ceil(Math.log(fraction) / Math.LN10))) / fraction;\n\n // Round result\n const power = Math.pow(10, Math.ceil(Math.log(fraction) / Math.LN2) + 1);\n result = Math.round(result * power) / power;\n\n // Return converted dollar price\n return result\n}\n\n/**\n * Converts a dollar price, expressed as a decimal number, into a dollar price, expressed as a fraction.\n *\n * Category: Financial\n *\n * @param {*} decimal_dollar A decimal number.\n * @param {*} fraction The integer to use in the denominator of a fraction.\n * @returns\n */\nfunction DOLLARFR(decimal_dollar, fraction) {\n // Credits: algorithm inspired by Apache OpenOffice\n decimal_dollar = parseNumber(decimal_dollar);\n fraction = parseNumber(fraction);\n\n if (anyIsError(decimal_dollar, fraction)) {\n return value\n }\n\n // Return error if fraction is negative\n if (fraction < 0) {\n return num\n }\n\n // Return error if fraction is greater than or equal to 0 and less than 1\n if (fraction >= 0 && fraction < 1) {\n return div0\n }\n\n // Truncate fraction if it is not an integer\n fraction = parseInt(fraction, 10);\n\n // Compute integer part\n let result = parseInt(decimal_dollar, 10);\n\n // Add decimal part\n result += (decimal_dollar % 1) * Math.pow(10, -Math.ceil(Math.log(fraction) / Math.LN10)) * fraction;\n\n // Return converted dollar price\n return result\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the annual duration of a security with periodic interest payments.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} coupon The security's annual coupon rate.\n * @param {*} yld The security's annual yield.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction DURATION() {\n throw new Error('DURATION is not implemented')\n}\n\n/**\n * Returns the effective annual interest rate.\n *\n * Category: Financial\n *\n * @param {*} nominal_rate The nominal interest rate.\n * @param {*} npery The number of compounding periods per year.\n * @returns\n */\nfunction EFFECT(nominal_rate, npery) {\n nominal_rate = parseNumber(nominal_rate);\n npery = parseNumber(npery);\n\n if (anyIsError(nominal_rate, npery)) {\n return value\n }\n\n // Return error if rate <=0 or periods < 1\n if (nominal_rate <= 0 || npery < 1) {\n return num\n }\n\n // Truncate periods if it is not an integer\n npery = parseInt(npery, 10);\n\n // Return effective annual interest rate\n return Math.pow(1 + nominal_rate / npery, npery) - 1\n}\n\n/**\n * Returns the future value of an investment.\n *\n * Category: Financial\n *\n * @param {*} rate The interest rate per period.\n * @param {*} nper The total number of payment periods in an annuity.\n * @param {*} pmt The payment made each period; it cannot change over the life of the annuity. Typically, pmt contains principal and interest but no other fees or taxes. If pmt is omitted, you must include the pv argument.\n * @param {*} pv Optional. The present value, or the lump-sum amount that a series of future payments is worth right now. If pv is omitted, it is assumed to be 0 (zero), and you must include the pmt argument.\n * @param {*} type Optional. The number 0 or 1 and indicates when payments are due. If type is omitted, it is assumed to be 0.\n * @returns\n */\nfunction FV(rate, nper, payment, value$1, type) {\n // Credits: algorithm inspired by Apache OpenOffice\n value$1 = value$1 || 0;\n type = type || 0;\n\n rate = parseNumber(rate);\n nper = parseNumber(nper);\n payment = parseNumber(payment);\n value$1 = parseNumber(value$1);\n type = parseNumber(type);\n\n if (anyIsError(rate, nper, payment, value$1, type)) {\n return value\n }\n\n // Return future value\n let result;\n\n if (rate === 0) {\n result = value$1 + payment * nper;\n } else {\n const term = Math.pow(1 + rate, nper);\n\n result =\n type === 1\n ? value$1 * term + (payment * (1 + rate) * (term - 1)) / rate\n : value$1 * term + (payment * (term - 1)) / rate;\n }\n\n return -result\n}\n\n/**\n * Returns the future value of an initial principal after applying a series of compound interest rates.\n *\n * Category: Financial\n *\n * @param {*} principal The present value.\n * @param {*} schedule An array of interest rates to apply.\n * @returns\n */\nfunction FVSCHEDULE(principal, schedule) {\n principal = parseNumber(principal);\n schedule = parseNumberArray(flatten(schedule));\n\n if (anyIsError(principal, schedule)) {\n return value\n }\n\n const n = schedule.length;\n let future = principal;\n\n // Apply all interests in schedule\n\n for (let i = 0; i < n; i++) {\n // Apply scheduled interest\n future *= 1 + schedule[i];\n }\n\n // Return future value\n return future\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the interest rate for a fully invested security.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} investment The amount invested in the security.\n * @param {*} redemption The amount to be received at maturity.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction INTRATE() {\n throw new Error('INTRATE is not implemented')\n}\n\n/**\n * Returns the interest payment for an investment for a given period.\n *\n * Category: Financial\n *\n * @param {*} rate The interest rate per period.\n * @param {*} per The period for which you want to find the interest and must be in the range 1 to nper.\n * @param {*} nper The total number of payment periods in an annuity.\n * @param {*} pv The present value, or the lump-sum amount that a series of future payments is worth right now.\n * @param {*} fv Optional. The future value, or a cash balance you want to attain after the last payment is made. If fv is omitted, it is assumed to be 0 (the future value of a loan, for example, is 0).\n * @param {*} type Optional. The number 0 or 1 and indicates when payments are due. If type is omitted, it is assumed to be 0.\n * @returns\n */\nfunction IPMT(rate, per, nper, pv, fv, type) {\n // Credits: algorithm inspired by Apache OpenOffice\n fv = fv || 0;\n type = type || 0;\n\n rate = parseNumber(rate);\n per = parseNumber(per);\n nper = parseNumber(nper);\n pv = parseNumber(pv);\n fv = parseNumber(fv);\n type = parseNumber(type);\n\n if (anyIsError(rate, per, nper, pv, fv, type)) {\n return value\n }\n\n // Compute payment\n const payment = PMT(rate, nper, pv, fv, type);\n\n // Compute interest\n let interest =\n per === 1\n ? type === 1\n ? 0\n : -pv\n : type === 1\n ? FV(rate, per - 2, payment, pv, 1) - payment\n : FV(rate, per - 1, payment, pv, 0);\n\n // Return interest\n return interest * rate\n}\n\n/**\n * Returns the internal rate of return for a series of cash flows.\n *\n * Category: Financial\n *\n * @param {*} values An array or a reference to values that contain numbers for which you want to calculate the internal rate of return.\n - Values must contain at least one positive value and one negative value to calculate the internal rate of return.\n - IRR uses the order of values to interpret the order of cash flows. Be sure to enter your payment and income values in the sequence you want.\n - If an array or reference argument contains text, logical values, or empty values, those values are ignored.\n * @param {*} guess Optional. A number that you guess is close to the result of IRR.\n - Microsoft Excel uses an iterative technique for calculating IRR. Starting with guess, IRR cycles through the calculation until the result is accurate within 0.00001 percent. If IRR can't find a result that works after 20 tries, the #NUM! error value is returned.\n - In most cases you do not need to provide guess for the IRR calculation. If guess is omitted, it is assumed to be 0.1 (10 percent).\n - If IRR gives the #NUM! error value, or if the result is not close to what you expected, try again with a different value for guess.\n * @returns\n */\nfunction IRR(values, guess) {\n // Credits: algorithm inspired by Apache OpenOffice\n guess = guess || 0;\n\n values = parseNumberArray(flatten(values));\n guess = parseNumber(guess);\n\n if (anyIsError(values, guess)) {\n return value\n }\n\n // Calculates the resulting amount\n const irrResult = (values, dates, rate) => {\n const r = rate + 1;\n let result = values[0];\n\n for (let i = 1; i < values.length; i++) {\n result += values[i] / Math.pow(r, (dates[i] - dates[0]) / 365);\n }\n\n return result\n };\n\n // Calculates the first derivation\n const irrResultDeriv = (values, dates, rate) => {\n const r = rate + 1;\n let result = 0;\n\n for (let i = 1; i < values.length; i++) {\n const frac = (dates[i] - dates[0]) / 365;\n result -= (frac * values[i]) / Math.pow(r, frac + 1);\n }\n\n return result\n };\n\n // Initialize dates and check that values contains at least one positive value and one negative value\n const dates = [];\n let positive = false;\n let negative = false;\n\n for (let i = 0; i < values.length; i++) {\n dates[i] = i === 0 ? 0 : dates[i - 1] + 365;\n\n if (values[i] > 0) {\n positive = true;\n }\n\n if (values[i] < 0) {\n negative = true;\n }\n }\n\n // Return error if values does not contain at least one positive value and one negative value\n if (!positive || !negative) {\n return num\n }\n\n // Initialize guess and resultRate\n guess = guess === undefined ? 0.1 : guess;\n let resultRate = guess;\n\n // Set maximum epsilon for end of iteration\n const epsMax = 1e-10;\n\n // Implement Newton's method\n let newRate, epsRate, resultValue;\n let contLoop = true;\n do {\n resultValue = irrResult(values, dates, resultRate);\n newRate = resultRate - resultValue / irrResultDeriv(values, dates, resultRate);\n epsRate = Math.abs(newRate - resultRate);\n resultRate = newRate;\n contLoop = epsRate > epsMax && Math.abs(resultValue) > epsMax;\n } while (contLoop)\n\n // Return internal rate of return\n return resultRate\n}\n\n/**\n * Calculates the interest paid during a specific period of an investment.\n *\n * Category: Financial\n *\n * @param {*} rate The interest rate for the investment.\n * @param {*} per The period for which you want to find the interest, and must be between 1 and Nper.\n * @param {*} nper The total number of payment periods for the investment.\n * @param {*} pv The present value of the investment. For a loan, Pv is the loan amount.\n *\n * @returns\n */\nfunction ISPMT(rate, per, nper, pv) {\n rate = parseNumber(rate);\n per = parseNumber(per);\n nper = parseNumber(nper);\n pv = parseNumber(pv);\n\n if (anyIsError(rate, per, nper, pv)) {\n return value\n }\n\n // Return interest\n return pv * rate * (per / nper - 1)\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the Macauley modified duration for a security with an assumed par value of $100.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} coupon The security's annual coupon rate.\n * @param {*} yld The security's annual yield.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction MDURATION() {\n throw new Error('MDURATION is not implemented')\n}\n\n/**\n * Returns the internal rate of return where positive and negative cash flows are financed at different rates.\n *\n * Category: Financial\n *\n * @param {*} values An array or a reference to values that contain numbers. These numbers represent a series of payments (negative values) and income (positive values) occurring at regular periods.\n - Values must contain at least one positive value and one negative value to calculate the modified internal rate of return. Otherwise, MIRR returns the #DIV/0! error value.\n - If an array or reference argument contains text, logical values, or empty values, those values are ignored; however, values with the value zero are included.\n * @param {*} finance_rate The interest rate you pay on the money used in the cash flows.\n * @param {*} reinvest_rate The interest rate you receive on the cash flows as you reinvest them.\n * @returns\n */\nfunction MIRR(values, finance_rate, reinvest_rate) {\n values = parseNumberArray(flatten(values));\n finance_rate = parseNumber(finance_rate);\n reinvest_rate = parseNumber(reinvest_rate);\n\n if (anyIsError(values, finance_rate, reinvest_rate)) {\n return value\n }\n\n // Initialize number of values\n const n = values.length;\n\n // Lookup payments (negative values) and incomes (positive values)\n const payments = [];\n const incomes = [];\n\n for (let i = 0; i < n; i++) {\n if (values[i] < 0) {\n payments.push(values[i]);\n } else {\n incomes.push(values[i]);\n }\n }\n\n // Return modified internal rate of return\n const num = -NPV(reinvest_rate, incomes) * Math.pow(1 + reinvest_rate, n - 1);\n const den = NPV(finance_rate, payments) * (1 + finance_rate);\n\n return Math.pow(num / den, 1 / (n - 1)) - 1\n}\n\n/**\n * Returns the annual nominal interest rate.\n *\n * Category: Financial\n *\n * @param {*} effect_rate The effective interest rate.\n * @param {*} npery The number of compounding periods per year.\n * @returns\n */\nfunction NOMINAL(effect_rate, npery) {\n effect_rate = parseNumber(effect_rate);\n npery = parseNumber(npery);\n\n if (anyIsError(effect_rate, npery)) {\n return value\n }\n\n // Return error if rate <=0 or periods < 1\n if (effect_rate <= 0 || npery < 1) {\n return num\n }\n\n // Truncate periods if it is not an integer\n npery = parseInt(npery, 10);\n\n // Return nominal annual interest rate\n return (Math.pow(effect_rate + 1, 1 / npery) - 1) * npery\n}\n\n/**\n * Returns the number of periods for an investment.\n *\n * Category: Financial\n *\n * @param {*} rate The interest rate per period.\n * @param {*} pmt The payment made each period; it cannot change over the life of the annuity. Typically, pmt contains principal and interest but no other fees or taxes.\n * @param {*} pv The present value, or the lump-sum amount that a series of future payments is worth right now.\n * @param {*} fv Optional. The future value, or a cash balance you want to attain after the last payment is made. If fv is omitted, it is assumed to be 0 (the future value of a loan, for example, is 0).\n * @param {*} type Optional. The number 0 or 1 and indicates when payments are due.\n * @returns\n */\nfunction NPER(rate, pmt, pv, fv, type) {\n type = type === undefined ? 0 : type;\n fv = fv === undefined ? 0 : fv;\n\n rate = parseNumber(rate);\n pmt = parseNumber(pmt);\n pv = parseNumber(pv);\n fv = parseNumber(fv);\n type = parseNumber(type);\n\n if (anyIsError(rate, pmt, pv, fv, type)) {\n return value\n }\n\n if (rate === 0) {\n return -(pv + fv) / pmt\n } else {\n const num = pmt * (1 + rate * type) - fv * rate;\n const den = pv * rate + pmt * (1 + rate * type);\n\n return Math.log(num / den) / Math.log(1 + rate)\n }\n}\n\n/**\n * Returns the net present value of an investment based on a series of periodic cash flows and a discount rate.\n *\n * Category: Financial\n *\n * @param {*} rate The rate of discount over the length of one period.\n * @param {*} args value1, value2, ... Value1 is required, subsequent values are optional. 1 to 254 arguments representing the payments and income.\n - value1, value2, ... must be equally spaced in time and occur at the end of each period.\n - NPV uses the order of value1, value2, ... to interpret the order of cash flows. Be sure to enter your payment and income values in the correct sequence.\n - Arguments that are empty values, logical values, or text representations of numbers, error values, or text that cannot be translated into numbers are ignored.\n - If an argument is an array or reference, only numbers in that array or reference are counted. Empty values, logical values, text, or error values in the array or reference are ignored.\n * @returns\n */\nfunction NPV() {\n const args = parseNumberArray(flatten(arguments));\n\n if (args instanceof Error) {\n return args\n }\n\n // Lookup rate\n const rate = args[0];\n\n // Initialize net present value\n let value = 0;\n\n // Loop on all values\n for (let j = 1; j < args.length; j++) {\n value += args[j] / Math.pow(1 + rate, j);\n }\n\n // Return net present value\n return value\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the price per $100 face value of a security with an odd first period.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} issue The security's issue date.\n * @param {*} first_coupon The security's first coupon date.\n * @param {*} rate The security's interest rate.\n * @param {*} yld The security's annual yield.\n * @param {*} redemption The security's redemption value per $100 face value.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction ODDFPRICE() {\n throw new Error('ODDFPRICE is not implemented')\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the yield of a security with an odd first period.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} issue The security's issue date.\n * @param {*} first_coupon The security's first coupon date.\n * @param {*} rate The security's interest rate.\n * @param {*} pr The security's price.\n * @param {*} redemption The security's redemption value per $100 face value.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction ODDFYIELD() {\n throw new Error('ODDFYIELD is not implemented')\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the price per $100 face value of a security with an odd last period.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} last_interest The security's last coupon date.\n * @param {*} rate The security's interest rate.\n * @param {*} yld The security's annual yield.\n * @param {*} redemption The security's redemption value per $100 face value.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction ODDLPRICE() {\n throw new Error('ODDLPRICE is not implemented')\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the yield of a security with an odd last period.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} last_interest The security's last coupon date.\n * @param {*} rate The security's interest rate\n * @param {*} pr The security's price.\n * @param {*} redemption The security's redemption value per $100 face value.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction ODDLYIELD() {\n throw new Error('ODDLYIELD is not implemented')\n}\n\n/**\n * Returns the number of periods required by an investment to reach a specified value.\n *\n * Category: Financial\n *\n * @param {*} rate Rate is the interest rate per period.\n * @param {*} pv Pv is the present value of the investment.\n * @param {*} fv Fv is the desired future value of the investment.\n * @returns\n */\nfunction PDURATION(rate, pv, fv) {\n rate = parseNumber(rate);\n pv = parseNumber(pv);\n fv = parseNumber(fv);\n\n if (anyIsError(rate, pv, fv)) {\n return value\n }\n\n // Return error if rate <=0\n if (rate <= 0) {\n return num\n }\n\n // Return number of periods\n return (Math.log(fv) - Math.log(pv)) / Math.log(1 + rate)\n}\n\n/**\n * Returns the periodic payment for an annuity.\n *\n * Category: Financial\n *\n * @param {*} rate The interest rate for the loan.\n * @param {*} nper The total number of payments for the loan.\n * @param {*} pv The present value, or the total amount that a series of future payments is worth now; also known as the principal.\n * @param {*} fv Optional. The future value, or a cash balance you want to attain after the last payment is made. If fv is omitted, it is assumed to be 0 (zero), that is, the future value of a loan is 0.\n * @param {*} type Optional. The number 0 (zero) or 1 and indicates when payments are due.\n * @returns\n */\nfunction PMT(rate, nper, pv, fv, type) {\n // Credits: algorithm inspired by Apache OpenOffice\n fv = fv || 0;\n type = type || 0;\n\n rate = parseNumber(rate);\n nper = parseNumber(nper);\n pv = parseNumber(pv);\n fv = parseNumber(fv);\n type = parseNumber(type);\n\n if (anyIsError(rate, nper, pv, fv, type)) {\n return value\n }\n\n // Return payment\n let result;\n\n if (rate === 0) {\n result = (pv + fv) / nper;\n } else {\n const term = Math.pow(1 + rate, nper);\n\n result =\n type === 1\n ? ((fv * rate) / (term - 1) + (pv * rate) / (1 - 1 / term)) / (1 + rate)\n : (fv * rate) / (term - 1) + (pv * rate) / (1 - 1 / term);\n }\n\n return -result\n}\n\n/**\n * Returns the payment on the principal for an investment for a given period.\n *\n * Category: Financial\n *\n * @param {*} rate The interest rate per period.\n * @param {*} per Specifies the period and must be in the range 1 to nper.\n * @param {*} nper The total number of payment periods in an annuity.\n * @param {*} pv The present value \u2014 the total amount that a series of future payments is worth now.\n * @param {*} fv Optional. The future value, or a cash balance you want to attain after the last payment is made. If fv is omitted, it is assumed to be 0 (zero), that is, the future value of a loan is 0.\n * @param {*} type Optional. The number 0 or 1 and indicates when payments are due.\n * @returns\n */\nfunction PPMT(rate, per, nper, pv, fv, type) {\n fv = fv || 0;\n type = type || 0;\n\n rate = parseNumber(rate);\n nper = parseNumber(nper);\n pv = parseNumber(pv);\n fv = parseNumber(fv);\n type = parseNumber(type);\n\n if (anyIsError(rate, nper, pv, fv, type)) {\n return value\n }\n\n return PMT(rate, nper, pv, fv, type) - IPMT(rate, per, nper, pv, fv, type)\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the price per $100 face value of a security that pays periodic interest.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} rate The security's annual coupon rate.\n * @param {*} yld The security's annual yield.\n * @param {*} redemption The security's redemption value per $100 face value.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction PRICE() {\n throw new Error('PRICE is not implemented')\n}\n\n/**\n * Returns the price per $100 face value of a discounted security.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} discount The security's discount rate.\n * @param {*} redemption The security's redemption value per $100 face value.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction PRICEDISC(settlement, maturity, discount, redemption, basis) {\n settlement = parseDate(settlement);\n maturity = parseDate(maturity);\n discount = parseNumber(discount);\n redemption = parseNumber(redemption);\n basis = parseNumber(basis);\n\n basis = basis || 0;\n\n if (anyIsError(settlement, maturity, discount, redemption, basis)) {\n return value\n }\n\n if (discount <= 0 || redemption <= 0) {\n return num\n }\n\n if (settlement >= maturity) {\n return value\n }\n\n let basisVal, diff;\n switch (basis) {\n case 0:\n basisVal = 360;\n diff = DAYS360(settlement, maturity, false);\n break\n case 1:\n basisVal = 365;\n diff = DATEDIF(settlement, maturity, 'D');\n break\n case 2:\n basisVal = 360;\n diff = DATEDIF(settlement, maturity, 'D');\n break\n case 3:\n basisVal = 365;\n diff = DATEDIF(settlement, maturity, 'D');\n break\n case 4:\n basisVal = 360;\n diff = DAYS360(settlement, maturity, true);\n break\n default:\n return num\n }\n\n return redemption - (discount * redemption * diff) / basisVal\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the price per $100 face value of a security that pays interest at maturity.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} issue The security's issue date, expressed as a serial date number.\n * @param {*} rate The security's interest rate at date of issue.\n * @param {*} yld The security's annual yield.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction PRICEMAT() {\n throw new Error('PRICEMAT is not implemented')\n}\n\n/**\n * Returns the present value of an investment.\n *\n * Category: Financial\n *\n * @param {*} rate The interest rate per period. For example, if you obtain an automobile loan at a 10 percent annual interest rate and make monthly payments, your interest rate per month is 10%/12, or 0.83%. You would enter 10%/12, or 0.83%, or 0.0083, into the formula as the rate.\n * @param {*} nper The total number of payment periods in an annuity. For example, if you get a four-year car loan and make monthly payments, your loan has 4*12 (or 48) periods. You would enter 48 into the formula for nper.\n * @param {*} pmt The payment made each period and cannot change over the life of the annuity. Typically, pmt includes principal and interest but no other fees or taxes. For example, the monthly payments on a $10,000, four-year car loan at 12 percent are $263.33. You would enter -263.33 into the formula as the pmt. If pmt is omitted, you must include the fv argument.\n * @param {*} fv Optional. The future value, or a cash balance you want to attain after the last payment is made. If fv is omitted, it is assumed to be 0 (the future value of a loan, for example, is 0). For example, if you want to save $50,000 to pay for a special project in 18 years, then $50,000 is the future value. You could then make a conservative guess at an interest rate and determine how much you must save each month. If fv is omitted, you must include the pmt argument.\n * @param {*} type Optional. The number 0 or 1 and indicates when payments are due.\n * @returns\n */\nfunction PV(rate, per, pmt, fv, type) {\n fv = fv || 0;\n type = type || 0;\n\n rate = parseNumber(rate);\n per = parseNumber(per);\n pmt = parseNumber(pmt);\n fv = parseNumber(fv);\n type = parseNumber(type);\n\n if (anyIsError(rate, per, pmt, fv, type)) {\n return value\n }\n\n // Return present value\n return rate === 0\n ? -pmt * per - fv\n : (((1 - Math.pow(1 + rate, per)) / rate) * pmt * (1 + rate * type) - fv) / Math.pow(1 + rate, per)\n}\n\n/**\n * Returns the interest rate per period of an annuity.\n *\n * Category: Financial\n *\n * @param {*} nper The total number of payment periods in an annuity.\n * @param {*} pmt The payment made each period and cannot change over the life of the annuity. Typically, pmt includes principal and interest but no other fees or taxes. If pmt is omitted, you must include the fv argument.\n * @param {*} pv The present value \u2014 the total amount that a series of future payments is worth now.\n * @param {*} fv Optional. The future value, or a cash balance you want to attain after the last payment is made. If fv is omitted, it is assumed to be 0 (the future value of a loan, for example, is 0). If fv is omitted, you must include the pmt argument.\n * @param {*} type Optional. The number 0 or 1 and indicates when payments are due.\n * @param {*} guess Optional. Your guess for what the rate will be. If you omit guess, it is assumed to be 10 percent. If RATE does not converge, try different values for guess. RATE usually converges if guess is between 0 and 1.\n - If you omit guess, it is assumed to be 10 percent.\n - If RATE does not converge, try different values for guess. RATE usually converges if guess is between 0 and 1.\n * @returns\n */\nfunction RATE(nper, pmt, pv, fv, type, guess) {\n guess = guess === undefined ? 0.1 : guess;\n fv = fv === undefined ? 0 : fv;\n type = type === undefined ? 0 : type;\n\n nper = parseNumber(nper);\n pmt = parseNumber(pmt);\n pv = parseNumber(pv);\n fv = parseNumber(fv);\n type = parseNumber(type);\n guess = parseNumber(guess);\n\n if (anyIsError(nper, pmt, pv, fv, type, guess)) {\n return value\n }\n\n const epsMax = 1e-10;\n const iterMax = 100;\n let rate = guess;\n\n type = type ? 1 : 0;\n\n for (let i = 0; i < iterMax; i++) {\n if (rate <= -1) {\n return num\n }\n\n let y, f;\n\n if (Math.abs(rate) < epsMax) {\n y = pv * (1 + nper * rate) + pmt * (1 + rate * type) * nper + fv;\n } else {\n f = Math.pow(1 + rate, nper);\n y = pv * f + pmt * (1 / rate + type) * (f - 1) + fv;\n }\n\n if (Math.abs(y) < epsMax) {\n return rate\n }\n\n let dy;\n\n if (Math.abs(rate) < epsMax) {\n dy = pv * nper + pmt * type * nper;\n } else {\n f = Math.pow(1 + rate, nper);\n const df = nper * Math.pow(1 + rate, nper - 1);\n dy = pv * df + pmt * (1 / rate + type) * df + pmt * (-1 / (rate * rate)) * (f - 1);\n }\n\n rate -= y / dy;\n }\n\n return rate\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the amount received at maturity for a fully invested security.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} investment The amount invested in the security.\n * @param {*} discount The security's discount rate.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction RECEIVED() {\n throw new Error('RECEIVED is not implemented')\n}\n\n/**\n * Returns an equivalent interest rate for the growth of an investment.\n *\n * Category: Financial\n *\n * @param {*} nper Nper is the number of periods for the investment.\n * @param {*} pv Pv is the present value of the investment.\n * @param {*} fv Fv is the future value of the investment.\n * @returns\n */\nfunction RRI(nper, pv, fv) {\n nper = parseNumber(nper);\n pv = parseNumber(pv);\n fv = parseNumber(fv);\n\n if (anyIsError(nper, pv, fv)) {\n return value\n }\n\n // Return error if nper or present is equal to 0 (zero)\n if (nper === 0 || pv === 0) {\n return num\n }\n\n // Return equivalent interest rate\n return Math.pow(fv / pv, 1 / nper) - 1\n}\n\n/**\n * Returns the straight-line depreciation of an asset for one period.\n *\n * Category: Financial\n *\n * @param {*} cost The initial cost of the asset.\n * @param {*} salvage The value at the end of the depreciation (sometimes called the salvage value of the asset).\n * @param {*} life The number of periods over which the asset is depreciated (sometimes called the useful life of the asset).\n * @returns\n */\nfunction SLN(cost, salvage, life) {\n cost = parseNumber(cost);\n salvage = parseNumber(salvage);\n life = parseNumber(life);\n\n if (anyIsError(cost, salvage, life)) {\n return value\n }\n\n // Return error if life equal to 0 (zero)\n if (life === 0) {\n return num\n }\n\n // Return straight-line depreciation\n return (cost - salvage) / life\n}\n\n/**\n * Returns the sum-of-years' digits depreciation of an asset for a specified period.\n *\n * Category: Financial\n *\n * @param {*} cost The initial cost of the asset.\n * @param {*} salvage The value at the end of the depreciation (sometimes called the salvage value of the asset).\n * @param {*} life The number of periods over which the asset is depreciated (sometimes called the useful life of the asset).\n * @param {*} per The period and must use the same units as life.\n * @returns\n */\nfunction SYD(cost, salvage, life, per) {\n // Return error if any of the parameters is not a number\n cost = parseNumber(cost);\n salvage = parseNumber(salvage);\n life = parseNumber(life);\n per = parseNumber(per);\n\n if (anyIsError(cost, salvage, life, per)) {\n return value\n }\n\n // Return error if life equal to 0 (zero)\n if (life === 0) {\n return num\n }\n\n // Return error if period is lower than 1 or greater than life\n if (per < 1 || per > life) {\n return num\n }\n\n // Truncate period if it is not an integer\n per = parseInt(per, 10);\n\n // Return straight-line depreciation\n return ((cost - salvage) * (life - per + 1) * 2) / (life * (life + 1))\n}\n\n/**\n * Returns the bond-equivalent yield for a Treasury bill.\n *\n * Category: Financial\n *\n * @param {*} settlement The Treasury bill's settlement date. The security settlement date is the date after the issue date when the Treasury bill is traded to the buyer.\n * @param {*} maturity The Treasury bill's maturity date. The maturity date is the date when the Treasury bill expires.\n * @param {*} discount The Treasury bill's discount rate.\n * @returns\n */\nfunction TBILLEQ(settlement, maturity, discount) {\n settlement = parseDate(settlement);\n maturity = parseDate(maturity);\n discount = parseNumber(discount);\n\n if (anyIsError(settlement, maturity, discount)) {\n return value\n }\n\n // Return error if discount is lower than or equal to zero\n if (discount <= 0) {\n return num\n }\n\n // Return error if settlement is greater than maturity\n if (settlement > maturity) {\n return num\n }\n\n // Return error if maturity is more than one year after settlement\n if (maturity - settlement > 365 * 24 * 60 * 60 * 1000) {\n return num\n }\n\n // Return bond-equivalent yield\n return (365 * discount) / (360 - discount * DAYS360(settlement, maturity, false))\n}\n\n/**\n * Returns the price per $100 face value for a Treasury bill.\n *\n * Category: Financial\n *\n * @param {*} settlement The Treasury bill's settlement date. The security settlement date is the date after the issue date when the Treasury bill is traded to the buyer.\n * @param {*} maturity The Treasury bill's maturity date. The maturity date is the date when the Treasury bill expires.\n * @param {*} discount The Treasury bill's discount rate.\n * @returns\n */\nfunction TBILLPRICE(settlement, maturity, discount) {\n settlement = parseDate(settlement);\n maturity = parseDate(maturity);\n discount = parseNumber(discount);\n\n if (anyIsError(settlement, maturity, discount)) {\n return value\n }\n\n // Return error if discount is lower than or equal to zero\n if (discount <= 0) {\n return num\n }\n\n // Return error if settlement is greater than maturity\n if (settlement > maturity) {\n return num\n }\n\n // Return error if maturity is more than one year after settlement\n if (maturity - settlement > 365 * 24 * 60 * 60 * 1000) {\n return num\n }\n\n // Return bond-equivalent yield\n return 100 * (1 - (discount * DAYS360(settlement, maturity, false)) / 360)\n}\n\n/**\n * Returns the yield for a Treasury bill.\n *\n * Category: Financial\n *\n * @param {*} settlement The Treasury bill's settlement date. The security settlement date is the date after the issue date when the Treasury bill is traded to the buyer.\n * @param {*} maturity The Treasury bill's maturity date. The maturity date is the date when the Treasury bill expires.\n * @param {*} pr The Treasury bill's price per $100 face value.\n * @returns\n */\nfunction TBILLYIELD(settlement, maturity, pr) {\n settlement = parseDate(settlement);\n maturity = parseDate(maturity);\n pr = parseNumber(pr);\n\n if (anyIsError(settlement, maturity, pr)) {\n return value\n }\n\n // Return error if price is lower than or equal to zero\n if (pr <= 0) {\n return num\n }\n\n // Return error if settlement is greater than maturity\n if (settlement > maturity) {\n return num\n }\n\n // Return error if maturity is more than one year after settlement\n if (maturity - settlement > 365 * 24 * 60 * 60 * 1000) {\n return num\n }\n\n // Return bond-equivalent yield\n return ((100 - pr) * 360) / (pr * DAYS360(settlement, maturity, false))\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the depreciation of an asset for a specified or partial period by using a declining balance method.\n *\n * Category: Financial\n *\n * @param {*} cost The initial cost of the asset.\n * @param {*} salvage The value at the end of the depreciation (sometimes called the salvage value of the asset). This value can be 0.\n * @param {*} life The number of periods over which the asset is depreciated (sometimes called the useful life of the asset).\n * @param {*} start_period The starting period for which you want to calculate the depreciation. Start_period must use the same units as life.\n * @param {*} end_period The ending period for which you want to calculate the depreciation. End_period must use the same units as life.\n * @param {*} factor Optional. The rate at which the balance declines. If factor is omitted, it is assumed to be 2 (the double-declining balance method). Change factor if you do not want to use the double-declining balance method. For a description of the double-declining balance method, see DDB.\n * @param {*} no_switch Optional. A logical value specifying whether to switch to straight-line depreciation when depreciation is greater than the declining balance calculation.\n - If no_switch is TRUE, Microsoft Excel does not switch to straight-line depreciation even when the depreciation is greater than the declining balance calculation.\n - If no_switch is FALSE or omitted, Excel switches to straight-line depreciation when depreciation is greater than the declining balance calculation.\n * @returns\n */\nfunction VDB() {\n throw new Error('VDB is not implemented')\n}\n\n/**\n * Returns the internal rate of return for a schedule of cash flows that is not necessarily periodic.\n *\n * Category: Financial\n *\n * @param {*} values A series of cash flows that corresponds to a schedule of payments in dates. The first payment is optional and corresponds to a cost or payment that occurs at the beginning of the investment. If the first value is a cost or payment, it must be a negative value. All succeeding payments are discounted based on a 365-day year. The series of values must contain at least one positive and one negative value.\n * @param {*} dates A schedule of payment dates that corresponds to the cash flow payments. Dates may occur in any order. Dates should be entered by using the DATE function, or as results of other formulas or functions. For example, use DATE(2008,5,23) for the 23rd day of May, 2008. Problems can occur if dates are entered as text. .\n * @param {*} guess Optional. A number that you guess is close to the result of XIRR.\n * @returns\n */\nfunction XIRR(values, dates, guess) {\n // Credits: algorithm inspired by Apache OpenOffice\n values = parseNumberArray(flatten(values));\n dates = parseDateArray(flatten(dates));\n guess = parseNumber(guess);\n\n if (anyIsError(values, dates, guess)) {\n return value\n }\n\n // Calculates the resulting amount\n const irrResult = (values, dates, rate) => {\n const r = rate + 1;\n let result = values[0];\n\n for (let i = 1; i < values.length; i++) {\n result += values[i] / Math.pow(r, DAYS(dates[i], dates[0]) / 365);\n }\n\n return result\n };\n\n // Calculates the first derivation\n const irrResultDeriv = (values, dates, rate) => {\n const r = rate + 1;\n let result = 0;\n\n for (let i = 1; i < values.length; i++) {\n const frac = DAYS(dates[i], dates[0]) / 365;\n result -= (frac * values[i]) / Math.pow(r, frac + 1);\n }\n\n return result\n };\n\n // Check that values contains at least one positive value and one negative value\n let positive = false;\n let negative = false;\n\n for (let i = 0; i < values.length; i++) {\n if (values[i] > 0) {\n positive = true;\n }\n\n if (values[i] < 0) {\n negative = true;\n }\n }\n\n // Return error if values does not contain at least one positive value and one negative value\n if (!positive || !negative) {\n return num\n }\n\n // Initialize guess and resultRate\n guess = guess || 0.1;\n let resultRate = guess;\n\n // Set maximum epsilon for end of iteration\n const epsMax = 1e-10;\n\n // Implement Newton's method\n let newRate, epsRate, resultValue;\n let contLoop = true;\n\n do {\n resultValue = irrResult(values, dates, resultRate);\n newRate = resultRate - resultValue / irrResultDeriv(values, dates, resultRate);\n epsRate = Math.abs(newRate - resultRate);\n resultRate = newRate;\n contLoop = epsRate > epsMax && Math.abs(resultValue) > epsMax;\n } while (contLoop)\n\n // Return internal rate of return\n return resultRate\n}\n\n/**\n * Returns the net present value for a schedule of cash flows that is not necessarily periodic.\n *\n * Category: Financial\n *\n * @param {*} rate The discount rate to apply to the cash flows.\n * @param {*} values A series of cash flows that corresponds to a schedule of payments in dates. The first payment is optional and corresponds to a cost or payment that occurs at the beginning of the investment. If the first value is a cost or payment, it must be a negative value. All succeeding payments are discounted based on a 365-day year. The series of values must contain at least one positive value and one negative value.\n * @param {*} dates A schedule of payment dates that corresponds to the cash flow payments. The first payment date indicates the beginning of the schedule of payments. All other dates must be later than this date, but they may occur in any order.\n * @returns\n */\nfunction XNPV(rate, values, dates) {\n rate = parseNumber(rate);\n values = parseNumberArray(flatten(values));\n dates = parseDateArray(flatten(dates));\n\n if (anyIsError(rate, values, dates)) {\n return value\n }\n\n let result = 0;\n\n for (let i = 0; i < values.length; i++) {\n result += values[i] / Math.pow(1 + rate, DAYS(dates[i], dates[0]) / 365);\n }\n\n return result\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the yield on a security that pays periodic interest.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} rate The security's annual coupon rate.\n * @param {*} pr The security's price per $100 face value.\n * @param {*} redemption The security's redemption value per $100 face value.\n * @param {*} frequency The number of coupon payments per year. For annual payments, frequency = 1; for semiannual, frequency = 2; for quarterly, frequency = 4.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction YIELD() {\n throw new Error('YIELD is not implemented')\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the annual yield for a discounted security; for example, a Treasury bill.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} pr The security's price per $100 face value.\n * @param {*} redemption The security's redemption value per $100 face value.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction YIELDDISC() {\n throw new Error('YIELDDISC is not implemented')\n}\n\n// TODO\n/**\n * -- Not implemented --\n *\n * Returns the annual yield of a security that pays interest at maturity.\n *\n * Category: Financial\n *\n * @param {*} settlement The security's settlement date. The security settlement date is the date after the issue date when the security is traded to the buyer.\n * @param {*} maturity The security's maturity date. The maturity date is the date when the security expires.\n * @param {*} issue The security's issue date, expressed as a serial date number.\n * @param {*} rate The security's interest rate at date of issue.\n * @param {*} pr The security's price per $100 face value.\n * @param {*} basis Optional. The type of day count basis to use.\n * @returns\n */\nfunction YIELDMAT() {\n throw new Error('YIELDMAT is not implemented')\n}\n\n/**\n * Returns TRUE if all of its arguments are TRUE.\n *\n * Category: Logical\n *\n * @returns\n */\nfunction AND() {\n const args = flatten(arguments);\n let result = value;\n\n for (let i = 0; i < args.length; i++) {\n if (args[i] instanceof Error) {\n return args[i]\n }\n\n if (args[i] === undefined || args[i] === null || typeof args[i] === 'string') {\n continue\n }\n\n if (result === value) {\n result = true;\n }\n\n if (!args[i]) {\n result = false;\n }\n }\n\n return result\n}\n\n/**\n * Returns the logical value FALSE.\n *\n * Category: Logical\n *\n * @returns\n */\nfunction FALSE() {\n return false\n}\n\n/**\n * Specifies a logical test to perform.\n *\n * Category: Logical\n *\n * @param {*} logical_test\n * @param {*} value_if_true\n * @param {*} value_if_false\n *\n * @returns\n */\nfunction IF(logical_test, value_if_true, value_if_false) {\n if (logical_test instanceof Error) {\n return logical_test\n }\n\n value_if_true = arguments.length >= 2 ? value_if_true : true;\n\n if (value_if_true === undefined || value_if_true === null) {\n value_if_true = 0;\n }\n\n value_if_false = arguments.length === 3 ? value_if_false : false;\n\n if (value_if_false === undefined || value_if_false === null) {\n value_if_false = 0;\n }\n\n return logical_test ? value_if_true : value_if_false\n}\n\n/**\n * Checks whether one or more conditions are met and returns a value that corresponds to the first TRUE condition.\n *\n * Category: Logical\n *\n * @returns\n */\nfunction IFS() {\n for (let i = 0; i < arguments.length / 2; i++) {\n if (arguments[i * 2]) {\n return arguments[i * 2 + 1]\n }\n }\n\n return na\n}\n\n/**\n * Returns a value you specify if a formula evaluates to an error; otherwise, returns the result of the formula.\n *\n * Category: Logical\n *\n * @param {*} value The argument that is checked for an error.\n * @param {*} value_if_error The value to return if the formula evaluates to an error. The following error types are evaluated: #N/A, #VALUE!, #REF!, #DIV/0!, #NUM!, #NAME?, or #NULL!.\n * @returns\n */\nfunction IFERROR(value, value_if_error) {\n if (ISERROR(value)) {\n return value_if_error\n }\n\n return value\n}\n\n/**\n * Returns the value you specify if the expression resolves to #N/A, otherwise returns the result of the expression.\n *\n * Category: Logical\n *\n * @returns\n */\nfunction IFNA(value, value_if_na) {\n return value === na ? value_if_na : value\n}\n\n/**\n * Reverses the logic of its argument.\n *\n * Category: Logical\n *\n * @returns\n */\nfunction NOT(logical) {\n if (typeof logical === 'string') {\n return value\n }\n\n if (logical instanceof Error) {\n return logical\n }\n\n return !logical\n}\n\n/**\n * Returns TRUE if any argument is TRUE.\n *\n * Category: Logical\n *\n * @returns\n */\nfunction OR() {\n const args = flatten(arguments);\n let result = value;\n\n for (let i = 0; i < args.length; i++) {\n if (args[i] instanceof Error) {\n return args[i]\n }\n\n if (args[i] === undefined || args[i] === null || typeof args[i] === 'string') {\n continue\n }\n\n if (result === value) {\n result = false;\n }\n\n if (args[i]) {\n result = true;\n }\n }\n\n return result\n}\n\n/**\n * Returns the logical value TRUE.\n *\n * Category: Logical\n *\n * @returns\n */\nfunction TRUE() {\n return true\n}\n\n/**\n * Returns a logical exclusive OR of all arguments.\n *\n * Category: Logical\n *\n * @param {*} args logical1, logical2,\u2026 Logical 1 is required, subsequent logical values are optional. 1 to 254 conditions you want to test that can be either TRUE or FALSE, and can be logical values, arrays, or references.\n * @returns\n */\nfunction XOR() {\n const args = flatten(arguments);\n let result = value;\n\n for (let i = 0; i < args.length; i++) {\n if (args[i] instanceof Error) {\n return args[i]\n }\n\n if (args[i] === undefined || args[i] === null || typeof args[i] === 'string') {\n continue\n }\n\n if (result === value) {\n result = 0;\n }\n\n if (args[i]) {\n result++;\n }\n }\n\n if (result === value) {\n return result\n }\n\n return !!(Math.floor(Math.abs(result)) & 1)\n}\n\n/**\n * Evaluates an expression against a list of values and returns the result corresponding to the first matching value. If there is no match, an optional default value may be returned.\n *\n * Category: Logical\n *\n * @returns\n */\nfunction SWITCH() {\n let result;\n\n if (arguments.length > 0) {\n const targetValue = arguments[0];\n const argc = arguments.length - 1;\n const switchCount = Math.floor(argc / 2);\n let switchSatisfied = false;\n const hasDefaultClause = argc % 2 !== 0;\n const defaultClause = argc % 2 === 0 ? null : arguments[arguments.length - 1];\n\n if (switchCount) {\n for (let index = 0; index < switchCount; index++) {\n if (targetValue === arguments[index * 2 + 1]) {\n result = arguments[index * 2 + 2];\n switchSatisfied = true;\n break\n }\n }\n }\n\n if (!switchSatisfied) {\n result = hasDefaultClause ? defaultClause : na;\n }\n } else {\n result = value;\n }\n\n return result\n}\n\nconst utils = { errors, symbols };\n\nexport { ABS, ACCRINT, ACCRINTM, ACOS, ACOSH, ACOT, ACOTH, AGGREGATE, AMORDEGRC, AMORLINC, AND, ARABIC, ASC, ASIN, ASINH, ATAN, ATAN2, ATANH, AVEDEV, AVERAGE, AVERAGEA, AVERAGEIF, AVERAGEIFS, BAHTTEXT, BASE, BESSELI, BESSELJ, BESSELK, BESSELY, BETA, BETADIST, BETAINV, BIN2DEC, BIN2HEX, BIN2OCT, BINOM, BINOMDIST, BITAND, BITLSHIFT, BITOR, BITRSHIFT, BITXOR, CEILING, CEILINGMATH, CEILINGPRECISE, CELL, CHAR, CHIDIST, CHIDISTRT, CHIINV, CHIINVRT, CHISQ, CHITEST, CHOOSE, CLEAN, CODE, COLUMN, COLUMNS, COMBIN, COMBINA, COMPLEX, CONCAT, CONCATENATE, CONFIDENCE, CONVERT, CORREL, COS, COSH, COT, COTH, COUNT, COUNTA, COUNTBLANK, COUNTIF, COUNTIFS, COUPDAYBS, COUPDAYS, COUPDAYSNC, COUPNCD, COUPNUM, COUPPCD, COVAR, COVARIANCE, COVARIANCEP, COVARIANCES, CRITBINOM, CSC, CSCH, CUMIPMT, CUMPRINC, DATE, DATEDIF, DATEVALUE, DAVERAGE, DAY, DAYS, DAYS360, DB, DBCS, DCOUNT, DCOUNTA, DDB, DEC2BIN, DEC2HEX, DEC2OCT, DECIMAL, DEGREES, DELTA, DEVSQ, DGET, DISC, DMAX, DMIN, DOLLAR, DOLLARDE, DOLLARFR, DPRODUCT, DSTDEV, DSTDEVP, DSUM, DURATION, DVAR, DVARP, EDATE, EFFECT, EOMONTH, ERF, ERFC, ERFCPRECISE, ERFPRECISE, ERROR, EVEN, EXACT, EXP, EXPON, EXPONDIST, F, FACT, FACTDOUBLE, FALSE, FDIST, FDISTRT, FIND, FINV, FINVRT, FISHER, FISHERINV, FIXED, FLOOR, FLOORMATH, FLOORPRECISE, FORECAST, FREQUENCY, FTEST, FV, FVSCHEDULE, GAMMA, GAMMADIST, GAMMAINV, GAMMALN, GAMMALNPRECISE, GAUSS, GCD, GEOMEAN, GESTEP, GROWTH, HARMEAN, HEX2BIN, HEX2DEC, HEX2OCT, HLOOKUP, HOUR, HYPGEOM, HYPGEOMDIST, IF, IFERROR, IFNA, IFS, IMABS, IMAGINARY, IMARGUMENT, IMCONJUGATE, IMCOS, IMCOSH, IMCOT, IMCSC, IMCSCH, IMDIV, IMEXP, IMLN, IMLOG10, IMLOG2, IMPOWER, IMPRODUCT, IMREAL, IMSEC, IMSECH, IMSIN, IMSINH, IMSQRT, IMSUB, IMSUM, IMTAN, INDEX, INFO, INT, INTERCEPT, INTRATE, IPMT, IRR, ISBLANK, ISERR, ISERROR, ISEVEN, ISFORMULA, ISLOGICAL, ISNA, ISNONTEXT, ISNUMBER, ISO, ISODD, ISOWEEKNUM, ISPMT, ISREF, ISTEXT, KURT, LARGE, LCM, LEFT, LEN, LINEST, LN, LOG, LOG10, LOGEST, LOGINV, LOGNORM, LOGNORMDIST, LOGNORMINV, LOOKUP, LOWER, MATCH, MAX, MAXA, MAXIFS, MDURATION, MEDIAN, MID, MIN, MINA, MINIFS, MINUTE, MIRR, MMULT, MOD, MODE, MODEMULT, MODESNGL, MONTH, MROUND, MULTINOMIAL, MUNIT, N, NA, NEGBINOM, NEGBINOMDIST, NETWORKDAYS, NETWORKDAYSINTL, NOMINAL, NORM, NORMDIST, NORMINV, NORMSDIST, NORMSINV, NOT, NOW, NPER, NPV, NUMBERVALUE, OCT2BIN, OCT2DEC, OCT2HEX, ODD, ODDFPRICE, ODDFYIELD, ODDLPRICE, ODDLYIELD, OR, PDURATION, PEARSON, PERCENTILE, PERCENTILEEXC, PERCENTILEINC, PERCENTRANK, PERCENTRANKEXC, PERCENTRANKINC, PERMUT, PERMUTATIONA, PHI, PI, PMT, POISSON, POISSONDIST, POWER, PPMT, PRICE, PRICEDISC, PRICEMAT, PROB, PRODUCT, PRONETIC, PROPER, PV, QUARTILE, QUARTILEEXC, QUARTILEINC, QUOTIENT, RADIANS, RAND, RANDBETWEEN, RANK, RANKAVG, RANKEQ, RATE, RECEIVED, REPLACE, REPT, RIGHT, ROMAN, ROUND, ROUNDDOWN, ROUNDUP, ROW, ROWS, RRI, RSQ, SEARCH, SEC, SECH, SECOND, SERIESSUM, SHEET, SHEETS, SIGN, SIN, SINH, SKEW, SKEWP, SLN, SLOPE, SMALL, SORT, SQRT, SQRTPI, STANDARDIZE, STDEV, STDEVA, STDEVP, STDEVPA, STDEVS, STEYX, SUBSTITUTE, SUBTOTAL, SUM, SUMIF, SUMIFS, SUMPRODUCT, SUMSQ, SUMX2MY2, SUMX2PY2, SUMXMY2, SWITCH, SYD, T, TAN, TANH, TBILLEQ, TBILLPRICE, TBILLYIELD, TDIST, TDISTRT, TEXT, TEXTJOIN, TIME, TIMEVALUE, TINV, TODAY, TRANSPOSE, TREND, TRIM, TRIMMEAN, TRUE, TRUNC, TTEST, TYPE, UNICHAR, UNICODE, UNIQUE, UPPER, VALUE, VAR, VARA, VARP, VARPA, VARS, VDB, VLOOKUP, WEEKDAY, WEEKNUM, WEIBULL, WEIBULLDIST, WORKDAY, WORKDAYINTL, XIRR, XNPV, XOR, YEAR, YEARFRAC, YIELD, YIELDDISC, YIELDMAT, Z, ZTEST, utils };\n", "import { $, app, store } from './common'\nimport { cm, numaraHints, keywords } from './editor'\nimport { checkLocale } from './utils'\n\nimport { DateTime } from 'luxon'\nimport { all, create, factory } from 'mathjs'\n\nimport * as formulajs from '@formulajs/formulajs'\n\nexport const math = create(all)\n\n// Import Formula.js into MathJs\nmath.import(factory('xls', [], () => formulajs))\n\n// Expose math to global scope for use in function-plot.\nwindow.math = math\n\nconst nowFormat = 'D t'\nconst nowDayFormat = 'ccc, D t'\n\nconst todayFormat = 'D'\nconst todayDayFormat = 'ccc, D'\n\n/** Calculate answers. */\nexport function calculate() {\n if (app.refreshCM) {\n cm.refresh()\n }\n\n let answers = ''\n let answerCopy = ''\n\n const avgs = []\n const totals = []\n const subtotals = []\n\n const dateTime = DateTime.now().setLocale(app.settings.locale)\n\n app.mathScope = {}\n app.mathScope.now = dateTime.toFormat(app.settings.dateDay ? nowDayFormat : nowFormat)\n app.mathScope.today = dateTime.toFormat(app.settings.dateDay ? todayDayFormat : todayFormat)\n\n $('#clearButton').setAttribute('disabled', cm.getValue() === '')\n $('#copyButton').setAttribute('disabled', cm.getValue() === '')\n\n cm.eachLine((cmLine) => {\n const cmLineNo = cm.getLineNumber(cmLine)\n const lineNo = cmLineNo + 1\n\n let answer = ''\n let line = cmLine.text.trim().split('//')[0].split('#')[0]\n\n cm.removeLineClass(cmLine, 'gutter', 'lineNoError')\n\n if (app.settings.rulers) {\n cm.removeLineClass(cmLine, 'wrap', 'noRuler')\n cm.addLineClass(cmLine, 'wrap', 'ruler')\n } else {\n cm.removeLineClass(cmLine, 'wrap', 'ruler')\n cm.addLineClass(cmLine, 'wrap', 'noRuler')\n }\n\n if (line) {\n try {\n line =\n lineNo > 1 &&\n line.charAt(0).match(/[+\\-*/]/) &&\n cm.getLine(lineNo - 2).length > 0 &&\n app.settings.contPrevLine\n ? app.mathScope.ans + line\n : line\n\n if (checkLocale()) {\n line = line.replace(/[,;]/g, (match) => (match === ',' ? '.' : ','))\n }\n\n app.mathScope.avg = math.evaluate(avgs.length > 0 ? '(' + math.mean(avgs) + ')' : '0')\n app.mathScope.total = math.evaluate(totals.length > 0 ? '(' + totals.join('+') + ')' : '0')\n app.mathScope.subtotal = math.evaluate(subtotals.length > 0 ? '(' + subtotals.join('+') + ')' : '0')\n\n try {\n answer = math.evaluate(line, app.mathScope)\n } catch {\n answer = evaluate(line)\n }\n\n if (answer || answer === 0) {\n app.mathScope._ = answer\n app.mathScope.ans = answer\n app.mathScope['line' + lineNo] = answer\n\n if (typeof answer === 'number') {\n avgs.push(answer)\n totals.push(answer)\n subtotals.push(answer)\n }\n\n answer = math.format(answer, {\n notation: app.settings.notation,\n lowerExp: +app.settings.expLower,\n upperExp: +app.settings.expUpper\n })\n\n const answerCopyInit = answer\n\n answer = formatAnswer(answer, false)\n answerCopy = formatAnswer(answerCopyInit, true)\n\n if (answer.match(/\\w\\(x\\)/)) {\n const plotAns = (/\\w\\(x\\)$/.test(answer) && line !== 'ans' ? line : answer).replace(/\\s+/g, '')\n\n app.mathScope.ans = plotAns\n app.mathScope['line' + lineNo] = plotAns\n\n answer = `Plot`\n }\n } else {\n subtotals.length = 0\n\n answer = ''\n }\n } catch (error) {\n if (app.settings.lineErrors) {\n cm.addLineClass(cmLineNo, 'gutter', 'lineNoError')\n\n answer = `Error`\n }\n }\n } else {\n subtotals.length = 0\n }\n\n const lineHeight = cm.display.lineDiv.children[cmLineNo].clientHeight\n\n answers += `\n ${answer}\n
    `\n })\n\n $('#output').innerHTML = answers\n\n const scopeKeywords = keywords.map((key) => key.text)\n const vars = Object.keys(app.mathScope).filter((scope) => !scopeKeywords.includes(scope))\n\n vars.forEach((v) => {\n if (!numaraHints.some((hint) => hint.text === v) && v !== 'line' + cm.lineCount()) {\n numaraHints.push({ text: v, desc: 'Variable', className: 'cm-variable' })\n }\n })\n\n if (app.activePage) {\n const pages = store.get('pages')\n const page = pages.find((page) => page.id === app.activePage)\n\n page.data = cm.getValue()\n page.history = cm.getHistory()\n\n store.set('pages', pages)\n }\n}\n\n/** Secondary evaluate method to try if math.evaluate fails */\nfunction evaluate(line) {\n if (line.match(/:/)) {\n try {\n math.evaluate(line.split(':')[0])\n } catch {\n line = line.substring(line.indexOf(':') + 1)\n }\n }\n\n const dateTimeReg =\n /[+-] * .* *(millisecond|second|minute|hour|day|week|month|quarter|year|decade|century|centuries|millennium|millennia)s?/g\n\n if (line.match(dateTimeReg)) {\n line = line.replace('now', app.mathScope.now).replace('today', app.mathScope.today)\n\n const lineDate = line.replace(dateTimeReg, '').trim()\n const lineDateRight = line.replace(lineDate, '').trim()\n const locale = { locale: app.settings.locale }\n const lineDateNow = DateTime.fromFormat(lineDate, app.settings.dateDay ? nowDayFormat : nowFormat, locale)\n const lineDateToday = DateTime.fromFormat(lineDate, app.settings.dateDay ? todayDayFormat : todayFormat, locale)\n const lineDateTime = lineDateNow.isValid ? lineDateNow : lineDateToday.isValid ? lineDateToday : false\n const rightOfDate = String(math.evaluate(lineDateRight + ' to hours', app.mathScope))\n const durHrs = Number(rightOfDate.split(' ')[0])\n\n if (lineDateTime) {\n const dtLine = lineDateTime\n .plus({ hours: durHrs })\n .toFormat(\n lineDateNow.isValid\n ? app.settings.dateDay\n ? nowDayFormat\n : nowFormat\n : app.settings.dateDay\n ? todayDayFormat\n : todayFormat\n )\n\n line = `\"${dtLine}\"`\n } else {\n return 'Invalid Date'\n }\n }\n\n const pcntOfReg = /%[ ]*of[ ]*/g\n const pcntOfValReg = /[\\w.]*%[ ]*of[ ]*/g\n\n if (line.match(pcntOfValReg)) {\n line = line.replaceAll(pcntOfReg, '/100*')\n }\n\n return math.evaluate(line, app.mathScope)\n}\n\nfunction stripAnswer(answer) {\n let t = answer.length\n\n if (answer.charAt(0) === '\"') {\n answer = answer.substring(1, t--)\n }\n\n if (answer.charAt(--t) === '\"') {\n answer = answer.substring(0, t)\n }\n\n return answer\n}\n\n/**\n * Format answer.\n *\n * @param {*} answer Value to format.\n * @param {boolean} separator Include thousands separator - True|False\n * @returns\n */\nexport function formatAnswer(answer, separator) {\n answer = String(answer)\n\n if (['bin', 'hex', 'oct'].includes(app.settings.notation)) {\n return stripAnswer(answer)\n }\n\n const a = answer.trim().split(' ')[0]\n const b = answer.replace(a, '')\n const digits = {\n maximumFractionDigits: app.settings.precision,\n useGrouping: separator ? app.settings.copyThouSep : app.settings.thouSep\n }\n\n const formattedAnswer =\n !a.includes('e') && !isNaN(a)\n ? Number(a).toLocaleString(app.settings.locale, digits) + b\n : a.match(/e[+-]?\\d+/) && !isNaN(a.split('e')[0])\n ? Number(a.split('e')[0]).toLocaleString(app.settings.locale, digits) + 'e' + answer.split('e')[1]\n : stripAnswer(answer)\n\n return formattedAnswer\n}\n", "import { $, app, store } from './common'\nimport { calculate, formatAnswer, math } from './eval'\n\nimport * as formulajs from '@formulajs/formulajs'\n\nimport UIkit from 'uikit'\n\nimport CodeMirror from 'codemirror'\n\nimport 'codemirror/mode/javascript/javascript'\nimport 'codemirror/addon/dialog/dialog'\nimport 'codemirror/addon/display/placeholder'\nimport 'codemirror/addon/edit/closebrackets'\nimport 'codemirror/addon/edit/matchbrackets'\nimport 'codemirror/addon/hint/show-hint'\nimport 'codemirror/addon/search/jump-to-line'\nimport 'codemirror/addon/search/search'\nimport 'codemirror/addon/search/searchcursor'\n\n/** CodeMirror input panel. */\nexport const cm = CodeMirror.fromTextArea($('#inputArea'), {\n autofocus: true,\n coverGutterNextToScrollbar: true,\n extraKeys: { 'Ctrl-Space': 'autocomplete' },\n flattenSpans: true,\n mode: 'numara',\n smartIndent: false,\n theme: 'numara',\n viewportMargin: Infinity\n})\n\n// User defined functions and units editors\nconst udOptions = {\n autoCloseBrackets: true,\n autofocus: true,\n mode: 'javascript',\n tabSize: 2\n}\n\nconst udfPlaceholder = 'xyz: (x, y, z) => {\\n\\treturn x+y+z\\n},\\n\\nmyConstant: 123'\nconst uduPlaceholder = 'foo: \"18 foot\",\\nbar: \"40 foo\"'\n\n$('#udfInput').setAttribute('placeholder', udfPlaceholder)\n$('#uduInput').setAttribute('placeholder', uduPlaceholder)\n\nexport const udfInput = CodeMirror.fromTextArea($('#udfInput'), udOptions)\nexport const uduInput = CodeMirror.fromTextArea($('#uduInput'), udOptions)\n\n/**\n * Refresh editor and focus.\n *\n * @param {CodeMirror} editor CodeMirror instance to refresh\n */\nexport function refreshEditor(editor) {\n editor.refresh()\n\n setTimeout(() => {\n editor.focus()\n }, 100)\n}\n\n// Codemirror syntax templates\nCodeMirror.defineMode('numara', () => ({\n token: (stream) => {\n if (stream.match(/\\/\\/.*/) || stream.match(/#.*/)) {\n return 'comment'\n }\n\n if (stream.match(/\\d/)) {\n return 'number'\n }\n\n if (stream.match(/(?:\\+|-|\\*|\\/|,|;|\\.|:|@|~|=|>|<|&|\\||`|'|\\^|\\?|!|%)/)) {\n return 'operator'\n }\n\n if (stream.match(/\\b(?:xls.)\\b/)) {\n return 'formulajs'\n }\n\n stream.eatWhile(/\\w/)\n\n const cmStream = stream.current()\n\n if (\n app.settings.currency &&\n (Object.keys(app.currencyRates).some((curr) => app.currencyRates[curr].code === cmStream) || cmStream === 'USD')\n ) {\n return 'currency'\n }\n\n if (typeof math[cmStream] === 'function' && Object.getOwnPropertyNames(math[cmStream]).includes('signatures')) {\n return 'function'\n }\n\n if (app.udfList.includes(cmStream)) {\n return 'udf'\n }\n\n if (app.uduList.includes(cmStream)) {\n return 'udu'\n }\n\n if (cmStream.match(/\\b(?:_|ans|total|subtotal|avg|today|now)\\b/)) {\n return 'keyword'\n }\n\n if (cmStream.match(/\\b(?:line\\d+)\\b/)) {\n return 'lineNo'\n }\n\n if (typeof formulajs[cmStream] === 'function' && stream.string.startsWith('xls.')) {\n return 'excel'\n }\n\n try {\n const val = math.evaluate(cmStream)\n const par = math.parse(cmStream)\n\n if (val.units && val) {\n return 'unit'\n }\n\n if (par.isSymbolNode && val) {\n return 'constant'\n }\n } catch {\n /** Ignore catch */\n }\n\n try {\n math.evaluate(cmStream)\n } catch {\n return 'variable'\n }\n\n stream.next()\n\n return 'space'\n }\n}))\n\nCodeMirror.defineMode('plain', () => ({\n token: (stream) => {\n stream.next()\n\n return 'text'\n }\n}))\n\n// Codemirror autocomplete hints\nexport const numaraHints = []\n\nexport const keywords = [\n { text: '_', desc: 'Answer from last calculated line' },\n { text: 'ans', desc: 'Answer from last calculated line' },\n { text: 'avg', desc: 'Average of previous line values. Numbers only.' },\n { text: 'now', desc: 'Current date and time' },\n { text: 'subtotal', desc: 'Total of all lines in previous block. Numbers only.' },\n { text: 'today', desc: 'Current date' },\n { text: 'total', desc: 'Total of previous line values. Numbers only.' }\n]\n\nkeywords.forEach((key) => {\n key.className = 'cm-keyword'\n numaraHints.push(key)\n})\n\nObject.getOwnPropertyNames(math).forEach((f) => {\n if (typeof math[f] === 'function' && Object.getOwnPropertyNames(math[f]).includes('signatures')) {\n numaraHints.push({ text: f, className: 'cm-function' })\n }\n})\n\nObject.keys(formulajs).forEach((f) => {\n numaraHints.push({ text: 'xls.' + f, className: 'cm-excel' })\n})\n\nObject.values(math.Unit.UNITS).flatMap((unit) => {\n Object.values(unit.prefixes).forEach((prefix) => {\n const unitBase = unit.base.key.replaceAll('_', ' ').toLowerCase()\n const unitCat = unitBase.charAt(0).toUpperCase() + unitBase.slice(1)\n\n numaraHints.push({ text: prefix.name + unit.name, desc: unitCat + ' unit', className: 'cm-unit' })\n })\n})\n\nCodeMirror.registerHelper('hint', 'numaraHints', (editor) => {\n const cmCursor = editor.getCursor()\n const cmCursorLine = editor.getLine(cmCursor.line)\n\n let start = cmCursor.ch\n let end = start\n\n while (end < cmCursorLine.length && /[\\w.$]/.test(cmCursorLine.charAt(end))) {\n ++end\n }\n\n while (start && /[\\w.$]/.test(cmCursorLine.charAt(start - 1))) {\n --start\n }\n\n let curStr = cmCursorLine.slice(start, end)\n let curWord = start !== end && curStr\n\n const curWordRegex = new RegExp('^' + curWord, 'i')\n\n curWord = !curStr.endsWith('.') || curStr === 'xls.'\n\n return {\n list: !curWord\n ? []\n : numaraHints.filter(({ text }) => text.match(curWordRegex)).sort((a, b) => a.text.localeCompare(b.text)),\n from: CodeMirror.Pos(cmCursor.line, start),\n to: CodeMirror.Pos(cmCursor.line, end)\n }\n})\n\nCodeMirror.commands.autocomplete = (cm) => {\n CodeMirror.showHint(cm, CodeMirror.hint.numaraHints, {\n completeSingle: false,\n extraKeys: { Enter: 'newline' }\n })\n}\n\n// Force editor line bottom alignment\nfunction cmForceBottom() {\n const lineTop = cm.display.lineDiv.children[cm.getCursor().line].getBoundingClientRect().top\n const barTop = $('.CodeMirror-hscrollbar').getBoundingClientRect().top\n const lineHeight = +app.settings.lineHeight.replace('px', '') + 1\n\n if (barTop - lineTop < lineHeight) {\n $('#output').scrollTop = $('#output').scrollTop + (lineHeight - (barTop - lineTop))\n }\n}\n\n// Codemirror handlers\ncm.on('changes', calculate)\n\ncm.on('inputRead', (cm) => {\n if (app.settings.autocomplete) {\n CodeMirror.commands.autocomplete(cm)\n }\n})\n\ncm.on('cursorActivity', (cm) => {\n const activeLine = cm.getCursor().line\n\n cm.eachLine((line) => {\n const cmLineNo = cm.getLineNumber(line)\n\n if (cmLineNo === activeLine) {\n cm.addLineClass(cmLineNo, 'gutter', 'activeLine')\n } else {\n cm.removeLineClass(cmLineNo, 'gutter', 'activeLine')\n }\n })\n\n setTimeout(cmForceBottom, 20)\n\n const pages = store.get('pages')\n const page = pages.find((page) => page.id == app.activePage)\n\n page.cursor = cm.getCursor()\n\n store.set('pages', pages)\n})\n\ncm.on('gutterClick', (cm, line) => {\n const lineNo = line + 1\n\n cm.replaceSelection('line' + lineNo)\n})\n\ncm.on('scrollCursorIntoView', cmForceBottom)\n\n// Tooltips\nconst ttPos = (el) => (el.nodeName.toLowerCase() === 'li' ? 'right' : 'top-left')\n\ndocument.addEventListener('mouseover', (event) => {\n if (app.settings.keywordTips && event.target.classList[0]?.startsWith('cm-')) {\n switch (event.target.classList[0]) {\n case 'cm-function':\n try {\n const tip = JSON.parse(JSON.stringify(math.help(event.target.innerText).toJSON()))\n\n UIkit.tooltip(event.target, {\n pos: ttPos(event.target),\n title: tip.description\n })\n } catch {\n UIkit.tooltip(event.target, {\n pos: ttPos(event.target),\n title: 'Description not available'\n })\n }\n\n break\n\n case 'cm-udf':\n UIkit.tooltip(event.target, {\n pos: ttPos(event.target),\n title: 'User defined function'\n })\n\n break\n\n case 'cm-udu':\n UIkit.tooltip(event.target, {\n pos: ttPos(event.target),\n title: 'User defined unit'\n })\n\n break\n\n case 'cm-currency':\n try {\n const currency = event.target.innerText\n const currencyName = currency === 'USD' ? 'U.S. Dollar' : app.currencyRates[currency.toLowerCase()].name\n\n UIkit.tooltip(event.target, {\n pos: ttPos(event.target),\n title: currencyName\n })\n } catch {\n UIkit.tooltip(event.target, {\n pos: ttPos(event.target),\n title: 'Description not available'\n })\n }\n\n break\n\n case 'cm-unit': {\n UIkit.tooltip(event.target, {\n pos: ttPos(event.target),\n title: numaraHints.find((hint) => hint.text === event.target.innerText).desc\n })\n\n break\n }\n\n case 'cm-constant':\n try {\n UIkit.tooltip(event.target, {\n pos: ttPos(event.target),\n title: math.help(event.target.innerText).doc.description + ' (Constant)'\n })\n } catch {\n /* No tooltip */\n }\n\n break\n\n case 'cm-variable':\n if (app.mathScope[event.target.innerText] && typeof app.mathScope[event.target.innerText] !== 'function') {\n let varTooltip\n\n try {\n varTooltip = formatAnswer(math.evaluate(event.target.innerText, app.mathScope))\n } catch {\n varTooltip = 'Undefined'\n }\n\n UIkit.tooltip(event.target, {\n pos: ttPos(event.target),\n title: varTooltip\n })\n }\n\n break\n\n case 'cm-lineNo': {\n let tooltip\n\n try {\n tooltip =\n typeof app.mathScope[event.target.innerText] === 'function'\n ? 'Function'\n : formatAnswer(math.evaluate(event.target.innerText, app.mathScope))\n } catch {\n tooltip = 'Undefined'\n }\n\n UIkit.tooltip(event.target, {\n pos: ttPos(event.target),\n title: tooltip\n })\n\n break\n }\n\n case 'cm-keyword':\n UIkit.tooltip(event.target, {\n pos: ttPos(event.target),\n title: keywords.filter((key) => event.target.innerText === key.text)[0].desc\n })\n\n break\n\n case 'cm-formulajs':\n UIkit.tooltip(event.target, {\n pos: ttPos(event.target),\n title: 'Formulajs'\n })\n\n break\n\n case 'cm-excel':\n UIkit.tooltip(event.target, {\n pos: ttPos(event.target),\n title: 'Excel function'\n })\n\n break\n }\n\n UIkit.tooltip(event.target).show()\n }\n})\n", "import { $, $all } from './common'\nimport { cm, udfInput, uduInput } from './editor'\nimport { notify } from './modal'\nimport { isElectron } from './utils'\n\n/** Main context menus */\nfunction inputContext() {\n setTimeout(() => {\n const index = cm.getCursor().line\n const line = cm.getLine(index)\n const answer = $('#output').children[index].innerText\n const isEmpty = cm.getValue() === ''\n const isLine = line.length > 0\n const isSelection = cm.somethingSelected()\n const isMultiLine =\n cm.listSelections().length > 1 || cm.listSelections()[0].anchor.line !== cm.listSelections()[0].head.line\n const hasAnswer = answer !== '' && answer !== 'Error' && answer !== 'Plot'\n\n numara.inputContextMenu(index, isEmpty, isLine, isSelection, isMultiLine, hasAnswer)\n }, 20)\n}\n\n/** Output panel context menu. */\nfunction outputContext(event) {\n const answer = event.srcElement.innerText\n const index = event.srcElement.dataset.line || event.srcElement.parentElement.dataset.line || cm.lastLine()\n const hasAnswer = index !== null && answer !== '' && answer !== 'Error' && answer !== 'Plot'\n const isEmpty = cm.getValue() === ''\n\n numara.outputContextMenu(index, isEmpty, hasAnswer)\n}\n\n/** Textbox context menu. */\nfunction textboxContext() {\n setTimeout(() => {\n numara.textboxContextMenu()\n }, 20)\n}\n\n/** Copy line answer. */\nfunction copyLine(event, index) {\n index = +index\n\n const line = cm.getLine(index).trim()\n\n navigator.clipboard.writeText(line).then(notify(`Copied Line ${index + 1} to clipboard.`))\n}\n\n/** Copy line answer. */\nfunction copyAnswer(event, index, withLines) {\n index = +index\n\n const line = cm.getLine(index).trim()\n const answer = $('#output').children[index].children[0].dataset.copy\n const copiedText = withLines ? `${line} = ${answer}` : `${answer}`\n\n navigator.clipboard\n .writeText(copiedText)\n .then(notify(withLines ? `Copied Line ${index + 1} with answer to clipboard.` : `Copied '${answer}' to clipboard.`))\n}\n\n/** Copy all inputs. */\nfunction copyAllLines() {\n if (cm.getValue() === '') {\n notify('Nothing to copy.')\n } else {\n navigator.clipboard.writeText(cm.getValue()).then(notify('Copied all lines to clipboard.'))\n }\n}\n\n/** Copy all answers. */\nfunction copyAllAnswers() {\n if (cm.getValue() === '') {\n notify('Nothing to copy.')\n } else {\n let copiedOutputs = ''\n\n cm.eachLine((line) => {\n const index = cm.getLineNumber(line)\n\n copiedOutputs += `${$('#output').children[index].innerText}\\n`\n })\n\n navigator.clipboard.writeText(copiedOutputs).then(notify('Copied all answers to clipboard.'))\n }\n}\n\n/** Copy page. */\nexport function copyAll() {\n if (cm.getValue() === '') {\n notify('Nothing to copy.')\n } else {\n let copiedCalc = ''\n\n cm.eachLine((line) => {\n const index = cm.getLineNumber(line)\n\n line = line.text.trim()\n\n copiedCalc += line\n ? line.match(/^(#|\\/\\/)/)\n ? `${line}\\n`\n : `${line} = ${$('#output').children[index].innerText}\\n`\n : '\\n'\n })\n\n navigator.clipboard.writeText(copiedCalc).then(notify('Copied page to clipboard.'))\n }\n}\n\n// Context menus\nif (isElectron) {\n cm.on('contextmenu', inputContext)\n\n udfInput.on('contextmenu', textboxContext)\n uduInput.on('contextmenu', textboxContext)\n\n $('#output').addEventListener('contextmenu', outputContext)\n\n $all('.textBox').forEach((el) => {\n el.addEventListener('contextmenu', textboxContext)\n })\n\n numara.copyLine(copyLine)\n numara.copyAnswer(copyAnswer)\n numara.copyLineWithAnswer(copyAnswer)\n numara.copyAllLines(copyAllLines)\n numara.copyAllAnswers(copyAllAnswers)\n numara.copyAll(copyAll)\n}\n", "{\n \"name\": \"numara\",\n \"productName\": \"Numara\",\n \"description\": \"Numara Calculator\",\n \"version\": \"5.7.1\",\n \"author\": {\n \"name\": \"Timur Atalay\",\n \"email\": \"mail@numara.io\",\n \"url\": \"https://numara.io\"\n },\n \"license\": \"MIT\",\n \"homepage\": \"https://github.com/bornova/numara-calculator\",\n \"main\": \"src/main.js\",\n \"type\": \"module\",\n \"scripts\": {\n \"prebuild\": \"npm run prettier && npm run lint\",\n \"build\": \"node build.js\",\n \"dist\": \"npm run build && electron-builder\",\n \"lint\": \"eslint .\",\n \"lint:fix\": \"eslint --fix .\",\n \"prettier\": \"prettier --check .\",\n \"prettier:fix\": \"prettier --write .\",\n \"publish\": \"npm run build && electron-builder --x64 --arm64 -p always\",\n \"test\": \"npm run build && electron .\",\n \"wiki\": \"node src/misc/wiki.js\"\n },\n \"devDependencies\": {\n \"@eslint/js\": \"^9.15.0\",\n \"@formulajs/formulajs\": \"^4.4.8\",\n \"@melloware/coloris\": \"^0.24.0\",\n \"codemirror\": \"^5.65.18\",\n \"deep-diff\": \"^1.0.2\",\n \"electron\": \"^33.2.0\",\n \"electron-builder\": \"^25.1.8\",\n \"esbuild\": \"^0.24.0\",\n \"eslint\": \"^9.15.0\",\n \"fs-extra\": \"^11.2.0\",\n \"function-plot\": \"^1.25.1\",\n \"lucide\": \"^0.460.0\",\n \"luxon\": \"^3.5.0\",\n \"mathjs\": \"^14.0.0\",\n \"prettier\": \"^3.3.3\",\n \"tinykeys\": \"^3.0.0\",\n \"uikit\": \"^3.21.14\"\n },\n \"dependencies\": {\n \"electron-log\": \"^5.2.2\",\n \"electron-store\": \"^10.0.0\",\n \"electron-updater\": \"^6.3.9\"\n }\n}\n", "import { $, app, store } from './common'\nimport { math } from './eval'\n\nimport { productName } from './../../package.json'\n\nimport functionPlot from 'function-plot'\n\n/** Plot function. */\nexport function plot() {\n $('#plotTitle').innerHTML = app.plotFunction\n\n const f = math.simplify(app.plotFunction.split('=')[1], app.mathScope).toString()\n\n let domain = math.abs(math.evaluate(f, { x: 0 })) * 2\n\n if (domain === Infinity || domain === 0) {\n domain = 10\n }\n\n const xDomain = app.activePlot ? app.activePlot.meta.xScale.domain() : [-domain, domain]\n const yDomain = app.activePlot ? app.activePlot.meta.yScale.domain() : [-domain, domain]\n\n app.activePlot = functionPlot.default({\n data: [\n {\n derivative: app.settings.plotDerivative\n ? { fn: math.derivative(f, 'x').toString(), updateOnMouseMove: true }\n : false,\n fn: f,\n graphType: 'polyline',\n sampler: 'builtIn'\n }\n ],\n grid: app.settings.plotGrid,\n height: $('#plot').clientHeight,\n target: '#plot',\n tip: {\n xLine: app.settings.plotCross,\n yLine: app.settings.plotCross\n },\n width: $('#plot').clientWidth,\n xAxis: { domain: xDomain },\n yAxis: { domain: yDomain }\n })\n}\n\n$('#plotCrossModal').addEventListener('click', () => {\n app.settings.plotCross = $('#plotCrossModal').checked\n\n store.set('settings', app.settings)\n\n plot()\n})\n\n$('#plotDerivativeModal').addEventListener('click', () => {\n app.settings.plotDerivative = $('#plotDerivativeModal').checked\n\n store.set('settings', app.settings)\n\n plot()\n})\n\n$('#plotGridModal').addEventListener('click', () => {\n app.settings.plotGrid = $('#plotGridModal').checked\n\n store.set('settings', app.settings)\n\n plot()\n})\n\n$('#exportPlot').addEventListener('click', () => {\n $('.function-plot').setAttribute('xmlns', 'http://www.w3.org/2000/svg')\n\n const fileName = productName + ' Plot ' + app.plotFunction\n const preface = '\\r\\n'\n const svgData = $('.function-plot').outerHTML\n const svgBlob = new Blob([preface, svgData], { type: 'image/svg+xml;charset=utf-8' })\n const downloadLink = document.createElement('a')\n\n downloadLink.href = URL.createObjectURL(svgBlob)\n downloadLink.download = fileName\n downloadLink.click()\n\n setTimeout(() => URL.revokeObjectURL(downloadLink.href), 60000)\n})\n\n$('#resetPlot').addEventListener('click', () => {\n app.activePlot = null\n\n plot()\n})\n", "import { $, app, store } from './common'\nimport { cm, numaraHints } from './editor'\nimport { calculate, math } from './eval'\nimport { notify } from './modal'\n\nmath.createUnit('USD')\n\nnumaraHints.push({ text: 'USD', desc: 'U.S. Dollar', className: 'cm-currency' })\n\n/** Get exchange rates. */\nexport function getRates() {\n const url = 'https://www.floatrates.com/widget/1030/cfc5515dfc13ada8d7b0e50b8143d55f/usd.json'\n\n if (navigator.onLine) {\n $('#lastUpdated').innerHTML = '
    '\n\n fetch(url)\n .then((response) => response.json())\n .then((rates) => {\n app.currencyRates = rates\n\n Object.keys(rates).forEach((currency) => {\n math.createUnit(\n rates[currency].code,\n { definition: math.unit(rates[currency].inverseRate + 'USD') },\n { override: true }\n )\n\n if (!numaraHints.some((hint) => hint.text === rates[currency].code)) {\n numaraHints.push({ text: rates[currency].code, desc: rates[currency].name, className: 'cm-currency' })\n }\n\n store.set('rateDate', rates[currency].date)\n })\n\n $('#lastUpdated').innerHTML = store.get('rateDate')\n\n cm.setOption('mode', app.settings.syntax ? 'numara' : 'plain')\n\n calculate()\n })\n .catch((error) => {\n $('#lastUpdated').innerHTML = 'n/a'\n\n notify('Failed to get exchange rates (' + error + ')', 'warning')\n })\n } else {\n $('#lastUpdated').innerHTML = 'No internet connection.'\n\n notify('No internet connection. Could not update exchange rates.', 'warning')\n }\n}\n", "import { colors } from './colors'\nimport { $, $all, app, store } from './common'\nimport { cm, udfInput, uduInput } from './editor'\nimport { calculate, math } from './eval'\nimport { getRates } from './forex'\nimport { generateIcons } from './icons'\nimport { confirm, showError } from './modal'\nimport { checkLocale, checkSize, getTheme, isElectron } from './utils'\n\nimport DeepDiff from 'deep-diff'\n\n/** Show/hide Defaults link. */\nfunction checkDefaults() {\n $('#defaultSettingsButton').style.display = DeepDiff.diff(app.settings, settings.defaults) ? 'inline' : 'none'\n}\n\n/** Show warning if big number option is selected. */\nfunction bigNumberWarning() {\n $('#bigNumWarn').style.display = app.settings.numericOutput === 'BigNumber' ? 'inline-block' : 'none'\n}\n\n/** Show warning if locale uses comma as decimal point separator. */\nfunction localeWarning() {\n $('#localeWarn').style.display = checkLocale() ? 'inline-block' : 'none'\n}\n\n/** Check for app settings modifications. */\nfunction checkMods(key) {\n $('#' + key + 'Mod').style.display = app.settings[key] !== settings.defaults[key] ? 'inline-block' : 'none'\n}\n\n/** Check for app settings schema changes. */\nfunction checkSchema() {\n app.settings = store.get('settings')\n\n DeepDiff.observableDiff(app.settings, settings.defaults, (d) => {\n if (d.kind !== 'E') {\n DeepDiff.applyChange(app.settings, settings.defaults, d)\n\n store.set('settings', app.settings)\n }\n })\n}\n\nlet updateIterval\n\nexport const settings = {\n /** Default settings. */\n defaults: {\n alwaysOnTop: false,\n autocomplete: true,\n closeBrackets: true,\n contPrevLine: true,\n copyThouSep: false,\n currency: true,\n currencyInterval: '0',\n dateDay: false,\n divider: true,\n expLower: '-12',\n expUpper: '12',\n fontSize: '1.1rem',\n fontWeight: '400',\n inputWidth: 60,\n keywordTips: true,\n lineErrors: true,\n lineHeight: '24px',\n lineNumbers: true,\n lineWrap: true,\n locale: 'system',\n matchBrackets: true,\n matrixType: 'Matrix',\n notation: 'auto',\n notifyDuration: '5000',\n notifyLocation: 'bottom-center',\n numericOutput: 'number',\n plotCross: false,\n plotDerivative: false,\n plotGrid: false,\n precision: '4',\n predictable: false,\n rulers: false,\n syntax: true,\n theme: 'system',\n thouSep: true\n },\n\n /** Initialize settings. */\n initialize: () => {\n if (store.get('settings')) {\n checkSchema()\n } else {\n store.set('settings', settings.defaults)\n }\n\n app.settings = store.get('settings')\n\n // Get exchange rates\n if (app.settings.currency) {\n getRates()\n }\n\n // Start required line height fix\n if (app.settings.lineHeight.endsWith('em')) {\n switch (app.settings.lineHeight) {\n case '1.5em':\n app.settings.lineHeight = '16px'\n break\n case '1.75em':\n app.settings.lineHeight = '20px'\n break\n case '2em':\n app.settings.lineHeight = '24px'\n break\n case '2.5em':\n app.settings.lineHeight = '28px'\n break\n case '3em':\n app.settings.lineHeight = '32px'\n break\n }\n\n store.set('settings', app.settings)\n }\n // End fix\n\n settings.apply()\n\n $all('.settingItem').forEach((item) => {\n const span = document.createElement('span')\n const icon = document.createElement('span')\n\n icon.setAttribute('data-lucide', 'dot')\n\n span.setAttribute('id', item.getAttribute('id') + 'Mod')\n span.setAttribute('class', item.getAttribute('type') === 'checkbox' ? 'settingModToggle' : 'settingMod')\n\n span.appendChild(icon)\n\n span.addEventListener('click', () => {\n const key = item.getAttribute('id')\n\n app.settings[key] = settings.defaults[key]\n\n settings.prep()\n settings.save()\n settings.apply()\n })\n\n if (item.getAttribute('type') === 'checkbox') {\n item.parentElement.before(span)\n } else {\n item.before(span)\n }\n\n generateIcons()\n })\n },\n\n /** Prepare settings dialog items. */\n prep: () => {\n const locales = [\n ['System', 'system'],\n ['Chinese (PRC)', 'zh-CN'],\n ['English (Canada)', 'en-CA'],\n ['English (UK)', 'en-GB'],\n ['English (US)', 'en-US'],\n ['French (France)', 'fr-FR'],\n ['German (Germany)', 'de-DE'],\n ['Italian (Italy)', 'it-IT'],\n ['Japanese (Japan)', 'ja-JP'],\n ['Portuguese (Brazil)', 'pt-BR'],\n ['Russian (Russia)', 'ru-RU'],\n ['Spanish (Mexico)', 'es-MX'],\n ['Spanish (Spain)', 'es-ES'],\n ['Turkish (Turkey)', 'tr-TR']\n ]\n\n const matrixTypes = ['Matrix', 'Array']\n const numericOutputs = ['number', 'BigNumber', 'Fraction']\n const notations = ['auto', 'engineering', 'exponential', 'fixed', '-', 'bin', 'hex', 'oct']\n\n $('#locale').innerHTML = ''\n\n for (const l of locales) {\n $('#locale').innerHTML += ``\n }\n\n $('#precision-label').innerHTML = app.settings.precision\n $('#expLower-label').innerHTML = app.settings.expLower\n $('#expUpper-label').innerHTML = app.settings.expUpper\n\n $('#numericOutput').innerHTML = ''\n\n for (const n of numericOutputs) {\n $('#numericOutput').innerHTML += ``\n }\n\n $('#notation').innerHTML = ''\n\n for (const n of notations) {\n $('#notation').innerHTML +=\n n === '-'\n ? ''\n : ``\n }\n\n $('#matrixType').innerHTML = ''\n\n for (const m of matrixTypes) {\n $('#matrixType').innerHTML += ``\n }\n\n $('#lastUpdated').innerHTML = app.settings.currency ? store.get('rateDate') : ''\n $('#currencyUpdate').style.visibility = app.settings.currency ? 'visible' : 'hidden'\n\n Object.keys(app.settings).forEach((key) => {\n const el = $('#' + key)\n\n if (el) {\n if (el.getAttribute('type') === 'checkbox') {\n el.checked = app.settings[key]\n } else {\n el.value = app.settings[key]\n }\n\n checkMods(key)\n }\n })\n\n checkSize()\n checkDefaults()\n localeWarning()\n bigNumberWarning()\n\n settings.toggleSubs()\n },\n\n /** Apply settings. */\n apply: () => {\n const appTheme = getTheme()\n\n $('#style').setAttribute('href', 'css/' + appTheme + '.css')\n $('#numaraLogo').setAttribute('src', 'assets/logo-' + appTheme + '.png')\n\n setTimeout(() => {\n colors.apply()\n }, 50)\n\n const udfuTheme =\n app.settings.theme === 'system'\n ? isElectron\n ? numara.isDark()\n ? 'material-darker'\n : 'default'\n : 'default'\n : app.settings.theme === 'light'\n ? 'default'\n : 'material-darker'\n\n udfInput.setOption('theme', udfuTheme)\n uduInput.setOption('theme', udfuTheme)\n\n if (isElectron) {\n numara.setTheme(app.settings.theme)\n numara.setOnTop(app.settings.alwaysOnTop)\n }\n\n const elements = $all('.panelFont, .input .CodeMirror')\n\n for (const el of elements) {\n el.style.fontSize = app.settings.fontSize\n el.style.fontWeight = app.settings.fontWeight\n el.style.setProperty('line-height', app.settings.lineHeight, 'important')\n }\n\n $('#input').style.width = (app.settings.divider ? app.settings.inputWidth : settings.defaults.inputWidth) + '%'\n $('#panelDivider').style.display = app.settings.divider ? 'block' : 'none'\n $('#output').style.textAlign = app.settings.divider ? 'left' : 'right'\n\n cm.setOption('mode', app.settings.syntax ? 'numara' : 'plain')\n cm.setOption('lineNumbers', app.settings.lineNumbers)\n cm.setOption('lineWrapping', app.settings.lineWrap)\n cm.setOption('matchBrackets', app.settings.syntax && app.settings.matchBrackets ? { maxScanLines: 1 } : false)\n cm.setOption('autoCloseBrackets', app.settings.closeBrackets)\n\n math.config({\n matrix: app.settings.matrixType,\n number: app.settings.numericOutput,\n predictable: app.settings.predictable\n })\n\n if (app.settings.currency) {\n if (app.settings.currencyInterval === '0') {\n clearInterval(updateIterval)\n store.set('rateInterval', false)\n } else {\n clearInterval(updateIterval)\n updateIterval = setInterval(getRates, +app.settings.currencyInterval)\n store.set('rateInterval', true)\n }\n }\n\n if (app.settings.currencyInterval === '0') {\n clearInterval(updateIterval)\n } else {\n clearInterval(updateIterval)\n updateIterval = setInterval(getRates, +app.settings.currencyInterval)\n }\n\n setTimeout(calculate, 10)\n },\n\n /** Save settings to local storage. */\n save: () => {\n Object.keys(app.settings).forEach((key) => {\n const el = $('#' + key)\n\n if (el) {\n app.settings[key] = el.getAttribute('type') === 'checkbox' ? el.checked : el.value\n\n checkMods(key)\n }\n })\n\n if (!$('#currency').checked) {\n localStorage.removeItem('rateDate')\n\n app.currencyRates = {}\n }\n\n $('#currencyUpdate').style.visibility = $('#currency').checked ? 'visible' : 'hidden'\n $('#currencyWarn').style.display = app.settings.currency ? 'none' : 'inline-block'\n\n if (!store.get('rateDate') && app.settings.currency) {\n getRates()\n }\n\n checkDefaults()\n localeWarning()\n bigNumberWarning()\n\n settings.toggleSubs()\n\n store.set('settings', app.settings)\n },\n\n /** Toggle settings sliders to enabled/disabled based on parent setting. */\n toggleSubs: () => {\n $('#expUpper').disabled = app.settings.notation !== 'auto'\n $('#expLower').disabled = app.settings.notation !== 'auto'\n $('#keywordTips').disabled = !app.settings.syntax\n $('#matchBrackets').disabled = !app.settings.syntax\n $('#copyThouSep').disabled = !app.settings.thouSep\n $('#currencyInterval').disabled = !app.settings.currency\n $('#updateRatesLink').dataset.enabled = app.settings.currency\n\n $('#expUpper').parentNode.style.opacity = app.settings.notation === 'auto' ? '1' : '0.5'\n $('#expLower').parentNode.style.opacity = app.settings.notation === 'auto' ? '1' : '0.5'\n $('#keywordTips').parentNode.style.opacity = app.settings.syntax ? '1' : '0.5'\n $('#matchBrackets').parentNode.style.opacity = app.settings.syntax ? '1' : '0.5'\n $('#copyThouSep').parentNode.style.opacity = app.settings.thouSep ? '1' : '0.5'\n\n $('#expUpperMod').style.pointerEvents = app.settings.notation === 'auto' ? 'auto' : 'none'\n $('#expLowerMod').style.pointerEvents = app.settings.notation === 'auto' ? 'auto' : 'none'\n $('#keywordTipsMod').style.pointerEvents = app.settings.syntax ? 'auto' : 'none'\n $('#matchBracketsMod').style.pointerEvents = app.settings.syntax ? 'auto' : 'none'\n $('#copyThouSepMod').style.pointerEvents = app.settings.thouSep ? 'auto' : 'none'\n\n $('#expUpperMod').parentNode.style.opacity = app.settings.notation === 'auto' ? '1' : '0.5'\n $('#expLowerMod').parentNode.style.opacity = app.settings.notation === 'auto' ? '1' : '0.5'\n $('#keywordTipsMod').parentNode.style.opacity = app.settings.syntax ? '1' : '0.5'\n $('#matchBracketsMod').parentNode.style.opacity = app.settings.syntax ? '1' : '0.5'\n $('#copyThouSepMod').parentNode.style.opacity = app.settings.thouSep ? '1' : '0.5'\n }\n}\n\n$('#defaultSettingsButton').addEventListener('click', () => {\n confirm('All settings will revert back to defaults.', () => {\n app.settings = JSON.parse(JSON.stringify(settings.defaults))\n app.colors = JSON.parse(JSON.stringify(colors.defaults))\n\n store.set('settings', app.settings)\n store.set('colors', app.colors)\n\n settings.prep()\n settings.save()\n settings.apply()\n })\n})\n\n$('#dialog-settings-reset').addEventListener('click', () => {\n confirm('All user settings and data will be lost.', () => {\n if (isElectron) {\n numara.resetApp()\n } else {\n localStorage.clear()\n location.reload()\n }\n })\n})\n\nif (isElectron) {\n $('#resetSizeButton').addEventListener('click', numara.resetSize)\n}\n\n$('#localeWarn').addEventListener('click', () => {\n showError(\n 'Caution: Locale',\n `Your locale (${app.settings.locale}) uses comma (,) as decimal separator. Therefore, you must use semicolon (;) as argument separator when using functions.

    Ex. sum(1;3) // 4`\n )\n})\n\n$('#bigNumWarn').addEventListener('click', () => {\n showError(\n 'Caution: BigNumber Limitations',\n `Using the BigNumber may break function plotting and is not compatible with some math functions. \n It may also cause unexpected behavior and affect overall performance.

    \n Read more on BigNumbers`\n )\n})\n\n$('#currencyWarn').addEventListener('click', () => {\n showError('App restart needed', `Currencies used in existing calculations will be removed after app restart.`)\n})\n\n$('#precision').addEventListener('input', () => {\n $('#precision-label').innerHTML = $('#precision').value\n})\n\n$('#expLower').addEventListener('input', () => {\n $('#expLower-label').innerHTML = $('#expLower').value\n})\n\n$('#expUpper').addEventListener('input', () => {\n $('#expUpper-label').innerHTML = $('#expUpper').value\n})\n\n$('#updateRatesLink').addEventListener('click', getRates)\n\n$all('.settingItem').forEach((el) => {\n el.addEventListener('change', () => {\n settings.save()\n settings.apply()\n })\n})\n", "import { $, $all, app, store } from './common'\nimport { cm } from './editor'\nimport { generateIcons } from './icons'\nimport { confirm, modal, notify } from './modal'\nimport { isElectron } from './utils'\n\nimport { DateTime } from 'luxon'\n\nimport UIkit from 'uikit'\n\n/** Migrate old saved calculations to pages */\nexport function migrateSaved() {\n const saved = store.get('saved')\n const pages = store.get('pages')\n\n if (saved) {\n Object.entries(saved).forEach(([id, val]) => {\n pages.push({ id, name: val[0], data: val[1] })\n })\n\n store.set('pages', pages)\n\n localStorage.removeItem('saved')\n }\n}\n\n/** Get page name/number to use */\nexport function getPageName() {\n const pages = store.get('pages')\n\n let pageNo = 1\n\n if (pages) {\n const regex = new RegExp(/\\b(Page \\d+)$\\b/)\n const pageNos = pages\n .filter((page) => regex.test(page.name.trim()))\n .map((page) => +page.name.split(' ')[1])\n .sort((a, b) => a - b)\n\n const max = Math.max(...pageNos)\n\n if (pageNos[0] === 1) {\n for (let i = 0; i < max; i++) {\n if (pageNos[i + 1] !== pageNos[i] + 1) {\n pageNo = pageNos[i] + 1\n break\n }\n }\n }\n }\n\n return 'Page ' + pageNo\n}\n\n/** Get last page from store */\nexport const lastPage = () => store.get('lastPage')\n\n/** Populate the page list in side bar */\nexport function populatePages() {\n const pages = store.get('pages')\n\n if (!pages || pages.length === 0) {\n defaultPage()\n }\n\n $('#pageList').innerHTML = ''\n\n pages.forEach((page) => {\n const pageListItem = document.createElement('div')\n\n pageListItem.id = page.id\n pageListItem.classList.add(\n 'pageListItem',\n 'uk-flex',\n 'uk-flex-middle',\n app.activePage === page.id ? 'activePage' : 'inactivePage'\n )\n pageListItem.innerHTML = `\n
    \n
    ${page.name}
    \n
    ${DateTime.fromFormat(page.id, 'yyyyMMddHHmmssSSS').toFormat('FF')}
    \n
    \n
    \n \n
    \n
    Rename
    \n
    Duplicate
    \n
    Delete
    \n
    \n
    \n `\n\n pageListItem.addEventListener('click', (event) => {\n if (event.target.parentNode.dataset.action === 'load') {\n loadPage(page.id)\n\n UIkit.offcanvas('#sidePanel').hide()\n }\n\n switch (event.target.dataset.action) {\n case 'rename':\n UIkit.dropdown(event.target.parentNode).hide(0)\n renamePage(page.id)\n break\n case 'delete':\n deletePage(page.id)\n break\n case 'duplicate':\n duplicatePage(page.id)\n break\n }\n })\n\n $('#pageList').appendChild(pageListItem)\n })\n\n generateIcons()\n}\n\n/**\n * Load page\n *\n * @param {string} pageId Id of the page to load\n */\nexport function loadPage(pageId) {\n const page = store.get('pages').find((page) => page.id === pageId)\n const cursor = page.cursor\n\n app.activePage = pageId\n\n store.set('lastPage', pageId)\n\n $('#pageName').innerHTML = page.name\n $('#pageName').title = page.name\n\n cm.setValue(page.data)\n\n if (page.history) {\n cm.setHistory(page.history)\n }\n\n cm.execCommand('goLineEnd')\n\n if (cursor) {\n cm.setCursor(cursor)\n\n setTimeout(() => {\n try {\n cm.scrollIntoView({ ch: cursor.ch, line: cursor.line + 1 })\n } catch {\n cm.scrollIntoView(cursor)\n }\n }, 100)\n }\n\n populatePages()\n}\n\n/** Generate default page */\nexport function defaultPage() {\n const pageId = DateTime.local().toFormat('yyyyMMddHHmmssSSS')\n const pageName = getPageName()\n\n store.set('pages', [{ id: pageId, name: pageName, data: store.get('input') || '' }])\n\n localStorage.removeItem('input')\n\n loadPage(pageId)\n}\n\n/**\n * Create new page\n *\n * @param {boolean} isImport Is the new page imported? true | false\n */\nexport function newPage(isImport) {\n const pageId = DateTime.local().toFormat('yyyyMMddHHmmssSSS')\n const pages = store.get('pages')\n const pageName =\n $('#newPageTitleInput').value.replace(/<|>/g, '').trim() || (isImport ? 'Imported page' : getPageName())\n\n const pageNames = pages.map((p) => p.name)\n\n if (pageNames.includes(pageName)) {\n notify(`\"${pageName}\" already exists. Please choose a different page name.`, 'danger')\n return\n }\n\n app.activePage = pageId\n\n pages.push({ id: pageId, name: pageName, data: '' })\n\n store.set('pages', pages)\n store.set('lastPage', pageId)\n\n cm.setValue('')\n\n populatePages()\n\n $('#pageName').innerHTML = pageName\n\n modal.hide('#dialog-newPage')\n}\n\n/**\n * Delete page\n *\n * @param {string} pageId Id of the page to delete\n */\nexport function deletePage(pageId) {\n let pages = store.get('pages')\n\n confirm('\"' + pages.find((page) => page.id === pageId).name + '\" will be deleted.', () => {\n pages = pages.filter((page) => page.id !== pageId)\n\n store.set('pages', pages)\n\n if (pages.length === 0) {\n defaultPage()\n } else if (pageId === app.activePage) {\n loadPage(pages.pop().id)\n }\n\n populatePages()\n })\n}\n\n/**\n * Rename page\n *\n * @param {string} pageId Id of the page to rename\n */\nexport function renamePage(pageId) {\n const pages = store.get('pages')\n const page = pages.find((page) => page.id === pageId)\n\n $('#renamePageTitleInput').value = page.name\n\n modal.show('#dialog-renamePage')\n\n function rename() {\n page.name = $('#renamePageTitleInput').value.replace(/<|>/g, '').trim() || getPageName()\n\n store.set('pages', pages)\n\n populatePages()\n\n $('#pageName').innerHTML = page.name\n\n modal.hide('#dialog-renamePage')\n\n $('#dialog-renamePage-save').removeEventListener('click', rename)\n }\n\n $('#dialog-renamePage-save').addEventListener('click', rename)\n}\n\n/**\n * Duplicate page\n *\n * @param {string} pageId Id of the page to duplicate\n */\nexport function duplicatePage(pageId) {\n const dupPageId = DateTime.local().toFormat('yyyyMMddHHmmssSSS')\n const pages = store.get('pages')\n const dupPage = pages.find((page) => page.id === pageId)\n const dupPageData = dupPage.data\n const dupPageName = dupPage.name + ' (copy)'\n\n app.activePage = dupPageId\n\n pages.push({ id: dupPageId, name: dupPageName, data: dupPageData })\n\n store.set('pages', pages)\n\n loadPage(dupPageId)\n}\n\n/** Sort page list\n *\n * @param {string} by Sort by argument - oldnew | newold | az | za\n */\nexport function sortPages(by) {\n const pages = store.get('pages')\n\n let sortedPages\n\n switch (by) {\n case 'oldnew':\n sortedPages = pages.sort((a, b) => a.id - b.id)\n break\n case 'newold':\n sortedPages = pages.sort((a, b) => b.id - a.id)\n break\n case 'az':\n sortedPages = pages.sort((a, b) => a.name.localeCompare(b.name))\n break\n case 'za':\n sortedPages = pages.sort((a, b) => b.name.localeCompare(a.name))\n break\n }\n\n store.set('pages', sortedPages)\n\n populatePages()\n\n UIkit.dropdown('#sortDropdown').hide(0)\n}\n\n/** Sort page list after drag */\nexport function pageOrder() {\n const pages = store.get('pages')\n const pageList = $all('#pageList > div')\n const orderedPages = [...pageList].map((el) => pages.find((page) => page.id === el.getAttribute('id')))\n\n store.set('pages', orderedPages)\n}\n\nexport function deleteAllPages() {\n confirm('All pages will be deleted permanently.', () => {\n store.set('pages', [])\n\n defaultPage()\n\n populatePages()\n })\n}\n\nfunction newPageDialog() {\n $('#newPageTitleInput').value = ''\n $('#newPageTitleInput').focus()\n\n modal.show('#dialog-newPage')\n}\n\n$('#newPageButton').addEventListener('click', newPageDialog)\n\n$('#newPageButtonSP').addEventListener('click', newPageDialog)\n\n$('#dialog-newPage-save').addEventListener('click', () => {\n newPage(false)\n})\n\n$('#newPageTitleInput').addEventListener('keyup', (event) => {\n if (event.key === 'Enter' || event.keyCode === 13) {\n $('#dialog-newPage-save').click()\n }\n})\n\n$('#deleteAllPagesButton').addEventListener('click', deleteAllPages)\n\n$('#renamePageTitleInput').addEventListener('keyup', (event) => {\n if (event.key === 'Enter' || event.keyCode === 13) {\n $('#dialog-renamePage-save').click()\n }\n})\n\n$('#sortOldNew').addEventListener('click', () => {\n sortPages('oldnew')\n})\n\n$('#sortNewOld').addEventListener('click', () => {\n sortPages('newold')\n})\n\n$('#sortAZ').addEventListener('click', () => {\n sortPages('az')\n})\n\n$('#sortZA').addEventListener('click', () => {\n sortPages('za')\n})\n\n$('#closeSidePanelButton').addEventListener('click', () => {\n UIkit.offcanvas('#sidePanel').hide()\n})\n\n$('#printButton').addEventListener('click', () => {\n window.print()\n})\n\nif (isElectron) {\n // Import calculations from file\n $('#importButton').addEventListener('click', numara.import)\n\n numara.importData((event, data, msg) => {\n newPage(true)\n\n cm.setValue(data)\n\n notify(msg, 'success')\n })\n\n numara.importDataError((event, error) => {\n notify(error, 'danger')\n })\n\n numara.main.import(numara.import)\n\n // Export calculations to file\n $('#exportButton').addEventListener('click', () => {\n const pages = store.get('pages')\n const page = pages.find((page) => page.id === app.activePage).name\n numara.export(page, cm.getValue())\n })\n\n numara.exportData((event, msg) => {\n notify(msg, 'success')\n })\n\n numara.exportDataError((event, error) => {\n notify(error, 'danger')\n })\n\n numara.main.export(() => {\n numara.export($('#newPageTitleInput').value, cm.getValue())\n })\n\n // Print window from main\n numara.main.print(() => {\n UIkit.offcanvas('#sidePanel').hide()\n\n window.print()\n })\n} else {\n $all('#exportButton, #importButton, #spDivider').forEach((el) => el.remove())\n}\n", "import { $, app, store } from './common'\nimport { udfInput, uduInput } from './editor'\nimport { showError } from './modal'\n\n/**\n * User defined functions and units.\n *\n * @param {string} input User defined function or unit to apply.\n * @param {string} type 'func' | 'unit'\n */\nexport function applyUdfu(input, type) {\n return new Promise(function (resolve, reject) {\n try {\n const loadUD =\n type === 'func'\n ? new Function(`'use strict'; let window; let numara; math.import({${input}}, {override: true})`)\n : new Function(`'use strict'; let window; let numara; math.createUnit({${input}}, {override: true})`)\n\n loadUD()\n\n const UDFunc = new Function(`'use strict'; return {${input}}`)\n\n for (const f in UDFunc()) {\n app[type === 'func' ? 'udfList' : 'uduList'].push(f)\n }\n\n store.set(type === 'func' ? 'udf' : 'udu', input)\n\n resolve()\n } catch (error) {\n reject(error)\n }\n })\n}\n\n$('#dialog-udfu-save-f').addEventListener('click', () => {\n applyUdfu(udfInput.getValue().trim(), 'func')\n .then(() => {\n location.reload()\n })\n .catch((error) => {\n showError(error.name, error.message)\n })\n})\n\n$('#dialog-udfu-save-u').addEventListener('click', () => {\n applyUdfu(uduInput.getValue().trim(), 'unit')\n .then(() => {\n location.reload()\n })\n .catch((error) => {\n showError(error.name, error.message)\n })\n})\n", "/**\n * A single press of a keybinding sequence\n */\nexport type KeyBindingPress = [mods: string[], key: string | RegExp]\n\n/**\n * A map of keybinding strings to event handlers.\n */\nexport interface KeyBindingMap {\n\t[keybinding: string]: (event: KeyboardEvent) => void\n}\n\nexport interface KeyBindingHandlerOptions {\n\t/**\n\t * Keybinding sequences will wait this long between key presses before\n\t * cancelling (default: 1000).\n\t *\n\t * **Note:** Setting this value too low (i.e. `300`) will be too fast for many\n\t * of your users.\n\t */\n\ttimeout?: number\n}\n\n/**\n * Options to configure the behavior of keybindings.\n */\nexport interface KeyBindingOptions extends KeyBindingHandlerOptions {\n\t/**\n\t * Key presses will listen to this event (default: \"keydown\").\n\t */\n\tevent?: \"keydown\" | \"keyup\"\n\n\t/**\n\t * Key presses will use a capture listener (default: false)\n\t */\n\tcapture?: boolean\n}\n\n/**\n * These are the modifier keys that change the meaning of keybindings.\n *\n * Note: Ignoring \"AltGraph\" because it is covered by the others.\n */\nlet KEYBINDING_MODIFIER_KEYS = [\"Shift\", \"Meta\", \"Alt\", \"Control\"]\n\n/**\n * Keybinding sequences should timeout if individual key presses are more than\n * 1s apart by default.\n */\nlet DEFAULT_TIMEOUT = 1000\n\n/**\n * Keybinding sequences should bind to this event by default.\n */\nlet DEFAULT_EVENT = \"keydown\" as const\n\n/**\n * Platform detection code.\n * @see https://github.com/jamiebuilds/tinykeys/issues/184\n */\nlet PLATFORM = typeof navigator === \"object\" ? navigator.platform : \"\"\nlet APPLE_DEVICE = /Mac|iPod|iPhone|iPad/.test(PLATFORM)\n\n/**\n * An alias for creating platform-specific keybinding aliases.\n */\nlet MOD = APPLE_DEVICE ? \"Meta\" : \"Control\"\n\n/**\n * Meaning of `AltGraph`, from MDN:\n * - Windows: Both Alt and Ctrl keys are pressed, or AltGr key is pressed\n * - Mac: ⌥ Option key pressed\n * - Linux: Level 3 Shift key (or Level 5 Shift key) pressed\n * - Android: Not supported\n * @see https://github.com/jamiebuilds/tinykeys/issues/185\n */\nlet ALT_GRAPH_ALIASES =\n\tPLATFORM === \"Win32\" ? [\"Control\", \"Alt\"] : APPLE_DEVICE ? [\"Alt\"] : []\n\n/**\n * There's a bug in Chrome that causes event.getModifierState not to exist on\n * KeyboardEvent's for F1/F2/etc keys.\n */\nfunction getModifierState(event: KeyboardEvent, mod: string) {\n\treturn typeof event.getModifierState === \"function\"\n\t\t? event.getModifierState(mod) ||\n\t\t\t\t(ALT_GRAPH_ALIASES.includes(mod) && event.getModifierState(\"AltGraph\"))\n\t\t: false\n}\n\n/**\n * Parses a \"Key Binding String\" into its parts\n *\n * grammar = ``\n * = ` ...`\n * = `` or `+`\n * = `++...`\n * = `` or `` (case-insensitive)\n * = `()` -> `/^$/` (case-sensitive)\n */\nexport function parseKeybinding(str: string): KeyBindingPress[] {\n\treturn str\n\t\t.trim()\n\t\t.split(\" \")\n\t\t.map(press => {\n\t\t\tlet mods = press.split(/\\b\\+/)\n\t\t\tlet key: string | RegExp = mods.pop() as string\n\t\t\tlet match = key.match(/^\\((.+)\\)$/)\n\t\t\tif (match) {\n\t\t\t\tkey = new RegExp(`^${match[1]}$`)\n\t\t\t}\n\t\t\tmods = mods.map(mod => (mod === \"$mod\" ? MOD : mod))\n\t\t\treturn [mods, key]\n\t\t})\n}\n\n/**\n * This tells us if a single keyboard event matches a single keybinding press.\n */\nexport function matchKeyBindingPress(\n\tevent: KeyboardEvent,\n\t[mods, key]: KeyBindingPress,\n): boolean {\n\t// prettier-ignore\n\treturn !(\n\t\t// Allow either the `event.key` or the `event.code`\n\t\t// MDN event.key: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key\n\t\t// MDN event.code: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code\n\t\t(\n\t\t\tkey instanceof RegExp ? !(key.test(event.key) || key.test(event.code)) :\n\t\t\t(key.toUpperCase() !== event.key.toUpperCase() &&\n\t\t\tkey !== event.code)\n\t\t) ||\n\n\t\t// Ensure all the modifiers in the keybinding are pressed.\n\t\tmods.find(mod => {\n\t\t\treturn !getModifierState(event, mod)\n\t\t}) ||\n\n\t\t// KEYBINDING_MODIFIER_KEYS (Shift/Control/etc) change the meaning of a\n\t\t// keybinding. So if they are pressed but aren't part of the current\n\t\t// keybinding press, then we don't have a match.\n\t\tKEYBINDING_MODIFIER_KEYS.find(mod => {\n\t\t\treturn !mods.includes(mod) && key !== mod && getModifierState(event, mod)\n\t\t})\n\t)\n}\n\n/**\n * Creates an event listener for handling keybindings.\n *\n * @example\n * ```js\n * import { createKeybindingsHandler } from \"../src/keybindings\"\n *\n * let handler = createKeybindingsHandler({\n * \t\"Shift+d\": () => {\n * \t\talert(\"The 'Shift' and 'd' keys were pressed at the same time\")\n * \t},\n * \t\"y e e t\": () => {\n * \t\talert(\"The keys 'y', 'e', 'e', and 't' were pressed in order\")\n * \t},\n * \t\"$mod+d\": () => {\n * \t\talert(\"Either 'Control+d' or 'Meta+d' were pressed\")\n * \t},\n * })\n *\n * window.addEvenListener(\"keydown\", handler)\n * ```\n */\nexport function createKeybindingsHandler(\n\tkeyBindingMap: KeyBindingMap,\n\toptions: KeyBindingHandlerOptions = {},\n): EventListener {\n\tlet timeout = options.timeout ?? DEFAULT_TIMEOUT\n\n\tlet keyBindings = Object.keys(keyBindingMap).map(key => {\n\t\treturn [parseKeybinding(key), keyBindingMap[key]] as const\n\t})\n\n\tlet possibleMatches = new Map()\n\tlet timer: number | null = null\n\n\treturn event => {\n\t\t// Ensure and stop any event that isn't a full keyboard event.\n\t\t// Autocomplete option navigation and selection would fire a instanceof Event,\n\t\t// instead of the expected KeyboardEvent\n\t\tif (!(event instanceof KeyboardEvent)) {\n\t\t\treturn\n\t\t}\n\n\t\tkeyBindings.forEach(keyBinding => {\n\t\t\tlet sequence = keyBinding[0]\n\t\t\tlet callback = keyBinding[1]\n\n\t\t\tlet prev = possibleMatches.get(sequence)\n\t\t\tlet remainingExpectedPresses = prev ? prev : sequence\n\t\t\tlet currentExpectedPress = remainingExpectedPresses[0]\n\n\t\t\tlet matches = matchKeyBindingPress(event, currentExpectedPress)\n\n\t\t\tif (!matches) {\n\t\t\t\t// Modifier keydown events shouldn't break sequences\n\t\t\t\t// Note: This works because:\n\t\t\t\t// - non-modifiers will always return false\n\t\t\t\t// - if the current keypress is a modifier then it will return true when we check its state\n\t\t\t\t// MDN: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/getModifierState\n\t\t\t\tif (!getModifierState(event, event.key)) {\n\t\t\t\t\tpossibleMatches.delete(sequence)\n\t\t\t\t}\n\t\t\t} else if (remainingExpectedPresses.length > 1) {\n\t\t\t\tpossibleMatches.set(sequence, remainingExpectedPresses.slice(1))\n\t\t\t} else {\n\t\t\t\tpossibleMatches.delete(sequence)\n\t\t\t\tcallback(event)\n\t\t\t}\n\t\t})\n\n\t\tif (timer) {\n\t\t\tclearTimeout(timer)\n\t\t}\n\n\t\ttimer = setTimeout(possibleMatches.clear.bind(possibleMatches), timeout)\n\t}\n}\n\n/**\n * Subscribes to keybindings.\n *\n * Returns an unsubscribe method.\n *\n * @example\n * ```js\n * import { tinykeys } from \"../src/tinykeys\"\n *\n * tinykeys(window, {\n * \t\"Shift+d\": () => {\n * \t\talert(\"The 'Shift' and 'd' keys were pressed at the same time\")\n * \t},\n * \t\"y e e t\": () => {\n * \t\talert(\"The keys 'y', 'e', 'e', and 't' were pressed in order\")\n * \t},\n * \t\"$mod+d\": () => {\n * \t\talert(\"Either 'Control+d' or 'Meta+d' were pressed\")\n * \t},\n * })\n * ```\n */\nexport function tinykeys(\n\ttarget: Window | HTMLElement,\n\tkeyBindingMap: KeyBindingMap,\n\t{ event = DEFAULT_EVENT, capture, timeout }: KeyBindingOptions = {},\n): () => void {\n\tlet onKeyEvent = createKeybindingsHandler(keyBindingMap, { timeout })\n\ttarget.addEventListener(event, onKeyEvent, capture)\n\treturn () => {\n\t\ttarget.removeEventListener(event, onKeyEvent, capture)\n\t}\n}\n", "import { checkColorChange, colors } from './colors'\nimport { $, $all, app, store } from './common'\nimport { copyAll } from './context'\nimport { cm, refreshEditor, udfInput, uduInput } from './editor'\nimport { calculate } from './eval'\nimport { generateIcons } from './icons'\nimport { modal, notify, showError } from './modal'\nimport { plot } from './plot'\nimport { settings } from './settings'\nimport { defaultPage, lastPage, loadPage, migrateSaved, getPageName, pageOrder, populatePages } from './pages'\nimport { applyUdfu } from './userDefined'\nimport { checkSize, checkUpdates, isMac, isElectron, toggleMinMax } from './utils'\n\nimport { author, description, homepage, name, version } from './../../package.json'\n\nimport { tinykeys } from 'tinykeys'\n\nimport UIkit from 'uikit'\n\ndocument.title = description\n\n// Set theme and maximize if needed\nif (isElectron) {\n numara.themeUpdate(settings.apply)\n numara.fullscreen()\n}\n\n// Set headers\nif (isElectron && !isMac) {\n $('#header-mac').remove()\n $('#header-win').style.display = 'block'\n $('#header-win-title').innerHTML = name\n\n $('#max').style.display = numara.isMaximized() ? 'none' : 'block'\n $('#unmax').style.display = numara.isMaximized() ? 'block' : 'none'\n\n $('#min').addEventListener('click', numara.minimize)\n $('#max').addEventListener('click', numara.maximize)\n $('#unmax').addEventListener('click', numara.unmaximize)\n $('#close').addEventListener('click', numara.close)\n\n numara.isMax((event, isMax) => {\n $('#unmax').style.display = isMax ? 'block' : 'none'\n $('#max').style.display = isMax ? 'none' : 'block'\n })\n\n $('#header-win').addEventListener('dblclick', toggleMinMax)\n} else {\n $('#header-win').remove()\n $('#header-mac').style.display = 'block'\n $('#header-mac-title').innerHTML = name\n\n if (isElectron) {\n $('#header-mac').addEventListener('dblclick', toggleMinMax)\n }\n}\n\n// Generate app icons\ngenerateIcons()\n\n// Initialize theme colors\ncolors.initialize()\ncolors.apply()\n\n// Initialize settings\nsettings.initialize()\nsettings.apply()\n\n// Set user defined values\nif (!store.get('pages')) {\n defaultPage()\n} else {\n app.activePage = lastPage()\n loadPage(lastPage())\n}\n\nmigrateSaved()\n\n// Set user defined values\nif (!store.get('udf')) {\n store.set('udf', '')\n}\n\nif (!store.get('udu')) {\n store.set('udu', '')\n}\n\napplyUdfu(store.get('udf'), 'func')\napplyUdfu(store.get('udu'), 'unit')\n\n// Populate saved calculation\npopulatePages()\n\n// Action buttons\n$('#clearButton').addEventListener('click', () => {\n if (cm.getValue() !== '') {\n cm.setValue('')\n cm.focus()\n\n calculate()\n }\n})\n\n$('#copyButton').addEventListener('click', () => {\n copyAll()\n})\n\n$('#udfuButton').addEventListener('click', () => {\n modal.show('#dialog-udfu')\n})\n\n$('#settingsButton').addEventListener('click', () => {\n modal.show('#dialog-settings')\n})\n\n// Set app info\n$('#dialog-about-copyright').innerHTML = `Copyright \u00A9\uFE0F ${new Date().getFullYear()} ${author.name}`\n$('#dialog-about-appVersion').innerHTML = isElectron\n ? `Version ${version}`\n : `Version ${version}\n `\n$('#gitLink').setAttribute('href', homepage)\n$('#webLink').setAttribute('href', author.url)\n$('#licenseLink').setAttribute('href', homepage + '/blob/master/LICENSE')\n$('#helpLink').setAttribute('href', homepage + '/wiki')\n\nif (isElectron) {\n $('#logsLink').parentElement.style.display = 'block'\n $('#logsLink').addEventListener('click', numara.openLogs)\n}\n\n$('#aboutButton').addEventListener('click', () => {\n modal.show('#dialog-about')\n})\n\n// Output panel actions\n$('#output').addEventListener('click', (event) => {\n switch (event.target.className) {\n case 'answer':\n navigator.clipboard.writeText(event.target.dataset.copy)\n\n notify(`Copied '${event.target.dataset.copy}' to clipboard.`)\n\n break\n case 'plotButton': {\n const func = event.target.getAttribute('data-func')\n\n app.plotFunction = func.startsWith('line') ? app.mathScope[func] : func\n\n try {\n $('#plotCrossModal').checked = app.settings.plotCross\n $('#plotDerivativeModal').checked = app.settings.plotDerivative\n $('#plotGridModal').checked = app.settings.plotGrid\n\n plot()\n\n modal.show('#dialog-plot')\n } catch (error) {\n showError('Error', error)\n }\n\n break\n }\n case 'lineError':\n showError('Error on Line ' + event.target.getAttribute('data-line'), event.target.getAttribute('data-error'))\n\n break\n }\n\n event.stopPropagation()\n})\n\n// Clear input selections when clicked in output panel\n$('#output').addEventListener('mousedown', () => {\n const sels = document.getElementsByClassName('CodeMirror-selected')\n\n while (sels[0]) {\n sels[0].classList.remove('CodeMirror-selected')\n }\n})\n\n// Panel resizer\nlet resizeDelay\nlet isResizing = false\n\nconst panel = $('#panel')\nconst divider = $('#panelDivider')\n\n// Set divider tooltip.\nconst dividerTooltip = () => {\n divider.title =\n $('#input').style.width === settings.defaults.inputWidth + '%' ? 'Drag to resize' : 'Double click to reset position'\n}\n\ndivider.addEventListener('dblclick', () => {\n app.settings.inputWidth = settings.defaults.inputWidth\n\n store.set('settings', app.settings)\n\n settings.apply()\n\n dividerTooltip()\n})\n\ndivider.addEventListener('mousedown', (event) => {\n isResizing = event.target === divider\n})\n\n$('#panel').addEventListener('mouseup', () => {\n isResizing = false\n})\n\n$('#panel').addEventListener('mousemove', (event) => {\n if (isResizing) {\n const offset = app.settings.lineNumbers ? 12 : 27\n const pointerRelativeXpos = event.clientX - panel.offsetLeft - offset\n const iWidth = (pointerRelativeXpos / panel.clientWidth) * 100\n const inputWidth = iWidth < 0 ? 0 : iWidth > 100 ? 100 : iWidth\n\n $('#input').style.width = inputWidth + '%'\n\n app.settings.inputWidth = inputWidth\n\n store.set('settings', app.settings)\n\n clearTimeout(resizeDelay)\n\n resizeDelay = setTimeout(calculate, 10)\n }\n\n dividerTooltip()\n})\n\n// Tooltip defaults\nUIkit.mixin({ data: { offset: 5 } }, 'tooltip')\n\n// Initiate theme dialog\nUIkit.util.on('#dialog-theme', 'shown', checkColorChange)\n\n// Initiate settings dialog\nUIkit.util.on('#dialog-settings', 'beforeshow', settings.prep)\n\nlet udTab = 1\n\n// Prepare user defined dialog inputs\nUIkit.util.on('#dialog-udfu', 'shown', (event) => {\n if (event.target.id === 'dialog-udfu') {\n const udf = store.get('udf').trim()\n const udu = store.get('udu').trim()\n\n refreshEditor(udTab === 1 ? udfInput : uduInput)\n\n udfInput.setValue(udf)\n uduInput.setValue(udu)\n }\n})\n\nUIkit.util.on('#udfTab', 'shown', () => {\n udTab = 1\n refreshEditor(udfInput)\n})\n\nUIkit.util.on('#uduTab', 'shown', () => {\n udTab = 2\n refreshEditor(uduInput)\n})\n\n// Focus on input when dialog is closed\nUIkit.util.on('.modal', 'hidden', () => {\n setTimeout(() => {\n cm.focus()\n }, 100)\n})\n\n// Plot dialog\nUIkit.util.on('#dialog-plot', 'shown', plot)\nUIkit.util.on('#dialog-plot', 'hide', () => {\n app.activePlot = false\n})\n\n// Save page sort order after move\nUIkit.util.on('#pageList', 'moved', () => {\n pageOrder()\n populatePages()\n})\n\n// Save dialog title focus on shown\nUIkit.util.on('#dialog-newPage', 'shown', () => {\n $('#newPageTitleInput').setAttribute('placeholder', getPageName())\n $('#newPageTitleInput').focus()\n})\n\n// Focus rename input on show\nUIkit.util.on('#dialog-renamePage', 'shown', () => {\n setTimeout(() => {\n $('#renamePageTitleInput').focus()\n $('#renamePageTitleInput').select()\n }, 20)\n})\n\nUIkit.util.on('#sidePanel', 'hidden', () => {\n setTimeout(() => {\n cm.focus()\n }, 20)\n})\n\n// Prevent CM refresh if keydown\ndocument.addEventListener('keydown', (event) => {\n app.refreshCM = !event.repeat\n})\n\ndocument.addEventListener('keyup', () => {\n app.refreshCM = true\n})\n\n// Relayout plot on window resize\nlet windowResizeDelay\n\nwindow.addEventListener('resize', () => {\n if (app.activePlot && $('#dialog-plot').classList.contains('uk-open')) {\n plot()\n }\n\n clearTimeout(windowResizeDelay)\n\n windowResizeDelay = setTimeout(calculate, 10)\n\n checkSize()\n})\n\n// Sync scroll\nlet inputScroll = false\nlet outputScroll = false\n\nconst inputPanel = $('.CodeMirror-scroll')\nconst outputPanel = $('#output')\n\ninputPanel.addEventListener('scroll', () => {\n if (!inputScroll) {\n outputScroll = true\n\n outputPanel.scrollTop = inputPanel.scrollTop\n }\n\n inputScroll = false\n})\n\noutputPanel.addEventListener('scroll', () => {\n if (!outputScroll) {\n inputScroll = true\n\n inputPanel.scrollTop = outputPanel.scrollTop\n }\n\n outputScroll = false\n\n $('#scrollTop').style.display = outputPanel.scrollTop > 50 ? 'block' : 'none'\n})\n\n$('#scrollTop').addEventListener('click', () => {\n inputPanel.scroll({ top: 0, behavior: 'smooth' })\n outputPanel.scroll({ top: 0, behavior: 'smooth' })\n})\n\n// Keyboard shortcuts\nconst keys = {\n clearButton: ['$mod+D'],\n newPageButton: ['$mod+N'],\n printButton: ['$mod+P'],\n sidePanelButton: ['Shift+TAB']\n}\n\nfor (const [button, command] of Object.entries(keys)) {\n tinykeys(window, {\n [command]: (event) => {\n event.preventDefault()\n\n if ($all('.uk-open').length === 0) {\n $('#' + button).click()\n } else if ($('#sidePanel').classList.contains('uk-open') && !$('#dialog-newPage').classList.contains('uk-open')) {\n $('#closeSidePanelButton').click()\n }\n }\n })\n}\n\n// Check for updates.\ncheckUpdates()\n\n// Restart button if update is installed\n$('#updateButton').addEventListener('click', () => {\n numara.updateApp()\n})\n\n// Developer Tools\nif (isElectron) {\n $('#dialog-about-appVersion').addEventListener('click', (event) => {\n if (event.detail === 9) {\n numara.openDevTools()\n }\n })\n}\n\n// Print\nwindow.addEventListener('beforeprint', () => {\n const printArea = document.createElement('div')\n\n printArea.setAttribute('id', 'printArea')\n printArea.className = 'printArea'\n printArea.innerHTML = `\n
    ${name}
    \n `\n\n document.body.appendChild(printArea)\n\n cm.eachLine((line) => {\n const lineNo = cm.getLineNumber(line)\n const input = cm.getLine(lineNo)\n const answer = $('#output').children[lineNo].innerText\n const row = `\n \n ${app.settings.lineNumbers ? '' : ''}\n \n \n `\n\n $('#printPage').innerHTML += row\n })\n\n printArea.innerHTML += `
    ' + (lineNo + 1) + '${input}${answer}
    `\n})\n\nwindow.addEventListener('afterprint', () => {\n $('#printArea').remove()\n})\n\nsetTimeout(() => {\n cm.focus()\n}, 500)\n"], + "mappings": "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O,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,CACF,EACA,KAAM,CACJ,GAAI,CACF,KAAM,GACN,MAAO,EACP,WAAY,EACd,EACA,KAAM,CACJ,KAAM,OACN,MAAO,GACP,WAAY,EACd,EACA,MAAO,CACL,KAAM,QACN,MAAO,IACP,WAAY,EACd,EACA,KAAM,CACJ,KAAM,OACN,MAAO,IACP,WAAY,EACd,EACA,KAAM,CACJ,KAAM,OACN,MAAO,IACP,WAAY,EACd,EACA,KAAM,CACJ,KAAM,OACN,MAAO,IACP,WAAY,EACd,EACA,KAAM,CACJ,KAAM,OACN,MAAO,KACP,WAAY,EACd,EACA,KAAM,CACJ,KAAM,OACN,MAAO,KACP,WAAY,EACd,EACA,IAAK,CACH,KAAM,MACN,MAAO,KACP,WAAY,EACd,EACA,MAAO,CACL,KAAM,QACN,MAAO,KACP,WAAY,EACd,EACA,MAAO,CACL,KAAM,QACN,MAAO,KACP,WAAY,EACd,EACA,MAAO,CACL,KAAM,QACN,MAAO,KACP,WAAY,EACd,EACA,OAAQ,CACN,KAAM,SACN,MAAO,KACP,WAAY,EACd,EACA,KAAM,CACJ,KAAM,OACN,MAAO,GACP,WAAY,EACd,EACA,MAAO,CACL,KAAM,QACN,MAAO,IACP,WAAY,EACd,EACA,MAAO,CACL,KAAM,QACN,MAAO,KACP,WAAY,EACd,EACA,MAAO,CACL,KAAM,QACN,MAAO,KACP,WAAY,EACd,EACA,KAAM,CACJ,KAAM,OACN,MAAO,KACP,WAAY,EACd,EACA,KAAM,CACJ,KAAM,OACN,MAAO,MACP,WAAY,EACd,EACA,MAAO,CACL,KAAM,QACN,MAAO,MACP,WAAY,EACd,EACA,KAAM,CACJ,KAAM,OACN,MAAO,MACP,WAAY,EACd,EACA,MAAO,CACL,KAAM,QACN,MAAO,MACP,WAAY,EACd,EACA,MAAO,CACL,KAAM,QACN,MAAO,MACP,WAAY,EACd,EACA,MAAO,CACL,KAAM,QACN,MAAO,MACP,WAAY,EACd,EACA,OAAQ,CACN,KAAM,SACN,MAAO,MACP,WAAY,EACd,CACF,EACA,QAAS,CACP,GAAI,CACF,KAAM,GACN,MAAO,EACP,WAAY,EACd,EACA,GAAI,CACF,KAAM,KACN,MAAO,IACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,IACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,IACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,IACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,CACF,EACA,MAAO,CACL,GAAI,CACF,KAAM,GACN,MAAO,EACP,WAAY,EACd,EACA,GAAI,CACF,KAAM,KACN,MAAO,IACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,IACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,IACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,MACP,WAAY,EACd,CACF,EACA,gBAAiB,CACf,GAAI,CACF,KAAM,GACN,MAAO,EACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,IACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,IACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,IACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,EACA,EAAG,CACD,KAAM,IACN,MAAO,KACP,WAAY,EACd,CACF,EACA,iBAAkB,CAChB,GAAI,CACF,KAAM,GACN,MAAO,EACP,WAAY,EACd,EACA,GAAI,CACF,KAAM,KACN,MAAO,KACP,WAAY,EACd,EACA,GAAI,CACF,KAAM,KACN,MAAO,KAAK,IAAI,KAAM,CAAC,EACvB,WAAY,EACd,EACA,GAAI,CACF,KAAM,KACN,MAAO,KAAK,IAAI,KAAM,CAAC,EACvB,WAAY,EACd,EACA,GAAI,CACF,KAAM,KACN,MAAO,KAAK,IAAI,KAAM,CAAC,EACvB,WAAY,EACd,EACA,GAAI,CACF,KAAM,KACN,MAAO,KAAK,IAAI,KAAM,CAAC,EACvB,WAAY,EACd,EACA,GAAI,CACF,KAAM,KACN,MAAO,KAAK,IAAI,KAAM,CAAC,EACvB,WAAY,EACd,EACA,GAAI,CACF,KAAM,KACN,MAAO,KAAK,IAAI,KAAM,CAAC,EACvB,WAAY,EACd,EACA,GAAI,CACF,KAAM,KACN,MAAO,KAAK,IAAI,KAAM,CAAC,EACvB,WAAY,EACd,CACF,EACA,eAAgB,CACd,GAAI,CACF,KAAM,GACN,MAAO,EACP,WAAY,EACd,EACA,KAAM,CACJ,KAAM,OACN,MAAO,IACP,WAAY,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,SAAU,CACR,SAAU,CACR,YAAa,EACf,EACA,SAAU,CACR,MAAO,EACT,CACF,CACF,EAAG,CACD,EAAG,uBAEH,SAAU,CACR,SAAU,CACR,YAAa,EACf,EACA,SAAU,CACR,MAAO,EACT,CACF,CACF,EAAG,CACD,EAAG,uBAEH,SAAU,CACR,SAAU,CACR,YAAa,EACf,EACA,SAAU,CACR,MAAO,EACT,CACF,CACF,EAAG,CACD,EAAG,WACH,EAAG,QACL,EAAG,CACD,EAAG,KACH,EAAG,UACL,EAEA,CACE,EAAG,iBACH,EAAG,oBACH,OAAQ,EACV,EAEA,CACE,EAAG,UACH,EAAG,UACL,EAEA,CACE,EAAG,OACH,EAAG,SACL,EAAG,CACD,EAAG,8BACH,SAAU,CACR,SAAU,CACR,YAAa,EACf,CACF,CACF,EAAG,CACD,EAAG,oCACH,SAAU,CACR,SAAU,CACR,YAAa,EACf,CACF,CACF,EAEA,CACE,EAAG,iCACH,SAAU,CACR,OAAQ,CACN,MAAO,EACT,CACF,CACF,EAEA,CACE,EAAG,4BACH,EAAG,8BACL,EAAG,CACD,EAAG,+DACH,SAAU,CACR,OAAQ,CACN,MAAO,EACT,CACF,CACF,EAAG,CACD,EAAG,+DACH,SAAU,CACR,OAAQ,CACN,MAAO,EACT,CACF,CACF,EAAG,CACD,EAAG,+DACH,SAAU,CACR,OAAQ,CACN,MAAO,EACT,CACF,CACF,EAAG,CACD,EAAG,MACH,EAAG,KACL,EAAG,CACD,EAAG,uBACH,SAAU,CACR,OAAQ,CACN,MAAO,EACT,CACF,CACF,EAAG,CACD,EAAG,2BACH,SAAU,CACR,OAAQ,CACN,MAAO,EACT,CACF,CACF,EAKAD,EAIA,CACE,EAAG,aACH,SAAU,CACR,IAAK,CACH,MAAO,EACT,CACF,CACF,EAAG,CACD,EAAG,OACH,EAAG,GACL,EAAG,CACD,EAAG,YACH,EAAG,UACL,EAEA,CACE,EAAG,gBACH,EAAG,YACL,EAEA,CACE,EAAG,2BACH,EAAG,+BACL,EAAG,CACD,EAAG,2BACH,EAAG,+BACL,EAEA,CACE,EAAG,wBACH,SAAU,CACR,SAAU,CACR,YAAa,EACf,CACF,CACF,EAAG,CACD,EAAG,wBACH,SAAU,CACR,SAAU,CACR,YAAa,EACf,CACF,CACF,EAAG,CACD,EAAG,8BACH,SAAU,CACR,SAAU,CACR,YAAa,EACf,CACF,CACF,EAAG,CACD,EAAG,uBACH,SAAU,CACR,OAAQ,CACN,MAAO,EACT,EACA,SAAU,CACR,YAAa,EACf,CACF,CACF,EAAG,CACD,EAAG,8DACH,SAAU,CACR,SAAU,CACR,YAAa,EACf,CACF,CACF,EAAG,CACD,EAAG,8DACH,SAAU,CACR,SAAU,CACR,YAAa,EACf,CACF,CACF,EAAG,CACD,EAAG,YACH,EAAG,UACL,EAAG,CACD,EAAG,wBACH,SAAU,CACR,SAAU,CACR,YAAa,EACf,CACF,CACF,EAAG,CACD,EAAG,wBACH,SAAU,CACR,SAAU,CACR,YAAa,EACf,CACF,CACF,EAAGA,EAIH,CACE,EAAG,qBACH,SAAU,CACR,SAAU,CACR,MAAO,EACT,CACF,CACF,EAAG,CACD,EAAG,qBAEH,SAAU,CACR,SAAU,CACR,MAAO,EACT,EACA,SAAU,CACR,YAAa,EACf,CACF,CACF,EAEA,CACE,EAAG,iBACH,SAAU,CACR,IAAK,CACH,YAAa,EACf,CACF,EACA,cAAe,CACb,IAAK,CACH,YAAa,EACf,CACF,CACF,EAAG,CACD,EAAG,iBACH,SAAU,CACR,SAAU,CACR,YAAa,EACf,CACF,EACA,cAAe,CACb,SAAU,CACR,YAAa,EACf,CACF,CACF,EAGA,CACE,EAAG,QACH,EAAG,MACL,EAEA,CACE,EAAG,UACH,EAAG,QACL,EAAG,CACD,EAAG,oBAEH,SAAU,CACR,SAAU,CACR,YAAa,EACf,CACF,CACF,EAAG,CACD,EAAG,sBACH,SAAU,CACR,SAAU,CACR,YAAa,EACf,CACF,CACF,EAAG,CACD,EAAG,cACH,SAAU,CACR,SAAU,CACR,YAAa,EACf,CACF,CACF,EAAG,CACD,EAAG,MACH,EAAG,GACL,EAEA,CACE,EAAG,yBAEH,SAAU,CACR,SAAU,CACR,YAAa,EACf,CACF,CAC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", + "names": ["require_uikit", "__commonJSMin", "exports", "module", "global", "factory", "hasOwnProperty", "toString", "hasOwn", "obj", "key", "hyphenateRe", "hyphenate", "memoize", "str", "camelizeRe", "camelize", "_", "c", "ucfirst", "startsWith", "search", "_a", "endsWith", "includes", "findIndex", "array", "predicate", "isArray", "toArray", "assign", "isFunction", "isObject", "isPlainObject", "isWindow", "isDocument", "nodeType", "isNode", "isElement", "isBoolean", "value", "isString", "isNumber", "isNumeric", "isEmpty", "isUndefined", "toBoolean", "toNumber", "number", "toFloat", "toNode", "element", "toNodes", "toWindow", "document", "isEqual", "other", "each", "val", "swap", "a", "b", "match", "last", "cb", "sortBy", "prop", "propA", "propB", "sumBy", "iteratee", "sum", "item", "uniqueBy", "seen", "check", "pick", "props", "res", "clamp", "min", "max", "noop", "intersectRect", "rects", "minProp", "maxProp", "pointInRect", "point", "rect", "ratio", "dimensions", "aProp", "contain", "maxDimensions", "cover$1", "Dimensions", "getIndex", "i", "elements", "current", "finite", "length", "fn", "cache", "args", "addClass", "classes", "node", "add", "toClasses", "cls", "hasClass", "removeClass", "remove", "replaceClass", "oldClass", "newClass", "toggleClass", "force", "cls2", "attr", "name", "el", "removeAttr", "hasAttr", "element2", "data", "attribute", "inBrowser", "isRtl", "hasTouch", "hasPointerEvents", "pointerDown$1", "pointerMove$1", "pointerUp$1", "pointerEnter", "pointerLeave", "pointerCancel", "voidElements", "isVoidElement", "isVisibleFn", "isVisible", "selInput", "isInput", "matches", "selFocusable", "isFocusable", "parent", "filter$1", "selector", "parents", "children", "children2", "index", "ref", "isSameSiteAnchor", "part", "getTargetedElement", "hash", "ownerDocument", "id", "query", "context", "find", "getContext", "queryAll", "findAll", "_query", "parseSelector", "addStarRe", "splitSelectorRe", "isContextSelector", "selectors", "sel", "positionRe", "parsePositionSelector", "position", "queryFn", "parsed", "_doQuery", "isSingle", "positionSel", "ctx", "domPath", "names", "escape", "tagName", "css", "on", "targets", "types", "listener", "useCapture", "getArgs", "detail", "selfFilter", "delegate", "type", "target", "off", "once", "condition", "off2", "e", "result", "trigger", "event", "detail2", "toEventTargets", "createEvent", "bubbles", "cancelable", "isEventTarget", "toEventTarget", "isTouch", "getEventPos", "_b", "x", "y", "cssNumber", "property", "priority", "propName", "style", "prefix", "prefixedName", "clsTransition", "transitionEnd", "transitionCanceled", "transition$1", "duration", "timing", "resolve", "reject", "timer", "Transition", "clsAnimation", "animationEnd", "animationCanceled", "animate$2", "animation", "origin", "out", "Animation", "ready", "isTag", "tagNames", "empty", "$", "html", "parent2", "html2", "append", "prepend", "applyFn", "before", "after", "nodes", "fragment", "unwrapSingle", "remove$1", "wrapAll", "structure", "wrapInner", "unwrap", "self", "singleTagRe", "container", "apply", "isHtml", "$$", "dirs$1", "dimensions$1", "height", "width", "offset", "coordinates", "currentOffset", "scrollY", "scrollX", "offsetBy", "dir", "top", "left", "body", "documentElement", "offsetParent", "parentOffset", "offsetPosition", "offset2", "win", "dimension", "doc", "boxModelAdjust", "sizing", "prop2", "flipPosition", "pos", "toPx", "offsetDim", "parseCalc", "value2", "unit", "parseUnit", "percent", "getViewportHeight", "calcRe", "calc", "unitRe$1", "base", "vh", "vhEl", "fastdom", "read", "write", "clear", "flush", "reads", "writes", "task", "scheduleFlush", "scheduled", "runTasks", "tasks", "MouseTracker", "p", "right", "bottom", "prevPosition", "path", "diagonal", "intersection", "intersect", "x1", "y1", "x2", "y2", "x3", "y3", "x4", "y4", "denominator", "ua", "observeIntersection", "options", "intersecting", "observer", "entries", "observer2", "entry", "hasResizeObserver", "observeResize", "observe$1", "cb2", "observeViewportResize", "observeMutation", "Observer", "play", "isIFrame", "call", "isHTML5", "pause", "mute", "isYoutube", "isVimeo", "cmd", "enableApi", "post", "stateKey", "counter", "youtube", "vimeo", "poller", "isInView", "offsetTop", "offsetLeft", "overflowParents", "offsetViewport", "scrollIntoView", "parents2", "scrollParents", "scrollElement", "scrollTop", "scrollHeight", "offsetHeight", "viewport", "maxScroll", "elHeight", "elTop", "scrollTo", "targetEl", "scroll", "getDuration", "start", "isScrollingElement", "scrollingElement", "targetTop", "prev", "frames", "step", "ease", "diff", "getCoveringElement", "dist", "k", "scrolledOver", "startOffset", "endOffset", "scrollParent", "viewportHeight", "elementOffsetTop", "end", "scrollable", "scrollEl", "ancestors", "fixedIndex", "window", "documentScrollingElement", "useWindow", "scale", "viewportElement", "subpixel", "coverEl", "hasPosition", "zIndex", "dirs", "positionAt", "getPosition", "attachTo", "boundary", "viewportOffset", "placement", "getViewport$2", "isWithin", "attach", "flip", "scrollArea", "getScrollArea", "applyOffset", "newPos", "flipAxis", "targetDim", "elOffset", "targetOffset", "moveBy", "dim", "getIntersectionArea", "commonScrollParents", "axis", "area", "positionA", "positionB", "flipAttach", "flipOffset", "flipAttachAxis", "newAttach", "util", "Class", "units", "countdown", "timespan", "getTimeSpan", "digits", "digit", "date", "total", "strats", "concatStrat", "parentVal", "childVal", "vm", "mergeFnData", "vm2", "defaultStrat", "mergeOptions", "child", "mixin", "mergeKey", "parseOptions", "options2", "option", "coerce$1", "toList", "listRe", "initUpdates", "instance", "prependUpdate", "update", "callUpdate", "runUpdates", "events", "resize", "observe", "mutation", "lazyload", "preload", "el2", "isIntersecting", "handler", "scroll$1", "toScrollTargets", "swipe", "e2", "swipeDirection", "observe2", "emit", "Margin", "$el", "getRows", "rows", "row", "sorted", "withOffset", "getOffset", "offsetCurrent", "j", "offsetCurrent2", "offsetWidth", "slide", "action", "awaitFrame", "currentProps", "getProps$1", "targetProps", "targetStyle", "targetPropsTo", "propsTo", "propsFrom", "getTransitionProps", "attrsTo", "transitions", "resetProps", "opacity", "getPositionWithMargin", "from", "clsLeave", "clsEnter", "fade", "stagger", "transitionIndex", "propsIn", "propsOut", "wrapIndexFn", "leaveFn", "getTransitionNodes", "enterFn", "oldHeight", "newHeight", "transitionNodes", "awaitTimeout", "waitTransitionend", "next", "timeout", "Animate", "keyMap", "filter", "attrItem", "toggles", "actives", "toggle", "button", "findButton", "list", "prevState", "newState", "mergeState", "isEqualState", "state", "animate", "matchFilter", "filterFn", "applyState", "getFilter", "attr2", "stateA", "stateB", "sort", "order", "sortItems", "group", "stateFilter", "stateSort", "stateOrder", "prevented", "preventBackgroundScroll", "offMove", "clientHeight", "Container", "Togglable", "transition", "show", "promise", "toggleInstant", "toggleTransition", "toggleAnimation", "done", "toggled", "changed", "_toggle", "velocity", "mode", "startProp", "dimProp", "marginProp", "marginStartProp", "currentDim", "inProgress", "prevProps", "currentMargin", "marginStart", "endDim", "wrapper", "endProps", "cmp", "active$1", "Modal", "selPanel", "bgClose", "selClose", "defaultPrevented", "modal", "handlers", "preventBackgroundFocus", "listenForBackgroundClose$1", "listenForEscClose$1", "animate$1", "transitionElement", "toMs", "time", "newTarget", "Animations$2", "translate", "translated", "Transitioner$1", "easing", "withResolvers", "percent2", "linear", "triggerUpdate", "props2", "I18n", "params", "_c", "SliderAutoplay", "autoplay", "pointerOptions", "pointerUpOptions", "pointerDown", "pointerMove", "pointerUp", "preventClick", "SliderDrag", "selList", "hasSelectableText", "distance", "slides", "prevIndex", "dis", "nextIndex", "getDistance", "edge", "itemShown", "dirChange", "initWatches", "watches", "watch", "registerWatch", "runWatches", "values", "immediate", "initComputed", "computed", "registerComputed", "mutationOptions", "_computed", "$props", "initComputedUpdates", "resetComputed", "initEvents", "registerEvent", "capture", "passive", "initObservers", "registerObservable", "observable", "targets2", "updateTargets", "initProps", "$options", "getProps", "methods", "opts", "data$1", "getAttributes", "attributes", "initPropsObserver", "records", "attributeName", "callHook", "hook", "callConnected", "callDisconnected", "uid", "init$1", "normalizeData", "initData", "initMethods", "data2", "App", "PREFIX", "DATA", "components$2", "component", "createComponent", "opt", "Component", "init", "getComponent", "getComponents", "attachToElement", "detachFromElement", "globalApi", "plugin", "component2", "Super", "Sub", "parentEl", "updateElement", "components", "instanceApi", "removeEl", "generateId", "SliderNav", "selNav", "nav", "items", "ariaLabel", "ariaControls", "selNavItem", "parallax", "keyCode", "active", "easeOutQuad", "easeOutQuart", "Slider", "speedUp", "stack", "queueIndex", "reset", "getDirection", "transitioner", "Slideshow", "Animations2", "Animations$1", "scale3d", "Animations", "LightboxPanel", "close", "closeLabel", "src", "alt", "poster", "attrs", "iframeAttrs", "img", "createEl", "video", "content", "tag", "lightbox", "install$3", "toItem", "source", "UIkit", "Lightbox", "notification", "install$2", "posClass", "containerAttr", "margin", "removeFn", "Media", "media", "toMedia", "getMaxPathLength", "stroke", "transformFn", "colorFn", "cssPropFn", "strokeFn", "backgroundFn", "keys", "Parallax", "fillObject", "properties", "stops", "css2", "getUnit", "transformFn2", "stop", "parseStops", "getValue", "getCssValue", "parseColor", "getStop", "color", "bgProps", "backgroundCoverFn", "positions", "getBackgroundPos", "setBackgroundPosFn", "dimImage", "getBackgroundImageDimensions", "dimEl", "down", "overflow", "loading", "image", "toDimensions", "nullIndex", "leftPercent", "targetPercent", "unitRe", "defaultUnit", "keys2", "getOffsetElement", "viewport2", "SliderParallax", "parallaxTarget", "slidePercent", "triggerShow", "triggerShown", "triggerHide", "triggerHidden", "useTriggers", "clsSlideActive", "SliderReactive", "SliderPreload", "Transitioner", "center", "getLeft", "to", "getWidth", "itemIn", "itemOut", "isActive", "isIn", "isOut", "translateIn", "getElLeft", "nextActives", "inView", "temp", "centerEl", "getMax", "listLeft", "listWidth", "listRight", "slideLeft", "slideRight", "slider", "isFinite", "lft", "enabled", "sets", "slideWidth", "avgWidth", "slideIndex", "currentIndex", "activeClasses", "focusable", "currentLeft", "scrollDist", "slideDist", "getMaxElWidth", "listHalf", "slidesInView", "nextSlide", "slide2", "sliderParallax", "getCurrentPercent", "slideshow", "sortable", "handle", "handles", "placeholder", "findTarget", "previous", "insertTarget", "findInsertTarget", "appendDrag", "trackScroll", "throttle", "untrackScroll", "clsPlaceholder", "clsItem", "sortable2", "trackTimer", "height2", "clone", "sameList", "isHorizontal", "placeholderRect", "sameRow", "linesIntersect", "pointerPos", "lengthProp", "endProp", "single", "isHorizontal2", "rectA", "rectB", "lineA", "lineB", "throttled", "Position", "restoreScrollPosition", "storeScrollPosition", "elDim", "tooltip", "makeFocusable", "delay", "title", "parseProps", "titleAttr", "align", "getAlignment", "upload", "transfer", "files", "file", "match$1", "chunks", "chunk", "files2", "xhr", "ajax", "env", "xhr2", "pattern", "size", "url", "send", "header", "components$1", "boot", "connect", "handleMutation", "addedNodes", "removedNodes", "disconnect", "getComponentName", "components2", "Accordion", "isOpen", "hide", "keepScrollPosition", "activeItems", "index2", "hide2", "transition2", "currentHeight", "endHeight", "frame", "alert", "Video", "isPlaying", "videoEl", "cover", "getPositionedParent", "useObjectFit", "intrinsic", "coverHeight", "coverWidth", "coverDim", "drop", "boundaryX", "boundaryY", "targetX", "targetY", "createToggleComponent", "listenForResize", "listenForEscClose", "listenForBackgroundClose", "listenForScroll", "listenForScrollClose", "viewports", "getViewport$1", "maxWidth", "positionOffset", "Dropnav", "dropbarAnchor", "dropbar", "clsDrop", "dropdowns", "active2", "handleNavItemNavigation", "dropContainer", "adjustHeight", "maxBottom", "formCustom", "input", "grid", "parallaxJustify", "masonry", "positionedAbsolute", "gutter", "getGutter", "columns", "translates", "applyMasonry", "transpose", "columnHeights", "column", "scrollColumns", "parallaxStart", "parallaxEnd", "hgt", "padding", "scrolled", "rowHeights", "push", "heightMatch", "elements2", "heights", "getHeight", "heightPlaceholder", "heightViewport", "expand", "minHeight", "box", "offsetTopEl", "closeIcon", "closeLarge", "dropParentIcon", "marker", "navParentIconLarge", "navParentIcon", "navbarParentIcon", "navbarToggleIcon", "overlayIcon", "paginationNext", "paginationPrevious", "searchIcon", "searchLarge", "searchMedium", "slidenavNextLarge", "slidenavNext", "slidenavPreviousLarge", "slidenavPrevious", "spinner", "totop", "Svg", "svg", "insertSVG", "applyWidthAndHeight", "root", "equals", "viewBox", "icons", "Icon", "install$1", "icon", "getIcon", "IconComponent", "NavParentIcon", "Search", "isToggle", "label", "Spinner", "ButtonComponent", "Slidenav", "NavbarToggleIcon", "Close", "Marker", "Totop", "PaginationNext", "PaginationPrevious", "added", "svg2", "name2", "aliases", "applyRtl", "isImg", "setSrcAttrs", "getImageFromElement", "parentNode", "setSourceProps", "srcProps", "sourceEl", "sources", "wrapInPicture", "parseSources", "picture", "inverse", "findTargetColor", "checkVisibility", "leader", "fill", "install", "dialog", "message", "openDialog", "i18n", "tmpl", "hideFn", "submitFn", "clsNavbarTransparent", "navbar", "justify", "containers", "awaitMacroTask", "offcanvas", "clsFlip", "overlay", "clsOverlay", "clsMode", "clsSidebarAnimation", "clsContainerAnimation", "swiping", "suppressUserScale", "resumeUserScale", "getViewport", "overflowAuto", "selContainer", "selContent", "responsive", "registerClick", "unregisterClick", "instances", "clickHandler", "clsInView", "scrollspy", "inview", "removeAnimationClasses", "scrollspyNav", "closest", "links", "sticky", "selTarget", "coerce", "getVisibleParent", "height$1", "dynamicViewport", "maxScrollHeight", "preventTransition", "referenceElement", "offset$1", "topOffset", "parseProp", "prevScroll", "prevDir", "overflowScroll", "scroll2", "isScrollUpdate", "initTimestamp", "below", "now", "offsetParentTop", "propOffset", "refElement", "clsTransitionDisable", "applyAttributes", "applyAnimation", "parseSVG", "loadSVG", "response", "parseSymbols", "symbolRe", "symbols", "selDisabled", "Switcher", "connects", "connectChildren", "isVertical", "itemNav", "tab", "KEY_SPACE", "expanded", "m", "link", "mediaObj", "leaving", "isLeaving", "require_deep_diff", "__commonJSMin", "exports", "module", "root", "factory", "deepDiff", "_deepdiff", "validKinds", "inherits", "ctor", "superCtor", "Diff", "kind", "path", "DiffEdit", "origin", "value", "DiffNew", "DiffDeleted", "DiffArray", "index", "item", "arrayRemove", "arr", "from", "to", "rest", "realTypeOf", "subject", "type", "hashThisString", "string", "hash", "i", "char", "getOrderIndependentHash", "object", "accum", "arrayString", "key", "keyValueString", "stringToHash", "lhs", "rhs", "changes", "prefilter", "stack", "orderIndependent", "currentPath", "alt", "ltype", "rtype", "j", "k", "other", "ldefined", "rdefined", "a", "b", "akeys", "pkeys", "observableDiff", "observer", "orderIndependentDeepDiff", "accumulateDiff", "difference", "accumulateOrderIndependentDiff", "applyArrayChange", "change", "it", "u", "applyChange", "target", "source", "last", "revertArrayChange", "revertChange", "applyDiff", "filter", "onChange", "ok", "notOk", "undef", "NOT_TYPED_FUNCTION", "create", "isPlainObject", "x", "_types", "anyType", "typeMap", "typeList", "nConversions", "typed", "findType", "typeName", "type", "message", "name", "otherName", "addTypes", "types", "beforeSpec", "beforeIndex", "newTypes", "i", "affectedTypes", "clear", "clearConversions", "findTypeNames", "value", "matches", "isTypedFunction", "entity", "findSignature", "fn", "signature", "options", "exact", "stringSignature", "params", "parseSignature", "canonicalSignature", "stringifyParams", "match", "nParams", "remainingSignatures", "want", "filteredSignatures", "possibility", "have", "getParamAtIndex", "haveTypes", "paramTypeSet", "wtype", "candidate", "find", "convert", "conversions", "separator", "p", "parseParam", "param", "restParam", "typeDefs", "s", "hasAny", "paramName", "expandParam", "typeNames", "t", "matchingConversions", "availableConversions", "newName", "convertibleTypes", "conversion", "rawSignature", "rawParams", "parsedParam", "hasRestParam", "last", "compileTest", "test0", "test1", "tests", "compileTests", "initial", "varIndex", "lastTest", "testRestParam", "args", "index", "getTypeSetAtIndex", "isExactType", "mergeExpectedParams", "signatures", "typeSet", "paramSet", "createError", "err", "expected", "_name", "matchingSignatures", "nextMatchingDefs", "test", "actualTypes", "lengths", "maxLength", "argTypes", "getLowestTypeIndex", "min", "getLowestConversionIndex", "compareParams", "param1", "param2", "typeDiff", "convDiff", "compareSignatures", "signature1", "signature2", "pars1", "pars2", "last1", "last2", "hasRest1", "hasRest2", "any1", "conv1", "par", "any2", "conv2", "lengthCriterion", "comparisons", "tc", "thisComparison", "c", "t1", "t2", "knownTypes", "newMatch", "compileArgsPreprocessing", "fnConvert", "compiledConversions", "compileArgConversion", "fnPreprocess", "offset", "slice", "conversion0", "conversion1", "arg", "splitParams", "_splitParams", "paramsSoFar", "resultingParams", "exactTypes", "flatMap", "nextParam", "conflicting", "params1", "params2", "ii", "typeSet1", "typeSet2", "overlap", "len1", "len2", "restParam1", "restParam2", "clearResolutions", "functionList", "isReferToSelf", "referToSelf", "isReferTo", "makeReferTo", "collectResolutions", "references", "signatureMap", "resolvedReferences", "reference", "resolution", "resolveReferences", "self", "resolvedFunctions", "isResolved", "leftUnresolved", "nothingResolved", "validateDeprecatedThis", "signaturesMap", "deprecatedThisRegex", "createTypedFunction", "rawSignaturesMap", "parsedParams", "originalFunctions", "preliminarySignatures", "pp", "functionIndex", "conversionParams", "sp", "spName", "theTypedFn", "internalSignatureMap", "ok0", "ok1", "ok2", "ok3", "ok4", "ok5", "allOk", "test00", "test10", "test20", "test30", "test40", "test50", "test01", "test11", "test21", "test31", "test41", "test51", "fn0", "fn1", "fn2", "fn3", "fn4", "fn5", "len0", "len3", "len4", "len5", "iStart", "iEnd", "fns", "generic", "arg0", "arg1", "_onMismatch", "arr", "start", "end", "findInArray", "callback", "referTo", "objectOrFn", "checkName", "nameSoFar", "getObjectName", "obj", "key", "mergeSignatures", "dest", "source", "saveTyped", "maybeName", "named", "allSignatures", "item", "theseSignatures", "thisName", "beforeObjectTest", "before", "_validateConversion", "to", "existing", "other", "existingConversion", "tf", "argList", "sigs", "typedFunction", "require_naturalSort", "__commonJSMin", "exports", "module", "naturalSort", "a", "b", "re", "sre", "dre", "hre", "ore", "i", "s", "x", "y", "xN", "yN", "xD", "yD", "oFxNcL", "oFyNcL", "cLoc", "numS", "require_dist", "__commonJSMin", "exports", "module", "_extends", "target", "i", "source", "key", "defaultEscapes", "formatEscapes", "defaultEscapeMapFn", "str", "_ref", "_ref$preserveFormatti", "preserveFormatting", "_ref$escapeMapFn", "escapeMapFn", "runningStr", "result", "escapes", "escapeKeys", "_loop", "specialCharFound", "index", "require_alea", "__commonJSMin", "exports", "module", "global", "define", "Alea", "seed", "me", "mash", "Mash", "t", "copy", "f", "impl", "opts", "xg", "state", "prng", "n", "data", "i", "h", "require_xor128", "__commonJSMin", "exports", "module", "global", "define", "XorGen", "seed", "me", "strseed", "t", "k", "copy", "f", "impl", "opts", "xg", "state", "prng", "top", "bot", "result", "require_xorwow", "__commonJSMin", "exports", "module", "global", "define", "XorGen", "seed", "me", "strseed", "t", "k", "copy", "f", "impl", "opts", "xg", "state", "prng", "top", "bot", "result", "require_xorshift7", "__commonJSMin", "exports", "module", "global", "define", "XorGen", "seed", "me", "X", "i", "t", "v", "w", "init", "j", "copy", "f", "impl", "opts", "xg", "state", "prng", "top", "bot", "result", "require_xor4096", "__commonJSMin", "exports", "module", "global", "define", "XorGen", "seed", "me", "w", "X", "i", "t", "v", "init", "j", "limit", "copy", "f", "impl", "opts", "xg", "state", "prng", "top", "bot", "result", "require_tychei", "__commonJSMin", "exports", "module", "global", "define", "XorGen", "seed", "me", "strseed", "b", "c", "d", "a", "k", "copy", "f", "t", "impl", "opts", "xg", "state", "prng", "top", "bot", "result", "require_seedrandom", "__commonJSMin", "exports", "module", "global", "pool", "math", "width", "chunks", "digits", "rngname", "startdenom", "significance", "overflow", "mask", "nodecrypto", "seedrandom", "seed", "options", "callback", "key", "shortseed", "mixkey", "flatten", "tostring", "autoseed", "arc4", "ARC4", "prng", "n", "d", "x", "is_math_call", "state", "copy", "t", "keylen", "me", "i", "j", "s", "count", "r", "f", "obj", "depth", "result", "typ", "prop", "stringseed", "smear", "out", "browser", "plugins", "a", "require_seedrandom", "__commonJSMin", "exports", "module", "alea", "xor128", "xorwow", "xorshift7", "xor4096", "tychei", "sr", "require_tiny_emitter", "__commonJSMin", "exports", "module", "E", "name", "callback", "ctx", "e", "self", "listener", "data", "evtArr", "i", "len", "evts", "liveEvents", "require_jstat", "__commonJSMin", "exports", "module", "window", "factory", "jStat", "Math", "undefined", "concat", "slice", "toString", "calcRdx", "n", "m", "val", "isArray", "arg", "isFunction", "isNumber", "num", "toVector", "arr", "args", "i", "fn", "obj", "j", "index", "submat", "ind", "column", "a", "nrow", "res", "row", "objArr", "rows", "cols", "func", "toAlter", "ncol", "col", "retZero", "retOne", "retIdent", "size", "min", "max", "length", "hival", "step", "current", "cnt", "start", "end", "rl", "_slice", "list", "rcSlice", "colSlice", "rowSlice", "A", "B", "nl", "ml", "diagArray", "mat", "t", "jProto", "funcs", "passfunc", "self", "results", "ascNum", "b", "clip", "sum", "mean", "tmp", "prod", "low", "high", "hash", "_arr", "logs", "meanOfLogs", "arrlen", "diffs", "arrLen", "distinctNumbers", "numberCounts", "number", "sortedDistinctNumbers", "numberRanks", "currentRank", "count", "first", "last", "rank", "maxCount", "numMaxCount", "mode_arr", "flag", "sumsqerr", "samples", "dev", "median", "quantilesArray", "alphap", "betap", "sortedArray", "quantileVals", "p", "aleph", "k", "gamma", "exclusive", "realIndex", "frac", "score", "kind", "counter", "len", "strict", "value", "binCnt", "binWidth", "bins", "arr1", "arr2", "u", "v", "arr1Len", "sq_dev", "mu", "sigma", "skewSum", "fullbool", "tmpthis", "callbackFunction", "argsToPass", "curriedFunction", "vector", "x", "cof", "ser", "xx", "y", "x0", "x2", "xp", "gl", "gl0", "q", "fact", "xden", "xnum", "z", "yi", "aln", "ap", "del", "c", "d", "h", "ITMAX", "an", "fpmin", "qab", "qap", "qam", "m2", "aa", "a1", "EPS", "gln", "err", "pp", "lna1", "afac", "isneg", "dd", "ty", "b1", "lna", "lnb", "al", "w", "bt", "shape", "oalph", "a2", "newthis", "vals", "fnfunc", "alpha", "beta", "df1", "df2", "f", "x1", "local", "scale", "dof", "rate", "ncp", "tol", "min_iterations", "flip", "prob", "lastvalue", "std", "dof2", "betinc", "eps", "a0", "b0", "m9", "c9", "betacdf", "s", "r", "N", "scaledPDF", "samplesDone", "scaledCDF", "factor", "l", "sumarr", "L", "lam", "U", "V", "slam", "loglam", "invalpha", "vr", "us", "laplaceSign", "tukeyWprob", "rr", "cc", "nleg", "ihalf", "C1", "C2", "C3", "bb", "wlar", "wincr1", "wincr2", "xleg", "aleg", "qsqz", "pr_w", "wincr", "blb", "binc", "bub", "einsum", "cc1", "wi", "elsum", "jj", "ac", "qexpo", "pplus", "pminus", "rinsum", "tukeyQinv", "p0", "q0", "p1", "q1", "p2", "q2", "p3", "q3", "p4", "q4", "c1", "c2", "c3", "c4", "c5", "vmax", "ps", "nmeans", "df", "nlegq", "ihalfq", "eps1", "eps2", "dhaf", "dquar", "deigh", "dlarg", "ulen1", "ulen2", "ulen3", "ulen4", "xlegq", "alegq", "f2", "f2lf", "f21", "ff4", "ulen", "ans", "otsum", "twa1", "t1", "wprb", "rotsum", "maxiter", "valx0", "valx1", "iter", "xabs", "push", "isUsable", "nrescols", "rescols", "left", "right", "nnorm", "newarr", "result", "det", "determinant", "submatrix", "sign", "maug", "pivot", "temp", "y2", "maxrow", "parts", "matrix_mode", "R", "T", "xv", "xk", "range", "qr2", "R_I", "I", "Aj", "cAi", "Ij", "cIi", "qr_solve", "array_mode", "QR", "Q", "attrs", "Q1", "R1", "RI", "Q2", "condition", "e", "ev", "maxim", "theta", "t_j", "u_j", "order", "k1", "k2", "u_j1", "k3", "k4", "h1", "g", "X", "pos", "h_min", "y1", "F", "dF", "dl", "temp1", "D", "temp2", "Y", "Bt", "C", "Vt", "sides", "zscore", "tscore", "expVar", "sample", "sampMean", "sampSampMean", "tmpargs", "unexpVar", "anovafscore", "fscore", "mean1", "mean2", "n1", "n2", "sd", "qscore", "arrays", "means", "change", "pvalue", "differenceOfProportions", "pooled", "se", "sub_regress", "exog", "var_count", "modelList", "endog_index", "exog_index", "ols", "endog", "nobs", "df_model", "df_resid", "coef", "predict", "resid", "ybar", "SSE", "SSR", "SST", "R2", "t_test", "model", "subModelList", "sigmaHat", "seBetaHat", "mod", "tStatistic", "pValue", "leftppf", "interval95", "F_test", "F_statistic", "fcdf", "ols_wrap", "ttest", "ftest", "adjust_R2", "matrixRows", "array", "jMat", "pass", "jMatX", "jMatY", "innerinv", "xtransp", "next", "compile", "jMatYBar", "yAverage", "covar", "sds", "ts", "inner", "yBar", "ssr", "sse", "sst", "require_bessel", "__commonJSMin", "exports", "BESSEL", "factory", "module", "M", "_horner", "arr", "v", "i", "z", "_bessel_iter", "x", "n", "f0", "f1", "sign", "tdx", "f2", "o", "_bessel_wrap", "bessel0", "bessel1", "name", "nonzero", "b0", "b1", "besselj", "W", "b0_a1a", "b0_a2a", "b0_a1b", "b0_a2b", "a", "a1", "a2", "y", "xx", "b1_a1a", "b1_a2a", "b1_a1b", "b1_a2b", "ret", "m", "jsum", "bjp", "sum", "bj", "bjm", "tox", "j", "bessely", "besseli", "b0_a", "b0_b", "b1_a", "b1_b", "bip", "bi", "bim", "besselk", "require_codemirror", "__commonJSMin", "exports", "module", "global", "factory", "userAgent", "platform", "gecko", "ie_upto10", "ie_11up", "edge", "ie", "ie_version", "webkit", "qtwebkit", "chrome", "chrome_version", "presto", "safari", "mac_geMountainLion", "phantom", "ios", "android", "mobile", "mac", "chromeOS", "windows", "presto_version", "flipCtrlCmd", "captureRightClick", "classTest", "cls", "rmClass", "node", "current", "match", "after", "removeChildren", "e", "count", "removeChildrenAndAdd", "parent", "elt", "tag", "content", "className", "style", "i", "eltP", "range", "start", "end", "endNode", "r", "contains", "child", "activeElt", "rootNode", "doc", "activeElement", "addClass", "joinClasses", "a", "b", "as", "selectInput", "cm", "root", "element", "win", "bind", "f", "args", "copyObj", "obj", "target", "overwrite", "prop", "countColumn", "string", "tabSize", "startIndex", "startValue", "n", "nextTab", "Delayed", "self", "ms", "time", "indexOf", "array", "scrollerGap", "Pass", "sel_dontScroll", "sel_mouse", "sel_move", "findColumn", "goal", "pos", "col", "skipped", "spaceStrs", "spaceStr", "lst", "arr", "map", "out", "insertSorted", "value", "score", "priority", "nothing", "createObj", "base", "props", "inst", "nonASCIISingleCaseWordChar", "isWordCharBasic", "ch", "isWordChar", "helper", "isEmpty", "extendingChars", "isExtendingChar", "skipExtendingChars", "str", "dir", "findFirst", "pred", "from", "to", "midF", "mid", "iterateBidiSections", "order", "found", "part", "bidiOther", "getBidiPartAt", "sticky", "cur", "bidiOrdering", "lowTypes", "arabicTypes", "charType", "code", "bidiRE", "isNeutral", "isStrong", "countsAsLeft", "countsAsNum", "BidiSpan", "level", "direction", "outerType", "len", "types", "i$1", "prev", "type", "i$2", "type$1", "i$3", "prev$1", "type$2", "i$4", "type$3", "replace", "j", "i$5", "cur$1", "type$4", "i$6", "end$1", "before", "replace$1", "j$1", "m", "i$7", "at", "isRTL", "j$2", "nstart", "getOrder", "line", "noHandlers", "on", "emitter", "getHandlers", "off", "index", "signal", "handlers", "signalDOMEvent", "override", "e_defaultPrevented", "signalCursorActivity", "set", "hasHandler", "eventMixin", "ctor", "e_preventDefault", "e_stopPropagation", "e_stop", "e_target", "e_button", "dragAndDrop", "div", "zwspSupported", "zeroWidthElement", "measure", "test", "badBidiRects", "hasBadBidiRects", "txt", "r0", "r1", "splitLinesAuto", "result", "l", "nl", "rt", "hasSelection", "te", "hasCopyEvent", "badZoomedRects", "hasBadZoomedRects", "normal", "fromRange", "modes", "mimeModes", "defineMode", "name", "mode", "defineMIME", "mime", "spec", "resolveMode", "getMode", "options", "mfactory", "modeObj", "modeExtensions", "exts", "prop$1", "extendMode", "properties", "copyState", "state", "nstate", "val", "innerMode", "info", "startState", "a1", "a2", "StringStream", "lineOracle", "ok", "pattern", "consume", "caseInsensitive", "cased", "substr", "inner", "oracle", "getLine", "chunk", "sz", "getBetween", "text", "getLines", "updateLineHeight", "height", "diff", "lineNo", "no", "lineAtHeight", "h", "outer", "lh", "isLine", "lineNumberFor", "Pos", "cmp", "equalCursorPos", "copyPos", "x", "maxPos", "minPos", "clipLine", "clipPos", "last", "clipToLen", "linelen", "clipPosArray", "SavedContext", "lookAhead", "Context", "saved", "copy", "highlightLine", "context", "forceToEnd", "st", "lineClasses", "runMode", "loop", "o", "overlay", "i_end", "getLineStyles", "updateFrontier", "getContextBefore", "resetState", "precise", "display", "findStartLine", "processLine", "startAt", "stream", "callBlankLine", "readToken", "Token", "takeToken", "asArray", "tokens", "extractLineClasses", "output", "lineClass", "flattenSpans", "curStart", "curStyle", "mName", "minindent", "minline", "lim", "search", "indented", "retreatFrontier", "sawReadOnlySpans", "sawCollapsedSpans", "seeReadOnlySpans", "seeCollapsedSpans", "MarkedSpan", "marker", "getMarkedSpanFor", "spans", "span", "removeMarkedSpan", "addMarkedSpan", "op", "inThisOp", "markedSpansBefore", "old", "startCh", "isInsert", "nw", "startsBefore", "endsAfter", "markedSpansAfter", "endCh", "stretchSpansOverChange", "change", "oldFirst", "oldLast", "first", "sameLine", "offset", "span$1", "found$1", "clearEmptySpans", "newMarkers", "gap", "gapMarkers", "removeReadOnlyRanges", "markers", "mark", "parts", "mk", "p", "newParts", "dfrom", "dto", "detachMarkedSpans", "attachMarkedSpans", "extraLeft", "extraRight", "compareCollapsedMarkers", "lenDiff", "aPos", "bPos", "fromCmp", "toCmp", "collapsedSpanAtSide", "sps", "sp", "collapsedSpanAtStart", "collapsedSpanAtEnd", "collapsedSpanAround", "conflictingCollapsedRange", "visualLine", "merged", "visualLineEnd", "visualLineContinued", "lines", "visualLineNo", "lineN", "vis", "visualLineEndNo", "lineIsHidden", "lineIsHiddenInner", "heightAtLine", "lineObj", "lineLength", "findMaxLine", "Line", "markedSpans", "estimateHeight", "updateLine", "estHeight", "cleanUpLine", "styleToClassCache", "styleToClassCacheWithMode", "interpretTokenStyle", "cache", "buildLineContent", "lineView", "builder", "buildToken", "buildTokenBadBidi", "allowFrontierUpdate", "insertLineContent", "defaultSpecialCharPlaceholder", "token", "startStyle", "endStyle", "css", "attributes", "displayText", "splitSpaces", "special", "mustWrap", "txt$1", "tabWidth", "fullStyle", "attr", "trailingBefore", "spaceBefore", "buildCollapsedSpan", "size", "ignoreWidget", "widget", "styles", "allText", "nextChange", "spanStyle", "spanEndStyle", "spanStartStyle", "collapsed", "foundBookmarks", "endStyles", "upto", "tokenText", "LineView", "buildViewArray", "nextPos", "view", "operationGroup", "pushOperation", "fireCallbacksForOps", "group", "callbacks", "finishOperation", "endCb", "orphanDelayedCallbacks", "signalLater", "list", "fireOrphanDelayed", "delayed", "updateLineForChanges", "dims", "updateLineText", "updateLineGutter", "updateLineClasses", "updateLineWidgets", "ensureLineWrapped", "updateLineBackground", "wrap", "getLineContent", "ext", "built", "textClass", "wrap$1", "gutterWrap", "k", "id", "isWidget", "next", "insertLineWidgets", "buildLineElement", "insertLineWidgetsFor", "allowAbove", "ws", "positionLineWidget", "width", "widgetHeight", "parentStyle", "eventInWidget", "paddingTop", "paddingVert", "paddingH", "data", "scrollGap", "displayWidth", "displayHeight", "ensureLineHeights", "rect", "wrapping", "curWidth", "heights", "rects", "mapFromLineView", "updateExternalMeasurement", "measureChar", "bias", "measureCharPrepared", "prepareMeasureForLine", "findViewForLine", "findViewIndex", "getDimensions", "prepared", "varHeight", "key", "measureCharInner", "nullRect", "nodeAndOffsetInLineMap", "collapse", "mStart", "mEnd", "getUsefulRect", "place", "maybeUpdateRectForZooming", "rSpan", "charWidth", "rtop", "rbot", "top", "bot", "scaleX", "scaleY", "clearLineMeasurementCacheFor", "clearLineMeasurementCache", "clearCaches", "pageScrollX", "pageScrollY", "widgetTopHeight", "ref", "widgets", "intoCoordSystem", "includeWidgets", "yOff", "lOff", "xOff", "fromCoordSystem", "coords", "left", "localBox", "lineSpaceBox", "charCoords", "cursorCoords", "preparedMeasure", "get", "right", "getBidi", "partPos", "invert", "other", "estimateCoords", "PosWithInfo", "outside", "xRel", "coordsChar", "y", "coordsCharInner", "rangeEnd", "wrappedLineExtent", "begin", "wrappedLineExtentChar", "targetTop", "boxIsAfter", "box", "ltr", "coordsBidiPartWrapped", "coordsBidiPart", "chAround", "boxAround", "baseX", "atLeft", "atStart", "_lineNo", "closestDist", "endX", "dist", "measureText", "textHeight", "anchor", "pre", "gutterLeft", "compensateForHScroll", "th", "perLine", "widgetsHeight", "estimateLineHeights", "est", "posFromMouse", "liberal", "forRect", "space", "colDiff", "regChange", "lendiff", "resetView", "cut", "viewCuttingPoint", "cut$1", "cutTop", "cutBot", "regLineChange", "oldN", "newN", "adjustView", "countDirtyView", "dirty", "updateSelection", "prepareSelection", "primary", "curFragment", "selFragment", "customCursor", "head", "drawSelectionCursor", "drawSelectionRange", "cursor", "charPos", "otherCursor", "cmpCoords", "fragment", "padding", "leftSide", "rightSide", "docLTR", "add", "bottom", "drawForLine", "fromArg", "toArg", "lineLen", "wrapX", "side", "extent", "fromPos", "toPos", "openStart", "openEnd", "openLeft", "openRight", "topLeft", "topRight", "botLeft", "botRight", "sFrom", "sTo", "fromLine", "toLine", "singleVLine", "leftEnd", "rightStart", "restartBlink", "onBlur", "ensureFocus", "onFocus", "delayBlurEvent", "updateHeightsInViewport", "prevBottom", "viewTop", "oldHeight", "mustScroll", "updateWidgetHeight", "chWidth", "w", "visibleLines", "viewport", "ensureFrom", "ensureTo", "maybeScrollWindow", "doScroll", "scrollNode", "scrollPosIntoView", "margin", "limit", "changed", "endCoords", "scrollPos", "calculateScrollPos", "startTop", "startLeft", "updateScrollTop", "setScrollLeft", "scrollIntoView", "snapMargin", "screentop", "screen", "docBottom", "atTop", "atBottom", "newTop", "gutterSpace", "screenleft", "screenw", "tooWide", "addToScrollTop", "resolveScrollToPos", "ensureCursorVisible", "scrollToCoords", "scrollToRange", "scrollToCoordsRange", "sPos", "updateDisplaySimple", "setScrollTop", "startWorker", "forceScroll", "isScroller", "alignHorizontally", "measureForScrollbars", "gutterW", "docH", "NativeScrollbars", "scroll", "vert", "horiz", "needsH", "needsV", "sWidth", "totalHeight", "totalWidth", "bar", "delay", "maybeDisable", "NullScrollbars", "updateScrollbars", "startWidth", "startHeight", "updateScrollbarsInner", "d", "sizes", "scrollbarModel", "initScrollbars", "axis", "nextOpId", "startOperation", "endOperation", "endOperations", "ops", "endOperation_R1", "endOperation_W1", "endOperation_R2", "endOperation_W2", "endOperation_finish", "maybeClipScrollbars", "DisplayUpdate", "updateDisplayIfNeeded", "takeFocus", "setDocumentHeight", "postUpdateDisplay", "hidden", "unhidden", "runInOp", "operation", "methodOp", "docMethodOp", "highlightWorker", "changedLines", "oldStyles", "highlighted", "oldCls", "newCls", "ischange", "force", "selectionSnapshot", "active", "sel", "restoreSelection", "snapshot", "update", "maybeUpdateLineNumberWidth", "different", "toUpdate", "selSnapshot", "patchDisplay", "barMeasure", "updateNumbersFrom", "lineNumbers", "container", "rm", "updateNumber", "updateGutterSpace", "comp", "align", "innerW", "getGutters", "gutters", "sawLineNumbers", "renderGutters", "specs", "gElt", "updateGutters", "Display", "input", "wheelSamples", "wheelPixelsPerUnit", "wheelEventDelta", "dx", "dy", "wheelEventPixels", "delta", "onScrollWheel", "pixelsPerUnit", "canScrollX", "canScrollY", "pixels", "movedX", "movedY", "sample", "Selection", "ranges", "primIndex", "here", "there", "Range", "normalizeSelection", "mayTouch", "prim", "inv", "simpleSelection", "changeEnd", "adjustForChange", "computeSelAfterChange", "offsetPos", "computeReplacedSel", "changes", "hint", "oldPrev", "newPrev", "loadMode", "resetModeState", "isWholeLineUpdate", "updateDoc", "spansFor", "linesFor", "firstLine", "lastLine", "lastText", "lastSpans", "nlines", "added", "added$1", "added$2", "linkedDocs", "sharedHistOnly", "propagate", "skip", "sharedHist", "rel", "shared", "attachDoc", "setDirectionClass", "directionChanged", "History", "historyChangeFromChange", "histChange", "attachLocalSpans", "clearSelectionEvents", "lastChangeEvent", "hist", "addChangeToHistory", "selAfter", "opId", "pushSelectionToHistory", "selectionEventCanBeMerged", "origin", "addSelectionToHistory", "dest", "existing", "removeClearedSpans", "getOldSpans", "mergeOldSpans", "stretched", "oldCur", "stretchCur", "copyHistoryArray", "events", "newGroup", "instantiateSel", "event", "newChanges", "extendRange", "extend", "posBefore", "extendSelection", "setSelection", "extendSelections", "heads", "newSel", "replaceOneSelection", "setSimpleSelection", "filterSelectionChange", "setSelectionReplaceHistory", "done", "setSelectionNoUndo", "setSelectionInner", "skipAtomicInSelection", "reCheckSelection", "mayClear", "newAnchor", "skipAtomic", "newHead", "skipAtomicInner", "oldPos", "preventCursorLeft", "preventCursorRight", "near", "movePos", "far", "selectAll", "filterChange", "makeChange", "ignoreReadOnly", "split", "makeChangeInner", "makeChangeSingleDoc", "rebased", "rebaseHist", "makeChangeFromHistory", "allowSelectionOnly", "suppress", "source", "antiChanges", "filter", "returned", "shiftDoc", "distance", "shift", "makeChangeSingleDocInEditor", "recomputeMaxLength", "checkWidthStart", "changesHandler", "changeHandler", "replaceRange", "assign", "rebaseHistSelSingle", "rebaseHistArray", "sub", "changeLine", "handle", "changeType", "LeafChunk", "BranchChunk", "children", "remaining", "leaf", "me", "spilled", "sibling", "myIndex", "used", "LineWidget", "opt", "adjustScrollWhenAboveVisible", "this$1", "oldH", "addLineWidget", "aboveVisible", "nextMarkerId", "TextMarker", "withOp", "min", "max", "visual", "dHeight", "markText", "markTextShared", "curLine", "updateMaxLine", "SharedTextMarker", "findSharedMarkers", "copySharedMarkers", "mFrom", "mTo", "subMark", "detachSharedMarkers", "linked", "subMarker", "nextDocId", "Doc", "lineSep", "dup", "undone", "forceSplit", "gen", "histData", "gutterID", "where", "realOpts", "sepSize", "copyHistory", "CodeMirror", "link", "splitIds", "lastDrop", "onDrop", "clearDragCursor", "files", "read", "markAsReadAndPasteIfAllFilesAreRead", "t", "readTextFromFile", "file", "reader", "text$1", "selected", "onDragStart", "img", "onDragOver", "frag", "forEachCodeMirror", "byClass", "editors", "globalsRegistered", "ensureGlobalHandlers", "registerGlobalHandlers", "resizeTimer", "onResize", "keyNames", "keyMap", "normalizeKeyName", "alt", "ctrl", "cmd", "mod", "normalizeKeyMap", "keymap", "keyname", "keys", "lookupKey", "getKeyMap", "isModifierKey", "addModifierNames", "noShift", "keyName", "deleteNearSelection", "compute", "kill", "toKill", "replaced", "moveCharLogically", "moveLogically", "endOfLine", "visually", "moveInStorageOrder", "prep", "moveVisually", "bidi", "mv", "getWrappedLineExtent", "searchInVisualLine", "getRes", "res", "nextCh", "commands", "leftPos", "rightPos", "lineStart", "lineStartSmart", "lineEnd", "spaces", "sels", "firstNonWS", "inWS", "doHandleBinding", "bound", "dropShift", "prevShift", "lookupKeyForEditor", "stopSeq", "dispatchKey", "seq", "dispatchKeyInner", "handleKeyBinding", "handleCharBinding", "lastStoppedKey", "onKeyDown", "handled", "showCrossHair", "lineDiv", "up", "onKeyUp", "onKeyPress", "keyCode", "charCode", "DOUBLECLICK_DELAY", "PastClick", "button", "lastClick", "lastDoubleClick", "clickRepeat", "now", "onMouseDown", "clickInGutter", "repeat", "handleMappedButton", "leftButtonDown", "configureMouse", "option", "behavior", "contained", "leftButtonStartDrag", "leftButtonSelect", "moved", "dragEnd", "mouseMove", "dragStart", "e2", "rangeForUnit", "unit", "ourRange", "ourIndex", "startSel", "lastPos", "extendTo", "startCol", "posCol", "oldRange", "ranges$1", "bidiSimplify", "editorSize", "counter", "curCount", "visible", "move", "anchorLine", "boundary", "headIndex", "usePart", "gutterEvent", "prevent", "mX", "mY", "lineBox", "g", "gutter", "onContextMenu", "contextMenuInGutter", "themeChanged", "Init", "defaults", "optionHandlers", "defineOptions", "deflt", "notOnInit", "newBreaks", "wrappingChanged", "integer", "dragDropChanged", "wasOn", "funcs", "toggle", "registerEventHandlers", "initHooks", "word", "touchFinished", "prevTouch", "finishTouch", "isMouseLikeTouchEvent", "touch", "farAway", "inp", "indentLine", "how", "aggressive", "curSpace", "curSpaceString", "indentation", "indentString", "pos$1", "lastCopied", "setLastCopied", "newLastCopied", "applyTextInput", "inserted", "deleted", "recent", "paste", "textLines", "multiPaste", "updateInput", "changeEvent", "triggerElectric", "handlePaste", "pasted", "copyableRanges", "lineRange", "disableBrowserMagic", "field", "spellcheck", "autocorrect", "autocapitalize", "hiddenTextarea", "addEditorMethods", "helpers", "maps", "overlays", "newRanges", "help", "vspace", "hspace", "amount", "findPosH", "goalColumn", "findPosV", "goals", "headPos", "startChar", "check", "scroller", "interpret", "phraseText", "phrases", "predicate", "origDir", "lineDir", "findNextLine", "moveOnce", "boundToLine", "astral", "sawType", "pageSize", "moveAmount", "ContentEditableInput", "belongsToInput", "onCopyCut", "kludge", "hadFocus", "label", "curAnchor", "domToPos", "curFocus", "posToDOM", "rng", "poll", "isInGutter", "fromIndex", "fromNode", "toIndex", "toNode", "newText", "domTextBetween", "oldText", "cutFront", "cutEnd", "oldTop", "maxCutFront", "newBot", "oldBot", "maxCutEnd", "chFrom", "chTo", "scan", "badPos", "bad", "closing", "extraLinebreak", "recognizeMarker", "close", "addText", "walk", "cmText", "markerID", "isBlock", "lineNode", "locateNodeInLineView", "wrapper", "textNode", "topNode", "find", "curNode", "dist$1", "TextareaInput", "prepareCopyCut", "_display", "opts", "wrapOff", "lineOff", "drawn", "typing", "missed", "prevInput", "same", "reset", "oldCSS", "oldWrapperCSS", "wrapperBox", "oldScrollY", "rehide", "prepareSelectAllHack", "extval", "mouseup", "fromTextArea", "textarea", "hasFocus", "save", "realSubmit", "form", "wrappedSubmit", "addLegacyProps", "dontDelegate", "method", "func", "require_javascript", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "config", "parserConfig", "indentUnit", "statementIndent", "jsonldMode", "jsonMode", "trackScope", "isTS", "wordRE", "keywords", "kw", "type", "A", "B", "C", "D", "operator", "atom", "isOperatorChar", "isJsonldKeyword", "readRegexp", "stream", "escaped", "next", "inSet", "content", "ret", "tp", "style", "cont", "tokenBase", "state", "ch", "tokenString", "tokenComment", "expressionAllowed", "tokenQuasi", "word", "quote", "maybeEnd", "brackets", "findFatArrow", "arrow", "m", "depth", "sawSomething", "pos", "bracket", "atomicTypes", "JSLexical", "indented", "column", "align", "prev", "info", "inScope", "varname", "v", "cx", "parseJS", "cc", "combinator", "expression", "statement", "pass", "i", "inList", "name", "list", "register", "newContext", "registerVarScoped", "Var", "context", "inner", "Context", "isModifier", "vars", "block", "defaultVars", "pushcontext", "pushblockcontext", "popcontext", "pushlex", "result", "indent", "outer", "poplex", "expect", "wanted", "exp", "value", "vardef", "parenExpr", "maybeexpression", "maybeelse", "functiondef", "forspec", "className", "enumdef", "typename", "typeexpr", "pattern", "maybelabel", "maybeCatchBinding", "afterExport", "afterImport", "funarg", "expressionInner", "expressionNoComma", "noComma", "body", "arrowBodyNoComma", "arrowBody", "commasep", "maybeop", "maybeoperatorNoComma", "maybeoperatorComma", "classExpression", "arrayLiteral", "contCommasep", "objprop", "quasi", "maybeTarget", "me", "expr", "property", "continueQuasi", "targetNoComma", "target", "maybeTypeArgs", "_", "getterSetter", "afterprop", "maybetype", "what", "end", "sep", "proceed", "lex", "maybetypeOrIn", "mayberettype", "isKW", "afterType", "typeprops", "typearg", "maybeReturnType", "quasiType", "typeprop", "functiondecl", "continueQuasiType", "typeparam", "maybeTypeDefault", "maybeAssign", "vardefCont", "eltpattern", "proppattern", "_type", "forspec1", "forspec2", "classNameAfter", "classBody", "classfield", "isInterface", "maybeFrom", "exportField", "importSpec", "maybeMoreImports", "maybeAs", "enummember", "isContinuedStatement", "textAfter", "backUp", "basecolumn", "firstChar", "lexical", "top", "c", "closing", "require_dialog", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "dialogDiv", "cm", "template", "bottom", "wrap", "dialog", "closeNotification", "newVal", "callback", "options", "closed", "me", "close", "inp", "button", "e", "evt", "callbacks", "buttons", "blurring", "i", "b", "doneTimer", "duration", "require_placeholder", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "cm", "val", "old", "prev", "onBlur", "onChange", "onComposition", "clearPlaceholder", "wrapper", "setPlaceholder", "elt", "placeHolder", "empty", "input", "isEmpty", "require_closebrackets", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "defaults", "Pos", "cm", "val", "old", "keyMap", "ensureBound", "getOption", "conf", "name", "handleBackspace", "handleEnter", "chars", "i", "ch", "key", "handler", "handleChar", "getConfig", "deflt", "mode", "pairs", "ranges", "around", "charsAround", "cur", "explode", "linesep", "moveSel", "line", "dir", "newRanges", "primary", "range", "pos", "contractSelection", "sel", "inverted", "closeBefore", "triples", "identical", "opening", "type", "curType", "next", "stringStartsAfter", "prev", "left", "right", "sels", "str", "token", "require_matchbrackets", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "ie_lt8", "Pos", "matching", "bracketRegex", "config", "findMatchingBracket", "cm", "where", "line", "pos", "afterCursor", "re", "match", "dir", "style", "found", "scanForBracket", "maxScanLen", "maxScanLines", "stack", "lineEnd", "lineNo", "end", "ch", "matchBrackets", "autoclear", "maxHighlightLen", "highlightNonMatching", "marks", "ranges", "i", "clear", "doMatchBrackets", "clearHighlighted", "val", "old", "oldConfig", "require_show_hint", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "HINT_ELEMENT_CLASS", "ACTIVE_HINT_ELEMENT_CLASS", "cm", "getHints", "options", "newOpts", "prop", "parseOptions", "selections", "i", "completion", "Completion", "self", "requestAnimationFrame", "fn", "cancelAnimationFrame", "data", "getText", "identStart", "pos", "line", "first", "myTick", "fetchHints", "picked", "Widget", "editor", "out", "defaultOptions", "buildKeyMap", "handle", "baseMap", "mac", "custom", "ourMap", "addBinding", "key", "val", "bound", "extra", "getHintElement", "hintsElement", "el", "widget", "ownerDocument", "parentWindow", "hints", "theme", "completions", "elt", "cur", "className", "container", "left", "top", "below", "offsetLeft", "offsetTop", "isContainerPositioned", "offsetParent", "offsetParentPosition", "bodyPosition", "winW", "winH", "box", "scrolls", "startScroll", "overlapY", "height", "spaceAbove", "overlapX", "node", "n", "avoidWrap", "closingOnBlur", "curScroll", "newTop", "point", "e", "t", "selectedHintRange", "input", "node1", "node2", "firstNode", "margin", "applicableHelpers", "helpers", "result", "hint", "callback", "resolveAutoHints", "words", "resolved", "app", "run", "token", "term", "from", "to", "found", "word", "require_jump_to_line", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "dialog", "cm", "text", "shortText", "deflt", "f", "getJumpDialog", "interpretLine", "string", "num", "cur", "posStr", "match", "line", "require_searchcursor", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "Pos", "regexpFlags", "regexp", "flags", "ensureFlags", "current", "target", "i", "maybeMultiline", "searchRegexpForward", "doc", "start", "line", "ch", "last", "string", "match", "searchRegexpForwardMultiline", "chunk", "curLine", "before", "inside", "startLine", "startCh", "lastMatchIn", "endMargin", "from", "newMatch", "end", "searchRegexpBackward", "first", "searchRegexpBackwardMultiline", "chunkSize", "doFold", "noFold", "str", "adjustPos", "orig", "folded", "pos", "foldFunc", "min", "max", "mid", "len", "searchStringForward", "query", "caseFold", "fold", "lines", "search", "found", "cutFrom", "endString", "lastLine", "searchStringBackward", "top", "topString", "SearchCursor", "options", "reverse", "head", "result", "newText", "origin", "ranges", "cur", "require_search", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "searchOverlay", "query", "caseInsensitive", "stream", "match", "SearchState", "getSearchState", "cm", "queryCaseInsensitive", "getSearchCursor", "pos", "persistentDialog", "text", "deflt", "onEnter", "onKeyDown", "clearSearch", "dialog", "shortText", "f", "confirmDialog", "fs", "parseString", "string", "ch", "parseQuery", "isRE", "startSearch", "state", "doSearch", "rev", "persistent", "immediate", "findNext", "q", "hiding", "searchNext", "event", "_", "to", "getQueryDialog", "keyName", "extra", "cmd", "callback", "cursor", "el", "tag", "attrs", "element", "key", "i", "child", "label", "getReplaceQueryDialog", "getReplacementQueryDialog", "getDoReplaceConfirm", "replaceAll", "replace", "all", "dialogText", "fragment", "advance", "start", "doReplace", "require_polyfills", "__commonJSMin", "doc", "proto", "method", "native", "selectors", "id", "result", "constant_default", "x", "init_constant", "__esmMin", "acos", "x", "pi", "asin", "halfPi", "abs", "atan2", "cos", "max", "min", "sin", "sqrt", "epsilon", "tau", "init_math", "__esmMin", "append", "strings", "i", "n", "appendRound", "digits", "d", "k", "path", "Path", "pi", "tau", "epsilon", "tauEpsilon", "init_path", "__esmMin", "x", "y", "x1", "y1", "x2", "y2", "r", "x0", "y0", "x21", "y21", "x01", "y01", "l01_2", "x20", "y20", "l21_2", "l20_2", "l21", "l01", "l", "t01", "t21", "a0", "a1", "ccw", "dx", "dy", "cw", "da", "w", "h", "init_src", "__esmMin", "init_path", "withPath", "shape", "digits", "_", "d", "Path", "init_path", "__esmMin", "init_src", "arcInnerRadius", "d", "arcOuterRadius", "arcStartAngle", "arcEndAngle", "arcPadAngle", "intersect", "x0", "y0", "x1", "y1", "x2", "y2", "x3", "y3", "x10", "y10", "x32", "y32", "t", "epsilon", "cornerTangents", "r1", "rc", "cw", "x01", "y01", "lo", "sqrt", "ox", "oy", "x11", "y11", "x00", "y00", "dx", "dy", "d2", "r", "D", "max", "cx0", "cy0", "cx1", "cy1", "dx0", "dy0", "dx1", "dy1", "arc_default", "innerRadius", "outerRadius", "cornerRadius", "constant_default", "padRadius", "startAngle", "endAngle", "padAngle", "context", "path", "withPath", "arc", "buffer", "r0", "a0", "halfPi", "a1", "da", "abs", "tau", "cos", "sin", "a01", "a11", "a00", "a10", "da0", "da1", "ap", "rp", "min", "rc0", "rc1", "t0", "t1", "p0", "asin", "p1", "oc", "pi", "ax", "ay", "bx", "by", "kc", "acos", "lc", "atan2", "a", "_", "init_arc", "__esmMin", "init_constant", "init_math", "init_path", "array_default", "x", "slice", "init_array", "__esmMin", "Linear", "context", "linear_default", "init_linear", "__esmMin", "x", "y", "x", "p", "y", "init_point", "__esmMin", "line_default", "x", "y", "defined", "constant_default", "context", "curve", "linear_default", "output", "path", "withPath", "line", "data", "i", "n", "array_default", "d", "defined0", "buffer", "_", "init_line", "__esmMin", "init_array", "init_constant", "init_linear", "init_path", "init_point", "area_default", "x0", "y0", "y1", "x1", "defined", "constant_default", "context", "curve", "linear_default", "output", "path", "withPath", "area", "x", "y", "data", "i", "j", "k", "n", "array_default", "d", "defined0", "buffer", "x0z", "y0z", "arealine", "line_default", "_", "init_area", "__esmMin", "init_array", "init_constant", "init_linear", "init_line", "init_path", "init_point", "descending_default", "a", "b", "init_descending", "__esmMin", "identity_default", "d", "init_identity", "__esmMin", "pie_default", "value", "identity_default", "sortValues", "descending_default", "sort", "startAngle", "constant_default", "endAngle", "tau", "padAngle", "pie", "data", "i", "n", "array_default", "j", "k", "sum", "index", "arcs", "a0", "da", "a1", "p", "pa", "v", "_", "init_pie", "__esmMin", "init_array", "init_constant", "init_descending", "init_identity", "init_math", "Radial", "curve", "curveRadial", "radial", "context", "curveRadialLinear", "init_radial", "__esmMin", "init_linear", "linear_default", "a", "r", "lineRadial", "l", "c", "_", "curveRadial", "lineRadial_default", "line_default", "curveRadialLinear", "init_lineRadial", "__esmMin", "init_radial", "init_line", "areaRadial_default", "a", "area_default", "curveRadialLinear", "c", "x0", "x1", "y0", "y1", "lineRadial", "_", "curveRadial", "init_areaRadial", "__esmMin", "init_radial", "init_area", "init_lineRadial", "pointRadial_default", "x", "y", "init_pointRadial", "__esmMin", "bumpX", "context", "Bump", "bumpY", "bumpRadial", "BumpRadial", "init_bump", "__esmMin", "init_pointRadial", "x", "y", "p0", "pointRadial_default", "p1", "p2", "p3", "linkSource", "d", "linkTarget", "link", "curve", "source", "target", "x", "y", "context", "output", "path", "withPath", "buffer", "argv", "slice", "s", "t", "_", "constant_default", "linkHorizontal", "bumpX", "linkVertical", "bumpY", "linkRadial", "l", "bumpRadial", "init_link", "__esmMin", "init_array", "init_constant", "init_bump", "init_path", "init_point", "sqrt3", "asterisk_default", "init_asterisk", "__esmMin", "init_math", "sqrt", "context", "size", "min", "t", "u", "circle_default", "init_circle", "__esmMin", "init_math", "context", "size", "sqrt", "pi", "tau", "cross_default", "init_cross", "__esmMin", "init_math", "context", "size", "sqrt", "tan30", "tan30_2", "diamond_default", "init_diamond", "__esmMin", "init_math", "sqrt", "context", "size", "y", "x", "diamond2_default", "init_diamond2", "__esmMin", "init_math", "context", "size", "sqrt", "plus_default", "init_plus", "__esmMin", "init_math", "context", "size", "sqrt", "min", "square_default", "init_square", "__esmMin", "init_math", "context", "size", "w", "sqrt", "x", "square2_default", "init_square2", "__esmMin", "init_math", "context", "size", "sqrt", "ka", "kr", "kx", "ky", "star_default", "init_star", "__esmMin", "init_math", "sin", "pi", "tau", "cos", "context", "size", "sqrt", "x", "y", "i", "a", "c", "s", "sqrt3", "triangle_default", "init_triangle", "__esmMin", "init_math", "sqrt", "context", "size", "y", "sqrt3", "triangle2_default", "init_triangle2", "__esmMin", "init_math", "sqrt", "context", "size", "s", "t", "u", "c", "s", "k", "a", "wye_default", "init_wye", "__esmMin", "init_math", "sqrt", "context", "size", "x0", "y0", "x1", "y1", "x2", "y2", "times_default", "init_times", "__esmMin", "init_math", "context", "size", "sqrt", "min", "Symbol", "type", "size", "context", "path", "withPath", "symbol", "constant_default", "circle_default", "buffer", "_", "symbolsFill", "symbolsStroke", "init_symbol", "__esmMin", "init_constant", "init_path", "init_asterisk", "init_circle", "init_cross", "init_diamond", "init_diamond2", "init_plus", "init_square", "init_square2", "init_star", "init_triangle", "init_triangle2", "init_wye", "init_times", "cross_default", "diamond_default", "square_default", "star_default", "triangle_default", "wye_default", "plus_default", "times_default", "triangle2_default", "asterisk_default", "square2_default", "diamond2_default", "noop_default", "init_noop", "__esmMin", "point", "that", "x", "y", "Basis", "context", "basis_default", "init_basis", "__esmMin", "BasisClosed", "context", "basisClosed_default", "init_basisClosed", "__esmMin", "init_noop", "init_basis", "noop_default", "x", "y", "point", "BasisOpen", "context", "basisOpen_default", "init_basisOpen", "__esmMin", "init_basis", "x", "y", "x0", "y0", "point", "Bundle", "context", "beta", "Basis", "bundle_default", "init_bundle", "__esmMin", "init_basis", "x", "y", "j", "x0", "y0", "dx", "dy", "i", "t", "custom", "bundle", "point", "that", "x", "y", "Cardinal", "context", "tension", "cardinal_default", "init_cardinal", "__esmMin", "custom", "cardinal", "CardinalClosed", "context", "tension", "cardinalClosed_default", "init_cardinalClosed", "__esmMin", "init_noop", "init_cardinal", "noop_default", "x", "y", "point", "custom", "cardinal", "CardinalOpen", "context", "tension", "cardinalOpen_default", "init_cardinalOpen", "__esmMin", "init_cardinal", "x", "y", "point", "custom", "cardinal", "point", "that", "x", "y", "x1", "y1", "x2", "y2", "epsilon", "a", "n", "b", "m", "CatmullRom", "context", "alpha", "catmullRom_default", "init_catmullRom", "__esmMin", "init_math", "init_cardinal", "x23", "y23", "custom", "catmullRom", "Cardinal", "CatmullRomClosed", "context", "alpha", "catmullRomClosed_default", "init_catmullRomClosed", "__esmMin", "init_cardinalClosed", "init_noop", "init_catmullRom", "noop_default", "x", "y", "x23", "y23", "point", "custom", "catmullRom", "CardinalClosed", "CatmullRomOpen", "context", "alpha", "catmullRomOpen_default", "init_catmullRomOpen", "__esmMin", "init_cardinalOpen", "init_catmullRom", "x", "y", "x23", "y23", "point", "custom", "catmullRom", "CardinalOpen", "LinearClosed", "context", "linearClosed_default", "init_linearClosed", "__esmMin", "init_noop", "noop_default", "x", "y", "sign", "x", "slope3", "that", "x2", "y2", "h0", "h1", "s0", "s1", "p", "slope2", "h", "point", "t0", "t1", "x0", "y0", "x1", "y1", "dx", "MonotoneX", "context", "MonotoneY", "ReflectContext", "monotoneX", "monotoneY", "init_monotone", "__esmMin", "y", "Natural", "context", "controlPoints", "x", "i", "n", "m", "a", "b", "r", "natural_default", "init_natural", "__esmMin", "y", "px", "py", "i0", "i1", "Step", "context", "step_default", "stepBefore", "stepAfter", "init_step", "__esmMin", "x", "y", "x1", "none_default", "series", "order", "n", "i", "j", "s0", "s1", "m", "init_none", "__esmMin", "none_default", "series", "n", "o", "init_none", "__esmMin", "stackValue", "d", "key", "stackSeries", "series", "stack_default", "keys", "constant_default", "order", "none_default", "offset", "value", "stack", "data", "sz", "i", "n", "j", "oz", "array_default", "_", "init_stack", "__esmMin", "init_array", "init_constant", "init_none", "expand_default", "series", "order", "i", "j", "m", "y", "none_default", "init_expand", "__esmMin", "init_none", "diverging_default", "series", "order", "n", "i", "j", "d", "dy", "yp", "yn", "m", "init_diverging", "__esmMin", "silhouette_default", "series", "order", "n", "j", "s0", "m", "i", "y", "none_default", "init_silhouette", "__esmMin", "init_none", "wiggle_default", "series", "order", "n", "m", "s0", "y", "j", "i", "s1", "s2", "si", "sij0", "sij1", "s3", "k", "sk", "skj0", "skj1", "none_default", "init_wiggle", "__esmMin", "init_none", "appearance_default", "series", "peaks", "peak", "none_default", "a", "b", "i", "j", "vi", "vj", "init_appearance", "__esmMin", "init_none", "ascending_default", "series", "sums", "sum", "none_default", "a", "b", "s", "i", "v", "init_ascending", "__esmMin", "init_none", "descending_default", "series", "ascending_default", "init_descending", "__esmMin", "init_ascending", "insideOut_default", "series", "n", "i", "j", "sums", "sum", "order", "appearance_default", "top", "bottom", "tops", "bottoms", "init_insideOut", "__esmMin", "init_appearance", "init_ascending", "reverse_default", "series", "none_default", "init_reverse", "__esmMin", "init_none", "src_exports", "__export", "arc_default", "area_default", "areaRadial_default", "basis_default", "basisClosed_default", "basisOpen_default", "bumpX", "bumpY", "bundle_default", "cardinal_default", "cardinalClosed_default", "cardinalOpen_default", "catmullRom_default", "catmullRomClosed_default", "catmullRomOpen_default", "linear_default", "linearClosed_default", "monotoneX", "monotoneY", "natural_default", "step_default", "stepAfter", "stepBefore", "line_default", "lineRadial_default", "link", "linkHorizontal", "linkRadial", "linkVertical", "pie_default", "pointRadial_default", "stack_default", "diverging_default", "expand_default", "none_default", "silhouette_default", "wiggle_default", "appearance_default", "ascending_default", "descending_default", "insideOut_default", "reverse_default", "Symbol", "asterisk_default", "circle_default", "cross_default", "diamond_default", "diamond2_default", "plus_default", "square_default", "square2_default", "star_default", "times_default", "triangle_default", "triangle2_default", "wye_default", "symbolsFill", "symbolsStroke", "init_src", "__esmMin", "init_arc", "init_area", "init_line", "init_pie", "init_areaRadial", "init_lineRadial", "init_pointRadial", "init_link", "init_symbol", "init_asterisk", "init_circle", "init_cross", "init_diamond", "init_diamond2", "init_plus", "init_square", "init_square2", "init_star", "init_triangle", "init_triangle2", "init_wye", "init_times", "init_basisClosed", "init_basisOpen", "init_basis", "init_bump", "init_bundle", "init_cardinalClosed", "init_cardinalOpen", "init_cardinal", "init_catmullRomClosed", "init_catmullRomOpen", "init_catmullRom", "init_linearClosed", "init_linear", "init_monotone", "init_natural", "init_step", "init_stack", "init_expand", "init_diverging", "init_none", "init_silhouette", "init_wiggle", "init_appearance", "init_ascending", "init_descending", "init_insideOut", "init_reverse", "formatDecimal_default", "x", "formatDecimalParts", "p", "i", "coefficient", "init_formatDecimal", "__esmMin", "exponent_default", "x", "formatDecimalParts", "init_exponent", "__esmMin", "init_formatDecimal", "formatGroup_default", "grouping", "thousands", "value", "width", "t", "j", "g", "length", "init_formatGroup", "__esmMin", "formatNumerals_default", "numerals", "value", "i", "init_formatNumerals", "__esmMin", "formatSpecifier", "specifier", "match", "re", "FormatSpecifier", "init_formatSpecifier", "__esmMin", "formatTrim_default", "s", "out", "n", "i", "i0", "i1", "init_formatTrim", "__esmMin", "formatPrefixAuto_default", "x", "p", "d", "formatDecimalParts", "coefficient", "exponent", "i", "prefixExponent", "n", "init_formatPrefixAuto", "__esmMin", "init_formatDecimal", "formatRounded_default", "x", "p", "d", "formatDecimalParts", "coefficient", "exponent", "init_formatRounded", "__esmMin", "init_formatDecimal", "formatTypes_default", "init_formatTypes", "__esmMin", "init_formatDecimal", "init_formatPrefixAuto", "init_formatRounded", "x", "p", "formatDecimal_default", "formatRounded_default", "formatPrefixAuto_default", "identity_default", "x", "init_identity", "__esmMin", "locale_default", "locale", "group", "identity_default", "formatGroup_default", "map", "currencyPrefix", "currencySuffix", "decimal", "numerals", "formatNumerals_default", "percent", "minus", "nan", "newFormat", "specifier", "formatSpecifier", "fill", "align", "sign", "symbol", "zero", "width", "comma", "precision", "trim", "type", "formatTypes_default", "prefix", "suffix", "formatType", "maybeSuffix", "format", "value", "valuePrefix", "valueSuffix", "i", "n", "c", "valueNegative", "formatTrim_default", "prefixes", "prefixExponent", "length", "padding", "formatPrefix", "f", "e", "exponent_default", "k", "init_locale", "__esmMin", "init_exponent", "init_formatGroup", "init_formatNumerals", "init_formatSpecifier", "init_formatTrim", "init_formatTypes", "init_formatPrefixAuto", "init_identity", "defaultLocale", "definition", "locale", "locale_default", "format", "formatPrefix", "init_defaultLocale", "__esmMin", "init_locale", "precisionFixed_default", "step", "exponent_default", "init_precisionFixed", "__esmMin", "init_exponent", "precisionPrefix_default", "step", "value", "exponent_default", "init_precisionPrefix", "__esmMin", "init_exponent", "precisionRound_default", "step", "max", "exponent_default", "init_precisionRound", "__esmMin", "init_exponent", "src_exports", "__export", "FormatSpecifier", "format", "defaultLocale", "locale_default", "formatPrefix", "formatSpecifier", "precisionFixed_default", "precisionPrefix_default", "precisionRound_default", "init_src", "__esmMin", "init_defaultLocale", "init_locale", "init_formatSpecifier", "init_precisionFixed", "init_precisionPrefix", "init_precisionRound", "ascending", "a", "b", "init_ascending", "__esmMin", "descending", "a", "b", "init_descending", "__esmMin", "bisector", "f", "compare1", "compare2", "delta", "ascending", "d", "x", "descending", "zero", "left", "a", "lo", "hi", "mid", "right", "center", "i", "init_bisector", "__esmMin", "init_ascending", "init_descending", "number", "x", "numbers", "values", "valueof", "value", "index", "init_number", "__esmMin", "ascendingBisect", "bisectRight", "bisectLeft", "bisectCenter", "bisect_default", "init_bisect", "__esmMin", "init_ascending", "init_bisector", "init_number", "bisector", "ascending", "number", "intern_get", "_intern", "_key", "value", "key", "intern_set", "intern_delete", "keyof", "InternMap", "init_src", "__esmMin", "entries", "compareDefined", "compare", "ascending", "ascendingDefined", "a", "b", "x", "init_sort", "__esmMin", "init_ascending", "tickSpec", "start", "stop", "count", "step", "power", "error", "factor", "e10", "e5", "e2", "i1", "i2", "inc", "ticks", "reverse", "n", "i", "tickIncrement", "tickStep", "init_ticks", "__esmMin", "max", "values", "valueof", "value", "index", "init_max", "__esmMin", "min", "values", "valueof", "value", "index", "init_min", "__esmMin", "quickselect", "array", "k", "left", "right", "compare", "ascendingDefined", "compareDefined", "n", "m", "z", "s", "sd", "newLeft", "newRight", "t", "i", "j", "swap", "init_quickselect", "__esmMin", "init_sort", "quantile", "values", "p", "valueof", "numbers", "min", "max", "i0", "value0", "quickselect", "value1", "quantileSorted", "number", "init_quantile", "__esmMin", "init_max", "init_min", "init_quickselect", "init_number", "range", "start", "stop", "step", "n", "i", "init_range", "__esmMin", "init_src", "__esmMin", "init_bisect", "init_ascending", "init_bisector", "init_quantile", "init_range", "init_ticks", "initRange", "domain", "range", "initInterpolator", "interpolator", "init_init", "__esmMin", "ordinal", "index", "InternMap", "domain", "range", "unknown", "implicit", "scale", "d", "i", "_", "value", "initRange", "init_ordinal", "__esmMin", "init_src", "init_init", "band", "scale", "ordinal", "domain", "ordinalRange", "r0", "r1", "step", "bandwidth", "round", "paddingInner", "paddingOuter", "align", "rescale", "n", "reverse", "start", "stop", "values", "range", "i", "_", "initRange", "pointish", "copy", "point", "init_band", "__esmMin", "init_src", "init_init", "init_ordinal", "define_default", "constructor", "factory", "prototype", "extend", "parent", "definition", "key", "init_define", "__esmMin", "Color", "color_formatHex", "color_formatHex8", "color_formatHsl", "hslConvert", "color_formatRgb", "color", "format", "m", "l", "reHex", "rgbn", "Rgb", "rgba", "reRgbInteger", "reRgbPercent", "reRgbaInteger", "reRgbaPercent", "reHslPercent", "hsla", "reHslaPercent", "named", "n", "r", "g", "b", "a", "rgbConvert", "o", "rgb", "opacity", "rgb_formatHex", "hex", "rgb_formatHex8", "rgb_formatRgb", "clampa", "clampi", "value", "h", "s", "Hsl", "min", "max", "hsl", "clamph", "clampt", "hsl2rgb", "m1", "m2", "darker", "brighter", "reI", "reN", "reP", "init_color", "__esmMin", "init_define", "define_default", "channels", "extend", "k", "radians", "degrees", "init_math", "__esmMin", "labConvert", "o", "Lab", "Hcl", "hcl2lab", "Rgb", "rgbConvert", "r", "rgb2lrgb", "g", "b", "y", "xyz2lab", "Yn", "x", "z", "Xn", "Zn", "gray", "l", "opacity", "lab", "a", "t", "t3", "t2", "t0", "lab2xyz", "t1", "lrgb2rgb", "hclConvert", "h", "degrees", "lch", "c", "hcl", "radians", "K", "init_lab", "__esmMin", "init_define", "init_color", "init_math", "define_default", "extend", "Color", "k", "cubehelixConvert", "o", "Cubehelix", "Rgb", "rgbConvert", "r", "g", "b", "l", "BC_DA", "ED", "EB", "bl", "k", "E", "C", "D", "h", "degrees", "cubehelix", "s", "opacity", "A", "B", "init_cubehelix", "__esmMin", "init_define", "init_color", "init_math", "define_default", "extend", "Color", "brighter", "darker", "radians", "a", "cosh", "sinh", "src_exports", "__export", "color", "cubehelix", "gray", "hcl", "hsl", "lab", "lch", "rgb", "init_src", "__esmMin", "init_color", "init_lab", "init_cubehelix", "basis", "t1", "v0", "v1", "v2", "v3", "t2", "t3", "basis_default", "values", "n", "t", "i", "init_basis", "__esmMin", "basisClosed_default", "values", "n", "t", "i", "v0", "v1", "v2", "v3", "basis", "init_basisClosed", "__esmMin", "init_basis", "constant_default", "init_constant", "__esmMin", "x", "linear", "a", "d", "t", "exponential", "b", "y", "hue", "constant_default", "gamma", "nogamma", "init_color", "__esmMin", "init_constant", "rgbSpline", "spline", "colors", "n", "r", "g", "b", "i", "color", "rgb", "t", "rgb_default", "rgbBasis", "rgbBasisClosed", "init_rgb", "__esmMin", "init_src", "init_basis", "init_basisClosed", "init_color", "rgbGamma", "y", "gamma", "start", "end", "opacity", "nogamma", "basis_default", "basisClosed_default", "numberArray_default", "a", "b", "n", "c", "t", "isNumberArray", "x", "init_numberArray", "__esmMin", "array_default", "a", "b", "isNumberArray", "numberArray_default", "genericArray", "nb", "na", "x", "c", "i", "value_default", "t", "init_array", "__esmMin", "init_value", "init_numberArray", "date_default", "a", "b", "d", "t", "init_date", "__esmMin", "number_default", "a", "b", "t", "init_number", "__esmMin", "object_default", "a", "b", "i", "c", "k", "value_default", "t", "init_object", "__esmMin", "init_value", "zero", "b", "one", "string_default", "a", "bi", "reA", "reB", "am", "bm", "bs", "i", "q", "number_default", "t", "o", "init_string", "__esmMin", "init_number", "value_default", "a", "b", "t", "c", "constant_default", "number_default", "color", "rgb_default", "string_default", "date_default", "isNumberArray", "numberArray_default", "genericArray", "object_default", "init_value", "__esmMin", "init_src", "init_rgb", "init_array", "init_date", "init_number", "init_object", "init_string", "init_constant", "init_numberArray", "discrete_default", "range", "n", "t", "init_discrete", "__esmMin", "hue_default", "a", "b", "i", "hue", "t", "x", "init_hue", "__esmMin", "init_color", "round_default", "a", "b", "t", "init_round", "__esmMin", "decompose_default", "a", "b", "c", "d", "e", "f", "scaleX", "scaleY", "skewX", "degrees", "identity", "init_decompose", "__esmMin", "parseCss", "value", "m", "identity", "decompose_default", "parseSvg", "svgNode", "init_parse", "__esmMin", "init_decompose", "interpolateTransform", "parse", "pxComma", "pxParen", "degParen", "pop", "s", "translate", "xa", "ya", "xb", "yb", "q", "i", "number_default", "rotate", "a", "b", "skewX", "scale", "t", "n", "o", "interpolateTransformCss", "interpolateTransformSvg", "init_transform", "__esmMin", "init_number", "init_parse", "parseCss", "parseSvg", "cosh", "x", "sinh", "tanh", "epsilon2", "zoom_default", "init_zoom", "__esmMin", "zoomRho", "rho", "rho2", "rho4", "zoom", "p0", "p1", "ux0", "uy0", "w0", "ux1", "uy1", "w1", "dx", "dy", "d2", "i", "S", "t", "d1", "b0", "b1", "r0", "r1", "s", "coshr0", "u", "_", "_1", "_2", "_4", "hsl", "hue", "start", "end", "h", "s", "nogamma", "l", "opacity", "t", "hsl_default", "hslLong", "init_hsl", "__esmMin", "init_src", "init_color", "lab", "start", "end", "l", "nogamma", "a", "b", "opacity", "t", "init_lab", "__esmMin", "init_src", "init_color", "hcl", "hue", "start", "end", "h", "c", "nogamma", "l", "opacity", "t", "hcl_default", "hclLong", "init_hcl", "__esmMin", "init_src", "init_color", "cubehelix", "hue", "cubehelixGamma", "y", "start", "end", "h", "nogamma", "l", "opacity", "t", "cubehelix_default", "cubehelixLong", "init_cubehelix", "__esmMin", "init_src", "init_color", "piecewise", "interpolate", "values", "value_default", "i", "v", "I", "t", "init_piecewise", "__esmMin", "init_value", "quantize_default", "interpolator", "n", "samples", "i", "init_quantize", "__esmMin", "src_exports", "__export", "value_default", "array_default", "basis_default", "basisClosed_default", "cubehelix_default", "cubehelixLong", "date_default", "discrete_default", "hcl_default", "hclLong", "hsl_default", "hslLong", "hue_default", "lab", "number_default", "numberArray_default", "object_default", "rgb_default", "rgbBasis", "rgbBasisClosed", "round_default", "string_default", "interpolateTransformCss", "interpolateTransformSvg", "zoom_default", "piecewise", "quantize_default", "init_src", "__esmMin", "init_value", "init_array", "init_basis", "init_basisClosed", "init_date", "init_discrete", "init_hue", "init_number", "init_numberArray", "init_object", "init_round", "init_string", "init_transform", "init_zoom", "init_rgb", "init_hsl", "init_lab", "init_hcl", "init_cubehelix", "init_piecewise", "init_quantize", "constants", "x", "init_constant", "__esmMin", "number", "x", "init_number", "__esmMin", "identity", "x", "normalize", "a", "b", "constants", "clamper", "t", "bimap", "domain", "range", "interpolate", "d0", "d1", "r0", "r1", "polymap", "j", "d", "r", "i", "bisect_default", "copy", "source", "target", "transformer", "unit", "value_default", "transform", "untransform", "unknown", "clamp", "piecewise", "output", "input", "rescale", "n", "scale", "y", "number_default", "_", "number", "round_default", "u", "continuous", "init_continuous", "__esmMin", "init_src", "init_constant", "init_number", "tickFormat", "start", "stop", "count", "specifier", "step", "tickStep", "precision", "formatSpecifier", "value", "precisionPrefix_default", "formatPrefix", "precisionRound_default", "precisionFixed_default", "format", "init_tickFormat", "__esmMin", "init_src", "linearish", "scale", "domain", "count", "d", "ticks", "specifier", "tickFormat", "i0", "i1", "start", "stop", "prestep", "step", "maxIter", "tickIncrement", "linear", "continuous", "copy", "initRange", "init_linear", "__esmMin", "init_src", "init_continuous", "init_init", "init_tickFormat", "identity", "domain", "unknown", "scale", "x", "_", "number", "linearish", "init_identity", "__esmMin", "init_linear", "init_number", "nice", "domain", "interval", "i0", "i1", "x0", "x1", "t", "init_nice", "__esmMin", "transformLog", "x", "transformExp", "transformLogn", "transformExpn", "pow10", "powp", "base", "logp", "reflect", "f", "k", "loggish", "transform", "scale", "domain", "logs", "pows", "rescale", "_", "count", "d", "v", "r", "i", "j", "t", "n", "z", "ticks", "specifier", "formatSpecifier", "format", "nice", "log", "transformer", "copy", "initRange", "init_log", "__esmMin", "init_src", "init_nice", "init_continuous", "init_init", "transformSymlog", "c", "x", "transformSymexp", "symlogish", "transform", "scale", "_", "linearish", "symlog", "transformer", "copy", "initRange", "init_symlog", "__esmMin", "init_linear", "init_continuous", "init_init", "transformPow", "exponent", "x", "transformSqrt", "transformSquare", "powish", "transform", "scale", "identity", "rescale", "_", "linearish", "pow", "transformer", "copy", "initRange", "sqrt", "init_pow", "__esmMin", "init_linear", "init_continuous", "init_init", "square", "x", "unsquare", "radial", "squared", "continuous", "range", "round", "unknown", "scale", "y", "_", "number", "initRange", "linearish", "init_radial", "__esmMin", "init_continuous", "init_init", "init_linear", "init_number", "quantile", "domain", "range", "thresholds", "unknown", "rescale", "i", "n", "quantileSorted", "scale", "x", "bisect_default", "y", "_", "d", "ascending", "initRange", "init_quantile", "__esmMin", "init_src", "init_init", "quantize", "x0", "x1", "n", "domain", "range", "unknown", "scale", "x", "bisect_default", "rescale", "i", "_", "y", "initRange", "linearish", "init_quantize", "__esmMin", "init_src", "init_linear", "init_init", "threshold", "domain", "range", "unknown", "scale", "x", "bisect_default", "_", "y", "i", "initRange", "init_threshold", "__esmMin", "init_src", "init_init", "timeInterval", "floori", "offseti", "count", "field", "interval", "date", "d0", "d1", "step", "start", "stop", "range", "previous", "test", "end", "t0", "t1", "d", "init_interval", "__esmMin", "millisecond", "milliseconds", "init_millisecond", "__esmMin", "init_interval", "timeInterval", "date", "step", "start", "end", "k", "second", "seconds", "init_second", "__esmMin", "init_interval", "timeInterval", "date", "step", "start", "end", "timeMinute", "timeMinutes", "utcMinute", "utcMinutes", "init_minute", "__esmMin", "init_interval", "timeInterval", "date", "step", "start", "end", "timeHour", "timeHours", "utcHour", "utcHours", "init_hour", "__esmMin", "init_interval", "timeInterval", "date", "step", "start", "end", "timeDay", "timeDays", "utcDay", "utcDays", "unixDay", "unixDays", "init_day", "__esmMin", "init_interval", "timeInterval", "date", "step", "start", "end", "timeWeekday", "i", "timeInterval", "date", "step", "start", "end", "utcWeekday", "timeSunday", "timeMonday", "timeTuesday", "timeWednesday", "timeThursday", "timeFriday", "timeSaturday", "timeSundays", "timeMondays", "timeTuesdays", "timeWednesdays", "timeThursdays", "timeFridays", "timeSaturdays", "utcSunday", "utcMonday", "utcTuesday", "utcWednesday", "utcThursday", "utcFriday", "utcSaturday", "utcSundays", "utcMondays", "utcTuesdays", "utcWednesdays", "utcThursdays", "utcFridays", "utcSaturdays", "init_week", "__esmMin", "init_interval", "timeMonth", "timeMonths", "utcMonth", "utcMonths", "init_month", "__esmMin", "init_interval", "timeInterval", "date", "step", "start", "end", "timeYear", "timeYears", "utcYear", "utcYears", "init_year", "__esmMin", "init_interval", "timeInterval", "date", "step", "start", "end", "k", "ticker", "year", "month", "week", "day", "hour", "minute", "tickIntervals", "second", "ticks", "start", "stop", "count", "reverse", "interval", "tickInterval", "target", "i", "bisector", "step", "tickStep", "millisecond", "t", "utcTicks", "utcTickInterval", "timeTicks", "timeTickInterval", "init_ticks", "__esmMin", "init_src", "init_millisecond", "init_second", "init_minute", "init_hour", "init_day", "init_week", "init_month", "init_year", "utcYear", "utcMonth", "utcSunday", "unixDay", "utcHour", "utcMinute", "timeYear", "timeMonth", "timeSunday", "timeDay", "timeHour", "timeMinute", "init_src", "__esmMin", "init_second", "init_minute", "init_hour", "init_day", "init_week", "init_month", "init_year", "init_ticks", "localDate", "d", "date", "utcDate", "newDate", "y", "m", "formatLocale", "locale", "locale_dateTime", "locale_date", "locale_time", "locale_periods", "locale_weekdays", "locale_shortWeekdays", "locale_months", "locale_shortMonths", "periodRe", "formatRe", "periodLookup", "formatLookup", "weekdayRe", "weekdayLookup", "shortWeekdayRe", "shortWeekdayLookup", "monthRe", "monthLookup", "shortMonthRe", "shortMonthLookup", "formats", "formatShortWeekday", "formatWeekday", "formatShortMonth", "formatMonth", "formatDayOfMonth", "formatMicroseconds", "formatYearISO", "formatFullYearISO", "formatHour24", "formatHour12", "formatDayOfYear", "formatMilliseconds", "formatMonthNumber", "formatMinutes", "formatPeriod", "formatQuarter", "formatUnixTimestamp", "formatUnixTimestampSeconds", "formatSeconds", "formatWeekdayNumberMonday", "formatWeekNumberSunday", "formatWeekNumberISO", "formatWeekdayNumberSunday", "formatWeekNumberMonday", "formatYear", "formatFullYear", "formatZone", "formatLiteralPercent", "utcFormats", "formatUTCShortWeekday", "formatUTCWeekday", "formatUTCShortMonth", "formatUTCMonth", "formatUTCDayOfMonth", "formatUTCMicroseconds", "formatUTCYearISO", "formatUTCFullYearISO", "formatUTCHour24", "formatUTCHour12", "formatUTCDayOfYear", "formatUTCMilliseconds", "formatUTCMonthNumber", "formatUTCMinutes", "formatUTCPeriod", "formatUTCQuarter", "formatUTCSeconds", "formatUTCWeekdayNumberMonday", "formatUTCWeekNumberSunday", "formatUTCWeekNumberISO", "formatUTCWeekdayNumberSunday", "formatUTCWeekNumberMonday", "formatUTCYear", "formatUTCFullYear", "formatUTCZone", "parses", "parseShortWeekday", "parseWeekday", "parseShortMonth", "parseMonth", "parseLocaleDateTime", "parseDayOfMonth", "parseMicroseconds", "parseYear", "parseFullYear", "parseHour24", "parseDayOfYear", "parseMilliseconds", "parseMonthNumber", "parseMinutes", "parsePeriod", "parseQuarter", "parseUnixTimestamp", "parseUnixTimestampSeconds", "parseSeconds", "parseWeekdayNumberMonday", "parseWeekNumberSunday", "parseWeekNumberISO", "parseWeekdayNumberSunday", "parseWeekNumberMonday", "parseLocaleDate", "parseLocaleTime", "parseZone", "parseLiteralPercent", "newFormat", "specifier", "string", "i", "j", "n", "c", "pad", "format", "pads", "newParse", "Z", "parseSpecifier", "week", "day", "utcMonday", "utcDay", "timeMonday", "timeDay", "parse", "f", "p", "value", "fill", "width", "sign", "length", "requote", "s", "requoteRe", "names", "name", "numberRe", "percentRe", "timeYear", "timeSunday", "dISO", "timeThursday", "z", "utcYear", "dow", "utcSunday", "UTCdISO", "utcThursday", "init_locale", "__esmMin", "init_src", "defaultLocale", "definition", "locale", "formatLocale", "timeFormat", "timeParse", "utcFormat", "utcParse", "init_defaultLocale", "__esmMin", "init_locale", "init_src", "__esmMin", "init_defaultLocale", "date", "t", "number", "calendar", "ticks", "tickInterval", "year", "month", "week", "day", "hour", "minute", "second", "format", "scale", "continuous", "invert", "domain", "formatMillisecond", "formatSecond", "formatMinute", "formatHour", "formatDay", "formatWeek", "formatMonth", "formatYear", "tickFormat", "y", "_", "interval", "d", "count", "specifier", "nice", "copy", "time", "initRange", "timeTicks", "timeTickInterval", "timeYear", "timeMonth", "timeSunday", "timeDay", "timeHour", "timeMinute", "timeFormat", "init_time", "__esmMin", "init_src", "init_continuous", "init_init", "init_nice", "utcTime", "initRange", "calendar", "utcTicks", "utcTickInterval", "utcYear", "utcMonth", "utcSunday", "utcDay", "utcHour", "utcMinute", "second", "utcFormat", "init_utcTime", "__esmMin", "init_src", "init_time", "init_init", "transformer", "x0", "x1", "t0", "t1", "k10", "transform", "interpolator", "identity", "clamp", "unknown", "scale", "x", "_", "range", "interpolate", "r0", "r1", "value_default", "round_default", "t", "copy", "source", "target", "sequential", "linearish", "initInterpolator", "sequentialLog", "loggish", "sequentialSymlog", "symlogish", "sequentialPow", "powish", "sequentialSqrt", "init_sequential", "__esmMin", "init_src", "init_continuous", "init_init", "init_linear", "init_log", "init_symlog", "init_pow", "sequentialQuantile", "domain", "interpolator", "identity", "scale", "x", "bisect_default", "_", "d", "ascending", "i", "quantile", "initInterpolator", "init_sequentialQuantile", "__esmMin", "init_src", "init_continuous", "init_init", "transformer", "x0", "x1", "x2", "s", "t0", "t1", "t2", "k10", "k21", "interpolator", "identity", "transform", "clamp", "unknown", "scale", "x", "_", "range", "interpolate", "r0", "r1", "r2", "piecewise", "value_default", "round_default", "t", "diverging", "linearish", "copy", "initInterpolator", "divergingLog", "loggish", "divergingSymlog", "symlogish", "divergingPow", "powish", "divergingSqrt", "init_diverging", "__esmMin", "init_src", "init_continuous", "init_init", "init_linear", "init_log", "init_sequential", "init_symlog", "init_pow", "src_exports", "__export", "band", "diverging", "divergingLog", "divergingPow", "divergingSqrt", "divergingSymlog", "identity", "implicit", "linear", "log", "ordinal", "point", "pow", "quantile", "quantize", "radial", "sequential", "sequentialLog", "sequentialPow", "sequentialQuantile", "sequentialSqrt", "sequentialSymlog", "sqrt", "symlog", "threshold", "time", "utcTime", "tickFormat", "init_src", "__esmMin", "init_band", "init_identity", "init_linear", "init_log", "init_symlog", "init_ordinal", "init_pow", "init_radial", "init_quantile", "init_quantize", "init_threshold", "init_time", "init_utcTime", "init_sequential", "init_sequentialQuantile", "init_diverging", "init_tickFormat", "identity_default", "x", "init_identity", "__esmMin", "translateX", "x", "translateY", "y", "number", "scale", "d", "center", "offset", "entering", "axis", "orient", "tickArguments", "tickValues", "tickFormat", "tickSizeInner", "tickSizeOuter", "tickPadding", "k", "top", "left", "right", "transform", "bottom", "context", "values", "format", "identity_default", "spacing", "range", "range0", "range1", "position", "selection", "path", "tick", "tickExit", "tickEnter", "line", "text", "epsilon", "p", "_", "axisTop", "axisRight", "axisBottom", "axisLeft", "init_axis", "__esmMin", "init_identity", "src_exports", "__export", "axisBottom", "axisLeft", "axisRight", "axisTop", "init_src", "__esmMin", "init_axis", "dispatch", "i", "n", "_", "t", "Dispatch", "parseTypenames", "typenames", "types", "name", "get", "type", "c", "set", "callback", "noop", "dispatch_default", "init_dispatch", "__esmMin", "typename", "T", "copy", "that", "args", "init_src", "__esmMin", "init_dispatch", "xhtml", "namespaces_default", "init_namespaces", "__esmMin", "namespace_default", "name", "prefix", "i", "namespaces_default", "init_namespace", "__esmMin", "init_namespaces", "creatorInherit", "name", "document", "uri", "xhtml", "creatorFixed", "fullname", "creator_default", "namespace_default", "init_creator", "__esmMin", "init_namespace", "init_namespaces", "none", "selector_default", "selector", "init_selector", "__esmMin", "select_default", "select", "selector_default", "groups", "m", "subgroups", "j", "group", "n", "subgroup", "node", "subnode", "i", "Selection", "init_select", "__esmMin", "init_selection", "init_selector", "array", "x", "init_array", "__esmMin", "empty", "selectorAll_default", "selector", "init_selectorAll", "__esmMin", "arrayAll", "select", "array", "selectAll_default", "selectorAll_default", "groups", "m", "subgroups", "parents", "j", "group", "n", "node", "i", "Selection", "init_selectAll", "__esmMin", "init_selection", "init_array", "init_selectorAll", "matcher_default", "selector", "childMatcher", "node", "init_matcher", "__esmMin", "childFind", "match", "find", "childFirst", "selectChild_default", "childMatcher", "init_selectChild", "__esmMin", "init_matcher", "children", "childrenFilter", "match", "filter", "selectChildren_default", "childMatcher", "init_selectChildren", "__esmMin", "init_matcher", "filter_default", "match", "matcher_default", "groups", "m", "subgroups", "j", "group", "n", "subgroup", "node", "i", "Selection", "init_filter", "__esmMin", "init_selection", "init_matcher", "sparse_default", "update", "init_sparse", "__esmMin", "enter_default", "Selection", "sparse_default", "EnterNode", "parent", "datum", "init_enter", "__esmMin", "init_sparse", "init_selection", "child", "next", "selector", "constant_default", "x", "init_constant", "__esmMin", "bindIndex", "parent", "group", "enter", "update", "exit", "data", "i", "node", "groupLength", "dataLength", "EnterNode", "bindKey", "key", "nodeByKeyValue", "keyValues", "keyValue", "datum", "data_default", "value", "bind", "parents", "groups", "constant_default", "m", "j", "arraylike", "enterGroup", "updateGroup", "exitGroup", "i0", "i1", "previous", "next", "Selection", "init_data", "__esmMin", "init_selection", "init_enter", "init_constant", "exit_default", "Selection", "sparse_default", "init_exit", "__esmMin", "init_sparse", "init_selection", "join_default", "onenter", "onupdate", "onexit", "enter", "update", "exit", "init_join", "__esmMin", "merge_default", "context", "selection", "groups0", "groups1", "m0", "m1", "m", "merges", "j", "group0", "group1", "n", "merge", "node", "i", "Selection", "init_merge", "__esmMin", "init_selection", "order_default", "groups", "j", "m", "group", "next", "node", "init_order", "__esmMin", "sort_default", "compare", "ascending", "compareNode", "a", "b", "groups", "m", "sortgroups", "j", "group", "n", "sortgroup", "node", "i", "Selection", "init_sort", "__esmMin", "init_selection", "call_default", "callback", "init_call", "__esmMin", "nodes_default", "init_nodes", "__esmMin", "node_default", "groups", "j", "m", "group", "n", "node", "init_node", "__esmMin", "size_default", "size", "node", "init_size", "__esmMin", "empty_default", "init_empty", "__esmMin", "each_default", "callback", "groups", "j", "m", "group", "i", "n", "node", "init_each", "__esmMin", "attrRemove", "name", "attrRemoveNS", "fullname", "attrConstant", "value", "attrConstantNS", "attrFunction", "v", "attrFunctionNS", "attr_default", "namespace_default", "node", "init_attr", "__esmMin", "init_namespace", "window_default", "node", "init_window", "__esmMin", "styleRemove", "name", "styleConstant", "value", "priority", "styleFunction", "v", "style_default", "styleValue", "node", "window_default", "init_style", "__esmMin", "init_window", "propertyRemove", "name", "propertyConstant", "value", "propertyFunction", "v", "property_default", "init_property", "__esmMin", "classArray", "string", "classList", "node", "ClassList", "classedAdd", "names", "list", "i", "n", "classedRemove", "classedTrue", "classedFalse", "classedFunction", "value", "classed_default", "name", "init_classed", "__esmMin", "textRemove", "textConstant", "value", "textFunction", "v", "text_default", "init_text", "__esmMin", "htmlRemove", "htmlConstant", "value", "htmlFunction", "v", "html_default", "init_html", "__esmMin", "raise", "raise_default", "init_raise", "__esmMin", "lower", "lower_default", "init_lower", "__esmMin", "append_default", "name", "create", "creator_default", "init_append", "__esmMin", "init_creator", "constantNull", "insert_default", "name", "before", "create", "creator_default", "select", "selector_default", "init_insert", "__esmMin", "init_creator", "init_selector", "remove", "parent", "remove_default", "init_remove", "__esmMin", "selection_cloneShallow", "clone", "parent", "selection_cloneDeep", "clone_default", "deep", "init_clone", "__esmMin", "datum_default", "value", "init_datum", "__esmMin", "contextListener", "listener", "event", "parseTypenames", "typenames", "name", "i", "onRemove", "typename", "on", "j", "m", "onAdd", "value", "options", "o", "on_default", "n", "t", "init_on", "__esmMin", "dispatchEvent", "node", "type", "params", "window", "window_default", "event", "dispatchConstant", "dispatchFunction", "dispatch_default", "init_dispatch", "__esmMin", "init_window", "iterator_default", "groups", "j", "m", "group", "n", "node", "init_iterator", "__esmMin", "Selection", "groups", "parents", "selection", "root", "selection_selection", "selection_default", "init_selection", "__esmMin", "init_select", "init_selectAll", "init_selectChild", "init_selectChildren", "init_filter", "init_data", "init_enter", "init_exit", "init_join", "init_merge", "init_order", "init_sort", "init_call", "init_nodes", "init_node", "init_size", "init_empty", "init_each", "init_attr", "init_style", "init_property", "init_classed", "init_text", "init_html", "init_raise", "init_lower", "init_append", "init_insert", "init_remove", "init_clone", "init_datum", "init_on", "init_dispatch", "init_iterator", "select_default", "selectAll_default", "selectChild_default", "selectChildren_default", "filter_default", "data_default", "enter_default", "exit_default", "join_default", "merge_default", "order_default", "sort_default", "call_default", "nodes_default", "node_default", "size_default", "empty_default", "each_default", "attr_default", "style_default", "property_default", "classed_default", "text_default", "html_default", "raise_default", "lower_default", "append_default", "insert_default", "remove_default", "clone_default", "datum_default", "on_default", "dispatch_default", "iterator_default", "select_default", "selector", "Selection", "root", "init_select", "__esmMin", "init_selection", "create_default", "name", "select_default", "creator_default", "init_create", "__esmMin", "init_creator", "init_select", "local", "Local", "nextId", "init_local", "__esmMin", "node", "id", "value", "sourceEvent_default", "event", "sourceEvent", "init_sourceEvent", "__esmMin", "pointer_default", "event", "node", "sourceEvent_default", "svg", "point", "rect", "init_pointer", "__esmMin", "init_sourceEvent", "pointers_default", "events", "node", "sourceEvent_default", "event", "pointer_default", "init_pointers", "__esmMin", "init_pointer", "init_sourceEvent", "selectAll_default", "selector", "Selection", "array", "root", "init_selectAll", "__esmMin", "init_array", "init_selection", "src_exports", "__export", "create_default", "creator_default", "local", "matcher_default", "namespace_default", "namespaces_default", "pointer_default", "pointers_default", "select_default", "selectAll_default", "selection_default", "selector_default", "selectorAll_default", "styleValue", "window_default", "init_src", "__esmMin", "init_create", "init_creator", "init_local", "init_matcher", "init_namespace", "init_namespaces", "init_pointer", "init_pointers", "init_select", "init_selectAll", "init_selection", "init_selector", "init_selectorAll", "init_style", "init_window", "noevent_default", "event", "nonpassivecapture", "init_noevent", "__esmMin", "nodrag_default", "view", "root", "selection", "select_default", "noevent_default", "nonpassivecapture", "yesdrag", "noclick", "init_nodrag", "__esmMin", "init_src", "init_noevent", "init_src", "__esmMin", "init_nodrag", "now", "clockNow", "setFrame", "clearNow", "clock", "clockSkew", "Timer", "timer", "callback", "delay", "time", "t", "timerFlush", "frame", "taskHead", "e", "wake", "clockLast", "timeout", "nap", "poke", "pokeDelay", "t0", "t1", "t2", "taskTail", "sleep", "interval", "init_timer", "__esmMin", "f", "timeout_default", "callback", "delay", "time", "t", "Timer", "elapsed", "init_timeout", "__esmMin", "init_timer", "init_src", "__esmMin", "init_timer", "init_timeout", "schedule_default", "node", "name", "id", "index", "group", "timing", "schedules", "create", "emptyOn", "emptyTween", "CREATED", "init", "schedule", "get", "set", "STARTED", "self", "tween", "timer", "elapsed", "SCHEDULED", "start", "i", "j", "n", "o", "stop", "timeout_default", "RUNNING", "ENDED", "tick", "STARTING", "t", "ENDING", "init_schedule", "__esmMin", "init_src", "dispatch_default", "interrupt_default", "node", "name", "schedules", "schedule", "active", "empty", "i", "STARTING", "ENDING", "ENDED", "init_interrupt", "__esmMin", "init_schedule", "interrupt_default", "name", "init_interrupt", "__esmMin", "tweenRemove", "id", "name", "tween0", "tween1", "schedule", "set", "tween", "i", "n", "tweenFunction", "value", "t", "tween_default", "get", "tweenValue", "transition", "node", "init_tween", "__esmMin", "init_schedule", "interpolate_default", "a", "b", "c", "number_default", "color", "rgb_default", "string_default", "init_interpolate", "__esmMin", "init_src", "attrRemove", "name", "attrRemoveNS", "fullname", "attrConstant", "interpolate", "value1", "string00", "string1", "interpolate0", "string0", "attrConstantNS", "attrFunction", "value", "string10", "attrFunctionNS", "attr_default", "namespace_default", "i", "interpolateTransformSvg", "interpolate_default", "tweenValue", "init_attr", "__esmMin", "init_src", "init_tween", "init_interpolate", "attrInterpolate", "name", "i", "t", "attrInterpolateNS", "fullname", "attrTweenNS", "value", "t0", "i0", "tween", "attrTween", "attrTween_default", "key", "namespace_default", "init_attrTween", "__esmMin", "init_src", "delayFunction", "id", "value", "init", "delayConstant", "delay_default", "get", "init_delay", "__esmMin", "init_schedule", "durationFunction", "id", "value", "set", "durationConstant", "duration_default", "get", "init_duration", "__esmMin", "init_schedule", "easeConstant", "id", "value", "set", "ease_default", "get", "init_ease", "__esmMin", "init_schedule", "easeVarying", "id", "value", "v", "set", "easeVarying_default", "init_easeVarying", "__esmMin", "init_schedule", "filter_default", "match", "matcher_default", "groups", "m", "subgroups", "j", "group", "n", "subgroup", "node", "i", "Transition", "init_filter", "__esmMin", "init_src", "init_transition", "merge_default", "transition", "groups0", "groups1", "m0", "m1", "m", "merges", "j", "group0", "group1", "n", "merge", "node", "i", "Transition", "init_merge", "__esmMin", "init_transition", "start", "name", "i", "onFunction", "id", "listener", "on0", "on1", "sit", "init", "set", "schedule", "on", "on_default", "get", "init_on", "__esmMin", "init_schedule", "removeFunction", "id", "parent", "i", "remove_default", "init_remove", "__esmMin", "select_default", "select", "name", "id", "selector_default", "groups", "m", "subgroups", "j", "group", "n", "subgroup", "node", "subnode", "i", "schedule_default", "get", "Transition", "init_select", "__esmMin", "init_src", "init_transition", "init_schedule", "selectAll_default", "select", "name", "id", "selectorAll_default", "groups", "m", "subgroups", "parents", "j", "group", "n", "node", "i", "children", "child", "inherit", "get", "k", "l", "schedule_default", "Transition", "init_selectAll", "__esmMin", "init_src", "init_transition", "init_schedule", "selection_default", "Selection", "init_selection", "__esmMin", "init_src", "styleNull", "name", "interpolate", "string00", "string10", "interpolate0", "string0", "styleValue", "string1", "styleRemove", "styleConstant", "value1", "styleFunction", "value", "styleMaybeRemove", "id", "on0", "on1", "listener0", "key", "event", "remove", "schedule", "set", "on", "listener", "style_default", "priority", "i", "interpolateTransformCss", "interpolate_default", "tweenValue", "init_style", "__esmMin", "init_src", "init_schedule", "init_tween", "init_interpolate", "styleInterpolate", "name", "i", "priority", "t", "styleTween", "value", "i0", "tween", "styleTween_default", "key", "init_styleTween", "__esmMin", "textConstant", "value", "textFunction", "value1", "text_default", "tweenValue", "init_text", "__esmMin", "init_tween", "textInterpolate", "i", "textTween", "value", "t0", "i0", "tween", "textTween_default", "key", "init_textTween", "__esmMin", "transition_default", "name", "id0", "id1", "newId", "groups", "m", "j", "group", "n", "node", "i", "inherit", "get", "schedule_default", "Transition", "init_transition", "__esmMin", "init_schedule", "end_default", "on0", "on1", "that", "id", "size", "resolve", "reject", "cancel", "end", "schedule", "set", "on", "init_end", "__esmMin", "init_schedule", "Transition", "groups", "parents", "name", "id", "transition", "selection_default", "newId", "selection_prototype", "init_transition", "__esmMin", "init_src", "init_attr", "init_attrTween", "init_delay", "init_duration", "init_ease", "init_easeVarying", "init_filter", "init_merge", "init_on", "init_remove", "init_select", "init_selectAll", "init_selection", "init_style", "init_styleTween", "init_text", "init_textTween", "init_tween", "init_end", "select_default", "selectAll_default", "filter_default", "merge_default", "transition_default", "on_default", "attr_default", "attrTween_default", "style_default", "styleTween_default", "text_default", "textTween_default", "remove_default", "tween_default", "delay_default", "duration_default", "ease_default", "easeVarying_default", "end_default", "cubicInOut", "t", "init_cubic", "__esmMin", "init_src", "__esmMin", "init_cubic", "inherit", "node", "id", "timing", "transition_default", "name", "Transition", "newId", "defaultTiming", "now", "groups", "m", "j", "group", "n", "i", "schedule_default", "init_transition", "__esmMin", "init_schedule", "init_src", "cubicInOut", "init_selection", "__esmMin", "init_src", "init_interrupt", "init_transition", "selection_default", "interrupt_default", "transition_default", "init_src", "__esmMin", "init_selection", "init_interrupt", "constant_default", "init_constant", "__esmMin", "x", "ZoomEvent", "type", "sourceEvent", "target", "transform", "dispatch", "init_event", "__esmMin", "Transform", "k", "x", "y", "transform", "node", "identity", "init_transform", "__esmMin", "point", "location", "nopropagation", "event", "noevent_default", "init_noevent", "__esmMin", "defaultFilter", "event", "defaultExtent", "defaultTransform", "identity", "defaultWheelDelta", "defaultTouchable", "defaultConstrain", "transform", "extent", "translateExtent", "dx0", "dx1", "dy0", "dy1", "zoom_default", "filter", "constrain", "wheelDelta", "touchable", "scaleExtent", "duration", "interpolate", "listeners", "dispatch_default", "touchstarting", "touchfirst", "touchending", "touchDelay", "wheelDelay", "clickDistance2", "tapDistance", "zoom", "selection", "wheeled", "mousedowned", "dblclicked", "touchstarted", "touchmoved", "touchended", "collection", "point", "schedule", "gesture", "k", "p", "k0", "k1", "e", "t0", "p0", "centroid", "p1", "translate", "scale", "x", "y", "t", "Transform", "transition", "that", "args", "g", "w", "a", "b", "i", "l", "clean", "Gesture", "key", "type", "d", "select_default", "ZoomEvent", "pointer_default", "interrupt_default", "noevent_default", "wheelidled", "currentTarget", "v", "mousemoved", "mouseupped", "x0", "y0", "nodrag_default", "nopropagation", "dx", "dy", "yesdrag", "t1", "touches", "n", "started", "l0", "l1", "dp", "dl", "_", "constant_default", "value", "init_zoom", "__esmMin", "init_src", "init_constant", "init_event", "init_transform", "init_noevent", "src_exports", "__export", "Transform", "zoom_default", "identity", "transform", "init_src", "__esmMin", "init_zoom", "init_transform", "require_events", "__commonJSMin", "exports", "module", "R", "ReflectApply", "target", "receiver", "args", "ReflectOwnKeys", "ProcessEmitWarning", "warning", "NumberIsNaN", "value", "EventEmitter", "once", "defaultMaxListeners", "checkListener", "listener", "arg", "n", "_getMaxListeners", "that", "type", "i", "doError", "events", "er", "err", "handler", "len", "listeners", "arrayClone", "_addListener", "prepend", "m", "existing", "w", "onceWrapper", "_onceWrap", "state", "wrapped", "list", "position", "originalListener", "spliceOne", "keys", "key", "_listeners", "unwrap", "evlistener", "unwrapListeners", "emitter", "listenerCount", "arr", "copy", "index", "ret", "name", "resolve", "reject", "errorListener", "resolver", "eventTargetAgnosticAddListener", "addErrorHandlerIfEventEmitter", "flags", "wrapListener", "d3_shape_1", "d3_selection_1", "annotations", "options", "xScale", "yScale", "line", "d", "parentSelection", "selection", "enter", "yRange", "xRange", "path", "pathEnter", "text", "textEnter", "exports", "d3_color_1", "Globals", "v", "registerGraphType", "graphType", "graphTypeBulder", "exports", "globals_1", "__importDefault", "utils", "lo", "hi", "n", "step", "_", "i", "x", "v", "axis", "range", "config", "option", "me", "value", "vMin", "vMax", "data", "index", "indexModLenColor", "exports", "require_token_type", "__commonJSMin", "exports", "module", "require_Lexer", "__commonJSMin", "exports", "module", "tokenType", "ESCAPES", "DELIMITERS", "isDigit", "c", "isIdentifier", "isWhitespace", "isDelimiter", "str", "isQuote", "Lexer", "message", "index", "error", "text", "c2", "c3", "nth", "current", "number", "quote", "string", "escape", "hex", "replacement", "require_Node", "__commonJSMin", "exports", "module", "Node", "require_ConstantNode", "__commonJSMin", "exports", "module", "Node", "SUPPORTED_TYPES", "ConstantNode", "value", "type", "require_OperatorNode", "__commonJSMin", "exports", "module", "Node", "OperatorNode", "op", "args", "require_UnaryNode", "__commonJSMin", "exports", "module", "Node", "UnaryNode", "op", "argument", "require_SymbolNode", "__commonJSMin", "exports", "module", "Node", "SymbolNode", "name", "require_FunctionNode", "__commonJSMin", "exports", "module", "Node", "FunctionNode", "name", "args", "require_ArrayNode", "__commonJSMin", "exports", "module", "Node", "ArrayNode", "nodes", "require_ConditionalNode", "__commonJSMin", "exports", "module", "Node", "ConditionalNode", "predicate", "truthy", "falsy", "require_AssignmentNode", "__commonJSMin", "exports", "module", "Node", "AssignmentNode", "name", "expr", "require_BlockNode", "__commonJSMin", "exports", "module", "Node", "BlockNode", "blocks", "require_Parser", "__commonJSMin", "exports", "module", "tokenType", "Lexer", "ConstantNode", "OperatorNode", "UnaryNode", "SymbolNode", "FunctionNode", "ArrayNode", "ConditionalNode", "AssignmentNode", "BlockNode", "Parser", "first", "i", "text", "blocks", "left", "predicate", "truthy", "falsy", "op", "right", "current", "symbol", "node", "symbolToken", "name", "params", "token", "require_node", "__commonJSMin", "exports", "module", "require_mr_parser", "__commonJSMin", "exports", "module", "require_extend", "__commonJSMin", "exports", "module", "hasOwn", "toStr", "defineProperty", "gOPD", "isArray", "arr", "isPlainObject", "obj", "hasOwnConstructor", "hasIsPrototypeOf", "key", "setProperty", "target", "options", "getProperty", "name", "extend", "src", "copy", "copyIsArray", "clone", "i", "length", "deep", "require_ArrayNode", "__commonJSMin", "exports", "module", "node", "self", "arr", "el", "arrString", "require_AssignmentNode", "__commonJSMin", "exports", "module", "node", "require_ConditionalNode", "__commonJSMin", "exports", "module", "node", "condition", "trueExpr", "falseExpr", "require_ConstantNode", "__commonJSMin", "exports", "module", "node", "require_FunctionNode", "__commonJSMin", "exports", "module", "SymbolNode", "functionProxy", "node", "self", "method", "args", "arg", "require_Operators", "__commonJSMin", "exports", "module", "require_OperatorNode", "__commonJSMin", "exports", "module", "Operators", "node", "namedOperator", "require_SymbolNode", "__commonJSMin", "exports", "module", "node", "id", "require_UnaryOperators", "__commonJSMin", "exports", "module", "require_UnaryNode", "__commonJSMin", "exports", "module", "UnaryOperators", "node", "namedOperator", "require_Interpreter", "__commonJSMin", "exports", "module", "extend", "types", "Interpreter", "owner", "options", "node", "test", "fn", "oldRaw", "require_CodeGenerator", "__commonJSMin", "exports", "module", "Parser", "Interpreter", "extend", "CodeGenerator", "options", "defs", "namespace", "symbol", "scope", "ns", "fn", "name", "defsCode", "code", "factoryCode", "factory", "self", "program", "statement", "require_math_codegen", "__commonJSMin", "exports", "module", "require_adapter", "__commonJSMin", "exports", "module", "math", "a", "b", "res", "i", "root", "inv", "x", "require_eval", "__commonJSMin", "exports", "module", "CodeGenerator", "math", "processScope", "scope", "k", "value", "expression", "require_built_in_math_eval", "__commonJSMin", "exports", "module", "require_ArrayNode", "__commonJSMin", "exports", "module", "node", "self", "arr", "el", "arrString", "require_AssignmentNode", "__commonJSMin", "exports", "module", "node", "require_ConditionalNode", "__commonJSMin", "exports", "module", "node", "condition", "trueExpr", "falseExpr", "require_ConstantNode", "__commonJSMin", "exports", "module", "node", "require_FunctionNode", "__commonJSMin", "exports", "module", "SymbolNode", "functionProxy", "node", "self", "method", "args", "arg", "require_Operators", "__commonJSMin", "exports", "module", "require_OperatorNode", "__commonJSMin", "exports", "module", "Operators", "node", "namedOperator", "require_SymbolNode", "__commonJSMin", "exports", "module", "node", "id", "require_UnaryOperators", "__commonJSMin", "exports", "module", "require_UnaryNode", "__commonJSMin", "exports", "module", "UnaryOperators", "node", "namedOperator", "require_Interpreter", "__commonJSMin", "exports", "module", "extend", "types", "Interpreter", "owner", "options", "node", "test", "fn", "oldRaw", "require_CodeGenerator", "__commonJSMin", "exports", "module", "Parser", "Interpreter", "extend", "CodeGenerator", "options", "defs", "namespace", "self", "symbol", "scope", "ns", "applyFactoryIfNeeded", "value", "fn", "name", "defsCode", "code", "factoryCode", "factory", "program", "statement", "require_math_codegen", "__commonJSMin", "exports", "module", "isInterval", "x", "exports", "isEmpty", "i", "isWhole", "isSingleton", "zeroIn", "hasValue", "value", "hasInterval", "y", "intervalsOverlap", "require_double", "__commonJSMin", "exports", "module", "hasTypedArrays", "DOUBLE_VIEW", "UINT_VIEW", "toDoubleLE", "lo", "hi", "lowUintLE", "highUintLE", "n", "toDoubleBE", "lowUintBE", "highUintBE", "toDouble", "buffer", "lowUint", "highUint", "b", "require_nextafter", "__commonJSMin", "exports", "module", "doubleBits", "SMALLEST_DENORM", "UINT_MAX", "nextafter", "x", "y", "hi", "lo", "nextafter_1", "__importDefault", "identity", "v", "prev", "next", "toInteger", "x", "cache", "round", "y", "power", "exports", "utils", "__importStar", "round_1", "__importDefault", "_Interval", "__Interval", "lo", "hi", "Interval", "v", "exports", "bindNew", "Class", "_Class", "len", "rest", "key", "interval_1", "round_1", "__importDefault", "piLow", "piHigh", "constants", "exports", "utils", "__importStar", "equal", "x", "y", "exports", "EPS", "assert", "a", "message", "assertEps", "b", "almostEqual", "assertIncludes", "notEqual", "lessThan", "greaterThan", "lessEqualThan", "greaterEqualThan", "interval_1", "round_1", "__importDefault", "utils", "__importStar", "constants_1", "nonZero", "x", "y", "xl", "xh", "yl", "yh", "out", "exports", "positive", "v", "negative", "zero", "interval_1", "round_1", "__importDefault", "constants_1", "utils", "__importStar", "division", "add", "x", "y", "exports", "subtract", "multiply", "xl", "xh", "yl", "yh", "out", "divide", "positive", "negative", "interval_1", "round_1", "__importDefault", "constants_1", "utils", "__importStar", "arithmetic", "fmod", "x", "y", "yb", "exports", "multiplicativeInverse", "pow", "power", "yl", "yh", "sqrt", "nthRoot", "n", "yp", "yn", "interval_1", "round_1", "__importDefault", "constants_1", "utils", "__importStar", "arithmetic", "exp", "x", "exports", "log", "l", "log10", "log2", "hull", "y", "badX", "badY", "intersection", "lo", "hi", "union", "difference", "width", "abs", "max", "min", "clone", "require_trigonometric", "__commonJSMin", "exports", "interval_1", "round_1", "__importDefault", "constants_1", "utils", "__importStar", "arithmetic", "algebra", "misc", "onlyInfinity", "x", "handleNegative", "interval", "n", "cos", "cache", "pi2", "t", "cosv", "lo", "hi", "rlo", "rhi", "sin", "tan", "pi", "asin", "acos", "atan", "sinh", "cosh", "tanh", "interval_1", "exports", "round_1", "__importDefault", "constants_1", "relational", "__importStar", "arithmetic", "algebra", "trigonometric", "misc", "utils", "MixedInterval", "__exportStar", "require_adapter", "__commonJSMin", "exports", "module", "ns", "a", "b", "require_policies", "__commonJSMin", "exports", "module", "Interval", "require_eval", "__commonJSMin", "exports", "module", "CodeGenerator", "Interval", "processScope", "scope", "k", "value", "expression", "require_interval_arithmetic_eval", "__commonJSMin", "exports", "module", "built_in_math_eval_1", "__importDefault", "interval_arithmetic_eval_1", "samplers", "getMathJS", "mathJS", "generateEvaluator", "samplerName", "doCompile", "expression", "compiled", "compileIfPossible", "meta", "property", "hiddenProperty", "hiddenCompiled", "getCompiledExpression", "evaluate", "variables", "builtIn", "exports", "interval", "d3_shape_1", "d3_selection_1", "utils_1", "__importDefault", "globals_1", "eval_1", "mouseTip", "config", "x", "y", "MARGIN", "line", "d", "lineGenerator", "el", "data", "tipInnerJoin", "tipInnerEnter", "tip", "selection", "join", "tipEnter", "coordinates", "i", "minDist", "closestIndex", "meta", "xScale", "yScale", "width", "height", "x0", "y0", "range", "candidateY", "tDist", "clampX", "clampY", "color", "option", "exports", "interval_arithmetic_eval_1", "__importStar", "eval_1", "utils_1", "__importDefault", "interval1d", "samplerParams", "xCoords", "xScale", "yScale", "yMin", "yMax", "samples", "i", "x", "y", "prev", "next", "rectEps", "smallRect", "quadTree", "d", "sample", "midX", "midY", "east", "west", "north", "south", "interval2d", "xDomain", "yDomain", "sampler", "fnTypes", "exports", "utils_1", "__importDefault", "eval_1", "checkAsymptote", "d0", "d1", "d", "sign", "level", "n", "x0", "x1", "samples", "oldY", "oldX", "i", "x", "y", "deltaY", "split", "data", "yScale", "oldSign", "evalResult", "yMin", "yMax", "evalGroup", "deltaX", "yOld", "newSign", "check", "linear", "samplerParams", "allX", "yDomain", "parametric", "parametricRange", "tCoords", "t", "polar", "polarRange", "thetaSamples", "theta", "r", "points", "vector", "sampleParams", "sampler", "fnTypes", "exports", "globals_1", "__importDefault", "interval_1", "builtIn_1", "computeEndpoints", "scale", "d", "range", "start", "end", "evaluate", "chart", "samplerFn", "nSamples", "data", "exports", "d3_selection_1", "d3_shape_1", "utils_1", "__importDefault", "evaluate_1", "polyline", "chart", "plotLine", "selection", "d", "el", "index", "evaluatedData", "color", "innerSelection", "yRange", "yMax", "yMin", "diff", "y", "line", "area", "cls", "innerSelectionEnter", "path", "pathD", "k", "val", "exports", "d3_selection_1", "evaluate_1", "__importDefault", "utils_1", "interval", "chart", "minWidthHeight", "xScale", "yScale", "clampRange", "vLo", "vHi", "gLo", "gHi", "t", "hi", "lo", "line", "points", "closed", "path", "range", "minY", "maxY", "i", "length", "x", "y", "yLo", "yHi", "moveX", "viewportY", "plotLine", "selection", "d", "el", "index", "evaluatedData", "innerSelection", "cls", "innerSelectionEnter", "k", "val", "exports", "d3_selection_1", "d3_color_1", "utils_1", "__importDefault", "evaluate_1", "Scatter", "chart", "xScale", "yScale", "scatter", "selection", "d", "i", "j", "index", "color", "evaluatedData", "joined", "innerSelection", "cls", "innerSelectionEnter", "k", "val", "exports", "d3_selection_1", "d3_color_1", "utils_1", "__importDefault", "Text", "chart", "xScale", "yScale", "text", "selection", "d", "innerSelection", "innerSelectionEnter", "color", "k", "exports", "polyline_1", "__importDefault", "exports", "interval_1", "scatter_1", "text_1", "datumDefaults", "d", "exports", "d3_selection_1", "graph_types_1", "eval_1", "datum_defaults_1", "__importDefault", "utils_1", "derivative", "chart", "derivativeDatum", "computeLine", "d", "x0", "checkAutoUpdate", "self", "x", "selection", "el", "data", "innerSelection", "innerSelectionEnter", "exports", "d3_selection_1", "eval_1", "datum_defaults_1", "__importDefault", "graph_types_1", "utils_1", "secant", "chart", "secantDefaults", "computeSlope", "scope", "updateLine", "d", "x0", "x1", "setFn", "setMouseListener", "secantObject", "self", "x", "computeLines", "data", "i", "selection", "el", "innerSelection", "innerSelectionEnter", "exports", "d3_selection_1", "derivative_1", "__importDefault", "secant_1", "helpers", "chart", "helper", "selection", "el", "exports", "d3_shape_1", "d3_format_1", "d3_scale_1", "d3_axis_1", "d3_zoom_1", "d3_selection_1", "d3_interpolate_1", "events_1", "__importDefault", "annotations_1", "tip_1", "helpers_1", "datum_defaults_1", "globals_1", "getD3Scale", "type", "Chart", "_Chart", "options", "n", "letter", "cachedInstance", "cachedNode", "margin", "self", "integerFormat", "formatter", "d", "computeYScale", "xScale", "xDiff", "xDomain", "axis", "yDomain", "yLimit", "root", "tip", "selection", "canvas", "id", "defs", "canvasEnter", "xLabel", "xLabelEnter", "yLabel", "yLabelEnter", "content", "contentEnter", "yOrigin", "yOriginEnter", "xOrigin", "xOriginEnter", "graphs", "graphsEnter", "index", "ev", "event", "plugins", "plugin", "i", "instance", "yMin", "yMax", "yMid", "yTranslation", "xMin", "xMax", "xMid", "xTranslation", "prevInstance", "events", "coordinates", "transform", "xScaleClone", "yScaleClone", "x", "y", "meta", "title", "format", "text", "all", "mouse", "graph", "e", "args", "localArgs", "exports", "require_types", "__commonJSMin", "exports", "chart_1", "exports", "globals_1", "__importStar", "graph_types_1", "$eval", "functionPlot", "options", "instance", "__exportStar", "eval_1", "graph_types_2", "$", "selector", "$all", "store", "key", "value", "app", "createElement", "tag", "attrs", "children", "element", "name", "child", "childElement", "createElement$1", "getAttrs", "element", "attrs", "attr", "getClassNames", "combineClassNames", "arrayOfClassnames", "classItem", "value", "index", "self", "toPascalCase", "string", "g0", "g1", "g2", "replaceElement", "nameAttr", "icons", "iconName", "ComponentName", "iconNode", "elementAttrs", "tag", "iconAttributes", "children", "iconAttrs", "classNames", "svgElement", "createElement$1", "defaultAttributes", "ArrowUpDown", "defaultAttributes", "Braces", "defaultAttributes", "CircleAlert", "defaultAttributes", "Circle", "defaultAttributes", "Copy", "defaultAttributes", "CornerDownRight", "defaultAttributes", "Dot", "defaultAttributes", "Download", "defaultAttributes", "EllipsisVertical", "defaultAttributes", "Eraser", "defaultAttributes", "Info", "defaultAttributes", "ListRestart", "defaultAttributes", "Palette", "defaultAttributes", "PanelLeftClose", "defaultAttributes", "PanelLeft", "defaultAttributes", "Plus", "defaultAttributes", "Printer", "defaultAttributes", "RefreshCcw", "defaultAttributes", "RotateCcw", "defaultAttributes", "Scaling", "defaultAttributes", "Settings", "defaultAttributes", "Trash", "defaultAttributes", "Upload", "defaultAttributes", "createIcons", "icons", "nameAttr", "attrs", "elementsToReplace", "element", "replaceElement", "deprecatedElements", "icons", "CircleAlert", "ArrowUpDown", "Braces", "Circle", "Copy", "CornerDownRight", "Dot", "Download", "EllipsisVertical", "Eraser", "Info", "ListRestart", "Palette", "PanelLeft", "PanelLeftClose", "Plus", "Printer", "RefreshCcw", "RotateCcw", "Scaling", "Settings", "Trash", "Upload", "generateIcons", "createIcons", "import_uikit", "modal", "id", "UIkit", "showError", "title", "error", "$", "notify", "msg", "stat", "app", "confirm", "action", "yesAction", "event", "isMac", "isElectron", "getTheme", "app", "store", "checkLocale", "locale", "checkSize", "$", "toggleMinMax", "checkUpdates", "notify", "event", "status", "Coloris", "window", "document", "Math", "undefined", "ctx", "currentColor", "container", "picker", "colorArea", "colorMarker", "colorPreview", "colorValue", "clearButton", "closeButton", "hueSlider", "hueMarker", "alphaSlider", "alphaMarker", "currentEl", "currentFormat", "oldColor", "keyboardNav", "colorAreaDims", "settings", "instances", "currentInstanceId", "defaultInstance", "hasInstance", "configure", "options", "key", "bindFields", "wrapFields", "updatePickerPosition", "field", "getEl", "swatchesContainer", "swatches", "swatch", "i", "button", "defaultColor", "getColorFormatFromStr", "setColorFromStr", "labels", "update", "label", "openLabel", "swatchLabel", "setVirtualInstance", "selector", "removeVirtualInstance", "resetVirtualInstance", "attachVirtualInstance", "element", "unsupportedOptions", "option", "addListener", "openPicker", "updateColorPreview", "event", "getFocusableElements", "parent", "scrollY", "pickerWidth", "pickerHeight", "reposition", "parentStyle", "parentMarginTop", "parentBorderTop", "offset", "coords", "left", "top", "wrapColorField", "parentNode", "wrapper", "classes", "closePicker", "revert", "prevEl", "str", "rgba", "strToRGBA", "hsva", "RGBAtoHSVA", "updateMarkerA11yLabel", "updateColor", "format", "pickColor", "color", "setColorAtPosition", "x", "y", "HSVAtoRGBA", "saturation", "value", "getPointerPosition", "moveMarker", "pointer", "setMarkerPosition", "moveMarkerOnKeydown", "offsetX", "offsetY", "hex", "RGBAToHex", "opaqueHex", "RGBAToStr", "HSLAToStr", "HSVAtoHSLA", "setHue", "hue", "setAlpha", "alpha", "chroma", "hueBy60", "m", "index", "red", "green", "blue", "lightness", "xmax", "xmin", "regex", "match", "h", "R", "G", "B", "A", "hsla", "init", "target", "shiftKey", "focusables", "firstFocusable", "lastFocusable", "movements", "node", "id", "context", "type", "fn", "matches", "DOMReady", "args", "setColor", "methods", "_len", "_key", "_coloris", "_init", "_set", "_wrap", "_close", "_setInstance", "_removeInstance", "_updatePosition", "coloris_default", "import_deep_diff", "checkDefaultColors", "app", "store", "DeepDiff", "colors", "d", "checkColorChange", "$all", "picker", "isSame", "getTheme", "activePicker", "event", "coloris_default", "button", "$", "generateIcons", "appTheme", "colorSheet", "color", "modal", "confirm", "LuxonError", "InvalidDateTimeError", "reason", "InvalidIntervalError", "InvalidDurationError", "ConflictingSpecificationError", "InvalidUnitError", "unit", "InvalidArgumentError", "ZoneIsAbstractError", "n", "s", "l", "DATE_SHORT", "DATE_MED", "DATE_MED_WITH_WEEKDAY", "DATE_FULL", "DATE_HUGE", "TIME_SIMPLE", "TIME_WITH_SECONDS", "TIME_WITH_SHORT_OFFSET", "TIME_WITH_LONG_OFFSET", "TIME_24_SIMPLE", "TIME_24_WITH_SECONDS", "TIME_24_WITH_SHORT_OFFSET", "TIME_24_WITH_LONG_OFFSET", "DATETIME_SHORT", "DATETIME_SHORT_WITH_SECONDS", "DATETIME_MED", "DATETIME_MED_WITH_SECONDS", "DATETIME_MED_WITH_WEEKDAY", "DATETIME_FULL", "DATETIME_FULL_WITH_SECONDS", "DATETIME_HUGE", "DATETIME_HUGE_WITH_SECONDS", "Zone", "ZoneIsAbstractError", "ts", "opts", "format", "otherZone", "singleton", "SystemZone", "_SystemZone", "Zone", "ts", "format", "locale", "parseZoneInfo", "formatOffset", "otherZone", "dtfCache", "makeDTF", "zone", "typeToPos", "hackyOffset", "dtf", "date", "formatted", "parsed", "fMonth", "fDay", "fYear", "fadOrBc", "fHour", "fMinute", "fSecond", "partsOffset", "filled", "type", "value", "pos", "isUndefined", "ianaZoneCache", "IANAZone", "_IANAZone", "Zone", "name", "s", "ts", "format", "locale", "parseZoneInfo", "formatOffset", "year", "month", "day", "adOrBc", "hour", "minute", "second", "asUTC", "objToLocalTS", "asTS", "over", "otherZone", "intlLFCache", "getCachedLF", "locString", "opts", "key", "dtf", "intlDTCache", "getCachedDTF", "intlNumCache", "getCachedINF", "inf", "intlRelCache", "getCachedRTF", "base", "cacheKeyOpts", "sysLocaleCache", "systemLocale", "weekInfoCache", "getCachedWeekInfo", "data", "locale", "parseLocaleString", "localeStr", "xIndex", "uIndex", "options", "selectedStr", "smaller", "numberingSystem", "calendar", "intlConfigString", "outputCalendar", "mapMonths", "f", "ms", "i", "dt", "DateTime", "mapWeekdays", "listStuff", "loc", "length", "englishFn", "intlFn", "mode", "supportsFastNumbers", "PolyNumberFormatter", "intl", "forceSimple", "padTo", "floor", "otherOpts", "intlOpts", "fixed", "roundTo", "padStart", "PolyDateFormatter", "z", "gmtOffset", "offsetZ", "IANAZone", "value", "parts", "part", "offsetName", "PolyRelFormatter", "isEnglish", "hasRelative", "count", "unit", "formatRelativeTime", "fallbackWeekSettings", "Locale", "_Locale", "weekSettings", "defaultToEN", "specifiedLocale", "Settings", "localeR", "numberingSystemR", "outputCalendarR", "weekSettingsR", "validateWeekSettings", "numbering", "parsedLocale", "parsedNumberingSystem", "parsedOutputCalendar", "isActuallyEn", "hasNoWeirdness", "alts", "format", "months", "formatStr", "weekdays", "meridiems", "eras", "field", "df", "results", "matching", "m", "hasLocaleWeekInfo", "other", "singleton", "FixedOffsetZone", "_FixedOffsetZone", "Zone", "offset", "s", "signedOffset", "formatOffset", "ts", "format", "otherZone", "InvalidZone", "Zone", "zoneName", "normalizeZone", "input", "defaultZone", "offset", "isUndefined", "Zone", "isString", "lowered", "SystemZone", "FixedOffsetZone", "IANAZone", "isNumber", "InvalidZone", "numberingSystems", "numberingSystemsUTF16", "hanidecChars", "parseDigits", "str", "value", "i", "code", "key", "min", "max", "digitRegexCache", "resetDigitRegexCache", "digitRegex", "numberingSystem", "append", "ns", "now", "defaultZone", "defaultLocale", "defaultNumberingSystem", "defaultOutputCalendar", "twoDigitCutoffYear", "throwOnInvalid", "defaultWeekSettings", "Settings", "n", "zone", "normalizeZone", "SystemZone", "locale", "numberingSystem", "outputCalendar", "weekSettings", "validateWeekSettings", "cutoffYear", "Locale", "IANAZone", "DateTime", "resetDigitRegexCache", "Invalid", "reason", "explanation", "nonLeapLadder", "leapLadder", "unitOutOfRange", "unit", "value", "Invalid", "dayOfWeek", "year", "month", "day", "d", "js", "computeOrdinal", "isLeapYear", "uncomputeOrdinal", "ordinal", "table", "month0", "i", "isoWeekdayToLocal", "isoWeekday", "startOfWeek", "gregorianToWeek", "gregObj", "minDaysInFirstWeek", "weekday", "weekNumber", "weekYear", "weeksInWeekYear", "timeObject", "weekToGregorian", "weekData", "weekdayOfJan4", "yearInDays", "daysInYear", "gregorianToOrdinal", "gregData", "ordinalToGregorian", "ordinalData", "usesLocalWeekValues", "obj", "loc", "isUndefined", "ConflictingSpecificationError", "hasInvalidWeekData", "validYear", "isInteger", "validWeek", "integerBetween", "validWeekday", "hasInvalidOrdinalData", "validOrdinal", "hasInvalidGregorianData", "validMonth", "validDay", "daysInMonth", "hasInvalidTimeData", "hour", "minute", "second", "millisecond", "validHour", "validMinute", "validSecond", "validMillisecond", "isUndefined", "o", "isNumber", "isInteger", "isString", "isDate", "hasRelative", "hasLocaleWeekInfo", "maybeArray", "thing", "bestBy", "arr", "by", "compare", "best", "next", "pair", "pick", "obj", "keys", "a", "k", "hasOwnProperty", "prop", "validateWeekSettings", "settings", "InvalidArgumentError", "integerBetween", "v", "bottom", "top", "floorMod", "x", "n", "padStart", "input", "isNeg", "padded", "parseInteger", "string", "parseFloating", "parseMillis", "fraction", "f", "roundTo", "number", "digits", "towardZero", "factor", "isLeapYear", "year", "daysInYear", "daysInMonth", "month", "modMonth", "modYear", "objToLocalTS", "d", "firstWeekOffset", "minDaysInFirstWeek", "startOfWeek", "isoWeekdayToLocal", "dayOfWeek", "weeksInWeekYear", "weekYear", "weekOffset", "weekOffsetNext", "untruncateYear", "Settings", "parseZoneInfo", "ts", "offsetFormat", "locale", "timeZone", "date", "intlOpts", "modified", "parsed", "m", "signedOffset", "offHourStr", "offMinuteStr", "offHour", "offMin", "offMinSigned", "asNumber", "value", "numericValue", "normalizeObject", "normalizer", "normalized", "u", "formatOffset", "offset", "format", "hours", "minutes", "sign", "timeObject", "monthsLong", "monthsShort", "monthsNarrow", "months", "length", "weekdaysLong", "weekdaysShort", "weekdaysNarrow", "weekdays", "meridiems", "erasLong", "erasShort", "erasNarrow", "eras", "meridiemForDateTime", "dt", "weekdayForDateTime", "monthForDateTime", "eraForDateTime", "formatRelativeTime", "unit", "count", "numeric", "narrow", "units", "lastable", "isDay", "isInPast", "fmtValue", "singular", "lilUnits", "fmtUnit", "stringifyTokens", "splits", "tokenToString", "s", "token", "macroTokenToFormatOpts", "DATE_SHORT", "DATE_MED", "DATE_FULL", "DATE_HUGE", "TIME_SIMPLE", "TIME_WITH_SECONDS", "TIME_WITH_SHORT_OFFSET", "TIME_WITH_LONG_OFFSET", "TIME_24_SIMPLE", "TIME_24_WITH_SECONDS", "TIME_24_WITH_SHORT_OFFSET", "TIME_24_WITH_LONG_OFFSET", "DATETIME_SHORT", "DATETIME_MED", "DATETIME_FULL", "DATETIME_HUGE", "DATETIME_SHORT_WITH_SECONDS", "DATETIME_MED_WITH_SECONDS", "DATETIME_FULL_WITH_SECONDS", "DATETIME_HUGE_WITH_SECONDS", "Formatter", "_Formatter", "locale", "opts", "fmt", "current", "currentFull", "bracketed", "i", "c", "formatOpts", "dt", "interval", "n", "p", "padStart", "knownEnglish", "useDateTimeFormatter", "string", "extract", "formatOffset", "meridiem", "meridiemForDateTime", "month", "length", "standalone", "monthForDateTime", "weekday", "weekdayForDateTime", "maybeMacro", "era", "eraForDateTime", "dur", "tokenToField", "lildur", "mapped", "tokens", "realTokens", "found", "literal", "val", "collapsed", "t", "ianaRegex", "combineRegexes", "regexes", "full", "f", "r", "combineExtractors", "extractors", "m", "mergedVals", "mergedZone", "cursor", "ex", "val", "zone", "next", "parse", "s", "patterns", "regex", "extractor", "simpleParse", "keys", "match", "ret", "parseInteger", "offsetRegex", "isoExtendedZone", "isoTimeBaseRegex", "isoTimeRegex", "isoTimeExtensionRegex", "isoYmdRegex", "isoWeekRegex", "isoOrdinalRegex", "extractISOWeekData", "extractISOOrdinalData", "sqlYmdRegex", "sqlTimeRegex", "sqlTimeExtensionRegex", "int", "pos", "fallback", "isUndefined", "extractISOYmd", "extractISOTime", "parseMillis", "extractISOOffset", "local", "fullOffset", "signedOffset", "FixedOffsetZone", "extractIANAZone", "IANAZone", "isoTimeOnly", "isoDuration", "extractISODuration", "yearStr", "monthStr", "weekStr", "dayStr", "hourStr", "minuteStr", "secondStr", "millisecondsStr", "hasNegativePrefix", "negativeSeconds", "maybeNegate", "num", "force", "parseFloating", "obsOffsets", "fromStrings", "weekdayStr", "result", "untruncateYear", "monthsShort", "weekdaysLong", "weekdaysShort", "rfc2822", "extractRFC2822", "obsOffset", "milOffset", "offHourStr", "offMinuteStr", "offset", "preprocessRFC2822", "rfc1123", "rfc850", "ascii", "extractRFC1123Or850", "extractASCII", "isoYmdWithTimeExtensionRegex", "isoWeekWithTimeExtensionRegex", "isoOrdinalWithTimeExtensionRegex", "isoTimeCombinedRegex", "extractISOYmdTimeAndOffset", "extractISOWeekTimeAndOffset", "extractISOOrdinalDateAndTime", "extractISOTimeAndOffset", "parseISODate", "parseRFC2822Date", "parseHTTPDate", "parseISODuration", "extractISOTimeOnly", "parseISOTimeOnly", "sqlYmdWithTimeExtensionRegex", "sqlTimeCombinedRegex", "extractISOTimeOffsetAndIANAZone", "parseSQL", "INVALID", "lowOrderMatrix", "casualMatrix", "daysInYearAccurate", "daysInMonthAccurate", "accurateMatrix", "orderedUnits", "reverseUnits", "clone", "dur", "alts", "clear", "conf", "Duration", "durationToMillis", "matrix", "vals", "sum", "unit", "normalizeValues", "factor", "previous", "current", "isUndefined", "previousVal", "conv", "rollUp", "fraction", "removeZeroes", "newVals", "key", "value", "_Duration", "config", "accurate", "Locale", "count", "opts", "obj", "InvalidArgumentError", "normalizeObject", "durationLike", "isNumber", "text", "parsed", "parseISODuration", "parseISOTimeOnly", "reason", "explanation", "invalid", "Invalid", "Settings", "InvalidDurationError", "normalized", "InvalidUnitError", "o", "fmt", "fmtOpts", "Formatter", "l", "val", "s", "roundTo", "millis", "DateTime", "duration", "result", "k", "hasOwnProperty", "fn", "asNumber", "values", "mixed", "locale", "numberingSystem", "conversionAccuracy", "units", "u", "built", "accumulated", "lastUnit", "own", "ak", "i", "negated", "other", "eq", "v1", "v2", "INVALID", "validateStartEnd", "start", "end", "Interval", "_Interval", "config", "reason", "explanation", "InvalidArgumentError", "invalid", "Invalid", "Settings", "InvalidIntervalError", "builtStart", "friendlyDateTime", "builtEnd", "validateError", "duration", "dur", "Duration", "dt", "text", "opts", "s", "e", "startIsValid", "DateTime", "endIsValid", "o", "unit", "dateTime", "dateTimes", "sorted", "d", "a", "b", "results", "i", "added", "next", "idx", "x", "numberOfParts", "other", "intervals", "found", "final", "sofar", "current", "item", "currentCount", "ends", "flattened", "arr", "formatOpts", "DATE_SHORT", "Formatter", "dateFormat", "separator", "mapFn", "Info", "zone", "Settings", "proto", "DateTime", "IANAZone", "input", "normalizeZone", "locale", "locObj", "Locale", "length", "numberingSystem", "outputCalendar", "hasRelative", "hasLocaleWeekInfo", "dayDiff", "earlier", "later", "utcDayStart", "dt", "ms", "Duration", "highOrderDiffs", "cursor", "units", "differs", "b", "days", "results", "lowestOrder", "highWater", "unit", "differ", "diff_default", "opts", "remainingMillis", "lowerOrderUnits", "u", "duration", "MISSING_FTP", "intUnit", "regex", "post", "i", "s", "parseDigits", "NBSP", "spaceOrNBSP", "spaceOrNBSPRegExp", "fixListRegex", "stripInsensitivities", "oneOf", "strings", "startIndex", "offset", "groups", "h", "m", "signedOffset", "simple", "escapeToken", "value", "unitForToken", "token", "loc", "one", "digitRegex", "two", "three", "four", "six", "oneOrTwo", "oneToThree", "oneToSix", "oneToNine", "twoToFour", "fourToSix", "literal", "t", "unit", "untruncateYear", "partTypeStyleToTokenVal", "tokenForPart", "part", "formatOpts", "resolvedOpts", "type", "isSpace", "style", "actualType", "val", "buildRegex", "units", "u", "f", "r", "match", "input", "handlers", "matches", "all", "matchIndex", "hasOwnProperty", "dateTimeFromMatches", "toField", "zone", "specificOffset", "isUndefined", "IANAZone", "FixedOffsetZone", "parseMillis", "k", "dummyDateTimeCache", "getDummyDateTime", "DateTime", "maybeExpandMacroToken", "locale", "Formatter", "tokens", "formatOptsToTokens", "expandMacroTokens", "TokenParser", "format", "regexString", "rawMatches", "result", "ConflictingSpecificationError", "explainFromTokens", "parseFromTokens", "invalidReason", "df", "parts", "p", "INVALID", "MAX_DATE", "unsupportedZone", "zone", "Invalid", "possiblyCachedWeekData", "dt", "gregorianToWeek", "possiblyCachedLocalWeekData", "clone", "inst", "alts", "current", "DateTime", "fixOffset", "localTS", "o", "tz", "utcGuess", "o2", "o3", "tsToObj", "ts", "offset", "d", "objToTS", "obj", "objToLocalTS", "adjustTime", "dur", "oPre", "year", "month", "c", "daysInMonth", "millisToAdd", "Duration", "parseDataToDateTime", "parsed", "parsedZone", "opts", "format", "text", "specificOffset", "setZone", "interpretationZone", "toTechFormat", "allowZ", "Formatter", "Locale", "toISODate", "extended", "longFormat", "padStart", "toISOTime", "suppressSeconds", "suppressMilliseconds", "includeOffset", "extendedZone", "defaultUnitValues", "defaultWeekUnitValues", "defaultOrdinalUnitValues", "orderedUnits", "orderedWeekUnits", "orderedOrdinalUnits", "normalizeUnit", "unit", "normalized", "InvalidUnitError", "normalizeUnitWithLocalWeeks", "guessOffsetForZone", "zoneOffsetGuessCache", "zoneOffsetTs", "Settings", "quickDT", "normalizeZone", "loc", "isUndefined", "u", "invalid", "hasInvalidGregorianData", "hasInvalidTimeData", "offsetProvis", "diffRelative", "start", "end", "round", "roundTo", "differ", "count", "lastOpts", "argList", "args", "_DateTime", "config", "ot", "isNumber", "day", "hour", "minute", "second", "millisecond", "FixedOffsetZone", "date", "options", "isDate", "zoneToUse", "milliseconds", "InvalidArgumentError", "seconds", "normalizeObject", "minDaysInFirstWeek", "startOfWeek", "usesLocalWeekValues", "tsNow", "containsOrdinal", "containsGregorYear", "containsGregorMD", "containsGregor", "definiteWeekDef", "ConflictingSpecificationError", "useWeekData", "units", "defaultValues", "objNow", "gregorianToOrdinal", "foundFirst", "v", "higherOrderInvalid", "hasInvalidWeekData", "hasInvalidOrdinalData", "gregorian", "weekToGregorian", "ordinalToGregorian", "tsFinal", "offsetFinal", "vals", "parseISODate", "parseRFC2822Date", "parseHTTPDate", "fmt", "locale", "numberingSystem", "localeToUse", "parseFromTokens", "parseSQL", "reason", "explanation", "InvalidDateTimeError", "formatOpts", "localeOpts", "tokenList", "formatOptsToTokens", "t", "expandMacroTokens", "Info", "dayMs", "minuteMs", "oEarlier", "oLater", "o1", "ts1", "ts2", "c1", "c2", "isLeapYear", "daysInYear", "weeksInWeekYear", "calendar", "keepLocalTime", "keepCalendarTime", "newTS", "offsetGuess", "asObj", "outputCalendar", "values", "settingWeekStuff", "mixed", "duration", "useLocaleWeeks", "normalizedUnit", "weekday", "q", "DATE_SHORT", "ext", "includePrefix", "includeZone", "includeOffsetSpace", "base", "otherDateTime", "durOpts", "maybeArray", "otherIsLater", "earlier", "later", "diffed", "diff_default", "Interval", "inputMs", "adjustedToZone", "other", "padding", "dateTimes", "bestBy", "i", "explainFromTokens", "TokenParser", "formatParser", "result", "invalidReason", "DATE_MED", "DATE_MED_WITH_WEEKDAY", "DATE_FULL", "DATE_HUGE", "TIME_SIMPLE", "TIME_WITH_SECONDS", "TIME_WITH_SHORT_OFFSET", "TIME_WITH_LONG_OFFSET", "TIME_24_SIMPLE", "TIME_24_WITH_SECONDS", "TIME_24_WITH_SHORT_OFFSET", "TIME_24_WITH_LONG_OFFSET", "DATETIME_SHORT", "DATETIME_SHORT_WITH_SECONDS", "DATETIME_MED", "DATETIME_MED_WITH_SECONDS", "DATETIME_MED_WITH_WEEKDAY", "DATETIME_FULL", "DATETIME_FULL_WITH_SECONDS", "DATETIME_HUGE", "DATETIME_HUGE_WITH_SECONDS", "friendlyDateTime", "dateTimeish", "_extends", "n", "e", "t", "r", "DEFAULT_CONFIG", "getSafeProperty", "object", "prop", "isSafeProperty", "isSafeMethod", "setSafeProperty", "value", "isPlainObject", "hasOwnProperty", "safeNativeProperties", "getSafeMethod", "method", "safeNativeMethods", "ObjectWrappingMap", "object", "key", "getSafeProperty", "value", "setSafeProperty", "isSafeProperty", "mapIterator", "callback", "PartitionedMap", "a", "b", "bKeys", "it", "n", "createEmptyMap", "createMap", "mapOrObject", "isMap", "isObject", "toObject", "map", "isNumber", "x", "isBigNumber", "isBigInt", "isComplex", "isFraction", "isUnit", "isString", "isArray", "isMatrix", "isCollection", "isDenseMatrix", "isSparseMatrix", "isRange", "isIndex", "isBoolean", "isResultSet", "isHelp", "isFunction", "isDate", "isRegExp", "isObject", "isMap", "object", "ObjectWrappingMap", "isPartitionedMap", "isObjectWrappingMap", "isNull", "isUndefined", "isAccessorNode", "isArrayNode", "isAssignmentNode", "isBlockNode", "isConditionalNode", "isConstantNode", "rule2Node", "node", "isOperatorNode", "isFunctionAssignmentNode", "isFunctionNode", "isIndexNode", "isNode", "isObjectNode", "isParenthesisNode", "isRangeNode", "isRelationalNode", "isSymbolNode", "isChain", "typeOf", "clone", "x", "type", "value", "isBigNumber", "isObject", "mapObject", "object", "callback", "key", "hasOwnProperty", "extend", "a", "b", "prop", "deepExtend", "deepStrictEqual", "i", "len", "deepFlatten", "nestedObject", "flattenedObject", "_deepFlatten", "lazy", "object", "prop", "valueResolver", "_uninitialized", "_value", "value", "hasOwnProperty", "object", "property", "isLegacyFactory", "pickShallow", "object", "properties", "copy", "i", "key", "value", "MATRIX_OPTIONS", "NUMBER_OPTIONS", "configFactory", "config", "emit", "_config", "options", "optionsFix", "clone", "prev", "validateOption", "deepExtend", "curr", "changes", "DEFAULT_CONFIG", "key", "name", "values", "value", "factoriesAny_exports", "__export", "createAbs", "createAccessorNode", "createAcos", "createAcosh", "createAcot", "createAcoth", "createAcsc", "createAcsch", "createAdd", "createAddScalar", "createAnd", "createAndTransform", "createApply", "createApplyTransform", "createArg", "createArrayNode", "createAsec", "createAsech", "createAsin", "createAsinh", "createAssignmentNode", "createAtan", "createAtan2", "createAtanh", "createAtomicMass", "createAvogadro", "createBellNumbers", "createBigNumberClass", "createBigint", "createBignumber", "createBin", "createBitAnd", "createBitAndTransform", "createBitNot", "createBitOr", "createBitOrTransform", "createBitXor", "createBlockNode", "createBohrMagneton", "createBohrRadius", "createBoltzmann", "createBoolean", "createCatalan", "createCbrt", "createCeil", "createChain", "createChainClass", "createClassicalElectronRadius", "createClone", "createColumn", "createColumnTransform", "createCombinations", "createCombinationsWithRep", "createCompare", "createCompareNatural", "createCompareText", "createCompile", "createComplex", "createComplexClass", "createComposition", "createConcat", "createConcatTransform", "createConditionalNode", "createConductanceQuantum", "createConj", "createConstantNode", "createCorr", "createCos", "createCosh", "createCot", "createCoth", "createCoulomb", "createCount", "createCreateUnit", "createCross", "createCsc", "createCsch", "createCtranspose", "createCube", "createCumSum", "createCumSumTransform", "createDeepEqual", "createDenseMatrixClass", "createDerivative", "createDet", "createDeuteronMass", "createDiag", "createDiff", "createDiffTransform", "createDistance", "createDivide", "createDivideScalar", "createDot", "createDotDivide", "createDotMultiply", "createDotPow", "createE", "createEfimovFactor", "createEigs", "createElectricConstant", "createElectronMass", "createElementaryCharge", "createEqual", "createEqualScalar", "createEqualText", "createErf", "createEvaluate", "createExp", "createExpm", "createExpm1", "createFactorial", "createFalse", "createFaraday", "createFermiCoupling", "createFft", "createFibonacciHeapClass", "createFilter", "createFilterTransform", "createFineStructure", "createFirstRadiation", "createFix", "createFlatten", "createFloor", "createForEach", "createForEachTransform", "createFormat", "createFraction", "createFractionClass", "createFreqz", "createFunctionAssignmentNode", "createFunctionNode", "createGamma", "createGasConstant", "createGcd", "createGetMatrixDataType", "createGravitationConstant", "createGravity", "createHartreeEnergy", "createHasNumericValue", "createHelp", "createHelpClass", "createHex", "createHypot", "createI", "createIdentity", "createIfft", "createIm", "createImmutableDenseMatrixClass", "createIndex", "createIndexClass", "createIndexNode", "createIndexTransform", "createInfinity", "createIntersect", "createInv", "createInverseConductanceQuantum", "createInvmod", "createIsInteger", "createIsNaN", "createIsNegative", "createIsNumeric", "createIsPositive", "createIsPrime", "createIsZero", "createKldivergence", "createKlitzing", "createKron", "createLN10", "createLN2", "createLOG10E", "createLOG2E", "createLarger", "createLargerEq", "createLcm", "createLeafCount", "createLeftShift", "createLgamma", "createLog", "createLog10", "createLog1p", "createLog2", "createLoschmidt", "createLsolve", "createLsolveAll", "createLup", "createLusolve", "createLyap", "createMad", "createMagneticConstant", "createMagneticFluxQuantum", "createMap", "createMapTransform", "createMatrix", "createMatrixClass", "createMatrixFromColumns", "createMatrixFromFunction", "createMatrixFromRows", "createMax", "createMaxTransform", "createMean", "createMeanTransform", "createMedian", "createMin", "createMinTransform", "createMod", "createMode", "createMolarMass", "createMolarMassC12", "createMolarPlanckConstant", "createMolarVolume", "createMultinomial", "createMultiply", "createMultiplyScalar", "createNaN", "createNeutronMass", "createNode", "createNorm", "createNot", "createNthRoot", "createNthRoots", "createNuclearMagneton", "createNull", "createNumber", "createNumeric", "createObjectNode", "createOct", "createOnes", "createOperatorNode", "createOr", "createOrTransform", "createParenthesisNode", "createParse", "createParser", "createParserClass", "createPartitionSelect", "createPermutations", "createPhi", "createPi", "createPickRandom", "createPinv", "createPlanckCharge", "createPlanckConstant", "createPlanckLength", "createPlanckMass", "createPlanckTemperature", "createPlanckTime", "createPolynomialRoot", "createPow", "createPrint", "createPrintTransform", "createProd", "createProtonMass", "createQr", "createQuantileSeq", "createQuantileSeqTransform", "createQuantumOfCirculation", "createRandom", "createRandomInt", "createRange", "createRangeClass", "createRangeNode", "createRangeTransform", "createRationalize", "createRe", "createReducedPlanckConstant", "createRelationalNode", "createReplacer", "createReshape", "createResize", "createResolve", "createResultSet", "createReviver", "createRightArithShift", "createRightLogShift", "createRotate", "createRotationMatrix", "createRound", "createRow", "createRowTransform", "createRydberg", "createSQRT1_2", "createSQRT2", "createSackurTetrode", "createSchur", "createSec", "createSech", "createSecondRadiation", "createSetCartesian", "createSetDifference", "createSetDistinct", "createSetIntersect", "createSetIsSubset", "createSetMultiplicity", "createSetPowerset", "createSetSize", "createSetSymDifference", "createSetUnion", "createSign", "createSimplify", "createSimplifyConstant", "createSimplifyCore", "createSin", "createSinh", "createSize", "createSlu", "createSmaller", "createSmallerEq", "createSolveODE", "createSort", "createSpaClass", "createSparse", "createSparseMatrixClass", "createSpeedOfLight", "createSplitUnit", "createSqrt", "createSqrtm", "createSquare", "createSqueeze", "createStd", "createStdTransform", "createStefanBoltzmann", "createStirlingS2", "createString", "createSubset", "createSubsetTransform", "createSubtract", "createSubtractScalar", "createSum", "createSumTransform", "createSylvester", "createSymbolNode", "createSymbolicEqual", "createTan", "createTanh", "createTau", "createThomsonCrossSection", "createTo", "createTrace", "createTranspose", "createTrue", "createTypeOf", "createTyped", "createUnaryMinus", "createUnaryPlus", "createUnequal", "createUnitClass", "createUnitFunction", "createUppercaseE", "createUppercasePi", "createUsolve", "createUsolveAll", "createVacuumImpedance", "createVariance", "createVarianceTransform", "createVersion", "createWeakMixingAngle", "createWienDisplacement", "createXgcd", "createXor", "createZeros", "createZeta", "createZpk2tf", "import_typed_function", "factory", "name", "dependencies", "create", "meta", "assertAndCreate", "scope", "deps", "pickShallow", "stripOptionalNotation", "assertDependencies", "isFactory", "obj", "assertDependencies", "name", "dependencies", "scope", "allDefined", "dependency", "isOptionalDependency", "missingDependencies", "d", "stripOptionalNotation", "isInteger", "value", "isIntegerStr", "str", "safeNumberType", "numberStr", "config", "sign", "x", "log2", "log10", "log1p", "cbrt", "negate", "result", "expm1", "formatNumberToBase", "n", "base", "size", "prefixes", "prefix", "suffix", "format", "options", "notation", "precision", "wordSize", "normalizeFormatOptions", "toFixed", "toExponential", "toEngineering", "toPrecision", "digits", "e", "isNumber", "isBigNumber", "isObject", "_toNumberOrThrow", "splitNumber", "match", "exponent", "dot", "coefficients", "zeros", "d", "split", "rounded", "roundDigits", "c", "newExp", "missingZeros", "i", "expDiff", "decimalIdx", "decimals", "decimalVal", "splitValue", "p", "pp", "first", "lowerExp", "_toNumberOrDefault", "upperExp", "removed", "length", "arr", "DBL_EPSILON", "nearlyEqual", "a", "b", "relTol", "absTol", "acosh", "asinh", "atanh", "cosh", "sinh", "tanh", "copysign", "y", "signx", "signy", "onError", "defaultValue", "_createTyped2", "typedFunction", "dependencies", "createTyped", "factory", "_ref", "BigNumber", "Complex", "DenseMatrix", "Fraction", "typed", "isNumber", "isComplex", "isBigNumber", "isBigInt", "isFraction", "isUnit", "isString", "isChain", "isArray", "isMatrix", "isDenseMatrix", "isSparseMatrix", "isRange", "isIndex", "isBoolean", "isResultSet", "isHelp", "isFunction", "isDate", "isRegExp", "isNull", "isUndefined", "isAccessorNode", "isArrayNode", "isAssignmentNode", "isBlockNode", "isConditionalNode", "isConstantNode", "isFunctionNode", "isFunctionAssignmentNode", "isIndexNode", "isNode", "isObjectNode", "isOperatorNode", "isParenthesisNode", "isRangeNode", "isRelationalNode", "isSymbolNode", "isMap", "isObject", "x", "throwNoBignumber", "digits", "throwNoComplex", "throwNoFraction", "f", "n", "array", "throwNoMatrix", "matrix", "name", "args", "signatures", "usualError", "isCollection", "sig", "err", "name", "dependencies", "createResultSet", "factory", "ResultSet", "entries", "json", "EXP_LIMIT", "MAX_DIGITS", "NUMERALS", "LN10", "PI", "DEFAULTS", "inexact", "quadrant", "external", "decimalError", "invalidArgument", "precisionLimitExceeded", "cryptoUnavailable", "tag", "mathfloor", "mathpow", "isBinary", "isHex", "isOctal", "isDecimal", "BASE", "LOG_BASE", "MAX_SAFE_INTEGER", "LN10_PRECISION", "PI_PRECISION", "P", "x", "finalise", "min", "max", "k", "Ctor", "y", "i", "j", "xdL", "ydL", "xd", "yd", "xs", "ys", "pr", "rm", "cosine", "toLessThanHalfPi", "m", "n", "r", "rep", "s", "sd", "t", "t3", "t3plusx", "digitsToString", "divide", "w", "d", "len", "one", "tinyPow", "taylorSeries", "cosh2_x", "d8", "sinh2_x", "d5", "d16", "d20", "halfPi", "getPi", "wpr", "xsd", "px", "x2", "base", "isBase10", "denominator", "inf", "num", "arg", "guard", "naturalLogarithm", "getLn10", "checkRoundingDigits", "e", "xe", "xLTy", "getBase10Exponent", "q", "naturalExponential", "carry", "z", "getPrecision", "sine", "rL", "toStringBinary", "dp", "checkInt32", "str", "finiteToString", "maxD", "d0", "d1", "d2", "n0", "n1", "yn", "intPow", "ws", "indexOfLastWord", "getZeroString", "repeating", "di", "rd", "convertBase", "baseIn", "baseOut", "arr", "arrL", "strL", "cos2x", "multiplyInteger", "temp", "compare", "a", "b", "aL", "bL", "subtract", "cmp", "logBase", "more", "prod", "prodL", "qd", "rem", "remL", "rem0", "xi", "xL", "yd0", "yL", "yz", "sign", "isTruncated", "digits", "roundUp", "xdi", "out", "isExp", "nonFiniteToString", "zs", "truncate", "isOdd", "maxOrMin", "args", "ltgt", "pow", "sum", "c", "c0", "numerator", "x1", "parseDecimal", "parseOther", "divisor", "isFloat", "p", "Decimal", "sin2_x", "isHyperbolic", "u", "isNeg", "pi", "abs", "acos", "acosh", "add", "asin", "asinh", "atan", "atanh", "atan2", "cbrt", "ceil", "clamp", "config", "obj", "v", "useDefaults", "ps", "cos", "cosh", "clone", "isDecimalInstance", "div", "exp", "floor", "hypot", "ln", "log", "log10", "log2", "mod", "mul", "random", "round", "sin", "sinh", "sqrt", "sub", "tan", "tanh", "trunc", "decimal_default", "name", "dependencies", "createBigNumberClass", "factory", "_ref", "on", "config", "BigNumber", "decimal_default", "json", "curr", "prev", "cosh", "x", "sinh", "cosm1", "b", "xx", "hypot", "y", "parser_exit", "logHypot", "a", "_a", "_b", "P", "parse", "z", "Complex", "tokens", "plus", "minus", "i", "c", "abs", "tInfin", "zInfin", "tIsZero", "zIsZero", "t", "arg", "loh", "re", "im", "er", "d", "t1", "t2", "tmp", "res", "noIM", "oneMinus", "onePlus", "temp", "places", "ret", "name", "dependencies", "createComplexClass", "factory", "Complex", "options", "str", "im", "re", "strRe", "format", "strIm", "precision", "isNumber", "epsilon", "args", "arg", "phi", "isUnit", "json", "a", "b", "n", "C_ZERO", "C_ONE", "C_TWO", "C_FIVE", "C_TEN", "MAX_CYCLE_LEN", "P", "assign", "s", "InvalidParameter", "trunc", "x", "newFraction", "d", "DivisionByZero", "f", "Fraction", "a", "gcd", "factorize", "num", "factors", "i", "parse", "p1", "p2", "NonIntegerParameter", "z", "A", "B", "C", "D", "N", "M", "ndx", "v", "w", "y", "match", "modpow", "b", "e", "m", "r", "cycleLen", "rem", "t", "cycleStart", "len", "rem1", "rem2", "k", "allPrimes", "baseFactors", "T1", "numberFactors", "T2", "prime", "retN", "retD", "baseExponent", "numberExponent", "curN", "curD", "gcdValue", "places", "dec", "cycLen", "cycOff", "str", "showMixed", "whole", "res", "eps", "ieps", "thisABS", "cont", "name", "dependencies", "createFractionClass", "factory", "Fraction", "json", "name", "dependencies", "createRangeClass", "factory", "Range", "start", "end", "step", "hasStart", "hasEnd", "hasStep", "isBigNumber", "str", "args", "nums", "arg", "invalid", "num", "len", "diff", "sign", "size", "callback", "x", "i", "array", "value", "index", "obj", "options", "format", "json", "name", "dependencies", "createMatrixClass", "factory", "Matrix", "data", "datatype", "index", "replacement", "defaultValue", "value", "size", "callback", "skipZeros", "options", "formatBigNumberToBase", "n", "base", "size", "BigNumberCtor", "big2", "suffix", "isInteger", "format", "value", "options", "notation", "precision", "wordSize", "normalizeFormatOptions", "toFixed", "toExponential", "toEngineering", "lowerExp", "_toNumberOrDefault", "upperExp", "str", "rounded", "exp", "digits", "e", "newExp", "valueWithoutExp", "valueStr", "BigNumber", "defaultValue", "isNumber", "isBigNumber", "endsWith", "text", "search", "start", "end", "format", "value", "options", "result", "_format", "isBigNumber", "looksLikeFraction", "formatArray", "isString", "stringify", "entries", "key", "escaped", "i", "c", "controlCharacters", "escape", "array", "str", "len", "compareText", "x", "y", "typeOf", "DimensionError", "actual", "expected", "relation", "IndexError", "index", "min", "max", "arraySize", "x", "s", "_validate", "array", "size", "dim", "i", "len", "DimensionError", "dimNext", "child", "validate", "isScalar", "validateIndexSourceSize", "value", "index", "valueSize", "sourceSize", "sourceDim", "validateIndex", "length", "isNumber", "isInteger", "IndexError", "isEmptyIndex", "dimension", "isArray", "isString", "resize", "defaultValue", "format", "isBigNumber", "_defaultValue", "_resize", "elem", "oldLen", "newLen", "minLen", "reshape", "sizes", "flatArray", "flatten", "currentLength", "processSizesWildcard", "newLength", "product", "_reshape", "e", "processedSizes", "WILDCARD", "wildCardIndex", "isMoreThanOneWildcard", "hasWildcard", "canReplaceWildcard", "prev", "curr", "tmpArray", "tmpArray2", "sizeIndex", "squeeze", "dims", "_squeeze", "ii", "next", "unsqueeze", "outer", "_unsqueeze", "d", "flat", "callback", "map", "forEach", "filter", "filterRegExp", "regexp", "entry", "join", "separator", "identify", "a", "b", "count", "generalize", "getArrayDataType", "typeOf", "type", "item", "_isArray", "itemType", "concatRecursive", "a", "b", "concatDim", "dim", "DimensionError", "c", "i", "concat", "arrays", "A", "B", "broadcastSizes", "_len", "sizes", "_key", "dimensions", "s", "N", "sizeMax", "size", "j", "n", "_i", "checkBroadcastingRules", "toSize", "broadcastTo", "array", "Asize", "arraySize", "deepStrictEqual", "broadcastedSize", "paddedSize", "clone", "reshape", "stretch", "stretch", "arrayToStretch", "sizeToStretch", "dimToStretch", "concat", "get", "array", "index", "size", "arraySize", "DimensionError", "x", "validateIndex", "acc", "curr", "recurse", "value", "callback", "child", "i", "clone", "_extends", "import_typed_function", "optimizeCallback", "callback", "array", "name", "typed", "firstIndex", "arraySize", "firstValue", "get", "hasSingleSignature", "numberOfArguments", "_findNumberOfArguments", "fastCallback", "_len", "args", "_key", "_tryFunctionWithArgs", "_len2", "_key2", "value", "index", "testArgs", "i", "func", "mappingFnName", "callbackName", "err", "_createCallbackError", "_err$data", "argsDesc", "typeOf", "name", "dependencies", "createDenseMatrixClass", "factory", "_ref", "Matrix", "DenseMatrix", "data", "datatype", "isString", "isMatrix", "clone", "isArray", "validate", "preprocess", "arraySize", "typeOf", "getArrayDataType", "index", "replacement", "defaultValue", "_get", "_set", "get", "value", "DimensionError", "i", "ii", "indexI", "size", "_fit", "validateIndex", "matrix", "isIndex", "isScalar", "min", "max", "_getSubmatrix", "dims", "dim", "last", "range", "child", "submatrix", "iSize", "sSize", "deepStrictEqual", "broadcastTo", "outer", "unsqueeze", "_setSubmatrix", "dataIndex", "subIndex", "copy", "isCollection", "sizeArray", "m", "_resize", "v", "resize", "reshape", "currentLength", "length", "processSizesWildcard", "newSize", "changed", "callback", "me", "s", "_i", "_i2", "j", "_j", "result", "fastCallback", "optimizeCallback", "arr", "_recurse", "row", "_this", "_loop", "col", "options", "format", "k", "isBigNumber", "isNumber", "isInteger", "kSuper", "kSub", "rows", "columns", "n", "_value", "ms", "d", "json", "vi", "name", "dependencies", "createClone", "factory", "_ref", "typed", "clone", "_switch", "mat", "I", "J", "i", "j", "ret", "tmp", "containsCollections", "array", "i", "isCollection", "deepForEach", "callback", "isMatrix", "ii", "value", "deepMap", "skipZeros", "x", "reduce", "mat", "dim", "size", "arraySize", "IndexError", "_reduce", "ret", "val", "tran", "_switch", "scatter", "a", "j", "w", "u", "mark", "cindex", "f", "inverse", "update", "avalues", "aindex", "aptr", "k", "k0", "k1", "name", "dependencies", "createIsInteger", "factory", "_ref", "typed", "isInteger", "x", "self", "deepMap", "n1", "n2", "absNumber", "a", "addNumber", "b", "subtractNumber", "multiplyNumber", "divideNumber", "unaryMinusNumber", "x", "unaryPlusNumber", "cbrtNumber", "cbrt", "cubeNumber", "expNumber", "expm1Number", "expm1", "gcdNumber", "isInteger", "lcmNumber", "t", "prod", "logNumber", "y", "log10Number", "log10", "log2Number", "log2", "log1pNumber", "log1p", "modNumber", "nthRootNumber", "root", "inv", "signNumber", "sign", "sqrtNumber", "squareNumber", "xgcdNumber", "q", "r", "lastx", "lasty", "res", "powNumber", "roundNumber", "value", "decimals", "toFixed", "normNumber", "n1", "n2", "bitAndNumber", "x", "y", "isInteger", "bitNotNumber", "bitOrNumber", "bitXorNumber", "leftShiftNumber", "rightArithShiftNumber", "rightLogShiftNumber", "product", "i", "n", "half", "combinationsNumber", "n", "k", "isInteger", "nMinusk", "answer", "firstnumerator", "nextdivisor", "lastdivisor", "nextnumerator", "product", "pi", "tau", "e", "phi", "n1", "n2", "notNumber", "x", "orNumber", "y", "xorNumber", "andNumber", "gammaNumber", "n", "x", "isInteger", "product", "twoN", "threeN", "fourN", "fiveN", "gammaP", "i", "t", "gammaG", "lnSqrt2PI", "lgammaG", "lgammaN", "lgammaSeries", "lgammaNumber", "base", "sum", "n1", "n2", "acosNumber", "x", "acoshNumber", "acosh", "acotNumber", "acothNumber", "acscNumber", "acschNumber", "xInv", "asecNumber", "asechNumber", "ret", "asinNumber", "asinhNumber", "asinh", "atanNumber", "atan2Number", "y", "atanhNumber", "atanh", "cosNumber", "coshNumber", "cosh", "cotNumber", "cothNumber", "e", "cscNumber", "cschNumber", "sign", "secNumber", "sechNumber", "sinNumber", "sinhNumber", "sinh", "tanNumber", "tanhNumber", "tanh", "n1", "isIntegerNumber", "x", "isInteger", "isNegativeNumber", "isPositiveNumber", "isZeroNumber", "isNaNNumber", "nearlyEqual", "a", "b", "relTol", "absTol", "name", "dependencies", "createIsNegative", "factory", "_ref", "typed", "config", "x", "nearlyEqual", "isNegativeNumber", "self", "deepMap", "name", "dependencies", "createIsNumeric", "factory", "_ref", "typed", "self", "x", "deepMap", "name", "dependencies", "createHasNumericValue", "factory", "_ref", "typed", "isNumeric", "x", "name", "dependencies", "createIsPositive", "factory", "_ref", "typed", "config", "x", "nearlyEqual", "isPositiveNumber", "self", "deepMap", "name", "dependencies", "createIsZero", "factory", "_ref", "typed", "equalScalar", "x", "self", "deepMap", "name", "dependencies", "createIsNaN", "factory", "_ref", "typed", "isNaNNumber", "x", "self", "deepMap", "name", "dependencies", "createTypeOf", "factory", "_ref", "typed", "typeOf", "complexEquals", "x", "y", "relTol", "absTol", "nearlyEqual", "createCompareUnits", "factory", "_ref", "typed", "self", "x", "y", "name", "dependencies", "createEqualScalar", "factory", "_ref", "typed", "config", "compareUnits", "createCompareUnits", "x", "y", "nearlyEqual", "complexEquals", "createEqualScalarNumber", "_ref2", "name", "dependencies", "createSparseMatrixClass", "factory", "_ref", "typed", "equalScalar", "Matrix", "SparseMatrix", "data", "datatype", "isString", "isMatrix", "_createFromMatrix", "isArray", "_createFromArray", "typeOf", "matrix", "source", "clone", "rows", "columns", "eq", "zero", "j", "i", "row", "v", "getArrayDataType", "index", "replacement", "defaultValue", "_getsubset", "_setsubset", "idx", "isIndex", "isScalar", "size", "DimensionError", "ii", "k", "kk", "min", "max", "validateIndex", "mvalues", "mindex", "mptr", "w", "pv", "r", "values", "ptr", "submatrix", "iSize", "sSize", "arraySize", "outer", "unsqueeze", "deepStrictEqual", "range", "dataIndex", "subIndex", "firstDimensionRange", "secondDimensionRange", "firstDataIndex", "firstSubIndex", "secondDataIndex", "secondSubIndex", "_getValueIndex", "_resize", "_remove", "_insert", "top", "bottom", "x", "copy", "isCollection", "sizeArray", "value", "isNumber", "isInteger", "format", "m", "ins", "c", "n", "p", "d", "k0", "k1", "sizes", "currentLength", "processSizesWildcard", "newLength", "colIndex", "rowIndex", "_i", "r1", "c1", "flat", "_i2", "h", "_i3", "_j", "callback", "skipZeros", "me", "fastCallback", "optimizeCallback", "invoke", "_map", "minRow", "maxRow", "minColumn", "maxColumn", "y", "_values", "_k", "_i4", "_i5", "_k2", "_i6", "_i7", "_toArray", "a", "options", "density", "str", "isBigNumber", "kSuper", "kSub", "json", "s", "_value", "ms", "kx", "ky", "vx", "vy", "name", "dependencies", "getNonDecimalNumberParts", "input", "nonDecimalWithRadixMatch", "radix", "integerPart", "fractionalPart", "makeNumberFromNonDecimalParts", "parts", "n", "f", "i", "digitValue", "result", "createNumber", "factory", "_ref", "typed", "number", "x", "nonDecimalNumberParts", "size", "wordSizeSuffixMatch", "num", "self", "clone", "unit", "valuelessUnit", "deepMap", "json", "name", "dependencies", "createBigint", "factory", "_ref", "typed", "bigint", "x", "self", "deepMap", "json", "name", "dependencies", "createString", "factory", "_ref", "typed", "format", "x", "self", "deepMap", "name", "dependencies", "createBoolean", "factory", "_ref", "typed", "x", "lcase", "num", "self", "deepMap", "name", "dependencies", "createBignumber", "factory", "_ref", "typed", "BigNumber", "x", "wordSizeSuffixMatch", "size", "n", "twoPowSize", "twoPowSizeSubOne", "self", "clone", "_x", "deepMap", "name", "dependencies", "createComplex", "factory", "_ref", "typed", "Complex", "x", "re", "im", "self", "deepMap", "name", "dependencies", "createFraction", "factory", "_ref", "typed", "Fraction", "x", "numerator", "denominator", "self", "clone", "deepMap", "name", "dependencies", "createMatrix", "factory", "_ref", "typed", "Matrix", "DenseMatrix", "SparseMatrix", "_create", "format", "datatype", "data", "name", "dependencies", "createMatrixFromFunction", "factory", "_ref", "typed", "matrix", "isZero", "size", "fn", "format", "datatype", "_create", "m", "_", "index", "val", "name", "dependencies", "createMatrixFromRows", "factory", "_ref", "typed", "matrix", "flatten", "size", "arr", "_createArray", "m", "N", "checkVectorTypeAndReturnLength", "result", "row", "rowLength", "vec", "s", "name", "dependencies", "createMatrixFromColumns", "factory", "_ref", "typed", "matrix", "flatten", "size", "arr", "_createArray", "m", "N", "checkVectorTypeAndReturnLength", "result", "i", "col", "colLength", "f", "_i", "vec", "s", "name", "dependencies", "createSplitUnit", "factory", "_ref", "typed", "unit", "parts", "name", "dependencies", "createUnaryMinus", "factory", "_ref", "typed", "unaryMinusNumber", "x", "self", "res", "deepMap", "name", "dependencies", "createUnaryPlus", "factory", "_ref", "typed", "config", "numeric", "unaryPlusNumber", "x", "self", "deepMap", "safeNumberType", "name", "dependencies", "createAbs", "factory", "_ref", "typed", "absNumber", "x", "self", "deepMap", "name", "dependencies", "createApply", "factory", "_ref", "typed", "isInteger", "mat", "dim", "callback", "size", "arraySize", "IndexError", "isMatrix", "_apply", "i", "ret", "tran", "_switch", "I", "J", "j", "tmp", "name", "dependencies", "createAddScalar", "factory", "_ref", "typed", "addNumber", "x", "y", "self", "res", "name", "dependencies", "createSubtractScalar", "factory", "_ref", "typed", "subtractNumber", "x", "y", "self", "res", "name", "dependencies", "createCbrt", "factory", "_ref", "config", "typed", "isNegative", "unaryMinus", "matrix", "Complex", "BigNumber", "Fraction", "cbrtNumber", "_cbrtComplex", "x", "_cbrtUnit", "allRoots", "arg3", "abs", "principal", "all", "isComplex", "result", "negate", "third", "isBigNumber", "isFraction", "_result", "name", "dependencies", "createMatAlgo11xS0s", "factory", "_ref", "typed", "equalScalar", "s", "b", "callback", "inverse", "avalues", "aindex", "aptr", "asize", "adt", "rows", "columns", "dt", "eq", "zero", "cf", "cvalues", "cindex", "cptr", "j", "k0", "k1", "k", "i", "v", "name", "dependencies", "createMatAlgo12xSfs", "factory", "_ref", "typed", "DenseMatrix", "s", "b", "callback", "inverse", "avalues", "aindex", "aptr", "asize", "adt", "rows", "columns", "dt", "cf", "cdata", "x", "w", "j", "mark", "k0", "k1", "k", "r", "i", "name", "dependencies", "createMatAlgo14xDs", "factory", "_ref", "typed", "a", "b", "callback", "inverse", "adata", "asize", "adt", "dt", "cf", "cdata", "_iterate", "clone", "f", "level", "s", "n", "av", "bv", "cv", "i", "j", "name", "dependencies", "createCeilNumber", "factory", "_ref", "typed", "config", "round", "x", "nearlyEqual", "n", "number", "exponent", "result", "createCeil", "_ref2", "matrix", "equalScalar", "zeros", "DenseMatrix", "matAlgo11xS0s", "createMatAlgo11xS0s", "matAlgo12xSfs", "createMatAlgo12xSfs", "matAlgo14xDs", "createMatAlgo14xDs", "ceilNumber", "decimal_default", "self", "unit", "valueless", "deepMap", "value", "i", "y", "name", "dependencies", "createCube", "factory", "_ref", "typed", "cubeNumber", "x", "name", "dependencies", "createExp", "factory", "_ref", "typed", "expNumber", "x", "name", "dependencies", "createExpm1", "factory", "_ref", "typed", "_Complex", "expm1Number", "x", "r", "name", "dependencies", "createFixNumber", "factory", "_ref", "typed", "ceil", "floor", "x", "n", "createFix", "_ref2", "_Complex", "matrix", "equalScalar", "zeros", "DenseMatrix", "matAlgo12xSfs", "createMatAlgo12xSfs", "matAlgo14xDs", "createMatAlgo14xDs", "fixNumber", "bn", "self", "unit", "valueless", "deepMap", "value", "i", "y", "name", "dependencies", "createFloorNumber", "factory", "_ref", "typed", "config", "round", "x", "nearlyEqual", "n", "number", "exponent", "result", "createFloor", "_ref2", "matrix", "equalScalar", "zeros", "DenseMatrix", "matAlgo11xS0s", "createMatAlgo11xS0s", "matAlgo12xSfs", "createMatAlgo12xSfs", "matAlgo14xDs", "createMatAlgo14xDs", "floorNumber", "decimal_default", "self", "unit", "valueless", "deepMap", "value", "i", "y", "name", "dependencies", "createMatAlgo02xDS0", "factory", "_ref", "typed", "equalScalar", "denseMatrix", "sparseMatrix", "callback", "inverse", "adata", "asize", "adt", "bvalues", "bindex", "bptr", "bsize", "bdt", "DimensionError", "rows", "columns", "dt", "eq", "zero", "cf", "cvalues", "cindex", "cptr", "j", "k0", "k1", "k", "i", "cij", "name", "dependencies", "createMatAlgo03xDSf", "factory", "_ref", "typed", "denseMatrix", "sparseMatrix", "callback", "inverse", "adata", "asize", "adt", "bvalues", "bindex", "bptr", "bsize", "bdt", "DimensionError", "rows", "columns", "dt", "zero", "cf", "cdata", "z", "x", "w", "j", "mark", "k0", "k1", "k", "i", "y", "name", "dependencies", "createMatAlgo05xSfSf", "factory", "_ref", "typed", "equalScalar", "a", "b", "callback", "avalues", "aindex", "aptr", "asize", "adt", "bvalues", "bindex", "bptr", "bsize", "bdt", "DimensionError", "rows", "columns", "dt", "eq", "zero", "cf", "cvalues", "cindex", "cptr", "xa", "xb", "wa", "wb", "i", "j", "k", "k1", "mark", "wai", "wbi", "va", "vb", "vc", "name", "dependencies", "createMatAlgo13xDD", "factory", "_ref", "typed", "a", "b", "callback", "adata", "asize", "adt", "bdata", "bsize", "bdt", "csize", "DimensionError", "s", "dt", "cf", "cdata", "_iterate", "f", "level", "n", "av", "bv", "cv", "i", "j", "broadcast", "A", "B", "deepStrictEqual", "newSize", "broadcastSizes", "M", "_broadcastTo", "size", "broadcastTo", "name", "dependencies", "createMatrixAlgorithmSuite", "factory", "_ref", "typed", "matrix", "matAlgo13xDD", "createMatAlgo13xDD", "matAlgo14xDs", "createMatAlgo14xDs", "options", "elop", "SD", "matrixSignatures", "x", "y", "broadcast", "self", "scalar", "Ds", "sS", "extend", "name", "dependencies", "createMod", "factory", "_ref", "typed", "config", "round", "matrix", "equalScalar", "zeros", "DenseMatrix", "concat", "floor", "createFloor", "matAlgo02xDS0", "createMatAlgo02xDS0", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo05xSfSf", "createMatAlgo05xSfSf", "matAlgo11xS0s", "createMatAlgo11xS0s", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "_modNumber", "x", "y", "m", "name", "dependencies", "createMatAlgo01xDSid", "factory", "_ref", "typed", "denseMatrix", "sparseMatrix", "callback", "inverse", "adata", "asize", "adt", "bvalues", "bindex", "bptr", "bsize", "bdt", "DimensionError", "rows", "columns", "dt", "cf", "i", "j", "cdata", "x", "w", "mark", "k0", "k1", "k", "name", "dependencies", "createMatAlgo04xSidSid", "factory", "_ref", "typed", "equalScalar", "a", "b", "callback", "avalues", "aindex", "aptr", "asize", "adt", "bvalues", "bindex", "bptr", "bsize", "bdt", "DimensionError", "rows", "columns", "dt", "eq", "zero", "cf", "cvalues", "cindex", "cptr", "xa", "xb", "wa", "wb", "i", "j", "k", "k0", "k1", "mark", "v", "name", "dependencies", "createMatAlgo10xSids", "factory", "_ref", "typed", "DenseMatrix", "s", "b", "callback", "inverse", "avalues", "aindex", "aptr", "asize", "adt", "rows", "columns", "dt", "cf", "cdata", "x", "w", "j", "mark", "k0", "k1", "k", "r", "i", "ArgumentsError", "fn", "count", "min", "max", "name", "dependencies", "gcdTypes", "gcdManyTypesSignature", "is1d", "array", "element", "createGcd", "factory", "_ref", "typed", "matrix", "config", "round", "equalScalar", "zeros", "BigNumber", "DenseMatrix", "concat", "mod", "createMod", "matAlgo01xDSid", "createMatAlgo01xDSid", "matAlgo04xSidSid", "createMatAlgo04xSidSid", "matAlgo10xSids", "createMatAlgo10xSids", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "_gcdNumber", "_gcdBigNumber", "x", "y", "self", "a", "b", "args", "res", "i", "ArgumentsError", "isInteger", "r", "zero", "name", "dependencies", "createMatAlgo06xS0S0", "factory", "_ref", "typed", "equalScalar", "a", "b", "callback", "avalues", "asize", "adt", "bvalues", "bsize", "bdt", "DimensionError", "rows", "columns", "dt", "eq", "zero", "cf", "cvalues", "cindex", "cptr", "x", "w", "u", "j", "mark", "scatter", "k", "i", "v", "p", "r", "name", "dependencies", "createLcm", "factory", "_ref", "typed", "matrix", "equalScalar", "concat", "matAlgo02xDS0", "createMatAlgo02xDS0", "matAlgo06xS0S0", "createMatAlgo06xS0S0", "matAlgo11xS0s", "createMatAlgo11xS0s", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "lcmTypes", "lcmManySignature", "self", "a", "b", "args", "res", "i", "lcmNumber", "_lcmBigNumber", "x", "y", "prod", "t", "name", "dependencies", "createLog10", "factory", "_ref", "typed", "config", "_Complex", "x", "log10Number", "self", "deepMap", "name", "dependencies", "createLog2", "factory", "_ref", "typed", "config", "Complex", "x", "log2Number", "_log2Complex", "self", "deepMap", "newX", "name", "dependencies", "createMultiplyScalar", "factory", "_ref", "typed", "multiplyNumber", "x", "y", "name", "dependencies", "createMultiply", "factory", "_ref", "typed", "matrix", "addScalar", "multiplyScalar", "equalScalar", "dot", "matAlgo11xS0s", "createMatAlgo11xS0s", "matAlgo14xDs", "createMatAlgo14xDs", "_validateMatrixDimensions", "size1", "size2", "_multiplyVectorVector", "a", "b", "n", "_multiplyVectorMatrix", "_multiplyVectorDenseMatrix", "adata", "asize", "adt", "bdata", "bsize", "bdt", "alength", "bcolumns", "dt", "af", "mf", "c", "j", "sum", "i", "_multiplyMatrixVector", "_multiplyDenseMatrixVector", "_multiplySparseMatrixVector", "_multiplyMatrixMatrix", "_multiplyDenseMatrixDenseMatrix", "_multiplyDenseMatrixSparseMatrix", "_multiplySparseMatrixDenseMatrix", "_multiplySparseMatrixSparseMatrix", "arows", "acolumns", "row", "x", "bvalues", "bindex", "bptr", "eq", "zero", "cvalues", "cindex", "cptr", "jb", "kb0", "kb1", "last", "mark", "cij", "kb", "ib", "avalues", "aindex", "aptr", "brows", "w", "vbi", "ka0", "ka1", "ka", "ia", "p1", "p", "ic", "vbij", "p0", "values", "selfMM", "y", "arraySize", "m", "isMatrix", "xsize", "ysize", "self", "rest", "result", "name", "dependencies", "createNthRoot", "factory", "_ref", "typed", "matrix", "equalScalar", "_BigNumber", "concat", "matAlgo01xDSid", "createMatAlgo01xDSid", "matAlgo02xDS0", "createMatAlgo02xDS0", "matAlgo06xS0S0", "createMatAlgo06xS0S0", "matAlgo11xS0s", "createMatAlgo11xS0s", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "complexErr", "nthRootNumber", "x", "_bigNthRoot", "selfDn", "selfSn", "self", "y", "selfDS", "a", "root", "precision", "Big", "zero", "one", "inv", "name", "dependencies", "createSign", "factory", "_ref", "typed", "_BigNumber", "complex", "_Fraction", "signNumber", "x", "self", "deepMap", "name", "dependencies", "createSqrt", "factory", "_ref", "config", "typed", "Complex", "_sqrtNumber", "x", "name", "dependencies", "createSquare", "factory", "_ref", "typed", "squareNumber", "x", "name", "dependencies", "createSubtract", "factory", "_ref", "typed", "matrix", "equalScalar", "subtractScalar", "unaryMinus", "DenseMatrix", "concat", "matAlgo01xDSid", "createMatAlgo01xDSid", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo05xSfSf", "createMatAlgo05xSfSf", "matAlgo10xSids", "createMatAlgo10xSids", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "name", "dependencies", "createXgcd", "factory", "_ref", "typed", "config", "matrix", "BigNumber", "a", "b", "res", "xgcdNumber", "_xgcdBigNumber", "t", "q", "r", "zero", "one", "x", "lastx", "y", "lasty", "name", "dependencies", "createInvmod", "factory", "_ref", "typed", "config", "BigNumber", "xgcd", "equal", "smaller", "mod", "add", "isInteger", "invmod", "a", "b", "res", "gcd", "inv", "name", "dependencies", "createMatAlgo09xS0Sf", "factory", "_ref", "typed", "equalScalar", "a", "b", "callback", "avalues", "aindex", "aptr", "asize", "adt", "bvalues", "bindex", "bptr", "bsize", "bdt", "DimensionError", "rows", "columns", "dt", "eq", "zero", "cf", "cvalues", "cindex", "cptr", "x", "w", "i", "j", "k", "k0", "k1", "mark", "vb", "vc", "name", "dependencies", "createDotMultiply", "factory", "_ref", "typed", "matrix", "equalScalar", "multiplyScalar", "concat", "matAlgo02xDS0", "createMatAlgo02xDS0", "matAlgo09xS0Sf", "createMatAlgo09xS0Sf", "matAlgo11xS0s", "createMatAlgo11xS0s", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "bitAndBigNumber", "x", "y", "BigNumber", "bitwise", "a", "b", "bitNotBigNumber", "prevPrec", "result", "bitOrBigNumber", "negOne", "func", "xBits", "yBits", "xSign", "ySign", "decCoefficientToBinaryString", "i", "_i", "minBits", "maxBits", "minSign", "shortLen", "longLen", "expFuncVal", "outVal", "twoPower", "two", "s", "z", "j", "xe", "str", "strL", "arr", "_i2", "arrL", "_j", "bitXor", "leftShiftBigNumber", "rightArithShiftBigNumber", "name", "dependencies", "createBitAnd", "factory", "_ref", "typed", "matrix", "equalScalar", "concat", "matAlgo02xDS0", "createMatAlgo02xDS0", "matAlgo06xS0S0", "createMatAlgo06xS0S0", "matAlgo11xS0s", "createMatAlgo11xS0s", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "bitAndNumber", "bitAndBigNumber", "x", "y", "name", "dependencies", "createBitNot", "factory", "_ref", "typed", "bitNotNumber", "bitNotBigNumber", "x", "self", "deepMap", "name", "dependencies", "createBitOr", "factory", "_ref", "typed", "matrix", "equalScalar", "DenseMatrix", "concat", "matAlgo01xDSid", "createMatAlgo01xDSid", "matAlgo04xSidSid", "createMatAlgo04xSidSid", "matAlgo10xSids", "createMatAlgo10xSids", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "bitOrNumber", "bitOrBigNumber", "x", "y", "name", "dependencies", "createMatAlgo07xSSf", "factory", "_ref", "typed", "SparseMatrix", "a", "b", "callback", "asize", "adt", "bsize", "bdt", "DimensionError", "rows", "columns", "dt", "zero", "cf", "cvalues", "cindex", "cptr", "xa", "xb", "wa", "wb", "j", "mark", "nonZeroCount", "_scatter", "i", "va", "vb", "cij", "m", "w", "x", "values", "index", "ptr", "k", "k1", "name", "dependencies", "createBitXor", "factory", "_ref", "typed", "matrix", "DenseMatrix", "concat", "SparseMatrix", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo07xSSf", "createMatAlgo07xSSf", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "bitXorNumber", "bitXor", "x", "y", "name", "dependencies", "createArg", "factory", "_ref", "typed", "x", "self", "deepMap", "name", "dependencies", "createConj", "factory", "_ref", "typed", "x", "self", "deepMap", "name", "dependencies", "createIm", "factory", "_ref", "typed", "x", "self", "deepMap", "name", "dependencies", "createRe", "factory", "_ref", "typed", "x", "self", "deepMap", "name", "dependencies", "createNot", "factory", "_ref", "typed", "notNumber", "x", "self", "deepMap", "name", "dependencies", "createOr", "factory", "_ref", "typed", "matrix", "equalScalar", "DenseMatrix", "concat", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo05xSfSf", "createMatAlgo05xSfSf", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "orNumber", "x", "y", "self", "name", "dependencies", "createXor", "factory", "_ref", "typed", "matrix", "DenseMatrix", "concat", "SparseMatrix", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo07xSSf", "createMatAlgo07xSSf", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "xorNumber", "x", "y", "self", "name", "dependencies", "createConcat", "factory", "_ref", "typed", "matrix", "isInteger", "args", "i", "len", "dim", "prevDim", "asMatrix", "matrices", "arg", "isMatrix", "isNumber", "isBigNumber", "IndexError", "m", "clone", "size", "arraySize", "DimensionError", "res", "concat", "name", "dependencies", "createColumn", "factory", "_ref", "typed", "Index", "matrix", "range", "_column", "value", "column", "clone", "validateIndex", "rowRange", "index", "result", "isMatrix", "name", "dependencies", "createCount", "factory", "_ref", "typed", "size", "prod", "x", "name", "dependencies", "createCross", "factory", "_ref", "typed", "matrix", "subtract", "multiply", "x", "y", "_cross", "highestDimension", "arraySize", "squeeze", "xSize", "ySize", "product", "name", "dependencies", "createDiag", "factory", "_ref", "typed", "matrix", "DenseMatrix", "SparseMatrix", "x", "_diag", "arraySize", "k", "format", "size", "isInteger", "kSuper", "kSub", "_createDiagonalMatrix", "_getDiagonal", "l", "ms", "m", "s", "isMatrix", "dm", "n", "vector", "i", "name", "dependencies", "createFilter", "factory", "_ref", "typed", "_filterCallback", "x", "test", "filterRegExp", "callback", "fastCallback", "optimizeCallback", "filter", "value", "index", "array", "name", "dependencies", "createFlatten", "factory", "_ref", "typed", "x", "flatten", "name", "dependencies", "createForEach", "factory", "_ref", "typed", "_forEach", "x", "callback", "array", "recurse", "optimizeCallback", "name", "dependencies", "createGetMatrixDataType", "factory", "_ref", "typed", "x", "getArrayDataType", "typeOf", "name", "dependencies", "createIdentity", "factory", "_ref", "typed", "config", "matrix", "BigNumber", "DenseMatrix", "SparseMatrix", "format", "rows", "_identity", "cols", "size", "_identityVector", "Big", "isBigNumber", "isInteger", "one", "defaultValue", "res", "resize", "minimum", "d", "name", "dependencies", "createKron", "factory", "_ref", "typed", "matrix", "multiplyScalar", "x", "y", "_kron", "a", "b", "arraySize", "t", "r", "name", "dependencies", "createMap", "factory", "_ref", "typed", "_mapArray", "x", "callback", "A", "B", "rest", "_mapMultiple", "Arrays", "multiCallback", "firstArrayIsMatrix", "newSize", "broadcastSizes", "arraySize", "_get", "matrix", "idx", "get", "broadcastedArrays", "broadcastTo", "firstIndex", "firstValues", "array", "callbackCase", "_getTypedCallbackCase", "_getLimitedCallback", "numberOfArrays", "_callbackCase", "_getCallbackCase", "broadcastedArraysCallback", "Array", "values", "arrays", "recurse", "optimizeCallback", "name", "dependencies", "createDiff", "factory", "_ref", "typed", "matrix", "subtract", "number", "arr", "isMatrix", "_diff", "dim", "isInteger", "_recursive", "selfAn", "selfMn", "result", "element", "size", "i", "_ElementDiff", "obj1", "obj2", "obj1IsArray", "obj2IsArray", "_ArrayDiff", "arr1", "arr2", "name", "dependencies", "createOnes", "factory", "_ref", "typed", "config", "matrix", "BigNumber", "_ones", "size", "last", "format", "hasBigNumbers", "_normalize", "defaultValue", "_validate", "m", "arr", "resize", "value", "index", "isBigNumber", "isInteger", "noBignumber", "noFraction", "noMatrix", "name", "dependencies", "createRange", "factory", "_ref", "typed", "config", "matrix", "bignumber", "smaller", "smallerEq", "larger", "largerEq", "add", "isPositive", "_strRange", "start", "end", "_out", "_range", "step", "includeEnd", "BigNumber", "arr", "noMatrix", "str", "r", "_parse", "noBignumber", "array", "ongoing", "x", "args", "nums", "arg", "invalid", "num", "name", "dependencies", "createReshape", "factory", "_ref", "typed", "isInteger", "x", "sizes", "size", "reshape", "name", "dependencies", "createResize", "factory", "_ref", "config", "matrix", "x", "size", "defaultValue", "ArgumentsError", "isMatrix", "isBigNumber", "value", "_resizeString", "asMatrix", "clone", "res", "resize", "str", "defaultChar", "DimensionError", "len", "isInteger", "format", "i", "ii", "name", "dependencies", "createRotate", "factory", "_ref", "typed", "multiply", "rotationMatrix", "w", "theta", "_validateSize", "matrixRes", "v", "expectedSize", "actualSize", "arraySize", "name", "dependencies", "createRotationMatrix", "factory", "_ref", "typed", "config", "multiplyScalar", "addScalar", "unaryMinus", "norm", "BigNumber", "matrix", "DenseMatrix", "SparseMatrix", "cos", "sin", "format", "theta", "_rotationMatrix2x2", "v", "matrixV", "_validateVector", "_rotationMatrix3x3", "storageType", "Big", "isBigNumber", "minusOne", "cosTheta", "sinTheta", "data", "_convertToFormat", "size", "_mul", "array", "p", "curr", "normV", "one", "vx", "vy", "vz", "c", "oneMinusC", "s", "r11", "r12", "r13", "r21", "r22", "r23", "r31", "r32", "r33", "name", "dependencies", "createRow", "factory", "_ref", "typed", "Index", "matrix", "range", "_row", "value", "row", "clone", "validateIndex", "columnRange", "index", "result", "isMatrix", "name", "dependencies", "createSize", "factory", "_ref", "typed", "config", "matrix", "x", "arraySize", "noMatrix", "name", "dependencies", "createSqueeze", "factory", "_ref", "typed", "x", "squeeze", "clone", "res", "name", "dependencies", "createSubset", "factory", "_ref", "typed", "matrix", "zeros", "add", "value", "index", "isEmptyIndex", "validateIndexSourceSize", "subsetRef", "subsetResult", "_getObjectProperty", "_getSubstring", "replacement", "defaultValue", "_broadcastReplacement", "_setSubstring", "_setObjectProperty", "indexSize", "d", "str", "isIndex", "DimensionError", "strLen", "validateIndex", "range", "substr", "v", "len", "chars", "i", "_i", "_len", "object", "key", "getSafeProperty", "updated", "clone", "setSafeProperty", "name", "dependencies", "createTranspose", "factory", "_ref", "typed", "matrix", "x", "transposeMatrix", "clone", "size", "c", "rows", "columns", "format", "_denseTranspose", "_sparseTranspose", "m", "data", "transposed", "transposedRow", "j", "i", "values", "index", "ptr", "cvalues", "cindex", "cptr", "w", "p", "l", "sum", "k0", "k1", "k", "q", "name", "dependencies", "createCtranspose", "factory", "_ref", "typed", "transpose", "conj", "x", "name", "dependencies", "createZeros", "factory", "_ref", "typed", "config", "matrix", "BigNumber", "_zeros", "size", "last", "format", "hasBigNumbers", "_normalize", "defaultValue", "_validate", "m", "arr", "resize", "value", "index", "isBigNumber", "isInteger", "name", "dependencies", "createFft", "factory", "_ref", "typed", "matrix", "addScalar", "multiplyScalar", "divideScalar", "exp", "tau", "I", "dotDivide", "conj", "pow", "ceil", "log2", "_ndFft", "arr", "size", "arraySize", "_fft", "_1dFft", "slice", "dim", "_", "i", "_transpose", "j", "_czt", "n", "w", "chirp", "N2", "xp", "ichirp", "fftXp", "fftIchirp", "fftProduct", "ifftProduct", "ret", "_i", "len", "k", "p", "q", "name", "dependencies", "createIfft", "factory", "_ref", "typed", "fft", "dotDivide", "conj", "arr", "size", "isMatrix", "arraySize", "acc", "curr", "_typeof", "o", "toPrimitive", "t", "r", "_typeof", "e", "i", "toPropertyKey", "t", "i", "toPrimitive", "_typeof", "_defineProperty", "r", "t", "toPropertyKey", "ownKeys", "r", "t", "o", "_objectSpread", "_defineProperty", "name", "dependencies", "createSolveODE", "factory", "_ref", "typed", "add", "subtract", "multiply", "divide", "max", "map", "abs", "isPositive", "isNegative", "larger", "smaller", "matrix", "bignumber", "unaryMinus", "_rk", "butcherTableau", "f", "tspan", "y0", "options", "wrongTSpan", "isNumOrBig", "isUnit", "t0", "tf", "isForwards", "firstStep", "maxStep", "minStep", "timeVars", "x", "steps", "tol", "minDelta", "maxDelta", "maxIter", "hasBigNumbers", "isBigNumber", "a", "c", "b", "bp", "h", "y", "deltaB", "n", "iter", "ongoing", "_createOngoing", "trimStep", "_createTrimStep", "k", "i", "TE", "X", "delta", "_rk23", "_rk45", "_solveODE", "opt", "method", "methods", "methodOptions", "methodsWithQuotes", "availableMethodsString", "outOfBounds", "next", "isNumber", "_matrixSolveODE", "T", "sol", "Y", "name", "dependencies", "createErf", "factory", "_ref", "typed", "x", "y", "MAX_NUM", "sign", "THRESH", "erf1", "erfc2", "erfc3", "self", "n", "deepMap", "ysq", "xnum", "P", "xden", "i", "Q", "result", "del", "SQRPI", "name", "dependencies", "createZeta", "factory", "_ref", "typed", "config", "multiply", "pow", "divide", "factorial", "equal", "smallerEq", "isNegative", "gamma", "sin", "subtract", "add", "Complex", "_BigNumber", "pi", "s", "zetaNumeric", "value", "zetaComplex", "createValue", "determineDigits", "zeta", "getRe", "n", "f", "c", "d", "k", "S", "j", "factor", "name", "dependencies", "createMode", "factory", "_ref", "typed", "isNaN", "isNumeric", "_mode", "args", "values", "flatten", "num", "count", "mode", "max", "i", "value", "improveErrorMessage", "err", "fnName", "value", "details", "typeOf", "name", "dependencies", "createProd", "factory", "_ref", "typed", "config", "multiplyScalar", "numeric", "_prod", "array", "dim", "args", "prod", "deepForEach", "value", "err", "improveErrorMessage", "safeNumberType", "name", "dependencies", "createFormat", "factory", "_ref", "typed", "format", "name", "dependencies", "createBin", "factory", "_ref", "typed", "format", "n", "wordSize", "name", "dependencies", "createOct", "factory", "_ref", "typed", "format", "n", "wordSize", "name", "dependencies", "createHex", "factory", "_ref", "typed", "format", "n", "wordSize", "printTemplate", "name", "dependencies", "createPrint", "factory", "_ref", "typed", "_print", "template", "values", "options", "printTemplate", "original", "key", "keys", "value", "k", "isString", "format", "name", "dependencies", "createTo", "factory", "_ref", "typed", "matrix", "concat", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "x", "unit", "name", "dependencies", "createIsPrime", "factory", "_ref", "typed", "x", "i", "modPow", "base", "exponent", "modulus", "accumulator", "Decimal", "r", "d", "bases", "max", "_i", "_i2", "a", "adn", "_i3", "_x", "self", "deepMap", "name", "dependencies", "createNumeric", "factory", "_ref", "_number", "bignumber", "fraction", "validInputTypes", "validOutputTypes", "x", "noBignumber", "noFraction", "value", "outputType", "check", "inputType", "typeOf", "name", "dependencies", "createDivideScalar", "factory", "_ref", "typed", "numeric", "x", "y", "name", "dependencies", "createPow", "factory", "_ref", "typed", "config", "identity", "multiply", "matrix", "inv", "number", "fraction", "Complex", "_pow", "y", "x", "result", "_powArray", "_powMatrix", "isInteger", "yFrac", "yNum", "powNumber", "s", "arraySize", "error", "res", "px", "NO_INT", "name", "dependencies", "createRound", "factory", "_ref", "typed", "config", "matrix", "equalScalar", "zeros", "_BigNumber", "DenseMatrix", "matAlgo11xS0s", "createMatAlgo11xS0s", "matAlgo12xSfs", "createMatAlgo12xSfs", "matAlgo14xDs", "createMatAlgo14xDs", "toExponent", "epsilon", "splitNumber", "x", "xEpsilon", "roundNumber", "xSelected", "nearlyEqual", "n", "epsilonExponent", "_n", "self", "unit", "valueless", "deepMap", "value", "name", "dependencies", "createLog", "factory", "_ref", "typed", "typeOf", "config", "divideScalar", "Complex", "x", "logNumber", "self", "base", "result", "name", "dependencies", "createLog1p", "factory", "_ref", "typed", "config", "divideScalar", "log", "Complex", "x", "log1p", "_log1pComplex", "y", "self", "deepMap", "base", "xRe1p", "name", "dependencies", "createNthRoots", "factory", "_ref", "typed", "config", "divideScalar", "Complex", "_calculateExactResult", "val", "_nthComplexRoots", "a", "root", "aIsNumeric", "offset", "arg", "abs", "roots", "r", "k", "halfPiFactor", "x", "name", "dependencies", "createDotPow", "factory", "_ref", "typed", "equalScalar", "matrix", "pow", "DenseMatrix", "concat", "SparseMatrix", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo07xSSf", "createMatAlgo07xSSf", "matAlgo11xS0s", "createMatAlgo11xS0s", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "powScalarSignatures", "signature", "powScalar", "name", "dependencies", "createDotDivide", "factory", "_ref", "typed", "matrix", "equalScalar", "divideScalar", "DenseMatrix", "concat", "SparseMatrix", "matAlgo02xDS0", "createMatAlgo02xDS0", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo07xSSf", "createMatAlgo07xSSf", "matAlgo11xS0s", "createMatAlgo11xS0s", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "createSolveValidation", "_ref", "DenseMatrix", "m", "b", "copy", "mSize", "format", "rows", "columns", "data", "isMatrix", "bSize", "bdata", "i", "isDenseMatrix", "_i", "isSparseMatrix", "_i2", "values", "index", "ptr", "k1", "k", "_i3", "isArray", "bsize", "arraySize", "_i4", "_i5", "name", "dependencies", "createLsolve", "factory", "_ref", "typed", "matrix", "divideScalar", "multiplyScalar", "subtractScalar", "equalScalar", "DenseMatrix", "solveValidation", "createSolveValidation", "m", "b", "_sparseForwardSubstitution", "_denseForwardSubstitution", "a", "r", "bdata", "rows", "columns", "x", "mdata", "j", "bj", "xj", "vjj", "i", "values", "index", "ptr", "jValues", "jIndices", "firstIndex", "lastIndex", "k", "_k", "l", "_i", "name", "dependencies", "createUsolve", "factory", "_ref", "typed", "matrix", "divideScalar", "multiplyScalar", "subtractScalar", "equalScalar", "DenseMatrix", "solveValidation", "createSolveValidation", "m", "b", "_sparseBackwardSubstitution", "_denseBackwardSubstitution", "a", "r", "bdata", "rows", "columns", "x", "mdata", "j", "bj", "xj", "vjj", "i", "values", "index", "ptr", "jValues", "jIndices", "firstIndex", "lastIndex", "k", "_k", "_lastIndex", "_i", "name", "dependencies", "createLsolveAll", "factory", "_ref", "typed", "matrix", "divideScalar", "multiplyScalar", "subtractScalar", "equalScalar", "DenseMatrix", "solveValidation", "createSolveValidation", "m", "b", "_sparseForwardSubstitution", "_denseForwardSubstitution", "a", "R", "r", "b_", "B", "e", "M", "rows", "columns", "i", "L", "k", "bNew", "_j", "j", "x", "values", "index", "ptr", "iValues", "iIndices", "firstIndex", "lastIndex", "Mii", "J", "_j3", "_lastIndex2", "_J2", "_j2", "_lastIndex", "_J", "name", "dependencies", "createUsolveAll", "factory", "_ref", "typed", "matrix", "divideScalar", "multiplyScalar", "subtractScalar", "equalScalar", "DenseMatrix", "solveValidation", "createSolveValidation", "m", "b", "_sparseBackwardSubstitution", "_denseBackwardSubstitution", "a", "R", "r", "b_", "B", "e", "M", "rows", "columns", "i", "L", "k", "bNew", "_j", "j", "x", "values", "index", "ptr", "iValues", "iIndices", "firstIndex", "lastIndex", "Mii", "J", "_j3", "_lastIndex2", "_J2", "_j2", "_lastIndex", "_J", "name", "dependencies", "createMatAlgo08xS0Sid", "factory", "_ref", "typed", "equalScalar", "a", "b", "callback", "avalues", "aindex", "aptr", "asize", "adt", "bvalues", "bindex", "bptr", "bsize", "bdt", "DimensionError", "rows", "columns", "dt", "eq", "zero", "cf", "cvalues", "cindex", "cptr", "x", "w", "k", "k0", "k1", "i", "j", "mark", "v", "createUseMatrixForArrayScalar", "factory", "_ref", "typed", "matrix", "selfDn", "x", "y", "selfDB", "selfnD", "selfBD", "name", "dependencies", "createLeftShift", "factory", "_ref", "typed", "matrix", "equalScalar", "zeros", "DenseMatrix", "concat", "matAlgo01xDSid", "createMatAlgo01xDSid", "matAlgo02xDS0", "createMatAlgo02xDS0", "matAlgo08xS0Sid", "createMatAlgo08xS0Sid", "matAlgo10xSids", "createMatAlgo10xSids", "matAlgo11xS0s", "createMatAlgo11xS0s", "matAlgo14xDs", "createMatAlgo14xDs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "useMatrixForArrayScalar", "createUseMatrixForArrayScalar", "leftShiftNumber", "leftShiftBigNumber", "x", "y", "self", "name", "dependencies", "createRightArithShift", "factory", "_ref", "typed", "matrix", "equalScalar", "zeros", "DenseMatrix", "concat", "matAlgo01xDSid", "createMatAlgo01xDSid", "matAlgo02xDS0", "createMatAlgo02xDS0", "matAlgo08xS0Sid", "createMatAlgo08xS0Sid", "matAlgo10xSids", "createMatAlgo10xSids", "matAlgo11xS0s", "createMatAlgo11xS0s", "matAlgo14xDs", "createMatAlgo14xDs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "useMatrixForArrayScalar", "createUseMatrixForArrayScalar", "rightArithShiftNumber", "rightArithShiftBigNumber", "x", "y", "self", "name", "dependencies", "createRightLogShift", "factory", "_ref", "typed", "matrix", "equalScalar", "zeros", "DenseMatrix", "concat", "matAlgo01xDSid", "createMatAlgo01xDSid", "matAlgo02xDS0", "createMatAlgo02xDS0", "matAlgo08xS0Sid", "createMatAlgo08xS0Sid", "matAlgo10xSids", "createMatAlgo10xSids", "matAlgo11xS0s", "createMatAlgo11xS0s", "matAlgo14xDs", "createMatAlgo14xDs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "useMatrixForArrayScalar", "createUseMatrixForArrayScalar", "rightLogShiftNumber", "self", "x", "y", "name", "dependencies", "createAnd", "factory", "_ref", "typed", "matrix", "equalScalar", "zeros", "not", "concat", "matAlgo02xDS0", "createMatAlgo02xDS0", "matAlgo06xS0S0", "createMatAlgo06xS0S0", "matAlgo11xS0s", "createMatAlgo11xS0s", "matAlgo14xDs", "createMatAlgo14xDs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "andNumber", "x", "y", "self", "name", "dependencies", "createCompare", "factory", "_ref", "typed", "config", "equalScalar", "matrix", "BigNumber", "Fraction", "DenseMatrix", "concat", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo05xSfSf", "createMatAlgo05xSfSf", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "compareUnits", "createCompareUnits", "createCompareNumber", "x", "y", "nearlyEqual", "_ref2", "import_javascript_natural_sort", "name", "dependencies", "createCompareNatural", "factory", "_ref", "typed", "compare", "compareBooleans", "_compareNatural", "x", "y", "typeX", "typeOf", "typeY", "c", "naturalSort", "matTypes", "compareMatricesAndArrays", "compareComplexNumbers", "compareArrays", "compareObjects", "compareNatural", "isSparseMatrix", "isDenseMatrix", "i", "ii", "v", "keysX", "keysY", "name", "dependencies", "compareText", "createCompareText", "factory", "_ref", "typed", "matrix", "concat", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "name", "dependencies", "createEqual", "factory", "_ref", "typed", "matrix", "equalScalar", "DenseMatrix", "concat", "SparseMatrix", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo07xSSf", "createMatAlgo07xSSf", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "createEqualNumber", "_ref2", "x", "y", "name", "dependencies", "createEqualText", "factory", "_ref", "typed", "compareText", "isZero", "x", "y", "name", "dependencies", "createSmaller", "factory", "_ref", "typed", "config", "matrix", "DenseMatrix", "concat", "SparseMatrix", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo07xSSf", "createMatAlgo07xSSf", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "compareUnits", "createCompareUnits", "createSmallerNumber", "x", "y", "nearlyEqual", "_ref2", "name", "dependencies", "createSmallerEq", "factory", "_ref", "typed", "config", "matrix", "DenseMatrix", "concat", "SparseMatrix", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo07xSSf", "createMatAlgo07xSSf", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "compareUnits", "createCompareUnits", "createSmallerEqNumber", "x", "y", "nearlyEqual", "_ref2", "name", "dependencies", "createLarger", "factory", "_ref", "typed", "config", "matrix", "DenseMatrix", "concat", "SparseMatrix", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo07xSSf", "createMatAlgo07xSSf", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "compareUnits", "createCompareUnits", "createLargerNumber", "x", "y", "nearlyEqual", "_ref2", "name", "dependencies", "createLargerEq", "factory", "_ref", "typed", "config", "matrix", "DenseMatrix", "concat", "SparseMatrix", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo07xSSf", "createMatAlgo07xSSf", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "compareUnits", "createCompareUnits", "createLargerEqNumber", "x", "y", "nearlyEqual", "_ref2", "name", "dependencies", "createDeepEqual", "factory", "_ref", "typed", "equal", "x", "y", "_deepEqual", "len", "i", "name", "dependencies", "createUnequal", "factory", "_ref", "typed", "config", "equalScalar", "matrix", "DenseMatrix", "concat", "SparseMatrix", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo07xSSf", "createMatAlgo07xSSf", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "createUnequalNumber", "_unequal", "x", "y", "_ref2", "name", "dependencies", "createPartitionSelect", "factory", "_ref", "typed", "isNumeric", "isNaN", "compare", "asc", "desc", "a", "b", "x", "k", "_partitionSelect", "isInteger", "isMatrix", "size", "quickSelect", "arr", "i", "from", "to", "r", "w", "pivot", "tmp", "name", "dependencies", "createSort", "factory", "_ref", "typed", "matrix", "compare", "compareNatural", "compareAsc", "compareDesc", "a", "b", "x", "_arrayIsVector", "_matrixIsVector", "_comparator", "order", "array", "arraySize", "name", "dependencies", "createMax", "factory", "_ref", "typed", "config", "numeric", "larger", "_max", "array", "dim", "reduce", "_largest", "args", "containsCollections", "x", "y", "err", "improveErrorMessage", "res", "deepForEach", "value", "safeNumberType", "name", "dependencies", "createMin", "factory", "_ref", "typed", "config", "numeric", "smaller", "_min", "array", "dim", "reduce", "_smallest", "args", "containsCollections", "x", "y", "err", "improveErrorMessage", "min", "deepForEach", "value", "safeNumberType", "name", "dependencies", "createImmutableDenseMatrixClass", "factory", "_ref", "smaller", "DenseMatrix", "ImmutableDenseMatrix", "data", "datatype", "isString", "isMatrix", "isArray", "matrix", "typeOf", "index", "m", "clone", "json", "v", "name", "dependencies", "createIndexClass", "factory", "_ref", "ImmutableDenseMatrix", "getMatrixDataType", "Index", "ranges", "i", "ii", "arg", "argIsArray", "isArray", "argIsMatrix", "isMatrix", "sourceSize", "isRange", "m", "_createImmutableMatrix", "_booleansArrayToNumbersForIndex", "size", "l", "isInteger", "index", "clone", "d", "values", "range", "callback", "dim", "array", "dimension", "strings", "json", "booleanArrayIndex", "indexOfNumbers", "bool", "idx", "name", "dependencies", "createFibonacciHeapClass", "factory", "_ref", "smaller", "larger", "oneOverLogPhi", "FibonacciHeap", "key", "value", "node", "minimum", "numberOfChildren", "x", "tempRight", "_findMinimumNode", "_decreaseKey", "parent", "_cut", "_cascadingCut", "_linkNodes", "size", "arraySize", "array", "numRoots", "y", "d", "next", "temp", "i", "name", "dependencies", "createSpaClass", "factory", "_ref", "addScalar", "equalScalar", "FibonacciHeap", "Spa", "i", "v", "node", "from", "to", "callback", "heap", "values", "nodes", "n", "j", "nodei", "nodej", "lruQueue", "limit", "size", "base", "queue", "map", "index", "del", "id", "oldIndex", "nuIndex", "memoize", "fn", "hasher", "limit", "lruQueue", "args", "i", "hash", "newVal", "createBigNumberE", "memoize", "BigNumber", "hasher", "createBigNumberPhi", "createBigNumberPi", "createBigNumberTau", "args", "ownKeys", "r", "t", "o", "_objectSpread", "_defineProperty", "name", "dependencies", "createUnitClass", "factory", "_ref", "on", "config", "addScalar", "subtractScalar", "multiplyScalar", "divideScalar", "pow", "abs", "fix", "round", "equal", "isNumeric", "format", "_number", "Complex", "_BigNumber", "_Fraction", "toNumber", "Unit", "value", "valuelessUnit", "isComplex", "BASE_DIMENSIONS", "x", "u", "isUnit", "_extends", "text", "index", "c", "skipWhitespace", "next", "isDigitDot", "isDigit", "revert", "oldIndex", "parseNumber", "number", "tentativeNumber", "tentativeIndex", "parseUnit", "unitName", "firstC", "parseCharacter", "toFind", "str", "options", "unit", "powerMultiplierCurrent", "expectingUnit", "valueStr", "powerMultiplierStack", "powerMultiplierStackProduct", "uStr", "oldC", "res", "_findUnit", "power", "p", "i", "baseDim", "UNIT_SYSTEMS", "clone", "hasOwnProperty", "typeOf", "convert", "unitValue", "unitPrefixValue", "unitPower", "prefixValue", "memoize", "UNITS", "prefix", "_name", "endsWith", "_unit", "prefixLen", "prefixName", "_prefix", "args", "base", "BASE_UNITS", "other", "_other", "_i", "inverted", "valThis", "valOther", "getNumericIfUnitless", "numerator", "_i2", "_i3", "ret", "nominalOffset", "unitOffset", "thisUnitValue", "thisNominalOffset", "thisUnitOffset", "otherUnitValue", "otherNominalOffset", "otherUnitOffset", "json", "_json$unit", "proposedUnitList", "matchingBase", "key", "currentUnitSystem", "matchingUnit", "missingBaseDim", "strNum", "strDen", "nNum", "nDen", "_i4", "simp", "isImaginary", "unitStr", "absValue", "absUnitValue", "bestPrefix", "bestDiff", "prefixes", "diff", "parts", "xNumeric", "xRounded", "xFixed", "isNearlyEqual", "y", "testSum", "_i5", "PREFIXES", "BASE_UNIT_NONE", "UNIT_NONE", "ALIASES", "calculateAngleValues", "pi", "createBigNumberPi", "curr", "prev", "_key", "type", "_key2", "_name2", "_unit2", "alias", "_key3", "assertUnitNameIsValid", "obj", "_key4", "lastUnit", "_key5", "defUnit", "aliases", "offset", "definition", "baseName", "ex", "newUnit", "anyMatch", "_i7", "match", "j", "_newBaseUnit", "b", "newBaseUnit", "_i6", "_i8", "aliasName", "_alias", "_key6", "name", "dependencies", "createUnitFunction", "factory", "_ref", "typed", "Unit", "x", "value", "unit", "self", "deepMap", "name", "dependencies", "createSparse", "factory", "_ref", "typed", "SparseMatrix", "datatype", "data", "name", "dependencies", "createCreateUnit", "factory", "_ref", "typed", "Unit", "obj", "options", "def", "name", "dependencies", "createAcos", "factory", "_ref", "typed", "config", "Complex", "x", "name", "dependencies", "createAcosh", "factory", "_ref", "typed", "config", "Complex", "x", "acoshNumber", "name", "dependencies", "createAcot", "factory", "_ref", "typed", "_BigNumber", "acotNumber", "x", "name", "dependencies", "createAcoth", "factory", "_ref", "typed", "config", "Complex", "_BigNumber", "x", "acothNumber", "name", "dependencies", "createAcsc", "factory", "_ref", "typed", "config", "Complex", "_BigNumber", "x", "acscNumber", "name", "dependencies", "createAcsch", "factory", "_ref", "typed", "_BigNumber", "acschNumber", "x", "name", "dependencies", "createAsec", "factory", "_ref", "typed", "config", "Complex", "_BigNumber", "x", "asecNumber", "name", "dependencies", "createAsech", "factory", "_ref", "typed", "config", "Complex", "_BigNumber", "x", "xInv", "asechNumber", "ret", "name", "dependencies", "createAsin", "factory", "_ref", "typed", "config", "Complex", "x", "name", "dependencies", "createAsinh", "factory", "_ref", "typed", "asinhNumber", "x", "name", "dependencies", "createAtan", "factory", "_ref", "typed", "x", "name", "dependencies", "createAtan2", "factory", "_ref", "typed", "matrix", "equalScalar", "BigNumber", "DenseMatrix", "concat", "matAlgo02xDS0", "createMatAlgo02xDS0", "matAlgo03xDSf", "createMatAlgo03xDSf", "matAlgo09xS0Sf", "createMatAlgo09xS0Sf", "matAlgo11xS0s", "createMatAlgo11xS0s", "matAlgo12xSfs", "createMatAlgo12xSfs", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "y", "name", "dependencies", "createAtanh", "factory", "_ref", "typed", "config", "Complex", "x", "atanhNumber", "createTrigUnit", "factory", "_ref", "typed", "self", "x", "name", "dependencies", "createCos", "factory", "_ref", "typed", "trigUnit", "createTrigUnit", "x", "name", "dependencies", "createCosh", "factory", "_ref", "typed", "cosh", "x", "name", "dependencies", "createCot", "factory", "_ref", "typed", "_BigNumber", "trigUnit", "createTrigUnit", "cotNumber", "x", "name", "dependencies", "createCoth", "factory", "_ref", "typed", "_BigNumber", "cothNumber", "x", "name", "dependencies", "createCsc", "factory", "_ref", "typed", "_BigNumber", "trigUnit", "createTrigUnit", "cscNumber", "x", "name", "dependencies", "createCsch", "factory", "_ref", "typed", "_BigNumber", "cschNumber", "x", "name", "dependencies", "createSec", "factory", "_ref", "typed", "_BigNumber", "trigUnit", "createTrigUnit", "secNumber", "x", "name", "dependencies", "createSech", "factory", "_ref", "typed", "_BigNumber", "sechNumber", "x", "name", "dependencies", "createSin", "factory", "_ref", "typed", "trigUnit", "createTrigUnit", "x", "name", "dependencies", "createSinh", "factory", "_ref", "typed", "sinhNumber", "x", "name", "dependencies", "createTan", "factory", "_ref", "typed", "trigUnit", "createTrigUnit", "x", "name", "dependencies", "createTanh", "factory", "_ref", "typed", "tanh", "x", "name", "dependencies", "createSetCartesian", "factory", "_ref", "typed", "size", "subset", "compareNatural", "Index", "DenseMatrix", "a1", "a2", "result", "b1", "flatten", "b2", "i", "j", "name", "dependencies", "createSetDifference", "factory", "_ref", "typed", "size", "subset", "compareNatural", "Index", "DenseMatrix", "a1", "a2", "result", "flatten", "b1", "identify", "b2", "inb2", "i", "j", "generalize", "name", "dependencies", "createSetDistinct", "factory", "_ref", "typed", "size", "subset", "compareNatural", "Index", "DenseMatrix", "result", "b", "flatten", "i", "name", "dependencies", "createSetIntersect", "factory", "_ref", "typed", "size", "subset", "compareNatural", "Index", "DenseMatrix", "a1", "a2", "result", "b1", "identify", "flatten", "b2", "i", "j", "generalize", "name", "dependencies", "createSetIsSubset", "factory", "_ref", "typed", "size", "subset", "compareNatural", "Index", "a1", "a2", "b1", "identify", "flatten", "b2", "inb2", "i", "j", "name", "dependencies", "createSetMultiplicity", "factory", "_ref", "typed", "size", "subset", "compareNatural", "Index", "e", "b", "flatten", "count", "i", "name", "dependencies", "createSetPowerset", "factory", "_ref", "typed", "size", "subset", "compareNatural", "Index", "a", "b", "flatten", "result", "number", "_subset", "_sort", "array", "bitarray", "i", "temp", "j", "name", "dependencies", "createSetSize", "factory", "_ref", "typed", "compareNatural", "a", "flatten", "unique", "b", "count", "i", "name", "dependencies", "createSetSymDifference", "factory", "_ref", "typed", "size", "concat", "subset", "setDifference", "Index", "a1", "a2", "flatten", "b1", "b2", "name", "dependencies", "createSetUnion", "factory", "_ref", "typed", "size", "concat", "subset", "setIntersect", "setSymDifference", "Index", "a1", "a2", "flatten", "b1", "b2", "name", "dependencies", "createAdd", "factory", "_ref", "typed", "matrix", "addScalar", "equalScalar", "DenseMatrix", "SparseMatrix", "concat", "matAlgo01xDSid", "createMatAlgo01xDSid", "matAlgo04xSidSid", "createMatAlgo04xSidSid", "matAlgo10xSids", "createMatAlgo10xSids", "matrixAlgorithmSuite", "createMatrixAlgorithmSuite", "self", "x", "y", "rest", "result", "i", "name", "dependencies", "createHypot", "factory", "_ref", "typed", "abs", "addScalar", "divideScalar", "multiplyScalar", "sqrt", "smaller", "isPositive", "_hypot", "M", "flatten", "args", "result", "largest", "i", "isComplex", "value", "name", "dependencies", "createNorm", "factory", "_ref", "typed", "abs", "add", "pow", "conj", "sqrt", "multiply", "equalScalar", "larger", "smaller", "matrix", "ctranspose", "eigs", "x", "_norm", "p", "_vectorNormPlusInfinity", "pinf", "value", "v", "_vectorNormMinusInfinity", "ninf", "_vectorNorm", "n", "_matrixNormFrobenius", "fro", "index", "_matrixNormOne", "c", "maxc", "j", "cj", "_matrixNormTwo", "sizeX", "tx", "squaredX", "eigenVals", "rho", "_matrixNormInfinity", "r", "maxr", "i", "ri", "_matrixNorm", "name", "dependencies", "createDot", "factory", "_ref", "typed", "addScalar", "multiplyScalar", "conj", "size", "_denseDot", "_sparseDot", "_validateDim", "x", "y", "xSize", "_size", "ySize", "xLen", "yLen", "a", "b", "N", "adata", "isMatrix", "adt", "bdata", "bdt", "aIsColumn", "bIsColumn", "add", "mul", "dt", "c", "i", "_c", "_i", "_c2", "_i2", "_c3", "_i3", "xindex", "xvalues", "yindex", "yvalues", "j", "I", "J", "name", "dependencies", "createTrace", "factory", "_ref", "typed", "matrix", "add", "x", "_denseTrace", "_sparseTrace", "clone", "m", "size", "data", "format", "rows", "cols", "sum", "i", "values", "index", "ptr", "columns", "j", "k0", "k1", "k", "name", "dependencies", "createIndex", "factory", "_ref", "typed", "Index", "args", "ranges", "arg", "isBigNumber", "isArray", "isMatrix", "elem", "res", "keywords", "name", "dependencies", "createNode", "factory", "_ref", "mathWithTransform", "_validateScope", "scope", "symbol", "keywords", "Node", "expr", "args", "context", "evaluate", "s", "createMap", "math", "argNames", "callback", "node", "isNode", "_traverse", "child", "path", "parent", "_transform", "replacement", "nodes", "other", "deepStrictEqual", "options", "customString", "errorTransform", "err", "IndexError", "accessFactory", "_ref", "subset", "object", "index", "getSafeProperty", "err", "errorTransform", "name", "dependencies", "createAccessorNode", "factory", "_ref", "subset", "Node", "access", "accessFactory", "needParenthesis", "node", "isAccessorNode", "isArrayNode", "isConstantNode", "isFunctionNode", "isObjectNode", "isParenthesisNode", "isSymbolNode", "AccessorNode", "object", "index", "isNode", "isIndexNode", "math", "argNames", "evalObject", "evalIndex", "prop", "scope", "args", "context", "getSafeProperty", "callback", "options", "json", "_defineProperty", "name", "dependencies", "createArrayNode", "factory", "_ref", "Node", "ArrayNode", "items", "isNode", "math", "argNames", "evalItems", "map", "item", "asMatrix", "matrix", "scope", "args", "context", "evalItem", "callback", "i", "node", "options", "json", "itemsToTex", "nested", "mixedItems", "isArrayNode", "itemsFormRow", "itemSep", "itemsTex", "_defineProperty", "assignFactory", "_ref", "subset", "matrix", "object", "index", "value", "result", "item", "setSafeProperty", "err", "errorTransform", "properties", "unwrapParen", "_node", "parenthesis", "node", "isParenthesisNode", "getPrecedence", "implicit", "parent", "identifier", "precedence", "i", "leftArg", "isConstantNode", "rule2Node", "getAssociativity", "index", "property", "hasOwnProperty", "isAssociativeWith", "nodeA", "nodeB", "a", "b", "identifierA", "identifierB", "getOperator", "fn", "group", "name", "dependencies", "createAssignmentNode", "factory", "_ref", "subset", "matrix", "Node", "access", "accessFactory", "assign", "assignFactory", "needParenthesis", "node", "parenthesis", "implicit", "precedence", "getPrecedence", "exprPrecedence", "AssignmentNode", "object", "index", "value", "isSymbolNode", "isAccessorNode", "isIndexNode", "isNode", "math", "argNames", "evalObject", "evalIndex", "evalValue", "prop", "scope", "args", "context", "setSafeProperty", "childObject", "evalParentObject", "parentProp", "parent", "getSafeProperty", "evalParentIndex", "parentIndex", "callback", "options", "json", "_defineProperty", "name", "dependencies", "createBlockNode", "factory", "_ref", "ResultSet", "Node", "BlockNode", "blocks", "block", "node", "visible", "isNode", "math", "argNames", "evalBlocks", "map", "scope", "args", "context", "results", "forEach", "result", "callback", "i", "options", "param", "json", "_defineProperty", "name", "dependencies", "createConditionalNode", "factory", "_ref", "Node", "testCondition", "condition", "isBigNumber", "isComplex", "isUnit", "typeOf", "ConditionalNode", "trueExpr", "falseExpr", "isNode", "math", "argNames", "evalCondition", "evalTrueExpr", "evalFalseExpr", "scope", "args", "context", "callback", "options", "parenthesis", "precedence", "getPrecedence", "conditionPrecedence", "truePrecedence", "falsePrecedence", "json", "_defineProperty", "import_escape_latex", "latexSymbols", "latexOperators", "latexFunctions", "node", "options", "defaultTemplate", "latexUnits", "escapeLatex", "string", "escapeLatexLib", "toSymbol", "name", "isUnit", "hasOwnProperty", "name", "dependencies", "createConstantNode", "factory", "_ref", "Node", "ConstantNode", "value", "math", "argNames", "callback", "options", "format", "typeOf", "json", "type", "escapeLatex", "finite", "index", "_defineProperty", "name", "dependencies", "createFunctionAssignmentNode", "factory", "_ref", "typed", "Node", "needParenthesis", "node", "parenthesis", "implicit", "precedence", "getPrecedence", "exprPrecedence", "FunctionAssignmentNode", "params", "expr", "isNode", "keywords", "paramNames", "param", "_name", "math", "argNames", "childArgNames", "forEach", "evalExpr", "signature", "join", "syntax", "scope", "args", "context", "signatures", "childArgs", "i", "fn", "callback", "options", "types", "index", "json", "escape", "toSymbol", "_defineProperty", "name", "dependencies", "createIndexNode", "factory", "_ref", "Node", "size", "IndexNode", "dimensions", "dotNotation", "isNode", "math", "argNames", "evalDimensions", "map", "dimension", "i", "needsEnd", "node", "childArgNames", "_evalDimension", "scope", "args", "context", "isMatrix", "isArray", "isString", "typeOf", "s", "childArgs", "index", "getSafeProperty", "evalDimension", "callback", "isConstantNode", "options", "json", "escape", "range", "_defineProperty", "name", "dependencies", "createObjectNode", "factory", "_ref", "Node", "ObjectNode", "properties", "key", "isNode", "math", "argNames", "evalEntries", "hasOwnProperty", "stringifiedKey", "stringify", "parsedKey", "prop", "getSafeProperty", "scope", "args", "context", "obj", "_key", "callback", "options", "entries", "json", "escape", "tex", "_defineProperty", "createSubScope", "parentScope", "args", "PartitionedMap", "ObjectWrappingMap", "name", "dependencies", "createOperatorNode", "factory", "_ref", "Node", "startsWithConstant", "expr", "parenthesis", "curNode", "isParenthesisNode", "isConstantNode", "isOperatorNode", "calculateNecessaryParentheses", "root", "implicit", "args", "latex", "precedence", "getPrecedence", "associativity", "getAssociativity", "arg", "result", "operandPrecedence", "operandIdentifier", "rootIdentifier", "properties", "lhsParens", "lhsPrecedence", "assocWithLhs", "isAssociativeWith", "rhsParens", "rhsPrecedence", "assocWithRhs", "_rootIdentifier", "lhsIdentifier", "rhsIdentifier", "argPrecedence", "assocWithArg", "argAssociativity", "i", "OperatorNode", "op", "fn", "isPercentage", "isNode", "math", "argNames", "isSafeMethod", "getSafeProperty", "evalArgs", "map", "rawArgs", "scope", "context", "createSubScope", "evalArg0", "_evalArg", "evalArg1", "evalArg", "callback", "options", "parens", "assoc", "operand", "opIsNamed", "lhs", "rhs", "stringifiedArgs", "index", "json", "escape", "latexOperators", "lhsTex", "rhsTex", "texifiedArgs", "_defineProperty", "name", "dependencies", "createParenthesisNode", "factory", "_ref", "Node", "ParenthesisNode", "content", "isNode", "math", "argNames", "callback", "options", "json", "_defineProperty", "name", "dependencies", "createRangeNode", "factory", "_ref", "Node", "calculateNecessaryParentheses", "node", "parenthesis", "implicit", "precedence", "getPrecedence", "parens", "startPrecedence", "stepPrecedence", "endPrecedence", "RangeNode", "start", "end", "step", "isNode", "endSymbols", "isSymbolNode", "math", "argNames", "range", "evalStart", "evalEnd", "evalStep", "scope", "args", "context", "callback", "options", "str", "json", "_defineProperty", "name", "dependencies", "createRelationalNode", "factory", "_ref", "Node", "operatorMap", "RelationalNode", "conditionals", "params", "math", "argNames", "self", "compiled", "p", "scope", "args", "context", "evalLhs", "evalRhs", "i", "condFn", "getSafeProperty", "callback", "n", "options", "parenthesis", "precedence", "getPrecedence", "paramStrings", "index", "paramPrecedence", "ret", "json", "escape", "latexOperators", "_defineProperty", "name", "dependencies", "createSymbolNode", "factory", "_ref", "math", "Unit", "Node", "isValuelessUnit", "SymbolNode", "argNames", "scope", "args", "context", "getSafeProperty", "isUnit", "callback", "options", "escape", "json", "symbol", "toSymbol", "name", "dependencies", "createFunctionNode", "factory", "_ref", "_FunctionNode", "math", "Node", "SymbolNode", "strin", "entity", "format", "expandTemplate", "template", "node", "options", "latex", "regex", "inputPos", "match", "property", "isNode", "arg", "index", "FunctionNode", "fn", "args", "argNames", "evalArgs", "isSymbolNode", "_name", "_rawArgs", "scope", "context", "getSafeProperty", "createSubScope", "values", "evalArg", "isRaw", "resolveFn", "value", "rawArgs", "evalArg0", "evalArg1", "isAccessorNode", "isIndexNode", "evalObject", "prop", "_rawArgs2", "object", "getSafeMethod", "fnExpr", "evalFn", "_rawArgs3", "callback", "i", "customString", "hasOwnProperty", "isFunctionAssignmentNode", "escape", "customTex", "latexConverter", "latexFunctions", "customToTex", "defaultTemplate", "_defineProperty", "json", "name", "dependencies", "createParse", "factory", "_ref", "typed", "numeric", "config", "AccessorNode", "ArrayNode", "AssignmentNode", "BlockNode", "ConditionalNode", "ConstantNode", "FunctionAssignmentNode", "FunctionNode", "IndexNode", "ObjectNode", "OperatorNode", "ParenthesisNode", "RangeNode", "RelationalNode", "SymbolNode", "parse", "expression", "parseStart", "expressions", "parseMultiple", "options", "extraNodes", "deepMap", "elem", "TOKENTYPE", "DELIMITERS", "NAMED_DELIMITERS", "CONSTANTS", "NUMERIC_CONSTANTS", "ESCAPE_CHARACTERS", "initialState", "currentString", "state", "length", "currentCharacter", "next", "prevCharacter", "nextCharacter", "getToken", "c1", "c2", "c3", "_c", "createSyntaxError", "hasOwnProperty", "getTokenSkipNewline", "openParams", "closeParams", "c", "cPrev", "cNext", "high", "low", "nestingLevel", "_extends", "node", "parseBlock", "createError", "blocks", "visible", "parseAssignment", "args", "value", "valid", "parseConditional", "isSymbolNode", "isAccessorNode", "isFunctionNode", "arg", "index", "parseLogicalOr", "prev", "condition", "trueExpr", "falseExpr", "parseLogicalXor", "parseLogicalAnd", "parseBitwiseOr", "parseBitwiseXor", "parseBitwiseAnd", "parseRelational", "params", "parseShift", "conditionals", "operators", "cond", "fn", "parseConversion", "parseRange", "parseAddSubtract", "parseMultiplyDivideModulusPercentage", "rightNode", "last", "parseImplicitMultiplication", "left", "parseRule2", "isConstantNode", "isOperatorNode", "parseUnary", "tokenStates", "rule2Node", "parsePow", "parseLeftHandOperators", "parseCustomNodes", "parseAccessors", "CustomNode", "parseSymbol", "parseString", "types", "isPropertyName", "dotNotation", "str", "parseStringToken", "parseMatrix", "quote", "char", "escapeChar", "unicode", "array", "rows", "cols", "row", "parseRow", "r", "parseObject", "len", "key", "properties", "parseNumber", "numberStr", "numericType", "safeNumberType", "parseParentheses", "parseEnd", "col", "message", "error", "name", "dependencies", "createCompile", "factory", "_ref", "typed", "parse", "expr", "deepMap", "entry", "name", "dependencies", "createEvaluate", "factory", "_ref", "typed", "parse", "expr", "scope", "createEmptyMap", "deepMap", "entry", "name", "dependencies", "createParserClass", "factory", "_ref", "evaluate", "parse", "Parser", "createEmptyMap", "expr", "toObject", "isValidVariableName", "i", "cPrev", "c", "cNext", "valid", "value", "name", "dependencies", "createParser", "factory", "_ref", "typed", "Parser", "name", "dependencies", "createLup", "factory", "_ref", "typed", "matrix", "abs", "addScalar", "divideScalar", "multiplyScalar", "subtractScalar", "larger", "equalScalar", "unaryMinus", "DenseMatrix", "SparseMatrix", "Spa", "m", "_denseLUP", "_sparseLUP", "a", "r", "rows", "columns", "n", "data", "clone", "ldata", "lsize", "udata", "usize", "i", "j", "k", "p", "min", "s", "pi", "pabsv", "vjj", "v", "absv", "vij", "l", "u", "pv", "values", "index", "ptr", "lvalues", "lindex", "lptr", "uvalues", "uindex", "uptr", "pvCo", "pvOc", "swapIndeces", "x", "y", "kx", "ky", "_loop", "spa", "k0", "k1", "vkj", "vik", "name", "dependencies", "createQr", "factory", "_ref", "typed", "matrix", "zeros", "identity", "isZero", "equal", "sign", "sqrt", "conj", "unaryMinus", "addScalar", "divideScalar", "multiplyScalar", "subtractScalar", "complex", "_extends", "m", "_denseQR", "_sparseQR", "a", "r", "_denseQRimpl", "rows", "cols", "Q", "Qdata", "R", "Rdata", "i", "j", "k", "w", "pivot", "sgn", "conjSgn", "alphaSquared", "alpha", "u1", "tau", "s", "ret", "zero", "csPermute", "a", "pinv", "q", "values", "avalues", "aindex", "aptr", "asize", "adt", "m", "n", "cvalues", "cindex", "cptr", "nz", "k", "j", "t0", "t1", "t", "r", "csTdfs", "j", "k", "w", "head", "next", "post", "stack", "top", "p", "i", "csPost", "parent", "n", "k", "j", "post", "w", "head", "next", "stack", "csTdfs", "csEtree", "a", "ata", "aindex", "aptr", "asize", "m", "n", "parent", "w", "ancestor", "prev", "i", "inext", "k", "p0", "p1", "p", "r", "csFkeep", "a", "callback", "other", "avalues", "aindex", "aptr", "asize", "n", "nz", "j", "p", "csFlip", "i", "name", "dependencies", "createCsAmd", "factory", "_ref", "add", "multiply", "transpose", "order", "a", "asize", "m", "n", "lemax", "dense", "cm", "_createTargetMatrix", "csFkeep", "_diag", "cindex", "cptr", "cnz", "P", "W", "len", "nv", "next", "head", "elen", "degree", "w", "hhead", "last", "mark", "_initializeQuotientGraph", "nel", "_initializeDegreeLists", "mindeg", "i", "j", "k", "k1", "k2", "e", "pj", "ln", "nvi", "pk", "eln", "p1", "p2", "pn", "h", "d", "elenk", "nvk", "dk", "p", "pk1", "pk2", "csFlip", "_wclear", "wnvi", "dext", "p3", "p4", "nvj", "jlast", "ok", "csTdfs", "at", "tindex", "tptr", "csLeaf", "i", "j", "w", "first", "maxfirst", "prevleaf", "ancestor", "sparent", "jleaf", "q", "jprev", "name", "dependencies", "createCsCounts", "factory", "_ref", "transpose", "a", "parent", "post", "ata", "asize", "m", "n", "i", "j", "k", "J", "p", "p0", "p1", "s", "w", "ancestor", "maxfirst", "prevleaf", "first", "head", "next", "colcount", "at", "tindex", "tptr", "r", "csLeaf", "name", "dependencies", "createCsSqr", "factory", "_ref", "add", "multiply", "transpose", "csAmd", "createCsAmd", "csCounts", "createCsCounts", "order", "a", "qr", "aptr", "asize", "n", "k", "s", "c", "csPermute", "csEtree", "post", "csPost", "_vcount", "aindex", "m", "parent", "pinv", "leftmost", "w", "next", "head", "tail", "nque", "i", "p", "p0", "p1", "pa", "csMarked", "w", "j", "csMark", "w", "j", "csFlip", "csUnflip", "i", "csFlip", "csDfs", "j", "g", "top", "xi", "pinv", "index", "ptr", "size", "n", "i", "p", "p2", "head", "jnew", "csMarked", "csMark", "csUnflip", "done", "csReach", "g", "b", "k", "xi", "pinv", "gptr", "gsize", "bindex", "bptr", "n", "p", "p0", "p1", "top", "i", "csMarked", "csDfs", "csMark", "name", "dependencies", "createCsSpsolve", "factory", "_ref", "divideScalar", "multiply", "subtract", "g", "b", "k", "xi", "x", "pinv", "lo", "gvalues", "gindex", "gptr", "gsize", "n", "bvalues", "bindex", "bptr", "p", "p0", "p1", "q", "top", "csReach", "px", "j", "J", "i", "name", "dependencies", "createCsLu", "factory", "_ref", "abs", "divideScalar", "multiply", "subtract", "larger", "largerEq", "SparseMatrix", "csSpsolve", "createCsSpsolve", "m", "s", "tol", "size", "n", "q", "lnz", "unz", "lvalues", "lindex", "lptr", "L", "uvalues", "uindex", "uptr", "U", "pinv", "i", "p", "x", "xi", "k", "col", "top", "ipiv", "a", "xabs", "pivot", "name", "dependencies", "createSlu", "factory", "_ref", "typed", "abs", "add", "multiply", "transpose", "divideScalar", "subtract", "larger", "largerEq", "SparseMatrix", "csSqr", "createCsSqr", "csLu", "createCsLu", "a", "order", "threshold", "isInteger", "s", "f", "csIpvec", "p", "b", "k", "x", "name", "dependencies", "createLusolve", "factory", "_ref", "typed", "matrix", "lup", "slu", "usolve", "lsolve", "DenseMatrix", "solveValidation", "createSolveValidation", "a", "b", "d", "x", "_lusolve", "order", "threshold", "_toMatrix", "isMatrix", "isArray", "l", "u", "p", "q", "csIpvec", "y", "name", "dependencies", "createPolynomialRoot", "factory", "_ref", "typed", "isZero", "equalScalar", "add", "subtract", "multiply", "divide", "sqrt", "unaryMinus", "cbrt", "typeOf", "im", "re", "constant", "restCoeffs", "coeffs", "c", "b", "a", "denom", "d1", "d2", "discriminant", "d", "_c", "_b", "_a", "_denom", "D0_1", "D0_2", "D1_1", "D1_2", "Delta0", "Delta1", "discriminant1", "discriminant2", "Ccubed", "allRoots", "rawRoots", "C", "r", "name", "dependencies", "createHelpClass", "factory", "_ref", "evaluate", "Help", "doc", "desc", "configChanged", "originalConfig", "scope", "newConfig", "i", "expr", "res", "e", "isHelp", "format", "obj", "clone", "json", "prop", "name", "dependencies", "createChainClass", "factory", "_ref", "on", "math", "typed", "Chain", "value", "isChain", "format", "json", "createProxy", "fn", "chainify", "createLazyProxy", "resolver", "lazy", "args", "i", "sigObject", "arg0", "arg1", "_loop", "_name", "hasOwnProperty", "excludedNames", "path", "eDocs", "falseDocs", "iDocs", "InfinityDocs", "LN10Docs", "LN2Docs", "LOG10EDocs", "LOG2EDocs", "NaNDocs", "nullDocs", "phiDocs", "piDocs", "SQRT12Docs", "SQRT2Docs", "tauDocs", "trueDocs", "versionDocs", "bignumberDocs", "bigintDocs", "booleanDocs", "complexDocs", "createUnitDocs", "fractionDocs", "indexDocs", "matrixDocs", "numberDocs", "sparseDocs", "splitUnitDocs", "stringDocs", "unitDocs", "configDocs", "importDocs", "typedDocs", "derivativeDocs", "leafCountDocs", "lsolveDocs", "lsolveAllDocs", "lupDocs", "lusolveDocs", "polynomialRootDocs", "qrDocs", "rationalizeDocs", "resolveDocs", "simplifyDocs", "simplifyConstantDocs", "simplifyCoreDocs", "sluDocs", "symbolicEqualDocs", "usolveDocs", "usolveAllDocs", "absDocs", "addDocs", "cbrtDocs", "ceilDocs", "cubeDocs", "divideDocs", "dotDivideDocs", "dotMultiplyDocs", "dotPowDocs", "expDocs", "expmDocs", "expm1Docs", "fixDocs", "floorDocs", "gcdDocs", "hypotDocs", "invmodDocs", "lcmDocs", "logDocs", "log10Docs", "log1pDocs", "log2Docs", "modDocs", "multiplyDocs", "normDocs", "nthRootDocs", "nthRootsDocs", "powDocs", "roundDocs", "signDocs", "sqrtDocs", "sqrtmDocs", "sylvesterDocs", "schurDocs", "lyapDocs", "squareDocs", "subtractDocs", "unaryMinusDocs", "unaryPlusDocs", "xgcdDocs", "bitAndDocs", "bitNotDocs", "bitOrDocs", "bitXorDocs", "leftShiftDocs", "rightArithShiftDocs", "rightLogShiftDocs", "bellNumbersDocs", "catalanDocs", "compositionDocs", "stirlingS2Docs", "argDocs", "conjDocs", "imDocs", "reDocs", "evaluateDocs", "helpDocs", "distanceDocs", "intersectDocs", "andDocs", "notDocs", "orDocs", "xorDocs", "columnDocs", "concatDocs", "countDocs", "crossDocs", "ctransposeDocs", "detDocs", "diagDocs", "diffDocs", "dotDocs", "eigsDocs", "filterDocs", "flattenDocs", "forEachDocs", "getMatrixDataTypeDocs", "identityDocs", "invDocs", "pinvDocs", "kronDocs", "mapDocs", "matrixFromColumnsDocs", "matrixFromFunctionDocs", "matrixFromRowsDocs", "onesDocs", "partitionSelectDocs", "rangeDocs", "reshapeDocs", "resizeDocs", "rotateDocs", "rotationMatrixDocs", "rowDocs", "sizeDocs", "sortDocs", "squeezeDocs", "subsetDocs", "traceDocs", "transposeDocs", "zerosDocs", "fftDocs", "ifftDocs", "combinationsDocs", "combinationsWithRepDocs", "factorialDocs", "gammaDocs", "lgammaDocs", "kldivergenceDocs", "multinomialDocs", "permutationsDocs", "pickRandomDocs", "randomDocs", "randomIntDocs", "compareDocs", "compareNaturalDocs", "compareTextDocs", "deepEqualDocs", "equalDocs", "equalTextDocs", "largerDocs", "largerEqDocs", "smallerDocs", "smallerEqDocs", "unequalDocs", "setCartesianDocs", "setDifferenceDocs", "setDistinctDocs", "setIntersectDocs", "setIsSubsetDocs", "setMultiplicityDocs", "setPowersetDocs", "setSizeDocs", "setSymDifferenceDocs", "setUnionDocs", "zpk2tfDocs", "freqzDocs", "erfDocs", "zetaDocs", "madDocs", "maxDocs", "meanDocs", "medianDocs", "minDocs", "modeDocs", "prodDocs", "quantileSeqDocs", "stdDocs", "cumSumDocs", "sumDocs", "varianceDocs", "corrDocs", "acosDocs", "acoshDocs", "acotDocs", "acothDocs", "acscDocs", "acschDocs", "asecDocs", "asechDocs", "asinDocs", "asinhDocs", "atanDocs", "atan2Docs", "atanhDocs", "cosDocs", "coshDocs", "cotDocs", "cothDocs", "cscDocs", "cschDocs", "secDocs", "sechDocs", "sinDocs", "sinhDocs", "tanDocs", "tanhDocs", "toDocs", "binDocs", "cloneDocs", "formatDocs", "hasNumericValueDocs", "hexDocs", "isIntegerDocs", "isNaNDocs", "isNegativeDocs", "isNumericDocs", "isPositiveDocs", "isPrimeDocs", "isZeroDocs", "numericDocs", "octDocs", "printDocs", "typeOfDocs", "solveODEDocs", "embeddedDocs", "bignumberDocs", "bigintDocs", "booleanDocs", "complexDocs", "createUnitDocs", "fractionDocs", "indexDocs", "matrixDocs", "numberDocs", "sparseDocs", "splitUnitDocs", "stringDocs", "unitDocs", "eDocs", "falseDocs", "iDocs", "InfinityDocs", "LN2Docs", "LN10Docs", "LOG2EDocs", "LOG10EDocs", "NaNDocs", "nullDocs", "piDocs", "phiDocs", "SQRT12Docs", "SQRT2Docs", "tauDocs", "trueDocs", "versionDocs", "derivativeDocs", "lsolveDocs", "lsolveAllDocs", "lupDocs", "lusolveDocs", "leafCountDocs", "polynomialRootDocs", "resolveDocs", "simplifyDocs", "simplifyConstantDocs", "simplifyCoreDocs", "symbolicEqualDocs", "rationalizeDocs", "sluDocs", "usolveDocs", "usolveAllDocs", "qrDocs", "absDocs", "addDocs", "cbrtDocs", "ceilDocs", "cubeDocs", "divideDocs", "dotDivideDocs", "dotMultiplyDocs", "dotPowDocs", "expDocs", "expmDocs", "expm1Docs", "fixDocs", "floorDocs", "gcdDocs", "hypotDocs", "lcmDocs", "logDocs", "log2Docs", "log1pDocs", "log10Docs", "modDocs", "multiplyDocs", "normDocs", "nthRootDocs", "nthRootsDocs", "powDocs", "roundDocs", "signDocs", "sqrtDocs", "sqrtmDocs", "squareDocs", "subtractDocs", "unaryMinusDocs", "unaryPlusDocs", "xgcdDocs", "invmodDocs", "bitAndDocs", "bitNotDocs", "bitOrDocs", "bitXorDocs", "leftShiftDocs", "rightArithShiftDocs", "rightLogShiftDocs", "bellNumbersDocs", "catalanDocs", "compositionDocs", "stirlingS2Docs", "configDocs", "importDocs", "typedDocs", "argDocs", "conjDocs", "reDocs", "imDocs", "evaluateDocs", "helpDocs", "distanceDocs", "intersectDocs", "andDocs", "notDocs", "orDocs", "xorDocs", "concatDocs", "countDocs", "crossDocs", "columnDocs", "ctransposeDocs", "detDocs", "diagDocs", "diffDocs", "dotDocs", "getMatrixDataTypeDocs", "identityDocs", "filterDocs", "flattenDocs", "forEachDocs", "invDocs", "pinvDocs", "eigsDocs", "kronDocs", "matrixFromFunctionDocs", "matrixFromRowsDocs", "matrixFromColumnsDocs", "mapDocs", "onesDocs", "partitionSelectDocs", "rangeDocs", "resizeDocs", "reshapeDocs", "rotateDocs", "rotationMatrixDocs", "rowDocs", "sizeDocs", "sortDocs", "squeezeDocs", "subsetDocs", "traceDocs", "transposeDocs", "zerosDocs", "fftDocs", "ifftDocs", "sylvesterDocs", "schurDocs", "lyapDocs", "solveODEDocs", "combinationsDocs", "combinationsWithRepDocs", "factorialDocs", "gammaDocs", "kldivergenceDocs", "lgammaDocs", "multinomialDocs", "permutationsDocs", "pickRandomDocs", "randomDocs", "randomIntDocs", "compareDocs", "compareNaturalDocs", "compareTextDocs", "deepEqualDocs", "equalDocs", "equalTextDocs", "largerDocs", "largerEqDocs", "smallerDocs", "smallerEqDocs", "unequalDocs", "setCartesianDocs", "setDifferenceDocs", "setDistinctDocs", "setIntersectDocs", "setIsSubsetDocs", "setMultiplicityDocs", "setPowersetDocs", "setSizeDocs", "setSymDifferenceDocs", "setUnionDocs", "zpk2tfDocs", "freqzDocs", "erfDocs", "zetaDocs", "cumSumDocs", "madDocs", "maxDocs", "meanDocs", "medianDocs", "minDocs", "modeDocs", "prodDocs", "quantileSeqDocs", "stdDocs", "sumDocs", "varianceDocs", "corrDocs", "acosDocs", "acoshDocs", "acotDocs", "acothDocs", "acscDocs", "acschDocs", "asecDocs", "asechDocs", "asinDocs", "asinhDocs", "atanDocs", "atanhDocs", "atan2Docs", "cosDocs", "coshDocs", "cotDocs", "cothDocs", "cscDocs", "cschDocs", "secDocs", "sechDocs", "sinDocs", "sinhDocs", "tanDocs", "tanhDocs", "toDocs", "cloneDocs", "formatDocs", "binDocs", "octDocs", "hexDocs", "isNaNDocs", "isIntegerDocs", "isNegativeDocs", "isNumericDocs", "hasNumericValueDocs", "isPositiveDocs", "isPrimeDocs", "isZeroDocs", "printDocs", "typeOfDocs", "numericDocs", "name", "dependencies", "createHelp", "factory", "_ref", "typed", "mathWithTransform", "Help", "search", "prop", "searchName", "hasOwnProperty", "doc", "getSafeProperty", "embeddedDocs", "searchText", "name", "dependencies", "createChain", "factory", "_ref", "typed", "Chain", "value", "name", "dependencies", "createDet", "factory", "_ref", "typed", "matrix", "subtractScalar", "multiply", "divideScalar", "isZero", "unaryMinus", "x", "clone", "size", "isMatrix", "format", "rows", "cols", "_det", "negated", "rowIndices", "_", "i", "k", "k_", "_k", "piv", "piv_", "i_", "j", "det", "name", "dependencies", "createInv", "factory", "_ref", "typed", "matrix", "divideScalar", "addScalar", "multiply", "unaryMinus", "det", "identity", "abs", "x", "size", "isMatrix", "arraySize", "format", "rows", "cols", "_inv", "mat", "r", "s", "f", "value", "temp", "d", "A", "B", "c", "ABig", "rBig", "Ac", "Bc", "Ar", "Br", "name", "dependencies", "createPinv", "factory", "_ref", "typed", "matrix", "inv", "deepEqual", "equal", "dotDivide", "dot", "ctranspose", "divideScalar", "multiply", "add", "Complex", "x", "size", "isMatrix", "arraySize", "_isZeros", "rows", "cols", "err", "_pinv", "format", "clone", "mat", "C", "F", "_rankFact", "Cpinv", "Fpinv", "_rref", "M", "lead", "r", "i", "_isZero", "val", "j", "_i", "_j", "rref", "_", "arr", "createComplexEigs", "_ref", "addScalar", "subtract", "flatten", "multiply", "multiplyScalar", "divideScalar", "sqrt", "abs", "bignumber", "diag", "size", "reshape", "inv", "qr", "usolve", "usolveAll", "equal", "complex", "larger", "smaller", "matrixFromColumns", "dot", "complexEigs", "arr", "N", "prec", "type", "findVectors", "R", "balance", "reduceToHessenberg", "values", "C", "iterateUntilTriangular", "eigenvectors", "findEigenvectors", "big", "cplx", "realzero", "one", "realone", "radix", "radixSq", "Rdiag", "last", "i", "colNorm", "rowNorm", "j", "f", "c", "rowDivRadix", "rowMulRadix", "condition", "g", "_j", "zero", "maxIndex", "max", "el", "tmp1", "_j2", "tmp2", "tmp3", "_j3", "n", "k", "_k", "_k2", "A", "clone", "lambdas", "Sdiag", "Qtotal", "Qpartial", "lastConvergenceBefore", "Q", "_i", "inflateMatrix", "_i2", "ll", "eigenvalues2x2", "jordanBase2x2", "_i3", "a", "b", "err", "blockDiag", "Cinv", "U", "uniqueValues", "multiplicities", "lambda", "indexOf", "vectors", "len", "E", "_loop", "_i4", "S", "solutions", "approxVec", "inverseIterate", "correction", "v", "d", "trA", "detA", "x", "y", "l1", "l2", "na", "nd", "_i5", "M", "I", "sub", "_i6", "fn", "orthog", "largeNum", "randomOrthogonalVector", "norm", "orthogonalComplement", "normalize", "_", "vectorShape", "w", "createRealSymmetric", "_ref", "config", "addScalar", "subtract", "abs", "atan", "cos", "sin", "multiplyScalar", "inv", "bignumber", "multiply", "add", "main", "arr", "N", "prec", "type", "computeVectors", "diag", "diagBig", "x", "precision", "e0", "psi", "Sij", "i", "Vab", "getAij", "_i", "j", "getTheta", "x1", "Sij1", "Ei", "_i2", "sorting", "clone", "getAijBig", "_i3", "getThetaBig", "x1Big", "Sij1Big", "_i4", "aii", "ajj", "aij", "denom", "theta", "c", "s", "Ski", "Skj", "k", "_k", "_k2", "Hij", "c2", "s2", "Aki", "Akj", "csHij", "Aii", "Ajj", "_k3", "_k4", "Mij", "maxMij", "maxIJ", "E", "S", "values", "vecs", "minID", "minE", "_k5", "eigenvectors", "vector", "name", "dependencies", "createEigs", "factory", "_ref", "config", "typed", "matrix", "addScalar", "subtract", "equal", "abs", "atan", "cos", "sin", "multiplyScalar", "divideScalar", "inv", "bignumber", "multiply", "add", "larger", "column", "flatten", "number", "complex", "sqrt", "diag", "size", "reshape", "qr", "usolve", "usolveAll", "im", "re", "smaller", "matrixFromColumns", "dot", "doRealSymmetric", "createRealSymmetric", "doComplexEigs", "createComplexEigs", "x", "doEigs", "prec", "opts", "mat", "useOpts", "_extends", "_opts$precision", "computeVectors", "result", "computeValuesAndVectors", "_ref2", "value", "vector", "arr", "asize", "format", "N", "isReal", "coerceReal", "isSymmetric", "_type", "coerceTypes", "type", "i", "j", "hasNumber", "hasBig", "hasComplex", "el", "isNumber", "isFraction", "isBigNumber", "isComplex", "typeOf", "_i", "_j", "_i2", "_j2", "_i3", "_j3", "name", "dependencies", "createExpm", "factory", "_ref", "typed", "abs", "add", "identity", "inv", "multiply", "A", "size", "format", "n", "eps", "infNorm", "infinityNorm", "params", "findParams", "q", "j", "Apos", "N", "D", "factor", "AposToI", "alternate", "i", "R", "_i", "isSparseMatrix", "rowSum", "maxSearchSize", "k", "errorEstimate", "qfac", "twoqfac", "_i2", "twoqp1fac", "name", "dependencies", "createSqrtm", "factory", "_ref", "typed", "abs", "add", "multiply", "map", "sqrt", "subtract", "inv", "size", "max", "identity", "_maxIterations", "_tolerance", "_denmanBeavers", "A", "error", "iterations", "Y", "Z", "Yk", "isMatrix", "arraySize", "format", "rows", "cols", "name", "dependencies", "createSylvester", "factory", "_ref", "typed", "schur", "matrixFromColumns", "matrix", "multiply", "range", "concat", "transpose", "index", "subset", "add", "subtract", "identity", "lusolve", "abs", "_sylvester", "A", "B", "C", "n", "m", "sA", "F", "U", "sB", "G", "V", "D", "all", "y", "hc", "a", "b", "vc", "k", "RHS", "j", "gkk", "gmk", "gkm", "gmm", "LHS", "yAux", "_RHS", "_j", "_gkk", "_LHS", "Y", "X", "name", "dependencies", "createSchur", "factory", "_ref", "typed", "matrix", "identity", "multiply", "qr", "norm", "subtract", "X", "r", "_schur", "n", "A", "U", "k", "A0", "QR", "Q", "R", "name", "dependencies", "createLyap", "factory", "_ref", "typed", "matrix", "sylvester", "multiply", "transpose", "A", "Q", "name", "dependencies", "createDivide", "factory", "_ref", "typed", "matrix", "multiply", "equalScalar", "divideScalar", "inv", "matAlgo11xS0s", "createMatAlgo11xS0s", "matAlgo14xDs", "createMatAlgo14xDs", "extend", "x", "y", "name", "dependencies", "createDistance", "factory", "_ref", "typed", "addScalar", "subtractScalar", "multiplyScalar", "divideScalar", "deepEqual", "sqrt", "abs", "x", "y", "z", "_2d", "xCoeff", "yCoeff", "constant", "_distancePointLine2D", "_objectToArray", "_3d", "_parametricLine", "_distancePointLine3D", "_containsOnlyNumbers", "_euclideanDistance", "arr", "_pairwise", "_distancePairwise", "_isNumber", "a", "isBigNumber", "o", "keys", "i", "aI", "b", "c", "num", "den", "x0", "y0", "z0", "vectorSize", "result", "diff", "pointA", "pointB", "j", "name", "dependencies", "createIntersect", "factory", "_ref", "typed", "config", "abs", "add", "addScalar", "matrix", "multiply", "multiplyScalar", "divideScalar", "subtract", "smaller", "equalScalar", "flatten", "isZero", "isNumeric", "_AAA", "_AAAA", "x", "y", "plane", "arr", "w", "z", "_coerceArr", "_3d", "_4d", "_intersectLinePlane", "_2d", "_intersect2d", "_intersect3d", "el", "p1a", "p1b", "p2a", "p2b", "o1", "o2", "d1", "d2", "det", "d20o11", "d21o10", "d20o21", "d21o20", "t", "_intersect3dHelper", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "add1", "add2", "add3", "x1", "y1", "z1", "x2", "y2", "z2", "x3", "y3", "z3", "x4", "y4", "z4", "d1343", "d4321", "d1321", "d4343", "d2121", "numerator", "denominator", "ta", "tb", "pax", "pay", "paz", "pbx", "pby", "pbz", "x1x", "x2x", "y1y", "y2y", "z1z", "z2z", "px", "py", "pz", "name", "dependencies", "createSum", "factory", "_ref", "typed", "config", "add", "numeric", "_sum", "_nsumDim", "args", "containsCollections", "array", "sum", "deepForEach", "value", "err", "improveErrorMessage", "safeNumberType", "dim", "reduce", "name", "dependencies", "createCumSum", "factory", "_ref", "typed", "add", "unaryPlus", "_cumsum", "matrix", "_ncumSumDim", "dim", "args", "containsCollections", "array", "_cumsummap", "err", "improveErrorMessage", "sums", "i", "size", "arraySize", "IndexError", "_cumsumDimensional", "mat", "ret", "tran", "initialValue", "_switch", "name", "dependencies", "createMean", "factory", "_ref", "typed", "add", "divide", "_mean", "_nmeanDim", "args", "containsCollections", "array", "dim", "sum", "reduce", "s", "arraySize", "err", "improveErrorMessage", "num", "deepForEach", "value", "name", "dependencies", "createMedian", "factory", "_ref", "typed", "add", "divide", "compare", "partitionSelect", "_median", "array", "flatten", "num", "mid", "right", "left", "i", "middle2", "m", "middle", "err", "improveErrorMessage", "value", "dim", "args", "containsCollections", "name", "dependencies", "createMad", "factory", "_ref", "typed", "abs", "map", "median", "subtract", "_mad", "args", "array", "flatten", "med", "value", "err", "improveErrorMessage", "DEFAULT_NORMALIZATION", "name", "dependencies", "createVariance", "factory", "_ref", "typed", "add", "subtract", "multiply", "divide", "apply", "isNaN", "array", "_var", "dim", "_varDim", "args", "normalization", "sum", "num", "deepForEach", "value", "err", "improveErrorMessage", "mean", "diff", "zero", "isBigNumber", "x", "name", "dependencies", "createQuantileSeq", "factory", "_ref", "typed", "bignumber", "add", "subtract", "divide", "multiply", "partitionSelect", "compare", "isInteger", "smaller", "smallerEq", "larger", "apply", "createApply", "data", "p", "_quantileSeqProbNumber", "prob", "dim", "_quantileSeqDim", "sorted", "_quantileSeqProbCollection", "fn", "x", "probOrN", "probArr", "dataArr", "isNumber", "_quantileSeq", "nPlusOne", "i", "probOrNArr", "array", "flat", "flatten", "len", "index", "integerPart", "fracPart", "left", "right", "name", "dependencies", "createStd", "factory", "_ref", "typed", "map", "sqrt", "variance", "_std", "args", "array", "normalization", "v", "isCollection", "err", "name", "dependencies", "createCorr", "factory", "_ref", "typed", "matrix", "sqrt", "sum", "add", "subtract", "multiply", "pow", "divide", "A", "B", "_corr", "res", "correlations", "i", "correlation", "n", "sumX", "sumY", "sumXY", "acc", "x", "index", "sumXSquare", "sumYSquare", "y", "numerator", "denominator", "name", "dependencies", "createCombinations", "factory", "_ref", "typed", "combinationsNumber", "k", "BigNumber", "result", "i", "nMinusk", "one", "isPositiveInteger", "n", "name", "dependencies", "createCombinationsWithRep", "factory", "_ref", "typed", "k", "isInteger", "_prodrange", "product", "prodrange", "BigNumber", "result", "i", "one", "nMinusOne", "isPositiveInteger", "n", "name", "dependencies", "createGamma", "factory", "_ref", "typed", "config", "multiplyScalar", "pow", "_BigNumber", "Complex", "gammaComplex", "n", "gammaNumber", "_t", "r", "x", "gammaP", "i", "gammaPval", "t", "gammaG", "twoPiSqrt", "tpow", "expt", "bigFactorial", "precision", "Big", "p", "prod", "sum", "name", "dependencies", "createLgamma", "factory", "_ref", "Complex", "typed", "SMALL_RE", "SMALL_IM", "coeffs", "lgammaNumber", "lgammaComplex", "n", "TWOPI", "LOGPI", "REFLECTION", "lgammaStirling", "tmp", "copysign", "a", "b", "lgammaRecurrence", "z", "leftPart", "lnSqrt2PI", "rz", "rzz", "r", "s", "i", "rightPart", "signflips", "sb", "shiftprod", "nsb", "name", "dependencies", "createFactorial", "factory", "_ref", "typed", "gamma", "n", "self", "deepMap", "name", "dependencies", "createKldivergence", "factory", "_ref", "typed", "matrix", "divide", "sum", "multiply", "map", "dotDivide", "log", "isNumeric", "q", "p", "_kldiv", "plength", "qlength", "sumq", "sump", "qnorm", "pnorm", "result", "x", "name", "dependencies", "createMultinomial", "factory", "_ref", "typed", "add", "divide", "multiply", "factorial", "isInteger", "isPositive", "a", "sum", "denom", "deepForEach", "ai", "name", "dependencies", "createPermutations", "factory", "_ref", "typed", "factorial", "n", "k", "isInteger", "product", "result", "i", "isPositiveInteger", "one", "import_seedrandom", "singletonRandom", "seedrandom", "createRng", "randomSeed", "random", "setSeed", "seed", "rng", "name", "dependencies", "createPickRandom", "factory", "_ref", "typed", "config", "on", "rng", "createRng", "curr", "prev", "possibles", "_pickRandom", "options", "number", "weights", "_ref2", "elementWise", "single", "createMatrix", "isMatrix", "flatten", "totalWeights", "i", "len", "isNumber", "length", "result", "pick", "randKey", "_i", "_len", "randomMatrix", "size", "random", "data", "i", "length", "_i", "_length", "name", "dependencies", "createRandom", "factory", "_ref", "typed", "config", "on", "rng", "createRng", "curr", "prev", "_random", "max", "min", "size", "_randomMatrix", "res", "randomMatrix", "isMatrix", "name", "dependencies", "createRandomInt", "factory", "_ref", "typed", "config", "on", "rng", "createRng", "curr", "prev", "_randomInt", "max", "min", "size", "_randomIntMatrix", "res", "randomMatrix", "isMatrix", "name", "dependencies", "createStirlingS2", "factory", "_ref", "typed", "addScalar", "subtractScalar", "multiplyScalar", "divideScalar", "pow", "factorial", "combinations", "isNegative", "isInteger", "number", "bignumber", "larger", "smallCache", "bigCache", "n", "k", "big", "isNumber", "cache", "make", "nn", "nk", "m", "row", "prev", "i", "name", "dependencies", "createBellNumbers", "factory", "_ref", "typed", "addScalar", "isNegative", "isInteger", "stirlingS2", "n", "result", "i", "name", "dependencies", "createCatalan", "factory", "_ref", "typed", "addScalar", "divideScalar", "multiplyScalar", "combinations", "isNegative", "isInteger", "n", "name", "dependencies", "createComposition", "factory", "_ref", "typed", "addScalar", "combinations", "isPositive", "isNegative", "isInteger", "larger", "n", "k", "name", "dependencies", "createLeafCount", "factory", "_ref", "parse", "typed", "countLeaves", "node", "count", "n", "expr", "isNumericNode", "x", "isConstantNode", "isOperatorNode", "isConstantExpression", "isFunctionNode", "isParenthesisNode", "ownKeys", "r", "t", "o", "_objectSpread", "_defineProperty", "name", "dependencies", "createUtil", "factory", "_ref", "FunctionNode", "OperatorNode", "SymbolNode", "T", "F", "defaultName", "defaultContext", "realContext", "positiveContext", "hasProperty", "nodeOrName", "property", "context", "isOperatorNode", "isFunctionNode", "isParenthesisNode", "hasOwnProperty", "properties", "_properties", "_properties2", "isCommutative", "node", "isAssociative", "mergeContext", "primary", "secondary", "merged", "prop", "flatten", "allChildren", "i", "op", "children", "_findChildren", "child", "unflattenr", "makeNode", "createMakeNodeFunction", "l", "curnode", "unflattenl", "args", "err", "name", "dependencies", "createSimplify", "factory", "_ref", "typed", "parse", "equal", "resolve", "simplifyConstant", "simplifyCore", "AccessorNode", "ArrayNode", "ConstantNode", "FunctionNode", "IndexNode", "ObjectNode", "OperatorNode", "ParenthesisNode", "SymbolNode", "replacer", "hasProperty", "isCommutative", "isAssociative", "mergeContext", "flatten", "unflattenr", "unflattenl", "createMakeNodeFunction", "defaultContext", "realContext", "positiveContext", "createUtil", "createMap", "simplify", "_simplify", "expr", "scope", "options", "removeParens", "node", "isParenthesisNode", "SUPPORTED_CONSTANTS", "_canonicalizeRule", "ruleObject", "context", "newRule", "lr", "prop", "nonCommutative", "leftExpandsym", "_getExpandPlaceholderSymbol", "makeNode", "expandsym", "_buildRules", "rules", "ruleSet", "i", "rule", "ruleType", "_lastsym", "createEmptyMap", "debug", "res", "visited", "str", "laststr", "rulestr", "applyRule", "newstr", "mapRule", "nodes", "resNodes", "newNode", "symbol", "property", "mergedContext", "newArgs", "newContent", "newItems", "newObj", "newIndex", "newDims", "changed", "newProps", "repl", "matches", "_ruleMatch", "implicit", "hasOwnProperty", "getSplits", "right", "rightArgs", "_i", "left", "mergeMatch", "match1", "match2", "key", "_exactMatch", "_key", "combineChildMatches", "list1", "list2", "merged", "i1", "i2", "mergeChildMatches", "childMatches", "sets", "uniqueSets", "unique", "s", "isSplit", "childMatch", "leftMatch", "rightMatch", "splits", "splitMatches", "_i2", "matchSet", "isConstantNode", "isSymbolNode", "isNumericNode", "isConstantExpression", "p", "q", "name", "dependencies", "createSimplifyConstant", "factory", "_ref", "typed", "config", "mathWithTransform", "matrix", "fraction", "bignumber", "AccessorNode", "ArrayNode", "ConstantNode", "FunctionNode", "IndexNode", "ObjectNode", "OperatorNode", "SymbolNode", "isCommutative", "isAssociative", "allChildren", "createMakeNodeFunction", "createUtil", "simplifyConstant", "node", "_ensureNode", "foldFraction", "expr", "options", "_removeFractions", "thing", "isFraction", "isMatrix", "_eval", "fnname", "args", "_toNumber", "_toNode", "_fractionToNode", "n", "unaryMinusNode", "s", "m", "e", "isNode", "_exactFraction", "exactFractions", "f", "fractionsLimit", "numericType", "safeNumberType", "noBignumber", "noFraction", "fromBigInt", "value", "numeratorValue", "numeratorNode", "_foldAccessor", "obj", "index", "isIndexNode", "isArrayNode", "remainingDims", "isConstantNode", "first", "second", "tryItems", "fromItems", "item", "isObjectNode", "key", "foldOp", "fn", "makeNode", "reduction", "sofar", "next", "last", "newtree", "operatorFunctions", "arg", "sz", "section", "_args", "res", "isOperatorNode", "consts", "vars", "i", "foldItems", "foldProps", "prop", "name", "dependencies", "createSimplifyCore", "factory", "_ref", "typed", "parse", "equal", "isZero", "add", "subtract", "multiply", "divide", "pow", "AccessorNode", "ArrayNode", "ConstantNode", "FunctionNode", "IndexNode", "ObjectNode", "OperatorNode", "ParenthesisNode", "SymbolNode", "node0", "node1", "nodeT", "nodeF", "isAlwaysBoolean", "node", "isOperatorNode", "hasProperty", "isCommutative", "createUtil", "_simplifyCore", "nodeToSimplify", "options", "context", "isFunctionNode", "simpChild", "childCount", "c", "op", "getOperator", "last", "seclast", "n", "a0", "finish", "_a", "a1", "isConstantNode", "a", "isArrayNode", "isAccessorNode", "isIndexNode", "isObjectNode", "newProps", "prop", "name", "dependencies", "createResolve", "factory", "_ref", "typed", "parse", "ConstantNode", "FunctionNode", "OperatorNode", "ParenthesisNode", "_resolve", "node", "scope", "within", "isSymbolNode", "variables", "value", "isNode", "nextWithin", "isOperatorNode", "args", "arg", "isParenthesisNode", "isFunctionNode", "_args", "child", "n", "createMap", "self", "A", "selfAM", "selfMM", "name", "dependencies", "createSymbolicEqual", "factory", "_ref", "parse", "simplify", "typed", "OperatorNode", "_symbolicEqual", "e1", "e2", "options", "diff", "simplified", "isConstantNode", "name", "dependencies", "createDerivative", "factory", "_ref", "typed", "config", "parse", "simplify", "equal", "isZero", "numeric", "ConstantNode", "FunctionNode", "OperatorNode", "ParenthesisNode", "SymbolNode", "plainDerivative", "expr", "variable", "options", "constNodes", "constTag", "res", "_derivative", "parseIdentifier", "string", "symbol", "derivative", "node", "deriv", "_derivTex", "x", "isConstantNode", "typeOf", "order", "d", "varName", "isConst", "i", "createConstantNode", "arg0", "arg1", "div", "negative", "funcDerivative", "op", "func", "chainDerivative", "arg", "constantTerms", "nonConstantTerms", "nonConstantNode", "newArgs", "argOuter", "argInner", "_arg", "_arg2", "powMinusOne", "value", "valueType", "safeNumberType", "name", "dependencies", "createRationalize", "factory", "_ref", "config", "typed", "equal", "isZero", "add", "subtract", "multiply", "divide", "pow", "parse", "simplifyConstant", "simplifyCore", "simplify", "fraction", "bignumber", "mathWithTransform", "matrix", "AccessorNode", "ArrayNode", "ConstantNode", "FunctionNode", "IndexNode", "ObjectNode", "OperatorNode", "SymbolNode", "ParenthesisNode", "_rationalize", "expr", "scope", "detailed", "setRules", "rulesRationalize", "polyRet", "polynomial", "nVars", "noExactFractions", "withExactFractions", "expandPower", "sBefore", "rules", "eDistrDiv", "redoInic", "s", "coefficients", "retRationalize", "polyToCanonical", "extended", "variables", "node", "oper", "recPoly", "retFunc", "tp", "isInteger", "i", "_name", "pos", "oldRules", "rulesFirst", "rulesDistrDiv", "rulesSucDiv", "parent", "indParent", "internal", "does", "val", "nEsqTopo", "nDirTopo", "o", "maxExpo", "varname", "recurPol", "first", "no", "n1", "op", "n2", "n3", "noPai", "_i", "valor", "_i2", "name", "dependencies", "createZpk2tf", "factory", "_ref", "typed", "add", "multiply", "Complex", "number", "z", "p", "k", "_zpk2tf", "el", "num", "den", "i", "zero", "_multiply", "_i", "pole", "_i2", "b", "c", "j", "name", "dependencies", "createFreqz", "factory", "_ref", "typed", "add", "multiply", "Complex", "divide", "matrix", "b", "a", "w", "createBins", "_freqz", "w2", "_w", "h", "num", "den", "i", "sumNum", "sumDen", "j", "_j", "_i", "n", "bins", "name", "dependencies", "createReviver", "factory", "_ref", "classes", "key", "value", "constructor", "name", "dependencies", "createReplacer", "factory", "key", "value", "version", "createTrue", "factory", "createFalse", "createNull", "createInfinity", "recreateFactory", "_ref", "config", "BigNumber", "createNaN", "_ref2", "createPi", "_ref3", "createBigNumberPi", "pi", "createTau", "_ref4", "createBigNumberTau", "tau", "createE", "_ref5", "createBigNumberE", "e", "createPhi", "_ref6", "createBigNumberPhi", "phi", "createLN2", "_ref7", "createLN10", "_ref8", "createLOG2E", "_ref9", "createLOG10E", "_ref10", "createSQRT1_2", "_ref11", "createSQRT2", "_ref12", "createI", "_ref13", "Complex", "createUppercasePi", "_ref14", "createUppercaseE", "_ref15", "createVersion", "version", "name", "dependencies", "create", "createSpeedOfLight", "unitFactory", "createGravitationConstant", "createPlanckConstant", "createReducedPlanckConstant", "createMagneticConstant", "createElectricConstant", "createVacuumImpedance", "createCoulomb", "createElementaryCharge", "createBohrMagneton", "createConductanceQuantum", "createInverseConductanceQuantum", "createMagneticFluxQuantum", "createNuclearMagneton", "createKlitzing", "createBohrRadius", "unitFactory", "createClassicalElectronRadius", "createElectronMass", "createFermiCoupling", "createFineStructure", "numberFactory", "createHartreeEnergy", "createProtonMass", "createDeuteronMass", "createNeutronMass", "createQuantumOfCirculation", "createRydberg", "createThomsonCrossSection", "createWeakMixingAngle", "createEfimovFactor", "createAtomicMass", "createAvogadro", "createBoltzmann", "createFaraday", "createFirstRadiation", "createLoschmidt", "createGasConstant", "createMolarPlanckConstant", "createMolarVolume", "createSackurTetrode", "createSecondRadiation", "createStefanBoltzmann", "createWienDisplacement", "createMolarMass", "createMolarMassC12", "createGravity", "createPlanckLength", "createPlanckMass", "createPlanckTime", "createPlanckCharge", "createPlanckTemperature", "name", "valueStr", "unitStr", "dependencies", "factory", "_ref", "config", "Unit", "BigNumber", "value", "unit", "_ref2", "name", "dependencies", "createApplyTransform", "factory", "_ref", "typed", "isInteger", "apply", "createApply", "args", "dim", "isNumber", "isBigNumber", "err", "errorTransform", "name", "dependencies", "createColumnTransform", "factory", "_ref", "typed", "Index", "matrix", "range", "column", "createColumn", "args", "lastIndex", "last", "isNumber", "err", "errorTransform", "compileInlineExpression", "expression", "math", "scope", "symbol", "node", "isSymbolNode", "name", "argsScope", "subScope", "PartitionedMap", "eq", "x", "name", "dependencies", "createTransformCallback", "factory", "_ref", "typed", "callback", "numberOfArrays", "_transformTypedCallbackFunction", "_transformCallbackFunction", "typedFunction", "signatures", "_ref2", "signature", "callbackFunction", "numberOfCallbackInputs", "_len", "args", "_key", "vals", "idx", "_transformDims", "_len2", "_key2", "rest", "dims", "dim", "name", "dependencies", "createFilterTransform", "factory", "_ref", "typed", "filterTransform", "args", "math", "scope", "filter", "createFilter", "transformCallback", "createTransformCallback", "x", "N", "callback", "_compileAndEvaluate", "isSymbolNode", "isFunctionAssignmentNode", "compileInlineExpression", "arg", "name", "dependencies", "createForEachTransform", "factory", "_ref", "typed", "forEach", "createForEach", "transformCallback", "createTransformCallback", "forEachTransform", "args", "math", "scope", "x", "N", "callback", "_compileAndEvaluate", "isSymbolNode", "isFunctionAssignmentNode", "compileInlineExpression", "arg", "name", "dependencies", "createIndexTransform", "factory", "_ref", "Index", "getMatrixDataType", "args", "i", "ii", "arg", "isRange", "v", "isArray", "isMatrix", "isNumber", "isBigNumber", "res", "name", "dependencies", "createMapTransform", "factory", "_ref", "typed", "map", "createMap", "transformCallback", "createTransformCallback", "mapTransform", "args", "math", "scope", "N", "X", "callback", "arg", "_compileAndEvaluate", "isSymbolNode", "isFunctionAssignmentNode", "compileInlineExpression", "dimToZeroBase", "dim", "isNumber", "isBigNumber", "isNumberOrBigNumber", "n", "lastDimToZeroBase", "args", "isCollection", "dim", "isNumberOrBigNumber", "dimToZeroBase", "name", "dependencies", "createMaxTransform", "factory", "_ref", "typed", "config", "numeric", "larger", "max", "createMax", "args", "lastDimToZeroBase", "err", "errorTransform", "name", "dependencies", "createMeanTransform", "factory", "_ref", "typed", "add", "divide", "mean", "createMean", "args", "lastDimToZeroBase", "err", "errorTransform", "name", "dependencies", "createMinTransform", "factory", "_ref", "typed", "config", "numeric", "smaller", "min", "createMin", "args", "lastDimToZeroBase", "err", "errorTransform", "name", "dependencies", "createRangeTransform", "factory", "_ref", "typed", "config", "matrix", "bignumber", "smaller", "smallerEq", "larger", "largerEq", "add", "isPositive", "range", "createRange", "args", "lastIndex", "last", "name", "dependencies", "createRowTransform", "factory", "_ref", "typed", "Index", "matrix", "range", "row", "createRow", "args", "lastIndex", "last", "isNumber", "err", "errorTransform", "name", "dependencies", "createSubsetTransform", "factory", "_ref", "typed", "matrix", "zeros", "add", "subset", "createSubset", "args", "err", "errorTransform", "name", "dependencies", "createConcatTransform", "factory", "_ref", "typed", "matrix", "isInteger", "concat", "createConcat", "args", "lastIndex", "last", "isNumber", "isBigNumber", "err", "errorTransform", "name", "dependencies", "createDiffTransform", "factory", "_ref", "typed", "matrix", "subtract", "number", "bignumber", "diff", "createDiff", "args", "lastDimToZeroBase", "err", "errorTransform", "name", "dependencies", "createStdTransform", "factory", "_ref", "typed", "map", "sqrt", "variance", "std", "createStd", "args", "lastDimToZeroBase", "err", "errorTransform", "name", "dependencies", "createSumTransform", "factory", "_ref", "typed", "config", "add", "numeric", "sum", "createSum", "args", "lastDimToZeroBase", "err", "errorTransform", "name", "dependencies", "createQuantileSeqTransform", "factory", "_ref", "typed", "bignumber", "add", "subtract", "divide", "multiply", "partitionSelect", "compare", "isInteger", "smaller", "smallerEq", "larger", "quantileSeq", "createQuantileSeq", "arr", "prob", "dim", "dimToZeroBase", "sorted", "data", "lastDimToZeroBase", "name", "dependencies", "createCumSumTransform", "factory", "_ref", "typed", "add", "unaryPlus", "cumsum", "createCumSum", "args", "isCollection", "dim", "isNumber", "isBigNumber", "err", "errorTransform", "name", "dependencies", "createVarianceTransform", "factory", "_ref", "typed", "add", "subtract", "multiply", "divide", "apply", "isNaN", "variance", "createVariance", "args", "lastDimToZeroBase", "err", "errorTransform", "name", "dependencies", "createPrintTransform", "factory", "_ref", "typed", "matrix", "zeros", "add", "print", "createPrint", "template", "values", "_convertTemplateToZeroBasedIndex", "options", "printTemplate", "x", "parts", "result", "part", "name", "dependencies", "createAndTransform", "factory", "_ref", "typed", "matrix", "equalScalar", "zeros", "not", "concat", "and", "createAnd", "andTransform", "args", "math", "scope", "condition1", "isCollection", "condition2", "name", "dependencies", "createOrTransform", "factory", "_ref", "typed", "matrix", "equalScalar", "DenseMatrix", "concat", "or", "createOr", "orTransform", "args", "math", "scope", "condition1", "isCollection", "condition2", "name", "dependencies", "createBitAndTransform", "factory", "_ref", "typed", "matrix", "equalScalar", "zeros", "not", "concat", "bitAnd", "createBitAnd", "bitAndTransform", "args", "math", "scope", "condition1", "isCollection", "condition2", "name", "dependencies", "createBitOrTransform", "factory", "_ref", "typed", "matrix", "equalScalar", "DenseMatrix", "concat", "bitOr", "createBitOr", "bitOrTransform", "args", "math", "scope", "condition1", "isCollection", "condition2", "all", "factoriesAny_exports", "import_typed_function", "import_tiny_emitter", "mixin", "obj", "emitter", "Emitter", "importFactory", "typed", "load", "math", "importedFactories", "mathImport", "functions", "options", "num", "ArgumentsError", "flattenImports", "flatValues", "value", "name", "item", "_name", "hasOwnProperty", "isFactory", "flatName", "isTransformFunctionFactory", "_importFactory", "isSupportedType", "_import", "_math$Unit", "_wrap", "hasTypedFunctionSignature", "_importTransform", "isDefined", "isValuelessUnit", "allowedInExpressions", "_deleteTransform", "fn", "wrapper", "args", "i", "len", "arg", "factory", "namespace", "existingTransform", "existing", "resolver", "dependencies", "stripOptionalNotation", "dependency", "instance", "lazy", "factoryAllowedInExpressions", "object", "isUnit", "isComplex", "isBigNumber", "isFraction", "isMatrix", "unsafe", "create", "factories", "config", "configInternal", "_extends", "DEFAULT_CONFIG", "math", "mixin", "isNumber", "isComplex", "isBigNumber", "isBigInt", "isFraction", "isUnit", "isString", "isArray", "isMatrix", "isCollection", "isDenseMatrix", "isSparseMatrix", "isRange", "isIndex", "isBoolean", "isResultSet", "isHelp", "isFunction", "isDate", "isRegExp", "isObject", "isMap", "isPartitionedMap", "isObjectWrappingMap", "isNull", "isUndefined", "isAccessorNode", "isArrayNode", "isAssignmentNode", "isBlockNode", "isConditionalNode", "isConstantNode", "isFunctionAssignmentNode", "isFunctionNode", "isIndexNode", "isNode", "isObjectNode", "isOperatorNode", "isParenthesisNode", "isRangeNode", "isRelationalNode", "isSymbolNode", "isChain", "configFactory", "legacyFactories", "legacyInstances", "load", "factory", "isFactory", "firstProperty", "isLegacyFactory", "index", "instance", "importedFactories", "lazyTyped", "_len", "args", "_key", "typedFunction", "internalImport", "importFactory", "deepFlatten", "ArgumentsError", "DimensionError", "IndexError", "esm_exports", "__export", "ABS", "ACCRINT", "ACCRINTM", "ACOS", "ACOSH", "ACOT", "ACOTH", "AGGREGATE", "AMORDEGRC", "AMORLINC", "AND", "ARABIC", "ASC", "ASIN", "ASINH", "ATAN", "ATAN2", "ATANH", "AVEDEV", "AVERAGE", "AVERAGEA", "AVERAGEIF", "AVERAGEIFS", "BAHTTEXT", "BASE", "BESSELI", "BESSELJ", "BESSELK", "BESSELY", "BETA", "BETADIST", "BETAINV", "BIN2DEC", "BIN2HEX", "BIN2OCT", "BINOM", "BINOMDIST", "BITAND", "BITLSHIFT", "BITOR", "BITRSHIFT", "BITXOR", "CEILING", "CEILINGMATH", "CEILINGPRECISE", "CELL", "CHAR", "CHIDIST", "CHIDISTRT", "CHIINV", "CHIINVRT", "CHISQ", "CHITEST", "CHOOSE", "CLEAN", "CODE", "COLUMN", "COLUMNS", "COMBIN", "COMBINA", "COMPLEX", "CONCAT", "CONCATENATE", "CONFIDENCE", "CONVERT", "CORREL", "COS", "COSH", "COT", "COTH", "COUNT", "COUNTA", "COUNTBLANK", "COUNTIF", "COUNTIFS", "COUPDAYBS", "COUPDAYS", "COUPDAYSNC", "COUPNCD", "COUPNUM", "COUPPCD", "COVAR", "COVARIANCE", "COVARIANCEP", "COVARIANCES", "CRITBINOM", "CSC", "CSCH", "CUMIPMT", "CUMPRINC", "DATE", "DATEDIF", "DATEVALUE", "DAVERAGE", "DAY", "DAYS", "DAYS360", "DB", "DBCS", "DCOUNT", "DCOUNTA", "DDB", "DEC2BIN", "DEC2HEX", "DEC2OCT", "DECIMAL", "DEGREES", "DELTA", "DEVSQ", "DGET", "DISC", "DMAX", "DMIN", "DOLLAR", "DOLLARDE", "DOLLARFR", "DPRODUCT", "DSTDEV", "DSTDEVP", "DSUM", "DURATION", "DVAR", "DVARP", "EDATE", "EFFECT", "EOMONTH", "ERF", "ERFC", "ERFCPRECISE", "ERFPRECISE", "ERROR", "EVEN", "EXACT", "EXP", "EXPON", "EXPONDIST", "F", "FACT", "FACTDOUBLE", "FALSE", "FDIST", "FDISTRT", "FIND", "FINV", "FINVRT", "FISHER", "FISHERINV", "FIXED", "FLOOR", "FLOORMATH", "FLOORPRECISE", "FORECAST", "FREQUENCY", "FTEST", "FV", "FVSCHEDULE", "GAMMA", "GAMMADIST", "GAMMAINV", "GAMMALN", "GAMMALNPRECISE", "GAUSS", "GCD", "GEOMEAN", "GESTEP", "GROWTH", "HARMEAN", "HEX2BIN", "HEX2DEC", "HEX2OCT", "HLOOKUP", "HOUR", "HYPGEOM", "HYPGEOMDIST", "IF", "IFERROR", "IFNA", "IFS", "IMABS", "IMAGINARY", "IMARGUMENT", "IMCONJUGATE", "IMCOS", "IMCOSH", "IMCOT", "IMCSC", "IMCSCH", "IMDIV", "IMEXP", "IMLN", "IMLOG10", "IMLOG2", "IMPOWER", "IMPRODUCT", "IMREAL", "IMSEC", "IMSECH", "IMSIN", "IMSINH", "IMSQRT", "IMSUB", "IMSUM", "IMTAN", "INDEX", "INFO", "INT", "INTERCEPT", "INTRATE", "IPMT", "IRR", "ISBLANK", "ISERR", "ISERROR", "ISEVEN", "ISFORMULA", "ISLOGICAL", "ISNA", "ISNONTEXT", "ISNUMBER", "ISO", "ISODD", "ISOWEEKNUM", "ISPMT", "ISREF", "ISTEXT", "KURT", "LARGE", "LCM", "LEFT", "LEN", "LINEST", "LN", "LOG", "LOG10", "LOGEST", "LOGINV", "LOGNORM", "LOGNORMDIST", "LOGNORMINV", "LOOKUP", "LOWER", "MATCH", "MAX", "MAXA", "MAXIFS", "MDURATION", "MEDIAN", "MID", "MIN", "MINA", "MINIFS", "MINUTE", "MIRR", "MMULT", "MOD", "MODE", "MODEMULT", "MODESNGL", "MONTH", "MROUND", "MULTINOMIAL", "MUNIT", "N", "NA", "NEGBINOM", "NEGBINOMDIST", "NETWORKDAYS", "NETWORKDAYSINTL", "NOMINAL", "NORM", "NORMDIST", "NORMINV", "NORMSDIST", "NORMSINV", "NOT", "NOW", "NPER", "NPV", "NUMBERVALUE", "OCT2BIN", "OCT2DEC", "OCT2HEX", "ODD", "ODDFPRICE", "ODDFYIELD", "ODDLPRICE", "ODDLYIELD", "OR", "PDURATION", "PEARSON", "PERCENTILE", "PERCENTILEEXC", "PERCENTILEINC", "PERCENTRANK", "PERCENTRANKEXC", "PERCENTRANKINC", "PERMUT", "PERMUTATIONA", "PHI", "PI", "PMT", "POISSON", "POISSONDIST", "POWER", "PPMT", "PRICE", "PRICEDISC", "PRICEMAT", "PROB", "PRODUCT", "PRONETIC", "PROPER", "PV", "QUARTILE", "QUARTILEEXC", "QUARTILEINC", "QUOTIENT", "RADIANS", "RAND", "RANDBETWEEN", "RANK", "RANKAVG", "RANKEQ", "RATE", "RECEIVED", "REPLACE", "REPT", "RIGHT", "ROMAN", "ROUND", "ROUNDDOWN", "ROUNDUP", "ROW", "ROWS", "RRI", "RSQ", "SEARCH", "SEC", "SECH", "SECOND", "SERIESSUM", "SHEET", "SHEETS", "SIGN", "SIN", "SINH", "SKEW", "SKEWP", "SLN", "SLOPE", "SMALL", "SORT", "SQRT", "SQRTPI", "STANDARDIZE", "STDEV", "STDEVA", "STDEVP", "STDEVPA", "STDEVS", "STEYX", "SUBSTITUTE", "SUBTOTAL", "SUM", "SUMIF", "SUMIFS", "SUMPRODUCT", "SUMSQ", "SUMX2MY2", "SUMX2PY2", "SUMXMY2", "SWITCH", "SYD", "T", "TAN", "TANH", "TBILLEQ", "TBILLPRICE", "TBILLYIELD", "TDIST", "TDISTRT", "TEXT", "TEXTJOIN", "TIME", "TIMEVALUE", "TINV", "TODAY", "TRANSPOSE", "TREND", "TRIM", "TRIMMEAN", "TRUE", "TRUNC", "TTEST", "TYPE", "UNICHAR", "UNICODE", "UNIQUE", "UPPER", "VALUE", "VAR", "VARA", "VARP", "VARPA", "VARS", "VDB", "VLOOKUP", "WEEKDAY", "WEEKNUM", "WEIBULL", "WEIBULLDIST", "WORKDAY", "WORKDAYINTL", "XIRR", "XNPV", "XOR", "YEAR", "YEARFRAC", "YIELD", "YIELDDISC", "YIELDMAT", "Z", "ZTEST", "utils", "import_jstat", "import_bessel", "nil", "div0", "value", "ref", "name", "num", "na", "error", "data", "errors", "defaultOperator", "validSymbols", "_TOKEN_TYPE_OPERATOR", "_TOKEN_TYPE_LITERAL", "SUPPORTED_TOKENS", "TOKEN_TYPE_OPERATOR", "TOKEN_TYPE_LITERAL", "createToken", "type", "castValueToCorrectType", "tokenizeExpression", "expression", "expressionLength", "tokens", "cursorIndex", "processedValue", "processedSymbol", "char", "analyzeTokens", "literalValue", "analyzedTokens", "i", "token", "computeExpression", "values", "operator", "evaluate", "result", "parse", "compute", "argsToArray", "args", "arrayEach", "array", "iteratee", "index", "length", "arrayValuesToNumbers", "arr", "n", "el", "number", "parseNumber", "fillMatrix", "matrix", "fill_value", "a", "j", "longestArrayIndex", "acc", "longestArrayLength", "flatten", "argument", "isArrayLike", "isFlat", "flattenShallow", "b", "aIsArray", "bIsArray", "initial", "idx", "rest", "transpose", "col", "row", "findField", "database", "title", "anyError", "anyIsError", "cleanFloat", "numbers", "serialNumberToDate", "serial", "utc_value", "date_info", "fractional_day", "total_seconds", "seconds", "hours", "minutes", "days", "month", "parseBool", "bool", "up", "parseDate", "date", "d", "parseDateArray", "len", "parsed", "string", "parseNumberArray", "parseString", "anyIsString", "applyCriteria", "range", "criterias", "criteriaLength", "isMetCondition", "valueToTest", "criteria", "isWildcard", "computedResult", "tokenizedCriteria", "isDefined", "arg", "error_val", "value$1", "reference", "jStat", "lookup_value", "table_array", "row_index_num", "range_lookup", "row_num", "column_num", "someError", "isOneDimensionRange", "result_array", "isNumberLookup", "lookup_array", "match_type", "indexValue", "lookupValueStr", "sort_index", "sort_order", "by_col", "sortArray", "hasElement", "element", "col_index_num", "exactMatchOnly", "lookupValue", "rowValue", "text", "re", "trueFound", "falseFound", "decimals", "options", "formattedNumber", "text1", "text2", "find_text", "within_text", "start_num", "found_index", "no_commas", "factor", "parts", "num_chars", "begin", "end", "decimal_separator", "group_separator", "txt", "old_text", "new_text", "number_times", "foundAt", "instance_num", "format_text", "currencySymbol", "isPercent", "decimalPlaces", "noCommas", "delimiter", "ignore_empty", "flatArgs", "textToJoin", "chunks", "item", "anyError$1", "output", "SQRT2PI", "flatArgumentsDefined", "sum", "count", "average_range", "flatAverageRangeDefined", "average_count", "average", "x", "alpha", "beta", "cumulative", "probability", "number_s", "trials", "probability_s", "number_s2", "deg_freedom", "actual_range", "expected_range", "tmp", "dof", "xsqr", "Pi", "ChiSq", "p", "k", "t", "standard_dev", "size", "array1", "array2", "flatArguments", "blanks", "matches", "results", "mean1", "mean2", "mean", "lambda", "deg_freedom1", "deg_freedom2", "sumOfSquares", "x1", "x2", "sum1", "sum2", "y", "e2y", "known_ys", "known_xs", "xmean", "ymean", "den", "data_array", "bins_array", "r", "z", "known_y", "known_x", "new_x", "use_const", "avg_x", "avg_y", "avg_xy", "avg_xx", "new_y", "sample_s", "number_sample", "population_s", "number_pop", "pdf", "M", "cdf", "sigma", "m", "maxItems", "max", "currentItem", "number_f", "den1", "den2", "l", "fl", "significance", "uniques", "power", "match", "number_chosen", "x_range", "prob_range", "lower_limit", "upper_limit", "sorted", "quart", "order", "sort", "m2", "m3", "v", "lft", "mean_x", "mean_y", "s_x", "s_y", "new_xs", "linest", "percent", "trim", "function_num", "ref1", "ref2", "x_num", "y_num", "radix", "min_length", "mode", "precision", "e2", "angle", "MEMOIZED_FACT", "r0", "ri", "o", "base", "_", "divisor", "modulus", "multiple", "dimension", "temp", "numerator", "denominator", "bottom", "top", "digits", "key", "roman", "num_digits", "coefficients", "inner_result", "sum_range", "sumValue", "arrays", "product", "_i", "_ij", "_ij_arg", "_i_arg", "array_x", "array_y", "ADD", "num1", "num2", "DIVIDE", "dividend", "EQ", "value1", "value2", "GT", "GTE", "LT", "LTE", "MINUS", "MULTIPLY", "factor1", "factor2", "NE", "POW", "exponent", "symbols", "d1900", "WEEK_STARTS", "WEEK_TYPES", "WEEKEND_TYPES", "year", "day", "start_date", "end_date", "unit", "start_date_year", "start_date_month", "start_date_day", "end_date_year", "end_date_month", "end_date_day", "date_text", "serial_number", "startOfDay", "newDate", "method", "sm", "em", "sd", "ed", "smd", "emd", "months", "storedDay", "targetMonth", "daysInTargetMonth", "targetYear", "yearStart", "holidays", "weekend", "isMask", "maskDays", "maskIndex", "maskRegex", "total", "dec", "holiday", "hour", "minute", "second", "time_text", "return_type", "week_start", "jan", "inc", "h", "sign", "isLeapYear", "daysBetween", "basis", "sy", "ey", "feb29Between", "date1", "date2", "year1", "mar1year1", "year2", "mar1year2", "ylength", "years", "addOn", "isValidBinaryNumber", "bessel", "stringified", "places", "number1", "number2", "shift_amount", "real_num", "i_num", "suffix", "from_unit", "to_unit", "units", "binary_prefixes", "unit_prefixes", "from", "to", "base_from_unit", "base_to_unit", "from_multiplier", "to_multiplier", "alt", "from_binary_prefix", "from_unit_prefix", "to_binary_prefix", "to_unit_prefix", "step", "negative", "decimal", "inumber", "plus", "minus", "last", "inumber1", "inumber2", "c", "unit1", "unit2", "e", "s", "compact", "findResultIndex", "maxCriteriaLength", "currentCriteriaResult", "hasMatchingCriteria", "criteriaField", "field", "resultIndexes", "targetFields", "targetValues", "maxValue", "minValue", "validDate", "ensureDate", "lastCoupDateBeforeSettlement", "settlement", "maturity", "frequency", "validateFrequency", "validateBasis", "issue", "first_interest", "rate", "par", "nextDate", "numOfDays", "nper", "pv", "start_period", "end_period", "payment", "interest", "principal", "cost", "salvage", "life", "period", "current", "ceiling", "pr", "redemption", "basisVal", "diff", "fractional_dollar", "fraction", "decimal_dollar", "nominal_rate", "npery", "term", "schedule", "future", "per", "fv", "guess", "irrResult", "dates", "irrResultDeriv", "frac", "positive", "resultRate", "epsMax", "newRate", "epsRate", "resultValue", "contLoop", "finance_rate", "reinvest_rate", "payments", "incomes", "effect_rate", "pmt", "discount", "iterMax", "f", "dy", "df", "logical_test", "value_if_true", "value_if_false", "value_if_error", "value_if_na", "logical", "targetValue", "argc", "switchCount", "switchSatisfied", "hasDefaultClause", "defaultClause", "math", "create", "all", "factory", "esm_exports", "nowFormat", "nowDayFormat", "todayFormat", "todayDayFormat", "calculate", "app", "cm", "answers", "answerCopy", "avgs", "totals", "subtotals", "dateTime", "DateTime", "$", "cmLine", "cmLineNo", "lineNo", "answer", "line", "checkLocale", "match", "evaluate", "answerCopyInit", "formatAnswer", "plotAns", "error", "lineHeight", "scopeKeywords", "keywords", "key", "scope", "v", "numaraHints", "hint", "pages", "store", "page", "dateTimeReg", "lineDate", "lineDateRight", "locale", "lineDateNow", "lineDateToday", "lineDateTime", "rightOfDate", "durHrs", "pcntOfReg", "pcntOfValReg", "stripAnswer", "separator", "a", "b", "digits", "import_uikit", "import_codemirror", "import_javascript", "import_dialog", "import_placeholder", "import_closebrackets", "import_matchbrackets", "import_show_hint", "import_jump_to_line", "import_search", "import_searchcursor", "cm", "CodeMirror", "$", "udOptions", "udfPlaceholder", "uduPlaceholder", "udfInput", "uduInput", "refreshEditor", "editor", "stream", "cmStream", "app", "curr", "math", "esm_exports", "val", "par", "numaraHints", "keywords", "key", "f", "unit", "prefix", "unitBase", "unitCat", "cmCursor", "cmCursorLine", "start", "end", "curStr", "curWord", "curWordRegex", "text", "b", "cmForceBottom", "lineTop", "barTop", "lineHeight", "calculate", "activeLine", "line", "cmLineNo", "pages", "store", "page", "lineNo", "ttPos", "el", "event", "tip", "UIkit", "currency", "currencyName", "hint", "varTooltip", "formatAnswer", "tooltip", "inputContext", "index", "cm", "line", "answer", "$", "isEmpty", "isLine", "isSelection", "isMultiLine", "hasAnswer", "outputContext", "event", "textboxContext", "copyLine", "notify", "copyAnswer", "withLines", "copiedText", "copyAllLines", "copyAllAnswers", "copiedOutputs", "copyAll", "copiedCalc", "isElectron", "udfInput", "uduInput", "$all", "el", "name", "productName", "description", "version", "author", "homepage", "import_function_plot", "plot", "$", "app", "f", "math", "domain", "xDomain", "yDomain", "functionPlot", "store", "fileName", "productName", "preface", "svgData", "svgBlob", "downloadLink", "math", "numaraHints", "getRates", "url", "$", "response", "rates", "app", "currency", "hint", "store", "cm", "calculate", "error", "notify", "import_deep_diff", "checkDefaults", "$", "DeepDiff", "app", "settings", "bigNumberWarning", "localeWarning", "checkLocale", "checkMods", "key", "checkSchema", "store", "d", "updateIterval", "getRates", "$all", "item", "span", "icon", "generateIcons", "locales", "matrixTypes", "numericOutputs", "notations", "l", "n", "m", "el", "checkSize", "appTheme", "getTheme", "colors", "udfuTheme", "isElectron", "udfInput", "uduInput", "elements", "cm", "math", "calculate", "confirm", "showError", "import_uikit", "migrateSaved", "saved", "store", "pages", "id", "val", "getPageName", "pageNo", "regex", "pageNos", "page", "a", "b", "max", "i", "lastPage", "populatePages", "defaultPage", "$", "pageListItem", "app", "DateTime", "event", "loadPage", "UIkit", "renamePage", "deletePage", "duplicatePage", "generateIcons", "pageId", "cursor", "cm", "pageName", "newPage", "isImport", "p", "notify", "modal", "confirm", "rename", "dupPageId", "dupPage", "dupPageData", "dupPageName", "sortPages", "by", "sortedPages", "pageOrder", "orderedPages", "$all", "el", "deleteAllPages", "newPageDialog", "isElectron", "data", "msg", "error", "applyUdfu", "input", "type", "resolve", "reject", "UDFunc", "f", "app", "store", "error", "$", "udfInput", "showError", "uduInput", "KEYBINDING_MODIFIER_KEYS", "PLATFORM", "navigator", "platform", "APPLE_DEVICE", "test", "MOD", "ALT_GRAPH_ALIASES", "getModifierState", "event", "mod", "includes", "parseKeybinding", "str", "trim", "split", "map", "press", "mods", "key", "pop", "match", "RegExp", "matchKeyBindingPress", "_ref", "code", "toUpperCase", "find", "createKeybindingsHandler", "keyBindingMap", "options", "timeout", "_options$timeout", "keyBindings", "Object", "keys", "possibleMatches", "Map", "timer", "KeyboardEvent", "forEach", "keyBinding", "sequence", "callback", "remainingExpectedPresses", "get", "length", "set", "slice", "clearTimeout", "setTimeout", "clear", "bind", "tinykeys", "target", "_temp", "_ref2$event", "_ref2", "capture", "onKeyEvent", "addEventListener", "removeEventListener", "import_uikit", "description", "isElectron", "settings", "isMac", "$", "name", "event", "isMax", "toggleMinMax", "generateIcons", "colors", "store", "app", "lastPage", "loadPage", "defaultPage", "migrateSaved", "applyUdfu", "populatePages", "cm", "calculate", "copyAll", "modal", "author", "version", "homepage", "notify", "func", "plot", "error", "showError", "sels", "resizeDelay", "isResizing", "panel", "divider", "dividerTooltip", "offset", "iWidth", "inputWidth", "UIkit", "checkColorChange", "udTab", "udf", "udu", "refreshEditor", "udfInput", "uduInput", "pageOrder", "getPageName", "windowResizeDelay", "checkSize", "inputScroll", "outputScroll", "inputPanel", "outputPanel", "keys", "button", "command", "f", "$all", "checkUpdates", "printArea", "line", "lineNo", "input", "answer", "row"] } diff --git a/package-lock.json b/package-lock.json index 9dcb8a6..090f089 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "numara", - "version": "5.7.0", + "version": "5.7.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "numara", - "version": "5.7.0", + "version": "5.7.1", "license": "MIT", "dependencies": { "electron-log": "^5.2.2", @@ -14,7 +14,7 @@ "electron-updater": "^6.3.9" }, "devDependencies": { - "@eslint/js": "^9.14.0", + "@eslint/js": "^9.15.0", "@formulajs/formulajs": "^4.4.8", "@melloware/coloris": "^0.24.0", "codemirror": "^5.65.18", @@ -22,15 +22,15 @@ "electron": "^33.2.0", "electron-builder": "^25.1.8", "esbuild": "^0.24.0", - "eslint": "^9.14.0", + "eslint": "^9.15.0", "fs-extra": "^11.2.0", "function-plot": "^1.25.1", - "lucide": "^0.453.0", + "lucide": "^0.460.0", "luxon": "^3.5.0", - "mathjs": "^13.2.1", + "mathjs": "^14.0.0", "prettier": "^3.3.3", "tinykeys": "^3.0.0", - "uikit": "^3.21.13" + "uikit": "^3.21.14" } }, "node_modules/@babel/runtime": { @@ -787,9 +787,9 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", - "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.0.tgz", + "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -826,9 +826,9 @@ } }, "node_modules/@eslint/core": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz", - "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz", + "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==", "dev": true, "license": "Apache-2.0", "engines": { @@ -836,9 +836,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", - "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", "dev": true, "license": "MIT", "dependencies": { @@ -884,9 +884,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.14.0.tgz", - "integrity": "sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.15.0.tgz", + "integrity": "sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==", "dev": true, "license": "MIT", "engines": { @@ -904,9 +904,9 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.2.tgz", - "integrity": "sha512-CXtq5nR4Su+2I47WPOlWud98Y5Lv8Kyxp2ukhgFx/eW6Blm18VXJO5WuQylPugRo8nbluoi6GvvxBLqHcvqUUw==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz", + "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2549,9 +2549,9 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz", - "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { @@ -3078,13 +3078,13 @@ } }, "node_modules/dotenv-expand": { - "version": "11.0.6", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.6.tgz", - "integrity": "sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==", + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", + "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "dotenv": "^16.4.4" + "dotenv": "^16.4.5" }, "engines": { "node": ">=12" @@ -3460,27 +3460,27 @@ } }, "node_modules/eslint": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.14.0.tgz", - "integrity": "sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.15.0.tgz", + "integrity": "sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.18.0", - "@eslint/core": "^0.7.0", - "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.14.0", - "@eslint/plugin-kit": "^0.2.0", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.9.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.15.0", + "@eslint/plugin-kit": "^0.2.3", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.0", + "@humanwhocodes/retry": "^0.4.1", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.5", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.2.0", @@ -3499,8 +3499,7 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" @@ -3798,9 +3797,9 @@ } }, "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", "dev": true, "license": "ISC" }, @@ -3850,16 +3849,16 @@ } }, "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.2.1.tgz", + "integrity": "sha512-Ah6t/7YCYjrPUFUFsOsRLMXAdnYM+aQwmojD2Ayb/Ezr82SwES0vuyQ8qZ3QO8n9j7W14VJuVZZet8U3bhSdQQ==", "dev": true, "license": "MIT", "engines": { - "node": "*" + "node": ">= 12" }, "funding": { - "type": "patreon", + "type": "github", "url": "https://github.com/sponsors/rawify" } }, @@ -4958,9 +4957,9 @@ } }, "node_modules/lucide": { - "version": "0.453.0", - "resolved": "https://registry.npmjs.org/lucide/-/lucide-0.453.0.tgz", - "integrity": "sha512-kg6+hH1NxkSUqmjIOs8cAAIlHWh35VGERx9ZbzoTKqjdp/ydw/QZCf4yL2N/t9ejPsVNW7Sn2NzSO4acmcaJBw==", + "version": "0.460.0", + "resolved": "https://registry.npmjs.org/lucide/-/lucide-0.460.0.tgz", + "integrity": "sha512-kEqx3yHU+q4S0k7RH183QFaDy6xepEcN3yVjiBhxM1qX/tSMrmOSuUQJCobiIYzB1q9m8RmAN0efPiXZq79JSQ==", "dev": true, "license": "ISC" }, @@ -5080,9 +5079,9 @@ } }, "node_modules/mathjs": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-13.2.1.tgz", - "integrity": "sha512-HEKNV0hckO5Y4uY/KHucmQMMiXgdNUXfJ+SkExRJHLlD3f7mt4DZMJzndQOoTp/dX8ROwk4zl2xO+iq49OEliQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-14.0.0.tgz", + "integrity": "sha512-MR3me92c6pKBqzUXosqL5KMIZDrb1x0MGOy+Ss6fQllD1zhAFloG6DJnG6X5b0VYAMA9sgGfAR2tYi5HPNNQBQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -5090,7 +5089,7 @@ "complex.js": "^2.2.5", "decimal.js": "^10.4.3", "escape-latex": "^1.2.0", - "fraction.js": "^4.3.7", + "fraction.js": "^5.2.1", "javascript-natural-sort": "^0.7.1", "seedrandom": "^3.0.5", "tiny-emitter": "^2.1.0", @@ -6512,13 +6511,6 @@ "node": ">=12" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, "node_modules/tiny-emitter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", @@ -6583,9 +6575,9 @@ } }, "node_modules/type-fest": { - "version": "4.26.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz", - "integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==", + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.27.0.tgz", + "integrity": "sha512-3IMSWgP7C5KSQqmo1wjhKrwsvXAtF33jO3QY+Uy++ia7hqvgSK6iXbbg5PbDBc1P2ZbNEDgejOrN4YooXvhwCw==", "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=16" @@ -6619,9 +6611,9 @@ } }, "node_modules/uikit": { - "version": "3.21.13", - "resolved": "https://registry.npmjs.org/uikit/-/uikit-3.21.13.tgz", - "integrity": "sha512-Yc1VWCarqK8kMu9KCXfMH+1lQLZ0PxQRWML1ElJYt2KCwSNGxUVLJSDXcO4qtBR8asRAY+pHBtuM5iIQq0Odsg==", + "version": "3.21.14", + "resolved": "https://registry.npmjs.org/uikit/-/uikit-3.21.14.tgz", + "integrity": "sha512-b+btYRZA6fH8yXMI0+0VetaFJC9eS92nQqhDRreWaNuyMpRG5hk3KzbIXlluEVrIBhZbbhERFrwcanSWnGS1CA==", "dev": true, "license": "MIT" }, diff --git a/package.json b/package.json index 9d14558..48668fe 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "numara", "productName": "Numara", "description": "Numara Calculator", - "version": "5.7.0", + "version": "5.7.1", "author": { "name": "Timur Atalay", "email": "mail@numara.io", @@ -25,7 +25,7 @@ "wiki": "node src/misc/wiki.js" }, "devDependencies": { - "@eslint/js": "^9.14.0", + "@eslint/js": "^9.15.0", "@formulajs/formulajs": "^4.4.8", "@melloware/coloris": "^0.24.0", "codemirror": "^5.65.18", @@ -33,15 +33,15 @@ "electron": "^33.2.0", "electron-builder": "^25.1.8", "esbuild": "^0.24.0", - "eslint": "^9.14.0", + "eslint": "^9.15.0", "fs-extra": "^11.2.0", "function-plot": "^1.25.1", - "lucide": "^0.453.0", + "lucide": "^0.460.0", "luxon": "^3.5.0", - "mathjs": "^13.2.1", + "mathjs": "^14.0.0", "prettier": "^3.3.3", "tinykeys": "^3.0.0", - "uikit": "^3.21.13" + "uikit": "^3.21.14" }, "dependencies": { "electron-log": "^5.2.2",